[
  {
    "path": "Django-1.5.1/AUTHORS",
    "content": "Django was originally created in late 2003 at World Online, the Web division\nof the Lawrence Journal-World newspaper in Lawrence, Kansas.\n\nThe PRIMARY AUTHORS are (and/or have been):\n\n    * Adrian Holovaty\n    * Simon Willison\n    * Jacob Kaplan-Moss\n    * Wilson Miner\n    * Malcolm Tredinnick\n    * Georg \"Hugo\" Bauer\n    * Luke Plant\n    * Russell Keith-Magee\n    * Robert Wittams\n    * Gary Wilson\n    * Brian Rosner\n    * Justin Bronn\n    * Karen Tracey\n    * Jannis Leidel\n    * James Tauber\n    * Alex Gaynor\n    * Andrew Godwin\n    * Carl Meyer\n    * Ramiro Morales\n    * Chris Beaven\n    * Honza Král\n    * Idan Gazit\n    * Paul McMillan\n    * Julien Phalip\n    * Aymeric Augustin\n    * Claude Paroz\n    * Anssi Kääriäinen\n    * Florian Apolloner\n    * Jeremy Dunck\n    * Bryan Veloso\n    * Preston Holmes\n\nMore information on the main contributors to Django can be found in\ndocs/internals/committers.txt.\n\nAnd here is an inevitably incomplete list of MUCH-APPRECIATED CONTRIBUTORS --\npeople who have submitted patches, reported bugs, added translations, helped\nanswer newbie questions, and generally made Django that much better:\n\n    Gisle Aas <gisle@aas.no>\n    Chris Adams\n    Mathieu Agopian <mathieu.agopian@gmail.com>\n    ajs <adi@sieker.info>\n    alang@bright-green.com\n    A S Alam <aalam@users.sf.net>\n    Andi Albrecht <albrecht.andi@gmail.com>\n    Marty Alchin <gulopine@gamemusic.org>\n    Ahmad Alhashemi <trans@ahmadh.com>\n    Ahmad Al-Ibrahim\n    Antoni Aloy\n    Daniel Alves Barbosa de Oliveira Vaz <danielvaz@gmail.com>\n    AgarFu <heaven@croasanaso.sytes.net>\n    James Aylett\n    Dagur Páll Ammendrup <dagurp@gmail.com>\n    Collin Anderson <cmawebsite@gmail.com>\n    Jeff Anderson <jefferya@programmerq.net>\n    Marian Andre <django@andre.sk>\n    Andreas\n    Victor Andrée\n    andy@jadedplanet.net\n    Fabrice Aneche <akh@nobugware.com>\n    ant9000@netwise.it\n    arien <regexbot@gmail.com>\n    David Ascher <http://ascher.ca/>\n    atlithorn <atlithorn@gmail.com>\n    Jökull Sólberg Auðunsson <jokullsolberg@gmail.com>\n    Arthur <avandorp@gmail.com>\n    av0000@mail.ru\n    David Avsajanishvili <avsd05@gmail.com>\n    Mike Axiak <axiak@mit.edu>\n    Niran Babalola <niran@niran.org>\n    Vitaly Babiy <vbabiy86@gmail.com>\n    Morten Bagai <m@bagai.com>\n    Jeff Balogh <jbalogh@mozilla.com>\n    Mikaël Barbero <mikael.barbero nospam at nospam free.fr>\n    Randy Barlow <randy@electronsweatshop.com>\n    Scott Barr <scott@divisionbyzero.com.au>\n    Jiri Barton\n    Ned Batchelder <http://www.nedbatchelder.com/>\n    batiste@dosimple.ch\n    Batman\n    Brian Beck <http://blog.brianbeck.com/>\n    Shannon -jj Behrens <http://jjinux.blogspot.com/>\n    Esdras Beleza <linux@esdrasbeleza.com>\n    Chris Bennett <chrisrbennett@yahoo.com>\n    James Bennett\n    Danilo Bargen\n    Shai Berger <shai@platonix.com>\n    Julian Bez\n    Arvis Bickovskis <viestards.lists@gmail.com>\n    Natalia Bidart <nataliabidart@gmail.com>\n    Mark Biggers <biggers@utsl.com>\n    Paul Bissex <http://e-scribe.com/>\n    Simon Blanchard\n    David Blewett <david@dawninglight.net>\n    Matt Boersma <matt@sprout.org>\n    Artem Gnilov <boobsd@gmail.com>\n    Matías Bordese\n    Nate Bragg <jonathan.bragg@alum.rpi.edu>\n    Sean Brant\n    Andrew Brehaut <http://brehaut.net/blog>\n    David Brenneman <http://davidbrenneman.com>\n    Anthony Briggs <anthony.briggs@gmail.com>\n    Orne Brocaar <http://brocaar.com/>\n    brut.alll@gmail.com\n    bthomas\n    btoll@bestweb.net\n    Jonathan Buchanan <jonathan.buchanan@gmail.com>\n    Keith Bussell <kbussell@gmail.com>\n    C8E\n    Chris Cahoon <chris.cahoon@gmail.com>\n    Juan Manuel Caicedo <juan.manuel.caicedo@gmail.com>\n    Trevor Caira <trevor@caira.com>\n    Brett Cannon <brett@python.org>\n    Ricardo Javier Cárdenes Medina <ricardo.cardenes@gmail.com>\n    Jeremy Carbaugh <jcarbaugh@gmail.com>\n    Graham Carlyle <graham.carlyle@maplecroft.net>\n    Antonio Cavedoni <http://cavedoni.com/>\n    cedric@terramater.net\n    Chris Chamberlin <dja@cdc.msbx.net>\n    Amit Chakradeo <http://amit.chakradeo.net/>\n    ChaosKCW\n    Simon Charette <charette.s@gmail.com>\n    Kowito Charoenratchatabhan <kowito@felspar.com>\n    Sengtha Chay <sengtha@e-khmer.com>\n    ivan.chelubeev@gmail.com\n    Bryan Chow <bryan at verdjn dot com>\n    Tom Christie <tom@tomchristie.com>\n    Antonis Christofides <anthony@itia.ntua.gr>\n    Michal Chruszcz <troll@pld-linux.org>\n    Can Burak Çilingir <canburak@cs.bilgi.edu.tr>\n    Ian Clelland <clelland@gmail.com>\n    Travis Cline <travis.cline@gmail.com>\n    Russell Cloran <russell@rucus.net>\n    colin@owlfish.com\n    crankycoder@gmail.com\n    Paul Collier <paul@paul-collier.com>\n    Robert Coup\n    Pete Crosier <pete.crosier@gmail.com>\n    Matt Croydon <http://www.postneo.com/>\n    Jure Cuhalev <gandalf@owca.info>\n    Leah Culver <leah.culver@gmail.com>\n    Raúl Cumplido <raulcumplido@gmail.com>\n    flavio.curella@gmail.com\n    John D'Agostino <john.dagostino@gmail.com>\n    dackze+django@gmail.com\n    Jim Dalton <jim.dalton@gmail.com>\n    Mihai Damian <yang_damian@yahoo.com>\n    David Danier <david.danier@team23.de>\n    Dirk Datzert <dummy@habmalnefrage.de>\n    Jonathan Daugherty (cygnus) <http://www.cprogrammer.org/>\n    dave@thebarproject.com\n    david@kazserve.org\n    Jason Davies (Esaj) <http://www.jasondavies.com/>\n    Richard Davies <richard.davies@elastichosts.com>\n    Alex Dedul\n    Matt Dennenbaum\n    deric@monowerks.com\n    Max Derkachev <mderk@yandex.ru>\n    Rajesh Dhawan <rajesh.dhawan@gmail.com>\n    Sander Dijkhuis <sander.dijkhuis@gmail.com>\n    Jordan Dimov <s3x3y1@gmail.com>\n    Riccardo Di Virgilio\n    Nebojša Dorđević\n    dne@mayonnaise.net\n    dready <wil@mojipage.com>\n    Maximillian Dornseif <md@hudora.de>\n    Daniel Duan <DaNmarner@gmail.com>\n    Andrew Durdin <adurdin@gmail.com>\n    dusk@woofle.net\n    Andy Dustman <farcepest@gmail.com>\n    Alexander Dutton <dev@alexdutton.co.uk>\n    J. Clifford Dyer <jcd@sdf.lonestar.org>\n    Clint Ecker\n    Nick Efford <nick@efford.org>\n    eibaan@gmail.com\n    David Eklund\n    Julia Elman\n    enlight\n    Enrico <rico.bl@gmail.com>\n    A. Murat Eren <meren@pardus.org.tr>\n    Ludvig Ericson <ludvig.ericson@gmail.com>\n    eriks@win.tue.nl\n    Tomáš Ehrlich <tomas.ehrlich@gmail.com>\n    Dirk Eschler <dirk.eschler@gmx.net>\n    Bernhard Essl <me@bernhardessl.com>\n    Dan Fairs <dan@fezconsulting.com>\n    Marc Fargas <telenieko@telenieko.com>\n    Szilveszter Farkas <szilveszter.farkas@gmail.com>\n    Grigory Fateyev <greg@dial.com.ru>\n    favo@exoweb.net\n    fdr <drfarina@gmail.com>\n    Dmitri Fedortchenko <zeraien@gmail.com>\n    Jonathan Feignberg <jdf@pobox.com>\n    Liang Feng <hutuworm@gmail.com>\n    Bill Fenner <fenner@gmail.com>\n    Stefane Fermgier <sf@fermigier.com>\n    J. Pablo Fernandez <pupeno@pupeno.com>\n    Maciej Fijalkowski\n    Ben Firshman <ben@firshman.co.uk>\n    Matthew Flanagan <http://wadofstuff.blogspot.com>\n    Eric Floehr <eric@intellovations.com>\n    Eric Florenzano <floguy@gmail.com>\n    Vincent Foley <vfoleybourgon@yahoo.ca>\n    Alcides Fonseca\n    Rudolph Froger <rfroger@estrate.nl>\n    Jorge Gajon <gajon@gajon.org>\n    gandalf@owca.info\n    Marc Garcia <marc.garcia@accopensys.com>\n    Andy Gayton <andy-django@thecablelounge.com>\n    geber@datacollect.com\n    Jeffrey Gelens <jeffrey@gelens.org>\n    Baishampayan Ghose\n    Joshua Ginsberg <jag@flowtheory.net>\n    Dimitris Glezos <dimitris@glezos.com>\n    glin@seznam.cz\n    martin.glueck@gmail.com\n    Ben Godfrey <http://aftnn.org>\n    GomoX <gomo@datafull.com>\n    Guilherme Mesquita Gondim <semente@taurinus.org>\n    Mario Gonzalez <gonzalemario@gmail.com>\n    David Gouldin <dgouldin@gmail.com>\n    pradeep.gowda@gmail.com\n    Collin Grady <collin@collingrady.com>\n    Gabriel Grant <g@briel.ca>\n    Daniel Greenfeld\n    Simon Greenhill <dev@simon.net.nz>\n    Owen Griffiths\n    Espen Grindhaug <http://grindhaug.org/>\n    Janos Guljas\n    Thomas Güttler <hv@tbz-pariv.de>\n    Horst Gutmann <zerok@zerokspot.com>\n    Antti Haapala <antti@industrialwebandmagic.com>\n    Scot Hacker <shacker@birdhouse.org>\n    dAniel hAhler\n    hambaloney\n    Will Hardy <django@willhardy.com.au>\n    Brian Harring <ferringb@gmail.com>\n    Brant Harris\n    Ronny Haryanto <http://ronny.haryan.to/>\n    Hawkeye\n    Kent Hauser <kent@khauser.net>\n    Joe Heck <http://www.rhonabwy.com/wp/>\n    Joel Heenan <joelh-django@planetjoel.com>\n    Mikko Hellsing <mikko@sorl.net>\n    Sebastian Hillig <sebastian.hillig@gmail.com>\n    hipertracker@gmail.com\n    Deryck Hodge <http://www.devurandom.org/>\n    Brett Hoerner <bretthoerner@bretthoerner.com>\n    Justin Myles Holmes <justin@slashrootcafe.com>\n    Eric Holscher <http://ericholscher.com>\n    Ian Holsman <http://feh.holsman.net/>\n    Kieran Holland <http://www.kieranholland.com>\n    Sung-Jin Hong <serialx.net@gmail.com>\n    Leo \"hylje\" Honkanen <sealage@gmail.com>\n    Matt Hoskins <skaffenuk@googlemail.com>\n    Tareque Hossain <http://www.codexn.com>\n    Richard House <Richard.House@i-logue.com>\n    Robert Rock Howard <http://djangomojo.com/>\n    John Huddleston <huddlej@wwu.edu>\n    Rob Hudson <http://rob.cogit8.org/>\n    Jason Huggins <http://www.jrandolph.com/blog/>\n    Jeff Hui <jeffkhui@gmail.com>\n    Gabriel Hurley <gabriel@strikeawe.com>\n    Hyun Mi Ae\n    Ibon <ibonso@gmail.com>\n    Tom Insam\n    Baurzhan Ismagulov <ibr@radix50.net>\n    Stephan Jaekel <steph@rdev.info>\n    james_027@yahoo.com\n    jcrasta@gmail.com\n    jdetaeye\n    Dmitry Jemerov <intelliyole@gmail.com>\n    jhenry <jhenry@theonion.com>\n    john@calixto.net\n    Zak Johnson <zakj@nox.cx>\n    Nis Jørgensen <nis@superlativ.dk>\n    Michael Josephson <http://www.sdjournal.com/>\n    jpellerin@gmail.com\n    junzhang.jn@gmail.com\n    Xia Kai <http://blog.xiaket.org/>\n    Antti Kaihola <http://djangopeople.net/akaihola/>\n    Peter van Kampen\n    Bahadır Kandemir <bahadir@pardus.org.tr>\n    Karderio <karderio@gmail.com>\n    Nagy Károly <charlie@rendszergazda.com>\n    George Karpenkov <george@metaworld.ru>\n    Erik Karulf <erik@karulf.com>\n    Ben Dean Kawamura <ben.dean.kawamura@gmail.com>\n    Ian G. Kelly <ian.g.kelly@gmail.com>\n    Niall Kelly <duke.sam.vimes@gmail.com>\n    Ryan Kelly <ryan@rfk.id.au>\n    Thomas Kerpe <thomas@kerpe.net>\n    Wiley Kestner <wiley.kestner@gmail.com>\n    Ossama M. Khayat <okhayat@yahoo.com>\n    Ben Khoo <khoobks@westnet.com.au>\n    Garth Kidd <http://www.deadlybloodyserious.com/>\n    kilian <kilian.cavalotti@lip6.fr>\n    Sune Kirkeby <http://ibofobi.dk/>\n    Bastian Kleineidam <calvin@debian.org>\n    Cameron Knight (ckknight)\n    Nena Kojadin <nena@kiberpipa.org>\n    Igor Kolar <ike@email.si>\n    Tomáš Kopeček <permonik@m6.cz>\n    Gasper Koren\n    Mikhail Korobov <kmike84@googlemail.com>\n    Martin Kosír <martin@martinkosir.net>\n    Arthur Koziel <http://arthurkoziel.com>\n    Meir Kriheli <http://mksoft.co.il/>\n    Bruce Kroeze <http://coderseye.com/>\n    krzysiek.pawlik@silvermedia.pl\n    Joseph Kocherhans\n    konrad@gwu.edu\n    knox <christobzr@gmail.com>\n    David Krauth\n    Kevin Kubasik <kevin@kubasik.net>\n    kurtiss@meetro.com\n    Denis Kuzmichyov <kuzmichyov@gmail.com>\n    Panos Laganakos <panos.laganakos@gmail.com>\n    Nick Lane <nick.lane.au@gmail.com>\n    Stuart Langridge <http://www.kryogenix.org/>\n    Paul Lanier <planier@google.com>\n    David Larlet <http://david.larlet.fr>\n    Nicolas Lara <nicolaslara@gmail.com>\n    Nicola Larosa <nico@teknico.net>\n    Finn Gruwier Larsen <finn@gruwier.dk>\n    Lau Bech Lauritzen\n    Rune Rønde Laursen <runerl@skjoldhoej.dk>\n    Mark Lavin <markdlavin@gmail.com>\n    Eugene Lazutkin <http://lazutkin.com/blog/>\n    lcordier@point45.com\n    Jeong-Min Lee <falsetru@gmail.com>\n    Tai Lee <real.human@mrmachine.net>\n    Adrien Lemaire <lemaire.adrien@gmail.com>\n    Christopher Lenz <http://www.cmlenz.net/>\n    lerouxb@gmail.com\n    Piotr Lewandowski <piotr.lewandowski@gmail.com>\n    Charlie Leifer <coleifer@gmail.com>\n    Justin Lilly <justinlilly@gmail.com>\n    Waylan Limberg <waylan@gmail.com>\n    limodou\n    Philip Lindborg <philip.lindborg@gmail.com>\n    Simon Litchfield <simon@quo.com.au>\n    Daniel Lindsley <daniel@toastdriven.com>\n    Trey Long <trey@ktrl.com>\n    Laurent Luce <http://www.laurentluce.com>\n    Martin Mahner <http://www.mahner.org/>\n    Matt McClanahan <http://mmcc.cx/>\n    Stanislaus Madueke\n    Yann Malet\n    Frantisek Malina <vizualbod@vizualbod.com>\n    Mike Malone <mjmalone@gmail.com>\n    Martin Maney <http://www.chipy.org/Martin_Maney>\n    Michael Manfre <mmanfre@gmail.com>\n    masonsimon+django@gmail.com\n    Manuzhai\n    Petr Marhoun <petr.marhoun@gmail.com>\n    Petar Marić <http://www.petarmaric.com/>\n    Nuno Mariz <nmariz@gmail.com>\n    mark@junklight.com\n    Orestis Markou <orestis@orestis.gr>\n    Andrés Torres Marroquín <andres.torres.marroquin@gmail.com>\n    Takashi Matsuo <matsuo.takashi@gmail.com>\n    Zlatko Mašek <zlatko.masek@gmail.com>\n    Yasushi Masuda <whosaysni@gmail.com>\n    mattycakes@gmail.com\n    Glenn Maynard <glenn@zewt.org>\n    Jason McBrayer <http://www.carcosa.net/jason/>\n    Kevin McConnell <kevin.mcconnell@gmail.com>\n    mccutchen@gmail.com\n    michael.mcewan@gmail.com\n    Paul McLanahan <paul@mclanahan.net>\n    Tobias McNulty <http://www.caktusgroup.com/blog>\n    Andrews Medina <andrewsmedina@gmail.com>\n    Zain Memon\n    Christian Metts\n    michal@plovarna.cz\n    Slawek Mikula <slawek dot mikula at gmail dot com>\n    Katie Miller <katie@sub50.com>\n    Shawn Milochik <shawn@milochik.com>\n    mitakummaa@gmail.com\n    Taylor Mitchell <taylor.mitchell@gmail.com>\n    mmarshall\n    Andreas Mock <andreas.mock@web.de>\n    Reza Mohammadi <reza@zeerak.ir>\n    Aljosa Mohorovic <aljosa.mohorovic@gmail.com>\n    Eric Moritz <http://eric.themoritzfamily.com/>\n    msaelices <msaelices@gmail.com>\n    Gregor Müllegger <gregor@muellegger.de>\n    Robin Munn <http://www.geekforgod.com/>\n    James Murty\n    msundstr\n    Robert Myers <myer0052@gmail.com>\n    Aaron T. Myers <atmyers@gmail.com>\n    Alexander Myodov <alex@myodov.com>\n    Doug Napoleone <doug@dougma.com>\n    Gopal Narayanan <gopastro@gmail.com>\n    Fraser Nevett <mail@nevett.org>\n    Sam Newman <http://www.magpiebrain.com/>\n    Ryan Niemeyer <https://profiles.google.com/ryan.niemeyer/about>\n    Filip Noetzel <http://filip.noetzel.co.uk/>\n    Afonso Fernández Nogueira <fonzzo.django@gmail.com>\n    Neal Norwitz <nnorwitz@google.com>\n    Todd O'Bryan <toddobryan@mac.com>\n    Alex Ogier <alex.ogier@gmail.com>\n    Selwin Ong <selwin@ui.co.id>\n    Gerardo Orozco <gerardo.orozco.mosqueda@gmail.com>\n    Christian Oudard <christian.oudard@gmail.com>\n    oggie rob <oz.robharvey@gmail.com>\n    oggy <ognjen.maric@gmail.com>\n    Jens Page\n    Jay Parlar <parlar@gmail.com>\n    Carlos Eduardo de Paula <carlosedp@gmail.com>\n    John Paulett <john@paulett.org>\n    pavithran s <pavithran.s@gmail.com>\n    Barry Pederson <bp@barryp.org>\n    Andreas Pelme <andreas@pelme.se>\n    permonik@mesias.brnonet.cz\n    peter@mymart.com\n    pgross@thoughtworks.com\n    phaedo <http://phaedo.cx/>\n    phil@produxion.net\n    phil.h.smith@gmail.com\n    Gustavo Picon\n    Travis Pinney\n    Michael Placentra II <someone@michaelplacentra2.net>\n    plisk\n    Daniel Poelzleithner <http://poelzi.org/>\n    Dan Poirier <poirier@pobox.com>\n    polpak@yahoo.com\n    Ross Poulton <ross@rossp.org>\n    Mihai Preda <mihai_preda@yahoo.com>\n    Daniele Procida <daniele@vurt.org>\n    Matthias Pronk <django@masida.nl>\n    Jyrki Pulliainen <jyrki.pulliainen@gmail.com>\n    Thejaswi Puthraya <thejaswi.puthraya@gmail.com>\n    Johann Queuniet <johann.queuniet@adh.naellia.eu>\n    Jan Rademaker\n    Michael Radziej <mir@noris.de>\n    Laurent Rahuel <laurent.rahuel@gmail.com>\n    Stéphane Raimbault <stephane.raimbault@gmail.com>\n    Luciano Ramalho\n    Amit Ramon <amit.ramon@gmail.com>\n    Philippe Raoult <philippe.raoult@n2nsoft.com>\n    Massimiliano Ravelli <massimiliano.ravelli@gmail.com>\n    Brian Ray <http://brianray.chipy.org/>\n    Lee Reilly <lee@leereilly.net>\n    Łukasz Rekucki <lrekucki@gmail.com>\n    remco@diji.biz\n    Marc Remolt <m.remolt@webmasters.de>\n    Bruno Renié <buburno@gmail.com>\n    David Reynolds <david@reynoldsfamily.org.uk>\n    rhettg@gmail.com\n    ricardojbarrios@gmail.com\n    Mike Richardson\n    Matt Riggott\n    Alex Robbins <alexander.j.robbins@gmail.com>\n    Henrique Romano <onaiort@gmail.com>\n    Armin Ronacher\n    Daniel Roseman <http://roseman.org.uk/>\n    Rozza <ross.lawley@gmail.com>\n    Audrey Roy <http://audreymroy.com/>\n    Oliver Rutherfurd <http://rutherfurd.net/>\n    ryankanno\n    Gonzalo Saavedra <gonzalosaavedra@gmail.com>\n    Manuel Saelices <msaelices@yaco.es>\n    Ivan Sagalaev (Maniac) <http://www.softwaremaniacs.org/>\n    Vinay Sajip <vinay_sajip@yahoo.co.uk>\n    Bartolome Sanchez Salado <i42sasab@uco.es>\n    Kadesarin Sanjek\n    Tim Saylor <tim.saylor@gmail.com>\n    Massimo Scamarcia <massimo.scamarcia@gmail.com>\n    Paulo Scardine <paulo@scardine.com.br>\n    David Schein\n    Bernd Schlapsi\n    schwank@gmail.com\n    scott@staplefish.com\n    Ilya Semenov <semenov@inetss.com>\n    Aleksandra Sendecka <asendecka@hauru.eu>\n    serbaut@gmail.com\n    John Shaffer <jshaffer2112@gmail.com>\n    Pete Shinners <pete@shinners.org>\n    Leo Shklovskii\n    jason.sidabras@gmail.com\n    Mikołaj Siedlarek <mikolaj.siedlarek@gmail.com>\n    Brenton Simpson <http://theillustratedlife.com>\n    Jozko Skrablin <jozko.skrablin@gmail.com>\n    Ben Slavin <benjamin.slavin@gmail.com>\n    sloonz <simon.lipp@insa-lyon.fr>\n    Paul Smith <blinkylights23@gmail.com>\n    Steven L. Smith (fvox13) <steven@stevenlsmith.com>\n    Warren Smith <warren@wandrsmith.net>\n    smurf@smurf.noris.de\n    Vsevolod Solovyov\n    George Song <george@damacy.net>\n    sopel\n    Leo Soto <leo.soto@gmail.com>\n    Wiliam Alves de Souza <wiliamsouza83@gmail.com>\n    Don Spaulding <donspauldingii@gmail.com>\n    Calvin Spealman <ironfroggy@gmail.com>\n    Dane Springmeyer\n    Bjørn Stabell <bjorn@exoweb.net>\n    Georgi Stanojevski <glisha@gmail.com>\n    starrynight <cmorgh@gmail.com>\n    Vasiliy Stavenko <stavenko@gmail.com>\n    Thomas Steinacher <http://www.eggdrop.ch/>\n    Johan C. Stöver <johan@nilling.nl>\n    Nowell Strite <http://nowell.strite.org/>\n    Thomas Stromberg <tstromberg@google.com>\n    Ben Sturmfels <ben@sturm.com.au>\n    Travis Swicegood <travis@domain51.com>\n    Pascal Varet\n    SuperJared\n    Radek Švarz <http://www.svarz.cz/translate/>\n    Swaroop C H <http://www.swaroopch.info>\n    Aaron Swartz <http://www.aaronsw.com/>\n    Ville Säävuori <http://www.unessa.net/>\n    Mart Sõmermaa <http://mrts.pri.ee/>\n    Marc Tamlyn\n    Christian Tanzer <tanzer@swing.co.at>\n    Tyler Tarabula <tyler.tarabula@gmail.com>\n    Tyson Tate <tyson@fallingbullets.com>\n    Aryeh Leib Taurog <http://www.aryehleib.com/>\n    Frank Tegtmeyer <fte@fte.to>\n    Marcel Telka <marcel@telka.sk>\n    Terry Huang <terryh.tp@gmail.com>\n    Travis Terry <tdterry7@gmail.com>\n    thebjorn <bp@datakortet.no>\n    Lowe Thiderman <lowe.thiderman@gmail.com>\n    Zach Thompson <zthompson47@gmail.com>\n    Michael Thornhill <michael.thornhill@gmail.com>\n    Deepak Thukral <deep.thukral@gmail.com>\n    tibimicu@gmx.net\n    tobias@neuyork.de\n    Tom Tobin\n    Joe Topjian <http://joe.terrarum.net/geek/code/python/django/>\n    torne-django@wolfpuppy.org.uk\n    Jeff Triplett <jeff.triplett@gmail.com>\n    tstromberg@google.com\n    Makoto Tsuyuki <mtsuyuki@gmail.com>\n    tt@gurgle.no\n    David Tulig <david.tulig@gmail.com>\n    Justine Tunney <jtunney@lobstertech.com>\n    Amit Upadhyay <http://www.amitu.com/blog/>\n    Adam Vandenberg\n    Geert Vanderkelen\n    Vasil Vangelovski\n    I.S. van Oostveen <v.oostveen@idca.nl>\n    viestards.lists@gmail.com\n    George Vilches <gav@thataddress.com>\n    Vlado <vlado@labath.org>\n    Zachary Voase <zacharyvoase@gmail.com>\n    Marijn Vriens <marijn@metronomo.cl>\n    Milton Waddams\n    Chris Wagner <cw264701@ohio.edu>\n    Rick Wagner <rwagner@physics.ucsd.edu>\n    wam-djangobug@wamber.net\n    Wang Chun <wangchun@exoweb.net>\n    Filip Wasilewski <filip.wasilewski@gmail.com>\n    Dan Watson <http://danwatson.net/>\n    Joel Watts <joel@joelwatts.com>\n    Lakin Wecker <lakin@structuredabstraction.com>\n    Chris Wesseling <Chris.Wesseling@cwi.nl>\n    Benjamin Wohlwend <piquadrat@gmail.com>\n    James Wheare <django@sparemint.com>\n    Mike Wiacek <mjwiacek@google.com>\n    Frank Wierzbicki\n    charly.wilhelm@gmail.com\n    Simon Williams\n    Derek Willis <http://blog.thescoop.org/>\n    Rachel Willmer <http://www.willmer.com/kb/>\n    Jakub Wilk <ubanus@users.sf.net>\n    Jakub Wiśniowski <restless.being@gmail.com>\n    Maciej Wiśniowski <pigletto@gmail.com>\n    wojtek\n    Marcin Wróbel\n    Jason Yan <tailofthesun@gmail.com>\n    Lars Yencken <lars.yencken@gmail.com>\n    ye7cakf02@sneakemail.com\n    ymasuda@ethercube.com\n    Jesse Young <adunar@gmail.com>\n    Mykola Zamkovoi <nickzam@gmail.com>\n    zegor\n    Gasper Zejn <zejn@kiberpipa.org>\n    Jarek Zgoda <jarek.zgoda@gmail.com>\n    Cheng Zhang\n\nA big THANK YOU goes to:\n\n    Rob Curley and Ralph Gage for letting us open-source Django.\n\n    Frank Wiles for making excellent arguments for open-sourcing, and for\n    his sage sysadmin advice.\n\n    Ian Bicking for convincing Adrian to ditch code generation.\n\n    Mark Pilgrim for diveintopython.org. (RIP!)\n\n    Guido van Rossum for creating Python.\n"
  },
  {
    "path": "Django-1.5.1/INSTALL",
    "content": "Thanks for downloading Django.\n\nTo install it, make sure you have Python 2.6 or greater installed. Then run\nthis command from the command prompt:\n\n    python setup.py install\n\nIf you're upgrading from a previous version, you need to remove it first.\n\nAS AN ALTERNATIVE, you can just copy the entire \"django\" directory to Python's\nsite-packages directory, which is located wherever your Python installation\nlives. Some places you might check are:\n\n    /usr/lib/python2.7/site-packages (Unix, Python 2.7)\n    /usr/lib/python2.6/site-packages (Unix, Python 2.6)\n    C:\\\\PYTHON\\site-packages         (Windows)\n\nFor more detailed instructions, see docs/intro/install.txt.\n"
  },
  {
    "path": "Django-1.5.1/LICENSE",
    "content": "Copyright (c) Django Software Foundation and individual contributors.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without modification,\nare permitted provided that the following conditions are met:\n\n    1. Redistributions of source code must retain the above copyright notice, \n       this list of conditions and the following disclaimer.\n    \n    2. Redistributions in binary form must reproduce the above copyright \n       notice, this list of conditions and the following disclaimer in the\n       documentation and/or other materials provided with the distribution.\n\n    3. Neither the name of Django nor the names of its contributors may be used\n       to endorse or promote products derived from this software without\n       specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
  },
  {
    "path": "Django-1.5.1/MANIFEST.in",
    "content": "include README.rst\ninclude AUTHORS\ninclude INSTALL\ninclude LICENSE\ninclude MANIFEST.in\ninclude django/contrib/gis/gdal/LICENSE\ninclude django/contrib/gis/geos/LICENSE\ninclude django/dispatch/license.txt\nrecursive-include docs *\nrecursive-include scripts *\nrecursive-include extras *\nrecursive-include tests *\nrecursive-include django/conf/locale *\nrecursive-include django/contrib/*/locale *\nrecursive-include django/contrib/admin/templates *\nrecursive-include django/contrib/admin/static *\nrecursive-include django/contrib/admindocs/templates *\nrecursive-include django/contrib/auth/fixtures *\nrecursive-include django/contrib/auth/templates *\nrecursive-include django/contrib/auth/tests/templates *\nrecursive-include django/contrib/comments/templates *\nrecursive-include django/contrib/databrowse/templates *\nrecursive-include django/contrib/formtools/templates *\nrecursive-include django/contrib/formtools/tests/templates *\nrecursive-include django/contrib/flatpages/fixtures *\nrecursive-include django/contrib/flatpages/tests/templates *\nrecursive-include django/contrib/gis/templates *\nrecursive-include django/contrib/gis/tests/data *\nrecursive-include django/contrib/gis/tests/distapp/fixtures *\nrecursive-include django/contrib/gis/tests/geoapp/fixtures *\nrecursive-include django/contrib/gis/tests/geogapp/fixtures *\nrecursive-include django/contrib/gis/tests/relatedapp/fixtures *\nrecursive-include django/contrib/sitemaps/templates *\nrecursive-include django/contrib/sitemaps/tests/templates *\nrecursive-exclude * __pycache__\nrecursive-exclude * *.py[co]\n"
  },
  {
    "path": "Django-1.5.1/PKG-INFO",
    "content": "Metadata-Version: 1.1\nName: Django\nVersion: 1.5.1\nSummary: A high-level Python Web framework that encourages rapid development and clean, pragmatic design.\nHome-page: http://www.djangoproject.com/\nAuthor: Django Software Foundation\nAuthor-email: foundation@djangoproject.com\nLicense: BSD\nDownload-URL: https://www.djangoproject.com/m/releases/1.5/Django-1.5.1.tar.gz\nDescription: UNKNOWN\nPlatform: UNKNOWN\nClassifier: Development Status :: 5 - Production/Stable\nClassifier: Environment :: Web Environment\nClassifier: Framework :: Django\nClassifier: Intended Audience :: Developers\nClassifier: License :: OSI Approved :: BSD License\nClassifier: Operating System :: OS Independent\nClassifier: Programming Language :: Python\nClassifier: Programming Language :: Python :: 2.6\nClassifier: Programming Language :: Python :: 2.7\nClassifier: Programming Language :: Python :: 3.2\nClassifier: Programming Language :: Python :: 3.3\nClassifier: Topic :: Internet :: WWW/HTTP\nClassifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content\nClassifier: Topic :: Internet :: WWW/HTTP :: WSGI\nClassifier: Topic :: Software Development :: Libraries :: Application Frameworks\nClassifier: Topic :: Software Development :: Libraries :: Python Modules\n"
  },
  {
    "path": "Django-1.5.1/README.rst",
    "content": "Django is a high-level Python Web framework that encourages rapid development\nand clean, pragmatic design. Thanks for checking it out.\n\nAll documentation is in the \"docs\" directory and online at\nhttp://docs.djangoproject.com/en/dev/. If you're just getting started, here's\nhow we recommend you read the docs:\n\n* First, read docs/intro/install.txt for instructions on installing Django.\n\n* Next, work through the tutorials in order (docs/intro/tutorial01.txt,\n  docs/intro/tutorial02.txt, etc.).\n\n* If you want to set up an actual deployment server, read\n  docs/howto/deployment/index.txt for instructions.\n\n* You'll probably want to read through the topical guides (in docs/topics)\n  next; from there you can jump to the HOWTOs (in docs/howto) for specific\n  problems, and check out the reference (docs/ref) for gory details.\n\n* See docs/README for instructions on building an HTML version of the docs.\n\nDocs are updated rigorously. If you find any problems in the docs, or think they\nshould be clarified in any way, please take 30 seconds to fill out a ticket\nhere:\n\nhttp://code.djangoproject.com/newticket\n\nTo get more help:\n\n* Join the #django channel on irc.freenode.net. Lots of helpful people hang out\n  there. Read the archives at http://django-irc-logs.com/.\n\n* Join the django-users mailing list, or read the archives, at\n  http://groups.google.com/group/django-users.\n\nTo contribute to Django:\n\n* Check out http://www.djangoproject.com/community/ for information about\n  getting involved.\n\nTo run Django's test suite:\n\n* Follow the instructions in the \"Unit tests\" section of\n  docs/internals/contributing/writing-code/unit-tests.txt, published online at\n  https://docs.djangoproject.com/en/dev/internals/contributing/writing-code/unit-tests/#running-the-unit-tests\n"
  },
  {
    "path": "Django-1.5.1/django/__init__.py",
    "content": "VERSION = (1, 5, 1, 'final', 0)\n\ndef get_version(*args, **kwargs):\n    # Don't litter django/__init__.py with all the get_version stuff.\n    # Only import if it's actually called.\n    from django.utils.version import get_version\n    return get_version(*args, **kwargs)\n"
  },
  {
    "path": "Django-1.5.1/django/bin/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/bin/daily_cleanup.py",
    "content": "#!/usr/bin/env python\n\n\"\"\"\nDaily cleanup job.\n\nCan be run as a cronjob to clean out old data from the database (only expired\nsessions at the moment).\n\"\"\"\n\nimport warnings\n\nfrom django.core import management\n\nif __name__ == \"__main__\":\n    warnings.warn(\n        \"The `daily_cleanup` script has been deprecated \"\n        \"in favor of `django-admin.py clearsessions`.\",\n        PendingDeprecationWarning)\n    management.call_command('clearsessions')\n"
  },
  {
    "path": "Django-1.5.1/django/bin/django-2to3.py",
    "content": "#!/usr/bin/env python\n\n# This works exactly like 2to3, except that it uses Django's fixers rather\n# than 2to3's built-in fixers.\n\nimport sys\nfrom lib2to3.main import main\n\nsys.exit(main(\"django.utils.2to3_fixes\"))\n\n"
  },
  {
    "path": "Django-1.5.1/django/bin/django-admin.py",
    "content": "#!/usr/bin/env python\nfrom django.core import management\n\nif __name__ == \"__main__\":\n    management.execute_from_command_line()\n"
  },
  {
    "path": "Django-1.5.1/django/bin/profiling/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/bin/profiling/gather_profile_stats.py",
    "content": "#!/usr/bin/env python\n\n\"\"\"\ngather_profile_stats.py /path/to/dir/of/profiles\n\nNote that the aggregated profiles must be read with pstats.Stats, not\nhotshot.stats (the formats are incompatible)\n\"\"\"\n\nfrom hotshot import stats\nimport os\nimport pstats\nimport sys\n\ndef gather_stats(p):\n    profiles = {}\n    for f in os.listdir(p):\n        if f.endswith('.agg.prof'):\n            path = f[:-9]\n            prof = pstats.Stats(os.path.join(p, f))\n        elif f.endswith('.prof'):\n            bits = f.split('.')\n            path = \".\".join(bits[:-3])\n            prof = stats.load(os.path.join(p, f))\n        else:\n            continue\n        print(\"Processing %s\" % f)\n        if path in profiles:\n            profiles[path].add(prof)\n        else:\n            profiles[path] = prof\n        os.unlink(os.path.join(p, f))\n    for (path, prof) in profiles.items():\n        prof.dump_stats(os.path.join(p, \"%s.agg.prof\" % path))\n    \nif __name__ == '__main__':\n    gather_stats(sys.argv[1])\n"
  },
  {
    "path": "Django-1.5.1/django/bin/unique-messages.py",
    "content": "#!/usr/bin/env python\n\nimport os\nimport sys\n\ndef unique_messages():\n    basedir = None\n\n    if os.path.isdir(os.path.join('conf', 'locale')):\n        basedir = os.path.abspath(os.path.join('conf', 'locale'))\n    elif os.path.isdir('locale'):\n        basedir = os.path.abspath('locale')\n    else:\n        print(\"This script should be run from the Django Git tree or your project or app tree.\")\n        sys.exit(1)\n\n    for (dirpath, dirnames, filenames) in os.walk(basedir):\n        for f in filenames:\n            if f.endswith('.po'):\n                sys.stderr.write('processing file %s in %s\\n' % (f, dirpath))\n                pf = os.path.splitext(os.path.join(dirpath, f))[0]\n                cmd = 'msguniq \"%s.po\"' % pf\n                stdout = os.popen(cmd)\n                msg = stdout.read()\n                with open('%s.po' % pf, 'w') as fp:\n                    fp.write(msg)\n\nif __name__ == \"__main__\":\n    unique_messages()\n"
  },
  {
    "path": "Django-1.5.1/django/conf/__init__.py",
    "content": "\"\"\"\nSettings and configuration for Django.\n\nValues will be read from the module specified by the DJANGO_SETTINGS_MODULE environment\nvariable, and then from django.conf.global_settings; see the global settings file for\na list of all possible variables.\n\"\"\"\nsetting  管理\n\nimport logging\nimport os\nimport sys\nimport time     # Needed for Windows\nimport warnings\n\nfrom django.conf import global_settings\nfrom django.core.exceptions import ImproperlyConfigured\nfrom django.utils.functional import LazyObject, empty\nfrom django.utils import importlib\nfrom django.utils import six\n\nENVIRONMENT_VARIABLE = \"DJANGO_SETTINGS_MODULE\"\n\n\nclass LazySettings(LazyObject):\n    \"\"\"\n    A lazy proxy for either global Django settings or a custom settings object.\n    The user can manually configure settings prior to using them. Otherwise,\n    Django uses the settings module pointed to by DJANGO_SETTINGS_MODULE.\n    \"\"\"\n    def _setup(self, name=None):\n        \"\"\"\n        Load the settings module pointed to by the environment variable. This\n        is used the first time we need any settings at all, if the user has not\n        previously configured the settings manually.\n        \"\"\"\n        try:\n            settings_module = os.environ[ENVIRONMENT_VARIABLE]\n            if not settings_module: # If it's set but is an empty string.\n                raise KeyError\n        except KeyError:\n            desc = (\"setting %s\" % name) if name else \"settings\"\n            raise ImproperlyConfigured(\n                \"Requested %s, but settings are not configured. \"\n                \"You must either define the environment variable %s \"\n                \"or call settings.configure() before accessing settings.\"\n                % (desc, ENVIRONMENT_VARIABLE))\n\n        self._wrapped = Settings(settings_module)\n        self._configure_logging()\n\n    def __getattr__(self, name):\n        if self._wrapped is empty:\n            self._setup(name)\n        return getattr(self._wrapped, name)\n\n    def _configure_logging(self):\n        \"\"\"\n        Setup logging from LOGGING_CONFIG and LOGGING settings.\n        \"\"\"\n        if not sys.warnoptions:\n            try:\n                # Route warnings through python logging\n                logging.captureWarnings(True)\n                # Allow DeprecationWarnings through the warnings filters\n                warnings.simplefilter(\"default\", DeprecationWarning)\n            except AttributeError:\n                # No captureWarnings on Python 2.6, DeprecationWarnings are on anyway\n                pass\n\n        if self.LOGGING_CONFIG:\n            from django.utils.log import DEFAULT_LOGGING\n            # First find the logging configuration function ...\n            logging_config_path, logging_config_func_name = self.LOGGING_CONFIG.rsplit('.', 1)\n            logging_config_module = importlib.import_module(logging_config_path)\n            logging_config_func = getattr(logging_config_module, logging_config_func_name)\n\n            logging_config_func(DEFAULT_LOGGING)\n\n            if self.LOGGING:\n                # Backwards-compatibility shim for #16288 fix\n                compat_patch_logging_config(self.LOGGING)\n\n                # ... then invoke it with the logging settings\n                logging_config_func(self.LOGGING)\n\n    def configure(self, default_settings=global_settings, **options):\n        \"\"\"\n        Called to manually configure the settings. The 'default_settings'\n        parameter sets where to retrieve any unspecified values from (its\n        argument must support attribute access (__getattr__)).\n        \"\"\"\n        会得到默认的 setting, 如果有 options 会覆盖设置\n        if self._wrapped is not empty:\n            raise RuntimeError('Settings already configured.')\n\n        holder = UserSettingsHolder(default_settings)\n\n        for name, value in options.items():\n            setattr(holder, name, value)\n\n        self._wrapped = holder\n        self._configure_logging()\n\n    @property\n    def configured(self):\n        \"\"\"\n        Returns True if the settings have already been configured.\n        \"\"\"\n        return self._wrapped is not empty\n\n\nclass BaseSettings(object):\n    \"\"\"\n    Common logic for settings whether set by a module or by the user.\n    \"\"\"\n    def __setattr__(self, name, value):\n        if name in (\"MEDIA_URL\", \"STATIC_URL\") and value and not value.endswith('/'): STATIC_URL 和 MEDIA_URL 都必须已 / 结尾\n            raise ImproperlyConfigured(\"If set, %s must end with a slash\" % name)\n\n        elif name == \"ALLOWED_INCLUDE_ROOTS\" and isinstance(value, six.string_types):\n            raise ValueError(\"The ALLOWED_INCLUDE_ROOTS setting must be set \"\n                \"to a tuple, not a string.\")\n\n        object.__setattr__(self, name, value)\n\n\nclass Settings(BaseSettings):\n    def __init__(self, settings_module):\n        # update this dict from global settings (but only for ALL_CAPS settings)\n        global_settings 是全局默认的设置, 无论设置与否, 一开始都会使用这个设置\n        for setting in dir(global_settings): global_settings 终于露面了\n            if setting == setting.upper():\n                setattr(self, setting, getattr(global_settings, setting))\n\n        # store the settings module in case someone later cares\n        self.SETTINGS_MODULE = settings_module 自定义的 SETTINGS_MODULE\n\n        try:\n            尝试导入 SETTINGS_MODULE\n            mod = importlib.import_module(self.SETTINGS_MODULE)\n        except ImportError as e:\n            raise ImportError(\"Could not import settings '%s' (Is it on sys.path?): %s\" % (self.SETTINGS_MODULE, e))\n\n        # Settings that should be converted into tuples if they're mistakenly entered\n        # as strings.\n        tuple_settings = (\"INSTALLED_APPS\", \"TEMPLATE_DIRS\")\n\n        for setting in dir(mod):\n\n            if setting == setting.upper():\n                setting_value = getattr(mod, setting)\n\n                if setting in tuple_settings and \\\n                        isinstance(setting_value, six.string_types):\n\n                    warnings.warn(\"The %s setting must be a tuple. Please fix your \"\n                                  \"settings, as auto-correction is now deprecated.\" % setting,\n                        PendingDeprecationWarning)\n                    setting_value = (setting_value,) # In case the user forgot the comma.\n\n                setattr(self, setting, setting_value) 覆盖设置\n\n        安全 key 不能为空\n        if not self.SECRET_KEY:\n            raise ImproperlyConfigured(\"The SECRET_KEY setting must not be empty.\")\n\n        if hasattr(time, 'tzset') and self.TIME_ZONE:\n            # When we can, attempt to validate the timezone. If we can't find\n            # this file, no check happens and it's harmless.\n            zoneinfo_root = '/usr/share/zoneinfo'\n            if (os.path.exists(zoneinfo_root) and not\n                    os.path.exists(os.path.join(zoneinfo_root, *(self.TIME_ZONE.split('/'))))):\n                raise ValueError(\"Incorrect timezone setting: %s\" % self.TIME_ZONE)\n            # Move the time zone info into os.environ. See ticket #2315 for why\n            # we don't do this unconditionally (breaks Windows).\n            os.environ['TZ'] = self.TIME_ZONE\n            time.tzset()\n\n用户可以自定义的 settings\nclass UserSettingsHolder(BaseSettings):\n    \"\"\"\n    Holder for user configured settings. 为用户配备的设置\n    \"\"\"\n    # SETTINGS_MODULE doesn't make much sense in the manually configured\n    # (standalone) case.\n    SETTINGS_MODULE 意义不大\n    SETTINGS_MODULE = None\n\n    def __init__(self, default_settings):\n        \"\"\"\n        Requests for configuration variables not in this class are satisfied\n        from the module specified in default_settings (if possible).\n        \"\"\"\n        self.__dict__['_deleted'] = set()\n        self.default_settings = default_settings\n\n    def __getattr__(self, name):\n        if name in self._deleted:\n            raise AttributeError\n        return getattr(self.default_settings, name)\n\n    def __setattr__(self, name, value):\n        self._deleted.discard(name)\n        return super(UserSettingsHolder, self).__setattr__(name, value)\n\n    def __delattr__(self, name):\n        self._deleted.add(name)\n        return super(UserSettingsHolder, self).__delattr__(name)\n\n    def __dir__(self):\n        return list(self.__dict__) + dir(self.default_settings)\n\nsettings = LazySettings() 这里已经设置了 settings\n\n\n\ndef compat_patch_logging_config(logging_config):\n    \"\"\"\n    Backwards-compatibility shim for #16288 fix. Takes initial value of\n    ``LOGGING`` setting and patches it in-place (issuing deprecation warning)\n    if \"mail_admins\" logging handler is configured but has no filters.\n\n    \"\"\"\n    #  Shim only if LOGGING[\"handlers\"][\"mail_admins\"] exists,\n    #  but has no \"filters\" key\n    if \"filters\" not in logging_config.get(\n        \"handlers\", {}).get(\n        \"mail_admins\", {\"filters\": []}):\n\n        warnings.warn(\n            \"You have no filters defined on the 'mail_admins' logging \"\n            \"handler: adding implicit debug-false-only filter. \"\n            \"See http://docs.djangoproject.com/en/dev/releases/1.4/\"\n            \"#request-exceptions-are-now-always-logged\",\n            DeprecationWarning)\n\n        filter_name = \"require_debug_false\"\n\n        filters = logging_config.setdefault(\"filters\", {})\n        while filter_name in filters:\n            filter_name = filter_name + \"_\"\n\n        filters[filter_name] = {\n            \"()\": \"django.utils.log.RequireDebugFalse\",\n        }\n\n        logging_config[\"handlers\"][\"mail_admins\"][\"filters\"] = [filter_name]\n"
  },
  {
    "path": "Django-1.5.1/django/conf/app_template/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/conf/app_template/models.py",
    "content": "from django.db import models\n\n# Create your models here.\n"
  },
  {
    "path": "Django-1.5.1/django/conf/app_template/tests.py",
    "content": "\"\"\"\nThis file demonstrates writing tests using the unittest module. These will pass\nwhen you run \"manage.py test\".\n\nReplace this with more appropriate tests for your application.\n\"\"\"\n\nfrom django.test import TestCase\n\n\nclass SimpleTest(TestCase):\n    def test_basic_addition(self):\n        \"\"\"\n        Tests that 1 + 1 always equals 2.\n        \"\"\"\n        self.assertEqual(1 + 1, 2)\n"
  },
  {
    "path": "Django-1.5.1/django/conf/app_template/views.py",
    "content": "# Create your views here.\n"
  },
  {
    "path": "Django-1.5.1/django/conf/global_settings.py",
    "content": "# Default Django settings. Override these with settings in the module\n# pointed-to by the DJANGO_SETTINGS_MODULE environment variable.\n\n# This is defined here as a do-nothing function because we can't import\n# django.utils.translation -- that module depends on the settings.\ngettext_noop = lambda s: s\n\n####################\n# CORE             #\n####################\n\nDEBUG = False\nTEMPLATE_DEBUG = False\n\n# Whether the framework should propagate raw exceptions rather than catching\n# them. This is useful under some testing situations and should never be used\n# on a live site.\nDEBUG_PROPAGATE_EXCEPTIONS = False\n\n# Whether to use the \"Etag\" header. This saves bandwidth but slows down performance.\nUSE_ETAGS = False\n\n# People who get code error notifications.\n# In the format (('Full Name', 'email@example.com'), ('Full Name', 'anotheremail@example.com'))\nADMINS = ()\n\n# Tuple of IP addresses, as strings, that:\n#   * See debug comments, when DEBUG is true\n#   * Receive x-headers\nINTERNAL_IPS = ()\n\n# Hosts/domain names that are valid for this site.\n# \"*\" matches anything, \".example.com\" matches example.com and all subdomains\nALLOWED_HOSTS = []\n\n# Local time zone for this installation. All choices can be found here:\n# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name (although not all\n# systems may support all possibilities). When USE_TZ is True, this is\n# interpreted as the default user time zone.\nTIME_ZONE = 'America/Chicago'\n\n# If you set this to True, Django will use timezone-aware datetimes.\nUSE_TZ = False\n\n# Language code for this installation. All choices can be found here:\n# http://www.i18nguy.com/unicode/language-identifiers.html\nLANGUAGE_CODE = 'en-us'\n\n# Languages we provide translations for, out of the box. The language name\n# should be the utf-8 encoded local name for the language.\nLANGUAGES = (\n    ('af', gettext_noop('Afrikaans')),\n    ('ar', gettext_noop('Arabic')),\n    ('az', gettext_noop('Azerbaijani')),\n    ('bg', gettext_noop('Bulgarian')),\n    ('be', gettext_noop('Belarusian')),\n    ('bn', gettext_noop('Bengali')),\n    ('br', gettext_noop('Breton')),\n    ('bs', gettext_noop('Bosnian')),\n    ('ca', gettext_noop('Catalan')),\n    ('cs', gettext_noop('Czech')),\n    ('cy', gettext_noop('Welsh')),\n    ('da', gettext_noop('Danish')),\n    ('de', gettext_noop('German')),\n    ('el', gettext_noop('Greek')),\n    ('en', gettext_noop('English')),\n    ('en-gb', gettext_noop('British English')),\n    ('eo', gettext_noop('Esperanto')),\n    ('es', gettext_noop('Spanish')),\n    ('es-ar', gettext_noop('Argentinian Spanish')),\n    ('es-mx', gettext_noop('Mexican Spanish')),\n    ('es-ni', gettext_noop('Nicaraguan Spanish')),\n    ('es-ve', gettext_noop('Venezuelan Spanish')),\n    ('et', gettext_noop('Estonian')),\n    ('eu', gettext_noop('Basque')),\n    ('fa', gettext_noop('Persian')),\n    ('fi', gettext_noop('Finnish')),\n    ('fr', gettext_noop('French')),\n    ('fy-nl', gettext_noop('Frisian')),\n    ('ga', gettext_noop('Irish')),\n    ('gl', gettext_noop('Galician')),\n    ('he', gettext_noop('Hebrew')),\n    ('hi', gettext_noop('Hindi')),\n    ('hr', gettext_noop('Croatian')),\n    ('hu', gettext_noop('Hungarian')),\n    ('ia', gettext_noop('Interlingua')),\n    ('id', gettext_noop('Indonesian')),\n    ('is', gettext_noop('Icelandic')),\n    ('it', gettext_noop('Italian')),\n    ('ja', gettext_noop('Japanese')),\n    ('ka', gettext_noop('Georgian')),\n    ('kk', gettext_noop('Kazakh')),\n    ('km', gettext_noop('Khmer')),\n    ('kn', gettext_noop('Kannada')),\n    ('ko', gettext_noop('Korean')),\n    ('lb', gettext_noop('Luxembourgish')),\n    ('lt', gettext_noop('Lithuanian')),\n    ('lv', gettext_noop('Latvian')),\n    ('mk', gettext_noop('Macedonian')),\n    ('ml', gettext_noop('Malayalam')),\n    ('mn', gettext_noop('Mongolian')),\n    ('nb', gettext_noop('Norwegian Bokmal')),\n    ('ne', gettext_noop('Nepali')),\n    ('nl', gettext_noop('Dutch')),\n    ('nn', gettext_noop('Norwegian Nynorsk')),\n    ('pa', gettext_noop('Punjabi')),\n    ('pl', gettext_noop('Polish')),\n    ('pt', gettext_noop('Portuguese')),\n    ('pt-br', gettext_noop('Brazilian Portuguese')),\n    ('ro', gettext_noop('Romanian')),\n    ('ru', gettext_noop('Russian')),\n    ('sk', gettext_noop('Slovak')),\n    ('sl', gettext_noop('Slovenian')),\n    ('sq', gettext_noop('Albanian')),\n    ('sr', gettext_noop('Serbian')),\n    ('sr-latn', gettext_noop('Serbian Latin')),\n    ('sv', gettext_noop('Swedish')),\n    ('sw', gettext_noop('Swahili')),\n    ('ta', gettext_noop('Tamil')),\n    ('te', gettext_noop('Telugu')),\n    ('th', gettext_noop('Thai')),\n    ('tr', gettext_noop('Turkish')),\n    ('tt', gettext_noop('Tatar')),\n    ('udm', gettext_noop('Udmurt')),\n    ('uk', gettext_noop('Ukrainian')),\n    ('ur', gettext_noop('Urdu')),\n    ('vi', gettext_noop('Vietnamese')),\n    ('zh-cn', gettext_noop('Simplified Chinese')),\n    ('zh-tw', gettext_noop('Traditional Chinese')),\n)\n\n# Languages using BiDi (right-to-left) layout\nLANGUAGES_BIDI = (\"he\", \"ar\", \"fa\")\n\n# If you set this to False, Django will make some optimizations so as not\n# to load the internationalization machinery.\nUSE_I18N = True\nLOCALE_PATHS = ()\nLANGUAGE_COOKIE_NAME = 'django_language'\n\n# If you set this to True, Django will format dates, numbers and calendars\n# according to user current locale.\nUSE_L10N = False\n\n# Not-necessarily-technical managers of the site. They get broken link\n# notifications and other various emails.\nMANAGERS = ADMINS\n\n# Default content type and charset to use for all HttpResponse objects, if a\n# MIME type isn't manually specified. These are used to construct the\n# Content-Type header.\nDEFAULT_CONTENT_TYPE = 'text/html'\nDEFAULT_CHARSET = 'utf-8'\n\n# Encoding of files read from disk (template and initial SQL files).\nFILE_CHARSET = 'utf-8'\n\n# Email address that error messages come from.\nSERVER_EMAIL = 'root@localhost'\n\n# Whether to send broken-link emails.\nSEND_BROKEN_LINK_EMAILS = False\n\n# Database connection info. If left empty, will default to the dummy backend.\nDATABASES = {}\n\n# Classes used to implement DB routing behavior.\nDATABASE_ROUTERS = []\n\n# The email backend to use. For possible shortcuts see django.core.mail.\n# The default is to use the SMTP backend.\n# Third-party backends can be specified by providing a Python path\n# to a module that defines an EmailBackend class.\nEMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'\n\n# Host for sending email.\nEMAIL_HOST = 'localhost'\n\n# Port for sending email.\nEMAIL_PORT = 25\n\n# Optional SMTP authentication information for EMAIL_HOST.\nEMAIL_HOST_USER = ''\nEMAIL_HOST_PASSWORD = ''\nEMAIL_USE_TLS = False\n\n# List of strings representing installed apps.\nINSTALLED_APPS = ()\n\n# List of locations of the template source files, in search order.\nTEMPLATE_DIRS = ()\n\n# List of callables that know how to import templates from various sources.\n# See the comments in django/core/template/loader.py for interface\n# documentation.\nTEMPLATE_LOADERS = (\n    'django.template.loaders.filesystem.Loader',\n    'django.template.loaders.app_directories.Loader',\n#     'django.template.loaders.eggs.Loader',\n)\n\n# List of processors used by RequestContext to populate the context.\n# Each one should be a callable that takes the request object as its\n# only parameter and returns a dictionary to add to the context.\nTEMPLATE_CONTEXT_PROCESSORS = (\n    'django.contrib.auth.context_processors.auth',\n    'django.core.context_processors.debug',\n    'django.core.context_processors.i18n',\n    'django.core.context_processors.media',\n    'django.core.context_processors.static',\n    'django.core.context_processors.tz',\n#    'django.core.context_processors.request',\n    'django.contrib.messages.context_processors.messages',\n)\n\n# Output to use in template system for invalid (e.g. misspelled) variables.\nTEMPLATE_STRING_IF_INVALID = ''\n\n# Default email address to use for various automated correspondence from\n# the site managers.\nDEFAULT_FROM_EMAIL = 'webmaster@localhost'\n\n# Subject-line prefix for email messages send with django.core.mail.mail_admins\n# or ...mail_managers.  Make sure to include the trailing space.\nEMAIL_SUBJECT_PREFIX = '[Django] '\n\n# Whether to append trailing slashes to URLs.\nAPPEND_SLASH = True\n\n# Whether to prepend the \"www.\" subdomain to URLs that don't have it.\nPREPEND_WWW = False\n\n# Override the server-derived value of SCRIPT_NAME\nFORCE_SCRIPT_NAME = None\n\n# List of compiled regular expression objects representing User-Agent strings\n# that are not allowed to visit any page, systemwide. Use this for bad\n# robots/crawlers. Here are a few examples:\n#     import re\n#     DISALLOWED_USER_AGENTS = (\n#         re.compile(r'^NaverBot.*'),\n#         re.compile(r'^EmailSiphon.*'),\n#         re.compile(r'^SiteSucker.*'),\n#         re.compile(r'^sohu-search')\n#     )\nDISALLOWED_USER_AGENTS = ()\n\nABSOLUTE_URL_OVERRIDES = {}\n\n# Tuple of strings representing allowed prefixes for the {% ssi %} tag.\n# Example: ('/home/html', '/var/www')\nALLOWED_INCLUDE_ROOTS = ()\n\n# If this is a admin settings module, this should be a list of\n# settings modules (in the format 'foo.bar.baz') for which this admin\n# is an admin.\nADMIN_FOR = ()\n\n# List of compiled regular expression objects representing URLs that need not\n# be reported when SEND_BROKEN_LINK_EMAILS is True. Here are a few examples:\n#    import re\n#    IGNORABLE_404_URLS = (\n#        re.compile(r'^/apple-touch-icon.*\\.png$'),\n#        re.compile(r'^/favicon.ico$),\n#        re.compile(r'^/robots.txt$),\n#        re.compile(r'^/phpmyadmin/),\n#        re.compile(r'\\.(cgi|php|pl)$'),\n#    )\nIGNORABLE_404_URLS = ()\n\n# A secret key for this particular Django installation. Used in secret-key\n# hashing algorithms. Set this in your settings, or Django will complain\n# loudly.\nSECRET_KEY = ''\n\n# Default file storage mechanism that holds media.\nDEFAULT_FILE_STORAGE = 'django.core.files.storage.FileSystemStorage'\n\n# Absolute filesystem path to the directory that will hold user-uploaded files.\n# Example: \"/var/www/example.com/media/\"\nMEDIA_ROOT = ''\n\n# URL that handles the media served from MEDIA_ROOT.\n# Examples: \"http://example.com/media/\", \"http://media.example.com/\"\nMEDIA_URL = ''\n\n# Absolute path to the directory static files should be collected to.\n# Example: \"/var/www/example.com/static/\"\nSTATIC_ROOT = ''\n\n# URL that handles the static files served from STATIC_ROOT.\n# Example: \"http://example.com/static/\", \"http://static.example.com/\"\nSTATIC_URL = None\n\n# List of upload handler classes to be applied in order.\n原来在这里\nFILE_UPLOAD_HANDLERS = (\n    'django.core.files.uploadhandler.MemoryFileUploadHandler',\n    'django.core.files.uploadhandler.TemporaryFileUploadHandler',\n)\n\n# Maximum size, in bytes, of a request before it will be streamed to the\n# file system instead of into memory.\nFILE_UPLOAD_MAX_MEMORY_SIZE = 2621440 # i.e. 2.5 MB\n\n# Directory in which upload streamed files will be temporarily saved. A value of\n# `None` will make Django use the operating system's default temporary directory\n# (i.e. \"/tmp\" on *nix systems).\nFILE_UPLOAD_TEMP_DIR = None\n\n# The numeric mode to set newly-uploaded files to. The value should be a mode\n# you'd pass directly to os.chmod; see http://docs.python.org/lib/os-file-dir.html.\nFILE_UPLOAD_PERMISSIONS = None\n\n# Python module path where user will place custom format definition.\n# The directory where this setting is pointing should contain subdirectories\n# named as the locales, containing a formats.py file\n# (i.e. \"myproject.locale\" for myproject/locale/en/formats.py etc. use)\nFORMAT_MODULE_PATH = None\n\n# Default formatting for date objects. See all available format strings here:\n# http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\nDATE_FORMAT = 'N j, Y'\n\n# Default formatting for datetime objects. See all available format strings here:\n# http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\nDATETIME_FORMAT = 'N j, Y, P'\n\n# Default formatting for time objects. See all available format strings here:\n# http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\nTIME_FORMAT = 'P'\n\n# Default formatting for date objects when only the year and month are relevant.\n# See all available format strings here:\n# http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\nYEAR_MONTH_FORMAT = 'F Y'\n\n# Default formatting for date objects when only the month and day are relevant.\n# See all available format strings here:\n# http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\nMONTH_DAY_FORMAT = 'F j'\n\n# Default short formatting for date objects. See all available format strings here:\n# http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\nSHORT_DATE_FORMAT = 'm/d/Y'\n\n# Default short formatting for datetime objects.\n# See all available format strings here:\n# http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\nSHORT_DATETIME_FORMAT = 'm/d/Y P'\n\n# Default formats to be used when parsing dates from input boxes, in order\n# See all available format string here:\n# http://docs.python.org/library/datetime.html#strftime-behavior\n# * Note that these format strings are different from the ones to display dates\nDATE_INPUT_FORMATS = (\n    '%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', # '2006-10-25', '10/25/2006', '10/25/06'\n    '%b %d %Y', '%b %d, %Y',            # 'Oct 25 2006', 'Oct 25, 2006'\n    '%d %b %Y', '%d %b, %Y',            # '25 Oct 2006', '25 Oct, 2006'\n    '%B %d %Y', '%B %d, %Y',            # 'October 25 2006', 'October 25, 2006'\n    '%d %B %Y', '%d %B, %Y',            # '25 October 2006', '25 October, 2006'\n)\n\n# Default formats to be used when parsing times from input boxes, in order\n# See all available format string here:\n# http://docs.python.org/library/datetime.html#strftime-behavior\n# * Note that these format strings are different from the ones to display dates\nTIME_INPUT_FORMATS = (\n    '%H:%M:%S',     # '14:30:59'\n    '%H:%M',        # '14:30'\n)\n\n# Default formats to be used when parsing dates and times from input boxes,\n# in order\n# See all available format string here:\n# http://docs.python.org/library/datetime.html#strftime-behavior\n# * Note that these format strings are different from the ones to display dates\nDATETIME_INPUT_FORMATS = (\n    '%Y-%m-%d %H:%M:%S',     # '2006-10-25 14:30:59'\n    '%Y-%m-%d %H:%M:%S.%f',  # '2006-10-25 14:30:59.000200'\n    '%Y-%m-%d %H:%M',        # '2006-10-25 14:30'\n    '%Y-%m-%d',              # '2006-10-25'\n    '%m/%d/%Y %H:%M:%S',     # '10/25/2006 14:30:59'\n    '%m/%d/%Y %H:%M:%S.%f',  # '10/25/2006 14:30:59.000200'\n    '%m/%d/%Y %H:%M',        # '10/25/2006 14:30'\n    '%m/%d/%Y',              # '10/25/2006'\n    '%m/%d/%y %H:%M:%S',     # '10/25/06 14:30:59'\n    '%m/%d/%y %H:%M:%S.%f',  # '10/25/06 14:30:59.000200'\n    '%m/%d/%y %H:%M',        # '10/25/06 14:30'\n    '%m/%d/%y',              # '10/25/06'\n)\n\n# First day of week, to be used on calendars\n# 0 means Sunday, 1 means Monday...\nFIRST_DAY_OF_WEEK = 0\n\n# Decimal separator symbol\nDECIMAL_SEPARATOR = '.'\n\n# Boolean that sets whether to add thousand separator when formatting numbers\nUSE_THOUSAND_SEPARATOR = False\n\n# Number of digits that will be together, when splitting them by\n# THOUSAND_SEPARATOR. 0 means no grouping, 3 means splitting by thousands...\nNUMBER_GROUPING = 0\n\n# Thousand separator symbol\nTHOUSAND_SEPARATOR = ','\n\n# Do you want to manage transactions manually?\n# Hint: you really don't!\nTRANSACTIONS_MANAGED = False\n\n# The tablespaces to use for each model when not specified otherwise.\nDEFAULT_TABLESPACE = ''\nDEFAULT_INDEX_TABLESPACE = ''\n\n# Default X-Frame-Options header value\nX_FRAME_OPTIONS = 'SAMEORIGIN'\n\nUSE_X_FORWARDED_HOST = False\n\n# The Python dotted path to the WSGI application that Django's internal servers\n# (runserver, runfcgi) will use. If `None`, the return value of\n# 'django.core.wsgi.get_wsgi_application' is used, thus preserving the same\n# behavior as previous versions of Django. Otherwise this should point to an\n# actual WSGI application object.\nWSGI_APPLICATION = None\n\n# If your Django app is behind a proxy that sets a header to specify secure\n# connections, AND that proxy ensures that user-submitted headers with the\n# same name are ignored (so that people can't spoof it), set this value to\n# a tuple of (header_name, header_value). For any requests that come in with\n# that header/value, request.is_secure() will return True.\n# WARNING! Only set this if you fully understand what you're doing. Otherwise,\n# you may be opening yourself up to a security risk.\nSECURE_PROXY_SSL_HEADER = None\n\n##############\n# MIDDLEWARE #\n##############\n\n# List of middleware classes to use.  Order is important; in the request phase,\n# this middleware classes will be applied in the order given, and in the\n# response phase the middleware will be applied in reverse order.\nMIDDLEWARE_CLASSES = (\n    'django.middleware.common.CommonMiddleware',\n    'django.contrib.sessions.middleware.SessionMiddleware',\n    'django.middleware.csrf.CsrfViewMiddleware',\n    'django.contrib.auth.middleware.AuthenticationMiddleware',\n    'django.contrib.messages.middleware.MessageMiddleware',\n#     'django.middleware.http.ConditionalGetMiddleware',\n#     'django.middleware.gzip.GZipMiddleware',\n)\n\n############\n# SESSIONS #\n############\n\nSESSION_CACHE_ALIAS = 'default'                         # Cache to store session data if using the cache session backend.\nSESSION_COOKIE_NAME = 'sessionid'                       # Cookie name. This can be whatever you want.\nSESSION_COOKIE_AGE = 60 * 60 * 24 * 7 * 2               # Age of cookie, in seconds (default: 2 weeks).\nSESSION_COOKIE_DOMAIN = None                            # A string like \".example.com\", or None for standard domain cookie.\nSESSION_COOKIE_SECURE = False                           # Whether the session cookie should be secure (https:// only).\nSESSION_COOKIE_PATH = '/'                               # The path of the session cookie.\nSESSION_COOKIE_HTTPONLY = True                          # Whether to use the non-RFC standard httpOnly flag (IE, FF3+, others)\nSESSION_SAVE_EVERY_REQUEST = False                      # Whether to save the session data on every request.\nSESSION_EXPIRE_AT_BROWSER_CLOSE = False                 # Whether a user's session cookie expires when the Web browser is closed.\nSESSION_ENGINE = 'django.contrib.sessions.backends.db'  # The module to store session data\nSESSION_FILE_PATH = None                                # Directory to store session files if using the file session module. If None, the backend will use a sensible default.\n\n#########\n# CACHE #\n#########\n\n# The cache backends to use.\nCACHES = {\n    'default': {\n        'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',\n    }\n}\nCACHE_MIDDLEWARE_KEY_PREFIX = ''\nCACHE_MIDDLEWARE_SECONDS = 600\nCACHE_MIDDLEWARE_ALIAS = 'default'\n\n####################\n# COMMENTS         #\n####################\n\nCOMMENTS_ALLOW_PROFANITIES = False\n\n# The profanities that will trigger a validation error in\n# CommentDetailsForm.clean_comment. All of these should be in lowercase.\nPROFANITIES_LIST = ()\n\n##################\n# AUTHENTICATION #\n##################\n\nAUTH_USER_MODEL = 'auth.User'\n\nAUTHENTICATION_BACKENDS = ('django.contrib.auth.backends.ModelBackend',)\n\nLOGIN_URL = '/accounts/login/'\n\nLOGOUT_URL = '/accounts/logout/'\n\nLOGIN_REDIRECT_URL = '/accounts/profile/'\n\n# The number of days a password reset link is valid for\nPASSWORD_RESET_TIMEOUT_DAYS = 3\n\n# the first hasher in this list is the preferred algorithm.  any\n# password using different algorithms will be converted automatically\n# upon login\nPASSWORD_HASHERS = (\n    'django.contrib.auth.hashers.PBKDF2PasswordHasher',\n    'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher',\n    'django.contrib.auth.hashers.BCryptPasswordHasher',\n    'django.contrib.auth.hashers.SHA1PasswordHasher',\n    'django.contrib.auth.hashers.MD5PasswordHasher',\n    'django.contrib.auth.hashers.UnsaltedSHA1PasswordHasher',\n    'django.contrib.auth.hashers.UnsaltedMD5PasswordHasher',\n    'django.contrib.auth.hashers.CryptPasswordHasher',\n)\n\n###########\n# SIGNING #\n###########\n\nSIGNING_BACKEND = 'django.core.signing.TimestampSigner'\n\n########\n# CSRF #\n########\n\n# Dotted path to callable to be used as view when a request is\n# rejected by the CSRF middleware.\nCSRF_FAILURE_VIEW = 'django.views.csrf.csrf_failure'\n\n# Settings for CSRF cookie.\nCSRF_COOKIE_NAME = 'csrftoken'\nCSRF_COOKIE_DOMAIN = None\nCSRF_COOKIE_PATH = '/'\nCSRF_COOKIE_SECURE = False\n\n############\n# MESSAGES #\n############\n\n# Class to use as messages backend\nMESSAGE_STORAGE = 'django.contrib.messages.storage.fallback.FallbackStorage'\n\n# Default values of MESSAGE_LEVEL and MESSAGE_TAGS are defined within\n# django.contrib.messages to avoid imports in this settings file.\n\n###########\n# LOGGING #\n###########\n\n# The callable to use to configure logging\nLOGGING_CONFIG = 'django.utils.log.dictConfig'\n\n# Custom logging configuration.\nLOGGING = {}\n\n# Default exception reporter filter class used in case none has been\n# specifically assigned to the HttpRequest instance.\nDEFAULT_EXCEPTION_REPORTER_FILTER = 'django.views.debug.SafeExceptionReporterFilter'\n\n###########\n# TESTING #\n###########\n\n# The name of the class to use to run the test suite\nTEST_RUNNER = 'django.test.simple.DjangoTestSuiteRunner'\n\n############\n# FIXTURES #\n############\n\n# The list of directories to search for fixtures\nFIXTURE_DIRS = ()\n\n###############\n# STATICFILES #\n###############\n\n# A list of locations of additional static files\nSTATICFILES_DIRS = ()\n\n# The default file storage backend used during the build process\nSTATICFILES_STORAGE = 'django.contrib.staticfiles.storage.StaticFilesStorage'\n\n# List of finder classes that know how to find static files in\n# various locations.\nSTATICFILES_FINDERS = (\n    'django.contrib.staticfiles.finders.FileSystemFinder',\n    'django.contrib.staticfiles.finders.AppDirectoriesFinder',\n#    'django.contrib.staticfiles.finders.DefaultStorageFinder',\n)\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/__init__.py",
    "content": "from __future__ import unicode_literals\n\n区域化设置\n\n# About name_local: capitalize it as if your language name was appearing inside a sentence in your language.\n\nLANG_INFO = {\n    'af': {\n        'bidi': False,\n        'code': 'af',\n        'name': 'Afrikaans',\n        'name_local': 'Afrikaans',\n    },\n    'ar': {\n        'bidi': True,\n        'code': 'ar',\n        'name': 'Arabic',\n        'name_local': '\\u0627\\u0644\\u0639\\u0631\\u0628\\u064a\\u0651\\u0629',\n    },\n    'az': {\n        'bidi': True,\n        'code': 'az',\n        'name': 'Azerbaijani',\n        'name_local': 'az\\u0259rbaycan dili',\n    },\n    'be': {\n        'bidi': False,\n        'code': 'be',\n        'name': 'Belarusian',\n        'name_local': '\\u0431\\u0435\\u043b\\u0430\\u0440\\u0443\\u0441\\u043a\\u0430\\u044f',\n    },\n    'bg': {\n        'bidi': False,\n        'code': 'bg',\n        'name': 'Bulgarian',\n        'name_local': '\\u0431\\u044a\\u043b\\u0433\\u0430\\u0440\\u0441\\u043a\\u0438',\n    },\n    'bn': {\n        'bidi': False,\n        'code': 'bn',\n        'name': 'Bengali',\n        'name_local': '\\u09ac\\u09be\\u0982\\u09b2\\u09be',\n    },\n    'br': {\n        'bidi': False,\n        'code': 'br',\n        'name': 'Breton',\n        'name_local': 'brezhoneg',\n    },\n    'bs': {\n        'bidi': False,\n        'code': 'bs',\n        'name': 'Bosnian',\n        'name_local': 'bosanski',\n    },\n    'ca': {\n        'bidi': False,\n        'code': 'ca',\n        'name': 'Catalan',\n        'name_local': 'catal\\xe0',\n    },\n    'cs': {\n        'bidi': False,\n        'code': 'cs',\n        'name': 'Czech',\n        'name_local': '\\u010desky',\n    },\n    'cy': {\n        'bidi': False,\n        'code': 'cy',\n        'name': 'Welsh',\n        'name_local': 'Cymraeg',\n    },\n    'da': {\n        'bidi': False,\n        'code': 'da',\n        'name': 'Danish',\n        'name_local': 'dansk',\n    },\n    'de': {\n        'bidi': False,\n        'code': 'de',\n        'name': 'German',\n        'name_local': 'Deutsch',\n    },\n    'el': {\n        'bidi': False,\n        'code': 'el',\n        'name': 'Greek',\n        'name_local': '\\u0395\\u03bb\\u03bb\\u03b7\\u03bd\\u03b9\\u03ba\\u03ac',\n    },\n    'en': {\n        'bidi': False,\n        'code': 'en',\n        'name': 'English',\n        'name_local': 'English',\n    },\n    'en-gb': {\n        'bidi': False,\n        'code': 'en-gb',\n        'name': 'British English',\n        'name_local': 'British English',\n    },\n    'eo': {\n        'bidi': False,\n        'code': 'eo',\n        'name': 'Esperanto',\n        'name_local': 'Esperanto',\n    },\n    'es': {\n        'bidi': False,\n        'code': 'es',\n        'name': 'Spanish',\n        'name_local': 'espa\\xf1ol',\n    },\n    'es-ar': {\n        'bidi': False,\n        'code': 'es-ar',\n        'name': 'Argentinian Spanish',\n        'name_local': 'espa\\xf1ol de Argentina',\n    },\n    'es-mx': {\n        'bidi': False,\n        'code': 'es-mx',\n        'name': 'Mexican Spanish',\n        'name_local': 'espa\\xf1ol de Mexico',\n    },\n    'es-ni': {\n        'bidi': False,\n        'code': 'es-ni',\n        'name': 'Nicaraguan Spanish',\n        'name_local': 'espa\\xf1ol de Nicaragua',\n    },\n    'es-ve': {\n        'bidi': False,\n        'code': 'es-ve',\n        'name': 'Venezuelan Spanish',\n        'name_local': 'espa\\xf1ol de Venezuela',\n    },\n    'et': {\n        'bidi': False,\n        'code': 'et',\n        'name': 'Estonian',\n        'name_local': 'eesti',\n    },\n    'eu': {\n        'bidi': False,\n        'code': 'eu',\n        'name': 'Basque',\n        'name_local': 'Basque',\n    },\n    'fa': {\n        'bidi': True,\n        'code': 'fa',\n        'name': 'Persian',\n        'name_local': '\\u0641\\u0627\\u0631\\u0633\\u06cc',\n    },\n    'fi': {\n        'bidi': False,\n        'code': 'fi',\n        'name': 'Finnish',\n        'name_local': 'suomi',\n    },\n    'fr': {\n        'bidi': False,\n        'code': 'fr',\n        'name': 'French',\n        'name_local': 'fran\\xe7ais',\n    },\n    'fy-nl': {\n        'bidi': False,\n        'code': 'fy-nl',\n        'name': 'Frisian',\n        'name_local': 'Frisian',\n    },\n    'ga': {\n        'bidi': False,\n        'code': 'ga',\n        'name': 'Irish',\n        'name_local': 'Gaeilge',\n    },\n    'gl': {\n        'bidi': False,\n        'code': 'gl',\n        'name': 'Galician',\n        'name_local': 'galego',\n    },\n    'he': {\n        'bidi': True,\n        'code': 'he',\n        'name': 'Hebrew',\n        'name_local': '\\u05e2\\u05d1\\u05e8\\u05d9\\u05ea',\n    },\n    'hi': {\n        'bidi': False,\n        'code': 'hi',\n        'name': 'Hindi',\n        'name_local': 'Hindi',\n    },\n    'hr': {\n        'bidi': False,\n        'code': 'hr',\n        'name': 'Croatian',\n        'name_local': 'Hrvatski',\n    },\n    'hu': {\n        'bidi': False,\n        'code': 'hu',\n        'name': 'Hungarian',\n        'name_local': 'Magyar',\n    },\n    'ia': {\n        'bidi': False,\n        'code': 'ia',\n        'name': 'Interlingua',\n        'name_local': 'Interlingua',\n    },\n    'id': {\n        'bidi': False,\n        'code': 'id',\n        'name': 'Indonesian',\n        'name_local': 'Bahasa Indonesia',\n    },\n    'is': {\n        'bidi': False,\n        'code': 'is',\n        'name': 'Icelandic',\n        'name_local': '\\xcdslenska',\n    },\n    'it': {\n        'bidi': False,\n        'code': 'it',\n        'name': 'Italian',\n        'name_local': 'italiano',\n    },\n    'ja': {\n        'bidi': False,\n        'code': 'ja',\n        'name': 'Japanese',\n        'name_local': '\\u65e5\\u672c\\u8a9e',\n    },\n    'ka': {\n        'bidi': False,\n        'code': 'ka',\n        'name': 'Georgian',\n        'name_local': '\\u10e5\\u10d0\\u10e0\\u10d7\\u10e3\\u10da\\u10d8',\n    },\n    'kk': {\n        'bidi': False,\n        'code': 'kk',\n        'name': 'Kazakh',\n        'name_local': '\\u049a\\u0430\\u0437\\u0430\\u049b',\n    },\n    'km': {\n        'bidi': False,\n        'code': 'km',\n        'name': 'Khmer',\n        'name_local': 'Khmer',\n    },\n    'kn': {\n        'bidi': False,\n        'code': 'kn',\n        'name': 'Kannada',\n        'name_local': 'Kannada',\n    },\n    'ko': {\n        'bidi': False,\n        'code': 'ko',\n        'name': 'Korean',\n        'name_local': '\\ud55c\\uad6d\\uc5b4',\n    },\n    'lb': {\n        'bidi': False,\n        'code': 'lb',\n        'name': 'Luxembourgish',\n        'name_local': 'L\\u00ebtzebuergesch',\n    },\n    'lt': {\n        'bidi': False,\n        'code': 'lt',\n        'name': 'Lithuanian',\n        'name_local': 'Lithuanian',\n    },\n    'lv': {\n        'bidi': False,\n        'code': 'lv',\n        'name': 'Latvian',\n        'name_local': 'latvie\\u0161u',\n    },\n    'mk': {\n        'bidi': False,\n        'code': 'mk',\n        'name': 'Macedonian',\n        'name_local': '\\u041c\\u0430\\u043a\\u0435\\u0434\\u043e\\u043d\\u0441\\u043a\\u0438',\n    },\n    'ml': {\n        'bidi': False,\n        'code': 'ml',\n        'name': 'Malayalam',\n        'name_local': 'Malayalam',\n    },\n    'mn': {\n        'bidi': False,\n        'code': 'mn',\n        'name': 'Mongolian',\n        'name_local': 'Mongolian',\n    },\n    'nb': {\n        'bidi': False,\n        'code': 'nb',\n        'name': 'Norwegian Bokmal',\n        'name_local': 'norsk (bokm\\xe5l)',\n    },\n    'ne': {\n        'bidi': False,\n        'code': 'ne',\n        'name': 'Nepali',\n        'name_local': '\\u0928\\u0947\\u092a\\u093e\\u0932\\u0940',\n    },\n    'nl': {\n        'bidi': False,\n        'code': 'nl',\n        'name': 'Dutch',\n        'name_local': 'Nederlands',\n    },\n    'nn': {\n        'bidi': False,\n        'code': 'nn',\n        'name': 'Norwegian Nynorsk',\n        'name_local': 'norsk (nynorsk)',\n    },\n    'no': {\n        'bidi': False,\n        'code': 'no',\n        'name': 'Norwegian',\n        'name_local': 'norsk',\n    },\n    'pa': {\n        'bidi': False,\n        'code': 'pa',\n        'name': 'Punjabi',\n        'name_local': 'Punjabi',\n    },\n    'pl': {\n        'bidi': False,\n        'code': 'pl',\n        'name': 'Polish',\n        'name_local': 'polski',\n    },\n    'pt': {\n        'bidi': False,\n        'code': 'pt',\n        'name': 'Portuguese',\n        'name_local': 'Portugu\\xeas',\n    },\n    'pt-br': {\n        'bidi': False,\n        'code': 'pt-br',\n        'name': 'Brazilian Portuguese',\n        'name_local': 'Portugu\\xeas Brasileiro',\n    },\n    'ro': {\n        'bidi': False,\n        'code': 'ro',\n        'name': 'Romanian',\n        'name_local': 'Rom\\xe2n\\u0103',\n    },\n    'ru': {\n        'bidi': False,\n        'code': 'ru',\n        'name': 'Russian',\n        'name_local': '\\u0420\\u0443\\u0441\\u0441\\u043a\\u0438\\u0439',\n    },\n    'sk': {\n        'bidi': False,\n        'code': 'sk',\n        'name': 'Slovak',\n        'name_local': 'slovensk\\xfd',\n    },\n    'sl': {\n        'bidi': False,\n        'code': 'sl',\n        'name': 'Slovenian',\n        'name_local': 'Sloven\\u0161\\u010dina',\n    },\n    'sq': {\n        'bidi': False,\n        'code': 'sq',\n        'name': 'Albanian',\n        'name_local': 'Albanian',\n    },\n    'sr': {\n        'bidi': False,\n        'code': 'sr',\n        'name': 'Serbian',\n        'name_local': '\\u0441\\u0440\\u043f\\u0441\\u043a\\u0438',\n    },\n    'sr-latn': {\n        'bidi': False,\n        'code': 'sr-latn',\n        'name': 'Serbian Latin',\n        'name_local': 'srpski (latinica)',\n    },\n    'sv': {\n        'bidi': False,\n        'code': 'sv',\n        'name': 'Swedish',\n        'name_local': 'svenska',\n    },\n    'sw': {\n        'bidi': False,\n        'code': 'sw',\n        'name': 'Swahili',\n        'name_local': 'Kiswahili',\n    },\n    'ta': {\n        'bidi': False,\n        'code': 'ta',\n        'name': 'Tamil',\n        'name_local': '\\u0ba4\\u0bae\\u0bbf\\u0bb4\\u0bcd',\n    },\n    'te': {\n        'bidi': False,\n        'code': 'te',\n        'name': 'Telugu',\n        'name_local': '\\u0c24\\u0c46\\u0c32\\u0c41\\u0c17\\u0c41',\n    },\n    'th': {\n        'bidi': False,\n        'code': 'th',\n        'name': 'Thai',\n        'name_local': 'Thai',\n    },\n    'tr': {\n        'bidi': False,\n        'code': 'tr',\n        'name': 'Turkish',\n        'name_local': 'T\\xfcrk\\xe7e',\n    },\n    'tt': {\n        'bidi': False,\n        'code': 'tt',\n        'name': 'Tatar',\n        'name_local': '\\u0422\\u0430\\u0442\\u0430\\u0440\\u0447\\u0430',\n    },\n    'udm': {\n        'bidi': False,\n        'code': 'udm',\n        'name': 'Udmurt',\n        'name_local': '\\u0423\\u0434\\u043c\\u0443\\u0440\\u0442',\n    },\n    'uk': {\n        'bidi': False,\n        'code': 'uk',\n        'name': 'Ukrainian',\n        'name_local': '\\u0423\\u043a\\u0440\\u0430\\u0457\\u043d\\u0441\\u044c\\u043a\\u0430',\n    },\n    'ur': {\n        'bidi': False,\n        'code': 'ur',\n        'name': 'Urdu',\n        'name_local': '\\u0627\\u0631\\u062f\\u0648',\n    },\n    'vi': {\n        'bidi': False,\n        'code': 'vi',\n        'name': 'Vietnamese',\n        'name_local': 'Vietnamese',\n    },\n    'zh-cn': {\n        'bidi': False,\n        'code': 'zh-cn',\n        'name': 'Simplified Chinese',\n        'name_local': '\\u7b80\\u4f53\\u4e2d\\u6587',\n    },\n    'zh-tw': {\n        'bidi': False,\n        'code': 'zh-tw',\n        'name': 'Traditional Chinese',\n        'name_local': '\\u7e41\\u9ad4\\u4e2d\\u6587',\n    }\n}\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/af/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Piet Delport <pjdelport@gmail.com>, 2012-2013.\n# Stephen Cox <scox@rems2.com>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-03-26 06:50+0000\\n\"\n\"Last-Translator: Piet Delport <pjdelport@gmail.com>\\n\"\n\"Language-Team: Afrikaans (http://www.transifex.com/projects/p/django/\"\n\"language/af/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: af\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"Afrikaans\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"Arabies\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"Aserbeidjans\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"Bulgaars\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"Wit-Russies\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"Bengali\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"Bretons\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"Bosnies\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"Katalaans\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"Tsjeggies\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"Welsh\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"Deens\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"Duits\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"Grieks\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"Engels\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"Britse Engels\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"Esperanto\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"Spaans\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"Argentynse Spaans\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"Meksikaanse Spaans\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"Nicaraguaanse Spaans\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"Venezolaanse Spaans\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"Estnies\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"Baskies\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"Persies\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"Fins\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"Fraans\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"Fries\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"Iers\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"Galicies\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"Hebreeus\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"Hindoe\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"Kroaties\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"Hongaars\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"Interlingua\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"Indonesies\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"Yslands\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"Italiaans\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"Japannees\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"Georgian\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"Kazakh\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"Khmer\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"Kannada\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"Koreaanse\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"Luxemburgs\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"Litaus\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"Lets\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"Macedonies\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"Malabaars\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"Mongools\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"Noors Bokmal\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"Nepalees\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"Nederlands\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"Noorweegse Nynorsk\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"Punjabi\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"Pools\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"Portugees\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"Brasiliaanse Portugees\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"Roemeens\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"Russiese\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"Slowaakse\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"Sloveens\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"Albanees\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"Serwies\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"Serwies Latyns\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"Sweeds\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"Swahili\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"Tamil\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"Teloegoe\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"Thai\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"Turkish\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"Tataars\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"Oedmoerts\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"Oekraïens\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"Urdu\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"Viëtnamees\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"Vereenvoudigde Sjinees\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"Tradisionele Chinese\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"Sleutel 'n geldige waarde in.\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"Sleutel 'n geldige e-pos adres in.\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"\"\n\"Sleutel 'n geldige \\\"slak\\\" wat bestaan ​​uit letters, syfers, beklemtoon of \"\n\"koppel.\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"Sleutel 'n geldige IPv4-adres in.\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"Voer 'n geldige IPv6-adres in.\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"Voer 'n geldige IPv4 of IPv6-adres in.\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"Sleutel slegs syfers in wat deur kommas geskei is.\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"\"\n\"Maak seker dat hierdie waarde %(limit_value)s is  (dit is %(show_value)s ).\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"\"\n\"Maak seker dat hierdie waarde minder as of gelyk aan %(limit_value)s is.\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"\"\n\"Maak seker dat hierdie waarde groter as of gelyk aan %(limit_value)s is.\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Maak seker dat dit waarde ten minste %(limit_value)d karakters het (dit het \"\n\"%(show_value)d).\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Maak seker dat dit waarde op die meeste %(limit_value)d karakters het (dit \"\n\"het %(show_value)d).\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"%(field_name)s  moet uniek wees vir %(date_field)s  %(lookup)s .\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"en\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"%(model_name)s met hierdie %(field_label)s  bestaan ​​alreeds.\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"Waarde %r is nie 'n geldige keuse nie.\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"Hierdie veld kan nie nil wees nie.\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"Hierdie veld kan nie leeg wees nie.\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Veld van type: %(field_type)s \"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"Heelgetal\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"'%s' waarde moet 'n heelgetal wees.\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"'%s' waarde moet waar of vals wees.\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Boole (Eder waar of vals)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"String (tot %(max_length)s)\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"Kommas geskeide heelgetalle\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"\"\n\"'%s' waarde is in 'n ongeldige datum formaat. Dit moet in die JJJJ-MM-DD-\"\n\"formaat wees.\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"\"\n\"'%s' waarde is in die korrekte formaat (JJJJ-MM-DD), maar dit is 'n \"\n\"ongeldige datum.\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"Datum (sonder die tyd)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\"'%s' waarde se formaat is ongeldig. Dit moet in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] formaat wees.\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\"'%s' waarde het die regte formaat (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) maar \"\n\"is nie 'n geldige datum/tyd nie.\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"Datum (met die tyd)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"'%s' waarde moet 'n desimale getal wees.\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"Desimale getal\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"E-pos adres\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"Lêer pad\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"'%s' waarde moet 'n dryfpunt getal wees.\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"Dryfpunt getal\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"Groot (8 greep) heelgetal\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"IPv4 adres\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"IP adres\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"'%s' waarde moet None, True of False wees.\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"Boole (Eder waar, vals of niks)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"Positiewe heelgetal\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"Positiewe klein heelgetal\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"Slug (tot by %(max_length)s)\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"Klein heelgetal\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"Teks\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"\"\n\"'%s' waarde se formaat is ongeldig. Dit moet in HH:MM[:ss[.uuuuuu]] formaat \"\n\"wees.\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\"'%s' waarde het die regte formaat (HH:MM[:ss[.uuuuuu]]) maar is nie 'n \"\n\"geldige tyd nie.\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"Tyd\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"Lêer\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"Prent\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"Model %(model)s met private sleutel %(pk)r bestaan ​​nie.\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"Vreemde sleutel (tipe bepaal deur verwante veld)\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"Een-tot-een-verhouding\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"Baie-tot-baie-verwantskap\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"\"\n\"Hou die \\\"Control\\\" knoppie, of \\\"Command\\\" op 'n Mac, onder om meer as een \"\n\"te kies.\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"Die veld is verpligtend.\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"Sleutel 'n hele getal in.\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"Sleutel 'n nommer in.\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"Maak seker dat daar nie meer as %s syfers in totaal is nie.\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"Maak seker dat daar nie meer as %s desimale plekke is nie.\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"\"\n\"Maak seker dat daar nie meer as %s syfers voor die desimale punt is nie.\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"Sleutel 'n geldige datum in.\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"Sleutel 'n geldige tyd in.\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"Sleutel 'n geldige datum/tyd in.\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"\"\n\"Geen lêer is ingedien nie. Maak seker die kodering tipe op die vorm is reg.\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"Geen lêer is ingedien nie.\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"Die ingedien lêer is leeg.\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\"Maak seker dat hierdie lêernaam op die meeste %(max)d karakters het (dit is \"\n\"%(length)d).\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"Stuur die lêer of tiek die maak skoon boksie, nie beide nie.\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\"Laai 'n geldige prent. Die lêer wat jy opgelaai het is nie 'n prent nie of \"\n\"dit is 'n korrupte prent.\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"Sleutel 'n geldige URL in.\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"\"\n\"Kies 'n geldige keuse.  %(value)s  is nie een van die beskikbare keuses nie.\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"Sleatel 'n lys van waardes in.\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"Orde\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"Verwyder\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"Korrigeer die dubbele data vir %(field)s .\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"Korrigeer die dubbele data vir %(field)s , dit moet uniek wees.\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\"Korrigeer die dubbele data vir %(field_name)s, dit moet uniek wees vir die \"\n\"%(lookup)s  in %(date_field)s .\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"Korrigeer die dubbele waardes hieronder.\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"\"\n\"Die inlyn vreemde sleutel stem nie ooreen met die ouer primêre sleutel.\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"\"\n\"Kies 'n geldige keuse. Daardie keuse is nie een van die beskikbare keuses \"\n\"nie.\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"Kies 'n geldige keuse. %s is nie een van die beskikbare keuses nie.\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"\\\"%s\\\" is nie 'n geldige waarde vir 'n primêre sleutel nie.\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\"%(datetime)s kon nie in tydsone %(current_timezone)s vertolk word nie; dit \"\n\"mag dubbelsinnig wees, of nie bestaan nie.\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"Op die oomblik\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"Verander\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"Maak skoon\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"Onbekend\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"Ja\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"Nee\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"Ja, nee, miskien\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"%(size)d greep\"\nmsgstr[1] \"%(size)d grepe\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s KB\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s MB\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s GB\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s TB\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s PB\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"p.m.\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"a.m.\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"PM\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"AM\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"middernag\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"middag\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"Maandag\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"Dinsdag\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"Woensdag\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"Donderdag\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"Vrydag\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"Saterdag\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"Sondag\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"Ma\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"Di\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"Wo\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"Do\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"Vr\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"Sa\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"So\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"Januarie\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"Februarie\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"Maart\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"April\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"Mei\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"Junie\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"Julie\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"Augustus\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"September\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"Oktober\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"November\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"Desember\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"jan\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"feb\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"mar\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"apr\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"mag\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"jun\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"jul\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"aug\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"sept\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"okt\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"nov\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"des\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"Jan.\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"Feb.\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"Maart\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"April\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"Mei\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"Junie\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"Julie\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"Aug.\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"Sept.\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"Okt.\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"Nov.\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"Des.\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"Januarie\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"Februarie\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"Maart\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"April\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"Mei\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"Junie\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"Julie\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"Augustus\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"September\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"Oktober\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"November\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"Desember\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"%(truncated_text)s...\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"of\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \",\"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"jaar\"\nmsgstr[1] \"jare\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"maand\"\nmsgstr[1] \"maande\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"week\"\nmsgstr[1] \"weke\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"dag\"\nmsgstr[1] \"dae\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"uur\"\nmsgstr[1] \"ure\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"minuut\"\nmsgstr[1] \"minute\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"minute\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \", %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"Gids indekse word nie hier toegelaat nie.\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\\\"%(path)s\\\" bestaan nie\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"Indeks van %(directory)s\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"Geen jaar gespesifiseer\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"Geen maand gespesifiseer\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"Geen dag gespesifiseer\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"Geen week gespesifiseer\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"Geen %(verbose_name_plural)s beskikbaar nie\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\"Toekomstige %(verbose_name_plural)s  is nie beskikbaar nie, omdat \"\n\"%(class_name)s.allow_future vals is.\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"\"\n\"Ongeldige datum string '%(datestr)s' die formaat moet wees '%(format)s'\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"Geen %(verbose_name)s gevind vir die soektog\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"\"\n\"Bladsy is nie 'laaste' nie, en dit kan nie omgeskakel word na 'n heelgetal \"\n\"nie.\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"Ongeldige bladsy (%(page_number)s): %(message)s\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"Leë lys en ' %(class_name)s.allow_empty' is vals.\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/ar/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Ossama Khayat <okhayat@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:47+0000\\n\"\n\"Last-Translator: Ossama Khayat <okhayat@gmail.com>\\n\"\n\"Language-Team: Arabic (http://www.transifex.com/projects/p/django/language/\"\n\"ar/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ar\\n\"\n\"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 \"\n\"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"العربيّة\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"الأذربيجانية\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"البلغاريّة\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"البنغاليّة\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"البوسنيّة\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"الكتلانيّة\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"التشيكيّة\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"الويلز\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"الدنماركيّة\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"الألمانيّة\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"اليونانيّة\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"الإنجليزيّة\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"الإنجليزيّة البريطانيّة\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"الإسبانيّة\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"الأسبانية الأرجنتينية\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"الأسبانية المكسيكية\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"الإستونيّة\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"الباسك\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"الفارسيّة\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"الفنلنديّة\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"الفرنسيّة\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"الفريزيّة\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"الإيرلنديّة\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"الجليقيّة\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"العبريّة\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"الهندية\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"الكرواتيّة\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"الهنغاريّة\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"الإندونيسيّة\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"الآيسلنديّة\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"الإيطاليّة\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"اليابانيّة\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"الجورجيّة\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"الخمر\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"الهنديّة (كنّادا)\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"الكوريّة\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"اللتوانيّة\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"اللاتفيّة\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"المقدونيّة\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"المايالام\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"المنغوليّة\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"البوكمال نرويجيّة\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"الهولنديّة\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"النينورسك نرويجيّة\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"البنجابيّة\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"البولنديّة\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"البرتغاليّة\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"البرتغاليّة البرازيليّة\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"الرومانيّة\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"الروسيّة\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"السلوفاكيّة\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"السلوفانيّة\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"الألبانيّة\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"الصربيّة\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"اللاتينيّة الصربيّة\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"السويديّة\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"التاميل\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"التيلوغو\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"التايلنديّة\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"التركيّة\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"الأكرانيّة\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"الأوردو\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"الفيتناميّة\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"الصينيّة المبسطة\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"الصينيّة التقليدية\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"أدخل قيمة صحيحة.\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"أدخل اختصار 'slug' صحيح يتكوّن من أحرف، أرقام، شرطات سفلية وعاديّة.\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"أدخل عنوان IPv4 صحيح.\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"أدخل أرقاما فقط مفصول بينها بفواصل.\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"تحقق من أن هذه القيمة هي %(limit_value)s (إنها %(show_value)s).\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"تحقق من أن تكون هذه القيمة أقل من %(limit_value)s أو مساوية لها.\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"تحقق من أن تكون هذه القيمة أكثر من %(limit_value)s أو مساوية لها.\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"تحقق من أن هذه القيمة تحتوي %(limit_value)d أحرف على الأقل (عدد أحرفها \"\n\"%(show_value)d).\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"تحقق من أن هذه القيمة مكونة من %(limit_value)d أحرف كحد أقصى (عدد أحرفها \"\n\"الآن %(show_value)d).\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"%(field_name)s يجب أن يكون مُميّزاً مع %(date_field)s %(lookup)s.\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"و\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"النموذج %(model_name)s والحقل %(field_label)s موجود مسبقاً.\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"القيمة %r ليست خياراً صالحاً.\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"لا يمكن تعيين null كقيمة لهذا الحقل.\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"لا يمكن ترك هذا الحقل فارغاً.\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"حقل نوع: %(field_type)s\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"عدد صحيح\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"ثنائي (إما True أو False)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"سلسلة نص (%(max_length)s كحد أقصى)\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"أرقام صحيحة مفصولة بفواصل\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"التاريخ (دون الوقت)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"التاريخ (مع الوقت)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"رقم عشري\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"عنوان بريد إلكتروني\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"مسار الملف\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"رقم فاصلة عائمة\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"عدد صحيح كبير (8 بايت)\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"عنوان IP\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"ثنائي (إما True أو False أو None)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"نص\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"وقت\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"رابط\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"النموذج %(model)s ذو الحقل الرئيسي %(pk)r غير موجود.\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"الحقل المرتبط (تم تحديد النوع وفقاً للحقل المرتبط)\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"علاقة واحد إلى واحد\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"علاقة متعدد إلى متعدد\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"\"\n\"اضغط زر التحكم \\\"Control\\\", أو \\\"Command\\\" على أجهزة Mac لاختيار أكثر من \"\n\"واحد.\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"هذا الحقل مطلوب.\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"أدخل رقما صحيحا.\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"أدخل رقماً.\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"تحقق من أن تدخل %s أرقام لا أكثر.\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"تحقق من أن تدخل %s خانات عشرية لا أكثر.\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"تحقق من أن تدخل %s أرقام قبل الفاصل العشري لا أكثر.\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"أدخل تاريخاً صحيحاً.\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"أدخل وقتاً صحيحاً.\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"أدخل تاريخاً/وقتاً صحيحاً.\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"لم يتم ارسال ملف، الرجاء التأكد من نوع ترميز الاستمارة.\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"لم يتم إرسال اي ملف.\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"الملف الذي قمت بإرساله فارغ.\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\"تحقق من أن اسم الملف يتكون بحد أقصى من %(max)d أحرف (يتكون حالياً من \"\n\"%(length)d).\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"رجاءً أرسل ملف أو صح علامة صح عند مربع اختيار \\\"فارغ\\\"، وليس كلاهما.\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\"قم برفع صورة صحيحة، الملف الذي قمت برفعه إما أنه ليس ملفا لصورة أو أنه ملف \"\n\"معطوب.\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"أدخل رابطاً صحيحاً.\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"انتق خياراً صحيحاً. %(value)s ليس أحد الخيارات المتاحة.\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"أدخل قائمة من القيم.\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"الترتيب\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"احذف\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"رجاء صحّح بيانات %(field)s المتكررة.\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"رجاء صحّح بيانات %(field)s المتكررة والتي يجب أن تكون مُميّزة.\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\"رجاء صحّح بيانات %(field_name)s المتكررة والتي يجب أن تكون مُميّزة لـ%(lookup)s \"\n\"في %(date_field)s.\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"رجاءً صحّح القيم المُكرّرة أدناه.\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"حقل foreign key المحدد لا يطابق الحقل الرئيسي له.\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"انتق خياراً صحيحاً. اختيارك ليس أحد الخيارات المتاحة.\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"انتق خياراً صحيحاً. %s ليس أحد الخيارات المتاحة.\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"القيمة \\\"%s\\\" هي صحيحة للحقل المرجعي.\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"حالياً\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"عدّل\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"تفريغ\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"مجهول\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"نعم\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"لا\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"نعم,لا,ربما\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"%(size)d بايت\"\nmsgstr[1] \"بايت واحد\"\nmsgstr[2] \"بايتان\"\nmsgstr[3] \"%(size)d بايتان\"\nmsgstr[4] \"%(size)d بايت\"\nmsgstr[5] \"%(size)d بايت\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s ك.ب\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s م.ب\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s ج.ب\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s ت.ب\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s ب.ب\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"م\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"ص\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"م\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"ص\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"منتصف الليل\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"ظهراً\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"الاثنين\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"الثلاثاء\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"الأربعاء\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"الخميس\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"الجمعة\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"السبت\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"الأحد\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"إثنين\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"ثلاثاء\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"أربعاء\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"خميس\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"جمعة\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"سبت\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"أحد\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"يناير\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"فبراير\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"مارس\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"إبريل\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"مايو\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"يونيو\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"يوليو\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"أغسطس\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"سبتمبر\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"أكتوبر\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"نوفمبر\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"ديسمبر\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"يناير\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"فبراير\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"مارس\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"إبريل\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"مايو\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"يونيو\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"يوليو\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"أغسطس\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"سبتمبر\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"أكتوبر\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"نوفمبر\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"ديسمبر\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"يناير\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"فبراير\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"مارس\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"إبريل\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"مايو\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"يونيو\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"يوليو\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"أغسطس\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"سبتمبر\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"أكتوبر\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"نوفمبر\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"ديسمبر\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"يناير\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"فبراير\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"مارس\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"أبريل\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"مايو\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"يونيو\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"يوليو\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"أغسطس\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"سبتمبر\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"أكتوبر\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"نوفمبر\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"ديسمبر\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"أو\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \"، \"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"سنة\"\nmsgstr[1] \"سنة\"\nmsgstr[2] \"سنتان\"\nmsgstr[3] \"سنوات\"\nmsgstr[4] \"سنة\"\nmsgstr[5] \"سنة\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"شهر\"\nmsgstr[1] \"شهر\"\nmsgstr[2] \"شهران\"\nmsgstr[3] \"أشهر\"\nmsgstr[4] \"شهر\"\nmsgstr[5] \"شهر\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"أسبوع\"\nmsgstr[1] \"أسبوع\"\nmsgstr[2] \"أسبوعان\"\nmsgstr[3] \"أسابيع\"\nmsgstr[4] \"أسبوع\"\nmsgstr[5] \"أسبوع\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"يوم\"\nmsgstr[1] \"يوم\"\nmsgstr[2] \"يومان\"\nmsgstr[3] \"أيام\"\nmsgstr[4] \"يوم\"\nmsgstr[5] \"يوم\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"ساعة\"\nmsgstr[1] \"ساعة\"\nmsgstr[2] \"ساعتان\"\nmsgstr[3] \"ساعات\"\nmsgstr[4] \"ساعة\"\nmsgstr[5] \"ساعة\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"دقيقة\"\nmsgstr[1] \"دقيقة\"\nmsgstr[2] \"دقيقتان\"\nmsgstr[3] \"دقائق\"\nmsgstr[4] \"دقيقة\"\nmsgstr[5] \"دقيقة\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"دقائق\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \"، %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"لم تحدد السنة\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"لم تحدد الشهر\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"لم تحدد اليوم\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"لم تحدد الأسبوع\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"لا يوجد %(verbose_name_plural)s\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\"التاريخ بالمستقبل %(verbose_name_plural)s غير متوفر لأن قيمة %(class_name)s.\"\n\"allow_future هي False.\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"نسق تاريخ غير صحيح '%(datestr)s' محدد بالشكل '%(format)s'\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"لم يعثر على أي %(verbose_name)s مطابقة لهذا الإستعلام\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"الصفحة ليست 'الأخيرة'، ولا يمكن تحويل القيمة إلى رقم صحيح.\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"قائمة فارغة و '%(class_name)s.allow_empty' قيمته False.\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/ar/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/conf/locale/ar/formats.py",
    "content": "# -*- encoding: utf-8 -*-\n# This file is distributed under the same license as the Django package.\n#\nfrom __future__ import unicode_literals\n\n# The *_FORMAT strings use the Django date format syntax,\n# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\nDATE_FORMAT = 'j F، Y'\nTIME_FORMAT = 'g:i:s A'\n# DATETIME_FORMAT = \nYEAR_MONTH_FORMAT = 'F Y'\nMONTH_DAY_FORMAT = 'j F'\nSHORT_DATE_FORMAT = 'd‏/m‏/Y'\n# SHORT_DATETIME_FORMAT = \n# FIRST_DAY_OF_WEEK = \n\n# The *_INPUT_FORMATS strings use the Python strftime format syntax,\n# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior\n# DATE_INPUT_FORMATS = \n# TIME_INPUT_FORMATS = \n# DATETIME_INPUT_FORMATS = \nDECIMAL_SEPARATOR = ','\nTHOUSAND_SEPARATOR = '.'\n# NUMBER_GROUPING = \n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/az/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Ali Ismayilov <ali@ismailov.info>, 2011-2013.\n# Metin Amiroff <amiroff@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-03-05 06:00+0000\\n\"\n\"Last-Translator: Ali Ismayilov <ali@ismailov.info>\\n\"\n\"Language-Team: Azerbaijani (http://www.transifex.com/projects/p/django/\"\n\"language/az/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: az\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"Afrikaansca\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"Ərəbcə\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"Azərbaycanca\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"Bolqarca\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"Belarusca\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"Benqalca\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"Bretonca\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"Bosniyaca\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"Katalanca\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"Çexcə\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"Uelscə\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"Danimarkaca\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"Almanca\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"Yunanca\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"İngiliscə\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"Britaniya İngiliscəsi\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"Esperanto\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"İspanca\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"Argentina İspancası\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"Meksika İspancası\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"Nikaraqua İspancası\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"Venesuela İspancası\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"Estonca\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"Baskca\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"Farsca\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"Fincə\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"Fransızca\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"Friscə\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"İrlandca\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"Qallik dili\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"İbranicə\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"Hindcə\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"Xorvatca\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"Macarca\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"İnterlinqua\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"İndonezcə\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"İslandca\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"İtalyanca\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"Yaponca\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"Gürcücə\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"Qazax\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"Kxmercə\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"Kannada dili\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"Koreyca\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"Lüksemburqca\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"Litva dili\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"Latviya dili\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"Makedonca\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"Malayamca\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"Monqolca\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"Bokmal Norveçcəsi\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"Nepal\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"Flamandca\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"Nynorsk Norveçcəsi\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"Pancabicə\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"Polyakca\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"Portuqalca\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"Braziliya Portuqalcası\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"Rumınca\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"Rusca\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"Slovakca\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"Slovencə\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"Albanca\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"Serbcə\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"Serbcə Latın\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"İsveçcə\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"Suahili\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"Tamilcə\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"Teluqu dili\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"Tayca\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"Türkcə\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"Tatar\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"Udmurtca\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"Ukraynaca\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"Urduca\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"Vyetnamca\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"Sadələşdirilmiş Çincə\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"Ənənəvi Çincə\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"Düzgün qiymət daxil edin.\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"Düzgün e-poçt ünvanını daxil edin.\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"\"\n\"Hərflərdən, rəqəmlərdən, alt-xətlərdən və ya defislərdən ibarət düzgün slaq \"\n\"daxil edin.\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"Düzgün IPv4 ünvanı daxil edin.\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"Düzgün IPv6 ünvanını daxil edin.\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"Düzgün IPv4 və ya IPv6 ünvanını daxil edin.\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"Vergüllə ayırmaqla yalnız rəqəmlər daxil edin.\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"Əmin edin ki, bu qiymət %(limit_value)s-dir (bu %(show_value)s-dir).\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"\"\n\"Bu qiymətin %(limit_value)s-ya bərabər və ya ondan kiçik olduğunu yoxlayın.\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"\"\n\"Bu qiymətin %(limit_value)s-ya bərabər və ya ondan böyük olduğunu yoxlayın.\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Bu qiymətin ən azı %(limit_value)d simvoldan ibarət olduğunu yoxlayın (burda \"\n\"%(show_value)d simvol var).\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Bu qiymətin ən çoxu %(limit_value)d simvoldan ibarət olduğunu yoxlayın \"\n\"(burda %(show_value)d simvol var).\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"%(field_name)s %(date_field)s %(lookup)s tarixinə görə özəl olmalıdır.\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"və\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"%(model_name)s bu %(field_label)s sahə ilə artıq mövcuddur.\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"%r qiyməti düzgün seçim deyil.\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"Bu sahə boş qala bilməz.\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"Bu sahə ağ qala bilməz.\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Sahənin tipi: %(field_type)s\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"Tam ədəd\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"'%s' tam ədəd olmalıdır.\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"'%s' Doğru (True) və ya Yalan (False) olmalıdır.\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Bul (ya Doğru, ya Yalan)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"Sətir (%(max_length)s simvola kimi)\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"Vergüllə ayrılmış tam ədədlər\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"'%s' səhv tarix formatındadır. O, İİİİ-AA-GG formatında olmalıdır.\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"'%s' düzgün formatdadır (İİİİ-AA-GG), lakin tarix özü səhvdir.\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"Tarix (saatsız)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\"'%s' səhv formatdadır. O, İİİİ-AA-GG SS:DD[:ss[.mmmmmm]][ZQ] formatında \"\n\"olmalıdır.\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\"'%s' düzgün formatdadır (İİİİ-AA-GG SS:DD[:ss[.mmmmmm]][ZQ]), lakin tarix/\"\n\"vaxt səhvdir.\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"Tarix (vaxt ilə)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"'%s' onluq kəsr ədədi olmalıdır.\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"Rasional ədəd\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"E-poçt\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"Faylın ünvanı\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"'%s' rasional ədəd olmalıdır.\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"Sürüşən vergüllü ədəd\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"Böyük (8 bayt) tam ədəd\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"IPv4 ünvanı\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"IP ünvan\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"'%s' ya Heç nə (None), ya Doğru (True), ya da Yalan (False) olmalıdır.\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"Bul (Ya Doğru, ya Yalan, ya da Heç nə)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"Müsbət tam ədəd\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"Müsbət tam kiçik ədəd\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"Əzmə (%(max_length)s simvola kimi)\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"Kiçik tam ədəd\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"Mətn\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"'%s' səhv formatdadır. O, SS:DD[:ss[.mmmmmm]] formatında olmalıdır.\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"'%s' düzgün formatdadır (SS:DD[:ss[.mmmmmm]]), lakin vaxt səhvdir.\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"Vaxt\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"Fayl\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"Şəkil\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"%(pk)r pk ilə %(model)s modeli mövcud deyil.\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"Xarici açar (bağlı olduğu sahəyə uyğun tipi alır)\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"Birin-birə münasibət\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"Çoxun-çoxa münasibət\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"\"\n\"Birdən artıq seçim etmək istəyirsinizsə, \\\"Control\\\" düyməsini basılı \"\n\"saxlayın, Mac istifadəçiləri üçün \\\"Command\\\"\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"Bu sahə vacibdir.\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"Tam ədəd daxil edin.\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"Ədəd daxil edin.\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"Ədəddəki rəqəmlərin sayını %s-i aşmadığına əmin olun.\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"Kəsr hissəsindəki rəqəmlərin sayının %s-i aşmadığına əmin olun.\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"Tam hissəsindəki rəqəmlərin sayının %s-i aşmadığına əmin olun.\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"Düzgün tarix daxil edin.\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"Düzgün vaxt daxil edin.\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"Düzgün tarix/vaxt daxil edin.\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"Fayl göndərilməyib. Vərəqənin (\\\"form\\\") şifrələmə tipini yoxlayın.\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"Fayl göndərilməyib.\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"Göndərilən fayl boşdur.\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\"Faylın adının %(max)d simvoldan az olduğunu yoxlayın (indi %(length)d \"\n\"simvoldan ibarətdir).\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"\"\n\"Ya fayl göndərin, ya da xanaya quş qoymayın, hər ikisini də birdən etməyin.\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\"Düzgün şəkil göndərin. Göndərdiyiniz fayl ya şəkil deyil, ya da şəkildə \"\n\"problem var.\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"Düzgün URL daxil edin.\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"Düzgün seçim edin. %(value)s seçimlər arasında yoxdur.\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"Qiymətlərin siyahısını daxil edin.\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"Sırala\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"Sil\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"%(field)s sahəsinə görə təkrarlanan məlumatlara düzəliş edin.\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"\"\n\"%(field)s sahəsinə görə təkrarlanan məlumatlara düzəliş edin, onların hamısı \"\n\"fərqli olmalıdır.\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\"%(field_name)s sahəsinə görə təkrarlanan məlumatlara düzəliş edin, onlar \"\n\"%(date_field)s %(lookup)s-a görə fərqli olmalıdır.\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"Aşağıda təkrarlanan qiymətlərə düzəliş edin.\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"Xarici açar ana obyektin əsas açarı ilə üst-üstə düşmür.\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"Düzgün seçim edin. Bu seçim mümkün deyil.\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"Düzgün seçim edin. %s mümkün seçim deyil.\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"\\\"%s\\\" əsas açar olmaq üçün düzgün qiymət deyil.\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\"%(datetime)s %(current_timezone)s zaman qurşağında ifadə oluna bilmir; ya \"\n\"duallıq, ya da yanlışlıq var.\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"Hal-hazırda\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"Dəyiş\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"Təmizlə\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"Məlum deyil\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"Hə\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"Yox\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"hə, yox, bəlkə\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"%(size)d bayt\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s KB\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s MB\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s GB\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s TB\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s PB\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"p.m.\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"a.m.\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"PM\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"AM\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"gecə yarısı\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"günorta\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"Bazar ertəsi\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"Çərşənbə axşamı\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"Çərşənbə\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"Cümə axşamı\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"Cümə\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"Şənbə\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"Bazar\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"B.e\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"Ç.a\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"Çrş\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"C.a\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"Cüm\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"Şnb\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"Bzr\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"Yanvar\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"Fevral\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"Mart\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"Aprel\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"May\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"İyun\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"İyul\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"Avqust\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"Sentyabr\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"Oktyabr\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"Noyabr\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"Dekabr\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"ynv\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"fvr\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"mar\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"apr\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"may\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"iyn\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"iyl\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"avq\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"snt\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"okt\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"noy\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"dek\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"Yan.\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"Fev.\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"Mart\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"Aprel\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"May\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"İyun\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"İyul\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"Avq.\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"Sent.\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"Okt.\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"Noy.\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"Dek.\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"Yanvar\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"Fevral\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"Mart\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"Aprel\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"May\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"İyun\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"İyul\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"Avqust\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"Sentyabr\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"Oktyabr\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"Noyabr\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"Dekabr\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"%(truncated_text)s...\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"və ya\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \", \"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"\"\n\"one: il\\n\"\n\"other: il\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"\"\n\"one: ay\\n\"\n\"other: ay\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"\"\n\"one: həftə\\n\"\n\"other: həftə\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"\"\n\"one: gün\\n\"\n\"other: gün\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"\"\n\"one: saat\\n\"\n\"other: saat\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"\"\n\"one: dəqiqə\\n\"\n\"other: dəqiqə\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"dəqiqə\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \", %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"Ünvan indekslərinə icazə verilmir.\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\\\"%(path)s\\\" mövcud deyil\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"%(directory)s-nin indeksi\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"İl göstərilməyib\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"Ay göstərilməyib\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"Gün göstərilməyib\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"Həftə göstərilməyib\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"%(verbose_name_plural)s seçmək mümkün deyil\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\"Gələcək %(verbose_name_plural)s seçmək mümkün deyil, çünki %(class_name)s.\"\n\"allow_future Yalan kimi qeyd olunub.\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"\\\"%(format)s\\\" formatına görə \\\"%(datestr)s\\\" tarixi düzgün deyil\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"Sorğuya uyğun %(verbose_name)s tapılmadı\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"Səhifə nə \\\"axırıncı\\\"dır, nə də tam ədədə çevirmək mümkündür.\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"Qeyri-düzgün səhifə (%(page_number)s): %(message)s\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"Siyahı boşdur və '%(class_name)s.allow_empty' Yalan kimi qeyd olunub.\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/be/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:47+0000\\n\"\n\"Last-Translator: Павал Клёк <yehekim@gmail.com>\\n\"\n\"Language-Team: Belarusian (http://www.transifex.com/projects/p/django/\"\n\"language/be/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: be\\n\"\n\"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"Арабская\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"Азэрбайджанская\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"Баўгарская\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"Бэнґальская\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"Басьнійская\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"Каталёнская\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"Чэская\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"Валійская\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"Дацкая\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"Нямецкая\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"Грэцкая\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"Анґельская\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"Анґельская (Брытанская)\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"Эспэранта\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"Гішпанская\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"Гішпанская (Арґентына)\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"Гішпанская (Мэксыка)\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"Гішпанская (Нікараґуа)\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"Эстонская\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"Басконская\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"Фарсі\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"Фінская\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"Француская\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"Фрызкая\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"Ірляндзкая\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"Ґальская\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"Габрэйская\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"Гінды\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"Харвацкая\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"Вугорская\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"Інданэзійская\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"Ісьляндзкая\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"Італьянская\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"Японская\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"Грузінская\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"Казаская\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"Кхмерская\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"Каннада\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"Карэйская\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"Літоўская\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"Латыская\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"Македонская\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"Малаялам\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"Манґольская\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"Нарвэская букмол\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"Нэпальская\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"Галяндзкая\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"Нарвэская нюнорск\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"Панджабі\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"Польская\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"Партуґальская\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"Партуґальская (Бразылія)\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"Румынская\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"Расейская\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"Славацкая\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"Славенская\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"Альбанская\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"Сэрбская\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"Сэрбская (лацінка)\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"Швэдзкая\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"Суахілі\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"Тамільская\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"Тэлуґу\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"Тайская\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"Турэцкая\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"Татарская\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"Украінская\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"Урду\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"Віетнамская\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"Кітайская (спрошчаная)\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"Кітайская (звычайная)\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"Пазначце правільнае значэньне.\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"Бірка можа зьмяшчаць літары, лічбы, знакі падкрэсьліваньня ды злучкі.\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"Пазначце чынны адрас IPv4.\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"Пазначце чынны адрас IPv6.\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"Пазначце чынны адрас IPv4 або IPv6.\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"Набярыце лічбы, падзеленыя коскамі.\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"\"\n\"Упэўніцеся, што гэтае значэньне — %(limit_value)s (зараз яно — \"\n\"%(show_value)s).\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"Значэньне мусіць быць меншым або роўным %(limit_value)s.\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"Значэньне мусіць быць большым або роўным %(limit_value)s.\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Мусіць зьмяшчаць прынамсі %(limit_value)d знакаў (зараз — %(show_value)d).\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Мусіць зьмяшчаць ня болей за %(limit_value)d знакаў (зараз — %(show_value)d).\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"\"\n\"Значэньне «%(field_name)s мусіць быць непаўторным для «%(lookup)s» у полі \"\n\"«%(date_field)s».\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"і\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"%(model_name)s з такім %(field_label)s ужо існуе.\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"Нельга абіраць %r.\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"Поле ня можа мець значэньне «null».\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"Трэба запоўніць поле.\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Палі віду: %(field_type)s\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"Цэлы лік\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"«%s» мусіць быць цэлым лікам.\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"«%s» мусіць быць мець значэньне «сапраўдна» або «не сапраўдна».\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Ляґічнае («сапраўдна» або «не сапраўдна»)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"Радок (ня болей за %(max_length)s)\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"Цэлыя лікі, падзеленыя коскаю\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"Няправільна запісалі «%s». Дата запісваецца ў выглядзе ГГГГ-ММ-ДД.\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"Дату «%s» запісалі ў належным выглядзе, але гэта несапраўдная дата.\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"Дата (бяз часу)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\"Няправільна запісалі «%s». Трэба запісваць у выглядзе «ГГГГ-ММ-ДД ГГ:ХХ[:сс[.\"\n\"мммммм]][ЧА], дзе ЧА — часавы абсяг.\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\"«%s» запісалі ў належным выглядзе («ГГГГ-ММ-ДД ГГ:ХХ[:сс[.мммммм]][ЧА]»), \"\n\"але гэта несапраўдная дата або час.\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"Дата (разам з часам)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"«%s» мусіць быць дзесятковым лікам.\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"Дзесятковы лік\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"Адрас эл. пошты\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"Шлях да файла\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"«%s» мусіць быць лікам з коскаю.\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"Лік зь пераноснай коскаю\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"Вялікі (8 байтаў) цэлы\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"Адрас IPv4\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"Адрас IP\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"\"\n\"«%s» мусіць быць мець значэньне «сапраўдна», «не сапраўдна» або «нічога».\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"Ляґічнае («сапраўдна», «не сапраўдна» ці «нічога»)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"Дадатны цэлы лік\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"Дадатны малы цэлы лік\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"Бірка (ня болей за %(max_length)s)\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"Малы цэлы лік\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"Тэкст\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"\"\n\"Няправільна запісалі «%s». Трэба запісваць у выглядзе «ГГ:ХХ[:сс[.мммммм]].\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\"«%s» запісалі ў належным выглядзе («ГГ:ХХ[:сс[.мммммм]]»), але гэта \"\n\"несапраўдны час.\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"Час\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"Сеціўная спасылка\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"Файл\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"Выява\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"Мадэль %(model)s з ключом %(pk)r не існуе.\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"Вонкавы ключ (від вызначаецца паводле зьвязанага поля)\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"Сувязь «адзін да аднаго»\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"Сувязь «некалькі да некалькіх»\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"Каб абраць некалькі пунктаў, трымайце «Ctrl» (на «Маках» — «Command»).\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"Поле трэба запоўніць.\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"Набярыце ўвесь лік.\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"Набярыце лік.\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"Упэўніцеся, што набралі ня болей за %s лічбаў.\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"Упэўніцеся, што набралі ня болей за %s лічбаў пасьля коскі.\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"Упэўніцеся, што набралі ня болей за %s лічбаў да коскі.\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"Пазначце чынную дату.\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"Пазначце чынны час.\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"Пазначце чынныя час і дату.\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"Файл не даслалі. Зірніце кадоўку блянку.\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"Файл не даслалі.\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"Дасланы файл — парожні.\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\"У назьве файла мусіць быць ня болей за %(max)d знакаў (зараз — %(length)d).\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"\"\n\"Трэба або даслаць файл, або абраць «Ачысьціць», але нельга рабіць гэта \"\n\"адначасова.\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\"Запампаваць чынны малюнак. Запампавалі або не выяву, або пашкоджаную выяву.\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"Пазначце чынную спасылку.\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"Абярыце дазволенае. %(value)s няма ў даступных значэньнях.\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"Упішыце сьпіс значэньняў.\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"Парадак\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"Выдаліць\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"У полі «%(field)s» выпраўце зьвесткі, якія паўтараюцца.\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"Выпраўце зьвесткі ў полі «%(field)s»: нельга, каб яны паўтараліся.\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\"Выпраўце зьвесткі ў полі «%(field_name)s»: нельга каб зьвесткі ў \"\n\"«%(date_field)s» для «%(lookup)s» паўтараліся.\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"Выпраўце зьвесткі, якія паўтараюцца (гл. ніжэй).\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"Вонкавы ключ не супадае з бацькоўскім першасным ключом.\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"Абярыце дазволенае. Абранага няма ў даступных значэньнях.\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"Абярыце дазволенае. %s няма ў даступных значэньнях.\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"«%s» ня ёсьць чынным значэньне першаснага ключа.\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\"У часавым абсягу «%(current_timezone)s» нельга зразумець дату %(datetime)s: \"\n\"яна можа быць неадназначнаю або яе можа не існаваць.\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"Зараз\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"Зьмяніць\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"Ачысьціць\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"Невядома\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"Так\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"Не\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"так,не,магчыма\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"%(size)d байт\"\nmsgstr[1] \"%(size)d байты\"\nmsgstr[2] \"%(size)d байтаў\"\nmsgstr[3] \"%(size)d байтаў\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s КБ\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s МБ\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s ҐБ\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s ТБ\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s ПБ\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"папаўдні\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"папоўначы\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"папаўдні\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"папоўначы\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"поўнач\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"поўдзень\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"Панядзелак\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"Аўторак\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"Серада\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"Чацьвер\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"Пятніца\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"Субота\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"Нядзеля\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"Пн\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"Аў\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"Ср\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"Чц\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"Пт\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"Сб\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"Нд\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"студзеня\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"лютага\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"сакавік\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"красавіка\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"траўня\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"чэрвеня\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"ліпеня\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"жніўня\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"верасьня\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"кастрычніка\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"лістапада\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"сьнежня\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"сту\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"лют\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"сак\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"кра\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"тра\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"чэр\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"ліп\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"жні\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"вер\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"кас\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"ліс\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"сьн\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"Сту.\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"Люты\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"сакавік\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"красавіка\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"траўня\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"чэрвеня\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"ліпеня\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"Жні.\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"Вер.\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"Кас.\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"Ліс.\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"Сьн.\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"студзеня\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"лютага\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"сакавік\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"красавіка\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"траўня\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"чэрвеня\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"ліпеня\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"жніўня\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"верасьня\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"кастрычніка\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"лістапада\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"сьнежня\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"%(truncated_text)s…\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"або\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \", \"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"год\"\nmsgstr[1] \"гады\"\nmsgstr[2] \"гадоў\"\nmsgstr[3] \"гадоў\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"месяц\"\nmsgstr[1] \"месяцы\"\nmsgstr[2] \"месяцаў\"\nmsgstr[3] \"месяцаў\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"тыдзень\"\nmsgstr[1] \"тыдні\"\nmsgstr[2] \"тыдняў\"\nmsgstr[3] \"тыдняў\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"дзень\"\nmsgstr[1] \"дні\"\nmsgstr[2] \"дзён\"\nmsgstr[3] \"дзён\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"гадзіна\"\nmsgstr[1] \"гадзіны\"\nmsgstr[2] \"гадзін\"\nmsgstr[3] \"гадзін\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"хвіліна\"\nmsgstr[1] \"хвіліны\"\nmsgstr[2] \"хвілінаў\"\nmsgstr[3] \"хвілінаў\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"хв.\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \", %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"Не дазваляецца глядзець сьпіс файлаў каталёґа.\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"Шлях «%(path)s» не існуе.\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"Файлы каталёґа «%(directory)s»\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"Не пазначылі год\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"Не пазначылі месяц\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"Не пазначылі дзень\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"Не пазначылі тыдзень\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"Няма доступу да %(verbose_name_plural)s\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\"Няма доступу да %(verbose_name_plural)s, якія будуць, бо «%(class_name)s.\"\n\"allow_future» мае значэньне «не сапраўдна».\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"Радок даты «%(datestr)s» не адпавядае выгляду «%(format)s»\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"Па запыце не знайшлі ніводнага %(verbose_name)s\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"\"\n\"Нумар бачыны ня мае значэньня «last» і яго нельга ператварыць у цэлы лік.\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"\"\n\"Сьпіс парожні, але «%(class_name)s.allow_empty» мае значэньне «не \"\n\"сапраўдна», што забараняе паказваць парожнія сьпісы.\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/bg/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <aatanasov@gmail.com>, 2012.\n# Boris Chervenkov <office@sentido.bg>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Todor Lubenov <tlubenov@gmail.com>, 2011-2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:47+0000\\n\"\n\"Last-Translator: zaxl <aatanasov@gmail.com>\\n\"\n\"Language-Team: Bulgarian (http://www.transifex.com/projects/p/django/\"\n\"language/bg/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: bg\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"арабски език\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"Азербайджански език\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"български език\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"бенгалски език\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"босненски език\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"каталунски език\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"чешки език\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"уелски език\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"датски език\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"немски език\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"гръцки език\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"английски език\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"британски английски\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"Есперанто\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"испански език\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"кастилски\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"Мексикански испански\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"никарагуански испански\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"естонски език\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"баски\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"персийски език\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"финландски език\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"френски език\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"фризийски език\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"ирландски език\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"галицейски език\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"иврит\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"хинди\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"хърватски език\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"унгарски език\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"индонезийски език\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"исландски език\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"италиански език\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"японски език\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"грузински език\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"Казахски\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"кхмерски език\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"каннада\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"корейски език\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"литовски език\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"латвийски език\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"македонски език\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"малаялам\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"монголски език\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"норвежки букмол\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"Непалски\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"холандски\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"норвежки съвременен език\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"пенджаби\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"полски език\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"португалски език\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"бразилски португалски\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"румънски език\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"руски език\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"словашки език\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"словенски език\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"албански език\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"сръбски език\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"сръбски с латински букви\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"шведски език\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"Суахили\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"тамил\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"телугу\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"тайландски език\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"турски език\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"Татарски\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"украински език\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"Урду\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"виетнамски език\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"китайски език\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"традиционен китайски\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"Въведете валидна стойност.  \"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"Въведете валиден имейл адрес.\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"\"\n\"Въведете валиден 'слъг', състоящ се от букви, цифри, тирета или долни тирета.\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"Въведете валиден IPv4 адрес.\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"Въведете валиден IPv6 адрес.\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"Въведете валиден IPv4 или IPv6 адрес.\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"Въведете само еднозначни числа, разделени със запетая.  \"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"Уверете се, че тази стойност е %(limit_value)s (тя е %(show_value)s).\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"Уверете се, че тази стойност е по-малка или равна на %(limit_value)s .\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"\"\n\"Уверете се, че тази стойност е по-голяма или равна на %(limit_value)s .\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Уверете се, че тази стойност има най-малко %(limit_value)d знаци (има \"\n\"%(show_value)d).\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Уверете се, че тази стойност има най-много %(limit_value)d  знаци (има \"\n\"%(show_value)d).\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"%(field_name)s трябва да са уникални за %(date_field)s %(lookup)s.\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"и\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"%(model_name)s с този %(field_label)s вече съществува.\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"Стойността %r не е валиден избор.\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"Това поле не може да има празна стойност.\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"Това поле не може да е празно.\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Поле от тип: %(field_type)s\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"Цяло число\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"Стойността на '%s' трябва да е цяло число.\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"Стойността на '%s' трябва да е \\\"True\\\" или \\\"False\\\".\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Boolean (True или False)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"Символен низ (до %(max_length)s символа)\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"Цели числа, разделени с запетая\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"\"\n\"Стойността на '%s' е в невалиден формат на дата. Форматът трябва да бъде \"\n\"ГГГГ-ММ-ДД\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"\"\n\"Стойността на '%s' е в правилен формат (ГГГГ-ММ-ДД), но датата е невалидна.\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"Дата (без час)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\"Стойността на '%s' е в невалиден формат. Трябва да бъде във формат ГГГГ-ММ-\"\n\"ДД ЧЧ:ММ[:сс[.uuuuuu]][TZ] (където u означава милисекунда, а TZ -  часова \"\n\"зона)\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\"Стойността на  '%s' формат ( ГГГГ-ММ-ДД ЧЧ:ММ[:сс[.uuuuuu]][TZ] (където u \"\n\"означава милисекунда, а TZ -  часова зона), но датата/часът са невалидни\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"Дата (и час)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"Стойността на '%s' трябва да е десетично число.\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"Десетична дроб\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"Email адрес\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"Път към файл\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"Стойността на '%s' трябва да бъде десетично число с плаваща запетая.\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"Число с плаваща запетая\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"Голямо (8 байта) цяло число\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"IPv4 адрес\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"IP адрес\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"Стойността на '%s' трябва да е \\\"Nonw\\\", \\\"True\\\" или \\\"False\\\"\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"Boolean (Възможните стойности са True, False или None)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"Положително цяло число\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"Положително 2 байта цяло число\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"Slug (до %(max_length)s )\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"2 байта цяло число\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"Текст\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"\"\n\"Стойността на '%s' е в невалиден формат.Форматът трябва да бъде ЧЧ:ММ [:сс[.\"\n\"uuuuuu]] (където u означава милисекунда)\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\"Стойността на '%s' е в правилния формат (ЧЧ:ММ [:сс[.uuuuuu]] (където u \"\n\"означава милисекунда), но часът е невалиден.\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"Време\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"URL адрес\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"Файл\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"Изображение\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"Моделът %(model)s с pk %(pk)r не съществува.\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"Външен ключ (тип, определен от свързаното поле)\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"словенски език\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"Много-към-много връзка\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"\"\n\"Задръжте натиснат клавиша \\\"Control\\\" (или \\\"Command\\\" на Mac), за да \"\n\"направите повече от един избор.  \"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"Това поле е задължително.\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"Въведете цяло число.  \"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"Въведете число.\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"Уверете се, че не сте въвели повече от %s цифри.\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"Уверете се, че няма повече от %s знака след запетаята.\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"Уверете се, че няма повече от %s цифри преди десетичната запетая.\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"Въведете валидна дата.  \"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"Въведете валиден час.\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"Въведете валидна дата/час.  \"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"Не е получен файл.  Проверете типа кодиране на формата.  \"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"Няма изпратен файл.\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"Каченият файл е празен.  \"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\"Уверете се, че файловото име е най-много %(max)d знаци (има %(length)d).\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"\"\n\"Моля, или пратете файл или маркирайте полето за изчистване, но не и двете.\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\"Качете валидно изображение. Файлът, който сте качили или не е изображение, \"\n\"или е повреден.  \"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"Въведете валиден URL адрес.\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"Направете валиден избор. %(value)s не е един от възможните избори.\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"Въведете списък от стойности\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"Ред\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"Изтрий\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"Моля, коригирайте дублираните данни за %(field)s.\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"\"\n\"Моля, коригирайте дублираните данни за %(field)s, които трябва да са \"\n\"уникални.\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\"Моля, коригирайте дублиранитe данни за %(field_name)s , които трябва да са \"\n\"уникални за %(lookup)s в %(date_field)s .\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"Моля, коригирайте повтарящите се стойности по-долу.\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"Невалидна избрана стойност.\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"Направете валиден избор. Този не е един от възможните избори.  \"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"Направете валиден избор.  %s не е един от възможните избори.  \"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"\\\"%s\\\" не е валидна стойност за първичен ключ.\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\"%(datetime)s не може да бъде разчетено в  %(current_timezone)s; може да е \"\n\"двусмислен или да не съществува\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"Сега\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"Промени\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"Изчисти\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"Неизвестно\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"Да\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"Не\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"да, не, може би\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"%(size)d, байт\"\nmsgstr[1] \"%(size)d, байта\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s KB\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s MB\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s GB\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s ТБ\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s PB\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"след обяд\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"преди обяд\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"след обяд\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"преди обяд\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"полунощ\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"обяд\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"понеделник\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"вторник\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"сряда\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"четвъртък\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"петък\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"събота\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"неделя\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"Пон\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"Вт\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"Ср\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"Чет\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"Пет\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"Съб\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"Нед\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"Януари\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"Февруари\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"Март\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"Април\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"Май\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"Юни\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"Юли\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"Август\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"Септември\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"Октомври\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"Ноември\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"Декември\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"ян\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"фев\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"мар\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"апр\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"май\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"юни\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"юли\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"авг\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"сеп\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"окт\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"ноев\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"дек\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"Ян.\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"Фев.\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"Март\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"Април\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"Май\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"Юни\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"Юли\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"Авг.\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"Септ.\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"Окт.\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"Ноев.\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"Дек.\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"Януари\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"Февруари\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"Март\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"Април\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"Май\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"Юни\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"Юли\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"Август\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"Септември\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"след обяд\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"Ноември\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"Декември\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"%(truncated_text)s...\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"или\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \",\"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"година\"\nmsgstr[1] \"години\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"месец\"\nmsgstr[1] \"месеци\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"седмица\"\nmsgstr[1] \"седмици\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"ден\"\nmsgstr[1] \"дни\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"час\"\nmsgstr[1] \"часове\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"минута\"\nmsgstr[1] \"минути\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"минути\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \", %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"Тук не е позволено индексиране на директория.\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\\\"%(path)s\\\" не съществува\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"Индекс %(directory)s\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"Не е посочена година\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"Не е посочен месец\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"ноев\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"Не е посочена седмица\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"Няма достъпни %(verbose_name_plural)s\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\"Бъдещo %(verbose_name_plural)s е достъпно, тъй като %(class_name)s.\"\n\"allow_future е False.\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"Невалидна дата '%(datestr)s' посочен формат '%(format)s'\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"Няма %(verbose_name)s , съвпадащи със заявката\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"Страницата не е 'last' нито може да се преобразува в int.\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"Празен списък и '%(class_name)s.allow_empty' не е валидно.\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/bg/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/conf/locale/bg/formats.py",
    "content": "# -*- encoding: utf-8 -*-\n# This file is distributed under the same license as the Django package.\n#\nfrom __future__ import unicode_literals\n\n# The *_FORMAT strings use the Django date format syntax,\n# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\nDATE_FORMAT = 'd F Y'\nTIME_FORMAT = 'H:i:s'\n# DATETIME_FORMAT = \n# YEAR_MONTH_FORMAT = \nMONTH_DAY_FORMAT = 'j F'\nSHORT_DATE_FORMAT = 'd.m.Y'\n# SHORT_DATETIME_FORMAT = \n# FIRST_DAY_OF_WEEK = \n\n# The *_INPUT_FORMATS strings use the Python strftime format syntax,\n# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior\n# DATE_INPUT_FORMATS = \n# TIME_INPUT_FORMATS = \n# DATETIME_INPUT_FORMATS = \nDECIMAL_SEPARATOR = ','\nTHOUSAND_SEPARATOR = ' ' # Non-breaking space\n# NUMBER_GROUPING = \n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/bn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#  <nasim.haque@gmail.com>, 2013.\n#   <rafi.tahmid@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-02-08 15:20+0000\\n\"\n\"Last-Translator: nsmgr8 <nasim.haque@gmail.com>\\n\"\n\"Language-Team: Bengali (http://www.transifex.com/projects/p/django/language/\"\n\"bn/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: bn\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"আফ্রিকার অন্যতম সরকারি ভাষা\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"আরবী\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"আজারবাইজানি\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"বুলগেরিয়ান\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"বেলারুশীয়\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"বাংলা\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"ব্রেটন\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"বসনিয়ান\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"ক্যাটালান\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"চেক\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"ওয়েল্স\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"ড্যানিশ\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"জার্মান\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"গ্রিক\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"ইংলিশ\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"বৃটিশ ইংলিশ\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"আন্তর্জাতিক ভাষা\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"স্প্যানিশ\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"আর্জেন্টিনিয়ান স্প্যানিশ\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"মেক্সিকান স্প্যানিশ\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"নিকারাগুয়ান স্প্যানিশ\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"ভেনেজুয়েলার স্প্যানিশ\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"এস্তোনিয়ান\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"বাস্ক\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"ফারসি\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"ফিনিশ\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"ফ্রেঞ্চ\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"ফ্রিজ্ল্যানডের ভাষা\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"আইরিশ\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"গ্যালিসিয়ান\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"হিব্রু\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"হিন্দী\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"ক্রোয়েশিয়ান\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"হাঙ্গেরিয়ান\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"ইন্দোনেশিয়ান\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"আইসল্যান্ডিক\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"ইটালিয়ান\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"জাপানিজ\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"জর্জিয়ান\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"কাজাখ\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"খমার\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"কান্নাড়া\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"কোরিয়ান\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"লিথুয়ানিয়ান\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"লাটভিয়ান\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"ম্যাসাডোনিয়ান\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"মালায়ালম\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"মঙ্গোলিয়ান\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"নরওয়েজীয় বোকমাল\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"নেপালি\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"ডাচ\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"নরওয়েজীয়ান নিনর্স্ক\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"পাঞ্জাবী\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"পোলিশ\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"পর্তুগীজ\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"ব্রাজিলিয়ান পর্তুগীজ\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"রোমানিয়ান\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"রাশান\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"স্লোভাক\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"স্লোভেনিয়ান\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"আলবেনীয়ান\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"সার্বিয়ান\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"সার্বিয়ান ল্যাটিন\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"সুইডিশ\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"সোয়াহিলি\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"তামিল\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"তেলেগু\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"থাই\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"তুর্কি\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"তাতারদেশীয়\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"ইউক্রেনিয়ান\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"উর্দু\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"ভিয়েতনামিজ\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"সরলীকৃত চাইনীজ\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"প্রচলিত চাইনীজ\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"একটি বৈধ মান দিন।\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"একটি বৈধ ইমেইল ঠিকানা লিখুন.\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"\"\n\"বৈধ ’slug' প্রবেশ করান যাতে শুধুমাত্র ইংরেজী বর্ণ, অঙ্ক, আন্ডারস্কোর অথবা হাইফেন \"\n\"রয়েছে।\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"একটি বৈধ IPv4 ঠিকানা দিন।\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"একটি বৈধ IPv6 ঠিকানা টাইপ করুন।\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"একটি বৈধ IPv4 অথবা IPv6 ঠিকানা টাইপ করুন।\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"শুধুমাত্র কমা দিয়ে সংখ্যা দিন।\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"এবং\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"%(field_label)s সহ %(model_name)s আরেকটি রয়েছে।\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"এর মান null হতে পারবে না।\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"এই ফিল্ডের মান ফাঁকা হতে পারে না\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"ফিল্ডের ধরণ: %(field_type)s\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"ইন্টিজার\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"'%s' এর মান অবশ্যই ইন্টিজার হতে হবে।\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"'%s' এর মান শুধুমাত্র True অথবা False হতে হবে।\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"বুলিয়ান (হয় True অথবা False)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"স্ট্রিং (সর্বোচ্চ %(max_length)s)\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"কমা দিয়ে আলাদা করা ইন্টিজার\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"তারিখ (সময় বাদে)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"তারিখ (সময় সহ)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"'%s' এর মান অবশ্যই দশমিক সংখ্যা হতে হবে।\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"দশমিক সংখ্যা\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"ইমেইল ঠিকানা\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"ফাইল পথ\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"'%s' এর মান অবশ্যই ফ্লোটিং পয়েন্ট নম্বর হতে হবে।\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"ফ্লোটিং পয়েন্ট সংখ্যা\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"বিগ (৮ বাইট) ইন্টিজার\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"IPv4 ঠিকানা\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"আইপি ঠিকানা\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"বুলিয়ান (হয়  True, False অথবা None)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"পজিটিভ ইন্টিজার\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"স্মল ইন্টিজার\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"টেক্সট\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"সময়\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"ইউআরএল (URL)\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"ফাইল\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"ইমেজ\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"ওয়ান-টু-ওয়ান রিলেশানশিপ\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"ম্যানি-টু-ম্যানি রিলেশানশিপ\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"একাধিক বাছাই করতে \\\"কন্ট্রোল\\\", অথবা ম্যাকে \\\"কমান্ড\\\", চেপে ধরুন।\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"এটি আবশ্যক।\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"একটি পূর্ণসংখ্যা দিন\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"একটি সংখ্যা প্রবেশ করান।\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"নিশ্চিত করুন যে, এখানে %s সংখ্যক দশমিক অঙ্ক রয়েছে।\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"নিশ্চিত করুন যে, এখানে %s -এর বেশি দশমিক সংখ্যা নেই।\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"নিশ্চিত করুন যে, এখানে %s -এর বেশি দশমিক সংখ্যা নেই।\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"বৈধ তারিখ দিন।\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"বৈধ সময় দিন।\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"বৈধ তারিখ/সময় দিন।\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"কোন ফাইল দেয়া হয়নি। ফর্মের এনকোডিং ঠিক আছে কিনা দেখুন।\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"কোন ফাইল দেয়া হয়নি।\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"ফাইলটি খালি।\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\"সঠিক ছবি আপলোড করুন। যে ফাইলটি আপলোড করা হয়েছে তা হয় ছবি নয় অথবা নষ্ট হয়ে \"\n\"যাওয়া ছবি।\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"বৈধ URL দিন\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"%(value)s বৈধ নয়। অনুগ্রহ করে আরেকটি সিলেক্ট করুন।\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"কয়েকটি মানের তালিকা দিন।\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"ক্রম\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"মুছুন\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"এটি বৈধ নয়। অনুগ্রহ করে আরেকটি সিলেক্ট করুন।\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"%s বৈধ নয়। অনুগ্রহ করে আরেকটি সিলেক্ট করুন।\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"\\\"%s\\\" প্রাইমারি কি এর জন্য কোন বৈধ মান নয়\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"এই মুহুর্তে\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"পরিবর্তন\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"পরিষ্কার করুন\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"অজানা\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"হ্যাঁ\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"না\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"হ্যাঁ,না,হয়তো\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"%(size)d বাইট\"\nmsgstr[1] \"%(size)d বাইট\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s কিলোবাইট\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s মেগাবাইট\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s গিগাবাইট\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s টেরাবাইট\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s পেটাবাইট\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"অপরাহ্ন\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"পূর্বাহ্ন\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"অপরাহ্ন\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"পূর্বাহ্ন\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"মধ্যরাত\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"দুপুর\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"সোমবার\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"মঙ্গলবার\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"বুধবার\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"বৃহস্পতিবার\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"শুক্রবার\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"শনিবার\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"রবিবার\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"সোম\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"মঙ্গল\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"বুধ\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"বৃহঃ\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"শুক্র\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"শনি\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"রবি\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"জানুয়ারি\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"ফেব্রুয়ারি\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"মার্চ\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"এপ্রিল\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"মে\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"জুন\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"জুলাই\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"আগস্ট\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"সেপ্টেম্বর\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"অক্টোবর\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"নভেম্বর\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"ডিসেম্বর\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"জান.\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"ফেব.\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"মার্চ\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"এপ্রি.\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"মে\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"জুন\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"জুল.\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"আগ.\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"সেপ্টে.\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"অক্টো.\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"নভে.\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"ডিসে.\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"জানু.\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"ফেব্রু.\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"মার্চ\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"এপ্রিল\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"মে\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"জুন\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"জুলাই\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"আগ.\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"সেপ্ট.\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"অক্টো.\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"নভে.\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"ডিসে.\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"জানুয়ারি\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"ফেব্রুয়ারি\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"মার্চ\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"এপ্রিল\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"মে\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"জুন\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"জুলাই\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"আগস্ট\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"সেপ্টেম্বর\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"অক্টোবর\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"নভেম্বর\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"ডিসেম্বর\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"অথবা\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \"\"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"বছর\"\nmsgstr[1] \"বছর\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"মাস\"\nmsgstr[1] \"মাস\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"সপ্তাহ\"\nmsgstr[1] \"সপ্তাহ\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"দিন\"\nmsgstr[1] \"দিন\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"ঘন্টা\"\nmsgstr[1] \"ঘন্টা\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"মিনিট\"\nmsgstr[1] \"মিনিট\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"মিনিট\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \", %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"ডিরেক্টরি ইনডেক্স অনুমোদিত নয়\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"কোন বছর উল্লেখ করা হয়নি\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"কোন মাস উল্লেখ করা হয়নি\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"কোন দিন উল্লেখ করা হয়নি\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"কোন সপ্তাহ উল্লেখ করা হয়নি\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/bn/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/conf/locale/bn/formats.py",
    "content": "# -*- encoding: utf-8 -*-\n# This file is distributed under the same license as the Django package.\n#\n\n# The *_FORMAT strings use the Django date format syntax,\n# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\nDATE_FORMAT = 'j F, Y'\nTIME_FORMAT = 'g:i:s A'\n# DATETIME_FORMAT = \nYEAR_MONTH_FORMAT = 'F Y'\nMONTH_DAY_FORMAT = 'j F'\nSHORT_DATE_FORMAT = 'j M, Y'\n# SHORT_DATETIME_FORMAT = \n# FIRST_DAY_OF_WEEK = \n\n# The *_INPUT_FORMATS strings use the Python strftime format syntax,\n# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior\n# DATE_INPUT_FORMATS = \n# TIME_INPUT_FORMATS = \n# DATETIME_INPUT_FORMATS = \nDECIMAL_SEPARATOR = '.'\nTHOUSAND_SEPARATOR = ','\n# NUMBER_GROUPING = \n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/br/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Fulup  <fulup.jakez@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:47+0000\\n\"\n\"Last-Translator: Fulup <fulup.jakez@gmail.com>\\n\"\n\"Language-Team: Breton (http://www.transifex.com/projects/p/django/language/\"\n\"br/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: br\\n\"\n\"Plural-Forms: nplurals=2; plural=(n > 1);\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"Arabeg\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"Azeri\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"Bulgareg\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"Bengaleg\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"Bosneg\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"Katalaneg\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"Tchekeg\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"Kembraeg\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"Daneg\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"Alamaneg\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"Gresianeg\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"Saozneg\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"Saozneg Breizh-Veur\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"Esperanteg\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"Spagnoleg\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"Spagnoleg Arc'hantina\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"Spagnoleg Mec'hiko\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"Spagnoleg Nicaragua\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"Estoneg\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"Euskareg\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"Perseg\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"Finneg\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"Galleg\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"Frizeg\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"Iwerzhoneg\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"Galizeg\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"Hebraeg\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"Hindi\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"Kroateg\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"Hungareg\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"Indonezeg\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"Islandeg\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"Italianeg\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"Japaneg\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"Jorjianeg\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"kazak\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"Khmer\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"Kannata\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"Koreaneg\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"Lituaneg\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"Latveg\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"Makedoneg\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"Malayalam\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"Mongoleg\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"Norvegeg Bokmal\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"nepaleg\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"Nederlandeg\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"Norvegeg Nynorsk\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"Punjabeg\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"Poloneg\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"Portugaleg\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"Portugaleg Brazil\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"Roumaneg\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"Rusianeg\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"Slovakeg\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"Sloveneg\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"Albaneg\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"Serbeg\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"Serbeg e lizherennoù latin\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"Svedeg\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"swahileg\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"Tamileg\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"Telougou\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"Thai\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"Turkeg\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"tatar\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"Ukraineg\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"Ourdou\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"Vietnameg\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"Sinaeg eeunaet\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"Sinaeg hengounel\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"Merkit un talvoud reizh\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"\"\n\"N'hall bezañ er vaezienn-mañ nemet lizherennoù, niveroù, tiredoù izel _ ha \"\n\"barrennigoù-stagañ.\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"Merkit ur chomlec'h IPv4 reizh.\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"Merkit ur chomlec'h IPv6 reizh.\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"Merkit ur chomlec'h IPv4 pe IPv6 reizh.\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"Merkañ hepken sifroù dispartiet dre skejoù.\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"\"\n\"Bezit sur ez eo an talvoud-mañ %(limit_value)s (evit ar mare ez eo \"\n\"%(show_value)s).\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"Gwiriit mat emañ an talvoud-mañ a-is pe par da %(limit_value)s.\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"Gwiriit mat emañ an talvoud-mañ a-us pe par da %(limit_value)s.\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Gwiriit mat ez eus da nebeutañ %(limit_value)d arouezenn en talvoud-mañ \"\n\"(evit ar mare ez eus %(show_value)d).\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Gwiriit mat ez eus d'ar muiañ %(limit_value)d arouezenn en talvoud-mañ (evit \"\n\"ar mare ez eus %(show_value)d).\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"\"\n\"Ret eo da %(field_name)s bezañ e-unan evit al lodenn %(date_field)s \"\n\"%(lookup)s.\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"ha\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"Bez' ez eus c'hoazh eus ur %(model_name)s gant ar %(field_label)s-mañ.\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"N'eo ket an talvoud %r un dibab reizh.\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"N'hall ket ar vaezienn chom goullo\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"N'hall ket ar vaezienn chom goullo\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Seurt maezienn : %(field_type)s\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"Anterin\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"Ret eo d'an talvoud '%s' bezañ un niver anterin.\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"Ret eo d'an talvoud '%s' bezañ Gwir pe Gaou.\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Boulean (gwir pe gaou)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"neudennad arouezennoù (betek %(max_length)s)\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"Niveroù anterin dispartiet dre ur skej\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"\"\n\"Direizh eo furmad deiziad an talvoud '%s'. Ret eo dezhañ klotañ gant BBBB-MM-\"\n\"DD.\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"\"\n\"Reizh eo furmad deiziad an talvoud '%s'  (BBBB-MM-DD) nemet eo faos an \"\n\"deiziad.\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"Deizad (hep eur)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\"Direizh eo furmad deiziad an talvoud '%s'. Ret eo dezhañ klotañ gant ar \"\n\"furmad BBBB-MM-DD HH:MM[:ss[.uuuuuu]][TZ] .\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\"Reizh eo furmad deiziad an talvoud '%s' (BBBB-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) \"\n\"nemet eo faos an eur/deiziad.\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"Deizad (gant an eur)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"Ret eo d'an talvoud '%s' bezañ un niver dekvedennel.\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"Niver dekvedennel\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"Chomlec'h postel\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"Treug war-du ar restr\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"Ret eo d'an talvoud '%s' bezañ ur skej nij.\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"Niver gant skej nij\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"Anterin bras (8 okted)\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"Chomlec'h IPv4\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"Chomlec'h IP\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"Ret eo d'an talvoud '%s' bezañ Netra, Gwir pe Gaou.\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"Boulean (gwir pe gaou pe netra)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"Niver anterin pozitivel\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"Niver anterin bihan pozitivel\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"Slug (betek %(max_length)s arouez.)\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"Niver anterin bihan\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"Testenn\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"\"\n\"Direizh eo furmad an talvoud '%s'. Ret eo dezhañ klotañ gant ar furmad HH:MM\"\n\"[:ss[.uuuuuu]].\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\"Reizh eo furmad deiziad an talvoud '%s' (HH:MM[:ss[.uuuuuu]]) nemet eo faos \"\n\"an eur.\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"Eur\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"Restr\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"Skeudenn\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"N'eus ket eus ar patrom %(model)s gant an alc'hwez-mamm pk %(pk)r.\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"Alc'hwez estren (seurt termenet dre ar vaezienn liammet)\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"Darempred unan-ouzh-unan\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"Darempred lies-ouzh-lies\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"Dalc'hit da bouezañ \\\"Ktrl\\\" pe \\\"Urzhiad\\\" (stokell Aval) war ur Mac.\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"Rekis eo leuniañ ar vaezienn.\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"Merkit un niver anterin.\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"Merkit un niver.\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"Gwiriit mat n'eus ket ouzhpenn %s sifr en holl.\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"Gwiriit mat n'eus ket ouzhpenn %s sifr goude ar skej.\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"Gwiriit mat n'eus ket ouzhpenn %s sifr a-raok ar skej.\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"Merkit un deiziad reizh\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"Merkit un eur reizh\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"Merkit un eur/deiziad reizh\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"N'eus ket kaset restr ebet. Gwiriit ar seurt enkodañ evit ar restr\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"N'eus bet kaset restr ebet.\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"Goullo eo ar restr kaset.\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\"Gwiriit mat n'eus ket ouzhpenn %(max)d arouezenn da anv ar restr (bez' he \"\n\"deus %(length)d).\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"Kasit ur restr pe askit al log riñsañ; an eil pe egile\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\"Enpozhiit ur skeudenn reizh. Ar seurt bet enporzhiet ganeoc'h a oa foeltret \"\n\"pe ne oa ket ur skeudenn\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"Merkit un URL reizh\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"Dizuit un dibab reizh. %(value)s n'emañ ket e-touez an dibaboù posupl.\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"Merkit ur roll talvoudoù\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"Urzh\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"Diverkañ\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"Reizhit ar roadennoù e doubl e %(field)s.\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"\"\n\"Reizhit ar roadennoù e doubl e %(field)s, na zle bezañ enni nemet talvoudoù \"\n\"dzho o-unan.\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\"Reizhit ar roadennoù e doubl e %(field_name)s a rank bezañ ennañ talvodoù en \"\n\"o-unan evit lodenn %(lookup)s %(date_field)s.\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"Reizhañ ar roadennoù e doubl zo a-is\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"\"\n\"Ne glot ket an alc'hwez estren enlinenn gant alc'hwez-mamm an urzhiataer \"\n\"galloudel kar\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"Diuzit un dibab reizh. N'emañ ket an dibab-mañ e-touez ar re bosupl.\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"Diuzit un dibab reizh. N'emañ ket %s e-touez ar re bosupl.\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"N'eo ket \\\"%s\\\" un talvoud reizh evit un alc'hwez-mamm.\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\"N'eo ket bete komprenet an talvoud %(datetime)s er werzhid eur \"\n\"%(current_timezone)s; pe eo amjestr pe n'eus ket anezhañ.\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"Evit ar mare\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"Kemmañ\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"Riñsañ\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"Dianav\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"Ya\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"Ket\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"ya, ket, marteze\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"%(size)d okted\"\nmsgstr[1] \"%(size)d okted\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s KB\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s MB\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s GB\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s TB\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s PB\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"g.m.\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"mintin\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"G.M.\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"Mintin\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"hanternoz\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"kreisteiz\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"Lun\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"Meurzh\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"Merc'her\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"Yaou\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"Gwener\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"Sadorn\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"Sul\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"Lun\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"Meu\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"Mer\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"Yao\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"Gwe\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"Sad\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"Sul\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"Genver\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"C'hwevrer\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"Meurzh\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"Ebrel\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"Mae\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"Mezheven\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"Gouere\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"Eost\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"Gwengolo\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"Here\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"Du\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"Kerzu\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"Gen\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"C'hwe\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"Meu\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"Ebr\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"Mae\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"Mez\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"Gou\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"Eos\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"Gwe\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"Her\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"Du\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"Kzu\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"Gen.\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"C'hwe.\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"Meu.\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"Ebr.\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"Mae\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"Mez.\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"Gou.\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"Eos.\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"Gwe.\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"Her.\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"Du\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"Kzu\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"Genver\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"C'hwevrer\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"Meurzh\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"Ebrel\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"Mae\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"Mezheven\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"Gouere\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"Eost\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"Gwengolo\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"Here\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"Du\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"Kerzu\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"%(truncated_text)s...\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"pe\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \",\"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"bloaz\"\nmsgstr[1] \"bloaz\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"miz\"\nmsgstr[1] \"miz\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"sizhun\"\nmsgstr[1] \"sizhun\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"deiz\"\nmsgstr[1] \"deiz\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"eur\"\nmsgstr[1] \"eur\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"munut\"\nmsgstr[1] \"munut\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"munut\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \", %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"N'haller ket diskwel endalc'had ar c'havlec'h-mañ.\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"N'eus ket eus \\\"%(path)s\\\"\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"Meneger %(directory)s\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"N'eus bet resisaet bloavezh ebet\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"N'eus bet resisaet miz ebet\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"N'eus bet resisaet deiz ebet\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"N'eus bet resisaet sizhun ebet\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"N'eus %(verbose_name_plural)s ebet da gaout.\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\"En dazont ne vo ket a %(verbose_name_plural)s rak faos eo %(class_name)s.\"\n\"allow_future.\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"\"\n\"Direizh eo ar furmad '%(format)s' evit an neudennad deiziad '%(datestr)s'\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"\"\n\"N'eus bet kavet traezenn %(verbose_name)s ebet o klotaén gant ar goulenn\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"\"\n\"N'eo ket 'last' ar bajenn na n'hall ket bezañ amdroet en un niver anterin.\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"Roll goullo ha faos eo '%(class_name)s.allow_empty'.\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/bs/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Filip Dupanović <filip.dupanovic@gmail.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:47+0000\\n\"\n\"Last-Translator: Filip Dupanović <filip.dupanovic@gmail.com>\\n\"\n\"Language-Team: Bosnian (http://www.transifex.com/projects/p/django/language/\"\n\"bs/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: bs\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"arapski\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"Azerbejdžanski\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"bugarski\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"bengalski\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"bosanski\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"katalonski\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"češki\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"velški\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"danski\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"njemački\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"grčki\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"engleski\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"Britanski engleski\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"španski\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"Argentinski španski\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"Meksički španski\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"Nikuaraganski španski\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"estonski\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"baskijski\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"persijski\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"finski\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"francuski\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"frišanski\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"irski\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"galski\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"hebrejski\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"hindi\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"hrvatski\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"mađarski\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"Indonežanski\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"islandski\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"italijanski\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"japanski\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"gruzijski\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"kambođanski\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"kanada\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"korejski\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"litvanski\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"latvijski\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"makedonski\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"Malajalamski\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"Mongolski\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"Norveški književni\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"holandski\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"Norveški novi\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"Pandžabi\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"poljski\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"portugalski\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"brazilski portugalski\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"rumunski\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"ruski\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"slovački\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"slovenački\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"albanski\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"srpski\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"srpski latinski\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"švedski\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"tamilski\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"telugu\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"tajlandski\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"turski\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"ukrajinski\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"Urdu\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"vijetnamežanski\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"novokineski\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"starokineski\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"Unesite ispravnu vrijednost.\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"\"\n\"Unesite ispravan „slug“, koji se sastoji od slova, brojki, donjih crta ili \"\n\"crtica.\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"Unesite ispravnu IPv4 adresu.\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"Unesite samo brojke razdvojene zapetama.\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"\"\n\"Pobrinite se da je ova vrijednost %(limit_value)s (trenutno je \"\n\"%(show_value)s).\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"Ova vrijednost mora da bude manja ili jednaka %(limit_value)s.\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"Ova vrijednost mora biti veća ili jednaka %(limit_value)s.\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Pobrinite se da ova vrijednost ima najmanje %(limit_value)d znamenki \"\n\"(trenutno ima %(show_value)d).\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Pobrinite se da ova vrijednost ima najviše %(limit_value)d znamenki (ima \"\n\"%(show_value)d).\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"%(field_name)s mora da bude jedinstven za %(date_field)s %(lookup)s.\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"i\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"%(model_name)s sa ovom vrijednošću %(field_label)s već postoji.\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"Vrijednost %r nije dozvoljen izbor.\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"Ovo polje ne može ostati prazno.\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"Ovo polje ne može biti prazno.\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Polje tipa: %(field_type)s\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"Cijeo broj\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Bulova vrijednost (True ili False)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"String (najviše %(max_length)s znakova)\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"Cijeli brojevi razdvojeni zapetama\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"Datum (bez vremena)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"Datum (sa vremenom)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"Decimalni broj\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"Email adresa\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"Putanja fajla\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"Broj sa pokrenom zapetom\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"Big (8 bajtni) integer\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"IP adresa\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"Bulova vrijednost (True, False ili None)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"Tekst\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"Vrijeme\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"Model %(model)s sa pk %(pk)r ne postoji.\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"Strani ključ (tip određen povezanim poljem)\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"Jedan-na-jedan odnos\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"Više-na-više odsnos\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"\"\n\"Držite „Control“, ili „Command“ na Mac-u da biste obilježili više od jedne \"\n\"stavke.\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"Ovo polje se mora popuniti.\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"Unesite cijeo broj.\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"Unesite broj.\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"Ne smije biti ukupno više od %s cifara. Provjerite.\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"Ne smije biti ukupno više od %s decimalnih mijesta. Provjerite.\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"Ne smije biti ukupno više od %s cifara prije zapete. Provjerite.\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"Unesite ispravan datum.\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"Unesite ispravno vrijeme\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"Unesite ispravan datum/vrijeme.\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"Fajl nije prebačen. Provjerite tip enkodiranja formulara.\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"Fajl nije prebačen.\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"Prebačen fajl je prazan.\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\"Naziv fajla mora da sadrži bar %(max)d slovnih mijesta (trenutno ima \"\n\"%(length)d).\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\"Prebacite ispravan fajl. Fajl koji je prebačen ili nije slika, ili je \"\n\"oštećen.\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"Unesite ispravan URL.\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"\"\n\"%(value)s nije među ponuđenim vrijednostima. Odaberite jednu od ponuđenih.\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"Unesite listu vrijednosti.\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"Redoslijed\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"Obriši\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"Ispravite dupli sadržaj za polja: %(field)s.\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"\"\n\"Ispravite dupli sadržaj za polja: %(field)s, koji mora da bude jedinstven.\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\"Ispravite dupli sadržaj za polja: %(field_name)s, koji mora da bude \"\n\"jedinstven za %(lookup)s u %(date_field)s.\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"Ispravite duple vrijednosti dole.\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"Strani ključ se nije poklopio sa instancom roditeljskog ključa.\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"\"\n\"Odabrana vrijednost nije među ponuđenima. Odaberite jednu od ponuđenih.\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"%s nije među ponuđenim vrijednostima. Odaberite jednu od ponuđenih.\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"„%s“ nije ispravna vrijednost za primarni ključ.\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"Trenutno\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"Izmjeni\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"Očisti\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"Nepoznato\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"Da\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"Ne\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"da,ne,možda\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s KB\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s MB\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s GB\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s TB\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s PB\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"po p.\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"prije p.\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"PM\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"AM\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"ponoć\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"podne\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"ponedjeljak\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"utorak\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"srijeda\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"četvrtak\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"petak\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"subota\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"nedjelja\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"pon.\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"uto.\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"sri.\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"čet.\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"pet.\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"sub.\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"ned.\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"januar\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"februar\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"mart\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"april\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"maj\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"juni\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"juli\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"august\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"septembar\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"oktobar\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"novembar\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"decembar\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"jan.\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"feb.\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"mar.\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"apr.\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"maj.\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"jun.\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"jul.\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"aug.\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"sep.\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"okt.\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"nov.\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"dec.\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"Jan.\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"Feb.\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"Mart\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"April\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"Maj\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"Juni\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"juli\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"august\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"septembar\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"oktobar\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"novembar\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"decembar\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"januar\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"februar\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"mart\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"april\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"maj\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"juni\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"juli\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"august\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"septembar\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"oktobar\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"Novembar\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"decembar\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"ili\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \", \"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"minuta\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \", %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"Godina nije naznačena\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"Mjesec nije naznačen\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"Dan nije naznačen\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"Sedmica nije naznačena\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/bs/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/conf/locale/bs/formats.py",
    "content": "# -*- encoding: utf-8 -*-\n# This file is distributed under the same license as the Django package.\n#\n\n# The *_FORMAT strings use the Django date format syntax,\n# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\nDATE_FORMAT = 'j. N Y.'\nTIME_FORMAT = 'G:i'\nDATETIME_FORMAT = 'j. N. Y. G:i T'\nYEAR_MONTH_FORMAT = 'F Y.'\nMONTH_DAY_FORMAT = 'j. F'\nSHORT_DATE_FORMAT = 'Y M j'\n# SHORT_DATETIME_FORMAT = \n# FIRST_DAY_OF_WEEK = \n\n# The *_INPUT_FORMATS strings use the Python strftime format syntax,\n# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior\n# DATE_INPUT_FORMATS = \n# TIME_INPUT_FORMATS = \n# DATETIME_INPUT_FORMATS = \nDECIMAL_SEPARATOR = ','\nTHOUSAND_SEPARATOR = '.'\n# NUMBER_GROUPING = \n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/ca/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Antoni Aloy <aaloy@apsl.net>, 2012.\n# Antoni Aloy <antoni.aloy@trespams.com>, 2012.\n# Carles Barrobés <carles@barrobes.com>, 2011, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:47+0000\\n\"\n\"Last-Translator: Antoni Aloy <aaloy@apsl.net>\\n\"\n\"Language-Team: Catalan (http://www.transifex.com/projects/p/django/language/\"\n\"ca/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ca\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"Afrikans\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"àrab\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"azerbaijanès\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"búlgar\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"Bielorús\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"bengalí\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"Bretó\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"bosnià\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"català\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"txec\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"gal·lès\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"danès\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"alemany\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"grec\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"anglès\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"anglès britànic\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"Esperanto\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"espanyol\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"castellà d'Argentina\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"espanyol de Mèxic\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"castellà de Nicaragua\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"Espanyol de Veneçuela\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"estonià\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"euskera\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"persa\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"finlandès\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"francès\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"frisi\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"irlandès\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"gallec\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"hebreu\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"hindi\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"croat\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"hongarès\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"Interlingua\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"indonesi\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"islandès\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"italià\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"japonès\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"georgià\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"Kazakh\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"khmer\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"kannarès\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"coreà\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"Luxemburguès\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"lituà\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"letó\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"macedoni\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"malaiàlam \"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"mongol\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"noruec bokmal\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"Nepalí\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"holandès\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"noruec nynorsk\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"panjabi\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"polonès\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"portuguès\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"portuguès de brasil\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"romanès\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"rus\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"eslovac\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"eslovè\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"albanès\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"serbi\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"serbi llatí\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"suec\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"Swahili\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"tàmil\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"telugu\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"tailandès\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"turc\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"Tatar\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"Udmurt\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"ucraïnès\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"urdu\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"vietnamita\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"xinès simplificat\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"xinès tradicional\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"Introduïu un valor vàlid.\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"Introdueix una adreça de correu electrònic vàlida\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"\"\n\"Introduïu un 'slug' vàlid, consistent en lletres, números, guions o guions \"\n\"baixos.\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"Introduïu una adreça IPv4 vàlida.\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"Entreu una adreça IPv6 vàlida.\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"Entreu una adreça IPv4 o IPv6 vàlida.\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"Introduïu només dígits separats per comes.\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"Assegureu-vos que el valor sigui %(limit_value)s (és %(show_value)s).\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"\"\n\"Assegureu-vos que aquest valor sigui menor o igual que %(limit_value)s.\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"\"\n\"Assegureu-vos que aquest valor sigui més gran o igual que %(limit_value)s.\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Assegureu-vos que el valor tingui com a mínim %(limit_value)d caràcters (en \"\n\"té %(show_value)d).\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Assegureu-vos que el valor tingui com a màxim %(limit_value)d caràcters (en \"\n\"té %(show_value)d).\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"El camp %(field_name)s ha de ser únic per a %(lookup)s %(date_field)s.\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"i\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"Ja existeix %(model_name)s amb aquest %(field_label)s.\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"El valor %r no és una opció vàlida.\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"Aquest camp no pot ser nul.\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"Aquest camp no pot estar en blanc.\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Camp del tipus: %(field_type)s\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"Enter\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"El valor '%s' ha de ser un nombre enter.\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"El valor '%s' ha de ser True o False.\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Booleà (Cert o Fals)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"Cadena (de fins a %(max_length)s)\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"Enters separats per comes\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"\"\n\"El valor '%s' no té un format de data vàlid. Ha de tenir el format YYYY-MM-\"\n\"DD.\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"\"\n\"El valor '%s' té el format correcte (YYYY-MM-DD) però no és una data vàlida.\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"Data (sense hora)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\"El valor '%s' no té un format vàlid. Ha de tenir el format YYYY-MM-DD HH:MM[:\"\n\"ss[.uuuuuu]][TZ].\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\"El valor '%s' té el format correcte (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) \"\n\"però no és una data/hora vàlida.\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"Data (amb hora)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"El valor '%s' ha de ser un nombre decimal.\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"Número decimal\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"Adreça de correu electrònic\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"Ruta del fitxer\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"El valor '%s' ha de ser un número de coma flotant.\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"Número de coma flotant\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"Enter gran (8 bytes)\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"Adreça IPv4\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"Adreça IP\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"El valor '%s' ha de ser None, True o False.\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"Booleà (Cert, Fals o Cap ('None'))\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"Enter positiu\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"Enter petit positiu\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"Slug (fins a %(max_length)s)\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"Enter petit\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"Text\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"\"\n\"El valor '%s' no té un format vàlid. Ha de tenir el format HH:MM[:ss[.\"\n\"uuuuuu]].\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\"El valor '%s' té el format correcte (HH:MM[:ss[.uuuuuu]]) però no és una \"\n\"hora vàlida.\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"Hora\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"Arxiu\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"Imatge\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"No existeix el model %(model)s amb la clau primària %(pk)r.\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"Clau forana (tipus determinat pel camp relacionat)\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"Inter-relació un-a-un\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"Inter-relació molts-a-molts\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"\"\n\"Premeu la tecla \\\"Control\\\", o \\\"Command\\\" en un Mac, per seleccionar més \"\n\"d'un valor.\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"Aquest camp és obligatori.\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"Introduïu un número sencer.\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"Introduïu un número.\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"Assegureu-vos que no hi ha més de %s dígits en total.\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"Assegureu-vos que no hi ha més de %s decimals.\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"Assegureu-vos que no hi ha més de %s dígits decimals.\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"Introduïu una data vàlida.\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"Introduïu una hora vàlida.\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"Introduïu una data/hora vàlides.\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"\"\n\"No s'ha enviat cap fitxer. Comproveu el tipus de codificació del formulari.\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"No s'ha enviat cap fitxer.\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"El fitxer enviat està buit.\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\"Assegureu-vos que el valor té com a màxim %(max)d caràcters (en té \"\n\"%(length)d).\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"\"\n\"Si us plau, envieu un fitxer o marqueu la casella de selecció \\\"netejar\\\", \"\n\"no ambdós.\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\"Carregueu una imatge vàlida. El fitxer que heu carregat no era una imatge o \"\n\"estava corrupte.\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"Introduïu una URL vàlida.\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"Esculliu una opció vàlida. %(value)s no és una de les opcions vàlides.\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"Introduïu una llista de valors.\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"Ordre\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"Eliminar\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"Si us plau, corregiu la dada duplicada per a %(field)s.\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"\"\n\"Si us plau, corregiu la dada duplicada per a %(field)s, la qual ha de ser \"\n\"única.\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\"Si us plau, corregiu la dada duplicada per a %(field_name)s, la qual ha de \"\n\"ser única per a %(lookup)s en %(date_field)s.\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"Si us plau, corregiu els valors duplicats a sota.\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"\"\n\"La clau forana en línia no coincideix amb la clau primària de la instància \"\n\"mare.\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"\"\n\"Esculli una opció vàlida. Aquesta opció no és una de les opcions disponibles.\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"Escolliu una opció vàlida; %s no és una de les opcions vàlides.\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"\\\"%s\\\" no és un valor vàlid per a una clau primària.\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\"No s'ha pogut interpretar %(datetime)s a la zona horària \"\n\"%(current_timezone)s; potser és ambigua o no existeix.\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"Actualment\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"Modificar\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"Netejar\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"Desconegut\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"Sí\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"No\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"sí,no,potser\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"%(size)d byte\"\nmsgstr[1] \"%(size)d bytes\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s KB\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s MB\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s GB\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s TB\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s PB\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"p.m.\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"a.m.\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"PM\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"AM\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"mitjanit\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"migdia\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"Dilluns\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"Dimarts\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"Dimecres\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"Dijous\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"Divendres\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"Dissabte\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"Diumenge\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"dl.\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"dt.\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"dc.\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"dj.\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"dv.\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"ds.\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"dg.\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"gener\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"febrer\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"març\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"abril\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"maig\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"juny\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"juliol\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"agost\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"setembre\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"octubre\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"novembre\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"desembre\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"gen.\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"feb.\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"març\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"abr.\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"maig\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"juny\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"jul.\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"ago.\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"set.\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"oct.\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"nov.\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"des.\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"gen.\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"feb.\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"mar.\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"abr.\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"mai.\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"jun.\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"jul.\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"ago.\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"set.\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"oct.\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"nov.\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"des.\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"gener\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"febrer\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"març\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"abril\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"maig\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"juny\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"juliol\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"agost\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"setembre\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"octubre\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"novembre\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"desembre\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"%(truncated_text)s...\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"o\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \", \"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"any\"\nmsgstr[1] \"anys\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"mes\"\nmsgstr[1] \"mesos\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"setmana\"\nmsgstr[1] \"setmanes\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"dia\"\nmsgstr[1] \"dies\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"hora\"\nmsgstr[1] \"hores\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"minut\"\nmsgstr[1] \"minuts\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"minuts\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \", %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"No es permeten índexos de directori aquí\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\\\"%(path)s\\\" no existeix\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"Índex de %(directory)s\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"No s'ha especificat any\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"No s'ha especificat mes\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"No s'ha especificat dia\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"No s'ha especificat setmana\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"Cap %(verbose_name_plural)s disponible\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\"Futurs %(verbose_name_plural)s no disponibles perquè %(class_name)s.\"\n\"allow_future és Fals.\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"Cadena invàlida de dats '%(datestr)s' donat el format '%(format)s'\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"No s'ha trobat sap %(verbose_name)s que coincideixi amb la petició\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"La pàgina no és 'last', ni es pot convertir en un enter\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"Plana invàlida  (%(page_number)s): %(message)s\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"Llista buida i '%(class_name)s.allow_empty' és Fals.\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/ca/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/conf/locale/ca/formats.py",
    "content": "# -*- encoding: utf-8 -*-\n# This file is distributed under the same license as the Django package.\n#\n\n# The *_FORMAT strings use the Django date format syntax,\n# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\nDATE_FORMAT = r'j \\d\\e F \\d\\e Y'\nTIME_FORMAT = 'G:i:s'\nDATETIME_FORMAT = r'j \\d\\e F \\d\\e Y \\a \\l\\e\\s G:i'\nYEAR_MONTH_FORMAT = r'F \\d\\e\\l Y'\nMONTH_DAY_FORMAT = r'j \\d\\e F'\nSHORT_DATE_FORMAT = 'd/m/Y'\nSHORT_DATETIME_FORMAT = 'd/m/Y G:i'\nFIRST_DAY_OF_WEEK = 1 # Monday\n\n# The *_INPUT_FORMATS strings use the Python strftime format syntax,\n# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior\nDATE_INPUT_FORMATS = (\n    # '31/12/2009', '31/12/09'\n    '%d/%m/%Y', '%d/%m/%y'\n)\nDATETIME_INPUT_FORMATS = (\n    '%d/%m/%Y %H:%M:%S',\n    '%d/%m/%Y %H:%M',\n    '%d/%m/%y %H:%M:%S',\n    '%d/%m/%y %H:%M',\n)\nDECIMAL_SEPARATOR = ','\nTHOUSAND_SEPARATOR = '.'\nNUMBER_GROUPING = 3\n\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/cs/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Jan Papež <honyczek@centrum.cz>, 2012.\n# Jirka Vejrazka <Jirka.Vejrazka@gmail.com>, 2011.\n# Vlada Macek <macek@sandbox.cz>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:47+0000\\n\"\n\"Last-Translator: Vlada Macek <macek@sandbox.cz>\\n\"\n\"Language-Team: Czech (http://www.transifex.com/projects/p/django/language/\"\n\"cs/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: cs\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"afrikánsky\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"arabsky\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"Ázerbájdžánština\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"bulharsky\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"bělorusky\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"bengálsky\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"bretonsky\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"bosensky\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"katalánsky\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"česky\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"velšsky\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"dánsky\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"německy\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"řecky\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"anglicky\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"britskou angličtinou\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"esperantsky\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"španělsky\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"argentinskou španělštinou\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"Mexická španělština\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"Nikaragujskou španělštinou\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"venezuelskou španělštinou\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"estonsky\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"baskicky\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"persky\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"finsky\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"francouzsky\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"frísky\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"irsky\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"galicijsky\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"hebrejsky\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"hindsky\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"chorvatsky\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"maďarsky\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"interlingua\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"indonésky\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"islandsky\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"italsky\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"japonsky\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"gruzínsky\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"kazašsky\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"khmersky\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"kannadsky\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"korejsky\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"lucembursky\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"litevsky\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"lotyšsky\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"makedonsky\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"malajálamsky\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"mongolsky\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"norsky (Bokmål)\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"nepálsky\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"nizozemsky\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"norsky (Nynorsk)\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"paňdžábsky\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"polsky\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"portugalsky\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"brazilskou portugalštinou\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"rumunsky\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"rusky\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"slovensky\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"slovinsky\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"albánsky\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"srbsky\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"srbsky (latinkou)\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"švédsky\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"svahilsky\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"tamilsky\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"telužsky\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"thajsky\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"turecky\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"tatarsky\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"udmurtsky\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"ukrajinsky\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"Urdština\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"vietnamsky\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"čínsky (zjednodušeně)\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"čínsky (tradičně)\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"Vložte platnou hodnotu.\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"Zadejte platnou e-mailovou adresu.\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"\"\n\"Vložte platný identifikátor složený pouze z písmen, čísel, podtržítek a \"\n\"pomlček.\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"Vložte platnou adresu typu IPv4.\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"Zadejte platnou adresu typu IPv6.\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"Zadejte platnou adresu typu IPv4 nebo IPv6.\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"Vložte pouze číslice oddělené čárkami.\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"Hodnota musí být %(limit_value)s (nyní je %(show_value)s).\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"Hodnota musí být menší nebo rovna %(limit_value)s.\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"Hodnota musí být větší nebo rovna %(limit_value)s.\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Hodnota musí mít alespoň %(limit_value)d znaků, ale nyní jich má \"\n\"%(show_value)d.\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Hodnota smí mít nejvýše %(limit_value)d znaků, ale nyní jich má \"\n\"%(show_value)d.\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"\"\n\"Pole %(field_name)s musí být unikátní testem %(lookup)s pole %(date_field)s.\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"a\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"\"\n\"Položka %(model_name)s s touto hodnotou v poli %(field_label)s již existuje.\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"Hodnota %r není platnou volbou.\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"Pole nemůže být null.\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"Pole nemůže být prázdné.\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Pole typu: %(field_type)s\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"Celé číslo\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"Hodnota '%s' musí být celé číslo.\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"Hodnota '%s' musí být buď True nebo False.\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Pravdivost (buď Ano (True), nebo Ne (False))\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"Řetězec (max. %(max_length)s znaků)\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"Celá čísla oddělená čárkou\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"Hodnota '%s' není platné datum. Musí být ve tvaru RRRR-MM-DD.\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"\"\n\"Ačkoli hodnota '%s' je ve správném tvaru (RRRR-MM-DD), jde o neplatné datum.\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"Datum (bez času)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\"Hodnota '%s' je v neplatném tvaru, který má být RRRR-MM-DD HH:MM[:SS[.\"\n\"uuuuuu]][TZ].\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\"Ačkoli hodnota '%s' je ve správném tvaru (RRRR-MM-DD HH:MM[:SS[.uuuuuu]]\"\n\"[TZ]), jde o neplatné datum a čas.\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"Datum (s časem)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"Hodnota '%s' musí být desítkové číslo.\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"Desetinné číslo\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"E-mailová adresa\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"Cesta k souboru\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"Hodnota '%s' musí být reálné číslo.\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"Číslo s pohyblivou řádovou čárkou\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"Velké číslo (8 bajtů)\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"Adresa IPv4\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"Adresa IP\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"Hodnota '%s' musí být buď None, True nebo False.\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"Pravdivost (buď Ano (True), Ne (False) nebo Nic (None))\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"Kladné celé číslo\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"Kladné malé celé číslo\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"Identifikátor (nejvýše %(max_length)s znaků)\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"Malé celé číslo\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"Text\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"Hodnota '%s' je v neplatném tvaru, který má být HH:MM[:ss[.uuuuuu]].\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\"Ačkoli hodnota '%s' je ve správném tvaru (HH:MM[:ss[.uuuuuu]]), jde o \"\n\"neplatný čas.\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"Čas\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"Soubor\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"Obrázek\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"Položka typu %(model)s s primárním klíčem %(pk)r neexistuje.\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"Cizí klíč (typ určen pomocí souvisejícího pole)\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"Vazba jedna-jedna\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"Vazba mnoho-mnoho\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"\"\n\"Výběr více než jedné položky je možný přidržením klávesy \\\"Control\\\" (nebo \"\n\"\\\"Command\\\" na Macu).\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"Pole je povinné.\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"Vložte celé číslo.\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"Vložte číslo.\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"Hodnota nesmí celkem mít více než %s cifer.\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"Hodnota nesmí mít za desetinnou čárkou více než %s cifer.\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"Hodnota nesmí mít před desetinnou čárkou více než %s cifer.\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"Vložte platné datum.\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"Vložte platný čas.\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"Vložte platné datum a čas.\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"\"\n\"Soubor nebyl odeslán. Zkontrolujte parametr \\\"encoding type\\\" formuláře.\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"Žádný soubor nebyl odeslán.\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"Odeslaný soubor je prázdný.\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\"Délka názvu souboru má být nejvýše %(max)d znaků, ale nyní je %(length)d.\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"Musíte vybrat cestu k souboru nebo vymazat výběr, ne obojí.\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\"Nahrajte platný obrázek. Odeslaný soubor buď nebyl obrázek nebo byl poškozen.\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"Vložte platnou adresu URL.\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"Vyberte platnou možnost, \\\"%(value)s\\\" není k dispozici.\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"Vložte seznam hodnot.\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"Pořadí\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"Odstranit\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"Opravte duplicitní data v poli %(field)s.\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"Opravte duplicitní data v poli %(field)s, které musí být unikátní.\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\"Opravte duplicitní data v poli %(field_name)s, které musí být unikátní \"\n\"testem %(lookup)s pole %(date_field)s.\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"Odstraňte duplicitní hodnoty níže.\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"\"\n\"Cizí klíč typu inline neodpovídá primárnímu klíči v rodičovské položce.\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"Vyberte platnou možnost. Tato není k dispozici.\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"Vyberte platnou možnost, \\\"%s\\\" není k dispozici.\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"Hodnota \\\"%s\\\" není platný primární klíč.\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\"Hodnotu %(datetime)s nelze interpretovat v časové zóně %(current_timezone)s; \"\n\"může to být nejednoznačné nebo nemusí existovat.\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"Aktuálně\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"Změnit\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"Zrušit\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"Neznámé\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"Ano\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"Ne\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"ano, ne, možná\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"%(size)d bajt\"\nmsgstr[1] \"%(size)d bajty\"\nmsgstr[2] \"%(size)d bajtů\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s KB\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s MB\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s GB\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s TB\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s PB\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"odp.\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"dop.\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"odp.\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"dop.\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"půlnoc\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"poledne\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"pondělí\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"úterý\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"středa\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"čtvrtek\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"pátek\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"sobota\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"neděle\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"po\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"út\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"st\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"čt\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"pá\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"so\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"ne\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"leden\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"únor\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"březen\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"duben\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"květen\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"červen\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"červenec\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"srpen\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"září\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"říjen\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"listopad\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"prosinec\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"led\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"úno\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"bře\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"dub\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"kvě\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"čen\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"čec\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"srp\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"zář\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"říj\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"lis\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"pro\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"Led.\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"Úno.\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"Bře.\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"Dub.\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"Kvě.\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"Čer.\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"Čec.\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"Srp.\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"Zář.\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"Říj.\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"Lis.\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"Pro.\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"ledna\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"února\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"března\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"dubna\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"května\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"června\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"července\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"srpna\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"září\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"října\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"listopadu\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"prosince\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"%(truncated_text)s...\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"nebo\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \", \"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"rok\"\nmsgstr[1] \"roky\"\nmsgstr[2] \"let\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"měsíc\"\nmsgstr[1] \"měsíce\"\nmsgstr[2] \"měsíců\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"týden\"\nmsgstr[1] \"týdny\"\nmsgstr[2] \"týdnů\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"den\"\nmsgstr[1] \"dny\"\nmsgstr[2] \"dnů\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"hodina\"\nmsgstr[1] \"hodiny\"\nmsgstr[2] \"hodin\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"minuta\"\nmsgstr[1] \"minuty\"\nmsgstr[2] \"minut\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"minuty\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \", %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"Indexy adresářů zde nejsou povoleny.\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\\\"%(path)s\\\" neexistuje\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"Index adresáře %(directory)s\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"Nebyl specifikován rok\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"Nebyl specifikován měsíc\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"Nebyl specifikován den\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"Nebyl specifikován týden\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"%(verbose_name_plural)s nejsou k dispozici\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\"%(verbose_name_plural)s s budoucím datem nejsou k dipozici protoze \"\n\"%(class_name)s.allow_future je False\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"Datum '%(datestr)s' neodpovídá formátu '%(format)s'\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"Nepodařilo se nalézt žádný objekt %(verbose_name)s\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"Požadavek na stránku nemohl být konvertován na číslo, ani není 'last'\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"Neplatná stránka (%(page_number)s): %(message)s\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"List je prázdný a '%(class_name)s.allow_empty' je nastaveno na False\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/cs/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/conf/locale/cs/formats.py",
    "content": "# -*- encoding: utf-8 -*-\n# This file is distributed under the same license as the Django package.\n#\nfrom __future__ import unicode_literals\n\n# The *_FORMAT strings use the Django date format syntax,\n# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\nDATE_FORMAT = 'j. E Y'\nTIME_FORMAT = 'G:i:s'\nDATETIME_FORMAT = 'j. E Y G:i:s'\nYEAR_MONTH_FORMAT = 'F Y'\nMONTH_DAY_FORMAT = 'j. F'\nSHORT_DATE_FORMAT = 'd.m.Y'\nSHORT_DATETIME_FORMAT = 'd.m.Y G:i:s'\nFIRST_DAY_OF_WEEK = 1 # Monday\n\n# The *_INPUT_FORMATS strings use the Python strftime format syntax,\n# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior\nDATE_INPUT_FORMATS = (\n    '%d.%m.%Y', '%d.%m.%y',     # '05.01.2006', '05.01.06'\n    '%d. %m. %Y', '%d. %m. %y', # '5. 1. 2006', '5. 1. 06'\n    # '%d. %B %Y', '%d. %b. %Y',  # '25. October 2006', '25. Oct. 2006'\n)\n# Kept ISO formats as one is in first position\nTIME_INPUT_FORMATS = (\n    '%H:%M:%S', # '04:30:59'\n    '%H.%M',    # '04.30'\n    '%H:%M',    # '04:30'\n)\nDATETIME_INPUT_FORMATS = (\n    '%d.%m.%Y %H:%M:%S',    # '05.01.2006 04:30:59'\n    '%d.%m.%Y %H.%M',       # '05.01.2006 04.30'\n    '%d.%m.%Y %H:%M',       # '05.01.2006 04:30'\n    '%d.%m.%Y',             # '05.01.2006'\n    '%d. %m. %Y %H:%M:%S',  # '05. 01. 2006 04:30:59'\n    '%d. %m. %Y %H.%M',     # '05. 01. 2006 04.30'\n    '%d. %m. %Y %H:%M',     # '05. 01. 2006 04:30'\n    '%d. %m. %Y',           # '05. 01. 2006'\n    '%Y-%m-%d %H.%M',       # '2006-01-05 04.30'\n)\nDECIMAL_SEPARATOR = ','\nTHOUSAND_SEPARATOR = '\\xa0' # non-breaking space\nNUMBER_GROUPING = 3\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/cy/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Maredudd ap Gwyndaf <maredudd@maredudd.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:47+0000\\n\"\n\"Last-Translator: Maredudd ap Gwyndaf <maredudd@maredudd.com>\\n\"\n\"Language-Team: Welsh (http://www.transifex.com/projects/p/django/language/\"\n\"cy/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: cy\\n\"\n\"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != \"\n\"11) ? 2 : 3;\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"Arabeg\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"Bwlgareg\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"Bengaleg\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"Bosnieg\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"Catalaneg\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"Tsieceg\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"Cymraeg\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"Daneg\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"Almaeneg\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"Groegedd\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"Saesneg\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"Saesneg Prydain\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"Esperanto\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"Sbaeneg\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"Sbaeneg Ariannin\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"Estoneg\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"Basgeg\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"Persieg\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"Ffinneg\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"Ffrangeg\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"Ffrisieg\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"Gwyddeleg\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"Galisieg\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"Hebraeg\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"Hindi\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"Croasieg\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"Hwngareg\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"Indoneseg\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"Islandeg\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"Eidaleg\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"Siapanëeg\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"Georgeg\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"Corëeg\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"Iseldireg\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"Pwyleg\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"Portiwgaleg\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"Portiwgaleg Brasil\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"Romaneg\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"Rwsieg\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"Slofaceg\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"Slofeneg\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"Serbeg\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"Swedeg\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"Swahili\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"Tamil\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"Twrceg\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"Tsieinëeg Symledig\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"Tseinëeg Traddodiadol\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"Rhowch werth dilys.\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"Rhowch digidau gwahanu gyda atalnodau yn unig.\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"ac\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"Dyddiad (heb amser)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"Dyddiad (gyda amser)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"Rhif degol\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"Llwybr ffeil\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"cyfeiriad IP\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"Boole (Naill ai True, False neu None)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"Testun\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"Amser\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"Mae angen y faes yma.\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"Rhowch rhif cyfan.\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"Mae'r ffeil yn wag.\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\"Llwythwch delwedd dilys. Doedd y delwedd a llwythwyd dim yn ddelwedd dilys, \"\n\"neu roedd o'n ddelwedd llwgr.\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"Rhowch URL dilys.\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"Dileu\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"Newidio\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"Ie\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"Na\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"ie,na,efallai\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s MB\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s GB\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s TB\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s PB\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"Dydd Llun\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"Dydd Mawrth\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"Dydd Mercher\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"Dydd Iau\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"Dydd Gwener\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"Dydd Sadwrn\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"Dydd Sul\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"Llu\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"Maw\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"Mer\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"Iau\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"Gwe\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"Sad\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"Sul\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"Ionawr\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"Chwefror\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"Mawrth\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"Ebrill\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"Mai\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"Mehefin\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"Gorffenaf\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"Awst\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"Medi\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"Hydref\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"Tachwedd\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"Rhagfyr\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"ion\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"chw\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"maw\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"ebr\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"mai\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"meh\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"gor\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"aws\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"med\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"hyd\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"tach\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"rhag\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"Mawrth\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"Ebrill\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"Mai\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"Mehefin\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"Gorffenaf\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"Ionawr\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"Chwefror\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"Mawrth\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"Ebrill\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"Mai\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"Mehefin\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"Gorffenaf\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"Awst\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"Medi\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"Hydref\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"Tachwedd\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"Rhagfyr\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"neu\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \"\"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \"\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/cy/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/conf/locale/cy/formats.py",
    "content": "# -*- encoding: utf-8 -*-\n# This file is distributed under the same license as the Django package.\n#\n\n# The *_FORMAT strings use the Django date format syntax,\n# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\nDATE_FORMAT = 'd F Y'\nTIME_FORMAT = 'g:i:s A'\n# DATETIME_FORMAT = \n# YEAR_MONTH_FORMAT = \n# MONTH_DAY_FORMAT = \nSHORT_DATE_FORMAT = 'j M Y'\n# SHORT_DATETIME_FORMAT = \n# FIRST_DAY_OF_WEEK = \n\n# The *_INPUT_FORMATS strings use the Python strftime format syntax,\n# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior\n# DATE_INPUT_FORMATS = \n# TIME_INPUT_FORMATS = \n# DATETIME_INPUT_FORMATS = \n# DECIMAL_SEPARATOR = \n# THOUSAND_SEPARATOR = \n# NUMBER_GROUPING = \n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/da/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Christian Joergensen <christian@gmta.info>, 2012.\n# Erik Wognsen <r4mses@gmail.com>, 2011-2013.\n# Finn Gruwier <finn@gruwier.dk>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <jonaskoelker@gnu.org>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-13 04:19+0000\\n\"\n\"Last-Translator: Erik Wognsen <r4mses@gmail.com>\\n\"\n\"Language-Team: Danish (http://www.transifex.com/projects/p/django/language/\"\n\"da/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: da\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"afrikaans\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"arabisk\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"azerbaidjansk\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"bulgarsk\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"hviderussisk\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"bengalsk\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"bretonsk\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"bosnisk\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"catalansk\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"tjekkisk\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"walisisk\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"dansk\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"tysk\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"græsk\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"engelsk\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"britisk engelsk\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"esperanto\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"spansk\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"argentinsk spansk\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"mexikansk spansk\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"nicaraguansk spansk\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"venezuelansk spansk\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"estisk\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"baskisk\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"persisk\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"finsk\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"fransk\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"frisisk\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"irsk\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"galicisk\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"hebraisk\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"hindi\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"kroatisk\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"ungarsk\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"interlingua\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"indonesisk\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"islandsk\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"italiensk\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"japansk\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"georgisk\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"kasakhisk\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"khmer\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"kannada\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"koreansk\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"luxembourgisk\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"litauisk\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"lettisk\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"makedonsk\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"malaysisk\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"mongolsk\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"norsk bokmål\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"nepalesisk\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"hollandsk\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"norsk nynorsk\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"punjabi\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"polsk\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"portugisisk\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"brasiliansk portugisisk\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"rumænsk\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"russisk\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"slovakisk\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"slovensk\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"albansk\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"serbisk\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"serbisk (latin)\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"svensk\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"swahili\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"tamil\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"telugu\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"thai\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"tyrkisk\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"tatarisk\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"udmurtisk\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"ukrainsk\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"urdu\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"vietnamesisk\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"forenklet kinesisk\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"traditionelt kinesisk\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"Indtast en gyldig værdi.\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"Indtast en gyldig e-mail-adresse.\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"\"\n\"Indtast en \\\"slug\\\" bestående af bogstaver, cifre, understreger og \"\n\"bindestreger.\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"Indtast en gyldig IPv4-adresse.\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"Indtast en gyldig IPv6-adresse.\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"Indtast en gyldig IPv4- eller IPv6-adresse.\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"Indtast kun cifre adskilt af kommaer.\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"Denne værdi skal være %(limit_value)s (den er %(show_value)s).\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"Denne værdi skal være mindre end eller lig %(limit_value)s.\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"Denne værdi skal være større end eller lig %(limit_value)s.\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Denne værdi skal mindst indeholde %(limit_value)d tegn (den indeholder \"\n\"%(show_value)d).\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Denne værdi må maksimalt indeholde %(limit_value)d tegn (den har \"\n\"%(show_value)d).\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"%(field_name)s skal være unik for %(date_field)s %(lookup)s.\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"og\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"%(model_name)s med dette %(field_label)s eksisterer allerede.\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"Værdien %r er ikke et gyldigt valg.\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"Dette felt kan ikke være null.\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"Dette felt kan ikke være tomt.\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Felt af type: %(field_type)s\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"Heltal\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"'%s' værdien skal være et heltal.\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"'%s' værdien skal være enten True eller False.\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Boolsk (enten True eller False)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"Streng (op til %(max_length)s)\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"Kommaseparerede heltal\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"\"\n\"'%s' værdien har et ugyldigt datoformat. Det skal være i formatet ÅÅÅÅ-MM-DD.\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"\"\n\"'%s' værdien har det korrekte format (ÅÅÅÅ-MM-DD) men er en ugyldig dato.\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"Dato (uden tid)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\"'%s' værdien har et ugyldigt datoformat. Det skal være i formatet ÅÅÅÅ-MM-DD \"\n\"TT:MM[:ss[.uuuuuu]][TZ].\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\"'%s' værdien har det korrekte format (ÅÅÅÅ-MM-DD TT:MM[:ss[.uuuuuu]][TZ]) \"\n\"men er en ugyldig dato/tid.\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"Dato (med tid)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"'%s' værdien skal være et decimaltal.\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"Decimaltal\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"E-mail-adresse\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"Sti\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"'%s' værdien skal være en float.\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"Flydende-komma-tal\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"Stort heltal (8 byte)\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"IPv4-adresse\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"IP-adresse\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"'%s' værdien skal være enten None, True eller False.\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"Boolsk (True, False eller None)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"Positivt heltal\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"Positivt lille heltal\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"\\\"Slug\\\" (op til %(max_length)s)\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"Lille heltal\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"Tekst\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"\"\n\"'%s' værdien har et ugyldigt datoformat. Det skal være i formatet ÅÅÅÅ-MM-DD \"\n\"TT:MM[:ss[.uuuuuu]].\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\"'%s' værdien har det korrekte format (ÅÅÅÅ-MM-DD TT:MM[:ss[.uuuuuu]]) men er \"\n\"en ugyldig dato/tid.\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"Tid\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"Fil\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"Billede\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"En model %(model)s med primærnøgle %(pk)r eksisterer ikke.\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"Fremmednøgle (type bestemt af relateret felt)\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"En-til-en-relation\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"Mange-til-mange-relation\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"\"\n\"Hold \\\"Ctrl\\\" (eller \\\"Æbletasten\\\" på Mac) nede for at vælge mere end en.\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"Dette felt er påkrævet.\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"Indtast et heltal.\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"Indtast et tal.\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"Der må maksimalt være %s cifre i alt.\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"Der må højst være %s decimalpladser.\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"Der må maksimalt være %s cifre før decimaltegnet.\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"Indtast en gyldig dato.\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"Indtast en gyldig tid.\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"Indtast gyldig dato/tid.\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"Ingen fil blev indsendt. Kontroller kodningstypen i formularen.\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"Ingen fil blev indsendt.\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"Den indsendte fil er tom.\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"Denne værdi må maksimalt indeholde %(max)d tegn (den har %(length)d).\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"\"\n\"Du skal enten indsende en fil eller afmarkere afkrydsningsfeltet, ikke begge \"\n\"dele.\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\"Indsend en billedfil. Filen, du indsendte, var enten ikke et billede eller \"\n\"en defekt billedfil.\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"Indtast en gyldig URL.\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"\"\n\"Marker en gyldig valgmulighed. %(value)s er ikke en af de tilgængelige \"\n\"valgmuligheder.\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"Indtast en liste af værdier.\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"Rækkefølge\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"Slet\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"Ret venligst duplikerede data for %(field)s.\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"Ret venligst de duplikerede data for %(field)s, som skal være unik.\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\"Ret venligst de duplikerede data for %(field_name)s, som skal være unik for \"\n\"%(lookup)s i %(date_field)s.\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"Ret venligst de duplikerede data herunder.\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"\"\n\"Den indlejrede fremmednøgle passede ikke med forælderinstansens primærnøgle.\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"\"\n\"Marker en gyldig valgmulighed. Det valg, du har foretaget, er ikke blandt de \"\n\"tilgængelige valgmuligheder.\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"\"\n\"Marker en gyldig valgmulighed. %s er ikke en af de tilgængelige \"\n\"valgmuligheder.\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"\\\"%s\\\" er ikke en gyldig værdi for en primærnøgle.\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\"%(datetime)s kunne ikke fortolkes i tidszonen %(current_timezone)s; den kan \"\n\"være tvetydig eller den eksisterer måske ikke.\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"Aktuelt\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"Ret\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"Afmarkér\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"Ukendt\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"Ja\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"Nej\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"ja,nej,måske\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"%(size)d byte\"\nmsgstr[1] \"%(size)d bytes\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s KB\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s MB\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s GB\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s TB\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s PB\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"p.m.\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"a.m.\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"PM\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"AM\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"midnat\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"middag\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"mandag\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"tirsdag\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"onsdag\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"torsdag\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"fredag\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"lørdag\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"søndag\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"man\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"tir\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"ons\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"tor\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"fre\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"lør\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"søn\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"januar\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"februar\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"marts\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"april\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"maj\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"juni\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"juli\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"august\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"september\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"oktober\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"november\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"december\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"jan\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"feb\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"mar\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"apr\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"maj\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"jun\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"jul\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"aug\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"sept\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"okt\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"nov\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"dec\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"jan.\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"feb.\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"marts\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"april\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"maj\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"juni\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"juli\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"aug.\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"sept.\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"okt.\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"nov.\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"dec.\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"januar\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"februar\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"marts\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"april\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"maj\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"juni\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"juli\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"august\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"september\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"oktober\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"november\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"december\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"%(truncated_text)s...\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"eller\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \", \"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"år\"\nmsgstr[1] \"år\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"måned\"\nmsgstr[1] \"måneder\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"uge\"\nmsgstr[1] \"uger\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"dag\"\nmsgstr[1] \"dage\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"time\"\nmsgstr[1] \"timer\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"minut\"\nmsgstr[1] \"minutter\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"minutter\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \", %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"Mappeindekser er ikke tilladte her\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\\\" %(path)s\\\" eksisterer ikke\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"Indeks for %(directory)s\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"Intet år specificeret\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"Ingen måned specificeret\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"Ingen dag specificeret\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"Ingen uge specificeret\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"Ingen %(verbose_name_plural)s  til rådighed\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\"Fremtidige %(verbose_name_plural)s  ikke tilgængelige, fordi %(class_name)s .\"\n\"allow_future er falsk.\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"Ugyldig datostreng ' %(datestr)s ' givet format ' %(format)s '\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"Ingen %(verbose_name)s  fundet matcher forespørgslen\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"Side er ikke 'sidste', kan heller ikke konverteres til en int.\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"Ugyldig side (%(page_number)s): %(message)s\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"Tom liste og ' %(class_name)s .allow_empty' er falsk.\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/da/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/conf/locale/da/formats.py",
    "content": "# -*- encoding: utf-8 -*-\n# This file is distributed under the same license as the Django package.\n#\n\n# The *_FORMAT strings use the Django date format syntax,\n# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\nDATE_FORMAT = 'j. F Y'\nTIME_FORMAT = 'H:i'\nDATETIME_FORMAT = 'j. F Y H:i'\nYEAR_MONTH_FORMAT = 'F Y'\nMONTH_DAY_FORMAT = 'j. F'\nSHORT_DATE_FORMAT = 'd.m.Y'\nSHORT_DATETIME_FORMAT = 'd.m.Y H:i'\nFIRST_DAY_OF_WEEK = 1\n\n# The *_INPUT_FORMATS strings use the Python strftime format syntax,\n# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior\nDATE_INPUT_FORMATS = (\n    '%d.%m.%Y',                         # '25.10.2006'\n)\nDATETIME_INPUT_FORMATS = (\n    '%d.%m.%Y %H:%M:%S',                # '25.10.2006 14:30:59'\n    '%d.%m.%Y %H:%M',                   # '25.10.2006 14:30'\n)\nDECIMAL_SEPARATOR = ','\nTHOUSAND_SEPARATOR = '.'\nNUMBER_GROUPING = 3\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/de/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# André Hagenbruch <ahagenbruch@googlemail.com>, 2011, 2012.\n# apollo13 <florian@apolloner.eu>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011-2012.\n# jnns <jvajen@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:47+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: German (http://www.transifex.com/projects/p/django/language/\"\n\"de/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: de\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"Afrikaans\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"Arabisch\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"Aserbaidschanisch\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"Bulgarisch\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"Weißrussisch\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"Bengali\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"Bretonisch\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"Bosnisch\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"Katalanisch\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"Tschechisch\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"Walisisch\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"Dänisch\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"Deutsch\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"Griechisch\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"Englisch\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"Britisches Englisch\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"Esperanto\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"Spanisch\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"Argentinisches Spanisch\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"Mexikanisches Spanisch\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"Nicaraguanisches Spanisch\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"Venezolanisches Spanisch\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"Estnisch\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"Baskisch\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"Persisch\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"Finnisch\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"Französisch\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"Friesisch\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"Irisch\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"Galicisch\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"Hebräisch\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"Hindi\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"Kroatisch\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"Ungarisch\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"Interlingua\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"Indonesisch\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"Isländisch\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"Italienisch\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"Japanisch\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"Georgisch\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"Kasachisch\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"Khmer\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"Kannada\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"Koreanisch\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"Luxemburgisch\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"Litauisch\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"Lettisch\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"Mazedonisch\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"Malayalam\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"Mongolisch\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"Norwegisch (Bokmål)\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"Nepali\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"Holländisch\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"Norwegisch (Nynorsk)\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"Panjabi\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"Polnisch\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"Portugiesisch\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"Brasilianisches Portugiesisch\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"Rumänisch\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"Russisch\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"Slowakisch\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"Slowenisch\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"Albanisch\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"Serbisch\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"Serbisch (Latein)\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"Schwedisch\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"Swahili\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"Tamilisch\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"Telugisch\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"Thailändisch\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"Türkisch\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"Tatarisch\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"Udmurtisch\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"Ukrainisch\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"Urdu\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"Vietnamesisch\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"Vereinfachtes Chinesisch\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"Traditionelles Chinesisch\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"Bitte einen gültigen Wert eingeben.\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"Bitte gültige E-Mail-Adresse eingeben.\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"\"\n\"Bitte ein gültiges Kürzel, bestehend aus Buchstaben, Ziffern, Unterstrichen \"\n\"und Bindestrichen, eingeben.\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"Bitte eine gültige IPv4-Adresse eingeben.\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"Eine gültige IPv6-Adresse eingeben.\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"Eine gültige IPv4- oder IPv6-Adresse eingeben\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"Bitte nur durch Komma getrennte Ziffern eingeben.\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"\"\n\"Bitte sicherstellen, dass der Wert %(limit_value)s ist. (Er ist \"\n\"%(show_value)s)\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"Dieser Wert muss kleiner oder gleich %(limit_value)s sein.\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"Dieser Wert muss größer oder gleich %(limit_value)s sein.\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Bitte sicherstellen, dass der Wert mindestens %(limit_value)d Zeichen hat. \"\n\"(Er hat %(show_value)d)\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Bitte sicherstellen, dass der Wert maximal %(limit_value)d Zeichen hat. (Er \"\n\"hat %(show_value)d).\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"%(field_name)s muss für %(date_field)s %(lookup)s eindeutig sein.\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"und\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"%(model_name)s mit diesem %(field_label)s existiert bereits.\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"Wert %r ist keine gültige Option.\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"Dieses Feld darf nicht leer sein.\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"Dieses Feld darf nicht leer sein.\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Feldtyp: %(field_type)s\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"Ganzzahl\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"Der Wert '%s' muss eine ganze  Zahl sein.\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"Der Wert '%s' muss entweder True oder False sein.\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Boolescher Wert (True oder False)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"Zeichenkette (bis zu %(max_length)s Zeichen)\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"Kommaseparierte Liste von Ganzzahlen\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"\"\n\"Der Wert '%s' hat ein ungültiges Datumsformat. Er muss im Format JJJJ-MM-TT \"\n\"sein.\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"\"\n\"Der Wert '%s' hat das richtige Format (JJJJ-MM-TT), ist aber ein ungültiges \"\n\"Datum.\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"Datum (ohne Uhrzeit)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\"'%s' ist falsch formatiert. Das korrekte Format lautet: YYYY-MM-DD HH:MM[:ss\"\n\"[.uuuuuu]][TZ].\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\"'%s' hat das richtige Format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]), ist aber \"\n\"keine gültige Datums-/Zeitangabe.\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"Datum (mit Uhrzeit)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"'%s' muss eine Dezimalzahl sein.\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"Dezimalzahl\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"E-Mail-Adresse\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"Dateipfad\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"'%s' muss eine Gleitkommazahl sein.\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"Gleitkommazahl\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"Große Ganzzahl (8 Byte)\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"IPv4-Adresse\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"IP-Adresse\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"Der Wert '%s' muss entweder None, True oder False sein.\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"Boolescher Wert (True, False oder None)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"Positive ganze Zahl\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"Positive kleine ganze Zahl\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"Kürzel (bis zu %(max_length)s)\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"Kleine ganze Zahl\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"Text\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"\"\n\"'%s' ist falsch formatiert. Das korrekte Format lautet: HH:MM[:ss[.uuuuuu]].\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\"'%s' hat das richtige Format (HH:MM[:ss[.uuuuuu]]), ist aber keine gültige \"\n\"Zeitangabe.\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"Zeit\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"Adresse (URL)\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"Datei\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"Bild\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"Modell %(model)s mit dem Primärschlüssel %(pk)r ist nicht vorhanden.\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"Fremdschlüssel (Typ definiert durch verknüpftes Feld)\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"One-to-one-Beziehung\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"Many-to-many-Beziehung\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"\"\n\"Halten Sie die Strg-Taste (⌘ für Mac) während des Klickens gedrückt, um \"\n\"mehrere Einträge auszuwählen.\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"Dieses Feld ist zwingend erforderlich.\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"Bitte eine ganze Zahl eingeben.\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"Bitte eine Zahl eingeben.\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"Bitte geben Sie nicht mehr als insgesamt %s Ziffern ein.\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"Bitte geben Sie nicht mehr als %s Dezimalstellen ein.\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"Bitte geben Sie nicht mehr als %s Ziffern vor dem Komma ein.\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"Bitte ein gültiges Datum eingeben.\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"Bitte eine gültige Uhrzeit eingeben.\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"Bitte ein gültiges Datum und Uhrzeit eingeben.\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"\"\n\"Es wurde keine Datei übermittelt. Überprüfen Sie das Encoding des Formulars.\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"Es wurde keine Datei übertragen.\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"Die ausgewählte Datei ist leer.\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\"Bitte sicherstellen, dass der Dateiname maximal %(max)d Zeichen hat. (Er hat \"\n\"%(length)d).\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"\"\n\"Bitte wählen Sie entweder eine Datei aus oder wählen Sie \\\"Löschen\\\", nicht \"\n\"beides.\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\"Bitte ein Bild hochladen. Die hochgeladene Datei ist kein Bild oder ist \"\n\"defekt.\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"Bitte eine gültige Adresse eingeben.\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"\"\n\"Bitte eine gültige Auswahl treffen. %(value)s ist keine gültige Auswahl.\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"Bitte eine Liste mit Werten eingeben.\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"Reihenfolge\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"Löschen\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"Bitte die doppelten Daten für %(field)s korrigieren.\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"\"\n\"Bitte die doppelten Daten für %(field)s korrigieren, das eindeutig sein muss.\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\"Bitte die doppelten Daten für %(field_name)s korrigieren, da es für \"\n\"%(lookup)s in %(date_field)s eindeutig sein muss.\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"Bitte die unten aufgeführten doppelten Werte korrigieren.\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"\"\n\"Der Inline-Fremdschlüssel passt nicht zum Primärschlüssel der übergeordneten \"\n\"Instanz.\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"Bitte eine gültige Auswahl treffen. Dies ist keine gültige Auswahl.\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"Bitte eine gültige Auswahl treffen. %s ist keine gültige Auswahl.\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"\\\"%s\\\" ist kein gültiger Wert für einen Primärschlüssel.\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\"%(datetime)s konnte mit der Zeitzone %(current_timezone)s nicht eindeutig \"\n\"interpretiert werden, da es doppeldeutig oder eventuell inkorrekt ist.\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"Derzeit\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"Ändern\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"Zurücksetzen\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"Unbekannt\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"Ja\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"Nein\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"Ja,Nein,Vielleicht\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"%(size)d Byte\"\nmsgstr[1] \"%(size)d Bytes\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s KB\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s MB\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s GB\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s TB\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s PB\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"nachm.\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"vorm.\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"nachm.\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"vorm.\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"Mitternacht\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"Mittag\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"Montag\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"Dienstag\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"Mittwoch\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"Donnerstag\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"Freitag\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"Samstag\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"Sonntag\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"Mo\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"Di\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"Mi\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"Do\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"Fr\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"Sa\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"So\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"Januar\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"Februar\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"März\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"April\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"Mai\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"Juni\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"Juli\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"August\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"September\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"Oktober\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"November\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"Dezember\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"Jan\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"Feb\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"Mär\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"Apr\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"Mai\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"Jun\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"Jul\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"Aug\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"Sep\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"Okt\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"Nov\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"Dez\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"Jan.\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"Feb.\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"März\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"April\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"Mai\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"Juni\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"Juli\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"Aug.\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"Sept.\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"Okt.\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"Nov.\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"Dez.\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"Januar\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"Februar\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"März\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"April\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"Mai\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"Juni\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"Juli\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"August\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"September\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"Oktober\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"November\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"Dezember\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"%(truncated_text)s...\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"oder\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \", \"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"Jahr\"\nmsgstr[1] \"Jahre\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"Monat\"\nmsgstr[1] \"Monate\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"Woche\"\nmsgstr[1] \"Wochen\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"Tag\"\nmsgstr[1] \"Tage\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"Stunde\"\nmsgstr[1] \"Stunden\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"Minute\"\nmsgstr[1] \"Minuten\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"Minuten\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \", %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"Dateilisten sind untersagt.\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\\\"%(path)s\\\" ist nicht vorhanden\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"Verzeichnis %(directory)s\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"Kein Jahr angegeben\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"Kein Monat angegeben\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"Kein Tag angegeben\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"Keine Woche angegeben\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"Keine %(verbose_name_plural)s verfügbar\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\"In der Zukunft liegende %(verbose_name_plural)s sind nicht verfügbar, da \"\n\"%(class_name)s.allow_future False ist.\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"Ungültiges Datum '%(datestr)s' für das Format '%(format)s'\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"Unter dieser Anfrage wurden keine %(verbose_name)s gefunden\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"\"\n\"Weder ist dies die letzte Seite ('last') noch konnte sie in einen \"\n\"ganzzahligen Wert umgewandelt werden.\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"Ungültige Seite (%(page_number)s): %(message)s\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"Leere Liste und '%(class_name)s.allow_empty' ist False.\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/de/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/conf/locale/de/formats.py",
    "content": "# -*- encoding: utf-8 -*-\n# This file is distributed under the same license as the Django package.\n#\n\n# The *_FORMAT strings use the Django date format syntax,\n# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\nDATE_FORMAT = 'j. F Y'\nTIME_FORMAT = 'H:i:s'\nDATETIME_FORMAT = 'j. F Y H:i:s'\nYEAR_MONTH_FORMAT = 'F Y'\nMONTH_DAY_FORMAT = 'j. F'\nSHORT_DATE_FORMAT = 'd.m.Y'\nSHORT_DATETIME_FORMAT = 'd.m.Y H:i:s'\nFIRST_DAY_OF_WEEK = 1 # Monday\n\n# The *_INPUT_FORMATS strings use the Python strftime format syntax,\n# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior\nDATE_INPUT_FORMATS = (\n    '%d.%m.%Y', '%d.%m.%y',     # '25.10.2006', '25.10.06'\n    # '%d. %B %Y', '%d. %b. %Y',  # '25. October 2006', '25. Oct. 2006'\n)\nDATETIME_INPUT_FORMATS = (\n    '%d.%m.%Y %H:%M:%S',    # '25.10.2006 14:30:59'\n    '%d.%m.%Y %H:%M',       # '25.10.2006 14:30'\n    '%d.%m.%Y',             # '25.10.2006'\n)\nDECIMAL_SEPARATOR = ','\nTHOUSAND_SEPARATOR = '.'\nNUMBER_GROUPING = 3\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/de_CH/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/conf/locale/de_CH/formats.py",
    "content": "# -*- encoding: utf-8 -*-\n# This file is distributed under the same license as the Django package.\n#\n\n# The *_FORMAT strings use the Django date format syntax,\n# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\nfrom __future__ import unicode_literals\n\nDATE_FORMAT = 'j. F Y'\nTIME_FORMAT = 'H:i:s'\nDATETIME_FORMAT = 'j. F Y H:i:s'\nYEAR_MONTH_FORMAT = 'F Y'\nMONTH_DAY_FORMAT = 'j. F'\nSHORT_DATE_FORMAT = 'd.m.Y'\nSHORT_DATETIME_FORMAT = 'd.m.Y H:i:s'\nFIRST_DAY_OF_WEEK = 1 # Monday\n\n# The *_INPUT_FORMATS strings use the Python strftime format syntax,\n# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior\nDATE_INPUT_FORMATS = (\n    '%d.%m.%Y', '%d.%m.%y',     # '25.10.2006', '25.10.06'\n    # '%d. %B %Y', '%d. %b. %Y',  # '25. October 2006', '25. Oct. 2006'\n)\nDATETIME_INPUT_FORMATS = (\n    '%d.%m.%Y %H:%M:%S',    # '25.10.2006 14:30:59'\n    '%d.%m.%Y %H:%M',       # '25.10.2006 14:30'\n    '%d.%m.%Y',             # '25.10.2006'\n)\n\n# these are the separators for non-monetary numbers. For monetary numbers,\n# the DECIMAL_SEPARATOR is a . (decimal point) and the THOUSAND_SEPARATOR is a\n# ' (single quote).\n# For details, please refer to http://www.bk.admin.ch/dokumentation/sprachen/04915/05016/index.html?lang=de\n# (in German) and the documentation\nDECIMAL_SEPARATOR = ','\nTHOUSAND_SEPARATOR = '\\xa0' # non-breaking space\nNUMBER_GROUPING = 3\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/el/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Apostolis Bessas <mpessas+txc@transifex.com>, 2013.\n# Dimitris Glezos <glezos@indifex.com>, 2011.\n# Dimitris Glezos <glezos@transifex.com>, 2013.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Yorgos Pagles <y.pagles@gmail.com>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-02-23 22:50+0000\\n\"\n\"Last-Translator: Apostolos Mpessas <mpessas+txc@transifex.com>\\n\"\n\"Language-Team: Greek (http://www.transifex.com/projects/p/django/language/\"\n\"el/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: el\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"Αραβικά\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"Γλώσσα Αζερμπαϊτζάν\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"Βουλγαρικά\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"Μπενγκάλι\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"Βοσνιακά\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"Καταλανικά\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"Τσέχικα\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"Ουαλικά\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"Δανέζικα\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"Γερμανικά\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"Ελληνικά\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"Αγγλικά\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"Αγγλικά Βρετανίας\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"Εσπεράντο\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"Ισπανικά\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"Ισπανικά Αργεντινής\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"Μεξικανική διάλεκτος Ισπανικών\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"Ισπανικά Νικαράγουας \"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"Εσθονικά\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"Βάσκικα\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"Περσικά\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"Φινλανδικά\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"Γαλλικά\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"Frisian\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"Ιρλανδικά\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"Γαελικά\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"Εβραϊκά\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"Ινδικά\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"Κροατικά\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"Ουγγρικά\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"Ινδονησιακά\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"Ισλανδικά\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"Ιταλικά\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"Γιαπωνέζικα\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"Γεωργιανά\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"Καζακστά\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"Χμερ\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"Κανάντα\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"Κορεάτικα\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"Λιθουανικά\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"Λεττονικά\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"Μακεδονικά\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"Μαλαγιαλάμ\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"Μογγολικά\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"Νορβηγική διάλεκτος Μποκμάλ - \\\"γλώσσα των βιβλίων\\\"\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"Ολλανδικά\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"Νορβηγική διάλεκτος Nynorsk - Νεονορβηγική\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"Πουντζάμπι\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"Πολωνικά\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"Πορτογαλικά\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"Πορτογαλικά - διάλεκτος Βραζιλίας\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"Ρουμανικά\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"Ρωσικά\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"Σλοβακικά\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"Σλοβενικά\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"Αλβανικά\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"Σερβικά\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"Σέρβικα Λατινικά\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"Σουηδικά\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"Διάλεκτος Ταμίλ\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"Τελούγκου\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"Ταϊλάνδης\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"Τουρκικά\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"Ουκρανικά\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"Urdu\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"Βιετναμέζικα\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"Απλοποιημένα Κινέζικα\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"Παραδοσιακά Κινέζικα\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"Εισάγετε μια έγκυρη τιμή.\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"Εισάγετε μια έγκυρη διεύθυνση ηλ. ταχυδρομείου.\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"\"\n\"Ένα έγκυρο 'slug' αποτελείται από γράμματα, αριθμούς, παύλες ή κάτω παύλες.\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"Εισάγετε μια έγκυρη διεύθυνση IPv4.\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"Εισάγετε μία έγκυρη IPv6 διεύθυνση\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"Εισάγετε μία έγκυρη IPv4 ή IPv6 διεύθυνση\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"Εισάγετε μόνο ψηφία χωρισμένα με κόμματα.\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"\"\n\"Βεβαιωθείτε ότι η τιμή είναι %(limit_value)s (η τιμή που καταχωρήσατε είναι \"\n\"%(show_value)s).\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"Βεβαιωθείτε ότι η τιμή είναι μικρότερη ή ίση από %(limit_value)s.\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"Βεβαιωθείτε ότι η τιμή είναι μεγαλύτερη ή ίση από %(limit_value)s.\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Βεβαιωθείτε ότι η τιμή έχει μέγεθος τουλάχιστον %(limit_value)d χαρακτήρες \"\n\"(η τιμή που καταχωρήσατε έχει %(show_value)d χαρακτήρες).\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Βεβαιωθείτε ότι η τιμή έχει το πολύ %(limit_value)d χαρακτήρες (η τιμή που \"\n\"καταχωρήσατε έχει %(show_value)d χαρακτήρες).\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"\"\n\" %(field_name)s πρέπει να είναι μοναδικό για %(date_field)s %(lookup)s.\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"και\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"%(model_name)s με αυτό το %(field_label)s υπάρχει ήδη.\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"Η τιμή %r δεν είναι έγκυρη επιλογή.\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"Αυτό το πεδίο δεν μπορεί να είναι κενό (null).\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"Το πεδίο αυτό δεν μπορεί να είναι κενό.\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Είδος πεδίου: %(field_type)s\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"Ακέραιος\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"Η τιμή του '%s' πρέπει να είναι ακέραιος αριθμός (integer).\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"Η τιμή του '%s' πρέπει να είναι True ή False.\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Boolean (Είτε Αληθές ή Ψευδές)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"Συμβολοσειρά (μέχρι %(max_length)s)\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"Ακέραιοι χωρισμένοι με κόμματα\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"Η τιμή του '%s' έχει λάθος μορφή. Η μορφή του πρέπει είναι YYYY-MM-DD.\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"\"\n\"Η τιμή του '%s' έχει σωστή μορφή (YYYY-MM-DD) αλλά δεν αντιστοιχεί σε σωστή \"\n\"ημερομηνία.\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"Ημερομηνία (χωρίς την ώρα)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\"Η τιμή του '%s' έχει λάθος μορφή. Η μορφή του πρέπει είναι YYYY-MM-DD.HH:MM[:\"\n\"ss[.uuuuuu]][TZ].\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\"Η τιμή του '%s' έχει σωστή μορφή (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) αλλά \"\n\"δεν αντιστοιχεί σε σωστή ημερομηνία και ώρα.\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"Ημερομηνία (με την ώρα)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"Η τιμή του '%s' πρέπει να είναι ακέραιος δεκαδικός αριθμός (decimal).\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"Δεκαδικός αριθμός\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"Ηλεκτρονική διεύθυνση\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"Τοποθεσία αρχείου\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"Η τιμή του '%s' πρέπει να είναι αριθμός κινητής υποδιαστολής (float).\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"Αριθμός κινητής υποδιαστολής\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"Μεγάλος ακέραιος - big integer (8 bytes)\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"Διεύθυνση IPv4\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"διεύθυνση IP\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"Η τιμή του '%s' πρέπει να είναι None, True ή False.\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"Boolean (Αληθές, Ψευδές, ή τίποτα)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"Θετικός ακέραιος\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"Θετικός μικρός ακέραιος\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"Μικρός ακέραιος\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"Κείμενο\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"Ώρα\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"Αρχείο\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"Εικόνα\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"Το μοντέλο %(model)s με πρωτεύον κλειδί %(pk)r δεν υπάρχει.\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"\"\n\"Εξωτερικό Κλειδί - Foreign Key (ο τύπος καθορίζεται από το πεδίο του \"\n\"συσχετισμού)\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"Σχέση ένα-προς-ένα\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"Σχέση πολλά-προς-πολλά\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"\"\n\"Κρατήστε πατημένο το πλήκτρο \\\"Control\\\" ή σε Mac το πλήκτρο \\\"Command\\\" για \"\n\"να επιλέξετε περισσότερα από ένα.\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"Αυτό το πεδίο είναι απαραίτητο.\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"Εισάγετε έναν ακέραιο αριθμό.\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"Εισάγετε έναν αριθμό.\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"Βεβαιωθείτε ότι δεν υπάρχουν πάνω από %s ψηφία συνολικά.\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"Βεβαιωθείτε ότι δεν υπάρχουν πάνω από %s δεκαδικά ψηφία.\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"Βεβαιωθείτε ότι δεν υπάρχουν πάνω από %s ψηφία πριν την υποδιαστολή.\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"Εισάγετε μια έγκυρη ημερομηνία.\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"Εισάγετε μια έγκυρη ώρα.\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"Εισάγετε μια έγκυρη ημερομηνία/ώρα.\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"\"\n\"Δεν έχει υποβληθεί κάποιο αρχείο. Ελέγξτε τον τύπο κωδικοποίησης στη φόρμα.\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"Δεν έχει υποβληθεί κάποιο αρχείο.\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"Το αρχείο που υποβλήθηκε είναι κενό.\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\"Βεβαιωθείτε ότι το όνομα του αρχείου έχει μέγιστο μήκος %(max)d χαρακτήρες \"\n\"(τώρα έχει %(length)d).\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"\"\n\"Βεβαιωθείτε ότι είτε έχετε επιλέξει ένα αρχείο για αποστολή είτε έχετε \"\n\"επιλέξει την εκκαθάριση του πεδίου. Δεν είναι δυνατή η επιλογή και των δύο \"\n\"ταυτοχρόνως.\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\"Βεβεαιωθείτε ότι το αρχείο που έχετε επιλέξει για αποστολή είναι αρχείο \"\n\"εικόνας. Το τρέχον είτε δεν ήταν εικόνα είτε έχει υποστεί φθορά.\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"Εισάγετε ένα έγκυρο URL.\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"\"\n\"Βεβαιωθείτε ότι έχετε επιλέξει μία έγκυρη επιλογή. Η τιμή %(value)s δεν \"\n\"είναι διαθέσιμη προς επιλογή.\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"Εισάγετε μια λίστα τιμών.\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"Ταξινόμηση\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"Διαγραφή\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"Στο %(field)s έχετε ξαναεισάγει τα ίδια δεδομένα.\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"\"\n\"Στο %(field)s έχετε ξαναεισάγει τα ίδια δεδομένα. Θα πρέπει να εμφανίζονται \"\n\"μία φορά. \"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\"Στο %(field_name)s έχετε ξαναεισάγει τα ίδια δεδομένα. Θα πρέπει να \"\n\"εμφανίζονται μία φορά για το %(lookup)s στο %(date_field)s.\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"Έχετε ξαναεισάγει την ίδια τιμη. Βεβαιωθείτε ότι είναι μοναδική.\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"\"\n\"Το ενσωματωμένο εξωτερικό κλειδί δεν αντιστοιχεί με το κλειδί του \"\n\"αντικειμένου από το οποίο πηγάζει.\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"\"\n\"Επιλέξτε μια έγκυρη επιλογή. Η επιλογή αυτή δεν είναι μία από τις διαθέσιμες \"\n\"επιλογές.\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"\"\n\"Επιλέξτε μια έγκυρη επιλογή. Η επιλογή %s δεν είναι μία από τις διαθέσιμες \"\n\"επιλογές.\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"Η %s δεν είναι έγκυρη επιλογή σαν πρωτεύον κλειδί.\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"Τώρα\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"Επεξεργασία\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"Εκκαθάσριση\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"Άγνωστο\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"Ναι\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"Όχι\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"ναι,όχι,ίσως\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"%(size)d bytes\"\nmsgstr[1] \"%(size)d bytes\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s KB\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s MB\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s GB\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s TB\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s PB\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"μμ.\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"πμ.\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"ΜΜ\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"ΠΜ\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"μεσάνυχτα\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"μεσημέρι\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"Δευτέρα\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"Τρίτη\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"Τετάρτη\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"Πέμπτη\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"Παρασκευή\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"Σάββατο\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"Κυριακή\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"Δευ\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"Τρί\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"Τετ\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"Πέμ\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"Παρ\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"Σαβ\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"Κυρ\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"Ιανουάριος\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"Φεβρουάριος\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"Μάρτιος\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"Απρίλιος\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"Μάιος\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"Ιούνιος\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"Ιούλιος\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"Αύγουστος\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"Σεπτέμβριος\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"Οκτώβριος\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"Νοέμβριος\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"Δεκέμβριος\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"Ιαν\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"Φεβ\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"Μάρ\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"Απρ\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"Μάι\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"Ιούν\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"Ιούλ\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"Αύγ\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"Σεπ\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"Οκτ\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"Νοέ\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"Δεκ\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"Ιαν.\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"Φεβ.\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"Μάρτιος\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"Απρίλ.\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"Μάιος\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"Ιούν.\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"Ιούλ.\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"Αύγ.\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"Σεπτ.\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"Οκτ.\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"Νοέμ.\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"Δεκ.\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"Ιανουαρίου\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"Φεβρουαρίου\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"Μαρτίου\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"Απριλίου\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"Μαΐου\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"Ιουνίου\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"Ιουλίου\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"Αυγούστου\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"Σεπτεμβρίου\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"Οκτωβρίου\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"Νοεμβρίου\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"Δεκεμβρίου\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"%(truncated_text)s...\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"ή\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \", \"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"χρόνος\"\nmsgstr[1] \"χρόνια\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"μήνας\"\nmsgstr[1] \"μήνες\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"εβδομάδα\"\nmsgstr[1] \"εβδομάδες\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"ημέρα\"\nmsgstr[1] \"ημέρες\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"ώρα\"\nmsgstr[1] \"ώρες\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"λεπτό\"\nmsgstr[1] \"λεπτά\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"λεπτά\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \", %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"Δεν έχει οριστεί χρονιά\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"Δεν έχει οριστεί μήνας\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"Δεν έχει οριστεί μέρα\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"Δεν έχει οριστεί εβδομάδα\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"Δεν υπάρχουν διαθέσιμα %(verbose_name_plural)s\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\"Μελλοντικά %(verbose_name_plural)s δεν είναι διαθέσιμα διότι δεν έχει τεθεί \"\n\"το %(class_name)s.allow_future.\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"\"\n\"Λανθασμένη αναπαράσταση ημερομηνίας '%(datestr)s' για την επιλεγμένη μορφή \"\n\"'%(format)s'\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"Δεν βρέθηκαν %(verbose_name)s που να ικανοποιούν την αναζήτηση.\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"\"\n\"Η σελίδα δεν έχει την τιμή 'last' υποδηλώνοντας την τελευταία σελίδα, ούτε \"\n\"μπορεί να μετατραπεί σε ακέραιο.\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"Άκυρη σελίδα (%(page_number)s): %(message)s\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"Άδεια λίστα ενώ '%(class_name)s.allow_empty' δεν έχει τεθεί.\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/el/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/conf/locale/el/formats.py",
    "content": "# -*- encoding: utf-8 -*-\n# This file is distributed under the same license as the Django package.\n#\n\n# The *_FORMAT strings use the Django date format syntax,\n# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\nDATE_FORMAT = 'd E Y'\nTIME_FORMAT = 'g:i:s A'\n# DATETIME_FORMAT = \nYEAR_MONTH_FORMAT = 'F Y'\nMONTH_DAY_FORMAT = 'j F'\nSHORT_DATE_FORMAT = 'd M Y'\n# SHORT_DATETIME_FORMAT = \n# FIRST_DAY_OF_WEEK = \n\n# The *_INPUT_FORMATS strings use the Python strftime format syntax,\n# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior\n# DATE_INPUT_FORMATS = \n# TIME_INPUT_FORMATS = \n# DATETIME_INPUT_FORMATS = \nDECIMAL_SEPARATOR = ','\nTHOUSAND_SEPARATOR = '.'\n# NUMBER_GROUPING = \n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/en/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2010-05-13 15:35+0200\\n\"\n\"Last-Translator: Django team\\n\"\n\"Language-Team: English <en@li.org>\\n\"\n\"Language: en\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \"\"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \"\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/en/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/conf/locale/en/formats.py",
    "content": "# -*- encoding: utf-8 -*-\n# This file is distributed under the same license as the Django package.\n#\n\n# The *_FORMAT strings use the Django date format syntax,\n# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\nDATE_FORMAT = 'N j, Y'\nTIME_FORMAT = 'P'\nDATETIME_FORMAT = 'N j, Y, P'\nYEAR_MONTH_FORMAT = 'F Y'\nMONTH_DAY_FORMAT = 'F j'\nSHORT_DATE_FORMAT = 'm/d/Y'\nSHORT_DATETIME_FORMAT = 'm/d/Y P'\nFIRST_DAY_OF_WEEK = 0 # Sunday\n\n# The *_INPUT_FORMATS strings use the Python strftime format syntax,\n# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior\n# Kept ISO formats as they are in first position\nDATE_INPUT_FORMATS = (\n    '%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', # '2006-10-25', '10/25/2006', '10/25/06'\n    # '%b %d %Y', '%b %d, %Y',            # 'Oct 25 2006', 'Oct 25, 2006'\n    # '%d %b %Y', '%d %b, %Y',            # '25 Oct 2006', '25 Oct, 2006'\n    # '%B %d %Y', '%B %d, %Y',            # 'October 25 2006', 'October 25, 2006'\n    # '%d %B %Y', '%d %B, %Y',            # '25 October 2006', '25 October, 2006'\n)\nDATETIME_INPUT_FORMATS = (\n    '%Y-%m-%d %H:%M:%S',     # '2006-10-25 14:30:59'\n    '%Y-%m-%d %H:%M',        # '2006-10-25 14:30'\n    '%Y-%m-%d',              # '2006-10-25'\n    '%m/%d/%Y %H:%M:%S',     # '10/25/2006 14:30:59'\n    '%m/%d/%Y %H:%M',        # '10/25/2006 14:30'\n    '%m/%d/%Y',              # '10/25/2006'\n    '%m/%d/%y %H:%M:%S',     # '10/25/06 14:30:59'\n    '%m/%d/%y %H:%M',        # '10/25/06 14:30'\n    '%m/%d/%y',              # '10/25/06'\n)\nDECIMAL_SEPARATOR = '.'\nTHOUSAND_SEPARATOR = ','\nNUMBER_GROUPING = 3\n\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/en_GB/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# jon_atkinson <jon@jonatkinson.co.uk>, 2011.\n#   <jon@jonatkinson.co.uk>, 2012.\n# Ross Poulton <ross@rossp.org>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:47+0000\\n\"\n\"Last-Translator: Ross Poulton <ross@rossp.org>\\n\"\n\"Language-Team: English (United Kingdom) (http://www.transifex.com/projects/p/\"\n\"django/language/en_GB/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: en_GB\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"Arabic\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"Azerbaijani\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"Bulgarian\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"Bengali\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"Bosnian\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"Catalan\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"Czech\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"Welsh\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"Danish\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"German\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"Greek\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"English\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"British English\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"Esperanto\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"Spanish\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"Argentinian Spanish\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"Mexican Spanish\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"Nicaraguan Spanish\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"Estonian\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"Basque\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"Persian\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"Finnish\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"French\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"Frisian\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"Irish\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"Galician\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"Hebrew\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"Hindi\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"Croatian\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"Hungarian\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"Indonesian\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"Icelandic\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"Italian\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"Japanese\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"Georgian\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"Kazakh\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"Khmer\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"Kannada\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"Korean\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"Lithuanian\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"Latvian\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"Macedonian\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"Malayalam\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"Mongolian\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"Norwegian Bokmal\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"Nepali\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"Dutch\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"Norwegian Nynorsk\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"Punjabi\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"Polish\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"Portuguese\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"Brazilian Portuguese\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"Romanian\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"Russian\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"Slovak\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"Slovenian\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"Albanian\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"Serbian\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"Serbian Latin\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"Swedish\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"Swahili\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"Tamil\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"Telugu\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"Thai\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"Turkish\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"Tatar\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"Ukrainian\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"Urdu\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"Vietnamese\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"Simplified Chinese\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"Traditional Chinese\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"Enter a valid value.\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"Enter a valid IPv4 address.\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"Enter a valid IPv6 address.\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"Enter a valid IPv4 or IPv6 address.\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"Enter only digits separated by commas.\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"Ensure this value is less than or equal to %(limit_value)s.\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"Ensure this value is greater than or equal to %(limit_value)s.\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"and\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"%(model_name)s with this %(field_label)s already exists.\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"Value %r is not a valid choice.\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"This field cannot be null.\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"This field cannot be blank.\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Field of type: %(field_type)s\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"Integer\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"'%s' value must be an integer.\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"'%s' value must be either True or False.\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Boolean (Either True or False)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"String (up to %(max_length)s)\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"Comma-separated integers\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"\"\n\"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"Date (without time)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"Date (with time)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"'%s' value must be a decimal number.\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"Decimal number\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"Email address\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"File path\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"'%s' value must be a float.\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"Floating point number\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"Big (8 byte) integer\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"IPv4 address\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"IP address\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"'%s' value must be either None, True or False.\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"Boolean (Either True, False or None)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"Positive integer\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"Positive small integer\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"Slug (up to %(max_length)s)\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"Small integer\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"Text\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"Time\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"File\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"Image\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"Model %(model)s with pk %(pk)r does not exist.\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"Foreign Key (type determined by related field)\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"One-to-one relationship\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"Many-to-many relationship\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"This field is required.\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"Enter a whole number.\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"Enter a number.\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"Ensure that there are no more than %s digits in total.\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"Ensure that there are no more than %s decimal places.\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"Ensure that there are no more than %s digits before the decimal point.\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"Enter a valid date.\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"Enter a valid time.\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"Enter a valid date/time.\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"No file was submitted. Check the encoding type on the form.\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"No file was submitted.\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"The submitted file is empty.\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"Please either submit a file or check the clear checkbox, not both.\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"Enter a valid URL.\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"Select a valid choice. %(value)s is not one of the available choices.\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"Enter a list of values.\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"Order\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"Delete\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"Please correct the duplicate data for %(field)s.\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"Please correct the duplicate data for %(field)s, which must be unique.\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"Please correct the duplicate values below.\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"The inline foreign key did not match the parent instance primary key.\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"\"\n\"Select a valid choice. That choice is not one of the available choices.\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"Select a valid choice. %s is not one of the available choices.\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"\\\"%s\\\" is not a valid value for a primary key.\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"Currently\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"Change\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"Clear\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"Unknown\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"Yes\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"No\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"yes,no,maybe\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"%(size)d byte\"\nmsgstr[1] \"%(size)d bytes\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s KB\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s MB\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s GB\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s TB\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s PB\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"p.m.\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"a.m.\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"PM\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"AM\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"midnight\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"noon\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"Monday\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"Tuesday\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"Wednesday\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"Thursday\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"Friday\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"Saturday\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"Sunday\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"Mon\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"Tue\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"Wed\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"Thu\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"Fri\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"Sat\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"Sun\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"January\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"February\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"March\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"April\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"May\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"June\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"July\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"August\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"September\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"October\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"November\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"December\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"jan\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"feb\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"mar\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"apr\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"may\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"jun\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"jul\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"aug\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"sep\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"oct\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"nov\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"dec\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"Jan.\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"Feb.\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"March\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"April\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"May\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"June\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"July\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"Aug.\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"Sept.\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"Oct.\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"Nov.\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"Dec.\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"January\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"February\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"March\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"April\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"May\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"June\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"July\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"August\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"September\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"October\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"November\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"December\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"%(truncated_text)s...\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"or\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \", \"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"year\"\nmsgstr[1] \"years\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"month\"\nmsgstr[1] \"months\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"week\"\nmsgstr[1] \"weeks\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"day\"\nmsgstr[1] \"days\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"hour\"\nmsgstr[1] \"hours\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"minute\"\nmsgstr[1] \"minutes\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"minutes\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \", %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"Directory indexes are not allowed here.\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\\\"%(path)s\\\" does not exist\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"Index of %(directory)s\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"No year specified\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"No month specified\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"No day specified\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"No week specified\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"No %(verbose_name_plural)s available\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"Invalid date string '%(datestr)s' given format '%(format)s'\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"No %(verbose_name)s found matching the query\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"Page is not 'last', nor can it be converted to an int.\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"Empty list and '%(class_name)s.allow_empty' is False.\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/en_GB/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/conf/locale/en_GB/formats.py",
    "content": "# -*- encoding: utf-8 -*-\n# This file is distributed under the same license as the Django package.\n#\n\n# The *_FORMAT strings use the Django date format syntax,\n# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\nDATE_FORMAT = 'j M Y'                   # '25 Oct 2006'\nTIME_FORMAT = 'P'                       # '2:30 pm'\nDATETIME_FORMAT = 'j M Y, P'            # '25 Oct 2006, 2:30 pm'\nYEAR_MONTH_FORMAT = 'F Y'               # 'October 2006'\nMONTH_DAY_FORMAT = 'j F'                # '25 October'\nSHORT_DATE_FORMAT = 'd/m/Y'             # '25/10/2006'\nSHORT_DATETIME_FORMAT = 'd/m/Y P'       # '25/10/2006 2:30 pm'\nFIRST_DAY_OF_WEEK = 0                   # Sunday\n\n# The *_INPUT_FORMATS strings use the Python strftime format syntax,\n# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior\nDATE_INPUT_FORMATS = (\n    '%d/%m/%Y', '%d/%m/%y',             # '25/10/2006', '25/10/06'\n    # '%b %d %Y', '%b %d, %Y',          # 'Oct 25 2006', 'Oct 25, 2006'\n    # '%d %b %Y', '%d %b, %Y',          # '25 Oct 2006', '25 Oct, 2006'\n    # '%B %d %Y', '%B %d, %Y',          # 'October 25 2006', 'October 25, 2006'\n    # '%d %B %Y', '%d %B, %Y',          # '25 October 2006', '25 October, 2006'\n)\nDATETIME_INPUT_FORMATS = (\n    '%Y-%m-%d %H:%M:%S',                # '2006-10-25 14:30:59'\n    '%Y-%m-%d %H:%M',                   # '2006-10-25 14:30'\n    '%Y-%m-%d',                         # '2006-10-25'\n    '%d/%m/%Y %H:%M:%S',                # '25/10/2006 14:30:59'\n    '%d/%m/%Y %H:%M',                   # '25/10/2006 14:30'\n    '%d/%m/%Y',                         # '25/10/2006'\n    '%d/%m/%y %H:%M:%S',                # '25/10/06 14:30:59'\n    '%d/%m/%y %H:%M',                   # '25/10/06 14:30'\n    '%d/%m/%y',                         # '25/10/06'\n)\nDECIMAL_SEPARATOR = '.'\nTHOUSAND_SEPARATOR = ','\nNUMBER_GROUPING = 3\n\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/eo/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <adam.raizen@gmail.com>, 2012.\n# Baptiste  <bapdarth@yahoo.fr>, 2012.\n# Baptiste  <baptiste+transifex@darthenay.fr>, 2012.\n# batisteo <bapdarth@yahoo·fr>, 2011.\n#   <gherman@darwin.in-berlin.de>, 2011.\n# kristjan <kristjan.schmidt@googlemail.com>, 2011.\n#   <kristjan.schmidt@googlemail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:47+0000\\n\"\n\"Last-Translator: sagittarian <adam.raizen@gmail.com>\\n\"\n\"Language-Team: Esperanto (http://www.transifex.com/projects/p/django/\"\n\"language/eo/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: eo\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"Araba\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"Azerbajĝana\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"Bulgara\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"Bengala\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"Bosnia\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"Kataluna\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"Ĉeĥa\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"Kimra\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"Dana\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"Germana\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"Greka\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"Angla\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"Angla (Brita)\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"Esperanto\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"Hispana\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"Hispana (Argentinio)\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"Hispana (Meksiko)\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"Hispana (Nikaragvo)\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"Estona\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"Eŭska\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"Persa\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"Finna\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"Franca\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"Frisa\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"Irlanda\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"Galega\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"Hebrea\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"Hinda\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"Kroata\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"Hungara\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"Indoneza\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"Islanda\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"Itala\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"Japana\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"Kartvela\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"Kazaĥa\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"Kmera\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"Kanara\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"Korea\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"Litova\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"Latva\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"Makedona\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"Malajala\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"Mongola\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"Norvega (bokmål)\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"Nepala\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"Nederlanda\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"Norvega (nynorsk)\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"Panĝaba\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"Pola\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"Portugala\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"Portugala (Brazilo)\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"Rumana\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"Rusa\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"Slovaka\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"Slovena\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"Albana\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"Serba\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"Serba (latina)\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"Sveda\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"Svahila\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"Tamila\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"Telugua\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"Taja\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"Turka\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"Tatara\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"Ukraina\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"Urdua\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"Vjetnama\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"Ĉina (simpligite)\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"Ĉina (tradicie)\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"Enigu validan valoron.\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"\"\n\"Tiu kampo nur devas havi literojn, nombrojn, substrekojn aŭ streketojn.\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"Enigu validan IPv4-adreson.\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"Enigu validan IPv6-adreson.\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"Enigu validan IPv4 aŭ IPv6-adreson.\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"Enigu nur ciferojn apartigitajn per komoj.\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"\"\n\"Certigu ke ĉi tiu valoro estas %(limit_value)s (ĝi estas %(show_value)s). \"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"Certigu ke ĉi tiu valoro estas malpli ol aŭ egala al %(limit_value)s.\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"Certigu ke ĉi tiu valoro estas pli ol aŭ egala al %(limit_value)s.\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Certigu ke ĉi tiu valoro havas almenaŭ %(limit_value)d signoj (ĝi havas \"\n\"%(show_value)d).\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Certigu ke ĉi tiu valoro havas maksimume %(limit_value)d signoj (ĝi havas \"\n\"%(show_value)d).\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"%(field_name)s devas esti unika por %(date_field)s %(lookup)s.\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"kaj\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"%(model_name)s kun tiu %(field_label)s jam ekzistas.\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"Valoro %r ne estas valida elekto.\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"Tiu ĉi kampo ne povas esti senvalora (null).\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"Tiu ĉi kampo ne povas esti malplena.\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Kampo de tipo: %(field_type)s\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"Entjero\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"'%s' valoro devas esti entjero.\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"'%s' valoro devas esti Vera aŭ Malvera\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Bulea (Vera aŭ Malvera)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"Ĉeno (ĝis %(max_length)s)\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"Kom-apartigitaj entjeroj\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"\"\n\"'%s' valoro ne havas validan datformaton. Ĝi devas esti kiel formato JJJJ-MM-\"\n\"TT.\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"\"\n\"'%s' valoro havas la ĝustan formaton (JJJJ-MM-TT), sed ne estas valida dato.\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"Dato (sen horo)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\"'%s' valoro ne havas validan formaton. Ĝi devas esti kiel formato JJJJ-MM-TT \"\n\"HH:MM[:ss[.uuuuuu]][HZ].\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\"'%s' valoro havas la ĝustan formaton (JJJJ-MM-TT HH:MM[:ss[.uuuuuu]][HZ]), \"\n\"sed ne estas valida dato kaj horo.\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"Dato (kun horo)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"'%s' valoro devas esti dekuma nombro.\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"Dekuma nombro\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"Retpoŝtadreso\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"Dosiervojo\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"'%s' valoro devas esti glitkoma nombro.\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"Glitkoma nombro\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"Granda (8 bitoka) entjero\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"IPv4-adreso\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"IP-adreso\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"'%s' valoro devas esti Neniu, Vera aŭ Malvera.\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"Buleo (Vera, Malvera aŭ Neniu)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"Pozitiva entjero\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"Pozitiva malgranda entjero\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"Ĵetonvorto (ĝis %(max_length)s)\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"Malgranda entjero\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"Teksto\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"\"\n\"'%s' valoro ne havas validan formaton. Ĝi devas esti laŭ la formato HH:MM[:ss\"\n\"[.uuuuuu]].\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\"'%s' valoro havas ĝustan formaton (HH:MM[:ss[.uuuuuu]]), sed ne estas valida \"\n\"horo.\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"Horo\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"Dosiero\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"Bildo\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"Modelo %(model)s kun ĉefŝlosilo %(pk)r ne ekzistas.\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"Fremda ŝlosilo (tipo determinita per rilata kampo)\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"Unu-al-unu rilato\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"Mult-al-multa rilato\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"\"\n\"Premadu la stirklavon, aŭ Komando-klavon ĉe Mac, por elekti pli ol unu.\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"Ĉi tiu kampo estas deviga.\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"Enigu plenan nombron.\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"Enigu nombron.\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"Certigu ke ne estas pli ol %s ciferoj entute.\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"Certigu ke ne estas pli ol %s dekumaj lokoj.\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"Certigu ke ne estas pli ol %s ciferoj antaŭ la dekuma punkto.\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"Enigu validan daton.\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"Enigu validan horon.\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"Enigu validan daton/tempon.\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"\"\n\"Neniu dosiero estis alŝutita. Kontrolu la kodoprezentan tipon en la \"\n\"formularo.\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"Neniu dosiero estis alŝutita.\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"La alŝutita dosiero estas malplena.\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\"Certigu ke ĉi tiu valoro havas maksimume %(max)d signojn (ĝi havas \"\n\"%(length)d).\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"\"\n\"Bonvolu aŭ alŝuti dosieron, aŭ elekti la malplenan markobutonon, ne ambaŭ.\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\"Alŝutu validan bildon. La alŝutita dosiero ne estas bildo, aŭ estas \"\n\"difektita bildo.\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"Enigu validan adreson.\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"Elektu validan elekton. %(value)s ne estas el la eblaj elektoj.\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"Enigu liston de valoroj.\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"Ordo\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"Forigi\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"Bonvolu ĝustigi la duoblan datumon por %(field)s.\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"\"\n\"Bonvolu ĝustigi la duoblan datumon por %(field)s, kiu devas esti unika.\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\"Bonvolu ĝustigi la duoblan datumon por %(field_name)s, kiu devas esti unika \"\n\"por la %(lookup)s en %(date_field)s.\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"Bonvolu ĝustigi la duoblan valoron sube.\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"La enteksta fremda ŝlosilo ne egalis la ĉefŝlosilon de patra apero.\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"Elektu validan elekton. Ĉi tiu elekto ne estas el la eblaj elektoj.\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"Elektu validan elekton. %s ne estas el la eblaj elektoj.\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"\\\"%s\\\" ne estas valida valoro por ĉefŝlosilo\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\"%(datetime)s ne povus esti interpretita en horzono %(current_timezone)s; ĝi \"\n\"povas esti plursenca aŭ ne ekzistas.\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"Nuntempe\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"Ŝanĝi\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"Vakigi\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"Nekonate\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"Jes\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"Ne\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"jes,ne,eble\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"%(size)d bitoko\"\nmsgstr[1] \"%(size)d bitokoj\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s KB\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s MB\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s GB\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s TB\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s PB\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"ptm\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"atm\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"PTM\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"ATM\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"noktomezo\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"tagmezo\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"lundo\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"mardo\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"merkredo\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"ĵaŭdo\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"vendredo\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"sabato\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"dimanĉo\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"lun\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"mar\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"mer\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"ĵaŭ\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"ven\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"sab\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"dim\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"Januaro\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"Februaro\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"Marto\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"Aprilo\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"Majo\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"Junio\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"Julio\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"Aŭgusto\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"Septembro\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"Oktobro\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"Novembro\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"Decembro\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"jan\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"feb\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"mar\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"apr\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"maj\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"jun\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"jul\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"aŭg\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"sep\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"okt\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"nov\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"dec\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"Jan.\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"Feb.\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"Marto\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"Aprilo\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"Majo\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"Junio\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"Julio\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"Aŭg.\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"Sept.\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"Okt.\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"Nov.\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"Dec.\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"Januaro\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"Februaro\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"Marto\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"Aprilo\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"Majo\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"Junio\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"Julio\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"Aŭgusto\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"Septembro\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"Oktobro\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"Novembro\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"Decembro\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"%(truncated_text)s...\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"aŭ\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \", \"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"jaro\"\nmsgstr[1] \"jaroj\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"monato\"\nmsgstr[1] \"monatoj\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"semajno\"\nmsgstr[1] \"semajnoj\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"tago\"\nmsgstr[1] \"tagoj\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"horo\"\nmsgstr[1] \"horoj\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"minuto\"\nmsgstr[1] \"minutoj\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"minutoj\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \", %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"Dosierujaj indeksoj ne estas permesitaj tie.\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\\\"%(path)s\\\" ne ekzistas\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"Indekso de %(directory)s\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"Neniu jaro specifita\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"Neniu monato specifita\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"Neniu tago specifita\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"Neniu semajno specifita\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"Neniu %(verbose_name_plural)s disponeblaj\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\"Estonta %(verbose_name_plural)s ne disponeblas ĉar %(class_name)s.\"\n\"allow_future estas Malvera.\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"\"\n\"La formato « %(format)s » aplikita al la data ĉeno '%(datestr)s' ne estas \"\n\"valida\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"Neniu %(verbose_name)s trovita kongruas kun la informpeto\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"Paĝo ne estas 'last', kaj ne povus esti transformita al entjero.\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"Malplena listo kaj '%(class_name)s.allow_empty' estas Malvera.\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/es/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Antoni Aloy <aaloy@apsl.net>, 2012.\n# Antoni Aloy <antoni.aloy@trespams.com>, 2011, 2012.\n# Diego Andrés Sanabria <diegueus9@gmail.com>, 2012.\n# Diego Schulz <dschulz@gmail.com>, 2012.\n# franchukelly <fcocuadrado@gmail.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Leonardo J. Caballero G. <leonardocaballero@gmail.com>, 2011.\n# Marc Garcia <garcia.marc@gmail.com>, 2011.\n#   <monobot.soft@gmail.com>, 2012.\n#  <ntrrgc@gmail.com>, 2013.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-17 21:09+0000\\n\"\n\"Last-Translator: ntrrgc <ntrrgc@gmail.com>\\n\"\n\"Language-Team: Spanish (http://www.transifex.com/projects/p/django/language/\"\n\"es/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: es\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"Afrikaans\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"Árabe\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"Azerbaiyán\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"Búlgaro\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"Bielorruso\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"Bengalí\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"Bretón\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"Bosnio\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"Catalán\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"Checo\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"Galés\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"Danés\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"Alemán\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"Griego\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"Inglés\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"Inglés británico\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"Esperanto\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"Español\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"Español de Argentina\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"Español de México\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"Español de Nicaragua\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"Español venezolano\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"Estonio\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"Vasco\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"Persa\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"Finés\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"Francés\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"Frisón\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"Irlandés\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"Gallego\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"Hebreo\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"Hindi\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"Croata\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"Húngaro\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"Interlingua\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"Indonesio\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"Islandés\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"Italiano\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"Japonés\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"Georgiano\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"Kazajo\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"Khmer\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"Kannada\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"Koreano\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"Luxenburgués\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"Lituano\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"Letón\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"Macedonio\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"Malayalam\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"Mongol\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"Nokmål\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"Nepalí\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"Holandés\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"Nynorsk\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"Panyabí\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"Polaco\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"Portugués\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"Portugués de Brasil\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"Rumano\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"Ruso\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"Eslovaco\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"Esloveno\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"Albanés\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"Serbio\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"Serbio latino\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"Sueco\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"Suajili\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"Tamil\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"Telugu\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"Tailandés\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"Turco\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"Tártaro\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"Udmurt\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"Ucraniano\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"Urdu\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"Vietnamita\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"Cino simplificado\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"Chino tradicional\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"Introduzca un valor correcto.\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"Introduzca una dirección de correo electrónica válida.\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"\"\n\"Introduzca un 'slug' válido, consistente en letras, números, guiones bajos o \"\n\"medios.\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"Introduzca una dirección IPv4 válida.\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"Introduzca una dirección IPv6 válida.\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"Introduzca una dirección IPv4 o IPv6 válida.\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"Introduzca sólo dígitos separados por comas.\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"\"\n\"Asegúrese de que este valor es %(limit_value)s (actualmente es \"\n\"%(show_value)s).\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"Asegúrese de que este valor es menor o igual a %(limit_value)s.\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"Asegúrese de que este valor es mayor o igual a %(limit_value)s.\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Asegúrese de que este valor tiene al menos %(limit_value)d caracteres \"\n\"(actualmente tiene %(show_value)d).\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Asegúrese de que este valor tiene como mucho %(limit_value)d caracteres \"\n\"(actualmente tiene %(show_value)d).\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"El campo %(field_name)s debe ser único para %(lookup)s %(date_field)s\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"y\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"Ya existe %(model_name)s con este %(field_label)s.\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"El valor %r no es una opción válida.\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"Este campo no puede ser nulo.\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"Este campo no puede estar vacío.\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Campo de tipo: %(field_type)s\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"Entero\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"El valor '%s' debe ser un entero.\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"El valor '%s' debe ser True o False.\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Booleano (Verdadero o Falso)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"Cadena (máximo %(max_length)s)\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"Enteros separados por comas\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"\"\n\"El valor '%s' tiene formato de fecha inválido. Debe ser de la forma YYYY-MM-\"\n\"DD.\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"\"\n\"El valor '%s' tiene el formato correcto (YYYY-MM-DD) pero es una fecha no \"\n\"válida\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"Fecha (sin hora)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\"'%s' tiene un formato incorrecto. Debe ser del tipo YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ].\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\"El valor '%s' tiene el formato correcto (YYYY-MM-DD HH: MM [:ss [.uuuuuu]] \"\n\"[TZ]), pero no es una fecha/hora válida.\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"Fecha (con hora)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"El valor '%s' debe ser un número decimal.\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"Número decimal\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"dirección de correo electrónico\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"Ruta de fichero\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"El valor '%s' debe ser un número decimal.\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"Número en coma flotante\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"Entero grande (8 bytes)\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"Dirección IPv4\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"Dirección IP\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"El valor '%s' debe ser None, True o False.\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"Booleano (Verdadero, Falso o Nulo)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"Entero positivo\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"Entero positivo corto\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"Slug (hasta %(max_length)s)\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"Entero corto\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"Texto\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"\"\n\"El valor '%s' tiene un formato inválido. Debe ser de la forma HH:MM[:ss[.\"\n\"uuuuuu]].\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\"El valor '%s' tiene el formato correcto (HH:MM[:ss[.uuuuuu]]) pero no \"\n\"representa una tiempo válido.\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"Hora\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"Archivo\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"Imagen\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"No existe ningún objeto %(model)s con la clave primaria %(pk)r.\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"Llave foránea (tipo determinado por el campo relacionado)\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"Relación uno-a-uno\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"Relación muchos-a-muchos\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"\"\n\"Mantenga presionado \\\"Control\\\", o \\\"Command\\\" en un Mac, para seleccionar \"\n\"más de una opción.\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"Este campo es obligatorio.\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"Introduzca un número entero.\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"Introduzca un número.\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"Asegúrese de que no hay más de %s dígitos en total.\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"Asegúrese de que no hay más de %s decimales.\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"Asegúrese de que no hay más de %s dígitos antes de la coma decimal.\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"Introduzca una fecha válida.\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"Introduzca una hora válida.\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"Introduzca una fecha/hora válida.\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"\"\n\"No se ha enviado ningún fichero. Compruebe el tipo de codificación en el \"\n\"formulario.\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"No se ha enviado ningún fichero\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"El fichero enviado está vacío.\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\"Asegúrese de que su texto tiene no más de %(max)d caracteres (actualmente \"\n\"tiene %(length)d).\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"\"\n\"Por favor envíe un fichero o marque la casilla de limpiar, pero no ambos.\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\"Envíe una imagen válida. El fichero que ha enviado no era una imagen o se \"\n\"trataba de una imagen corrupta.\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"Introduzca una URL válida.\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"\"\n\"Escoja una opción válida. %(value)s no es una de las opciones disponibles.\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"Introduzca una lista de valores.\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"Orden\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"Eliminar\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"Por favor, corrija el dato duplicado para %(field)s.\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"\"\n\"Por favor corriga el dato duplicado para %(field)s, el cual debe ser único.\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\"Por favor corriga los datos duplicados para %(field_name)s el cual debe ser \"\n\"único para %(lookup)s en %(date_field)s.\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"Por favor, corrija los valores duplicados abajo.\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"\"\n\"La clave foránea en linea no coincide con la clave primaria de la instancia \"\n\"padre.\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"Escoja una opción válida. Esa opción no está entre las disponibles.\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"Escoja una opción válida; %s no es una de las opciones disponibles.\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"\\\"%s\\\" no es un valor válido para una clave primaria.\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\"%(datetime)s no puede interpretarse en la zona temporal \"\n\"%(current_timezone)s; puede ser ambiguo o puede no existir.\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"Actualmente\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"Modificar\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"Limpiar\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"Desconocido\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"Sí\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"No\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"sí, no, quizás\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"%(size)d byte\"\nmsgstr[1] \"%(size)d bytes\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s KB\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s MB\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s GB\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s TB\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s PB\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"p.m.\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"a.m.\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"PM\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"AM\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"media noche\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"medio día\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"Lunes\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"Martes\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"Miércoles\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"Jueves\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"Viernes\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"Sábado\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"Domingo\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"Lun\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"Mar\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"Mié\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"Jue\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"Vie\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"Sáb\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"Dom\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"Enero\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"Febrero\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"Marzo\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"Abril\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"Mayo\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"Junio\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"Julio\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"Agosto\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"Septiembre\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"Octubre\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"Noviembre\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"Diciembre\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"Ene\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"Feb\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"Mar\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"Abr\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"May\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"Jun\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"Jul\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"Ago\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"Sep\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"Oct\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"Nov\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"Dic\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"Ene.\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"Feb.\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"Mar.\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"Abr.\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"Mayo\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"Jun.\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"Jul.\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"Ago.\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"Sept.\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"Oct.\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"Nov.\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"Dic.\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"Enero\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"Febrero\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"Marzo\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"Abril\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"Mayo\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"Junio\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"Julio\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"Agosto\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"Septiembre\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"Octubre\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"Noviembre\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"Diciembre\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"%(truncated_text)s...\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"o\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \", \"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"año\"\nmsgstr[1] \"años\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"mes\"\nmsgstr[1] \"meses\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"semana\"\nmsgstr[1] \"semanas\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"día\"\nmsgstr[1] \"días\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"hora\"\nmsgstr[1] \"horas\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"minuto\"\nmsgstr[1] \"minutos\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"minutos\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \", %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"Los índices de directorio no están permitidos.\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\\\"%(path)s\\\" no existe\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"Índice de %(directory)s\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"No se ha indicado el año\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"No se ha indicado el mes\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"No se ha indicado el día\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"No se ha indicado la semana\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"No %(verbose_name_plural)s disponibles\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\"Los futuros %(verbose_name_plural)s no están disponibles porque \"\n\"%(class_name)s.allow_future es Falso.\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"Fecha '%(datestr)s' no válida, el formato válido es '%(format)s'\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"No se encontró ningún %(verbose_name)s coincidente con la consulta\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"La página no es la \\\"ultima\\\", ni puede ser convertida a un entero.\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"Página inválida (%(page_number)s): %(message)s\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"Lista vacía y '%(class_name)s.allow_empty' es Falso.\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/es/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/conf/locale/es/formats.py",
    "content": "# -*- encoding: utf-8 -*-\n# This file is distributed under the same license as the Django package.\n#\n\n# The *_FORMAT strings use the Django date format syntax,\n# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\nDATE_FORMAT = r'j \\d\\e F \\d\\e Y'\nTIME_FORMAT = 'H:i:s'\nDATETIME_FORMAT = r'j \\d\\e F \\d\\e Y \\a \\l\\a\\s H:i'\nYEAR_MONTH_FORMAT = r'F \\d\\e Y'\nMONTH_DAY_FORMAT = r'j \\d\\e F'\nSHORT_DATE_FORMAT = 'd/m/Y'\nSHORT_DATETIME_FORMAT = 'd/m/Y H:i'\nFIRST_DAY_OF_WEEK = 1 # Monday\n\n# The *_INPUT_FORMATS strings use the Python strftime format syntax,\n# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior\nDATE_INPUT_FORMATS = (\n    # '31/12/2009', '31/12/09'\n    '%d/%m/%Y', '%d/%m/%y'\n)\nDATETIME_INPUT_FORMATS = (\n    '%d/%m/%Y %H:%M:%S',\n    '%d/%m/%Y %H:%M',\n    '%d/%m/%y %H:%M:%S',\n    '%d/%m/%y %H:%M',\n)\nDECIMAL_SEPARATOR = ','\nTHOUSAND_SEPARATOR = '.'\nNUMBER_GROUPING = 3\n\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/es_AR/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Ramiro Morales <cramm0@gmail.com>, 2011-2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:47+0000\\n\"\n\"Last-Translator: Ramiro Morales <cramm0@gmail.com>\\n\"\n\"Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/\"\n\"django/language/es_AR/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: es_AR\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"afrikáans\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"árabe\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"Azerbaiyán\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"búlgaro\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"bielorruso\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"bengalí\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"bretón\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"bosnio\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"catalán\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"checo\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"galés\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"danés\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"alemán\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"griego\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"inglés\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"inglés británico\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"esperanto\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"español\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"español de Argentina\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"Español de México\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"Español (Nicaragua)\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"español de Venezuela\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"estonio\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"vasco\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"persa\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"finlandés\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"francés\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"frisón\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"irlandés\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"gallego\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"hebreo\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"hindi\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"croata\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"húngaro\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"Interlingua\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"indonesio\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"islandés\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"italiano\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"japonés\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"georgiano\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"kazajo\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"jémer\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"canarés\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"coreano\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"luxemburgués\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"lituano\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"letón\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"macedonio\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"Malayalam\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"mongol\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"bokmål\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"nepalés\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"holandés\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"nynorsk\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"Panyabí\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"polaco\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"portugués\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"portugués de Brasil\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"rumano\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"ruso\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"eslovaco\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"esloveno\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"albanés\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"serbio\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"Latín de Serbia\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"sueco\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"suajili\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"tamil\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"telugu\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"tailandés\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"turco\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"tártaro\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"udmurto\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"ucraniano\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"urdu\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"vietnamita\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"chino simplificado\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"chino tradicional\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"Introduzca un valor válido.\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"Introduzca una dirección de email válida.\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"Introduzca un 'slug' válido consistente de letras, números o guiones.\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"Introduzca una dirección IPv4 válida\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"Introduzca una dirección IPv6 válida.\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"Introduzca una dirección IPv4 o IPv6 válida.\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"Introduzca sólo dígitos separados por comas.\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"\"\n\"Asegúrese de que este valor sea %(limit_value)s (actualmente es \"\n\"%(show_value)s).\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"Asegúrese de que este valor sea menor o igual a %(limit_value)s.\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"Asegúrese de que este valor sea mayor o igual a %(limit_value)s.\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Asegúrese de que este valor tenga al menos %(limit_value)d caracteres (tiene \"\n\"%(show_value)d).\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Asegúrese de que este valor tenga como máximo %(limit_value)d caracteres \"\n\"(tiene %(show_value)d).\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"\"\n\"%(field_name)s debe ser único/a para un %(lookup)s %(date_field)s \"\n\"determinado.\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"y\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"Ya existe un/a %(model_name)s con este/a %(field_label)s.\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"El valor %r no es una opción válida.\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"Este campo no puede ser nulo.\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"Este campo no puede estar en blanco.\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Campo tipo: %(field_type)s\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"Entero\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"El valor de '%s' debe ser un número entero.\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"El valor de '%s' debe ser Verdadero o Falso.\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Booleano (Verdadero o Falso)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"Cadena (máximo %(max_length)s)\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"Enteros separados por comas\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"\"\n\"El valor de '%s' tiene un formato de fecha inválido. El mismo debe usar el \"\n\"formato AAAA-MM-DD.\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"\"\n\"El valor de '%s' tiene un formato de fecha correcto (AAAA-MM-DD) pero \"\n\"representa una fecha inválida.\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"Fecha (sin hora)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\"El valor de '%s' tiene un formato inválido. El mismo debe usar el formato \"\n\"AAAA-MM-DD HH:MM[:ss[.uuuuuu]][TZ].\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\"El valor de '%s' tiene un formato correcto (AAAA-MM-DD HH:MM[:ss[.uuuuuu]]\"\n\"[TZ]) pero representa una fecha/hora invalida.\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"Fecha (con hora)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"El valor de '%s' debe ser un número decimal.\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"Número decimal\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"Dirección de correo electrónico\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"Ruta de archivo\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"El valor de '%s' debe ser un número de coma flotante.\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"Número de punto flotante\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"Entero grande (8 bytes)\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"Dirección IPv4\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"Dirección IP\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"El valor de '%s' debe ser None, Verdadero o Falso.\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"Booleano (Verdadero, Falso o Nulo)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"Entero positivo\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"Entero pequeño positivo\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"Slug (de hasta %(max_length)s caracteres)\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"Entero pequeño\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"Texto\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"\"\n\"El valor de '%s' tiene un formato inválido. El mismo debe usar el formato HH:\"\n\"MM[:ss[.uuuuuu]].\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\"El valor de '%s' tiene un formato correcto (HH:MM[:ss[.uuuuuu]]) pero \"\n\"representa una hora inválida.\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"Hora\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"Archivo\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"Imagen\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"No existe un modelo %(model)s con una clave primaria %(pk)r.\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"Clave foránea (el tipo está determinado por el campo relacionado)\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"Relación uno-a-uno\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"Relación muchos-a-muchos\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"\"\n\"Mantenga presionada \\\"Control\\\" (\\\"Command\\\" en una Mac) para seleccionar \"\n\"más de uno.\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"Este campo es obligatorio.\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"Introduzca un número entero.\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"Introduzca un número.\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"Asegúrese de que no existan en total mas de %s dígitos.\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"Asegúrese de que no existan mas de %s lugares decimales.\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"Asegúrese de que no existan mas de %s dígitos antes del punto decimal.\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"Introduzca una fecha válida.\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"Introduzca un valor de hora válido.\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"Introduzca un valor de fecha/hora válido.\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"\"\n\"No se envió un archivo. Verifique el tipo de codificación en el formulario.\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"No se envió ningún archivo.\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"El archivo enviado está vacío.\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\"Asegúrese de que este nombre de archivo tenga como máximo %(max)d caracteres \"\n\"(tiene %(length)d).\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"Por favor envíe un archivo o active el checkbox, pero no ambas cosas.\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\"Seleccione una imagen válida. El archivo que ha seleccionado no es una \"\n\"imagen o es un un archivo de imagen corrupto.\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"Introduzca una URL válida.\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"\"\n\"Seleccione una opción válida. %(value)s no es una de las opciones \"\n\"disponibles.\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"Introduzca una lista de valores.\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"Ordenar\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"Eliminar\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"Por favor, corrija la información duplicada en %(field)s.\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"\"\n\"Por favor corrija la información duplicada en %(field)s, que debe ser única.\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\"Por favor corrija la información duplicada en %(field_name)s que debe ser \"\n\"única para el %(lookup)s en %(date_field)s.\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"Por favor, corrija los valores duplicados detallados mas abajo.\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"\"\n\"La clave foránea del modelo inline no coincide con la clave primaria de la \"\n\"instancia padre.\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"\"\n\"Seleccione una opción válida. La opción seleccionada no es una de las \"\n\"disponibles.\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"\"\n\"Seleccione una opción válida. %s no es una de las opciones disponibles.\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"\\\"%s\\\" no es un valor válido para una clave primaria.\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\"%(datetime)s no puede ser interpretado en la zona horaria \"\n\"%(current_timezone)s; ya que podría ser ambiguo o podría no existir.\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"Actualmente\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"Modificar\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"Eliminar\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"Desconocido\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"Sí\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"No\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"si,no,talvez\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"%(size)d byte\"\nmsgstr[1] \"%(size)d bytes\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s KB\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s MB\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s GB\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s TB\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s PB\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"p.m.\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"a.m.\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"PM\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"AM\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"medianoche\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"mediodía\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"Lunes\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"Martes\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"Miércoles\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"Jueves\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"Viernes\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"Sábado\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"Domingo\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"Lun\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"Mar\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"Mie\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"Jue\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"Vie\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"Sab\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"Dom\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"Enero\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"Febrero\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"Marzo\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"Abril\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"Mayo\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"Junio\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"Julio\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"Agosto\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"Setiembre\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"Octubre\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"Noviembre\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"Diciembre\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"ene\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"feb\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"mar\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"abr\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"may\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"jun\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"jul\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"ago\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"set\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"oct\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"nov\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"dic\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"Enero\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"Feb.\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"Marzo\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"Abril\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"Mayo\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"Junio\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"Julio\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"Ago.\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"Set.\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"Oct.\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"Nov.\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"Dic.\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"Enero\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"Febrero\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"Marzo\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"Abril\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"Mayo\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"Junio\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"Julio\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"Agosto\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"Setiembre\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"Octubre\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"Noviembre\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"Diciembre\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"%(truncated_text)s...\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"o\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \", \"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"año\"\nmsgstr[1] \"años\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"mes\"\nmsgstr[1] \"meses\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"semana\"\nmsgstr[1] \"semanas\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"día\"\nmsgstr[1] \"días\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"hora\"\nmsgstr[1] \"horas\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"minuto\"\nmsgstr[1] \"minutos\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"minutos\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \", %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"\"\n\"No está habilitada la generación de listados de directorios en esta \"\n\"ubicación.\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\\\"%(path)s\\\" no existe\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"Listado de %(directory)s\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"No se ha especificado el valor año\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"No se ha especificado el valor mes\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"No se ha especificado el valor día\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"No se ha especificado el valor semana\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"No hay %(verbose_name_plural)s disponibles\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\"No hay %(verbose_name_plural)s futuros disponibles porque %(class_name)s.\"\n\"allow_future tiene el valor False.\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"Cadena de fecha inválida '%(datestr)s', formato '%(format)s'\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"No se han encontrado %(verbose_name)s que coincidan con la consulta \"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"Página debe tener el valor 'last' o un valor número entero.\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"Página inválida (%(page_number)s): %(message)s\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"Lista vacía y '%(class_name)s.allow_empty' tiene el valor False.\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/es_AR/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/conf/locale/es_AR/formats.py",
    "content": "# -*- encoding: utf-8 -*-\n# This file is distributed under the same license as the Django package.\n#\n\n# The *_FORMAT strings use the Django date format syntax,\n# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\nDATE_FORMAT = r'j N Y'\nTIME_FORMAT = r'H:i:s'\nDATETIME_FORMAT = r'j N Y H:i:s'\nYEAR_MONTH_FORMAT = r'F Y'\nMONTH_DAY_FORMAT = r'j \\d\\e F'\nSHORT_DATE_FORMAT = r'd/m/Y'\nSHORT_DATETIME_FORMAT = r'd/m/Y H:i'\nFIRST_DAY_OF_WEEK = 0 # 0: Sunday, 1: Monday\n\n# The *_INPUT_FORMATS strings use the Python strftime format syntax,\n# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior\nDATE_INPUT_FORMATS = (\n    '%d/%m/%Y', # '31/12/2009'\n    '%d/%m/%y', # '31/12/09'\n)\nDATETIME_INPUT_FORMATS = (\n    '%d/%m/%Y %H:%M:%S',\n    '%d/%m/%Y %H:%M',\n    '%d/%m/%y %H:%M:%S',\n    '%d/%m/%y %H:%M',\n)\nDECIMAL_SEPARATOR = ','\nTHOUSAND_SEPARATOR = '.'\nNUMBER_GROUPING = 3\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/es_MX/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Abraham Estrada <abraham.estrada@gmail.com>, 2011, 2012.\n# zodman <zodman@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:47+0000\\n\"\n\"Last-Translator: Abraham Estrada <abraham.estrada@gmail.com>\\n\"\n\"Language-Team: Spanish (Mexico) (http://www.transifex.com/projects/p/django/\"\n\"language/es_MX/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: es_MX\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"Árabe\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"Azerbaijani\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"Búlgaro\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"Bengalí\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"Bosnio\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"Catalán\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"Checo\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"Galés\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"Danés\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"Alemán\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"Griego\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"Inglés\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"Inglés británico\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"Esperanto\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"Español\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"Español de Argentina\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"Español de México\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"Español de nicaragua\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"Estonio\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"Vasco\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"Persa\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"Finés\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"Francés\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"Frisón\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"Irlandés\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"Gallego\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"Hebreo\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"Hindi\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"Croata\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"Húngaro\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"Indonesio\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"Islandés\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"Italiano\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"Japonés\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"Georgiano\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"Kazajstán\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"Khmer\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"Kannada\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"Coreano\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"Lituano\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"Letón\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"Macedonio\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"Malayalam\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"Mongol\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"Noruego Bokmal\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"Nepal\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"Holandés\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"Noruego Nynorsk\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"Punjabi\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"Polaco\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"Portugués\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"Portugués de Brasil\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"Rumano\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"Ruso\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"Eslovaco\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"Esloveno\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"Albanés\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"Serbio\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"Latin Serbio\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"Sueco\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"Swahili\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"Tamil\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"Telugu\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"Tailandés\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"Turco\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"Tatar\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"Ucraniano\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"Urdu\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"Vietnamita\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"Chino simplificado\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"Chino tradicional\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"Introduzca un valor válido.\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"\"\n\"Introduzca un \\\"slug\\\", compuesto por letras, números, guiones bajos o \"\n\"medios.\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"Introduzca una dirección IPv4 válida.\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"Introduzca una dirección IPv6 válida.\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"Introduzca una dirección IPv4 o IPv6 válida.\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"Introduzca sólo números separados por comas.\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"Asegúrese de que este valor es %(limit_value)s  (es %(show_value)s ).\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"Asegúrese de que este valor sea menor o igual a %(limit_value)s.\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"Asegúrese de que este valor sea mayor o igual a %(limit_value)s.\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Asegúrese de que este valor tenga al menos %(limit_value)d caracteres (tiene \"\n\"%(show_value)d).\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Asegúrese de que este valor tenga como máximo %(limit_value)d caracteres \"\n\"(tiene %(show_value)d).\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"\"\n\"%(field_name)s debe ser único/a para un %(lookup)s %(date_field)s \"\n\"determinado.\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"y\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"Ya existe un/a %(model_name)s con este/a %(field_label)s.\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"El valor %r no es una opción válida.\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"Este campo no puede ser nulo.\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"Este campo no puede estar en blanco.\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Campo tipo: %(field_type)s\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"Entero\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"El valor '%s' debe ser entero.\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"El valor '%s' debe ser Verdadero o Falso.\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Boolean (Verdadero o Falso)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"Cadena (máximo %(max_length)s)\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"Enteros separados por comas\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"\"\n\"El valor '%s' tiene formato de fecha inválido. Debe ser de la forma YYYY-MM-\"\n\"DD.\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"\"\n\"El valor '%s' tiene el formato correcto (YYYY-MM-DD) pero es una fecha \"\n\"inválida.\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"Fecha (sin hora)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\"El valor '%s' tiene formato de fecha inválido. Debe ser de la forma YYYY-MM-\"\n\"DD HH:MM[:ss[.uuuuuu]][TZ].\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\"El valor '%s' tiene el formato correcto (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) \"\n\"pero es una fecha inválida.\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"Fecha (con hora)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"El valor '%s' debe ser un número decimal.\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"Número decimal\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"Dirección de correo electrónico\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"Ruta de archivo\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"El valor '%s' debe ser flotante.\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"Número de punto flotante\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"Entero grande (8 bytes)\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"Dirección IPv4\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"Dirección IP\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"El valor '%s' debe ser Ningúno, Verdadero o Falso.\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"Booleano (Verdadero, Falso o Nulo)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"Entero positivo\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"Entero positivo pequeño\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"Slug (hasta %(max_length)s)\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"Entero pequeño\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"Texto\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"\"\n\"El valor '%s' tiene formato de hora inválido. Debe ser de la forma HH:MM[:ss\"\n\"[.uuuuuu]].\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\"El valor '%s' tiene el formato correcto (HH:MM[:ss[.uuuuuu]]) pero es una \"\n\"hora inválida.\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"Hora\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"Archivo\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"Imagen\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"No existe un modelo %(model)s con una clave primaria %(pk)r.\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"Clave foránea (el tipo está determinado por el campo relacionado)\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"Relación uno-a-uno\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"Relación muchos-a-muchos\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"\"\n\"Mantenga presionada \\\"Control\\\", o \\\"Command\\\" en una Mac, para seleccionar \"\n\"más de uno.\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"Este campo es obligatorio.\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"Introduzca un número entero.\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"Introduzca un número.\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"Asegúrese de que no hay más de %s dígitos en total.\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"Asegúrese de que no hay más de %s decimales.\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"Asegúrese de que no existan mas de %s dígitos antes del punto decimal.\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"Introduzca una fecha válida.\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"Introduzca una hora válida.\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"Introduzca una fecha/hora válida.\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"\"\n\"No se envió un archivo. Verifique el tipo de codificación en el formulario.\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"No se envió ningún archivo.\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"El archivo enviado está vacío.\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\"Asegúrese de que este nombre de archivo tenga como máximo %(max)d caracteres \"\n\"(tiene %(length)d).\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"Por favor envíe un archivo o marque la casilla, no ambos.\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\"Seleccione una imagen válida. El archivo que ha seleccionado no es una \"\n\"imagen o es un un archivo de imagen corrupto.\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"Ingrese una URL válida.\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"\"\n\"Seleccione una opción válida. %(value)s no es una de las opciones \"\n\"disponibles.\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"Introduzca una lista de valores.\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"Ordenar\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"Eliminar\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"Por favor, corrija la información duplicada en %(field)s.\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"\"\n\"Por favor corrija la información duplicada en %(field)s, que debe ser única.\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\"Por favor corrija la información duplicada en %(field_name)s que debe ser \"\n\"única para el %(lookup)s en %(date_field)s.\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"Por favor, corrija los valores duplicados detallados mas abajo.\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"\"\n\"La clave foránea del modelo inline no coincide con la clave primaria de la \"\n\"instancia padre.\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"\"\n\"Seleccione una opción válida. La opción seleccionada no es una de las \"\n\"disponibles.\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"\"\n\"Seleccione una opción válida. %s no es una de las opciones disponibles.\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"\\\"%s\\\" no es un valor válido para una clave primaria.\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\"La fecha %(datetime)s no puede se interpretada en la zona horaria  \"\n\"%(current_timezone)s; ya que puede ser ambigua o que no pueden existir.\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"Actualmente\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"Modificar\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"Borrar\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"Desconocido\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"Sí\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"No\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"sí, no, tal vez\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"%(size)d byte\"\nmsgstr[1] \"%(size)d bytes\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s KB\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s MB\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s GB\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s TB\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s PB\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"p.m.\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"a.m.\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"PM\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"AM\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"medianoche\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"mediodía\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"Lunes\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"Martes\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"Miércoles\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"Jueves\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"Viernes\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"Sábado\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"Domingo\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"Lun\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"Mar\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"Mie\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"Jue\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"Vie\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"Sab\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"Dom\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"Enero\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"Febrero\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"Marzo\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"Abril\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"Mayo\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"Junio\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"Julio\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"Agosto\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"Septiembre\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"Octubre\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"Noviembre\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"Diciembre\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"ene\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"feb\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"mar\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"abr\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"may\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"jun\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"jul\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"ago\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"sep\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"oct\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"nov\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"dic\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"Ene.\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"Feb.\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"Marzo\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"Abril\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"Mayo\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"Junio\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"Julio\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"Ago.\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"Sep.\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"Oct.\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"Nov.\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"Dic.\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"Enero\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"Febrero\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"Marzo\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"Abril\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"Mayo\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"Junio\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"Julio\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"Agosto\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"Septiembre\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"Octubre\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"Noviembre\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"Diciembre\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"%(truncated_text)s...\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"o\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \",\"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"años\"\nmsgstr[1] \"años\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"mes\"\nmsgstr[1] \"meses\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"semana\"\nmsgstr[1] \"semanas\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"día\"\nmsgstr[1] \"días\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"horas\"\nmsgstr[1] \"horas\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"minutos\"\nmsgstr[1] \"minutos\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"minutos\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \", %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"Los índices del directorio no están permitidos.\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\\\"%(path)s\\\" no existe\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"Índice de %(directory)s\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"No se ha especificado el valor año\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"No se ha especificado el valor mes\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"No se ha especificado el valor dia\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"No se ha especificado el valor semana\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"No hay %(verbose_name_plural)s disponibles\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\"No hay %(verbose_name_plural)s futuros disponibles porque %(class_name)s.\"\n\"allow_future tiene el valor False.\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"Cadena de fecha inválida '%(datestr)s', formato '%(format)s'\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"No se han encontrado %(verbose_name)s que coincidan con la consulta\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"La página no es \\\"last\\\", ni puede ser convertido a un int.\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"Lista vacía y '%(class_name)s.allow_empty' tiene el valor False.\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/es_MX/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/conf/locale/es_MX/formats.py",
    "content": "# -*- encoding: utf-8 -*-\n# This file is distributed under the same license as the Django package.\n#\nfrom __future__ import unicode_literals\n\nDATE_FORMAT = r'j \\d\\e F \\d\\e Y'\nTIME_FORMAT = 'H:i:s'\nDATETIME_FORMAT = r'j \\d\\e F \\d\\e Y \\a \\l\\a\\s H:i'\nYEAR_MONTH_FORMAT = r'F \\d\\e Y'\nMONTH_DAY_FORMAT = r'j \\d\\e F'\nSHORT_DATE_FORMAT = 'd/m/Y'\nSHORT_DATETIME_FORMAT = 'd/m/Y H:i'\nFIRST_DAY_OF_WEEK = 1  # Monday: ISO 8601\nDATE_INPUT_FORMATS = (\n    '%d/%m/%Y', '%d/%m/%y',             # '25/10/2006', '25/10/06'\n    '%Y%m%d',                           # '20061025'\n)\nDATETIME_INPUT_FORMATS = (\n    '%d/%m/%Y %H:%M:%S',\n    '%d/%m/%Y %H:%M',\n    '%d/%m/%y %H:%M:%S',\n    '%d/%m/%y %H:%M',\n)\nDECIMAL_SEPARATOR = '.'   # ',' is also official (less common): NOM-008-SCFI-2002\nTHOUSAND_SEPARATOR = '\\xa0' # non-breaking space\nNUMBER_GROUPING = 3\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/es_NI/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/conf/locale/es_NI/formats.py",
    "content": "# -*- encoding: utf-8 -*-\n# This file is distributed under the same license as the Django package.\n#\n\nDATE_FORMAT = r'j \\d\\e F \\d\\e Y'\nTIME_FORMAT = 'H:i:s'\nDATETIME_FORMAT = r'j \\d\\e F \\d\\e Y \\a \\l\\a\\s H:i'\nYEAR_MONTH_FORMAT = r'F \\d\\e Y'\nMONTH_DAY_FORMAT = r'j \\d\\e F'\nSHORT_DATE_FORMAT = 'd/m/Y'\nSHORT_DATETIME_FORMAT = 'd/m/Y H:i'\nFIRST_DAY_OF_WEEK = 1 \t\t\t# Monday: ISO 8601 \nDATE_INPUT_FORMATS = (\n    '%d/%m/%Y', '%d/%m/%y',            \t# '25/10/2006', '25/10/06'\n    '%Y%m%d',                          \t# '20061025'\n\n)\nDATETIME_INPUT_FORMATS = (\n    '%d/%m/%Y %H:%M:%S',\n    '%d/%m/%Y %H:%M',\n    '%d/%m/%y %H:%M:%S',\n    '%d/%m/%y %H:%M',\n)\nDECIMAL_SEPARATOR = '.'\nTHOUSAND_SEPARATOR = ','\nNUMBER_GROUPING = 3\n\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/es_VE/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Sebastián Ramírez Magrí <sebasmagri@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:47+0000\\n\"\n\"Last-Translator: Sebastián Ramírez Magrí <sebasmagri@gmail.com>\\n\"\n\"Language-Team: Spanish (Venezuela) (http://www.transifex.com/projects/p/\"\n\"django/language/es_VE/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: es_VE\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"Árabe\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"Búlgaro\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"Bengalí\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"Bosnio\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"Catalán\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"Checo\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"Galés\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"Danés\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"Alemán\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"Griego\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"Inglés\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"Inglés Británic\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"Español\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"Español de Argentina\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"Estonio\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"Vazco\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"Persa\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"Finlandés\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"Francés\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"Frisio\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"Irlandés\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"Galés\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"Hebreo\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"Hindi\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"Croata\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"Húngaro\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"Indonesio\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"Islandés\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"Italiano\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"Japonés\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"Georgiano\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"Khmer\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"Canarés\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"Coreano\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"Lituano\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"Latvio\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"Macedonio\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"Malayala\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"Mongol\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"Noruego Bokmål\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"Holandés\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"Nynorsk\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"Punjabi\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"Polaco\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"Portugués\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"Portugués de Brasil\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"Ruman\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"Ruso\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"Eslovaco\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"Eslovenio\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"Albano\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"Serbi\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"Latín Serbio\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"Sueco\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"Tamil\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"Telugu\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"Tailandés\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"Turco\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"Ucranio\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"Vietnamita\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"Chino simplificado\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"Chino tradicional\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"Introduzca un valor válido.\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"\"\n\"Introduzca un 'slug' válido, consistente de letras, números, guiones bajos o \"\n\"guiones.\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"Introduzca una dirección IPv4 válida\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"Introduzca solo dígitos separados por comas.\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"Asegúrese de que este valor %(limit_value)s (ahora es %(show_value)s).\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"Asegúrese de que este valor es menor o igual que %(limit_value)s.\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"Asegúrese de que este valor es mayor o igual que %(limit_value)s.\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Asegúrese de que este valor tiene al menos %(limit_value)d caracteres (ahora \"\n\"tiene %(show_value)d).\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"Dirección IP\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"Booleano (True, False o None)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"Texto\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"Hora\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"El modelo %(model)s con llave primaria %(pk)r no existe\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"Clave foránea (tipo determinado por el campo relacionado)\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"Relación uno a uno\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"Relación muchos a muchos\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"\"\n\"Mantenga presionado \\\"Control\\\", o \\\"Command\\\" en un Mac, para seleccionar \"\n\"más de una opción.\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"Este campo es obligatorio.\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"Introduzca un número completo.\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"Introduzca un número\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"Asegúrese de que no hay más de %s dígitos en total.\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"Asegúrese de que no hay más de %s decimales.\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"Asegúrese de que no hay más de %s dígitos en la parte entera.\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"Introduzca una fecha válida.\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"Introduzca una hora válida.\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"Introduzca una hora y fecha válida.\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"\"\n\"No se envió archivo alguno. Revise el tipo de codificación del formulario.\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"No se envió ningún archivo.\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"El archivo enviado está vacío\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\"Asegúrese de que este nombre de archivo tiene como máximo %(max)d caracteres \"\n\"(actualmente tiene %(length)d).\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"Por favor provea un archivo o active el selector de limpiar, no ambos.\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"Introduzca una URL válida.\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \"\"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \"\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/et/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# eallik <eallik@gmail.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <madisvain@gmail.com>, 2011.\n# madisvain <madisvain@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:47+0000\\n\"\n\"Last-Translator: madisvain <madisvain@gmail.com>\\n\"\n\"Language-Team: Estonian (http://www.transifex.com/projects/p/django/language/\"\n\"et/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: et\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"araabia\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"Aserbaidžaani\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"bulgaaria\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"bengali\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"bosnia\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"katalaani\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"tšehhi\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"uelsi\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"taani\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"saksa\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"kreeka\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"inglise\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"briti inglise\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"hispaania\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"argentiina hispaani\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"mehhiko hispaania\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"eesti\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"baski\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"pärsia\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"soome\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"prantsuse\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"friisi\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"iiri\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"galiitsia\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"heebrea\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"hindi\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"horvaatia\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"ungari\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"indoneesi\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"islandi\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"itaalia\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"jaapani\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"gruusia\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"khmeri\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"kannada\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"korea\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"leedu\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"läti\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"makedoonia\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"malaia\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"mongoolia\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"norra (bokmal)\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"hollandi\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"norra (nynorsk)\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"pandžab\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"poola\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"portugali\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"brasiilia portugali\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"rumeenia\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"vene\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"slovaki\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"sloveeni\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"albaania\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"serbia\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"serbia (ladina)\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"rootsi\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"tamiili\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"telugu\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"tai\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"türgi\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"ukrania\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"urdu\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"vietnami\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"lihtsustatud hiina\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"traditsiooniline hiina\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"Sisestage korrektne väärtus.\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"\"\n\"See väärtus võib sisaldada ainult tähti, nubmreid, alljooni ja sidekriipse.\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"Sisestage korrektne IPv4 aadress.\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"Sisestage ainult komaga eraldatud numbreid.\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"Veendu, et see väärtus on %(limit_value)s (hetkel on %(show_value)s).\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"Veendu, et see väärtus on väiksem või võrdne kui %(limit_value)s.\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"Veendu, et see väärtus on suurem või võrdne kui %(limit_value)s.\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Veendu, et see väärtus sisaldab vähemalt %(limit_value)d tähte (hetkel on \"\n\"%(show_value)d).\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Veendu, et sellel väärtusel on mitte rohkem kui %(limit_value)d tähte \"\n\"(hetkel on %(show_value)d).\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"%(field_name)s peab olema unikaalne %(date_field)s %(lookup)s suhtes.\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"ja\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"Sellise %(field_label)s-väljaga %(model_name)s on juba olemas.\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"Väärtus %r ei ole kehtiv valik.\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"See lahter ei tohi olla tühi.\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"See väli ei saa olla tühi.\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Lahter tüüpi: %(field_type)s\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"Täisarv\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Tõeväärtus (Kas tõene või väär)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"String (kuni %(max_length)s märki)\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"Komaga eraldatud täisarvud\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"Kuupäev (kellaajata)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"Kuupäev (kellaajaga)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"Kümnendmurd\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"E-posti aadress\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"Faili asukoht\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"Ujukomaarv\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"Suur (8 baiti) täisarv\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"IP aadress\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"Tõeväärtus (Kas tõene, väär või tühi)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"Tekst\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"Aeg\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"Mudel %(model)s primaarvõtmega %(pk)r ei leidu.\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"Välisvõti (tüübi määrab seotud väli) \"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"Üks-ühele seos\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"Mitu-mitmele seos\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"Et valida mitu, hoidke all \\\"Control\\\"-nuppu (Maci puhul \\\"Command\\\").\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"See lahter on nõutav.\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"Sisestage täisarv.\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"Sisestage arv.\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"Veenduge, et kogu numbrikohtade arv ei ületaks %s.\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"Veenduge, et komakohtade arv ei ületaks %s.\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"Veenduge, et komast vasakul olevaid numbreid ei oleks rohkem kui %s.\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"Sisestage korrektne kuupäev.\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"Sisestage korrektne kellaaeg.\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"Sisestage korrektne kuupäev ja kellaaeg.\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"Ühtegi faili ei saadetud. Kontrollige vormi kodeeringutüüpi.\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"Ühtegi faili ei saadetud.\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"Saadetud fail on tühi.\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\"Veenduge, et see failinimi sisaldab kõige rohkem %(max)d tähemärki (hetkel \"\n\"%(length)d).\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"Palun laadige fail või märgistage 'tühjenda' kast, mitte mõlemat.\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\"Laadige korrektne pilt. Fail, mille laadisite, ei olnud kas pilt või oli \"\n\"fail vigane.\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"Sisestage korrektne URL.\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"Valige korrektne väärtus. %(value)s ei ole valitav.\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"Sisestage väärtuste nimekiri.\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"Järjestus\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"Kustuta\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"Palun parandage duplikaat-andmed lahtris %(field)s.\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"\"\n\"Palun parandage duplikaat-andmed lahtris %(field)s, mis peab olema unikaalne.\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"Palun parandage allolevad duplikaat-väärtused\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"Pesastatud välisvõti ei sobi ülemobjekti primaarvõtmega.\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"Valige korrektne väärtus. Valitud väärtus ei ole valitav.\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"Valige korrektne väärtus. %s ei ole valitav.\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"\\\"%s\\\" ei ole sobiv väärtust primaarvõtmeks.\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"Hetkel\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"Muuda\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"Tühjenda\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"Tundmatu\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"Jah\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"Ei\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"jah,ei,võib-olla\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"%(size)d bait\"\nmsgstr[1] \"%(size)d baiti\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s kB\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s MB\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s GB\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s TB\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s PB\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"p.l.\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"e.l.\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"PL\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"EL\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"südaöö\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"keskpäev\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"esmaspäev\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"teisipäev\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"kolmapäev\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"neljapäev\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"reede\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"laupäev\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"pühapäev\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"esmasp.\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"teisip.\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"kolmap.\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"neljap.\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"reede\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"laup.\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"pühap.\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"jaanuar\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"veebruar\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"märts\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"aprill\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"mai\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"juuni\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"juuli\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"august\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"september\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"oktoober\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"november\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"detsember\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"jaan\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"veeb\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"märts\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"apr\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"mai\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"jun\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"jul\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"aug\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"sept\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"okt\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"nov\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"dets\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"jaan.\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"veeb.\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"mär.\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"apr.\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"mai\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"juuni\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"juuli\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"aug.\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"sept.\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"okt.\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"nov.\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"dets.\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"jaanuar\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"veebruar\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"märts\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"aprill\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"mai\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"juuni\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"juuli\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"august\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"september\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"oktoober\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"november\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"detsember\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"või\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \", \"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"aasta\"\nmsgstr[1] \"aastat\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"kuu\"\nmsgstr[1] \"kuud\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"nädal\"\nmsgstr[1] \"nädalat\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"päev\"\nmsgstr[1] \"päeva\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"tund\"\nmsgstr[1] \"tundi\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"minut\"\nmsgstr[1] \"minutit\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"minutit\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \", %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"Aasta on valimata\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"Kuu on valimata\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"Päev on valimata\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"Nädal on valimata\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"Ei leitud %(verbose_name_plural)s\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\"Tulevane %(verbose_name_plural)s pole saadaval, sest %(class_name)s.\"\n\"allow_future on False.\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"Vigane kuupäeva-string '%(datestr)s' lähtudes formaadist '%(format)s'\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"Päringule vastavat %(verbose_name)s ei leitud\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"Lehekülg ei ole 'last', ka ei saa teda konvertida täisarvuks.\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"Tühi list ja '%(class_name)s.allow_empty' on False.\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/et/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/conf/locale/et/formats.py",
    "content": "# -*- encoding: utf-8 -*-\n# This file is distributed under the same license as the Django package.\n#\nfrom __future__ import unicode_literals\n\n# The *_FORMAT strings use the Django date format syntax,\n# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\nDATE_FORMAT = 'j F Y'\nTIME_FORMAT = 'G:i:s'\n# DATETIME_FORMAT = \n# YEAR_MONTH_FORMAT = \nMONTH_DAY_FORMAT = 'j F'\nSHORT_DATE_FORMAT = 'd.m.Y'\n# SHORT_DATETIME_FORMAT = \n# FIRST_DAY_OF_WEEK = \n\n# The *_INPUT_FORMATS strings use the Python strftime format syntax,\n# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior\n# DATE_INPUT_FORMATS = \n# TIME_INPUT_FORMATS = \n# DATETIME_INPUT_FORMATS = \nDECIMAL_SEPARATOR = ','\nTHOUSAND_SEPARATOR = ' ' # Non-breaking space\n# NUMBER_GROUPING = \n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/eu/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Aitzol Naberan <anaberan@codesyntax.com>, 2011-2013.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# jazpillaga <jazpillaga@codesyntax.com>, 2011.\n# julen <julenx@gmail.com>, 2011.\n#   <julenx@gmail.com>, 2012.\n#   <totorika93@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-05 11:27+0000\\n\"\n\"Last-Translator: Aitzol Naberan <anaberan@codesyntax.com>\\n\"\n\"Language-Team: Basque (http://www.transifex.com/projects/p/django/language/\"\n\"eu/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: eu\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"Afrikarrak\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"Arabiera\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"Azerbaianera\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"Bulgariera\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"Belarusiera\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"Bengalera\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"Bretoia\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"Bosniera\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"Katalana\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"Txekiera\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"Gales\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"Daniera\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"Alemaniera\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"Greziera\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"Ingelesa\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"Ingelesa\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"Esperantoa\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"Espainola\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"Espainola (Argentina)\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"Espainola (Mexiko)\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"Espainola (Nikaragua)\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"Venezuelako gaztelera\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"Estoniera\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"Euskara\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"Persiera\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"Finlandiera\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"Frantzesa\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"Frisiera\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"Irlandako gaelera\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"Galiziera\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"Hebreera\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"Hindi\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"Kroaziarra\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"Hungariera\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"Interlingua\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"Indonesiera\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"Islandiera\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"Italiera\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"Japoniera\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"Georgiera\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"Kazakhera\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"Khemerera\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"Kanadiera\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"Koreera\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"Luxenburgera\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"Lituaniera\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"Letoniera\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"Mazedoniera\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"Malabarera\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"Mongoliera\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"Bokmal\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"Nepalera\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"Holandera\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"Nynorsk\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"Punjabera\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"Poloniera\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"Portugalera\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"Portugalera (Brazil)\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"Errumaniera\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"Errusiera\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"Eslovakiera\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"Esloveniera\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"Albaniera\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"Serbiera\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"Serbiera\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"Suediera\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"Swahilia\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"Tamilera\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"Telegu hizkuntza\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"Thailandiera\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"Turkiera\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"Tatarera\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"Udmurt\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"Ukrainera\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"Urdua\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"Vietnamamera\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"Txinera (sinpletua)\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"Txinera (tradizionala)\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"Idatzi balio zuzena.\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"Gehitu baleko email helbide bat\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"\"\n\"Idatzi hizki, zenbaki, azpimarra edo marratxoz osatutako baleko 'slug' bat.\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"Sartu IPv4 helbide zuzena.\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"Sartu IPv6 helbide zuzena\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"Sartu IPv4 edo IPv6 helbide zuzena.\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"Idatzi komaz bereizitako digitoak soilik.\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"\"\n\"Ziurtatu balioak %(limit_value)s gutxienez karaktere dituela  (orain \"\n\"%(show_value)s dauzka).\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"Ziurtatu balio hau %(limit_value)s baino txikiagoa edo berdina dela.\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"Ziurtatu balio hau %(limit_value)s baino handiagoa edo berdina dela.\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Ziurtatu gutxienez %(limit_value)d karaktere dauzkala (orain %(show_value)d \"\n\"dauzka).\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Ziurtatu gehienez %(limit_value)d dauzkala (orain %(show_value)d dauzka).\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"\"\n\"%(date_field)s eremuan %(lookup)s egiteko %(field_name)s bakarra izan behar \"\n\"da.\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"eta\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"%(field_label)s hori daukan %(model_name)s dagoeneko existitzen da.\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"%r balioa ez da baliozkoa.\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"Eremu hau ezin daiteke hutsa izan (null).\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"Eremu hau ezin da hutsik egon.\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Eremuaren mota: %(field_type)s\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"Zenbaki osoa\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"'%s' osoko zenbakia izan behar da.\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"'%s' balioa True edo False izan behar da.\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Boolearra (egia ala gezurra)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"Katea (%(max_length)s gehienez)\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"Komaz bereiztutako zenbaki osoak\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"\"\n\"'%s' balioak ez dauka data formatu zuzena. Formatu zuzena UUUU-HH-EE da.\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"\"\n\"'%s' balioak formatu zuzena (UUUU-HH-EE) dauka, baina ez da data zuzen bat.\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"Data (ordurik gabe)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\"'%s' balioak ez dauka formatu zuzena. Formatu zuzena UUUU-HH-EE .\\n\"\n\"OO:MM[:ss[.uuuuuu]][TZ] da.\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\"'%s' balioak formatu zuzena dauka (UUUU-HH-EE OO:MM[:ss[.uuuuuu]][TZ]),\\n\"\n\"baina ez da data/ordu zuzena.\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"Data (orduarekin)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"'%s' balioa hamartarra izan behar da.\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"Zenbaki hamartarra\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"Eposta helbidea\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"Fitxategiaren bidea\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"'%s' balioa koma higikorreko zenbaki bat izan behar da.\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"Koma higikorreko zenbakia (float)\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"Zenbaki osoa (handia 8 byte)\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"IPv4 helbidea\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"IP helbidea\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"'%s' balioak None, True edo False izan behar du.\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"Boolearra (egia, gezurra edo hutsa[None])\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"Osoko positiboa\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"Osoko positibo txikia\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"Slug (gehienez %(max_length)s)\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"Osoko txikia\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"Testua\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"\"\n\"'%s' balioak ez dauka formatu zuzena. OO:MM[:ss[.uuuuuu]] fotmatuan egon \"\n\"behar da.\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\"'%s' balioak formatu zuzena dauka (OO:MM[:ss[.uuuuuu]]) baina ez da ordu \\n\"\n\"zuzena\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"Ordua\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"Fitxategia\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"Irudia\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"Ez dago %(pk)r pk duen %(model)s modelorik.\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"1-N (mota erlazionatutako eremuaren arabera)\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"Bat-bat erlazioa\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"M:N erlazioa\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"\"\n\"Bat baino gehiago hautatzeko, sakatu \\\"Kontrol\\\" tekla edo \\\"Command\\\" Mac \"\n\"batean.\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"Eremu hau beharrezkoa da.\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"Idatzi zenbaki oso bat.\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"Idatzi zenbaki bat.\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"Ziurtatu ez daudela %s baino digitu gehiago.\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"Ziurtatu ez daudela %s baino hamartar gehiago.\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"\"\n\"Ziurtatu ez daudela %s digitu baino gehiago puntu hamartarraren aurretik.\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"Idatzi baliozko data bat.\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"Idatzi baliozko ordu bat.\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"Idatzi baliozko data/ordua.\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"Ez da fitxategirik bidali. Egiaztatu inprimakiaren kodeketa-mota.\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"Ez da fitxategirik bidali.\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"Bidalitako fitxategia hutsik dago.\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\"Ziurtatu fitxategiaren izenak gehienez %(max)d karaktere dituela (%(length)d \"\n\"dauzka).\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"Mesedez, igo fitxategi bat edo egin klik garbitu botoian, ez biak.\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\"Bidali baliozko irudia. Zuk bidalitako fitxategia ez da irudia edo akatsa \"\n\"dauka.\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"Idatzi baliozko URL bat.\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"Hautatu baliozko aukera bat. %(value)s ez dago erabilgarri.\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"Idatzi balio-zerrenda bat.\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"Ordena\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"Ezabatu\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"Zuzendu bikoiztketa %(field)s eremuan.\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"Zuzendu bikoizketa %(field)s eremuan. Bakarra izan behar da.\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\"Zuzendu bakarra izan behar den%(field_name)s eremuarentzako bikoiztutako \"\n\"data %(lookup)s egiteko %(date_field)s eremuan\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"Zuzendu hurrengo balio bikoiztuak.\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"Barneko gakoa eta gurasoaren gakoa ez datoz bat.\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"Hautatu aukera zuzen bat. Hautatutakoa ez da zuzena.\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"Hautatu aukera zuzena. %s ez da aukeretako bat.\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"\\\"%s\\\" ez da balekoa gako nagusi gisa.\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\"%(datetime)s ezin da interpretatu %(current_timezone)s ordu-eremuan;\\n\"\n\"baliteke ez existitzea edo anbiguoa izatea\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"Orain\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"Aldatu\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"Garbitu\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"Ezezaguna\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"Bai\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"Ez\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"bai,ez,agian\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"byte %(size)d \"\nmsgstr[1] \"%(size)d byte\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s KB\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s MB\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s GB\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s TB\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s PB\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"p.m.\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"a.m.\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"PM\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"AM\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"gauerdia\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"eguerdia\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"Astelehena\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"Asteartea\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"Asteazkena\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"Osteguna\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"Ostirala\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"Larunbata\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"Igandea\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"Al\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"Ar\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"Az\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"Og\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"Ol\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"Lr\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"Ig\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"Urtarrila\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"Otsaila\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"Martxoa\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"Apirila\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"Maiatza\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"Ekaina\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"Uztaila\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"Abuztua\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"Iraila\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"Urria\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"Azaroa\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"Abendua\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"urt\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"ots\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"mar\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"api\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"mai\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"eka\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"uzt\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"abu\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"ira\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"urr\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"aza\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"abe\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"Urt.\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"Ots.\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"Mar.\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"Api.\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"Mai.\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"Eka.\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"Uzt.\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"Abu.\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"Ira.\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"Urr.\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"Aza.\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"Abe.\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"Urtarrila\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"Otsaila\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"Martxoa\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"Apirila\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"Maiatza\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"Ekaina\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"Uztaila\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"Abuztua\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"Iraila\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"Urria\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"Azaroa\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"Abendua\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"%(truncated_text)s...\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"edo\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \", \"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"urtea\"\nmsgstr[1] \"urteak\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"hilabetea\"\nmsgstr[1] \"hilabeteak\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"astea\"\nmsgstr[1] \"asteak\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"eguna\"\nmsgstr[1] \"egunak\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"ordua\"\nmsgstr[1] \"orduak\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"minutu\"\nmsgstr[1] \"minutuak\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"minutuak\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \", %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"Direktorio zerrendak ez daude baimenduak.\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\\\"%(path)s\\\" ez da existitzen\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"%(directory)s zerrenda\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"Ez da urterik zehaztu\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"Ez da hilabeterik zehaztu\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"Ez da egunik zehaztu\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"Ez da asterik zehaztu\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"Ez dago %(verbose_name_plural)s\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\"Etorkizuneko %(verbose_name_plural)s ez dago aukeran \\n\"\n\"%(class_name)s.alloe_future False delako\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"%(datestr)s data string okerra '%(format)s' formaturako\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"Bilaketarekin bat datorren %(verbose_name)s-rik ez dago\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"Orria ez da azkena, hortaz ezin da osokora (int) biurtu.\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"Orri baliogabea (%(page_number)s):%(message)s\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"Zerrenda hutsa eta '%(class_name)s.allow_empty' False da\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/eu/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/conf/locale/eu/formats.py",
    "content": "# -*- encoding: utf-8 -*-\n# This file is distributed under the same license as the Django package.\n#\n\n# The *_FORMAT strings use the Django date format syntax,\n# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\nDATE_FORMAT = r'Yeko M\\re\\n d\\a'\nTIME_FORMAT = 'H:i:s'\n# DATETIME_FORMAT = \n# YEAR_MONTH_FORMAT = \n# MONTH_DAY_FORMAT = \nSHORT_DATE_FORMAT = 'Y M j'\n# SHORT_DATETIME_FORMAT = \n# FIRST_DAY_OF_WEEK = \n\n# The *_INPUT_FORMATS strings use the Python strftime format syntax,\n# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior\n# DATE_INPUT_FORMATS = \n# TIME_INPUT_FORMATS = \n# DATETIME_INPUT_FORMATS = \nDECIMAL_SEPARATOR = ','\nTHOUSAND_SEPARATOR = '.'\n# NUMBER_GROUPING = \n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/fa/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Ali Nikneshan <ali@nikneshan.com>, 2011-2012.\n# Alireza Savand <alireza.savand@gmail.com>, 2012-2013.\n# Arash Fazeli <arash_fazeli77@yahoo.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Saeed  <sd.javadi@gmail.com>, 2011.\n# Sina Cheraghi <sinacher@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-11 08:29+0000\\n\"\n\"Last-Translator: Alireza Savand <alireza.savand@gmail.com>\\n\"\n\"Language-Team: Persian (http://www.transifex.com/projects/p/django/language/\"\n\"fa/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: fa\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"آفریکانس\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"عربی\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"آذربایجانی\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"بلغاری\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"بلاروس\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"بنگالی\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"برتون\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"بوسنیایی\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"کاتالونیایی\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"چکی\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"ویلزی\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"دانمارکی\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"آلمانی\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"یونانی\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"انگلیسی\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"انگلیسی بریتیش\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"اسپرانتو\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"اسپانیایی\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"اسپانیایی آرژانتینی\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"اسپانیولی مکزیکی\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"نیکاراگوئه اسپانیایی\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"ونزوئلا اسپانیایی\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"استونی\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"باسکی\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"فارسی\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"فنلاندی\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"فرانسوی\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"فریزی\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"ایرلندی\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"گالیسیایی\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"عبری\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"هندی\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"کرواتی\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"مجاری\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"اینترلینگوا\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"اندونزیایی\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"ایسلندی\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"ایتالیایی\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"ژاپنی\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"گرجی\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"قزاقستان\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"خمری\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"کناده‌ای\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"کره‌ای\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"لوگزامبورگی\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"لیتوانی\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"لتونیایی\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"مقدونی\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"مالایایی\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"مغولی\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"نروژی Bokmal\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"نپالی\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"هلندی\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"نروژی Nynorsk\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"پنجابی\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"لهستانی\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"پرتغالی\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"پرتغالیِ برزیل\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"رومانی\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"روسی\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"اسلواکی\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"اسلووِنی\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"آلبانیایی\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"صربی\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"صربی لاتین\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"سوئدی\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"سواحیلی\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"تامیلی\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"تلوگویی\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"تایلندی\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"ترکی\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"تاتار\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"ادمورت\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"اکراینی\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"اردو\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"ویتنامی\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"چینی ساده‌شده\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"چینی سنتی\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"یک مقدار معتبر وارد کنید.\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"یک ایمیل آدرس معتبر وارد کنید.\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"یک 'slug' معتبر شامل حروف، ارقام، خط زیر و یا خط تیره وارد کنید.\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"یک نشانی IPv4 معتبر وارد کنید.\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"یک آدرس معتبر IPv6 وارد کنید.\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"IPv4 یا IPv6 آدرس معتبر وارد کنید.\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"فقط ارقام جدا شده با کاما وارد کنید.\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"مطمئن شوید مقدار  %(limit_value)s است. (اکنون %(show_value)s می باشد).\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"مطمئن شوید این مقدار کوچکتر و یا مساوی %(limit_value)s است.\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"مطمئن شوید این مقدار بزرگتر و یا مساوی %(limit_value)s است.\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"مطمئن شوید این مقدار حداقل %(limit_value)d نویسه دارد. (الان %(show_value)d \"\n\"دارد.)\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"مطمئن شوید این متغیر حداکثر  %(limit_value)d نویسه داشته باشد.(اکنون  \"\n\"%(show_value)d نویسه دارد).\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"%(field_name)s باید برای  %(date_field)s یکتا باشد %(lookup)s.\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"و\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"%(model_name)s با این %(field_label)s از قبل موجود است.\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"مقدار %r معتبر نیست.\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"این فیلد نمی تواند پوچ باشد.\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"این فیلد نمی تواند خالی باشد.\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"فیلد با نوع: %(field_type)s\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"عدد صحیح\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"'%s' باید مقدار عددی باشد.\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"مقدار «%s» را باید به صورت True یا False باشد.\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"بولی (درست یا غلط)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"رشته (تا %(max_length)s)\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"اعداد صحیح جدا-شده با ویلگول\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"\"\n\"مقدار «%s» را به یک فرمت تاریخ نامعتبر است. این باید در قالب YYYY-MM-DD باشد.\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"\"\n\"مقدار «%s» را با فرمت صحیح (YYYY-MM-DD) وارد شده است، اما تاریخ نامعتبر است.\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"تاریخ (بدون زمان)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\"مقدار \\\"%s\\\" فرمت نامعتبر است. باید در YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ] \"\n\"باشد..\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\"مقدار '%s'  را با فرمت صحیح (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) اما آن است \"\n\"که یک تاریخ / زمان نامعتبر است.\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"تاریخ (با زمان)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"مقدار '%s' باید عدد دسیمال باشد\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"عدد دهدهی\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"نشانی پست الکترونیکی\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"مسیر پرونده\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"مقدار '%s'  را باید یک شناور است.\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"عدد اعشاری\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"بزرگ (8 بایت) عدد صحیح\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"IPv4 آدرس\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"نشانی IP\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"مقدار '%s' را باید یا هیچ کدام، درست یا غلط است.\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"‌بولی (درست، نادرست یا پوچ)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"عدد صحیح مثبت\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"مثبت عدد صحیح کوچک\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"تیتر (حداکثر %(max_length)s)\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"عدد صحیح کوچک\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"متن\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"\"\n\"مقدار '%s' فرمت نامعتبر است. این باید در فرمت HH:MM[:ss[.uuuuuu]] باشد.\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\"مقدار «%s» را با فرمت صحیح (HH:MM[:ss[.uuuuuu]])  وارد شده است، اما از آن \"\n\"زمان نامعتبر است.\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"زمان\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"نشانی اینترنتی\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"پرونده\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"تصویر\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"مدل %(model)s با کلید اصلی %(pk)r وجود ندارد.\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"کلید خارجی ( نوع بر اساس فیلد رابط مشخص میشود )\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"رابطه یک به یک \"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"رابطه چند به چند\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"\"\n\"برای انتخاب بیش از یکی \\\"Control\\\"، یا \\\"Command\\\" روی Mac، را پایین نگه \"\n\"دارید.\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"این فیلد لازم است.\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"به طور کامل یک عدد وارد کنید.\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"یک عدد وارد کنید.\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"مطمئن شوید در مجموع بیش از %s رقم نداشته باشد.\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"مطمئن شوید بیش از %s رقم اعشاری نداشته باشد.\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"مطمئن شوید بیش از %s رقم قبل ممیز نداشته باشد.\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"یک تاریخ معتبر وارد کنید.\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"یک زمان معتبر وارد کنید.\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"یک تاریخ/زمان معتبر وارد کنید.\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"پرونده‌ای ارسال نشده است. نوع کدگذاری فرم را بررسی کنید.\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"پرونده‌ای ارسال نشده است.\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"پروندهٔ ارسال‌شده خالیست.\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\"مطمئن شوید این مقدار حداکثر %(max)d نویسه دارد. (الان %(length)d دارد.)\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"لطفا یا فایل ارسال کنید یا دکمه پاک کردن را علامت بزنید، نه هردو.\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\"یک تصویر معتبر بارگذاری کنید. پرونده‌ای که بارگذاری کردید یا تصویر نبوده و یا \"\n\"تصویری مخدوش بوده است.\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"یک نشانی اینترنتی معتبر وارد کنید.\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"یک گزینهٔ معتبر انتخاب کنید. %(value)s از گزینه‌های موجود نیست.\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"فهرستی از مقادیر وارد کنید.\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"ترتیب:\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"حذف\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"لطفا محتوی تکراری برای %(field)s را اصلاح کنید.\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"لطفا محتوی تکراری برای %(field)s را که باید یکتا باشد اصلاح کنید.\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\"لطفا اطلاعات تکراری  %(field_name)s را اصلاح کنید که باید در  %(lookup)s \"\n\"یکتا باشد %(date_field)s.\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"لطفا مقدار تکراری را اصلاح کنید.\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"کلید های درون خطی خارجی با هم مطابقت ندارند .\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"یک گزینهٔ معتبر انتخاب کنید. آن گزینه از گزینه‌های موجود نیست.\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"یک گزینهٔ معتبر انتخاب کنید. %s از گزینه‌های موجود نیست.\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"\\\"%s\\\" مقدار معتبری برای کلید اصلی نیست. \"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\"%(datetime)s نمیتواند در %(current_timezone)s معنی شود.شاید این زمان مبهم \"\n\"است و یا وجود ندارد.\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"در حال حاضر\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"تغییر\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"پاک کردن\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"ناشناخته\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"بله\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"خیر\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"بله،خیر،شاید\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"%(size)d بایت\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s KB\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s MB\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s GB\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s TB\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s PB\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"ب.ظ.\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"صبح\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"بعد از ظهر\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"صبح\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"نیمه شب\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"ظهر\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"دوشنبه\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"سه شنبه\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"چهارشنبه\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"پنجشنبه\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"جمعه\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"شنبه\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"یکشنبه\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"دوشنبه\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"سه‌شنبه\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"چهارشنبه\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"پنجشنبه\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"جمعه\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"شنبه\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"یکشنبه\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"ژانویه\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"فوریه\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"مارس\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"آوریل\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"مه\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"ژوئن\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"ژوئیه\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"اوت\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"سپتامبر\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"اکتبر\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"نوامبر\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"دسامبر\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"ژانویه\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"فوریه\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"مارس\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"آوریل\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"مه\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"ژوئن\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"ژوئیه\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"اوت\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"سپتامبر\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"اکتبر\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"نوامبر\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"دسامبر\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"ژانویه\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"فوریه\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"مارس\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"آوریل\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"مه\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"ژوئن\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"جولای\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"اوت\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"سپتامبر\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"اکتبر\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"نوامبر\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"دسامبر\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"ژانویه\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"فوریه\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"مارس\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"آوریل\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"مه\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"ژوئن\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"جولای\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"اوت\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"سپتامبر\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"اکتبر\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"نوامبر\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"دسامبر\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"%(truncated_text)s...\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"یا\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \"،\"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"سال\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"ماه\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"هفته\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"روز\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"ساعت\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"دقیقه\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"دقیقه\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \"، %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"شاخص دایرکتوری اینجا قابل قبول نیست.\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\\\"%(path)s\\\" وجود ندارد\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"فهرست %(directory)s\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"هیچ سالی مشخص نشده است\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"هیچ ماهی مشخص نشده است\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"هیچ روزی مشخص نشده است\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"هیچ هفته‌ای مشخص نشده است\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"هیچ %(verbose_name_plural)s موجود نیست\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\"آینده %(verbose_name_plural)s امکان پذیر نیست زیرا مقدار %(class_name)s.\"\n\"allow_future برابر False تنظیم شده است.\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"متن تاریخ '%(datestr)s' با فرمت  '%(format)s' غلط است.\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"هیچ %(verbose_name)s ای مطابق جستجو پیدا نشد.\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"Page مقدار 'last' نیست,همچنین قابل تبدیل به عدد هم نمیباشد.\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"صفحه‌ی اشتباه (%(page_number)s): %(message)s\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \" لیست خالی است و '%(class_name)s.allow_empty' برابر False است.\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/fa/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/conf/locale/fa/formats.py",
    "content": "# -*- encoding: utf-8 -*-\n# This file is distributed under the same license as the Django package.\n#\nfrom __future__ import unicode_literals\n\n# The *_FORMAT strings use the Django date format syntax,\n# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\nDATE_FORMAT = 'j F Y'\nTIME_FORMAT = 'G:i:s'\nDATETIME_FORMAT = 'j F Y، ساعت G:i:s'\nYEAR_MONTH_FORMAT = 'F Y'\nMONTH_DAY_FORMAT = 'j F'\nSHORT_DATE_FORMAT = 'Y/n/j'\nSHORT_DATETIME_FORMAT = 'Y/n/j،‏ G:i:s'\n# FIRST_DAY_OF_WEEK = \n\n# The *_INPUT_FORMATS strings use the Python strftime format syntax,\n# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior\n# DATE_INPUT_FORMATS = \n# TIME_INPUT_FORMATS = \n# DATETIME_INPUT_FORMATS = \nDECIMAL_SEPARATOR = ','\nTHOUSAND_SEPARATOR = '.'\n# NUMBER_GROUPING = \n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/fi/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Antti Kaihola <akaihol+transifex@ambitone.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <klaus.dahlen@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:47+0000\\n\"\n\"Last-Translator: Antti Kaihola <akaihol+transifex@ambitone.com>\\n\"\n\"Language-Team: Finnish (http://www.transifex.com/projects/p/django/language/\"\n\"fi/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: fi\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"arabia\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"Azeri\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"bulgaria\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"bengali\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"bosnia\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"katalaani\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"tšekki\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"wales\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"tanska\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"saksa\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"kreikka\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"englanti\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"brittienglanti\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"espanja\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"Argentiinan espanja\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"Meksikon espanja\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"Nicaraguan espanja\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"viro\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"baski\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"persia\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"suomi\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"ranska\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"friisi\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"irlanti\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"galicia\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"heprea\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"hindi\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"kroatia\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"unkari\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"indonesia\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"islanti\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"italia\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"japani\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"georgia\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"khmer\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"kannada\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"korea\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"liettua\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"latvia\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"makedonia\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"malajalam\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"mongolia\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"norja (kirjanorja)\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"hollanti\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"norja (uusnorja)\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"punjabin kieli\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"puola\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"portugali\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"brasilian portugali\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"romania\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"venäjä\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"slovakia\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"slovenia\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"albaani\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"serbia\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"serbian latina\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"ruotsi\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"tamili\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"telugu\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"thain kieli\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"turkki\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"ukraina\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"Urdu\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"vietnam\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"kiina (yksinkertaistettu)\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"kiina (perinteinen)\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"Syötä oikea arvo.\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"\"\n\"Tässä voidaan käyttää vain kirjaimia (a-z), numeroita (0-9) sekä ala- ja \"\n\"tavuviivoja (_ -).\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"Syötä kelvollinen IPv4-osoite.\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"Vain pilkulla erotetut kokonaisluvut kelpaavat tässä.\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"Tämän arvon on oltava %(limit_value)s (nyt %(show_value)s).\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"Tämän arvon on oltava enintään %(limit_value)s.\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"Tämän luvun on oltava vähintään %(limit_value)s.\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Tähän tarvitaan vähintään %(limit_value)d merkkiä (nyt on vain \"\n\"%(show_value)d).\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"Tähän kelpaa enintään %(limit_value)d merkkiä (nyt on %(show_value)d).\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"\"\n\"\\\"%(field_name)s\\\"-kentän on oltava uniikki suhteessa: %(date_field)s \"\n\"%(lookup)s.\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"ja\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"%(model_name)s jolla on tämä %(field_label)s, on jo olemassa.\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"Arvo %r ei kelpaa.\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"Tämän kentän arvo ei voi olla \\\"null\\\".\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"Tämä kenttä ei voi olla tyhjä.\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Kenttä tyyppiä: %(field_type)s\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"Kokonaisluku\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Totuusarvo: joko tosi (True) tai epätosi (False)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"Merkkijono (enintään %(max_length)s merkkiä)\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"Pilkulla erotetut kokonaisluvut\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"Päivämäärä (ilman kellonaikaa)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"Päivämäärä ja kellonaika\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"Desimaaliluku\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"Sähköpostiosoite\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"Tiedostopolku\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"Liukuluku\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"Suuri (8-tavuinen) kokonaisluku\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"IP-osoite\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"Totuusarvo: joko tosi (True), epätosi (False) tai ei mikään (None)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"Tekstiä\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"Kellonaika\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"URL-osoite\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"Mallia %(model)s pääavaimella %(pk)r ei ole olemassa.\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"Vierasavain (tyyppi määräytyy liittyvän kentän mukaan)\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"Yksi-yhteen relaatio\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"Moni-moneen relaatio\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"\"\n\" Pidä \\\"Ctrl\\\"-näppäin (tai Macin \\\"Command\\\") pohjassa valitaksesi useita \"\n\"vaihtoehtoja.\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"Tämä kenttä vaaditaan.\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"Syötä kokonaisluku.\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"Syötä luku.\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"Tässä luvussa voi olla yhteensä enintään %s numeroa.\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"Tässä luvussa saa olla enintään %s desimaalia.\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"Tässä luvussa saa olla enintään %s numeroa ennen desimaalipilkkua.\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"Syötä oikea päivämäärä.\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"Syötä oikea kellonaika.\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"Syötä oikea pvm/kellonaika.\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"Tiedostoa ei lähetetty. Tarkista lomakkeen koodaus (encoding).\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"Yhtään tiedostoa ei ole lähetetty.\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"Lähetetty tiedosto on tyhjä.\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\"Tähän tiedostonimeen kelpaa enintään %(max)d merkkiä (nyt niitä on \"\n\"%(length)d).\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"Voit joko lähettää tai poistaa tiedoston, muttei kumpaakin samalla.\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\"Kuva ei kelpaa. Lähettämäsi tiedosto ei ole kuva, tai tiedosto on vioittunut.\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"Syötä oikea URL-osoite.\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"Valitse oikea vaihtoehto. %(value)s ei ole vaihtoehtojen joukossa.\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"Syötä lista.\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"Järjestys\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"Poista\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"Korjaa kaksoisarvo kentälle %(field)s.\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"Ole hyvä ja korjaa uniikin kentän %(field)s kaksoisarvo.\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"Korjaa allaolevat kaksoisarvot.\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"Liittyvä perusavain ei vastannut vanhemman perusavainta.\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"Valitse oikea vaihtoehto. Valintasi ei löydy vaihtoehtojen joukosta.\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"Valitse oikea vaihtoehto. %s ei löydy vaihtoehtojen joukosta.\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"\\\"%s\\\" ei kelpaa perusavaimeksi.\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"Tällä hetkellä\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"Muokkaa\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"Poista\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"Tuntematon\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"Kyllä\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"Ei\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"kyllä,ei,ehkä\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"%(size)d tavu\"\nmsgstr[1] \"%(size)d tavua\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s KB\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s MB\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s GB\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s TB\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s PB\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"ip\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"ap\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"IP\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"AP\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"keskiyö\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"keskipäivä\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"maanantai\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"tiistai\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"keskiviikko\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"torstai\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"perjantai\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"lauantai\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"sunnuntai\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"ma\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"ti\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"ke\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"to\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"pe\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"la\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"su\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"tammikuu\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"helmikuu\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"maaliskuu\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"huhtikuu\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"toukokuu\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"kesäkuu\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"heinäkuu\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"elokuu\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"syyskuu\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"lokakuu\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"marraskuu\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"joulukuu\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"tam\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"hel\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"maa\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"huh\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"tou\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"kes\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"hei\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"elo\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"syy\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"lok\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"mar\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"jou\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"tammi\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"helmi\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"maalis\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"huhti\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"touko\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"kesä\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"heinä\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"elo\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"syys\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"loka\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"marras\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"joulu\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"tammikuuta\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"helmikuuta\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"maaliskuuta\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"huhtikuuta\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"toukokuuta\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"kesäkuuta\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"heinäkuuta\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"elokuuta\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"syyskuuta\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"lokakuuta\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"marraskuuta\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"joulukuuta\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"tai\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \", \"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"vuosi\"\nmsgstr[1] \"vuotta\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"kuukausi\"\nmsgstr[1] \"kuukautta\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"viikko\"\nmsgstr[1] \"viikkoa\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"päivä\"\nmsgstr[1] \"päivää\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"tunti\"\nmsgstr[1] \"tuntia\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"minuutti\"\nmsgstr[1] \"minuuttia\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"minuuttia\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \", %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"Vuosi puuttuu\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"Kuukausi puuttuu\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"Päivä puuttuu\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"Viikko puuttuu\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"%(verbose_name_plural)s: yhtään kohdetta ei löydy\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\"%(verbose_name_plural)s: tulevia kohteita ei löydy, koska %(class_name)s.\"\n\"allow_future:n arvo on False.\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"Päivämäärä '%(datestr)s' ei ole muotoa '%(format)s'\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"Hakua vastaavaa %(verbose_name)s -kohdetta ei löytynyt\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"Sivunumero ei ole 'last' (viimeinen) eikä näytä luvulta.\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"Lista on tyhjä, ja '%(class_name)s.allow_empty':n arvo on False.\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/fi/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/conf/locale/fi/formats.py",
    "content": "# -*- encoding: utf-8 -*-\n# This file is distributed under the same license as the Django package.\n#\nfrom __future__ import unicode_literals\n\n# The *_FORMAT strings use the Django date format syntax,\n# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\nDATE_FORMAT = 'j. E Y'\nTIME_FORMAT = 'G.i.s'\nDATETIME_FORMAT = r'j. E Y \\k\\e\\l\\l\\o G.i.s'\nYEAR_MONTH_FORMAT = 'F Y'\nMONTH_DAY_FORMAT = 'j. F'\nSHORT_DATE_FORMAT = 'j.n.Y'\n# SHORT_DATETIME_FORMAT = \n# FIRST_DAY_OF_WEEK = \n\n# The *_INPUT_FORMATS strings use the Python strftime format syntax,\n# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior\n# DATE_INPUT_FORMATS = \n# TIME_INPUT_FORMATS = \n# DATETIME_INPUT_FORMATS = \nDECIMAL_SEPARATOR = ','\nTHOUSAND_SEPARATOR = ' ' # Non-breaking space\n# NUMBER_GROUPING = \n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/fr/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <charette.s@gmail.com>, 2012.\n#   <claude@2xlibre.net>, 2011-2012.\n# claudep <claude@2xlibre.net>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Larlet davidbgk <larlet@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:47+0000\\n\"\n\"Last-Translator: claudep <claude@2xlibre.net>\\n\"\n\"Language-Team: French (http://www.transifex.com/projects/p/django/language/\"\n\"fr/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: fr\\n\"\n\"Plural-Forms: nplurals=2; plural=(n > 1);\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"Afrikaans\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"Arabe\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"Azéri\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"Bulgare\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"Biélorusse\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"Bengalî\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"Breton\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"Bosniaque\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"Catalan\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"Tchèque\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"Gallois\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"Dannois\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"Allemand\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"Grec\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"Anglais\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"Anglais britannique\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"Espéranto\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"Espagnol\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"Espagnol argentin\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"Espagnol mexicain\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"Espagnol nicaraguayen\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"Espagnol vénézuélien\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"Estonien\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"Basque\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"Perse\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"Finlandais\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"Français\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"Frise\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"Irlandais\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"Galicien\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"Hébreu\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"Hindi\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"Croate\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"Hongrois\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"Interlingua\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"Indonésien\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"Islandais\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"Italien\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"Japonais\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"Géorgien\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"Kazakh\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"Khmer\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"Kannada\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"Coréen\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"Luxembourgeois\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"Lituanien\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"Letton\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"Macédonien\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"Malayâlam\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"Mongole\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"Norvégien Bokmal\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"Népalais\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"Hollandais\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"Norvégien Nynorsk\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"Penjabi\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"Polonais\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"Portugais\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"Portugais brésilien\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"Roumain\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"Russe\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"Slovaque\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"Slovène\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"Albanais\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"Serbe\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"Serbe latin\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"Suédois\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"Swahili\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"Tamoul\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"Télougou\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"Thaï\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"Turc\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"Tatar\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"Oudmourte\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"Ukrainien\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"Ourdou\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"Vietnamien\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"Chinois simplifié\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"Chinois traditionnel\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"Saisissez une valeur valide.\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"Saisissez une adresse de courriel valide.\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"\"\n\"Ce champ ne doit contenir que des lettres, des nombres, des tirets bas _ et \"\n\"des traits d'union.\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"Saisissez une adresse IPv4 valide.\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"Saisissez une adresse IPv6 valide.\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"Saisissez une adresse IPv4 ou IPv6 valide.\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"Saisissez uniquement des chiffres séparés par des virgules.\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"\"\n\"Assurez-vous que cette valeur est %(limit_value)s (actuellement \"\n\"%(show_value)s).\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"\"\n\"Assurez-vous que cette valeur est inférieure ou égale à %(limit_value)s.\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"\"\n\"Assurez-vous que cette valeur est supérieure ou égale à %(limit_value)s.\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Assurez-vous que cette valeur comporte au moins %(limit_value)d caractères \"\n\"(actuellement %(show_value)d).\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Assurez-vous que cette valeur comporte au maximum %(limit_value)d caractères \"\n\"(actuellement %(show_value)d).\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"\"\n\"%(field_name)s doit être unique pour la partie %(lookup)s de %(date_field)s.\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"et\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"Un(e) %(model_name)s avec ce %(field_label)s existe déjà.\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"La valeur « %r » n'est pas un choix valide.\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"Ce champ ne peut pas être vide.\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"Ce champ ne peut pas être vide.\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Champ de type : %(field_type)s\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"Entier\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"La valeur « %s » doit être un nombre entier.\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"La valeur « %s » doit être soit True (vrai), soit False (faux).\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Booléen (soit vrai ou faux)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"Chaîne de caractère (jusqu'à %(max_length)s)\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"Des entiers séparés par une virgule\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"\"\n\"Le format de date de la valeur « %s » n'est pas valide. Le format correct \"\n\"est AAAA-MM-DD.\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"\"\n\"Le format de date de la valeur « %s » est correct (AAAA-MM-DD), mais la date \"\n\"n'est pas valide.\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"Date (sans l'heure)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\"Le format de la valeur « %s » n'est pas valide. Le format correct est AAAA-\"\n\"MM-DD HH:MM[:ss[.uuuuuu]][FH].\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\"Le format de date de la valeur « %s » est correct (AAAA-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][FH]), mais la date ou l'heure n'est pas valide.\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"Date (avec l'heure)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"La valeur « %s » doit être un nombre décimal.\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"Nombre décimal\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"Adresse électronique\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"Chemin vers le fichier\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"La valeur « %s » doit être un nombre à virgule flottante.\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"Nombre à virgule flottante\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"Grand entier (8 octets)\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"Adresse IPv4\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"Adresse IP\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"\"\n\"La valeur « %s » doit valoir soit None (rien), True (vrai) ou False (faux).\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"Booléen (soit vrai, faux ou nul)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"Nombre entier positif\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"Petit nombre entier positif\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"Slug (jusqu'à %(max_length)s car.)\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"Petit nombre entier\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"Texte\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"\"\n\"Le format de la valeur « %s » n'est pas valide. Le format correct est HH:MM[:\"\n\"ss[.uuuuuu]].\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\"Le format de la valeur « %s » est correct (HH:MM[:ss[.uuuuuu]]), mais \"\n\"l'heure n'est pas valide.\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"Heure\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"Fichier\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"Image\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"Le modèle %(model)s avec la clef primaire %(pk)r n'existe pas.\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"Clé étrangère (type défini par le champ lié)\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"Relation un à un\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"Relation plusieurs à plusieurs\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"\"\n\"Maintenez appuyé « Ctrl », ou « Commande (touche pomme) » sur un Mac, pour \"\n\"en sélectionner plusieurs.\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"Ce champ est obligatoire.\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"Saisissez un nombre entier.\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"Saisissez un nombre.\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"Assurez-vous qu'il n'y a pas plus de %s chiffres au total.\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"Assurez-vous qu'il n'y a pas plus de %s chiffres après la virgule.\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"Assurez-vous qu'il n'y a pas plus de %s chiffres avant la virgule.\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"Saisissez une date valide.\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"Saisissez une heure valide.\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"Saisissez une date et une heure valides.\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"\"\n\"Aucun fichier n'a été soumis. Vérifiez le type d'encodage du formulaire.\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"Aucun fichier n'a été soumis.\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"Le fichier soumis est vide.\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\"Assurez-vous que ce nom de fichier ne contient pas plus de %(max)d \"\n\"caractères (actuellement %(length)d caractères).\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"Envoyez un fichier ou cochez la case d'effacement, mais pas les deux.\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\"Téléversez une image valide. Le fichier que vous avez transféré n'est pas \"\n\"une image ou bien est corrompu.\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"Saisissez une URL valide.\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"Sélectionnez un choix valide. %(value)s n'en fait pas partie.\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"Saisissez une liste de valeurs.\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"Ordre\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"Supprimer\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"Corrigez les données à double dans %(field)s.\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"\"\n\"Corrigez les données à double dans %(field)s qui doit contenir des valeurs \"\n\"uniques.\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\"Corrigez les données à double dans %(field_name)s qui doit contenir des \"\n\"valeurs uniques pour la partie %(lookup)s de %(date_field)s.\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"Corrigez les valeurs à double ci-dessous.\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"\"\n\"La clé étrangère en ligne ne correspond pas à la clé primaire de l'instance \"\n\"parente.\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"\"\n\"Sélectionnez un choix valide. Ce choix ne fait pas partie de ceux \"\n\"disponibles.\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"Sélectionnez un choix valide ; %s n'en fait pas partie.\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"« %s » n'est pas une valeur correcte pour une clé primaire.\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\"La valeur %(datetime)s n'a pas pu être interprétée dans le fuseau horaire \"\n\"%(current_timezone)s ; elle est peut-être ambigüe ou elle n'existe pas.\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"Actuellement\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"Modifier\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"Effacer\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"Inconnu\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"Oui\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"Non\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"oui, non, peut-être\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"%(size)d octet\"\nmsgstr[1] \"%(size)d octets\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s Kio\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s Mio\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s Gio\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s Tio\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s Pio\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"après-midi\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"matin\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"Après-midi\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"Matin\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"minuit\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"midi\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"lundi\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"mardi\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"mercredi\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"jeudi\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"vendredi\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"samedi\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"dimanche\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"lun\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"mar\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"mer\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"jeu\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"ven\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"sam\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"dim\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"janvier\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"février\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"mars\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"avril\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"mai\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"juin\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"juillet\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"août\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"septembre\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"octobre\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"novembre\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"décembre\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"jan\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"fév\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"mar\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"avr\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"mai\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"jui\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"jul\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"aoû\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"sep\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"oct\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"nov\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"déc\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"jan.\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"fév.\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"mars\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"avr.\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"mai\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"juin\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"juil.\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"août\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"sep.\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"oct.\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"nov.\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"déc.\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"Janvier\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"Février\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"Mars\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"Avril\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"Mai\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"Juin\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"Juillet\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"Août\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"Septembre\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"Octobre\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"Novembre\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"Décembre\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"%(truncated_text)s…\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"ou\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \", \"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"an\"\nmsgstr[1] \"ans\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"mois\"\nmsgstr[1] \"mois\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"semaine\"\nmsgstr[1] \"semaines\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"jour\"\nmsgstr[1] \"jours\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"heure\"\nmsgstr[1] \"heures\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"minute\"\nmsgstr[1] \"minutes\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"minutes\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \", %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"Il n'est pas autorisé d'afficher le contenu de ce répertoire.\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"« %(path)s » n'existe pas\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"Index de %(directory)s\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"Aucune année indiquée\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"Aucun mois indiqué\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"Aucun jour indiqué\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"Aucune semaine indiquée\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"Pas de %(verbose_name_plural)s disponible\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\"Pas de %(verbose_name_plural)s disponible dans le futur car %(class_name)s.\"\n\"allow_future est faux (False).\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"\"\n\"Le format « %(format)s » appliqué à la chaîne date « %(datestr)s » n'est pas \"\n\"valide\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"Aucun objet %(verbose_name)s trouvé en réponse à la requête\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"\"\n\"Page ne vaut pas « last » et ne peut pas non plus être converti en un nombre \"\n\"entier.\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"Page non valide (%(page_number)s) : %(message)s\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"Liste vide et %(class_name)s.allow_empty est faux (False).\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/fr/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/conf/locale/fr/formats.py",
    "content": "# -*- encoding: utf-8 -*-\n# This file is distributed under the same license as the Django package.\n#\nfrom __future__ import unicode_literals\n\n# The *_FORMAT strings use the Django date format syntax,\n# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\nDATE_FORMAT = 'j F Y'\nTIME_FORMAT = 'H:i:s'\nDATETIME_FORMAT = 'j F Y H:i:s'\nYEAR_MONTH_FORMAT = 'F Y'\nMONTH_DAY_FORMAT = 'j F'\nSHORT_DATE_FORMAT = 'j N Y'\nSHORT_DATETIME_FORMAT = 'j N Y H:i:s'\nFIRST_DAY_OF_WEEK = 1 # Monday\n\n# The *_INPUT_FORMATS strings use the Python strftime format syntax,\n# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior\nDATE_INPUT_FORMATS = (\n    '%d/%m/%Y', '%d/%m/%y', # '25/10/2006', '25/10/06'\n    '%d.%m.%Y', '%d.%m.%y', # Swiss (fr_CH), '25.10.2006', '25.10.06'\n    # '%d %B %Y', '%d %b %Y', # '25 octobre 2006', '25 oct. 2006'\n)\nDATETIME_INPUT_FORMATS = (\n    '%d/%m/%Y %H:%M:%S',    # '25/10/2006 14:30:59'\n    '%d/%m/%Y %H:%M',       # '25/10/2006 14:30'\n    '%d/%m/%Y',             # '25/10/2006'\n    '%d.%m.%Y %H:%M:%S',    # Swiss (fr_CH), '25.10.2006 14:30:59'\n    '%d.%m.%Y %H:%M',       # Swiss (fr_CH), '25.10.2006 14:30'\n    '%d.%m.%Y',             # Swiss (fr_CH), '25.10.2006'\n)\nDECIMAL_SEPARATOR = ','\nTHOUSAND_SEPARATOR = '\\xa0' # non-breaking space\nNUMBER_GROUPING = 3\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/fy_NL/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:47+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: English <en@li.org>\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: fy_NL\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"Jou in falide wearde.\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"\"\n\"Jou in falida 'slug' gearsteld mei letters, nûmers, ûnderstreekjes of \"\n\"koppelteken.\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"Jou in falide IPv4-adres.\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"Jou allinnich sifers, skieden troch komma's.\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"%(model_name)s mei dit %(field_label)s bestiet al.\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"Dit fjild kin net leech wêze.\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"\"\n\"Hâld \\\"Control\\\", of \\\"Command\\\" op in Mac del, om mear as ien te \"\n\"selektearjen.\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"Dit fjild is fereaske.\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"Jou in folslein nûmer.\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"Jou in nûmer.\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"Wês wis dat der yn totaal net mear as %s sifers binne.\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"Wês wis dat der net mear as %s desimale plakken binne.\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"Wês wis dat der net mear as %s sifers foar it desimale punt.\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"Jou in falide datum.\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"Jou in falide tiid.\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"Jou in falide datum.tiid.\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"\"\n\"Der is gjin bestân yntsjinne. Kontrolearje it kodearringstype op it \"\n\"formulier.\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"Der is gjin bestân yntsjinne.\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"It yntsjinne bestân is leech.\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\"Laad in falide ôfbylding op. It bestân dy't jo opladen hawwe wie net in \"\n\"ôfbylding of in skansearre ôfbylding.\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"Jou in falide URL.\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"\"\n\"Selektearje in falide kar. %(value)s is net ien fan de beskikbere karren.\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"Jou in list mei weardes.\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"Oarder\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"\"\n\"Selektearje in falide kar. Dizze kar is net ien fan de beskikbere karren.\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"Selektearje in falide kar. %s is net ien fan de beskikbere karren.\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \"\"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \"\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/fy_NL/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/conf/locale/fy_NL/formats.py",
    "content": "# -*- encoding: utf-8 -*-\n# This file is distributed under the same license as the Django package.\n#\n\n# The *_FORMAT strings use the Django date format syntax,\n# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\n# DATE_FORMAT = \n# TIME_FORMAT = \n# DATETIME_FORMAT = \n# YEAR_MONTH_FORMAT = \n# MONTH_DAY_FORMAT = \n# SHORT_DATE_FORMAT = \n# SHORT_DATETIME_FORMAT = \n# FIRST_DAY_OF_WEEK = \n\n# The *_INPUT_FORMATS strings use the Python strftime format syntax,\n# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior\n# DATE_INPUT_FORMATS = \n# TIME_INPUT_FORMATS = \n# DATETIME_INPUT_FORMATS = \n# DECIMAL_SEPARATOR = \n# THOUSAND_SEPARATOR = \n# NUMBER_GROUPING = \n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/ga/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Michael Thornhill <michael@maithu.com>, 2011, 2012.\n# Séamus Ó Cúile <seamus.ocuile@oegaillimh.ie>, 2011.\n# Seán de Búrca <leftmostcat@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:47+0000\\n\"\n\"Last-Translator: Michael Thornhill <michael@maithu.com>\\n\"\n\"Language-Team: Irish (http://www.transifex.com/projects/p/django/language/\"\n\"ga/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ga\\n\"\n\"Plural-Forms: nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : \"\n\"4);\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"Araibis\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"Asarbaiseáinis\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"Bulgáiris\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"Beangáilis\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"Boisnis\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"Catalóinis\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"Seicis\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"Breatnais\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"Danmhairgis \"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"Gearmáinis\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"Gréigis\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"Béarla\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"Béarla na Breataine\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"Spáinnis\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"Spáinnis na hAirgintíne\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"Spáinnis Mheicsiceo \"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"Spáinnis Nicearagua\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"Eastóinis\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"Bascais\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"Peirsis\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"Fionlainnis\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"Fraincis\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"Freaslainnis\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"Gaeilge\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"Gailísis\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"Eabhrais\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"Hiondúis\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"Cróitis\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"Ungáiris\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"Indinéisis\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"Íoslainnis\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"Iodáilis\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"Seapáinis\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"Seoirsis\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"Ciméiris\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"Cannadais\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"Cóiréis\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"Liotuáinis\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"Laitvis\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"Macadóinis\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"Mailéalaimis\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"Mongóilis\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"Ioruais Bokmål\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"Ollainnis\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"Ioruais Nynorsk\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"Puinseáibis\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"Polainnis\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"Portaingéilis\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"Portaingéilis na Brasaíle\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"Rómáinis\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"Rúisis\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"Slóvaicis\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"Slóivéinis\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"Albáinis\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"Seirbis\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"Seirbis (Laidineach)\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"Sualainnis\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"Tamailis\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"Teileagúis\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"Téalainnis\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"Tuircis\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"Úcráinis\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"Urdais\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"Vítneamais\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"Sínis Simplithe\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"Sínis Traidisiúnta\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"Iontráil luach bailí\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"\"\n\"Iontráil 'slug' bailí a chuimsíonn litreacha, uimhreacha, fostríoca nó \"\n\"fleiscíní.\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"Iontráil seoladh IPv4 bailí.\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"Cuir seoladh bailí IPv6 isteach.\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"Cuir seoladh bailí IPv4 nó IPv6 isteach.\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"Ná hiontráil ach digití atá deighilte le camóga.\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"\"\n\"Cinntigh go bhfuil an luach seo %(limit_value)s (tá sé %(show_value)s).\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"\"\n\"Cinntigh go bhfuil an luach seo níos lú ná nó cothrom le %(limit_value)s.\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"\"\n\"Cinntigh go bhfuil an luach seo níos mó ná nó cothrom le %(limit_value)s.\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Cinntigh nach bhfuil níos lú ná %(limit_value)d carachtar ag an luach seo \"\n\"(tá %(show_value)d aige).\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Cinntigh nach bhfuil níos mó ná %(limit_value)d carachtar ag an luach seo \"\n\"(tá %(show_value)d aige).\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"Ní mór a bheith %(field_name)s uathúil ar %(date_field)s %(lookup)s.\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"agus\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"Tá %(model_name)s leis an %(field_label)s seo ann cheana.\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"Ní rogha bailí é an luach %r.\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"Ní cheadaítear luach nialasach sa réimse seo.\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"Ní cheadaítear luach nialasach sa réimse seo.\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Réimse de Cineál: %(field_type)s\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"Slánuimhir\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"Ní mór don luach '%s' a bheith ina shlánuimhir.\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"Ní mór don luach '%s' a bheith Fíor nó Bréagach.\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Boole\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"Teaghrán (suas go %(max_length)s)\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"Slánuimhireacha camóg-scartha\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"\"\n\"Tá an luach '%s' i bhformáid dáta neamhbhailí. Caithfidh sé a bheith i \"\n\"bhformáid YYYY-MM-DD.\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"\"\n\"Tá an formáid ceart (YYYY-MM-DD) ag an luach '%s' ach tá an dáta neamhbhailí\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"Dáta (gan am)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\"Tá an luach '%s' i bhformáid neamhbhailí. Caithfidh sé a bheith i bhformáid \"\n\"YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ].\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\"Tá an formáid ceart (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) ag an luach '%s' \"\n\"ach tá an dáta/am neamhbhailí\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"Dáta (le am)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"Ní mór don luach '%s' a bheith ina uimhir dheachúlach.\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"Uimhir deachúlach\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"R-phost\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"Conair comhaid\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"Ní mór don luach '%s' a bheith ina uimhir snámhpointe.\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"Snámhphointe\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"Mór (8 byte) slánuimhi\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"Seoladh IPv4\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"Seoladh IP\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"Ní mór don luach '%s' a bheith Faic, Fíor nó Bréagach.\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"Boole (Fíor, Bréagach nó Dada)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"Slánuimhir dearfach\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"Slánuimhir beag dearfach\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"Slug (suas go %(max_length)s)\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"Slánuimhir beag\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"Téacs\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"\"\n\"Tá an luach '%s' i bhformáid neamhbhailí. Caithfidh sé a bheith i bhformáid \"\n\"HH:MM[:ss[.uuuuuu]].\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\"Tá an formáid ceart (HH:MM[:ss[.uuuuuu]]) ag an luach '%s' ach tá an am \"\n\"neamhbhailí\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"Am\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"Comhaid\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"Íomhá\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"Níl %(model)s le eochair %(pk)r ann.\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"Eochair Eachtracha (cineál a chinnfear de réir réimse a bhaineann)\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"Duine-le-duine caidreamh\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"Go leor le go leor caidreamh\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"\"\n\"Ar ríomhaire Mac, coinnigh an eochair \\\"Control\\\" nó \\\"Command\\\" síos chun \"\n\"níos mó ná rud amháin a roghnú.\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"Tá an réimse seo riachtanach.\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"Iontráil slánuimhir.\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"Iontráil uimhir.\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"Bí cinnte nach bhfuil níos mó ná %s digit ann.\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"Bí cinnte nach bhfuil níos mó ná %s ionad deachúlach ann.\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"Bí cinnte nach bhfuil níos mó ná %s digit roimh an bpointe deachúlach.\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"Iontráil dáta bailí.\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"Iontráil am bailí.\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"Iontráil dáta/am bailí.\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"Níor seoladh comhad. Deimhnigh cineál an ionchódaithe ar an bhfoirm.\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"Níor seoladh aon chomhad.\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"Tá an comhad a seoladh folamh.\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\"Cinntiú go bhfuil níos lú ná %(max)d carachtair (tá sé %(length)d) ag ainm \"\n\"an chomhaid seo.\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"\"\n\"Cuir ceachtar isteach comhad nó an ticbhosca soiléir, ní féidir an dá \"\n\"sheiceáil.\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\"Uasluchtaigh íomhá bhailí. Níorbh íomhá é an comhad a d'uasluchtaigh tú, nó \"\n\"b'íomhá thruaillithe é.\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"Iontráil URL bailí.\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"Déan rogha bhailí. Ní ceann de na roghanna é %(value)s.\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"Cuir liosta de luachanna isteach.\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"Ord\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"Scrios\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"Le do thoil ceartaigh an sonra dúbail le %(field)s.\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"\"\n\"Ceart le do thoil na sonraí a dhúbailt le haghaidh %(field)s, chaithfidh a \"\n\"bheith uathúil.\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\"Ceart le do thoil na sonraí a dhúbailt le haghaidh %(field_name)s ní mór a \"\n\"bheith uaithúil le haghaidh an %(lookup)s i %(date_field)s.\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"Le do thoil ceartaigh na luachanna dúbail thíos.\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"\"\n\"Ní raibh an eochair eachtrach comhoiriúnach leis an tuismitheoir ásc príomh-\"\n\"eochair.\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"Déan rogha bhailí. Ní ceann de na roghanna é do roghasa.\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"Déan rogha bhailí. Ní ceann de na roghanna é %s.\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"Níl \\\"%s\\\" luach bailí le príomh-eochair.\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\"Ní féidir an %(datetime)s a léirmhíniú i gcrios ama %(current_timezone)s; \"\n\"B'fhéidir go bhfuil sé débhríoch nó nach bhfuil sé ann.\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"Faoi láthair\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"Athraigh\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"Glan\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"Anaithnid\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"Tá\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"Níl\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"tá, níl, b'fhéidir\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"%(size)d bheart\"\nmsgstr[1] \"%(size)d bheart\"\nmsgstr[2] \"%(size)d bheart\"\nmsgstr[3] \"%(size)d mbeart\"\nmsgstr[4] \"%(size)d beart\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s KB\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s MB\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s GB\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s TB\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s PB\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"i.n.\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"r.n.\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"IN\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"RN\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"meán oíche\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"nóin\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"Luan\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"Máirt\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"Céadaoin\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"Déardaoin\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"Aoine\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"Satharn\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"Domhnach\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"Luan\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"Máirt\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"Céad\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"Déar\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"Aoine\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"Sath\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"Domh\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"Eanáir\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"Feabhra\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"Márta\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"Aibreán\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"Bealtaine\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"Meitheamh\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"Iúil\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"Lúnasa\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"Meán Fómhair\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"Deireadh Fómhair\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"Samhain\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"Nollaig\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"ean\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"feabh\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"márta\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"aib\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"beal\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"meith\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"iúil\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"lún\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"mfómh\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"dfómh\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"samh\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"noll\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"Ean.\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"Feabh.\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"Márta\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"Aib.\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"Beal.\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"Meith.\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"Iúil\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"Lún.\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"MFómh.\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"DFómh.\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"Samh.\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"Noll.\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"Mí Eanáir\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"Mí Feabhra\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"Mí na Márta\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"Mí Aibreáin\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"Mí na Bealtaine\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"Mí an Mheithimh\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"Mí Iúil\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"Mí Lúnasa\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"Mí Mheán Fómhair\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"Mí Dheireadh Fómhair\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"Mí na Samhna\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"Mí na Nollag\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"%(truncated_text)s...\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"nó\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \", \"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"bliain\"\nmsgstr[1] \"bliain\"\nmsgstr[2] \"bliana\"\nmsgstr[3] \"mbliana\"\nmsgstr[4] \"bliana\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"mhí\"\nmsgstr[1] \"mhí\"\nmsgstr[2] \"mhí\"\nmsgstr[3] \"mí\"\nmsgstr[4] \"mí\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"seachtain\"\nmsgstr[1] \"sheachtain\"\nmsgstr[2] \"sheachtain\"\nmsgstr[3] \"seachtain\"\nmsgstr[4] \"seachtain\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"lá\"\nmsgstr[1] \"lá\"\nmsgstr[2] \"lá\"\nmsgstr[3] \"lá\"\nmsgstr[4] \"lá\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"uair\"\nmsgstr[1] \"uair\"\nmsgstr[2] \"uair\"\nmsgstr[3] \"n-uair\"\nmsgstr[4] \"uair\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"nóiméad\"\nmsgstr[1] \"nóiméad\"\nmsgstr[2] \"nóiméad\"\nmsgstr[3] \"nóiméad\"\nmsgstr[4] \"nóiméad\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"nóiméad\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \", %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"Níl innéacsanna chomhadlann cheadaítear anseo.\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"Níl %(path)s ann.\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"Innéacs de %(directory)s\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"Bliain gan sonrú\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"Mí gan sonrú\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"Lá gan sonrú\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"Seachtain gan sonrú\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"Gan %(verbose_name_plural)s ar fáil\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\"Níl %(verbose_name_plural)s sa todhchaí ar fáil mar tá  %(class_name)s.\"\n\"allow_future Bréagach.\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"\"\n\"Teaghrán dáta neamhbhailí '%(datestr)s' nuair formáid '%(format)s' á húsáid\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"Níl bhfuarthas %(verbose_name)s le hadhaigh an iarratas\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"\"\n\"Ní 'deireanach' é an leathanach, agus ní féidir é a thiontú go slánuimhir.\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"Liosta folamh agus tá '%(class_name)s .allow_empty' Bréagach.\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/ga/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/conf/locale/ga/formats.py",
    "content": "# -*- encoding: utf-8 -*-\n# This file is distributed under the same license as the Django package.\n#\n\n# The *_FORMAT strings use the Django date format syntax,\n# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\nDATE_FORMAT = 'j F Y'\nTIME_FORMAT = 'H:i:s'\n# DATETIME_FORMAT = \n# YEAR_MONTH_FORMAT = \nMONTH_DAY_FORMAT = 'j F'\nSHORT_DATE_FORMAT = 'j M Y'\n# SHORT_DATETIME_FORMAT = \n# FIRST_DAY_OF_WEEK = \n\n# The *_INPUT_FORMATS strings use the Python strftime format syntax,\n# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior\n# DATE_INPUT_FORMATS = \n# TIME_INPUT_FORMATS = \n# DATETIME_INPUT_FORMATS = \nDECIMAL_SEPARATOR = '.'\nTHOUSAND_SEPARATOR = ','\n# NUMBER_GROUPING = \n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/gl/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# fasouto <fsoutomoure@gmail.com>, 2011.\n# fonso <fonzzo@gmail.com>, 2011.\n#   <fonzzo@gmail.com>, 2013.\n#   <fsoutomoure@gmail.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Oscar Carballal <oscar.carballal@cidadania.coop>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-07 11:24+0000\\n\"\n\"Last-Translator: fonso <fonzzo@gmail.com>\\n\"\n\"Language-Team: Galician (http://www.transifex.com/projects/p/django/language/\"\n\"gl/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: gl\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"africáner\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"árabe\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"azerí\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"búlgaro\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"bielorruso\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"bengalí\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"bretón\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"bosníaco\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"catalán\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"checo\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"galés\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"dinamarqués\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"alemán\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"grego\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"inglés\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"inglés británico\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"Esperanto\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"español\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"español da Arxentina\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"español de México\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"Español de Nicaragua\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"español de Venezuela\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"estoniano\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"vasco\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"persa\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"finés\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"francés\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"frisón\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"irlandés\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"galego\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"hebreo\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"hindi\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"croata\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"húngaro\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"interlingua\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"indonesio\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"islandés\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"italiano\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"xaponés\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"xeorxiano\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"casaco\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"camboxano\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"canará\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"coreano\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"luxemburgués\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"lituano\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"letón\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"macedonio\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"mala\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"mongol\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"malaiala\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"nepalés\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"holandés\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"noruegués (nynorsk)\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"panxabiano\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"polaco\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"portugués\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"portugués do Brasil\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"romanés\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"ruso\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"eslovaco\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"esloveno\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"albanés\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"serbio\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"serbio (alfabeto latino)\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"sueco\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"suahili\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"támil\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"telugu\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"tai\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"turco\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"tártaro\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"udmurt\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"ucraíno\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"urdu\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"vietnamita\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"chinés simplificado\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"chinés tradicional\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"Insira un valor válido.\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"Insira un enderezo de correo electrónico válido.\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"\"\n\"Insira un 'slug' valido composto por letras, números, guións baixos ou \"\n\"medios.\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"Insira unha dirección IPv4 válida.\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"Insira unha dirección IPv6 válida\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"Insira unha dirección IPv4 ou IPv6 válida\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"Insira só díxitos separados por comas.\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"\"\n\"Asegúrese de que este valor é %(limit_value)s (agora é %(show_value)s).\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"Asegure que este valor é menor ou igual a %(limit_value)s.\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"Asegure que este valor é maior ou igual a %(limit_value)s.\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Asegúrese que este valor é de polo menos %(limit_value)d caracteres (agora \"\n\"ten %(show_value)d). \"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Asegúrese de que este valor ten como máximo %(limit_value)d caracteres \"\n\"(agora ten %(show_value)d)).\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"\"\n\"O campo %(field_name)s debe ser único para a busca %(lookup)s en \"\n\"%(date_field)s.\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"e\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"\"\n\"Xa existe un modelo %(model_name)s coa etiqueta de campo %(field_label)s.\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"O valor %r non é unha opción válida.\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"Este campo non pode ser nulo.\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"Este campo non pode estar baleiro.\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Campo do tipo: %(field_type)s\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"Número enteiro\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"'%s' debe ser un número enteiro.\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"'%s' debe ser verdadeiro ou falso.\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Valor booleano (verdadeiro ou falso)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"Cadea (máximo %(max_length)s)\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"Números enteiros separados por comas\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"\"\n\"O valor de '%s' ten un formato inválido de data. Debe estar no formato YYYY-\"\n\"MM-DD.\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"\"\n\"O valor '%s' ten o formato correcto (AAAA-MM-DD) pero non é unha data válida.\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"Data (sen a hora)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\"O valor '%s' non ten un formato válido. Debe de ter o formato AAAA-MM-DD HH:\"\n\"MM[:ss[.uuuuuu]][TZ] \"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\"O valor '%s' ten o formato correcto (AAAA-MM-DD HH:MM[:ss[.uuuuuu]][TZ] ) \"\n\"pero non é unha data/hora válida.\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"Data (coa hora)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"'%s' debe ser un número en formato decimal.\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"Número decimal\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"Enderezo electrónico\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"Ruta do ficheiro\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"'%s' debe ser un número en coma flotante.\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"Número en coma flotante\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"Enteiro grande (8 bytes)\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"Dirección IPv4\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"Enderezo IP\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"O valor '%s' debe ser None, True ou False.\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"Booleano (verdadeiro, falso ou ningún)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"Enteiro positivo\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"Enteiro pequeno positivo\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"Slug (ata %(max_length)s)\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"Enteiro pequeno\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"Texto\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"\"\n\"O valor '%s' non ten un formato válido. Debe ter o formato HH:MM[:ss[.\"\n\"uuuuuu]].\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\"O valor '%s' ten o formato correcto (HH:MM[:ss[.uuuuuu]]) pero non é unha \"\n\"hora válida.\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"Hora\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"Arquivo\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"Imaxe\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"Non existe modelo %(model)s coa clave primaria %(pk)r.\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"Clave Estranxeira (tipo determinado por un campo relacionado)\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"Relación un a un\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"Relación moitos a moitos\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"\"\n\" Para seleccionar máis dunha entrada, manteña premida a tecla \\\"Control\\\", \"\n\"ou \\\"Comando\\\" nun Mac.\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"Requírese este campo.\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"Insira un número enteiro.\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"Insira un número.\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"Asegñurese de que non hai máis de %s díxitos en total.\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"Asegúrese de que non hai máis de %s lugares decimais.\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"\"\n\"Asegúrese de que no hai máis de %s díxitos antes do punto ou coma decimal.\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"Insira unha data válida.\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"Insira unha hora válida.\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"Insira unha data/hora válida.\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"\"\n\"Non se enviou ficheiro ningún. Comprobe o tipo de codificación do formulario.\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"Non se enviou ficheiro ningún.\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"O ficheiro enviado está baleiro.\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\"Asegúrese de que o nome de ficheiro ten como máximo %(max)d caracteres \"\n\"(agora ten %(length)d).\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"\"\n\"Ou ben envíe un ficheiro, ou ben marque a casilla de eliminar, pero non \"\n\"ambas as dúas cousas.\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\"Suba unha imaxe válida. O ficheiro subido non era unha imaxe ou esta estaba \"\n\"corrupta.\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"Insira un URL válido.\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"\"\n\"Escolla unha opción válida. %(value)s non se atopa entre as opción \"\n\"dispoñibles.\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"Insira unha lista de valores.\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"Orde\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"Eliminar\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"Corrixa os datos duplicados no campo %(field)s.\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"Corrixa os datos duplicados no campo %(field)s, que debe ser único.\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\"Corrixa os datos duplicados no campo %(field_name)s, que debe ser único para \"\n\"a busca %(lookup)s no campo %(date_field)s.\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"Corrixa os valores duplicados embaixo.\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"\"\n\"A clave estranxeira en liña non coincide coa clave primaria da instancia nai.\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"\"\n\"Escolla unha opción válida. Esta opción non se atopa entre as opcións \"\n\"dispoñíbeis\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"\"\n\"Escolla unha opción válida. %s non se atopa entre as opcións dispoñíbeis.\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"\\\"%s\\\" non é un valor válido para unha clave primaria.\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\"%(datetime)s non se puido interpretar na zona hora horaria \"\n\"%(current_timezone)s; pode ser ambiguo ou non existir.\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"Actualmente\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"Modificar\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"Limpar\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"Descoñecido\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"Si\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"Non\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"si,non,quizais\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"%(size)d byte\"\nmsgstr[1] \"%(size)d bytes\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s KB\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s MB\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s GB\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s TB\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s PB\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"p.m.\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"a.m.\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"PM\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"AM\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"medianoite\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"mediodía\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"luns\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"martes\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"mércores\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"xoves\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"venres\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"sábado\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"domingo\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"lun\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"mar\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"mér\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"xov\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"ven\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"sáb\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"dom\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"xaneiro\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"febreiro\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"marzo\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"abril\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"maio\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"xuño\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"xullo\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"agosto\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"setembro\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"outubro\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"novembro\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"decembro\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"xan\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"feb\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"mar\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"abr\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"mai\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"xuñ\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"xul\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"ago\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"set\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"out\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"nov\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"dec\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"xan.\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"feb.\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"mar.\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"abr.\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"maio\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"xuño\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"xul.\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"ago.\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"set.\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"out.\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"nov.\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"dec.\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"xaneiro\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"febreiro\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"marzo\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"abril\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"maio\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"xuño\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"xullo\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"agosto\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"setembro\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"outubro\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"novembro\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"decembro\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"%(truncated_text)s...\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"ou\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \", \"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"ano\"\nmsgstr[1] \"anos\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"mes\"\nmsgstr[1] \"meses\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"semana\"\nmsgstr[1] \"semanas\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"día\"\nmsgstr[1] \"días\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"hora\"\nmsgstr[1] \"horas\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"minuto\"\nmsgstr[1] \"minutos\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"minutos\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \", %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"Os índices de directorio non están permitidos aquí.\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\\\"%(path)s\\\" non existe\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"Índice de %(directory)s\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"Non se especificou un ano\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"Non se especificou un mes\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"Non se especificou un día\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"Non se especificou unha semana\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"Non hai %(verbose_name_plural)s dispoñibles\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\"Non hai dispoñibles %(verbose_name_plural)s futuros/as porque %(class_name)s.\"\n\"allow_futuro é False\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"A cadea de data '%(datestr)s' non é válida para o formato '%(format)s'\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"Non se atopou ningún/ha %(verbose_name)s que coincidise coa consulta\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"A páxina non é 'last' nin se pode converter a int.\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"Páxina non válida (%(page_number)s): %(message)s\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"A lista está baleira pero '%(class_name)s.allow_empty' é False.\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/gl/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/conf/locale/gl/formats.py",
    "content": "# -*- encoding: utf-8 -*-\n# This file is distributed under the same license as the Django package.\n#\nfrom __future__ import unicode_literals\n\n# The *_FORMAT strings use the Django date format syntax,\n# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\nDATE_FORMAT = r'j \\d\\e F \\d\\e Y'\nTIME_FORMAT = 'H:i:s'\nDATETIME_FORMAT = r'j \\d\\e F \\d\\e Y \\á\\s H:i'\nYEAR_MONTH_FORMAT = r'F \\d\\e Y'\nMONTH_DAY_FORMAT = r'j \\d\\e F'\nSHORT_DATE_FORMAT = 'd-m-Y'\nSHORT_DATETIME_FORMAT = 'd-m-Y, H:i'\nFIRST_DAY_OF_WEEK = 1 # Monday\n\n# The *_INPUT_FORMATS strings use the Python strftime format syntax,\n# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior\n# DATE_INPUT_FORMATS = \n# TIME_INPUT_FORMATS = \n# DATETIME_INPUT_FORMATS = \nDECIMAL_SEPARATOR = ','\nTHOUSAND_SEPARATOR = '.'\n# NUMBER_GROUPING = \n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/he/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Alex Gaynor <alex.gaynor@gmail.com>, 2011, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Meir Kriheli <meir@mksoft.co.il>, 2011.\n# Meir Kriheli <mkriheli@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:47+0000\\n\"\n\"Last-Translator: Meir Kriheli <mkriheli@gmail.com>\\n\"\n\"Language-Team: Hebrew (http://www.transifex.com/projects/p/django/language/\"\n\"he/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: he\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"ערבית\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"אזרית\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"בולגרית\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"בנגאלית\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"בוסנית\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"קאטלונית\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"צ'כית\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"וולשית\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"דנית\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"גרמנית\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"יוונית\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"אנגלית\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"אנגלית בריטית\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"אספרנטו\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"ספרדית\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"ספרדית ארגנטינית\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"ספרדית מקסיקנית\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"ספרדית ניקרגואה\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"אסטונית\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"בסקית\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"פרסית\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"פינית\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"צרפתית\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"פריזית\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"אירית\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"גאליציאנית\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"עברית\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"הינדי\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"קרואטית\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"הונגרית\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"אינדונזית\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"איסלנדית\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"איטלקית\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"יפנית\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"גיאורגית\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"קזחית\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"חמר\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"קאנאדה\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"קוריאנית\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"ליטאית\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"לטבית\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"מקדונית\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"מלאיאלאם\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"מונגולי\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"נורבגית ספרותית\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"נפאלית\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"הולנדית\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"נורבגית חדשה\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"פנג'אבי\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"פולנית\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"פורטוגזית\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"פורטוגזית ברזילאית\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"רומנית\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"רוסית\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"סלובקית\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"סלובנית\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"אלבנית\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"סרבית\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"סרבית לטינית\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"שוודית\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"סווהילי\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"טמילית\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"טלגו\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"תאילנדית\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"טורקית\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"טטרית\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"אוקראינית\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"אורדו\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"וייטנאמית\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"סינית פשוטה\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"סינית מסורתית\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"יש להזין ערך חוקי.\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"נא להזין כתובת דוא\\\"ל חוקית\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"יש להזין ערך המכיל אותיות, ספרות, קווים תחתונים ומקפים בלבד.\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"יש להזין כתובת IPv4 חוקית.\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"יש להזין כתובת IPv6 חוקית.\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"יש להזין כתובת IPv4 או IPv6 חוקית.\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"יש להזין רק ספרות מופרדות בפסיקים.\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"יש לוודא שערך זה הינו %(limit_value)s (כרגע %(show_value)s).\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"יש לוודא שערך זה פחות מ או שווה ל־%(limit_value)s .\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"יש לוודא שהערך גדול מ או שווה ל־%(limit_value)s.\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"יש לוודא שערך זה מכיל לפחות %(limit_value)d תווים (מכיל %(show_value)d).\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"יש לוודא שערך זה מכיל %(limit_value)d תווים לכל היותר (מכיל %(show_value)d).\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"%(field_name)s חייב להיות ייחודי ל%(lookup)s של ה־%(date_field)s\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"ו\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"%(model_name)s·עם·%(field_label)s·זה קיימת כבר.\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"ערך %r אינו אפשרות חוקית.\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"שדה זה אינו יכול להיות ריק.\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"שדה זה אינו יכול להיות ריק.\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"שדה מסוג: %(field_type)s\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"מספר שלם\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"הערך  '%s' חייב להיות מספר שלם.\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"הערך  '%s' חייב להיות אמת או שקר.\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"בוליאני (אמת או שקר)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"מחרוזת (עד %(max_length)s תווים)\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"מספרים שלמים מופרדים בפסיקים\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"הערך '%s' מכיל תאריך בפורמט לא חוקי. חייב להיות בפורמט YYYY-MM-DD.\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"הערך '%s' בפורמט הנכון (YYYY-MM-DD), אך אינו תאריך חוקי.\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"תאריך (ללא שעה)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\"התחביר של ערך '%s' אינו חוקי. התחביר חייב להיות YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ].\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\"התחביר של ערך '%s' חוקי (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) אך אינו תאריך/\"\n\"זמן חוקי.\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"תאריך (כולל שעה)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"הערך '%s' חייב להיות מספר עשרוני.\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"מספר עשרוני\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"כתובת דוא\\\"ל\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"נתיב קובץ\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"הערך '%s' חייב להיות מספר עם נקודה צפה.\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"מספר עשרוני\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"מספר שלם גדול (8 בתים)\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"כתובת IPv4\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"כתובת IP\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"הערך '%s' חייב להיות None‏, True או False.\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"בוליאני (אמת, שקר או כלום)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"מספר שלם חיובי\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"מספר שלם חיובי קטן\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"Slug (עד %(max_length)s תווים)\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"מספר שלם קטן\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"טקסט\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"הערך '%s' מכיל פורמט לא חוקי. חייב להיות בפורמט  HH:MM[:ss[.uuuuuu]].\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"הערך '%s' בעל פורמט חוקי (HH:MM[:ss[.uuuuuu]]) אך אינו זמן חוקי.\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"זמן\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"קובץ\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"תמונה\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"מודל %(model)s עם מפתח ראשי %(pk)r אינו קיים.\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"Foreign Key (הסוג נקבע לפי השדה המקושר)\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"יחס של אחד לאחד\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"יחס של רבים לרבים\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"\"\n\"יש להחזיק את \\\"Control\\\", או \\\"Command\\\" על מק, לחוץ כדי לבחור יותר מאחד.\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"יש להזין תוכן בשדה זה.\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"נא להזין מספר שלם.\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"נא להזין מספר.\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"נא לוודא שאין יותר מ־%s ספרות סה\\\"כ\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"נא לוודא שאין יותר מ־%s ספרות אחרי הנקודה\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"נא לוודא שאין יותר מ־%s ספרות לפני הנקודה העשרונית\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"יש להזין תאריך חוקי.\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"יש להזין שעה חוקית.\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"יש להזין תאריך ושעה חוקיים.\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"לא נשלח שום קובץ. נא לבדוק את סוג הקידוד של הטופס.\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"לא נשלח שום קובץ\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"הקובץ שנשלח ריק.\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"על שם הקובץ להיות לא יותר מ־%(max)d תווים (יש לו%(length)d).\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"נא לשים קובץ או סימן את התיבה לניקוי, לא שניהם.\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"נא להעלות תמונה חוקית. הקובץ שהעלת אינו תמונה או מכיל תמונה מקולקלת.\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"יש להזין URL חוקי.\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"יש לבחור אפשרות חוקית. %(value)s אינו בין האפשרויות הזמינות.\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"יש להזין רשימת ערכים\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"מיון\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"מחיקה\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"נא לתקן את הערכים הכפולים ל%(field)s.\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"נא לתקן את הערכים הכפולים ל%(field)s, שערכים בו חייבים להיות ייחודיים.\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\"נא לתקן את הערכים הכפולים %(field_name)s, שחייבים להיות ייחודיים ל%(lookup)s \"\n\"של %(date_field)s.\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"נא לתקן את הערכים הכפולים למטה.\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"המפתח הזר ה־inline לא התאים למפתח הראשי של האב.\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"יש לבחור אפשרות חוקית; אפשרות זו אינה אחת מהזמינות.\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"יש לבחור אפשרות חוקית. %s אינו בין האפשרויות הזמינות.\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"\\\"%s\\\" איננו חוקי כמפתח ראשי.\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\"לא ניתן לפרש את %(datetime)s באזור זמן  %(current_timezone)s; הוא עשוי להיות \"\n\"דו-משמעי או לא קיים.\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"עכשיו\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"שינוי\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"לסלק\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"לא ידוע\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"כן\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"לא\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"כן,לא,אולי\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"בית %(size)d \"\nmsgstr[1] \"%(size)d בתים\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s ק\\\"ב\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s מ\\\"ב\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s ג\\\"ב\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s ט\\\"ב\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s פ\\\"ב\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"אחר הצהריים\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"בבוקר\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"אחר הצהריים\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"בבוקר\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"חצות\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"12 בצהריים\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"שני\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"שלישי\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"רביעי\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"חמישי\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"שישי\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"שבת\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"ראשון\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"שני\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"שלישי\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"רביעי\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"חמישי\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"שישי\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"שבת\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"ראשון\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"ינואר\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"פברואר\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"מרץ\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"אפריל\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"מאי\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"יוני\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"יולי\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"אוגוסט\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"ספטמבר\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"אוקטובר\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"נובמבר\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"דצמבר\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"ינו\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"פבר\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"מרץ\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"אפר\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"מאי\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"יונ\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"יול\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"אוג\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"ספט\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"אוק\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"נוב\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"דצמ\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"יאנ'\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"פבר'\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"מרץ\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"אפריל\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"מאי\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"יוני\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"יולי\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"אוג'\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"ספט'\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"אוק'\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"נוב'\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"דצמ'\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"ינואר\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"פברואר\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"מרץ\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"אפריל\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"מאי\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"יוני\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"יולי\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"אוגוסט\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"ספטמבר\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"אוקטובר\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"נובמבר\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"דצמבר\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"%(truncated_text)s...\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"או\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \", \"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"שנה\"\nmsgstr[1] \"שנים\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"חודש\"\nmsgstr[1] \"חודשים\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"שבוע\"\nmsgstr[1] \"שבועות\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"יום\"\nmsgstr[1] \"ימים\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"שעה\"\nmsgstr[1] \"שעות\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"דקה\"\nmsgstr[1] \"דקות\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"דקות\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \", %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"אינדקסים על תיקיה אסורים כאן.\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\\\"%(path)s\\\" אינו קיים\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"אינדקס של %(directory)s\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"לא צויינה שנה\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"לא צויין חודש\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"לא צויין יום\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"לא צויין שבוע\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"לא נמצאו %(verbose_name_plural)s\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\"לא נמצאו %(verbose_name_plural)s בזמן עתיד מאחר ש-%(class_name)s.\"\n\"allow_future מוגדר False.\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"מחרוזת תאריך לא חוקית '%(datestr)s' בהתחשב בתחביר '%(format)s'\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"לא נמצא/ה %(verbose_name)s התואם/ת לשאילתה\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"העמוד אינו 'last', או אינו ניתן להמרה למספר.\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"רשימה ריקה -ו'%(class_name)s.allow_empty' מוגדר False.\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/he/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/conf/locale/he/formats.py",
    "content": "# -*- encoding: utf-8 -*-\n# This file is distributed under the same license as the Django package.\n#\nfrom __future__ import unicode_literals\n\n# The *_FORMAT strings use the Django date format syntax,\n# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\nDATE_FORMAT = 'j בF Y'\nTIME_FORMAT = 'H:i:s'\nDATETIME_FORMAT = 'j בF Y H:i:s'\nYEAR_MONTH_FORMAT = 'F Y'\nMONTH_DAY_FORMAT = 'j בF'\nSHORT_DATE_FORMAT = 'd/m/Y'\nSHORT_DATETIME_FORMAT = 'd/m/Y H:i:s'\n# FIRST_DAY_OF_WEEK = \n\n# The *_INPUT_FORMATS strings use the Python strftime format syntax,\n# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior\n# DATE_INPUT_FORMATS = \n# TIME_INPUT_FORMATS = \n# DATETIME_INPUT_FORMATS = \nDECIMAL_SEPARATOR = '.'\nTHOUSAND_SEPARATOR = ','\n# NUMBER_GROUPING = \n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/hi/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <alok.kumar@gmail.com>, 2013.\n# Chandan kumar <chandankumar.093047@gmail.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-06 13:46+0000\\n\"\n\"Last-Translator: alkuma <alok.kumar@gmail.com>\\n\"\n\"Language-Team: Hindi (http://www.transifex.com/projects/p/django/language/\"\n\"hi/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: hi\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"अफ़्रीकांस\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"अरबी\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"आज़रबाइजानी\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"बलगारियन\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"बेलारूसी\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"बंगाली\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"ब्रेटन\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"बोस्नियन\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"कटलान\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"च्चेक\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"वेल्श\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"दानिश\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"जर्मन\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"ग्रीक\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"अंग्रेज़ी \"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"ब्रिटिश अंग्रेजी\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"एस्परेन्तो\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"स्पानिश\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"अर्जेंटीना स्पैनिश \"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"मेक्सिकन स्पैनिश\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"निकारागुआ स्पैनिश\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"वेनेज़ुएलाई स्पेनिश\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"एस्टोनियन\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"बास्क\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"पारसी\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"फ़िन्निश\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"फ्रेंच\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"फ्रिसियन\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"आयरिश\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"गलिशियन\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"हि‍ब्रू\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"हिंदी\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"क्रोयेशियन\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"हंगेरियन\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"इंतर्लिंगुआ\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"इन्डोनेशियन \"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"आयिस्लान्डिक\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"इटैलियन\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"जपानी\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"ज्योर्जियन\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"कज़ाख\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"ख्मेर\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"कन्‍नड़\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"कोरियन\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"लक्संबर्गी\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"लिथुवेनियन\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"लात्वियन\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"मेसिडोनियन\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"मलयालम\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"मंगोलियन\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"नार्वेजियन बोकमाल\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"नेपाली\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"डच\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"नार्वेजियन नायनॉर्स्क\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"पंजाबी\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"पोलिश\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"पुर्तगाली\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"ब्रजिलियन पुर्तगाली\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"रोमानियन\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"रूसी\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"स्लोवाक\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"स्लोवेनियन\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"अल्बेनियन्\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"सर्बियन\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"सर्बियाई लैटिन\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"स्वीडिश\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"स्वाहिली\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"तमिल\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"तेलुगु\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"थाई\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"तुर्किश\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"तातार\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"उद्मर्त\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"यूक्रानियन\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"उर्दू\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"वियतनामी\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"सरल चीनी\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"पारम्परिक चीनी\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"एक मान्य मूल्य दर्ज करें\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"वैध डाक पता प्रविष्ट करें।\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"एक वैध 'काउंटर' वर्णों, संख्याओं,रेखांकित चिन्ह ,या हाइफ़न से मिलाकर दर्ज करें ।\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"वैध आइ.पि वी 4 पता भरें ।\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"वैध IPv6 पता दर्ज करें.\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"वैध IPv4 या IPv6 पता दर्ज करें.\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"अल्पविराम अंक मात्र ही भरें ।\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"\"\n\"सुनिश्चित करें कि यह मान %(limit_value)s (यह\\n\"\n\" %(show_value)s  है) है ।\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"सुनिश्चित करें कि यह मान  %(limit_value)s से कम या बराबर है ।\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"सुनिश्चित करें यह मान  %(limit_value)s से बड़ा या बराबर है ।\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"सुनिश्चित करें कि यह मान में कम से कम  %(limit_value)d  अक्षरों (इसका\\n\"\n\" %(show_value)d  है) की है.\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"सुनिश्चित करें कि यह मान अधिकांश %(limit_value)d अक्षरों (इसका \\n\"\n\" %(show_value)d है)  में है.\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"  %(date_field)s %(lookup)s के लिए %(field_name)s अद्वितीय होना चाहिए.\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"और\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"इस %(field_label)s के साथ एक %(model_name)s पहले से ही उपस्थित है ।\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"मान %r एक वैध चुनाव नहीं है.\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"यह मूल्य खाली नहीं हो सकता ।\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"इस फ़ील्ड रिक्त नहीं हो सकता है.\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"फील्ड के प्रकार: %(field_type)s\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"पूर्णांक\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"'%s' मान पूर्णांक होना चाहिए.\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"'%s' मान या तो सही है या गलत होना चाहिए.\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"बूलियन (सही अथ‌वा गलत)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"स्ट्रिंग (अधिकतम लम्बाई %(max_length)s)\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"अल्पविराम सीमांकित संख्या\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"'%s'  मान एक अमान्य दिनांक फॉर्मेट मे है. यह YYYY-MM-DD फॉर्मेट में होना चाहिए.\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"'%s' मान को सही प्रारूप (YYYY-MM-DD) है, लेकिन यह एक अमान्य तिथि है.\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"तिथि (बिना समय)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\"'%s' मान एक अमान्य स्वरूप में है. यह YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ] में होना \"\n\"चाहिए.\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\".'%s' मान सही प्रारूप (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) मे नहीं है लेकिन यह एक \"\n\"अमान्य तिथि / समय है.\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"तिथि (समय के साथ)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"'%s' मान को एक दशमलव संख्या में होना चाहिए.\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"दशमलव संख्या\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"ईमेल पता\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"संचिका पथ\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"'%s' मान को दशमलब मे होना चाहिए.\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"चल बिन्दु संख्या\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"बड़ा (8 बाइट) पूर्णांक \"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"IPv4 पता\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"आइ.पि पता\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"'%s' मान को  सही है या गलत या तो कोई नहीं, होना चाहिए.\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"बूलियन (सही, गलत या कुछ नहीं)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"धनात्मक पूर्णांक\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"धनात्मक छोटा पूर्णांक\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"स्लग (%(max_length)s तक)\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"छोटा पूर्णांक\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"पाठ\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"'%s' मान एक अमान्य स्वरूप में है.यह  HH:MM[:ss[.uuuuuu]] स्वरूप में होना चाहिए.\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"'%s' मान सही स्वरूप (HH:MM[:ss[.uuuuuu]]) मे है, लेकिन यह एक अवैध समय है.\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"समय\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"यू.आर.एल\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"फाइल\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"छवि\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"मॉडल%(model)s  pk %(pk)r के साथ मौजूद नहीं है. \"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"विदेशी कुंजी (संबंधित क्षेत्र के द्वारा प्रकार निर्धारित)\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"एक-एक संबंध\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"बहुत से कई संबंध\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"एक से अधिक का चयन करने के लिए मैक पर \\\"कमांड\\\",या\\\"नियंत्रण\\\" नीचे दबाए रखें.\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"यह क्षेत्र अपेक्षित हैं\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"एक पूर्ण संख्या दर्ज करें ।\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"एक संख्या दर्ज करें ।\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"सुनिश्चित करें कि वहाँ कुल में %s से अधिक अंक न हो.\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"सुनिश्चित करें कि वहाँ  %s से अधिक दशमलव स्थान न हो.\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"सुनिश्चित करें कि वहाँ %s से अधिक अंको के पहले दशमलव बिंदु न हो.\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"वैध तिथि भरें ।\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"वैध समय भरें ।\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"वैध तिथि/समय भरें ।\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"कोई संचिका निवेदित नहीं हुई । कृपया कूटलेखन की जाँच करें ।\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"कोई संचिका निवेदित नहीं हुई ।\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"निवेदित संचिका खाली है ।\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\"सुनिश्चित करें कि इस फ़ाइल का नाम अधिकांश %(max)d वर्णों (इसका \\n\"\n\"%(length)d है)को है\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"कृपया या फ़ाइल प्रस्तुत करे या साफ जांचपेटी की जाँच करे,दोनों नहीं .\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"वैध चित्र निवेदन करें । आप के द्वारा निवेदित संचिका अमान्य अथवा दूषित है ।\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"वैध यू.आर.एल भरें ।\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"मान्य इच्छा चयन करें । %(value)s लभ्य इच्छाओं में उप्लब्ध नहीं हैं ।\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"मूल्य सूची दर्ज करें ।\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"छाटें\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"मिटाएँ\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"कृपया %(field)s के लिए डुप्लिकेट डेटा को सही करे.\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"कृपया %(field)s के डुप्लिकेट डेटा जो अद्वितीय होना चाहिए को सही करें.\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\"कृपया %(field_name)s के लिए डुप्लिकेट डेटा को सही करे जो %(date_field)s में \"\n\"%(lookup)s के लिए अद्वितीय होना चाहिए.\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"कृपया डुप्लिकेट मानों को सही करें.\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"इनलाइन विदेशी कुंजी पैरेंट आवृत्ति  प्राथमिक कुंजी से मेल नहीं खाता है .\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"मान्य विकल्प चयन करें । यह विकल्प उपस्थित विकल्पों में नहीं है ।\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"मान्य विकल्प चयन करें । %s उपस्थित विकल्पों में नहीं है ।\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"प्राथमिक कुंजी के लिए \\\"%s\\\" वैध मान नहीं है.\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\"%(current_timezone)s समय क्षेत्र में %(datetime)s का व्याख्या  नहीं कर सकता है, यह \"\n\"अस्पष्ट हो सकता है या नहीं मौजूद हो सकते हैं.\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"फिलहाल\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"बदलें\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"रिक्त करें\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"अनजान\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"हाँ\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"नहीं\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"हाँ, नहीं, शायद\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"%(size)d बाइट\"\nmsgstr[1] \"%(size)d बाइट\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s केबी \"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s मेबी \"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s जीबी \"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s टीबी\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s पीबी\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"बजे\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"बजे\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"बजे\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"बजे\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"मध्यरात्री\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"दोपहर\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"सोम‌वार\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"मंगलवार\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"बुधवार\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"गुरूवार\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"शुक्रवार\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"शनिवार\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"रविवार\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"सोम\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"मंगल\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"बुध\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"गुरू\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"शुक्र\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"शनि\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"रवि\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"जनवरी\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"फ़रवरी\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"मार्च\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"अप्रैल\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"मई\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"जून\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"जुलाई\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"अगस्त\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"सितमबर\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"अक्टूबर\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"नवमबर\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"दिसमबर\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"जन\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"फ़र\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"मा\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"अप्र\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"मई\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"जून\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"जुल\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"अग\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"सित\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"अक्ट\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"नव\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"दिस्\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"जनवरी.\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"फ़रवरी.\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"मार्च\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"अप्रैल\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"मई\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"जून\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"जुलाई\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"अग.\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"सितम्बर.\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"अक्टूबर\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"नवम्बर.\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"दिसम्बर\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"जनवरी\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"फरवरी\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"मार्च\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"अप्रैल\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"मई\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"जून\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"जुलाई\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"अगस्त\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"सितंबर\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"अक्टूबर\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"नवंबर\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"दिसंबर\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"%(truncated_text)s...\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"अथवा\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \", \"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"साल\"\nmsgstr[1] \"साल\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"महीना\"\nmsgstr[1] \"महीना\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"सप्ताह\"\nmsgstr[1] \"सप्ताह\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"दिन\"\nmsgstr[1] \"दिन\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"घंटा\"\nmsgstr[1] \"घंटा\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"मिनट\"\nmsgstr[1] \"मिनट\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"मिनट\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \", %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"निर्देशिका अनुक्रमित की अनुमति यहाँ नहीं है.\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\\\"%(path)s\\\" मौजूद नहीं है\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"%(directory)s का अनुक्रमणिका\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"कोई साल निर्दिष्ट नहीं किया गया \"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"कोई महीने निर्दिष्ट नहीं किया गया \"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"कोई दिन निर्दिष्ट नहीं किया गया \"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"कोई सप्ताह निर्दिष्ट नहीं किया गया \"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"%(verbose_name_plural)s उपलब्ध नहीं है\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\"भविष्य %(verbose_name_plural)s उपलब्ध नहीं है क्योंकि %(class_name)s.allow_future \"\n\"गलत है.\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"तिथि स्ट्रिंग '%(datestr)s' दिया गया प्रारूप '%(format)s' अवैध है \"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \" इस प्रश्न %(verbose_name)s से मेल नहीं खाते है\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"पृष्ठ 'अंतिम' नहीं है और न ही यह एक पूर्णांक के लिए परिवर्तित किया जा सकता है.\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"अवैध पन्ना (%(page_number)s): %(message)s\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"रिक्त सूची और  '%(class_name)s.allow_empty' गलत है.\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/hi/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/conf/locale/hi/formats.py",
    "content": "# -*- encoding: utf-8 -*-\n# This file is distributed under the same license as the Django package.\n#\n\n# The *_FORMAT strings use the Django date format syntax,\n# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\nDATE_FORMAT = 'j F Y'\nTIME_FORMAT = 'g:i:s A'\n# DATETIME_FORMAT = \n# YEAR_MONTH_FORMAT = \nMONTH_DAY_FORMAT = 'j F'\nSHORT_DATE_FORMAT = 'd-m-Y'\n# SHORT_DATETIME_FORMAT = \n# FIRST_DAY_OF_WEEK = \n\n# The *_INPUT_FORMATS strings use the Python strftime format syntax,\n# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior\n# DATE_INPUT_FORMATS = \n# TIME_INPUT_FORMATS = \n# DATETIME_INPUT_FORMATS = \nDECIMAL_SEPARATOR = '.'\nTHOUSAND_SEPARATOR = ','\n# NUMBER_GROUPING = \n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/hr/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# aljosa <aljosa.mohorovic@gmail.com>, 2011.\n#   <aljosa.mohorovic@gmail.com>, 2013.\n# Bojan Mihelač <bmihelac@mihelac.org>, 2012.\n# Davor Lučić <r.dav.lc@gmail.com>, 2011-2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <senko.rasic@dobarkod.hr>, 2012.\n# Ylodi <stjepan@gmail.com>, 2011.\n#   <zlatko.masek@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-14 18:26+0000\\n\"\n\"Last-Translator: aljosa <aljosa.mohorovic@gmail.com>\\n\"\n\"Language-Team: Croatian (http://www.transifex.com/projects/p/django/language/\"\n\"hr/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: hr\\n\"\n\"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"Afrikaans\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"Arapski\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"Azarbejdžanac\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"Unesite ispravnu IPv4 adresu.\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"Bjeloruski\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"Bengalski\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"Bretonski\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"Bošnjački\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"Katalanski\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"Češki\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"Velški\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"Danski\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"Njemački\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"Grčki\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"Engleski\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"Britanski engleski\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"Esperanto\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"Španjolski\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"Argentinski španjolski\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"Meksički španjolski\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"Nikaragvanski Španjolski\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"Venezuelanski Španjolski\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"Estonski\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"Baskijski\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"Perzijski\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"Finski\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"Francuski\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"Frizijski\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"Irski\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"Galičanski\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"Hebrejski\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"Hindi\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"Hrvatski\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"Mađarski\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"Interlingua\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"Indonezijski\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"Islandski\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"Talijanski\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"Japanski\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"Gruzijski\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"Kazaški\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"Kambođanski\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"Kannada\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"Koreanski\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"Luksemburški\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"Litvanski\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"Latvijski\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"Makedonski\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"Malayalam\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"Mongolski\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"Norveški Bokmal\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"Nepalski\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"Nizozemski\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"Norveški Nynorsk\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"Pendžabljanin\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"Poljski\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"Portugalski\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"Brazilski portugalski\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"Rumunjski\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"Ruski\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"Slovački\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"Slovenski\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"Albanski\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"Srpski\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"Latinski srpski\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"Švedski\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"Swahili\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"Tamilski\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"Teluški\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"Thai (tajlandski)\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"Turski\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"Tatarski\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"Udmurtski\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"Ukrajinski\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"Urdu\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"Vijetnamski\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"Pojednostavljeni kineski\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"Tradicionalni kineski\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"Unesite ispravnu vrijednost.\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"Unesite ispravnu e-mail adresu.\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"\"\n\"Unesite ispravan 'slug' koji se sastoji samo od slova, brojeva, povlaka ili \"\n\"crtica.\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"Unesite ispravnu IPv4 adresu.\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"Unesite ispravnu IPv6 adresu.\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"Unesite ispravnu IPv4 ili IPv6 adresu.\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"Unesite samo brojeve razdvojene zarezom.\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"\"\n\"Osigurajte da ova vrijednost ima %(limit_value)s (trenutno je \"\n\"%(show_value)s).\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"Osigurajte da je ova vrijednost manja ili jednaka %(limit_value)s.\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"Osigurajte da je ova vrijednost veća ili jednaka %(limit_value)s.\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Osigurajte da ova vrijednost ima najmanje %(limit_value)d znakova (ima \"\n\"%(show_value)d).\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Osigurajte da ova vrijednost ima najviše %(limit_value)d znakova (ima \"\n\"%(show_value)d).\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"\"\n\"%(field_name)s mora biti jedinstven pojam za %(date_field)s %(lookup)s.\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"i\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"%(model_name)s sa navedenim %(field_label)s već postoji.\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"Vrijednost %r nije ispravan izbor.\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"Ovo polje ne može biti null.\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"Ovo polje ne može biti prazno.\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Polje tipa: %(field_type)s\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"Cijeli broj\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"'%s' vrijednost treba biti cijeli broj.\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"'%s' vrijednost treba biti ili \\\"True\\\" ili \\\"False\\\".\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Boolean (True ili False)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"Slova (do %(max_length)s)\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"Cijeli brojevi odvojeni zarezom\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"\"\n\"'%s' vrijednost je neispravno formatiran datum. Treba biti u YYYY-MM-DD \"\n\"formatu.\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"\"\n\"'%s' vrijednost ima ispravan format (YYYY-MM-DD) ali je nevaljan datum.\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"Datum (bez vremena/sati)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\"'%s' vrijednost je neispravno formatirana. Treba biti u YYYY-MM-DD HH:MM[:ss\"\n\"[.uuuuuu]][TZ] formatu.\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\"'%s' vrijednost ima ispravan format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) ali \"\n\"je nevaljan datum/vrijeme.\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"Datum (sa vremenom/satima)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"'%s' vrijednost treba biti decimalni broj.\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"Decimalni broj\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"E-mail adresa\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"Put do datoteke\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"'%s' vrijednost treba biti broj sa pomičnim zarezom.\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"Broj s pomičnim zarezom (floating point number)\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"Big (8 byte) integer\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"IPv4 adresa\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"IP adresa\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"'%s' vrijednost treba biti \\\"None\\\", \\\"True\\\" ili \\\"False\\\".\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"Boolean (True, False ili None)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"Pozitivan cijeli broj\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"Pozitivan mali cijeli broj\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"'Slug' (do %(max_length)s)\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"Mali broj\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"Tekst\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"\"\n\"'%s' vrijednost je neispravno formatirana. Treba biti u HH:MM[:ss[.uuuuuu]] \"\n\"formatu.\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\"'%s' vrijednost ima ispravan format (HH:MM[:ss[.uuuuuu]]) ali je nevaljano \"\n\"vrijeme.\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"Vrijeme\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"Datoteka\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"Slika\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"Model %(model)s sa pk %(pk)r ne postoji.\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"Foreign Key (type determined by related field)\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"One-to-one relationship\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"Many-to-many relationship\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"\"\n\"Držite \\\"Control\\\", ili \\\"Command\\\" na Mac-u, da bi odabrali više od jednog \"\n\"objekta.\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"Unos za ovo polje je obavezan.\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"Unesite cijeli broj.\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"Unesite broj.\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"Osigurajte da ukupno nema više od %s numeričkih znakova.\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"Osigurajte da ukupno nema više od %s decimalnih mjesta.\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"\"\n\"Osigurajte da ukupno nema više od %s numeričkih znakova prije decimalne \"\n\"točke.\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"Unesite ispravan datum.\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"Unesite ispravno vrijeme.\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"Unesite ispravan datum/vrijeme.\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"Datoteka nije poslana. Provjerite 'encoding type' forme.\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"Datoteka nije poslana.\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"Poslana datoteka je prazna.\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\"Osigurajte da ova datoteka ima najviše %(max)d znakova (trenutno ima \"\n\"%(length)d).\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"Molimo Vas da pošaljete ili datoteku ili označite izbor, a ne oboje.\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\"Upload-ajte ispravnu sliku. Datoteka koju ste upload-ali ili nije slika ili \"\n\"je oštečena.\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"Unesite ispravan URL.\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"Odaberite iz ponuđenog. %(value)s nije ponuđen kao opcija.\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"Unesite listu vrijednosti.\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"Redoslijed:\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"Izbriši\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"Ispravite duplicirane podatke za %(field)s.\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"\"\n\"Molimo ispravite duplicirane podatke za %(field)s, koji moraju biti \"\n\"jedinstveni.\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\"Molimo ispravite duplicirane podatke za %(field_name)s koji moraju biti \"\n\"jedinstveni za %(lookup)s u %(date_field)s.\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"Molimo ispravite duplicirane vrijednosti ispod.\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"The inline foreign key did not match the parent instance primary key.\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"Izaberite ispravnu opciju. Ta opcija nije jedna od dostupnih opcija.\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"Odaberite iz ponuđenog. %s nije ponuđen kao opcija.\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"\\\"%s\\\" nije ispravna vrijednost za primarni kluč.\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\"%(datetime)s ne može biti interpretirano u vremenskoj zoni \"\n\"%(current_timezone)s; možda je dvosmisleno ili ne postoji.\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"Trenutno\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"Promijeni\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"Isprazni\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"Nepoznat pojam\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"Da\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"Ne\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"da,ne,možda\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"%(size)d byte\"\nmsgstr[1] \"%(size)d byte-a\"\nmsgstr[2] \"%(size)d byte-a\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s KB\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s MB\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s GB\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s TB\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s PB\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"popodne\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"ujutro\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"popodne\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"ujutro\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"ponoć\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"podne\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"Ponedjeljak\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"Utorak\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"Srijeda\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"Četvrtak\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"Petak\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"Subota\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"Nedjelja\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"Pon\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"Uto\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"Sri\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"Čet\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"Pet\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"Sub\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"Ned\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"Siječanj\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"Veljača\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"Ožujak\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"Travanj\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"Svibanj\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"Lipanj\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"Srpanj\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"Kolovoz\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"Rujan\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"Listopad\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"Studeni\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"Prosinac\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"sij.\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"velj.\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"ožu.\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"tra.\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"svi.\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"lip.\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"srp.\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"kol.\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"ruj.\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"lis.\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"stu.\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"pro.\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"Sij.\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"Velj.\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"Ožu.\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"Tra.\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"Svi.\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"Lip.\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"Srp.\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"Kol.\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"Ruj.\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"Lis.\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"Stu.\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"Pro.\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"siječnja\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"veljače\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"ožujka\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"travnja\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"svibnja\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"lipnja\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"srpnja\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"kolovoza\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"rujna\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"listopada\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"studenoga\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"prosinca\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"%(truncated_text)s...\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"ili\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \",\"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"godina\"\nmsgstr[1] \"godine\"\nmsgstr[2] \"godine\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"mjesec\"\nmsgstr[1] \"mjeseci\"\nmsgstr[2] \"mjeseci\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"tjedan\"\nmsgstr[1] \"tjedna\"\nmsgstr[2] \"tjedna\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"dan\"\nmsgstr[1] \"dani\"\nmsgstr[2] \"dana\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"sat\"\nmsgstr[1] \"sati\"\nmsgstr[2] \"sata\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"minuta\"\nmsgstr[1] \"minute\"\nmsgstr[2] \"minute\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"minuta\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \", %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"Sadržaji direktorija ovdje nisu dozvoljeni.\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\\\"%(path)s\\\" ne postoji\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"Sadržaj direktorija %(directory)s\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"Nije navedena godina\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"Nije naveden mjesec\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"Nije naveden dan\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"Tjedan nije određen\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"Nije dostupno: %(verbose_name_plural)s\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\"%(verbose_name_plural)s nije dostupno jer je %(class_name)s.allow_future \"\n\"False.\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"Neispravan datum '%(datestr)s' za format '%(format)s'\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"%(verbose_name)s - pretragom nisu pronađeni rezultati za upit\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"Stranica nije 'zadnja', niti se može pretvoriti u cijeli broj.\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"Nevažeća stranica (%(page_number)s):%(message)s\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"Prazna lista i '%(class_name)s.allow_empty' je False.\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/hr/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/conf/locale/hr/formats.py",
    "content": "# -*- encoding: utf-8 -*-\n# This file is distributed under the same license as the Django package.\n#\n\n# The *_FORMAT strings use the Django date format syntax,\n# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\nDATE_FORMAT = 'j. E Y.'\nTIME_FORMAT = 'H:i:s'\nDATETIME_FORMAT = 'j. E Y. H:i'\nYEAR_MONTH_FORMAT = 'F Y.'\nMONTH_DAY_FORMAT = 'j. F'\nSHORT_DATE_FORMAT = 'j.m.Y.'\nSHORT_DATETIME_FORMAT = 'j.m.Y. H:i'\nFIRST_DAY_OF_WEEK = 1\n\n# The *_INPUT_FORMATS strings use the Python strftime format syntax,\n# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior\n# Kept ISO formats as they are in first position\nDATE_INPUT_FORMATS = (\n    '%Y-%m-%d',                     # '2006-10-25'\n    '%d.%m.%Y.', '%d.%m.%y.',       # '25.10.2006.', '25.10.06.'\n    '%d. %m. %Y.', '%d. %m. %y.',   # '25. 10. 2006.', '25. 10. 06.'\n)\nDATETIME_INPUT_FORMATS = (\n    '%Y-%m-%d %H:%M:%S',      # '2006-10-25 14:30:59'\n    '%Y-%m-%d %H:%M',         # '2006-10-25 14:30'\n    '%Y-%m-%d',               # '2006-10-25'\n    '%d.%m.%Y. %H:%M:%S',     # '25.10.2006. 14:30:59'\n    '%d.%m.%Y. %H:%M',        # '25.10.2006. 14:30'\n    '%d.%m.%Y.',              # '25.10.2006.'\n    '%d.%m.%y. %H:%M:%S',     # '25.10.06. 14:30:59'\n    '%d.%m.%y. %H:%M',        # '25.10.06. 14:30'\n    '%d.%m.%y.',              # '25.10.06.'\n    '%d. %m. %Y. %H:%M:%S',   # '25. 10. 2006. 14:30:59'\n    '%d. %m. %Y. %H:%M',      # '25. 10. 2006. 14:30'\n    '%d. %m. %Y.',            # '25. 10. 2006.'\n    '%d. %m. %y. %H:%M:%S',   # '25. 10. 06. 14:30:59'\n    '%d. %m. %y. %H:%M',      # '25. 10. 06. 14:30'\n    '%d. %m. %y.',            # '25. 10. 06.'\n)\n\nDECIMAL_SEPARATOR = ','\nTHOUSAND_SEPARATOR = '.'\nNUMBER_GROUPING = 3\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/hu/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Attila Nagy <>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# János Péter Ronkay <transifex@hangya.net>, 2011, 2012.\n# Szilveszter Farkas <szilveszter.farkas@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:47+0000\\n\"\n\"Last-Translator: Attila Nagy <>\\n\"\n\"Language-Team: Hungarian (http://www.transifex.com/projects/p/django/\"\n\"language/hu/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: hu\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"Arab\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"azerbajdzsáni\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"Bolgár\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"Bengáli\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"Bosnyák\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"Katalán\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"Cseh\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"Walesi\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"Dán\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"Német\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"Görög\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"Angol\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"Brit angol\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"Eszperantó\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"Spanyol\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"Argentin spanyol\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"Mexikói spanyol\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"Nicaraguai spanyol\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"Észt\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"Baszk \"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"Perzsa\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"Finn\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"Francia\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"Fríz\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"Ír\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"Gall\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"Héber\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"Hindi\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"Horvát\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"Magyar\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"Indonéz\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"Izlandi\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"Olasz\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"Japán\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"Grúz\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"Kazak\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"Khmer\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"Kannada\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"Koreai\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"Litván\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"Lett\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"Macedón\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"Malajálam\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"Mongol\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"Bokmål norvég\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"Nepáli\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"Holland\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"Nynorsk norvég\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"Punjabi\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"Lengyel\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"Portugál\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"Brazíliai portugál\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"Román\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"Orosz\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"Szlovák\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"Szlovén\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"Albán\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"Szerb\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"Latin betűs szerb\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"Svéd\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"Szuahéli\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"Tamil\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"Telugu\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"Thai\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"Török\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"Tatár\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"Ukrán\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"urdu\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"Vietnámi\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"Egyszerű kínai\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"Hagyományos kínai\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"Adjon meg egy érvényes értéket.\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"\"\n\"Az URL barát cím csak betűket, számokat, aláhúzásokat és kötőjeleket \"\n\"tartalmazhat.\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"Írjon be egy érvényes IPv4 címet.\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"Írjon be egy érvényes IPv6 címet.\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"Írjon be egy érvényes IPv4 vagy IPv6 címet.\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"Csak számokat adjon meg, vesszővel elválasztva.\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"\"\n\"Bizonyosodjon meg arról, hogy az érték %(limit_value)s (jelenleg: \"\n\"%(show_value)s).\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"Bizonyosodjon meg arról, hogy az érték %(limit_value)s, vagy kisebb.\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"Bizonyosodjon meg arról, hogy az érték %(limit_value)s, vagy nagyobb.\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Bizonyosodjon meg arról, hogy ez az érték legalább %(limit_value)d karaktert \"\n\"tartalmaz (jelenlegi hossza: %(show_value)d).\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Bizonyosodjon meg arról, hogy ez az érték legfeljebb %(limit_value)d \"\n\"karaktert tartalmaz (jelenlegi hossza: %(show_value)d).\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"\"\n\"%(field_name)s egyedi kell hogy legyen %(lookup)s alapján a dátum mezőn: \"\n\"%(date_field)s.\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"és\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"Már létezik %(model_name)s ilyennel: %(field_label)s.\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"%r érték érvénytelen.\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"Ez a mező nem lehet nulla.\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"Ez a mező nem lehet üres.\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Mezőtípus: %(field_type)s\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"Egész\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"'%s' értéknek egész számnak kell lennie.\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"'%s' érték csak igaz (True) vagy hamis (False) lehet.\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Logikai (True vagy False)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"Karakterlánc (%(max_length)s hosszig)\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"Vesszővel elválasztott egészek\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"\"\n\"'%s' érték érvénytelen dátum formátumban van. A dátumnak YYYY-MM-DD \"\n\"formátumban kell lennie.\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"\"\n\"'%s' érték megfelelő formátumban van (YYYY-MM-DD), de a megadott dátum \"\n\"érvénytelen.\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"Dátum (idő nélkül)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\"'%s' érték érvénytelen dátum formátumban van. A dátumnak YYYY-MM-DD HH:MM[:ss\"\n\"[.uuuuuu]][TZ] formátumban kell lennie.\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\"'%s' érték megfelelő formátumban van (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]), \"\n\"de a megadott dátum/idő érvénytelen.\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"Dátum (idővel)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"'%s' értéknek decimálisnak kell lennie.\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"Tizes számrendszerű (decimális) szám\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"E-mail cím\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"Elérési út\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"'%s' értéknek lebegőpontos számnak kell lennie.\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"Lebegőpontos szám\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"Nagy egész szám (8 bájtos)\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"IPv4 cím\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"IP cím\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"'%s' érték csak semmi (None), igaz (True) vagy hamis (False) lehet.\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"Logikai (True, False vagy None)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"Pozitív egész\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"Pozitív kis egész\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"URL-barát cím (%(max_length)s hosszig)\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"Kis egész\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"Szöveg\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"\"\n\"'%s' érték formátuma érvénytelen. Az időnek HH:MM[:ss[.uuuuuu]] formátumban \"\n\"kell lennie.\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\"'%s' formátuma megfelelő (HH:MM[:ss[.uuuuuu]]), de a megadott időpont \"\n\"érvénytelen.\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"Idő\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"Fájl\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"Kép\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"%(model)s modell %(pk)r elsődleges kulccsal nem létezik.\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"Idegen kulcs (típusa a kapcsolódó mezőtől függ)\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"Egy-egy kapcsolat\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"Több-több kapcsolat\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"\"\n\"Tartsa lenyomva a \\\"Control\\\"-t (vagy Mac-en a \\\"Command\\\"-ot) több elem \"\n\"kiválasztásához.\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"Ennek a mezőnek a megadása kötelező.\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"Adjon meg egy egész számot.\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"Adj meg egy számot.\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"Bizonyosodjon meg arról, hogy nincs ennél több számjegy: %s.\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"Bizonyosodjon meg arról, hogy nincs ennél több tizedesjegy: %s.\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"\"\n\"Bizonyosodjon meg arról, hogy nincs ennél több számjegy a tizedesvessző \"\n\"előtt: %s.\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"Adjon meg egy érvényes dátumot.\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"Adjon meg egy érvényes időt.\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"Adjon meg egy érvényes dátumot/időt.\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"Nem küldött el fájlt. Ellenőrizze a kódolás típusát az űrlapon.\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"Semmilyen fájl sem került feltöltésre.\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"A küldött fájl üres.\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\"Bizonyosodjon meg arról, hogy a fájlnév legfeljebb %(max)d karakterből áll \"\n\"(jelenlegi hossza: %(length)d).\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"\"\n\"Küldjön egy új fájlt, vagy jelölje be a törlés négyzetet, de ne mindkettőt \"\n\"egyszerre.\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\"Töltsön fel egy érvényes képfájlt. A feltöltött fájl nem kép volt, vagy \"\n\"megsérült.\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"Adjon meg egy érvényes URL-t.\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"\"\n\"Válasszon érvényes elemet. '%(value)s' nincs az elérhető lehetőségek között.\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"Adja meg értékek egy listáját.\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"Sorrend\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"Törlés\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"Javítsa a mezőhöz tartozó duplikált adatokat: %(field)s.\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"\"\n\"Javítsa a mezőhöz tartozó duplikált adatokat: %(field)s (egyedinek kell \"\n\"lenniük).\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\"Javítsa a mezőhöz tartozó duplikált adatokat: %(field_name)s (egyedinek kell \"\n\"lenniük %(lookup)s alapján a dátum mezőn: %(date_field)s).\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"Javítsa az alábbi duplikált értékeket.\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"\"\n\"A beágyazott idegen kulcs nem egyezik meg a szülő példány elsődleges \"\n\"kulcsával.\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"\"\n\"Válasszon érvényes elemet. Az Ön választása nincs az elérhető lehetőségek \"\n\"között.\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"Válasszon érvényes elemet. %s nincs az elérhető lehetőségek között.\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"\\\"%s\\\" egy érvénytelen elsődleges kulcs érték.\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\"%(datetime)s értelmezhetetlen a megadott %(current_timezone)s időzónában; \"\n\"vagy félreérthető, vagy nem létezik.\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"Jelenleg\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"Módosítás\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"Törlés\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"Ismeretlen\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"Igen\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"Nem\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"igen,nem,talán\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"%(size)d bájt\"\nmsgstr[1] \"%(size)d bájt\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s KB\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s MB\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s GB\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s TB\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s PB\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"du\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"de\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"DU\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"DE\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"éjfél\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"dél\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"hétfő\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"kedd\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"szerda\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"csütörtök\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"péntek\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"szombat\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"vasárnap\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"hét\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"kedd\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"sze\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"csüt\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"pén\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"szo\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"vas\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"január\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"február\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"március\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"április\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"május\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"június\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"július\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"augusztus\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"szeptember\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"október\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"november\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"december\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"jan\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"feb\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"már\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"ápr\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"máj\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"jún\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"júl\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"aug\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"sze\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"okt\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"nov\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"dec\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"jan.\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"febr.\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"márc.\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"ápr.\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"máj.\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"jún.\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"júl.\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"aug.\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"szept.\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"okt.\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"nov.\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"dec.\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"január\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"február\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"március\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"április\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"május\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"június\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"július\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"augusztus\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"szeptember\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"október\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"november\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"december\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"%(truncated_text)s...\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"vagy\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \", \"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"év\"\nmsgstr[1] \"év\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"hónap\"\nmsgstr[1] \"hónap\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"hét\"\nmsgstr[1] \"hét\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"nap\"\nmsgstr[1] \"nap\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"óra\"\nmsgstr[1] \"óra\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"perc\"\nmsgstr[1] \"perc\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"perc\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \", %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"A könyvtárak listázása itt nincs engedélyezve.\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\\\"%(path)s\\\" nem létezik\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"A %(directory)s könyvtár tartalma\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"Nincs év megadva\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"Nincs hónap megadva\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"Nincs nap megadva\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"Nincs hét megadva\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"Nincsenek elérhető %(verbose_name_plural)s\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\"Jövőbeli %(verbose_name_plural)s nem elérhetők, mert %(class_name)s.\"\n\"allow_future értéke False.\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"\"\n\"'%(datestr)s' érvénytelen a meghatározott formátum alapján: '%(format)s'\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"Nincs a keresési feltételeknek megfelelő %(verbose_name)s\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"Az oldal nem 'last', vagy nem lehet egésszé alakítani.\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"Üres lista, és '%(class_name)s.allow_empty' értéke False.\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/hu/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/conf/locale/hu/formats.py",
    "content": "# -*- encoding: utf-8 -*-\n# This file is distributed under the same license as the Django package.\n#\nfrom __future__ import unicode_literals\n\n# The *_FORMAT strings use the Django date format syntax,\n# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\nDATE_FORMAT = 'Y. F j.'\nTIME_FORMAT = 'G.i.s'\nDATETIME_FORMAT = 'Y. F j. G.i.s'\nYEAR_MONTH_FORMAT = 'Y. F'\nMONTH_DAY_FORMAT = 'F j.'\nSHORT_DATE_FORMAT = 'Y.m.d.'\nSHORT_DATETIME_FORMAT = 'Y.m.d. G.i.s'\nFIRST_DAY_OF_WEEK = 1 # Monday\n\n# The *_INPUT_FORMATS strings use the Python strftime format syntax,\n# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior\nDATE_INPUT_FORMATS = (\n    '%Y.%m.%d.', # '2006.10.25.'\n)\nTIME_INPUT_FORMATS = (\n    '%H.%M.%S', # '14.30.59'\n    '%H.%M',    # '14.30'\n)\nDATETIME_INPUT_FORMATS = (\n    '%Y.%m.%d. %H.%M.%S',   # '2006.10.25. 14.30.59'\n    '%Y.%m.%d. %H.%M',      # '2006.10.25. 14.30'\n    '%Y.%m.%d.',            # '2006.10.25.'\n)\nDECIMAL_SEPARATOR = ','\nTHOUSAND_SEPARATOR = ' ' # Non-breaking space\nNUMBER_GROUPING = 3\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/ia/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Martijn Dekker <mcdutchie@hotmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:47+0000\\n\"\n\"Last-Translator: Martijn Dekker <mcdutchie@hotmail.com>\\n\"\n\"Language-Team: Interlingua (http://www.transifex.com/projects/p/django/\"\n\"language/ia/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ia\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"arabe\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"azeri\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"bulgaro\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"bengali\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"bosniaco\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"catalano\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"tcheco\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"gallese\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"danese\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"germano\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"greco\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"anglese\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"anglese britannic\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"esperanto\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"espaniol\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"espaniol argentin\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"espaniol mexican\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"espaniol nicaraguan\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"estoniano\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"basco\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"persiano\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"finnese\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"francese\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"frison\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"irlandese\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"galiciano\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"hebreo\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"hindi\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"croato\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"hungaro\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"indonesiano\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"islandese\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"italiano\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"japonese\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"georgiano\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"kazakh\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"khmer\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"kannada\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"coreano\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"lituano\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"letton\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"macedone\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"malayalam\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"mongolico\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"norvegiano, bokmål\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"nepali\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"hollandese\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"norvegiano, nynorsk\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"punjabi\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"polonese\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"portugese\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"portugese brasilian\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"romaniano\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"russo\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"slovaco\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"sloveno\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"albanese\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"serbo\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"serbo latin\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"svedese\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"swahili\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"tamil\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"telugu\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"thailandese\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"turco\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"tartaro\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"ukrainiano\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"urdu\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"vietnamese\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"chinese simplificate\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"chinese traditional\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"Specifica un valor valide.\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"\"\n\"Specifica un denotation valide, consistente de litteras, numeros, tractos de \"\n\"sublineamento o tractos de union.\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"Specifica un adresse IPv4 valide.\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"Specifica un adresse IPv6 valide.\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"Specifica un adresse IPv4 o IPv6 valide.\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"Scribe solmente digitos separate per commas.\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"\"\n\"Assecura te que iste valor es %(limit_value)s (illo es %(show_value)s).\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"Assecura te que iste valor es inferior o equal a %(limit_value)s.\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"Assecura te que iste valor es superior o equal a %(limit_value)s.\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Assecura te que iste valor contine al minus %(limit_value)d characteres \"\n\"(illo ha %(show_value)d).\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Assecura te que iste valor non contine plus de %(limit_value)d characteres \"\n\"(illo ha %(show_value)d).\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"%(field_name)s debe esser unic pro %(lookup)s de %(date_field)s.\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"e\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"%(model_name)s con iste %(field_label)s jam existe.\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"Le valor %r non es un option valide.\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"Iste campo non pote esser nulle.\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"Iste campo non pote esser vacue.\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Campo de typo: %(field_type)s\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"Numero integre\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"Le valor '%s' debe esser un numero integre.\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"Le valor '%s' debe esser o True/Ver o False.\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Booleano (ver o false)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"Catena (longitude maxime: %(max_length)s)\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"Numeros integre separate per commas\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"\"\n\"Le valor '%s' es in un formato de data invalide. Debe esser in formato AAAA-\"\n\"MM-DD.\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"\"\n\"Le valor '%s' es in le format de data correcte (AAAA-MM-DD) ma es un data \"\n\"invalide.\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"Data (sin hora)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\"Le valor '%s' es in un formato invalide. Debe esser in formato AAAA-MM-DD HH:\"\n\"MM[:ss[.uuuuuu]][FH].\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\"Le valor '%s' es in le formato correcte (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][FH]) \"\n\"ma es un data/hora invalide.\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"Data (con hora)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"Le valor '%s' debe esser un numero decimal.\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"Numero decimal\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"Adresse de e-mail\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"Cammino de file\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"Le valor '%s' debe esser un numero a comma flottante.\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"Numero a comma flottante\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"Numero integre grande (8 bytes)\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"Adresse IPv4\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"Adresse IP\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"Le valor '%s' debe esser None/Nulle, True/Ver o False.\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"Booleano (ver, false o nulle)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"Numero integre positive\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"Parve numero integre positive\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"Denotation (longitude maxime: %(max_length)s)\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"Parve numero integre\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"Texto\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"\"\n\"Le valor '%s' es in un formato invalide. Debe esser in formato HH:MM[:ss[.\"\n\"uuuuuu]].\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\"Le valor '%s' es in le formato correcte (HH:MM[:ss[.uuuuuu]]) ma es un hora \"\n\"invalide.\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"Hora\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"File\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"Imagine\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"Le modello %(model)s con clave primari %(pk)r non existe.\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"Clave estranier (typo determinate per le campo associate)\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"Relation un a un\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"Relation multes a multes\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"Tene premite \\\"Control\\\" o \\\"Command\\\" sur un Mac pro seliger plures.\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"Iste campo es obligatori.\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"Specifica un numero integre.\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"Specifica un numero.\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"Assecura te que il non ha plus de %s digitos in total.\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"Assecura te que il non ha plus de %s cifras post le comma decimal.\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"Assecura te que il non ha plus de %s cifras ante le comma decimal.\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"Specifica un data valide.\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"Specifica un hora valide.\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"Specifica un data e hora valide.\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"\"\n\"Nulle file esseva submittite. Verifica le typo de codification in le \"\n\"formulario.\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"Nulle file esseva submittite.\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"Le file submittite es vacue.\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\"Assecura te que iste nomine de file non contine plus de %(max)d characteres \"\n\"(illo contine %(length)d).\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"Per favor o submitte un file o marca le quadrato \\\"rader\\\", non ambes.\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\"Per favor incarga un imagine valide. Le file que tu incargava o non esseva \"\n\"un imagine o esseva un imagine corrumpite.\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"Specifica un URL valide.\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"\"\n\"Selige un option valide. %(value)s non es inter le optiones disponibile.\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"Scribe un lista de valores.\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"Ordine\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"Deler\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"Per favor corrige le datos duplicate pro %(field)s.\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"\"\n\"Per favor corrige le datos duplicate pro %(field)s, que debe esser unic.\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\"Per favor corrige le datos duplicate pro %(field_name)s, que debe esser unic \"\n\"pro le %(lookup)s in %(date_field)s.\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"Per favor corrige le sequente valores duplicate.\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"\"\n\"Le clave estranier incorporate non correspondeva al clave primari del \"\n\"instantia genitor.\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"\"\n\"Per favor selige un option valide. Iste option non es inter le optiones \"\n\"disponibile.\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"\"\n\"Per favor selige un option valide. %s non es inter le optiones disponibile.\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"\\\"%s\\\" non es un valor valide pro un clave primari.\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\"%(datetime)s non poteva esser interpretate in le fuso horari \"\n\"%(current_timezone)s; illo pote esser ambigue o illo pote non exister.\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"Actualmente\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"Cambiar\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"Rader\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"Incognite\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"Si\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"No\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"si,no,forsan\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"%(size)d byte\"\nmsgstr[1] \"%(size)d bytes\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s KB\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s MB\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s GB\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s TB\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s PB\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"pm.\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"am.\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"PM\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"AM\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"medienocte\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"mediedie\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"lunedi\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"martedi\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"mercuridi\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"jovedi\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"venerdi\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"sabbato\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"dominica\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"lun\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"mar\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"mer\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"jov\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"ven\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"sab\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"dom\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"januario\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"februario\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"martio\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"april\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"maio\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"junio\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"julio\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"augusto\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"septembre\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"octobre\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"novembre\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"decembre\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"jan\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"feb\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"mar\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"apr\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"mai\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"jun\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"jul\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"aug\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"sep\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"oct\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"nov\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"dec\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"Jan.\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"Feb.\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"Mar.\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"April\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"Maio\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"Junio\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"Julio\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"Aug.\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"Sept.\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"Oct.\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"Nov.\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"Dec.\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"Januario\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"Februario\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"Martio\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"April\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"Maio\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"Junio\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"Julio\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"Augusto\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"Septembre\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"Octobre\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"Novembre\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"Decembre\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"%(truncated_text)s...\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"o\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \", \"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"anno\"\nmsgstr[1] \"annos\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"mense\"\nmsgstr[1] \"menses\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"septimana\"\nmsgstr[1] \"septimanas\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"die\"\nmsgstr[1] \"dies\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"hora\"\nmsgstr[1] \"horas\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"minuta\"\nmsgstr[1] \"minutas\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"minutas\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \", %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"Le indices de directorio non es permittite hic.\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\\\"%(path)s\\\" non existe\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"Indice de %(directory)s\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"Nulle anno specificate\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"Nulle mense specificate\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"Nulle die specificate\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"Nulle septimana specificate\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"Il non ha %(verbose_name_plural)s disponibile\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\"In le futuro, %(verbose_name_plural)s non essera disponibile perque \"\n\"%(class_name)s.allow_future es False.\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"Le data '%(datestr)s' es invalide secundo le formato '%(format)s'\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"Nulle %(verbose_name)s trovate que corresponde al consulta\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"Pagina non es 'last', ni pote esser convertite in un numero integre.\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"Le lista es vacue e '%(class_name)s.allow_empty' es False.\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/id/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# rodin <romihardiyanto@gmail.com>, 2011.\n#   <romihardiyanto@gmail.com>, 2011-2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:47+0000\\n\"\n\"Last-Translator: rodin <romihardiyanto@gmail.com>\\n\"\n\"Language-Team: Indonesian (http://www.transifex.com/projects/p/django/\"\n\"language/id/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: id\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"Arab\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"Azerbaijani\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"Bulgaria\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"Bengali\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"Bosnia\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"Catalan\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"Ceska\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"Wales\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"Denmark\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"Jerman\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"Yunani\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"Inggris\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"Inggris Britania\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"Esperanto\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"Spanyol\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"Spanyol Argentina\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"Spanyol Meksiko\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"Spanyol Nikaragua\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"Estonia\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"Basque\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"Persia\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"Finlandia\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"Perancis\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"Frisia\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"Irlandia\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"Galicia\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"Ibrani\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"Hindi\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"Kroasia\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"Hungaria\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"Indonesia\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"Islandia\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"Italia\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"Jepang\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"Georgia\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"Kazakhstan\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"Khmer\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"Kannada\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"Korea\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"Lithuania\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"Latvia\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"Makedonia\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"Malayalam\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"Mongolia\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"Norwegia Bokmal\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"Nepal\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"Belanda\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"Norwegia Nynorsk\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"Punjabi\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"Polandia\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"Portugis\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"Portugis Brazil\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"Romania\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"Rusia\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"Slovakia\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"Slovenia\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"Albania\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"Serbia\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"Serbia Latin\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"Swedia\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"Swahili\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"Tamil\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"Telugu\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"Thailand\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"Turki\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"Tatar\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"Ukrainia\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"Urdu\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"Vietnam\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"Cina Sederhana\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"Cina Tradisionil\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"Masukkan nilai yang valid.\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"Masukkan alamat email yang valid.\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"\"\n\"Masukkan 'slug' yang terdiri dari huruf, bilangan, garis bawah, atau tanda \"\n\"minus.\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"Masukkan alamat IPv4 yang valid.\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"Masukkan alamat IPv6 yang valid\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"Masukkan alamat IPv4 atau IPv6 yang valid\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"Hanya masukkan angka yang dipisahkan dengan koma.\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"Pastikan nilai ini %(limit_value)s (saat ini %(show_value)s).\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"Pastikan nilai ini lebih kecil dari atau sama dengan %(limit_value)s.\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"Pastikan nilai ini lebih besar dari atau sama dengan %(limit_value)s.\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Pastikan nilai ini memiliki sedikitnya %(limit_value)d karakter (saat ini \"\n\"%(show_value)d karakter).\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Pastikan nilai ini tidak memiliki lebih dari %(limit_value)d karakter (saat \"\n\"ini %(show_value)d karakter).\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"%(field_name)s harus unik untuk %(date_field)s %(lookup)s.\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"dan\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"%(model_name)s dengan %(field_label)s telah ada.\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"Nilai %r bukan pilihan yang valid.\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"Field ini tidak boleh null.\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"Field ini tidak boleh kosong.\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Field dengan tipe: %(field_type)s\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"Bilangan Asli\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"Nilai '%s' harus berupa bilangan asli.\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"Nilai '%s' harus bernilai True atau False.\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Nilai Boolean (Salah satu dari True atau False)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"String (maksimum %(max_length)s)\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"Bilangan asli yang dipisahkan dengan koma\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"Format nilai '%s' tidak valid. Format yang benar adalah YYYY-MM-DD.\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"Format nilai '%s' benar (YYYY-MM-DD) tetapi tanggalnya tidak valid.\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"Tanggal (tanpa waktu)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\"Format nilai '%s' tidak valid. Format yang benar adalah YYYY-MM-DD HH:MM[:ss\"\n\"[.uuuuuu]][TZ].\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\"Format nilai '%s' benar (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) tetapi tanggal/\"\n\"waktunya tidak valid.\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"Tanggal (dengan waktu)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"Nilai '%s' harus berupa angka desimal.\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"Bilangan desimal\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"Alamat email\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"Lokasi berkas\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"Nilai '%s' harus berupa bilangan real.\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"Bilangan 'floating point'\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"Bilangan asli raksasa (8 byte)\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"Alamat IPv4\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"Alamat IP\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"Nilai '%s' harus bernilai None, True, atau False.\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"Boolean (Salah satu dari True, False, atau None)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"Bilangan asli positif\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"Bilangan asli kecil positif\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"Slug (hingga %(max_length)s karakter)\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"Bilangan asli kecil\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"Teks\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"\"\n\"Format nilai '%s' tidak valid. Format yang benar adalah HH:MM[:ss[.uuuuuu]].\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\"Format nilai '%s' benar (HH:MM[:ss[.uuuuuu]]) tetapi nilai waktunya tidak \"\n\"valid.\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"Waktu\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"Berkas\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"Gambar\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"Model %(model)s dengan pk %(pk)r tidak ada.\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"Kunci Asing (tipe tergantung dari bidang yang berkaitan)\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"Hubungan satu-ke-satu\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"Hubungan banyak-ke-banyak\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"\"\n\"Tekan \\\"Control\\\", atau \\\"Command\\\" pada Mac untuk memilih lebih dari satu.\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"Bidang ini tidak boleh kosong.\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"Masukkan keseluruhan angka bilangan.\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"Masukkan sebuah bilangan.\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"Pastikan jumlah angka pada bilangan tidak melebihi %s angka.\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"Pastikan bilangan tidak memiliki lebih dari %s angka desimal.\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"\"\n\"Pastikan jumlah angka sebelum desimal pada bilangan tidak memiliki lebih \"\n\"dari %s angka.\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"Masukkan tanggal yang valid.\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"Masukkan waktu yang valid.\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"Masukkan tanggal/waktu yang valid.\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"Tidak ada berkas yang dikirimkan. Periksa tipe pengaksaraan formulir.\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"Tidak ada berkas yang dikirimkan.\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"Berkas yang dikirimkan kosong.\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\"Pastikan nama berkas ini tidak melebihi %(max)d karakter (saat ini \"\n\"%(length)d karakter).\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"\"\n\"Pilih antara mengirimkan berkas atau menghapus tanda centang pada kotak \"\n\"centang\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\"Unggah gambar yang valid. Berkas yang Anda unggah bukan merupakan berkas \"\n\"gambar atau gambarnya rusak.\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"Masukkan URL yang valid.\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"\"\n\"Masukkan pilihan yang valid. %(value)s bukan salah satu dari pilihan yang \"\n\"tersedia.\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"Masukkan beberapa nilai.\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"Urutan\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"Hapus\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"Perbaiki data ganda untuk %(field)s.\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"Perbaiki data ganda untuk %(field)s yang nilainya harus unik.\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\"Perbaiki data ganda untuk %(field_name)s yang nilainya harus unik untuk \"\n\"pencarian %(lookup)s pada %(date_field)s.\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"Perbaiki nilai ganda di bawah ini.\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"\"\n\"Kunci asing 'inline' tidak cocok dengan kunci utama 'instance' milik induk.\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"\"\n\"Masukkan pilihan yang valid. Pilihan tersebut bukan salah satu dari pilihan \"\n\"yang tersedia.\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"\"\n\"Masukkan pilihan yang valid. %s bukan salah satu pilihan yang tersedia.\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"\\\"%s\\\" bukan nilai yang benar untuk kunci utama.\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\"%(datetime)s tidak dapat diinterpretasikan pada zona waktu \"\n\"%(current_timezone)s; mungkin nilainya ambigu atau mungkin tidak ada.\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"Saat ini\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"Ubah\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"Hapus\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"Tidak diketahui\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"Ya\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"Tidak\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"ya,tidak,mungkin\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"%(size)d bita\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s KB\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s MB\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s GB\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s TB\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s PB\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"p.m\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"a.m\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"PM\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"AM\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"tengah malam\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"siang\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"Senin\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"Selasa\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"Rabu\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"Kamis\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"Jumat\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"Sabtu\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"Minggu\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"Sen\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"Sel\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"Rab\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"Kam\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"Jum\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"Sab\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"Min\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"Januari\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"Februari\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"Maret\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"April\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"Mei\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"Juni\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"Juli\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"Agustus\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"September\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"Oktober\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"November\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"Desember\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"jan\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"feb\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"mar\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"apr\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"mei\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"jun\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"jul\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"agu\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"sep\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"okt\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"nov\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"des\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"Jan.\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"Feb.\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"Maret\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"April\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"Mei\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"Juni\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"Juli\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"Agu\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"Sep.\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"Okt.\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"Nov.\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"Des.\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"Januari\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"Februari\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"Maret\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"April\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"Mei\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"Juni\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"Juli\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"Agustus\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"September\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"Oktober\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"November\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"Desember\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"%(truncated_text)s...\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"atau\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \", \"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"tahun\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"bulan\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"minggu\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"hari\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"jam\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"menit\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"menit\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \", %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"Indeks direktori tidak diizinkan di sini.\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\\\"%(path)s\\\" tidak ada\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"Daftar isi %(directory)s\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"Tidak ada tahun dipilih\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"Tidak ada bulan dipilih\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"Tidak ada hari dipilih\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"Tidak ada minggu dipilih\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"Tidak ada %(verbose_name_plural)s tersedia\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\"%(verbose_name_plural)s di masa depan tidak tersedia karena %(class_name)s.\"\n\"allow_future bernilai False.\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"Teks tanggal tidak valid '%(datestr)s' dalam format '%(format)s'\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"Tidak ada %(verbose_name)s yang cocok dengan kueri\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"\"\n\"Laman bukan yang 'terakhir' atau juga tidak dapat dikonversikan ke bilangan \"\n\"bulat.\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"Daftar kosong dan '%(class_name)s.allow_empty' bernilai False.\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/id/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/conf/locale/id/formats.py",
    "content": "# -*- encoding: utf-8 -*-\n# This file is distributed under the same license as the Django package.\n#\n\n# The *_FORMAT strings use the Django date format syntax,\n# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\nDATE_FORMAT = 'j N Y'\nDATETIME_FORMAT = \"j N Y, G.i.s\"\nTIME_FORMAT = 'G.i.s'\nYEAR_MONTH_FORMAT = 'F Y'\nMONTH_DAY_FORMAT = 'j F'\nSHORT_DATE_FORMAT = 'd-m-Y'\nSHORT_DATETIME_FORMAT = 'd-m-Y G.i.s'\nFIRST_DAY_OF_WEEK = 1 #Monday\n\n# The *_INPUT_FORMATS strings use the Python strftime format syntax,\n# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior\nDATE_INPUT_FORMATS = (\n    '%d-%m-%y', '%d/%m/%y',             # '25-10-09', 25/10/09'\n    '%d-%m-%Y', '%d/%m/%Y',             # '25-10-2009', 25/10/2009'\n    '%d %b %Y',                         # '25 Oct 2006',\n    '%d %B %Y',                         # '25 October 2006'\n)\n\nTIME_INPUT_FORMATS = (\n    '%H.%M.%S',                         # '14.30.59'\n    '%H.%M',                            # '14.30'\n)\n\nDATETIME_INPUT_FORMATS = (\n    '%d-%m-%Y %H.%M.%S',                # '25-10-2009 14.30.59'\n    '%d-%m-%Y %H.%M',                   # '25-10-2009 14.30'\n    '%d-%m-%Y',                         # '25-10-2009'\n    '%d-%m-%y %H.%M.%S',                # '25-10-09' 14.30.59'\n    '%d-%m-%y %H.%M',                   # '25-10-09' 14.30'\n    '%d-%m-%y',                         # '25-10-09''\n    '%m/%d/%y %H.%M.%S',                # '10/25/06 14.30.59'\n    '%m/%d/%y %H.%M',                   # '10/25/06 14.30'\n    '%m/%d/%y',                         # '10/25/06'\n    '%m/%d/%Y %H.%M.%S',                # '25/10/2009 14.30.59'\n    '%m/%d/%Y %H.%M',                   # '25/10/2009 14.30'\n    '%m/%d/%Y',                         # '10/25/2009'\n)\n\nDECIMAL_SEPARATOR = ','\nTHOUSAND_SEPARATOR = '.'\nNUMBER_GROUPING = 3\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/is/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# gudmundur <gudmundur.bjarni@gmail.com>, 2011.\n# Hafsteinn Einarsson <haffi67@gmail.com>, 2011, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# saevarom <saevar@saevar.is>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:47+0000\\n\"\n\"Last-Translator: Hafsteinn Einarsson <haffi67@gmail.com>\\n\"\n\"Language-Team: Icelandic (http://www.transifex.com/projects/p/django/\"\n\"language/is/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: is\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"Arabíska\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"Aserbaídsjíska\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"Búlgarska\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"Bengalska\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"Bosníska\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"Katalónska\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"Tékkneska\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"Velska\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"Danska\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"Þýska\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"Gríska\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"Enska\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"Bresk enska\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"Spænska\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"Argentínsk spænska\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"Mexíkósk Spænska\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"Níkaragva spænska\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"Eistland\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"Baskneska\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"Persneska\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"Finnska\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"Franska\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"Frísneska\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"Írska\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"Galíska\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"Hebreska\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"Hindí\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"Króatíska\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"Ungverska\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"Indónesíska\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"Íslenska\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"Ítalska\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"Japanska\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"Georgíska\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"Kmeríska\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"Kannadanska\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"Kóreska\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"Litháenska\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"Lettneska\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"Makedónska\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"Malajalamska\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"Mongólska\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"Norska bókmál\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"Hollenska\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"Nýnorska\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"Púndjabíska\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"Pólska\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"Portúgalska\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"Brasilísk Portúgalska\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"Rúmenska\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"Rússneska\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"Slóvaska\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"Slóvenska\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"Albanska\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"Serbneska\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"Serbnesk latína\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"Sænska\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"Tamílska\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"Telúgúska\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"Tælenska\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"Tyrkneska\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"Úkraínska\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"Úrdú\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"Víetnamska\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"Einfölduð kínverska \"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"Hefðbundin kínverska\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"Sláðu inn gilt gildi.\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"\"\n\"Settu inn gildan vefslóðartitil sem samanstendur af latneskum bókstöfum, \"\n\"númerin, undirstrikum og bandstrikum.\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"Sláðu inn gilda IPv4 tölu.\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"Sláðu inn gilt IPv6 vistfang.\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"Sláðu inn gilt IPv4 eða IPv6 vistfang.\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"Skrifaðu einungis tölur aðskildar með kommum.\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"\"\n\"Gakktu úr skugga um að gildi sé %(limit_value)s (það er %(show_value)s).\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"\"\n\"Gakktu úr skugga um að gildið sé minna en eða jafnt og %(limit_value)s.\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"\"\n\"Gakktu úr skugga um að gildið sé stærra en eða jafnt og %(limit_value)s.\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Gakktu úr skugga um að þetta gildi hafi a.m.k. %(limit_value)d stafi (it has \"\n\"%(show_value)d).\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Gakktu úr skugga um að þetta gildi hafi í mesta lagi %(limit_value)d stafi \"\n\"(it has %(show_value)d).\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"\"\n\"%(field_name)s verður að vera einkvæmt fyrir %(date_field)s %(lookup)s.\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"og\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"%(model_name)s með þetta %(field_label)s er nú þegar til.\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"Gildið %r er ógilt.\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"Þessi reitur getur ekki haft tómgildi (null).\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"Þessi reitur má ekki vera tómur.\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Reitur af gerð: %(field_type)s\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"Heiltala\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"Gildi '%s' verður að vera heiltala.\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"Gildi '%s' verður að vera annaðhvort satt eða ósatt.\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Boole-gildi (True eða False)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"Strengur (mest %(max_length)s)\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"Heiltölur aðgreindar með kommum\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"\"\n\"Gildi '%s' er ógilt dagsetningarsnið. Það verður að vera á ÁÁÁÁ-MM-DD sniði.\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"Gildi '%s' hefur rétt snið (ÁÁÁÁ-MM-DD) en dagsetningin er ógild.\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"Dagsetning (án tíma)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\"Gildi '%s' hefur ógilt snið. Það verður að vera á sniðinu: ÁÁÁÁ-MM-DD KK:MM \"\n\"[:ss[.uuuuuu]] [TZ].\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\"Gildi '%s' hefur rétt snið (YYYY-MM-DD HH:MM [:ss[.uuuuuu]] [TZ]) en það er \"\n\"ógild dagsetning / tími.\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"Dagsetning (með tíma)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"Gildi '%s' verður að vera heiltala.\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"Tugatala\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"Netfang\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"Skjalaslóð\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"Gildi '%s' verður að vera fleytitala.\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"Fleytitala (floating point number)\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"Stór (8 bæta) heiltala\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"IPv4 vistfang\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"IP tala\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"Gildi '%s' verða að vera eitt eftirtalinna: None, True eða False.\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"Boole-gildi (True, False eða None)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"Jákvæð heiltala\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"Jákvæð lítil heiltala\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"Slögg (allt að %(max_length)s)\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"Lítil heiltala\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"Texti\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"\"\n\"Gildi '%s' er á ógildu sniði. Það verður að vera á sniðinu HH: MM [: ss [.\"\n\"uuuuuu]].\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\"Gildi '%s' er á réttu sniði (HH:MM[:ss[.uuuuuu]]), en gildið er ekki gilt.\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"Tími\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"Veffang\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"Skrá\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"Mynd\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"Módel %(model)s með lykil %(pk)r er ekki til.\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"Ytri lykill (Gerð ákveðin af skyldum reit)\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"Einn-á-einn samband.\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"Margir-til-margra samband.\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"\"\n\"Haltu inni „Control“, eða „Command“ á Mac til þess að velja fleira en eitt.\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"Þennan reit þarf að fylla út.\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"Sláðu inn heila tölu.\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"Sláðu inn heila tölu.\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"Gildið má ekki hafa fleiri en %s tölur.\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"Gildið má ekki hafa meira en %s tugatölustafi (decimal places).\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"Gildið má ekki hafa fleiri en %s tölur fyrir tugabrotskil.\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"Sláðu inn gilda dagsetningu.\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"Sláðu inn gilda tímasetningu.\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"Sláðu inn gilda dagsetningu ásamt tíma.\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"Engin skrá var send. Athugaðu kótunartegund á forminu (encoding type).\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"Engin skrá var send.\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"Innsend skrá er tóm.\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"Gildið má ekki hafa fleiri en %(max)d stafi (gildið hefur %(length)d).\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"Vinsamlegast sendu annað hvort inn skrá eða merktu í boxið, ekki bæði.\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\"Halaðu upp gildri myndskrá. Skráin sem þú halaðir upp var annað hvort gölluð \"\n\"eða ekki mynd.\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"Sláðu inn gilt veffang (URL).\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"\"\n\"Veldu gildan valmöguleika. %(value)s er ekki eitt af gildum valmöguleikum.\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"Sláðu inn lista af gildum.\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"Röð\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"Eyða\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"Vinsamlegast leiðréttu tvítekin gögn í reit %(field)s.\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"\"\n\"Vinsamlegast lagfærðu gögn í reit %(field)s, sem verða að vera einstök.\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\"Vinsamlegast leiðréttu tvítekin gögn í reit %(field_name)s sem verða að vera \"\n\"einstök fyrir %(lookup)s í %(date_field)s.\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"Vinsamlegast lagfærðu tvítöldu gögnin fyrir neðan.\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"Ytri lykill virðist ekki passa við aðallykil eiganda.\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"\"\n\"Veldu gildan valmöguleika. Valið virðist ekki vera eitt af gildum \"\n\"valmöguleikum.\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"Veldu gildan valmöguleika. %s er ekki einn af gildum valmöguleikum.\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"\\\"%s\\\" er ekki gilt sem lykill.\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\"%(datetime)s er ekki hægt að túlka í tímabelti %(current_timezone)s, það \"\n\"getur verið óljóst eða að það er ekki til.\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"Eins og er:\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"Breyta\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"Hreinsa\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"Óþekkt\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"Já\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"Nei\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"já,nei,kannski\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"%(size)d bæti\"\nmsgstr[1] \"%(size)d bæti\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s KB\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s MB\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s GB\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s TB\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s PB\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"eftirmiðdegi\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"morgun\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"Eftirmiðdegi\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"Morgun\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"miðnætti\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"hádegi\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"mánudagur\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"þriðjudagur\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"miðvikudagur\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"fimmtudagur\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"föstudagur\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"laugardagur\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"sunnudagur\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"Mán\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"Þri\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"Mið\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"Fim\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"Fös\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"Lau\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"Sun\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"janúar\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"febrúar\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"mars\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"apríl\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"maí\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"júní\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"júlí\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"ágúst\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"september\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"október\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"nóvember\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"desember\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"Jan\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"feb\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"mar\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"apr\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"maí\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"jún\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"júl\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"ágú\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"sep\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"okt\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"nóv\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"des\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"Jan.\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"Feb.\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"Mars\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"Apríl\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"Maí\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"Júní\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"Júlí\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"Ág.\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"Sept.\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"Okt.\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"Nóv.\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"Des.\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"Janúar\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"Febrúar\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"Mars\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"Apríl\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"Maí\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"Júní\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"Júlí\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"Ágúst\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"September\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"Október\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"Nóvember\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"Desember\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"%(truncated_text)s...\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"eða\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \", \"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"ár\"\nmsgstr[1] \"ár\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"mánuður\"\nmsgstr[1] \"mánuðir\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"vika\"\nmsgstr[1] \"vikur\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"dagur\"\nmsgstr[1] \"dagar\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"klukkutími\"\nmsgstr[1] \"klukkutímar\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"mínúta\"\nmsgstr[1] \"mínútur\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"mínútur\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \", %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"Möppulistar eru ekki leyfðir hér.\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\\\"%(path)s\\\" er ekki til\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"Innihald %(directory)s \"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"Ekkert ár tilgreint\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"Enginn mánuður tilgreindur\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"Enginn dagur tilgreindur\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"Engin vika tilgreind\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"Ekkert %(verbose_name_plural)s í boði.\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\"Framtíðar %(verbose_name_plural)s ekki í boði því %(class_name)s.\"\n\"allow_future er Ósatt.\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"Ógilt snið dagsetningar \\\"%(datestr)s\\\" gefið sniðið \\\"%(format)s\\\"\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"Ekkert %(verbose_name)s sem uppfyllir skilyrði\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"Þetta er hvorki síðasta síða, né er hægt að breyta í heiltölu.\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"Tómur listi og '%(class_name)s.allow_empty er Ósatt.\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/is/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/conf/locale/is/formats.py",
    "content": "# -*- encoding: utf-8 -*-\n# This file is distributed under the same license as the Django package.\n#\n\n# The *_FORMAT strings use the Django date format syntax,\n# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\nDATE_FORMAT = 'j. F Y'\nTIME_FORMAT = 'H:i:s'\n# DATETIME_FORMAT = \nYEAR_MONTH_FORMAT = 'F Y'\nMONTH_DAY_FORMAT = 'j. F'\nSHORT_DATE_FORMAT = 'j.n.Y'\n# SHORT_DATETIME_FORMAT = \n# FIRST_DAY_OF_WEEK = \n\n# The *_INPUT_FORMATS strings use the Python strftime format syntax,\n# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior\n# DATE_INPUT_FORMATS = \n# TIME_INPUT_FORMATS = \n# DATETIME_INPUT_FORMATS = \nDECIMAL_SEPARATOR = ','\nTHOUSAND_SEPARATOR = '.'\n# NUMBER_GROUPING = \n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/it/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# C8E <C8E@miron.it>, 2011.\n# Denis Darii <sinednx@gmail.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Nicola Larosa <transifex@teknico.net>, 2011-2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:47+0000\\n\"\n\"Last-Translator: Nicola Larosa <transifex@teknico.net>\\n\"\n\"Language-Team: Italian (http://www.transifex.com/projects/p/django/language/\"\n\"it/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: it\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"Afrikaans\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"arabo\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"Azero\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"bulgaro\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"Bielorusso\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"bengali\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"Bretone\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"bosniaco\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"catalano\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"ceco\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"gallese\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"danese\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"tedesco\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"greco\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"inglese\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"inglese britannico\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"Esperanto\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"spagnolo\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"spagnolo argentino\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"Spagnolo messicano\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"Spagnolo nicaraguense\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"Spagnolo venezuelano\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"estone\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"basco\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"persiano\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"finlandese\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"francese\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"frisone\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"irlandese\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"galiziano\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"ebraico\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"hindi\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"croato\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"ungherese\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"Interlingua\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"indonesiano\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"islandese\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"italiano\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"giapponese\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"georgiano\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"Kazakh\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"khmer\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"kannada\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"coreano\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"Lussemburghese\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"lituano\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"lettone\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"macedone\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"malayalam\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"mongolo\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"norvegese bokmal\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"Nepali\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"olandese\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"norvegese nynorsk\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"punjabi\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"polacco\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"portoghese\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"brasiliano portoghese\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"rumeno\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"russo\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"slovacco\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"sloveno\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"albanese\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"serbo\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"serbo latino\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"svedese\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"Swahili\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"tamil\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"telugu\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"tailandese\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"turco\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"Tatar\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"Udmurt\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"ucraino\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"Urdu\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"vietnamita\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"cinese semplificato\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"cinese tradizionale\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"Inserisci un valore valido.\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"Inserisci un indirizzo email valido.\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"\"\n\"Inserisci uno 'slug' valido contenente lettere, cifre, sottolineati o \"\n\"trattini.\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"Inserisci un indirizzo IPv4 valido.\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"Inserisci un indirizzo IPv6 valido.\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"Inserisci un indirizzo IPv4 o IPv6 valido.\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"Inserisci solo cifre separate da virgole.\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"\"\n\"Assicurati che questo valore sia %(limit_value)s (ora è %(show_value)s).\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"Assicurati che questo valore sia minore o uguale a %(limit_value)s.\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"Assicuratii che questo valore sia maggiore o uguale a %(limit_value)s.\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Assicurati che questo valore contenga almeno %(limit_value)d caratteri (ne \"\n\"ha %(show_value)d).\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Assicuratii che questo valore non contenga più di %(limit_value)d caratteri \"\n\"(ne ha %(show_value)d).\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"%(field_name)s deve essere unico per %(lookup)s %(date_field)s.\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"e\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"%(model_name)s con questo %(field_label)s esiste già.\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"Il valore %r non è una scelta valida.\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"Questo campo non può essere nullo.\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"Questo campo non può essere vuoto.\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Campo di tipo: %(field_type)s\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"Intero\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"Il valore '%s' deve essere un numero intero.\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"Il valore '%s' deve essere True o False.\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Booleano (True o False)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"Stringa (fino a %(max_length)s)\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"Interi separati da virgole\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"\"\n\"Il valore '%s' ha un formato di data non valido. Deve essere nel formato \"\n\"AAAA-MM-DD.\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"\"\n\"Il valore '%s' ha il formato corretto (AAAA-MM-DD), ma è una data non valida.\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"Data (senza ora)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\"Il valore '%s' ha un formato non valido. Deve essere nel formato AAAA-MM-GG \"\n\"HH:MM[:ss[.uuuuuu]][TZ].\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\"Il valore '%s' ha il formato corretto (AAAA-MM-GG HH:MM[:ss[.uuuuuu]][TZ]), \"\n\"ma è una data/ora non valida.\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"Data (con ora)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"Il valore '%s' deve essere un numero decimale.\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"Numero decimale\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"Indirizzo email\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"Percorso di file\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"Il valore '%s' deve essere un numero in virgola mobile.\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"Numero decimale\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"Intero grande (8 byte)\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"Indirizzo IPv4\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"Indirizzo IP\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"Il valore '%s' deve essere None, True o False.\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"Booleano (True, False o None)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"Intero positivo\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"Piccolo intero positivo\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"Slug (fino a %(max_length)s)\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"Piccolo intero\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"Testo\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"\"\n\"Il valore '%s' ha un formato non valido. Deve essere nel formato HH:MM[:ss[.\"\n\"uuuuuu]][TZ].\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\"Il valore '%s' ha il formato corretto (HH:MM[:ss[.uuuuuu]][TZ]), ma è una \"\n\"data/ora non valida.\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"Ora\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"File\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"Immagine\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"Il modello %(model)s con chiave primaria %(pk)r non esiste.\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"Foreign Key (tipo determinato dal campo collegato)\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"Relazione uno a uno\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"Relazione molti a molti\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"\"\n\"Tieni premuto \\\"Control\\\", o \\\"Command\\\" su Mac, per selezionarne più di uno.\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"Questo campo è obbligatorio.\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"Inserisci un numero intero.\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"Inserisci un numero.\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"Assicurati che non vi siano più di %s cifre in totale.\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"Assicurati che non vi siano più di %s cifre decimali.\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"Assicurati che non vi siano più di %s cifre prima della virgola.\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"Inserisci una data valida.\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"Inserisci un'ora valida.\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"Inserisci una data/ora valida.\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"\"\n\"Non è stato inviato alcun file. Verifica il tipo di codifica sulla form.\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"Nessun file è stato inviato.\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"Il file inviato è vuoto.\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\"Assicurati che questo nome di file non contenga più di %(max)d caratteri (ne \"\n\"ha %(length)d).\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"\"\n\"È possibile inviare un file o selezionare la casella \\\"svuota\\\", ma non \"\n\"entrambi.\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\"Carica un'immagine valida. Il file caricato non è un'immagine o è corrotto.\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"Inserisci una URL valida.\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"\"\n\"Scegli un'opzione valida. %(value)s non compare tra quelle disponibili.\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"Inserisci una lista di valori.\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"Ordine\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"Cancella\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"Correggi i dati duplicati di %(field)s.\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"Correggi i dati duplicati di %(field)s, che deve essere unico.\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\"Correggi i dati duplicati di %(field_name)s che deve essere unico/a per \"\n\"%(lookup)s in %(date_field)s.\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"Correggi i dati duplicati qui sotto.\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"\"\n\"La foreign key inline non concorda con la chiave primaria dell'istanza padre.\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"\"\n\"Scegli un'opzione valida. La scelta effettuata non compare tra quelle \"\n\"disponibili.\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"Scegli un'opzione valida. %s non compare tra quelle disponibili.\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"\\\"%s\\\" non è un valore valido per una chiave primaria.\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\" %(datetime)s non può essere interpretato nel fuso orario \"\n\"%(current_timezone)s: potrebbe essere ambiguo o non esistere.\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"Attualmente\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"Modifica\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"Svuota\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"Sconosciuto\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"Sì\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"No\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"sì,no,forse\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"%(size)d byte\"\nmsgstr[1] \"%(size)d byte\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s KB\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s MB\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s GB\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s TB\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s PB\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"p.m.\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"a.m.\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"PM\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"AM\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"mezzanotte\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"mezzogiorno\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"lunedì\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"martedì\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"mercoledì\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"giovedì\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"venerdì\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"sabato\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"domenica\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"lun\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"mar\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"mer\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"gio\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"ven\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"sab\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"dom\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"gennaio\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"febbraio\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"marzo\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"aprile\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"maggio\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"giugno\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"luglio\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"agosto\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"settembre\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"ottobre\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"novembre\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"dicembre\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"gen\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"feb\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"mar\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"apr\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"mag\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"giu\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"lug\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"ago\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"set\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"ott\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"nov\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"dic\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"Gen.\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"Feb.\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"Mar.\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"Apr.\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"Mag.\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"Giu.\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"Lug.\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"Ago.\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"Set.\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"Ott.\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"Nov.\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"Dic.\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"Gennaio\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"Febbraio\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"Marzo\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"Aprile\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"Maggio\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"Giugno\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"Luglio\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"Agosto\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"Settembre\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"Ottobre\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"Novembre\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"Dicembre\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \" %(truncated_text)s...\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"o\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \", \"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"anno\"\nmsgstr[1] \"anni\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"mese\"\nmsgstr[1] \"mesi\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"settimana\"\nmsgstr[1] \"settimane\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"giorno\"\nmsgstr[1] \"giorni\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"ora\"\nmsgstr[1] \"ore\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"minuto\"\nmsgstr[1] \"minuti\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"minuti\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \", %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"Indici di directory non sono consentiti qui.\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\\\"%(path)s\\\" non esiste\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"Indice di %(directory)s\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"Anno non specificato\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"Mese non specificato\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"Giorno non specificato\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"Settimana non specificata\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"Nessun %(verbose_name_plural)s disponibile\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\"%(verbose_name_plural)s futuri/e non disponibili/e poichè %(class_name)s.\"\n\"allow_future è False.\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"Data non valida '%(datestr)s' con il formato '%(format)s'\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"Trovato nessun %(verbose_name)s corrispondente alla query\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"La pagina non è 'ultima', né può essere convertita in un int.\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"Pagina non valida (%(page_number)s): %(message)s\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"Elenco vuoto e '%(class_name)s.allow_empty' è False.\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/it/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/conf/locale/it/formats.py",
    "content": "# -*- encoding: utf-8 -*-\n# This file is distributed under the same license as the Django package.\n#\n\n# The *_FORMAT strings use the Django date format syntax,\n# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\nDATE_FORMAT = 'd F Y' # 25 Ottobre 2006\nTIME_FORMAT = 'H:i:s' # 14:30:59\nDATETIME_FORMAT = 'l d F Y H:i:s' # Mercoledì 25 Ottobre 2006 14:30:59\nYEAR_MONTH_FORMAT = 'F Y' # Ottobre 2006\nMONTH_DAY_FORMAT = 'j/F' # 10/2006\nSHORT_DATE_FORMAT = 'd/m/Y' # 25/12/2009\nSHORT_DATETIME_FORMAT = 'd/m/Y H:i:s' # 25/10/2009 14:30:59\nFIRST_DAY_OF_WEEK = 1 # Lunedì\n\n# The *_INPUT_FORMATS strings use the Python strftime format syntax,\n# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior\nDATE_INPUT_FORMATS = (\n    '%d/%m/%Y', '%Y/%m/%d',  # '25/10/2006', '2008/10/25'\n    '%d-%m-%Y', '%Y-%m-%d',  # '25-10-2006', '2008-10-25'\n    '%d-%m-%y', '%d/%m/%y',  # '25-10-06', '25/10/06'\n)\nDATETIME_INPUT_FORMATS = (\n    '%d/%m/%Y %H:%M:%S',     # '25/10/2006 14:30:59'\n    '%d/%m/%Y %H:%M',        # '25/10/2006 14:30'\n    '%d/%m/%Y',              # '25/10/2006'\n    '%d/%m/%y %H:%M:%S',     # '25/10/06 14:30:59'\n    '%d/%m/%y %H:%M',        # '25/10/06 14:30'\n    '%d/%m/%y',              # '25/10/06'\n    '%Y-%m-%d %H:%M:%S',     # '2006-10-25 14:30:59'\n    '%Y-%m-%d %H:%M',        # '2006-10-25 14:30'\n    '%Y-%m-%d',              # '2006-10-25'\n    '%d-%m-%Y %H:%M:%S',     # '25-10-2006 14:30:59'\n    '%d-%m-%Y %H:%M',        # '25-10-2006 14:30'\n    '%d-%m-%Y',              # '25-10-2006'\n    '%d-%m-%y %H:%M:%S',     # '25-10-06 14:30:59'\n    '%d-%m-%y %H:%M',        # '25-10-06 14:30'\n    '%d-%m-%y',              # '25-10-06'\n)\nDECIMAL_SEPARATOR = ','\nTHOUSAND_SEPARATOR = '.'\nNUMBER_GROUPING = 3\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/ja/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Shinya Okano <tokibito@gmail.com>, 2012.\n# Tetsuya Morimoto <tetsuya.morimoto@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:47+0000\\n\"\n\"Last-Translator: Shinya Okano <tokibito@gmail.com>\\n\"\n\"Language-Team: Japanese (http://www.transifex.com/projects/p/django/language/\"\n\"ja/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ja\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"アラビア語\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"アゼルバイジャン語\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"ブルガリア語\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"ベンガル語\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"ボスニア語\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"カタロニア語\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"チェコ語\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"ウェールズ語\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"デンマーク語\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"ドイツ語\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"ギリシャ語\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"英語(米国)\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"英語(英国)\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"エスペラント語\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"スペイン語\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"アルゼンチンスペイン語\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"メキシコスペイン語\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"ニカラグアスペイン語\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"エストニア語\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"バスク語\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"ペルシア語\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"フィンランド語\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"フランス語\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"フリジア語\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"アイルランド語\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"ガリシア語\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"ヘブライ語\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"ヒンディー語\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"クロアチア語\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"ハンガリー語\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"インドネシア語\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"アイスランド語\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"イタリア語\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"日本語\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"グルジア語\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"カザフ語\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"クメール語\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"カンナダ語\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"韓国語\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"リトアニア語\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"ラトビア語\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"マケドニア語\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"マラヤーラム語\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"モンゴル語\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"ノルウェーのブークモール\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"ネパール語\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"オランダ語\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"ノルウェーのニーノシュク\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"パンジャブ語\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"ポーランド語\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"ポルトガル語\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"ブラジルポルトガル語\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"ルーマニア語\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"ロシア語\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"スロバキア語\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"スロヴェニア語\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"アルバニア語\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"セルビア語\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"セルビア語ラテン文字\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"スウェーデン語\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"スワヒリ語\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"タミル語\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"テルグ語\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"タイ語\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"トルコ語\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"タタール語\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"ウクライナ語\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"ウルドゥー語\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"ベトナム語\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"簡体字中国語\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"繁体字中国語\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"値を正しく入力してください。\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"slug には半角の英数字、アンダースコア、ハイフン以外は使用できません。\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"有効なIPアドレス (IPv4) を入力してください。\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"IPv6の正しいアドレスを入力してください。\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"IPv4またはIPv6の正しいアドレスを入力してください。\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"カンマ区切りの数字だけを入力してください。\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"\"\n\"この値は %(limit_value)s でなければなりません(実際には %(show_value)s でし\"\n\"た) 。\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"この値は %(limit_value)s 以下でなければなりません。\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"この値は %(limit_value)s 以上でなければなりません。\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"%(limit_value)d 字以上で入力してください(実際には %(show_value)d 文字でし\"\n\"た)。\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"%(limit_value)d 字以下で入力してください(実際には %(show_value)d 文字でし\"\n\"た)。\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"\"\n\"%(date_field)s %(lookup)s では %(field_name)s がユニークである必要がありま\"\n\"す。\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"と\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"この %(field_label)s を持った %(model_name)s が既に存在します。\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"%r は有効な選択肢ではありません。\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"このフィールドには NULL を指定できません。\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"このフィールドは空ではいけません。\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"タイプが %(field_type)s のフィールド\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"整数\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"'%s' は整数値にしなければなりません。\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"'%s' は真偽値にしなければなりません。\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"ブール値 (真: True または偽: False)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"文字列 ( %(max_length)s 字まで )\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"カンマ区切りの整数\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"'%s' は無効な日付形式です。YYYY-MM-DD形式にしなければなりません。\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"'%s' は有効な日付形式(YYYY-MM-DD)ですが、日付が不正です。\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"日付\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\"'%s' は無効な形式の値です。 YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ] 形式でなければ\"\n\"なりません。\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\"'%s' は正しい形式(YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ])の値ですが、無効な日時で\"\n\"す。\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"日時\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"'%s' は10進浮動小数値にしなければなりません。\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"10 進数 (小数可)\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"メールアドレス\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"ファイルの場所\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"'%s' は小数値にしなければなりません。\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"浮動小数点\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"大きな(8バイト)整数\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"IPv4アドレス\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"IP アドレス\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"'%s' はNone、TrueまたはFalseの値でなければなりません。\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"ブール値 (真: True 、偽: False または None)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"正の整数\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"小さな正の整数\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"スラグ(%(max_length)s文字以内)\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"小さな整数\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"テキスト\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"\"\n\"'%s' は無効な形式の値です。 HH:MM[:ss[.uuuuuu]] 形式でなければなりません。\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"'%s' は正しい形式(HH:MM[:ss[.uuuuuu]])ですが、無効な時刻です。\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"時刻\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"ファイル\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"画像\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"主キーが %(pk)r である %(model)s モデルは存在しません。\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"外部キー(型は関連フィールドによって決まります)\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"1対1の関連\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"多対多の関連\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"\"\n\"複数選択するときには Control キーを押したまま選択してください。Mac は \"\n\"Command キーを使ってください\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"このフィールドは必須です。\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"整数を入力してください。\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"整数を入力してください。\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"整数部と少数部を併せて %s 桁までで入力して下さい。\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"少数部は %s 桁までで入力して下さい。\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"整数部は %s 桁までで入力して下さい。\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"日付を正しく入力してください。\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"時間を正しく入力してください。\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"日付/時間を正しく入力してください。\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"\"\n\"ファイルが取得できませんでした。formのencoding typeを確認してください。\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"ファイルが送信されていません。\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"入力されたファイルは空です。\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\"ファイル名は %(max)d 字以上で入力してください( %(length)d 文字入力されまし\"\n\"た)。\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"\"\n\"ファイルを投稿するか、クリアチェックボックスをチェックするかどちらかを選択し\"\n\"てください。両方とも行ってはいけません。\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\"画像をアップロードしてください。アップロードしたファイルは画像でないか、また\"\n\"は壊れています。\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"URLを正しく入力してください。\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"正しく選択してください。 %(value)s は候補にありません。\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"リストを入力してください。\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"並び変え\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"削除\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"%(field)s の重複したデータを修正してください。\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"\"\n\"%(field)s の重複したデータを修正してください。このフィールドはユニークである\"\n\"必要があります。\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\"%(field_name)s の重複したデータを修正してください。%(date_field)s %(lookup)s \"\n\"では %(field_name)s がユニークである必要があります。\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"下記の重複したデータを修正してください。\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"インライン外部キーが親インスタンスの主キーと一致しません。\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"正しく選択してください。選択したものは候補にありません。\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"正しく選択してください。 %s は候補にありません。\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"\\\"%s\\\" はプライマリキーとして無効な値です。\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\"%(datetime)s は%(current_timezone)sのタイムゾーンでは解釈できませんでした。そ\"\n\"れは曖昧であるか、存在しない可能性があります。\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"現在\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"変更\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"クリア\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"不明\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"はい\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"いいえ\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"はい,いいえ,たぶん\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"%(size)d バイト\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s KB\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s MB\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s GB\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s TB\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s PB\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"p.m.\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"a.m.\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"PM\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"AM\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"0時\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"12時\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"月曜日\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"火曜日\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"水曜日\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"木曜日\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"金曜日\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"土曜日\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"日曜日\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"月\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"火\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"水\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"木\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"金\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"土\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"日\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"1月\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"2月\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"3月\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"4月\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"5月\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"6月\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"7月\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"8月\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"9月\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"10月\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"11月\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"12月\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"1月\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"2月\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"3月\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"4月\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"5月\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"6月\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"7月\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"8月\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"9月\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"10月\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"11月\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"12月\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"1月\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"2月\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"3月\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"4月\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"5月\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"6月\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"7月\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"8月\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"9月\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"10月\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"11月\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"12月\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"1月\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"2月\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"3月\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"4月\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"5月\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"6月\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"7月\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"8月\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"9月\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"10月\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"11月\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"12月\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"%(truncated_text)s...\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"または\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \", \"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"年\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"ヶ月\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"週間\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"日\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"時間\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"分\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"分\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \", %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"Directory indexes are not allowed here.\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\\\"%(path)s\\\" does not exist\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"Index of %(directory)s\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"年が未指定です\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"月が未指定です\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"日が未指定です\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"週が未指定です\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"%(verbose_name_plural)s は利用できません\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\"%(class_name)s.allow_futureがFalseであるため、未来の%(verbose_name_plural)sは\"\n\"利用できません。\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"指定された形式 '%(format)s' では '%(datestr)s' は無効な日付文字列です\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"クエリーに一致する %(verbose_name)s は見つかりませんでした\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"ページは数値に変換できる値、または 'last' ではありません。\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"空の一覧かつ '%(class_name)s.allow_empty' がFalseです。\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/ja/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/conf/locale/ja/formats.py",
    "content": "# -*- encoding: utf-8 -*-\n# This file is distributed under the same license as the Django package.\n#\nfrom __future__ import unicode_literals\n\n# The *_FORMAT strings use the Django date format syntax,\n# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\nDATE_FORMAT = 'Y年n月j日'\nTIME_FORMAT = 'G:i:s'\nDATETIME_FORMAT = 'Y年n月j日G:i:s'\nYEAR_MONTH_FORMAT = 'Y年n月'\nMONTH_DAY_FORMAT = 'n月j日'\nSHORT_DATE_FORMAT = 'Y/m/d'\nSHORT_DATETIME_FORMAT = 'Y/m/d G:i:s'\n# FIRST_DAY_OF_WEEK = \n\n# The *_INPUT_FORMATS strings use the Python strftime format syntax,\n# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior\n# DATE_INPUT_FORMATS = \n# TIME_INPUT_FORMATS = \n# DATETIME_INPUT_FORMATS = \nDECIMAL_SEPARATOR = '.'\nTHOUSAND_SEPARATOR = ','\n# NUMBER_GROUPING = \n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/ka/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# André Bouatchidzé <a@anbz.net>, 2013.\n# avsd05 <avsd05@gmail.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-03-02 08:50+0000\\n\"\n\"Last-Translator: André Bouatchidzé <a@anbz.net>\\n\"\n\"Language-Team: Georgian (http://www.transifex.com/projects/p/django/language/\"\n\"ka/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ka\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"აფრიკაანსი\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"არაბული\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"აზერბაიჯანული\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"ბულგარული\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"ბელარუსული\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"ბენგალიური\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"ბრეტონული\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"ბოსნიური\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"კატალანური\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"ჩეხური\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"უელსური\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"დანიური\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"გერმანული\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"ბერძნული\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"ინგლისური\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"ბრიტანეთის ინგლისური\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"ესპერანტო\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"ესპანური\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"არგენტინის ესპანური\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"მექსიკური ესპანური\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"ნიკარაგუული ესპანური\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"ვენესუელის ესპანური\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"ესტონური\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"ბასკური\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"სპარსული\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"ფინური\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"ფრანგული\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"ფრისიული\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"ირლანდიური\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"გალიციური\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"ებრაული\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"ჰინდი\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"ხორვატიული\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"უნგრული\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"ინტერლინგუა\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"ინდონეზიური\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"ისლანდიური\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"იტალიური\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"იაპონური\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"ქართული\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"ყაზახური\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"ხმერული\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"კანნადა\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"კორეული\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"ლუქსემბურგული\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"ლიტვური\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"ლატვიური\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"მაკედონიური\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"მალაიზიური\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"მონღოლური\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"ნორვეგიული-ბოკმალი\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"ნეპალური\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"ჰოლანდიური\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"ნორვეგიული-ნინორსკი\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"პუნჯაბი\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"პოლონური\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"პორტუგალიური\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"ბრაზილიური პორტუგალიური\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"რუმინული\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"რუსული\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"სლოვაკური\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"სლოვენიური\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"ალბანური\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"სერბული\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"სერბული (ლათინური)\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"შვედური\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"სუაჰილი\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"თამილური\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"ტელუგუ\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"ტაი\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"თურქული\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"თათრული\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"უდმურტული\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"უკრაინული\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"ურდუ\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"ვიეტნამური\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"გამარტივებული ჩინური\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"ტრადიციული ჩინური\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"შეიყვანეთ სწორი მნიშვნელობა.\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"შეიყვანეთ მართებული ელფოსტის მისამართი.\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"\"\n\"შეიყვანეთ სწორი 'slug'-მნიშვნელობა, რომელიც შეიცავს მხოლოდ ასოებს, ციფრებს, \"\n\"ხაზგასმის ნიშნებს და დეფისებს.\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"შეიყვანეთ სწორი IPv4 მისამართი.\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"შეიყვანეთ მართებული IPv6 მისამართი.\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"შეიყვანეთ მართებული IPv4 ან IPv6 მისამართი.\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"შეიყვანეთ მხოლოდ მძიმეებით გამოყოფილი ციფრები.\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"მნიშვნელობა უნდა იყოს %(limit_value)s (იგი არის %(show_value)s).\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"მნიშვნელობა უნდა იყოს %(limit_value)s-ზე ნაკლები ან ტოლი.\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"მნიშვნელობა უნდა იყოს %(limit_value)s-ზე მეტი ან ტოლი.\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"მნიშვნელობა უნდა შეიცავდეს სულ მცირე %(limit_value)d სიმბოლოს (იგი შეიცავს \"\n\"%(show_value)d-ს).\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"მნიშვნელობა უნდა შეიცავდეს არაუმეტეს %(limit_value)d სიმბოლოს (იგი შეიცავს \"\n\"%(show_value)d-ს).\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"%(field_name)s უნიკალური უნდა იყოს %(date_field)s-თვის %(lookup)s-ზე.\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"და\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"%(model_name)s მოცემული %(field_label)s-ით უკვე არსებობს.\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"მნიშვნელობა %r არ არის დასაშვები.\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"ეს ველი არ შეიძლება იყოს null.\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"ეს ველი არ შეიძლება იყოს ცარიელი.\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"ველის ტიპი: %(field_type)s\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"მთელი\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"მნიშვნელობა '%s' უნდა იყოს მთელი რიცხვი.\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"მნიშვნელობა '%s' უნდა იყოს True ან False.\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"ლოგიკური (True ან False)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"სტრიქონი (%(max_length)s სიმბოლომდე)\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"მძიმით გამოყოფილი მთელი რიცხვები\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"თარიღი (დროის გარეშე)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"თარიღი (დროსთან ერთად)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"მნიშვნელობა '%s' უნდა იყოს ათობითი რიცხვი.\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"ათობითი რიცხვი\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"ელ. ფოსტის მისამართი\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"გზა ფაილისაკენ\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"მნიშვნელობა '%s' უნდა იყოს ათწილადი.\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"რიცხვი მცოცავი წერტილით\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"დიდი მთელი (8-ბაიტიანი)\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"IPv4 მისამართი\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"IP-მისამართი\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"მნიშვნელობა '%s' უნდა იყოს None, True ან False.\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"ლოგიკური (True, False ან None)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"დადებითი მთელი რიცხვი\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"დადებითი პატარა მთელი რიცხვი\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"სლაგი (%(max_length)s-მდე)\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"პატარა მთელი რიცხვი\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"ტექსტი\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"დრო\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"ფაილი\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"გამოსახულება\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"მოდელი %(model)s პირველადი გასაღებით %(pk)r არ არსებობს.\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"გარე გასაღები (ტიპი განისაზღვრება დაკავშირებული ველის ტიპით)\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"კავშირი ერთი-ერთტან\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"კავშირი მრავალი-მრავალთან\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"\"\n\"დააჭირეთ \\\"Control\\\", ან \\\"Command\\\" Mac-ზე, ერთზე მეტი მნიშვნელობის \"\n\"ასარჩევად.\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"ეს ველი აუცილებელია.\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"შეიყვანეთ მთელი რიცხვი\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"შეიყვანეთ რიცხვი.\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"დარწმუნდით, რომ მნიშვნელობა %s თანრიგს არ აღემატება.\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"დარწმუნდით, რომ წილადი ნაწილი %s თანრიგს არ აღემატება.\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"დარწმუნდით, რომ მთელი ნაწილი %s თანრიგს არ აღემატება.\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"შეიყვანეთ სწორი თარიღი.\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"შეიყვანეთ სწორი დრო.\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"შეიყვანეთ სწორი თარიღი და დრო.\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"\"\n\"ფაილი არ იყო გამოგზავნილი. შეამოწმეთ კოდირების ტიპი მოცემული ფორმისათვის.\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"ფაილი არ იყო გამოგზავნილი.\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"გამოგზავნილი ფაილი ცარიელია.\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\"ფაილის სახელი უნდა შედგებოდეს არაუმეტეს %(max)d სიმბოლოსაგან (იგი შეიცავს \"\n\"%(length)d-ს).\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"ან გამოგზავნეთ ფაილი, ან მონიშნეთ \\\"წაშლის\\\" დროშა.\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\"ატვირთეთ დასაშვები გამოსახულება. თქვენს მიერ გამოგზავნილი ფაილი ან არ არის \"\n\"გამოსახულება, ან დაზიანებულია.\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"შეიყვანეთ სწორი URL.\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"აირჩიეთ დასაშვები მნიშვნელობა. %(value)s დასაშვები არ არის.\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"შეიყვანეთ მნიშვნელობების სია.\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"დალაგება\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"წავშალოთ\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"გთხოვთ, შეასწოროთ დუბლირებული მონაცემები %(field)s-თვის.\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"\"\n\"გთხოვთ, შეასწოროთ დუბლირებული მნიშვნელობა %(field)s ველისთვის, რომელიც უნდა \"\n\"იყოს უნიკალური.\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\"გთხოვთ, შეასწოროთ დუბლირებული მნიშვნელობა %(field_name)s ველისთვის, რომელიც \"\n\"უნდა იყოს უნიკალური %(lookup)s-ზე, %(date_field)s-თვის.\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"გთხოვთ, შეასწოროთ დუბლირებული მნიშვნელობები.\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"გარე გასაღების მნიშვნელობა მშობლის პირველად გასაღებს არ ემთხვევა.\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"აირჩიეთ დასაშვები მნიშვნელობა. ეს არჩევანი დასაშვები არ არის.\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"აირჩიეთ დასაშვები მნიშვნელობა. %s დასაშვები არ არის.\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"\\\"%s\\\" არ არის დასაშვები მნიშვნელობა პირველადი გასაღებისათვის.\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"ამჟამად\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"შეცვლა\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"წაშლა\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"გაურკვეველი\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"კი\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"არა\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"კი,არა,შესაძლოა\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"%(size)d ბაიტი\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s კბ\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s მბ\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s გბ\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s ტბ\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s პბ\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"p.m.\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"a.m.\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"PM\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"AM\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"შუაღამე\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"შუადღე\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"ორშაბათი\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"სამშაბათი\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"ოთხშაბათი\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"ხუთშაბათი\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"პარასკევი\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"შაბათი\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"კვირა\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"ორშ\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"სამ\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"ოთხ\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"ხუთ\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"პარ\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"შაბ\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"კვრ\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"იანვარი\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"თებერვალი\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"მარტი\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"აპრილი\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"მაისი\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"ივნისი\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"ივლისი\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"აგვისტო\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"სექტემბერი\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"ოქტომბერი\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"ნოემბერი\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"დეკემბერი\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"იან\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"თებ\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"მარ\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"აპრ\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"მაი\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"ივნ\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"ივლ\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"აგვ\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"სექ\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"ოქტ\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"ნოე\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"დეკ\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"იან.\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"თებ.\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"მარ.\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"აპრ.\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"მაი\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"ივნ.\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"ივლ.\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"აგვ.\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"სექტ.\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"ოქტ.\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"ნოემ.\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"დეკ.\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"იანვარი\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"თებერვალი\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"მარტი\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"აპრილი\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"მაისი\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"ივნისი\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"ივლისი\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"აგვისტო\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"სექტემბერი\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"ოქტომბერი\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"ნოემბერი\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"დეკემბერი\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"%(truncated_text)s...\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"ან\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \", \"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"წელი\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"თვე\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"კვირა\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"დღე\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"საათი\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"წუთი\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"წუთი\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \", %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\\\"%(path)s\\\" არ არსებობს\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"არ არის მითითებული წელი\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"არ არის მითითებული თვე\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"არ არის მითითებული დღე\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"არ არის მითითებული კვირა\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"%(verbose_name_plural)s არ არსებობს\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\"მომავალი %(verbose_name_plural)s არ არსებობს იმიტომ, რომ %(class_name)s.\"\n\"allow_future არის False.\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"\"\n\"არასწორი თარიღის სტრიქონი '%(datestr)s' გამომდინარე ფორმატიდან '%(format)s'\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"არ მოიძებნა არცერთი მოთხოვნის თანმხვედრი %(verbose_name)s\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"ცარიელი სია და '%(class_name)s.allow_empty' არის False.\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/ka/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/conf/locale/ka/formats.py",
    "content": "# -*- encoding: utf-8 -*-\n# This file is distributed under the same license as the Django package.\n#\n\n# The *_FORMAT strings use the Django date format syntax,\n# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\nDATE_FORMAT = 'l, j F, Y'\nTIME_FORMAT = 'h:i:s a'\nDATETIME_FORMAT = 'j F, Y h:i:s a'\nYEAR_MONTH_FORMAT = 'F, Y'\nMONTH_DAY_FORMAT = 'j F'\nSHORT_DATE_FORMAT = 'j.M.Y'\nSHORT_DATETIME_FORMAT = 'j.M.Y H:i:s'\nFIRST_DAY_OF_WEEK = 1 # (Monday)\n\n# The *_INPUT_FORMATS strings use the Python strftime format syntax,\n# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior\n# Kept ISO formats as they are in first position\nDATE_INPUT_FORMATS = (\n    '%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y',     # '2006-10-25', '10/25/2006', '10/25/06'\n    # '%d %b %Y', '%d %b, %Y', '%d %b. %Y',   # '25 Oct 2006', '25 Oct, 2006', '25 Oct. 2006'\n    # '%d %B %Y', '%d %B, %Y',                # '25 October 2006', '25 October, 2006'\n    # '%d.%m.%Y', '%d.%m.%y',                 # '25.10.2006', '25.10.06'\n)\nDATETIME_INPUT_FORMATS = (\n    '%Y-%m-%d %H:%M:%S',     # '2006-10-25 14:30:59'\n    '%Y-%m-%d %H:%M',        # '2006-10-25 14:30'\n    '%Y-%m-%d',              # '2006-10-25'\n    '%d.%m.%Y %H:%M:%S',     # '25.10.2006 14:30:59'\n    '%d.%m.%Y %H:%M',        # '25.10.2006 14:30'\n    '%d.%m.%Y',              # '25.10.2006'\n    '%d.%m.%y %H:%M:%S',     # '25.10.06 14:30:59'\n    '%d.%m.%y %H:%M',        # '25.10.06 14:30'\n    '%d.%m.%y',              # '25.10.06'\n    '%m/%d/%Y %H:%M:%S',     # '10/25/2006 14:30:59'\n    '%m/%d/%Y %H:%M',        # '10/25/2006 14:30'\n    '%m/%d/%Y',              # '10/25/2006'\n    '%m/%d/%y %H:%M:%S',     # '10/25/06 14:30:59'\n    '%m/%d/%y %H:%M',        # '10/25/06 14:30'\n    '%m/%d/%y',              # '10/25/06'\n)\nDECIMAL_SEPARATOR = '.'\nTHOUSAND_SEPARATOR = \" \"\nNUMBER_GROUPING = 3\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/kk/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <germanilyin@gmail.com>, 2011.\n# Nurlan Rakhimzhanov <nurlan.rakhimzhanov@gmail.com>, 2011.\n#   <zharzhan@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:47+0000\\n\"\n\"Last-Translator: yun_man_ger <germanilyin@gmail.com>\\n\"\n\"Language-Team: Kazakh (http://www.transifex.com/projects/p/django/language/\"\n\"kk/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: kk\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"Араб\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"Әзірбайжан\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"Болгар\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"Бенгал\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"Босния\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"Каталан\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"Чех\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"Валлий\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"Дания\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"Неміс\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"Грек\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"Ағылшын\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"Британдық ағылшын\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"Испан\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"Аргентиналық испан\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"Мексикалық испан\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"Никарагуа испан\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"Эстон\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"Баск\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"Парсы\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"Фин\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"Француз\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"Фриз\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"Ирландия\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"Галиц\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"Иврит\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"Хинди\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"Кроат\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"Венгрия\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"Индонезия\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"Исладия\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"Итальян\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"Жапон\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"Грузин\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"Кхмер\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"Канада\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"Корей\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"Литва\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"Латвия\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"Македон\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"Малаялам\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"Монғол\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"Норвегиялық букмол\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"Дат\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"Норвегиялық нюнор\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"Пенджаб\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"Поляк\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"Португал\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"Бразилиялық португал\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"Роман\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"Орыс\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"Словак\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"Славян\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"Албан\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"Серб\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"Сербиялық латын\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"Швед\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"Тамиль\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"Телугу\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"Тай\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"Түрік\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"Украин\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"Урду\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"Вьетнам\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"Жеңілдетілген қытай\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"Дәстүрлі қытай\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"Тура мәнін енгізіңіз.\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"\"\n\"Тек әріптерден, сандардан, астыңғы сызықтардан немесе дефистерден құралатын \"\n\"тура 'slug'-ті енгізіңіз.\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"Тура IPv4 адресті енгізіңіз.\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"Тек үтірлермен бөлінген цифрлерді енгізіңіз.\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"\"\n\"Бұл мәннің %(limit_value)s екендігін тексеріңіз (қазір ол %(show_value)s).\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"\"\n\"Бұл мәннің мынадан %(limit_value)s кіші немесе тең екендігін тексеріңіз.\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"\"\n\"Бұл мәннің мынадан %(limit_value)s үлкен немесе тең екендігін тексеріңіз.\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Бұл мәннің кем дегенде %(limit_value)d символдан тұратынын тексеріңіз (кәзір \"\n\"%(show_value)d).\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Бұл мәннің ең көп дегенде %(limit_value)d символдан тұратынын тексеріңіз \"\n\"(кәзір %(show_value)d).\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"\"\n\"%(field_name)s мәні %(date_field)s жолақтың ішінде %(lookup)s үшін бірегей \"\n\"болу керек.\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"және\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"%(model_name)s %(field_label)s жолақпен бұрыннан бар.\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"%r мәні - дұрыс таңдау емес.\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"Бұл жолақ null болмау керек.\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"Бұл жолақ бос болмау керек.\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Жолақтын түрі: %(field_type)s\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"Бүтін сан\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Boolean (True немесе False)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"Жол (%(max_length)s символға дейін)\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"Үтірмен бөлінген бүтін сандар\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"Дата (уақытсыз)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"Дата (уақытпен)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"Ондық сан\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"Email адрес\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"Файл жолы\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"Реал сан\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"Ұзын (8 байт) бүтін сан\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"IP мекенжайы\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"Булеан (True, False немесе None)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"Мәтін\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"Уақыт\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"%(pk)r pk мен %(model)s модель жоқ.\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"Foreign Key (тип related field арқылы анықталады)\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"One-to-one қатынас\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"Many-to-many қатынас\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"\"\n\"Бірден көп элемент таңдау үшін \\\"Control\\\" немесе МасBook-те \\\"Command\\\" \"\n\"батырмасын басып тұрыңыз.\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"Бұл өрісті толтыру міндетті.\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"Толық санды енгізіңіз.\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"Сан енгізіңіз.\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"Санда ең көп %s цифр болу керек.\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"Санда үтірден кейін ең көп %s болу керек.\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"Санда үтірге дейін ең көп %s болу керек.\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"Дұрыс күнді енгізіңіз.\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"Дұрыс уақытты енгізіңіз.\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"Дұрыс күнді/уақытты енгізіңіз.\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"Ешқандай файл жіберілмеді. Форманың кодтау түрін тексеріңіз.\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"Ешқандай файл жіберілмеді.\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"Бос файл жіберілді.\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\"Файл атауыныEnsure this filename has at most %(max)d characters (it has \"\n\"%(length)d).\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"Файлды жіберіңіз немесе тазалауды белгіленіз, екеуін бірге емес.\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\"Дұрыс сүретті жүктеңіз. Сіз жүктеген файл - сүрет емес немесе бұзылған сүрет.\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"Тура URL-ді енгізіңіз.\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"Дұрыс тандау жасаңыз. %(value)s дұрыс тандау емес.\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"Мәндер тізімін енгізіңіз.\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"Сұрыптау\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"Жою\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"%(field)s жолақтағы қайталанған мәнді түзетіңіз.\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"%(field)s жолақтағы мәнді түзетіңіз, ол бірегей болу керек.\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\"%(field_name)s жолақтағы мәнді түзетіңіз. Ол %(date_field)s жолақтың ішінде \"\n\"%(lookup)s үшін бірегей болу керек.\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"Қайталанатын мәндерді түзетіңіз.\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"\"\n\"Кірістірілген сыртқы кілт аталық дананың бастапқы кілтімен сәйкес келмейді.\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"Дұрыс нұсқаны таңдаңыз. Бұл нұсқа дұрыс таңдаулардың арасында жоқ.\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"Дұрыс нұсқаны таңдаңыз. %s дұрыс таңдаулардың арасында жоқ.\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"\\\"%s\\\" бастапқы кілт үшін дұрыс мән емес.\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"Кәзіргі\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"Түзету\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"Тазалау\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"Белгісіз\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"Иә\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"Жоқ\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"иә,жоқ,мүмкін\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"%(size)d байт\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s КБ\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s МБ\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s ГБ\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s ТБ\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s ПБ\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"Т.Қ.\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"Т.Ж.\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"ТҚ\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"ТЖ\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"түнжарым\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"түсқайта\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"Дүйсенбі\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"Сейсенбі\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"Сәрсенбі\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"Бейсенбі\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"Жума\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"Сенбі\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"Жексенбі\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"Дб\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"Сб\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"Ср\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"Бс\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"Жм\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"Сн\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"Жк\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"Қаңтар\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"Ақпан\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"Наурыз\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"Сәуір\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"Мамыр\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"Маусым\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"Шілде\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"Тамыз\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"Қыркүйек\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"Қазан\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"Қараша\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"Желтоқсан\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"қан\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"ақп\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"нау\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"сәу\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"мам\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"мау\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"шіл\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"там\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"қыр\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"қаз\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"қар\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"жел\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"Ақп.\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"Қаң.\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"Наурыз\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"Сәуір\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"Мамыр\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"Маусым\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"Шілде\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"Там.\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"Қыр.\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"Қаз.\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"Қар.\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"Жел.\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"Қаңтар\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"Ақпан\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"Наурыз\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"Сәуір\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"Мамыр\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"Маусым\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"Шілде\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"Тамыз\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"Қыркүйек\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"Қазан\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"Қараша\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"Желтоқсан\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"немесе\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \", \"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"жыл\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"ай\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"апта\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"күн\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"сағат\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"минут\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"минут\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \", %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"Жыл таңдалмаған\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"Ай таңдалмаған\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"Күн таңдалмаған\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"Апта таңдалмаған\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"%(verbose_name_plural)s қол жеткізгісіз\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\"Болашақ %(verbose_name_plural)s қол жеткізгісіз, себебі %(class_name)s.\"\n\"allow_future False.\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"'%(format)s' пішімі үшін дұрыс емес '%(datestr)s' уақыт жолы\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"%(verbose_name)s табылған жоқ\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"Бет соңғы емес және оны санға түрлендіруге болмайды.\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"Бос тізім және '%(class_name)s.allow_empty' - False.\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/km/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:47+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: English <en@li.org>\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: km\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"ភាសាអារ៉ាប់\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"ភាសាបេឡារុស្ស\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"ភាសាឆេក\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"ភាសាអ៊ុយក្រែន\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"ភាសាដាណឺម៉ាក\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"ភាសាអាល្លឺម៉ង់\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"ភាសាហ្កែលិគ\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"ភាសាអង់គ្លេស\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"ភាសាអេស្ប៉ាញ\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"ភាសាហ្វាំងឡង់\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"ភាសាបារាំង\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"ភាសាហ្កែលិគ\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"ភាសាហេប្រិ\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"ភាសាហុងគ្រី\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"ភាសាអ៉ីស្លង់\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"ភាសាអ៊ីតាលី\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"ភាសាជប៉ុន\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"ភាសាហ្វាំងឡង់\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"ភាសារូម៉ានី\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"ភាសាรัរូស្ស៉ី\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"ភាសាស្លូវ៉ាគី\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"ភាសាស្លូវ៉ានី\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"ភាសាស៊ុយអែដ\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"ភាសាតាមីល\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"ភាសាទួរគី\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"ភាសាអ៊ុយក្រែន\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"ភាសាចិនសាមញ្ញ\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"ភាសាចិនបុរាណ\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"បំពេញតែលេខហើយផ្តាច់ចេញពីគ្នាដោយសញ្ញាក្បៀស។\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"និង\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"ចាំបាច់បំពេញទិន្នន័យកន្លែងនេះ។\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"ចំនួនពិត(Integer)\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Boolean (អាច​ជា True រឺ False)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"ចំនួនពិត(Integer) ដែលផ្តាច់ចេញពីគ្នាដោយ​ក្បៀស\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"កាល​បរិច្ឆេទ (Date) (មិនមានសរសេរម៉ោង)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"កាល​បរិច្ឆេទ (Date) (មានសរសេរម៉ោង)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"ចំនួនទសភាគ (Decimal)\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"ផ្លូវទៅកាន់ឯកសារ\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"លេខ IP\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"Boolean (អាចជា True​ រឺ False រឺ None)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"អត្ថបទ\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"ពេលវេលា\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"អាស័យដ្ឋានគេហទំព័រ(URL)\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"\"\n\"សូមចុចប៉ូតុន \\\"Control\\\", ឬ \\\"Command\\\" ចំពោះកុំព្យូទ័រ Mac, ដើម្បីជ្រើសរើសច្រើនជាងមួយ។\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"ចាំបាច់បំពេញទិន្នន័យកន្លែងនេះ។\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"បំពេញចំនួនទាំងអស់។\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"មិនមានឯកសារត្រូវបានជ្រើសរើស។ សូមពិនិត្យប្រភេទឯកសារម្តងទៀត។\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"ពុំមានឯកសារ។​\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"រូបភាពដែលទាញយកមិនត្រឹមត្រូវ ប្រហែលជាមិនមែនជារូបភាព ឬក៏ជា រូបភាពខូច។\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"លប់\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"ផ្លាស់ប្តូរ\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"មិន​ដឹង\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"យល់ព្រម\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"មិនយល់ព្រម\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"យល់ព្រម មិនយល់ព្រម​ ប្រហែល\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"ច័ន្ទ\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"អង្គារ\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"ពុធ\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"ព្រហស្បតិ៍\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"សុក្រ\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"សៅរ៍\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"អាទិត្យ\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"មករា\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"កុម្ភៈ\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"មិនា\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"មេសា\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"ឧសភា\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"មិថុនា\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"កក្កដា\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"សីហា\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"កញ្ញា\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"តុលា\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"វិច្ឆិកា\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"ធ្នូ\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"មករា\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"កុម្ភះ\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"មិនា\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"មេសា\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"ឧសភា\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"មិថុនា\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"កក្កដា\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"សីហា\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"កញ្ញា\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"តុលា\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"វិច្ឆិកា\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"ធ្នូ\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"មិនា\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"មេសា\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"ឧសភា\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"មិថុនា\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"កក្កដា\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"មករា\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"កុម្ភៈ\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"មិនា\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"មេសា\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"ឧសភា\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"មិថុនា\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"កក្កដា\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"សីហា\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"កញ្ញា\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"តុលា\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"វិច្ឆិកា\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"ធ្នូ\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \"\"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"ឆ្នាំ\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"ខែ\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"សប្តាហ៍\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"ថ្ងៃ\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"ម៉ោង\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"នាទី\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"នាទី\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \"\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/km/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/conf/locale/km/formats.py",
    "content": "# -*- encoding: utf-8 -*-\n# This file is distributed under the same license as the Django package.\n#\nfrom __future__ import unicode_literals\n\n# The *_FORMAT strings use the Django date format syntax,\n# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\nDATE_FORMAT = 'j ខែ F ឆ្នាំ Y'\nTIME_FORMAT = 'G:i:s'\nDATETIME_FORMAT = 'j ខែ F ឆ្នាំ Y, G:i:s'\n# YEAR_MONTH_FORMAT = \nMONTH_DAY_FORMAT = 'j F'\nSHORT_DATE_FORMAT = 'j M Y'\nSHORT_DATETIME_FORMAT = 'j M Y, G:i:s'\n# FIRST_DAY_OF_WEEK = \n\n# The *_INPUT_FORMATS strings use the Python strftime format syntax,\n# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior\n# DATE_INPUT_FORMATS = \n# TIME_INPUT_FORMATS = \n# DATETIME_INPUT_FORMATS = \nDECIMAL_SEPARATOR = ','\nTHOUSAND_SEPARATOR = '.'\n# NUMBER_GROUPING = \n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/kn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <karthikbgl@gmail.com>, 2011, 2012.\n# Ramakrishna Yekulla <ramkrsna@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:47+0000\\n\"\n\"Last-Translator: karthikbgl <karthikbgl@gmail.com>\\n\"\n\"Language-Team: Kannada (http://www.transifex.com/projects/p/django/language/\"\n\"kn/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: kn\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"ಅರೇಬಿಕ್\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"ಆಜೆರ್ಬೈಜನಿ\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"ಬಲ್ಗೇರಿಯನ್\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"ಬೆಂಗಾಲಿ\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"ಬೋಸ್ನಿಯನ್\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"ಕೆಟಲಾನ್\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"ಝೆಕ್\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"ವೆಲ್ಷ್\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"ಡ್ಯಾನಿಷ್\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"ಜರ್ಮನ್\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"ಗ್ರೀಕ್\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"ಇಂಗ್ಲಿಷ್\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"ಬ್ರಿಟೀಶ್ ಇಂಗ್ಲಿಷ್\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"ಸ್ಪ್ಯಾನಿಷ್\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"ಅರ್ಜೆಂಟಿನಿಯನ್ ಸ್ಪಾನಿಷ್\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"ಮೆಕ್ಸಿಕನ್ ಸ್ಪಾನಿಷ್\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"nicarguan ಸ್ಪಾನಿಷ್\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"ಎಷ್ಟೋನಿಯನ್\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"ಬಾಸ್ಕ್‍\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"ಪರ್ಶಿಯನ್\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"ಫಿನ್ನಿಶ್\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"ಫ್ರೆಂಚ್\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"ಫ್ರಿಸಿಯನ್\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"ಐರಿಶ್\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"ಗೆಲಿಶಿಯನ್\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"ಹೀಬ್ರೂ\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"ಹಿಂದಿ\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"ಕ್ರೊಯೇಶಿಯನ್\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"ಹಂಗೇರಿಯನ್\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"ಇಂಡೋನಿಶಿಯನ್\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"ಐಸ್‌ಲ್ಯಾಂಡಿಕ್\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"ಇಟಾಲಿಯನ್\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"ಜಾಪನೀಸ್\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"ಜಾರ್ಜೆಯನ್ \"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"ಖಮೇರ್\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"ಕನ್ನಡ\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"ಕೊರಿಯನ್\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"ಲಿತುವಾನಿಯನ್ \"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"ಲಾಟ್ವಿಯನ್\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"ಮೆಸಡೊನಿಯನ್\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"ಮಲಯಾಳಂ\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"ಮಂಗೊಲಿಯನ್\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"ನಾರ್ವೇಜಿಯನ್ ಬೋಕ್ಮಲ್\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"ಡಚ್\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"ನಾರ್ವೇಜಿಯನ್ ನಿನೋರ್ಕ್\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"ಪಂಜಾಬಿ\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"ಪೋಲಿಷ್\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"ಪೋರ್ಚುಗೀಸ್\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"ಬ್ರಜೀಲಿಯನ್ ಪೋರ್ಚುಗೀಸ್\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"ರೋಮೇನಿಯನ್\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"ರಶಿಯನ್\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"ಸ್ಲೋವಾಕ್\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"ಸ್ಲೋವೇನಿಯನ್\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"ಅಲ್ಬೆನಿಯನ್ \"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"ಸರ್ಬಿಯನ್\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"ಸರ್ಬಿಯನ್ ಲ್ಯಾಟಿನ್\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"ಸ್ವೀಡಿಷ್\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"ತಮಿಳು\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"ತೆಲುಗು\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"ಥಾಯ್\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"ಟರ್ಕಿಶ್\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"ಉಕ್ರೇನಿಯನ್\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"ಉರ್ದು\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"ವಿಯೆತ್ನಾಮೀಸ್\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"ಸರಳೀಕೃತ ಚೈನೀಸ್\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"ಸಂಪ್ರದಾಯಿಕ ಚೈನೀಸ್ \"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"ಸಿಂಧುವಾದ ಮೌಲ್ಯವನ್ನು ನಮೂದಿಸಿ.\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"\"\n\"ಅಕ್ಷರಗಳು, ಅಂಕೆಗಳು, ಅಡಿಗೆರೆಗಳು (ಅಂಡರ್ಸ್ಕೋರ್) ಹಾಗು ಅಡ್ಡಗೆರೆಗಳನ್ನು ಹೊಂದಿರುವ ಒಂದು \"\n\"ಸರಿಯಾದ 'slug' ಅನ್ನು ನಮೂದಿಸಿ.\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"ಒಂದು ಸರಿಯಾದ IPv4 ವಿಳಾಸವನ್ನು ನಮೂದಿಸಿ.\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"ಮಾನ್ಯವಾದ IPv6 ವಿಳಾಸ ದಾಖಲಿಸಿ\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"ಮಾನ್ಯವಾದ IPv4 ಅಥವಾ IPv6 ವಿಳಾಸ ದಾಖಲಿಸಿ\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"ಅಲ್ಪವಿರಾಮ(,)ಗಳಿಂದ ಬೇರ್ಪಟ್ಟ ಅಂಕೆಗಳನ್ನು ಮಾತ್ರ ಬರೆಯಿರಿ.\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"\"\n\"ಈ ಮೌಲ್ಯವು %(limit_value)s ಆಗಿದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ (ಇದು %(show_value)s ಆಗಿದೆ).\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"\"\n\"ಈ ಮೌಲ್ಯವು %(limit_value)s ಕ್ಕಿಂತ ಕಡಿಮೆಯ ಅಥವ ಸಮನಾದ ಮೌಲ್ಯವಾಗಿದೆ ಎಂದು ಖಾತ್ರಿ \"\n\"ಮಾಡಿಕೊಳ್ಳಿ.\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"\"\n\"ಈ ಮೌಲ್ಯವು %(limit_value)s ಕ್ಕಿಂತ ಹೆಚ್ಚಿನ ಅಥವ ಸಮನಾದ ಮೌಲ್ಯವಾಗಿದೆ ಎಂದು ಖಾತ್ರಿ \"\n\"ಮಾಡಿಕೊಳ್ಳಿ.\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"ಈ ಮೌಲ್ಯವು ಕನಿಷ್ಟ %(limit_value)d ಅಕ್ಷರಗಳನ್ನು ಅನ್ನು ಹೊಂದಿದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ \"\n\"(ಇದು %(show_value)d ಹೊಂದಿದೆ).\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"ಈ ಮೌಲ್ಯವು ಗರಿಷ್ಟ %(limit_value)d ಅಕ್ಷರಗಳನ್ನು ಅನ್ನು ಹೊಂದಿದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ \"\n\"(ಇದು %(show_value)d ಹೊಂದಿದೆ).\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"\"\n\"%(field_name)s ಎನ್ನುವುದು %(date_field)s %(lookup)s ಗಾಗಿ ವಿಶಿಷ್ಟವಾಗಿರಬೇಕು.\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"ಮತ್ತು\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"\"\n\"ಈ %(field_label)s ಅನ್ನು ಹೊಂದಿರುವ ಒಂದು %(model_name)s ಈಗಾಗಲೆ ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ.\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"%r ಎಂಬ ಮೌಲ್ಯವು ಒಂದು ಸರಿಯಾದ ಆಯ್ಕೆಯಾಗಿಲ್ಲ.\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"ಈ ಅಂಶವನ್ನು ಖಾಲಿ ಬಿಡುವಂತಿಲ್ಲ.\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"ಈ ಸ್ಥಳವು ಖಾಲಿ ಇರುವಂತಿಲ್ಲ.\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"ಕ್ಷೇತ್ರದ ಬಗೆ: %(field_type)s\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"ಪೂರ್ಣಾಂಕ\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"'%s' ಪೂರ್ಣಾಂಕ ಇರಬೇಕು\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"%s True ಅಥವಾ False ಇರಬೇಕು\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"ಬೂಲಿಯನ್ (ಹೌದು ಅಥವ ಅಲ್ಲ)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"ಪದಪುಂಜ (%(max_length)s ವರೆಗೆ)\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"ಅಲ್ಪವಿರಾಮ(,) ದಿಂದ ಬೇರ್ಪಟ್ಟ ಪೂರ್ಣಸಂಖ್ಯೆಗಳು\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"'%s' ಅಮಾನ್ಯ ದಿನಾಂಕದ ಸ್ವರೂಪ ಹೊಂದಿದೆ. YYYY-MM-DD ಆಗಿರಬೇಕು\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"ದಿನಾಂಕ (ಸಮಯವಿಲ್ಲದೆ)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"ದಿನಾಂಕ (ಸಮಯದೊಂದಿಗೆ)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"'%s' ದಶಮಾಂಶ ಸಂಖ್ಯೆ ಆಗಿರಬೇಕು\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"ದಶಮಾನ ಸಂಖ್ಯೆ\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"ಕಡತದ ಸ್ಥಾನಪಥ\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"'%s' float ಆಗಿರಬೇಕು\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"ತೇಲುವ-ಬಿಂದು ಸಂಖ್ಯೆ\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"ಬೃಹತ್ (೮ ಬೈಟ್) ಪೂರ್ಣ ಸಂಖ್ಯೆ\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"IPv4 ವಿಳಾಸ\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"IP ವಿಳಾಸ\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"'%s' None, True ಅಥವಾ False ಇರಬೇಕು\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"ಬೂಲಿಯನ್ (ನಿಜ, ಸುಳ್ಳು ಅಥವ ಯಾವುದೂ ಅಲ್ಲ ಇವುಗಳಲ್ಲಿ ಒಂದು)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"ಪಠ್ಯ\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"ಸಮಯ\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"pk %(pk)r ಅನ್ನು ಹೊಂದಿರುವ %(model)s ಎನ್ನುವ ಮಾದರಿಯು ಅಸ್ತಿತ್ವದಲ್ಲಿ ಇಲ್ಲ.\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"ಬಾಹ್ಯ ಕೀಲಿ (ಸಂಬಂಧಿತ ಸ್ಥಳದಿಂದ ಪ್ರಕಾರವನ್ನು ನಿರ್ಧರಿಸಲಾಗುತ್ತದೆ)\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"ಒನ್-ಟು-ಒನ್ (ಪರಸ್ಪರ) ಸಂಬಂಧ\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"ಮೆನಿ-ಟು-ಮೆನಿ (ಸಾರ್ವಜನಿಕ) ಸಂಬಂಧ\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"\"\n\"ಒಂದಕ್ಕಿಂತ ಹೆಚ್ಚನ್ನು ಆಯ್ದುಕೊಳ್ಳಲು ಮ್ಯಾಕ್ ಗಣಕದಲ್ಲಿನ \\\"ಕಂಟ್ರೋಲ್\\\", ಅಥವಾ \\\"ಕಮ್ಯಾಂಡ್\\\" ಅನ್ನು \"\n\"ಒತ್ತಿ ಹಿಡಿಯಿರಿ.\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"ಈ ಸ್ಥಳವು ಅಗತ್ಯವಿರುತ್ತದೆ.\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"ಪೂರ್ಣಾಂಕವೊಂದನ್ನು ನಮೂದಿಸಿ.\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"ಒಂದು ಸಂಖ್ಯೆಯನ್ನು ನಮೂದಿಸಿ.\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"ಒಟ್ಟು %s ಅಂಕಿಗಳಿಗಿಂತ ಹೆಚ್ಚಿನ ಅಂಕಿಗಳು ಇಲ್ಲ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ.\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"ಒಟ್ಟು %s ದಶಮಾಂಶ ಸ್ಥಾನಗಳಿಗಿಂತ ಹೆಚ್ಚಿನವುಗಳು ಇಲ್ಲ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ.\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"\"\n\"ದಶಾಂಶ ಬಿಂದುವಿನ ಮೊದಲು %s ಅಂಕಿಗಳಿಗಿಂರ ಹೆಚ್ಚಿನ ಅಂಕಿಗಳು ಇಲ್ಲ ಎಂದು ಖಾತ್ರಿ ಮಾಡಿಕೊಳ್ಳಿ.\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"ಸರಿಯಾದ ದಿನಾಂಕವನ್ನು ನಮೂದಿಸಿ.\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"ಸರಿಯಾದ ಸಮಯವನ್ನು ನಮೂದಿಸಿ.\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"ಸರಿಯಾದ ದಿನಾಂಕ/ಸಮಯವನ್ನು ನಮೂದಿಸಿ.\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"\"\n\"ಯಾವದೇ ಕಡತವನ್ನೂ ಸಲ್ಲಿಸಲಾಗಿಲ್ಲ. ನಮೂನೆಯ ಮೇಲಿನ ಸಂಕೇತೀಕರಣ (ಎನ್ಕೋಡಿಂಗ್) ಬಗೆಯನ್ನು \"\n\"ಪರೀಕ್ಷಿಸಿ.\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"ಯಾವದೇ ಕಡತವನ್ನೂ ಸಲ್ಲಿಸಲಾಗಿಲ್ಲ.\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"ಸಲ್ಲಿಸಲಾದ ಕಡತ ಖಾಲಿ ಇದೆ.\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\"ಈ ಕಡತದ ಹೆಸರು ಗರಿಷ್ಟ %(max)d ಅಕ್ಷರಗಳನ್ನು ಹೊಂದಿವೆ ಎನ್ನುವುದನ್ನು ಖಾತ್ರಿ ಪಡಿಸಿಕೊಳ್ಳಿ \"\n\"(ಅದು %(length)d ಅನ್ನು ಹೊಂದಿದೆ).\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"\"\n\"ದಯವಿಟ್ಟು ಕಡತವನ್ನು ಸಲ್ಲಿಸಿ ಅಥವ ಅಳಿಸುವ ಗುರುತುಚೌಕವನ್ನು ಗುರುತು ಹಾಕಿ, ಎರಡನ್ನೂ ಒಟ್ಟಿಗೆ \"\n\"ಮಾಡಬೇಡಿ.\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\"ಸರಿಯಾದ ಚಿತ್ರವನ್ನು ಸೇರಿಸಿ. ನೀವು ಸೇರಿಸಿದ ಕಡತವು ಚಿತ್ರವೇ ಅಲ್ಲ ಅಥವಾ ಅದು ಒಂದು ಹಾಳಾದ \"\n\"ಚಿತ್ರವಾಗಿದೆ. \"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"ಸರಿಯಾದ ಒಂದು URL ಅನ್ನು ನಮೂದಿಸಿ.\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"ಸರಿಯಾದ ಒಂದು ಆಯ್ಕೆಯನ್ನು ಆರಿಸಿ. %(value)s ಎನ್ನುವುದು ಲಭ್ಯವಿರುವ ಆಯ್ಕೆಗಳಲ್ಲಿ ಇಲ್ಲ.\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"ಮೌಲ್ಯಗಳ ಒಂದು ಪಟ್ಟಿಯನ್ನು ನಮೂದಿಸಿ.\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"ಕ್ರಮ\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"ಅಳಿಸಿಹಾಕಿ\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"%(field)s ಗಾಗಿ ಎರಡು ಬಾರಿ ನಮೂದಿಸಲಾದ ಮಾಹಿತಿಯನ್ನು ಸರಿಪಡಿಸಿ.\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"\"\n\"%(field)s ಗಾಗಿ ಎರಡು ಬಾರಿ ನಮೂದಿಸಲಾದ ಮಾಹಿತಿಯನ್ನು ಸರಿಪಡಿಸಿ, ಇದರ ಮೌಲ್ಯವು \"\n\"ವಿಶಿಷ್ಟವಾಗಿರಬೇಕು.\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\"%(field_name)s ಗಾಗಿ ಎರಡು ಬಾರಿ ನಮೂದಿಸಲಾದ ಮಾಹಿತಿಯನ್ನು ಸರಿಪಡಿಸಿ, %(date_field)s \"\n\"ನಲ್ಲಿನ %(lookup)s ಗಾಗಿ ಇದರ ಮೌಲ್ಯವು ವಿಶಿಷ್ಟವಾಗಿರಬೇಕು.\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"ದಯವಿಟ್ಟು ಈ ಕೆಳಗೆ ಎರಡು ಬಾರಿ ನಮೂದಿಸಲಾದ ಮೌಲ್ಯವನ್ನು ಸರಿಪಡಿಸಿ.\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"ಸಾಲಿನೊಳಗಿನ ಪ್ರಾಥಮಿಕ ಕೀಲಿಯು ಮೂಲ ಇನ್‌ಸ್ಟನ್ಸ್‍ ಪ್ರಾಥಮಿಕ ಕೀಲಿಗೆ ತಾಳೆಯಾಗುತ್ತಿಲ್ಲ.\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"ಸರಿಯಾದ ಒಂದು ಆಯ್ಕೆಯನ್ನು ಆರಿಸಿ. ಆ ಆಯ್ಕೆಯು ಲಭ್ಯವಿರುವ ಆಯ್ಕೆಗಳಲ್ಲಿ ಇಲ್ಲ.\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"ಸರಿಯಾದ ಒಂದು ಆಯ್ಕೆಯನ್ನು ಆರಿಸಿ. %s ಎನ್ನುವುದು ಲಭ್ಯವಿರುವ ಆಯ್ಕೆಗಳಲ್ಲಿ ಇಲ್ಲ.\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"\\\"%s\\\" ಎನ್ನುವುದು ಒಂದು ಸರಿಯಾದ ಪ್ರಾಥಮಿಕ ಕೀಲಿಯಲ್ಲ.\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"ಪ್ರಸಕ್ತ\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"ಬದಲಾವಣೆ\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"ಮುಕ್ತಗೊಳಿಸು\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"ಗೊತ್ತಿರದ\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"ಹೌದು\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"ಇಲ್ಲ\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"ಹೌದು,ಇಲ್ಲ,ಇರಬಹುದು\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"%(size)d ಬೈಟ್‌ಗಳು\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s KB\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s MB\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s GB\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s TB\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s PB\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"ಅಪರಾಹ್ನ\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"ಪೂರ್ವಾಹ್ನ\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"ಅಪರಾಹ್ನ\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"ಪೂರ್ವಾಹ್ನ\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"ಮಧ್ಯರಾತ್ರಿ\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"ಮಧ್ಯಾಹ್ನ\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"ಸೋಮವಾರ\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"ಮಂಗಳವಾರ\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"ಬುಧವಾರ\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"ಗುರುವಾರ\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"ಶುಕ್ರವಾರ\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"ಶನಿವಾರ\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"ರವಿವಾರ\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"ಸೋಮ\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"ಮಂಗಳ\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"ಬುಧ\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"ಗುರು\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"ಶುಕ್ರ\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"ಶನಿ\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"ರವಿ\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"ಜನವರಿ\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"ಫೆಬ್ರುವರಿ\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"ಮಾರ್ಚ್\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"ಎಪ್ರಿಲ್\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"ಮೇ\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"ಜೂನ್\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"ಜುಲೈ\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"ಆಗಸ್ಟ್\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"ಸೆಪ್ಟೆಂಬರ್\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"ಅಕ್ಟೋಬರ್\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"ನವೆಂಬರ್\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"ಡಿಸೆಂಬರ್\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"ಜನವರಿ\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"ಫೆಬ್ರವರಿ\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"ಮಾರ್ಚ್\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"ಏಪ್ರಿಲ್\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"ಮೇ\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"ಜೂನ್\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"ಜುಲೈ\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"ಆಗಸ್ಟ್‍\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"ಸೆಪ್ಟೆಂಬರ್\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"ಅಕ್ಟೋಬರ್\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"ನವೆಂಬರ್\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"ಡಿಸೆಂಬರ್\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"ಜನ.\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"ಫೆಬ್ರ.\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"ಮಾರ್ಚ್\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"ಏಪ್ರಿಲ್\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"ಮೇ\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"ಜೂನ್\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"ಜುಲೈ\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"ಆಗ.\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"ಸೆಪ್ಟೆ.\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"ಅಕ್ಟೋ.\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"ನವೆಂ.\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"ಡಿಸೆಂ.\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"ಜನವರಿ\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"ಫೆಬ್ರವರಿ\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"ಮಾರ್ಚ್\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"ಏಪ್ರಿಲ್\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"ಮೇ\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"ಜೂನ್\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"ಜುಲೈ\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"ಆಗಸ್ಟ್‍\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"ಸಪ್ಟೆಂಬರ್\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"ಅಕ್ಟೋಬರ್\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"ನವೆಂಬರ್\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"ಡಿಸೆಂಬರ್\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"ಅಥವ\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \", \"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"ವರ್ಷಗಳು\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"ತಿಂಗಳುಗಳು\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"ವಾರಗಳು\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"ದಿನಗಳು\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"ಗಂಟೆಗಳು\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"ನಿಮಿಷಗಳು\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"ನಿಮಿಷಗಳು\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \", %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"ಯಾವುದೆ ವರ್ಷವನ್ನು ಸೂಚಿಲಾಗಿಲ್ಲ\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"ಯಾವುದೆ ತಿಂಗಳನ್ನು ಸೂಚಿಸಲಾಗಿಲ್ಲ\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"ಯಾವುದೆ ದಿನವನ್ನು ಸೂಚಿಸಲಾಗಿಲ್ಲ\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"ಯಾವುದೆ ವಾರವನ್ನು ಸೂಚಿಸಲಾಗಿಲ್ಲ\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"ಯಾವುದೆ %(verbose_name_plural)s ಲಭ್ಯವಿಲ್ಲ\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\"ಭವಿಷ್ಯದ %(verbose_name_plural)s ಲಭ್ಯವಿಲ್ಲ ಏಕೆಂದರೆ %(class_name)s.allow_future \"\n\"ಎನ್ನುವುದು ಅಸತ್ಯವಾಗಿದೆ (ಫಾಲ್ಸ್‍) ಆಗಿದೆ.\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"\"\n\"ಅಸಿಂಧುವಾದ '%(datestr)s' ದಿನಾಂಕ ಪದಪುಂಜ ಒದಗಿಸಲಾದ ವಿನ್ಯಾಸವು '%(format)s' ಆಗಿದೆ\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"ಮನವಿಗೆ ತಾಳೆಯಾಗುವ ಯಾವುದೆ %(verbose_name)s ಕಂಡುಬಂದಿಲ್ಲ\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"ಪುಟವು 'ಕೊನೆಯ'ದಲ್ಲ, ಅಥವ ಅದನ್ನು ಒಂದು int ಆಗಿ ಮಾರ್ಪಡಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ.\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"\"\n\"ಖಾಲಿ ಪಟ್ಟಿ ಹಾಗು '%(class_name)s.allow_empty' ಎನ್ನುವುದು ಅಸತ್ಯವಾಗಿದೆ (ಫಾಲ್ಸ್‍).\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/kn/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/conf/locale/kn/formats.py",
    "content": "# -*- encoding: utf-8 -*-\n# This file is distributed under the same license as the Django package.\n#\n\n# The *_FORMAT strings use the Django date format syntax,\n# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\nDATE_FORMAT = 'j F Y'\nTIME_FORMAT = 'h:i:s A'\n# DATETIME_FORMAT = \n# YEAR_MONTH_FORMAT = \nMONTH_DAY_FORMAT = 'j F'\nSHORT_DATE_FORMAT = 'j M Y'\n# SHORT_DATETIME_FORMAT = \n# FIRST_DAY_OF_WEEK = \n\n# The *_INPUT_FORMATS strings use the Python strftime format syntax,\n# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior\n# DATE_INPUT_FORMATS = \n# TIME_INPUT_FORMATS = \n# DATETIME_INPUT_FORMATS = \n# DECIMAL_SEPARATOR = \n# THOUSAND_SEPARATOR = \n# NUMBER_GROUPING = \n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/ko/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jaehong Kim <mixe@korea.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:47+0000\\n\"\n\"Last-Translator: Jaehong Kim <mixe@korea.com>\\n\"\n\"Language-Team: Korean (http://www.transifex.com/projects/p/django/language/\"\n\"ko/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ko\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"아랍어\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"아제르바이잔어\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"불가리어\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"방글라데시어\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"보스니아어\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"카탈로니아어\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"체코어\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"웨일즈어\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"덴마크어\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"독일어\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"그리스어\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"영어\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"영어 (영국)\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"스페인어\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"아르헨티나 스페인어\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"멕시컨 스페인어\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"에스토니아어\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"바스크어\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"페르시아어\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"핀란드어\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"프랑스어\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"프리슬란트어\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"아일랜드어\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"갈리시아어\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"히브리어\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"힌두어\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"크로아티아어\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"헝가리어\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"인도네시아어\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"아이슬란드어\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"이탈리아어\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"일본어\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"조지아어\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"크메르어\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"칸나다어\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"한국어\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"리투아니아어\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"라트비아어\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"마케도니아어\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"말레이지아어\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"몽고어\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"노르웨이어 (보크몰)\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"네덜란드어\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"노르웨이어 (뉘노르스크)\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"펀자브어\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"폴란드어\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"포르투갈어\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"브라질 포르투갈어\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"루마니아어\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"러시아어\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"슬로바키아어\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"슬로베니아어\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"알바니아어\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"세르비아어\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"세르비아어\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"스웨덴어\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"타밀어\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"텔루구어\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"태국어\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"터키어\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"우크라이나어\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"우르드어\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"베트남어\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"중국어 간체\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"중국어 번체\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"올바른 값을 입력하세요.\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"문자, 숫자, '_', '-'만 가능합니다.\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"올바른 IPv4 주소를 입력하세요.\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"콤마로 구분된 숫자만 입력하세요.\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"\"\n\"%(limit_value)s 안의 값을 입력해 주세요. (입력하신 값은 %(show_value)s입니\"\n\"다.)\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"%(limit_value)s 이하의 값을 입력해 주세요.\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"%(limit_value)s 이상의 값을 입력해 주세요.\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"%(limit_value)d글자 이상 입력해 주세요. (입력하신 내용은 %(show_value)d글자입\"\n\"니다.)\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"%(limit_value)d글자 이하로 입력해 주세요. (입력하신 내용은 %(show_value)d글자\"\n\"입니다)\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"\"\n\"%(field_name)s(은)는 반드시 %(date_field)s %(lookup)s에 대해 유일해야 합니다.\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"또한\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"%(model_name)s의 %(field_label)s(은)는 이미 존재합니다.\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"%r은 올바른 선택사항이 아닙니다.\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"이 필드는 null 값은 사용할 수 없습니다. \"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"이 필드는 null 값은 사용할 수 없습니다. \"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"%(field_type)s 형식 필드\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"정수\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"boolean(참 또는 거짓)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"문자열(%(max_length)s 글자까지)\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"정수(콤마로 구분)\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"날짜(시간 제외)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"날짜(시간 포함)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"10진수\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"이메일 주소\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"파일 경로\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"부동소수점 숫자\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"큰 정수 (8 byte)\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"IP 주소\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"boolean (참, 거짓 또는 none)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"텍스트\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"시각\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"Primary key %(pk)r에 대한 모델 %(model)s가 존재하지 않습니다.\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"외래 키 (연관 필드에 의해 형식 결정)\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"일대일 관계\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"다대다 관계\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"\"\n\"복수 선택 시에는 \\\"Control\\\" 키를 누른 상태에서 선택해 주세요.(Mac은 \"\n\"\\\"Command\\\" 키)\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"필수 항목입니다.\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"정수를 입력하세요.\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"숫자를 입력하세요.\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"전체 자릿수가 %s 개를 넘지 않도록 해주세요.\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"전체 유효자리 개수가 %s 개를 넘지 않도록 해주세요.\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"소숫점 앞의 자릿수가 %s 개를 넘지 않도록 해주세요.\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"올바른 날짜를 입력하세요.\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"올바른 시각을 입력하세요.\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"올바른 날짜/시각을 입력하세요.\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"등록된 파일이 없습니다. 인코딩 형식을 확인하세요.\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"파일이 전송되지 않았습니다.\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"입력하신 파일은 빈 파일입니다.\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\"파일 이름은 %(max)d 글자 이하로 입력해 주세요. (입력하신 내용은 %(length)d 자\"\n\"입니다)\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"파일을 보내거나 취소 체크박스를 체크하세요. 또는 둘다 비워두세요.\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\"올바른 이미지를 업로드하세요. 업로드하신 파일은 이미지 파일이 아니거나 파일\"\n\"이 깨져 있습니다.\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"올바른 URL을 입력하세요.\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"올바르게 선택해 주세요. %(value)s (이)가 선택가능항목에 없습니다.\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"리스트를 입력하세요.\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"순서:\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"삭제\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"%(field)s의 중복된 데이터를 고쳐주세요.\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"%(field)s의 중복된 데이터를 고쳐주세요. 유일한 값이어야 합니다.\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\"%(field_name)s의 값은 %(date_field)s의 %(lookup)s에 대해 유일해야 합니다. 중\"\n\"복된 데이터를 고쳐주세요.\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"아래의 중복된 값들을 고쳐주세요.\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"부모 오브젝트의 primary key와 inline foreign key가 맞지 않습니다.\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"올바르게 선택해 주세요. 선택하신 것이 선택가능항목에 없습니다.\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"올바르게 선택해 주세요. %s (이)가 선택가능항목에 없습니다.\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"\\\"%s\\\"은 primary key로 적합하지 않습니다.\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"현재\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"변경\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"취소\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"알 수 없습니다.\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"예\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"아니오\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"예,아니오,아마도\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"%(size)d 바이트\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s KB\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s MB\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s GB\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s TB\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s PB\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"오후\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"오전\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"오후\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"오전\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"자정\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"정오\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"월요일\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"화요일\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"수요일\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"목요일\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"금요일\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"토요일\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"일요일\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"월요일\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"화요일\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"수요일\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"목요일\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"금요일\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"토요일\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"일요일\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"1월\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"2월\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"3월\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"4월\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"5월\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"6월\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"7월\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"8월\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"9월\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"10월\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"11월\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"12월\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"1월\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"2월\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"3월\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"4월\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"5월\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"6월\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"7월\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"8월\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"9월\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"10월\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"11월\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"12월\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"1\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"2\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"3\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"4\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"5\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"6\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"7\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"8\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"9\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"10\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"11월\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"12월\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"1월\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"2월\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"3월\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"4월\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"5월\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"6월\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"7월\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"8월\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"9월\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"10월\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"11월\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"12월\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"또는\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \",\"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"년\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"개월\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"주\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"일\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"시간\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"분\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"분\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d%(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \", %(number)d%(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"년도가 없습니다.\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"월이 없습니다.\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"날짜가 없습니다.\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"주가 없습니다.\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \" %(verbose_name_plural)s를 사용할 수 없습니다.\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\"Future 모듈 %(verbose_name_plural)s을 사용할 수 없습니다. %(class_name)s.\"\n\"allow_future가 False 입니다.\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"날짜 문자열 '%(datestr)s'이 표준 형식 '%(format)s'과 다릅니다.\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"쿼리 결과에 %(verbose_name)s가 없습니다.\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"'마지막' 페이지가 아니거나, 정수형으로 변환할 수 없습니다.\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"빈 리스트이고 '%(class_name)s.allow_empty'가 False입니다.\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/ko/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/conf/locale/ko/formats.py",
    "content": "# -*- encoding: utf-8 -*-\n# This file is distributed under the same license as the Django package.\n#\nfrom __future__ import unicode_literals\n\n# The *_FORMAT strings use the Django date format syntax,\n# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\nDATE_FORMAT = 'Y년 n월 j일'\nTIME_FORMAT = 'A g:i:s'\nDATETIME_FORMAT = 'Y년 n월 j일 g:i:s A'\nYEAR_MONTH_FORMAT = 'Y년 F월'\nMONTH_DAY_FORMAT = 'F월 j일'\nSHORT_DATE_FORMAT = 'Y-n-j.'\nSHORT_DATETIME_FORMAT = 'Y-n-j H:i'\n# FIRST_DAY_OF_WEEK =\n\n# The *_INPUT_FORMATS strings use the Python strftime format syntax,\n# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior\n# Kept ISO formats as they are in first position\nDATE_INPUT_FORMATS = (\n    '%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', # '2006-10-25', '10/25/2006', '10/25/06'\n    # '%b %d %Y', '%b %d, %Y',            # 'Oct 25 2006', 'Oct 25, 2006'\n    # '%d %b %Y', '%d %b, %Y',            # '25 Oct 2006', '25 Oct, 2006'\n    # '%B %d %Y', '%B %d, %Y',            # 'October 25 2006', 'October 25, 2006'\n    # '%d %B %Y', '%d %B, %Y',            # '25 October 2006', '25 October, 2006'\n    '%Y년 %m월 %d일',                   # '2006년 10월 25일', with localized suffix.\n)\nTIME_INPUT_FORMATS = (\n    '%H:%M:%S',     # '14:30:59'\n    '%H:%M',        # '14:30'\n    '%H시 %M분 %S초',   # '14시 30분 59초'\n    '%H시 %M분',        # '14시 30분'\n)\nDATETIME_INPUT_FORMATS = (\n    '%Y-%m-%d %H:%M:%S',     # '2006-10-25 14:30:59'\n    '%Y-%m-%d %H:%M',        # '2006-10-25 14:30'\n    '%Y-%m-%d',              # '2006-10-25'\n    '%m/%d/%Y %H:%M:%S',     # '10/25/2006 14:30:59'\n    '%m/%d/%Y %H:%M',        # '10/25/2006 14:30'\n    '%m/%d/%Y',              # '10/25/2006'\n    '%m/%d/%y %H:%M:%S',     # '10/25/06 14:30:59'\n    '%m/%d/%y %H:%M',        # '10/25/06 14:30'\n    '%m/%d/%y',              # '10/25/06'\n\n    '%Y년 %m월 %d일 %H시 %M분 %S초',  # '2006년 10월 25일 14시 30분 59초'\n    '%Y년 %m월 %d일 %H시 %M분',       # '2006년 10월 25일 14시 30분'\n)\n\nDECIMAL_SEPARATOR = '.'\nTHOUSAND_SEPARATOR = ','\nNUMBER_GROUPING = 3\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/lb/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#  <sim0n@trypill.org>, 2013.\n#   <sim0n@trypill.org>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-26 12:36+0000\\n\"\n\"Last-Translator: sim0n <sim0n@trypill.org>\\n\"\n\"Language-Team: Luxembourgish (http://www.transifex.com/projects/p/django/\"\n\"language/lb/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: lb\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"Arabesch\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"Bulgaresch\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"Bengalesch\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"Bosnesch\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"Katalanesch\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"Tschechesch\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"Walisesch\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"Dänesch\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"Däitsch\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"Griichesch\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"Englesch\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"Britesch Englesch\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"Spuenesch\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"Argentinesch Spuenesch\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"Estonesch\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"Baskesch\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"Persesch\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"Finnesch\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"Franséisch\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"Frisesch\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"Iresch\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"Galesch\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"Hebräesch\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"Hindi\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"Kroatesch\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"Ungaresch\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"Indonesesch\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"Islännesch\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"Italienesch\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"Japanesch\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"Georgesch\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"Khmer\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"Kanadesch\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"Koreanesch\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"Lithuanesesch\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"Lättesch\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"Macedonesch\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"Malayalam\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"Mongolesch\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"Norwegesch Bokmal\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"Hollännesch\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"Norwegesch Nynorsk\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"Punjabi\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"Polnesch\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"Portugisesch\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"Brasilianesch Portugisesch\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"Rumänesch\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"Russesch\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"Slowakesch\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"Slowenesch\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"Albanesch\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"Serbesch\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"Serbesch Latäinesch\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"Schwedesch\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"Tamil\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"Telugu\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"Thai\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"Tierkesch\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"Ukrainesch\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"Vietnamesesch\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"Einfach d'Chinesesch\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"Traditionell d'Chinesesch\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"Gëff en validen Wärt an.\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"Gëff eng valid IPv4 Adress an.\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"an\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"Zuel\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"Text\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"Zäit\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"Et ass keng Datei geschéckt ginn.\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"Gëff eng valid URL an.\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"Gëff eng Lescht vun Wäerter an.\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"Sortéier\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"Läsch\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"Momentan\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"Änner\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"Maach eidel\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"Onbekannt\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"Jo\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"Nee\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"jo,nee,vläit\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"p.m.\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"a.m.\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"PM\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"AM\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"Méindeg\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"Dënschdeg\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"Mëttwoch\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"Donneschdes\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"Freides\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"Samschdes\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"Sonndes\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"Mei\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"Dën\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"Mett\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"Don\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"Fre\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"Sam\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"Son\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"Januar\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"Februar\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"März\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"Abrell\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"März\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"Abrell\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"Januar\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"Februar\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"März\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"Abrell\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \", \"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \"\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/lt/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Kostas  <tamosiunas@gmail.com>, 2011.\n# lauris <lauris@runbox.com>, 2011.\n#   <naktinis@gmail.com>, 2012.\n# Nikolajus Krauklis <nikolajus@gmail.com>, 2013.\n# Povilas Balzaravičius <pavvka@gmail.com>, 2011, 2012.\n# Simonas Kazlauskas <simonas@kazlauskas.me>, 2012.\n# Simonas Simas <simonas@kazlauskas.me>, 2012.\n# Vytautas Astrauskas <vastrauskas@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-02-23 13:00+0000\\n\"\n\"Last-Translator: Nikolajus Krauklis <nikolajus@gmail.com>\\n\"\n\"Language-Team: Lithuanian (http://www.transifex.com/projects/p/django/\"\n\"language/lt/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: lt\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n\"\n\"%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"Afrikiečių\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"Arabų\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"Azerbaidžaniečių\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"Bulgarų\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"Belarusų\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"Bengalų\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"Breton\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"Bosnių\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"Katalonų\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"Čekų\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"Velso\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"Danų\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"Vokiečių\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"Graikų\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"Anglų\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"Britų Anglų\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"Esperanto\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"Ispanų\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"Argentiniečių Ispanų\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"Meksikiečių Ispanų\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"Nikaragvos Ispanijos\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"Venesuelos Ispanų\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"Estų\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"Baskų\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"Persų\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"Suomių\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"Prancūzų\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"Fryzų\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"Airių\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"Galų\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"Hebrajų\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"Hindi\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"Kroatų\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"Vengrų\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"Interlingua\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"Indonecijos\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"Islandų\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"Italų\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"Japonų\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"Gruzinų\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"Kazachų\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"Khmerų\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"Dravidų\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"Korėjiečių\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"Liuksemburgiečių\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"Lietuvių\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"Latvių\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"Makedonų\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"Malajalių\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"Mongolų\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"Norvegų Bokmal\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"Nepalų\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"Olandų\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"Norvegų Nynorsk\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"Pandžabi\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"Lenkų\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"Protugalų\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"Brazilijos Portugalų\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"Rumunų\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"Rusų\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"Slovakų\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"Slovėnų\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"Albanų\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"Serbų\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"Serbų Lotynų\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"Švedų\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"Svahili\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"Tamilų\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"Telugų\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"Tailando\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"Turkų\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"Totorių\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"Udmurtų\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"Ukrainiečių\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"Urdu\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"Vietnamiečių\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"Supaprastinta kinų\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"Tradicinė kinų\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"Įveskite tinkamą reikšmę.\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"Įveskite teisingą el. pašto adresą.\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"\"\n\"Šią reikšmę gali sudaryti tik raidės, skaičiai, pabraukimo arba paprasto \"\n\"brūkšnio simboliai.\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"Įveskite validų IPv4 adresą.\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"Įveskite validų IPv6 adresą.\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"Įveskite validų IPv4 arba IPv6 adresą.\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"Įveskite skaitmenis atskirtus kableliais.\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"\"\n\"Įsitikinkite, kad reikšmę sudaro %(limit_value)s simbolių (dabar yra \"\n\"%(show_value)s).\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"Įsitikinkite, kad reikšmė yra mažesnė arba lygi %(limit_value)s.\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"Įsitikinkite, kad reikšmė yra didesnė arba lygi %(limit_value)s.\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Įsitikinkite, kad reikšmę sudaro bent %(limit_value)d simboliai (dabar \"\n\"%(show_value)d).\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Įsitikinkite, kad reikšmės ilgis mažesnis nei %(limit_value)d simboliai \"\n\"(dabar %(show_value)d).\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"%(field_name)s privalo būti unikalus %(date_field)s %(lookup)s.\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"ir\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"%(model_name)s su šiuo %(field_label)s jau egzistuoja.\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"Reikšmės %r rinktis negalima.\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"Šis laukas negali būti null.\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"Lauką privaloma užpildyti.\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Lauko tipas: %(field_type)s \"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"Sveikas skaičius\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"'%s' reikšmė privalo būti sveikas skaičius.\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"'%s' reikšmė privalo būti True arba False.\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Loginė reikšmė (True arba False)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"Eilutė (ilgis iki %(max_length)s)\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"Kableliais atskirti sveikieji skaičiai\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"'%s' reikšmė yra netinkamo formato. Ji turi būti YYYY-MM-DD formatu.\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"\"\n\"'%s' reikšmė yra teisingo formato (YYYY-MM-DD), tačiau data yra neteisinga.\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"Data (be laiko)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\"'%s' reikšmė yra neteisingo formato. Ji turi būti pateikta YYYY-MM-DD HH:MM[:\"\n\"ss[.uuuuuu]][TZ] formatu.\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\"'%s' reikšmė yra teisingo formato (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]), \"\n\"tačiau data yra neteisinga.\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"Data (su laiku)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"'%s' reikšmė turi būti dešimtainis skaičius.\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"Dešimtainis skaičius\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"El. pašto adresas\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"Kelias iki failo\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"'%s' reikšmė turi būti slankiojo kablelio skaičius.\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"Slankaus kablelio skaičius\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"Didelis (8 baitų) sveikas skaičius\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"IPv4 adresas\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"IP adresas\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"'%s' reikšmė turi būti None, True arba False.\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"Loginė reikšmė (True, False arba None)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"Teigiamas sveikasis skaičius\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"Nedidelis teigiamas sveikasis skaičius\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"Unikalus adresas (iki %(max_length)s ženklų)\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"Nedidelis sveikasis skaičius\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"Tekstas\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"\"\n\"'%s' reikšmė yra neteisingo formato. Ji turi būti HH:MM[:ss[.uuuuuu]] \"\n\"formatu.\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\"'%s' reikšmė yra teisingo formato (HH:MM[:ss[.uuuuuu]]), tačiau tai nėra \"\n\"teisingas laikas.\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"Laikas\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"Failas\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"Paveiksliukas\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"Modelis %(model)s su pirminiu raktu %(pk)r neegzistuoja.\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"Išorinis raktas (tipas nustatomas susijusiame lauke)\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"Sąryšis vienas su vienu\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"Sąryšis daug su daug\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"\"\n\"Nuspauskite \\\"Control\\\", arba \\\"Command\\\" Mac kompiuteriuose, kad pasirinkti \"\n\"daugiau nei vieną.\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"Šis laukas yra privalomas.\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"Įveskite pilną skaičių.\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"Įveskite skaičių.\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"Užtikrinkite, kad visumoje nėra daugiau skaitmenų nei %s.\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"Užtikrinkite, kad dešimtainių reikšmių nėra daugiau nei %s.\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"Užtikrinkite, kad skaitmenų prieš keblelį nėra daugiau nei %s.\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"Įveskite tinkamą datą.\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"Įveskite tinkamą laiką.\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"Įveskite tinkamą datą/laiką.\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"Nebuvo nurodytas failas. Patikrinkite formos koduotę.\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"Failas nebuvo nurodytas.\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"Nurodytas failas yra tuščias.\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\"Įsitikinkite, kad reikšmę sudaro daugiausia %(max)d simbolių (dabar \"\n\"%(length)d).\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"Nurodykite failą arba pažymėkite išvalyti. Abu pasirinkimai negalimi.\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\"Atsiųskite tinkamą paveiksliuką. Failas, kurį siuntėte nebuvo paveiksliukas, \"\n\"arba buvo sugadintas.\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"Įveskite tinkamą URL adresą.\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"Nurodykite tinkamą reikšmę. %(value)s nėra galimas pasirinkimas.\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"Įveskite reikšmių sarašą.\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"Nurodyti\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"Ištrinti\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"Pataisykite pasikartojančius duomenis laukui %(field)s.\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"\"\n\"Pataisykite pasikartojančius duomenis laukui %(field)s. Duomenys privalo \"\n\"būti unikalūs.\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\"Pataisykite pasikartojančius duomenis laukui %(field_name)s. Duomenys \"\n\"privalo būti unikalūs %(lookup)s peržiūroms per %(date_field)s.\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"Pataisykite žemiau esančias pasikartojančias reikšmes.\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"Išorinis raktas neatitinka tėvinio objekto pirminio rakto.\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"Pasirinkite tinkamą reikšmę. Parinkta reikšmė nėra galima.\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"Pasirinkite tinkamą. %s nėra vienas(-a) iš galimų.\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"\\\"%s\\\" nėra pirminiam raktui tinkama reikšmė.\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\"Nepavyko interpretuoti %(datetime)s %(current_timezone)s laiko juostoje; \"\n\"Data gali turėti keletą reikšmių arba neegzistuoti.\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"Šiuo metu\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"Pakeisti\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"Išvalyti\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"Nežinomas\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"Taip\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"Ne\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"taip,ne,galbūt\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"%(size)d baitas\"\nmsgstr[1] \"%(size)d baitai\"\nmsgstr[2] \"%(size)d baitai\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s KB\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s MB\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s GB\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s TB\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s PB\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"p.m.\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"a.m.\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"PM\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"AM\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"vidurnaktis\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"vidurdienis\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"Pirmadienis\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"Antradienis\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"Trečiadienis\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"Ketvirtadienis\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"Penktadienis\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"Šeštadienis\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"Sekmadienis\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"Pr\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"A\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"T\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"K\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"P\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"Š\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"S\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"sausis\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"vasaris\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"kovas\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"balandis\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"gegužė\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"birželis\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"liepa\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"rugpjūtis\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"rugsėjis\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"spalis\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"lapkritis\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"gruodis\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"sau\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"vas\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"kov\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"bal\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"geg\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"bir\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"lie\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"rugp\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"rugs\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"spa\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"lap\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"grd\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"saus.\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"vas.\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"kov.\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"bal.\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"geg.\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"birž.\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"liep.\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"rugpj.\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"rugs.\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"spal.\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"lapkr.\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"gruod.\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"sausio\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"vasario\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"kovo\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"balandžio\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"gegužės\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"birželio\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"liepos\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"rugpjūčio\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"rugsėjo\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"spalio\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"lapkričio\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"gruodžio\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"%(truncated_text)s...\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"arba\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \",\"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"metai\"\nmsgstr[1] \"metai\"\nmsgstr[2] \"metai\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"mėnuo\"\nmsgstr[1] \"mėnesiai\"\nmsgstr[2] \"mėnesiai\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"savaitė\"\nmsgstr[1] \"savaitės\"\nmsgstr[2] \"savaitės\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"diena\"\nmsgstr[1] \"dienos\"\nmsgstr[2] \"dienos\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"valanda\"\nmsgstr[1] \"valandos\"\nmsgstr[2] \"valandos\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"minutė\"\nmsgstr[1] \"minutės\"\nmsgstr[2] \"minutės\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"minutės\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \", %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"Aplankų indeksai čia neleidžiami.\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\\\"%(path)s\\\" neegzistuoja\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"%(directory)s indeksas\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"Nenurodyti metai\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"Nenurodytas mėnuo\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"Nenurodyta diena\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"Nenurodyta savaitė\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"Nėra %(verbose_name_plural)s\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\"Ateities %(verbose_name_plural)s nėra prieinami, nes %(class_name)s.\"\n\"allow_future yra False.\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"Data '%(datestr)s' neatitinka formato '%(format)s'\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"Atitinkantis užklausą %(verbose_name)s nerastas\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"\"\n\"Puslapis nėra 'paskutinis', taip pat negali būti paverstas į sveiką skaičių.\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"Neegzistuojantis puslapis (%(page_number)s): %(message)s\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"Tuščias sąrašas ir '%(class_name)s.allow_empty' yra False.\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/lt/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/conf/locale/lt/formats.py",
    "content": "# -*- encoding: utf-8 -*-\n# This file is distributed under the same license as the Django package.\n#\nfrom __future__ import unicode_literals\n\n# The *_FORMAT strings use the Django date format syntax,\n# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\nDATE_FORMAT = r'Y \\m. E j \\d.'\nTIME_FORMAT = 'H:i:s'\nDATETIME_FORMAT = r'Y \\m. E j \\d., H:i:s'\nYEAR_MONTH_FORMAT = r'Y \\m. F'\nMONTH_DAY_FORMAT = r'E j \\d.'\nSHORT_DATE_FORMAT = 'Y-m-d'\nSHORT_DATETIME_FORMAT = 'Y-m-d H:i'\nFIRST_DAY_OF_WEEK = 1  # Monday\n\n# The *_INPUT_FORMATS strings use the Python strftime format syntax,\n# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior\nDATE_INPUT_FORMATS = (\n    '%Y-%m-%d', '%d.%m.%Y', '%d.%m.%y', # '2006-10-25', '25.10.2006', '25.10.06'\n)\nTIME_INPUT_FORMATS = (\n    '%H:%M:%S',     # '14:30:59'\n    '%H:%M',     # '14:30'\n    '%H.%M.%S', # '14.30.59'\n    '%H.%M', # '14.30'\n)\nDATETIME_INPUT_FORMATS = (\n    '%Y-%m-%d %H:%M:%S',     # '2006-10-25 14:30:59'\n    '%Y-%m-%d %H:%M',        # '2006-10-25 14:30'\n    '%d.%m.%Y %H:%M:%S',     # '25.10.2006 14:30:59'\n    '%d.%m.%Y %H:%M',        # '25.10.2006 14:30'\n    '%d.%m.%Y',              # '25.10.2006'\n    '%d.%m.%y %H:%M:%S',     # '25.10.06 14:30:59'\n    '%d.%m.%y %H:%M',        # '25.10.06 14:30'\n    '%d.%m.%y %H.%M.%S',     # '25.10.06 14.30.59'\n    '%d.%m.%y %H.%M',        # '25.10.06 14.30'\n    '%d.%m.%y',              # '25.10.06'\n)\nDECIMAL_SEPARATOR = ','\nTHOUSAND_SEPARATOR = '.'\nNUMBER_GROUPING = 3\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/lv/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# edgars <edgars.jekabsons@gmail.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:47+0000\\n\"\n\"Last-Translator: edgars <edgars.jekabsons@gmail.com>\\n\"\n\"Language-Team: Latvian (http://www.transifex.com/projects/p/django/language/\"\n\"lv/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: lv\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : \"\n\"2);\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"arābu\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"bulgāru\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"bengāļu\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"bosniešu\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"katalāņu\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"čehu\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"velsiešu\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"dāņu\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"vācu\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"grieķu\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"angļu\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"Lielbritānijas angļu\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"spāņu\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"igauņu\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"basku\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"persiešu\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"somu\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"franču\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"frīzu\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"īru\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"galīciešu\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"ebreju\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"Hindi\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"horvātu\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"ungāru\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"islandiešu\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"itāļu\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"Japāņu\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"vācu\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"khmeru\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"kannādiešu\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"korejiešu\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"lietuviešu\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"latviešu\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"maķedoniešu\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"holandiešu\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"poļu\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"portugāļu\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"Brazīlijas portugāļu\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"rumāņu\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"krievu\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"slovāku\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"slovēņu\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"albāņu\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"serbu\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"serbu latīņu\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"zviedru\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"tamilu\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"telugu\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"taizemiešu\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"turku\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"ukraiņu\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"vjetnamiešu\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"vienkāršā ķīniešu\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"tradicionālā ķīniešu\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"Ievadiet korektu vērtību.\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"\"\n\"Ievadiet korektu vērtību, kas satur tikai burtus, numurus, apakšsvītras vai \"\n\"šķērssvītras.\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"Ievadiet korektu IPv4 adresi.\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"Ievadiet tikai numurus, atdalītus ar komatiem.\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"Nodrošiniet, ka vērtība ir %(limit_value)s (tā satur %(show_value)s).\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"Šai vērtībai jabūt mazākai vai vienādai ar %(limit_value)s.\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"Vērtībai jābūt lielākai vai vienādai ar %(limit_value)s.\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Vērtībai jāsatur vismaz %(limit_value)d rakstu zīmes (tā satur \"\n\"%(show_value)d).\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Vērtībai jāsatur ne vairāk kā %(limit_value)d rakstu zīmes (tā satur \"\n\"%(show_value)d).\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"%(field_name)s jābūt unikālam %(date_field)s %(lookup)s.\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"un\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"%(model_name)s ar nosaukumu %(field_label)s jau eksistē.\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"Nederīga izvēle: %r.\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"Šis lauks nevar neksistēt (būt null).\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"Šis lauks nevar būt tukšs\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Lauks ar tipu: %(field_type)s\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"Vesels skaitlis\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Boolean (True vai False)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"Simbolu virkne (līdz pat %(max_length)s)\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"Ar komatu atdalīti veselie skaitļi\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"Datums (bez laika)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"Datums (ar laiku)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"Decimāls skaitlis\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"E-pasta adrese\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"Faila ceļš\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"Plūstošā punkta skaitlis\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"Liels (8 baitu) vesels skaitlis\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"IP adrese\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"Boolean (jā, nē vai neviens)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"Teksts\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"Laiks\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"Modelis %(model)s ar primāro atslēgu %(pk)r neeksistē.\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"Ārējā atslēga (tipu nosaka lauks uz kuru attiecas)\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"Attiecība viens pret vienu\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"Attiecība daudzi pret daudziem\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"\"\n\"Lai iezīmētu vairāk par vienu, pieturiet \\\"Ctrl\\\" (\\\"Command\\\" uz Mac \"\n\"datora) taustiņu.\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"Šis lauks ir obligāts.\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"Ievadiet veselu skaitli.\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"Ievadiet skaitli.\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"Pārliecinieties, ka kopā nav vairāk par %s cipariem.\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"Pārliecinieties, ka aiz decimālās zīmes nav vairāk par %s cipariem.\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"Pārliecinieties, ka pirms decimālās zīmes nav vairāk par %s cipariem.\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"Ievadiet korektu datumu.\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"Ievadiet korektu laiku.\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"Ievadiet korektu datumu/laiku.\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"Nav nosūtīts fails. Pārbaudiet formas kodējuma tipu.\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"Netika nosūtīts fails.\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"Jūsu nosūtītais fails ir tukšs.\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\"Faila nosaukuma garums nedrīkst pārsniegt %(max)d rakstu zīmes (tas satur \"\n\"%(length)d).\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\"Augšupielādējiet korektu attēlu. Fails, ko augšupielādējāt, vai nu nav \"\n\"attēls, vai arī ir bojāts.\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"Ievadiet korektu URL adresi.\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"Izvēlieties korektu izvēli. %(value)s nav pieejamo izvēļu sarakstā.\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"Ievadiet sarakstu ar vērtībām.\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"Sakārtojums\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"Dzēst\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"Lūdzu izlabojiet dublicētos datus priekš %(field)s.\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"\"\n\"Lūdzu izlabojiet dublicētos datus laukam %(field)s, kam jābūt unikālam.\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\"Lūdzu izlabojiet dublicētos datus laukam %(field_name)s, kam jābūt unikālam \"\n\"priekš %(lookup)s iekš %(date_field)s.\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"Lūdzu izlabojiet dublicētās vērtības zemāk.\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"Iekļautā ārējā atslēga nesakrita ar vecāka elementa primāro atslēgu\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"Izvēlaties pareizu izvēli. Jūsu izvēlele neietilpst pieejamo sarakstā.\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"Izvēlieties pareizu izvēli. %s nav pieejamo izvēļu sarakstā.\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"\\\"%s\\\" ir nederīga vērtība priekš primārās atslēgas.\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"Izmainīt\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"Nezināms\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"Jā\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"Nē\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"jā,nē,varbūt\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"%(size)d baits\"\nmsgstr[1] \"%(size)d baiti\"\nmsgstr[2] \"%(size)d baitu\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"p.m.\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"a.m.\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"PM\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"AM\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"pusnakts\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"dienasvidus\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"pirmdiena\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"otrdiena\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"trešdiena\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"ceturdiena\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"piektdiena\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"sestdiena\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"svētdiena\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"pr\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"ot\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"tr\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"ce\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"pk\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"se\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"sv\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"janvāris\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"februāris\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"marts\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"aprīlis\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"maijs\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"jūnijs\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"jūlijs\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"augusts\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"septembris\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"oktobris\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"novembris\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"decembris\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"jan\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"feb\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"mar\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"apr\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"mai\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"jūn\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"jūl\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"aug\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"sep\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"okt\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"nov\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"dec\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"marts\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"aprīlis\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"maijs\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"jūnijs\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"jūlijs\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"janvāris\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"februāris\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"marts\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"aprīlis\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"maijs\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"jūnijs\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"jūlijs\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"augusts\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"septembris\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"oktobris\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"novembris\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"decembris\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"vai\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \"\"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"gads\"\nmsgstr[1] \"gadi\"\nmsgstr[2] \"gadu\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"mēnesis\"\nmsgstr[1] \"mēneši\"\nmsgstr[2] \"mēnesu\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"nedēļa\"\nmsgstr[1] \"nedēļas\"\nmsgstr[2] \"nedēļu\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"diena\"\nmsgstr[1] \"dienas\"\nmsgstr[2] \"dienu\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"stunda\"\nmsgstr[1] \"stundas\"\nmsgstr[2] \"stundu\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"minūte\"\nmsgstr[1] \"minūtes\"\nmsgstr[2] \"minūšu\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"minūtes\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \", %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/lv/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/conf/locale/lv/formats.py",
    "content": "# -*- encoding: utf-8 -*-\n# This file is distributed under the same license as the Django package.\n#\nfrom __future__ import unicode_literals\n\n# The *_FORMAT strings use the Django date format syntax,\n# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\nDATE_FORMAT = r'Y. \\g\\a\\d\\a j. F'\nTIME_FORMAT = 'H:i:s'\nDATETIME_FORMAT = r'Y. \\g\\a\\d\\a j. F, H:i:s'\nYEAR_MONTH_FORMAT = r'Y. \\g. F'\nMONTH_DAY_FORMAT = 'j. F'\nSHORT_DATE_FORMAT = r'j.m.Y'\nSHORT_DATETIME_FORMAT = 'j.m.Y H:i:s'\nFIRST_DAY_OF_WEEK = 1 #Monday\n\n# The *_INPUT_FORMATS strings use the Python strftime format syntax,\n# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior\n# Kept ISO formats as they are in first position\nDATE_INPUT_FORMATS = (\n    '%Y-%m-%d', '%d.%m.%Y', '%d.%m.%y', # '2006-10-25', '25.10.2006', '25.10.06'\n)\nTIME_INPUT_FORMATS = (\n    '%H:%M:%S',     # '14:30:59'\n    '%H:%M',     # '14:30'\n    '%H.%M.%S', # '14.30.59'\n    '%H.%M', # '14.30'\n)\nDATETIME_INPUT_FORMATS = (\n    '%Y-%m-%d %H:%M:%S',     # '2006-10-25 14:30:59'\n    '%Y-%m-%d %H:%M',        # '2006-10-25 14:30'\n    '%d.%m.%Y %H:%M:%S',     # '25.10.2006 14:30:59'\n    '%d.%m.%Y %H:%M',        # '25.10.2006 14:30'\n    '%d.%m.%Y',              # '25.10.2006'\n    '%d.%m.%y %H:%M:%S',     # '25.10.06 14:30:59'\n    '%d.%m.%y %H:%M',        # '25.10.06 14:30'\n    '%d.%m.%y %H.%M.%S',     # '25.10.06 14.30.59'\n    '%d.%m.%y %H.%M',        # '25.10.06 14.30'\n    '%d.%m.%y',              # '25.10.06'\n)\nDECIMAL_SEPARATOR = ','\nTHOUSAND_SEPARATOR = ' ' # Non-breaking space\nNUMBER_GROUPING = 3\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/mk/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <vvangelovski@gmail.com>, 2011, 2012.\n# vvangelovski <vvangelovski@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:47+0000\\n\"\n\"Last-Translator: vvangelovski <vvangelovski@gmail.com>\\n\"\n\"Language-Team: Macedonian (http://www.transifex.com/projects/p/django/\"\n\"language/mk/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: mk\\n\"\n\"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"Арапски\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"Азербејџански\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"Бугарски\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"Бенгалски\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"Босански\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"Каталански\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"Чешки\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"Велшки\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"Дански\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"Германски\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"Грчки\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"Англиски\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"Британскиот англиски\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"Есперанто\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"Шпански\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"Аргентински Шпански\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"Мексикански шпански\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"Никарагва шпански\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"Естонски\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"Баскиски\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"Персиски\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"Фински\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"Француски\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"Фризиски\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"Ирски\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"Галски\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"Еврејски\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"Хинди\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"Хрватски\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"Унгарски\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"Индонезиски\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"Исландски\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"Италијански\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"Јапонски\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"Грузиски\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"Казахстански\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"Кмер\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"Канада\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"Корејски\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"Литвански\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"Латвиски\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"Македонски\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"Малајалам\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"Монголски\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"Норвешка bokmål\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"Непалски\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"Холандски\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"Норвешки Нинорск\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"Пунџаби\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"Полски\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"Португалкски\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"Бразилско португалски\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"Романски\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"Руски\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"Словачки\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"Словенечки\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"Албански\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"Српски\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"Српски Латиница\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"Шведски\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"Свахили\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"Тамил\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"Телугу\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"Тајландски\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"Турски\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"Татарски\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"Украински\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"Урду\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"Виетнамски\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"Упростен кинески\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"Традиционален кинески\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"Внесете правилна вредност.\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"\"\n\"Внесете правилно кратко име (slug) кое се соддржи од букви, цифри, долна \"\n\"црта или тире.\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"Внесeте правилна IPv4 адреса.\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"Внесете валидна IPv6 адреса.\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"Внесете валидна IPv4 или IPv6 адреса.\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"Внесете само цифри одделени со запирки.\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"\"\n\"Осигурајте се дека оваа вредност е %(limit_value)s (моментално е \"\n\"%(show_value)s).\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"\"\n\"Осигурајте се дека оваа вредност е помала или еднаква со %(limit_value)s.\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"\"\n\"Осигурајте се дека оваа вредност е поголема или еднаква со %(limit_value)s.\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Осигурајте се дека оваа вредност има најмалку %(limit_value)d знаци (има \"\n\"%(show_value)d).\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Осигурајте се дека оваа вредност има најмногу %(limit_value)d знаци (има \"\n\"%(show_value)d).\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"%(field_name)s мора да биде уникатно за %(date_field)s %(lookup)s.\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"и\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"%(model_name)s со %(field_label)s веќе постои.\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"Вредноста %r не е валиден избор.\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"Оваа вредност неможе да биде null.\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"Ова поле не може да биде празно\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Поле од тип: %(field_type)s\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"Цел број\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"Вредноста '%s'  мора да биде цел број.\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"Вредноста '%s' мора да биде точно или неточно.\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Логичка (или точно или неточно)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"Збор (до %(max_length)s)\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"Целобројни вредности одделени со запирка\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"\"\n\"Вредноста '%s' има невалиден формат на датум. Таа мора да биде во формат \"\n\"ГГГГ-ММ-ДД.\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"\"\n\"Вредноста '%s' има правилен формат (ГГГГ-ММ-ДД), но тоа не е валиден датум.\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"Датум (без час)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\"Вредноста '%s' има невалиден формат. Таа мора да биде во ГГГГ-ММ-ДД HH:MM[:сс\"\n\"[uuuuuu].] [ВЗ] формат.\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\"Вредноста '%s' има правилен формат (ГГГГ-ММ-ДД HH:MM [:сс[uuuuuu].] [ВЗ]), \"\n\"но тоа не е валиден датум / време.\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"Датум (со час)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"Вредноста '%s' мора да биде децимален број.\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"Децимален број\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"Е-пошта\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"Патека на датотека\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"Вредноста '%s' мора да биде број со подвижна запирка.\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"Децимален број\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"Голем (8 бајти) цел број\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"IPv4 адреса\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"ИП адреса\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"Вредноста '%s' мора да биде празна, точно или неточно.\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"Логичка (точно,неточно или празно)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"Позитивен цел број\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"Позитивен мал цел број\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"Скратено име (до %(max_length)s)\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"Мал цел број\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"Текст\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"\"\n\"Вредноста '%s' има невалиден формат. Таа мора да биде во HH:MM[:сс[uuuuuu].] \"\n\"Формат.\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\"Вредноста '%s' има правилен формат (ЧЧ:ММ[:сс[uuuuuu].]), Но тоа не е \"\n\"валидно време.\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"Час\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"Датотека\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"Слика\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"Модел %(model)s со примарен клуч %(pk)r не постои.\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"Надворешен клуч (типот е одреден според сврзаното поле)\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"Еден-према-еден релација\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"Повеќе-према-повеќе релација\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"\"\n\"Држете го „Control“, или „Command“ на Мекинтош, за да изберете повеќе од \"\n\"едно.\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"Ова поле е задолжително.\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"Внеси цел број.\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"Внесете број.\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"Осигурајте се дека вкупно нема повеќе од %s цифри.\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"Осигурајте се дека нема повеќе од %s децимални места.\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"Осигурајте се дека нема повеќе од %s цифри пред децималната запирка.\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"Внесете правилен датум.\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"Внесете правилно време.\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"Внесете правилен датум со време.\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"Не беше пратена датотека. Проверете го типот на енкодирање на формата.\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"Не беше пратена датотека.\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"Пратената датотека е празна.\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\"Осигурајте се дека ова име на датотека има најмногу %(max)d знаци (има \"\n\"%(length)d).\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"Или прикачете датотека или оттштиклирајте го полето.\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\"Качете валидна слика. Датотеката која ја качивте или не беше слика или беше \"\n\"расипана датотеката.\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"Внесете правилна веб адреса.\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"Внесете валиден избор. %(value)s не е еден од можните избори.\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"Внесете листа на вредности.\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"Редослед\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"Избриши\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"Ве молам поправете ја дуплираната вредност за  %(field)s.\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"\"\n\"Ве молам поправете ја дуплираната вредност за %(field)s, која мора да биде \"\n\"уникатна.\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\"Ве молам поправете ја дуплираната вредност за %(field_name)s која мора да \"\n\"биде уникатна за %(lookup)s во %(date_field)s.\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"Ве молам поправете ги дуплираните вредности подолу.\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"\"\n\"Надворешниот клуч на вгезденото поле не се совпаѓа со примарниот клуч на \"\n\"родителската инстанца.\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"Изберете правилно. Тоа не е еден од можните избори.\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"Внесете правилно. %s не е еден од достапните вредности.\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"\\\"%s\\\" не е правилна вредност за примарен клуч.\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\"%(datetime)s не може да се толкува во временска зона %(current_timezone)s;  \"\n\"можеби е двосмислена или не постои.\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"Моментално\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"Измени\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"Исчисти\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"Непознато\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"Да\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"Не\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"да, не, можеби\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"%(size)d бајт\"\nmsgstr[1] \"%(size)d бајти\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s KB\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s MB\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s GB\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s TB\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s PB\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"попладне\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"наутро\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"попладне\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"наутро\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"полноќ\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"пладне\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"Понеделник\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"Вторник\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"Среда\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"Четврток\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"Петок\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"Сабота\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"Недела\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"Пон\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"Вто\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"Сре\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"Чет\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"Пет\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"Саб\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"Нед\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"Јануари\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"Февруари\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"Март\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"Април\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"Мај\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"Јуни\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"Јули\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"август\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"Септември\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"Октомври\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"Ноември\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"Декември\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"јан\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"фев\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"мар\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"апр\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"мај\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"јун\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"јул\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"авг\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"сеп\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"окт\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"ное\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"дек\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"Јан.\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"Фев.\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"Март\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"Април\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"Мај\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"Јуни\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"Јули\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"Авг.\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"Септ.\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"Окт.\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"Ное.\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"Дек.\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"Јануари\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"Февруари\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"Март\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"Април\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"Мај\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"Јуни\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"Јули\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"Август\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"Септември\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"Октомври\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"Ноември\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"Декември\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"%(truncated_text)s...\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"или\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \",\"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"година\"\nmsgstr[1] \"години\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"месец\"\nmsgstr[1] \"месеци\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"седмица\"\nmsgstr[1] \"седмици\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"ден\"\nmsgstr[1] \"дена\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"час\"\nmsgstr[1] \"часа\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"минута\"\nmsgstr[1] \"минути\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"минути\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \", %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"Индекси на директориуми не се дозволени тука.\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\\\"%(path)s\\\" не постои\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"Индекс на %(directory)s\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"Не е дадена година\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"Не е даден месец\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"Не е даден ден\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"Не е дадена недела\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"Нема достапни %(verbose_name_plural)s\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\"Идни %(verbose_name_plural)s не се достапни бидејќи %(class_name)s.\"\n\"allow_future е False.\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"Невалиден текст за датум '%(datestr)s' даден формат '%(format)s'\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"Нема %(verbose_name)s што се совпаѓа со пребарувањето\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"\"\n\"Страницата не е \\\"последна\\\", ниту пак може да се конвертира во еден цел \"\n\"број.\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"Празна листа и '%(class_name)s .allow_empty' е False.\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/mk/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/conf/locale/mk/formats.py",
    "content": "# -*- encoding: utf-8 -*-\n# This file is distributed under the same license as the Django package.\n#\n\n# The *_FORMAT strings use the Django date format syntax,\n# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\nDATE_FORMAT = 'd F Y'\nTIME_FORMAT = 'H:i:s'\nDATETIME_FORMAT = 'j. F Y. H:i'\nYEAR_MONTH_FORMAT = 'F Y.'\nMONTH_DAY_FORMAT = 'j. F'\nSHORT_DATE_FORMAT = 'j.m.Y.'\nSHORT_DATETIME_FORMAT = 'j.m.Y. H:i'\nFIRST_DAY_OF_WEEK = 1\n\n# The *_INPUT_FORMATS strings use the Python strftime format syntax,\n# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior\nDATE_INPUT_FORMATS = (\n    '%d.%m.%Y.', '%d.%m.%y.',       # '25.10.2006.', '25.10.06.'\n    '%d. %m. %Y.', '%d. %m. %y.',   # '25. 10. 2006.', '25. 10. 06.'\n)\n\nDATETIME_INPUT_FORMATS = (\n    '%d.%m.%Y. %H:%M:%S',     # '25.10.2006. 14:30:59'\n    '%d.%m.%Y. %H:%M',        # '25.10.2006. 14:30'\n    '%d.%m.%Y.',              # '25.10.2006.'\n    '%d.%m.%y. %H:%M:%S',     # '25.10.06. 14:30:59'\n    '%d.%m.%y. %H:%M',        # '25.10.06. 14:30'\n    '%d.%m.%y.',              # '25.10.06.'\n    '%d. %m. %Y. %H:%M:%S',   # '25. 10. 2006. 14:30:59'\n    '%d. %m. %Y. %H:%M',      # '25. 10. 2006. 14:30'\n    '%d. %m. %Y.',            # '25. 10. 2006.'\n    '%d. %m. %y. %H:%M:%S',   # '25. 10. 06. 14:30:59'\n    '%d. %m. %y. %H:%M',      # '25. 10. 06. 14:30'\n    '%d. %m. %y.',            # '25. 10. 06.'\n)\n\nDECIMAL_SEPARATOR = ','\nTHOUSAND_SEPARATOR = '.'\nNUMBER_GROUPING = 3\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/ml/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Jeffy  <jeffymj@gmail.com>, 2012.\n# Rajeesh Nair <rajeeshrnair@gmail.com>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:47+0000\\n\"\n\"Last-Translator: Rajeesh Nair <rajeeshrnair@gmail.com>\\n\"\n\"Language-Team: Malayalam (http://www.transifex.com/projects/p/django/\"\n\"language/ml/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ml\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"അറബിക്\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"അസര്‍ബൈജാനി\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"ബള്‍ഗേറിയന്‍\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"ബംഗാളി\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"ബോസ്നിയന്‍\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"കാറ്റലന്‍\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"ചെക്\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"വെല്‍ഷ്\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"ഡാനിഷ്\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"ജര്‍മന്‍\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"ഗ്രീക്ക്\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"ഇംഗ്ളീഷ്\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"ബ്രിട്ടീഷ് ഇംഗ്ളീഷ്\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"എസ്പെരാന്റോ\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"സ്പാനിഷ്\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"അര്‍ജന്റീനിയന്‍ സ്പാനിഷ്\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"മെക്സിക്കന്‍ സ്പാനിഷ്\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"നിക്കരാഗ്വന്‍ സ്പാനിഷ്\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"എസ്ടോണിയന്‍ സ്പാനിഷ്\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"ബാസ്ക്യു\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"പേര്‍ഷ്യന്‍\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"ഫിന്നിഷ്\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"ഫ്രെഞ്ച്\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"ഫ്രിസിയന്‍\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"ഐറിഷ്\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"ഗലിഷ്യന്‍\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"ഹീബ്റു\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"ഹിന്ദി\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"ക്രൊയേഷ്യന്‍\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"ഹംഗേറിയന്‍\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"ഇന്തൊനേഷ്യന്‍\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"ഐസ്ലാന്‍ഡിക്\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"ഇറ്റാലിയന്‍\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"ജാപ്പനീസ്\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"ജോര്‍ജിയന്‍\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"കസാക്\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"ഖ്മേര്‍\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"കന്നഡ\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"കൊറിയന്‍\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"ലിത്വാനിയന്‍\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"ലാറ്റ്വിയന്‍\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"മാസിഡോണിയന്‍\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"മലയാളം\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"മംഗോളിയന്‍\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"നോര്‍വീജിയന്‍ ബൊക്മാല്‍\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"നേപ്പാളി\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"ഡച്ച്\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"നോര്‍വീജിയന്‍ നിനോഷ്ക്\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"പഞ്ചാബി\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"പോളിഷ്\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"പോര്‍ചുഗീസ്\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"ബ്റസീലിയന്‍ പോര്‍ചുഗീസ്\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"റൊമാനിയന്‍\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"റഷ്യന്‍\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"സ്ളൊവാക്\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"സ്ളൊവേനിയന്‍\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"അല്‍ബേനിയന്‍\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"സെര്‍ബിയന്‍\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"സെര്‍ബിയന്‍ ലാറ്റിന്‍\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"സ്വീഡിഷ്\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"സ്വാഹിലി\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"തമിഴ്\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"തെലുങ്ക്\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"തായ്\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"ടര്‍ക്കിഷ്\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"തൊതാര്‍\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"യുക്രേനിയന്‍\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"ഉര്‍ദു\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"വിയറ്റ്നാമീസ്\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"ലഘു ചൈനീസ്\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"പരമ്പരാഗത ചൈനീസ്\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"ശരിയായ മൂല്യം നല്കണം.\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"ശരിയായ സ്ളഗ് നല്കുക (അക്ഷരങ്ങള്‍, അക്കങ്ങള്‍, അണ്ടര്‍സ്കോര്‍, ഹൈഫന്‍ എന്നിവ മാത്രം ചേര്‍ന്നത്).\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"ശരിയായ IPv4 വിലാസം നല്കണം\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"ശരിയായ ഒരു IPv6 വിലാസം നല്കുക.\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"ശരിയായ ഒരു IPv4 വിലാസമോ IPv6 വിലാസമോ നല്കുക.\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"അക്കങ്ങള്‍ മാത്രം (കോമയിട്ടു വേര്‍തിരിച്ചത്)\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"ഇത് %(limit_value)s ആവണം. (ഇപ്പോള്‍ %(show_value)s).\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"ഇത് %(limit_value)s-ഓ അതില്‍ കുറവോ ആവണം\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"ഇത് %(limit_value)s-ഓ അതില്‍ കൂടുതലോ ആവണം\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"ഇതിനു ഏറ്റവും കുറഞ്ഞത് %(limit_value)d അക്ഷരങ്ങള്‍ വേണം. (ഇപ്പോള്‍ %(show_value)d \"\n\"അക്ഷരങ്ങളുണ്ട്.)\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"ഇതിനു പരമാവധി %(limit_value)d അക്ഷരങ്ങളേ ഉള്ളൂ എന്നു ഉറപ്പാക്കുക. (ഇപ്പോള്‍ \"\n\"%(show_value)d അക്ഷരങ്ങളുണ്ട്.)\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"%(date_field)s %(lookup)s-നു %(field_name)s ആവര്‍ത്തിക്കാന്‍ പാടില്ല.\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"ഉം\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"%(field_label)s-ഓടു കൂടിയ %(model_name)s നിലവിലുണ്ട്.\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"%r അനുയോജ്യമല്ല.\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"ഈ കളം (ഫീല്‍ഡ്) ഒഴിച്ചിടരുത്.\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"ഈ കളം (ഫീല്‍ഡ്) ഒഴിച്ചിടരുത്.\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"%(field_type)s എന്ന തരത്തിലുള്ള കളം (ഫീല്‍ഡ്)\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"പൂര്‍ണ്ണസംഖ്യ\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"'%s' മൂല്യം ഒരു പൂര്‍ണസംഖ്യ ആയിരിക്കണം.\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"'%s' മൂല്യം True അഥവാ False ആയിരിക്കണം.\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"ശരിയോ തെറ്റോ (True അഥവാ False)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"സ്ട്രിങ്ങ് (%(max_length)s വരെ നീളമുള്ളത്)\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"കോമയിട്ട് വേര്‍തിരിച്ച സംഖ്യകള്‍\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"'%s' മൂല്യം തെറ്റായ മാതൃകയിലാണ്. അത് YYYY-MM-DD എന്ന മാതൃകയിലാണ് നല്കേണ്ടത്.\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"'%s' മൂല്യം ശരിയായ മാതൃകയിലാണ് (YYYY-MM-DD) പക്ഷേ തീയതി തെറ്റാണു്.\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"തീയതി (സമയം വേണ്ട)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\"'%s' മൂല്യം തെറ്റായ മാതൃകയിലാണ്. അത് YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ] എന്ന \"\n\"മാതൃകയിലാണ് നല്കേണ്ടത്.\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\"'%s' മൂല്യം ശരിയായ മാതൃകയിലാണ് (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) പക്ഷേ തീയതിയും \"\n\"സമയവും തെറ്റാണു്.\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"തീയതി (സമയത്തോടൊപ്പം)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"'%s' മൂല്യം ഒരു ദശാംശസംഖ്യ decimal ആയിരിക്കണം.\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"ദശാംശസംഖ്യ\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"ഇ-മെയില്‍ വിലാസം\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"ഫയല്‍ സ്ഥാനം\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"'%s' മൂല്യം ഒരു ദശാംശസംഖ്യ float ആയിരിക്കണം.\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"ദശാംശസംഖ്യ\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"8 ബൈറ്റ് പൂര്‍ണസംഖ്യ.\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"IPv4 വിലാസം\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"IP വിലാസം\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"'%s' മൂല്യം None, True, False എന്നിവയില്‍ ഏതെങ്കിലും ഒന്നായിരിക്കണം.\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"ശരിയോ തെറ്റോ എന്നു മാത്രം (True, False, None എന്നിവയില്‍ ഏതെങ്കിലും ഒന്ന്)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"ധന പൂര്‍ണസംഖ്യ\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"ധന ഹ്രസ്വ പൂര്‍ണസംഖ്യ\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"സ്ലഗ്  (%(max_length)s വരെ)\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"ഹ്രസ്വ പൂര്‍ണസംഖ്യ\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"ടെക്സ്റ്റ്\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"'%s' മൂല്യം ശരിയായ മാതൃകയിലല്ല. അത് HH:MM[:ss[.uuuuuu]] എന്ന മാതൃകയിലാവണം.\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\"'%s' മൂല്യം ശരിയായ മാതൃകയിലാണ് (HH:MM[:ss[.uuuuuu]]) പക്ഷേ തെറ്റായ സമയത്തെ \"\n\"സൂചിപ്പിക്കുന്നു.\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"സമയം\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"URL(വെബ്-വിലാസം)\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"ഫയല്‍\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"ചിത്രം\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"%(pk)r എന്ന pk ഉള്ള %(model)s എന്ന മോഡല്‍ നിലവിലില്ല.\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"ഫോറിന്‍ കീ (ടൈപ്പ് ബന്ധപ്പെട്ട ഫീല്‍ഡില്‍ നിന്നും നിര്‍ണ്ണയിക്കുന്നതാണ്)\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"വണ്‍-ടു-വണ്‍ ബന്ധം\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"മെനി-ടു-മെനി ബന്ധം\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"\\\"Control\\\" എന്ന കീ അമര്‍ത്തിപ്പിടിക്കുക. (Macലാണെങ്കില്‍  \\\"Command\\\").\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"ഈ കള്ളി(ഫീല്‍ഡ്) നിര്‍ബന്ധമാണ്.\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"ഒരു പൂര്‍ണസംഖ്യ നല്കുക.\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"ഒരു സംഖ്യ നല്കുക.\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"മൊത്തം %s ലേറെ അക്കങ്ങള്‍ ഇല്ലെന്ന് ഉറപ്പു വരുത്തുക.\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"%s ലേറെ ദശാംശസ്ഥാനങ്ങള്‍ ഇല്ലെന്ന് ഉറപ്പു വരുത്തുക.\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"ദശാംശബിന്ദുവിനു മുമ്പ് %sലേറെ അക്കങ്ങള്‍ ഇല്ലെന്നു ഉറപ്പു വരുത്തുക.\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"ശരിയായ തീയതി നല്കുക.\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"ശരിയായ സമയം നല്കുക.\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"ശരിയായ തീയതിയും സമയവും നല്കുക.\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"ഫയലൊന്നും ലഭിച്ചിട്ടില്ല. ഫോമിലെ എന്‍-കോഡിംഗ് പരിശോധിക്കുക.\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"ഫയലൊന്നും ലഭിച്ചിട്ടില്ല.\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"ലഭിച്ച ഫയല്‍ ശൂന്യമാണ്.\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\"ഈ ഫയലിന്റെ പേര് പരമാവധി %(max)d അക്ഷരങ്ങളുള്ളതായിരിക്കണം. (ഇപ്പോള്‍ %(length)d അക്ഷരങ്ങള്‍ \"\n\"ഉണ്ട്).\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"\"\n\"ഒന്നുകില്‍ ഫയല്‍ സമര്‍പ്പിക്കണം, അല്ലെങ്കില്‍ ക്ളിയര്‍ എന്ന ചെക്ബോക്സ് ടിക് ചെയ്യണം. ദയവായി രണ്ടും \"\n\"കൂടി ചെയ്യരുത്.\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\"ശരിയായ ചിത്രം അപ് ലോഡ് ചെയ്യുക. നിങ്ങള്‍ നല്കിയ ഫയല്‍ ഒന്നുകില്‍ ഒരു ചിത്രമല്ല, അല്ലെങ്കില്‍ \"\n\"വികലമാണ്.\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"ശരിയായ URL നല്കണം.\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"യോഗ്യമായത് തെരഞ്ഞെടുക്കുക. %(value)s ലഭ്യമായവയില്‍ ഉള്‍പ്പെടുന്നില്ല.\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"മൂല്യങ്ങളുടെ പട്ടിക(ലിസ്റ്റ്) നല്കുക.\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"ക്രമം\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"ഡിലീറ്റ്\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"%(field)s-നായി നല്കുന്ന വിവരം ആവര്‍ത്തിച്ചത് ദയവായി തിരുത്തുക.\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"%(field)s-നായി നല്കുന്ന വിവരം ആവര്‍ത്തിക്കാന്‍ പാടില്ല. ദയവായി തിരുത്തുക.\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\"%(date_field)s ലെ %(lookup)s നു വേണ്ടി %(field_name)s നു നല്കുന്ന വിവരം ആവര്‍ത്തിക്കാന്‍ \"\n\"പാടില്ല. ദയവായി തിരുത്തുക.\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"താഴെ കൊടുത്തവയില്‍ ആവര്‍ത്തനം ഒഴിവാക്കുക.\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"ഇന്‍ലൈനായി നല്കിയ ഫോറിന്‍ കീ മാത്രു വസ്തുവിന്റെ പ്രാഥമിക കീയുമായി യോജിക്കുന്നില്ല.\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"യോഗ്യമായത് തെരഞ്ഞെടുക്കുക. നിങ്ങള്‍ നല്കിയത് ലഭ്യമായവയില്‍ ഉള്‍പ്പെടുന്നില്ല.\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"യോഗ്യമായത് തെരഞ്ഞെടുക്കുക. %s തന്നിരിക്കുന്നവയില്‍ ഉള്‍പ്പെടുന്നില്ല.\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"\\\"%s\\\" പ്രാഥമിക കീ ആവാന്‍ അനുയോജ്യമായ മൂല്യമല്ല.\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\"%(datetime)s %(current_timezone)s എന്ന സമയമേഖലയിലേക്ക് വ്യാഖ്യാനിക്കാന്‍ \"\n\"സാധിച്ചിട്ടില്ല; ഇത് ഒന്നുകില്‍ അവ്യക്തമാണ്, അല്ലെങ്കില്‍ നിലവിലില്ല.\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"നിലവിലുള്ളത്\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"മാറ്റുക\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"കാലിയാക്കുക\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"അജ്ഞാതം\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"അതെ\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"അല്ല\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"ഉണ്ട്, ഇല്ല, ഉണ്ടായേക്കാം\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"%(size)d ബൈറ്റ്\"\nmsgstr[1] \"%(size)d ബൈറ്റുകള്‍\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s കെ.ബി\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s എം.ബി\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s ജി.ബി\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s ടി.ബി\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s പി.ബി\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"പി. എം (ഉച്ചയ്ക്കു ശേഷം) \"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"എ. എം (ഉച്ചയ്ക്കു മുമ്പ്)\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"പി. എം (ഉച്ചയ്ക്കു ശേഷം) \"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"എ. എം (ഉച്ചയ്ക്കു മുമ്പ്)\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"അര്‍ധരാത്രി\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"ഉച്ച\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"തിങ്കള്‍\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"ചൊവ്വ\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"ബുധന്‍\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"വ്യാഴം\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"വെള്ളി\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"ശനി\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"ഞായര്‍\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"തിങ്കള്‍\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"ചൊവ്വ\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"ബുധന്‍\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"വ്യാഴം\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"വെള്ളി\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"ശനി\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"ഞായര്‍\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"ജനുവരി\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"ഫെബ്രുവരി\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"മാര്‍ച്ച്\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"ഏപ്രില്‍\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"മേയ്\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"ജൂണ്‍\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"ജൂലൈ\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"ആഗസ്ത്\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"സെപ്തംബര്‍\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"ഒക്ടോബര്‍\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"നവംബര്‍\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"ഡിസംബര്‍\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"ജനു.\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"ഫെബ്രു.\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"മാര്‍ച്ച്\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"ഏപ്രില്‍\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"മേയ്\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"ജൂണ്‍\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"ജൂലൈ\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"ആഗസ്ത്\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"സെപ്ടം.\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"ഒക്ടോ.\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"നവം.\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"ഡിസം.\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"ജനു.\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"ഫെബ്രു.\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"മാര്‍ച്ച്\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"ഏപ്രില്‍\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"മേയ്\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"ജൂണ്‍\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"ജൂലൈ\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"ആഗ.\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"സെപ്തം.\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"ഒക്ടോ.\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"നവം.\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"ഡിസം.\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"ജനുവരി\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"ഫെബ്രുവരി\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"മാര്‍ച്ച്\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"ഏപ്രില്‍\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"മേയ്\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"ജൂണ്‍\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"ജൂലൈ\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"ആഗസ്ത്\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"സെപ്തംബര്‍\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"ഒക്ടോബര്‍\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"നവംബര്‍\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"ഡിസംബര്‍\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"%(truncated_text)s...\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"അഥവാ\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \", \"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"വര്‍ഷം\"\nmsgstr[1] \"വര്‍ഷങ്ങള്‍\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"മാസം\"\nmsgstr[1] \"മാസങ്ങള്‍\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"ആഴ്ച്ച\"\nmsgstr[1] \"ആഴ്ച്ചകള്‍\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"ദിവസം\"\nmsgstr[1] \"ദിവസങ്ങള്‍\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"മണിക്കൂര്‍\"\nmsgstr[1] \"മണിക്കൂറുകള്‍\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"മിനുട്ട്\"\nmsgstr[1] \"മിനുട്ടുകള്‍\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"മിനുട്ടുകള്‍\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \", %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"ഡയറക്ടറി സൂചികകള്‍ ഇവിടെ അനുവദനീയമല്ല.\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\\\"%(path)s\\\" നിലവിലില്ല\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"%(directory)s യുടെ സൂചിക\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"വര്‍ഷം പരാമര്‍ശിച്ചിട്ടില്ല\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"മാസം പരാമര്‍ശിച്ചിട്ടില്ല\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"ദിവസം പരാമര്‍ശിച്ചിട്ടില്ല\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"ആഴ്ച പരാമര്‍ശിച്ചിട്ടില്ല\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"%(verbose_name_plural)s ഒന്നും ലഭ്യമല്ല\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\"%(class_name)s.allow_future ന്  False എന്നു നല്കിയിട്ടുള്ളതിനാല്‍  Future \"\n\"%(verbose_name_plural)s ഒന്നും ലഭ്യമല്ല.\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"'%(datestr)s' എന്ന തെറ്റായ തീയതി '%(format)s' എന്ന മാതൃകയില്‍.\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"ചോദ്യത്തിനു ചേരുന്ന് %(verbose_name)s ഇല്ല\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"\"\n\"പേജ് നമ്പറായി സംഖ്യയാക്കി മാറ്റാന്‍ കഴിയുന്ന മൂല്യമോ 'last' എന്ന മൂല്യമോ അല്ല നല്കിയിട്ടുള്ളത്.\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"ലിസ്റ്റ് കാലിയുമാണ് %(class_name)s.allow_empty എന്നത് False എന്നു നല്കിയിട്ടുമുണ്ട്.\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/ml/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/conf/locale/ml/formats.py",
    "content": "# -*- encoding: utf-8 -*-\n# This file is distributed under the same license as the Django package.\n#\n\n# The *_FORMAT strings use the Django date format syntax,\n# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\nDATE_FORMAT = 'N j, Y'\nTIME_FORMAT = 'P'\nDATETIME_FORMAT = 'N j, Y, P'\nYEAR_MONTH_FORMAT = 'F Y'\nMONTH_DAY_FORMAT = 'F j'\nSHORT_DATE_FORMAT = 'm/d/Y'\nSHORT_DATETIME_FORMAT = 'm/d/Y P'\nFIRST_DAY_OF_WEEK = 0 # Sunday\n\n# The *_INPUT_FORMATS strings use the Python strftime format syntax,\n# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior\n# Kept ISO formats as they are in first position\nDATE_INPUT_FORMATS = (\n    '%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', # '2006-10-25', '10/25/2006', '10/25/06'\n    # '%b %d %Y', '%b %d, %Y',            # 'Oct 25 2006', 'Oct 25, 2006'\n    # '%d %b %Y', '%d %b, %Y',            # '25 Oct 2006', '25 Oct, 2006'\n    # '%B %d %Y', '%B %d, %Y',            # 'October 25 2006', 'October 25, 2006'\n    # '%d %B %Y', '%d %B, %Y',            # '25 October 2006', '25 October, 2006'\n)\nDATETIME_INPUT_FORMATS = (\n    '%Y-%m-%d %H:%M:%S',     # '2006-10-25 14:30:59'\n    '%Y-%m-%d %H:%M',        # '2006-10-25 14:30'\n    '%Y-%m-%d',              # '2006-10-25'\n    '%m/%d/%Y %H:%M:%S',     # '10/25/2006 14:30:59'\n    '%m/%d/%Y %H:%M',        # '10/25/2006 14:30'\n    '%m/%d/%Y',              # '10/25/2006'\n    '%m/%d/%y %H:%M:%S',     # '10/25/06 14:30:59'\n    '%m/%d/%y %H:%M',        # '10/25/06 14:30'\n    '%m/%d/%y',              # '10/25/06'\n)\nDECIMAL_SEPARATOR = '.'\nTHOUSAND_SEPARATOR = ','\nNUMBER_GROUPING = 3\n\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/mn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jacara <baskhuujacara@gmail.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# jargalan <jargalanch@gmail.com>, 2011.\n# Tsolmon <mnts26@gmail.com>, 2011.\n# Анхбаяр Анхаа <l.ankhbayar@gmail.com>, 2011-2012.\n# Баясгалан Цэвлээ <bayasaa_7672@yahoo.com>, 2011.\n# Ганзориг БП <ganzo.bp@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:47+0000\\n\"\n\"Last-Translator: Анхбаяр Анхаа <l.ankhbayar@gmail.com>\\n\"\n\"Language-Team: Mongolian (http://www.transifex.com/projects/p/django/\"\n\"language/mn/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: mn\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"Африк\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"Араб\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"Азербажан\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"Болгар\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"Беларус\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"Бенгал\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"Бэрэйтон \"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"Босни\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"Каталан\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"Чех\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"Уэльс\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"Дани\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"Герман\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"Грек\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"Англи\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"Британи Англи\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"Эсперанто\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"Испани\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"Аргентинийн Испани\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"Мексикийн Испани\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"Никрагуан Испани\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"Венесуэлийн Спани\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"Эстони\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"Баск\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"Перс\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"Финлянд\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"Франц\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"Фриз\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"Ирланд\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"Галици\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"Еврэй\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"Хинди\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"Хорват\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"Унгар\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"Interlingua\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"Индонези\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"Исланд\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"Итали\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"Япон\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"Гүрж\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"Казак\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"Кхмер\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"Канад\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"Солонгос\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"Лүксенбүргиш\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"Литва\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"Латви\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"Македон\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"Малайз\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"Монгол\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"Норвеги бокмал\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"Непал\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"Голланд\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"Норвегийн нюнорск\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"Панжаби\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"Польш\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"Португал\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"Бразилийн Португали\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"Румын\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"Орос\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"Словак\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"Словен\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"Альбани\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"Серби\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"Серби латин\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"Щвед\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"Савахил\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"Тамил\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"Тэлүгү\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"Тайланд\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"Турк\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"Татар\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"Удмурт\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"Украйн\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"Урду\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"Вьетнам\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"Хятад (хялбаршуулсан) \"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"Хятад (уламжлалт)\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"Зөв утга оруулна уу.\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"Зөв email хаяг оруулна уу\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"\"\n\"Үсэг, тоо, доогуур зураас, дундуур зурааснаас бүрдэх зөв 'slug' оруулна уу.\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"Зөв IPv4 хаяг оруулна уу. \"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"Зөв IPv6  хаяг оруулна уу.\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"Зөв IPv4 эсвэл IPv6 хаяг оруулна уу.\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"Зөвхөн таслалаар тусгаарлагдсан цифр оруулна уу.\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"\"\n\"Энэ утга хамгийн ихдээ %(limit_value)s байх ёстой. (одоо %(show_value)s \"\n\"байна)\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"Энэ утга %(limit_value)s -с бага эсвэл тэнцүү байх ёстой.\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"Энэ утга %(limit_value)s -с их эсвэл тэнцүү байх нөхцлийг хангана уу.\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Энэ утгын тэмдэгтийн тоо %(limit_value)d -с бага байх ёстой. (одоо \"\n\"%(show_value)d байна)\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Энэ утгын тэмдэгтийн тоо %(limit_value)d -с их байх ёстой. (одоо \"\n\"%(show_value)d байна)\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"\"\n\"%(field_name)s талбарт давхардахгүй %(date_field)s  %(lookup)s оруулна.\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"ба\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"%(field_label)s-тэй %(model_name)s-ийг аль хэдийнэ оруулсан байна.\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"Энэ утга %r буруу сонголт байна.\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"Энэ хэсгийг хоосон орхиж болохгүй.\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"Энэ хэсэг хоосон байж болохгүй.\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Талбарийн төрөл нь : %(field_type)s\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"Бүхэл тоо\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"'%s' талбарт заавал бүхэн тоон утга оруулна.\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"'%s' талбарт заавал True эсвэл False ийн аль нэг нь байна.\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Boolean (Үнэн худлын аль нэг нь)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"Бичвэр (%(max_length)s хүртэл)\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"Таслалаар тусгаарлагдсан бүхэл тоо\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"'%s' утга буруу форматтай байна. Формат нь YYYY-MM-DD байх хэрэгтэй.\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"\"\n\"'%s' утга зөв форматтай байна. Гэвч огнооны хэсэгийн формат буруу байна. \"\n\"Формат нь (YYYY-MM-DD) байх хэрэгтэй.\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"Огноо (цаггүй)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\"'%s' утга буруу форматтай байна. Формат нь заавал YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] байх хэрэгтэй.\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\"'%s' утга зөв форматтай байна(YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) гэвч буруу \"\n\"огноо/цаг байна. \"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"Огноо (цагтай)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"'%s' заавал decimal утга байх.\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"Аравтын бутархайт тоо\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"Цахим шуудангийн хаяг\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"Файлын зам \"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"'%s' заавал float утга байх.\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"Хөвөгч таслалтай тоо\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"Том (8 байт) бүхэл тоо\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"IPv4 хаяг\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"IP хаяг\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"'%s' заавал  None, True эсвэл False утга авах.\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"Boolean (Үнэн, худал, эсвэл юу ч биш)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"Бүхэл тоох утга\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"Бага бүхэл тоон утга\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"Слаг (ихдээ %(max_length)s )\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"Бага тоон утна\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"Текст\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"\"\n\"'%s' утга буруу форматтай байна. Формат нь заавал HH:MM[:ss[.uuuuuu]] байх \"\n\"хэрэгтэй.\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\"'%s' утгын формат нь зөв байна гэвч цагийн формат нь буруу байна. Цагийн \"\n\"формат заавал (HH:MM[:ss[.uuuuuu]]) байна.\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"Цаг\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"Файл\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"Зураг\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \" pk %(pk)r-тай %(model)s модель байхгүй байна.\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"Гадаад түлхүүр (тодорхой төрлийн холбоос талбар)\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"Нэг-нэг холбоос\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"Олон-олон холбоос\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"\"\n\"Олон утга сонгохын тулд \\\"Control\\\" (Mac дээр \\\"Command\\\")  товчыг ашиглана.\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"Энэ талбарыг бөглөх шаардлагатай.\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"Бүхэл тоон утга оруулна уу.\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"Тоон утга оруулна уу.\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"Энд нийтдээ %s -аас олонгүй цифр байх ёстой.\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"Энд %s -аас олонгүй бутархайн орон байх ёстой. \"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"Энд бутархайн таслалаас өмнө %s-аас олонгүй цифр байх ёстой.\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"Зөв огноо оруулна уу.\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"Зөв цаг оруулна уу.\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"Огноо/цаг-ыг зөв оруулна уу.\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"Файл оруулаагүй байна. Маягтаас кодлох төрлийг чагтал. \"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"Файл оруулаагүй байна.\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"Оруулсан файл хоосон байна. \"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\"Энэ файлын нэрний урт %(length)d байна. Файлын нэр хамгийн ихдээ %(max)d \"\n\"тэмдэгтээс бүрдэх нөхцлийг хангана уу.\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"\"\n\"Нэг бол сонголтын чягтыг авах эсвэл файл оруулна уу. Зэрэг хэрэгжих \"\n\"боломжгүй.\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\"Зөв зураг оруулна уу. Таны оруулсан файл нэг бол зургийн файл биш эсвэл \"\n\"гэмтсэн зураг байна.\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"Зөв, хүчинтэй хаяг (URL) оруулна уу.\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"Зөв сонголт хийнэ үү. %(value)s гэсэн сонголт байхгүй байна.\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"Өгөгдхүүний жагсаалтаа оруулна уу.\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"Эрэмбэлэх\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"Устгах\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"%(field)s хэсэг дэх давхардсан утгыг засварлана уу. \"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"\"\n\"%(field)s хэсэг дэх давхардсан утгыг засварлана уу.  Түүний утгууд \"\n\"давхардахгүй байх ёстой.\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\"%(field_name)s хэсэг дэх давхардсан утгыг засварлана уу. %(date_field)s-н \"\n\"%(lookup)s хувьд давхардахгүй байх ёстой.\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"Доорх давхардсан утгуудыг засна уу.\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"\"\n\"Inline обектийн гадаад түлхүүр Эцэг обектийн түлхүүртэй таарахгүй байна. \"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"Зөв сонголт хийнэ үү. Энэ утга сонголтонд алга.\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"Зөв сонголт хийгээрэй. %s гэсэн сонголт байхгүй байна.\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"\\\"%s\\\" нь primary key талбарт тохирохгүй утга байна.\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\"%(datetime)s цагийн бүсийг хөрвүүлэж чадахгүй байна. %(current_timezone)s; \"\n\"цагийн бүс буруу эсвэл байхгүй байж магадгүй.\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"Одоогийн\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"Засах\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"Цэвэрлэх\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"Тодорхойгүй\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"Тийм\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"Үгүй\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"тийм,үгүй,магадгүй\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"%(size)d байт\"\nmsgstr[1] \"%(size)d байт\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s KB\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s MB\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s GB\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s TB\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s PB\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"p.m.\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"a.m.\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"PM\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"AM\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"шөнө дунд\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"үд дунд\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"Даваа гариг\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"Мягмар гариг\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"Лхагва гариг\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"Пүрэв гариг\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"Баасан гариг\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"Бямба гариг\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"Ням гариг\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"Дав\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"Мяг\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"Лха\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"Пүр\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"Баа\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"Бям\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"Ням\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"1-р сар\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"2-р сар\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"3-р сар\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"4-р сар\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"5-р сар\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"6-р сар\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"7-р сар\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"8-р сар\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"9-р сар\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"10-р сар\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"11-р сар\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"12-р сар\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"1-р сар\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"2-р сар\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"3-р сар\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"4-р сар\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"5-р сар\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"6-р сар\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"7-р сар\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"8-р сар \"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"9-р сар\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"10-р сар\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"11-р сар\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"12-р сар\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"1-р сар.\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"2-р сар.\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"3-р сар.\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"4-р сар.\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"5-р сар.\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"6-р сар.\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"7-р сар.\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"8-р сар.\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"9-р сар.\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"10-р сар.\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"11-р сар.\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"12-р сар.\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"Хулгана\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"Үхэр\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"Бар\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"Туулай\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"Луу\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"Могой\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"Морь\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"Хонь\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"Бич\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"Тахиа\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"Нохой\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"Гахай\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"%(truncated_text)s...\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"буюу\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \", \"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"жил \"\nmsgstr[1] \"жил\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"сар\"\nmsgstr[1] \"сар\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"долоо хоног\"\nmsgstr[1] \"долоо хоног\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"өдөр\"\nmsgstr[1] \"өдөр\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"цаг\"\nmsgstr[1] \"цаг\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"минут\"\nmsgstr[1] \"минут\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"минут\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \", %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"Файлын жагсаалтыг энд зөвшөөрөөгүй.\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\\\"%(path)s\\\" байхгүй байна.\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"%(directory)s ийн жагсаалт\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"Он тодорхойлоогүй байна\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"Сар тодорхойлоогүй байна\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"Өдөр тодорхойлоогүй байна\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"Долоо хоног тодорхойлоогүй байна\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"%(verbose_name_plural)s боломжгүй\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\"%(class_name)s.allow_future нь худлаа учраас %(verbose_name_plural)s нь \"\n\"боломжгүй.\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"\"\n\"Буруу огноо. '%(datestr)s' огноо  '%(format)s' хэлбэрт тохирохгүй байна.\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"Шүүлтүүрт таарах  %(verbose_name)s олдсонгүй \"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"Хуудас нь 'last' биш, эсвэл тоонд хөрвүүлэж болохгүй байна.\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"Буруу хуудас  (%(page_number)s): %(message)s\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"\"\n\"Жагсаалт хоосон байна бас '%(class_name)s.allow_empty' ийг False гэж өгсөн.\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/mn/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/conf/locale/mn/formats.py",
    "content": "# -*- encoding: utf-8 -*-\n# This file is distributed under the same license as the Django package.\n#\n\n# The *_FORMAT strings use the Django date format syntax,\n# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\nDATE_FORMAT = 'd F Y'\nTIME_FORMAT = 'g:i:s A'\n# DATETIME_FORMAT =\n# YEAR_MONTH_FORMAT =\n# MONTH_DAY_FORMAT =\nSHORT_DATE_FORMAT = 'j M Y'\n# SHORT_DATETIME_FORMAT =\n# FIRST_DAY_OF_WEEK =\n\n# The *_INPUT_FORMATS strings use the Python strftime format syntax,\n# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior\n# DATE_INPUT_FORMATS =\n# TIME_INPUT_FORMATS =\n# DATETIME_INPUT_FORMATS =\n# DECIMAL_SEPARATOR =\n# THOUSAND_SEPARATOR =\n# NUMBER_GROUPING =\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/nb/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <jonklo@gmail.com>, 2012-2013.\n# jonklo <jonklo@gmail.com>, 2011.\n#   <sigurdga-transifex@sigurdga.no>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-09 22:40+0000\\n\"\n\"Last-Translator: jonklo <jonklo@gmail.com>\\n\"\n\"Language-Team: Norwegian Bokmål (http://www.transifex.com/projects/p/django/\"\n\"language/nb/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: nb\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"Afrikaans\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"Arabisk\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"Aserbajdsjansk\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"Bulgarsk\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"Hviterussisk\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"Bengalsk\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"Bretonsk\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"Bosnisk\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"Katalansk\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"Tsjekkisk\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"Walisisk\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"Dansk\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"Tysk\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"Gresk\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"Engelsk\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"Engelsk (britisk)\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"Esperanto\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"Spansk\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"Argentinsk spansk\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"Meksikansk spansk\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"Nicaraguansk spansk\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"Venezuelanske spansk\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"Estisk\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"Baskisk\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"Persisk\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"Finsk\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"Fransk\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"Frisisk\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"Irsk\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"Galisisk\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"Hebraisk\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"Hindi\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"Kroatisk\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"Ungarsk\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"Interlingua\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"Indonesisk\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"Islandsk\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"Italiensk\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"Japansk\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"Georgisk\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"Kasakhisk\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"Khmer\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"Kannada\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"Koreansk\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"Luxembourgsk\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"Litauisk\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"Latvisk\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"Makedonsk\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"Malayalam\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"Mongolsk\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"Norsk (bokmål)\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"Nepali\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"Nederlandsk\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"Norsk (nynorsk)\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"Panjabi\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"Polsk\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"Portugisisk\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"Brasiliansk portugisisk\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"Rumensk\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"Russisk\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"Slovakisk\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"Slovensk\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"Albansk\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"Serbisk\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"Serbisk latin\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"Svensk\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"Swahili\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"Tamil\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"Telugu\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"Thai\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"Tyrkisk\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"Tatarisk\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"Udmurtisk\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"Ukrainsk\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"Urdu\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"Vietnamesisk\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"Forenklet kinesisk\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"Tradisjonell kinesisk\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"Oppgi en gyldig verdi.\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"Oppgi en gyldig e-postadresse\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"\"\n\"Oppgi en gyldig «slug» bestående av bokstaver, nummer, understreker eller \"\n\"bindestreker.\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"Oppgi en gyldig IPv4-adresse.\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"Oppgi en gyldig IPv6-adresse.\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"Oppgi en gyldig IPv4- eller IPv6-adresse.\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"Oppgi kun tall adskilt med komma.\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"Verdien må være %(limit_value)s (den er %(show_value)s).\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"Verdien må være mindre enn eller lik %(limit_value)s.\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"Verdien må være større enn eller lik %(limit_value)s.\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"Verdien må minimum ha %(limit_value)d tegn (den har %(show_value)d).\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"Verdien kan maksimalt ha %(limit_value)d tegn (den er %(show_value)d).\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"%(field_name)s må være unik for %(date_field)s %(lookup)s.\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"og\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"%(model_name)s med %(field_label)s finnes allerede.\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"Verdien %r er ikke et gyldig valg.\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"Feltet kan ikke være tomt.\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"Feltet kan ikke være blankt.\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Felt av typen: %(field_type)s\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"Heltall\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"«%s»-verdien må være et heltall.\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"«%s»-verdien må være enten True eller False.\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Boolsk (True eller False)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"Tekst (opp til %(max_length)s tegn)\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"Heltall adskilt med komma\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"\"\n\"«%s»-verdien har et ugyldig datoformat. Det må være på formen YYYY-MM-DD.\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"\"\n\"«%s»-verdien er på den korrekte formen (YYYY-MM-DD), men det er en ugyldig \"\n\"dato.\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"Dato (uten tid)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\"«%s»-verdien har et ugyldig datoformat. Det må være på formen YYYY-MM-DD HH:\"\n\"MM[:ss[.uuuuuu]][TZ].\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\"«%s»-verdien er på den korrekte formen (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]), \"\n\"men er ugyldig dato/tid.\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"Dato (med tid)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"«%s»-verdien må være et desimaltall.\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"Desimaltall\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"E-postadresse\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"Filsti\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"«%s»-verdien må være et flyttall.\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"Flyttall\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"Stort (8 byte) heltall\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"IPv4-adresse\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"IP-adresse\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"«%s»-verdien må være enten None, True eller False.\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"Boolsk (True, False eller None)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"Positivt heltall\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"Positivt lite heltall\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"Slug (opp til %(max_length)s)\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"Lite heltall\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"Tekst\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"\"\n\"«%s»-verdien har et ugyldig format. Det må være på formen HH:MM[:ss[.\"\n\"uuuuuu]].\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\"«%s»-verdien er på den korrekte formen (HH:MM[:ss[.uuuuuu]]), men det er en \"\n\"ugyldig dato.\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"Tid\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"Nettadresse\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"Fil\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"Bilde\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"Modell %(model)s med primærnøkkelen %(pk)r finnes ikke.\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"Fremmednøkkel (type bestemmes av relatert felt)\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"En-til-en-relasjon\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"Mange-til-mange-relasjon\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"\"\n\"Hold nede «Control», eller «Command» på en Mac, for å velge mer enn en.\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"Feltet er påkrevet.\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"Oppgi et heltall.\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"Oppgi et tall.\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"Verdien kan ikke ha mer enn %s siffer totalt.\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"Verdien kan ikke ha mer enn %s desimaler.\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"Verdien kan ikke ha mer enn %s siffer foran komma.\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"Oppgi en gyldig dato.\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"Oppgi et gyldig tidspunkt.\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"Oppgi gyldig dato og tidspunkt.\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"Ingen fil ble sendt. Sjekk «encoding»-typen på skjemaet.\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"Ingen fil ble sendt.\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"Filen er tom.\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"Filnavnet kan maksimalt ha %(max)d tegn (det har %(length)d).\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"Vennligst last opp en ny fil eller marker fjern-boksen, ikke begge.\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\"Last opp et gyldig bilde. Filen du lastet opp var ødelagt eller ikke et \"\n\"bilde.\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"Oppgi en gyldig nettadresse.\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"Velg et gyldig valg. %(value)s er ikke et av de tilgjengelige valgene.\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"Oppgi en liste med verdier.\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"Rekkefølge\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"Slett\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"Vennligst korriger dupliserte data for %(field)s.\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"Vennligst korriger dupliserte data for %(field)s, som må være unike.\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\"Vennligst korriger dupliserte data for %(field_name)s, som må være unike for \"\n\"%(lookup)s i %(date_field)s.\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"Vennligst korriger de dupliserte verdiene nedenfor.\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"Primærnøkkelen er ikke den samme som foreldreinstansens primærnøkkel.\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"Velg et gyldig valg. Valget er ikke av de tilgjengelige valgene.\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"Velg et gyldig valg. %s er ikke av de tilgjengelige valgene.\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"«%s» er ikke en gyldig verdi for en primærnøkkel.\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\"%(datetime)s kunne ikke tolkes i tidssonen %(current_timezone)s, det kan \"\n\"være tvetydig eller ikke eksistere.\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"Nåværende\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"Endre\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"Fjern\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"Ukjent\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"Ja\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"Nei\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"ja,nei,kanskje\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"%(size)d byte\"\nmsgstr[1] \"%(size)d byte\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s KB\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s MB\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s GB\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s TB\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s PB\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"p.m.\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"a.m.\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"PM\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"AM\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"midnatt\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"12:00\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"mandag\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"tirsdag\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"onsdag\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"torsdag\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"fredag\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"lørdag\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"søndag\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"man\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"tir\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"ons\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"tor\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"fre\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"lør\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"søn\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"januar\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"februar\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"mars\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"april\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"mai\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"juni\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"juli\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"august\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"september\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"oktober\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"november\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"desember\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"jan\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"feb\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"mar\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"apr\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"mai\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"jun\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"jul\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"aug\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"sep\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"okt\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"nov\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"des\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"jan.\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"feb.\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"mar.\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"apr.\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"mai\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"jun.\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"jul.\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"aug.\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"sept.\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"okt.\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"nov.\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"des.\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"Januar\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"Februar\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"Mars\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"April\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"Mai\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"Juni\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"Juli\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"August\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"September\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"Oktober\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"November\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"Desember\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"%(truncated_text)s…\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"eller\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \",\"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"år\"\nmsgstr[1] \"år\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"måned\"\nmsgstr[1] \"måneder\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"uke\"\nmsgstr[1] \"uker\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"dag\"\nmsgstr[1] \"dager\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"time\"\nmsgstr[1] \"timer\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"minutt\"\nmsgstr[1] \"minutter\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"minutter\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \", %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"Mappeinnhold er ikke tillatt her.\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"«%(path)s» finnes ikke\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"Innhold i %(directory)s\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"År ikke spesifisert\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"Måned ikke spesifisert\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"Dag ikke spesifisert\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"Uke ikke spesifisert\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"Ingen %(verbose_name_plural)s tilgjengelig\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\"Fremtidig %(verbose_name_plural)s ikke tilgjengelig fordi %(class_name)s.\"\n\"allow_future er False.\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"Ugyldig datostreng «%(datestr)s» gitt formatet «%(format)s»\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"Fant ingen %(verbose_name)s som passet spørringen\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"Siden er ikke «last», og kan heller ikke konverteres til et tall.\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"Ugyldig side (%(page_number)s): %(message)s\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"Tom liste og «%(class_name)s.allow_empty» er False.\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/nb/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/conf/locale/nb/formats.py",
    "content": "# -*- encoding: utf-8 -*-\n# This file is distributed under the same license as the Django package.\n#\nfrom __future__ import unicode_literals\n\n# The *_FORMAT strings use the Django date format syntax,\n# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\nDATE_FORMAT = 'j. F Y'\nTIME_FORMAT = 'H:i'\nDATETIME_FORMAT = 'j. F Y H:i'\nYEAR_MONTH_FORMAT = 'F Y'\nMONTH_DAY_FORMAT = 'j. F'\nSHORT_DATE_FORMAT = 'd.m.Y'\nSHORT_DATETIME_FORMAT = 'd.m.Y H:i'\nFIRST_DAY_OF_WEEK = 1 # Monday\n\n# The *_INPUT_FORMATS strings use the Python strftime format syntax,\n# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior\n# Kept ISO formats as they are in first position\nDATE_INPUT_FORMATS = (\n    '%Y-%m-%d', '%d.%m.%Y', '%d.%m.%y', # '2006-10-25', '25.10.2006', '25.10.06'\n    # '%d. %b %Y', '%d %b %Y',            # '25. okt 2006', '25 okt 2006'\n    # '%d. %b. %Y', '%d %b. %Y',          # '25. okt. 2006', '25 okt. 2006'\n    # '%d. %B %Y', '%d %B %Y',            # '25. oktober 2006', '25 oktober 2006'\n)\nDATETIME_INPUT_FORMATS = (\n    '%Y-%m-%d %H:%M:%S',     # '2006-10-25 14:30:59'\n    '%Y-%m-%d %H:%M',        # '2006-10-25 14:30'\n    '%Y-%m-%d',              # '2006-10-25'\n    '%d.%m.%Y %H:%M:%S',     # '25.10.2006 14:30:59'\n    '%d.%m.%Y %H:%M',        # '25.10.2006 14:30'\n    '%d.%m.%Y',              # '25.10.2006'\n    '%d.%m.%y %H:%M:%S',     # '25.10.06 14:30:59'\n    '%d.%m.%y %H:%M',        # '25.10.06 14:30'\n    '%d.%m.%y',              # '25.10.06'\n)\nDECIMAL_SEPARATOR = ','\nTHOUSAND_SEPARATOR = '\\xa0' # non-breaking space\nNUMBER_GROUPING = 3\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/ne/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <chalisesagar@gmail.com>, 2012.\n# Paras Nath Chaudhary <opnchaudhary@gmail.com>, 2012.\n# Sagar Chalise <chalisesagar@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:47+0000\\n\"\n\"Last-Translator: Paras Nath Chaudhary <opnchaudhary@gmail.com>\\n\"\n\"Language-Team: Nepali (http://www.transifex.com/projects/p/django/language/\"\n\"ne/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ne\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"अरबिक\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"अजरबैजानी\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"बुल्गेरियाली\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"बंगाली\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"बोस्नियाली\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"क्याटालान\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"चेक\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"वेल्स\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"डेनिस\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"जर्मन\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"ग्रिक\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"अंग्रेजी\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"बेलायती अंग्रेजी\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"स्पेनिस\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"अर्जेन्टिनाली स्पेनिस\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"मेक्सिकन स्पेनिस\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"निकारागुँवा स्पेनिस\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"इस्टोनियन\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"बास्क\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"फारसी\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"फिन्निस\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"फ्रान्सेली\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"फ्रिसियन\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"आयरिस\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"ग्यलिसियन\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"हिब्रु\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"हिन्दि \"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"क्रोषियन\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"हन्गेरियन\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"इन्डोनेसियाली\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"आइसल्यान्डिक\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"ईटालियन\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"जापनिज\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"जर्जीयन\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"कजाक\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"ख्मेर\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"कन्नडा\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"कोरियाली\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"लिथुवानियाली\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"लाट्भियन\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"म्यासेडोनियन\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"मलायलम\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"मंगोलियन\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"नर्वेली बोक्मल\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"नेपाली\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"डच\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"नर्वेली न्योर्स्क\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"पञ्जावी\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"पोलिस\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"पुर्तगाली\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"ब्राजिली पुर्तगाली\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"रोमानियाली\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"रुसी\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"सलोभाक\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"स्लोभेनियाली\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"अल्बानियाली\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"सर्वियाली\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"सर्वियाली ल्याटिन\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"स्विडिस\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"तामिल\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"तेलुगु\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"थाई\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"टर्किस\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"युक्रेनि\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"उर्दु\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"भियतनामी\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"सरल चिनि\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"प्राचिन चिनि\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"उपयुक्त मान राख्नुहोस ।\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"अक्षर, अंक, _  र - भएका 'स्लग' मात्र हाल्नुहोस ।\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"उपयुक्त IPv4 ठेगाना राख्नुहोस\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"उपयुक्त आइ.पी.६ ठेगाना राख्नुहोस ।\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"उपयुक्त आइ.पी.६ र आइ.पी.४ ठेगाना राख्नुहोस ।\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"कम्मा सहितका वर्ण मात्र राख्नुहोस ।\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"यो मान %(limit_value)s छ भन्ने निश्चित गर्नुहोस । (यो %(show_value)s हो ।)\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"यो मान %(limit_value)s भन्दा कम अथवा बराबर छ भन्ने निश्चित गर्नुहोस ।\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"यो मान %(limit_value)s भन्दा बढी अथवा बराबर छ भन्ने निशचित गर्नुहोस ।\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"यो मान कम्तिमा पनि %(limit_value)d अक्षर छ भन्ने निश्चित गर्नुहोस । (यसमा \"\n\"%(show_value)d छ ।)\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"यो मान बढिमा पनि %(limit_value)d अक्षर छ भन्ने निश्चित गर्नुहोस । (यसमा \"\n\"%(show_value)d छ ।)\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"%(date_field)s %(lookup)s को %(field_name)s नौलो हुनुपर्दछ ।\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"र\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"%(field_label)s भएको %(model_name)s पहिलै विद्धमान छ ।\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"%r उपयुक्त रोजाई होइन ।\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"यो फाँट शून्य हुन सक्दैन ।\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"यो फाँट खाली हुन सक्दैन ।\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"फाँटको प्रकार: %(field_type)s\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"अंक\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"'%s' को मान अंकमा हुनुपर्दछ ।\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"'%s' को मान True वा False हुनुपर्छ।\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"बुलियन (True अथवा False)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"वर्ण  (%(max_length)s सम्म)\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"कम्माले छुट्याइएका अंकहरु ।\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"'%s' मिित को मान अमान्य स्वरूपमा छ। यो YYYY-MM-DDको स्वरूपमा हुनुपर्छ।\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"मिति (समय रहित)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"मिति (समय सहित)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"'%s' को मान दशमलव संख्यामा हुनुपर्छ।\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"दश्मलव संख्या\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"ई-मेल ठेगाना\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"फाइलको मार्ग\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"दश्मलव हुने संख्या\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"ठूलो (८ बाइटको) अंक\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"आइ.पी.भी४ ठेगाना\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"IP ठेगाना\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"'%s' को मान None, True वा False हुनुपर्छ।\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"बुलियन (True, False अथवा None)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"सकारात्मक पूर्णांक\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"स्लग(%(max_length)s सम्म)\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"पाठ\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"समय\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"फाइल\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"चित्र\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"प्राइमरी की %(pk)r भएको मोडल %(model)s छैन ।\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"फोरेन कि (प्रकार नातागत फाँटले जनाउछ)\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"एक-देखि-एक नाता\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"अनेक-देखि-अनेक नाता\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"एक भन्दा बढी छान्न म्याकमा \\\"Control\\\" अथवा \\\"Command\\\" थिच्नुहोस ।\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"यो फाँट अनिवार्य छ ।\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"संख्या राख्नुहोस ।\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"संख्या राख्नुहोस ।\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"समग्रमा %s भन्दा बढी अक्षर नभएको निश्चित पार्नुहोस ।\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"%s भन्दा बढी दश्मलव नभएको निश्चित पार्नुहोस ।\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"दश्मलव अघि %s भन्दा बढी अक्षर नभएको निश्चित पार्नुहोस ।\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"उपयुक्त मिति राख्नुहोस ।\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"उपयुक्त समय राख्नुहोस ।\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"उपयुक्त मिति/समय राख्नुहोस ।\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"कुनै फाईल पेश गरिएको छैन । फारममा ईनकोडिङको प्रकार जाँच गर्नुहोस । \"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"कुनै फाईल पेश गरिएको छैन ।\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"पेश गरिएको फाइल खाली छ ।\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\"यो फाइलको नाममा बढीमा %(max)d अंक भएको निश्चित गर्नुहोस । (यसमा %(length)d छ ।)\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"दुवै नछान्नुहोस, कि त फाइल पेश गर्नुहोस वा चेक बाकस मा छान्नुहोस ।\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\"उपयुक्त चित्र अपलोड गर्नुहोस । तपाइले अपलोड गर्नु भएको फाइल चित्र होइन वा बिग्रेको चित्र \"\n\"हो ।\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"उपयुक्त URL राख्नुहोस ।\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"उपयुक्त विकल्प छान्नुहोस ।  %(value)s प्रस्तावित विकल्प होइन ।\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"मानहरु राख्नुहोस\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"क्रम\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"मेट्नुहोस\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"कृपया %(field)s का लागि दोहोरिइका तथ्याङ्कहरु सच्याउनुहोस ।\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"कृपया %(field)s का लागि दोहोरिइका तथ्याङ्कहरु नौलो तथ्याङ्क सहित सच्याउनुहोस ।\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\"कृपया %(field_name)s का लागि दोहोरिइका तथ्याङ्कहरु सच्याउनुहोस जसमा \"\n\"%(date_field)sको %(lookup)s नौलो हुनुपर्दछ ।\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"कृपया तलका दोहोरिइका मानहरु सच्याउनुहोस ।\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"भित्रि फोरेन की र अभिभावक प्राइमरी की मिलेन ।\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"उपयुक्त विकल्प छान्नुहोस ।  छानिएको विकल्प प्रस्तावित विकल्प होइन ।\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"उपयुक्त विकल्प छान्नुहोस ।  %s प्रस्तावित विकल्प होइन ।\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"\\\"%s\\\" प्राइमरी की को लागि उपयुक्त मान होइन ।\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"अहिले\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"फेर्नुहोस\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"सबै खाली गर्नु होस ।\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"अज्ञात\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"हुन्छ\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"होइन\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"हो, होइन, सायद\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"%(size)d बाइट\"\nmsgstr[1] \"%(size)d बाइटहरु\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s किलोबाइट\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s मेगाबाइट\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s गिगाबाइट\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s टेराबाइट\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s पिटाबाइट\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"p.m.\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"a.m.\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"PM\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"AM\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"मध्यरात\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"मध्यान्ह\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"सोमवार\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"मंगलवार\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"बुधवार\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"बिहीवार\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"शुक्रवार\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"शनिवार\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"आइतवार\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"सोम\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"मंगल\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"बुध\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"बिहि\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"शुक्र\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"शनि\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"आइत\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"जनवरी\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"फेब्रुअरी\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"मार्च\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"अप्रिल\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"मई\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"जुन\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"जुलै\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"अगस्त\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"सेप्टेम्बर\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"अक्टुवर\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"नभम्वर\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"डिसम्वर\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"जनवरी\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"फेब्रुअरी\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"मार्च\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"अप्रिल\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"मई\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"जुन\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"जुलै\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"अग्सत\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"सेप्तेम्बर\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"अक्टुवर\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"नभम्वर\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"डिसम्वर\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"जनवरी\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"फेब्रुअरी\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"मार्च\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"अप्रिल\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"मई\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"जुन\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"जुलै\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"अगस्त\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"सेप्तेम्बर\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"अक्टुवर\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"नभम्वर\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"डिसम्वर\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"जनवरी\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"फेब्रुअरी\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"मार्च\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"अप्रिल\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"मई\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"जुन\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"जुलै\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"अगस्त\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"सेप्टेम्बर\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"अक्टुवर\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"नभम्वर\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"डिसम्वर\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"अथवा\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \",\"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"साल\"\nmsgstr[1] \"सालहरु\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"महिना\"\nmsgstr[1] \"महिनाहरु\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"साता\"\nmsgstr[1] \"साताहरु\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"दिन\"\nmsgstr[1] \"दिनहरु\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"घण्टा\"\nmsgstr[1] \"घण्टाहरु\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"मिनट\"\nmsgstr[1] \"मिनटहरु\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"मिनटहरु\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \", %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"साल तोकिएको छैन ।\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"महिना तोकिएको छैन ।\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"दिन तोकिएको छैन ।\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"साता तोकिएको छैन ।\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"%(verbose_name_plural)s उपलब्ध छैन ।\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\"%(class_name)s.allow_future 'False' हुनाले आगामी %(verbose_name_plural)s उपलब्ध \"\n\"छैन ।\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"मिति ढाँचा'%(format)s'को लागि अनुपयुक्त मिति '%(datestr)s'\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"%(verbose_name)s भेटिएन ।\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"पृष्ठ अन्तिमा पनि होइन र अंकमा बदलिन पनि सकिदैन ।\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"'%(class_name)s.allow_empty' 'False' छ र लिस्ट पनि खालि छ । \"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/nl/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <alexandervanratingen@gmail.com>, 2012.\n#   <bart@dispectu.com>, 2012-2013.\n# Bas Peschier <bas.peschier@gmail.com>, 2011.\n# Blue <alexandervanratingen@gmail.com>, 2011.\n# Harro van der Klauw <hvdklauw@gmail.com>, 2011, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Jeffrey Gelens <jeffrey@noppo.pro>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-03 11:17+0000\\n\"\n\"Last-Translator: bartdegoede <bart@dispectu.com>\\n\"\n\"Language-Team: Dutch (http://www.transifex.com/projects/p/django/language/\"\n\"nl/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: nl\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"Afrikaans\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"Arabisch\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"Azerbaijani\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"Bulgaars\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"Wit-Russisch\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"Bengaals\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"Bretons\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"Bosnisch\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"Catalaans\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"Tjechisch\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"Welsh\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"Deens\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"Duits\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"Grieks\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"Engels\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"Brits-Engels\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"Esperanto\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"Spaans\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"Argentijns-Spaans\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"Mexicaans Spaans\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"Nicaraguaans Spaans\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"Venezolaans Spaans\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"Ests\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"Baskisch\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"Perzisch\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"Fins\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"Frans\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"Fries\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"Iers\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"Galicisch\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"Hebreews\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"Hindi\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"Kroatisch\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"Hongaars\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"Interlingua\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"Indonesisch\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"IJslands\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"Italiaans\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"Japans\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"Georgisch\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"Kazachs\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"Khmer\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"Kannada\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"Koreaans\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"Luxemburgs\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"Litouws\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"Lets\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"Macedonisch\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"Malayalam\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"Mongolisch\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"Noorse Bokmål\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"Nepalees\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"Nederlands\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"Noorse Nynorsk\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"Punjabi\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"Pools\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"Portugees\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"Braziliaans Portugees\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"Roemeens\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"Russisch\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"Slovaaks\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"Sloveens\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"Albanisch\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"Servisch\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"Servisch Latijn\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"Zweeds\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"Swahili\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"Tamil\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"Telegu\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"Thais\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"Turks\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"Tataars\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"Oedmoerts\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"Oekraïens\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"Urdu\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"Vietnamees\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"Vereenvoudigd Chinees\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"Traditioneel Chinees\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"Geef een geldige waarde.\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"Vul een geldig emailadres in.\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"\"\n\"Vul een geldigde 'slug' in, bestaande uit letters, cijfers, liggende \"\n\"streepjes en verbindingsstreepjes.\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"Geef een geldig IPv4-adres op.\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"Voer een geldig IPv6-adres in.\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"Voer een geldig IPv4 of IPv6-adres in.\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"Geef alleen cijfers op, gescheiden door komma's.\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"\"\n\"Zorg ervoor dat deze waarde gelijk is aan %(limit_value)s (het is nu \"\n\"%(show_value)s).\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"Zorg ervoor dat deze waarde hoogstens %(limit_value)s is.\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"Zorg ervoor dat deze waarde minstens %(limit_value)s is.\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Zorg ervoor dat deze waarde minstens %(limit_value)d karakters bevat (hij \"\n\"heeft er %(show_value)d).\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Zorg ervoor dat deze waarde hoogstens %(limit_value)d karakters bevat (hij \"\n\"heeft er %(show_value)d).\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"%(field_name)s moet uniek zijn voor %(date_field)s %(lookup)s.\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"en\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"Er bestaat al een %(model_name)s met eenzelfde %(field_label)s.\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"Waarde %r is geen geldige keuze.\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"Dit veld mag niet leeg zijn.\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"Dit veld kan niet leeg zijn\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Veld van type: %(field_type)s\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"Geheel getal\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"'%s' waarde moet een geheel getal zijn.\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"'%s' waarde moet True of False zijn.\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Boolean (True danwel False)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"Karakterreeks (hooguit %(max_length)s)\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"Komma-gescheiden gehele getallen\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"\"\n\"'%s' waarde heeft een ongeldig datum formaat. Het juiste formaat is YYYY-MM-\"\n\"DD.\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"\"\n\"'%s' waarde heeft een correct formaat (YYYY-MM-DD), maar is echter geen \"\n\"geldige datum.\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"Datum (zonder tijd)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\"'%s' waarde heeft een ongeldig formaat. Het juiste formaat is YYYY-MM-DD HH:\"\n\"MM[:ss[.uuuuuu]][TZ].\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\"'%s' waarde heeft een geldig formaat (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]), \"\n\"maar is een ongeldige datum/tijd.\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"Datum (met tijd)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"'%s' waarde moet een decimaal getal zijn.\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"Decimaal getal\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"E-mailadres\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"Bestandspad\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"'%s' waarde moet een float zijn.\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"Decimaal getal\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"Groot (8 byte) geheel getal\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"IPv4 address\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"IP-adres\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"'%s' waarde moet None, True of False zijn.\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"Boolean (True, False of None)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"Positief geheel getal\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"Postitief klein geheel getal\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"Slug (max. lengte %(max_length)s)\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"Klein geheel getal\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"Tekst\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"\"\n\"'%s' waarde heeft een ongeldig formaat. Het juiste formaat is HH:MM[:ss[.\"\n\"uuuuuu]].\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\"'%s' waarde heeft het juiste formaat (HH:MM[:ss[.uuuuuu]]), maar is een \"\n\"ongeldige tijd.\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"Tijd\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"Bestand\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"Plaatje\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"Model %(model)s met pk %(pk)r bestaat niet.\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"Refererende sleutel (type wordt bepaalde door gerelateerde veld)\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"Één-op-één relatie\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"Veel-op-veel relatie\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"\"\n\"Houd \\\"Control\\\", of \\\"Command\\\" op een Mac, ingedrukt om meerdere te \"\n\"selecteren.\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"Dit veld is verplicht.\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"Geef een geheel getal op.\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"Geef een getal op.\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"Zorg dat er minder dan %s cijfers zijn.\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"Zorg dat er minder dan %s cijfers na de komma staan.\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"Zorg dat er minder dan %s cijfers voor de komma staan.\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"Geef een geldige datum op.\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"Geef een geldige tijd op.\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"Geef een geldige datum/tijd op.\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"\"\n\"Er was geen bestand verstuurd. Controleer het coderingstype van het \"\n\"formulier.\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"Er was geen bestand verstuurd.\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"Het verstuurde bestand is leeg.\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\"De bestandsnaam mag maximaal %(max)d karakters bevatten (dit zijn er nu \"\n\"%(length)d).\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"Upload a.u.b. een bestand of vink de verwijder vink, niet allebei.\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\"Bestand ongeldig. Het bestand dat is gegeven is geen afbeelding of is \"\n\"beschadigd.\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"Geef een geldige URL op.\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"Selecteer een geldige keuze. %(value)s is geen beschikbare keuze.\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"Geef een lijst op met waardes.\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"Volgorde\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"Verwijderen\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"Verbeter de dubbele gegevens voor %(field)s.\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"Verbeter de dubbele gegevens voor %(field)s, welke uniek moet zijn.\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\"Verbeter de dubbele gegevens voor %(field_name)s, welke uniek moet zijn voor \"\n\"de %(lookup)s in %(date_field)s.\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"Verbeter de dubbele waarden hieronder.\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"\"\n\"De secundaire sleutel komt niet overeen met de primaire sleutel van de \"\n\"bovenliggende instantie.\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"Selecteer een geldige keuze. Deze keuze is niet beschikbaar.\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"Selecteer een geldige keuze. %s is geen beschikbare keuze.\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"\\\"%s\\\" is geen geldige waarde voor een primaire sleutel.\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\"%(datetime)s kon niet worden geïnterpreteerd in tijdzone \"\n\"%(current_timezone)s. Waarschijnlijk is deze ambigu of bestaat niet.\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"Huidige\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"Wijzigen\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"Verwijder\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"Onbekend\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"Ja\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"Nee\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"ja,nee,misschien\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"%(size)d byte\"\nmsgstr[1] \"%(size)d bytes\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s KB\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s MB\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s GB\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s TB\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s PB\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"p.m.\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"a.m.\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"PM\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"AM\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"middernacht\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"middag\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"maandag\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"dinsdag\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"woensdag\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"donderdag\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"vrijdag\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"zaterdag\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"zondag\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"ma\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"di\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"woe\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"don\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"vrij\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"zat\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"zon\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"januari\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"februari\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"maart\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"april\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"mei\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"juni\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"juli\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"augustus\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"september\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"oktober\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"november\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"december\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"jan\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"feb\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"mrt\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"apr\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"mei\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"jun\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"jul\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"aug\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"sep\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"okt\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"nov\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"dec\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"jan\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"feb\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"mrt\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"apr\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"mei\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"jun\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"jul\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"aug\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"sep\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"okt\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"nov\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"dec\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"januari\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"februari\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"maart\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"april\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"mei\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"juni\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"july\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"augustus\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"september\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"oktober\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"november\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"december\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"%(truncated_text)s...\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"of\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \",\"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"jaar\"\nmsgstr[1] \"jaren\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"maand\"\nmsgstr[1] \"maanden\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"week\"\nmsgstr[1] \"weken\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"dag\"\nmsgstr[1] \"dagen\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"uur\"\nmsgstr[1] \"uur\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"minuut\"\nmsgstr[1] \"minuten\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"minuten\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \", %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"Directory overzicht is hier niet toegestaan\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\\\"%(path)s\\\" bestaat niet\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"Overzicht van %(directory)s\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"Geen jaar opgegeven\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"Geen maand opgegeven\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"Geen dag opgegeven\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"Geen week opgegeven\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"Geen %(verbose_name_plural)s beschikbaar\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\"Geen toekomstige %(verbose_name_plural)s beschikbaar omdat %(class_name)s.\"\n\"allow_future de waarde False (Onwaar) heeft.\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"Ongeldige datum tekst '%(datestr)s' op basis van formaat '%(format)s'\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"Geen %(verbose_name)s gevonden die voldoet aan de query\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"\"\n\"Pagina is niet 'last' en kan ook niet geconverteerd worden naar een int.\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"Ongeldige pagina (%(page_number)s): %(message)s\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"\"\n\"Lege lijst en %(class_name)s.allow_empty heeft de waarde False (Onwaar).\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/nl/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/conf/locale/nl/formats.py",
    "content": "# -*- encoding: utf-8 -*-\n# This file is distributed under the same license as the Django package.\n#\n\n# The *_FORMAT strings use the Django date format syntax,\n# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\nDATE_FORMAT = 'j F Y'                   # '20 januari 2009'\nTIME_FORMAT = 'H:i'                     # '15:23'\nDATETIME_FORMAT = 'j F Y H:i'           # '20 januari 2009 15:23'\nYEAR_MONTH_FORMAT = 'F Y'               # 'januari 2009'\nMONTH_DAY_FORMAT = 'j F'                # '20 januari'\nSHORT_DATE_FORMAT = 'j-n-Y'             # '20-1-2009'\nSHORT_DATETIME_FORMAT = 'j-n-Y H:i'     # '20-1-2009 15:23'\nFIRST_DAY_OF_WEEK = 1                   # Monday (in Dutch 'maandag')\n\n# The *_INPUT_FORMATS strings use the Python strftime format syntax,\n# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior\nDATE_INPUT_FORMATS = (\n    '%d-%m-%Y', '%d-%m-%y',             # '20-01-2009', '20-01-09'\n    # '%d %b %Y', '%d %b %y',           # '20 jan 2009', '20 jan 09'\n    # '%d %B %Y', '%d %B %y',           # '20 januari 2009', '20 januari 09'\n)\n# Kept ISO formats as one is in first position\nTIME_INPUT_FORMATS = (\n    '%H:%M:%S',                         # '15:23:35'\n    '%H.%M:%S',                         # '15.23:35'\n    '%H.%M',                            # '15.23'\n    '%H:%M',                            # '15:23'\n)\nDATETIME_INPUT_FORMATS = (\n    # With time in %H:%M:%S :\n    '%d-%m-%Y %H:%M:%S', '%d-%m-%y %H:%M:%S', '%Y-%m-%d %H:%M:%S',  # '20-01-2009 15:23:35', '20-01-09 15:23:35', '2009-01-20 15:23:35'\n    # '%d %b %Y %H:%M:%S', '%d %b %y %H:%M:%S',   # '20 jan 2009 15:23:35', '20 jan 09 15:23:35'\n    # '%d %B %Y %H:%M:%S', '%d %B %y %H:%M:%S',   # '20 januari 2009 15:23:35', '20 januari 2009 15:23:35'\n    # With time in %H.%M:%S :\n    '%d-%m-%Y %H.%M:%S', '%d-%m-%y %H.%M:%S',   # '20-01-2009 15.23:35', '20-01-09 15.23:35'\n    # '%d %b %Y %H.%M:%S', '%d %b %y %H.%M:%S',   # '20 jan 2009 15.23:35', '20 jan 09 15.23:35'\n    # '%d %B %Y %H.%M:%S', '%d %B %y %H.%M:%S',   # '20 januari 2009 15.23:35', '20 januari 2009 15.23:35'\n    # With time in %H:%M :\n    '%d-%m-%Y %H:%M', '%d-%m-%y %H:%M', '%Y-%m-%d %H:%M',   # '20-01-2009 15:23', '20-01-09 15:23', '2009-01-20 15:23'\n    # '%d %b %Y %H:%M', '%d %b %y %H:%M',         # '20 jan 2009 15:23', '20 jan 09 15:23'\n    # '%d %B %Y %H:%M', '%d %B %y %H:%M',         # '20 januari 2009 15:23', '20 januari 2009 15:23'\n    # With time in %H.%M :\n    '%d-%m-%Y %H.%M', '%d-%m-%y %H.%M',         # '20-01-2009 15.23', '20-01-09 15.23'\n    # '%d %b %Y %H.%M', '%d %b %y %H.%M',         # '20 jan 2009 15.23', '20 jan 09 15.23'\n    # '%d %B %Y %H.%M', '%d %B %y %H.%M',         # '20 januari 2009 15.23', '20 januari 2009 15.23'\n    # Without time :\n    '%d-%m-%Y', '%d-%m-%y', '%Y-%m-%d',         # '20-01-2009', '20-01-09', '2009-01-20'\n    # '%d %b %Y', '%d %b %y',                     # '20 jan 2009', '20 jan 09'\n    # '%d %B %Y', '%d %B %y',                     # '20 januari 2009', '20 januari 2009'\n)\nDECIMAL_SEPARATOR = ','\nTHOUSAND_SEPARATOR = '.'\nNUMBER_GROUPING = 3\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/nn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <havard@grimelid.com>, 2011.\n# hgrimelid <havard@grimelid.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <odin.omdal@gmail.com>, 2012.\n#   <sigurdga-transifex@sigurdga.no>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:47+0000\\n\"\n\"Last-Translator: velmont <odin.omdal@gmail.com>\\n\"\n\"Language-Team: Norwegian Nynorsk (http://www.transifex.com/projects/p/django/\"\n\"language/nn/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: nn\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"Arabisk\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"Aserbajansk\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"Bulgarsk\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"Bengalsk\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"Bosnisk\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"Katalansk\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"Tsjekkisk\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"Walisisk\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"Dansk\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"Tysk\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"Gresk\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"Engelsk\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"Engelsk (britisk)\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"Esperanto\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"Spansk\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"Spansk (argentinsk)\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"Spansk (meksikansk)\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"Spansk (nicaraguansk)\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"Estisk\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"Baskisk\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"Persisk\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"Finsk\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"Fransk\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"Frisisk\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"Irsk\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"Galisisk\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"Hebraisk\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"Hindi\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"Kroatisk\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"Ungarsk\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"Indonesisk\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"Islandsk\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"Italiensk\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"Japansk\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"Georgisk\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"Kasakhisk\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"Khmer\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"Kannada\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"Koreansk\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"Litauisk\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"Latvisk\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"Makedonsk\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"Malayalam\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"Mongolsk\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"Norsk (bokmål)\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"Nepali\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"Nederlandsk\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"Norsk (nynorsk)\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"Punjabi\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"Polsk\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"Portugisisk\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"Brasiliansk portugisisk\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"Rumensk\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"Russisk\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"Slovakisk\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"Slovensk\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"Albansk\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"Serbisk\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"Serbisk latin\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"Svensk\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"Swahili\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"Tamil\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"Telugu\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"Thai\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"Tyrkisk\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"Tatarisk\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"Ukrainsk\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"Urdu\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"Vietnamesisk\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"Simplifisert kinesisk\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"Tradisjonell kinesisk\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"Oppgje ein gyldig verdi.\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"\"\n\"Oppgje ein gyldig 'slug' som består av bokstavar, nummer, understrekar eller \"\n\"bindestrekar.\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"Oppgje ei gyldig IPv4-adresse.\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"Skriv inn ei gyldig IPv6-adresse.\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"Skriv inn ei gyldig IPv4- eller IPv6-adresse.\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"Oppgje berre tall skild med komma.\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"Verdien må minimum ha %(limit_value)s teikn (den er %(show_value)s).\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"Verdien må vere mindre enn eller lik %(limit_value)s.\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"Verdien må vere større enn eller lik %(limit_value)s.\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"Verdien må minimum ha %(limit_value)d teikn (den er %(show_value)d).\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Verdien kan maksimalt ha %(limit_value)d teikn (den er %(show_value)d).\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"%(field_name)s må vere unik for %(date_field)s %(lookup)s.\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"og\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"%(model_name)s med %(field_label)s fins allereie.\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"Verdi %r er eit ugyldig val.\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"Feltet kan ikkje vere tomt.\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"Feltet kan ikkje vere tomt.\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Felt av typen: %(field_type)s\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"Heiltal\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"«%s» må vere eit heiltal.\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"«%s» må vere anten True eller False\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Boolsk (True eller False)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"Tekst (opp til %(max_length)s teikn)\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"Heiltal skild med komma\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"«%s» har eit ugyldig datoformat. Det må vere på formen YYYY-MM-DD.\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"«%s» har rett format (YYYY-MM-DD) men ein ugyldig dato.\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"Dato (utan tid)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\"«%s» har eit ugyldig format. Det må vere på formen YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ].\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\"«%s» har rett format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) men ugyldig dato \"\n\"eller klokkeslett.\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"Dato (med tid)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"«%s» må vere eit desimaltal.\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"Desimaltall\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"E-postadresse\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"Filsti\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"«%s» må vere eit flyttal.\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"Flyttall\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"Stort (8 bitar) heiltal\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"IPv4-adresse\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"IP-adresse\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"«%s» må vere anten None, True eller False.\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"Boolsk (True, False eller None)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"Positivt heiltal\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"Positivt lite heiltal\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"Slug (opp til %(max_length)s)\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"Lite heiltal\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"Tekst\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"\"\n\"«%s» har eit ugyldig format. Det må vere på formen HH:MM[:ss[.uuuuuu]].\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\"«%s» har rett format (HH:MM[:ss[.uuuuuu]]) men er eit ugyldig klokkeslett.\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"Tid\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"Nettadresse\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"Fil\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"Bilete\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"Modellen %(model)s med primærnøkkelen %(pk)r eksisterer ikkje.\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"Primærnøkkel (type bestemt av relatert felt)\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"Ein-til-ein-forhold\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"Mange-til-mange-forhold\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"\"\n\"Hald nede \\\"Control\\\", eller \\\"Command\\\" på ein Mac, for å velge meir enn \"\n\"éin.\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"Feltet er påkravd.\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"Oppgje eit heiltall.\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"Oppgje eit tall.\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"Verdien kan ikkje ha meir enn %s siffer totalt.\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"Verdien kan ikkie ha meir enn %s desimalar.\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"Verdien kan ikkje ha meir enn %s siffer framfor komma.\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"Oppgje ein gyldig dato.\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"Oppgje eit gyldig tidspunkt.\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"Oppgje gyldig dato og tidspunkt.\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"Inga fil vart sendt. Sjekk \\\"encoding\\\"-typen på skjemaet.\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"Inga fil vart sendt.\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"Fila er tom.\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"Filnamnet kan maksimalt ha %(max)d teikn (det har %(length)d).\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"Last enten opp ei fil eller huk av i avkryssingsboksen.\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\"Last opp eit gyldig bilete. Fila du lasta opp var ødelagt eller ikkje eit \"\n\"bilete.\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"Oppgje ei gyldig nettadresse.\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"\"\n\"Velg eit gyldig valg. %(value)s er ikkje eit av dei tilgjengelege valga.\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"Oppgje ei liste med verdiar.\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"Rekkefølge\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"Slett\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"Korriger dupliserte data for %(field)s.\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"Korriger dupliserte data for %(field)s, som må vere unike.\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\"Korriger dupliserte data for %(field_name)s, som må vere unike for \"\n\"%(lookup)s i %(date_field)s.\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"Korriger dei dupliserte verdiane nedanfor.\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"\"\n\"Primærnøkkelen er ikkje den samme som foreldreinstansen sin primærnøkkel.\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"Velg eit gyldig valg. Valget er ikkje eit av dei tilgjengelege valga.\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"Velg eit gyldig valg. %s er ikkje eit av dei tilgjengelege valga.\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"\\\"%s\\\" er ikkje ein gyldig verdi for ein primærnøkkel.\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\"%(datetime)s kunne ikkje bli tolka i tidssona %(current_timezone)s. Verdien \"\n\"er anten tvetydig eller ugyldig.\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"Noverande\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"Endre\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"Tøm\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"Ukjend\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"Ja\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"Nei\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"ja,nei,kanskje\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"%(size)d byte\"\nmsgstr[1] \"%(size)d bytes\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s KB\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s MB\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s GB\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s TB\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s PB\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"p.m.\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"a.m.\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"PM\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"AM\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"midnatt\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"12:00\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"måndag\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"tysdag\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"onsdag\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"torsdag\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"fredag\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"laurdag\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"søndag\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"man\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"tys\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"ons\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"tor\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"fre\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"lau\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"søn\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"januar\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"februar\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"mars\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"april\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"mai\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"juni\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"juli\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"august\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"september\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"oktober\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"november\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"desember\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"jan\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"feb\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"mars\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"april\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"mai\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"juni\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"juli\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"aug\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"sep\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"okt\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"nov\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"des\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"jan.\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"feb.\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"mars\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"april\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"mai\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"juni\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"juli\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"aug.\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"sep.\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"okt.\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"nov.\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"des.\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"Januar\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"Februar\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"Mars\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"April\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"Mai\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"Juni\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"Juli\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"August\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"September\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"Oktober\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"November\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"Desember\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"%(truncated_text)s…\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"eller\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \", \"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"år\"\nmsgstr[1] \"år\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"månad\"\nmsgstr[1] \"månadar\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"veke\"\nmsgstr[1] \"veker\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"dag\"\nmsgstr[1] \"dagar\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"time\"\nmsgstr[1] \"timar\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"minutt\"\nmsgstr[1] \"minuttar\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"minuttar\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \", %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"Mappeindeksar er ikkje tillate her.\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"«%(path)s» finst ikkje.\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"Indeks for %(directory)s\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"Årstal ikkje spesifisert\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"Månad ikkje spesifisert\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"Dag ikkje spesifisert\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"Veke ikkje spesifisert\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"%(verbose_name_plural)s tilgjengeleg\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\"Framtidig %(verbose_name_plural)s er ikkje tilgjengeleg fordi %(class_name)s.\"\n\"allow_future er sett til False.\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"Ugyldig datostreng '%(datestr)s' gitt format '%(format)s'\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"Fann ingen %(verbose_name)s som korresponderte med spørringa\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"Sida er ikkje 'last' og kan heller ikkje konverterast til eit tal.\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"Tom liste og '%(class_name)s.allow_empty' er False.\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/nn/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/conf/locale/nn/formats.py",
    "content": "# -*- encoding: utf-8 -*-\n# This file is distributed under the same license as the Django package.\n#\nfrom __future__ import unicode_literals\n\n# The *_FORMAT strings use the Django date format syntax,\n# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\nDATE_FORMAT = 'j. F Y'\nTIME_FORMAT = 'H:i'\nDATETIME_FORMAT = 'j. F Y H:i'\nYEAR_MONTH_FORMAT = 'F Y'\nMONTH_DAY_FORMAT = 'j. F'\nSHORT_DATE_FORMAT = 'd.m.Y'\nSHORT_DATETIME_FORMAT = 'd.m.Y H:i'\nFIRST_DAY_OF_WEEK = 1 # Monday\n\n# The *_INPUT_FORMATS strings use the Python strftime format syntax,\n# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior\n# Kept ISO formats as they are in first position\nDATE_INPUT_FORMATS = (\n    '%Y-%m-%d', '%d.%m.%Y', '%d.%m.%y', # '2006-10-25', '25.10.2006', '25.10.06'\n    # '%d. %b %Y', '%d %b %Y',            # '25. okt 2006', '25 okt 2006'\n    # '%d. %b. %Y', '%d %b. %Y',          # '25. okt. 2006', '25 okt. 2006'\n    # '%d. %B %Y', '%d %B %Y',            # '25. oktober 2006', '25 oktober 2006'\n)\nDATETIME_INPUT_FORMATS = (\n    '%Y-%m-%d %H:%M:%S',     # '2006-10-25 14:30:59'\n    '%Y-%m-%d %H:%M',        # '2006-10-25 14:30'\n    '%Y-%m-%d',              # '2006-10-25'\n    '%Y-%m-%d',              # '2006-10-25'\n    '%d.%m.%Y %H:%M:%S',     # '25.10.2006 14:30:59'\n    '%d.%m.%Y %H:%M',        # '25.10.2006 14:30'\n    '%d.%m.%Y',              # '25.10.2006'\n    '%d.%m.%y %H:%M:%S',     # '25.10.06 14:30:59'\n    '%d.%m.%y %H:%M',        # '25.10.06 14:30'\n    '%d.%m.%y',              # '25.10.06'\n)\nDECIMAL_SEPARATOR = ','\nTHOUSAND_SEPARATOR = '\\xa0' # non-breaking space\nNUMBER_GROUPING = 3\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/pa/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# A S Alam <apreet.alam@gmail.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:47+0000\\n\"\n\"Last-Translator: A S Alam <apreet.alam@gmail.com>\\n\"\n\"Language-Team: Panjabi (Punjabi) (http://www.transifex.com/projects/p/django/\"\n\"language/pa/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: pa\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"ਅਰਬੀ\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"ਬੁਲਗਾਰੀਆਈ\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"ਬੰਗਾਲੀ\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"ਬੋਸਨੀਆਈ\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"ਕਾਟਾਲਾਨ\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"ਚੈੱਕ\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"ਵੈਲਸ਼\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"ਡੈਨਿਸ਼\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"ਜਰਮਨ\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"ਗਰੀਕ\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"ਅੰਗਰੇਜ਼ੀ\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"ਬਰਤਾਨੀਵੀਂ ਅੰਗਰੇਜ਼ੀ\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"ਸਪੇਨੀ\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"ਅਰਜਨਟੀਨੀ ਸਪੇਨੀ\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"ਈਸਟੋਨੀਆਈ\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"ਬਸਕਿਊ\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"ਪਰਸ਼ੀਆਈ\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"ਫੈਨਿਸ਼\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"ਫਰੈਂਚ\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"ਫ਼ਾਰਸੀ\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"ਆਈਰਸ਼\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"ਗਲੀਸੀਆਈ\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"ਹੈਬਰਿਊ\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"ਹਿੰਦੀ\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"ਕਰੋਆਟੀਆਈ\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"ਹੰਗਰੀਆਈ\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"ਇੰਡੋਨੇਸ਼ੀਆਈ\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"ਆਈਸਲੈਂਡਿਕ\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"ਇਤਾਲਵੀ\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"ਜਾਪਾਨੀ\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"ਜਾਰਜੀਆਈ\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"ਖਮੀਰ\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"ਕੰਨੜ\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"ਕੋਰੀਆਈ\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"ਲੀਥੁਨੀਆਈ\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"ਲਾਟਵੀਅਨ\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"ਮੈਕਡੋਨੀਆਈ\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"ਮਲਿਆਲਮ\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"ਮੰਗੋਲੀਆਈ\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"ਨਾਰਵੇਗੀਆਈ ਬੋਕਮਾਲ\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"ਡੱਚ\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"ਨਾਰਵੇਗੀਅਨ ਨਯਨੋਰਸਕ\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"ਪੰਜਾਬੀ\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"ਪੋਲੈਂਡੀ\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"ਪੁਰਤਗਾਲੀ\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"ਬਰਾਜ਼ੀਲੀ ਪੁਰਤਗਾਲੀ\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"ਰੋਮਾਨੀਆਈ\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"ਰੂਸੀ\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"ਸਲੋਵਾਕ\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"ਸਲੋਵੀਨੀਆਈ\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"ਅਲਬੀਨੀਆਈ\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"ਸਰਬੀਆਈ\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"ਸਰਬੀਆਈ ਲੈਟਿਨ\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"ਸਵੀਡਨੀ\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"ਤਾਮਿਲ\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"ਤੇਲਗੂ\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"ਥਾਈ\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"ਤੁਰਕ\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"ਯੂਕਰੇਨੀ\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"ਵੀਅਤਨਾਮੀ\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"ਸਧਾਰਨ ਚੀਨੀ\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"ਮੂਲ ਚੀਨੀ\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"ਠੀਕ ਮੁੱਲ ਦਿਓ\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"ਅਤੇ\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"ਖੇਤਰ ਦੀ ਕਿਸਮ: %(field_type)s\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"ਅੰਕ\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"ਮਿਤੀ (ਬਿਨਾਂ ਸਮਾਂ)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"ਮਿਤੀ (ਸਮੇਂ ਨਾਲ)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"ਦਸ਼ਮਲਵ ਅੰਕ\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"ਈਮੇਲ ਐਡਰੈੱਸ\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"ਫਾਇਲ ਪਾਥ\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"IP ਐਡਰੈੱਸ\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"ਟੈਕਸਟ\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"ਸਮਾਂ\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"ਇਹ ਖੇਤਰ ਲਾਜ਼ਮੀ ਹੈ।\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"ਨੰਬਰ ਦਿਓ।\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"ਠੀਕ ਮਿਤੀ ਦਿਓ।\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"ਠੀਕ ਸਮਾਂ ਦਿਓ।\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"ਠੀਕ ਮਿਤੀ/ਸਮਾਂ ਦਿਓ।\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"ਕੋਈ ਫਾਇਲ ਨਹੀਂ ਭੇਜੀ।\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"ਦਿੱਤੀ ਫਾਇਲ ਖਾਲੀ ਹੈ।\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"ਠੀਕ URL ਦਿਉ।\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"ਮੁੱਲ ਦੀ ਲਿਸਟ ਦਿਓ।\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"ਲੜੀ\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"ਹਟਾਓ\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"ਮੌਜੂਦਾ\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"ਬਦਲੋ\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"ਸਾਫ਼ ਕਰੋ\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"ਅਣਜਾਣ\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"ਹਾਂ\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"ਨਹੀਂ\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"ਹਾਂ,ਨਹੀਂ,ਸ਼ਾਇਦ\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"%(size)d ਬਾਈਟ\"\nmsgstr[1] \"%(size)d ਬਾਈਟ\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s KB\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s MB\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s GB\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s TB\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s PB\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"p.m.\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"a.m.\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"ਸ਼ਾਮ\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"ਸਵੇਰ\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"ਅੱਧੀ-ਰਾਤ\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"ਨੂਨ\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"ਸੋਮਵਾਰ\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"ਮੰਗਲਵਾਰ\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"ਬੁੱਧਵਾਰ\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"ਵੀਰਵਾਰ\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"ਸ਼ੁੱਕਰਵਾਰ\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"ਸ਼ਨਿੱਚਰਵਾਰ\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"ਐਤਵਾਰ\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"ਸੋਮ\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"ਮੰਗ\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"ਬੁੱਧ\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"ਵੀਰ\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"ਸ਼ੁੱਕ\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"ਸ਼ਨਿੱ\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"ਐਤ\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"ਜਨਵਰੀ\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"ਫਰਵਰੀ\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"ਮਾਰਚ\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"ਅਪਰੈਲ\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"ਮਈ\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"ਜੂਨ\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"ਜੁਲਾਈ\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"ਅਗਸਤ\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"ਸਤੰਬਰ\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"ਅਕਤੂਬਰ\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"ਨਵੰਬਰ\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"ਦਸੰਬਰ\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"ਜਨ\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"ਫਰ\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"ਮਾਰ\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"ਅਪ\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"ਮਈ\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"ਜੂਨ\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"ਜੁਲ\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"ਅਗ\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"ਸਤੰ\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"ਅਕ\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"ਨਵੰ\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"ਦਸੰ\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"ਜਨ\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"ਫਰ\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"ਮਾਰ\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"ਅਪ\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"ਮਈ\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"ਜੂਨ\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"ਜੁਲ\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"ਅਗ\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"ਸਤੰ\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"ਅਕਤੂ\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"ਨਵੰ\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"ਦਸੰ\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"ਜਨਵਰੀ\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"ਫਰਵਰੀ\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"ਮਾਰਚ\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"ਅਪਰੈਲ\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"ਮਈ\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"ਜੂਨ\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"ਜੁਲਾਈ\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"ਅਗਸਤ\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"ਸਤੰਬਰ\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"ਅਕਤੂਬਰ\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"ਨਵੰਬਰ\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"ਦਸੰਬਰ\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"ਜਾਂ\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \",\"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"ਸਾਲ\"\nmsgstr[1] \"ਸਾਲ\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"ਮਹੀਨਾ\"\nmsgstr[1] \"ਮਹੀਨਾ\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"ਹਫਤਾ\"\nmsgstr[1] \"ਹਫਤਾ\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"ਦਿਨ\"\nmsgstr[1] \"ਦਿਨ\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"ਘੰਟਾ\"\nmsgstr[1] \"ਘੰਟਾ\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"ਮਿੰਟ\"\nmsgstr[1] \"ਮਿੰਟ\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"ਮਿੰਟ\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \", %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/pl/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# angularcircle <angular.circle@gmail.com>, 2011.\n#  <angular.circle@gmail.com>, 2013.\n#   <angular.circle@gmail.com>, 2012-2013.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Karol  <kfuks2@o2.pl>, 2012.\n# konryd <konryd@gmail.com>, 2011.\n# Łukasz Rekucki <lrekucki@gmail.com>, 2011.\n# p  <poczciwiec@gmail.com>, 2012.\n# Roman Barczyński <rombar@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-02-28 13:10+0000\\n\"\n\"Last-Translator: angularcircle <angular.circle@gmail.com>\\n\"\n\"Language-Team: Polish (http://www.transifex.com/projects/p/django/language/\"\n\"pl/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: pl\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 \"\n\"|| n%100>=20) ? 1 : 2);\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"Afryknerski\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"arabski\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"azerski\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"bułgarski\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"białoruski\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"bengalski\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"bretoński\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"bośniacki\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"kataloński\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"czeski\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"walijski\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"duński\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"niemiecki\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"grecki\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"angielski\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"angielski brytyjski\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"esperanto\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"hiszpański\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"hiszpański argentyński\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"hiszpański meksykański\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"hiszpański nikaraguański\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"hiszpański wenezuelski\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"estoński\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"baskijski\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"perski\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"fiński\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"francuski\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"fryzyjski\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"irlandzki\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"galicyjski\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"hebrajski\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"hindi\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"chorwacki\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"węgierski\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"interlingua\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"indonezyjski\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"islandzki\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"włoski\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"japoński\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"gruziński\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"kazachski\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"khmerski\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"kannada\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"koreański\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"luksemburski\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"litewski\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"łotewski\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"macedoński\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"malajski\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"mongolski\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"norweski (Bokmal)\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"nepalski\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"holenderski\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"norweski (Nynorsk)\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"pendżabski\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"polski\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"portugalski\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"brazylijski portugalski\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"rumuński\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"rosyjski\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"słowacki\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"słoweński\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"albański\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"serbski\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"serbski (łaciński)\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"szwedzki\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"suahili\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"tamilski\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"telugu\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"tajski\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"turecki\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"tatarski\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"udmurcki\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"ukraiński\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"urdu\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"wietnamski\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"chiński uproszczony\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"chiński tradycyjny\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"Wpisz poprawną wartość.\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"Wprowadź poprawny adres email.\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"To pole może zawierać jedynie litery, cyfry, podkreślenia i myślniki.\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"Wprowadź poprawny adres IPv4.\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"Wprowadź poprawny adres IPv6.\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"Wprowadź poprawny adres IPv4 lub IPv6.\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"Wpisz tylko cyfry oddzielone przecinkami.\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"Upewnij się, że ta wartość jest %(limit_value)s (jest %(show_value)s).\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"Upewnij się, że ta wartość jest mniejsza lub równa %(limit_value)s.\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"Upewnij się, że ta wartość jest większa lub równa %(limit_value)s.\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Upewnij się, że ta wartość ma co najmniej %(limit_value)d znaków (ma długość \"\n\"%(show_value)d).\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Upewnij się, że ta wartość ma co najwyżej %(limit_value)d znaków (ma długość \"\n\"%(show_value)d).\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"\"\n\"Wartości w %(field_name)s muszą być unikalne dla wyszukiwań %(lookup)s w \"\n\"%(date_field)s\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"i\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"%(field_label)s już istnieje w %(model_name)s.\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"Wartość %r nie jest poprawnym wyborem.\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"To pole nie może być puste.\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"To pole nie może być puste.\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Pole typu: %(field_type)s\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"Liczba całkowita\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"'%s' wartość musi być liczbą całkowitą.\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"'%s' wartość musi być True lub False.\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Wartość logiczna (True, False - prawda lub fałsz)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"Łańcuch (do %(max_length)s znaków)\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"Liczby całkowite rozdzielone przecinkami\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"\"\n\"'%s' wartość ma nieprawidłowy format daty. Wartość musi być zapisana w \"\n\"formacie YYYY-MM-DD.\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"'%s' wartość ma odpowiedni format (YYYY-MM-DD), ale jest błędną datą.\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"Data (bez godziny)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\"'%s' wartość ma nieprawidłowy format. Wartość musi być w formacie YYYY-MM-DD \"\n\"HH:MM[:ss[.uuuuuu]][TZ].\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\"'%s' wartość ma odpowiedni format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]), ale \"\n\"jest nieprawidłową datą / czasem.\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"Data (z godziną)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"'%s' wartość musi być liczbą dziesiętną.\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"Liczba dziesiętna\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"Adres e-mail\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"Ścieżka do pliku\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"'%s' wartość musi być liczbą zmiennoprzecinkową.\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"Liczba zmiennoprzecinkowa\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"Duża liczba całkowita (8 bajtów)\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"adres IPv4\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"Adres IP\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"'%s' wartość musi być None, True lub False.\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"Wartość logiczna (True, False, None - prawda, fałsz lub nic)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"Dodatnia liczba całkowita\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"Dodatnia mała liczba całkowita\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"Slug (max. %(max_length)s znaków)\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"Mała liczba całkowita\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"Tekst\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"\"\n\"'%s' wartość ma nieprawidłowy format. Wartość musi być w formacie HH:MM[:ss[.\"\n\"uuuuuu]].\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\"'%s' wartość ma odpowiedni format (HH:MM[:ss[.uuuuuu]]), ale jest \"\n\"nieprawidłowym czasem.\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"Czas\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"Plik\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"Plik graficzny\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"Model %(model)s o kluczu głównym %(pk)r nie istnieje.\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"Klucz obcy (typ określony przez pole powiązane)\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"Powiązanie jeden do jednego\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"Powiązanie wiele do wiele\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"\"\n\"Przytrzymaj wciśnięty klawisz \\\"Ctrl\\\" lub \\\"Command\\\" na Mac'u aby \"\n\"zaznaczyć więcej niż jeden wybór.\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"To pole jest wymagane.\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"Wpisz liczbę całkowitą.\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"Wpisz liczbę.\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"Upewnij się, że jest nie więcej niż %s cyfr.\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"Upewnij się, że jest nie więcej niż %s miejsc po przecinku.\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"Upewnij się, że jest nie więcej niż %s miejsc przed przecinkiem.\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"Wpisz poprawną datę.\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"Wpisz poprawną godzinę.\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"Wpisz poprawną datę/godzinę.\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"Nie wysłano żadnego pliku. Sprawdź typ kodowania formularza.\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"Żaden plik nie został przesłany.\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"Wysłany plik jest pusty.\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\"Upewnij się, że nazwa tego pliku ma co najwyżej %(max)d znaków (ma długość \"\n\"%(length)d).\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"Prześlij plik lub zaznacz by usunąć, ale nie oba na raz.\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\"Wgraj poprawny plik graficzny. Ten, który został wgrany, nie jest obrazem, \"\n\"albo jest uszkodzony.\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"Wpisz poprawny URL.\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"\"\n\"Wybierz poprawną wartość. %(value)s nie jest jednym z dostępnych wyborów.\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"Podaj listę wartości.\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"Porządek\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"Usuń\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"Popraw zduplikowane dane w %(field)s.\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"Popraw zduplikowane dane w %(field)s, które wymaga unikalności.\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\"Popraw zduplikowane dane w %(field_name)s, które wymaga unikalności dla \"\n\"%(lookup)s w polu %(date_field)s.\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"Popraw poniższe zduplikowane wartości.\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"Osadzony klucz obcy nie pasuje do klucza głównego obiektu rodzica.\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"Wybierz poprawną wartość. Podana nie jest jednym z dostępnych wyborów.\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"Wybierz poprawną wartość. %s nie jest jednym z dostępnych wyborów.\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"\\\"%s\\\" nie jest poprawną wartością klucza głównego.\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\"%(datetime)s nie może być interpretowany w strefie czasowej \"\n\"%(current_timezone)s; może być niejednoznaczne lub nie istnieć.\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"Teraz\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"Zmień\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"Wyczyść\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"Nieznany\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"Tak\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"Nie\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"tak,nie,może\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"%(size)d bajt\"\nmsgstr[1] \"%(size)d bajty\"\nmsgstr[2] \"%(size)d bajtów\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s KB\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s MB\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s GB\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s TB\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s PB\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"po południu\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"rano\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"po południu\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"rano\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"północ\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"południe\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"Poniedziałek\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"Wtorek\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"Środa\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"Czwartek\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"Piątek\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"Sobota\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"Niedziela\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"Pon\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"Wt\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"Śr\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"Czw\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"Pt\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"So\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"Nd\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"Styczeń\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"Luty\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"Marzec\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"Kwiecień\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"Maj\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"Czerwiec\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"Lipiec\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"Sierpień\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"Wrzesień\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"Październik\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"Listopad\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"Grudzień\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"sty\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"luty\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"marz\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"kwie\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"maj\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"czerw\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"lip\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"sier\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"wrze\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"paź\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"list\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"gru\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"Sty\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"Lut\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"Mar\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"Kwi\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"Maj\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"Cze\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"Lip\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"Sie\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"Wrz\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"Paź\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"Lis\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"Gru\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"stycznia\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"lutego\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"marca\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"kwietnia\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"maja\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"czerwca\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"lipca\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"sierpnia\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"września\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"października\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"listopada\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"grudnia\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \" %(truncated_text)s...\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"lub\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \", \"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"rok\"\nmsgstr[1] \"lata\"\nmsgstr[2] \"lat\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"miesiąc\"\nmsgstr[1] \"miesiące\"\nmsgstr[2] \"miesięcy\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"tydzień\"\nmsgstr[1] \"tygodnie\"\nmsgstr[2] \"tygodni\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"dzień\"\nmsgstr[1] \"dni\"\nmsgstr[2] \"dni\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"godzina\"\nmsgstr[1] \"godziny\"\nmsgstr[2] \"godzin\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"minuta\"\nmsgstr[1] \"minuty\"\nmsgstr[2] \"minut\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"minuty\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \", %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"Wyświetlanie zawartości katalogu jest tu niedozwolone.\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\\\" %(path)s \\\" nie istnieje\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"Zawartość %(directory)s \"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"Nie określono roku\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"Nie określono miesiąca\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"Nie określono dnia\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"Nie określono tygodnia\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"%(verbose_name_plural)s nie jest dostępny\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\"Wyświetlanie %(verbose_name_plural)s z datą przyszłą jest niedostępne, gdyż \"\n\"atrybut '%(class_name)s.allow_future' ma wartość 'False'.\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"\"\n\"Ciąg znaków '%(datestr)s' jest niezgodny z podanym formatem daty '%(format)s'\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"Nie znaleziono %(verbose_name)s spełniających wybrane kryteria\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"\"\n\"Podanego numeru strony nie można przekształcić na liczbę całkowitą, nie \"\n\"przyjął on również wartości 'last' oznaczającej ostatnią stronę z dostępnego \"\n\"zakresu.\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"Nieprawidłowy numer strony (%(page_number)s): %(message)s \"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"\"\n\"Lista nie zawiera żadnych elementów, a atrybut '%(class_name)s.allow_empty' \"\n\"ma wartość 'False'.\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/pl/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/conf/locale/pl/formats.py",
    "content": "# -*- encoding: utf-8 -*-\n# This file is distributed under the same license as the Django package.\n#\nfrom __future__ import unicode_literals\n\n# The *_FORMAT strings use the Django date format syntax,\n# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\nDATE_FORMAT = 'j E Y'\nTIME_FORMAT = 'H:i:s'\nDATETIME_FORMAT = 'j E Y H:i:s'\nYEAR_MONTH_FORMAT = 'F Y'\nMONTH_DAY_FORMAT = 'j F'\nSHORT_DATE_FORMAT = 'd-m-Y'\nSHORT_DATETIME_FORMAT = 'd-m-Y  H:i:s'\nFIRST_DAY_OF_WEEK = 1 # Monday\n\n# The *_INPUT_FORMATS strings use the Python strftime format syntax,\n# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior\nDATE_INPUT_FORMATS = (\n    '%d.%m.%Y', '%d.%m.%y',     # '25.10.2006', '25.10.06'\n    '%y-%m-%d',                 # '06-10-25'\n    # '%d. %B %Y', '%d. %b. %Y',  # '25. October 2006', '25. Oct. 2006'\n)\nDATETIME_INPUT_FORMATS = (\n    '%d.%m.%Y %H:%M:%S',    # '25.10.2006 14:30:59'\n    '%d.%m.%Y %H:%M',       # '25.10.2006 14:30'\n    '%d.%m.%Y',             # '25.10.2006'\n)\nDECIMAL_SEPARATOR = ','\nTHOUSAND_SEPARATOR = ' '\nNUMBER_GROUPING = 3\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/pt/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Bruno Miguel Custódio <bruno@brunomcustodio.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Nuno Mariz <nmariz@gmail.com>, 2011, 2012.\n# Paulo Köch <paulo.koch@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:47+0000\\n\"\n\"Last-Translator: Bruno Miguel Custódio <bruno@brunomcustodio.com>\\n\"\n\"Language-Team: Portuguese (http://www.transifex.com/projects/p/django/\"\n\"language/pt/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: pt\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"Africâner\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"Árabe\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"Azerbaijano\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"Búlgaro\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"Bielorusso\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"Bengalês\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"Bretão\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"Bósnio\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"Catalão\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"Checo\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"Galês\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"Dinamarquês\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"Alemão\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"Grego\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"Inglês\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"Inglês Britânico\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"Esperanto\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"Espanhol\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"Espanhol Argentino\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"Espanhol mexicano\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"Nicarágua Espanhol\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"Espanhol Venezuelano\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"Estónio\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"Basco\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"Persa\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"Filandês\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"Francês\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"Frisão\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"Irlandês\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"Galaciano\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"Hebraico\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"Hindi\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"Croata\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"Húngaro\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"Interlíngua\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"Indonésio\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"Islandês\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"Italiano\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"Japonês\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"Georgiano\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"Cazaque\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"Khmer\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"Canarês\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"Coreano\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"Luxemburguês\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"Lituano\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"Letão\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"Macedónio\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"Malaiala\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"Mongol\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"Norueguês (Bokmål)\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"Nepali\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"Holandês\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"Norueguês (Nynors)\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"Panjabi\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"Polaco\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"Português\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"Português Brasileiro\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"Romeno\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"Russo\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"Eslovaco\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"Esloveno\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"Albanês\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"Sérvio\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"Sérvio Latim\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"Sueco\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"Suaíli\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"Tamil\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"Telugu\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"Thai\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"Turco\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"Tatar\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"Udmurte\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"Ucraniano\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"Urdu\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"Vietnamita\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"Chinês Simplificado\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"Chinês Tradicional\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"Introduza um valor válido.\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"Introduza um endereço de e-mail válido.\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"\"\n\"Este valor apenas poderá conter letras, números, undercores ou hífenes.\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"Introduza um endereço IPv4 válido.\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"Insira um endereço IPv6 válido.\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"Digite um endereço válido IPv4 ou IPv6.\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"Introduza apenas números separados por vírgulas.\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"Garanta que este valor seja %(limit_value)s (tem %(show_value)s).\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"Garanta que este valor seja menor ou igual a %(limit_value)s.\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"Garanta que este valor seja maior ou igual a %(limit_value)s.\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Garanta que este valor tem no mínimo %(limit_value)d carateres (tem \"\n\"%(show_value)d).\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Garanta que este valor tem no máximo %(limit_value)d carateres (tem \"\n\"%(show_value)d).\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"%(field_name)s deverá ser único para %(date_field)s %(lookup)s.\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"e\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"%(model_name)s com este %(field_label)s já existe.\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"O valor %r não é uma opção válida.\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"Este campo não pode ser nulo.\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"Este campo não pode ser vazio.\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Campo do tipo: %(field_type)s\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"Inteiro\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"I valor '%s' deve ser um inteiro.\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"O valor '%s' deve ser True ou False.\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Boolean (Pode ser True ou False)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"String (até %(max_length)s)\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"Inteiros separados por virgula\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"\"\n\"O valor '%s' tem um formato de data inválido. Deve ser no formato AAAA-MM-DD.\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"\"\n\"O valor '%s' tem o formato correto (AAAA-MM-DD), mas é uma data inválida.\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"Data (sem hora)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\"O valor '%s' tem um formato inválido. Deve ser no formato AAAA-MM-DD HH:MM[:\"\n\"ss[.uuuuuu]][TZ].\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\"O valor '%s' tem o formato correto (AAAA-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) mas \"\n\"é uma data/hora inválida.\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"Data (com hora)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"O valor '%s' deve ser um número decimal.\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"Número décimal\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"Endereço de e-mail\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"Caminho do ficheiro\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"O valor '%s' deve ser um número em vírgula flutuante.\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"Número em vírgula flutuante\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"Inteiro grande (8 byte)\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"Endereço IPv4\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"Endereço IP\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"O valor '%s' deve ser None, True ou False.\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"Boolean (Pode ser True, False ou None)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"Inteiro positivo\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"Pequeno número inteiro positivo\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"Slug (até %(max_length)s)\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"Inteiro pequeno\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"Texto\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"\"\n\"O valor '%s' tem um formato inválido. Deve estar no formato HH:MM[:ss[.\"\n\"uuuuuu]].\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\"O valor '%s' tem o formato correto (HH:MM[:ss[.uuuuuu]]) mas é uma hora \"\n\"inválida.\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"Hora\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"Ficheiro\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"Imagem\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"O modelo %(model)s com a chave primária %(pk)r não existe.\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"Chave Estrangeira (tipo determinado pelo campo relacionado)\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"Relação de um-para-um\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"Relação de muitos-para-muitos\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"\"\n\"Mantenha pressionado o \\\"Control\\\", ou \\\"Command\\\" no Mac, para selecionar \"\n\"mais do que um.\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"Este campo é obrigatório.\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"Introduza um número inteiro.\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"Introduza um número.\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"Garanta que não contém no total mais do que %s dígitos.\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"Garanta que não contém mais do que %s casas decimais.\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"Garanta que não contém mais do que %s dígitos antes do ponto decimal.\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"Introduza uma data válida.\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"Introduza uma hora válida.\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"Introduza uma data/hora válida.\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"\"\n\"Nenhum ficheiro foi submetido. Verifique o tipo de codificação do formulário.\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"Nenhum ficheiro submetido.\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"O ficheiro submetido encontra-se vazio.\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\"Garanta que este nome do ficheiro tem no máximo %(max)d carateres (tem \"\n\"%(length)d).\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"\"\n\"Por favor, submeta um ficheiro ou remova a seleção da caixa, não ambos.\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\"Introduza uma imagem válida. O ficheiro que introduziu ou não é uma imagem \"\n\"ou está corrompido.\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"Introduza um URL válido.\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"\"\n\"Selecione uma opção válida. %(value)s não se encontra nas opções disponíveis.\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"Introduza uma lista de valores.\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"Ordem\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"Remover\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"Por favor corrija os dados duplicados em %(field)s.\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"\"\n\"Por favor corrija os dados duplicados em %(field)s, que deverá ser único.\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\"Por favor corrija os dados duplicados em %(field_name)s que deverá ser único \"\n\"para o %(lookup)s em %(date_field)s.\\\"\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"Por favor corrija os valores duplicados abaixo.\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"\"\n\"A chave estrangeira em linha não coincide com a chave primária na instância \"\n\"pai.\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"\"\n\"Selecione uma opção válida. Esse valor não se encontra opções disponíveis.\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"Selecione uma opção válida. %s não se encontra nas opções disponíveis.\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"\\\"%s\\\" não é um valor válido para uma chave primária.\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\"%(datetime)s não pode ser interpretada de fuso horário %(current_timezone)s; \"\n\"pode ser ambígua ou não podem existir.\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"Atualmente\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"Modificar\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"Limpar\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"Desconhecido\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"Sim\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"Não\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"sim,não,talvez\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"%(size)d byte\"\nmsgstr[1] \"%(size)d bytes\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s KB\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s MB\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s GB\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s TB\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s PB\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"p.m.\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"a.m.\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"PM\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"AM\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"meia-noite\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"meio-dia\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"Segunda-feira\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"Terça-feira\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"Quarta-feira\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"Quinta-feira\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"Sexta-feira\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"Sábado\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"Domingo\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"Seg\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"Ter\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"Qua\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"Qui\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"Sex\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"Sáb\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"Dom\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"Janeiro\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"Fevereiro\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"Março\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"Abril\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"Maio\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"Junho\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"Julho\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"Agosto\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"Setembro\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"Outubro\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"Novembro\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"Dezembro\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"jan\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"fev\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"mar\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"abr\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"mai\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"jun\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"jul\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"ago\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"set\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"out\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"nov\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"dez\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"Jan.\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"Fev.\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"Março\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"Abril\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"Maio\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"Jun.\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"Jul.\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"Ago.\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"Set.\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"Out.\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"Nov.\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"Dez.\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"Janeiro\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"Fevereiro\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"Março\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"Abril\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"Maio\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"Junho\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"Julho\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"Agosto\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"Setembro\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"Outubro\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"Novembro\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"Dezembro\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"%(truncated_text)s...\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"ou\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \", \"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"ano\"\nmsgstr[1] \"anos\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"mês\"\nmsgstr[1] \"meses\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"semana\"\nmsgstr[1] \"semanas\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"dia\"\nmsgstr[1] \"dias\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"hora\"\nmsgstr[1] \"horas\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"minuto\"\nmsgstr[1] \"minutos\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"minutos\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \", %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"Índices de diretório não são permitidas aqui.\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\\\"%(path)s\\\" não existe\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"Índice de %(directory)s\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"Nenhum ano especificado\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"Nenhum mês especificado\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"Nenhum dia especificado\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"Nenhuma semana especificado\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"Nenhum %(verbose_name_plural)s  disponível\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\"%(verbose_name_plural)s futuros indisponíveis porque %(class_name)s.\"\n\"allow_future é False.\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"Data inválida '%(datestr)s' formato '%(format)s'\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"Nenhum %(verbose_name)s de acordo com a procura.\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"Página não é 'última' ou não é possível converter para um inteiro.\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"Página inválida (%(page_number)s): %(message)s\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"Lista vazia e '%(class_name)s.allow_empty' é False.\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/pt/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/conf/locale/pt/formats.py",
    "content": "# -*- encoding: utf-8 -*-\n# This file is distributed under the same license as the Django package.\n#\n\n# The *_FORMAT strings use the Django date format syntax,\n# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\nDATE_FORMAT = r'j \\d\\e F \\d\\e Y'\nTIME_FORMAT = 'H:i:s'\nDATETIME_FORMAT = r'j \\d\\e F \\d\\e Y à\\s H:i'\nYEAR_MONTH_FORMAT = r'F \\d\\e Y'\nMONTH_DAY_FORMAT = r'j \\d\\e F'\nSHORT_DATE_FORMAT = 'd/m/Y'\nSHORT_DATETIME_FORMAT = 'd/m/Y H:i'\nFIRST_DAY_OF_WEEK = 0  # Sunday\n\n# The *_INPUT_FORMATS strings use the Python strftime format syntax,\n# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior\n# Kept ISO formats as they are in first position\nDATE_INPUT_FORMATS = (\n    '%Y-%m-%d', '%d/%m/%Y', '%d/%m/%y', # '2006-10-25', '25/10/2006', '25/10/06'\n    # '%d de %b de %Y', '%d de %b, %Y',   # '25 de Out de 2006', '25 Out, 2006'\n    # '%d de %B de %Y', '%d de %B, %Y',   # '25 de Outubro de 2006', '25 de Outubro, 2006'\n)\nDATETIME_INPUT_FORMATS = (\n    '%Y-%m-%d %H:%M:%S',     # '2006-10-25 14:30:59'\n    '%Y-%m-%d %H:%M',        # '2006-10-25 14:30'\n    '%Y-%m-%d',              # '2006-10-25'\n    '%d/%m/%Y %H:%M:%S',     # '25/10/2006 14:30:59'\n    '%d/%m/%Y %H:%M',        # '25/10/2006 14:30'\n    '%d/%m/%Y',              # '25/10/2006'\n    '%d/%m/%y %H:%M:%S',     # '25/10/06 14:30:59'\n    '%d/%m/%y %H:%M',        # '25/10/06 14:30'\n    '%d/%m/%y',              # '25/10/06'\n)\nDECIMAL_SEPARATOR = ','\nTHOUSAND_SEPARATOR = '.'\nNUMBER_GROUPING = 3\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/pt_BR/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <dudanogueira@gmail.com>, 2012.\n# Eduardo Carvalho <eduardocereto@gmail.com>, 2011, 2012.\n# Guilherme Gondim <semente@taurinus.org>, 2012.\n# Guilherme Gondim <semente+transifex@taurinus.org>, 2011, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Sandro  <sandrossv@hotmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:47+0000\\n\"\n\"Last-Translator: Guilherme Gondim <semente@taurinus.org>\\n\"\n\"Language-Team: Portuguese (Brazil) <django-l10n-portuguese@googlegroups.\"\n\"com>\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: pt_BR\\n\"\n\"Plural-Forms: nplurals=2; plural=(n > 1);\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"Africânder\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"Árabe\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"Azerbaijão\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"Búlgaro\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"Bielorrussa\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"Bengali\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"Bretão\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"Bósnio\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"Catalão\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"Tcheco\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"Galês\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"Dinamarquês\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"Alemão\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"Grego\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"Inglês\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"Inglês Britânico\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"Esperanto\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"Espanhol\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"Espanhol Argentino\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"Espanhol Mexicano\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"Espanhol Nicaraguense\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"Espanhol Venuzuelano\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"Estoniano\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"Basco\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"Persa\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"Finlandês\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"Francês\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"Frísia\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"Irlandês\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"Galiciano\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"Hebraico\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"Hindi\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"Croata\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"Húngaro\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"Interlíngua\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"Indonésio\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"Islandês\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"Italiano\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"Japonês\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"Georgiano\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"Cazaque\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"Khmer\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"Canarês\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"Coreano\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"Luxemburguês\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"Lituano\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"Letão\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"Macedônio\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"Malaiala\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"Mongol\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"Dano-norueguês\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"Nepalês\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"Neerlandês\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"Novo Norueguês\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"Punjabi\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"Polonês\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"Português\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"Português Brasileiro\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"Romeno\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"Russo\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"Eslovaco\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"Esloveno\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"Albanesa\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"Sérvio\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"Sérvio Latino\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"Sueco\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"Suaíli\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"Tâmil\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"Telugu\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"Tailandês\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"Turco\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"Tatar\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"Udmurt\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"Ucraniano\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"Urdu\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"Vietnamita\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"Chinês Simplificado\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"Chinês Tradicional\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"Informe um valor válido.\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"Informe um endereço de email válido.\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"\"\n\"Insira um \\\"slug\\\" válido consistindo de letras, números, sublinhados (_) ou \"\n\"hífens.\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"Insira um endereço IPv4 válido.\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"Insira um endereço IPv6 válido.\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"Insira um endereço IPv4 ou IPv6 válido.\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"Insira apenas dígitos separados por vírgulas.\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"Certifique-se de que o valor é %(limit_value)s (ele é %(show_value)s).\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"Certifique-se que este valor seja menor ou igual a %(limit_value)s.\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"Certifique-se que este valor seja maior ou igual a %(limit_value)s.\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Certifique-se de que o valor tenha no mínimo %(limit_value)d caracteres (ele \"\n\"possui %(show_value)d).\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Certifique-se de que o valor tenha no máximo %(limit_value)d caracteres (ele \"\n\"possui %(show_value)d).\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"\"\n\"O campo \\\"%(field_name)s\\\" deve ser único para %(lookup)s de \\\"%(date_field)s\"\n\"\\\".\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"e\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"%(model_name)s com este %(field_label)s já existe.\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"O valor %r não é uma escolha válida.\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"Este campo não pode ser nulo.\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"Este campo não pode estar vazio.\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Campo do tipo: %(field_type)s\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"Inteiro\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"O valor de '%s' precisa ser um inteiro.\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"O valor de '%s' deve ser True ou False.\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Booleano (Verdadeiro ou Falso)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"String (até %(max_length)s)\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"Inteiros separados por vírgula\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"\"\n\"O valor de '%s' tem um formato de data inválido. A data deve estar no \"\n\"formato AAAA-MM-DD.\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"\"\n\"O valor de '%s' tem o formato correto (AAAA-MM-DD), mas a data é inválida.\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"Data (sem hora)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\"O valor de '%s' tem um formato inválido. O formato deve ser AAAA-MM-DD HH:MM\"\n\"[:ss[.uuuuuu]][TZ].\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\"O valor de '%s' tem o formato correto (AAAA-MM-DD HH:MM[:ss[.uuuuuu]] [TZ]), \"\n\"mas é uma data/hora inválida.\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"Data (com hora)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"O valor de '%s' deve ser um número decimal.\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"Número decimal\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"Endereço de e-mail\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"Caminho do arquivo\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"O valor de '%s' deve ser um float.\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"Número de ponto flutuante\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"Inteiro grande (8 byte)\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"Endereço IPv4\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"Endereço IP\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"O valor de '%s' deve ser None, True ou False.\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"Booleano (Verdadeiro, Falso ou Nada)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"Inteiro positivo\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"Inteiro curto positivo\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"Slug (até %(max_length)s)\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"Inteiro curto\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"Texto\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"\"\n\"O valor de '%s' tem um formato inválido. Deve estar no formato HH:MM[:ss[.\"\n\"uuuuuu]].\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\"O valor de '%s' tem o formato correto (HH:MM[:ss[.uuuuuu]]), Mas é um \"\n\"horário inválido.\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"Hora\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"Arquivo\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"Imagem\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"Model %(model)s com chave primária %(pk)r não existe.\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"Chave Estrangeira (tipo determinado pelo campo relacionado)\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"Relacionamento um-para-um\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"Relacionamento muitos-para-muitos\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"\"\n\"Mantenha o \\\"Control\\\", ou \\\"Command\\\" no Mac, pressionado para selecionar \"\n\"mais de uma opção.\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"Este campo é obrigatório.\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"Informe um número inteiro.\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"Informe um número.\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"Certifique-se de que não tenha mais de %s dígitos no total.\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"Certifique-se de que não tenha mais de %s casa decimais.\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"\"\n\"Certifique-se de que não tenha mais de %s dígitos antes do ponto decimal.\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"Informe uma data válida.\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"Informe uma hora válida.\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"Informe uma data/hora válida.\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"Nenhum arquivo enviado. Verifique o tipo de codificação do formulário.\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"Nenhum arquivo foi enviado.\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"O arquivo enviado está vazio.\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\"Certifique-se de que o arquivo tenha no máximo %(max)d caracteres (ele \"\n\"possui %(length)d).\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"Por favor, envie um arquivo ou marque o checkbox, mas não ambos.\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\"Envie uma imagem válida. O arquivo enviado não é uma imagem ou está \"\n\"corrompido.\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"Informe uma URL válida.\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"Faça uma escolha válida. %(value)s não é uma das escolhas disponíveis.\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"Informe uma lista de valores.\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"Ordem\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"Remover\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"Por favor, corrija o valor duplicado para %(field)s.\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"\"\n\"Por favor, corrija o valor duplicado para %(field)s, o qual deve ser único.\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\"Por favor, corrija o dado duplicado para %(field_name)s, o qual deve ser \"\n\"único para %(lookup)s em %(date_field)s.\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"Por favor, corrija os valores duplicados abaixo.\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"\"\n\"A chave estrangeira no inline não coincide com a chave primária na instância \"\n\"pai.\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"Faça uma escolha válida. Sua escolha não é uma das disponíveis.\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"Faça uma escolha válida. %s não está disponível.\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"\\\"%s\\\" não é um valor válido para uma chave primária.\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\" %(datetime)s não pôde ser interpretado no fuso horário \"\n\"%(current_timezone)s; pode estar ambíguo ou pode não existir.\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"Atualmente\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"Modificar\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"Limpar\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"Desconhecido\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"Sim\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"Não\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"sim,não,talvez\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"%(size)d byte\"\nmsgstr[1] \"%(size)d bytes\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s KB\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s MB\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s GB\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s TB\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s PB\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"p.m.\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"a.m.\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"PM\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"AM\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"meia-noite\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"meio-dia\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"Segunda-feira\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"Terça-feira\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"Quarta-feira\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"Quinta-feira\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"Sexta-feira\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"Sábado\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"Domingo\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"Seg\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"Ter\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"Qua\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"Qui\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"Sex\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"Sab\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"Dom\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"Janeiro\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"Fevereiro\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"Março\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"Abril\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"Maio\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"Junho\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"Julho\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"Agosto\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"Setembro\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"Outubro\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"Novembro\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"Dezembro\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"jan\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"fev\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"mar\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"abr\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"mai\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"jun\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"jul\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"ago\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"set\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"out\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"nov\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"dez\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"Jan.\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"Fev.\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"Março\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"Abril\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"Maio\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"Junho\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"Julho\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"Ago.\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"Set.\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"Out.\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"Nov.\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"Dez.\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"Janeiro\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"Fevereiro\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"Março\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"Abril\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"Maio\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"Junho\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"Julho\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"Agosto\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"Setembro\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"Outubro\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"Novembro\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"Dezembro\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \" %(truncated_text)s...\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"ou\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \", \"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"ano\"\nmsgstr[1] \"anos\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"mês\"\nmsgstr[1] \"meses\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"semana\"\nmsgstr[1] \"semanas\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"dia\"\nmsgstr[1] \"dias\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"hora\"\nmsgstr[1] \"horas\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"minuto\"\nmsgstr[1] \"minutos\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"minutos\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \", %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"Índices de diretório não são permitidos aqui.\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\\\"%(path)s\\\" não existe\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"Índice de %(directory)s \"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"Ano não especificado\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"Mês não especificado\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"Dia não especificado\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"Semana não especificada\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"Nenhum(a) %(verbose_name_plural)s disponível\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\"%(verbose_name_plural)s futuros não disponíveis pois %(class_name)s.\"\n\"allow_future é False.\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"' %(datestr)s ' string de data inválida dado o formato ' %(format)s '\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"%(verbose_name)s  não encontrado de acordo com a consulta\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"A página não é a 'última', nem pode ser convertido para um int.\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"Página (%(page_number)s) inválida: %(message)s\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"Lista vazia e '%(class_name)s.allow_empty' é False.\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/pt_BR/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/conf/locale/pt_BR/formats.py",
    "content": "# -*- encoding: utf-8 -*-\n# This file is distributed under the same license as the Django package.\n#\nfrom __future__ import unicode_literals\n\n# The *_FORMAT strings use the Django date format syntax,\n# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\nDATE_FORMAT = r'j \\d\\e F \\d\\e Y'\nTIME_FORMAT = 'H:i'\nDATETIME_FORMAT = r'j \\d\\e F \\d\\e Y à\\s H:i'\nYEAR_MONTH_FORMAT = r'F \\d\\e Y'\nMONTH_DAY_FORMAT = r'j \\d\\e F'\nSHORT_DATE_FORMAT = 'd/m/Y'\nSHORT_DATETIME_FORMAT = 'd/m/Y H:i'\nFIRST_DAY_OF_WEEK = 0  # Sunday\n\n# The *_INPUT_FORMATS strings use the Python strftime format syntax,\n# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior\nDATE_INPUT_FORMATS = (\n    '%d/%m/%Y', '%d/%m/%y', # '25/10/2006', '25/10/06'\n    # '%d de %b de %Y', '%d de %b, %Y',   # '25 de Out de 2006', '25 Out, 2006'\n    # '%d de %B de %Y', '%d de %B, %Y',   # '25 de Outubro de 2006', '25 de Outubro, 2006'\n)\nDATETIME_INPUT_FORMATS = (\n    '%d/%m/%Y %H:%M:%S',     # '25/10/2006 14:30:59'\n    '%d/%m/%Y %H:%M',        # '25/10/2006 14:30'\n    '%d/%m/%Y',              # '25/10/2006'\n    '%d/%m/%y %H:%M:%S',     # '25/10/06 14:30:59'\n    '%d/%m/%y %H:%M',        # '25/10/06 14:30'\n    '%d/%m/%y',              # '25/10/06'\n)\nDECIMAL_SEPARATOR = ','\nTHOUSAND_SEPARATOR = '.'\nNUMBER_GROUPING = 3\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/ro/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <contact@mesimian.com>, 2011.\n# Daniel Ursache-Dogariu <contact@danniel.net>, 2011.\n# Denis Darii <sinednx@gmail.com>, 2011.\n#   <ionel.mc@gmail.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:47+0000\\n\"\n\"Last-Translator: Ionel Cristian Mărieș <ionel.mc@gmail.com>\\n\"\n\"Language-Team: Romanian (http://www.transifex.com/projects/p/django/language/\"\n\"ro/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ro\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?\"\n\"2:1));\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"Arabă\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"Azeră\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"Bulgară\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"Bengaleză\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"Bosniacă\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"Catalană\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"Cehă\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"Galeză\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"Daneză\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"Germană\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"Greacă\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"Engleză\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"Engleză britanică\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"Spaniolă\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"Spaniolă Argentiniană\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"Spaniolă Mexicană\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"Spaniolă Nicaragua\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"Estonă\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"Bască\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"Persană\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"Finlandeză\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"Franceză\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"Frizian\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"Irlandeză\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"Galiciană\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"Ebraică\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"Hindi\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"Croată\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"Ungară\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"Indoneză\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"Islandeză\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"Italiană\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"Japoneză\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"Georgiană\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"Khmeră\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"Limba kannada\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"Koreană\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"Lituaniană\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"Letonă\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"Macedoneană\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"Malayalam\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"Mongolă\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"Norvegiană Bokmal\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"Olandeză\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"Norvegiană Nynorsk\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"Punjabi\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"Poloneză\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"Portugheză\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"Portugheză braziliană\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"Română\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"Rusă\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"Slovacă\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"Slovenă\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"Albaneză\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"Sârbă\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"Sârbă latină\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"Suedeză\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"Limba tamila\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"Limba telugu\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"Tailandeză\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"Turcă\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"Ucraineană\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"Urdu\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"Vietnameză\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"Chineză simplificată\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"Chineză tradițională\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"Introduceți o valoare validă.\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"\"\n\"Introduceți un 'slug' valabil, compus numai din litere, numere, underscore \"\n\"sau cratime.\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"Introduceţi o adresă IPv4 validă.\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"Intoduceți o adresă IPv6 validă.\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"Introduceți o adresă IPv4 sau IPv6 validă.\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"Introduceţi numai numere separate de virgule.\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"\"\n\"Asiguraţi-vă că această valoare este %(limit_value)s  (este %(show_value)s ).\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"\"\n\"Asiguraţi-vă că această valoare este mai mică sau egală cu %(limit_value)s .\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"\"\n\"Asiguraţi-vă că această valoare este mai mare sau egală cu %(limit_value)s .\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Asiguraţi-vă că această valoare are cel puţin%(limit_value)d caractere \"\n\"(aceasta are %(show_value)d).\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Asiguraţi-vă că această valoare are cel mult %(limit_value)d caractere \"\n\"(aceasta are %(show_value)d).\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"%(field_name)s trebuie să fie unic pentru %(date_field)s %(lookup)s.\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"și\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"%(model_name)s cu %(field_label)s deja există.\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"Valoarea %r nu este o alegere valabilă.\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"Câmpul nu poate fi gol.\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"Acest câmp nu poate fi gol.\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Câmp de tip: %(field_type)s\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"Întreg\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"Valoarea '%s' trebuie să fie un număr întreg.\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"Valoarea '%s' trebuie sa fie doar True sau False.\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Boolean (adevărat sau fals)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"Şir de caractere (cel mult %(max_length)s caractere)\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"Numere întregi separate de virgule\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"\"\n\"Valoarea '%s' este o dată invalidă. Trebuie sa fie in forma YYYY-MM-DD.\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"Valoarea '%s' are forma corectă (YYYY-MM-DD) dar este o dată invalidă.\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"Dată (fară oră)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\"Valoarea '%s' este invalidă. Trebuie sa fie in forma YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ].\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\"Valoarea '%s' are forma corectă (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) dar \"\n\"sunt dată/timp invalide.\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"Dată (cu oră)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"Valoarea \\\"%s\\\" trebuie să fie un număr zecimal.\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"Număr zecimal\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"Adresă e-mail\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"Calea fisierului\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"'%s' value must be a float.\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"Număr cu virgulă\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"Întreg mare (8 octeți)\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"Adresă IPv4\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"Adresă IP\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"Valoarea '%s' trebuie să fie doar None, True sau False.\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"Boolean (adevărat, fals sau niciuna)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"Întreg pozitiv\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"Întreg pozitiv mic\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"Slug (până la %(max_length)s)\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"Întreg mic\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"Text\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"\"\n\"Valoarea '%s' are o formă invalida. Ea trebuie să fie in forma HH:MM[:ss[.\"\n\"uuuuuu]].\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\"Valoarea '%s' are forma corectă (HH:MM[:ss[.uuuuuu]]) dar este un timp \"\n\"invalid.\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"Timp\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"Fișier\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"Imagine\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"Modelul %(model)s cu pk %(pk)r nu există.\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"Foreign Key (tipul determinat de către câmpul relativ)\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"Relaţie unul-la-unul\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"Relație multe-la-multe\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"\"\n\" Ţine apăsat \\\"Control\\\", sau \\\"Command\\\" pe un Mac, pentru selecție \"\n\"multiplă.\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"Acest câmp este obligatoriu.\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"Introduceţi un număr întreg.\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"Introduceţi un număr.\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"Asigurați-vă că nu exista mai mult de %s cifre în total.\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"Asigurați-vă că nu exista mai mult de %s spații zecimale.\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"Asigurați-vă că nu exista mai mult de %s cifre înainte de virgulă.\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"Introduceți o dată validă.\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"Introduceți o oră validă.\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"Introduceți o dată/oră validă.\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"Nici un fișier nu a fost trimis. Verificați tipul fișierului.\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"Nici un fișier nu a fost trimis.\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"Fișierul încărcat este gol.\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\"Asiguraţi-vă că acest nume de fişier are cel mult %(max)d caractere (acesta \"\n\"are %(length)d).\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"Fie indicați un fişier, fie bifaţi caseta de selectare, nu ambele.\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\"Încărcaţi o imagine validă. Fişierul încărcat nu era o imagine sau era o \"\n\"imagine coruptă.\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"Introduceți un URL valid.\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"\"\n\"Selectați o opțiune validă. %(value)s nu face parte din opțiunile \"\n\"disponibile.\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"Introduceți o listă de valori.\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"Ordine\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"Șterge\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"Corectaţi datele duplicate pentru %(field)s.\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"Corectaţi datele duplicate pentru %(field)s , ce trebuie să fie unic.\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\"Corectaţi datele duplicate pentru %(field_name)s , care trebuie să fie unice \"\n\"pentru %(lookup)s  în %(date_field)s .\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"Corectaţi valorile duplicate de mai jos.\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"\"\n\"Foreign key-ul inline nu se potrivește cu cheia primară a istanței mamă.\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"\"\n\"Selectați o opțiune validă. Această opțiune nu face parte din opțiunile \"\n\"disponibile.\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"\"\n\"Selectați o opțiune validă. %s nu face parte din opțiunile disponibile.\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"\\\"%s\\\" nu este o valoare valabilă pentru o cheie primară.\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\"%(datetime)s nu poate fi interpetat in fusul orar %(current_timezone)s; este \"\n\"ambiguu sau nu există.\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"În prezent\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"Schimbă\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"Șterge\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"Necunoscut\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"Da\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"Nu\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"da,nu,poate\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"%(size)d byte\"\nmsgstr[1] \"%(size)d bytes\"\nmsgstr[2] \"%(size)d bytes\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s KO\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s MO\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s GO\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s TO\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s PO\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"p.m.\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"a.m.\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"PM\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"AM\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"miezul nopții\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"amiază\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"Luni\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"Marți\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"Miercuri\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"Joi\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"Vineri\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"Sâmbătă\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"Duminică\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"Lun\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"Mar\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"Mie\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"Joi\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"Vin\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"Sâm\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"Dum\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"Ianuarie\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"Februarie\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"Martie\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"Aprilie\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"Mai\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"Iunie\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"Iulie\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"August\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"Septembrie\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"Octombrie\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"Noiembrie\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"Decembrie\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"ian\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"feb\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"mar\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"apr\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"mai\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"iun\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"iul\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"aug\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"sep\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"oct\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"noi\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"dec\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"Ian.\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"Feb.\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"Martie\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"Aprilie\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"Mai\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"Iunie\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"Iulie\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"Aug.\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"Sept.\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"Oct.\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"Noie.\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"Dec.\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"Ianuarie\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"Februarie\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"Martie\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"Aprilie\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"Mai\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"Iunie\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"Iulie\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"August\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"Septembrie\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"Octombrie\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"Noiembrie\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"Decembrie\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"%(truncated_text)s...\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"sau\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \", \"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"an\"\nmsgstr[1] \"ani\"\nmsgstr[2] \"de ani\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"lună\"\nmsgstr[1] \"luni\"\nmsgstr[2] \"de luni\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"săptămână\"\nmsgstr[1] \"săptămâni\"\nmsgstr[2] \"de săptămâni\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"zi\"\nmsgstr[1] \"zile\"\nmsgstr[2] \"de zile\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"oră\"\nmsgstr[1] \"ore\"\nmsgstr[2] \"de ore\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"minut\"\nmsgstr[1] \"minute\"\nmsgstr[2] \"de minute\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"minute\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \", %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"Aici nu sunt permise indexuri la directoare\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\\\"%(path)s\\\" nu există\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"Index pentru %(directory)s\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"Niciun an specificat\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"Nicio lună specificată\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"Nicio zi specificată\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"Nicio săptămîna specificată\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"%(verbose_name_plural)s nu e disponibil\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\"Viitorul %(verbose_name_plural)s nu e disponibil deoarece %(class_name)s .\"\n\"allow_future este Fals.\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"Dată incorectă '%(datestr)s' considerând formatul '%(format)s'\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"Niciun rezultat pentru %(verbose_name)s care se potrivesc interogării\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"\"\n\"Pagina nu este \\\"ultima\\\" și nici nu poate fi convertită într-un întreg.\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"Listă goală și '%(class_name)s.allow_empty' este Fals.\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/ro/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/conf/locale/ro/formats.py",
    "content": "# -*- encoding: utf-8 -*-\n# This file is distributed under the same license as the Django package.\n#\n\n# The *_FORMAT strings use the Django date format syntax,\n# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\nDATE_FORMAT = 'j F Y'\nTIME_FORMAT = 'H:i:s'\nDATETIME_FORMAT = 'j F Y, H:i:s'\nYEAR_MONTH_FORMAT = 'F Y'\nMONTH_DAY_FORMAT = 'j F'\nSHORT_DATE_FORMAT = 'd.m.Y'\nSHORT_DATETIME_FORMAT = 'd.m.Y, H:i:s'\n# FIRST_DAY_OF_WEEK = \n\n# The *_INPUT_FORMATS strings use the Python strftime format syntax,\n# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior\n# DATE_INPUT_FORMATS = \n# TIME_INPUT_FORMATS = \n# DATETIME_INPUT_FORMATS = \nDECIMAL_SEPARATOR = ','\nTHOUSAND_SEPARATOR = '.'\n# NUMBER_GROUPING = \n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/ru/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <andrew@ei-grad.ru>, 2012.\n# Denis Darii <sinednx@gmail.com>, 2011.\n# Dimmus <dmitri.chudinov@gmail.com>, 2011.\n# Eugene MechanisM <contact@mechanism.name>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Алексей Борискин <sun.void@gmail.com>, 2011-2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:47+0000\\n\"\n\"Last-Translator: Eugene MechanisM <contact@mechanism.name>\\n\"\n\"Language-Team: Russian (http://www.transifex.com/projects/p/django/language/\"\n\"ru/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ru\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"Бурский\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"Арабский\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"Азербайджанский\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"Болгарский\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"Белоруский\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"Бенгальский\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"Бретонский\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"Боснийский\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"Каталанский\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"Чешский\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"Уэльский\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"Датский\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"Немецкий\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"Греческий\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"Английский\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"Британский английский\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"Эсперанто\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"Испанский\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"Аргентинский испанский\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"Мексиканский испанский\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"Никарагуанский испанский\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"Венесуэльский Испанский\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"Эстонский\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"Баскский\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"Персидский\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"Финский\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"Французский\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"Фризский\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"Ирландский\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"Галисийский\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"Иврит\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"Хинди\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"Хорватский\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"Венгерский\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"Интерлингва\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"Индонезийский\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"Исландский\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"Итальянский\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"Японский\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"Грузинский\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"Казахский\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"Кхмерский\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"Каннада\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"Корейский\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"Люксембургский\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"Литовский\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"Латвийский\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"Македонский\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"Малаялам\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"Монгольский\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"Норвежский (Букмол)\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"Непальский\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"Голландский\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"Норвежский (Нюнорск)\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"Панджаби\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"Польский\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"Португальский\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"Бразильский португальский\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"Румынский\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"Русский\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"Словацкий\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"Словенский\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"Албанский\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"Сербский\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"Сербский (латиница)\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"Шведский\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"Суахили\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"Тамильский\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"Телугу\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"Тайский\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"Турецкий\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"Татарский\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"Удмуртский\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"Украинский\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"Урду\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"Вьетнамский\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"Упрощенный китайский\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"Традиционный китайский\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"Введите правильное значение.\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"Введите правильный адрес электронной почты.\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"\"\n\"Значение должно состоять только из букв, цифр, знаков подчеркивания или \"\n\"дефиса.\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"Введите правильный IPv4 адрес.\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"Введите действительный IPv6 адрес.\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"Введите действительный IPv4 или IPv6 адрес.\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"Введите цифры, разделенные запятыми.\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"\"\n\"Убедитесь, что это значение — %(limit_value)s (сейчас оно — %(show_value)s).\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"Убедитесь, что это значение меньше либо равно %(limit_value)s.\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"Убедитесь, что это значение больше либо равно %(limit_value)s.\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Убедитесь, что это значение содержит не менее %(limit_value)d символов \"\n\"(сейчас %(show_value)d).\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Убедитесь, что это значение содержит не более %(limit_value)d символов \"\n\"(сейчас %(show_value)d).\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"\"\n\"Значение в поле %(field_name)s должно быть уникальным для %(lookup)s в поле \"\n\"%(date_field)s.\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"и\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"%(model_name)s с таким %(field_label)s уже существует.\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"Значения %r нет среди допустимых вариантов.\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"Это поле не может иметь значение NULL.\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"Это поле не может быть пустым.\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Поле типа %(field_type)s\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"Целое\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"'%s' значение должно быть целым числом.\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"'%s' значение должно быть True или False.\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Логическое (True или False)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"Строка (до %(max_length)s)\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"Целые, разделенные запятыми\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"'%s' значение задано неверно. Дата должна быть в формате ГГГГ-ММ-ДД.\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"\"\n\"Значение '%s' имеет корректный формат (YYYY-MM-DD), но это недействительная \"\n\"дата.\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"Дата (без указания времени)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\"Значение '%s' имеет неверный формат. Оно должно быть в формате YYYY-MM-DD HH:\"\n\"MM[:ss[.uuuuuu]][TZ].\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\"Значение '%s' имеет корректный формат (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) \"\n\"но это недействительные дата/время.\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"Дата (с указанием времени)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"Значение '%s' должно быть десятичным числом.\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"Число с фиксированной запятой\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"Адрес электронной почты\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"Путь к файлу\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"Значение '%s' должно быть числом с плавающей запятой.\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"Число с плавающей запятой\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"Длинное целое (8 байт)\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"IPv4 адрес\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"IP-адрес\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"Значение '%s' должно быть None, True или False.\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"Логическое (True, False или None)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"Положительное целое число\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"Положительное малое целое число\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"Слаг (до %(max_length)s)\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"Малое целое число\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"Текст\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"\"\n\"Значение '%s' имеет неверный формат. Оно должно быть в формате ЧЧ:ММ[:сс[.\"\n\"uuuuuu]].\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\"Значение '%s' имеет корректный формат (HH:MM[:ss[.uuuuuu]]), но это \"\n\"недействительное время.\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"Время\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"Файл\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"Изображение\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"Объект модели %(model)s с первичным ключом %(pk)r не существует.\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"Внешний ключ (тип определен по связанному полю)\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"Связь \\\"один к одному\\\"\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"Связь \\\"многие ко многим\\\"\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"\"\n\"Удерживайте \\\"Control\\\" (или \\\"Command\\\" на Mac), чтобы выбрать несколько \"\n\"значений.\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"Обязательное поле.\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"Введите целое число.\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"Введите число.\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"Убедитесь, что вы ввели не больше %s цифр.\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"Убедитесь, что вы ввели не больше %s цифр после запятой.\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"Убедитесь, что вы ввели не больше %s цифр до запятой.\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"Введите правильную дату.\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"Введите правильное время.\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"Введите правильную дату и время.\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"Ни одного файла не было отправлено. Проверьте тип кодировки формы.\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"Ни одного файла не было отправлено.\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"Отправленный файл пуст.\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\"Убедитесь, что это имя файла содержит не более %(max)d символов (сейчас \"\n\"%(length)d).\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"\"\n\"Пожалуйста, загрузите файл или поставьте флажок \\\"Очистить\\\", но не \"\n\"совершайте оба действия одновременно.\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\"Загрузите правильное изображение. Файл, который вы загрузили, поврежден или \"\n\"не является изображением.\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"Введите правильный URL.\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"Выберите корректный вариант. %(value)s нет среди допустимых значений.\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"Введите список значений.\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"Порядок\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"Удалить\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"Пожалуйста, измените повторяющееся значение в поле \\\"%(field)s\\\".\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"\"\n\"Пожалуйста, измените значение в поле %(field)s, оно должно быть уникальным.\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\"Пожалуйста, измените значение в поле %(field_name)s, оно должно быть \"\n\"уникальным для %(lookup)s в поле %(date_field)s.\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"Пожалуйста, измените повторяющиеся значения ниже.\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"Внешний ключ не совпадает с первичным ключом родителя.\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"\"\n\"Выберите корректный вариант. Вашего варианта нет среди допустимых значений.\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"Выберите корректный вариант. %s нет среди допустимых значений.\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"\\\"%s\\\" не является верным значением для первичного ключа.\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\"%(datetime)s не может быть интерпретирована в часовом поясе \"\n\"%(current_timezone)s; дата может быть неоднозначной или оказаться \"\n\"несуществующей.\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"На данный момент\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"Изменить\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"Очистить\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"Неизвестно\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"Да\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"Нет\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"да,нет,может быть\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"%(size)d байт\"\nmsgstr[1] \"%(size)d байта\"\nmsgstr[2] \"%(size)d байт\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s КБ\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s МБ\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s ГБ\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s ТБ\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s ПБ\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"п.п.\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"д.п.\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"ПП\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"ДП\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"полночь\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"полдень\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"Понедельник\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"Вторник\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"Среда\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"Четверг\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"Пятница\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"Суббота\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"Воскресенье\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"Пнд\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"Втр\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"Срд\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"Чтв\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"Птн\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"Сбт\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"Вск\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"Январь\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"Февраль\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"Март\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"Апрель\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"Май\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"Июнь\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"Июль\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"Август\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"Сентябрь\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"Октябрь\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"Ноябрь\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"Декабрь\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"янв\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"фев\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"мар\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"апр\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"май\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"июн\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"июл\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"авг\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"сен\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"окт\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"ноя\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"дек\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"Янв.\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"Фев.\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"Март\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"Апрель\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"Май\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"Июнь\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"Июль\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"Авг.\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"Сен.\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"Окт.\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"Ноя.\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"Дек.\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"января\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"февраля\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"марта\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"апреля\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"мая\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"июня\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"июля\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"августа\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"сентября\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"октября\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"ноября\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"декабря\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"%(truncated_text)s...\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"или\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \",\"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"год\"\nmsgstr[1] \"года\"\nmsgstr[2] \"лет\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"месяц\"\nmsgstr[1] \"месяца\"\nmsgstr[2] \"месяцев\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"неделя\"\nmsgstr[1] \"недели\"\nmsgstr[2] \"недель\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"день\"\nmsgstr[1] \"дня\"\nmsgstr[2] \"дней\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"час\"\nmsgstr[1] \"часа\"\nmsgstr[2] \"часов\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"минута\"\nmsgstr[1] \"минуты\"\nmsgstr[2] \"минут\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"минут\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \", %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"Просмотр списка файлов директории здесь не разрешен.\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\\\"%(path)s\\\" не существует\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"Список файлов директории %(directory)s\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"Не указан год\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"Не указан месяц\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"Не указан день\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"Не указана неделя\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"%(verbose_name_plural)s не доступен\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\"Будущие %(verbose_name_plural)s недоступны, потому что %(class_name)s.\"\n\"allow_future выставлен в значение \\\"Ложь\\\".\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"\"\n\"Не удалось распознать строку с датой '%(datestr)s', используя формат \"\n\"'%(format)s'\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"Не найден ни один %(verbose_name)s, соответствующий запросу\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"\"\n\"Номер страницы не содержит особое значение 'last', и его не удалось \"\n\"преобразовать к целому числу.\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"Неправильная страница (%(page_number)s): %(message)s\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"\"\n\"Список пуст, но '%(class_name)s.allow_empty' выставлено в значение \\\"Ложь\\\", \"\n\"что запрещает показывать пустые списки.\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/ru/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/conf/locale/ru/formats.py",
    "content": "# -*- encoding: utf-8 -*-\n# This file is distributed under the same license as the Django package.\n#\nfrom __future__ import unicode_literals\n\n# The *_FORMAT strings use the Django date format syntax,\n# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\nDATE_FORMAT = 'j E Y г.'\nTIME_FORMAT = 'G:i:s'\nDATETIME_FORMAT = 'j E Y г. G:i:s'\nYEAR_MONTH_FORMAT = 'F Y г.'\nMONTH_DAY_FORMAT = 'j F'\nSHORT_DATE_FORMAT = 'd.m.Y'\nSHORT_DATETIME_FORMAT = 'd.m.Y H:i'\nFIRST_DAY_OF_WEEK = 1  # Monday\n\n# The *_INPUT_FORMATS strings use the Python strftime format syntax,\n# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior\nDATE_INPUT_FORMATS = (\n    '%d.%m.%Y',  # '25.10.2006'\n    '%d.%m.%y',  # '25.10.06'\n)\nDATETIME_INPUT_FORMATS = (\n    '%d.%m.%Y %H:%M:%S',  # '25.10.2006 14:30:59'\n    '%d.%m.%Y %H:%M',     # '25.10.2006 14:30'\n    '%d.%m.%Y',           # '25.10.2006'\n    '%d.%m.%y %H:%M:%S',  # '25.10.06 14:30:59'\n    '%d.%m.%y %H:%M',     # '25.10.06 14:30'\n    '%d.%m.%y',           # '25.10.06'\n)\nDECIMAL_SEPARATOR = ','\nTHOUSAND_SEPARATOR = '\\xa0' # non-breaking space\nNUMBER_GROUPING = 3\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/sk/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Juraj Bubniak <>, 2012.\n# Juraj Bubniak <translations@jbub.eu>, 2012.\n# Marian Andre <marian@andre.sk>, 2011, 2012.\n# Martin Kosír <martin@martinkosir.net>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:47+0000\\n\"\n\"Last-Translator: Juraj Bubniak <translations@jbub.eu>\\n\"\n\"Language-Team: Slovak (http://www.transifex.com/projects/p/django/language/\"\n\"sk/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sk\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"afrikánsky\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"arabský\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"azerbajdžanský\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"bulharský\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"bieloruský\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"bengálsky\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"bretónsky\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"bosniansky\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"katalánsky\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"český\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"waleský\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"dánsky\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"nemecký\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"grécky\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"anglický\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"britský\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"esperantský\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"španielsky\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"argentínska španielčina\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"mexická španielčina\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"nikaragujská španielčina\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"venezuelská španielčina\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"estónsky\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"baskický\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"perzský\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"fínsky\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"francúzsky\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"frízsky\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"írsky\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"galícijský\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"hebrejský\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"hindský\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"chorvátsky\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"maďarský\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"interlinguánsky\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"indonézsky\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"islandský\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"taliansky\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"japonský\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"gruzínsky\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"kazašský\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"kmérsky\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"kanadský\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"kórejský\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"luxemburský\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"litovský\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"lotyšský\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"macedónsky\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"malajalámsky\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"mongolský\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"nórsky (Bokmal)\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"nepálsky\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"holandský\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"nórsky (Nynorsk)\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"pandžábsky\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"poľský\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"portugalský\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"portugalský (Brazília)\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"rumunský\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"ruský\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"slovenský\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"slovinský\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"albánsky\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"srbský\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"srbský (Latin)\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"švédsky\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"svahilský\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"tamilský\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"telúgsky\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"thajský\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"turecký\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"tatársky\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"udmurtský\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"ukrajinský\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"urdský\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"vietnamský\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"čínsky (zjednodušene)\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"čínsky (tradične)\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"Zadajte platnú hodnotu.\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"Zadajte platnú e-mailovú adresu.\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"\"\n\"Zadajte platný 'slug' pozostávajúci z písmen, čísel, podčiarkovníkov alebo \"\n\"pomlčiek.\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"Zadajte platnú IPv4 adresu.\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"Zadajte platnú IPv6 adresu.\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"Zadajte platnú IPv4 alebo IPv6 adresu.\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"Zadajte len číslice oddelené čiarkami.\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"Uistite sa, že táto hodnota je %(limit_value)s (je to %(show_value)s).\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"Uistite sa, že táto hodnota je menšia alebo rovná %(limit_value)s.\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"Uistite sa, že hodnota je väčšia alebo rovná %(limit_value)s.\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Uistite sa, že zadaná hodnota má najmenej %(limit_value)d znakov (má \"\n\"%(show_value)d).\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Uistite sa, že táto hodnota má najviac %(limit_value)d  znakov (má \"\n\"%(show_value)d).\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"%(field_name)s musí byť unikátne pre %(date_field)s %(lookup)s.\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"a\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"%(model_name)s s týmto %(field_label)s už existuje.\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"Hodnota %r nie je platná možnosť.\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"Toto pole nemôže byť prázdne.\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"Toto pole nemôže byť prázdne.\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Pole typu: %(field_type)s\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"Celé číslo\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"Hodnota '%s' musí byť celé číslo.\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"Hodnota '%s' value musí byť True alebo False.\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Logická hodnota (buď True alebo False)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"Reťazec (až do %(max_length)s)\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"Celé čísla oddelené čiarkou\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"Hodnota '%s' má neplatný tvar dátumu. Musí byť v tvare YYYY-MM-DD.\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"\"\n\"Hodnota '%s' je v správnom tvare (YYYY-MM-DD), ale je to neplatný dátum.\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"Dátum (bez času)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\"Hodnota '%s' má neplatný tvar. Musí byť v tvare YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ].\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\"Hodnota '%s' je v správnom tvare (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]), ale \"\n\"je to neplatný dátum/čas.\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"Dátum (a čas)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"Hodnota '%s' musí byť desatinné číslo.\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"Desatinné číslo\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"E-mail adresa\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"Cesta k súboru\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"Hodnota '%s' musí byť desatinné čislo s plávajúcou desatinnou čiarkou.\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"Číslo s plávajúcou desatinnou čiarkou\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"Veľké celé číslo (8 bajtov)\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"IPv4 adresa\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"IP adresa\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"Hodnota '%s' musí byť buď None, True alebo False.\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"Logická hodnota (buď True, False alebo None)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"Kladné celé číslo\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"Malé kladné celé číslo\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"Identifikátor (najviac %(max_length)s)\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"Malé celé číslo\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"Text\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"Hodnota '%s' má neplatný tvar. Musí byť v tvare HH:MM[:ss[.uuuuuu]].\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\"Hodnota '%s' je v správnom tvare (HH:MM[:ss[.uuuuuu]]), ale je to neplaný \"\n\"čas.\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"Čas\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"Súbor\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"Obrázok\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"Model %(model)s s primárnym kľúčom %(pk)r neexistuje.\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"Cudzí kľúč (typ určuje pole v relácii)\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"Typ relácie: jedna k jednej\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"Typ relácie: M ku N\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"\"\n\"Ak chcete vybrať viac ako jednu položku, podržte \\\"Control\\\", alebo \\\"Command\"\n\"\\\" na počítači Mac.\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"Toto pole je povinné.\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"Zadajte celé číslo.\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"Zadajte číslo.\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"Uistite sa, že nie je zadaných celkovo viac ako %s číslic.\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"Uistite sa, že nie je zadaných viac ako %s desatinných miest.\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"\"\n\"Uistite sa, že nie je zadaných viac ako %s číslic pred desatinnou čiarkou.\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"Zadajte platný dátum.\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"Zadajte platný čas.\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"Zadajte platný dátum a čas.\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"Súbor nebol odoslaný. Skontrolujte typ kódovania vo formulári.\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"Žiaden súbor nebol odoslaný.\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"Odoslaný súbor je prázdny.\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"Uistite sa, že názov súboru má najviac %(max)d znakov (má %(length)d).\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"\"\n\"Odošlite prosím súbor alebo zaškrtnite políčko pre vymazanie vstupného poľa, \"\n\"nie oboje.\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\"Nahrajte platný obrázok. Súbor, ktorý ste odoslali nebol obrázok alebo bol \"\n\"poškodený.\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"Zadajte platnú URL adresu.\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"Vyberte platnú voľbu. %(value)s nepatrí medzi dostupné možnosti.\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"Vložte zoznam hodnôt.\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"Poradie\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"Odstrániť\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"Prosím, opravte duplicitné dáta pre %(field)s.\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"Dáta pre %(field)s musia byť unikátne, prosím, opravte duplikáty.\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\"Dáta pre %(field_name)s musia byť unikátne pre %(lookup)s v %(date_field)s, \"\n\"prosím, opravte duplikáty.\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"Prosím, opravte nižšie uvedené duplicitné hodnoty. \"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"\"\n\"Vnorený cudzí kľúč sa nezhoduje s nadradenou inštanciou primárnho kľúča.\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"\"\n\"Vyberte platnú možnosť. Vybraná položka nepatrí medzi dostupné možnosti.\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"Vyberte platnú možnost. %s nepatrí medzi dostupné možnosti.\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"\\\"%s\\\" nie je platná hodnota pre primárny kľúč.\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\"Hodnota %(datetime)s v časovej zóne %(current_timezone)s sa nedá \"\n\"interpretovať; môže byť nejednoznačná alebo nemusí existovať.\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"Súčasne\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"Zmeniť\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"Vymazať\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"Neznámy\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"Áno\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"Nie\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"áno,nie,možno\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"%(size)d bajt\"\nmsgstr[1] \"%(size)d bajty\"\nmsgstr[2] \"%(size)d bajtov\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s KB\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s MB\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s GB\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s TB\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s PB\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"popoludní\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"dopoludnia\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"popoludní\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"dopoludnia\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"polnoc\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"poludnie\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"pondelok\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"utorok\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"streda\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"štvrtok\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"piatok\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"sobota\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"nedeľa\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"po\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"ut\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"st\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"št\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"pi\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"so\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"ne\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"január\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"február\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"marec\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"apríl\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"máj\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"jún\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"júl\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"august\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"september\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"október\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"november\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"december\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"jan\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"feb\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"mar\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"apr\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"máj\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"jún\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"júl\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"aug\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"sep\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"okt\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"nov\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"dec\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"jan.\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"feb.\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"mar.\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"apr.\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"máj\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"jún\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"júl\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"aug.\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"sep.\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"okt.\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"nov.\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"dec.\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"január\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"február\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"marec\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"apríl\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"máj\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"jún\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"júl\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"august\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"september\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"október\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"november\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"december\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"%(truncated_text)s...\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"alebo\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \", \"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"rok\"\nmsgstr[1] \"roky\"\nmsgstr[2] \"rokov\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"mesiac\"\nmsgstr[1] \"mesiace\"\nmsgstr[2] \"mesiacov\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"týždeň\"\nmsgstr[1] \"týždne\"\nmsgstr[2] \"týždnov\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"deň\"\nmsgstr[1] \"dni\"\nmsgstr[2] \"dní\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"hodina\"\nmsgstr[1] \"hodiny\"\nmsgstr[2] \"hodín\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"minúta\"\nmsgstr[1] \"minúty\"\nmsgstr[2] \"minút\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"minúty\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \", %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"Výpis adresárov tu nieje povolený.\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\\\"%(path)s\\\" neexistuje\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"Výpis %(directory)s\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"Nešpecifikovaný rok\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"Nešpecifikovaný mesiac\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"Nešpecifikovaný deň\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"Nešpecifikovaný týždeň\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"%(verbose_name_plural)s nie sú dostupné\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\"Budúce %(verbose_name_plural)s nie sú dostupné pretože %(class_name)s.\"\n\"allow_future má hodnotu False. \"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"Neplatný dátumový reťazec  '%(datestr)s' pre formát '%(format)s'\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"\"\n\"Nebol nájdený žiadny %(verbose_name)s zodpovedajúci databázovému dopytu\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"\"\n\"Stránka nemá hodnotu 'last' a taktiež nie je možné prekonvertovať hodnotu na \"\n\"celé číslo.\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"Nesprávna stránka (%(page_number)s): %(message)s\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"\"\n\"Zoznam je prázdny a zároveň má '%(class_name)s.allow_empty' hodnotu False.\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/sk/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/conf/locale/sk/formats.py",
    "content": "# -*- encoding: utf-8 -*-\n# This file is distributed under the same license as the Django package.\n#\nfrom __future__ import unicode_literals\n\n# The *_FORMAT strings use the Django date format syntax,\n# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\nDATE_FORMAT = 'j. F Y'\nTIME_FORMAT = 'G:i:s'\nDATETIME_FORMAT = 'j. F Y G:i:s'\nYEAR_MONTH_FORMAT = 'F Y'\nMONTH_DAY_FORMAT = 'j. F'\nSHORT_DATE_FORMAT = 'd.m.Y'\nSHORT_DATETIME_FORMAT = 'd.m.Y G:i:s'\nFIRST_DAY_OF_WEEK = 1 # Monday\n\n# The *_INPUT_FORMATS strings use the Python strftime format syntax,\n# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior\nDATE_INPUT_FORMATS = (\n    '%d.%m.%Y', '%d.%m.%y',     # '25.10.2006', '25.10.06'\n    '%y-%m-%d',                 # '06-10-25'\n    # '%d. %B %Y', '%d. %b. %Y',  # '25. October 2006', '25. Oct. 2006'\n)\nDATETIME_INPUT_FORMATS = (\n    '%d.%m.%Y %H:%M:%S',    # '25.10.2006 14:30:59'\n    '%d.%m.%Y %H:%M',       # '25.10.2006 14:30'\n    '%d.%m.%Y',             # '25.10.2006'\n)\nDECIMAL_SEPARATOR = ','\nTHOUSAND_SEPARATOR = '\\xa0' # non-breaking space\nNUMBER_GROUPING = 3\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/sl/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <domen@dev.si>, 2012.\n# iElectric <domen@dev.si>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Jure Cuhalev <gandalf@owca.info>, 2012.\n#  <zejn@kiberpipa.org>, 2013.\n#   <zejn@kiberpipa.org>, 2012.\n# zejn <zejn@kiberpipa.org>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-02-15 18:10+0000\\n\"\n\"Last-Translator: zejn <zejn@kiberpipa.org>\\n\"\n\"Language-Team: Slovenian (http://www.transifex.com/projects/p/django/\"\n\"language/sl/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sl\\n\"\n\"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n\"\n\"%100==4 ? 2 : 3);\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"Afrikanščina\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"Arabščina\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"Azerbajdžanščina\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"Bolgarščina\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"Belorusko\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"Bengalščina\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"Bretonščina\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"Bosanščina\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"Katalonščina\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"Češčina\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"Valežanski jezik\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"Danščina\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"Nemščina\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"Grščina\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"Angleščina\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"Britanska Angleščina\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"Esperanto\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"Španščina\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"Argentinska španščina\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"Mehiška španščina\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"Nikaragvijska španščina\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"Španščina (Venezuela)\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"Estonščina\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"Baskovščina\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"Perzijščina\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"Finščina\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"Francoščina\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"Frizijščina\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"Irščina\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"Galičanski jezik\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"Hebrejski jezik\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"Hindujščina\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"Hrvaščina\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"Madžarščina\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"Interlingua\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"Indonezijski\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"Islandski jezik\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"Italijanščina\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"Japonščina\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"Gruzijščina\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"Kazaščina\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"Kmerščina\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"Kanareščina\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"Korejščina\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"Luksemburščina\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"Litvanščina\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"Latvijščina\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"Makedonščina\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"Malajalščina\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"Mongolščina\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"Norveščina Bokmal\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"Nepalščina\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"Nizozemščina\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"Norveščina Nynorsk\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"Pandžabščina\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"Poljščina\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"Portugalščina\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"Brazilska portugalščina\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"Romunščina\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"Ruščina\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"Slovaščina\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"Slovenščina\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"Albanščina\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"Srbščina\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"Srbščina v latinici\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"Švedščina\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"Svahili\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"Tamilščina\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"Teluščina\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"Tajski jezik\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"Turščina\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"Tatarščina\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"Udmurski jezik\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"Ukrajinščina\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"Jezik Urdu\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"Vietnamščina\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"Poenostavljena kitajščina\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"Tradicionalna kitajščina\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"Vnesite veljavno vrednost.\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"Vnesite veljaven e-poštni naslov.\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"\"\n\"Vnesite veljavno URL okrajšavo. Vrednost sme vsebovati le črke, števila, \"\n\"podčrtaje ali pomišljaje.\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"Vnesite veljaven IPv4 naslov.\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"Vnesite veljaven IPv6 naslov.\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"Vnesite veljaven IPv4 ali IPv6 naslov.\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"Vnesite samo števila, ločena z vejicami.\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"\"\n\"Poskrbite, da bo ta vrednost %(limit_value)s. Trenutno je %(show_value)s.\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"Poskrbite, da bo ta vrednost manj kot ali natanko %(limit_value)s.\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"Poskrbite, da bo ta vrednost večja ali enaka %(limit_value)s.\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Poskrbite, da bo ta vrednost vsaj %(limit_value)d znakov. Trenutno jih ima \"\n\"%(show_value)d.\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Poskrbite, da bo imela ta vrednost največ %(limit_value)d znakov. Trenutno \"\n\"jih ima %(show_value)d.\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"%(field_name)s mora biti edinstveno za %(date_field)s %(lookup)s.\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"in\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"%(model_name)s s tem %(field_label)s že obstaja.\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"Vrednost %r ni veljavna izbira.\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"To polje ne more biti prazno.\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"To polje ne more biti prazno.\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Polje tipa: %(field_type)s\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"Celo število (integer)\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"Vrednost '%s' mora biti celoštevilska.\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"Vrednost '%s' mora biti bodisi \\\"res\\\" bodisi \\\"ni res\\\".\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Boolova vrednost (True ali False)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"Niz znakov (vse do %(max_length)s)\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"Z vejico ločena cela števila (integer)\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"Vrednost '%s' je v napačnem zapisu. Biti mora v obliki LLLL-MM-DD.\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"Vrednost '%s' je v pravilnem zapisu (LLLL-MM-DD), a ta dan ne obstaja.\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"Datum (brez ure)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\"Vrednost '%s' ima je v neveljavnem zapisu. Biti mora v obliki LLLL-MM-DD UU:\"\n\"MM[:ss[.uuuuuu]][TZ].\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"Vrednost '%s' je v pravilnem zapisu, a ta čas ne obstaja.\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"Datum (z uro)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"Vrednost '%s' mora biti decimalno število.\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"Decimalno število\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"E-poštni naslov\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"Pot do datoteke\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"Vrednost '%s' mora biti decimalno število v plavajoči vejici.\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"Število s plavajočo vejico\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"Velika (8 bajtna) cela števila \"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"IPv4 naslov\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"IP naslov\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"Vrednost '%s' mora biti ali brez vrednosti ali \\\"res\\\" ali \\\"ni res\\\".\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"Boolova vrednost (True, False ali None)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"Pozitivno celo število\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"Pozitivno celo število (do 64 tisoč)\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"Okrajšava naslova (do največ %(max_length)s znakov)\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"Celo število\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"Besedilo\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"\"\n\"Vrednost '%s' je v napačnem zapisu. Biti mora v obliki UU:MM[:ss[.uuuuuu]].\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"Vrednost '%s' je v pravilni obliki, a ta čas ne obstaja.\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"Čas\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"URL (spletni naslov)\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"Datoteka\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"Slika\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"Model %(model)s z glavnim ključem %(pk)r ne obstaja.\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"Tuji ključ (tip odvisen od povezanega polja)\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"Relacija ena-na-ena\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"Relacija več-na-več\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"Držite \\\"Control\\\" (ali \\\"Command\\\" na Mac-u) za izbiro več kot enega.\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"To polje je obvezno.\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"Vnesite celo število.\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"Vnesite število.\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"Poskrbite, da skupno ne bo več kot %s števil.\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"Poskrbite, da skupno ne bo več kot %s decimalnih mest.\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"Poskrbite, da ne bo več kot %s števil pred decimalno piko.\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"Vnesite veljaven datum.\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"Vnesite veljaven čas.\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"Vnesite veljaven datum/čas.\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"Datoteka ni bila poslana. Preverite nabor znakov v formi.\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"Poslali niste nobene datoteke.\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"Poslana datoteka je prazna.\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\"Poskrbite, da bo imela ta datoteka največ %(max)d znakov (trenutno jih ima \"\n\"%(length)d).\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"Prosim oddaj datoteko ali izberi počisti okvir, ampak ne oboje hkrati.\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\"Naložite veljavno sliko. Naložena datoteka ni bila slika ali pa je bila le-\"\n\"ta okvarjena.\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"Vnesite veljaven URL naslov.\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"Izberite veljavno možnost. %(value)s ni med ponujenimi izbirami.\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"Vnesite seznam vrednosti.\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"Razvrsti\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"Izbriši\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"Prosimo, odpravite podvojene vrednosti za %(field)s.\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"\"\n\"Prosimo popravite podvojene vrednosti za %(field)s, ki morajo biti unikatne.\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\"Prosimo popravite podvojene vrednosti za polje %(field_name)s, ki mora biti \"\n\"edinstveno za %(lookup)s po %(date_field)s.\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"Prosimo odpravite podvojene vrednosti spodaj.\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"Tuji ključ se ne ujema z glavnim ključem povezanega vnosa.\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"Izberite veljavno možnost. Te možnosti ni med ponujenimi izbirami.\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"Izberite veljavno možnost. %s ni med ponujenimi izbirami.\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"\\\"%s\\\" ni veljavna vrednost za glavni ključ.\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\"Vrednosti %(datetime)s ni bilo možno razumeti v časovnem pasu \"\n\"%(current_timezone)s; ali je izraz dvoumen ali pa ne obstaja.\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"Trenutno\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"Spremeni\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"Počisti\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"Neznano\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"Da\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"Ne\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"da,ne,morda\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"%(size)d bajt\"\nmsgstr[1] \"%(size)d bajta\"\nmsgstr[2] \"%(size)d bajti\"\nmsgstr[3] \"%(size)d bajtov\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s KB\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s MB\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s GB\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s TB\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s PB\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"p.m.\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"a.m.\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"PM\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"AM\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"polnoč\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"poldne\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"ponedeljek\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"torek\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"sreda\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"četrtek\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"petek\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"sobota\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"nedelja\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"pon\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"tor\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"sre\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"čet\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"pet\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"sob\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"ned\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"januar\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"februar\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"marec\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"april\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"maj\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"junij\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"julij\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"avgust\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"september\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"oktober\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"november\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"december\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"jan\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"feb\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"mar\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"apr\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"maj\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"jun\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"jul\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"avg\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"sep\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"okt\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"nov\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"dec\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"Jan\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"Feb.\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"Marec\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"April\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"Maj\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"Junij\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"Julij\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"Avg.\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"Sept.\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"Okt.\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"Nov.\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"Dec.\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"Januar\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"Februar\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"Marec\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"April\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"Maj\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"Junij\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"Julij\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"Avgust\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"September\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"Oktober\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"November\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"December\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"%(truncated_text)s...\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"ali\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \", \"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"leto\"\nmsgstr[1] \"leti\"\nmsgstr[2] \"leta\"\nmsgstr[3] \"let\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"mesec\"\nmsgstr[1] \"meseca\"\nmsgstr[2] \"meseci\"\nmsgstr[3] \"mesecev\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"teden\"\nmsgstr[1] \"tedna\"\nmsgstr[2] \"tedni\"\nmsgstr[3] \"tednov\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"dan\"\nmsgstr[1] \"dneva\"\nmsgstr[2] \"dnevi\"\nmsgstr[3] \"dni\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"ura\"\nmsgstr[1] \"uri\"\nmsgstr[2] \"ure\"\nmsgstr[3] \"ur\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"minuta\"\nmsgstr[1] \"minuti\"\nmsgstr[2] \"minute\"\nmsgstr[3] \"minut\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"minute\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \", %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"Prikaz vsebine mape ni dovoljen.\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\\\"%(path)s\\\" ne obstaja.\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"Vsebina mape %(directory)s\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"Leto ni vnešeno\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"Mesec ni vnešen\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"Dan ni vnešen\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"Teden ni vnešen\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"Na voljo ni noben %(verbose_name_plural)s\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\"Prihodnje %(verbose_name_plural)s niso na voljo, ker je vrednost \"\n\"%(class_name)s.allow_future False.\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"\"\n\"Neveljavna oblika datuma '%(datestr)s' glede na pričakovano obliko \"\n\"'%(format)s'\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"Noben %(verbose_name)s ne ustreza poizvedbi\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"Strani niti ni 'last' niti ni celo število.\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"Neveljavna stran (%(page_number)s): %(message)s\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"Prazen seznam ob nastavitvi '%(class_name)s.allow_empty = False'.\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/sl/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/conf/locale/sl/formats.py",
    "content": "# -*- encoding: utf-8 -*-\n# This file is distributed under the same license as the Django package.\n#\n\n# The *_FORMAT strings use the Django date format syntax,\n# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\nDATE_FORMAT = 'd. F Y'\nTIME_FORMAT = 'H:i:s'\nDATETIME_FORMAT = 'j. F Y. H:i'\nYEAR_MONTH_FORMAT = 'F Y'\nMONTH_DAY_FORMAT = 'j. F'\nSHORT_DATE_FORMAT = 'j. M. Y'\nSHORT_DATETIME_FORMAT = 'j.n.Y. H:i'\nFIRST_DAY_OF_WEEK = 0\n\n# The *_INPUT_FORMATS strings use the Python strftime format syntax,\n# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior\nDATE_INPUT_FORMATS = (\n    '%d.%m.%Y', '%d.%m.%y',         # '25.10.2006', '25.10.06'\n    '%d-%m-%Y',                     # '25-10-2006'\n    '%d. %m. %Y', '%d. %m. %y',     # '25. 10. 2006', '25. 10. 06'\n)\n\nDATETIME_INPUT_FORMATS = (\n    '%d.%m.%Y %H:%M:%S',            # '25.10.2006 14:30:59'\n    '%d.%m.%Y %H:%M',               # '25.10.2006 14:30'\n    '%d.%m.%Y',                     # '25.10.2006'\n    '%d.%m.%y %H:%M:%S',            # '25.10.06 14:30:59'\n    '%d.%m.%y %H:%M',                # '25.10.06 14:30'\n    '%d.%m.%y',                     # '25.10.06'\n    '%d-%m-%Y %H:%M:%S',            # '25-10-2006 14:30:59'\n    '%d-%m-%Y %H:%M',               # '25-10-2006 14:30'\n    '%d-%m-%Y',                     # '25-10-2006'\n    '%d. %m. %Y %H:%M:%S',          # '25. 10. 2006 14:30:59'\n    '%d. %m. %Y %H:%M',             # '25. 10. 2006 14:30'\n    '%d. %m. %Y',                   # '25. 10. 2006'\n    '%d. %m. %y %H:%M:%S',          # '25. 10. 06 14:30:59'\n    '%d. %m. %y %H:%M',             # '25. 10. 06 14:30'\n    '%d. %m. %y',                   # '25. 10. 06'\n)\n\nDECIMAL_SEPARATOR = ','\nTHOUSAND_SEPARATOR = '.'\nNUMBER_GROUPING = 3\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/sq/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Besnik <besnik@programeshqip.org>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:47+0000\\n\"\n\"Last-Translator: Besnik <besnik@programeshqip.org>\\n\"\n\"Language-Team: Albanian (http://www.transifex.com/projects/p/django/language/\"\n\"sq/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sq\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"Afrikaans\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"Arabe\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"Azerbaixhanase\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"Bulgare\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"Bjelloruse\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"Bengali\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"Bretone\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"Boshnjake\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"Katalane\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"Çeke\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"Uellsiane\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"Daneze\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"Gjermane\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"Greke\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"Angleze\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"Anglishte Britanike\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"Esperanto\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"Spanjolle\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"Spanjishte Argjentinase\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"Spanjishte Meksikane\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"Spanjishte Nikaraguane\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"Spanjishte Venezueliane\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"Estoneze\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"Baske\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"Persiane\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"Finlandeze\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"Frënge\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"Frisiane\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"Irlandeze\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"Galike\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"Hebraishte\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"Indiane\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"Kroate\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"Hungareze\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"Interlingua\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"Indoneziane\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"Islandeze\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"Italiane\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"Japoneze\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"Gjeorgjiane\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"Kazake\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"Khmere\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"Kannada\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"Koreane\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"Luksemburgase\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"Lituaneze\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"Latviane\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"Maqedone\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"Malajalame\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"Mongoliane\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"Norvegjeze Bokmal\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"Nepaleze\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"Holandeze\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"Norvegjeze Nynorsk\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"Panxhabe\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"Polake\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"Portugeze\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"Portugeze Braziliane\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"Rumune\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"Ruse\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"Slovake\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"Slovene\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"Shqipe\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"Serbe\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"Serbe Latine\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"Suedeze\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"Swahili\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"Tamileze\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"Telugu\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"Tailandeze\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"Turke\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"Tatare\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"Udmurt\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"Ukrainase\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"Urdu\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"Vietnameze\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"Kineze e Thjeshtuar\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"Kineze Tradicionale\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"Jepni vlerë të vlefshme.\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"Jepni një adresë email të vlefshme.\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"\"\n\"Jepni një 'slug' të vlefshëm, të përbërë nga shkronja, numra, nëvija ose \"\n\"vija në mes.\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"Jepni një vendndodhje të vlefshme IPv4.\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"Jepni një adresë IPv6 të vlefshme\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"Jepninjë adresë IPv4 ose IPv6 të vlefshme.\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"Jepni vetëm shifra të ndara nga presje.\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"\"\n\"Sigurohuni që kjo vlerë të jetë %(limit_value)s (është %(show_value)s).\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"\"\n\"Sigurohuni që kjo vlerë të jetë më e vogël ose baraz me %(limit_value)s.\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"Sigurohuni që kjo vlerë është më e madhe ose baraz me %(limit_value)s.\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Sigurohuni që kjo vlerë të ketë të paktën %(limit_value)d shenja (ka \"\n\"%(show_value)d).\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Sigurohuni që kjo vlerë të ketë e shumta %(limit_value)d shenja (ka \"\n\"%(show_value)d).\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"%(field_name)s duhet të jetë unike për %(date_field)s %(lookup)s.\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \" dhe \"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"Ka tashmë një %(model_name)s me këtë %(field_label)s.\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"Vlera %r nuk është zgjedhje e vlefshme.\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"Kjo fushë nuk mund të jetë bosh.\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"Kjo fushë nuk mund të jetë e zbrazët.\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Fushë e llojit: %(field_type)s\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"Numër i plotë\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"Vlera '%s' duhet të jetë numër i plotë.\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"Vlera '%s' duhet të jetë ose True, ose False.\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Buleane (Ose True, ose False)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"Varg (deri në %(max_length)s)\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"Numra të plotë të ndarë me presje\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"\"\n\"Vlera '%s' ka një format të pavlefshëm datash. Duhet të jetë në formatin \"\n\"YYYY-MM-DD.\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"\"\n\"Vlera '%s' ka formatin e saktë (YYYY-MM-DD) por është datë e pavlefshme.\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"Datë (pa kohë)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\"Vlera '%s' ka një format të pavlefshëm. Duhet të jetë në formatin YYYY-MM-DD \"\n\"HH:MM[:ss[.uuuuuu]][TZ].\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\"Vlera '%s' ka format të saktë (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) por është \"\n\"datë/kohë e pavlefshme.\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"Datë (me kohë)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"Vlera '%s' duhet të jetë një numër dhjetor.\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"Numër dhjetor\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"Adresë email\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"Shteg kartele\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"Numër i plotë i madh (8 bajte)\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"Adresë IPv4\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"Adresë IP\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"Vlera '%s' duhet të jetë ose None, ose True, ose False.\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"Buleane (Ose True, ose False, ose None)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"Numër i plotë pozitiv\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"Identifikues (deri në %(max_length)s)\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"Tekst\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"\"\n\"Vlera '%s' ka format të pavlefshëm. Duhet të jetë në formatin HH:MM[:ss[.\"\n\"uuuuuu]].\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\"Vlera '%s' ka formatin e saktë (HH:MM[:ss[.uuuuuu]]) por është kohë e \"\n\"palvefshme.\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"Kohë\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"Kartelë\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"Figurë\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"Modeli %(model)s me pk %(pk)r nuk ekziston.\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"Kyç i Jashtëm (lloj i përcaktuar nga fusha përkatëse)\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"Marrëdhënie një-për-një\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"Marrëdhënie shumë-për-shumë\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"\"\n\"Mbani të shtypur \\\"Control\\\", ose \\\"Command\\\" në Mac, për të përzgjedhur më \"\n\"shumë se një.\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"Kjo fushë është e domosdoshme.\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"Jepni një numër të tërë.\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"Jepni një numër.\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"Sigurohuni që nuk ka më  tepër se %s shifra gjithsej.\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"Sigurohuni që nuk ka më shumë se %s vende dhjetore.\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"Sigurohuni që nuk ka më tepër se %s shifra para presjes dhjetore.\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"Jepni një datë të vlefshme.\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"Jepni një kohë të vlefshme.\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"Jepni një datë/kohë të vlefshme.\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"\"\n\"Nuk u parashtrua ndonjë kartelë. Kontrolloni llojin e kodimit te forma.\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"Nuk u parashtrua kartelë.\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"Kartela e parashtruar është bosh.\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\"Sigurohuni që ky emër kartele ka e shumta %(max)d shenja (ka %(length)d).\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"\"\n\"Ju lutem, ose parashtroni një kartelë, ose i vini shenjë kutizës për \"\n\"pastrim, jo që të dyja.\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\"Ngarkoni një figurë të vlefshme. Kartela që ngarkuat ose nuk qe figurë, ose \"\n\"qe figurë e dëmtuar.\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"Jepni një URL të vlefshme.\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"\"\n\"Përzgjidhni një zgjedhje të vlefshme. %(value)s nuk është nga zgjedhjet e \"\n\"mundshme.\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"Jepni një listë vlerash.\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"Rend\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"Fshije\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"Ju lutem, ndreqni të dhënat dyfishe për %(field)s.\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"\"\n\"Ju lutem, ndreqni të dhënat dyfishe për %(field)s, të cilat duhet të jenë \"\n\"unike.\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\"Ju lutem, ndreqni të dhënat dyfishe për %(field_name)s të cilat duhet të \"\n\"jenë unike për %(lookup)s te %(date_field)s.\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"Ju lutem, ndreqni vlerat dyfishe më poshtë.\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"\"\n\"Kyçi i jashtëm \\\"inline\\\" nuk u përputh me kyçin parësor të instancës mëmë.\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"\"\n\"Përzgjidhni një zgjedhje të vlefshme. Ajo zgjedhje nuk është një nga \"\n\"zgjedhjet e mundshme.\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"\"\n\"Përzgjidhni një zgjedhje të vlefshme. %s nuk është një nga zgjedhjet e \"\n\"mundshme.\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"\\\"%s\\\" nuk është vlerë e vlefshme për kyç primar.\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\"%(datetime)s nuk u interpretua dot brenda zonë kohore %(current_timezone)s; \"\n\"mund të jetë e dykuptimtë ose mund të mos ekzistojë.\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"Tani\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"Ndryshoje\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"Pastroje\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"E panjohur\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"Po\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"Jo\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"po,jo,ndoshta\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"%(size)d bajt\"\nmsgstr[1] \"%(size)d bajte\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s KB\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s MB\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s GB\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s TB\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s PB\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"p.m.\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"a.m.\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"PM\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"AM\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"mesnatë\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"meditë\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"E hënë\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"E martë\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"E mërkurë\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"E enjte\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"E premte\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"E shtunë\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"E dielë\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"Hën\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"Mar\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"Mër\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"Enj\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"Pre\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"Sht\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"Die\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"Janar\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"Shkurt\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"Mars\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"Prill\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"Maj\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"Qershor\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"Korrik\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"Gusht\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"Shtator\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"Tetor\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"Nëntor\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"Dhjetor\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"jan\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"shk\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"mar\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"pri\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"maj\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"qer\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"kor\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"gus\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"sht\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"oct\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"nën\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"dhj\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"Jan.\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"Shk.\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"Mars\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"Prill\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"Maj\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"Qershor\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"Korrik\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"Gus.\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"Shta.\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"Tet.\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"Nën.\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"Dhj.\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"Janar\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"Shkurt\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"Mars\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"Prill\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"Maj\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"Qershor\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"Korrik\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"Gusht\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"Shtator\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"Tetor\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"Nëntor\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"Dhjetor\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"%(truncated_text)s...\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"ose\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \", \"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"vit\"\nmsgstr[1] \"vite\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"muaj\"\nmsgstr[1] \"muaj\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"javë\"\nmsgstr[1] \"javë\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"ditë\"\nmsgstr[1] \"ditë\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"orë\"\nmsgstr[1] \"orë\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"minutë\"\nmsgstr[1] \"minuta\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"minuta\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \", %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"Këtu nuk lejohen treguesa drejtorish.\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\\\"%(path)s\\\" nuk ekziston\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"Tregues i %(directory)s\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"Nuk është caktuar vit\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"Nuk është caktuar muaj\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"Nuk është caktuar ditë\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"Nuk është caktuar javë\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"Nuk ka %(verbose_name_plural)s të përcaktuar\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\"%(verbose_name_plural)s i ardhshëm jo i passhëm, ngaqë %(class_name)s.\"\n\"allow_future është False.\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"\"\n\"U dha varg i pavlefshëm date '%(datestr)s' formati i dhënë '%(format)s'\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"Nuk u gjetën %(verbose_name)s me përputhje\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"Faqja nuk është 'last', as mund të shndërrohet në një int.\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"Faqe e pavlefshme (%(page_number)s): %(message)s\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"Listë e zbrazët dhe '%(class_name)s.allow_empty' është False.\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/sq/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/conf/locale/sq/formats.py",
    "content": "# -*- encoding: utf-8 -*-\n# This file is distributed under the same license as the Django package.\n#\n\n# The *_FORMAT strings use the Django date format syntax,\n# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\nDATE_FORMAT = 'd F Y'\nTIME_FORMAT = 'g.i.s.A'\n# DATETIME_FORMAT = \nYEAR_MONTH_FORMAT = 'F Y'\nMONTH_DAY_FORMAT = 'j F'\nSHORT_DATE_FORMAT = 'Y-m-d'\n# SHORT_DATETIME_FORMAT = \n# FIRST_DAY_OF_WEEK = \n\n# The *_INPUT_FORMATS strings use the Python strftime format syntax,\n# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior\n# DATE_INPUT_FORMATS = \n# TIME_INPUT_FORMATS = \n# DATETIME_INPUT_FORMATS = \nDECIMAL_SEPARATOR = ','\nTHOUSAND_SEPARATOR = '.'\n# NUMBER_GROUPING = \n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/sr/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Janos Guljas <janos@resenje.org>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:47+0000\\n\"\n\"Last-Translator: Janos Guljas <janos@resenje.org>\\n\"\n\"Language-Team: Serbian (http://www.transifex.com/projects/p/django/language/\"\n\"sr/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sr\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"арапски\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"азербејџански\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"бугарски\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"бенгалски\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"босански\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"каталонски\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"чешки\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"велшки\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"дански\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"немачки\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"грчки\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"енглески\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"британски енглески\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"шпански\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"аргентински шпански\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"мексички шпански\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"никарагвански шпански\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"естонски\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"баскијски\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"персијски\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"фински\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"француски\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"фризијски\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"ирски\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"галски\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"хебрејски\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"хинду\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"хрватски\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"мађарски\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"индонежански\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"исландски\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"италијански\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"јапански\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"грузијски\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"камбодијски\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"канада\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"корејски\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"литвански\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"латвијски\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"македонски\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"малајаламски\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"монголски\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"норвешки кнјжевни\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"холандски\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"норвешки нови\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"Панџаби\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"пољски\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"португалски\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"бразилски португалски\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"румунски\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"руски\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"словачки\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"словеначки\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"албански\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"српски\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"српски (латиница)\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"шведски\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"тамилски\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"телугу\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"тајландски\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"турски\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"украјински\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"Урду\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"вијетнамски\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"новокинески\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"старокинески\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"Унесите исправну вредност.\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"\"\n\"Унесите исрпаван „слаг“, који се састоји од слова, бројки, доњих црта или \"\n\"циртица.\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"Унесите исправну IPv4 адресу.\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"Унесите исправну IPv6 адресу.\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"Унесите исправну IPv4 или IPv6 адресу.\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"Унесите само бројке раздвојене запетама.\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"Ово поље мора да буде %(limit_value)s (тренутно има %(show_value)s).\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"Ова вредност мора да буде мања од %(limit_value)s. или тачно толико.\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"Ова вредност мора бити већа од %(limit_value)s или тачно толико.\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Ово поље мора да садржи најмање %(limit_value)d словних места (тренутно има \"\n\"%(show_value)d).\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Ово поље мора да садржи највише %(limit_value)d словних места (тренутно има \"\n\"%(show_value)d).\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"%(field_name)s мора да буде јединствен за %(date_field)s %(lookup)s.\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"и\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"%(model_name)s са овом вредношћу %(field_label)s већ постоји.\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"Вредност %r није дозвољена.\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"Ово поље не може да остане празно.\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"Ово поље не може да остане празно.\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Поње типа: %(field_type)s\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"Цео број\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"Вредност поља '%s' мора бити цео број.\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"Вредност поља '%s' мора бити True или False.\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Булова вредност (True или False)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"Стринг (највише %(max_length)s знакова)\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"Цели бројеви раздвојени запетама\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"\"\n\"Формат датума поља '%s' није исправан. Датум треба бити облика ГГГГ-ММ-ДД.\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"\"\n\"Формат датума поља '%s' је исправан (ГГГГ-ММ-ДД), али је датум непостојећи.\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"Датум (без времена)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"Вредност поља '%s' није у формату ГГГГ-ММ-ДД СС:ММ[:сс[.мммммм]][ВЗ].\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\"Вредност поља '%s' има добар формат (ГГГГ-ММ-ДД СС:ММ[:сс[.мммммм]][ВЗ]), \"\n\"али су датум и време непостојећи.\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"Датум (са временом)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"Вредност поља '%s' мора бити децимални број.\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"Децимални број\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"Имејл адреса\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"Путања фајла\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"Вредност поља '%s' мора бити број pokretnom zapetom.\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"Број са покреном запетом\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"Велики цео број\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"IPv4 adresa\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"IP адреса\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"Вредност поља '%s' мора бити None, True или False.\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"Булова вредност (True, False или None)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"Позитиван цео број\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"Позитиван мали цео број\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"Слаг (не дужи од %(max_length)s)\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"Мали цео број\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"Текст\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"Време у пољу '%s' нема добар формат СС:ММ[:сс[.мммммм]].\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\"Вредност поља '%s' има добар формат (СС:ММ[:сс[.мммммм]]), али је време \"\n\"непостојеће.\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"Време\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"Фајл\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"Слика\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"Објекат класе %(model)s са примарним кључем %(pk)r не постоји.\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"Страни кључ (тип одређује референтно поље)\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"Релација један на један\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"Релација више на више\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"\"\n\"Држите „Control“, или „Command“ на Mac-у да бисте обележили више од једне \"\n\"ставке.\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"Ово поље се мора попунити.\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"Унесите цео број.\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"Унесите број.\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"Не сме бити укупно више од %s цифара. Проверите.\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"Не сме бити укупно више од %s децималних места. Проверите.\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"Не сме бити укупно више од %s цифара пре запете. Проверите.\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"Унесите исправан датум.\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"Унесите исправно време\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"Унесите исправан датум/време.\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"Фајл није пребачен. Проверите тип енкодирања формулара.\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"Фајл није пребачен.\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"Пребачен фајл је празан.\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\"Назив фајла мора да садржи бар %(max)d словних места (тренутно има \"\n\"%(length)d).\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"Може се само послати фајл или избрисати, не оба.\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\"Пребаците исправан фајл. Фајл који је пребачен или није слика, или је \"\n\"оштећен.\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"Унесите исправан URL.\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"\"\n\"%(value)s није међу понуђеним вредностима. Одаберите једну од понуђених.\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"Унесите листу вредности.\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"Редослед\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"Обриши\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"Исправите дуплиран садржај за поља: %(field)s.\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"\"\n\"Исправите дуплиран садржај за поља: %(field)s, који мора да буде јединствен.\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\"Исправите дуплиран садржај за поља: %(field_name)s, који мора да буде \"\n\"јединствен за %(lookup)s у %(date_field)s.\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"Исправите дуплиране вредности доле.\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"Страни кључ се није поклопио са инстанцом родитељског кључа.\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"Одабрана вредност није међу понуђенима. Одаберите једну од понуђених.\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"%s није међу понуђеним вредностима. Одаберите једну од понуђених.\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"„%s“ није исправна вредност за примарни кључ.\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\"Време %(datetime)s не може се представити у временској зони \"\n\"%(current_timezone)s.\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"Тренутно\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"Измени\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"Очисти\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"Непознато\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"Да\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"Не\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"да,не,можда\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"%(size)d бајт\"\nmsgstr[1] \"%(size)d бајта\"\nmsgstr[2] \"%(size)d бајтова\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s KB\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s MB\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s GB\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s TB\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s PB\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"по п.\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"пре п.\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"PM\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"AM\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"поноћ\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"подне\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"понедељак\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"уторак\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"среда\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"четвртак\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"петак\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"субота\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"недеља\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"пон.\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"уто.\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"сре.\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"чет.\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"пет.\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"суб.\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"нед.\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"јануар\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"фебруар\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"март\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"април\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"мај\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"јун\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"јул\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"август\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"септембар\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"октобар\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"новембар\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"децембар\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"јан.\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"феб.\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"мар.\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"апр.\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"мај.\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"јун.\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"јул.\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"ауг.\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"сеп.\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"окт.\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"нов.\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"дец.\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"Јан.\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"Феб.\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"Март\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"Април\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"Мај\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"Јун\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"Јул\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"Авг.\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"Септ.\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"Окт.\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"Нов.\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"Дец.\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"Јануар\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"Фебруар\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"Март\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"Април\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"Мај\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"Јун\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"Јул\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"Август\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"Септембар\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"Октобар\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"Новембар\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"Децембар\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"%(truncated_text)s...\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"или\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \",\"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"година\"\nmsgstr[1] \"године\"\nmsgstr[2] \"година\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"месец\"\nmsgstr[1] \"месеца\"\nmsgstr[2] \"месеци\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"недеља\"\nmsgstr[1] \"недеље\"\nmsgstr[2] \"недеља\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"дан\"\nmsgstr[1] \"дана\"\nmsgstr[2] \"дана\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"сат\"\nmsgstr[1] \"сата\"\nmsgstr[2] \"сати\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"минут\"\nmsgstr[1] \"минута\"\nmsgstr[2] \"минута\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"минута\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \", %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"Индекси директоријума нису дозвољени овде.\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"„%(path)s“ не постоји\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"Индекс директоријума %(directory)s\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"Година није назначена\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"Месец није назначен\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"Дан није назначен\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"Недеља није назначена\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"Недоступни објекти %(verbose_name_plural)s\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\"Опција „future“ није доступна за „%(verbose_name_plural)s“ јер \"\n\"%(class_name)s.allow_future има вредност False.\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"Неисправан датум „%(datestr)s“ дат формату „%(format)s“\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"Ниједан објекат класе %(verbose_name)s није нађен датим упитом.\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"Страница није последња, нити може бити конвертована у тип int.\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"Празна листа и „%(class_name)s.allow_empty“ има вредност False.\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/sr/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/conf/locale/sr/formats.py",
    "content": "# -*- encoding: utf-8 -*-\n# This file is distributed under the same license as the Django package.\n#\n\n# The *_FORMAT strings use the Django date format syntax,\n# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\nDATE_FORMAT = 'j. F Y.'\nTIME_FORMAT = 'H:i'\nDATETIME_FORMAT = 'j. F Y. H:i'\nYEAR_MONTH_FORMAT = 'F Y.'\nMONTH_DAY_FORMAT = 'j. F'\nSHORT_DATE_FORMAT = 'j.m.Y.'\nSHORT_DATETIME_FORMAT = 'j.m.Y. H:i'\nFIRST_DAY_OF_WEEK = 1\n\n# The *_INPUT_FORMATS strings use the Python strftime format syntax,\n# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior\nDATE_INPUT_FORMATS = (\n    '%d.%m.%Y.', '%d.%m.%y.',       # '25.10.2006.', '25.10.06.'\n    '%d. %m. %Y.', '%d. %m. %y.',   # '25. 10. 2006.', '25. 10. 06.'\n    # '%d. %b %y.', '%d. %B %y.',     # '25. Oct 06.', '25. October 06.'\n    # '%d. %b \\'%y.', '%d. %B \\'%y.', # '25. Oct '06.', '25. October '06.'\n    # '%d. %b %Y.', '%d. %B %Y.',     # '25. Oct 2006.', '25. October 2006.'\n)\nDATETIME_INPUT_FORMATS = (\n    '%d.%m.%Y. %H:%M:%S',     # '25.10.2006. 14:30:59'\n    '%d.%m.%Y. %H:%M',        # '25.10.2006. 14:30'\n    '%d.%m.%Y.',              # '25.10.2006.'\n    '%d.%m.%y. %H:%M:%S',     # '25.10.06. 14:30:59'\n    '%d.%m.%y. %H:%M',        # '25.10.06. 14:30'\n    '%d.%m.%y.',              # '25.10.06.'\n    '%d. %m. %Y. %H:%M:%S',   # '25. 10. 2006. 14:30:59'\n    '%d. %m. %Y. %H:%M',      # '25. 10. 2006. 14:30'\n    '%d. %m. %Y.',            # '25. 10. 2006.'\n    '%d. %m. %y. %H:%M:%S',   # '25. 10. 06. 14:30:59'\n    '%d. %m. %y. %H:%M',      # '25. 10. 06. 14:30'\n    '%d. %m. %y.',            # '25. 10. 06.'\n)\nDECIMAL_SEPARATOR = ','\nTHOUSAND_SEPARATOR = '.'\nNUMBER_GROUPING = 3\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/sr_Latn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Janos Guljas <janos@resenje.org>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:47+0000\\n\"\n\"Last-Translator: Janos Guljas <janos@resenje.org>\\n\"\n\"Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/django/\"\n\"language/sr@latin/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sr@latin\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"arapski\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"azerbejdžanski\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"bugarski\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"bengalski\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"bosanski\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"katalonski\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"češki\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"velški\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"danski\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"nemački\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"grčki\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"engleski\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"britanski engleski\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"španski\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"argentinski španski\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"meksički španski\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"nikaragvanski španski\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"estonski\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"baskijski\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"persijski\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"finski\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"francuski\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"frizijski\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"irski\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"galski\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"hebrejski\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"hindu\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"hrvatski\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"mađarski\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"indonežanski\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"islandski\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"italijanski\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"japanski\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"gruzijski\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"kambodijski\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"kanada\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"korejski\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"litvanski\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"latvijski\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"makedonski\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"malajalamski\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"mongolski\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"norveški knjževni\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"holandski\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"norveški novi\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"Pandžabi\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"poljski\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"portugalski\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"brazilski portugalski\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"rumunski\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"ruski\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"slovački\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"slovenački\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"albanski\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"srpski\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"srpski (latinica)\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"švedski\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"tamilski\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"telugu\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"tajlandski\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"turski\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"ukrajinski\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"Urdu\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"vijetnamski\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"novokineski\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"starokineski\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"Unesite ispravnu vrednost.\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"\"\n\"Unesite isrpavan „slag“, koji se sastoji od slova, brojki, donjih crta ili \"\n\"cirtica.\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"Unesite ispravnu IPv4 adresu.\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"Unesite ispravnu IPv6 adresu.\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"Unesite ispravnu IPv4 ili IPv6 adresu.\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"Unesite samo brojke razdvojene zapetama.\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"Ovo polje mora da bude %(limit_value)s (trenutno ima %(show_value)s).\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"Ova vrednost mora da bude manja od %(limit_value)s. ili tačno toliko.\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"Ova vrednost mora biti veća od %(limit_value)s ili tačno toliko.\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Ovo polje mora da sadrži najmanje %(limit_value)d slovnih mesta (trenutno \"\n\"ima %(show_value)d).\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Ovo polje mora da sadrži najviše %(limit_value)d slovnih mesta (trenutno ima \"\n\"%(show_value)d).\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"%(field_name)s mora da bude jedinstven za %(date_field)s %(lookup)s.\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"i\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"%(model_name)s sa ovom vrednošću %(field_label)s već postoji.\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"Vrednost %r nije dozvoljena.\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"Ovo polje ne može da ostane prazno.\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"Ovo polje ne može da ostane prazno.\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Ponje tipa: %(field_type)s\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"Ceo broj\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"Vrednost polja '%s' mora biti ceo broj.\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"Vrednost polja '%s' mora biti True ili False.\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Bulova vrednost (True ili False)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"String (najviše %(max_length)s znakova)\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"Celi brojevi razdvojeni zapetama\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"\"\n\"Format datuma polja '%s' nije ispravan. Datum treba biti oblika GGGG-MM-DD.\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"\"\n\"Format datuma polja '%s' je ispravan (GGGG-MM-DD), ali je datum nepostojeći.\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"Datum (bez vremena)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"Vrednost polja '%s' nije u formatu GGGG-MM-DD SS:MM[:ss[.mmmmmm]][VZ].\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\"Vrednost polja '%s' ima dobar format (GGGG-MM-DD SS:MM[:ss[.mmmmmm]][VZ]), \"\n\"ali su datum i vreme nepostojeći.\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"Datum (sa vremenom)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"Vrednost polja '%s' mora biti decimalni broj.\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"Decimalni broj\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"Imejl adresa\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"Putanja fajla\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"Vrednost polja '%s' mora biti broj pokretnom zapetom.\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"Broj sa pokrenom zapetom\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"Veliki ceo broj\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"IPv4 adresa\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"IP adresa\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"Vrednost polja '%s' mora biti None, True ili False.\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"Bulova vrednost (True, False ili None)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"Pozitivan ceo broj\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"Pozitivan mali ceo broj\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"Slag (ne duži od %(max_length)s)\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"Mali ceo broj\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"Tekst\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"Vreme u polju '%s' nema dobar format SS:MM[:ss[.mmmmmm]].\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\"Vrednost polja '%s' ima dobar format (SS:MM[:ss[.mmmmmm]]), ali je vreme \"\n\"nepostojeće.\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"Vreme\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"Fajl\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"Slika\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"Objekat klase %(model)s sa primarnim ključem %(pk)r ne postoji.\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"Strani ključ (tip određuje referentno polje)\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"Relacija jedan na jedan\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"Relacija više na više\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"\"\n\"Držite „Control“, ili „Command“ na Mac-u da biste obeležili više od jedne \"\n\"stavke.\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"Ovo polje se mora popuniti.\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"Unesite ceo broj.\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"Unesite broj.\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"Ne sme biti ukupno više od %s cifara. Proverite.\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"Ne sme biti ukupno više od %s decimalnih mesta. Proverite.\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"Ne sme biti ukupno više od %s cifara pre zapete. Proverite.\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"Unesite ispravan datum.\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"Unesite ispravno vreme\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"Unesite ispravan datum/vreme.\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"Fajl nije prebačen. Proverite tip enkodiranja formulara.\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"Fajl nije prebačen.\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"Prebačen fajl je prazan.\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\"Naziv fajla mora da sadrži bar %(max)d slovnih mesta (trenutno ima \"\n\"%(length)d).\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"Može se samo poslati fajl ili izbrisati, ne oba.\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\"Prebacite ispravan fajl. Fajl koji je prebačen ili nije slika, ili je \"\n\"oštećen.\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"Unesite ispravan URL.\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"\"\n\"%(value)s nije među ponuđenim vrednostima. Odaberite jednu od ponuđenih.\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"Unesite listu vrednosti.\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"Redosled\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"Obriši\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"Ispravite dupliran sadržaj za polja: %(field)s.\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"\"\n\"Ispravite dupliran sadržaj za polja: %(field)s, koji mora da bude jedinstven.\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\"Ispravite dupliran sadržaj za polja: %(field_name)s, koji mora da bude \"\n\"jedinstven za %(lookup)s u %(date_field)s.\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"Ispravite duplirane vrednosti dole.\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"Strani ključ se nije poklopio sa instancom roditeljskog ključa.\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"Odabrana vrednost nije među ponuđenima. Odaberite jednu od ponuđenih.\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"%s nije među ponuđenim vrednostima. Odaberite jednu od ponuđenih.\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"„%s“ nije ispravna vrednost za primarni ključ.\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\"Vreme %(datetime)s ne može se predstaviti u vremenskoj zoni \"\n\"%(current_timezone)s.\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"Trenutno\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"Izmeni\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"Očisti\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"Nepoznato\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"Da\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"Ne\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"da,ne,možda\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"%(size)d bajt\"\nmsgstr[1] \"%(size)d bajta\"\nmsgstr[2] \"%(size)d bajtova\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s KB\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s MB\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s GB\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s TB\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s PB\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"po p.\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"pre p.\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"PM\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"AM\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"ponoć\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"podne\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"ponedeljak\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"utorak\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"sreda\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"četvrtak\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"petak\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"subota\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"nedelja\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"pon.\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"uto.\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"sre.\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"čet.\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"pet.\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"sub.\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"ned.\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"januar\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"februar\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"mart\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"april\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"maj\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"jun\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"jul\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"avgust\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"septembar\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"oktobar\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"novembar\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"decembar\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"jan.\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"feb.\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"mar.\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"apr.\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"maj.\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"jun.\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"jul.\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"aug.\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"sep.\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"okt.\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"nov.\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"dec.\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"Jan.\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"Feb.\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"Mart\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"April\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"Maj\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"Jun\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"Jul\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"Avg.\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"Sept.\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"Okt.\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"Nov.\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"Dec.\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"Januar\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"Februar\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"Mart\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"April\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"Maj\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"Jun\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"Jul\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"Avgust\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"Septembar\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"Oktobar\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"Novembar\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"Decembar\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"%(truncated_text)s...\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"ili\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \",\"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"godina\"\nmsgstr[1] \"godine\"\nmsgstr[2] \"godina\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"mesec\"\nmsgstr[1] \"meseca\"\nmsgstr[2] \"meseci\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"nedelja\"\nmsgstr[1] \"nedelje\"\nmsgstr[2] \"nedelja\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"dan\"\nmsgstr[1] \"dana\"\nmsgstr[2] \"dana\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"sat\"\nmsgstr[1] \"sata\"\nmsgstr[2] \"sati\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"minut\"\nmsgstr[1] \"minuta\"\nmsgstr[2] \"minuta\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"minuta\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \", %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"Indeksi direktorijuma nisu dozvoljeni ovde.\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"„%(path)s“ ne postoji\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"Indeks direktorijuma %(directory)s\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"Godina nije naznačena\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"Mesec nije naznačen\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"Dan nije naznačen\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"Nedelja nije naznačena\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"Nedostupni objekti %(verbose_name_plural)s\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\"Opcija „future“ nije dostupna za „%(verbose_name_plural)s“ jer \"\n\"%(class_name)s.allow_future ima vrednost False.\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"Neispravan datum „%(datestr)s“ dat formatu „%(format)s“\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"Nijedan objekat klase %(verbose_name)s nije nađen datim upitom.\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"Stranica nije poslednja, niti može biti konvertovana u tip int.\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"Prazna lista i „%(class_name)s.allow_empty“ ima vrednost False.\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/sr_Latn/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/conf/locale/sr_Latn/formats.py",
    "content": "# -*- encoding: utf-8 -*-\n# This file is distributed under the same license as the Django package.\n#\n\n# The *_FORMAT strings use the Django date format syntax,\n# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\nDATE_FORMAT = 'j. F Y.'\nTIME_FORMAT = 'H:i'\nDATETIME_FORMAT = 'j. F Y. H:i'\nYEAR_MONTH_FORMAT = 'F Y.'\nMONTH_DAY_FORMAT = 'j. F'\nSHORT_DATE_FORMAT = 'j.m.Y.'\nSHORT_DATETIME_FORMAT = 'j.m.Y. H:i'\nFIRST_DAY_OF_WEEK = 1\n\n# The *_INPUT_FORMATS strings use the Python strftime format syntax,\n# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior\nDATE_INPUT_FORMATS = (\n    '%d.%m.%Y.', '%d.%m.%y.',       # '25.10.2006.', '25.10.06.'\n    '%d. %m. %Y.', '%d. %m. %y.',   # '25. 10. 2006.', '25. 10. 06.'\n    # '%d. %b %y.', '%d. %B %y.',     # '25. Oct 06.', '25. October 06.'\n    # '%d. %b \\'%y.', '%d. %B \\'%y.', # '25. Oct '06.', '25. October '06.'\n    # '%d. %b %Y.', '%d. %B %Y.',     # '25. Oct 2006.', '25. October 2006.'\n)\nDATETIME_INPUT_FORMATS = (\n    '%d.%m.%Y. %H:%M:%S',     # '25.10.2006. 14:30:59'\n    '%d.%m.%Y. %H:%M',        # '25.10.2006. 14:30'\n    '%d.%m.%Y.',              # '25.10.2006.'\n    '%d.%m.%y. %H:%M:%S',     # '25.10.06. 14:30:59'\n    '%d.%m.%y. %H:%M',        # '25.10.06. 14:30'\n    '%d.%m.%y.',              # '25.10.06.'\n    '%d. %m. %Y. %H:%M:%S',   # '25. 10. 2006. 14:30:59'\n    '%d. %m. %Y. %H:%M',      # '25. 10. 2006. 14:30'\n    '%d. %m. %Y.',            # '25. 10. 2006.'\n    '%d. %m. %y. %H:%M:%S',   # '25. 10. 06. 14:30:59'\n    '%d. %m. %y. %H:%M',      # '25. 10. 06. 14:30'\n    '%d. %m. %y.',            # '25. 10. 06.'\n)\nDECIMAL_SEPARATOR = ','\nTHOUSAND_SEPARATOR = '.'\nNUMBER_GROUPING = 3\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/sv/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Alex Nordlund <deep.alexander@gmail.com>, 2012.\n# Andreas Pelme <andreas@pelme.se>, 2011-2013.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Mattias Jansson <mattias@colourandcode.se>, 2011.\n# Samuel Linde <samuel@linde.im>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-06 08:47+0000\\n\"\n\"Last-Translator: Andreas Pelme <andreas@pelme.se>\\n\"\n\"Language-Team: Swedish (http://www.transifex.com/projects/p/django/language/\"\n\"sv/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sv\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"Afrikaans\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"Arabiska\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"Azerbajdzjanska\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"Bulgariska\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"Vitryska\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"Bengaliska\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"Bretonska\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"Bosniska\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"Katalanska\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"Tjeckiska\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"Walesiska\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"Danska\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"Tyska\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"Grekiska\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"Engelska\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"Brittisk engelska\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"Esperanto\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"Spanska\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"Argentinsk spanska\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"Mexikansk Spanska\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"Nicaraguansk spanska\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"Spanska (Venezuela)\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"Estländska\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"Baskiska\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"Persiska\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"Finska\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"Franska\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"Frisiska\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"Irländska\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"Galisiska\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"Hebreiska\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"Hindi\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"Kroatiska\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"Ungerska\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"Interlingua\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"Indonesiska\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"Isländska\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"Italienska\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"Japanska\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"Georgiska\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"Kazakiska\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"Khmer\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"Kannada\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"Koreanska\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"Luxemburgiska\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"Lettiska\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"Lettiska\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"Makedonska\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"Malayalam\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"Mongoliska\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"Norska (bokmål)\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"Nepali\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"Holländska\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"Norska (nynorsk)\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"Punjabi\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"Polska\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"Portugisiska\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"Brasiliensk portugisiska\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"Rumänska\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"Ryska\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"Slovakiska\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"Slovenska\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"Albanska\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"Serbiska\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"Serbiska (latin)\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"Svenska\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"Swahili\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"Tamilska\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"Telugu\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"Thailändska\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"Turkiska\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"Tatariska\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"Udmurtiska\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"Ukrainska\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"Urdu\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"Vietnamesiska\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"Förenklad Kinesiska\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"Traditionell Kinesiska\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"Fyll i ett giltigt värde.\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"Fyll i en giltig e-postadress.\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"\"\n\"Fyll i en giltig 'slug', beståendes av enbart bokstäver, siffror, \"\n\"understreck samt bindestreck.\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"Fyll i en giltig IPv4 adress.\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"Ange en giltig IPv6-adress.\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"Ange en giltig IPv4 eller IPv6-adress.\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"Fyll enbart i siffror separerade med kommatecken.\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"\"\n\"Kontrollera att detta värde är %(limit_value)s (det är %(show_value)s).\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"\"\n\"Kontrollera att detta värde är mindre än eller lika med %(limit_value)s.\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"\"\n\"Kontrollera att detta värde är större än eller lika med %(limit_value)s.\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Kontrollera att detta värde har minst %(limit_value)d tecken (det har \"\n\"%(show_value)d).\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Kontrollera att detta värde som mest har %(limit_value)d tecken (det har \"\n\"%(show_value)d).\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"%(field_name)s måste vara unikt för %(date_field)s %(lookup)s.\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"och\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"%(model_name)s med detta %(field_label)s finns redan.\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"Värdet %r är inget giltigt alternativ.\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"Detta fält får inte vara null.\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"Detta fält får inte vara tomt.\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Fält av typ: %(field_type)s\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"Heltal\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"Värdet '%s' måste vara ett heltal.\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"Värdet '%s' måste vara antingen True eller False.\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Boolesk (antingen True eller False)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"Sträng (upp till %(max_length)s)\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"Komma-separerade heltal\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"\"\n\"Värdet '%s' har ett ogiltigt datumformat. Det måste vara i formatet YYYY-MM-\"\n\"DD.\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"\"\n\"Värdet '%s' har det giltiga formatet (YYYY-MM-DD) men det är ett ogiltigt \"\n\"datum.\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"Datum (utan tid)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\"Värdet '%s' har ett ogiltigt datumformat. Det måste vara i formatet YYYY-MM-\"\n\"DD HH:MM[:ss[.uuuuuu]][TZ].\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\"Värdet '%s' har det giltiga formatet (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) \"\n\"men det är ett ogiltigt datum/tid.\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"Datum (med tid)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"Värdet '%s' måste vara ett decimaltal.\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"Decimaltal\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"E-postadress\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"Sökväg till fil\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"Värdet '%s' must vara ett flyttal.\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"Flyttal\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"Stort (8 byte) heltal\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"IPv4-adress\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"IP-adress\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"Värdet '%s' måste vara antingen \\\"None\\\", True or False.\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"Boolesk (antingen True, False eller None)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"Positivt heltal\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"Positivt litet heltal\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"Slug (upp till %(max_length)s)\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"Litet heltal\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"Text\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"\"\n\"Värdet '%s' har ett ogiltigt format. Det måste vara på formatet HH:MM[:ss[.\"\n\"uuuuuu]].\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\"Värdet '%s' har det korrekta formatet (HH:MM[:ss[.uuuuuu]]) men är en \"\n\"ogiltig tid.\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"Tid\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"Fil\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"Bild\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"Modell %(model)s med primärnyckel %(pk)r finns inte.\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"Främmande nyckel (typ bestäms av relaterat fält)\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"Ett-till-ett-samband\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"Många-till-många-samband\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"\"\n\"Håll ner \\\"Control\\\" eller \\\"Command\\\" på en Mac för att välja fler än en.\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"Detta fält måste fyllas i.\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"Fyll i ett heltal.\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"Fyll i ett tal.\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"Kontrollera att det inte finns mer än totalt %s siffror.\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"Kontrollera att det inte finns mer än %s decimaler.\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"Kontrollera att det inte finns mer än %s siffror före decimaltecknet.\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"Fyll i ett giltigt datum.\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"Fyll i en giltig tid.\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"Fyll i ett giltigt datum/tid.\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"Ingen fil skickades. Kontrollera kodningstypen i formuläret.\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"Ingen fil skickades.\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"Den skickade filen är tom.\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\"Kontrollera att detta värde har högst %(max)d tecken (det har %(length)d).\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"\"\n\"Var vänlig antingen skicka en fil eller markera kryssrutan för att rensa, \"\n\"inte både och. \"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\"Ladda upp en giltig bild. Filen du laddade upp var antingen ingen bild eller \"\n\"en korrupt bild.\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"Fyll i en giltig URL.\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"\"\n\"Välj ett giltigt alternativ. %(value)s finns inte bland tillgängliga \"\n\"alternativ.\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"Fyll i en lista med värden.\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"Sortering\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"Radera\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"Var vänlig korrigera duplikatdata för %(field)s.\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"Var vänlig korrigera duplikatdata för %(field)s, som måste vara unik.\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\"Var vänlig korrigera duplikatdata för %(field_name)s som måste vara unik för \"\n\"%(lookup)s i %(date_field)s.\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"Vänligen korrigera duplikatvärdena nedan.\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"\"\n\"Den infogade främmande nyckeln matchade inte den överordnade instansens \"\n\"primära nyckel.\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"\"\n\"Välj ett giltigt alternativ. Det valet finns inte bland tillgängliga \"\n\"alternativ.\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"\"\n\"Välj ett giltigt alternativ. %s finns inte bland tillgängliga alternativ.\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"En primärnyckel kan inte ha värde \\\"%s\\\"\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\"%(datetime)s kunde inte tolkas i tidszonen %(current_timezone)s; det kan \"\n\"vara en ogiltig eller tvetydigt tidpunkt\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"Nuvarande\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"Ändra\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"Rensa\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"Okänt\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"Ja\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"Nej\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"ja,nej,kanske\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"%(size)d byte\"\nmsgstr[1] \"%(size)d byte\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s kB\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s MB\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s GB\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s TB\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s PB\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"e.m.\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"f.m.\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"FM\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"EM\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"midnatt\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"middag\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"måndag\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"tisdag\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"onsdag\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"torsdag\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"fredag\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"lördag\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"söndag\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"mån\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"tis\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"ons\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"tors\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"fre\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"lör\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"sön\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"januari\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"februari\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"mars\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"april\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"maj\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"juni\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"juli\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"augusti\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"september\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"oktober\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"november\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"december\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"jan\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"feb\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"mar\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"apr\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"maj\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"jun\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"jul\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"aug\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"sep\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"okt\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"nov\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"dec\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"jan\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"feb\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"mars\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"april\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"maj\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"juni\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"juli\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"aug\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"sep\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"okt\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"nov\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"dec\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"januari\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"februari\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"mars\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"april\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"maj\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"juni\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"juli\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"augusti\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"september\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"oktober\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"november\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"december\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"%(truncated_text)s...\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"eller\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \", \"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"år\"\nmsgstr[1] \"år\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"månad\"\nmsgstr[1] \"månader\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"vecka\"\nmsgstr[1] \"veckor\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"dag\"\nmsgstr[1] \"dagar\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"timme\"\nmsgstr[1] \"timmar\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"minut\"\nmsgstr[1] \"minuter\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"minuter\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \", %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"Kataloglistningar är inte tillåtna här.\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\\\"%(path)s\\\" finns inte\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"Innehåll i %(directory)s\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"Inget år angivet\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"Ingen månad angiven\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"Ingen dag angiven\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"Ingen vecka angiven\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"Inga %(verbose_name_plural)s är tillgängliga\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\"Framtida %(verbose_name_plural)s är inte tillgängliga eftersom \"\n\"%(class_name)s.allow_future är False.\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"Ogiltig datumsträng '%(datestr)s' med givet format '%(format)s'\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"Hittade inga %(verbose_name)s  som matchar frågan\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"Sidan är inte 'last', och kan inte heller omvandlas till en int.\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"Ogiltig sida (%(page_number)s): %(message)s\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"Tom lista och '%(class_name)s.allow_empty' är False.\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/sv/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/conf/locale/sv/formats.py",
    "content": "# -*- encoding: utf-8 -*-\n# This file is distributed under the same license as the Django package.\n#\nfrom __future__ import unicode_literals\n\n# The *_FORMAT strings use the Django date format syntax,\n# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\nDATE_FORMAT = 'j F Y'\nTIME_FORMAT = 'H:i'\nDATETIME_FORMAT = 'j F Y H:i'\nYEAR_MONTH_FORMAT = 'F Y'\nMONTH_DAY_FORMAT = 'j F'\nSHORT_DATE_FORMAT = 'Y-m-d'\nSHORT_DATETIME_FORMAT = 'Y-m-d H:i'\nFIRST_DAY_OF_WEEK = 1\n\n# The *_INPUT_FORMATS strings use the Python strftime format syntax,\n# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior\n# Kept ISO formats as they are in first position\nDATE_INPUT_FORMATS = (\n    '%Y-%m-%d',              # '2006-10-25'\n    '%m/%d/%Y',              # '10/25/2006'\n    '%m/%d/%y',              # '10/25/06'\n)\nDATETIME_INPUT_FORMATS = (\n    '%Y-%m-%d %H:%M:%S',     # '2006-10-25 14:30:59'\n    '%Y-%m-%d %H:%M',        # '2006-10-25 14:30'\n    '%Y-%m-%d',              # '2006-10-25'\n    '%m/%d/%Y %H:%M:%S',     # '10/25/2006 14:30:59'\n    '%m/%d/%Y %H:%M',        # '10/25/2006 14:30'\n    '%m/%d/%Y',              # '10/25/2006'\n    '%m/%d/%y %H:%M:%S',     # '10/25/06 14:30:59'\n    '%m/%d/%y %H:%M',        # '10/25/06 14:30'\n    '%m/%d/%y',              # '10/25/06'\n)\nDECIMAL_SEPARATOR = ','\nTHOUSAND_SEPARATOR = '\\xa0' # non-breaking space\nNUMBER_GROUPING = 3\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/sw/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:47+0000\\n\"\n\"Last-Translator: machaku <bmachaku@gmail.com>\\n\"\n\"Language-Team: Swahili (http://www.transifex.com/projects/p/django/language/\"\n\"sw/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sw\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"Kiarabu\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"Kiazerbaijani\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"Kibulgaria\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"Kibengali\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"Kibosnia\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"Kikatalani\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"Kicheki\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"Kiweli\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"Kideni\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"Kijerumani\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"Kigiriki\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"Kiingereza\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"Kiingereza cha Uingereza\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"Kiesperanto\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"Kihispania\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"Kihispania cha Argentina\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"Kihispania cha Mexico\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"Kihispania cha Nikaragua\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"Kiestonia\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"Kibaskyue\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"Kipershia\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"Kifini\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"Kifaransa\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"Kifrisi\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"Kiairishi\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"Kigalatia\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"Kiyahudi\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"Kihindi\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"Kikroeshia\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"Kihangaria\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"Kiindonesia\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"Kiaiselandi\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"Kiitaliano\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"Kijapani\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"Kijiojia\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"Kizakhi\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"Kihema\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"Kikanada\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"Kikorea\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"Kilithuania\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"Kilatvia\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"Kimacedonia\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"Kimalayalam\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"Kimongolia\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"kibekmali cha Kinorwei\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"Kinepali\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"Kidachi\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"Kinynorki cha Kinorwei\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"Kipanjabi\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"Kipolishi\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"Kireno\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"Kireno cha Kibrazili\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"Kiromania\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"Kirusi\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"Kislovakia\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"Kislovenia\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"Kialbania\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"Kiserbia\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"Kilatini cha Kiserbia\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"Kiswidi\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"Kiswahili\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"Kitamili\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"kitegulu\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"Kithai\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"Kituruki\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"Kitatari\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"Kiukreni\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"Kiurdu\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"Kivietinamu\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"Kichina Kilichorahisishwa\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"Kichina Asilia\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"Ingiza thamani halali\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"Ingiza slagi halali yenye herufi, namba, \\\"_\\\" au \\\"-\\\"\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"Ingiza anuani halali ya IPV4\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"Ingiza anuani halali ya IPV6\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"Ingiza anuani halali za IPV4 au IPV6\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"Ingiza tarakimu zilizotenganishwa kwa koma tu.\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"Hakikisha thamani hii ni %(limit_value)s (ni %(show_value)s).\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"Hakikisha thamani hii ni ndogo kuliko au sawa na %(limit_value)s.\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"Hakikisha thamani hii ni kubwa kuliko au sawa na %(limit_value)s.\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Hakikisha thamani hii ina angalao vibambo %(limit_value)d (ina \"\n\"%(show_value)d).\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Hakikisha thamani hii ina si zaidi ya vibambo %(limit_value)d (ina \"\n\"%(show_value)d).\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"Ni lazima %(field_name)s kuwa pekee kwa  %(date_field)s %(lookup)s.\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"na\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"Tayari kuna %(field_label)s kwa %(model_name)s nyingine.\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"Thamani %r si chaguo halali\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"Uga huu hauwezi kuwa hauna kitu.\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"Uga huu hauwezi kuwa mtupu\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Uga wa aina %(field_type)s\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"Inteja\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"thamani ya '%s' ni lazima iwe inteja.\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"Thamani ya '%s' ni lazima iwe Kweli au Si Kweli.\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Buleani (Aidha Kweli au Si kweli)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"Tungo (hadi %(max_length)s)\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"Inteja zilizotengwa kwa koma\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"\"\n\"Thamani '%s' iko katika mfumo wa tarehe batili.Ni lazima kuwa katika mfumo \"\n\"wa MMMM-MM-TT \"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"\"\n\"Thamani '%s' iko katika mfumo sahihi (MMMM-MM-TT) lakini ni tarehe batili.\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"Tarehe (bila ya muda)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\"Thamani '%s' iko katika mfumo batili. Ni lazima kuwa katika mfumo HH:MM[:ss[.\"\n\"uuuuuu]][TZ].\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\"Thamani '%s' ina muundo sahihi (MMMM-MM-SS SS:DD[:ss[.uuuuuu]][TZ]) lakini \"\n\"ina muda au tarehe/muda batili.\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"Tarehe (pamoja na muda)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"Lazima thamani ya '%s' iwe namba ya desimali\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"Namba ya desimali\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"Anuani ya baruapepe\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"Njia ya faili\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"Thamani ya '%s' ni lazima iwe floti.\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"Namba ya `floating point`\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"Inteja kubwa (baiti 8)\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"anuani ya IPV4\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"anuani ya IP\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"Thamani ya '%s' ni lazima iwe aidha Hakuna, Kweli au Si Kweli.\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"Buleani (Aidha kweli, Si kweli au Hukuna)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"Inteja chanya\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"Inteja chanya ndogo\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"Slagi (hadi %(max_length)s)\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"Inteja ndogo\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"Maandishi\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"\"\n\"Thamani '%s' iko katika mfumo batili. Ni lazima kuwa katika mfumo SS:DD[:ss[.\"\n\"uuuuuu]]\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\"Thamani '%s' iko katika mfumo halali (SS:DD[:ss[.uuuuuu]]) lakini ina muda \"\n\"batili.\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"Muda\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"Faili\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"Picha\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"Hakuna modeli %(model)s yenye pk %(pk)r.\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"'Foreign Key' (aina inapatikana kwa uga unaohusiana)\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"Uhusiano wa moja-kwa-moja\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"Uhusiano wa vingi-kwa-vingi\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"\"\n\"Shikilia chini \\\"Control\\\", au \\\"Command\\\" kwenye Mac, ili kuchagua zaidi ya \"\n\"moja. \"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"Sehemu hii inahitajika\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"Ingiza namba kamili\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"Ingiza namba\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"Hakikisha kuwa hakuna zaidi ya jumla ya tarakimu %s.\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"Hakikisha kuwa hakuna zaidi ya jumla ya nafasi %s za desimali.\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"Hakikisha kuwa hakuna zaidi ya tarakimu %s kabla ya nukta ya desimali.\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"Ingiza tarehe halali\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"Ingiza muda halali\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"Ingiza tarehe/muda halali\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"Hakuna faili lililokusanywa. Angalia aina ya msimbo kwenye fomu.\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"Hakuna faili lililokusanywa.\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"Faili lililokusanywa ni tupu.\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\"Hakikisha jina la faili hili lina vibambo visivyozidi %(max)d (lina \"\n\"%(length)d).\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"Tafadhali aidha kusanya faili au tiki kisanduku kilicho wazi, si yote.\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\"Pakia picha halali. Faili ulilopakia lilikua aidha si picha au ni picha \"\n\"iliyopotoshwa.\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"Ingiza URL halali.\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"Chagua chaguo halali. %(value)s si moja kati ya machaguo yaliyopo.\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"Ingiza orodha ya thamani\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"Panga\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"Futa\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"Tafadhali rekebisha data zilizojirudia kwa %(field)s.\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"\"\n\"Tafadhali rekebisha data zilizojirudia kwa %(field)s, zinazotakiwa kuwa za \"\n\"kipekee.\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\"Tafadhali sahihisha data zilizojirudia kwa %(field_name)s ,uga huu ni lazima \"\n\"kuwa wa pekee kwa %(lookup)s katika %(date_field)s.\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"Tafadhali sahihisha thamani zilizojirudia hapo chini.\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"`Inline foreign key` haijafanana tukio la `primary key` mama.\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"Chagua chaguo halali. Chaguo hilo si moja kati ya chaguzi halali\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"Chagua chaguo halali. %s si moja kati machaguo yaliyopo.\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"\\\"%s\\\" ni thamani batili kwa `primary key`.\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\"Imeshindikana kufasiri %(datetime)s katika majira ya %(current_timezone)s;\"\n\"Inawezekana kuwa kuna utata au kiti hichi hakipo.\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"Kwa sasa\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"Badili\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"Safisha\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"Haijulikani\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"Ndiyo\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"Hapana\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"ndiyo,hapana,labda\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"baiti %(size)d\"\nmsgstr[1] \"baiti %(size)d\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"KB %s\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"MB %s\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"GB %s\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"TB %s\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"PB %s\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"p.m\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"a.m\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"PM\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"AM\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"usiku wa manane\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"mchana\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"Jumatatu\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"Jumanne\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"Jumatano\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"Alhamisi\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"Ijumaa\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"Jumamosi\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"Jumapili\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"Jtatu\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"Jnne\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"jtano\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"Alh\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"Ijmaa\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"Jmosi\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"Jpili\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"Januari\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"Februari\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"Machi\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"Aprili\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"Mei\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"Juni\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"Julai\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"Agosti\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"Septemba\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"Oktoba\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"Novemba\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"Disemba\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"jan\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"feb\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"machi\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"apr\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"mei\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"Juni\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"jul\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"ago\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"sep\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"okt\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"nov\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"dis\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"Jan.\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"Feb.\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"Machi\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"Aprili\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"Mei\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"Juni\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"Julai\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"Ago.\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"Sep.\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"Okt.\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"Nov.\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"Dis.\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"Januari\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"Februari\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"Machi\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"Aprili\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"Mei\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"Juni\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"Julai\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"Agosti\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"Septemba\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"Oktoba\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"Novemba\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"Disemba\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"%(truncated_text)s...\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"au\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \", \"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"mwaka\"\nmsgstr[1] \"miaka\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"mwezi\"\nmsgstr[1] \"miezi\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"wiki\"\nmsgstr[1] \"wiki\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"siku\"\nmsgstr[1] \"siku\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"saa\"\nmsgstr[1] \"saa\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"dakika\"\nmsgstr[1] \"dakika\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"dakika\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(type)s %(number)d\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \", %(type)s %(number)d\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"Sahirisi za saraka haziruhusiwi hapa.\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\\\"%(path)s\\\" haipo\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"Sahirisi ya %(directory)s\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"Hakuna mwaka maalum uliotajwa\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"Hakuna mwezi maalum uliotajwa\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"Hakuna siku maalum iliyitajwa\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"Hakuna wiki maalum iliyotajwa\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"Hakujapatikana %(verbose_name_plural)s\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\"%(verbose_name_plural)s kutoka wakati ujao haiwezekani  kwani `\"\n\"%(class_name)s.allow_future` ni `False`.\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"Tungo batili ya tarehe '%(datestr)s' muundo ni '%(format)s'\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"hakuna %(verbose_name)s kulingana na ulizo\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"Ukurasa huu si 'mwisho', na wala hauwezi kubadilishwa kuwa int.\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"Orodha tupu na '%(class_name)s.allow_empty'.ni 'False'.\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/ta/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:47+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Tamil (http://www.transifex.com/projects/p/django/language/\"\n\"ta/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ta\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"அரபிக்\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"பெங்காலி\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"செக்\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"வெல்ஸ்\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"டேனிஷ்\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"ஜெர்மன்\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"கிரேக்கம்\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"ஆங்கிலம்\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"ஸ்பானிஷ்\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"பீனீஷ்\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"ப்ரென்சு\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"கலீஷீயன்\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"ஹீப்ரு\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"ஹங்கேரியன்\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"ஐஸ்லான்டிக்\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"இத்தாலியன்\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"ஜப்பானிய\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"டச்சு\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"ரோமானியன்\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"ரஷ்யன்\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"சுலோவாக்\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"ஸ்லோவேனியன்\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"செர்பியன்\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"சுவிடிஷ்\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"தமிழ்\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"துருக்கிஷ்\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"உக்ரேனியன்\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"எளிய சீன மொழி\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"மரபு சீன மொழி\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"இங்கு எண்களை மட்டுமே எழுதவும் காமவாள் தனிமைபடுத்தவும் \"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"மற்றும்\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"இந்த புலம் காலியாக இருக்கக் கூடாது\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"முழு எண்\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"பூலியன் (சரி அல்லது தவறு)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"கமாவாள் பிரிக்கப்பட்ட முழு எண்\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"தேதி (நேரமில்லாமல்)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"தேதி (நேரமுடன்)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"தசம எண்கள்\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"கோப்புப் பாதை\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"IP விலாசம்\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"இலக்கு முறை (சரி, தவறு அல்லது ஒன்றும் இல்லை)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"உரை\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"நேரம்\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"\"\n\"Mac இல், ஒன்றுக்கு மேற்பட்டவற்றை தேர்வு செய்ய \\\"Control\\\" அல்லது \\\"Command\\\" ஐ \"\n\"அழுத்தவும்\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"இந்த  புலத்தில் மதிப்பு தேவை\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"முழு எண் மட்டுமே எழுதவும்\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"அந்த பக்கத்தின் encoding வகையைப் பரிசோதிக்க.கோப்பு சமர்பிக்கப் பட்டவில்லை \"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"சமர்பிக்கப் பட்ட கோப்புக் காலியாக உள்ளது\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\"முறையான படம் மட்டுமே பதிவேற்றம் செய்யவும். நீங்கள் பதிவேற்றம் செய்த கோப்பு படம் அள்ளாத \"\n\"அல்லது கெட்டுப்போன கோப்பாகும்\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"நீக்குக\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"மாற்றுக\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"தெரியாத\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"ஆம்\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"இல்லை\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"ஆம், இல்லை, இருக்கலாம்\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"திங்கள்\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"செவ்வாய்\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"புதன்\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"வியாழன்\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"வெள்ளி\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"சனி\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"ஞாயிறு\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"ஜனவரி\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"பிப்ரவரி\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"மார்ச்\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"ஏப்ரல்\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"மே\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"ஜூன்\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"ஜூலை\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"ஆகஸ்டு\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"செப்டம்பர்\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"அக்டோபர்\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"நவம்பர்\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"டிசம்பர்\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"ஜன\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"பிப்\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"மார்\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"ஏப்\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"மே\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"ஜூன்\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"ஜூலை\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"ஆக\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"செப்\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"அக்\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"நவ\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"டிச\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"மார்ச்\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"ஏப்ரல்\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"மே\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"ஜூன்\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"ஜூலை\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"ஜனவரி\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"பிப்ரவரி\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"மார்ச்\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"ஏப்ரல்\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"மே\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"ஜூன்\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"ஜூலை\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"ஆகஸ்டு\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"செப்டம்பர்\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"அக்டோபர்\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"நவம்பர்\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"டிசம்பர்\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \"\"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"வருடம்\"\nmsgstr[1] \"வருடங்கள்\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"மாதம்\"\nmsgstr[1] \"மாதங்கள்\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"வாரம்\"\nmsgstr[1] \"வாரங்கள்\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"நாள்\"\nmsgstr[1] \"நாட்கள்\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"மணி\"\nmsgstr[1] \"மணி\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"நிமிடம்\"\nmsgstr[1] \"நிமிடங்கள்\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"நிமிடங்கள்\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \"\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/ta/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/conf/locale/ta/formats.py",
    "content": "# -*- encoding: utf-8 -*-\n# This file is distributed under the same license as the Django package.\n#\n\n# The *_FORMAT strings use the Django date format syntax,\n# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\nDATE_FORMAT = 'j F, Y'\nTIME_FORMAT = 'g:i:s A'\n# DATETIME_FORMAT = \n# YEAR_MONTH_FORMAT = \nMONTH_DAY_FORMAT = 'j F'\nSHORT_DATE_FORMAT = 'j M, Y'\n# SHORT_DATETIME_FORMAT = \n# FIRST_DAY_OF_WEEK = \n\n# The *_INPUT_FORMATS strings use the Python strftime format syntax,\n# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior\n# DATE_INPUT_FORMATS = \n# TIME_INPUT_FORMATS = \n# DATETIME_INPUT_FORMATS = \n# DECIMAL_SEPARATOR = \n# THOUSAND_SEPARATOR = \n# NUMBER_GROUPING = \n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/te/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <prudhviy@gmail.com>, 2011.\n# Veeven  <veeven@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:47+0000\\n\"\n\"Last-Translator: bhaskar teja yerneni <prudhviy@gmail.com>\\n\"\n\"Language-Team: Telugu (http://www.transifex.com/projects/p/django/language/\"\n\"te/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: te\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"ఆరబిక్\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"అజేర్బైజని \"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"బల్గేరియన్\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"బెంగాలీ\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"బోస్నియన్\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"కాటలాన్\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"ఛెక్\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"వెల్ష్\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"డానిష్\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"జెర్మన్\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"గ్రీక్\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"ఆంగ్లం\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"బ్రిటీష్ ఆంగ్లం\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"స్పానిష్\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"అర్జెంటీనా స్పానిష్\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"మెక్షికన్  స్పానిష్ \"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"ఎస్టొనియన్\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"బాస్క్\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"పారసీ\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"ఫీన్నిష్\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"ఫ్రెంచ్\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"ఫ్రిసియన్\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"ఐరిష్\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"గలిసియన్\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"హీబ్రూ\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"హిందీ\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"క్రొయేషియన్\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"హంగేరియన్\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"ఇండోనేషియన్\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"ఐస్లాండిక్\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"ఇటాలియవ్\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"జపనీ\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"జార్జియన్\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"ఖ్మెర్\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"కన్నడ\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"కొరియన్\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"లిథుయేనియన్\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"లాత్వియన్\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"మెసిడోనియన్\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"మలయాళం\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"మంగోలియన్\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"నోర్వేగియన్ బొక్మల్ \"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"డచ్\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"నోర్వేగియన్ న్య్నోర్స్క్ \"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"పంజాబీ\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"పొలిష్\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"పోర్చుగీస్\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"బ్రజీలియన్  పోర్చుగీస్\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"రొమానియన్\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"రష్యన్\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"స్లొవాక్\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"స్లొవానియన్\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"అల్బేనియన్\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"సెర్బియన్\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"సెర్బియన్ లాటిన్\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"స్వీడిష్\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"తమిళం\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"తెలుగు\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"థాయి\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"టర్కిష్\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"ఉక్రేనియన్\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"ఉర్దూ\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"వియెత్నామీ\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"సరళ చైనీ\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"సాంప్రదాయ  చైనీ\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"సరైన విలువని ఇవ్వండి.\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"దయచేసి సరైన IPv4 అడ్రస్ ఇవ్వండి\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"కామాల తో అంకెలు విడడీసి ఇవ్వండి \"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"\"\n\"దయచేసి దీని విలువ %(limit_value)s గ ఉండేట్లు చూసుకొనుము. ( మీరు సమర్పించిన విలువ \"\n\"%(show_value)s )\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"దయచేసి దీని విలువ %(limit_value)s కు సమానముగా లేక తక్కువగా ఉండేట్లు చూసుకొనుము.\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"దయచేసి దీని విలువ %(limit_value)s కు సమానముగా లేక ఎక్కువగా ఉండేట్లు చూసుకొనుము.\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"దయచేసి ఈ విలువ యొక్క పొడువు కనీసం %(limit_value)d అక్షరములు ఉండేట్లు చూసుకొనుము. ( మీరు \"\n\"సమర్పించిన విలువ లో %(show_value)d అక్షరములు వున్నవి )\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"దయచేసి ఈ విలువ యొక్క పొడువు %(limit_value)d అక్షరములు మాత్రమే ఉండేట్లు చూసుకొనుము. (మీరు \"\n\"సమర్పించిన విలువ లో %(show_value)d అక్షరములు వున్నవి )\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"మరియు\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"ఈ ఫీల్డ్ కాళీగా ఉందకూడడు      \"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"ఈ ఖాళీని తప్పనిసరిగా పూరించాలి\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"పూర్ణసంఖ్య\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"బూలియన్ (అవునా లేక కాదా)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"పదబంధం (గరిష్ఠం %(max_length)s)\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"కామా  తో విడడీసిన  సంఖ్య\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"తేదీ (సమయం లేకుండా)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"తేది (సమయం తో)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"దశగణసంఖ్య\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"ఈమెయిలు చిరునామా\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"ఫైల్   పాత్\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"ఐపీ చిరునామా\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"పాఠ్యం\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"సమయం\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"\\\"Control\\\" కాని  \\\"Command\\\" మాక్ లో  నొక్కి ఉంచండి  , ఒకటి కన్న ఎక్కువ ఎన్నుకోవటానికి\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"ఈ ఫీల్డ్ అవసరము\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"పూర్ణ సంఖ్య ఇవ్వండి\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"దయచేసి పూర్ణ సంఖ్య ఇవ్వండి\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"దయచేసి సరైన తేది ఇవ్వండి.\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"దయచేసి సరైన సమయం ఇవ్వండి.\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"దయచేసి సరైన తెది/సమయం ఇవ్వండి.\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"ఫైలు సమర్పించబడలేదు.\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"మీరు సమర్పించిన  ఫైల్ కాళీగా ఉంది \"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"సరైన URL ఇవ్వండి.\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"సరైన విలువల జాబితాను ఇవ్వండి.\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"అంతరము\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"తొలగించు\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"దయచేసి %(field)s యొక్క నకలు విలువను సరిదిద్దుకోండి.\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"దయచేసి %(field)s యొక్క నకలు విలువను సరిదిద్దుకోండి. దీని విలువ అద్వితీయమయినది \"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"దయచేసి క్రింద ఉన్న నకలు విలువను సరిదిద్దుకోండి.\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"ప్రస్తుతము \"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"మార్చు\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"తెలియనది\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"అవును\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"కాదు\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"అవును, కాదు , ఏమొ\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"%(size)d బైటు\"\nmsgstr[1] \"%(size)d బైట్లు\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s కిబై\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s మెబై\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s గిబై\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"p.m.\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"a.m.\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"PM\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"AM\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"అర్ధరాత్రి\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"మధ్యాహ్నం\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"సోమవారం\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"మంగళవారం\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"బుధవారం\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"గురువారం\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"శుక్రవారం\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"శనివారం\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"ఆదివారం\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"సోమ\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"మంగళ\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"బుధ\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"గురు\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"శుక్ర\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"శని\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"ఆది\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"జనవరి\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"ఫిబ్రవరి\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"మార్చి\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"ఎప్రిల్\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"మే\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"జూన్\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"జులై\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"ఆగష్టు\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"సెప్టెంబర్\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"అక్టోబర్\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"నవంబర్\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"డిసెంబర్\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"జన\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"ఫిబ్ర\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"మార్చి\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"ఎప్రి\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"మే\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"జూన్\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"జూలై\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"ఆగ\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"సెప్టెం\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"అక్టో\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"నవం\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"డిసెం\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"జన.\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"ఫిబ్ర.\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"మార్చి\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"ఏప్రి.\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"మే\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"జూన్\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"జూలై\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"ఆగ.\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"సెప్టెం.\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"అక్టో.\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"నవం.\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"డిసెం.\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"జనవరి\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"ఫిబ్రవరి\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"మార్చి\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"ఏప్రిల్\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"మే\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"జూన్\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"జూలై\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"ఆగస్ట్\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"సెప్టెంబర్\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"అక్టోబర్\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"నవంబర్\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"డిసెంబర్\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"లేదా\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \", \"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"సంవత్సరం\"\nmsgstr[1] \"సంవత్సరాలు\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"నెల\"\nmsgstr[1] \"నెలలు\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"వారం\"\nmsgstr[1] \"వారాలు\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"రోజు\"\nmsgstr[1] \"రోజులు\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"గంట\"\nmsgstr[1] \"గంటలు\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"నిమిషం\"\nmsgstr[1] \"నిమిషాలు\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"నిమిషాలు\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \", %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/te/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/conf/locale/te/formats.py",
    "content": "# -*- encoding: utf-8 -*-\n# This file is distributed under the same license as the Django package.\n#\n\n# The *_FORMAT strings use the Django date format syntax,\n# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\nDATE_FORMAT = 'j F Y'\nTIME_FORMAT = 'g:i:s A'\n# DATETIME_FORMAT = \n# YEAR_MONTH_FORMAT = \nMONTH_DAY_FORMAT = 'j F'\nSHORT_DATE_FORMAT = 'j M Y'\n# SHORT_DATETIME_FORMAT = \n# FIRST_DAY_OF_WEEK = \n\n# The *_INPUT_FORMATS strings use the Python strftime format syntax,\n# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior\n# DATE_INPUT_FORMATS = \n# TIME_INPUT_FORMATS = \n# DATETIME_INPUT_FORMATS = \n# DECIMAL_SEPARATOR = \n# THOUSAND_SEPARATOR = \n# NUMBER_GROUPING = \n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/th/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Kowit Charoenratchatabhan <kowito@gmail.com>, 2012-2013.\n# Suteepat Damrongyingsupab <monkeycrew_topza@hotmail.com>, 2011, 2012.\n# Vichai Vongvorakul <vongvichai@gmail.com>, 2013.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-03-04 22:30+0000\\n\"\n\"Last-Translator: Kowit Charoenratchatabhan <kowit.s.c@gmail.com>\\n\"\n\"Language-Team: Thai (http://www.transifex.com/projects/p/django/language/\"\n\"th/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: th\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"อัฟฟริกัน\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"อารบิก\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"อาเซอร์ไบจาน\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"บัลแกเรีย\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"เบลารุส\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"เบ็งกาลี\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"เบรตัน\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"บอสเนีย\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"คาตะลาน\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"เช็ก\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"เวลส์\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"เดนมาร์ก\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"เยอรมัน\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"กรีก\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"อังกฤษ\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"อังกฤษ - สหราชอาณาจักร\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"เอสเปรันโต\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"สเปน\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"สเปน - อาร์เจนติน่า\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"เม็กซิกันสเปน\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"นิการากัวสเปน\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"เวเนซุเอลาสเปน\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"เอสโตเนีย\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"แบ็ซค์\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"เปอร์เชีย\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"ฟินแลนด์\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"ฝรั่งเศส\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"ฟริเซียน\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"ไอริช\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"กาลิเซีย\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"ฮีบรู\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"ฮินดี\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"โครเอเชีย\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"ฮังการี\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"ภาษากลาง\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"อินโดนิเซีย\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"ไอซ์แลนด์\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"อิตาลี\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"ญี่ปุ่น\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"จอร์เจีย\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"คาซัค\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"เขมร\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"กัณณาท\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"เกาหลี\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"ลักแซมเบิร์ก\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"ลิทัวเนีย\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"ลัตเวีย\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"มาซิโดเนีย\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"มลายู\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"มองโกเลีย\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"นอร์เวย์ - Bokmal\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"เนปาล\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"ดัตช์\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"นอร์เวย์ - Nynorsk\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"ปัญจาบี\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"โปแลนด์\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"โปรตุเกส\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"โปรตุเกส (บราซิล)\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"โรมาเนีย\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"รัสเซีย\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"สโลวัก\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"สโลวีเนีย\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"อัลแบเนีย\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"เซอร์เบีย\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"เซอร์เบียละติน\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"สวีเดน\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"สวาฮีลี\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"ทมิฬ\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"เตลุคู\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"ไทย\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"ตุรกี\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"ตาตาร์\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"อัดเมิร์ท\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"ยูเครน\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"เออร์ดู\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"เวียดนาม\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"จีนตัวย่อ\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"จีนตัวเต็ม\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"กรุณาใส่ค่าที่ถูกต้อง\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"ป้อนที่อยู่อีเมลที่ถูกต้อง\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"ใส่ 'slug' ประกอปด้วย ตัวหนังสือ ตัวเลข เครื่องหมายขีดล่าง หรือ  เครื่องหมายขีด\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"กรุณาใส่หมายเลขไอพีที่ถูกต้อง\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"กรอก IPv6 address ให้ถูกต้อง\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"กรอก IPv4 หรือ IPv6 address ให้ถูกต้อง\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"ใส่ตัวเลขที่คั่นด้วยจุลภาคเท่านั้น\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"ค่านี้ต้องเป็น %(limit_value)s (ปัจจุบันคือ %(show_value)s)\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"ค่านี้ต้องน้อยกว่าหรือเท่ากับ %(limit_value)s\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"ค่านี้ต้องมากกว่าหรือเท่ากับ %(limit_value)s\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"ค่านี้ต้องมีอย่างน้อย %(limit_value)d ตัวอักษร (ปัจจุบันมีจำนวน %(show_value)d ตัวอักษร)\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"ค่านี้มีได้ไม่เกิน %(limit_value)d ตัวอักษร (ปัจจุบันมีจำนวน %(show_value)d ตัวอักษร)\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"%(field_name)s จะต้องไม่ซ้ำกันสำหรับ %(date_field)s %(lookup)s\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"และ\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"%(model_name)s และ %(field_label)s มีอยู่แล้ว\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"ค่า %r ไม่ถูกต้อง\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"ฟิลด์นี้ไม่สารถปล่อยว่างได้\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"ฟิลด์นี้เว้นว่างไม่ได้\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"ฟิลด์ข้อมูล: %(field_type)s\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"จำนวนเต็ม\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"ค่าของ '%s' ต้องเป็น integer\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"ค่าของ '%s' ต้องเป็น True หรือ False อย่างใดอย่างหนึ่ง\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"ตรรกะแบบบูลหมายถึง ค่า\\\"จริง\\\" (True) หรือ \\\"ไม่จริง \\\" (False)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"สตริง(ได้ถึง %(max_length)s)\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"จำนวนเต็มแบบมีจุลภาค\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"ค่าของ '%s' มีรูปแบบไม่ถูกต้อง แต่ควรจะอยู่ในรูปแบบ YYYY-MM-DD\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"ค่าของ '%s' อยู่ในรูปแบบที่ถูกต้อง (YYYY-MM-DD) แต่เลขวันที่ผิด\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"วันที่ (ไม่มีเวลา)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\"ค่าของ '%s' มีรูปแบบไม่ถูกต้อง แต่ควรจะอยู่ในรูปแบบ YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\"ค่าของ '%s' อยู่ในรูปแบบที่ถูกต้อง (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) แต่ วันที่/เวลา \"\n\"ผิด\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"วันที่ (พร้อมด้วยเวลา)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"ค่าของ '%s' ต้องเป็นตัวเลขฐานสิบ\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"เลขฐานสิบหรือเลขทศนิยม\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"อีเมล\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"ตำแหน่งไฟล์\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"ค่าของ '%s' ต้องเป็นตัวเลขที่มีจุดทศนิยม\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"เลขทศนิยม\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"จำนวนเต็ม (8 byte)\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"IPv4 address\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"หมายเลขไอพี\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"ค่าของ '%s' ต้องเป็น None หรือ True หรือ False อย่างใดอย่างหนึ่ง\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"\"\n\"ตรรกะแบบบูลหมายถึง ค่า\\\"จริง\\\" (True) หรือ \\\"ไม่จริง \\\" (False) หรือ \\\"ไม่มี\\\" (None)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"จํานวนเต็มบวก\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"จํานวนเต็มบวกขนาดเล็ก\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"Slug (ถึง %(max_length)s )\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"จำนวนเต็มขนาดเล็ก\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"ข้อความ\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"ค่าของ '%s' มีรูปแบบไม่ถูกต้อง แต่ควรจะอยู่ในรูปแบบ HH:MM[:ss[.uuuuuu]]\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"ค่าของ '%s' อยู่ในรูปแบบที่ถูกต้อง (HH:MM[:ss[.uuuuuu]]) แต่เวลาผิด\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"เวลา\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"ไฟล์\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"รูปภาพ\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"Primary key %(pk)r ของโมเดล %(model)s ไม่มีอยู่จริง\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"Foreign Key (ชนิดของข้อมูลจะถูกกำหนดจากฟิลด์ที่เกี่ยวข้อง)\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"ความสัมพันธ์แบบหนึ่งต่อหนึ่ง\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"ความสัมพันธ์แบบ many-to-many\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"กดปุ่ม \\\"Control\\\", หรือ \\\"Command\\\" บน Mac ค้างไว้, เพื่อเลือกหลายๆตัวเลือก\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"ฟิลด์นี้จำเป็น\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"กรอกหมายเลข\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"กรอกหมายเลข\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"แน่ใจว่ารวมแล้วไม่เกิน %s หลัก.\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"แน่ใจว่ารวมแล้วเป็นทศนิยมไม่เกิน %s หลัก.\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"แน่ใจว่ารวมแล้วไม่เกิน %s หลัก ก่อนจุดทศนิยม.\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"กรุณาใส่วัน\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"กรุณาใส่เวลา\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"กรุณาใส่วันเวลา\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"ไม่มีไฟล์ใดถูกส่ง. ตรวจสอบ encoding type ในฟอร์ม.\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"ไม่มีไฟล์ใดถูกส่ง\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"ไฟล์ที่ส่งว่างเปล่า\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"ชื่อไฟล์มีความยาวได้ไม่เกิน %(max)d ตัวอักษร (ปัจจุบันมี %(length)d ตัวอักษร)\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"โปรดเลือกไฟล์หรือติ๊ก clear checkbox อย่างใดอย่างหนึ่ง\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"อัพโหลดรูปที่ถูกต้อง. ไฟล์ที่อัพโหลดไปไม่ใช่รูป หรือรูปเสียหาย.\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"ใส่ URL ที่ถูกต้อง\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"เลือกตัวเลือกที่ถูกต้อง. %(value)s ไม่ใช่ตัวเลือกที่ใช้ได้.\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"ใส่รายการ\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"เรียงลำดับ\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"ลบ\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"โปรดแก้ไขข้อมูลที่ซ้ำซ้อนใน %(field)s\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"โปรดแก้ไขข้อมูลที่ซ้ำซ้อนใน %(field)s ซึ่งจะต้องไม่ซ้ำกัน\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\"โปรดแก้ไขข้อมูลซ้ำซ้อนใน %(field_name)s ซึ่งจะต้องไม่ซ้ำกันสำหรับ %(lookup)s ใน \"\n\"%(date_field)s\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"โปรดแก้ไขค่าที่ซ้ำซ้อนด้านล่าง\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"Foreign key ไม่สัมพันธ์กับ parent primary key\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"เลือกตัวเลือกที่ถูกต้อง. ตัวเลือกนั้นไม่สามารถเลือกได้.\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"เลือกตัวเลือกที่ถูกต้อง. %s ไม่สามารถเลือกได้\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"\\\"%s\\\" ใช้เป็น primary key ไม่ได้\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\"%(datetime)s ไม่สามารถแปลงให้อยู่ใน %(current_timezone)s time zone ได้ เนื่องจาก \"\n\"time zone ไม่ชัดเจน หรือไม่มีอยู่จริง\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"ปัจจุบัน\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"เปลี่ยนแปลง\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"ล้าง\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"ไม่รู้\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"ใช่\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"ไม่ใช่\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"ใช่,ไม่ใช่,อาจจะ\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"%(size)d ไบต์\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s KB\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s MB\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s GB\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s TB\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s PB\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"p.m.\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"a.m.\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"PM\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"AM\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"เที่ยงคืน\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"เที่ยงวัน\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"จันทร์\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"อังคาร\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"พุธ\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"พฤหัสบดี\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"ศุกร์\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"เสาร์\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"อาทิตย์\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"จ.\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"อ.\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"พ.\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"พฤ.\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"ศ.\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"ส.\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"อ.\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"มกราคม\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"กุมภาพันธ์\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"มีนาคม\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"เมษายน\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"พฤษภาคม\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"มิถุนายน\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"กรกฎาคม\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"สิงหาคม\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"กันยายน\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"ตุลาคม\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"พฤศจิกายน\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"ธันวาคม\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"ม.ค.\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"ก.พ.\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"มี.ค.\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"เม.ย.\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"พ.ค.\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"มิ.ย.\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"ก.ค.\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"ส.ค.\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"ก.ย.\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"ต.ค.\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"พ.ย.\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"ธ.ค.\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"ม.ค.\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"ก.พ.\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"มี.ค.\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"เม.ษ.\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"พ.ค.\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"มิ.ย.\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"ก.ค.\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"ส.ค.\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"ก.ย.\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"ต.ค.\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"พ.ย.\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"ธ.ค.\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"มกราคม\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"กุมภาพันธ์\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"มีนาคม\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"เมษายน\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"พฤษภาคม\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"มิถุนายน\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"กรกฎาคม\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"สิงหาคม\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"กันยายน\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"ตุลาคม\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"พฤศจิกายน\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"ธันวาคม\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"%(truncated_text)s...\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"หรือ\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \", \"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"ปี\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"เดือน\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"สัปดาห์\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"วัน\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"ชั่วโมง\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"นาที\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"นาที\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \", %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"ไม่ได้รับอนุญาตให้ใช้ Directory indexes ที่นี่\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\\\"%(path)s\\\" ไม่มีอยู่\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"ดัชนีของ %(directory)s\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"ไม่ระบุปี\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"ไม่ระบุเดือน\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"ไม่ระบุวัน\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"ไม่ระบุสัปดาห์\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"ไม่มี %(verbose_name_plural)s ที่ใช้ได้\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\"%(verbose_name_plural)s ในอนาคตไม่สามารถใช้ได้ เนื่องจาก %(class_name)s.\"\n\"allow_future มีค่าเป็น False\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"สตริงค์ '%(datestr)s' ของวันไม่ถูกต้องกับฟอร์แมต '%(format)s'\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"ไม่พบ %(verbose_name)s จาก query\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"ไม่ใช่หน้าสุดท้าย และไม่สามารถค่าแปลงเป็น int ได้\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"หน้าไม่ถูกต้อง (%(page_number)s): %(message)s\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"list ว่างเปล่า และ '%(class_name)s.allow_empty' มีค่าเป็น False\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/th/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/conf/locale/th/formats.py",
    "content": "# -*- encoding: utf-8 -*-\n# This file is distributed under the same license as the Django package.\n#\n\n# The *_FORMAT strings use the Django date format syntax,\n# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\nDATE_FORMAT = 'j F Y'\nTIME_FORMAT = 'G:i:s'\nDATETIME_FORMAT = 'j F Y, G:i:s'\nYEAR_MONTH_FORMAT = 'F Y'\nMONTH_DAY_FORMAT = 'j F'\nSHORT_DATE_FORMAT = 'j M Y'\nSHORT_DATETIME_FORMAT = 'j M Y, G:i:s'\n# FIRST_DAY_OF_WEEK = \n\n# The *_INPUT_FORMATS strings use the Python strftime format syntax,\n# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior\n# DATE_INPUT_FORMATS = \n# TIME_INPUT_FORMATS = \n# DATETIME_INPUT_FORMATS = \nDECIMAL_SEPARATOR = '.'\nTHOUSAND_SEPARATOR = ','\n# NUMBER_GROUPING = \n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/tr/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Caner Başaran <basaran.caner@gmail.com>, 2012.\n#   <cihadgundogdu@gmail.com>, 2012.\n# Gökmen Görgen <gokmen@alageek.com>, 2013.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Mesut Can Gürle <mesutcang@gmail.com>, 2013.\n# Metin Amiroff <amiroff@gmail.com>, 2011-2012.\n# Murat Çorlu <muratcorlu@gmail.com>, 2012.\n# Murat Sahin <martinamca@gmail.com>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-02-24 17:10+0000\\n\"\n\"Last-Translator: Gökmen Görgen <gokmen@alageek.com>\\n\"\n\"Language-Team: Turkish (http://www.transifex.com/projects/p/django/language/\"\n\"tr/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: tr\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"Güney Afrika Hollanda Lehçesi\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"Arapça\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"Azerice\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"Bulgarca\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"Beyaz Rusça\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"Bengali Dili\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"Bretonca\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"Boşnakça\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"Katalanca\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"Çekçe\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"Galce\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"Danca\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"Almanca\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"Yunanca\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"İngilizce\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"İngiltere İngilizce\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"Esperanto\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"İspanyolca\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"Arjantin İspanyolcası\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"Meksika İspanyolcası\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"Nikaragua İspanyolcası\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"Venezüella İspanyolcası\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"Estonca\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"Baskça\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"Farsça\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"Fince\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"Fransızca\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"Frisce\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"İrlandaca\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"Galler Dili\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"İbranice\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"Hinduca\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"Hırvatça\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"Macarca\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"Interlingua\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"Endonezce\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"İzlanda dili\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"İtalyanca\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"Japonca\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"Gürcüce\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"Kazakça\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"Kamboçyaca\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"Kannada Dili\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"Korece\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"Lüksemburgca\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"Litovca\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"Leton Dili\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"Makedonca\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"Malayamca\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"Moğolca\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"Norveçce (Bokmal)\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"Nepalce\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"Flamanca\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"Norveçce (Nynorsk)\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"Punjabice\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"Lehçe\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"Portekizce\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"Brezilya Portekizcesi\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"Romence\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"Rusça\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"Slovakça\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"Slovence\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"Arnavutça\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"Sırpça\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"Sırp Latini\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"İsveççe\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"Svahili Dili\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"Tamilce\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"Telugu Dili\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"Tayca\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"Türkçe\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"Tatarca\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"Udmurtça\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"Ukraynaca\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"Urduca\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"Vietnamca\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"Basiteştirilmiş Çince\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"Geleneksel Çince\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"Geçerli bir değer girin.\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"Geçerli bir e-posta adresi girin.\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"Lütfen sadece harf, rakam, altçizgi veya çizgiden oluşan değer girin.\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"Geçerli bir IPv4 adresi girin.\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"Geçerli bir IPv6 adresi girin.\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"Geçerli bir IPv4 veya IPv6 adresi girin\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"Sadece virgülle ayrılmış sayılar girin.\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"\"\n\"Bu değerin en az %(limit_value)s karakterden oluştuğundan emin olun (şu anki \"\n\"karakter sayısı: %(show_value)s).\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"\"\n\"Bu değerin %(limit_value)s karakterden az veya eşit olduğundan emin olun.\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"\"\n\"Bu değerin %(limit_value)s karakterden çok veya eşit olduğundan emin olun.\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Bu değerin en az %(limit_value)d karakterden oluştuğundan emin olun (şu anki \"\n\"karakter sayısı: %(show_value)d).\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Bu değerin en fazla %(limit_value)d karakterden oluştuğundan emin olun (şu \"\n\"anki karakter sayısı: %(show_value)d).\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"\"\n\"%(field_name)s değeri %(date_field)s alanı %(lookup)s işlemi için tek \"\n\"olmalıdır.\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"ve\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"%(field_label)s alanına sahip %(model_name)s zaten mevcuttur.\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"%r değeri geçerli bir seçim değil.\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"Bu alan boş bırakılamaz.\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"Bu alan boş bırakılamaz. \"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Alan türü: %(field_type)s\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"Tamsayı\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"'%s' değeri bir tamsayı olmalıdır.\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"'%s' değeri Doğru ya da Yanlış olması gerekir.\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Mantıksal (True ya da False)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"Karakter disizi (en fazla %(max_length)s)\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"Virgülle ayrılmış tamsayılar\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"'%s' geçersiz tarih formatı. YYYY-AA-GG biçiminde olmalıdır.\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"\"\n\"'%s' değeri doğru bir biçime sahip (YYYY-MM-DD) ancak bu geçersiz bir tarih.\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"Tarih (saat yok)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\"'%s' değeri geçersiz bir biçime sahip. YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ] \"\n\"biçiminde olması gerekiyor.\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\"'%s' biçimsel olarak doğru (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) ancak bu \"\n\"geçersiz bir tarih/zaman.\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"Tarih (saat var)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"'%s' değeri bir ondalık sayı olmalıdır.\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"Ondalık sayı\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"E-posta adresi\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"Dosya yolu\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"'%s' değeri float olmalı\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"Floating point rakamı\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"Büyük (8 bayt) integer\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"IPv4 adresi\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"IP adresi\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"'%s' değeri None, True veya False olmak zorundadır.\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"Mantıksal (True, False, ya da None)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"Positif sayı\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"Pozitif küçük sayı\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"Slug (%(max_length)s karaktere kadar)\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"Küçük sayı\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"Metin\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"\"\n\"'%s' değerinin geçersiz bir biçimi var. Bunun HH:MM[:ss[.uuuuuu]] biçiminde \"\n\"olması gerekiyor.\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\"'%s' değeri doğru biçime sahip (HH:MM[:ss[.uuuuuu]]) ancak bu geçersiz bir \"\n\"zaman.\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"Saat\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"Dosya\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"Resim\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"Birincil anahtarı %(pk)r olan %(model)s mevcut değil.\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"Yabancı Anahtar (türü ilişkili alana göre belirlenir)\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"Bire-bir ilişki\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"Çoğa-çok ilişki\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"\"\n\"\\\"Ctrl\\\" (Mac'de \\\"Command\\\") tuşunu basılı tutularak birden fazla seçim \"\n\"yapılabilir.\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"Bu alan zorunludur.\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"Tam sayı girin.\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"Bir sayı girin.\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"Toplamda en fazla %s sayının olduğundan emin olun.\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"En fazla %s onluk yerin olduğundan emin olun.\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"Onluk kısımdan önce en fazla %s sayı olduğundan emin olun.\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"Geçerli bir tarih girin.\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"Geçerli bir zaman girin.\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"Geçerli bir tarih/zaman girin.\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"Dosya gönderilmedi. Formdaki kodlama türünü kontrol edin.\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"Hiçbir dosya gönderilmedi.\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"Gönderilen dosya boş.\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\"Bu dosya adının en fazla %(max)d karakterden oluştuğundan emin olun (şu anki \"\n\"karakter sayısı: %(length)d).\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"\"\n\"Lütfen ya dosya seçin, ya da sıfırla kutucuğunu işaretleyin. İkisini aynı \"\n\"anda yapmayın.\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\"Geçerli bir resim girin. Gönderdiğiniz dosya resim değil, ya da bozuk bir \"\n\"dosya.\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"Geçerli bir URL girin.\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"Geçerli bir seçimde bulunun; %(value)s mevcut değerlerden biri değil.\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"Değer listesi giriniz.\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"Sıralama\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"Sil\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"Lütfen %(field)s alanları için mükerrer kayıt problemini düzeltin.\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"\"\n\"Lütfen %(field)s alanı için mükerrer verileri düzeltin, bunlar eşsiz \"\n\"olmalıdır.\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\"Lütfen %(field_name)s alanı için mükerrer verileri düzeltin, bunlar \"\n\"%(date_field)s alanı %(lookup)s sorgulamaları için eşsiz olmalıdır.\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"Lütfen aşağıdaki mükerrer kayıtları düzeltin.\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"\"\n\"İçeride belirtilmiş yabancı anahtar ebeveyin nesnenin birincil anahtarı ile \"\n\"uyuşmadı.\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"\"\n\"Geçerli bir seçimde bulunun; seçiminiz mevcut değerlerden birisi değil.\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"Geçerli bir seçimde bulunun; %s mevcut değerlerden biri değil.\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"\\\"%s\\\" birincil anahtar için geçerli bir değer değil.\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\" %(datetime)s %(current_timezone)s saat dilimine yorumlanamadı; bu belirsiz \"\n\"olabilir ya da olmayabilir.\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"Geçerli\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"Düzenle\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"Sıfırla\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"Bilinmiyor\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"Evet\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"Hayır\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"evet,hayır,olabilir\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"%(size)d bayt\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s KB\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s MB\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s GB\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s TB\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s PB\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"ö.s.\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"ö.ö.\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"ÖS\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"ÖÖ\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"gece yarısı\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"öğlen\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"Pazartesi\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"Salı\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"Çarşamba\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"Perşembe\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"Cuma\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"Cumartesi\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"Pazar\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"Pzt\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"Sal\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"Çrş\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"Prş\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"Cum\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"Cmt\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"Paz\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"Ocak\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"Şubat\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"Mart\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"Nisan\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"Mayıs\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"Haziran\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"Temmuz\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"Ağustos\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"Eylül\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"Ekim\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"Kasım\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"Aralık\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"oca\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"şub\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"mar\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"nis\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"may\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"haz\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"tem\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"ağu\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"eyl\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"eki\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"kas\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"ara\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"Oca.\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"Şub.\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"Mart\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"Nisan\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"Mayıs\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"Haziran\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"Temmuz\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"Ağu.\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"Eyl.\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"Eki.\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"Kas.\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"Ara.\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"Ocak\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"Şubat\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"Mart\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"Nisan\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"Mayıs\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"Haziran\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"Temmuz\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"Ağustos\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"Eylül\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"Ekim\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"Kasım\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"Aralık\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"%(truncated_text)s...\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"ya da\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \", \"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"yıl\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"ay\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"hafta\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"gün\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"saat\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"dakika\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"dakika\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \", %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"Klasör indeksi görünümü kapalı.\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\\\"%(path)s\\\" yok\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"%(directory)s indeksi\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"Yıl bilgisi belirtilmedi\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"Ay bilgisi belirtilmedi\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"Gün bilgisi belirtilmedi\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"Hafta bilgisi belirtilmedi\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"Mevcut %(verbose_name_plural)s kaydı bulunamadı\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\"Gelecek %(verbose_name_plural)s mevcut değil, çünkü %(class_name)s.\"\n\"allow_future değeri False olarak tanımlıdır.\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"Geçersiz tarih dizisi: '%(datestr)s', format: '%(format)s' \"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"Sorguya uygun herhangi bir %(verbose_name)s bulunamadı\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"Sayfa 'sonuncu' değil, veya int'e çevirilemez.\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"Geçersiz sayfa (%(page_number)s): %(message)s\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"Liste boş ve '%(class_name)s.allow_empty' değeri False olarak tanımlı.\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/tr/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/conf/locale/tr/formats.py",
    "content": "# -*- encoding: utf-8 -*-\n# This file is distributed under the same license as the Django package.\n#\n\n# The *_FORMAT strings use the Django date format syntax,\n# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\nDATE_FORMAT = 'd F Y'\nTIME_FORMAT = 'H:i:s'\nDATETIME_FORMAT = 'd F Y H:i:s'\nYEAR_MONTH_FORMAT = 'F Y'\nMONTH_DAY_FORMAT = 'd F'\nSHORT_DATE_FORMAT = 'd M Y'\nSHORT_DATETIME_FORMAT = 'd M Y H:i:s'\nFIRST_DAY_OF_WEEK = 1 # Pazartesi\n\n# The *_INPUT_FORMATS strings use the Python strftime format syntax,\n# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior\nDATE_INPUT_FORMATS = (\n    '%d/%m/%Y', '%d/%m/%y',     # '25/10/2006', '25/10/06'\n    '%y-%m-%d',                 # '06-10-25'\n    # '%d %B %Y', '%d %b. %Y',  # '25 Ekim 2006', '25 Eki. 2006'\n)\nDATETIME_INPUT_FORMATS = (\n    '%d/%m/%Y %H:%M:%S',    # '25/10/2006 14:30:59'\n    '%d/%m/%Y %H:%M',       # '25/10/2006 14:30'\n    '%d/%m/%Y',             # '25/10/2006'\n)\nDECIMAL_SEPARATOR = ','\nTHOUSAND_SEPARATOR = '.'\nNUMBER_GROUPING = 3\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/tt/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Azat Khasanshin <lordofbazuks@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:47+0000\\n\"\n\"Last-Translator: Azat Khasanshin <lordofbazuks@gmail.com>\\n\"\n\"Language-Team: Tatar (http://www.transifex.com/projects/p/django/language/\"\n\"tt/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: tt\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"Гарәп теле\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"Азәрбайҗан\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"Болгар теле\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"Бенгалия теле\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"Босния теле\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"Каталан теле\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"Чех теле\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"Уэльс теле\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"Дания теле\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"Алман теле\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"Грек теле\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"Инглиз теле\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"Британ инглиз теле\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"Испан теле\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"Аргентина испан теле\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"Мексикалы испан\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"Никарагуалы испан\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"Эстон теле\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"Баск теле\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"Фарсы теле\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"Финн теле\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"Француз теле\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"Фриз теле\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"Ирланд теле\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"Галлий теле\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"Яһүд теле\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"Хинд теле\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"Хорват теле\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"Венгр теле\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"Индонезия теле\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"Исланд теле\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"Итальян теле\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"Япон теле\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"Грузин теле\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"Кхмер теле\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"Каннада теле\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"Корея теле\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"Литвалылар теле\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"Латвия теле\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"Македон теле\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"Малаялам теле\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"Монгол теле\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"Норвегиялеләр (Букмол) теле\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"Голланд теле\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"Норвегиялеләр (Нюнорск) теле\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"Паджаби теле\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"Поляк теле\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"Португал теле\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"Бразилия португал теле\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"Румын теле\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"Рус теле\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"Словак теле\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"Словен теле\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"Албан теле\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"Серб теле\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"Серб теле (латин алфавиты)\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"Швед теле\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"Тамиль теле\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"Телугу теле\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"Тай теле\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"Төрек теле\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"Украин теле\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"Урду\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"Вьетнам теле\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"Гадиләштерелгән кытай теле\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"Традицион кытай теле\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"Дөрес кыйммәтне кертегез.\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"\"\n\"Кыйммәт хәрефләрдән, сан билгеләреннән, астына сызу билгесеннән яки дефистан \"\n\"торырга тиеш.\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"Рөхсәт ителгән IPv4 адресын кертегез.\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"Өтерләр белән бүленгән сан билгеләрен кертегез\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"\"\n\"Бу кыйммәтнең %(limit_value)s булуын тикшерегез (хәзер ул - %(show_value)s).\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"\"\n\"Бу кыйммәтнең %(limit_value)s карата кечерәк яки тигез булуын тикшерегез.\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"\"\n\"Бу кыйммәтнең %(limit_value)s карата зуррак яки тигез булуын тикшерегез.\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Бу кыйммәтнең билгеләр санының ким дигәндә %(limit_value)d булуын тикшерегез \"\n\"(хәзер %(show_value)d).\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Бу кыйммәтнең билгеләр санының күп дигәндә %(limit_value)d булуын тикшерегез \"\n\"(хәзер %(show_value)d).\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"\"\n\"%(field_name)s кырындагы кыйммәт %(date_field)s кырындагы %(lookup)s өчен \"\n\"уникаль булырга тиеш.\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"һәм\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"Мондый %(field_label)s белән булган %(model_name)s инде бар.\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"Кыйммәт %r рөхсәт ителмәгән.\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"Бу кырның кыйммәте NULL булырга тиеш түгел.\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"Бу кыр буш булырга тиеш түгел.\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"%(field_type)s типтагы кыр\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"Бөтен сан\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Логик (True яисә False)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"Юл (күп дигәндә %(max_length)s)\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"Өтерләр белән бүленгән бөтен саннар\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"Дата (вакыт күрсәтмәсе булмаган)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"Дата (вакыт күрсәтмәсе белән)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"Унарлы вакланма\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"Файл юлы\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"Күчерелүчән өтер белән булган сан\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"Зур бөтен (8 байт)\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"IP-адрес\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"Логик (True, False я None)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"Текст\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"Вакыт\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"%(pk)r беренчел ачкычы белән булган %(model)s обйекты табылмаган.\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"Тыш ачкыч (тип бәйле кыр буенча билгеләнгән)\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"\\\"Бергә бер\\\" элемтәсе\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"\\\"Күпкә куп\\\" элемтәсе\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"\"\n\"Берничә кыйммәт сайлау өчен \\\"Control\\\" (Mac санакларында \\\"Command\\\") басып \"\n\"торыгыз.\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"Мәҗбүри кыр.\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"Бөтен сан кертегез.\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"Сан кертегез.\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"Цифрлар саны %s караганда күбрәк булмавын тикшерегез.\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"Унарлы урыннары %s караганда күбрәк булмавын тикшерегез.\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"\"\n\"Өтергә кадәр булган цифрлар саны %s караганда күбрәк булмавын тикшерегез.\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"Рөхсәт ителгән датаны кертегез.\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"Рөхсәт ителгән вакытны кертегез.\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"Рөхсәт ителгән дата һәм вакытны кертегез.\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"Һишбер файл җибәрелмәгән. Форма кодлавын тикшерегез.\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"Һишбер файл җибәрелмәгән.\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"Җибәрелгән файл буш.\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\"Бу файлның исеменең озынлыгы күп дигәндә %(max)d булуын тикшерегез (хәзер \"\n\"%(length)d).\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"\"\n\"Зинһар, җибәрегез файлны яисә бушайту байракчасын билгеләгез, икесен бергә \"\n\"түгел.\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\"Рөхсәт ителгән рәсемне йөкләгез. Сез йөкләгән файл рәсем түгел яисә бозылган.\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"Рөхсәт ителгән URLны кертегез.\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"\"\n\"Дөрес тәкъдимне сайлагыз. Рөхсәт ителгән кыйммәтләр арасында %(value)s юк. \"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"Кыйммәтләр исемлеген кертегез.\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"Тәртип\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"Бетерергә\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"Зинһар, %(field)s кырындагы кабатлана торган кыйммәтне төзәтегез.\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"\"\n\"Зинһар, %(field)s кырындагы кыйммәтне төзәтегез, ул уникаль булырга тиеш.\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\"Зинһар, %(field_name)s кырындагы кыйммәтне төзәтегез, ул %(date_field)s \"\n\"кырындагы %(lookup)s өчен уникаль булырга тиеш.\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"Зинһар, астагы кабатлана торган кыйммәтләрне төзәтегез.\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"Тыш ачкыч атаның баш ачкычы белән туры килмиләр.\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"\"\n\"Дөрес тәкъдимне сайлагыз. Рөхсәт ителгән кыйммәтләр арасында сезнең вариант \"\n\"юк.\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"Дөрес тәкъдимне сайлагыз. Рөхсәт ителгән кыйммәтләр арасында %s юк. \"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"\\\"%s\\\" кыйммәте баш ачкыч өчен рөхсәт ителмәгән.\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"Хәзерге вакытта\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"Үзгәртергә\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"Бушайтырга\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"Билгесез\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"Әйе\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"Юк\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"әйе,юк,бәлки\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"%(size)d байт\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s КБ\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s МБ\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s ГБ\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s ТБ\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s ПБ\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"т.с.\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"т.к.\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"ТС\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"ТК\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"төн уртасы\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"көн уртасы\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"Дүшәмбе\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"Сишәмбе\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"Чәршәмбе\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"Пәнҗешәмбе\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"Җомга\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"Шимбә\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"Якшәмбе\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"Дүш\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"Сиш\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"Чәр\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"Пнҗ\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"Җом\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"Шим\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"Якш\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"Гыйнвар\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"Февраль\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"Март\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"Апрель\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"Май\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"Июнь\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"Июль\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"Август\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"Сентябрь\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"Октябрь\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"Ноябрь\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"Декабрь\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"гый\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"фев\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"мар\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"апр\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"май\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"июн\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"июл\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"авг\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"сен\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"окт\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"ноя\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"дек\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"Гый.\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"Фев.\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"Март\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"Апрель\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"Май\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"Июнь\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"Июль\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"Авг.\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"Сен.\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"Окт.\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"Ноя.\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"Дек.\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"гыйнвар\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"февраль\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"март\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"апрель\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"май\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"июнь\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"июль\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"август\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"сентябрь\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"октябрь\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"ноябрь\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"декабрь\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"я\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \",\"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"ел\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"ай\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"атна\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"көн\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"сәгать\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"минут\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"минут\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"Ел билгеләнмәгән\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"Ай билгеләнмәгән\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"Көн билгеләнмәгән\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"Атна билгеләнмәгән\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"Файдалана алырлык %(verbose_name_plural)s юк\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\"%(class_name)s.allow_future False булуы сәбәпле, киләсе \"\n\"%(verbose_name_plural)s файдалана алырлык түгел\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"Дөрес булмаган дата '%(datestr)s', бирелгән формат '%(format)s'\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"Таләпкә туры килгән %(verbose_name)s табылмаган\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"Сәхифә ни соңгы түгел, ни аны бөтен санга әверелдереп булмый\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"Буш исемлек һәм '%(class_name)s.allow_empty'  - False\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/udm/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Andrew Boltachev <andrewboltachev@gmail.com>, 2012-2013.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-13 18:45+0000\\n\"\n\"Last-Translator: Andrew Boltachev <andrewboltachev@gmail.com>\\n\"\n\"Language-Team: Udmurt (http://www.transifex.com/projects/p/django/language/\"\n\"udm/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: udm\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"Африкаанс\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"Араб\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"Азербайджан\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"Болгар\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"Беларус\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"Бенгал\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"Бретон\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"Босниец\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"Каталан\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"Чех\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"Уэльс\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"Датчан\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"Немец\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"Грек\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"Англи\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"Британиысь англи\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"Эсперанто\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"Испан\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"Аргентинаысь испан\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"Мексикаысь испан\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"Никарагуаысь испан\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"Венесуэлаысь испан\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"Эстон\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"Баск\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"Перс\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"Финн\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"Француз\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"Фриз\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"Ирланд\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"Галисий\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"Иврит\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"Хинди\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"Хорват\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"Венгер\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"Интерлингва\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"Индонези\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"Исланд\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"Итальян\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"Япон\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"Грузин\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"Казах\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"Кхмер\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"Каннада\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"Корей\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"Люксембург\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"Литва\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"Латвий\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"Македон\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"Малаялам\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"Монгол\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"Норвег (букмол)\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"Непал\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"Голланд\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"Норвег (нюнорск)\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"Панджаби\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"Поляк\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"Португал\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"Бразилиысь португал\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"Румын\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"Ӟуч\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"Словак\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"Словен\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"Албан\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"Серб\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"Серб (латиницаен)\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"Швед\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"Суахили\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"Тамиль\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"Телугу\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"Тай\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"Турок\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"Бигер\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"Удмурт\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"Украин\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"Урду\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"Вьетнам\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"Китай (капчиятэм)\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"Китай (традици)\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"Тазэ шонер гожтэ.\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"Электорн почта адресэз шонер гожтэ\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"\"\n\"Татчын букваос, лыдпусъёс, улӥ гож пусъёс но дефисъёс гинэ гожтыны яра.\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"Шонер IPv4-адрес гожтэ.\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"Шонер IPv6-адрес гожтэ.\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"Шонер IPv4 яке IPv6 адрес гожтэ.\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"Запятойёсын висъям лыдпусъёсты гожтэ\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"Эскере, та %(limit_value)s шуыса. Али татын %(show_value)s.\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"Талы %(limit_value)s-лэсь бадӟымгес луыны уг яра.\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"Талы %(limit_value)s-лэсь ӧжытгес луыны уг яра.\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Татын %(limit_value)d яке бадӟымгес пус луыны кулэ. Али татын %(show_value)d \"\n\"пус.\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Татын %(limit_value)d яке ӧжытгес пус луыны кулэ. Али татын %(show_value)d \"\n\"пус.\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"но\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"Таӵе %(field_label)s-ен %(model_name)s вань ини.\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"%r шонер вариант ӧвӧл.\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"Та NULL луыны уг яра.\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"Та буш луыны уг яра.\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"%(field_type)s типъем бусы\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"целой\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"'%s' целой лыд луыны кулэ.\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"'%s' True яке False луыны кулэ.\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"True яке False\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"Чур (%(max_length)s пусозь кузьда)\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"Запятоен висъям быдэс лыдъёс\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"'%s' шонертэм гожтэмын. Дата АААА-ТТ-НН форматъя луыны кулэ.\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"'%s' форматезъя (АААА-ТТ-НН) шонер, но сыӵе дата луыны уг быгаты.\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"Дата (час-минут пусйытэк)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\"'%s' шонертэм гожтэмын. Дата но час-минут АААА-ТТ-НН ЧЧ:ММ[:сс[.мммммм]][ЧП] \"\n\"форматъя луыны кулэ.\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\"'%s' форматезъя (АААА-ТТ-НН ЧЧ:ММ[:сс[.мммммм]][ЧП]) шонер, но сыӵе дата но \"\n\"час-минут луыны уг быгаты.\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"Дата но час-минут\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"'%s' десятичной лыд луыны кулэ.\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"Десятичной лыд.\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"Электрон почта адрес\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"Файллэн нимыз\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"'%s' вещественной лыд луыны кулэ.\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"Вещественной лыд\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"Бадӟым (8 байтъем) целой лыд\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"IPv4 адрес\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"IP адрес\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"'%s' None, True яке False луыны кулэ.\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"True, False яке None\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"Целой, нольлэсь бадӟым лыд\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"Нольлэсь бадӟым пичи целой лыд\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"Компьютерной ним (%(max_length)s пусозь кузьда)\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"Пичи целой лыд\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"Текст\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"'%s' шонертэм гожтэмын. Со ЧЧ:ММ[:сс[.мммммм]] форматъя луыны кулэ.\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\"'%s' форматэзъя (ЧЧ:ММ[:сс[.мммммм]]) шонер, но таӵе час-минут луыны уг \"\n\"быгаты.\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"Час-минут\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"Файл\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"Суред\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"Таӵе идентификаторен %(pk)r %(model)s ӧвӧл.\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"Мукет моделен герӟет (тип герӟано бусыя валамын).\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"Одӥг-одӥг герӟет\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"Трос-трос герӟет\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"Тросэз быръён понна \\\"Control\\\", (яке, Mac-ын, \\\"Command\\\") кутэлэ.\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"Та клуэ.\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"Целой лыд гожтэ.\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"Лыд гожтэ.\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"Эскере та %s лыдпуслэсь кузьгес ӧвӧл шуыса.\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"Эскере, татын %s яке ӧжытгес десятичной лыдъёс луыны кулэ.\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"Эскере, запятой азьын %s-лэсь тросгес лыдпус ӧвӧл шуыса.\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"Шонер дата гожтэ.\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"Шонер час-минут гожтэ.\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"Шонер дата но час-минут гожтэ.\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"Одӥг файл но лэзьымтэ. Формалэсь код.\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"Файл лэземын ӧвӧл.\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"Лэзем файл буш.\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\"Эскере, файллэн нимыз %(max)d пуслэсь кузьгес ӧвӧл шуыса (солэн кузьдалаез \"\n\"%(length)d пус).\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"\"\n\"Файл лэзе яке файл ӵушоно шуыса пусъе, огдыръя соиз но, таиз но уг яра.\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"Суред лэзе. Тӥляд файлды лэзьымтэ яке со суред ӧвӧл.\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"Шонер URL гожтэ.\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"Шонер вариант быръе. %(value)s вариантъёс пӧлын ӧвӧл.\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"Список лэзе.\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"Рад\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"Ӵушоно\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"Али\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"Тупатъяно\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"Буш кароно\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"Тодымтэ\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"Бен\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"Ӧвӧл\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"бен,ӧвӧл,уг тодӥськы\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"%(size)d байт\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s КБ\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s МБ\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s МБ\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s ТБ\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s ПБ\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"лымшор бере\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"лымшор азе\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"лымшор бере\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"лымшор азе\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"уйшор\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"лымшор\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"Вордӥськон\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"Пуксён\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"Вирнунал\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"Покчиарня\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"Удмуртарня\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"Кӧснунал\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"Арнянунал\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"врд\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"пкс\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"врн\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"пкч\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"удм\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"ксн\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"арн\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"толшор\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"тулыспал\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"южтолэзь\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"оштолэзь\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"куартолэзь\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"инвожо\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"пӧсьтолэзь\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"гудырикошкон\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"куарусён\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"коньывуон\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"шуркынмон\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"толсур\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"тшт\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"тпт\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"южт\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"ошт\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"крт\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"ивт\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"пст\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"гкт\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"кут\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"квт\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"шкт\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"тст\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"тшт\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"тпт\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"южт\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"ошт\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"крт\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"ивт\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"пст\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"гкт\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"кут\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"квт\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"шкт\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"тст\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"толшоре\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"тулыспалэ\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"южтолэзе\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"оштолэзе\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"куартолэзе\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"инвожое\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"пӧсьтолэзе\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"гудырикошконэ\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"куарусёнэ\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"коньывуонэ\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"шуркынмонэ\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"толсуре\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"%(truncated_text)s...\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"яке\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \",\"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"ар\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"толэзь\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"арня\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"нунал\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"час\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"минут\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"минут\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \", %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"Папкаослэсь пуштроссэс татын учкыны уг яра.\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\\\"%(path)s\\\" ӧвӧл\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"%(directory)s папкалэн пушторсэз\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/uk/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Boryslav Larin <brabadu@gmail.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <krzroman@gmail.com>, 2012.\n# Sergey Lysach <sergikoff88@gmail.com>, 2011-2013.\n# Sergiy Kuzmenko <s.kuzmenko@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-12 18:27+0000\\n\"\n\"Last-Translator: Sergey Lysach <sergikoff88@gmail.com>\\n\"\n\"Language-Team: Ukrainian (http://www.transifex.com/projects/p/django/\"\n\"language/uk/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: uk\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"Африканська\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"Арабська\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"Азербайджанська\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"Болгарська\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"Білоруська\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"Бенгальська\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"Бретонська\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"Боснійська\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"Каталонська\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"Чеська\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"Валлійська\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"Датська\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"Німецька\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"Грецька\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"Англійська\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"Англійська (Великобританія)\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"Есперанто\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"Іспанська\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"Іспанська (Аргентина)\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"Мексиканьска (іспанська)\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"Нікарагуанська іспанська\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"Венесуельська іспанська\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"Румунська\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"Баскська\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"Перська\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"Фінська\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"Французька\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"Фризька\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"Ірландська\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"Галіційська\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"Іврит\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"Хінді\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"Хорватська\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"Угорська\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"Інтерлінгва\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"Індонезійська\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"Ісландська\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"Італійська\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"Японська\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"Грузинська\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"Казахська\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"Кхмерська\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"Канадська\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"Корейська\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"Люксембурзький\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"Литовська\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"Латвійська\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"Македонська\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"Малаялам\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"Монгольська\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"Норвезька (Букмол)\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"Непальська\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"Голландська\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"Норвезька (Нюнорськ)\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"Панджабі\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"Польська\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"Португальська\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"Бразильска\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"Румунська\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"Російська\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"Словацька\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"Словенська\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"Албанська\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"Сербська\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"Сербська (латинська)\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"Шведська\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"Суахілі\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"Тамільська\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"Телугу\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"Тайська\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"Турецька\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"Татарська\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"Удмуртський\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"Українська\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"Урду\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"В'єтнамська\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"Китайська спрощена\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"Китайська традиційна\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"Уведіть коректне значення.\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"Введіть коректну email адресу.\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"\"\n\"Введіть коректне значення 'slug' (короткого заголовку), що може містити \"\n\"тільки літери, числа, символи підкреслювання та дефіси.\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"Введіть коректну IPv4 адресу.\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"Введіть дійсну IPv6 адресу.\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"Введіть дійсну IPv4 чи IPv6 адресу.\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"Введіть тільки цифри, що розділені комами.\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"\"\n\"Переконайтеся, що це значення дорівнює %(limit_value)s (зараз \"\n\"%(show_value)s).\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"Переконайтеся, що це значення менше чи дорівнює %(limit_value)s.\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"Переконайтеся, що це значення більше чи дорівнює %(limit_value)s.\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Переконайтеся, що це значення має щонайменше %(limit_value)d символів (зараз \"\n\"%(show_value)d).\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Переконайтеся, що це значення має щонайбільше %(limit_value)d символів \"\n\"(зараз %(show_value)d).\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"%(field_name)s має бути унікальним для %(date_field)s %(lookup)s.\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"та\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"%(model_name)s з таким %(field_label)s вже існує.\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"Значення %r не є дозволеним вибором.\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"Це поле не може бути пустим.\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"Це поле не може бути порожнім.\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Тип поля: %(field_type)s\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"Ціле число\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"'%s' значення повинне бути цілим числом.\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"'%s' значення повинне бути True або False.\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Булеве значення (True або False)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"Рядок (до %(max_length)s)\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"Цілі, розділені комою\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"\"\n\"'%s' значення має невірний формат дати. Вона повинна бути у форматі YYYY-MM-\"\n\"DD.\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"\"\n\"'%s' значення має правильний формат (YYYY-MM-DD), але це недійсна дата.\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"Дата (без часу)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\"'%s' значення має невірний формат. Воно повинне бути у форматі YYYY-MM-DD HH:\"\n\"MM[:ss[.uuuuuu]][TZ].\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\"'%s' значення має вірний формат (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) але це \"\n\"невірна дата/час.\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"Дата (з часом)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"'%s' значення повинне бути десятковим числом.\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"Десяткове число\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"E-mail адреса\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"Шлях до файла\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"'%s' значення повинне бути числом з плаваючою крапкою.\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"Число з плаваючою комою\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"Велике (8 байтів) ціле число\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"IPv4 адреса\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"IP адреса\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"'%s' значення повинне бути None, True або False.\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"Булеве значення (включаючи True, False або None)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"Додатнє ціле число\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"Додатнє мале ціле число\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"Слаг (до %(max_length)s)\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"Мале ціле число\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"Текст\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"\"\n\"'%s' значення має невірний формат. Воно повинне бути у форматі HH:MM[:ss[.\"\n\"uuuuuu]].\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\"'%s' значення має вірний формат (HH:MM[:ss[.uuuuuu]]) але це недійсний час.\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"Час\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"Файл\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"Зображення\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"Моделі %(model)s з ключем %(pk)r не існує.\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"Зовнішній ключ (тип визначається відповідно поля)\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"Один-до-одного\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"Багато-до-багатьох\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"\"\n\"Затисніть клавішу \\\"Control\\\", або \\\"Command\\\" на Маку, щоб обрати більше \"\n\"однієї опції.\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"Це поле обов'язкове.\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"Введіть ціле число.\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"Введіть число.\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"Переконайтеся, що тут не більше ніж %s цифр загалом.\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"Переконайтеся, що тут не більше ніж %s цифр після десяткової коми.\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"Переконайтеся, що тут не більше ніж %s цифр до десяткової коми.\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"Введіть коректну дату.\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"Введіть коректний час.\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"Уведіть коректну дату/час адресу.\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"Файл не надіслано. Перевірте тип кодування форми.\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"Файл не було надіслано.\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"Переданий файл порожній.\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\"Переконайтеся, що ім'я файлу містить щонайбільше %(max)d символів (зараз \"\n\"%(length)d).\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"\"\n\"Будь ласка, або завантажте файл, або відмітьте прапорець очищення, а не \"\n\"обидва варіанти одразу\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\"Завантажте правильний малюнок. Файл, який ви завантажили, не є малюнком, або \"\n\"є зіпсованим малюнком.\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"Уведіть коректний URL.\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"Зробить коректний вибір, %(value)s немає серед варіантів вибору.\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"Введіть список значень.\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"Послідовність\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"Видалити\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"Будь ласка, виправте повторювані дані для поля %(field)s.\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"\"\n\"Будь ласка, виправте повторювані дані для поля %(field)s, яке має бути \"\n\"унікальним.\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\"Будь ласка, виправте повторювані дані для поля %(field_name)s, яке має бути \"\n\"унікальним для вибірки %(lookup)s на %(date_field)s.\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"Будь ласка, виправте повторювані значення нижче.\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"\"\n\"Зв'язаний зовнішній ключ не відповідає первісному ключу батьківського \"\n\"екземпляру.\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"Зробить коректний вибір. Такого варіанту нема серед доступних.\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"Зробить коректний вибір. Такого варіанту %s нема серед доступних.\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"\\\"%s\\\" не є допустимим значенням для первинного ключа.\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\"%(datetime)s не може бути інтерпретована в часовому поясі \"\n\"%(current_timezone)s; дата може бути неодзначною або виявитись неіснуючою.\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"Наразі\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"Змінити\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"Очистити\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"Невідомо\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"Так\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"Ні\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"так,ні,можливо\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"%(size)d байт\"\nmsgstr[1] \"%(size)d байти\"\nmsgstr[2] \"%(size)d байтів\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s Кб\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s Мб\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s Гб\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s Тб\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s Пб\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"після полудня\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"до полудня\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"після полудня\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"до полудня\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"північ\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"полудень\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"Понеділок\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"Вівторок\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"Середа\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"Четвер\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"П'ятниця\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"Субота\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"Неділя\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"Пн\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"Вт\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"Сер\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"Чт\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"Пт\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"Сб\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"Нед\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"Січень\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"Лютий\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"Березень\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"Квітень\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"Травень\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"Червень\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"Липень\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"Серпень\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"Вересень\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"Жовтень\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"Листопад\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"Грудень\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"січ\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"лют\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"бер\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"кві\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"тра\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"чер\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"лип\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"сер\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"вер\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"жов\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"лис\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"гру\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"Січ.\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"Лют.\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"Березень\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"Квітень\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"Травень\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"Червень\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"Липень\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"Сер.\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"Вер.\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"Жов.\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"Лис.\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"Гру.\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"січня\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"лютого\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"березня\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"квітня\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"травня\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"червня\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"липня\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"серпня\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"вересня\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"жовтня\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"листопада\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"грудня\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"%(truncated_text)s...\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"або\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \", \"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"рік\"\nmsgstr[1] \"роки\"\nmsgstr[2] \"років\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"місяць\"\nmsgstr[1] \"місяці\"\nmsgstr[2] \"місяців\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"тиждень\"\nmsgstr[1] \"тижні\"\nmsgstr[2] \"тижнів\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"день\"\nmsgstr[1] \"дні\"\nmsgstr[2] \"днів\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"година\"\nmsgstr[1] \"години\"\nmsgstr[2] \"годин\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"хвилина\"\nmsgstr[1] \"хвилини\"\nmsgstr[2] \"хвилин\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"хвилин(а)\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \", %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"Перегляд списку файлів у цій директорії не дозволений.\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\\\"%(path)s\\\" не існує\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"Вміст директорії %(directory)s\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"Рік не вказано\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"Місяць не вказано\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"День не вказано\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"Тиждень не вказано\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"%(verbose_name_plural)s недоступні\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\"Майбутні %(verbose_name_plural)s недоступні, тому що %(class_name)s.\"\n\"allow_future має нульове значення.\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"Недійсна дата '%(datestr)s' для формату '%(format)s'\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"Жодні %(verbose_name)s не були знайдені по запиту\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"\"\n\"Неправильна величина параметра сторінки: вона повинна бути задана цілим \"\n\"числом або значенням 'last'.\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"Невірна сторінка (%(page_number)s): %(message)s\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"Порожній список і величина '%(class_name)s.allow_empty' є нульовою.\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/uk/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/conf/locale/uk/formats.py",
    "content": "# -*- encoding: utf-8 -*-\n# This file is distributed under the same license as the Django package.\n#\n\nfrom __future__ import unicode_literals\n\n# The *_FORMAT strings use the Django date format syntax,\n# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\nDATE_FORMAT = 'j E Y р.'\nTIME_FORMAT = 'H:i:s'\nDATETIME_FORMAT = 'j E Y р. H:i:s'\nYEAR_MONTH_FORMAT = 'F Y'\nMONTH_DAY_FORMAT = 'j F'\nSHORT_DATE_FORMAT = 'j M Y'\n# SHORT_DATETIME_FORMAT = \n# FIRST_DAY_OF_WEEK = \n\n# The *_INPUT_FORMATS strings use the Python strftime format syntax,\n# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior\n# DATE_INPUT_FORMATS = \n# TIME_INPUT_FORMATS = \n# DATETIME_INPUT_FORMATS = \nDECIMAL_SEPARATOR = ','\nTHOUSAND_SEPARATOR = ' '\n# NUMBER_GROUPING = \n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/ur/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Mansoorulhaq Mansoor <mansoorulhaq1986@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:47+0000\\n\"\n\"Last-Translator: Mansoorulhaq Mansoor <mansoorulhaq1986@gmail.com>\\n\"\n\"Language-Team: Urdu (http://www.transifex.com/projects/p/django/language/\"\n\"ur/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ur\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"عربی\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"بلغاری\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"بنگالی\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"بوسنیائی\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"کیٹالانی\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"زیچ\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"ویلش\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"ڈینش\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"جرمن\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"گریک\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"انگلش\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"برطانوی انگلش\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"ھسپانوی\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"ارجنٹائنی سپینش\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"اسٹانین\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"باسک\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"فارسی\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"فنش\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"فرانسیسی\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"فریسی\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"آئرش\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"گیلیشین\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"عبرانی\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"ھندی\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"کروشن\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"ھونگارین\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"انڈونیشین\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"آئس لینڈک\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"اطالوی\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"جاپانی\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"جارجیائی\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"خمر\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"کناڈا\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"کوریائی\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"لیتھونیائی\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"لتوینی\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"میسیڈونین\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"ملایالم\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"منگولین\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"نارویائی بوکمال\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"ڈچ\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"نارویائی نینورسک\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"پنجابی\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"پولش\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"پورتگیز\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"برازیلی پورتگیز\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"رومانی\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"روسی\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"سلووک\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"سلووینین\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"البانوی\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"سربین\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"سربین لاطینی\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"سویڈش\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"تاملی\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"تیلگو\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"تھائی\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"ترکش\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"یوکرائنی\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"ویتنامی\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"سادی چینی\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"روایتی چینی\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"درست قیمت (ویلیو) درج کریں۔\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"درست 'slug' درج کریں جو حروف، نمبروں، انڈرسکور یا ھائفنز پر مشتمل ھو۔\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"IPv4 کا درست پتہ درج کریں۔\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"صرف اعداد درج کریں جو کوموں سے الگ کئے ھوئے ھوں۔\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"\"\n\"اس بات کا یقین کر لیں کہ یہ قیمت (ویلیو) %(limit_value)s ھے۔ (یہ \"\n\"%(show_value)s ھے)%(show_value)s\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"\"\n\"اس بات کا یقین کر لیں کہ یہ قیمت (ویلیو) %(limit_value)s سے کم یا اس کے \"\n\"برابر ھے۔\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"\"\n\"اس بات کا یقین کر لیں کہ یہ قیمت (ویلیو) %(limit_value)s سے زیادہ یا اس کے \"\n\"برابر ھے۔\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"اس بات کا یقین کر لیں کہ اس قیمت (ویلیو) میں کم از کم %(limit_value)d حروف \"\n\"ہیں۔ (اس میں %(show_value)d ہیں۔\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"اس بات کا یقین کر لیں کہ اس قیمت (ویلیو) میں زیادہ سے زیادہ %(limit_value)d \"\n\"حروف ہیں۔ (اس میں %(show_value)d ھیں۔\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"\"\n\"%(field_name)s کا %(date_field)s %(lookup)s کے لئے منفرد ھونا ضروری ھے۔\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"اور\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"%(model_name)s اس %(field_label)s کے ساتھ پہلے ہی موجود ھے۔\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"قیمت (ویلیو) %r درست انتخاب نھیں ھے۔\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"یہ خانہ نامعلوم (null( نھیں رہ سکتا۔\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"یہ خانہ خالی نھیں چھوڑا جا سکتا۔\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"%(field_type)s قسم کا خانہ\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"صحیح عدد\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"بولین (True یا False)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"سلسلۂ حروف (String) (%(max_length)s تک)\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \" کومے سے الگ کئے ھوئے صحیح اعداد\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"تاریخ (وقت کے بغیر)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"تاریخ (بمع وقت)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"اعشاری نمبر\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"فائل کا راستہ(path(\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"نقطہ اعشاریہ والا نمبر\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"بڑا (8 بائٹ) صحیح عدد\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"IP ایڈریس\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"بولین (True، False یا None(\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"متن\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"وقت\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"یو آر ایل\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"ماڈل %(model)s پرائمری کلید (PK) %(pk)r کے ساتھ موجود نھیں۔\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"بیرونی کلید (FK( (قسم متعلقہ خانے سے متعین ھو گی)\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"ون-ٹو-ون ریلیشن شپ\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"مینی-ٹو-مینی ریلیشن شپ\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"\"\n\"ایک سے زیادہ منتخب کرنے کے لئے \\\"Control\\\" دبا کر رکھیں۔ یا Mac OS پر \"\n\"\\\"Command\\\"\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"یہ خانہ درکار ھے۔\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"مکمل نمبر درج کریں۔\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"نمبر درج کریں۔\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"اس بات کا یقین کر لیں کہ کل %s سے زیادہ اعداد ھیں۔\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"اس بات کا یقین کر لیں کہ %s سے زیادہ اعشاری مقامات نہیں۔\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"اس بات کا یقین کر لیں کہ نقطۂ اعشاریہ سے پہلے %s سے زیادہ اعداد نہیں۔\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"درست تاریخ درج کریں۔\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"درست وقت درج کریں۔\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"درست تاریخ/وقت درج کریں۔\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"کوئی فائل پیش نہیں کی گئی۔ فارم پر اینکوڈنگ کی قسم چیک کریں۔\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"کوئی فائل پیش نہیں کی گئی تھی۔\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"پیش کی گئی فائل خالی ھے۔\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\"اس بات کا یقین کر لیں کہ اس فائل کے نام میں زیادہ سے زیادہ %(max)d حروف ہیں۔ \"\n\"(اس میں %(length)d ہیں)\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"براہ مھربانی فائل پیش کریں یا Clear checkbox منتخب کریں۔ نہ کہ دونوں۔\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\"درست تصویر اپ لوڈ کریں۔ جو فائل آپ نے اپ لوڈ کی تھی وہ تصویر نہیں تھی یا \"\n\"خراب تصویر تھی۔\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"درست یو آر ایل (URL) درج کریں۔\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"درست انتخاب منتخب کریں۔ %(value)s دستیاب انتخابات میں سے کوئی نہیں۔\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"قیمتوں (ویلیوز) کی لسٹ درج کریں۔\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"ترتیب\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"مٹائیں\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"براہ کرم %(field)s کے لئے دوہرا مواد درست کریں۔\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"\"\n\"براہ کرم %(field)s کے لئے دوہرا مواد درست کریں جوکہ منفرد ھونا ضروری ھے۔\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\"براہ کرم %(field_name)s میں دوہرا مواد درست کریں جو کہ %(date_field)s میں \"\n\"%(lookup)s کے لئے منفرد ھونا ضروری ھے۔\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"براہ کرم نیچے دوہری قیمتیں (ویلیوز) درست کریں۔\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"ان لائن بیرونی کلید (FK) آبائی پرائمری کلید (PK) سے نھیں ملتی۔\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"درست انتخاب منتخب کریں۔ یہ انتخاب دستیاب انتخابات میں سے کوئی نہیں ھے۔\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"درست انتخاب منتخب کریں۔ %s دستیاب انتخابات میں سے کوئی نہیں ھے۔\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"\\\"%s\\\" پرائمری کلید (PK) کے لئے درست قیمت (ویلیو) نھیں ھے۔\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"فی الحال\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"تبدیل کریں\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"صاف کریں\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"نامعلوم\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"ھاں\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"نھیں\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"ھاں،نہیں،ھوسکتاہے\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"%(size)d بائٹ\"\nmsgstr[1] \"%(size)d بائٹس\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s ک ۔ ب\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s م ۔ ب\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s ج ۔ ب\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s ٹ ۔ ب\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s پ ۔ پ\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"شام\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"صبح\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"شام\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"صبح\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"نصف رات\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"دوپہر\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"سوموار\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"منگل\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"بدھ\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"جمعرات\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"جمعہ\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"ھفتہ\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"اتوار\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"سوموار\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"منگل\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"بدھ\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"جمعرات\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"جمعہ\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"ھفتہ\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"اتوار\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"جنوری\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"فروری\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"مارچ\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"اپریل\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"مئی\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"جون\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"جولائی\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"اگست\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"ستمبر\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"اکتوبر\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"نومبر\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"دسمبر\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"جنوری\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"فروری\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"مارچ\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"اپریل\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"مئی\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"جون\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"جولائی\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"اگست\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"ستمبر\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"اکتوبر\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"نومبر\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"دسمبر\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"جنوری\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"فروری\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"مارچ\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"اپریل\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"مئی\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"جون\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"جولائی\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"اگست\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"ستمبر\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"اکتوبر\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"نومبر\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"دسمبر\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"جنوری\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"فروری\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"مارچ\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"اپریل\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"مئی\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"جون\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"جولائی\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"اگست\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"ستمبر\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"اکتوبر\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"نومبر\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"دسمبر\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"یا\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \"،\"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"سال\"\nmsgstr[1] \"سال\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"مھینہ\"\nmsgstr[1] \"مھینے\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"ھفتہ\"\nmsgstr[1] \"ھفتے\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"دن\"\nmsgstr[1] \"دن\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"گھنٹہ\"\nmsgstr[1] \"گھنٹے\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"منٹ\"\nmsgstr[1] \"منٹ\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"منٹ\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \"، %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/vi/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Tran  <hongdiepkien@gmail.com>, 2011.\n# Tran Van <vantxm@yahoo.co.uk>, 2011.\n# Vuong Nguyen <autalpha@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:47+0000\\n\"\n\"Last-Translator: Tran Van <vantxm@yahoo.co.uk>\\n\"\n\"Language-Team: Vietnamese (http://www.transifex.com/projects/p/django/\"\n\"language/vi/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: vi\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"Tiếng Ả Rập\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"Azerbaijan\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"Tiếng Bun-ga-ri\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"Bengali\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"Tiếng Bosnia\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"Catalan\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"Séc\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"Xứ Wales\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"Tiếng Đan Mạch\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"Tiếng Đức\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"Tiếng Hy Lạp\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"Tiếng Anh\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"British English\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"Tiếng Tây Ban Nha\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"Argentinian Spanish\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"Mexican Spanish\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"Tiếng Tây Ban Nha-Nicaragua\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"Tiếng Estonia\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"Tiếng Baxcơ\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"Tiếng Ba Tư\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"Tiếng Phần Lan\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"Tiếng Pháp\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"Tiếng Frisco\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"Tiếng Ai-len\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"Tiếng Pháp cổ\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"Tiếng Do Thái cổ\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"Tiếng Hindi\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"Tiếng Croatia\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"Tiếng Hung-ga-ri\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"Tiếng In-đô-nê-xi-a\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"Tiếng Aixơlen\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"Tiếng Ý\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"Tiếng Nhật Bản\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"Georgian\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"Tiếng Khơ-me\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"Tiếng Kannada\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"Tiếng Hàn Quốc\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"Tiếng Lat-vi\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"Ngôn ngữ vùng Bantic\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"Tiếng Maxêđôni\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"Tiếng Malayalam\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"Tiếng Mông Cổ\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"Tiếng Na Uy Bokmål\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"Tiếng Hà Lan\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"Tiếng Na Uy Nynorsk\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"Punjabi\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"Tiếng Ba lan\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"Tiếng Bồ Đào Nha\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"Brazilian Portuguese\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"Tiếng Ru-ma-ni\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"Tiếng Nga\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"Ngôn ngữ Slô-vac\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"Tiếng Slôven\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"Tiếng Albania\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"Tiếng Xéc-bi\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"Serbian Latin\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"Tiếng Thụy Điển\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"Tiếng Ta-min\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"Telugu\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"Tiếng Thái\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"Tiếng Thổ Nhĩ Kỳ\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"Tiếng Ukraina\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"Urdu\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"Tiếng Việt Nam\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"Tiếng Trung Hoa giản thể\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"Tiếng Trung Hoa truyền thống\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"Nhập một giá trị hợp lệ.\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"Nhập một 'slug' hợp lệ gồm chữ cái, số, gạch dưới và gạch nối.\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"Nhập một địa chỉ IPv4 hợp lệ.\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"Chỉ nhập chữ số, cách nhau bằng dấu phẩy.\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"Đảm bảo giá trị này là %(limit_value)s  (nó là %(show_value)s ).\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"Đảm bảo giá trị này là nhỏ hơn hoặc bằng với %(limit_value)s .\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"Đảm bảo giá trị này lớn hơn hoặc bằng với %(limit_value)s .\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Đảm bảo giá trị này có ít nhất %(limit_value)d ký tự (nó có %(show_value)d).\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"Đảm bảo giá trị này có nhiều nhất %(limit_value)d ký tự (nó có \"\n\"%(show_value)d).\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \" %(field_name)s  phải là duy nhất cho %(date_field)s  %(lookup)s .\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"và\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"%(model_name)s có %(field_label)s đã tồn tại.\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"Lựa chọn giá trị %r là không hợp lệ\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"Trường này không thể để trống.\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"Trường này không được để trắng.\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Trường thuộc dạng: %(field_type)s \"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"Số nguyên\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Boolean (hoặc là Đúng hoặc là Sai)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"Chuỗi (dài đến %(max_length)s ký tự )\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"Các số nguyên được phân cách bằng dấu phẩy\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"Ngày (không có giờ)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"Ngày (có giờ)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"Số thập phân\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"Địa chỉ email\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"Đường dẫn tắt tới file\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"Giá trị dấu chấm động\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"Big (8 byte) integer\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"Địa chỉ IP\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"Luận lý (Có thể Đúng, Sai hoặc Không cái nào đúng)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"Đoạn văn\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"Giờ\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"Đường dẫn URL\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"Model %(model)s  với %(pk)r không tồn tại.\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"Khóa ngoại (kiểu được xác định bởi trường liên hệ)\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"Mối quan hệ một-một\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"Mối quan hệ nhiều-nhiều\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"Giữ \\\"Control\\\", hoặc \\\"Command\\\" trên Mac, để chọn nhiều hơn một.\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"Trường này là bắt buộc.\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"Nhập một số tổng thể.\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"Nhập một số.\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"Hãy chắc chắn rằng tổng cộng không nhiều hơn %s chữ số.\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"Hãy chắc chắn rằng không có nhiều hơn %s chữ số thập phân.\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"\"\n\"Hãy chắc chắn rằng không có nhiều hơn %s chữ số trước dấu phẩy thập phân.\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"Nhập một ngày hợp lệ.\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"Nhập một thời gian hợp lệ.\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"Nhập một ngày/thời gian hợp lệ.\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"Không có tập tin nào được gửi. Hãy kiểm tra kiểu mã hóa của biểu mẫu.\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"Không có tập tin nào được gửi.\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"Tập tin được gửi là rỗng.\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"\"\n\"Đảm bảo tên tập tin này có nhiều nhất %(max)d ký tự (nó có %(length)d ký tự).\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"Vui lòng gửi một tập tin hoặc để ô chọn trắng, không chọn cả hai.\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"\"\n\"Hãy tải lên một hình ảnh hợp lệ. Tập tin mà bạn đã tải không phải là hình \"\n\"ảnh hoặc đã bị hư hỏng.\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"Nhập một URL hợp lệ.\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"\"\n\"Hãy chọn một lựa chọn hợp lệ. %(value)s không phải là một trong các lựa chọn \"\n\"khả thi.\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"Nhập một danh sách giá trị.\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"Thứ tự\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"Xóa\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"Hãy sửa các dữ liệu trùng lặp cho %(field)s .\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"Hãy sửa các dữ liệu trùng lặp cho %(field)s, mà phải là duy nhất.\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\"Hãy sửa các dữ liệu trùng lặp cho %(field_name)s  mà phải là duy nhất cho \"\n\"%(lookup)s tại %(date_field)s .\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"Hãy sửa các giá trị trùng lặp dưới đây.\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"Khóa ngoại không tương ứng với khóa chính của đối tượng cha.\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"\"\n\"Hãy chọn một lựa chọn hợp lệ. Lựa chọn đó không phải là một trong các lựa \"\n\"chọn khả thi.\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"Hãy chọn một giá trị hợp lệ. %s không phải là lựa chọn phù hợp.\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"\\\"%s\\\" không phải là giá trị hợp lệ cho một khóa chính.\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"Hiện nay\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"Thay đổi\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"Xóa\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"Chưa xác định\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"Có\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"Không\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"Có, Không, Có thể\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"%(size)d byte\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s KB\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s MB\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s GB\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s TB\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s PB\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"p.m.\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"a.m.\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"chiều\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"sáng\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"Nửa đêm\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"Buổi trưa\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"Thứ 2\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"Thứ 3\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"Thứ 4\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"Thứ 5\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"Thứ 6\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"Thứ 7\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"Chủ nhật\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"Thứ 2\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"Thứ 3\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"Thứ 4\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"Thứ 5\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"Thứ 6\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"Thứ 7\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"Chủ nhật\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"Tháng 1\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"Tháng 2\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"Tháng 3\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"Tháng 4\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"Tháng 5\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"Tháng 6\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"Tháng 7\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"Tháng 8\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"Tháng 9\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"Tháng 10\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"Tháng 11\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"Tháng 12\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"Tháng 1\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"Tháng 2\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"Tháng 3\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"Tháng 4\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"Tháng 5\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"Tháng 6\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"Tháng 7\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"Tháng 8\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"Tháng 9\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"Tháng 10\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"Tháng 11\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"Tháng 12\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"Tháng 1.\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"Tháng 2.\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"Tháng ba\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"Tháng tư\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"Tháng năm\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"Tháng sáu\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"Tháng bảy\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"Tháng 8.\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"Tháng 9.\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"Tháng 10.\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"Tháng 11.\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"Tháng 12.\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"Tháng một\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"Tháng hai\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"Tháng ba\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"Tháng tư\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"Tháng năm\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"Tháng sáu\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"Tháng bảy\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"Tháng tám\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"Tháng Chín\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"Tháng Mười\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"Tháng mười một\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"Tháng mười hai\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"hoặc\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \", \"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"năm\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"tháng\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"tuần\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"ngày\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"giờ\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"phút\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"phút\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \", %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"Không có năm xác định\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"Không có tháng xác định\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"Không có ngày xác định\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"Không có tuần xác định\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"Không có %(verbose_name_plural)s  phù hợp\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\"%(verbose_name_plural)s trong tương lai không có sẵn vì %(class_name)s.\"\n\"allow_future là False.\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"Chuỗi ngày không hợp lệ ' %(datestr)s' định dạng bởi '%(format)s'\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"Không có %(verbose_name)s tìm thấy phù hợp với truy vấn\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"\"\n\"Trang không phải là 'nhất', và cũng không nó có thể được chuyển đổi sang int.\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"Danh sách rỗng và '%(class_name)s.allow_empty' là sai.\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/vi/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/conf/locale/vi/formats.py",
    "content": "# -*- encoding: utf-8 -*-\n# This file is distributed under the same license as the Django package.\n#\nfrom __future__ import unicode_literals\n\n# The *_FORMAT strings use the Django date format syntax,\n# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\nDATE_FORMAT = r'\\N\\gà\\y d \\t\\há\\n\\g n \\nă\\m Y'\nTIME_FORMAT = 'H:i:s'\nDATETIME_FORMAT = r'H:i:s \\N\\gà\\y d \\t\\há\\n\\g n \\nă\\m Y'\nYEAR_MONTH_FORMAT = 'F Y'\nMONTH_DAY_FORMAT = 'j F'\nSHORT_DATE_FORMAT = 'd-m-Y'\nSHORT_DATETIME_FORMAT = 'H:i:s d-m-Y'\n# FIRST_DAY_OF_WEEK = \n\n# The *_INPUT_FORMATS strings use the Python strftime format syntax,\n# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior\n# DATE_INPUT_FORMATS = \n# TIME_INPUT_FORMATS = \n# DATETIME_INPUT_FORMATS = \nDECIMAL_SEPARATOR = ','\nTHOUSAND_SEPARATOR = '.'\n# NUMBER_GROUPING = \n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/zh_CN/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Kevin Shi <leiarix@gmail.com>, 2012.\n# Lele Long <schemacs@gmail.com>, 2011.\n# slene <vslene@gmail.com>, 2011.\n# Ziang Song <songziang@gmail.com>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:47+0000\\n\"\n\"Last-Translator: 磊 施 <leiarix@gmail.com>\\n\"\n\"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/django/\"\n\"language/zh_CN/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: zh_CN\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"阿拉伯语\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"阿塞拜疆\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"保加利亚语\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"孟加拉语\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"波斯尼亚语\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"加泰罗尼亚语\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"捷克语\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"威尔士语\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"丹麦语\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"德语\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"希腊语\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"英语\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"英国英语\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"世界语\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"西班牙语\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"阿根廷西班牙语\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"墨西哥西班牙语\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"尼加拉瓜西班牙语\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"爱沙尼亚语\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"巴斯克语\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"波斯语\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"芬兰语\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"法语\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"夫里斯兰语\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"爱尔兰语\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"加利西亚语\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"希伯来语\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"北印度语\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"克罗地亚语\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"匈牙利语\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"印尼语\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"冰岛语\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"意大利语\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"日语\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"格鲁吉亚语\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"哈萨克语\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"高棉语\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"埃纳德语\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"韩语\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"立陶宛语\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"拉脱维亚语\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"马其顿语\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"马来亚拉姆语\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"蒙古语\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"挪威博克马尔\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"尼泊尔语\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"荷兰语\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"新挪威语\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"旁遮普语 \"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"波兰语\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"葡萄牙语\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"巴西葡萄牙语\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"罗马尼亚语\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"俄语\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"斯洛伐克语\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"斯洛文尼亚语\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"阿尔巴尼亚语\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"塞尔维亚语\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"塞尔维亚拉丁语\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"瑞典语\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"斯瓦西里语\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"泰米尔语\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"泰卢固语\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"泰语\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"土耳其语\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"鞑靼语\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"乌克兰语\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"乌尔都语\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"越南语\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"简体中文\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"繁体中文\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"输入一个有效的值。\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"输入一个有效的 'slug'，由字母、数字、下划线或横线组成。\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"输入一个有效的 IPv4 地址。\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"填写合法的IPv6地址。\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"输入可用的IPv4 或 IPv6 地址.\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"只能输入用逗号分隔的数字。\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"确保该值为 %(limit_value)s (现在为 %(show_value)s)。\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"确保该值小于或等于%(limit_value)s。\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"确保该值大于或等于%(limit_value)s。\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"确保该值不少于 %(limit_value)d 个字符 (现在有 %(show_value)d 个)。\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"确保该值不多于 %(limit_value)d 个字符 (现在有 %(show_value)d 个)。\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"在%(date_field)s %(lookup)s 需要唯一的 %(field_name)s\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"和\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"具有 %(field_label)s 的 %(model_name)s 已存在。\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"值 %r 不是有效选项。\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"这个值不能为 null。\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"此字段不能为空。\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"字段类型：%(field_type)s\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"整数\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"'%s' 值必须为一个整数（integer）类型。\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"'%s' 值必须为 True 或 False.\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"布尔值（真或假）\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"字符串（最长 %(max_length)s 位）\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"逗号分隔的整数\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"'%s' 值的日期格式无效. 必须为 YYYY-MM-DD 格式.\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"'%s' 值的格式 (YYYY-MM-DD)正确， 但日期无效.\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"日期（无时间）\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"'%s' 值格式无效. 必须为 YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ] 格式.\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\"'%s' 值格式正确 (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) 但是日期/时间无效.\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"日期（带时间）\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"'%s' 值必须为十进制小数.\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"小数\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"Email 地址\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"文件路径\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"'%s' 值必须为浮点数.\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"浮点数\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"大整数(8字节)\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"IPv4 地址\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"IP 地址\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"'%s' 值必须为 None, True 或者 False.\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"布尔值（真、假或无)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"正整数\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"正小整数\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"Slug (多达 %(max_length)s)\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"小整数\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"文本\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"'%s' 值格式无效. 必须为HH:MM[:ss[.uuuuuu]] 格式.\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"'%s' 值格式正确 (HH:MM[:ss[.uuuuuu]]) 但是时间无效.\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"时间\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"文件\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"图像\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"模型 %(model)s 的外键 %(pk)r 不存在。\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"外键(由相关字段确定)\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"一对一关系\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"多对多关系\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"按下 \\\"Control\\\"，或者在Mac上按 \\\"Command\\\" 来选择多个值。\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"这个字段是必填项。\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"输入整数。\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"输入一个数字。\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"确认数字全长不超过 %s 位。\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"确认小数不超过 %s 位。\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"确认小数点前不超过 %s 位。\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"输入一个有效的日期。\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"输入一个有效的时间。\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"输入一个有效的日期/时间。\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"未提交文件。请检查表单的编码类型。\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"没有提交文件。\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"所提交的是空文件。\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"确保文件名不多于 %(max)d 个字符 (现在有 %(length)d 个)。\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"请提交文件或勾选清除复选框，两者其一即可。\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"请上传一张有效的图片。您所上传的文件不是图片或者是已损坏的图片。\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"输入一个有效的 URL。\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"选择一个有效的选项。 %(value)s 不在可用的选项中。\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"输入一系列值。\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"排序\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"删除\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"请修改%(field)s的重复数据\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"请修改%(field)s的重复数据.这个字段必须唯一\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\"请修正%(field_name)s的重复数据。%(date_field)s %(lookup)s 在 %(field_name)s \"\n\"必须保证唯一.\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"请修正重复的数据.\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"内联外键与父实例的主键不匹配。\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"选择一个有效的选项： 该选择不在可用的选项中。\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"选择一个有效的选项： '%s' 不在可用的选项中。\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"\\\"%s\\\" 不是\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\"%(datetime)s 不能在时区 %(current_timezone)s正确解读; 可能时间有歧义或者不存\"\n\"在.\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"目前\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"修改\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"清除\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"未知\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"是\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"否\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"是、否、也许\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"%(size)d 字节\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s KB\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s MB\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s GB\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s TB\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s PB\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"p.m.\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"a.m.\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"PM\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"AM\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"午夜\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"中午\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"星期一\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"星期二\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"星期三\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"星期四\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"星期五\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"星期六\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"星期日\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"星期一\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"星期二\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"星期三\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"星期四\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"星期五\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"星期六\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"星期日\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"一月\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"二月\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"三月\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"四月\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"五月\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"六月\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"七月\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"八月\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"九月\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"十月\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"十一月\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"十二月\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"一月\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"二月\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"三月\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"四月\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"五月\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"六月\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"七月\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"八月\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"九月\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"十月\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"十一月\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"十二月\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"一月\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"二月\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"三月\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"四月\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"五月\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"六月\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"七月\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"八月\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"九月\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"十月\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"十一月\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"十二月\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"一月\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"二月\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"三月\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"四月\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"五月\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"六月\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"七月\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"八月\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"九月\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"十月\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"十一月\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"十二月\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"%(truncated_text)s...\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"或\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \"，\"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"年\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"月\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"周\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"天\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"小时\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"分钟\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"分钟\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \", %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"这里不允许目录索引\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\\\"%(path)s\\\" 不存在\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"%(directory)s的索引\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"没有指定年\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"没有指定月\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"没有指定天\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"没有指定周\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"%(verbose_name_plural)s 不存在\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\"因为 %(class_name)s.allow_future 设置为 False，所以特性 \"\n\"%(verbose_name_plural)s 不可用。\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"日期文字 '%(datestr)s' 不匹配格式 '%(format)s'\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"没有找到符合查询的 %(verbose_name)s\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"page 不等于 'last'，或者它不能被转为数字。\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"列表是空的并且'%(class_name)s.allow_empty 设置为 False'\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/zh_CN/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/conf/locale/zh_CN/formats.py",
    "content": "# -*- encoding: utf-8 -*-\n# This file is distributed under the same license as the Django package.\n#\n\n# The *_FORMAT strings use the Django date format syntax,\n# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\n# DATE_FORMAT = \n# TIME_FORMAT = \n# DATETIME_FORMAT = \n# YEAR_MONTH_FORMAT = \n# MONTH_DAY_FORMAT = \n# SHORT_DATE_FORMAT = \n# SHORT_DATETIME_FORMAT = \n# FIRST_DAY_OF_WEEK = \n\n# The *_INPUT_FORMATS strings use the Python strftime format syntax,\n# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior\n# DATE_INPUT_FORMATS = \n# TIME_INPUT_FORMATS = \n# DATETIME_INPUT_FORMATS = \n# DECIMAL_SEPARATOR = \n# THOUSAND_SEPARATOR = \n# NUMBER_GROUPING = \n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/zh_TW/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <ilay@ilay.tw>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# ming hsien tzang <tzangms@gmail.com>, 2011.\n# tcc <tcchou@tcchou.org>, 2011.\n#   <yyc1217@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:47+0000\\n\"\n\"Last-Translator: yyc1217 <yyc1217@gmail.com>\\n\"\n\"Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/django/\"\n\"language/zh_TW/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: zh_TW\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: conf/global_settings.py:48\nmsgid \"Afrikaans\"\nmsgstr \"\"\n\n#: conf/global_settings.py:49\nmsgid \"Arabic\"\nmsgstr \"阿拉伯語\"\n\n#: conf/global_settings.py:50\nmsgid \"Azerbaijani\"\nmsgstr \"阿塞拜疆(Azerbaijani)\"\n\n#: conf/global_settings.py:51\nmsgid \"Bulgarian\"\nmsgstr \"保加利亞語\"\n\n#: conf/global_settings.py:52\nmsgid \"Belarusian\"\nmsgstr \"白俄羅斯人\"\n\n#: conf/global_settings.py:53\nmsgid \"Bengali\"\nmsgstr \"孟加拉語\"\n\n#: conf/global_settings.py:54\nmsgid \"Breton\"\nmsgstr \"\"\n\n#: conf/global_settings.py:55\nmsgid \"Bosnian\"\nmsgstr \"波士尼亞語\"\n\n#: conf/global_settings.py:56\nmsgid \"Catalan\"\nmsgstr \"嘉泰羅尼亞語\"\n\n#: conf/global_settings.py:57\nmsgid \"Czech\"\nmsgstr \"捷克語\"\n\n#: conf/global_settings.py:58\nmsgid \"Welsh\"\nmsgstr \"威爾斯語\"\n\n#: conf/global_settings.py:59\nmsgid \"Danish\"\nmsgstr \"丹麥語\"\n\n#: conf/global_settings.py:60\nmsgid \"German\"\nmsgstr \"德語\"\n\n#: conf/global_settings.py:61\nmsgid \"Greek\"\nmsgstr \"希臘語\"\n\n#: conf/global_settings.py:62\nmsgid \"English\"\nmsgstr \"英語\"\n\n#: conf/global_settings.py:63\nmsgid \"British English\"\nmsgstr \"英國英語\"\n\n#: conf/global_settings.py:64\nmsgid \"Esperanto\"\nmsgstr \"世界語(Esperanto)\"\n\n#: conf/global_settings.py:65\nmsgid \"Spanish\"\nmsgstr \"西班牙語\"\n\n#: conf/global_settings.py:66\nmsgid \"Argentinian Spanish\"\nmsgstr \"阿根廷西班牙語\"\n\n#: conf/global_settings.py:67\nmsgid \"Mexican Spanish\"\nmsgstr \"墨西哥西班牙語(Mexican Spanish)\"\n\n#: conf/global_settings.py:68\nmsgid \"Nicaraguan Spanish\"\nmsgstr \"尼加拉瓜西班牙語(Nicaraguan Spanish)\"\n\n#: conf/global_settings.py:69\nmsgid \"Venezuelan Spanish\"\nmsgstr \"委內瑞拉西班牙人\"\n\n#: conf/global_settings.py:70\nmsgid \"Estonian\"\nmsgstr \"愛沙尼亞語\"\n\n#: conf/global_settings.py:71\nmsgid \"Basque\"\nmsgstr \"巴斯克語\"\n\n#: conf/global_settings.py:72\nmsgid \"Persian\"\nmsgstr \"波斯語\"\n\n#: conf/global_settings.py:73\nmsgid \"Finnish\"\nmsgstr \"芬蘭語\"\n\n#: conf/global_settings.py:74\nmsgid \"French\"\nmsgstr \"法語\"\n\n#: conf/global_settings.py:75\nmsgid \"Frisian\"\nmsgstr \"弗里斯蘭語\"\n\n#: conf/global_settings.py:76\nmsgid \"Irish\"\nmsgstr \"愛爾蘭語\"\n\n#: conf/global_settings.py:77\nmsgid \"Galician\"\nmsgstr \"加里西亞語\"\n\n#: conf/global_settings.py:78\nmsgid \"Hebrew\"\nmsgstr \"希伯來語\"\n\n#: conf/global_settings.py:79\nmsgid \"Hindi\"\nmsgstr \"印度語\"\n\n#: conf/global_settings.py:80\nmsgid \"Croatian\"\nmsgstr \"克羅埃西亞語\"\n\n#: conf/global_settings.py:81\nmsgid \"Hungarian\"\nmsgstr \"匈牙利語\"\n\n#: conf/global_settings.py:82\nmsgid \"Interlingua\"\nmsgstr \"\"\n\n#: conf/global_settings.py:83\nmsgid \"Indonesian\"\nmsgstr \"印尼語\"\n\n#: conf/global_settings.py:84\nmsgid \"Icelandic\"\nmsgstr \"冰島語\"\n\n#: conf/global_settings.py:85\nmsgid \"Italian\"\nmsgstr \"義大利語\"\n\n#: conf/global_settings.py:86\nmsgid \"Japanese\"\nmsgstr \"日語\"\n\n#: conf/global_settings.py:87\nmsgid \"Georgian\"\nmsgstr \"喬治亞語\"\n\n#: conf/global_settings.py:88\nmsgid \"Kazakh\"\nmsgstr \"哈薩克(Kazakh)\"\n\n#: conf/global_settings.py:89\nmsgid \"Khmer\"\nmsgstr \"高棉語\"\n\n#: conf/global_settings.py:90\nmsgid \"Kannada\"\nmsgstr \"坎那達語\"\n\n#: conf/global_settings.py:91\nmsgid \"Korean\"\nmsgstr \"韓語\"\n\n#: conf/global_settings.py:92\nmsgid \"Luxembourgish\"\nmsgstr \"\"\n\n#: conf/global_settings.py:93\nmsgid \"Lithuanian\"\nmsgstr \"立陶宛語\"\n\n#: conf/global_settings.py:94\nmsgid \"Latvian\"\nmsgstr \"拉脫維亞語\"\n\n#: conf/global_settings.py:95\nmsgid \"Macedonian\"\nmsgstr \"馬其頓語\"\n\n#: conf/global_settings.py:96\nmsgid \"Malayalam\"\nmsgstr \"馬來亞拉姆語\"\n\n#: conf/global_settings.py:97\nmsgid \"Mongolian\"\nmsgstr \"蒙古語\"\n\n#: conf/global_settings.py:98\nmsgid \"Norwegian Bokmal\"\nmsgstr \"挪威語（波克默爾）\"\n\n#: conf/global_settings.py:99\nmsgid \"Nepali\"\nmsgstr \"尼泊爾(Nepali)\"\n\n#: conf/global_settings.py:100\nmsgid \"Dutch\"\nmsgstr \"荷蘭語\"\n\n#: conf/global_settings.py:101\nmsgid \"Norwegian Nynorsk\"\nmsgstr \"挪威語（尼諾斯克）\"\n\n#: conf/global_settings.py:102\nmsgid \"Punjabi\"\nmsgstr \"旁遮普語\"\n\n#: conf/global_settings.py:103\nmsgid \"Polish\"\nmsgstr \"波蘭嶼\"\n\n#: conf/global_settings.py:104\nmsgid \"Portuguese\"\nmsgstr \"葡萄牙語\"\n\n#: conf/global_settings.py:105\nmsgid \"Brazilian Portuguese\"\nmsgstr \"巴西葡萄牙語\"\n\n#: conf/global_settings.py:106\nmsgid \"Romanian\"\nmsgstr \"羅馬尼亞語\"\n\n#: conf/global_settings.py:107\nmsgid \"Russian\"\nmsgstr \"俄語\"\n\n#: conf/global_settings.py:108\nmsgid \"Slovak\"\nmsgstr \"斯洛伐克語\"\n\n#: conf/global_settings.py:109\nmsgid \"Slovenian\"\nmsgstr \"斯洛維尼亞語\"\n\n#: conf/global_settings.py:110\nmsgid \"Albanian\"\nmsgstr \"阿爾巴尼亞語\"\n\n#: conf/global_settings.py:111\nmsgid \"Serbian\"\nmsgstr \"塞爾維亞語\"\n\n#: conf/global_settings.py:112\nmsgid \"Serbian Latin\"\nmsgstr \"塞爾維亞拉丁語\"\n\n#: conf/global_settings.py:113\nmsgid \"Swedish\"\nmsgstr \"瑞典語\"\n\n#: conf/global_settings.py:114\nmsgid \"Swahili\"\nmsgstr \"斯瓦希裡(Swahili)\"\n\n#: conf/global_settings.py:115\nmsgid \"Tamil\"\nmsgstr \"坦米爾語\"\n\n#: conf/global_settings.py:116\nmsgid \"Telugu\"\nmsgstr \"泰盧固語\"\n\n#: conf/global_settings.py:117\nmsgid \"Thai\"\nmsgstr \"泰語\"\n\n#: conf/global_settings.py:118\nmsgid \"Turkish\"\nmsgstr \"土耳其語\"\n\n#: conf/global_settings.py:119\nmsgid \"Tatar\"\nmsgstr \"韃靼(Tatar)\"\n\n#: conf/global_settings.py:120\nmsgid \"Udmurt\"\nmsgstr \"\"\n\n#: conf/global_settings.py:121\nmsgid \"Ukrainian\"\nmsgstr \"烏克蘭語\"\n\n#: conf/global_settings.py:122\nmsgid \"Urdu\"\nmsgstr \"烏爾都語(Urdu)\"\n\n#: conf/global_settings.py:123\nmsgid \"Vietnamese\"\nmsgstr \"越南語\"\n\n#: conf/global_settings.py:124\nmsgid \"Simplified Chinese\"\nmsgstr \"簡體中文\"\n\n#: conf/global_settings.py:125\nmsgid \"Traditional Chinese\"\nmsgstr \"繁體中文\"\n\n#: core/validators.py:21 forms/fields.py:52\nmsgid \"Enter a valid value.\"\nmsgstr \"輸入有效的值\"\n\n#: core/validators.py:104 forms/fields.py:464\nmsgid \"Enter a valid email address.\"\nmsgstr \"輸入有效的電子郵件地址。\"\n\n#: core/validators.py:107 forms/fields.py:1013\nmsgid \"\"\n\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"\nmsgstr \"輸入一個有效的 'slug'，由字母、數字、底線與連字號組成。\"\n\n#: core/validators.py:110 core/validators.py:129 forms/fields.py:987\nmsgid \"Enter a valid IPv4 address.\"\nmsgstr \"輸入有效的 IPv4 位址。\"\n\n#: core/validators.py:115 core/validators.py:130\nmsgid \"Enter a valid IPv6 address.\"\nmsgstr \"請輸入有效的 IPv6 位址。\"\n\n#: core/validators.py:125 core/validators.py:128\nmsgid \"Enter a valid IPv4 or IPv6 address.\"\nmsgstr \"請輸入有效的 IPv4 或 IPv6 位址。\"\n\n#: core/validators.py:151 db/models/fields/__init__.py:655\nmsgid \"Enter only digits separated by commas.\"\nmsgstr \"輸入以逗號分隔的數字。\"\n\n#: core/validators.py:157\n#, python-format\nmsgid \"Ensure this value is %(limit_value)s (it is %(show_value)s).\"\nmsgstr \"確認這個是否為 %(limit_value)s (目前是 %(show_value)s).\"\n\n#: core/validators.py:176 forms/fields.py:210 forms/fields.py:263\n#, python-format\nmsgid \"Ensure this value is less than or equal to %(limit_value)s.\"\nmsgstr \"確認這個數值是否小於或等於 %(limit_value)s。\"\n\n#: core/validators.py:182 forms/fields.py:211 forms/fields.py:264\n#, python-format\nmsgid \"Ensure this value is greater than or equal to %(limit_value)s.\"\nmsgstr \"確認這個數值是否大於或等於 %(limit_value)s。\"\n\n#: core/validators.py:189\n#, python-format\nmsgid \"\"\n\"Ensure this value has at least %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"請確認這個內容至少要 %(limit_value)d 個字元 (目前有 %(show_value)d 個字)。\"\n\n#: core/validators.py:196\n#, python-format\nmsgid \"\"\n\"Ensure this value has at most %(limit_value)d characters (it has \"\n\"%(show_value)d).\"\nmsgstr \"\"\n\"請確認這個內容最多只能有 %(limit_value)d 個字元 (目前有 %(show_value)d 個\"\n\"字)。\"\n\n#: db/models/base.py:857\n#, python-format\nmsgid \"%(field_name)s must be unique for %(date_field)s %(lookup)s.\"\nmsgstr \"%(date_field)s 的 %(lookup)s 在 %(field_name)s 必須是唯一的。\"\n\n#: db/models/base.py:880 forms/models.py:573\nmsgid \"and\"\nmsgstr \"和\"\n\n#: db/models/base.py:881 db/models/fields/__init__.py:70\n#, python-format\nmsgid \"%(model_name)s with this %(field_label)s already exists.\"\nmsgstr \"這個 %(field_label)s 在 %(model_name)s 已經存在。\"\n\n#: db/models/fields/__init__.py:67\n#, python-format\nmsgid \"Value %r is not a valid choice.\"\nmsgstr \"數值 %r 並非是一個有效的選擇\"\n\n#: db/models/fields/__init__.py:68\nmsgid \"This field cannot be null.\"\nmsgstr \"這個值不能是 null。\"\n\n#: db/models/fields/__init__.py:69\nmsgid \"This field cannot be blank.\"\nmsgstr \"這個欄位不能留白\"\n\n#: db/models/fields/__init__.py:76\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"欄位型態： %(field_type)s\"\n\n#: db/models/fields/__init__.py:517 db/models/fields/__init__.py:985\nmsgid \"Integer\"\nmsgstr \"整數\"\n\n#: db/models/fields/__init__.py:521 db/models/fields/__init__.py:983\n#, python-format\nmsgid \"'%s' value must be an integer.\"\nmsgstr \"'%s' 的值必須為一個整數。\"\n\n#: db/models/fields/__init__.py:569\n#, python-format\nmsgid \"'%s' value must be either True or False.\"\nmsgstr \"'%s' 的值必須為 True 或 False。\"\n\n#: db/models/fields/__init__.py:571\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"布林值 (True 或 False)\"\n\n#: db/models/fields/__init__.py:622\n#, python-format\nmsgid \"String (up to %(max_length)s)\"\nmsgstr \"字串 (最長到 %(max_length)s 個字)\"\n\n#: db/models/fields/__init__.py:650\nmsgid \"Comma-separated integers\"\nmsgstr \"逗號分隔的整數\"\n\n#: db/models/fields/__init__.py:664\n#, python-format\nmsgid \"'%s' value has an invalid date format. It must be in YYYY-MM-DD format.\"\nmsgstr \"'%s' 的值為無效的日期格式。其格式必須為 YYYY-MM-DD 形式。\"\n\n#: db/models/fields/__init__.py:666 db/models/fields/__init__.py:754\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD) but it is an invalid date.\"\nmsgstr \"'%s' 的值為有效的格式 (YYYY-MM-DD) 但日期有誤。\"\n\n#: db/models/fields/__init__.py:669\nmsgid \"Date (without time)\"\nmsgstr \"日期 (不包括時間)\"\n\n#: db/models/fields/__init__.py:752\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.\"\n\"uuuuuu]][TZ] format.\"\nmsgstr \"\"\n\"'%s' 的值為無效的格式。其格式必須為 YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ] 形式。\"\n\n#: db/models/fields/__init__.py:756\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but \"\n\"it is an invalid date/time.\"\nmsgstr \"\"\n\"'%s' 的值為有效格式 (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) 但日期/時間有誤。\"\n\n#: db/models/fields/__init__.py:760\nmsgid \"Date (with time)\"\nmsgstr \"日期 (包括時間)\"\n\n#: db/models/fields/__init__.py:849\n#, python-format\nmsgid \"'%s' value must be a decimal number.\"\nmsgstr \"'%s' 的值必須為一個十進位數字。\"\n\n#: db/models/fields/__init__.py:851\nmsgid \"Decimal number\"\nmsgstr \"十進位數(小數可)\"\n\n#: db/models/fields/__init__.py:908\nmsgid \"Email address\"\nmsgstr \"電子郵件地址\"\n\n#: db/models/fields/__init__.py:927\nmsgid \"File path\"\nmsgstr \"檔案路徑\"\n\n#: db/models/fields/__init__.py:954\n#, python-format\nmsgid \"'%s' value must be a float.\"\nmsgstr \"'%s' 的值必須為浮點數。\"\n\n#: db/models/fields/__init__.py:956\nmsgid \"Floating point number\"\nmsgstr \"浮點數\"\n\n#: db/models/fields/__init__.py:1017\nmsgid \"Big (8 byte) integer\"\nmsgstr \"大整數(8位元組)\"\n\n#: db/models/fields/__init__.py:1031\nmsgid \"IPv4 address\"\nmsgstr \"IPv4 地址\"\n\n#: db/models/fields/__init__.py:1047\nmsgid \"IP address\"\nmsgstr \"IP 位址\"\n\n#: db/models/fields/__init__.py:1090\n#, python-format\nmsgid \"'%s' value must be either None, True or False.\"\nmsgstr \"'%s' 的值必須為空，True 或是 False。\"\n\n#: db/models/fields/__init__.py:1092\nmsgid \"Boolean (Either True, False or None)\"\nmsgstr \"布林值 (True, False 或 None)\"\n\n#: db/models/fields/__init__.py:1141\nmsgid \"Positive integer\"\nmsgstr \"正整數\"\n\n#: db/models/fields/__init__.py:1152\nmsgid \"Positive small integer\"\nmsgstr \"正小整數\"\n\n#: db/models/fields/__init__.py:1163\n#, python-format\nmsgid \"Slug (up to %(max_length)s)\"\nmsgstr \"可讀網址 (長度最多 %(max_length)s)\"\n\n#: db/models/fields/__init__.py:1181\nmsgid \"Small integer\"\nmsgstr \"小整數\"\n\n#: db/models/fields/__init__.py:1187\nmsgid \"Text\"\nmsgstr \"文字\"\n\n#: db/models/fields/__init__.py:1205\n#, python-format\nmsgid \"\"\n\"'%s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format.\"\nmsgstr \"'%s' 的值為無效的格式。其格式必須為 HH:MM[:ss[.uuuuuu]] 形式。\"\n\n#: db/models/fields/__init__.py:1207\n#, python-format\nmsgid \"\"\n\"'%s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid \"\n\"time.\"\nmsgstr \"'%s' 的值為有效的格式 (HH:MM[:ss[.uuuuuu]]) 但時間有誤。\"\n\n#: db/models/fields/__init__.py:1210\nmsgid \"Time\"\nmsgstr \"時間\"\n\n#: db/models/fields/__init__.py:1272\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: db/models/fields/files.py:216\nmsgid \"File\"\nmsgstr \"檔案\"\n\n#: db/models/fields/files.py:323\nmsgid \"Image\"\nmsgstr \"影像\"\n\n#: db/models/fields/related.py:979\n#, python-format\nmsgid \"Model %(model)s with pk %(pk)r does not exist.\"\nmsgstr \"PK 為 %(pk)r 的 Model %(model)s 不存在。\"\n\n#: db/models/fields/related.py:981\nmsgid \"Foreign Key (type determined by related field)\"\nmsgstr \"外鍵 (型態由關連欄位決定)\"\n\n#: db/models/fields/related.py:1111\nmsgid \"One-to-one relationship\"\nmsgstr \"一對一關連\"\n\n#: db/models/fields/related.py:1178\nmsgid \"Many-to-many relationship\"\nmsgstr \"多對多關連\"\n\n#: db/models/fields/related.py:1203\nmsgid \"\"\n\"Hold down \\\"Control\\\", or \\\"Command\\\" on a Mac, to select more than one.\"\nmsgstr \"按住 \\\"Control\\\", 或者在 Mac 上按 \\\"Command\\\", 以選取更多值\"\n\n#: forms/fields.py:51\nmsgid \"This field is required.\"\nmsgstr \"這個欄位是必須的。\"\n\n#: forms/fields.py:209\nmsgid \"Enter a whole number.\"\nmsgstr \"輸入整數\"\n\n#: forms/fields.py:241 forms/fields.py:262\nmsgid \"Enter a number.\"\nmsgstr \"輸入一個數字\"\n\n#: forms/fields.py:265\n#, python-format\nmsgid \"Ensure that there are no more than %s digits in total.\"\nmsgstr \"確認數字全長不超過 %s 位。\"\n\n#: forms/fields.py:266\n#, python-format\nmsgid \"Ensure that there are no more than %s decimal places.\"\nmsgstr \"確認想小數不超過 %s 位。\"\n\n#: forms/fields.py:267\n#, python-format\nmsgid \"Ensure that there are no more than %s digits before the decimal point.\"\nmsgstr \"確認想小數點前不超過 %s 位。\"\n\n#: forms/fields.py:355 forms/fields.py:953\nmsgid \"Enter a valid date.\"\nmsgstr \"輸入有效的日期\"\n\n#: forms/fields.py:378 forms/fields.py:954\nmsgid \"Enter a valid time.\"\nmsgstr \"輸入有效的時間\"\n\n#: forms/fields.py:399\nmsgid \"Enter a valid date/time.\"\nmsgstr \"輸入有效的日期/時間\"\n\n#: forms/fields.py:475\nmsgid \"No file was submitted. Check the encoding type on the form.\"\nmsgstr \"沒有檔案被送出。請檢查表單的編碼類型。\"\n\n#: forms/fields.py:476\nmsgid \"No file was submitted.\"\nmsgstr \"沒有檔案送出\"\n\n#: forms/fields.py:477\nmsgid \"The submitted file is empty.\"\nmsgstr \"送出的檔案是空的。\"\n\n#: forms/fields.py:478\n#, python-format\nmsgid \"\"\n\"Ensure this filename has at most %(max)d characters (it has %(length)d).\"\nmsgstr \"請確認這個檔名最多只能有 %(max)d 個字元 (它現在是 %(length)d 個字)。\"\n\n#: forms/fields.py:479\nmsgid \"Please either submit a file or check the clear checkbox, not both.\"\nmsgstr \"請提交一個檔案或確認清除核可項, 不能兩者都做。\"\n\n#: forms/fields.py:534\nmsgid \"\"\n\"Upload a valid image. The file you uploaded was either not an image or a \"\n\"corrupted image.\"\nmsgstr \"上傳一個有效的圖檔。你上傳的檔案為非圖片，不然就是損壞的圖檔。\"\n\n#: forms/fields.py:580\nmsgid \"Enter a valid URL.\"\nmsgstr \"輸入有效的URL\"\n\n#: forms/fields.py:666 forms/fields.py:746\n#, python-format\nmsgid \"Select a valid choice. %(value)s is not one of the available choices.\"\nmsgstr \"請選擇有效的項目, %(value)s 不是一個可用的選擇。\"\n\n#: forms/fields.py:747 forms/fields.py:835 forms/models.py:1002\nmsgid \"Enter a list of values.\"\nmsgstr \"輸入一個列表的值\"\n\n#: forms/formsets.py:324 forms/formsets.py:326\nmsgid \"Order\"\nmsgstr \"排序\"\n\n#: forms/formsets.py:328\nmsgid \"Delete\"\nmsgstr \"刪除\"\n\n#: forms/models.py:567\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s.\"\nmsgstr \"請修正 %(field)s 的重覆資料\"\n\n#: forms/models.py:571\n#, python-format\nmsgid \"Please correct the duplicate data for %(field)s, which must be unique.\"\nmsgstr \"請修正 %(field)s 的重覆資料, 必須為唯一值\"\n\n#: forms/models.py:577\n#, python-format\nmsgid \"\"\n\"Please correct the duplicate data for %(field_name)s which must be unique \"\n\"for the %(lookup)s in %(date_field)s.\"\nmsgstr \"\"\n\"請修正 %(field_name)s 重複資料, %(date_field)s 的 %(lookup)s 必須是唯一值。\"\n\n#: forms/models.py:585\nmsgid \"Please correct the duplicate values below.\"\nmsgstr \"請修正下方重覆的數值\"\n\n#: forms/models.py:852\nmsgid \"The inline foreign key did not match the parent instance primary key.\"\nmsgstr \"內含的外鍵無法連接到對應的上層實體主鍵。\"\n\n#: forms/models.py:913\nmsgid \"Select a valid choice. That choice is not one of the available choices.\"\nmsgstr \"選擇有效的選項： 此選擇不在可用的選項中。\"\n\n#: forms/models.py:1003\n#, python-format\nmsgid \"Select a valid choice. %s is not one of the available choices.\"\nmsgstr \"選擇一個有效的選項： '%s' 不在可用的選項中。\"\n\n#: forms/models.py:1005\n#, python-format\nmsgid \"\\\"%s\\\" is not a valid value for a primary key.\"\nmsgstr \"\\\"%s\\\" 不是一個主鍵的有效資料。\"\n\n#: forms/util.py:81\n#, python-format\nmsgid \"\"\n\"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it \"\n\"may be ambiguous or it may not exist.\"\nmsgstr \"\"\n\"%(datetime)s 無法被轉換成 %(current_timezone)s 時區格式; 可能是不符格式或不存\"\n\"在。\"\n\n#: forms/widgets.py:336\nmsgid \"Currently\"\nmsgstr \"目前\"\n\n#: forms/widgets.py:337\nmsgid \"Change\"\nmsgstr \"變更\"\n\n#: forms/widgets.py:338\nmsgid \"Clear\"\nmsgstr \"清除\"\n\n#: forms/widgets.py:594\nmsgid \"Unknown\"\nmsgstr \"未知\"\n\n#: forms/widgets.py:595\nmsgid \"Yes\"\nmsgstr \"是\"\n\n#: forms/widgets.py:596\nmsgid \"No\"\nmsgstr \"否\"\n\n#: template/defaultfilters.py:794\nmsgid \"yes,no,maybe\"\nmsgstr \"是、否、也許\"\n\n#: template/defaultfilters.py:822 template/defaultfilters.py:833\n#, python-format\nmsgid \"%(size)d byte\"\nmsgid_plural \"%(size)d bytes\"\nmsgstr[0] \"%(size)d 位元組\"\n\n#: template/defaultfilters.py:835\n#, python-format\nmsgid \"%s KB\"\nmsgstr \"%s KB\"\n\n#: template/defaultfilters.py:837\n#, python-format\nmsgid \"%s MB\"\nmsgstr \"%s MB\"\n\n#: template/defaultfilters.py:839\n#, python-format\nmsgid \"%s GB\"\nmsgstr \"%s GB\"\n\n#: template/defaultfilters.py:841\n#, python-format\nmsgid \"%s TB\"\nmsgstr \"%s TB\"\n\n#: template/defaultfilters.py:842\n#, python-format\nmsgid \"%s PB\"\nmsgstr \"%s PB\"\n\n#: utils/dateformat.py:47\nmsgid \"p.m.\"\nmsgstr \"p.m.\"\n\n#: utils/dateformat.py:48\nmsgid \"a.m.\"\nmsgstr \"a.m.\"\n\n#: utils/dateformat.py:53\nmsgid \"PM\"\nmsgstr \"PM\"\n\n#: utils/dateformat.py:54\nmsgid \"AM\"\nmsgstr \"AM\"\n\n#: utils/dateformat.py:103\nmsgid \"midnight\"\nmsgstr \"午夜\"\n\n#: utils/dateformat.py:105\nmsgid \"noon\"\nmsgstr \"中午\"\n\n#: utils/dates.py:6\nmsgid \"Monday\"\nmsgstr \"星期一\"\n\n#: utils/dates.py:6\nmsgid \"Tuesday\"\nmsgstr \"星期二\"\n\n#: utils/dates.py:6\nmsgid \"Wednesday\"\nmsgstr \"星期三\"\n\n#: utils/dates.py:6\nmsgid \"Thursday\"\nmsgstr \"星期四\"\n\n#: utils/dates.py:6\nmsgid \"Friday\"\nmsgstr \"星期五\"\n\n#: utils/dates.py:7\nmsgid \"Saturday\"\nmsgstr \"星期六\"\n\n#: utils/dates.py:7\nmsgid \"Sunday\"\nmsgstr \"星期日\"\n\n#: utils/dates.py:10\nmsgid \"Mon\"\nmsgstr \"星期一\"\n\n#: utils/dates.py:10\nmsgid \"Tue\"\nmsgstr \"星期二\"\n\n#: utils/dates.py:10\nmsgid \"Wed\"\nmsgstr \"星期三\"\n\n#: utils/dates.py:10\nmsgid \"Thu\"\nmsgstr \"星期四\"\n\n#: utils/dates.py:10\nmsgid \"Fri\"\nmsgstr \"星期五\"\n\n#: utils/dates.py:11\nmsgid \"Sat\"\nmsgstr \"星期六\"\n\n#: utils/dates.py:11\nmsgid \"Sun\"\nmsgstr \"星期日\"\n\n#: utils/dates.py:18\nmsgid \"January\"\nmsgstr \"一月\"\n\n#: utils/dates.py:18\nmsgid \"February\"\nmsgstr \"二月\"\n\n#: utils/dates.py:18\nmsgid \"March\"\nmsgstr \"三月\"\n\n#: utils/dates.py:18\nmsgid \"April\"\nmsgstr \"四月\"\n\n#: utils/dates.py:18\nmsgid \"May\"\nmsgstr \"五月\"\n\n#: utils/dates.py:18\nmsgid \"June\"\nmsgstr \"六月\"\n\n#: utils/dates.py:19\nmsgid \"July\"\nmsgstr \"七月\"\n\n#: utils/dates.py:19\nmsgid \"August\"\nmsgstr \"八月\"\n\n#: utils/dates.py:19\nmsgid \"September\"\nmsgstr \"九月\"\n\n#: utils/dates.py:19\nmsgid \"October\"\nmsgstr \"十月\"\n\n#: utils/dates.py:19\nmsgid \"November\"\nmsgstr \"十一月\"\n\n#: utils/dates.py:20\nmsgid \"December\"\nmsgstr \"十二月\"\n\n#: utils/dates.py:23\nmsgid \"jan\"\nmsgstr \"一月\"\n\n#: utils/dates.py:23\nmsgid \"feb\"\nmsgstr \"二月\"\n\n#: utils/dates.py:23\nmsgid \"mar\"\nmsgstr \"三月\"\n\n#: utils/dates.py:23\nmsgid \"apr\"\nmsgstr \"四月\"\n\n#: utils/dates.py:23\nmsgid \"may\"\nmsgstr \"五月\"\n\n#: utils/dates.py:23\nmsgid \"jun\"\nmsgstr \"六月\"\n\n#: utils/dates.py:24\nmsgid \"jul\"\nmsgstr \"七月\"\n\n#: utils/dates.py:24\nmsgid \"aug\"\nmsgstr \"八月\"\n\n#: utils/dates.py:24\nmsgid \"sep\"\nmsgstr \"九月\"\n\n#: utils/dates.py:24\nmsgid \"oct\"\nmsgstr \"十月\"\n\n#: utils/dates.py:24\nmsgid \"nov\"\nmsgstr \"十一月\"\n\n#: utils/dates.py:24\nmsgid \"dec\"\nmsgstr \"十二月\"\n\n#: utils/dates.py:31\nmsgctxt \"abbrev. month\"\nmsgid \"Jan.\"\nmsgstr \"一月\"\n\n#: utils/dates.py:32\nmsgctxt \"abbrev. month\"\nmsgid \"Feb.\"\nmsgstr \"二月\"\n\n#: utils/dates.py:33\nmsgctxt \"abbrev. month\"\nmsgid \"March\"\nmsgstr \"三月\"\n\n#: utils/dates.py:34\nmsgctxt \"abbrev. month\"\nmsgid \"April\"\nmsgstr \"四月\"\n\n#: utils/dates.py:35\nmsgctxt \"abbrev. month\"\nmsgid \"May\"\nmsgstr \"五月\"\n\n#: utils/dates.py:36\nmsgctxt \"abbrev. month\"\nmsgid \"June\"\nmsgstr \"六月\"\n\n#: utils/dates.py:37\nmsgctxt \"abbrev. month\"\nmsgid \"July\"\nmsgstr \"七月\"\n\n#: utils/dates.py:38\nmsgctxt \"abbrev. month\"\nmsgid \"Aug.\"\nmsgstr \"八月\"\n\n#: utils/dates.py:39\nmsgctxt \"abbrev. month\"\nmsgid \"Sept.\"\nmsgstr \"九月\"\n\n#: utils/dates.py:40\nmsgctxt \"abbrev. month\"\nmsgid \"Oct.\"\nmsgstr \"十月\"\n\n#: utils/dates.py:41\nmsgctxt \"abbrev. month\"\nmsgid \"Nov.\"\nmsgstr \"十一月\"\n\n#: utils/dates.py:42\nmsgctxt \"abbrev. month\"\nmsgid \"Dec.\"\nmsgstr \"十二月\"\n\n#: utils/dates.py:45\nmsgctxt \"alt. month\"\nmsgid \"January\"\nmsgstr \"一月\"\n\n#: utils/dates.py:46\nmsgctxt \"alt. month\"\nmsgid \"February\"\nmsgstr \"二月\"\n\n#: utils/dates.py:47\nmsgctxt \"alt. month\"\nmsgid \"March\"\nmsgstr \"三月\"\n\n#: utils/dates.py:48\nmsgctxt \"alt. month\"\nmsgid \"April\"\nmsgstr \"四月\"\n\n#: utils/dates.py:49\nmsgctxt \"alt. month\"\nmsgid \"May\"\nmsgstr \"五月\"\n\n#: utils/dates.py:50\nmsgctxt \"alt. month\"\nmsgid \"June\"\nmsgstr \"六月\"\n\n#: utils/dates.py:51\nmsgctxt \"alt. month\"\nmsgid \"July\"\nmsgstr \"七月\"\n\n#: utils/dates.py:52\nmsgctxt \"alt. month\"\nmsgid \"August\"\nmsgstr \"八月\"\n\n#: utils/dates.py:53\nmsgctxt \"alt. month\"\nmsgid \"September\"\nmsgstr \"九月\"\n\n#: utils/dates.py:54\nmsgctxt \"alt. month\"\nmsgid \"October\"\nmsgstr \"十月\"\n\n#: utils/dates.py:55\nmsgctxt \"alt. month\"\nmsgid \"November\"\nmsgstr \"十一月\"\n\n#: utils/dates.py:56\nmsgctxt \"alt. month\"\nmsgid \"December\"\nmsgstr \"十二月\"\n\n#: utils/text.py:70\n#, python-format\nmsgctxt \"String to return when truncating text\"\nmsgid \"%(truncated_text)s...\"\nmsgstr \"%(truncated_text)s...\"\n\n#: utils/text.py:239\nmsgid \"or\"\nmsgstr \"或\"\n\n#. Translators: This string is used as a separator between list elements\n#: utils/text.py:256\nmsgid \", \"\nmsgstr \", \"\n\n#: utils/timesince.py:22\nmsgid \"year\"\nmsgid_plural \"years\"\nmsgstr[0] \"年\"\n\n#: utils/timesince.py:23\nmsgid \"month\"\nmsgid_plural \"months\"\nmsgstr[0] \"月\"\n\n#: utils/timesince.py:24\nmsgid \"week\"\nmsgid_plural \"weeks\"\nmsgstr[0] \"週\"\n\n#: utils/timesince.py:25\nmsgid \"day\"\nmsgid_plural \"days\"\nmsgstr[0] \"天\"\n\n#: utils/timesince.py:26\nmsgid \"hour\"\nmsgid_plural \"hours\"\nmsgstr[0] \"小時\"\n\n#: utils/timesince.py:27\nmsgid \"minute\"\nmsgid_plural \"minutes\"\nmsgstr[0] \"分鐘\"\n\n#: utils/timesince.py:43\nmsgid \"minutes\"\nmsgstr \"分鐘\"\n\n#: utils/timesince.py:48\n#, python-format\nmsgid \"%(number)d %(type)s\"\nmsgstr \"%(number)d %(type)s\"\n\n#: utils/timesince.py:54\n#, python-format\nmsgid \", %(number)d %(type)s\"\nmsgstr \", %(number)d %(type)s\"\n\n#: views/static.py:56\nmsgid \"Directory indexes are not allowed here.\"\nmsgstr \"這裡不允許目錄索引。\"\n\n#: views/static.py:58\n#, python-format\nmsgid \"\\\"%(path)s\\\" does not exist\"\nmsgstr \"\\\"%(path)s\\\" 路徑不存在\"\n\n#: views/static.py:98\n#, python-format\nmsgid \"Index of %(directory)s\"\nmsgstr \"%(directory)s 的索引\"\n\n#: views/generic/dates.py:42\nmsgid \"No year specified\"\nmsgstr \"不指定年份\"\n\n#: views/generic/dates.py:98\nmsgid \"No month specified\"\nmsgstr \"不指定月份\"\n\n#: views/generic/dates.py:157\nmsgid \"No day specified\"\nmsgstr \"不指定日期\"\n\n#: views/generic/dates.py:213\nmsgid \"No week specified\"\nmsgstr \"不指定週數\"\n\n#: views/generic/dates.py:368 views/generic/dates.py:393\n#, python-format\nmsgid \"No %(verbose_name_plural)s available\"\nmsgstr \"%(verbose_name_plural)s 無法使用\"\n\n#: views/generic/dates.py:646\n#, python-format\nmsgid \"\"\n\"Future %(verbose_name_plural)s not available because %(class_name)s.\"\n\"allow_future is False.\"\nmsgstr \"\"\n\"未來的 %(verbose_name_plural)s 不可用，因 %(class_name)s.allow_future 為 \"\n\"False.\"\n\n#: views/generic/dates.py:678\n#, python-format\nmsgid \"Invalid date string '%(datestr)s' given format '%(format)s'\"\nmsgstr \"無效的日期字串 '%(datestr)s' 可接受格式 '%(format)s'\"\n\n#: views/generic/detail.py:54\n#, python-format\nmsgid \"No %(verbose_name)s found matching the query\"\nmsgstr \"無 %(verbose_name)s 符合本次搜尋\"\n\n#: views/generic/list.py:51\nmsgid \"Page is not 'last', nor can it be converted to an int.\"\nmsgstr \"頁面不是最後一頁，也無法被轉換為整數。\"\n\n#: views/generic/list.py:56\n#, python-format\nmsgid \"Invalid page (%(page_number)s): %(message)s\"\nmsgstr \"無效的頁面 (%(page_number)s): %(message)s\"\n\n#: views/generic/list.py:137\n#, python-format\nmsgid \"Empty list and '%(class_name)s.allow_empty' is False.\"\nmsgstr \"為空list且 '%(class_name)s.allow_empty' 為False.\"\n"
  },
  {
    "path": "Django-1.5.1/django/conf/locale/zh_TW/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/conf/locale/zh_TW/formats.py",
    "content": "# -*- encoding: utf-8 -*-\n# This file is distributed under the same license as the Django package.\n#\n\n# The *_FORMAT strings use the Django date format syntax,\n# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date\n# DATE_FORMAT = \n# TIME_FORMAT = \n# DATETIME_FORMAT = \n# YEAR_MONTH_FORMAT = \n# MONTH_DAY_FORMAT = \n# SHORT_DATE_FORMAT = \n# SHORT_DATETIME_FORMAT = \n# FIRST_DAY_OF_WEEK = \n\n# The *_INPUT_FORMATS strings use the Python strftime format syntax,\n# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior\n# DATE_INPUT_FORMATS = \n# TIME_INPUT_FORMATS = \n# DATETIME_INPUT_FORMATS = \n# DECIMAL_SEPARATOR = \n# THOUSAND_SEPARATOR = \n# NUMBER_GROUPING = \n"
  },
  {
    "path": "Django-1.5.1/django/conf/project_template/manage.py",
    "content": "#!/usr/bin/env python\nimport os\nimport sys\n\nif __name__ == \"__main__\":\n    os.environ.setdefault(\"DJANGO_SETTINGS_MODULE\", \"{{ project_name }}.settings\")\n\n    from django.core.management import execute_from_command_line\n\n    execute_from_command_line(sys.argv)\n"
  },
  {
    "path": "Django-1.5.1/django/conf/project_template/project_name/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/conf/project_template/project_name/settings.py",
    "content": "# Django settings for {{ project_name }} project.\n\nDEBUG = True\nTEMPLATE_DEBUG = DEBUG\n\nADMINS = (\n    # ('Your Name', 'your_email@example.com'),\n)\n\nMANAGERS = ADMINS\n\nDATABASES = {\n    'default': {\n        'ENGINE': 'django.db.backends.', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.\n        'NAME': '',                      # Or path to database file if using sqlite3.\n        # The following settings are not used with sqlite3:\n        'USER': '',\n        'PASSWORD': '',\n        'HOST': '',                      # Empty for localhost through domain sockets or '127.0.0.1' for localhost through TCP.\n        'PORT': '',                      # Set to empty string for default.\n    }\n}\n\n# Hosts/domain names that are valid for this site; required if DEBUG is False\n# See https://docs.djangoproject.com/en/1.5/ref/settings/#allowed-hosts\nALLOWED_HOSTS = []\n\n# Local time zone for this installation. Choices can be found here:\n# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name\n# although not all choices may be available on all operating systems.\n# In a Windows environment this must be set to your system time zone.\nTIME_ZONE = 'America/Chicago'\n\n# Language code for this installation. All choices can be found here:\n# http://www.i18nguy.com/unicode/language-identifiers.html\nLANGUAGE_CODE = 'en-us'\n\nSITE_ID = 1\n\n# If you set this to False, Django will make some optimizations so as not\n# to load the internationalization machinery.\nUSE_I18N = True\n\n# If you set this to False, Django will not format dates, numbers and\n# calendars according to the current locale.\nUSE_L10N = True\n\n# If you set this to False, Django will not use timezone-aware datetimes.\nUSE_TZ = True\n\n# Absolute filesystem path to the directory that will hold user-uploaded files.\n# Example: \"/var/www/example.com/media/\"\nMEDIA_ROOT = ''\n\n# URL that handles the media served from MEDIA_ROOT. Make sure to use a\n# trailing slash.\n# Examples: \"http://example.com/media/\", \"http://media.example.com/\"\nMEDIA_URL = ''\n\n# Absolute path to the directory static files should be collected to.\n# Don't put anything in this directory yourself; store your static files\n# in apps' \"static/\" subdirectories and in STATICFILES_DIRS.\n# Example: \"/var/www/example.com/static/\"\nSTATIC_ROOT = ''\n\n# URL prefix for static files.\n# Example: \"http://example.com/static/\", \"http://static.example.com/\"\nSTATIC_URL = '/static/'\n\n# Additional locations of static files\nSTATICFILES_DIRS = (\n    # Put strings here, like \"/home/html/static\" or \"C:/www/django/static\".\n    # Always use forward slashes, even on Windows.\n    # Don't forget to use absolute paths, not relative paths.\n)\n\n# List of finder classes that know how to find static files in\n# various locations.\nSTATICFILES_FINDERS = (\n    'django.contrib.staticfiles.finders.FileSystemFinder',\n    'django.contrib.staticfiles.finders.AppDirectoriesFinder',\n#    'django.contrib.staticfiles.finders.DefaultStorageFinder',\n)\n\n# Make this unique, and don't share it with anybody.\nSECRET_KEY = '{{ secret_key }}'\n\n# List of callables that know how to import templates from various sources.\nTEMPLATE_LOADERS = (\n    'django.template.loaders.filesystem.Loader',\n    'django.template.loaders.app_directories.Loader',\n#     'django.template.loaders.eggs.Loader',\n)\n\nMIDDLEWARE_CLASSES = (\n    'django.middleware.common.CommonMiddleware',\n    'django.contrib.sessions.middleware.SessionMiddleware',\n    'django.middleware.csrf.CsrfViewMiddleware',\n    'django.contrib.auth.middleware.AuthenticationMiddleware',\n    'django.contrib.messages.middleware.MessageMiddleware',\n    # Uncomment the next line for simple clickjacking protection:\n    # 'django.middleware.clickjacking.XFrameOptionsMiddleware',\n)\n\nROOT_URLCONF = '{{ project_name }}.urls'\n\n# Python dotted path to the WSGI application used by Django's runserver.\nWSGI_APPLICATION = '{{ project_name }}.wsgi.application'\n\nTEMPLATE_DIRS = (\n    # Put strings here, like \"/home/html/django_templates\" or \"C:/www/django/templates\".\n    # Always use forward slashes, even on Windows.\n    # Don't forget to use absolute paths, not relative paths.\n)\n\nINSTALLED_APPS = (\n    'django.contrib.auth',\n    'django.contrib.contenttypes',\n    'django.contrib.sessions',\n    'django.contrib.sites',\n    'django.contrib.messages',\n    'django.contrib.staticfiles',\n    # Uncomment the next line to enable the admin:\n    # 'django.contrib.admin',\n    # Uncomment the next line to enable admin documentation:\n    # 'django.contrib.admindocs',\n)\n\n# A sample logging configuration. The only tangible logging\n# performed by this configuration is to send an email to\n# the site admins on every HTTP 500 error when DEBUG=False.\n# See http://docs.djangoproject.com/en/dev/topics/logging for\n# more details on how to customize your logging configuration.\nLOGGING = {\n    'version': 1,\n    'disable_existing_loggers': False,\n    'filters': {\n        'require_debug_false': {\n            '()': 'django.utils.log.RequireDebugFalse'\n        }\n    },\n    'handlers': {\n        'mail_admins': {\n            'level': 'ERROR',\n            'filters': ['require_debug_false'],\n            'class': 'django.utils.log.AdminEmailHandler'\n        }\n    },\n    'loggers': {\n        'django.request': {\n            'handlers': ['mail_admins'],\n            'level': 'ERROR',\n            'propagate': True,\n        },\n    }\n}\n"
  },
  {
    "path": "Django-1.5.1/django/conf/project_template/project_name/urls.py",
    "content": "from django.conf.urls import patterns, include, url\n看吧, 这个 import 是重点\n# Uncomment the next two lines to enable the admin:\n# from django.contrib import admin\n# admin.autodiscover()\n\nurlpatterns = patterns('',\n    # Examples:\n    # url(r'^$', '{{ project_name }}.views.home', name='home'),\n    # url(r'^{{ project_name }}/', include('{{ project_name }}.foo.urls')),\n\n    # Uncomment the admin/doc line below to enable admin documentation:\n    # url(r'^admin/doc/', include('django.contrib.admindocs.urls')),\n\n    # Uncomment the next line to enable the admin:\n    # url(r'^admin/', include(admin.site.urls)),\n)\n"
  },
  {
    "path": "Django-1.5.1/django/conf/project_template/project_name/wsgi.py",
    "content": "\"\"\"\nWSGI config for {{ project_name }} project.\n\nThis module contains the WSGI application used by Django's development server\nand any production WSGI deployments. It should expose a module-level variable\nnamed ``application``. Django's ``runserver`` and ``runfcgi`` commands discover\nthis application via the ``WSGI_APPLICATION`` setting.\n\nUsually you will have the standard Django WSGI application here, but it also\nmight make sense to replace the whole Django WSGI application with a custom one\nthat later delegates to the Django one. For example, you could introduce WSGI\nmiddleware here, or combine a Django application with an application of another\nframework.\n\n\"\"\"\nimport os\n\n# We defer to a DJANGO_SETTINGS_MODULE already in the environment. This breaks\n# if running multiple sites in the same mod_wsgi process. To fix this, use\n# mod_wsgi daemon mode with each site in its own daemon process, or use\n# os.environ[\"DJANGO_SETTINGS_MODULE\"] = \"{{ project_name }}.settings\"\nos.environ.setdefault(\"DJANGO_SETTINGS_MODULE\", \"{{ project_name }}.settings\")\n\n# This application object is used by any WSGI server configured to use this\n# file. This includes Django's development server, if the WSGI_APPLICATION\n# setting points here.\nfrom django.core.wsgi import get_wsgi_application\napplication = get_wsgi_application()\n\n# Apply WSGI middleware here.\n# from helloworld.wsgi import HelloWorldApplication\n# application = HelloWorldApplication(application)\n"
  },
  {
    "path": "Django-1.5.1/django/conf/urls/__init__.py",
    "content": "from django.core.urlresolvers import (RegexURLPattern,\n    RegexURLResolver, LocaleRegexURLResolver)\nfrom django.core.exceptions import ImproperlyConfigured\nfrom django.utils.importlib import import_module\nfrom django.utils import six\n\n# import * 引入的时候只导入一下六个方法或类\n__all__ = ['handler403', 'handler404', 'handler500', 'include', 'patterns', 'url']\n\nhandler403 = 'django.views.defaults.permission_denied'\nhandler404 = 'django.views.defaults.page_not_found'\nhandler500 = 'django.views.defaults.server_error'\n\n# url 里面可以用 incude 函数\ndef include(arg, namespace=None, app_name=None):\n    if isinstance(arg, tuple):\n        # callable returning a namespace hint\n        if namespace:\n            raise ImproperlyConfigured('Cannot override the namespace for a dynamic module that provides a namespace')\n\n        # 获取 urlconf 模块文件, 应用名, 命名空间\n        urlconf_module, app_name, namespace = arg\n    else:\n        # No namespace hint - use manually provided namespace\n        urlconf_module = arg\n\n    if isinstance(urlconf_module, six.string_types):\n        # 尝试导入模块\n        urlconf_module = import_module(urlconf_module)\n\n    # 在 urlconf_module 中导入 urlpatterns\n    # 在 urlconf_module 中肯定会有 urlpatterns 这个变量\n    patterns = getattr(urlconf_module, 'urlpatterns', urlconf_module)\n\n    # Make sure we can iterate through the patterns (without this, some\n    # testcases will break).\n    if isinstance(patterns, (list, tuple)):\n        for url_pattern in patterns:\n            # Test if the LocaleRegexURLResolver is used within the include;\n            # this should throw an error since this is not allowed!\n            if isinstance(url_pattern, LocaleRegexURLResolver):\n                raise ImproperlyConfigured(\n                    'Using i18n_patterns in an included URLconf is not allowed.')\n\n    # 返回模块, app 名 ,命名空间\n    return (urlconf_module, app_name, namespace)\n\ndef patterns(prefix, *args): 特意留一个 prefix\n    pattern_list = []\n    for t in args:\n        if isinstance(t, (list, tuple)):\n            t = url(prefix=prefix, *t) 自动转换\n\n        elif isinstance(t, RegexURLPattern):\n            t.add_prefix(prefix)\n\n        pattern_list.append(t)\n\n    # 返回 RegexURLResolver 或者 RegexURLPattern 对象的列表\n    return pattern_list\n\n# url 函数\ndef url(regex, view, kwargs=None, name=None, prefix=''):\n    if isinstance(view, (list,tuple)): 如果是 list 或者 tuple\n        # For include(...) processing. 处理包含 include(...)\n        urlconf_module, app_name, namespace = view\n\n        # 此处返回 RegexURLResolver, 区分下面返回 RegexURLPattern\n        return RegexURLResolver(regex, urlconf_module, kwargs, app_name=app_name, namespace=namespace)\n    else:\n        if isinstance(view, six.string_types):\n            if not view:\n                raise ImproperlyConfigured('Empty URL pattern view name not permitted (for pattern %r)' % regex)\n            if prefix:\n                view = prefix + '.' + view\n\n        # 返回 RegexURLPattern 的对象\n        return RegexURLPattern(regex, view, kwargs, name)\n    # 从上面可以获知, url 会返回 RegexURLResolver 或者 RegexURLPattern 对象\n"
  },
  {
    "path": "Django-1.5.1/django/conf/urls/defaults.py",
    "content": "import warnings\nwarnings.warn(\"django.conf.urls.defaults is deprecated; use django.conf.urls instead\",\n              DeprecationWarning)\n\nfrom django.conf.urls import (handler403, handler404, handler500,\n        include, patterns, url)\n"
  },
  {
    "path": "Django-1.5.1/django/conf/urls/i18n.py",
    "content": "from django.conf import settings\nfrom django.conf.urls import patterns, url\nfrom django.core.urlresolvers import LocaleRegexURLResolver\n\ndef i18n_patterns(prefix, *args):\n    \"\"\"\n    Adds the language code prefix to every URL pattern within this\n    function. This may only be used in the root URLconf, not in an included\n    URLconf.\n\n    \"\"\"\n    pattern_list = patterns(prefix, *args)\n    if not settings.USE_I18N:\n        return pattern_list\n    return [LocaleRegexURLResolver(pattern_list)]\n\n\"\"\" 不懂\nAdds the language code prefix to every URL pattern within this function. \n\"\"\"\nurlpatterns = patterns('',\n    url(r'^setlang/$', 'django.views.i18n.set_language', name='set_language'),\n)"
  },
  {
    "path": "Django-1.5.1/django/conf/urls/shortcut.py",
    "content": "from django.conf.urls import patterns\n\n快捷方式, 不懂\nurlpatterns = patterns('django.views',\n    (r'^(?P<content_type_id>\\d+)/(?P<object_id>.*)/$', 'defaults.shortcut'),\n)\n"
  },
  {
    "path": "Django-1.5.1/django/conf/urls/static.py",
    "content": "import re\nfrom django.conf import settings\nfrom django.conf.urls import patterns, url\nfrom django.core.exceptions import ImproperlyConfigured\n\n in debug mode. 调试模式下用的,不懂\ndef static(prefix, view='django.views.static.serve', **kwargs):\n    \"\"\"\n    Helper function to return a URL pattern for serving files in debug mode.\n\n    from django.conf import settings\n    from django.conf.urls.static import static\n\n    urlpatterns = patterns('',\n        # ... the rest of your URLconf goes here ...\n    ) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)\n\n    \"\"\"\n    # No-op if not in debug mode or an non-local prefix \n    if not settings.DEBUG or (prefix and '://' in prefix):\n        return []`\n    elif not prefix:\n        raise ImproperlyConfigured(\"Empty static prefix not permitted\")\n    return patterns('',\n        url(r'^%s(?P<path>.*)$' % re.escape(prefix.lstrip('/')), view, kwargs=kwargs),\n    )\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/__init__.py",
    "content": "# ACTION_CHECKBOX_NAME is unused, but should stay since its import from here\n# has been referenced in documentation.\nfrom django.contrib.admin.helpers import ACTION_CHECKBOX_NAME\nfrom django.contrib.admin.options import ModelAdmin, HORIZONTAL, VERTICAL\nfrom django.contrib.admin.options import StackedInline, TabularInline\nfrom django.contrib.admin.sites import AdminSite, site\nfrom django.contrib.admin.filters import (ListFilter, SimpleListFilter,\n    FieldListFilter, BooleanFieldListFilter, RelatedFieldListFilter,\n    ChoicesFieldListFilter, DateFieldListFilter, AllValuesFieldListFilter)\n\n\ndef autodiscover():\n    \"\"\"\n    Auto-discover INSTALLED_APPS admin.py modules and fail silently when\n    not present. This forces an import on them to register any admin bits they\n    may want.\n    \"\"\"\n\n    import copy\n    from django.conf import settings\n    from django.utils.importlib import import_module\n    from django.utils.module_loading import module_has_submodule\n\n    for app in settings.INSTALLED_APPS:\n        mod = import_module(app)\n        # Attempt to import the app's admin module.\n        try:\n            before_import_registry = copy.copy(site._registry)\n            import_module('%s.admin' % app)\n        except:\n            # Reset the model registry to the state before the last import as\n            # this import will have to reoccur on the next request and this\n            # could raise NotRegistered and AlreadyRegistered exceptions\n            # (see #8245).\n            site._registry = before_import_registry\n\n            # Decide whether to bubble up this error. If the app just\n            # doesn't have an admin module, we can ignore the error\n            # attempting to import it, otherwise we want it to bubble up.\n            if module_has_submodule(mod, 'admin'):\n                raise\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/actions.py",
    "content": "\"\"\"\nBuilt-in, globally-available admin actions.\n\"\"\"\n\nfrom django.core.exceptions import PermissionDenied\nfrom django.contrib.admin import helpers\nfrom django.contrib.admin.util import get_deleted_objects, model_ngettext\nfrom django.db import router\nfrom django.template.response import TemplateResponse\nfrom django.utils.encoding import force_text\nfrom django.utils.translation import ugettext_lazy, ugettext as _\n\ndef delete_selected(modeladmin, request, queryset):\n    \"\"\"\n    Default action which deletes the selected objects.\n\n    This action first displays a confirmation page whichs shows all the\n    deleteable objects, or, if the user has no permission one of the related\n    childs (foreignkeys), a \"permission denied\" message.\n\n    Next, it delets all selected objects and redirects back to the change list.\n    \"\"\"\n    opts = modeladmin.model._meta\n    app_label = opts.app_label\n\n    # Check that the user has delete permission for the actual model\n    if not modeladmin.has_delete_permission(request):\n        raise PermissionDenied\n\n    using = router.db_for_write(modeladmin.model)\n\n    # Populate deletable_objects, a data structure of all related objects that\n    # will also be deleted.\n    deletable_objects, perms_needed, protected = get_deleted_objects(\n        queryset, opts, request.user, modeladmin.admin_site, using)\n\n    # The user has already confirmed the deletion.\n    # Do the deletion and return a None to display the change list view again.\n    if request.POST.get('post'):\n        if perms_needed:\n            raise PermissionDenied\n        n = queryset.count()\n        if n:\n            for obj in queryset:\n                obj_display = force_text(obj)\n                modeladmin.log_deletion(request, obj, obj_display)\n            queryset.delete()\n            modeladmin.message_user(request, _(\"Successfully deleted %(count)d %(items)s.\") % {\n                \"count\": n, \"items\": model_ngettext(modeladmin.opts, n)\n            })\n        # Return None to display the change list page again.\n        return None\n\n    if len(queryset) == 1:\n        objects_name = force_text(opts.verbose_name)\n    else:\n        objects_name = force_text(opts.verbose_name_plural)\n\n    if perms_needed or protected:\n        title = _(\"Cannot delete %(name)s\") % {\"name\": objects_name}\n    else:\n        title = _(\"Are you sure?\")\n\n    context = {\n        \"title\": title,\n        \"objects_name\": objects_name,\n        \"deletable_objects\": [deletable_objects],\n        'queryset': queryset,\n        \"perms_lacking\": perms_needed,\n        \"protected\": protected,\n        \"opts\": opts,\n        \"app_label\": app_label,\n        'action_checkbox_name': helpers.ACTION_CHECKBOX_NAME,\n    }\n\n    # Display the confirmation page\n    return TemplateResponse(request, modeladmin.delete_selected_confirmation_template or [\n        \"admin/%s/%s/delete_selected_confirmation.html\" % (app_label, opts.object_name.lower()),\n        \"admin/%s/delete_selected_confirmation.html\" % app_label,\n        \"admin/delete_selected_confirmation.html\"\n    ], context, current_app=modeladmin.admin_site.name)\n\ndelete_selected.short_description = ugettext_lazy(\"Delete selected %(verbose_name_plural)s\")\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/bin/compress.py",
    "content": "#!/usr/bin/env python\nimport os\nimport optparse\nimport subprocess\nimport sys\n\njs_path = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'static', 'admin', 'js')\n\ndef main():\n    usage = \"usage: %prog [file1..fileN]\"\n    description = \"\"\"With no file paths given this script will automatically\ncompress all jQuery-based files of the admin app. Requires the Google Closure\nCompiler library and Java version 6 or later.\"\"\"\n    parser = optparse.OptionParser(usage, description=description)\n    parser.add_option(\"-c\", dest=\"compiler\", default=\"~/bin/compiler.jar\",\n                      help=\"path to Closure Compiler jar file\")\n    parser.add_option(\"-v\", \"--verbose\",\n                      action=\"store_true\", dest=\"verbose\")\n    parser.add_option(\"-q\", \"--quiet\",\n                      action=\"store_false\", dest=\"verbose\")\n    (options, args) = parser.parse_args()\n\n    compiler = os.path.expanduser(options.compiler)\n    if not os.path.exists(compiler):\n        sys.exit(\"Google Closure compiler jar file %s not found. Please use the -c option to specify the path.\" % compiler)\n\n    if not args:\n        if options.verbose:\n            sys.stdout.write(\"No filenames given; defaulting to admin scripts\\n\")\n        args = [os.path.join(js_path, f) for f in [\n            \"actions.js\", \"collapse.js\", \"inlines.js\", \"prepopulate.js\"]]\n\n    for arg in args:\n        if not arg.endswith(\".js\"):\n            arg = arg + \".js\"\n        to_compress = os.path.expanduser(arg)\n        if os.path.exists(to_compress):\n            to_compress_min = \"%s.min.js\" % \"\".join(arg.rsplit(\".js\"))\n            cmd = \"java -jar %s --js %s --js_output_file %s\" % (compiler, to_compress, to_compress_min)\n            if options.verbose:\n                sys.stdout.write(\"Running: %s\\n\" % cmd)\n            subprocess.call(cmd.split())\n        else:\n            sys.stdout.write(\"File %s not found. Sure it exists?\\n\" % to_compress)\n\nif __name__ == '__main__':\n    main()\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/filters.py",
    "content": "\"\"\"\nThis encapsulates the logic for displaying filters in the Django admin.\nFilters are specified in models with the \"list_filter\" option.\n\nEach filter subclass knows how to display a filter for a field that passes a\ncertain test -- e.g. being a DateField or ForeignKey.\n\"\"\"\nimport datetime\n\nfrom django.db import models\nfrom django.core.exceptions import ImproperlyConfigured, ValidationError\nfrom django.utils.encoding import smart_text, force_text\nfrom django.utils.translation import ugettext_lazy as _\nfrom django.utils import timezone\nfrom django.contrib.admin.util import (get_model_from_relation,\n    reverse_field_path, get_limit_choices_to_from_path, prepare_lookup_value)\nfrom django.contrib.admin.options import IncorrectLookupParameters\n\nclass ListFilter(object):\n    title = None  # Human-readable title to appear in the right sidebar.\n    template = 'admin/filter.html'\n\n    def __init__(self, request, params, model, model_admin):\n        # This dictionary will eventually contain the request's query string\n        # parameters actually used by this filter.\n        self.used_parameters = {}\n        if self.title is None:\n            raise ImproperlyConfigured(\n                \"The list filter '%s' does not specify \"\n                \"a 'title'.\" % self.__class__.__name__)\n\n    def has_output(self):\n        \"\"\"\n        Returns True if some choices would be output for this filter.\n        \"\"\"\n        raise NotImplementedError\n\n    def choices(self, cl):\n        \"\"\"\n        Returns choices ready to be output in the template.\n        \"\"\"\n        raise NotImplementedError\n\n    def queryset(self, request, queryset):\n        \"\"\"\n        Returns the filtered queryset.\n        \"\"\"\n        raise NotImplementedError\n\n    def expected_parameters(self):\n        \"\"\"\n        Returns the list of parameter names that are expected from the\n        request's query string and that will be used by this filter.\n        \"\"\"\n        raise NotImplementedError\n\n\nclass SimpleListFilter(ListFilter):\n    # The parameter that should be used in the query string for that filter.\n    parameter_name = None\n\n    def __init__(self, request, params, model, model_admin):\n        super(SimpleListFilter, self).__init__(\n            request, params, model, model_admin)\n        if self.parameter_name is None:\n            raise ImproperlyConfigured(\n                \"The list filter '%s' does not specify \"\n                \"a 'parameter_name'.\" % self.__class__.__name__)\n        lookup_choices = self.lookups(request, model_admin)\n        if lookup_choices is None:\n            lookup_choices = ()\n        self.lookup_choices = list(lookup_choices)\n        if self.parameter_name in params:\n            value = params.pop(self.parameter_name)\n            self.used_parameters[self.parameter_name] = value\n\n    def has_output(self):\n        return len(self.lookup_choices) > 0\n\n    def value(self):\n        \"\"\"\n        Returns the value (in string format) provided in the request's\n        query string for this filter, if any. If the value wasn't provided then\n        returns None.\n        \"\"\"\n        return self.used_parameters.get(self.parameter_name, None)\n\n    def lookups(self, request, model_admin):\n        \"\"\"\n        Must be overriden to return a list of tuples (value, verbose value)\n        \"\"\"\n        raise NotImplementedError\n\n    def expected_parameters(self):\n        return [self.parameter_name]\n\n    def choices(self, cl):\n        yield {\n            'selected': self.value() is None,\n            'query_string': cl.get_query_string({}, [self.parameter_name]),\n            'display': _('All'),\n        }\n        for lookup, title in self.lookup_choices:\n            yield {\n                'selected': self.value() == force_text(lookup),\n                'query_string': cl.get_query_string({\n                    self.parameter_name: lookup,\n                }, []),\n                'display': title,\n            }\n\n\nclass FieldListFilter(ListFilter):\n    _field_list_filters = []\n    _take_priority_index = 0\n\n    def __init__(self, field, request, params, model, model_admin, field_path):\n        self.field = field\n        self.field_path = field_path\n        self.title = getattr(field, 'verbose_name', field_path)\n        super(FieldListFilter, self).__init__(\n            request, params, model, model_admin)\n        for p in self.expected_parameters():\n            if p in params:\n                value = params.pop(p)\n                self.used_parameters[p] = prepare_lookup_value(p, value)\n\n    def has_output(self):\n        return True\n\n    def queryset(self, request, queryset):\n        try:\n            return queryset.filter(**self.used_parameters)\n        except ValidationError as e:\n            raise IncorrectLookupParameters(e)\n\n    @classmethod\n    def register(cls, test, list_filter_class, take_priority=False):\n        if take_priority:\n            # This is to allow overriding the default filters for certain types\n            # of fields with some custom filters. The first found in the list\n            # is used in priority.\n            cls._field_list_filters.insert(\n                cls._take_priority_index, (test, list_filter_class))\n            cls._take_priority_index += 1\n        else:\n            cls._field_list_filters.append((test, list_filter_class))\n\n    @classmethod\n    def create(cls, field, request, params, model, model_admin, field_path):\n        for test, list_filter_class in cls._field_list_filters:\n            if not test(field):\n                continue\n            return list_filter_class(field, request, params,\n                model, model_admin, field_path=field_path)\n\n\nclass RelatedFieldListFilter(FieldListFilter):\n    def __init__(self, field, request, params, model, model_admin, field_path):\n        other_model = get_model_from_relation(field)\n        if hasattr(field, 'rel'):\n            rel_name = field.rel.get_related_field().name\n        else:\n            rel_name = other_model._meta.pk.name\n        self.lookup_kwarg = '%s__%s__exact' % (field_path, rel_name)\n        self.lookup_kwarg_isnull = '%s__isnull' % field_path\n        self.lookup_val = request.GET.get(self.lookup_kwarg, None)\n        self.lookup_val_isnull = request.GET.get(\n                                      self.lookup_kwarg_isnull, None)\n        self.lookup_choices = field.get_choices(include_blank=False)\n        super(RelatedFieldListFilter, self).__init__(\n            field, request, params, model, model_admin, field_path)\n        if hasattr(field, 'verbose_name'):\n            self.lookup_title = field.verbose_name\n        else:\n            self.lookup_title = other_model._meta.verbose_name\n        self.title = self.lookup_title\n\n    def has_output(self):\n        if (isinstance(self.field, models.related.RelatedObject)\n                and self.field.field.null or hasattr(self.field, 'rel')\n                    and self.field.null):\n            extra = 1\n        else:\n            extra = 0\n        return len(self.lookup_choices) + extra > 1\n\n    def expected_parameters(self):\n        return [self.lookup_kwarg, self.lookup_kwarg_isnull]\n\n    def choices(self, cl):\n        from django.contrib.admin.views.main import EMPTY_CHANGELIST_VALUE\n        yield {\n            'selected': self.lookup_val is None and not self.lookup_val_isnull,\n            'query_string': cl.get_query_string({},\n                [self.lookup_kwarg, self.lookup_kwarg_isnull]),\n            'display': _('All'),\n        }\n        for pk_val, val in self.lookup_choices:\n            yield {\n                'selected': self.lookup_val == smart_text(pk_val),\n                'query_string': cl.get_query_string({\n                    self.lookup_kwarg: pk_val,\n                }, [self.lookup_kwarg_isnull]),\n                'display': val,\n            }\n        if (isinstance(self.field, models.related.RelatedObject)\n                and self.field.field.null or hasattr(self.field, 'rel')\n                    and self.field.null):\n            yield {\n                'selected': bool(self.lookup_val_isnull),\n                'query_string': cl.get_query_string({\n                    self.lookup_kwarg_isnull: 'True',\n                }, [self.lookup_kwarg]),\n                'display': EMPTY_CHANGELIST_VALUE,\n            }\n\nFieldListFilter.register(lambda f: (\n        hasattr(f, 'rel') and bool(f.rel) or\n        isinstance(f, models.related.RelatedObject)), RelatedFieldListFilter)\n\n\nclass BooleanFieldListFilter(FieldListFilter):\n    def __init__(self, field, request, params, model, model_admin, field_path):\n        self.lookup_kwarg = '%s__exact' % field_path\n        self.lookup_kwarg2 = '%s__isnull' % field_path\n        self.lookup_val = request.GET.get(self.lookup_kwarg, None)\n        self.lookup_val2 = request.GET.get(self.lookup_kwarg2, None)\n        super(BooleanFieldListFilter, self).__init__(field,\n            request, params, model, model_admin, field_path)\n\n    def expected_parameters(self):\n        return [self.lookup_kwarg, self.lookup_kwarg2]\n\n    def choices(self, cl):\n        for lookup, title in (\n                (None, _('All')),\n                ('1', _('Yes')),\n                ('0', _('No'))):\n            yield {\n                'selected': self.lookup_val == lookup and not self.lookup_val2,\n                'query_string': cl.get_query_string({\n                        self.lookup_kwarg: lookup,\n                    }, [self.lookup_kwarg2]),\n                'display': title,\n            }\n        if isinstance(self.field, models.NullBooleanField):\n            yield {\n                'selected': self.lookup_val2 == 'True',\n                'query_string': cl.get_query_string({\n                        self.lookup_kwarg2: 'True',\n                    }, [self.lookup_kwarg]),\n                'display': _('Unknown'),\n            }\n\nFieldListFilter.register(lambda f: isinstance(f,\n    (models.BooleanField, models.NullBooleanField)), BooleanFieldListFilter)\n\n\nclass ChoicesFieldListFilter(FieldListFilter):\n    def __init__(self, field, request, params, model, model_admin, field_path):\n        self.lookup_kwarg = '%s__exact' % field_path\n        self.lookup_val = request.GET.get(self.lookup_kwarg)\n        super(ChoicesFieldListFilter, self).__init__(\n            field, request, params, model, model_admin, field_path)\n\n    def expected_parameters(self):\n        return [self.lookup_kwarg]\n\n    def choices(self, cl):\n        yield {\n            'selected': self.lookup_val is None,\n            'query_string': cl.get_query_string({}, [self.lookup_kwarg]),\n            'display': _('All')\n        }\n        for lookup, title in self.field.flatchoices:\n            yield {\n                'selected': smart_text(lookup) == self.lookup_val,\n                'query_string': cl.get_query_string({\n                                    self.lookup_kwarg: lookup}),\n                'display': title,\n            }\n\nFieldListFilter.register(lambda f: bool(f.choices), ChoicesFieldListFilter)\n\n\nclass DateFieldListFilter(FieldListFilter):\n    def __init__(self, field, request, params, model, model_admin, field_path):\n        self.field_generic = '%s__' % field_path\n        self.date_params = dict([(k, v) for k, v in params.items()\n                                 if k.startswith(self.field_generic)])\n\n        now = timezone.now()\n        # When time zone support is enabled, convert \"now\" to the user's time\n        # zone so Django's definition of \"Today\" matches what the user expects.\n        if timezone.is_aware(now):\n            now = timezone.localtime(now)\n\n        if isinstance(field, models.DateTimeField):\n            today = now.replace(hour=0, minute=0, second=0, microsecond=0)\n        else:       # field is a models.DateField\n            today = now.date()\n        tomorrow = today + datetime.timedelta(days=1)\n\n        self.lookup_kwarg_since = '%s__gte' % field_path\n        self.lookup_kwarg_until = '%s__lt' % field_path\n        self.links = (\n            (_('Any date'), {}),\n            (_('Today'), {\n                self.lookup_kwarg_since: str(today),\n                self.lookup_kwarg_until: str(tomorrow),\n            }),\n            (_('Past 7 days'), {\n                self.lookup_kwarg_since: str(today - datetime.timedelta(days=7)),\n                self.lookup_kwarg_until: str(tomorrow),\n            }),\n            (_('This month'), {\n                self.lookup_kwarg_since: str(today.replace(day=1)),\n                self.lookup_kwarg_until: str(tomorrow),\n            }),\n            (_('This year'), {\n                self.lookup_kwarg_since: str(today.replace(month=1, day=1)),\n                self.lookup_kwarg_until: str(tomorrow),\n            }),\n        )\n        super(DateFieldListFilter, self).__init__(\n            field, request, params, model, model_admin, field_path)\n\n    def expected_parameters(self):\n        return [self.lookup_kwarg_since, self.lookup_kwarg_until]\n\n    def choices(self, cl):\n        for title, param_dict in self.links:\n            yield {\n                'selected': self.date_params == param_dict,\n                'query_string': cl.get_query_string(\n                                    param_dict, [self.field_generic]),\n                'display': title,\n            }\n\nFieldListFilter.register(\n    lambda f: isinstance(f, models.DateField), DateFieldListFilter)\n\n\n# This should be registered last, because it's a last resort. For example,\n# if a field is eligible to use the BooleanFieldListFilter, that'd be much\n# more appropriate, and the AllValuesFieldListFilter won't get used for it.\nclass AllValuesFieldListFilter(FieldListFilter):\n    def __init__(self, field, request, params, model, model_admin, field_path):\n        self.lookup_kwarg = field_path\n        self.lookup_kwarg_isnull = '%s__isnull' % field_path\n        self.lookup_val = request.GET.get(self.lookup_kwarg, None)\n        self.lookup_val_isnull = request.GET.get(self.lookup_kwarg_isnull,\n                                                 None)\n        parent_model, reverse_path = reverse_field_path(model, field_path)\n        queryset = parent_model._default_manager.all()\n        # optional feature: limit choices base on existing relationships\n        # queryset = queryset.complex_filter(\n        #    {'%s__isnull' % reverse_path: False})\n        limit_choices_to = get_limit_choices_to_from_path(model, field_path)\n        queryset = queryset.filter(limit_choices_to)\n\n        self.lookup_choices = (queryset\n                               .distinct()\n                               .order_by(field.name)\n                               .values_list(field.name, flat=True))\n        super(AllValuesFieldListFilter, self).__init__(\n            field, request, params, model, model_admin, field_path)\n\n    def expected_parameters(self):\n        return [self.lookup_kwarg, self.lookup_kwarg_isnull]\n\n    def choices(self, cl):\n        from django.contrib.admin.views.main import EMPTY_CHANGELIST_VALUE\n        yield {\n            'selected': (self.lookup_val is None\n                and self.lookup_val_isnull is None),\n            'query_string': cl.get_query_string({},\n                [self.lookup_kwarg, self.lookup_kwarg_isnull]),\n            'display': _('All'),\n        }\n        include_none = False\n        for val in self.lookup_choices:\n            if val is None:\n                include_none = True\n                continue\n            val = smart_text(val)\n            yield {\n                'selected': self.lookup_val == val,\n                'query_string': cl.get_query_string({\n                    self.lookup_kwarg: val,\n                }, [self.lookup_kwarg_isnull]),\n                'display': val,\n            }\n        if include_none:\n            yield {\n                'selected': bool(self.lookup_val_isnull),\n                'query_string': cl.get_query_string({\n                    self.lookup_kwarg_isnull: 'True',\n                }, [self.lookup_kwarg]),\n                'display': EMPTY_CHANGELIST_VALUE,\n            }\n\nFieldListFilter.register(lambda f: True, AllValuesFieldListFilter)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/forms.py",
    "content": "from __future__ import unicode_literals\n\nfrom django import forms\n\nfrom django.contrib.auth import authenticate\nfrom django.contrib.auth.forms import AuthenticationForm\nfrom django.utils.translation import ugettext_lazy\n\nERROR_MESSAGE = ugettext_lazy(\"Please enter the correct %(username)s and password \"\n        \"for a staff account. Note that both fields may be case-sensitive.\")\n\n\nclass AdminAuthenticationForm(AuthenticationForm):\n    \"\"\"\n    A custom authentication form used in the admin app.\n\n    \"\"\"\n    this_is_the_login_form = forms.BooleanField(widget=forms.HiddenInput, initial=1,\n        error_messages={'required': ugettext_lazy(\"Please log in again, because your session has expired.\")})\n\n    def clean(self):\n        username = self.cleaned_data.get('username')\n        password = self.cleaned_data.get('password')\n        message = ERROR_MESSAGE\n\n        if username and password:\n            self.user_cache = authenticate(username=username, password=password)\n            if self.user_cache is None:\n                raise forms.ValidationError(message % {\n                    'username': self.username_field.verbose_name\n                })\n            elif not self.user_cache.is_active or not self.user_cache.is_staff:\n                raise forms.ValidationError(message % {\n                    'username': self.username_field.verbose_name\n                })\n        self.check_for_test_cookie()\n        return self.cleaned_data\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/helpers.py",
    "content": "from __future__ import unicode_literals\n\nfrom django import forms\nfrom django.contrib.admin.util import (flatten_fieldsets, lookup_field,\n    display_for_field, label_for_field, help_text_for_field)\nfrom django.contrib.admin.templatetags.admin_static import static\nfrom django.contrib.contenttypes.models import ContentType\nfrom django.core.exceptions import ObjectDoesNotExist\nfrom django.db.models.fields.related import ManyToManyRel\nfrom django.forms.util import flatatt\nfrom django.template.defaultfilters import capfirst\nfrom django.utils.encoding import force_text, smart_text\nfrom django.utils.html import conditional_escape, format_html\nfrom django.utils.safestring import mark_safe\nfrom django.utils import six\nfrom django.utils.translation import ugettext_lazy as _\nfrom django.conf import settings\n\n\nACTION_CHECKBOX_NAME = '_selected_action'\n\nclass ActionForm(forms.Form):\n    action = forms.ChoiceField(label=_('Action:'))\n    select_across = forms.BooleanField(label='', required=False, initial=0,\n        widget=forms.HiddenInput({'class': 'select-across'}))\n\ncheckbox = forms.CheckboxInput({'class': 'action-select'}, lambda value: False)\n\nclass AdminForm(object):\n    def __init__(self, form, fieldsets, prepopulated_fields, readonly_fields=None, model_admin=None):\n        self.form, self.fieldsets = form, normalize_fieldsets(fieldsets)\n        self.prepopulated_fields = [{\n            'field': form[field_name],\n            'dependencies': [form[f] for f in dependencies]\n        } for field_name, dependencies in prepopulated_fields.items()]\n        self.model_admin = model_admin\n        if readonly_fields is None:\n            readonly_fields = ()\n        self.readonly_fields = readonly_fields\n\n    def __iter__(self):\n        for name, options in self.fieldsets:\n            yield Fieldset(self.form, name,\n                readonly_fields=self.readonly_fields,\n                model_admin=self.model_admin,\n                **options\n            )\n\n    def first_field(self):\n        try:\n            fieldset_name, fieldset_options = self.fieldsets[0]\n            field_name = fieldset_options['fields'][0]\n            if not isinstance(field_name, six.string_types):\n                field_name = field_name[0]\n            return self.form[field_name]\n        except (KeyError, IndexError):\n            pass\n        try:\n            return next(iter(self.form))\n        except StopIteration:\n            return None\n\n    def _media(self):\n        media = self.form.media\n        for fs in self:\n            media = media + fs.media\n        return media\n    media = property(_media)\n\nclass Fieldset(object):\n    def __init__(self, form, name=None, readonly_fields=(), fields=(), classes=(),\n      description=None, model_admin=None):\n        self.form = form\n        self.name, self.fields = name, fields\n        self.classes = ' '.join(classes)\n        self.description = description\n        self.model_admin = model_admin\n        self.readonly_fields = readonly_fields\n\n    def _media(self):\n        if 'collapse' in self.classes:\n            extra = '' if settings.DEBUG else '.min'\n            js = ['jquery%s.js' % extra,\n                  'jquery.init.js',\n                  'collapse%s.js' % extra]\n            return forms.Media(js=[static('admin/js/%s' % url) for url in js])\n        return forms.Media()\n    media = property(_media)\n\n    def __iter__(self):\n        for field in self.fields:\n            yield Fieldline(self.form, field, self.readonly_fields, model_admin=self.model_admin)\n\nclass Fieldline(object):\n    def __init__(self, form, field, readonly_fields=None, model_admin=None):\n        self.form = form # A django.forms.Form instance\n        if not hasattr(field, \"__iter__\") or isinstance(field, six.text_type):\n            self.fields = [field]\n        else:\n            self.fields = field\n        self.model_admin = model_admin\n        if readonly_fields is None:\n            readonly_fields = ()\n        self.readonly_fields = readonly_fields\n\n    def __iter__(self):\n        for i, field in enumerate(self.fields):\n            if field in self.readonly_fields:\n                yield AdminReadonlyField(self.form, field, is_first=(i == 0),\n                    model_admin=self.model_admin)\n            else:\n                yield AdminField(self.form, field, is_first=(i == 0))\n\n    def errors(self):\n        return mark_safe('\\n'.join([self.form[f].errors.as_ul() for f in self.fields if f not in self.readonly_fields]).strip('\\n'))\n\nclass AdminField(object):\n    def __init__(self, form, field, is_first):\n        self.field = form[field] # A django.forms.BoundField instance\n        self.is_first = is_first # Whether this field is first on the line\n        self.is_checkbox = isinstance(self.field.field.widget, forms.CheckboxInput)\n\n    def label_tag(self):\n        classes = []\n        contents = conditional_escape(force_text(self.field.label))\n        if self.is_checkbox:\n            classes.append('vCheckboxLabel')\n        else:\n            contents += ':'\n        if self.field.field.required:\n            classes.append('required')\n        if not self.is_first:\n            classes.append('inline')\n        attrs = classes and {'class': ' '.join(classes)} or {}\n        return self.field.label_tag(contents=mark_safe(contents), attrs=attrs)\n\n    def errors(self):\n        return mark_safe(self.field.errors.as_ul())\n\nclass AdminReadonlyField(object):\n    def __init__(self, form, field, is_first, model_admin=None):\n        label = label_for_field(field, form._meta.model, model_admin)\n        # Make self.field look a little bit like a field. This means that\n        # {{ field.name }} must be a useful class name to identify the field.\n        # For convenience, store other field-related data here too.\n        if callable(field):\n            class_name = field.__name__ != '<lambda>' and field.__name__ or ''\n        else:\n            class_name = field\n        self.field = {\n            'name': class_name,\n            'label': label,\n            'field': field,\n            'help_text': help_text_for_field(class_name, form._meta.model)\n        }\n        self.form = form\n        self.model_admin = model_admin\n        self.is_first = is_first\n        self.is_checkbox = False\n        self.is_readonly = True\n\n    def label_tag(self):\n        attrs = {}\n        if not self.is_first:\n            attrs[\"class\"] = \"inline\"\n        label = self.field['label']\n        return format_html('<label{0}>{1}:</label>',\n                           flatatt(attrs),\n                           capfirst(force_text(label)))\n\n    def contents(self):\n        from django.contrib.admin.templatetags.admin_list import _boolean_icon\n        from django.contrib.admin.views.main import EMPTY_CHANGELIST_VALUE\n        field, obj, model_admin = self.field['field'], self.form.instance, self.model_admin\n        try:\n            f, attr, value = lookup_field(field, obj, model_admin)\n        except (AttributeError, ValueError, ObjectDoesNotExist):\n            result_repr = EMPTY_CHANGELIST_VALUE\n        else:\n            if f is None:\n                boolean = getattr(attr, \"boolean\", False)\n                if boolean:\n                    result_repr = _boolean_icon(value)\n                else:\n                    result_repr = smart_text(value)\n                    if getattr(attr, \"allow_tags\", False):\n                        result_repr = mark_safe(result_repr)\n            else:\n                if isinstance(f.rel, ManyToManyRel) and value is not None:\n                    result_repr = \", \".join(map(six.text_type, value.all()))\n                else:\n                    result_repr = display_for_field(value, f)\n        return conditional_escape(result_repr)\n\nclass InlineAdminFormSet(object):\n    \"\"\"\n    A wrapper around an inline formset for use in the admin system.\n    \"\"\"\n    def __init__(self, inline, formset, fieldsets, prepopulated_fields=None,\n            readonly_fields=None, model_admin=None):\n        self.opts = inline\n        self.formset = formset\n        self.fieldsets = fieldsets\n        self.model_admin = model_admin\n        if readonly_fields is None:\n            readonly_fields = ()\n        self.readonly_fields = readonly_fields\n        if prepopulated_fields is None:\n            prepopulated_fields = {}\n        self.prepopulated_fields = prepopulated_fields\n\n    def __iter__(self):\n        for form, original in zip(self.formset.initial_forms, self.formset.get_queryset()):\n            yield InlineAdminForm(self.formset, form, self.fieldsets,\n                self.prepopulated_fields, original, self.readonly_fields,\n                model_admin=self.opts)\n        for form in self.formset.extra_forms:\n            yield InlineAdminForm(self.formset, form, self.fieldsets,\n                self.prepopulated_fields, None, self.readonly_fields,\n                model_admin=self.opts)\n        yield InlineAdminForm(self.formset, self.formset.empty_form,\n            self.fieldsets, self.prepopulated_fields, None,\n            self.readonly_fields, model_admin=self.opts)\n\n    def fields(self):\n        fk = getattr(self.formset, \"fk\", None)\n        for i, field in enumerate(flatten_fieldsets(self.fieldsets)):\n            if fk and fk.name == field:\n                continue\n            if field in self.readonly_fields:\n                yield {\n                    'label': label_for_field(field, self.opts.model, self.opts),\n                    'widget': {\n                        'is_hidden': False\n                    },\n                    'required': False\n                }\n            else:\n                yield self.formset.form.base_fields[field]\n\n    def _media(self):\n        media = self.opts.media + self.formset.media\n        for fs in self:\n            media = media + fs.media\n        return media\n    media = property(_media)\n\nclass InlineAdminForm(AdminForm):\n    \"\"\"\n    A wrapper around an inline form for use in the admin system.\n    \"\"\"\n    def __init__(self, formset, form, fieldsets, prepopulated_fields, original,\n      readonly_fields=None, model_admin=None):\n        self.formset = formset\n        self.model_admin = model_admin\n        self.original = original\n        if original is not None:\n            self.original_content_type_id = ContentType.objects.get_for_model(original).pk\n        self.show_url = original and hasattr(original, 'get_absolute_url')\n        super(InlineAdminForm, self).__init__(form, fieldsets, prepopulated_fields,\n            readonly_fields, model_admin)\n\n    def __iter__(self):\n        for name, options in self.fieldsets:\n            yield InlineFieldset(self.formset, self.form, name,\n                self.readonly_fields, model_admin=self.model_admin, **options)\n\n    def has_auto_field(self):\n        if self.form._meta.model._meta.has_auto_field:\n            return True\n        # Also search any parents for an auto field.\n        for parent in self.form._meta.model._meta.get_parent_list():\n            if parent._meta.has_auto_field:\n                return True\n        return False\n\n    def field_count(self):\n        # tabular.html uses this function for colspan value.\n        num_of_fields = 0\n        if self.has_auto_field():\n            num_of_fields += 1\n        num_of_fields += len(self.fieldsets[0][1][\"fields\"])\n        if self.formset.can_order:\n            num_of_fields += 1\n        if self.formset.can_delete:\n            num_of_fields += 1\n        return num_of_fields\n\n    def pk_field(self):\n        return AdminField(self.form, self.formset._pk_field.name, False)\n\n    def fk_field(self):\n        fk = getattr(self.formset, \"fk\", None)\n        if fk:\n            return AdminField(self.form, fk.name, False)\n        else:\n            return \"\"\n\n    def deletion_field(self):\n        from django.forms.formsets import DELETION_FIELD_NAME\n        return AdminField(self.form, DELETION_FIELD_NAME, False)\n\n    def ordering_field(self):\n        from django.forms.formsets import ORDERING_FIELD_NAME\n        return AdminField(self.form, ORDERING_FIELD_NAME, False)\n\nclass InlineFieldset(Fieldset):\n    def __init__(self, formset, *args, **kwargs):\n        self.formset = formset\n        super(InlineFieldset, self).__init__(*args, **kwargs)\n\n    def __iter__(self):\n        fk = getattr(self.formset, \"fk\", None)\n        for field in self.fields:\n            if fk and fk.name == field:\n                continue\n            yield Fieldline(self.form, field, self.readonly_fields,\n                model_admin=self.model_admin)\n\nclass AdminErrorList(forms.util.ErrorList):\n    \"\"\"\n    Stores all errors for the form/formsets in an add/change stage view.\n    \"\"\"\n    def __init__(self, form, inline_formsets):\n        if form.is_bound:\n            self.extend(list(six.itervalues(form.errors)))\n            for inline_formset in inline_formsets:\n                self.extend(inline_formset.non_form_errors())\n                for errors_in_inline_form in inline_formset.errors:\n                    self.extend(list(six.itervalues(errors_in_inline_form)))\n\ndef normalize_fieldsets(fieldsets):\n    \"\"\"\n    Make sure the keys in fieldset dictionaries are strings. Returns the\n    normalized data.\n    \"\"\"\n    result = []\n    for name, options in fieldsets:\n        result.append((name, normalize_dictionary(options)))\n    return result\n\ndef normalize_dictionary(data_dict):\n    \"\"\"\n    Converts all the keys in \"data_dict\" to strings. The keys must be\n    convertible using str().\n    \"\"\"\n    for key, value in data_dict.items():\n        if not isinstance(key, str):\n            del data_dict[key]\n            data_dict[str(key)] = value\n    return data_dict\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/af/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Christopher Penkin <chris.penkin@gmail.com>, 2012.\n# Piet Delport <pjdelport@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:52+0000\\n\"\n\"Last-Translator: Ramiro Morales <cramm0@gmail.com>\\n\"\n\"Language-Team: Afrikaans (http://www.transifex.com/projects/p/django/\"\n\"language/af/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: af\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"Het %(count)d %(items)s suksesvol geskrap.\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"Kan %(name)s nie skrap nie\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"Is jy seker?\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"Skrap gekose %(verbose_name_plural)s\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"Alles\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"Ja\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"Geen\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"Onbekend\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"Enige datum\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"Vandag\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"Vorige 7 dae\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"Hierdie maand\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"Hierdie jaar\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"Teken asseblief weer in, want jou sessie het verstryk.\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"Aksie:\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"aksie tyd\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"objek id\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"objek repr\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"aksie vlag\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"verandering boodskap\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"Het \\\"%(object)s\\\" bygevoeg.\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"Het \\\"%(object)s\\\" verander - %(changes)s\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"Het \\\"%(object)s\\\" geskrap.\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"None\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"Het %s verander.\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"en\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Het %(name)s \\\"%(object)s\\\" bygevoeg.\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Het %(list)s vir %(name)s \\\"%(object)s\\\" verander.\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Het %(name)s \\\"%(object)s\\\" geskrap.\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"Geen velde verander nie.\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"\"\n\"Die %(name)s \\\"%(obj)s\\\" was suksesvol verander. Jy mag dit weereens \"\n\"hieronder wysig.\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"Die %(name)s \\\"%(obj)s\\\" was suksesvol bygevoeg.\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"Die %(name)s \\\"%(obj)s\\\" was suksesvol verander.\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\"Items moet gekies word om aksies op hulle uit te voer. Geen items is \"\n\"verander.\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"Geen aksie gekies nie.\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"Voeg %s by\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"%(name)s voorwerp met primêre sleutel %(key)r bestaan ​​nie.\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"Verander %s\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"Databasis fout\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"%(count)s %(name)s was suksesvol verander.\"\nmsgstr[1] \"%(count)s %(name)s  was suksesvol verander.\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"%(total_count)s gekies\"\nmsgstr[1] \"Al %(total_count)s gekies\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"0 uit %(cnt)s gekies\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"Die %(name)s \\\"%(obj)s\\\" was suksesvol geskrap.\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"Verander geskiedenis: %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"Teken in\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"Werf administrasie\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"%s administrasie\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"Datum:\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"Tyd:\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"Soek\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"Voeg nog een by\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"Bladsy nie gevind nie\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"Ons is jammer, maar die aangevraagde bladsy kon nie gevind word nie.\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"Tuisblad\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"Bedienerfout\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"Bedienerfout (500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"Bedienerfout <em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"Hardloop die gekose aksie\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"Gaan\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"Kliek hier om die objekte oor alle bladsye te kies.\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"Kies al %(total_count)s %(module_name)s\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"Verwyder keuses\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"Welkom,\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"Dokumentasie\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"Verander wagwoord\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"Teken uit\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"Django werf admin\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"Django administrasie\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"Voeg by\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"Geskiedenis\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"Bekyk op werf\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"Korrigeer asseblief die fout hieronder.\"\nmsgstr[1] \"Korrigeer asseblief die foute hieronder.\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"Voeg %(name)s by\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"Filter\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"Verwyder van sortering\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"Sortering prioriteit: %(priority_number)s\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"Wissel sortering\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"Skrap\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\"Om die %(object_name)s '%(escaped_object)s' te skrap sou vereis dat die \"\n\"volgende beskermde verwante objekte geskrap word:\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"Ja, ek is seker\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"Skrap meerdere objekte\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\"Om die gekose %(objects_name)s te skrap sou verwante objekte skrap, maar jou \"\n\"rekening het nie toestemming om die volgende tipes objekte te skrap nie:\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\"Om die gekose %(objects_name)s te skrap veries dat die volgende beskermde \"\n\"verwante objekte geskrap word:\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\"Is jy seker jy wil die gekose %(objects_name)s skrap? Al die volgende \"\n\"objekte en hul verwante items sal geskrap word:\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \"Deur %(filter_title)s\"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"Verander\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"Jy het nie toestemming om enigiets te wysig nie.\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"Onlangse Aksies\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"My Aksies\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"Niks beskikbaar nie\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"Onbekend inhoud\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"Wagwoord:\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"Wagwoord of gebruikersnaam vergeet?\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"Datum/tyd\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"Gebruiker\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"Aksie\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\"Hierdie item het nie 'n veranderingsgeskiedenis nie. Dit was waarskynlik nie \"\n\"deur middel van hierdie admin werf bygevoeg nie.\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"Wys alle\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"Stoor\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"Soek\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"%(counter)s resultaat\"\nmsgstr[1] \"%(counter)s resultate\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"%(full_result_count)s in totaal\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"Stoor as nuwe\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"Stoor en voeg 'n ander by\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"Stoor en wysig verder\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\"Vul eers 'n gebruikersnaam en wagwoord in. Dan sal jy in staat wees om meer \"\n\"gebruikersopsies te wysig.\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"Vul 'n gebruikersnaam en wagwoord in.\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"Vul 'n nuwe wagwoord vir gebruiker <strong>%(username)s</strong> in.\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"Wagwoord\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"Wagwoord (weer)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Vul dieselfde wagwoord in as hierbo, for bevestiging.\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"Verwyder\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"Voeg nog 'n %(verbose_name)s by\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"Skrap?\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"Teken weer in\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"Wagwoord verandering\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"Wagwoord verandering suksesvol\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"Jou wagwoord was verander.\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"Tik jou ou wagwoord, ter wille van sekuriteit's, en dan 'n nuwe wagwoord \"\n\"twee keer so dat ons kan seker wees dat jy dit korrek ingetik het.\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"Ou wagwoord\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"Nuwe wagwoord\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"Verander my wagwoord\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"Wagwoord herstel\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"Wagwoord herstel voltooi\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"Jou wagwoord is gestel. Jy kan nou voort gaan en aanteken.\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"Wagwoord herstel bevestiging\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"Vul 'n nuwe wagwoord in\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"\"\n\"Tik jou nuwe wagwoord twee keer in so ons kan seker wees dat jy dit korrek \"\n\"ingetik het.\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"Nuwe wagwoord:\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"Bevestig wagwoord:\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"Wagwoord herstel onsuksesvol\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"Wagwoord herstel suksesvol\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"Gaan asseblief na die volgende bladsy en kies 'n nuwe wagwoord:\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"Jou gebruikersnaam, in geval jy vergeet het:\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"Dankie vir die gebruik van ons webwerf!\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"Die %(site_name)s span\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"Herstel my wagwoord\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"Alle datums\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"(Geen)\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"Kies %s\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"Kies %s om te verander\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/af/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Translators:\n# Piet Delport <pjdelport@gmail.com>, 2013.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2013-03-26 06:30+0000\\n\"\n\"Last-Translator: Piet Delport <pjdelport@gmail.com>\\n\"\n\"Language-Team: Afrikaans (http://www.transifex.com/projects/p/django/\"\n\"language/af/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: af\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"Beskikbaar %s\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"Filter\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"Kies alle\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"Kies\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"Verwyder alle\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"Wys\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"Versteek\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"Nou\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"Klok\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"Kies 'n tyd\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"Middernag\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"6 v.m.\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"Middag\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"Kanselleer\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"Vandag\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"Kalender\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"Gister\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"Môre\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/ar/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Ossama Khayat <okhayat@gmail.com>, 2011-2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:52+0000\\n\"\n\"Last-Translator: Ossama Khayat <okhayat@gmail.com>\\n\"\n\"Language-Team: Arabic (http://www.transifex.com/projects/p/django/language/\"\n\"ar/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ar\\n\"\n\"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 \"\n\"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"تم حذف %(count)d %(items)s بنجاح.\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"لا يمكن حذف %(name)s\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"هل أنت متأكد؟\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"حذف سجلات %(verbose_name_plural)s المحددة\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"الكل\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"نعم\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"لا\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"مجهول\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"أي تاريخ\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"اليوم\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"الأيام السبعة الماضية\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"هذا الشهر\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"هذه السنة\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"رجاءً ادخل مرةً أخرى لأن جلستك انتهت.\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"إجراء:\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"وقت الإجراء\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"معرف العنصر\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"ممثل العنصر\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"علامة الإجراء\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"غيّر الرسالة\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"مُدخل السجل\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"مُدخلات السجل\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"تم إضافة العناصر \\\"%(object)s\\\".\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"تم تعديل العناصر \\\"%(object)s\\\" - %(changes)s\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"تم حذف العناصر \\\"%(object)s.\\\"\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"كائن LogEntry\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"لاشيء\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"عدّل %s.\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"و\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"أضاف %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"غيّر %(list)s في %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"حذف %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"لم يتم تغيير أية حقول.\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"تمت إضافة %(name)s \\\"%(obj)s\\\" بنجاح، يمكنك تعديله مرة أخرى بالأسفل.\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"تم اضافة %(name)s \\\"%(obj)s\\\" بنجاح.\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"تم تغيير %(name)s \\\"%(obj)s\\\" بنجاح.\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"يجب تحديد العناصر لتطبيق الإجراءات عليها. لم يتم تغيير أية عناصر.\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"لم يحدد أي إجراء.\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"أضف %s\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"العنصر %(name)s الذي به الحقل الأساسي %(key)r غير موجود.\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"عدّل %s\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"خطـأ في قاعدة البيانات\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"لم يتم تغيير أي شيء\"\nmsgstr[1] \"تم تغيير %(count)s %(name)s بنجاح.\"\nmsgstr[2] \"تم تغيير %(count)s %(name)s بنجاح.\"\nmsgstr[3] \"تم تغيير %(count)s %(name)s بنجاح.\"\nmsgstr[4] \"تم تغيير %(count)s %(name)s بنجاح.\"\nmsgstr[5] \"تم تغيير %(count)s %(name)s بنجاح.\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"لم يتم تحديد أي شيء\"\nmsgstr[1] \"تم تحديد %(total_count)s\"\nmsgstr[2] \"تم تحديد %(total_count)s\"\nmsgstr[3] \"تم تحديد %(total_count)s\"\nmsgstr[4] \"تم تحديد %(total_count)s\"\nmsgstr[5] \"تم تحديد %(total_count)s\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"لا شيء محدد من %(cnt)s\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"تم حذف %(name)s \\\"%(obj)s\\\" بنجاح.\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"تاريخ التغيير: %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"ادخل\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"إدارة الموقع\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"إدارة %s\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"التاريخ:\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"الوقت:\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"ابحث\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"أضف آخر\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"حالياً:\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"تغيير:\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"تعذر العثور على الصفحة\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"نحن آسفون، لكننا لم نعثر على الصفحة المطلوبة.\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"الرئيسية\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"خطأ في المزود\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"خطأ في المزود (500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"خطأ في المزود <em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"نفذ الإجراء المحدّد\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"نفّذ\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"اضغط هنا لتحديد جميع العناصر في جميع الصفحات\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"اختيار %(total_count)s %(module_name)s جميعها\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"إزالة الاختيار\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"أهلا، \"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"الوثائق\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"غيّر كلمة المرور\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"اخرج\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"إدارة موقع جانغو\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"إدارة جانغو\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"أضف\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"تاريخ\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"مشاهدة على الموقع\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"الرجاء تصحيح الخطأ أدناه.\"\nmsgstr[1] \"الرجاء تصحيح الخطأ أدناه.\"\nmsgstr[2] \"الرجاء تصحيح الخطأين أدناه.\"\nmsgstr[3] \"الرجاء تصحيح الأخطاء أدناه.\"\nmsgstr[4] \"الرجاء تصحيح الخطأ أدناه.\"\nmsgstr[5] \"الرجاء تصحيح الخطأ أدناه.\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"أضف %(name)s\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"مرشّح\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"إزالة من الترتيب\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"أولوية الترتيب: %(priority_number)s\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"عكس الترتيب\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"احذف\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"حذف العنصر %(object_name)s '%(escaped_object)s' سيتسبب بحذف العناصر المرتبطة \"\n\"به، إلا أنك لا تملك صلاحية حذف العناصر التالية:\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\"حذف %(object_name)s '%(escaped_object)s' سيتسبب أيضاً بحذف العناصر المرتبطة، \"\n\"إلا أن حسابك ليس لديه صلاحية حذف أنواع العناصر التالية:\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\"متأكد أنك تريد حذف العنصر %(object_name)s \\\"%(escaped_object)s\\\"؟ سيتم حذف \"\n\"جميع العناصر التالية المرتبطة به:\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"نعم، أنا متأكد\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"حذف عدّة عناصر\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\"حذف عناصر %(objects_name)s المُحدّدة سيتسبب بحذف العناصر المرتبطة، إلا أن \"\n\"حسابك ليس له صلاحية حذف أنواع العناصر التالية:\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\"حذف عناصر %(objects_name)s المحدّدة قد يتطلب حذف العناصر المحميّة المرتبطة \"\n\"التالية:\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\"أأنت متأكد أنك تريد حذف عناصر %(objects_name)s المحددة؟ جميع العناصر التالية \"\n\"والعناصر المرتبطة بها سيتم حذفها:\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \" حسب %(filter_title)s \"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"عدّل\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"ليست لديك الصلاحية لتعديل أي شيء.\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"آخر الإجراءات\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"إجراءاتي\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"لا يوجد\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"مُحتوى مجهول\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"هنالك أمر خاطئ في تركيب قاعدة بياناتك، تأكد من أنه تم انشاء جداول قاعدة \"\n\"البيانات الملائمة، وأن قاعدة البيانات قابلة للقراءة من قبل المستخدم الملائم.\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"كلمة المرور:\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"نسيت كلمة السر أو اسم المستخدم الخاص بك؟\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"التاريخ/الوقت\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"المستخدم\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"إجراء\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\"ليس لهذا العنصر سجلّ تغييرات، على الأغلب أنه لم يُنشأ من خلال نظام إدارة \"\n\"الموقع.\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"أظهر الكل\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"احفظ\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"ابحث\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"لا نتائج\"\nmsgstr[1] \"نتيجة واحدة\"\nmsgstr[2] \"نتيجتان\"\nmsgstr[3] \"%(counter)s نتائج\"\nmsgstr[4] \"%(counter)s نتيجة\"\nmsgstr[5] \"%(counter)s نتيجة\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"المجموع %(full_result_count)s\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"احفظ كجديد\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"احفظ وأضف آخر\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"احفظ واستمر بالتعديل\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\"أولاً، أدخل اسم مستخدم وكلمة مرور. ومن ثم تستطيع تعديل المزيد من خيارات \"\n\"المستخدم.\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"أدخل اسم مستخدم وكلمة مرور.\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"أدخل كلمة مرور جديدة للمستخدم <strong>%(username)s</strong>.\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"كلمة المرور\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"كلمة المرور (مجدداً)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"أدخل كلمة المرور ذاتها التي أعلاه لتأكيدها.\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"أزل\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"إضافة سجل %(verbose_name)s آخر\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"احذفه؟\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"شكراً لك على قضائك بعض الوقت مع الموقع اليوم.\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"ادخل مجدداً\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"غيّر كلمة مرورك\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"تم تغيير كلمة المرور بنجاح\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"تمّ تغيير كلمة مرورك.\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"رجاءً أدخل كلمة مرورك القديمة، للأمان، ثم أدخل كلمة مرور الجديدة مرتين كي \"\n\"تتأكّد من كتابتها بشكل صحيح.\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"كلمة المرور القديمة\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"كلمة المرور الجديدة\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"غيّر كلمة مروري\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"استعادة كلمة المرور\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"تم استعادة كلمة المرور\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"تم تعيين كلمة مرورك. يمكن الاستمرار وتسجيل دخولك الآن.\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"تأكيد استعادة كلمة المرور\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"أدخل كلمة المرور الجديدة\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"رجاءً أدخل كلمة مرورك الجديدة مرتين كي تتأكّد من كتابتها بشكل صحيح.\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"كلمة المرور الجديدة:\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"أكّد كلمة المرور:\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"تم إعادة تعيين كلمة المرور بنجاح\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\"رابط استعادة كلمة المرور غير صحيح، ربما لأنه استُخدم من قبل. رجاءً اطلب \"\n\"استعادة كلمة المرور مرة أخرى.\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"تم إعادة ضبط كلمة المرور بنجاح\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"رجاءً اذهب إلى الصفحة التالية واختر كلمة مرور جديدة:\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"اسم المستخدم الخاص بك، في حال كنت قد نسيته:\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"شكراً لاستخدامك موقعنا!\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"فريق %(site_name)s\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"عنوان البريد الإلكتروني:\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"استعد كلمة مروري\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"كافة التواريخ\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"(لاشيء)\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"اختر %s\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"اختر %s لتغييره\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/ar/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Ossama Khayat <okhayat@gmail.com>, 2011-2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-11-27 17:05+0000\\n\"\n\"Last-Translator: Ossama Khayat <okhayat@gmail.com>\\n\"\n\"Language-Team: Arabic (http://www.transifex.com/projects/p/django/language/\"\n\"ar/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ar\\n\"\n\"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 \"\n\"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"%s المتوفرة\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"هذه قائمة %s المتوفرة. يمكنك اختيار بعضها بانتقائها في الصندوق أدناه ثم \"\n\"الضغط على سهم الـ\\\"اختيار\\\" بين الصندوقين.\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"اكتب في هذا الصندوق لتصفية قائمة %s المتوفرة.\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"انتقاء\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"اختر الكل\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"اضغط لاختيار جميع %s جملة واحدة.\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"اختيار\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"احذف\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"%s المُختارة\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"هذه قائمة %s المحددة. يمكنك إزالة بعضها باختيارها في الصندوق أدناه ثم اضغط \"\n\"على سهم الـ\\\"إزالة\\\" بين الصندوقين.\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"إزالة الكل\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"اضغط لإزالة جميع %s المحددة جملة واحدة.\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"لا شي محدد\"\nmsgstr[1] \"%(sel)s من %(cnt)s محدد\"\nmsgstr[2] \"%(sel)s من %(cnt)s محدد\"\nmsgstr[3] \"%(sel)s من %(cnt)s محددة\"\nmsgstr[4] \"%(sel)s من %(cnt)s محدد\"\nmsgstr[5] \"%(sel)s من %(cnt)s محدد\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\"لديك تعديلات غير محفوظة على بعض الحقول القابلة للتعديل. إن نفذت أي إجراء \"\n\"فسوف تخسر تعديلاتك.\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\"اخترت إجراءً لكن دون أن تحفظ تغييرات التي قمت بها. رجاء اضغط زر الموافقة \"\n\"لتحفظ تعديلاتك. ستحتاج إلى إعادة تنفيذ الإجراء.\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"اخترت إجراءً دون تغيير أي حقل. لعلك تريد زر التنفيذ بدلاً من زر الحفظ.\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"\"\n\"يناير فبراير مارس إبريل مايو يونيو يوليو أغسطس سبتمبر أكتوبر نوفمبر ديسمبر\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"أ إ ث أ خ ج س\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"أظهر\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"اخف\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"الآن\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"الساعة\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"اختر وقتاً\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"منتصف الليل\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"6 ص.\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"الظهر\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"ألغ\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"اليوم\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"التقويم\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"أمس\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"غداً\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/az/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Ali Ismayilov <ali@ismailov.info>, 2011-2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:52+0000\\n\"\n\"Last-Translator: Ramiro Morales <cramm0@gmail.com>\\n\"\n\"Language-Team: Azerbaijani (http://www.transifex.com/projects/p/django/\"\n\"language/az/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: az\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"%(count)d %(items)s uğurla silindi.\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"%(name)s silinmir\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"Əminsiniz?\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"Seçilmiş %(verbose_name_plural)s-ləri sil\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"Hamısı\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"Hə\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"Yox\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"Bilinmir\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"İstənilən tarix\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"Bu gün\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"Son 7 gündə\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"Bu ay\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"Bu il\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"Yenidən daxil olun, çünki seansın vaxtı bitmişdir.\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"Əməliyyat:\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"əməliyyat vaxtı\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"obyekt id\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"obyekt repr\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"bayraq\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"dəyişmə mesajı\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"loq yazısı\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"loq yazıları\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"\\\"%(object)s\\\" əlavə olundu.\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"\\\"%(object)s\\\" - %(changes)s dəyişiklikləri qeydə alındı.\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"\\\"%(object)s\\\" silindi.\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"LogEntry obyekti\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"Heç nə\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"%s dəyişdi.\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"və\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"%(name)s \\\"%(object)s\\\" əlavə olundu.\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \" %(list)s %(name)s \\\"%(object)s\\\" üçün dəyişdi.\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"%(name)s \\\"%(object)s\\\" siyahısından silindi.\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"Heç bir sahə dəyişmədi.\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" siyahısına uğurla əlavə olundu. Yenə onu aşağıda \"\n\"redaktə edə bilərsiniz.\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" siyahısına uğurla əlavə edildi.\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" siyahısında uğurla dəyişdirildi.\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\"Biz elementlər üzərində nəsə əməliyyat aparmaq üçün siz onları seçməlisiniz. \"\n\"Heç bir element dəyişmədi.\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"Heç bir əməliyyat seçilmədi.\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"%s əlavə et\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"%(key)r əsas açarı ilə %(name)s mövcud deyil.\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"%s dəyiş\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"Bazada xəta\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"%(count)s %(name)s uğurla dəyişdirildi.\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"%(total_count)s - hamısı seçilib\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"%(cnt)s-dan 0 seçilib\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" uğurla silindi.\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"Dəyişmə tarixi: %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"Daxil ol\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"Sayt administrasiyası\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"%s administrasiyası\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"Tarix:\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"Vaxt:\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"Sorğu\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"Yenisini əlavə et\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"Səhifə tapılmadı\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"Üzrlər, amma soruşduğunuz sayt tapılmadı.\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"Ev\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"Serverdə xəta\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"Serverdə xəta (500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"Serverdə xəta <em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\"Xəta baş verdi. Sayt administratorlarına e-poçt göndərildi və onlar xəta ilə \"\n\"tezliklə məşğul olacaqlar. Səbrli olun.\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"Seçdiyim əməliyyatı yerinə yetir\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"Getdik\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"Bütün səhifələr üzrə obyektləri seçmək üçün bura tıqlayın\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"Bütün %(total_count)s sayda %(module_name)s seç\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"Seçimi təmizlə\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"Xoş gördük,\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"Sənədləşdirmə\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"Parolu dəyiş\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"Çıx\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"Django sayt administratoru\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"Django administrasiya\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"Əlavə et\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"Tarix\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"Saytda göstər\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"\"\n\"one: Aşağıdakı səhvi düzəltməyi xahiş edirik.\\n\"\n\"other: Aşağıdakı səhvləri düzəltməyi xahiş edirik.\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"%(name)s əlavə et\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"Süzgəc\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"Sıralamadan çıxar\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"Sıralama prioriteti: %(priority_number)s\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"Sıralamanı çevir\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"Sil\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"%(object_name)s \\\"%(escaped_object)s\\\" obyektini sildikdə onun bağlı olduğu \"\n\"obyektlər də silinməlidir. Ancaq sizin hesabın aşağıdakı tip obyektləri \"\n\"silməyə səlahiyyəti çatmır:\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\"%(object_name)s \\\"%(escaped_object)s\\\" obyektini silmək üçün aşağıdakı \"\n\"qorunan obyektlər də silinməlidir:\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\"%(object_name)s \\\"%(escaped_object)s\\\" obyektini silməkdə əminsiniz? Ona \"\n\"bağlı olan aşağıdakı obyektlər də silinəcək:\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"Hə, əminəm\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"Bir neçə obyekt sil\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\"%(objects_name)s obyektini silmək üçün ona bağlı obyektlər də silinməlidir. \"\n\"Ancaq sizin hesabınızın aşağıdakı tip obyektləri silmək səlahiyyətinə malik \"\n\"deyil:\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\"%(objects_name)s obyektini silmək üçün aşağıdakı qorunan obyektlər də \"\n\"silinməlidir:\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\"Seçdiyiniz %(objects_name)s obyektini silməkdə əminsiniz? Aşağıdakı bütün \"\n\"obyektlər və ona bağlı digər obyektlər də silinəcək:\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \" %(filter_title)s görə \"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"%(name)s proqramındakı modellər\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"Dəyiş\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"Üzrlər, amma sizin nəyisə dəyişməyə səlahiyyətiniz çatmır.\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"Son əməliyyatlar\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"Mənim etdiklərim\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"Heç nə yoxdur\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"Naməlum\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"Bazanın qurulması ilə nəsə problem var. Lazımi cədvəllərin bazada \"\n\"yaradıldığını və uyğun istifadəçinin bazadan oxuya bildiyini yoxlayın.\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"Parol:\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"Parol və ya istifadəçi adını unutmusan?\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"Tarix/vaxt\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"İstifadəçi\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"Əməliyyat\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\"Bu obyektin dəyişməsinə aid tarix mövcud deyil. Yəqin ki, o, bu admin saytı \"\n\"vasitəsilə yaradılmayıb.\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"Hamısını göstər\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"Yadda saxla\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"Axtar\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"%(counter)s nəticə\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"Hamısı birlikdə %(full_result_count)s\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"Yenisi kimi yadda saxla\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"Yadda saxla və yenisini əlavə et\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"Yadda saxla və redaktəyə davam et\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\"Əvvəlcə istifadəçi adını və parolu daxil edin. Ondan sonra daha çox \"\n\"istifadəçi imkanlarını redaktə edə biləcəksiniz.\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"İstifadəçi adını və parolu daxil edin.\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"<strong>%(username)s</strong> üçün yeni parol daxil edin.\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"Parol\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"Parol (bir daha)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Yuxarıdakı parolu yenidən daxil edin, dəqiqləşdirmək üçün\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"Yığışdır\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"Daha bir %(verbose_name)s əlavə et\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"Silək?\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"Sayt ilə səmərəli vaxt keçirdiyiniz üçün təşəkkür.\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"Yenidən daxil ol\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"Parol dəyişmək\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"Parol uğurla dəyişdi\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"Sizin parolunuz dəyişdi.\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"Yoxlama üçün köhnə parolunuzu daxil edin. Sonra isə yeni parolu iki dəfə \"\n\"daxil edin ki, səhv etmədiyinizə əmin olaq.\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"Köhnə parol\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"Yeni parol\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"Mənim parolumu dəyiş\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"Parolun sıfırlanması\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"Parolun sıfırlanması başa çatdı\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"Yeni parol artıq qüvvədədir.  Yenidən daxil ola bilərsiniz.\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"Parolun sıfırlanması üçün təsdiq\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"Yeni parolu daxil edin\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"Yeni parolu iki dəfə daxil edin ki, səhv etmədiyinizə əmin olaq.\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"Yeni parol:\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"Yeni parol (bir daha):\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"Parolun sıfırlanması baş tutmadı\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\"Parolun sıfırlanması üçün olan keçid, yəqin ki, artıq istifadə olunub.  \"\n\"Parolu sıfırlamaq üçün yenə müraciət edin.\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"Parolun sıfırlanması uğurla başa çatdı.\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\"Parol seçmək üçün təlimatları təqdim etdiyiniz e-poçt ünvanına göndərdik. \"\n\"Poçtu yoxlaya bilərsiniz.\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\"%(site_name)s saytında parolu yeniləmək istədiyinizə görə bu məktubu \"\n\"göndərdik.\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"Növbəti səhifəyə keçid alın və yeni parolu seçin:\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"Sizin istifadəçi adınız:\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"Bizim saytdan istifadə etdiyiniz üçün təşəkkür edirik!\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"%(site_name)s komandası\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\"Parolu unutmusunuz? Aşağıda e-poçt ünvanınızı təqdim edin, biz isə yeni \"\n\"parol seçmək təlimatlarını sizə göndərək.\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"E-poçt:\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"Parolumu sıfırla\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"Bütün tarixlərdə\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"(Heç nə)\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"%s seç\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"%s dəyişmək üçün seç\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/az/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Ali Ismayilov <ali@ismailov.info>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-05-08 13:33+0000\\n\"\n\"Last-Translator: Ali Ismayilov <ali@ismailov.info>\\n\"\n\"Language-Team: Azerbaijani (http://www.transifex.com/projects/p/django/\"\n\"language/az/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: az\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"Mümkün %s\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Bu, mümkün %s siyahısıdır. Onlardan bir neçəsini qarşısındakı xanaya işarə \"\n\"qoymaq və iki xana arasındakı \\\"Seç\\\"i tıqlamaqla seçmək olar.\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"Bu xanaya yazmaqla mümkün %s siyahısını filtrləyə bilərsiniz.\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"Süzgəc\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"Hamısını seç\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"Bütün %s siyahısını seçmək üçün tıqlayın.\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"Seç\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"Yığışdır\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"Seçilmiş %s\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Bu, seçilmiş %s siyahısıdır. Onlardan bir neçəsini aşağıdakı xanaya işarə \"\n\"qoymaq və iki xana arasındakı \\\"Sil\\\"i tıqlamaqla silmək olar.\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"Hamısını sil\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"Seçilmiş %s siyahısının hamısını silmək üçün tıqlayın.\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"%(cnt)s-dan %(sel)s seçilib\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\"Bəzi sahələrdə etdiyiniz dəyişiklikləri hələ yadda saxlamamışıq. Əgər \"\n\"əməliyyatı işə salsanız, dəyişikliklər əldən gedəcək.\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\"Əməliyyatı seçmisiniz, amma bəzi sahələrdəki dəyişiklikləri hələ yadda \"\n\"saxlamamışıq. Bunun üçün OK seçməlisiniz. Ondan sonra əməliyyatı yenidən işə \"\n\"salmağa cəhd edin.\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\"Siz əməliyyatı seçmisiniz və heç bir sahəyə dəyişiklik etməmisiniz. Siz \"\n\"yəqin ki, Yadda saxla düyməsini deyil, Getdik düyməsini axtarırsınız.\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"\"\n\"Yanvar Fevral Mart Aprel May İyun İyul Avqust Sentyabr Oktyabr Noyabr Dekabr\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"B B Ç Ç C C Ş\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"Göstər\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"Gizlət\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"İndi\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"Saat\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"Vaxtı seçin\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"Gecə yarısı\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"6 a.m.\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"Günorta\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"Ləğv et\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"Bu gün\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"Təqvim\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"Dünən\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"Sabah\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/be/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:52+0000\\n\"\n\"Last-Translator: Ramiro Morales <cramm0@gmail.com>\\n\"\n\"Language-Team: Belarusian (http://www.transifex.com/projects/p/django/\"\n\"language/be/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: be\\n\"\n\"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"Выдалілі %(count)d %(items)s.\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"Не ўдаецца выдаліць %(name)s\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"Ці ўпэўненыя вы?\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"Выдаліць абраныя %(verbose_name_plural)s\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"Усе\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"Так\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"Не\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"Невядома\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"Хоць-якая дата\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"Сёньня\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"Апошні тыдзень\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"Гэты месяц\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"Гэты год\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"Тэрмін сэансу скончыўся, таму ўвайдзіце зноўку.\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"Дзеяньне:\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"час дзеяньня\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"нумар аб’екта\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"прадстаўленьне аб’екта\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"від дзеяньня\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"паведамленьне пра зьмену\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"запіс у справаздачы\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"запісы ў справаздачы\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"Дадалі «%(object)s».\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"Зьмянілі «%(object)s» — %(changes)s\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"Выдалілі «%(object)s».\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"Запіс у справаздачы\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"Няма\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"Зьмянілі %s.\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"і\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Дадалі %(name)s «%(object)s».\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Зьмянілі %(list)s для %(name)s «%(object)s».\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Выдалілі %(name)s «%(object)s».\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"Палі не зьмяняліся.\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"Дадалі %(name)s «%(obj)s». Ніжэй яго можна зноўку правіць.\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"Дадалі %(name)s «%(obj)s».\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"Зьмянілі %(name)s «%(obj)s».\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\"Каб нешта рабіць, трэба спачатку абраць, з чым гэта рабіць. Нічога не \"\n\"зьмянілася.\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"Не абралі дзеяньняў.\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"Дадаць %s\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"Аб’ект %(name)s з галоўным ключом %(key)r не існуе.\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"Зьмяніць %s\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"База зьвестак дала хібу\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"Зьмянілі %(count)s %(name)s.\"\nmsgstr[1] \"Зьмянілі %(count)s %(name)s.\"\nmsgstr[2] \"Зьмянілі %(count)s %(name)s.\"\nmsgstr[3] \"Зьмянілі %(count)s %(name)s.\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"Абралі %(total_count)s\"\nmsgstr[1] \"Абралі ўсе %(total_count)s\"\nmsgstr[2] \"Абралі ўсе %(total_count)s\"\nmsgstr[3] \"Абралі ўсе %(total_count)s\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"Абралі 0 аб’ектаў з %(cnt)s\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"Сьцерлі %(name)s «%(obj)s».\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"Гісторыя зьменаў: %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"Увайсьці\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"Кіраваць пляцоўкаю\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"Кіраваць %s\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"Дата:\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"Час:\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"Шукаць\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"Дадаць яшчэ\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"Бачыну не знайшлі\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"На жаль, запытаную бачыну немагчыма знайсьці.\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"Пачатак\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"Паслужнік даў хібу\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"Паслужнік даў хібу (памылка 500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"Паслужнік даў хібу <em>(памылка 500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"Выканаць абранае дзеяньне\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"Выканаць\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"Каб абраць аб’екты на ўсіх бачынах, націсьніце сюды\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"Абраць усе %(total_count)s %(module_name)s\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"Не абіраць нічога\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"Вітаем,\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"Дакумэнтацыя\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"Зьмяніць пароль\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"Выйсьці\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"Кіраўнічая пляцоўка «Джэнґа»\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"Кіраваць «Джэнґаю»\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"Дадаць\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"Гісторыя\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"Зірнуць на пляцоўцы\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"Выпраўце хібу, апісаную ніжэй.\"\nmsgstr[1] \"Выпраўце хібы, апісаныя ніжэй.\"\nmsgstr[2] \"Выпраўце хібы, апісаныя ніжэй.\"\nmsgstr[3] \"Выпраўце хібы, апісаныя ніжэй.\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"Дадаць %(name)s\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"Прасеяць\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"Прыбраць з упарадкаванага\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"Парадак: %(priority_number)s\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"Парадкаваць наадварот\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"Выдаліць\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"Калі выдаліць %(object_name)s «%(escaped_object)s», выдаляцца зьвязаныя \"\n\"аб’екты, але ваш рахунак ня мае дазволу выдаляць наступныя віды аб’ектаў:\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\"Каб выдаліць %(object_name)s «%(escaped_object)s», трэба выдаліць і \"\n\"зьвязаныя абароненыя аб’екты:\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\"Ці выдаліць %(object_name)s «%(escaped_object)s»? Усе наступныя зьвязаныя \"\n\"складнікі выдаляцца:\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"Так, дакладна\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"Выдаліць некалькі аб’ектаў\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\"Калі выдаліць абранае (%(objects_name)s), выдаляцца зьвязаныя аб’екты, але \"\n\"ваш рахунак ня мае дазволу выдаляць наступныя віды аб’ектаў:\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\"Каб выдаліць абранае (%(objects_name)s), трэба выдаліць і зьвязаныя \"\n\"абароненыя аб’екты:\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\"Ці выдаліць абранае (%(objects_name)s)? Усе наступныя аб’екты ды зьвязаныя \"\n\"зь імі складнікі выдаляцца:\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \" %(filter_title)s \"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"Зьмяніць\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"Вы ня маеце дазволу нешта зьмяняць.\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"Нядаўнія дзеяньні\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"Мае дзеяньні\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"Недаступнае\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"Невядомае зьмесьціва\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"Нешта ня так з усталяванаю базаю зьвестак. Упэўніцеся, што ў базе стварылі \"\n\"патрэбныя табліцы, і што базу можа чытаць адпаведны карыстальнік.\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"Пароль:\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"Забыліся на імя ці пароль?\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"Час, дата\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"Карыстальнік\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"Дзеяньне\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\"Аб’ект ня мае гісторыі зьменаў. Мажліва, яго дадавалі не праз кіраўнічую \"\n\"пляцоўку.\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"Паказаць усё\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"Захаваць\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"Шукаць\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"%(counter)s вынік\"\nmsgstr[1] \"%(counter)s вынікі\"\nmsgstr[2] \"%(counter)s вынікаў\"\nmsgstr[3] \"%(counter)s вынікаў\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"Разам %(full_result_count)s\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"Захаваць як новы\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"Захаваць і дадаць іншы\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"Захаваць і працягваць правіць\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\"Спачатку пазначце імя карыстальніка ды пароль. Потым можна будзе наставіць \"\n\"іншыя можнасьці.\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"Пазначце імя карыстальніка ды пароль.\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"Пазначце пароль для карыстальніка «<strong>%(username)s</strong>».\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"Пароль\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"Пароль (яшчэ раз)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Дзеля пэўнасьці набярыце такі самы пароль яшчэ раз.\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"Прыбраць\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"Дадаць яшчэ %(verbose_name)s\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"Ці выдаліць?\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"Дзякуем за час, які вы сёньня правялі на гэтай пляцоўцы.\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"Увайсьці зноўку\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"Зьмяніць пароль\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"Пароль зьмянілі\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"Ваш пароль зьмяніўся.\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"Дзеля бясьпекі пазначце стары пароль, а потым набярыце новы пароль двойчы \"\n\"— каб упэўніцца, што набралі без памылак.\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"Стары пароль\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"Новы пароль\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"Зьмяніць пароль\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"Узнавіць пароль\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"Пароль узнавілі\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"Вам усталявалі пароль.  Можаце вярнуцца ды ўвайсьці зноўку.\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"Пацьвердзіце, што трэба ўзнавіць пароль\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"Пазначце новы пароль\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"Набярыце новы пароль двойчы — каб упэўніцца, што набралі без памылак.\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"Новы пароль:\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"Пацьвердзіце пароль:\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"Не ўдалося ўзнавіць пароль\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\"Спасылка ўзнавіць пароль хібная: мажліва таму, што ёю ўжо скарысталіся.  \"\n\"Запытайцеся ўзнавіць пароль яшчэ раз.\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"Пароль узнавілі\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"Перайдзіце да наступнае бачыны ды абярыце новы пароль:\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"Імя карыстальніка, калі раптам вы забыліся:\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"Дзякуем, што карыстаецеся нашаю пляцоўкаю!\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"Каманда «%(site_name)s»\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"Узнавіць пароль\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"Усе даты\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"(Нічога)\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"Абраць %s\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"Абярыце %s, каб зьмяніць\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/be/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-08-01 08:14+0000\\n\"\n\"Last-Translator: Павал Клёк <yehekim@gmail.com>\\n\"\n\"Language-Team: Belarusian (http://www.transifex.com/projects/p/django/\"\n\"language/be/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: be\\n\"\n\"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"Даступныя %s\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Сьпіс даступных %s. Каб нешта абраць, пазначце патрэбнае ў полі ніжэй і \"\n\"пстрыкніце па стрэлцы «Абраць» між двума палямі.\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"Каб прасеяць даступныя %s, друкуйце ў гэтым полі.\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"Прасеяць\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"Абраць усе\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"Каб абраць усе %s, пстрыкніце тут.\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"Абраць\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"Прыбраць\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"Абралі %s\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Сьпіс абраных %s. Каб нешта прыбраць, пазначце патрэбнае ў полі ніжэй і \"\n\"пстрыкніце па стрэлцы «Прыбраць» між двума палямі.\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"Прыбраць усё\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"Каб прыбраць усе %s, пстрыкніце тут.\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"Абралі %(sel)s з %(cnt)s\"\nmsgstr[1] \"Абралі %(sel)s з %(cnt)s\"\nmsgstr[2] \"Абралі %(sel)s з %(cnt)s\"\nmsgstr[3] \"Абралі %(sel)s з %(cnt)s\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\"У пэўных палях засталіся незахаваныя зьмены. Калі выканаць дзеяньне, \"\n\"незахаванае страціцца.\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\"Абралі дзеяньне, але не захавалі зьмены ў пэўных палях. Каб захаваць, \"\n\"націсьніце «Добра». Дзеяньне потым трэба будзе запусьціць нанова.\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\"Абралі дзеяньне, а ў палях нічога не зьмянялі. Мажліва, вы хацелі націснуць \"\n\"кнопку «Выканаць», а ня кнопку «Захаваць».\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"\"\n\"Студзень Люты Сакавік Красавік Травень Чэрвень Ліпень Жнівень Верасень \"\n\"Кастрычнік Лістапад Сьнежань\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"Н П А С Ч П С\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"Паказаць\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"Схаваць\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"Цяпер\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"Гадзіньнік\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"Абярыце час\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"Поўнач\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"6 папоўначы\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"Поўдзень\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"Скасаваць\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"Сёньня\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"Каляндар\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"Учора\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"Заўтра\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/bg/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Boris Chervenkov <office@sentido.bg>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Todor Lubenov <tlubenov@gmail.com>, 2011-2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:52+0000\\n\"\n\"Last-Translator: Ramiro Morales <cramm0@gmail.com>\\n\"\n\"Language-Team: Bulgarian (http://www.transifex.com/projects/p/django/\"\n\"language/bg/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: bg\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"Успешно изтрити %(count)d %(items)s .\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"Не можете да изтриете %(name)s\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"Сигурни ли сте?\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"Изтриване на избраните %(verbose_name_plural)s\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"Всички\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"Да\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"Не\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"Неизвестно\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"Коя-да-е дата\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"Днес\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"Последните 7 дни\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"Този месец\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"Тази година\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"Моля, влезте отново, тъй като сесията е изтекла.\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"Действие:\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"време на действие\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"id на обекта\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"repr на обекта\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"флаг за действие\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"промени съобщение\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"записка\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"записки\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"Добавен \\\"%(object)s\\\".\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"Променени \\\"%(object)s\\\" - %(changes)s\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"Изтрит \\\"%(object)s.\\\"\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"LogEntry обект\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"Празно\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"Променено %s.\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"и\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Добавени %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Променени %(list)s за %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Изтрити %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"Няма променени полета.\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"\"\n\"Обектът %(name)s \\\"%(obj)s\\\" бе успешно добавен.  Може да го редактирате по-\"\n\"долу.  \"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"Обектът %(name)s \\\"%(obj)s\\\" бе успешно добавен.  \"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"Обектът %(name)s \\\"%(obj)s\\\" бе успешно актуализиран.  \"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\"Елементите трябва да бъдат избрани, за да се извършат действия по тях. Няма \"\n\"променени елементи.\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"Няма избрани действия.\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"Добави %s\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"%(name)s обект с първичен ключ %(key)r не съществува.\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"Промени %s\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"Грешка в базата данни\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"%(count)s %(name)s беше променено успешно.\"\nmsgstr[1] \"%(count)s %(name)s бяха променени успешно.\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"%(total_count)s е избран\"\nmsgstr[1] \"Всички %(total_count)s са избрани\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"0 от %(cnt)s са избрани\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"Обектът %(name)s \\\"%(obj)s\\\" бе успешно изтрит.  \"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"История на промените: %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"Вход\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"Администрация на сайта\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"%s администрация\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"Дата:\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"Час:\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"Търсене\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"Добави друг\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"Страница не е намерена\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"Съжалявам, но исканата страница не е намерена.\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"Начало\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"Сървърна грешка\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"Сървърна грешка (500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"Сървърна грешка <em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\"Станала е грешка. Съобщава се на администраторите на сайта по електронна \"\n\"поща и трябва да бъде поправено скоро. Благодарим ви за търпението.\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"Стартирай избраните действия\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"Търси\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"Щракнете тук, за да изберете обектите във всички страници\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"Избери всички %(total_count)s %(module_name)s\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"Изтрий избраното\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"Добре дошли,\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"Документация\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"Промени парола\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"Изход\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"Административен панел\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"Административен панел\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"Добави\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"История\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"Разгледай в сайта\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"Моля, поправете грешката по-долу.\"\nmsgstr[1] \"Моля, поправете грешките по-долу.\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"Добави %(name)s\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"Филтър\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"Премахни от подреждането\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"Ред на подреждане: %(priority_number)s\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"Обърни подреждането\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"Изтрий\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"Изтриването на обекта %(object_name)s '%(escaped_object)s' не може да бъде \"\n\"извършено без да се изтрият и някои свързани обекти, върху които обаче \"\n\"нямате права: \"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\"Изтриването на %(object_name)s '%(escaped_object)s' ще доведе до \"\n\"заличаването на следните защитени свързани обекти:\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\"Наистина ли искате да изтриете обектите %(object_name)s \\\"%(escaped_object)s\"\n\"\\\"? Следните свързани елементи също ще бъдат изтрити:\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"Да, сигурен съм\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"Изтриване на множество обекти\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\"Изтриването на избраните %(objects_name)s ще доведе до изтриване на свързани \"\n\"обекти. Вашият профил няма права за изтриване на следните типове обекти:\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\"Изтриването на избраните %(objects_name)s ще доведе до заличаването на \"\n\"следните защитени свързани обекти:\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\"Наистина ли искате да изтриете избраните %(objects_name)s? Всички изброени \"\n\"обекти и свързаните с тях ще бъдат изтрити:\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \" По %(filter_title)s \"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"Моделите в %(name)s приложение\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"Промени\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"Нямате права да редактирате каквото и да е.\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"Последни действия\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"Моите действия\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"Няма налични\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"Неизвестно съдържание\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"Проблем с базата данни. Проверете дали необходимите таблици са създадени и \"\n\"дали съответния потребител има необходимите права за достъп.  \"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"Парола:\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"Забравена парола или потребителско име?\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"Дата/час\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"Потребител\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"Действие\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\"Този обект няма исторя на промените. Вероятно не е добавен чрез \"\n\"административния панел.  \"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"Покажи всички\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"Запис\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"Търсене\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"%(counter)s резултат\"\nmsgstr[1] \"%(counter)s резултати\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"%(full_result_count)s общо\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"Запис като нов\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"Запис и нов\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"Запис и продължение\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\"Първо въведете потребител и парола. След това ще можете да редактирате \"\n\"повече детайли.  \"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"Въведете потребителско име и парола.\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"Въведете нова парола за потребител <strong>%(username)s</strong>.\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"Парола\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"Парола (отново)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Въведете същата парола още веднъж за проверка.  \"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"Премахване\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"Добави друг %(verbose_name)s\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"Изтриване?\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"Благодарим Ви, че използвахте този сайт днес.\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"Влез пак\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"Промяна на парола\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"Паролата е сменена успешно\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"Паролата ви е променена.\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"Въведете старата си парола /за сигурност/. След това въведете желаната нова \"\n\"парола два пъти от съображения за сигурност\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"Стара парола\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"Нова парола\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"Промяна на парола\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"Нова парола\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"Промяната на парола завърши\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"Паролата е променена. Вече можете да се впишете\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"Парола за потвърждение\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"Въведете нова парола\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"\"\n\"Моля, въведете новата парола два пъти, за да може да се потвърди, че сте я \"\n\"написали правилно.\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"Нова парола:\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"Потвърдете паролата:\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"Неуспешна промяна на паролата \"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\"Връзката за възстановяване на паролата е невалидна, може би защото вече е \"\n\"използвана. Моля, поискайте нова промяна на паролата.\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"Паролата е успешно променена.\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\"Изпратихме ви инструкции за задаването на паролата на имейл адреса, който \"\n\"сте изпратили. Трябва да я получите скоро.\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\"Вие сте получили този имейл, защото сте поискали да промените паролата за \"\n\"вашия потребителски акаунт в %(site_name)s.\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"Моля, отидете на следната страница и изберете нова парола:\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"Вашето потребителско име, в случай, че сте го забравили:\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"Благодарим, че ползвате сайта ни!\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"Екипът на %(site_name)s\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\"Забравили сте си паролата? Въведете своя имейл адрес по-долу, а ние ще ви \"\n\"изпратим инструкции за създаване на нова.\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"E-mail адреси:\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"Нова парола\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"Всички дати\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"(Празен)\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"Изберете %s\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"Изберете %s за промяна\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/bg/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Todor Lubenov <tlubenov@gmail.com>, 2011-2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-08-30 15:03+0000\\n\"\n\"Last-Translator: Todor Lubenov <tlubenov@gmail.com>\\n\"\n\"Language-Team: Bulgarian (http://www.transifex.com/projects/p/django/\"\n\"language/bg/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: bg\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"Налични %s\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Това е списък на наличните %s . Можете да изберете някои, като ги изберете в \"\n\"полето по-долу и след това кликнете върху \\\"Избор\\\" стрелка между двете \"\n\"кутии.\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"Въведете в това поле, за да филтрирате списъка на наличните %s.\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"Филтър\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"Избери всички\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"Кликнете, за да изберете всички %s наведнъж.\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"Избирам\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"Премахни\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"Избрахме %s\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Това е списък на избрания %s. Можете да премахнете някои, като ги изберете в \"\n\"полето по-долу и след това щракнете върху \\\"Премахни\\\" стрелка между двете \"\n\"кутии.\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"Премахване на всички\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"Кликнете, за да премахнете всички избрани %s наведнъж.\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"%(sel)s на %(cnt)s е избран\"\nmsgstr[1] \"%(sel)s на %(cnt)s са избрани\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\"Имате незапазени промени по отделни полета за редактиране. Ако започнете \"\n\"друго, незаписаните промени ще бъдат загубени.\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\"Вие сте избрали действие, но не сте записали промените по полета. Моля, \"\n\"кликнете ОК, за да се запишат. Трябва отново да започнете действие.\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\"Вие сте избрали дадена дейност, а не сте направили някакви промени по \"\n\"полетата. Вероятно търсите Go бутон, а не бутона Save.\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"\"\n\"Януари Февруари Март Април Май Юни Юли Август Септември Октомври Ноември \"\n\"Декември\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"Н П В С Ч П С\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"Покажи\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"Скрий\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"Сега\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"Часовник\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"Избери време\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"Полунощ\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"6 a.m.\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"По обяд\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"Отказ\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"Днес\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"Календар\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"Вчера\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"Утре\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/bn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Translators:\n#  <anubhab91@gmail.com>, 2013.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <rafi.tahmid@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-02-20 15:10+0000\\n\"\n\"Last-Translator: anubhab91 <anubhab91@gmail.com>\\n\"\n\"Language-Team: Bengali (http://www.transifex.com/projects/p/django/language/\"\n\"bn/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: bn\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"%(count)d টি %(items)s সফলভাবে মুছে ফেলা হয়েছে\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"%(name)s ডিলিট করা সম্ভব নয়\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"আপনি কি নিশ্চিত?\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"চিহ্নিত অংশটি %(verbose_name_plural)s মুছে ফেলুন\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"সকল\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"হ্যাঁ\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"না\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"অজানা\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"যে কোন তারিখ\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"‍আজ\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"শেষ ৭ দিন\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"এ মাসে\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"এ বছরে\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"অনুগ্রহ করে পুনরায় প্রবেশ করুন, কেননা আপনার সেশনের মেয়াদ শেষ।\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"কাজ:\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"কার্য সময়\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"অবজেক্ট আইডি\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"অবজেক্ট উপস্থাপক\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"কার্যচিহ্ন\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"বার্তা পরিবর্তন করুন\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"লগ এন্ট্রি\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"লগ এন্ট্রিসমূহ\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"%(object)s অ্যাড করা হয়েছে\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"\\\"%(object)s\\\" ডিলিট করা হয়েছে\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"লগ-এন্ট্রি দ্রব্য\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"কিছু না\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"%s পরিবর্তিত হয়েছে।\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"এবং\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"%(name)s \\\"%(object)s\\\" যুক্ত হয়েছে।\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"%(name)s \\\"%(object)s\\\" এর জন্য %(list)s পরিবর্তিত হয়েছে।\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"%(name)s \\\"%(object)s\\\" মোছা হয়েছে।\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"কোন ফিল্ড পরিবর্তন হয়নি।\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" সফলতার সাথে যুক্ত হয়েছে। আপনি নিচে থেকে এটি পুনরায় সম্পাদন \"\n\"করতে পারেন।\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" সফলতার সাথে যুক্ত হয়েছে।\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" সফলতার সাথে পরিবর্তিত হয়েছে।\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"কাজ করার আগে বস্তুগুলিকে অবশ্যই চিহ্নিত করতে হবে। কোনো বস্তু পরিবর্তিত হয়নি।\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"কোনো কাজ \"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"%s যোগ করুন\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"%s পরিবর্তন করুন\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"ডাটাবেস সমস্যা\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"%(cnt)s টি থেকে ০ টি সিলেক্ট করা হয়েছে\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" সফলতার সাথে মুছে ফেলা হয়েছে।\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"ইতিহাস পরিবর্তনঃ %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"প্রবেশ করুন\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"সাইট প্রশাসন\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"%s প্রশাসন\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"তারিখঃ\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"সময়ঃ\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"খুঁজুন\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"আরেকটি যোগ করুন\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"বর্তমান অবস্থা:\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"পরিবর্তন:\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"পৃষ্ঠা পাওয়া যায়নি\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"দুঃখিত, অনুরোধকৃত পাতাটি পাওয়া যায়নি।\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"নীড়পাতা\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"সার্ভার সমস্যা\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"সার্ভার সমস্যা (৫০০)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"সার্ভার সমস্যা <em>(৫০০)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"চিহ্নিত কাজটি শুরু করুন\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"যান\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"সকল পৃষ্ঠার দ্রব্য পছন্দ করতে এখানে ক্লিক করুন\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"চিহ্নিত অংশের চিহ্ন মুছে ফেলুন\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"স্বাগতম,\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"সহায়িকা\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"পাসওয়ার্ড বদলান\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"প্রস্থান\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"জ্যাঙ্গো সাইট প্রশাসক\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"জ্যাঙ্গো প্রশাসন\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"যোগ করুন\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"ইতিহাস\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"সাইটে দেখুন\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"অনুগ্রহ করে নিচের ভুলটি সংশোধন করুন।\"\nmsgstr[1] \"অনুগ্রহ করে নিচের ভুলগুলো সংশোধন করুন।\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"%(name)s যোগ করুন\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"ফিল্টার\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"ক্রমানুসারে সাজানো থেকে বিরত হোন\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"ক্রমানুসারে সাজানো চালু করুন/ বন্ধ করুন\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"মুছুন\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"%(object_name)s '%(escaped_object)s' মুছে ফেললে এর সম্পর্কিত অবজেক্টগুলোও মুছে \"\n\"যাবে, কিন্তু আপনার নিম্নবর্ণিত অবজেক্টগুলো মোছার অধিকার নেইঃ\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\"আপনি কি %(object_name)s \\\"%(escaped_object)s\\\" মুছে ফেলার ব্যাপারে নিশ্চিত? \"\n\"নিম্নে বর্ণিত সকল আইটেম মুছে যাবেঃ\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"হ্যা়ঁ, আমি নিশ্চিত\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"একাধিক জিনিস মুছে ফেলুন\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \" %(filter_title)s অনুযায়ী \"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"পরিবর্তন\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"কোন কিছু পরিবর্তনে আপনার অধিকার নেই।\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"সাম্প্রতিক কার্যাবলী\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"আমার কার্যাবলী\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"কিছুই পাওয়া যায়নি\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"অজানা বিষয়\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"আপনার ডাটাবেস ইনস্টলে সমস্যা হয়েছে। নিশ্চিত করুন যে, ডাটাবেস টেবিলগুলো সঠিকভাবে \"\n\"তৈরী হয়েছে, এবং যথাযথ সদস্যের ডাটাবেস পড়ার অধিকার রয়েছে।\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"পাসওয়ার্ডঃ\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"ইউজার নেইম অথবা পাসওয়ার্ড ভুলে গেছেন?\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"তারিখ/সময়\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"সদস্য\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"কার্য\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"এই অবজেক্টের কোন ইতিহাস নেই। সম্ভবত এটি প্রশাসন সাইট দিয়ে তৈরী করা হয়নি।\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"সব দেখান\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"সংরক্ষণ করুন\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"সার্চ\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"মোট %(full_result_count)s\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"নতুনভাবে সংরক্ষণ করুন\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"সংরক্ষণ করুন এবং আরেকটি যোগ করুন\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"সংরক্ষণ করুন এবং সম্পাদনা চালিয়ে যান\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\"প্রথমে একটি সদস্যনাম ও পাসওয়ার্ড প্রবেশ করান। তারপরে আপনি ‍আরও সদস্য-অপশন যুক্ত করতে \"\n\"পারবেন।\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"ইউজার নেইম এবং পাসওয়ার্ড টাইপ করুন।\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"<strong>%(username)s</strong> সদস্যের জন্য নতুন পাসওয়ার্ড দিন।\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"পাসওয়ার্ড\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"পাসওয়ার্ড (পুনরায়)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"উপরের পাসওয়ার্ডটি পুনরায় প্রবেশ করান, যাচাইয়ের জন্য।\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"মুছে ফেলুন\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"মুছে ফেলুন?\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"ওয়েবসাইটে কিছু সময় কাটানোর জন্য আপনাকে আন্তরিক ধন্যবাদ।\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"পুনরায় প্রবেশ করুন\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"পাসওয়ার্ড বদলান\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"পাসওয়ার্ড বদল সফল হয়েছে\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"আপনার পাসওয়ার্ড বদলানো হয়েছে।\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"অনুগ্রহ করে আপনার পুরনো পাসওয়ার্ড প্রবেশ করান, নিরাপত্তার কাতিরে, এবং পরপর দু’বার \"\n\"নতুন পাসওয়ার্ড প্রবেশ করান, যাচাই করার জন্য।\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"পুরনো পাসওয়ার্ড\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"নতুন পাসওয়ার্ড\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"আমার পাসওয়ার্ড পরিবর্তন করুন\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"পাসওয়ার্ড রিসেট করুন\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"পাসওয়ার্ড রিসেট সম্পন্ন হয়েছে\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"আপনার পাসওয়ার্ড দেয়া হয়েছে। আপনি এখন প্রবেশ (লগইন) করতে পারেন।\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"পাসওয়ার্ড রিসেট নিশ্চিত করুন\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"নতুন পাসওয়ার্ড দিন\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"\"\n\"অনুগ্রহ করে আপনার পাসওয়ার্ড দুবার প্রবেশ করান, যাতে আমরা যাচাই করতে পারি আপনি \"\n\"সঠিকভাবে টাইপ করেছেন।\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"নতুন পাসওয়ার্ডঃ\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"পাসওয়ার্ড নিশ্চিতকরণঃ\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"পাসওয়ার্ড রিসেট সফল হয়নি\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\"পাসওয়ার্ড রিসেট লিঙ্কটি ঠিক নয়, হয়তো এটা ইতোমধ্যে ব্যবহৃত হয়েছে। পাসওয়ার্ড \"\n\"রিসেটের জন্য অনুগ্রহ করে নতুনভাবে আবেদন করুন।\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"পাসওয়ার্ড রিসেট সফল হয়েছে\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"অনুগ্রহ করে নিচের পাতাটিতে যান এবং নতুন পাসওয়ার্ড বাছাই করুনঃ\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"আপনার সদস্যনাম, যদি ভুলে গিয়ে থাকেনঃ\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"আমাদের সাইট ব্যবহারের জন্য ধন্যবাদ!\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"%(site_name)s দল\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"ইমেইল ঠিকানা:\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"আমার পাসওয়ার্ড রিসেট করুন\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"সকল তারিখ\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"(কিছুই না)\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"%s বাছাই করুন\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"%s পরিবর্তনের জন্য বাছাই করুন\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/bn/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-03-08 10:42+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Bengali (http://www.transifex.com/projects/p/django/language/\"\n\"bn/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: bn\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"%s বিদ্যমান\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"ফিল্টার\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"সব বাছাই করুন\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"মুছে ফেলুন\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"%s বাছাই করা হয়েছে\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"\"\n\"জানুয়ারি ফেব্রুয়ারি মার্চ এপ্রিল মে জুন জুলাই অাগস্ট সেপ্টেম্বর অক্টোবর নভেম্বর ডিসেম্বর\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"র স ম ব ব শ শ\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"দেখান\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"লুকান\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"এখন\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"ঘড়ি\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"সময় নির্বাচন করুন\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"মধ্যরাত\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"৬ পূর্বাহ্ন\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"দুপুর\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"বাতিল\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"আজ\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"দিনপঞ্জিকা\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"গতকাল\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"আগামীকাল\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/br/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Fulup  <fulup.jakez@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:52+0000\\n\"\n\"Last-Translator: Ramiro Morales <cramm0@gmail.com>\\n\"\n\"Language-Team: Breton (http://www.transifex.com/projects/p/django/language/\"\n\"br/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: br\\n\"\n\"Plural-Forms: nplurals=2; plural=(n > 1);\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"Ha sur oc'h ?\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"An holl\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"Ya\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"Ket\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"Dianav\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"Forzh pegoulz\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"Hiziv\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"Er 7 devezh diwezhañ\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"Ar miz-mañ\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"Ar bloaz-mañ\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"Ober :\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"eur an ober\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"Kemennadenn gemmañ\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"Traezenn eus ar marilh\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"Hini ebet\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"Kemmet %s.\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"ha\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"N'eus bet kemmet maezienn ebet.\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"Ouzhpennañ %s\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"Kemmañ %s\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"Fazi en diaz roadennoù\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"Istor ar c'hemmoù : %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"Kevreañ\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"Merañ al lec'hienn\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"Merañ %s\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"Deiziad :\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"Eur :\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"Klask\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"Ouzhpennañ unan all\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"N'eo ket bet kavet ar bajenn\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"Degemer\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"Fazi servijer\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"Fazi servijer (500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"Fazi servijer <em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"Mont\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"Riñsañ an diuzadenn\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"Degemer mat,\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"Teulioù\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"Cheñch ger-tremen\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"Digevreañ\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"Lec'hienn verañ Django\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"Merañ Django\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"Ouzhpennañ\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"Istor\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"Gwelet war al lec'hienn\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"Ouzhpennañ %(name)s\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"Sil\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"Eilpennañ an diuzadenn\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"Diverkañ\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"Ya, sur on\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \" dre %(filter_title)s \"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"Kemmañ\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"Ma oberoù\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"Endalc'had dianav\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"Ger-tremen :\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"Disoñjet ho ker-tremen pe hoc'h anv implijer ganeoc'h ?\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"Deiziad/eur\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"Implijer\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"Ober\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"Diskouez pep tra\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"Enrollañ\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"Klask\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"Enrollañ evel nevez\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"Enrollañ hag ouzhpennañ unan all\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"Enrollañ ha derc'hel da gemmañ\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"Merkit un anv implijer hag ur ger-tremen.\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"Ger-tremen\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"Ger-tremen (adarre)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"Lemel kuit\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"Diverkañ ?\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"Kevreañ en-dro\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"Cheñch ho ker-tremen\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"Ger-termen cheñchet ervat\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"Cheñchet eo bet ho ker-tremen.\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"Ger-tremen kozh\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"Ger-tremen nevez\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"Cheñch ma ger-tremen\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"Adderaouekaat ar ger-tremen\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"Adderaouekaet eo bet ar ger-tremen ervat\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"Kadarnaat eo bet cheñchet ar ger-tremen\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"Merkañ ur ger-tremen nevez\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"Ger-tremen nevez :\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"Kadarnaat ar ger-tremen :\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"Ur fazi zo c'hoarvezet en ur cheñch ger-tremen\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"Cheñchet eo bet ar ger-tremen ervat\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"Ho trugarekaat da ober gant hol lec'hienn !\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"An holl zeiziadoù\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"(hini)\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"Diuzañ %s\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/br/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Fulup  <fulup.jakez@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-06-30 18:35+0000\\n\"\n\"Last-Translator: Fulup <fulup.jakez@gmail.com>\\n\"\n\"Language-Team: Breton (http://www.transifex.com/projects/p/django/language/\"\n\"br/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: br\\n\"\n\"Plural-Forms: nplurals=2; plural=(n > 1);\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"Hegerz %s\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"Sil\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"Dibab an holl\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"Klikañ evit dibab an holl %s war un dro.\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"Dibab\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"Lemel kuit\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"Dibabet %s\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"Lemel kuit pep tra\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"Klikañ evit dilemel an holl %s dibabet war un dro.\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"\"\n\"Genver C'hwevrer Meurzh Ebrel Mae Mezheven Gouere Eost Gwengolo Here Du Kerzu\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"S L M M Y G S\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"Diskouez\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"Kuzhat\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"Bremañ\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"Horolaj\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"Dibab un eur\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"Hanternoz\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"6e00\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"Kreisteiz\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"Nullañ\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"Hiziv\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"Deiziadur\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"Dec'h\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"Warc'hoazh\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/bs/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Filip Dupanović <filip.dupanovic@gmail.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:52+0000\\n\"\n\"Last-Translator: Ramiro Morales <cramm0@gmail.com>\\n\"\n\"Language-Team: Bosnian (http://www.transifex.com/projects/p/django/language/\"\n\"bs/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: bs\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"Uspješno izbrisano %(count)d %(items)s.\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"Da li ste sigurni?\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"Izbriši odabrane %(verbose_name_plural)s\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"Svi\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"Da\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"Ne\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"Nepoznato\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"Svi datumi\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"Danas\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"Poslednjih 7 dana\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"Ovaj mesec\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"Ova godina\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"Molimo da se prijavite ponovo, pošto je vaša sesija istekla.\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"Radnja:\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"vrijeme radnje\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"id objekta\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"repr objekta\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"oznaka radnje\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"opis izmjene\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"zapis u logovima\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"zapisi u logovima\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"Nijedan\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"Promijenjeno %s.\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"i\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Dodano %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Promijeni %(list)s za %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Izbrisani %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"Nije bilo izmjena polja.\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"\"\n\"Objekat „%(obj)s“ klase %(name)s dodat je uspješno. Dole možete unjeti \"\n\"dodatne izmjene.\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"Objekat „%(obj)s“ klase %(name)s sačuvan je uspješno.\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"Objekat „%(obj)s“ klase %(name)s izmjenjen je uspješno.\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\"Predmeti moraju biti izabrani da bi se mogla obaviti akcija nad njima. \"\n\"Nijedan predmet nije bio izmjenjen.\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"Nijedna akcija nije izabrana.\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"Dodaj objekat klase %s\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"Objekat klase %(name)s sa primarnim ključem %(key)r ne postoji.\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"Izmjeni objekat klase %s\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"Greška u bazi podataka\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"0 od %(cnt)s izabrani\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"Objekat „%(obj)s“ klase %(name)s obrisan je uspješno.\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"Historijat izmjena: %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"Prijava\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"Administracija sistema\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"Administracija %s\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"Datum:\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"Vrijeme:\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"Pretraži\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"Dodaj još jedan\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"Stranica nije pronađena\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"Žao nam je, tražena stranica nije pronađena.\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"Početna\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"Greška na serveru\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"Greška na serveru (500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"Greška na serveru <em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"Pokreni odabranu radnju\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"Počni\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"Kliknite ovdje da izaberete objekte preko svih stranica\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"Izaberite svih %(total_count)s %(module_name)s\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"Izbrišite izbor\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"Dobrodošli,\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"Dokumentacija\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"Promjena lozinke\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"Odjava\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"Django administracija sajta\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"Django administracija\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"Dodaj\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"Historijat\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"Pregled na sajtu\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"Dodaj objekat klase %(name)s\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"Filter\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"Obriši\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"Uklanjanje %(object_name)s „%(escaped_object)s“ povlači uklanjanje svih \"\n\"objekata koji su povezani sa ovim objektom, ali vaš nalog nema dozvole za \"\n\"brisanje slijedećih tipova objekata:\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\"Da li ste sigurni da želite da obrišete %(object_name)s \"\n\"„%(escaped_object)s“? Slijedeći objekti koji su u vezi sa ovim objektom će \"\n\"također biti obrisani:\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"Da, siguran sam\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"Brisanje više objekata\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \" %(filter_title)s \"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"Izmjeni\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"Nemate dozvole da unosite bilo kakve izmjene.\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"Posjlednje radnje\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"Moje radnje\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"Nema podataka\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"Nepoznat sadržaj\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"Nešto nije uredu sa vašom bazom podataka. Provjerite da li postoje \"\n\"odgovarajuće tabele i da li odgovarajući korisnik ima pristup bazi.\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"Lozinka:\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"Datum/vrijeme\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"Korisnik\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"Radnja\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\"Ovaj objekat nema zabilježen historijat izmjena. Vjerovatno nije dodan kroz \"\n\"ovaj sajt za administraciju.\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"Prikaži sve\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"Sačuvaj\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"Pretraga\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"ukupno %(full_result_count)s\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"Sačuvaj kao novi\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"Sačuvaj i dodaj slijedeći\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"Sačuvaj i nastavi sa izmjenama\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\"Prvo unesite korisničko ime i lozinku. Potom ćete moći da mijenjate još \"\n\"korisničkih podešavanja.\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"Unesite novu lozinku za korisnika <strong>%(username)s</strong>.\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"Lozinka\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"Lozinka (ponovite)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Radi provjere tačnosti ponovo unesite lozinku koju ste unijeli gore.\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"Obriši\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"Dodaj još jedan %(verbose_name)s\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"Brisanje?\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"Hvala što ste danas proveli vrijeme na ovom sajtu.\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"Ponovna prijava\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"Izmjena lozinke\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"uspješna izmjena lozinke\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"Vaša lozinka je izmjenjena.\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"Iz bezbjednosnih razloga prvo unesite svoju staru lozinku, a novu zatim \"\n\"unesite dva puta da bismo mogli da provjerimo da li ste je pravilno unijeli.\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"Stara lozinka\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"Nova lozinka\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"Izmijeni moju lozinku\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"Resetovanje lozinke\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"Resetovanje lozinke uspješno\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"Vaša lozinka je postavljena.  Možete se prijaviti.\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"Potvrda resetovanja lozinke\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"Unesite novu lozinku\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"\"\n\"Unesite novu lozinku dva puta kako bismo mogli da provjerimo da li ste je \"\n\"pravilno unijeli.\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"Nova lozinka:\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"Potvrda lozinke:\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"Resetovanje lozinke neuspješno\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\"Link za resetovanje lozinke nije važeći, vjerovatno zato što je već \"\n\"iskorišćen.  Ponovo zatražite resetovanje lozinke.\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"Resetovanje lozinke uspješno.\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"Idite na slijedeću stranicu i postavite novu lozinku.\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"Ukoliko ste zaboravili, vaše korisničko ime:\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"Hvala što koristite naš sajt!\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"Uredništvo sajta %(site_name)s\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"Resetuj moju lozinku\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"Svi datumi\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"Odaberi objekat klase %s\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"Odaberi objekat klase %s za izmjenu\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/bs/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Filip Dupanović <filip.dupanovic@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-03-08 10:42+0000\\n\"\n\"Last-Translator: Filip Dupanović <filip.dupanovic@gmail.com>\\n\"\n\"Language-Team: Bosnian (http://www.transifex.com/projects/p/django/language/\"\n\"bs/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: bs\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"Dostupno %s\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"Filter\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"Odaberi sve\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"Ukloni\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"Odabrani %s\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"Izabran %(sel)s od %(cnt)s\"\nmsgstr[1] \"Izabrano %(sel)s od %(cnt)s\"\nmsgstr[2] \"Izabrano %(sel)s od %(cnt)s\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\"Imate nespašene izmjene na pojedinim uređenim poljima. Ako pokrenete ovu \"\n\"akciju, te izmjene će biti izgubljene.\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"Danas\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/ca/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Antoni Aloy <aaloy@apsl.net>, 2012-2013.\n# Carles Barrobés <carles@barrobes.com>, 2011, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-10 18:52+0000\\n\"\n\"Last-Translator: Antoni Aloy <aaloy@apsl.net>\\n\"\n\"Language-Team: Catalan (http://www.transifex.com/projects/p/django/language/\"\n\"ca/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ca\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"Eliminat/s %(count)d %(items)s satisfactòriament.\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"No es pot esborrar %(name)s\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"N'esteu segur?\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"Eliminar els %(verbose_name_plural)s seleccionats\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"Tots\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"Sí\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"No\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"Desconegut\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"Qualsevol data\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"Avui\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"Últims 7 dies\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"Aquest mes\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"Aquest any\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\"Si us plau, introduïu un %(username)s i clau correcta per un compte de \"\n\"personal. Observeu que ambdós camps són sensibles a majúscules.\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"Si us plau, entreu de nou perquè la vostra sessió ha caducat.\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"Acció:\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"moment de l'acció\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"id de l'objecte\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"'repr' de l'objecte\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"indicador de l'acció\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"missatge del canvi\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"entrada del registre\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"entrades del registre\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"Afegit \\\"%(object)s\\\".\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"Modificat \\\"%(object)s\\\" - %(changes)s\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"Eliminat \\\"%(object)s.\\\"\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"Objecte entrada del registre\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"cap\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"Modificat %s.\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"i\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Afegit %(name)s \\\"%(object)s\\\"\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Modificat %(list)s per a %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Eliminat %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"Cap camp modificat.\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"\"\n\"S'ha afegit amb èxit el/la %(name)s \\\"%(obj)s\\\". Pot editar-lo de nou a sota.\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\"El  %(name)s \\\"%(obj)s fou afegit satisfactòriament. Pos afegir un altre \"\n\"%(name)s a continuació.\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"El/la %(name)s \\\"%(obj)s\\\" ha estat afegit/da amb èxit.\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\"El %(name)s \\\"%(obj)s\\\" fou canviat satisfactòriament. Pot editar-lo un \"\n\"altra vegada a continuació.\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\"El %(name)s \\\"%(obj)s\\\" fou canviat satisfactòriament. Pots afegir un altre \"\n\"%(name)s a continuació.\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"S'ha modificat amb èxit el/la %(name)s \\\"%(obj)s.\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\"Heu de seleccionar els elements per poder realitzar-hi accions. No heu \"\n\"seleccionat cap element.\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"no heu seleccionat cap acció\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"Afegir %s\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"No existeix cap objecte %(name)s amb la clau primària %(key)r.\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"Modificar %s\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"Error de base de dades\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"%(count)s %(name)s s'ha modificat amb èxit.\"\nmsgstr[1] \"%(count)s %(name)s s'han modificat amb èxit.\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"%(total_count)s seleccionat(s)\"\nmsgstr[1] \"Tots %(total_count)s seleccionat(s)\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"0 de %(cnt)s seleccionats\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"El/la %(name)s \\\"%(obj)s\\\" s'ha eliminat amb èxit.\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"Modificar històric: %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"Iniciar sessió\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"Administració del lloc\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"Administració de %s\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"Data:\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"Hora:\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"Cercar\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"Afegir-ne un altre\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"Actualment:\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"Canviar:\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"No s'ha pogut trobar la pàgina\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"Ho sentim, però no s'ha pogut trobar la pàgina sol·licitada\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"Inici\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"Error del servidor\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"Error del servidor (500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"Error del servidor <em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\"S'ha produït un error. Se n'ha informat els administradors del lloc per \"\n\"correu electrònic, i hauria d'arreglar-se en breu. Gràcies per la vostra \"\n\"paciència.\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"Executar l'acció seleccionada\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"Anar\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"Feu clic aquí per seleccionar els objectes a totes les pàgines\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"Seleccioneu tots %(total_count)s %(module_name)s\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"Netejar la selecció\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"Benvingut/da,\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"Documentació\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"Canviar contrasenya\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"Finalitzar sessió\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"Lloc administratiu de Django\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"Administració de Django\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"Afegir\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"Històric\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"Veure al lloc\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"Si us plau, corregiu l'error mostrat a sota.\"\nmsgstr[1] \"Si us plau, corregiu els errors mostrats a sota.\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"Afegir %(name)s\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"Filtre\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"Treure de la ordenació\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"Prioritat d'ordenació: %(priority_number)s\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"Commutar ordenació\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"Eliminar\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"Eliminar el/la %(object_name)s '%(escaped_object)s' provocaria l'eliminació \"\n\"d'objectes relacionats, però el vostre compte no te permisos per esborrar \"\n\"els tipus d'objecte següents:\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\"Esborrar %(object_name)s '%(escaped_object)s' requeriria esborrar els \"\n\"següents objectes relacionats protegits:\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\"Esteu segurs de voler esborrar els/les %(object_name)s \\\"%(escaped_object)s\"\n\"\\\"? S'esborraran els següents elements relacionats:\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"Sí, n'estic segur\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"Eliminar múltiples objectes\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\"Esborrar els %(objects_name)s seleccionats faria que s'esborréssin objectes \"\n\"relacionats, però el vostre compte no té permisos per esborrar els següents \"\n\"tipus d'objectes:\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\"Esborrar els %(objects_name)s seleccionats requeriria esborrar els següents \"\n\"objectes relacionats protegits:\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\"N'esteu segur de voler esborrar els %(objects_name)s seleccionats? \"\n\"S'esborraran tots els objects següents i els seus elements relacionats:\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \"Per %(filter_title)s \"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"Models en l'aplicació %(name)s\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"Modificar\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"No teniu permís per editar res.\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"Accions recents\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"Les meves accions\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"Cap disponible\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"Contingut desconegut\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"Hi ha algun problema a la instal·lació de la vostra base de dades. Assegureu-\"\n\"vos que s'han creat les taules adients, i que la base de dades és llegible \"\n\"per l'usuari apropiat.\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"Contrasenya:\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"Heu oblidat la vostra contrasenya o nom d'usuari?\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"Data/hora\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"Usuari\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"Acció\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\"Aquest objecte no té historial de canvis. Probablement no es va afegir \"\n\"utilitzant aquest lloc administratiu.\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"Mostrar tots\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"Desar\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"Cerca\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"%(counter)s resultat\"\nmsgstr[1] \"%(counter)s resultats\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"%(full_result_count)s en total\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"Desar com a nou\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"Desar i afegir-ne un de nou\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"Desar i continuar editant\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\"Primer, entreu un nom d'usuari i una contrasenya. Després podreu editar més \"\n\"opcions de l'usuari.\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"Introduïu un nom d'usuari i contrasenya.\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"Introduïu una contrasenya per l'usuari <strong>%(username)s</strong>\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"Contrasenya\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"Contrasenya (de nou)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Introduïu la mateixa contrasenya de dalt, per fer-ne la verificació.\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"Eliminar\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"Afegir un/a altre/a %(verbose_name)s.\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"Eliminar?\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"Gràcies per passar una estona de qualitat al web durant el dia d'avui.\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"Iniciar sessió de nou\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"Canvi de contrasenya\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"Contrasenya canviada amb èxit\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"La seva contrasenya ha estat canviada.\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"Si us plau, introduïu la vostra contrasenya antiga, per seguretat, i tot \"\n\"seguit introduïu la vostra contrasenya nova dues vegades per verificar que \"\n\"l'heu escrita correctament.\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"Contrasenya antiga\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"Contrasenya nova\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"Canviar la meva contrasenya:\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"Restablir contrasenya\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"Contrasenya restablerta\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"\"\n\"S'ha canviat la vostra contrasenya. Ara podeu continuar i iniciar sessió.\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"Confirmació de restabliment de contrasenya\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"Introduïu la nova contrasenya\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"\"\n\"Si us plau, introduïu la vostra nova contrasenya dues vegades, per verificar \"\n\"que l'heu escrita correctament.\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"Contrasenya nova:\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"Confirmar contrasenya:\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"Restabliment de contrasenya fallat\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\"L'enllaç de restabliment de contrasenya era invàlid, potser perquè ja s'ha \"\n\"utilitzat. Si us plau, sol·liciteu un nou reestabliment de contrasenya.\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"Restabliment de contrasenya amb èxit\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\"Us hem enviat les instruccions per canviar la vostra contrasenya a l'adreça \"\n\"de correu electrònic que ens heu indicat. L'hauríeu de rebre en breu.\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\"Heu rebut aquest correu perquè vau sol·licitar restablir la contrasenya per \"\n\"al vostre compte d'usuari a %(site_name)s.\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"Si us plau, aneu a la pàgina següent i escolliu una nova contrasenya:\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"El vostre nom d'usuari, en cas que l'hagueu oblidat:\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"Gràcies per fer ús del nostre lloc!\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"L'equip de %(site_name)s\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\"Heu oblidat la vostra contrasenya? Introduïu la vostra adreça de correu \"\n\"electrònic a sota, i us enviarem instruccions per canviar-la.\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"Adreça de correu electrònic:\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"Restablir la meva contrasenya\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"Totes les dates\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"(Cap)\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"Seleccioneu %s\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"Seleccioneu %s per modificar\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/ca/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Carles Barrobés <carles@barrobes.com>, 2011, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-03-08 10:42+0000\\n\"\n\"Last-Translator: Carles Barrobés <carles@barrobes.com>\\n\"\n\"Language-Team: Catalan (http://www.transifex.com/projects/p/django/language/\"\n\"ca/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ca\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"%s Disponibles\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Aquesta és la llista de %s disponibles. En podeu escollir alguns \"\n\"seleccionant-los a la caixa de sota i fent clic a la fletxa \\\"Escollir\\\" \"\n\"entre les dues caixes.\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"Escriviu en aquesta caixa per a filtrar la llista de %s disponibles.\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"Filtre\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"Escollir-los tots\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"Feu clic per escollir tots els %s d'un cop.\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"Escollir\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"Eliminar\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"Escollit %s\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Aquesta és la llista de %s escollits. En podeu eliminar alguns seleccionant-\"\n\"los a la caixa de sota i fent clic a la fletxa \\\"Eliminar\\\" entre les dues \"\n\"caixes.\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"Esborrar-los tots\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"Feu clic per eliminar tots els %s escollits d'un cop.\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"%(sel)s de %(cnt)s seleccionat\"\nmsgstr[1] \"%(sel)s of %(cnt)s seleccionats\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\"Teniu canvis sense desar a camps editables individuals. Si executeu una \"\n\"acció, es perdran aquests canvis no desats.\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\"Heu seleccionat una acció, però encara no heu desat els vostres canvis a \"\n\"camps individuals. Si us plau premeu OK per desar. Haureu de tornar a \"\n\"executar l'acció.\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\"Heu seleccionat una acció i no heu fet cap canvi a camps individuals. \"\n\"Probablement esteu cercant el botó 'Anar' enlloc de 'Desar'.\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"\"\n\"Gener Febrer Març Abril Maig Juny Juliol Agost Setembre Octubre Novembre \"\n\"Desembre\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"dg dl dt dc dj dv ds\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"Mostrar\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"Ocultar\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"Ara\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"Rellotge\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"Escolliu una hora\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"Mitjanit\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"6 a.m.\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"Migdia\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"Cancel·lar\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"Avui\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"Calendari\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"Ahir\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"Demà\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/cs/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Jirka Vejrazka <Jirka.Vejrazka@gmail.com>, 2011.\n# Vlada Macek <macek@sandbox.cz>, 2012-2013.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-05 08:37+0000\\n\"\n\"Last-Translator: Vlada Macek <macek@sandbox.cz>\\n\"\n\"Language-Team: Czech (http://www.transifex.com/projects/p/django/language/\"\n\"cs/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: cs\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"Úspěšně odstraněno: %(count)d %(items)s.\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"Nelze smazat %(name)s\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"Jste si jisti?\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"Odstranit vybrané položky typu %(verbose_name_plural)s\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"Vše\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"Ano\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"Ne\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"Neznámé\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"Libovolné datum\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"Dnes\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"Posledních 7 dní\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"Tento měsíc\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"Tento rok\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\"Zadejte správné %(username)s a heslo pro personál. Obě pole mohou rozlišovat \"\n\"velká a malá písmena.\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"Přihlaste se znovu, vaše sezení vypršelo.\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"Operace:\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"čas operace\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"id položky\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"reprez. položky\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"příznak operace\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"zpráva o změně\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"položka protokolu\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"položky protokolu\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"Přidán objekt \\\"%(object)s\\\".\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"Změněn objekt \\\"%(object)s\\\" - %(changes)s\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"Odstraněn objekt \\\"%(object)s.\\\"\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"Objekt záznam v protokolu\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"Žádný\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"Změněno: %s\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"a\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Položka \\\"%(object)s\\\" typu %(name)s byla přidána.\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Změna polí: %(list)s pro položku \\\"%(object)s\\\" typu %(name)s.\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Položka \\\"%(object)s\\\" typu %(name)s byla odstraněna.\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"Nebyla změněna žádná pole.\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"\"\n\"Položka \\\"%(obj)s\\\" typu %(name)s byla úspěšně přidána. Níže můžete v \"\n\"úpravách pokračovat.\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\"Objekt \\\"%(obj)s\\\" typu %(name)s byl úspěšně přidán. Níže můžete přidat \"\n\"další %(name)s.\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"Položka \\\"%(obj)s\\\" typu %(name)s byla úspěšně přidána.\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\"Objekt \\\"%(obj)s\\\" typu %(name)s byl úspěšně změněn. Níže ho můžete znovu \"\n\"upravovat.\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\"Objekt \\\"%(obj)s\\\" typu %(name)s byl úspěšně změněn. Níže můžete přidat \"\n\"další %(name)s.\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"Položka \\\"%(obj)s\\\" typu %(name)s byla úspěšně změněna.\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\"K provedení hromadných operací je třeba vybrat nějaké položky. Nedošlo k \"\n\"žádným změnám.\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"Nebyla vybrána žádná operace.\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"%s: přidat\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"Položka \\\"%(name)s\\\" s primárním klíčem \\\"%(key)r\\\" neexistuje.\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"%s: změnit\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"Chyba databáze\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"Položka %(name)s byla úspěšně změněna.\"\nmsgstr[1] \"%(count)s položky %(name)s byly úspěšně změněny.\"\nmsgstr[2] \"%(count)s položek %(name)s bylo úspěšně změněno.\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"%(total_count)s položka vybrána.\"\nmsgstr[1] \"Všechny %(total_count)s položky vybrány.\"\nmsgstr[2] \"Vybráno všech %(total_count)s položek.\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"Vybraných je 0 položek z celkem %(cnt)s.\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"Položka \\\"%(obj)s\\\" typu %(name)s byla úspěšně odstraněna.\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"Historie změn: %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"Přihlášení\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"Správa webu\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"Správa aplikace %s\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"Datum:\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"Čas:\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"Hledat\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"Přidat další\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"Aktuálně:\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"Změna:\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"Stránka nenalezena\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"Požadovaná stránka nebyla bohužel nalezena.\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"Domů\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"Chyba serveru\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"Chyba serveru (500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"Chyba serveru <em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\"V systému došlo k chybě. Byla e-mailem nahlášena správcům, kteří by ji měli \"\n\"v krátké době opravit. Děkujeme za trpělivost.\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"Provést vybranou operaci\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"Provést\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"Klepnutím zde vyberete položky ze všech stránek.\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"Vybrat všechny položky typu %(module_name)s, celkem %(total_count)s.\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"Zrušit výběr\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"Vítejte, uživateli\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"Dokumentace\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"Změnit heslo\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"Odhlásit se\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"Správa webu Django\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"Správa systému Django\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"Přidat\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"Historie\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"Zobrazení na webu\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"Opravte níže uvedenou chybu.\"\nmsgstr[1] \"Opravte níže uvedené chyby.\"\nmsgstr[2] \"Opravte níže uvedené chyby.\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"%(name)s: přidat\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"Filtr\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"Přestat řadit\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"Priorita řazení: %(priority_number)s\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"Přehodit řazení\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"Odstranit\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"Odstranění položky \\\"%(escaped_object)s\\\" typu %(object_name)s by vyústilo v \"\n\"odstranění souvisejících položek. Nemáte však oprávnění k odstranění položek \"\n\"následujících typů:\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\"Odstranění položky '%(escaped_object)s' typu %(object_name)s by vyžadovalo \"\n\"odstranění souvisejících chráněných položek:\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\"Opravdu má být odstraněna položka \\\"%(escaped_object)s\\\" typu \"\n\"%(object_name)s? Následující související položky budou všechny odstraněny:\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"Ano, jsem si jist(a)\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"Odstranit vybrané položky\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\"Odstranění položky typu %(objects_name)s by vyústilo v odstranění \"\n\"souvisejících položek. Nemáte však oprávnění k odstranění položek \"\n\"následujících typů:\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\"Odstranění vybrané položky typu %(objects_name)s by vyžadovalo odstranění \"\n\"následujících souvisejících chráněných položek:\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\"Opravdu má být odstraněny vybrané položky typu %(objects_name)s? Všechny \"\n\"vybrané a s nimi související položky budou odstraněny:\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \" Dle: %(filter_title)s \"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"Modely v aplikaci %(name)s\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"Změnit\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"Nemáte oprávnění nic měnit.\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"Poslední operace\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"Vaše operace\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"Nic\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"Neznámý obsah\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"Potíže s nainstalovanou databází. Ujistěte se, že byly vytvořeny \"\n\"odpovídající tabulky a že databáze je přístupná pro čtení příslušným \"\n\"uživatelem.\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"Heslo:\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"Zapomněli jste heslo nebo uživatelské jméno?\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"Datum a čas\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"Uživatel\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"Operace\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\"Tato položka nemá historii změn. Pravděpodobně nebyla přidána tímto \"\n\"administračním rozhraním.\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"Zobrazit vše\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"Uložit\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"Hledat\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"%(counter)s výsledek\"\nmsgstr[1] \"%(counter)s výsledky\"\nmsgstr[2] \"%(counter)s výsledků\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"Celkem %(full_result_count)s\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"Uložit jako novou položku\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"Uložit a přidat další položku\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"Uložit a pokračovat v úpravách\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\"Nejdříve vložte uživatelské jméno a heslo. Poté budete moci upravovat více \"\n\"uživatelských nastavení.\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"Vložte uživatelské jméno a heslo.\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"Vložte nové heslo pro uživatele <strong>%(username)s</strong>.\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"Heslo\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"Heslo (znovu)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Pro ověření vložte stejné heslo znovu.\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"Odebrat\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"Přidat %(verbose_name)s\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"Odstranit?\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"Děkujeme za čas strávený s tímto webem.\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"Přihlaste se znovu\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"Změna hesla\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"Změna hesla byla úspěšná\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"Vaše heslo bylo změněno.\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"Vložte svoje současné heslo a poté vložte dvakrát heslo nové. Omezíme tak \"\n\"možnost překlepu.\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"Současné heslo\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"Nové heslo\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"Změnit heslo\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"Obnovení hesla\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"Heslo bylo obnoveno\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"Vaše heslo bylo nastaveno. Nyní se můžete přihlásit.\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"Potvrzení obnovy hesla\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"Vložte nové heslo\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"Vložte dvakrát nové heslo. Tak ověříme, že bylo zadáno správně.\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"Nové heslo:\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"Potvrdit heslo:\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"Obnovení hesla bylo neúspěšné\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\"Odkaz pro obnovení hesla byl neplatný, možná již byl použit. Požádejte o \"\n\"obnovení hesla znovu.\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"Obnovení hesla bylo úspěšné\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\"Na vámi zadanou e-mailovou adresu vám byly zaslány instrukce k nastavení  \"\n\"hesla, které by měly brzy dorazit.\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\"Tento e-mail vám byl zaslán na základě vyžádání obnovy hesla vašeho \"\n\"uživatelskému účtu na systému %(site_name)s.\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"Přejděte na následující stránku a zadejte nové heslo:\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"Pro jistotu vaše uživatelské jméno:\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"Děkujeme za používání našeho webu!\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"Tým aplikace %(site_name)s\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\"Zapomněli jste heslo? Zadejte níže e-mailovou adresu a systém vám odešle \"\n\"instrukce k nastavení nového.\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"E-mailová adresa:\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"Obnovit heslo\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"Všechna data\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"(None)\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"%s: vybrat\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"Vyberte položku %s ke změně\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/cs/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Jirka Vejrazka <Jirka.Vejrazka@gmail.com>, 2011.\n# Vlada Macek <macek@sandbox.cz>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-03-08 10:42+0000\\n\"\n\"Last-Translator: Vlada Macek <macek@sandbox.cz>\\n\"\n\"Language-Team: Czech (http://www.transifex.com/projects/p/django/language/\"\n\"cs/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: cs\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"Dostupné položky: %s\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Seznam dostupných položek %s. Jednotlivě je lze vybrat tak, že na ně v \"\n\"rámečku klepnete a pak klepnete na šipku \\\"Vybrat\\\" mezi rámečky.\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"\"\n\"Chcete-li filtrovat ze seznamu dostupných položek %s, začněte psát do tohoto \"\n\"pole.\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"Filtr\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"Vybrat vše\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"Chcete-li najednou vybrat všechny položky %s, klepněte sem.\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"Vybrat\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"Odebrat\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"Vybrané položky %s\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Seznam vybraných položek %s. Jednotlivě je lze odebrat tak, že na ně v \"\n\"rámečku klepnete a pak klepnete na šipku \\\"Odebrat mezi rámečky.\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"Odebrat vše\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"Chcete-li najednou odebrat všechny vybrané položky %s, klepněte sem.\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"Vybrána je %(sel)s položka z celkem %(cnt)s.\"\nmsgstr[1] \"Vybrány jsou %(sel)s položky z celkem %(cnt)s.\"\nmsgstr[2] \"Vybraných je %(sel)s položek z celkem %(cnt)s.\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\"V jednotlivých polích jsou neuložené změny, které budou ztraceny, pokud \"\n\"operaci provedete.\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\"Byla vybrána operace, ale dosud nedošlo k uložení změn jednotlivých polí. \"\n\"Uložíte klepnutím na tlačítko OK. Pak bude třeba operaci spustit znovu.\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\"Byla vybrána operace a jednotlivá pole nejsou změněná. Patrně hledáte \"\n\"tlačítko Provést spíše než Uložit.\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"\"\n\"leden únor březen duben květen červen červenec srpen září říjen listopad \"\n\"prosinec\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"n p ú s č p s\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"Zobrazit\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"Skrýt\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"Nyní\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"Hodiny\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"Vyberte čas\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"Půlnoc\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"6h ráno\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"Poledne\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"Storno\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"Dnes\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"Kalendář\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"Včera\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"Zítra\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/cy/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:52+0000\\n\"\n\"Last-Translator: Ramiro Morales <cramm0@gmail.com>\\n\"\n\"Language-Team: Welsh (http://www.transifex.com/projects/p/django/language/\"\n\"cy/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: cy\\n\"\n\"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != \"\n\"11) ? 2 : 3;\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"Ydych yn sicr?\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"Ie\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"Na\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"Unrhyw dyddiad\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"Heddiw\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"7 diwrnod gorffennol\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"Mis yma\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"Blwyddyn yma\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"amser gweithred\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"id gwrthrych\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"repr gwrthrych\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"fflag gweithred\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"neges newid\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"cofnod\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"cofnodion\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"Newidiwyd %s.\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"ac\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"Ychwanegu %s\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"Newidio %s\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"Hanes newid: %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"Mewngofnodi\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"Gweinyddiad safle\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"Dyddiad:\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"Amser:\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"Tudalen heb ei ddarganfod\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"Mae'n ddrwg gennym, ond nid darganfwyd y dudalen a dymunwyd\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"Adref\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"Gwall gweinyddwr\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"Gwall gweinyddwr (500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"Gwall Gweinyddwr <em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"Ewch\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"Croeso,\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"Dogfennaeth\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"Newid cyfrinair\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"Allgofnodi\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"Gweinyddiad safle Django\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"Gweinyddiad Django\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"Ychwanegu\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"Hanes\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"Gweld ar safle\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"Ychwanegu %(name)s\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"Dileu\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"Yndw, rwy'n sicr\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \"\"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"Newidio\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"Does genych ddim hawl i olygu unrhywbeth.\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"Gweithredau Diweddar\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"Fy Ngweithredau\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"Dim ar gael\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"Cyfrinair:\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"Dyddiad/amser\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"Defnyddiwr\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"Gweithred\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\"Does dim hanes newid gan y gwrthrych yma. Mae'n debyg ni ychwanegwyd drwy'r \"\n\"safle gweinydd yma.\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"Cadw\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"Cadw fel newydd\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"Cadw ac ychwanegu un arall\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"Cadw ac parhau i olygu\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"Diolch am dreulio amser ansawdd gyda'r safle we heddiw 'ma.\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"Ailmewngofnodi\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"Newid cyfrinair\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"Newid cyfrinair yn lwyddianus\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"Newidwyd eich cyfrinair.\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"Rhowch eich cyfrinair hen, er mwyn gwarchodaeth, yna rhowch eich cyfrinair \"\n\"newydd dwywaith er mwyn i ni wirio y teipiwyd yn gywir.\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"Newidio fy nghyfrinair\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"Ailosod cyfrinair\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"Cyfrinair newydd:\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"Cadarnhewch cyfrinair:\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"Ailosod cyfrinair yn lwyddianus\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"Eich enw defnyddiwr, rhag ofn chi wedi anghofio:\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"Diolch am ddefnyddio ein safle!\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"Y tîm %(site_name)s\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"Ailosodi fy nghyfrinair\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"Dyddiadau i gyd\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"Dewis %s\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"Dewis %s i newid\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/cy/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-03-08 10:42+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Welsh (http://www.transifex.com/projects/p/django/language/\"\n\"cy/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: cy\\n\"\n\"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != \"\n\"11) ? 2 : 3;\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"\"\n\"Ionawr Chwefror Mawrth Ebrill Mai Mehefin Gorffennaf Medi Hydref Tachwedd \"\n\"Rhagfyr\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"S Ll M M I G S\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"Nawr\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"Cloc\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"Dewis amser\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"Hanner nos\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"6 y.b.\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"Hanner dydd\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"Diddymu\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"Heddiw\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"Calendr\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"Ddoe\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"Yfory\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/da/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Christian Joergensen <christian@gmta.info>, 2012.\n# Dimitris Glezos <glezos@transifex.com>, 2012.\n# Erik Wognsen <r4mses@gmail.com>, 2011-2013.\n# Finn Gruwier <finn@gruwier.dk>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-13 04:48+0000\\n\"\n\"Last-Translator: Erik Wognsen <r4mses@gmail.com>\\n\"\n\"Language-Team: Danish (http://www.transifex.com/projects/p/django/language/\"\n\"da/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: da\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"%(count)d %(items)s blev slettet.\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"Kan ikke slette %(name)s \"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"Er du sikker?\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"Slet valgte %(verbose_name_plural)s\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"Alle\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"Ja\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"Nej\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"Ukendt\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"Når som helst\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"I dag\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"De sidste 7 dage\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"Denne måned\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"Dette år\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\"Indtast venligst det korrekte %(username)s og adgangskode for en \"\n\"personalekonto. Bemærk at begge felter kan være versalfølsomme.\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"Log venligst ind igen, da din session er udløbet.\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"Handling\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"handlingstid\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"objekt-ID\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"objekt repr\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"handlingsflag\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"ændringsmeddelelse\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"logmeddelelse\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"logmeddelelser\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"Tilføjede \\\"%(object)s\\\".\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"Ændrede \\\"%(object)s\\\" - %(changes)s\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"Slettede \\\"%(object)s\\\".\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"LogEntry-objekt\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"Ingen\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"Ændrede %s.\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"og\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Tilføjede %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Ændrede %(list)s for %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Slettede %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"Ingen felter ændret.\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" blev tilføjet. Du kan redigere den/det igen herunder.\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" blev tilføjet. Du kan endnu en/et %(name)s herunder.\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" blev tilføjet.\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" blev ændret. Du kan redigere den/det igen herunder.\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" blev ændret. Du kan tilføje endnu en/et %(name)s \"\n\"herunder.\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" blev ændret.\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\"Der skal være valgt nogle emner for at man kan udføre handlinger på dem. \"\n\"Ingen emner er blev ændret.\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"Ingen handling valgt.\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"Tilføj %s\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"Der findes ikke et %(name)s-objekt med primærnøgle %(key)r.\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"Ret %s\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"databasefejl\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"%(count)s %(name)s blev ændret.\"\nmsgstr[1] \"%(count)s %(name)s blev ændret.\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"%(total_count)s valgt\"\nmsgstr[1] \"Alle %(total_count)s valgt\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"0 af %(cnt)s valgt\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" blev slettet.\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"Ændringshistorik: %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"Log ind\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"Website-administration\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"Administration af %s\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"Dato:\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"Tid:\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"Slå op\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"Tilføj endnu en\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"Nuværende:\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"Ændring:\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"Siden blev ikke fundet\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"Vi beklager, men den ønskede side kunne ikke findes\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"Hjem\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"Serverfejl\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"Serverfejl (500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"Serverfejl <em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\"Der opstod en fejl. Fejlen er rapporteret til website-administratoren via e-\"\n\"mail, og vil blive rettet hurtigst muligt. Tak for din tålmodighed.\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"Udfør den valgte handling\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"Udfør\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"Klik her for at vælge objekter på tværs af alle sider\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"Vælg alle %(total_count)s  %(module_name)s \"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"Ryd valg\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"Velkommen,\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"Dokumentation\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"Skift adgangskode\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"Log ud\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"Django website-administration\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"Django administration\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"Tilføj\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"Historik\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"Se på website\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"Ret venligst fejlen herunder.\"\nmsgstr[1] \"Ret venligst fejlene herunder.\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"Tilføj %(name)s\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"Filtrer\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"Fjern fra sortering\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"Sorteringsprioritet: %(priority_number)s\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"Skift sortering\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"Slet\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"Hvis du sletter %(object_name)s '%(escaped_object)s', vil du også slette  \"\n\"relaterede objekter, men din konto har ikke rettigheder til at slette \"\n\"følgende objekttyper:\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\"Sletning af %(object_name)s  ' %(escaped_object)s ' vil kræve sletning af \"\n\"følgende beskyttede relaterede objekter:\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\"Er du sikker på du vil slette %(object_name)s \\\"%(escaped_object)s\\\"? Alle \"\n\"de følgende relaterede objekter vil blive slettet:\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"Ja, jeg er sikker\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"Slet flere objekter\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\"Sletning af de valgte %(objects_name)s  ville resultere i sletning af \"\n\"relaterede objekter, men din konto har ikke tilladelse til at slette \"\n\"følgende typer af objekter:\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\"Sletning af de valgte %(objects_name)s  vil kræve sletning af følgende \"\n\"beskyttede relaterede objekter:\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\"Er du sikker på du vil slette de valgte %(objects_name)s? Alle de følgende \"\n\"objekter og deres relaterede emner vil blive slettet:\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \" Efter %(filter_title)s \"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"Modeller i applikationen %(name)s\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"Ret\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"Du har ikke rettigheder til at foretage ændringer.\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"Seneste handlinger\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"Mine handlinger\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"Ingen tilgængelige\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"Ukendt indhold\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"Der er noget galt med databaseinstallationen. Kontroller om \"\n\"databasetabellerne er blevet oprettet og at databasen er læsbar for den \"\n\"pågældende bruger.\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"Adgangskode:\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"Har du glemt dit password eller brugernavn?\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"Dato/tid\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"Bruger\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"Funktion\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\"Dette objekt har ingen ændringshistorik. Det blev formentlig ikke tilføjet \"\n\"via dette administrations-site\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"Vis alle\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"Gem\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"Søg\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"%(counter)s resultat\"\nmsgstr[1] \"%(counter)s resultater\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"%(full_result_count)s i alt\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"Gem som ny\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"Gem og tilføj endnu en\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"Gem og fortsæt med at redigere\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\"Indtast først et brugernavn og en adgangskode. Derefter får du yderligere \"\n\"redigeringsmuligheder.\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"Indtast et brugernavn og en adgangskode.\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"Indtast en ny adgangskode for brugeren <strong>%(username)s</strong>.\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"Adgangskode\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"Adgangskode (igen)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Indtast den samme adgangskode som ovenfor for verifikation.\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"Fjern\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"Tilføj endnu en %(verbose_name)s\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"Slet?\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"Tak for den kvalitetstid du brugte på websitet i dag.\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"Log ind igen\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"Skift adgangskode\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"Adgangskoden blev ændret\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"Din adgangskode blev ændret.\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"Indtast venligst din gamle adgangskode for en sikkerheds skyld og indtast så \"\n\"din nye adgangskode to gange, så vi kan være sikre på, at den er indtastet \"\n\"korrekt.\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"Gammel adgangskode\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"Ny adgangskode\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"Skift min adgangskode\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"Nulstil adgangskode\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"Adgangskoden blev nulstillet\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"Din adgangskode er blevet sat. Du kan logge ind med den nu.\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"Bekræftelse for nulstilling af adgangskode\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"Indtast ny adgangskode\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"\"\n\"Indtast venligst din nye adgangskode to gange, så vi kan være sikre på, at \"\n\"den er indtastet korrekt.\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"Ny adgangskode:\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"Bekræft ny adgangskode:\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"Adgangskoden blev ikke nulstillet\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\"Linket for nulstilling af adgangskoden er ugyldigt, måske fordi det allerede \"\n\"har været brugt. Anmod venligst påny om nulstilling af adgangskoden.\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"Adgangskoden blev nulstillet\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\"Vi har sendt en e-mail til den adresse, du angav, med instruktioner i at \"\n\"vælge en ny adgangskode . Du skulle modtage e-mailen om kort tid.\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\"Du modtager denne e-mail, fordi du har anmodet om en nulstilling af \"\n\"adgangskoden til din brugerkonto ved %(site_name)s .\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"Gå venligst til denne side og vælg en ny adgangskode:\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"For det tilfælde at du skulle have glemt dit brugernavn er det:\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"Tak fordi du brugte vores website!\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"Med venlig hilsen %(site_name)s\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\"Har du glemt din adgangskode? Skriv din e-mail-adresse herunder, så sender \"\n\"vi dig instruktioner i at vælge en ny adgangskode.\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"E-mail-adresse:\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"Nulstil min adgangskode\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"Alle datoer\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"(Ingen)\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"Vælg %s\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"Vælg %s, der skal ændres\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/da/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Christian Joergensen <christian@gmta.info>, 2012.\n# Erik Wognsen <r4mses@gmail.com>, 2012.\n# Finn Gruwier <finn@gruwier.dk>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-03-12 20:46+0000\\n\"\n\"Last-Translator: Erik Wognsen <r4mses@gmail.com>\\n\"\n\"Language-Team: Danish (http://www.transifex.com/projects/p/django/language/\"\n\"da/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: da\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"Tilgængelige %s\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Dette er listen over tilgængelige %s. Du kan vælge dem enkeltvis ved at \"\n\"markere dem i kassen nedenfor og derefter klikke på \\\"Vælg\\\"-pilen mellem de \"\n\"to kasser.\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"Skriv i dette felt for at filtrere listen af tilgængelige %s.\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"Filtrér\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"Vælg alle\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"Klik for at vælge alle %s med det samme.\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"Vælg\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"Fjern\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"Valgte %s\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Dette er listen over valgte %s. Du kan fjerne dem enkeltvis ved at markere \"\n\"dem i kassen nedenfor og derefter klikke på \\\"Fjern\\\"-pilen mellem de to \"\n\"kasser.\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"Fjern alle\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"Klik for at fjerne alle valgte %s med det samme.\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"%(sel)s af %(cnt)s valgt\"\nmsgstr[1] \"%(sel)s af %(cnt)s valgt\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\"Du har ugemte ændringer af et eller flere redigerbare felter. Hvis du \"\n\"udfører en handling fra drop-down-menuen, vil du miste disse ændringer.\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\"Du har valgt en handling, men du har ikke gemt dine ændringer til et eller \"\n\"flere felter. Klik venligst OK for at gemme og vælg dernæst handlingen igen.\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\"Du har valgt en handling, og du har ikke udført nogen ændringer på felter. \"\n\"Det, du søger er formentlig Udfør-knappen i stedet for Gem-knappen.\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"\"\n\"Januar Februar Marts April Maj Juni Juli August September Oktober November \"\n\"December\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"S M T O T F L\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"Vis\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"Skjul\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"Nu\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"Ur\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"Vælg et tidspunkt\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"Midnat\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"6 morgen\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"Middag\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"Annuller\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"I dag\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"Kalender\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"I går\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"I morgen\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/de/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# André Hagenbruch <ahagenbruch@googlemail.com>, 2012.\n# apollo13 <florian@apolloner.eu>, 2011.\n# Dimitris Glezos <glezos@transifex.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011-2013.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-05 19:38+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: German (http://www.transifex.com/projects/p/django/language/\"\n\"de/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: de\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"Erfolgreich %(count)d %(items)s gelöscht.\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"Kann %(name)s nicht löschen\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"Sind Sie sicher?\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"Ausgewählte %(verbose_name_plural)s löschen\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"Alle\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"Ja\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"Nein\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"Unbekannt\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"Alle Daten\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"Heute\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"Letzte 7 Tage\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"Diesen Monat\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"Dieses Jahr\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\"Bitte %(username)s und Passwort für einen Staff-Account korrekt eingeben.\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"Bitte melden Sie sich erneut an, da Ihre Sitzung abgelaufen ist.\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"Aktion:\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"Zeitpunkt der Aktion\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"Objekt-ID\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"Objekt Darst.\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"Aktionskennzeichen\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"Änderungsmeldung\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"Logeintrag\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"Logeinträge\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"\\\"%(object)s\\\" hinzufügt.\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"\\\"%(object)s\\\" verändert - %(changes)s\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"\\\"%(object)s\\\" gelöscht.\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"LogEntry Objekt\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"-\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"%s geändert.\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"und\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"%(name)s \\\"%(object)s\\\" hinzugefügt.\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"%(list)s von %(name)s \\\"%(object)s\\\" geändert.\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"%(name)s \\\"%(object)s\\\" gelöscht.\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"Keine Felder geändert.\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" wurde erfolgreich hinzugefügt und kann unten geändert \"\n\"werden.\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" wurde erfolgreich hinzugefügt. Es kann jetzt ein \"\n\"weiteres %(name)s unten hinzugefügt werden.\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" wurde erfolgreich hinzugefügt.\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" wurde erfolgreich geändert. Weitere Änderungen können \"\n\"unten vorgenommen werden.\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" wurde erfolgreich geändert. Es kann jetzt ein weiteres \"\n\"%(name)s unten hinzugefügt werden.\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" wurde erfolgreich geändert.\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\"Es müssen Objekte aus der Liste ausgewählt werden, um Aktionen \"\n\"durchzuführen. Es wurden keine Objekte geändert.\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"Keine Aktion ausgewählt.\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"%s hinzufügen\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"\"\n\"Das %(name)s-Objekt mit dem Primärschlüssel %(key)r ist nicht vorhanden.\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"%s ändern\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"Datenbankfehler\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"%(count)s \\\"%(name)s\\\" wurde erfolgreich geändert.\"\nmsgstr[1] \"%(count)s \\\"%(name)s\\\" wurden erfolgreich geändert.\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"%(total_count)s ausgewählt\"\nmsgstr[1] \"Alle %(total_count)s ausgewählt\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"0 von %(cnt)s ausgewählt\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" wurde erfolgreich gelöscht.\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"Änderungsgeschichte: %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"Anmelden\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"Website-Verwaltung\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"%s-Verwaltung\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"Datum:\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"Zeit:\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"Suchen\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"Neu hinzufügen\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"Aktuell:\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"Ändern:\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"Seite nicht gefunden\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"\"\n\"Es tut uns leid, aber die angeforderte Seite konnte nicht gefunden werden.\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"Start\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"Serverfehler\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"Serverfehler (500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"Serverfehler <em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\"Ein Fehler ist aufgetreten und wurde an die Administratoren per E-Mail \"\n\"gemeldet. Danke für die Geduld, der Fehler sollte in Kürze behoben sein.\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"Ausgewählte Aktion ausführen\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"Ausführen\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"Hier klicken, um die Objekte aller Seiten auszuwählen\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"Alle %(total_count)s %(module_name)s auswählen\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"Auswahl widerrufen\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"Willkommen,\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"Dokumentation\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"Passwort ändern\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"Abmelden\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"Django-Systemverwaltung\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"Django-Verwaltung\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"Hinzufügen\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"Geschichte\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"Auf der Website anzeigen\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"Bitte den aufgeführten Fehler korrigieren.\"\nmsgstr[1] \"Bitte die aufgeführten Fehler korrigieren.\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"%(name)s hinzufügen\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"Filter\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"Aus der Sortierung entfernen\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"Sortierung: %(priority_number)s\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"Sortierung ein-/ausschalten\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"Löschen\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"Das Löschen des %(object_name)s \\\"%(escaped_object)s\\\" hätte das Löschen \"\n\"davon abhängiger Daten zur Folge, aber Sie haben nicht die nötigen Rechte, \"\n\"um die folgenden davon abhängigen Daten zu löschen:\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\"Das Löschen von %(object_name)s „%(escaped_object)s“ würde ein Löschen der \"\n\"folgenden geschützten verwandten Objekte erfordern:\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\"Sind Sie sicher, dass Sie %(object_name)s \\\"%(escaped_object)s\\\" löschen \"\n\"wollen? Es werden zusätzlich die folgenden davon abhängigen Daten gelöscht:\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"Ja, ich bin sicher\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"Mehrere Objekte löschen\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\"Das Löschen der ausgewählten %(objects_name)s würde im Löschen geschützter \"\n\"verwandter Objekte resultieren, allerdings besitzt Ihr Benutzerkonto nicht \"\n\"die nötigen Rechte, um diese zu löschen:\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\"Das Löschen der ausgewählten %(objects_name)s würde ein Löschen der \"\n\"folgenden geschützten verwandten Objekte erfordern:\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\"Sind Sie sicher, dass Sie die ausgewählten %(objects_name)s löschen wollen? \"\n\"Alle folgenden Objekte und ihre verwandten Objekte werden gelöscht:\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \" Nach %(filter_title)s \"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"Modelle der %(name)s-Anwendung\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"Ändern\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"Sie haben keine Berechtigung, irgendetwas zu ändern.\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"Kürzliche Aktionen\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"Meine Aktionen\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"Keine vorhanden\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"Unbekannter Inhalt\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"Etwas stimmt nicht mit der Datenbankkonfiguration. Bitte sicherstellen, dass \"\n\"die richtigen Datenbanktabellen angelegt wurden und die Datenbank vom \"\n\"verwendeten Datenbankbenutzer auch lesbar ist.\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"Passwort:\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"Benutzername oder Passwort vergessen?\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"Datum/Zeit\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"Benutzer\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"Aktion\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\"Dieses Objekt hat keine Änderungsgeschichte. Es wurde möglicherweise nicht \"\n\"über diese Verwaltungsseiten angelegt.\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"Zeige alle\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"Sichern\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"Suchen\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"%(counter)s Ergebnis\"\nmsgstr[1] \"%(counter)s Ergebnisse\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"%(full_result_count)s gesamt\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"Als neu sichern\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"Sichern und neu hinzufügen\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"Sichern und weiter bearbeiten\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\"Zuerst einen Benutzer und ein Passwort eingeben. Danach können weitere \"\n\"Optionen für den Benutzer geändert werden.\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"Bitte einen Benutzernamen und ein Passwort eingeben.\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"\"\n\"Bitte geben Sie ein neues Passwort für den Benutzer <strong>%(username)s</\"\n\"strong> ein.\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"Passwort\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"Passwort (wiederholen)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Bitte das gleiche Passwort zur Überprüfung nochmal eingeben.\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"Entfernen\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"%(verbose_name)s hinzufügen\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"Löschen?\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"Vielen Dank, dass Sie hier ein paar nette Minuten verbracht haben.\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"Erneut anmelden\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"Passwort ändern\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"Passwort erfolgreich geändert\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"Ihr Passwort wurde geändert.\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"Bitte geben Sie aus Sicherheitsgründen erst Ihr altes Passwort und darunter \"\n\"dann zweimal (um sicherzustellen, dass Sie es korrekt eingegeben haben) das \"\n\"neue Passwort ein.\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"Altes Passwort\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"Neues Passwort\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"Mein Passwort ändern\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"Passwort zurücksetzen\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"Passwort zurücksetzen beendet\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"Ihr Passwort wurde zurückgesetzt. Sie können sich nun anmelden.\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"Zurücksetzen des Passworts bestätigen\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"Neues Passwort eingeben\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"\"\n\"Bitte geben Sie Ihr neues Passwort zweimal ein, damit wir überprüfen können, \"\n\"ob es richtig eingetippt wurde.\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"Neues Passwort:\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"Passwort wiederholen:\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"Passwort wurde nicht erfolgreich zurückgesetzt\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\"Der Link zum Zurücksetzen Ihres Passworts ist ungültig, wahrscheinlich weil \"\n\"er schon einmal benutzt wurde. Bitte setzen Sie Ihr Passwort erneut zurück.\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"Passwort wurde erfolgreich zurückgesetzt\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\"Die Anweisungen zum Setzen des Passworts wurde an die eingegebene E-Mail-\"\n\"Adresse versendet.\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\"Diese E-Mail wurde aufgrund einer Anfrage zum Zurücksetzen des Passworts auf \"\n\"der Website %(site_name)s versendet.\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"Bitte öffnen Sie folgende Seite, um Ihr neues Passwort einzugeben:\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"Ihr Benutzername, falls Sie ihn vergessen haben:\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"Vielen Dank, dass Sie unsere Webseite benutzen!\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"Das Team von %(site_name)s\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\"Passwort vergessen? Einfach die E-Mail-Adresse unten eingeben und den \"\n\"Anweisungen zum Zurücksetzen des Passworts in der E-Mail folgen.\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"E-Mail-Adresse:\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"Mein Passwort zurücksetzen\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"Alle Daten\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"(leer)\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"%s auswählen\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"%s zur Änderung auswählen\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/de/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# André Hagenbruch <ahagenbruch@googlemail.com>, 2011, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-03-08 10:42+0000\\n\"\n\"Last-Translator: André Hagenbruch <ahagenbruch@googlemail.com>\\n\"\n\"Language-Team: German (http://www.transifex.com/projects/p/django/language/\"\n\"de/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: de\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"Verfügbare %s\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Dies ist die Liste der verfügbaren %s. Durch Markierung im unten stehenden \"\n\"Feld und Klicken des 'Auswählen'-Pfeils zwischen den beiden Feldern lassen \"\n\"sich einige auswählen.\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"\"\n\"Durch Tippen in diesem Feld lässt sich die Liste der verfügbaren %s \"\n\"eingrenzen.\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"Filter\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"Alle auswählen\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"Klicken, um alle %s auf einmal auszuwählen.\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"Auswählen\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"Entfernen\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"Ausgewählte %s\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Dies ist die Liste der ausgewählten %s. Durch Markierung im unten stehenden \"\n\"Feld und Klicken des \\\"Entfernen\\\"-Pfeils zwischen den Feldern lassen sich \"\n\"einige entfernen.\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"Alle entfernen\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"Klicken, um alle ausgewählten %s auf einmal zu entfernen.\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"%(sel)s von %(cnt)s ausgewählt\"\nmsgstr[1] \"%(sel)s von %(cnt)s ausgewählt\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\"Sie haben Änderungen an editierbaren Feldern vorgenommen und nicht \"\n\"gespeichert. Wollen Sie die Aktion trotzdem ausführen und Ihre Änderungen \"\n\"verwerfen?\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\"Sie haben eine Aktion ausgewählt, aber ihre vorgenommenen Änderungen nicht \"\n\"gespeichert. Klicken Sie OK, um dennoch zu speichern. Danach müssen Sie die \"\n\"Aktion erneut ausführen.\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\"Sie haben eine Aktion ausgewählt, aber keine Änderungen an editierbaren \"\n\"Feldern vorgenommen. Sie wollten wahrscheinlich auf 'Ausführen' und nicht \"\n\"auf 'Speichern' klicken.\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"\"\n\"Januar Februar März April Mai Juni Juli August September Oktober November \"\n\"Dezember\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"S M D M D F S\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"Einblenden\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"Ausblenden\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"Jetzt\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"Uhr\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"Uhrzeit\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"Mitternacht\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"6 Uhr\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"Mittag\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"Abbrechen\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"Heute\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"Kalender\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"Gestern\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"Morgen\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/el/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Dimitris Glezos <glezos@indifex.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Yorgos Pagles <y.pagles@gmail.com>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:52+0000\\n\"\n\"Last-Translator: Ramiro Morales <cramm0@gmail.com>\\n\"\n\"Language-Team: Greek (http://www.transifex.com/projects/p/django/language/\"\n\"el/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: el\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"Επιτυχημένη διαγραφή %(count)d %(items)s.\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"Αδύνατη τη διαγραφή του %(name)s\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"Είστε σίγουροι;\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"Διαγραφη επιλεγμένων %(verbose_name_plural)s\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"Όλα\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"Ναι\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"Όχι\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"Άγνωστο\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"Οποιαδήποτε ημερομηνία\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"Σήμερα\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"Τελευταίες 7 ημέρες\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"Αυτόν το μήνα\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"Αυτόν το χρόνο\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"Η συνεδρία σας έχει λήξει. Παρακαλούμε συνδεθείτε ξανά.\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"Ενέργεια:\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"ώρα ενέργειας\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"κωδικός αντικειμένου\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"αναπαράσταση αντικειμένου\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"σημαία ενέργειας\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"αλλαγή μηνύματος\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"εγγραφή καταγραφής\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"εγγραφές καταγραφής\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"Προστέθηκαν \\\"%(object)s\\\".\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"Αλλάχθηκαν \\\"%(object)s\\\" - %(changes)s\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"Διαγράφηκαν \\\"%(object)s.\\\"\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"LogEntry Object\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"Κανένα\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"Έγινε επεξεργασία του %s.\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"και\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Προστέθηκε %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Έγινε επεξεργασία %(list)s για %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Διαγράφη %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"Κανένα πεδίο δεν άλλαξε.\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"\"\n\"Το %(name)s \\\"%(obj)s\\\" αποθηκεύτηκε με επιτυχία. Μπορείτε να το \"\n\"επεξεργαστείτε πάλι παρακάτω.\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"Το %(name)s \\\"%(obj)s\\\" αποθηκεύτηκε με επιτυχία.\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"Το %(name)s \\\"%(obj)s\\\" αλλάχτηκε με επιτυχία.\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\"Καμμία αλλαγή δεν έχει πραγματοποιηθεί ακόμα γιατί δεν έχετε επιλέξει κανένα \"\n\"αντικείμενο. Πρέπει να επιλέξετε ένα ή περισσότερα αντικείμενα για να \"\n\"πραγματοποιήσετε ενέργειες σε αυτά.\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"Δεν έχει επιλεγεί ενέργεια.\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"Προσθήκη %s\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \" Το αντικείμενο %(name)s  με πρωτεύον κλειδί %(key)r δεν βρέθηκε.\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"Αλλαγή του %s\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"Σφάλμα βάσης δεδομένων\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"%(count)s %(name)s άλλαξε επιτυχώς.\"\nmsgstr[1] \"%(count)s %(name)s άλλαξαν επιτυχώς.\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"Επιλέχθηκε %(total_count)s\"\nmsgstr[1] \"Επιλέχθηκαν και τα %(total_count)s\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"Επιλέγησαν 0 από %(cnt)s\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"Το %(name)s \\\"%(obj)s\\\" διαγράφηκε με επιτυχία.\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"Ιστορικό αλλαγών: %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"Σύνδεση\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"Διαχείριση του ιστότοπου\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"Διαχείριση %s\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"Ημ/νία:\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"Ώρα:\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"Αναζήτηση\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"Προσθέστε κι άλλο\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"Η σελίδα δε βρέθηκε\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"Λυπόμαστε, αλλά η σελίδα που ζητήθηκε δε μπόρεσε να βρεθεί.\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"Αρχική\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"Σφάλμα εξυπηρετητή\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"Σφάλμα εξυπηρετητή (500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"Σφάλμα εξυπηρετητή <em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"Εκτέλεση της επιλεγμένης ενέργειας\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"Μετάβαση\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"Κάντε κλικ εδώ για να επιλέξετε τα αντικείμενα σε όλες τις σελίδες\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"Επιλέξτε και τα %(total_count)s %(module_name)s\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"Καθαρισμός επιλογής\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"Καλωσήρθατε,\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"Τεκμηρίωση\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"Αλλαγή συνθηματικού\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"Αποσύνδεση\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"Διαχειριστής ιστότοπου Django\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"Διαχείριση Django\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"Προσθήκη\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"Ιστορικό\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"Προβολή στην ιστοσελίδα\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"Παρακαλούμε διορθώστε το παρακάτω λάθος.\"\nmsgstr[1] \"Παρακαλούμε διορθώστε τα παρακάτω λάθη.\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"Προσθήκη %(name)s\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"Φίλτρο\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"Διαγραφή από την ταξινόμηση\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"Προτεραιότητα ταξινόμησης: %(priority_number)s\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"Εναλλαγή ταξινόμησης\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"Διαγραφή\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"Επιλέξατε την διαγραφή του αντικειμένου '%(escaped_object)s' είδους \"\n\"%(object_name)s. Αυτό συνεπάγεται την διαγραφή συσχετισμένων αντικειμενων \"\n\"για τα οποία δεν έχετε δικάιωμα διαγραφής. Τα είδη των αντικειμένων αυτών \"\n\"είναι:\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\"Η διαγραφή του %(object_name)s '%(escaped_object)s'  απαιτεί την διαγραφή \"\n\"των παρακάτω προστατευμένων αντικειμένων:\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\"Επιβεβαιώστε ότι επιθημείτε την διαγραφή του %(object_name)s \"\n\"\\\"%(escaped_object)s\\\". Αν προχωρήσετε με την διαγραφή όλα τα παρακάτω \"\n\"συσχετισμένα αντικείμενα θα διαγραφούν επίσης:\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"Ναι, είμαι βέβαιος\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"Διαγραφή πολλών αντικειμένων\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\"Η διαγραφή των επιλεγμένων %(objects_name)s θα είχε σαν αποτέλεσμα την \"\n\"διαγραφή συσχετισμένων αντικειμένων για τα οποία δεν έχετε το διακαίωμα \"\n\"διαγραφής:\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\"Η διαγραφή των επιλεγμένων %(objects_name)s απαιτεί την διαγραφή των \"\n\"παρακάτω προστατευμένων αντικειμένων:\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\"Επιβεβαιώστε ότι επιθημείτε την διαγραφή των επιλεγμένων %(objects_name)s . \"\n\"Αν προχωρήσετε με την διαγραφή όλα τα παρακάτω συσχετισμένα αντικείμενα θα \"\n\"διαγραφούν επίσης:\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \" Ανά %(filter_title)s \"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"Επεξεργασία\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"Δεν έχετε δικαίωμα να επεξεργαστείτε τίποτα.\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"Πρόσφατες ενέργειες\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"Οι ενέργειες μου\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"Κανένα διαθέσιμο\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"Άγνωστο περιεχόμενο\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"Φαίνεται να υπάρχει πρόβλημα με την εγκατάσταση της βάσης σας. Θα πρέπει να \"\n\"βεβαιωθείτε ότι οι απαραίτητοι πίνακες έχουν δημιουργηθεί και ότι η βάση \"\n\"είναι προσβάσιμη από τον αντίστοιχο χρήστη που έχετε δηλώσει.\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"Συνθηματικό:\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"Ξεχάσατε το συνθηματικό ή τον κωδικό χρήστη σας;\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"Ημερομηνία/ώρα\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"Χρήστης\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"Ενέργεια\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\"Δεν υπάρχει ιστορικό αλλαγών γι' αυτό το αντικείμενο. Είναι πιθανό η \"\n\"προσθήκη του να μην πραγματοποιήθηκε χρησιμοποιώντας το διαχειριστικό.\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"Εμφάνιση όλων\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"Αποθήκευση\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"Αναζήτηση\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"%(counter)s αποτέλεσμα\"\nmsgstr[1] \"%(counter)s αποτελέσματα\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"%(full_result_count)s συνολικά\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"Αποθήκευση ως νέο\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"Αποθήκευση και προσθήκη καινούριου\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"Αποθήκευση και συνέχεια επεξεργασίας\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\"Αρχικά εισάγετε το όνομα χρήστη και τον κωδικό πρόσβασης. Μετά την \"\n\"ολοκλήρωση αυτού του βήματος θα έχετε την επιλογή να προσθέσετε όλα τα \"\n\"υπόλοιπα στοιχεία για τον χρήστη.\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"Εισάγετε όνομα χρήστη και κωδικό πρόσβασης.\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"\"\n\"Εισάγετε ένα νέο κωδικό πρόσβασης για τον χρήστη <strong>%(username)s</\"\n\"strong>.\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"Συνθηματικό\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"Συνθηματικό (ξανά)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Εισάγετε το ίδιο συνθηματικό όπως παραπάνω, για λόγους επιβεβαίωσης.\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"Αφαίρεση\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"Προσθήκη νέου %(verbose_name)s\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"Θέλετε να πραγματοποιηθεί διαγραφή?\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"Ευχαριστούμε που διαθέσατε κάποιο ποιοτικό χρόνο στον ιστότοπο σήμερα.\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"Σύνδεση ξανά\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"Αλλαγή συνθηματικού\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"Επιτυχής αλλαγή συνθηματικού\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"Το συνθηματικό σας έχει αλλαχτεί.\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"Παρακαλούμε εισάγετε το παλιό σας συνθηματικό, για λόγους ασφάλειας, και \"\n\"κατόπιν εισάγετε το νέο σας συνθηματικό δύο φορές ούτως ώστε να \"\n\"πιστοποιήσουμε ότι το πληκτρολογήσατε σωστά.\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"Προηγούμενος κωδικός πρόσβασης\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"Νέος κωδικός πρόσβασης\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"Αλλαγή του συνθηματικού μου\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"Επαναφορά συνθηματικού\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"Ολοκληρώθηκε η επαναφορά του κωδικού πρόσβασης.\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"\"\n\"Ορίσατε επιτυχώς έναν κωδικό πρόσβασής. Πλέον έχετε την δυνατότητα να \"\n\"συνδεθήτε.\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"Επιβεβαίωση επαναφοράς κωδικού πρόσβασης\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"Πληκτρολογήστε νέο συνθηματικό\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"\"\n\"Παρακαλούμε πληκτρολογήστε το νέο κωδικό πρόσβασης δύο φορές ώστε να \"\n\"βεβαιωθούμε ότι δεν πληκτρολογήσατε κάποιον χαρακτήρα λανθασμένα.\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"Νέο συνθηματικό:\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"Επιβεβαίωση συνθηματικού:\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"Επαναφορά συνθηματικού ανεπιτυχής\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\"Ο σύνδεσμος που χρησιμοποιήσατε για την επαναφορά του κωδικού πρόσβασης δεν \"\n\"είναι πλεόν διαθέσιμος. Πιθανώς έχει ήδη χρησιμοποιηθεί. Θα χρειαστεί να \"\n\"πραγματοποιήσετε και πάλι την διαδικασία αίτησης επαναφοράς του κωδικού \"\n\"πρόσβασης.\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"Επιτυχής επαναφορά συνθηματικού\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"\"\n\"Παρακαλούμε επισκεφθήτε την ακόλουθη σελίδα και επιλέξτε ένα νέο κωδικό \"\n\"πρόσβασης: \"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"\"\n\"Το όνομα χρήστη με το οποίο είστε καταχωρημένος για την περίπτωση στην οποία \"\n\"το έχετε ξεχάσει:\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"Ευχαριστούμε που χρησιμοποιήσατε τον ιστότοπο μας!\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"Η ομάδα του %(site_name)s\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"Επαναφορά του συνθηματικού μου\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"Όλες οι ημερομηνίες\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"(Κενό)\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"Επιλέξτε %s\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"Επιλέξτε %s προς αλλαγή\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/el/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Dimitris Glezos <glezos@indifex.com>, 2011.\n# glogiotatidis <seadog@sealabs.net>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-03-08 10:42+0000\\n\"\n\"Last-Translator: Dimitris Glezos <glezos@transifex.com>\\n\"\n\"Language-Team: Greek (http://www.transifex.com/projects/p/django/language/\"\n\"el/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: el\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"Διαθέσιμο %s\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"Φίλτρο\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"Επιλογή Όλων\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"Αφαίρεση\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"Επιλεχθέντα %s\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"%(sel)s από %(cnt)s επιλέγηκε\"\nmsgstr[1] \"%(sel)s από %(cnt)s επιλέγηκαν\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\"Έχετε μη αποθηκευμένες αλλαγές σε επιμέρους επεξεργάσημα πεδία. Εάν \"\n\"εκτελέσετε μια ενέργεια, οι αλλαγές σας θα χαθούν.\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\"Έχετε επιλέξει μια ενέργεια, αλλά ακόμη δεν έχετε αποθηκεύσει τις αλλαγές \"\n\"επιμέρους πεδίων. Παρακαλώ επιλέξτε ΟΚ για να αποθηκεύσετε. Θα χρειαστεί να \"\n\"επαναλάβετε την ενέργεια.\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\"Έχετε επιλέξει μια ενέργεια και δεν έχετε κάνει καμία αλλαγή σε επιμέρους \"\n\"πεδία. Πιθανώς ψάχνετε για το κουμπί Go και όχι το κουμπί Αποθήκευση.\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"\"\n\"Ιανουάριος Φεβρουάριος Μάρτιος Απρίλιος Μάιος Ιούνιος Ιούλιος Αύγουστος \"\n\"Σεπτέμβριος Οκτώβριος Νοέμβριος Δεκέμβριος\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"Κ Δ Τ Τ Π Π Σ\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"Εμφάνιση\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"Απόκρυψη\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"Τώρα\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"Ρολόι\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"Διαλέξτε ώρα\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"Μεσάνυχτα\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"6 π.μ.\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"Μεσημέρι\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"Άκυρο\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"Σήμερα\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"Ημερολόγιο\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"Χθες\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"Αύριο\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/en/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:52+0000\\n\"\n\"Last-Translator: Ramiro Morales <cramm0@gmail.com>\\n\"\n\"Language-Team: English <en@li.org>\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: en\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"Successfully deleted %(count)d %(items)s.\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"Cannot delete %(name)s\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"Are you sure?\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"Delete selected %(verbose_name_plural)s\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"All\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"Yes\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"No\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"Unknown\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"Any date\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"Today\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"Past 7 days\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"This month\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"This year\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"Please log in again, because your session has expired.\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"Action:\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"action time\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"object id\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"object repr\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"action flag\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"change message\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"log entry\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"log entries\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"Added \\\"%(object)s\\\".\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"Changed \\\"%(object)s\\\" - %(changes)s\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"Deleted \\\"%(object)s.\\\"\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"LogEntry Object\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"None\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"Changed %s.\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"and\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Added %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Deleted %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"No fields changed.\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"No action selected.\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"Add %s\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"%(name)s object with primary key %(key)r does not exist.\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"Change %s\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"Database error\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"%(count)s %(name)s was changed successfully.\"\nmsgstr[1] \"%(count)s %(name)s were changed successfully.\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"%(total_count)s selected\"\nmsgstr[1] \"All %(total_count)s selected\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"0 of %(cnt)s selected\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"Change history: %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"Log in\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"Site administration\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"%s administration\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"Date:\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"Time:\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"Lookup\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"Add Another\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"Currently:\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"Change:\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"Page not found\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"We're sorry, but the requested page could not be found.\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"Home\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"Server error\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"Server error (500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"Server Error <em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"Run the selected action\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"Go\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"Click here to select the objects across all pages\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"Select all %(total_count)s %(module_name)s\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"Clear selection\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"Welcome,\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"Documentation\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"Change password\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"Log out\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"Django site admin\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"Django administration\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"Add\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"History\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"View on site\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"Please correct the error below.\"\nmsgstr[1] \"Please correct the errors below.\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"Add %(name)s\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"Filter\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"Remove from sorting\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"Sorting priority: %(priority_number)s\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"Toggle sorting\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"Delete\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"Yes, I'm sure\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"Delete multiple objects\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \" By %(filter_title)s \"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"Models in the %(name)s application\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"Change\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"You don't have permission to edit anything.\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"Recent Actions\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"My Actions\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"None available\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"Unknown content\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"Password:\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"Forgotten your password or username?\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"Date/time\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"User\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"Action\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"Show all\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"Save\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"Search\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"%(counter)s result\"\nmsgstr[1] \"%(counter)s results\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"%(full_result_count)s total\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"Save as new\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"Save and add another\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"Save and continue editing\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"Enter a username and password.\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"Enter a new password for the user <strong>%(username)s</strong>.\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"Password\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"Password (again)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Enter the same password as above, for verification.\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"Remove\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"Add another %(verbose_name)s\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"Delete?\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"Thanks for spending some quality time with the Web site today.\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"Log in again\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"Password change\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"Password change successful\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"Your password was changed.\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"Old password\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"New password\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"Change my password\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"Password reset\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"Password reset complete\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"Your password has been set.  You may go ahead and log in now.\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"Password reset confirmation\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"Enter new password\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"New password:\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"Confirm password:\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"Password reset unsuccessful\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"Password reset successful\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"Please go to the following page and choose a new password:\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"Your username, in case you've forgotten:\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"Thanks for using our site!\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"The %(site_name)s team\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"Email address:\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"Reset my password\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"All dates\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"(None)\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"Select %s\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"Select %s to change\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/en/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-03-08 10:42+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: English <en@li.org>\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: en\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"Available %s\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"Type into this box to filter down the list of available %s.\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"Filter\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"Choose all\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"Click to choose all %s at once.\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"Choose\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"Remove\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"Chosen %s\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"Remove all\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"Click to remove all chosen %s at once.\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"%(sel)s of %(cnt)s selected\"\nmsgstr[1] \"%(sel)s of %(cnt)s selected\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"\"\n\"January February March April May June July August September October November \"\n\"December\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"S M T W T F S\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"Show\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"Hide\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"Now\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"Clock\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"Choose a time\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"Midnight\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"6 a.m.\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"Noon\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"Cancel\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"Today\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"Calendar\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"Yesterday\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"Tomorrow\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/en_GB/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# jon_atkinson <jon@jonatkinson.co.uk>, 2011.\n#   <jon@jonatkinson.co.uk>, 2012.\n# Ross Poulton <ross@rossp.org>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:52+0000\\n\"\n\"Last-Translator: Ramiro Morales <cramm0@gmail.com>\\n\"\n\"Language-Team: English (United Kingdom) (http://www.transifex.com/projects/p/\"\n\"django/language/en_GB/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: en_GB\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"Successfully deleted %(count)d %(items)s.\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"Cannot delete %(name)s\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"Are you sure?\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"Delete selected %(verbose_name_plural)s\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"All\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"Yes\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"No\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"Unknown\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"Any date\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"Today\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"Past 7 days\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"This month\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"This year\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"Please log in again, because your session has expired.\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"Action:\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"action time\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"object id\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"object repr\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"action flag\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"change message\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"log entry\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"log entries\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"Added \\\"%(object)s\\\".\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"Changed \\\"%(object)s\\\" - %(changes)s\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"Deleted \\\"%(object)s.\\\"\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"LogEntry Object\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"None\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"Changed %s.\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"and\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Added %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Deleted %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"No fields changed.\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"No action selected.\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"Add %s\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"%(name)s object with primary key %(key)r does not exist.\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"Change %s\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"Database error\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"%(count)s %(name)s was changed successfully.\"\nmsgstr[1] \"%(count)s %(name)s were changed successfully.\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"%(total_count)s selected\"\nmsgstr[1] \"All %(total_count)s selected\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"0 of %(cnt)s selected\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"Change history: %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"Log in\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"Site administration\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"%s administration\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"Date:\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"Time:\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"Lookup\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"Add Another\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"Page not found\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"We're sorry, but the requested page could not be found.\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"Home\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"Server error\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"Server error (500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"Server Error <em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"Run the selected action\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"Go\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"Click here to select the objects across all pages\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"Select all %(total_count)s %(module_name)s\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"Clear selection\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"Welcome,\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"Documentation\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"Change password\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"Log out\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"Django site admin\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"Django administration\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"Add\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"History\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"View on site\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"Please correct the error below.\"\nmsgstr[1] \"Please correct the errors below.\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"Add %(name)s\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"Filter\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"Remove from sorting\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"Sorting priority: %(priority_number)s\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"Toggle sorting\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"Delete\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"Yes, I'm sure\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"Delete multiple objects\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \" By %(filter_title)s \"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"Change\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"You don't have permission to edit anything.\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"Recent Actions\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"My Actions\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"None available\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"Unknown content\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"Password:\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"Forgotten your password or username?\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"Date/time\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"User\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"Action\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"Show all\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"Save\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"Search\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"%(counter)s result\"\nmsgstr[1] \"%(counter)s results\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"%(full_result_count)s total\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"Save as new\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"Save and add another\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"Save and continue editing\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"Enter a username and password.\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"Enter a new password for the user <strong>%(username)s</strong>.\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"Password\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"Password (again)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Enter the same password as above, for verification.\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"Remove\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"Add another %(verbose_name)s\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"Delete?\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"Thanks for spending some quality time with the Web site today.\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"Log in again\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"Password change\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"Password change successful\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"Your password was changed.\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"Old password\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"New password\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"Change my password\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"Password reset\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"Password reset complete\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"Your password has been set.  You may go ahead and log in now.\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"Password reset confirmation\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"Enter new password\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"New password:\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"Confirm password:\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"Password reset unsuccessful\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"Password reset successful\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"Please go to the following page and choose a new password:\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"Your username, in case you've forgotten:\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"Thanks for using our site!\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"The %(site_name)s team\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"Reset my password\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"All dates\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"(None)\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"Select %s\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"Select %s to change\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/en_GB/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <jon@jonatkinson.co.uk>, 2012.\n# Ross Poulton <ross@rossp.org>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-03-12 21:55+0000\\n\"\n\"Last-Translator: Ross Poulton <ross@rossp.org>\\n\"\n\"Language-Team: English (United Kingdom) (http://www.transifex.com/projects/p/\"\n\"django/language/en_GB/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: en_GB\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"Available %s\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"Type into this box to filter down the list of available %s.\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"Filter\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"Choose all\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"Click to choose all %s at once.\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"Choose\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"Remove\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"Chosen %s\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"Remove all\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"Click to remove all chosen %s at once.\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"%(sel)s of %(cnt)s selected\"\nmsgstr[1] \"%(sel)s of %(cnt)s selected\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"\"\n\"January February March April May June July August September October November \"\n\"December\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"S M T W T F S\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"Show\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"Hide\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"Now\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"Clock\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"Choose a time\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"Midnight\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"6 a.m.\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"Noon\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"Cancel\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"Today\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"Calendar\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"Yesterday\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"Tomorrow\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/eo/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <adam.raizen@gmail.com>, 2012.\n# Baptiste  <baptiste+transifex@darthenay.fr>, 2012.\n# Dinu Gherman <gherman@darwin.in-berlin.de>, 2011.\n#   <kristjan.schmidt@googlemail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:52+0000\\n\"\n\"Last-Translator: sagittarian <adam.raizen@gmail.com>\\n\"\n\"Language-Team: Esperanto (http://www.transifex.com/projects/p/django/\"\n\"language/eo/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: eo\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"Sukcese forigis %(count)d %(items)s.\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"Ne povas forigi %(name)s\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"Ĉu vi certas?\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"Forigi elektitajn %(verbose_name_plural)s\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"Ĉio\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"Jes\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"Ne\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"Nekonata\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"Ajna dato\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"Hodiaŭ\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"Lastaj 7 tagoj\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"Ĉi tiu monato\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"Ĉi tiu jaro\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"Bonvolu ensaluti denove, ĉar via seanco senvalidiĝis.\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"Ago:\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"aga tempo\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"objekta identigaĵo\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"objekta prezento\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"aga marko\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"ŝanĝmesaĝo\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"protokolero\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"protokoleroj\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"\\\"%(object)s\\\" aldonita.\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"Ŝanĝita \\\"%(object)s\\\" - %(changes)s\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"Forigita \\\"%(object)s.\\\"\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"Protokolera objekto\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"Neniu\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"Ŝanĝita %s.\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"kaj\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Aldonita %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Ŝanĝita %(list)s por %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Forigita %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"Neniu kampo ŝanĝita.\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"\"\n\"La %(name)s \\\"%(obj)s\\\" estis aldonita sukcese. Vi rajtas ĝin redakti denove \"\n\"sube.\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"La %(name)s \\\"%(obj)s\\\" estis aldonita sukcese.\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"La %(name)s \\\"%(obj)s\\\" estis ŝanĝita sukcese.\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\"Elementoj devas esti elektitaj por elfari agojn sur ilin. Neniu elemento \"\n\"estis ŝanĝita.\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"Neniu ago elektita.\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"Aldoni %s\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"%(name)s objekto kun ĉefŝlosilo %(key)r ne ekzistas.\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"Ŝanĝi %s\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"Datumbaza eraro\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"%(count)s %(name)s estis sukcese ŝanĝita.\"\nmsgstr[1] \"%(count)s %(name)s estis sukcese ŝanĝitaj.\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"%(total_count)s elektitaj\"\nmsgstr[1] \"Ĉiuj %(total_count)s elektitaj\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"0 el %(cnt)s elektita\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"La %(name)s \\\"%(obj)s\\\" estis forigita sukcese.\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"Ŝanĝa historio: %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"Ensaluti\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"Reteja administrado\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"%s administrado\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"Dato:\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"Horo:\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"Trarigardo\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"Aldoni ankoraŭ unu\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"Paĝo ne trovita\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"Bedaŭrinde la petitan paĝon ne povas esti trovita.\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"Ĉefpaĝo\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"Servila eraro\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"Servila eraro (500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"Servila eraro <em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"Lanĉi la elektita agon\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"Ek\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"Klaku ĉi-tie por elekti la objektojn trans ĉiuj paĝoj\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"Elekti ĉiuj %(total_count)s %(module_name)s\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"Viŝi elekton\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"Bonvenon,\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"Dokumentaro\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"Ŝanĝi pasvorton\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"Elsaluti\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"Djanga reteja administrado\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"Djanga administrado\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"Aldoni\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"Historio\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"Vidi sur retejo\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"Bonvolu ĝustigi la eraron sube.\"\nmsgstr[1] \"Bonvolu ĝustigi la erarojn sube.\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"Aldoni %(name)s\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"Filtri\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"Forigi el ordigado\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"Ordiga prioritato: %(priority_number)s\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"Ŝalti ordigadon\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"Forigi\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"Foriganti la %(object_name)s '%(escaped_object)s' rezultus en foriganti \"\n\"rilatajn objektojn, sed via konto ne havas permeson por forigi la sekvantajn \"\n\"tipojn de objektoj:\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\"Forigi la %(object_name)s '%(escaped_object)s' postulus forigi la sekvajn \"\n\"protektitajn rilatajn objektojn:\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\"Ĉu vi certas, ke vi volas forigi %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"Ĉiuj el la sekvaj rilataj eroj estos forigitaj:\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"Jes, mi certas\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"Forigi plurajn objektojn\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\"Forigi la %(objects_name)s rezultus en forigi rilatajn objektojn, sed via \"\n\"konto ne havas permeson por forigi la sekvajn tipojn de objektoj:\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\"Forigi la %(objects_name)s postulus forigi la sekvajn protektitajn rilatajn \"\n\"objektojn:\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\"Ĉu vi certas, ke vi volas forigi la elektitajn %(objects_name)s? Ĉiuj el la \"\n\"sekvaj objektoj kaj iliaj rilataj eroj estos forigita:\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \" Laŭ %(filter_title)s \"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"Ŝanĝi\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"Vi ne havas permeson por redakti ĉion ajn.\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"Lastaj agoj\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"Miaj agoj\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"Neniu disponebla\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"Nekonata enhavo\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"Io malbonas en via datumbaza instalo. Bonvolu certigi ke la konvenaj tabeloj \"\n\"de datumbazo estis kreitaj, kaj ke la datumbazo estas legebla per la ĝusta \"\n\"uzanto.\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"Pasvorto:\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"Ĉu vi forgesis vian pasvorton aŭ salutnomo?\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"Dato/horo\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"Uzanto\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"Ago\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\"Ĉi tiu objekto ne havas ŝanĝ-historion. Eble ĝi ne estis aldonita per la \"\n\"administranta retejo.\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"Montri ĉion\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"Konservi\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"Serĉu\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"%(counter)s resulto\"\nmsgstr[1] \"%(counter)s resultoj\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"%(full_result_count)s entute\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"Konservi kiel novan\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"Konservi kaj aldoni alian\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"Konservi kaj daŭre redakti\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\"Unue, bovolu tajpi salutnomon kaj pasvorton. Tiam, vi povos redakti pli da \"\n\"uzantaj agordoj.\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"Enigu salutnomon kaj pasvorton.\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"Enigu novan pasvorton por la uzanto <strong>%(username)s</strong>.\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"Pasvorto\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"Pasvorto (denove)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Entajpu la saman pasvorton kiel supre, por konfirmo.\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"Forigu\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"Aldoni alian %(verbose_name)s\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"Forviŝi?\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"Dankon pro pasigo de kvalita tempon kun la retejo hodiaŭ.\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"Ensaluti denove\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"Pasvorta ŝanĝo\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"Pasvorto sukcese ŝanĝita\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"Via pasvorto estis sukcese ŝanĝita.\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"Bonvolu enigi vian malnovan pasvorton, pro sekureco, kaj tiam enigi vian \"\n\"novan pasvorton dufoje, tiel ni povas konfirmi ke vi ĝuste tajpis ĝin.\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"Malnova pasvorto\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"Nova pasvorto\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"Ŝanĝi mian passvorton\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"Pasvorta rekomencigo\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"Pasvorta rekomencigo plenumita\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"Via pasvorto estis ŝanĝita. Vi povas iri antaŭen kaj ensaluti nun.\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"Pasvorta rekomenciga konfirmo\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"Enigu novan pasvorton\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"\"\n\"Bonvolu entajpi vian novan pasvorton dufoje, tiel ni povas konfirmi ke vi \"\n\"ĝuste tajpis ĝin.\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"Nova pasvorto:\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"Konfirmi pasvorton:\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"Pasvorta rekomencigo malsuksesis\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\"La pasvorta rekomenciga ligo malvalidis, eble ĉar ĝi jam estis uzata.  \"\n\"Bonvolu peti novan pasvortan rekomencigon.\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"Pasvorta rekomencigo suksesis\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"Bonvolu iri al la sekvanta paĝo kaj elekti novan pasvorton:\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"Via salutnomo, se vi forgesis:\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"Dankon pro uzo de nia retejo!\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"La %(site_name)s teamo\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"Rekomencigi mian pasvorton\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"Ĉiuj datoj\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"(Neniu)\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"Elekti %s\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"Elekti %s por ŝanĝi\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/eo/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <adam.raizen@gmail.com>, 2012.\n# Baptiste  <baptiste+transifex@darthenay.fr>, 2012.\n# Jaffa McNeill <jaffa.mcneill@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-12-11 19:24+0000\\n\"\n\"Last-Translator: sagittarian <adam.raizen@gmail.com>\\n\"\n\"Language-Team: Esperanto (http://www.transifex.com/projects/p/django/\"\n\"language/eo/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: eo\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"Disponebla %s\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Tio ĉi estas la listo de disponeblaj %s. Vi povas forigi kelkajn elektante \"\n\"ilin en la suba skatolo kaj tiam klakante la \\\"Elekti\\\" sagon inter la du \"\n\"skatoloj.\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"Entipu en ĉi-tiu skatolo por filtri la liston de haveblaj %s.\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"Filtru\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"Elekti ĉiuj\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"Klaku por tuj elekti ĉiuj %s.\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"Elekti\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"Forigu\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"Elektita %s\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Tio ĉi estas la listo de elektitaj %s. Vi povas forigi kelkajn elektante \"\n\"ilin en la suba skatolo kaj tiam klakante la \\\"Forigi\\\" sagon inter la du \"\n\"skatoloj.\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"Forigu ĉiujn\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"Klaku por tuj forigi ĉiujn %s elektitajn.\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"%(sel)s de %(cnt)s elektita\"\nmsgstr[1] \"%(sel)s de %(cnt)s elektitaj\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\"Vi havas neŝirmitajn ŝanĝojn je unuopaj redakteblaj kampoj. Se vi faros \"\n\"agon, viaj neŝirmitaj ŝanĝoj perdiĝos.\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\"Vi elektas agon, sed vi ne ŝirmis viajn ŝanĝojn al individuaj kampoj ĝis \"\n\"nun. Bonvolu klaku BONA por ŝirmi. Vi devos ripeton la agon\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\"Vi elektas agon, kaj vi ne faris ajnajn ŝanĝojn ĉe unuopaj kampoj. Vi  \"\n\"verŝajne serĉas la Iru-butonon prefere ol la Ŝirmu-butono.\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"\"\n\"Januaro Februaro Marto Aprilo Majo Junio Julio Aŭgusto Septembro Oktobro \"\n\"Novembro Decembro\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"D L M M Ĵ V S\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"Montru\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"Kaŝu\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"Nun\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"Horloĝo\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"Elektu tempon\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"Noktomezo\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"6 a.t.m.\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"Tagmezo\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"Malmendu\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"Hodiaŭ\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"Kalendaro\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"Hieraŭ\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"Morgaŭ\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/es/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Antoni Aloy <aaloy@apsl.net>, 2012-2013.\n# Antoni Aloy <antoni.aloy@trespams.com>, 2011, 2012.\n# franchukelly <fcocuadrado@gmail.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Marc Garcia <garcia.marc@gmail.com>, 2011.\n#   <serra.guillem@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-10 18:48+0000\\n\"\n\"Last-Translator: Antoni Aloy <aaloy@apsl.net>\\n\"\n\"Language-Team: Spanish (http://www.transifex.com/projects/p/django/language/\"\n\"es/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: es\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"Eliminado/s %(count)d %(items)s satisfactoriamente.\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"No se puede eliminar %(name)s\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"¿Está seguro?\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"Eliminar %(verbose_name_plural)s seleccionado/s\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"Todo\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"Sí\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"No\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"Desconocido\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"Cualquier fecha\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"Hoy\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"Últimos 7 días\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"Este mes\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"Este año\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\"Por favor introduce el %(username)s y la clave correctos para una cuenta de \"\n\"personal. Observa que campos pueden ser sensibles a mayúsculas.\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"Por favor, inicie sesión de nuevo, ya que su sesión ha caducado.\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"Acción:\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"hora de acción\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"id de objeto\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"repr de objeto\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"marca de acción\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"mensaje de cambio\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"entrada de registro\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"entradas de registro\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"Añadidos \\\"%(object)s\\\".\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"Cambiados \\\"%(object)s\\\" - %(changes)s\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"Eliminados \\\"%(object)s.\\\"\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"Objeto de registro de Log\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"Ninguno\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"Modificado/a %s.\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"y\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Añadido/a \\\"%(object)s\\\" %(name)s.\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Modificados %(list)s para \\\"%(object)s\\\" %(name)s.\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Eliminado/a \\\"%(object)s\\\" %(name)s.\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"No ha cambiado ningún campo.\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"\"\n\"Se añadió con éxito el %(name)s \\\"%(obj)s. Puede editarlo de nuevo abajo.\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\"El  %(name)s \\\"%(obj)s\\\" fue añadido satisfactoriamente. Puedes añadir otro \"\n\"%(name)s a continuación.\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"Se añadió con éxito el %(name)s \\\"%(obj)s\\\".\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\"El %(name)s \\\"%(obj)s\\\" fue cambiado satisfactoriamente. Puedes editarlo \"\n\"otra vez a continuación.\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\"El  %(name)s \\\"%(obj)s\\\" fue cambiado satisfactoriamente. Puedes añadir otro \"\n\"%(name)s a continuación.\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"Se modificó con éxito el %(name)s \\\"%(obj)s\\\".\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\"Se deben seleccionar elementos para poder realizar acciones sobre estos. No \"\n\"se han modificado elementos.\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"No se seleccionó ninguna acción.\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"Añadir %s\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"No existe ningún objeto %(name)s con la clave primaria %(key)r.\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"Modificar %s\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"Error en la base de datos\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"%(count)s %(name)s fué modificado con éxito.\"\nmsgstr[1] \"%(count)s %(name)s fueron modificados con éxito.\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"%(total_count)s seleccionado\"\nmsgstr[1] \"Todos %(total_count)s seleccionados\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"seleccionados 0 de %(cnt)s\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"Se eliminó con éxito el %(name)s \\\"%(obj)s\\\".\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"Histórico de modificaciones: %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"Iniciar sesión\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"Sitio administrativo\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"Administración de %s\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"Fecha:\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"Hora:\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"Buscar\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"Añadir otro\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"Actualmente:\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"Cambiar:\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"Página no encontrada\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"Lo sentimos, pero no se encuentra la página solicitada.\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"Inicio\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"Error del servidor\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"Error del servidor (500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"Error de servidor <em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\"Ha habido un error. Ha sido comunicado al administrador del sitio por correo \"\n\"electrónico y debería solucionarse a la mayor brevedad. Gracias por tu \"\n\"paciencia y comprensión.\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"Ejecutar la acción seleccionada\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"Ir\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"Pulse aquí para seleccionar los objetos a través de todas las páginas\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"Seleccionar todos los %(total_count)s %(module_name)s\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"Limpiar selección\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"Bienvenido/a,\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"Documentación\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"Cambiar contraseña\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"Terminar sesión\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"Sitio de administración de Django\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"Administración de Django\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"Añadir\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"Histórico\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"Ver en el sitio\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"Por favor, corrija el siguiente error.\"\nmsgstr[1] \"Por favor, corrija los siguientes errores.\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"Añadir %(name)s\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"Filtro\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"Elimina de la ordenación\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"Prioridad de la ordenación: %(priority_number)s\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"Activar la ordenación\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"Eliminar\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"Eliminar el %(object_name)s '%(escaped_object)s' provocaría la eliminación \"\n\"de objetos relacionados, pero su cuenta no tiene permiso para borrar los \"\n\"siguientes tipos de objetos:\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\"La eliminación de %(object_name)s %(escaped_object)s requeriría eliminar los \"\n\"siguientes objetos relacionados protegidos:\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\"¿Está seguro de que quiere borrar los %(object_name)s \\\"%(escaped_object)s\"\n\"\\\"? Se borrarán los siguientes objetos relacionados:\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"Sí, estoy seguro\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"Eliminar múltiples objetos.\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\"La eliminación del %(objects_name)s seleccionado resultaría en el borrado de \"\n\"objetos relacionados, pero su cuenta no tiene permisos para borrar los \"\n\"siguientes tipos de objetos:\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\"La eliminación de %(objects_name)s seleccionado requeriría el borrado de los \"\n\"siguientes objetos protegidos relacionados:\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\"¿Está usted seguro que quiere eliminar el %(objects_name)s seleccionado? \"\n\"Todos los siguientes objetos y sus elementos relacionados serán borrados:\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \" Por %(filter_title)s \"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"Modelos en la aplicación %(name)s\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"Modificar\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"No tiene permiso para editar nada.\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"Acciones recientes\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"Mis acciones\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"Ninguno disponible\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"Contenido desconocido\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"Algo va mal con la instalación de la base de datos. Asegúrese que las tablas \"\n\"necesarias han sido creadas, y que la base de datos puede ser leída por el \"\n\"usuario apropiado.\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"Contraseña:\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"¿Olvidaste la contraseña o el nombre de usuario?\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"Fecha/hora\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"Usuario\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"Acción\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\"Este objeto no tiene histórico de cambios. Probablemente no fue añadido \"\n\"usando este sitio de administración.\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"Mostrar todo\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"Grabar\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"Buscar\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"%(counter)s resultado\"\nmsgstr[1] \"%(counter)s resultados\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"%(full_result_count)s total\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"Grabar como nuevo\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"Grabar y añadir otro\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"Grabar y continuar editando\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\"Primero introduzca un nombre de usuario y una contraseña. Luego podrá editar \"\n\"el resto de opciones del usuario.\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"Entre un nombre de usuario y contraseña\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"\"\n\"Introduzca una nueva contraseña para el usuario <strong>%(username)s</\"\n\"strong>.\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"Contraseña\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"Contraseña (de nuevo)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Introduzca la misma contraseña que arriba, para verificación.\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"Eliminar\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"Agregar otro %(verbose_name)s.\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"¿Eliminar?\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"Gracias por el tiempo que ha dedicado hoy al sitio web.\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"Iniciar sesión de nuevo\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"Cambio de contraseña\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"Cambio de contraseña exitoso\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"Su contraseña ha sido cambiada.\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"Por favor, introduzca su contraseña antigua, por seguridad, y después \"\n\"introduzca la nueva contraseña dos veces para verificar que la ha escrito \"\n\"correctamente.\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"Contraseña antigua\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"Contraseña nueva\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"Cambiar mi contraseña\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"Restablecer contraseña\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"Restablecimiento de contraseña completado\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"\"\n\"Su contraseña ha sido establecida. Ahora puede seguir adelante e iniciar \"\n\"sesión.\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"Confirmación de restablecimiento de contraseña\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"Introduzca una nueva contraseña\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"\"\n\"Por favor, introduzca su contraseña nueva dos veces para verificar que la ha \"\n\"escrito correctamente.\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"Contraseña nueva:\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"Confirme contraseña:\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"Restablecimiento de contraseña fallido\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\"El enlace de restablecimiento de contraseña era invalido, seguramente por \"\n\"haberse utilizado previamente. Por favor, solicite un nuevo restablecimiento \"\n\"de contraseña.\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"Restablecimiento de contraseña exitoso\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\"Le hemos enviado un correo electrónico con instrucciones para cambiar su \"\n\"contraseña a la dirección que nos ha suministrado. Debería recibirlo en \"\n\"breve.\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\"Recibes este correo electrónico porqué has solicitado restablecer tu clave \"\n\"para tu cuenta en %(site_name)s.\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"Por favor, vaya a la página siguiente y escoja una nueva contraseña.\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"Su nombre de usuario, en caso de haberlo olvidado:\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"¡Gracias por usar nuestro sitio!\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"El equipo de %(site_name)s\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\"¿Has olvidado tu clave? Introduce tu dirección de correo a continuación y te \"\n\"enviaremos por correo electrónico las instrucciones para establecer una \"\n\"nueva.\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"Correo electrónico:\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"Restablecer mi contraseña\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"Todas las fechas\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"(Nada)\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"Escoja %s\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"Escoja %s a modificar\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/es/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Antoni Aloy <antoni.aloy@trespams.com>, 2011, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Leonardo J. Caballero G. <leonardocaballero@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-03-14 19:11+0000\\n\"\n\"Last-Translator: Antoni Aloy <aaloy@apsl.net>\\n\"\n\"Language-Team: Spanish (http://www.transifex.com/projects/p/django/language/\"\n\"es/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: es\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"%s Disponibles\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Esta es la lista de %s disponibles. Puedes elegir algunos seleccionándolos \"\n\"en la caja inferior y luego haciendo clic en la flecha \\\"Elegir\\\" que hay \"\n\"entre las dos cajas.\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"Escribe en este cuadro para filtrar la lista de %s disponibles\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"Filtro\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"Selecciona todos\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"Haz clic para seleccionar todos los %s de una vez\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"Elegir\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"Remover\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"%s Elegidos\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Esta es la lista de los %s elegidos. Puedes elmininar algunos \"\n\"seleccionándolos en la caja inferior y luego haciendo click en la flecha \"\n\"\\\"Eliminar\\\" que hay entre las dos cajas.\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"Eliminar todos\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"Haz clic para eliminar todos los %s elegidos\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"%(sel)s de %(cnt)s seleccionado\"\nmsgstr[1] \"%(sel)s de  %(cnt)s seleccionados\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\"Tienes cambios sin guardar en campos editables individuales. Si ejecutas una \"\n\"acción, los cambios no guardados se perderán.\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\"Has seleccionado una acción, pero no has guardado los cambios en los campos \"\n\"individuales todavía. Pulsa OK para guardar. Tendrás que volver a ejecutar \"\n\"la acción.\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\"Has seleccionado una acción y no has hecho ningún cambio en campos \"\n\"individuales. Probablemente estés buscando el botón Ejecutar en lugar del \"\n\"botón Guardar.\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"\"\n\"Enero Febrero Marzo Abril Mayo Junio Julio Agosto Septiembre Octubre \"\n\"Noviembre Diciembre\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"D L M M J V S\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"Mostrar\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"Esconder\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"Ahora\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"Reloj\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"Elige una hora\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"Medianoche\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"6 a.m.\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"Mediodía\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"Cancelar\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"Hoy\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"Calendario\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"Ayer\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"Mañana\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/es_AR/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Leonardo José Guzmán <ljguzman@gmail.com>, 2013.\n# Ramiro Morales <cramm0@gmail.com>, 2011-2013.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-03-21 02:50+0000\\n\"\n\"Last-Translator: Ramiro Morales <cramm0@gmail.com>\\n\"\n\"Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/\"\n\"django/language/es_AR/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: es_AR\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"Se eliminaron con éxito %(count)d %(items)s.\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"No se puede eliminar %(name)s\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"¿Está seguro?\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"Eliminar %(verbose_name_plural)s seleccionados/as\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"Todos/as\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"Sí\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"No\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"Desconocido\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"Cualquier fecha\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"Hoy\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"Últimos 7 días\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"Este mes\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"Este año\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\"Por favor introduza %(username)s y contraseña correctos de una cuenta de \"\n\"staff. Note que puede que ambos campos sean estrictos en relación a \"\n\"diferencias entre mayúsculas y minúsculas.\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"Por favor, identifíquese de nuevo porque su sesión ha caducado.\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"Acción:\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"hora de la acción\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"id de objeto\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"repr de objeto\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"marca de acción\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"mensaje de cambio\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"entrada de registro\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"entradas de registro\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"Se agrega \\\"%(object)s\\\".\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"Se modifica \\\"%(object)s\\\" - %(changes)s\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"Se elimina \\\"%(object)s.\\\"\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"Objeto LogEntry\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"Ninguno\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"Modifica %s.\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"y\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Se agregó %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Se modificaron %(list)s en %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Se eliminó %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"No ha modificado ningún campo.\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"\"\n\"Se agregó con éxito %(name)s \\\"%(obj)s\\\". Puede modificarlo/a nuevamente \"\n\"abajo.\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\"Se agregó con éxito %(name)s \\\"%(obj)s\\\". Puede agregar otro %(name)s  abajo.\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"Se agregó con éxito %(name)s \\\"%(obj)s\\\".\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\"Se modificó con éxito %(name)s \\\"%(obj)s\\\". Puede modificarlo/a nuevamente \"\n\"abajo.\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\"Se modificó con éxito %(name)s \\\"%(obj)s\\\". Puede agregar otro %(name)s \"\n\"abajo.\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"Se modificó con éxito %(name)s \\\"%(obj)s\\\".\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\"Deben existir items seleccionados para poder realizar acciones sobre los \"\n\"mismos. No se modificó ningún item.\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"No se ha seleccionado ninguna acción.\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"Agregar %s\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"No existe un objeto %(name)s con una clave primaria %(key)r.\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"Modificar %s\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"Error de base de datos\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"Se ha modificado con éxito %(count)s %(name)s.\"\nmsgstr[1] \"Se han modificado con éxito %(count)s %(name)s.\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"%(total_count)s seleccionados/as\"\nmsgstr[1] \"Todos/as (%(total_count)s en total) han sido seleccionados/as\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"0 de %(cnt)s seleccionados/as\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"Se eliminó con éxito %(name)s \\\"%(obj)s\\\".\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"Historia de modificaciones: %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"Identificarse\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"Administración de sitio\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"Administración de %s\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"Fecha:\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"Hora:\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"Buscar\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"Agregar otro/a\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"Actualmente:\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"Cambiar:\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"Página no encontrada\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"Lo sentimos, pero no se encuentra la página solicitada.\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"Inicio\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"Error del servidor\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"Error del servidor (500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"Error de servidor <em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\"Ha ocurrido un error. Se ha reportado el mismo a los administradores del \"\n\"sitio vía email y debería ser solucionado en breve. Le damos gracias por su \"\n\"paciencia.\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"Ejecutar la acción seleccionada\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"Ejecutar\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"Haga click aquí para seleccionar los objetos de todas las páginas\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"Seleccionar lo(s)/a(s) %(total_count)s de %(module_name)s\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"Borrar selección\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"Bienvenido/a,\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"Documentación\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"Cambiar contraseña\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"Cerrar sesión\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"Administración de sitio Django\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"Administración de Django\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"Agregar\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"Historia\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"Ver en el sitio\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"Por favor, corrija el siguiente error.\"\nmsgstr[1] \"Por favor, corrija los siguientes errores.\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"Agregar %(name)s\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"Filtrar\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"Remover de ordenamiento\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"Prioridad de ordenamiento: %(priority_number)s\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"(des)activar ordenamiento\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"Eliminar\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"Eliminar el %(object_name)s '%(escaped_object)s' provocaría la eliminación \"\n\"de objetos relacionados, pero su cuenta no tiene permiso para eliminar los \"\n\"siguientes tipos de objetos:\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\"El eliminar los %(object_name)s '%(escaped_object)s' requeriría eliminar los \"\n\"siguientes objetos relacionados protegidos:\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\"¿Está seguro de que quiere eliminar los %(object_name)s \\\"%(escaped_object)s\"\n\"\\\"? Se eliminarán los siguientes objetos relacionados:\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"Sí, estoy seguro\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"Eliminar múltiples objetos\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\"El eliminar los %(objects_name)s seleccionados requeriría eliminar objetos \"\n\"relacionados a los mismos, pero su cuenta de usuario no tiene los permisos \"\n\"necesarios para eliminar los siguientes tipos de objetos:\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\"El eliminar los %(objects_name)s seleccionados requeriría eliminar los \"\n\"siguientes objetos relacionados protegidos:\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\"¿Está seguro de que desea eliminar los %(objects_name)s?. Todos los \"\n\"siguientes objetos y los items relacionados a los mismos serán eliminados:\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \" Por %(filter_title)s \"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"Modelos en la aplicación %(name)s\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"Modificar\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"No tiene permiso para editar nada.\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"Acciones recientes\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"Mis acciones\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"Ninguna disponible\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"Contenido desconocido\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"Hay algún problema con su instalación de base de datos. Asegúrese de que las \"\n\"tablas de la misma hayan sido creadas, y asegúrese de que el usuario \"\n\"apropiado tenga permisos de lectura en la base de datos.\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"Contraseña:\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"¿Olvidó su contraseña o nombre de usuario?\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"Fecha/hora\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"Usuario\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"Acción\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\"Este objeto no tiene historia de modificaciones. Probablemente no fue \"\n\"añadido usando este sitio de administración.\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"Mostrar todos/as\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"Guardar\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"Buscar\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"%(counter)s resultado\"\nmsgstr[1] \"%(counter)s resultados\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"total: %(full_result_count)s\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"Guardar como nuevo\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"Guardar y agregar otro\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"Guardar y continuar editando\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\"Primero introduzca un nombre de usuario y una contraseña. Luego podrá \"\n\"configurar opciones adicionales acerca del usuario.\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"Introduzca un nombre de usuario y una contraseña.\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"\"\n\"Introduzca una nueva contraseña para el usuario <strong>%(username)s</\"\n\"strong>.\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"Contraseña\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"Contraseña (de nuevo)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"\"\n\"Para verificación, introduzca la misma contraseña que introdujo arriba.\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"Eliminar\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"Agregar otro/a %(verbose_name)s\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"Eliminar?\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"Gracias por el tiempo que ha dedicado al sitio web hoy.\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"Identificarse de nuevo\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"Cambio de contraseña\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"Cambio de contraseña exitoso\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"Su contraseña ha sido cambiada.\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"Por favor, por razones de seguridad, introduzca primero su contraseña \"\n\"antigua y luego introduzca la nueva contraseña dos veces para verificar que \"\n\"la ha escrito correctamente.\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"Contraseña antigua\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"Contraseña nueva\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"Cambiar mi contraseña\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"Recuperar contraseña\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"Reinicialización de contraseña completada\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"Su contraseña ha sido cambiada.  Ahora puede continuar e ingresar.\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"Confirmación de reincialización de contraseña\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"Introduzca la nueva contraseña\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"\"\n\"Por favor introduzca su nueva contraseña dos veces de manera que podamos \"\n\"verificar que la ha escrito correctamente.\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"Contraseña nueva:\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"Confirme contraseña:\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"Reinicialización de contraseña fallida\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\"El enlace de reinicialización de contraseña es inválido, posiblemente debido \"\n\"a que ya ha sido usado. Por favor solicite una nueva reinicialización de \"\n\"contraseña.\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"Recuperación de contraseña exitosa\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\"Le hemos enviado vía email instrucciones para establecer una nueva \"\n\"contraseña a la dirección de email que Ud. había especificado. Debería \"\n\"recibir dicho email pronto.\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\"Le enviamos este email porque Ud. ha solicitado que se reestablezca la \"\n\"contraseña para su cuenta de usuario en %(site_name)s.\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"\"\n\"Por favor visite la página que se muestra a continuación y elija una nueva \"\n\"contraseña:\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"Su nombre de usuario, en caso de haberlo olvidado:\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"¡Gracias por usar nuestro sitio!\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"El equipo de %(site_name)s\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\"¿Olvidó su contraseña? Introduzca su dirección de email abajo y le \"\n\"enviaremos instrucciones para establecer una nueva.\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"Dirección de email:\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"Recuperar mi contraseña\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"Todas las fechas\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"(Ninguno/a)\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"Seleccione %s\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"Seleccione %s a modificar\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/es_AR/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Ramiro Morales <cramm0@gmail.com>, 2011-2013.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2013-03-22 20:00+0000\\n\"\n\"Last-Translator: Ramiro Morales <cramm0@gmail.com>\\n\"\n\"Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/\"\n\"django/language/es_AR/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: es_AR\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"%s disponibles\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Esta es la lista de %s disponibles. Puede elegir algunos/as seleccionándolos/\"\n\"as en el cuadro de abajo y luego haciendo click en la flecha \\\"Seleccionar\\\" \"\n\"ubicada entre las dos listas.\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"Escriba en esta caja para filtrar la lista de %s disponibles.\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"Filtro\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"Seleccionar todos/as\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"Haga click para seleccionar todos/as los/as %s.\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"Seleccionar\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"Eliminar\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"%s seleccionados/as\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Esta es la lista de %s seleccionados. Puede deseleccionar algunos de ellos \"\n\"activándolos en la lista de abajo y luego haciendo click en la flecha \"\n\"\\\"Eliminar\\\" ubicada entre las dos listas.\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"Eliminar todos/as\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"Haga clic para deselecionar todos/as los/as %s.\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"%(sel)s de %(cnt)s seleccionado/a\"\nmsgstr[1] \"%(sel)s de %(cnt)s seleccionados/as\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\"Tiene modificaciones sin guardar en campos modificables individuales. Si \"\n\"ejecuta una acción las mismas se perderán.\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\"Ha seleccionado una acción, pero todavía no ha grabado las modificaciones \"\n\"que ha realizado en campos individuales. Por favor haga click en Aceptar \"\n\"para grabarlas. Necesitará ejecutar la acción nuevamente.\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\"Ha seleccionado una acción pero no ha realizado ninguna modificación en \"\n\"campos individuales. Es probable que lo que necesite usar en realidad sea el \"\n\"botón Ejecutar y no el botón Guardar.\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"\"\n\"Enero Febrero Marzo Abril Mayo Junio Julio Agosto Setiembre Octubre \"\n\"Noviembre Diciembre\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"D L M M J V S\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"Mostrar\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"Ocultar\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"Ahora\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"Reloj\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"Elija una hora\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"Medianoche\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"6 a.m.\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"Mediodía\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"Cancelar\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"Hoy\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"Calendario\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"Ayer\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"Mañana\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/es_MX/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Abraham Estrada <abraham.estrada@gmail.com>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:52+0000\\n\"\n\"Last-Translator: Ramiro Morales <cramm0@gmail.com>\\n\"\n\"Language-Team: Spanish (Mexico) (http://www.transifex.com/projects/p/django/\"\n\"language/es_MX/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: es_MX\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"Se eliminaron con éxito %(count)d %(items)s.\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"No se puede eliminar %(name)s \"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"¿Está seguro?\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"Eliminar %(verbose_name_plural)s seleccionados/as\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"Todos/as\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"Sí\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"No\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"Desconocido\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"Cualquier fecha\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"Hoy\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"Últimos 7 días\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"Este mes\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"Este año\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"Por favor, identifíquese de nuevo porque su sesión ha expirado.\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"Acción:\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"hora de la acción\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"id de objeto\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"repr de objeto\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"marca de acción\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"mensaje de cambio\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"entrada de registro\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"entradas de registro\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"Añadidos \\\"%(object)s\\\".\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"Modificados \\\"%(object)s\\\" - %(changes)s\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"Eliminados \\\"%(object)s.\\\"\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"Objeto de registro de Log\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"Ninguno\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"Modifica %s.\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"y\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Se agregó %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Se modificaron %(list)s en %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Se eliminó %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"No ha modificado ningún campo.\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"\"\n\"Se agregó con éxito %(name)s \\\"%(obj)s\\\". Puede modificarlo/a nuevamente \"\n\"abajo.\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"Se agregó con éxito %(name)s \\\"%(obj)s\\\".\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"Se modificó con éxito %(name)s \\\"%(obj)s\\\".\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\"Deben existir items seleccionados para poder realizar acciones sobre los \"\n\"mismos. No se modificó ningún item.\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"No se ha seleccionado ninguna acción.\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"Agregar %s\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"No existe un objeto %(name)s con una clave primaria %(key)r.\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"Modificar %s\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"Error en la base de datos\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"Se ha modificado con éxito %(count)s %(name)s.\"\nmsgstr[1] \"Se han modificado con éxito %(count)s %(name)s.\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"%(total_count)s seleccionados/as\"\nmsgstr[1] \"Todos/as (%(total_count)s en total) han sido seleccionados/as\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"0 de %(cnt)s seleccionados/as\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"Se eliminó con éxito %(name)s \\\"%(obj)s\\\".\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"Historia de modificaciones: %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"Identificarse\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"Administración del sitio\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"Administración de %s\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"Fecha:\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"Hora:\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"Buscar\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"Agregar otro/a\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"Página no encontrada\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"Lo sentimos, pero no se encuentra la página solicitada.\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"Inicio\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"Error del servidor\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"Error del servidor (500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"Error de servidor <em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"Ejecutar la acción seleccionada\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"Ejecutar\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"Haga click aquí para seleccionar los objetos de todas las páginas\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"Seleccionar lo(s)/a(s) %(total_count)s de %(module_name)s\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"Borrar selección\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"Bienvenido,\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"Documentación\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"Cambiar contraseña\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"Cerrar sesión\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"Sitio de administración de Django\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"Administración de Django\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"Agregar\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"Historia\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"Ver en el sitio\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"Por favor, corrija el siguiente error.\"\nmsgstr[1] \"Por favor, corrija los siguientes errores.\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"Agregar %(name)s\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"Filtrar\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"Elimina de la clasificación\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"Prioridad de la clasificación: %(priority_number)s\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"Activar la clasificación\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"Eliminar\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"Eliminar el %(object_name)s '%(escaped_object)s' provocaría la eliminación \"\n\"de objetos relacionados, pero su cuenta no tiene permiso para eliminar los \"\n\"siguientes tipos de objetos:\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\"Para eliminar %(object_name)s '%(escaped_object)s' requiere eliminar los \"\n\"siguientes objetos relacionados protegidos:\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\"¿Está seguro de que quiere eliminar los %(object_name)s \\\"%(escaped_object)s\"\n\"\\\"? Se eliminarán los siguientes objetos relacionados:\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"Sí, estoy seguro\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"Eliminar múltiples objetos\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\"Para eliminar %(objects_name)s requiere eliminar los objetos relacionado, \"\n\"pero tu cuenta no tiene permisos para eliminar los siguientes tipos de \"\n\"objetos:\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\"Eliminar el seleccionado %(objects_name)s requiere eliminar los siguientes \"\n\"objetos relacionados protegidas:\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\"¿Está seguro que desea eliminar el seleccionado %(objects_name)s ? Todos los \"\n\"objetos siguientes y sus elementos asociados serán eliminados:\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \"Por %(filter_title)s\"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"Modificar\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"No tiene permiso para editar nada\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"Acciones recientes\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"Mis acciones\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"Ninguna disponible\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"Contenido desconocido\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"Hay algún problema con su instalación de base de datos. Asegúrese de que las \"\n\"tablas de la misma hayan sido creadas, y asegúrese de que el usuario \"\n\"apropiado tenga permisos de lectura en la base de datos.\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"Contraseña:\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"¿Ha olvidado su contraseña o nombre de usuario?\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"Fecha/hora\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"Usuario\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"Acción\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\"Este objeto no tiene historia de modificaciones. Probablemente no fue \"\n\"añadido usando este sitio de administración.\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"Mostrar todos/as\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"Guardar\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"Buscar\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"%(counter)s results\"\nmsgstr[1] \"%(counter)s resultados\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"total: %(full_result_count)s\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"Guardar como nuevo\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"Guardar y agregar otro\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"Guardar y continuar editando\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\"Primero introduzca un nombre de usuario y una contraseña. Luego podrá \"\n\"configurar opciones adicionales acerca del usuario.\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"Introduzca un nombre de usuario y una contraseña.\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"\"\n\"Introduzca una nueva contraseña para el usuario <strong>%(username)s</\"\n\"strong>.\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"Contraseña\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"Contraseña (de nuevo)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Para verificar, introduzca la misma contraseña que introdujo arriba.\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"Eliminar\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"Agregar otro/a %(verbose_name)s\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"Eliminar?\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"Gracias por el tiempo que ha dedicado al sitio web hoy.\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"Identificarse de nuevo\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"Cambio de contraseña\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"Cambio de contraseña exitoso\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"Su contraseña ha sido cambiada.\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"Por favor, por razones de seguridad, introduzca primero su contraseña \"\n\"antigua y luego introduzca la nueva contraseña dos veces para verificar que \"\n\"la ha escrito correctamente.\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"Contraseña anterior\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"Nueva contraseña\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"Cambiar mi contraseña\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"Recuperar contraseña\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"Reinicialización de contraseña completada\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"Se le ha enviado su contraseña. Ahora puede continuar e ingresar.\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"Confirmación de reincialización de contraseña\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"Introduzca la nueva contraseña\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"\"\n\"Por favor introduzca su nueva contraseña dos veces de manera que podamos \"\n\"verificar que la ha escrito correctamente.\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"Nueva contraseña:\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"Confirme contraseña:\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"Reinicialización de contraseña no exitosa\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\"El enlace de reinicialización de contraseña es inválido, posiblemente debido \"\n\"a que ya ha sido usado. Por favor solicite una nueva reinicialización de \"\n\"contraseña.\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"Recuperación de contraseña exitosa\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"\"\n\"Por favor visite la página que se muestra a continuación y elija una nueva \"\n\"contraseña:\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"Su nombre de usuario, en caso de haberlo olvidado:\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"¡Gracias por usar nuestro sitio!\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"El equipo de %(site_name)s\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"Recuperar mi contraseña\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"Todas las fechas\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"(Ninguno)\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"Seleccione %s\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"Seleccione %s a modificar\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/es_MX/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Abraham Estrada <abraham.estrada@gmail.com>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-03-08 10:42+0000\\n\"\n\"Last-Translator: Abraham Estrada <abraham.estrada@gmail.com>\\n\"\n\"Language-Team: Spanish (Mexico) (http://www.transifex.com/projects/p/django/\"\n\"language/es_MX/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: es_MX\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"Disponible %s\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Esta es la lista de los %s disponibles. Usted puede elegir algunos \"\n\"seleccionándolos en el cuadro de abajo y haciendo click en la flecha \"\n\"\\\"Seleccionar\\\" entre las dos cajas.\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"Escriba en esta casilla para filtrar la lista de %s disponibles.\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"Filtro\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"Seleccionar todos\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"Da click para seleccionar todos los %s de una vez.\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"Seleccionar\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"Quitar\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"%s seleccionados\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Esta es la lista de los %s elegidos. Usted puede eliminar algunos \"\n\"seleccionándolos en el cuadro de abajo y haciendo click en la flecha \"\n\"\\\"Eliminar\\\" entre las dos cajas.\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"Eliminar todos\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"Da click para eliminar todos los %s seleccionados de una vez.\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"%(sel)s de %(cnt)s seleccionado/a\"\nmsgstr[1] \"%(sel)s de %(cnt)s seleccionados/as\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\"Tiene modificaciones sin guardar en campos modificables individuales. Si \"\n\"ejecuta una acción las mismas se perderán.\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\"Ha seleccionado una acción, pero todavía no ha grabado las modificaciones \"\n\"que ha realizado en campos individuales. Por favor haga click en Aceptar \"\n\"para grabarlas. Necesitará ejecutar la acción nuevamente.\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\"Ha seleccionado una acción pero no ha realizado ninguna modificación en \"\n\"campos individuales. Es probable que lo que necesite usar en realidad sea el \"\n\"botón Ejecutar y no el botón Guardar.\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"\"\n\"Enero Febrero Marzo Abril Mayo Junio Julio Agosto Setiembre Octubre \"\n\"Noviembre Diciembre\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"D L M M J V S\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"Mostrar\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"Ocultar\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"Ahora\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"Reloj\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"Elija una hora\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"Medianoche\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"6 a.m.\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"Mediodía\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"Cancelar\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"Hoy\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"Calendario\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"Ayer\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"Mañana\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/et/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# eallik <eallik@gmail.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:52+0000\\n\"\n\"Last-Translator: Ramiro Morales <cramm0@gmail.com>\\n\"\n\"Language-Team: Estonian (http://www.transifex.com/projects/p/django/language/\"\n\"et/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: et\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"%(count)d %(items)s kustutamine õnnestus\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"Ei saa kustutada %(name)s\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"Kas olete kindel?\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"Kustuta valitud %(verbose_name_plural)s\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"Kõik\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"Jah\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"Ei\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"Tundmatu\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"Suvaline kuupäev\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"Täna\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"Viimased 7 päeva\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"Käesolev kuu\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"Käesolev aasta\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"Teie sessioon on aegunud. Palun logige uuesti sisse.\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"Toiming:\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"toimingu aeg\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"objekti id\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"objekti esitus\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"toimingu lipp\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"muudatuse tekst\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"logisissekanne\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"logisissekanded\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"Puudub\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"Muutsin %s.\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"ja\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Lisatud %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Muudetud %(list)s objektil %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Kustutatud %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"Ühtegi välja ei muudetud.\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" lisamine õnnestus. Te võite seda muuta.\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" lisamine õnnestus.\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" muutmine õnnestus.\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\"Palun märgistage elemendid, millega soovite toiminguid sooritada. Ühtegi \"\n\"elementi ei muudetud.\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"Toiming valimata.\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"Lisa %s\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"%(name)s objekt primaarvõtmega %(key)r ei eksisteeri.\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"Muuda %s\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"Andmebaasi viga\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"%(count)s %(name)s muutmine õnnestus.\"\nmsgstr[1] \"%(count)s %(name)s muutmine õnnestus.\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"%(total_count)s valitud\"\nmsgstr[1] \"Kõik %(total_count)s valitud\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"valitud 0/%(cnt)s\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" kustutati.\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"Muudatuste ajalugu: %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"Sisene\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"Saidi administreerimine\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"%s - administreerimine\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"Kuupäev:\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"Aeg:\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"Otsi\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"Lisa Uus\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"Lehte ei leitud\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"Vabandame, kuid soovitud lehte ei leitud.\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"Kodu\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"Serveri viga\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"Serveri viga (500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"Serveri Viga <em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"Käivita valitud toiming\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"Mine\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"Kliki siin, et märgistada objektid üle kõigi lehekülgede\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"Märgista kõik %(total_count)s %(module_name)s\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"Tühjenda valik\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"Tere tulemast,\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"Dokumentatsioon\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"Muuda salasõna\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"Logi välja\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"Django administreerimisliides\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"Django administreerimisliides\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"Lisa\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"Ajalugu\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"Näita lehel\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"Palun parandage allolev viga\"\nmsgstr[1] \"Palun parandage allolevad vead\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"Lisa %(name)s\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"Filtreeri\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"Kustuta\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"Selleks, et kustutada %(object_name)s '%(escaped_object)s', on vaja \"\n\"kustutada lisaks ka kõik seotud objecktid, aga teil puudub õigus järgnevat \"\n\"tüüpi objektide kustutamiseks:\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\"Et kustutada %(object_name)s '%(escaped_object)s', on vaja kustutada \"\n\"järgmised kaitstud seotud objektid:\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\"Kas olete kindel, et soovite kustutada objekti %(object_name)s \"\n\"\\\"%(escaped_object)s\\\"? Kõik järgnevad seotud objektid kustutatakse koos \"\n\"sellega:\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"Jah, olen kindel\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"Kustuta mitu objekti\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\"Kui kustutada valitud %(objects_name)s, peaks kustutama ka seotud objektid, \"\n\"aga sinu kasutajakontol pole õigusi järgmiste objektitüüpide kustutamiseks:\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\"Et kustutada valitud %(objects_name)s, on vaja kustutada ka järgmised \"\n\"kaitstud seotud objektid:\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\"Kas oled kindel, et soovid kustutada valitud %(objects_name)s? Kõik \"\n\"järgnevad objektid ja seotud objektid kustutatakse:\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \" %(filter_title)s \"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"Muuda\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"Teil ei ole õigust midagi muuta.\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"Hiljutised Toimingud\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"Minu Toimingud\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"Ei leitud ühtegi\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"Tundmatu sisu\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"On tekkinud viga seoses andmebaasiga. Veenduge, et kõik vajalikud \"\n\"andmebaasitabelid on loodud  ning et andmebaas on vastava kasutaja poolt \"\n\"loetav.\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"Salasõna:\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"Kuupäev/kellaaeg\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"Kasutaja\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"Toiming\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\"Sellel objektil puudub muudatuste ajalugu. Tõenäoliselt ei kasutatud selle \"\n\"objekti lisamisel käesolevat administreerimislidest.\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"Näita kõiki\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"Salvesta\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"Otsing\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"%(counter)s tulemus\"\nmsgstr[1] \"%(counter)s tulemust\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"Kokku %(full_result_count)s\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"Salvesta uuena\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"Salvesta ja lisa uus\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"Salvesta ja jätka muutmist\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\"Kõige pealt sisestage kasutajatunnus ja salasõna, seejärel on võimalik muuta \"\n\"täiendavaid kasutajaandmeid.\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"Sisestage kasutajanimi ja salasõna.\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"Sisestage uus salasõna kasutajale <strong>%(username)s</strong>\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"Salasõna\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"Salasõna (uuesti)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"\"\n\"Sisestage sama salasõna uuesti veendumaks, et sisestamisel ei tekkinud vigu\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"Eemalda\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"Lisa veel üks %(verbose_name)s\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"Kustutan?\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"Tänan, et veetsite aega meie lehel.\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"Logi uuesti sisse\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"Salasõna muutmine\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"Salasõna muutmine õnnestus\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"Teie salasõna on vahetatud.\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"Turvalisuse tagamiseks palun sisestage oma praegune salasõna ning seejärel \"\n\"uus salasõna.Veendumaks, et uue salasõna sisestamisel ei tekkinud vigu, \"\n\"palun sisestage see kaks korda.\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"Vana salasõna\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"Uus salasõna\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"Muuda salasõna\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"Uue parooli loomine\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"Uue salasõna loomine valmis\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"Teie salasõna on määratud. Võite nüüd sisse logida.\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"Uue salasõna loomise kinnitamine\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"Sisestage uus salasõna\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"\"\n\"Palun sisestage uus salasõna kaks korda, et saaksime veenduda, et \"\n\"sisestamisel ei tekkinud vigu.\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"Uus salasõna:\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"Kinnita salasõna:\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"Uue salasõna loomine ebaõnnestus\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\"Uue salasõna loomise link ei olnud korrektne. Võimalik, et seda on varem \"\n\"kasutatud. Esitage uue salasõna taotlus uuesti.\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"Uue parooli loomine õnnestus\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"Palun minge järmisele lehele ning sisestage uus salasõna\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"Teie kasutajatunnus juhul, kui olete unustanud:\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"Täname meie lehte külastamast!\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"%(site_name)s meeskond\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"Reseti parool\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"Kõik kuupäevad\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"(Puudub)\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"Vali %s\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"Vali %s mida muuta\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/et/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# eallik <eallik@gmail.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-03-08 10:42+0000\\n\"\n\"Last-Translator: eallik <eallik@gmail.com>\\n\"\n\"Language-Team: Estonian (http://www.transifex.com/projects/p/django/language/\"\n\"et/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: et\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"Saadaval %s\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"Filter\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"Vali kõik\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"Eemalda\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"Valitud %s\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"%(sel)s  %(cnt)sst valitud\"\nmsgstr[1] \"%(sel)s  %(cnt)sst valitud\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\"Muudetavates lahtrites on salvestamata muudatusi. Kui sooritate mõne \"\n\"toimingu, lähevad salvestamata muudatused kaotsi.\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\"Valisid toimingu, kuid pole salvestanud muudatusi lahtrites. Salvestamiseks \"\n\"palun vajuta OK. Pead toimingu uuesti käivitama.\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\"Valisid toimingu, kuid sa pole ühtegi lahtrit muutnud. Tõenäoliselt peaksid \"\n\"vajutama 'Mine' mitte 'Salvesta' nuppu.\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"\"\n\"Jaanuar Veebruar Märts Aprill Mai Juuni Juuli August September Oktoober \"\n\"November Detsember\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"P E T K N R L\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"Näita\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"Varja\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"Praegu\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"Kell\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"Vali aeg\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"Kesköö\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"6 hommikul\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"Keskpäev\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"Tühista\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"Täna\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"Kalender\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"Eile\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"Homme\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/eu/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Translators:\n# Aitzol Naberan <anaberan@codesyntax.com>, 2011-2013.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#  <julenx@gmail.com>, 2013.\n#   <julenx@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-16 11:21+0000\\n\"\n\"Last-Translator: julen <julenx@gmail.com>\\n\"\n\"Language-Team: Basque (http://www.transifex.com/projects/p/django/language/\"\n\"eu/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: eu\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"%(count)d %(items)s elementu ezabatu dira.\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"Ezin da %(name)s ezabatu\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"Ziur zaude?\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"Ezabatu aukeratutako %(verbose_name_plural)s\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"Dena\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"Bai\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"Ez\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"Ezezaguna\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"Edozein data\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"Gaur\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"Aurreko 7 egunak\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"Hilabete hau\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"Urte hau\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\"Idatzi kudeaketa gunerako %(username)s eta pasahitz zuzena. Kontuan izan \"\n\"biek maiuskula/minuskulak desberdintzen dituztela.\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"Hasi saioa berriro, zure sesioa iraungitu egin da.\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"Ekintza:\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"Ekintza hordua\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"Objetuaren id-a\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"Objeturaren aurkezpena\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"Ekintza botoia\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"Mezua aldatu\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"Log sarrera\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"log sarrerak\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"\\\"%(object)s\\\" gehituta.\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"\\\"%(object)s\\\" aldatuta - %(changes)s\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"\\\"%(object)s\\\" ezabatuta.\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"LogEntry objektua\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"Bat ere ez\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"%s aldatuta.\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"eta\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"%(name)s \\\"%(object)s\\\" gehituta.\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"%(name)s \\\"%(object)s\\\" ezabatuta.\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"Ez da eremurik aldatu.\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" ondo gehitu da. Jarraian aldatu dezakezu berriro.\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" ondo gehitu da. Beste %(name)s bat gehitu dezakezu \"\n\"jarraian.\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" ondo gehitu da.\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" ondo aldatu da. Aldaketa gehiago egin ditzazkezu \"\n\"jarraian.\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" ondo aldatu da. Beste %(name)s bat gehitu dezakezu \"\n\"jarraian.\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" ondo aldatu da.\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\"Elementuak aukeratu behar dira beraien gain ekintzak burutzeko. Ez da \"\n\"elementurik aldatu.\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"Ez dago ekintzarik aukeratuta.\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"Gehitu %s\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"Ez dago %(key)r gakodun %(name)s objekturik.\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"Aldatu %s\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"Datu-basearen errorea\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"%(name)s %(count)s  ondo aldatu da.\"\nmsgstr[1] \"%(count)s %(name)s ondo aldatu dira.\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"Guztira %(total_count)s aukeratuta\"\nmsgstr[1] \"Guztira %(total_count)s aukeratuta\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"Guztira %(cnt)s, 0 aukeratuta\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" ondo ezabatu da.\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"Aldaketen historia: %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"Sartu\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"Webgunearen kudeaketa\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"%s kudeaketa\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"Data:\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"Ordua:\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"Lookup\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"Beste bat gehitu\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"Oraingoa:\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"Aldatu:\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"Ez da orririk aurkitu\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"Barkatu, eskatutako orria ezin daiteke aurkitu\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"Hasiera\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"Zerbitzariaren errorea\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"Zerbitzariaren errorea (500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"Zerbitzariaren errorea <em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\"Errore bat gertatu da. Errorea guneko kudeatzaileari jakinarazi zaio email \"\n\"bidez eta laister egon beharko luke konponduta. Barkatu eragozpenak.\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"Burutu hautatutako ekintza\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"Joan\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"Egin klik hemen orri guztietako objektuak aukeratzeko\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"Hautatu %(total_count)s %(module_name)s guztiak\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"Garbitu hautapena\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"Ongi etorri,\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"Dokumentazioa\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"Aldatu pasahitza\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"Irten\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"Django kudeaketa gunea\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"Django kudeaketa\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"Gehitu\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"Historia\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"Ikusi gunean\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"Zuzendu azpiko errorea.\"\nmsgstr[1] \"Zuzendu azpiko erroreak.\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"Gehitu  %(name)s\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"Iragazkia\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"Kendu ordenaziotik\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"Ordenatzeko lehentasuna: %(priority_number)s\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"Txandakatu ordenazioa\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"Ezabatu\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"%(object_name)s ezabatzean bere '%(escaped_object)s' ere ezabatzen dira, \"\n\"baina zure kontuak ez dauka baimenik objetu mota hauek ezabatzeko:\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\"%(object_name)s '%(escaped_object)s' ezabatzeak erlazionatutako objektu \"\n\"babestu hauek ezabatzea eskatzen du:\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\"Ziur zaude %(object_name)s \\\"%(escaped_object)s\\\" ezabatu nahi dituzula? \"\n\"Erlazionaturik dauden hurrengo elementuak ere ezabatuko dira:\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"Bai, ziur nago\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"Ezabatu hainbat objektu\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\"Hautatutako %(objects_name)s ezabatzeak erlazionatutako objektuak ezabatzea \"\n\"eskatzen du baina zure kontuak ez dauka baimen nahikorik objektu mota hauek \"\n\"ezabatzeko: \"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\"Hautatutako %(objects_name)s ezabatzeak erlazionatutako objektu babestu \"\n\"hauek ezabatzea eskatzen du:\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\"Ziur zaude hautatutako %(objects_name)s ezabatu nahi duzula? Objektu guzti \"\n\"hauek eta erlazionatutako elementu guztiak ezabatuko dira:\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \"Irizpidea: %(filter_title)s\"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"%(name)s aplikazioaren modeloak\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"Aldatu\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"Ez daukazu ezer aldatzeko baimenik.\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"Azken ekintzak\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"Nire ekintzak\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"Ez dago ezer\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"Eduki ezezaguna\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"Zerbait gaizki dago zure datu-basearekin. Ziurtatu datu-baseko taulak sortu \"\n\"direla eta erabiltzaile egokiak irakurtzeko baimena duela.\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"Pasahitza:\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"Pasahitza edo erabiltzaile-izena ahaztu duzu?\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"Data/ordua\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"Erabiltzailea\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"Ekintza\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\"Objektu honek ez dauka aldaketen historiarik. Ziurrenik kudeaketa gunetik \"\n\"kanpo gehituko zen.\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"Erakutsi dena\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"Gorde\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"Bilatu\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"Emaitza %(counter)s \"\nmsgstr[1] \"%(counter)s emaitza\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"%(full_result_count)s guztira\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"Gorde berri gisa\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"Gorde eta gehitu beste bat\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"Gorde eta jarraitu editatzen\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\"Lehenik idatzi erabiltzaile-izena eta pasahitza. Gero erabiltzaile-aukera \"\n\"gehiago aldatu ahal izango dituzu.\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"Idatzi erabiltzaile-izen eta pasahitza.\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"\"\n\"Idatzi pasahitz berria <strong>%(username)s</strong> erabiltzailearentzat.\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"Pasahitza\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"Pasahitza (berriro)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Idatzi goiko pasahitz bera, egiaztapenerako.\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"Kendu\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"Gehitu beste %(verbose_name)s bat\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"Ezabatu?\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"Eskerrik asko webguneari zure probetxuzko denbora eskaintzeagatik.\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"Hasi saioa berriro\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"Aldatu pasahitza\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"Pasahitza ondo aldatu da\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"Zure pasahitza aldatu egin da.\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"Idatzi pasahitz zaharra segurtasun arrazoiengatik eta gero pasahitz berria \"\n\"bi aldiz, akatsik egiten ez duzula ziurta dezagun.\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"Pasahitz zaharra\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"Pasahitz berria\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"Aldatu nire pasahitza\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"Berrezarri pasahitza\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"Pasahitza berrezartzea burutu da\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"Zure pasahitza ezarri da. Orain aurrera egin eta sartu zaitezke.\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"Pasahitza berrezartzeko berrespena\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"Idatzi pasahitz berria\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"Idatzi pasahitz berria birritan ondo idatzita dagoela ziurta dezagun.\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"Pasahitz berria:\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"Berretsi pasahitza:\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"Pasahitza ez da berrezarri\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\"Pasahitza berrezartzeko loturak baliogabea dirudi. Baliteke lotura aurretik \"\n\"erabilita egotea. Eskatu berriro pasahitza berrezartzea.\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"Pasahitza ondo berrezarri da\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\"Emandako helbide elektronikora bidali dizkizugu pasahitza berrezartzeko \"\n\"jarraibideak. Epe laburrean jaso behar zenuke.\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\"Mezu hau %(site_name)s webgunean pasahitza berrezartzea eskatu duzulako jaso \"\n\"duzu\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"Zoaz hurrengo orrira eta aukeratu pasahitz berria:\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"Zure erabiltzaile-izena (ahaztu baduzu):\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"Mila esker gure webgunea erabiltzeagatik!\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"%(site_name)s webguneko taldea\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\"Pasahitza ahaztu duzu? Idatzi zure helbide elektronikoa eta berri bat \"\n\"ezartzeko jarraibideak bidaliko dizkizugu.\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"Helbide elektronikoa:\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"Berrezarri pasahitza\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"Data guztiak\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"(Bat ere ez)\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"Hautatu %s\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"Hautatu %s aldatzeko\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/eu/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Translators:\n# Aitzol Naberan <anaberan@codesyntax.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#  <julenx@gmail.com>, 2013.\n#   <julenx@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2013-03-12 13:40+0000\\n\"\n\"Last-Translator: julen <julenx@gmail.com>\\n\"\n\"Language-Team: Basque (http://www.transifex.com/projects/p/django/language/\"\n\"eu/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: eu\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"%s Erabilgarri\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Hau da aukeran dauden %s zerrenda. Hauetako zenbait aukera ditzakezu \"\n\"azpiko \\n\"\n\"kaxan hautatu eta kutxen artean dagoen \\\"Aukeratu\\\" gezian klik eginez.\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"Idatzi kutxa honetan erabilgarri dauden %s objektuak iragazteko.\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"Filtroa\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"Denak aukeratu\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"Egin klik %s guztiak batera aukeratzeko.\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"Aukeratu\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"Kendu\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"%s Aukeratuak\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Hau da aukeratutako %s zerrenda. Hauetako zenbait ezaba ditzakezu azpiko \"\n\"kutxan hautatu eta bi kutxen artean dagoen \\\"Ezabatu\\\" gezian klik eginez.\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"Kendu guztiak\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"Egin klik aukeratutako %s guztiak kentzeko.\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"%(cnt)s-etik %(sel)s aukeratuta\"\nmsgstr[1] \"%(cnt)s-etik %(sel)s aukeratuta\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\"Gorde gabeko aldaketak dauzkazu eremuetan. Ekintza bat exekutatzen baduzu, \"\n\"gorde gabeko aldaketak galduko dira.\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\"Ekintza bat hautatu duzu, baina oraindik ez duzu eremuetako aldaketak gorde. \"\n\"Mesedez, sakatu OK gordetzeko. Ekintza berriro exekutatu beharko duzu.\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\"Ekintza bat hautatu duzu, baina ez duzu inongo aldaketarik egin eremuetan. \"\n\"Litekeena da, Gorde botoia beharrean Aurrera botoiaren bila aritzea.\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"\"\n\"Urtarrila Otsaila Martxoa Apirila Maiatza Ekaina Uztaila Abuztua Iraila \"\n\"Urria Azaroa Abendua\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"I A A A O O L\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"Erakutsi\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"Izkutatu\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"Orain\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"Erlojua\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"Aukeratu ordu bat\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"Gauerdia\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"6 a.m.\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"Eguerdia\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"Atzera\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"Gaur\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"Egutegia\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"Atzo\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"Bihar\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/fa/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Ali Nikneshan <ali@nikneshan.com>, 2011-2012.\n# Alireza Savand <alireza.savand@gmail.com>, 2012-2013.\n# Arash Fazeli <a.fazeli@gmail.com>, 2012.\n# Arash Fazeli <arash_fazeli77@yahoo.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-11 08:27+0000\\n\"\n\"Last-Translator: Alireza Savand <alireza.savand@gmail.com>\\n\"\n\"Language-Team: Persian (http://www.transifex.com/projects/p/django/language/\"\n\"fa/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: fa\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"%(count)d عدد از %(items)s با موفقیت پاک شد\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"ناتوان در حذف %(name)s\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"آیا مطمئن هستید؟\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"حذف  %(verbose_name_plural)s های انتخاب شده\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"همه\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"بله\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"خیر\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"ناشناخته\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"هر تاریخی\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"امروز\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"۷ روز اخیر\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"این ماه\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"امسال\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\"لطفا %(username)s و گذرواژهٔ را برای حساب کارکنان وارد کنید.\\n\"\n\"توجه داشته باشید که هر دو میتوانند به کوچکی و بزرگی حروف حساس باشند.\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"لطفا دوباره وارد شوید، جلسه شما منقضی شد.\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"حرکت\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"زمان اتفاق\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"شناسهٔ شیء\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"صورت شیء\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"نشانه عمل\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"پیغام تغییر\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"مورد اتفاقات\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"موارد اتفاقات\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"\\\"%(object)s\\\" افروده شد.\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"تغییر \\\"%(object)s\\\" - %(changes)s\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"\\\"%(object)s\\\" حدف شد.\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"شئ LogEntry\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"هیچ\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"%s تغییر یافته.\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"و\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"%(name)s «%(object)s» اضافه شد.\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"%(list)s %(name)s «%(object)s» تغییر یافت.\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"%(name)s «%(object)s» حذف شد.\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"فیلدی تغییر نیافته است.\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"\"\n\"%(name)s·\\\"%(obj)s\\\" با موفقیت اضافه شد. می‌توانید در این پایین ویرایشش کنید.\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" با موفقیت اضافه شد. شما می‌توانید در ذیل یک %(name)s \"\n\"دیگر اضافه نمایید.\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"%(name)s «%(obj)s» با موفقیت اضافه شد.\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" با موفقیت تغییر یافت. شما می‌توانید در ذیل مجدداُ آنرا \"\n\"ویرایش نمایید.\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" با موفقیت تغییر یافت. شما می‌توانید در ذیل یک %(name)s \"\n\"دیگر اضافه نمایید.\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"%(name)s·\\\"%(obj)s\\\" با موفقیت تغییر یافت.\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\"آیتم ها باید به منظور انجام عملیات بر روی آنها انتخاب شود. هیچ آیتمی با \"\n\"تغییر نیافته است.\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"حرکتی انتخاب نشده\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"اضافه کردن %s\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"ایتم%(name)s با کلید اصلی %(key)r وجود ندارد.\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"تغییر %s\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"خطا در بانک اطلاعاتی\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"%(count)s %(name)s با موفقیت تغییر کرد.\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"همه موارد %(total_count)s انتخاب شده\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"0 از %(cnt)s انتخاب شده‌اند\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"%(name)s·\\\"%(obj)s\\\" با موفقیت حذف شد.\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"تاریخچهٔ تغییر: %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"ورود\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"مدیریت وبگاه\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"مدیریت %s\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"تاریخ:\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"زمان:\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"جستجو\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"اضافه کردن یکی دیگر\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"در حال حاضر:\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"تغییر یافته:\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"صفحه یافت نشد\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"متأسفیم، صفحه مورد تقاضا یافت نشد.\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"آغازه\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"خطای کارگزار\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"خطای کارگزار (۵۰۰)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"خطای کارگزار <em>(۵۰۰)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\"مشکلی پیش آمده. این مشکل از طریق ایمیل به مدیران سایت اطلاع داده شد و به \"\n\"زودی اصلاح میگردد. از صبر شما ممنونیم\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"اجرای حرکت انتخاب شده\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"برو\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"برای انتخاب موجودیت‌ها در تمام صفحات اینجا را کلیک کنید\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"انتخاب تمامی %(total_count)s %(module_name)s\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"لغو انتخاب‌ها\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"خوش آمدید،\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"مستندات\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"تغییر گذرواژه\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"خروج\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"وب‌گاه مدیریت Django\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"مدیریت Django\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"اضافه کردن\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"تاریخچه\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"مشاهده در وبگاه\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"لطفاً خطای زیر را حل کنید.\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"اضافه‌کردن %(name)s\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"فیلتر\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"حذف از مرتب سازی\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"اولویت مرتب‌سازی: %(priority_number)s\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"تعویض مرتب سازی\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"حذف\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"حذف %(object_name)s·'%(escaped_object)s' می تواند باعث حذف اشیاء مرتبط شود. \"\n\"اما حساب شما دسترسی لازم برای حذف اشیای از انواع زیر را ندارد:\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\"حذف %(object_name)s '%(escaped_object)s' نیاز به حذف موجودیت‌های مرتبط محافظت \"\n\"شده ذیل دارد:\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\"آیا مطمئنید که می‌خواهید %(object_name)s·\\\"%(escaped_object)s\\\" را حذف کنید؟ \"\n\"کلیهٔ اشیای مرتبط زیر حذف خواهند شد:\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"بله، مطمئن هستم.\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"حذف اشیاء متعدد\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\"حذف %(objects_name)s انتخاب شده منجر به حذف موجودیت‌های مرتبط خواهد شد، ولی \"\n\"شناسه شما اجازه حذف اینگونه از موجودیت‌های ذیل را ندارد:\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\"حذف %(objects_name)s انتخاب شده نیاز به حذف موجودیت‌های مرتبط محافظت شده ذیل \"\n\"دارد:\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\"آیا در خصوص حذف %(objects_name)s انتخاب شده اطمینان دارید؟ تمام موجودیت‌های \"\n\"ذیل به همراه موارد مرتبط با آنها حذف خواهند شد:\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \"براساس %(filter_title)s \"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"مدلها در برنامه %(name)s \"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"تغییر\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"شما اجازهٔ ویرایش چیزی را ندارید.\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"اعمال اخیر\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"اعمال من\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"چیزی در دسترس نیست\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"محتوا ناشناخته\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"در نصب بانک اطلاعاتی شما مشکلی وجود دارد. مطمئن شوید که جداول مربوطه به \"\n\"درستی ایجاد شده‌اند و اطمینان حاصل کنید که بانک اطلاعاتی توسط کاربر مربوطه \"\n\"قابل خواندن می باشد.\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"گذرواژه:\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"آیا گذرواژه یا نام کاربری خود را فراموش کرده؟\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"تاریخ/ساعت\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"کاربر\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"عمل\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\"این شیء تاریخچهٔ تغییرات ندارد. احتمالا این شیء توسط وبگاه مدیریت ایجاد نشده \"\n\"است.\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"نمایش همه\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"ذخیره\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"جستجو\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"%(counter)s نتیجه\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"در مجموع %(full_result_count)s\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"ذخیره به عنوان جدید\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"ذخیره و ایجاد یکی دیگر\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"ذخیره و ادامه ویرایش\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\"ابتدا یک نام کاربری و گذرواژه وارد کنید. سپس می توانید مشخصات دیگر کاربر را \"\n\"ویرایش کنید.\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"یک نام کاربری و رمز عبور را وارد کنید.\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"برای کابر <strong>%(username)s</strong> یک گذرنامهٔ جدید وارد کنید.\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"گذرواژه\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"گذرواژه (تکرار)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"همان گذرواژهٔ بالایی را برای اطمینان دوباره وارد کنید.\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"حذف\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"افزودن یک %(verbose_name)s دیگر\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"حذف؟\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"متشکر از اینکه مدتی از وقت خود را به ما اختصاص دادید.\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"ورود دوباره\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"تغییر گذرواژه\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"گذرواژه تغییر یافت.\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"گذرواژهٔ شما تغییر یافت.\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"گذرواژهٔ قدیمی خود را، برای امنیت بیشتر، وارد کنید و سپس گذرواژهٔ جدیدتان را \"\n\"دوبار وارد کنید تا ما بتوانیم چک کنیم که به درستی تایپ کرده‌اید.\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"گذرواژهٔ قدیمی\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"گذرواژهٔ جدید\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"تغییر گذرواژهٔ من\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"ایجاد گذرواژهٔ جدید\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"گذرواژهٔ جدید ایجاد شد\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"گذرواژهٔ جدیدتان تنظیم شد. اکنون می‌توانید وارد وبگاه شوید.\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"تصدیق گذرواژهٔ جدید\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"ورود گذرواژهٔ جدید\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"\"\n\"گذرواژهٔ جدیدتان را دوبار وارد کنید تا ما بتوانیم چک کنیم که به درستی تایپ \"\n\"کرده‌اید.\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"گذرواژهٔ جدید\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"تکرار گذرواژه\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"گذرواژهٔ جدید ایجاد نشد.\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\"پیوند ایجاد گذرواژهٔ جدید نامعتبر بود، احتمالاً به این علت که قبلاً از آن \"\n\"استفاده شده است. لطفاً برای یک گذرواژهٔ جدید درخواست دهید.\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"گذرواژهٔ جدید ایجاد شد.\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\"ما روش تنظیم مجدد رمز را برایتان ارسال نمودیم. شما به زودی این ایمیل را \"\n\"دریافت می کنید.\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\"شما این ایمیل را بخاطر تقاضای تغییر رمز حساب در  %(site_name)s. دریافت کرده \"\n\"اید.\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"لطفاً به صفحهٔ زیر بروید و یک گذرواژهٔ جدید انتخاب کنید:\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"نام کاربریتان، اگر یادتان رفته است:\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"متشکر از استفادهٔ شما از وبگاه ما\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"گروه %(site_name)s\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\"رمز خود را فراموش کرده اید؟ آدرس ایمیل خود را در زیر وارد کنید، و ما روش \"\n\"تنظیم رمز جدید را برایتان می فرستیم.\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"آدرس ایمیل:\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"ایجاد گذرواژهٔ جدید\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"همهٔ تاریخ‌ها\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"(هیچ)\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"%s انتخاب کنید\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"%s را برای تغییر انتخاب کنید\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/fa/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Ali Nikneshan <ali@nikneshan.com>, 2011, 2012.\n# Alireza Savand <alireza.savand@gmail.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Sina Cheraghi <sinacher@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-08-11 08:33+0000\\n\"\n\"Last-Translator: Ali Nikneshan <ali@nikneshan.com>\\n\"\n\"Language-Team: Persian (http://www.transifex.com/projects/p/django/language/\"\n\"fa/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: fa\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"%s موجود\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"این لیست%s های  در دسترس است. شما ممکن است برخی از آنها را در محل  زیرانتخاب \"\n\"نمایید و سپس روی \\\"انتخاب\\\" بین دو جعبه کلیک کنید.\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"درون این جعبه تایپ کنید تا لیست %s های موجود فیلتر شود.\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"فیلتر\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"انتخاب همه\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"کلیک کنید را انتخاب کنید تمام %s را در یک بار.\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"انتخاب\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"حذف\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"%s انتخاب شده\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"این فهرست %s های انتخاب شده است. شما ممکن است برخی از انتخاب آنها را در محل \"\n\"زیر وارد نمایید و سپس روی \\\"حذف\\\" جهت دار بین دو جعبه حذف شده است.\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"حذف همه\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"کلیک کنید تا تمام %s های انتخاب شده حذف شوند.\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \" %(sel)s از %(cnt)s انتخاب شده است.\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\"شما تغییراتی در بعضی فیلدهای قابل تغییر انجام داده اید. اگر کاری انجام \"\n\"دهید،  تغییرات از دست خواهند رفت\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\"شما کاری را انتخاب کرده اید، ولی هنوز تغییرات بعضی فیلد ها را ذخیره نکرده \"\n\"اید. لطفا OK را فشار دهید تا ذخیره شود.\\n\"\n\"شما باید عملیات را دوباره انجام دهید.\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\"شما عملی را انجام داده اید، ولی تغییری انجام نداده اید. احتمالا دنبال کلید \"\n\"Go به جای Save میگردید.\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"ژانویه فوریه مارس آوریل مه ژوئن ژوئیه اوت سپتامبر اکتبر نوامبر دسامبر\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"یکشنبه دوشنبه سه‌شنبه چهارشنبه پنجشنبه جمعه شنبه\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"نمایش\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"پنهان کردن\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"حالا\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"ساعت\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"یک زمان انتخاب کنید\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"نیمه‌شب\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"۶ صبح\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"ظهر\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"انصراف\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"امروز\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"تقویم\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"دیروز\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"فردا\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/fi/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Antti Kaihola <akaihol+transifex@ambitone.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <klaus.dahlen@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:52+0000\\n\"\n\"Last-Translator: Ramiro Morales <cramm0@gmail.com>\\n\"\n\"Language-Team: Finnish (http://www.transifex.com/projects/p/django/language/\"\n\"fi/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: fi\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"%(count)d \\\"%(items)s\\\"-kohdetta poistettu.\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"Ei voida poistaa: %(name)s\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"Oletko varma?\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"Poista valitut \\\"%(verbose_name_plural)s\\\"-kohteet\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"Kaikki\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"Kyllä\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"Ei\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"Tuntematon\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"Mikä tahansa päivä\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"Tänään\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"Viimeiset 7 päivää\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"Tässä kuussa\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"Tänä vuonna\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"Kirjaudu uudelleen sisään, sillä istuntosi on vanhentunut.\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"Toiminto:\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"tapahtumahetki\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"kohteen tunniste\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"kohteen tiedot\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"tapahtumatyyppi\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"selitys\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"lokimerkintä\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"lokimerkinnät\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"Ei arvoa\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"Muokattu: %s.\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"ja\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Lisätty %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Muutettu %(list)s kohteelle %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Poistettu %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"Ei muutoksia kenttiin.\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" on lisätty. Voit muokata sitä uudelleen alla.\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" on lisätty.\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" on muutettu.\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\"Kohteiden täytyy olla valittuna, jotta niihin voi kohdistaa toimintoja. \"\n\"Kohteita ei ole muutettu.\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"Ei toimintoa valittuna.\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"Lisää %s\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"%(name)s perusavaimella %(key)r ei ole olemassa.\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"Muokkaa %s\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"Tietokantavirhe\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"%(count)s %(name)s on muokattu.\"\nmsgstr[1] \"%(count)s \\\"%(name)s\\\"-kohdetta on muokattu.\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"%(total_count)s valittu\"\nmsgstr[1] \"Kaikki %(total_count)s valittu\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"0 valittuna %(cnt)s mahdollisesta\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" on poistettu.\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"Muokkaushistoria: %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"Kirjaudu sisään\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"Sivuston ylläpito\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"%s ylläpito\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"Pvm:\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"Klo:\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"Etsi\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"Lisää seuraava\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"Sivua ei löydy\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"Pahoittelemme, pyydettyä sivua ei löytynyt.\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"Etusivu\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"Palvelinvirhe\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"Palvelinvirhe (500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"Palvelinvirhe <em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"Suorita valittu toiminto\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"Suorita\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"Klikkaa tästä valitaksesi kohteet kaikilta sivuilta\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"Valitse kaikki %(total_count)s %(module_name)s\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"Tyhjennä valinta\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"Tervetuloa,\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"Ohjeita\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"Vaihda salasana\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"Kirjaudu ulos\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"Django-sivuston ylläpito\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"Djangon ylläpito\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"Lisää\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"Muokkaushistoria\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"Näytä lopputulos\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"Korjaa allaoleva virhe.\"\nmsgstr[1] \"Korjaa allaolevat virheet.\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"Lisää %(name)s\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"Suodatin\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"Poista\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"Kohteen '%(escaped_object)s' (%(object_name)s) poisto poistaisi myös siihen \"\n\"liittyviä kohteita, mutta sinulla ei ole oikeutta näiden kohteiden \"\n\"poistamiseen:\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\"%(object_name)s '%(escaped_object)s': poistettaessa joudutaan poistamaan \"\n\"myös seuraavat suojatut siihen liittyvät kohteet:\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\"Haluatko varmasti poistaa kohteen \\\"%(escaped_object)s\\\" (%(object_name)s)? \"\n\"Myös seuraavat kohteet poistettaisiin samalla:\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"Kyllä, olen varma\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"Poista useita kohteita\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\"Jos valitut %(objects_name)s poistettaisiin, jouduttaisiin poistamaan niihin \"\n\"liittyviä kohteita. Sinulla ei kuitenkaan ole oikeutta poistaa seuraavia \"\n\"kohdetyyppejä:\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\"Jos valitut %(objects_name)s poistetaan, pitää poistaa myös seuraavat \"\n\"suojatut niihin liittyvät kohteet:\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\"Haluatki varmasti poistaa valitut %(objects_name)s? Samalla poistetaan \"\n\"kaikki alla mainitut ja niihin liittyvät kohteet:\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \" %(filter_title)s \"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"Muokkaa\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"Sinulla ei ole oikeutta muokata mitään.\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"Viimeisimmät tapahtumat\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"Omat tapahtumani\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"Ei yhtään\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"Tuntematon sisältö\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"Tietokanta-asennuksessa on jotain vialla. Varmista, että sopivat taulut on \"\n\"luotu ja että oikea käyttäjä voi lukea tietokantaa.\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"Salasana:\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"Unohditko salasanasi tai käyttäjätunnuksesi?\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"Pvm/klo\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"Käyttäjä\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"Tapahtuma\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\"Tällä kohteella ei ole muutoshistoriaa. Sitä ei ole ilmeisesti lisätty tämän \"\n\"ylläpitosivun avulla.\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"Näytä kaikki\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"Tallenna ja poistu\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"Haku\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"%(counter)s osuma\"\nmsgstr[1] \"%(counter)s osumaa\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"yhteensä %(full_result_count)s\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"Tallenna uutena\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"Tallenna ja lisää toinen\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"Tallenna välillä ja jatka muokkaamista\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\"Syötä ensin käyttäjätunnus ja salasana. Sen jälkeen voit muokata muita \"\n\"käyttäjän tietoja.\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"Syötä käyttäjätunnus ja salasana.\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"Syötä käyttäjän <strong>%(username)s</strong> uusi salasana.\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"Salasana\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"Salasana toistamiseen\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Syötä sama salasana tarkistuksen vuoksi toistamiseen.\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"Poista\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"Lisää toinen %(verbose_name)s\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"Poista?\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"Kiitos sivuillamme viettämästäsi ajasta.\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"Kirjaudu uudelleen sisään\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"Salasanan vaihtaminen\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"Salasanan vaihtaminen onnistui\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"Salasanasi on vaihdettu.\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"Syötä vanha salasanasi varmistukseksi, ja syötä sitten uusi salasanasi kaksi \"\n\"kertaa, jotta se tulee varmasti oikein.\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"Vanha salasana\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"Uusi salasana\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"Vaihda salasana\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"Salasanan nollaus\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"Salasanan nollaus valmis\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"Salasanasi on asetettu. Nyt voit kirjautua sisään.\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"Salasanan nollauksen vahvistus\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"Syötä uusi salasana\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"\"\n\"Syötä uusi salasanasi kaksi kertaa, jotta voimme varmistaa että syötit sen \"\n\"oikein.\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"Uusi salasana:\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"Varmista uusi salasana:\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"Salasanan nollaus ei onnistunut\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\"Salasanan nollauslinkki oli virheellinen, mahdollisesti siksi että se on jo \"\n\"käytetty. Ole hyvä ja pyydä uusi salasanan nollaus.\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"Salasanan nollaus onnistui\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"Määrittele uusi salasanasi oheisella sivulla:\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"Käyttäjätunnuksesi siltä varalta, että olet unohtanut sen:\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"Kiitos vierailustasi sivuillamme!\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"%(site_name)s -sivuston ylläpitäjät\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"Sähköpostiosoite:\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"Nollaa salasanani\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"Kaikki päivät\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"(Ei mitään)\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"Valitse %s\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"Valitse muokattava %s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/fi/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Antti Kaihola <akaihol+transifex@ambitone.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-03-08 10:42+0000\\n\"\n\"Last-Translator: Antti Kaihola <akaihol+transifex@ambitone.com>\\n\"\n\"Language-Team: Finnish (http://www.transifex.com/projects/p/django/language/\"\n\"fi/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: fi\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"Mahdolliset %s\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"Suodatin\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"Valitse kaikki\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"Poista\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"Valitut %s\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"%(sel)s valittuna %(cnt)s mahdollisesta\"\nmsgstr[1] \"%(sel)s valittuna %(cnt)s mahdollisesta\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\"Sinulla on tallentamattomia muutoksia yksittäisissä muokattavissa kentissä. \"\n\"Jos suoritat toiminnon, tallentamattomat muutoksesi katoavat.\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\"Olet valinnut toiminnon, mutta et ole vielä tallentanut muutoksiasi \"\n\"yksittäisiin kenttiin. Paina OK tallentaaksesi. Sinun pitää suorittaa \"\n\"toiminto uudelleen.\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\"Olet valinnut toiminnon etkä ole tehnyt yhtään muutosta yksittäisissä \"\n\"kentissä. Etsit todennäköisesti Suorita-nappia Tallenna-napin sijaan.\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"\"\n\"Tammikuu Helmikuu Maaliskuu Huhtikuu Toukokuu Kesäkuu Heinäkuu Elokuu \"\n\"Syyskuu Lokakuu Marraskuu Joulukuu\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"S M T K T P L\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"Näytä\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"Piilota\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"Nyt\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"Kello\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"Valitse kellonaika\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"24\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"06\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"12\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"Peruuta\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"Tänään\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"Kalenteri\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"Eilen\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"Huomenna\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/fr/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <claude@2xlibre.net>, 2011-2013.\n# claudep <claude@2xlibre.net>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-03 13:55+0000\\n\"\n\"Last-Translator: claudep <claude@2xlibre.net>\\n\"\n\"Language-Team: French (http://www.transifex.com/projects/p/django/language/\"\n\"fr/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: fr\\n\"\n\"Plural-Forms: nplurals=2; plural=(n > 1);\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"La suppression de %(count)d %(items)s a réussi.\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"Impossible de supprimer %(name)s\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"Êtes-vous sûr ?\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"Supprimer les %(verbose_name_plural)s sélectionnés\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"Tout\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"Oui\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"Non\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"Inconnu\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"Toutes les dates\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"Aujourd'hui\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"Les 7 derniers jours\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"Ce mois-ci\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"Cette année\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\"Veuillez compléter correctement les champs « %(username)s » et « mot de \"\n\"passe » d'un compte autorisé. Sachez que les deux champs peuvent être \"\n\"sensibles à la casse.\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"Reconnectez-vous car votre session a expiré.\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"Action :\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"heure de l'action\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"id de l'objet\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"représentation de l'objet\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"indicateur de l'action\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"message de modification\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"entrée d'historique\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"entrées d'historique\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"%(object)s ajouté(e)s.\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"%(object)s modifié(e)s - %(changes)s\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"%(object)s supprimé(e)s\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"Objet de journal\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"Aucun(e)\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"Modifié %s.\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"et\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"%(name)s « %(object)s » ajouté.\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"%(list)s modifié pour %(name)s « %(object)s ».\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"%(name)s « %(object)s » supprimé.\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"Aucun champ modifié.\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"\"\n\"L'objet %(name)s « %(obj)s » a été ajouté avec succès. Vous pouvez continuer \"\n\"l'édition ci-dessous.\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\"L'objet %(name)s « %(obj)s » a été ajouté avec succès. Vous pouvez ajouter \"\n\"un autre objet « %(name)s » ci-dessous.\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"L'objet %(name)s « %(obj)s » a été ajouté avec succès.\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\"L'objet %(name)s « %(obj)s » a été modifié avec succès. Vous pouvez \"\n\"continuer l'édition ci-dessous.\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\"L'objet %(name)s « %(obj)s » a été modifié avec succès. Vous pouvez ajouter \"\n\"un autre objet %(name)s ci-dessous.\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"L'objet %(name)s « %(obj)s » a été modifié avec succès.\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\"Des éléments doivent être sélectionnés afin d'appliquer les actions. Aucun \"\n\"élément n'a été modifié.\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"Aucune action sélectionnée.\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"Ajout %s\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"L'objet %(name)s avec la clef primaire %(key)r n'existe pas.\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"Modification de %s\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"Erreur de base de données\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"%(count)s objet %(name)s a été modifié avec succès.\"\nmsgstr[1] \"%(count)s objets %(name)s ont été modifiés avec succès.\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"%(total_count)s sélectionné\"\nmsgstr[1] \"Tous les %(total_count)s sélectionnés\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"0 sur %(cnt)s sélectionné\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"L'objet %(name)s « %(obj)s » a été supprimé avec succès.\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"Historique des changements : %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"Connexion\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"Administration du site\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"Administration %s\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"Date :\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"Heure :\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"Recherche\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"Ajouter un autre\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"Actuellement :\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"Modifier :\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"Cette page n'a pas été trouvée\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"Nous sommes désolés, mais la page demandée est introuvable.\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"Accueil\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"Erreur du serveur\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"Erreur du serveur (500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"Erreur du serveur <em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\"Une erreur est survenue. Elle a été transmise par courriel aux \"\n\"administrateurs du site et sera corrigée dans les meilleurs délais. Merci \"\n\"pour votre patience.\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"Exécuter l'action sélectionnée\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"Envoyer\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"Cliquez ici pour sélectionner tous les objets sur l'ensemble des pages\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"Sélectionner tous les %(total_count)s %(module_name)s\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"Effacer la sélection\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"Bienvenue,\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"Documentation\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"Modifier votre mot de passe\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"Déconnexion\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"Site d'administration de Django\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"Administration de Django\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"Ajouter\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"Historique\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"Voir sur le site\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"Corrigez l'erreur suivante.\"\nmsgstr[1] \"Corrigez les erreurs suivantes.\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"Ajouter %(name)s\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"Filtre\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"Enlever du tri\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"Priorité de tri : %(priority_number)s\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"Inverser le tri\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"Supprimer\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"Supprimer l'objet %(object_name)s « %(escaped_object)s » provoquerait la \"\n\"suppression des objets qui lui sont liés, mais votre compte ne possède pas \"\n\"la permission de supprimer les types d'objets suivants :\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\"Supprimer l'objet %(object_name)s « %(escaped_object)s » provoquerait la \"\n\"suppression des objets liés et protégés suivants :\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\"Voulez-vous vraiment supprimer l'objet %(object_name)s \"\n\"« %(escaped_object)s » ? Les éléments suivants sont liés à celui-ci et \"\n\"seront aussi supprimés :\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"Oui, je suis sûr\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"Supprimer plusieurs objets\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\"La suppression des objets %(objects_name)s sélectionnés provoquerait la \"\n\"suppression d'objets liés, mais votre compte n'est pas autorisé à supprimer \"\n\"les types d'objet suivants :\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\"La suppression des objets %(objects_name)s sélectionnés provoquerait la \"\n\"suppression des objets liés et protégés suivants :\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\"Voulez-vous vraiment supprimer les objets %(objects_name)s sélectionnés ? \"\n\"Tous les objets suivants et les éléments liés seront supprimés :\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \" Par %(filter_title)s \"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"Modèles de l'application %(name)s\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"Modifier\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"Vous n'avez pas la permission de modifier quoi que ce soit.\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"Actions récentes\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"Mes actions\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"Aucun(e) disponible\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"Contenu inconnu\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"L'installation de votre base de données est incorrecte. Vérifiez que les \"\n\"tables utiles ont été créées, et que la base est accessible par \"\n\"l'utilisateur concerné.\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"Mot de passe :\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"Mot de passe ou nom d'utilisateur oublié ?\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"Date/heure\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"Utilisateur\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"Action\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\"Cet objet n'a pas d'historique de modification. Il n'a probablement pas été \"\n\"ajouté au moyen de ce site d'administration.\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"Tout afficher\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"Enregistrer\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"Rechercher\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"%(counter)s résultat\"\nmsgstr[1] \"%(counter)s résultats\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"%(full_result_count)s résultats\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"Enregistrer en tant que nouveau\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"Enregistrer et ajouter un nouveau\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"Enregistrer et continuer les modifications\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\"Saisissez tout d'abord un nom d'utilisateur et un mot de passe. Vous pourrez \"\n\"ensuite modifier plus d'options.\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"Saisissez un nom d'utilisateur et un mot de passe.\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"\"\n\"Saisissez un nouveau mot de passe pour l'utilisateur <strong>%(username)s</\"\n\"strong>.\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"Mot de passe\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"Mot de passe (à nouveau)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Saisissez le même mot de passe que précédemment, pour vérification.\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"Supprimer\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"Ajouter un objet %(verbose_name)s supplémentaire\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"Supprimer ?\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"Merci pour le temps que vous avez accordé à ce site aujourd'hui.\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"Connectez-vous à nouveau\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"Modification de votre mot de passe\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"Mot de passe modifié avec succès\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"Votre mot de passe a été modifié.\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"Pour des raisons de sécurité, saisissez votre ancien mot de passe puis votre \"\n\"nouveau mot de passe à deux reprises afin de vérifier qu'il est correctement \"\n\"saisi.\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"Ancien mot de passe\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"Nouveau mot de passe\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"Modifier mon mot de passe\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"Réinitialisation du mot de passe\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"Mise à jour du mot de passe effectuée avec succès\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"\"\n\"Votre mot de passe a été défini. Vous pouvez maintenant vous authentifier.\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"Confirmation de mise à jour du mot de passe\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"Saisissez un nouveau mot de passe\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"\"\n\"Saisissez deux fois votre nouveau mot de passe afin de vérifier qu'il est \"\n\"correctement saisi.\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"Nouveau mot de passe :\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"Confirmation du mot de passe :\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"Échec lors de la mise à jour du mot de passe\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\"Le lien de mise à jour du mot de passe n'était pas valide, probablement en \"\n\"raison de sa précédente utilisation. Veuillez renouveler votre demande de \"\n\"mise à jour de mot de passe.\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"Mot de passe mis à jour avec succès\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\"Nous vous avons envoyé par courriel les instructions pour changer de mot de \"\n\"passe à l'adresse que vous avez indiquée. Vous devriez le recevoir \"\n\"rapidement.\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\"Vous recevez ce message en réponse à votre demande de réinitialisation du \"\n\"mot de passe de votre compte sur %(site_name)s.\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"\"\n\"Veuillez vous rendre sur cette page et choisir un nouveau mot de passe :\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"Votre nom d'utilisateur, en cas d'oubli :\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"Merci d'utiliser notre site !\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"L'équipe %(site_name)s\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\"Mot de passe perdu ? Saisissez votre adresse électronique ci-dessous et nous \"\n\"vous enverrons les instructions pour en créer un nouveau.\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"Adresse électronique :\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"Réinitialiser mon mot de passe\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"Toutes les dates\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"(aucun-e)\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"Sélectionnez %s\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"Sélectionnez l'objet %s à changer\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/fr/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <claude@2xlibre.net>, 2011, 2012.\n# claudep <claude@2xlibre.net>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-03-08 10:42+0000\\n\"\n\"Last-Translator: claudep <claude@2xlibre.net>\\n\"\n\"Language-Team: French (http://www.transifex.com/projects/p/django/language/\"\n\"fr/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: fr\\n\"\n\"Plural-Forms: nplurals=2; plural=(n > 1);\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"%s disponible(s)\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Ceci est une liste des « %s » disponibles. Vous pouvez en choisir en les \"\n\"sélectionnant dans la zone ci-dessous, puis en cliquant sur la flèche \"\n\"« Choisir » entre les deux zones.\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"Écrivez dans cette zone pour filtrer la liste des « %s » disponibles.\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"Filtrer\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"Tout choisir\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"Cliquez pour choisir tous les « %s » en une seule opération.\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"Choisir\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"Enlever\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"Choix des « %s »\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Ceci est la liste des « %s » choisi(e)s. Vous pouvez en enlever en les \"\n\"sélectionnant dans la zone ci-dessous, puis en cliquant sur la flèche « \"\n\"Enlever » entre les deux zones.\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"Tout enlever\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"Cliquez pour enlever tous les « %s » en une seule opération.\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"%(sel)s sur %(cnt)s sélectionné\"\nmsgstr[1] \"%(sel)s sur %(cnt)s sélectionnés\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\"Vous avez des modifications non sauvegardées sur certains champs éditables. \"\n\"Si vous lancez une action, ces modifications vont être perdues.\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\"Vous avez sélectionné une action, mais vous n'avez pas encore sauvegardé \"\n\"certains champs modifiés. Cliquez sur OK pour sauver. Vous devrez \"\n\"réappliquer l'action.\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\"Vous avez sélectionné une action, et vous n'avez fait aucune modification \"\n\"sur des champs. Vous cherchez probablement le bouton Envoyer et non le \"\n\"bouton Sauvegarder.\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"\"\n\"Janvier Février Mars Avril Mai Juin Juillet Août Septembre Octobre Novembre \"\n\"Décembre\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"D L M M J V S\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"Afficher\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"Masquer\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"Maintenant\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"Horloge\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"Choisir une heure\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"Minuit\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"6:00\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"Midi\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"Annuler\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"Aujourd'hui\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"Calendrier\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"Hier\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"Demain\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/fy_NL/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:34+0100\\n\"\n\"PO-Revision-Date: 2011-03-20 18:56+0000\\n\"\n\"Last-Translator: Django team\\n\"\n\"Language-Team: English <en@li.org>\\n\"\n\"Language: fy_NL\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1)\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"\"\n\n#: actions.py:60 options.py:1295\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"\"\n\n#: actions.py:62 options.py:1297\nmsgid \"Are you sure?\"\nmsgstr \"\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"\"\n\n#: filters.py:101 filters.py:191 filters.py:231 filters.py:268 filters.py:378\nmsgid \"All\"\nmsgstr \"\"\n\n#: filters.py:232\nmsgid \"Yes\"\nmsgstr \"\"\n\n#: filters.py:233\nmsgid \"No\"\nmsgstr \"\"\n\n#: filters.py:247\nmsgid \"Unknown\"\nmsgstr \"\"\n\n#: filters.py:306\nmsgid \"Any date\"\nmsgstr \"\"\n\n#: filters.py:307\nmsgid \"Today\"\nmsgstr \"\"\n\n#: filters.py:311\nmsgid \"Past 7 days\"\nmsgstr \"\"\n\n#: filters.py:315\nmsgid \"This month\"\nmsgstr \"\"\n\n#: filters.py:319\nmsgid \"This year\"\nmsgstr \"\"\n\n#: forms.py:9\nmsgid \"\"\n\"Please enter the correct username and password for a staff account. Note \"\n\"that both fields are case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:18\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"\"\n\n#: forms.py:37\n#, python-format\nmsgid \"Your e-mail address is not your username. Try '%s' instead.\"\nmsgstr \"\"\n\n#: helpers.py:20\nmsgid \"Action:\"\nmsgstr \"\"\n\n#: models.py:19\nmsgid \"action time\"\nmsgstr \"\"\n\n#: models.py:22\nmsgid \"object id\"\nmsgstr \"\"\n\n#: models.py:23\nmsgid \"object repr\"\nmsgstr \"\"\n\n#: models.py:24\nmsgid \"action flag\"\nmsgstr \"\"\n\n#: models.py:25\nmsgid \"change message\"\nmsgstr \"\"\n\n#: models.py:30\nmsgid \"log entry\"\nmsgstr \"\"\n\n#: models.py:31\nmsgid \"log entries\"\nmsgstr \"\"\n\n#: models.py:40\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"\"\n\n#: models.py:42\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"\"\n\n#: models.py:44\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"\"\n\n#: models.py:46\nmsgid \"LogEntry Object\"\nmsgstr \"\"\n\n#: options.py:150 options.py:166\nmsgid \"None\"\nmsgstr \"\"\n\n#: options.py:671\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"\"\n\n#: options.py:671 options.py:681\nmsgid \"and\"\nmsgstr \"\"\n\n#: options.py:676\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"\"\n\n#: options.py:680\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"\"\n\n#: options.py:685\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"\"\n\n#: options.py:689\nmsgid \"No fields changed.\"\nmsgstr \"\"\n\n#: options.py:772\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"\"\n\n#: options.py:776 options.py:824\nmsgid \"You may edit it again below.\"\nmsgstr \"\"\n\n#: options.py:788 options.py:837\n#, python-format\nmsgid \"You may add another %s below.\"\nmsgstr \"\"\n\n#: options.py:822\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"\"\n\n#: options.py:830\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"\"\n\n#: options.py:899 options.py:1159\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\n#: options.py:918\nmsgid \"No action selected.\"\nmsgstr \"\"\n\n#: options.py:998\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"\"\n\n#: options.py:1023 options.py:1267\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"\"\n\n#: options.py:1089\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"\"\n\n#: options.py:1138\nmsgid \"Database error\"\nmsgstr \"\"\n\n#: options.py:1201\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: options.py:1228\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: options.py:1233\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"\"\n\n#: options.py:1283\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"\"\n\n#: options.py:1330\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"\"\n\n#: sites.py:315 tests.py:61 templates/admin/login.html:49\n#: templates/registration/password_reset_complete.html:20\n#: views/decorators.py:23\nmsgid \"Log in\"\nmsgstr \"\"\n\n#: sites.py:380\nmsgid \"Site administration\"\nmsgstr \"\"\n\n#: sites.py:432\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"\"\n\n#: widgets.py:87\nmsgid \"Date:\"\nmsgstr \"\"\n\n#: widgets.py:87\nmsgid \"Time:\"\nmsgstr \"\"\n\n#: widgets.py:161\nmsgid \"Lookup\"\nmsgstr \"\"\n\n#: widgets.py:267\nmsgid \"Add Another\"\nmsgstr \"\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"\"\n\n#: templates/admin/500.html:7 templates/admin/app_index.html:8\n#: templates/admin/base.html:45 templates/admin/change_form.html:21\n#: templates/admin/change_list.html:43\n#: templates/admin/delete_confirmation.html:8\n#: templates/admin/delete_selected_confirmation.html:8\n#: templates/admin/invalid_setup.html:7 templates/admin/object_history.html:8\n#: templates/admin/auth/user/change_password.html:15\n#: templates/registration/logged_out.html:5\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:7\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\nmsgid \"Home\"\nmsgstr \"\"\n\n#: templates/admin/500.html:8\nmsgid \"Server error\"\nmsgstr \"\"\n\n#: templates/admin/500.html:12\nmsgid \"Server error (500)\"\nmsgstr \"\"\n\n#: templates/admin/500.html:15\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"\"\n\n#: templates/admin/500.html:16\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via e-\"\n\"mail and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"\"\n\n#: templates/admin/app_index.html:11 templates/admin/index.html:19\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:4\n#: templates/registration/password_change_form.html:5\nmsgid \"Documentation\"\nmsgstr \"\"\n\n#: templates/admin/base.html:35\n#: templates/admin/auth/user/change_password.html:19\n#: templates/admin/auth/user/change_password.html:53\n#: templates/registration/password_change_done.html:4\n#: templates/registration/password_change_form.html:5\nmsgid \"Change password\"\nmsgstr \"\"\n\n#: templates/admin/base.html:36\n#: templates/registration/password_change_done.html:4\n#: templates/registration/password_change_form.html:5\nmsgid \"Log out\"\nmsgstr \"\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"\"\n\n#: templates/admin/change_form.html:24 templates/admin/index.html:29\nmsgid \"Add\"\nmsgstr \"\"\n\n#: templates/admin/change_form.html:34 templates/admin/object_history.html:12\nmsgid \"History\"\nmsgstr \"\"\n\n#: templates/admin/change_form.html:35\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"\"\n\n#: templates/admin/change_form.html:46 templates/admin/change_list.html:69\n#: templates/admin/login.html:18\n#: templates/admin/auth/user/change_password.html:29\n#: templates/registration/password_change_form.html:21\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templates/admin/change_list.html:60\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"\"\n\n#: templates/admin/change_list.html:80\nmsgid \"Filter\"\nmsgstr \"\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"\"\n\n#: templates/admin/delete_confirmation.html:12\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"\"\n\n#: templates/admin/delete_confirmation.html:19\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\n#: templates/admin/delete_confirmation.html:27\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\n#: templates/admin/delete_confirmation.html:35\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\n#: templates/admin/delete_confirmation.html:40\n#: templates/admin/delete_selected_confirmation.html:45\nmsgid \"Yes, I'm sure\"\nmsgstr \"\"\n\n#: templates/admin/delete_selected_confirmation.html:11\nmsgid \"Delete multiple objects\"\nmsgstr \"\"\n\n#: templates/admin/delete_selected_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\n#: templates/admin/delete_selected_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\n#: templates/admin/delete_selected_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \"\"\n\n#: templates/admin/index.html:18\n#, python-format\nmsgid \"Models available in the %(name)s application.\"\nmsgstr \"\"\n\n#: templates/admin/index.html:35\nmsgid \"Change\"\nmsgstr \"\"\n\n#: templates/admin/index.html:45\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"\"\n\n#: templates/admin/index.html:53\nmsgid \"Recent Actions\"\nmsgstr \"\"\n\n#: templates/admin/index.html:54\nmsgid \"My Actions\"\nmsgstr \"\"\n\n#: templates/admin/index.html:58\nmsgid \"None available\"\nmsgstr \"\"\n\n#: templates/admin/index.html:72\nmsgid \"Unknown content\"\nmsgstr \"\"\n\n#: templates/admin/invalid_setup.html:13\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\n#: templates/admin/login.html:34\nmsgid \"Username:\"\nmsgstr \"\"\n\n#: templates/admin/login.html:38\nmsgid \"Password:\"\nmsgstr \"\"\n\n#: templates/admin/login.html:45\nmsgid \"Forgotten your password or username?\"\nmsgstr \"\"\n\n#: templates/admin/object_history.html:24\nmsgid \"Date/time\"\nmsgstr \"\"\n\n#: templates/admin/object_history.html:25\nmsgid \"User\"\nmsgstr \"\"\n\n#: templates/admin/object_history.html:26\nmsgid \"Action\"\nmsgstr \"\"\n\n#: templates/admin/object_history.html:40\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"\"\n\n#: templates/admin/auth/user/change_password.html:33\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"\"\n\n#: templates/admin/auth/user/change_password.html:40\nmsgid \"Password\"\nmsgstr \"\"\n\n#: templates/admin/auth/user/change_password.html:46\n#: templates/registration/password_change_form.html:43\nmsgid \"Password (again)\"\nmsgstr \"\"\n\n#: templates/admin/auth/user/change_password.html:47\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"\"\n\n#: templates/admin/edit_inline/stacked.html:67\n#: templates/admin/edit_inline/tabular.html:115\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"\"\n\n#: templates/admin/edit_inline/stacked.html:70\n#: templates/admin/edit_inline/tabular.html:118\nmsgid \"Remove\"\nmsgstr \"\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"\"\n\n#: templates/registration/logged_out.html:9\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"\"\n\n#: templates/registration/logged_out.html:11\nmsgid \"Log in again\"\nmsgstr \"\"\n\n#: templates/registration/password_change_done.html:8\n#: templates/registration/password_change_form.html:9\n#: templates/registration/password_change_form.html:13\n#: templates/registration/password_change_form.html:25\nmsgid \"Password change\"\nmsgstr \"\"\n\n#: templates/registration/password_change_done.html:12\n#: templates/registration/password_change_done.html:16\nmsgid \"Password change successful\"\nmsgstr \"\"\n\n#: templates/registration/password_change_done.html:18\nmsgid \"Your password was changed.\"\nmsgstr \"\"\n\n#: templates/registration/password_change_form.html:27\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\n#: templates/registration/password_change_form.html:33\nmsgid \"Old password\"\nmsgstr \"\"\n\n#: templates/registration/password_change_form.html:38\nmsgid \"New password\"\nmsgstr \"\"\n\n#: templates/registration/password_change_form.html:49\n#: templates/registration/password_reset_confirm.html:27\nmsgid \"Change my password\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_complete.html:8\n#: templates/registration/password_reset_confirm.html:12\n#: templates/registration/password_reset_done.html:8\n#: templates/registration/password_reset_form.html:8\n#: templates/registration/password_reset_form.html:12\n#: templates/registration/password_reset_form.html:16\nmsgid \"Password reset\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_complete.html:12\n#: templates/registration/password_reset_complete.html:16\nmsgid \"Password reset complete\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_complete.html:18\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_confirm.html:8\nmsgid \"Password reset confirmation\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_confirm.html:18\nmsgid \"Enter new password\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_confirm.html:20\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_confirm.html:24\nmsgid \"New password:\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Confirm password:\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_confirm.html:32\nmsgid \"Password reset unsuccessful\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_confirm.html:34\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_done.html:12\n#: templates/registration/password_reset_done.html:16\nmsgid \"Password reset successful\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_done.html:18\nmsgid \"\"\n\"We've e-mailed you instructions for setting your password to the e-mail \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this e-mail because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:18\nmsgid \"\"\n\"Forgotten your password? Enter your e-mail address below, and we'll e-mail \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:22\nmsgid \"E-mail address:\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:22\nmsgid \"Reset my password\"\nmsgstr \"\"\n\n#: templatetags/admin_list.py:336\nmsgid \"All dates\"\nmsgstr \"\"\n\n#: views/main.py:31\nmsgid \"(None)\"\nmsgstr \"\"\n\n#: views/main.py:74\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/fy_NL/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2011-03-15 15:26+0000\\n\"\n\"Last-Translator: Django team\\n\"\n\"Language-Team: English <en@li.org>\\n\"\n\"Language: fy_NL\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1)\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/ga/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Michael Thornhill <michael@maithu.com>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:52+0000\\n\"\n\"Last-Translator: Ramiro Morales <cramm0@gmail.com>\\n\"\n\"Language-Team: Irish (http://www.transifex.com/projects/p/django/language/\"\n\"ga/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ga\\n\"\n\"Plural-Forms: nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : \"\n\"4);\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"D'éirigh le scriosadh %(count)d %(items)s.\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"Ní féidir scriosadh %(name)s \"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"An bhfuil tú cinnte?\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"Scrios %(verbose_name_plural) roghnaithe\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"Gach\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"Tá\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"Níl\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"Gan aithne\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"Aon dáta\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"Inniu\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"7 lá a chuaigh thart\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"Táim cinnte\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"An blian seo\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"Le do thoil, logáil isteach arís cé go bhfuil to seisúin críochnaithe.\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"Aicsean:\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"am aicsean\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"id oibiacht\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"repr oibiacht\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"brat an aicsean\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"teachtaireacht athrú\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"loga iontráil\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"loga iontrálacha\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"\\\"%(object)s\\\" curtha isteach.\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"\\\"%(object)s\\\" - %(changes)s aithrithe\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"\\\"%(object)s.\\\" scrioste\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"Oibiacht LogEntry\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"Dada\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"Athraithe %s\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"agus\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Suimithe %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Athraithe %(list)s le %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Scriosaithe %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"Dada réimse aithraithe\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"\"\n\"Chuir an %(name)s·\\\"%(obj)s\\\"·go rathúil.·Is féidir leat é a cuir in eagar \"\n\"thíos.\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"Bhí  %(name)s \\\"%(obj)s\\\" breisithe go rathúil\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"Bhí an %(name)s \\\"%(obj)s\\\" aithraithe to rathúil\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\"Ní mór Míreanna a roghnú chun caingne a dhéanamh orthu. Níl aon mhíreanna a \"\n\"athrú.\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"Uimh gníomh roghnaithe.\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"Cuir %s le\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"Níl réad le hainm %(name)s agus eochair %(key)r ann.\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"Aithrigh %s\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"Botún bunachar sonraí\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"%(count)s %(name)s athraithe go rathúil\"\nmsgstr[1] \"%(count)s %(name)s athraithe go rathúil\"\nmsgstr[2] \"%(count)s %(name)s athraithe go rathúil\"\nmsgstr[3] \"%(count)s %(name)s athraithe go rathúil\"\nmsgstr[4] \"%(count)s %(name)s athraithe go rathúil\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"%(total_count)s roghnaithe\"\nmsgstr[1] \"Gach %(total_count)s roghnaithe\"\nmsgstr[2] \"Gach %(total_count)s roghnaithe\"\nmsgstr[3] \"Gach %(total_count)s roghnaithe\"\nmsgstr[4] \"Gach %(total_count)s roghnaithe\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"0 as %(cnt)s roghnaithe.\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"Bhí %(name)s \\\"%(obj)s\\\" scrioste go rathúil.\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"Athraigh stáir %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"Logáil isteach\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"Riaracháin an suíomh\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"%s riaracháin\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"Dáta:\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"Am:\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"Cuardach\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"Cuir le\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"Ní bhfuarthas an leathanach\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"Tá brón orainn, ach ní bhfuarthas an leathanach iarraite.\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"Baile\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"Botún freastalaí\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"Botún freastalaí (500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"Botún Freastalaí <em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"Rith an gníomh roghnaithe\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"Té\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"\"\n\"Cliceáil anseo chun na hobiacht go léir a roghnú ar fud gach leathanach\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"Roghnaigh gach %(total_count)s %(module_name)s\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"Scroiseadh modhnóir\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"Fáilte\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"Doiciméadúchán\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"Athraigh focal faire\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"Logáil amach\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"Riarthóir suíomh Django\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"Riarachán Django\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"Cuir le\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"Stair\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"Breath ar suíomh\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"Ceartaigh an botún thíos le do thoil\"\nmsgstr[1] \"Ceartaigh na botúin thíos le do thoil\"\nmsgstr[2] \"Ceartaigh na botúin thíos le do thoil\"\nmsgstr[3] \"Ceartaigh na botúin thíos le do thoil\"\nmsgstr[4] \"Ceartaigh na botúin thíos le do thoil\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"Cuir %(name)s le\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"Scagaire\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"Bain as sórtáil\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"Sórtáil tosaíocht: %(priority_number)s\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"Toggle sórtáil\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"Cealaigh\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"Má scriossan tú  %(object_name)s '%(escaped_object)s' scriosfaidh oibiachtí \"\n\"gaolta. Ach níl cead ag do cuntas na oibiacht a leanúint a scriosadh:\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\"Bheadh Scriosadh an %(object_name)s  '%(escaped_object)s' a cheangal ar an \"\n\"méid seo a leanas a scriosadh nithe cosanta a bhaineann le:\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\"An bhfuil tú cinnte na  %(object_name)s \\\"%(escaped_object)s\\\" a scroiseadh?\"\n\"Beidh gach oibiacht a leanúint scroiste freisin:\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"Táim cinnte\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"Scrios na réadanna\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\"Scriosadh an roghnaithe %(objects_name)s a bheadh mar thoradh ar na nithe \"\n\"gaolmhara a scriosadh, ach níl cead do chuntas a scriosadh na cineálacha seo \"\n\"a leanas na cuspóirí:\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\"Teastaíonn scriosadh na %(objects_name)s roghnaithe  scriosadh na hoibiacht \"\n\"gaolta cosainte a leanúint:\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\"An bhfuil tú cinnte gur mian leat a scriosadh %(objects_name)s roghnaithe? \"\n\"Beidh gach ceann de na nithe seo a leanas agus a n-ítimí gaolta scroiste:\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \" Trí %(filter_title)s \"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"Athraigh\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"Níl cead agat aon rud a cuir in eagar.\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"Aicsean úrnua\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"Mo Aicseain\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"Dada ar fáil\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"Inneachair anaithnid\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"Tá rud éigin mícheart le suitéail do bunachar sonraí.  Déan cinnte go bhfuil \"\n\"boird an bunachar sonraI cruthaithe cheana, agus déan cinnte go bhfuil do \"\n\"úsaideoir in ann an bunacchar sonraí a léamh.\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"Focal faire:\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"Dearmad déanta ar do focal faire nó ainm úsaideora\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"Dáta/am\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"Úsaideoir\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"Aicsean\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\"Níl stáir aitraithe ag an oibiacht seo agús is dócha ná cuir le tríd an an \"\n\"suíomh riarachán.\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"Taispéan gach rud\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"Sábháil\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"Cuardach\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"%(counter)s toradh\"\nmsgstr[1] \"%(counter)s torthaí\"\nmsgstr[2] \"%(counter)s torthaí\"\nmsgstr[3] \"%(counter)s torthaí\"\nmsgstr[4] \"%(counter)s torthaí\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"%(full_result_count)s iomlán\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"Sabháil mar nua\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"Sabháil agus cuir le ceann eile\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"Sábhail agus lean ag cuir in eagar\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\"Ar dtús, iontráil ainm úsaideoir agus focal faire.  Ansin, beidh tú in ann \"\n\"cuir in eagar níos mó roghaí úsaideoira.\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"Cuir isteach ainm úsáideora agus focal faire.\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"\"\n\"Iontráil focal faire nua le hadhaigh an úsaideor <strong>%(username)s</\"\n\"strong>.\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"Focal faire\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"Focal faire (arís)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Iontráíl an focal faire céanna mar thuas, le fíorúchán.\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"Tóg amach\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"Cuir eile %(verbose_name)s\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"Cealaigh?\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"Go raibh maith agat le hadhaigh do cuairt ar an suíomh idirlínn inniú.\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"Logáil isteacj arís\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"Athrú focal faire\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"Athrú an focal faire rathúil\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"Bhí do focal faire aithraithe.\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"Le do thoil, iontráil do sean-focal faire, ar son slándáil, agus ansin \"\n\"iontráil do focal faire dhá uaire cé go mbeimid in ann a seiceal go bhfuil \"\n\"sé scríobhte isteach i gceart.\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"Sean-focal faire \"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"Focal faire nua\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"Athraigh mo focal faire\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"Athsocraigh focal faire\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"Athshocraigh an focal faire críochnaithe\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"Tá do focal faire réidh.  Is féidir leat logáil isteach anois.\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"Deimhniú athshocraigh focal faire\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"Cuir isteach focal faire nua\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"\"\n\"Le do thoil, iontráil do focal faire dhá uaire cé go mbeimid in ann a \"\n\"seiceal go bhfuil sé scríobhte isteach i gceart.\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"Focal faire nua:\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"Deimhnigh focal faire:\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"Athshocraigh focal faire mí-rathúil\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\"Bhí nasc athshocraigh an focal faire mícheart, b'fheidir mar go raibh sé \"\n\"úsaidte cheana.  Le do thoil, iarr ar athsocraigh focal faire nua.\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"Athshocraigh focal faire mí-rathúil\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"\"\n\"Le do thoil té go dtí an leathanach a leanúint agus roghmaigh focal faire \"\n\"nua:\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"Do ainm úsaideoir, má tá dearmad déanta agat.\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"Go raibh maith agat le hadhaigh do cuairt!\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"Foireann an %(site_name)s\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"Athsocraigh mo focal faire\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"Gach dáta\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"(Dada)\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"Roghnaigh %s\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"Roghnaigh %s a athrú\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/ga/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Michael Thornhill <michael@maithu.com>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-03-16 12:28+0000\\n\"\n\"Last-Translator: Michael Thornhill <michael@maithu.com>\\n\"\n\"Language-Team: Irish (http://www.transifex.com/projects/p/django/language/\"\n\"ga/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ga\\n\"\n\"Plural-Forms: nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : \"\n\"4);\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"%s ar fáil\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Is é seo an liosta %s ar fáil. Is féidir leat a roghnú roinnt ag roghnú acu \"\n\"sa bhosca thíos agus ansin cliceáil ar an saighead \\\"Roghnaigh\\\" idir an dá \"\n\"boscaí.\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"\"\n\"Scríobh isteach sa bhosca seo a scagadh síos ar an liosta de %s ar fáil.\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"Scagaire\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"Roghnaigh iomlán\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"Cliceáil anseo chun %s go léir a roghnú.\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"Roghnaigh\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"Bain amach\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"Roghnófar %s\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Is é seo an liosta de %s roghnaithe. Is féidir leat iad a bhaint amach má \"\n\"roghnaionn tú cuid acu sa bhosca thíos agus ansin cliceáil ar an saighead \"\n\"\\\"Bain\\\" idir an dá boscaí.\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"Scrois gach ceann\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"Cliceáil anseo chun %s go léir roghnaithe a scroiseadh.\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"%(sel)s de %(cnt)s  roghnaithe\"\nmsgstr[1] \"%(sel)s de %(cnt)s  roghnaithe\"\nmsgstr[2] \"%(sel)s de %(cnt)s  roghnaithe\"\nmsgstr[3] \"%(sel)s de %(cnt)s  roghnaithe\"\nmsgstr[4] \"%(sel)s de %(cnt)s  roghnaithe\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\"Tá aithrithe nach bhfuil sabhailte ar chuid do na réimse.  Má ritheann tú \"\n\"gníomh, caillfidh tú do chuid aithrithe.\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\"Tá gníomh roghnaithe agat, ach níl do aithrithe sabhailte ar cuid de na \"\n\"réímse. Clic OK chun iad a sábháil.  Caithfidh tú an gníomh a rith arís.\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\"Tá gníomh roghnaithe agat, ach níl do aithrithe sabhailte ar cuid de na \"\n\"réímse. Is dócha go bhfuil tú ag iarraidh an cnaipe Té ná an cnaipe Sábháil.\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"\"\n\"Eanair Feabhra Márta Aibreán Bealtaine Meitheamh Iúil Lúnasa Mean Fómhair \"\n\"Deireadh Fómhair Nollaig\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"D L M C D A S\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"Taispeán\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"Folaigh\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"Anois\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"Clog\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"Roghnaigh am\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"Meán oíche\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"6 a.m.\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"Nóin\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"Cealaigh\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"Inniu\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"Féilire\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"Inné\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"Amárach\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/gl/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# fasouto <fsoutomoure@gmail.com>, 2011.\n# fonso <fonzzo@gmail.com>, 2011.\n#   <fonzzo@gmail.com>, 2013.\n#   <fsoutomoure@gmail.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Oscar Carballal <oscar.carballal@cidadania.coop>, 2012.\n# oscarcp <oscar@cidadania.coop>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-07 11:11+0000\\n\"\n\"Last-Translator: fonso <fonzzo@gmail.com>\\n\"\n\"Language-Team: Galician (http://www.transifex.com/projects/p/django/language/\"\n\"gl/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: gl\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"Borrado exitosamente %(count)d %(items)s\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"Non se pode eliminar %(name)s\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"¿Está seguro?\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"Borrar %(verbose_name_plural)s seleccionados.\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"Todo\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"Si\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"Non\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"Descoñecido\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"Calquera data\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"Hoxe\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"Últimos 7 días\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"Este mes\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"Este ano\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\"Por favor, insira os %(username)s e contrasinal dunha conta de persoal. Teña \"\n\"en conta que ambos os dous campos distingues maiúsculas e minúsculas.\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"Por favor ingrese de novo, a súa sesión expirou.\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"Acción:\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"hora da acción\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"id do obxecto\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"repr do obxecto\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"código do tipo de acción\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"cambiar mensaxe\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"entrada de rexistro\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"entradas de rexistro\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"Engadido \\\"%(object)s\\\".\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"Modificados \\\"%(object)s\\\" - %(changes)s\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"Borrados \\\"%(object)s.\\\"\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"Obxecto LogEntry\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"Ningún\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"Modificado(s) %s.\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"e\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Engadido %(name)s \\\"%(object)s\\\"\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Modificáronse %(list)s en %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Elimináronse %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"Non se modificou ningún campo.\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"Engadiuse correctamente o/a %(name)s \\\"%(obj)s\\\" Pode editalo embaixo.\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\"O/a %(name)s \\\"%(obj)s\\\" foi engadido correctamente. Pode engadir outro/a \"\n\"%(name)s embaixo.\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"Engadiuse correctamente o/a %(name)s  \\\"%(obj)s\\\".\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\"O/a %(name)s \\\"%(obj)s\\\" foi modificado correctamente. Pode editalo de novo \"\n\"embaixo.\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\"O/a %(name)s \\\"%(obj)s\\\" for modificalo correctamente. Pode engadir outro/a \"\n\"%(name)s embaixo.\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"Modificouse correctamente o/a %(name)s \\\"%(obj)s\\\".\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\"Deb seleccionar ítems para poder facer accións con eles. Ningún ítem foi \"\n\"cambiado.\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"Non se elixiu ningunha acción.\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"Engadir %s\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"O obxecto %(name)s con primary key %(key)r non existe.\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"Modificar %s\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"Erro da base de datos\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"%(count)s %(name)s foi cambiado satisfactoriamente.\"\nmsgstr[1] \"%(count)s %(name)s foron cambiados satisfactoriamente.\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"%(total_count)s seleccionado.\"\nmsgstr[1] \"Tódolos %(total_count)s seleccionados.\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"0 de %(cnt)s seleccionados.\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"Eliminouse correctamente o/a %(name)s \\\"%(obj)s\\\".\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"Histórico de cambios: %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"Iniciar sesión\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"Administración do sitio web\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"%s administración\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"Data:\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"Hora\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"Procurar\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"Engadir outro\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"Actualmente:\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"Modificar:\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"Páxina non atopada\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"Sentímolo, pero non se atopou a páxina solicitada.\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"Inicio\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"Erro no servidor\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"Erro no servidor (500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"Erro do servidor <em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\"Ocorreu un erro. Os administradores do sitio foron informados por email e \"\n\"debería ser arranxado pronto. Grazas pola súa paciencia.\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"Executar a acción seleccionada\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"Ir\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"Fai clic aquí para seleccionar os obxectos en tódalas páxinas\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"Seleccionar todos os %(total_count)s %(module_name)s\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"Limpar selección\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"Benvido,\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"Documentación\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"Cambiar contrasinal\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"Rematar sesión\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"Administración de sitio Django\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"Administración de Django\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"Engadir\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"Histórico\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"Ver na web\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"Por favor, corrixa o erro de embaixo.\"\nmsgstr[1] \"Por favor, corrixa os erros de embaixo.\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"Engadir %(name)s\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"Filtro\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"Eliminar da clasificación\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"Prioridade de clasificación: %(priority_number)s\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"Activar clasificación\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"Eliminar\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"Borrar o %(object_name)s '%(escaped_object)s' resultaría na eliminación de \"\n\"elementos relacionados, pero a súa conta non ten permiso para borrar os \"\n\"seguintes tipos de elementos:\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\"Para borrar o obxecto %(object_name)s '%(escaped_object)s' requiriríase \"\n\"borrar os seguintes obxectos protexidos relacionados:\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\"Seguro que quere borrar o %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"Eliminaranse os seguintes obxectos relacionados:\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"Si, estou seguro\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"Eliminar múltiples obxectos\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\"Borrar os obxectos %(objects_name)s seleccionados resultaría na eliminación \"\n\"de obxectos relacionados, pero a súa conta non ten permiso para borrar os \"\n\"seguintes tipos de obxecto:\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\"Para borrar os obxectos %(objects_name)s relacionados requiriríase eliminar \"\n\"os seguintes obxectos protexidos relacionados:\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\"Está seguro de que quere borrar os obxectos %(objects_name)s seleccionados? \"\n\"Serán eliminados todos os seguintes obxectos e elementos relacionados on \"\n\"eles:\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \" Por %(filter_title)s \"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"Modelos na aplicación %(name)s\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"Modificar\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"Non ten permiso para editar nada.\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"Accións recentes\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"As miñas accións\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"Ningunha dispoñíbel\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"Contenido descoñecido\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"Hai un problema coa súa instalación de base de datos. Asegúrese de que se \"\n\"creasen as táboas axeitadas na base de datos, e de que o usuario apropiado \"\n\"teña permisos para lela.\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"Contrasinal:\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"¿Olvidou o usuario ou contrasinal?\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"Data/hora\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"Usuario\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"Acción\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\"Este obxecto non ten histórico de cambios. Posibelmente non se creou usando \"\n\"este sitio de administración.\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"Amosar todo\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"Gardar\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"Busca\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"%(counter)s resultado. \"\nmsgstr[1] \"%(counter)s resultados.\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"%(full_result_count)s en total\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"Gardar coma novo\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"Gardar e engadir outro\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"Gardar e seguir editando\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\"Primeiro insira un nome de usuario e un contrasinal. Despois poderá editar \"\n\"máis opcións de usuario.\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"Introduza un nome de usuario e contrasinal.\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"\"\n\"Insira un novo contrasinal para o usuario <strong>%(username)s</strong>.\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"Contrasinal\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"Contrasinal (outra vez)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Insira o mesmo contrasinal ca enriba para verificalo.\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"Eliminar\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"Engadir outro %(verbose_name)s\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"¿Eliminar?\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"Grazas polo tempo que dedicou ao sitio web.\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"Entrar de novo\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"Cambiar o contrasinal\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"O seu contrasinal cambiouse correctamente.\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"Cambiouse o seu contrasinal.\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"Por razóns de seguridade, introduza o contrasinal actual. Despois introduza \"\n\"dúas veces o contrasinal para verificarmos que o escribiu correctamente.\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"Contrasinal antigo\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"Contrasinal novo\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"Cambiar o contrasinal\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"Recuperar o contrasinal\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"Reseteo do contrasinal completo\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"\"\n\"A túa clave foi gardada.\\n\"\n\"Xa podes entrar.\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"Confirmación de reseteo da contrasinal\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"Insira o novo contrasinal\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"\"\n\"Por favor insira a súa contrasinal dúas veces para que podamos verificar se \"\n\"a escribiu correctamente.\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"Contrasinal novo:\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"Confirmar contrasinal:\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"Reseteo da contrasinal non satisfactorio.\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\"A ligazón de reseteo da contrasinal non é válida, posiblemente porque xa foi \"\n\"usada.  Por favor pida un novo reseteo da contrasinal.\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"O contrasinal foi recuperado correctamente\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\"Acabamos de enviarlle as instrucións para configurar o contrasinal ao \"\n\"enderezo de email que nos indicou. Debería recibilas axiña.\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\"Recibe este email porque solicitou restablecer o contrasinal para a súa \"\n\"conta de usuario en %(site_name)s\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"Por favor vaia á seguinte páxina e elixa una nova contrasinal:\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"No caso de que o esquecese, o seu nome de usuario é:\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"Grazas por usar o noso sitio web!\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"O equipo de %(site_name)s\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\"Esqueceu o contrasinal? Insira o seu enderezo de email embaixo e \"\n\"enviarémoslle as instrucións para configurar un novo.\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"Enderezo de correo electrónico:\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"Recuperar o meu contrasinal\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"Todas as datas\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"(Ningún)\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"Seleccione un/ha %s\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"Seleccione %s que modificar\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/gl/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# fasouto <fsoutomoure@gmail.com>, 2011.\n# fonso <fonzzo@gmail.com>, 2011.\n#   <fonzzo@gmail.com>, 2013.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2013-01-07 11:30+0000\\n\"\n\"Last-Translator: fonso <fonzzo@gmail.com>\\n\"\n\"Language-Team: Galician (http://www.transifex.com/projects/p/django/language/\"\n\"gl/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: gl\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"%s dispoñíbeis\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Esta é unha lista de %s dispoñíbeis. Pode escoller algúns seleccionándoos na \"\n\"caixa inferior e a continuación facendo clic na frecha \\\"Escoller\\\" situada \"\n\"entre as dúas caixas.\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"Escriba nesta caixa para filtrar a lista de %s dispoñíbeis.\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"Filtro\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"Escoller todo\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"Faga clic para escoller todos/as os/as '%s' dunha vez.\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"Escoller\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"Quitar\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"%s escollido/a(s)\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Esta é a lista de %s escollidos/as. Pode eliminar algúns seleccionándoos na \"\n\"caixa inferior e a continuación facendo clic na frecha \\\"Eliminar\\\" situada \"\n\"entre as dúas caixas.\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"Eliminar todos\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"Faga clic para eliminar da lista todos/as os/as '%s' escollidos/as.\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"%(sel)s de %(cnt)s escollido\"\nmsgstr[1] \"%(sel)s de %(cnt)s escollidos\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\"Tes cambios sen guardar en campos editables individuales. Se executas unha \"\n\"acción, os cambios non gardados perderanse.\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\"Escolleu unha acción, pero aínda non gardou os cambios nos campos \"\n\"individuais. Prema OK para gardar. Despois terá que volver executar a acción.\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\"Escolleu unha acción, pero aínda non gardou os cambios nos campos \"\n\"individuais. Probabelmente estea buscando o botón Ir no canto do botón \"\n\"Gardar.\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"\"\n\"xaneiro febreiro marzo abril maio xuño xullo agosto setembro outubro \"\n\"novembro decembro\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"D L M M X V S\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"Amosar\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"Esconder\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"Agora\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"Reloxo\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"Escolla unha hora\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"Medianoite\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"6 da mañá\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"Mediodía\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"Cancelar\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"Hoxe\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"Calendario\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"Onte\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"Mañá\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/he/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Alex Gaynor <alex.gaynor@gmail.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Meir Kriheli <meir@mksoft.co.il>, 2011.\n# Meir Kriheli <mkriheli@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:52+0000\\n\"\n\"Last-Translator: Ramiro Morales <cramm0@gmail.com>\\n\"\n\"Language-Team: Hebrew (http://www.transifex.com/projects/p/django/language/\"\n\"he/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: he\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"%(count)d %(items)s  נמחקו בהצלחה.\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"לא ניתן למחוק %(name)s\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"האם את/ה בטוח/ה ?\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"מחק %(verbose_name_plural)s שנבחרו\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"הכל\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"כן\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"לא\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"לא ידוע\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"כל תאריך\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"היום\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"בשבוע האחרון\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"החודש\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"השנה\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"עליך להתחבר שנית כי פג הזמן המוקצב לך.\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"פעולה\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"זמן פעולה\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"מזהה אובייקט\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"ייצוג אובייקט\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"דגל פעולה\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"הערה לשינוי\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"רישום יומן\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"רישומי יומן\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"בוצעה הוספת \\\"%(object)s\\\".\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"בוצע שינוי \\\"%(object)s\\\" - %(changes)s\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"בוצעה מחיקת \\\"%(object)s\\\".\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"אובייקט LogEntry\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"ללא\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"%s שונה.\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"ו\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"בוצעה הוספת %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"בוצע שינוי %(list)s עבור %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"בוצעה מחיקת %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"אף שדה לא השתנה.\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"הוספת %(name)s \\\"%(obj)s\\\" בוצעה בהצלחה. ניתן לערוך אותו שוב מתחת.\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"הוספת %(name)s \\\"%(obj)s\\\" בוצעה בהצלחה.\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"שינוי %(name)s \\\"%(obj)s\\\" בוצע בהצלחה.\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"יש לסמן פריטים כדי לבצע עליהם פעולות. לא שונו פריטים.\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"לא נבחרה פעולה.\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"הוספת %s\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"הפריט %(name)s עם המפתח הראשי %(key)r אינו קיים.\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"שינוי %s\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"שגיאת בסיס נתונים\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"שינוי %(count)s %(name)s בוצע בהצלחה.\"\nmsgstr[1] \"שינוי %(count)s %(name)s בוצע בהצלחה.\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"%(total_count)s נבחר\"\nmsgstr[1] \"כל ה־%(total_count)s נבחרו\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"0 מ %(cnt)s נבחרים\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"מחיקת %(name)s \\\"%(obj)s\\\" בוצעה בהצלחה.\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"היסטוריית שינוי: %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"כניסה\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"ניהול אתר\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"ניהול %s\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"תאריך:\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"שעה:\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"חפש\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"הוסף עוד אחת\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"דף לא קיים\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"אנו מצטערים, לא ניתן למצוא את הדף המבוקש.\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"דף הבית\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"שגיאת שרת\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"שגיאת שרת (500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"שגיאת שרת <em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\"התרחשה שגיאה. היא דווחה למנהלי האתר בדוא\\\"ל ותתוקן בקרוב. תודה על סבלנותך.\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"הפעל את הפעולה שבחרת בה.\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"בצע\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"לחיצה כאן תבחר את האובייקטים בכל העמודים\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"בחירת כל %(total_count)s ה־%(module_name)s\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"איפוס בחירה\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"שלום,\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"תיעוד\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"שינוי סיסמה\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"יציאה\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"ניהול אתר Django\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"ניהול Django\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"הוספה\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"היסטוריה\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"צפיה באתר\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"נא לתקן את השגיאה המופיעה מתחת.\"\nmsgstr[1] \"נא לתקן את השגיאות המופיעות מתחת.\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"הוספת %(name)s\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"סינון\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"הסרה ממיון\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"עדיפות מיון: %(priority_number)s\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"החלף כיוון מיון\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"מחיקה\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"מחיקת %(object_name)s '%(escaped_object)s' מצריכה מחיקת אובייקטים מקושרים, \"\n\"אך לחשבון שלך אין הרשאות למחיקת סוגי האובייקטים הבאים:\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\"מחיקת ה%(object_name)s '%(escaped_object)s' תדרוש מחיקת האובייקטים הקשורים \"\n\"והמוגנים הבאים:\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\"האם ברצונך למחוק את %(object_name)s \\\"%(escaped_object)s\\\"? כל הפריטים \"\n\"הקשורים הבאים יימחקו:\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"כן, אני בטוח/ה\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"מחק כמה פריטים\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\"מחיקת ב%(objects_name)s הנבחרת תביא במחיקת אובייקטים קשורים, אבל החשבון שלך \"\n\"אינו הרשאה למחוק את הסוגים הבאים של אובייקטים:\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\"מחיקת ה%(objects_name)s אשר סימנת תדרוש מחיקת האובייקטים הקשורים והמוגנים \"\n\"הבאים:\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\"האם אתה בטוח שאתה רוצה למחוק את ה%(objects_name)s הנבחר? כל האובייקטים הבאים \"\n\"ופריטים הקשורים להם יימחקו:\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \" לפי %(filter_title)s \"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"מודלים ביישום %(name)s\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"שינוי\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"אין לך הרשאות לעריכה.\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"פעולות אחרונות\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"הפעולות שלי\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"לא נמצאו\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"תוכן לא ידוע\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"משהו שגוי בהתקנת בסיס הנתונים שלך. נא לוודא שנוצרו טבלאות בסיס הנתונים \"\n\"המתאימות, ובסיס הנתונים ניתן לקריאה על ידי המשתמש המתאים.\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"סיסמה:\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"שכחת את שם המשתמש והסיסמה שלך ?\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"תאריך/שעה\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"משתמש\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"פעולה\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\"לאובייקט זה אין היסטוריית שינוי. כנראה לא השתמשו בממשק הניהול הזה להוספתו.\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"הצג הכל\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"שמירה\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"חיפוש\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"תוצאה %(counter)s\"\nmsgstr[1] \"%(counter)s תוצאות\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"%(full_result_count)s סה\\\"כ\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"שמירה כחדש\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"שמירה והוספת אחר\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"שמירה והמשך עריכה\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\"ראשית יש להזין שם משתמש וסיסמה. לאחר מכן יהיה ביכולתך לערוך אפשרויות נוספות \"\n\"עבור המשתמש.\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"נא לשים שם משתמש וסיסמה.\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"יש להזין סיסמה חדשה עבור המשתמש <strong>%(username)s</strong>.\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"סיסמה\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"סיסמה (שוב)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"יש להזין את אותה סיסמה שוב,לאימות.\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"להסיר\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"הוספת %(verbose_name)s\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"מחיקה ?\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"תודה על בילוי זמן איכות עם האתר.\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"התחבר/י שוב\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"שינוי סיסמה\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"הסיסמה שונתה בהצלחה\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"סיסמתך שונתה.\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"נא להזין את סיסמתך הישנה, לצרכי אבטחה, ולאחר מכן את סיסמתך החדשה פעמיים כדי \"\n\"שנוכל לוודא שהקלדת אותה כראוי.\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"סיסמה ישנה\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"סיסמה חדשה\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"שנה את סיסמתי\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"איפוס סיסמה\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"איפוס הסיסמה הושלם\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"ססמתך נשמרה. כעת ניתן להתחבר.\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"אימות איפוס סיסמה\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"הזנת סיסמה חדשה\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"נא להזין את סיסמתך החדשה פעמיים כדי שנוכל לוודא שהקלדת אותה כראוי.\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"סיסמה חדשה:\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"אימות סיסמה:\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"איפוס הסיסמה נכשל\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\"הקישור לאיפוס הסיסמה אינו חוקי. ייתכן והשתמשו בו כבר. נא לבקש איפוס סיסמה \"\n\"חדש.\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"הסיסמה אופסה בהצלחה\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\"שלחנו הוראות לקביעת הסיסמה אל כתובת הדוא\\\"ל שהזנת. ההודעה אמורה להתקבל בקרוב.\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\"הודעה זו נשלחה אליך עקב בקשתך לאיפוס הסיסמה עבור המשתמש שלך באתר \"\n\"%(site_name)s.\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"נא להגיע לעמוד הבא ולבחור סיסמה חדשה:\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"שם המשתמש שלך, במקרה ששכחת:\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"תודה על השימוש באתר שלנו!\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"צוות %(site_name)s\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\"שכחת את סיסמתך ? נא להזין את כתובת הדוא\\\"ל מתחת, ואנו נשלח הוראות לקביעת \"\n\"סיסמה חדשה.\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"כתובת דוא\\\"ל:\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"אפס את סיסמתי\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"כל התאריכים\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"(אין)\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"בחירת %s\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"בחירת %s לשינוי\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/he/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Alex Gaynor <alex.gaynor@gmail.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Meir Kriheli <meir@mksoft.co.il>, 2011.\n# Meir Kriheli <mkriheli@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-10-21 11:05+0000\\n\"\n\"Last-Translator: Meir Kriheli <mkriheli@gmail.com>\\n\"\n\"Language-Team: Hebrew (http://www.transifex.com/projects/p/django/language/\"\n\"he/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: he\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"%s זמינות\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"זו רשימת %s הזמינים לבחירה. ניתן לבחור חלק ע\\\"י סימון בתיבה מתחת ולחיצה על \"\n\"חץ  \\\"בחר\\\" בין שתי התיבות.\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"ניתן להקליד בתיבה זו כדי לסנן %s.\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"סינון\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"בחירת הכל\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"בחירת כל ה%s בבת אחת.\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"בחר\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"הסרה\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"%s אשר נבחרו\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"זו רשימת %s אשר נבחרו. ניתן להסיר חלק ע\\\"י בחירה בתיבה מתחת ולחיצה על חץ \"\n\"\\\"הסרה\\\" בין שתי התיבות.\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"הסרת הכל\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"הסרת כל %s אשר נבחרו בבת אחת.\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"%(sel)s מ %(cnt)s נבחרות\"\nmsgstr[1] \"%(sel)s מ %(cnt)s נבחרות\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\"יש לך שינויים שלא נשמרו על שדות יחידות.  אם אתה מפעיל פעולה, שינויים שלא \"\n\"נשמרו יאבדו.\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\"בחרת פעולה, אבל עוד לא שמרת את השינויים לשדות בודדים. אנא לחץ על אישור כדי \"\n\"לשמור. יהיה עליך להפעיל את הפעולה עוד פעם.\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\"בחרת פעולה, ולא עשיתה שינויימ על שדות. אתה כנראה מחפש את הכפתור ללכת במקום \"\n\"הכפתור לשמור.\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"\"\n\"ינואר פברואר מרץ אפריל מאי יוני יולי אוגוסט ספטמבר אוקטובר נובמבר דצמבר\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"א ב ג ד ה ו ש\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"הצג\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"הסתר\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"כעת\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"שעון\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"בחירת שעה\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"חצות\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"6 בבוקר\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"12 בצהריים\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"ביטול\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"היום\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"לוח שנה\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"אתמול\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"מחר\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/hi/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <alok.kumar@gmail.com>, 2013.\n# Chandan kumar <chandankumar.093047@gmail.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Sandeep Satavlekar <sandysat@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-09 10:14+0000\\n\"\n\"Last-Translator: alkuma <alok.kumar@gmail.com>\\n\"\n\"Language-Team: Hindi (http://www.transifex.com/projects/p/django/language/\"\n\"hi/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: hi\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"%(count)d %(items)s सफलतापूर्वक हट गयें |\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"%(name)s नहीं हटा सकते\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"क्या आप निश्चित हैं?\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"चुने हुए %(verbose_name_plural)s  हटा दीजिये \"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"सभी\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"हाँ\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"नहीं\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"अनजान\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"कोई भी तारीख\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"आज\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"पिछले 7 दिन\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"इस महीने\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"इस साल\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\"कृपया कर्मचारी खाते का सही %(username)s व कूटशब्द भरें। भरते समय दीर्घाक्षर और लघु अक्षर \"\n\"का खयाल रखें।\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"कृपया फिर से प्रवेश करें, क्योंकि आपका सत्र समाप्त हो गया है |\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \" क्रिया:\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"कार्य समय\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"वस्तु आई डी \"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"वस्तु प्रतिनिधित्व\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"कार्य ध्वज\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"परिवर्तन सन्देश\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"लॉग प्रविष्टि\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"लॉग प्रविष्टियाँ\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"\\\"%(object)s\\\" को जोड़ा गया.\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"परिवर्तित \\\"%(object)s\\\" - %(changes)s \"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"\\\"%(object)s\\\" को नष्ट कर दिया है.\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"LogEntry ऑब्जेक्ट\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"कोई नहीं\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"%s को बदला गया हैं\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"और\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"%(name)s \\\"%(object)s\\\" को जोडा गया हैं\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"%(name)s \\\"%(object)s\\\" की %(list)s बदला गया है\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"%(name)s \\\"%(object)s\\\" निकाला गया है\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"कोई क्षेत्र नहीं बदला\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" कामयाबी से जोडा गया हैं । आप इसे फिर से संपादित कर सकते हैं\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\" %(name)s \\\"%(obj)s\\\" सफलतापूर्वक जोड़ दिया गया। आप चाहें तो नीचे एक और %(name)s \"\n\"जोड़ सकते हैं।\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" को कामयाबी से जोडा गया है\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\" %(name)s \\\"%(obj)s\\\" सफलतापूर्वक जोड़ दिया गया। आप चाहें तो नीचे इसे बदल भी सकते हैं।\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\" %(name)s \\\"%(obj)s\\\" सफलतापूर्वक बदल दिया गया। आप चाहें तो नीचे एक और %(name)s \"\n\"जोड़ सकते हैं।\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" को कामयाबी से बदला गया हैं\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"कार्रवाई हेतु आयटम सही अनुक्रम में चुने जाने चाहिए | कोई आइटम नहीं बदले गये हैं.\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"कोई कार्रवाई नहीं चुनी है |\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"%s बढाएं\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"%(name)s  नामक कोई वस्तू जिस की प्राथमिक कुंजी %(key)r हो, अस्तित्व में नहीं हैं |\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"%s बदलो\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"डेटाबेस त्रुटि\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"%(count)s %(name)s का परिवर्तन कामयाब हुआ |\"\nmsgstr[1] \"%(count)s %(name)s का परिवर्तन कामयाब हुआ |\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"%(total_count)s चुने\"\nmsgstr[1] \"सभी %(total_count)s चुने \"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"%(cnt)s में से 0 चुने\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" को कामयाबी से निकाला गया है\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"इतिहास बदलो: %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"लॉगिन\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"साइट प्रशासन\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"%s प्रशासन\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"तिथि:\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"समय:\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"लुक अप\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"अन्य बढाएं\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"फ़िलहाल - \"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"बदलाव -\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"पृष्ठ लापता\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"क्षमा कीजिए पर निवेदित पृष्ठ लापता है ।\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"गृह\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"सर्वर त्रुटि\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"सर्वर त्रुटि (500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"सर्वर त्रुटि <em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\"एक त्रुटि मिली है। इसकी जानकारी स्थल के संचालकों को डाक द्वारा दे दी गई है, और यह जल्द \"\n\"ठीक हो जानी चाहिए। धीरज रखने के लिए शुक्रिया।\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"चयनित कार्रवाई चलाइये\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"आगे बढ़े\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"सभी पृष्ठों पर मौजूद वस्तुओं को चुनने के लिए यहाँ क्लिक करें \"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"तमाम %(total_count)s %(module_name)s चुनें\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"चयन खालिज किया जाये \"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"आपका स्वागत है,\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"दस्तावेज़ीकरण\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"कूटशब्द बदलें\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"लॉग आउट\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"ज्याँगो साइट प्रशासन\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"ज्याँगो प्रशासन\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"बढाएं\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"इतिहास\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"साइट पे देखें\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"कृपया नीचे पायी गयी गलती ठीक करें ।\"\nmsgstr[1] \"कृपया नीचे पायी गयी गलतियाँ ठीक करें ।\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"%(name)s बढाएं\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"छन्नी\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"श्रेणीकरण से हटाये \"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"श्रेणीकरण प्राथमिकता : %(priority_number)s\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"टॉगल श्रेणीकरण\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"मिटाएँ\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"%(object_name)s '%(escaped_object)s' को मिटाने पर सम्बंधित वस्तुएँ भी मिटा दी \"\n\"जाएगी, परन्तु आप के खाते में निम्नलिखित प्रकार की वस्तुओं को मिटाने की अनुमति नहीं हैं |\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\"%(object_name)s '%(escaped_object)s' को  हटाने के लिए उनसे संबंधित निम्नलिखित \"\n\"संरक्षित वस्तुओं को हटाने की आवश्यकता होगी:\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\"क्या आप %(object_name)s \\\"%(escaped_object)s\\\" हटाना चाहते हैं? निम्नलिखित सभी \"\n\"संबंधित वस्तुएँ नष्ट की जाएगी\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"हाँ, मैंने पक्का तय किया हैं \"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"अनेक वस्तुएं हटाएँ\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\"चयनित %(objects_name)s हटाने पर उस से सम्बंधित वस्तुएं भी हट जाएगी, परन्तु आपके खाते में \"\n\"वस्तुओं के निम्नलिखित प्रकार हटाने की अनुमति नहीं है:\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\"चयनित %(objects_name)s को हटाने के पश्चात् निम्नलिखित संरक्षित संबंधित वस्तुओं को हटाने \"\n\"की आवश्यकता होगी |\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\"क्या आप ने पक्का तय किया हैं की चयनित %(objects_name)s  को नष्ट किया जाये ? \"\n\"निम्नलिखित सभी वस्तुएं और उनसे सम्बंधित वस्तुए भी नष्ट की जाएगी:\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \"%(filter_title)s द्वारा\"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"%(name)s अनुप्रयोग के प्रतिरूप\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"बदलें\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"आपके पास कुछ भी संपादन करने के लिये अनुमति नहीं है ।\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"हाल क्रियाएँ\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"मेरे कार्य\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \" कोई भी उपलब्ध नहीं\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"अज्ञात सामग्री\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"अपने डेटाबेस स्थापना के साथ कुछ गलत तो है | सुनिश्चित करें कि उचित डेटाबेस तालिका बनायीं \"\n\"गयी है, और सुनिश्चित करें कि डेटाबेस उपयुक्त उपयोक्ता के द्वारा पठनीय है |\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"कूटशब्द\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"अपना पासवर्ड या उपयोगकर्ता नाम भूल गये हैं?\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"तिथि / समय\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"उपभोक्ता\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"कार्य\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\"इस वस्तु का बदलाव इतिहास नहीं है. शायद वह इस साइट व्यवस्थापक के माध्यम से नहीं जोड़ा \"\n\"गया है.\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"सभी दिखाएँ\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"सुरक्षित कीजिये\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"खोज\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"%(counter)s परिणाम\"\nmsgstr[1] \"%(counter)s परिणाम\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"%(full_result_count)s कुल परिणाम\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"नये सा सहेजें\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"सहेजें और एक और जोडें\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"सहेजें और संपादन करें\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\"पहले प्रदवोक्ता नाम और कूटशब्द दर्ज करें । उसके पश्चात ही आप अधिक प्रवोक्ता विकल्प बदल \"\n\"सकते हैं ।\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"उपयोगकर्ता का नाम और कूटशब्द दर्ज करें.\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"<strong>%(username)s</strong> प्रवोक्ता के लिए नयी कूटशब्द दर्ज करें ।\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"कूटशब्द\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"शब्दकूट (दुबारा)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"सत्याप्ती के लिए ऊपर दर्ज किए कूटशब्द को फिर से प्रवेश करें\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"निकालें\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"एक और %(verbose_name)s जोड़ें \"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"मिटाएँ ?\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"आज हमारे वेब साइट पर आने के लिए धन्यवाद ।\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"फिर से लॉगिन कीजिए\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"कूटशब्द बदलें\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"कूटशब्द कदली कामयाब\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"आपके कूटशब्द को बदला गया है\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"सुरक्षा कारणों के लिए कृपया पुराना कूटशब्द दर्ज करें । उसके पश्चात नए कूटशब्द को दो बार दर्ज \"\n\"करें ताकि हम उसे सत्यापित कर सकें ।\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"पुराना कूटशब्द \"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"नया कूटशब्द \"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"कूटशब्द बदलें\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"कूटशब्द पुनस्थाप\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"कूटशब्द पुनस्थाप कामयाब\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"आपके कूटशब्द को स्थापित किया गया है । अब आप लॉगिन कर सकते है ।\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"कूटशब्द पुष्टि\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"नया कूटशब्द दीजिएं\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"कृपया आपके नये कूटशब्द को दो बार दर्ज करें ताकि हम उसकी सत्याप्ती कर सकते है ।\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"नया कूटशब्द \"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"कूटशब्द पुष्टि कीजिए\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"कूटशब्द पुनस्थाप असफल\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\"कूटशब्द पुनस्थाप संपर्क अमान्य है, संभावना है कि उसे उपयोग किया गया है। कृपया फिर से कूटशब्द \"\n\"पुनस्थाप की आवेदन करें ।\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"कूटशब्द पुनस्थाप सफल\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\"हमने आपके डाक पते पर कूटशब्द स्थापित करने के निर्देश भेजे है । थोडी ही देर में ये आपको मिल \"\n\"जाएँगे।\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\"आपको यह डाक इसलिए आई है क्योंकि आप ने %(site_name)s पर अपने खाते का कूटशब्द बदलने का \"\n\"अनुरोध किया था |\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"कृपया निम्नलिखित पृष्ठ पर नया कूटशब्द चुनिये :\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"आपका प्रवोक्ता नाम, यदि भूल गये हों :\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"हमारे साइट को उपयोग करने के लिए धन्यवाद ।\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"%(site_name)s दल\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\"कूटशब्द भूल गए? नीचे अपना डाक पता भरें, वहाँ पर हम आपको नया कूटशब्द रखने के निर्देश भेजेंगे।\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"डाक पता -\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \" मेरे कूटशब्द की पुनःस्थापना\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"सभी तिथियों\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"(कोई नहीं)\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"%s चुनें\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"%s के बदली के लिए चयन करें\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/hi/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Chandan kumar <chandankumar.093047@gmail.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Sandeep Satavlekar <sandysat@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-03-15 12:59+0000\\n\"\n\"Last-Translator: Chandan kumar <chandankumar.093047@gmail.com>\\n\"\n\"Language-Team: Hindi (http://www.transifex.com/projects/p/django/language/\"\n\"hi/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: hi\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"उपलब्ध %s\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"यह उपलब्ध %s की सूची है. आप उन्हें नीचे दिए गए बॉक्स में से चयन करके कुछ को चुन सकते हैं और \"\n\"उसके बाद दो बॉक्स के बीच \\\"चुनें\\\" तीर पर क्लिक करें.\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"इस बॉक्स में टाइप करने के लिए नीचे उपलब्ध %s की सूची को फ़िल्टर करें.\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"छानना\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"सभी चुनें\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"एक ही बार में सभी %s को चुनने के लिए क्लिक करें.\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"चुनें\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"हटाना\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"चुनें %s\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"यह उपलब्ध %s की सूची है. आप उन्हें नीचे दिए गए बॉक्स में से चयन करके कुछ को हटा सकते हैं और \"\n\"उसके बाद दो बॉक्स के बीच \\\"हटायें\\\" तीर पर क्लिक करें.\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"सभी को हटाएँ\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"एक ही बार में सभी %s को हटाने के लिए क्लिक करें.\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"%(cnt)s में से %(sel)s चुना गया हैं\"\nmsgstr[1] \"%(cnt)s में से %(sel)s चुने गए हैं\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\"स्वतंत्र सम्पादनक्षम क्षेत्र/स्तम्भ में किये हुए बदल अभी रक्षित नहीं हैं | अगर आप कुछ कार्रवाई \"\n\"करते हो तो वे  खो जायेंगे |\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\"आप ने कार्रवाई तो चुनी हैं, पर स्वतंत्र सम्पादनक्षम क्षेत्र/स्तम्भ में किये हुए बदल अभी सुरक्षित \"\n\"नहीं किये हैं| उन्हें सुरक्षित करने के लिए कृपया 'ओके' क्लिक करे | आप को चुनी हुई कार्रवाई \"\n\"दोबारा चलानी होगी |\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\"आप ने कार्रवाई चुनी हैं, और आप ने स्वतंत्र सम्पादनक्षम क्षेत्र/स्तम्भ में बदल नहीं किये हैं|  \"\n\"संभवतः 'सेव' बटन के बजाय आप 'गो' बटन ढून्ढ रहे हो |\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"जनवरी फ़रवरी मार्च अप्रैल मई जून जुलाई अगस्त सेप्टम्बर अक्टूबर नवंबर दिसम्‍बर\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"आ सो म बु गु शु श\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"दिखाओ\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"  छिपाओ\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"अब\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"घड़ी\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"एक समय चुनें\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"मध्यरात्री\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"सुबह 6 बजे\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"दोपहर\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"रद्द करें\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"आज\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"तिथि-पत्र \"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"कल (बीता)\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"कल\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/hr/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# aljosa <aljosa.mohorovic@gmail.com>, 2011.\n#   <aljosa.mohorovic@gmail.com>, 2013.\n# Bojan Mihelač <bmihelac@mihelac.org>, 2012.\n# Davor Lučić <r.dav.lc@gmail.com>, 2011-2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Ylodi <stjepan@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-14 18:34+0000\\n\"\n\"Last-Translator: aljosa <aljosa.mohorovic@gmail.com>\\n\"\n\"Language-Team: Croatian (http://www.transifex.com/projects/p/django/language/\"\n\"hr/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: hr\\n\"\n\"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"Uspješno izbrisano %(count)d %(items)s.\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"Nije moguće izbrisati %(name)s\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"Jeste li sigurni?\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"Izbrišite odabrane %(verbose_name_plural)s\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"Svi\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"Da\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"Ne\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"Nepoznat pojam\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"Bilo koji datum\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"Danas\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"Prošlih 7 dana\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"Ovaj mjesec\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"Ova godina\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\"Molimo unesite ispravno %(username)s i lozinku za pristup. Imajte na umu da \"\n\"oba polja mogu biti velika i mala slova.\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"Molim prijavite se ponovo jer je vaš session istekao.\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"Akcija:\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"vrijeme akcije\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"id objekta\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"repr objekta\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"oznaka akcije\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"promijeni poruku\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"zapis\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"zapisi\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"Dodano \\\"%(object)s\\\".\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"Promijenjeno \\\"%(object)s\\\" - %(changes)s\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"Obrisano \\\"%(object)s.\\\"\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"Log zapis\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"Nijedan\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"Promijenjeno %s.\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"i\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Dodano %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Promijeni %(list)s za %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Izbrisani %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"Nije bilo promjena polja.\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" uspješno dodan. Možete ponovo urediti unos dolje.\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\"Unos %(name)s \\\"%(obj)s\\\" je uspješno dodan. Možete dodati još jedan unos \"\n\"(%(name)s) u nastavku.\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" uspješno je dodano.\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\"Unos %(name)s \\\"%(obj)s\\\" je uspješno promijenjen. Možete ga urediti ponovno \"\n\"ispod.\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\"Unos %(name)s \\\"%(obj)s\\\" je uspješno promijenjen. Možete dodati još jedan \"\n\"(%(name)s) u nastavku.\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" uspješno promijenjeno.\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\"Unosi moraju biti odabrani da bi se nad njima mogle izvršiti akcije. Nijedan \"\n\"unos nije promijenjen.\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"Nije odabrana akcija.\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"Novi unos (%s)\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"Unos %(name)s sa primarnim ključem %(key)r ne postoji.\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"Promijeni %s\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"Pogreška u bazi\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"%(count)s %(name)s uspješno promijenjen.\"\nmsgstr[1] \"%(count)s %(name)s uspješno promijenjeno.\"\nmsgstr[2] \"%(count)s %(name)s uspješno promijenjeno.\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"%(total_count)s odabrano\"\nmsgstr[1] \"Svih %(total_count)s odabrano\"\nmsgstr[2] \"Svih %(total_count)s odabrano\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"0 od %(cnt)s odabrano\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" uspješno izbrisan.\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"Promijeni povijest: %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"Prijavi se\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"Administracija stranica\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"%s administracija\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"Datum:\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"Vrijeme:\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"Potraži\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"Unesi još\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"Trenutno:\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"Promijeni:\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"Stranica nije pronađena\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"Ispričavamo se, ali tražena stranica nije pronađena.\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"Početna\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"Greška na serveru\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"Greška na serveru (500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"Greška na serveru <em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\"Dogodila se greška. Administratori su obaviješteni putem elektroničke pošte \"\n\"te bi greška uskoro trebala biti ispravljena. Hvala na strpljenju.\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"Izvrši odabranu akciju\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"Idi\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"Klikni ovdje da bi odabrao unose kroz sve stranice\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"Odaberi svih %(total_count)s %(module_name)s\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"Očisti odabir\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"Dobrodošli,\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"Dokumentacija\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"Promijeni lozinku\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"Odjava\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"Django administracija stranica\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"Django administracija\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"Novi unos\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"Povijest\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"Pogledaj na stranicama\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"Molimo ispravite navedenu grešku.\"\nmsgstr[1] \"Molimo ispravite navedene greške.\"\nmsgstr[2] \"Molimo ispravite navedene greške.\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"Novi unos - %(name)s\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"Filter\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"Odstrani iz sortiranja\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"Prioritet sortiranja: %(priority_number)s\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"Preklopi sortiranje\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"Izbriši\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"Brisanje %(object_name)s '%(escaped_object)s' rezultiralo bi brisanjem \"\n\"povezanih objekta, ali vi nemate privilegije za brisanje navedenih objekta: \"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\"Brisanje %(object_name)s '%(escaped_object)s' bi zahtijevalo i brisanje \"\n\"sljedećih zaštićenih povezanih objekata:\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\"Jeste li sigurni da želite izbrisati %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"Svi navedeni objekti biti će izbrisani:\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"Da, siguran sam\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"Izbriši više unosa.\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\"Brisanje odabranog %(objects_name)s  rezultiralo bi brisanjem povezanih \"\n\"objekta, ali vaš korisnički račun nema dozvolu za brisanje sljedeće vrste \"\n\"objekata:\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\"Brisanje odabranog %(objects_name)s  će zahtijevati brisanje sljedećih \"\n\"zaštićenih povezanih objekata:\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\"Jeste li sigurni da želite izbrisati odabrane %(objects_name)s ? Svi \"\n\"sljedeći objekti i povezane stavke će biti izbrisani:\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \"Po %(filter_title)s \"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"Modeli u aplikaciji %(name)s\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"Promijeni\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"Nemate privilegije za promjenu podataka.\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"Nedavne promjene\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"Moje promjene\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"Nije dostupno\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"Sadržaj nepoznat\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"Nešto nije uredu sa instalacijom/postavkama baze. Provjerite jesu li \"\n\"potrebne tablice u bazi kreirane i provjerite je li baza dostupna korisniku.\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"Lozinka:\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"Zaboravili ste lozinku ili korisničko ime?\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"Datum/vrijeme\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"Korisnik\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"Akcija\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\"Ovaj objekt nema povijest promjena. Moguće je da nije dodan korištenjem ove \"\n\"administracije.\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"Prikaži sve\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"Spremi\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"Traži\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"%(counter)s rezultat\"\nmsgstr[1] \"%(counter)s rezultata\"\nmsgstr[2] \"%(counter)s rezultata\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"%(full_result_count)s ukupno\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"Spremi kao novi unos\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"Spremi i unesi novi unos\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"Spremi i nastavi uređivati\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\"Prvo, unesite korisničko ime i lozinku. Onda možete promijeniti više \"\n\"postavki korisnika.\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"Unesite korisničko ime i lozinku.\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"Unesite novu lozinku za korisnika <strong>%(username)s</strong>.\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"Lozinka\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"Lozinka (unesi ponovo)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Unesite istu lozinku, za potvrdu.\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"Ukloni\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"Dodaj još jedan %(verbose_name)s\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"Izbriši?\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"Hvala što ste proveli malo kvalitetnog vremena na stranicama danas.\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"Prijavite se ponovo\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"Promjena lozinke\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"Promjena lozinke uspješna\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"Vaša lozinka je promijenjena.\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"Molim unesite staru lozinku, zbog sigurnosti, i onda unesite novu lozinku \"\n\"dvaput da bi mogli provjeriti jeste li je ispravno unijeli.\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"Stara lozinka\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"Nova lozinka\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"Promijeni moju lozinku\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"Resetiranje lozinke\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"Resetiranje lozinke završeno\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"Vaša lozinka je postavljena. Sada se možete prijaviti.\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"Potvrda promjene lozinke\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"Unesite novu lozinku\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"\"\n\"Molimo vas da unesete novu lozinku dvaput da bi mogli provjeriti jeste li je \"\n\"ispravno unijeli.\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"Nova lozinka:\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"Potvrdi lozinku:\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"Resetiranje lozinke neuspješno\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\"Link za resetiranje lozinke je neispravan, vjerojatno jer je već korišten. \"\n\"Molimo zatražite novo resetiranje lozinke.\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"Resetiranje lozinke uspješno\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\"Poslali smo vam upute za postavljenje vaše lozinke na e-mail adresu koju ste \"\n\"unijeli. Trebali bi je uskoro primiti.\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\"Primili ste ovu poruku jer ste zatražili postavljanje nove lozinke za svoj \"\n\"korisnički račun na %(site_name)s.\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"Molimo otiđite do sljedeće stranice i odaberite novu lozinku:\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"Vaše korisničko ime, u slučaju da ste zaboravili:\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"Hvala šta koristite naše stranice!\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"%(site_name)s tim\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\"Zaboravili ste lozinku? Unesite vašu e-mail adresu ispod i poslati ćemo vam \"\n\"upute kako postaviti novu.\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"E-mail adresa:\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"Resetiraj moju lozinku\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"Svi datumi\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"(Nijedan)\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"Odaberi %s\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"Odaberi za promjenu - %s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/hr/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# aljosa <aljosa.mohorovic@gmail.com>, 2011.\n# Bojan Mihelač <bmihelac@mihelac.org>, 2012.\n# Davor Lučić <r.dav.lc@gmail.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-03-22 11:03+0000\\n\"\n\"Last-Translator: Bojan Mihelač <bmihelac@mihelac.org>\\n\"\n\"Language-Team: Croatian (http://www.transifex.com/projects/p/django/language/\"\n\"hr/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: hr\\n\"\n\"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"Dostupno %s\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Ovo je popis dostupnih %s. Možete dodati pojedine na način da ih izaberete u \"\n\"polju ispod i kliknete \\\"Izaberi\\\" strelicu između dva polja. \"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"Tipkajte u ovo polje da filtrirate listu dostupnih %s.\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"Filter\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"Odaberi sve\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"Kliknite da odabrete sve %s odjednom.\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"Izaberi\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"Ukloni\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"Odabrano %s\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Ovo je popis odabranih %s. Možete ukloniti pojedine na način da ih izaberete \"\n\"u polju ispod i kliknete \\\"Ukloni\\\" strelicu između dva polja. \"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"Ukloni sve\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"Kliknite da uklonite sve izabrane %s odjednom.\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"odabrano %(sel)s od %(cnt)s\"\nmsgstr[1] \"odabrano %(sel)s od %(cnt)s\"\nmsgstr[2] \"odabrano %(sel)s od %(cnt)s\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\"Neke promjene nisu spremljene na pojedinim polja za uređivanje. Ako \"\n\"pokrenete akciju, nespremljene promjene će biti izgubljene.\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\"Odabrali ste akciju, ali niste još spremili promjene na pojedinim polja. \"\n\"Molimo kliknite OK za spremanje. Morat ćete ponovno pokrenuti akciju.\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\"Odabrali ste akciju, a niste napravili nikakve izmjene na pojedinim poljima. \"\n\"Vjerojatno tražite gumb Idi umjesto gumb Spremi.\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"\"\n\"Siječanj Veljača Ožujak Travanj Svibanj Lipanj Srpanj Kolovoz Rujan Listopad \"\n\"Studeni Prosinac\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"N P U S Č P S\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"Prikaži\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"Sakri\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"Sada\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"Sat\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"Izaberite vrijeme\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"Ponoć\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"6 ujutro\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"Podne\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"Odustani\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"Danas\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"Kalendar\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"Jučer\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"Sutra\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/hu/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <gabor@20y.hu>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Kristóf Gruber <>, 2012.\n# Máté Őry <orymate@iit.bme.hu>, 2012.\n# Szilveszter Farkas <szilveszter.farkas@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:52+0000\\n\"\n\"Last-Translator: Ramiro Morales <cramm0@gmail.com>\\n\"\n\"Language-Team: Hungarian (http://www.transifex.com/projects/p/django/\"\n\"language/hu/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: hu\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"%(count)d %(items)s sikeresen törölve lett.\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"%(name)s törlése nem sikerült\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"Biztos benne?\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"Kiválasztott %(verbose_name_plural)s törlése\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"Mind\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"Igen\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"Nem\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"Ismeretlen\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"Bármely dátum\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"Ma\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"Utolsó 7 nap\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"Ez a hónap\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"Ez az év\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"Jelentkezzen be újra, mert a munkamenete lejárt.\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"Művelet:\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"művelet időpontja\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"objektum id\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"objektum repr\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"művelet jelölés\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"üzenet módosítása\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"naplóbejegyzés\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"naplóbejegyzések\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"\\\"%(object)s\\\" hozzáadva.\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"\\\"%(object)s\\\" megváltoztatva: %(changes)s\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"\\\"%(object)s\\\" törölve.\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"Naplóbejegyzés objektum\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"Egyik sem\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"%s módosítva.\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"és\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"\\\"%(object)s\\\" %(name)s létrehozva.\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"\\\"%(object)s\\\" %(name)s tulajdonságai (%(list)s) megváltoztak.\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"\\\"%(object)s\\\" %(name)s törlésre került.\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"Egy mező sem változott.\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"\\\"%(obj)s\\\" %(name)s sikeresen létrehozva. Alább ismét szerkesztheti.\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"\\\"%(obj)s\\\" %(name)s sikeresen létrehozva.\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"\\\"%(obj)s\\\" %(name)s sikeresen módosítva.\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\"A műveletek végrehajtásához ki kell választani legalább egy elemet. Semmi \"\n\"sem lett módosítva.\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"Nem választott ki műveletet.\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"Új %s\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"%(name)s objektum %(key)r elsődleges kulccsal nem létezik.\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"%s módosítása\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"Adatbázishiba\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"%(count)s %(name)s sikeresen módosítva lett.\"\nmsgstr[1] \"%(count)s %(name)s sikeresen módosítva lett.\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"%(total_count)s kiválasztva\"\nmsgstr[1] \"%(total_count)s kiválasztva\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"0 kiválasztva ennyiből: %(cnt)s\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"\\\"%(obj)s\\\" %(name)s sikeresen törölve.\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"Változások története: %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"Bejelentkezés\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"Honlap karbantartása\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"%s adminisztráció\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"Dátum:\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"Idő:\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"Keresés\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"Újabb hozzáadása\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"Nincs ilyen oldal\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"Sajnáljuk, de a kért oldal nem található.\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"Kezdőlap\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"Szerverhiba\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"Szerverhiba (500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"Szerverhiba <em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"Kiválasztott művelet futtatása\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"Mehet\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"Kattintson ide több oldalnyi objektum kiválasztásához\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"Az összes %(module_name)s kiválasztása, összesen %(total_count)s db\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"Kiválasztás törlése\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"Üdvözlöm,\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"Dokumentáció\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"Jelszó megváltoztatása\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"Kijelentkezés\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"Django honlapadminisztráció\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"Django adminisztráció\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"Új\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"Történet\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"Megtekintés a honlapon\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"Kérem, javítsa az alábbi hibát.\"\nmsgstr[1] \"Kérem, javítsa az alábbi hibákat.\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"Új %(name)s\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"Szűrő\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"Eltávolítás a rendezésből\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"Prioritás rendezésnél: %(priority_number)s\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"Rendezés megfordítása\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"Törlés\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"\\\"%(escaped_object)s\\\" %(object_name)s törlése a kapcsolódó objektumok \"\n\"törlését is eredményezi, de a hozzáférése nem engedi a következő típusú \"\n\"objektumok törlését:\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\"\\\"%(escaped_object)s\\\" %(object_name)s törlése az alábbi kapcsolódó \"\n\"objektumok törlését is maga után vonja:\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\"Biztos hogy törli a következőt: \\\"%(escaped_object)s\\\" (típus: \"\n\"%(object_name)s)? A összes további kapcsolódó elem is törlődik:\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"Igen, biztos vagyok benne\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"Több elem törlése\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\"A kiválasztott %(objects_name)s törlése kapcsolódó objektumok törlését vonja \"\n\"maga után, de az alábbi objektumtípusok törléséhez nincs megfelelő \"\n\"jogosultsága:\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\"A kiválasztott %(objects_name)s törlése az alábbi védett kapcsolódó \"\n\"objektumok törlését is maga után vonja:\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\"Biztosan törölni akarja a kiválasztott %(objects_name)s objektumokat? Minden \"\n\"alábbi objektum, és a hozzájuk kapcsolódóak is törlésre kerülnek:\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \" %(filter_title)s szerint \"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"Módosítás\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"Nincs joga szerkeszteni.\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"Utolsó műveletek\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"Az én műveleteim\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"Nincs elérhető\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"Ismeretlen tartalom\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"Valami nem stimmel a telepített adatbázissal. Bizonyosodjon meg arról, hogy \"\n\"a megfelelő táblák létre lettek-e hozva, és hogy a megfelelő felhasználó \"\n\"tudja-e őket olvasni.\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"Jelszó:\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"Elfelejtette jelszavát vagy felhasználónevét?\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"Dátum/idő\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"Felhasználó\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"Művelet\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"Honlap karbantartása\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"Mutassa mindet\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"Mentés\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"Keresés\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"%(counter)s találat\"\nmsgstr[1] \"%(counter)s találat\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"%(full_result_count)s összesen\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"Mentés újként\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"Mentés és másik hozzáadása\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"Mentés és a szerkesztés folytatása\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\"Először adjon meg egy felhasználói nevet és egy jelszót. Ezek után további \"\n\"módosításokat is végezhet a felhasználó adatain.\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"Írjon be egy felhasználónevet és jelszót.\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"\"\n\"Adjon meg egy új jelszót <strong>%(username)s</strong> nevű felhasználónak.\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"Jelszó\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"Jelszó újra\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Írja be a fenti jelszót ellenőrzés céljából.\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"Törlés\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"Újabb %(verbose_name)s hozzáadása\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"Törli?\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"Köszönjük hogy egy kis időt eltöltött ma a honlapunkon.\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"Jelentkezzen be újra\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"Jelszó megváltoztatása\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"Sikeres jelszóváltoztatás\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"Megváltozott a jelszava.\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"Írja be a régi jelszavát biztonsági okokból, majd az újat kétszer, hogy \"\n\"biztosan ne gépelje el.\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"Régi jelszó\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"Új jelszó\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"Jelszavam megváltoztatása\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"Jelszó beállítása\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"Jelszó beállítása kész\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"Jelszava beállításra került.  Most már bejelentkezhet.\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"Jelszó beállítás megerősítése\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"Írja be az új jelszavát\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"\"\n\"Írja be az új jelszavát kétszer, hogy megbizonyosodhassunk annak \"\n\"helyességéről.\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"Új jelszó:\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"Jelszó megerősítése:\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"Jelszó beállítása sikertelen\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\"A jelszóbeállító link érvénytelen. Ennek egyik oka az lehet, hogy már \"\n\"felhasználták.  Kérem indítson új jelszóbeállítást.\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"Sikeres jelszótörlés\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"Kérjük látogassa meg a következő oldalt, és válasszon egy új jelszót:\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"Felhasználóneve, ha elfelejtette volna:\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"Köszönjük, hogy használta honlapunkat!\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"%(site_name)s csapat\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"Jelszavam törlése\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"Minden dátum\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"(nincs)\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"%s kiválasztása\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"Válasszon ki egyet a módosításhoz (%s)\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/hu/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Attila Nagy <>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# János Péter Ronkay <transifex@hangya.net>, 2011.\n# Máté Őry <orymate@iit.bme.hu>, 2012.\n# Szilveszter Farkas <szilveszter.farkas@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-06-29 19:35+0000\\n\"\n\"Last-Translator: Máté Őry <orymate@iit.bme.hu>\\n\"\n\"Language-Team: Hungarian (http://www.transifex.com/projects/p/django/\"\n\"language/hu/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: hu\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"Elérhető %s\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Ez az elérhető %s listája. Úgy választhat közülük, hogy rákattint az alábbi \"\n\"dobozban, és megnyomja a dobozok közti \\\"Választás\\\" nyilat.\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"Írjon a mezőbe az elérhető %s szűréséhez.\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"Szűrő\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"Mindet kijelölni\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"Kattintson az összes %s kiválasztásához.\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"Választás\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"Eltávolítás\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"%s kiválasztva\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Ez a kiválasztott %s listája. Eltávolíthat közülük, ha rákattint, majd a két \"\n\"doboz közti \\\"Eltávolítás\\\" nyílra kattint.\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"Összes törlése\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"Kattintson az összes %s eltávolításához.\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"%(sel)s/%(cnt)s kijelölve\"\nmsgstr[1] \"%(sel)s/%(cnt)s kijelölve\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\"Még el nem mentett módosításai vannak egyes szerkeszthető mezőkön. Ha most \"\n\"futtat egy műveletet, akkor a módosítások elvesznek.\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\"Kiválasztott egy műveletet, de nem mentette az egyes mezőkhöz kapcsolódó \"\n\"módosításait. Kattintson az OK gombra a mentéshez. Újra kell futtatnia az \"\n\"műveletet.\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\"Kiválasztott egy műveletet, és nem módosított egyetlen mezőt sem. \"\n\"Feltehetően a Mehet gombot keresi a Mentés helyett.\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"\"\n\"január február március április május június július augusztus szeptember \"\n\"október november december\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"V H K Sz Cs P Szo\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"Mutat\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"Elrejt\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"Most\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"Óra\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"Válassza ki az időt\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"Éjfél\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"Reggel 6 óra\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"Dél\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"Mégsem\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"Ma\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"Naptár\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"Tegnap\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"Holnap\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/ia/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Martijn Dekker <mcdutchie@hotmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:52+0000\\n\"\n\"Last-Translator: Ramiro Morales <cramm0@gmail.com>\\n\"\n\"Language-Team: Interlingua (http://www.transifex.com/projects/p/django/\"\n\"language/ia/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ia\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"%(count)d %(items)s delite con successo.\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"Non pote deler %(name)s\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"Es tu secur?\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"Deler le %(verbose_name_plural)s seligite\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"Totes\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"Si\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"No\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"Incognite\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"Omne data\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"Hodie\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"Ultime 7 dies\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"Iste mense\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"Iste anno\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"Per favor aperi session de novo, perque tu session ha expirate.\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"Action:\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"hora de action\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"id de objecto\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"repr de objecto\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"marca de action\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"message de cambio\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"entrata de registro\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"entratas de registro\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"\\\"%(object)s\\\" addite.\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"\\\"%(object)s\\\" cambiate - %(changes)s\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"\\\"%(object)s\\\" delite.\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"Objecto LogEntry\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"Nulle\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"%s cambiate.\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"e\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"%(name)s \\\"%(object)s\\\" addite.\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"%(list)s cambiate pro %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"%(name)s \\\"%(object)s\\\" delite.\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"Nulle campo cambiate.\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"\"\n\"Le %(name)s \\\"%(obj)s\\\" ha essite addite con successo. Tu pote modificar lo \"\n\"de novo hic infra.\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"Le %(name)s \\\"%(obj)s\\\" ha essite addite con successo.\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"Le %(name)s \\\"%(obj)s\\\" ha essite cambiate con successo.\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\"Es necessari seliger elementos pro poter exequer actiones. Nulle elemento ha \"\n\"essite cambiate.\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"Nulle action seligite.\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"Adder %s\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"Le objecto %(name)s con le clave primari %(key)r non existe.\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"Cambiar %s\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"Error in le base de datos\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"%(count)s %(name)s cambiate con successo.\"\nmsgstr[1] \"%(count)s %(name)s cambiate con successo.\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"%(total_count)s seligite\"\nmsgstr[1] \"Tote le %(total_count)s seligite\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"0 de %(cnt)s seligite\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"Le %(name)s \\\"%(obj)s\\\" ha essite delite con successo.\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"Historia de cambiamentos: %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"Aperir session\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"Administration del sito\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"Administration de %s\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"Data:\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"Hora:\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"Recerca\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"Adder un altere\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"Pagina non trovate\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"Regrettabilemente, le pagina requestate non poteva esser trovate.\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"Initio\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"Error del servitor\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"Error del servitor (500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"Error del servitor <em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"Exequer le action seligite\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"Va\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"Clicca hic pro seliger le objectos in tote le paginas\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"Seliger tote le %(total_count)s %(module_name)s\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"Rader selection\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"Benvenite,\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"Documentation\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"Cambiar contrasigno\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"Clauder session\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"Administration del sito Django\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"Administration de Django\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"Adder\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"Historia\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"Vider in sito\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"Per favor corrige le error sequente.\"\nmsgstr[1] \"Per favor corrige le errores sequente.\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"Adder %(name)s\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"Filtro\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"Remover del ordination\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"Prioritate de ordination: %(priority_number)s\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"Alternar le ordination\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"Deler\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"Deler le %(object_name)s '%(escaped_object)s' resultarea in le deletion de \"\n\"objectos associate, me tu conto non ha le permission de deler objectos del \"\n\"sequente typos:\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\"Deler le %(object_name)s '%(escaped_object)s' necessitarea le deletion del \"\n\"sequente objectos associate protegite:\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\"Es tu secur de voler deler le %(object_name)s \\\"%(escaped_object)s\\\"? Tote \"\n\"le sequente objectos associate essera delite:\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"Si, io es secur\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"Deler plure objectos\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\"Deler le %(objects_name)s seligite resultarea in le deletion de objectos \"\n\"associate, ma tu conto non ha le permission de deler objectos del sequente \"\n\"typos:\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\"Deler le %(objects_name)s seligite necessitarea le deletion del sequente \"\n\"objectos associate protegite:\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\"Es tu secur de voler deler le %(objects_name)s seligite? Tote le sequente \"\n\"objectos e le objectos associate a illo essera delite:\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \" Per %(filter_title)s \"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"Cambiar\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"Tu non ha le permission de modificar alcun cosa.\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"Actiones recente\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"Mi actiones\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"Nihil disponibile\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"Contento incognite\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"Il ha un problema con le installation del base de datos. Assecura te que le \"\n\"tabellas correcte ha essite create, e que le base de datos es legibile pro \"\n\"le usator appropriate.\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"Contrasigno:\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"Contrasigno o nomine de usator oblidate?\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"Data/hora\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"Usator\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"Action\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\"Iste objecto non ha un historia de cambiamentos. Illo probabilemente non \"\n\"esseva addite per medio de iste sito administrative.\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"Monstrar toto\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"Salveguardar\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"Cercar\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"%(counter)s resultato\"\nmsgstr[1] \"%(counter)s resultatos\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"%(full_result_count)s in total\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"Salveguardar como nove\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"Salveguardar e adder un altere\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"Salveguardar e continuar le modification\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\"Primo, specifica un nomine de usator e un contrasigno. Postea, tu potera \"\n\"modificar plus optiones de usator.\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"Specifica un nomine de usator e un contrasigno.\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"\"\n\"Specifica un nove contrasigno pro le usator <strong>%(username)s</strong>.\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"Contrasigno\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"Contrasigno (repete)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Scribe le mesme contrasigno que antea, pro verification.\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"Remover\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"Adder un altere %(verbose_name)s\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"Deler?\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"Gratias pro haber passate un tempore agradabile con iste sito web.\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"Aperir session de novo\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"Cambio de contrasigno\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"Contrasigno cambiate con successo\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"Tu contrasigno ha essite cambiate.\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"Per favor specifica tu ancian contrasigno, pro securitate, e postea \"\n\"specifica tu nove contrasigno duo vices pro verificar que illo es scribite \"\n\"correctemente.\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"Ancian contrasigno\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"Nove contrasigno\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"Cambiar mi contrasigno\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"Reinitialisar contrasigno\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"Contrasigno reinitialisate con successo\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"Tu contrasigno ha essite reinitialisate. Ora tu pote aperir session.\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"Confirmation de reinitialisation de contrasigno\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"Specifica nove contrasigno\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"\"\n\"Per favor scribe le nove contrasigno duo vices pro verificar que illo es \"\n\"scribite correctemente.\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"Nove contrasigno:\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"Confirma contrasigno:\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"Reinitialisation de contrasigno fallite\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\"Le ligamine pro le reinitialisation del contrasigno esseva invalide, forsan \"\n\"perque illo ha jam essite usate. Per favor submitte un nove demanda de \"\n\"reinitialisation del contrasigno.\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"Contrasigno reinitialisate con successo\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"Per favor va al sequente pagina pro eliger un nove contrasigno:\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"Tu nomine de usator, in caso que tu lo ha oblidate:\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"Gratias pro usar nostre sito!\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"Le equipa de %(site_name)s\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"Reinitialisar mi contrasigno\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"Tote le datas\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"(Nulle)\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"Selige %s\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"Selige %s a modificar\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/ia/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Martijn Dekker <mcdutchie@hotmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-04-27 21:43+0000\\n\"\n\"Last-Translator: Martijn Dekker <mcdutchie@hotmail.com>\\n\"\n\"Language-Team: Interlingua (http://www.transifex.com/projects/p/django/\"\n\"language/ia/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ia\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"%s disponibile\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Ecce le lista de %s disponibile. Tu pote seliger alcunes in le quadro \"\n\"sequente; postea clicca le flecha \\\"Seliger\\\" inter le duo quadros.\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"Scribe in iste quadro pro filtrar le lista de %s disponibile.\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"Filtrar\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"Seliger totes\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"Clicca pro seliger tote le %s immediatemente.\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"Seliger\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"Remover\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"Le %s seligite\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Ecce le lista de %s seligite. Tu pote remover alcunes per seliger los in le \"\n\"quadro sequente e cliccar le flecha \\\"Remover\\\" inter le duo quadros.\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"Remover totes\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"Clicca pro remover tote le %s seligite immediatemente.\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"%(sel)s de %(cnt)s seligite\"\nmsgstr[1] \"%(sel)s de %(cnt)s seligite\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\"Il ha cambiamentos non salveguardate in certe campos modificabile. Si tu \"\n\"exeque un action, iste cambiamentos essera perdite.\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\"Tu ha seligite un action, ma tu non ha salveguardate le cambiamentos in \"\n\"certe campos. Per favor clicca OK pro salveguardar los. Tu debera re-exequer \"\n\"le action.\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\"Tu ha seligite un action, e tu non ha facite cambiamentos in alcun campo. Tu \"\n\"probabilemente cerca le button Va e non le button Salveguardar.\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"\"\n\"Januario Februario Martio April Maio Junio Julio Augusto Septembre Octobre \"\n\"Novembre Decembre\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"D L M M J V S\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"Monstrar\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"Celar\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"Ora\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"Horologio\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"Selige un hora\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"Medienocte\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"6 a.m.\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"Mediedie\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"Cancellar\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"Hodie\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"Calendario\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"Heri\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"Deman\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/id/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# rodin <romihardiyanto@gmail.com>, 2011.\n#  <romihardiyanto@gmail.com>, 2013.\n#   <romihardiyanto@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-02-20 12:10+0000\\n\"\n\"Last-Translator: rodin <romihardiyanto@gmail.com>\\n\"\n\"Language-Team: Indonesian (http://www.transifex.com/projects/p/django/\"\n\"language/id/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: id\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"Sukes menghapus %(count)d %(items)s.\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"Tidak dapat menghapus %(name)s\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"Yakin?\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"Hapus %(verbose_name_plural)s yang dipilih\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"Semua\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"Ya\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"Tidak\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"Tidak diketahui\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"Kapanpun\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"Hari ini\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"Tujuh hari terakhir\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"Bulan ini\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"Tahun ini\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"Anda harus mengulangi proses masuk karena sesi Anda telah habis.\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"Aksi:\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"waktu aksi\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"id objek\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"representasi objek\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"jenis aksi\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"ganti pesan\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"entri pencatatan\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"entri pencatatan\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"\\\"%(object)s\\\" ditambahkan.\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"\\\"%(object)s\\\" diubah - %(changes)s\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"\\\"%(object)s\\\" dihapus.\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"Objek LogEntry\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"None\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"%s diubah\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"dan\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"%(name)s \\\"%(object)s\\\" ditambahkan.\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"%(list)s untuk %(name)s \\\"%(object)s\\\" diubah.\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"%(name)s \\\"%(object)s\\\" dihapus.\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"Tidak ada bidang yang berubah.\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" berhasil ditambahkan. Anda dapat mengeditnya lagi di \"\n\"bawah ini.\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" berhasil ditambahkan.\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" berhasil diubah.\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\"Objek harus dipilih sebelum dimanipulasi. Tidak ada objek yang berubah.\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"Tidak ada aksi yang dipilih.\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"Tambahkan %s\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"Objek %(name)s dengan kunci utama %(key)r tidak ada.\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"Ubah %s\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"Galat basis data\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"%(count)s %(name)s berhasil diubah.\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"%(total_count)s dipilih\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"0 dari %(cnt)s dipilih\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" berhasil dihapus.\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"Ubah riwayat: %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"Masuk\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"Administrasi situs\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"Administrasi %s\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"Tanggal:\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"Waktu:\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"Cari\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"Tambah Lagi\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"Laman tidak ditemukan\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"Maaf, laman yang Anda minta tidak ditemukan.\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"Beranda\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"Galat server\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"Galat server (500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"Galat Server <em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\"Galat terjadi dan telah dilaporkan ke administrator situs lewat email untuk \"\n\"diperbaiki. Terima kasih atas pengertiannya.\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"Jalankan aksi terpilih\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"Buka\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"Klik di sini untuk memilih semua objek pada semua laman\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"Pilih seluruh %(total_count)s %(module_name)s\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"Bersihkan pilihan\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"Selamat datang,\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"Dokumentasi\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"Ganti sandi\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"Keluar\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"Admin situs Django\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"Administrasi Django\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"Tambah\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"Riwayat\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"Lihat di situs\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"Perbaiki galat di bawah ini.\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"Tambahkan %(name)s\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"Filter\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"Dihapus dari pengurutan\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"Prioritas pengurutan: %(priority_number)s\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"Ubah pengurutan\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"Hapus\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"Menghapus %(object_name)s '%(escaped_object)s' akan menghapus objek lain \"\n\"yang terkait, tetapi akun Anda tidak memiliki izin untuk menghapus objek \"\n\"dengan tipe berikut:\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\"Menghapus %(object_name)s '%(escaped_object)s' memerlukan penghapusan objek \"\n\"terlindungi yang terkait sebagai berikut:\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\"Yakin ingin menghapus %(object_name)s \\\"%(escaped_object)s\\\"? Semua objek \"\n\"lain yang terkait juga akan dihapus:\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"Ya, tentu saja\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"Hapus beberapa objek sekaligus\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\"Menghapus %(objects_name)s terpilih akan menghapus objek yang terkait, \"\n\"tetapi akun Anda tidak memiliki izin untuk menghapus objek dengan tipe \"\n\"berikut:\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\"Menghapus %(objects_name)s terpilih memerlukan penghapusan objek terlindungi \"\n\"yang terkait sebagai berikut:\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\"Yakin akan menghapus %(objects_name)s terpilih? Semua objek berikut beserta \"\n\"objek terkait juga akan dihapus:\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \" Berdasarkan %(filter_title)s \"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"Model pada aplikasi %(name)s\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"Ubah\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"Anda tidak memiliki izin untuk mengubah apapun.\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"Aktivitas Terbaru\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"Aktivitas Saya\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"Tidak ada yang tersedia\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"Konten tidak diketahui\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"Ada masalah dengan instalasi basis data Anda. Pastikan tabel yang sesuai \"\n\"pada basis data telah dibuat dan dapat dibaca oleh pengguna yang benar.\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"Sandi:\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"Lupa nama pengguna atau sandi?\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"Tanggal/waktu\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"Pengguna\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"Aksi\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\"Objek ini tidak memiliki riwayat perubahan. Kemungkinan objek ini tidak \"\n\"ditambahkan melalui situs administrasi ini.\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"Tampilkan semua\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"Simpan\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"Cari\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"%(counter)s buah\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"%(full_result_count)s total\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"Simpan sebagai baru\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"Simpan dan tambahkan lagi\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"Simpan dan terus mengedit\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\"Pertama-tama, masukkan nama pengguna dan sandi. Anda akan dapat mengubah \"\n\"opsi pengguna lain setelah itu.\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"Masukkan nama pengguna dan sandi.\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"Masukkan sandi baru untuk pengguna <strong>%(username)s</strong>.\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"Sandi\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"Sandi (ulangi)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Masukkan sandi yang sama dengan di atas, untuk verifikasi.\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"Hapus\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"Tambahkan %(verbose_name)s lagi\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"Hapus?\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"Terima kasih telah menggunakan situs ini hari ini.\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"Masuk kembali\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"Ubah sandi\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"Sandi berhasil diubah\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"Sandi Anda telah diubah.\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"Dengan alasan keamanan, masukkan sandi lama Anda dua kali untuk memastikan \"\n\"Anda tidak salah mengetikkannya.\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"Sandi lama\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"Sandi baru\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"Ubah sandi saya\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"Setel ulang sandi\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"Sandi telah disetel ulang\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"Sandi Anda telah diperbarui. Silakan masuk.\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"Konfirmasi penyetelan ulang sandi\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"Masukkan sandi baru\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"\"\n\"Masukkan sandi baru dua kali untuk memastikan Anda tidak salah \"\n\"mengetikkannya.\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"Sandi baru:\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"Konfirmasi sandi:\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"Penyetelan ulang sandi gagal\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\"Tautan penyetelan ulang sandi tidak valid. Kemungkinan karena tautan \"\n\"tersebut telah dipakai sebelumnya. Ajukan permintaan penyetelan sandi sekali \"\n\"lagi.\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"Penyetelan ulang sandi berhasil\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\"Kami telah mengirimkan email berisi petunjuk untuk menyetel ulang sandi pada \"\n\"alamat email yang Anda masukkan. Petunjuknya akan sampai dalam beberapa saat.\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\"Anda menerima email ini karena Anda meminta penyetelan ulang sandi untuk \"\n\"akun pengguna di %(site_name)s.\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"Kunjungi laman di bawah ini dan ketikkan sandi baru:\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"Nama pengguna Anda, jika lupa:\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"Terima kasih telah menggunakan situs kami!\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"Tim %(site_name)s\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\"Lupa sandinya? Masukkan alamat email Anda di bawah ini agar kami dapat \"\n\"mengirimkan petunjuk untuk menyetel ulang sandinya.\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"Alamat email:\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"Setel ulang sandi saya\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"Semua tanggal\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"(Tidak ada)\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"Pilih %s\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"Pilih %s untuk diubah\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/id/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# rodin <romihardiyanto@gmail.com>, 2011.\n#   <romihardiyanto@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-03-08 10:42+0000\\n\"\n\"Last-Translator: rodin <romihardiyanto@gmail.com>\\n\"\n\"Language-Team: Indonesian (http://www.transifex.com/projects/p/django/\"\n\"language/id/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: id\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"%s yang tersedia\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Berikut adalah daftar %s yang tersedia. Anda dapat memilih satu atau lebih \"\n\"dengan memilihnya pada kotak di bawah, lalu mengeklik tanda panah \\\"Pilih\\\" \"\n\"di antara kedua kotak.\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"Ketik pada kotak ini untuk menyaring daftar %s yang tersedia.\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"Filter\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"Pilih semua\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"Pilih untuk memilih seluruh %s sekaligus.\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"Pilih\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"Hapus\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"%s terpilih\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Berikut adalah daftar %s yang terpilih. Anda dapat menghapus satu atau lebih \"\n\"dengan memilihnya pada kotak di bawah, lalu mengeklik tanda panah \\\"Hapus\\\" \"\n\"di antara kedua kotak.\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"Hapus semua\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"Klik untuk menghapus semua pilihan %s sekaligus.\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"%(sel)s dari %(cnt)s terpilih\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\"Beberapa perubahan bidang yang Anda lakukan belum tersimpan. Perubahan yang \"\n\"telah dilakukan akan hilang.\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\"Anda telah memilih sebuah aksi, tetapi belum menyimpan perubahan ke bidang \"\n\"yang ada. Klik OK untuk menyimpan perubahan ini. Anda akan perlu mengulangi \"\n\"aksi tersebut kembali.\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\"Anda telah memilih sebuah aksi, tetapi belum mengubah bidang apapun. \"\n\"Kemungkinan Anda mencari tombol Buka dan bukan tombol Simpan.\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"\"\n\"Januari Februari Maret April Mei Juni Juli Agustus September Oktober \"\n\"November Desember\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"M S S R K J S\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"Bentangkan\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"Ciutkan\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"Sekarang\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"Jam\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"Pilih waktu\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"Tengah malam\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"6 pagi\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"Siang\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"Batal\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"Hari ini\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"Kalender\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"Kemarin\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"Besok\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/is/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Hafsteinn Einarsson <haffi67@gmail.com>, 2011, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:52+0000\\n\"\n\"Last-Translator: Ramiro Morales <cramm0@gmail.com>\\n\"\n\"Language-Team: Icelandic (http://www.transifex.com/projects/p/django/\"\n\"language/is/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: is\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"Eyddi %(count)d %(items)s.\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"Get ekki eytt %(name)s\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"Ertu viss?\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"Eyða völdum %(verbose_name_plural)s\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"Allt\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"Já\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"Nei\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"Óþekkt\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"Allar dagsetningar\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"Dagurinn í dag\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"Síðustu 7 dagar\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"Þessi mánuður\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"Þetta ár\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"Vinsamlegast skráðu þig inn aftur vegna þess að setan þín rann út. \"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"Aðgerð:\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"tími aðgerðar\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"kenni hlutar\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"framsetning hlutar\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"aðgerðarveifa\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"breyta skilaboði\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"kladdafærsla\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"kladdafærslur\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"\\\"%(object)s\\\" bætt við.\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"Breytti \\\"%(object)s\\\" - %(changes)s\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"Eyddi \\\"%(object)s.\\\"\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"LogEntry hlutur\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"Ekkert\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"Breytti %s.\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"og\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Bætti við %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Breytti %(list)s fyrir %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Eyddi %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"Engum reitum breytt.\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"\"\n\"%(name)s „%(obj)s“ hefur verið bætt við. Þú getur breytt því aftur að neðan.\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"%(name)s „%(obj)s“ var bætt við.\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"%(name)s „%(obj)s“ hefur verið breytt.\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\"Hlutir verða að vera valdir til að framkvæma aðgerðir á þeim. Engu hefur \"\n\"verið breytt.\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"Engin aðgerð valin.\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"Bæta við %s\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"%(name)s hlutur með lykilinn %(key)r er ekki til.\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"Breyta %s\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"Gagnagrunnsvilla\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"%(count)s %(name)s var breytt.\"\nmsgstr[1] \"%(count)s %(name)s var breytt.\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"Allir %(total_count)s  valdir\"\nmsgstr[1] \"Allir %(total_count)s  valdir\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"0 af %(cnt)s valin\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"%(name)s „%(obj)s“ var eytt.\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"Breytingarsaga: %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"Skrá inn\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"Vefstjóri\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"%s vefstjórn\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"Dagsetning:\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"Tími:\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"Fletta upp\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"Bæta við öðru\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"Síða fannst ekki\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"Því miður fannst umbeðin síða ekki.\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"Heim\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"Kerfisvilla\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"Kerfisvilla (500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"Kerfisvilla <em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"Keyra valda aðgerð\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"Áfram\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"Smelltu hér til að velja alla hluti\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"Velja alla %(total_count)s %(module_name)s\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"Hreinsa val\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"Velkomin(n),\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"Skjölun\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"Breyta lykilorði\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"Skrá út\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"Django vefstjóri\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"Django vefstjórn\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"Bæta við\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"Saga\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"Skoða á vef\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"Vinsamlegast leiðréttu villuna hér að neðan:\"\nmsgstr[1] \"Vinsamlegast leiðréttu villurnar hér að neðan:\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"Bæta við %(name)s\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"Sía\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"Taka úr röðun\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"Forgangur röðunar: %(priority_number)s\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"Röðun af/á\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"Eyða\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"Eyðing á %(object_name)s „%(escaped_object)s“ hefði í för með sér eyðingu á \"\n\"tengdum hlutum en þú hefur ekki réttindi til að eyða eftirfarandi hlutum:\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\"Að eyða %(object_name)s  ' %(escaped_object)s ' þyrfti að eyða eftirfarandi \"\n\"tengdum hlutum:\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\"Ertu viss um að þú viljir eyða %(object_name)s „%(escaped_object)s“? Öllu \"\n\"eftirfarandi verður eytt:\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"Já ég er viss.\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"Eyða mörgum hlutum.\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\"Að eyða völdu %(objects_name)s leiðir til þess að skyldum hlutum er eytt, en \"\n\"þinn aðgangur hefur ekki réttindi til að eyða eftirtöldum hlutum:\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\"Að eyða völdum %(objects_name)s myndi leiða til þess að eftirtöldum skyldum \"\n\"hlutum yrði eytt:\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\"Ertu viss um að þú viljir eyða völdum %(objects_name)s? Öllum eftirtöldum \"\n\"hlutum og skyldum hlutum verður eytt:\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \" Eftir %(filter_title)s \"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"Breyta\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"Þú hefur ekki réttindi til að breyta neinu\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"Nýlegar aðgerðir\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"Mínar aðgerðir\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"Engin fáanleg\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"Óþekkt innihald\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"Eitthvað er að gagnagrunnsuppsetningu. Gakktu úr skuggum um að allar töflur \"\n\"séu til staðar og að notandinn hafi aðgang að grunninum.\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"Lykilorð:\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"Gleymt notandanafn eða lykilorð?\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"Dagsetning/tími\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"Notandi\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"Aðgerð\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\"Þessi hlutur hefur enga breytingasögu. Hann var líklega ekki búinn til á \"\n\"þessu stjórnunarsvæði.\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"Sýna allt\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"Vista\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"Leita\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"%(counter)s niðurstaða\"\nmsgstr[1] \"%(counter)s niðurstöður\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"%(full_result_count)s í heildina\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"Vista sem nýtt\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"Vista og búa til nýtt\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"Vista og halda áfram að breyta\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\"Fyrst, settu inn notendanafn og lykilorð. Svo geturðu breytt öðrum \"\n\"notendamöguleikum.\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"Sláðu inn notandanafn og lykilorð.\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"Settu inn nýtt lykilorð fyrir notandann <strong>%(username)s</strong>.\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"Lykilorð\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"Lykilorð (aftur)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Settu inn sama lykilorðið aftur til staðfestingar.\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"Fjarlægja\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"Bæta við öðrum %(verbose_name)s\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"Eyða?\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"Takk fyrir að verja tíma í vefsíðuna í dag.\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"Skráðu þig inn aftur\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"Breyta lykilorði\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"Breyting á lykilorði tókst\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"Lykilorði þínu var breytt\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"Vinsamlegast skrifaðu gamla lykilorðið þitt til öryggis. Sláðu svo nýja \"\n\"lykilorðið tvisvar inn svo að hægt sé að ganga úr skugga um að þú hafir ekki \"\n\"gert innsláttarvillu.\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"Gamalt lykilorð\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"Nýtt lykilorð\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"Breyta lykilorðinu mínu\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"Endurstilla lykilorð\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"Endurstilling lykilorðs tókst\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"Lykilorðið var endurstillt. Þú getur núna skráð þig inn á vefsvæðið.\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"Staðfesting endurstillingar lykilorðs\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"Settu inn nýtt lykilorð\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"\"\n\"Vinsamlegast settu inn nýja lykilorðið tvisvar til að forðast \"\n\"innsláttarvillur.\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"Nýtt lykilorð:\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"Staðfestu lykilorð:\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"Endurstilling á lykilorði mistókst\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\"Endurstilling lykilorðs tókst ekki. Slóðin var ógild. Hugsanlega hefur hún \"\n\"nú þegar verið notuð. Vinsamlegast biddu um nýja endurstillingu.\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"Endurstilling á lykilorði tókst\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"Vinsamlegast farðu á eftirfarandi síðu og veldu nýtt lykilorð:\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"Notandanafnið þitt ef þú skyldir hafa gleymt því:\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"Takk fyrir að nota vefinn okkar!\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"%(site_name)s hópurinn\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"Endursstilla lykilorðið mitt\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"Allar dagsetningar\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"(Ekkert)\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"Veldu %s\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"Veldu %s til að breyta\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/is/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <gudbergur@gmail.com>, 2012.\n# Hafsteinn Einarsson <haffi67@gmail.com>, 2011, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-03-20 00:23+0000\\n\"\n\"Last-Translator: gudbergur <gudbergur@gmail.com>\\n\"\n\"Language-Team: Icelandic (http://www.transifex.com/projects/p/django/\"\n\"language/is/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: is\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"Fáanleg %s\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Þetta er listi af því %s sem er í boði. Þú getur ákveðið hluti með því að \"\n\"velja þá í boxinu að neðan og ýta svo á \\\"Velja\\\" örina milli boxana tveggja.\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"Skrifaðu í boxið til að sía listann af því %s sem er í boði.\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"Sía\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"Velja öll\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"Smelltu til að velja allt %s í einu.\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"Veldu\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"Fjarlægja\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"Valin %s\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Þetta er listinn af völdu %s. Þú getur fjarlægt hluti með því að velja þá í \"\n\"boxinu að neðan og ýta svo á \\\"Eyða\\\" örina á milli boxana tveggja.\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"Eyða öllum\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"Smelltu til að fjarlægja allt valið %s í einu.\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \" %(sel)s  í %(cnt)s  valin\"\nmsgstr[1] \" %(sel)s  í %(cnt)s  valin\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\"Enn eru óvistaðar breytingar í reitum. Ef þú keyrir aðgerð munu breytingar \"\n\"ekki verða vistaðar.\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\"Þú hefur valið aðgerð en hefur ekki vistað breytingar á reitum. Vinsamlegast \"\n\"veldu 'Í lagi' til að vista. Þú þarft að endurkeyra aðgerðina.\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\"Þú hefur valið aðgerð en hefur ekki gert breytingar á reitum. Þú ert líklega \"\n\"að leita að 'Fara' hnappnum frekar en 'Vista' hnappnum.\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"\"\n\"janúar febrúar mars apríl maí júní júlí ágúst september október nóvember \"\n\"desember\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"S M Þ M F F L\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"Sýna\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"Fela\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"Núna\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"Klukka\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"Veldu tíma\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"Miðnætti\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"6 f.h.\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"Hádegi\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"Hætta við\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"Í dag\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"Dagatal\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"Í gær\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"Á morgun\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/it/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Denis Darii <sinednx@gmail.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Nicola Larosa <transifex@teknico.net>, 2011-2013.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 11:45+0000\\n\"\n\"Last-Translator: Nicola Larosa <transifex@teknico.net>\\n\"\n\"Language-Team: Italian (http://www.transifex.com/projects/p/django/language/\"\n\"it/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: it\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"Cancellati/e con successo %(count)d %(items)s.\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"Impossibile cancellare %(name)s \"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"Sei sicuro?\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"Cancella %(verbose_name_plural)s selezionati/e\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"Tutti\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"Sì\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"No\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"Sconosciuto\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"Qualsiasi data\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"Oggi\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"Ultimi 7 giorni\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"Questo mese\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"Quest'anno\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\"Inserisci %(username)s e password corretti per un account di staff. Nota che \"\n\"entrambi i campi distinguono maiuscole e minuscole.\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"Effettua di nuovo l'accesso, perché la tua sessione è scaduta.\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"Azione:\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"momento dell'azione\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"id dell'oggetto\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"rappr. dell'oggetto\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"flag di azione\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"messaggio di modifica\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"voce di log\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"voci di log\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"Aggiunto \\\"%(object)s\\\".\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"Cambiato \\\"%(object)s\\\" - %(changes)s\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"Cancellato \\\"%(object)s .\\\"\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"Oggetto LogEntry\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"Nessuno\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"%s modificato/a.\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"e\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Aggiunto/a %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Cambiato %(list)s per %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Cancellato/a %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"Nessun campo modificato.\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" aggiunto/a correttamente. Puoi modificare ancora qui \"\n\"sotto.\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" è stato inserito correttamente. Puoi aggiungere un \"\n\"altro %(name)s qui di seguito.\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" aggiunto/a correttamente.\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" è stato modificato correttamente. Puoi modificarlo di \"\n\"nuovo qui di seguito.\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" è stato modificato correttamente. Puoi aggiungere un \"\n\"altro %(name)s qui di seguito.\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" modificato/a correttamente.\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\"Occorre selezionare degli oggetti per potervi eseguire azioni. Nessun \"\n\"oggetto è stato cambiato.\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"Nessuna azione selezionata.\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"Aggiungi %s\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"L'oggetto %(name)s con chiave primaria %(key)r non esiste.\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"Modifica %s\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"Errore nel database\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"%(count)s %(name)s modificato/a correttamente.\"\nmsgstr[1] \"%(count)s %(name)s modificati/e correttamente.\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"%(total_count)s selezionato/a\"\nmsgstr[1] \"Tutti i %(total_count)s selezionati/e\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"0 di %(cnt)s selezionati/e\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" cancellato/a correttamente.\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"Tracciato delle modifiche: %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"Accedi\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"Amministrazione sito\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"Amministrazione %s\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"Data:\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"Ora:\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"Consultazione\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"Aggiungi un Altro\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"Attualmente:\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"Modifica:\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"Pagina non trovata\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"Spiacenti, ma la pagina richiesta non è stata trovata.\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"Pagina iniziale\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"Errore del server\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"Errore del server (500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"Errore del server <em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\"Si è verificato un errore. Gli amministratori del sito ne sono stati \"\n\"informati per email, e vi porranno rimedio a breve. Grazie per la pazienza.\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"Esegui l'azione selezionata\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"Vai\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"Clicca qui per selezionare gli oggetti da tutte le pagine.\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"Seleziona tutti/e %(total_count)s %(module_name)s\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"Annulla la selezione\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"Benvenuto/a,\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"Documentazione\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"Cambia la password\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"Annulla l'accesso\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"Ammin. sito Django\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"Amministrazione Django\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"Aggiungi\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"Storia\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"Vedi sul sito\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"Correggi l'errore qui sotto.\"\nmsgstr[1] \"Correggi gli errori qui sotto.\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"Aggiungi %(name)s\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"Filtra\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"Elimina dall'ordinamento\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"Priorità d'ordinamento: %(priority_number)s\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"Abilita/disabilita ordinamento\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"Cancella\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"La cancellazione di %(object_name)s '%(escaped_object)s' causerebbe la \"\n\"cancellazione di oggetti collegati, ma questo account non ha i permessi per \"\n\"cancellare gli oggetti dei seguenti tipi:\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\"La cancellazione di %(object_name)s '%(escaped_object)s' richiederebbe \"\n\"l'eliminazione dei seguenti oggetti protetti correlati:\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\"Sicuro di voler cancellare %(object_name)s \\\"%(escaped_object)s\\\"? Tutti i \"\n\"seguenti oggetti collegati verranno cancellati:\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"Sì, sono sicuro\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"Cancella più oggetti\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\"Cancellare %(objects_name)s selezionato/a comporterebbe l'eliminazione di \"\n\"oggetti correlati, ma il tuo account non dispone dell'autorizzazione a \"\n\"eliminare i seguenti tipi di oggetti:\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\"Cancellare %(objects_name)s selezionato/a richiederebbe l'eliminazione dei \"\n\"seguenti oggetti protetti correlati:\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\"Sei sicuro di voler cancellare %(objects_name)s? Tutti i seguenti oggetti e \"\n\"le loro voci correlate verranno cancellati:\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \" Per %(filter_title)s \"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"Modelli nell'applicazione %(name)s\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"Modifica\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"Non hai i privilegi per modificare alcunché.\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"Azioni Recenti\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"Azioni Proprie\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"Nessuna disponibile\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"Contenuto sconosciuto\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"Ci sono problemi nell'installazione del database. Assicurarsi che le tabelle \"\n\"appropriate del database siano state create, e che il database sia leggibile \"\n\"dall'utente appropriato.\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"Password:\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"Hai dimenticato la password o il nome utente?\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"Data/ora\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"Utente\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"Azione\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\"Questo oggetto non ha cambiamenti registrati. Probabilmente non è stato \"\n\"creato con questo sito di amministrazione.\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"Mostra tutto\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"Salva\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"Cerca\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"%(counter)s risultato\"\nmsgstr[1] \"%(counter)s risultati\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"%(full_result_count)s in tutto\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"Salva come nuovo\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"Salva e aggiungi un altro\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"Salva e continua le modifiche\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\"Inserisci innanzitutto nome utente e password. Potrai poi modificare le \"\n\"altre impostazioni dell'utente.\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"Inserisci il nome utente e password.\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"\"\n\"Inserisci una nuova password per l'utente <strong>%(username)s</strong>.\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"Password\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"Password (di nuovo)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Inserisci la stessa password inserita sopra, come verifica.\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"Elimina\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"Aggiungi un/a altro/a %(verbose_name)s.\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"Cancellare?\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"Grazie per aver speso il tuo tempo prezioso su questo sito oggi.\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"Accedi di nuovo\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"Cambio password\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"Cambio password avvenuto correttamente\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"La password è stata cambiata.\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"Inserisci la password attuale, per ragioni di sicurezza, e poi la nuova \"\n\"password due volte, per verificare di averla scritta correttamente.\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"Password attuale\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"Nuova password\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"Modifica la mia password\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"Reimposta la password\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"Password reimpostata\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"La tua password è stata impostata. Ora puoi effettuare l'accesso.\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"Conferma reimpostazione password\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"Inserisci la nuova password\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"\"\n\"Inserisci la nuova password due volte, per verificare di averla scritta \"\n\"correttamente.\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"Nuova password:\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"Conferma la password:\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"Password non reimpostata\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\"Il link per la reimpostazione della password non era valido, forse perché \"\n\"era già stato usato. Richiedi una nuova reimpostazione della password.\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"Password reimpostata correttamente\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\"Abbiamo inviato istruzioni per impostare la password all'indirizzo email che \"\n\"hai indicato. Dovresti riceverle a breve.\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\"Ricevi questa mail perché hai richiesto di reimpostare la password del tuo \"\n\"account utente presso %(site_name)s.\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"Vai alla pagina seguente e scegli una nuova password:\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"Il tuo nome utente, in caso tu l'abbia dimenticato:\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"Grazie per aver usato il nostro sito!\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"Il team di %(site_name)s\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\"Password dimenticata? Inserisci il tuo indirizzo email qui sotto, e ti \"\n\"invieremo istruzioni per impostarne una nuova.\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"Indirizzo email:\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"Reimposta la mia password\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"Tutte le date\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"(Nessuno)\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"Scegli %s\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"Scegli %s da modificare\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/it/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Denis Darii <sinednx@gmail.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Nicola Larosa <transifex@teknico.net>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-03-08 10:42+0000\\n\"\n\"Last-Translator: Nicola Larosa <transifex@teknico.net>\\n\"\n\"Language-Team: Italian (http://www.transifex.com/projects/p/django/language/\"\n\"it/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: it\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"%s disponibili\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Questa è la lista dei %s disponibili. Puoi sceglierne alcuni selezionandoli \"\n\"nella casella qui sotto e poi facendo clic sulla freccia \\\"Scegli\\\" tra le \"\n\"due caselle.\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"Scrivi in questa casella per filtrare l'elenco dei %s disponibili.\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"Filtro\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"Scegli tutto\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"Fai clic per scegliere tutti i %s in una volta.\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"Scegli\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"Elimina\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"%s scelti\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Questa è la lista dei %s scelti. Puoi eliminarne alcuni selezionandoli nella \"\n\"casella qui sotto e poi facendo clic sulla freccia \\\"Elimina\\\" tra le due \"\n\"caselle.\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"Elimina tutti\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"Fai clic per eliminare tutti i %s in una volta.\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"%(sel)s di %(cnt)s selezionato\"\nmsgstr[1] \"%(sel)s di %(cnt)s selezionati\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\"Hai delle modifiche in campi singoli. Se esegui un'azione, le modifiche non \"\n\"salvate andranno perse.\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\"Hai selezionato un'azione, ma non hai ancora salvato le modifiche apportate \"\n\"a campi singoli. Fai clic su OK per salvare. Poi dovrai ri-eseguire l'azione.\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\"Hai selezionato un'azione, e non hai ancora apportato alcuna modifica a \"\n\"campi singoli. Probabilmente stai cercando il pulsante Go, invece di Save.\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"\"\n\"gennaio febbraio marzo aprile maggio giugno luglio agosto settembre ottobre \"\n\"novembre dicembre\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"D L M M G V S\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"Mostra\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"Nascondi\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"Adesso\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"Orologio\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"Scegli un orario\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"Mezzanotte\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"6 del mattino\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"Mezzogiorno\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"Annulla\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"Oggi\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"Calendario\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"Ieri\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"Domani\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/ja/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Shinya Okano <tokibito@gmail.com>, 2012.\n# Tetsuya Morimoto <tetsuya.morimoto@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:52+0000\\n\"\n\"Last-Translator: Ramiro Morales <cramm0@gmail.com>\\n\"\n\"Language-Team: Japanese (http://www.transifex.com/projects/p/django/language/\"\n\"ja/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ja\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"%(count)d 個の %(items)sを削除しました。\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"%(name)s が削除できません\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"よろしいですか？\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"選択された %(verbose_name_plural)s の削除\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"全て\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"はい\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"いいえ\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"不明\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"いつでも\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"今日\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"過去 7 日間\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"今月\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"今年\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"\"\n\"再ログインしてください。ログインセッションが有効期間切れしてしまいました。\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"操作:\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"操作時刻\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"オブジェクト ID\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"オブジェクトの文字列表現\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"操作種別\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"変更メッセージ\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"ログエントリー\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"ログエントリー\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"\\\"%(object)s\\\" を追加しました。\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"\\\"%(object)s\\\" を変更しました - %(changes)s\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"\\\"%(object)s\\\"を削除しました。\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"ログエントリー オブジェクト\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"None\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"%s を変更しました。\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"と\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"%(name)s \\\"%(object)s\\\"を追加しました。\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"%(name)s \\\"%(object)s\\\" の %(list)s を変更しました。\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"%(name)s \\\"%(object)s\\\" を削除しました。\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"変更はありませんでした。\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" を追加しました。続けて編集できます。\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" を追加しました。\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" を変更しました。\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\"操作を実行するには、対象を選択する必要があります。何も変更されませんでした。\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"操作が選択されていません。\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"%s を追加\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"主キーが %(key)r である %(name)s オブジェクトは存在しません。\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"%s を変更\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"データベースエラー\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"%(count)s 個の %(name)s を変更しました。\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"%(total_count)s 個選択されました\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"%(cnt)s個の内ひとつも選択されていません\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" を削除しました。\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"変更履歴: %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"ログイン\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"サイト管理\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"%s サイト管理\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"日付:\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"時刻:\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"検索\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"追加\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"ページが見つかりません\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"申し訳ありませんが、お探しのページは見つかりませんでした。\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"ホーム\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"サーバーエラー\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"サーバーエラー (500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"サーバーエラー <em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"選択された操作を実行\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"実行\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"全ページの項目を選択するにはここをクリック\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"%(total_count)s個ある%(module_name)s を全て選択\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"選択を解除\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"ようこそ\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"ドキュメント\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"パスワードの変更\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"ログアウト\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"Django サイト管理\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"Django 管理サイト\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"追加\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"履歴\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"サイト上で表示\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"下記のエラーを修正してください。\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"%(name)s を追加\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"フィルター\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"ソート条件から外します\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"ソート優先順位: %(priority_number)s\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"昇順降順を切り替えます\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"削除\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"%(object_name)s '%(escaped_object)s' の削除時に関連づけられたオブジェクトも削\"\n\"除しようとしましたが、あなたのアカウントには以下のタイプのオブジェクトを削除\"\n\"するパーミッションがありません:\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\"%(object_name)s '%(escaped_object)s' を削除するには以下の保護された関連オブ\"\n\"ジェクトを削除することになります:\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\"%(object_name)s \\\"%(escaped_object)s\\\"を削除しますか？ 関連づけられている以下\"\n\"のオブジェクトも全て削除されます:\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"はい。\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"複数のオブジェクトを削除します\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\"選択した %(objects_name)s を削除すると関連するオブジェクトも削除しますが、あ\"\n\"なたのアカウントは以下のオブジェクト型を削除する権限がありません:\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\"選択した %(objects_name)s を削除すると以下の保護された関連オブジェクトを削除\"\n\"することになります:\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\"本当に選択した %(objects_name)s を削除しますか？ 以下の全てのオブジェクトと関\"\n\"連する要素が削除されます:\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \"%(filter_title)s で絞り込む\"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"変更\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"変更のためのパーミッションがありません。\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"最近行った操作\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"操作\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"利用不可\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"不明なコンテント\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"データベースの設定に問題があるようです。適切なテーブルが作られていること、適\"\n\"切なユーザーでデータベースのデータを読み込めることを確認してください。\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"パスワード:\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"パスワードまたはユーザー名を忘れましたか？\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"日付/時刻\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"ユーザー\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"操作\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\"このオブジェクトには変更履歴がありません。おそらくこの管理サイトで追加したも\"\n\"のではありません。\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"全件表示\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"保存\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"検索\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"結果 %(counter)s\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"全 %(full_result_count)s 件\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"新規保存\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"保存してもう一つ追加\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"保存して編集を続ける\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\"まずユーザー名とパスワードを登録してください。その後詳細情報が編集可能になり\"\n\"ます。\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"ユーザー名とパスワードを入力してください。\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"\"\n\"<strong>%(username)s</strong>さんの新しいパスワードを入力してください。\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"パスワード\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"パスワード(確認用)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"確認のため、再度パスワードを入力してください。\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"削除\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"%(verbose_name)s の追加\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"削除しますか?\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"ご利用ありがとうございました。\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"もう一度ログイン\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"パスワードの変更\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"パスワードを変更しました\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"あなたのパスワードは変更されました\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"セキュリティ上の理由から元のパスワードの入力が必要です。新しいパスワードは正\"\n\"しく入力したか確認できるように二度入力してください。\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"元のパスワード\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"新しいパスワード\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"パスワードの変更\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"パスワードをリセット\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"パスワードがリセットされました\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"パスワードがセットされました。ログインしてください。\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"パスワードリセットの確認\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"新しいパスワードを入力してください\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"確認のために、新しいパスワードを二回入力してください。\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"新しいパスワード:\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"新しいパスワード (確認用) :\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"パスワードのリセットに失敗しました\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\"パスワードリセットのリンクが不正です。おそらくこのリンクは既に使われていま\"\n\"す。もう一度パスワードリセットしてください。\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"パスワードをリセットしました\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"次のページで新しいパスワードを選んでください:\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"あなたのユーザー名 (念のため):\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"ご利用ありがとうございました！\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \" %(site_name)s チーム\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"パスワードをリセット\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"いつでも\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"(なし)\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"%s を選択\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"変更する %s を選択\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/ja/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Shinya Okano <tokibito@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-06-04 16:05+0000\\n\"\n\"Last-Translator: Yoichi Fujimoto <wozozo@gmail.com>\\n\"\n\"Language-Team: Japanese (http://www.transifex.com/projects/p/django/language/\"\n\"ja/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ja\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"利用可能 %s\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"これが使用可能な %s のリストです。下のボックスで項目を選択し、2つのボックス間\"\n\"の \\\"選択\\\"の矢印をクリックして、いくつかを選択することができます。\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"使用可能な %s のリストを絞り込むには、このボックスに入力します。\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"フィルター\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"全て選択\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"クリックするとすべての %s を選択します。\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"選択\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"削除\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"選択された %s\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"これが選択された %s のリストです。下のボックスで選択し、2つのボックス間の \"\n\"\\\"削除\\\"矢印をクリックして一部を削除することができます。\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"すべて削除\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"クリックするとすべての %s を選択から削除します。\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"%(cnt)s個中%(sel)s個選択\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\"フィールドに未保存の変更があります。操作を実行すると未保存の変更は失われま\"\n\"す。\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\"操作を選択しましたが、フィールドに未保存の変更があります。OKをクリックして保\"\n\"存してください。その後、操作を再度実行する必要があります。\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\"操作を選択しましたが、フィールドに変更はありませんでした。もしかして保存ボタ\"\n\"ンではなくて実行ボタンをお探しですか。\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"日 月 火 水 木 金 土\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"表示\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"非表示\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"現在\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"時計\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"時間を選択\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"0時\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"午前 6 時\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"12時\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"キャンセル\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"今日\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"カレンダー\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"昨日\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"明日\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/ka/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Translators:\n# André Bouatchidzé <a@anbz.net>, 2013.\n# avsd05 <avsd05@gmail.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-03-01 16:20+0000\\n\"\n\"Last-Translator: André Bouatchidzé <a@anbz.net>\\n\"\n\"Language-Team: Georgian (http://www.transifex.com/projects/p/django/language/\"\n\"ka/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ka\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"%(count)d %(items)s წარმატებით წაიშალა.\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"%(name)s ვერ იშლება\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"დარწმუნებული ხართ?\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"არჩეული %(verbose_name_plural)s-ის წაშლა\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"ყველა\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"კი\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"არა\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"გაურკვეველი\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"ნებისმიერი თარიღი\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"დღეს\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"ბოლო 7 დღე\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"მიმდინარე თვე\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"მიმდინარე წელი\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\"გთხოვთ, შეიყვანოთ სწორი %(username)s და პაროლი პერსონალის ანგარიშისთვის. \"\n\"იქონიეთ მხედველობაში, რომ ორივე ველი ითვალისწინებს მთავრულს.\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"გთხოვთ, შეხვიდეთ კიდევ ერთხელ, რადგანაც თქვენი სესიის დრო ამოიწურა.\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"მოქმედება:\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"მოქმედების დრო\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"ობიექტის id\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"ობიექტის წარმ.\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"მოქმედების დროშა\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"შეცვლის შეტყობინება\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"ლოგის ერთეული\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"ლოგის ერთეულები\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"დამატებულია \\\"%(object)s\\\".\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"შეცვლილია \\\"%(object)s\\\" - %(changes)s\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"წაშლილია \\\"%(object)s.\\\"\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"ჟურნალის ჩანაწერის ობიექტი\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"არცერთი\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"%s შეცვლილია.\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"და\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"დამატებულია %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"შეცვლილია %(list)s for %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"წაშლილია %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"არცერთი ველი არ შეცვლილა.\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" წარმატებით დაემატა. შეგიძლიათ განაგრძოთ მისი \"\n\"რედაქტირება.\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" წარმატებით იქნა დამატებული. თქვენ შეგიძლიათ დაამატოთ \"\n\"სხვა %(name)s ქვემოთ.\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" წარმატებით დაემატა.\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" წარმატებით შეიცვალა. თქვენ შეგიძლიათ ისევ დაარედაქტიროთ \"\n\"ის ქვემოთ.\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" წარმატებით შეიცვალა. თქვენ შეგიძლიათ დაამატოთ სხვა \"\n\"%(name)s ქვემოთ.\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" წარმატებით შეიცვალა.\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\"ობიექტებზე მოქმედებების შესასრულებლად ისინი არჩეული უნდა იყოს. არცერთი \"\n\"ობიექტი არჩეული არ არის.\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"მოქმედება არჩეული არ არის.\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"დავამატოთ %s\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"%(name)s-ის ობიექტი პირველადი გასაღებით %(key)r არ არსებობს.\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"შევცვალოთ %s\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"მონაცემთა ბაზის შეცდომა\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"%(count)s %(name)s წარმატებით შეიცვალა.\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"%(total_count)s-ია არჩეული\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"%(cnt)s-დან არცერთი არჩეული არ არის\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" წარმატებით წაიშალა.\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"ცვლილებების ისტორია: %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"შესვლა\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"საიტის ადმინისტრირება\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"%s ადმინისტრირება\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"თარიღი;\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"დრო:\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"ძიება\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"ახლის დამატება\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"ამჟამად:\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"შეცვლა:\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"გვერდი ვერ მოიძებნა\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"უკაცრავად, მოთხოვნილი გვერდი ვერ მოიძებნა.\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"საწყისი გვერდი\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"სერვერის შეცდომა\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"სერვერის შეცდომა (500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"სერვერის შეცდომა <em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\"მოხდა შეცდომა. ინფორმაცია მასზე გადაეცა საიტის ადმინისტრატორებს ელ. ფოსტით \"\n\"და ის უნდა შესწორდეს უმოკლეს ვადებში. გმადლობთ მოთმინებისთვის.\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"არჩეული მოქმედების შესრულება\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"გადასვლა\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"ყველა გვერდზე არსებული ობიექტის მოსანიშნად დააწკაპეთ აქ\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"ყველა %(total_count)s %(module_name)s-ის მონიშვნა\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"მონიშვნის გასუფთავება\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"კეთილი იყოს თქვენი მობრძანება,\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"დოკუმენტაცია\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"პაროლის შეცვლა\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"გამოსვლა\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"Django-ს ადმინისტრირების საიტი\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"Django-ს ადმინისტრირება\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"დამატება\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"ისტორია\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"წარმოდგენა საიტზე\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"გთხოვთ, გაასწოროთ შეცდომები.\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"დავამატოთ %(name)s\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"ფილტრი\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"დალაგებიდან მოშორება\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"დალაგების პრიორიტეტი: %(priority_number)s\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"დალაგების გადართვა\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"წავშალოთ\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"ობიექტების წაშლა: %(object_name)s '%(escaped_object)s' გამოიწვევს \"\n\"დაკავშირებული ობიექტების წაშლას, მაგრამ თქვენ არა გაქვთ შემდეგი ტიპების \"\n\"ობიექტების წაშლის უფლება:\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\"%(object_name)s ტიპის '%(escaped_object)s' ობიექტის წაშლა მოითხოვს ასევე \"\n\"შემდეგი დაკავშირებული ობიექტების წაშლას:\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\"ნამდვილად გსურთ, წაშალოთ %(object_name)s \\\"%(escaped_object)s\\\"? ყველა \"\n\"ქვემოთ მოყვანილი დაკავშირებული ობიექტი წაშლილი იქნება:\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"კი, ნამდვილად\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"რამდენიმე ობიექტის წაშლა\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\"%(objects_name)s ტიპის ობიექტის წაშლა ითხოვს ასევე შემდეგი ობიექტების \"\n\"წაშლას, მაგრამ თქვენ არ გაქვთ ამის ნებართვა:\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\"არჩეული %(objects_name)s ობიექტის წაშლა მოითხოვს ასევე შემდეგი დაცული \"\n\"დაკავშირეული ობიექტების წაშლას:\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\"დარწმუნებული ხართ, რომ გსურთ %(objects_name)s ობიექტის წაშლა? ყველა შემდეგი \"\n\"ობიექტი, და მათზე დამოკიდებული ჩანაწერები წაშლილი იქნება:\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \" %(filter_title)s მიხედვით \"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"მოდელები %(name)s აპლიკაციაში\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"შეცვლა\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"თქვენ არა გაქვთ რედაქტირების უფლება.\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"ბოლო მოქმედებები\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"ჩემი მოქმედებები\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"არ არის მისაწვდომი\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"უცნობი შიგთავსი\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"თქვენი მონაცემთა ბაზის ინსტალაცია არაკორექტულია. დარწმუნდით, რომ მონაცემთა \"\n\"ბაზის შესაბამისი ცხრილები შექმნილია, და მონაცემთა ბაზის წაკითხვა შეუძლია \"\n\"შესაბამის მომხმარებელს.\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"პაროლი:\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"დაგავიწყდათ თქვენი პაროლი ან მომხმარებლის სახელი?\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"თარიღი/დრო\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"მომხმარებელი\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"მოქმედება\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\"ამ ობიექტს ცვლილებების ისტორია არა აქვს. როგორც ჩანს, იგი არ იყო დამატებული \"\n\"ადმინისტრირების საიტის მეშვეობით.\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"ვაჩვენოთ ყველა\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"შევინახოთ\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"ძებნა\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"%(counter)s შედეგი\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"სულ %(full_result_count)s\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"შევინახოთ, როგორც ახალი\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"შევინახოთ და დავამატოთ ახალი\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"შევინახოთ და გავაგრძელოთ რედაქტირება\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\"ჯერ შეიყვანეთ მომხმარებლის სახელი და პაროლი. ამის შემდეგ თქვენ გექნებათ \"\n\"მომხმარებლის სხვა ოპციების რედაქტირების შესაძლებლობა.\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"შეიყვანეთ მომხმარებლის სახელი და პაროლი\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"\"\n\"შეიყვანეთ ახალი პაროლი მომხმარებლისათვის <strong>%(username)s</strong>.\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"პაროლი\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"პაროლი (განმეორებით)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"შეიყვანეთ იგივე პაროლი, დამოწმებისათვის.\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"წაშლა\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"კიდევ ერთი %(verbose_name)s-ის დამატება\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"წავშალოთ?\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"გმადლობთ, რომ დღეს ამ საიტთან მუშაობას დაუთმეთ დრო.\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"ხელახლა შესვლა\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"პაროლის შეცვლა\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"პაროლი წარმატებით შეიცვალა\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"თქვენი პაროლი შეიცვალა.\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"გთხოვთ, უსაფრთხოების დაცვის მიზნით, შეიყვანოთ თქვენი ძველი პაროლი, შემდეგ კი \"\n\"ახალი პაროლი ორჯერ, რათა დარწმუნდეთ, რომ იგი შეყვანილია სწორად.\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"ძველი პაროლი\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"ახალი პაროლი\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"შევცვალოთ ჩემი პაროლი\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"პაროლის აღდგენა\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"პაროლის აღდგენა დასრულებულია\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"\"\n\"თქვენი პაროლი დაყენებულია. ახლა შეგიძლიათ გადახვიდეთ შემდეგ გვერდზე და \"\n\"შეხვიდეთ სისტემაში.\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"პაროლი შეცვლის დამოწმება\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"შეიყვანეთ ახალი პაროლი:\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"\"\n\"გთხოვთ, შეიყვანეთ თქვენი ახალი პაროლი ორჯერ, რათა დავრწმუნდეთ, რომ იგი \"\n\"სწორად ჩაბეჭდეთ.\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"ახალი პაროლი:\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"პაროლის დამოწმება:\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"პაროლის აღდგენა წარუმატებლად დასრულდა\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\"პაროლის აღდგენის ბმული არასწორი იყო, შესაძლოა იმის გამო, რომ იგი უკვე ყოფილა \"\n\"გამოყენებული. გთხოვთ, კიდევ ერთხელ სცადოთ პაროლის აღდგენა.\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"პაროლის აღდგენა წარმატებით დასრულდა\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\"ჩვენ გამოვაგზავნეთ მითითებები პაროლის დასაყენებლად ელ. ფოსტის მისამართზე, \"\n\"რომელიც თქვენ შეიყვანეთ. თქვენ მალე უნდა მიიღოთ ისინი.\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\"თქვენ მიიღეთ ეს წერილი იმიტომ, რომ გააკეთეთ პაროლის თავიდან დაყენების \"\n\"მოთხოვნა თქვენი მომხმარებლის ანგარიშისთვის %(site_name)s-ზე.\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"გთხოვთ, გადახვიდეთ შემდეგ გვერდზე და აირჩიოთ ახალი პაროლი:\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"თქვენი მომხმარებლის სახელი (თუ დაგავიწყდათ):\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"გმადლობთ, რომ იყენებთ ჩვენს საიტს!\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"%(site_name)s საიტის გუნდი\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\"დაგავიწყდათ თქვენი პაროლი? შეიყვანეთ თქვენი ელ. ფოსტის მისამართი ქვემოთ და \"\n\"ჩვენ გამოგიგზავნით მითითებებს ახალი პაროლის დასაყენებლად.\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"ელ. ფოსტის მისამართი:\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"აღვადგინოთ ჩემი პაროლი\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"ყველა თარიღი\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"(არცერთი)\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"ავირჩიოთ %s\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"აირჩიეთ %s შესაცვლელად\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/ka/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Translators:\n# André Bouatchidzé <a@anbz.net>, 2013.\n# avsd05 <avsd05@gmail.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2013-03-01 11:40+0000\\n\"\n\"Last-Translator: André Bouatchidzé <a@anbz.net>\\n\"\n\"Language-Team: Georgian (http://www.transifex.com/projects/p/django/language/\"\n\"ka/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ka\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"მისაწვდომი %s\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"ეს არის მისაწვდომი %s-ის სია. ზოგიერთი მათგანის ასარჩევად,  მონიშვნით ისინი \"\n\"ქვედა სარკმელში და დააწკაპუნეთ  ორ სარკმელს შორის მდებარე ისარზე \\\"არჩევა\\\" .\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"აკრიფეთ ამ სარკმელში მისაწვდომი %s-ის სიის გასაფილტრად.\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"ფილტრი\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"ავირჩიოთ ყველა\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"დააწკაპუნეთ ერთდროულად ყველა %s-ის ასარჩევად.\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"არჩევა\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"წავშალოთ\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"არჩეული %s\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"ეს არის არჩეული %s-ის სია. ზოგიერთი მათგანის მოსაშორებლად,  მონიშვნით ისინი \"\n\"ქვედა სარკმელში და დააწკაპუნეთ  ორ სარკმელს შორის მდებარე ისარზე \\\"მოშორება\"\n\"\\\" .\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"ყველას მოშორება\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"დააწკაპუნეთ ყველა არჩეული %s-ის ერთდროულად მოსაშორებლად.\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"%(cnt)s-დან არჩეულია %(sel)s\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\"ცალკეულ ველებში შეუნახავი ცვლილებები გაქვთ! თუ მოქმედებას შეასრულებთ, \"\n\"შეუნახავი ცვლილებები დაიკარაგება.\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\"აგირჩევიათ მოქმედება, მაგრამ ცალკეული ველები ჯერ არ შეგინახიათ! გთხოვთ, \"\n\"შენახვისთვის დააჭიროთ OK. მოქმედების ხელახლა გაშვება მოგიწევთ.\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\"აგირჩევიათ მოქმედება, მაგრამ ცალკეულ ველებში ცვლილებები არ გაგიკეთებიათ! \"\n\"სავარაუდოდ, ეძებთ ღილაკს \\\"Go\\\", და არა \\\"შენახვა\\\"\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"\"\n\"იანვარი თებერვალი მარტი აპრილი მაისი ივნისი ივლისი აგვისტო სექტემბერი \"\n\"ოქტომბერი ნოემბერი დეკემბერი\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"კ ო ს ო ხ პ შ\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"ვაჩვენოთ\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"დავმალოთ\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"ახლა\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"საათი\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"ავირჩიოთ დრო\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"შუაღამე\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"დილის 6 სთ\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"შუადღე\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"უარი\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"დღეს\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"კალენდარი\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"გუშინ\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"ხვალ\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/kk/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <germanilyin@gmail.com>, 2011.\n# Nurlan Rakhimzhanov <nurlan.rakhimzhanov@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:52+0000\\n\"\n\"Last-Translator: Ramiro Morales <cramm0@gmail.com>\\n\"\n\"Language-Team: Kazakh (http://www.transifex.com/projects/p/django/language/\"\n\"kk/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: kk\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"Таңдалған %(count)d %(items)s элемент өшірілді.\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"%(name)s өшіре алмайды\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"Сенімдісіз бе?\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"Таңдалған %(verbose_name_plural)s өшірілді\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"Барлығы\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"Иә\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"Жоқ\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"Белгісіз\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"Кез келген күн\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"Бүгін\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"Өткен 7 күн\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"Осы ай\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"Осы жыл\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"Сіздің сессия уақытыңыз өтіп кентті, өтініш, қайты кіріп көріңіз,\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"Әрекет:\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"әрекет уақыты\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"объекттің id-i\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"объекттің repr-i\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"әрекет белгісі\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"хабарламаны өзгерту\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"Жорнал жазуы\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"Жорнал жазулары\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"Ешнәрсе\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"%s өзгертілді.\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"және\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"%(name)s \\\"%(object)s\\\" қосылды.\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"\\\"%(object)s\\\" %(name)s-нің %(list)s өзгертілді.\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"%(name)s \\\"%(object)s\\\" өшірілді.\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"Ешқандай толтырма өзгермеді.\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" сәтті қосылды. Оны төменде өзгерте аласыз.\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" сәтті қосылды.\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" сәтті өзгертілді.\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\"Бірнәрсені өзгерту үшін бірінші оларды таңдау керек. Ешнәрсе өзгертілмеді.\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"Ешқандай әрекет таңдалмады.\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"%s қосу\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"Бірінші кілті %(key)r бар %(name)s объекті жоқ.\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"%s өзгету\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"Мәліметтер базасының қатесі\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"\"\n\"one: %(count)s %(name)s өзгертілді.\\n\"\n\"\\n\"\n\"other: %(count)s %(name)s таңдалғандарының барі өзгертілді.\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"\"\n\"one: %(total_count)s таңдалды\\n\"\n\"\\n\"\n\"other: Барлығы %(total_count)s таңдалды\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"0 of %(cnt)s-ден 0 таңдалды\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" сәтті өшірілді.\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"Өзгерес тарихы: %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"Кіру\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"Сайт әкімшілігі\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"%s әкімшілігі\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"Күнтізбелік күн:\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"Уақыт:\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"Іздеу\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"Тағы қосу\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"Бет табылмады\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"Кешірім сұраймыз, сіздің сұраған бетіңіз табылмады.\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"Негізгі\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"Сервердің қатесі\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"Сервердің қатесі (500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"Сервердің қатесі <em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"Таңдалған әрәкетті іске қосу\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"Алға\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"Осы беттегі барлық объекттерді таңдау үшін осы жерді шертіңіз\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"Осылардың %(total_count)s %(module_name)s барлығын таңдау\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"Белгілерді өшіру\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"Қош келдіңіз,\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"Құжаттама\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"Құпия сөзді өзгерту\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"Шығу\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"Даңғо сайтының әкімі\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"Даңғо әкімшілігі\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"Қосу\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"Тарих\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"Сайтта көру\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"\"\n\"one: Астындағы қатені дұрыстаңыз.\\n\"\n\"other: Астындағы қателерді дұрыстаңыз.\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"%(name)s қосу\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"Сүзгіз\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"Өшіру\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"%(object_name)s '%(escaped_object)s' объектты өшіруы байланысты объекттерін \"\n\"өшіруді қажет етеді, бырақ сізде осындай объектерді өшіру рұқсаты жоқ:\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\"%(object_name)s '%(escaped_object)s' объектті өшіру осындай байлансты \"\n\"объекттерды өшіруді қажет етеді:\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\"%(object_name)s \\\"%(escaped_object)s\\\" объекттерді өшіруге сенімдісіз бе? \"\n\"Бұл байланысты элементтер де өшіріледі:\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"Иә, сенімдімін\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"Бірнеше объекттерді өшіру\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\"%(objects_name)s объектты өшіруы байланысты объекттерін өшіруді қажет етеді, \"\n\"бырақ сізде осындай объектерді өшіру рұқсаты жоқ:\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\"Таңдалған %(objects_name)s-ді(ы) өшіру, онымен байланыстағы қорғалған \"\n\"объектілердің барлығын жояды:\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\"Таңдаған %(objects_name)s объектіңізді өшіруге сенімдісіз бе? Себебі, \"\n\"таңдағын объектіліріңіз және онымен байланыстағы барлық элементтер жойылады:\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \" %(filter_title)s \"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"Өзгетру\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"Бірденке түзетуге рұқсатыңыз жоқ.\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"Соңғы әрекеттер\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"Менің әрекеттерім\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"Қол жетімдісі жоқ\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"Белгісіз мазмұн\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"Дерекқор орнатуыңызда бір қате бар. Дерекқор кестелері дұрыс құрылғаның және \"\n\"дерекқор көрсетілген дерекқор пайдаланушыда оқұ рұқсаты бар.\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"Құпия сөз:\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"Өшіру/Уақыт\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"Қолданушы\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"Әрекет\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\"Бұл объекттың өзгерту тарихы жоқ. Мүмкін ол бұл сайт арқылы енгізілген жоқ.\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"Барлығын көрсету\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"Сақтау\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"Іздеу\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"%(counter)s нәтиже\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"Барлығы %(full_result_count)s\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"Жаңадан сақтау\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"Сақта және жаңасын қос\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"Сақта және өзгертуді жалғастыр\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\"Алдымен, пайдаланушының атын және құпия сөзді енгізіңіз. Содан соң, тағы \"\n\"басқа пайдаланушы параметрлерін енгізе аласыз.\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"Пайдаланушының атын және құпия сөзді енгізіңіз.\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"\"\n\"<strong>%(username)s</strong> пайдаланушы үшін жаңа құпия сөзді енгізіңіз.\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"Құпия сөз\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"Құпия сөз(қайтадан)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Растау үшін жоғардағыдай құпия сөзді енгізіңіз.\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"Өшіру\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"Тағы басқа %(verbose_name)s кос\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"Өшіру?\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"Бүгін Веб-торапқа уақыт бөлгеніңіз үшін рахмет.\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"Қайтадан кіріңіз\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"Құпия сөзді өзгерту\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"Құпия сөз сәтті өзгертілді\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"Құпия сөзіңіз өзгертілді.\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"Ескі құпия сөзіңізді енгізіңіз, содан сон сенімді болу үшін жаңа құпия \"\n\"сөзіңізді екі рет енгізіңіз.\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"Ескі құпия сөз\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"Жаңа құпия сөз\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"Құпия сөзімді өзгерту\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"Құпия сөзді өзгерту\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"Құпия сөзді өзгерту бітті\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"Сіздің құпия сөзіңіз енгізілді.  Жүйеге кіруіңізге болады.\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"Құпия сөзді өзгерту растау\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"Жаңа құпия сөзді енгізіңіз\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"Сенімді болу үшін жаңа құпия сөзіңізді екі рет енгізіңіз.\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"Жаңа құпия сөз:\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"Құпия сөз (растау):\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"Құпия сөзді өзгертуы сәтсіз аяқталды\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\"Құпия сөзді өзгерту байланыс дұрыс емес, мүмкін ол осыған дейін \"\n\"пайдаланылды.  Жаңа құпия сөзді өзгерту сұрау жіберіңіз.\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"Құпия сөз сәтті өзгертілді\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"Жаңа құпия сөзді тандау үшін мынау бетке кіріңіз:\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"Егер ұмытып қалған болсаңыз, пайдалануш атыңыз:\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"Біздің веб-торабын қолданғаныңыз үшін рахмет!\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"%(site_name)s тобы\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"Құпия сөзді жаңала\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"Барлық мерзімдер\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"(Ешнарсе)\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"%s таңда\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"%s өзгерту үщін таңда\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/kk/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Nurlan Rakhimzhanov <nurlan.rakhimzhanov@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-03-08 10:42+0000\\n\"\n\"Last-Translator: Nurlan Rakhimzhanov <nurlan.rakhimzhanov@gmail.com>\\n\"\n\"Language-Team: Kazakh (http://www.transifex.com/projects/p/django/language/\"\n\"kk/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: kk\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"%s бар\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"Сүзгіш\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"Өшіру(жою)\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"%(cnt)s-ң %(sel)s-ы(і) таңдалды\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\"Сіздің төмендегі өзгермелі алаңдарда(fields) өзгерістеріңіз бар. Егер артық \"\n\"әрекет жасасаңызб сіз өзгерістеріңізді жоғалтасыз.\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\"Сіз өз өзгерістеріңізді сақтамай, әрекет жасадыңыз. Өтініш, сақтау үшін ОК \"\n\"батырмасын басыңыз және өз әрекетіңізді қайта жасап көріңіз. \"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\"Сіз Сақтау батырмасына қарағанда, Go(Алға) батырмасын іздеп отырған \"\n\"боларсыз, себебі ешқандай өзгеріс жасамай, әрекет жасадыңыз.\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"\"\n\"Қаңтар Ақпан Наурыз Сәуір Мамыр Маусым Шілде Тамыз Қыркүйек Қазан Қараша \"\n\"Желтоқсан\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"Ж Д С С Б Ж С\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"Көрсету\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"Жасыру\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"Қазір\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"Сағат\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"Уақытты таңда\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"Түн жарым\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"06\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"Талтүс\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"Болдырмау\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"Бүгін\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"Күнтізбе\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"Кеше\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"Ертең\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/km/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:52+0000\\n\"\n\"Last-Translator: Ramiro Morales <cramm0@gmail.com>\\n\"\n\"Language-Team: English <en@li.org>\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: km\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"តើលោកអ្នកប្រាកដទេ?\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"ទាំងអស់\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"យល់ព្រម\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"មិនយល់ព្រម\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"មិន​ដឹង\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"កាល​បរិច្ឆេទណាមួយ\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"ថ្ងៃនេះ\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"៧​ថ្ងៃ​កន្លង​មក\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"ខែ​នេះ\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"ឆ្នាំ​នេះ\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"ពេលវេលាប្រតិបត្តិការ\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"លេខ​សំគាល់​កម្មវិធី (object id)\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"object repr\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"សកម្មភាព\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"ផ្លាស់ប្តូរ\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"កំណត់ហេតុ\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"កំណត់ហេតុ\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"បានផ្លាស់ប្តូរ %s\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"និង\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"ពុំមានទិន្នន័យត្រូវបានផ្លាស់ប្តូរ។\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"\"\n\"ឈ្មោះកម្មវីធី %(name)s \\\"%(obj)s\\\" ត្រូវបានបន្ថែមដោយជោគជ័យ។\"\n\" លោកអ្នកអាចផ្លាស់ប្តូរម្តងទៀតនៅខាងក្រោម។\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"ឈ្មោះកម្មវិធី %(name)s \\\"%(obj)s\\\" បានបញ្ជូលដោយជោគជ័យ​។\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"កម្មវិធីឈ្មោះ %(name)s \\\"%(obj)s\\\" ត្រូវបានផ្លាស់ប្តូរដោយជោគជ័យ។\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"បន្ថែម %s\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"ផ្លាស់ប្តូរ %s\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"ទិន្នន័យមូលដ្ឋានមានបញ្ហា\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"ឈ្មោះកម្មវិធី %(name)s \\\"%(obj)s\\\" ត្រូវបានលប់ដោយជោគជ័យ។\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"សកម្មភាពផ្លាស់ប្តូរកន្លងមក : %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"ពិនិត្យចូល\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"ទំព័រគ្រប់គ្រង\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"កាលបរិច្ឆេទ\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"ម៉ោង\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"ទំព័រ​ដែល​លោកអ្នកចង់​រក​នេះពុំមាន​នៅក្នុងម៉ាស៊ីនរបស់យើងខ្ញុំទេ\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"សួមអភ័យទោស ទំព័រ​ដែល​លោកអ្នកចង់​រក​នេះពុំមាន​នឹងក្នុងម៉ាស៊ីនរបស់យើងខ្ញុំទេ\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"គេហទំព័រ\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"ម៉ាស៊ីនផ្តល់សេវាកម្ម​ មានបញ្ហា\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"ម៉ាស៊ីនផ្តល់សេវាកម្ម​ មានបញ្ហា (៥០០)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"ម៉ាស៊ីនផ្តល់សេវាកម្ម​ មានបញ្ហា  <em>(៥០០)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"ស្វែងរក\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"សូមស្វាគមន៏\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"ឯកសារ\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"ផ្លាស់ប្តូរពាក្យសំងាត់\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"ចាកចេញ\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"ទំព័រគ្រប់គ្រងរបស់ Django\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"ការ​គ្រប់គ្រង​របស់ ​Django\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"បន្ថែម\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"សកម្មភាព​កន្លង​មក\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"មើលនៅលើគេហទំព័រដោយផ្ទាល់\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"បន្ថែម %(name)s\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"ស្វែងរកជាមួយ\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"លប់\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"ការលប់ %(object_name)s '%(escaped_object)s' អាចធ្វើអោយ​កម្មវិធីដែលពាក់​ព័ន្ធបាត់បង់ ។\"\n\" ក៏ប៉ន្តែលោកអ្នក​ពុំមាន​សិទ្ធិលប់​កម្មវិធី​ប្រភេទនេះទេ។\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\"តើលោកអ្នកប្រាកដជាចង់លប់ %(object_name)s \\\"%(escaped_object)s\"\n\"\\\"? ការលប់ %(object_name)s '%(escaped_object)s' អាចធ្វើអោយ​កម្មវិធីដែលពាក់​ព័ន្ធបាត់បង់។\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"ខ្ញុំច្បាស់​ជាចង់លប់\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \"ដោយ​  %(filter_title)s \"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"ផ្លាស់ប្តូរ\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"លោកអ្នកពុំមានសិទ្ធិ ផ្លាស់​ប្តូរ ទេ។\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"សកម្មភាពបច្ចុប្បន្ន\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"សកម្មភាពរបស់ខ្ញុំ\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"គ្មាន\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"មូលដ្ឋាន​ទិន្នន័យ​​​ របស់លោកអ្នក មានបញ្ហា។ តើ លោកអ្នកបាន បង្កើត តារាង​ របស់មូលដ្ឋានទិន្នន័យ​\"\n\" ហើយឬនៅ? តើ​ លោកអ្នកប្រាកដថាសមាជិកអាចអានមូលដ្ឋានទិន្នន័យនេះ​​បានឬទេ? \"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"ពាក្យ​សំងាត់\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"Date/time\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"សមាជិក\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"សកម្មភាព\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\"កម្មវិធីនេះមិនមានសកម្មភាព​កន្លងមកទេ។ ប្រហែលជាសកម្មភាពទាំងនេះមិនបានធ្វើនៅទំព័រគ្រប់គ្រងនេះ។\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"បង្ហាញទាំងអស់\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"រក្សាទុក\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"សរុបទាំងអស់ %(full_result_count)s\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"រក្សាទុក\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"រក្សាទុក ហើយ បន្ថែម​ថ្មី\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"រក្សាទុក ហើយ កែឯកសារដដែល\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\"តំបូងសូមបំពេញ ឈ្មោះជាសមាជិក និង ពាក្យសំងាត់​។ បន្ទាប់មកលោកអ្នកអាចបំពេញបន្ថែមជំរើសផ្សេងៗទៀតបាន។ \"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"ពាក្យសំងាត់\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"ពាក្យសំងាត់ (ម្តងទៀត)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"សូមបំពេញពាក្យសំងាត់ដូចខាងលើ ដើម្បីត្រួតពិនិត្យ។ \"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"លប់ចេញ\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"សូមថ្លែងអំណរគុណ ដែលបានចំណាយ ពេលវេលាដ៏មានតំលៃ របស់លោកអ្នកមកទស្សនាគេហទំព័ររបស់យើងខ្ញុំ\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"ពិនិត្យចូលម្តងទៀត\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"ផ្លាស់ប្តូរពាក្យសំងាត់\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"ពាក្យសំងាត់បានផ្លាស់ប្តូរដោយជោគជ័យ\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"ពាក្យសំងាត់របស់លោកអ្នកបានផ្លាស់ប្តូរហើយ\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"សូមបំពេញពាក្យសំងាត់ចាស់របស់លោកអ្នក។ ដើម្បីសុវត្ថភាព សូមបំពេញពាក្យសំងាត់ថ្មីខាងក្រោមពីរដង។\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"ផ្លាស់ប្តូរពាក្យសំងាត់\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"ពាក្យសំងាត់បានកំណត់សារជាថ្មី\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"ពាក្យសំងាត់ថ្មី\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"បំពេញពាក្យសំងាត់ថ្មីម្តងទៀត\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"ពាក្យសំងាត់បានផ្លាស់ប្តូរដោយជោគជ័យ\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"ឈ្មោះជាសមាជិកក្នុងករណីភ្លេច:\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"សូមអរគុណដែលបានប្រើប្រាស់សេវាកម្មរបស់យើងខ្ញុំ\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"ក្រុមរបស់គេហទំព័រ %(site_name)s\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"កំណត់ពាក្យសំងាត់សារជាថ្មី\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"កាលបរិច្ឆេទទាំងអស់\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"ជ្រើសរើស %s\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"ជ្រើសរើស %s ដើម្បីផ្លាស់ប្តូរ\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/km/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-03-08 10:42+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: English <en@li.org>\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: km\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"%s ដែលអាច​ជ្រើសរើសបាន\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"ស្វែងរកជាមួយ\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"ជ្រើសរើសទាំងអស់\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"លប់ចេញ\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"%s ដែលបានជ្រើសរើស\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"\"\n\"January February March April May June July August September October November \"\n\"December\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"S M T W T F S\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"ឥឡូវនេះ\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"នាឡិការ\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"ជ្រើសរើសម៉ោង\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"អធ្រាត្រ\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"ម៉ោង ៦ ព្រឹក\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"ពេលថ្ងែត្រង់\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"លប់ចោល\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"ថ្ងៃនេះ\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"ប្រក្រតិទិន\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"ម្សិលមិញ\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"ថ្ងៃស្អែក\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/kn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:52+0000\\n\"\n\"Last-Translator: Ramiro Morales <cramm0@gmail.com>\\n\"\n\"Language-Team: Kannada (http://www.transifex.com/projects/p/django/language/\"\n\"kn/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: kn\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"ಖಚಿತಪಡಿಸುವಿರಾ? \"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"ಎಲ್ಲಾ\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"ಹೌದು\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"ಇಲ್ಲ\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"ಗೊತ್ತಿಲ್ಲ(ದ/ದ್ದು)\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"ಯಾವುದೇ ದಿನಾಂಕ\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"ಈದಿನ\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"ಕಳೆದ ೭ ದಿನಗಳು\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"ಈ ತಿಂಗಳು\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"ಈ ವರ್ಷ\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"ಕ್ರಮದ(ಕ್ರಿಯೆಯ) ಸಮಯ\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"ವಸ್ತುವಿನ ಐಡಿ\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"ವಸ್ತು ಪ್ರಾತಿನಿಧ್ಯ\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"ಕ್ರಮದ(ಕ್ರಿಯೆಯ) ಪತಾಕೆ\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"ಬದಲಾವಣೆಯ ಸಂದೇಶ/ಸಂದೇಶ ಬದಲಿಸಿ\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"ಲಾಗ್ ದಾಖಲೆ\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"ಲಾಗ್ ದಾಖಲೆಗಳು\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"%s ಬದಲಾಯಿಸಲಾಯಿತು.\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"ಮತ್ತು\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"ಯಾವುದೇ ಅಂಶಗಳು ಬದಲಾಗಲಿಲ್ಲ.\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" ಅನ್ನು  ಯಶಸ್ವಿಯಾಗಿ ಸೇರಿಸಲಾಯಿತು. ನೀವು ಕೆಳಗೆ ಅದನ್ನು ಮತ್ತೆ \"\n\"ಬದಲಾಯಿಸಬಹುದು.\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \" %(name)s \\\"%(obj)s\\\" ಅನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಸೇರಿಸಲಾಯಿತು.\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" ಸಫಲವಾಗಿ ಬದಲಾಯಿಸಲಾಯಿತು.\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"%s ಸೇರಿಸಿ\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"%s ಅನ್ನು ಬದಲಿಸು\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"ದತ್ತಸಂಚಯದ ದೋಷ\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" ಯಶಸ್ವಿಯಾಗಿ ಅಳಿಸಲಾಯಿತು.\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"ಬದಲಾವಣೆಗಳ ಇತಿಹಾಸ: %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"ಒಳಗೆ ಬನ್ನಿ\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"ತಾಣ ನಿರ್ವಹಣೆ\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"ದಿನಾಂಕ:\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"ಸಮಯ:\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"ಪುಟ ಸಿಗಲಿಲ್ಲ\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"ಕ್ಷಮಿಸಿ, ನೀವು ಕೇಳಿದ ಪುಟ ಸಿಗಲಿಲ್ಲ\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"ಪ್ರಾರಂಭಸ್ಥಳ(ಮನೆ)\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"ಸರ್ವರ್ ದೋಷ\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"ಸರ್ವರ್ ದೋಷ(೫೦೦)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"ಸರ್ವರ್ ದೋಷ<em>(೫೦೦)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"ಹೋಗಿ\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"ಸುಸ್ವಾಗತ.\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"ವಿವರಮಾಹಿತಿ\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"ಪ್ರವೇಶಪದ ಬದಲಿಸಿ\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"ಹೊರಕ್ಕೆ ಹೋಗಿ\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"ಜಾಂಗೋ ತಾಣದ ಆಡಳಿತಗಾರರು\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"ಜಾಂಗೋ ಆಡಳಿತ\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"ಸೇರಿಸಿ\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"ಚರಿತ್ರೆ\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"ತಾಣದಲ್ಲಿ ನೋಡಿ\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"%(name)s ಸೇರಿಸಿ\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"ಸೋಸಕ\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"ಅಳಿಸಿಹಾಕಿ\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"'%(escaped_object)s'  %(object_name)s ಅನ್ನು ತೆಗೆದುಹಾಕುವುದರಿಂದ ಸಂಬಂಧಿತ ವಸ್ತುಗಳೂ \"\n\"ಕಳೆದುಹೋಗುತ್ತವೆ. ಆದರೆ ನಿಮ್ಮ ಖಾತೆಗೆ ಕೆಳಕಂಡ ಬಗೆಗಳ ವಸ್ತುಗಳನ್ನು ತೆಗೆದುಹಾಕಲು \"\n\"ಅನುಮತಿಯಿಲ್ಲ.\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"ಹೌದು,ನನಗೆ ಖಚಿತವಿದೆ\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \"%(filter_title)s ಇಂದ\"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"ಬದಲಿಸಿ/ಬದಲಾವಣೆ\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"ಯಾವುದನ್ನೂ ತಿದ್ದಲು ನಿಮಗೆ ಅನುಮತಿ ಇಲ್ಲ .\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"ಇತ್ತೀಚಿನ ಕ್ರಮಗಳು\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"ನನ್ನ ಕ್ರಮಗಳು\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"ಯಾವುದೂ ಲಭ್ಯವಿಲ್ಲ\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"ಡಾಟಾಬೇಸನ್ನು ಇನ್ಸ್ಟಾಲ್ ಮಾಡುವಾಗ ಏನೋ ತಪ್ಪಾಗಿದೆ. ಸೂಕ್ತ  ಡಾಟಾಬೇಸ್ ಕೋಷ್ಟಕಗಳು ರಚನೆಯಾಗಿ ಅರ್ಹ \"\n\"ಬಳಕೆದಾರರು ಅವುಗಳನ್ನು ಓದಬಹುದಾಗಿದೆಯೇ ಎಂಬುದನ್ನು ಖಾತರಿ ಪಡಿಸಿಕೊಳ್ಳಿ.\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"ಪ್ರವೇಶಪದ:\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"ದಿನಾಂಕ/ಸಮಯ\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"ಬಳಕೆದಾರ\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"ಕ್ರಮ(ಕ್ರಿಯೆ)\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\"ಈ ವಸ್ತುವಿಗೆ ಬದಲಾವಣೆಯ ಇತಿಹಾಸವಿಲ್ಲ. ಅದು ಬಹುಶಃ ಈ ಆಡಳಿತತಾಣದ ಮೂಲಕ ಸೇರಿಸಲ್ಪಟ್ಟಿಲ್ಲ.\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"ಎಲ್ಲವನ್ನೂ ತೋರಿಸು\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"ಉಳಿಸಿ\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"ಒಟ್ಟು %(full_result_count)s\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"ಹೊಸದರಂತೆ ಉಳಿಸಿ\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"ಉಳಿಸಿ ಮತ್ತು ಇನ್ನೊಂದನ್ನು ಸೇರಿಸಿ\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"ಉಳಿಸಿ ಮತ್ತು ತಿದ್ದುವುದನ್ನು ಮುಂದುವರಿಸಿರಿ.\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\"ಮೊದಲು ಬಳಕೆದಾರ-ಹೆಸರು ಮತ್ತು ಪ್ರವೇಶಪದವನ್ನು ಕೊಡಿರಿ. ನಂತರ, ನೀವು ಇನ್ನಷ್ಟು ಆಯ್ಕೆಗಳನ್ನು  \"\n\"ಬದಲಿಸಬಹುದಾಗಿದೆ.\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"ಪ್ರವೇಶಪದ\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"ಪ್ರವೇಶಪದ(ಇನ್ನೊಮ್ಮೆ)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"ಖಚಿತಗೊಳಿಸಲು ಮೇಲಿನ ಪ್ರವೇಶಪದವನ್ನು ಇನ್ನೊಮ್ಮೆ ಬರೆಯಿರಿ.\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"ತೆಗೆದು ಹಾಕಿ\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"ಈದಿನ ತಮ್ಮ ಅತ್ಯಮೂಲ್ಯವಾದ ಸಮಯವನ್ನು ನಮ್ಮ ತಾಣದಲ್ಲಿ ಕಳೆದುದಕ್ಕಾಗಿ ಧನ್ಯವಾದಗಳು.\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"ಮತ್ತೆ ಒಳಬನ್ನಿ\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"ಪ್ರವೇಶಪದ ಬದಲಾವಣೆ\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"ಪ್ರವೇಶಪದ ಬದಲಾವಣೆ ಯಶಸ್ವಿ\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"ನಿಮ್ಮ ಪ್ರವೇಶಪದ ಬದಲಾಯಿಸಲಾಗಿದೆ\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"ಭದ್ರತೆಯ ದೃಷ್ಟಿಯಿಂದ ದಯವಿಟ್ಟು ನಿಮ್ಮ ಹಳೆಯ ಪ್ರವೇಶಪದವನ್ನು ಸೂಚಿಸಿರಿ. ಆನಂತರ ನೀವು ಸರಿಯಾಗಿ \"\n\"ಬರೆದಿದ್ದೀರೆಂದು ನಾವು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು   ಹೊಸ ಪ್ರವೇಶಪದವನ್ನು ಎರಡು ಬಾರಿ ಬರೆಯಿರಿ.\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"ಹಳೆಯ ಪ್ರವೇಶಪದ\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"ಹೊಸ ಪ್ರವೇಶಪದ\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"ನನ್ನ ಪ್ರವೇಶಪದ ಬದಲಿಸಿ\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"ಪ್ರವೇಶಪದವನ್ನು ಬದಲಿಸುವಿಕೆ\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"ಹೊಸ ಪ್ರವೇಶಪದ:\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"ಪ್ರವೇಶಪದವನ್ನು ಖಚಿತಪಡಿಸಿ:\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"ಪ್ರವೇಶಪದದ ಮರುನಿರ್ಧಾರ ಸಾಧ್ಯವಾಗಿದೆ\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"ನೀವು ಮರೆತಿದ್ದಲ್ಲಿ , ನಿಮ್ಮ ಬಳಕೆದಾರ-ಹೆಸರು\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"ನಮ್ಮ ತಾಣವನ್ನು ಬಳಸಿದ್ದಕ್ದಾಗಿ ಧನ್ಯವಾದಗಳು!\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"%(site_name)s ತಂಡ\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"ನನ್ನ ಪ್ರವೇಶಪದವನ್ನು ಮತ್ತೆ ನಿರ್ಧರಿಸಿ \"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"ಎಲ್ಲಾ ದಿನಾಂಕಗಳು\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"%s ಆಯ್ದುಕೊಳ್ಳಿ\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"ಬದಲಾಯಿಸಲು %s ಆಯ್ದುಕೊಳ್ಳಿ\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/kn/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <karthikbgl@gmail.com>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-03-08 10:42+0000\\n\"\n\"Last-Translator: karthikbgl <karthikbgl@gmail.com>\\n\"\n\"Language-Team: Kannada (http://www.transifex.com/projects/p/django/language/\"\n\"kn/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: kn\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"ಲಭ್ಯ %s \"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"ಶೋಧಕ\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"ಎಲ್ಲವನ್ನೂ  ಆಯ್ದುಕೊಳ್ಳಿ\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"ತೆಗೆದು ಹಾಕಿ\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"%s ಆಯ್ದುಕೊಳ್ಳಲಾಗಿದೆ\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"ಎಲ್ಲಾ ತೆಗೆದುಹಾಕಿ\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\"ನೀವು ಪ್ರತ್ಯೇಕ ತಿದ್ದಬಲ್ಲ ಕ್ಷೇತ್ರಗಳಲ್ಲಿ ಬದಲಾವಣೆ ಉಳಿಸಿಲ್ಲ. ನಿಮ್ಮ ಉಳಿಸದ ಬದಲಾವಣೆಗಳು \"\n\"ನಾಶವಾಗುತ್ತವೆ\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"ಜನವರಿ ಫೆಬ್ರುವರಿ ಮಾರ್ಚ್ ಎಪ್ರಿಲ್ ಮೇ ಜೂನ್ ಜುಲೈ ಆಗಸ್ಟ್ ಸೆಪ್ಟೆಂಬರ್ ನವೆಂಬರ್ ಡಿಸೆಂಬರ್\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"ರ ಸೋ ಮ ಬು ಗು ಶು ಶ\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"ಪ್ರದರ್ಶನ\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"ಮರೆಮಾಡಲು\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"ಈಗ\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"ಗಡಿಯಾರ\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"ಸಮಯವೊಂದನ್ನು ಆರಿಸಿ\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"ಮಧ್ಯರಾತ್ರಿ\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"ಬೆಳಗಿನ ೬ ಗಂಟೆ \"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"ಮಧ್ಯಾಹ್ನ\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"ರದ್ದುಗೊಳಿಸಿ\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"ಈ ದಿನ\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"ಪಂಚಾಂಗ\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"ನಿನ್ನೆ\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"ನಾಳೆ\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/ko/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jaehong Kim <mixe@korea.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:52+0000\\n\"\n\"Last-Translator: Ramiro Morales <cramm0@gmail.com>\\n\"\n\"Language-Team: Korean (http://www.transifex.com/projects/p/django/language/\"\n\"ko/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ko\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"%(count)d개의 %(items)s (을)를 성공적으로 삭제하였습니다.\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"%(name)s를 삭제할 수 없습니다.\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"확실합니까?\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"선택된 %(verbose_name_plural)s (을)를 삭제합니다.\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"모두\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"예\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"아니오\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"알 수 없습니다.\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"언제나\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"오늘\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"지난 7일\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"이번 달\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"이번 해\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"로그인 세션이 끊겼습니다. 다시 로그인 하세요.\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"액션:\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"액션 타임\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"오브젝트 아이디\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"오브젝트 표현\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"액션 플래그\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"메시지 변경\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"로그 엔트리\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"로그 엔트리\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"없음\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"%s (이)가 변경되었습니다.\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"또한\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"%(name)s \\\"%(object)s\\\" (을)를 추가하였습니다.\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"%(list)s에 대한 %(name)s \\\"%(object)s\\\" (을)를 변경하였습니다.\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"%(name)s \\\"%(object)s\\\" (을)를 삭제하였습니다.\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"변경된 필드가 없습니다.\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" (이)가 추가되었습니다. 계속해서 편집하세요.\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" (이)가 추가되었습니다.\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" (이)가 변경되었습니다.\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\"항목들에 액션을 적용하기 위해선 먼저 항목들이 선택되어 있어야 합니다. 아무 항\"\n\"목도 변경되지 않았습니다.\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"액션이 선택되지 않았습니다.\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"%s 추가\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"Primary key %(key)r에 대한 오브젝트 %(name)s(이)가 존재하지 않습니다.\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"%s 변경\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"데이터베이스 오류\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"%(count)s개의 %(name)s(이)가 변경되었습니다.\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"모두 %(total_count)s개가 선택되었습니다.\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"%(cnt)s 중 아무것도 선택되지 않았습니다.\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\"(이)가 삭제되었습니다.\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"변경 히스토리: %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"로그인\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"사이트 관리\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"%s 사이트 관리\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"날짜:\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"시각:\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"찾아보기\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"하나 더 추가하기\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"해당 페이지가 없습니다.\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"죄송합니다, 요청하신 페이지를 찾을 수 없습니다.\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"홈\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"서버 오류\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"서버 오류 (500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"서버 오류 <em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"선택한 액션을 실행합니다.\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"실행\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"모든 페이지의 항목들을 선택하려면 여기를 클릭하세요.\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"%(total_count)s개의 %(module_name)s 모두를 선택합니다.\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"선택을 해제합니다.\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"환영합니다,\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"문서\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"비밀번호 변경\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"로그아웃\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"Django 사이트 관리\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"Django 관리\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"추가\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"히스토리\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"사이트에서 보기\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"아래의 오류를 수정하십시오.\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"%(name)s 추가\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"필터\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"삭제\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"%(object_name)s \\\"%(escaped_object)s\\\" (을)를 삭제하면서관련 오브젝트를 제거\"\n\"하고자 했으나, 지금 사용하시는 계정은 다음 타입의 오브젝트를 제거할 권한이 없\"\n\"습니다. :\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\"%(object_name)s '%(escaped_object)s'를 삭제하려면 다음 보호상태의 연관 오브젝\"\n\"트를 삭제해야 합니다.\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\"정말로 %(object_name)s \\\"%(escaped_object)s\\\"(을)를 삭제하시겠습니까? 다음의 \"\n\"관련 항목들이 모두 삭제됩니다. :\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"네, 확실합니다.\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"여러 개의 오브젝트 삭제\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\"연관 오브젝트 삭제로 선택한 %(objects_name)s의 삭제 중, 그러나 당신의 계정은 \"\n\"다음 오브젝트의 삭제 권한이 없습니다. \"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\"%(objects_name)s를 삭제하려면 다음 보호상태의 오브젝트를 삭제해야 합니다.\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\"선택한 %(objects_name)s를 정말 삭제하시겠습니까? 다음의 오브젝트와 연관 아이\"\n\"템들이 모두 삭제됩니다:\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \"%(filter_title)s (으)로\"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"변경\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"수정할 권한이 없습니다.\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"최근 액션\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"나의 액션\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"이용할 수 없습니다.\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"내용 형식이 지정되지 않았습니다.\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"데이터베이스 설정에 문제가 발생했습니다. 해당 데이터베이스 테이블이 생성되었\"\n\"는지, 해당 유저가 데이터베이스를 읽어 들일 수 있는지 확인하세요.\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"비밀번호\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"날짜/시간\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"사용자\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"액션\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\"오브젝트에 변경사항이 없습니다. 이 admin 사이트를 통해 추가된 것이 아닐 수 있\"\n\"습니다.\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"모두 표시\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"저장\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"검색\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"결과 %(counter)s개 나옴\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"총 %(full_result_count)s건\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"새로 저장\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"저장 및 다른 이름으로 추가\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"저장 및 편집 계속\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\"사용자명와 비밀번호를 입력하세요.더 많은 사용자 옵션을 사용하실 수 있습니다.\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"유저명과 암호를 입력하세요.\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"<strong>%(username)s</strong> 새로운 비밀번호를 입력하세요.\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"비밀번호\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"비밀번호 (확인)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"확인을 위해 위와 동일한 비밀번호를 입력하세요. \"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"삭제하기\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"%(verbose_name)s 더 추가하기\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"삭제\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"사이트를 이용해 주셔서 고맙습니다.\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"다시 로그인하기\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"비밀번호 변경\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"비밀번호를 변경하였습니다.\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"비밀번호가 변경되었습니다.\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"보안상 필요하오니 기존에 사용하시던 비밀번호를 입력해 주세요. 새로운 비밀번호\"\n\"는 정확히 입력했는지 확인할 수 있도록 두 번 입력하시기 바랍니다.\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"기존 비밀번호:\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"새 비밀번호:\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"비밀번호 변경\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"비밀번호 초기화\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"비밀번호가 초기화 완료\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"비밀번호가 설정되었습니다. 이제 로그인하세요.\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"비밀번호 초기화 확인\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"새 비밀번호 입력\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"\"\n\"새로운 비밀번호를 정확히 입력했는지 확인할 수 있도록두 번 입력하시기 바랍니\"\n\"다.\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"새로운 비밀번호:\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"새로운 비밀번호(확인):\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"비밀번호가 초기화를 실패하였습니다.\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\"비밀번호 초기화 링크가 이미 사용되어 올바르지 않습니다.비밀번호 초기화을 다\"\n\"시 해주세요.\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"비밀번호가 초기화되었습니다.\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"이어지는 페이지에서 새 비밀번호를 선택하세요.\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"사용자명:\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"사이트를 이용해 주셔서 고맙습니다.\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"%(site_name)s 팀\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"비밀번호 초기화\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"언제나\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"(없음)\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"%s 선택\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"변경할 %s 선택\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/ko/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jaehong Kim <mixe@korea.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-03-08 10:42+0000\\n\"\n\"Last-Translator: Jaehong Kim <mixe@korea.com>\\n\"\n\"Language-Team: Korean (http://www.transifex.com/projects/p/django/language/\"\n\"ko/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ko\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"이용 가능한 %s\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"필터\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"모두 선택\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"삭제\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"선택된 %s\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"%(sel)s개가 %(cnt)s개 중에 선택됨.\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\"개별 편집 가능한 필드에 저장되지 않은 값이 있습니다. 액션을 수행하면 저장되\"\n\"지 않은 값들을 잃어버리게 됩니다.\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\"개별 필드의 값들을 저장하지 않고 액션을 선택했습니다. OK를 누르면 저장되며, \"\n\"액션을 한 번 더 실행해야 합니다.\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\"개별 필드에 아무런 변경이 없는 상태로 액션을 선택했습니다. 저장 버튼이 아니\"\n\"라 진행 버튼을 찾아보세요.\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"일 월 화 수 목 금 토\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"보기\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"감추기\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"현재\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"시계\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"시간 선택\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"자정\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"오전 6시\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"정오\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"취소\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"오늘\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"달력\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"어제\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"내일\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/lb/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:52+0000\\n\"\n\"Last-Translator: Ramiro Morales <cramm0@gmail.com>\\n\"\n\"Language-Team: Luxembourgish (http://www.transifex.com/projects/p/django/\"\n\"language/lb/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: lb\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"Jo\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"Onbekannt\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"Läschen\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \"\"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"Änner\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/lb/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2011-01-19 15:01+0000\\n\"\n\"Last-Translator: Django team\\n\"\n\"Language-Team: Luxembourgish (http://www.transifex.com/projects/p/django/\"\n\"language/lb/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: lb\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/lt/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# lauris <lauris@runbox.com>, 2011.\n# Nikolajus Krauklis <nikolajus@gmail.com>, 2013.\n# Simonas Kazlauskas <simonas@kazlauskas.me>, 2012.\n# Simonas Simas <simonas@kazlauskas.me>, 2012.\n#   <sirexas@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-02-23 12:50+0000\\n\"\n\"Last-Translator: Nikolajus Krauklis <nikolajus@gmail.com>\\n\"\n\"Language-Team: Lithuanian (http://www.transifex.com/projects/p/django/\"\n\"language/lt/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: lt\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n\"\n\"%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"Sėkmingai ištrinta %(count)d %(items)s.\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"Ištrinti %(name)s negalima\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"Ar esate tikras?\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"Ištrinti pasirinktus %(verbose_name_plural)s \"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"Visi\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"Taip\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"Ne\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"Nežinomas\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"Betkokia data\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"Šiandien\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"Paskutinės 7 dienos\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"Šį mėnesį\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"Šiais metais\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\"Prašome įvesti tinkamą personalo paskyros %(username)s ir slaptažodį. \"\n\"Atminkite, kad abu laukeliai yra jautrūs raidžių dydžiui.\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"Prisijunkite dar kartą, nes sesijos laikas baigėsi.\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"Veiksmas:\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"veiksmo laikas\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"objekto id\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"objekto repr\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"veiksmo žymė\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"pakeisti žinutę\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"log įrašas\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"log įrašai\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"„%(object)s“ pridėti.\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"Pakeisti „%(object)s“ - %(changes)s\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"„%(object)s“ ištrinti.\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"LogEntry objektas\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"None\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"Pakeistas %s.\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"ir\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Įrašyta %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Pakeistas %(list)s šiam %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Pašalinta %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"Nei vienas laukas nepakeistas\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" pridėtas sėkmingai. Gali taisytį jį dar kartą žemiau.\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" buvo sėkmingai pridėtas. Jūs galite pridėti naują \"\n\"%(name)s žemiau.\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" pridėtas sėkmingai.\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" buvo sėkmingai pakeistas.  Jūs galite jį koreguoti \"\n\"žemiau.\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" buvo sėkmingai pakeistas. Jūs galite pridėti naują \"\n\"%(name)s žemiau.\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" buvo sėkmingai pakeistas.\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\"Įrašai turi būti pasirinkti, kad būtų galima atlikti veiksmus. Įrašai \"\n\"pakeisti nebuvo.\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"Veiksmai atlikti nebuvo.\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"Pridėti %s\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"Įrašas %(name)s su pirminiu raktu %(key)r neegzistuoja.\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"Pakeisti %s\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"Duomenų bazės klaida\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"%(count)s %(name)s sėkmingai pakeistas.\"\nmsgstr[1] \"%(count)s %(name)s sėkmingai pakeisti.\"\nmsgstr[2] \"%(count)s %(name)s \"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"%(total_count)s pasirinktas\"\nmsgstr[1] \"%(total_count)s pasirinkti\"\nmsgstr[2] \"Visi %(total_count)s pasirinkti\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"0 iš %(cnt)s pasirinkta\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" sėkmingai ištrintas.\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"Pakeisti istoriją: %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"Prisijungti\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"Saito administravimas\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"%s administravimas\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"Data:\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"Laikas:\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"Paieška\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"Pridėti dar viena\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"Šiuo metu:\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"Pakeisti:\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"Puslapis nerastas\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"Atsiprašome, bet prašytas puslapis nerastas.\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"Pradinis\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"Serverio klaida\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"Serverio klaida (500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"Serverio klaida <em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\"Netikėta klaida. Apie ją buvo pranešta administratoriams el. paštu ir ji \"\n\"turėtų būti greitai sutvarkyta. Dėkui už kantrybę.\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"Vykdyti pasirinktus veiksmus\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"Vykdyti\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"Spauskite čia norėdami pasirinkti visus įrašus\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"Pasirinkti visus %(total_count)s %(module_name)s\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"Atstatyti į pradinę būseną\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"Sveiki,\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"Dokumentacija\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"Keisti slaptažodį\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"Atsijungti\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"Django saito administravimas\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"Django administravimas\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"Pridėti\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"Istorija\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"Matyti saite\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"Ištaisykite žemiau esancią klaidą.\"\nmsgstr[1] \"Ištaisykite žemiau esancias klaidas.\"\nmsgstr[2] \"Ištaisykite žemiau esancias klaidas.\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"Naujas %(name)s\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"Filtras\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"Pašalinti iš rikiavimo\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"Rikiavimo prioritetas: %(priority_number)s\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"Perjungti rikiavimą\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"Ištrinti\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"Trinant %(object_name)s '%(escaped_object)s' turi būti ištrinti ir susiję \"\n\"objektai, bet tavo vartotojas neturi teisių ištrinti šių objektų:\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\"Ištrinant %(object_name)s '%(escaped_object)s' būtų ištrinti šie apsaugoti \"\n\"ir susiję objektai:\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\"Ar tu esi tikras, kad nori ištrinti %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"Visi susiję objektai bus ištrinti:\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"Taip, esu tikras\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"Ištrinti kelis objektus\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\"Ištrinant pasirinktą %(objects_name)s būtų ištrinti susiję objektai, tačiau \"\n\"jūsų vartotojas neturi reikalingų teisių ištrinti šiuos objektų tipus:\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\"Ištrinant pasirinktus %(objects_name)s būtų ištrinti šie apsaugoti ir susiję \"\n\"objektai:\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\"Ar esate tikri, kad norite ištrinti pasirinktus %(objects_name)s? Sekantys \"\n\"pasirinkti bei susiję objektai bus ištrinti:\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \" Pagal %(filter_title)s \"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"%(name)s aplikacijos modeliai\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"Pakeisti\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"Neturite teisių ką nors keistis.\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"Paskutiniai Veiksmai\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"Mano Veiksmai\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"Nėra prieinamų\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"Nežinomas turinys\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"Kažkas yra negerai su jūsų duomenų bazės instaliacija. Įsitikink, kad visos \"\n\"reikalingos lentelės sukurtos ir vartotojas turi teises skaityti duomenų \"\n\"bazę.\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"Slaptažodis:\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"Pamiršote slaptažodį ar vartotojo vardą?\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"Data/laikas\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"Naudotojas\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"Veiksmas\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\"Šis objektas neturi pakeitimų istorijos. Tikriausiai jis buvo pridėtas ne \"\n\"per admin puslapį.\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"Rodyti visus\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"Išsaugoti\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"Ieškoti\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"%(counter)s rezultatas\"\nmsgstr[1] \"%(counter)s rezultatai\"\nmsgstr[2] \"%(counter)s rezultatai\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"%(full_result_count)s iš viso\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"Išsaugoti kaip naują\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"Išsaugoti ir pridėti naują\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"Išsaugoti ir tęsti redagavimą\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\"Pirmiausia įveskite naudotojo vardą ir slaptažodį. Tada galėsite keisti \"\n\"daugiau naudotojo nustatymų.\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"Įveskite naudotojo vardą ir slaptažodį.\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"Įveskite naują slaptažodį naudotojui <strong>%(username)s</strong>.\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"Slaptažodis\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"Slaptažodis (dar kartą)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Patikrinimui įvesk tokį patį slaptažodį, kaip viršuje.\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"Pašalinti\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"Pridėti dar viena %(verbose_name)s\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"Ištrinti?\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"Dėkui už praleistą laiką šiandien.\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"Prisijungti dar kartą\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"Slaptažodžio keitimas\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"Slaptažodis sėkmingai pakeistas\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"Jūsų slaptažodis buvo pakeistas.\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"Saugumo sumetimais įvesk seną slaptažodį ir tada du kartus naują, kad \"\n\"įsitikinti, jog nesuklydai rašydamas\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"Senas slaptažodis\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"Naujas \"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"Keisti mano slaptažodį\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"Slaptažodžio atstatymas\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"Slaptažodžio atstatymas baigtas\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"Jūsų slaptažodis buvo išsaugotas. Dabas galite prisijungti.\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"Slaptažodžio atstatymo patvirtinimas\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"Įveskite naują slaptažodį\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"\"\n\"Įveskite naująjį slaptažodį du kartus, taip užtikrinant, jog nesuklydote \"\n\"rašydami.\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"Naujasis slaptažodis:\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"Slaptažodžio patvirtinimas:\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"Slaptažodžio atstatymas nesėkmingas\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\"Slaptažodžio atstatymo nuoroda buvo negaliojanti, nes ja tikriausiai jau \"\n\"buvo panaudota. Prašykite naujo slaptažodžio pakeitimo.\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"Slaptažodis sėkmingai atstatytas\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\"Mes išsiuntėme jums slaptažodžio atstatymo instrukcijas jūsų pateiktų el. \"\n\"pašto adresu. Turėtumėte jas neilgai trukus gauti.\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\"Jūs gaunate šį laišką nes prašėte paskyros slaptažodžio atkūrimo \"\n\"%(site_name)s svetainėje.\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"Prašome eiti į šį puslapį ir pasirinkti naują slaptažodį:\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"Jūsų naudotojo vardas, jei netyčia jį užmiršote:\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"Dėkui, kad naudojatės mūsų saitu!\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"%(site_name)s komanda\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\"Pamiršote slaptažodį? Įveskite savo el. pašto adresą ir mes išsiųsime laišką \"\n\"su instrukcijomis kaip nustatyti naują slaptažodį.\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"El. pašto adresas:\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"Atstatyti slaptažodį\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"Visos datos\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"()\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"Pasirinkti %s\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"Pasirinkite %s kurį norite keisti\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/lt/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Kostas  <tamosiunas@gmail.com>, 2011.\n# Povilas Balzaravičius <pavvka@gmail.com>, 2011.\n# Simonas Simas <simonas@kazlauskas.me>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-03-09 16:22+0000\\n\"\n\"Last-Translator: Simonas Kazlauskas <simonas@kazlauskas.me>\\n\"\n\"Language-Team: Lithuanian (http://www.transifex.com/projects/p/django/\"\n\"language/lt/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: lt\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n\"\n\"%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"Galimi %s\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Tai yra sąrašas prieinamų %s. Dėžutėje žemiau pažymėdami keletą iš jų ir \"\n\"paspausdami „Pasirinkti“ rodyklę tarp dviejų dėžučių jūs galite pasirinkti \"\n\"keletą iš jų.\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"Rašykite į šią dėžutę, kad išfiltruotumėte prieinamų %s sąrašą.\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"Filtras\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"Pasirinkti visus\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"Spustelėkite, kad iš karto pasirinktumėte visus %s.\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"Pasirinkti\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"Pašalinti\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"Pasirinktas %s\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Tai yra sąrašas pasirinktų %s. Dėžutėje žemiau pažymėdami keletą iš jų ir \"\n\"paspausdami „Pašalinti“ rodyklę tarp dviejų dėžučių jūs galite pašalinti \"\n\"keletą iš jų.\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"Pašalinti visus\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"Spustelėkite, kad iš karto pašalintumėte visus pasirinktus %s.\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"pasirinktas %(sel)s iš %(cnt)s\"\nmsgstr[1] \"pasirinkti %(sel)s iš %(cnt)s\"\nmsgstr[2] \"pasirinkti %(sel)s iš %(cnt)s\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\"Turite neišsaugotų pakeitimų. Jeigu tęsite, Jūsų pakeitimai bus prarasti.\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\"Pasirinkote veiksmą, bet dar neesate išsaugoję pakeitimų. Nuspauskite Gerai \"\n\"norėdami išsaugoti. Jus reikės iš naujo paleisti veiksmą.\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\"Pasirinkote veiksmą, bet neesate pakeitę laukų reikšmių. Jūs greičiausiai \"\n\"ieškote mygtuko Vykdyti, o ne mygtuko Saugoti.\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"\"\n\"Sausis Vasaris Kovas Balandis Gegužė Birželis Liepa Rugpjūtis Rugsėjis \"\n\"Spalis Lapkritis Gruodis\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"S Pr A T K Pn Š\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"Parodyti\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"Slėpti\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"Dabar\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"Laikrodis\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"Pasirinkite laiką\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"Vidurnaktis\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"6 a.m.\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"Vidurdienis\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"Atšaukti\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"Šiandien\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"Kalendorius\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"Vakar\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"Rytoj\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/lv/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# edgars <edgars.jekabsons@gmail.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:52+0000\\n\"\n\"Last-Translator: Ramiro Morales <cramm0@gmail.com>\\n\"\n\"Language-Team: Latvian (http://www.transifex.com/projects/p/django/language/\"\n\"lv/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: lv\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : \"\n\"2);\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"Veiksmīgi izdzēsti %(count)d %(items)s.\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"Vai esat pārliecināts?\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"Izdzēst izvēlēto %(verbose_name_plural)s\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"Visi\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"Jā\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"Nē\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"Nezināms\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"Jebkurš datums\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"Šodien\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"Pēdējās 7 dienas\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"Šomēnes\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"Šogad\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"Lūdzu pieslēdzieties vēlreiz, jūsu sesija ir beigusies.\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"Darbība:\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"darbības laiks\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"objekta id\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"objekta attēlojums\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"darbības atzīme\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"izmaiņas teksts\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"žurnāla ieraksts\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"žurnāla ieraksti\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"nekas\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"Izmainīts %s.\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"un\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Pievienots %(name)s \\\"%(object)s\\\"\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Izmainīts %(list)s priekš %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Dzēsts %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"Lauki nav izmainīti\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" pievienots sekmīgi. Zemāk varat to labot.\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" pievienots sekmīgi.\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" nomainīts sekmīgi.\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"Lai veiktu darbību, jāizvēlas rindas. Rindas nav izmainītas.\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"Nav izvēlēta darbība.\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"Pievienot %s\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"%(name)s objekts ar primāro atslēgu %(key)r neeksistē.\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"Labot %s\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"Datubāzes kļūda\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"%(count)s %(name)s ir laboti sekmīgi\"\nmsgstr[1] \"%(count)s %(name)s ir sekmīgi rediģēts\"\nmsgstr[2] \"%(count)s %(name)s ir sekmīgi rediģēti.\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"%(total_count)s izvēlēti\"\nmsgstr[1] \"%(total_count)s izvēlēts\"\nmsgstr[2] \"%(total_count)s izvēlēti\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"0 no %(cnt)s izvēlēti\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" sekmīgi izdzēsts.\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"Izmaiņu vēsture: %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"Pieslēgties\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"Lapas administrācija\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"%s administrācija\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"Datums:\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"Laiks:\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"Pārlūkot\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"Pievienot vēl vienu\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"Lapa nav atrasta\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"Atvainojiet, pieprasītā lapa neeksistē.\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"Sākums\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"Servera kļūda\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"Servera kļūda (500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"Servera kļūda <em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"Izpildīt izvēlēto darbību\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"Aiziet!\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"Spiest šeit, lai iezīmētu objektus no visām lapām\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"Izvēlēties visus %(total_count)s %(module_name)s\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"Atcelt iezīmēto\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"Sveicināti,\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"Dokumentācija\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"Paroles maiņa\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"Atslēgties\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"Django administrācijas lapa\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"Django administrācija\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"Pievienot\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"Vēsture\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"Apskatīt lapā\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"Lūdzu, izlabojiet kļūdu zemāk.\"\nmsgstr[1] \"Lūdzu, izlabojiet kļūdas zemāk.\"\nmsgstr[2] \"Lūdzu, izlabojiet kļūdas zemāk.\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"Pievienot %(name)s\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"Filtrs\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"Dzēst\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"Izdzēšot objektu %(object_name)s '%(escaped_object)s', tiks dzēsti visi \"\n\"saistītie objekti, bet jums nav tiesību dzēst sekojošus objektu tipus:\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\"Vai esat pārliecināts, ka vēlaties dzēst %(object_name)s \\\"%(escaped_object)s\"\n\"\\\"? Tiks dzēsti arī sekojoši saistītie objekti:\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"Jā, esmu pārliecināts\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"Dzēst vairākus objektus\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \" Pēc %(filter_title)s \"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"Izmainīt\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"Jums nav tiesības neko labot.\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"Nesenās darbības\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"Manas darbības\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"Nav pieejams\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"Nezināms saturs\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"Problēma ar datubāzes instalāciju. Pārliecinieties, ka attiecīgās tabulas ir \"\n\"izveidotas un attiecīgajam lietotājam ir tiesības tai piekļūt.\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"Parole:\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"Datums/laiks\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"Lietotājs\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"Darbība\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\"Šim objektam nav izmaiņu vēstures. Tas visdrīzāk netika pievienots, \"\n\"izmantojot šo administrācijas rīku.\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"Rādīt visu\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"Saglabāt\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"Meklēt\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"kopā - %(full_result_count)s\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"Saglabāt kā jaunu\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"Saglabāt un pievienot vēl vienu\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"Saglabāt un turpināt labošanu\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\"Vispirms ievadiet lietotāja vārdu un paroli. Tad varēsiet labot pārējos \"\n\"lietotāja uzstādījumus.\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"Ievadiet jaunu paroli lietotājam <strong>%(username)s</strong>.\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"Parole\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"Parole (vēlreiz)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Pārbaudei atkārtoti ievadiet to pašu paroli kā augstāk.\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"Dzēst\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"Pievienot vēl %(verbose_name)s\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"Dzēst?\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"Paldies par pavadīto laiku mājas lapā.\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"Pieslēgties vēlreiz\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"Paroles maiņa\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"Paroles nomaiņa sekmīga\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"Jūsu parole tika nomainīta.\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"Drošības nolūkos ievadiet veco paroli un pēc tam ievadiet jauno paroli \"\n\"divreiz, lai varētu pārbaudīt, ka tā ir uzrakstīta pareizi.\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"Vecā parole\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"Jaunā parole\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"Nomainīt manu paroli\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"Paroles pārstatīšana(reset)\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"Paroles pārstatīšana pabeigta\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"Jūsu parole ir uzstādīta. Varat pieslēgties.\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"Paroles pārstatīšanas apstiprinājums\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"Ievadiet jauno paroli\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"\"\n\"Lūdzu ievadiet jauno paroli divreiz, lai varētu pārbaudīt, ka tā ir \"\n\"uzrakstīta pareizi.\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"Jaunā parole:\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"Apstiprināt paroli:\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"Paroles pārstatīšana nesekmīga\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\"Paroles pārstatīšanas saite bija nekorekta, iespējams, tā jau ir izmantota. \"\n\"Lūdzu pieprasiet paroles pārstatīšanu vēlreiz.\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"Paroles pārstatīšana sekmīga\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"Lūdzu apmeklējiet sekojošo lapu un ievadiet jaunu paroli:\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"Jūsu lietotājvārds, ja gadījumā tas ir aizmirsts:\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"Paldies par mūsu lapas lietošanu!\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"%(site_name)s komanda\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"Paroles pārstatīšana\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"Visi datumi\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"Izvēlēties %s\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"Izvēlēties %s, lai izmainītu\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/lv/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-03-08 10:42+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Latvian (http://www.transifex.com/projects/p/django/language/\"\n\"lv/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: lv\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : \"\n\"2);\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"Pieejams %s\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"Filtrs\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"Izvēlēties visu\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"Izņemt\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"Izvēlies %s\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"%(sel)s no %(cnt)s izvēlēts\"\nmsgstr[1] \"%(sel)s no %(cnt)s izvēlēti\"\nmsgstr[2] \"%(sel)s no %(cnt)s izvēlēti\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\"Jūs neesat saglabājis izmaiņas rediģējamiem laukiem. Ja jūs tagad \"\n\"izpildīsiet izvēlēto darbību, šīs izmaiņas netiks saglabātas.\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\"Jūs esat izvēlējies veikt darbību un neesat saglabājis veiktās izmaiņas. \"\n\"Lūdzu nospiežat OK, lai saglabātu. Jums nāksies šo darbību izpildīt vēlreiz.\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\"Jūs esat izvēlējies veikt darbību un neesat izmainījis nevienu lauku. Jūs \"\n\"droši vien meklējat pogu 'Aiziet' nevis 'Saglabāt'.\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"\"\n\"Janvāris Februāris Marts Aprīlis Maijs Jūnijs Jūlijs Augusts Septembris \"\n\"Oktobris Novembris Decembris\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"S P O T C P S\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"Parādīt\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"Slēpt\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"Tagad\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"Pulkstens\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"Izvēlieties laiku\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"Pusnakts\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"06.00\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"Pusdienas laiks\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"Atcelt\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"Šodien\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"Kalendārs\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"Vakar\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"Rīt\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/mk/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <vvangelovski@gmail.com>, 2012.\n# vvangelovski <vvangelovski@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:52+0000\\n\"\n\"Last-Translator: Ramiro Morales <cramm0@gmail.com>\\n\"\n\"Language-Team: Macedonian (http://www.transifex.com/projects/p/django/\"\n\"language/mk/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: mk\\n\"\n\"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"Успешно беа избришани %(count)d %(items)s.\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"Не може да се избрише %(name)s\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"Сигурни сте?\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"Избриши ги избраните %(verbose_name_plural)s\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"Сите\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"Да\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"Не\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"Непознато\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"Било кој датум\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"Денеска\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"Последните 7 дена\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"Овој месец\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"Оваа година\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"Ве молам најавете се повторно бидејќи вашата сесија е истечена.\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"Акција:\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"време на акција\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"идентификационен број на објект\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"репрезентација на објект\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"знакче за акција\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"измени ја пораката\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"ставка во записникот\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"ставки во записникот\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"Додадено \\\"%(object)s\\\".\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"Променето \\\"%(object)s\\\" - %(changes)s\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"Избришано \\\"%(object)s.\\\"\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"Запис во дневник\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"Ништо\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"Изменета %s.\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"и\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Додадено %(name)s „%(object)s“.\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Изменето %(list)s за %(name)s „%(object)s“.\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Избришан  %(name)s „%(object)s“.\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"Не беше изменето ниедно поле.\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"\"\n\"Ставката %(name)s \\\"%(obj)s\\\" беше успешно додадена. Подолу можете повторно \"\n\"да ја уредите.\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"Ставката %(name)s \\\"%(obj)s\\\" беше успешно додадена.\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" беше успешно изменета.\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\"Мора да се одберат предмети за да се изврши акција врз нив. Ниеден предмет \"\n\"не беше променет.\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"Ниедна акција не е одбрана.\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"Додади %s\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"објект %(name)s со примарен клуч %(key)r не постои.\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"Измени %s\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"Грешка во базата на податоци\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"%(count)s ставка %(name)s беше успешно изменета.\"\nmsgstr[1] \"%(count)s ставки %(name)s беа успешно изменети.\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"%(total_count)s одбран\"\nmsgstr[1] \"Сите %(total_count)s одбрани\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"0 од %(cnt)s избрани\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"Ставаката %(name)s \\\"%(obj)s\\\" беше избришана успешно.\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"Историја на измени: %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"Најава\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"Администрација на сајт\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"%s администрација\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"Датум:\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"Време:\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"Побарај\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"Додади друго\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"Страницата не е најдена\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"Се извинуваме, но неможе да ја најдеме страницата која ја баравте.\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"Дома\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"Грешка со серверот\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"Грешка со серверот (500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"Грешка со серверот <em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"Изврши ја избраната акција\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"Оди\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"Кликнете тука за да изберете објекти низ повеќе страници\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"Избери ги сите %(total_count)s %(module_name)s\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"Откажи го изборот\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"Добредојдовте,\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"Документација\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"Промени лозинка\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"Одјава\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"Џанго администрација на сајт\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"Џанго администрација\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"Додади\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"Историја\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"Погледни на сајтот\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"Ве молам поправете ја грешката подолу.\"\nmsgstr[1] \"Ве молам поправете ги грешките подолу.\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"Додади %(name)s\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"Филтер\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"Отстрани од сортирање\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"Приоритет на сортирање: %(priority_number)s\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"Вклучи/исклучи сортирање\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"Избриши\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"Бришење на %(object_name)s '%(escaped_object)s' ќе резултира со бришење на \"\n\"поврзаните објекти, но со вашата сметка немате доволно привилегии да ги \"\n\"бришете следните типови на објекти:\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\"Бришење на %(object_name)s '%(escaped_object)s' ќе резултира со бришење на \"\n\"следниве заштитени објекти:\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\"Сигурне сте дека сакате да ги бришете %(object_name)s „%(escaped_object)s“? \"\n\"Сите овие ставки ќе бидат избришани:\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"Да, сигурен сум\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"Избриши повеќе ставки\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\"Бришење на избраните %(objects_name)s  ќе резултира со бришење на поврзани \"\n\"објекти, но немате одобрување да ги избришете следниве типови објекти:\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\"Бришење на избраните %(objects_name)s бара бришење на следните поврзани \"\n\"објекти кои се заштитени:\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\"Дали сте сигурни дека сакате да го избришете избраниот %(objects_name)s? \"\n\"Сите овие објекти и оние поврзани со нив ќе бидат избришани:\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \" Според %(filter_title)s \"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"Измени\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"Немате дозвола ништо да уредува.\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"Последни акции\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"Мои акции\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"Ништо не е достапно\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"Непозната содржина\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"Нешто не е во ред со инсталацијата на базата на податоци. Потврдете дека \"\n\"соодветни табели во базата се направени и потврдете дека базата може да биде \"\n\"прочитана од соодветниот корисник.\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"Лозинка:\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"Ја заборавивте вашата лозинка или корисничко име?\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"Датум/час\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"Корисник\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"Акција\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\"Овој објект нема историја на измени. Најверојатно не бил додаден со админ \"\n\"сајтот.\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"Прикажи ги сите\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"Сними\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"Барај\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"%(counter)s резултат\"\nmsgstr[1] \"%(counter)s резултати\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"вкупно %(full_result_count)s\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"Сними како нова\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"Сними и додади уште\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"Сними и продолжи со уредување\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\"Прво, внесете корисничко име и лозинка. Потоа ќе можете да уредувате повеќе \"\n\"кориснички опции.\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"Внесете корисничко име и лозинка.\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"Внесете нова лозинка за корисникот <strong>%(username)s</strong>.\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"Лозинка\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"Лозинка (повторно)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Заради верификација внесете ја истата лозинка како и горе.\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"Отстрани\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"Додадете уште %(verbose_name)s\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"Избриши?\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"\"\n\"Ви благодариме што денеска поминавте квалитетно време со интернет страницава.\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"Најавете се повторно\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"Измена на лозинка\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"Успешна промена на лозинката\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"Вашата лозинка беше сменета.\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"Заради сигурност ве молам внесете ја вашата стара лозинка и потоа внесете ја \"\n\"новата двапати за да може да се потврди дека правилно сте ја искуцале.\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"Стара лозинка\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"Нова лозинка\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"Промени ја мојата лозинка\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"Ресетирање на лозинка\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"Ресетирањето на лозинката заврши\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"Вашата лозинка беше поставена. Сега можете да се најавите.\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"Одобрување за ресетирање на лозинка\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"Внесете нова лозинка\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"\"\n\"Ве молам внесете ја вашата нова лозинка двапати за да може да бидете сигурни \"\n\"дека правилно сте ја внеле.\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"Нова лозинка:\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"Потврди лозинка:\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"Неуспеа ресетирањето на лозинката\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\"Врската за ресетирање на лозинката беше невалидна, најверојатно бидејќи веќе \"\n\"била искористена. Ве молам повторно побарајте ресетирање на вашата лозинката.\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"Успешно е ресетирањето на лозинката\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"Ве молам одите на следната страница и внесете нова лозинка:\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"Вашето корисничко име, во случај да сте го заборавиле:\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"Ви благодариме што го користите овој сајт!\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"Тимот на %(site_name)s\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"Ресетирај ја мојата лозинка\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"Сите датуми\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"(Ништо)\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"Изберете %s\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"Изберете %s за измена\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/mk/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <vvangelovski@gmail.com>, 2012.\n# vvangelovski <vvangelovski@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-03-12 11:27+0000\\n\"\n\"Last-Translator: vvangelovski <vvangelovski@gmail.com>\\n\"\n\"Language-Team: Macedonian (http://www.transifex.com/projects/p/django/\"\n\"language/mk/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: mk\\n\"\n\"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"Достапно %s\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Ова е листа на достапни %s. Можете да изберете неколку кликајќи на нив во \"\n\"полето подолу и со кликање на стрелката \\\"Одбери\\\" помеѓу двете полиња.\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"Пишувајте во ова поле за да ја филтрирате листата на достапни %s.\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"Филтер\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"Избери ги сите\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"Кликнете за да ги изберете сите %s од еднаш.\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"Изберете\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"Отстрани\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"Избрано %s\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Ова е листа на избрани %s. Можете да отстраните неколку кликајќи на нив во \"\n\"полето подолу и со кликање на стрелката \\\"Отстрани\\\" помеѓу двете полиња.\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"Отстрани ги сите\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"Кликнете за да ги отстраните сите одбрани  %s одеднаш.\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"избрано %(sel)s од %(cnt)s\"\nmsgstr[1] \"избрани %(sel)s од %(cnt)s\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\"Имате незачувани промени на поединечни полиња. Ако извршите акција вашите \"\n\"незачувани промени ќе бидат изгубени.\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\"Избравте акција, но сеуште ги немате зачувано вашите промени на поединечни \"\n\"полиња. Кликнете ОК за да ги зачувате. Ќе треба повторно да ја извршите \"\n\"акцијата.\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\"Избравте акција и немате направено промени на поединечни полиња. Веројатно \"\n\"го барате копчето Оди наместо Зачувај.\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"\"\n\"Јануари Февруари Март Април Мај Јуни Јули Август Септември Октомври Ноември \"\n\"Декември\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"Н П В С Ч П С\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"Прикажи\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"Сокриј\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"Сега\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"Часовник\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"Избери време\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"Полноќ\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"6 наутро\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"Пладне\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"Откажи\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"Денеска\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"Календар\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"Вчера\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"Утре\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/ml/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Junaid  <junu.pv@gmail.com>, 2012.\n# Rajeesh Nair <rajeeshrnair@gmail.com>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:52+0000\\n\"\n\"Last-Translator: Ramiro Morales <cramm0@gmail.com>\\n\"\n\"Language-Team: Malayalam (http://www.transifex.com/projects/p/django/\"\n\"language/ml/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ml\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"%(count)d %(items)s വിജയകരമായി ഡിലീറ്റ് ചെയ്തു.\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"Cannot delete %(name)s\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"തീര്‍ച്ചയാണോ?\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"തെരഞ്ഞെടുത്ത %(verbose_name_plural)s ഡിലീറ്റ് ചെയ്യുക.\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"എല്ലാം\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"അതെ\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"അല്ല\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"അജ്ഞാതം\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"ഏതെങ്കിലും തീയതി\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"ഇന്ന്\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"കഴിഞ്ഞ ഏഴു ദിവസം\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"ഈ മാസം\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"ഈ വര്‍ഷം\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"താങ്കളുടെ സെഷന്റെ കാലാവധി കഴിഞ്ഞു. വീണ്ടും ലോഗിന്‍ ചെയ്യണം.\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"ആക്ഷന്‍\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"ആക്ഷന്‍ സമയം\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"ഒബ്ജെക്ട് ഐഡി\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"ഒബ്ജെക്ട് സൂചന\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"ആക്ഷന്‍ ഫ്ളാഗ്\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"സന്ദേശം മാറ്റുക\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"ലോഗ് എന്ട്രി\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"ലോഗ് എന്ട്രികള്‍\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"\\\"%(object)s\\\" ചേര്‍ത്തു.\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"\\\"%(object)s\\\"ല്‍ %(changes)s മാറ്റം വരുത്തി\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"\\\"%(object)s\\\" നീക്കം ചെയ്തു.\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"ലോഗ്‌എന്‍ട്രി വസ്തു\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"ഒന്നുമില്ല\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"%s മാറ്റി.\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"ഉം\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"%(name)s \\\"%(object)s\\\" ചേര്‍ത്തു.\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"%(name)s \\\"%(object)s\\\" ന്റെ %(list)s മാറ്റി.\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"%(name)s \\\"%(object)s\\\" ഡിലീറ്റ് ചെയ്തു.\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"ഒരു മാറ്റവുമില്ല.\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" കൂട്ടി ചേര്‍ത്തു. താഴെ നിന്നും മാറ്റം വരുത്താം.\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" വിജയകരമായി കൂട്ടിച്ചേര്ത്തു.\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" ല്‍ മാറ്റം വരുത്തി.\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"ആക്ഷന്‍ നടപ്പിലാക്കേണ്ട വകകള്‍ തെരഞ്ഞെടുക്കണം. ഒന്നും മാറ്റിയിട്ടില്ല.\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"ആക്ഷനൊന്നും തെരഞ്ഞെടുത്തില്ല.\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"%s ചേര്‍ക്കുക\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"%(key)r എന്ന പ്രാഥമിക കീ ഉള്ള %(name)s വസ്തു ഒന്നും നിലവിലില്ല.\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"%s മാറ്റാം\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"ഡേറ്റാബേസ് തകരാറാണ്.\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"%(count)s %(name)s ല്‍ മാറ്റം വരുത്തി.\"\nmsgstr[1] \"%(count)s %(name)s ല്‍ മാറ്റം വരുത്തി.\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"%(total_count)s തെരഞ്ഞെടുത്തു.\"\nmsgstr[1] \"%(total_count)sഉം തെരഞ്ഞെടുത്തു.\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"%(cnt)s ല്‍ ഒന്നും തെരഞ്ഞെടുത്തില്ല.\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" ഡിലീറ്റ് ചെയ്തു.\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"%s ലെ മാറ്റങ്ങള്‍.\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"ലോഗ്-ഇന്‍\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"സൈറ്റ് ഭരണം\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"%s ഭരണം\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"തീയതി:\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"സമയം:\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"തിരയുക\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"ഒന്നു കൂടി ചേര്‍ക്കുക\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"പേജ് കണ്ടില്ല\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"ക്ഷമിക്കണം, ആവശ്യപ്പെട്ട പേജ് കണ്ടെത്താന്‍ കഴിഞ്ഞില്ല.\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"പൂമുഖം\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"സെര്‍വര്‍ തകരാറാണ്\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"സെര്‍വര്‍ തകരാറാണ് (500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"സെര്‍വര്‍ തകരാറാണ് <em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"തെരഞ്ഞെടുത്ത ആക്ഷന്‍ നടപ്പിലാക്കുക\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"Go\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"എല്ലാ പേജിലേയും വസ്തുക്കള്‍ തെരഞ്ഞെടുക്കാന്‍ ഇവിടെ ക്ലിക് ചെയ്യുക.\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"മുഴുവന്‍ %(total_count)s %(module_name)s ഉം തെരഞ്ഞെടുക്കുക\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"തെരഞ്ഞെടുത്തത് റദ്ദാക്കുക.\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"സ്വാഗതം, \"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"സഹായക്കുറിപ്പുകള്‍\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"പാസ് വേര്‍ഡ് മാറ്റുക.\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"പുറത്ത് കടക്കുക.\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"ജാംഗോ സൈറ്റ് അഡ്മിന്‍\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"ജാംഗോ ഭരണം\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"Add\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"ചരിത്രം\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"View on site\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"ദയവായി താഴെയുള്ള തെറ്റ് പരിഹരിക്കുക.\"\nmsgstr[1] \"ദയവായി താഴെയുള്ള തെറ്റുകള്‍ പരിഹരിക്കുക.\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"Add %(name)s\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"Filter\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"ക്രമീകരണത്തില്‍ നിന്നും ഒഴിവാക്കുക\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"ക്രമീകരണത്തിനുള്ള മുന്‍ഗണന: %(priority_number)s\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"ക്രമീകരണം വിപരീത ദിശയിലാക്കുക.\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"Delete\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"%(object_name)s '%(escaped_object)s ഡിലീറ്റ് ചെയ്യുമ്പോള്‍ അതുമായി ബന്ധമുള്ള \"\n\"വസ്തുക്കളുംഡിലീറ്റ് ആവും. പക്ഷേ നിങ്ങള്‍ക്ക് താഴെ പറഞ്ഞ തരം വസ്തുക്കള്‍ ഡിലീറ്റ് ചെയ്യാനുള്ള അനുമതി \"\n\"ഇല്ല:\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\"%(object_name)s \\\"%(escaped_object)s\\\" ഡിലീറ്റ് ചെയ്യണമെന്ന് തീര്‍ച്ചയാണോ?അതുമായി \"\n\"ബന്ധമുള്ള താഴെപ്പറയുന്ന വസ്തുക്കളെല്ലാം ഡിലീറ്റ് ആവും:\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"അതെ, തീര്‍ച്ചയാണ്\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"ഒന്നിലേറെ വസ്തുക്കള്‍ ഡിലീറ്റ് ചെയ്തോളൂ\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \" By %(filter_title)s \"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"മാറ്റുക\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"ഒന്നിലും മാറ്റം വരുത്താനുള്ള അനുമതി ഇല്ല.\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"സമീപകാല പ്രവ്രുത്തികള്‍\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"എന്റെ പ്രവ്രുത്തികള്‍\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"ഒന്നും ലഭ്യമല്ല\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"ഉള്ളടക്കം അറിയില്ല.\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"നിങ്ങളുടെ ഡേറ്റാബേസ് ഇന്‍സ്ടാലേഷനില്‍ എന്തോ പിശകുണ്ട്. ശരിയായ ടേബിളുകള്‍ ഉണ്ടെന്നും ഡേറ്റാബേസ് \"\n\"വായനായോഗ്യമാണെന്നും ഉറപ്പു വരുത്തുക.\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"പാസ് വേര്‍ഡ്\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"രഹസ്യവാക്കോ ഉപയോക്തൃനാമമോ മറന്നുപോയോ?\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"തീയതി/സമയം\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"യൂസര്‍\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"ആക്ഷന്‍\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\"ഈ വസ്തുവിന്റെ മാറ്റങ്ങളുടെ ചരിത്രം ലഭ്യമല്ല. ഒരുപക്ഷെ ഇത് അഡ്മിന്‍ സൈറ്റ് വഴി \"\n\"ചേര്‍ത്തതായിരിക്കില്ല.\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"എല്ലാം കാണട്ടെ\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"സേവ് ചെയ്യണം\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"പരതുക\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"%(counter)s results\"\nmsgstr[1] \"%(counter)s results\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"ആകെ %(full_result_count)s\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"പുതിയതായി സേവ് ചെയ്യണം\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"സേവ് ചെയ്ത ശേഷം വേറെ ചേര്‍ക്കണം\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"സേവ് ചെയ്ത ശേഷം മാറ്റം വരുത്താം\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"ആദ്യം, യൂസര്‍ നാമവും പാസ് വേര്‍ഡും നല്കണം. പിന്നെ, കൂടുതല്‍ കാര്യങ്ങള്‍ മാറ്റാവുന്നതാണ്.\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"Enter a username and password.\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"<strong>%(username)s</strong> ന് പുതിയ പാസ് വേര്‍ഡ് നല്കുക.\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"പാസ് വേര്‍ഡ്\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"പാസ് വേര്‍ഡ് (വീണ്ടും)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"പാസ് വേര്‍ഡ് മുകളിലെ പോലെ തന്നെ നല്കുക. (ഉറപ്പു വരുത്താനാണ്.)\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"നീക്കം ചെയ്യുക\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"%(verbose_name)s ഒന്നു കൂടി ചേര്‍ക്കുക\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"ഡിലീറ്റ് ചെയ്യട്ടെ?\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"ഈ വെബ് സൈറ്റില്‍ കുറെ നല്ല സമയം ചെലവഴിച്ചതിനു നന്ദി.\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"വീണ്ടും ലോഗ്-ഇന്‍ ചെയ്യുക.\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"പാസ് വേര്‍ഡ് മാറ്റം\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"പാസ് വേര്‍ഡ് മാറ്റം വിജയിച്ചു\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"നിങ്ങളുടെ പാസ് വേര്‍ഡ് മാറ്റിക്കഴിഞ്ഞു.\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"സുരക്ഷയ്ക്കായി നിങ്ങളുടെ പഴയ പാസ് വേര്‍ഡ് നല്കുക. പിന്നെ, പുതിയ പാസ് വേര്‍ഡ് രണ്ട് തവണ നല്കുക. \"\n\"(ടയ്പ് ചെയ്തതു ശരിയാണെന്ന് ഉറപ്പാക്കാന്‍)\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"പഴയ പാസ് വേര്‍ഡ്\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"പുതിയ പാസ് വേര്‍ഡ്\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"എന്റെ പാസ് വേര്‍ഡ് മാറ്റണം\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"പാസ് വേര്‍ഡ് പുനസ്ഥാപിക്കല്‍\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"പാസ് വേര്‍ഡ് പുനസ്ഥാപിക്കല്‍ പൂര്‍ണം\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"നിങ്ങളുടെ പാസ് വേര്‍ഡ് തയ്യാര്‍. ഇനി ലോഗ്-ഇന്‍ ചെയ്യാം.\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"പാസ് വേര്‍ഡ് പുനസ്ഥാപിക്കല്‍ ഉറപ്പാക്കല്‍\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"പുതിയ പാസ് വേര്‍ഡ് നല്കൂ\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"\"\n\"ദയവായി നിങ്ങളുടെ പുതിയ പാസ് വേര്‍ഡ് രണ്ടു തവണ നല്കണം. ശരിയായാണ് ടൈപ്പു ചെയ്തത് എന്നു \"\n\"ഉറപ്പിക്കാനാണ്.\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"പുതിയ പാസ് വേര്‍ഡ്:\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"പാസ് വേര്‍ഡ് ഉറപ്പാക്കൂ:\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"പാസ് വേര്‍ഡ് പുനസ്ഥാപിക്കല്‍ പരാജയം\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\"പാസ് വേര്‍ഡ് പുനസ്ഥാപിക്കാന്‍ നല്കിയ ലിങ്ക് യോഗ്യമല്ല. ഒരു പക്ഷേ, അതു മുന്പ് തന്നെ ഉപയോഗിച്ചു \"\n\"കഴിഞ്ഞതാവാം. പുതിയ ഒരു ലിങ്കിന് അപേക്ഷിക്കൂ.\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"പാസ് വേര്‍ഡ് പുനസ്ഥാപിക്കല്‍ വിജയം\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"ദയവായി താഴെ പറയുന്ന പേജ് സന്ദര്‍ശിച്ച് പുതിയ പാസ് വേര്‍ഡ് തെരഞ്ഞെടുക്കുക:\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"നിങ്ങള്‍ മറന്നെങ്കില്‍, നിങ്ങളുടെ യൂസര്‍ നാമം, :\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"ഞങ്ങളുടെ സൈറ്റ് ഉപയോഗിച്ചതിന് നന്ദി!\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"The %(site_name)s team\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"എന്റെ പാസ് വേര്‍ഡ് പുനസ്ഥാപിക്കൂ\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"എല്ലാ തീയതികളും\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"(None)\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"%s തെരഞ്ഞെടുക്കൂ\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"മാറ്റാനുള്ള %s തെരഞ്ഞെടുക്കൂ\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/ml/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Rajeesh Nair <rajeeshrnair@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-03-08 18:23+0000\\n\"\n\"Last-Translator: Rajeesh Nair <rajeeshrnair@gmail.com>\\n\"\n\"Language-Team: Malayalam (http://www.transifex.com/projects/p/django/\"\n\"language/ml/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ml\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"ലഭ്യമായ %s\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"ഇതാണ് ലഭ്യമായ %s പട്ടിക. അതില്‍ ചിലത് തിരഞ്ഞെടുക്കാന്‍ താഴെ കളത്തില്‍ നിന്നും ഉചിതമായവ സെലക്ട് \"\n\"ചെയ്ത ശേഷം രണ്ടു കളങ്ങള്‍ക്കുമിടയിലെ \\\"തെരഞ്ഞെടുക്കൂ\\\" അടയാളത്തില്‍ ക്ലിക് ചെയ്യുക.\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"ലഭ്യമായ %s പട്ടികയെ ഫില്‍ട്ടര്‍ ചെയ്തെടുക്കാന്‍ ഈ ബോക്സില്‍ ടൈപ്പ് ചെയ്യുക.\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"Filter\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"എല്ലാം തെരഞ്ഞെടുക്കുക\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"%s എല്ലാം ഒന്നിച്ച് തെരഞ്ഞെടുക്കാന്‍ ക്ലിക് ചെയ്യുക.\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"തെരഞ്ഞെടുക്കൂ\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"നീക്കം ചെയ്യൂ\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"തെരഞ്ഞെടുത്ത %s\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"തെരഞ്ഞെടുക്കപ്പെട്ട %s പട്ടികയാണിത്. അവയില്‍ ചിലത് ഒഴിവാക്കണമെന്നുണ്ടെങ്കില്‍ താഴെ കളത്തില്‍ \"\n\"നിന്നും അവ സെലക്ട് ചെയ്ത്  കളങ്ങള്‍ക്കിടയിലുള്ള \\\"നീക്കം ചെയ്യൂ\\\" എന്ന അടയാളത്തില്‍ ക്ലിക് ചെയ്യുക.\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"എല്ലാം നീക്കം ചെയ്യുക\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"തെരഞ്ഞെടുക്കപ്പെട്ട %s എല്ലാം ഒരുമിച്ച് നീക്കം ചെയ്യാന്‍ ക്ലിക് ചെയ്യുക.\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"%(cnt)sല്‍ %(sel)s തെരഞ്ഞെടുത്തു\"\nmsgstr[1] \"%(cnt)sല്‍ %(sel)s എണ്ണം തെരഞ്ഞെടുത്തു\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\"വരുത്തിയ മാറ്റങ്ങള്‍ സേവ് ചെയ്തിട്ടില്ല. ഒരു ആക്ഷന്‍ പ്രയോഗിച്ചാല്‍ സേവ് ചെയ്യാത്ത മാറ്റങ്ങളെല്ലാം \"\n\"നഷ്ടപ്പെടും.\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\"നിങ്ങള്‍ ഒരു ആക്ഷന്‍ തെരഞ്ഞെടുത്തിട്ടുണ്ട്. പക്ഷേ, കളങ്ങളിലെ മാറ്റങ്ങള്‍ ഇനിയും സേവ് ചെയ്യാനുണ്ട്. \"\n\"ആദ്യം സേവ്ചെയ്യാനായി OK ക്ലിക് ചെയ്യുക. അതിനു ശേഷം ആക്ഷന്‍ ഒന്നു കൂടി പ്രയോഗിക്കേണ്ടി വരും.\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\"നിങ്ങള്‍ ഒരു ആക്ഷന്‍ തെരഞ്ഞെടുത്തിട്ടുണ്ട്. കളങ്ങളില്‍ സേവ് ചെയ്യാത്ത മാറ്റങ്ങള്‍ ഇല്ല. നിങ്ങള്‍സേവ് ബട്ടണ്‍ \"\n\"തന്നെയാണോ അതോ ഗോ ബട്ടണാണോ ഉദ്ദേശിച്ചത്.\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"ജനുവരി ഫെബൃവരി മാര്‍ച്ച് ഏപ്രില്‍ മെയ് ജൂണ്‍ ജൂലൈ ആഗസ്ത് സെപ്തംബര്‍ ഒക്ടോബര്‍ നവംബര്‍ ഡിസംബര്‍\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"ഞാ തി ചൊ ബു വ്യാ വെ ശ\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"കാണട്ടെ\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"മറയട്ടെ\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"ഇപ്പോള്‍\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"ഘടികാരം (ക്ലോക്ക്)\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"സമയം തെരഞ്ഞെടുക്കൂ\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"അര്‍ധരാത്രി\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"6 a.m.\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"ഉച്ച\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"റദ്ദാക്കൂ\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"ഇന്ന്\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"കലണ്ടര്‍\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"ഇന്നലെ\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"നാളെ\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/mn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# jargalan <jargalanch@gmail.com>, 2011.\n# Анхбаяр Анхаа <l.ankhbayar@gmail.com>, 2011-2013.\n# Баясгалан Цэвлээ <bayasaa_7672@yahoo.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-02-04 07:00+0000\\n\"\n\"Last-Translator: Анхбаяр Анхаа <l.ankhbayar@gmail.com>\\n\"\n\"Language-Team: Mongolian (http://www.transifex.com/projects/p/django/\"\n\"language/mn/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: mn\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"%(items)s ээс   %(count)d-ийг амжилттай устгалаа.\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"%(name)s устгаж чадахгүй.\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"Итгэлтэй байна уу?\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"Сонгосон %(verbose_name_plural)s-ийг устга\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"Бүх \"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"Тийм\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"Үгүй\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"Тодорхойгүй\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"Бүх өдөр\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"Өнөөдөр\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"Өнгөрсөн долоо хоног\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"Энэ сар\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"Энэ жил\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\"Ажилтан хэрэглэгчийн %(username)s ба нууц үгийг зөв оруулна уу. Хоёр талбарт \"\n\"том жижигээр үсгээр бичих ялгаатай.\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"Орсон хуудас тань хүчингүй болсон тул ахин нэвтрэнэ үү.\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"Үйлдэл:\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"үйлдлийн хугацаа\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"обектийн id\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"обектийн хамаарал\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"үйлдэлийн тэмдэг\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"өөрчлөлтийн мэдээлэл\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"лог өгөгдөл\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"лог өгөгдөлүүд\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"\\\"%(object)s\\\" нэмсэн.\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"\\\"%(object)s\\\"-ийг %(changes)s өөрчилсөн.\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"\\\"%(object)s\\\" устгасан.\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"Лог бүртгэлийн обект\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"Хоосон\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"Өөрчлөгдсөн %s.\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"ба\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Нэмэгдсэн %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"%(name)s \\\"%(object)s\\\"-ийн өөрчлөгдсөн %(list)s\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Устгасан %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"Өөрчилсөн талбар алга байна.\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" амжилттай нэмэгдлээ. Доорх хэсэгт үүнийг ахин засварлах \"\n\"боломжтой.\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" амжилттай нэмэгдлээ. Доорх хэсгээс %(name)s өөрийн \"\n\"нэмэх боломжтой.\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \" %(name)s \\\"%(obj)s\\\" амжилттай нэмэгдлээ.\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" амжилттай өөрчлөгдлөө. Доорх хэсэгт дахин засах \"\n\"боломжтой.\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" амжилттай өөрчлөгдлөө. Доорх %(name)s хэсгээс дахин \"\n\"нэмэх боломжтой.\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \" %(name)s \\\"%(obj)s\\\" амжилттай өөрчлөгдлөө. \"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\"Үйлдэл хийхийн тулд Та ядаж 1-ийг сонгох хэрэгтэй. Өөрчилөлт хийгдсэнгүй.\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"Үйлдэл сонгоогүй.\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"%s-ийг нэмэх\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"%(name)s обектийн үндсэн түлхүүр %(key)r олдохгүй байна.\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"%s-ийг өөрчлөх\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"Өгөгдлийн сангийн алдаа\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"%(count)s %(name)s-ийг амжилттай өөрчиллөө.\"\nmsgstr[1] \"%(count)s %(name)s-ийг амжилттай өөрчиллөө.\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"Бүгд %(total_count)s сонгогдсон\"\nmsgstr[1] \"Бүгд %(total_count)s сонгогдсон\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"%(cnt)s оос 0 сонгосон\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \" %(name)s \\\"%(obj)s\\\" амжилттай устгагдлаа.\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"Өөрчлөлтийн түүх: %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"Нэвтрэх\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"Сайтын удирдлага\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"%s  удирдлага\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"Огноо:\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"Цаг:\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"Хайх\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"Ахиад нэмэх\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"Одоогийнх:\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"Өөрчилөлт:\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"Хуудас олдсонгүй.\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"Уучлаарай, хандахыг хүссэн хуудас тань олдсонгүй.\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"Нүүр\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"Серверийн алдаа\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"Серверийн алдаа (500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"Серверийн алдаа <em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\"Алдаа гарсан байна. Энэ алдааг сайт хариуцагчид цахим шуудангаар мэдэгдсэн \"\n\"бөгөөд тэд нэн даруй засах хэрэгтэй. Хүлээцтэй хандсанд баярлалаа.\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"Сонгосон үйлдэлийг ажилуулах\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"Гүйцэтгэх\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"Бүх хуудаснууд дээрх объектуудыг сонгох\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"Бүгдийг сонгох %(total_count)s %(module_name)s\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"Сонгосонг цэвэрлэх\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"Тавтай морилно уу\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"Баримтжуулалт\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"Нууц үг өөрчлөх\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"Гарах\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"Сайтын удирдлага\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"Удирдлага\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"Нэмэх\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"Түүх\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"Сайтаас харах\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"Доорх алдааг засна уу.\"\nmsgstr[1] \"Доорх алдаануудыг засна уу.\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"%(name)s нэмэх\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"Шүүлтүүр\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"Эрэмблэлтээс хасах\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"Эрэмблэх урьтамж: %(priority_number)s\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"Эрэмбэлэлтийг харуул\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"Устгах\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"%(object_name)s '%(escaped_object)s'-ийг устгавал холбогдох объект нь устах \"\n\"ч бүртгэл тань дараах төрлийн объектуудийг устгах зөвшөөрөлгүй байна:\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\" %(object_name)s обектийг устгаж байна. '%(escaped_object)s' холбоотой \"\n\"хамгаалагдсан обектуудыг заавал утсгах хэрэгтэй :\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\"Та %(object_name)s \\\"%(escaped_object)s\\\"-ийг устгахдаа итгэлтэй байна уу? \"\n\"Үүнийг устгавал дараах холбогдох зүйлс нь бүгд устана:\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"Тийм, итгэлтэй байна.\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"Олон обектууд устгах\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\"Сонгосон %(objects_name)s обектуудыг устгасанаар хамаатай бүх обкетууд устах \"\n\"болно. Гэхдээ таньд эрх эдгээр төрлийн обектуудыг утсгах эрх байхгүй байна: \"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\"%(objects_name)s обектуудыг утсгаж байна дараах холбоотой хамгаалагдсан \"\n\"обектуудыг устгах шаардлагатай:\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\"Та %(objects_name)s ийг устгах гэж байна итгэлтэй байна? Дараах обектууд \"\n\"болон холбоотой зүйлс хамт устагдах болно:\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \" %(filter_title)s -ээр\"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"%(name)s хэрэглүүр дэх моделууд.\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"Өөрчлөх\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"Та ямар нэг зүйл засварлах зөвшөөрөлгүй байна.\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"Сүүлд хийсэн үйлдлүүд\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"Миний үйлдлүүд\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"Үйлдэл алга\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"Тодорхойгүй агуулга\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"Өгөгдлийн сангийн ямар нэг зүйл буруу суугдсан байна. Өгөгдлийн сангийн \"\n\"зохих хүснэгт үүсгэгдсэн эсэх, өгөгдлийн санг зохих хэрэглэгч унших \"\n\"боломжтой байгаа эсэхийг шалгаарай.\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"Нууц үг:\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"Таны мартсан нууц үг эсвэл нэрвтэр нэр?\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"Огноо/цаг\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"Хэрэглэгч\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"Үйлдэл\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\"Уг объектэд өөрчлөлтийн түүх байхгүй байна. Магадгүй үүнийг уг удирдлагын \"\n\"сайтаар дамжуулан нэмээгүй байх.\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"Бүгдийг харуулах\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"Хадгалах\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"Хайлт\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"%(counter)s үр дүн\"\nmsgstr[1] \"%(counter)s үр дүн\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"Нийт %(full_result_count)s\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"Шинээр хадгалах\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"Хадгалаад өөрийг нэмэх\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"Хадгалаад нэмж засах\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\"Эхлээд хэрэглэгчийн нэр нууц үгээ оруулна уу. Ингэснээр та хэрэглэгчийн \"\n\"сонголтыг нэмж засварлах боломжтой болно. \"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"Хэрэглэгчийн нэр ба нууц үгээ оруулна.\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"<strong>%(username)s</strong>.хэрэглэгчид шинэ нууц үг оруулна уу.\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"Нууц үг \"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"Нууц үг (ахиад)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Батлахын тулд дээрх нууц үгээ ахин хийнэ үү.\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"Хасах\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"Өөр %(verbose_name)s  нэмэх \"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"Устгах уу?\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"Манай вэб сайтыг ашигласанд баярлалаа.\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"Ахин нэвтрэх \"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"Нууц үгийн өөрчлөлт\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"Нууц үгийн өөрчлөлт амжилттай\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"Нууц үг тань өөрчлөгдлөө.\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"Аюулгүй байдлын үүднээс хуучин нууц үгээ оруулаад шинэ нууц үгээ хоёр удаа \"\n\"хийнэ үү. Ингэснээр нууц үгээ зөв бичиж байгаа эсэхийг тань шалгах юм.\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"Хуучин нууц үг\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"Шинэ нууц үг\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"Нууц үгээ  солих\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"Нууц үг шинэчилэх\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"Нууц үг шинэчилэх явц дууслаа\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"Та нууц үгтэй боллоо. Одоо бүртгэлд нэвтрэх боломжтой.\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"Нууц үг шинэчилэхийг баталгаажуулах\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"Шинэ нууц үг оруулах\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"\"\n\"Шинэ нууц үгээ хоёр удаа оруулна уу. Ингэснээр нууц үгээ зөв бичиж байгаа \"\n\"эсэхийг тань шалгах юм. \"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"Шинэ нууц үг:\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"Нууц үгээ батлах:\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"Нууц үг шинэчилэх амжилтгүй боллоо\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\"Нууц үг авах холбоос болохгүй байна. Үүнийг аль хэдийнэ хэрэглэснээс болсон \"\n\"байж болзошгүй.  Шинэ нууц үг авахаар хүсэлт гаргана уу. \"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"Нууц үг шинэчилэх амжилттай боллоо\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\"Таны оруулсан цахим шуудангийн хаягруу нууц үг сэргээх зааварчилгааг \"\n\"илгээлээ. Энэ зааварчилгаа танд удахгүй очих болно.\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\"%(site_name)s сайтанд бүртгүүлсэн эрхийн нууц үгийг сэргээх хүсэлт гаргасан \"\n\"учир энэ имайл ийг та хүлээн авсан болно. \"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"Дараах хуудас руу орон шинэ нууц үг сонгоно уу:\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"Хэрэглэгчийн нэрээ мартсан бол :\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"Манай сайтыг хэрэглэсэнд баярлалаа!\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"%(site_name)s баг\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\"Нууц үгээ мартчихсан уу? Доорх хэсэгт цахим шуудангийн хаягаа оруулвал бид \"\n\"хаягаар тань нууц үг сэргэх зааварчилгаа явуулах болно.\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"ИМайл хаяг:\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"Нууц үгээ шинэчлэх\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"Бүх огноо\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"(Хоосон)\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"%s-г сонго\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"Өөрчлөх %s-г сонгоно уу\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/mn/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <mnts26@gmail.com>, 2012.\n# Анхбаяр Анхаа <l.ankhbayar@gmail.com>, 2011, 2012.\n# Ганзориг БП <ganzo.bp@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-03-15 04:32+0000\\n\"\n\"Last-Translator: Анхбаяр Анхаа <l.ankhbayar@gmail.com>\\n\"\n\"Language-Team: Mongolian (http://www.transifex.com/projects/p/django/\"\n\"language/mn/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: mn\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"Боломжтой %s\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Энэ %s жагсаалт нь боломжит утгын жагсаалт. Та аль нэгийг нь сонгоод \\\"Сонгох\"\n\"\\\" дээр дарж нөгөө хэсэгт оруулах боломжтой.\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"Энэ нүдэнд бичээд дараах %s жагсаалтаас шүүнэ үү. \"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"Шүүлтүүр\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"Бүгдийг нь сонгох\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"Бүгдийг сонгох бол %s дарна уу\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"Сонгох\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"Хас\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"Сонгогдсон %s\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Энэ %s сонгогдсон утгуудыг жагсаалт. Та аль нэгийг нь хасахыг хүсвэл сонгоох \"\n\"\\\"Хас\\\" дээр дарна уу.\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"Бүгдийг арилгах\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"%s ийн сонгоод бүгдийг нь арилгана\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"%(sel)s ээс %(cnt)s сонгосон\"\nmsgstr[1] \"%(sel)s ээс %(cnt)s сонгосон\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\"Хадгалаагүй өөрчлөлтүүд байна. Энэ үйлдэлийг хийвэл өөрчлөлтүүд устах болно.\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\"Та 1 үйлдлийг сонгосон байна, гэвч та өөрийн өөрчлөлтүүдээ тодорхой \"\n\"талбаруудад нь оруулагүй байна. OK дарж сануулна уу. Энэ үйлдлийг та дахин \"\n\"хийх шаардлагатай.\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\"Та 1 үйлдлийг сонгосон байна бас та ямарваа өөрчлөлт оруулсангүй. Та Save \"\n\"товчлуур биш Go товчлуурыг хайж байгаа бололтой.\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"Хулгана Үхэр Бар Туулай Луу Могой Морь Хонь Бич Тахиа Нохой Гахай\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"Ня Да Мя Лх Пү Ба Бя\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"Үзэх\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"Нуух\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"Одоо\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"Цаг\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"Цаг сонгох\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"Шөнө дунд\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"6 цаг\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"Үд дунд\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"Болих\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"Өнөөдөр\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"Хуанли\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"Өчигдөр\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"Маргааш\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/nb/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#  <jonklo@gmail.com>, 2013.\n#   <jonklo@gmail.com>, 2012-2013.\n# jonklo <jonklo@gmail.com>, 2011.\n#   <sigurdga-transifex@sigurdga.no>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-03-06 17:00+0000\\n\"\n\"Last-Translator: jonklo <jonklo@gmail.com>\\n\"\n\"Language-Team: Norwegian Bokmål (http://www.transifex.com/projects/p/django/\"\n\"language/nb/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: nb\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"Slettet %(count)d %(items)s.\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"Kan ikke slette %(name)s\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"Er du sikker?\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"Slett valgte %(verbose_name_plural)s\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"Alle\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"Ja\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"Nei\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"Ukjent\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"Når som helst\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"I dag\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"Siste syv dager\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"Denne måneden\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"I år\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\"Vennligst oppgi gyldig %(username)s og passord til en \"\n\"administrasjonsbrukerkonto. Merk at det er forskjell på små og store \"\n\"bokstaver.\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"Økten din har tidsavbrutt, vennligst logg inn igjen.\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"Handling:\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"tid for handling\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"objekt-ID\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"objekt-repr\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"handlingsflagg\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"endre melding\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"logginnlegg\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"logginnlegg\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"La til «%(object)s».\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"Endret «%(object)s» - %(changes)s\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"Slettet «%(object)s».\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"LogEntry-objekt\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"Ingen\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"Endret %s.\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"og\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Opprettet %(name)s «%(object)s».\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Endret %(list)s for %(name)s «%(object)s».\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Slettet %(name)s «%(object)s».\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"Ingen felt endret.\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"%(name)s «%(obj)s» ble lagt til. Du kan redigere videre nedenfor.\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" ble lagt til. Du kan legge til en ny %(name)s nedenfor.\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"%(name)s «%(obj)s» ble lagt til.\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" ble endret. Du kan redigere videre nedenfor.\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" ble endret. Du kan legge til en ny %(name)s nedenfor.\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"%(name)s «%(obj)s» ble endret.\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\"Du må velge objekter for å utføre handlinger på dem. Ingen objekter har \"\n\"blitt endret.\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"Ingen handling valgt.\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"Legg til ny %s\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"%(name)s-objekt med primærnøkkelen %(key)r finnes ikke.\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"Endre %s\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"Databasefeil\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"%(count)s %(name)s ble endret.\"\nmsgstr[1] \"%(count)s %(name)s ble endret.\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"%(total_count)s valgt\"\nmsgstr[1] \"Alle %(total_count)s valgt\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"0 av %(cnt)s valgt\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"%(name)s «%(obj)s» ble slettet.\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"Endringshistorikk: %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"Logg inn\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"Nettstedsadministrasjon\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"%s-administrasjon\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"Dato:\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"Tid:\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"Oppslag\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"Legg til ny\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"Nåværende:\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"Endre:\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"Fant ikke siden\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"Beklager, men siden du spør etter finnes ikke.\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"Hjem\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"Tjenerfeil\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"Tjenerfeil (500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"Tjenerfeil <em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\"Det har oppstått en feil. Feilen er blitt rapportert til administrator via e-\"\n\"post, og vil bli fikset snart. Takk for din tålmodighet.\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"Utfør den valgte handlingen\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"Gå\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"Trykk her for å velge samtlige objekter fra alle sider\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"Velg alle %(total_count)s %(module_name)s\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"Nullstill valg\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"Velkommen,\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"Dokumentasjon\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"Endre passord\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"Logg ut\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"Django administrasjonsside\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"Django-administrasjon\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"Legg til\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"Historikk\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"Vis på nettsted\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"Vennligst korriger feilen under.\"\nmsgstr[1] \"Vennligst korriger feilene under.\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"Legg til ny %(name)s\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"Filtrering\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"Fjern fra sortering\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"Sorteringsprioritet: %(priority_number)s\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"Slå av og på sortering\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"Slett\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"Om du sletter %(object_name)s «%(escaped_object)s», vil også relaterte \"\n\"objekter slettes, men du har ikke tillatelse til å slette følgende \"\n\"objekttyper:\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\"Sletting av %(object_name)s «%(escaped_object)s» krever sletting av følgende \"\n\"beskyttede relaterte objekter:\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\"Er du sikker på at du vil slette %(object_name)s «%(escaped_object)s»? Alle \"\n\"de følgende relaterte objektene vil bli slettet:\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"Ja, jeg er sikker\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"Slett flere objekter\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\"Sletting av det valgte %(objects_name)s ville resultere i sletting av \"\n\"relaterte objekter, men kontoen din har ikke tillatelse til å slette \"\n\"følgende objekttyper:\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\"Sletting av det valgte %(objects_name)s ville kreve sletting av følgende \"\n\"beskyttede relaterte objekter:\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\"Er du sikker på vil slette det valgte %(objects_name)s? De følgende \"\n\"objektene og deres relaterte objekter vil bli slettet:\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \"Etter %(filter_title)s \"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"Modeller i %(name)s-applikasjonen\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"Endre\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"Du har ikke rettigheter til å redigere noe.\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"Siste handlinger\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"Mine handlinger\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"Ingen tilgjengelige\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"Ukjent innhold\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"Noe er galt med databaseinstallasjonen din. Sørg for at databasetabellene er \"\n\"opprettet og at brukeren har de nødvendige rettighetene.\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"Passord:\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"Glemt brukernavnet eller passordet ditt?\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"Dato/tid\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"Bruker\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"Handling\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\"Dette objektet har ingen endringshistorikk. Det ble sannsynligvis ikke lagt \"\n\"til på denne administrasjonssiden.\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"Vis alle\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"Lagre\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"Søk\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"%(counter)s resultat\"\nmsgstr[1] \"%(counter)s resultater\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"%(full_result_count)s totalt\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"Lagre som ny\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"Lagre og legg til ny\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"Lagre og fortsett å redigere\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\"Skriv først inn brukernavn og passord. Deretter vil du få mulighet til å \"\n\"endre flere brukerinnstillinger.\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"Skriv inn brukernavn og passord.\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"Skriv inn et nytt passord for brukeren <strong>%(username)s</strong>.\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"Passord\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"Passord (gjenta)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Skriv inn det samme passordet som ovenfor, for verifisering.\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"Fjern\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"Legg til ny %(verbose_name)s\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"Slette?\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"Takk for i dag.\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"Logg inn igjen\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"Endre passord\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"Passord endret\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"Ditt passord ble endret.\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"Av sikkerhetsgrunner må du oppgi ditt gamle passord. Deretter oppgir du det \"\n\"nye passordet ditt to ganger, slik at vi kan kontrollere at det er korrekt.\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"Gammelt passord\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"Nytt passord\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"Endre passord\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"Nullstill passord\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"Passord nullstilt\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"Passordet ditt er satt. Du kan nå logge inn.\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"Bekreftelse på nullstilt passord\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"Oppgi nytt passord\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"\"\n\"Oppgi det nye passordet to ganger, for å sikre at det er skrevet korrekt.\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"Nytt passord:\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"Gjenta nytt passord:\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"Passordet ble ikke nullstilt\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\"Nullstillingslenken er ugyldig, kanskje fordi den allerede har vært brukt. \"\n\"Vennligst nullstill passordet ditt på nytt.\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"Passord-nullstilling klar\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\"Vi har sendt deg en e-post med instruksjoner for nullstilling av passord. Du \"\n\"bør motta den om kort tid.\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\"Du mottar denne e-posten fordi du har bedt om nullstilling av passordet ditt \"\n\"på %(site_name)s.\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"Vennligst gå til følgende side og velg et nytt passord:\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"Brukernavnet ditt, i tilfelle du har glemt det:\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"Takk for at du bruker siden vår!\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"Hilsen %(site_name)s\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\"Glemt passordet ditt? Oppgi e-postadressen din under, så sender vi deg en e-\"\n\"post med instruksjoner for nullstilling av passord.\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"E-postadresse:\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"Nullstill mitt passord\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"Alle datoer\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"(Ingen)\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"Velg %s\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"Velg %s du ønsker å endre\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/nb/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <jonklo@gmail.com>, 2012.\n# jonklo <jonklo@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-03-08 13:06+0000\\n\"\n\"Last-Translator: jonklo <jonklo@gmail.com>\\n\"\n\"Language-Team: Norwegian Bokmål (http://www.transifex.com/projects/p/django/\"\n\"language/nb/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: nb\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"Tilgjengelige %s\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Dette er listen over tilgjengelige %s. Du kan velge noen ved å markere de i \"\n\"boksen under og så klikke på \\\"Velg\\\"-pilen mellom de to boksene.\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"Skriv i dette feltet for å filtrere ned listen av tilgjengelige %s.\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"Filter\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"Velg alle\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"Klikk for å velge alle %s samtidig\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"Velg\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"Slett\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"Valgt %s\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Dette er listen over valgte %s. Du kan fjerne noen ved å markere de i boksen \"\n\"under og så klikke på \\\"Fjern\\\"-pilen mellom de to boksene.\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"Fjern alle\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"Klikk for å fjerne alle valgte %s samtidig\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"%(sel)s av %(cnt)s valgt\"\nmsgstr[1] \"%(sel)s av %(cnt)s valgt\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\"Du har ulagrede endringer i individuelle felter. Hvis du utfører en \"\n\"handling, vil dine ulagrede endringer gå tapt.\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\"Du har valgt en handling, men du har ikke lagret dine endringer i \"\n\"individuelle felter enda. Vennligst trykk OK for å lagre. Du må utføre \"\n\"handlingen på nytt.\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\"Du har valgt en handling, og har ikke gjort noen endringer i individuelle \"\n\"felter. Du ser mest sannsynlig etter Gå-knappen, ikke Lagre-knappen.\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"\"\n\"Januar Februar Mars April Mai Juni Juli August September Oktober November \"\n\"Desember\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"S M T O T F L\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"Vis\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"Skjul\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"Nå\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"Klokke\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"Velg et klokkeslett\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"Midnatt\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"06:00\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"12:00\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"Avbryt\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"I dag\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"Kalender\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"I går\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"I morgen\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/ne/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Sagar Chalise <chalisesagar@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:52+0000\\n\"\n\"Last-Translator: Ramiro Morales <cramm0@gmail.com>\\n\"\n\"Language-Team: Nepali (http://www.transifex.com/projects/p/django/language/\"\n\"ne/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ne\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"सफलतापूर्वक मेटियो %(count)d %(items)s ।\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"%(name)s मेट्न सकिएन \"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"के तपाई पक्का हुनुहुन्छ ?\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"%(verbose_name_plural)s छानिएको मेट्नुहोस\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"सबै\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"हो\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"होइन\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"अज्ञात\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"कुनै मिति\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"आज\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"पूर्व ७ दिन\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"यो महिना\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"यो साल\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"कृपया पुन: लगिन गर्नुहोस, किनकी तपाइको अवधि सिद्धिएको छ ।\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"कार्य:\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"कार्य समय\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"वस्तु परिचय\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"एक्सन फ्ल्याग\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"सन्देश परिवर्तन गर्नुहोस\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"लग\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"लगहरु\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"शुन्य\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"%s परिवर्तित ।\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"र\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"%(name)s \\\"%(object)s\\\" थपिएको छ ।\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"%(name)s \\\"%(object)s को %(list)s फेरियो ।\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"%(name)s \\\"%(object)s\\\" मेटिएको छ ।\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"कुनै फाँट फेरिएन ।\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" सफलतापूर्वक थप भयो ।  तपाई यो पुन: संशोधन गर्न सक्नुहुनेछ ।\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" सफलतापूर्वक परिवर्तन भयो । \"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" सफलतापूर्वक परिवर्तन भयो । \"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"कार्य गर्नका निम्ति वस्तु छान्नु पर्दछ । कुनैपनि छस्तु छानिएको छैन । \"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"कार्य छानिएको छैन ।\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"%s थप्नुहोस\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"प्राइमरी की %(key)r भएको %(name)s अब्जेक्ट\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"%s परिवर्तित ।\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"डाटाबेस त्रुटि\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"%(count)s %(name)s सफलतापूर्वक परिवर्तन भयो ।\"\nmsgstr[1] \"%(count)s %(name)sहरु सफलतापूर्वक परिवर्तन भयो ।\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"%(total_count)s चयन भयो\"\nmsgstr[1] \"सबै %(total_count)s चयन भयो\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"%(cnt)s को ० चयन गरियो\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" सफलतापूर्वक मेटियो । \"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"इतिहास फेर्नुहोस : %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"लगिन\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"साइट प्रशासन\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"%s प्रशासन\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"मिति:\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"समय:\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"खोज तलास\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"अर्को थप्नुहोस\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"पृष्ठ भेटिएन\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"क्षमापार्थी छौं तर अनुरोध गरिएको पृष्ठ भेटिएन ।\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"गृह\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"सर्भर त्रुटि\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"सर्भर त्रुटि (५००)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"सर्भर त्रुटि <em>(५००)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"छानिएको कार्य गर्नुहोस ।\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"बढ्नुहोस\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"सबै पृष्ठभरमा वस्तु छान्न यहाँ थिच्नुहोस ।\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"%(total_count)s %(module_name)s सबै छान्नुहोस \"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"चुनेको कुरा हटाउनुहोस ।\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"स्वागतम्\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"विस्तृत विवरण\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"पासवर्ड फेर्नुहोस \"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"लग आउट\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"ज्याङ्गो साइट प्रशासन\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"ज्याङ्गो प्रशासन\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"थप्नुहोस \"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"इतिहास\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"साइटमा हेर्नुहोस\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"कृपया तलका त्रुटि सच्याउनुहोस ।\"\nmsgstr[1] \"कृपया तलका त्रुटिहरु सच्याउनुहोस ।\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"%(name)s थप्नुहोस\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"छान्नुहोस\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"मेट्नुहोस\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"हुन्छ, म पक्का छु ।\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"वहु वस्तुहरु मेट्नुहोस ।\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"%(objects_name)s \"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \" %(filter_title)s द्वारा\"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"फेर्नुहोस\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"तपाइलाई केही पनि संपादन गर्ने अनुमति छैन ।\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"हालैका कार्यहरु\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"मेरो कार्यहरु\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"कुनै पनि उपलब्ध छैन ।\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"अज्ञात सामग्री\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"डाटाबेस स्थापनामा केही त्रुटी छ । सम्वद्ध टेबल बनाएको र प्रयोगकर्तालाई डाटाबेसमा अनुमति \"\n\"भएको छ छैन जाच्नुहोस ।\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"पासवर्ड\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"पासवर्ड अथवा प्रयोगकर्ता नाम भुल्नुभयो ।\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"मिति/समय\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"प्रयोगकर्ता\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"कार्य:\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"यो अब्जेक्टको पुर्व परिवर्तन छैन । यो यस \"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"सबै देखाउनुहोस\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"बचत गर्नुहोस\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"खोज्नुहोस\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"%(counter)s नतिजा\"\nmsgstr[1] \"%(counter)s नतिजाहरु\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"जम्मा %(full_result_count)s\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"नयाँ रुपमा बचत गर्नुहोस\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"बचत गरेर अर्को थप्नुहोस\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"बचत गरेर संशोधन जारी राख्नुहोस\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\"सर्वप्रथम प्रयोगकर्ता नाम र पासवर्ड हाल्नुहोस । अनिपछि तपाइ प्रयोगकर्ताका विकल्पहरु \"\n\"संपादन गर्न सक्नुहुनेछ ।\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"प्रयोगकर्ता नाम र पासवर्ड राख्नुहोस।\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"प्रयोगकर्ता <strong>%(username)s</strong> को लागि नयाँ पासवर्ड राख्नुहोस ।\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"पासवर्ड\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"पासवर्ड (पुन:)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"प्रमाणिकरणको लागि माथी कै पासवर्ड राख्नुहोस ।\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"हटाउनुहोस\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"अर्को %(verbose_name)s थप्नुहोस ।\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"मेट्नुहुन्छ ?\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"वेब साइटमा समय बिताउनु भएकोमा धन्यवाद ।\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"पुन: लगिन गर्नुहोस\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"पासवर्ड फेरबदल\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"पासवर्ड सफलतापूर्वक फेरिएको छ ।\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"तपाइको पासवर्ड फेरिएको छ ।\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"सुरक्षाको निम्ति आफ्नो पुरानो पासवर्ड राख्नुहोस र कृपया दोहर्याएर आफ्नो नयाँ पासवर्ड \"\n\"राख्नुहोस ताकी प्रमाणीकरण होस । \"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"पुरानो पासवर्ड\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"नयाँ पासवर्ड\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"मेरो पासवर्ड फेर्नुहोस \"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"पासवर्डपून: राख्नुहोस । \"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"पासवर्डपुन: राख्ने कार्य सम्पन्न भयो ।\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"तपाइको पासवर्ड राखियो । कृपया लगिन गर्नुहोस ।\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"पासवर्ड पुनर्स्थापना पुष्टि\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"नयाँ पासवर्ड राख्नुहोस\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"ठीक तरिकाले राखिएको पुष्टि गर्न कृपया नयाँ पासवर्ड दोहोर्याएर राख्नुहोस ।\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"नयाँ पासवर्ड :\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"पासवर्ड पुष्टि:\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"पासवर्ड पुन: राख्ने काम असफल भयो ।\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"पासवर्ड पुनर्स्थापना प्रयोग भइसकेको छ । कृपया नयाँ पासवर्ड रिसेट माग्नुहोस ।\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"सफलतापूर्वक पासवर्ड पुन: राखियो ।\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"कृपया उक्त पृष्ठमा  जानुहोस र नयाँ पासवर्ड राख्नुहोस :\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"तपाइको प्रयोगकर्ता नाम, बिर्सनुभएको भए :\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"हाम्रो साइट प्रयोग गरेकोमा धन्यवाद\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"%(site_name)s टोली\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"मेरो पासवर्ड पुन: राख्नुहोस ।\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"सबै मिति\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"(शुन्य)\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"%s छान्नुहोस\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"%s परिवर्तन गर्न छान्नुहोस ।\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/ne/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Paras Nath Chaudhary <opnchaudhary@gmail.com>, 2012.\n# Sagar Chalise <chalisesagar@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-10-01 12:40+0000\\n\"\n\"Last-Translator: Paras Nath Chaudhary <opnchaudhary@gmail.com>\\n\"\n\"Language-Team: Nepali (http://www.transifex.com/projects/p/django/language/\"\n\"ne/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ne\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"उपलब्ध %s\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"यो उपलब्ध %s को सुची हो। तपाईंले यी मध्य केही बक्सबाट चयन गरी बक्स बीच्को \\\"छान्नुहोस \"\n\"\\\" तीरमा क्लिक गरी छान्नसक्नुहुन्छ । \"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \" उपलब्ध %s को सुचिबाट छान्न यो बक्समा टाइप गर्नुहोस \"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"छान्नुहोस\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"सबै छान्नुहोस \"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"एकै क्लिकमा सबै %s छान्नुहोस \"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"छान्नुहोस \"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"हटाउनुहोस\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"छानिएको %s\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"यो छानिएका %s को सुची हो । तपाईंले यी मध्य केही बक्सबाट चयन गरी बक्स बीच्को \"\n\"\\\"हटाउनुहोस\\\" तीरमा क्लिक गरी हटाउन सक्नुहुन्छ । \"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"सबै हटाउनुहोस \"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"एकै क्लिकमा सबै छानिएका %s हटाउनुहोस ।\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"%(cnt)s को %(sel)s चयन गरियो\"\nmsgstr[1] \"%(cnt)s को %(sel)s चयन गरियो\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"तपाइको फेरबदल बचत भएको छैन । कार्य भएमा बचत नभएका फेरबदल हराउने छन् ।\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\"तपाइले कार्य छाने पनि फेरबदलहरु बचत गर्नु भएको छैन । कृपया बचत गर्न हुन्छ थिच्नुहोस । कार्य \"\n\"पुन: सञ्चालन गर्नुपर्नेछ ।\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\"तपाइले कार्य छाने पनि फाँटहरुमा फेरबदलहरु गर्नु भएको छैन । बचत गर्नु भन्दा पनि अघि बढ्नुहोस \"\n\"।\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"जनवरी फेब्रुअरी मार्च अप्रिल मई जुन जुलै अगस्त सेप्टेम्बर अक्टुवर नभम्वर डिसम्वर\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"आइत सोम मंगल बुध बिही शुक्र शनि\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"देखाउनुहोस \"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"लुकाउनुहोस \"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"यतिखेर\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"घडी\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"समय चयन गर्नुहोस\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"मध्यरात\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"बिहान ६ बजे\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"मध्यान्ह\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"रद्द गर्नुहोस \"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"आज\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"पात्रो \"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"हिजो\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"भोलि\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/nl/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <bart@dispectu.com>, 2012-2013.\n# Harro van der Klauw <hvdklauw@gmail.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Jeffrey Gelens <jeffrey@noppo.pro>, 2011, 2012.\n# Tino de Bruijn <tinodb@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-03 11:13+0000\\n\"\n\"Last-Translator: bartdegoede <bart@dispectu.com>\\n\"\n\"Language-Team: Dutch (http://www.transifex.com/projects/p/django/language/\"\n\"nl/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: nl\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"%(count)d %(items)s succesvol verwijderd.\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"%(name)s kan niet worden verwijderd \"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"Weet u het zeker?\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"Verwijder geselecteerde %(verbose_name_plural)s\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"Alle\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"Ja\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"Nee\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"Onbekend\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"Elke datum\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"Vandaag\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"Afgelopen zeven dagen\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"Deze maand\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"Dit jaar\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\"Voer de correcte %(username)s en wachtwoord voor een stafaccount in. Let op \"\n\"dat beide velden hoofdlettergevoelig zijn.\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"Uw sessie is verlopen, meld u opnieuw aan.\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"Actie:\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"actietijd\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"object-id\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"object-repr\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"actievlag\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"wijzig bericht\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"logregistratie\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"logregistraties\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"Toegevoegd \\\"%(object)s\\\".\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"Gewijzigd \\\"%(object)s\\\" - %(changes)s\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"Verwijderd \\\"%(object)s.\\\"\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"LogEntry Object\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"Geen\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"%s gewijzigd.\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"en\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"%(name)s \\\"%(object)s\\\" toegevoegd.\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"%(list)s aangepast voor %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"%(name)s \\\"%(object)s\\\" verwijderd.\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"Geen velden gewijzigd.\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"De %(name)s \\\"%(obj)s\\\" was toegevoegd. U kunt het hieronder wijzigen.\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\"De %(name)s \\\"%(obj)s\\\" was succesvol gewijzigd. Je kan hieronder een andere \"\n\"%(name)s toevoegen.\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"De %(name)s \\\"%(obj)s\\\" is toegevoegd.\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\"De %(name)s \\\"%(obj)s\\\" was succesvol gewijzigd. Je kunt het hieronder \"\n\"wijzigen.\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\"De %(name)s \\\"%(obj)s\\\" was succesvol gewijzigd. Je kan hieronder een andere \"\n\"%(name)s toevoegen.\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"Het wijzigen van %(name)s \\\"%(obj)s\\\" is geslaagd.\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\"Er moeten items worden geselecteerd om acties op uit te voeren. Geen items \"\n\"zijn veranderd.\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"Geen actie geselecteerd.\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"Toevoegen %s\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"%(name)s object met primaire sleutel %(key)r bestaat niet.\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"Wijzig %s\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"Databasefout\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"%(count)s %(name)s is succesvol gewijzigd.\"\nmsgstr[1] \"%(count)s %(name)s zijn succesvol gewijzigd.\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"%(total_count)s geselecteerd\"\nmsgstr[1] \"Alle %(total_count)s geselecteerd\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"0 van de %(cnt)s geselecteerd\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"Gebruiker %(name)s \\\"%(obj)s\\\" is verwijderd.\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"Wijzigingsgeschiedenis: %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"Inloggen\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"Sitebeheer\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"%s beheer\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"Datum:\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"Tijd:\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"Opzoeken\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"Voeg nog één toe\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"Huidig:\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"Wijzig:\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"Pagina niet gevonden\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"Onze excuses, maar de gevraagde pagina bestaat niet.\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"Voorpagina\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"Serverfout\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"Serverfout (500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"Serverfout <em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\"Er heeft zich een fout voorgedaan. De fout is via email gemeld aan de \"\n\"website administrators en zou snel verholpen moeten zijn. Bedankt voor uw \"\n\"geduld.\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"Voer de geselecteerde actie uit\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"Voer Uit\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"Klik hier om alle objecten op alle pagina's te selecteren\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"Selecteer alle %(total_count)s %(module_name)s\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"Leeg selectie\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"Welkom,\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"Documentatie\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"Wachtwoord wijzigen\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"Afmelden\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"Django sitebeheer\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"Djangobeheer\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"Toevoegen\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"Geschiedenis\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"Toon op site\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"Herstel de fout hieronder.\"\nmsgstr[1] \"Herstel de fouten hieronder.\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"%(name)s toevoegen\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"Filter\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"Verwijder uit de sortering\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"Sorteer prioriteit: %(priority_number)s\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"Sortering aan/uit\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"Verwijderen\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"Het verwijderen van %(object_name)s '%(escaped_object)s' zal ook \"\n\"gerelateerde objecten verwijderen. Echter u heeft geen rechten om de \"\n\"volgende typen objecten te verwijderen:\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\"Het verwijderen van %(object_name)s '%(escaped_object)s' vereist het \"\n\"verwijderen van de volgende gerelateerde objecten:\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\"Weet u zeker dat u %(object_name)s \\\"%(escaped_object)s\\\" wilt verwijderen? \"\n\"Alle volgende objecten worden verwijderd:\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"Ja, ik weet het zeker\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"Verwijder meerdere objecten\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\"Het verwijderen van de geselecteerde %(objects_name)s vereist het \"\n\"verwijderen van gerelateerde objecten, maar uw account heeft geen \"\n\"toestemming om de volgende soorten objecten te verwijderen:\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\"Het verwijderen van de geselecteerde %(objects_name)s vereist het \"\n\"verwijderen van de volgende beschermde gerelateerde objecten:\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\"Weet u zeker dat u de geselecteerde %(objects_name)s wilt verwijderen? Alle \"\n\"volgende objecten en hun aanverwante items zullen worden verwijderd:\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \" Op %(filter_title)s \"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"Modellen in de %(name)s applicatie\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"Wijzigen\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"U heeft geen rechten om iets te wijzigen.\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"Recente acties\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"Mijn acties\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"Geen beschikbaar\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"Onbekende inhoud\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"Er is iets mis met de database. Verzeker u ervan dat de benodigde tabellen \"\n\"zijn aangemaakt en dat de database toegankelijk is voor de juiste gebruiker.\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"Wachtwoord:\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"Wachtwoord of gebruikersnaam vergeten?\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"Datum/tijd\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"Gebruiker\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"Actie\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\"Dit object heeft geen wijzigingsgeschiedenis. Het is mogelijk niet via de \"\n\"beheersite toegevoegd.\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"Alles tonen\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"Opslaan\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"Zoek\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"%(counter)s resultaat\"\nmsgstr[1] \"%(counter)s resultaten\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"%(full_result_count)s totaal\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"Opslaan als nieuw item\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"Opslaan en nieuwe toevoegen\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"Opslaan en opnieuw bewerken\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\"Vul allereerst een gebruikersnaam en wachtwoord in. Vervolgens kunt u de \"\n\"andere opties instellen.\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"Voer een gebruikersnaam en wachtwoord in.\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"\"\n\"Geef een nieuw wachtwoord voor gebruiker <strong>%(username)s</strong>.\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"Wachtwoord\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"Wachtwoord (nogmaals)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Vul hetzelfde wachtwoord als hierboven in, ter bevestiging.\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"Verwijderen\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"Voeg nog een %(verbose_name)s toe\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"Verwijderen?\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"Bedankt voor de aanwezigheid op de site vandaag.\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"Log opnieuw in\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"Wachtwoordwijziging\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"Wachtwoord wijzigen is geslaagd\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"Uw wachtwoord is gewijzigd.\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"Vanwege de beveiliging moet u uw oude en twee keer uw nieuwe wachtwoord \"\n\"invoeren, zodat we kunnen controleren of er geen typefouten zijn gemaakt.\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"Oud wachtwoord\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"Nieuw wachtwoord\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"Wijzig mijn wachtwoord\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"Wachtwoord hersteld\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"Wachtwoord herstellen voltooid\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"Uw wachtwoord is ingesteld. U kunt nu verder gaan en inloggen.\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"Bevestiging wachtwoord herstellen\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"Voer nieuw wachtwoord in\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"\"\n\"Voer het nieuwe wachtwoord twee keer in, zodat we kunnen controleren of er \"\n\"geen typefouten zijn gemaakt.\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"Nieuw wachtwoord:\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"Bevestig wachtwoord:\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"Wachtwoord herstel mislukt\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\"De link voor het herstellen van het wachtwoord is ongeldig, waarschijnlijk \"\n\"omdat de link al eens is gebruikt. Vraag opnieuw een wachtwoord aan.\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"Wachtwoord herstel geslaagd\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\"We hebben instructies voor het resetten van uw wachtwoord naar het ingevulde \"\n\"emailadres gestuurd. U zou ze snel binnen moeten krijgen.\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\"U ontvangt deze email omdat u heeft verzocht het wachtwoord te resetten voor \"\n\"uw account op %(site_name)s.\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"Gaat u naar de volgende pagina en kies een nieuw wachtwoord:\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"Uw gebruikersnaam, mocht u deze vergeten zijn:\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"Bedankt voor het gebruik van onze site!\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"Het %(site_name)s team\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\"Wachtwoord vergeten? Vul uw emailadres hieronder in, en we zullen \"\n\"instructies voor het opnieuw instellen van uw wachtwoord mailen.\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"Emailadres:\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"Herstel mijn wachtwoord\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"Alle data\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"(Geen)\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"Selecteer %s\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"Selecteer %s om te wijzigen\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/nl/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Harro van der Klauw <hvdklauw@gmail.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Jeffrey Gelens <jeffrey@noppo.pro>, 2011, 2012.\n# wunki <petar@wunki.org>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-03-08 10:42+0000\\n\"\n\"Last-Translator: Harro van der Klauw <hvdklauw@gmail.com>\\n\"\n\"Language-Team: Dutch (http://www.transifex.com/projects/p/django/language/\"\n\"nl/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: nl\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"Beschikbare %s\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Dit is de lijst met beschikbare %s. U kunt kiezen uit een aantal door ze te \"\n\"selecteren in het vak hieronder en vervolgens op de \\\"Kiezen\\\" pijl tussen \"\n\"de twee lijsten te klikken.\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"Type in dit vak om te filteren in de lijst met beschikbare %s.\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"Filter\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"Kies alle\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"Klik om alle %s kiezen in een keer.\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"Kiezen\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"Verwijderen\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"Gekozen %s\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Dit is de lijst van de gekozen %s. Je kunt ze verwijderen door ze te \"\n\"selecteren in het vak hieronder en vervolgens op de \\\"Verwijderen\\\" pijl \"\n\"tussen de twee lijsten te klikken.\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"Verwijder alles\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"Klik om alle gekozen %s tegelijk te verwijderen.\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"%(sel)s van de %(cnt)s geselecteerd\"\nmsgstr[1] \"%(sel)s van de %(cnt)s geselecteerd\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\"U heeft niet opgeslagen wijzigingen op enkele indviduele velden. Als u nu \"\n\"een actie uitvoert zullen uw wijzigingen verloren gaan.\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\"U heeft een actie geselecteerd, maar heeft de wijzigingen op de individuele \"\n\"velden nog niet opgeslagen. Klik alstublieft op OK om op te slaan. U zult \"\n\"vervolgens de actie opnieuw moeten uitvoeren.\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\"U heeft een actie geselecteerd en heeft geen wijzigingen gemaakt op de \"\n\"individuele velden. U zoekt waarschijnlijk naar de Gaan knop in plaats van \"\n\"de Opslaan knop.\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"\"\n\"januari februari maart april mei juni juli augustus september oktober \"\n\"november december\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"Z M D W D V Z\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"Tonen\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"Verbergen\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"Nu\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"Klok\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"Kies een tijd\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"Middernacht\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"Zes uur 's ochtends\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"Twaalf uur 's middags\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"Annuleren\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"Vandaag\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"Kalender\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"Gisteren\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"Morgen\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/nn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <havard@grimelid.com>, 2012.\n# hgrimelid <havard@grimelid.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <odin.omdal@gmail.com>, 2012.\n#   <sigurdga-transifex@sigurdga.no>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:52+0000\\n\"\n\"Last-Translator: Ramiro Morales <cramm0@gmail.com>\\n\"\n\"Language-Team: Norwegian Nynorsk (http://www.transifex.com/projects/p/django/\"\n\"language/nn/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: nn\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"Sletta %(count)d %(items)s.\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"Kan ikkje slette %(name)s\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"Er du sikker?\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"Slett valgte %(verbose_name_plural)s\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"Alle\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"Ja\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"Nei\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"Ukjend\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"Når som helst\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"I dag\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"Siste sju dagar\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"Denne månaden\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"I år\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"Økta har tidsavbrot, logg inn att.\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"Handling:\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"tid for handling\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"objekt-ID\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"objekt repr\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"handlingsflagg\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"endre melding\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"logginnlegg\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"logginnlegg\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"La til «%(object)s».\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"Endra «%(object)s» - %(changes)s\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"Sletta «%(object)s».\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"LogEntry-objekt\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"Ingen\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"Endra %s.\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"og\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Oppretta %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Endra %(list)s for %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Sletta %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"Ingen felt endra.\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" vart endra Du kan redigere vidare nedanfor.\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" vart oppretta.\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" vart endra.\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\"Objekt må vere valde for at dei skal kunne utførast handlingar på. Ingen \"\n\"object er endra.\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"Inga valt handling.\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"Opprett %s\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"%(name)s-objekt med primærnøkkelen %(key)r eksisterer ikkje.\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"Rediger %s\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"Databasefeil\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"%(count)s %(name)s vart endra.\"\nmsgstr[1] \"%(count)s %(name)s vart endra.\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"%(total_count)s valde\"\nmsgstr[1] \"Alle %(total_count)s valde\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"Ingen av %(cnt)s valde\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" vart sletta.\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"Endringshistorikk: %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"Logg inn\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"Nettstadsadministrasjon\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"%s-administrasjon\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"Dato:\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"Tid:\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"Oppslag\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"Legg til ny\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"Fann ikkje sida\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"Sida du spør etter finst ikkje.\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"Heim\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"Tenarfeil\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"Tenarfeil (500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"Tenarfeil <em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"Utfør den valde handlinga\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"Gå\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"Klikk her for å velje objekt på tvers av alle sider\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"Velg alle %(total_count)s %(module_name)s\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"Nullstill utval\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"Velkommen,\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"Dokumentasjon\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"Endre passord\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"Logg ut\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"Django administrasjonsside\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"Django-administrasjon\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"Opprett\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"Historikk\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"Vis på nettstad\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"Korriger feilen under.\"\nmsgstr[1] \"Korriger feila under.\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"Opprett %(name)s\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"Filtrering\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"Fjern frå sortering\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"Sorteringspriorite: %(priority_number)s\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"Slår av eller på sortering\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"Slett\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"Dersom du slettar %(object_name)s '%(escaped_object)s', vil også slette \"\n\"relaterte objekt, men du har ikkje løyve til å slette følgande objekttypar:\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\"Sletting av %(object_name)s '%(escaped_object)s' krevar sletting av \"\n\"følgjande beskytta relaterte objekt:\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\"Er du sikker på at du vil slette %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"Alle dei følgjande relaterte objekta vil bli sletta:\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"Ja, eg er sikker\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"Slett fleire objekt\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\"Sletting av %(objects_name)s vil føre til at relaterte objekt blir sletta, \"\n\"men kontoen din manglar løyve til å slette følgjande objekttypar:\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\"Sletting av %(objects_name)s krevar sletting av følgjande beskytta relaterte \"\n\"objekt:\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\"Er du sikker på at du vil slette dei valgte objekta %(objects_name)s? \"\n\"Følgjande objekt og deira relaterte objekt vil bli sletta:\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \"Etter %(filter_title)s \"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"Endre\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"Du har ikkje løyve til å redigere noko.\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"Siste handlingar\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"Mine handlingar\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"Ingen tilgjengelege\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"Ukjent innhald\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"Noko er gale med databaseinstallasjonen din. Syt for at databasetabellane er \"\n\"oppretta og at brukaren har dei naudsynte løyve.\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"Passord:\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"Gløymd brukarnamn eller passord?\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"Dato/tid\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"Brukar\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"Handling\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\"Dette objektet har ingen endringshistorikk. Det var sannsynlegvis ikkje \"\n\"oppretta med administrasjonssida.\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"Vis alle\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"Lagre\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"Søk\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"%(counter)s resultat\"\nmsgstr[1] \"%(counter)s resultat\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"%(full_result_count)s totalt\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"Lagre som ny\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"Lagre og opprett ny\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"Lagre og hald fram å redigere\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\"Skriv først inn brukernamn og passord. Deretter vil du få høve til å endre \"\n\"fleire brukarinnstillingar.\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"Skriv inn nytt brukarnamn og passord.\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"Skriv inn eit nytt passord for brukaren <strong>%(username)s</strong>.\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"Passord\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"Passord (gjenta)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Skriv inn det samme passordet som over, for verifisering.\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"Fjern\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"Legg til ny %(verbose_name)s.\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"Slette?\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"Takk for at du brukte kvalitetstid på nettstaden i dag.\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"Logg inn att\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"Endre passord\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"Passord endra\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"Passordet ditt vart endret.\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"Av sikkerheitsgrunnar må du oppgje det gamle passordet ditt. Oppgje så det \"\n\"nye passordet ditt to gonger, slik at vi kan kontrollere at det er korrekt.\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"Gammalt passord\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"Nytt passord\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"Endre passord\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"Nullstill passord\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"Passord nullstilt\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"Passordet ditt er sett. Du kan logge inn.\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"Stadfesting på nullstilt passord\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"Oppgje nytt passord\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"\"\n\"Oppgje det nye passordet ditt to gonger, for å sikre at du oppgjev det \"\n\"korrekt.\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"Nytt passord:\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"Gjenta nytt passord:\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"Passordet vart ikkje nullstilt\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\"Nullstillingslinken er ugyldig, kanskje fordi den allereie har vore brukt. \"\n\"Nullstill passordet ditt på nytt.\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"Passordet vart nullstilt\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"Gå til følgjande side og velg eit nytt passord:\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"Brukarnamnet ditt, i tilfelle du har gløymt det:\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"Takk for at du brukar sida vår!\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"Helsing %(site_name)s\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"Nullstill passordet\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"Alle datoar\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"(Ingen)\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"Velg %s\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"Velg %s du ønskar å redigere\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/nn/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# hgrimelid <havard@grimelid.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <odin.omdal@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-06-03 20:16+0000\\n\"\n\"Last-Translator: velmont <odin.omdal@gmail.com>\\n\"\n\"Language-Team: Norwegian Nynorsk (http://www.transifex.com/projects/p/django/\"\n\"language/nn/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: nn\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"Tilgjengelege %s\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Dette er lista over tilgjengelege %s. Du kan velja nokon ved å markera dei i \"\n\"boksen under og so klikka på «Velg»-pila mellom dei to boksane.\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"Skriv i dette feltet for å filtrera ned lista av tilgjengelege %s.\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"Filter\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"Velg alle\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"Klikk for å velja alle %s samtidig.\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"Vel\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"Slett\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"Valde %s\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Dette er lista over valte %s. Du kan fjerna nokon ved å markera dei i boksen \"\n\"under og so klikka på «Fjern»-pila mellom dei to boksane.\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"Fjern alle\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"Klikk for å fjerna alle valte %s samtidig.\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"%(sel)s av %(cnt)s vald\"\nmsgstr[1] \"%(sel)s av %(cnt)s valde\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\"Det er endringar som ikkje er lagra i individuelt redigerbare felt. \"\n\"Endringar som ikkje er lagra vil gå tapt.\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\"Du har vald ei handling, men du har framleis ikkje lagra endringar for \"\n\"individuelle felt. Klikk OK for å lagre. Du må gjere handlinga på nytt.\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\"Du har vald ei handling og du har ikkje gjort endringar i individuelle felt. \"\n\"Du ser sannsynlegvis etter Gå vidare-knappen - ikkje Lagre-knappen.\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"\"\n\"Januar Februar Mars April Mai Juni Juli August September Oktober November \"\n\"Desember\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"S M T O T F L\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"Vis\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"Skjul\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"No\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"Klokke\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"Velg eit klokkeslett\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"Midnatt\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"06:00\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"12:00\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"Avbryt\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"I dag\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"Kalender\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"I går\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"I morgon\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/pa/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:52+0000\\n\"\n\"Last-Translator: Ramiro Morales <cramm0@gmail.com>\\n\"\n\"Language-Team: Panjabi (Punjabi) (http://www.transifex.com/projects/p/django/\"\n\"language/pa/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: pa\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"%(count)d %(items)s ਠੀਕ ਤਰ੍ਹਾਂ ਹਟਾਈਆਂ ਗਈਆਂ।\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"ਕੀ ਤੁਸੀਂ ਇਹ ਚਾਹੁੰਦੇ ਹੋ?\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"ਚੁਣੇ %(verbose_name_plural)s ਹਟਾਓ\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"ਸਭ\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"ਹਾਂ\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"ਨਹੀਂ\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"ਅਣਜਾਣ\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"ਕੋਈ ਵੀ ਮਿਤੀ\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"ਅੱਜ\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"ਪਿਛਲੇ ੭ ਦਿਨ\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"ਇਹ ਮਹੀਨੇ\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"ਇਹ ਸਾਲ\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"ਫੇਰ ਲਾਗਇਨ ਕਰੋ ਜੀ, ਕਿਉਂਕਿ ਤੁਹਾਡੇ ਸ਼ੈਸ਼ਨ ਦੀ ਮਿਆਦ ਪੁੱਗ ਗਈ ਸੀ।\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"ਕਾਰਵਾਈ:\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"ਕਾਰਵਾਈ ਸਮਾਂ\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"ਆਬਜੈਕਟ id\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"ਆਬਜੈਕਟ repr\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"ਕਾਰਵਾਈ ਫਲੈਗ\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"ਸੁਨੇਹਾ ਬਦਲੋ\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"ਲਾਗ ਐਂਟਰੀ\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"ਲਾਗ ਐਂਟਰੀਆਂ\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"ਕੋਈ ਨਹੀਂ\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"%s ਬਦਲਿਆ।\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"ਅਤੇ\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"%(name)s \\\"%(object)s\\\" ਸ਼ਾਮਲ ਕੀਤਾ।\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"%(name)s \\\"%(object)s\\\" ਲਈ %(list)s ਨੂੰ ਬਦਲਿਆ\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"%(name)s \\\"%(object)s\\\" ਹਟਾਇਆ ਗਿਆ।\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"ਕੋਈ ਖੇਤਰ ਨਹੀਂ ਬਦਲਿਆ।\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" ਠੀਕ ਤਰ੍ਹਾਂ ਜੋੜਿਆ ਗਿਆ ਸੀ। ਤੁਸੀਂ ਇਸ ਨੂੰ ਹੇਠਾਂ ਸੋਧ ਸਕਦੇ ਹੋ।\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" ਠੀਕ ਤਰ੍ਹਾਂ ਹਟਾਇਆ ਗਿਆ ਹੈ।\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" ਨੂੰ ਠੀਕ ਤਰ੍ਹਾਂ ਬਦਲਿਆ ਗਿਆ ਸੀ।\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"ਕੋਈ ਕਾਰਵਾਈ ਨਹੀਂ ਚੁਣੀ ਗਈ।\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"%s ਸ਼ਾਮਲ\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"%s ਬਦਲੋ\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"ਡਾਟਾਬੇਸ ਗਲਤੀ\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"%(count)s %(name)s ਠੀਕ ਤਰ੍ਹਾਂ ਬਦਲਿਆ ਗਿਆ।\"\nmsgstr[1] \"%(count)s %(name)s ਠੀਕ ਤਰ੍ਹਾਂ ਬਦਲੇ ਗਏ ਹਨ।\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"%(total_count)s ਚੁਣਿਆ।\"\nmsgstr[1] \"%(total_count)s ਚੁਣੇ\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" ਠੀਕ ਤਰ੍ਹਾਂ ਹਟਾਇਆ ਗਿਆ ਹੈ।\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"ਅਤੀਤ ਬਦਲੋ: %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"ਲਾਗ ਇਨ\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"ਸਾਈਟ ਪਰਬੰਧ\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"%s ਪਰਸ਼ਾਸ਼ਨ\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"ਮਿਤੀ:\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"ਸਮਾਂ:\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"ਖੋਜ\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"ਹੋਰ ਸ਼ਾਮਲ\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"ਸਫ਼ਾ ਨਹੀਂ ਲੱਭਿਆ\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"ਸਾਨੂੰ ਅਫਸੋਸ ਹੈ, ਪਰ ਅਸੀਂ ਮੰਗਿਆ ਗਿਆ ਸਫ਼ਾ ਨਹੀਂ ਲੱਭ ਸਕੇ।\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"ਘਰ\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"ਸਰਵਰ ਗਲਤੀ\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"ਸਰਵਰ ਗਲਤੀ (500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"ਸਰਵਰ ਗਲਤੀ <em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"ਚੁਣੀ ਕਾਰਵਾਈ ਕਰੋ\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"ਜਾਓ\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"ਸਭ ਸਫ਼ਿਆਂ ਵਿੱਚੋਂ ਆਬਜੈਕਟ ਚੁਣਨ ਲਈ ਇੱਥੇ ਕਲਿੱਕ ਕਰੋ\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"ਸਭ %(total_count)s %(module_name)s ਚੁਣੋ\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"ਚੋਣ ਸਾਫ਼ ਕਰੋ\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"ਜੀ ਆਇਆਂ ਨੂੰ, \"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"ਡੌਕੂਮੈਂਟੇਸ਼ਨ\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"ਪਾਸਵਰਡ ਬਦਲੋ\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"ਲਾਗ ਆਉਟ\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"ਡੀਜਾਂਗੋ ਸਾਈਟ ਐਡਮਿਨ\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"ਡੀਜਾਂਗੋ ਪਰਸ਼ਾਸ਼ਨ\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"ਸ਼ਾਮਲ\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"ਅਤੀਤ\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"ਸਾਈਟ ਉੱਤੇ ਜਾਓ\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"ਹੇਠਾਂ ਦਿੱਤੀ ਗਲਤੀ ਠੀਕ ਕਰੋ ਜੀ।\"\nmsgstr[1] \"ਹੇਠ ਦਿੱਤੀਆਂ ਗਲਤੀਆਂ ਠੀਕ ਕਰੋ ਜੀ।\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"%(name)s ਸ਼ਾਮਲ\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"ਫਿਲਟਰ\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"ਹਟਾਓ\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"ਹਾਂ, ਮੈਂ ਚਾਹੁੰਦਾ ਹਾਂ\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"ਕਈ ਆਬਜੈਕਟ ਹਟਾਓ\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \" %(filter_title)s ਵਲੋਂ \"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"ਬਦਲੋ\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"ਤੁਹਾਨੂੰ ਕੁਝ ਵੀ ਸੋਧਣ ਦਾ ਅਧਿਕਾਰ ਨਹੀਂ ਹੈ।\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"ਤਾਜ਼ਾ ਕਾਰਵਾਈਆਂ\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"ਮੇਰੀਆਂ ਕਾਰਵਾਈਆਂ\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"ਕੋਈ ਉਪਲੱਬਧ ਨਹੀਂ\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"ਅਣਜਾਣ ਸਮੱਗਰੀ\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"ਪਾਸਵਰਡ:\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"ਮਿਤੀ/ਸਮਾਂ\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"ਯੂਜ਼ਰ\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"ਕਾਰਵਾਈ\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"ਸਭ ਵੇਖੋ\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"ਸੰਭਾਲੋ\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"ਖੋਜ\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"%(full_result_count)s ਕੁੱਲ\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"ਨਵੇਂ ਵਜੋਂ ਵੇਖੋ\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"ਸੰਭਾਲੋ ਤੇ ਹੋਰ ਸ਼ਾਮਲ\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"ਸੰਭਾਲੋ ਤੇ ਸੋਧਣਾ ਜਾਰੀ ਰੱਖੋ\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"ਪਹਿਲਾਂ ਆਪਣਾ ਯੂਜ਼ਰ ਨਾਂ ਤੇ ਪਾਸਵਰਡ ਦਿਉ। ਫੇਰ ਤੁਸੀਂ ਹੋਰ ਯੂਜ਼ਰ ਚੋਣਾਂ ਨੂੰ ਸੋਧ ਸਕਦੇ ਹੋ।\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"ਯੂਜ਼ਰ <strong>%(username)s</strong> ਲਈ ਨਵਾਂ ਪਾਸਵਰਡ ਦਿਓ।\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"ਪਾਸਵਰਡ\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"ਪਾਸਵਰਡ (ਫੇਰ)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"ਜਾਂਚ ਲਈ, ਉੱਤੇ ਦਿੱਤਾ ਪਾਸਵਰਡ ਹੀ ਦਿਓ।\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"ਹਟਾਓ\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"%(verbose_name)s ਹੋਰ ਸ਼ਾਮਲ\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"ਹਟਾਉਣਾ?\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"ਅੱਜ ਵੈੱਬਸਾਈਟ ਨੂੰ ਕੁਝ ਚੰਗਾ ਸਮਾਂ ਦੇਣ ਲਈ ਧੰਨਵਾਦ ਹੈ।\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"ਫੇਰ ਲਾਗਇਨ ਕਰੋ\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"ਪਾਸਵਰਡ ਬਦਲੋ\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"ਪਾਸਵਰਡ ਠੀਕ ਤਰ੍ਹਾਂ ਬਦਲਿਆ ਗਿਆ\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"ਤੁਹਾਡਾ ਪਾਸਵਰਡ ਬਦਲਿਆ ਗਿਆ ਹੈ।\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"ਸੁਰੱਖਿਆ ਲਈ ਪਹਿਲਾਂ ਆਪਣਾ ਪੁਰਾਣਾ ਪਾਸਵਰਡ ਦਿਉ, ਅਤੇ ਫੇਰ ਆਪਣਾ ਨਵਾਂ ਪਾਸਵਰਡ ਦੋ ਵਰਾ ਦਿਉ ਤਾਂ ਕਿ \"\n\"ਅਸੀਂ ਜਾਂਚ ਸਕੀਏ ਕਿ ਤੁਸੀਂ ਇਹ ਠੀਕ ਤਰ੍ਹਾਂ ਲਿਖਿਆ ਹੈ।\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"ਪੁਰਾਣਾ ਪਾਸਵਰਡ\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"ਨਵਾਂ ਪਾਸਵਰਡ\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"ਮੇਰਾ ਪਾਸਵਰਡ ਬਦਲੋ\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"ਪਾਸਵਰਡ ਮੁੜ-ਸੈੱਟ\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"ਪਾਸਵਰਡ ਮੁੜ-ਸੈੱਟ ਕਰਨਾ ਪੂਰਾ ਹੋਇਆ\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"ਤੁਹਾਡਾ ਪਾਸਵਰਡ ਸੈੱਟ ਕੀਤਾ ਗਿਆ ਹੈ। ਤੁਸੀਂ ਜਾਰੀ ਰੱਖ ਕੇ ਹੁਣੇ ਲਾਗਇਨ ਕਰ ਸਕਦੇ ਹੋ।\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"ਪਾਸਵਰਡ ਮੁੜ-ਸੈੱਟ ਕਰਨ ਪੁਸ਼ਟੀ\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"ਨਵਾਂ ਪਾਸਵਰਡ ਦਿਓ\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"\"\n\"ਆਪਣਾ ਨਵਾਂ ਪਾਸਵਰਡ ਦੋ ਵਾਰ ਦਿਉ ਤਾਂ ਕਿ ਅਸੀਂ ਜਾਂਚ ਕਰ ਸਕੀਏ ਕਿ ਤੁਸੀਂ ਠੀਕ ਤਰ੍ਹਾਂ ਲਿਖਿਆ ਹੈ।\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"ਨਵਾਂ ਪਾਸਵਰਡ:\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"ਪਾਸਵਰਡ ਪੁਸ਼ਟੀ:\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"ਪਾਸਵਰਡ ਮੁੜ-ਸੈੱਟ ਕਰਨ ਅਸਫ਼ਲ\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\"ਪਾਸਵਰਡ ਰੀ-ਸੈੱਟ ਲਿੰਕ ਗਲਤ ਹੈ, ਸੰਭਵ ਤੌਰ ਉੱਤੇ ਇਹ ਪਹਿਲਾਂ ਹੀ ਵਰਤਿਆ ਜਾ ਚੁੱਕਾ ਹੈ। ਨਵਾਂ ਪਾਸਵਰਡ ਰੀ-\"\n\"ਸੈੱਟ ਲਈ ਬੇਨਤੀ ਭੇਜੋ ਜੀ।\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"ਪਾਸਵਰਡ ਠੀਕ ਤਰ੍ਹਾਂ ਬਦਲਿਆ ਗਿਆ\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"ਅੱਗੇ ਦਿੱਤੇ ਸਫ਼ੇ ਉੱਤੇ ਜਾਉ ਤੇ ਨਵਾਂ ਪਾਸਵਰਡ ਚੁਣੋ:\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"ਤੁਹਾਡਾ ਯੂਜ਼ਰ ਨਾਂ, ਜੇ ਕਿਤੇ ਗਲਤੀ ਨਾਲ ਭੁੱਲ ਗਏ ਹੋਵੋ:\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"ਸਾਡੀ ਸਾਈਟ ਵਰਤਣ ਲਈ ਧੰਨਵਾਦ ਜੀ!\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"%(site_name)s ਟੀਮ\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"ਮੇਰਾ ਪਾਸਵਰਡ ਮੁੜ-ਸੈੱਟ ਕਰੋ\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"ਸਭ ਮਿਤੀਆਂ\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"%s ਚੁਣੋ\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"ਬਦਲਣ ਲਈ %s ਚੁਣੋ\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/pa/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-03-08 10:42+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Panjabi (Punjabi) (http://www.transifex.com/projects/p/django/\"\n\"language/pa/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: pa\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"ਉਪਲੱਬਧ %s\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"ਫਿਲਟਰ\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"ਸਭ ਚੁਣੋ\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"ਹਟਾਓ\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"%s ਚੁਣੋ\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"ਜਨਵਰੀ ਫਰਵਰੀ ਮਾਰਚ ਅਪਰੈਲ ਮਈ ਜੂਨ ਜੁਲਾਈ ਅਗਸਤ ਸਤੰਬਰ ਅਕਤੂਬਰ ਨਵੰਬਰ ਦਸੰਬਰ\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"S M T W T F S\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"ਵੇਖੋ\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"ਓਹਲੇ\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"ਹੁਣੇ\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"ਘੜੀ\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"ਸਮਾਂ ਚੁਣੋ\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"ਅੱਧੀ-ਰਾਤ\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"6 ਸਵੇਰ\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"ਦੁਪਹਿਰ\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"ਰੱਦ ਕਰੋ\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"ਅੱਜ\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"ਕੈਲੰਡਰ\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"ਕੱਲ੍ਹ\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"ਭਲਕੇ\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/pl/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# angularcircle <angular.circle@gmail.com>, 2011.\n#   <angular.circle@gmail.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Karol  <kfuks2@o2.pl>, 2012.\n# konryd <konryd@gmail.com>, 2011.\n#   <ola@sitarska.com>, 2013.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-06 10:41+0000\\n\"\n\"Last-Translator: ola <ola@sitarska.com>\\n\"\n\"Language-Team: Polish (http://www.transifex.com/projects/p/django/language/\"\n\"pl/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: pl\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 \"\n\"|| n%100>=20) ? 1 : 2);\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"Usunięto %(count)d %(items)s.\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"Nie można usunąć %(name)s\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"Jesteś pewien?\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"Usuń wybrane %(verbose_name_plural)s\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"Wszystko\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"Tak\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"Nie\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"Nieznany\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"Dowolna data\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"Dzisiaj\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"Ostatnie 7 dni\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"Ten miesiąc\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"Ten rok\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"Twoja sesja wygasła, zaloguj się ponownie.\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"Akcja:\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"czas akcji\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"id obiektu\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"reprezentacja obiektu\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"flaga akcji\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"zmień wiadomość\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"log\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"logi\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"Dodano \\\" %(object)s \\\".\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"Zmieniono \\\" %(object)s \\\" - %(changes)s \"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"Usunięto \\\" %(object)s \\\".\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"Obiekt typu LogEntry\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"brak\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"Zmieniono %s\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"i\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Dodano %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Zmieniono %(list)s w %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Usunięto %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"Żadne pole nie zmienione.\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" dodane pomyślnie. Możesz edytować ponownie wpis poniżej.\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" dodany pomyślnie.\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" zostało pomyślnie zmienione.\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\"Wykonanie akcji wymaga wybrania obiektów. Żaden obiekt nie został zmieniony.\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"Nie wybrano akcji.\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"Dodaj %s\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"Obiekt %(name)s o kluczu głównym %(key)r nie istnieje.\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"Zmień %s\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"Błąd bazy danych\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"%(count)s %(name)s został pomyślnie zmieniony.\"\nmsgstr[1] \"%(count)s %(name)s zostały pomyślnie zmienione.\"\nmsgstr[2] \"%(count)s %(name)s zostało pomyślnie zmienionych.\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"%(total_count)s wybrany\"\nmsgstr[1] \"%(total_count)s wybrane\"\nmsgstr[2] \"%(total_count)s wybranych\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"0 z %(cnt)s wybranych\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" usunięty pomyślnie.\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"Historia zmian: %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"Zaloguj się\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"Administracja stroną\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"%s - administracja\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"Data:\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"Czas:\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"Szukaj\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"Dodaj kolejny\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"Strona nie znaleziona\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"Niestety, żądana strona nie została znaleziona.\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"Początek\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"Błąd serwera\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"Błąd serwera (500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"Błąd Serwera <em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"Wykonaj wybraną akcję\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"Wykonaj\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"Kliknij by wybrać obiekty na wszystkich stronach\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"Wybierz wszystkie %(total_count)s %(module_name)s\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"Wyczyść wybór\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"Witaj,\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"Dokumentacja\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"Zmiana hasła\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"Wyloguj się\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"Administracja stroną Django\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"Administracja Django\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"Dodaj\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"Historia\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"Pokaż na stronie\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"Proszę, popraw poniższy błąd.\"\nmsgstr[1] \"Proszę, popraw poniższe błędy.\"\nmsgstr[2] \"Proszę, popraw poniższe błędy.\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"Dodaj %(name)s\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"Filtr\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"Usuń z sortowania\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"Priorytet sortowania: %(priority_number)s \"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"Zmień sortowanie\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"Usuń\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"Skasowanie %(object_name)s '%(escaped_object)s' spowoduje usunięcie \"\n\"zależnych obiektów, lecz nie posiadasz uprawnień do usunięcia następujących \"\n\"typów obiektów:\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\"Skasowanie %(object_name)s '%(escaped_object)s'  wymaga usunięcia \"\n\"następujących chronionych zależnych obiektów:\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\"Czy chcesz skasować %(object_name)s \\\"%(escaped_object)s\\\"? Następujące \"\n\"zależne obiekty zostaną skasowane:\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"Tak, na pewno\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"Usuwanie wielu obiektów\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\"Skasowanie %(objects_name)s spowoduje usunięcie zależnych obiektów, lecz nie \"\n\"posiadasz uprawnień do usunięcia następujących typów obiektów:\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\"Skasowanie %(objects_name)s wymaga usunięcia następujących chronionych \"\n\"zależnych obiektów:\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\"Czy chcesz skasować zaznaczone %(objects_name)s? Następujące obiekty oraz \"\n\"obiekty od nich zależne zostaną skasowane:\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \" Używając %(filter_title)s \"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"Modele w aplikacji %(name)s\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"Zmień\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"Nie masz uprawnień by edytować cokolwiek.\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"Ostatnie akcje\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"Moje akcje\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"Brak\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"Zawartość nieznana\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"Instalacja Twojej bazy danych jest niepoprawna. Upewnij się, że odpowiednie \"\n\"tabele zostały utworzone i odpowiedni użytkownik jest uprawniony do ich \"\n\"odczytu.\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"Hasło:\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"Nie pamiętasz swojego hasła, bądź nazwy konta użytkownika?\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"Data/czas\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"Użytkownik\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"Akcja\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\"Ten obiekt nie ma historii zmian. Najprawdopodobniej wpis ten nie został \"\n\"dodany poprzez panel administracyjny.\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"Pokaż wszystko\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"Zapisz\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"Szukaj\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"%(counter)s wynik\"\nmsgstr[1] \"%(counter)s wyniki\"\nmsgstr[2] \"%(counter)s wyników\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"%(full_result_count)s trafień\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"Zapisz jako nowe\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"Zapisz i dodaj nowe\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"Zapisz i kontynuuj edycję\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\"Najpierw podaj nazwę użytkownika i hasło. Następnie będziesz mógł edytować \"\n\"więcej opcji użytkownika.\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"Podaj nazwę użytkownika i hasło.\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"Podaj nowe hasło dla użytkownika <strong>%(username)s</strong>.\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"Hasło\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"Hasło (powtórz)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Podaj powyższe hasło w celu weryfikacji.\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"Usuń\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"Dodaj kolejne %(verbose_name)s\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"Usunąć?\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"Dziękujemy za odwiedzenie serwisu.\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"Zaloguj się ponownie\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"Zmiana hasła\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"Hasło zmienione\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"Twoje hasło zostało zmienione.\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"Podaj swoje stare hasło i dwa razy nowe.\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"Stare hasło\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"Nowe hasło\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"Zmień hasło\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"Zresetuj hasło\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"Hasło zostało zresetowane\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"Twoje hasło zostało ustawione. Możesz się teraz zalogować.\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"Potwierdzenie zresetowania hasła\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"Podaj nowe hasło\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"\"\n\"Podaj dwukrotnie nowe hasło, by można było zweryfikować, czy zostało wpisane \"\n\"poprawnie.\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"Nowe hasło:\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"Potwierdź hasło:\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"Zresetowanie hasła nie powiodło się\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\"Link do resetowania hasła był niepoprawny, być może dlatego, że został już \"\n\"raz użyty. Możesz ponownie zażądać zresetowania hasła.\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"Zresetowanie hasła zakończyło się powodzeniem\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"\"\n\"Aby wprowadzić nowe hasło, proszę przejść na stronę, której adres widnieje \"\n\"poniżej:\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"Twoja nazwa użytkownika:\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"Dziękujemy za skorzystanie naszej strony.\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"Zespół %(site_name)s\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"Zresetuj moje hasło\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"Wszystkie daty\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"(Brak)\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"Zaznacz %s\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"Zaznacz %s aby zmienić\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/pl/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# angularcircle <angular.circle@gmail.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# konryd <konryd@gmail.com>, 2011.\n# Roman Barczyński <rombar@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-03-19 16:08+0000\\n\"\n\"Last-Translator: Roman Barczyński <rombar@gmail.com>\\n\"\n\"Language-Team: Polish (http://www.transifex.com/projects/p/django/language/\"\n\"pl/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: pl\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 \"\n\"|| n%100>=20) ? 1 : 2);\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"Dostępne %s\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"To jest lista dostępnych %s. Aby wybrać pozycje zaznacz je i kliknij \"\n\"strzałkę \\\"Wybierz\\\" pomiędzy listami.\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"Pisz tutaj aby wyfiltrować listę dostępnych %s.\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"Filtr\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"Wybierz wszystko\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"Kliknij aby wybrać wszystkie %s na raz.\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"Wybierz\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"Usuń\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"Wybrano %s\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"To jest lista wybranych %s. Aby usunąć zaznacz pozycje wybrane do usunięcia \"\n\"i kliknij strzałkę \\\"Usuń\\\" pomiędzy listami.\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"Usuń wszystkie\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"Kliknij aby usunąć wszystkie wybrane %s na raz.\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"Zaznaczono %(sel)s z %(cnt)s\"\nmsgstr[1] \"Zaznaczono %(sel)s z %(cnt)s\"\nmsgstr[2] \"Zaznaczono %(sel)s z %(cnt)s\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\"Zmiany w niektórych polach nie zostały zachowane. Po wykonaniu akcji zmiany \"\n\"te zostaną utracone.\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\"Wybrano akcję, lecz część zmian w polach nie została zachowana. Kliknij OK \"\n\"aby zapisać. Aby wykonać akcję, należy ją ponownie uruchomić.\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\"Wybrano akcję, lecz nie dokonano żadnych zmian. Prawdopodobnie szukasz \"\n\"przycisku \\\"Wykonaj\\\" (a nie \\\"Zapisz\\\")\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"\"\n\"Styczeń Luty Marzec Kwiecień Maj Czerwiec Lipiec Sierpień Wrzesień \"\n\"Październik Listopad Grudzień\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"N Pn Wt Śr Cz Pt So\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"Pokaż\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"Ukryj\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"Teraz\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"Zegar\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"Wybierz czas\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"Północ\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"6 rano\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"Południe\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"Anuluj\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"Dzisiaj\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"Kalendarz\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"Wczoraj\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"Jutro\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/pt/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Bruno Miguel Custódio <bruno@brunomcustodio.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Nuno Mariz <nmariz@gmail.com>, 2011-2012.\n# Paulo Köch <paulo.koch@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:52+0000\\n\"\n\"Last-Translator: Nuno Mariz <nmariz@gmail.com>\\n\"\n\"Language-Team: Portuguese (http://www.transifex.com/projects/p/django/\"\n\"language/pt/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: pt\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"Foram removidos com sucesso %(count)d %(items)s.\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"Não é possível remover %(name)s \"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"Tem a certeza?\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"Remover %(verbose_name_plural)s selecionados\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"Todos\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"Sim\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"Não\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"Desconhecido\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"Qualquer data\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"Hoje\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"Últimos 7 dias\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"Este mês\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"Este ano\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"Por favor autentique-se novamente, porque a sua sessão expirou.\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"Ação:\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"hora da ação\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"id do objeto\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"repr do objeto\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"flag de ação\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"modificar mensagem\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"entrada de log\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"entradas de log\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"Adicionado \\\"%(object)s\\\".\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"Foram modificados \\\"%(object)s\\\" - %(changes)s\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"Foram removidos \\\"%(object)s.\\\"\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"Objeto LogEntry\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"Nenhum\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"Foi modificado %s.\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"e\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Foram adicionados %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Foram modificados %(list)s para %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Foram removidos %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"Nenhum campo foi modificado.\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"\"\n\"O(A) %(name)s \\\"%(obj)s\\\" foi adicionado(a) com sucesso. Pode voltar a \"\n\"editar novamente abaixo.\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\"O %(name)s \\\"%(obj)s\\\" foi adicionado corretamente. Pode adicionar um novo \"\n\"%(name)s abaixo.\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"O(A) %(name)s \\\"%(obj)s\\\" foi adicionado(a) com sucesso.\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\"O %(name)s \\\"%(obj)s\\\" foi modificado corretamente. Pode editá-lo novamente \"\n\"abaixo.\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\"O %(name)s \\\"%(obj)s\\\" foi modificado corretamente. Pode adicionar um novo \"\n\"%(name)s abaixo.\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"O(A) %(name)s \\\"%(obj)s\\\" foi modificado(a) com sucesso.\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\"Os itens devem ser selecionados de forma a efectuar ações sobre eles. Nenhum \"\n\"item foi modificado.\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"Nenhuma ação selecionada.\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"Adicionar %s\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"O object %(name)s com a chave primária %(key)r não existe.\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"Modificar %s\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"Erro de base de dados\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"%(count)s %(name)s foi modificado com sucesso.\"\nmsgstr[1] \"%(count)s %(name)s foram modificados com sucesso.\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"%(total_count)s selecionado\"\nmsgstr[1] \"Todos %(total_count)s selecionados\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"0 de %(cnt)s selecionados\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"O(A) %(name)s \\\"%(obj)s\\\" foi removido(a) com sucesso.\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"Histórico de modificações: %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"Entrar\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"Administração do site\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"Administração de %s\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"Data:\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"Hora:\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"Procurar\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"Adicionar Outro\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"Atualmente:\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"Modificar:\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"Página não encontrada\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"Pedimos desculpa, mas a página solicitada não foi encontrada.\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"Início\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"Erro do servidor\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"Erro do servidor (500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"Erro do servidor <em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\"Ocorreu um erro. Foi enviada uma notificação para os administradores do \"\n\"site, devendo o mesmo ser corrigido em breve. Obrigado pela atenção.\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"Executar a acção selecionada\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"Ir\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"Clique aqui para selecionar os objetos em todas as páginas\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"Selecionar todos %(total_count)s %(module_name)s\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"Remover seleção\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"Bem-vindo,\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"Documentação\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"Modificar palavra-passe\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"Sair\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"Site de administração do Django\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"Administração do Django\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"Adicionar\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"História\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"Ver no site\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"Por favor corrija o erro abaixo.\"\nmsgstr[1] \"Por favor corrija os erros abaixo.\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"Adicionar %(name)s\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"Filtro\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"Remover da ordenação\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"Prioridade de ordenação: %(priority_number)s\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"Altenar ordenação\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"Remover\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"A remoção de %(object_name)s '%(escaped_object)s' resultará na remoção dos \"\n\"objetos relacionados, mas a sua conta não tem permissão de remoção dos \"\n\"seguintes tipos de objetos:\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\"Remover o %(object_name)s  ' %(escaped_object)s ' exigiria a remoção dos \"\n\"seguintes objetos protegidos relacionados:\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\"Tem a certeza que deseja remover %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"Todos os items relacionados seguintes irão ser removidos:\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"Sim, tenho a certeza\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"Remover múltiplos objetos.\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\"Remover o %(objects_name)s selecionado poderia resultar na remoção de \"\n\"objetos relacionados, mas a sua conta não tem permissão para remover os \"\n\"seguintes tipos de objetos:\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\"Remover o %(objects_name)s selecionado exigiria remover os seguintes objetos \"\n\"protegidos relacionados:\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\"Tem certeza de que deseja remover %(objects_name)s selecionado? Todos os \"\n\"objetos seguintes e seus itens relacionados serão removidos:\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \" Por %(filter_title)s \"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"Modelos na aplicação %(name)s\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"Modificar\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"Não tem permissão para modificar nada.\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"Ações Recentes\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"As minhas Ações\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"Nenhum disponível\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"Conteúdo desconhecido\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"Passa-se algo de errado com a instalação da sua base de dados. Verifique se \"\n\"as tabelas da base de dados foram criadas apropriadamente e verifique se a \"\n\"base de dados pode ser lida pelo utilizador definido.\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"Palavra-passe:\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"Esqueceu-se da sua palavra-passe ou utilizador?\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"Data/hora\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"Utilizador\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"Ação\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\"Este objeto não tem histórico de modificações. Provavelmente não foi \"\n\"modificado via site de administração.\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"Mostrar todos\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"Gravar\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"Pesquisar\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"%(counter)s resultado\"\nmsgstr[1] \"%(counter)s resultados\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"%(full_result_count)s no total\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"Gravar como novo\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"Gravar e adicionar outro\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"Gravar e continuar a editar\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\"Primeiro introduza o nome do utilizador e palavra-passe. Depois poderá \"\n\"editar mais opções do utilizador.\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"Introduza o utilizador e palavra-passe.\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"\"\n\"Introduza uma nova palavra-passe para o utilizador <strong>%(username)s</\"\n\"strong>.\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"Palavra-passe\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"Palavra-passe (novamente)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Introduza a palavra-passe como acima, para verificação.\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"Remover\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"Adicionar outro %(verbose_name)s\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"Remover?\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"Obrigado pela sua visita.\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"Entrar novamente\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"Modificação da palavra-passe\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"Palavra-passe modificada com sucesso\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"A sua palavra-passe foi modificada.\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"Por razões de segurança, por favor introduza a sua palavra-passe antiga e \"\n\"depois introduza a nova duas vezes para que possamos verificar se introduziu \"\n\"corretamente.\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"Palavra-passe antiga\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"Nova palavra-passe\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"Modificar a minha palavra-passe\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"Palavra-passe de reinicialização\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"Reinicialização da palavra-passe concluída\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"A sua palavra-passe foi atribuída.  Pode entrar agora.\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"Confirmação da reinicialização da palavra-passe\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"Introduza a nova palavra-passe\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"\"\n\"Por favor, introduza a sua nova palavra-passe duas vezes para verificarmos \"\n\"se está correcta.\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"Nova palavra-passe:\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"Confirmação da palavra-passe:\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"Palavra-passe reinicializada sem sucesso\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\"O endereço de reinicialização da palavra-passe é inválido, possivelmente \"\n\"porque já foi usado. Por favor requisite uma nova reinicialização da palavra-\"\n\"passe.\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"Palavra-passe reinicializada com sucesso\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\"Enviámos para o email especificado as instruções para redefinir a sua \"\n\"palavra-chave. Deverá recebê-las dentro em breve.\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\"Está a receber este email porque pediu para redefinir a palavra-chave para o \"\n\"seu utilizador no site %(site_name)s.\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"Por favor siga a seguinte página e escolha a sua nova palavra-passe:\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"O seu nome de utilizador, no caso de se ter esquecido:\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"Obrigado pela sua visita ao nosso site!\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"A equipa do %(site_name)s\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\"Esqueceu-se da sua palavra-chave? Introduza o seu endereço de email e enviar-\"\n\"lhe-emos instruções para definir uma nova.\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"Endereço de email:\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"Reinicializar a minha palavra-passe\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"Todas as datas\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"(Nada)\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"Selecionar %s\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"Selecione %s para modificar\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/pt/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Nuno Mariz <nmariz@gmail.com>, 2011, 2012.\n# Paulo Köch <paulo.koch@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-04-02 14:38+0000\\n\"\n\"Last-Translator: Nuno Mariz <nmariz@gmail.com>\\n\"\n\"Language-Team: Portuguese (http://www.transifex.com/projects/p/django/\"\n\"language/pt/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: pt\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"Disponível %s\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Esta é a lista de %s disponíveis. Poderá escolher alguns, selecionando-os na \"\n\"caixa abaixo e clicando na seta \\\"Escolher\\\" entre as duas caixas.\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"Digite nesta caixa para filtrar a lista de %s disponíveis.\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"Filtrar\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"Escolher todos\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"Clique para escolher todos os %s de uma vez.\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"Escolher\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"Remover\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"Escolhido %s\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Esta é a lista de %s escolhidos. Poderá remover alguns, selecionando-os na \"\n\"caixa abaixo e clicando na seta \\\"Remover\\\" entre as duas caixas.\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"Remover todos\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"Clique para remover todos os %s escolhidos de uma vez.\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"%(sel)s de %(cnt)s selecionado\"\nmsgstr[1] \"%(sel)s de %(cnt)s selecionados\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\"Tem mudanças por guardar nos campos individuais. Se usar uma ação, as suas \"\n\"mudanças por guardar serão perdidas.\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\"Selecionou uma ação mas ainda não guardou as mudanças dos campos \"\n\"individuais. Carregue em OK para gravar. Precisará de correr de novo a ação.\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\"Selecionou uma ação mas ainda não guardou as mudanças dos campos \"\n\"individuais. Provavelmente quererá o botão Ir ao invés do botão Guardar.\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"\"\n\"Janeiro Fevereiro Março Abril Maio Junho Julho Agosto Setembro Outubro \"\n\"Novembro Dezembro\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"D S T Q Q S S\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"Mostrar\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"Ocultar\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"Agora\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"Relógio\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"Escolha a hora\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"Meia-noite\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"6 a.m.\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"Meio-dia\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"Cancelar\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"Hoje\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"Calendário\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"Ontem\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"Amanhã\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/pt_BR/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <dudanogueira@gmail.com>, 2012.\n# Eduardo Carvalho <eduardocereto@gmail.com>, 2011-2012.\n# Guilherme Gondim <semente@taurinus.org>, 2012-2013.\n# Guilherme Gondim <semente+transifex@taurinus.org>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-05 12:55+0000\\n\"\n\"Last-Translator: Guilherme Gondim <semente@taurinus.org>\\n\"\n\"Language-Team: Portuguese (Brazil) <django-l10n-portuguese@googlegroups.\"\n\"com>\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: pt_BR\\n\"\n\"Plural-Forms: nplurals=2; plural=(n > 1);\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"Removido %(count)d %(items)s com sucesso.\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"Não é possível excluir %(name)s \"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"Tem certeza?\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"Remover %(verbose_name_plural)s selecionados\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"Todos\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"Sim\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"Não\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"Desconhecido\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"Qualquer data\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"Hoje\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"Últimos 7 dias\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"Este mês\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"Este ano\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\"Por favor, insira um %(username)s e senha corretos para uma conta de equipe. \"\n\"Note que ambos campos são sensíveis a maiúsculas e minúsculas.\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"Por favor acesse novamente, pois sua sessão expirou.\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"Ação:\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"hora da ação\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"id do objeto\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"repr do objeto\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"flag de ação\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"modificar mensagem\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"entrada de log\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"entradas de log\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"Adicionado \\\"%(object)s\\\".\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"Modificado \\\"%(object)s\\\" - %(changes)s\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"Removido \\\"%(object)s.\\\"\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"Objeto LogEntry\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"Nenhum\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"Modificado %s.\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"e\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Adicionado %(name)s \\\"%(object)s\\\"\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Modificado %(list)s para %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Deletado %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"Nenhum campo modificado.\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\": adicionado com sucesso. Você pode editar novamente \"\n\"abaixo.\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" adicionado com sucesso. Você pode adicionar um outro \"\n\"%(name)s abaixo.\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\": adicionado com sucesso.\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" modificado com sucesso. Você pode editá-lo novamente \"\n\"abaixo.\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" alterado com sucesso. Você pode adicionar um outro \"\n\"%(name)s abaixo.\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\": modificado com sucesso.\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\"Os itens devem ser selecionados a fim de executar ações sobre eles. Nenhum \"\n\"item foi modificado.\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"Nenhuma ação selecionada.\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"Adicionar %s\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"Objeto %(name)s com chave primária %(key)r não existe.\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"Modificar %s\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"Erro no banco de dados\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"%(count)s %(name)s modificado com sucesso.\"\nmsgstr[1] \"%(count)s %(name)s modificados com sucesso.\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"%(total_count)s selecionado\"\nmsgstr[1] \"Todos %(total_count)s selecionados\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"0 de %(cnt)s selecionados\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\": excluído com sucesso.\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"Histórico de modificações: %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"Acessar\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"Administração do Site\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"Administração de %s\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"Data:\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"Hora:\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"Olhar\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"Adicionar Outro(a)\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"Atualmente:\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"Alterar:\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"Página não encontrada\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"Desculpe, mas a página requisitada não pode ser encontrada.\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"Início\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"Erro no servidor\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"Erro no servidor (500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"Erro no Servidor <em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\"Houve um erro, que já foi reportado aos administradores do site por email e \"\n\"deverá ser consertado em breve. Obrigado pela sua paciência.\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"Executar ação selecionada\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"Ir\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"Clique aqui para selecionar os objetos de todas as páginas\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"Selecionar todos %(total_count)s %(module_name)s\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"Limpar seleção\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"Bem-vindo(a),\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"Documentação\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"Alterar senha\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"Encerrar sessão\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"Site de administração do Django\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"Administração do Django\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"Adicionar\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"Histórico\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"Ver no site\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"Por favor, corrija o erro abaixo.\"\nmsgstr[1] \"Por favor, corrija os erros abaixo.\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"Adicionar %(name)s\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"Filtro\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"Remover da ordenação\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"Prioridade da ordenação: %(priority_number)s\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"Alternar ordenção\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"Apagar\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"A remoção de '%(object_name)s' %(escaped_object)s pode resultar na remoção \"\n\"de objetos relacionados, mas sua conta não tem a permissão para remoção dos \"\n\"seguintes tipos de objetos:\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\"Excluir o %(object_name)s  ' %(escaped_object)s ' exigiria excluir os \"\n\"seguintes objetos protegidos relacionados:\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\"Você tem certeza que quer remover %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"Todos os seguintes itens relacionados serão removidos:\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"Sim, tenho certeza\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"Remover múltiplos objetos\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\"Excluir o %(objects_name)s selecionado pode resultar na remoção de objetos \"\n\"relacionados, mas sua conta não tem permissão para excluir os seguintes \"\n\"tipos de objetos:\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\"Excluir o %(objects_name)s selecionado exigiria excluir os seguintes objetos \"\n\"relacionados protegidos:\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\"Tem certeza de que deseja apagar o %(objects_name)s selecionado? Todos os \"\n\"seguintes objetos e seus itens relacionados serão removidos:\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \"Por %(filter_title)s \"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"Modelos na aplicação %(name)s\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"Modificar\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"Você não tem permissão para edição.\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"Ações Recentes\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"Minhas Ações\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"Nenhum disponível\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"Conteúdo desconhecido\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"Alguma coisa está errada com a instalação do banco de dados. Certifique-se \"\n\"que as tabelas necessárias foram criadas e que o banco de dados pode ser \"\n\"acessado pelo usuário apropriado.\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"Senha:\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"Esqueceu sua senha ou nome de usuário?\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"Data/hora\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"Usuário\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"Ação\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\"Este objeto não tem um histórico de alterações. Ele provavelmente não foi \"\n\"adicionado por este site de administração.\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"Mostrar tudo\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"Salvar\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"Pesquisar\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"%(counter)s resultado\"\nmsgstr[1] \"%(counter)s resultados\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"%(full_result_count)s total\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"Salvar como novo\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"Salvar e adicionar outro(a)\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"Salvar e continuar editando\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\"Primeiro, informe um nome de usuário e senha. Depois você será capaz de \"\n\"editar mais opções do usuário.\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"Digite um nome de usuário e senha.\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"Informe uma nova senha para o usuário <strong>%(username)s</strong>.\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"Senha\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"Senha (novamente)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Informe a mesma senha digitada acima, para verificação.\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"Remover\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"Adicionar outro(a) %(verbose_name)s\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"Apagar?\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"Obrigado por visitar nosso Web site hoje.\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"Acessar novamente\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"Alterar senha\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"Senha alterada com sucesso\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"Sua senha foi alterada.\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"Por favor, informe sua senha antiga, por segurança, e então informe sua nova \"\n\"senha duas vezes para que possamos verificar se você digitou corretamente.\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"Senha antiga\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"Nova senha\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"Alterar minha senha\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"Recuperar senha\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"Recuperação de senha completa\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"Sua senha foi definida. Você pode prosseguir e se autenticar agora.\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"Confirmação de recuperação de senha\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"Insira a nova senha\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"\"\n\"Por favor, informe sua nova senha duas vezes para que possamos verificar se \"\n\"você a digitou corretamente.\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"Nova senha:\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"Confirme a senha:\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"Recuperação de senha sem sucesso\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\"O link para a recuperação de senha era inválido, possivelmente porque jã foi \"\n\"utilizado. Por favor, solicite uma nova recuperação de senha.\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"Senha recuperada com sucesso\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\"Nós te enviamos as instruções para definição da a sua senha para o endereço \"\n\"de email fornecido. Você receberá a mensagem em breve.\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\"Você está recebendo este email porque solicitou a redefinição da senha da \"\n\"sua conta em %(site_name)s.\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"Por favor, acesse a seguinte página e escolha uma nova senha:\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"Seu nome de usuário, caso tenha esquecido:\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"Obrigado por usar nosso site!\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"Equipe %(site_name)s\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\"Esqueceu a senha? Forneça o seu endereço de email abaixo e te enviaremos \"\n\"instruções para definir uma nova.\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"Endereço de email:\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"Reinicializar minha senha\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"Todas as datas\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"(Nenhum)\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"Selecione %s\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"Selecione %s para modificar\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/pt_BR/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Eduardo Carvalho <eduardocereto@gmail.com>, 2011.\n# Guilherme Gondim <semente+transifex@taurinus.org>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-03-19 18:12+0000\\n\"\n\"Last-Translator: Guilherme Gondim <semente@taurinus.org>\\n\"\n\"Language-Team: Portuguese (Brazil) <django-l10n-portuguese@googlegroups.\"\n\"com>\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: pt_BR\\n\"\n\"Plural-Forms: nplurals=2; plural=(n > 1);\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"%s disponíveis\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Esta é a lista de %s disponíveis. Você pode escolhê-los(as) selecionando-os\"\n\"(as) abaixo e clicando na seta \\\"Escolher\\\" entre as duas caixas.\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"Digite nessa caixa para filtrar a lista de %s disponíveis.\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"Filtro\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"Escolher todos\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"Clique para escolher todos os %s de uma só vez\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"Escolher\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"Remover\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"%s escolhido(s)\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Esta é a lista de %s disponíveis. Você pode removê-los(as) selecionando-os\"\n\"(as) abaixo e clicando na seta \\\"Remover\\\" entre as duas caixas.\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"Remover todos\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"Clique para remover de uma só vez todos os %s escolhidos.\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"%(sel)s de %(cnt)s selecionado\"\nmsgstr[1] \"%(sel)s de %(cnt)s selecionados\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\"Você tem alterações não salvas em campos editáveis individuais. Se você \"\n\"executar uma ação suas alterações não salvas serão perdidas.\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\"Você selecionou uma ação, mas você não salvou as alterações de cada campo \"\n\"ainda. Clique em OK para salvar. Você vai precisar executar novamente a ação.\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\"Você selecionou uma ação, e você não fez alterações em campos individuais. \"\n\"Você provavelmente está procurando o botão Ir ao invés do botão \\\"Salvar\\\".\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"\"\n\"Janeiro Fevereiro Março Abril Maio Junho Julho Agosto Setembro Outubro \"\n\"Novembro Dezembro\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"D S T Q Q S S\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"Mostrar\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"Esconder\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"Agora\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"Relógio\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"Escolha uma hora\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"Meia-noite\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"6 da manhã\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"Meio-dia\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"Cancelar\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"Hoje\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"Calendário\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"Ontem\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"Amanhã\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/ro/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Daniel Ursache-Dogariu <contact@danniel.net>, 2011.\n# Denis Darii <sinednx@gmail.com>, 2011.\n#   <ionel.mc@gmail.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:52+0000\\n\"\n\"Last-Translator: Ramiro Morales <cramm0@gmail.com>\\n\"\n\"Language-Team: Romanian (http://www.transifex.com/projects/p/django/language/\"\n\"ro/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ro\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?\"\n\"2:1));\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"%(count)d %(items)s eliminate cu succes.\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"Nu se poate șterge %(name)s\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"Sigur?\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"Elimină %(verbose_name_plural)s selectate\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"Toate\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"Da\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"Nu\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"Necunoscut\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"Orice dată\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"Astăzi\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"Ultimele 7 zile\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"Luna aceasta\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"Anul acesta\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"Autentificațți-vă din nou, deoarece sesiunea dumneavoastră a expirat.\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"Acțiune:\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"timp acțiune\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"id obiect\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"repr obiect\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"marcaj acțiune\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"schimbă mesaj\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"intrare jurnal\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"intrări jurnal\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"S-au adăugat \\\"%(object)s\\\".\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"S-au schimbat \\\"%(object)s\\\" - %(changes)s\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"S-au șters \\\"%(object)s.\\\"\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"Obiect LogEntry\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"Nimic\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"S-a schimbat %s.\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"și\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"S-a adăugat %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"S-a schimbat %(list)s în %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"S-a șters %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"Niciun câmp modificat.\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" a fost adăugat(ă) cu succes. Puteți edita din nou mai \"\n\"jos.\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" a fost adăugat cu succes.\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" a fost modificat(ă) cu succes.\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\"Itemii trebuie selectați pentru a putea îndeplini sarcini asupra lor. Niciun \"\n\"item nu a fost modificat.\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"Nicio acțiune selectată.\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"Adaugă %s\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"Obiectul %(name)s ce are cheie primară %(key)r nu există.\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"Schimbă %s\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"Eroare de bază de date\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"%(count)s %(name)s s-a modificat cu succes.\"\nmsgstr[1] \"%(count)s %(name)s s-au modificat cu succes.\"\nmsgstr[2] \"%(count)s de %(name)s s-au modificat cu succes.\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"%(total_count)s selectat(ă)\"\nmsgstr[1] \"Toate %(total_count)s selectate\"\nmsgstr[2] \"Toate %(total_count)s selectate\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"0 din %(cnt)s  selectat\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" eliminat(ă) cu succes.\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"Istoric schimbări: %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"Autentificare\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"Administrare site\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"Administrare %s\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"Dată:\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"Oră:\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"Căutare\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"Mai adăugați\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"Pagină inexistentă\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"Ne pare rău, dar pagina solicitată nu a putut fi găsită.\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"Acasă\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"Eroare de server\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"Eroare de server (500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"Eroare server <em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"Pornește acțiunea selectată\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"Start\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"Clic aici pentru a selecta obiectele la nivelul tuturor paginilor\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"Selectați toate %(total_count)s %(module_name)s\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"Deselectați\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"Bun venit,\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"Documentație\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"Schimbă parola\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"Deautentificare\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"Administrare sit Django\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"Administrare Django\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"Adaugă\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"Istoric\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"Vizualizează pe sit\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"Corectați eroarea de mai jos\"\nmsgstr[1] \"Corectați erorile de mai jos\"\nmsgstr[2] \"Corectați erorile de mai jos\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"Adaugă %(name)s\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"Filtru\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"Elimină din sortare\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"Prioritate sortare: %(priority_number)s\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"Alternează sortarea\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"Șterge\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"Ștergerea %(object_name)s '%(escaped_object)s' va duce și la ștergerea \"\n\"obiectelor asociate, însă contul dumneavoastră nu are permisiunea de a \"\n\"șterge următoarele tipuri de obiecte:\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\"Ștergerea %(object_name)s '%(escaped_object)s' ar putea necesita și \"\n\"ștergerea următoarelor obiecte protejate asociate:\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\"Sigur doriți ștergerea %(object_name)s \\\"%(escaped_object)s\\\"? Următoarele \"\n\"itemuri asociate vor fi șterse:\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"Da, cu siguranță\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"Ștergeți obiecte multiple\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\"Ștergerea %(objects_name)s conform selecției ar putea duce la ștergerea \"\n\"obiectelor asociate, însă contul dvs. de utilizator nu are permisiunea de a \"\n\"șterge următoarele tipuri de obiecte:\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\"Ştergerea %(objects_name)s conform selecției  ar necesita și ștergerea \"\n\"următoarelor obiecte protejate asociate:\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\"Sigur doriţi să ștergeți %(objects_name)s conform selecției? Toate obiectele \"\n\"următoare alături de cele asociate lor vor fi șterse:\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \"După %(filter_title)s \"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"Schimbă\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"Nu nicio permisiune de editare.\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"Acțiuni recente\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"Acțiunile mele\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"Niciuna\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"Conținut necunoscut\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"Există o problema cu baza de date. Verificați dacă tabelele necesare din \"\n\"baza de date au fost create și verificați dacă baza de date poate fi citită \"\n\"de utilizatorul potrivit.\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"Parolă:\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"Ați uitat parola sau utilizatorul ?\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"Dată/oră\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"Utilizator\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"Acțiune\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\"Acest obiect nu are un istoric al schimbărilor. Probabil nu a fost adăugat \"\n\"prin intermediul acestui sit de administrare.\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"Arată totul\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"Salvează\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"Caută\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"%(counter)s rezultat\"\nmsgstr[1] \"%(counter)s rezultate\"\nmsgstr[2] \"%(counter)s de rezultate\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"%(full_result_count)s în total\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"Salvați ca nou\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"Salvați și mai adăugați\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"Salvați și continuați editarea\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\"Introduceți mai întâi un nume de utilizator și o parolă. Apoi veți putea \"\n\"modifica mai multe opțiuni ale utilizatorului.\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"Introduceți un nume de utilizator și o parolă.\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"\"\n\"Introduceți o parolă nouă pentru utilizatorul <strong>%(username)s</strong>.\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"Parolă\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"Parolă (din nou)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Introduceți parola din nou, pentru verificare.\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"Elimină\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"Adăugati încă un/o %(verbose_name)s\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"Elimină?\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"Mulţumiri pentru timpul petrecut astăzi pe sit.\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"Reautentificare\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"Schimbare parolă\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"Schimbare reușită a parolei\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"Parola a fost schimbată.\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"Din motive de securitate, introduceți parola veche, apoi de două ori parola \"\n\"nouă, pentru a putea verifica dacă ați scris-o corect. \"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"Parolă veche\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"Parolă nouă\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"Schimbă-mi parola\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"Resetare parolă\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"Resetare completă a parolei\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"\"\n\"Parola dumneavoastră a fost stabilită. Acum puteți continua să vă \"\n\"autentificați.\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"Confirmare resetare parolă\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"Introduceți parolă nouă\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"\"\n\"Introduceți parola de două ori, pentru a putea verifica dacă ați scris-o \"\n\"corect.\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"Parolă nouă:\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"Confirmare parolă:\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"Resetare nereușită a parolei\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\"Link-ul de resetare a parolei a fost nevalid, probabil din cauză că acesta a \"\n\"fost deja utilizat. Solicitați o nouă resetare a parolei.\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"Parolă resetată cu succes\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"Mergeți la următoarea pagină și alegeți o parolă nouă:\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"Numele de utilizator, în caz că l-ați uitat:\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"Mulțumiri pentru utilizarea sitului nostru!\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"Echipa %(site_name)s\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"Resetează-mi parola\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"Toate datele\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"(Nimic)\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"Selectează %s\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"Selectează %s pentru schimbare\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/ro/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Daniel Ursache-Dogariu <contact@danniel.net>, 2011.\n# Denis Darii <sinednx@gmail.com>, 2011.\n#   <ionel.mc@gmail.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-03-10 14:58+0000\\n\"\n\"Last-Translator: Ionel Cristian Mărieș <ionel.mc@gmail.com>\\n\"\n\"Language-Team: Romanian (http://www.transifex.com/projects/p/django/language/\"\n\"ro/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ro\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?\"\n\"2:1));\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"%s disponibil\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Aceasta este o listă cu %s disponibile. Le puteți alege selectând mai multe \"\n\"in chenarul de mai jos și apăsând pe săgeata \\\"Alege\\\" dintre cele două \"\n\"chenare.\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"Scrie în acest chenar pentru a filtra lista de %s disponibile.\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"Filtru\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"Alege toate\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"Click pentru a alege toate %s.\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"Alege\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"Elimină\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"%s alese\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Aceasta este lista de %s alese. Puteți elimina din ele selectându-le in \"\n\"chenarul de mai jos și apasand pe săgeata \\\"Elimină\\\" dintre cele două \"\n\"chenare.\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"Elimină toate\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"Click pentru a elimina toate %s alese.\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"%(sel)s din %(cnt)s selectate\"\nmsgstr[1] \"%(sel)s din %(cnt)s selectate\"\nmsgstr[2] \"de %(sel)s din %(cnt)s selectate\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\"Aveţi modificări nesalvate în cîmpuri individuale editabile. Dacă executaţi \"\n\"o acțiune, modificările nesalvate vor fi pierdute.\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\"Aţi selectat o acţiune, dar nu aţi salvat încă modificările la câmpuri \"\n\"individuale. Faceţi clic pe OK pentru a salva. Va trebui să executați \"\n\"acțiunea din nou.\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\"Ați selectat o acţiune și nu ațţi făcut modificări în cîmpuri individuale. \"\n\"Probabil căutați butonul Go, în loc de Salvează.\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"\"\n\"Ianuarie Februare Martie Aprilie Mai Iunie Iulie August Septembrie Octombrie \"\n\"Noiembrie Decembrie\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"D L M M J V S\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"Arată\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"Ascunde\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"Acum\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"Ceas\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"Alege o oră\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"Miezul nopții\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"6 a.m.\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"Amiază\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"Anulează\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"Astăzi\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"Calendar\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"Ieri\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"Mâine\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/ru/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Denis Darii <sinednx@gmail.com>, 2011.\n# Dimmus <dmitri.chudinov@gmail.com>, 2011.\n# Eugene MechanisM <contact@mechanism.name>, 2012-2013.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Алексей Борискин <sun.void@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-04 18:26+0000\\n\"\n\"Last-Translator: Eugene MechanisM <contact@mechanism.name>\\n\"\n\"Language-Team: Russian (http://www.transifex.com/projects/p/django/language/\"\n\"ru/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ru\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"Успешно удалены %(count)d %(items)s.\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"Не удается удалить %(name)s\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"Вы уверены?\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"Удалить выбранные %(verbose_name_plural)s\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"Все\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"Да\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"Нет\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"Неизвестно\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"Любая дата\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"Сегодня\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"Последние 7 дней\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"Этот месяц\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"Этот год\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\"Пожалуйста, введите корректные %(username)s и пароль для аккаунта. Оба поля \"\n\"могут быть чувствительны к регистру.\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"Пожалуйста, войдите снова, поскольку ваша сессия устарела.\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"Действие:\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"время действия\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"идентификатор объекта\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"представление объекта\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"тип действия\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"сообщение об изменении\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"запись в журнале\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"записи в журнале\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"Добавлено \\\"%(object)s\\\".\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"Изменено \\\"%(object)s\\\" - %(changes)s\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"Удалено \\\"%(object)s.\\\"\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"Запись в журнале\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"Нет\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"Изменен %s.\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"и\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Добавлен %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Изменены %(list)s для %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Удален %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"Ни одно поле не изменено.\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" был успешно добавлен. Ниже вы можете снова его \"\n\"отредактировать.\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" успешно добавлен. Ниже вы можете добавить еще %(name)s.\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" был успешно добавлен.\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" успешно изменен. Ниже вы можете редактировать снова.\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" успешно изменен. Ниже вы можете добавить еще %(name)s.\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" был успешно изменен.\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\"Чтобы произвести действия над объектами, необходимо их выбрать. Объекты не \"\n\"были изменены.\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"Действие не выбрано.\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"Добавить %s\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"%(name)s с первичным ключом %(key)r не существует.\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"Изменить %s\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"Ошибка базы данных\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"%(count)s %(name)s был успешно изменен.\"\nmsgstr[1] \"%(count)s %(name)s были успешно изменены.\"\nmsgstr[2] \"%(count)s %(name)s были успешно изменены.\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"Выбран %(total_count)s\"\nmsgstr[1] \"Выбраны все %(total_count)s\"\nmsgstr[2] \"Выбраны все %(total_count)s\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"Выбрано 0 объектов из %(cnt)s \"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" был успешно удален.\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"История изменений: %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"Войти\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"Администрирование сайта\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"%s администрирование\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"Дата:\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"Время:\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"Поиск\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"Добавить еще\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"Сейчас:\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"Изменить:\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"Страница не найдена\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"К сожалению, запрашиваемая вами страница не найдена.\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"Начало\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"Ошибка сервера\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"Ошибка сервера (500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"Ошибка сервера <em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\"Произошла ошибка. О ней сообщено администраторам сайта по электронной почте, \"\n\"ошибка должна быть вскоре исправлена. Благодарим вас за терпение.\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"Выполнить выбранное действие\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"Выполнить\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"Нажмите здесь, чтобы выбрать объекты на всех страницах\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"Выбрать все %(module_name)s (%(total_count)s)\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"Снять выделение\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"Добро пожаловать,\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"Документация\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"Изменить пароль\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"Выйти\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"Административный сайт Django\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"Администрирование Django\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"Добавить\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"История\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"Смотреть на сайте\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"Пожалуйста, исправьте ошибку ниже.\"\nmsgstr[1] \"Пожалуйста, исправьте ошибки ниже.\"\nmsgstr[2] \"Пожалуйста, исправьте ошибки ниже.\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"Добавить %(name)s\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"Фильтр\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"Удалить из сортировки\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"Приоритет сортировки: %(priority_number)s\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"Сортировать в другом направлении\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"Удалить\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"Удаление %(object_name)s '%(escaped_object)s' приведет к удалению связанных \"\n\"объектов, но ваша учетная запись не имеет прав для удаления следующих типов \"\n\"объектов:\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\"Удаление %(object_name)s '%(escaped_object)s' потребует удаления следующих \"\n\"связанных защищенных объектов:\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\"Вы уверены, что хотите удалить %(object_name)s \\\"%(escaped_object)s\\\"? Все \"\n\"следующие связанные объекты также будут удалены:\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"Да, я уверен\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"Удалить несколько объектов\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\"Удаление выбранной %(objects_name)s приведет к удалению связанных объектов, \"\n\"но ваша учетная запись не имеет прав на удаление следующих типов объектов:\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\"Удаление %(objects_name)s потребует удаления следующих связанных защищенных \"\n\"объектов:\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\"Вы уверены, что хотите удалить %(objects_name)s? Все следующие объекты и \"\n\"связанные с ними элементы будут удалены:\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \"%(filter_title)s\"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"Модели в приложении %(name)s\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"Изменить\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"У вас недостаточно прав для редактирования.\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"Последние действия\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"Мои действия\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"Недоступно\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"Неизвестный тип\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"Ваша база данных неправильно настроена. Убедитесь, что соответствующие \"\n\"таблицы были созданы, и что соответствующему пользователю разрешен к ним \"\n\"доступ.\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"Пароль:\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"Забыли свой пароль или имя пользователя?\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"Дата и время\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"Пользователь\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"Действие\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\"Данный объект не имеет истории изменений. Возможно, он был добавлен не через \"\n\"данный административный сайт.\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"Показать все\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"Сохранить\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"Найти\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"%(counter)s результат\"\nmsgstr[1] \"%(counter)s результата\"\nmsgstr[2] \"%(counter)s результатов\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"%(full_result_count)s всего\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"Сохранить как новый объект\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"Сохранить и добавить другой объект\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"Сохранить и продолжить редактирование\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\"Сначала введите имя пользователя и пароль. Затем вы сможете ввести больше \"\n\"информации о пользователе.\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"Введите имя пользователя и пароль.\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"Введите новый пароль для пользователя <strong>%(username)s</strong>.\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"Пароль\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"Пароль (еще раз)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Введите тот же пароль, что и выше, для подтверждения.\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"Удалить\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"Добавить еще один %(verbose_name)s\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"Удалить?\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"Благодарим вас за время, проведенное на этом сайте.\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"Войти снова\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"Изменение пароля\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"Пароль успешно изменен\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"Ваш пароль был изменен.\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"В целях безопасности, пожалуйста, введите свой старый пароль, затем введите \"\n\"новый пароль дважды, чтобы мы могли убедиться в правильности написания.\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"Старый пароль\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"Новый пароль\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"Изменить мой пароль\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"Восстановление пароля\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"Восстановление пароля завершено\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"Ваш пароль был сохранен.  Теперь вы можете войти.\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"Подтверждение восстановления пароля\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"Введите новый пароль:\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"\"\n\"Пожалуйста, введите новый пароль дважды, чтобы мы могли убедиться в \"\n\"правильности написания.\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"Новый пароль:\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"Подтвердите пароль:\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"Ошибка восстановления пароля\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\"Неверная ссылка для восстановления пароля. Возможно, ей уже воспользовались. \"\n\"Пожалуйста, попробуйте восстановить пароль еще раз.\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"Пароль успешно восстановлен\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\"Мы отправили инструкцию по восстановлению пароля на указанный вами адрес \"\n\"электронной почты. Вы должны её вскоре получить.\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\"Вы получили это письмо, потому что вы (или кто-то другой) запросили \"\n\"восстановление пароля от учётной записи на сайте %(site_name)s, которая \"\n\"связана с этим адресом электронной почты.\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"Пожалуйста, перейдите на эту страницу и введите новый пароль:\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"Ваше имя пользователя (на случай, если вы его забыли):\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"Спасибо, что используете наш сайт!\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"Команда сайта %(site_name)s\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\"Забыли пароль? Введите свой адрес электронной почты ниже, и мы вышлем вам \"\n\"инструкцию, как установить новый пароль.\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"Адрес электронной почты:\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"Восстановить мой пароль\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"Все даты\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"(Ничего)\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"Выберите %s\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"Выберите %s для изменения\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/ru/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Denis Darii <sinednx@gmail.com>, 2011.\n# Dimmus <dmitri.chudinov@gmail.com>, 2011.\n# Eugene MechanisM <contact@mechanism.name>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Алексей Борискин <sun.void@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-03-08 10:42+0000\\n\"\n\"Last-Translator: Алексей Борискин <sun.void@gmail.com>\\n\"\n\"Language-Team: Russian (http://www.transifex.com/projects/p/django/language/\"\n\"ru/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ru\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"Доступные %s\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Это список всех доступных %s. Вы можете выбрать некоторые из них, выделив их \"\n\"в поле ниже и кликнув \\\"Выбрать\\\", либо двойным щелчком.\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"\"\n\"Начните вводить текст в этом поле, чтобы отфитровать список доступных %s.\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"Фильтр\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"Выбрать все\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"Нажмите, чтобы выбрать все %s сразу.\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"Выбрать\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"Удалить\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"Выбранные %s\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Это список выбранных %s. Вы можете удалить некоторые из них, выделив их в \"\n\"поле ниже и кликнув \\\"Удалить\\\", либо двойным щелчком.\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"Удалить все\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"Нажмите чтобы удалить все %s сразу.\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"Выбран %(sel)s из %(cnt)s\"\nmsgstr[1] \"Выбрано %(sel)s из %(cnt)s\"\nmsgstr[2] \"Выбрано %(sel)s из %(cnt)s\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\"Имеются несохраненные изменения в отдельных полях для редактирования. Если \"\n\"вы запустите действие, несохраненные изменения будут потеряны.\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\"Вы выбрали действие, но еще не сохранили изменения, внесенные в некоторых \"\n\"полях для редактирования. Нажмите OK, чтобы сохранить изменения. После \"\n\"сохранения вам придется запустить действие еще раз.\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\"Вы выбрали действие и не внесли изменений в данные. Возможно, вы хотели \"\n\"воспользоваться кнопкой \\\"Выполнить\\\", а не кнопкой \\\"Сохранить\\\". Если это \"\n\"так, то нажмите \\\"Отмена\\\", чтобы вернуться в интерфейс редактирования. \"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"\"\n\"Январь Февраль Март Апрель Май Июнь Июль Август Сентябрь Октябрь Ноябрь \"\n\"Декабрь\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"В П В С Ч П С\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"Показать\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"Скрыть\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"Сейчас\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"Часы\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"Выберите время\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"Полночь\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"6 часов\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"Полдень\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"Отмена\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"Сегодня\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"Календарь\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"Вчера\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"Завтра\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/sk/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Juraj Bubniak <translations@jbub.eu>, 2012.\n# Marian Andre <marian@andre.sk>, 2011-2013.\n# Martin Kosír <martin@martinkosir.net>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 15:40+0000\\n\"\n\"Last-Translator: Marian Andre <marian@andre.sk>\\n\"\n\"Language-Team: Slovak (http://www.transifex.com/projects/p/django/language/\"\n\"sk/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sk\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"Úspešne zmazaných %(count)d %(items)s.\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"Nedá sa vymazať %(name)s\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"Ste si istý?\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"Zmazať označené %(verbose_name_plural)s\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"Všetko\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"Áno\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"Nie\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"Neznámy\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"Ľubovoľný dátum\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"Dnes\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"Posledných 7 dní\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"Tento mesiac\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"Tento rok\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\"Zadajte prosím správne %(username)s a heslo pre účet personálu - \\\"staff \"\n\"account\\\". Obe polia môžu obsahovať veľké a malé písmená.\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"Vaše prihlásenie vypršalo. Prosím, prihláste sa znovu.\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"Akcia:\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"čas akcie\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"identifikátor objektu\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"reprezentácia objektu\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"príznak akcie\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"zmeniť správu\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"položka záznamu\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"položky záznamu\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"Pridané \\\"%(object)s\\\".\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"Zmenené \\\" %(object)s \\\" - %(changes)s \"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"Odstránené \\\"%(object)s.\\\"\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"Objekt LogEntry\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"Žiadne\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"Zmenené %s.\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"a\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Pridaný %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Zmenený %(list)s pre %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Zmazaný %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"Polia nezmenené.\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"\"\n\"Objekt %(name)s \\\"%(obj)s\\\" bol úspešne pridaný. Ďalšie zmeny môžete urobiť \"\n\"nižšie.\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" bol úspešne pridaný. Môžete pridať ďaľší %(name)s \"\n\"nižšie.\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"Objekt %(name)s \\\"%(obj)s\\\" bol úspešne pridaný.\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" bol úspešne zmenený. Môžete ho znovu upraviť nižšie.\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" bol úspešne zmenený. Môžete pridať ďaľšie %(name)s \"\n\"nižšie.\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"Objekt %(name)s \\\"%(obj)s\\\" bol úspešne zmenený.\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\"Položky musia byť vybrané, ak chcete na nich vykonať akcie. Neboli vybrané \"\n\"žiadne položky.\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"Nebola vybraná žiadna akcia.\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"Pridať %s\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"Objekt %(name)s s primárnym kľúčom %(key)r neexistuje.\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"Zmeniť %s\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"Chyba databázy\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"%(count)s %(name)s bola úspešne zmenená.\"\nmsgstr[1] \"%(count)s %(name)s boli úspešne zmenené.\"\nmsgstr[2] \"%(count)s %(name)s bolo úspešne zmenených.\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"%(total_count)s vybraná\"\nmsgstr[1] \"Všetky %(total_count)s vybrané\"\nmsgstr[2] \"Všetkých %(total_count)s vybraných\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"0 z %(cnt)s vybraných\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"Objekt %(name)s \\\"%(obj)s\\\" bol úspešne vymazaný.\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"Zmeniť históriu: %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"Prihlásenie\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"Správa stránky\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"%s správa\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"Dátum:\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"Čas:\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"Vyhľadanie\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"Pridať ďalší\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"Aktuálne:\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"Zmeniť:\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"Stránka nenájdená\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"Ľutujeme, ale požadovanú stránku nie je možné nájsť.\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"Domov\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"Chyba servera\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"Chyba servera (500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"Chyba servera <em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\"Došlo k chybe. Chyba bola nahlásená správcovi webu prostredníctvom e-mailu a \"\n\"zanedlho by mala byť odstránená. Ďakujeme za vašu trpezlivosť.\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"Vykonať vybranú akciu\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"Vykonať\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"Kliknite sem pre výber objektov na všetkých stránkach\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"Vybrať všetkých %(total_count)s %(module_name)s\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"Zrušiť výber\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"Vitajte,\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"Dokumentácia\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"Zmeniť heslo\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"Odhlásiť\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"Správa Django stránky\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"Správa Django\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"Pridať\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"História\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"Pozrieť na stránke\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"Prosím, opravte chybu uvedenú nižšie.\"\nmsgstr[1] \"Prosím, opravte chyby uvedené nižšie.\"\nmsgstr[2] \"Prosím, opravte chyby uvedené nižšie.\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"Pridať %(name)s\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"Filtrovať\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"Odstrániť z triedenia\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"Triedenie priority: %(priority_number)s \"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"Prepnúť triedenie\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"Odstrániť\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"Odstránenie objektu %(object_name)s '%(escaped_object)s' by malo za následok \"\n\"aj odstránenie súvisiacich objektov. Váš účet však nemá oprávnenie na \"\n\"odstránenie nasledujúcich typov objektov:\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\"Vymazanie %(object_name)s '%(escaped_object)s' vyžaduje vymazanie \"\n\"nasledovných súvisiacich chránených objektov:\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\"Ste si istý, že chcete odstrániť objekt %(object_name)s \\\"%(escaped_object)s\"\n\"\\\"? Všetky nasledujúce súvisiace objekty budú odstránené:\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"Áno, som si istý\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"Zmazať viacero objektov\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\"Vymazanie označených %(objects_name)s by spôsobilo vymazanie súvisiacich \"\n\"objektov, ale váš účet nemá oprávnenie na vymazanie nasledujúcich typov \"\n\"objektov:\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\"Vymazanie označených %(objects_name)s vyžaduje vymazanie nasledujúcich \"\n\"chránených súvisiacich objektov:\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\"Ste si isty, že chcete vymazať označené %(objects_name)s? Vymažú sa všetky \"\n\"nasledujúce objekty a ich súvisiace položky:\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \"Podľa %(filter_title)s \"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"Modely v %(name)s aplikácii\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"Zmeniť\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"Nemáte právo na vykonávanie zmien.\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"Posledné akcie\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"Moje akcie\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"Nedostupné\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"Neznámy obsah\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"Niečo nie je v poriadku s vašou inštaláciou databázy. Uistite sa, že boli \"\n\"vytvorené potrebné databázové tabuľky a taktiež skontrolujte, či príslušný \"\n\"používateľ môže databázu čítať.\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"Heslo:\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"Zabudli ste heslo alebo používateľské meno?\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"Dátum a čas\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"Používateľ\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"Akcia\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\"Tento objekt nemá históriu zmien. Pravdepodobne nebol pridaný \"\n\"prostredníctvom tejto správcovskej stránky.\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"Zobraziť všetky\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"Uložiť\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"Vyhľadávanie\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"%(counter)s výsledok\"\nmsgstr[1] \"%(counter)s výsledky\"\nmsgstr[2] \"%(counter)s výsledkov\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"%(full_result_count)s spolu\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"Uložiť ako nový\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"Uložiť a pridať ďalší\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"Uložiť a pokračovať v úpravách\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\"Najskôr zadajte používateľské meno a heslo. Potom budete môcť upraviť viac \"\n\"používateľských nastavení.\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"Zadajte používateľské meno a heslo.\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"Zadajte nové heslo pre používateľa <strong>%(username)s</strong>.\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"Heslo\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"Heslo (znova)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Kvôli overeniu zadajte rovnaké heslo ako vyššie.\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"Odstrániť\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"Pridať ďalší %(verbose_name)s\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"Zmazať?\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"Ďakujeme za čas strávený na našich stránkach.\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"Znova sa prihlásiť\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"Zmena hesla\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"Zmena hesla úspešná\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"Vaše heslo bolo zmenené.\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"Z bezpečnostných dôvodov zadajte staré heslo a potom nové heslo dvakrát, aby \"\n\"sme mohli overiť, že ste ho zadali správne.\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"Staré heslo\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"Nové heslo\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"Zmeniť moje heslo\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"Obnovenie hesla\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"Obnovenie hesla ukončené\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"Vaše heslo bolo nastavené. Môžete pokračovať a prihlásiť sa.\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"Potvrdenie obnovenia hesla\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"Zadajte nové heslo\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"\"\n\"Zadajte nové heslo dvakrát, aby sme mohli overiť, že ste ho zadali správne.\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"Nové heslo:\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"Potvrdenie hesla:\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"Obnova hesla sa nepodarila\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\"Odkaz na obnovenie hesla je neplatný, pretože už bol pravdepodobne raz \"\n\"použitý. Prosím, požiadajte znovu o obnovu hesla.\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"Obnovenie hesla úspešné\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\"Na e-mailovú adresu, ktorú ste zadali, sme odoslali pokyny pre nastavenie \"\n\"hesla. Mali by ste ho dostať čoskoro.\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\"Tento e-mail ste dostali preto, lebo ste požiadali o obnovenie hesla pre \"\n\"užívateľský účet na %(site_name)s.\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"Prosím, choďte na túto stránku a zvoľte si nové heslo:\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"Vaše používateľské meno, pre prípad, že ste ho zabudli:\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"Ďakujeme, že používate našu stránku!\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"Tím %(site_name)s\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\"Zabudli ste heslo? Zadajte svoju e-mailovú adresu a my vám pošleme \"\n\"inštrukcie pre nastavenie nového hesla.\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"E-mailová adresa:\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"Obnova môjho hesla\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"Všetky dátumy\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"(Žiadne)\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"Vybrať %s\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"Vybrať \\\"%s\\\" na úpravu\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/sk/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Dimitris Glezos <glezos@transifex.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Juraj Bubniak <>, 2012.\n# Marian Andre <marian@andre.sk>, 2012.\n# Martin Kosír <martin@martinkosir.net>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-07-16 12:08+0000\\n\"\n\"Last-Translator: Juraj Bubniak <translations@jbub.eu>\\n\"\n\"Language-Team: Slovak (http://www.transifex.com/projects/p/django/language/\"\n\"sk/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sk\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"Dostupné %s\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Toto je zoznam dostupných %s. Pre výber je potrebné označiť ich v poli a \"\n\"následne kliknutím na šípku \\\"Vybrať\\\" presunúť.\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"Píšte do tohto poľa pre vyfiltrovanie dostupných %s.\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"Filtrovať\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"Vybrať všetko\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"Kliknite sem pre vybratie všetkých %s naraz.\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"Vybrať\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"Odstrániť\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"Vybrané %s\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Toto je zoznam dostupných %s. Pre vymazanie je potrebné označiť ich v poli a \"\n\"následne kliknutím na šípku \\\"Vymazať\\\" vymazať.\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"Odstrániť všetky\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"Kliknite sem pre vymazanie vybratých %s naraz.\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"%(sel)s z %(cnt)s vybrané\"\nmsgstr[1] \"%(sel)s z %(cnt)s vybrané\"\nmsgstr[2] \"%(sel)s z %(cnt)s vybraných\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\"Vrámci jednotlivých editovateľných polí máte neuložené zmeny. Ak vykonáte \"\n\"akciu, vaše zmeny budú stratené.\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\"Vybrali ste akciu, ale neuložili ste jednotlivé polia. Prosím, uložte zmeny \"\n\"kliknutím na OK. Akciu budete musieť vykonať znova.\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\"Vybrali ste akciu, ale neurobili ste žiadne zmeny v jednotlivých poliach. \"\n\"Pravdepodobne ste chceli použiť tlačidlo vykonať namiesto uložiť.\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"\"\n\"január február marec apríl máj jún júl august september október november \"\n\"december\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"N P U S Š P S\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"Zobraziť\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"Skryť\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"Teraz\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"Hodiny\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"Vybrať čas\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"Polnoc\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"6:00\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"Poludnie\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"Zrušiť\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"Dnes\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"Kalendár\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"Včera\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"Zajtra\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/sl/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Jure Cuhalev <gandalf@owca.info>, 2011-2012.\n#  <zejn@kiberpipa.org>, 2013.\n#   <zejn@kiberpipa.org>, 2012.\n# zejn <zejn@kiberpipa.org>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-02-15 18:10+0000\\n\"\n\"Last-Translator: zejn <zejn@kiberpipa.org>\\n\"\n\"Language-Team: Slovenian (http://www.transifex.com/projects/p/django/\"\n\"language/sl/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sl\\n\"\n\"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n\"\n\"%100==4 ? 2 : 3);\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"Uspešno izbrisano %(count)d %(items)s.\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"Ni mogoče izbrisati %(name)s\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"Ste prepričani?\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"Izbriši izbrano: %(verbose_name_plural)s\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"Vse\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"Da\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"Ne\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"Neznano\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"Kadarkoli\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"Danes\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"Zadnjih 7 dni\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"Ta mesec\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"Letos\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\"Vnesite veljavno %(username)s  in geslo za račun osebja. Opomba: obe polji \"\n\"upoštevata velikost črk.\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"Vaša seja je pretekla; prosimo da se ponovno prijavite.\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"Dejanje:\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"čas dejanja\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"id objekta\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"predstavitev objekta\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"zastavica dejanja\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"spremeni sporočilo\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"dnevniški vnos\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"dnevniški vnosi\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"Dodan \\\"%(object)s\\\".\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"Spremenjen \\\"%(object)s\\\" - %(changes)s\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"Izbrisan \\\"%(object)s.\\\"\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"Dnevniški vnos\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"Brez vrednosti\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"Spremenjen %s.\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"in\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Dodal %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Spremenjeno %(list)s za %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Izbrisan %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"Nobeno polje ni bilo spremenjeno.\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" je bil uspešno dodan. Ponovno ga lahko uredite spodaj.\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" je bil uspešno dodan. Spodaj lahko dodate še kak \"\n\"%(name)s.\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" je bil uspešno dodan.\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" je bil uspešno posodobljen. Spodaj ga lahko urejate še \"\n\"dalje.\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" je bil uspešno posodobljen. Spodaj lahko dodate še kak \"\n\"%(name)s.\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" je bil uspešno spremenjen.\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\"Izbrati morate vnose, nad katerimi želite izvesti operacijo. Noben vnos ni \"\n\"bil spremenjen.\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"Brez dejanja.\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"Dodaj %s\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"Objekt %(name)s z glavnim ključem %(key)r ne obstaja.\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"Spremeni %s\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"Napaka v podatkovni bazi\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"%(count)s %(name)s je bil uspešno spremenjen.\"\nmsgstr[1] \"%(count)s %(name)s sta bila uspešno spremenjena.\"\nmsgstr[2] \"%(count)s %(name)s so bili uspešno spremenjeni.\"\nmsgstr[3] \"%(count)s %(name)s je bilo uspešno spremenjenih.\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"%(total_count)s izbran\"\nmsgstr[1] \"%(total_count)s izbrana\"\nmsgstr[2] \"%(total_count)s izbrani\"\nmsgstr[3] \"%(total_count)s izbranih\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"0 od %(cnt)s izbranih\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" je bil uspešno izbrisan.\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"Zgodovina sprememb: %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"Prijavite se\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"Administracija strani\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"Administracija %s\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"Datum:\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"Ura:\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"Poizvedba\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"Dodaj še enega\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"Trenutno:\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"Spremembe:\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"Strani ni mogoče najti\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"Opravičujemo se, a zahtevane strani ni mogoče najti.\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"Domov\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"Napaka na strežniku\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"Napaka na strežniku (500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"Napaka na strežniku <em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\"Prišlo je do nepričakovane napake. Napaka je bila javljena administratorjem \"\n\"spletne strani in naj bi jo v kratkem odpravili. Hvala za potrpljenje.\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"Izvedi izbrano dejanje\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"Pojdi\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"Kliknite tu za izbiro vseh vnosov na vseh straneh\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"Izberi vse %(total_count)s %(module_name)s\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"Počisti izbiro\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"Dobrodošli,\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"Dokumentacija\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"Spremeni geslo\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"Odjava\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"Django administrativni vmesnik\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"Django administracija\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"Dodaj\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"Zgodovina\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"Poglej na strani\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"Prosimo, odpravite sledečo napako.\"\nmsgstr[1] \"Prosimo, odpravite sledeči napaki.\"\nmsgstr[2] \"Prosimo, odpravite sledeče napake.\"\nmsgstr[3] \"Prosimo, odpravite sledeče napake.\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"Dodaj %(name)s\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"Filter\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"Odstrani iz razvrščanja\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"Prioriteta razvrščanja: %(priority_number)s\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"Preklopi razvrščanje\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"Izbriši\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"Izbris %(object_name)s '%(escaped_object)s' bi pomenil izbris povezanih \"\n\"objektov, vendar nimate dovoljenja za izbris naslednjih tipov objektov:\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\"Brisanje %(object_name)s '%(escaped_object)s' bi zahtevalo brisanje \"\n\"naslednjih zaščitenih povezanih objektov:\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\"Ste prepričani, da želite izbrisati %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"Vsi naslednji povezani elementi bodo izbrisani:\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"Ja, prepričan sem\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"Izbriši več objektov\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\"Brisanje naslendjih %(objects_name)s bi imelo za posledico izbris naslednjih \"\n\"povezanih objektov, vendar vaš račun nima pravic za izbris naslednjih tipov \"\n\"objektov:\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\"Brisanje izbranih %(objects_name)s zahteva brisanje naslednjih zaščitenih \"\n\"povezanih objektov:\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\"Ali res želite izbrisati izbrane %(objects_name)s? Vsi naslednji objekti in \"\n\"njihovi povezani vnosi bodo izbrisani:\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \" Po %(filter_title)s \"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"Model v %(name)s aplikaciji\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"Spremeni\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"Nimate dovoljenja za urejanje.\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"Zadnja dejanja\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"Moja dejanja\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"Ni na voljo\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"Neznana vsebina\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"Nekaj je narobe z namestitvijo vaše podatkovne baze. Preverite, da so bile \"\n\"ustvarjene prave tabele v podatkovni bazi in da je dostop do branja baze \"\n\"omogočen pravemu uporabniku.\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"Geslo:\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"Ste pozabili geslo ali uporabniško ime?\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"Datum/čas\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"Uporabnik\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"Dejanje\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\"Ta objekt nima zgodovine sprememb. Verjetno ni bil dodan preko te strani za \"\n\"administracijo.\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"Prikaži vse\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"Shrani\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"Išči\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"%(counter)s zadetkov\"\nmsgstr[1] \"%(counter)s zadetek\"\nmsgstr[2] \"%(counter)s zadetka\"\nmsgstr[3] \"%(counter)s zadetki\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"%(full_result_count)s skupno\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"Shrani kot novo\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"Shrani in dodaj še eno\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"Shrani in nadaljuj z urejanjem\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\"Najprej vpišite uporabniško ime in geslo, nato boste lahko urejali druge \"\n\"lastnosti uporabnika.\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"Vnesite uporabniško ime in geslo.\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"Vpišite novo geslo za uporabnika <strong>%(username)s</strong>.\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"Geslo\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"Geslo (ponovno)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Vpišite enako geslo kot zgoraj, da se izognete tipkarskim napakam.\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"Odstrani\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"Dodaj še en %(verbose_name)s\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"Izbrišem?\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"Hvala, ker ste si danes vzeli nekaj časa za to spletno stran.\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"Ponovna prijava\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"Sprememba gesla\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"Sprememba gesla je uspela\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"Vaše geslo je bilo spremenjeno.\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"Vnesite vaše staro geslo (zaradi varnosti) in nato še dvakrat novo, da se \"\n\"izognete tipkarskim napakam.\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"Staro geslo\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"Novo geslo\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"Spremeni moje geslo\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"Ponastavitev gesla\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"Ponastavitev gesla zaključena\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"Vaše geslo je bilo nastavljeno. Zdaj se lahko prijavite.\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"Potrdite ponastavitev gesla\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"Vpišite novo geslo\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"Vnesite vaše novo geslo dvakrat, da se izognete tipkarskim napakam.\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"Novo geslo:\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"Potrditev gesla:\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"Ponastavitev gesla ni uspela\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\"Povezava za ponastavitev gesla ni bila veljavna, morda je bila že \"\n\"uporabljena. Prosimo zahtevajte novo ponastavitev gesla.\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"Ponastavitev gesla je uspela\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\"Na e-poštni naslov, ki ste ga navedli, smo vam poslali navodila za \"\n\"ponastavitev gesla. Morali bi ga prejeti v kratkem.\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\"To e-pošto ste prejeli, ker je ste zahtevali ponastavitev gesla za vaš \"\n\"uporabniški račun na %(site_name)s.\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"Prosimo pojdite na sledečo stran in izberite novo geslo:\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"Vaše uporabniško ime (za vsak primer):\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"Hvala, ker uporabljate našo stran!\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"Ekipa strani %(site_name)s\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\"Ste pozabili geslo? Vnesite vaš e-poštni naslov in poslali vam bomo navodila \"\n\"za ponastavitev gesla.\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"E-poštni naslov:\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"Ponastavi moje geslo\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"Vsi datumi\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"(None)\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"Izberite %s\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"Izberite %s, ki ga želite spremeniti\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/sl/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <zejn@kiberpipa.org>, 2012.\n# zejn <zejn@kiberpipa.org>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-10-31 19:07+0000\\n\"\n\"Last-Translator: mateju <>\\n\"\n\"Language-Team: Slovenian (http://www.transifex.com/projects/p/django/\"\n\"language/sl/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sl\\n\"\n\"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n\"\n\"%100==4 ? 2 : 3);\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"Možne %s\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"To je seznam možnih %s. Izbrane lahko izberete z izbiro v spodnjem okvirju \"\n\"in s klikom na puščico \\\"Izberi\\\" med okvirjema.\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"Z vpisom niza v to polje, zožite izbor %s.\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"Filtriraj\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"Izberi vse\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"Kliknite za izbor vseh %s hkrati.\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"Izberi\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"Odstrani\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"Izbran %s\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"To je seznam možnih %s. Odvečne lahko odstranite z izbiro v okvirju in \"\n\"klikom na puščico \\\"Odstrani\\\" med okvirjema.\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"Odstrani vse\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"Kliknite za odstranitev vseh %s hkrati.\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"%(sel)s od %(cnt)s izbranih\"\nmsgstr[1] \"%(sel)s od %(cnt)s izbran\"\nmsgstr[2] \"%(sel)s od %(cnt)s izbrana\"\nmsgstr[3] \"%(sel)s od %(cnt)s izbrani\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\"Na nekaterih poljih, kjer je omogočeno urejanje, so neshranjene spremembe. V \"\n\"primeru nadaljevanja bodo neshranjene spremembe trajno izgubljene.\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\"Izbrali ste dejanje, vendar niste shranili sprememb na posameznih poljih. \"\n\"Kliknite na 'V redu', da boste shranili. Dejanje boste morali ponovno \"\n\"izvesti.\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\"Izbrali ste dejanje, vendar niste naredili nobenih sprememb na posameznih \"\n\"poljih. Verjetno iščete gumb Pojdi namesto Shrani.\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"\"\n\"Januar Februar Marec April Maj Junij Julij Avgust September Oktober November \"\n\"December\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"N P T S Č P S\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"Prikaži\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"Skrij\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"Takoj\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"Ura\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"Izbor časa\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"Polnoč\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"Ob 6h\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"Opoldne\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"Prekliči\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"Danes\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"Koledar\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"Včeraj\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"Jutri\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/sq/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Besnik <besnik@programeshqip.org>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:52+0000\\n\"\n\"Last-Translator: Besnik <besnik@programeshqip.org>\\n\"\n\"Language-Team: Albanian (http://www.transifex.com/projects/p/django/language/\"\n\"sq/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sq\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"U fshinë me sukses %(count)d %(items)s.\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"S'mund të fshijë %(name)s\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"Jeni i sigurt?\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"Fshiji %(verbose_name_plural)s e përzgjdhur\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"Krejt\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"Po\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"Jo\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"E panjohur\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"Çfarëdo date\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"Sot\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"7 ditët e shkuara\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"Këtë muaj\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"Këtë vit\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"Ju lutem, hyni sërish, sepse sesioni juaj ka skaduar.\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"Veprim:\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"kohë veprimi\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"id objekti\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"shenjë veprimi\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"mesazh ndryshimi\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"zë regjistrimi\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"zëra regjistrimi\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"U shtua \\\"%(object)s\\\".\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"U ndryshua \\\"%(object)s\\\" - %(changes)s\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"U fshi \\\"%(object)s.\\\"\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"Asnjë\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"Ndryshoi %s.\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \" dhe \"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"U shtua %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"U ndryshua %(list)s për %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"U fshi %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"Nuk u ndryshuan fusha.\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" u shtua me sukses. Mund ta përpunoni sërish më poshtë.\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" u shtua me sukses. Mund të shtoni një tjetër %(name)s  \"\n\"më poshtë.\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" u shtua me sukses.\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" u shtua me sukses. Mund ta përpunoni sërish më poshtë.\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" u ndryshua me sukses. Mund të shtoni një tjetër \"\n\"%(name)s më poshtë.\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" u ndryshua me sukses.\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\"Duhen përzgjedhur objekte që të kryhen veprime mbi ta. Nuk u ndryshua ndonjë \"\n\"objekt.\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"Pa përzgjedhje veprimi.\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"Shtoni %s\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"Objekti %(name)s me kyç parësor %(key)r nuk ekziston.\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"Ndrysho %s\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"Gabimi baze të dhënash\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"%(count)s %(name)s u ndryshua me sukses.\"\nmsgstr[1] \"%(count)s %(name)s u ndryshuan me sukses.\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"%(total_count)s të përzgjedhur\"\nmsgstr[1] \"Krejt %(total_count)s të përzgjedhurat\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"0 nga %(cnt)s të përzgjedhur\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" u fshi me sukses.\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"Ndryshoni historikun: %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"Hyni\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"Administrim site-i\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"Administrim i %s\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"Datë:\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"Kohë:\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"Kërkim\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"Shtoni Një Tjetër\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"Tani:\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"Ndryshim:\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"Nuk u gjet faqe\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"Na ndjeni, por faqja e kërkuar nuk gjendet dot.\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"Hyrje\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"Gabim shërbyesi\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"Gabim shërbyesi (500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"Gabim Shërbyesi <em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\"Pati një gabim. Iu është njoftuar përgjegjësve të site-it përmes email-it \"\n\"dhe do të duhej të ndreqej shpejt. Faleminderit për durimin.\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"Xhironi veprimin e përzgjedhur\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"Shko tek\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"Klikoni këtu që të përzgjidhni objektet nëpër krejt faqet\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"Përzgjidhni krejt %(total_count)s %(module_name)s\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"Pastroje përzgjedhjen\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"Mirë se vini,\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"Dokumentim\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"Ndryshoni fjalëkalimin\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"Dilni\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"Përgjegjësi i site-it Django\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"Administrim i Django-s\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"Shtoni\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"Historik\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"Shiheni në site\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"Ju lutem, ndreqni gabimin e mëposhtëm.\"\nmsgstr[1] \"Ju lutem, ndreqini gabimet e mëposhtme.\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"Shto %(name)s\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"Filtër\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"Hiqe prej renditjeje\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"Përparësi renditjesh: %(priority_number)s\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"Këmbe renditjen\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"Fshije\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"Fshirja e %(object_name)s '%(escaped_object)s' do të shpinte në fshirjen e \"\n\"objekteve të lidhur me të, por llogaria juaj nuk ka leje për fshirje të \"\n\"objekteve të llojeve të mëposhtëm:\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\"Fshirja e %(object_name)s '%(escaped_object)s' do të kërkonte fshirjen e \"\n\"objekteve vijues, të mbrojtur, të lidhur me të:\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\"Jeni i sigurt se doni të fshihet %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"Krejt objektet vijues të lidhur me të do të fshihen:\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"Po, jam i sigurt\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"Fshini disa objekte njëherësh\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\"Fshirja e %(objects_name)s të përzgjedhur do të shpjerë në fshirjen e \"\n\"objekteve të lidhur me të, por llogaria juaj nuk ka leje të fshijë llojet \"\n\"vijuese të objekteve:\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\"Fshirja e %(objects_name)s të përzgjedhur do të kërkonte fshirjen e \"\n\"objekteve vijues, të mbrojtur, të lidhur me të:\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\"Jeni i sigurt se doni të fshihen e %(objects_name)s përzgjedhur? Krejt \"\n\"objektet vijues dhe gjëra të lidhura me ta do të fshihen:\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \"Nga %(filter_title)s \"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"Modele te zbatimi %(name)s\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"Ndryshoje\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"Nuk keni leje për të përpunuar ndonjë gjë.\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"Veprime Së Fundi\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"Veprimet e Mia\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"Asnjë i passhëm\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"Lëndë e panjohur\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"Ka diçka që nuk shkon me instalimin e bazës suaj të të dhënave. Sigurohuni \"\n\"që janë krijuar tabelat e duhura të bazës së të dhënave, dhe që baza e të \"\n\"dhënave është e lexueshme nga përdoruesi i duhur.\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"Fjalëkalim:\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"Harruat fjalëkalimin ose emrin tuaj të përdoruesit?\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"Datë/kohë\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"Përdorues\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"Veprim\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\"Ky objekt nuk ka historik ndryshimesh. Ndoshta nuk qe shtuar përmes këtij \"\n\"site-i administrimi.\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"Shfaqi krejt\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"Ruaje\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"Kërko\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"%(counter)s përfundim\"\nmsgstr[1] \"%(counter)s përfundime\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"%(full_result_count)s gjithsej\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"Ruaje si të ri\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"Ruajeni dhe shtoni një tjetër\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"Ruajeni dhe vazhdoni përpunimin\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\"Së pari, jepni një emër përdoruesi dhe fjalëkalim. Mandej, do të jeni në \"\n\"gjendje të përpunoni më tepër mundësi përdoruesi.\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"Jepni emër përdoruesi dhe fjalëkalim.\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"\"\n\"Jepni një fjalëkalim të ri për përdoruesin <strong>%(username)s</strong>.\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"Fjalëkalim\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"Fjalëkalim (sërish)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Jepni, për verifikim, të njëjtin fjalëkalim si më sipër.\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"Hiqe\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"Shtoni një tjetër %(verbose_name)s\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"Të fshihet?\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"Faleminderit që shpenzoni pak kohë të çmuar me site-in Web sot.\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"Hyni sërish\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"Ndryshim fjalëkalimi\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"Ndryshim i sukseshëm fjalëkalimi\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"Fjalëkalimi juaj u ndryshua.\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"Ju lutem, jepni fjalëkalimin tuaj të vjetër, për hir të sigurisë, dhe mandej \"\n\"jepni dy herë fjalëkalimin tuaj të ri, që kështu të mund të verifikojmë se e \"\n\"shtypët saktë.\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"Fjalëkalim i vjetër\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"Fjalëkalim i ri\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"Ndrysho fjalëkalimin tim\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"Ricaktim fjalëkalimi\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"Ricaktim fjalëkalimi i plotësuar\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"\"\n\"Fjakalimi juaj u caktua. Mund të vazhdoni më tej dhe të bëni hyrjen tani.\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"Ripohim ricaktimi fjalëkalimi\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"Jepni fjalëkalim të ri\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"\"\n\"Ju lutem, jepeni fjalëkalimin tuaj dy herë, që kështu të mund të verifikojmë \"\n\"që e shtypët saktë.\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"Fjalëkalim i ri:\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"Ripohoni fjalëkalimin:\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"Fjalëkalimi nuk u ricaktua me sukses\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\"Lidhja për ricaktimin e fjalëkalimit qe e pavlefshme, ndoshta ngaqë është \"\n\"përdorur tashmë një herë. Ju lutem, kërkoni një ricaktim të ri fjalëkalimi.\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"Ndryshim i sukseshëm fjalëkalimi\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\"Ju dërguam me email udhëzimet për rregullimin e fjalëkalimit tuaj, te adresa \"\n\"e-mail që keni dhënë. Do të duhej t'ju vinte pas pak.\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\"Këtë email po e merrni ngaqë kërkuat ricaktim fjalëkalimi për llogarinë tuaj \"\n\"si përdorues te %(site_name)s.\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"Ju lutem, shkoni te faqja vijuese dhe zgjidhni një fjalëkalim të ri:\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"Emri juaj i përdoruesit, në rast se e keni harruar:\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"Faleminderit që përdorni site-in tonë!\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"Ekipi i %(site_name)s\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\"Harruat fjalëkalimin tuaj? Jepni më poshtë adresën tuaj email, dhe do t'ju \"\n\"dërgojmë udhëzimet për të caktuar një të ri.\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"Adresë email:\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"Ricakto fjalëkalimin tim\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"Krejt datat\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"(Asnjë)\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"Përzgjidhni %s\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"Përzgjidhni %s për ta ndryshuar\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/sq/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Besnik <besnik@programeshqip.org>, 2011.\n#   <besnik@programeshqip.org>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-12-02 11:31+0000\\n\"\n\"Last-Translator: Besnik <besnik@programeshqip.org>\\n\"\n\"Language-Team: Albanian (http://www.transifex.com/projects/p/django/language/\"\n\"sq/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sq\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"I mundshëm %s\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Kjo është lista e %s të passhme. Mund të zgjidhni disa duke i përzgjedhur te \"\n\"kutiza më poshtë e mandej duke klikuar mbi shigjetën \\\"Zgjidhe\\\" mes dy \"\n\"kutizave.\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"Shkruani brenda kutizës që të filtrohet lista e %s të passhme.\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"Filtro\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"Zgjidheni krejt\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"Klikoni që të zgjidhen krejt %s njëherësh.\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"Zgjidhni\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"Hiq\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"U zgjodh %s\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Kjo është lista e %s të passhme. Mund të hiqni disa duke i përzgjedhur te \"\n\"kutiza më poshtë e mandej duke klikuar mbi shigjetën \\\"Hiqe\\\" mes dy \"\n\"kutizave.\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"Hiqi krejt\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"Klikoni që të hiqen krejt %s e zgjedhura njëherësh.\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"U përzgjodh %(sel)s nga %(cnt)s\"\nmsgstr[1] \"U përzgjodhën %(sel)s nga %(cnt)s\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\"Keni ndryshime të paruajtura te fusha individuale të ndryshueshme. Nëse \"\n\"kryeni një veprim, ndryshimet e paruajtura do të humbin.\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\"Keni përzgjedhur një veprim, por nuk keni ruajtur ende ndryshimet që bëtë te \"\n\"fusha individuale. Ju lutem, klikoni OK që të bëhet ruajtja. Do t'ju duhet \"\n\"ta ribëni veprimin.\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\".Keni përzgjedhur një veprim, dhe nuk keni bërë ndonjë ndryshim te fusha \"\n\"individuale. Ndoshta po kërkonit për butonin Shko, në vend se të butonit \"\n\"Ruaje.\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"\"\n\"Janar Shkurt Mars Prill Maj Qershor Korrik Gusht Shtator Tetor Nëntor Dhjetor\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"D H M M E P S\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"Shfaqe\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"Fshihe\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"Tani\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"Orë\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"Zgjidhni një kohë\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"Mesnatë\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"6 a.m.\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"Mesditë\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"Anuloje\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"Sot\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"Kalendar\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"Dje\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"Nesër\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/sr/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Janos Guljas <janos@resenje.org>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:52+0000\\n\"\n\"Last-Translator: Ramiro Morales <cramm0@gmail.com>\\n\"\n\"Language-Team: Serbian (http://www.transifex.com/projects/p/django/language/\"\n\"sr/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sr\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"Успешно обрисано: %(count)d %(items)s.\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"Несуспело брисање %(name)s\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"Да ли сте сигурни?\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"Бриши означене објекте класе %(verbose_name_plural)s\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"Сви\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"Да\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"Не\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"Непознато\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"Сви датуми\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"Данас\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"Последњих 7 дана\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"Овај месец\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"Ова година\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"Пријавите се поново пошто је ваша сесија истекла.\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"Радња:\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"време радње\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"id објекта\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"опис објекта\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"ознака радње\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"опис измене\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"запис у логовима\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"записи у логовима\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"Додат објекат класе „%(object)s“.\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"Промењен објекат класе „%(object)s“ - %(changes)s\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"Уклоњен објекат класе „%(object)s“.\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"Објекат уноса лога\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"Ништа\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"Измењена поља %s\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"и\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Сачуван објекат „%(object)s“ класе %(name)s.\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Измењена поља %(list)s објеката „%(object)s“ класе %(name)s .\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Обрисан објекат „%(object)s“ класе %(name)s.\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"Без измена у пољима.\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"\"\n\"Објекат „%(obj)s“ класе %(name)s додат је успешно. Доле можете унети додатне \"\n\"измене.\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"Објекат „%(obj)s“ класе %(name)s сачуван је успешно.\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"Објекат „%(obj)s“ класе %(name)s измењен је успешно.\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\"Потребно је изабрати објекте да би се извршила акција над њима. Ниједан \"\n\"објекат није промењен.\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"Није изабрана ниједна акција.\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"Додај објекат класе %s\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"Објекат класе %(name)s са примарним кључем %(key)r не постоји.\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"Измени објекат класе %s\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"Грешка у бази података\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"Успешно промењен %(count)s %(name)s.\"\nmsgstr[1] \"Успешно промењена %(count)s %(name)s.\"\nmsgstr[2] \"Успешно промењених %(count)s %(name)s.\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"%(total_count)s изабран\"\nmsgstr[1] \"Сва %(total_count)s изабрана\"\nmsgstr[2] \"Свих %(total_count)s изабраних\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"0 од %(cnt)s изабрано\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"Објекат „%(obj)s“ класе %(name)s успешно је обрисан.\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"Историјат измена: %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"Пријава\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"Администрација система\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"Администрација %s\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"Датум:\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"Време:\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"Претражи\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"Додај још један\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"Страница није пронађена\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"Жао нам је, тражена страница није пронађена.\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"Почетна\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"Грешка на серверу\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"Грешка на серверу (500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"Грешка на серверу <em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"Покрени одабрану радњу\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"Почни\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"Изабери све објекте на овој страници.\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"Изабери све %(module_name)s од %(total_count)s укупно.\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"Поништи избор\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"Добродошли,\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"Документација\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"Промена лозинке\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"Одјава\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"Django администрација сајта\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"Django администрација\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"Додај\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"Историјат\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"Преглед на сајту\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"Исправите наведену грешку.\"\nmsgstr[1] \"Исправите наведене грешке.\"\nmsgstr[2] \"Исправите наведене грешке.\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"Додај објекат класе %(name)s\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"Филтер\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"Избаци из сортирања\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"Приоритет сортирања: %(priority_number)s\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"Укључи/искључи сортирање\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"Обриши\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"Уклањање %(object_name)s „%(escaped_object)s“ повлачи уклањање свих објеката \"\n\"који су повезани са овим објектом, али ваш налог нема дозволе за брисање \"\n\"следећих типова објеката:\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\"Да би избрисали изабран %(object_name)s „%(escaped_object)s“ потребно је \"\n\"брисати и следеће заштићене повезане објекте:\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\"Да сигурни да желите да обришете %(object_name)s „%(escaped_object)s“? \"\n\"Следећи објекти који су у вези са овим објектом ће такође бити обрисани:\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"Да, сигуран сам\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"Брисање више објеката\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\"Да би избрисали изабране %(objects_name)s потребно је брисати и заштићене \"\n\"повезане објекте, међутим ваш налог нема дозволе за брисање следећих типова \"\n\"објеката:\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\"Да би избрисали изабране %(objects_name)s потребно је брисати и следеће \"\n\"заштићене повезане објекте:\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\"Да ли сте сигурни да желите да избришете изабране %(objects_name)s? Сви \"\n\"следећи објекти и објекти са њима повезани ће бити избрисани:\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \" %(filter_title)s \"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"Измени\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"Немате дозволе да уносите било какве измене.\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"Последње радње\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"Моје радње\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"Нема података\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"Непознат садржај\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"Нешто није уреду са вашом базом података. Проверите да ли постоје \"\n\"одговарајуће табеле и да ли одговарајући корисник има приступ бази.\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"Лозинка:\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"Заборавили сте лозинку или корисничко име?\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"Датум/време\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"Корисник\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"Радња\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\"Овај објекат нема забележен историјат измена. Вероватно није додат кроз овај \"\n\"сајт за администрацију.\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"Прикажи све\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"Сачувај\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"Претрага\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"%(counter)s резултат\"\nmsgstr[1] \"%(counter)s резултата\"\nmsgstr[2] \"%(counter)s резултата\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"укупно %(full_result_count)s\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"Сачувај као нови\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"Сачувај и додај следећи\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"Сачувај и настави са изменама\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\"Прво унесите корисничко име и лозинку. Потом ћете моћи да мењате још \"\n\"корисничких подешавања.\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"Унесите корисничко име и лозинку\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"Унесите нову лозинку за корисника <strong>%(username)s</strong>.\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"Лозинка\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"Лозинка (поновите)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Ради провере тачности поново унесите лозинку коју сте унели горе.\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"Обриши\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"Додај још један објекат класе %(verbose_name)s.\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"Брисање?\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"Хвала што сте данас провели време на овом сајту.\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"Поновна пријава\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"Измена лозинке\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"Успешна измена лозинке\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"Ваша лозинка је измењена.\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"Из безбедносних разлога прво унесите своју стару лозинку, а нову затим \"\n\"унесите два пута да бисмо могли да проверимо да ли сте је правилно унели.\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"Стара лозинка\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"Нова лозинка\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"Измени моју лозинку\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"Ресетовање лозинке\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"Ресетовање лозинке успешно\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"Ваша лозинка је постављена.  Можете се пријавити.\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"Потврда ресетовања лозинке\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"Унесите нову лозинку\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"\"\n\"Унесите нову лозинку два пута како бисмо могли да проверимо да ли сте је \"\n\"правилно унели.\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"Нова лозинка:\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"Потврда лозинке:\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"Ресетовање лозинке неуспешно\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\"Линк за ресетовање лозинке није важећи, вероватно зато што је већ \"\n\"искоришћен.  Поново затражите ресетовање лозинке.\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"Ресетовање лозинке успешно.\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"Идите на следећу страницу и поставите нову лозинку.\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"Уколико сте заборавили, ваше корисничко име:\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"Хвала што користите наш сајт!\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"Екипа сајта %(site_name)s\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"Ресетуј моју лозинку\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"Сви датуми\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"(Ништа)\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"Одабери објекат класе %s\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"Одабери објекат класе %s за измену\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/sr/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Janos Guljas <janos@resenje.org>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-03-08 10:42+0000\\n\"\n\"Last-Translator: Janos Guljas <janos@resenje.org>\\n\"\n\"Language-Team: Serbian (http://www.transifex.com/projects/p/django/language/\"\n\"sr/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sr\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"Доступни %s\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Ово је листа доступних „%s“. Можете изабрати елементе тако што ћете их \"\n\"изабрати у листи и кликнути на „Изабери“.\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"Филтрирајте листу доступних елемената „%s“.\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"Филтер\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"Изабери све\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"Изаберите све „%s“ одједном.\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"Изабери\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"Уклони\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"Изабрано „%s“\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Ово је листа изабраних „%s“. Можете уклонити елементе тако што ћете их \"\n\"изабрати у листи и кликнути на „Уклони“.\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"Уклони све\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"Уклоните све изабране „%s“ одједном.\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"%(sel)s од %(cnt)s изабран\"\nmsgstr[1] \"%(sel)s од %(cnt)s изабрана\"\nmsgstr[2] \"%(sel)s од %(cnt)s изабраних\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\"Имате несачиване измене. Ако покренете акцију, измене ће бити изгубљене.\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"Изабрали сте акцију али нисте сачували промене поља.\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"Изабрали сте акцију али нисте изменили ни једно поље.\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"\"\n\"јануар фебруар март април мај јун јул август септембар октобар новембар \"\n\"децембар\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"Н П У С Ч П С\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"Покажи\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"Сакриј\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"Тренутно време\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"Сат\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"Одабир времена\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"Поноћ\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"18ч\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"Подне\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"Поништи\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"Данас\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"Календар\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"Јуче\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"Сутра\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/sr_Latn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Janos Guljas <janos@resenje.org>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:52+0000\\n\"\n\"Last-Translator: Ramiro Morales <cramm0@gmail.com>\\n\"\n\"Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/django/\"\n\"language/sr@latin/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sr@latin\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"Uspešno obrisano: %(count)d %(items)s.\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"Nesuspelo brisanje %(name)s\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"Da li ste sigurni?\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"Briši označene objekte klase %(verbose_name_plural)s\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"Svi\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"Da\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"Ne\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"Nepoznato\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"Svi datumi\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"Danas\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"Poslednjih 7 dana\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"Ovaj mesec\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"Ova godina\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"Prijavite se ponovo pošto je vaša sesija istekla.\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"Radnja:\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"vreme radnje\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"id objekta\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"opis objekta\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"oznaka radnje\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"opis izmene\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"zapis u logovima\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"zapisi u logovima\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"Dodat objekat klase „%(object)s“.\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"Promenjen objekat klase „%(object)s“ - %(changes)s\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"Uklonjen objekat klase „%(object)s“.\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"Objekat unosa loga\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"Ništa\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"Izmenjena polja %s\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"i\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Sačuvan objekat „%(object)s“ klase %(name)s.\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Izmenjena polja %(list)s objekata „%(object)s“ klase %(name)s .\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Obrisan objekat „%(object)s“ klase %(name)s.\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"Bez izmena u poljima.\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"\"\n\"Objekat „%(obj)s“ klase %(name)s dodat je uspešno. Dole možete uneti dodatne \"\n\"izmene.\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"Objekat „%(obj)s“ klase %(name)s sačuvan je uspešno.\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"Objekat „%(obj)s“ klase %(name)s izmenjen je uspešno.\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\"Potrebno je izabrati objekte da bi se izvršila akcija nad njima. Nijedan \"\n\"objekat nije promenjen.\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"Nije izabrana nijedna akcija.\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"Dodaj objekat klase %s\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"Objekat klase %(name)s sa primarnim ključem %(key)r ne postoji.\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"Izmeni objekat klase %s\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"Greška u bazi podataka\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"Uspešno promenjen %(count)s %(name)s.\"\nmsgstr[1] \"Uspešno promenjena %(count)s %(name)s.\"\nmsgstr[2] \"Uspešno promenjenih %(count)s %(name)s.\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"%(total_count)s izabran\"\nmsgstr[1] \"Sva %(total_count)s izabrana\"\nmsgstr[2] \"Svih %(total_count)s izabranih\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"0 od %(cnt)s izabrano\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"Objekat „%(obj)s“ klase %(name)s uspešno je obrisan.\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"Istorijat izmena: %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"Prijava\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"Administracija sistema\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"Administracija %s\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"Datum:\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"Vreme:\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"Pretraži\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"Dodaj još jedan\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"Stranica nije pronađena\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"Žao nam je, tražena stranica nije pronađena.\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"Početna\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"Greška na serveru\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"Greška na serveru (500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"Greška na serveru <em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"Pokreni odabranu radnju\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"Počni\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"Izaberi sve objekte na ovoj stranici.\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"Izaberi sve %(module_name)s od %(total_count)s ukupno.\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"Poništi izbor\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"Dobrodošli,\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"Dokumentacija\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"Promena lozinke\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"Odjava\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"Django administracija sajta\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"Django administracija\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"Dodaj\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"Istorijat\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"Pregled na sajtu\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"Ispravite navedenu grešku.\"\nmsgstr[1] \"Ispravite navedene greške.\"\nmsgstr[2] \"Ispravite navedene greške.\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"Dodaj objekat klase %(name)s\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"Filter\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"Izbaci iz sortiranja\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"Prioritet sortiranja: %(priority_number)s\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"Uključi/isključi sortiranje\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"Obriši\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"Uklanjanje %(object_name)s „%(escaped_object)s“ povlači uklanjanje svih \"\n\"objekata koji su povezani sa ovim objektom, ali vaš nalog nema dozvole za \"\n\"brisanje sledećih tipova objekata:\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\"Da bi izbrisali izabran %(object_name)s „%(escaped_object)s“ potrebno je \"\n\"brisati i sledeće zaštićene povezane objekte:\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\"Da sigurni da želite da obrišete %(object_name)s „%(escaped_object)s“? \"\n\"Sledeći objekti koji su u vezi sa ovim objektom će takođe biti obrisani:\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"Da, siguran sam\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"Brisanje više objekata\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\"Da bi izbrisali izabrane %(objects_name)s potrebno je brisati i zaštićene \"\n\"povezane objekte, međutim vaš nalog nema dozvole za brisanje sledećih tipova \"\n\"objekata:\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\"Da bi izbrisali izabrane %(objects_name)s potrebno je brisati i sledeće \"\n\"zaštićene povezane objekte:\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\"Da li ste sigurni da želite da izbrišete izabrane %(objects_name)s? Svi \"\n\"sledeći objekti i objekti sa njima povezani će biti izbrisani:\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \" %(filter_title)s \"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"Izmeni\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"Nemate dozvole da unosite bilo kakve izmene.\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"Poslednje radnje\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"Moje radnje\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"Nema podataka\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"Nepoznat sadržaj\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"Nešto nije uredu sa vašom bazom podataka. Proverite da li postoje \"\n\"odgovarajuće tabele i da li odgovarajući korisnik ima pristup bazi.\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"Lozinka:\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"Zaboravili ste lozinku ili korisničko ime?\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"Datum/vreme\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"Korisnik\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"Radnja\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\"Ovaj objekat nema zabeležen istorijat izmena. Verovatno nije dodat kroz ovaj \"\n\"sajt za administraciju.\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"Prikaži sve\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"Sačuvaj\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"Pretraga\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"%(counter)s rezultat\"\nmsgstr[1] \"%(counter)s rezultata\"\nmsgstr[2] \"%(counter)s rezultata\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"ukupno %(full_result_count)s\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"Sačuvaj kao novi\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"Sačuvaj i dodaj sledeći\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"Sačuvaj i nastavi sa izmenama\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\"Prvo unesite korisničko ime i lozinku. Potom ćete moći da menjate još \"\n\"korisničkih podešavanja.\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"Unesite korisničko ime i lozinku\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"Unesite novu lozinku za korisnika <strong>%(username)s</strong>.\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"Lozinka\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"Lozinka (ponovite)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Radi provere tačnosti ponovo unesite lozinku koju ste uneli gore.\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"Obriši\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"Dodaj još jedan objekat klase %(verbose_name)s.\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"Brisanje?\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"Hvala što ste danas proveli vreme na ovom sajtu.\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"Ponovna prijava\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"Izmena lozinke\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"Uspešna izmena lozinke\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"Vaša lozinka je izmenjena.\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"Iz bezbednosnih razloga prvo unesite svoju staru lozinku, a novu zatim \"\n\"unesite dva puta da bismo mogli da proverimo da li ste je pravilno uneli.\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"Stara lozinka\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"Nova lozinka\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"Izmeni moju lozinku\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"Resetovanje lozinke\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"Resetovanje lozinke uspešno\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"Vaša lozinka je postavljena.  Možete se prijaviti.\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"Potvrda resetovanja lozinke\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"Unesite novu lozinku\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"\"\n\"Unesite novu lozinku dva puta kako bismo mogli da proverimo da li ste je \"\n\"pravilno uneli.\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"Nova lozinka:\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"Potvrda lozinke:\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"Resetovanje lozinke neuspešno\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\"Link za resetovanje lozinke nije važeći, verovatno zato što je već \"\n\"iskorišćen.  Ponovo zatražite resetovanje lozinke.\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"Resetovanje lozinke uspešno.\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"Idite na sledeću stranicu i postavite novu lozinku.\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"Ukoliko ste zaboravili, vaše korisničko ime:\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"Hvala što koristite naš sajt!\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"Ekipa sajta %(site_name)s\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"Resetuj moju lozinku\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"Svi datumi\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"(Ništa)\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"Odaberi objekat klase %s\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"Odaberi objekat klase %s za izmenu\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/sr_Latn/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Janos Guljas <janos@resenje.org>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-03-08 10:42+0000\\n\"\n\"Last-Translator: Janos Guljas <janos@resenje.org>\\n\"\n\"Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/django/\"\n\"language/sr@latin/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sr@latin\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"Dostupni %s\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Ovo je lista dostupnih „%s“. Možete izabrati elemente tako što ćete ih \"\n\"izabrati u listi i kliknuti na „Izaberi“.\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"Filtrirajte listu dostupnih elemenata „%s“.\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"Filter\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"Izaberi sve\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"Izaberite sve „%s“ odjednom.\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"Izaberi\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"Ukloni\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"Izabrano „%s“\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Ovo je lista izabranih „%s“. Možete ukloniti elemente tako što ćete ih \"\n\"izabrati u listi i kliknuti na „Ukloni“.\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"Ukloni sve\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"Uklonite sve izabrane „%s“ odjednom.\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"%(sel)s od %(cnt)s izabran\"\nmsgstr[1] \"%(sel)s od %(cnt)s izabrana\"\nmsgstr[2] \"%(sel)s od %(cnt)s izabranih\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\"Imate nesačivane izmene. Ako pokrenete akciju, izmene će biti izgubljene.\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"Izabrali ste akciju ali niste sačuvali promene polja.\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"Izabrali ste akciju ali niste izmenili ni jedno polje.\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"\"\n\"januar februar mart april maj jun jul avgust septembar oktobar novembar \"\n\"decembar\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"N P U S Č P S\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"Pokaži\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"Sakrij\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"Trenutno vreme\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"Sat\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"Odabir vremena\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"Ponoć\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"18č\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"Podne\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"Poništi\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"Danas\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"Kalendar\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"Juče\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"Sutra\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/sv/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Alex Nordlund <deep.alexander@gmail.com>, 2012.\n# Andreas Pelme <andreas@pelme.se>, 2011-2013.\n# cvitan <tome@cvitan.com>, 2011.\n#   <cybjit@gmail.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# sorl <mikko@aino.se>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-06 08:53+0000\\n\"\n\"Last-Translator: Andreas Pelme <andreas@pelme.se>\\n\"\n\"Language-Team: Swedish (http://www.transifex.com/projects/p/django/language/\"\n\"sv/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sv\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"Tog bort %(count)d %(items)s\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"Kan inte ta bort %(name)s\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"Är du säker?\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"Tag bort markerade %(verbose_name_plural)s\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"Alla\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"Ja\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"Nej\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"Okänt\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"Alla datum\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"Idag\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"Senaste 7 dagarna\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"Denna månad\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"Detta år\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\"Ange %(username)s och lösenord för ett personalkonto. Notera att båda fälten \"\n\"är skiftlägeskänsliga.\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"Var god logga in igen, eftersom din session har förfallit.\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"Åtgärd:\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"händelsetid\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"objektets id\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"objektets beskrivning\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"händelseflagga\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"ändra meddelande\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"loggpost\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"loggposter\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"Lade till \\\"%(object)s\\\".\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"Ändrade \\\"%(object)s\\\" - %(changes)s\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"Tog bort \\\"%(object)s.\\\"\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"LogEntry-Objekt\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"Inget\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"Ändrade %s.\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"och\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Lade till %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Ändrade %(list)s på %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Tog bort %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"Inga fält ändrade.\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" lades till. Du kan redigera objektet igen nedanför.\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" lades till. Du kan lägga till ytterligare %(name)s \"\n\"nedan.\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" lades till.\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" ändrades. Du kan ändra det igen nedan.\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" ändrades.\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\"Poster måste väljas för att genomföra åtgärder. Inga poster har ändrats.\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"Inga åtgärder valda.\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"Lägg till %s\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"%(name)s-objekt med primärnyckel %(key)r finns inte.\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"Ändra %s\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"Databasfel\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"%(count)s %(name)s ändrades.\"\nmsgstr[1] \"%(count)s %(name)s ändrades.\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"%(total_count)s vald\"\nmsgstr[1] \"Alla %(total_count)s valda\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"0 av %(cnt)s valda\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" togs bort.\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"Ändringshistorik: %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"Logga in\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"Webbplatsadministration\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"Administration av %s\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"Datum:\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"Tid:\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"Uppslag\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"Lägg till ytterligare\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"Nuvarande:\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"Ändra:\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"Sidan kunde inte hittas\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"Vi beklagar men den begärda sidan hittades inte.\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"Hem\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"Serverfel\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"Serverfel (500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"Serverfel <em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\"Det har uppstått ett fel. Det har rapporterats till \"\n\"webbplatsadministratörerna via e-post och bör bli rättat omgående. Tack för \"\n\"ditt tålamod.\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"Kör markerade operationer\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"Utför\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"Klicka här för att välja alla objekt från alla sidor\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"Välj alla %(total_count)s %(module_name)s\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"Rensa urval\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"Välkommen,\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"Dokumentation\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"Ändra lösenord\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"Logga ut\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"Django webbplatsadministration\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"Django-administration\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"Lägg till\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"Historik\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"Visa på webbplats\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"Rätta till felet nedan.\"\nmsgstr[1] \"Rätta till felen nedan.\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"Lägg till %(name)s\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"Filtrera\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"Ta bort från sortering\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"Sorteringsprioritet: %(priority_number)s\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"Ändra sorteringsordning\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"Radera\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"Att ta bort %(object_name)s '%(escaped_object)s' skulle innebära att \"\n\"relaterade objekt togs bort, men ditt konto har inte rättigheter att ta bort \"\n\"följande objekttyper:\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\"Borttagning av %(object_name)s '%(escaped_object)s'  kräver borttagning av \"\n\"följande skyddade relaterade objekt:\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\"Är du säker på att du vill ta bort %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"Följande relaterade objekt kommer att tas bort:\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"Ja, jag är säker\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"Tog bort %(name)s \\\"%(object)s\\\".\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\"Borttagning av valda %(objects_name)s skulle resultera i borttagning av \"\n\"relaterade objekt, men ditt konto har inte behörighet att ta bort följande \"\n\"typer av objekt:\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\"Borttagning av valda %(objects_name)s skulle kräva borttagning av följande \"\n\"skyddade objekt:\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\"Är du säker på att du vill ta bort valda %(objects_name)s? Alla följande \"\n\"objekt samt relaterade objekt kommer att tas bort: \"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \" På %(filter_title)s \"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"Modeller i applikationen %(name)s\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"Ändra\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"Du har inte rättigheter att redigera något.\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"Senaste Händelser\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"Mina händelser\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"Inga tillgängliga\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"Okänt innehåll\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"Någonting är fel med din databasinstallation. Se till att de rätta \"\n\"databastabellerna har skapats och att databasen är läsbar av rätt användare.\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"Lösenord:\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"Har du glömt lösenordet eller användarnamnet?\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"Datum tid\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"Användare\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"Händelse\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\"Detta objekt har ingen ändringshistorik. Det lades antagligen inte till via \"\n\"denna administrationssida.\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"Visa alla\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"Spara\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"Sök\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"%(counter)s resultat\"\nmsgstr[1] \"%(counter)s resultat\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"%(full_result_count)s totalt\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"Spara som ny\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"Spara och lägg till ny\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"Spara och fortsätt redigera\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\"Ange först ett användarnamn och ett lösenord. Efter det kommer du att få \"\n\"fler användaralternativ.\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"Mata in användarnamn och lösenord.\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"Ange nytt lösenord för användare <strong>%(username)s</strong>.\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"Lösenord\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"Lösenord (igen)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Fyll i samma lösenord som ovan för verifiering.\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"Tag bort\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"Lägg till ytterligare %(verbose_name)s\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"Radera?\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"Tack för att du spenderade lite kvalitetstid med webbplatsen idag.\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"Logga in igen\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"Ändra lösenord\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"Lösenordet ändrades\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"Ditt lösenord har ändrats.\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"Var god fyll i ditt gamla lösenord för säkerhets skull och skriv sedan in \"\n\"ditt nya lösenord två gånger så vi kan kontrollera att du skrev det rätt.\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"Gammalt lösenord\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"Nytt lösenord\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"Ändra mitt lösenord\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"Nollställ lösenord\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"Nollställning av lösenord klar\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"Ditt lösenord har ändrats.  Du kan nu logga in.\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"Bekräftelse av lösenordsnollställning\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"Fyll i lösenord\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"\"\n\"Var god fyll i ditt nya lösenord två gånger så vi kan kontrollera att du \"\n\"skrev det rätt.\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"Nytt lösenord:\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"Bekräfta lösenord:\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"Lösenordsnollställning misslyckad\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\"Länken för lösenordsnollställning var felaktig, möjligen därför att den \"\n\"redan använts.  Var god skicka en ny nollställningsförfrågan.\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"Lösenordsnollställning lyckades\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\"Vi har skickat ett e-postmeddelande med instruktioner för att ändra ditt \"\n\"lösenord till den e-postaddress du angivit. Det bör anlända inom kort.\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\"Du får detta e-postmeddelande för att du har begärt återställning av ditt \"\n\"lösenord av ditt konto på %(site_name)s.\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"Var god gå till följande sida och välj ett nytt lösenord:\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"Ditt användarnamn (i fall du skulle ha glömt det):\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"Tack för att du använder vår webbplats!\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"%(site_name)s-teamet\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\"Glömt ditt lösenord? Fyll i din e-postadress nedan så skickar vi ett e-\"\n\"postmeddelande med instruktioner för hur du ställer in ett nytt.\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"E-postaddress:\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"Nollställ mitt lösenord\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"Alla datum\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"(Ingen)\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"Välj %s\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"Välj %s att ändra\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/sv/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Andreas Pelme <andreas@pelme.se>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Mattias Jansson <mattias@colourandcode.se>, 2011.\n# Samuel Linde <samuel@linde.im>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-03-08 10:42+0000\\n\"\n\"Last-Translator: Andreas Pelme <andreas@pelme.se>\\n\"\n\"Language-Team: Swedish (http://www.transifex.com/projects/p/django/language/\"\n\"sv/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sv\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"Tillgängliga %s\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Detta är listan med tillgängliga %s. Du kan välja ut vissa genom att markera \"\n\"dem i rutan nedan och sedan klicka på \\\"Välj\\\"-knapparna mellan de två \"\n\"rutorna.\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"Skriv i denna ruta för att filtrera listan av tillgängliga %s.\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"Filter\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"Välj alla\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"Klicka för att välja alla %s på en gång.\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"Välj\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"Ta bort\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"Välj %s\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Detta är listan med utvalda %s. Du kan ta bort vissa genom att markera dem i \"\n\"rutan nedan och sedan klicka på \\\"Ta bort\\\"-pilen mellan de två rutorna.\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"Ta bort alla\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"Klicka för att ta bort alla valda %s på en gång.\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"%(sel)s av %(cnt)s markerade\"\nmsgstr[1] \"%(sel)s av %(cnt)s markerade\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\"Du har ändringar som inte sparats i enskilda redigerbara fält. Om du kör en \"\n\"operation kommer de ändringar som inte sparats att gå förlorade.\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\"Du har markerat en operation, men du har inte sparat sparat dina ändringar \"\n\"till enskilda fält ännu. Var vänlig klicka OK för att spara. Du kommer att \"\n\"behöva köra operationen på nytt.\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\"Du har markerat en operation och du har inte gjort några ändringar i \"\n\"enskilda fält. Du letar antagligen efter Utför-knappen snarare än Spara.\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"\"\n\"Januari Februari Mars April Maj Juni Juli Augusti September Oktober November \"\n\"December\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"S M T O T F L\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"Visa\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"Göm\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"Nu\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"Klocka\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"Välj en tidpunkt\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"Midnatt\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"06:00\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"Middag\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"Avbryt\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"I dag\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"Kalender\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"I går\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"I morgon\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/sw/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:52+0000\\n\"\n\"Last-Translator: Ramiro Morales <cramm0@gmail.com>\\n\"\n\"Language-Team: Swahili (http://www.transifex.com/projects/p/django/language/\"\n\"sw/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sw\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"Umefanikiwa kufuta %(items)s %(count)d.\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"Huwezi kufuta %(name)s\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"Una uhakika?\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"Futa %(verbose_name_plural)s teule\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"yote\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"Ndiyo\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"Hapana\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"Haijulikani\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"Tarehe yoyote\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"Leo\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"Siku 7 zilizopita\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"mwezi huu\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"Mwaka huu\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"Tafadhali ingia tena, kwani kipindi chako cha matumizi kimekwisha.\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"Tendo\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"muda wa tendo\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"Kitambulisho cha kitu\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"`repr` ya kitu\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"bendera ya tendo\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"badilisha ujumbe\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"ingizo kwenye kumbukumbu\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"maingizo kwenye kumbukumbu\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"Kuongezwa kwa \\\"%(object)s\\\".\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"Kubadilishwa kwa \\\"%(object)s\\\" - %(changes)s\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"Kufutwa kwa \\\"%(object)s\\\".\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"Kitu cha Ingizo la Kumbukumbu\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"Hakuna\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"Mabadiliko ya %s.\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"na\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Ingizo la \\\"%(object)s\\\" %(name)s \"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Mabadiliko %(list)s kwa \\\"%(object)s\\\\v %(name)s.\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Kumefutwa \\\"%(object)s\\\" %(name)s.\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"Hakuna uga uliobadilishwa.\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"\"\n\"Ingizo la \\\"%(obj)s\\\" %(name)s limefanyika kwa mafanikio. Unaweza \"\n\"kuhariritena hapo chini.\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"Ingizo la \\\"%(obj)s\\\" %(name)s limefanyika kwa mafanikio.\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"Mabadiliko ya \\\"%(obj)s\\\" %(name)s yamefanikiwa.\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\"Nilazima kuchagua vitu ili kufanyia kitu fulani. Hakuna kitu \"\n\"kilichochaguliwa.\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"Hakuna tendo lililochaguliwa\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"Ongeza %s\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"Hakuna %(name)s yenye `primary key` %(key)r.\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"Badilisha %s\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"Hitilafu katika hifadhidata\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"mabadiliko ya %(name)s %(count)s yamefanikiwa.\"\nmsgstr[1] \"mabadiliko ya %(name)s %(count)s yamefanikiwa.\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"%(total_count)s kuchaguliwa\"\nmsgstr[1] \"%(total_count)s (kila kitu) kuchaguliwa\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"Vilivyo chaguliwa ni 0 kati ya %(cnt)s\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"Ufutaji wa \\\"%(obj)s\\\" %(name)s umefanikiwa.\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"Badilisha historia: %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"Ingia\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"Utawala wa tovuti\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"utawala %s\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"Tarehe\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"Saa\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"`Lookup`\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"Ongeza\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"Ukurasa haujapatikana\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"Samahani, ukurasa uliohitajika haukupatikana.\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"Sebule\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"Hitilafu ya seva\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"Hitilafu ya seva (500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"Hitilafu ya seva <em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"Fanya tendo lililochaguliwa.\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"Nenda\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"Bofya hapa kuchagua viumbile katika kurasa zote\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"Chagua kila %(module_name)s, (%(total_count)s). \"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"Safisha chaguo\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"Karibu\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"Nyaraka\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"Badilisha nenosiri\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"Toka\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"Utawala wa tovuti ya django\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"Utawala wa Django\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"Ongeza\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"Historia\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"Ona kwenye tovuti\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"Tafadhali sahihisha kosa lifuatalo\"\nmsgstr[1] \"Tafadhali sahihisha makosa yafuatayo \"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"Ongeza %(name)s\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"Chuja\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"Ondoa katika upangaji\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"Kipaumbele katika mpangilio: %(priority_number)s\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"Geuza mpangilio\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"Futa\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"Kufutwa kwa '%(escaped_object)s' %(object_name)s  kutasababisha kufutwa kwa \"\n\"vitu vinavyohuisana, lakini akaunti yako haina ruhusa ya kufuta vitu vya \"\n\"aina zifuatazo:\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\"Kufuta '%(escaped_object)s' %(object_name)s  kutahitaji kufuta vitu \"\n\"vifuatavyo ambavyo vinavyohuisana na vimelindwa:\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\"Una uhakika kuwa unataka kufuta \\\"%(escaped_object)s\\\" %(object_name)s ? \"\n\"Vitu vyote vinavyohuisana kati ya vifuatavyo vitafutwa:\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"Ndiyo, Nina uhakika\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"Futa viumbile mbalimbali\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\"Kufutwa kwa %(objects_name)s chaguliwa kutasababisha kufutwa kwa \"\n\"vituvinavyohusiana, lakini akaunti yako haina ruhusa ya kufuta vitu vya \"\n\"vifuatavyo:\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\"Kufutwa kwa %(objects_name)s kutahitaji kufutwa kwa vitu vifuatavyo vyenye \"\n\"uhusiano na vilivyolindwa:\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\"Una uhakika kuwa unataka kufuta %(objects_name)s chaguliwa ? Vitu vyote kati \"\n\"ya vifuatavyo vinavyohusiana vitafutwa:\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \" Kwa %(filter_title)s\"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"Badilisha\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"Huna ruhusa ya kuhariri chochote\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"Matendo ya hivi karibuni\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"Matendo yangu\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"Hakuna kilichopatikana\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"Maudhui hayajulikani\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"Kuna tatizo limetokea katika usanikishaji wako wa hifadhidata. Hakikisha \"\n\"kuwa majedwali sahihi ya hifadhidata yameundwa, na hakikisha hifadhidata \"\n\"inaweza kusomwana mtumiaji sahihi.\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"nenosiri\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"Umesahau jina na nenosiri lako?\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"Tarehe/saa\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"Mtumiaji\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"Tendo\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\"Kiumbile hiki hakina historia ya kubadilika. Inawezekana hakikuwekwa kupitia \"\n\"hii tovuti ya utawala.\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"Onesha yotee\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"Hifadhi\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"Tafuta\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"tokeo %(counter)s\"\nmsgstr[1] \"matokeo %(counter)s\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"jumla %(full_result_count)s\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"Hifadhi kama mpya\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"Hifadhi na ongeza\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"Hifadhi na endelea kuhariri\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\"Kwanza, ingiza jina lamtumiaji na nenosiri. Kisha, utaweza kuhariri zaidi \"\n\"machaguo ya mtumiaji.\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"Ingiza jina la mtumiaji na nenosiri.\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"ingiza nenosiri la mtumiaji <strong>%(username)s</strong>.\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"Nenosiri\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"Nenosiri (tena)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Ingiza nenosiri linalofanana na la juu, kwa uthibitisho.\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"Ondoa\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"Ongeza %(verbose_name)s\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"Futa?\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"Ahsante kwa kutumia muda wako katika Tovuti yetu leo. \"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"ingia tena\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"Badilisha nenosiri\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"Ubadilishaji wa nenosiri umefanikiwa\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"Nenosiri lako lilibadilishwa\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"Tafadhali ingiza nenosiri lako la zamani, kwa ajili ya usalama, kisha ingiza \"\n\"nenosiri jipya mara mbili ili tuweze kuthibitisha kuwa umelichapisha kwa \"\n\"usahihi.\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"Nenosiri la zamani\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"Nenosiri jipya\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"Badilisha nenosiri langu\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"Kuseti upya nenosiri\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"Kuseti upya nenosiri kumekamilika\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"Nenosiri lako limesetiwa. Unaweza kuendelea na kuingia sasa.\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"Uthibitisho wa kuseti upya nenosiri\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"Ingiza nenosiri\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"\"\n\"Tafadhali ingiza nenosiri mara mbili ili tuweze kuthibitisha kuwa \"\n\"umelichapisha kwa usahihi.\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"Nenosiri jipya\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"Thibitisha nenosiri\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"Kuseti upya nenosiri hakujafanikiwa\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\"Kiungo cha kuseti upya nenosiri ni batili, inawezekana ni kwa sababu kiungo \"\n\"hicho tayari kimetumika. tafadhali omba upya kuseti nenosiri\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"Kuseti upya nenosiri kumefaninikiwa\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"Tafadhali nenda ukurasa ufuatao na uchague nenosiri jipya:\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"Jina lako la mtumiaji, ikiwa umesahau:\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"Ahsante kwa kutumia tovui yetu!\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"timu ya %(site_name)s\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"Seti upya nenosiri langu\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"Tarehe zote\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"(Hakuna)\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"Chagua %s\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"Chaguo %s kwa mabadilisho\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/sw/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-07-06 17:25+0000\\n\"\n\"Last-Translator: machaku <bmachaku@gmail.com>\\n\"\n\"Language-Team: Swahili (http://www.transifex.com/projects/p/django/language/\"\n\"sw/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sw\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"vilivyomo: %s\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"Chapisha katika kisanduku hiki ili kuchuja orodha ya %s iliyopo.\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"Chuja\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"Chagua kila kitu\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"Bofya kuchagua kila %s kwa pamoja.\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"Chagua\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"Ondoa\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"Chaguo la %s\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Hii ni orodha ya %s uliyochagua. Unaweza kuondoa baadhi vitu kwa kuvichagua \"\n\"katika kisanduku hapo chini kisha kubofya mshale wa \\\"Ondoa\\\" kati ya \"\n\"visanduku viwili.\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"Ondoa yote\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"Bofya ili kuondoa %s chaguliwa kwa pamoja.\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"umechagua %(sel)s kati ya %(cnt)s\"\nmsgstr[1] \"umechagua %(sel)s kati ya %(cnt)s\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\"Umeacha kuhifadhi mabadiliko katika uga zinazoharirika. Ikiwa utafanya tendo \"\n\"lingine, mabadiliko ambayo hayajahifadhiwa yatapotea.\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\"Umechagua tendo, lakini bado hujahifadhi mabadiliko yako katika uga husika. \"\n\"Tafadali bofya Sawa ukitaka kuhifadhi. Utahitajika kufanya upya kitendo \"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\"Umechagua tendo, lakini bado hujahifadhi mabadiliko yako katika uga husika.  \"\n\"Inawezekana unatafuta kitufe cha Nenda badala ya Hifadhi\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"\"\n\"Januari Februari Machi Aprili Mei Juni Julai Agosti Septemba Oktoba Novemba \"\n\"Desemba\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"J2 J3 J4 J5 IJ JM JP\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"Onesha\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"Ficha\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"Sasa\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"Saa\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"Chagua wakati\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"Usiku wa manane\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"Saa 12 alfajiri\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"Adhuhuri\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"Ghairi\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"Leo\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"Kalenda\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"Jana\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"Kesho\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/ta/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:52+0000\\n\"\n\"Last-Translator: Ramiro Morales <cramm0@gmail.com>\\n\"\n\"Language-Team: Tamil (http://www.transifex.com/projects/p/django/language/\"\n\"ta/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ta\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"உறுதியாக சொல்கிறீர்களா?\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"அனைத்தும்\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"ஆம்\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"இல்லை\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"தெரியாத\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"எந்த தேதியும்\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"இன்று\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"கடந்த 7 நாட்களில்\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"இந்த மாதம்\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"இந்த வருடம்\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"செயல் நேரம்\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"பொருள் அடையாளம்\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"பொருள் உருவகித்தம்\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"செயர்குறி\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"செய்தியை மாற்று\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"புகுபதிவு உள்ளீடு\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"புகுபதிவு உள்ளீடுகள்\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"%s மாற்றபட்டுள்ளது.\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"மற்றும்\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"எந்த புலமும் மாறவில்லை.\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" வெற்றிகரமாக சேர்க்கப்பட்டுள்ளது. நீங்கள் கீழே தொகுக்க முடியும்.\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" வெற்றிகரமாகச் சேர்க்கப்பட்டது.\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" வெற்றிகரமாக மாற்றப்பட்டது.\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"%s யை சேர்க்க\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"%s யை மாற்று\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"தகவல்சேமிப்பு  பிழை\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" வெற்றிகரமாக அழிக்கப்பட்டுள்ளது.\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"வரலாற்றை மாற்று: %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"உள்ளே போ\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"இணைய மேலான்மை\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"தேதி:\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"நேரம்:\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"பக்கத்தைக் காணவில்லை\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"நீங்கள் விரும்பிய பக்கத்தை காண இயலவில்லை,அதற்காக நாங்கள் வருந்துகிறோம்.\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"வீடு\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"சேவகன் பிழை\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"சேவையகம் தவறு(500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"சேவையகம் பிழை<em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"செல்\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"நல்வரவு,\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"ஆவனமாக்கம்\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"கடவுச்சொல்லை மாற்று\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"வெளியேறு\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"டிஜாங்ஙோ தள நிர்வாகி\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"டிஜாங்ஙோ நிர்வாகம் \"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"சேர்க்க\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"வரலாறு\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"தளத்தில் பார்\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"கீழே உள்ள தவறுயைத் திருத்துக\"\nmsgstr[1] \"கீழே உள்ள தவறுகளைத் திருத்துக\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"%(name)s சேர்க்க\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"வடிகட்டி\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"நீக்குக\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"நீக்கும் '%(escaped_object)s' ஆனது %(object_name)s தொடர்புடைய மற்றவற்றையும் நீக்கும். \"\n\"ஆனால்  அதை நீக்குவதற்குரிய  உரிமை  உங்களுக்கு  இல்லை\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\"நீங்கள் இந்த \\\"%(escaped_object)s\\\" %(object_name)s நீக்குவதில் நிச்சயமா?தொடர்புடைய \"\n\"மற்றவையும் நீக்கப்படும். \"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"ஆம், எனக்கு உறுதி\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \"%(filter_title)s ஆல்\"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"மாற்றுக\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"உங்களுக்கு மாற்றுவதற்குரிய உரிமையில்லை\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"தற்போதைய செயல்கள்\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"எனது செயல்கள்\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"எதுவும் கிடைக்கவில்லை\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"உங்களுடைய தகவல்சேமிப்பகத்தை  நிறுவுவதில் சில தவறுகள் உள்ளது. அதற்கு இணையான \"\n\"தகவல்சேமிப்பு அட்டவணையைதயாரிக்கவும். மேலும் பயனர் படிக்கும்  படியான தகவல்சேமிப்பகத்தை \"\n\"உருவாக்கவும்.\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"கடவுச்சொல்:\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"தேதி/நேரம் \"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"பயனர்\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"செயல்\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\"இந்த பொருள் மாற்று வரலாற்றில் இல்லைஒரு வேளை நிர்வாகத்தளத்தின் மூலம் சேர்க்கப்படாமலிருக்கலாம்\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"எல்லாவற்றையும் காட்டு\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"சேமிக்க\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"%(full_result_count)s மொத்தம்\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"புதியதாக சேமி\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"சேமித்து இன்னுமொன்றைச் சேர்\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"சேமித்து மாற்றத்தை தொடருக\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\"முதலில்,பயனர்ப்பெயர் மற்றும் கடவுச்சொல்லை உள்ளிடவும்.அதன் பிறகு தான் நீங்கள் உங்கள் பெயரின் \"\n\"விவரங்களை திருத்த முடியும்\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"கடவுச்சொல்\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"கடவுச்சொல்(மறுபடியும்)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"மேலே அதே கடவுச்சொல்லை உள்ளிடவும், சரிபார்ப்பதற்காக .\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"அழிக்க\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"வலைத்தளத்தில் உங்களது பொன்னான நேரத்தை செலவழித்தமைக்கு மிகுந்த நன்றி\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"மீண்டும் உள்ளே பதிவு செய்யவும்\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"கடவுச்சொல் மாற்று\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"வெற்றிகரமாக கடவுச்சொல் மாற்றபட்டது\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"உங்களுடைய கடவுச்சொல் மாற்றபட்டது\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"பாதுகாப்பு காரணங்களுக்காக , முதலில் உங்களது பழைய கடவுச்சொல்லை உள்ளிடுக. அதன் பிறகு \"\n\"புதிய கடவுச்சொல்லை இரு முறை உள்ளிடுக.  இது உங்களது உள்ளிடுதலை சரிபார்க்க உதவும். \"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"கடவுச் சொல்லை மாற்றவும்\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"கடவுச்சொல்லை மாற்றியமை\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"புதிய கடவுச்சொல்:\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"கடவுச்சொலின் மாற்றத்தை உறுதிப்படுத்து:\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"கடவுச்சொல் மாற்றியமைத்தல் வெற்றி\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"உங்களது பயனாளர் பெயர், நீங்கள் மறந்திருந்தால்:\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"எங்களது வலைத்தளத்தை பயன் படுத்தியதற்கு மிகுந்த நன்றி\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"இந்த %(site_name)s -இன்  குழு\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"எனது கடவுச்சொல்லை மாற்றியமை\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"அனைத்து தேதியும்\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"%s யை தேர்ந்தெடு\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"%s யை மாற்ற தேர்ந்தெடு\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/ta/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-03-08 10:42+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Tamil (http://www.transifex.com/projects/p/django/language/\"\n\"ta/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ta\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"%s இருக்கிறதா \"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"வடிகட்டி\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"எல்லாவற்றையும் தேர்ந்த்தெடுக்க\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"அழிக்க\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"%s தேர்ந்த்தெடுக்கப்பட்ட\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"ஜனவரி பிப்ரவரி மார்ச் ஏப்ரல் மே ஜூன் ஜூலை ஆகஸ்டு செப்டம்பர் அக்டோபர் நவம்பர் டிசம்பர்\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"ஞா தி செ பு வி வெ ச\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"இப்பொழுது \"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"கடிகாரம் \"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"ஒரு நேரத்தை தேர்ந்த்தெடுக்க  \"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"நடு இரவு \"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"காலை 6 மணி  \"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"மதியம் \"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"வேண்டாம் \"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"இன்று \"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"நாள்காட்டி  \"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"நேற்று \"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"நாளை\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/te/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Translators:\n# bhaskar teja yerneni <prudhviy@gmail.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Veeven  <veeven@gmail.com>, 2011.\n# ప్రవీణ్ ఇళ్ళ <mail2ipn@gmail.com>, 2011,2013.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-03-01 20:10+0000\\n\"\n\"Last-Translator: ప్రవీణ్ ఇళ్ళ <mail2ipn@gmail.com>\\n\"\n\"Language-Team: Telugu (http://www.transifex.com/projects/p/django/language/\"\n\"te/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: te\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"%(count)d %(items)s జయప్రదముగా తీసేవేయబడినది.\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"%(name)s తొలగించుట వీలుకాదు\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"మీరు కచ్చితంగా ఉన్నారా?\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"ఎంచుకోన్న %(verbose_name_plural)s తీసివేయుము \"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"అన్నీ\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"అవును\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"కాదు\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"తెలియనది\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"ఏ రోజైన\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"ఈ రోజు\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"గత  7 రోజుల గా\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"ఈ నెల\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"ఈ  సంవత్సరం\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"దయచేసి మళ్ళీ  లాగ్ ఇన్ అవ్వండి ఎందుకంటే మీ భాగము  ముగిసింది .\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"చర్య:\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"పని సమయము \"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"వస్తువు\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"వస్తువు\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"పని ఫ్లాగ్\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"సందేశము ని మార్చంది\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"లాగ్ ఎంట్రీ\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"లాగ్ ఎంట్రీలు\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"వొకటీ లేదు\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \" %s మార్చబడిండి\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"మరియు\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"%(name)s \\\"%(object)s\\\" జతచేయబడినది.\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"%(name)s \\\"%(object)s\\\" కొరకు %(list)s మార్చబడినది.\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"%(name)s \\\"%(object)s\\\" తొలగిబడినది\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"క్షేత్రములు  ఏమి మార్చబడలేదు\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" జయప్రదంగా కలపబడ్డడి. మీరు మళ్ళీ దీనినీ  క్రింద మార్చవచ్చు\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\"జయప్రదంగా కలపబడ్డడి\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" జయప్రదంగా మార్చబడిండి\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\"అంశములపయి తదుపరి చర్య తీసుకోనటకు వాటిని ఎంపిక చేసుకోవలెను. ప్రస్తుతం ఎటువంటి అంశములు \"\n\"మార్చబడలేదు.\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"మీరు ఎటువంటి చర్య తీసుకొనలేదు \"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"%sని జత చేయండి \"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"%(key)r ప్రధాన కీ గా వున్న  %(name)s అంశం ఏమి లేదు.\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"%sని మార్చుము\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"దత్తాంశస్థానము పొరబాటు \"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"%(count)s %(name)s జయప్రదముగా మార్చబడినవి.\"\nmsgstr[1] \"%(count)s %(name)s జయప్రదముగా మార్చబడినవి.\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"%(total_count)s ఎంపికయినది.\"\nmsgstr[1] \"అన్ని %(total_count)s ఎంపికయినవి.\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"0 of %(cnt)s ఎంపికయినవి.\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" జయప్రదంగా తీసివేయబడ్డడి\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"చరిత్రం మార్చు: %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"ప్రవేశించండి\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"సైట్ నిర్వాహన\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"%s నిర్వాహన\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"తారీఖు:\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"సమయం:\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"అంశ శోధన.\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"మరివొక కలుపు\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"పుట  దొరకలేదు\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"క్షమించండి మీరు కోరిన పుట దొరకలేడు\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"నివాసము\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"సర్వర్ పొరబాటు\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"సర్వర్ పొరబాటు (500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"సర్వర్ పొరబాటు <em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"ఎంచుకున్న చర్యను నడుపు\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"వెళ్లు\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"ఎంపికను తుడిచివేయి\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"సుస్వాగతం\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"పత్రికీకరణ\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"పాస్ వర్డ్ మార్చుకోండి\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"లాగ్ ఔట్\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"డ్జాంగొ యొక్క నిర్వాహనదారులు\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"డ్జాంగొ నిర్వాహన\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"చేర్చు\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"చరిత్ర\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"సైట్ లో చూడండి\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"క్రింద ఉన్న తప్పు  సరిదిద్దుకోండి\"\nmsgstr[1] \"క్రింద ఉన్న తప్పులు  సరిదిద్దుకోండి\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"%(name)s జత చేయు\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"వడపోత\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"తొలగించు\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"అవును \"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \"\"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"మార్చు\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"మీకు ఏది మార్చటానికి అధికారము లేదు\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"ఇటీవలి చర్యలు\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"నా చర్యలు\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"ఏమి  దొరకలేదు\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"తెలియని విషయం\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"సంకేతపదం:\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"మీ సంకేతపదం లేదా వాడుకరిపేరును మర్చిపోయారా?\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"తేదీ/సమయం\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"వాడుకరి\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"చర్య\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"అన్నీ చూపి\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"దాచు\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"వెతుకు\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"%(counter)s ఫలితం\"\nmsgstr[1] \"%(counter)s ఫలితాలు\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"%(full_result_count)s మొత్తము\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"కొత్త దాని లా దాచు\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"దాచి కొత్త దానిని కలపండి\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"దాచి  మార్చుటా ఉందండి\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"ఒక వాడుకరిపేరు మరియు సంకేతపదాన్ని ప్రవేశపెట్టండి.\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"సంకేతపదం\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"సంకేతపదం (మళ్ళీ)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"పైన ఇచ్చిన సంకేతపదాన్నే మళ్ళీ ఇవ్వండి, సరిచూత కోసం.\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"తొలగించు\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"తొలగించాలా?\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"మళ్ళీ ప్రవేశించండి\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"అనుమతి పదం మార్పు\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"అనుమతి పదం  మార్పు జయప్రదమైండి \"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"మీ    అనుమతి పదం మార్చబడిండి\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"దయచేసి  రక్షన కోసము, మీ పాత  అనుమతి పదం ఇవ్వండి  ,  కొత్త అనుమతి పదం రెండు సార్లు ఇవ్వండి , \"\n\"ఎం దుకంటే మీరు తప్పు ఇస్తే  సరిచేయటానికి \"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"పాత  సంకేతపదం\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"కొత్త సంకేతపదం\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"నా సంకేతపదాన్ని మార్చు\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"అనుమతి పదం తిరిగి అమర్చు\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"అనుమతి పదం తిరిగి మార్చు సంపూర్ణమైనది\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"మీ అనుమతి పదం మర్చుబడినది. మీరు ఇప్పుదు లాగ్ ఇన్ అవ్వచ్చు.\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"అనుమతి పదం తిరిగి మార్చు ఖాయం చెయండి\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"కొత్త అనుమతి పదం ప్రవేశపెటండి\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"\"\n\"దయచేసి  రక్షన కోసము, మీ పాత  అనుమతి పదం ఇవ్వండి  ,  కొత్త  అనుమతి పదం  రెండు సార్లు ఇవ్వండి , \"\n\"ఎం దుకంటే మీరు తప్పు ఇస్తే  సరిచేయటానికి \"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"కొత్త సంకేతపదం:\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"సంకేతపదాన్ని నిర్ధారించండి:\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"సంకేతపదపు మార్పు విఫలమైంది\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"సంకేతపదపు మార్పు విజయవంతం\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"మీ వాడుకరిపేరు, ఒక వేళ మీరు మర్చిపోయివుంటే:\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"మా సైటుని ఉపయోగించుకున్నందుకు ధన్యవాదములు!\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"%(site_name)s జట్టు\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"అనుమతిపదం తిరిగి అమర్చు\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"అన్నీ  తేదీలు\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"%s ని ఎన్నుకోండి\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"%s ని మార్చటానికి  ఎన్నుకోండి\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/te/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <prudhviy@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-03-08 10:42+0000\\n\"\n\"Last-Translator: bhaskar teja yerneni <prudhviy@gmail.com>\\n\"\n\"Language-Team: Telugu (http://www.transifex.com/projects/p/django/language/\"\n\"te/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: te\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"ఆందుబాతులోఉన్న %s \"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"వడపోత\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"అన్నీ ఎన్నుకోండి\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"తీసివేయండి\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"ఎన్నుకున్న %s\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"ఙాన్వరి ఫిబ్రవరి మార్చి ఎప్రిల్ మే ఙూను ఙులై ఆగష్టు సెప్టెంబర్ అక్టోబర్ నవంబర్ డిసెంబర్\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"ఆ సో మం భు గు శు శ\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"చూపించుము\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"దాచు\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"ఇప్పుడు\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"గడియారము\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"ఒక సమయము ఎన్నుకోండి\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"ఆర్ధరాత్రి\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"6 a.m\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"మధ్యాహ్నము\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"రద్దు చేయు\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"ఈనాడు\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"కాలెండర్\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"నిన్న\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"రేపు\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/th/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Kowit Charoenratchatabhan <kowito@gmail.com>, 2011-2013.\n# Piti Ongmongkolkul <piti118@gmail.com>, 2012.\n# Suteepat Damrongyingsupab <monkeycrew_topza@hotmail.com>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-03-04 22:30+0000\\n\"\n\"Last-Translator: Kowit Charoenratchatabhan <kowit.s.c@gmail.com>\\n\"\n\"Language-Team: Thai (http://www.transifex.com/projects/p/django/language/\"\n\"th/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: th\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"%(count)d %(items)s ถูกลบเรียบร้อยแล้ว\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"ไม่สามารถลบ %(name)s\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"แน่ใจหรือ\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"ลบ %(verbose_name_plural)s ที่เลือก\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"ทั้งหมด\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"ใช่\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"ไม่ใช่\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"ไม่รู้\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"วันไหนก็ได้\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"วันนี้\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"สัปดาห์ที่แล้ว\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"เดือนนี้\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"ปีนี้\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"กรุณาใส่  %(username)s และรหัสผ่านให้ถูกต้อง มีการแยกแยะตัวพิมพ์ใหญ่-เล็ก\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"กรุณาลงชื่อเข้าใช้อีกครั้ง, เนื่องจากคุณไม่ได้ใช้งานนานเกินไป\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"คำสั่ง :\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"เวลาลงมือ\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"อ็อบเจ็กต์ไอดี\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"object repr\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"action flag\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"เปลี่ยนข้อความ\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"log entry\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"log entries\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"\\\"%(object)s\\\" ถูกเพิ่ม\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"\\\"%(object)s\\\" ถูกเปลี่ยน - %(changes)s\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"\\\"%(object)s\\\" ถูกลบ\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"อ็อบเจ็กต์ LogEntry\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"ไม่มี\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"%s เปลี่ยนแล้ว\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"และ\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"เพิ่ม %(name)s \\\"%(object)s\\\" แล้ว\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"เปลี่ยน %(list)s สำหรับ %(name)s \\\"%(object)s\\\" แล้ว\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"ลบ %(name)s \\\"%(object)s\\\" แล้ว\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"ไม่มีฟิลด์ใดถูกเปลี่ยน\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"เพิ่ม %(name)s \\\"%(obj)s\\\" เรียบร้อยแล้ว แก้ไขได้อีกที่ด้านล่าง\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"เพิ่ม %(name)s \\\"%(obj)s\\\" เรียบร้อยแล้ว เพิ่ม  %(name)s ได้อีกที่ด้านล่าง\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"เพิ่ม %(name)s \\\"%(obj)s\\\" เรียบร้อยแล้ว\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"เปลี่ยนแปลง %(name)s \\\"%(obj)s\\\" เรียบร้อยแล้ว แก้ไขได้อีกที่ด้านล่าง\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"เปลี่ยนแปลง %(name)s \\\"%(obj)s\\\" เรียบร้อยแล้ว เพิ่ม %(name)s ได้อีกที่ด้านล่าง\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"เปลี่ยนแปลง %(name)s \\\"%(obj)s\\\" เรียบร้อยแล้ว\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\"ไม่มีรายการใดถูกเปลี่ยน\\n\"\n\"รายการจะต้องถูกเลือกก่อนเพื่อที่จะทำตามคำสั่งได้\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"ไม่มีคำสั่งที่ถูกเลือก\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"เพิ่ม %s\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"Primary key %(key)r ของอ็อบเจ็กต์ %(name)s ไม่มีอยู่\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"เปลี่ยน %s\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"เกิดความผิดพลาดที่ฐานข้อมูล\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"%(name)s จำนวน %(count)s  อันได้ถูกเปลี่ยนแปลงเรียบร้อยแล้ว.\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"%(total_count)s ได้ถูกเลือก\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"เลือก 0 จาก %(cnt)s\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"ลบ %(name)s \\\"%(obj)s\\\" เรียบร้อยแล้ว\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"เปลี่ยนแปลงประวัติ: %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"เข้าสู่ระบบ\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"การจัดการไซต์\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"%s การจัดการ\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"วันที่ :\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"เวลา :\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"ดูที่\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"เพิ่มอีก\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"ปัจจุบัน:\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"เปลี่ยนเป็น:\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"ไม่พบหน้านี้\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"เสียใจด้วย ไม่พบหน้าที่ต้องการ\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"หน้าหลัก\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"เซิร์ฟเวอร์ขัดข้อง\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"เซิร์ฟเวอร์ขัดข้อง (500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"เซิร์ฟเวอร์ขัดข้อง <em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\"เกิดเหตุขัดข้องขี้น ทางเราได้รายงานไปยังผู้ดูแลระบบแล้ว และจะดำเนินการแก้ไขอย่างเร่งด่วน \"\n\"ขอบคุณสำหรับการรายงานความผิดพลาด\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"รันคำสั่งที่ถูกเลือก\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"ไป\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"คลิกที่นี่เพื่อเลือกอ็อบเจ็กต์จากหน้าทั้งหมด\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"เลือกทั้งหมด %(total_count)s %(module_name)s\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"เคลียร์ตัวเลือก\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"ยินดีต้อนรับ,\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"เอกสารประกอบ\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"เปลี่ยนรหัสผ่าน\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"ออกจากระบบ\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"ผู้ดูแลระบบ Django\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"การจัดการ Django\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"เพิ่ม\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"ประวัติ\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"ดูที่หน้าเว็บ\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"โปรดแก้ไขข้อผิดพลาดด้านล่าง\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"เพิ่ม %(name)s\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"ตัวกรอง\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"เอาออกจาก sorting\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"ลำดับการ sorting: %(priority_number)s\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"เปิด/ปิด sorting\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"ลบ\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"กำลังดำเนินการลบ %(object_name)s '%(escaped_object)s'และจะแสดงผลการลบ \"\n\"แต่บัญชีของคุณไม่สามารถทำการลบข้อมูลชนิดนี้ได้\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\"การลบ %(object_name)s '%(escaped_object)s' จำเป็นจะต้องลบอ็อบเจ็กต์ที่เกี่ยวข้องต่อไปนี้:\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\"คุณแน่ใจหรือที่จะลบ %(object_name)s \\\"%(escaped_object)s\\\"?\"\n\"ข้อมูลที่เกี่ยวข้องทั้งหมดจะถูกลบไปด้วย:\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"ใช่, ฉันแน่ใจ\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"ลบหลายอ็อบเจ็กต์\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\"การลบ %(objects_name)s ที่เลือก จะทำให้อ็อบเจ็กต์ที่เกี่ยวข้องถูกลบไปด้วย \"\n\"แต่บัญชีของคุณไม่มีสิทธิ์ที่จะลบอ็อบเจ็กต์ชนิดนี้\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"การลบ %(objects_name)s ที่ถูกเลือก จำเป็นจะต้องลบอ็อบเจ็กต์ที่เกี่ยวข้องต่อไปนี้:\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\"คุณแน่ใจหรือว่า ต้องการลบ %(objects_name)s ที่ถูกเลือก? เนื่องจากอ็อบเจ็กต์ \"\n\"และรายการที่เกี่ยวข้องทั้งหมดต่อไปนี้จะถูกลบด้วย\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \" โดย %(filter_title)s \"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"โมเดลในแอป %(name)s\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"เปลี่ยนแปลง\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"คุณไม่สิทธิ์ในการเปลี่ยนแปลงข้อมูลใดๆ ได้\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"คำสั่งที่ผ่านมา\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"คำสั่งของฉัน\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"ไม่ว่าง\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"ไม่ทราบเนื้อหา\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"มีสิ่งผิดปกติเกิดขึ้นกับการติดตั้งฐานข้อมูล กรุณาตรวจสอบอีกครั้งว่าฐานข้อมูลได้ถูกติดตั้งแล้ว \"\n\"หรือฐานข้อมูลสามารถอ่านและเขียนได้โคยผู้ใช้นี้\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"รหัสผ่าน:\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"ลืมรหัสผ่านหรือชื่อผู้ใช้ของคุณหรือไม่\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"วันที่/เวลา\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"ผู้ใช้\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"คำสั่ง\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"อ็อบเจ็กต์นี้ไม่ได้แก้ไขประวัติ เป็นไปได้ว่ามันอาจจะไม่ได้ถูกเพิ่มเข้าไปโดยระบบ\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"แสดงทั้งหมด\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"บันทึก\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"ค้นหา\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"%(counter)s ผลลัพธ์\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"%(full_result_count)s ทั้งหมด\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"บันทึกใหม่\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"บันทึกและเพิ่ม\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"บันทึกและกลับมาแก้ไข\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"ขั้นตอนแรก ใส่ชื่อผู้ใช้และรหัสผ่าน หลังจากนั้นคุณจะสามารถแก้ไขข้อมูลผู้ใช้ได้มากขึ้น\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"กรุณาใส่ชื่อผู้ใช้และรหัสผ่าน\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"ใส่รหัสผ่านใหม่สำหรับผู้ใช้ <strong>%(username)s</strong>.\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"รหัสผ่าน\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"รหัสผ่าน (อีกครั้ง)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"ใส่รหัสผ่านเหมือนด้านบน เพื่อตรวจสอบความถูกต้อง\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"ถอดออก\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"เพิ่ม %(verbose_name)s อีก\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"ลบ?\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"ขอบคุณที่สละเวลาอันมีค่าให้กับเว็บไซต์ของเราในวันนี้\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"เข้าสู่ระบบอีกครั้ง\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"เปลี่ยนรหัสผ่าน\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"เปลี่ยนรหัสผ่านสำเร็จ\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"รหัสผ่านของคุณถูกเปลี่ยนไปแล้ว\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"กรุณาใส่รหัสผ่านเดิม ด้วยเหตุผลทางด้านการรักษาความปลอดภัย \"\n\"หลังจากนั้นให้ใส่รหัสผ่านใหม่อีกสองครั้ง เพื่อตรวจสอบว่าคุณได้พิมพ์รหัสอย่างถูกต้อง\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"รหัสผ่านเก่า\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"รหัสผ่านใหม่\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"เปลี่ยนรหัสผ่านของฉัน\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"ตั้งค่ารหัสผ่านใหม่\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"ตั้งค่ารหัสผ่านใหม่เรียบร้อย\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"รหัสผ่านของคุณได้รับการตั้งค่าแล้ว คุณสามารถเข้าสู่ระบบได้ทันที\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"การยืนยันตั้งค่ารหัสผ่านใหม่\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"ใส่รหัสผ่านใหม่\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"กรุณาใส่รหัสผ่านใหม่สองครั้ง เพื่อตรวจสอบว่าคุณได้พิมพ์รหัสอย่างถูกต้อง\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"รหัสผ่านใหม่:\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"ยืนยันรหัสผ่าน:\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"การตั้งค่ารหัสผ่านใหม่ ไม่สำเร็จ\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\"การตั้งรหัสผ่านใหม่ไม่สำเร็จ เป็นเพราะว่าหน้านี้ได้ถูกใช้งานไปแล้ว กรุณาทำการตั้งรหัสผ่านใหม่อีกครั้ง\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"การตั้งค่ารหัสผ่านใหม่เรียบร้อย\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"เราได้ส่งอีเมลวิธีการตั้งรหัสผ่าน ไปที่อีเมลที่คุณให้ไว้เรียบร้อยแล้ว และคุณจะได้รับเร็วๆ นี้\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\"คุณได้รับอีเมล์ฉบับนี้ เนื่องจากคุณส่งคำร้องขอเปลี่ยนรหัสผ่านสำหรับบัญชีผู้ใช้ของคุณที่ %(site_name)s.\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"กรุณาไปที่หน้านี้และเลือกรหัสผ่านใหม่:\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"ชื่อผู้ใช้ของคุณ ในกรณีที่คุณถูกลืม:\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"ขอบคุณสำหรับการใช้งานเว็บไซต์ของเรา\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"%(site_name)s ทีม\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"ลืมรหัสผ่าน? กรุณาใส่อีเมลด้านล่าง เราจะส่งวิธีการในการตั้งรหัสผ่านใหม่ไปให้คุณทางอีเมล\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"อีเมล:\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"ตั้งรหัสผ่านของฉันใหม่\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"ทุกวัน\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"(ว่างเปล่า)\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"เลือก %s\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"เลือก %s เพื่อเปลี่ยนแปลง\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/th/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Kowit Charoenratchatabhan <kowito@gmail.com>, 2011, 2012.\n# Suteepat Damrongyingsupab <monkeycrew_topza@hotmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-03-09 03:31+0000\\n\"\n\"Last-Translator: Kowit Charoenratchatabhan <kowit.s.c@gmail.com>\\n\"\n\"Language-Team: Thai (http://www.transifex.com/projects/p/django/language/\"\n\"th/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: th\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"%sที่มีอยู่\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"นี่คือรายการที่ใช้ได้ของ %s คุณอาจเลือกบางรายการโดยการเลือกไว้ในกล่องด้านล่างแล้วคลิกที่ปุ่ม \"\n\"\\\"เลือก\\\" ระหว่างสองกล่อง\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"พิมพ์ลงในช่องนี้เพื่อกรองรายการที่ใช้ได้ของ %s\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"ตัวกรอง\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"เลือกทั้งหมด\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"คลิกเพื่อเลือก %s ทั้งหมดในครั้งเดียว\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"เลือก\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"ลบออก\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"%sที่ถูกเลือก\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"นี่คือรายการที่ถูกเลือกของ %s คุณอาจเอาบางรายการออกโดยการเลือกไว้ในกล่องด้านล่างแล้วคลิกที่ปุ่ม \"\n\"\\\"เอาออก\\\" ระหว่างสองกล่อง\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"เอาออกทั้งหมด\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"คลิกเพื่อเอา %s ออกทั้งหมดในครั้งเดียว\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"%(sel)s จาก %(cnt)s selected\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\"คุณยังไม่ได้บันทึกการเปลี่ยนแปลงในแต่ละฟิลด์ ถ้าคุณเรียกใช้คำสั่ง \"\n\"ข้อมูลที่ไม่ได้บันทึกการเปลี่ยนแปลงของคุณจะหายไป\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\"คุณได้เลือกคำสั่ง แต่คุณยังไม่ได้บันทึกการเปลี่ยนแปลงของคุณไปยังฟิลด์ กรุณาคลิก OK เพื่อบันทึก \"\n\"คุณจะต้องเรียกใช้คำสั่งใหม่อีกครั้ง\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\"คุณได้เลือกคำสั่งและคุณยังไม่ได้ทำการเปลี่ยนแปลงใด ๆ ในฟิลด์ คุณอาจมองหาปุ่มไปมากกว่าปุ่มบันทึก\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"\"\n\"มกราคม กุมภาพันธ์ มีนาคม เมษายน พฤษภาคม มิถุนายน กรกฎาคม สิงหาคม กันยายน ตุลาคม \"\n\"พฤศจิกายน ธันวาคม\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"อา. จ. อ. พ. พฤ. ศ. ส.\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"แสดง\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"ซ่อน\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"ขณะนี้\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"นาฬิกา\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"เลือกเวลา\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"เที่ยงคืน\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"หกโมงเช้า\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"เที่ยงวัน\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"ยกเลิก\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"วันนี้\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"ปฏิทิน\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"เมื่อวาน\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"พรุ่งนี้\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/tr/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Translators:\n# Caner Başaran <basaran.caner@gmail.com>, 2012.\n#   <cihadgundogdu@gmail.com>, 2012.\n# Gökmen Görgen <gokmen@alageek.com>, 2012-2013.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Metin Amiroff <amiroff@gmail.com>, 2011-2012.\n# Murat Sahin <martinamca@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-02-24 17:30+0000\\n\"\n\"Last-Translator: Gökmen Görgen <gokmen@alageek.com>\\n\"\n\"Language-Team: Turkish (http://www.transifex.com/projects/p/django/language/\"\n\"tr/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: tr\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"%(count)d adet %(items)s başarıyla silindi.\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"%(name)s silinemedi\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"Emin misiniz?\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"Seçili %(verbose_name_plural)s nesnelerini sil\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"Tümü\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"Evet\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"Hayır\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"Bilinmiyor\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"Herhangi bir tarih\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"Bugün\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"Son 7 gün\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"Bu ay\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"Bu yıl\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"Oturumunuzun süresi geçti. Lütfen tekrar giriş yapın.\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"İşlem:\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"işlem zamanı\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"nesne no\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"nesne kodu\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"işlem adı\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"mesajı değiştir\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"log girdisi\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"log girdileri\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"\\\"%(object)s\\\" eklendi.\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"\\\"%(object)s\\\" değiştirildi - %(changes)s\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"\\\"%(object)s\\\" silindi.\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"LogEntry Nesnesi\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"Hiç biri\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"%s değiştirildi.\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"ve\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"%(name)s \\\"%(object)s\\\" eklenmiştir.\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"%(list)s %(name)s \\\"%(object)s\\\" ile değiştirildi.\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"%(name)s \\\"%(object)s\\\" silinmiştir.\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"Hiçbir alan değiştirilmedi.\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"\"\n\"\\\"%(obj)s\\\" isimli %(name)s eklendi. Aşağıda tekrar düzenleyebilirsiniz.\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" başarıyla eklendi. Aşağıda başka %(name)s \"\n\"ekleyebilirsiniz.\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"\\\"%(obj)s\\\" isimli %(name)s eklendi.\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" başarıyla değiştirildi. Aşağıda tekrar \"\n\"düzenleyebilirsiniz.\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" başarıyla değiştirildi. Aşağıda başka %(name)s \"\n\"ekleyebilirsiniz.\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"\\\"%(obj)s\\\" isimli %(name)s değiştirildi.\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\"İşlemlerin uygulanabilmesi için bir veya daha fazla nesne seçilmelidir. \"\n\"Herhangi bir değişiklik gerçekleştirilmedi.\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"İşlem seçimi yapılmamış. Lütfen bir işlem seçiniz.\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"%s ekle\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"%(key)r birincil anahtarına sahip %(name)s nesnesi mevcut değil.\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"%s değiştir\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"Veritabanı hatası\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"%(count)s adet %(name)s başarıyla değiştirildi.\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"Toplam %(total_count)s nesne seçili\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"%(cnt)s nesne arasından seçim yapılmamış\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"\\\"%(obj)s\\\" isimli %(name)s silindi.\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"%s için değişiklik geçmişi:\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"Giriş yap\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"Site yönetimi\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"%s yönetimi\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"Tarih:\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"Saat:\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"Arama\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"Yenisini Ekle\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"Şu anda:\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"Değiştirin:\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"Sayfa bulunamadı\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"Üzgünüz, aradığınız sayfa bulunamadı.\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"Anasayfa\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"Sunucu hatası\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"Sunucu hatası (500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"Sunucu Hatası <em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\"Bir hata oluştu. Site yöneticilerine e-posta ile rapor edildi ve kısa süre \"\n\"içinde düzeltilecek. Sabrınız için teşekkür ederiz.\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"Seçili işlemi uygula\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"Git\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"Tüm sayfalardaki nesneleri seçmek için buraya tıklayınız\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"Tüm %(total_count)s %(module_name)s nesnelerini seç\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"Seçimi kaldır\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"Hoşgeldiniz,\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"Dokümantasyon\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"Şifre değiştir\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"Çık\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"Django site yöneticisi\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"Django yönetimi\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"Yeni\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"Geçmiş\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"Sitede görüntüle\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"Lütfen aşağıdaki hataları düzeltin.\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"Yeni %(name)s\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"Filtrele\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"Sıralamadan çıkar\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"Sıralama önceliği: %(priority_number)s\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"Sıralama tercihi\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"Sil\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"'%(escaped_object)s' isimli %(object_name)s nesnesini silmek, bağlantılı \"\n\"nesnelerin silinmesini gerektiriyor, ancak aşağıdaki nesneleri silme \"\n\"yetkiniz yok.\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\"%(object_name)s '%(escaped_object)s' silinmesi aşağıda gösterilen ilişkili \"\n\"nesnelerin de silinmesini gerektirir:\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\"\\\"%(escaped_object)s\\\" isimli %(object_name)s nesnesini silmek \"\n\"istediğinizden emin misiniz? Aşağıdaki bağlantılı öğeler silinecek:\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"Evet, eminim\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"Birden fazla nesneyi sil\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\"Seçili %(objects_name)s nesnelerinin silinmesi hesabınızın silme yetkisine \"\n\"sahip olmadığı aşağıda gösterilen nesnelerin de silinmesini gerektirir:\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\"Seçili %(objects_name)s nesnelerinin silinmesi aşağıda gösterilen ilişkili \"\n\"nesnelerin silinmesini de gerektirir:\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\"Seçili %(objects_name)s nesnelerini silmek istediğinizden emin misiniz? \"\n\"Aşağıda gösterilen tüm nesneler ve ilişkili kalemler silinecektir:\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \" %(filter_title)s filtresi\"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"%(name)s uygulamasındaki modeller\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"Düzenle\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"Düzenleme yapmaya yetkiniz yok.\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"İşlem Geçmişi\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"İşlemlerim\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"İşlem geçmişi bulunamadı\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"Bilinmeyen içerik\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"Veritabanı kurulumu ile ilgili bir problem var. İlgili veritabanı \"\n\"tablolarının kurulu olduğundan ve veritabanının ilgili kullanıcı tarafından \"\n\"okunabilir olduğundan emin olun.\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"Şifre:\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"Kullanıcı adını veya parolanı mı unuttun?\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"Tarih/saat\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"Kullanıcı\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"İşlem\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\"Bu nesnenin işlem geçmişi yok. Muhtemelen yönetici sayfası dışında bir \"\n\"yerden eklendi.\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"Tümünü göster\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"Kaydet\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"Ara\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"%(counter)s sonuç\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"toplam %(full_result_count)s\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"Yeni olarak kaydet\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"Kaydet ve yenisini ekle\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"Kaydet ve düzenlemeye devam et\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\"Önce bir kullanıcı adı ve şifre girin. Daha sonra daha fazla bilgi \"\n\"girebilirsiniz.\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"Kullanıcı adı ve şifre girin.\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"<strong>%(username)s</strong> için yeni şifre girin.\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"Şifre\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"Şifre (tekrar)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Onaylamak için, yukarıdaki şifrenin aynısını girin.\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"Sil\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"Yeni bir %(verbose_name)s ekle\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"Silinsin Mi?\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"Web sitesinde bugün geçirdiğiniz zaman için teşekkür ederiz.\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"Tekrar giriş yap\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"Şifre değişimi\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"Şifre değişimi başarılı\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"Şifreniz değiştirildi.\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"Güvenliğiniz için, lütfen eski şifrenizi girin, sonra yeni şifrenizi iki \"\n\"kere girerek doğru yazdığınızdan emin olun.\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"Eski şifre\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"Yeni şifre\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"Şifremi değiştir\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"Şifreyi sıfırla\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"Şifre sıfırlama tamamlandı\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"Şifreniz atanmıştır. Şimdi sisteme giriş yapabilirsiniz.\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"Şifre sıfırlama onayı\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"Yeni şifreyi girin\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"\"\n\"Lütfen yeni şifrenizi iki kere girin, böylece doğru yazdığınızdan emin olun.\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"Yeni şifre:\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"Şifreyi onayla:\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"Şifre sıfırlaması başarısız oldu\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\"Şifre sıfırlama linki geçersiz bulunmuştur, büyük ihtimalle daha önce \"\n\"kullanılmış olduğu içindir. Lütfen yeni bir şifre sıfırlama talebinde \"\n\"bulunun.\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"Şifre başarıyla sıfırlandı\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\"Şifrenizin ayarlanması ile ilgili talimatlar belirtmiş olduğunuz email \"\n\"adresine gönderildi. Yakın zamanda ulaşması beklenir.\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\"Bu postayı %(site_name)s sitesindeki kullanıcı hesabınıza ait şifrenizi \"\n\"sıfırlama talebinde bulunduğunuz için alıyorsunuz.\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"Lütfen bu sayfaya gidip yeni şifre seçin:\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"Unutma ihtimaline karşı, kullanıcı adınız:\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"Sitemizi kullandığınız için teşekkürler!\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"%(site_name)s Ekibi\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\"Şifrenizi mi unuttunuz? Aşağıdaki alana e-posta adresinizi girin, yeni \"\n\"şifreniz için gereken talimatları göndereceğiz.\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"E-posta adresi:\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"Şifremi sıfırla\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"Tüm tarihler\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"(Yok)\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"%s seç\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"Değiştirilecek %s nesnesini seçin\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/tr/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Metin Amiroff <amiroff@gmail.com>, 2011.\n# Murat Çorlu <muratcorlu@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-03-08 20:12+0000\\n\"\n\"Last-Translator: Murat Çorlu <muratcorlu@gmail.com>\\n\"\n\"Language-Team: Turkish (http://www.transifex.com/projects/p/django/language/\"\n\"tr/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: tr\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"Toplam %s\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Bu uygun %s listesidir. Aşağıdaki kutudan bazılarını işaretleyip, iki kutu \"\n\"arasındaki \\\"Seç\\\" okuna basarak seçebilirsiniz.\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"Uygun %s listesini filtrelemek için bu kutuya yazın.\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"Filtre\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"Hepsini seç\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"Bütün %s bir kerede seçilsin istiyorsanız tıklayın. \"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"Seç\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"Kaldır\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"Seçilen %s\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Bu seçili %s listesidir. Aşağıdaki kutudan bazılarını işaretleyip, iki kutu \"\n\"arasındaki \\\"Kaldır\\\" okuna tıklayarak kaldırabilirsiniz.\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"Hepsini kaldır\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"Bütün seçili %s kaldırılsın istiyorsanız tıklayın.\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"%(sel)s / %(cnt)s seçili\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\"Alanlara girilmiş ve henüz kaydedilmemiş değişiklikler mevcut. Eğer devam \"\n\"ederseniz, kaydedilmemiş değişiklikleriniz yitirilecektir.\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\"Bir işlem seçtiniz, fakat bazı alanlardaki değişiklikleri henüz \"\n\"kaydetmediniz. Kaydetmek için lütfen Tamam düğmesine tıklayınız. İşlemi \"\n\"tekrarlamanız gerekecektir.\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\"Bir işlem seçtiniz, fakat hiçbir alan üzerinde değişiklik yapmadınız. Bu \"\n\"durumda Kaydet düğmesi yerine Git düğmesini kullanmanız önerilir.\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"\"\n\"Ocak Şubat Mart Nisan Mayıs Haziran Temmuz Ağustos Eylül Ekim Kasım Aralık\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"P P S Ç P C C\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"Göster\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"Gizle\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"Şimdi\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"Saat\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"Saat seçin\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"Geceyarısı\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"Sabah 6\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"Öğle\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"İptal\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"Bugün\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"Takvim\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"Dün\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"Yarın\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/tt/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Azat Khasanshin <lordofbazuks@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:52+0000\\n\"\n\"Last-Translator: Ramiro Morales <cramm0@gmail.com>\\n\"\n\"Language-Team: Tatar (http://www.transifex.com/projects/p/django/language/\"\n\"tt/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: tt\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"%(count)d %(items)s уңышлы рәвештә бетерелгән.\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"%(name)s бетереп булмады\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"Сез инанып карар кылдыгызмы?\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"Сайланган %(verbose_name_plural)s бетерергә\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"Барысы\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"Әйе\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"Юк\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"Билгесез\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"Теләсә нинди көн һәм вакыт\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"Бүген\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"Соңгы 7 көн\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"Бу ай\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"Бу ел\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"Сезнең эш сеансыгыз искергән, зинһар, яңадан керегез.\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"Гамәл:\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"гамәл вакыты\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"объект идентификаторы\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"объект фаразы\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"гамәл тибы\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"үзгәрү белдерүе\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"журнал язмасы\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"журнал язмалары\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"Юк\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"%s үзгәртелгән.\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"һәм\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"%(name)s \\\"%(object)s\\\" өстәлгән.\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"%(name)s \\\"%(object)s\\\" өчен %(list)s үзгәртелгән.\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"%(name)s \\\"%(object)s\\\" бетерелгән.\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"Үзгәртелгән кырлар юк.\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" үңышлы рәвештә өстәлгән. Астарак сез аны тагын бер кат \"\n\"төзәтә аласыз.\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" үңышлы рәвештә өстәлгән.\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" уңышлы рәвештә үзгәртелгән.\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\"Элементар өстеннән гамәл кылу өчен алар сайланган булырга тиеш. Элементлар \"\n\"үзгәртелмәгән.\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"Гамәл сайланмаган.\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"%s өстәргә\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"%(key)r беренчел ачкыч белән булган %(name)s юк.\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"%s үзгәртергә\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"Бирелмәләр базасы хатасы\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"%(count)s %(name)s уңышлы рәвештә үзгәртелгән.\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"%(total_count)s сайланган\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"Барлык %(cnt)s объектан 0 сайланган\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" уңышлы рәвештә бетерелгән.\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"Үзгәртү тарихы: %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"Керергә\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"Сайт идарәсе\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"%s идарә итү\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"Көн:\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"Вакыт:\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"Эзләү\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"Тагын өстәргә\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"Сәхифә табылмаган\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"Кызганычка каршы, соралган сәхифә табылмады.\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"Башбит\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"Сервер хатасы\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"Сервер хатасы (500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"Сервер хатасы <em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"Сайланган гамәлне башкарырга\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"Башкарырга\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"Барлык сәхифәләрдә булган объектларны сайлау өчен монда чирттерегез\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"Бөтен %(total_count)s %(module_name)s сайларга\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"Сайланганлыкны алырга\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"Рәхим итегез,\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"Документация\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"Серсүзне үзгәртергә\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"Чыгарга\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"Django сайты идарәсе\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"Django идарәсе\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"Өстәргә\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"Тарих\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"Сайтта карарга\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"Зинһар, биредәге хаталарны төзәтегез.\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"%(name)s өстәргә\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"Филтер\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"Бетерергә\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"%(object_name)s '%(escaped_object)s' бетереүе аның белән бәйләнгән \"\n\"объектларның бетерелүенә китерә ала, әмма сезнең хисап язмагызның киләсе \"\n\"объект тибларын бетерү өчен хокуклары җитми:\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\"%(object_name)s '%(escaped_object)s' бетерүе киләсе сакланган объектларның \"\n\"бетерелүен таләп итә:\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\"Сез инанып %(object_name)s \\\"%(escaped_object)s\\\" бетерергә телисезме? \"\n\"Барлык киләсе бәйләнгән объектлар да бетерелер:\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"Әйе, мин инандым\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"Берничә объектны бетерергә\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\"Сайланган %(objects_name)s бетерүе аның белән бәйләнгән объектларның \"\n\"бетерелүенә китерә ала, әмма сезнең хисап язмагызның киләсе объект тибларын \"\n\"бетерү өчен хокуклары җитми:\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\"%(objects_name)s бетерүе киләсе аның белән бәйләнгән сакланган объектларның \"\n\"бетерелүен таләп итә:\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\"Сез инанып %(objects_name)s бетерергә телисезме? Барлык киләсе объектлар һәм \"\n\"алар белән бәйләнгән элементлар да бетерелер:\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \"%(filter_title)s буенча\"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"Үзгәртергә\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"Төзәтү өчен хокукларыгыз җитми.\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"Соңгы гамәлләр\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"Минем гамәлләр\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"Тарих юк\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"Билгесез тип\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"Сезнең бирелмәләр базасы дөрес итем көйләнмәгән. Тиешле җәдвәлләр төзелгәнен \"\n\"һәм тиешле кулланучының хокуклары җитәрлек булуын тикшерегез.\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"Серсүз:\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"Көн һәм вакыт\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"Кулланучы\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"Гамәл\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\"Әлеге объектның үзгәртү тарихы юк. Бу идарә итү сайты буенча өстәлмәгән \"\n\"булуы ихтимал.\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"Бөтенесен күрсәтергә\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"Сакларга\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"Эзләргә\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"%(counter)s нәтиҗә\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"барлыгы %(full_result_count)s\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"Яңа объект итеп сакларга\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"Сакларга һәм бүтән объектны өстәргә\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"Сакларга һәм төзәтүне дәвам итәргә\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\"Баштан логин һәм серсүзне кертегез. Аннан соң сез кулланучы турында күбрәк \"\n\"мәгълүматне төзәтә алырсыз.\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"Логин һәм серсүзне кертегез.\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"<strong>%(username)s</strong> кулланучы өчен яңа серсүзне кертегез.\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"Серсүз\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"Серсүз (тагын бер тапкыр)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Тикшерү өчен шул ук серсүзне яңадан кертегез.\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"Бетерергә\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"Тагын бер %(verbose_name)s өстәргә\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"Бетерергә?\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"Сайтыбызда үткәргән вакыт өчен рәхмәт.\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"Тагын керергә\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"Серсүзне үзгәртү\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"Серсүз уңышлы рәвештә үзгәртелгән\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"Серсүзегез үзгәртелгән.\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"Хәвефсезлек сәбәпле, зинһар, үзегезнең иске серсүзне кертегез, аннан яңа \"\n\"серсүзне ике тапкыр кертегез (дөрес язылышын тикшерү өчен).\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"Иске серсүз\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"Яңа серсүз\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"Серсүземне үзгәртергә\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"Серсүзне торгызу\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"Серсүзне торгызу тәмамланган\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"Серсүзегез үзгәртелгән. Сез хәзер керә аласыз.\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"Серсүзне торгызу раслау\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"Яңа серсүзне кертегез:\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"Зинһар, тикшерү өчен яңа серсүзегезне ике тапкыр кертегез.\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"Яңа серсуз:\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"Серсүзне раслагыз:\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"Серсүзне торгызу хатасы\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\"Серсүзне торгызу өчен сылтама хаталы. Бәлки аның белән инде кулланганнар. \"\n\"Зинһар, серсүзне тагын бер тапкыр торгызып карагыз.\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"Серсүз уңышлы рәвештә торгызылган\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"Зинһар, бу сәхифәгә юнәлегез һәм яңа серсүзне кертегез:\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"Сезнең кулланучы исемегез (оныткан булсагыз):\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"Безнең сайтны куллану өчен рәхмәт!\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"%(site_name)s сайтының төркеме\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"Серсүземне торгызырга\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"Бөтен көннәр\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"(Юк)\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"%s сайлагыз\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"Үзгәртү өчен %s сайлагыз\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/tt/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Azat Khasanshin <lordofbazuks@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-03-08 10:42+0000\\n\"\n\"Last-Translator: Azat Khasanshin <lordofbazuks@gmail.com>\\n\"\n\"Language-Team: Tatar (http://www.transifex.com/projects/p/django/language/\"\n\"tt/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: tt\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"Рөхсәт ителгән %s\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"Фильтр\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"Барысын сайларга\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"Бетерергә\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"Сайланган %s\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"%(cnt)s арасыннан %(sel)s сайланган\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\"Кайбер кырларда сакланмаган төзәтүләр кала. Сез гамәлне башкарсагыз, сезнең \"\n\"сакланмаган үзгәртүләр югалачаклар.\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\"Сез гамәлне сайладыгыз, әмма кайбер кырлардагы төзәтүләрне сакламадыгыз. \"\n\"Аларны саклау өчен OK төймәсенә басыгыз. Аннан соң гамәлне тагын бер тапкыр \"\n\"башкарырга туры килер.\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\"Сез гамәлне сайладыгыз һәм төзәтүләрне башкармадыгыз. Бәлки сез \\\"Сакларга\\\" \"\n\"төймәсе урынына \\\"Башкарырга\\\" төймәсен кулланырга теләдегез.\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"\"\n\"Гыйнвар Февраль Март Апрель Май Июнь Июль Август Сентябрь Октябрь Ноябрь \"\n\"Декабрь\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"Я Д С Ч П Җ Ш\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"Күрсәтергә\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"Яшерергә\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"Хәзер\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"Сәгатьләр\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"Вакыт сайлагыз\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"Төн уртасы\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"Иртәнге 6\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"Төш\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"Юкка чыгарырга\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"Бүген\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"Календарь\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"Кичә\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"Иртәгә\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/udm/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:52+0000\\n\"\n\"Last-Translator: Ramiro Morales <cramm0@gmail.com>\\n\"\n\"Language-Team: Udmurt (http://www.transifex.com/projects/p/django/language/\"\n\"udm/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: udm\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"Бен\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"Тодымтэ\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"Ӵушоно\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \"\"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"Тупатъяно\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/udm/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2011-01-19 15:01+0000\\n\"\n\"Last-Translator: Django team\\n\"\n\"Language-Team: Udmurt (http://www.transifex.com/projects/p/django/language/\"\n\"udm/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: udm\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/uk/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Boryslav Larin <brabadu@gmail.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Sergey Lysach <sergikoff88@gmail.com>, 2011-2013.\n# Sergiy Kuzmenko <s.kuzmenko@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-12 18:22+0000\\n\"\n\"Last-Translator: Sergey Lysach <sergikoff88@gmail.com>\\n\"\n\"Language-Team: Ukrainian (http://www.transifex.com/projects/p/django/\"\n\"language/uk/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: uk\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"Успішно видалено %(count)d %(items)s.\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"Не можу видалити %(name)s\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"Ви впевнені?\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"Видалити обрані %(verbose_name_plural)s\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"Всі\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"Так\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"Ні\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"Невідомо\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"Будь-яка дата\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"Сьогодні\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"Останні 7 днів\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"Цього місяця\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"Цього року\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\"Будь ласка, введіть правильні %(username)s і пароль для облікового запису \"\n\"персоналу. Зауважте, що обидва поля можуть бути чутливі до регістру.\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"Будь ласка, увійдіть знову, ваша сесія закінчилася.\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"Дія:\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"час дії\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"id об'єкту\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"представлення об'єкту(repr)\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"прапор дії\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"змінити повідомлення\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"реєстрування записів\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"реєстрування записів\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"Додано \\\"%(object)s\\\".\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"Змінено \\\"%(object)s\\\" - %(changes)s\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"Видалено \\\"%(object)s.\\\"\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"Запис у журналі\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"Ніщо\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"Змінено %s.\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"та\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Додано %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Змінено %(list)s для %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"Видалено %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"Поля не змінені.\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\"  був успішно доданий. Ви модете редагувати його знову \"\n\"внизу.\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" було успішно додано. Ви можете додати ще одну %(name)s \"\n\"нижче.\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" було додано успішно.\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" було успішно змінено. Ви можете знову відредагувати її \"\n\"нижче.\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" було успішно змінено. Ви можете додати ще одну %(name)s \"\n\"нижче.\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" був успішно змінений.\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\"Для виконання дії необхідно обрати елемент. Жодний елемент не був змінений.\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"Жодних дій не обрано.\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"Додати %s\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"%(name)s об'єкт з первинним ключем %(key)r не існує.\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"Змінити %s\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"Помилка бази даних\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"%(count)s %(name)s був успішно змінений.\"\nmsgstr[1] \"%(count)s %(name)s були успішно змінені.\"\nmsgstr[2] \"%(count)s %(name)s було успішно змінено.\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"%(total_count)s обраний\"\nmsgstr[1] \"%(total_count)s обрані\"\nmsgstr[2] \"Усі %(total_count)s обрано\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"0 з %(cnt)s обрано\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" був видалений успішно.\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"Історія змін: %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"Увійти\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"Адміністрування сайта\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"Адміністрування %s\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"Дата:\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"Час:\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"Пошук\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"Додати інше\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"В даний час:\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"Змінено:\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"Сторінка не знайдена\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"Ми шкодуємо, але сторінка яку ви запросили, не знайдена.\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"Домівка\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"Помилка сервера\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"Помилка сервера (500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"Помилка сервера <em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\"Виникла помилка. Адміністратор сайту буде повідомлений про неї по \"\n\"електронній пошті і вона повинна бути виправлена ​​найближчим часом. Дякуємо \"\n\"за ваше терпіння.\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"Виконати обрану дію\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"Уперед\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"Натисніть тут, щоб вибрати об'єкти на всіх сторінках\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"Обрати всі %(total_count)s %(module_name)s\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"Скинути вибір\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"Додати %(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"Вітаємо,\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"Документація\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"Змінити пароль\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"Вийти\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"Django сайт адміністрування\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"Django адміністрування\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"Додати\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"Історія\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"Дивитися на сайті\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"Будь ласка, виправте помилку нижче.\"\nmsgstr[1] \"Будь ласка, виправте помилки нижче.\"\nmsgstr[2] \"Будь ласка, виправте помилки нижче.\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"Додати %(name)s\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"Відфільтрувати\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"Видалити з сортування\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"Пріорітет сортування: %(priority_number)s\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"Сортувати в іншому напрямку\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"Видалити\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"Видалення %(object_name)s '%(escaped_object)s' призведе до видалення \"\n\"пов'язаних об'єктів, але ваш реєстраційний запис не має дозволу видаляти \"\n\"наступні типи об'єктів:\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\"Видалення %(object_name)s '%(escaped_object)s' вимагатиме видалення \"\n\"наступних пов'язаних об'єктів:\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\"Ви впевнені що хочете видалити %(object_name)s \\\"%(escaped_object)s\\\"? Всі \"\n\"пов'язані записи, що перелічені, будуть видалені:\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"Так, я впевнений\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"Видалити кілька об'єктів\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\"Видалення обраних %(objects_name)s вимагатиме видалення пов'язаних об'єктів, \"\n\"але ваш обліковий запис не має прав для видалення таких типів об'єктів:\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\"Видалення обраних %(objects_name)s вимагатиме видалення наступних захищених \"\n\"пов'язаних об'єктів:\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\"Ви впевнені, що хочете видалити вибрані %(objects_name)s? Всі наступні \"\n\"об'єкти та пов'язані з ними елементи будуть видалені:\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \"За %(filter_title)s\"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"Моделі у %(name)s додатку\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"Змінити\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"У вас немає дозволу редагувати будь-що.\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"Недавні дії\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"Мої дії\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"Немає\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"Невідомий зміст\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"Щось не так з інсталяцією бази даних. Перевірте, що таблиці бази даних \"\n\"створено і база даних може бути прочитана відповідним користувачем.\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"Пароль:\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"Забули пароль або ім'я користувача?\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"Дата/час\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"Користувач\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"Дія\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\"Цей об'єкт не має історії змін. Напевно, він був доданий не через цей сайт \"\n\"адміністрування.\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"Показати всі\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"Зберегти\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"Пошук\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"%(counter)s результат\"\nmsgstr[1] \"%(counter)s результати\"\nmsgstr[2] \"%(counter)s результатів\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"%(full_result_count)s всього\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"Зберегти як нове\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"Зберегти і додати інше\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"Зберегти і продовжити редагування\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\"Спочатку, введіть ім'я користувача і пароль. Потім ви зможете редагувати \"\n\"більше опцій користувача.\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"Введіть ім'я користувача і пароль.\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"Введіть новий пароль для користувача <strong>%(username)s</strong>.\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"Пароль\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"Пароль (знову)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Повторіть пароль для перевірки.\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"Видалити\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"Додати ще %(verbose_name)s\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"Видалити?\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"Дякуємо за час, проведений сьогодні на сайті.\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"Увійти знову\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"Зміна паролю\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"Зміна паролю успішна\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"Ваш пароль було змінено.\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"Будь ласка введіть ваш старий пароль, задля безпеки, потім введіть ваш новий \"\n\"пароль двічі, щоб ми могли перевірити, що ви ввели його правильно\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"Старий пароль\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"Новий пароль\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"Змінити мій пароль\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"Перевстановлення паролю\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"Пароль перевстановлено\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"Пароль встановлено. Ви можете увійти зараз.\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"Підтвердження перевстановлення паролю\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"Новий пароль\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"\"\n\"Будь ласка, введіть ваш старий пароль, задля безпеки, потім введіть ваш \"\n\"новий пароль двічі, щоб ми могли перевірити, що ви ввели його правильно.\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"Новий пароль:\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"Підтвердіть пароль:\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"Пароль не перевстановлено\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\"Посилання на перевстановлення паролю було помилковим. Можливо тому, що воно \"\n\"було вже використано. Будь ласка, замовте нове перевстановлення паролю.\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"Пароль перевстановлено успішно\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\"На електронну адресу, яку ви ввели, ми надіслали вам листа з інструкціями \"\n\"щодо встановлення пароля. Ви повинні отримати його найближчим часом.\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\"Ви отримали цей лист, тому що ви зробили запит на перевстановлення пароля \"\n\"для облікового запису користувача на %(site_name)s.\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"Будь ласка, перейдіть на цю сторінку, та оберіть новий пароль:\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"У разі, якщо ви забули, ваше ім'я користувача:\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"Дякуємо за користування нашим сайтом!\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"Команда сайту %(site_name)s \"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\"Забули пароль? Введіть свою email-адресу нижче і ми вишлемо інструкції по \"\n\"встановленню нового.\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"Email адреса:\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"Перевстановіть мій пароль\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"Всі дати\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"(None)\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"Вибрати %s\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"Виберіть %s щоб змінити\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/uk/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Boryslav Larin <brabadu@gmail.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Sergey Lysach <sergikoff88@gmail.com>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-03-11 16:41+0000\\n\"\n\"Last-Translator: Sergey Lysach <sergikoff88@gmail.com>\\n\"\n\"Language-Team: Ukrainian (http://www.transifex.com/projects/p/django/\"\n\"language/uk/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: uk\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"В наявності %s\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Це список всіх доступних %s. Ви можете обрати деякі з них, виділивши їх у \"\n\"полі нижче і натиснувшт кнопку \\\"Обрати\\\".\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"\"\n\"Почніть вводити текст в цьому полі щоб відфільтрувати список доступних %s.\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"Фільтр\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"Обрати всі\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"Натисніть щоб обрати всі %s відразу.\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"Обрати\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"Видалити\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"Обрано %s\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"Це список обраних %s. Ви можете видалити деякі з них, виділивши їх у полі \"\n\"нижче і натиснувши кнопку \\\"Видалити\\\".\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"Видалити все\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"Натисніть щоб видалити всі обрані %s відразу.\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"Обрано %(sel)s з %(cnt)s\"\nmsgstr[1] \"Обрано %(sel)s з %(cnt)s\"\nmsgstr[2] \"Обрано %(sel)s з %(cnt)s\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\"Ви зробили якісь зміни у деяких полях. Якщо Ви виконаєте цю дію, всі \"\n\"незбережені зміни буде втрачено.\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\"Ви обрали дію, але не зберегли зміни в окремих полях. Будь ласка, натисніть \"\n\"ОК, щоб зберегти. Вам доведеться повторно запустити дію.\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\"Ви обрали дію і не зробили жодних змін у полях. Ви, напевно, шукаєте кнопку \"\n\"\\\"Виконати\\\", а не \\\"Зберегти\\\".\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"\"\n\"Січень Лютий Березень Квітень Травень Червень Липень Серпень Вересень \"\n\"Жовтень Листопад Грудень\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"Нд Пн Вт Ср Чт Пт Сб\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"Показати\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"Сховати\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"Зараз\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"Годинник\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"Оберіть час\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"Північ\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"6\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"Полудень\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"Відмінити\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"Сьогодні\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"Календар\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"Вчора\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"Завтра\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/ur/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Mansoorulhaq Mansoor <mansoorulhaq1986@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:52+0000\\n\"\n\"Last-Translator: Ramiro Morales <cramm0@gmail.com>\\n\"\n\"Language-Team: Urdu (http://www.transifex.com/projects/p/django/language/\"\n\"ur/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ur\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"%(count)d %(items)s کو کامیابی سے مٹا دیا گیا۔\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"%(name)s نہیں مٹایا جا سکتا\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"آپ کو یقین ھے؟\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"منتخب شدہ %(verbose_name_plural)s مٹائیں\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"تمام\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"ھاں\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"نھیں\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"نامعلوم\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"کوئی تاریخ\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"آج\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"گزشتہ سات دن\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"یہ مھینہ\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"یہ سال\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"براہ مھربانی دوباہ اندر جائیں، کیونکہ آپ کی نشست کی مدت ختم ھو چکی ھے۔\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"کاروائی:\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"کاروائی کا وقت\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"شے کا شناختی نمبر\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"شے کا نمائندہ\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"کاروائی کا پرچم\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"پیغام تبدیل کریں\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"لاگ کا اندراج\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"لاگ کے اندراج\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"کوئی نھیں\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"%s تبدیل کریں۔\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"اور\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"%(name)s \\\"%(object)s\\\" کا اضافہ کیا گیا۔\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"%(name)s \\\"%(object)s\\\" %(list)s کی تبدیلی کی گئی۔\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"%(name)s \\\"%(object)s\\\" مٹایا گیا۔۔\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"کوئی خانہ تبدیل نھیں کیا گیا۔\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" کا کامیابی سے اضافہ کیا گیا۔ نیچے آپ دوبارہ اسے مدوّن کر \"\n\"سکتے ھیں۔\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" کا کامیابی سے اضافہ کیا گیا۔\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" کی تبدیلی کامیابی سے ھو گئی۔\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\"اشیاء پر کاروائی سرانجام دینے کے لئے ان کا منتخب ھونا ضروری ھے۔ کوئی شے \"\n\"تبدیل نھیں کی گئی۔\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"کوئی کاروائی منتخب نھیں کی گئی۔\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"%s کا اضافہ کریں\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"%(name)s شے %(key)r پرائمری کلید کے ساتھ موجود نھیں ھے۔\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"%s تبدیل کریں\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"ڈیٹا بیس کی خرابی\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"%(count)s %(name)s کامیابی سے تبدیل کیا گیا تھا۔\"\nmsgstr[1] \"%(count)s %(name)s کامیابی سے تبدیل کیے گئے تھے۔\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"%(total_count)s منتخب کیا گیا۔\"\nmsgstr[1] \"تمام %(total_count)s منتخب کئے گئے۔\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"%(cnt)s میں سے 0 منتخب کیا گیا۔\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" کامیابی سے مٹایا گیا تھا۔\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"%s کی تبدیلی کا تاریخ نامہ\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"اندر جائیں\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"سائٹ کی انتظامیہ\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"%s کی انتظامیہ\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"تاریخ:\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"وقت:\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"ڈھونڈیں\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"اور اضافہ کریں\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"صفحہ نھیں ملا\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"ھم معذرت خواہ ھیں، مطلوبہ صفحہ نھیں مل سکا۔\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"گھر\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"سرور کی خرابی\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"سرور کی خرابی (500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"سرور کی خرابی <em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"منتخب شدہ کاروائیاں چلائیں\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"جاؤ\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"تمام صفحات میں سے اشیاء منتخب کرنے کے لئے یہاں کلک کریں۔\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"تمام %(total_count)s %(module_name)s منتخب کریں\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"انتخاب صاف کریں\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"خوش آمدید،\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"طریق استعمال\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"لفظ اجازت تبدیل کریں\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"باہر جائیں\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"منتظم برائے جینگو سائٹ\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"انتظامیہ برائے جینگو سائٹ\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"اضافہ\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"تاریخ نامہ\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"سائٹ پر مشاھدہ کریں\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"براہ کرم نیچے غلطی درست کریں۔\"\nmsgstr[1] \"براہ کرم نیچے غلطیاں درست کریں۔\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"%(name)s کا اضافہ کریں\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"چھانٹیں\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"مٹائیں\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"%(object_name)s '%(escaped_object)s' کو مٹانے کے نتیجے میں معتلقہ اشیاء مٹ \"\n\"سکتی ھیں، مگر آپ کے کھاتے کو اشیاء کی مندرجہ ذیل اقسام مٹانے کا حق حاصل نھیں \"\n\"ھے۔\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\"%(object_name)s '%(escaped_object)s' کو مٹانے کے لئے مندرجہ ذیل محفوظ متعلقہ \"\n\"اشیاء کو مٹانے کی ضرورت پڑ سکتی ھے۔\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\"واقعی آپ %(object_name)s \\\"%(escaped_object)s\\\" کو مٹانا چاہتے ھیں۔ مندرجہ \"\n\"ذیل تمام متعلقہ اجزاء مٹ جائیں گے۔\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"ھاں، مجھے یقین ھے\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"متعدد اشیاء مٹائیں\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\"منتخب شدہ %(objects_name)s کو مٹانے کے نتیجے میں متعلقہ اشیاء مٹ سکتی ھیں، \"\n\"لیکن آپ کے کھاتے کو اشیاء کی مندرجہ ذیل اقسام کو مٹانے کا حق حاصل نھیں ھے۔\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\"منتخب شدہ %(objects_name)s کو مٹانے کے لئے مندرجہ ذیل محفوظ شدہ اشیاء کو \"\n\"مٹانے کی ضرورت پڑ سکتی ھے۔\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\"واقعی آپ منتخب شدہ %(objects_name)s مٹانا چاھتے ھیں؟ مندرجہ ذیل اور ان سے \"\n\"متعلقہ تمام اشیاء حذف ھو جائیں گی۔\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \"از %(filter_title)s\"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"تدوین\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"آپ کو کوئی چیز مدوّن کرنے کا حق نھیں ھے۔\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"حالیہ کاروائیاں\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"میری کاروائیاں\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"کچھ دستیاب نھیں\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"نامعلوم مواد\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"آپ کی ڈیٹا بیس کی تنصیب میں کوئی چیز خراب ھے۔ یقین کر لیں کہ موزون ڈیٹا بیس \"\n\"ٹیبل بنائے گئے تھے، اور یقین کر لیں کہ ڈیٹ بیس مناسب صارف کے پڑھے جانے کے \"\n\"قابل ھے۔\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"لفظ اجازت:\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"تاریخ/وقت\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"صارف\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"کاروائی\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\"اس شے کا تبدیلی کا تاریخ نامہ نھیں ھے۔ اس کا غالباً بذریعہ اس منتظم سائٹ کے \"\n\"اضافہ نھیں کیا گیا۔\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"تمام دکھائیں\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"محفوظ کریں\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"تلاش کریں\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"%(counter)s نتیجہ\"\nmsgstr[1] \"%(counter)s نتائج\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"کل %(full_result_count)s\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"بطور نیا محفوظ کریں\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"محفوظ کریں اور مزید اضافہ کریں\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"محفوظ کریں اور تدوین جاری رکھیں\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\"پہلے نام صارف اور لفظ اجازت درج کریں۔ پھر آپ مزید صارف کے حقوق مدوّن کرنے کے \"\n\"قابل ھوں گے۔\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"نام صارف اور لفظ اجازت درج کریں۔\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"صارف <strong>%(username)s</strong> کے لئے نیا لفظ اجازت درج کریں۔\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"لفظ اجازت\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"لفظ اجازت (دوبارہ)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"توثیق کے لئے ویسا ہی لفظ اجازت درج کریں جیسا اوپر کیا۔\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"خارج کریں\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"دوسرا %(verbose_name)s درج کریں\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"مٹاؤں؟\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"ویب سائٹ پر آج کچھ معیاری وقت خرچ کرنے کے لئے شکریہ۔\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"دوبارہ اندر جائیں\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"لفظ اجازت کی تبدیلی\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"لفظ اجازت کی تبدیلی کامیابی سے ھوگئی\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"آپ کا لفظ اجازت تبدیل کر دیا گیا تھا۔\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"براہ کرم سیکیورٹی کی خاطر اپنا پرانا لفظ اجازت درج کریں اور پھر اپنا نیا لفظ \"\n\"اجازت دو مرتبہ درج کریں تاکہ ھم توثیق کر سکیں کہ آپ نے اسے درست درج کیا ھے۔\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"پرانا لفظ اجازت\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"نیا لفظ اجازت\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"میرا لفظ تبدیل کریں\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"لفظ اجازت کی دوبارہ ترتیب\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"لفظ اجازت کی دوبارہ ترتیب مکمل ھو گئی\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"\"\n\"آپ کا لفظ اجازت مرتب کر دیا گیا ھے۔ آپ کو آگے بڑھنے اور اندر جانے کی اجازت \"\n\"ھے۔\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"لفظ اجازت دوبارہ مرتب کرنے کی توثیق\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"نیا لفظ اجازت درج کریں\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"\"\n\"براہ مھربانی اپنا نیا لفظ اجازت دو مرتبہ درج کریں تاکہ تاکہ ھم تصدیق کر سکیں \"\n\"کہ تم نے اسے درست درج کیا ھے۔\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"نیا لفظ اجازت:\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"لفظ اجازت کی توثیق:\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"لفظ اجازت کی دوبارہ ترتیب ناکام ھو گئی۔\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\"لفظ اجازت دوبارہ مرتب کرنے کا رابطہ (لنک) غلط تھا، غالباً یہ پہلے ھی استعمال \"\n\"کیا چکا تھا۔ براہ مھربانی نیا لفظ اجازت مرتب کرنے کی درخواست کریں۔\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"لفظ اجازت کی دوبارہ ترتیب کامیاب ھو گئی۔\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"براہ مھربانی مندرجہ ذیل صفحے پر جائیں اور نیا لفظ اجازت پسند کریں:\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"نام صارف، بھول جانے کی صورت میں:\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"ھماری سائٹ استعمال کرنے کے لئے شکریہ\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"%(site_name)s کی ٹیم\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"میرا لفظ اجازت دوبارہ مرتب کریں\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"تمام تاریخیں\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"(None)\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"%s منتخب کریں\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"تبدیل کرنے کے لئے %s منتخب کریں\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/ur/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Mansoorulhaq Mansoor <mansoorulhaq1986@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-03-08 10:42+0000\\n\"\n\"Last-Translator: Mansoorulhaq Mansoor <mansoorulhaq1986@gmail.com>\\n\"\n\"Language-Team: Urdu (http://www.transifex.com/projects/p/django/language/\"\n\"ur/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ur\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"دستیاب %s\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"چھانٹیں\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"سب منتخب کریں\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"خارج کریں\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"منتخب شدہ %s\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"%(cnt)s میں سے %(sel)s منتخب کیا گیا\"\nmsgstr[1] \"%(cnt)s میں سے %(sel)s منتخب کیے گئے\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\"آپ کے پاس ذاتی قابل تدوین خانوں میں غیر محفوظ تبدیلیاں موجود ھیں۔ اگر آپ \"\n\"کوئی کاروائی کریں گے تو آپ کی غیر محفوظ تبدیلیاں ضائع ھو جائیں گی۔\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\"آپ نے ایک کاروائی منتخب کی ھے لیکن ابھی تک آپ نے ذاتی خانوں میں اپنی \"\n\"تبدیلیاں محفوظ نہیں کی ہیں براہ مھربانی محفوط کرنے کے لئے OK پر کلک کریں۔ آپ \"\n\"کاوائی دوبارہ چلانے کی ضرورت ھوگی۔\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\"آپ نے ایک کاروائی منتخب کی ھے، اور آپ نے ذاتی خانوں میں کوئی تبدیلی نہیں کی \"\n\"غالباً آپ 'جاؤ' بٹن تلاش کر رھے ھیں بجائے 'مخفوظ کریں' بٹن کے۔\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"جنوری فروری مارچ اپریل مئی جون جولائی اگست ستمبر اکتوبر نومبر دسمبر\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"ا س م ب ج جمعہ ھ\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"دکھائیں\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"چھپائیں\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"اب\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"گھڑی\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"وقت منتخب کریں\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"نصف رات\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"6 ص\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"دوپھر\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"منسوخ کریں\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"آج\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"تقویم\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"گزشتہ کل\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"آئندہ کل\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/vi/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Dimitris Glezos <glezos@indifex.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Tran  <hongdiepkien@gmail.com>, 2011.\n# Tran Van <vantxm@yahoo.co.uk>, 2011, 2012.\n# Vuong Nguyen <autalpha@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:52+0000\\n\"\n\"Last-Translator: Ramiro Morales <cramm0@gmail.com>\\n\"\n\"Language-Team: Vietnamese (http://www.transifex.com/projects/p/django/\"\n\"language/vi/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: vi\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"Đã xóa thành công %(count)d %(items)s .\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"Không thể xóa %(name)s\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"Bạn có chắc chắn không?\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"Xóa các %(verbose_name_plural)s đã chọn\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"Tất cả\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"Có\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"Không\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"Chưa xác định\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"Bất kì ngày nào\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"Hôm nay\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"7 ngày trước\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"Tháng này\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"Năm nay\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"Hãy đăng nhập lại vì giao dịch của bạn đã hết hiệu lực\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"Hoạt động:\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"Thời gian tác động\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"Mã đối tượng\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"đối tượng repr\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"hiệu hành động\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"thay đổi tin nhắn\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"đăng nhập\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"mục đăng nhập\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"Đối tượng \\\"%(object)s.\\\" đã được xoá.\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"Không\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"%s đã được thay đổi.\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"và\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"%(name)s \\\"%(object)s\\\" đã được thêm vào.\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"%(list)s for %(name)s \\\"%(object)s\\\" đã được thay đổi.\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"%(name)s \\\"%(object)s\\\" đã bị xóa.\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"Không có trường nào thay đổi\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"\"\n\"%(name)s \\\"%(obj)s\\\" đã được thêm vào thành công. Bạn có thể sửa lại dưới \"\n\"đây.\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" được thêm vào thành công.\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" đã được thay đổi thành công.\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"\"\n\"Mục tiêu phải được chọn mới có thể thực hiện hành động trên chúng. Không có \"\n\"mục tiêu nào đã được thay đổi.\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"Không có hoạt động nào được lựa chọn.\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"Thêm %s\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \" đối tượng %(name)s  với khóa chính %(key)r không tồn tại.\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"Thay đổi %s\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"Cơ sở dữ liệu bị lỗi\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \" %(count)s  %(name)s đã được thay đổi thành công.\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"Tất cả %(total_count)s đã được chọn\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"0 của %(cnt)s được chọn\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" đã được xóa thành công.\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"Lịch sử thay đổi: %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"Đăng nhập\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"Site quản trị hệ thống.\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"%s quản trị\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"Ngày:\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"Giờ:\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"Tìm\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"Thêm vào\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"Không tìm thấy trang nào\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"Xin lỗi bạn! Trang mà bạn yêu cầu không tìm thấy.\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"Trang chủ\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"Lỗi máy chủ\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"Lỗi máy chủ (500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"Lỗi máy chủ <em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"Bắt đầu hành động lựa chọn\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"Đi đến\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"Click vào đây để lựa chọn các đối tượng trên tất cả các trang\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"Hãy chọn tất cả %(total_count)s %(module_name)s\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"Xóa lựa chọn\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"Chào mừng bạn,\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"Tài liệu\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"Thay đổi mật khẩu\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"Thoát\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"Trang web admin Django\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"Trang quản trị cho Django\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"Thêm vào\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"Bản ghi nhớ\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"Xem trên trang web\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"Hãy sửa lỗi sai dưới đây\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"Thêm vào %(name)s\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"Bộ lọc\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"Sắp xếp theo:%(priority_number)s\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"Xóa\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"Xóa %(object_name)s '%(escaped_object)s' sẽ làm mất những dữ liệu có liên \"\n\"quan. Tài khoản của bạn không được cấp quyển xóa những dữ liệu đi kèm theo.\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\"Xóa các %(object_name)s  ' %(escaped_object)s ' sẽ bắt buộc xóa các đối \"\n\"tượng được bảo vệ sau đây:\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\"Bạn có chắc là muốn xóa %(object_name)s \\\"%(escaped_object)s\\\"?Tất cả những \"\n\"dữ liệu đi kèm dưới đây cũng sẽ bị mất:\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"Có, tôi chắc chắn.\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"Xóa nhiều đối tượng\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\"Xóa các %(objects_name)s sẽ bắt buộc xóa các đối tượng liên quan, nhưng tài \"\n\"khoản của bạn không có quyền xóa các loại đối tượng sau đây:\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"\"\n\"Xóa các %(objects_name)s sẽ bắt buộc xóa các đối tượng đã được bảo vệ sau \"\n\"đây:\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\"Bạn chắc chắn muốn xóa những lựa chọn %(objects_name)s? Tất cả những đối \"\n\"tượng sau và những đối tượng liên quan sẽ được xóa:\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \"Bởi %(filter_title)s \"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"Thay đổi\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"Bạn không được cấp quyền chỉnh sửa bất cứ cái gì.\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"Các hoạt động gần đây\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"Hoạt động của tôi\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"Không có sẵn\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"Không biết nội dung\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"Một vài lỗi với cơ sở dữ liệu cài đặt của bạn. Hãy chắc chắn bảng biểu dữ \"\n\"liệu được tạo phù hợp và dữ liệu có thể được đọc bởi những người sử dụng phù \"\n\"hợp.\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"Mật khẩu:\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"Bạn quên mật khẩu hoặc tài khoản?\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"Ngày/giờ\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"Người dùng\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"Hành động\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"\"\n\"Đối tượng này không có một lịch sử thay đổi. Nó có lẽ đã không được thêm vào \"\n\"qua trang web admin.\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"Hiện tất cả\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"Lưu lại\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"Tìm kiếm\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"%(counter)s kết quả\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"tổng số %(full_result_count)s\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"Lưu mới\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"Lưu và thêm mới\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"Lưu và tiếp tục chỉnh sửa\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"\"\n\"Đầu tiên, điền tên đăng nhập và mật khẩu. Sau đó bạn mới có thể chỉnh sửa \"\n\"nhiều hơn lựa chọn của người dùng.\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"Điền tên đăng nhập và mật khẩu.\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"Hãy nhập mật khẩu mới cho người sử dụng <strong>%(username)s</strong>.\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"Mật khẩu\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"Nhập lại mật khẩu\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Nhập dãy mật mã trên để xác minh lại\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"Gỡ bỏ\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"Thêm một %(verbose_name)s \"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"Bạn muốn xóa?\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"Cảm ơn bạn đã dành thời gian với website này\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"Đăng nhập lại\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"Thay đổi mật khẩu\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"Mật khẩu được thay đổi thành công\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"Mật khẩu của bạn đã được thay đổi\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"Hãy nhập lại mật khẩu cũ và sau đó nhập mật khẩu mới hai lần để chúng tôi có \"\n\"thể kiểm tra lại xem bạn đã gõ chính xác hay chưa.\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"Mật khẩu cũ\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"Mật khẩu mới\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"Thay đổi mật khẩu\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"Lập lại mật khẩu\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"Hoàn thành việc lập lại mật khẩu\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"Mật khẩu của bạn đã được lập lại.  Bạn hãy thử đăng nhập.\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"Xác nhận việc lập lại mật khẩu\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"Nhập mật khẩu mới\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"\"\n\"Hãy nhập mật khẩu mới hai lần để chúng tôi có thể kiểm tra xem bạn đã gõ \"\n\"chính xác chưa\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"Mật khẩu mới\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"Nhập lại mật khẩu:\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"Lập lại mật khẩu không thành công\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"\"\n\"Liên kết đặt lại mật khẩu không hợp lệ, có thể vì nó đã được sử dụng. Xin \"\n\"vui lòng yêu cầu đặt lại mật khẩu mới.\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"Lấy lại mật khẩu thành công\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"Hãy vào đường link dưới đây và chọn một mật khẩu mới\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"Tên đăng nhập của bạn, trường hợp bạn quên nó:\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"Cảm ơn bạn đã sử dụng website của chúng tôi!\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"Đội của %(site_name)s\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"Làm lại mật khẩu\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"Tất cả các ngày\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"(Không)\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"Chọn %s\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"Chọn %s để thay đổi\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/vi/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Tran  <hongdiepkien@gmail.com>, 2011.\n# Vuong Nguyen <autalpha@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-03-08 10:42+0000\\n\"\n\"Last-Translator: Vuong Nguyen <autalpha@gmail.com>\\n\"\n\"Language-Team: Vietnamese (http://www.transifex.com/projects/p/django/\"\n\"language/vi/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: vi\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"Có sẵn %s\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"Lọc\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"Chọn tất cả\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"Xóa\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"Chọn %s\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \" %(sel)s  của %(cnt)s được chọn\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\"Bạn chưa lưu những trường đã chỉnh sửa. Nếu bạn chọn hành động này, những \"\n\"chỉnh sửa chưa được lưu sẽ bị mất.\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\"Bạn đã lựa chọn một hành động, nhưng bạn không lưu thay đổi của bạn đến các \"\n\"lĩnh vực cá nhân được nêu ra. Xin vui lòng click OK để lưu lại. Bạn sẽ cần \"\n\"phải chạy lại các hành động.\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\"Bạn đã lựa chọn một hành động, và bạn đã không thực hiện bất kỳ thay đổi nào \"\n\"trên các trường. Có lẽ bạn đang tìm kiếm nút bấm Go thay vì nút bấm Save.\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"\"\n\"Tháng một Tháng hai Tháng ba Tháng tư Tháng năm Tháng sáu Tháng bảy Tháng \"\n\"tám Tháng chín Tháng mười Tháng mười một Tháng mười hai\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"S M T W T F S\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"Hiện ra\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"Dấu đi\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"Bây giờ\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"Đồng hồ\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"Chọn giờ\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"Nửa đêm\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"6 giờ sáng\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"Buổi trưa\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"Hủy bỏ\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"Hôm nay\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"Lịch\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"Hôm qua\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"Ngày mai\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/zh_CN/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Lele Long <schemacs@gmail.com>, 2011.\n# slene <vslene@gmail.com>, 2011.\n# Ziang Song <songziang@gmail.com>, 2012.\n# 磊 施 <leiarix@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:52+0000\\n\"\n\"Last-Translator: 磊 施 <leiarix@gmail.com>\\n\"\n\"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/django/\"\n\"language/zh_CN/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: zh_CN\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"成功删除了 %(count)d 个 %(items)s\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"无法删除 %(name)s\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"你确定吗？\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"删除所选的 %(verbose_name_plural)s\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"全部\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"是\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"否\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"未知\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"任意日期\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"今天\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"过去7天\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"本月\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"今年\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"请重新登录，因为你的会话已经过期。\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"动作\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"动作时间\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"对象id\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"对象表示\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"动作标志\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"修改消息\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"日志记录\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"日志记录\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"已经添加了 \\\"%(object)s\\\".\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"修改了 \\\"%(object)s\\\" - %(changes)s\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"删除了 \\\"%(object)s.\\\"\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"LogEntry对象\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"无\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"已修改 %s 。\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"和\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"已添加 %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"已变更 %(list)s for %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"已删除 %(name)s \\\"%(object)s\\\".\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"没有字段被修改。\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" 添加成功。你可以在下面再次编辑它。\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\" %(name)s \\\"%(obj)s\\\" 已经成功添加。你可以在下面添加另外的 %(name)s  。\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" 添加成功。\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \" %(name)s \\\"%(obj)s\\\" 已经成功进行变更。你可以在下面再次编辑它。\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"\"\n\" %(name)s \\\"%(obj)s\\\" 已经成功进行变更。你可以在下面添加其它的 %(name)s。\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" 修改成功。\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"条目必须选中以对其进行操作。没有任何条目被更改。\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"未选择动作\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"增加 %s\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"具有主键 %(key)r 的对象 %(name)s 不存在。\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"修改 %s\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"数据库错误\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"总共 %(count)s 个 %(name)s 变更成功。\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"选中了 %(total_count)s 个\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"%(cnt)s 个中 0 个被选\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" 删除成功。\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"变更历史： %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"登录\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"站点管理\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"%s 管理\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"日期：\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"时间：\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"查询\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"添加另一个\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"当前：\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"更改：\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"页面没有找到\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"很报歉，请求页面无法找到。\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"首页\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"服务器错误\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"服务器错误(500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"服务器错误 <em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\"有一个错误。已经通过电子邮件通知网站管理员，不久以后应该可以修复。谢谢你的参\"\n\"与。\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"运行选中的动作\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"执行\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"点击此处选择所有页面中包含的对象。\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"选中所有的 %(total_count)s 个 %(module_name)s\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"清除选中\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"欢迎，\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"文档\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"修改密码\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"注销\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"Django 站点管理员\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"Django 管理\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"增加\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"历史\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"在站点上查看\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"请修正下面的错误。\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"增加 %(name)s\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"过滤器\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"删除排序\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"排序优先级: %(priority_number)s\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"正逆序切换\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"删除\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"删除 %(object_name)s  '%(escaped_object)s' 会导致删除相关的对象，但你的帐号无\"\n\"权删除下列类型的对象：\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\"要删除 %(object_name)s '%(escaped_object)s', 将要求删除以下受保护的相关对象:\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\"你确认想要删除 %(object_name)s \\\"%(escaped_object)s\\\"？ 下列所有相关的项目都\"\n\"将被删除：\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"是的，我确定\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"删除多个对象\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\"要删除所选的 %(objects_name)s 结果会删除相关对象, 但你的账户没有权限删除这类\"\n\"对象:\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"要删除所选的 %(objects_name)s, 将要求删除以下受保护的相关对象:\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\"请确认要删除选中的 %(objects_name)s 吗？以下所有对象和余它们相关的条目将都会\"\n\"被删除：\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \" 以 %(filter_title)s\"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"在应用程序 %(name)s 中的模型\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"修改\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"你无权修改任何东西。\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"最近动作\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"我的动作\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"无可用的\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"未知内容\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"你的数据库安装有误。确保已经创建了相应的数据库表，并确保数据库可被相关的用户\"\n\"读取。\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"密码：\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"忘记了您的密码或用户名？\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"日期/时间\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"用户\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"动作\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"该对象没有变更历史记录。可能从未通过这个管理站点添加。\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"显示全部\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"保存\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"搜索\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"%(counter)s 条结果。\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"总共 %(full_result_count)s\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"保存为新的\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"保存并增加另一个\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"保存并继续编辑\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"首先，输入一个用户名和密码。然后，你就可以编辑更多的用户选项。\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"输入用户名和\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"为用户 <strong>%(username)s</strong> 输入一个新的密码。\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"密码\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"密码(重复)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"为了校验，输入与上面相同的密码。\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"删除\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"添加另一个 %(verbose_name)s\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"删除？\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"感谢您今天在本站花费了一些宝贵时间。\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"重新登录\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"密码修改\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"密码修改成功\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"你的密码已修改。\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"请输入你的旧密码，为了安全起见，接着要输入两遍新密码，以便我们校验你输入的是\"\n\"否正确。\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"旧密码\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"新密码\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"修改我的密码\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"密码重设\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"完成密码重设\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"你的口令己经设置。现在你可以继续进行登录。\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"密码重设确认\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"输入新密码\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"请输入两遍新密码，以便我们校验你输入的是否正确。\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"新密码：\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"确认密码：\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"密码重设失败\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"密码重置链接无效，可能是因为它已使用。可以请求一次新的密码重置。\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"密码重设成功\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"\"\n\"我们已经使用你提供的电子邮件地址发送了电子邮件，以便你设置密码。不久之后你应\"\n\"当可以收到这封邮件。\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"你收到这封邮件是因为你请求重置你在网站 %(site_name)s上的用户账户密码。\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"请访问该页面并选择一个新密码：\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"你的用户名，如果已忘记的话：\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"感谢使用我们的站点！\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"%(site_name)s 团队\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\"忘记你的密码了？在下面输入你的电子邮件地址，我们将发送一封设置新密码的邮件给\"\n\"你。\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"电子邮件地址：\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"重设我的密码\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"所有日期\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"(None)\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"选择 %s\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"选择 %s 来修改\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/zh_CN/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Kevin Shi <leiarix@gmail.com>, 2012.\n# Lele Long <schemacs@gmail.com>, 2011.\n# slene <vslene@gmail.com>, 2011.\n# Ziang Song <songziang@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-07-20 01:51+0000\\n\"\n\"Last-Translator: 磊 施 <leiarix@gmail.com>\\n\"\n\"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/django/\"\n\"language/zh_CN/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: zh_CN\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"可用 %s\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"这是可用的%s列表。你可以在选择框下面进行选择，然后点击两选框之间的“选择”箭\"\n\"头。\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"在此框中键入以过滤可用的%s列表\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"过滤\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"全选\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"点击选择全部%s。\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"选择\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"删除\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"选中的 %s\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"这是已选%s的列表。你可以\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"删除全部\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"删除所有选择的%s。\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"选中了 %(cnt)s 个中的 %(sel)s 个\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"\"\n\"你尚未保存一个可编辑栏位的变更. 如果你进行别的动作, 未保存的变更将会丢失.\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\"你已选则执行一个动作, 但有一个可编辑栏位的变更尚未保存. 请点选确定进行保存. \"\n\"再重新执行该动作.\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\"你已选则执行一个动作, 但可编辑栏位沒有任何改变. 你应该尝试 '去' 按钮, 而不是 \"\n\"'保存' 按钮.\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"一月 二月 三月 四月 五月 六月 七月 八月 九月 十月 十一月 十二月\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"日 一 二 三 四 五 六\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"显示\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"隐藏\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"现在\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"时钟\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"选择一个时间\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"午夜\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"上午6点\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"正午\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"取消\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"今天\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"日历\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"昨天\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"明天\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/zh_TW/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <ilay@ilay.tw>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# ming hsien tzang <tzangms@gmail.com>, 2011.\n# tcc <tcchou@tcchou.org>, 2011.\n#   <yyc1217@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2013-01-01 16:10+0100\\n\"\n\"PO-Revision-Date: 2013-01-02 08:52+0000\\n\"\n\"Last-Translator: yyc1217 <yyc1217@gmail.com>\\n\"\n\"Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/django/\"\n\"language/zh_TW/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: zh_TW\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: actions.py:48\n#, python-format\nmsgid \"Successfully deleted %(count)d %(items)s.\"\nmsgstr \"成功的刪除了 %(count)d 個 %(items)s.\"\n\n#: actions.py:60 options.py:1347\n#, python-format\nmsgid \"Cannot delete %(name)s\"\nmsgstr \"無法刪除 %(name)s\"\n\n#: actions.py:62 options.py:1349\nmsgid \"Are you sure?\"\nmsgstr \"你確定嗎？\"\n\n#: actions.py:83\n#, python-format\nmsgid \"Delete selected %(verbose_name_plural)s\"\nmsgstr \"刪除所選的 %(verbose_name_plural)s\"\n\n#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380\nmsgid \"All\"\nmsgstr \"全部\"\n\n#: filters.py:238\nmsgid \"Yes\"\nmsgstr \"是\"\n\n#: filters.py:239\nmsgid \"No\"\nmsgstr \"否\"\n\n#: filters.py:253\nmsgid \"Unknown\"\nmsgstr \"未知\"\n\n#: filters.py:308\nmsgid \"Any date\"\nmsgstr \"任何日期\"\n\n#: filters.py:309\nmsgid \"Today\"\nmsgstr \"今天\"\n\n#: filters.py:313\nmsgid \"Past 7 days\"\nmsgstr \"過去 7 天\"\n\n#: filters.py:317\nmsgid \"This month\"\nmsgstr \"本月\"\n\n#: filters.py:321\nmsgid \"This year\"\nmsgstr \"今年\"\n\n#: forms.py:9\n#, python-format\nmsgid \"\"\n\"Please enter the correct %(username)s and password for a staff account. Note \"\n\"that both fields may be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:19\nmsgid \"Please log in again, because your session has expired.\"\nmsgstr \"請重新登入, 因為你的 session 已過期。\"\n\n#: helpers.py:23\nmsgid \"Action:\"\nmsgstr \"動作:\"\n\n#: models.py:24\nmsgid \"action time\"\nmsgstr \"動作時間\"\n\n#: models.py:27\nmsgid \"object id\"\nmsgstr \"物件 id\"\n\n#: models.py:28\nmsgid \"object repr\"\nmsgstr \"物件 repr\"\n\n#: models.py:29\nmsgid \"action flag\"\nmsgstr \"動作旗標\"\n\n#: models.py:30\nmsgid \"change message\"\nmsgstr \"變更訊息\"\n\n#: models.py:35\nmsgid \"log entry\"\nmsgstr \"紀錄項目\"\n\n#: models.py:36\nmsgid \"log entries\"\nmsgstr \"紀錄項目\"\n\n#: models.py:45\n#, python-format\nmsgid \"Added \\\"%(object)s\\\".\"\nmsgstr \"\\\"%(object)s\\\" 已新增。\"\n\n#: models.py:47\n#, python-format\nmsgid \"Changed \\\"%(object)s\\\" - %(changes)s\"\nmsgstr \"\\\"%(object)s\\\" - %(changes)s 已變更。\"\n\n#: models.py:52\n#, python-format\nmsgid \"Deleted \\\"%(object)s.\\\"\"\nmsgstr \"\\\"%(object)s\\\" 已刪除。\"\n\n#: models.py:54\nmsgid \"LogEntry Object\"\nmsgstr \"紀錄項目\"\n\n#: options.py:156 options.py:172\nmsgid \"None\"\nmsgstr \"None\"\n\n#: options.py:684\n#, python-format\nmsgid \"Changed %s.\"\nmsgstr \"%s 已變更。\"\n\n#: options.py:684 options.py:694\nmsgid \"and\"\nmsgstr \"和\"\n\n#: options.py:689\n#, python-format\nmsgid \"Added %(name)s \\\"%(object)s\\\".\"\nmsgstr \"%(name)s \\\"%(object)s\\\" 以新增。\"\n\n#: options.py:693\n#, python-format\nmsgid \"Changed %(list)s for %(name)s \\\"%(object)s\\\".\"\nmsgstr \"%(name)s \\\"%(object)s\\\" 的 %(list)s 已變更。\"\n\n#: options.py:698\n#, python-format\nmsgid \"Deleted %(name)s \\\"%(object)s\\\".\"\nmsgstr \"%(name)s \\\"%(object)s\\\" 已刪除。\"\n\n#: options.py:702\nmsgid \"No fields changed.\"\nmsgstr \"沒有欄位被變更。\"\n\n#: options.py:807 options.py:860\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may edit it again below.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" 新增成功。你可以在下面再次編輯它。\"\n\n#: options.py:835\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was added successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" 新增成功。你可以在下方加入其他 %(name)s 。\"\n\n#: options.py:839\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was added successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" 已成功新增。\"\n\n#: options.py:853\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may edit it again \"\n\"below.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" 變更成功。你可以在下方再次編輯。\"\n\n#: options.py:867\n#, python-format\nmsgid \"\"\n\"The %(name)s \\\"%(obj)s\\\" was changed successfully. You may add another \"\n\"%(name)s below.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" 變更成功。你可以在下方加入其他 %(name)s 。\"\n\n#: options.py:873\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was changed successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" 已成功變更。\"\n\n#: options.py:951 options.py:1211\nmsgid \"\"\n\"Items must be selected in order to perform actions on them. No items have \"\n\"been changed.\"\nmsgstr \"必須要有項目被選到才能對它們進行動作。沒有項目變更。\"\n\n#: options.py:970\nmsgid \"No action selected.\"\nmsgstr \"沒有動作被選。\"\n\n#: options.py:1050\n#, python-format\nmsgid \"Add %s\"\nmsgstr \"新增 %s\"\n\n#: options.py:1074 options.py:1319\n#, python-format\nmsgid \"%(name)s object with primary key %(key)r does not exist.\"\nmsgstr \"主鍵 %(key)r 的 %(name)s 物件不存在。\"\n\n#: options.py:1140\n#, python-format\nmsgid \"Change %s\"\nmsgstr \"變更 %s\"\n\n#: options.py:1190\nmsgid \"Database error\"\nmsgstr \"資料庫錯誤\"\n\n#: options.py:1253\n#, python-format\nmsgid \"%(count)s %(name)s was changed successfully.\"\nmsgid_plural \"%(count)s %(name)s were changed successfully.\"\nmsgstr[0] \"共 %(count)s %(name)s 已變更成功。\"\n\n#: options.py:1280\n#, python-format\nmsgid \"%(total_count)s selected\"\nmsgid_plural \"All %(total_count)s selected\"\nmsgstr[0] \"全部 %(total_count)s 個被選\"\n\n#: options.py:1285\n#, python-format\nmsgid \"0 of %(cnt)s selected\"\nmsgstr \"%(cnt)s 中 0 個被選\"\n\n#: options.py:1335\n#, python-format\nmsgid \"The %(name)s \\\"%(obj)s\\\" was deleted successfully.\"\nmsgstr \"%(name)s \\\"%(obj)s\\\" 已成功刪除。\"\n\n#: options.py:1382\n#, python-format\nmsgid \"Change history: %s\"\nmsgstr \"變更歷史: %s\"\n\n#: sites.py:322 tests.py:57 templates/admin/login.html:48\n#: templates/registration/password_reset_complete.html:19\n#: views/decorators.py:24\nmsgid \"Log in\"\nmsgstr \"登入\"\n\n#: sites.py:388\nmsgid \"Site administration\"\nmsgstr \"網站管理\"\n\n#: sites.py:440\n#, python-format\nmsgid \"%s administration\"\nmsgstr \"%s 管理\"\n\n#: widgets.py:90\nmsgid \"Date:\"\nmsgstr \"日期\"\n\n#: widgets.py:91\nmsgid \"Time:\"\nmsgstr \"時間\"\n\n#: widgets.py:165\nmsgid \"Lookup\"\nmsgstr \"查詢\"\n\n#: widgets.py:271\nmsgid \"Add Another\"\nmsgstr \"新增其它\"\n\n#: widgets.py:316\nmsgid \"Currently:\"\nmsgstr \"目前：\"\n\n#: widgets.py:317\nmsgid \"Change:\"\nmsgstr \"變動：\"\n\n#: templates/admin/404.html:4 templates/admin/404.html.py:8\nmsgid \"Page not found\"\nmsgstr \"頁面沒有找到\"\n\n#: templates/admin/404.html:10\nmsgid \"We're sorry, but the requested page could not be found.\"\nmsgstr \"很抱歉，請求頁面無法找到。\"\n\n#: templates/admin/500.html:6 templates/admin/app_index.html:7\n#: templates/admin/base.html:47 templates/admin/change_form.html:19\n#: templates/admin/change_list.html:41\n#: templates/admin/delete_confirmation.html:7\n#: templates/admin/delete_selected_confirmation.html:7\n#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7\n#: templates/admin/auth/user/change_password.html:13\n#: templates/registration/logged_out.html:4\n#: templates/registration/password_change_done.html:6\n#: templates/registration/password_change_form.html:7\n#: templates/registration/password_reset_complete.html:6\n#: templates/registration/password_reset_confirm.html:6\n#: templates/registration/password_reset_done.html:6\n#: templates/registration/password_reset_form.html:6\nmsgid \"Home\"\nmsgstr \"首頁\"\n\n#: templates/admin/500.html:7\nmsgid \"Server error\"\nmsgstr \"伺服器錯誤\"\n\n#: templates/admin/500.html:11\nmsgid \"Server error (500)\"\nmsgstr \"伺服器錯誤 (500)\"\n\n#: templates/admin/500.html:14\nmsgid \"Server Error <em>(500)</em>\"\nmsgstr \"伺服器錯誤 <em>(500)</em>\"\n\n#: templates/admin/500.html:15\nmsgid \"\"\n\"There's been an error. It's been reported to the site administrators via \"\n\"email and should be fixed shortly. Thanks for your patience.\"\nmsgstr \"\"\n\"存在一個錯誤。已透過電子郵件回報給網站管理員，並且應該很快就會被修正。謝謝你\"\n\"的關心。\"\n\n#: templates/admin/actions.html:4\nmsgid \"Run the selected action\"\nmsgstr \"執行選擇的動作\"\n\n#: templates/admin/actions.html:4\nmsgid \"Go\"\nmsgstr \"去\"\n\n#: templates/admin/actions.html:11\nmsgid \"Click here to select the objects across all pages\"\nmsgstr \"點選這裡可選取全部頁面的物件\"\n\n#: templates/admin/actions.html:11\n#, python-format\nmsgid \"Select all %(total_count)s %(module_name)s\"\nmsgstr \"選擇全部 %(total_count)s %(module_name)s\"\n\n#: templates/admin/actions.html:13\nmsgid \"Clear selection\"\nmsgstr \"清除選擇\"\n\n#: templates/admin/app_index.html:10 templates/admin/index.html:21\n#, python-format\nmsgid \"%(name)s\"\nmsgstr \"%(name)s\"\n\n#: templates/admin/base.html:28\nmsgid \"Welcome,\"\nmsgstr \"歡迎，\"\n\n#: templates/admin/base.html:33\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Documentation\"\nmsgstr \"文件\"\n\n#: templates/admin/base.html:36\n#: templates/admin/auth/user/change_password.html:17\n#: templates/admin/auth/user/change_password.html:51\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Change password\"\nmsgstr \"變更密碼\"\n\n#: templates/admin/base.html:38\n#: templates/registration/password_change_done.html:3\n#: templates/registration/password_change_form.html:4\nmsgid \"Log out\"\nmsgstr \"登出\"\n\n#: templates/admin/base_site.html:4\nmsgid \"Django site admin\"\nmsgstr \"Django 網站管理\"\n\n#: templates/admin/base_site.html:7\nmsgid \"Django administration\"\nmsgstr \"Django 管理\"\n\n#: templates/admin/change_form.html:22 templates/admin/index.html:33\nmsgid \"Add\"\nmsgstr \"新增\"\n\n#: templates/admin/change_form.html:32 templates/admin/object_history.html:11\nmsgid \"History\"\nmsgstr \"歷史\"\n\n#: templates/admin/change_form.html:33\n#: templates/admin/edit_inline/stacked.html:9\n#: templates/admin/edit_inline/tabular.html:30\nmsgid \"View on site\"\nmsgstr \"在網站上檢視\"\n\n#: templates/admin/change_form.html:44 templates/admin/change_list.html:67\n#: templates/admin/login.html:17\n#: templates/admin/auth/user/change_password.html:27\n#: templates/registration/password_change_form.html:20\nmsgid \"Please correct the error below.\"\nmsgid_plural \"Please correct the errors below.\"\nmsgstr[0] \"請更正下面的錯誤。\"\n\n#: templates/admin/change_list.html:58\n#, python-format\nmsgid \"Add %(name)s\"\nmsgstr \"新增 %(name)s\"\n\n#: templates/admin/change_list.html:78\nmsgid \"Filter\"\nmsgstr \"過濾器\"\n\n#: templates/admin/change_list_results.html:17\nmsgid \"Remove from sorting\"\nmsgstr \"從排序中移除\"\n\n#: templates/admin/change_list_results.html:18\n#, python-format\nmsgid \"Sorting priority: %(priority_number)s\"\nmsgstr \"優先排序：%(priority_number)s\"\n\n#: templates/admin/change_list_results.html:19\nmsgid \"Toggle sorting\"\nmsgstr \"切換排序\"\n\n#: templates/admin/delete_confirmation.html:11\n#: templates/admin/submit_line.html:4\nmsgid \"Delete\"\nmsgstr \"刪除\"\n\n#: templates/admin/delete_confirmation.html:18\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting \"\n\"related objects, but your account doesn't have permission to delete the \"\n\"following types of objects:\"\nmsgstr \"\"\n\"刪除 %(object_name)s '%(escaped_object)s' 會把相關的物件也刪除，不過你的帳號\"\n\"並沒有刪除以下型態物件的權限:\"\n\n#: templates/admin/delete_confirmation.html:26\n#, python-format\nmsgid \"\"\n\"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the \"\n\"following protected related objects:\"\nmsgstr \"\"\n\"要刪除 %(object_name)s '%(escaped_object)s', 將要求刪除下面受保護的相關物件:\"\n\n#: templates/admin/delete_confirmation.html:34\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the %(object_name)s \\\"%(escaped_object)s\\\"? \"\n\"All of the following related items will be deleted:\"\nmsgstr \"\"\n\"你確定想要刪除 %(object_name)s \\\"%(escaped_object)s\\\"？以下所有的相關項目都會\"\n\"被刪除:\"\n\n#: templates/admin/delete_confirmation.html:39\n#: templates/admin/delete_selected_confirmation.html:44\nmsgid \"Yes, I'm sure\"\nmsgstr \"是的，我確定\"\n\n#: templates/admin/delete_selected_confirmation.html:10\nmsgid \"Delete multiple objects\"\nmsgstr \"刪除多個物件\"\n\n#: templates/admin/delete_selected_confirmation.html:17\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would result in deleting related \"\n\"objects, but your account doesn't have permission to delete the following \"\n\"types of objects:\"\nmsgstr \"\"\n\"要刪除所選的 %(objects_name)s, 結果會刪除相關物件, 但你的帳號無權刪除下面物件\"\n\"型態:\"\n\n#: templates/admin/delete_selected_confirmation.html:25\n#, python-format\nmsgid \"\"\n\"Deleting the selected %(objects_name)s would require deleting the following \"\n\"protected related objects:\"\nmsgstr \"要刪除所選的 %(objects_name)s, 將要求刪除下面受保護的相關物件:\"\n\n#: templates/admin/delete_selected_confirmation.html:33\n#, python-format\nmsgid \"\"\n\"Are you sure you want to delete the selected %(objects_name)s? All of the \"\n\"following objects and their related items will be deleted:\"\nmsgstr \"\"\n\"你是否確定要刪除已選的 %(objects_name)s? 下面全部物件及其相關項目都將被刪除:\"\n\n#: templates/admin/filter.html:2\n#, python-format\nmsgid \" By %(filter_title)s \"\nmsgstr \" 以 %(filter_title)s\"\n\n#: templates/admin/index.html:20\n#, python-format\nmsgid \"Models in the %(name)s application\"\nmsgstr \"%(name)s 應用程式中的Model\"\n\n#: templates/admin/index.html:39\nmsgid \"Change\"\nmsgstr \"變更\"\n\n#: templates/admin/index.html:49\nmsgid \"You don't have permission to edit anything.\"\nmsgstr \"你沒有編輯任何東西的權限。\"\n\n#: templates/admin/index.html:57\nmsgid \"Recent Actions\"\nmsgstr \"最近的動作\"\n\n#: templates/admin/index.html:58\nmsgid \"My Actions\"\nmsgstr \"我的動作\"\n\n#: templates/admin/index.html:62\nmsgid \"None available\"\nmsgstr \"無可用的\"\n\n#: templates/admin/index.html:76\nmsgid \"Unknown content\"\nmsgstr \"未知內容\"\n\n#: templates/admin/invalid_setup.html:12\nmsgid \"\"\n\"Something's wrong with your database installation. Make sure the appropriate \"\n\"database tables have been created, and make sure the database is readable by \"\n\"the appropriate user.\"\nmsgstr \"\"\n\"你的資料庫安裝有錯誤。確定資料庫表格已經建立，並確定資料庫可被合適的使用者讀\"\n\"取。\"\n\n#: templates/admin/login.html:37\nmsgid \"Password:\"\nmsgstr \"密碼：\"\n\n#: templates/admin/login.html:44\nmsgid \"Forgotten your password or username?\"\nmsgstr \"忘了你的密碼或是使用者名稱？\"\n\n#: templates/admin/object_history.html:23\nmsgid \"Date/time\"\nmsgstr \"日期/時間\"\n\n#: templates/admin/object_history.html:24\nmsgid \"User\"\nmsgstr \"使用者\"\n\n#: templates/admin/object_history.html:25\nmsgid \"Action\"\nmsgstr \"動作\"\n\n#: templates/admin/object_history.html:39\nmsgid \"\"\n\"This object doesn't have a change history. It probably wasn't added via this \"\n\"admin site.\"\nmsgstr \"這個物件沒有變更的歷史。它可能不是透過這個管理網站新增的。\"\n\n#: templates/admin/pagination.html:10\nmsgid \"Show all\"\nmsgstr \"顯示全部\"\n\n#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3\nmsgid \"Save\"\nmsgstr \"儲存\"\n\n#: templates/admin/search_form.html:7\nmsgid \"Search\"\nmsgstr \"搜尋\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(counter)s result\"\nmsgid_plural \"%(counter)s results\"\nmsgstr[0] \"%(counter)s 結果\"\n\n#: templates/admin/search_form.html:9\n#, python-format\nmsgid \"%(full_result_count)s total\"\nmsgstr \"總共 %(full_result_count)s\"\n\n#: templates/admin/submit_line.html:5\nmsgid \"Save as new\"\nmsgstr \"儲存為新的\"\n\n#: templates/admin/submit_line.html:6\nmsgid \"Save and add another\"\nmsgstr \"儲存並新增另一個\"\n\n#: templates/admin/submit_line.html:7\nmsgid \"Save and continue editing\"\nmsgstr \"儲存並繼續編輯\"\n\n#: templates/admin/auth/user/add_form.html:6\nmsgid \"\"\n\"First, enter a username and password. Then, you'll be able to edit more user \"\n\"options.\"\nmsgstr \"首先，輸入一個使用者名稱和密碼。然後你可以編輯更多使用者選項。\"\n\n#: templates/admin/auth/user/add_form.html:8\nmsgid \"Enter a username and password.\"\nmsgstr \"輸入一個使用者名稱和密碼。\"\n\n#: templates/admin/auth/user/change_password.html:31\n#, python-format\nmsgid \"Enter a new password for the user <strong>%(username)s</strong>.\"\nmsgstr \"為使用者<strong>%(username)s</strong>輸入一個新的密碼。\"\n\n#: templates/admin/auth/user/change_password.html:38\nmsgid \"Password\"\nmsgstr \"密碼\"\n\n#: templates/admin/auth/user/change_password.html:44\n#: templates/registration/password_change_form.html:42\nmsgid \"Password (again)\"\nmsgstr \"密碼(重複)\"\n\n#: templates/admin/auth/user/change_password.html:45\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"為檢查用，請輸入與上面相同的密碼。\"\n\n#: templates/admin/edit_inline/stacked.html:26\n#: templates/admin/edit_inline/tabular.html:76\nmsgid \"Remove\"\nmsgstr \"移除\"\n\n#: templates/admin/edit_inline/stacked.html:27\n#: templates/admin/edit_inline/tabular.html:75\n#, python-format\nmsgid \"Add another %(verbose_name)s\"\nmsgstr \"新增其它 %(verbose_name)s\"\n\n#: templates/admin/edit_inline/tabular.html:17\nmsgid \"Delete?\"\nmsgstr \"刪除？\"\n\n#: templates/registration/logged_out.html:8\nmsgid \"Thanks for spending some quality time with the Web site today.\"\nmsgstr \"感謝你今天花了重要的時間停留在本網站。\"\n\n#: templates/registration/logged_out.html:10\nmsgid \"Log in again\"\nmsgstr \"重新登入\"\n\n#: templates/registration/password_change_done.html:7\n#: templates/registration/password_change_form.html:8\n#: templates/registration/password_change_form.html:12\n#: templates/registration/password_change_form.html:24\nmsgid \"Password change\"\nmsgstr \"密碼變更\"\n\n#: templates/registration/password_change_done.html:11\n#: templates/registration/password_change_done.html:15\nmsgid \"Password change successful\"\nmsgstr \"密碼成功地變更\"\n\n#: templates/registration/password_change_done.html:17\nmsgid \"Your password was changed.\"\nmsgstr \"你的密碼已變更。\"\n\n#: templates/registration/password_change_form.html:26\nmsgid \"\"\n\"Please enter your old password, for security's sake, and then enter your new \"\n\"password twice so we can verify you typed it in correctly.\"\nmsgstr \"\"\n\"為了安全上的考慮，請輸入你的舊密碼，再輸入新密碼兩次，讓我們核驗你已正確地輸\"\n\"入。\"\n\n#: templates/registration/password_change_form.html:32\nmsgid \"Old password\"\nmsgstr \"舊的密碼\"\n\n#: templates/registration/password_change_form.html:37\nmsgid \"New password\"\nmsgstr \"新的密碼\"\n\n#: templates/registration/password_change_form.html:48\n#: templates/registration/password_reset_confirm.html:26\nmsgid \"Change my password\"\nmsgstr \"變更我的密碼\"\n\n#: templates/registration/password_reset_complete.html:7\n#: templates/registration/password_reset_confirm.html:11\n#: templates/registration/password_reset_done.html:7\n#: templates/registration/password_reset_form.html:7\n#: templates/registration/password_reset_form.html:11\n#: templates/registration/password_reset_form.html:15\nmsgid \"Password reset\"\nmsgstr \"密碼重設\"\n\n#: templates/registration/password_reset_complete.html:11\n#: templates/registration/password_reset_complete.html:15\nmsgid \"Password reset complete\"\nmsgstr \"密碼重設成功\"\n\n#: templates/registration/password_reset_complete.html:17\nmsgid \"Your password has been set.  You may go ahead and log in now.\"\nmsgstr \"你的密碼已設置，現在可以繼續登入。\"\n\n#: templates/registration/password_reset_confirm.html:7\nmsgid \"Password reset confirmation\"\nmsgstr \"密碼重設確認\"\n\n#: templates/registration/password_reset_confirm.html:17\nmsgid \"Enter new password\"\nmsgstr \"輸入新的密碼\"\n\n#: templates/registration/password_reset_confirm.html:19\nmsgid \"\"\n\"Please enter your new password twice so we can verify you typed it in \"\n\"correctly.\"\nmsgstr \"請輸入你的新密碼兩次, 這樣我們才能檢查你的輸入是否正確。\"\n\n#: templates/registration/password_reset_confirm.html:23\nmsgid \"New password:\"\nmsgstr \"新密碼：\"\n\n#: templates/registration/password_reset_confirm.html:25\nmsgid \"Confirm password:\"\nmsgstr \"確認密碼：\"\n\n#: templates/registration/password_reset_confirm.html:31\nmsgid \"Password reset unsuccessful\"\nmsgstr \"密碼重設失敗\"\n\n#: templates/registration/password_reset_confirm.html:33\nmsgid \"\"\n\"The password reset link was invalid, possibly because it has already been \"\n\"used.  Please request a new password reset.\"\nmsgstr \"密碼重設連結無效，可能因為他已使用。請重新請求密碼重設。\"\n\n#: templates/registration/password_reset_done.html:11\n#: templates/registration/password_reset_done.html:15\nmsgid \"Password reset successful\"\nmsgstr \"密碼成功地重設\"\n\n#: templates/registration/password_reset_done.html:17\nmsgid \"\"\n\"We've emailed you instructions for setting your password to the email \"\n\"address you submitted. You should be receiving it shortly.\"\nmsgstr \"我們已經寄出設定密碼操作指示到你提供的電子郵件位址。請你儘快收取信件。\"\n\n#: templates/registration/password_reset_email.html:2\n#, python-format\nmsgid \"\"\n\"You're receiving this email because you requested a password reset for your \"\n\"user account at %(site_name)s.\"\nmsgstr \"這封電子郵件來自 %(site_name)s，因為你要求為帳號重新設定密碼。\"\n\n#: templates/registration/password_reset_email.html:4\nmsgid \"Please go to the following page and choose a new password:\"\nmsgstr \"請到該頁面選擇一個新的密碼：\"\n\n#: templates/registration/password_reset_email.html:8\nmsgid \"Your username, in case you've forgotten:\"\nmsgstr \"你的使用者名稱，萬一你已經忘記的話:\"\n\n#: templates/registration/password_reset_email.html:10\nmsgid \"Thanks for using our site!\"\nmsgstr \"感謝使用本網站！\"\n\n#: templates/registration/password_reset_email.html:12\n#, python-format\nmsgid \"The %(site_name)s team\"\nmsgstr \"%(site_name)s 團隊\"\n\n#: templates/registration/password_reset_form.html:17\nmsgid \"\"\n\"Forgotten your password? Enter your email address below, and we'll email \"\n\"instructions for setting a new one.\"\nmsgstr \"\"\n\"忘記你的密碼? 請在下面輸入你的電子郵件位址, 然後我們會寄出設定新密碼的操作指\"\n\"示。\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Email address:\"\nmsgstr \"電子信箱：\"\n\n#: templates/registration/password_reset_form.html:21\nmsgid \"Reset my password\"\nmsgstr \"重設我的密碼\"\n\n#: templatetags/admin_list.py:344\nmsgid \"All dates\"\nmsgstr \"所有日期\"\n\n#: views/main.py:33\nmsgid \"(None)\"\nmsgstr \"(無)\"\n\n#: views/main.py:76\n#, python-format\nmsgid \"Select %s\"\nmsgstr \"選擇 %s\"\n\n#: views/main.py:78\n#, python-format\nmsgid \"Select %s to change\"\nmsgstr \"選擇 %s 來變更\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/locale/zh_TW/LC_MESSAGES/djangojs.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <ilay@ilay.tw>, 2012.\n# tcc <tcchou@tcchou.org>, 2011.\n#   <yyc1217@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:35+0100\\n\"\n\"PO-Revision-Date: 2012-09-20 05:46+0000\\n\"\n\"Last-Translator: yyc1217 <yyc1217@gmail.com>\\n\"\n\"Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/django/\"\n\"language/zh_TW/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: zh_TW\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: static/admin/js/SelectFilter2.js:45\n#, c-format\nmsgid \"Available %s\"\nmsgstr \"可用 %s\"\n\n#: static/admin/js/SelectFilter2.js:46\n#, c-format\nmsgid \"\"\n\"This is the list of available %s. You may choose some by selecting them in \"\n\"the box below and then clicking the \\\"Choose\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"可用的 %s 列表。你可以在下方的方框內選擇後，點擊兩個方框中的\\\"選取\\\"箭頭以選\"\n\"取。\"\n\n#: static/admin/js/SelectFilter2.js:53\n#, c-format\nmsgid \"Type into this box to filter down the list of available %s.\"\nmsgstr \"輸入到這個方框以過濾可用的 %s 列表。\"\n\n#: static/admin/js/SelectFilter2.js:57\nmsgid \"Filter\"\nmsgstr \"過濾器\"\n\n#: static/admin/js/SelectFilter2.js:61\nmsgid \"Choose all\"\nmsgstr \"全部選擇\"\n\n#: static/admin/js/SelectFilter2.js:61\n#, c-format\nmsgid \"Click to choose all %s at once.\"\nmsgstr \"點擊以一次選取所有的 %s\"\n\n#: static/admin/js/SelectFilter2.js:67\nmsgid \"Choose\"\nmsgstr \"選取\"\n\n#: static/admin/js/SelectFilter2.js:69\nmsgid \"Remove\"\nmsgstr \"移除\"\n\n#: static/admin/js/SelectFilter2.js:75\n#, c-format\nmsgid \"Chosen %s\"\nmsgstr \"%s 被選\"\n\n#: static/admin/js/SelectFilter2.js:76\n#, c-format\nmsgid \"\"\n\"This is the list of chosen %s. You may remove some by selecting them in the \"\n\"box below and then clicking the \\\"Remove\\\" arrow between the two boxes.\"\nmsgstr \"\"\n\"選取的 %s 列表。你可以在下方的方框內選擇後，點擊兩個方框中的\\\"移除\\\"箭頭以移\"\n\"除。\"\n\n#: static/admin/js/SelectFilter2.js:80\nmsgid \"Remove all\"\nmsgstr \"全部移除\"\n\n#: static/admin/js/SelectFilter2.js:80\n#, c-format\nmsgid \"Click to remove all chosen %s at once.\"\nmsgstr \"點擊以一次移除所有選取的 %s\"\n\n#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1\nmsgid \"%(sel)s of %(cnt)s selected\"\nmsgid_plural \"%(sel)s of %(cnt)s selected\"\nmsgstr[0] \"%(cnt)s 中 %(sel)s 個被選\"\n\n#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5\nmsgid \"\"\n\"You have unsaved changes on individual editable fields. If you run an \"\n\"action, your unsaved changes will be lost.\"\nmsgstr \"你尚未儲存一個可編輯欄位的變更。如果你執行動作, 未儲存的變更將會遺失。\"\n\n#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, but you haven't saved your changes to \"\n\"individual fields yet. Please click OK to save. You'll need to re-run the \"\n\"action.\"\nmsgstr \"\"\n\"你已選了一個動作, 但有一個可編輯欄位的變更尚未儲存。請點選 OK 進行儲存。你需\"\n\"要重新執行該動作。\"\n\n#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6\nmsgid \"\"\n\"You have selected an action, and you haven't made any changes on individual \"\n\"fields. You're probably looking for the Go button rather than the Save \"\n\"button.\"\nmsgstr \"\"\n\"你已選了一個動作, 但沒有任何改變。你可能動到 '去' 按鈕, 而不是 '儲存' 按鈕。\"\n\n#: static/admin/js/calendar.js:26\nmsgid \"\"\n\"January February March April May June July August September October November \"\n\"December\"\nmsgstr \"一月 二月 三月 四月 五月 六月 七月 八月 九月 十月 十一月 十二月\"\n\n#: static/admin/js/calendar.js:27\nmsgid \"S M T W T F S\"\nmsgstr \"日 一 二 三 四 五 六\"\n\n#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19\n#: static/admin/js/collapse.min.js:1\nmsgid \"Show\"\nmsgstr \"顯示\"\n\n#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1\nmsgid \"Hide\"\nmsgstr \"隱藏\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:49\n#: static/admin/js/admin/DateTimeShortcuts.js:85\nmsgid \"Now\"\nmsgstr \"現在\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:53\nmsgid \"Clock\"\nmsgstr \"時鐘\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:81\nmsgid \"Choose a time\"\nmsgstr \"選擇一個時間\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:86\nmsgid \"Midnight\"\nmsgstr \"午夜\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:87\nmsgid \"6 a.m.\"\nmsgstr \"上午 6 點\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:88\nmsgid \"Noon\"\nmsgstr \"中午\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:92\n#: static/admin/js/admin/DateTimeShortcuts.js:204\nmsgid \"Cancel\"\nmsgstr \"取消\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:144\n#: static/admin/js/admin/DateTimeShortcuts.js:197\nmsgid \"Today\"\nmsgstr \"今天\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:148\nmsgid \"Calendar\"\nmsgstr \"日曆\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:195\nmsgid \"Yesterday\"\nmsgstr \"昨天\"\n\n#: static/admin/js/admin/DateTimeShortcuts.js:199\nmsgid \"Tomorrow\"\nmsgstr \"明天\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/models.py",
    "content": "from __future__ import unicode_literals\n\nfrom django.db import models\nfrom django.conf import settings\nfrom django.contrib.contenttypes.models import ContentType\nfrom django.contrib.admin.util import quote\nfrom django.utils.translation import ugettext, ugettext_lazy as _\nfrom django.utils.encoding import smart_text\nfrom django.utils.encoding import python_2_unicode_compatible\n\nADDITION = 1\nCHANGE = 2\nDELETION = 3\n\n\nclass LogEntryManager(models.Manager):\n    def log_action(self, user_id, content_type_id, object_id, object_repr, action_flag, change_message=''):\n        e = self.model(None, None, user_id, content_type_id, smart_text(object_id), object_repr[:200], action_flag, change_message)\n        e.save()\n\n\n@python_2_unicode_compatible\nclass LogEntry(models.Model):\n    action_time = models.DateTimeField(_('action time'), auto_now=True)\n    user = models.ForeignKey(settings.AUTH_USER_MODEL)\n    content_type = models.ForeignKey(ContentType, blank=True, null=True)\n    object_id = models.TextField(_('object id'), blank=True, null=True)\n    object_repr = models.CharField(_('object repr'), max_length=200)\n    action_flag = models.PositiveSmallIntegerField(_('action flag'))\n    change_message = models.TextField(_('change message'), blank=True)\n\n    objects = LogEntryManager()\n\n    class Meta:\n        verbose_name = _('log entry')\n        verbose_name_plural = _('log entries')\n        db_table = 'django_admin_log'\n        ordering = ('-action_time',)\n\n    def __repr__(self):\n        return smart_text(self.action_time)\n\n    def __str__(self):\n        if self.action_flag == ADDITION:\n            return ugettext('Added \"%(object)s\".') % {'object': self.object_repr}\n        elif self.action_flag == CHANGE:\n            return ugettext('Changed \"%(object)s\" - %(changes)s') % {\n                'object': self.object_repr,\n                'changes': self.change_message,\n            }\n        elif self.action_flag == DELETION:\n            return ugettext('Deleted \"%(object)s.\"') % {'object': self.object_repr}\n\n        return ugettext('LogEntry Object')\n\n    def is_addition(self):\n        return self.action_flag == ADDITION\n\n    def is_change(self):\n        return self.action_flag == CHANGE\n\n    def is_deletion(self):\n        return self.action_flag == DELETION\n\n    def get_edited_object(self):\n        \"Returns the edited object represented by this log entry\"\n        return self.content_type.get_object_for_this_type(pk=self.object_id)\n\n    def get_admin_url(self):\n        \"\"\"\n        Returns the admin URL to edit the object represented by this log entry.\n        This is relative to the Django admin index page.\n        \"\"\"\n        if self.content_type and self.object_id:\n            return \"%s/%s/%s/\" % (self.content_type.app_label, self.content_type.model, quote(self.object_id))\n        return None\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/options.py",
    "content": "import copy\nfrom functools import update_wrapper, partial\nimport warnings\n\nfrom django import forms\nfrom django.conf import settings\nfrom django.forms.formsets import all_valid\nfrom django.forms.models import (modelform_factory, modelformset_factory,\n    inlineformset_factory, BaseInlineFormSet)\nfrom django.contrib.contenttypes.models import ContentType\nfrom django.contrib.admin import widgets, helpers\nfrom django.contrib.admin.util import unquote, flatten_fieldsets, get_deleted_objects, model_format_dict\nfrom django.contrib.admin.templatetags.admin_static import static\nfrom django.contrib import messages\nfrom django.views.decorators.csrf import csrf_protect\nfrom django.core.exceptions import PermissionDenied, ValidationError\nfrom django.core.paginator import Paginator\nfrom django.core.urlresolvers import reverse\nfrom django.db import models, transaction, router\nfrom django.db.models.constants import LOOKUP_SEP\nfrom django.db.models.related import RelatedObject\nfrom django.db.models.fields import BLANK_CHOICE_DASH, FieldDoesNotExist\nfrom django.db.models.sql.constants import QUERY_TERMS\nfrom django.http import Http404, HttpResponse, HttpResponseRedirect\nfrom django.shortcuts import get_object_or_404\nfrom django.template.response import SimpleTemplateResponse, TemplateResponse\nfrom django.utils.decorators import method_decorator\nfrom django.utils.datastructures import SortedDict\nfrom django.utils.html import escape, escapejs\nfrom django.utils.safestring import mark_safe\nfrom django.utils import six\nfrom django.utils.text import capfirst, get_text_list\nfrom django.utils.translation import ugettext as _\nfrom django.utils.translation import ungettext\nfrom django.utils.encoding import force_text\n\nHORIZONTAL, VERTICAL = 1, 2\n# returns the <ul> class for a given radio_admin field\nget_ul_class = lambda x: 'radiolist%s' % ((x == HORIZONTAL) and ' inline' or '')\n\n\nclass IncorrectLookupParameters(Exception):\n    pass\n\n# Defaults for formfield_overrides. ModelAdmin subclasses can change this\n# by adding to ModelAdmin.formfield_overrides.\n\nFORMFIELD_FOR_DBFIELD_DEFAULTS = {\n    models.DateTimeField: {\n        'form_class': forms.SplitDateTimeField,\n        'widget': widgets.AdminSplitDateTime\n    },\n    models.DateField:       {'widget': widgets.AdminDateWidget},\n    models.TimeField:       {'widget': widgets.AdminTimeWidget},\n    models.TextField:       {'widget': widgets.AdminTextareaWidget},\n    models.URLField:        {'widget': widgets.AdminURLFieldWidget},\n    models.IntegerField:    {'widget': widgets.AdminIntegerFieldWidget},\n    models.BigIntegerField: {'widget': widgets.AdminBigIntegerFieldWidget},\n    models.CharField:       {'widget': widgets.AdminTextInputWidget},\n    models.ImageField:      {'widget': widgets.AdminFileWidget},\n    models.FileField:       {'widget': widgets.AdminFileWidget},\n}\n\ncsrf_protect_m = method_decorator(csrf_protect)\n\n\nclass BaseModelAdmin(six.with_metaclass(forms.MediaDefiningClass)):\n    \"\"\"Functionality common to both ModelAdmin and InlineAdmin.\"\"\"\n\n    raw_id_fields = ()\n    fields = None\n    exclude = None\n    fieldsets = None\n    form = forms.ModelForm\n    filter_vertical = ()\n    filter_horizontal = ()\n    radio_fields = {}\n    prepopulated_fields = {}\n    formfield_overrides = {}\n    readonly_fields = ()\n    ordering = None\n\n    def __init__(self):\n        overrides = FORMFIELD_FOR_DBFIELD_DEFAULTS.copy()\n        overrides.update(self.formfield_overrides)\n        self.formfield_overrides = overrides\n\n    def formfield_for_dbfield(self, db_field, **kwargs):\n        \"\"\"\n        Hook for specifying the form Field instance for a given database Field\n        instance.\n\n        If kwargs are given, they're passed to the form Field's constructor.\n        \"\"\"\n        request = kwargs.pop(\"request\", None)\n\n        # If the field specifies choices, we don't need to look for special\n        # admin widgets - we just need to use a select widget of some kind.\n        if db_field.choices:\n            return self.formfield_for_choice_field(db_field, request, **kwargs)\n\n        # ForeignKey or ManyToManyFields\n        if isinstance(db_field, (models.ForeignKey, models.ManyToManyField)):\n            # Combine the field kwargs with any options for formfield_overrides.\n            # Make sure the passed in **kwargs override anything in\n            # formfield_overrides because **kwargs is more specific, and should\n            # always win.\n            if db_field.__class__ in self.formfield_overrides:\n                kwargs = dict(self.formfield_overrides[db_field.__class__], **kwargs)\n\n            # Get the correct formfield.\n            if isinstance(db_field, models.ForeignKey):\n                formfield = self.formfield_for_foreignkey(db_field, request, **kwargs)\n            elif isinstance(db_field, models.ManyToManyField):\n                formfield = self.formfield_for_manytomany(db_field, request, **kwargs)\n\n            # For non-raw_id fields, wrap the widget with a wrapper that adds\n            # extra HTML -- the \"add other\" interface -- to the end of the\n            # rendered output. formfield can be None if it came from a\n            # OneToOneField with parent_link=True or a M2M intermediary.\n            if formfield and db_field.name not in self.raw_id_fields:\n                related_modeladmin = self.admin_site._registry.get(\n                                                            db_field.rel.to)\n                can_add_related = bool(related_modeladmin and\n                            related_modeladmin.has_add_permission(request))\n                formfield.widget = widgets.RelatedFieldWidgetWrapper(\n                            formfield.widget, db_field.rel, self.admin_site,\n                            can_add_related=can_add_related)\n\n            return formfield\n\n        # If we've got overrides for the formfield defined, use 'em. **kwargs\n        # passed to formfield_for_dbfield override the defaults.\n        for klass in db_field.__class__.mro():\n            if klass in self.formfield_overrides:\n                kwargs = dict(copy.deepcopy(self.formfield_overrides[klass]), **kwargs)\n                return db_field.formfield(**kwargs)\n\n        # For any other type of field, just call its formfield() method.\n        return db_field.formfield(**kwargs)\n\n    def formfield_for_choice_field(self, db_field, request=None, **kwargs):\n        \"\"\"\n        Get a form Field for a database Field that has declared choices.\n        \"\"\"\n        # If the field is named as a radio_field, use a RadioSelect\n        if db_field.name in self.radio_fields:\n            # Avoid stomping on custom widget/choices arguments.\n            if 'widget' not in kwargs:\n                kwargs['widget'] = widgets.AdminRadioSelect(attrs={\n                    'class': get_ul_class(self.radio_fields[db_field.name]),\n                })\n            if 'choices' not in kwargs:\n                kwargs['choices'] = db_field.get_choices(\n                    include_blank=db_field.blank,\n                    blank_choice=[('', _('None'))]\n                )\n        return db_field.formfield(**kwargs)\n\n    def formfield_for_foreignkey(self, db_field, request=None, **kwargs):\n        \"\"\"\n        Get a form Field for a ForeignKey.\n        \"\"\"\n        db = kwargs.get('using')\n        if db_field.name in self.raw_id_fields:\n            kwargs['widget'] = widgets.ForeignKeyRawIdWidget(db_field.rel,\n                                    self.admin_site, using=db)\n        elif db_field.name in self.radio_fields:\n            kwargs['widget'] = widgets.AdminRadioSelect(attrs={\n                'class': get_ul_class(self.radio_fields[db_field.name]),\n            })\n            kwargs['empty_label'] = db_field.blank and _('None') or None\n\n        return db_field.formfield(**kwargs)\n\n    def formfield_for_manytomany(self, db_field, request=None, **kwargs):\n        \"\"\"\n        Get a form Field for a ManyToManyField.\n        \"\"\"\n        # If it uses an intermediary model that isn't auto created, don't show\n        # a field in admin.\n        if not db_field.rel.through._meta.auto_created:\n            return None\n        db = kwargs.get('using')\n\n        if db_field.name in self.raw_id_fields:\n            kwargs['widget'] = widgets.ManyToManyRawIdWidget(db_field.rel,\n                                    self.admin_site, using=db)\n            kwargs['help_text'] = ''\n        elif db_field.name in (list(self.filter_vertical) + list(self.filter_horizontal)):\n            kwargs['widget'] = widgets.FilteredSelectMultiple(db_field.verbose_name, (db_field.name in self.filter_vertical))\n\n        return db_field.formfield(**kwargs)\n\n    def _declared_fieldsets(self):\n        if self.fieldsets:\n            return self.fieldsets\n        elif self.fields:\n            return [(None, {'fields': self.fields})]\n        return None\n    declared_fieldsets = property(_declared_fieldsets)\n\n    def get_ordering(self, request):\n        \"\"\"\n        Hook for specifying field ordering.\n        \"\"\"\n        return self.ordering or ()  # otherwise we might try to *None, which is bad ;)\n\n    def get_readonly_fields(self, request, obj=None):\n        \"\"\"\n        Hook for specifying custom readonly fields.\n        \"\"\"\n        return self.readonly_fields\n\n    def get_prepopulated_fields(self, request, obj=None):\n        \"\"\"\n        Hook for specifying custom prepopulated fields.\n        \"\"\"\n        return self.prepopulated_fields\n\n    def queryset(self, request):\n        \"\"\"\n        Returns a QuerySet of all model instances that can be edited by the\n        admin site. This is used by changelist_view.\n        \"\"\"\n        qs = self.model._default_manager.get_query_set()\n        # TODO: this should be handled by some parameter to the ChangeList.\n        ordering = self.get_ordering(request)\n        if ordering:\n            qs = qs.order_by(*ordering)\n        return qs\n\n    def lookup_allowed(self, lookup, value):\n        model = self.model\n        # Check FKey lookups that are allowed, so that popups produced by\n        # ForeignKeyRawIdWidget, on the basis of ForeignKey.limit_choices_to,\n        # are allowed to work.\n        for l in model._meta.related_fkey_lookups:\n            for k, v in widgets.url_params_from_lookup_dict(l).items():\n                if k == lookup and v == value:\n                    return True\n\n        parts = lookup.split(LOOKUP_SEP)\n\n        # Last term in lookup is a query term (__exact, __startswith etc)\n        # This term can be ignored.\n        if len(parts) > 1 and parts[-1] in QUERY_TERMS:\n            parts.pop()\n\n        # Special case -- foo__id__exact and foo__id queries are implied\n        # if foo has been specificially included in the lookup list; so\n        # drop __id if it is the last part. However, first we need to find\n        # the pk attribute name.\n        rel_name = None\n        for part in parts[:-1]:\n            try:\n                field, _, _, _ = model._meta.get_field_by_name(part)\n            except FieldDoesNotExist:\n                # Lookups on non-existants fields are ok, since they're ignored\n                # later.\n                return True\n            if hasattr(field, 'rel'):\n                model = field.rel.to\n                rel_name = field.rel.get_related_field().name\n            elif isinstance(field, RelatedObject):\n                model = field.model\n                rel_name = model._meta.pk.name\n            else:\n                rel_name = None\n        if rel_name and len(parts) > 1 and parts[-1] == rel_name:\n            parts.pop()\n\n        if len(parts) == 1:\n            return True\n        clean_lookup = LOOKUP_SEP.join(parts)\n        return clean_lookup in self.list_filter or clean_lookup == self.date_hierarchy\n\n    def has_add_permission(self, request):\n        \"\"\"\n        Returns True if the given request has permission to add an object.\n        Can be overriden by the user in subclasses.\n        \"\"\"\n        opts = self.opts\n        return request.user.has_perm(opts.app_label + '.' + opts.get_add_permission())\n\n    def has_change_permission(self, request, obj=None):\n        \"\"\"\n        Returns True if the given request has permission to change the given\n        Django model instance, the default implementation doesn't examine the\n        `obj` parameter.\n\n        Can be overriden by the user in subclasses. In such case it should\n        return True if the given request has permission to change the `obj`\n        model instance. If `obj` is None, this should return True if the given\n        request has permission to change *any* object of the given type.\n        \"\"\"\n        opts = self.opts\n        return request.user.has_perm(opts.app_label + '.' + opts.get_change_permission())\n\n    def has_delete_permission(self, request, obj=None):\n        \"\"\"\n        Returns True if the given request has permission to change the given\n        Django model instance, the default implementation doesn't examine the\n        `obj` parameter.\n\n        Can be overriden by the user in subclasses. In such case it should\n        return True if the given request has permission to delete the `obj`\n        model instance. If `obj` is None, this should return True if the given\n        request has permission to delete *any* object of the given type.\n        \"\"\"\n        opts = self.opts\n        return request.user.has_perm(opts.app_label + '.' + opts.get_delete_permission())\n\nclass ModelAdmin(BaseModelAdmin):\n    \"Encapsulates all admin options and functionality for a given model.\"\n\n    list_display = ('__str__',)\n    list_display_links = ()\n    list_filter = ()\n    list_select_related = False\n    list_per_page = 100\n    list_max_show_all = 200\n    list_editable = ()\n    search_fields = ()\n    date_hierarchy = None\n    save_as = False\n    save_on_top = False\n    paginator = Paginator\n    inlines = []\n\n    # Custom templates (designed to be over-ridden in subclasses)\n    add_form_template = None\n    change_form_template = None\n    change_list_template = None\n    delete_confirmation_template = None\n    delete_selected_confirmation_template = None\n    object_history_template = None\n\n    # Actions\n    actions = []\n    action_form = helpers.ActionForm\n    actions_on_top = True\n    actions_on_bottom = False\n    actions_selection_counter = True\n\n    def __init__(self, model, admin_site):\n        self.model = model\n        self.opts = model._meta\n        self.admin_site = admin_site\n        super(ModelAdmin, self).__init__()\n\n    def get_inline_instances(self, request, obj=None):\n        inline_instances = []\n        for inline_class in self.inlines:\n            inline = inline_class(self.model, self.admin_site)\n            if request:\n                if not (inline.has_add_permission(request) or\n                        inline.has_change_permission(request, obj) or\n                        inline.has_delete_permission(request, obj)):\n                    continue\n                if not inline.has_add_permission(request):\n                    inline.max_num = 0\n            inline_instances.append(inline)\n\n        return inline_instances\n\n    def get_urls(self):\n        from django.conf.urls import patterns, url\n\n        def wrap(view):\n            def wrapper(*args, **kwargs):\n                return self.admin_site.admin_view(view)(*args, **kwargs)\n            return update_wrapper(wrapper, view)\n\n        info = self.model._meta.app_label, self.model._meta.module_name\n\n        urlpatterns = patterns('',\n            url(r'^$',\n                wrap(self.changelist_view),\n                name='%s_%s_changelist' % info),\n            url(r'^add/$',\n                wrap(self.add_view),\n                name='%s_%s_add' % info),\n            url(r'^(.+)/history/$',\n                wrap(self.history_view),\n                name='%s_%s_history' % info),\n            url(r'^(.+)/delete/$',\n                wrap(self.delete_view),\n                name='%s_%s_delete' % info),\n            url(r'^(.+)/$',\n                wrap(self.change_view),\n                name='%s_%s_change' % info),\n        )\n        return urlpatterns\n\n    def urls(self):\n        return self.get_urls()\n    urls = property(urls)\n\n    @property\n    def media(self):\n        extra = '' if settings.DEBUG else '.min'\n        js = [\n            'core.js',\n            'admin/RelatedObjectLookups.js',\n            'jquery%s.js' % extra,\n            'jquery.init.js'\n        ]\n        if self.actions is not None:\n            js.append('actions%s.js' % extra)\n        if self.prepopulated_fields:\n            js.extend(['urlify.js', 'prepopulate%s.js' % extra])\n        if self.opts.get_ordered_objects():\n            js.extend(['getElementsBySelector.js', 'dom-drag.js' , 'admin/ordering.js'])\n        return forms.Media(js=[static('admin/js/%s' % url) for url in js])\n\n    def get_model_perms(self, request):\n        \"\"\"\n        Returns a dict of all perms for this model. This dict has the keys\n        ``add``, ``change``, and ``delete`` mapping to the True/False for each\n        of those actions.\n        \"\"\"\n        return {\n            'add': self.has_add_permission(request),\n            'change': self.has_change_permission(request),\n            'delete': self.has_delete_permission(request),\n        }\n\n    def get_fieldsets(self, request, obj=None):\n        \"Hook for specifying fieldsets for the add form.\"\n        if self.declared_fieldsets:\n            return self.declared_fieldsets\n        form = self.get_form(request, obj)\n        fields = list(form.base_fields) + list(self.get_readonly_fields(request, obj))\n        return [(None, {'fields': fields})]\n\n    def get_form(self, request, obj=None, **kwargs):\n        \"\"\"\n        Returns a Form class for use in the admin add view. This is used by\n        add_view and change_view.\n        \"\"\"\n        if self.declared_fieldsets:\n            fields = flatten_fieldsets(self.declared_fieldsets)\n        else:\n            fields = None\n        if self.exclude is None:\n            exclude = []\n        else:\n            exclude = list(self.exclude)\n        exclude.extend(self.get_readonly_fields(request, obj))\n        if self.exclude is None and hasattr(self.form, '_meta') and self.form._meta.exclude:\n            # Take the custom ModelForm's Meta.exclude into account only if the\n            # ModelAdmin doesn't define its own.\n            exclude.extend(self.form._meta.exclude)\n        # if exclude is an empty list we pass None to be consistant with the\n        # default on modelform_factory\n        exclude = exclude or None\n        defaults = {\n            \"form\": self.form,\n            \"fields\": fields,\n            \"exclude\": exclude,\n            \"formfield_callback\": partial(self.formfield_for_dbfield, request=request),\n        }\n        defaults.update(kwargs)\n        return modelform_factory(self.model, **defaults)\n\n    def get_changelist(self, request, **kwargs):\n        \"\"\"\n        Returns the ChangeList class for use on the changelist page.\n        \"\"\"\n        from django.contrib.admin.views.main import ChangeList\n        return ChangeList\n\n    def get_object(self, request, object_id):\n        \"\"\"\n        Returns an instance matching the primary key provided. ``None``  is\n        returned if no match is found (or the object_id failed validation\n        against the primary key field).\n        \"\"\"\n        queryset = self.queryset(request)\n        model = queryset.model\n        try:\n            object_id = model._meta.pk.to_python(object_id)\n            return queryset.get(pk=object_id)\n        except (model.DoesNotExist, ValidationError):\n            return None\n\n    def get_changelist_form(self, request, **kwargs):\n        \"\"\"\n        Returns a Form class for use in the Formset on the changelist page.\n        \"\"\"\n        defaults = {\n            \"formfield_callback\": partial(self.formfield_for_dbfield, request=request),\n        }\n        defaults.update(kwargs)\n        return modelform_factory(self.model, **defaults)\n\n    def get_changelist_formset(self, request, **kwargs):\n        \"\"\"\n        Returns a FormSet class for use on the changelist page if list_editable\n        is used.\n        \"\"\"\n        defaults = {\n            \"formfield_callback\": partial(self.formfield_for_dbfield, request=request),\n        }\n        defaults.update(kwargs)\n        return modelformset_factory(self.model,\n            self.get_changelist_form(request), extra=0,\n            fields=self.list_editable, **defaults)\n\n    def get_formsets(self, request, obj=None):\n        for inline in self.get_inline_instances(request, obj):\n            yield inline.get_formset(request, obj)\n\n    def get_paginator(self, request, queryset, per_page, orphans=0, allow_empty_first_page=True):\n        return self.paginator(queryset, per_page, orphans, allow_empty_first_page)\n\n    def log_addition(self, request, object):\n        \"\"\"\n        Log that an object has been successfully added.\n\n        The default implementation creates an admin LogEntry object.\n        \"\"\"\n        from django.contrib.admin.models import LogEntry, ADDITION\n        LogEntry.objects.log_action(\n            user_id         = request.user.pk,\n            content_type_id = ContentType.objects.get_for_model(object).pk,\n            object_id       = object.pk,\n            object_repr     = force_text(object),\n            action_flag     = ADDITION\n        )\n\n    def log_change(self, request, object, message):\n        \"\"\"\n        Log that an object has been successfully changed.\n\n        The default implementation creates an admin LogEntry object.\n        \"\"\"\n        from django.contrib.admin.models import LogEntry, CHANGE\n        LogEntry.objects.log_action(\n            user_id         = request.user.pk,\n            content_type_id = ContentType.objects.get_for_model(object).pk,\n            object_id       = object.pk,\n            object_repr     = force_text(object),\n            action_flag     = CHANGE,\n            change_message  = message\n        )\n\n    def log_deletion(self, request, object, object_repr):\n        \"\"\"\n        Log that an object will be deleted. Note that this method is called\n        before the deletion.\n\n        The default implementation creates an admin LogEntry object.\n        \"\"\"\n        from django.contrib.admin.models import LogEntry, DELETION\n        LogEntry.objects.log_action(\n            user_id         = request.user.pk,\n            content_type_id = ContentType.objects.get_for_model(self.model).pk,\n            object_id       = object.pk,\n            object_repr     = object_repr,\n            action_flag     = DELETION\n        )\n\n    def action_checkbox(self, obj):\n        \"\"\"\n        A list_display column containing a checkbox widget.\n        \"\"\"\n        return helpers.checkbox.render(helpers.ACTION_CHECKBOX_NAME, force_text(obj.pk))\n    action_checkbox.short_description = mark_safe('<input type=\"checkbox\" id=\"action-toggle\" />')\n    action_checkbox.allow_tags = True\n\n    def get_actions(self, request):\n        \"\"\"\n        Return a dictionary mapping the names of all actions for this\n        ModelAdmin to a tuple of (callable, name, description) for each action.\n        \"\"\"\n        # If self.actions is explicitally set to None that means that we don't\n        # want *any* actions enabled on this page.\n        from django.contrib.admin.views.main import IS_POPUP_VAR\n        if self.actions is None or IS_POPUP_VAR in request.GET:\n            return SortedDict()\n\n        actions = []\n\n        # Gather actions from the admin site first\n        for (name, func) in self.admin_site.actions:\n            description = getattr(func, 'short_description', name.replace('_', ' '))\n            actions.append((func, name, description))\n\n        # Then gather them from the model admin and all parent classes,\n        # starting with self and working back up.\n        for klass in self.__class__.mro()[::-1]:\n            class_actions = getattr(klass, 'actions', [])\n            # Avoid trying to iterate over None\n            if not class_actions:\n                continue\n            actions.extend([self.get_action(action) for action in class_actions])\n\n        # get_action might have returned None, so filter any of those out.\n        actions = filter(None, actions)\n\n        # Convert the actions into a SortedDict keyed by name.\n        actions = SortedDict([\n            (name, (func, name, desc))\n            for func, name, desc in actions\n        ])\n\n        return actions\n\n    def get_action_choices(self, request, default_choices=BLANK_CHOICE_DASH):\n        \"\"\"\n        Return a list of choices for use in a form object.  Each choice is a\n        tuple (name, description).\n        \"\"\"\n        choices = [] + default_choices\n        for func, name, description in six.itervalues(self.get_actions(request)):\n            choice = (name, description % model_format_dict(self.opts))\n            choices.append(choice)\n        return choices\n\n    def get_action(self, action):\n        \"\"\"\n        Return a given action from a parameter, which can either be a callable,\n        or the name of a method on the ModelAdmin.  Return is a tuple of\n        (callable, name, description).\n        \"\"\"\n        # If the action is a callable, just use it.\n        if callable(action):\n            func = action\n            action = action.__name__\n\n        # Next, look for a method. Grab it off self.__class__ to get an unbound\n        # method instead of a bound one; this ensures that the calling\n        # conventions are the same for functions and methods.\n        elif hasattr(self.__class__, action):\n            func = getattr(self.__class__, action)\n\n        # Finally, look for a named method on the admin site\n        else:\n            try:\n                func = self.admin_site.get_action(action)\n            except KeyError:\n                return None\n\n        if hasattr(func, 'short_description'):\n            description = func.short_description\n        else:\n            description = capfirst(action.replace('_', ' '))\n        return func, action, description\n\n    def get_list_display(self, request):\n        \"\"\"\n        Return a sequence containing the fields to be displayed on the\n        changelist.\n        \"\"\"\n        return self.list_display\n\n    def get_list_display_links(self, request, list_display):\n        \"\"\"\n        Return a sequence containing the fields to be displayed as links\n        on the changelist. The list_display parameter is the list of fields\n        returned by get_list_display().\n        \"\"\"\n        if self.list_display_links or not list_display:\n            return self.list_display_links\n        else:\n            # Use only the first item in list_display as link\n            return list(list_display)[:1]\n\n    def get_list_filter(self, request):\n        \"\"\"\n        Returns a sequence containing the fields to be displayed as filters in\n        the right sidebar of the changelist page.\n        \"\"\"\n        return self.list_filter\n\n    def construct_change_message(self, request, form, formsets):\n        \"\"\"\n        Construct a change message from a changed object.\n        \"\"\"\n        change_message = []\n        if form.changed_data:\n            change_message.append(_('Changed %s.') % get_text_list(form.changed_data, _('and')))\n\n        if formsets:\n            for formset in formsets:\n                for added_object in formset.new_objects:\n                    change_message.append(_('Added %(name)s \"%(object)s\".')\n                                          % {'name': force_text(added_object._meta.verbose_name),\n                                             'object': force_text(added_object)})\n                for changed_object, changed_fields in formset.changed_objects:\n                    change_message.append(_('Changed %(list)s for %(name)s \"%(object)s\".')\n                                          % {'list': get_text_list(changed_fields, _('and')),\n                                             'name': force_text(changed_object._meta.verbose_name),\n                                             'object': force_text(changed_object)})\n                for deleted_object in formset.deleted_objects:\n                    change_message.append(_('Deleted %(name)s \"%(object)s\".')\n                                          % {'name': force_text(deleted_object._meta.verbose_name),\n                                             'object': force_text(deleted_object)})\n        change_message = ' '.join(change_message)\n        return change_message or _('No fields changed.')\n\n    def message_user(self, request, message, level=messages.INFO, extra_tags='',\n                     fail_silently=False):\n        \"\"\"\n        Send a message to the user. The default implementation\n        posts a message using the django.contrib.messages backend.\n\n        Exposes almost the same API as messages.add_message(), but accepts the\n        positional arguments in a different order to maintain backwards\n        compatibility. For convenience, it accepts the `level` argument as\n        a string rather than the usual level number.\n        \"\"\"\n\n        if not isinstance(level, int):\n            # attempt to get the level if passed a string\n            try:\n                level = getattr(messages.constants, level.upper())\n            except AttributeError:\n                levels = messages.constants.DEFAULT_TAGS.values()\n                levels_repr = ', '.join('`%s`' % l for l in levels)\n                raise ValueError('Bad message level string: `%s`. '\n                        'Possible values are: %s' % (level, levels_repr))\n\n        messages.add_message(request, level, message, extra_tags=extra_tags,\n                fail_silently=fail_silently)\n\n    def save_form(self, request, form, change):\n        \"\"\"\n        Given a ModelForm return an unsaved instance. ``change`` is True if\n        the object is being changed, and False if it's being added.\n        \"\"\"\n        return form.save(commit=False)\n\n    def save_model(self, request, obj, form, change):\n        \"\"\"\n        Given a model instance save it to the database.\n        \"\"\"\n        obj.save()\n\n    def delete_model(self, request, obj):\n        \"\"\"\n        Given a model instance delete it from the database.\n        \"\"\"\n        obj.delete()\n\n    def save_formset(self, request, form, formset, change):\n        \"\"\"\n        Given an inline formset save it to the database.\n        \"\"\"\n        formset.save()\n\n    def save_related(self, request, form, formsets, change):\n        \"\"\"\n        Given the ``HttpRequest``, the parent ``ModelForm`` instance, the\n        list of inline formsets and a boolean value based on whether the\n        parent is being added or changed, save the related objects to the\n        database. Note that at this point save_form() and save_model() have\n        already been called.\n        \"\"\"\n        form.save_m2m()\n        for formset in formsets:\n            self.save_formset(request, form, formset, change=change)\n\n    def render_change_form(self, request, context, add=False, change=False, form_url='', obj=None):\n        opts = self.model._meta\n        app_label = opts.app_label\n        ordered_objects = opts.get_ordered_objects()\n        context.update({\n            'add': add,\n            'change': change,\n            'has_add_permission': self.has_add_permission(request),\n            'has_change_permission': self.has_change_permission(request, obj),\n            'has_delete_permission': self.has_delete_permission(request, obj),\n            'has_file_field': True, # FIXME - this should check if form or formsets have a FileField,\n            'has_absolute_url': hasattr(self.model, 'get_absolute_url'),\n            'ordered_objects': ordered_objects,\n            'form_url': form_url,\n            'opts': opts,\n            'content_type_id': ContentType.objects.get_for_model(self.model).id,\n            'save_as': self.save_as,\n            'save_on_top': self.save_on_top,\n        })\n        if add and self.add_form_template is not None:\n            form_template = self.add_form_template\n        else:\n            form_template = self.change_form_template\n\n        return TemplateResponse(request, form_template or [\n            \"admin/%s/%s/change_form.html\" % (app_label, opts.object_name.lower()),\n            \"admin/%s/change_form.html\" % app_label,\n            \"admin/change_form.html\"\n        ], context, current_app=self.admin_site.name)\n\n    def response_add(self, request, obj, post_url_continue=None):\n        \"\"\"\n        Determines the HttpResponse for the add_view stage.\n        \"\"\"\n        opts = obj._meta\n        pk_value = obj._get_pk_val()\n\n        msg_dict = {'name': force_text(opts.verbose_name), 'obj': force_text(obj)}\n        # Here, we distinguish between different save types by checking for\n        # the presence of keys in request.POST.\n        if \"_continue\" in request.POST:\n            msg = _('The %(name)s \"%(obj)s\" was added successfully. You may edit it again below.') % msg_dict\n            self.message_user(request, msg)\n            if post_url_continue is None:\n                post_url_continue = reverse('admin:%s_%s_change' %\n                                            (opts.app_label, opts.module_name),\n                                            args=(pk_value,),\n                                            current_app=self.admin_site.name)\n            else:\n                try:\n                    post_url_continue = post_url_continue % pk_value\n                    warnings.warn(\n                        \"The use of string formats for post_url_continue \"\n                        \"in ModelAdmin.response_add() is deprecated. Provide \"\n                        \"a pre-formatted url instead.\",\n                        DeprecationWarning, stacklevel=2)\n                except TypeError:\n                    pass\n            if \"_popup\" in request.POST:\n                post_url_continue += \"?_popup=1\"\n            return HttpResponseRedirect(post_url_continue)\n\n        if \"_popup\" in request.POST:\n            return HttpResponse(\n                '<!DOCTYPE html><html><head><title></title></head><body>'\n                '<script type=\"text/javascript\">opener.dismissAddAnotherPopup(window, \"%s\", \"%s\");</script></body></html>' % \\\n                # escape() calls force_text.\n                (escape(pk_value), escapejs(obj)))\n        elif \"_addanother\" in request.POST:\n            msg = _('The %(name)s \"%(obj)s\" was added successfully. You may add another %(name)s below.') % msg_dict\n            self.message_user(request, msg)\n            return HttpResponseRedirect(request.path)\n        else:\n            msg = _('The %(name)s \"%(obj)s\" was added successfully.') % msg_dict\n            self.message_user(request, msg)\n            return self.response_post_save_add(request, obj)\n\n    def response_change(self, request, obj):\n        \"\"\"\n        Determines the HttpResponse for the change_view stage.\n        \"\"\"\n        opts = self.model._meta\n\n        pk_value = obj._get_pk_val()\n\n        msg_dict = {'name': force_text(opts.verbose_name), 'obj': force_text(obj)}\n        if \"_continue\" in request.POST:\n            msg = _('The %(name)s \"%(obj)s\" was changed successfully. You may edit it again below.') % msg_dict\n            self.message_user(request, msg)\n            if \"_popup\" in request.REQUEST:\n                return HttpResponseRedirect(request.path + \"?_popup=1\")\n            else:\n                return HttpResponseRedirect(request.path)\n        elif \"_saveasnew\" in request.POST:\n            msg = _('The %(name)s \"%(obj)s\" was added successfully. You may edit it again below.') % msg_dict\n            self.message_user(request, msg)\n            return HttpResponseRedirect(reverse('admin:%s_%s_change' %\n                                        (opts.app_label, opts.module_name),\n                                        args=(pk_value,),\n                                        current_app=self.admin_site.name))\n        elif \"_addanother\" in request.POST:\n            msg = _('The %(name)s \"%(obj)s\" was changed successfully. You may add another %(name)s below.') % msg_dict\n            self.message_user(request, msg)\n            return HttpResponseRedirect(reverse('admin:%s_%s_add' %\n                                        (opts.app_label, opts.module_name),\n                                        current_app=self.admin_site.name))\n        else:\n            msg = _('The %(name)s \"%(obj)s\" was changed successfully.') % msg_dict\n            self.message_user(request, msg)\n            return self.response_post_save_change(request, obj)\n\n    def response_post_save_add(self, request, obj):\n        \"\"\"\n        Figure out where to redirect after the 'Save' button has been pressed\n        when adding a new object.\n        \"\"\"\n        opts = self.model._meta\n        if self.has_change_permission(request, None):\n            post_url = reverse('admin:%s_%s_changelist' %\n                               (opts.app_label, opts.module_name),\n                               current_app=self.admin_site.name)\n        else:\n            post_url = reverse('admin:index',\n                               current_app=self.admin_site.name)\n        return HttpResponseRedirect(post_url)\n\n    def response_post_save_change(self, request, obj):\n        \"\"\"\n        Figure out where to redirect after the 'Save' button has been pressed\n        when editing an existing object.\n        \"\"\"\n        opts = self.model._meta\n        if self.has_change_permission(request, None):\n            post_url = reverse('admin:%s_%s_changelist' %\n                               (opts.app_label, opts.module_name),\n                               current_app=self.admin_site.name)\n        else:\n            post_url = reverse('admin:index',\n                               current_app=self.admin_site.name)\n        return HttpResponseRedirect(post_url)\n\n    def response_action(self, request, queryset):\n        \"\"\"\n        Handle an admin action. This is called if a request is POSTed to the\n        changelist; it returns an HttpResponse if the action was handled, and\n        None otherwise.\n        \"\"\"\n\n        # There can be multiple action forms on the page (at the top\n        # and bottom of the change list, for example). Get the action\n        # whose button was pushed.\n        try:\n            action_index = int(request.POST.get('index', 0))\n        except ValueError:\n            action_index = 0\n\n        # Construct the action form.\n        data = request.POST.copy()\n        data.pop(helpers.ACTION_CHECKBOX_NAME, None)\n        data.pop(\"index\", None)\n\n        # Use the action whose button was pushed\n        try:\n            data.update({'action': data.getlist('action')[action_index]})\n        except IndexError:\n            # If we didn't get an action from the chosen form that's invalid\n            # POST data, so by deleting action it'll fail the validation check\n            # below. So no need to do anything here\n            pass\n\n        action_form = self.action_form(data, auto_id=None)\n        action_form.fields['action'].choices = self.get_action_choices(request)\n\n        # If the form's valid we can handle the action.\n        if action_form.is_valid():\n            action = action_form.cleaned_data['action']\n            select_across = action_form.cleaned_data['select_across']\n            func, name, description = self.get_actions(request)[action]\n\n            # Get the list of selected PKs. If nothing's selected, we can't\n            # perform an action on it, so bail. Except we want to perform\n            # the action explicitly on all objects.\n            selected = request.POST.getlist(helpers.ACTION_CHECKBOX_NAME)\n            if not selected and not select_across:\n                # Reminder that something needs to be selected or nothing will happen\n                msg = _(\"Items must be selected in order to perform \"\n                        \"actions on them. No items have been changed.\")\n                self.message_user(request, msg)\n                return None\n\n            if not select_across:\n                # Perform the action only on the selected objects\n                queryset = queryset.filter(pk__in=selected)\n\n            response = func(self, request, queryset)\n\n            # Actions may return an HttpResponse, which will be used as the\n            # response from the POST. If not, we'll be a good little HTTP\n            # citizen and redirect back to the changelist page.\n            if isinstance(response, HttpResponse):\n                return response\n            else:\n                return HttpResponseRedirect(request.get_full_path())\n        else:\n            msg = _(\"No action selected.\")\n            self.message_user(request, msg)\n            return None\n\n    @csrf_protect_m\n    @transaction.commit_on_success\n    def add_view(self, request, form_url='', extra_context=None):\n        \"The 'add' admin view for this model.\"\n        model = self.model\n        opts = model._meta\n\n        if not self.has_add_permission(request):\n            raise PermissionDenied\n\n        ModelForm = self.get_form(request)\n        formsets = []\n        inline_instances = self.get_inline_instances(request, None)\n        if request.method == 'POST':\n            form = ModelForm(request.POST, request.FILES)\n            if form.is_valid():\n                new_object = self.save_form(request, form, change=False)\n                form_validated = True\n            else:\n                form_validated = False\n                new_object = self.model()\n            prefixes = {}\n            for FormSet, inline in zip(self.get_formsets(request), inline_instances):\n                prefix = FormSet.get_default_prefix()\n                prefixes[prefix] = prefixes.get(prefix, 0) + 1\n                if prefixes[prefix] != 1 or not prefix:\n                    prefix = \"%s-%s\" % (prefix, prefixes[prefix])\n                formset = FormSet(data=request.POST, files=request.FILES,\n                                  instance=new_object,\n                                  save_as_new=\"_saveasnew\" in request.POST,\n                                  prefix=prefix, queryset=inline.queryset(request))\n                formsets.append(formset)\n            if all_valid(formsets) and form_validated:\n                self.save_model(request, new_object, form, False)\n                self.save_related(request, form, formsets, False)\n                self.log_addition(request, new_object)\n                return self.response_add(request, new_object)\n        else:\n            # Prepare the dict of initial data from the request.\n            # We have to special-case M2Ms as a list of comma-separated PKs.\n            initial = dict(request.GET.items())\n            for k in initial:\n                try:\n                    f = opts.get_field(k)\n                except models.FieldDoesNotExist:\n                    continue\n                if isinstance(f, models.ManyToManyField):\n                    initial[k] = initial[k].split(\",\")\n            form = ModelForm(initial=initial)\n            prefixes = {}\n            for FormSet, inline in zip(self.get_formsets(request), inline_instances):\n                prefix = FormSet.get_default_prefix()\n                prefixes[prefix] = prefixes.get(prefix, 0) + 1\n                if prefixes[prefix] != 1 or not prefix:\n                    prefix = \"%s-%s\" % (prefix, prefixes[prefix])\n                formset = FormSet(instance=self.model(), prefix=prefix,\n                                  queryset=inline.queryset(request))\n                formsets.append(formset)\n\n        adminForm = helpers.AdminForm(form, list(self.get_fieldsets(request)),\n            self.get_prepopulated_fields(request),\n            self.get_readonly_fields(request),\n            model_admin=self)\n        media = self.media + adminForm.media\n\n        inline_admin_formsets = []\n        for inline, formset in zip(inline_instances, formsets):\n            fieldsets = list(inline.get_fieldsets(request))\n            readonly = list(inline.get_readonly_fields(request))\n            prepopulated = dict(inline.get_prepopulated_fields(request))\n            inline_admin_formset = helpers.InlineAdminFormSet(inline, formset,\n                fieldsets, prepopulated, readonly, model_admin=self)\n            inline_admin_formsets.append(inline_admin_formset)\n            media = media + inline_admin_formset.media\n\n        context = {\n            'title': _('Add %s') % force_text(opts.verbose_name),\n            'adminform': adminForm,\n            'is_popup': \"_popup\" in request.REQUEST,\n            'media': media,\n            'inline_admin_formsets': inline_admin_formsets,\n            'errors': helpers.AdminErrorList(form, formsets),\n            'app_label': opts.app_label,\n        }\n        context.update(extra_context or {})\n        return self.render_change_form(request, context, form_url=form_url, add=True)\n\n    @csrf_protect_m\n    @transaction.commit_on_success\n    def change_view(self, request, object_id, form_url='', extra_context=None):\n        \"The 'change' admin view for this model.\"\n        model = self.model\n        opts = model._meta\n\n        obj = self.get_object(request, unquote(object_id))\n\n        if not self.has_change_permission(request, obj):\n            raise PermissionDenied\n\n        if obj is None:\n            raise Http404(_('%(name)s object with primary key %(key)r does not exist.') % {'name': force_text(opts.verbose_name), 'key': escape(object_id)})\n\n        if request.method == 'POST' and \"_saveasnew\" in request.POST:\n            return self.add_view(request, form_url=reverse('admin:%s_%s_add' %\n                                    (opts.app_label, opts.module_name),\n                                    current_app=self.admin_site.name))\n\n        ModelForm = self.get_form(request, obj)\n        formsets = []\n        inline_instances = self.get_inline_instances(request, obj)\n        if request.method == 'POST':\n            form = ModelForm(request.POST, request.FILES, instance=obj)\n            if form.is_valid():\n                form_validated = True\n                new_object = self.save_form(request, form, change=True)\n            else:\n                form_validated = False\n                new_object = obj\n            prefixes = {}\n            for FormSet, inline in zip(self.get_formsets(request, new_object), inline_instances):\n                prefix = FormSet.get_default_prefix()\n                prefixes[prefix] = prefixes.get(prefix, 0) + 1\n                if prefixes[prefix] != 1 or not prefix:\n                    prefix = \"%s-%s\" % (prefix, prefixes[prefix])\n                formset = FormSet(request.POST, request.FILES,\n                                  instance=new_object, prefix=prefix,\n                                  queryset=inline.queryset(request))\n\n                formsets.append(formset)\n\n            if all_valid(formsets) and form_validated:\n                self.save_model(request, new_object, form, True)\n                self.save_related(request, form, formsets, True)\n                change_message = self.construct_change_message(request, form, formsets)\n                self.log_change(request, new_object, change_message)\n                return self.response_change(request, new_object)\n\n        else:\n            form = ModelForm(instance=obj)\n            prefixes = {}\n            for FormSet, inline in zip(self.get_formsets(request, obj), inline_instances):\n                prefix = FormSet.get_default_prefix()\n                prefixes[prefix] = prefixes.get(prefix, 0) + 1\n                if prefixes[prefix] != 1 or not prefix:\n                    prefix = \"%s-%s\" % (prefix, prefixes[prefix])\n                formset = FormSet(instance=obj, prefix=prefix,\n                                  queryset=inline.queryset(request))\n                formsets.append(formset)\n\n        adminForm = helpers.AdminForm(form, self.get_fieldsets(request, obj),\n            self.get_prepopulated_fields(request, obj),\n            self.get_readonly_fields(request, obj),\n            model_admin=self)\n        media = self.media + adminForm.media\n\n        inline_admin_formsets = []\n        for inline, formset in zip(inline_instances, formsets):\n            fieldsets = list(inline.get_fieldsets(request, obj))\n            readonly = list(inline.get_readonly_fields(request, obj))\n            prepopulated = dict(inline.get_prepopulated_fields(request, obj))\n            inline_admin_formset = helpers.InlineAdminFormSet(inline, formset,\n                fieldsets, prepopulated, readonly, model_admin=self)\n            inline_admin_formsets.append(inline_admin_formset)\n            media = media + inline_admin_formset.media\n\n        context = {\n            'title': _('Change %s') % force_text(opts.verbose_name),\n            'adminform': adminForm,\n            'object_id': object_id,\n            'original': obj,\n            'is_popup': \"_popup\" in request.REQUEST,\n            'media': media,\n            'inline_admin_formsets': inline_admin_formsets,\n            'errors': helpers.AdminErrorList(form, formsets),\n            'app_label': opts.app_label,\n        }\n        context.update(extra_context or {})\n        return self.render_change_form(request, context, change=True, obj=obj, form_url=form_url)\n\n    @csrf_protect_m\n    def changelist_view(self, request, extra_context=None):\n        \"\"\"\n        The 'change list' admin view for this model.\n        \"\"\"\n        from django.contrib.admin.views.main import ERROR_FLAG\n        opts = self.model._meta\n        app_label = opts.app_label\n        if not self.has_change_permission(request, None):\n            raise PermissionDenied\n\n        list_display = self.get_list_display(request)\n        list_display_links = self.get_list_display_links(request, list_display)\n        list_filter = self.get_list_filter(request)\n\n        # Check actions to see if any are available on this changelist\n        actions = self.get_actions(request)\n        if actions:\n            # Add the action checkboxes if there are any actions available.\n            list_display = ['action_checkbox'] +  list(list_display)\n\n        ChangeList = self.get_changelist(request)\n        try:\n            cl = ChangeList(request, self.model, list_display,\n                list_display_links, list_filter, self.date_hierarchy,\n                self.search_fields, self.list_select_related,\n                self.list_per_page, self.list_max_show_all, self.list_editable,\n                self)\n        except IncorrectLookupParameters:\n            # Wacky lookup parameters were given, so redirect to the main\n            # changelist page, without parameters, and pass an 'invalid=1'\n            # parameter via the query string. If wacky parameters were given\n            # and the 'invalid=1' parameter was already in the query string,\n            # something is screwed up with the database, so display an error\n            # page.\n            if ERROR_FLAG in request.GET.keys():\n                return SimpleTemplateResponse('admin/invalid_setup.html', {\n                    'title': _('Database error'),\n                })\n            return HttpResponseRedirect(request.path + '?' + ERROR_FLAG + '=1')\n\n        # If the request was POSTed, this might be a bulk action or a bulk\n        # edit. Try to look up an action or confirmation first, but if this\n        # isn't an action the POST will fall through to the bulk edit check,\n        # below.\n        action_failed = False\n        selected = request.POST.getlist(helpers.ACTION_CHECKBOX_NAME)\n\n        # Actions with no confirmation\n        if (actions and request.method == 'POST' and\n                'index' in request.POST and '_save' not in request.POST):\n            if selected:\n                response = self.response_action(request, queryset=cl.get_query_set(request))\n                if response:\n                    return response\n                else:\n                    action_failed = True\n            else:\n                msg = _(\"Items must be selected in order to perform \"\n                        \"actions on them. No items have been changed.\")\n                self.message_user(request, msg)\n                action_failed = True\n\n        # Actions with confirmation\n        if (actions and request.method == 'POST' and\n                helpers.ACTION_CHECKBOX_NAME in request.POST and\n                'index' not in request.POST and '_save' not in request.POST):\n            if selected:\n                response = self.response_action(request, queryset=cl.get_query_set(request))\n                if response:\n                    return response\n                else:\n                    action_failed = True\n\n        # If we're allowing changelist editing, we need to construct a formset\n        # for the changelist given all the fields to be edited. Then we'll\n        # use the formset to validate/process POSTed data.\n        formset = cl.formset = None\n\n        # Handle POSTed bulk-edit data.\n        if (request.method == \"POST\" and cl.list_editable and\n                '_save' in request.POST and not action_failed):\n            FormSet = self.get_changelist_formset(request)\n            formset = cl.formset = FormSet(request.POST, request.FILES, queryset=cl.result_list)\n            if formset.is_valid():\n                changecount = 0\n                for form in formset.forms:\n                    if form.has_changed():\n                        obj = self.save_form(request, form, change=True)\n                        self.save_model(request, obj, form, change=True)\n                        self.save_related(request, form, formsets=[], change=True)\n                        change_msg = self.construct_change_message(request, form, None)\n                        self.log_change(request, obj, change_msg)\n                        changecount += 1\n\n                if changecount:\n                    if changecount == 1:\n                        name = force_text(opts.verbose_name)\n                    else:\n                        name = force_text(opts.verbose_name_plural)\n                    msg = ungettext(\"%(count)s %(name)s was changed successfully.\",\n                                    \"%(count)s %(name)s were changed successfully.\",\n                                    changecount) % {'count': changecount,\n                                                    'name': name,\n                                                    'obj': force_text(obj)}\n                    self.message_user(request, msg)\n\n                return HttpResponseRedirect(request.get_full_path())\n\n        # Handle GET -- construct a formset for display.\n        elif cl.list_editable:\n            FormSet = self.get_changelist_formset(request)\n            formset = cl.formset = FormSet(queryset=cl.result_list)\n\n        # Build the list of media to be used by the formset.\n        if formset:\n            media = self.media + formset.media\n        else:\n            media = self.media\n\n        # Build the action form and populate it with available actions.\n        if actions:\n            action_form = self.action_form(auto_id=None)\n            action_form.fields['action'].choices = self.get_action_choices(request)\n        else:\n            action_form = None\n\n        selection_note_all = ungettext('%(total_count)s selected',\n            'All %(total_count)s selected', cl.result_count)\n\n        context = {\n            'module_name': force_text(opts.verbose_name_plural),\n            'selection_note': _('0 of %(cnt)s selected') % {'cnt': len(cl.result_list)},\n            'selection_note_all': selection_note_all % {'total_count': cl.result_count},\n            'title': cl.title,\n            'is_popup': cl.is_popup,\n            'cl': cl,\n            'media': media,\n            'has_add_permission': self.has_add_permission(request),\n            'app_label': app_label,\n            'action_form': action_form,\n            'actions_on_top': self.actions_on_top,\n            'actions_on_bottom': self.actions_on_bottom,\n            'actions_selection_counter': self.actions_selection_counter,\n        }\n        context.update(extra_context or {})\n\n        return TemplateResponse(request, self.change_list_template or [\n            'admin/%s/%s/change_list.html' % (app_label, opts.object_name.lower()),\n            'admin/%s/change_list.html' % app_label,\n            'admin/change_list.html'\n        ], context, current_app=self.admin_site.name)\n\n    @csrf_protect_m\n    @transaction.commit_on_success\n    def delete_view(self, request, object_id, extra_context=None):\n        \"The 'delete' admin view for this model.\"\n        opts = self.model._meta\n        app_label = opts.app_label\n\n        obj = self.get_object(request, unquote(object_id))\n\n        if not self.has_delete_permission(request, obj):\n            raise PermissionDenied\n\n        if obj is None:\n            raise Http404(_('%(name)s object with primary key %(key)r does not exist.') % {'name': force_text(opts.verbose_name), 'key': escape(object_id)})\n\n        using = router.db_for_write(self.model)\n\n        # Populate deleted_objects, a data structure of all related objects that\n        # will also be deleted.\n        (deleted_objects, perms_needed, protected) = get_deleted_objects(\n            [obj], opts, request.user, self.admin_site, using)\n\n        if request.POST: # The user has already confirmed the deletion.\n            if perms_needed:\n                raise PermissionDenied\n            obj_display = force_text(obj)\n            self.log_deletion(request, obj, obj_display)\n            self.delete_model(request, obj)\n\n            self.message_user(request, _('The %(name)s \"%(obj)s\" was deleted successfully.') % {'name': force_text(opts.verbose_name), 'obj': force_text(obj_display)})\n\n            if not self.has_change_permission(request, None):\n                return HttpResponseRedirect(reverse('admin:index',\n                                                    current_app=self.admin_site.name))\n            return HttpResponseRedirect(reverse('admin:%s_%s_changelist' %\n                                        (opts.app_label, opts.module_name),\n                                        current_app=self.admin_site.name))\n\n        object_name = force_text(opts.verbose_name)\n\n        if perms_needed or protected:\n            title = _(\"Cannot delete %(name)s\") % {\"name\": object_name}\n        else:\n            title = _(\"Are you sure?\")\n\n        context = {\n            \"title\": title,\n            \"object_name\": object_name,\n            \"object\": obj,\n            \"deleted_objects\": deleted_objects,\n            \"perms_lacking\": perms_needed,\n            \"protected\": protected,\n            \"opts\": opts,\n            \"app_label\": app_label,\n        }\n        context.update(extra_context or {})\n\n        return TemplateResponse(request, self.delete_confirmation_template or [\n            \"admin/%s/%s/delete_confirmation.html\" % (app_label, opts.object_name.lower()),\n            \"admin/%s/delete_confirmation.html\" % app_label,\n            \"admin/delete_confirmation.html\"\n        ], context, current_app=self.admin_site.name)\n\n    def history_view(self, request, object_id, extra_context=None):\n        \"The 'history' admin view for this model.\"\n        from django.contrib.admin.models import LogEntry\n        # First check if the user can see this history.\n        model = self.model\n        obj = get_object_or_404(model, pk=unquote(object_id))\n\n        if not self.has_change_permission(request, obj):\n            raise PermissionDenied\n\n        # Then get the history for this object.\n        opts = model._meta\n        app_label = opts.app_label\n        action_list = LogEntry.objects.filter(\n            object_id=unquote(object_id),\n            content_type__id__exact=ContentType.objects.get_for_model(model).id\n        ).select_related().order_by('action_time')\n\n        context = {\n            'title': _('Change history: %s') % force_text(obj),\n            'action_list': action_list,\n            'module_name': capfirst(force_text(opts.verbose_name_plural)),\n            'object': obj,\n            'app_label': app_label,\n            'opts': opts,\n        }\n        context.update(extra_context or {})\n        return TemplateResponse(request, self.object_history_template or [\n            \"admin/%s/%s/object_history.html\" % (app_label, opts.object_name.lower()),\n            \"admin/%s/object_history.html\" % app_label,\n            \"admin/object_history.html\"\n        ], context, current_app=self.admin_site.name)\n\nclass InlineModelAdmin(BaseModelAdmin):\n    \"\"\"\n    Options for inline editing of ``model`` instances.\n\n    Provide ``name`` to specify the attribute name of the ``ForeignKey`` from\n    ``model`` to its parent. This is required if ``model`` has more than one\n    ``ForeignKey`` to its parent.\n    \"\"\"\n    model = None\n    fk_name = None\n    formset = BaseInlineFormSet\n    extra = 3\n    max_num = None\n    template = None\n    verbose_name = None\n    verbose_name_plural = None\n    can_delete = True\n\n    def __init__(self, parent_model, admin_site):\n        self.admin_site = admin_site\n        self.parent_model = parent_model\n        self.opts = self.model._meta\n        super(InlineModelAdmin, self).__init__()\n        if self.verbose_name is None:\n            self.verbose_name = self.model._meta.verbose_name\n        if self.verbose_name_plural is None:\n            self.verbose_name_plural = self.model._meta.verbose_name_plural\n\n    @property\n    def media(self):\n        extra = '' if settings.DEBUG else '.min'\n        js = ['jquery%s.js' % extra, 'jquery.init.js', 'inlines%s.js' % extra]\n        if self.prepopulated_fields:\n            js.extend(['urlify.js', 'prepopulate%s.js' % extra])\n        if self.filter_vertical or self.filter_horizontal:\n            js.extend(['SelectBox.js', 'SelectFilter2.js'])\n        return forms.Media(js=[static('admin/js/%s' % url) for url in js])\n\n    def get_formset(self, request, obj=None, **kwargs):\n        \"\"\"Returns a BaseInlineFormSet class for use in admin add/change views.\"\"\"\n        if self.declared_fieldsets:\n            fields = flatten_fieldsets(self.declared_fieldsets)\n        else:\n            fields = None\n        if self.exclude is None:\n            exclude = []\n        else:\n            exclude = list(self.exclude)\n        exclude.extend(self.get_readonly_fields(request, obj))\n        if self.exclude is None and hasattr(self.form, '_meta') and self.form._meta.exclude:\n            # Take the custom ModelForm's Meta.exclude into account only if the\n            # InlineModelAdmin doesn't define its own.\n            exclude.extend(self.form._meta.exclude)\n        # if exclude is an empty list we use None, since that's the actual\n        # default\n        exclude = exclude or None\n        can_delete = self.can_delete and self.has_delete_permission(request, obj)\n        defaults = {\n            \"form\": self.form,\n            \"formset\": self.formset,\n            \"fk_name\": self.fk_name,\n            \"fields\": fields,\n            \"exclude\": exclude,\n            \"formfield_callback\": partial(self.formfield_for_dbfield, request=request),\n            \"extra\": self.extra,\n            \"max_num\": self.max_num,\n            \"can_delete\": can_delete,\n        }\n        defaults.update(kwargs)\n        return inlineformset_factory(self.parent_model, self.model, **defaults)\n\n    def get_fieldsets(self, request, obj=None):\n        if self.declared_fieldsets:\n            return self.declared_fieldsets\n        form = self.get_formset(request, obj).form\n        fields = list(form.base_fields) + list(self.get_readonly_fields(request, obj))\n        return [(None, {'fields': fields})]\n\n    def queryset(self, request):\n        queryset = super(InlineModelAdmin, self).queryset(request)\n        if not self.has_change_permission(request):\n            queryset = queryset.none()\n        return queryset\n\n    def has_add_permission(self, request):\n        if self.opts.auto_created:\n            # We're checking the rights to an auto-created intermediate model,\n            # which doesn't have its own individual permissions. The user needs\n            # to have the change permission for the related model in order to\n            # be able to do anything with the intermediate model.\n            return self.has_change_permission(request)\n        return request.user.has_perm(\n            self.opts.app_label + '.' + self.opts.get_add_permission())\n\n    def has_change_permission(self, request, obj=None):\n        opts = self.opts\n        if opts.auto_created:\n            # The model was auto-created as intermediary for a\n            # ManyToMany-relationship, find the target model\n            for field in opts.fields:\n                if field.rel and field.rel.to != self.parent_model:\n                    opts = field.rel.to._meta\n                    break\n        return request.user.has_perm(\n            opts.app_label + '.' + opts.get_change_permission())\n\n    def has_delete_permission(self, request, obj=None):\n        if self.opts.auto_created:\n            # We're checking the rights to an auto-created intermediate model,\n            # which doesn't have its own individual permissions. The user needs\n            # to have the change permission for the related model in order to\n            # be able to do anything with the intermediate model.\n            return self.has_change_permission(request, obj)\n        return request.user.has_perm(\n            self.opts.app_label + '.' + self.opts.get_delete_permission())\n\n\nclass StackedInline(InlineModelAdmin):\n    template = 'admin/edit_inline/stacked.html'\n\n\nclass TabularInline(InlineModelAdmin):\n    template = 'admin/edit_inline/tabular.html'\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/sites.py",
    "content": "from functools import update_wrapper\nfrom django.http import Http404, HttpResponseRedirect\nfrom django.contrib.admin import ModelAdmin, actions\nfrom django.contrib.admin.forms import AdminAuthenticationForm\nfrom django.contrib.auth import REDIRECT_FIELD_NAME\nfrom django.contrib.contenttypes import views as contenttype_views\nfrom django.views.decorators.csrf import csrf_protect\nfrom django.db.models.base import ModelBase\nfrom django.core.exceptions import ImproperlyConfigured\nfrom django.core.urlresolvers import reverse, NoReverseMatch\nfrom django.template.response import TemplateResponse\nfrom django.utils import six\nfrom django.utils.text import capfirst\nfrom django.utils.translation import ugettext as _\nfrom django.views.decorators.cache import never_cache\nfrom django.conf import settings\n\nLOGIN_FORM_KEY = 'this_is_the_login_form'\n\n\nclass AlreadyRegistered(Exception):\n    pass\n\n\nclass NotRegistered(Exception):\n    pass\n\n\nclass AdminSite(object):\n    \"\"\"\n    An AdminSite object encapsulates an instance of the Django admin application, ready\n    to be hooked in to your URLconf. Models are registered with the AdminSite using the\n    register() method, and the get_urls() method can then be used to access Django view\n    functions that present a full admin interface for the collection of registered\n    models.\n    \"\"\"\n    login_form = None\n    index_template = None\n    app_index_template = None\n    login_template = None\n    logout_template = None\n    password_change_template = None\n    password_change_done_template = None\n\n    def __init__(self, name='admin', app_name='admin'):\n        self._registry = {}  # model_class class -> admin_class instance\n        self.name = name\n        self.app_name = app_name\n        self._actions = {'delete_selected': actions.delete_selected}\n        self._global_actions = self._actions.copy()\n\n    def register(self, model_or_iterable, admin_class=None, **options):\n        \"\"\"\n        Registers the given model(s) with the given admin class.\n\n        The model(s) should be Model classes, not instances.\n\n        If an admin class isn't given, it will use ModelAdmin (the default\n        admin options). If keyword arguments are given -- e.g., list_display --\n        they'll be applied as options to the admin class.\n\n        If a model is already registered, this will raise AlreadyRegistered.\n\n        If a model is abstract, this will raise ImproperlyConfigured.\n        \"\"\"\n        if not admin_class:\n            admin_class = ModelAdmin\n\n        # Don't import the humongous validation code unless required\n        if admin_class and settings.DEBUG:\n            from django.contrib.admin.validation import validate\n        else:\n            validate = lambda model, adminclass: None\n\n        if isinstance(model_or_iterable, ModelBase):\n            model_or_iterable = [model_or_iterable]\n        for model in model_or_iterable:\n            if model._meta.abstract:\n                raise ImproperlyConfigured('The model %s is abstract, so it '\n                      'cannot be registered with admin.' % model.__name__)\n\n            if model in self._registry:\n                raise AlreadyRegistered('The model %s is already registered' % model.__name__)\n\n            # Ignore the registration if the model has been\n            # swapped out.\n            if not model._meta.swapped:\n                # If we got **options then dynamically construct a subclass of\n                # admin_class with those **options.\n                if options:\n                    # For reasons I don't quite understand, without a __module__\n                    # the created class appears to \"live\" in the wrong place,\n                    # which causes issues later on.\n                    options['__module__'] = __name__\n                    admin_class = type(\"%sAdmin\" % model.__name__, (admin_class,), options)\n\n                # Validate (which might be a no-op)\n                validate(admin_class, model)\n\n                # Instantiate the admin class to save in the registry\n                self._registry[model] = admin_class(model, self)\n\n    def unregister(self, model_or_iterable):\n        \"\"\"\n        Unregisters the given model(s).\n\n        If a model isn't already registered, this will raise NotRegistered.\n        \"\"\"\n        if isinstance(model_or_iterable, ModelBase):\n            model_or_iterable = [model_or_iterable]\n        for model in model_or_iterable:\n            if model not in self._registry:\n                raise NotRegistered('The model %s is not registered' % model.__name__)\n            del self._registry[model]\n\n    def add_action(self, action, name=None):\n        \"\"\"\n        Register an action to be available globally.\n        \"\"\"\n        name = name or action.__name__\n        self._actions[name] = action\n        self._global_actions[name] = action\n\n    def disable_action(self, name):\n        \"\"\"\n        Disable a globally-registered action. Raises KeyError for invalid names.\n        \"\"\"\n        del self._actions[name]\n\n    def get_action(self, name):\n        \"\"\"\n        Explicitally get a registered global action wheather it's enabled or\n        not. Raises KeyError for invalid names.\n        \"\"\"\n        return self._global_actions[name]\n\n    @property\n    def actions(self):\n        \"\"\"\n        Get all the enabled actions as an iterable of (name, func).\n        \"\"\"\n        return six.iteritems(self._actions)\n\n    def has_permission(self, request):\n        \"\"\"\n        Returns True if the given HttpRequest has permission to view\n        *at least one* page in the admin site.\n        \"\"\"\n        return request.user.is_active and request.user.is_staff\n\n    def check_dependencies(self):\n        \"\"\"\n        Check that all things needed to run the admin have been correctly installed.\n\n        The default implementation checks that LogEntry, ContentType and the\n        auth context processor are installed.\n        \"\"\"\n        from django.contrib.admin.models import LogEntry\n        from django.contrib.contenttypes.models import ContentType\n\n        if not LogEntry._meta.installed:\n            raise ImproperlyConfigured(\"Put 'django.contrib.admin' in your \"\n                \"INSTALLED_APPS setting in order to use the admin application.\")\n        if not ContentType._meta.installed:\n            raise ImproperlyConfigured(\"Put 'django.contrib.contenttypes' in \"\n                \"your INSTALLED_APPS setting in order to use the admin application.\")\n        if not ('django.contrib.auth.context_processors.auth' in settings.TEMPLATE_CONTEXT_PROCESSORS or\n            'django.core.context_processors.auth' in settings.TEMPLATE_CONTEXT_PROCESSORS):\n            raise ImproperlyConfigured(\"Put 'django.contrib.auth.context_processors.auth' \"\n                \"in your TEMPLATE_CONTEXT_PROCESSORS setting in order to use the admin application.\")\n\n    def admin_view(self, view, cacheable=False):\n        \"\"\"\n        Decorator to create an admin view attached to this ``AdminSite``. This\n        wraps the view and provides permission checking by calling\n        ``self.has_permission``.\n\n        You'll want to use this from within ``AdminSite.get_urls()``:\n\n            class MyAdminSite(AdminSite):\n\n                def get_urls(self):\n                    from django.conf.urls import patterns, url\n\n                    urls = super(MyAdminSite, self).get_urls()\n                    urls += patterns('',\n                        url(r'^my_view/$', self.admin_view(some_view))\n                    )\n                    return urls\n\n        By default, admin_views are marked non-cacheable using the\n        ``never_cache`` decorator. If the view can be safely cached, set\n        cacheable=True.\n        \"\"\"\n        def inner(request, *args, **kwargs):\n            if not self.has_permission(request):\n                if request.path == reverse('admin:logout',\n                                           current_app=self.name):\n                    index_path = reverse('admin:index', current_app=self.name)\n                    return HttpResponseRedirect(index_path)\n                return self.login(request)\n            return view(request, *args, **kwargs)\n        if not cacheable:\n            inner = never_cache(inner)\n        # We add csrf_protect here so this function can be used as a utility\n        # function for any view, without having to repeat 'csrf_protect'.\n        if not getattr(view, 'csrf_exempt', False):\n            inner = csrf_protect(inner)\n        return update_wrapper(inner, view)\n\n    def get_urls(self):\n        from django.conf.urls import patterns, url, include\n\n        if settings.DEBUG:\n            self.check_dependencies()\n\n        def wrap(view, cacheable=False):\n            def wrapper(*args, **kwargs):\n                return self.admin_view(view, cacheable)(*args, **kwargs)\n            return update_wrapper(wrapper, view)\n\n        # Admin-site-wide views.\n        urlpatterns = patterns('',\n            url(r'^$',\n                wrap(self.index),\n                name='index'),\n            url(r'^logout/$',\n                wrap(self.logout),\n                name='logout'),\n            url(r'^password_change/$',\n                wrap(self.password_change, cacheable=True),\n                name='password_change'),\n            url(r'^password_change/done/$',\n                wrap(self.password_change_done, cacheable=True),\n                name='password_change_done'),\n            url(r'^jsi18n/$',\n                wrap(self.i18n_javascript, cacheable=True),\n                name='jsi18n'),\n            url(r'^r/(?P<content_type_id>\\d+)/(?P<object_id>.+)/$',\n                wrap(contenttype_views.shortcut),\n                name='view_on_site'),\n            url(r'^(?P<app_label>\\w+)/$',\n                wrap(self.app_index),\n                name='app_list')\n        )\n\n        # Add in each model's views.\n        for model, model_admin in six.iteritems(self._registry):\n            urlpatterns += patterns('',\n                url(r'^%s/%s/' % (model._meta.app_label, model._meta.module_name),\n                    include(model_admin.urls))\n            )\n        return urlpatterns\n\n    @property\n    def urls(self):\n        return self.get_urls(), self.app_name, self.name\n\n    def password_change(self, request):\n        \"\"\"\n        Handles the \"change password\" task -- both form display and validation.\n        \"\"\"\n        from django.contrib.auth.views import password_change\n        url = reverse('admin:password_change_done', current_app=self.name)\n        defaults = {\n            'current_app': self.name,\n            'post_change_redirect': url\n        }\n        if self.password_change_template is not None:\n            defaults['template_name'] = self.password_change_template\n        return password_change(request, **defaults)\n\n    def password_change_done(self, request, extra_context=None):\n        \"\"\"\n        Displays the \"success\" page after a password change.\n        \"\"\"\n        from django.contrib.auth.views import password_change_done\n        defaults = {\n            'current_app': self.name,\n            'extra_context': extra_context or {},\n        }\n        if self.password_change_done_template is not None:\n            defaults['template_name'] = self.password_change_done_template\n        return password_change_done(request, **defaults)\n\n    def i18n_javascript(self, request):\n        \"\"\"\n        Displays the i18n JavaScript that the Django admin requires.\n\n        This takes into account the USE_I18N setting. If it's set to False, the\n        generated JavaScript will be leaner and faster.\n        \"\"\"\n        if settings.USE_I18N:\n            from django.views.i18n import javascript_catalog\n        else:\n            from django.views.i18n import null_javascript_catalog as javascript_catalog\n        return javascript_catalog(request, packages=['django.conf', 'django.contrib.admin'])\n\n    @never_cache\n    def logout(self, request, extra_context=None):\n        \"\"\"\n        Logs out the user for the given HttpRequest.\n\n        This should *not* assume the user is already logged in.\n        \"\"\"\n        from django.contrib.auth.views import logout\n        defaults = {\n            'current_app': self.name,\n            'extra_context': extra_context or {},\n        }\n        if self.logout_template is not None:\n            defaults['template_name'] = self.logout_template\n        return logout(request, **defaults)\n\n    @never_cache\n    def login(self, request, extra_context=None):\n        \"\"\"\n        Displays the login form for the given HttpRequest.\n        \"\"\"\n        from django.contrib.auth.views import login\n        context = {\n            'title': _('Log in'),\n            'app_path': request.get_full_path(),\n            REDIRECT_FIELD_NAME: request.get_full_path(),\n        }\n        context.update(extra_context or {})\n\n        defaults = {\n            'extra_context': context,\n            'current_app': self.name,\n            'authentication_form': self.login_form or AdminAuthenticationForm,\n            'template_name': self.login_template or 'admin/login.html',\n        }\n        return login(request, **defaults)\n\n    @never_cache\n    def index(self, request, extra_context=None):\n        \"\"\"\n        Displays the main admin index page, which lists all of the installed\n        apps that have been registered in this site.\n        \"\"\"\n        app_dict = {}\n        user = request.user\n        for model, model_admin in self._registry.items():\n            app_label = model._meta.app_label\n            has_module_perms = user.has_module_perms(app_label)\n\n            if has_module_perms:\n                perms = model_admin.get_model_perms(request)\n\n                # Check whether user has any perm for this module.\n                # If so, add the module to the model_list.\n                if True in perms.values():\n                    info = (app_label, model._meta.module_name)\n                    model_dict = {\n                        'name': capfirst(model._meta.verbose_name_plural),\n                        'perms': perms,\n                    }\n                    if perms.get('change', False):\n                        try:\n                            model_dict['admin_url'] = reverse('admin:%s_%s_changelist' % info, current_app=self.name)\n                        except NoReverseMatch:\n                            pass\n                    if perms.get('add', False):\n                        try:\n                            model_dict['add_url'] = reverse('admin:%s_%s_add' % info, current_app=self.name)\n                        except NoReverseMatch:\n                            pass\n                    if app_label in app_dict:\n                        app_dict[app_label]['models'].append(model_dict)\n                    else:\n                        app_dict[app_label] = {\n                            'name': app_label.title(),\n                            'app_url': reverse('admin:app_list', kwargs={'app_label': app_label}, current_app=self.name),\n                            'has_module_perms': has_module_perms,\n                            'models': [model_dict],\n                        }\n\n        # Sort the apps alphabetically.\n        app_list = list(six.itervalues(app_dict))\n        app_list.sort(key=lambda x: x['name'])\n\n        # Sort the models alphabetically within each app.\n        for app in app_list:\n            app['models'].sort(key=lambda x: x['name'])\n\n        context = {\n            'title': _('Site administration'),\n            'app_list': app_list,\n        }\n        context.update(extra_context or {})\n        return TemplateResponse(request, self.index_template or\n                                'admin/index.html', context,\n                                current_app=self.name)\n\n    def app_index(self, request, app_label, extra_context=None):\n        user = request.user\n        has_module_perms = user.has_module_perms(app_label)\n        app_dict = {}\n        for model, model_admin in self._registry.items():\n            if app_label == model._meta.app_label:\n                if has_module_perms:\n                    perms = model_admin.get_model_perms(request)\n\n                    # Check whether user has any perm for this module.\n                    # If so, add the module to the model_list.\n                    if True in perms.values():\n                        info = (app_label, model._meta.module_name)\n                        model_dict = {\n                            'name': capfirst(model._meta.verbose_name_plural),\n                            'perms': perms,\n                        }\n                        if perms.get('change', False):\n                            try:\n                                model_dict['admin_url'] = reverse('admin:%s_%s_changelist' % info, current_app=self.name)\n                            except NoReverseMatch:\n                                pass\n                        if perms.get('add', False):\n                            try:\n                                model_dict['add_url'] = reverse('admin:%s_%s_add' % info, current_app=self.name)\n                            except NoReverseMatch:\n                                pass\n                        if app_dict:\n                            app_dict['models'].append(model_dict),\n                        else:\n                            # First time around, now that we know there's\n                            # something to display, add in the necessary meta\n                            # information.\n                            app_dict = {\n                                'name': app_label.title(),\n                                'app_url': '',\n                                'has_module_perms': has_module_perms,\n                                'models': [model_dict],\n                            }\n        if not app_dict:\n            raise Http404('The requested admin page does not exist.')\n        # Sort the models alphabetically within each app.\n        app_dict['models'].sort(key=lambda x: x['name'])\n        context = {\n            'title': _('%s administration') % capfirst(app_label),\n            'app_list': [app_dict],\n        }\n        context.update(extra_context or {})\n\n        return TemplateResponse(request, self.app_index_template or [\n            'admin/%s/app_index.html' % app_label,\n            'admin/app_index.html'\n        ], context, current_app=self.name)\n\n# This global object represents the default admin site, for the common case.\n# You can instantiate AdminSite in your own code to create a custom admin site.\nsite = AdminSite()\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/static/admin/css/base.css",
    "content": "/*\n    DJANGO Admin styles\n*/\n\nbody {\n    margin: 0;\n    padding: 0;\n    font-size: 12px;\n    font-family: \"Lucida Grande\",\"DejaVu Sans\",\"Bitstream Vera Sans\",Verdana,Arial,sans-serif;\n    color: #333;\n    background: #fff;\n}\n\n/* LINKS */\n\na:link, a:visited {\n    color: #5b80b2;\n    text-decoration: none;\n}\n\na:hover {\n    color: #036;\n}\n\na img {\n    border: none;\n}\n\na.section:link, a.section:visited {\n    color: white;\n    text-decoration: none;\n}\n\n/* GLOBAL DEFAULTS */\n\np, ol, ul, dl {\n    margin: .2em 0 .8em 0;\n}\n\np {\n    padding: 0;\n    line-height: 140%;\n}\n\nh1,h2,h3,h4,h5 {\n    font-weight: bold;\n}\n\nh1 {\n    font-size: 18px;\n    color: #666;\n    padding: 0 6px 0 0;\n    margin: 0 0 .2em 0;\n}\n\nh2 {\n    font-size: 16px;\n    margin: 1em 0 .5em 0;\n}\n\nh2.subhead {\n    font-weight: normal;\n    margin-top: 0;\n}\n\nh3 {\n    font-size: 14px;\n    margin: .8em 0 .3em 0;\n    color: #666;\n    font-weight: bold;\n}\n\nh4 {\n    font-size: 12px;\n    margin: 1em 0 .8em 0;\n    padding-bottom: 3px;\n}\n\nh5 {\n    font-size: 10px;\n    margin: 1.5em 0 .5em 0;\n    color: #666;\n    text-transform: uppercase;\n    letter-spacing: 1px;\n}\n\nul li {\n    list-style-type: square;\n    padding: 1px 0;\n}\n\nul.plainlist {\n    margin-left: 0 !important;\n}\n\nul.plainlist li {\n    list-style-type: none;\n}\n\nli ul {\n    margin-bottom: 0;\n}\n\nli, dt, dd {\n    font-size: 11px;\n    line-height: 14px;\n}\n\ndt {\n    font-weight: bold;\n    margin-top: 4px;\n}\n\ndd {\n    margin-left: 0;\n}\n\nform {\n    margin: 0;\n    padding: 0;\n}\n\nfieldset {\n    margin: 0;\n    padding: 0;\n}\n\nblockquote {\n    font-size: 11px;\n    color: #777;\n    margin-left: 2px;\n    padding-left: 10px;\n    border-left: 5px solid #ddd;\n}\n\ncode, pre {\n    font-family: \"Bitstream Vera Sans Mono\", Monaco, \"Courier New\", Courier, monospace;\n    background: inherit;\n    color: #666;\n    font-size: 11px;\n}\n\npre.literal-block {\n    margin: 10px;\n    background: #eee;\n    padding: 6px 8px;\n}\n\ncode strong {\n    color: #930;\n}\n\nhr {\n    clear: both;\n    color: #eee;\n    background-color: #eee;\n    height: 1px;\n    border: none;\n    margin: 0;\n    padding: 0;\n    font-size: 1px;\n    line-height: 1px;\n}\n\n/* TEXT STYLES & MODIFIERS */\n\n.small {\n    font-size: 11px;\n}\n\n.tiny {\n    font-size: 10px;\n}\n\np.tiny {\n    margin-top: -2px;\n}\n\n.mini {\n    font-size: 9px;\n}\n\np.mini {\n    margin-top: -3px;\n}\n\n.help, p.help {\n    font-size: 10px !important;\n    color: #999;\n}\n\nimg.help-tooltip {\n    cursor: help;\n}\n\np img, h1 img, h2 img, h3 img, h4 img, td img {\n    vertical-align: middle;\n}\n\n.quiet, a.quiet:link, a.quiet:visited {\n    color: #999 !important;\n    font-weight: normal !important;\n}\n\n.quiet strong {\n    font-weight: bold !important;\n}\n\n.float-right {\n    float: right;\n}\n\n.float-left {\n    float: left;\n}\n\n.clear {\n    clear: both;\n}\n\n.align-left {\n    text-align: left;\n}\n\n.align-right {\n    text-align: right;\n}\n\n.example {\n    margin: 10px 0;\n    padding: 5px 10px;\n    background: #efefef;\n}\n\n.nowrap {\n    white-space: nowrap;\n}\n\n/* TABLES */\n\ntable {\n    border-collapse: collapse;\n    border-color: #ccc;\n}\n\ntd, th {\n    font-size: 11px;\n    line-height: 13px;\n    border-bottom: 1px solid #eee;\n    vertical-align: top;\n    padding: 5px;\n    font-family: \"Lucida Grande\", Verdana, Arial, sans-serif;\n}\n\nth {\n    text-align: left;\n    font-size: 12px;\n    font-weight: bold;\n}\n\nthead th,\ntfoot td {\n    color: #666;\n    padding: 2px 5px;\n    font-size: 11px;\n    background: #e1e1e1 url(../img/nav-bg.gif) top left repeat-x;\n    border-left: 1px solid #ddd;\n    border-bottom: 1px solid #ddd;\n}\n\ntfoot td {\n    border-bottom: none;\n    border-top: 1px solid #ddd;\n}\n\nthead th:first-child,\ntfoot td:first-child {\n    border-left: none !important;\n}\n\nthead th.optional {\n    font-weight: normal !important;\n}\n\nfieldset table {\n    border-right: 1px solid #eee;\n}\n\ntr.row-label td {\n    font-size: 9px;\n    padding-top: 2px;\n    padding-bottom: 0;\n    border-bottom: none;\n    color: #666;\n    margin-top: -1px;\n}\n\ntr.alt {\n    background: #f6f6f6;\n}\n\n.row1 {\n    background: #EDF3FE;\n}\n\n.row2 {\n    background: white;\n}\n\n/* SORTABLE TABLES */\n\nthead th {\n    padding: 2px 5px;\n    line-height: normal;\n}\n\nthead th a:link, thead th a:visited {\n    color: #666;\n}\n\nthead th.sorted {\n    background: #c5c5c5 url(../img/nav-bg-selected.gif) top left repeat-x;\n}\n\nthead th.sorted .text {\n\tpadding-right: 42px;\n}\n\ntable thead th .text span {\n    padding: 2px 5px;\n    display:block;\n}\n\ntable thead th .text a {\n    display: block;\n    cursor: pointer;\n    padding: 2px 5px;\n}\n\ntable thead th.sortable:hover {\n    background: white url(../img/nav-bg-reverse.gif) 0 -5px repeat-x;\n}\n\nthead th.sorted a.sortremove {\n    visibility: hidden;\n}\n\ntable thead th.sorted:hover a.sortremove {\n    visibility: visible;\n}\n\ntable thead th.sorted .sortoptions {\n    display: block;\n    padding: 4px 5px 0 5px;\n    float: right;\n    text-align: right;\n}\n\ntable thead th.sorted .sortpriority {\n    font-size: .8em;\n    min-width: 12px;\n    text-align: center;\n    vertical-align: top;\n}\n\ntable thead th.sorted .sortoptions a {\n    width: 14px;\n    height: 12px;\n    display: inline-block;\n}\n\ntable thead th.sorted .sortoptions a.sortremove {\n    background: url(../img/sorting-icons.gif) -4px -5px no-repeat;\n}\n\ntable thead th.sorted .sortoptions a.sortremove:hover {\n    background: url(../img/sorting-icons.gif) -4px -27px no-repeat;\n}\n\ntable thead th.sorted .sortoptions a.ascending {\n    background: url(../img/sorting-icons.gif) -5px -50px no-repeat;\n}\n\ntable thead th.sorted .sortoptions a.ascending:hover {\n    background: url(../img/sorting-icons.gif) -5px -72px no-repeat;\n}\n\ntable thead th.sorted .sortoptions a.descending {\n    background: url(../img/sorting-icons.gif) -5px -94px no-repeat;\n}\n\ntable thead th.sorted .sortoptions a.descending:hover {\n    background: url(../img/sorting-icons.gif) -5px -115px no-repeat;\n}\n\n/* ORDERABLE TABLES */\n\ntable.orderable tbody tr td:hover {\n    cursor: move;\n}\n\ntable.orderable tbody tr td:first-child {\n    padding-left: 14px;\n    background-image: url(../img/nav-bg-grabber.gif);\n    background-repeat: repeat-y;\n}\n\ntable.orderable-initalized .order-cell, body>tr>td.order-cell {\n    display: none;\n}\n\n/* FORM DEFAULTS */\n\ninput, textarea, select, .form-row p {\n    margin: 2px 0;\n    padding: 2px 3px;\n    vertical-align: middle;\n    font-family: \"Lucida Grande\", Verdana, Arial, sans-serif;\n    font-weight: normal;\n    font-size: 11px;\n}\n\ntextarea {\n    vertical-align: top !important;\n}\n\ninput[type=text], input[type=password], textarea, select, .vTextField {\n    border: 1px solid #ccc;\n}\n\n/* FORM BUTTONS */\n\n.button, input[type=submit], input[type=button], .submit-row input {\n    background: white url(../img/nav-bg.gif) bottom repeat-x;\n    padding: 3px 5px;\n    color: black;\n    border: 1px solid #bbb;\n    border-color: #ddd #aaa #aaa #ddd;\n}\n\n.button:active, input[type=submit]:active, input[type=button]:active {\n    background-image: url(../img/nav-bg-reverse.gif);\n    background-position: top;\n}\n\n.button[disabled], input[type=submit][disabled], input[type=button][disabled] {\n\tbackground-image: url(../img/nav-bg.gif);\n\tbackground-position: bottom;\n\topacity: 0.4;\n}\n\n.button.default, input[type=submit].default, .submit-row input.default {\n    border: 2px solid #5b80b2;\n    background: #7CA0C7 url(../img/default-bg.gif) bottom repeat-x;\n    font-weight: bold;\n    color: white;\n    float: right;\n}\n\n.button.default:active, input[type=submit].default:active {\n    background-image: url(../img/default-bg-reverse.gif);\n    background-position: top;\n}\n\n.button[disabled].default, input[type=submit][disabled].default, input[type=button][disabled].default {\n\tbackground-image: url(../img/default-bg.gif);\n\tbackground-position: bottom;\n\topacity: 0.4;\n}\n\n\n/* MODULES */\n\n.module {\n    border: 1px solid #ccc;\n    margin-bottom: 5px;\n    background: white;\n}\n\n.module p, .module ul, .module h3, .module h4, .module dl, .module pre {\n    padding-left: 10px;\n    padding-right: 10px;\n}\n\n.module blockquote {\n    margin-left: 12px;\n}\n\n.module ul, .module ol {\n    margin-left: 1.5em;\n}\n\n.module h3 {\n    margin-top: .6em;\n}\n\n.module h2, .module caption, .inline-group h2 {\n    margin: 0;\n    padding: 2px 5px 3px 5px;\n    font-size: 11px;\n    text-align: left;\n    font-weight: bold;\n    background: #7CA0C7 url(../img/default-bg.gif) top left repeat-x;\n    color: white;\n}\n\n.module table {\n    border-collapse: collapse;\n}\n\n/* MESSAGES & ERRORS */\n\nul.messagelist {\n    padding: 0 0 5px 0;\n    margin: 0;\n}\n\nul.messagelist li {\n    font-size: 12px;\n    display: block;\n    padding: 4px 5px 4px 25px;\n    margin: 0 0 3px 0;\n    border-bottom: 1px solid #ddd;\n    color: #666;\n    background: #ffc url(../img/icon_success.gif) 5px .3em no-repeat;\n}\n\nul.messagelist li.warning{\n    background-image: url(../img/icon_alert.gif);\n}\n\nul.messagelist li.error{\n    background-image: url(../img/icon_error.gif);\n}\n\n.errornote {\n    font-size: 12px !important;\n    display: block;\n    padding: 4px 5px 4px 25px;\n    margin: 0 0 3px 0;\n    border: 1px solid red;\n    color: red;\n    background: #ffc url(../img/icon_error.gif) 5px .3em no-repeat;\n}\n\nul.errorlist {\n    margin: 0 !important;\n    padding: 0 !important;\n}\n\n.errorlist li {\n    font-size: 12px !important;\n    display: block;\n    padding: 4px 5px 4px 25px;\n    margin: 0 0 3px 0;\n    border: 1px solid red;\n    color: white;\n    background: red url(../img/icon_alert.gif) 5px .3em no-repeat;\n}\n\n.errorlist li a {\n \tcolor: white;\n    text-decoration: underline;\n}\n\ntd ul.errorlist {\n    margin: 0 !important;\n    padding: 0 !important;\n}\n\ntd ul.errorlist li {\n    margin: 0 !important;\n}\n\n.errors {\n    background: #ffc;\n}\n\n.errors input, .errors select, .errors textarea {\n    border: 1px solid red;\n}\n\ndiv.system-message {\n    background: #ffc;\n    margin: 10px;\n    padding: 6px 8px;\n    font-size: .8em;\n}\n\ndiv.system-message p.system-message-title {\n    padding: 4px 5px 4px 25px;\n    margin: 0;\n    color: red;\n    background: #ffc url(../img/icon_error.gif) 5px .3em no-repeat;\n}\n\n.description {\n    font-size: 12px;\n    padding: 5px 0 0 12px;\n}\n\n/* BREADCRUMBS */\n\ndiv.breadcrumbs {\n    background: white url(../img/nav-bg-reverse.gif) 0 -10px repeat-x;\n    padding: 2px 8px 3px 8px;\n    font-size: 11px;\n    color: #999;\n    border-top: 1px solid white;\n    border-bottom: 1px solid #ccc;\n    text-align: left;\n}\n\n/* ACTION ICONS */\n\n.addlink {\n    padding-left: 12px;\n    background: url(../img/icon_addlink.gif) 0 .2em no-repeat;\n}\n\n.changelink {\n    padding-left: 12px;\n    background: url(../img/icon_changelink.gif) 0 .2em no-repeat;\n}\n\n.deletelink {\n    padding-left: 12px;\n    background: url(../img/icon_deletelink.gif) 0 .25em no-repeat;\n}\n\na.deletelink:link, a.deletelink:visited {\n    color: #CC3434;\n}\n\na.deletelink:hover {\n    color: #993333;\n}\n\n/* OBJECT TOOLS */\n\n.object-tools {\n    font-size: 10px;\n    font-weight: bold;\n    font-family: Arial,Helvetica,sans-serif;\n    padding-left: 0;\n    float: right;\n    position: relative;\n    margin-top: -2.4em;\n    margin-bottom: -2em;\n}\n\n.form-row .object-tools {\n    margin-top: 5px;\n    margin-bottom: 5px;\n    float: none;\n    height: 2em;\n    padding-left: 3.5em;\n}\n\n.object-tools li {\n    display: block;\n    float: left;\n    background: url(../img/tool-left.gif) 0 0 no-repeat;\n    padding: 0 0 0 8px;\n    margin-left: 2px;\n    height: 16px;\n}\n\n.object-tools li:hover {\n    background: url(../img/tool-left_over.gif) 0 0 no-repeat;\n}\n\n.object-tools a:link, .object-tools a:visited {\n    display: block;\n    float: left;\n    color: white;\n    padding: .1em 14px .1em 8px;\n    height: 14px;\n    background: #999 url(../img/tool-right.gif) 100% 0 no-repeat;\n}\n\n.object-tools a:hover, .object-tools li:hover a {\n    background: #5b80b2 url(../img/tool-right_over.gif) 100% 0 no-repeat;\n}\n\n.object-tools a.viewsitelink, .object-tools a.golink {\n    background: #999 url(../img/tooltag-arrowright.gif) top right no-repeat;\n    padding-right: 28px;\n}\n\n.object-tools a.viewsitelink:hover, .object-tools a.golink:hover {\n    background: #5b80b2 url(../img/tooltag-arrowright_over.gif) top right no-repeat;\n}\n\n.object-tools a.addlink {\n    background: #999 url(../img/tooltag-add.gif) top right no-repeat;\n    padding-right: 28px;\n}\n\n.object-tools a.addlink:hover {\n    background: #5b80b2 url(../img/tooltag-add_over.gif) top right no-repeat;\n}\n\n/* OBJECT HISTORY */\n\ntable#change-history {\n    width: 100%;\n}\n\ntable#change-history tbody th {\n    width: 16em;\n}\n\n/* PAGE STRUCTURE */\n\n#container {\n    position: relative;\n    width: 100%;\n    min-width: 760px;\n    padding: 0;\n}\n\n#content {\n    margin: 10px 15px;\n}\n\n#header {\n    width: 100%;\n}\n\n#content-main {\n    float: left;\n    width: 100%;\n}\n\n#content-related {\n    float: right;\n    width: 18em;\n    position: relative;\n    margin-right: -19em;\n}\n\n#footer {\n    clear: both;\n    padding: 10px;\n}\n\n/* COLUMN TYPES */\n\n.colMS {\n    margin-right: 20em !important;\n}\n\n.colSM {\n    margin-left: 20em !important;\n}\n\n.colSM #content-related {\n    float: left;\n    margin-right: 0;\n    margin-left: -19em;\n}\n\n.colSM #content-main {\n    float: right;\n}\n\n.popup .colM {\n    width: 95%;\n}\n\n.subcol {\n    float: left;\n    width: 46%;\n    margin-right: 15px;\n}\n\n.dashboard #content {\n    width: 500px;\n}\n\n/* HEADER */\n\n#header {\n    background: #417690;\n    color: #ffc;\n    overflow: hidden;\n}\n\n#header a:link, #header a:visited {\n    color: white;\n}\n\n#header a:hover {\n    text-decoration: underline;\n}\n\n#branding h1 {\n    padding: 0 10px;\n    font-size: 18px;\n    margin: 8px 0;\n    font-weight: normal;\n    color: #f4f379;\n}\n\n#branding h2 {\n    padding: 0 10px;\n    font-size: 14px;\n    margin: -8px 0 8px 0;\n    font-weight: normal;\n    color: #ffc;\n}\n\n#user-tools {\n    position: absolute;\n    top: 0;\n    right: 0;\n    padding: 1.2em 10px;\n    font-size: 11px;\n    text-align: right;\n}\n\n/* SIDEBAR */\n\n#content-related h3 {\n    font-size: 12px;\n    color: #666;\n    margin-bottom: 3px;\n}\n\n#content-related h4 {\n    font-size: 11px;\n}\n\n#content-related .module h2 {\n    background: #eee url(../img/nav-bg.gif) bottom left repeat-x;\n    color: #666;\n}\n\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/static/admin/css/changelists.css",
    "content": "/* CHANGELISTS */\n\n#changelist {\n    position: relative;\n    width: 100%;\n}\n\n#changelist table {\n    width: 100%;\n}\n\n.change-list .hiddenfields { display:none; }\n\n.change-list .filtered table {\n    border-right: 1px solid #ddd;\n}\n\n.change-list .filtered {\n    min-height: 400px;\n}\n\n.change-list .filtered {\n    background: white url(../img/changelist-bg.gif) top right repeat-y !important;\n}\n\n.change-list .filtered .results, .change-list .filtered .paginator, .filtered #toolbar, .filtered div.xfull {\n    margin-right: 160px !important;\n    width: auto !important;\n}\n\n.change-list .filtered table tbody th {\n    padding-right: 1em;\n}\n\n#changelist .toplinks {\n    border-bottom: 1px solid #ccc !important;\n}\n\n#changelist .paginator {\n    color: #666;\n    border-top: 1px solid #eee;\n    border-bottom: 1px solid #eee;\n    background: white url(../img/nav-bg.gif) 0 180% repeat-x;\n    overflow: hidden;\n}\n\n.change-list .filtered .paginator {\n    border-right: 1px solid #ddd;\n}\n\n/* CHANGELIST TABLES */\n\n#changelist table thead th {\n    padding: 0;\n    white-space: nowrap;\n    vertical-align: middle;\n}\n\n#changelist table thead th.action-checkbox-column {\n    width: 1.5em;\n    text-align: center;\n}\n\n#changelist table tbody td, #changelist table tbody th {\n    border-left: 1px solid #ddd;\n}\n\n#changelist table tbody td:first-child, #changelist table tbody th:first-child {\n    border-left: 0;\n    border-right: 1px solid #ddd;\n}\n\n#changelist table tbody td.action-checkbox {\n    text-align:center;\n}\n\n#changelist table tfoot {\n    color: #666;\n}\n\n/* TOOLBAR */\n\n#changelist #toolbar {\n    padding: 3px;\n    border-bottom: 1px solid #ddd;\n    background: #e1e1e1 url(../img/nav-bg.gif) top left repeat-x;\n    color: #666;\n}\n\n#changelist #toolbar form input {\n    font-size: 11px;\n    padding: 1px 2px;\n}\n\n#changelist #toolbar form #searchbar {\n    padding: 2px;\n}\n\n#changelist #changelist-search img {\n    vertical-align: middle;\n}\n\n/* FILTER COLUMN */\n\n#changelist-filter {\n    position: absolute;\n    top: 0;\n    right: 0;\n    z-index: 1000;\n    width: 160px;\n    border-left: 1px solid #ddd;\n    background: #efefef;\n    margin: 0;\n}\n\n#changelist-filter h2 {\n    font-size: 11px;\n    padding: 2px 5px;\n    border-bottom: 1px solid #ddd;\n}\n\n#changelist-filter h3 {\n    font-size: 12px;\n    margin-bottom: 0;\n}\n\n#changelist-filter ul {\n    padding-left: 0;\n    margin-left: 10px;\n}\n\n#changelist-filter li {\n    list-style-type: none;\n    margin-left: 0;\n    padding-left: 0;\n}\n\n#changelist-filter a {\n    color: #999;\n}\n\n#changelist-filter a:hover {\n    color: #036;\n}\n\n#changelist-filter li.selected {\n    border-left: 5px solid #ccc;\n    padding-left: 5px;\n    margin-left: -10px;\n}\n\n#changelist-filter li.selected a {\n    color: #5b80b2 !important;\n}\n\n/* DATE DRILLDOWN */\n\n.change-list ul.toplinks {\n    display: block;\n    background: white url(../img/nav-bg-reverse.gif) 0 -10px repeat-x;\n    border-top: 1px solid white;\n    float: left;\n    padding: 0 !important;\n    margin: 0 !important;\n    width: 100%;\n}\n\n.change-list ul.toplinks li {\n    padding: 3px 6px;\n    font-weight: bold;\n    list-style-type: none;\n    display: inline-block;\n}\n\n.change-list ul.toplinks .date-back a {\n    color: #999;\n}\n\n.change-list ul.toplinks .date-back a:hover {\n    color: #036;\n}\n\n/* PAGINATOR */\n\n.paginator {\n    font-size: 11px;\n    padding-top: 10px;\n    padding-bottom: 10px;\n    line-height: 22px;\n    margin: 0;\n    border-top: 1px solid #ddd;\n}\n\n.paginator a:link, .paginator a:visited {\n    padding: 2px 6px;\n    border: solid 1px #ccc;\n    background: white;\n    text-decoration: none;\n}\n\n.paginator a.showall {\n    padding: 0 !important;\n    border: none !important;\n}\n\n.paginator a.showall:hover {\n    color: #036 !important;\n    background: transparent !important;\n}\n\n.paginator .end {\n    border-width: 2px !important;\n    margin-right: 6px;\n}\n\n.paginator .this-page {\n    padding: 2px 6px;\n    font-weight: bold;\n    font-size: 13px;\n    vertical-align: top;\n}\n\n.paginator a:hover {\n    color: white;\n    background: #5b80b2;\n    border-color: #036;\n}\n\n/* ACTIONS */\n\n.filtered .actions {\n    margin-right: 160px !important;\n    border-right: 1px solid #ddd;\n}\n\n#changelist table input {\n    margin: 0;\n}\n\n#changelist table tbody tr.selected {\n    background-color: #FFFFCC;\n}\n\n#changelist .actions {\n    color: #999;\n    padding: 3px;\n    border-top: 1px solid #fff;\n    border-bottom: 1px solid #ddd;\n    background: white url(../img/nav-bg-reverse.gif) 0 -10px repeat-x;\n}\n\n#changelist .actions.selected {\n    background: #fffccf;\n    border-top: 1px solid #fffee8;\n    border-bottom: 1px solid #edecd6;\n}\n\n#changelist .actions span.all,\n#changelist .actions span.action-counter,\n#changelist .actions span.clear,\n#changelist .actions span.question {\n    font-size: 11px;\n    margin: 0 0.5em;\n    display: none;\n}\n\n#changelist .actions:last-child {\n    border-bottom: none;\n}\n\n#changelist .actions select {\n    border: 1px solid #aaa;\n    margin-left: 0.5em;\n    padding: 1px 2px;\n}\n\n#changelist .actions label {\n    font-size: 11px;\n    margin-left: 0.5em;\n}\n\n#changelist #action-toggle {\n    display: none;\n}\n\n#changelist .actions .button {\n    font-size: 11px;\n    padding: 1px 2px;\n}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/static/admin/css/dashboard.css",
    "content": "/* DASHBOARD */\n\n.dashboard .module table th {\n    width: 100%;\n}\n\n.dashboard .module table td {\n    white-space: nowrap;\n}\n\n.dashboard .module table td a {\n    display: block;\n    padding-right: .6em;\n}\n\n/* RECENT ACTIONS MODULE */\n\n.module ul.actionlist {\n    margin-left: 0;\n}\n\nul.actionlist li {\n    list-style-type: none;\n}\n\nul.actionlist li.changelink {\n    overflow: hidden;\n    text-overflow: ellipsis;\n    -o-text-overflow: ellipsis;\n}"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/static/admin/css/forms.css",
    "content": "@import url('widgets.css');\n\n/* FORM ROWS */\n\n.form-row {\n    overflow: hidden;\n    padding: 8px 12px;\n    font-size: 11px;\n    border-bottom: 1px solid #eee;\n}\n\n.form-row img, .form-row input {\n    vertical-align: middle;\n}\n\nform .form-row p {\n    padding-left: 0;\n    font-size: 11px;\n}\n\n/* FORM LABELS */\n\nform h4 {\n    margin: 0 !important;\n    padding: 0 !important;\n    border: none !important;\n}\n\nlabel {\n    font-weight: normal !important;\n    color: #666;\n    font-size: 12px;\n}\n\n.required label, label.required {\n    font-weight: bold !important;\n    color: #333 !important;\n}\n\n/* RADIO BUTTONS */\n\nform ul.radiolist li {\n    list-style-type: none;\n}\n\nform ul.radiolist label {\n    float: none;\n    display: inline;\n}\n\nform ul.inline {\n    margin-left: 0;\n    padding: 0;\n}\n\nform ul.inline li {\n    float: left;\n    padding-right: 7px;\n}\n\n/* ALIGNED FIELDSETS */\n\n.aligned label {\n    display: block;\n    padding: 3px 10px 0 0;\n    float: left;\n    width: 8em;\n}\n\n.aligned ul label {\n    display: inline;\n    float: none;\n    width: auto;\n}\n\n.colMS .aligned .vLargeTextField, .colMS .aligned .vXMLLargeTextField {\n    width: 350px;\n}\n\nform .aligned p, form .aligned ul {\n    margin-left: 7em;\n    padding-left: 30px;\n}\n\nform .aligned table p {\n    margin-left: 0;\n    padding-left: 0;\n}\n\nform .aligned p.help {\n    padding-left: 38px;\n}\n\n.aligned .vCheckboxLabel {\n    float: none !important;\n    display: inline;\n    padding-left: 4px;\n}\n\n.colM .aligned .vLargeTextField, .colM .aligned .vXMLLargeTextField {\n    width: 610px;\n}\n\n.checkbox-row p.help {\n    margin-left: 0;\n    padding-left: 0 !important;\n}\n\nfieldset .field-box {\n    float: left;\n    margin-right: 20px;\n}\n\n/* WIDE FIELDSETS */\n\n.wide label {\n    width: 15em !important;\n}\n\nform .wide p {\n    margin-left: 15em;\n}\n\nform .wide p.help {\n    padding-left: 38px;\n}\n\n.colM fieldset.wide .vLargeTextField, .colM fieldset.wide .vXMLLargeTextField {\n    width: 450px;\n}\n\n/* COLLAPSED FIELDSETS */\n\nfieldset.collapsed * {\n    display: none;\n}\n\nfieldset.collapsed h2, fieldset.collapsed {\n    display: block !important;\n}\n\nfieldset.collapsed h2 {\n    background-image: url(../img/nav-bg.gif);\n    background-position: bottom left;\n    color: #999;\n}\n\nfieldset.collapsed .collapse-toggle {\n    background: transparent;\n    display: inline !important;\n}\n\n/* MONOSPACE TEXTAREAS */\n\nfieldset.monospace textarea {\n    font-family: \"Bitstream Vera Sans Mono\",Monaco,\"Courier New\",Courier,monospace;\n}\n\n/* SUBMIT ROW */\n\n.submit-row {\n    padding: 5px 7px;\n    text-align: right;\n    background: white url(../img/nav-bg.gif) 0 100% repeat-x;\n    border: 1px solid #ccc;\n    margin: 5px 0;\n    overflow: hidden;\n}\n\nbody.popup .submit-row {\n    overflow: auto;\n}\n\n.submit-row input {\n    margin: 0 0 0 5px;\n}\n\n.submit-row p {\n    margin: 0.3em;\n}\n\n.submit-row p.deletelink-box {\n    float: left;\n}\n\n.submit-row .deletelink {\n    background: url(../img/icon_deletelink.gif) 0 50% no-repeat;\n    padding-left: 14px;\n}\n\n/* CUSTOM FORM FIELDS */\n\n.vSelectMultipleField {\n    vertical-align: top !important;\n}\n\n.vCheckboxField {\n    border: none;\n}\n\n.vDateField, .vTimeField {\n    margin-right: 2px;\n}\n\n.vURLField {\n    width: 30em;\n}\n\n.vLargeTextField, .vXMLLargeTextField {\n    width: 48em;\n}\n\n.flatpages-flatpage #id_content {\n    height: 40.2em;\n}\n\n.module table .vPositiveSmallIntegerField {\n    width: 2.2em;\n}\n\n.vTextField {\n    width: 20em;\n}\n\n.vIntegerField {\n    width: 5em;\n}\n\n.vBigIntegerField {\n    width: 10em;\n}\n\n.vForeignKeyRawIdAdminField {\n    width: 5em;\n}\n\n/* INLINES */\n\n.inline-group {\n    padding: 0;\n    border: 1px solid #ccc;\n    margin: 10px 0;\n}\n\n.inline-group .aligned label {\n    width: 8em;\n}\n\n.inline-related {\n    position: relative;\n}\n\n.inline-related h3 {\n    margin: 0;\n    color: #666;\n    padding: 3px 5px;\n    font-size: 11px;\n    background: #e1e1e1 url(../img/nav-bg.gif) top left repeat-x;\n    border-bottom: 1px solid #ddd;\n}\n\n.inline-related h3 span.delete {\n    float: right;\n}\n\n.inline-related h3 span.delete label {\n    margin-left: 2px;\n    font-size: 11px;\n}\n\n.inline-related fieldset {\n    margin: 0;\n    background: #fff;\n    border: none;\n    width: 100%;\n}\n\n.inline-related fieldset.module h3 {\n    margin: 0;\n    padding: 2px 5px 3px 5px;\n    font-size: 11px;\n    text-align: left;\n    font-weight: bold;\n    background: #bcd;\n    color: #fff;\n}\n\n.inline-group .tabular fieldset.module {\n    border: none;\n    border-bottom: 1px solid #ddd;\n}\n\n.inline-related.tabular fieldset.module table {\n    width: 100%;\n}\n\n.last-related fieldset {\n    border: none;\n}\n\n.inline-group .tabular tr.has_original td {\n    padding-top: 2em;\n}\n\n.inline-group .tabular tr td.original {\n    padding: 2px 0 0 0;\n    width: 0;\n    _position: relative;\n}\n\n.inline-group .tabular th.original {\n    width: 0px;\n    padding: 0;\n}\n\n.inline-group .tabular td.original p {\n    position: absolute;\n    left: 0;\n    height: 1.1em;\n    padding: 2px 7px;\n    overflow: hidden;\n    font-size: 9px;\n    font-weight: bold;\n    color: #666;\n    _width: 700px;\n}\n\n.inline-group ul.tools {\n    padding: 0;\n    margin: 0;\n    list-style: none;\n}\n\n.inline-group ul.tools li {\n    display: inline;\n    padding: 0 5px;\n}\n\n.inline-group div.add-row,\n.inline-group .tabular tr.add-row td {\n    color: #666;\n    padding: 3px 5px;\n    border-bottom: 1px solid #ddd;\n    background: #e1e1e1 url(../img/nav-bg.gif) top left repeat-x;\n}\n\n.inline-group .tabular tr.add-row td {\n    padding: 4px 5px 3px;\n    border-bottom: none;\n}\n\n.inline-group ul.tools a.add,\n.inline-group div.add-row a,\n.inline-group .tabular tr.add-row td a {\n    background: url(../img/icon_addlink.gif) 0 50% no-repeat;\n    padding-left: 14px;\n    font-size: 11px;\n    outline: 0; /* Remove dotted border around link */\n}\n\n.empty-form {\n    display: none;\n}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/static/admin/css/ie.css",
    "content": "/* IE 6 & 7 */\n\n/* Proper fixed width for dashboard in IE6 */\n\n.dashboard #content {\n    *width: 768px;\n}\n\n.dashboard #content-main {\n    *width: 535px;\n}\n\n/* IE 6 ONLY */\n\n/* Keep header from flowing off the page */\n\n#container {\n    _position: static;\n}\n\n/* Put the right sidebars back on the page */\n\n.colMS #content-related {\n    _margin-right: 0;\n    _margin-left: 10px;\n    _position: static;\n}\n\n/* Put the left sidebars back on the page */\n\n.colSM #content-related {\n    _margin-right: 10px;\n    _margin-left: -115px;\n    _position: static;\n}\n\n.form-row {\n    _height: 1%;\n}\n\n/* Fix right margin for changelist filters in IE6 */\n\n#changelist-filter ul {\n    _margin-right: -10px;\n}\n\n/* IE ignores min-height, but treats height as if it were min-height */\n\n.change-list .filtered {\n    _height: 400px;\n}\n\n/* IE doesn't know alpha transparency in PNGs */\n\n.inline-deletelink {\n    background: transparent url(../img/inline-delete-8bit.png) no-repeat;\n}\n\n/* IE7 doesn't support inline-block */\n.change-list ul.toplinks li {\n    zoom: 1;\n    *display: inline;\n}"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/static/admin/css/login.css",
    "content": "/* LOGIN FORM */\n\nbody.login {\n    background: #eee;\n}\n\n.login #container {\n    background: white;\n    border: 1px solid #ccc;\n    width: 28em;\n    min-width: 300px;\n    margin-left: auto;\n    margin-right: auto;\n    margin-top: 100px;\n}\n\n.login #content-main {\n    width: 100%;\n}\n\n.login form {\n    margin-top: 1em;\n}\n\n.login .form-row {\n    padding: 4px 0;\n    float: left;\n    width: 100%;\n}\n\n.login .form-row label {\n    float: left;\n    width: 9em;\n    padding-right: 0.5em;\n    line-height: 2em;\n    text-align: right;\n    font-size: 1em;\n    color: #333;\n}\n\n.login .form-row #id_username, .login .form-row #id_password {\n    width: 14em;\n}\n\n.login span.help {\n    font-size: 10px;\n    display: block;\n}\n\n.login .submit-row {\n    clear: both;\n    padding: 1em 0 0 9.4em;\n}\n\n.login .password-reset-link {\n    text-align: center;\n}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/static/admin/css/rtl.css",
    "content": "body {\n    direction: rtl;\n}\n\n/* LOGIN */\n\n.login .form-row {\n    float: right;\n}\n\n.login .form-row label {\n    float: right;\n    padding-left: 0.5em;\n    padding-right: 0;\n    text-align: left;\n}\n\n.login .submit-row {\n    clear: both;\n    padding: 1em 9.4em 0 0;\n}\n\n/* GLOBAL */\n\nth {\n    text-align: right;\n}\n\n.module h2, .module caption {\n    text-align: right;\n}\n\n.addlink, .changelink {\n    padding-left: 0px;\n    padding-right: 12px;\n    background-position: 100% 0.2em;\n}\n\n.deletelink {\n    padding-left: 0px;\n    padding-right: 12px;\n    background-position: 100% 0.25em;\n}\n\n.object-tools {\n    float: left;\n}\n\nthead th:first-child,\ntfoot td:first-child {\n    border-left: 1px solid #ddd !important;\n}\n\n/* LAYOUT */\n\n#user-tools {\n    right: auto;\n    left: 0;\n    text-align: left;\n}\n\ndiv.breadcrumbs {\n    text-align: right;\n}\n\n#content-main {\n    float: right;\n}\n\n#content-related {\n    float: left;\n    margin-left: -19em;\n    margin-right: auto;\n}\n\n.colMS {\n    margin-left: 20em !important;\n    margin-right: 10px !important;\n}\n\n/* SORTABLE TABLES */\n\ntable thead th.sorted .sortoptions {\n   float: left;\n}\n\nthead th.sorted .text {\n\tpadding-right: 0;\n\tpadding-left: 42px;\n}\n\n/* dashboard styles */\n\n.dashboard .module table td a {\n    padding-left: .6em;\n    padding-right: 12px;\n}\n\n/* changelists styles */\n\n.change-list .filtered {\n    background: white url(../img/changelist-bg_rtl.gif) top left repeat-y !important;\n}\n\n.change-list .filtered table {\n    border-left: 1px solid #ddd;\n    border-right: 0px none;\n}\n\n#changelist-filter {\n    right: auto;\n    left: 0;\n    border-left: 0px none;\n    border-right: 1px solid #ddd;\n}\n\n.change-list .filtered .results, .change-list .filtered .paginator, .filtered #toolbar, .filtered div.xfull {\n    margin-right: 0px !important;\n    margin-left: 160px !important;\n}\n\n#changelist-filter li.selected {\n    border-left: 0px none;\n    padding-left: 0px;\n    margin-left: 0;\n    border-right: 5px solid #ccc;\n    padding-right: 5px;\n    margin-right: -10px;\n}\n\n.filtered .actions {\n    border-left:1px solid #DDDDDD;\n    margin-left:160px !important;\n    border-right: 0 none;\n    margin-right:0 !important;\n}\n\n#changelist table tbody td:first-child, #changelist table tbody th:first-child {\n    border-right: 0;\n    border-left: 1px solid #ddd;\n}\n\n/* FORMS */\n\n.aligned label {\n    padding: 0 0 3px 1em;\n    float: right;\n}\n\n.submit-row {\n    text-align: left\n}\n\n.submit-row p.deletelink-box {\n    float: right;\n}\n\n.submit-row .deletelink {\n    background: url(../img/icon_deletelink.gif) 0 50% no-repeat;\n    padding-right: 14px;\n}\n\n.vDateField, .vTimeField {\n    margin-left: 2px;\n}\n\nform ul.inline li {\n    float: right;\n    padding-right: 0;\n    padding-left: 7px;\n}\n\ninput[type=submit].default, .submit-row input.default {\n    float: left;\n}\n\nfieldset .field-box {\n    float: right;\n    margin-left: 20px;\n    margin-right: 0;\n}\n\n.errorlist li {\n    background-position: 100% .3em;\n    padding: 4px 25px 4px 5px;\n}\n\n.errornote {\n    background-position: 100% .3em;\n    padding: 4px 25px 4px 5px;\n}\n\n/* WIDGETS */\n\n.calendarnav-previous {\n    top: 0;\n    left: auto;\n    right: 0;\n}\n\n.calendarnav-next {\n    top: 0;\n    right: auto;\n    left: 0;\n}\n\n.calendar caption, .calendarbox h2 {\n    text-align: center;\n}\n\n.selector {\n    float: right;\n}\n\n.selector .selector-filter {\n    text-align: right;\n}\n\n.inline-deletelink {\n    float: left;\n}\n\n/* MISC */\n\n.inline-related h2, .inline-group h2 {\n    text-align: right\n}\n\n.inline-related h3 span.delete {\n    padding-right: 20px;\n    padding-left: inherit;\n    left: 10px;\n    right: inherit;\n    float:left;\n}\n\n.inline-related h3 span.delete label {\n    margin-left: inherit;\n    margin-right: 2px;\n}\n\n/* IE7 specific bug fixes */\n\ndiv.colM {\n    position: relative;\n}\n\n.submit-row input {\n    float: left;\n}"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/static/admin/css/widgets.css",
    "content": "/* SELECTOR (FILTER INTERFACE) */\n\n.selector {\n    width: 580px;\n    float: left;\n}\n\n.selector select {\n    width: 270px;\n    height: 17.2em;\n}\n\n.selector-available, .selector-chosen {\n    float: left;\n    width: 270px;\n    text-align: center;\n    margin-bottom: 5px;\n}\n\n.selector-chosen select {\n    border-top: none;\n}\n\n.selector-available h2, .selector-chosen h2 {\n    border: 1px solid #ccc;\n}\n\n.selector .selector-available h2 {\n    background: white url(../img/nav-bg.gif) bottom left repeat-x;\n    color: #666;\n}\n\n.selector .selector-filter {\n    background: white;\n    border: 1px solid #ccc;\n    border-width: 0 1px;\n    padding: 3px;\n    color: #999;\n    font-size: 10px;\n    margin: 0;\n    text-align: left;\n}\n\n.selector .selector-filter label,\n.inline-group .aligned .selector .selector-filter label {\n    width: 16px;\n    padding: 2px;\n}\n\n.selector .selector-available input {\n    width: 230px;\n}\n\n.selector ul.selector-chooser {\n    float: left;\n    width: 22px;\n    height: 50px;\n    background: url(../img/chooser-bg.gif) top center no-repeat;\n    margin: 10em 5px 0 5px;\n    padding: 0;\n}\n\n.selector-chooser li {\n    margin: 0;\n    padding: 3px;\n    list-style-type: none;\n}\n\n.selector select {\n    margin-bottom: 10px;\n    margin-top: 0;\n}\n\n.selector-add, .selector-remove {\n    width: 16px;\n    height: 16px;\n    display: block;\n    text-indent: -3000px;\n    overflow: hidden;\n}\n\n.selector-add {\n    background: url(../img/selector-icons.gif) 0 -161px no-repeat;\n    cursor: default;\n    margin-bottom: 2px;\n}\n\n.active.selector-add {\n    background: url(../img/selector-icons.gif) 0 -187px no-repeat;\n    cursor: pointer;\n}\n\n.selector-remove {\n    background: url(../img/selector-icons.gif) 0 -109px no-repeat;\n    cursor: default;\n}\n\n.active.selector-remove {\n    background: url(../img/selector-icons.gif) 0 -135px no-repeat;\n    cursor: pointer;\n}\n\na.selector-chooseall, a.selector-clearall {\n    display: inline-block;\n    text-align: left;\n    margin-left: auto;\n    margin-right: auto;\n    font-weight: bold;\n    color: #666;\n}\n\na.selector-chooseall {\n    padding: 3px 18px 3px 0;\n}\n\na.selector-clearall {\n    padding: 3px 0 3px 18px;\n}\n\na.active.selector-chooseall:hover, a.active.selector-clearall:hover {\n    color: #036;\n}\n\na.selector-chooseall {\n    background: url(../img/selector-icons.gif) right -263px no-repeat;\n    cursor: default;\n}\n\na.active.selector-chooseall {\n    background: url(../img/selector-icons.gif) right -289px no-repeat;\n    cursor: pointer;\n}\n\na.selector-clearall {\n    background: url(../img/selector-icons.gif) left -211px no-repeat;\n    cursor: default;\n}\n\na.active.selector-clearall {\n    background: url(../img/selector-icons.gif) left -237px no-repeat;\n    cursor: pointer;\n}\n\n/* STACKED SELECTORS */\n\n.stacked {\n    float: left;\n    width: 500px;\n}\n\n.stacked select {\n    width: 480px;\n    height: 10.1em;\n}\n\n.stacked .selector-available, .stacked .selector-chosen {\n    width: 480px;\n}\n\n.stacked .selector-available {\n    margin-bottom: 0;\n}\n\n.stacked .selector-available input {\n    width: 442px;\n}\n\n.stacked ul.selector-chooser {\n    height: 22px;\n    width: 50px;\n    margin: 0 0 3px 40%;\n    background: url(../img/chooser_stacked-bg.gif) top center no-repeat;\n}\n\n.stacked .selector-chooser li {\n    float: left;\n    padding: 3px 3px 3px 5px;\n}\n\n.stacked .selector-chooseall, .stacked .selector-clearall {\n    display: none;\n}\n\n.stacked .selector-add {\n    background: url(../img/selector-icons.gif) 0 -57px no-repeat;\n    cursor: default;\n}\n\n.stacked .active.selector-add {\n    background: url(../img/selector-icons.gif) 0 -83px no-repeat;\n    cursor: pointer;\n}\n\n.stacked .selector-remove {\n    background: url(../img/selector-icons.gif) 0 -5px no-repeat;\n    cursor: default;\n}\n\n.stacked .active.selector-remove {\n    background: url(../img/selector-icons.gif) 0 -31px no-repeat;\n    cursor: pointer;\n}\n\n/* DATE AND TIME */\n\np.datetime {\n    line-height: 20px;\n    margin: 0;\n    padding: 0;\n    color: #666;\n    font-size: 11px;\n    font-weight: bold;\n}\n\n.datetime span {\n    font-size: 11px;\n    color: #ccc;\n    font-weight: normal;\n    white-space: nowrap;\n}\n\ntable p.datetime {\n    font-size: 10px;\n    margin-left: 0;\n    padding-left: 0;\n}\n\n/* URL */\n\np.url {\n    line-height: 20px;\n    margin: 0;\n    padding: 0;\n    color: #666;\n    font-size: 11px;\n    font-weight: bold;\n}\n\n.url a {\n    font-weight: normal;\n}\n\n/* FILE UPLOADS */\n\np.file-upload {\n    line-height: 20px;\n    margin: 0;\n    padding: 0;\n    color: #666;\n    font-size: 11px;\n    font-weight: bold;\n}\n\n.file-upload a {\n    font-weight: normal;\n}\n\n.file-upload .deletelink {\n    margin-left: 5px;\n}\n\nspan.clearable-file-input label {\n    color: #333;\n    font-size: 11px;\n    display: inline;\n    float: none;\n}\n\n/* CALENDARS & CLOCKS */\n\n.calendarbox, .clockbox {\n    margin: 5px auto;\n    font-size: 11px;\n    width: 16em;\n    text-align: center;\n    background: white;\n    position: relative;\n}\n\n.clockbox {\n    width: auto;\n}\n\n.calendar {\n    margin: 0;\n    padding: 0;\n}\n\n.calendar table {\n    margin: 0;\n    padding: 0;\n    border-collapse: collapse;\n    background: white;\n    width: 100%;\n}\n\n.calendar caption, .calendarbox h2 {\n    margin: 0;\n    font-size: 11px;\n    text-align: center;\n    border-top: none;\n}\n\n.calendar th {\n    font-size: 10px;\n    color: #666;\n    padding: 2px 3px;\n    text-align: center;\n    background: #e1e1e1 url(../img/nav-bg.gif) 0 50% repeat-x;\n    border-bottom: 1px solid #ddd;\n}\n\n.calendar td {\n    font-size: 11px;\n    text-align: center;\n    padding: 0;\n    border-top: 1px solid #eee;\n    border-bottom: none;\n}\n\n.calendar td.selected a {\n    background: #C9DBED;\n}\n\n.calendar td.nonday {\n    background: #efefef;\n}\n\n.calendar td.today a {\n    background: #ffc;\n}\n\n.calendar td a, .timelist a {\n    display: block;\n    font-weight: bold;\n    padding: 4px;\n    text-decoration: none;\n    color: #444;\n}\n\n.calendar td a:hover, .timelist a:hover {\n    background: #5b80b2;\n    color: white;\n}\n\n.calendar td a:active, .timelist a:active {\n    background: #036;\n    color: white;\n}\n\n.calendarnav {\n    font-size: 10px;\n    text-align: center;\n    color: #ccc;\n    margin: 0;\n    padding: 1px 3px;\n}\n\n.calendarnav a:link, #calendarnav a:visited, #calendarnav a:hover {\n    color: #999;\n}\n\n.calendar-shortcuts {\n    background: white;\n    font-size: 10px;\n    line-height: 11px;\n    border-top: 1px solid #eee;\n    padding: 3px 0 4px;\n    color: #ccc;\n}\n\n.calendarbox .calendarnav-previous, .calendarbox .calendarnav-next {\n    display: block;\n    position: absolute;\n    font-weight: bold;\n    font-size: 12px;\n    background: #C9DBED url(../img/default-bg.gif) bottom left repeat-x;\n    padding: 1px 4px 2px 4px;\n    color: white;\n}\n\n.calendarnav-previous:hover, .calendarnav-next:hover {\n    background: #036;\n}\n\n.calendarnav-previous {\n    top: 0;\n    left: 0;\n}\n\n.calendarnav-next {\n    top: 0;\n    right: 0;\n}\n\n.calendar-cancel {\n    margin: 0 !important;\n    padding: 0 !important;\n    font-size: 10px;\n    background: #e1e1e1 url(../img/nav-bg.gif) 0 50% repeat-x;\n    border-top: 1px solid #ddd;\n}\n\n.calendar-cancel:hover {\n    background: #e1e1e1 url(../img/nav-bg-reverse.gif) 0 50% repeat-x;\n}\n\n.calendar-cancel a {\n    color: black;\n    display: block;\n}\n\nul.timelist, .timelist li {\n    list-style-type: none;\n    margin: 0;\n    padding: 0;\n}\n\n.timelist a {\n    padding: 2px;\n}\n\n/* INLINE ORDERER */\n\nul.orderer {\n    position: relative;\n    padding: 0 !important;\n    margin: 0 !important;\n    list-style-type: none;\n}\n\nul.orderer li {\n    list-style-type: none;\n    display: block;\n    padding: 0;\n    margin: 0;\n    border: 1px solid #bbb;\n    border-width: 0 1px 1px 0;\n    white-space: nowrap;\n    overflow: hidden;\n    background: #e2e2e2 url(../img/nav-bg-grabber.gif) repeat-y;\n}\n\nul.orderer li:hover {\n    cursor: move;\n    background-color: #ddd;\n}\n\nul.orderer li a.selector {\n    margin-left: 12px;\n    overflow: hidden;\n    width: 83%;\n    font-size: 10px !important;\n    padding: 0.6em 0;\n}\n\nul.orderer li a:link, ul.orderer li a:visited {\n    color: #333;\n}\n\nul.orderer li .inline-deletelink {\n    position: absolute;\n    right: 4px;\n    margin-top: 0.6em;\n}\n\nul.orderer li.selected {\n    background-color: #f8f8f8;\n    border-right-color: #f8f8f8;\n}\n\nul.orderer li.deleted {\n    background: #bbb url(../img/deleted-overlay.gif);\n}\n\nul.orderer li.deleted a:link, ul.orderer li.deleted a:visited {\n    color: #888;\n}\n\nul.orderer li.deleted .inline-deletelink {\n    background-image: url(../img/inline-restore.png);\n}\n\nul.orderer li.deleted:hover, ul.orderer li.deleted a.selector:hover {\n    cursor: default;\n}\n\n/* EDIT INLINE */\n\n.inline-deletelink {\n    float: right;\n    text-indent: -9999px;\n    background: transparent url(../img/inline-delete.png) no-repeat;\n    width: 15px;\n    height: 15px;\n    border: 0px none;\n    outline: 0; /* Remove dotted border around link */\n}\n\n.inline-deletelink:hover {\n    background-position: -15px 0;\n    cursor: pointer;\n}\n\n.editinline button.addlink {\n    border: 0px none;\n    color: #5b80b2;\n    font-size: 100%;\n    cursor: pointer;\n}\n\n.editinline button.addlink:hover {\n    color: #036;\n    cursor: pointer;\n}\n\n.editinline table .help {\n    text-align: right;\n    float: right;\n    padding-left: 2em;\n}\n\n.editinline tfoot .addlink {\n    white-space: nowrap;\n}\n\n.editinline table thead th:last-child {\n    border-left: none;\n}\n\n.editinline tr.deleted {\n    background: #ddd url(../img/deleted-overlay.gif);\n}\n\n.editinline tr.deleted .inline-deletelink {\n    background-image: url(../img/inline-restore.png);\n}\n\n.editinline tr.deleted td:hover {\n    cursor: default;\n}\n\n.editinline tr.deleted td:first-child {\n    background-image: none !important;\n}\n\n/* EDIT INLINE - STACKED */\n\n.editinline-stacked {\n    min-width: 758px;\n}\n\n.editinline-stacked .inline-object {\n    margin-left: 210px;\n    background: white;\n}\n\n.editinline-stacked .inline-source {\n    float: left;\n    width: 200px;\n    background: #f8f8f8;\n}\n\n.editinline-stacked .inline-splitter {\n    float: left;\n    width: 9px;\n    background: #f8f8f8 url(../img/inline-splitter-bg.gif) 50% 50% no-repeat;\n    border-right: 1px solid #ccc;\n}\n\n.editinline-stacked .controls {\n    clear: both;\n    background: #e1e1e1 url(../img/nav-bg.gif) top left repeat-x;\n    padding: 3px 4px;\n    font-size: 11px;\n    border-top: 1px solid #ddd;\n}\n\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/static/admin/js/LICENSE-JQUERY.txt",
    "content": "Copyright (c) 2010 John Resig, http://jquery.com/\n \nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n \nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n \nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE."
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/static/admin/js/SelectBox.js",
    "content": "var SelectBox = {\n    cache: new Object(),\n    init: function(id) {\n        var box = document.getElementById(id);\n        var node;\n        SelectBox.cache[id] = new Array();\n        var cache = SelectBox.cache[id];\n        for (var i = 0; (node = box.options[i]); i++) {\n            cache.push({value: node.value, text: node.text, displayed: 1});\n        }\n    },\n    redisplay: function(id) {\n        // Repopulate HTML select box from cache\n        var box = document.getElementById(id);\n        box.options.length = 0; // clear all options\n        for (var i = 0, j = SelectBox.cache[id].length; i < j; i++) {\n            var node = SelectBox.cache[id][i];\n            if (node.displayed) {\n                box.options[box.options.length] = new Option(node.text, node.value, false, false);\n            }\n        }\n    },\n    filter: function(id, text) {\n        // Redisplay the HTML select box, displaying only the choices containing ALL\n        // the words in text. (It's an AND search.)\n        var tokens = text.toLowerCase().split(/\\s+/);\n        var node, token;\n        for (var i = 0; (node = SelectBox.cache[id][i]); i++) {\n            node.displayed = 1;\n            for (var j = 0; (token = tokens[j]); j++) {\n                if (node.text.toLowerCase().indexOf(token) == -1) {\n                    node.displayed = 0;\n                }\n            }\n        }\n        SelectBox.redisplay(id);\n    },\n    delete_from_cache: function(id, value) {\n        var node, delete_index = null;\n        for (var i = 0; (node = SelectBox.cache[id][i]); i++) {\n            if (node.value == value) {\n                delete_index = i;\n                break;\n            }\n        }\n        var j = SelectBox.cache[id].length - 1;\n        for (var i = delete_index; i < j; i++) {\n            SelectBox.cache[id][i] = SelectBox.cache[id][i+1];\n        }\n        SelectBox.cache[id].length--;\n    },\n    add_to_cache: function(id, option) {\n        SelectBox.cache[id].push({value: option.value, text: option.text, displayed: 1});\n    },\n    cache_contains: function(id, value) {\n        // Check if an item is contained in the cache\n        var node;\n        for (var i = 0; (node = SelectBox.cache[id][i]); i++) {\n            if (node.value == value) {\n                return true;\n            }\n        }\n        return false;\n    },\n    move: function(from, to) {\n        var from_box = document.getElementById(from);\n        var to_box = document.getElementById(to);\n        var option;\n        for (var i = 0; (option = from_box.options[i]); i++) {\n            if (option.selected && SelectBox.cache_contains(from, option.value)) {\n                SelectBox.add_to_cache(to, {value: option.value, text: option.text, displayed: 1});\n                SelectBox.delete_from_cache(from, option.value);\n            }\n        }\n        SelectBox.redisplay(from);\n        SelectBox.redisplay(to);\n    },\n    move_all: function(from, to) {\n        var from_box = document.getElementById(from);\n        var to_box = document.getElementById(to);\n        var option;\n        for (var i = 0; (option = from_box.options[i]); i++) {\n            if (SelectBox.cache_contains(from, option.value)) {\n                SelectBox.add_to_cache(to, {value: option.value, text: option.text, displayed: 1});\n                SelectBox.delete_from_cache(from, option.value);\n            }\n        }\n        SelectBox.redisplay(from);\n        SelectBox.redisplay(to);\n    },\n    sort: function(id) {\n        SelectBox.cache[id].sort( function(a, b) {\n            a = a.text.toLowerCase();\n            b = b.text.toLowerCase();\n            try {\n                if (a > b) return 1;\n                if (a < b) return -1;\n            }\n            catch (e) {\n                // silently fail on IE 'unknown' exception\n            }\n            return 0;\n        } );\n    },\n    select_all: function(id) {\n        var box = document.getElementById(id);\n        for (var i = 0; i < box.options.length; i++) {\n            box.options[i].selected = 'selected';\n        }\n    }\n}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/static/admin/js/SelectFilter2.js",
    "content": "/*\nSelectFilter2 - Turns a multiple-select box into a filter interface.\n\nRequires core.js, SelectBox.js and addevent.js.\n*/\n(function($) {\nfunction findForm(node) {\n    // returns the node of the form containing the given node\n    if (node.tagName.toLowerCase() != 'form') {\n        return findForm(node.parentNode);\n    }\n    return node;\n}\n\nwindow.SelectFilter = {\n    init: function(field_id, field_name, is_stacked, admin_static_prefix) {\n        if (field_id.match(/__prefix__/)){\n            // Don't intialize on empty forms.\n            return;\n        }\n        var from_box = document.getElementById(field_id);\n        from_box.id += '_from'; // change its ID\n        from_box.className = 'filtered';\n\n        var ps = from_box.parentNode.getElementsByTagName('p');\n        for (var i=0; i<ps.length; i++) {\n            if (ps[i].className.indexOf(\"info\") != -1) {\n                // Remove <p class=\"info\">, because it just gets in the way.\n                from_box.parentNode.removeChild(ps[i]);\n            } else if (ps[i].className.indexOf(\"help\") != -1) {\n                // Move help text up to the top so it isn't below the select\n                // boxes or wrapped off on the side to the right of the add\n                // button:\n                from_box.parentNode.insertBefore(ps[i], from_box.parentNode.firstChild);\n            }\n        }\n\n        // <div class=\"selector\"> or <div class=\"selector stacked\">\n        var selector_div = quickElement('div', from_box.parentNode);\n        selector_div.className = is_stacked ? 'selector stacked' : 'selector';\n\n        // <div class=\"selector-available\">\n        var selector_available = quickElement('div', selector_div, '');\n        selector_available.className = 'selector-available';\n        var title_available = quickElement('h2', selector_available, interpolate(gettext('Available %s') + ' ', [field_name]));\n        quickElement('img', title_available, '', 'src', admin_static_prefix + 'img/icon-unknown.gif', 'width', '10', 'height', '10', 'class', 'help help-tooltip', 'title', interpolate(gettext('This is the list of available %s. You may choose some by selecting them in the box below and then clicking the \"Choose\" arrow between the two boxes.'), [field_name]));\n\n        var filter_p = quickElement('p', selector_available, '', 'id', field_id + '_filter');\n        filter_p.className = 'selector-filter';\n\n        var search_filter_label = quickElement('label', filter_p, '', 'for', field_id + \"_input\");\n\n        var search_selector_img = quickElement('img', search_filter_label, '', 'src', admin_static_prefix + 'img/selector-search.gif', 'class', 'help-tooltip', 'alt', '', 'title', interpolate(gettext(\"Type into this box to filter down the list of available %s.\"), [field_name]));\n\n        filter_p.appendChild(document.createTextNode(' '));\n\n        var filter_input = quickElement('input', filter_p, '', 'type', 'text', 'placeholder', gettext(\"Filter\"));\n        filter_input.id = field_id + '_input';\n\n        selector_available.appendChild(from_box);\n        var choose_all = quickElement('a', selector_available, gettext('Choose all'), 'title', interpolate(gettext('Click to choose all %s at once.'), [field_name]), 'href', 'javascript: (function(){ SelectBox.move_all(\"' + field_id + '_from\", \"' + field_id + '_to\"); SelectFilter.refresh_icons(\"' + field_id + '\");})()', 'id', field_id + '_add_all_link');\n        choose_all.className = 'selector-chooseall';\n\n        // <ul class=\"selector-chooser\">\n        var selector_chooser = quickElement('ul', selector_div, '');\n        selector_chooser.className = 'selector-chooser';\n        var add_link = quickElement('a', quickElement('li', selector_chooser, ''), gettext('Choose'), 'title', gettext('Choose'), 'href', 'javascript: (function(){ SelectBox.move(\"' + field_id + '_from\",\"' + field_id + '_to\"); SelectFilter.refresh_icons(\"' + field_id + '\");})()', 'id', field_id + '_add_link');\n        add_link.className = 'selector-add';\n        var remove_link = quickElement('a', quickElement('li', selector_chooser, ''), gettext('Remove'), 'title', gettext('Remove'), 'href', 'javascript: (function(){ SelectBox.move(\"' + field_id + '_to\",\"' + field_id + '_from\"); SelectFilter.refresh_icons(\"' + field_id + '\");})()', 'id', field_id + '_remove_link');\n        remove_link.className = 'selector-remove';\n\n        // <div class=\"selector-chosen\">\n        var selector_chosen = quickElement('div', selector_div, '');\n        selector_chosen.className = 'selector-chosen';\n        var title_chosen = quickElement('h2', selector_chosen, interpolate(gettext('Chosen %s') + ' ', [field_name]));\n        quickElement('img', title_chosen, '', 'src', admin_static_prefix + 'img/icon-unknown.gif', 'width', '10', 'height', '10', 'class', 'help help-tooltip', 'title', interpolate(gettext('This is the list of chosen %s. You may remove some by selecting them in the box below and then clicking the \"Remove\" arrow between the two boxes.'), [field_name]));\n\n        var to_box = quickElement('select', selector_chosen, '', 'id', field_id + '_to', 'multiple', 'multiple', 'size', from_box.size, 'name', from_box.getAttribute('name'));\n        to_box.className = 'filtered';\n        var clear_all = quickElement('a', selector_chosen, gettext('Remove all'), 'title', interpolate(gettext('Click to remove all chosen %s at once.'), [field_name]), 'href', 'javascript: (function() { SelectBox.move_all(\"' + field_id + '_to\", \"' + field_id + '_from\"); SelectFilter.refresh_icons(\"' + field_id + '\");})()', 'id', field_id + '_remove_all_link');\n        clear_all.className = 'selector-clearall';\n\n        from_box.setAttribute('name', from_box.getAttribute('name') + '_old');\n\n        // Set up the JavaScript event handlers for the select box filter interface\n        addEvent(filter_input, 'keyup', function(e) { SelectFilter.filter_key_up(e, field_id); });\n        addEvent(filter_input, 'keydown', function(e) { SelectFilter.filter_key_down(e, field_id); });\n        addEvent(from_box, 'change', function(e) { SelectFilter.refresh_icons(field_id) });\n        addEvent(to_box, 'change', function(e) { SelectFilter.refresh_icons(field_id) });\n        addEvent(from_box, 'dblclick', function() { SelectBox.move(field_id + '_from', field_id + '_to'); SelectFilter.refresh_icons(field_id); });\n        addEvent(to_box, 'dblclick', function() { SelectBox.move(field_id + '_to', field_id + '_from'); SelectFilter.refresh_icons(field_id); });\n        addEvent(findForm(from_box), 'submit', function() { SelectBox.select_all(field_id + '_to'); });\n        SelectBox.init(field_id + '_from');\n        SelectBox.init(field_id + '_to');\n        // Move selected from_box options to to_box\n        SelectBox.move(field_id + '_from', field_id + '_to');\n\n        if (!is_stacked) {\n            // In horizontal mode, give the same height to the two boxes.\n            var j_from_box = $(from_box);\n            var j_to_box = $(to_box);\n            var resize_filters = function() { j_to_box.height($(filter_p).outerHeight() + j_from_box.outerHeight()); }\n            if (j_from_box.outerHeight() > 0) {\n                resize_filters(); // This fieldset is already open. Resize now.\n            } else {\n                // This fieldset is probably collapsed. Wait for its 'show' event.\n                j_to_box.closest('fieldset').one('show.fieldset', resize_filters);\n            }\n        }\n\n        // Initial icon refresh\n        SelectFilter.refresh_icons(field_id);\n    },\n    refresh_icons: function(field_id) {\n        var from = $('#' + field_id + '_from');\n        var to = $('#' + field_id + '_to');\n        var is_from_selected = from.find('option:selected').length > 0;\n        var is_to_selected = to.find('option:selected').length > 0;\n        // Active if at least one item is selected\n        $('#' + field_id + '_add_link').toggleClass('active', is_from_selected);\n        $('#' + field_id + '_remove_link').toggleClass('active', is_to_selected);\n        // Active if the corresponding box isn't empty\n        $('#' + field_id + '_add_all_link').toggleClass('active', from.find('option').length > 0);\n        $('#' + field_id + '_remove_all_link').toggleClass('active', to.find('option').length > 0);\n    },\n    filter_key_up: function(event, field_id) {\n        var from = document.getElementById(field_id + '_from');\n        // don't submit form if user pressed Enter\n        if ((event.which && event.which == 13) || (event.keyCode && event.keyCode == 13)) {\n            from.selectedIndex = 0;\n            SelectBox.move(field_id + '_from', field_id + '_to');\n            from.selectedIndex = 0;\n            return false;\n        }\n        var temp = from.selectedIndex;\n        SelectBox.filter(field_id + '_from', document.getElementById(field_id + '_input').value);\n        from.selectedIndex = temp;\n        return true;\n    },\n    filter_key_down: function(event, field_id) {\n        var from = document.getElementById(field_id + '_from');\n        // right arrow -- move across\n        if ((event.which && event.which == 39) || (event.keyCode && event.keyCode == 39)) {\n            var old_index = from.selectedIndex;\n            SelectBox.move(field_id + '_from', field_id + '_to');\n            from.selectedIndex = (old_index == from.length) ? from.length - 1 : old_index;\n            return false;\n        }\n        // down arrow -- wrap around\n        if ((event.which && event.which == 40) || (event.keyCode && event.keyCode == 40)) {\n            from.selectedIndex = (from.length == from.selectedIndex + 1) ? 0 : from.selectedIndex + 1;\n        }\n        // up arrow -- wrap around\n        if ((event.which && event.which == 38) || (event.keyCode && event.keyCode == 38)) {\n            from.selectedIndex = (from.selectedIndex == 0) ? from.length - 1 : from.selectedIndex - 1;\n        }\n        return true;\n    }\n}\n\n})(django.jQuery);\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/static/admin/js/actions.js",
    "content": "(function($) {\n\t$.fn.actions = function(opts) {\n\t\tvar options = $.extend({}, $.fn.actions.defaults, opts);\n\t\tvar actionCheckboxes = $(this);\n\t\tvar list_editable_changed = false;\n\t\tvar checker = function(checked) {\n\t\t\tif (checked) {\n\t\t\t\tshowQuestion();\n\t\t\t} else {\n\t\t\t\treset();\n\t\t\t}\n\t\t\t$(actionCheckboxes).attr(\"checked\", checked)\n\t\t\t\t.parent().parent().toggleClass(options.selectedClass, checked);\n\t\t},\n\t\tupdateCounter = function() {\n\t\t\tvar sel = $(actionCheckboxes).filter(\":checked\").length;\n\t\t\t$(options.counterContainer).html(interpolate(\n\t\t\tngettext('%(sel)s of %(cnt)s selected', '%(sel)s of %(cnt)s selected', sel), {\n\t\t\t\tsel: sel,\n\t\t\t\tcnt: _actions_icnt\n\t\t\t}, true));\n\t\t\t$(options.allToggle).attr(\"checked\", function() {\n\t\t\t\tif (sel == actionCheckboxes.length) {\n\t\t\t\t\tvalue = true;\n\t\t\t\t\tshowQuestion();\n\t\t\t\t} else {\n\t\t\t\t\tvalue = false;\n\t\t\t\t\tclearAcross();\n\t\t\t\t}\n\t\t\t\treturn value;\n\t\t\t});\n\t\t},\n\t\tshowQuestion = function() {\n\t\t\t$(options.acrossClears).hide();\n\t\t\t$(options.acrossQuestions).show();\n\t\t\t$(options.allContainer).hide();\n\t\t},\n\t\tshowClear = function() {\n\t\t\t$(options.acrossClears).show();\n\t\t\t$(options.acrossQuestions).hide();\n\t\t\t$(options.actionContainer).toggleClass(options.selectedClass);\n\t\t\t$(options.allContainer).show();\n\t\t\t$(options.counterContainer).hide();\n\t\t},\n\t\treset = function() {\n\t\t\t$(options.acrossClears).hide();\n\t\t\t$(options.acrossQuestions).hide();\n\t\t\t$(options.allContainer).hide();\n\t\t\t$(options.counterContainer).show();\n\t\t},\n\t\tclearAcross = function() {\n\t\t\treset();\n\t\t\t$(options.acrossInput).val(0);\n\t\t\t$(options.actionContainer).removeClass(options.selectedClass);\n\t\t};\n\t\t// Show counter by default\n\t\t$(options.counterContainer).show();\n\t\t// Check state of checkboxes and reinit state if needed\n\t\t$(this).filter(\":checked\").each(function(i) {\n\t\t\t$(this).parent().parent().toggleClass(options.selectedClass);\n\t\t\tupdateCounter();\n\t\t\tif ($(options.acrossInput).val() == 1) {\n\t\t\t\tshowClear();\n\t\t\t}\n\t\t});\n\t\t$(options.allToggle).show().click(function() {\n\t\t\tchecker($(this).attr(\"checked\"));\n\t\t\tupdateCounter();\n\t\t});\n\t\t$(\"div.actions span.question a\").click(function(event) {\n\t\t\tevent.preventDefault();\n\t\t\t$(options.acrossInput).val(1);\n\t\t\tshowClear();\n\t\t});\n\t\t$(\"div.actions span.clear a\").click(function(event) {\n\t\t\tevent.preventDefault();\n\t\t\t$(options.allToggle).attr(\"checked\", false);\n\t\t\tclearAcross();\n\t\t\tchecker(0);\n\t\t\tupdateCounter();\n\t\t});\n\t\tlastChecked = null;\n\t\t$(actionCheckboxes).click(function(event) {\n\t\t\tif (!event) { event = window.event; }\n\t\t\tvar target = event.target ? event.target : event.srcElement;\n\t\t\tif (lastChecked && $.data(lastChecked) != $.data(target) && event.shiftKey === true) {\n\t\t\t\tvar inrange = false;\n\t\t\t\t$(lastChecked).attr(\"checked\", target.checked)\n\t\t\t\t\t.parent().parent().toggleClass(options.selectedClass, target.checked);\n\t\t\t\t$(actionCheckboxes).each(function() {\n\t\t\t\t\tif ($.data(this) == $.data(lastChecked) || $.data(this) == $.data(target)) {\n\t\t\t\t\t\tinrange = (inrange) ? false : true;\n\t\t\t\t\t}\n\t\t\t\t\tif (inrange) {\n\t\t\t\t\t\t$(this).attr(\"checked\", target.checked)\n\t\t\t\t\t\t\t.parent().parent().toggleClass(options.selectedClass, target.checked);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\t$(target).parent().parent().toggleClass(options.selectedClass, target.checked);\n\t\t\tlastChecked = target;\n\t\t\tupdateCounter();\n\t\t});\n\t\t$('form#changelist-form table#result_list tr').find('td:gt(0) :input').change(function() {\n\t\t\tlist_editable_changed = true;\n\t\t});\n\t\t$('form#changelist-form button[name=\"index\"]').click(function(event) {\n\t\t\tif (list_editable_changed) {\n\t\t\t\treturn confirm(gettext(\"You have unsaved changes on individual editable fields. If you run an action, your unsaved changes will be lost.\"));\n\t\t\t}\n\t\t});\n\t\t$('form#changelist-form input[name=\"_save\"]').click(function(event) {\n\t\t\tvar action_changed = false;\n\t\t\t$('div.actions select option:selected').each(function() {\n\t\t\t\tif ($(this).val()) {\n\t\t\t\t\taction_changed = true;\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (action_changed) {\n\t\t\t\tif (list_editable_changed) {\n\t\t\t\t\treturn confirm(gettext(\"You have selected an action, but you haven't saved your changes to individual fields yet. Please click OK to save. You'll need to re-run the action.\"));\n\t\t\t\t} else {\n\t\t\t\t\treturn confirm(gettext(\"You have selected an action, and you haven't made any changes on individual fields. You're probably looking for the Go button rather than the Save button.\"));\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t};\n\t/* Setup plugin defaults */\n\t$.fn.actions.defaults = {\n\t\tactionContainer: \"div.actions\",\n\t\tcounterContainer: \"span.action-counter\",\n\t\tallContainer: \"div.actions span.all\",\n\t\tacrossInput: \"div.actions input.select-across\",\n\t\tacrossQuestions: \"div.actions span.question\",\n\t\tacrossClears: \"div.actions span.clear\",\n\t\tallToggle: \"#action-toggle\",\n\t\tselectedClass: \"selected\"\n\t};\n})(django.jQuery);\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/static/admin/js/admin/DateTimeShortcuts.js",
    "content": "// Inserts shortcut buttons after all of the following:\n//     <input type=\"text\" class=\"vDateField\">\n//     <input type=\"text\" class=\"vTimeField\">\n\nvar DateTimeShortcuts = {\n    calendars: [],\n    calendarInputs: [],\n    clockInputs: [],\n    calendarDivName1: 'calendarbox', // name of calendar <div> that gets toggled\n    calendarDivName2: 'calendarin',  // name of <div> that contains calendar\n    calendarLinkName: 'calendarlink',// name of the link that is used to toggle\n    clockDivName: 'clockbox',        // name of clock <div> that gets toggled\n    clockLinkName: 'clocklink',      // name of the link that is used to toggle\n    shortCutsClass: 'datetimeshortcuts', // class of the clock and cal shortcuts\n    admin_media_prefix: '',\n    init: function() {\n        // Get admin_media_prefix by grabbing it off the window object. It's\n        // set in the admin/base.html template, so if it's not there, someone's\n        // overridden the template. In that case, we'll set a clearly-invalid\n        // value in the hopes that someone will examine HTTP requests and see it.\n        if (window.__admin_media_prefix__ != undefined) {\n            DateTimeShortcuts.admin_media_prefix = window.__admin_media_prefix__;\n        } else {\n            DateTimeShortcuts.admin_media_prefix = '/missing-admin-media-prefix/';\n        }\n\n        var inputs = document.getElementsByTagName('input');\n        for (i=0; i<inputs.length; i++) {\n            var inp = inputs[i];\n            if (inp.getAttribute('type') == 'text' && inp.className.match(/vTimeField/)) {\n                DateTimeShortcuts.addClock(inp);\n            }\n            else if (inp.getAttribute('type') == 'text' && inp.className.match(/vDateField/)) {\n                DateTimeShortcuts.addCalendar(inp);\n            }\n        }\n    },\n    // Add clock widget to a given field\n    addClock: function(inp) {\n        var num = DateTimeShortcuts.clockInputs.length;\n        DateTimeShortcuts.clockInputs[num] = inp;\n\n        // Shortcut links (clock icon and \"Now\" link)\n        var shortcuts_span = document.createElement('span');\n        shortcuts_span.className = DateTimeShortcuts.shortCutsClass;\n        inp.parentNode.insertBefore(shortcuts_span, inp.nextSibling);\n        var now_link = document.createElement('a');\n        now_link.setAttribute('href', \"javascript:DateTimeShortcuts.handleClockQuicklink(\" + num + \", new Date().strftime('\" + get_format('TIME_INPUT_FORMATS')[0] + \"'));\");\n        now_link.appendChild(document.createTextNode(gettext('Now')));\n        var clock_link = document.createElement('a');\n        clock_link.setAttribute('href', 'javascript:DateTimeShortcuts.openClock(' + num + ');');\n        clock_link.id = DateTimeShortcuts.clockLinkName + num;\n        quickElement('img', clock_link, '', 'src', DateTimeShortcuts.admin_media_prefix + 'img/icon_clock.gif', 'alt', gettext('Clock'));\n        shortcuts_span.appendChild(document.createTextNode('\\240'));\n        shortcuts_span.appendChild(now_link);\n        shortcuts_span.appendChild(document.createTextNode('\\240|\\240'));\n        shortcuts_span.appendChild(clock_link);\n\n        // Create clock link div\n        //\n        // Markup looks like:\n        // <div id=\"clockbox1\" class=\"clockbox module\">\n        //     <h2>Choose a time</h2>\n        //     <ul class=\"timelist\">\n        //         <li><a href=\"#\">Now</a></li>\n        //         <li><a href=\"#\">Midnight</a></li>\n        //         <li><a href=\"#\">6 a.m.</a></li>\n        //         <li><a href=\"#\">Noon</a></li>\n        //     </ul>\n        //     <p class=\"calendar-cancel\"><a href=\"#\">Cancel</a></p>\n        // </div>\n\n        var clock_box = document.createElement('div');\n        clock_box.style.display = 'none';\n        clock_box.style.position = 'absolute';\n        clock_box.className = 'clockbox module';\n        clock_box.setAttribute('id', DateTimeShortcuts.clockDivName + num);\n        document.body.appendChild(clock_box);\n        addEvent(clock_box, 'click', DateTimeShortcuts.cancelEventPropagation);\n\n        quickElement('h2', clock_box, gettext('Choose a time'));\n        var time_list = quickElement('ul', clock_box, '');\n        time_list.className = 'timelist';\n        var time_format = get_format('TIME_INPUT_FORMATS')[0];\n        quickElement(\"a\", quickElement(\"li\", time_list, \"\"), gettext(\"Now\"), \"href\", \"javascript:DateTimeShortcuts.handleClockQuicklink(\" + num + \", new Date().strftime('\" + time_format + \"'));\");\n        quickElement(\"a\", quickElement(\"li\", time_list, \"\"), gettext(\"Midnight\"), \"href\", \"javascript:DateTimeShortcuts.handleClockQuicklink(\" + num + \", new Date(1970,1,1,0,0,0,0).strftime('\" + time_format + \"'));\");\n        quickElement(\"a\", quickElement(\"li\", time_list, \"\"), gettext(\"6 a.m.\"), \"href\", \"javascript:DateTimeShortcuts.handleClockQuicklink(\" + num + \", new Date(1970,1,1,6,0,0,0).strftime('\" + time_format + \"'));\");\n        quickElement(\"a\", quickElement(\"li\", time_list, \"\"), gettext(\"Noon\"), \"href\", \"javascript:DateTimeShortcuts.handleClockQuicklink(\" + num + \", new Date(1970,1,1,12,0,0,0).strftime('\" + time_format + \"'));\");\n\n        var cancel_p = quickElement('p', clock_box, '');\n        cancel_p.className = 'calendar-cancel';\n        quickElement('a', cancel_p, gettext('Cancel'), 'href', 'javascript:DateTimeShortcuts.dismissClock(' + num + ');');\n        django.jQuery(document).bind('keyup', function(event) {\n            if (event.which == 27) {\n                // ESC key closes popup\n                DateTimeShortcuts.dismissClock(num);\n                event.preventDefault();\n            }\n        });\n    },\n    openClock: function(num) {\n        var clock_box = document.getElementById(DateTimeShortcuts.clockDivName+num)\n        var clock_link = document.getElementById(DateTimeShortcuts.clockLinkName+num)\n\n        // Recalculate the clockbox position\n        // is it left-to-right or right-to-left layout ?\n        if (getStyle(document.body,'direction')!='rtl') {\n            clock_box.style.left = findPosX(clock_link) + 17 + 'px';\n        }\n        else {\n            // since style's width is in em, it'd be tough to calculate\n            // px value of it. let's use an estimated px for now\n            // TODO: IE returns wrong value for findPosX when in rtl mode\n            //       (it returns as it was left aligned), needs to be fixed.\n            clock_box.style.left = findPosX(clock_link) - 110 + 'px';\n        }\n        clock_box.style.top = Math.max(0, findPosY(clock_link) - 30) + 'px';\n\n        // Show the clock box\n        clock_box.style.display = 'block';\n        addEvent(window.document, 'click', function() { DateTimeShortcuts.dismissClock(num); return true; });\n    },\n    dismissClock: function(num) {\n       document.getElementById(DateTimeShortcuts.clockDivName + num).style.display = 'none';\n       window.document.onclick = null;\n    },\n    handleClockQuicklink: function(num, val) {\n       DateTimeShortcuts.clockInputs[num].value = val;\n       DateTimeShortcuts.clockInputs[num].focus();\n       DateTimeShortcuts.dismissClock(num);\n    },\n    // Add calendar widget to a given field.\n    addCalendar: function(inp) {\n        var num = DateTimeShortcuts.calendars.length;\n\n        DateTimeShortcuts.calendarInputs[num] = inp;\n\n        // Shortcut links (calendar icon and \"Today\" link)\n        var shortcuts_span = document.createElement('span');\n        shortcuts_span.className = DateTimeShortcuts.shortCutsClass;\n        inp.parentNode.insertBefore(shortcuts_span, inp.nextSibling);\n        var today_link = document.createElement('a');\n        today_link.setAttribute('href', 'javascript:DateTimeShortcuts.handleCalendarQuickLink(' + num + ', 0);');\n        today_link.appendChild(document.createTextNode(gettext('Today')));\n        var cal_link = document.createElement('a');\n        cal_link.setAttribute('href', 'javascript:DateTimeShortcuts.openCalendar(' + num + ');');\n        cal_link.id = DateTimeShortcuts.calendarLinkName + num;\n        quickElement('img', cal_link, '', 'src', DateTimeShortcuts.admin_media_prefix + 'img/icon_calendar.gif', 'alt', gettext('Calendar'));\n        shortcuts_span.appendChild(document.createTextNode('\\240'));\n        shortcuts_span.appendChild(today_link);\n        shortcuts_span.appendChild(document.createTextNode('\\240|\\240'));\n        shortcuts_span.appendChild(cal_link);\n\n        // Create calendarbox div.\n        //\n        // Markup looks like:\n        //\n        // <div id=\"calendarbox3\" class=\"calendarbox module\">\n        //     <h2>\n        //           <a href=\"#\" class=\"link-previous\">&lsaquo;</a>\n        //           <a href=\"#\" class=\"link-next\">&rsaquo;</a> February 2003\n        //     </h2>\n        //     <div class=\"calendar\" id=\"calendarin3\">\n        //         <!-- (cal) -->\n        //     </div>\n        //     <div class=\"calendar-shortcuts\">\n        //          <a href=\"#\">Yesterday</a> | <a href=\"#\">Today</a> | <a href=\"#\">Tomorrow</a>\n        //     </div>\n        //     <p class=\"calendar-cancel\"><a href=\"#\">Cancel</a></p>\n        // </div>\n        var cal_box = document.createElement('div');\n        cal_box.style.display = 'none';\n        cal_box.style.position = 'absolute';\n        cal_box.className = 'calendarbox module';\n        cal_box.setAttribute('id', DateTimeShortcuts.calendarDivName1 + num);\n        document.body.appendChild(cal_box);\n        addEvent(cal_box, 'click', DateTimeShortcuts.cancelEventPropagation);\n\n        // next-prev links\n        var cal_nav = quickElement('div', cal_box, '');\n        var cal_nav_prev = quickElement('a', cal_nav, '<', 'href', 'javascript:DateTimeShortcuts.drawPrev('+num+');');\n        cal_nav_prev.className = 'calendarnav-previous';\n        var cal_nav_next = quickElement('a', cal_nav, '>', 'href', 'javascript:DateTimeShortcuts.drawNext('+num+');');\n        cal_nav_next.className = 'calendarnav-next';\n\n        // main box\n        var cal_main = quickElement('div', cal_box, '', 'id', DateTimeShortcuts.calendarDivName2 + num);\n        cal_main.className = 'calendar';\n        DateTimeShortcuts.calendars[num] = new Calendar(DateTimeShortcuts.calendarDivName2 + num, DateTimeShortcuts.handleCalendarCallback(num));\n        DateTimeShortcuts.calendars[num].drawCurrent();\n\n        // calendar shortcuts\n        var shortcuts = quickElement('div', cal_box, '');\n        shortcuts.className = 'calendar-shortcuts';\n        quickElement('a', shortcuts, gettext('Yesterday'), 'href', 'javascript:DateTimeShortcuts.handleCalendarQuickLink(' + num + ', -1);');\n        shortcuts.appendChild(document.createTextNode('\\240|\\240'));\n        quickElement('a', shortcuts, gettext('Today'), 'href', 'javascript:DateTimeShortcuts.handleCalendarQuickLink(' + num + ', 0);');\n        shortcuts.appendChild(document.createTextNode('\\240|\\240'));\n        quickElement('a', shortcuts, gettext('Tomorrow'), 'href', 'javascript:DateTimeShortcuts.handleCalendarQuickLink(' + num + ', +1);');\n\n        // cancel bar\n        var cancel_p = quickElement('p', cal_box, '');\n        cancel_p.className = 'calendar-cancel';\n        quickElement('a', cancel_p, gettext('Cancel'), 'href', 'javascript:DateTimeShortcuts.dismissCalendar(' + num + ');');\n        django.jQuery(document).bind('keyup', function(event) {\n            if (event.which == 27) {\n                // ESC key closes popup\n                DateTimeShortcuts.dismissCalendar(num);\n                event.preventDefault();\n            }\n        });\n    },\n    openCalendar: function(num) {\n        var cal_box = document.getElementById(DateTimeShortcuts.calendarDivName1+num)\n        var cal_link = document.getElementById(DateTimeShortcuts.calendarLinkName+num)\n        var inp = DateTimeShortcuts.calendarInputs[num];\n\n        // Determine if the current value in the input has a valid date.\n        // If so, draw the calendar with that date's year and month.\n        if (inp.value) {\n            var date_parts = inp.value.split('-');\n            var year = date_parts[0];\n            var month = parseFloat(date_parts[1]);\n            if (year.match(/\\d\\d\\d\\d/) && month >= 1 && month <= 12) {\n                DateTimeShortcuts.calendars[num].drawDate(month, year);\n            }\n        }\n\n        // Recalculate the clockbox position\n        // is it left-to-right or right-to-left layout ?\n        if (getStyle(document.body,'direction')!='rtl') {\n            cal_box.style.left = findPosX(cal_link) + 17 + 'px';\n        }\n        else {\n            // since style's width is in em, it'd be tough to calculate\n            // px value of it. let's use an estimated px for now\n            // TODO: IE returns wrong value for findPosX when in rtl mode\n            //       (it returns as it was left aligned), needs to be fixed.\n            cal_box.style.left = findPosX(cal_link) - 180 + 'px';\n        }\n        cal_box.style.top = Math.max(0, findPosY(cal_link) - 75) + 'px';\n\n        cal_box.style.display = 'block';\n        addEvent(window.document, 'click', function() { DateTimeShortcuts.dismissCalendar(num); return true; });\n    },\n    dismissCalendar: function(num) {\n        document.getElementById(DateTimeShortcuts.calendarDivName1+num).style.display = 'none';\n        window.document.onclick = null;\n    },\n    drawPrev: function(num) {\n        DateTimeShortcuts.calendars[num].drawPreviousMonth();\n    },\n    drawNext: function(num) {\n        DateTimeShortcuts.calendars[num].drawNextMonth();\n    },\n    handleCalendarCallback: function(num) {\n        format = get_format('DATE_INPUT_FORMATS')[0];\n        // the format needs to be escaped a little\n        format = format.replace('\\\\', '\\\\\\\\');\n        format = format.replace('\\r', '\\\\r');\n        format = format.replace('\\n', '\\\\n');\n        format = format.replace('\\t', '\\\\t');\n        format = format.replace(\"'\", \"\\\\'\");\n        return [\"function(y, m, d) { DateTimeShortcuts.calendarInputs[\",\n               num,\n               \"].value = new Date(y, m-1, d).strftime('\",\n               format,\n               \"');DateTimeShortcuts.calendarInputs[\",\n               num,\n               \"].focus();document.getElementById(DateTimeShortcuts.calendarDivName1+\",\n               num,\n               \").style.display='none';}\"].join('');\n    },\n    handleCalendarQuickLink: function(num, offset) {\n       var d = new Date();\n       d.setDate(d.getDate() + offset)\n       DateTimeShortcuts.calendarInputs[num].value = d.strftime(get_format('DATE_INPUT_FORMATS')[0]);\n       DateTimeShortcuts.calendarInputs[num].focus();\n       DateTimeShortcuts.dismissCalendar(num);\n    },\n    cancelEventPropagation: function(e) {\n        if (!e) e = window.event;\n        e.cancelBubble = true;\n        if (e.stopPropagation) e.stopPropagation();\n    }\n}\n\naddEvent(window, 'load', DateTimeShortcuts.init);\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/static/admin/js/admin/RelatedObjectLookups.js",
    "content": "// Handles related-objects functionality: lookup link for raw_id_fields\n// and Add Another links.\n\nfunction html_unescape(text) {\n    // Unescape a string that was escaped using django.utils.html.escape.\n    text = text.replace(/&lt;/g, '<');\n    text = text.replace(/&gt;/g, '>');\n    text = text.replace(/&quot;/g, '\"');\n    text = text.replace(/&#39;/g, \"'\");\n    text = text.replace(/&amp;/g, '&');\n    return text;\n}\n\n// IE doesn't accept periods or dashes in the window name, but the element IDs\n// we use to generate popup window names may contain them, therefore we map them\n// to allowed characters in a reversible way so that we can locate the correct \n// element when the popup window is dismissed.\nfunction id_to_windowname(text) {\n    text = text.replace(/\\./g, '__dot__');\n    text = text.replace(/\\-/g, '__dash__');\n    return text;\n}\n\nfunction windowname_to_id(text) {\n    text = text.replace(/__dot__/g, '.');\n    text = text.replace(/__dash__/g, '-');\n    return text;\n}\n\nfunction showRelatedObjectLookupPopup(triggeringLink) {\n    var name = triggeringLink.id.replace(/^lookup_/, '');\n    name = id_to_windowname(name);\n    var href;\n    if (triggeringLink.href.search(/\\?/) >= 0) {\n        href = triggeringLink.href + '&pop=1';\n    } else {\n        href = triggeringLink.href + '?pop=1';\n    }\n    var win = window.open(href, name, 'height=500,width=800,resizable=yes,scrollbars=yes');\n    win.focus();\n    return false;\n}\n\nfunction dismissRelatedLookupPopup(win, chosenId) {\n    var name = windowname_to_id(win.name);\n    var elem = document.getElementById(name);\n    if (elem.className.indexOf('vManyToManyRawIdAdminField') != -1 && elem.value) {\n        elem.value += ',' + chosenId;\n    } else {\n        document.getElementById(name).value = chosenId;\n    }\n    win.close();\n}\n\nfunction showAddAnotherPopup(triggeringLink) {\n    var name = triggeringLink.id.replace(/^add_/, '');\n    name = id_to_windowname(name);\n    href = triggeringLink.href\n    if (href.indexOf('?') == -1) {\n        href += '?_popup=1';\n    } else {\n        href  += '&_popup=1';\n    }\n    var win = window.open(href, name, 'height=500,width=800,resizable=yes,scrollbars=yes');\n    win.focus();\n    return false;\n}\n\nfunction dismissAddAnotherPopup(win, newId, newRepr) {\n    // newId and newRepr are expected to have previously been escaped by\n    // django.utils.html.escape.\n    newId = html_unescape(newId);\n    newRepr = html_unescape(newRepr);\n    var name = windowname_to_id(win.name);\n    var elem = document.getElementById(name);\n    if (elem) {\n        var elemName = elem.nodeName.toUpperCase();\n        if (elemName == 'SELECT') {\n            var o = new Option(newRepr, newId);\n            elem.options[elem.options.length] = o;\n            o.selected = true;\n        } else if (elemName == 'INPUT') {\n            if (elem.className.indexOf('vManyToManyRawIdAdminField') != -1 && elem.value) {\n                elem.value += ',' + newId;\n            } else {\n                elem.value = newId;\n            }\n        }\n    } else {\n        var toId = name + \"_to\";\n        elem = document.getElementById(toId);\n        var o = new Option(newRepr, newId);\n        SelectBox.add_to_cache(toId, o);\n        SelectBox.redisplay(toId);\n    }\n    win.close();\n}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/static/admin/js/admin/ordering.js",
    "content": "addEvent(window, 'load', reorder_init);\n\nvar lis;\nvar top = 0;\nvar left = 0;\nvar height = 30;\n\nfunction reorder_init() {\n    lis = document.getElementsBySelector('ul#orderthese li');\n    var input = document.getElementsBySelector('input[name=order_]')[0];\n    setOrder(input.value.split(','));\n    input.disabled = true;\n    draw();\n    // Now initialize the dragging behavior\n    var limit = (lis.length - 1) * height;\n    for (var i = 0; i < lis.length; i++) {\n        var li = lis[i];\n        var img = document.getElementById('handle'+li.id);\n        li.style.zIndex = 1;\n        Drag.init(img, li, left + 10, left + 10, top + 10, top + 10 + limit);\n        li.onDragStart = startDrag;\n        li.onDragEnd = endDrag;\n        img.style.cursor = 'move';\n    }\n}\n\nfunction submitOrderForm() {\n    var inputOrder = document.getElementsBySelector('input[name=order_]')[0];\n    inputOrder.value = getOrder();\n    inputOrder.disabled=false;\n}\n\nfunction startDrag() {\n    this.style.zIndex = '10';\n    this.className = 'dragging';\n}\n\nfunction endDrag(x, y) {\n    this.style.zIndex = '1';\n    this.className = '';\n    // Work out how far along it has been dropped, using x co-ordinate\n    var oldIndex = this.index;\n    var newIndex = Math.round((y - 10 - top) / height);\n    // 'Snap' to the correct position\n    this.style.top = (10 + top + newIndex * height) + 'px';\n    this.index = newIndex;\n    moveItem(oldIndex, newIndex);\n}\n\nfunction moveItem(oldIndex, newIndex) {\n    // Swaps two items, adjusts the index and left co-ord for all others\n    if (oldIndex == newIndex) {\n        return; // Nothing to swap;\n    }\n    var direction, lo, hi;\n    if (newIndex > oldIndex) {\n        lo = oldIndex;\n        hi = newIndex;\n        direction = -1;\n    } else {\n        direction = 1;\n        hi = oldIndex;\n        lo = newIndex;\n    }\n    var lis2 = new Array(); // We will build the new order in this array\n    for (var i = 0; i < lis.length; i++) {\n        if (i < lo || i > hi) {\n            // Position of items not between the indexes is unaffected\n            lis2[i] = lis[i];\n            continue;\n        } else if (i == newIndex) {\n            lis2[i] = lis[oldIndex];\n            continue;\n        } else {\n            // Item is between the two indexes - move it along 1\n            lis2[i] = lis[i - direction];\n        }\n    }\n    // Re-index everything\n    reIndex(lis2);\n    lis = lis2;\n    draw();\n//    document.getElementById('hiddenOrder').value = getOrder();\n    document.getElementsBySelector('input[name=order_]')[0].value = getOrder();\n}\n\nfunction reIndex(lis) {\n    for (var i = 0; i < lis.length; i++) {\n        lis[i].index = i;\n    }\n}\n\nfunction draw() {\n    for (var i = 0; i < lis.length; i++) {\n        var li = lis[i];\n        li.index = i;\n        li.style.position = 'absolute';\n        li.style.left = (10 + left) + 'px';\n        li.style.top = (10 + top + (i * height)) + 'px';\n    }\n}\n\nfunction getOrder() {\n    var order = new Array(lis.length);\n    for (var i = 0; i < lis.length; i++) {\n        order[i] = lis[i].id.substring(1, 100);\n    }\n    return order.join(',');\n}\n\nfunction setOrder(id_list) {\n    /* Set the current order to match the lsit of IDs */\n    var temp_lis = new Array();\n    for (var i = 0; i < id_list.length; i++) {\n        var id = 'p' + id_list[i];\n        temp_lis[temp_lis.length] = document.getElementById(id);\n    }\n    reIndex(temp_lis);\n    lis = temp_lis;\n    draw();\n}\n\nfunction addEvent(elm, evType, fn, useCapture)\n// addEvent and removeEvent\n// cross-browser event handling for IE5+,  NS6 and Mozilla\n// By Scott Andrew\n{\n  if (elm.addEventListener){\n    elm.addEventListener(evType, fn, useCapture);\n    return true;\n  } else if (elm.attachEvent){\n    var r = elm.attachEvent(\"on\"+evType, fn);\n    return r;\n  } else {\n    elm['on'+evType] = fn;\n  }\n}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/static/admin/js/calendar.js",
    "content": "/*\ncalendar.js - Calendar functions by Adrian Holovaty\n*/\n\nfunction removeChildren(a) { // \"a\" is reference to an object\n    while (a.hasChildNodes()) a.removeChild(a.lastChild);\n}\n\n// quickElement(tagType, parentReference, textInChildNode, [, attribute, attributeValue ...]);\nfunction quickElement() {\n    var obj = document.createElement(arguments[0]);\n    if (arguments[2] != '' && arguments[2] != null) {\n        var textNode = document.createTextNode(arguments[2]);\n        obj.appendChild(textNode);\n    }\n    var len = arguments.length;\n    for (var i = 3; i < len; i += 2) {\n        obj.setAttribute(arguments[i], arguments[i+1]);\n    }\n    arguments[1].appendChild(obj);\n    return obj;\n}\n\n// CalendarNamespace -- Provides a collection of HTML calendar-related helper functions\nvar CalendarNamespace = {\n    monthsOfYear: gettext('January February March April May June July August September October November December').split(' '),\n    daysOfWeek: gettext('S M T W T F S').split(' '),\n    firstDayOfWeek: parseInt(get_format('FIRST_DAY_OF_WEEK')),\n    isLeapYear: function(year) {\n        return (((year % 4)==0) && ((year % 100)!=0) || ((year % 400)==0));\n    },\n    getDaysInMonth: function(month,year) {\n        var days;\n        if (month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month==12) {\n            days = 31;\n        }\n        else if (month==4 || month==6 || month==9 || month==11) {\n            days = 30;\n        }\n        else if (month==2 && CalendarNamespace.isLeapYear(year)) {\n            days = 29;\n        }\n        else {\n            days = 28;\n        }\n        return days;\n    },\n    draw: function(month, year, div_id, callback) { // month = 1-12, year = 1-9999\n        var today = new Date();\n        var todayDay = today.getDate();\n        var todayMonth = today.getMonth()+1;\n        var todayYear = today.getFullYear();\n        var todayClass = '';\n\n        month = parseInt(month);\n        year = parseInt(year);\n        var calDiv = document.getElementById(div_id);\n        removeChildren(calDiv);\n        var calTable = document.createElement('table');\n        quickElement('caption', calTable, CalendarNamespace.monthsOfYear[month-1] + ' ' + year);\n        var tableBody = quickElement('tbody', calTable);\n\n        // Draw days-of-week header\n        var tableRow = quickElement('tr', tableBody);\n        for (var i = 0; i < 7; i++) {\n            quickElement('th', tableRow, CalendarNamespace.daysOfWeek[(i + CalendarNamespace.firstDayOfWeek) % 7]);\n        }\n\n        var startingPos = new Date(year, month-1, 1 - CalendarNamespace.firstDayOfWeek).getDay();\n        var days = CalendarNamespace.getDaysInMonth(month, year);\n\n        // Draw blanks before first of month\n        tableRow = quickElement('tr', tableBody);\n        for (var i = 0; i < startingPos; i++) {\n            var _cell = quickElement('td', tableRow, ' ');\n            _cell.style.backgroundColor = '#f3f3f3';\n        }\n\n        // Draw days of month\n        var currentDay = 1;\n        for (var i = startingPos; currentDay <= days; i++) {\n            if (i%7 == 0 && currentDay != 1) {\n                tableRow = quickElement('tr', tableBody);\n            }\n            if ((currentDay==todayDay) && (month==todayMonth) && (year==todayYear)) {\n                todayClass='today';\n            } else {\n                todayClass='';\n            }\n            var cell = quickElement('td', tableRow, '', 'class', todayClass);\n\n            quickElement('a', cell, currentDay, 'href', 'javascript:void(' + callback + '('+year+','+month+','+currentDay+'));');\n            currentDay++;\n        }\n\n        // Draw blanks after end of month (optional, but makes for valid code)\n        while (tableRow.childNodes.length < 7) {\n            var _cell = quickElement('td', tableRow, ' ');\n            _cell.style.backgroundColor = '#f3f3f3';\n        }\n\n        calDiv.appendChild(calTable);\n    }\n}\n\n// Calendar -- A calendar instance\nfunction Calendar(div_id, callback) {\n    // div_id (string) is the ID of the element in which the calendar will\n    //     be displayed\n    // callback (string) is the name of a JavaScript function that will be\n    //     called with the parameters (year, month, day) when a day in the\n    //     calendar is clicked\n    this.div_id = div_id;\n    this.callback = callback;\n    this.today = new Date();\n    this.currentMonth = this.today.getMonth() + 1;\n    this.currentYear = this.today.getFullYear();\n}\nCalendar.prototype = {\n    drawCurrent: function() {\n        CalendarNamespace.draw(this.currentMonth, this.currentYear, this.div_id, this.callback);\n    },\n    drawDate: function(month, year) {\n        this.currentMonth = month;\n        this.currentYear = year;\n        this.drawCurrent();\n    },\n    drawPreviousMonth: function() {\n        if (this.currentMonth == 1) {\n            this.currentMonth = 12;\n            this.currentYear--;\n        }\n        else {\n            this.currentMonth--;\n        }\n        this.drawCurrent();\n    },\n    drawNextMonth: function() {\n        if (this.currentMonth == 12) {\n            this.currentMonth = 1;\n            this.currentYear++;\n        }\n        else {\n            this.currentMonth++;\n        }\n        this.drawCurrent();\n    },\n    drawPreviousYear: function() {\n        this.currentYear--;\n        this.drawCurrent();\n    },\n    drawNextYear: function() {\n        this.currentYear++;\n        this.drawCurrent();\n    }\n}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/static/admin/js/collapse.js",
    "content": "(function($) {\n\t$(document).ready(function() {\n\t\t// Add anchor tag for Show/Hide link\n\t\t$(\"fieldset.collapse\").each(function(i, elem) {\n\t\t\t// Don't hide if fields in this fieldset have errors\n\t\t\tif ($(elem).find(\"div.errors\").length == 0) {\n\t\t\t\t$(elem).addClass(\"collapsed\").find(\"h2\").first().append(' (<a id=\"fieldsetcollapser' +\n\t\t\t\t\ti +'\" class=\"collapse-toggle\" href=\"#\">' + gettext(\"Show\") +\n\t\t\t\t\t'</a>)');\n\t\t\t}\n\t\t});\n\t\t// Add toggle to anchor tag\n\t\t$(\"fieldset.collapse a.collapse-toggle\").toggle(\n\t\t\tfunction() { // Show\n\t\t\t\t$(this).text(gettext(\"Hide\")).closest(\"fieldset\").removeClass(\"collapsed\").trigger(\"show.fieldset\", [$(this).attr(\"id\")]);\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tfunction() { // Hide\n\t\t\t\t$(this).text(gettext(\"Show\")).closest(\"fieldset\").addClass(\"collapsed\").trigger(\"hide.fieldset\", [$(this).attr(\"id\")]);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t);\n\t});\n})(django.jQuery);\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/static/admin/js/core.js",
    "content": "// Core javascript helper functions\n\n// basic browser identification & version\nvar isOpera = (navigator.userAgent.indexOf(\"Opera\")>=0) && parseFloat(navigator.appVersion);\nvar isIE = ((document.all) && (!isOpera)) && parseFloat(navigator.appVersion.split(\"MSIE \")[1].split(\";\")[0]);\n\n// Cross-browser event handlers.\nfunction addEvent(obj, evType, fn) {\n    if (obj.addEventListener) {\n        obj.addEventListener(evType, fn, false);\n        return true;\n    } else if (obj.attachEvent) {\n        var r = obj.attachEvent(\"on\" + evType, fn);\n        return r;\n    } else {\n        return false;\n    }\n}\n\nfunction removeEvent(obj, evType, fn) {\n    if (obj.removeEventListener) {\n        obj.removeEventListener(evType, fn, false);\n        return true;\n    } else if (obj.detachEvent) {\n        obj.detachEvent(\"on\" + evType, fn);\n        return true;\n    } else {\n        return false;\n    }\n}\n\n// quickElement(tagType, parentReference, textInChildNode, [, attribute, attributeValue ...]);\nfunction quickElement() {\n    var obj = document.createElement(arguments[0]);\n    if (arguments[2] != '' && arguments[2] != null) {\n        var textNode = document.createTextNode(arguments[2]);\n        obj.appendChild(textNode);\n    }\n    var len = arguments.length;\n    for (var i = 3; i < len; i += 2) {\n        obj.setAttribute(arguments[i], arguments[i+1]);\n    }\n    arguments[1].appendChild(obj);\n    return obj;\n}\n\n// ----------------------------------------------------------------------------\n// Cross-browser xmlhttp object\n// from http://jibbering.com/2002/4/httprequest.html\n// ----------------------------------------------------------------------------\nvar xmlhttp;\n/*@cc_on @*/\n/*@if (@_jscript_version >= 5)\n    try {\n        xmlhttp = new ActiveXObject(\"Msxml2.XMLHTTP\");\n    } catch (e) {\n        try {\n            xmlhttp = new ActiveXObject(\"Microsoft.XMLHTTP\");\n        } catch (E) {\n            xmlhttp = false;\n        }\n    }\n@else\n    xmlhttp = false;\n@end @*/\nif (!xmlhttp && typeof XMLHttpRequest != 'undefined') {\n  xmlhttp = new XMLHttpRequest();\n}\n\n// ----------------------------------------------------------------------------\n// Find-position functions by PPK\n// See http://www.quirksmode.org/js/findpos.html\n// ----------------------------------------------------------------------------\nfunction findPosX(obj) {\n    var curleft = 0;\n    if (obj.offsetParent) {\n        while (obj.offsetParent) {\n            curleft += obj.offsetLeft - ((isOpera) ? 0 : obj.scrollLeft);\n            obj = obj.offsetParent;\n        }\n        // IE offsetParent does not include the top-level\n        if (isIE && obj.parentElement){\n            curleft += obj.offsetLeft - obj.scrollLeft;\n        }\n    } else if (obj.x) {\n        curleft += obj.x;\n    }\n    return curleft;\n}\n\nfunction findPosY(obj) {\n    var curtop = 0;\n    if (obj.offsetParent) {\n        while (obj.offsetParent) {\n            curtop += obj.offsetTop - ((isOpera) ? 0 : obj.scrollTop);\n            obj = obj.offsetParent;\n        }\n        // IE offsetParent does not include the top-level\n        if (isIE && obj.parentElement){\n            curtop += obj.offsetTop - obj.scrollTop;\n        }\n    } else if (obj.y) {\n        curtop += obj.y;\n    }\n    return curtop;\n}\n\n//-----------------------------------------------------------------------------\n// Date object extensions\n// ----------------------------------------------------------------------------\n\nDate.prototype.getTwelveHours = function() {\n    hours = this.getHours();\n    if (hours == 0) {\n        return 12;\n    }\n    else {\n        return hours <= 12 ? hours : hours-12\n    }\n}\n\nDate.prototype.getTwoDigitMonth = function() {\n    return (this.getMonth() < 9) ? '0' + (this.getMonth()+1) : (this.getMonth()+1);\n}\n\nDate.prototype.getTwoDigitDate = function() {\n    return (this.getDate() < 10) ? '0' + this.getDate() : this.getDate();\n}\n\nDate.prototype.getTwoDigitTwelveHour = function() {\n    return (this.getTwelveHours() < 10) ? '0' + this.getTwelveHours() : this.getTwelveHours();\n}\n\nDate.prototype.getTwoDigitHour = function() {\n    return (this.getHours() < 10) ? '0' + this.getHours() : this.getHours();\n}\n\nDate.prototype.getTwoDigitMinute = function() {\n    return (this.getMinutes() < 10) ? '0' + this.getMinutes() : this.getMinutes();\n}\n\nDate.prototype.getTwoDigitSecond = function() {\n    return (this.getSeconds() < 10) ? '0' + this.getSeconds() : this.getSeconds();\n}\n\nDate.prototype.getHourMinute = function() {\n    return this.getTwoDigitHour() + ':' + this.getTwoDigitMinute();\n}\n\nDate.prototype.getHourMinuteSecond = function() {\n    return this.getTwoDigitHour() + ':' + this.getTwoDigitMinute() + ':' + this.getTwoDigitSecond();\n}\n\nDate.prototype.strftime = function(format) {\n    var fields = {\n        c: this.toString(),\n        d: this.getTwoDigitDate(),\n        H: this.getTwoDigitHour(),\n        I: this.getTwoDigitTwelveHour(),\n        m: this.getTwoDigitMonth(),\n        M: this.getTwoDigitMinute(),\n        p: (this.getHours() >= 12) ? 'PM' : 'AM',\n        S: this.getTwoDigitSecond(),\n        w: '0' + this.getDay(),\n        x: this.toLocaleDateString(),\n        X: this.toLocaleTimeString(),\n        y: ('' + this.getFullYear()).substr(2, 4),\n        Y: '' + this.getFullYear(),\n        '%' : '%'\n    };\n    var result = '', i = 0;\n    while (i < format.length) {\n        if (format.charAt(i) === '%') {\n            result = result + fields[format.charAt(i + 1)];\n            ++i;\n        }\n        else {\n            result = result + format.charAt(i);\n        }\n        ++i;\n    }\n    return result;\n}\n\n// ----------------------------------------------------------------------------\n// String object extensions\n// ----------------------------------------------------------------------------\nString.prototype.pad_left = function(pad_length, pad_string) {\n    var new_string = this;\n    for (var i = 0; new_string.length < pad_length; i++) {\n        new_string = pad_string + new_string;\n    }\n    return new_string;\n}\n\n// ----------------------------------------------------------------------------\n// Get the computed style for and element\n// ----------------------------------------------------------------------------\nfunction getStyle(oElm, strCssRule){\n    var strValue = \"\";\n    if(document.defaultView && document.defaultView.getComputedStyle){\n        strValue = document.defaultView.getComputedStyle(oElm, \"\").getPropertyValue(strCssRule);\n    }\n    else if(oElm.currentStyle){\n        strCssRule = strCssRule.replace(/\\-(\\w)/g, function (strMatch, p1){\n            return p1.toUpperCase();\n        });\n        strValue = oElm.currentStyle[strCssRule];\n    }\n    return strValue;\n}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/static/admin/js/getElementsBySelector.js",
    "content": "/* document.getElementsBySelector(selector)\n   - returns an array of element objects from the current document\n     matching the CSS selector. Selectors can contain element names, \n     class names and ids and can be nested. For example:\n     \n       elements = document.getElementsBySelect('div#main p a.external')\n     \n     Will return an array of all 'a' elements with 'external' in their \n     class attribute that are contained inside 'p' elements that are \n     contained inside the 'div' element which has id=\"main\"\n\n   New in version 0.4: Support for CSS2 and CSS3 attribute selectors:\n   See http://www.w3.org/TR/css3-selectors/#attribute-selectors\n\n   Version 0.4 - Simon Willison, March 25th 2003\n   -- Works in Phoenix 0.5, Mozilla 1.3, Opera 7, Internet Explorer 6, Internet Explorer 5 on Windows\n   -- Opera 7 fails \n*/\n\nfunction getAllChildren(e) {\n  // Returns all children of element. Workaround required for IE5/Windows. Ugh.\n  return e.all ? e.all : e.getElementsByTagName('*');\n}\n\ndocument.getElementsBySelector = function(selector) {\n  // Attempt to fail gracefully in lesser browsers\n  if (!document.getElementsByTagName) {\n    return new Array();\n  }\n  // Split selector in to tokens\n  var tokens = selector.split(' ');\n  var currentContext = new Array(document);\n  for (var i = 0; i < tokens.length; i++) {\n    token = tokens[i].replace(/^\\s+/,'').replace(/\\s+$/,'');;\n    if (token.indexOf('#') > -1) {\n      // Token is an ID selector\n      var bits = token.split('#');\n      var tagName = bits[0];\n      var id = bits[1];\n      var element = document.getElementById(id);\n      if (!element || (tagName && element.nodeName.toLowerCase() != tagName)) {\n        // ID not found or tag with that ID not found, return false.\n        return new Array();\n      }\n      // Set currentContext to contain just this element\n      currentContext = new Array(element);\n      continue; // Skip to next token\n    }\n    if (token.indexOf('.') > -1) {\n      // Token contains a class selector\n      var bits = token.split('.');\n      var tagName = bits[0];\n      var className = bits[1];\n      if (!tagName) {\n        tagName = '*';\n      }\n      // Get elements matching tag, filter them for class selector\n      var found = new Array;\n      var foundCount = 0;\n      for (var h = 0; h < currentContext.length; h++) {\n        var elements;\n        if (tagName == '*') {\n            elements = getAllChildren(currentContext[h]);\n        } else {\n            try {\n                elements = currentContext[h].getElementsByTagName(tagName);\n            }\n            catch(e) {\n                elements = [];\n            }\n        }\n        for (var j = 0; j < elements.length; j++) {\n          found[foundCount++] = elements[j];\n        }\n      }\n      currentContext = new Array;\n      var currentContextIndex = 0;\n      for (var k = 0; k < found.length; k++) {\n        if (found[k].className && found[k].className.match(new RegExp('\\\\b'+className+'\\\\b'))) {\n          currentContext[currentContextIndex++] = found[k];\n        }\n      }\n      continue; // Skip to next token\n    }\n    // Code to deal with attribute selectors\n    if (token.match(/^(\\w*)\\[(\\w+)([=~\\|\\^\\$\\*]?)=?\"?([^\\]\"]*)\"?\\]$/)) {\n      var tagName = RegExp.$1;\n      var attrName = RegExp.$2;\n      var attrOperator = RegExp.$3;\n      var attrValue = RegExp.$4;\n      if (!tagName) {\n        tagName = '*';\n      }\n      // Grab all of the tagName elements within current context\n      var found = new Array;\n      var foundCount = 0;\n      for (var h = 0; h < currentContext.length; h++) {\n        var elements;\n        if (tagName == '*') {\n            elements = getAllChildren(currentContext[h]);\n        } else {\n            elements = currentContext[h].getElementsByTagName(tagName);\n        }\n        for (var j = 0; j < elements.length; j++) {\n          found[foundCount++] = elements[j];\n        }\n      }\n      currentContext = new Array;\n      var currentContextIndex = 0;\n      var checkFunction; // This function will be used to filter the elements\n      switch (attrOperator) {\n        case '=': // Equality\n          checkFunction = function(e) { return (e.getAttribute(attrName) == attrValue); };\n          break;\n        case '~': // Match one of space seperated words \n          checkFunction = function(e) { return (e.getAttribute(attrName).match(new RegExp('\\\\b'+attrValue+'\\\\b'))); };\n          break;\n        case '|': // Match start with value followed by optional hyphen\n          checkFunction = function(e) { return (e.getAttribute(attrName).match(new RegExp('^'+attrValue+'-?'))); };\n          break;\n        case '^': // Match starts with value\n          checkFunction = function(e) { return (e.getAttribute(attrName).indexOf(attrValue) == 0); };\n          break;\n        case '$': // Match ends with value - fails with \"Warning\" in Opera 7\n          checkFunction = function(e) { return (e.getAttribute(attrName).lastIndexOf(attrValue) == e.getAttribute(attrName).length - attrValue.length); };\n          break;\n        case '*': // Match ends with value\n          checkFunction = function(e) { return (e.getAttribute(attrName).indexOf(attrValue) > -1); };\n          break;\n        default :\n          // Just test for existence of attribute\n          checkFunction = function(e) { return e.getAttribute(attrName); };\n      }\n      currentContext = new Array;\n      var currentContextIndex = 0;\n      for (var k = 0; k < found.length; k++) {\n        if (checkFunction(found[k])) {\n          currentContext[currentContextIndex++] = found[k];\n        }\n      }\n      // alert('Attribute Selector: '+tagName+' '+attrName+' '+attrOperator+' '+attrValue);\n      continue; // Skip to next token\n    }\n    // If we get here, token is JUST an element (not a class or ID selector)\n    tagName = token;\n    var found = new Array;\n    var foundCount = 0;\n    for (var h = 0; h < currentContext.length; h++) {\n      var elements = currentContext[h].getElementsByTagName(tagName);\n      for (var j = 0; j < elements.length; j++) {\n        found[foundCount++] = elements[j];\n      }\n    }\n    currentContext = found;\n  }\n  return currentContext;\n}\n\n/* That revolting regular expression explained \n/^(\\w+)\\[(\\w+)([=~\\|\\^\\$\\*]?)=?\"?([^\\]\"]*)\"?\\]$/\n  \\---/  \\---/\\-------------/    \\-------/\n    |      |         |               |\n    |      |         |           The value\n    |      |    ~,|,^,$,* or =\n    |   Attribute \n   Tag\n*/\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/static/admin/js/inlines.js",
    "content": "/**\n * Django admin inlines\n *\n * Based on jQuery Formset 1.1\n * @author Stanislaus Madueke (stan DOT madueke AT gmail DOT com)\n * @requires jQuery 1.2.6 or later\n *\n * Copyright (c) 2009, Stanislaus Madueke\n * All rights reserved.\n *\n * Spiced up with Code from Zain Memon's GSoC project 2009\n * and modified for Django by Jannis Leidel, Travis Swicegood and Julien Phalip.\n *\n * Licensed under the New BSD License\n * See: http://www.opensource.org/licenses/bsd-license.php\n */\n(function($) {\n  $.fn.formset = function(opts) {\n    var options = $.extend({}, $.fn.formset.defaults, opts);\n    var $this = $(this);\n    var $parent = $this.parent();\n    var updateElementIndex = function(el, prefix, ndx) {\n      var id_regex = new RegExp(\"(\" + prefix + \"-(\\\\d+|__prefix__))\");\n      var replacement = prefix + \"-\" + ndx;\n      if ($(el).attr(\"for\")) {\n        $(el).attr(\"for\", $(el).attr(\"for\").replace(id_regex, replacement));\n      }\n      if (el.id) {\n        el.id = el.id.replace(id_regex, replacement);\n      }\n      if (el.name) {\n        el.name = el.name.replace(id_regex, replacement);\n      }\n    };\n    var totalForms = $(\"#id_\" + options.prefix + \"-TOTAL_FORMS\").attr(\"autocomplete\", \"off\");\n    var nextIndex = parseInt(totalForms.val(), 10);\n    var maxForms = $(\"#id_\" + options.prefix + \"-MAX_NUM_FORMS\").attr(\"autocomplete\", \"off\");\n    // only show the add button if we are allowed to add more items,\n        // note that max_num = None translates to a blank string.\n    var showAddButton = maxForms.val() === '' || (maxForms.val()-totalForms.val()) > 0;\n    $this.each(function(i) {\n      $(this).not(\".\" + options.emptyCssClass).addClass(options.formCssClass);\n    });\n    if ($this.length && showAddButton) {\n      var addButton;\n      if ($this.attr(\"tagName\") == \"TR\") {\n        // If forms are laid out as table rows, insert the\n        // \"add\" button in a new table row:\n        var numCols = this.eq(-1).children().length;\n        $parent.append('<tr class=\"' + options.addCssClass + '\"><td colspan=\"' + numCols + '\"><a href=\"javascript:void(0)\">' + options.addText + \"</a></tr>\");\n        addButton = $parent.find(\"tr:last a\");\n      } else {\n        // Otherwise, insert it immediately after the last form:\n        $this.filter(\":last\").after('<div class=\"' + options.addCssClass + '\"><a href=\"javascript:void(0)\">' + options.addText + \"</a></div>\");\n        addButton = $this.filter(\":last\").next().find(\"a\");\n      }\n      addButton.click(function(e) {\n        e.preventDefault();\n        var totalForms = $(\"#id_\" + options.prefix + \"-TOTAL_FORMS\");\n        var template = $(\"#\" + options.prefix + \"-empty\");\n        var row = template.clone(true);\n        row.removeClass(options.emptyCssClass)\n          .addClass(options.formCssClass)\n          .attr(\"id\", options.prefix + \"-\" + nextIndex);\n        if (row.is(\"tr\")) {\n          // If the forms are laid out in table rows, insert\n          // the remove button into the last table cell:\n          row.children(\":last\").append('<div><a class=\"' + options.deleteCssClass +'\" href=\"javascript:void(0)\">' + options.deleteText + \"</a></div>\");\n        } else if (row.is(\"ul\") || row.is(\"ol\")) {\n          // If they're laid out as an ordered/unordered list,\n          // insert an <li> after the last list item:\n          row.append('<li><a class=\"' + options.deleteCssClass +'\" href=\"javascript:void(0)\">' + options.deleteText + \"</a></li>\");\n        } else {\n          // Otherwise, just insert the remove button as the\n          // last child element of the form's container:\n          row.children(\":first\").append('<span><a class=\"' + options.deleteCssClass + '\" href=\"javascript:void(0)\">' + options.deleteText + \"</a></span>\");\n        }\n        row.find(\"*\").each(function() {\n          updateElementIndex(this, options.prefix, totalForms.val());\n        });\n        // Insert the new form when it has been fully edited\n        row.insertBefore($(template));\n        // Update number of total forms\n        $(totalForms).val(parseInt(totalForms.val(), 10) + 1);\n        nextIndex += 1;\n        // Hide add button in case we've hit the max, except we want to add infinitely\n        if ((maxForms.val() !== '') && (maxForms.val()-totalForms.val()) <= 0) {\n          addButton.parent().hide();\n        }\n        // The delete button of each row triggers a bunch of other things\n        row.find(\"a.\" + options.deleteCssClass).click(function(e) {\n          e.preventDefault();\n          // Remove the parent form containing this button:\n          var row = $(this).parents(\".\" + options.formCssClass);\n          row.remove();\n          nextIndex -= 1;\n          // If a post-delete callback was provided, call it with the deleted form:\n          if (options.removed) {\n            options.removed(row);\n          }\n          // Update the TOTAL_FORMS form count.\n          var forms = $(\".\" + options.formCssClass);\n          $(\"#id_\" + options.prefix + \"-TOTAL_FORMS\").val(forms.length);\n          // Show add button again once we drop below max\n          if ((maxForms.val() === '') || (maxForms.val()-forms.length) > 0) {\n            addButton.parent().show();\n          }\n          // Also, update names and ids for all remaining form controls\n          // so they remain in sequence:\n          for (var i=0, formCount=forms.length; i<formCount; i++)\n          {\n            updateElementIndex($(forms).get(i), options.prefix, i);\n            $(forms.get(i)).find(\"*\").each(function() {\n              updateElementIndex(this, options.prefix, i);\n            });\n          }\n        });\n        // If a post-add callback was supplied, call it with the added form:\n        if (options.added) {\n          options.added(row);\n        }\n      });\n    }\n    return this;\n  };\n\n  /* Setup plugin defaults */\n  $.fn.formset.defaults = {\n    prefix: \"form\",          // The form prefix for your django formset\n    addText: \"add another\",      // Text for the add link\n    deleteText: \"remove\",      // Text for the delete link\n    addCssClass: \"add-row\",      // CSS class applied to the add link\n    deleteCssClass: \"delete-row\",  // CSS class applied to the delete link\n    emptyCssClass: \"empty-row\",    // CSS class applied to the empty row\n    formCssClass: \"dynamic-form\",  // CSS class applied to each form in a formset\n    added: null,          // Function called each time a new form is added\n    removed: null          // Function called each time a form is deleted\n  };\n\n\n  // Tabular inlines ---------------------------------------------------------\n  $.fn.tabularFormset = function(options) {\n    var $rows = $(this);\n    var alternatingRows = function(row) {\n      $($rows.selector).not(\".add-row\").removeClass(\"row1 row2\")\n        .filter(\":even\").addClass(\"row1\").end()\n        .filter(\":odd\").addClass(\"row2\");\n    };\n\n    var reinitDateTimeShortCuts = function() {\n      // Reinitialize the calendar and clock widgets by force\n      if (typeof DateTimeShortcuts != \"undefined\") {\n        $(\".datetimeshortcuts\").remove();\n        DateTimeShortcuts.init();\n      }\n    };\n\n    var updateSelectFilter = function() {\n      // If any SelectFilter widgets are a part of the new form,\n      // instantiate a new SelectFilter instance for it.\n      if (typeof SelectFilter != 'undefined'){\n        $('.selectfilter').each(function(index, value){\n          var namearr = value.name.split('-');\n          SelectFilter.init(value.id, namearr[namearr.length-1], false, options.adminStaticPrefix );\n        });\n        $('.selectfilterstacked').each(function(index, value){\n          var namearr = value.name.split('-');\n          SelectFilter.init(value.id, namearr[namearr.length-1], true, options.adminStaticPrefix );\n        });\n      }\n    };\n\n    var initPrepopulatedFields = function(row) {\n      row.find('.prepopulated_field').each(function() {\n        var field = $(this),\n            input = field.find('input, select, textarea'),\n            dependency_list = input.data('dependency_list') || [],\n            dependencies = [];\n        $.each(dependency_list, function(i, field_name) {\n          dependencies.push('#' + row.find('.field-' + field_name).find('input, select, textarea').attr('id'));\n        });\n        if (dependencies.length) {\n          input.prepopulate(dependencies, input.attr('maxlength'));\n        }\n      });\n    };\n\n    $rows.formset({\n      prefix: options.prefix,\n      addText: options.addText,\n      formCssClass: \"dynamic-\" + options.prefix,\n      deleteCssClass: \"inline-deletelink\",\n      deleteText: options.deleteText,\n      emptyCssClass: \"empty-form\",\n      removed: alternatingRows,\n      added: function(row) {\n        initPrepopulatedFields(row);\n        reinitDateTimeShortCuts();\n        updateSelectFilter();\n        alternatingRows(row);\n      }\n    });\n\n    return $rows;\n  };\n\n  // Stacked inlines ---------------------------------------------------------\n  $.fn.stackedFormset = function(options) {\n    var $rows = $(this);\n    var updateInlineLabel = function(row) {\n      $($rows.selector).find(\".inline_label\").each(function(i) {\n        var count = i + 1;\n        $(this).html($(this).html().replace(/(#\\d+)/g, \"#\" + count));\n      });\n    };\n\n    var reinitDateTimeShortCuts = function() {\n      // Reinitialize the calendar and clock widgets by force, yuck.\n      if (typeof DateTimeShortcuts != \"undefined\") {\n        $(\".datetimeshortcuts\").remove();\n        DateTimeShortcuts.init();\n      }\n    };\n\n    var updateSelectFilter = function() {\n      // If any SelectFilter widgets were added, instantiate a new instance.\n      if (typeof SelectFilter != \"undefined\"){\n        $(\".selectfilter\").each(function(index, value){\n          var namearr = value.name.split('-');\n          SelectFilter.init(value.id, namearr[namearr.length-1], false, options.adminStaticPrefix);\n        });\n        $(\".selectfilterstacked\").each(function(index, value){\n          var namearr = value.name.split('-');\n          SelectFilter.init(value.id, namearr[namearr.length-1], true, options.adminStaticPrefix);\n        });\n      }\n    };\n\n    var initPrepopulatedFields = function(row) {\n      row.find('.prepopulated_field').each(function() {\n        var field = $(this),\n            input = field.find('input, select, textarea'),\n            dependency_list = input.data('dependency_list') || [],\n            dependencies = [];\n        $.each(dependency_list, function(i, field_name) {\n          dependencies.push('#' + row.find('.form-row .field-' + field_name).find('input, select, textarea').attr('id'));\n        });\n        if (dependencies.length) {\n          input.prepopulate(dependencies, input.attr('maxlength'));\n        }\n      });\n    };\n\n    $rows.formset({\n      prefix: options.prefix,\n      addText: options.addText,\n      formCssClass: \"dynamic-\" + options.prefix,\n      deleteCssClass: \"inline-deletelink\",\n      deleteText: options.deleteText,\n      emptyCssClass: \"empty-form\",\n      removed: updateInlineLabel,\n      added: (function(row) {\n        initPrepopulatedFields(row);\n        reinitDateTimeShortCuts();\n        updateSelectFilter();\n        updateInlineLabel(row);\n      })\n    });\n\n    return $rows;\n  };\n})(django.jQuery);\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/static/admin/js/jquery.init.js",
    "content": "/* Puts the included jQuery into our own namespace using noConflict and passing\n * it 'true'. This ensures that the included jQuery doesn't pollute the global\n * namespace (i.e. this preserves pre-existing values for both window.$ and\n * window.jQuery).\n */\nvar django = {\n    \"jQuery\": jQuery.noConflict(true)\n};\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/static/admin/js/jquery.js",
    "content": "/*!\n * jQuery JavaScript Library v1.4.2\n * http://jquery.com/\n *\n * Copyright 2010, John Resig\n * Dual licensed under the MIT or GPL Version 2 licenses.\n * http://jquery.org/license\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n * Copyright 2010, The Dojo Foundation\n * Released under the MIT, BSD, and GPL Licenses.\n *\n * Date: Sat Feb 13 22:33:48 2010 -0500\n */\n(function( window, undefined ) {\n\n// Define a local copy of jQuery\nvar jQuery = function( selector, context ) {\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\treturn new jQuery.fn.init( selector, context );\n\t},\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$,\n\n\t// Use the correct document accordingly with window argument (sandbox)\n\tdocument = window.document,\n\n\t// A central reference to the root jQuery(document)\n\trootjQuery,\n\n\t// A simple way to check for HTML strings or ID strings\n\t// (both of which we optimize for)\n\tquickExpr = /^[^<]*(<[\\w\\W]+>)[^>]*$|^#([\\w-]+)$/,\n\n\t// Is it a simple selector\n\tisSimple = /^.[^:#\\[\\.,]*$/,\n\n\t// Check if a string has a non-whitespace character in it\n\trnotwhite = /\\S/,\n\n\t// Used for trimming whitespace\n\trtrim = /^(\\s|\\u00A0)+|(\\s|\\u00A0)+$/g,\n\n\t// Match a standalone tag\n\trsingleTag = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>)?$/,\n\n\t// Keep a UserAgent string for use with jQuery.browser\n\tuserAgent = navigator.userAgent,\n\n\t// For matching the engine and version of the browser\n\tbrowserMatch,\n\t\n\t// Has the ready events already been bound?\n\treadyBound = false,\n\t\n\t// The functions to execute on DOM ready\n\treadyList = [],\n\n\t// The ready event handler\n\tDOMContentLoaded,\n\n\t// Save a reference to some core methods\n\ttoString = Object.prototype.toString,\n\thasOwnProperty = Object.prototype.hasOwnProperty,\n\tpush = Array.prototype.push,\n\tslice = Array.prototype.slice,\n\tindexOf = Array.prototype.indexOf;\n\njQuery.fn = jQuery.prototype = {\n\tinit: function( selector, context ) {\n\t\tvar match, elem, ret, doc;\n\n\t\t// Handle $(\"\"), $(null), or $(undefined)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle $(DOMElement)\n\t\tif ( selector.nodeType ) {\n\t\t\tthis.context = this[0] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\t\t}\n\t\t\n\t\t// The body element only exists once, optimize finding it\n\t\tif ( selector === \"body\" && !context ) {\n\t\t\tthis.context = document;\n\t\t\tthis[0] = document.body;\n\t\t\tthis.selector = \"body\";\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\t// Are we dealing with HTML string or an ID?\n\t\t\tmatch = quickExpr.exec( selector );\n\n\t\t\t// Verify a match, and that no context was specified for #id\n\t\t\tif ( match && (match[1] || !context) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[1] ) {\n\t\t\t\t\tdoc = (context ? context.ownerDocument || context : document);\n\n\t\t\t\t\t// If a single string is passed in and it's a single tag\n\t\t\t\t\t// just do a createElement and skip the rest\n\t\t\t\t\tret = rsingleTag.exec( selector );\n\n\t\t\t\t\tif ( ret ) {\n\t\t\t\t\t\tif ( jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\t\tselector = [ document.createElement( ret[1] ) ];\n\t\t\t\t\t\t\tjQuery.fn.attr.call( selector, context, true );\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tselector = [ doc.createElement( ret[1] ) ];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tret = buildFragment( [ match[1] ], [ doc ] );\n\t\t\t\t\t\tselector = (ret.cacheable ? ret.fragment.cloneNode(true) : ret.fragment).childNodes;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\treturn jQuery.merge( this, selector );\n\t\t\t\t\t\n\t\t\t\t// HANDLE: $(\"#id\")\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[2] );\n\n\t\t\t\t\tif ( elem ) {\n\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id !== match[2] ) {\n\t\t\t\t\t\t\treturn rootjQuery.find( selector );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Otherwise, we inject the element directly into the jQuery object\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t\tthis[0] = elem;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.context = document;\n\t\t\t\t\tthis.selector = selector;\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(\"TAG\")\n\t\t\t} else if ( !context && /^\\w+$/.test( selector ) ) {\n\t\t\t\tthis.selector = selector;\n\t\t\t\tthis.context = document;\n\t\t\t\tselector = document.getElementsByTagName( selector );\n\t\t\t\treturn jQuery.merge( this, selector );\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn (context || rootjQuery).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn jQuery( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) ) {\n\t\t\treturn rootjQuery.ready( selector );\n\t\t}\n\n\t\tif (selector.selector !== undefined) {\n\t\t\tthis.selector = selector.selector;\n\t\t\tthis.context = selector.context;\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t},\n\n\t// Start with an empty selector\n\tselector: \"\",\n\n\t// The current version of jQuery being used\n\tjquery: \"1.4.2\",\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\t// The number of elements contained in the matched element set\n\tsize: function() {\n\t\treturn this.length;\n\t},\n\n\ttoArray: function() {\n\t\treturn slice.call( this, 0 );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\t\treturn num == null ?\n\n\t\t\t// Return a 'clean' array\n\t\t\tthis.toArray() :\n\n\t\t\t// Return just the object\n\t\t\t( num < 0 ? this.slice(num)[ 0 ] : this[ num ] );\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems, name, selector ) {\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery();\n\n\t\tif ( jQuery.isArray( elems ) ) {\n\t\t\tpush.apply( ret, elems );\n\t\t\n\t\t} else {\n\t\t\tjQuery.merge( ret, elems );\n\t\t}\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\tret.context = this.context;\n\n\t\tif ( name === \"find\" ) {\n\t\t\tret.selector = this.selector + (this.selector ? \" \" : \"\") + selector;\n\t\t} else if ( name ) {\n\t\t\tret.selector = this.selector + \".\" + name + \"(\" + selector + \")\";\n\t\t}\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\t// (You can seed the arguments with an array of args, but this is\n\t// only used internally.)\n\teach: function( callback, args ) {\n\t\treturn jQuery.each( this, callback, args );\n\t},\n\t\n\tready: function( fn ) {\n\t\t// Attach the listeners\n\t\tjQuery.bindReady();\n\n\t\t// If the DOM is already ready\n\t\tif ( jQuery.isReady ) {\n\t\t\t// Execute the function immediately\n\t\t\tfn.call( document, jQuery );\n\n\t\t// Otherwise, remember the function for later\n\t\t} else if ( readyList ) {\n\t\t\t// Add the function to the wait list\n\t\t\treadyList.push( fn );\n\t\t}\n\n\t\treturn this;\n\t},\n\t\n\teq: function( i ) {\n\t\treturn i === -1 ?\n\t\t\tthis.slice( i ) :\n\t\t\tthis.slice( i, +i + 1 );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ),\n\t\t\t\"slice\", slice.call(arguments).join(\",\") );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map(this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t}));\n\t},\n\t\n\tend: function() {\n\t\treturn this.prevObject || jQuery(null);\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: [].sort,\n\tsplice: [].splice\n};\n\n// Give the init function the jQuery prototype for later instantiation\njQuery.fn.init.prototype = jQuery.fn;\n\njQuery.extend = jQuery.fn.extend = function() {\n\t// copy reference to target object\n\tvar target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options, name, src, copy;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !jQuery.isFunction(target) ) {\n\t\ttarget = {};\n\t}\n\n\t// extend jQuery itself if only one argument is passed\n\tif ( length === i ) {\n\t\ttarget = this;\n\t\t--i;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\t\t// Only deal with non-null/undefined values\n\t\tif ( (options = arguments[ i ]) != null ) {\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging object literal values or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject(copy) || jQuery.isArray(copy) ) ) {\n\t\t\t\t\tvar clone = src && ( jQuery.isPlainObject(src) || jQuery.isArray(src) ) ? src\n\t\t\t\t\t\t: jQuery.isArray(copy) ? [] : {};\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend({\n\tnoConflict: function( deep ) {\n\t\twindow.$ = _$;\n\n\t\tif ( deep ) {\n\t\t\twindow.jQuery = _jQuery;\n\t\t}\n\n\t\treturn jQuery;\n\t},\n\t\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\t\n\t// Handle when the DOM is ready\n\tready: function() {\n\t\t// Make sure that the DOM is not already loaded\n\t\tif ( !jQuery.isReady ) {\n\t\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\t\tif ( !document.body ) {\n\t\t\t\treturn setTimeout( jQuery.ready, 13 );\n\t\t\t}\n\n\t\t\t// Remember that the DOM is ready\n\t\t\tjQuery.isReady = true;\n\n\t\t\t// If there are functions bound, to execute\n\t\t\tif ( readyList ) {\n\t\t\t\t// Execute all of them\n\t\t\t\tvar fn, i = 0;\n\t\t\t\twhile ( (fn = readyList[ i++ ]) ) {\n\t\t\t\t\tfn.call( document, jQuery );\n\t\t\t\t}\n\n\t\t\t\t// Reset the list of functions\n\t\t\t\treadyList = null;\n\t\t\t}\n\n\t\t\t// Trigger any bound ready events\n\t\t\tif ( jQuery.fn.triggerHandler ) {\n\t\t\t\tjQuery( document ).triggerHandler( \"ready\" );\n\t\t\t}\n\t\t}\n\t},\n\t\n\tbindReady: function() {\n\t\tif ( readyBound ) {\n\t\t\treturn;\n\t\t}\n\n\t\treadyBound = true;\n\n\t\t// Catch cases where $(document).ready() is called after the\n\t\t// browser event has already occurred.\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\treturn jQuery.ready();\n\t\t}\n\n\t\t// Mozilla, Opera and webkit nightlies currently support this event\n\t\tif ( document.addEventListener ) {\n\t\t\t// Use the handy event callback\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\t\t\t\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.addEventListener( \"load\", jQuery.ready, false );\n\n\t\t// If IE event model is used\n\t\t} else if ( document.attachEvent ) {\n\t\t\t// ensure firing before onload,\n\t\t\t// maybe late but safe also for iframes\n\t\t\tdocument.attachEvent(\"onreadystatechange\", DOMContentLoaded);\n\t\t\t\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.attachEvent( \"onload\", jQuery.ready );\n\n\t\t\t// If IE and not a frame\n\t\t\t// continually check to see if the document is ready\n\t\t\tvar toplevel = false;\n\n\t\t\ttry {\n\t\t\t\ttoplevel = window.frameElement == null;\n\t\t\t} catch(e) {}\n\n\t\t\tif ( document.documentElement.doScroll && toplevel ) {\n\t\t\t\tdoScrollCheck();\n\t\t\t}\n\t\t}\n\t},\n\n\t// See test/unit/core.js for details concerning isFunction.\n\t// Since version 1.3, DOM methods and functions like alert\n\t// aren't supported. They return false on IE (#2968).\n\tisFunction: function( obj ) {\n\t\treturn toString.call(obj) === \"[object Function]\";\n\t},\n\n\tisArray: function( obj ) {\n\t\treturn toString.call(obj) === \"[object Array]\";\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\t// Must be an Object.\n\t\t// Because of IE, we also have to check the presence of the constructor property.\n\t\t// Make sure that DOM nodes and window objects don't pass through, as well\n\t\tif ( !obj || toString.call(obj) !== \"[object Object]\" || obj.nodeType || obj.setInterval ) {\n\t\t\treturn false;\n\t\t}\n\t\t\n\t\t// Not own constructor property must be Object\n\t\tif ( obj.constructor\n\t\t\t&& !hasOwnProperty.call(obj, \"constructor\")\n\t\t\t&& !hasOwnProperty.call(obj.constructor.prototype, \"isPrototypeOf\") ) {\n\t\t\treturn false;\n\t\t}\n\t\t\n\t\t// Own properties are enumerated firstly, so to speed up,\n\t\t// if last one is own, then all properties are own.\n\t\n\t\tvar key;\n\t\tfor ( key in obj ) {}\n\t\t\n\t\treturn key === undefined || hasOwnProperty.call( obj, key );\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tfor ( var name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\t\n\terror: function( msg ) {\n\t\tthrow msg;\n\t},\n\t\n\tparseJSON: function( data ) {\n\t\tif ( typeof data !== \"string\" || !data ) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Make sure leading/trailing whitespace is removed (IE can't handle it)\n\t\tdata = jQuery.trim( data );\n\t\t\n\t\t// Make sure the incoming data is actual JSON\n\t\t// Logic borrowed from http://json.org/json2.js\n\t\tif ( /^[\\],:{}\\s]*$/.test(data.replace(/\\\\(?:[\"\\\\\\/bfnrt]|u[0-9a-fA-F]{4})/g, \"@\")\n\t\t\t.replace(/\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g, \"]\")\n\t\t\t.replace(/(?:^|:|,)(?:\\s*\\[)+/g, \"\")) ) {\n\n\t\t\t// Try to use the native JSON parser first\n\t\t\treturn window.JSON && window.JSON.parse ?\n\t\t\t\twindow.JSON.parse( data ) :\n\t\t\t\t(new Function(\"return \" + data))();\n\n\t\t} else {\n\t\t\tjQuery.error( \"Invalid JSON: \" + data );\n\t\t}\n\t},\n\n\tnoop: function() {},\n\n\t// Evalulates a script in a global context\n\tglobalEval: function( data ) {\n\t\tif ( data && rnotwhite.test(data) ) {\n\t\t\t// Inspired by code by Andrea Giammarchi\n\t\t\t// http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html\n\t\t\tvar head = document.getElementsByTagName(\"head\")[0] || document.documentElement,\n\t\t\t\tscript = document.createElement(\"script\");\n\n\t\t\tscript.type = \"text/javascript\";\n\n\t\t\tif ( jQuery.support.scriptEval ) {\n\t\t\t\tscript.appendChild( document.createTextNode( data ) );\n\t\t\t} else {\n\t\t\t\tscript.text = data;\n\t\t\t}\n\n\t\t\t// Use insertBefore instead of appendChild to circumvent an IE6 bug.\n\t\t\t// This arises when a base node is used (#2709).\n\t\t\thead.insertBefore( script, head.firstChild );\n\t\t\thead.removeChild( script );\n\t\t}\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();\n\t},\n\n\t// args is for internal usage only\n\teach: function( object, callback, args ) {\n\t\tvar name, i = 0,\n\t\t\tlength = object.length,\n\t\t\tisObj = length === undefined || jQuery.isFunction(object);\n\n\t\tif ( args ) {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in object ) {\n\t\t\t\t\tif ( callback.apply( object[ name ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( ; i < length; ) {\n\t\t\t\t\tif ( callback.apply( object[ i++ ], args ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// A special, fast, case for the most common use of each\n\t\t} else {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in object ) {\n\t\t\t\t\tif ( callback.call( object[ name ], name, object[ name ] ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( var value = object[0];\n\t\t\t\t\ti < length && callback.call( value, i, value ) !== false; value = object[++i] ) {}\n\t\t\t}\n\t\t}\n\n\t\treturn object;\n\t},\n\n\ttrim: function( text ) {\n\t\treturn (text || \"\").replace( rtrim, \"\" );\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( array, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( array != null ) {\n\t\t\t// The window, strings (and functions) also have 'length'\n\t\t\t// The extra typeof function check is to prevent crashes\n\t\t\t// in Safari 2 (See: #3039)\n\t\t\tif ( array.length == null || typeof array === \"string\" || jQuery.isFunction(array) || (typeof array !== \"function\" && array.setInterval) ) {\n\t\t\t\tpush.call( ret, array );\n\t\t\t} else {\n\t\t\t\tjQuery.merge( ret, array );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, array ) {\n\t\tif ( array.indexOf ) {\n\t\t\treturn array.indexOf( elem );\n\t\t}\n\n\t\tfor ( var i = 0, length = array.length; i < length; i++ ) {\n\t\t\tif ( array[ i ] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\t},\n\n\tmerge: function( first, second ) {\n\t\tvar i = first.length, j = 0;\n\n\t\tif ( typeof second.length === \"number\" ) {\n\t\t\tfor ( var l = second.length; j < l; j++ ) {\n\t\t\t\tfirst[ i++ ] = second[ j ];\n\t\t\t}\n\t\t\n\t\t} else {\n\t\t\twhile ( second[j] !== undefined ) {\n\t\t\t\tfirst[ i++ ] = second[ j++ ];\n\t\t\t}\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, inv ) {\n\t\tvar ret = [];\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( var i = 0, length = elems.length; i < length; i++ ) {\n\t\t\tif ( !inv !== !callback( elems[ i ], i ) ) {\n\t\t\t\tret.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar ret = [], value;\n\n\t\t// Go through the array, translating each of the items to their\n\t\t// new value (or values).\n\t\tfor ( var i = 0, length = elems.length; i < length; i++ ) {\n\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\tif ( value != null ) {\n\t\t\t\tret[ ret.length ] = value;\n\t\t\t}\n\t\t}\n\n\t\treturn ret.concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\tproxy: function( fn, proxy, thisObject ) {\n\t\tif ( arguments.length === 2 ) {\n\t\t\tif ( typeof proxy === \"string\" ) {\n\t\t\t\tthisObject = fn;\n\t\t\t\tfn = thisObject[ proxy ];\n\t\t\t\tproxy = undefined;\n\n\t\t\t} else if ( proxy && !jQuery.isFunction( proxy ) ) {\n\t\t\t\tthisObject = proxy;\n\t\t\t\tproxy = undefined;\n\t\t\t}\n\t\t}\n\n\t\tif ( !proxy && fn ) {\n\t\t\tproxy = function() {\n\t\t\t\treturn fn.apply( thisObject || this, arguments );\n\t\t\t};\n\t\t}\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tif ( fn ) {\n\t\t\tproxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;\n\t\t}\n\n\t\t// So proxy can be declared as an argument\n\t\treturn proxy;\n\t},\n\n\t// Use of jQuery.browser is frowned upon.\n\t// More details: http://docs.jquery.com/Utilities/jQuery.browser\n\tuaMatch: function( ua ) {\n\t\tua = ua.toLowerCase();\n\n\t\tvar match = /(webkit)[ \\/]([\\w.]+)/.exec( ua ) ||\n\t\t\t/(opera)(?:.*version)?[ \\/]([\\w.]+)/.exec( ua ) ||\n\t\t\t/(msie) ([\\w.]+)/.exec( ua ) ||\n\t\t\t!/compatible/.test( ua ) && /(mozilla)(?:.*? rv:([\\w.]+))?/.exec( ua ) ||\n\t\t  \t[];\n\n\t\treturn { browser: match[1] || \"\", version: match[2] || \"0\" };\n\t},\n\n\tbrowser: {}\n});\n\nbrowserMatch = jQuery.uaMatch( userAgent );\nif ( browserMatch.browser ) {\n\tjQuery.browser[ browserMatch.browser ] = true;\n\tjQuery.browser.version = browserMatch.version;\n}\n\n// Deprecated, use jQuery.browser.webkit instead\nif ( jQuery.browser.webkit ) {\n\tjQuery.browser.safari = true;\n}\n\nif ( indexOf ) {\n\tjQuery.inArray = function( elem, array ) {\n\t\treturn indexOf.call( array, elem );\n\t};\n}\n\n// All jQuery objects should point back to these\nrootjQuery = jQuery(document);\n\n// Cleanup functions for the document ready method\nif ( document.addEventListener ) {\n\tDOMContentLoaded = function() {\n\t\tdocument.removeEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );\n\t\tjQuery.ready();\n\t};\n\n} else if ( document.attachEvent ) {\n\tDOMContentLoaded = function() {\n\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\tdocument.detachEvent( \"onreadystatechange\", DOMContentLoaded );\n\t\t\tjQuery.ready();\n\t\t}\n\t};\n}\n\n// The DOM ready check for Internet Explorer\nfunction doScrollCheck() {\n\tif ( jQuery.isReady ) {\n\t\treturn;\n\t}\n\n\ttry {\n\t\t// If IE is used, use the trick by Diego Perini\n\t\t// http://javascript.nwbox.com/IEContentLoaded/\n\t\tdocument.documentElement.doScroll(\"left\");\n\t} catch( error ) {\n\t\tsetTimeout( doScrollCheck, 1 );\n\t\treturn;\n\t}\n\n\t// and execute any waiting functions\n\tjQuery.ready();\n}\n\nfunction evalScript( i, elem ) {\n\tif ( elem.src ) {\n\t\tjQuery.ajax({\n\t\t\turl: elem.src,\n\t\t\tasync: false,\n\t\t\tdataType: \"script\"\n\t\t});\n\t} else {\n\t\tjQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || \"\" );\n\t}\n\n\tif ( elem.parentNode ) {\n\t\telem.parentNode.removeChild( elem );\n\t}\n}\n\n// Mutifunctional method to get and set values to a collection\n// The value/s can be optionally by executed if its a function\nfunction access( elems, key, value, exec, fn, pass ) {\n\tvar length = elems.length;\n\t\n\t// Setting many attributes\n\tif ( typeof key === \"object\" ) {\n\t\tfor ( var k in key ) {\n\t\t\taccess( elems, k, key[k], exec, fn, value );\n\t\t}\n\t\treturn elems;\n\t}\n\t\n\t// Setting one attribute\n\tif ( value !== undefined ) {\n\t\t// Optionally, function values get executed if exec is true\n\t\texec = !pass && exec && jQuery.isFunction(value);\n\t\t\n\t\tfor ( var i = 0; i < length; i++ ) {\n\t\t\tfn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );\n\t\t}\n\t\t\n\t\treturn elems;\n\t}\n\t\n\t// Getting an attribute\n\treturn length ? fn( elems[0], key ) : undefined;\n}\n\nfunction now() {\n\treturn (new Date).getTime();\n}\n(function() {\n\n\tjQuery.support = {};\n\n\tvar root = document.documentElement,\n\t\tscript = document.createElement(\"script\"),\n\t\tdiv = document.createElement(\"div\"),\n\t\tid = \"script\" + now();\n\n\tdiv.style.display = \"none\";\n\tdiv.innerHTML = \"   <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>\";\n\n\tvar all = div.getElementsByTagName(\"*\"),\n\t\ta = div.getElementsByTagName(\"a\")[0];\n\n\t// Can't get basic test support\n\tif ( !all || !all.length || !a ) {\n\t\treturn;\n\t}\n\n\tjQuery.support = {\n\t\t// IE strips leading whitespace when .innerHTML is used\n\t\tleadingWhitespace: div.firstChild.nodeType === 3,\n\n\t\t// Make sure that tbody elements aren't automatically inserted\n\t\t// IE will insert them into empty tables\n\t\ttbody: !div.getElementsByTagName(\"tbody\").length,\n\n\t\t// Make sure that link elements get serialized correctly by innerHTML\n\t\t// This requires a wrapper element in IE\n\t\thtmlSerialize: !!div.getElementsByTagName(\"link\").length,\n\n\t\t// Get the style information from getAttribute\n\t\t// (IE uses .cssText insted)\n\t\tstyle: /red/.test( a.getAttribute(\"style\") ),\n\n\t\t// Make sure that URLs aren't manipulated\n\t\t// (IE normalizes it by default)\n\t\threfNormalized: a.getAttribute(\"href\") === \"/a\",\n\n\t\t// Make sure that element opacity exists\n\t\t// (IE uses filter instead)\n\t\t// Use a regex to work around a WebKit issue. See #5145\n\t\topacity: /^0.55$/.test( a.style.opacity ),\n\n\t\t// Verify style float existence\n\t\t// (IE uses styleFloat instead of cssFloat)\n\t\tcssFloat: !!a.style.cssFloat,\n\n\t\t// Make sure that if no value is specified for a checkbox\n\t\t// that it defaults to \"on\".\n\t\t// (WebKit defaults to \"\" instead)\n\t\tcheckOn: div.getElementsByTagName(\"input\")[0].value === \"on\",\n\n\t\t// Make sure that a selected-by-default option has a working selected property.\n\t\t// (WebKit defaults to false instead of true, IE too, if it's in an optgroup)\n\t\toptSelected: document.createElement(\"select\").appendChild( document.createElement(\"option\") ).selected,\n\n\t\tparentNode: div.removeChild( div.appendChild( document.createElement(\"div\") ) ).parentNode === null,\n\n\t\t// Will be defined later\n\t\tdeleteExpando: true,\n\t\tcheckClone: false,\n\t\tscriptEval: false,\n\t\tnoCloneEvent: true,\n\t\tboxModel: null\n\t};\n\n\tscript.type = \"text/javascript\";\n\ttry {\n\t\tscript.appendChild( document.createTextNode( \"window.\" + id + \"=1;\" ) );\n\t} catch(e) {}\n\n\troot.insertBefore( script, root.firstChild );\n\n\t// Make sure that the execution of code works by injecting a script\n\t// tag with appendChild/createTextNode\n\t// (IE doesn't support this, fails, and uses .text instead)\n\tif ( window[ id ] ) {\n\t\tjQuery.support.scriptEval = true;\n\t\tdelete window[ id ];\n\t}\n\n\t// Test to see if it's possible to delete an expando from an element\n\t// Fails in Internet Explorer\n\ttry {\n\t\tdelete script.test;\n\t\n\t} catch(e) {\n\t\tjQuery.support.deleteExpando = false;\n\t}\n\n\troot.removeChild( script );\n\n\tif ( div.attachEvent && div.fireEvent ) {\n\t\tdiv.attachEvent(\"onclick\", function click() {\n\t\t\t// Cloning a node shouldn't copy over any\n\t\t\t// bound event handlers (IE does this)\n\t\t\tjQuery.support.noCloneEvent = false;\n\t\t\tdiv.detachEvent(\"onclick\", click);\n\t\t});\n\t\tdiv.cloneNode(true).fireEvent(\"onclick\");\n\t}\n\n\tdiv = document.createElement(\"div\");\n\tdiv.innerHTML = \"<input type='radio' name='radiotest' checked='checked'/>\";\n\n\tvar fragment = document.createDocumentFragment();\n\tfragment.appendChild( div.firstChild );\n\n\t// WebKit doesn't clone checked state correctly in fragments\n\tjQuery.support.checkClone = fragment.cloneNode(true).cloneNode(true).lastChild.checked;\n\n\t// Figure out if the W3C box model works as expected\n\t// document.body must exist before we can do this\n\tjQuery(function() {\n\t\tvar div = document.createElement(\"div\");\n\t\tdiv.style.width = div.style.paddingLeft = \"1px\";\n\n\t\tdocument.body.appendChild( div );\n\t\tjQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2;\n\t\tdocument.body.removeChild( div ).style.display = 'none';\n\n\t\tdiv = null;\n\t});\n\n\t// Technique from Juriy Zaytsev\n\t// http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/\n\tvar eventSupported = function( eventName ) { \n\t\tvar el = document.createElement(\"div\"); \n\t\teventName = \"on\" + eventName; \n\n\t\tvar isSupported = (eventName in el); \n\t\tif ( !isSupported ) { \n\t\t\tel.setAttribute(eventName, \"return;\"); \n\t\t\tisSupported = typeof el[eventName] === \"function\"; \n\t\t} \n\t\tel = null; \n\n\t\treturn isSupported; \n\t};\n\t\n\tjQuery.support.submitBubbles = eventSupported(\"submit\");\n\tjQuery.support.changeBubbles = eventSupported(\"change\");\n\n\t// release memory in IE\n\troot = script = div = all = a = null;\n})();\n\njQuery.props = {\n\t\"for\": \"htmlFor\",\n\t\"class\": \"className\",\n\treadonly: \"readOnly\",\n\tmaxlength: \"maxLength\",\n\tcellspacing: \"cellSpacing\",\n\trowspan: \"rowSpan\",\n\tcolspan: \"colSpan\",\n\ttabindex: \"tabIndex\",\n\tusemap: \"useMap\",\n\tframeborder: \"frameBorder\"\n};\nvar expando = \"jQuery\" + now(), uuid = 0, windowData = {};\n\njQuery.extend({\n\tcache: {},\n\t\n\texpando:expando,\n\n\t// The following elements throw uncatchable exceptions if you\n\t// attempt to add expando properties to them.\n\tnoData: {\n\t\t\"embed\": true,\n\t\t\"object\": true,\n\t\t\"applet\": true\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\tif ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {\n\t\t\treturn;\n\t\t}\n\n\t\telem = elem == window ?\n\t\t\twindowData :\n\t\t\telem;\n\n\t\tvar id = elem[ expando ], cache = jQuery.cache, thisCache;\n\n\t\tif ( !id && typeof name === \"string\" && data === undefined ) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Compute a unique ID for the element\n\t\tif ( !id ) { \n\t\t\tid = ++uuid;\n\t\t}\n\n\t\t// Avoid generating a new cache unless none exists and we\n\t\t// want to manipulate it.\n\t\tif ( typeof name === \"object\" ) {\n\t\t\telem[ expando ] = id;\n\t\t\tthisCache = cache[ id ] = jQuery.extend(true, {}, name);\n\n\t\t} else if ( !cache[ id ] ) {\n\t\t\telem[ expando ] = id;\n\t\t\tcache[ id ] = {};\n\t\t}\n\n\t\tthisCache = cache[ id ];\n\n\t\t// Prevent overriding the named cache with undefined values\n\t\tif ( data !== undefined ) {\n\t\t\tthisCache[ name ] = data;\n\t\t}\n\n\t\treturn typeof name === \"string\" ? thisCache[ name ] : thisCache;\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tif ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {\n\t\t\treturn;\n\t\t}\n\n\t\telem = elem == window ?\n\t\t\twindowData :\n\t\t\telem;\n\n\t\tvar id = elem[ expando ], cache = jQuery.cache, thisCache = cache[ id ];\n\n\t\t// If we want to remove a specific section of the element's data\n\t\tif ( name ) {\n\t\t\tif ( thisCache ) {\n\t\t\t\t// Remove the section of cache data\n\t\t\t\tdelete thisCache[ name ];\n\n\t\t\t\t// If we've removed all the data, remove the element's cache\n\t\t\t\tif ( jQuery.isEmptyObject(thisCache) ) {\n\t\t\t\t\tjQuery.removeData( elem );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Otherwise, we want to remove all of the element's data\n\t\t} else {\n\t\t\tif ( jQuery.support.deleteExpando ) {\n\t\t\t\tdelete elem[ jQuery.expando ];\n\n\t\t\t} else if ( elem.removeAttribute ) {\n\t\t\t\telem.removeAttribute( jQuery.expando );\n\t\t\t}\n\n\t\t\t// Completely remove the data cache\n\t\t\tdelete cache[ id ];\n\t\t}\n\t}\n});\n\njQuery.fn.extend({\n\tdata: function( key, value ) {\n\t\tif ( typeof key === \"undefined\" && this.length ) {\n\t\t\treturn jQuery.data( this[0] );\n\n\t\t} else if ( typeof key === \"object\" ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery.data( this, key );\n\t\t\t});\n\t\t}\n\n\t\tvar parts = key.split(\".\");\n\t\tparts[1] = parts[1] ? \".\" + parts[1] : \"\";\n\n\t\tif ( value === undefined ) {\n\t\t\tvar data = this.triggerHandler(\"getData\" + parts[1] + \"!\", [parts[0]]);\n\n\t\t\tif ( data === undefined && this.length ) {\n\t\t\t\tdata = jQuery.data( this[0], key );\n\t\t\t}\n\t\t\treturn data === undefined && parts[1] ?\n\t\t\t\tthis.data( parts[0] ) :\n\t\t\t\tdata;\n\t\t} else {\n\t\t\treturn this.trigger(\"setData\" + parts[1] + \"!\", [parts[0], value]).each(function() {\n\t\t\t\tjQuery.data( this, key, value );\n\t\t\t});\n\t\t}\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeData( this, key );\n\t\t});\n\t}\n});\njQuery.extend({\n\tqueue: function( elem, type, data ) {\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\ttype = (type || \"fx\") + \"queue\";\n\t\tvar q = jQuery.data( elem, type );\n\n\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\tif ( !data ) {\n\t\t\treturn q || [];\n\t\t}\n\n\t\tif ( !q || jQuery.isArray(data) ) {\n\t\t\tq = jQuery.data( elem, type, jQuery.makeArray(data) );\n\n\t\t} else {\n\t\t\tq.push( data );\n\t\t}\n\n\t\treturn q;\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ), fn = queue.shift();\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift(\"inprogress\");\n\t\t\t}\n\n\t\t\tfn.call(elem, function() {\n\t\t\t\tjQuery.dequeue(elem, type);\n\t\t\t});\n\t\t}\n\t}\n});\n\njQuery.fn.extend({\n\tqueue: function( type, data ) {\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t}\n\n\t\tif ( data === undefined ) {\n\t\t\treturn jQuery.queue( this[0], type );\n\t\t}\n\t\treturn this.each(function( i, elem ) {\n\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\tif ( type === \"fx\" && queue[0] !== \"inprogress\" ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t});\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t});\n\t},\n\n\t// Based off of the plugin by Clint Helfers, with permission.\n\t// http://blindsignals.com/index.php/2009/07/jquery-delay/\n\tdelay: function( time, type ) {\n\t\ttime = jQuery.fx ? jQuery.fx.speeds[time] || time : time;\n\t\ttype = type || \"fx\";\n\n\t\treturn this.queue( type, function() {\n\t\t\tvar elem = this;\n\t\t\tsetTimeout(function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t}, time );\n\t\t});\n\t},\n\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t}\n});\nvar rclass = /[\\n\\t]/g,\n\trspace = /\\s+/,\n\trreturn = /\\r/g,\n\trspecialurl = /href|src|style/,\n\trtype = /(button|input)/i,\n\trfocusable = /(button|input|object|select|textarea)/i,\n\trclickable = /^(a|area)$/i,\n\trradiocheck = /radio|checkbox/;\n\njQuery.fn.extend({\n\tattr: function( name, value ) {\n\t\treturn access( this, name, value, true, jQuery.attr );\n\t},\n\n\tremoveAttr: function( name, fn ) {\n\t\treturn this.each(function(){\n\t\t\tjQuery.attr( this, name, \"\" );\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.removeAttribute( name );\n\t\t\t}\n\t\t});\n\t},\n\n\taddClass: function( value ) {\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\tself.addClass( value.call(this, i, self.attr(\"class\")) );\n\t\t\t});\n\t\t}\n\n\t\tif ( value && typeof value === \"string\" ) {\n\t\t\tvar classNames = (value || \"\").split( rspace );\n\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tvar elem = this[i];\n\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\tif ( !elem.className ) {\n\t\t\t\t\t\telem.className = value;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar className = \" \" + elem.className + \" \", setClass = elem.className;\n\t\t\t\t\t\tfor ( var c = 0, cl = classNames.length; c < cl; c++ ) {\n\t\t\t\t\t\t\tif ( className.indexOf( \" \" + classNames[c] + \" \" ) < 0 ) {\n\t\t\t\t\t\t\t\tsetClass += \" \" + classNames[c];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telem.className = jQuery.trim( setClass );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\tself.removeClass( value.call(this, i, self.attr(\"class\")) );\n\t\t\t});\n\t\t}\n\n\t\tif ( (value && typeof value === \"string\") || value === undefined ) {\n\t\t\tvar classNames = (value || \"\").split(rspace);\n\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tvar elem = this[i];\n\n\t\t\t\tif ( elem.nodeType === 1 && elem.className ) {\n\t\t\t\t\tif ( value ) {\n\t\t\t\t\t\tvar className = (\" \" + elem.className + \" \").replace(rclass, \" \");\n\t\t\t\t\t\tfor ( var c = 0, cl = classNames.length; c < cl; c++ ) {\n\t\t\t\t\t\t\tclassName = className.replace(\" \" + classNames[c] + \" \", \" \");\n\t\t\t\t\t\t}\n\t\t\t\t\t\telem.className = jQuery.trim( className );\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.className = \"\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value, isBool = typeof stateVal === \"boolean\";\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\tself.toggleClass( value.call(this, i, self.attr(\"class\"), stateVal), stateVal );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tif ( type === \"string\" ) {\n\t\t\t\t// toggle individual class names\n\t\t\t\tvar className, i = 0, self = jQuery(this),\n\t\t\t\t\tstate = stateVal,\n\t\t\t\t\tclassNames = value.split( rspace );\n\n\t\t\t\twhile ( (className = classNames[ i++ ]) ) {\n\t\t\t\t\t// check each className given, space seperated list\n\t\t\t\t\tstate = isBool ? state : !self.hasClass( className );\n\t\t\t\t\tself[ state ? \"addClass\" : \"removeClass\" ]( className );\n\t\t\t\t}\n\n\t\t\t} else if ( type === \"undefined\" || type === \"boolean\" ) {\n\t\t\t\tif ( this.className ) {\n\t\t\t\t\t// store className if set\n\t\t\t\t\tjQuery.data( this, \"__className__\", this.className );\n\t\t\t\t}\n\n\t\t\t\t// toggle whole className\n\t\t\t\tthis.className = this.className || value === false ? \"\" : jQuery.data( this, \"__className__\" ) || \"\";\n\t\t\t}\n\t\t});\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className = \" \" + selector + \" \";\n\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\tif ( (\" \" + this[i].className + \" \").replace(rclass, \" \").indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\tval: function( value ) {\n\t\tif ( value === undefined ) {\n\t\t\tvar elem = this[0];\n\n\t\t\tif ( elem ) {\n\t\t\t\tif ( jQuery.nodeName( elem, \"option\" ) ) {\n\t\t\t\t\treturn (elem.attributes.value || {}).specified ? elem.value : elem.text;\n\t\t\t\t}\n\n\t\t\t\t// We need to handle select boxes special\n\t\t\t\tif ( jQuery.nodeName( elem, \"select\" ) ) {\n\t\t\t\t\tvar index = elem.selectedIndex,\n\t\t\t\t\t\tvalues = [],\n\t\t\t\t\t\toptions = elem.options,\n\t\t\t\t\t\tone = elem.type === \"select-one\";\n\n\t\t\t\t\t// Nothing was selected\n\t\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Loop through all the selected options\n\t\t\t\t\tfor ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {\n\t\t\t\t\t\tvar option = options[ i ];\n\n\t\t\t\t\t\tif ( option.selected ) {\n\t\t\t\t\t\t\t// Get the specifc value for the option\n\t\t\t\t\t\t\tvalue = jQuery(option).val();\n\n\t\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn values;\n\t\t\t\t}\n\n\t\t\t\t// Handle the case where in Webkit \"\" is returned instead of \"on\" if a value isn't specified\n\t\t\t\tif ( rradiocheck.test( elem.type ) && !jQuery.support.checkOn ) {\n\t\t\t\t\treturn elem.getAttribute(\"value\") === null ? \"on\" : elem.value;\n\t\t\t\t}\n\t\t\t\t\n\n\t\t\t\t// Everything else, we just grab the value\n\t\t\t\treturn (elem.value || \"\").replace(rreturn, \"\");\n\n\t\t\t}\n\n\t\t\treturn undefined;\n\t\t}\n\n\t\tvar isFunction = jQuery.isFunction(value);\n\n\t\treturn this.each(function(i) {\n\t\t\tvar self = jQuery(this), val = value;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( isFunction ) {\n\t\t\t\tval = value.call(this, i, self.val());\n\t\t\t}\n\n\t\t\t// Typecast each time if the value is a Function and the appended\n\t\t\t// value is therefore different each time.\n\t\t\tif ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\t\t\t}\n\n\t\t\tif ( jQuery.isArray(val) && rradiocheck.test( this.type ) ) {\n\t\t\t\tthis.checked = jQuery.inArray( self.val(), val ) >= 0;\n\n\t\t\t} else if ( jQuery.nodeName( this, \"select\" ) ) {\n\t\t\t\tvar values = jQuery.makeArray(val);\n\n\t\t\t\tjQuery( \"option\", this ).each(function() {\n\t\t\t\t\tthis.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;\n\t\t\t\t});\n\n\t\t\t\tif ( !values.length ) {\n\t\t\t\t\tthis.selectedIndex = -1;\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t});\n\t}\n});\n\njQuery.extend({\n\tattrFn: {\n\t\tval: true,\n\t\tcss: true,\n\t\thtml: true,\n\t\ttext: true,\n\t\tdata: true,\n\t\twidth: true,\n\t\theight: true,\n\t\toffset: true\n\t},\n\t\t\n\tattr: function( elem, name, value, pass ) {\n\t\t// don't set attributes on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif ( pass && name in jQuery.attrFn ) {\n\t\t\treturn jQuery(elem)[name](value);\n\t\t}\n\n\t\tvar notxml = elem.nodeType !== 1 || !jQuery.isXMLDoc( elem ),\n\t\t\t// Whether we are setting (or getting)\n\t\t\tset = value !== undefined;\n\n\t\t// Try to normalize/fix the name\n\t\tname = notxml && jQuery.props[ name ] || name;\n\n\t\t// Only do all the following if this is a node (faster for style)\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\t// These attributes require special treatment\n\t\t\tvar special = rspecialurl.test( name );\n\n\t\t\t// Safari mis-reports the default selected property of an option\n\t\t\t// Accessing the parent's selectedIndex property fixes it\n\t\t\tif ( name === \"selected\" && !jQuery.support.optSelected ) {\n\t\t\t\tvar parent = elem.parentNode;\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.selectedIndex;\n\t\n\t\t\t\t\t// Make sure that it also works with optgroups, see #5701\n\t\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// If applicable, access the attribute via the DOM 0 way\n\t\t\tif ( name in elem && notxml && !special ) {\n\t\t\t\tif ( set ) {\n\t\t\t\t\t// We can't allow the type property to be changed (since it causes problems in IE)\n\t\t\t\t\tif ( name === \"type\" && rtype.test( elem.nodeName ) && elem.parentNode ) {\n\t\t\t\t\t\tjQuery.error( \"type property can't be changed\" );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ name ] = value;\n\t\t\t\t}\n\n\t\t\t\t// browsers index elements by id/name on forms, give priority to attributes.\n\t\t\t\tif ( jQuery.nodeName( elem, \"form\" ) && elem.getAttributeNode(name) ) {\n\t\t\t\t\treturn elem.getAttributeNode( name ).nodeValue;\n\t\t\t\t}\n\n\t\t\t\t// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set\n\t\t\t\t// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\tif ( name === \"tabIndex\" ) {\n\t\t\t\t\tvar attributeNode = elem.getAttributeNode( \"tabIndex\" );\n\n\t\t\t\t\treturn attributeNode && attributeNode.specified ?\n\t\t\t\t\t\tattributeNode.value :\n\t\t\t\t\t\trfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?\n\t\t\t\t\t\t\t0 :\n\t\t\t\t\t\t\tundefined;\n\t\t\t\t}\n\n\t\t\t\treturn elem[ name ];\n\t\t\t}\n\n\t\t\tif ( !jQuery.support.style && notxml && name === \"style\" ) {\n\t\t\t\tif ( set ) {\n\t\t\t\t\telem.style.cssText = \"\" + value;\n\t\t\t\t}\n\n\t\t\t\treturn elem.style.cssText;\n\t\t\t}\n\n\t\t\tif ( set ) {\n\t\t\t\t// convert the value to a string (all browsers do this but IE) see #1070\n\t\t\t\telem.setAttribute( name, \"\" + value );\n\t\t\t}\n\n\t\t\tvar attr = !jQuery.support.hrefNormalized && notxml && special ?\n\t\t\t\t\t// Some attributes require a special call on IE\n\t\t\t\t\telem.getAttribute( name, 2 ) :\n\t\t\t\t\telem.getAttribute( name );\n\n\t\t\t// Non-existent attributes return null, we normalize to undefined\n\t\t\treturn attr === null ? undefined : attr;\n\t\t}\n\n\t\t// elem is actually elem.style ... set the style\n\t\t// Using attr for specific style information is now deprecated. Use style instead.\n\t\treturn jQuery.style( elem, name, value );\n\t}\n});\nvar rnamespaces = /\\.(.*)$/,\n\tfcleanup = function( nm ) {\n\t\treturn nm.replace(/[^\\w\\s\\.\\|`]/g, function( ch ) {\n\t\t\treturn \"\\\\\" + ch;\n\t\t});\n\t};\n\n/*\n * A number of helper functions used for managing events.\n * Many of the ideas behind this code originated from\n * Dean Edwards' addEvent library.\n */\njQuery.event = {\n\n\t// Bind an event to an element\n\t// Original by Dean Edwards\n\tadd: function( elem, types, handler, data ) {\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// For whatever reason, IE has trouble passing the window object\n\t\t// around, causing it to be cloned in the process\n\t\tif ( elem.setInterval && ( elem !== window && !elem.frameElement ) ) {\n\t\t\telem = window;\n\t\t}\n\n\t\tvar handleObjIn, handleObj;\n\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t}\n\n\t\t// Make sure that the function being executed has a unique ID\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure\n\t\tvar elemData = jQuery.data( elem );\n\n\t\t// If no elemData is found then we must be trying to bind to one of the\n\t\t// banned noData elements\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar events = elemData.events = elemData.events || {},\n\t\t\teventHandle = elemData.handle, eventHandle;\n\n\t\tif ( !eventHandle ) {\n\t\t\telemData.handle = eventHandle = function() {\n\t\t\t\t// Handle the second event of a trigger and when\n\t\t\t\t// an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && !jQuery.event.triggered ?\n\t\t\t\t\tjQuery.event.handle.apply( eventHandle.elem, arguments ) :\n\t\t\t\t\tundefined;\n\t\t\t};\n\t\t}\n\n\t\t// Add elem as a property of the handle function\n\t\t// This is to prevent a memory leak with non-native events in IE.\n\t\teventHandle.elem = elem;\n\n\t\t// Handle multiple events separated by a space\n\t\t// jQuery(...).bind(\"mouseover mouseout\", fn);\n\t\ttypes = types.split(\" \");\n\n\t\tvar type, i = 0, namespaces;\n\n\t\twhile ( (type = types[ i++ ]) ) {\n\t\t\thandleObj = handleObjIn ?\n\t\t\t\tjQuery.extend({}, handleObjIn) :\n\t\t\t\t{ handler: handler, data: data };\n\n\t\t\t// Namespaced event handlers\n\t\t\tif ( type.indexOf(\".\") > -1 ) {\n\t\t\t\tnamespaces = type.split(\".\");\n\t\t\t\ttype = namespaces.shift();\n\t\t\t\thandleObj.namespace = namespaces.slice(0).sort().join(\".\");\n\n\t\t\t} else {\n\t\t\t\tnamespaces = [];\n\t\t\t\thandleObj.namespace = \"\";\n\t\t\t}\n\n\t\t\thandleObj.type = type;\n\t\t\thandleObj.guid = handler.guid;\n\n\t\t\t// Get the current list of functions bound to this event\n\t\t\tvar handlers = events[ type ],\n\t\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// Init the event handler queue\n\t\t\tif ( !handlers ) {\n\t\t\t\thandlers = events[ type ] = [];\n\n\t\t\t\t// Check for a special event handler\n\t\t\t\t// Only use addEventListener/attachEvent if the special\n\t\t\t\t// events handler returns false\n\t\t\t\tif ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\t\t\t\t\t// Bind the global event handler to the element\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle, false );\n\n\t\t\t\t\t} else if ( elem.attachEvent ) {\n\t\t\t\t\t\telem.attachEvent( \"on\" + type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif ( special.add ) { \n\t\t\t\tspecial.add.call( elem, handleObj ); \n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add the function to the element's handler list\n\t\t\thandlers.push( handleObj );\n\n\t\t\t// Keep track of which events have been used, for global triggering\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t\t// Nullify elem to prevent memory leaks in IE\n\t\telem = null;\n\t},\n\n\tglobal: {},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, pos ) {\n\t\t// don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar ret, type, fn, i = 0, all, namespaces, namespace, special, eventType, handleObj, origType,\n\t\t\telemData = jQuery.data( elem ),\n\t\t\tevents = elemData && elemData.events;\n\n\t\tif ( !elemData || !events ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// types is actually an event object here\n\t\tif ( types && types.type ) {\n\t\t\thandler = types.handler;\n\t\t\ttypes = types.type;\n\t\t}\n\n\t\t// Unbind all events for the element\n\t\tif ( !types || typeof types === \"string\" && types.charAt(0) === \".\" ) {\n\t\t\ttypes = types || \"\";\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tjQuery.event.remove( elem, type + types );\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\t// jQuery(...).unbind(\"mouseover mouseout\", fn);\n\t\ttypes = types.split(\" \");\n\n\t\twhile ( (type = types[ i++ ]) ) {\n\t\t\torigType = type;\n\t\t\thandleObj = null;\n\t\t\tall = type.indexOf(\".\") < 0;\n\t\t\tnamespaces = [];\n\n\t\t\tif ( !all ) {\n\t\t\t\t// Namespaced event handlers\n\t\t\t\tnamespaces = type.split(\".\");\n\t\t\t\ttype = namespaces.shift();\n\n\t\t\t\tnamespace = new RegExp(\"(^|\\\\.)\" + \n\t\t\t\t\tjQuery.map( namespaces.slice(0).sort(), fcleanup ).join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\")\n\t\t\t}\n\n\t\t\teventType = events[ type ];\n\n\t\t\tif ( !eventType ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif ( !handler ) {\n\t\t\t\tfor ( var j = 0; j < eventType.length; j++ ) {\n\t\t\t\t\thandleObj = eventType[ j ];\n\n\t\t\t\t\tif ( all || namespace.test( handleObj.namespace ) ) {\n\t\t\t\t\t\tjQuery.event.remove( elem, origType, handleObj.handler, j );\n\t\t\t\t\t\teventType.splice( j--, 1 );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\tfor ( var j = pos || 0; j < eventType.length; j++ ) {\n\t\t\t\thandleObj = eventType[ j ];\n\n\t\t\t\tif ( handler.guid === handleObj.guid ) {\n\t\t\t\t\t// remove the given handler for the given type\n\t\t\t\t\tif ( all || namespace.test( handleObj.namespace ) ) {\n\t\t\t\t\t\tif ( pos == null ) {\n\t\t\t\t\t\t\teventType.splice( j--, 1 );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( pos != null ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// remove generic event handler if no more handlers exist\n\t\t\tif ( eventType.length === 0 || pos != null && eventType.length === 1 ) {\n\t\t\t\tif ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {\n\t\t\t\t\tremoveEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tret = null;\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tvar handle = elemData.handle;\n\t\t\tif ( handle ) {\n\t\t\t\thandle.elem = null;\n\t\t\t}\n\n\t\t\tdelete elemData.events;\n\t\t\tdelete elemData.handle;\n\n\t\t\tif ( jQuery.isEmptyObject( elemData ) ) {\n\t\t\t\tjQuery.removeData( elem );\n\t\t\t}\n\t\t}\n\t},\n\n\t// bubbling is internal\n\ttrigger: function( event, data, elem /*, bubbling */ ) {\n\t\t// Event object or event type\n\t\tvar type = event.type || event,\n\t\t\tbubbling = arguments[3];\n\n\t\tif ( !bubbling ) {\n\t\t\tevent = typeof event === \"object\" ?\n\t\t\t\t// jQuery.Event object\n\t\t\t\tevent[expando] ? event :\n\t\t\t\t// Object literal\n\t\t\t\tjQuery.extend( jQuery.Event(type), event ) :\n\t\t\t\t// Just the event type (string)\n\t\t\t\tjQuery.Event(type);\n\n\t\t\tif ( type.indexOf(\"!\") >= 0 ) {\n\t\t\t\tevent.type = type = type.slice(0, -1);\n\t\t\t\tevent.exclusive = true;\n\t\t\t}\n\n\t\t\t// Handle a global trigger\n\t\t\tif ( !elem ) {\n\t\t\t\t// Don't bubble custom events when global (to avoid too much overhead)\n\t\t\t\tevent.stopPropagation();\n\n\t\t\t\t// Only trigger if we've ever bound an event for it\n\t\t\t\tif ( jQuery.event.global[ type ] ) {\n\t\t\t\t\tjQuery.each( jQuery.cache, function() {\n\t\t\t\t\t\tif ( this.events && this.events[type] ) {\n\t\t\t\t\t\t\tjQuery.event.trigger( event, data, this.handle.elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Handle triggering a single element\n\n\t\t\t// don't do events on text and comment nodes\n\t\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\t// Clean up in case it is reused\n\t\t\tevent.result = undefined;\n\t\t\tevent.target = elem;\n\n\t\t\t// Clone the incoming data, if any\n\t\t\tdata = jQuery.makeArray( data );\n\t\t\tdata.unshift( event );\n\t\t}\n\n\t\tevent.currentTarget = elem;\n\n\t\t// Trigger the event, it is assumed that \"handle\" is a function\n\t\tvar handle = jQuery.data( elem, \"handle\" );\n\t\tif ( handle ) {\n\t\t\thandle.apply( elem, data );\n\t\t}\n\n\t\tvar parent = elem.parentNode || elem.ownerDocument;\n\n\t\t// Trigger an inline bound script\n\t\ttry {\n\t\t\tif ( !(elem && elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()]) ) {\n\t\t\t\tif ( elem[ \"on\" + type ] && elem[ \"on\" + type ].apply( elem, data ) === false ) {\n\t\t\t\t\tevent.result = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t// prevent IE from throwing an error for some elements with some event types, see #3533\n\t\t} catch (e) {}\n\n\t\tif ( !event.isPropagationStopped() && parent ) {\n\t\t\tjQuery.event.trigger( event, data, parent, true );\n\n\t\t} else if ( !event.isDefaultPrevented() ) {\n\t\t\tvar target = event.target, old,\n\t\t\t\tisClick = jQuery.nodeName(target, \"a\") && type === \"click\",\n\t\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\tif ( (!special._default || special._default.call( elem, event ) === false) && \n\t\t\t\t!isClick && !(target && target.nodeName && jQuery.noData[target.nodeName.toLowerCase()]) ) {\n\n\t\t\t\ttry {\n\t\t\t\t\tif ( target[ type ] ) {\n\t\t\t\t\t\t// Make sure that we don't accidentally re-trigger the onFOO events\n\t\t\t\t\t\told = target[ \"on\" + type ];\n\n\t\t\t\t\t\tif ( old ) {\n\t\t\t\t\t\t\ttarget[ \"on\" + type ] = null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tjQuery.event.triggered = true;\n\t\t\t\t\t\ttarget[ type ]();\n\t\t\t\t\t}\n\n\t\t\t\t// prevent IE from throwing an error for some elements with some event types, see #3533\n\t\t\t\t} catch (e) {}\n\n\t\t\t\tif ( old ) {\n\t\t\t\t\ttarget[ \"on\" + type ] = old;\n\t\t\t\t}\n\n\t\t\t\tjQuery.event.triggered = false;\n\t\t\t}\n\t\t}\n\t},\n\n\thandle: function( event ) {\n\t\tvar all, handlers, namespaces, namespace, events;\n\n\t\tevent = arguments[0] = jQuery.event.fix( event || window.event );\n\t\tevent.currentTarget = this;\n\n\t\t// Namespaced event handlers\n\t\tall = event.type.indexOf(\".\") < 0 && !event.exclusive;\n\n\t\tif ( !all ) {\n\t\t\tnamespaces = event.type.split(\".\");\n\t\t\tevent.type = namespaces.shift();\n\t\t\tnamespace = new RegExp(\"(^|\\\\.)\" + namespaces.slice(0).sort().join(\"\\\\.(?:.*\\\\.)?\") + \"(\\\\.|$)\");\n\t\t}\n\n\t\tvar events = jQuery.data(this, \"events\"), handlers = events[ event.type ];\n\n\t\tif ( events && handlers ) {\n\t\t\t// Clone the handlers to prevent manipulation\n\t\t\thandlers = handlers.slice(0);\n\n\t\t\tfor ( var j = 0, l = handlers.length; j < l; j++ ) {\n\t\t\t\tvar handleObj = handlers[ j ];\n\n\t\t\t\t// Filter the functions by class\n\t\t\t\tif ( all || namespace.test( handleObj.namespace ) ) {\n\t\t\t\t\t// Pass in a reference to the handler function itself\n\t\t\t\t\t// So that we can later remove it\n\t\t\t\t\tevent.handler = handleObj.handler;\n\t\t\t\t\tevent.data = handleObj.data;\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\n\t\t\t\t\tvar ret = handleObj.handler.apply( this, arguments );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tevent.result = ret;\n\t\t\t\t\t\tif ( ret === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( event.isImmediatePropagationStopped() ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\tprops: \"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which\".split(\" \"),\n\n\tfix: function( event ) {\n\t\tif ( event[ expando ] ) {\n\t\t\treturn event;\n\t\t}\n\n\t\t// store a copy of the original event object\n\t\t// and \"clone\" to set read-only properties\n\t\tvar originalEvent = event;\n\t\tevent = jQuery.Event( originalEvent );\n\n\t\tfor ( var i = this.props.length, prop; i; ) {\n\t\t\tprop = this.props[ --i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Fix target property, if necessary\n\t\tif ( !event.target ) {\n\t\t\tevent.target = event.srcElement || document; // Fixes #1925 where srcElement might not be defined either\n\t\t}\n\n\t\t// check if target is a textnode (safari)\n\t\tif ( event.target.nodeType === 3 ) {\n\t\t\tevent.target = event.target.parentNode;\n\t\t}\n\n\t\t// Add relatedTarget, if necessary\n\t\tif ( !event.relatedTarget && event.fromElement ) {\n\t\t\tevent.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement;\n\t\t}\n\n\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\tif ( event.pageX == null && event.clientX != null ) {\n\t\t\tvar doc = document.documentElement, body = document.body;\n\t\t\tevent.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);\n\t\t\tevent.pageY = event.clientY + (doc && doc.scrollTop  || body && body.scrollTop  || 0) - (doc && doc.clientTop  || body && body.clientTop  || 0);\n\t\t}\n\n\t\t// Add which for key events\n\t\tif ( !event.which && ((event.charCode || event.charCode === 0) ? event.charCode : event.keyCode) ) {\n\t\t\tevent.which = event.charCode || event.keyCode;\n\t\t}\n\n\t\t// Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)\n\t\tif ( !event.metaKey && event.ctrlKey ) {\n\t\t\tevent.metaKey = event.ctrlKey;\n\t\t}\n\n\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\t// Note: button is not normalized, so don't use it\n\t\tif ( !event.which && event.button !== undefined ) {\n\t\t\tevent.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));\n\t\t}\n\n\t\treturn event;\n\t},\n\n\t// Deprecated, use jQuery.guid instead\n\tguid: 1E8,\n\n\t// Deprecated, use jQuery.proxy instead\n\tproxy: jQuery.proxy,\n\n\tspecial: {\n\t\tready: {\n\t\t\t// Make sure the ready event is setup\n\t\t\tsetup: jQuery.bindReady,\n\t\t\tteardown: jQuery.noop\n\t\t},\n\n\t\tlive: {\n\t\t\tadd: function( handleObj ) {\n\t\t\t\tjQuery.event.add( this, handleObj.origType, jQuery.extend({}, handleObj, {handler: liveHandler}) ); \n\t\t\t},\n\n\t\t\tremove: function( handleObj ) {\n\t\t\t\tvar remove = true,\n\t\t\t\t\ttype = handleObj.origType.replace(rnamespaces, \"\");\n\t\t\t\t\n\t\t\t\tjQuery.each( jQuery.data(this, \"events\").live || [], function() {\n\t\t\t\t\tif ( type === this.origType.replace(rnamespaces, \"\") ) {\n\t\t\t\t\t\tremove = false;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif ( remove ) {\n\t\t\t\t\tjQuery.event.remove( this, handleObj.origType, liveHandler );\n\t\t\t\t}\n\t\t\t}\n\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tsetup: function( data, namespaces, eventHandle ) {\n\t\t\t\t// We only want to do this special case on windows\n\t\t\t\tif ( this.setInterval ) {\n\t\t\t\t\tthis.onbeforeunload = eventHandle;\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tteardown: function( namespaces, eventHandle ) {\n\t\t\t\tif ( this.onbeforeunload === eventHandle ) {\n\t\t\t\t\tthis.onbeforeunload = null;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar removeEvent = document.removeEventListener ?\n\tfunction( elem, type, handle ) {\n\t\telem.removeEventListener( type, handle, false );\n\t} : \n\tfunction( elem, type, handle ) {\n\t\telem.detachEvent( \"on\" + type, handle );\n\t};\n\njQuery.Event = function( src ) {\n\t// Allow instantiation without the 'new' keyword\n\tif ( !this.preventDefault ) {\n\t\treturn new jQuery.Event( src );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// timeStamp is buggy for some events on Firefox(#3843)\n\t// So we won't rely on the native value\n\tthis.timeStamp = now();\n\n\t// Mark it as fixed\n\tthis[ expando ] = true;\n};\n\nfunction returnFalse() {\n\treturn false;\n}\nfunction returnTrue() {\n\treturn true;\n}\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tpreventDefault: function() {\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\t// if preventDefault exists run it on the original event\n\t\tif ( e.preventDefault ) {\n\t\t\te.preventDefault();\n\t\t}\n\t\t// otherwise set the returnValue property of the original event to false (IE)\n\t\te.returnValue = false;\n\t},\n\tstopPropagation: function() {\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tvar e = this.originalEvent;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\t\t// if stopPropagation exists run it on the original event\n\t\tif ( e.stopPropagation ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t\t// otherwise set the cancelBubble property of the original event to true (IE)\n\t\te.cancelBubble = true;\n\t},\n\tstopImmediatePropagation: function() {\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\t\tthis.stopPropagation();\n\t},\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse\n};\n\n// Checks if an event happened on an element within another element\n// Used in jQuery.event.special.mouseenter and mouseleave handlers\nvar withinElement = function( event ) {\n\t// Check if mouse(over|out) are still within the same parent element\n\tvar parent = event.relatedTarget;\n\n\t// Firefox sometimes assigns relatedTarget a XUL element\n\t// which we cannot access the parentNode property of\n\ttry {\n\t\t// Traverse up the tree\n\t\twhile ( parent && parent !== this ) {\n\t\t\tparent = parent.parentNode;\n\t\t}\n\n\t\tif ( parent !== this ) {\n\t\t\t// set the correct event type\n\t\t\tevent.type = event.data;\n\n\t\t\t// handle event if we actually just moused on to a non sub-element\n\t\t\tjQuery.event.handle.apply( this, arguments );\n\t\t}\n\n\t// assuming we've left the element since we most likely mousedover a xul element\n\t} catch(e) { }\n},\n\n// In case of event delegation, we only need to rename the event.type,\n// liveHandler will take care of the rest.\ndelegate = function( event ) {\n\tevent.type = event.data;\n\tjQuery.event.handle.apply( this, arguments );\n};\n\n// Create mouseenter and mouseleave events\njQuery.each({\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tsetup: function( data ) {\n\t\t\tjQuery.event.add( this, fix, data && data.selector ? delegate : withinElement, orig );\n\t\t},\n\t\tteardown: function( data ) {\n\t\t\tjQuery.event.remove( this, fix, data && data.selector ? delegate : withinElement );\n\t\t}\n\t};\n});\n\n// submit delegation\nif ( !jQuery.support.submitBubbles ) {\n\n\tjQuery.event.special.submit = {\n\t\tsetup: function( data, namespaces ) {\n\t\t\tif ( this.nodeName.toLowerCase() !== \"form\" ) {\n\t\t\t\tjQuery.event.add(this, \"click.specialSubmit\", function( e ) {\n\t\t\t\t\tvar elem = e.target, type = elem.type;\n\n\t\t\t\t\tif ( (type === \"submit\" || type === \"image\") && jQuery( elem ).closest(\"form\").length ) {\n\t\t\t\t\t\treturn trigger( \"submit\", this, arguments );\n\t\t\t\t\t}\n\t\t\t\t});\n\t \n\t\t\t\tjQuery.event.add(this, \"keypress.specialSubmit\", function( e ) {\n\t\t\t\t\tvar elem = e.target, type = elem.type;\n\n\t\t\t\t\tif ( (type === \"text\" || type === \"password\") && jQuery( elem ).closest(\"form\").length && e.keyCode === 13 ) {\n\t\t\t\t\t\treturn trigger( \"submit\", this, arguments );\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\tteardown: function( namespaces ) {\n\t\t\tjQuery.event.remove( this, \".specialSubmit\" );\n\t\t}\n\t};\n\n}\n\n// change delegation, happens here so we have bind.\nif ( !jQuery.support.changeBubbles ) {\n\n\tvar formElems = /textarea|input|select/i,\n\n\tchangeFilters,\n\n\tgetVal = function( elem ) {\n\t\tvar type = elem.type, val = elem.value;\n\n\t\tif ( type === \"radio\" || type === \"checkbox\" ) {\n\t\t\tval = elem.checked;\n\n\t\t} else if ( type === \"select-multiple\" ) {\n\t\t\tval = elem.selectedIndex > -1 ?\n\t\t\t\tjQuery.map( elem.options, function( elem ) {\n\t\t\t\t\treturn elem.selected;\n\t\t\t\t}).join(\"-\") :\n\t\t\t\t\"\";\n\n\t\t} else if ( elem.nodeName.toLowerCase() === \"select\" ) {\n\t\t\tval = elem.selectedIndex;\n\t\t}\n\n\t\treturn val;\n\t},\n\n\ttestChange = function testChange( e ) {\n\t\tvar elem = e.target, data, val;\n\n\t\tif ( !formElems.test( elem.nodeName ) || elem.readOnly ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdata = jQuery.data( elem, \"_change_data\" );\n\t\tval = getVal(elem);\n\n\t\t// the current data will be also retrieved by beforeactivate\n\t\tif ( e.type !== \"focusout\" || elem.type !== \"radio\" ) {\n\t\t\tjQuery.data( elem, \"_change_data\", val );\n\t\t}\n\t\t\n\t\tif ( data === undefined || val === data ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( data != null || val ) {\n\t\t\te.type = \"change\";\n\t\t\treturn jQuery.event.trigger( e, arguments[1], elem );\n\t\t}\n\t};\n\n\tjQuery.event.special.change = {\n\t\tfilters: {\n\t\t\tfocusout: testChange, \n\n\t\t\tclick: function( e ) {\n\t\t\t\tvar elem = e.target, type = elem.type;\n\n\t\t\t\tif ( type === \"radio\" || type === \"checkbox\" || elem.nodeName.toLowerCase() === \"select\" ) {\n\t\t\t\t\treturn testChange.call( this, e );\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// Change has to be called before submit\n\t\t\t// Keydown will be called before keypress, which is used in submit-event delegation\n\t\t\tkeydown: function( e ) {\n\t\t\t\tvar elem = e.target, type = elem.type;\n\n\t\t\t\tif ( (e.keyCode === 13 && elem.nodeName.toLowerCase() !== \"textarea\") ||\n\t\t\t\t\t(e.keyCode === 32 && (type === \"checkbox\" || type === \"radio\")) ||\n\t\t\t\t\ttype === \"select-multiple\" ) {\n\t\t\t\t\treturn testChange.call( this, e );\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// Beforeactivate happens also before the previous element is blurred\n\t\t\t// with this event you can't trigger a change event, but you can store\n\t\t\t// information/focus[in] is not needed anymore\n\t\t\tbeforeactivate: function( e ) {\n\t\t\t\tvar elem = e.target;\n\t\t\t\tjQuery.data( elem, \"_change_data\", getVal(elem) );\n\t\t\t}\n\t\t},\n\n\t\tsetup: function( data, namespaces ) {\n\t\t\tif ( this.type === \"file\" ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tfor ( var type in changeFilters ) {\n\t\t\t\tjQuery.event.add( this, type + \".specialChange\", changeFilters[type] );\n\t\t\t}\n\n\t\t\treturn formElems.test( this.nodeName );\n\t\t},\n\n\t\tteardown: function( namespaces ) {\n\t\t\tjQuery.event.remove( this, \".specialChange\" );\n\n\t\t\treturn formElems.test( this.nodeName );\n\t\t}\n\t};\n\n\tchangeFilters = jQuery.event.special.change.filters;\n}\n\nfunction trigger( type, elem, args ) {\n\targs[0].type = type;\n\treturn jQuery.event.handle.apply( elem, args );\n}\n\n// Create \"bubbling\" focus and blur events\nif ( document.addEventListener ) {\n\tjQuery.each({ focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tthis.addEventListener( orig, handler, true );\n\t\t\t}, \n\t\t\tteardown: function() { \n\t\t\t\tthis.removeEventListener( orig, handler, true );\n\t\t\t}\n\t\t};\n\n\t\tfunction handler( e ) { \n\t\t\te = jQuery.event.fix( e );\n\t\t\te.type = fix;\n\t\t\treturn jQuery.event.handle.call( this, e );\n\t\t}\n\t});\n}\n\njQuery.each([\"bind\", \"one\"], function( i, name ) {\n\tjQuery.fn[ name ] = function( type, data, fn ) {\n\t\t// Handle object literals\n\t\tif ( typeof type === \"object\" ) {\n\t\t\tfor ( var key in type ) {\n\t\t\t\tthis[ name ](key, data, type[key], fn);\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\t\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\tvar handler = name === \"one\" ? jQuery.proxy( fn, function( event ) {\n\t\t\tjQuery( this ).unbind( event, handler );\n\t\t\treturn fn.apply( this, arguments );\n\t\t}) : fn;\n\n\t\tif ( type === \"unload\" && name !== \"one\" ) {\n\t\t\tthis.one( type, data, fn );\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tjQuery.event.add( this[i], type, handler, data );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t};\n});\n\njQuery.fn.extend({\n\tunbind: function( type, fn ) {\n\t\t// Handle object literals\n\t\tif ( typeof type === \"object\" && !type.preventDefault ) {\n\t\t\tfor ( var key in type ) {\n\t\t\t\tthis.unbind(key, type[key]);\n\t\t\t}\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tjQuery.event.remove( this[i], type, fn );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\t\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.live( types, data, fn, selector );\n\t},\n\t\n\tundelegate: function( selector, types, fn ) {\n\t\tif ( arguments.length === 0 ) {\n\t\t\t\treturn this.unbind( \"live\" );\n\t\t\n\t\t} else {\n\t\t\treturn this.die( types, null, fn, selector );\n\t\t}\n\t},\n\t\n\ttrigger: function( type, data ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t});\n\t},\n\n\ttriggerHandler: function( type, data ) {\n\t\tif ( this[0] ) {\n\t\t\tvar event = jQuery.Event( type );\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\tjQuery.event.trigger( event, data, this[0] );\n\t\t\treturn event.result;\n\t\t}\n\t},\n\n\ttoggle: function( fn ) {\n\t\t// Save reference to arguments for access in closure\n\t\tvar args = arguments, i = 1;\n\n\t\t// link all the functions, so any of them can unbind this click handler\n\t\twhile ( i < args.length ) {\n\t\t\tjQuery.proxy( fn, args[ i++ ] );\n\t\t}\n\n\t\treturn this.click( jQuery.proxy( fn, function( event ) {\n\t\t\t// Figure out which function to execute\n\t\t\tvar lastToggle = ( jQuery.data( this, \"lastToggle\" + fn.guid ) || 0 ) % i;\n\t\t\tjQuery.data( this, \"lastToggle\" + fn.guid, lastToggle + 1 );\n\n\t\t\t// Make sure that clicks stop\n\t\t\tevent.preventDefault();\n\n\t\t\t// and execute the function\n\t\t\treturn args[ lastToggle ].apply( this, arguments ) || false;\n\t\t}));\n\t},\n\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n});\n\nvar liveMap = {\n\tfocus: \"focusin\",\n\tblur: \"focusout\",\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\"\n};\n\njQuery.each([\"live\", \"die\"], function( i, name ) {\n\tjQuery.fn[ name ] = function( types, data, fn, origSelector /* Internal Use Only */ ) {\n\t\tvar type, i = 0, match, namespaces, preType,\n\t\t\tselector = origSelector || this.selector,\n\t\t\tcontext = origSelector ? this : jQuery( this.context );\n\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\ttypes = (types || \"\").split(\" \");\n\n\t\twhile ( (type = types[ i++ ]) != null ) {\n\t\t\tmatch = rnamespaces.exec( type );\n\t\t\tnamespaces = \"\";\n\n\t\t\tif ( match )  {\n\t\t\t\tnamespaces = match[0];\n\t\t\t\ttype = type.replace( rnamespaces, \"\" );\n\t\t\t}\n\n\t\t\tif ( type === \"hover\" ) {\n\t\t\t\ttypes.push( \"mouseenter\" + namespaces, \"mouseleave\" + namespaces );\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tpreType = type;\n\n\t\t\tif ( type === \"focus\" || type === \"blur\" ) {\n\t\t\t\ttypes.push( liveMap[ type ] + namespaces );\n\t\t\t\ttype = type + namespaces;\n\n\t\t\t} else {\n\t\t\t\ttype = (liveMap[ type ] || type) + namespaces;\n\t\t\t}\n\n\t\t\tif ( name === \"live\" ) {\n\t\t\t\t// bind live handler\n\t\t\t\tcontext.each(function(){\n\t\t\t\t\tjQuery.event.add( this, liveConvert( type, selector ),\n\t\t\t\t\t\t{ data: data, selector: selector, handler: fn, origType: type, origHandler: fn, preType: preType } );\n\t\t\t\t});\n\n\t\t\t} else {\n\t\t\t\t// unbind live handler\n\t\t\t\tcontext.unbind( liveConvert( type, selector ), fn );\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn this;\n\t}\n});\n\nfunction liveHandler( event ) {\n\tvar stop, elems = [], selectors = [], args = arguments,\n\t\trelated, match, handleObj, elem, j, i, l, data,\n\t\tevents = jQuery.data( this, \"events\" );\n\n\t// Make sure we avoid non-left-click bubbling in Firefox (#3861)\n\tif ( event.liveFired === this || !events || !events.live || event.button && event.type === \"click\" ) {\n\t\treturn;\n\t}\n\n\tevent.liveFired = this;\n\n\tvar live = events.live.slice(0);\n\n\tfor ( j = 0; j < live.length; j++ ) {\n\t\thandleObj = live[j];\n\n\t\tif ( handleObj.origType.replace( rnamespaces, \"\" ) === event.type ) {\n\t\t\tselectors.push( handleObj.selector );\n\n\t\t} else {\n\t\t\tlive.splice( j--, 1 );\n\t\t}\n\t}\n\n\tmatch = jQuery( event.target ).closest( selectors, event.currentTarget );\n\n\tfor ( i = 0, l = match.length; i < l; i++ ) {\n\t\tfor ( j = 0; j < live.length; j++ ) {\n\t\t\thandleObj = live[j];\n\n\t\t\tif ( match[i].selector === handleObj.selector ) {\n\t\t\t\telem = match[i].elem;\n\t\t\t\trelated = null;\n\n\t\t\t\t// Those two events require additional checking\n\t\t\t\tif ( handleObj.preType === \"mouseenter\" || handleObj.preType === \"mouseleave\" ) {\n\t\t\t\t\trelated = jQuery( event.relatedTarget ).closest( handleObj.selector )[0];\n\t\t\t\t}\n\n\t\t\t\tif ( !related || related !== elem ) {\n\t\t\t\t\telems.push({ elem: elem, handleObj: handleObj });\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfor ( i = 0, l = elems.length; i < l; i++ ) {\n\t\tmatch = elems[i];\n\t\tevent.currentTarget = match.elem;\n\t\tevent.data = match.handleObj.data;\n\t\tevent.handleObj = match.handleObj;\n\n\t\tif ( match.handleObj.origHandler.apply( match.elem, args ) === false ) {\n\t\t\tstop = false;\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn stop;\n}\n\nfunction liveConvert( type, selector ) {\n\treturn \"live.\" + (type && type !== \"*\" ? type + \".\" : \"\") + selector.replace(/\\./g, \"`\").replace(/ /g, \"&\");\n}\n\njQuery.each( (\"blur focus focusin focusout load resize scroll unload click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup error\").split(\" \"), function( i, name ) {\n\n\t// Handle event binding\n\tjQuery.fn[ name ] = function( fn ) {\n\t\treturn fn ? this.bind( name, fn ) : this.trigger( name );\n\t};\n\n\tif ( jQuery.attrFn ) {\n\t\tjQuery.attrFn[ name ] = true;\n\t}\n});\n\n// Prevent memory leaks in IE\n// Window isn't included so as not to unbind existing unload events\n// More info:\n//  - http://isaacschlueter.com/2006/10/msie-memory-leaks/\nif ( window.attachEvent && !window.addEventListener ) {\n\twindow.attachEvent(\"onunload\", function() {\n\t\tfor ( var id in jQuery.cache ) {\n\t\t\tif ( jQuery.cache[ id ].handle ) {\n\t\t\t\t// Try/Catch is to handle iframes being unloaded, see #4280\n\t\t\t\ttry {\n\t\t\t\t\tjQuery.event.remove( jQuery.cache[ id ].handle.elem );\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\t\t}\n\t});\n}\n/*!\n * Sizzle CSS Selector Engine - v1.0\n *  Copyright 2009, The Dojo Foundation\n *  Released under the MIT, BSD, and GPL Licenses.\n *  More information: http://sizzlejs.com/\n */\n(function(){\n\nvar chunker = /((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^[\\]]*\\]|['\"][^'\"]*['\"]|[^[\\]'\"]+)+\\]|\\\\.|[^ >+~,(\\[\\\\]+)+|[>+~])(\\s*,\\s*)?((?:.|\\r|\\n)*)/g,\n\tdone = 0,\n\ttoString = Object.prototype.toString,\n\thasDuplicate = false,\n\tbaseHasDuplicate = true;\n\n// Here we check if the JavaScript engine is using some sort of\n// optimization where it does not always call our comparision\n// function. If that is the case, discard the hasDuplicate value.\n//   Thus far that includes Google Chrome.\n[0, 0].sort(function(){\n\tbaseHasDuplicate = false;\n\treturn 0;\n});\n\nvar Sizzle = function(selector, context, results, seed) {\n\tresults = results || [];\n\tvar origContext = context = context || document;\n\n\tif ( context.nodeType !== 1 && context.nodeType !== 9 ) {\n\t\treturn [];\n\t}\n\t\n\tif ( !selector || typeof selector !== \"string\" ) {\n\t\treturn results;\n\t}\n\n\tvar parts = [], m, set, checkSet, extra, prune = true, contextXML = isXML(context),\n\t\tsoFar = selector;\n\t\n\t// Reset the position of the chunker regexp (start from head)\n\twhile ( (chunker.exec(\"\"), m = chunker.exec(soFar)) !== null ) {\n\t\tsoFar = m[3];\n\t\t\n\t\tparts.push( m[1] );\n\t\t\n\t\tif ( m[2] ) {\n\t\t\textra = m[3];\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tif ( parts.length > 1 && origPOS.exec( selector ) ) {\n\t\tif ( parts.length === 2 && Expr.relative[ parts[0] ] ) {\n\t\t\tset = posProcess( parts[0] + parts[1], context );\n\t\t} else {\n\t\t\tset = Expr.relative[ parts[0] ] ?\n\t\t\t\t[ context ] :\n\t\t\t\tSizzle( parts.shift(), context );\n\n\t\t\twhile ( parts.length ) {\n\t\t\t\tselector = parts.shift();\n\n\t\t\t\tif ( Expr.relative[ selector ] ) {\n\t\t\t\t\tselector += parts.shift();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tset = posProcess( selector, set );\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// Take a shortcut and set the context if the root selector is an ID\n\t\t// (but not if it'll be faster if the inner selector is an ID)\n\t\tif ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&\n\t\t\t\tExpr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {\n\t\t\tvar ret = Sizzle.find( parts.shift(), context, contextXML );\n\t\t\tcontext = ret.expr ? Sizzle.filter( ret.expr, ret.set )[0] : ret.set[0];\n\t\t}\n\n\t\tif ( context ) {\n\t\t\tvar ret = seed ?\n\t\t\t\t{ expr: parts.pop(), set: makeArray(seed) } :\n\t\t\t\tSizzle.find( parts.pop(), parts.length === 1 && (parts[0] === \"~\" || parts[0] === \"+\") && context.parentNode ? context.parentNode : context, contextXML );\n\t\t\tset = ret.expr ? Sizzle.filter( ret.expr, ret.set ) : ret.set;\n\n\t\t\tif ( parts.length > 0 ) {\n\t\t\t\tcheckSet = makeArray(set);\n\t\t\t} else {\n\t\t\t\tprune = false;\n\t\t\t}\n\n\t\t\twhile ( parts.length ) {\n\t\t\t\tvar cur = parts.pop(), pop = cur;\n\n\t\t\t\tif ( !Expr.relative[ cur ] ) {\n\t\t\t\t\tcur = \"\";\n\t\t\t\t} else {\n\t\t\t\t\tpop = parts.pop();\n\t\t\t\t}\n\n\t\t\t\tif ( pop == null ) {\n\t\t\t\t\tpop = context;\n\t\t\t\t}\n\n\t\t\t\tExpr.relative[ cur ]( checkSet, pop, contextXML );\n\t\t\t}\n\t\t} else {\n\t\t\tcheckSet = parts = [];\n\t\t}\n\t}\n\n\tif ( !checkSet ) {\n\t\tcheckSet = set;\n\t}\n\n\tif ( !checkSet ) {\n\t\tSizzle.error( cur || selector );\n\t}\n\n\tif ( toString.call(checkSet) === \"[object Array]\" ) {\n\t\tif ( !prune ) {\n\t\t\tresults.push.apply( results, checkSet );\n\t\t} else if ( context && context.nodeType === 1 ) {\n\t\t\tfor ( var i = 0; checkSet[i] != null; i++ ) {\n\t\t\t\tif ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) {\n\t\t\t\t\tresults.push( set[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( var i = 0; checkSet[i] != null; i++ ) {\n\t\t\t\tif ( checkSet[i] && checkSet[i].nodeType === 1 ) {\n\t\t\t\t\tresults.push( set[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else {\n\t\tmakeArray( checkSet, results );\n\t}\n\n\tif ( extra ) {\n\t\tSizzle( extra, origContext, results, seed );\n\t\tSizzle.uniqueSort( results );\n\t}\n\n\treturn results;\n};\n\nSizzle.uniqueSort = function(results){\n\tif ( sortOrder ) {\n\t\thasDuplicate = baseHasDuplicate;\n\t\tresults.sort(sortOrder);\n\n\t\tif ( hasDuplicate ) {\n\t\t\tfor ( var i = 1; i < results.length; i++ ) {\n\t\t\t\tif ( results[i] === results[i-1] ) {\n\t\t\t\t\tresults.splice(i--, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn results;\n};\n\nSizzle.matches = function(expr, set){\n\treturn Sizzle(expr, null, null, set);\n};\n\nSizzle.find = function(expr, context, isXML){\n\tvar set, match;\n\n\tif ( !expr ) {\n\t\treturn [];\n\t}\n\n\tfor ( var i = 0, l = Expr.order.length; i < l; i++ ) {\n\t\tvar type = Expr.order[i], match;\n\t\t\n\t\tif ( (match = Expr.leftMatch[ type ].exec( expr )) ) {\n\t\t\tvar left = match[1];\n\t\t\tmatch.splice(1,1);\n\n\t\t\tif ( left.substr( left.length - 1 ) !== \"\\\\\" ) {\n\t\t\t\tmatch[1] = (match[1] || \"\").replace(/\\\\/g, \"\");\n\t\t\t\tset = Expr.find[ type ]( match, context, isXML );\n\t\t\t\tif ( set != null ) {\n\t\t\t\t\texpr = expr.replace( Expr.match[ type ], \"\" );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( !set ) {\n\t\tset = context.getElementsByTagName(\"*\");\n\t}\n\n\treturn {set: set, expr: expr};\n};\n\nSizzle.filter = function(expr, set, inplace, not){\n\tvar old = expr, result = [], curLoop = set, match, anyFound,\n\t\tisXMLFilter = set && set[0] && isXML(set[0]);\n\n\twhile ( expr && set.length ) {\n\t\tfor ( var type in Expr.filter ) {\n\t\t\tif ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {\n\t\t\t\tvar filter = Expr.filter[ type ], found, item, left = match[1];\n\t\t\t\tanyFound = false;\n\n\t\t\t\tmatch.splice(1,1);\n\n\t\t\t\tif ( left.substr( left.length - 1 ) === \"\\\\\" ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif ( curLoop === result ) {\n\t\t\t\t\tresult = [];\n\t\t\t\t}\n\n\t\t\t\tif ( Expr.preFilter[ type ] ) {\n\t\t\t\t\tmatch = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );\n\n\t\t\t\t\tif ( !match ) {\n\t\t\t\t\t\tanyFound = found = true;\n\t\t\t\t\t} else if ( match === true ) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( match ) {\n\t\t\t\t\tfor ( var i = 0; (item = curLoop[i]) != null; i++ ) {\n\t\t\t\t\t\tif ( item ) {\n\t\t\t\t\t\t\tfound = filter( item, match, i, curLoop );\n\t\t\t\t\t\t\tvar pass = not ^ !!found;\n\n\t\t\t\t\t\t\tif ( inplace && found != null ) {\n\t\t\t\t\t\t\t\tif ( pass ) {\n\t\t\t\t\t\t\t\t\tanyFound = true;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcurLoop[i] = false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( pass ) {\n\t\t\t\t\t\t\t\tresult.push( item );\n\t\t\t\t\t\t\t\tanyFound = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( found !== undefined ) {\n\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\tcurLoop = result;\n\t\t\t\t\t}\n\n\t\t\t\t\texpr = expr.replace( Expr.match[ type ], \"\" );\n\n\t\t\t\t\tif ( !anyFound ) {\n\t\t\t\t\t\treturn [];\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Improper expression\n\t\tif ( expr === old ) {\n\t\t\tif ( anyFound == null ) {\n\t\t\t\tSizzle.error( expr );\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\told = expr;\n\t}\n\n\treturn curLoop;\n};\n\nSizzle.error = function( msg ) {\n\tthrow \"Syntax error, unrecognized expression: \" + msg;\n};\n\nvar Expr = Sizzle.selectors = {\n\torder: [ \"ID\", \"NAME\", \"TAG\" ],\n\tmatch: {\n\t\tID: /#((?:[\\w\\u00c0-\\uFFFF-]|\\\\.)+)/,\n\t\tCLASS: /\\.((?:[\\w\\u00c0-\\uFFFF-]|\\\\.)+)/,\n\t\tNAME: /\\[name=['\"]*((?:[\\w\\u00c0-\\uFFFF-]|\\\\.)+)['\"]*\\]/,\n\t\tATTR: /\\[\\s*((?:[\\w\\u00c0-\\uFFFF-]|\\\\.)+)\\s*(?:(\\S?=)\\s*(['\"]*)(.*?)\\3|)\\s*\\]/,\n\t\tTAG: /^((?:[\\w\\u00c0-\\uFFFF\\*-]|\\\\.)+)/,\n\t\tCHILD: /:(only|nth|last|first)-child(?:\\((even|odd|[\\dn+-]*)\\))?/,\n\t\tPOS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\\((\\d*)\\))?(?=[^-]|$)/,\n\t\tPSEUDO: /:((?:[\\w\\u00c0-\\uFFFF-]|\\\\.)+)(?:\\((['\"]?)((?:\\([^\\)]+\\)|[^\\(\\)]*)+)\\2\\))?/\n\t},\n\tleftMatch: {},\n\tattrMap: {\n\t\t\"class\": \"className\",\n\t\t\"for\": \"htmlFor\"\n\t},\n\tattrHandle: {\n\t\thref: function(elem){\n\t\t\treturn elem.getAttribute(\"href\");\n\t\t}\n\t},\n\trelative: {\n\t\t\"+\": function(checkSet, part){\n\t\t\tvar isPartStr = typeof part === \"string\",\n\t\t\t\tisTag = isPartStr && !/\\W/.test(part),\n\t\t\t\tisPartStrNotTag = isPartStr && !isTag;\n\n\t\t\tif ( isTag ) {\n\t\t\t\tpart = part.toLowerCase();\n\t\t\t}\n\n\t\t\tfor ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {\n\t\t\t\tif ( (elem = checkSet[i]) ) {\n\t\t\t\t\twhile ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}\n\n\t\t\t\t\tcheckSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ?\n\t\t\t\t\t\telem || false :\n\t\t\t\t\t\telem === part;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( isPartStrNotTag ) {\n\t\t\t\tSizzle.filter( part, checkSet, true );\n\t\t\t}\n\t\t},\n\t\t\">\": function(checkSet, part){\n\t\t\tvar isPartStr = typeof part === \"string\";\n\n\t\t\tif ( isPartStr && !/\\W/.test(part) ) {\n\t\t\t\tpart = part.toLowerCase();\n\n\t\t\t\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\t\t\t\tvar elem = checkSet[i];\n\t\t\t\t\tif ( elem ) {\n\t\t\t\t\t\tvar parent = elem.parentNode;\n\t\t\t\t\t\tcheckSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\t\t\t\tvar elem = checkSet[i];\n\t\t\t\t\tif ( elem ) {\n\t\t\t\t\t\tcheckSet[i] = isPartStr ?\n\t\t\t\t\t\t\telem.parentNode :\n\t\t\t\t\t\t\telem.parentNode === part;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( isPartStr ) {\n\t\t\t\t\tSizzle.filter( part, checkSet, true );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"\": function(checkSet, part, isXML){\n\t\t\tvar doneName = done++, checkFn = dirCheck;\n\n\t\t\tif ( typeof part === \"string\" && !/\\W/.test(part) ) {\n\t\t\t\tvar nodeCheck = part = part.toLowerCase();\n\t\t\t\tcheckFn = dirNodeCheck;\n\t\t\t}\n\n\t\t\tcheckFn(\"parentNode\", part, doneName, checkSet, nodeCheck, isXML);\n\t\t},\n\t\t\"~\": function(checkSet, part, isXML){\n\t\t\tvar doneName = done++, checkFn = dirCheck;\n\n\t\t\tif ( typeof part === \"string\" && !/\\W/.test(part) ) {\n\t\t\t\tvar nodeCheck = part = part.toLowerCase();\n\t\t\t\tcheckFn = dirNodeCheck;\n\t\t\t}\n\n\t\t\tcheckFn(\"previousSibling\", part, doneName, checkSet, nodeCheck, isXML);\n\t\t}\n\t},\n\tfind: {\n\t\tID: function(match, context, isXML){\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && !isXML ) {\n\t\t\t\tvar m = context.getElementById(match[1]);\n\t\t\t\treturn m ? [m] : [];\n\t\t\t}\n\t\t},\n\t\tNAME: function(match, context){\n\t\t\tif ( typeof context.getElementsByName !== \"undefined\" ) {\n\t\t\t\tvar ret = [], results = context.getElementsByName(match[1]);\n\n\t\t\t\tfor ( var i = 0, l = results.length; i < l; i++ ) {\n\t\t\t\t\tif ( results[i].getAttribute(\"name\") === match[1] ) {\n\t\t\t\t\t\tret.push( results[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn ret.length === 0 ? null : ret;\n\t\t\t}\n\t\t},\n\t\tTAG: function(match, context){\n\t\t\treturn context.getElementsByTagName(match[1]);\n\t\t}\n\t},\n\tpreFilter: {\n\t\tCLASS: function(match, curLoop, inplace, result, not, isXML){\n\t\t\tmatch = \" \" + match[1].replace(/\\\\/g, \"\") + \" \";\n\n\t\t\tif ( isXML ) {\n\t\t\t\treturn match;\n\t\t\t}\n\n\t\t\tfor ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {\n\t\t\t\tif ( elem ) {\n\t\t\t\t\tif ( not ^ (elem.className && (\" \" + elem.className + \" \").replace(/[\\t\\n]/g, \" \").indexOf(match) >= 0) ) {\n\t\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\t\tresult.push( elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if ( inplace ) {\n\t\t\t\t\t\tcurLoop[i] = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t},\n\t\tID: function(match){\n\t\t\treturn match[1].replace(/\\\\/g, \"\");\n\t\t},\n\t\tTAG: function(match, curLoop){\n\t\t\treturn match[1].toLowerCase();\n\t\t},\n\t\tCHILD: function(match){\n\t\t\tif ( match[1] === \"nth\" ) {\n\t\t\t\t// parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'\n\t\t\t\tvar test = /(-?)(\\d*)n((?:\\+|-)?\\d*)/.exec(\n\t\t\t\t\tmatch[2] === \"even\" && \"2n\" || match[2] === \"odd\" && \"2n+1\" ||\n\t\t\t\t\t!/\\D/.test( match[2] ) && \"0n+\" + match[2] || match[2]);\n\n\t\t\t\t// calculate the numbers (first)n+(last) including if they are negative\n\t\t\t\tmatch[2] = (test[1] + (test[2] || 1)) - 0;\n\t\t\t\tmatch[3] = test[3] - 0;\n\t\t\t}\n\n\t\t\t// TODO: Move to normal caching system\n\t\t\tmatch[0] = done++;\n\n\t\t\treturn match;\n\t\t},\n\t\tATTR: function(match, curLoop, inplace, result, not, isXML){\n\t\t\tvar name = match[1].replace(/\\\\/g, \"\");\n\t\t\t\n\t\t\tif ( !isXML && Expr.attrMap[name] ) {\n\t\t\t\tmatch[1] = Expr.attrMap[name];\n\t\t\t}\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[4] = \" \" + match[4] + \" \";\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\t\tPSEUDO: function(match, curLoop, inplace, result, not){\n\t\t\tif ( match[1] === \"not\" ) {\n\t\t\t\t// If we're dealing with a complex expression, or a simple one\n\t\t\t\tif ( ( chunker.exec(match[3]) || \"\" ).length > 1 || /^\\w/.test(match[3]) ) {\n\t\t\t\t\tmatch[3] = Sizzle(match[3], null, null, curLoop);\n\t\t\t\t} else {\n\t\t\t\t\tvar ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);\n\t\t\t\t\tif ( !inplace ) {\n\t\t\t\t\t\tresult.push.apply( result, ret );\n\t\t\t\t\t}\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\t\n\t\t\treturn match;\n\t\t},\n\t\tPOS: function(match){\n\t\t\tmatch.unshift( true );\n\t\t\treturn match;\n\t\t}\n\t},\n\tfilters: {\n\t\tenabled: function(elem){\n\t\t\treturn elem.disabled === false && elem.type !== \"hidden\";\n\t\t},\n\t\tdisabled: function(elem){\n\t\t\treturn elem.disabled === true;\n\t\t},\n\t\tchecked: function(elem){\n\t\t\treturn elem.checked === true;\n\t\t},\n\t\tselected: function(elem){\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\telem.parentNode.selectedIndex;\n\t\t\treturn elem.selected === true;\n\t\t},\n\t\tparent: function(elem){\n\t\t\treturn !!elem.firstChild;\n\t\t},\n\t\tempty: function(elem){\n\t\t\treturn !elem.firstChild;\n\t\t},\n\t\thas: function(elem, i, match){\n\t\t\treturn !!Sizzle( match[3], elem ).length;\n\t\t},\n\t\theader: function(elem){\n\t\t\treturn /h\\d/i.test( elem.nodeName );\n\t\t},\n\t\ttext: function(elem){\n\t\t\treturn \"text\" === elem.type;\n\t\t},\n\t\tradio: function(elem){\n\t\t\treturn \"radio\" === elem.type;\n\t\t},\n\t\tcheckbox: function(elem){\n\t\t\treturn \"checkbox\" === elem.type;\n\t\t},\n\t\tfile: function(elem){\n\t\t\treturn \"file\" === elem.type;\n\t\t},\n\t\tpassword: function(elem){\n\t\t\treturn \"password\" === elem.type;\n\t\t},\n\t\tsubmit: function(elem){\n\t\t\treturn \"submit\" === elem.type;\n\t\t},\n\t\timage: function(elem){\n\t\t\treturn \"image\" === elem.type;\n\t\t},\n\t\treset: function(elem){\n\t\t\treturn \"reset\" === elem.type;\n\t\t},\n\t\tbutton: function(elem){\n\t\t\treturn \"button\" === elem.type || elem.nodeName.toLowerCase() === \"button\";\n\t\t},\n\t\tinput: function(elem){\n\t\t\treturn /input|select|textarea|button/i.test(elem.nodeName);\n\t\t}\n\t},\n\tsetFilters: {\n\t\tfirst: function(elem, i){\n\t\t\treturn i === 0;\n\t\t},\n\t\tlast: function(elem, i, match, array){\n\t\t\treturn i === array.length - 1;\n\t\t},\n\t\teven: function(elem, i){\n\t\t\treturn i % 2 === 0;\n\t\t},\n\t\todd: function(elem, i){\n\t\t\treturn i % 2 === 1;\n\t\t},\n\t\tlt: function(elem, i, match){\n\t\t\treturn i < match[3] - 0;\n\t\t},\n\t\tgt: function(elem, i, match){\n\t\t\treturn i > match[3] - 0;\n\t\t},\n\t\tnth: function(elem, i, match){\n\t\t\treturn match[3] - 0 === i;\n\t\t},\n\t\teq: function(elem, i, match){\n\t\t\treturn match[3] - 0 === i;\n\t\t}\n\t},\n\tfilter: {\n\t\tPSEUDO: function(elem, match, i, array){\n\t\t\tvar name = match[1], filter = Expr.filters[ name ];\n\n\t\t\tif ( filter ) {\n\t\t\t\treturn filter( elem, i, match, array );\n\t\t\t} else if ( name === \"contains\" ) {\n\t\t\t\treturn (elem.textContent || elem.innerText || getText([ elem ]) || \"\").indexOf(match[3]) >= 0;\n\t\t\t} else if ( name === \"not\" ) {\n\t\t\t\tvar not = match[3];\n\n\t\t\t\tfor ( var i = 0, l = not.length; i < l; i++ ) {\n\t\t\t\t\tif ( not[i] === elem ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\t\t\t} else {\n\t\t\t\tSizzle.error( \"Syntax error, unrecognized expression: \" + name );\n\t\t\t}\n\t\t},\n\t\tCHILD: function(elem, match){\n\t\t\tvar type = match[1], node = elem;\n\t\t\tswitch (type) {\n\t\t\t\tcase 'only':\n\t\t\t\tcase 'first':\n\t\t\t\t\twhile ( (node = node.previousSibling) )\t {\n\t\t\t\t\t\tif ( node.nodeType === 1 ) { \n\t\t\t\t\t\t\treturn false; \n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( type === \"first\" ) { \n\t\t\t\t\t\treturn true; \n\t\t\t\t\t}\n\t\t\t\t\tnode = elem;\n\t\t\t\tcase 'last':\n\t\t\t\t\twhile ( (node = node.nextSibling) )\t {\n\t\t\t\t\t\tif ( node.nodeType === 1 ) { \n\t\t\t\t\t\t\treturn false; \n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\tcase 'nth':\n\t\t\t\t\tvar first = match[2], last = match[3];\n\n\t\t\t\t\tif ( first === 1 && last === 0 ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar doneName = match[0],\n\t\t\t\t\t\tparent = elem.parentNode;\n\t\n\t\t\t\t\tif ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {\n\t\t\t\t\t\tvar count = 0;\n\t\t\t\t\t\tfor ( node = parent.firstChild; node; node = node.nextSibling ) {\n\t\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\tnode.nodeIndex = ++count;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} \n\t\t\t\t\t\tparent.sizcache = doneName;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar diff = elem.nodeIndex - last;\n\t\t\t\t\tif ( first === 0 ) {\n\t\t\t\t\t\treturn diff === 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tID: function(elem, match){\n\t\t\treturn elem.nodeType === 1 && elem.getAttribute(\"id\") === match;\n\t\t},\n\t\tTAG: function(elem, match){\n\t\t\treturn (match === \"*\" && elem.nodeType === 1) || elem.nodeName.toLowerCase() === match;\n\t\t},\n\t\tCLASS: function(elem, match){\n\t\t\treturn (\" \" + (elem.className || elem.getAttribute(\"class\")) + \" \")\n\t\t\t\t.indexOf( match ) > -1;\n\t\t},\n\t\tATTR: function(elem, match){\n\t\t\tvar name = match[1],\n\t\t\t\tresult = Expr.attrHandle[ name ] ?\n\t\t\t\t\tExpr.attrHandle[ name ]( elem ) :\n\t\t\t\t\telem[ name ] != null ?\n\t\t\t\t\t\telem[ name ] :\n\t\t\t\t\t\telem.getAttribute( name ),\n\t\t\t\tvalue = result + \"\",\n\t\t\t\ttype = match[2],\n\t\t\t\tcheck = match[4];\n\n\t\t\treturn result == null ?\n\t\t\t\ttype === \"!=\" :\n\t\t\t\ttype === \"=\" ?\n\t\t\t\tvalue === check :\n\t\t\t\ttype === \"*=\" ?\n\t\t\t\tvalue.indexOf(check) >= 0 :\n\t\t\t\ttype === \"~=\" ?\n\t\t\t\t(\" \" + value + \" \").indexOf(check) >= 0 :\n\t\t\t\t!check ?\n\t\t\t\tvalue && result !== false :\n\t\t\t\ttype === \"!=\" ?\n\t\t\t\tvalue !== check :\n\t\t\t\ttype === \"^=\" ?\n\t\t\t\tvalue.indexOf(check) === 0 :\n\t\t\t\ttype === \"$=\" ?\n\t\t\t\tvalue.substr(value.length - check.length) === check :\n\t\t\t\ttype === \"|=\" ?\n\t\t\t\tvalue === check || value.substr(0, check.length + 1) === check + \"-\" :\n\t\t\t\tfalse;\n\t\t},\n\t\tPOS: function(elem, match, i, array){\n\t\t\tvar name = match[2], filter = Expr.setFilters[ name ];\n\n\t\t\tif ( filter ) {\n\t\t\t\treturn filter( elem, i, match, array );\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar origPOS = Expr.match.POS;\n\nfor ( var type in Expr.match ) {\n\tExpr.match[ type ] = new RegExp( Expr.match[ type ].source + /(?![^\\[]*\\])(?![^\\(]*\\))/.source );\n\tExpr.leftMatch[ type ] = new RegExp( /(^(?:.|\\r|\\n)*?)/.source + Expr.match[ type ].source.replace(/\\\\(\\d+)/g, function(all, num){\n\t\treturn \"\\\\\" + (num - 0 + 1);\n\t}));\n}\n\nvar makeArray = function(array, results) {\n\tarray = Array.prototype.slice.call( array, 0 );\n\n\tif ( results ) {\n\t\tresults.push.apply( results, array );\n\t\treturn results;\n\t}\n\t\n\treturn array;\n};\n\n// Perform a simple check to determine if the browser is capable of\n// converting a NodeList to an array using builtin methods.\n// Also verifies that the returned array holds DOM nodes\n// (which is not the case in the Blackberry browser)\ntry {\n\tArray.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;\n\n// Provide a fallback method if it does not work\n} catch(e){\n\tmakeArray = function(array, results) {\n\t\tvar ret = results || [];\n\n\t\tif ( toString.call(array) === \"[object Array]\" ) {\n\t\t\tArray.prototype.push.apply( ret, array );\n\t\t} else {\n\t\t\tif ( typeof array.length === \"number\" ) {\n\t\t\t\tfor ( var i = 0, l = array.length; i < l; i++ ) {\n\t\t\t\t\tret.push( array[i] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( var i = 0; array[i]; i++ ) {\n\t\t\t\t\tret.push( array[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t};\n}\n\nvar sortOrder;\n\nif ( document.documentElement.compareDocumentPosition ) {\n\tsortOrder = function( a, b ) {\n\t\tif ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {\n\t\t\tif ( a == b ) {\n\t\t\t\thasDuplicate = true;\n\t\t\t}\n\t\t\treturn a.compareDocumentPosition ? -1 : 1;\n\t\t}\n\n\t\tvar ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1;\n\t\tif ( ret === 0 ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn ret;\n\t};\n} else if ( \"sourceIndex\" in document.documentElement ) {\n\tsortOrder = function( a, b ) {\n\t\tif ( !a.sourceIndex || !b.sourceIndex ) {\n\t\t\tif ( a == b ) {\n\t\t\t\thasDuplicate = true;\n\t\t\t}\n\t\t\treturn a.sourceIndex ? -1 : 1;\n\t\t}\n\n\t\tvar ret = a.sourceIndex - b.sourceIndex;\n\t\tif ( ret === 0 ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn ret;\n\t};\n} else if ( document.createRange ) {\n\tsortOrder = function( a, b ) {\n\t\tif ( !a.ownerDocument || !b.ownerDocument ) {\n\t\t\tif ( a == b ) {\n\t\t\t\thasDuplicate = true;\n\t\t\t}\n\t\t\treturn a.ownerDocument ? -1 : 1;\n\t\t}\n\n\t\tvar aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange();\n\t\taRange.setStart(a, 0);\n\t\taRange.setEnd(a, 0);\n\t\tbRange.setStart(b, 0);\n\t\tbRange.setEnd(b, 0);\n\t\tvar ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange);\n\t\tif ( ret === 0 ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn ret;\n\t};\n}\n\n// Utility function for retreiving the text value of an array of DOM nodes\nfunction getText( elems ) {\n\tvar ret = \"\", elem;\n\n\tfor ( var i = 0; elems[i]; i++ ) {\n\t\telem = elems[i];\n\n\t\t// Get the text from text nodes and CDATA nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 4 ) {\n\t\t\tret += elem.nodeValue;\n\n\t\t// Traverse everything else, except comment nodes\n\t\t} else if ( elem.nodeType !== 8 ) {\n\t\t\tret += getText( elem.childNodes );\n\t\t}\n\t}\n\n\treturn ret;\n}\n\n// Check to see if the browser returns elements by name when\n// querying by getElementById (and provide a workaround)\n(function(){\n\t// We're going to inject a fake input element with a specified name\n\tvar form = document.createElement(\"div\"),\n\t\tid = \"script\" + (new Date).getTime();\n\tform.innerHTML = \"<a name='\" + id + \"'/>\";\n\n\t// Inject it into the root element, check its status, and remove it quickly\n\tvar root = document.documentElement;\n\troot.insertBefore( form, root.firstChild );\n\n\t// The workaround has to do additional checks after a getElementById\n\t// Which slows things down for other browsers (hence the branching)\n\tif ( document.getElementById( id ) ) {\n\t\tExpr.find.ID = function(match, context, isXML){\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && !isXML ) {\n\t\t\t\tvar m = context.getElementById(match[1]);\n\t\t\t\treturn m ? m.id === match[1] || typeof m.getAttributeNode !== \"undefined\" && m.getAttributeNode(\"id\").nodeValue === match[1] ? [m] : undefined : [];\n\t\t\t}\n\t\t};\n\n\t\tExpr.filter.ID = function(elem, match){\n\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" && elem.getAttributeNode(\"id\");\n\t\t\treturn elem.nodeType === 1 && node && node.nodeValue === match;\n\t\t};\n\t}\n\n\troot.removeChild( form );\n\troot = form = null; // release memory in IE\n})();\n\n(function(){\n\t// Check to see if the browser returns only elements\n\t// when doing getElementsByTagName(\"*\")\n\n\t// Create a fake element\n\tvar div = document.createElement(\"div\");\n\tdiv.appendChild( document.createComment(\"\") );\n\n\t// Make sure no comments are found\n\tif ( div.getElementsByTagName(\"*\").length > 0 ) {\n\t\tExpr.find.TAG = function(match, context){\n\t\t\tvar results = context.getElementsByTagName(match[1]);\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( match[1] === \"*\" ) {\n\t\t\t\tvar tmp = [];\n\n\t\t\t\tfor ( var i = 0; results[i]; i++ ) {\n\t\t\t\t\tif ( results[i].nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( results[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tresults = tmp;\n\t\t\t}\n\n\t\t\treturn results;\n\t\t};\n\t}\n\n\t// Check to see if an attribute returns normalized href attributes\n\tdiv.innerHTML = \"<a href='#'></a>\";\n\tif ( div.firstChild && typeof div.firstChild.getAttribute !== \"undefined\" &&\n\t\t\tdiv.firstChild.getAttribute(\"href\") !== \"#\" ) {\n\t\tExpr.attrHandle.href = function(elem){\n\t\t\treturn elem.getAttribute(\"href\", 2);\n\t\t};\n\t}\n\n\tdiv = null; // release memory in IE\n})();\n\nif ( document.querySelectorAll ) {\n\t(function(){\n\t\tvar oldSizzle = Sizzle, div = document.createElement(\"div\");\n\t\tdiv.innerHTML = \"<p class='TEST'></p>\";\n\n\t\t// Safari can't handle uppercase or unicode characters when\n\t\t// in quirks mode.\n\t\tif ( div.querySelectorAll && div.querySelectorAll(\".TEST\").length === 0 ) {\n\t\t\treturn;\n\t\t}\n\t\n\t\tSizzle = function(query, context, extra, seed){\n\t\t\tcontext = context || document;\n\n\t\t\t// Only use querySelectorAll on non-XML documents\n\t\t\t// (ID selectors don't work in non-HTML documents)\n\t\t\tif ( !seed && context.nodeType === 9 && !isXML(context) ) {\n\t\t\t\ttry {\n\t\t\t\t\treturn makeArray( context.querySelectorAll(query), extra );\n\t\t\t\t} catch(e){}\n\t\t\t}\n\t\t\n\t\t\treturn oldSizzle(query, context, extra, seed);\n\t\t};\n\n\t\tfor ( var prop in oldSizzle ) {\n\t\t\tSizzle[ prop ] = oldSizzle[ prop ];\n\t\t}\n\n\t\tdiv = null; // release memory in IE\n\t})();\n}\n\n(function(){\n\tvar div = document.createElement(\"div\");\n\n\tdiv.innerHTML = \"<div class='test e'></div><div class='test'></div>\";\n\n\t// Opera can't find a second classname (in 9.6)\n\t// Also, make sure that getElementsByClassName actually exists\n\tif ( !div.getElementsByClassName || div.getElementsByClassName(\"e\").length === 0 ) {\n\t\treturn;\n\t}\n\n\t// Safari caches class attributes, doesn't catch changes (in 3.2)\n\tdiv.lastChild.className = \"e\";\n\n\tif ( div.getElementsByClassName(\"e\").length === 1 ) {\n\t\treturn;\n\t}\n\t\n\tExpr.order.splice(1, 0, \"CLASS\");\n\tExpr.find.CLASS = function(match, context, isXML) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && !isXML ) {\n\t\t\treturn context.getElementsByClassName(match[1]);\n\t\t}\n\t};\n\n\tdiv = null; // release memory in IE\n})();\n\nfunction dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\n\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\tvar elem = checkSet[i];\n\t\tif ( elem ) {\n\t\t\telem = elem[dir];\n\t\t\tvar match = false;\n\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem.sizcache === doneName ) {\n\t\t\t\t\tmatch = checkSet[elem.sizset];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeType === 1 && !isXML ){\n\t\t\t\t\telem.sizcache = doneName;\n\t\t\t\t\telem.sizset = i;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeName.toLowerCase() === cur ) {\n\t\t\t\t\tmatch = elem;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\telem = elem[dir];\n\t\t\t}\n\n\t\t\tcheckSet[i] = match;\n\t\t}\n\t}\n}\n\nfunction dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\n\tfor ( var i = 0, l = checkSet.length; i < l; i++ ) {\n\t\tvar elem = checkSet[i];\n\t\tif ( elem ) {\n\t\t\telem = elem[dir];\n\t\t\tvar match = false;\n\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem.sizcache === doneName ) {\n\t\t\t\t\tmatch = checkSet[elem.sizset];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\tif ( !isXML ) {\n\t\t\t\t\t\telem.sizcache = doneName;\n\t\t\t\t\t\telem.sizset = i;\n\t\t\t\t\t}\n\t\t\t\t\tif ( typeof cur !== \"string\" ) {\n\t\t\t\t\t\tif ( elem === cur ) {\n\t\t\t\t\t\t\tmatch = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {\n\t\t\t\t\t\tmatch = elem;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\telem = elem[dir];\n\t\t\t}\n\n\t\t\tcheckSet[i] = match;\n\t\t}\n\t}\n}\n\nvar contains = document.compareDocumentPosition ? function(a, b){\n\treturn !!(a.compareDocumentPosition(b) & 16);\n} : function(a, b){\n\treturn a !== b && (a.contains ? a.contains(b) : true);\n};\n\nvar isXML = function(elem){\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833) \n\tvar documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\nvar posProcess = function(selector, context){\n\tvar tmpSet = [], later = \"\", match,\n\t\troot = context.nodeType ? [context] : context;\n\n\t// Position selectors must be done after the filter\n\t// And so must :not(positional) so we move all PSEUDOs to the end\n\twhile ( (match = Expr.match.PSEUDO.exec( selector )) ) {\n\t\tlater += match[0];\n\t\tselector = selector.replace( Expr.match.PSEUDO, \"\" );\n\t}\n\n\tselector = Expr.relative[selector] ? selector + \"*\" : selector;\n\n\tfor ( var i = 0, l = root.length; i < l; i++ ) {\n\t\tSizzle( selector, root[i], tmpSet );\n\t}\n\n\treturn Sizzle.filter( later, tmpSet );\n};\n\n// EXPOSE\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\njQuery.expr[\":\"] = jQuery.expr.filters;\njQuery.unique = Sizzle.uniqueSort;\njQuery.text = getText;\njQuery.isXMLDoc = isXML;\njQuery.contains = contains;\n\nreturn;\n\nwindow.Sizzle = Sizzle;\n\n})();\nvar runtil = /Until$/,\n\trparentsprev = /^(?:parents|prevUntil|prevAll)/,\n\t// Note: This RegExp should be improved, or likely pulled from Sizzle\n\trmultiselector = /,/,\n\tslice = Array.prototype.slice;\n\n// Implement the identical functionality for filter and not\nvar winnow = function( elements, qualifier, keep ) {\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) === keep;\n\t\t});\n\n\t} else if ( qualifier.nodeType ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\treturn (elem === qualifier) === keep;\n\t\t});\n\n\t} else if ( typeof qualifier === \"string\" ) {\n\t\tvar filtered = jQuery.grep(elements, function( elem ) {\n\t\t\treturn elem.nodeType === 1;\n\t\t});\n\n\t\tif ( isSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter(qualifier, filtered, !keep);\n\t\t} else {\n\t\t\tqualifier = jQuery.filter( qualifier, filtered );\n\t\t}\n\t}\n\n\treturn jQuery.grep(elements, function( elem, i ) {\n\t\treturn (jQuery.inArray( elem, qualifier ) >= 0) === keep;\n\t});\n};\n\njQuery.fn.extend({\n\tfind: function( selector ) {\n\t\tvar ret = this.pushStack( \"\", \"find\", selector ), length = 0;\n\n\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\tlength = ret.length;\n\t\t\tjQuery.find( selector, this[i], ret );\n\n\t\t\tif ( i > 0 ) {\n\t\t\t\t// Make sure that the results are unique\n\t\t\t\tfor ( var n = length; n < ret.length; n++ ) {\n\t\t\t\t\tfor ( var r = 0; r < length; r++ ) {\n\t\t\t\t\t\tif ( ret[r] === ret[n] ) {\n\t\t\t\t\t\t\tret.splice(n--, 1);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\thas: function( target ) {\n\t\tvar targets = jQuery( target );\n\t\treturn this.filter(function() {\n\t\t\tfor ( var i = 0, l = targets.length; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[i] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, false), \"not\", selector);\n\t},\n\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, true), \"filter\", selector );\n\t},\n\t\n\tis: function( selector ) {\n\t\treturn !!selector && jQuery.filter( selector, this ).length > 0;\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tif ( jQuery.isArray( selectors ) ) {\n\t\t\tvar ret = [], cur = this[0], match, matches = {}, selector;\n\n\t\t\tif ( cur && selectors.length ) {\n\t\t\t\tfor ( var i = 0, l = selectors.length; i < l; i++ ) {\n\t\t\t\t\tselector = selectors[i];\n\n\t\t\t\t\tif ( !matches[selector] ) {\n\t\t\t\t\t\tmatches[selector] = jQuery.expr.match.POS.test( selector ) ? \n\t\t\t\t\t\t\tjQuery( selector, context || this.context ) :\n\t\t\t\t\t\t\tselector;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\twhile ( cur && cur.ownerDocument && cur !== context ) {\n\t\t\t\t\tfor ( selector in matches ) {\n\t\t\t\t\t\tmatch = matches[selector];\n\n\t\t\t\t\t\tif ( match.jquery ? match.index(cur) > -1 : jQuery(cur).is(match) ) {\n\t\t\t\t\t\t\tret.push({ selector: selector, elem: cur });\n\t\t\t\t\t\t\tdelete matches[selector];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcur = cur.parentNode;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn ret;\n\t\t}\n\n\t\tvar pos = jQuery.expr.match.POS.test( selectors ) ? \n\t\t\tjQuery( selectors, context || this.context ) : null;\n\n\t\treturn this.map(function( i, cur ) {\n\t\t\twhile ( cur && cur.ownerDocument && cur !== context ) {\n\t\t\t\tif ( pos ? pos.index(cur) > -1 : jQuery(cur).is(selectors) ) {\n\t\t\t\t\treturn cur;\n\t\t\t\t}\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\treturn null;\n\t\t});\n\t},\n\t\n\t// Determine the position of an element within\n\t// the matched set of elements\n\tindex: function( elem ) {\n\t\tif ( !elem || typeof elem === \"string\" ) {\n\t\t\treturn jQuery.inArray( this[0],\n\t\t\t\t// If it receives a string, the selector is used\n\t\t\t\t// If it receives nothing, the siblings are used\n\t\t\t\telem ? jQuery( elem ) : this.parent().children() );\n\t\t}\n\t\t// Locate the position of the desired element\n\t\treturn jQuery.inArray(\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[0] : elem, this );\n\t},\n\n\tadd: function( selector, context ) {\n\t\tvar set = typeof selector === \"string\" ?\n\t\t\t\tjQuery( selector, context || this.context ) :\n\t\t\t\tjQuery.makeArray( selector ),\n\t\t\tall = jQuery.merge( this.get(), set );\n\n\t\treturn this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?\n\t\t\tall :\n\t\t\tjQuery.unique( all ) );\n\t},\n\n\tandSelf: function() {\n\t\treturn this.add( this.prevObject );\n\t}\n});\n\n// A painfully simple check to see if an element is disconnected\n// from a document (should be improved, where feasible).\nfunction isDisconnected( node ) {\n\treturn !node || !node.parentNode || node.parentNode.nodeType === 11;\n}\n\njQuery.each({\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn jQuery.dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn jQuery.nth( elem, 2, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn jQuery.nth( elem, 2, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn jQuery.sibling( elem.parentNode.firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn jQuery.sibling( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\treturn jQuery.nodeName( elem, \"iframe\" ) ?\n\t\t\telem.contentDocument || elem.contentWindow.document :\n\t\t\tjQuery.makeArray( elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar ret = jQuery.map( this, fn, until );\n\t\t\n\t\tif ( !runtil.test( name ) ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tret = jQuery.filter( selector, ret );\n\t\t}\n\n\t\tret = this.length > 1 ? jQuery.unique( ret ) : ret;\n\n\t\tif ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) {\n\t\t\tret = ret.reverse();\n\t\t}\n\n\t\treturn this.pushStack( ret, name, slice.call(arguments).join(\",\") );\n\t};\n});\n\njQuery.extend({\n\tfilter: function( expr, elems, not ) {\n\t\tif ( not ) {\n\t\t\texpr = \":not(\" + expr + \")\";\n\t\t}\n\n\t\treturn jQuery.find.matches(expr, elems);\n\t},\n\t\n\tdir: function( elem, dir, until ) {\n\t\tvar matched = [], cur = elem[dir];\n\t\twhile ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {\n\t\t\tif ( cur.nodeType === 1 ) {\n\t\t\t\tmatched.push( cur );\n\t\t\t}\n\t\t\tcur = cur[dir];\n\t\t}\n\t\treturn matched;\n\t},\n\n\tnth: function( cur, result, dir, elem ) {\n\t\tresult = result || 1;\n\t\tvar num = 0;\n\n\t\tfor ( ; cur; cur = cur[dir] ) {\n\t\t\tif ( cur.nodeType === 1 && ++num === result ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn cur;\n\t},\n\n\tsibling: function( n, elem ) {\n\t\tvar r = [];\n\n\t\tfor ( ; n; n = n.nextSibling ) {\n\t\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\t\tr.push( n );\n\t\t\t}\n\t\t}\n\n\t\treturn r;\n\t}\n});\nvar rinlinejQuery = / jQuery\\d+=\"(?:\\d+|null)\"/g,\n\trleadingWhitespace = /^\\s+/,\n\trxhtmlTag = /(<([\\w:]+)[^>]*?)\\/>/g,\n\trselfClosing = /^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,\n\trtagName = /<([\\w:]+)/,\n\trtbody = /<tbody/i,\n\trhtml = /<|&#?\\w+;/,\n\trnocache = /<script|<object|<embed|<option|<style/i,\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,  // checked=\"checked\" or checked (html5)\n\tfcloseTag = function( all, front, tag ) {\n\t\treturn rselfClosing.test( tag ) ?\n\t\t\tall :\n\t\t\tfront + \"></\" + tag + \">\";\n\t},\n\twrapMap = {\n\t\toption: [ 1, \"<select multiple='multiple'>\", \"</select>\" ],\n\t\tlegend: [ 1, \"<fieldset>\", \"</fieldset>\" ],\n\t\tthead: [ 1, \"<table>\", \"</table>\" ],\n\t\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\t\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\t\tcol: [ 2, \"<table><tbody></tbody><colgroup>\", \"</colgroup></table>\" ],\n\t\tarea: [ 1, \"<map>\", \"</map>\" ],\n\t\t_default: [ 0, \"\", \"\" ]\n\t};\n\nwrapMap.optgroup = wrapMap.option;\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// IE can't serialize <link> and <script> tags normally\nif ( !jQuery.support.htmlSerialize ) {\n\twrapMap._default = [ 1, \"div<div>\", \"</div>\" ];\n}\n\njQuery.fn.extend({\n\ttext: function( text ) {\n\t\tif ( jQuery.isFunction(text) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\tself.text( text.call(this, i, self.text()) );\n\t\t\t});\n\t\t}\n\n\t\tif ( typeof text !== \"object\" && text !== undefined ) {\n\t\t\treturn this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );\n\t\t}\n\n\t\treturn jQuery.text( this );\n\t},\n\n\twrapAll: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapAll( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\t// The elements to wrap the target around\n\t\t\tvar wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);\n\n\t\t\tif ( this[0].parentNode ) {\n\t\t\t\twrap.insertBefore( this[0] );\n\t\t\t}\n\n\t\t\twrap.map(function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstChild && elem.firstChild.nodeType === 1 ) {\n\t\t\t\t\telem = elem.firstChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t}).append(this);\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapInner( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tvar self = jQuery( this ), contents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t});\n\t},\n\n\twrap: function( html ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery( this ).wrapAll( html );\n\t\t});\n\t},\n\n\tunwrap: function() {\n\t\treturn this.parent().each(function() {\n\t\t\tif ( !jQuery.nodeName( this, \"body\" ) ) {\n\t\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t\t}\n\t\t}).end();\n\t},\n\n\tappend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.appendChild( elem );\n\t\t\t}\n\t\t});\n\t},\n\n\tprepend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 ) {\n\t\t\t\tthis.insertBefore( elem, this.firstChild );\n\t\t\t}\n\t\t});\n\t},\n\n\tbefore: function() {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t});\n\t\t} else if ( arguments.length ) {\n\t\t\tvar set = jQuery(arguments[0]);\n\t\t\tset.push.apply( set, this.toArray() );\n\t\t\treturn this.pushStack( set, \"before\", arguments );\n\t\t}\n\t},\n\n\tafter: function() {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t});\n\t\t} else if ( arguments.length ) {\n\t\t\tvar set = this.pushStack( this, \"after\", arguments );\n\t\t\tset.push.apply( set, jQuery(arguments[0]).toArray() );\n\t\t\treturn set;\n\t\t}\n\t},\n\t\n\t// keepData is for internal use only--do not document\n\tremove: function( selector, keepData ) {\n\t\tfor ( var i = 0, elem; (elem = this[i]) != null; i++ ) {\n\t\t\tif ( !selector || jQuery.filter( selector, [ elem ] ).length ) {\n\t\t\t\tif ( !keepData && elem.nodeType === 1 ) {\n\t\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t\t\tjQuery.cleanData( [ elem ] );\n\t\t\t\t}\n\n\t\t\t\tif ( elem.parentNode ) {\n\t\t\t\t\t elem.parentNode.removeChild( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn this;\n\t},\n\n\tempty: function() {\n\t\tfor ( var i = 0, elem; (elem = this[i]) != null; i++ ) {\n\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( elem.getElementsByTagName(\"*\") );\n\t\t\t}\n\n\t\t\t// Remove any remaining nodes\n\t\t\twhile ( elem.firstChild ) {\n\t\t\t\telem.removeChild( elem.firstChild );\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn this;\n\t},\n\n\tclone: function( events ) {\n\t\t// Do the clone\n\t\tvar ret = this.map(function() {\n\t\t\tif ( !jQuery.support.noCloneEvent && !jQuery.isXMLDoc(this) ) {\n\t\t\t\t// IE copies events bound via attachEvent when\n\t\t\t\t// using cloneNode. Calling detachEvent on the\n\t\t\t\t// clone will also remove the events from the orignal\n\t\t\t\t// In order to get around this, we use innerHTML.\n\t\t\t\t// Unfortunately, this means some modifications to\n\t\t\t\t// attributes in IE that are actually only stored\n\t\t\t\t// as properties will not be copied (such as the\n\t\t\t\t// the name attribute on an input).\n\t\t\t\tvar html = this.outerHTML, ownerDocument = this.ownerDocument;\n\t\t\t\tif ( !html ) {\n\t\t\t\t\tvar div = ownerDocument.createElement(\"div\");\n\t\t\t\t\tdiv.appendChild( this.cloneNode(true) );\n\t\t\t\t\thtml = div.innerHTML;\n\t\t\t\t}\n\n\t\t\t\treturn jQuery.clean([html.replace(rinlinejQuery, \"\")\n\t\t\t\t\t// Handle the case in IE 8 where action=/test/> self-closes a tag\n\t\t\t\t\t.replace(/=([^=\"'>\\s]+\\/)>/g, '=\"$1\">')\n\t\t\t\t\t.replace(rleadingWhitespace, \"\")], ownerDocument)[0];\n\t\t\t} else {\n\t\t\t\treturn this.cloneNode(true);\n\t\t\t}\n\t\t});\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( events === true ) {\n\t\t\tcloneCopyEvent( this, ret );\n\t\t\tcloneCopyEvent( this.find(\"*\"), ret.find(\"*\") );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn ret;\n\t},\n\n\thtml: function( value ) {\n\t\tif ( value === undefined ) {\n\t\t\treturn this[0] && this[0].nodeType === 1 ?\n\t\t\t\tthis[0].innerHTML.replace(rinlinejQuery, \"\") :\n\t\t\t\tnull;\n\n\t\t// See if we can take a shortcut and just use innerHTML\n\t\t} else if ( typeof value === \"string\" && !rnocache.test( value ) &&\n\t\t\t(jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value )) &&\n\t\t\t!wrapMap[ (rtagName.exec( value ) || [\"\", \"\"])[1].toLowerCase() ] ) {\n\n\t\t\tvalue = value.replace(rxhtmlTag, fcloseTag);\n\n\t\t\ttry {\n\t\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\tif ( this[i].nodeType === 1 ) {\n\t\t\t\t\t\tjQuery.cleanData( this[i].getElementsByTagName(\"*\") );\n\t\t\t\t\t\tthis[i].innerHTML = value;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t} catch(e) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\n\t\t} else if ( jQuery.isFunction( value ) ) {\n\t\t\tthis.each(function(i){\n\t\t\t\tvar self = jQuery(this), old = self.html();\n\t\t\t\tself.empty().append(function(){\n\t\t\t\t\treturn value.call( this, i, old );\n\t\t\t\t});\n\t\t\t});\n\n\t\t} else {\n\t\t\tthis.empty().append( value );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\treplaceWith: function( value ) {\n\t\tif ( this[0] && this[0].parentNode ) {\n\t\t\t// Make sure that the elements are removed from the DOM before they are inserted\n\t\t\t// this can help fix replacing a parent with child elements\n\t\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\t\treturn this.each(function(i) {\n\t\t\t\t\tvar self = jQuery(this), old = self.html();\n\t\t\t\t\tself.replaceWith( value.call( this, i, old ) );\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( typeof value !== \"string\" ) {\n\t\t\t\tvalue = jQuery(value).detach();\n\t\t\t}\n\n\t\t\treturn this.each(function() {\n\t\t\t\tvar next = this.nextSibling, parent = this.parentNode;\n\n\t\t\t\tjQuery(this).remove();\n\n\t\t\t\tif ( next ) {\n\t\t\t\t\tjQuery(next).before( value );\n\t\t\t\t} else {\n\t\t\t\t\tjQuery(parent).append( value );\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\treturn this.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), \"replaceWith\", value );\n\t\t}\n\t},\n\n\tdetach: function( selector ) {\n\t\treturn this.remove( selector, true );\n\t},\n\n\tdomManip: function( args, table, callback ) {\n\t\tvar results, first, value = args[0], scripts = [], fragment, parent;\n\n\t\t// We can't cloneNode fragments that contain checked, in WebKit\n\t\tif ( !jQuery.support.checkClone && arguments.length === 3 && typeof value === \"string\" && rchecked.test( value ) ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery(this).domManip( args, table, callback, true );\n\t\t\t});\n\t\t}\n\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\targs[0] = value.call(this, i, table ? self.html() : undefined);\n\t\t\t\tself.domManip( args, table, callback );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\tparent = value && value.parentNode;\n\n\t\t\t// If we're in a fragment, just use that instead of building a new one\n\t\t\tif ( jQuery.support.parentNode && parent && parent.nodeType === 11 && parent.childNodes.length === this.length ) {\n\t\t\t\tresults = { fragment: parent };\n\n\t\t\t} else {\n\t\t\t\tresults = buildFragment( args, this, scripts );\n\t\t\t}\n\t\t\t\n\t\t\tfragment = results.fragment;\n\t\t\t\n\t\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\t\tfirst = fragment = fragment.firstChild;\n\t\t\t} else {\n\t\t\t\tfirst = fragment.firstChild;\n\t\t\t}\n\n\t\t\tif ( first ) {\n\t\t\t\ttable = table && jQuery.nodeName( first, \"tr\" );\n\n\t\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\t\tcallback.call(\n\t\t\t\t\t\ttable ?\n\t\t\t\t\t\t\troot(this[i], first) :\n\t\t\t\t\t\t\tthis[i],\n\t\t\t\t\t\ti > 0 || results.cacheable || this.length > 1  ?\n\t\t\t\t\t\t\tfragment.cloneNode(true) :\n\t\t\t\t\t\t\tfragment\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( scripts.length ) {\n\t\t\t\tjQuery.each( scripts, evalScript );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\n\t\tfunction root( elem, cur ) {\n\t\t\treturn jQuery.nodeName(elem, \"table\") ?\n\t\t\t\t(elem.getElementsByTagName(\"tbody\")[0] ||\n\t\t\t\telem.appendChild(elem.ownerDocument.createElement(\"tbody\"))) :\n\t\t\t\telem;\n\t\t}\n\t}\n});\n\nfunction cloneCopyEvent(orig, ret) {\n\tvar i = 0;\n\n\tret.each(function() {\n\t\tif ( this.nodeName !== (orig[i] && orig[i].nodeName) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar oldData = jQuery.data( orig[i++] ), curData = jQuery.data( this, oldData ), events = oldData && oldData.events;\n\n\t\tif ( events ) {\n\t\t\tdelete curData.handle;\n\t\t\tcurData.events = {};\n\n\t\t\tfor ( var type in events ) {\n\t\t\t\tfor ( var handler in events[ type ] ) {\n\t\t\t\t\tjQuery.event.add( this, type, events[ type ][ handler ], events[ type ][ handler ].data );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction buildFragment( args, nodes, scripts ) {\n\tvar fragment, cacheable, cacheresults,\n\t\tdoc = (nodes && nodes[0] ? nodes[0].ownerDocument || nodes[0] : document);\n\n\t// Only cache \"small\" (1/2 KB) strings that are associated with the main document\n\t// Cloning options loses the selected state, so don't cache them\n\t// IE 6 doesn't like it when you put <object> or <embed> elements in a fragment\n\t// Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache\n\tif ( args.length === 1 && typeof args[0] === \"string\" && args[0].length < 512 && doc === document &&\n\t\t!rnocache.test( args[0] ) && (jQuery.support.checkClone || !rchecked.test( args[0] )) ) {\n\n\t\tcacheable = true;\n\t\tcacheresults = jQuery.fragments[ args[0] ];\n\t\tif ( cacheresults ) {\n\t\t\tif ( cacheresults !== 1 ) {\n\t\t\t\tfragment = cacheresults;\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( !fragment ) {\n\t\tfragment = doc.createDocumentFragment();\n\t\tjQuery.clean( args, doc, fragment, scripts );\n\t}\n\n\tif ( cacheable ) {\n\t\tjQuery.fragments[ args[0] ] = cacheresults ? fragment : 1;\n\t}\n\n\treturn { fragment: fragment, cacheable: cacheable };\n}\n\njQuery.fragments = {};\n\njQuery.each({\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar ret = [], insert = jQuery( selector ),\n\t\t\tparent = this.length === 1 && this[0].parentNode;\n\t\t\n\t\tif ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) {\n\t\t\tinsert[ original ]( this[0] );\n\t\t\treturn this;\n\t\t\t\n\t\t} else {\n\t\t\tfor ( var i = 0, l = insert.length; i < l; i++ ) {\n\t\t\t\tvar elems = (i > 0 ? this.clone(true) : this).get();\n\t\t\t\tjQuery.fn[ original ].apply( jQuery(insert[i]), elems );\n\t\t\t\tret = ret.concat( elems );\n\t\t\t}\n\t\t\n\t\t\treturn this.pushStack( ret, name, insert.selector );\n\t\t}\n\t};\n});\n\njQuery.extend({\n\tclean: function( elems, context, fragment, scripts ) {\n\t\tcontext = context || document;\n\n\t\t// !context.createElement fails in IE with an error but returns typeof 'object'\n\t\tif ( typeof context.createElement === \"undefined\" ) {\n\t\t\tcontext = context.ownerDocument || context[0] && context[0].ownerDocument || document;\n\t\t}\n\n\t\tvar ret = [];\n\n\t\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( typeof elem === \"number\" ) {\n\t\t\t\telem += \"\";\n\t\t\t}\n\n\t\t\tif ( !elem ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Convert html string into DOM nodes\n\t\t\tif ( typeof elem === \"string\" && !rhtml.test( elem ) ) {\n\t\t\t\telem = context.createTextNode( elem );\n\n\t\t\t} else if ( typeof elem === \"string\" ) {\n\t\t\t\t// Fix \"XHTML\"-style tags in all browsers\n\t\t\t\telem = elem.replace(rxhtmlTag, fcloseTag);\n\n\t\t\t\t// Trim whitespace, otherwise indexOf won't work as expected\n\t\t\t\tvar tag = (rtagName.exec( elem ) || [\"\", \"\"])[1].toLowerCase(),\n\t\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default,\n\t\t\t\t\tdepth = wrap[0],\n\t\t\t\t\tdiv = context.createElement(\"div\");\n\n\t\t\t\t// Go to html and back, then peel off extra wrappers\n\t\t\t\tdiv.innerHTML = wrap[1] + elem + wrap[2];\n\n\t\t\t\t// Move to the right depth\n\t\t\t\twhile ( depth-- ) {\n\t\t\t\t\tdiv = div.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Remove IE's autoinserted <tbody> from table fragments\n\t\t\t\tif ( !jQuery.support.tbody ) {\n\n\t\t\t\t\t// String was a <table>, *may* have spurious <tbody>\n\t\t\t\t\tvar hasBody = rtbody.test(elem),\n\t\t\t\t\t\ttbody = tag === \"table\" && !hasBody ?\n\t\t\t\t\t\t\tdiv.firstChild && div.firstChild.childNodes :\n\n\t\t\t\t\t\t\t// String was a bare <thead> or <tfoot>\n\t\t\t\t\t\t\twrap[1] === \"<table>\" && !hasBody ?\n\t\t\t\t\t\t\t\tdiv.childNodes :\n\t\t\t\t\t\t\t\t[];\n\n\t\t\t\t\tfor ( var j = tbody.length - 1; j >= 0 ; --j ) {\n\t\t\t\t\t\tif ( jQuery.nodeName( tbody[ j ], \"tbody\" ) && !tbody[ j ].childNodes.length ) {\n\t\t\t\t\t\t\ttbody[ j ].parentNode.removeChild( tbody[ j ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// IE completely kills leading whitespace when innerHTML is used\n\t\t\t\tif ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {\n\t\t\t\t\tdiv.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );\n\t\t\t\t}\n\n\t\t\t\telem = div.childNodes;\n\t\t\t}\n\n\t\t\tif ( elem.nodeType ) {\n\t\t\t\tret.push( elem );\n\t\t\t} else {\n\t\t\t\tret = jQuery.merge( ret, elem );\n\t\t\t}\n\t\t}\n\n\t\tif ( fragment ) {\n\t\t\tfor ( var i = 0; ret[i]; i++ ) {\n\t\t\t\tif ( scripts && jQuery.nodeName( ret[i], \"script\" ) && (!ret[i].type || ret[i].type.toLowerCase() === \"text/javascript\") ) {\n\t\t\t\t\tscripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] );\n\t\t\t\t\n\t\t\t\t} else {\n\t\t\t\t\tif ( ret[i].nodeType === 1 ) {\n\t\t\t\t\t\tret.splice.apply( ret, [i + 1, 0].concat(jQuery.makeArray(ret[i].getElementsByTagName(\"script\"))) );\n\t\t\t\t\t}\n\t\t\t\t\tfragment.appendChild( ret[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\t\n\tcleanData: function( elems ) {\n\t\tvar data, id, cache = jQuery.cache,\n\t\t\tspecial = jQuery.event.special,\n\t\t\tdeleteExpando = jQuery.support.deleteExpando;\n\t\t\n\t\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n\t\t\tid = elem[ jQuery.expando ];\n\t\t\t\n\t\t\tif ( id ) {\n\t\t\t\tdata = cache[ id ];\n\t\t\t\t\n\t\t\t\tif ( data.events ) {\n\t\t\t\t\tfor ( var type in data.events ) {\n\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tremoveEvent( elem, type, data.handle );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif ( deleteExpando ) {\n\t\t\t\t\tdelete elem[ jQuery.expando ];\n\n\t\t\t\t} else if ( elem.removeAttribute ) {\n\t\t\t\t\telem.removeAttribute( jQuery.expando );\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tdelete cache[ id ];\n\t\t\t}\n\t\t}\n\t}\n});\n// exclude the following css properties to add px\nvar rexclude = /z-?index|font-?weight|opacity|zoom|line-?height/i,\n\tralpha = /alpha\\([^)]*\\)/,\n\tropacity = /opacity=([^)]*)/,\n\trfloat = /float/i,\n\trdashAlpha = /-([a-z])/ig,\n\trupper = /([A-Z])/g,\n\trnumpx = /^-?\\d+(?:px)?$/i,\n\trnum = /^-?\\d/,\n\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display:\"block\" },\n\tcssWidth = [ \"Left\", \"Right\" ],\n\tcssHeight = [ \"Top\", \"Bottom\" ],\n\n\t// cache check for defaultView.getComputedStyle\n\tgetComputedStyle = document.defaultView && document.defaultView.getComputedStyle,\n\t// normalize float css property\n\tstyleFloat = jQuery.support.cssFloat ? \"cssFloat\" : \"styleFloat\",\n\tfcamelCase = function( all, letter ) {\n\t\treturn letter.toUpperCase();\n\t};\n\njQuery.fn.css = function( name, value ) {\n\treturn access( this, name, value, true, function( elem, name, value ) {\n\t\tif ( value === undefined ) {\n\t\t\treturn jQuery.curCSS( elem, name );\n\t\t}\n\t\t\n\t\tif ( typeof value === \"number\" && !rexclude.test(name) ) {\n\t\t\tvalue += \"px\";\n\t\t}\n\n\t\tjQuery.style( elem, name, value );\n\t});\n};\n\njQuery.extend({\n\tstyle: function( elem, name, value ) {\n\t\t// don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// ignore negative width and height values #1599\n\t\tif ( (name === \"width\" || name === \"height\") && parseFloat(value) < 0 ) {\n\t\t\tvalue = undefined;\n\t\t}\n\n\t\tvar style = elem.style || elem, set = value !== undefined;\n\n\t\t// IE uses filters for opacity\n\t\tif ( !jQuery.support.opacity && name === \"opacity\" ) {\n\t\t\tif ( set ) {\n\t\t\t\t// IE has trouble with opacity if it does not have layout\n\t\t\t\t// Force it by setting the zoom level\n\t\t\t\tstyle.zoom = 1;\n\n\t\t\t\t// Set the alpha filter to set the opacity\n\t\t\t\tvar opacity = parseInt( value, 10 ) + \"\" === \"NaN\" ? \"\" : \"alpha(opacity=\" + value * 100 + \")\";\n\t\t\t\tvar filter = style.filter || jQuery.curCSS( elem, \"filter\" ) || \"\";\n\t\t\t\tstyle.filter = ralpha.test(filter) ? filter.replace(ralpha, opacity) : opacity;\n\t\t\t}\n\n\t\t\treturn style.filter && style.filter.indexOf(\"opacity=\") >= 0 ?\n\t\t\t\t(parseFloat( ropacity.exec(style.filter)[1] ) / 100) + \"\":\n\t\t\t\t\"\";\n\t\t}\n\n\t\t// Make sure we're using the right name for getting the float value\n\t\tif ( rfloat.test( name ) ) {\n\t\t\tname = styleFloat;\n\t\t}\n\n\t\tname = name.replace(rdashAlpha, fcamelCase);\n\n\t\tif ( set ) {\n\t\t\tstyle[ name ] = value;\n\t\t}\n\n\t\treturn style[ name ];\n\t},\n\n\tcss: function( elem, name, force, extra ) {\n\t\tif ( name === \"width\" || name === \"height\" ) {\n\t\t\tvar val, props = cssShow, which = name === \"width\" ? cssWidth : cssHeight;\n\n\t\t\tfunction getWH() {\n\t\t\t\tval = name === \"width\" ? elem.offsetWidth : elem.offsetHeight;\n\n\t\t\t\tif ( extra === \"border\" ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tjQuery.each( which, function() {\n\t\t\t\t\tif ( !extra ) {\n\t\t\t\t\t\tval -= parseFloat(jQuery.curCSS( elem, \"padding\" + this, true)) || 0;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( extra === \"margin\" ) {\n\t\t\t\t\t\tval += parseFloat(jQuery.curCSS( elem, \"margin\" + this, true)) || 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tval -= parseFloat(jQuery.curCSS( elem, \"border\" + this + \"Width\", true)) || 0;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( elem.offsetWidth !== 0 ) {\n\t\t\t\tgetWH();\n\t\t\t} else {\n\t\t\t\tjQuery.swap( elem, props, getWH );\n\t\t\t}\n\n\t\t\treturn Math.max(0, Math.round(val));\n\t\t}\n\n\t\treturn jQuery.curCSS( elem, name, force );\n\t},\n\n\tcurCSS: function( elem, name, force ) {\n\t\tvar ret, style = elem.style, filter;\n\n\t\t// IE uses filters for opacity\n\t\tif ( !jQuery.support.opacity && name === \"opacity\" && elem.currentStyle ) {\n\t\t\tret = ropacity.test(elem.currentStyle.filter || \"\") ?\n\t\t\t\t(parseFloat(RegExp.$1) / 100) + \"\" :\n\t\t\t\t\"\";\n\n\t\t\treturn ret === \"\" ?\n\t\t\t\t\"1\" :\n\t\t\t\tret;\n\t\t}\n\n\t\t// Make sure we're using the right name for getting the float value\n\t\tif ( rfloat.test( name ) ) {\n\t\t\tname = styleFloat;\n\t\t}\n\n\t\tif ( !force && style && style[ name ] ) {\n\t\t\tret = style[ name ];\n\n\t\t} else if ( getComputedStyle ) {\n\n\t\t\t// Only \"float\" is needed here\n\t\t\tif ( rfloat.test( name ) ) {\n\t\t\t\tname = \"float\";\n\t\t\t}\n\n\t\t\tname = name.replace( rupper, \"-$1\" ).toLowerCase();\n\n\t\t\tvar defaultView = elem.ownerDocument.defaultView;\n\n\t\t\tif ( !defaultView ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tvar computedStyle = defaultView.getComputedStyle( elem, null );\n\n\t\t\tif ( computedStyle ) {\n\t\t\t\tret = computedStyle.getPropertyValue( name );\n\t\t\t}\n\n\t\t\t// We should always get a number back from opacity\n\t\t\tif ( name === \"opacity\" && ret === \"\" ) {\n\t\t\t\tret = \"1\";\n\t\t\t}\n\n\t\t} else if ( elem.currentStyle ) {\n\t\t\tvar camelCase = name.replace(rdashAlpha, fcamelCase);\n\n\t\t\tret = elem.currentStyle[ name ] || elem.currentStyle[ camelCase ];\n\n\t\t\t// From the awesome hack by Dean Edwards\n\t\t\t// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n\n\t\t\t// If we're not dealing with a regular pixel number\n\t\t\t// but a number that has a weird ending, we need to convert it to pixels\n\t\t\tif ( !rnumpx.test( ret ) && rnum.test( ret ) ) {\n\t\t\t\t// Remember the original values\n\t\t\t\tvar left = style.left, rsLeft = elem.runtimeStyle.left;\n\n\t\t\t\t// Put in the new values to get a computed value out\n\t\t\t\telem.runtimeStyle.left = elem.currentStyle.left;\n\t\t\t\tstyle.left = camelCase === \"fontSize\" ? \"1em\" : (ret || 0);\n\t\t\t\tret = style.pixelLeft + \"px\";\n\n\t\t\t\t// Revert the changed values\n\t\t\t\tstyle.left = left;\n\t\t\t\telem.runtimeStyle.left = rsLeft;\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\t// A method for quickly swapping in/out CSS properties to get correct calculations\n\tswap: function( elem, options, callback ) {\n\t\tvar old = {};\n\n\t\t// Remember the old values, and insert the new ones\n\t\tfor ( var name in options ) {\n\t\t\told[ name ] = elem.style[ name ];\n\t\t\telem.style[ name ] = options[ name ];\n\t\t}\n\n\t\tcallback.call( elem );\n\n\t\t// Revert the old values\n\t\tfor ( var name in options ) {\n\t\t\telem.style[ name ] = old[ name ];\n\t\t}\n\t}\n});\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.hidden = function( elem ) {\n\t\tvar width = elem.offsetWidth, height = elem.offsetHeight,\n\t\t\tskip = elem.nodeName.toLowerCase() === \"tr\";\n\n\t\treturn width === 0 && height === 0 && !skip ?\n\t\t\ttrue :\n\t\t\twidth > 0 && height > 0 && !skip ?\n\t\t\t\tfalse :\n\t\t\t\tjQuery.curCSS(elem, \"display\") === \"none\";\n\t};\n\n\tjQuery.expr.filters.visible = function( elem ) {\n\t\treturn !jQuery.expr.filters.hidden( elem );\n\t};\n}\nvar jsc = now(),\n\trscript = /<script(.|\\s)*?\\/script>/gi,\n\trselectTextarea = /select|textarea/i,\n\trinput = /color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,\n\tjsre = /=\\?(&|$)/,\n\trquery = /\\?/,\n\trts = /(\\?|&)_=.*?(&|$)/,\n\trurl = /^(\\w+:)?\\/\\/([^\\/?#]+)/,\n\tr20 = /%20/g,\n\n\t// Keep a copy of the old load method\n\t_load = jQuery.fn.load;\n\njQuery.fn.extend({\n\tload: function( url, params, callback ) {\n\t\tif ( typeof url !== \"string\" ) {\n\t\t\treturn _load.call( this, url );\n\n\t\t// Don't do a request if no elements are being requested\n\t\t} else if ( !this.length ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tvar off = url.indexOf(\" \");\n\t\tif ( off >= 0 ) {\n\t\t\tvar selector = url.slice(off, url.length);\n\t\t\turl = url.slice(0, off);\n\t\t}\n\n\t\t// Default to a GET request\n\t\tvar type = \"GET\";\n\n\t\t// If the second parameter was provided\n\t\tif ( params ) {\n\t\t\t// If it's a function\n\t\t\tif ( jQuery.isFunction( params ) ) {\n\t\t\t\t// We assume that it's the callback\n\t\t\t\tcallback = params;\n\t\t\t\tparams = null;\n\n\t\t\t// Otherwise, build a param string\n\t\t\t} else if ( typeof params === \"object\" ) {\n\t\t\t\tparams = jQuery.param( params, jQuery.ajaxSettings.traditional );\n\t\t\t\ttype = \"POST\";\n\t\t\t}\n\t\t}\n\n\t\tvar self = this;\n\n\t\t// Request the remote document\n\t\tjQuery.ajax({\n\t\t\turl: url,\n\t\t\ttype: type,\n\t\t\tdataType: \"html\",\n\t\t\tdata: params,\n\t\t\tcomplete: function( res, status ) {\n\t\t\t\t// If successful, inject the HTML into all the matched elements\n\t\t\t\tif ( status === \"success\" || status === \"notmodified\" ) {\n\t\t\t\t\t// See if a selector was specified\n\t\t\t\t\tself.html( selector ?\n\t\t\t\t\t\t// Create a dummy div to hold the results\n\t\t\t\t\t\tjQuery(\"<div />\")\n\t\t\t\t\t\t\t// inject the contents of the document in, removing the scripts\n\t\t\t\t\t\t\t// to avoid any 'Permission Denied' errors in IE\n\t\t\t\t\t\t\t.append(res.responseText.replace(rscript, \"\"))\n\n\t\t\t\t\t\t\t// Locate the specified elements\n\t\t\t\t\t\t\t.find(selector) :\n\n\t\t\t\t\t\t// If not, just inject the full result\n\t\t\t\t\t\tres.responseText );\n\t\t\t\t}\n\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tself.each( callback, [res.responseText, status, res] );\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn this;\n\t},\n\n\tserialize: function() {\n\t\treturn jQuery.param(this.serializeArray());\n\t},\n\tserializeArray: function() {\n\t\treturn this.map(function() {\n\t\t\treturn this.elements ? jQuery.makeArray(this.elements) : this;\n\t\t})\n\t\t.filter(function() {\n\t\t\treturn this.name && !this.disabled &&\n\t\t\t\t(this.checked || rselectTextarea.test(this.nodeName) ||\n\t\t\t\t\trinput.test(this.type));\n\t\t})\n\t\t.map(function( i, elem ) {\n\t\t\tvar val = jQuery(this).val();\n\n\t\t\treturn val == null ?\n\t\t\t\tnull :\n\t\t\t\tjQuery.isArray(val) ?\n\t\t\t\t\tjQuery.map( val, function( val, i ) {\n\t\t\t\t\t\treturn { name: elem.name, value: val };\n\t\t\t\t\t}) :\n\t\t\t\t\t{ name: elem.name, value: val };\n\t\t}).get();\n\t}\n});\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( \"ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend\".split(\" \"), function( i, o ) {\n\tjQuery.fn[o] = function( f ) {\n\t\treturn this.bind(o, f);\n\t};\n});\n\njQuery.extend({\n\n\tget: function( url, data, callback, type ) {\n\t\t// shift arguments if data argument was omited\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = null;\n\t\t}\n\n\t\treturn jQuery.ajax({\n\t\t\ttype: \"GET\",\n\t\t\turl: url,\n\t\t\tdata: data,\n\t\t\tsuccess: callback,\n\t\t\tdataType: type\n\t\t});\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get(url, null, callback, \"script\");\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get(url, data, callback, \"json\");\n\t},\n\n\tpost: function( url, data, callback, type ) {\n\t\t// shift arguments if data argument was omited\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = {};\n\t\t}\n\n\t\treturn jQuery.ajax({\n\t\t\ttype: \"POST\",\n\t\t\turl: url,\n\t\t\tdata: data,\n\t\t\tsuccess: callback,\n\t\t\tdataType: type\n\t\t});\n\t},\n\n\tajaxSetup: function( settings ) {\n\t\tjQuery.extend( jQuery.ajaxSettings, settings );\n\t},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\tglobal: true,\n\t\ttype: \"GET\",\n\t\tcontentType: \"application/x-www-form-urlencoded\",\n\t\tprocessData: true,\n\t\tasync: true,\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\ttraditional: false,\n\t\t*/\n\t\t// Create the request object; Microsoft failed to properly\n\t\t// implement the XMLHttpRequest in IE7 (can't request local files),\n\t\t// so we use the ActiveXObject when it is available\n\t\t// This function can be overriden by calling jQuery.ajaxSetup\n\t\txhr: window.XMLHttpRequest && (window.location.protocol !== \"file:\" || !window.ActiveXObject) ?\n\t\t\tfunction() {\n\t\t\t\treturn new window.XMLHttpRequest();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\ttry {\n\t\t\t\t\treturn new window.ActiveXObject(\"Microsoft.XMLHTTP\");\n\t\t\t\t} catch(e) {}\n\t\t\t},\n\t\taccepts: {\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\thtml: \"text/html\",\n\t\t\tscript: \"text/javascript, application/javascript\",\n\t\t\tjson: \"application/json, text/javascript\",\n\t\t\ttext: \"text/plain\",\n\t\t\t_default: \"*/*\"\n\t\t}\n\t},\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajax: function( origSettings ) {\n\t\tvar s = jQuery.extend(true, {}, jQuery.ajaxSettings, origSettings);\n\t\t\n\t\tvar jsonp, status, data,\n\t\t\tcallbackContext = origSettings && origSettings.context || s,\n\t\t\ttype = s.type.toUpperCase();\n\n\t\t// convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Handle JSONP Parameter Callbacks\n\t\tif ( s.dataType === \"jsonp\" ) {\n\t\t\tif ( type === \"GET\" ) {\n\t\t\t\tif ( !jsre.test( s.url ) ) {\n\t\t\t\t\ts.url += (rquery.test( s.url ) ? \"&\" : \"?\") + (s.jsonp || \"callback\") + \"=?\";\n\t\t\t\t}\n\t\t\t} else if ( !s.data || !jsre.test(s.data) ) {\n\t\t\t\ts.data = (s.data ? s.data + \"&\" : \"\") + (s.jsonp || \"callback\") + \"=?\";\n\t\t\t}\n\t\t\ts.dataType = \"json\";\n\t\t}\n\n\t\t// Build temporary JSONP function\n\t\tif ( s.dataType === \"json\" && (s.data && jsre.test(s.data) || jsre.test(s.url)) ) {\n\t\t\tjsonp = s.jsonpCallback || (\"jsonp\" + jsc++);\n\n\t\t\t// Replace the =? sequence both in the query string and the data\n\t\t\tif ( s.data ) {\n\t\t\t\ts.data = (s.data + \"\").replace(jsre, \"=\" + jsonp + \"$1\");\n\t\t\t}\n\n\t\t\ts.url = s.url.replace(jsre, \"=\" + jsonp + \"$1\");\n\n\t\t\t// We need to make sure\n\t\t\t// that a JSONP style response is executed properly\n\t\t\ts.dataType = \"script\";\n\n\t\t\t// Handle JSONP-style loading\n\t\t\twindow[ jsonp ] = window[ jsonp ] || function( tmp ) {\n\t\t\t\tdata = tmp;\n\t\t\t\tsuccess();\n\t\t\t\tcomplete();\n\t\t\t\t// Garbage collect\n\t\t\t\twindow[ jsonp ] = undefined;\n\n\t\t\t\ttry {\n\t\t\t\t\tdelete window[ jsonp ];\n\t\t\t\t} catch(e) {}\n\n\t\t\t\tif ( head ) {\n\t\t\t\t\thead.removeChild( script );\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\tif ( s.dataType === \"script\" && s.cache === null ) {\n\t\t\ts.cache = false;\n\t\t}\n\n\t\tif ( s.cache === false && type === \"GET\" ) {\n\t\t\tvar ts = now();\n\n\t\t\t// try replacing _= if it is there\n\t\t\tvar ret = s.url.replace(rts, \"$1_=\" + ts + \"$2\");\n\n\t\t\t// if nothing was replaced, add timestamp to the end\n\t\t\ts.url = ret + ((ret === s.url) ? (rquery.test(s.url) ? \"&\" : \"?\") + \"_=\" + ts : \"\");\n\t\t}\n\n\t\t// If data is available, append data to url for get requests\n\t\tif ( s.data && type === \"GET\" ) {\n\t\t\ts.url += (rquery.test(s.url) ? \"&\" : \"?\") + s.data;\n\t\t}\n\n\t\t// Watch for a new set of requests\n\t\tif ( s.global && ! jQuery.active++ ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Matches an absolute URL, and saves the domain\n\t\tvar parts = rurl.exec( s.url ),\n\t\t\tremote = parts && (parts[1] && parts[1] !== location.protocol || parts[2] !== location.host);\n\n\t\t// If we're requesting a remote document\n\t\t// and trying to load JSON or Script with a GET\n\t\tif ( s.dataType === \"script\" && type === \"GET\" && remote ) {\n\t\t\tvar head = document.getElementsByTagName(\"head\")[0] || document.documentElement;\n\t\t\tvar script = document.createElement(\"script\");\n\t\t\tscript.src = s.url;\n\t\t\tif ( s.scriptCharset ) {\n\t\t\t\tscript.charset = s.scriptCharset;\n\t\t\t}\n\n\t\t\t// Handle Script loading\n\t\t\tif ( !jsonp ) {\n\t\t\t\tvar done = false;\n\n\t\t\t\t// Attach handlers for all browsers\n\t\t\t\tscript.onload = script.onreadystatechange = function() {\n\t\t\t\t\tif ( !done && (!this.readyState ||\n\t\t\t\t\t\t\tthis.readyState === \"loaded\" || this.readyState === \"complete\") ) {\n\t\t\t\t\t\tdone = true;\n\t\t\t\t\t\tsuccess();\n\t\t\t\t\t\tcomplete();\n\n\t\t\t\t\t\t// Handle memory leak in IE\n\t\t\t\t\t\tscript.onload = script.onreadystatechange = null;\n\t\t\t\t\t\tif ( head && script.parentNode ) {\n\t\t\t\t\t\t\thead.removeChild( script );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// Use insertBefore instead of appendChild  to circumvent an IE6 bug.\n\t\t\t// This arises when a base node is used (#2709 and #4378).\n\t\t\thead.insertBefore( script, head.firstChild );\n\n\t\t\t// We handle everything using the script element injection\n\t\t\treturn undefined;\n\t\t}\n\n\t\tvar requestDone = false;\n\n\t\t// Create the request object\n\t\tvar xhr = s.xhr();\n\n\t\tif ( !xhr ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Open the socket\n\t\t// Passing null username, generates a login popup on Opera (#2865)\n\t\tif ( s.username ) {\n\t\t\txhr.open(type, s.url, s.async, s.username, s.password);\n\t\t} else {\n\t\t\txhr.open(type, s.url, s.async);\n\t\t}\n\n\t\t// Need an extra try/catch for cross domain requests in Firefox 3\n\t\ttry {\n\t\t\t// Set the correct header, if data is being sent\n\t\t\tif ( s.data || origSettings && origSettings.contentType ) {\n\t\t\t\txhr.setRequestHeader(\"Content-Type\", s.contentType);\n\t\t\t}\n\n\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\tif ( s.ifModified ) {\n\t\t\t\tif ( jQuery.lastModified[s.url] ) {\n\t\t\t\t\txhr.setRequestHeader(\"If-Modified-Since\", jQuery.lastModified[s.url]);\n\t\t\t\t}\n\n\t\t\t\tif ( jQuery.etag[s.url] ) {\n\t\t\t\t\txhr.setRequestHeader(\"If-None-Match\", jQuery.etag[s.url]);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set header so the called script knows that it's an XMLHttpRequest\n\t\t\t// Only send the header if it's not a remote XHR\n\t\t\tif ( !remote ) {\n\t\t\t\txhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n\t\t\t}\n\n\t\t\t// Set the Accepts header for the server, depending on the dataType\n\t\t\txhr.setRequestHeader(\"Accept\", s.dataType && s.accepts[ s.dataType ] ?\n\t\t\t\ts.accepts[ s.dataType ] + \", */*\" :\n\t\t\t\ts.accepts._default );\n\t\t} catch(e) {}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend && s.beforeSend.call(callbackContext, xhr, s) === false ) {\n\t\t\t// Handle the global AJAX counter\n\t\t\tif ( s.global && ! --jQuery.active ) {\n\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t}\n\n\t\t\t// close opended socket\n\t\t\txhr.abort();\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( s.global ) {\n\t\t\ttrigger(\"ajaxSend\", [xhr, s]);\n\t\t}\n\n\t\t// Wait for a response to come back\n\t\tvar onreadystatechange = xhr.onreadystatechange = function( isTimeout ) {\n\t\t\t// The request was aborted\n\t\t\tif ( !xhr || xhr.readyState === 0 || isTimeout === \"abort\" ) {\n\t\t\t\t// Opera doesn't call onreadystatechange before this point\n\t\t\t\t// so we simulate the call\n\t\t\t\tif ( !requestDone ) {\n\t\t\t\t\tcomplete();\n\t\t\t\t}\n\n\t\t\t\trequestDone = true;\n\t\t\t\tif ( xhr ) {\n\t\t\t\t\txhr.onreadystatechange = jQuery.noop;\n\t\t\t\t}\n\n\t\t\t// The transfer is complete and the data is available, or the request timed out\n\t\t\t} else if ( !requestDone && xhr && (xhr.readyState === 4 || isTimeout === \"timeout\") ) {\n\t\t\t\trequestDone = true;\n\t\t\t\txhr.onreadystatechange = jQuery.noop;\n\n\t\t\t\tstatus = isTimeout === \"timeout\" ?\n\t\t\t\t\t\"timeout\" :\n\t\t\t\t\t!jQuery.httpSuccess( xhr ) ?\n\t\t\t\t\t\t\"error\" :\n\t\t\t\t\t\ts.ifModified && jQuery.httpNotModified( xhr, s.url ) ?\n\t\t\t\t\t\t\t\"notmodified\" :\n\t\t\t\t\t\t\t\"success\";\n\n\t\t\t\tvar errMsg;\n\n\t\t\t\tif ( status === \"success\" ) {\n\t\t\t\t\t// Watch for, and catch, XML document parse errors\n\t\t\t\t\ttry {\n\t\t\t\t\t\t// process the data (runs the xml through httpData regardless of callback)\n\t\t\t\t\t\tdata = jQuery.httpData( xhr, s.dataType, s );\n\t\t\t\t\t} catch(err) {\n\t\t\t\t\t\tstatus = \"parsererror\";\n\t\t\t\t\t\terrMsg = err;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Make sure that the request was successful or notmodified\n\t\t\t\tif ( status === \"success\" || status === \"notmodified\" ) {\n\t\t\t\t\t// JSONP handles its own success callback\n\t\t\t\t\tif ( !jsonp ) {\n\t\t\t\t\t\tsuccess();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tjQuery.handleError(s, xhr, status, errMsg);\n\t\t\t\t}\n\n\t\t\t\t// Fire the complete handlers\n\t\t\t\tcomplete();\n\n\t\t\t\tif ( isTimeout === \"timeout\" ) {\n\t\t\t\t\txhr.abort();\n\t\t\t\t}\n\n\t\t\t\t// Stop memory leaks\n\t\t\t\tif ( s.async ) {\n\t\t\t\t\txhr = null;\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t// Override the abort handler, if we can (IE doesn't allow it, but that's OK)\n\t\t// Opera doesn't fire onreadystatechange at all on abort\n\t\ttry {\n\t\t\tvar oldAbort = xhr.abort;\n\t\t\txhr.abort = function() {\n\t\t\t\tif ( xhr ) {\n\t\t\t\t\toldAbort.call( xhr );\n\t\t\t\t}\n\n\t\t\t\tonreadystatechange( \"abort\" );\n\t\t\t};\n\t\t} catch(e) { }\n\n\t\t// Timeout checker\n\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\tsetTimeout(function() {\n\t\t\t\t// Check to see if the request is still happening\n\t\t\t\tif ( xhr && !requestDone ) {\n\t\t\t\t\tonreadystatechange( \"timeout\" );\n\t\t\t\t}\n\t\t\t}, s.timeout);\n\t\t}\n\n\t\t// Send the data\n\t\ttry {\n\t\t\txhr.send( type === \"POST\" || type === \"PUT\" || type === \"DELETE\" ? s.data : null );\n\t\t} catch(e) {\n\t\t\tjQuery.handleError(s, xhr, null, e);\n\t\t\t// Fire the complete handlers\n\t\t\tcomplete();\n\t\t}\n\n\t\t// firefox 1.5 doesn't fire statechange for sync requests\n\t\tif ( !s.async ) {\n\t\t\tonreadystatechange();\n\t\t}\n\n\t\tfunction success() {\n\t\t\t// If a local callback was specified, fire it and pass it the data\n\t\t\tif ( s.success ) {\n\t\t\t\ts.success.call( callbackContext, data, status, xhr );\n\t\t\t}\n\n\t\t\t// Fire the global callback\n\t\t\tif ( s.global ) {\n\t\t\t\ttrigger( \"ajaxSuccess\", [xhr, s] );\n\t\t\t}\n\t\t}\n\n\t\tfunction complete() {\n\t\t\t// Process result\n\t\t\tif ( s.complete ) {\n\t\t\t\ts.complete.call( callbackContext, xhr, status);\n\t\t\t}\n\n\t\t\t// The request was completed\n\t\t\tif ( s.global ) {\n\t\t\t\ttrigger( \"ajaxComplete\", [xhr, s] );\n\t\t\t}\n\n\t\t\t// Handle the global AJAX counter\n\t\t\tif ( s.global && ! --jQuery.active ) {\n\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t}\n\t\t}\n\t\t\n\t\tfunction trigger(type, args) {\n\t\t\t(s.context ? jQuery(s.context) : jQuery.event).trigger(type, args);\n\t\t}\n\n\t\t// return XMLHttpRequest to allow aborting the request etc.\n\t\treturn xhr;\n\t},\n\n\thandleError: function( s, xhr, status, e ) {\n\t\t// If a local callback was specified, fire it\n\t\tif ( s.error ) {\n\t\t\ts.error.call( s.context || s, xhr, status, e );\n\t\t}\n\n\t\t// Fire the global callback\n\t\tif ( s.global ) {\n\t\t\t(s.context ? jQuery(s.context) : jQuery.event).trigger( \"ajaxError\", [xhr, s, e] );\n\t\t}\n\t},\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Determines if an XMLHttpRequest was successful or not\n\thttpSuccess: function( xhr ) {\n\t\ttry {\n\t\t\t// IE error sometimes returns 1223 when it should be 204 so treat it as success, see #1450\n\t\t\treturn !xhr.status && location.protocol === \"file:\" ||\n\t\t\t\t// Opera returns 0 when status is 304\n\t\t\t\t( xhr.status >= 200 && xhr.status < 300 ) ||\n\t\t\t\txhr.status === 304 || xhr.status === 1223 || xhr.status === 0;\n\t\t} catch(e) {}\n\n\t\treturn false;\n\t},\n\n\t// Determines if an XMLHttpRequest returns NotModified\n\thttpNotModified: function( xhr, url ) {\n\t\tvar lastModified = xhr.getResponseHeader(\"Last-Modified\"),\n\t\t\tetag = xhr.getResponseHeader(\"Etag\");\n\n\t\tif ( lastModified ) {\n\t\t\tjQuery.lastModified[url] = lastModified;\n\t\t}\n\n\t\tif ( etag ) {\n\t\t\tjQuery.etag[url] = etag;\n\t\t}\n\n\t\t// Opera returns 0 when status is 304\n\t\treturn xhr.status === 304 || xhr.status === 0;\n\t},\n\n\thttpData: function( xhr, type, s ) {\n\t\tvar ct = xhr.getResponseHeader(\"content-type\") || \"\",\n\t\t\txml = type === \"xml\" || !type && ct.indexOf(\"xml\") >= 0,\n\t\t\tdata = xml ? xhr.responseXML : xhr.responseText;\n\n\t\tif ( xml && data.documentElement.nodeName === \"parsererror\" ) {\n\t\t\tjQuery.error( \"parsererror\" );\n\t\t}\n\n\t\t// Allow a pre-filtering function to sanitize the response\n\t\t// s is checked to keep backwards compatibility\n\t\tif ( s && s.dataFilter ) {\n\t\t\tdata = s.dataFilter( data, type );\n\t\t}\n\n\t\t// The filter can actually parse the response\n\t\tif ( typeof data === \"string\" ) {\n\t\t\t// Get the JavaScript object, if JSON is used.\n\t\t\tif ( type === \"json\" || !type && ct.indexOf(\"json\") >= 0 ) {\n\t\t\t\tdata = jQuery.parseJSON( data );\n\n\t\t\t// If the type is \"script\", eval it in global context\n\t\t\t} else if ( type === \"script\" || !type && ct.indexOf(\"javascript\") >= 0 ) {\n\t\t\t\tjQuery.globalEval( data );\n\t\t\t}\n\t\t}\n\n\t\treturn data;\n\t},\n\n\t// Serialize an array of form elements or a set of\n\t// key/values into a query string\n\tparam: function( a, traditional ) {\n\t\tvar s = [];\n\t\t\n\t\t// Set traditional to true for jQuery <= 1.3.2 behavior.\n\t\tif ( traditional === undefined ) {\n\t\t\ttraditional = jQuery.ajaxSettings.traditional;\n\t\t}\n\t\t\n\t\t// If an array was passed in, assume that it is an array of form elements.\n\t\tif ( jQuery.isArray(a) || a.jquery ) {\n\t\t\t// Serialize the form elements\n\t\t\tjQuery.each( a, function() {\n\t\t\t\tadd( this.name, this.value );\n\t\t\t});\n\t\t\t\n\t\t} else {\n\t\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t\t// did it), otherwise encode params recursively.\n\t\t\tfor ( var prefix in a ) {\n\t\t\t\tbuildParams( prefix, a[prefix] );\n\t\t\t}\n\t\t}\n\n\t\t// Return the resulting serialization\n\t\treturn s.join(\"&\").replace(r20, \"+\");\n\n\t\tfunction buildParams( prefix, obj ) {\n\t\t\tif ( jQuery.isArray(obj) ) {\n\t\t\t\t// Serialize array item.\n\t\t\t\tjQuery.each( obj, function( i, v ) {\n\t\t\t\t\tif ( traditional || /\\[\\]$/.test( prefix ) ) {\n\t\t\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\t\t\tadd( prefix, v );\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// If array item is non-scalar (array or object), encode its\n\t\t\t\t\t\t// numeric index to resolve deserialization ambiguity issues.\n\t\t\t\t\t\t// Note that rack (as of 1.0.0) can't currently deserialize\n\t\t\t\t\t\t// nested arrays properly, and attempting to do so may cause\n\t\t\t\t\t\t// a server error. Possible fixes are to modify rack's\n\t\t\t\t\t\t// deserialization algorithm or to provide an option or flag\n\t\t\t\t\t\t// to force array serialization to be shallow.\n\t\t\t\t\t\tbuildParams( prefix + \"[\" + ( typeof v === \"object\" || jQuery.isArray(v) ? i : \"\" ) + \"]\", v );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t\t\n\t\t\t} else if ( !traditional && obj != null && typeof obj === \"object\" ) {\n\t\t\t\t// Serialize object item.\n\t\t\t\tjQuery.each( obj, function( k, v ) {\n\t\t\t\t\tbuildParams( prefix + \"[\" + k + \"]\", v );\n\t\t\t\t});\n\t\t\t\t\t\n\t\t\t} else {\n\t\t\t\t// Serialize scalar item.\n\t\t\t\tadd( prefix, obj );\n\t\t\t}\n\t\t}\n\n\t\tfunction add( key, value ) {\n\t\t\t// If value is a function, invoke it and return its value\n\t\t\tvalue = jQuery.isFunction(value) ? value() : value;\n\t\t\ts[ s.length ] = encodeURIComponent(key) + \"=\" + encodeURIComponent(value);\n\t\t}\n\t}\n});\nvar elemdisplay = {},\n\trfxtypes = /toggle|show|hide/,\n\trfxnum = /^([+-]=)?([\\d+-.]+)(.*)$/,\n\ttimerId,\n\tfxAttrs = [\n\t\t// height animations\n\t\t[ \"height\", \"marginTop\", \"marginBottom\", \"paddingTop\", \"paddingBottom\" ],\n\t\t// width animations\n\t\t[ \"width\", \"marginLeft\", \"marginRight\", \"paddingLeft\", \"paddingRight\" ],\n\t\t// opacity animations\n\t\t[ \"opacity\" ]\n\t];\n\njQuery.fn.extend({\n\tshow: function( speed, callback ) {\n\t\tif ( speed || speed === 0) {\n\t\t\treturn this.animate( genFx(\"show\", 3), speed, callback);\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tvar old = jQuery.data(this[i], \"olddisplay\");\n\n\t\t\t\tthis[i].style.display = old || \"\";\n\n\t\t\t\tif ( jQuery.css(this[i], \"display\") === \"none\" ) {\n\t\t\t\t\tvar nodeName = this[i].nodeName, display;\n\n\t\t\t\t\tif ( elemdisplay[ nodeName ] ) {\n\t\t\t\t\t\tdisplay = elemdisplay[ nodeName ];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar elem = jQuery(\"<\" + nodeName + \" />\").appendTo(\"body\");\n\n\t\t\t\t\t\tdisplay = elem.css(\"display\");\n\n\t\t\t\t\t\tif ( display === \"none\" ) {\n\t\t\t\t\t\t\tdisplay = \"block\";\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\telem.remove();\n\n\t\t\t\t\t\telemdisplay[ nodeName ] = display;\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.data(this[i], \"olddisplay\", display);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set the display of the elements in a second loop\n\t\t\t// to avoid the constant reflow\n\t\t\tfor ( var j = 0, k = this.length; j < k; j++ ) {\n\t\t\t\tthis[j].style.display = jQuery.data(this[j], \"olddisplay\") || \"\";\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\t},\n\n\thide: function( speed, callback ) {\n\t\tif ( speed || speed === 0 ) {\n\t\t\treturn this.animate( genFx(\"hide\", 3), speed, callback);\n\n\t\t} else {\n\t\t\tfor ( var i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\tvar old = jQuery.data(this[i], \"olddisplay\");\n\t\t\t\tif ( !old && old !== \"none\" ) {\n\t\t\t\t\tjQuery.data(this[i], \"olddisplay\", jQuery.css(this[i], \"display\"));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set the display of the elements in a second loop\n\t\t\t// to avoid the constant reflow\n\t\t\tfor ( var j = 0, k = this.length; j < k; j++ ) {\n\t\t\t\tthis[j].style.display = \"none\";\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\t},\n\n\t// Save the old toggle function\n\t_toggle: jQuery.fn.toggle,\n\n\ttoggle: function( fn, fn2 ) {\n\t\tvar bool = typeof fn === \"boolean\";\n\n\t\tif ( jQuery.isFunction(fn) && jQuery.isFunction(fn2) ) {\n\t\t\tthis._toggle.apply( this, arguments );\n\n\t\t} else if ( fn == null || bool ) {\n\t\t\tthis.each(function() {\n\t\t\t\tvar state = bool ? fn : jQuery(this).is(\":hidden\");\n\t\t\t\tjQuery(this)[ state ? \"show\" : \"hide\" ]();\n\t\t\t});\n\n\t\t} else {\n\t\t\tthis.animate(genFx(\"toggle\", 3), fn, fn2);\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tfadeTo: function( speed, to, callback ) {\n\t\treturn this.filter(\":hidden\").css(\"opacity\", 0).show().end()\n\t\t\t\t\t.animate({opacity: to}, speed, callback);\n\t},\n\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar optall = jQuery.speed(speed, easing, callback);\n\n\t\tif ( jQuery.isEmptyObject( prop ) ) {\n\t\t\treturn this.each( optall.complete );\n\t\t}\n\n\t\treturn this[ optall.queue === false ? \"each\" : \"queue\" ](function() {\n\t\t\tvar opt = jQuery.extend({}, optall), p,\n\t\t\t\thidden = this.nodeType === 1 && jQuery(this).is(\":hidden\"),\n\t\t\t\tself = this;\n\n\t\t\tfor ( p in prop ) {\n\t\t\t\tvar name = p.replace(rdashAlpha, fcamelCase);\n\n\t\t\t\tif ( p !== name ) {\n\t\t\t\t\tprop[ name ] = prop[ p ];\n\t\t\t\t\tdelete prop[ p ];\n\t\t\t\t\tp = name;\n\t\t\t\t}\n\n\t\t\t\tif ( prop[p] === \"hide\" && hidden || prop[p] === \"show\" && !hidden ) {\n\t\t\t\t\treturn opt.complete.call(this);\n\t\t\t\t}\n\n\t\t\t\tif ( ( p === \"height\" || p === \"width\" ) && this.style ) {\n\t\t\t\t\t// Store display property\n\t\t\t\t\topt.display = jQuery.css(this, \"display\");\n\n\t\t\t\t\t// Make sure that nothing sneaks out\n\t\t\t\t\topt.overflow = this.style.overflow;\n\t\t\t\t}\n\n\t\t\t\tif ( jQuery.isArray( prop[p] ) ) {\n\t\t\t\t\t// Create (if needed) and add to specialEasing\n\t\t\t\t\t(opt.specialEasing = opt.specialEasing || {})[p] = prop[p][1];\n\t\t\t\t\tprop[p] = prop[p][0];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( opt.overflow != null ) {\n\t\t\t\tthis.style.overflow = \"hidden\";\n\t\t\t}\n\n\t\t\topt.curAnim = jQuery.extend({}, prop);\n\n\t\t\tjQuery.each( prop, function( name, val ) {\n\t\t\t\tvar e = new jQuery.fx( self, opt, name );\n\n\t\t\t\tif ( rfxtypes.test(val) ) {\n\t\t\t\t\te[ val === \"toggle\" ? hidden ? \"show\" : \"hide\" : val ]( prop );\n\n\t\t\t\t} else {\n\t\t\t\t\tvar parts = rfxnum.exec(val),\n\t\t\t\t\t\tstart = e.cur(true) || 0;\n\n\t\t\t\t\tif ( parts ) {\n\t\t\t\t\t\tvar end = parseFloat( parts[2] ),\n\t\t\t\t\t\t\tunit = parts[3] || \"px\";\n\n\t\t\t\t\t\t// We need to compute starting value\n\t\t\t\t\t\tif ( unit !== \"px\" ) {\n\t\t\t\t\t\t\tself.style[ name ] = (end || 1) + unit;\n\t\t\t\t\t\t\tstart = ((end || 1) / e.cur(true)) * start;\n\t\t\t\t\t\t\tself.style[ name ] = start + unit;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// If a +=/-= token was provided, we're doing a relative animation\n\t\t\t\t\t\tif ( parts[1] ) {\n\t\t\t\t\t\t\tend = ((parts[1] === \"-=\" ? -1 : 1) * end) + start;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\te.custom( start, end, unit );\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\te.custom( start, val, \"\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// For JS strict compliance\n\t\t\treturn true;\n\t\t});\n\t},\n\n\tstop: function( clearQueue, gotoEnd ) {\n\t\tvar timers = jQuery.timers;\n\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue([]);\n\t\t}\n\n\t\tthis.each(function() {\n\t\t\t// go in reverse order so anything added to the queue during the loop is ignored\n\t\t\tfor ( var i = timers.length - 1; i >= 0; i-- ) {\n\t\t\t\tif ( timers[i].elem === this ) {\n\t\t\t\t\tif (gotoEnd) {\n\t\t\t\t\t\t// force the next step to be the last\n\t\t\t\t\t\ttimers[i](true);\n\t\t\t\t\t}\n\n\t\t\t\t\ttimers.splice(i, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// start the next in the queue if the last step wasn't forced\n\t\tif ( !gotoEnd ) {\n\t\t\tthis.dequeue();\n\t\t}\n\n\t\treturn this;\n\t}\n\n});\n\n// Generate shortcuts for custom animations\njQuery.each({\n\tslideDown: genFx(\"show\", 1),\n\tslideUp: genFx(\"hide\", 1),\n\tslideToggle: genFx(\"toggle\", 1),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, callback ) {\n\t\treturn this.animate( props, speed, callback );\n\t};\n});\n\njQuery.extend({\n\tspeed: function( speed, easing, fn ) {\n\t\tvar opt = speed && typeof speed === \"object\" ? speed : {\n\t\t\tcomplete: fn || !fn && easing ||\n\t\t\t\tjQuery.isFunction( speed ) && speed,\n\t\t\tduration: speed,\n\t\t\teasing: fn && easing || easing && !jQuery.isFunction(easing) && easing\n\t\t};\n\n\t\topt.duration = jQuery.fx.off ? 0 : typeof opt.duration === \"number\" ? opt.duration :\n\t\t\tjQuery.fx.speeds[opt.duration] || jQuery.fx.speeds._default;\n\n\t\t// Queueing\n\t\topt.old = opt.complete;\n\t\topt.complete = function() {\n\t\t\tif ( opt.queue !== false ) {\n\t\t\t\tjQuery(this).dequeue();\n\t\t\t}\n\t\t\tif ( jQuery.isFunction( opt.old ) ) {\n\t\t\t\topt.old.call( this );\n\t\t\t}\n\t\t};\n\n\t\treturn opt;\n\t},\n\n\teasing: {\n\t\tlinear: function( p, n, firstNum, diff ) {\n\t\t\treturn firstNum + diff * p;\n\t\t},\n\t\tswing: function( p, n, firstNum, diff ) {\n\t\t\treturn ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum;\n\t\t}\n\t},\n\n\ttimers: [],\n\n\tfx: function( elem, options, prop ) {\n\t\tthis.options = options;\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\n\t\tif ( !options.orig ) {\n\t\t\toptions.orig = {};\n\t\t}\n\t}\n\n});\n\njQuery.fx.prototype = {\n\t// Simple function for setting a style value\n\tupdate: function() {\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\t(jQuery.fx.step[this.prop] || jQuery.fx.step._default)( this );\n\n\t\t// Set display property to block for height/width animations\n\t\tif ( ( this.prop === \"height\" || this.prop === \"width\" ) && this.elem.style ) {\n\t\t\tthis.elem.style.display = \"block\";\n\t\t}\n\t},\n\n\t// Get the current size\n\tcur: function( force ) {\n\t\tif ( this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null) ) {\n\t\t\treturn this.elem[ this.prop ];\n\t\t}\n\n\t\tvar r = parseFloat(jQuery.css(this.elem, this.prop, force));\n\t\treturn r && r > -10000 ? r : parseFloat(jQuery.curCSS(this.elem, this.prop)) || 0;\n\t},\n\n\t// Start an animation from one number to another\n\tcustom: function( from, to, unit ) {\n\t\tthis.startTime = now();\n\t\tthis.start = from;\n\t\tthis.end = to;\n\t\tthis.unit = unit || this.unit || \"px\";\n\t\tthis.now = this.start;\n\t\tthis.pos = this.state = 0;\n\n\t\tvar self = this;\n\t\tfunction t( gotoEnd ) {\n\t\t\treturn self.step(gotoEnd);\n\t\t}\n\n\t\tt.elem = this.elem;\n\n\t\tif ( t() && jQuery.timers.push(t) && !timerId ) {\n\t\t\ttimerId = setInterval(jQuery.fx.tick, 13);\n\t\t}\n\t},\n\n\t// Simple 'show' function\n\tshow: function() {\n\t\t// Remember where we started, so that we can go back to it later\n\t\tthis.options.orig[this.prop] = jQuery.style( this.elem, this.prop );\n\t\tthis.options.show = true;\n\n\t\t// Begin the animation\n\t\t// Make sure that we start at a small width/height to avoid any\n\t\t// flash of content\n\t\tthis.custom(this.prop === \"width\" || this.prop === \"height\" ? 1 : 0, this.cur());\n\n\t\t// Start by showing the element\n\t\tjQuery( this.elem ).show();\n\t},\n\n\t// Simple 'hide' function\n\thide: function() {\n\t\t// Remember where we started, so that we can go back to it later\n\t\tthis.options.orig[this.prop] = jQuery.style( this.elem, this.prop );\n\t\tthis.options.hide = true;\n\n\t\t// Begin the animation\n\t\tthis.custom(this.cur(), 0);\n\t},\n\n\t// Each step of an animation\n\tstep: function( gotoEnd ) {\n\t\tvar t = now(), done = true;\n\n\t\tif ( gotoEnd || t >= this.options.duration + this.startTime ) {\n\t\t\tthis.now = this.end;\n\t\t\tthis.pos = this.state = 1;\n\t\t\tthis.update();\n\n\t\t\tthis.options.curAnim[ this.prop ] = true;\n\n\t\t\tfor ( var i in this.options.curAnim ) {\n\t\t\t\tif ( this.options.curAnim[i] !== true ) {\n\t\t\t\t\tdone = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( done ) {\n\t\t\t\tif ( this.options.display != null ) {\n\t\t\t\t\t// Reset the overflow\n\t\t\t\t\tthis.elem.style.overflow = this.options.overflow;\n\n\t\t\t\t\t// Reset the display\n\t\t\t\t\tvar old = jQuery.data(this.elem, \"olddisplay\");\n\t\t\t\t\tthis.elem.style.display = old ? old : this.options.display;\n\n\t\t\t\t\tif ( jQuery.css(this.elem, \"display\") === \"none\" ) {\n\t\t\t\t\t\tthis.elem.style.display = \"block\";\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Hide the element if the \"hide\" operation was done\n\t\t\t\tif ( this.options.hide ) {\n\t\t\t\t\tjQuery(this.elem).hide();\n\t\t\t\t}\n\n\t\t\t\t// Reset the properties, if the item has been hidden or shown\n\t\t\t\tif ( this.options.hide || this.options.show ) {\n\t\t\t\t\tfor ( var p in this.options.curAnim ) {\n\t\t\t\t\t\tjQuery.style(this.elem, p, this.options.orig[p]);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Execute the complete function\n\t\t\t\tthis.options.complete.call( this.elem );\n\t\t\t}\n\n\t\t\treturn false;\n\n\t\t} else {\n\t\t\tvar n = t - this.startTime;\n\t\t\tthis.state = n / this.options.duration;\n\n\t\t\t// Perform the easing function, defaults to swing\n\t\t\tvar specialEasing = this.options.specialEasing && this.options.specialEasing[this.prop];\n\t\t\tvar defaultEasing = this.options.easing || (jQuery.easing.swing ? \"swing\" : \"linear\");\n\t\t\tthis.pos = jQuery.easing[specialEasing || defaultEasing](this.state, n, 0, 1, this.options.duration);\n\t\t\tthis.now = this.start + ((this.end - this.start) * this.pos);\n\n\t\t\t// Perform the next step of the animation\n\t\t\tthis.update();\n\t\t}\n\n\t\treturn true;\n\t}\n};\n\njQuery.extend( jQuery.fx, {\n\ttick: function() {\n\t\tvar timers = jQuery.timers;\n\n\t\tfor ( var i = 0; i < timers.length; i++ ) {\n\t\t\tif ( !timers[i]() ) {\n\t\t\t\ttimers.splice(i--, 1);\n\t\t\t}\n\t\t}\n\n\t\tif ( !timers.length ) {\n\t\t\tjQuery.fx.stop();\n\t\t}\n\t},\n\t\t\n\tstop: function() {\n\t\tclearInterval( timerId );\n\t\ttimerId = null;\n\t},\n\t\n\tspeeds: {\n\t\tslow: 600,\n \t\tfast: 200,\n \t\t// Default speed\n \t\t_default: 400\n\t},\n\n\tstep: {\n\t\topacity: function( fx ) {\n\t\t\tjQuery.style(fx.elem, \"opacity\", fx.now);\n\t\t},\n\n\t\t_default: function( fx ) {\n\t\t\tif ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) {\n\t\t\t\tfx.elem.style[ fx.prop ] = (fx.prop === \"width\" || fx.prop === \"height\" ? Math.max(0, fx.now) : fx.now) + fx.unit;\n\t\t\t} else {\n\t\t\t\tfx.elem[ fx.prop ] = fx.now;\n\t\t\t}\n\t\t}\n\t}\n});\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.animated = function( elem ) {\n\t\treturn jQuery.grep(jQuery.timers, function( fn ) {\n\t\t\treturn elem === fn.elem;\n\t\t}).length;\n\t};\n}\n\nfunction genFx( type, num ) {\n\tvar obj = {};\n\n\tjQuery.each( fxAttrs.concat.apply([], fxAttrs.slice(0,num)), function() {\n\t\tobj[ this ] = type;\n\t});\n\n\treturn obj;\n}\nif ( \"getBoundingClientRect\" in document.documentElement ) {\n\tjQuery.fn.offset = function( options ) {\n\t\tvar elem = this[0];\n\n\t\tif ( options ) { \n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t});\n\t\t}\n\n\t\tif ( !elem || !elem.ownerDocument ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( elem === elem.ownerDocument.body ) {\n\t\t\treturn jQuery.offset.bodyOffset( elem );\n\t\t}\n\n\t\tvar box = elem.getBoundingClientRect(), doc = elem.ownerDocument, body = doc.body, docElem = doc.documentElement,\n\t\t\tclientTop = docElem.clientTop || body.clientTop || 0, clientLeft = docElem.clientLeft || body.clientLeft || 0,\n\t\t\ttop  = box.top  + (self.pageYOffset || jQuery.support.boxModel && docElem.scrollTop  || body.scrollTop ) - clientTop,\n\t\t\tleft = box.left + (self.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft) - clientLeft;\n\n\t\treturn { top: top, left: left };\n\t};\n\n} else {\n\tjQuery.fn.offset = function( options ) {\n\t\tvar elem = this[0];\n\n\t\tif ( options ) { \n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t});\n\t\t}\n\n\t\tif ( !elem || !elem.ownerDocument ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( elem === elem.ownerDocument.body ) {\n\t\t\treturn jQuery.offset.bodyOffset( elem );\n\t\t}\n\n\t\tjQuery.offset.initialize();\n\n\t\tvar offsetParent = elem.offsetParent, prevOffsetParent = elem,\n\t\t\tdoc = elem.ownerDocument, computedStyle, docElem = doc.documentElement,\n\t\t\tbody = doc.body, defaultView = doc.defaultView,\n\t\t\tprevComputedStyle = defaultView ? defaultView.getComputedStyle( elem, null ) : elem.currentStyle,\n\t\t\ttop = elem.offsetTop, left = elem.offsetLeft;\n\n\t\twhile ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {\n\t\t\tif ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === \"fixed\" ) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcomputedStyle = defaultView ? defaultView.getComputedStyle(elem, null) : elem.currentStyle;\n\t\t\ttop  -= elem.scrollTop;\n\t\t\tleft -= elem.scrollLeft;\n\n\t\t\tif ( elem === offsetParent ) {\n\t\t\t\ttop  += elem.offsetTop;\n\t\t\t\tleft += elem.offsetLeft;\n\n\t\t\t\tif ( jQuery.offset.doesNotAddBorder && !(jQuery.offset.doesAddBorderForTableAndCells && /^t(able|d|h)$/i.test(elem.nodeName)) ) {\n\t\t\t\t\ttop  += parseFloat( computedStyle.borderTopWidth  ) || 0;\n\t\t\t\t\tleft += parseFloat( computedStyle.borderLeftWidth ) || 0;\n\t\t\t\t}\n\n\t\t\t\tprevOffsetParent = offsetParent, offsetParent = elem.offsetParent;\n\t\t\t}\n\n\t\t\tif ( jQuery.offset.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== \"visible\" ) {\n\t\t\t\ttop  += parseFloat( computedStyle.borderTopWidth  ) || 0;\n\t\t\t\tleft += parseFloat( computedStyle.borderLeftWidth ) || 0;\n\t\t\t}\n\n\t\t\tprevComputedStyle = computedStyle;\n\t\t}\n\n\t\tif ( prevComputedStyle.position === \"relative\" || prevComputedStyle.position === \"static\" ) {\n\t\t\ttop  += body.offsetTop;\n\t\t\tleft += body.offsetLeft;\n\t\t}\n\n\t\tif ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === \"fixed\" ) {\n\t\t\ttop  += Math.max( docElem.scrollTop, body.scrollTop );\n\t\t\tleft += Math.max( docElem.scrollLeft, body.scrollLeft );\n\t\t}\n\n\t\treturn { top: top, left: left };\n\t};\n}\n\njQuery.offset = {\n\tinitialize: function() {\n\t\tvar body = document.body, container = document.createElement(\"div\"), innerDiv, checkDiv, table, td, bodyMarginTop = parseFloat( jQuery.curCSS(body, \"marginTop\", true) ) || 0,\n\t\t\thtml = \"<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>\";\n\n\t\tjQuery.extend( container.style, { position: \"absolute\", top: 0, left: 0, margin: 0, border: 0, width: \"1px\", height: \"1px\", visibility: \"hidden\" } );\n\n\t\tcontainer.innerHTML = html;\n\t\tbody.insertBefore( container, body.firstChild );\n\t\tinnerDiv = container.firstChild;\n\t\tcheckDiv = innerDiv.firstChild;\n\t\ttd = innerDiv.nextSibling.firstChild.firstChild;\n\n\t\tthis.doesNotAddBorder = (checkDiv.offsetTop !== 5);\n\t\tthis.doesAddBorderForTableAndCells = (td.offsetTop === 5);\n\n\t\tcheckDiv.style.position = \"fixed\", checkDiv.style.top = \"20px\";\n\t\t// safari subtracts parent border width here which is 5px\n\t\tthis.supportsFixedPosition = (checkDiv.offsetTop === 20 || checkDiv.offsetTop === 15);\n\t\tcheckDiv.style.position = checkDiv.style.top = \"\";\n\n\t\tinnerDiv.style.overflow = \"hidden\", innerDiv.style.position = \"relative\";\n\t\tthis.subtractsBorderForOverflowNotVisible = (checkDiv.offsetTop === -5);\n\n\t\tthis.doesNotIncludeMarginInBodyOffset = (body.offsetTop !== bodyMarginTop);\n\n\t\tbody.removeChild( container );\n\t\tbody = container = innerDiv = checkDiv = table = td = null;\n\t\tjQuery.offset.initialize = jQuery.noop;\n\t},\n\n\tbodyOffset: function( body ) {\n\t\tvar top = body.offsetTop, left = body.offsetLeft;\n\n\t\tjQuery.offset.initialize();\n\n\t\tif ( jQuery.offset.doesNotIncludeMarginInBodyOffset ) {\n\t\t\ttop  += parseFloat( jQuery.curCSS(body, \"marginTop\",  true) ) || 0;\n\t\t\tleft += parseFloat( jQuery.curCSS(body, \"marginLeft\", true) ) || 0;\n\t\t}\n\n\t\treturn { top: top, left: left };\n\t},\n\t\n\tsetOffset: function( elem, options, i ) {\n\t\t// set position first, in-case top/left are set even on static elem\n\t\tif ( /static/.test( jQuery.curCSS( elem, \"position\" ) ) ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\t\tvar curElem   = jQuery( elem ),\n\t\t\tcurOffset = curElem.offset(),\n\t\t\tcurTop    = parseInt( jQuery.curCSS( elem, \"top\",  true ), 10 ) || 0,\n\t\t\tcurLeft   = parseInt( jQuery.curCSS( elem, \"left\", true ), 10 ) || 0;\n\n\t\tif ( jQuery.isFunction( options ) ) {\n\t\t\toptions = options.call( elem, i, curOffset );\n\t\t}\n\n\t\tvar props = {\n\t\t\ttop:  (options.top  - curOffset.top)  + curTop,\n\t\t\tleft: (options.left - curOffset.left) + curLeft\n\t\t};\n\t\t\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\n\njQuery.fn.extend({\n\tposition: function() {\n\t\tif ( !this[0] ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tvar elem = this[0],\n\n\t\t// Get *real* offsetParent\n\t\toffsetParent = this.offsetParent(),\n\n\t\t// Get correct offsets\n\t\toffset       = this.offset(),\n\t\tparentOffset = /^body|html$/i.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();\n\n\t\t// Subtract element margins\n\t\t// note: when an element has margin: auto the offsetLeft and marginLeft\n\t\t// are the same in Safari causing offset.left to incorrectly be 0\n\t\toffset.top  -= parseFloat( jQuery.curCSS(elem, \"marginTop\",  true) ) || 0;\n\t\toffset.left -= parseFloat( jQuery.curCSS(elem, \"marginLeft\", true) ) || 0;\n\n\t\t// Add offsetParent borders\n\t\tparentOffset.top  += parseFloat( jQuery.curCSS(offsetParent[0], \"borderTopWidth\",  true) ) || 0;\n\t\tparentOffset.left += parseFloat( jQuery.curCSS(offsetParent[0], \"borderLeftWidth\", true) ) || 0;\n\n\t\t// Subtract the two offsets\n\t\treturn {\n\t\t\ttop:  offset.top  - parentOffset.top,\n\t\t\tleft: offset.left - parentOffset.left\n\t\t};\n\t},\n\n\toffsetParent: function() {\n\t\treturn this.map(function() {\n\t\t\tvar offsetParent = this.offsetParent || document.body;\n\t\t\twhile ( offsetParent && (!/^body|html$/i.test(offsetParent.nodeName) && jQuery.css(offsetParent, \"position\") === \"static\") ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\t\t\treturn offsetParent;\n\t\t});\n\t}\n});\n\n\n// Create scrollLeft and scrollTop methods\njQuery.each( [\"Left\", \"Top\"], function( i, name ) {\n\tvar method = \"scroll\" + name;\n\n\tjQuery.fn[ method ] = function(val) {\n\t\tvar elem = this[0], win;\n\t\t\n\t\tif ( !elem ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( val !== undefined ) {\n\t\t\t// Set the scroll offset\n\t\t\treturn this.each(function() {\n\t\t\t\twin = getWindow( this );\n\n\t\t\t\tif ( win ) {\n\t\t\t\t\twin.scrollTo(\n\t\t\t\t\t\t!i ? val : jQuery(win).scrollLeft(),\n\t\t\t\t\t\t i ? val : jQuery(win).scrollTop()\n\t\t\t\t\t);\n\n\t\t\t\t} else {\n\t\t\t\t\tthis[ method ] = val;\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\twin = getWindow( elem );\n\n\t\t\t// Return the scroll offset\n\t\t\treturn win ? (\"pageXOffset\" in win) ? win[ i ? \"pageYOffset\" : \"pageXOffset\" ] :\n\t\t\t\tjQuery.support.boxModel && win.document.documentElement[ method ] ||\n\t\t\t\t\twin.document.body[ method ] :\n\t\t\t\telem[ method ];\n\t\t}\n\t};\n});\n\nfunction getWindow( elem ) {\n\treturn (\"scrollTo\" in elem && elem.document) ?\n\t\telem :\n\t\telem.nodeType === 9 ?\n\t\t\telem.defaultView || elem.parentWindow :\n\t\t\tfalse;\n}\n// Create innerHeight, innerWidth, outerHeight and outerWidth methods\njQuery.each([ \"Height\", \"Width\" ], function( i, name ) {\n\n\tvar type = name.toLowerCase();\n\n\t// innerHeight and innerWidth\n\tjQuery.fn[\"inner\" + name] = function() {\n\t\treturn this[0] ?\n\t\t\tjQuery.css( this[0], type, false, \"padding\" ) :\n\t\t\tnull;\n\t};\n\n\t// outerHeight and outerWidth\n\tjQuery.fn[\"outer\" + name] = function( margin ) {\n\t\treturn this[0] ?\n\t\t\tjQuery.css( this[0], type, false, margin ? \"margin\" : \"border\" ) :\n\t\t\tnull;\n\t};\n\n\tjQuery.fn[ type ] = function( size ) {\n\t\t// Get window width or height\n\t\tvar elem = this[0];\n\t\tif ( !elem ) {\n\t\t\treturn size == null ? null : this;\n\t\t}\n\t\t\n\t\tif ( jQuery.isFunction( size ) ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tvar self = jQuery( this );\n\t\t\t\tself[ type ]( size.call( this, i, self[ type ]() ) );\n\t\t\t});\n\t\t}\n\n\t\treturn (\"scrollTo\" in elem && elem.document) ? // does it walk and quack like a window?\n\t\t\t// Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode\n\t\t\telem.document.compatMode === \"CSS1Compat\" && elem.document.documentElement[ \"client\" + name ] ||\n\t\t\telem.document.body[ \"client\" + name ] :\n\n\t\t\t// Get document width or height\n\t\t\t(elem.nodeType === 9) ? // is it a document\n\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height], whichever is greater\n\t\t\t\tMath.max(\n\t\t\t\t\telem.documentElement[\"client\" + name],\n\t\t\t\t\telem.body[\"scroll\" + name], elem.documentElement[\"scroll\" + name],\n\t\t\t\t\telem.body[\"offset\" + name], elem.documentElement[\"offset\" + name]\n\t\t\t\t) :\n\n\t\t\t\t// Get or set width or height on the element\n\t\t\t\tsize === undefined ?\n\t\t\t\t\t// Get width or height on the element\n\t\t\t\t\tjQuery.css( elem, type ) :\n\n\t\t\t\t\t// Set the width or height on the element (default to pixels if value is unitless)\n\t\t\t\t\tthis.css( type, typeof size === \"string\" ? size : size + \"px\" );\n\t};\n\n});\n// Expose jQuery to the global object\nwindow.jQuery = window.$ = jQuery;\n\n})(window);\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/static/admin/js/prepopulate.js",
    "content": "(function($) {\n    $.fn.prepopulate = function(dependencies, maxLength) {\n        /*\n            Depends on urlify.js\n            Populates a selected field with the values of the dependent fields,\n            URLifies and shortens the string. \n            dependencies - array of dependent fields id's \n            maxLength - maximum length of the URLify'd string \n        */\n        return this.each(function() {\n            var field = $(this);\n\n            field.data('_changed', false);\n            field.change(function() {\n                field.data('_changed', true);\n            });\n\n            var populate = function () {\n                // Bail if the fields value has changed\n                if (field.data('_changed') == true) return;\n \n                var values = [];\n                $.each(dependencies, function(i, field) {\n                  if ($(field).val().length > 0) {\n                      values.push($(field).val());\n                  }\n                })\n                field.val(URLify(values.join(' '), maxLength));\n            };\n\n            $(dependencies.join(',')).keyup(populate).change(populate).focus(populate);\n        });\n    };\n})(django.jQuery);\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/static/admin/js/timeparse.js",
    "content": "var timeParsePatterns = [\n    // 9\n    {   re: /^\\d{1,2}$/i,\n        handler: function(bits) {\n            if (bits[0].length == 1) {\n                return '0' + bits[0] + ':00';\n            } else {\n                return bits[0] + ':00';\n            }\n        }\n    },\n    // 13:00\n    {   re: /^\\d{2}[:.]\\d{2}$/i,\n        handler: function(bits) {\n            return bits[0].replace('.', ':');\n        }\n    },\n    // 9:00\n    {   re: /^\\d[:.]\\d{2}$/i,\n        handler: function(bits) {\n            return '0' + bits[0].replace('.', ':');\n        }\n    },\n    // 3 am / 3 a.m. / 3am\n    {   re: /^(\\d+)\\s*([ap])(?:.?m.?)?$/i,\n        handler: function(bits) {\n            var hour = parseInt(bits[1]);\n            if (hour == 12) {\n                hour = 0;\n            }\n            if (bits[2].toLowerCase() == 'p') {\n                if (hour == 12) {\n                    hour = 0;\n                }\n                return (hour + 12) + ':00';\n            } else {\n                if (hour < 10) {\n                    return '0' + hour + ':00';\n                } else {\n                    return hour + ':00';\n                }\n            }\n        }\n    },\n    // 3.30 am / 3:15 a.m. / 3.00am\n    {   re: /^(\\d+)[.:](\\d{2})\\s*([ap]).?m.?$/i,\n        handler: function(bits) {\n            var hour = parseInt(bits[1]);\n            var mins = parseInt(bits[2]);\n            if (mins < 10) {\n                mins = '0' + mins;\n            }\n            if (hour == 12) {\n                hour = 0;\n            }\n            if (bits[3].toLowerCase() == 'p') {\n                if (hour == 12) {\n                    hour = 0;\n                }\n                return (hour + 12) + ':' + mins;\n            } else {\n                if (hour < 10) {\n                    return '0' + hour + ':' + mins;\n                } else {\n                    return hour + ':' + mins;\n                }\n            }\n        }\n    },\n    // noon\n    {   re: /^no/i,\n        handler: function(bits) {\n            return '12:00';\n        }\n    },\n    // midnight\n    {   re: /^mid/i,\n        handler: function(bits) {\n            return '00:00';\n        }\n    }\n];\n\nfunction parseTimeString(s) {\n    for (var i = 0; i < timeParsePatterns.length; i++) {\n        var re = timeParsePatterns[i].re;\n        var handler = timeParsePatterns[i].handler;\n        var bits = re.exec(s);\n        if (bits) {\n            return handler(bits);\n        }\n    }\n    return s;\n}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/static/admin/js/urlify.js",
    "content": "var LATIN_MAP = {\n    'À': 'A', 'Á': 'A', 'Â': 'A', 'Ã': 'A', 'Ä': 'A', 'Å': 'A', 'Æ': 'AE', 'Ç':\n    'C', 'È': 'E', 'É': 'E', 'Ê': 'E', 'Ë': 'E', 'Ì': 'I', 'Í': 'I', 'Î': 'I',\n    'Ï': 'I', 'Ð': 'D', 'Ñ': 'N', 'Ò': 'O', 'Ó': 'O', 'Ô': 'O', 'Õ': 'O', 'Ö':\n    'O', 'Ő': 'O', 'Ø': 'O', 'Ù': 'U', 'Ú': 'U', 'Û': 'U', 'Ü': 'U', 'Ű': 'U',\n    'Ý': 'Y', 'Þ': 'TH', 'ß': 'ss', 'à':'a', 'á':'a', 'â': 'a', 'ã': 'a', 'ä':\n    'a', 'å': 'a', 'æ': 'ae', 'ç': 'c', 'è': 'e', 'é': 'e', 'ê': 'e', 'ë': 'e',\n    'ì': 'i', 'í': 'i', 'î': 'i', 'ï': 'i', 'ð': 'd', 'ñ': 'n', 'ò': 'o', 'ó':\n    'o', 'ô': 'o', 'õ': 'o', 'ö': 'o', 'ő': 'o', 'ø': 'o', 'ù': 'u', 'ú': 'u',\n    'û': 'u', 'ü': 'u', 'ű': 'u', 'ý': 'y', 'þ': 'th', 'ÿ': 'y'\n}\nvar LATIN_SYMBOLS_MAP = {\n    '©':'(c)'\n}\nvar GREEK_MAP = {\n    'α':'a', 'β':'b', 'γ':'g', 'δ':'d', 'ε':'e', 'ζ':'z', 'η':'h', 'θ':'8',\n    'ι':'i', 'κ':'k', 'λ':'l', 'μ':'m', 'ν':'n', 'ξ':'3', 'ο':'o', 'π':'p',\n    'ρ':'r', 'σ':'s', 'τ':'t', 'υ':'y', 'φ':'f', 'χ':'x', 'ψ':'ps', 'ω':'w',\n    'ά':'a', 'έ':'e', 'ί':'i', 'ό':'o', 'ύ':'y', 'ή':'h', 'ώ':'w', 'ς':'s',\n    'ϊ':'i', 'ΰ':'y', 'ϋ':'y', 'ΐ':'i',\n    'Α':'A', 'Β':'B', 'Γ':'G', 'Δ':'D', 'Ε':'E', 'Ζ':'Z', 'Η':'H', 'Θ':'8',\n    'Ι':'I', 'Κ':'K', 'Λ':'L', 'Μ':'M', 'Ν':'N', 'Ξ':'3', 'Ο':'O', 'Π':'P',\n    'Ρ':'R', 'Σ':'S', 'Τ':'T', 'Υ':'Y', 'Φ':'F', 'Χ':'X', 'Ψ':'PS', 'Ω':'W',\n    'Ά':'A', 'Έ':'E', 'Ί':'I', 'Ό':'O', 'Ύ':'Y', 'Ή':'H', 'Ώ':'W', 'Ϊ':'I',\n    'Ϋ':'Y'\n}\nvar TURKISH_MAP = {\n    'ş':'s', 'Ş':'S', 'ı':'i', 'İ':'I', 'ç':'c', 'Ç':'C', 'ü':'u', 'Ü':'U',\n    'ö':'o', 'Ö':'O', 'ğ':'g', 'Ğ':'G'\n}\nvar RUSSIAN_MAP = {\n    'а':'a', 'б':'b', 'в':'v', 'г':'g', 'д':'d', 'е':'e', 'ё':'yo', 'ж':'zh',\n    'з':'z', 'и':'i', 'й':'j', 'к':'k', 'л':'l', 'м':'m', 'н':'n', 'о':'o',\n    'п':'p', 'р':'r', 'с':'s', 'т':'t', 'у':'u', 'ф':'f', 'х':'h', 'ц':'c',\n    'ч':'ch', 'ш':'sh', 'щ':'sh', 'ъ':'', 'ы':'y', 'ь':'', 'э':'e', 'ю':'yu',\n    'я':'ya',\n    'А':'A', 'Б':'B', 'В':'V', 'Г':'G', 'Д':'D', 'Е':'E', 'Ё':'Yo', 'Ж':'Zh',\n    'З':'Z', 'И':'I', 'Й':'J', 'К':'K', 'Л':'L', 'М':'M', 'Н':'N', 'О':'O',\n    'П':'P', 'Р':'R', 'С':'S', 'Т':'T', 'У':'U', 'Ф':'F', 'Х':'H', 'Ц':'C',\n    'Ч':'Ch', 'Ш':'Sh', 'Щ':'Sh', 'Ъ':'', 'Ы':'Y', 'Ь':'', 'Э':'E', 'Ю':'Yu',\n    'Я':'Ya'\n}\nvar UKRAINIAN_MAP = {\n    'Є':'Ye', 'І':'I', 'Ї':'Yi', 'Ґ':'G', 'є':'ye', 'і':'i', 'ї':'yi', 'ґ':'g'\n}\nvar CZECH_MAP = {\n    'č':'c', 'ď':'d', 'ě':'e', 'ň': 'n', 'ř':'r', 'š':'s', 'ť':'t', 'ů':'u',\n    'ž':'z', 'Č':'C', 'Ď':'D', 'Ě':'E', 'Ň': 'N', 'Ř':'R', 'Š':'S', 'Ť':'T',\n    'Ů':'U', 'Ž':'Z'\n}\n\nvar POLISH_MAP = {\n    'ą':'a', 'ć':'c', 'ę':'e', 'ł':'l', 'ń':'n', 'ó':'o', 'ś':'s', 'ź':'z',\n    'ż':'z', 'Ą':'A', 'Ć':'C', 'Ę':'e', 'Ł':'L', 'Ń':'N', 'Ó':'o', 'Ś':'S',\n    'Ź':'Z', 'Ż':'Z'\n}\n\nvar LATVIAN_MAP = {\n    'ā':'a', 'č':'c', 'ē':'e', 'ģ':'g', 'ī':'i', 'ķ':'k', 'ļ':'l', 'ņ':'n',\n    'š':'s', 'ū':'u', 'ž':'z', 'Ā':'A', 'Č':'C', 'Ē':'E', 'Ģ':'G', 'Ī':'i',\n    'Ķ':'k', 'Ļ':'L', 'Ņ':'N', 'Š':'S', 'Ū':'u', 'Ž':'Z'\n}\n\nvar ALL_DOWNCODE_MAPS=new Array()\nALL_DOWNCODE_MAPS[0]=LATIN_MAP\nALL_DOWNCODE_MAPS[1]=LATIN_SYMBOLS_MAP\nALL_DOWNCODE_MAPS[2]=GREEK_MAP\nALL_DOWNCODE_MAPS[3]=TURKISH_MAP\nALL_DOWNCODE_MAPS[4]=RUSSIAN_MAP\nALL_DOWNCODE_MAPS[5]=UKRAINIAN_MAP\nALL_DOWNCODE_MAPS[6]=CZECH_MAP\nALL_DOWNCODE_MAPS[7]=POLISH_MAP\nALL_DOWNCODE_MAPS[8]=LATVIAN_MAP\n\nvar Downcoder = new Object();\nDowncoder.Initialize = function()\n{\n    if (Downcoder.map) // already made\n        return ;\n    Downcoder.map ={}\n    Downcoder.chars = '' ;\n    for(var i in ALL_DOWNCODE_MAPS)\n    {\n        var lookup = ALL_DOWNCODE_MAPS[i]\n        for (var c in lookup)\n        {\n            Downcoder.map[c] = lookup[c] ;\n            Downcoder.chars += c ;\n        }\n     }\n    Downcoder.regex = new RegExp('[' + Downcoder.chars + ']|[^' + Downcoder.chars + ']+','g') ;\n}\n\ndowncode= function( slug )\n{\n    Downcoder.Initialize() ;\n    var downcoded =\"\"\n    var pieces = slug.match(Downcoder.regex);\n    if(pieces)\n    {\n        for (var i = 0 ; i < pieces.length ; i++)\n        {\n            if (pieces[i].length == 1)\n            {\n                var mapped = Downcoder.map[pieces[i]] ;\n                if (mapped != null)\n                {\n                    downcoded+=mapped;\n                    continue ;\n                }\n            }\n            downcoded+=pieces[i];\n        }\n    }\n    else\n    {\n        downcoded = slug;\n    }\n    return downcoded;\n}\n\n\nfunction URLify(s, num_chars) {\n    // changes, e.g., \"Petty theft\" to \"petty_theft\"\n    // remove all these words from the string before urlifying\n    s = downcode(s);\n    removelist = [\"a\", \"an\", \"as\", \"at\", \"before\", \"but\", \"by\", \"for\", \"from\",\n                  \"is\", \"in\", \"into\", \"like\", \"of\", \"off\", \"on\", \"onto\", \"per\",\n                  \"since\", \"than\", \"the\", \"this\", \"that\", \"to\", \"up\", \"via\",\n                  \"with\"];\n    r = new RegExp('\\\\b(' + removelist.join('|') + ')\\\\b', 'gi');\n    s = s.replace(r, '');\n    // if downcode doesn't hit, the char will be stripped here\n    s = s.replace(/[^-\\w\\s]/g, '');  // remove unneeded chars\n    s = s.replace(/^\\s+|\\s+$/g, ''); // trim leading/trailing spaces\n    s = s.replace(/[-\\s]+/g, '-');   // convert spaces to hyphens\n    s = s.toLowerCase();             // convert to lowercase\n    return s.substring(0, num_chars);// trim to first num_chars chars\n}\n\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/templates/admin/404.html",
    "content": "{% extends \"admin/base_site.html\" %}\n{% load i18n %}\n\n{% block title %}{% trans 'Page not found' %}{% endblock %}\n\n{% block content %}\n\n<h2>{% trans 'Page not found' %}</h2>\n\n<p>{% trans \"We're sorry, but the requested page could not be found.\" %}</p>\n\n{% endblock %}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/templates/admin/500.html",
    "content": "{% extends \"admin/base_site.html\" %}\n{% load i18n %}\n\n{% block breadcrumbs %}\n<div class=\"breadcrumbs\">\n<a href=\"{% url 'admin:index' %}\">{% trans 'Home' %}</a>\n&rsaquo; {% trans 'Server error' %}\n</div>\n{% endblock %}\n\n{% block title %}{% trans 'Server error (500)' %}{% endblock %}\n\n{% block content %}\n<h1>{% trans 'Server Error <em>(500)</em>' %}</h1>\n<p>{% trans \"There's been an error. It's been reported to the site administrators via email and should be fixed shortly. Thanks for your patience.\" %}</p>\n\n{% endblock %}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/templates/admin/actions.html",
    "content": "{% load i18n %}\n<div class=\"actions\">\n    {% for field in action_form %}{% if field.label %}<label>{{ field.label }} {% endif %}{{ field }}{% if field.label %}</label>{% endif %}{% endfor %}\n    <button type=\"submit\" class=\"button\" title=\"{% trans \"Run the selected action\" %}\" name=\"index\" value=\"{{ action_index|default:0 }}\">{% trans \"Go\" %}</button>\n    {% if actions_selection_counter %}\n        <script type=\"text/javascript\">var _actions_icnt=\"{{ cl.result_list|length|default:\"0\" }}\";</script>\n        <span class=\"action-counter\">{{ selection_note }}</span>\n        {% if cl.result_count != cl.result_list|length %}\n        <span class=\"all\">{{ selection_note_all }}</span>\n        <span class=\"question\">\n            <a href=\"javascript:;\" title=\"{% trans \"Click here to select the objects across all pages\" %}\">{% blocktrans with cl.result_count as total_count %}Select all {{ total_count }} {{ module_name }}{% endblocktrans %}</a>\n        </span>\n        <span class=\"clear\"><a href=\"javascript:;\">{% trans \"Clear selection\" %}</a></span>\n        {% endif %}\n    {% endif %}\n</div>\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/templates/admin/app_index.html",
    "content": "{% extends \"admin/index.html\" %}\n{% load i18n %}\n\n{% if not is_popup %}\n{% block breadcrumbs %}\n<div class=\"breadcrumbs\">\n<a href=\"{% url 'admin:index' %}\">{% trans 'Home' %}</a>\n&rsaquo;\n{% for app in app_list %}\n{% blocktrans with app.name as name %}{{ name }}{% endblocktrans %}\n{% endfor %}\n</div>\n{% endblock %}\n{% endif %}\n\n{% block sidebar %}{% endblock %}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/templates/admin/auth/user/add_form.html",
    "content": "{% extends \"admin/change_form.html\" %}\n{% load i18n %}\n\n{% block form_top %}\n  {% if not is_popup %}\n    <p>{% trans \"First, enter a username and password. Then, you'll be able to edit more user options.\" %}</p>\n  {% else %}\n    <p>{% trans \"Enter a username and password.\" %}</p>\n  {% endif %}\n{% endblock %}\n\n{% block after_field_sets %}\n<script type=\"text/javascript\">document.getElementById(\"id_username\").focus();</script>\n{% endblock %}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/templates/admin/auth/user/change_password.html",
    "content": "{% extends \"admin/base_site.html\" %}\n{% load i18n admin_static %}\n{% load admin_urls %}\n\n{% block extrahead %}{{ block.super }}\n<script type=\"text/javascript\" src=\"{% url 'admin:jsi18n' %}\"></script>\n{% endblock %}\n{% block extrastyle %}{{ block.super }}<link rel=\"stylesheet\" type=\"text/css\" href=\"{% static \"admin/css/forms.css\" %}\" />{% endblock %}\n{% block bodyclass %}{{ opts.app_label }}-{{ opts.object_name.lower }} change-form{% endblock %}\n{% if not is_popup %}\n{% block breadcrumbs %}\n<div class=\"breadcrumbs\">\n<a href=\"{% url 'admin:index' %}\">{% trans 'Home' %}</a>\n&rsaquo; <a href=\"{% url 'admin:app_list' app_label=opts.app_label %}\">{{ opts.app_label|capfirst|escape }}</a>\n&rsaquo; <a href=\"{% url opts|admin_urlname:'changelist' %}\">{{ opts.verbose_name_plural|capfirst }}</a>\n&rsaquo; <a href=\"{% url opts|admin_urlname:'change' original.pk|admin_urlquote %}\">{{ original|truncatewords:\"18\" }}</a>\n&rsaquo; {% trans 'Change password' %}\n</div>\n{% endblock %}\n{% endif %}\n{% block content %}<div id=\"content-main\">\n<form action=\"{{ form_url }}\" method=\"post\" id=\"{{ opts.module_name }}_form\">{% csrf_token %}{% block form_top %}{% endblock %}\n<div>\n{% if is_popup %}<input type=\"hidden\" name=\"_popup\" value=\"1\" />{% endif %}\n{% if form.errors %}\n    <p class=\"errornote\">\n    {% blocktrans count counter=form.errors.items|length %}Please correct the error below.{% plural %}Please correct the errors below.{% endblocktrans %}\n    </p>\n{% endif %}\n\n<p>{% blocktrans with username=original %}Enter a new password for the user <strong>{{ username }}</strong>.{% endblocktrans %}</p>\n\n<fieldset class=\"module aligned\">\n\n<div class=\"form-row\">\n  {{ form.password1.errors }}\n  {# TODO: get required class on label_tag #}\n  <label for=\"id_password1\" class=\"required\">{% trans 'Password' %}:</label> {{ form.password1 }}\n</div>\n\n<div class=\"form-row\">\n  {{ form.password2.errors }}\n  {# TODO: get required class on label_tag #}\n  <label for=\"id_password2\" class=\"required\">{% trans 'Password (again)' %}:</label> {{ form.password2 }}\n  <p class=\"help\">{% trans 'Enter the same password as above, for verification.' %}</p>\n</div>\n\n</fieldset>\n\n<div class=\"submit-row\">\n<input type=\"submit\" value=\"{% trans 'Change password' %}\" class=\"default\" />\n</div>\n\n<script type=\"text/javascript\">document.getElementById(\"id_password1\").focus();</script>\n</div>\n</form></div>\n{% endblock %}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/templates/admin/base.html",
    "content": "{% load admin_static %}<!DOCTYPE html>\n<html lang=\"{{ LANGUAGE_CODE|default:\"en-us\" }}\" {% if LANGUAGE_BIDI %}dir=\"rtl\"{% endif %}>\n<head>\n<title>{% block title %}{% endblock %}</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"{% block stylesheet %}{% static \"admin/css/base.css\" %}{% endblock %}\" />\n{% block extrastyle %}{% endblock %}\n<!--[if lte IE 7]><link rel=\"stylesheet\" type=\"text/css\" href=\"{% block stylesheet_ie %}{% static \"admin/css/ie.css\" %}{% endblock %}\" /><![endif]-->\n{% if LANGUAGE_BIDI %}<link rel=\"stylesheet\" type=\"text/css\" href=\"{% block stylesheet_rtl %}{% static \"admin/css/rtl.css\" %}{% endblock %}\" />{% endif %}\n<script type=\"text/javascript\">window.__admin_media_prefix__ = \"{% filter escapejs %}{% static \"admin/\" %}{% endfilter %}\";</script>\n{% block extrahead %}{% endblock %}\n{% block blockbots %}<meta name=\"robots\" content=\"NONE,NOARCHIVE\" />{% endblock %}\n</head>\n{% load i18n %}\n\n<body class=\"{% if is_popup %}popup {% endif %}{% block bodyclass %}{% endblock %}\">\n\n<!-- Container -->\n<div id=\"container\">\n\n    {% if not is_popup %}\n    <!-- Header -->\n    <div id=\"header\">\n        <div id=\"branding\">\n        {% block branding %}{% endblock %}\n        </div>\n        {% if user.is_active and user.is_staff %}\n        <div id=\"user-tools\">\n            {% trans 'Welcome,' %}\n            <strong>{% filter force_escape %}{% firstof user.get_short_name user.get_username %}{% endfilter %}</strong>.\n            {% block userlinks %}\n                {% url 'django-admindocs-docroot' as docsroot %}\n                {% if docsroot %}\n                    <a href=\"{{ docsroot }}\">{% trans 'Documentation' %}</a> /\n                {% endif %}\n                {% if user.has_usable_password %}\n                <a href=\"{% url 'admin:password_change' %}\">{% trans 'Change password' %}</a> /\n                {% endif %}\n                <a href=\"{% url 'admin:logout' %}\">{% trans 'Log out' %}</a>\n            {% endblock %}\n        </div>\n        {% endif %}\n        {% block nav-global %}{% endblock %}\n    </div>\n    <!-- END Header -->\n    {% block breadcrumbs %}\n    <div class=\"breadcrumbs\">\n    <a href=\"{% url 'admin:index' %}\">{% trans 'Home' %}</a>\n    {% if title %} &rsaquo; {{ title }}{% endif %}\n    </div>\n    {% endblock %}\n    {% endif %}\n\n    {% block messages %}\n        {% if messages %}\n        <ul class=\"messagelist\">{% for message in messages %}\n          <li{% if message.tags %} class=\"{{ message.tags }}\"{% endif %}>{{ message }}</li>\n        {% endfor %}</ul>\n        {% endif %}\n    {% endblock messages %}\n\n    <!-- Content -->\n    <div id=\"content\" class=\"{% block coltype %}colM{% endblock %}\">\n        {% block pretitle %}{% endblock %}\n        {% block content_title %}{% if title %}<h1>{{ title }}</h1>{% endif %}{% endblock %}\n        {% block content %}\n        {% block object-tools %}{% endblock %}\n        {{ content }}\n        {% endblock %}\n        {% block sidebar %}{% endblock %}\n        <br class=\"clear\" />\n    </div>\n    <!-- END Content -->\n\n    {% block footer %}<div id=\"footer\"></div>{% endblock %}\n</div>\n<!-- END Container -->\n\n</body>\n</html>\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/templates/admin/base_site.html",
    "content": "{% extends \"admin/base.html\" %}\n{% load i18n %}\n\n{% block title %}{{ title }} | {% trans 'Django site admin' %}{% endblock %}\n\n{% block branding %}\n<h1 id=\"site-name\">{% trans 'Django administration' %}</h1>\n{% endblock %}\n\n{% block nav-global %}{% endblock %}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/templates/admin/change_form.html",
    "content": "{% extends \"admin/base_site.html\" %}\n{% load i18n admin_static admin_modify %}\n{% load admin_urls %}\n\n{% block extrahead %}{{ block.super }}\n<script type=\"text/javascript\" src=\"{% url 'admin:jsi18n' %}\"></script>\n{{ media }}\n{% endblock %}\n\n{% block extrastyle %}{{ block.super }}<link rel=\"stylesheet\" type=\"text/css\" href=\"{% static \"admin/css/forms.css\" %}\" />{% endblock %}\n\n{% block coltype %}{% if ordered_objects %}colMS{% else %}colM{% endif %}{% endblock %}\n\n{% block bodyclass %}{{ opts.app_label }}-{{ opts.object_name.lower }} change-form{% endblock %}\n\n{% if not is_popup %}\n{% block breadcrumbs %}\n<div class=\"breadcrumbs\">\n<a href=\"{% url 'admin:index' %}\">{% trans 'Home' %}</a>\n&rsaquo; <a href=\"{% url 'admin:app_list' app_label=opts.app_label %}\">{{ app_label|capfirst|escape }}</a>\n&rsaquo; {% if has_change_permission %}<a href=\"{% url opts|admin_urlname:'changelist' %}\">{{ opts.verbose_name_plural|capfirst }}</a>{% else %}{{ opts.verbose_name_plural|capfirst }}{% endif %}\n&rsaquo; {% if add %}{% trans 'Add' %} {{ opts.verbose_name }}{% else %}{{ original|truncatewords:\"18\" }}{% endif %}\n</div>\n{% endblock %}\n{% endif %}\n\n{% block content %}<div id=\"content-main\">\n{% block object-tools %}\n{% if change %}{% if not is_popup %}\n  <ul class=\"object-tools\">\n    {% block object-tools-items %}\n    <li><a href=\"{% url opts|admin_urlname:'history' original.pk|admin_urlquote %}\" class=\"historylink\">{% trans \"History\" %}</a></li>\n    {% if has_absolute_url %}<li><a href=\"{% url 'admin:view_on_site' content_type_id original.pk %}\" class=\"viewsitelink\">{% trans \"View on site\" %}</a></li>{% endif%}\n    {% endblock %}\n  </ul>\n{% endif %}{% endif %}\n{% endblock %}\n<form {% if has_file_field %}enctype=\"multipart/form-data\" {% endif %}action=\"{{ form_url }}\" method=\"post\" id=\"{{ opts.module_name }}_form\">{% csrf_token %}{% block form_top %}{% endblock %}\n<div>\n{% if is_popup %}<input type=\"hidden\" name=\"_popup\" value=\"1\" />{% endif %}\n{% if save_on_top %}{% block submit_buttons_top %}{% submit_row %}{% endblock %}{% endif %}\n{% if errors %}\n    <p class=\"errornote\">\n    {% blocktrans count counter=errors|length %}Please correct the error below.{% plural %}Please correct the errors below.{% endblocktrans %}\n    </p>\n    {{ adminform.form.non_field_errors }}\n{% endif %}\n\n{% block field_sets %}\n{% for fieldset in adminform %}\n  {% include \"admin/includes/fieldset.html\" %}\n{% endfor %}\n{% endblock %}\n\n{% block after_field_sets %}{% endblock %}\n\n{% block inline_field_sets %}\n{% for inline_admin_formset in inline_admin_formsets %}\n    {% include inline_admin_formset.opts.template %}\n{% endfor %}\n{% endblock %}\n\n{% block after_related_objects %}{% endblock %}\n\n{% block submit_buttons_bottom %}{% submit_row %}{% endblock %}\n\n{% if adminform.first_field and add %}\n   <script type=\"text/javascript\">document.getElementById(\"{{ adminform.first_field.id_for_label }}\").focus();</script>\n{% endif %}\n\n{# JavaScript for prepopulated fields #}\n{% prepopulated_fields_js %}\n\n</div>\n</form></div>\n{% endblock %}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/templates/admin/change_list.html",
    "content": "{% extends \"admin/base_site.html\" %}\n{% load i18n admin_static admin_list %}\n{% load admin_urls %}\n\n{% block extrastyle %}\n  {{ block.super }}\n  <link rel=\"stylesheet\" type=\"text/css\" href=\"{% static \"admin/css/changelists.css\" %}\" />\n  {% if cl.formset %}\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"{% static \"admin/css/forms.css\" %}\" />\n  {% endif %}\n  {% if cl.formset or action_form %}\n    <script type=\"text/javascript\" src=\"{% url 'admin:jsi18n' %}\"></script>\n  {% endif %}\n  {{ media.css }}\n  {% if not actions_on_top and not actions_on_bottom %}\n    <style>\n      #changelist table thead th:first-child {width: inherit}\n    </style>\n  {% endif %}\n{% endblock %}\n\n{% block extrahead %}\n{{ block.super }}\n{{ media.js }}\n{% if action_form %}{% if actions_on_top or actions_on_bottom %}\n<script type=\"text/javascript\">\n(function($) {\n    $(document).ready(function($) {\n        $(\"tr input.action-select\").actions();\n    });\n})(django.jQuery);\n</script>\n{% endif %}{% endif %}\n{% endblock %}\n\n{% block bodyclass %}change-list{% endblock %}\n\n{% if not is_popup %}\n{% block breadcrumbs %}\n<div class=\"breadcrumbs\">\n<a href=\"{% url 'admin:index' %}\">{% trans 'Home' %}</a>\n&rsaquo; <a href=\"{% url 'admin:app_list' app_label=cl.opts.app_label %}\">{{ app_label|capfirst|escape }}</a>\n&rsaquo; {{ cl.opts.verbose_name_plural|capfirst }}\n</div>\n{% endblock %}\n{% endif %}\n\n{% block coltype %}flex{% endblock %}\n\n{% block content %}\n  <div id=\"content-main\">\n    {% block object-tools %}\n      {% if has_add_permission %}\n        <ul class=\"object-tools\">\n          {% block object-tools-items %}\n            <li>\n              <a href=\"{% url cl.opts|admin_urlname:'add' %}{% if is_popup %}?_popup=1{% endif %}\" class=\"addlink\">\n                {% blocktrans with cl.opts.verbose_name as name %}Add {{ name }}{% endblocktrans %}\n              </a>\n            </li>\n          {% endblock %}\n        </ul>\n      {% endif %}\n    {% endblock %}\n    {% if cl.formset.errors %}\n        <p class=\"errornote\">\n        {% blocktrans count cl.formset.errors|length as counter %}Please correct the error below.{% plural %}Please correct the errors below.{% endblocktrans %}\n        </p>\n        {{ cl.formset.non_form_errors }}\n    {% endif %}\n    <div class=\"module{% if cl.has_filters %} filtered{% endif %}\" id=\"changelist\">\n      {% block search %}{% search_form cl %}{% endblock %}\n      {% block date_hierarchy %}{% date_hierarchy cl %}{% endblock %}\n\n      {% block filters %}\n        {% if cl.has_filters %}\n          <div id=\"changelist-filter\">\n            <h2>{% trans 'Filter' %}</h2>\n            {% for spec in cl.filter_specs %}{% admin_list_filter cl spec %}{% endfor %}\n          </div>\n        {% endif %}\n      {% endblock %}\n\n      <form id=\"changelist-form\" action=\"\" method=\"post\"{% if cl.formset.is_multipart %} enctype=\"multipart/form-data\"{% endif %}>{% csrf_token %}\n      {% if cl.formset %}\n        <div>{{ cl.formset.management_form }}</div>\n      {% endif %}\n\n      {% block result_list %}\n          {% if action_form and actions_on_top and cl.full_result_count %}{% admin_actions %}{% endif %}\n          {% result_list cl %}\n          {% if action_form and actions_on_bottom and cl.full_result_count %}{% admin_actions %}{% endif %}\n      {% endblock %}\n      {% block pagination %}{% pagination cl %}{% endblock %}\n      </form>\n    </div>\n  </div>\n{% endblock %}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/templates/admin/change_list_results.html",
    "content": "{% load i18n admin_static %}\n{% if result_hidden_fields %}\n<div class=\"hiddenfields\">{# DIV for HTML validation #}\n{% for item in result_hidden_fields %}{{ item }}{% endfor %}\n</div>\n{% endif %}\n{% if results %}\n<div class=\"results\">\n<table id=\"result_list\">\n<thead>\n<tr>\n{% for header in result_headers %}\n<th scope=\"col\" {{ header.class_attrib }}>\n   {% if header.sortable %}\n     {% if header.sort_priority > 0 %}\n       <div class=\"sortoptions\">\n         <a class=\"sortremove\" href=\"{{ header.url_remove }}\" title=\"{% trans \"Remove from sorting\" %}\"></a>\n         {% if num_sorted_fields > 1 %}<span class=\"sortpriority\" title=\"{% blocktrans with priority_number=header.sort_priority %}Sorting priority: {{ priority_number }}{% endblocktrans %}\">{{ header.sort_priority }}</span>{% endif %}\n         <a href=\"{{ header.url_toggle }}\" class=\"toggle {% if header.ascending %}ascending{% else %}descending{% endif %}\" title=\"{% trans \"Toggle sorting\" %}\"></a>\n       </div>\n     {% endif %}\n   {% endif %}\n   <div class=\"text\">{% if header.sortable %}<a href=\"{{ header.url_primary }}\">{{ header.text|capfirst }}</a>{% else %}<span>{{ header.text|capfirst }}</span>{% endif %}</div>\n   <div class=\"clear\"></div>\n</th>{% endfor %}\n</tr>\n</thead>\n<tbody>\n{% for result in results %}\n{% if result.form.non_field_errors %}\n    <tr><td colspan=\"{{ result|length }}\">{{ result.form.non_field_errors }}</td></tr>\n{% endif %}\n<tr class=\"{% cycle 'row1' 'row2' %}\">{% for item in result %}{{ item }}{% endfor %}</tr>\n{% endfor %}\n</tbody>\n</table>\n</div>\n{% endif %}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/templates/admin/date_hierarchy.html",
    "content": "{% if show %}\n<div class=\"xfull\">\n<ul class=\"toplinks\">\n{% if back %}<li class=\"date-back\"><a href=\"{{ back.link }}\">&lsaquo; {{ back.title }}</a></li>{% endif %}\n{% for choice in choices %}\n<li> {% if choice.link %}<a href=\"{{ choice.link }}\">{% endif %}{{ choice.title }}{% if choice.link %}</a>{% endif %}</li>\n{% endfor %}\n</ul><br class=\"clear\" />\n</div>\n{% endif %}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/templates/admin/delete_confirmation.html",
    "content": "{% extends \"admin/base_site.html\" %}\n{% load i18n %}\n{% load admin_urls %}\n\n{% block breadcrumbs %}\n<div class=\"breadcrumbs\">\n<a href=\"{% url 'admin:index' %}\">{% trans 'Home' %}</a>\n&rsaquo; <a href=\"{% url 'admin:app_list' app_label=opts.app_label %}\">{{ app_label|capfirst }}</a>\n&rsaquo; <a href=\"{% url opts|admin_urlname:'changelist' %}\">{{ opts.verbose_name_plural|capfirst|escape }}</a>\n&rsaquo; <a href=\"{% url opts|admin_urlname:'change' object.pk|admin_urlquote %}\">{{ object|truncatewords:\"18\" }}</a>\n&rsaquo; {% trans 'Delete' %}\n</div>\n{% endblock %}\n\n{% block content %}\n{% if perms_lacking or protected %}\n    {% if perms_lacking %}\n        <p>{% blocktrans with escaped_object=object %}Deleting the {{ object_name }} '{{ escaped_object }}' would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:{% endblocktrans %}</p>\n        <ul>\n        {% for obj in perms_lacking %}\n            <li>{{ obj }}</li>\n        {% endfor %}\n        </ul>\n    {% endif %}\n    {% if protected %}\n        <p>{% blocktrans with escaped_object=object %}Deleting the {{ object_name }} '{{ escaped_object }}' would require deleting the following protected related objects:{% endblocktrans %}</p>\n        <ul>\n        {% for obj in protected %}\n            <li>{{ obj }}</li>\n        {% endfor %}\n        </ul>\n    {% endif %}\n{% else %}\n    <p>{% blocktrans with escaped_object=object %}Are you sure you want to delete the {{ object_name }} \"{{ escaped_object }}\"? All of the following related items will be deleted:{% endblocktrans %}</p>\n    <ul>{{ deleted_objects|unordered_list }}</ul>\n    <form action=\"\" method=\"post\">{% csrf_token %}\n    <div>\n    <input type=\"hidden\" name=\"post\" value=\"yes\" />\n    <input type=\"submit\" value=\"{% trans \"Yes, I'm sure\" %}\" />\n    </div>\n    </form>\n{% endif %}\n{% endblock %}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/templates/admin/delete_selected_confirmation.html",
    "content": "{% extends \"admin/base_site.html\" %}\n{% load i18n l10n %}\n{% load admin_urls %}\n\n{% block breadcrumbs %}\n<div class=\"breadcrumbs\">\n<a href=\"{% url 'admin:index' %}\">{% trans 'Home' %}</a>\n&rsaquo; <a href=\"{% url 'admin:app_list' app_label=app_label %}\">{{ app_label|capfirst|escape }}</a>\n&rsaquo; <a href=\"{% url opts|admin_urlname:'changelist' %}\">{{ opts.verbose_name_plural|capfirst }}</a>\n&rsaquo; {% trans 'Delete multiple objects' %}\n</div>\n{% endblock %}\n\n{% block content %}\n{% if perms_lacking or protected %}\n    {% if perms_lacking %}\n        <p>{% blocktrans %}Deleting the selected {{ objects_name }} would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:{% endblocktrans %}</p>\n        <ul>\n        {% for obj in perms_lacking %}\n            <li>{{ obj }}</li>\n        {% endfor %}\n        </ul>\n    {% endif %}\n    {% if protected %}\n        <p>{% blocktrans %}Deleting the selected {{ objects_name }} would require deleting the following protected related objects:{% endblocktrans %}</p>\n        <ul>\n        {% for obj in protected %}\n            <li>{{ obj }}</li>\n        {% endfor %}\n        </ul>\n    {% endif %}\n{% else %}\n    <p>{% blocktrans %}Are you sure you want to delete the selected {{ objects_name }}? All of the following objects and their related items will be deleted:{% endblocktrans %}</p>\n    {% for deletable_object in deletable_objects %}\n        <ul>{{ deletable_object|unordered_list }}</ul>\n    {% endfor %}\n    <form action=\"\" method=\"post\">{% csrf_token %}\n    <div>\n    {% for obj in queryset %}\n    <input type=\"hidden\" name=\"{{ action_checkbox_name }}\" value=\"{{ obj.pk|unlocalize }}\" />\n    {% endfor %}\n    <input type=\"hidden\" name=\"action\" value=\"delete_selected\" />\n    <input type=\"hidden\" name=\"post\" value=\"yes\" />\n    <input type=\"submit\" value=\"{% trans \"Yes, I'm sure\" %}\" />\n    </div>\n    </form>\n{% endif %}\n{% endblock %}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/templates/admin/edit_inline/stacked.html",
    "content": "{% load i18n admin_static %}\n<div class=\"inline-group\" id=\"{{ inline_admin_formset.formset.prefix }}-group\">\n  <h2>{{ inline_admin_formset.opts.verbose_name_plural|title }}</h2>\n{{ inline_admin_formset.formset.management_form }}\n{{ inline_admin_formset.formset.non_form_errors }}\n\n{% for inline_admin_form in inline_admin_formset %}<div class=\"inline-related{% if forloop.last %} empty-form last-related{% endif %}\" id=\"{{ inline_admin_formset.formset.prefix }}-{% if not forloop.last %}{{ forloop.counter0 }}{% else %}empty{% endif %}\">\n  <h3><b>{{ inline_admin_formset.opts.verbose_name|title }}:</b>&nbsp;<span class=\"inline_label\">{% if inline_admin_form.original %}{{ inline_admin_form.original }}{% else %}#{{ forloop.counter }}{% endif %}</span>\n    {% if inline_admin_form.show_url %}<a href=\"{% url 'admin:view_on_site' inline_admin_form.original_content_type_id inline_admin_form.original.pk %}\">{% trans \"View on site\" %}</a>{% endif %}\n    {% if inline_admin_formset.formset.can_delete and inline_admin_form.original %}<span class=\"delete\">{{ inline_admin_form.deletion_field.field }} {{ inline_admin_form.deletion_field.label_tag }}</span>{% endif %}\n  </h3>\n  {% if inline_admin_form.form.non_field_errors %}{{ inline_admin_form.form.non_field_errors }}{% endif %}\n  {% for fieldset in inline_admin_form %}\n    {% include \"admin/includes/fieldset.html\" %}\n  {% endfor %}\n  {% if inline_admin_form.has_auto_field %}{{ inline_admin_form.pk_field.field }}{% endif %}\n  {{ inline_admin_form.fk_field.field }}\n</div>{% endfor %}\n</div>\n\n<script type=\"text/javascript\">\n(function($) {\n  $(\"#{{ inline_admin_formset.formset.prefix }}-group .inline-related\").stackedFormset({\n    prefix: '{{ inline_admin_formset.formset.prefix }}',\n    adminStaticPrefix: '{% static \"admin/\" %}',\n    deleteText: \"{% trans \"Remove\" %}\",\n    addText: \"{% blocktrans with verbose_name=inline_admin_formset.opts.verbose_name|title %}Add another {{ verbose_name }}{% endblocktrans %}\"\n  });\n})(django.jQuery);\n</script>\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/templates/admin/edit_inline/tabular.html",
    "content": "{% load i18n admin_static admin_modify %}\n<div class=\"inline-group\" id=\"{{ inline_admin_formset.formset.prefix }}-group\">\n  <div class=\"tabular inline-related {% if forloop.last %}last-related{% endif %}\">\n{{ inline_admin_formset.formset.management_form }}\n<fieldset class=\"module\">\n   <h2>{{ inline_admin_formset.opts.verbose_name_plural|capfirst }}</h2>\n   {{ inline_admin_formset.formset.non_form_errors }}\n   <table>\n     <thead><tr>\n     {% for field in inline_admin_formset.fields %}\n       {% if not field.widget.is_hidden %}\n         <th{% if forloop.first %} colspan=\"2\"{% endif %}{% if field.required %} class=\"required\"{% endif %}>{{ field.label|capfirst }}\n         {% if field.help_text %}&nbsp;<img src=\"{% static \"admin/img/icon-unknown.gif\" %}\" class=\"help help-tooltip\" width=\"10\" height=\"10\" alt=\"({{ field.help_text|striptags }})\" title=\"{{ field.help_text|striptags }}\" />{% endif %}\n         </th>\n       {% endif %}\n     {% endfor %}\n     {% if inline_admin_formset.formset.can_delete %}<th>{% trans \"Delete?\" %}</th>{% endif %}\n     </tr></thead>\n\n     <tbody>\n     {% for inline_admin_form in inline_admin_formset %}\n        {% if inline_admin_form.form.non_field_errors %}\n        <tr><td colspan=\"{{ inline_admin_form|cell_count }}\">{{ inline_admin_form.form.non_field_errors }}</td></tr>\n        {% endif %}\n        <tr class=\"form-row {% cycle \"row1\" \"row2\" %} {% if inline_admin_form.original or inline_admin_form.show_url %}has_original{% endif %}{% if forloop.last %} empty-form{% endif %}\"\n             id=\"{{ inline_admin_formset.formset.prefix }}-{% if not forloop.last %}{{ forloop.counter0 }}{% else %}empty{% endif %}\">\n        <td class=\"original\">\n          {% if inline_admin_form.original or inline_admin_form.show_url %}<p>\n          {% if inline_admin_form.original %} {{ inline_admin_form.original }}{% endif %}\n          {% if inline_admin_form.show_url %}<a href=\"{% url 'admin:view_on_site' inline_admin_form.original_content_type_id inline_admin_form.original.pk %}\">{% trans \"View on site\" %}</a>{% endif %}\n            </p>{% endif %}\n          {% if inline_admin_form.has_auto_field %}{{ inline_admin_form.pk_field.field }}{% endif %}\n          {{ inline_admin_form.fk_field.field }}\n          {% spaceless %}\n          {% for fieldset in inline_admin_form %}\n            {% for line in fieldset %}\n              {% for field in line %}\n                {% if field.is_hidden %} {{ field.field }} {% endif %}\n              {% endfor %}\n            {% endfor %}\n          {% endfor %}\n          {% endspaceless %}\n        </td>\n        {% for fieldset in inline_admin_form %}\n          {% for line in fieldset %}\n            {% for field in line %}\n              <td{% if field.field.name %} class=\"field-{{ field.field.name }}\"{% endif %}>\n              {% if field.is_readonly %}\n                  <p>{{ field.contents|linebreaksbr }}</p>\n              {% else %}\n                  {{ field.field.errors.as_ul }}\n                  {{ field.field }}\n              {% endif %}\n              </td>\n            {% endfor %}\n          {% endfor %}\n        {% endfor %}\n        {% if inline_admin_formset.formset.can_delete %}\n          <td class=\"delete\">{% if inline_admin_form.original %}{{ inline_admin_form.deletion_field.field }}{% endif %}</td>\n        {% endif %}\n        </tr>\n     {% endfor %}\n     </tbody>\n   </table>\n</fieldset>\n  </div>\n</div>\n\n<script type=\"text/javascript\">\n\n(function($) {\n  $(\"#{{ inline_admin_formset.formset.prefix }}-group .tabular.inline-related tbody tr\").tabularFormset({\n    prefix: \"{{ inline_admin_formset.formset.prefix }}\",\n    adminStaticPrefix: '{% static \"admin/\" %}',\n    addText: \"{% blocktrans with inline_admin_formset.opts.verbose_name|title as verbose_name %}Add another {{ verbose_name }}{% endblocktrans %}\",\n    deleteText: \"{% trans 'Remove' %}\"\n  });\n})(django.jQuery);\n</script>\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/templates/admin/filter.html",
    "content": "{% load i18n %}\n<h3>{% blocktrans with filter_title=title %} By {{ filter_title }} {% endblocktrans %}</h3>\n<ul>\n{% for choice in choices %}\n    <li{% if choice.selected %} class=\"selected\"{% endif %}>\n    <a href=\"{{ choice.query_string|iriencode }}\">{{ choice.display }}</a></li>\n{% endfor %}\n</ul>\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/templates/admin/includes/fieldset.html",
    "content": "<fieldset class=\"module aligned {{ fieldset.classes }}\">\n    {% if fieldset.name %}<h2>{{ fieldset.name }}</h2>{% endif %}\n    {% if fieldset.description %}\n        <div class=\"description\">{{ fieldset.description|safe }}</div>\n    {% endif %}\n    {% for line in fieldset %}\n        <div class=\"form-row{% if line.fields|length_is:'1' and line.errors %} errors{% endif %}{% for field in line %}{% if field.field.name %} field-{{ field.field.name }}{% endif %}{% endfor %}\">\n            {% if line.fields|length_is:'1' %}{{ line.errors }}{% endif %}\n            {% for field in line %}\n                <div{% if not line.fields|length_is:'1' %} class=\"field-box{% if field.field.name %} field-{{ field.field.name }}{% endif %}{% if not field.is_readonly and field.errors %} errors{% endif %}\"{% endif %}>\n                    {% if not line.fields|length_is:'1' and not field.is_readonly %}{{ field.errors }}{% endif %}\n                    {% if field.is_checkbox %}\n                        {{ field.field }}{{ field.label_tag }}\n                    {% else %}\n                        {{ field.label_tag }}\n                        {% if field.is_readonly %}\n                            <p>{{ field.contents|linebreaksbr }}</p>\n                        {% else %}\n                            {{ field.field }}\n                        {% endif %}\n                    {% endif %}\n                    {% if field.field.help_text %}\n                        <p class=\"help\">{{ field.field.help_text|safe }}</p>\n                    {% endif %}\n                </div>\n            {% endfor %}\n        </div>\n    {% endfor %}\n</fieldset>\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/templates/admin/index.html",
    "content": "{% extends \"admin/base_site.html\" %}\n{% load i18n admin_static %}\n\n{% block extrastyle %}{{ block.super }}<link rel=\"stylesheet\" type=\"text/css\" href=\"{% static \"admin/css/dashboard.css\" %}\" />{% endblock %}\n\n{% block coltype %}colMS{% endblock %}\n\n{% block bodyclass %}dashboard{% endblock %}\n\n{% block breadcrumbs %}{% endblock %}\n\n{% block content %}\n<div id=\"content-main\">\n\n{% if app_list %}\n    {% for app in app_list %}\n        <div class=\"module\">\n        <table>\n        <caption>\n            <a href=\"{{ app.app_url }}\" class=\"section\" title=\"{% blocktrans with name=app.name %}Models in the {{ name }} application{% endblocktrans %}\">\n                {% blocktrans with name=app.name %}{{ name }}{% endblocktrans %}\n            </a>\n        </caption>\n        {% for model in app.models %}\n            <tr>\n            {% if model.admin_url %}\n                <th scope=\"row\"><a href=\"{{ model.admin_url }}\">{{ model.name }}</a></th>\n            {% else %}\n                <th scope=\"row\">{{ model.name }}</th>\n            {% endif %}\n\n            {% if model.add_url %}\n                <td><a href=\"{{ model.add_url }}\" class=\"addlink\">{% trans 'Add' %}</a></td>\n            {% else %}\n                <td>&nbsp;</td>\n            {% endif %}\n\n            {% if model.admin_url %}\n                <td><a href=\"{{ model.admin_url }}\" class=\"changelink\">{% trans 'Change' %}</a></td>\n            {% else %}\n                <td>&nbsp;</td>\n            {% endif %}\n            </tr>\n        {% endfor %}\n        </table>\n        </div>\n    {% endfor %}\n{% else %}\n    <p>{% trans \"You don't have permission to edit anything.\" %}</p>\n{% endif %}\n</div>\n{% endblock %}\n\n{% block sidebar %}\n<div id=\"content-related\">\n    <div class=\"module\" id=\"recent-actions-module\">\n        <h2>{% trans 'Recent Actions' %}</h2>\n        <h3>{% trans 'My Actions' %}</h3>\n            {% load log %}\n            {% get_admin_log 10 as admin_log for_user user %}\n            {% if not admin_log %}\n            <p>{% trans 'None available' %}</p>\n            {% else %}\n            <ul class=\"actionlist\">\n            {% for entry in admin_log %}\n            <li class=\"{% if entry.is_addition %}addlink{% endif %}{% if entry.is_change %}changelink{% endif %}{% if entry.is_deletion %}deletelink{% endif %}\">\n                {% if entry.is_deletion or not entry.get_admin_url %}\n                    {{ entry.object_repr }}\n                {% else %}\n                    <a href=\"{{ entry.get_admin_url }}\">{{ entry.object_repr }}</a>\n                {% endif %}\n                <br/>\n                {% if entry.content_type %}\n                    <span class=\"mini quiet\">{% filter capfirst %}{% trans entry.content_type.name %}{% endfilter %}</span>\n                {% else %}\n                    <span class=\"mini quiet\">{% trans 'Unknown content' %}</span>\n                {% endif %}\n            </li>\n            {% endfor %}\n            </ul>\n            {% endif %}\n    </div>\n</div>\n{% endblock %}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/templates/admin/invalid_setup.html",
    "content": "{% extends \"admin/base_site.html\" %}\n{% load i18n %}\n\n{% block breadcrumbs %}\n<div class=\"breadcrumbs\">\n<a href=\"{% url 'admin:index' %}\">{% trans 'Home' %}</a>\n&rsaquo; {{ title }}\n</div>\n{% endblock %}\n\n{% block content %}\n<p>{% trans \"Something's wrong with your database installation. Make sure the appropriate database tables have been created, and make sure the database is readable by the appropriate user.\" %}</p>\n{% endblock %}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/templates/admin/login.html",
    "content": "{% extends \"admin/base_site.html\" %}\n{% load i18n admin_static %}\n\n{% block extrastyle %}{{ block.super }}<link rel=\"stylesheet\" type=\"text/css\" href=\"{% static \"admin/css/login.css\" %}\" />{% endblock %}\n\n{% block bodyclass %}login{% endblock %}\n\n{% block nav-global %}{% endblock %}\n\n{% block content_title %}{% endblock %}\n\n{% block breadcrumbs %}{% endblock %}\n\n{% block content %}\n{% if form.errors and not form.non_field_errors and not form.this_is_the_login_form.errors %}\n<p class=\"errornote\">\n{% blocktrans count counter=form.errors.items|length %}Please correct the error below.{% plural %}Please correct the errors below.{% endblocktrans %}\n</p>\n{% endif %}\n\n{% if form.non_field_errors or form.this_is_the_login_form.errors %}\n{% for error in form.non_field_errors|add:form.this_is_the_login_form.errors %}\n<p class=\"errornote\">\n    {{ error }}\n</p>\n{% endfor %}\n{% endif %}\n\n<div id=\"content-main\">\n<form action=\"{{ app_path }}\" method=\"post\" id=\"login-form\">{% csrf_token %}\n  <div class=\"form-row\">\n    {% if not form.this_is_the_login_form.errors %}{{ form.username.errors }}{% endif %}\n    <label for=\"id_username\" class=\"required\">{{ form.username.label }}:</label> {{ form.username }}\n  </div>\n  <div class=\"form-row\">\n    {% if not form.this_is_the_login_form.errors %}{{ form.password.errors }}{% endif %}\n    <label for=\"id_password\" class=\"required\">{% trans 'Password:' %}</label> {{ form.password }}\n    <input type=\"hidden\" name=\"this_is_the_login_form\" value=\"1\" />\n    <input type=\"hidden\" name=\"next\" value=\"{{ next }}\" />\n  </div>\n  {% url 'admin_password_reset' as password_reset_url %}\n  {% if password_reset_url %}\n  <div class=\"password-reset-link\">\n    <a href=\"{{ password_reset_url }}\">{% trans 'Forgotten your password or username?' %}</a>\n  </div>\n  {% endif %}\n  <div class=\"submit-row\">\n    <label>&nbsp;</label><input type=\"submit\" value=\"{% trans 'Log in' %}\" />\n  </div>\n</form>\n\n<script type=\"text/javascript\">\ndocument.getElementById('id_username').focus()\n</script>\n</div>\n{% endblock %}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/templates/admin/object_history.html",
    "content": "{% extends \"admin/base_site.html\" %}\n{% load i18n %}\n{% load admin_urls %}\n\n{% block breadcrumbs %}\n<div class=\"breadcrumbs\">\n<a href=\"{% url 'admin:index' %}\">{% trans 'Home' %}</a>\n&rsaquo; <a href=\"{% url 'admin:app_list' app_label=app_label %}\">{{ app_label|capfirst|escape }}</a>\n&rsaquo; <a href=\"{% url opts|admin_urlname:'changelist' %}\">{{ module_name }}</a>\n&rsaquo; <a href=\"{% url opts|admin_urlname:'change' object.pk|admin_urlquote %}\">{{ object|truncatewords:\"18\" }}</a>\n&rsaquo; {% trans 'History' %}\n</div>\n{% endblock %}\n\n{% block content %}\n<div id=\"content-main\">\n<div class=\"module\">\n\n{% if action_list %}\n    <table id=\"change-history\">\n        <thead>\n        <tr>\n            <th scope=\"col\">{% trans 'Date/time' %}</th>\n            <th scope=\"col\">{% trans 'User' %}</th>\n            <th scope=\"col\">{% trans 'Action' %}</th>\n        </tr>\n        </thead>\n        <tbody>\n        {% for action in action_list %}\n        <tr>\n            <th scope=\"row\">{{ action.action_time|date:\"DATETIME_FORMAT\" }}</th>\n            <td>{{ action.user.get_username }}{% if action.user.get_full_name %} ({{ action.user.get_full_name }}){% endif %}</td>\n            <td>{{ action.change_message }}</td>\n        </tr>\n        {% endfor %}\n        </tbody>\n    </table>\n{% else %}\n    <p>{% trans \"This object doesn't have a change history. It probably wasn't added via this admin site.\" %}</p>\n{% endif %}\n</div>\n</div>\n{% endblock %}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/templates/admin/pagination.html",
    "content": "{% load admin_list %}\n{% load i18n %}\n<p class=\"paginator\">\n{% if pagination_required %}\n{% for i in page_range %}\n    {% paginator_number cl i %}\n{% endfor %}\n{% endif %}\n{{ cl.result_count }} {% ifequal cl.result_count 1 %}{{ cl.opts.verbose_name }}{% else %}{{ cl.opts.verbose_name_plural }}{% endifequal %}\n{% if show_all_url %}&nbsp;&nbsp;<a href=\"{{ show_all_url }}\" class=\"showall\">{% trans 'Show all' %}</a>{% endif %}\n{% if cl.formset and cl.result_count %}<input type=\"submit\" name=\"_save\" class=\"default\" value=\"{% trans 'Save' %}\"/>{% endif %}\n</p>\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/templates/admin/prepopulated_fields_js.html",
    "content": "{% load l10n %}\n<script type=\"text/javascript\">\n(function($) {\n    var field;\n\n{% for field in prepopulated_fields %}\n    field = {\n        id: '#{{ field.field.auto_id }}',\n        dependency_ids: [],\n        dependency_list: [],\n        maxLength: {{ field.field.field.max_length|default_if_none:\"50\"|unlocalize }}\n    };\n\n    {% for dependency in field.dependencies %}\n    field['dependency_ids'].push('#{{ dependency.auto_id }}');\n    field['dependency_list'].push('{{ dependency.name }}');\n    {% endfor %}\n\n    {% comment %}\n    Mark prepopulated fields in the main form and stacked inlines (.empty-form .form-row) and in tabular inlines (.empty-form.form-row)\n    {% endcomment %}\n    $('.empty-form .form-row .field-{{ field.field.name }}, .empty-form.form-row .field-{{ field.field.name }}').addClass('prepopulated_field');\n    $(field.id).data('dependency_list', field['dependency_list'])\n               .prepopulate(field['dependency_ids'], field.maxLength);\n{% endfor %}\n})(django.jQuery);\n</script>\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/templates/admin/search_form.html",
    "content": "{% load i18n admin_static %}\n{% if cl.search_fields %}\n<div id=\"toolbar\"><form id=\"changelist-search\" action=\"\" method=\"get\">\n<div><!-- DIV needed for valid HTML -->\n<label for=\"searchbar\"><img src=\"{% static \"admin/img/icon_searchbox.png\" %}\" alt=\"Search\" /></label>\n<input type=\"text\" size=\"40\" name=\"{{ search_var }}\" value=\"{{ cl.query }}\" id=\"searchbar\" />\n<input type=\"submit\" value=\"{% trans 'Search' %}\" />\n{% if show_result_count %}\n    <span class=\"small quiet\">{% blocktrans count counter=cl.result_count %}{{ counter }} result{% plural %}{{ counter }} results{% endblocktrans %} (<a href=\"?{% if cl.is_popup %}pop=1{% endif %}\">{% blocktrans with full_result_count=cl.full_result_count %}{{ full_result_count }} total{% endblocktrans %}</a>)</span>\n{% endif %}\n{% for pair in cl.params.items %}\n    {% ifnotequal pair.0 search_var %}<input type=\"hidden\" name=\"{{ pair.0 }}\" value=\"{{ pair.1 }}\"/>{% endifnotequal %}\n{% endfor %}\n</div>\n</form></div>\n<script type=\"text/javascript\">document.getElementById(\"searchbar\").focus();</script>\n{% endif %}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/templates/admin/submit_line.html",
    "content": "{% load i18n admin_urls %}\n<div class=\"submit-row\">\n{% if show_save %}<input type=\"submit\" value=\"{% trans 'Save' %}\" class=\"default\" name=\"_save\" {{ onclick_attrib }}/>{% endif %}\n{% if show_delete_link %}<p class=\"deletelink-box\"><a href=\"{% url opts|admin_urlname:'delete' original.pk|admin_urlquote %}\" class=\"deletelink\">{% trans \"Delete\" %}</a></p>{% endif %}\n{% if show_save_as_new %}<input type=\"submit\" value=\"{% trans 'Save as new' %}\" name=\"_saveasnew\" {{ onclick_attrib }}/>{%endif%}\n{% if show_save_and_add_another %}<input type=\"submit\" value=\"{% trans 'Save and add another' %}\" name=\"_addanother\" {{ onclick_attrib }}/>{% endif %}\n{% if show_save_and_continue %}<input type=\"submit\" value=\"{% trans 'Save and continue editing' %}\" name=\"_continue\" {{ onclick_attrib }}/>{% endif %}\n</div>\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/templates/registration/logged_out.html",
    "content": "{% extends \"admin/base_site.html\" %}\n{% load i18n %}\n\n{% block breadcrumbs %}<div class=\"breadcrumbs\"><a href=\"{% url 'admin:index' %}\">{% trans 'Home' %}</a></div>{% endblock %}\n\n{% block content %}\n\n<p>{% trans \"Thanks for spending some quality time with the Web site today.\" %}</p>\n\n<p><a href=\"{% url 'admin:index' %}\">{% trans 'Log in again' %}</a></p>\n\n{% endblock %}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/templates/registration/password_change_done.html",
    "content": "{% extends \"admin/base_site.html\" %}\n{% load i18n %}\n{% block userlinks %}{% url 'django-admindocs-docroot' as docsroot %}{% if docsroot %}<a href=\"{{ docsroot }}\">{% trans 'Documentation' %}</a> / {% endif %}{% trans 'Change password' %} / <a href=\"{% url 'admin:logout' %}\">{% trans 'Log out' %}</a>{% endblock %}\n{% block breadcrumbs %}\n<div class=\"breadcrumbs\">\n<a href=\"{% url 'admin:index' %}\">{% trans 'Home' %}</a>\n&rsaquo; {% trans 'Password change' %}\n</div>\n{% endblock %}\n\n{% block title %}{% trans 'Password change successful' %}{% endblock %}\n\n{% block content %}\n\n<h1>{% trans 'Password change successful' %}</h1>\n\n<p>{% trans 'Your password was changed.' %}</p>\n\n{% endblock %}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/templates/registration/password_change_form.html",
    "content": "{% extends \"admin/base_site.html\" %}\n{% load i18n static %}\n{% block extrastyle %}{{ block.super }}<link rel=\"stylesheet\" type=\"text/css\" href=\"{% static \"admin/css/forms.css\" %}\" />{% endblock %}\n{% block userlinks %}{% url 'django-admindocs-docroot' as docsroot %}{% if docsroot %}<a href=\"{{ docsroot }}\">{% trans 'Documentation' %}</a> / {% endif %} {% trans 'Change password' %} / <a href=\"{% url 'admin:logout' %}\">{% trans 'Log out' %}</a>{% endblock %}\n{% block breadcrumbs %}\n<div class=\"breadcrumbs\">\n<a href=\"{% url 'admin:index' %}\">{% trans 'Home' %}</a>\n&rsaquo; {% trans 'Password change' %}\n</div>\n{% endblock %}\n\n{% block title %}{% trans 'Password change' %}{% endblock %}\n\n{% block content %}<div id=\"content-main\">\n\n<form action=\"\" method=\"post\">{% csrf_token %}\n<div>\n{% if form.errors %}\n    <p class=\"errornote\">\n    {% blocktrans count counter=form.errors.items|length %}Please correct the error below.{% plural %}Please correct the errors below.{% endblocktrans %}\n    </p>\n{% endif %}\n\n<h1>{% trans 'Password change' %}</h1>\n\n<p>{% trans \"Please enter your old password, for security's sake, and then enter your new password twice so we can verify you typed it in correctly.\" %}</p>\n\n<fieldset class=\"module aligned wide\">\n\n<div class=\"form-row\">\n    {{ form.old_password.errors }}\n    <label for=\"id_old_password\" class=\"required\">{% trans 'Old password' %}:</label>{{ form.old_password }}\n</div>\n\n<div class=\"form-row\">\n    {{ form.new_password1.errors }}\n    <label for=\"id_new_password1\" class=\"required\">{% trans 'New password' %}:</label>{{ form.new_password1 }}\n</div>\n\n<div class=\"form-row\">\n{{ form.new_password2.errors }}\n    <label for=\"id_new_password2\" class=\"required\">{% trans 'Password (again)' %}:</label>{{ form.new_password2 }}\n</div>\n\n</fieldset>\n\n<div class=\"submit-row\">\n    <input type=\"submit\" value=\"{% trans 'Change my password' %}\" class=\"default\" />\n</div>\n\n<script type=\"text/javascript\">document.getElementById(\"id_old_password\").focus();</script>\n</div>\n</form></div>\n\n{% endblock %}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/templates/registration/password_reset_complete.html",
    "content": "{% extends \"admin/base_site.html\" %}\n{% load i18n %}\n\n{% block breadcrumbs %}\n<div class=\"breadcrumbs\">\n<a href=\"{% url 'admin:index' %}\">{% trans 'Home' %}</a>\n&rsaquo; {% trans 'Password reset' %}\n</div>\n{% endblock %}\n\n{% block title %}{% trans 'Password reset complete' %}{% endblock %}\n\n{% block content %}\n\n<h1>{% trans 'Password reset complete' %}</h1>\n\n<p>{% trans \"Your password has been set.  You may go ahead and log in now.\" %}</p>\n\n<p><a href=\"{{ login_url }}\">{% trans 'Log in' %}</a></p>\n\n{% endblock %}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/templates/registration/password_reset_confirm.html",
    "content": "{% extends \"admin/base_site.html\" %}\n{% load i18n %}\n\n{% block breadcrumbs %}\n<div class=\"breadcrumbs\">\n<a href=\"{% url 'admin:index' %}\">{% trans 'Home' %}</a>\n&rsaquo; {% trans 'Password reset confirmation' %}\n</div>\n{% endblock %}\n\n{% block title %}{% trans 'Password reset' %}{% endblock %}\n\n{% block content %}\n\n{% if validlink %}\n\n<h1>{% trans 'Enter new password' %}</h1>\n\n<p>{% trans \"Please enter your new password twice so we can verify you typed it in correctly.\" %}</p>\n\n<form action=\"\" method=\"post\">{% csrf_token %}\n{{ form.new_password1.errors }}\n<p class=\"aligned wide\"><label for=\"id_new_password1\">{% trans 'New password:' %}</label>{{ form.new_password1 }}</p>\n{{ form.new_password2.errors }}\n<p class=\"aligned wide\"><label for=\"id_new_password2\">{% trans 'Confirm password:' %}</label>{{ form.new_password2 }}</p>\n<p><input type=\"submit\" value=\"{% trans 'Change my password' %}\" /></p>\n</form>\n\n{% else %}\n\n<h1>{% trans 'Password reset unsuccessful' %}</h1>\n\n<p>{% trans \"The password reset link was invalid, possibly because it has already been used.  Please request a new password reset.\" %}</p>\n\n{% endif %}\n\n{% endblock %}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/templates/registration/password_reset_done.html",
    "content": "{% extends \"admin/base_site.html\" %}\n{% load i18n %}\n\n{% block breadcrumbs %}\n<div class=\"breadcrumbs\">\n<a href=\"{% url 'admin:index' %}\">{% trans 'Home' %}</a>\n&rsaquo; {% trans 'Password reset' %}\n</div>\n{% endblock %}\n\n{% block title %}{% trans 'Password reset successful' %}{% endblock %}\n\n{% block content %}\n\n<h1>{% trans 'Password reset successful' %}</h1>\n\n<p>{% trans \"We've emailed you instructions for setting your password to the email address you submitted. You should be receiving it shortly.\" %}</p>\n\n{% endblock %}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/templates/registration/password_reset_email.html",
    "content": "{% load i18n %}{% autoescape off %}\n{% blocktrans %}You're receiving this email because you requested a password reset for your user account at {{ site_name }}.{% endblocktrans %}\n\n{% trans \"Please go to the following page and choose a new password:\" %}\n{% block reset_link %}\n{{ protocol }}://{{ domain }}{% url 'django.contrib.auth.views.password_reset_confirm' uidb36=uid token=token %}\n{% endblock %}\n{% trans \"Your username, in case you've forgotten:\" %} {{ user.get_username }}\n\n{% trans \"Thanks for using our site!\" %}\n\n{% blocktrans %}The {{ site_name }} team{% endblocktrans %}\n\n{% endautoescape %}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/templates/registration/password_reset_form.html",
    "content": "{% extends \"admin/base_site.html\" %}\n{% load i18n %}\n\n{% block breadcrumbs %}\n<div class=\"breadcrumbs\">\n<a href=\"{% url 'admin:index' %}\">{% trans 'Home' %}</a>\n&rsaquo; {% trans 'Password reset' %}\n</div>\n{% endblock %}\n\n{% block title %}{% trans \"Password reset\" %}{% endblock %}\n\n{% block content %}\n\n<h1>{% trans \"Password reset\" %}</h1>\n\n<p>{% trans \"Forgotten your password? Enter your email address below, and we'll email instructions for setting a new one.\" %}</p>\n\n<form action=\"\" method=\"post\">{% csrf_token %}\n{{ form.email.errors }}\n<p><label for=\"id_email\">{% trans 'Email address:' %}</label> {{ form.email }} <input type=\"submit\" value=\"{% trans 'Reset my password' %}\" /></p>\n</form>\n\n{% endblock %}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/templatetags/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/templatetags/admin_list.py",
    "content": "from __future__ import unicode_literals\n\nimport datetime\n\nfrom django.contrib.admin.util import (lookup_field, display_for_field,\n    display_for_value, label_for_field)\nfrom django.contrib.admin.views.main import (ALL_VAR, EMPTY_CHANGELIST_VALUE,\n    ORDER_VAR, PAGE_VAR, SEARCH_VAR)\nfrom django.contrib.admin.templatetags.admin_static import static\nfrom django.core.exceptions import ObjectDoesNotExist\nfrom django.db import models\nfrom django.utils import formats\nfrom django.utils.html import format_html\nfrom django.utils.safestring import mark_safe\nfrom django.utils import six\nfrom django.utils.text import capfirst\nfrom django.utils.translation import ugettext as _\nfrom django.utils.encoding import smart_text, force_text\nfrom django.template import Library\nfrom django.template.loader import get_template\nfrom django.template.context import Context\n\nregister = Library()\n\nDOT = '.'\n\n@register.simple_tag\ndef paginator_number(cl,i):\n    \"\"\"\n    Generates an individual page index link in a paginated list.\n    \"\"\"\n    if i == DOT:\n        return '... '\n    elif i == cl.page_num:\n        return format_html('<span class=\"this-page\">{0}</span> ', i+1)\n    else:\n        return format_html('<a href=\"{0}\"{1}>{2}</a> ',\n                           cl.get_query_string({PAGE_VAR: i}),\n                           mark_safe(' class=\"end\"' if i == cl.paginator.num_pages-1 else ''),\n                           i+1)\n\n@register.inclusion_tag('admin/pagination.html')\ndef pagination(cl):\n    \"\"\"\n    Generates the series of links to the pages in a paginated list.\n    \"\"\"\n    paginator, page_num = cl.paginator, cl.page_num\n\n    pagination_required = (not cl.show_all or not cl.can_show_all) and cl.multi_page\n    if not pagination_required:\n        page_range = []\n    else:\n        ON_EACH_SIDE = 3\n        ON_ENDS = 2\n\n        # If there are 10 or fewer pages, display links to every page.\n        # Otherwise, do some fancy\n        if paginator.num_pages <= 10:\n            page_range = range(paginator.num_pages)\n        else:\n            # Insert \"smart\" pagination links, so that there are always ON_ENDS\n            # links at either end of the list of pages, and there are always\n            # ON_EACH_SIDE links at either end of the \"current page\" link.\n            page_range = []\n            if page_num > (ON_EACH_SIDE + ON_ENDS):\n                page_range.extend(range(0, ON_EACH_SIDE - 1))\n                page_range.append(DOT)\n                page_range.extend(range(page_num - ON_EACH_SIDE, page_num + 1))\n            else:\n                page_range.extend(range(0, page_num + 1))\n            if page_num < (paginator.num_pages - ON_EACH_SIDE - ON_ENDS - 1):\n                page_range.extend(range(page_num + 1, page_num + ON_EACH_SIDE + 1))\n                page_range.append(DOT)\n                page_range.extend(range(paginator.num_pages - ON_ENDS, paginator.num_pages))\n            else:\n                page_range.extend(range(page_num + 1, paginator.num_pages))\n\n    need_show_all_link = cl.can_show_all and not cl.show_all and cl.multi_page\n    return {\n        'cl': cl,\n        'pagination_required': pagination_required,\n        'show_all_url': need_show_all_link and cl.get_query_string({ALL_VAR: ''}),\n        'page_range': page_range,\n        'ALL_VAR': ALL_VAR,\n        '1': 1,\n    }\n\ndef result_headers(cl):\n    \"\"\"\n    Generates the list column headers.\n    \"\"\"\n    ordering_field_columns = cl.get_ordering_field_columns()\n    for i, field_name in enumerate(cl.list_display):\n        text, attr = label_for_field(field_name, cl.model,\n            model_admin = cl.model_admin,\n            return_attr = True\n        )\n        if attr:\n            # Potentially not sortable\n\n            # if the field is the action checkbox: no sorting and special class\n            if field_name == 'action_checkbox':\n                yield {\n                    \"text\": text,\n                    \"class_attrib\": mark_safe(' class=\"action-checkbox-column\"'),\n                    \"sortable\": False,\n                }\n                continue\n\n            admin_order_field = getattr(attr, \"admin_order_field\", None)\n            if not admin_order_field:\n                # Not sortable\n                yield {\n                    \"text\": text,\n                    \"sortable\": False,\n                }\n                continue\n\n        # OK, it is sortable if we got this far\n        th_classes = ['sortable']\n        order_type = ''\n        new_order_type = 'asc'\n        sort_priority = 0\n        sorted = False\n        # Is it currently being sorted on?\n        if i in ordering_field_columns:\n            sorted = True\n            order_type = ordering_field_columns.get(i).lower()\n            sort_priority = list(ordering_field_columns).index(i) + 1\n            th_classes.append('sorted %sending' % order_type)\n            new_order_type = {'asc': 'desc', 'desc': 'asc'}[order_type]\n\n        # build new ordering param\n        o_list_primary = [] # URL for making this field the primary sort\n        o_list_remove  = [] # URL for removing this field from sort\n        o_list_toggle  = [] # URL for toggling order type for this field\n        make_qs_param = lambda t, n: ('-' if t == 'desc' else '') + str(n)\n\n        for j, ot in ordering_field_columns.items():\n            if j == i: # Same column\n                param = make_qs_param(new_order_type, j)\n                # We want clicking on this header to bring the ordering to the\n                # front\n                o_list_primary.insert(0, param)\n                o_list_toggle.append(param)\n                # o_list_remove - omit\n            else:\n                param = make_qs_param(ot, j)\n                o_list_primary.append(param)\n                o_list_toggle.append(param)\n                o_list_remove.append(param)\n\n        if i not in ordering_field_columns:\n            o_list_primary.insert(0, make_qs_param(new_order_type, i))\n\n\n        yield {\n            \"text\": text,\n            \"sortable\": True,\n            \"sorted\": sorted,\n            \"ascending\": order_type == \"asc\",\n            \"sort_priority\": sort_priority,\n            \"url_primary\": cl.get_query_string({ORDER_VAR: '.'.join(o_list_primary)}),\n            \"url_remove\": cl.get_query_string({ORDER_VAR: '.'.join(o_list_remove)}),\n            \"url_toggle\": cl.get_query_string({ORDER_VAR: '.'.join(o_list_toggle)}),\n            \"class_attrib\": format_html(' class=\"{0}\"', ' '.join(th_classes))\n                            if th_classes else '',\n        }\n\ndef _boolean_icon(field_val):\n    icon_url = static('admin/img/icon-%s.gif' %\n                      {True: 'yes', False: 'no', None: 'unknown'}[field_val])\n    return format_html('<img src=\"{0}\" alt=\"{1}\" />', icon_url, field_val)\n\ndef items_for_result(cl, result, form):\n    \"\"\"\n    Generates the actual list of data.\n    \"\"\"\n    first = True\n    pk = cl.lookup_opts.pk.attname\n    for field_name in cl.list_display:\n        row_class = ''\n        try:\n            f, attr, value = lookup_field(field_name, result, cl.model_admin)\n        except ObjectDoesNotExist:\n            result_repr = EMPTY_CHANGELIST_VALUE\n        else:\n            if f is None:\n                if field_name == 'action_checkbox':\n                    row_class = mark_safe(' class=\"action-checkbox\"')\n                allow_tags = getattr(attr, 'allow_tags', False)\n                boolean = getattr(attr, 'boolean', False)\n                if boolean:\n                    allow_tags = True\n                result_repr = display_for_value(value, boolean)\n                # Strip HTML tags in the resulting text, except if the\n                # function has an \"allow_tags\" attribute set to True.\n                if allow_tags:\n                    result_repr = mark_safe(result_repr)\n                if isinstance(value, (datetime.date, datetime.time)):\n                    row_class = mark_safe(' class=\"nowrap\"')\n            else:\n                if isinstance(f.rel, models.ManyToOneRel):\n                    field_val = getattr(result, f.name)\n                    if field_val is None:\n                        result_repr = EMPTY_CHANGELIST_VALUE\n                    else:\n                        result_repr = field_val\n                else:\n                    result_repr = display_for_field(value, f)\n                if isinstance(f, (models.DateField, models.TimeField, models.ForeignKey)):\n                    row_class = mark_safe(' class=\"nowrap\"')\n        if force_text(result_repr) == '':\n            result_repr = mark_safe('&nbsp;')\n        # If list_display_links not defined, add the link tag to the first field\n        if (first and not cl.list_display_links) or field_name in cl.list_display_links:\n            table_tag = {True:'th', False:'td'}[first]\n            first = False\n            url = cl.url_for_result(result)\n            # Convert the pk to something that can be used in Javascript.\n            # Problem cases are long ints (23L) and non-ASCII strings.\n            if cl.to_field:\n                attr = str(cl.to_field)\n            else:\n                attr = pk\n            value = result.serializable_value(attr)\n            result_id = repr(force_text(value))[1:]\n            yield format_html('<{0}{1}><a href=\"{2}\"{3}>{4}</a></{5}>',\n                              table_tag,\n                              row_class,\n                              url,\n                              format_html(' onclick=\"opener.dismissRelatedLookupPopup(window, {0}); return false;\"', result_id)\n                                if cl.is_popup else '',\n                              result_repr,\n                              table_tag)\n        else:\n            # By default the fields come from ModelAdmin.list_editable, but if we pull\n            # the fields out of the form instead of list_editable custom admins\n            # can provide fields on a per request basis\n            if (form and field_name in form.fields and not (\n                    field_name == cl.model._meta.pk.name and\n                        form[cl.model._meta.pk.name].is_hidden)):\n                bf = form[field_name]\n                result_repr = mark_safe(force_text(bf.errors) + force_text(bf))\n            yield format_html('<td{0}>{1}</td>', row_class, result_repr)\n    if form and not form[cl.model._meta.pk.name].is_hidden:\n        yield format_html('<td>{0}</td>', force_text(form[cl.model._meta.pk.name]))\n\nclass ResultList(list):\n    # Wrapper class used to return items in a list_editable\n    # changelist, annotated with the form object for error\n    # reporting purposes. Needed to maintain backwards\n    # compatibility with existing admin templates.\n    def __init__(self, form, *items):\n        self.form = form\n        super(ResultList, self).__init__(*items)\n\ndef results(cl):\n    if cl.formset:\n        for res, form in zip(cl.result_list, cl.formset.forms):\n            yield ResultList(form, items_for_result(cl, res, form))\n    else:\n        for res in cl.result_list:\n            yield ResultList(None, items_for_result(cl, res, None))\n\ndef result_hidden_fields(cl):\n    if cl.formset:\n        for res, form in zip(cl.result_list, cl.formset.forms):\n            if form[cl.model._meta.pk.name].is_hidden:\n                yield mark_safe(force_text(form[cl.model._meta.pk.name]))\n\n@register.inclusion_tag(\"admin/change_list_results.html\")\ndef result_list(cl):\n    \"\"\"\n    Displays the headers and data list together\n    \"\"\"\n    headers = list(result_headers(cl))\n    num_sorted_fields = 0\n    for h in headers:\n        if h['sortable'] and h['sorted']:\n            num_sorted_fields += 1\n    return {'cl': cl,\n            'result_hidden_fields': list(result_hidden_fields(cl)),\n            'result_headers': headers,\n            'num_sorted_fields': num_sorted_fields,\n            'results': list(results(cl))}\n\n@register.inclusion_tag('admin/date_hierarchy.html')\ndef date_hierarchy(cl):\n    \"\"\"\n    Displays the date hierarchy for date drill-down functionality.\n    \"\"\"\n    if cl.date_hierarchy:\n        field_name = cl.date_hierarchy\n        year_field = '%s__year' % field_name\n        month_field = '%s__month' % field_name\n        day_field = '%s__day' % field_name\n        field_generic = '%s__' % field_name\n        year_lookup = cl.params.get(year_field)\n        month_lookup = cl.params.get(month_field)\n        day_lookup = cl.params.get(day_field)\n\n        link = lambda d: cl.get_query_string(d, [field_generic])\n\n        if not (year_lookup or month_lookup or day_lookup):\n            # select appropriate start level\n            date_range = cl.query_set.aggregate(first=models.Min(field_name),\n                                                last=models.Max(field_name))\n            if date_range['first'] and date_range['last']:\n                if date_range['first'].year == date_range['last'].year:\n                    year_lookup = date_range['first'].year\n                    if date_range['first'].month == date_range['last'].month:\n                        month_lookup = date_range['first'].month\n\n        if year_lookup and month_lookup and day_lookup:\n            day = datetime.date(int(year_lookup), int(month_lookup), int(day_lookup))\n            return {\n                'show': True,\n                'back': {\n                    'link': link({year_field: year_lookup, month_field: month_lookup}),\n                    'title': capfirst(formats.date_format(day, 'YEAR_MONTH_FORMAT'))\n                },\n                'choices': [{'title': capfirst(formats.date_format(day, 'MONTH_DAY_FORMAT'))}]\n            }\n        elif year_lookup and month_lookup:\n            days = cl.query_set.filter(**{year_field: year_lookup, month_field: month_lookup}).dates(field_name, 'day')\n            return {\n                'show': True,\n                'back': {\n                    'link': link({year_field: year_lookup}),\n                    'title': str(year_lookup)\n                },\n                'choices': [{\n                    'link': link({year_field: year_lookup, month_field: month_lookup, day_field: day.day}),\n                    'title': capfirst(formats.date_format(day, 'MONTH_DAY_FORMAT'))\n                } for day in days]\n            }\n        elif year_lookup:\n            months = cl.query_set.filter(**{year_field: year_lookup}).dates(field_name, 'month')\n            return {\n                'show' : True,\n                'back': {\n                    'link' : link({}),\n                    'title': _('All dates')\n                },\n                'choices': [{\n                    'link': link({year_field: year_lookup, month_field: month.month}),\n                    'title': capfirst(formats.date_format(month, 'YEAR_MONTH_FORMAT'))\n                } for month in months]\n            }\n        else:\n            years = cl.query_set.dates(field_name, 'year')\n            return {\n                'show': True,\n                'choices': [{\n                    'link': link({year_field: str(year.year)}),\n                    'title': str(year.year),\n                } for year in years]\n            }\n\n@register.inclusion_tag('admin/search_form.html')\ndef search_form(cl):\n    \"\"\"\n    Displays a search form for searching the list.\n    \"\"\"\n    return {\n        'cl': cl,\n        'show_result_count': cl.result_count != cl.full_result_count,\n        'search_var': SEARCH_VAR\n    }\n\n@register.simple_tag\ndef admin_list_filter(cl, spec):\n    tpl = get_template(spec.template)\n    return tpl.render(Context({\n        'title': spec.title,\n        'choices' : list(spec.choices(cl)),\n        'spec': spec,\n    }))\n\n@register.inclusion_tag('admin/actions.html', takes_context=True)\ndef admin_actions(context):\n    \"\"\"\n    Track the number of times the action field has been rendered on the page,\n    so we know which value to use.\n    \"\"\"\n    context['action_index'] = context.get('action_index', -1) + 1\n    return context\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/templatetags/admin_modify.py",
    "content": "from django import template\n\nregister = template.Library()\n\n@register.inclusion_tag('admin/prepopulated_fields_js.html', takes_context=True)\ndef prepopulated_fields_js(context):\n    \"\"\"\n    Creates a list of prepopulated_fields that should render Javascript for\n    the prepopulated fields for both the admin form and inlines.\n    \"\"\"\n    prepopulated_fields = []\n    if context['add'] and 'adminform' in context:\n        prepopulated_fields.extend(context['adminform'].prepopulated_fields)\n    if 'inline_admin_formsets' in context:\n        for inline_admin_formset in context['inline_admin_formsets']:\n            for inline_admin_form in inline_admin_formset:\n                if inline_admin_form.original is None:\n                    prepopulated_fields.extend(inline_admin_form.prepopulated_fields)\n    context.update({'prepopulated_fields': prepopulated_fields})\n    return context\n\n@register.inclusion_tag('admin/submit_line.html', takes_context=True)\ndef submit_row(context):\n    \"\"\"\n    Displays the row of buttons for delete and save.\n    \"\"\"\n    opts = context['opts']\n    change = context['change']\n    is_popup = context['is_popup']\n    save_as = context['save_as']\n    ctx = {\n        'opts': opts,\n        'onclick_attrib': (opts.get_ordered_objects() and change\n                            and 'onclick=\"submitOrderForm();\"' or ''),\n        'show_delete_link': (not is_popup and context['has_delete_permission']\n                              and change and context.get('show_delete', True)),\n        'show_save_as_new': not is_popup and change and save_as,\n        'show_save_and_add_another': context['has_add_permission'] and\n                            not is_popup and (not save_as or context['add']),\n        'show_save_and_continue': not is_popup and context['has_change_permission'],\n        'is_popup': is_popup,\n        'show_save': True\n    }\n    if context.get('original') is not None:\n        ctx['original'] = context['original']\n    return ctx\n\n@register.filter\ndef cell_count(inline_admin_form):\n    \"\"\"Returns the number of cells used in a tabular inline\"\"\"\n    count = 1 # Hidden cell with hidden 'id' field\n    for fieldset in inline_admin_form:\n        # Loop through all the fields (one per cell)\n        for line in fieldset:\n            for field in line:\n                count += 1\n    if inline_admin_form.formset.can_delete:\n        # Delete checkbox\n        count += 1\n    return count\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/templatetags/admin_static.py",
    "content": "from django.conf import settings\nfrom django.template import Library\n\nregister = Library()\n\nif 'django.contrib.staticfiles' in settings.INSTALLED_APPS:\n    from django.contrib.staticfiles.templatetags.staticfiles import static\nelse:\n    from django.templatetags.static import static\n\nstatic = register.simple_tag(static)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/templatetags/admin_urls.py",
    "content": "from django.core.urlresolvers import reverse\nfrom django import template\nfrom django.contrib.admin.util import quote\n\nregister = template.Library()\n\n@register.filter\ndef admin_urlname(value, arg):\n    return 'admin:%s_%s_%s' % (value.app_label, value.module_name, arg)\n\n\n@register.filter\ndef admin_urlquote(value):\n    return quote(value)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/templatetags/log.py",
    "content": "from django import template\nfrom django.contrib.admin.models import LogEntry\n\nregister = template.Library()\n\nclass AdminLogNode(template.Node):\n    def __init__(self, limit, varname, user):\n        self.limit, self.varname, self.user = limit, varname, user\n\n    def __repr__(self):\n        return \"<GetAdminLog Node>\"\n\n    def render(self, context):\n        if self.user is None:\n            context[self.varname] = LogEntry.objects.all().select_related('content_type', 'user')[:self.limit]\n        else:\n            user_id = self.user\n            if not user_id.isdigit():\n                user_id = context[self.user].id\n            context[self.varname] = LogEntry.objects.filter(user__id__exact=user_id).select_related('content_type', 'user')[:int(self.limit)]\n        return ''\n\n@register.tag\ndef get_admin_log(parser, token):\n    \"\"\"\n    Populates a template variable with the admin log for the given criteria.\n\n    Usage::\n\n        {% get_admin_log [limit] as [varname] for_user [context_var_containing_user_obj] %}\n\n    Examples::\n\n        {% get_admin_log 10 as admin_log for_user 23 %}\n        {% get_admin_log 10 as admin_log for_user user %}\n        {% get_admin_log 10 as admin_log %}\n\n    Note that ``context_var_containing_user_obj`` can be a hard-coded integer\n    (user ID) or the name of a template context variable containing the user\n    object whose ID you want.\n    \"\"\"\n    tokens = token.contents.split()\n    if len(tokens) < 4:\n        raise template.TemplateSyntaxError(\n            \"'get_admin_log' statements require two arguments\")\n    if not tokens[1].isdigit():\n        raise template.TemplateSyntaxError(\n            \"First argument to 'get_admin_log' must be an integer\")\n    if tokens[2] != 'as':\n        raise template.TemplateSyntaxError(\n            \"Second argument to 'get_admin_log' must be 'as'\")\n    if len(tokens) > 4:\n        if tokens[4] != 'for_user':\n            raise template.TemplateSyntaxError(\n                \"Fourth argument to 'get_admin_log' must be 'for_user'\")\n    return AdminLogNode(limit=tokens[1], varname=tokens[3], user=(len(tokens) > 5 and tokens[5] or None))\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/tests.py",
    "content": "from django.test import LiveServerTestCase\nfrom django.utils.importlib import import_module\nfrom django.utils.unittest import SkipTest\nfrom django.utils.translation import ugettext as _\n\nclass AdminSeleniumWebDriverTestCase(LiveServerTestCase):\n    webdriver_class = 'selenium.webdriver.firefox.webdriver.WebDriver'\n\n    @classmethod\n    def setUpClass(cls):\n        try:\n            # Import and start the WebDriver class.\n            module, attr = cls.webdriver_class.rsplit('.', 1)\n            mod = import_module(module)\n            WebDriver = getattr(mod, attr)\n            cls.selenium = WebDriver()\n        except Exception as e:\n            raise SkipTest('Selenium webdriver \"%s\" not installed or not '\n                           'operational: %s' % (cls.webdriver_class, str(e)))\n        super(AdminSeleniumWebDriverTestCase, cls).setUpClass()\n\n    @classmethod\n    def tearDownClass(cls):\n        if hasattr(cls, 'selenium'):\n            cls.selenium.quit()\n        super(AdminSeleniumWebDriverTestCase, cls).tearDownClass()\n\n    def wait_until(self, callback, timeout=10):\n        \"\"\"\n        Helper function that blocks the execution of the tests until the\n        specified callback returns a value that is not falsy. This function can\n        be called, for example, after clicking a link or submitting a form.\n        See the other public methods that call this function for more details.\n        \"\"\"\n        from selenium.webdriver.support.wait import WebDriverWait\n        WebDriverWait(self.selenium, timeout).until(callback)\n\n    def wait_loaded_tag(self, tag_name, timeout=10):\n        \"\"\"\n        Helper function that blocks until the element with the given tag name\n        is found on the page.\n        \"\"\"\n        self.wait_until(\n            lambda driver: driver.find_element_by_tag_name(tag_name),\n            timeout\n        )\n\n    def wait_page_loaded(self):\n        \"\"\"\n        Block until page has started to load.\n        \"\"\"\n        from selenium.common.exceptions import TimeoutException\n        try:\n            # Wait for the next page to be loaded\n            self.wait_loaded_tag('body')\n        except TimeoutException:\n            # IE7 occasionnally returns an error \"Internet Explorer cannot\n            # display the webpage\" and doesn't load the next page. We just\n            # ignore it.\n            pass\n\n    def admin_login(self, username, password, login_url='/admin/'):\n        \"\"\"\n        Helper function to log into the admin.\n        \"\"\"\n        self.selenium.get('%s%s' % (self.live_server_url, login_url))\n        username_input = self.selenium.find_element_by_name('username')\n        username_input.send_keys(username)\n        password_input = self.selenium.find_element_by_name('password')\n        password_input.send_keys(password)\n        login_text = _('Log in')\n        self.selenium.find_element_by_xpath(\n            '//input[@value=\"%s\"]' % login_text).click()\n        self.wait_page_loaded()\n\n    def get_css_value(self, selector, attribute):\n        \"\"\"\n        Helper function that returns the value for the CSS attribute of an\n        DOM element specified by the given selector. Uses the jQuery that ships\n        with Django.\n        \"\"\"\n        return self.selenium.execute_script(\n            'return django.jQuery(\"%s\").css(\"%s\")' % (selector, attribute))\n\n    def get_select_option(self, selector, value):\n        \"\"\"\n        Returns the <OPTION> with the value `value` inside the <SELECT> widget\n        identified by the CSS selector `selector`.\n        \"\"\"\n        from selenium.common.exceptions import NoSuchElementException\n        options = self.selenium.find_elements_by_css_selector('%s > option' % selector)\n        for option in options:\n            if option.get_attribute('value') == value:\n                return option\n        raise NoSuchElementException('Option \"%s\" not found in \"%s\"' % (value, selector))\n\n    def assertSelectOptions(self, selector, values):\n        \"\"\"\n        Asserts that the <SELECT> widget identified by `selector` has the\n        options with the given `values`.\n        \"\"\"\n        options = self.selenium.find_elements_by_css_selector('%s > option' % selector)\n        actual_values = []\n        for option in options:\n            actual_values.append(option.get_attribute('value'))\n        self.assertEqual(values, actual_values)\n\n    def has_css_class(self, selector, klass):\n        \"\"\"\n        Returns True if the element identified by `selector` has the CSS class\n        `klass`.\n        \"\"\"\n        return (self.selenium.find_element_by_css_selector(selector)\n                .get_attribute('class').find(klass) != -1)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/util.py",
    "content": "from __future__ import unicode_literals\n\nimport datetime\nimport decimal\n\nfrom django.db import models\nfrom django.db.models.constants import LOOKUP_SEP\nfrom django.db.models.deletion import Collector\nfrom django.db.models.related import RelatedObject\nfrom django.forms.forms import pretty_name\nfrom django.utils import formats\nfrom django.utils.html import format_html\nfrom django.utils.text import capfirst\nfrom django.utils import timezone\nfrom django.utils.encoding import force_str, force_text, smart_text\nfrom django.utils import six\nfrom django.utils.translation import ungettext\nfrom django.core.urlresolvers import reverse\n\ndef lookup_needs_distinct(opts, lookup_path):\n    \"\"\"\n    Returns True if 'distinct()' should be used to query the given lookup path.\n    \"\"\"\n    field_name = lookup_path.split('__', 1)[0]\n    field = opts.get_field_by_name(field_name)[0]\n    if ((hasattr(field, 'rel') and\n         isinstance(field.rel, models.ManyToManyRel)) or\n        (isinstance(field, models.related.RelatedObject) and\n         not field.field.unique)):\n         return True\n    return False\n\ndef prepare_lookup_value(key, value):\n    \"\"\"\n    Returns a lookup value prepared to be used in queryset filtering.\n    \"\"\"\n    # if key ends with __in, split parameter into separate values\n    if key.endswith('__in'):\n        value = value.split(',')\n    # if key ends with __isnull, special case '' and false\n    if key.endswith('__isnull'):\n        if value.lower() in ('', 'false'):\n            value = False\n        else:\n            value = True\n    return value\n\ndef quote(s):\n    \"\"\"\n    Ensure that primary key values do not confuse the admin URLs by escaping\n    any '/', '_' and ':' and similarly problematic characters.\n    Similar to urllib.quote, except that the quoting is slightly different so\n    that it doesn't get automatically unquoted by the Web browser.\n    \"\"\"\n    if not isinstance(s, six.string_types):\n        return s\n    res = list(s)\n    for i in range(len(res)):\n        c = res[i]\n        if c in \"\"\":/_#?;@&=+$,\"<>%\\\\\"\"\":\n            res[i] = '_%02X' % ord(c)\n    return ''.join(res)\n\n\ndef unquote(s):\n    \"\"\"\n    Undo the effects of quote(). Based heavily on urllib.unquote().\n    \"\"\"\n    mychr = chr\n    myatoi = int\n    list = s.split('_')\n    res = [list[0]]\n    myappend = res.append\n    del list[0]\n    for item in list:\n        if item[1:2]:\n            try:\n                myappend(mychr(myatoi(item[:2], 16)) + item[2:])\n            except ValueError:\n                myappend('_' + item)\n        else:\n            myappend('_' + item)\n    return \"\".join(res)\n\n\ndef flatten_fieldsets(fieldsets):\n    \"\"\"Returns a list of field names from an admin fieldsets structure.\"\"\"\n    field_names = []\n    for name, opts in fieldsets:\n        for field in opts['fields']:\n            # type checking feels dirty, but it seems like the best way here\n            if type(field) == tuple:\n                field_names.extend(field)\n            else:\n                field_names.append(field)\n    return field_names\n\n\ndef get_deleted_objects(objs, opts, user, admin_site, using):\n    \"\"\"\n    Find all objects related to ``objs`` that should also be deleted. ``objs``\n    must be a homogenous iterable of objects (e.g. a QuerySet).\n\n    Returns a nested list of strings suitable for display in the\n    template with the ``unordered_list`` filter.\n\n    \"\"\"\n    collector = NestedObjects(using=using)\n    collector.collect(objs)\n    perms_needed = set()\n\n    def format_callback(obj):\n        has_admin = obj.__class__ in admin_site._registry\n        opts = obj._meta\n\n        if has_admin:\n            admin_url = reverse('%s:%s_%s_change'\n                                % (admin_site.name,\n                                   opts.app_label,\n                                   opts.object_name.lower()),\n                                None, (quote(obj._get_pk_val()),))\n            p = '%s.%s' % (opts.app_label,\n                           opts.get_delete_permission())\n            if not user.has_perm(p):\n                perms_needed.add(opts.verbose_name)\n            # Display a link to the admin page.\n            return format_html('{0}: <a href=\"{1}\">{2}</a>',\n                               capfirst(opts.verbose_name),\n                               admin_url,\n                               obj)\n        else:\n            # Don't display link to edit, because it either has no\n            # admin or is edited inline.\n            return '%s: %s' % (capfirst(opts.verbose_name),\n                                force_text(obj))\n\n    to_delete = collector.nested(format_callback)\n\n    protected = [format_callback(obj) for obj in collector.protected]\n\n    return to_delete, perms_needed, protected\n\n\nclass NestedObjects(Collector):\n    def __init__(self, *args, **kwargs):\n        super(NestedObjects, self).__init__(*args, **kwargs)\n        self.edges = {} # {from_instance: [to_instances]}\n        self.protected = set()\n\n    def add_edge(self, source, target):\n        self.edges.setdefault(source, []).append(target)\n\n    def collect(self, objs, source_attr=None, **kwargs):\n        for obj in objs:\n            if source_attr:\n                self.add_edge(getattr(obj, source_attr), obj)\n            else:\n                self.add_edge(None, obj)\n        try:\n            return super(NestedObjects, self).collect(objs, source_attr=source_attr, **kwargs)\n        except models.ProtectedError as e:\n            self.protected.update(e.protected_objects)\n\n    def related_objects(self, related, objs):\n        qs = super(NestedObjects, self).related_objects(related, objs)\n        return qs.select_related(related.field.name)\n\n    def _nested(self, obj, seen, format_callback):\n        if obj in seen:\n            return []\n        seen.add(obj)\n        children = []\n        for child in self.edges.get(obj, ()):\n            children.extend(self._nested(child, seen, format_callback))\n        if format_callback:\n            ret = [format_callback(obj)]\n        else:\n            ret = [obj]\n        if children:\n            ret.append(children)\n        return ret\n\n    def nested(self, format_callback=None):\n        \"\"\"\n        Return the graph as a nested list.\n\n        \"\"\"\n        seen = set()\n        roots = []\n        for root in self.edges.get(None, ()):\n            roots.extend(self._nested(root, seen, format_callback))\n        return roots\n\n    def can_fast_delete(self, *args, **kwargs):\n        \"\"\"\n        We always want to load the objects into memory so that we can display\n        them to the user in confirm page.\n        \"\"\"\n        return False\n\n\ndef model_format_dict(obj):\n    \"\"\"\n    Return a `dict` with keys 'verbose_name' and 'verbose_name_plural',\n    typically for use with string formatting.\n\n    `obj` may be a `Model` instance, `Model` subclass, or `QuerySet` instance.\n\n    \"\"\"\n    if isinstance(obj, (models.Model, models.base.ModelBase)):\n        opts = obj._meta\n    elif isinstance(obj, models.query.QuerySet):\n        opts = obj.model._meta\n    else:\n        opts = obj\n    return {\n        'verbose_name': force_text(opts.verbose_name),\n        'verbose_name_plural': force_text(opts.verbose_name_plural)\n    }\n\n\ndef model_ngettext(obj, n=None):\n    \"\"\"\n    Return the appropriate `verbose_name` or `verbose_name_plural` value for\n    `obj` depending on the count `n`.\n\n    `obj` may be a `Model` instance, `Model` subclass, or `QuerySet` instance.\n    If `obj` is a `QuerySet` instance, `n` is optional and the length of the\n    `QuerySet` is used.\n\n    \"\"\"\n    if isinstance(obj, models.query.QuerySet):\n        if n is None:\n            n = obj.count()\n        obj = obj.model\n    d = model_format_dict(obj)\n    singular, plural = d[\"verbose_name\"], d[\"verbose_name_plural\"]\n    return ungettext(singular, plural, n or 0)\n\n\ndef lookup_field(name, obj, model_admin=None):\n    opts = obj._meta\n    try:\n        f = opts.get_field(name)\n    except models.FieldDoesNotExist:\n        # For non-field values, the value is either a method, property or\n        # returned via a callable.\n        if callable(name):\n            attr = name\n            value = attr(obj)\n        elif (model_admin is not None and hasattr(model_admin, name) and\n          not name == '__str__' and not name == '__unicode__'):\n            attr = getattr(model_admin, name)\n            value = attr(obj)\n        else:\n            attr = getattr(obj, name)\n            if callable(attr):\n                value = attr()\n            else:\n                value = attr\n        f = None\n    else:\n        attr = None\n        value = getattr(obj, name)\n    return f, attr, value\n\n\ndef label_for_field(name, model, model_admin=None, return_attr=False):\n    \"\"\"\n    Returns a sensible label for a field name. The name can be a callable or the\n    name of an object attributes, as well as a genuine fields. If return_attr is\n    True, the resolved attribute (which could be a callable) is also returned.\n    This will be None if (and only if) the name refers to a field.\n    \"\"\"\n    attr = None\n    try:\n        field = model._meta.get_field_by_name(name)[0]\n        if isinstance(field, RelatedObject):\n            label = field.opts.verbose_name\n        else:\n            label = field.verbose_name\n    except models.FieldDoesNotExist:\n        if name == \"__unicode__\":\n            label = force_text(model._meta.verbose_name)\n            attr = six.text_type\n        elif name == \"__str__\":\n            label = force_str(model._meta.verbose_name)\n            attr = bytes\n        else:\n            if callable(name):\n                attr = name\n            elif model_admin is not None and hasattr(model_admin, name):\n                attr = getattr(model_admin, name)\n            elif hasattr(model, name):\n                attr = getattr(model, name)\n            else:\n                message = \"Unable to lookup '%s' on %s\" % (name, model._meta.object_name)\n                if model_admin:\n                    message += \" or %s\" % (model_admin.__class__.__name__,)\n                raise AttributeError(message)\n\n            if hasattr(attr, \"short_description\"):\n                label = attr.short_description\n            elif callable(attr):\n                if attr.__name__ == \"<lambda>\":\n                    label = \"--\"\n                else:\n                    label = pretty_name(attr.__name__)\n            else:\n                label = pretty_name(name)\n    if return_attr:\n        return (label, attr)\n    else:\n        return label\n\ndef help_text_for_field(name, model):\n    try:\n        help_text = model._meta.get_field_by_name(name)[0].help_text\n    except models.FieldDoesNotExist:\n        help_text = \"\"\n    return smart_text(help_text)\n\n\ndef display_for_field(value, field):\n    from django.contrib.admin.templatetags.admin_list import _boolean_icon\n    from django.contrib.admin.views.main import EMPTY_CHANGELIST_VALUE\n\n    if field.flatchoices:\n        return dict(field.flatchoices).get(value, EMPTY_CHANGELIST_VALUE)\n    # NullBooleanField needs special-case null-handling, so it comes\n    # before the general null test.\n    elif isinstance(field, models.BooleanField) or isinstance(field, models.NullBooleanField):\n        return _boolean_icon(value)\n    elif value is None:\n        return EMPTY_CHANGELIST_VALUE\n    elif isinstance(field, models.DateTimeField):\n        return formats.localize(timezone.template_localtime(value))\n    elif isinstance(field, (models.DateField, models.TimeField)):\n        return formats.localize(value)\n    elif isinstance(field, models.DecimalField):\n        return formats.number_format(value, field.decimal_places)\n    elif isinstance(field, models.FloatField):\n        return formats.number_format(value)\n    else:\n        return smart_text(value)\n\n\ndef display_for_value(value, boolean=False):\n    from django.contrib.admin.templatetags.admin_list import _boolean_icon\n    from django.contrib.admin.views.main import EMPTY_CHANGELIST_VALUE\n\n    if boolean:\n        return _boolean_icon(value)\n    elif value is None:\n        return EMPTY_CHANGELIST_VALUE\n    elif isinstance(value, datetime.datetime):\n        return formats.localize(timezone.template_localtime(value))\n    elif isinstance(value, (datetime.date, datetime.time)):\n        return formats.localize(value)\n    elif isinstance(value, six.integer_types + (decimal.Decimal, float)):\n        return formats.number_format(value)\n    else:\n        return smart_text(value)\n\n\nclass NotRelationField(Exception):\n    pass\n\n\ndef get_model_from_relation(field):\n    if isinstance(field, models.related.RelatedObject):\n        return field.model\n    elif getattr(field, 'rel'): # or isinstance?\n        return field.rel.to\n    else:\n        raise NotRelationField\n\n\ndef reverse_field_path(model, path):\n    \"\"\" Create a reversed field path.\n\n    E.g. Given (Order, \"user__groups\"),\n    return (Group, \"user__order\").\n\n    Final field must be a related model, not a data field.\n\n    \"\"\"\n    reversed_path = []\n    parent = model\n    pieces = path.split(LOOKUP_SEP)\n    for piece in pieces:\n        field, model, direct, m2m = parent._meta.get_field_by_name(piece)\n        # skip trailing data field if extant:\n        if len(reversed_path) == len(pieces)-1: # final iteration\n            try:\n                get_model_from_relation(field)\n            except NotRelationField:\n                break\n        if direct:\n            related_name = field.related_query_name()\n            parent = field.rel.to\n        else:\n            related_name = field.field.name\n            parent = field.model\n        reversed_path.insert(0, related_name)\n    return (parent, LOOKUP_SEP.join(reversed_path))\n\n\ndef get_fields_from_path(model, path):\n    \"\"\" Return list of Fields given path relative to model.\n\n    e.g. (ModelX, \"user__groups__name\") -> [\n        <django.db.models.fields.related.ForeignKey object at 0x...>,\n        <django.db.models.fields.related.ManyToManyField object at 0x...>,\n        <django.db.models.fields.CharField object at 0x...>,\n    ]\n    \"\"\"\n    pieces = path.split(LOOKUP_SEP)\n    fields = []\n    for piece in pieces:\n        if fields:\n            parent = get_model_from_relation(fields[-1])\n        else:\n            parent = model\n        fields.append(parent._meta.get_field_by_name(piece)[0])\n    return fields\n\n\ndef remove_trailing_data_field(fields):\n    \"\"\" Discard trailing non-relation field if extant. \"\"\"\n    try:\n        get_model_from_relation(fields[-1])\n    except NotRelationField:\n        fields = fields[:-1]\n    return fields\n\n\ndef get_limit_choices_to_from_path(model, path):\n    \"\"\" Return Q object for limiting choices if applicable.\n\n    If final model in path is linked via a ForeignKey or ManyToManyField which\n    has a `limit_choices_to` attribute, return it as a Q object.\n    \"\"\"\n\n    fields = get_fields_from_path(model, path)\n    fields = remove_trailing_data_field(fields)\n    limit_choices_to = (\n        fields and hasattr(fields[-1], 'rel') and\n        getattr(fields[-1].rel, 'limit_choices_to', None))\n    if not limit_choices_to:\n        return models.Q() # empty Q\n    elif isinstance(limit_choices_to, models.Q):\n        return limit_choices_to # already a Q\n    else:\n        return models.Q(**limit_choices_to) # convert dict to Q\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/validation.py",
    "content": "from django.core.exceptions import ImproperlyConfigured\nfrom django.db import models\nfrom django.db.models.fields import FieldDoesNotExist\nfrom django.forms.models import (BaseModelForm, BaseModelFormSet, fields_for_model,\n    _get_foreign_key)\nfrom django.contrib.admin import ListFilter, FieldListFilter\nfrom django.contrib.admin.util import get_fields_from_path, NotRelationField\nfrom django.contrib.admin.options import (flatten_fieldsets, BaseModelAdmin,\n    ModelAdmin, HORIZONTAL, VERTICAL)\n\n\n__all__ = ['validate']\n\ndef validate(cls, model):\n    \"\"\"\n    Does basic ModelAdmin option validation. Calls custom validation\n    classmethod in the end if it is provided in cls. The signature of the\n    custom validation classmethod should be: def validate(cls, model).\n    \"\"\"\n    # Before we can introspect models, they need to be fully loaded so that\n    # inter-relations are set up correctly. We force that here.\n    models.get_apps()\n\n    opts = model._meta\n    validate_base(cls, model)\n\n    # list_display\n    if hasattr(cls, 'list_display'):\n        check_isseq(cls, 'list_display', cls.list_display)\n        for idx, field in enumerate(cls.list_display):\n            if not callable(field):\n                if not hasattr(cls, field):\n                    if not hasattr(model, field):\n                        try:\n                            opts.get_field(field)\n                        except models.FieldDoesNotExist:\n                            raise ImproperlyConfigured(\"%s.list_display[%d], %r is not a callable or an attribute of %r or found in the model %r.\"\n                                % (cls.__name__, idx, field, cls.__name__, model._meta.object_name))\n                    else:\n                        # getattr(model, field) could be an X_RelatedObjectsDescriptor\n                        f = fetch_attr(cls, model, opts, \"list_display[%d]\" % idx, field)\n                        if isinstance(f, models.ManyToManyField):\n                            raise ImproperlyConfigured(\"'%s.list_display[%d]', '%s' is a ManyToManyField which is not supported.\"\n                                % (cls.__name__, idx, field))\n\n    # list_display_links\n    if hasattr(cls, 'list_display_links'):\n        check_isseq(cls, 'list_display_links', cls.list_display_links)\n        for idx, field in enumerate(cls.list_display_links):\n            if field not in cls.list_display:\n                raise ImproperlyConfigured(\"'%s.list_display_links[%d]' \"\n                        \"refers to '%s' which is not defined in 'list_display'.\"\n                        % (cls.__name__, idx, field))\n\n    # list_filter\n    if hasattr(cls, 'list_filter'):\n        check_isseq(cls, 'list_filter', cls.list_filter)\n        for idx, item in enumerate(cls.list_filter):\n            # There are three options for specifying a filter:\n            #   1: 'field' - a basic field filter, possibly w/ relationships (eg, 'field__rel')\n            #   2: ('field', SomeFieldListFilter) - a field-based list filter class\n            #   3: SomeListFilter - a non-field list filter class\n            if callable(item) and not isinstance(item, models.Field):\n                # If item is option 3, it should be a ListFilter...\n                if not issubclass(item, ListFilter):\n                    raise ImproperlyConfigured(\"'%s.list_filter[%d]' is '%s'\"\n                            \" which is not a descendant of ListFilter.\"\n                            % (cls.__name__, idx, item.__name__))\n                # ...  but not a FieldListFilter.\n                if issubclass(item, FieldListFilter):\n                    raise ImproperlyConfigured(\"'%s.list_filter[%d]' is '%s'\"\n                            \" which is of type FieldListFilter but is not\"\n                            \" associated with a field name.\"\n                            % (cls.__name__, idx, item.__name__))\n            else:\n                if isinstance(item, (tuple, list)):\n                    # item is option #2\n                    field, list_filter_class = item\n                    if not issubclass(list_filter_class, FieldListFilter):\n                        raise ImproperlyConfigured(\"'%s.list_filter[%d][1]'\"\n                            \" is '%s' which is not of type FieldListFilter.\"\n                            % (cls.__name__, idx, list_filter_class.__name__))\n                else:\n                    # item is option #1\n                    field = item\n                # Validate the field string\n                try:\n                    get_fields_from_path(model, field)\n                except (NotRelationField, FieldDoesNotExist):\n                    raise ImproperlyConfigured(\"'%s.list_filter[%d]' refers to '%s'\"\n                            \" which does not refer to a Field.\"\n                            % (cls.__name__, idx, field))\n\n    # list_per_page = 100\n    if hasattr(cls, 'list_per_page') and not isinstance(cls.list_per_page, int):\n        raise ImproperlyConfigured(\"'%s.list_per_page' should be a integer.\"\n                % cls.__name__)\n\n    # list_max_show_all\n    if hasattr(cls, 'list_max_show_all') and not isinstance(cls.list_max_show_all, int):\n        raise ImproperlyConfigured(\"'%s.list_max_show_all' should be an integer.\"\n                % cls.__name__)\n\n    # list_editable\n    if hasattr(cls, 'list_editable') and cls.list_editable:\n        check_isseq(cls, 'list_editable', cls.list_editable)\n        for idx, field_name in enumerate(cls.list_editable):\n            try:\n                field = opts.get_field_by_name(field_name)[0]\n            except models.FieldDoesNotExist:\n                raise ImproperlyConfigured(\"'%s.list_editable[%d]' refers to a \"\n                    \"field, '%s', not defined on %s.%s.\"\n                    % (cls.__name__, idx, field_name, model._meta.app_label, model.__name__))\n            if field_name not in cls.list_display:\n                raise ImproperlyConfigured(\"'%s.list_editable[%d]' refers to \"\n                    \"'%s' which is not defined in 'list_display'.\"\n                    % (cls.__name__, idx, field_name))\n            if field_name in cls.list_display_links:\n                raise ImproperlyConfigured(\"'%s' cannot be in both '%s.list_editable'\"\n                    \" and '%s.list_display_links'\"\n                    % (field_name, cls.__name__, cls.__name__))\n            if not cls.list_display_links and cls.list_display[0] in cls.list_editable:\n                raise ImproperlyConfigured(\"'%s.list_editable[%d]' refers to\"\n                    \" the first field in list_display, '%s', which can't be\"\n                    \" used unless list_display_links is set.\"\n                    % (cls.__name__, idx, cls.list_display[0]))\n            if not field.editable:\n                raise ImproperlyConfigured(\"'%s.list_editable[%d]' refers to a \"\n                    \"field, '%s', which isn't editable through the admin.\"\n                    % (cls.__name__, idx, field_name))\n\n    # search_fields = ()\n    if hasattr(cls, 'search_fields'):\n        check_isseq(cls, 'search_fields', cls.search_fields)\n\n    # date_hierarchy = None\n    if cls.date_hierarchy:\n        f = get_field(cls, model, opts, 'date_hierarchy', cls.date_hierarchy)\n        if not isinstance(f, (models.DateField, models.DateTimeField)):\n            raise ImproperlyConfigured(\"'%s.date_hierarchy is \"\n                    \"neither an instance of DateField nor DateTimeField.\"\n                    % cls.__name__)\n\n    # ordering = None\n    if cls.ordering:\n        check_isseq(cls, 'ordering', cls.ordering)\n        for idx, field in enumerate(cls.ordering):\n            if field == '?' and len(cls.ordering) != 1:\n                raise ImproperlyConfigured(\"'%s.ordering' has the random \"\n                        \"ordering marker '?', but contains other fields as \"\n                        \"well. Please either remove '?' or the other fields.\"\n                        % cls.__name__)\n            if field == '?':\n                continue\n            if field.startswith('-'):\n                field = field[1:]\n            # Skip ordering in the format field1__field2 (FIXME: checking\n            # this format would be nice, but it's a little fiddly).\n            if '__' in field:\n                continue\n            get_field(cls, model, opts, 'ordering[%d]' % idx, field)\n\n    if hasattr(cls, \"readonly_fields\"):\n        check_readonly_fields(cls, model, opts)\n\n    # list_select_related = False\n    # save_as = False\n    # save_on_top = False\n    for attr in ('list_select_related', 'save_as', 'save_on_top'):\n        if not isinstance(getattr(cls, attr), bool):\n            raise ImproperlyConfigured(\"'%s.%s' should be a boolean.\"\n                    % (cls.__name__, attr))\n\n\n    # inlines = []\n    if hasattr(cls, 'inlines'):\n        check_isseq(cls, 'inlines', cls.inlines)\n        for idx, inline in enumerate(cls.inlines):\n            if not issubclass(inline, BaseModelAdmin):\n                raise ImproperlyConfigured(\"'%s.inlines[%d]' does not inherit \"\n                        \"from BaseModelAdmin.\" % (cls.__name__, idx))\n            if not inline.model:\n                raise ImproperlyConfigured(\"'model' is a required attribute \"\n                        \"of '%s.inlines[%d]'.\" % (cls.__name__, idx))\n            if not issubclass(inline.model, models.Model):\n                raise ImproperlyConfigured(\"'%s.inlines[%d].model' does not \"\n                        \"inherit from models.Model.\" % (cls.__name__, idx))\n            validate_base(inline, inline.model)\n            validate_inline(inline, cls, model)\n\ndef validate_inline(cls, parent, parent_model):\n\n    # model is already verified to exist and be a Model\n    if cls.fk_name: # default value is None\n        f = get_field(cls, cls.model, cls.model._meta, 'fk_name', cls.fk_name)\n        if not isinstance(f, models.ForeignKey):\n            raise ImproperlyConfigured(\"'%s.fk_name is not an instance of \"\n                    \"models.ForeignKey.\" % cls.__name__)\n\n    fk = _get_foreign_key(parent_model, cls.model, fk_name=cls.fk_name, can_fail=True)\n\n    # extra = 3\n    if not isinstance(cls.extra, int):\n        raise ImproperlyConfigured(\"'%s.extra' should be a integer.\"\n                % cls.__name__)\n\n    # max_num = None\n    max_num = getattr(cls, 'max_num', None)\n    if max_num is not None and not isinstance(max_num, int):\n        raise ImproperlyConfigured(\"'%s.max_num' should be an integer or None (default).\"\n                % cls.__name__)\n\n    # formset\n    if hasattr(cls, 'formset') and not issubclass(cls.formset, BaseModelFormSet):\n        raise ImproperlyConfigured(\"'%s.formset' does not inherit from \"\n                \"BaseModelFormSet.\" % cls.__name__)\n\n    # exclude\n    if hasattr(cls, 'exclude') and cls.exclude:\n        if fk and fk.name in cls.exclude:\n            raise ImproperlyConfigured(\"%s cannot exclude the field \"\n                    \"'%s' - this is the foreign key to the parent model \"\n                    \"%s.%s.\" % (cls.__name__, fk.name, parent_model._meta.app_label, parent_model.__name__))\n\n    if hasattr(cls, \"readonly_fields\"):\n        check_readonly_fields(cls, cls.model, cls.model._meta)\n\ndef validate_fields_spec(cls, model, opts, flds, label):\n    \"\"\"\n    Validate the fields specification in `flds` from a ModelAdmin subclass\n    `cls` for the `model` model. `opts` is `model`'s Meta inner class.\n    Use `label` for reporting problems to the user.\n\n    The fields specification can be a ``fields`` option or a ``fields``\n    sub-option from a ``fieldsets`` option component.\n    \"\"\"\n    for fields in flds:\n        # The entry in fields might be a tuple. If it is a standalone\n        # field, make it into a tuple to make processing easier.\n        if type(fields) != tuple:\n            fields = (fields,)\n        for field in fields:\n            if field in cls.readonly_fields:\n                # Stuff can be put in fields that isn't actually a\n                # model field if it's in readonly_fields,\n                # readonly_fields will handle the validation of such\n                # things.\n                continue\n            check_formfield(cls, model, opts, label, field)\n            try:\n                f = opts.get_field(field)\n            except models.FieldDoesNotExist:\n                # If we can't find a field on the model that matches, it could be an\n                # extra field on the form; nothing to check so move on to the next field.\n                continue\n            if isinstance(f, models.ManyToManyField) and not f.rel.through._meta.auto_created:\n                raise ImproperlyConfigured(\"'%s.%s' \"\n                    \"can't include the ManyToManyField field '%s' because \"\n                    \"'%s' manually specifies a 'through' model.\" % (\n                        cls.__name__, label, field, field))\n\ndef validate_base(cls, model):\n    opts = model._meta\n\n    # raw_id_fields\n    if hasattr(cls, 'raw_id_fields'):\n        check_isseq(cls, 'raw_id_fields', cls.raw_id_fields)\n        for idx, field in enumerate(cls.raw_id_fields):\n            f = get_field(cls, model, opts, 'raw_id_fields', field)\n            if not isinstance(f, (models.ForeignKey, models.ManyToManyField)):\n                raise ImproperlyConfigured(\"'%s.raw_id_fields[%d]', '%s' must \"\n                        \"be either a ForeignKey or ManyToManyField.\"\n                        % (cls.__name__, idx, field))\n\n    # fields\n    if cls.fields: # default value is None\n        check_isseq(cls, 'fields', cls.fields)\n        validate_fields_spec(cls, model, opts, cls.fields, 'fields')\n        if cls.fieldsets:\n            raise ImproperlyConfigured('Both fieldsets and fields are specified in %s.' % cls.__name__)\n        if len(cls.fields) > len(set(cls.fields)):\n            raise ImproperlyConfigured('There are duplicate field(s) in %s.fields' % cls.__name__)\n\n    # fieldsets\n    if cls.fieldsets: # default value is None\n        check_isseq(cls, 'fieldsets', cls.fieldsets)\n        for idx, fieldset in enumerate(cls.fieldsets):\n            check_isseq(cls, 'fieldsets[%d]' % idx, fieldset)\n            if len(fieldset) != 2:\n                raise ImproperlyConfigured(\"'%s.fieldsets[%d]' does not \"\n                        \"have exactly two elements.\" % (cls.__name__, idx))\n            check_isdict(cls, 'fieldsets[%d][1]' % idx, fieldset[1])\n            if 'fields' not in fieldset[1]:\n                raise ImproperlyConfigured(\"'fields' key is required in \"\n                        \"%s.fieldsets[%d][1] field options dict.\"\n                        % (cls.__name__, idx))\n            validate_fields_spec(cls, model, opts, fieldset[1]['fields'], \"fieldsets[%d][1]['fields']\" % idx)\n        flattened_fieldsets = flatten_fieldsets(cls.fieldsets)\n        if len(flattened_fieldsets) > len(set(flattened_fieldsets)):\n            raise ImproperlyConfigured('There are duplicate field(s) in %s.fieldsets' % cls.__name__)\n\n    # exclude\n    if cls.exclude: # default value is None\n        check_isseq(cls, 'exclude', cls.exclude)\n        for field in cls.exclude:\n            check_formfield(cls, model, opts, 'exclude', field)\n            try:\n                f = opts.get_field(field)\n            except models.FieldDoesNotExist:\n                # If we can't find a field on the model that matches,\n                # it could be an extra field on the form.\n                continue\n        if len(cls.exclude) > len(set(cls.exclude)):\n            raise ImproperlyConfigured('There are duplicate field(s) in %s.exclude' % cls.__name__)\n\n    # form\n    if hasattr(cls, 'form') and not issubclass(cls.form, BaseModelForm):\n        raise ImproperlyConfigured(\"%s.form does not inherit from \"\n                \"BaseModelForm.\" % cls.__name__)\n\n    # filter_vertical\n    if hasattr(cls, 'filter_vertical'):\n        check_isseq(cls, 'filter_vertical', cls.filter_vertical)\n        for idx, field in enumerate(cls.filter_vertical):\n            f = get_field(cls, model, opts, 'filter_vertical', field)\n            if not isinstance(f, models.ManyToManyField):\n                raise ImproperlyConfigured(\"'%s.filter_vertical[%d]' must be \"\n                    \"a ManyToManyField.\" % (cls.__name__, idx))\n\n    # filter_horizontal\n    if hasattr(cls, 'filter_horizontal'):\n        check_isseq(cls, 'filter_horizontal', cls.filter_horizontal)\n        for idx, field in enumerate(cls.filter_horizontal):\n            f = get_field(cls, model, opts, 'filter_horizontal', field)\n            if not isinstance(f, models.ManyToManyField):\n                raise ImproperlyConfigured(\"'%s.filter_horizontal[%d]' must be \"\n                    \"a ManyToManyField.\" % (cls.__name__, idx))\n\n    # radio_fields\n    if hasattr(cls, 'radio_fields'):\n        check_isdict(cls, 'radio_fields', cls.radio_fields)\n        for field, val in cls.radio_fields.items():\n            f = get_field(cls, model, opts, 'radio_fields', field)\n            if not (isinstance(f, models.ForeignKey) or f.choices):\n                raise ImproperlyConfigured(\"'%s.radio_fields['%s']' \"\n                        \"is neither an instance of ForeignKey nor does \"\n                        \"have choices set.\" % (cls.__name__, field))\n            if not val in (HORIZONTAL, VERTICAL):\n                raise ImproperlyConfigured(\"'%s.radio_fields['%s']' \"\n                        \"is neither admin.HORIZONTAL nor admin.VERTICAL.\"\n                        % (cls.__name__, field))\n\n    # prepopulated_fields\n    if hasattr(cls, 'prepopulated_fields'):\n        check_isdict(cls, 'prepopulated_fields', cls.prepopulated_fields)\n        for field, val in cls.prepopulated_fields.items():\n            f = get_field(cls, model, opts, 'prepopulated_fields', field)\n            if isinstance(f, (models.DateTimeField, models.ForeignKey,\n                models.ManyToManyField)):\n                raise ImproperlyConfigured(\"'%s.prepopulated_fields['%s']' \"\n                        \"is either a DateTimeField, ForeignKey or \"\n                        \"ManyToManyField. This isn't allowed.\"\n                        % (cls.__name__, field))\n            check_isseq(cls, \"prepopulated_fields['%s']\" % field, val)\n            for idx, f in enumerate(val):\n                get_field(cls, model, opts, \"prepopulated_fields['%s'][%d]\" % (field, idx), f)\n\ndef check_isseq(cls, label, obj):\n    if not isinstance(obj, (list, tuple)):\n        raise ImproperlyConfigured(\"'%s.%s' must be a list or tuple.\" % (cls.__name__, label))\n\ndef check_isdict(cls, label, obj):\n    if not isinstance(obj, dict):\n        raise ImproperlyConfigured(\"'%s.%s' must be a dictionary.\" % (cls.__name__, label))\n\ndef get_field(cls, model, opts, label, field):\n    try:\n        return opts.get_field(field)\n    except models.FieldDoesNotExist:\n        raise ImproperlyConfigured(\"'%s.%s' refers to field '%s' that is missing from model '%s.%s'.\"\n                % (cls.__name__, label, field, model._meta.app_label, model.__name__))\n\ndef check_formfield(cls, model, opts, label, field):\n    if getattr(cls.form, 'base_fields', None):\n        try:\n            cls.form.base_fields[field]\n        except KeyError:\n            raise ImproperlyConfigured(\"'%s.%s' refers to field '%s' that \"\n                \"is missing from the form.\" % (cls.__name__, label, field))\n    else:\n        get_form_is_overridden = hasattr(cls, 'get_form') and cls.get_form != ModelAdmin.get_form\n        if not get_form_is_overridden:\n            fields = fields_for_model(model)\n            try:\n                fields[field]\n            except KeyError:\n                raise ImproperlyConfigured(\"'%s.%s' refers to field '%s' that \"\n                    \"is missing from the form.\" % (cls.__name__, label, field))\n\ndef fetch_attr(cls, model, opts, label, field):\n    try:\n        return opts.get_field(field)\n    except models.FieldDoesNotExist:\n        pass\n    try:\n        return getattr(model, field)\n    except AttributeError:\n        raise ImproperlyConfigured(\"'%s.%s' refers to '%s' that is neither a field, method or property of model '%s.%s'.\"\n            % (cls.__name__, label, field, model._meta.app_label, model.__name__))\n\ndef check_readonly_fields(cls, model, opts):\n    check_isseq(cls, \"readonly_fields\", cls.readonly_fields)\n    for idx, field in enumerate(cls.readonly_fields):\n        if not callable(field):\n            if not hasattr(cls, field):\n                if not hasattr(model, field):\n                    try:\n                        opts.get_field(field)\n                    except models.FieldDoesNotExist:\n                        raise ImproperlyConfigured(\"%s.readonly_fields[%d], %r is not a callable or an attribute of %r or found in the model %r.\"\n                            % (cls.__name__, idx, field, cls.__name__, model._meta.object_name))\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/views/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/views/decorators.py",
    "content": "from functools import wraps\nfrom django.utils.translation import ugettext as _\nfrom django.contrib.admin.forms import AdminAuthenticationForm\nfrom django.contrib.auth.views import login\nfrom django.contrib.auth import REDIRECT_FIELD_NAME\n\n\ndef staff_member_required(view_func):\n    \"\"\"\n    Decorator for views that checks that the user is logged in and is a staff\n    member, displaying the login page if necessary.\n    \"\"\"\n    @wraps(view_func)\n    def _checklogin(request, *args, **kwargs):\n        if request.user.is_active and request.user.is_staff:\n            # The user is valid. Continue to the admin page.\n            return view_func(request, *args, **kwargs)\n\n        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'.\"\n        defaults = {\n            'template_name': 'admin/login.html',\n            'authentication_form': AdminAuthenticationForm,\n            'extra_context': {\n                'title': _('Log in'),\n                'app_path': request.get_full_path(),\n                REDIRECT_FIELD_NAME: request.get_full_path(),\n            },\n        }\n        return login(request, **defaults)\n    return _checklogin\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/views/main.py",
    "content": "import operator\nfrom functools import reduce\n\nfrom django.core.exceptions import SuspiciousOperation, ImproperlyConfigured\nfrom django.core.paginator import InvalidPage\nfrom django.core.urlresolvers import reverse\nfrom django.db import models\nfrom django.db.models.fields import FieldDoesNotExist\nfrom django.utils.datastructures import SortedDict\nfrom django.utils.encoding import force_str, force_text\nfrom django.utils.translation import ugettext, ugettext_lazy\nfrom django.utils.http import urlencode\n\nfrom django.contrib.admin import FieldListFilter\nfrom django.contrib.admin.options import IncorrectLookupParameters\nfrom django.contrib.admin.util import (quote, get_fields_from_path,\n    lookup_needs_distinct, prepare_lookup_value)\n\n# Changelist settings\nALL_VAR = 'all'\nORDER_VAR = 'o'\nORDER_TYPE_VAR = 'ot'\nPAGE_VAR = 'p'\nSEARCH_VAR = 'q'\nTO_FIELD_VAR = 't'\nIS_POPUP_VAR = 'pop'\nERROR_FLAG = 'e'\n\nIGNORED_PARAMS = (\n    ALL_VAR, ORDER_VAR, ORDER_TYPE_VAR, SEARCH_VAR, IS_POPUP_VAR, TO_FIELD_VAR)\n\n# Text to display within change-list table cells if the value is blank.\nEMPTY_CHANGELIST_VALUE = ugettext_lazy('(None)')\n\n\nclass ChangeList(object):\n    def __init__(self, request, model, list_display, list_display_links,\n            list_filter, date_hierarchy, search_fields, list_select_related,\n            list_per_page, list_max_show_all, list_editable, model_admin):\n        self.model = model\n        self.opts = model._meta\n        self.lookup_opts = self.opts\n        self.root_query_set = model_admin.queryset(request)\n        self.list_display = list_display\n        self.list_display_links = list_display_links\n        self.list_filter = list_filter\n        self.date_hierarchy = date_hierarchy\n        self.search_fields = search_fields\n        self.list_select_related = list_select_related\n        self.list_per_page = list_per_page\n        self.list_max_show_all = list_max_show_all\n        self.model_admin = model_admin\n\n        # Get search parameters from the query string.\n        try:\n            self.page_num = int(request.GET.get(PAGE_VAR, 0))\n        except ValueError:\n            self.page_num = 0\n        self.show_all = ALL_VAR in request.GET\n        self.is_popup = IS_POPUP_VAR in request.GET\n        self.to_field = request.GET.get(TO_FIELD_VAR)\n        self.params = dict(request.GET.items())\n        if PAGE_VAR in self.params:\n            del self.params[PAGE_VAR]\n        if ERROR_FLAG in self.params:\n            del self.params[ERROR_FLAG]\n\n        if self.is_popup:\n            self.list_editable = ()\n        else:\n            self.list_editable = list_editable\n        self.query = request.GET.get(SEARCH_VAR, '')\n        self.query_set = self.get_query_set(request)\n        self.get_results(request)\n        if self.is_popup:\n            title = ugettext('Select %s')\n        else:\n            title = ugettext('Select %s to change')\n        self.title = title % force_text(self.opts.verbose_name)\n        self.pk_attname = self.lookup_opts.pk.attname\n\n    def get_filters(self, request):\n        lookup_params = self.params.copy() # a dictionary of the query string\n        use_distinct = False\n\n        # Remove all the parameters that are globally and systematically\n        # ignored.\n        for ignored in IGNORED_PARAMS:\n            if ignored in lookup_params:\n                del lookup_params[ignored]\n\n        # Normalize the types of keys\n        for key, value in lookup_params.items():\n            if not isinstance(key, str):\n                # 'key' will be used as a keyword argument later, so Python\n                # requires it to be a string.\n                del lookup_params[key]\n                lookup_params[force_str(key)] = value\n\n            if not self.model_admin.lookup_allowed(key, value):\n                raise SuspiciousOperation(\"Filtering by %s not allowed\" % key)\n\n        filter_specs = []\n        if self.list_filter:\n            for list_filter in self.list_filter:\n                if callable(list_filter):\n                    # This is simply a custom list filter class.\n                    spec = list_filter(request, lookup_params,\n                        self.model, self.model_admin)\n                else:\n                    field_path = None\n                    if isinstance(list_filter, (tuple, list)):\n                        # This is a custom FieldListFilter class for a given field.\n                        field, field_list_filter_class = list_filter\n                    else:\n                        # This is simply a field name, so use the default\n                        # FieldListFilter class that has been registered for\n                        # the type of the given field.\n                        field, field_list_filter_class = list_filter, FieldListFilter.create\n                    if not isinstance(field, models.Field):\n                        field_path = field\n                        field = get_fields_from_path(self.model, field_path)[-1]\n                    spec = field_list_filter_class(field, request, lookup_params,\n                        self.model, self.model_admin, field_path=field_path)\n                    # Check if we need to use distinct()\n                    use_distinct = (use_distinct or\n                                    lookup_needs_distinct(self.lookup_opts,\n                                                          field_path))\n                if spec and spec.has_output():\n                    filter_specs.append(spec)\n\n        # At this point, all the parameters used by the various ListFilters\n        # have been removed from lookup_params, which now only contains other\n        # parameters passed via the query string. We now loop through the\n        # remaining parameters both to ensure that all the parameters are valid\n        # fields and to determine if at least one of them needs distinct(). If\n        # the lookup parameters aren't real fields, then bail out.\n        try:\n            for key, value in lookup_params.items():\n                lookup_params[key] = prepare_lookup_value(key, value)\n                use_distinct = (use_distinct or\n                                lookup_needs_distinct(self.lookup_opts, key))\n            return filter_specs, bool(filter_specs), lookup_params, use_distinct\n        except FieldDoesNotExist as e:\n            raise IncorrectLookupParameters(e)\n\n    def get_query_string(self, new_params=None, remove=None):\n        if new_params is None: new_params = {}\n        if remove is None: remove = []\n        p = self.params.copy()\n        for r in remove:\n            for k in list(p):\n                if k.startswith(r):\n                    del p[k]\n        for k, v in new_params.items():\n            if v is None:\n                if k in p:\n                    del p[k]\n            else:\n                p[k] = v\n        return '?%s' % urlencode(sorted(p.items()))\n\n    def get_results(self, request):\n        paginator = self.model_admin.get_paginator(request, self.query_set, self.list_per_page)\n        # Get the number of objects, with admin filters applied.\n        result_count = paginator.count\n\n        # Get the total number of objects, with no admin filters applied.\n        # Perform a slight optimization: Check to see whether any filters were\n        # given. If not, use paginator.hits to calculate the number of objects,\n        # because we've already done paginator.hits and the value is cached.\n        if not self.query_set.query.where:\n            full_result_count = result_count\n        else:\n            full_result_count = self.root_query_set.count()\n\n        can_show_all = result_count <= self.list_max_show_all\n        multi_page = result_count > self.list_per_page\n\n        # Get the list of objects to display on this page.\n        if (self.show_all and can_show_all) or not multi_page:\n            result_list = self.query_set._clone()\n        else:\n            try:\n                result_list = paginator.page(self.page_num+1).object_list\n            except InvalidPage:\n                raise IncorrectLookupParameters\n\n        self.result_count = result_count\n        self.full_result_count = full_result_count\n        self.result_list = result_list\n        self.can_show_all = can_show_all\n        self.multi_page = multi_page\n        self.paginator = paginator\n\n    def _get_default_ordering(self):\n        ordering = []\n        if self.model_admin.ordering:\n            ordering = self.model_admin.ordering\n        elif self.lookup_opts.ordering:\n            ordering = self.lookup_opts.ordering\n        return ordering\n\n    def get_ordering_field(self, field_name):\n        \"\"\"\n        Returns the proper model field name corresponding to the given\n        field_name to use for ordering. field_name may either be the name of a\n        proper model field or the name of a method (on the admin or model) or a\n        callable with the 'admin_order_field' attribute. Returns None if no\n        proper model field name can be matched.\n        \"\"\"\n        try:\n            field = self.lookup_opts.get_field(field_name)\n            return field.name\n        except models.FieldDoesNotExist:\n            # See whether field_name is a name of a non-field\n            # that allows sorting.\n            if callable(field_name):\n                attr = field_name\n            elif hasattr(self.model_admin, field_name):\n                attr = getattr(self.model_admin, field_name)\n            else:\n                attr = getattr(self.model, field_name)\n            return getattr(attr, 'admin_order_field', None)\n\n    def get_ordering(self, request, queryset):\n        \"\"\"\n        Returns the list of ordering fields for the change list.\n        First we check the get_ordering() method in model admin, then we check\n        the object's default ordering. Then, any manually-specified ordering\n        from the query string overrides anything. Finally, a deterministic\n        order is guaranteed by ensuring the primary key is used as the last\n        ordering field.\n        \"\"\"\n        params = self.params\n        ordering = list(self.model_admin.get_ordering(request)\n                        or self._get_default_ordering())\n        if ORDER_VAR in params:\n            # Clear ordering and used params\n            ordering = []\n            order_params = params[ORDER_VAR].split('.')\n            for p in order_params:\n                try:\n                    none, pfx, idx = p.rpartition('-')\n                    field_name = self.list_display[int(idx)]\n                    order_field = self.get_ordering_field(field_name)\n                    if not order_field:\n                        continue # No 'admin_order_field', skip it\n                    ordering.append(pfx + order_field)\n                except (IndexError, ValueError):\n                    continue # Invalid ordering specified, skip it.\n\n        # Add the given query's ordering fields, if any.\n        ordering.extend(queryset.query.order_by)\n\n        # Ensure that the primary key is systematically present in the list of\n        # ordering fields so we can guarantee a deterministic order across all\n        # database backends.\n        pk_name = self.lookup_opts.pk.name\n        if not (set(ordering) & set(['pk', '-pk', pk_name, '-' + pk_name])):\n            # The two sets do not intersect, meaning the pk isn't present. So\n            # we add it.\n            ordering.append('-pk')\n\n        return ordering\n\n    def get_ordering_field_columns(self):\n        \"\"\"\n        Returns a SortedDict of ordering field column numbers and asc/desc\n        \"\"\"\n\n        # We must cope with more than one column having the same underlying sort\n        # field, so we base things on column numbers.\n        ordering = self._get_default_ordering()\n        ordering_fields = SortedDict()\n        if ORDER_VAR not in self.params:\n            # for ordering specified on ModelAdmin or model Meta, we don't know\n            # the right column numbers absolutely, because there might be more\n            # than one column associated with that ordering, so we guess.\n            for field in ordering:\n                if field.startswith('-'):\n                    field = field[1:]\n                    order_type = 'desc'\n                else:\n                    order_type = 'asc'\n                for index, attr in enumerate(self.list_display):\n                    if self.get_ordering_field(attr) == field:\n                        ordering_fields[index] = order_type\n                        break\n        else:\n            for p in self.params[ORDER_VAR].split('.'):\n                none, pfx, idx = p.rpartition('-')\n                try:\n                    idx = int(idx)\n                except ValueError:\n                    continue # skip it\n                ordering_fields[idx] = 'desc' if pfx == '-' else 'asc'\n        return ordering_fields\n\n    def get_query_set(self, request):\n        # First, we collect all the declared list filters.\n        (self.filter_specs, self.has_filters, remaining_lookup_params,\n         use_distinct) = self.get_filters(request)\n\n        # Then, we let every list filter modify the queryset to its liking.\n        qs = self.root_query_set\n        for filter_spec in self.filter_specs:\n            new_qs = filter_spec.queryset(request, qs)\n            if new_qs is not None:\n                qs = new_qs\n\n        try:\n            # Finally, we apply the remaining lookup parameters from the query\n            # string (i.e. those that haven't already been processed by the\n            # filters).\n            qs = qs.filter(**remaining_lookup_params)\n        except (SuspiciousOperation, ImproperlyConfigured):\n            # Allow certain types of errors to be re-raised as-is so that the\n            # caller can treat them in a special way.\n            raise\n        except Exception as e:\n            # Every other error is caught with a naked except, because we don't\n            # have any other way of validating lookup parameters. They might be\n            # invalid if the keyword arguments are incorrect, or if the values\n            # are not in the correct type, so we might get FieldError,\n            # ValueError, ValidationError, or ?.\n            raise IncorrectLookupParameters(e)\n\n        # Use select_related() if one of the list_display options is a field\n        # with a relationship and the provided queryset doesn't already have\n        # select_related defined.\n        if not qs.query.select_related:\n            if self.list_select_related:\n                qs = qs.select_related()\n            else:\n                for field_name in self.list_display:\n                    try:\n                        field = self.lookup_opts.get_field(field_name)\n                    except models.FieldDoesNotExist:\n                        pass\n                    else:\n                        if isinstance(field.rel, models.ManyToOneRel):\n                            qs = qs.select_related()\n                            break\n\n        # Set ordering.\n        ordering = self.get_ordering(request, qs)\n        qs = qs.order_by(*ordering)\n\n        # Apply keyword searches.\n        def construct_search(field_name):\n            if field_name.startswith('^'):\n                return \"%s__istartswith\" % field_name[1:]\n            elif field_name.startswith('='):\n                return \"%s__iexact\" % field_name[1:]\n            elif field_name.startswith('@'):\n                return \"%s__search\" % field_name[1:]\n            else:\n                return \"%s__icontains\" % field_name\n\n        if self.search_fields and self.query:\n            orm_lookups = [construct_search(str(search_field))\n                           for search_field in self.search_fields]\n            for bit in self.query.split():\n                or_queries = [models.Q(**{orm_lookup: bit})\n                              for orm_lookup in orm_lookups]\n                qs = qs.filter(reduce(operator.or_, or_queries))\n            if not use_distinct:\n                for search_spec in orm_lookups:\n                    if lookup_needs_distinct(self.lookup_opts, search_spec):\n                        use_distinct = True\n                        break\n\n        if use_distinct:\n            return qs.distinct()\n        else:\n            return qs\n\n    def url_for_result(self, result):\n        pk = getattr(result, self.pk_attname)\n        return reverse('admin:%s_%s_change' % (self.opts.app_label,\n                                               self.opts.module_name),\n                       args=(quote(pk),),\n                       current_app=self.model_admin.admin_site.name)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admin/widgets.py",
    "content": "\"\"\"\nForm Widget classes specific to the Django admin site.\n\"\"\"\nfrom __future__ import unicode_literals\n\nimport copy\n\nfrom django import forms\nfrom django.contrib.admin.templatetags.admin_static import static\nfrom django.core.urlresolvers import reverse\nfrom django.forms.widgets import RadioFieldRenderer\nfrom django.forms.util import flatatt\nfrom django.utils.html import escape, format_html, format_html_join, smart_urlquote\nfrom django.utils.text import Truncator\nfrom django.utils.translation import ugettext as _\nfrom django.utils.safestring import mark_safe\nfrom django.utils.encoding import force_text\nfrom django.utils import six\n\n\nclass FilteredSelectMultiple(forms.SelectMultiple):\n    \"\"\"\n    A SelectMultiple with a JavaScript filter interface.\n\n    Note that the resulting JavaScript assumes that the jsi18n\n    catalog has been loaded in the page\n    \"\"\"\n    @property\n    def media(self):\n        js = [\"core.js\", \"SelectBox.js\", \"SelectFilter2.js\"]\n        return forms.Media(js=[static(\"admin/js/%s\" % path) for path in js])\n\n    def __init__(self, verbose_name, is_stacked, attrs=None, choices=()):\n        self.verbose_name = verbose_name\n        self.is_stacked = is_stacked\n        super(FilteredSelectMultiple, self).__init__(attrs, choices)\n\n    def render(self, name, value, attrs=None, choices=()):\n        if attrs is None:\n            attrs = {}\n        attrs['class'] = 'selectfilter'\n        if self.is_stacked:\n            attrs['class'] += 'stacked'\n        output = [super(FilteredSelectMultiple, self).render(name, value, attrs, choices)]\n        output.append('<script type=\"text/javascript\">addEvent(window, \"load\", function(e) {')\n        # TODO: \"id_\" is hard-coded here. This should instead use the correct\n        # API to determine the ID dynamically.\n        output.append('SelectFilter.init(\"id_%s\", \"%s\", %s, \"%s\"); });</script>\\n'\n            % (name, self.verbose_name.replace('\"', '\\\\\"'), int(self.is_stacked), static('admin/')))\n        return mark_safe(''.join(output))\n\nclass AdminDateWidget(forms.DateInput):\n\n    @property\n    def media(self):\n        js = [\"calendar.js\", \"admin/DateTimeShortcuts.js\"]\n        return forms.Media(js=[static(\"admin/js/%s\" % path) for path in js])\n\n    def __init__(self, attrs=None, format=None):\n        final_attrs = {'class': 'vDateField', 'size': '10'}\n        if attrs is not None:\n            final_attrs.update(attrs)\n        super(AdminDateWidget, self).__init__(attrs=final_attrs, format=format)\n\nclass AdminTimeWidget(forms.TimeInput):\n\n    @property\n    def media(self):\n        js = [\"calendar.js\", \"admin/DateTimeShortcuts.js\"]\n        return forms.Media(js=[static(\"admin/js/%s\" % path) for path in js])\n\n    def __init__(self, attrs=None, format=None):\n        final_attrs = {'class': 'vTimeField', 'size': '8'}\n        if attrs is not None:\n            final_attrs.update(attrs)\n        super(AdminTimeWidget, self).__init__(attrs=final_attrs, format=format)\n\nclass AdminSplitDateTime(forms.SplitDateTimeWidget):\n    \"\"\"\n    A SplitDateTime Widget that has some admin-specific styling.\n    \"\"\"\n    def __init__(self, attrs=None):\n        widgets = [AdminDateWidget, AdminTimeWidget]\n        # Note that we're calling MultiWidget, not SplitDateTimeWidget, because\n        # we want to define widgets.\n        forms.MultiWidget.__init__(self, widgets, attrs)\n\n    def format_output(self, rendered_widgets):\n        return format_html('<p class=\"datetime\">{0} {1}<br />{2} {3}</p>',\n                           _('Date:'), rendered_widgets[0],\n                           _('Time:'), rendered_widgets[1])\n\nclass AdminRadioFieldRenderer(RadioFieldRenderer):\n    def render(self):\n        \"\"\"Outputs a <ul> for this set of radio fields.\"\"\"\n        return format_html('<ul{0}>\\n{1}\\n</ul>',\n                           flatatt(self.attrs),\n                           format_html_join('\\n', '<li>{0}</li>',\n                                            ((force_text(w),) for w in self)))\n\nclass AdminRadioSelect(forms.RadioSelect):\n    renderer = AdminRadioFieldRenderer\n\nclass AdminFileWidget(forms.ClearableFileInput):\n    template_with_initial = ('<p class=\"file-upload\">%s</p>'\n                            % forms.ClearableFileInput.template_with_initial)\n    template_with_clear = ('<span class=\"clearable-file-input\">%s</span>'\n                           % forms.ClearableFileInput.template_with_clear)\n\ndef url_params_from_lookup_dict(lookups):\n    \"\"\"\n    Converts the type of lookups specified in a ForeignKey limit_choices_to\n    attribute to a dictionary of query parameters\n    \"\"\"\n    params = {}\n    if lookups and hasattr(lookups, 'items'):\n        items = []\n        for k, v in lookups.items():\n            if isinstance(v, (tuple, list)):\n                v = ','.join([str(x) for x in v])\n            elif isinstance(v, bool):\n                # See django.db.fields.BooleanField.get_prep_lookup\n                v = ('0', '1')[v]\n            else:\n                v = six.text_type(v)\n            items.append((k, v))\n        params.update(dict(items))\n    return params\n\nclass ForeignKeyRawIdWidget(forms.TextInput):\n    \"\"\"\n    A Widget for displaying ForeignKeys in the \"raw_id\" interface rather than\n    in a <select> box.\n    \"\"\"\n    def __init__(self, rel, admin_site, attrs=None, using=None):\n        self.rel = rel\n        self.admin_site = admin_site\n        self.db = using\n        super(ForeignKeyRawIdWidget, self).__init__(attrs)\n\n    def render(self, name, value, attrs=None):\n        rel_to = self.rel.to\n        if attrs is None:\n            attrs = {}\n        extra = []\n        if rel_to in self.admin_site._registry:\n            # The related object is registered with the same AdminSite\n            related_url = reverse('admin:%s_%s_changelist' %\n                                    (rel_to._meta.app_label,\n                                    rel_to._meta.module_name),\n                                    current_app=self.admin_site.name)\n\n            params = self.url_parameters()\n            if params:\n                url = '?' + '&amp;'.join(['%s=%s' % (k, v) for k, v in params.items()])\n            else:\n                url = ''\n            if \"class\" not in attrs:\n                attrs['class'] = 'vForeignKeyRawIdAdminField' # The JavaScript code looks for this hook.\n            # TODO: \"lookup_id_\" is hard-coded here. This should instead use\n            # the correct API to determine the ID dynamically.\n            extra.append('<a href=\"%s%s\" class=\"related-lookup\" id=\"lookup_id_%s\" onclick=\"return showRelatedObjectLookupPopup(this);\"> '\n                            % (related_url, url, name))\n            extra.append('<img src=\"%s\" width=\"16\" height=\"16\" alt=\"%s\" /></a>'\n                            % (static('admin/img/selector-search.gif'), _('Lookup')))\n        output = [super(ForeignKeyRawIdWidget, self).render(name, value, attrs)] + extra\n        if value:\n            output.append(self.label_for_value(value))\n        return mark_safe(''.join(output))\n\n    def base_url_parameters(self):\n        return url_params_from_lookup_dict(self.rel.limit_choices_to)\n\n    def url_parameters(self):\n        from django.contrib.admin.views.main import TO_FIELD_VAR\n        params = self.base_url_parameters()\n        params.update({TO_FIELD_VAR: self.rel.get_related_field().name})\n        return params\n\n    def label_for_value(self, value):\n        key = self.rel.get_related_field().name\n        try:\n            obj = self.rel.to._default_manager.using(self.db).get(**{key: value})\n            return '&nbsp;<strong>%s</strong>' % escape(Truncator(obj).words(14, truncate='...'))\n        except (ValueError, self.rel.to.DoesNotExist):\n            return ''\n\nclass ManyToManyRawIdWidget(ForeignKeyRawIdWidget):\n    \"\"\"\n    A Widget for displaying ManyToMany ids in the \"raw_id\" interface rather than\n    in a <select multiple> box.\n    \"\"\"\n    def render(self, name, value, attrs=None):\n        if attrs is None:\n            attrs = {}\n        if self.rel.to in self.admin_site._registry:\n            # The related object is registered with the same AdminSite\n            attrs['class'] = 'vManyToManyRawIdAdminField'\n        if value:\n            value = ','.join([force_text(v) for v in value])\n        else:\n            value = ''\n        return super(ManyToManyRawIdWidget, self).render(name, value, attrs)\n\n    def url_parameters(self):\n        return self.base_url_parameters()\n\n    def label_for_value(self, value):\n        return ''\n\n    def value_from_datadict(self, data, files, name):\n        value = data.get(name)\n        if value:\n            return value.split(',')\n\n    def _has_changed(self, initial, data):\n        if initial is None:\n            initial = []\n        if data is None:\n            data = []\n        if len(initial) != len(data):\n            return True\n        for pk1, pk2 in zip(initial, data):\n            if force_text(pk1) != force_text(pk2):\n                return True\n        return False\n\nclass RelatedFieldWidgetWrapper(forms.Widget):\n    \"\"\"\n    This class is a wrapper to a given widget to add the add icon for the\n    admin interface.\n    \"\"\"\n    def __init__(self, widget, rel, admin_site, can_add_related=None):\n        self.is_hidden = widget.is_hidden\n        self.needs_multipart_form = widget.needs_multipart_form\n        self.attrs = widget.attrs\n        self.choices = widget.choices\n        self.widget = widget\n        self.rel = rel\n        # Backwards compatible check for whether a user can add related\n        # objects.\n        if can_add_related is None:\n            can_add_related = rel.to in admin_site._registry\n        self.can_add_related = can_add_related\n        # so we can check if the related object is registered with this AdminSite\n        self.admin_site = admin_site\n\n    def __deepcopy__(self, memo):\n        obj = copy.copy(self)\n        obj.widget = copy.deepcopy(self.widget, memo)\n        obj.attrs = self.widget.attrs\n        memo[id(self)] = obj\n        return obj\n\n    @property\n    def media(self):\n        return self.widget.media\n\n    def render(self, name, value, *args, **kwargs):\n        rel_to = self.rel.to\n        info = (rel_to._meta.app_label, rel_to._meta.object_name.lower())\n        self.widget.choices = self.choices\n        output = [self.widget.render(name, value, *args, **kwargs)]\n        if self.can_add_related:\n            related_url = reverse('admin:%s_%s_add' % info, current_app=self.admin_site.name)\n            # TODO: \"add_id_\" is hard-coded here. This should instead use the\n            # correct API to determine the ID dynamically.\n            output.append('<a href=\"%s\" class=\"add-another\" id=\"add_id_%s\" onclick=\"return showAddAnotherPopup(this);\"> '\n                          % (related_url, name))\n            output.append('<img src=\"%s\" width=\"10\" height=\"10\" alt=\"%s\"/></a>'\n                          % (static('admin/img/icon_addlink.gif'), _('Add Another')))\n        return mark_safe(''.join(output))\n\n    def build_attrs(self, extra_attrs=None, **kwargs):\n        \"Helper function for building an attribute dictionary.\"\n        self.attrs = self.widget.build_attrs(extra_attrs=None, **kwargs)\n        return self.attrs\n\n    def value_from_datadict(self, data, files, name):\n        return self.widget.value_from_datadict(data, files, name)\n\n    def _has_changed(self, initial, data):\n        return self.widget._has_changed(initial, data)\n\n    def id_for_label(self, id_):\n        return self.widget.id_for_label(id_)\n\nclass AdminTextareaWidget(forms.Textarea):\n    def __init__(self, attrs=None):\n        final_attrs = {'class': 'vLargeTextField'}\n        if attrs is not None:\n            final_attrs.update(attrs)\n        super(AdminTextareaWidget, self).__init__(attrs=final_attrs)\n\nclass AdminTextInputWidget(forms.TextInput):\n    def __init__(self, attrs=None):\n        final_attrs = {'class': 'vTextField'}\n        if attrs is not None:\n            final_attrs.update(attrs)\n        super(AdminTextInputWidget, self).__init__(attrs=final_attrs)\n\nclass AdminURLFieldWidget(forms.TextInput):\n    def __init__(self, attrs=None):\n        final_attrs = {'class': 'vURLField'}\n        if attrs is not None:\n            final_attrs.update(attrs)\n        super(AdminURLFieldWidget, self).__init__(attrs=final_attrs)\n\n    def render(self, name, value, attrs=None):\n        html = super(AdminURLFieldWidget, self).render(name, value, attrs)\n        if value:\n            value = force_text(self._format_value(value))\n            final_attrs = {'href': mark_safe(smart_urlquote(value))}\n            html = format_html(\n                '<p class=\"url\">{0} <a {1}>{2}</a><br />{3} {4}</p>',\n                _('Currently:'), flatatt(final_attrs), value,\n                _('Change:'), html\n            )\n        return html\n\n\nclass AdminIntegerFieldWidget(forms.TextInput):\n    class_name = 'vIntegerField'\n\n    def __init__(self, attrs=None):\n        final_attrs = {'class': self.class_name}\n        if attrs is not None:\n            final_attrs.update(attrs)\n        super(AdminIntegerFieldWidget, self).__init__(attrs=final_attrs)\n\nclass AdminBigIntegerFieldWidget(AdminIntegerFieldWidget):\n    class_name = 'vBigIntegerField'\n\nclass AdminCommaSeparatedIntegerFieldWidget(forms.TextInput):\n    def __init__(self, attrs=None):\n        final_attrs = {'class': 'vCommaSeparatedIntegerField'}\n        if attrs is not None:\n            final_attrs.update(attrs)\n        super(AdminCommaSeparatedIntegerFieldWidget, self).__init__(attrs=final_attrs)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/af/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2011-01-19 15:09+0000\\n\"\n\"Last-Translator: Django team\\n\"\n\"Language-Team: Afrikaans (http://www.transifex.com/projects/p/django/\"\n\"language/af/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: af\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"Tuisblad\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"Dokumentasie\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Boole (Eder waar of vals)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Veld van type: %(field_type)s \"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/ar/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Ossama Khayat <okhayat@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-11-27 17:00+0000\\n\"\n\"Last-Translator: Ossama Khayat <okhayat@gmail.com>\\n\"\n\"Language-Team: Arabic (http://www.transifex.com/projects/p/django/language/\"\n\"ar/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ar\\n\"\n\"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 \"\n\"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"وسم:\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"مرشّح\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"عرض:\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"التطبيق %r غير موجود\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"النموذج %(model_name)r غير موجود في التطبيق %(app_label)r\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"العنصر `%(app_label)s.%(data_type)s` المرتبط\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"نموذج:\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"عناصر `%(app_label)s.%(object_name)s` مرتبطة\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"كل %s\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"عدد %s\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"الحقول في عناصر %s\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"يبدو أن %s ليس عنصر urlpattern\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"الرئيسية\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"الوثائق\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"أوامر المفضلة\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"أوامر مفضلة الوثائق\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">لتركيب أوامر المفضلة، قم بسحب الوصلة إلى\\n\"\n\"شريط أدات المفضلات في متصفحك، أو قم بالضغط عليها بالزر الأيمن وأضفها إلى \"\n\"مفضلاتك.\\n\"\n\"سيمكنك الآن أن اختيار أوامر المفضلة من أي صفحة في الموقع، لاحظ بأن بعض\\n\"\n\"أوامر المفضلة هذه معدة لتعمل على أجهزة كمبيوتر تعتبر على أنها \\\"داخلية\\\"\\n\"\n\"(تحدث إلى مسؤول النظم إذا لم تكن متأكدا ما إذا كان كمبيوتر يعتبر \\\"داخليا\\\").\"\n\"</p>\\n\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"الوثائق لهذه الصفحة\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"ينتقل بك من أي صفحة إلى وثائق العرض الذي أنشأ هذه الصفحة.\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"أظهر معرف الكائن\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"عرض نوع البيانات والمعرف الفريد للصفحات التي تمثل كائناً واحداً.\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"عدّل هذا العنصر (النافذة الحالية)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"ينتقل بك إلى صفحة الإدارة للصفحات التي تمثل عنصراً واحداً.\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"عدّل هذا العنصر (نافذة جديدة)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"كما سبق، لكن يفتح صفحة الإدارة في نافذة جديدة.\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"النماذج\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"القوالب\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"الفلاتر\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"الوسوم\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"ثنائي (إما True أو False)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"حقل نوع: %(field_type)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/az/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Ali Ismayilov <ali@ismailov.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-22 08:46+0000\\n\"\n\"Last-Translator: Ali Ismayilov <ali@ismailov.info>\\n\"\n\"Language-Team: Azerbaijani (http://www.transifex.com/projects/p/django/\"\n\"language/az/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: az\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"teq:\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"süzgəc:\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"baxış:\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"%r adlı tətbiqetməni tapa bilmədik\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"%(model_name)r modelini %(app_label)r tətbiqetməsində tapa bilmədik\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"bağlı \\\"%(app_label)s.%(data_type)s\\\" obyekti\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"model:\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"bağlı \\\"%(app_label)s.%(object_name)s\\\" obyektləri\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"bütün %s\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"%s-in sayı\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"%s obyektlərindəki sahələr\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"%s urlpattern obyekti deyil\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"Ev\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"Sənədləşmə\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"Əlfəcinciklər (Bookmarklets)\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"Sənədləşmə əlfəcincikləri (bookmarklets)\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">Əlfəcinciyi quraşdırmaq üçün keçidi brauzerinizin \"\n\"əlfəcinlər panelinin\\n\"\n\"üstünə dartın və ya üzərinə sağ tıqlayaraq onu əlfəcinlərə əlavə edin. İndi \"\n\"siz\\n\"\n\"saytın istənilən səhifəsindən əlfəcin seçə bilərsiniz.  Nəzərə alın ki, bəzi \"\n\"əlfəcinlər\\n\"\n\"üçün kompüteriniz \\\"daxili\\\" kimi təyin olunmuş kompüterdən baxmanızı \\n\"\n\"tələb edir. (kompüterinizin \\\"daxili\\\" olmasından əmin deyilsinizsə,\\n\"\n\"sistem administratoru ilə danışın).</p>\\n\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"Bu səhifənin sənədləşməsi\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"Hər hansı səhifəni əmələ gətirən funksiyanın sənədləşməsini göstərir.\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"Obyekt ID göstər\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"\"\n\"Tək obyekt kimi özünü aparan səhifələrin məzmun tipini və xüsusi ID-ni \"\n\"göstərir.\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"Bu obyekti redaktə et (cari pəncərədə)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"\"\n\"Özünü tək obyekt kimi aparan səhifənin admin üçün redaktə səhifəsinə aparır\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"Bu obyekti redaktə et (yeni pəncərədə)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"Yuxarıdakı kimi, ancaq admin səhifəsini yeni pəncərədə açır.\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Bul (ya Doğru, ya Yalan)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Sahənin tipi: %(field_type)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/be/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-22 08:46+0000\\n\"\n\"Last-Translator: Павал Клёк <yehekim@gmail.com>\\n\"\n\"Language-Team: Belarusian (http://www.transifex.com/projects/p/django/\"\n\"language/be/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: be\\n\"\n\"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"цэтлік:\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"сіта:\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"прагляд:\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"Праґраму «%r» не знайшлі\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"Мадэль %(model_name)r у праґраме «%(app_label)r» не знайшлі\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"залежны аб’ект «%(app_label)s.%(data_type)s»\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"мадэль:\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"залежныя аб’екты «%(app_label)s.%(object_name)s»\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"усе %s\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"колькасьць %s\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"Палі аб’ектаў %s\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"%s не падобны да аб’екта «шаблён спасылкі» — «urlpattern»\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"Пачатак\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"Дакумэнтацыя\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"Закладкі\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"Закладкі дакумэнтацыі\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">Каб паставіць закладку, перацягніце спасылку на паліцу \"\n\"закладак\\n\"\n\"або пстрыкніце па спасылцы праваю кнопкаю і дадайце яе да закладак. Цяпер\\n\"\n\"можна абраць закладку зь якое пажадаеце бачыны.  Уважце: пэўныя закладкі\\n\"\n\"патрабуюць, каб пляцоўка праглядалася з «унутранага» кампутара (калі ня \"\n\"ведаеце,\\n\"\n\"ці «ўнутраны» ваш кампутар, запытайцеся сыстэмнага спраўніка).</p>\\n\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"Дакумэнтацыя па бачыне\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"Накіроўвае з хоць-якое бачыны да прагляду, які стварае гэтую бачыну.\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"Паказаць азначальнік аб’екта\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"\"\n\"Паказвае непаўторны азначальнік і від зьмесьціва бачыны, якая ёсьць адным \"\n\"аб’ектам.\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"Правіць аб’ект (у гэтым вакне)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"Накіроўвае да бачыны кіраваць бачынамі, якія ёсьць адным аб’ектам.\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"Правіць аб’ект (у новым вакне)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"Тое самае, што й вышэй, але адчыняе бачыну ў новым вакне.\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"Мадэлі\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"Шаблёны\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"Сіты\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"Цэтлікі\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"Прагляды\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Ляґічнае («сапраўдна» або «не сапраўдна»)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Палі віду: %(field_type)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/bg/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Boris Chervenkov <office@sentido.bg>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Todor Lubenov <tlubenov@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-22 08:46+0000\\n\"\n\"Last-Translator: Boris Chervenkov <office@sentido.bg>\\n\"\n\"Language-Team: Bulgarian (http://www.transifex.com/projects/p/django/\"\n\"language/bg/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: bg\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"етикет:\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"филтър:\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"изглед:\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"Приложението %r липсва\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"Моделът %(model_name)r не е намерен в приложение %(app_label)r\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"свързания '%(app_label)s.%(data_type)s' обект\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"модел:\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"свързаните '%(app_label)s.%(object_name)s' обекти\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"всички %s\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"брой %s\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"Полета на %s обекти\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"%s не прилича на обект от тип urlpattern\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"Начало\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"Документация\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"Bookmarklets\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"Bookmarklet-и за документация\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">За да инсталирате bookmarklet-и, задърпайте линка в \"\n\"bookmarks\\n\"\n\"toolbar-а, или щракнете с десния бутон и добавете линка в отметките. Сега \"\n\"можете да\\n\"\n\"изберете bookmarklet-а от която и да е страница.  Някой от тези\\n\"\n\"bookmarklet-и могат да се разглеждат само от компютър, който е маркиран \\n\"\n\"като \\\"вътрешен\\\" (приказвайте с администратора ако не сте сигурни дали\\n\"\n\"компютърът ви е \\\"вътрешен\\\").</p>\\n\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"Документация за тази страница\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"\"\n\"Препраща Ви от която и да е страница към документацията за изгледа, който я \"\n\"е генерирал.\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"Покажи ID на обекта\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"\"\n\"Показва типа на съдържанието и ID-то на страници, които представляват \"\n\"единичен обект.\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"Редактирай този обект (в този прозорец)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"\"\n\"Препраща към администраторска страница за страници, които представляват \"\n\"единичен обект.  \"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"Редактирай този обект (в нов прозорец)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"Като горното, но отваря администраторската страница в нов прозорец.\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"Модели\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"Шаблони\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"Филтри\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"Етикети\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"Прегледи\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Boolean (True или False)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Поле от тип: %(field_type)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/bn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Translators:\n#  <anubhab91@gmail.com>, 2013.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <rafi.tahmid@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2013-02-08 15:20+0000\\n\"\n\"Last-Translator: anubhab91 <anubhab91@gmail.com>\\n\"\n\"Language-Team: Bengali (http://www.transifex.com/projects/p/django/language/\"\n\"bn/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: bn\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"ট্যাগঃ\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"ফিল্টারঃ\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"ভিউঃ\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"%r এ্যপটি পাওয়া যায়নি\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"%(app_label)r এ্যপে %(model_name)r মডেলটি পাওয়া যায়নি\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"`%(app_label)s.%(data_type)s` সম্পর্কিত অবজেক্ট\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"মডেলঃ\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"`%(app_label)s.%(object_name)s` সম্পর্কিত অবজেক্ট সমূহ\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"সকল %s\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"%s সংখ্যা\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"%s অবজেক্টে ফিল্ডগুলো\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"%s ইউআরএল -এর মত নয়\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"নীড়পাতা\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"সহায়িকা\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"বুকমার্কলেট\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"সহায়িকা বুকমার্কলেট\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">বুকমার্ক ইনস্টলের জন্য লিঙ্কটি আপনার বুকমার্ক টুলবারে টেনে নিয়ে \"\n\"যান, অথবা রাইট-ক্লিক করে বুকমার্কে যোগ করুন। এখন আপনি\\n\"\n\"সাইটের যেকোন পাতা থেকে বুকমার্কলেটটি ব্যবহার করতে পারবেন। লক্ষ্য করুন যে, বেশ কিছু \"\n\"বুকমার্কলেট দেখার জন্য \\\"internal\\\" কম্পিউটার থেকে\\n\"\n\"দেখতে হবে (আপনার প্রশাসনের কাছ থেকে জানুন যে আপনার কম্পিউটার \\\"internal\\\" কিনা)।\"\n\"</p>\\n\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"এই পাতার সহায়িকা\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"যেকোন পাতা থেকে ভিউ সহায়িকাতে নিয়ে যান।\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"অবজেক্ট আইডি দেখান\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"কনটেন্ট-টাইপ এবং একক আইডি দেখায়, যা কিনা একটি নির্দিষ্ট অবজেক্টকে বোঝায়।\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"এই অবজেক্টটি সম্পাদন করুন (বর্তমান উইন্ডো)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"প্রশাসন পাতায় নিয়ে যান, যা কিনা একটি নির্দিষ্ট পাতা অবজেক্টকে বোঝায়।\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"এই অবজেক্টটি সম্পাদন করুন (নতুন উইন্ডো)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"উপরের মতই, কিন্তু নতুন উইন্ডোতে খুলুন।\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"মডেলগুলো\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"টেমপ্লেটগুলো\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"ফিল্টারগুলো\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"ট্যাগগুলো\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"ভিউগুলো\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"বুলিয়ান (হয় True অথবা False)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"ফিল্ডের ধরণ: %(field_type)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/br/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Fulup  <fulup.jakez@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-22 08:46+0000\\n\"\n\"Last-Translator: Fulup <fulup.jakez@gmail.com>\\n\"\n\"Language-Team: Breton (http://www.transifex.com/projects/p/django/language/\"\n\"br/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: br\\n\"\n\"Plural-Forms: nplurals=2; plural=(n > 1);\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"niver a %s\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"Degemer\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"Teuliadoù\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"Sinedoù\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"Siloù\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"Tikedennoù\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Boulean (gwir pe gaou)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Seurt maezienn : %(field_type)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/bs/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-22 08:46+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Bosnian (http://www.transifex.com/projects/p/django/language/\"\n\"bs/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: bs\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"tag:\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"filter:\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"pogled:\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"Aplikacija %r nije pronađena\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"Model %(model_name)r nije pronađen u aplikaciji %(app_label)r\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"povezani objekti klase `%(app_label)s.%(data_type)s`\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"model:\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"klase `%(app_label)s.%(object_name)s`\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"svi povezani objekti %s\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"broj povezanih objekata %s\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"Polja u povezanim objektima %s\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"%s ne izgleda kao urlpattern objekat\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"Početna\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"Dokumentacija\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"Bookmarkleti\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"Bookmarkleti dokumentacije\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">Da biste instalirali bookmarklet, prevucite link do \"\n\"svojih\\n\"\n\"bookmarka ili kliknite desnim dugmetom i dodajte među bookmarke. Nakon toga\\n\"\n\"bookmarkletima možete pristupiti sa svake stranice na sajtu. Imajte na umu\\n\"\n\"da neki bookmarkleti zahtijevaju da sajtu pristupite sa računara koji su\\n\"\n\"označeni kao „interni“ (pitajte administratora vašeg sistema ukoliko niste\\n\"\n\"sigurni da li je vaš računar „interni“).</p>\\n\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"Dokumentacija za ovu stranicu\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"\"\n\"Vodi od bilo koje stranice do dokumentacije za pogled koji generiše tu \"\n\"stranicu.\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"Prikaži ID objekta\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"\"\n\"Prikazuje content-type i jedinstveni ID za stranicu koja predstavlja jedan \"\n\"objekat.\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"Izmjeni ovaj objekat (u ovom prozoru)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"\"\n\"Vodi u administracioni stranicu za stranice koje prestavljaju jedan objekat\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"Izmjeni ovaj objekat (novi prozor)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"\"\n\"Isto kao prethodni, ali otvara administracionu stranicu u novom prozoru.\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Bulova vrijednost (True ili False)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Polje tipa: %(field_type)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/ca/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Carles Barrobés <carles@barrobes.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-22 08:46+0000\\n\"\n\"Last-Translator: Carles Barrobés <carles@barrobes.com>\\n\"\n\"Language-Team: Catalan (http://www.transifex.com/projects/p/django/language/\"\n\"ca/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ca\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"etiqueta:\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"filtre:\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"vista:\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"No s'ha pogut trobar l'aplicació %r\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"El model %(model_name)r no s'ha trobat a l'aplicació %(app_label)r\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"l'objecte relacionat `%(app_label)s.%(data_type)s`\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"model:\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"objectes relacionats `%(app_label)s.%(object_name)s`\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"tots %s\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"nombre de %s\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"Camps en objectes %s\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"%s no sembla ser un objecte 'urlpattern'\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"Inici\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"Documentació\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"'Bookmarklets'\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"'Bookmarklets' de documentació\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">Per tal d'instal·lar 'bookmarklets', arrosegueu l'enllaç\\n\"\n\"a la vostra barra de marcadors, o feu click amb el botó dret a l'enllaç i\\n\"\n\"afegiu-lo als marcadors.\\n\"\n\"Ara podeu escollir el 'bookmarklet' des de qualsevol pàgina del lloc.\\n\"\n\"Observeu que per a alguns d'aquests 'bookmarklets' cal que estigueu veient\\n\"\n\"el lloc des d'un ordinador designat com a \\\"intern\\\" (parleu\\n\"\n\"amb el vostre administrador de sistemes si no esteu segurs si el vostre \"\n\"ordinador és \\\"intern\\\").</p>\\n\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"Documentació d'aquesta pàgina\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"\"\n\"Us porta des de qualsevol pàgina a la documentació de la vista que la genera.\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"Mostra l'ID de l'objecte\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"\"\n\"Mostra el 'content-type' (tipus de contingut) i l'ID inequívoc de les \"\n\"pàgines que representen un únic objecte.\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"Editar aquest objecte (finestra actual)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"\"\n\"El porta a la pàgina d'administració de pàgines que representen un únic \"\n\"objecte.\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"Editar aquest objecte (nova finestra)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"Com abans, però obre la pàgina d'administració en una nova finestra.\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"Models\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"Plantilles\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"Filtres\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"Etiquetes\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"Vistes\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Booleà (Cert o Fals)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Camp del tipus: %(field_type)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/cs/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Vlada Macek <macek@sandbox.cz>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-22 08:46+0000\\n\"\n\"Last-Translator: Vlada Macek <macek@sandbox.cz>\\n\"\n\"Language-Team: Czech (http://www.transifex.com/projects/p/django/language/\"\n\"cs/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: cs\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"tag:\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"filtr:\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"pohled (view):\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"Aplikace %r nenalezena\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"Model %(model_name)r v aplikaci %(app_label)r nenalezen\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"související položka `%(app_label)s.%(data_type)s`\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"model:\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"související položky `%(app_label)s.%(object_name)s`\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"Vše: %s\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"Počet: %s\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"Pole položek typu %s\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"Objekt %s patrně není typu urlpattern.\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"Domů\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"Dokumentace\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"Bookmarklety\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"Dokumentační bookmarklety\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">Pro nainstalování bookmarkletů, přetáhněte odkaz na vaše \"\n\"záložky (oblíbené),\\n\"\n\"nebo klepněte pravým tlačítkem na odkaz a přidejte ho k vašim záložkám \"\n\"(oblíbeným). Nyní můžete\\n\"\n\"zvolit bookmarklet z libovolné stránky. Poznámka: Některé tyto\\n\"\n\"bookmarklety vyžadují, abyste prohlížel(a) stránky z počítače, který je \"\n\"nastaven jako\\n\"\n\"\\\"\\\"interní\\\" (promluvte si s vaším správcem, jestli si nejste jisti,\\n\"\n\"zda je váš počítač \\\"interní\\\").</p>\\n\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"Dokumentace k této stránce\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"\"\n\"Z libovolné stránky otevře dokumentaci pohledu (view), který generoval tuto \"\n\"stránku.\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"Ukázat id položky\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"\"\n\"Zobrazí content-type a unikátní ID stránek reprezentujících jedinou položku.\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"Upravit tuto položku (ve stávajícím okně)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"\"\n\"Přepne do administračního rozhraní stránek reprezentujících jedinou položku.\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"Upravit tuto položku (v novém okně)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"Jako výše, ale otevře prostředí správy v novém okně.\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"Modely\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"Šablony\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"Filtry\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"Tagy\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"Views\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Pravdivost (buď Ano (True), nebo Ne (False))\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Pole typu: %(field_type)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/cy/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-22 08:46+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Welsh (http://www.transifex.com/projects/p/django/language/\"\n\"cy/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: cy\\n\"\n\"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != \"\n\"11) ? 2 : 3;\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"Adref\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"Dogfennaeth\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"Dalennau gofnod\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"Dogfennaeth dalennau gofnod\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"Dogfennaeth er mwyn y dudalen yma\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"Dangos ID gwrthrych\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"\"\n\"Yn dangos y fath-cynnwys a'r ID unigryw ar gyfer tudalennau sy'n \"\n\"cynrychioligwrthrych sengl.\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"Golygu'r gwrthrych yma (ffenestr cyfoes)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"\"\n\"Yn neidio i'r dudalen weinyddiad ar gyfer tudalennau sy'n cynrychioli \"\n\"gwrthrych sengl.\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"Golygu'r gwrthrych yma (ffenestr newydd)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"Fel uwchben, ond yn agor y dudalen weinyddiad mewn ffenestr newydd.\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/da/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Christian Joergensen <christian@gmta.info>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-22 08:46+0000\\n\"\n\"Last-Translator: Christian Joergensen <christian@gmta.info>\\n\"\n\"Language-Team: Danish (http://www.transifex.com/projects/p/django/language/\"\n\"da/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: da\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"tag:\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"filter:\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"view:\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"Applikationen %r blev ikke fundet\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"Modellen %(model_name)r ikke fundet i applikationen %(app_label)r\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"det relaterede `%(app_label)s.%(data_type)s`-objekt\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"model:\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"relaterede `%(app_label)s.%(object_name)s`-objekter\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"alle %s\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"antal %s\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"Felter på %s-objekter\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"%s ser ikke ud til at være et urlpattern-objekt\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"Hjem\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"Dokumentation\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"Bookmarklets\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"Dokumentations-bookmarklets\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">For at installere bookmarklets, træk linket til din\\n\"\n\"bogmærkelinje eller højreklik på linket og tilføj det til dine bogmærker.\\n\"\n\"Du kan nu markere bookmarkletten fra enhver side på websitet.\\n\"\n\"Bemærk, at nogle af disse bookmarkletter kræver, at du ser på websitet fra\\n\"\n\"en computer der opfattes som \\\"intern\\\" (tal med din systemadministrator,\\n\"\n\"hvis du ikke er sikker på om din computer er \\\"intern\\\").</p>\\n\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"Dokumentation for denne side\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"\"\n\"Bringer dig fra en hvilken som helst side til dokumentationen for det view, \"\n\"der genererer den pågældende side.\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"Vis objekt-ID\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"\"\n\"Viser indholdstypen og det unikke ID for sider, der repræsenterer et enkelt \"\n\"objekt.\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"Rediger dette objekt (i det aktuelle vindue)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"\"\n\"Springer til administrationssiden for sider, der repræsenterer et enkelt \"\n\"objekt.\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"Rediger dette objekt (i nyt vindue)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"Som ovenfor, men åbner administrationssiden i et nyt vindue.\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"Modeller\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"Skabeloner\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"Filtre\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"Mærker\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"Visninger\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Boolsk (enten True eller False)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Felt af type: %(field_type)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/de/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011-2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-22 08:46+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: German (http://www.transifex.com/projects/p/django/language/\"\n\"de/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: de\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"Schlagwort:\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"Filter:\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"Ansicht:\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"Anwendung %r nicht gefunden\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"Modell %(model_name)r wurde nicht in Anwendung %(app_label)r gefunden\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"Das verknüpfte `%(app_label)s.%(data_type)s` Objekt\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"Modell:\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"verknüpftes `%(app_label)s.%(object_name)s` Objekt\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"Alle %s\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"Anzahl von %s\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"Felder am %s Objekt\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"%s ist scheinbar kein urlpattern-Objekt\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"Start\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"Dokumentation\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"Bookmarklets\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"Dokumentations-Bookmarklets\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">Um Bookmarklets zu installieren, müssen diese Links in \"\n\"die\\n\"\n\"Browser-Werkzeugleiste gezogen werden, oder mittels rechter Maustaste in \"\n\"die\\n\"\n\"Bookmarks gespeichert werden. Danach können die Bookmarklets von jeder \"\n\"Seite\\n\"\n\"aufgerufen werden. Einige Bookmarklets sind auf den Zugriff von 'internen'\\n\"\n\"Rechnern beschränkt. Falls nicht klar ist, ob ein Rechner als 'intern'\\n\"\n\"bewertet wird, bitte den Administrator fragen.</p>\\n\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"Dokumentation für diese Seite\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"\"\n\"Springt von jeder Seite zu der Dokumentation für den View, der diese Seite \"\n\"erzeugt.\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"Objekt-ID anzeigen\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"\"\n\"Zeigt den Content-Type und die eindeutige ID für Seiten, die ein einzelnes \"\n\"Objekt repräsentieren.\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"Dieses Objekt ändern (Aktives Fenster)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"\"\n\"Springt zu der Administrationsseite für dieses Objekt, wenn diese Seite ein \"\n\"Objekt repräsentiert.\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"Dieses Objekt ändern (Neues Fenster)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"\"\n\"Wie zuvor, aber öffnet die Administrationsseite in einem neuen Fenster.\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"Models\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"Templates\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"Filter\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"Tags\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"Views\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Boolescher Wert (True oder False)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Feldtyp: %(field_type)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/el/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Dimitris Glezos <glezos@indifex.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Yorgos Pagles <y.pagles@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-22 08:46+0000\\n\"\n\"Last-Translator: Yorgos Pagles <y.pagles@gmail.com>\\n\"\n\"Language-Team: Greek (http://www.transifex.com/projects/p/django/language/\"\n\"el/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: el\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"ετικέτα:\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"φίλτρο:\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"προβολή:\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"Δε βρέθηκε η εφαρμογή %r\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"\"\n\"Το μοντέλο %(model_name)r δεν μπορεί να βρεθεί στην εφαρμογή %(app_label)r\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"το συσχετισμένο `%(app_label)s.%(data_type)s`  αντικείμενο\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"μοντέλο:\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"συσχετισμένα `%(app_label)s.%(object_name)s` αντικείμενα\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"όλα %s\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"πλήθος number of %s\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"Πεδία στα αντικείμενα %s\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"Το %s δε φαίνεται να είναι ένα αντικείμενο urlpattern\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"Αρχική\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"Τεκμηρίωση\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"Σελιδοδείκτες\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"Σελιδοδείκτες τεκμηρίωσης\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">Για να εγκαταστήσετε έναν \\\"bookmarklet\\\" σύνδεσμο, σύρετε \"\n\"τον σύνδεσμο στον χώρο με τους αγαπημένους σας ιστότοπους στην γραμμή \"\n\"εργαλείων σας ή κάντε δεξί κλικ πάνω στον σύνδεσμο και σώστε τον στα \"\n\"αγαπημένα σας. Πλέον θα μπορείτε να χρησιμοποιείτε  τον σύνδεσμο bookmarklet \"\n\"από την οποιαδήποτε σελίδα του ιστοτόπου σας. Σας υπενθημίζουμε ότι αυτού \"\n\"του είδους τα bookmarklets απαιτούν να επισκέπτεστε τον ιστότοπο από έναν \"\n\"υπολογιστή που να έχει οριστεί σαν \\\"εσωτερικός\\\" (\\\"internal\\\").  \"\n\"Απευθυνθείτε στον διαχειριστή σας αν δεν γνωρίζεται αν ο υπολογιστής σας \"\n\"θερείται \\\"εσωτερικός\\\".</p>\\n\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"Τεκμηρίωση για αυτήν τη σελίδα\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"\"\n\"Μεταπήδηση από οποιαδήποτε σελίδα στην τεκμηρίωση για το view που \"\n\"δημιούργησε τη σελίδα αυτή.\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"Εμφάνιση ID αντικειμένου\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"\"\n\"Εμφάνιση του content-type και του μοναδικού αναγνωριστικού για τις σελίδες \"\n\"που αντιπροσωπεύουν ένα μοναδικό αντικείμενο.\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"Επεξεργασία αυτού του αντικειμένου (τρέχον παράθυρο)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"\"\n\"Αν η σελίδα αναπαριστά ένα και μοναδικό αντικείμενο τότε οδηγεί στην \"\n\"αντίστοιχη σελίδα διαχείρισης.\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"Επεξεργασία αυτού του αντικειμένου (νέο παράθυρο)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"\"\n\"Όπως και παραπάνω, αλλά άνοιγμα της σελίδας διαχείρισης σε νέο παράθυρο.\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Boolean (Είτε Αληθές ή Ψευδές)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Είδος πεδίου: %(field_type)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/en/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-22 08:46+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: English <en@li.org>\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: en\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"tag:\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"filter:\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"view:\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"App %r not found\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"Model %(model_name)r not found in app %(app_label)r\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"the related `%(app_label)s.%(data_type)s` object\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"model:\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"related `%(app_label)s.%(object_name)s` objects\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"all %s\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"number of %s\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"Fields on %s objects\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"%s does not appear to be a urlpattern object\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"Home\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"Documentation\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"Bookmarklets\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"Documentation bookmarklets\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"Documentation for this page\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"Show object ID\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"Edit this object (current window)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"Jumps to the admin page for pages that represent a single object.\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"Edit this object (new window)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"As above, but opens the admin page in a new window.\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"Models\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"Templates\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"Filters\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"Tags\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"Views\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Boolean (Either True or False)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Field of type: %(field_type)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/en_GB/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# jon_atkinson <jon@jonatkinson.co.uk>, 2011.\n#   <jon@jonatkinson.co.uk>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-22 08:46+0000\\n\"\n\"Last-Translator: jon_atkinson <jon@jonatkinson.co.uk>\\n\"\n\"Language-Team: English (United Kingdom) (http://www.transifex.com/projects/p/\"\n\"django/language/en_GB/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: en_GB\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"tag:\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"filter:\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"view:\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"App %r not found\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"Model %(model_name)r not found in app %(app_label)r\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"the related `%(app_label)s.%(data_type)s` object\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"model:\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"related `%(app_label)s.%(object_name)s` objects\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"all %s\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"number of %s\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"Fields on %s objects\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"%s does not appear to be a urlpattern object\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"Home\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"Documentation\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"Bookmarklets\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"Documentation bookmarklets\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"Documentation for this page\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"Show object ID\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"Edit this object (current window)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"Jumps to the admin page for pages that represent a single object.\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"Edit this object (new window)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"As above, but opens the admin page in a new window.\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"Models\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"Templates\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"Filters\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"Tags\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"Views\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Boolean (Either True or False)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Field of type: %(field_type)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/eo/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-22 08:46+0000\\n\"\n\"Last-Translator: Baptiste <baptiste+transifex@darthenay.fr>\\n\"\n\"Language-Team: Esperanto (http://www.transifex.com/projects/p/django/\"\n\"language/eo/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: eo\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"etikedo:\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"filtro:\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"vido:\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"Aplikaĵo %r netrovita\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"Modelo %(model_name)r netrovita en aplikaĵo %(app_label)r\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"la rilatita `%(app_label)s.%(data_type)s` objekto\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"modelo:\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"rilatitaj `%(app_label)s.%(object_name)s` objektoj\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"ĉiuj %s\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"nombro da %s\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"Kampoj en %s objektoj\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"%s ne ŝajnas esti URLmotiva objekto\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"Ĉefpaĝo\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"Dokumentaro\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"Legosignetoj\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"Dokumentaraj legosignetoj\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">Por instali legosignetojn, trenu la ligon al viaj \"\n\"legosignaj breto aŭ dekste-alklaki la ligon kaj aldonu ĝin al viaj \"\n\"legosignoj. Nun vi povas elekti la legosigneto el ajna paĝo en la retejo.  \"\n\"Notu ke kelkaj el tiuj legosignetoj bezonas ke vi estu uzante la retejon per \"\n\"komputilo nomĝita\\n\"\n\"kiel \\\"interna\\\" (kontaktu via sistema administranto se vi ne estas certe \"\n\"ke\\n\"\n\"via komputilo estas \\\"interna\\\").</p>\\n\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"Dokumentaro por tiu paĝo\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"\"\n\"Sendas vin el ajna paĝo, al la dokumentado de la vido kiu generis tiun paĝon.\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"Montri objektan identigilon\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"\"\n\"Montri la enhavan tipon kaj unikan identigilon por paĝoj kiu reprezentas \"\n\"ununuran objekton.\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"Redakti tiun objekton (nuna fenestro)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"Forsendas al la administradan paĝon kiu reprezentas ununuran objekton.\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"Redakti tiun objekton (nova fenestro)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"Kiel supre, sed montras la administradan paĝon en nova fenestro.\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"Modeloj\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"Ŝablonoj\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"Filtriloj\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"Etikedoj\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"Vidoj\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Bulea (Vera aŭ Malvera)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Tipo de kampo: %(field_type)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/es/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Antoni Aloy <antoni.aloy@trespams.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-22 08:46+0000\\n\"\n\"Last-Translator: Dimitris Glezos <glezos@transifex.com>\\n\"\n\"Language-Team: Spanish (http://www.transifex.com/projects/p/django/language/\"\n\"es/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: es\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"etiqueta:\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"filtro:\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"vista:\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"Aplicación %r no encontrada\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"\"\n\"El modelo %(model_name)r no se ha encontrado en la aplicación %(app_label)r\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"el objeto relacionado `%(app_label)s.%(data_type)s`\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"modelo:\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"los objetos relacionados `%(app_label)s.%(object_name)s`\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"todo %s\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"número de %s\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"Campos en %s objetos\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"%s no parece ser un objeto urlpattern\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"Inicio\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"Documentación\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"Bookmarklets\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"Bookmarklets de documentación\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">Para instalar bookmarklets, arrastre el enlace a su barra\\n\"\n\"de favoritos, o pulse con el botón derecho el enlace y añádalo a sus \"\n\"favoritos.\\n\"\n\"Ahora puede escoger el bookmarklet desde cualquier página del sitio.\\n\"\n\"Observe que algunos de estos bookmarklets precisan que esté viendo\\n\"\n\"el sitio desde un ordenador señalado como \\\"interno\\\" (hable\\n\"\n\"con su administrador de sistemas si no está seguro si el suyo lo es).</p>\\n\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"Documentación para esta página\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"\"\n\"Lleva desde cualquier página a la documentación de la vista que la genera.\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"Mostrar ID de objeto\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"\"\n\"Muestra el tipo de contenido e ID único de las páginas que representan un \"\n\"simple objeto.\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"Editar este objeto (ventana actual)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"\"\n\"Lleva a la página de administración de páginas que representan un único \"\n\"objeto.\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"Editar este objeto (nueva ventana)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"\"\n\"Como antes, pero abre la página de administración en una nueva ventana.\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"Modelos\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"Plantillas\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"Filtros\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"Etiquetas\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"Vistas\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Booleano (Verdadero o Falso)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Campo de tipo: %(field_type)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/es_AR/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Ramiro Morales <cramm0@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-22 08:46+0000\\n\"\n\"Last-Translator: Ramiro Morales <cramm0@gmail.com>\\n\"\n\"Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/\"\n\"django/language/es_AR/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: es_AR\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"etiqueta:\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"filtrar:\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"ver:\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"Aplicación %r no encontrada\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"Modelo %(model_name)r no encontrado en aplicación %(app_label)r\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"el objeto `%(app_label)s.%(data_type)s` relacionado\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"modelo:\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"objetos `%(app_label)s.%(object_name)s` relacionados\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"todos los %s\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"número de %s\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"Campos en objetos %s\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"%s no parece ser un objeto urlpattern\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"Inicio\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"Documentación\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"Bookmarklets\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"Bookmarklets de documentación\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">Para instalar bookmarklets, arrastre el enlace a su barra\\n\"\n\"de favoritos, o pulse con el botón derecho el enlace y añádalo a sus \"\n\"favoritos.\\n\"\n\"Ahora puede seleccionar el bookmarklet desde cualquier página en el sitio.\\n\"\n\"Tenga en cuenta que algunos de estos bookmarklets precisan que esté viendo\\n\"\n\"el sitio desde un equipo señalado como \\\"interno\\\" (hable\\n\"\n\"con su administrador de sistemas si no está seguro de si el suyo lo es).</\"\n\"p>\\n\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"Documentación de esta página\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"\"\n\"Le lleva desde cualquier página a la documentación de la vista que la genera.\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"Mostrar ID de objeto\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"\"\n\"Muestra el tipo de contenido e ID unívoco de las páginas que representan un \"\n\"único objeto.\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"Editar este objeto (ventana actual)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"\"\n\"Le lleva a la página de administración de páginas que representan un único \"\n\"objeto.\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"Editar este objeto (nueva ventana)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"Ídem, pero abre la página de administración en una nueva ventana.\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"Modelos\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"Plantillas\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"Filtros\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"Etiquetas\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"Vistas\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Booleano (Verdadero o Falso)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Campo tipo: %(field_type)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/es_MX/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Abraham Estrada <abraham.estrada@gmail.com>, 2011, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-22 08:46+0000\\n\"\n\"Last-Translator: Abraham Estrada <abraham.estrada@gmail.com>\\n\"\n\"Language-Team: Spanish (Mexico) (http://www.transifex.com/projects/p/django/\"\n\"language/es_MX/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: es_MX\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"etiqueta:\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"filtro:\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"ver:\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"Aplicación %r no encontrada\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"Modelo %(model_name)r no encontrado en aplicación %(app_label)r\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"el objeto `%(app_label)s.%(data_type)s` relacionado\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"modelo:\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"objetos `%(app_label)s.%(object_name)s` relacionados\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"todos los %s\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"número de %s\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"Campos en objetos %s\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"%s no parece ser un objeto urlpattern\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"Inicio\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"Documentación\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"Bookmarklets\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"Bookmarklets de documentación\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">Para instalar bookmarklets, arrastre el enlace a su barra \"\n\"de favoritos, o pulse con el botón derecho el enlace y añádalo a sus \"\n\"favoritos. Ahora puede seleccionar el bookmarklet desde cualquier página en \"\n\"el sitio. Tenga en cuenta que algunos de estos bookmarklets necesitan que \"\n\"esté viendo el sitio desde un equipo señalado como \\\"interno\\\" (hable con su \"\n\"administrador de sistemas si no está seguro de si el suyo lo es).</p>\\n\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"Documentación de esta página\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"\"\n\"Le lleva desde cualquier página a la documentación de la vista que la genera.\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"Mostrar ID de objeto\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"\"\n\"Muestra el tipo de contenido e ID único de las páginas que representan un \"\n\"único objeto.\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"Editar este objeto (ventana actual)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"\"\n\"Le lleva a la página de administración de páginas que representan un único \"\n\"objeto.\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"Editar este objeto (nueva ventana)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"\"\n\"Como el anterior, pero abre la página de administración en una ventana nueva\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"Modelos\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"Plantillas\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"Filtros\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"Etiquetas\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"Vistas\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Boolean (Verdadero o Falso)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Campo tipo: %(field_type)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/et/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-22 08:46+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Estonian (http://www.transifex.com/projects/p/django/language/\"\n\"et/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: et\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"lipik:\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"filtreeri:\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"vaade:\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"Rakendust %r ei leitud\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"Mudelit %(model_name)r ei leitud rakendusest %(app_label)r\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"seotud `%(app_label)s.%(data_type)s` objekt\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"mudel:\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"seotud `%(app_label)s.%(object_name)s` objektid\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"kõik %s\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"%s arv\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"Objekti %s väljad\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"%s ei tundu olevat urlpattern objekt\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"Kodu\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"Dokumentatsioon\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"Järjehoidjandid\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"Dokumentatsiooni järjehoidjandid\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">Järjehoidjandite paigaldamiseks lisa link \"\n\"järjehoidjatesse.\\n\"\n\"Seejärel võite järjehoidjandi aktiveerida suvaliselt lehelt saidil. Mõned \"\n\"järgnevatest\\n\"\n\"järjehoidjanditest eeldavad, et külastate saiti arvutist, mis kuulub \"\n\"\\\"sisemiste\\\" arvutite nimekirja.\\n\"\n\"(konsulteerige süsteemiadministraatoriga, kui te ei tea, mida tähendab \"\n\"\\\"sisemine\\\")</p>\\n\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"Selle lehekülje dokumentatsioon\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"\"\n\"Suunab teid suvalisel lehel asudes selle vaate dokumentatsioonile, mis antud \"\n\"lehe genereerib.\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"Näita objekti ID-d\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"\"\n\"Näitab sisutüüpi ning unikaalset ID'd lehtedel, mis esitavad mingit kindlat \"\n\"objekti.\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"Muuda seda objekti (samas aknas)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"\"\n\"Suunab administreeimislehele lehtedelt, mis esitavad mingit kindlat objekti.\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"Muuda seda objekti (uues aknas)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"Sama, mis üleval, kuid avab admin. lehe uues aknas.\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Tõeväärtus (Kas tõene või väär)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Lahter tüüpi: %(field_type)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/eu/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Aitzol Naberan <anaberan@codesyntax.com>, 2011, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-22 08:46+0000\\n\"\n\"Last-Translator: Aitzol Naberan <anaberan@codesyntax.com>\\n\"\n\"Language-Team: Basque (http://www.transifex.com/projects/p/django/language/\"\n\"eu/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: eu\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"etiketa:\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"filtroa:\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"bista:\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"%r aplikazio ez da aurkitu\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"%(model_name)r modeloa ez da aurkitu %(app_label)r aplikazioan\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"erlazionatutako `%(app_label)s.%(data_type)s` objektua\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"modeloa:\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"erlazionatutako `%(app_label)s.%(object_name)s` objektuak\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"%s dena\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"%s zenbakia\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"%s objetuaren eremuak\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"%s ez dirudi  url heredu objetua\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"Hasiera\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"Dokumentazioa\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"Markadoreak\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"Dokumentazio markadoreak\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">Markadoreak instalatzeko eraman linka zure erreminta \"\n\"panelera (toolbar), edo eskuineko botoiarekin klik egin eta gehitu erreminta \"\n\"panelera. Kontuan izan, markadore hauetako batzuk, exekutatzen ari diren \"\n\"ordenagailua 'barneko' gisa markatua egotea behar dutela (hitzagin zure \"\n\"sistema kudeatzailearekin zure ordenagailua 'barnekoa' den edo ez \"\n\"argitzeko)\\n\"\n\".</p>\\n\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"Web orri honen dokumentazioa\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"\"\n\"Edozein orritik, orria sortzen duen bistaren dokumentaziora eramango zaitu.\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"Objetuaren ID erakutsi\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"\"\n\"Objetu bakarra erakusten duten orrietan, eduki mota (content-type) eta \"\n\"orriaren ID bakarra erakutsi, .\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"Objetu hau aldatu ( leiho honetan)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"Objetu bakarra erakusten orrietan, adminiztrazio gunera joan.\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"Objetu hau aldatu (leiho berrian)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"Goian bezala, baina kudeaketa guena leiho berri batean irekiko da.\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"Ereduak\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"Txantiloiak\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"Iragazkiak\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"Etiketak\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"Bistak\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Boolearra (egia ala gezurra)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Eremuaren mota: %(field_type)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/fa/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Ali Nikneshan <ali@nikneshan.com>, 2011, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-22 08:46+0000\\n\"\n\"Last-Translator: Ali Nikneshan <ali@nikneshan.com>\\n\"\n\"Language-Team: Persian (http://www.transifex.com/projects/p/django/language/\"\n\"fa/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: fa\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"برچسب:\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"فیلتر\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"نمایش:\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"برنامهٔ %r یافت نشد\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"مدل %(model_name)r در برنامهٔ %(app_label)r یافت نشد\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"شیء «%(app_label)s.%(data_type)s» مرتبط\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"مدل:\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"اشیاء «%(app_label)s.%(object_name)s» مرتبط\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"همهٔ %s\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"تعداد %s\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"فیلدهای شیء %s\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"به نظر نمی رسد %s یک شیء از نوع urlpattern باشد\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"آغازه\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"مستندات\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"Bookmarklet ها\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"مستندات bookmarklet ها\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\"\\n\"\n\" <p class=\\\"help\\\"> برای نصب بوکمارکلت ها لینک را روی بوکمارک تولبار خود \"\n\"بکشید\\n\"\n\" و یا روی لینک کلیک راست کنید و add را انتخاب نمایید. اکنون شما می توانیدو \"\n\"بوکمارکلت را از هر صحفه ای در سایت انتخاب نمایید.\\n\"\n\" توجه داشته باشید بعضی از این بوکمارکلت ها لازم است از کامپیوتری که داخلی \"\n\"تعریف شده دیده شوند. (اگر مطمئن نیستید با مدیر شبکه خود در این باره صحبت \"\n\"کنید.)</p>\\n\"\n\"\\n\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"مستندات این صفحه\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"\"\n\"شما را از هر صفحه‌ای که باشید به مستندات نمایی که صفحه را ایجاد کرده می‌برد\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"نمایش مشخصهٔ شیء\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"\"\n\"نمایش محتوا و مشخصهٔ منحصر به فرد برای صفحاتی که یک شیء را نمایش می‌دهند.\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"ویرایش این شیء (پنجرهٔ کنونی)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"پرش به صفحهٔ مدیر برای صفحاتی که یک شیء را نمایش می‌دهند.\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"ویرایش این شیء (پنجرهٔ جدید)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"مانند بالا، اما صفحهٔ مدیر را در پنجرهٔ جدیدی باز می‌کند.\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"مدل ها\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"قالب ها\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"فیلترها\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"تگ ها\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"نمایش ها\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"بولی (درست یا غلط)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"فیلد با نوع: %(field_type)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/fi/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-22 08:46+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Finnish (http://www.transifex.com/projects/p/django/language/\"\n\"fi/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: fi\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"tagi:\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"suodatin:\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"näkymä:\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"Sovellusta %r ei löydy\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"Sovelluksesta %(app_label)r ei löydy mallia %(model_name)r\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"tähän liittyvä `%(app_label)s.%(data_type)s`-kohde\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"malli:\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"tähän liittyvät `%(app_label)s.%(object_name)s`-kohteet\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"kaikki %s\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"%s-kohteiden lukumäärä\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"%s-kohteiden kentät\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"%s ei näytä olevan urlpattern-olio\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"Etusivu\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"Ohjeita\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"Kirjanmerkkiset\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"Ohjeiden kirjanmerkkiset\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">Asenna kirjanmerkkinen raahaamalla linkki kirjanmerkkien \"\n\"työkalupalkkiin tai napsauttamalla linkkiä oikeanpuoleisella hiiren \"\n\"painikkeella ja valitsemalla kirjanmerkkeihin lisäämisen. Sen jälkeen voit \"\n\"valita kirjanmerkkisen miltä tahansa sivuston sivulta. Huomaa, että jotkin \"\n\"näistä kirjanmerkkisistä toimivat vain, jos selaat sivustoa \\\"paikalliseksi\"\n\"\\\" määritellyltä tietokoneelta (kysy lisätietoja verkkonne ylläpitäjältä).</\"\n\"p>\\n\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"Tämän sivun ohjeita\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"Näyttää ohjeet, jotka koskevat ko. sivun luonutta näkymää.\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"Näytä kohteen tunniste\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"\"\n\"Näyttää yksittäistä kohdetta vastaavilla sivuilla kohteen tyypin ja \"\n\"tunnisteen.\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"Muokkaa tätä kohdetta (tässä ikkunassa)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"\"\n\"Siirtyy yksittäistä kohdetta vastaavalta sivulta kohteen ylläpitosivulle.\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"Muokkaa tätä kohdetta (uudessa ikkunassa)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"Kuten yllä, mutta avaa ylläpitosivun uuteen ikkunaan.\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Totuusarvo: joko tosi (True) tai epätosi (False)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Kenttä tyyppiä: %(field_type)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/fr/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <claude@2xlibre.net>, 2011-2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-22 08:46+0000\\n\"\n\"Last-Translator: claudep <claude@2xlibre.net>\\n\"\n\"Language-Team: French (http://www.transifex.com/projects/p/django/language/\"\n\"fr/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: fr\\n\"\n\"Plural-Forms: nplurals=2; plural=(n > 1);\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"mot-clé :\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"filtre :\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"vue :\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"L'application %r n'a pas été trouvée\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"\"\n\"Le modèle %(model_name)r n'a pas été trouvé dans l'application %(app_label)r\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"l'objet « %(app_label)s.%(data_type)s » en relation\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"modèle :\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"les objets « %(app_label)s.%(object_name)s » en relation\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"tous les %s\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"nombre de %s\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"Champs sur les objets %s\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"%s ne semble pas être un objet urlpattern\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"Accueil\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"Documentation\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"Signets\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"Documentation des signets\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">Pour installer des signets, faites glisser le lien vers \"\n\"votre barre \\n\"\n\"de marques-pages, ou effectuez un clic droit dessus et ajoutez-le.\\n\"\n\"Maintenant, vous pouvez le sélectionner depuis n'importe quelle page\\n\"\n\"du site. Notez que certains d'entre eux nécessitent que vous visionniez\\n\"\n\"le site depuis un ordinateur dit « interne » (contactez votre \"\n\"administrateur\\n\"\n\"système si vous n'êtes pas sûr que votre ordinateur le soit).</p>\\n\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"Documentation pour cette page\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"\"\n\"Vous envoie de n'importe quelle page vers la documentation de la vue qui a \"\n\"généré cette page.\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"Afficher l'identifiant de l'objet\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"\"\n\"Affiche le content-type et l'identifiant unique pour les pages qui \"\n\"représentent un objet unique.\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"Modifier cet objet (fenêtre actuelle)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"Renvoie à la page d'administration qui représente un objet seul.\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"Modifier cet objet (nouvelle fenêtre)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"\"\n\"Comme ci-dessus, mais ouvre la page d'administration dans une nouvelle \"\n\"fenêtre.\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"Modèles\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"Templates\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"Filtres\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"Étiquettes\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"Vues\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Booléen (True ou False)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Champ de type : %(field_type)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/fy_NL/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:36+0100\\n\"\n\"PO-Revision-Date: 2011-03-15 15:27+0000\\n\"\n\"Last-Translator: Django team\\n\"\n\"Language-Team: English <en@li.org>\\n\"\n\"Language: fy_NL\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1)\\n\"\n\n#: views.py:57 views.py:59 views.py:61\nmsgid \"tag:\"\nmsgstr \"\"\n\n#: views.py:92 views.py:94 views.py:96\nmsgid \"filter:\"\nmsgstr \"\"\n\n#: views.py:155 views.py:157 views.py:159\nmsgid \"view:\"\nmsgstr \"\"\n\n#: views.py:187\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"\"\n\n#: views.py:194\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"\"\n\n#: views.py:206\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"\"\n\n#: views.py:206 views.py:225 views.py:230 views.py:244 views.py:258\n#: views.py:263\nmsgid \"model:\"\nmsgstr \"\"\n\n#: views.py:221 views.py:253\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"\"\n\n#: views.py:225 views.py:258\n#, python-format\nmsgid \"all %s\"\nmsgstr \"\"\n\n#: views.py:230 views.py:263\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"\"\n\n#: views.py:268\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"\"\n\n#: views.py:360\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Home\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:8\n#: templates/admin_doc/missing_docutils.html:8\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\n#: templates/admin_doc/template_detail.html:8\n#: templates/admin_doc/template_filter_index.html:9\n#: templates/admin_doc/template_tag_index.html:9\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Documentation\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:9\nmsgid \"Bookmarklets\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:12\nmsgid \"Documentation bookmarklets\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:16\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"Documentation for this page\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:27\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"Show object ID\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:30\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Edit this object (current window)\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:33\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"Edit this object (new window)\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:36\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"\"\n\n#: templates/admin_doc/model_detail.html:17\n#: templates/admin_doc/model_index.html:11\nmsgid \"Models\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_detail.html:9\nmsgid \"Templates\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_filter_index.html:10\nmsgid \"Filters\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_tag_index.html:10\nmsgid \"Tags\"\nmsgstr \"\"\n\n#: templates/admin_doc/view_detail.html:9\n#: templates/admin_doc/view_index.html:10\nmsgid \"Views\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/ga/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Michael Thornhill <michael@maithu.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-22 08:46+0000\\n\"\n\"Last-Translator: Michael Thornhill <michael@maithu.com>\\n\"\n\"Language-Team: Irish (http://www.transifex.com/projects/p/django/language/\"\n\"ga/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ga\\n\"\n\"Plural-Forms: nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : \"\n\"4);\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"clib:\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"scag:\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"radharc:\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"Ní bhfuarthas feidhmchlár %r \"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"Ní bhfuarthas samhail %(model_name)r  i bhfeidhmclár %(app_label)r\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"An oibiacht gaolmhara `%(app_label)s.%(data_type)s`\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"samhail:\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"Oibiachtí gaolmhara `%(app_label)s.%(object_name)s`\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"gach %s\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"líon %s\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"Réimse ar oibiachtí %s\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"Feiceann sé nach bhfuil %s oibiacht urlpattern\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"Baile\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"Doiciméadúchán\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"Leabharmharcín\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"Leabharmharcín doiciméadúchán\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">Chun leabharmarcín a suitéal, Tarraing an nasc go dtí do \"\n\"barra uirlisí leabhairmairc\\n\"\n\", nó deaschliceáil and nasc agus cuir leis do leabharmairc.  Anois is \"\n\"féidir\\n\"\n\"leat an leabharmarcín a roghnaigh ón aon leathanach ar an suíomh.  Bí \"\n\"cúramach go dteastaíonn cuid de na leabharmarcín go bhfuil tú ag féachaint \"\n\"ar an suíomh ó ríomhaire inmheánach\\n\"\n\"(leabhar le do riarthóir córais muna bhfuil tú cinnte).</p>\\n\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"Doiciméadúchán le hadhaigh an leathanach seo\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"\"\n\"Tógann se tusa ón aon leathanach go dtí an doiciméadúchán le hadhaigh an \"\n\"radharc a rinne an leathanach.\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"Taispéain oibiacht ID\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"\"\n\"Taispéain an content-type agus ID uathúil le leathanaigh le hadhaigh \"\n\"oibiacht amháin.\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"Cuir in eagar an oibiacht seo (fuinneog láthair)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"\"\n\"Léimeann go dtí an leathanach riaracháin le leathainaigh le hadhaigh \"\n\"oibiacht amháin.\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"Cuir in eagar an oibiacht seo (fuinneog nua)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"Mar thuas, ach osclaíonn sé an leathanach riarachán if fuinneog nua\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"Samhla\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"Teimpléid\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"Scagairí\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"Clibeanna\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"Radharcanna\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Boole\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Réimse de Cineál: %(field_type)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/gl/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# fonso <fonzzo@gmail.com>, 2011.\n#   <fonzzo@gmail.com>, 2013.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2013-01-07 11:32+0000\\n\"\n\"Last-Translator: fonso <fonzzo@gmail.com>\\n\"\n\"Language-Team: Galician (http://www.transifex.com/projects/p/django/language/\"\n\"gl/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: gl\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"etiqueta:\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"filtro:\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"vista:\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"Non se atopou a aplicación %r\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"O modelo %(model_name)r non se atopou na aplicación %(app_label)r\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"o obxecto relacionado `%(app_label)s.%(data_type)s`\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"modelo:\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"os obxectos relacionados `%(app_label)s.%(object_name)s`\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"todos os %s\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"número de %s\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"Campos dos obxectos %s\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"%s non semella ser un obxecto urlpattern\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"Inicio\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"Documentación\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"Bookmarklets\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"Bookmarklets de documentación\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">Para instalar bookmarklets, arrastre a ligazón á súa\\n\"\n\"barra de favoritos ou marcadores, ou faga clic co botón dereito\\n\"\n\"e engádao aos marcadores. Agora pode usar o bookmarklet dende\\n\"\n\" calquera páxina do sitio web. Teña en conta que algúns destes\\n\"\n\"bookmarklets precisan que estea a visitar o sitio dende un ordenador\\n\"\n\"designado coma \\\"interno\\\" (fale co administrador do sistema se\\n\"\n\"non está seguro de que o seu ordenador é \\\"interno\\\" .</p>\\n\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"Documentación para esta páxina\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"Salta á documentación para a vista que xera a páxina.\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"Amosar ID do obxecto\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"\"\n\"Amosa o tipo de contido e a ID única para páxinas que representan un obxecto \"\n\"determinado.\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"Editar este obxecto (nesta fiestra)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"\"\n\"Salta á páxina de administración para páxina que representan un obxecto \"\n\"determinado.\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"Editar este obxecto (nunha nova fiestra)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"Como enriba, pero abre a páxina de administración nunha nova fiestra.\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"Modelos\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"Patróns\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"Filtros\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"Etiquetas\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"Vistas\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Valor booleano (verdadeiro ou falso)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Campo do tipo: %(field_type)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/he/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Meir Kriheli <mkriheli@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-22 08:46+0000\\n\"\n\"Last-Translator: Meir Kriheli <mkriheli@gmail.com>\\n\"\n\"Language-Team: Hebrew (http://www.transifex.com/projects/p/django/language/\"\n\"he/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: he\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"תג:\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"סינון:\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"ה־view:\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"יישום %r לא נמצא\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"מודל %(model_name)r לא נמצא ביישום %(app_label)r\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"אוביקטי `%(app_label)s.%(data_type)s` קשורים\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"מודל:\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"אובייקטי `%(app_label)s.%(object_name)s` קשורים\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"כל %s\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"מספר %s\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"שדות באובייקטי %s\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"לא נראה ש-%s הוא אובייקט urlpattern\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"דף הבית\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"תיעוד\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"ייסומניות\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"ייסומוניות תיעוד\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">כדי להתקין ייסומניות, יש לגרור את הקישור לסרגל הסימניות\\n\"\n\"שלך, או קליק ימני והוספה לסימניות. כעת ניתן\\n\"\n\"לבחור את הייסומניה מכל עמוד באתר.  יש לשים לב כי חלק מהייסומניות\\n\"\n\"ניתנות לצפיה רק ממחשב שמסווג\\n\"\n\"כ\\\"פנימי\\\" (יש לדבר עם מנהל המערכת שלך אם אינך בטוח/ה\\n\"\n\"שהמחשב מסווג ככזה).</p>\\n\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"תיעוד לדף זה\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"מקפיץ אותך מכל עמוד לתיעוד התצוגה שייצרה אותו.\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"הצג מזהה אובייקט\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"מציג את סוג התוכן והמזהה הייחודי לעמודים המייצגים אובייקט בודד.\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"עריכת אובייקט זה (בחלון הנוכחי)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"קופץ לעמוד הניהול לעמודים אשר מייצגים אובייקטים בודד.\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"עריכת אובייקט זה (בחלון חדש)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"כנ\\\"ל, אך דף הניהול ייפתח בחלון חדש.\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"מודלים\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"תבניות\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"Filters\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"תגים\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"Views\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"בוליאני (אמת או שקר)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"שדה מסוג: %(field_type)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/hi/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# chandankumar(ciypro) <chandankumar.093047@gmail.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-22 08:46+0000\\n\"\n\"Last-Translator: Chandan kumar <chandankumar.093047@gmail.com>\\n\"\n\"Language-Team: Hindi (http://www.transifex.com/projects/p/django/language/\"\n\"hi/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: hi\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"टैग:\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"छन्नी:\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"दृष्टि:\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"%r अनुप्रयोग लापता है\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"%(model_name)r मॉडल %(app_label)r अनुप्रयोग में लापता है\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"`%(app_label)s.%(data_type)s` संबंधित वस्तु\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"मॉडल :\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"`%(app_label)s.%(object_name)s` संबंधित वस्तु\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"सभी %s\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"%s संख्या\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"%s वस्तु पर क्षेत्र\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"%s सही यू.आऱ.एल प्रतिरूप वस्तु नहीं है\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"गृह\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"दस्तावेज़ीकरण\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"बुकमार्कलेट्स\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"प्रलेखन बुकमार्कलेट्स\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">पृष्ठचिन्हक स्थापित करने के लिए,अपने बुकमार्क टूलबार के लिए लिंक\\n\"\n\"को खींचें,या लिंक पर दायाँ क्लिक करें और इसे आपके बुकमार्क्स में जोड़ें. अब आप इस साइट में \\n\"\n\"किसी भी पृष्ठ से बुकमार्कलेट का चयन कर सकते हैं.  ध्यान दें इनमें से कुछ पृष्ठचिन्हको को\\n\"\n\"आपकी आवश्यकता है जो \\\"आंतरिक\\\" (अपने सिस्टम व्यवस्थापक से बात करे अगर आपको यकीन नहीं \"\n\"है\\n\"\n\"कि आपका कंप्यूटर \\\"आंतरिक\\\" है)  रूप में निर्दिष्ट कंप्यूटर से\\n\"\n\"साइट को देखना चाहते है.</p>\\n\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"इस पृष्ठ की प्रलेखन\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"दृश्य जो उस पृष्ठ को उत्पन्न करता है के प्रलेखन के लिए किसी भी पृष्ठ पर जा सकते है.\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"वस्तु आइ.डी दिखाओ\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"\"\n\"पृष्ठों के लिए सामग्री प्रकार और अनोखी आईडी जो एक एकल वस्तु का प्रतिनिधित्व करते हैं को \"\n\"दर्शाते है.\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"इस वस्तु को संपादन करें (इस खिडकी में)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"पृष्ठों के लिए एडमिन प्रष्ट जो एक एकल वस्तु का प्रतिनिधित्व करते हैं से जाये. \"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"इस वस्तु को संपादन करें (नये खिडकी में)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"जैसा कि ऊपर में,लेकिन एक नई विंडों में एडमिन पृष्ठ को खोलता है.\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"मॉडल\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"प्रारूप\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"फ़िल्टर्स\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"टैग्स\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"दृश्य\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"बूलियन (सही अथ‌वा गलत)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"फील्ड के प्रकार: %(field_type)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/hr/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <aljosa.mohorovic@gmail.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-22 08:46+0000\\n\"\n\"Last-Translator: aljosa <aljosa.mohorovic@gmail.com>\\n\"\n\"Language-Team: Croatian (http://www.transifex.com/projects/p/django/language/\"\n\"hr/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: hr\\n\"\n\"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"tag:\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"filter:\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"prikaz:\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"Aplikacija %r nije pronađena\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"Model %(model_name)r nije pronađen u aplikaciji %(app_label)r\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"povezani `%(app_label)s.%(data_type)s` objekt\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"model:\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"povezani `%(app_label)s.%(object_name)s` objekti\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"svi %s\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"broj %s\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"Polja na %s objektima\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"izgleda da %s nije urlpattern objekt\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"Početna\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"Dokumentacija\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"Bookmarklets\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"Dokumentacija bookmarklets-a\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">Da bi instalirali bookmarklet, povucite link na svoj \"\n\"bookmarks\\n\"\n\"toolbar, ili desnim klikom na link dodajte u svoje bookmarke. Sada možete\\n\"\n\"selektirati bookmarklet sa bilo koje stranice. Zapamtite da neki \"\n\"bookmarkleti\\n\"\n\"zahtjevaju da gledate stranice sa računala označenog\\n\"\n\"kao \\\"internal\\\" (razgovarajte sa svojim sistem administratorom ako niste \"\n\"sigurni\\n\"\n\"je li vaše računalo \\\"internal\\\").</p>\\n\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"Dokumentacija za ovu stranicu\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"\"\n\"Preusmjeri te sa bilo koje stranice na dokumentaciju za taj prikaz (view) \"\n\"koji generira stranicu.\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"Prikaži ID objekta\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"\"\n\"Prikazuje tip sadržaja (content-type) i jedinstveni ID za stranice koje \"\n\"predstavljaju pojedinačan objekt.\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"Uredi objekt (u trenutnom prozoru)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"\"\n\"Preusmjeri na admin stranicu za stranice koje predstavljaju pojedinačan \"\n\"objekt.\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"Uredi objekt (u novom prozoru)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"Isto kao prethodno, ali otvara admin stranicu u novom prozoru.\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"Modeli\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"Predlošci\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"Filteri\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"Tagovi\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"Views\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Boolean (True ili False)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Polje tipa: %(field_type)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/hu/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Attila Nagy <>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-22 08:46+0000\\n\"\n\"Last-Translator: Attila Nagy <>\\n\"\n\"Language-Team: Hungarian (http://www.transifex.com/projects/p/django/\"\n\"language/hu/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: hu\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"címke:\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"szűrő:\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"nézet:\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"%r alkalmazás nem található\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"\"\n\"%(model_name)r modell nem található a következő alkalmazásban: %(app_label)r\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"a kapcsolódó '%(app_label)s.%(data_type)s' objektum\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"modell:\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"kapcsolódó '%(app_label)s.%(object_name)s' objektumok\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"minden %s\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"%s mennyisége\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"Mezők %s objektumokban\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"%s nem tűnik egy urlpattern objektumnak.\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"Kezdőlap\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"Dokumentáció\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"Könyvjelzők\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"Dokumentum könyvjelzők\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">A könyvjelzők felvételéhez húzza a könyvjelzők linkjét az \"\n\"eszköztárra, vagy kattintson rájuk jobb egérgombbal és úgy adja hozzá. \"\n\"Ezután \\n\"\n\"már ki tudja választani a könyvjelzőt a honlap bármely oldaláról. A \"\n\"könyvjelzők között néhány oldal csak \\\"belső\\\" gépekről nézhető meg.\\n\"\n\"(Kérdezze meg rendszergazdáját, hogy az Ön gépe \\\"belső\\\" gép-e.).</p>\\n\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"Az oldal dokumentációja\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"\"\n\"Bármely oldalról annak a nézetnek a dokumentációjára ugrik, amely a kérdéses \"\n\"oldalt generálta.\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"Az objektum ID mutatása\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"\"\n\"Az objektum által reprezentált oldalak 'content-type' és 'unique ID' \"\n\"értékeit mutatja.\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"Objektum szerkesztése (aktuális ablakban)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"Az objektumhoz tartozó oldalak adminisztrációjához ugrik.\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"Objektum szerkesztése (új ablakban)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"Mint fentebb, de az adminisztrációs oldalt új ablakban nyitja meg.\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"Modellek\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"Sablonok\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"Szűrők\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"Címkék\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"Nézetek\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Logikai (True vagy False)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Mezőtípus: %(field_type)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/ia/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Martijn Dekker <mcdutchie@hotmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-22 08:46+0000\\n\"\n\"Last-Translator: Martijn Dekker <mcdutchie@hotmail.com>\\n\"\n\"Language-Team: Interlingua (http://www.transifex.com/projects/p/django/\"\n\"language/ia/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ia\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"etiquetta:\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"filtro:\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"visualisation:\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"Application %r non trovate\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"Modello %(model_name)r non trovate in application %(app_label)r\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"le objecto `%(app_label)s.%(data_type)s` connexe\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"modello:\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"objectos `%(app_label)s.%(object_name)s` connexe\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"tote le %s\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"numero de %s\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"Campos sur %s objectos\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"%s non pare esser un objecto urlpattern\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"Initio\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"Documentation\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"Bookmarklets\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"Documentation bookmarklets\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">Pro installar bookmarklets, trahe le ligamine a tu barra \"\n\"de marcapaginas, o clicca sur le ligamine con le button dextre e adde lo a \"\n\"vostre marcapaginas. Ora vos pote seliger le bookmarklet ab omne pagina in \"\n\"le sito.  Nota que alcunes de iste bookmarklets necessita visualisar le sito \"\n\"ab un computer destinate a esser \\\"interne\\\" (contacta vostre administrator \"\n\"de systema si vos non es secur si vostre computator es \\\"interne\\\").</p>\\n\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"Documentation pro iste pagina\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"\"\n\"Transporta vos ab omne pagina al documentation pro le visualisation que \"\n\"genera ille pagina.\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"Monstrar le ID del objecto\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"\"\n\"Monstrar le typo de contento e le ID unic pro paginas que representa un sol \"\n\"objecto.\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"Modificar iste objecto (fenestra actual)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"\"\n\"Transporta vos al pagina administrative pro le paginas que representa un sol \"\n\"objecto.\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"Modificar iste objecto (nove fenestra)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"Idem, ma aperi le pagina administrative in un nove fenestra.\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"Modellos\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"Patronos\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"Filtros\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"Etiquettas\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"Visualisationes\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Booleano (ver o false)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Campo de typo: %(field_type)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/id/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# rodin <romihardiyanto@gmail.com>, 2011.\n#   <romihardiyanto@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-22 08:46+0000\\n\"\n\"Last-Translator: rodin <romihardiyanto@gmail.com>\\n\"\n\"Language-Team: Indonesian (http://www.transifex.com/projects/p/django/\"\n\"language/id/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: id\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"tag:\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"filter:\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"view:\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"Aplikasi %r tidak ditemukan\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"Model %(model_name)r tidak ditemukan di aplikasi %(app_label)r\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"objek `%(app_label)s.%(data_type)s` yang terkait\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"model:\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"obyek `%(app_label)s.%(object_name)s` yang terkait\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"semua %s\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"jumlah %s\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"Bidang dalam objek %s\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"%s bukan berupa objek urlpattern\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"Beranda\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"Dokumentasi\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"Bookmarklet\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"Bookmarklet dokumentasi\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">Untuk memasang bookmarklet, seret tautan ini ke bilah\\n\"\n\"markah Anda atau klik kanan pada tautan tersebut kemudian tambahkan ke\\n\"\n\"markah Anda. Setelah itu Anda dapat memilih bookmarklet dari laman apapun\\n\"\n\"pada situs. Jangan lupa, beberapa bookmarklet ini hanya bisa digunakan\\n\"\n\"dari komputer yang terdaftar sebagai \\\"internal\\\" (hubungi administrator\\n\"\n\"sistem Anda apabila tidak yakin apakah komputer Anda termasuk komputer\\n\"\n\"\\\"internal\\\").</p>\\n\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"Dokumentasi untuk laman ini\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"\"\n\"Buka dari laman apa saja ke laman dokumentasi untuk view yang menghasilkan \"\n\"laman tersebut.\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"Tampilkan ID objek\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"\"\n\"Tampilkan tipe-konten dan ID unik untuk laman yang mewakili sebuah objek \"\n\"tunggal.\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"Edit objek ini (pada jendela ini)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"Buka laman admin pada laman yang mewakili sebuah objek tunggal.\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"Edit objek ini (pada jendela baru)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"Sama seperti di atas, tetapi laman halaman admin di jendela baru.\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"Model\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"Templat\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"Filter\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"Tag\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"View\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Boolean (nilai True atau False)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Jenis bidang: %(field_type)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/is/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Hafsteinn Einarsson <haffi67@gmail.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-22 08:46+0000\\n\"\n\"Last-Translator: Hafsteinn Einarsson <haffi67@gmail.com>\\n\"\n\"Language-Team: Icelandic (http://www.transifex.com/projects/p/django/\"\n\"language/is/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: is\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"merki:\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"sía:\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"skoða:\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"Forrit %r fannst ekki\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"Líkanið %(model_name)r finnst ekki í forritinu %(app_label)r\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"tengdi `%(app_label)s.%(data_type)s` hluturinn\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"líkan:\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"tengdir `%(app_label)s.%(object_name)s` hlutir\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"allt %s\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"fjöldi af %s\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"Svæði í %s hlutnum\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"%s virðist ekki vera urlpattern hlutur\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"Heim\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"Skjölun\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"Bókamerklar\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"Skjölunarbókamerklar\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">Til að setja upp bókamerkil (Bookmarklet) þarftu að draga \"\n\"tengilinn\\n\"\n\"í bókamerkjareinina þína eða hægrismella á tengilinn og bæta honum við \"\n\"bókamerkin þín\\n\"\n\"Nú getur þú notað bókamerkilinn frá hvaða síðu sem er innan vefjarins. \"\n\"Athugaðu að sumir\\n\"\n\"þessara bókamerkla krefjast þess að þú sért að skoða vefinn frá tölvu sem \"\n\"er\\n\"\n\"skráð sem \\\"internal\\\" (hafðu samband við kerfisstjórann ef þú ert óviss \"\n\"hvort tölvan þín er \\\"internal\\\").</p>\\n\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"Skjölun þessarar síðu\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"\"\n\"Sendir þig af hvaða síðu sem er á skjölun þess framsetningarlags sem myndar \"\n\"hana.\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"Sýna kenni hlutar\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"Sýnir efnistag og sérkenni síða sem gefa tiltekna mynd af stökum hlut.\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"Breyta þessum hlut (í þessum glugga)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"\"\n\"Stekkur á stjórnunarsíðuna fyrir þær síður sem gefa tiltekna mynd af stökum \"\n\"hlut.\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"Breyta þessum hlut (nýr gluggi)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"Eins og að ofan en opnar stjórnunarsíðuna í nýjum glugga.\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"Módel\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"Sniðmát\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"Síur\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"Tögg\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"Ásýndir\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Boole-gildi (True eða False)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Reitur af gerð: %(field_type)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/it/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Nicola Larosa <transifex@teknico.net>, 2011-2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-22 08:46+0000\\n\"\n\"Last-Translator: Nicola Larosa <transifex@teknico.net>\\n\"\n\"Language-Team: Italian (http://www.transifex.com/projects/p/django/language/\"\n\"it/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: it\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"tag:\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"filtro:\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"view:\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"Appl. %r non trovata\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"Modello %(model_name)r non trovato nell'appl. %(app_label)r\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"l'oggetto `%(app_label)s.%(data_type)s` collegato\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"modello:\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"oggetti `%(app_label)s.%(object_name)s` collegati\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"tutti %s\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"numero di %s\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"Campi sugli oggetti %s\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"%s non sembra essere un oggetto urlpattern\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"Pagina iniziale\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"Documentazione\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"Bookmarklet\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"Bookmarklet alla documentazione\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">Per installare i bookmarklet, trascina il link sulla \"\n\"barra \\n\"\n\"dei bookmark, o clicca il link con il tasto destro e aggiungilo ai \"\n\"bookmark.\\n\"\n\"Potrai poi scegliere un bookmarklet in qualsiasi pagina del sito.\\n\"\n\"Nota che alcuni di questi bookmarklet richiedono l'accesso al sito tramite \"\n\"un\\n\"\n\"computer designato come \\\"interno\\\" (chiedi al tuo amministratore di \\n\"\n\"sistema se non sei sicuro che il tuo computer sia \\\"interno\\\").</p>\\n\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"Documentazione per questa pagina\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"\"\n\"Porta da qualsiasi pagina alla documentazione della view che genera quella \"\n\"pagina.\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"Mostra l'ID dell'oggetto\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"\"\n\"Mostra il content-type e l'ID univoco di pagine che rappresentano un singolo \"\n\"oggetto.\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"Modifica quest'oggetto (nella finestra attuale)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"\"\n\"Porta alla pagina amministrativa di pagine che rappresentano un singolo \"\n\"oggetto.\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"Modifica quest'oggetto (in una nuova finestra)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"\"\n\"Come sopra, ma apre la pagina di amministrazione in una nuova finestra.\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"Modelli\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"Template\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"Filtri\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"Tag\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"View\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Booleano (True o False)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Campo di tipo: %(field_type)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/ja/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <lemaire.adrien@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-22 08:46+0000\\n\"\n\"Last-Translator: Yoichi Fujimoto <wozozo@gmail.com>\\n\"\n\"Language-Team: Japanese (http://www.transifex.com/projects/p/django/language/\"\n\"ja/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ja\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"タグ\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"フィルター\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"ビュー\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"アプリケーション %r が見つかりません\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"\"\n\"モデル %(model_name)r が %(app_label)r アプリケーションに見つかりません\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"`%(app_label)s.%(data_type)s` (関連オブジェクト)\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"モデル :\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"`%(app_label)s.%(object_name)s` (関連オブジェクト)\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"全ての %s\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"%s の数\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"%s のフィールド\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"%s はurlpatternオブジェクトでは無いようです\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"ホーム\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"ドキュメント\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"ブックマークレット\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"ドキュメントへのブックマークレット\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">ブックマークレットをインストールするには、リンクをブック\"\n\"マークツールバーにドラッグするか、\\n\"\n\"リンクを右クリックしてブックマークに追加してください。これで\\n\"\n\"サイトのどのページからでもブックマークレットを選択可能になりました。\\n\"\n\"ブックマークレットによっては、内部ネットワークにあるコンピューターからこのサ\"\n\"イトを\\n\"\n\"参照していなければならないことがあります。内部ネットワークにあるかどうか不明\"\n\"な場合は、システム管理者に確認してください。</p>\\n\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"このページのドキュメント\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"各ページから、ページを生成したビューのドキュメントにジャンプします。\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"オブジェクト ID を表示\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"\"\n\"単一のオブジェクトを表示するページのコンテンツタイプと一意な IDを表示します。\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"オブジェクトを (現在のウィンドウで) 編集\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"単一のオブジェクトを表示するページの管理ページへジャンプします。\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"オブジェクトを (新しいウィンドウで) 編集\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"上と同じですが、新しいウィンドウで管理ページを開きます。\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"モデル\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"テンプレート\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"フィルター\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"タグ\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"ビュー\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"ブール値 (真: True または偽: False)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"タイプが %(field_type)s のフィールド\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/ka/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Translators:\n# André Bouatchidzé <a@anbz.net>, 2013.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2013-03-01 08:40+0000\\n\"\n\"Last-Translator: André Bouatchidzé <a@anbz.net>\\n\"\n\"Language-Team: Georgian (http://www.transifex.com/projects/p/django/language/\"\n\"ka/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ka\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"ტეგი:\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"ფილტრი:\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"წარმოდგენა:\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"აპლიკაცია %r ვერ მოიძებნა\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"მოდელი %(model_name)r ვერ მოიძებნა აპლიკაციაში %(app_label)r\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"`%(app_label)s.%(data_type)s` დაკავშირებული ობიექტი\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"მოდელი:\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"`%(app_label)s.%(object_name)s` დაკავშირებული ობიექტები\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"ყველა %s\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"%s - რაოდენობა\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"%s ობიექტების ველები\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"%s არ არის urlpattern-ის შესაბამისი ობიექტი\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"საწყისი გვერდი\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"დოკუმენტაცია\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"სანიშნები\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"დოკუმენტაციის სანიშნები\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">სანიშნების დასაყენებლად გადაათრიეთ ბმული თქვენი \"\n\"სანიშნების\\n\"\n\"პანელზე, ან დააწკაპეთ ბმულზე მარჯვენა ღილაკით და დაამატეთ იგი სანიშნებში.\\n\"\n\"ამის შემდეგ თქვენ შეძლებთ სანიშნის არჩევას საიტის ნებისმიერი გვერდიდან.\\n\"\n\"გაითვალისწინეთ, რომ ზოგიერთი სანიშნის მოხმარებისათვის საჭიროა, რომ თქვენ\\n\"\n\"იყოთ შესული ამ საიტზე ე.წ. \\\"შიდა\\\" კომპიუტერიდან (შეუთანხმდით თქვენს\\n\"\n\"ადმინისტრატორს, თუ არ ხართ დარწმუნებული, რომ თქვენი კომპიუტერი არის\\n\"\n\"\\\"შიდა\\\" კომპიუტერი).</p>\\n\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"ამ გვერდის დოკუმენტაცია\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"\"\n\"გადასვლა ნებისმიერი გვერდიდან იმ წარმოდგენის დოკუმენტაციაზე, რომელიც ამ \"\n\"გვერდს აგენერირებს.\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"ობიექტის ID-ის ჩვენება\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"\"\n\"ერთი ობიექტის ამსახველი გვერდის content-type-ის და უნიკალური ID-ის ჩვენება.\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"შევცვალოთ ეს ობიექტი (იმავე ფანჯარაში)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"ერთი ობიექტის ამსახველი გვერდების ადმინისტრირებაზე გადასვლა.\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"შევცვალოთ ეს ობიექტი (ახალ ფანჯარაში)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"იგივე, ოღონდ ხსნის ადმინისტრირების გვერდს ახალ ფანჯარაში.\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"მოდელები\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"შაბლონები\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"ფილტრები\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"ტეგები\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"წარმოდგენები\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"ლოგიკური (True ან False)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"ველის ტიპი: %(field_type)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/kk/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <germanilyin@gmail.com>, 2011.\n# Nurlan Rakhimzhanov <nurlan.rakhimzhanov@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-22 08:46+0000\\n\"\n\"Last-Translator: yun_man_ger <germanilyin@gmail.com>\\n\"\n\"Language-Team: Kazakh (http://www.transifex.com/projects/p/django/language/\"\n\"kk/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: kk\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"тег:\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"сүзгіш:\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"көрініс:\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"%r app табылмады\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"%(app_label)r app ішінен %(model_name)r үлгісі табылмады\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"байланысты `%(app_label)s.%(data_type)s` объект\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"модель:\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"байланысты `%(app_label)s.%(object_name)s` объекттер\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"барлық %s\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"%s саны\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"Объекттердің жолақ саны %s\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"%s  urlpattern объектке ұқсамайды\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"Негізгі\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"Документация\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"Букмарклеттер\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"Құжаттама букмарклеттері\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"Бұл бетке арналған документация\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"нысан ID'ді көрсет\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"Бұл объектты өзгерт (ағымдағы терезеде)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"Бұл объектты өзгерт (жаңа терезеде)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"Үстіндегідей, бірақ admin бетті жаңа терезеде ашады.\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Boolean (True немесе False)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Жолақтын түрі: %(field_type)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/km/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-22 08:46+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: English <en@li.org>\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: km\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"ប្រភេទ:\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"ពាក្យស្វែងរក\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"មើល\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"ស្វែងរក App %r មិនឃើញ ។\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"model:\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"ទាំងអស់ %s\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"ចំនួន​នៃ​%s\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"ទិន្នន័យអំពី %s កម្មវិធី\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"%s ហាក់បីដូចជា URL ដែល​ត្រឹមត្រូវទេ\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"គេហទំព័រ\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"ឯកសារ\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"កំរងចំណាំ\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"កំរងចំណាំអំពីឯកសារ\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">ដើម្បីតំលើងកំរងចំណាំ សូមទាញយកអត្ថបទភ្ជាប់ទៅ​កាន់​\"\n\"របាឧបករណ៍ ឬក៏ចុចខាងស្តាំលើអត្ថបទភ្ជាប់ហើយ​បញ្ជូលទៅក្នុងកំរងចំណាំរបស់លោកអ្នក។</p>\\n\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"ឯកសារសំរាប់ទំព័រនេះ\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"បង្ហាញលេខសំគាល់កម្មវិធី\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"កែប្រែកម្មវិធីនេះ(វីនដូវកំពុងប្រើ)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"បង្វែរទៅកាន់​ ទំព័រគ្រប់គ្រង សំរាប់ទំព័រណាដែលតំណាងអោយកម្មវិធីតែមួយ។\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"កែប្រែកម្មវិធីនេះ(វីនដូវថ្មី)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"ដូចខាងលើ តែបើកនៅទំព័រវីនដូវថ្មី\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Boolean (អាច​ជា True រឺ False)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/kn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-22 08:46+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Kannada (http://www.transifex.com/projects/p/django/language/\"\n\"kn/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: kn\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"ಟ್ಯಾಗ್:\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"ಸೋಸಕ:\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"ನೋಟ:\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"%r ಅನ್ವಯಾಂಶ ಸಿಗಲಿಲ್ಲ\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"ಮಾಡೆಲ್:\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"ಎಲ್ಲಾ %s\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"%s ಗಳ ಸಂಖ್ಯೆ\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"%s ವಸ್ತುಗಳ ಅಂಶಗಳು\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"%s  URL ಸ್ವರೂಪದ್ದಾಗಿ ತೋರುವದಿಲ್ಲ.\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"ಪ್ರಾರಂಭಸ್ಥಳ(ಮನೆ)\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"ವಿವರಮಾಹಿತಿ\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"ಚಿಕ್ಕ ಪುಟಗುರುತುಗಳು\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"ಮಾಹಿತಿಯ ಚಿಕ್ಕ ಪುಟಗುರುತುಗಳು\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">ಸಣ್ಣ್ಪುಟಗುರುತುಗಳನ್ನು ಅನುಸ್ಥಾಪಿಸಲು ಕೊಂಡಿಯನ್ನು ಪುಟಗುರುತು ಉಪಕರಣಪಟ್ಟಿ\"\n\"(ಟೂಲ್ ಬಾರ್)ಕಡೆಗೆ ಎಳೆದೊಯ್ಯಿರಿ,\\n\"\n\" ಅಥವಾ ಕೊಂಡಿಯ ಮೇಲೆ ಮೂಷಿಕ(ಮೌಸ್)ದ ಬಲಬಟನ್ನನ್ನು ಒತ್ತಿ ಪುಟಗುರುತುಗಳಿಗೆ ಸೇರಿಸಿಕೊಳ್ಳಿ. ಈಗ \\n\"\n\" ನೀವು ಸಣ್ಣಪುಟಗುರುತುಗಳನ್ನು ತಾಣದ ಯಾವ ಪುಟದಿಂದ ಬೇಕಾದರೂ ಆಯ್ಕೆಮಾಡಿಕೊಳ್ಳಬಹುದು.\\n\"\n\"ನೆನಪಿರಲಿ, ಕೆಲವು ಸಣ್ಣಪುಟಗುರುತುಗಳಿಗೆ ನೀವು ಈ ತಾಣವನ್ನು ಆಂತರಿಕ (\\\"internal\\\") ಎಂದು \"\n\"ಸೂಚಿತವಾಗಿರುವ ಗಣಕದಿಂದ ವೀಕ್ಷಿಸಬೇಕಾಗುತ್ತದೆ.\\n\"\n\"(  ನಿಮ್ಮ ಗಣಕವು \\\"internal\\\" ಹೌದೇ ಅಲ್ಲವೇ ಎಂದು ಗೊತ್ತಿಲ್ಲದಿದ್ದರೆ , ಗಣಕದ ಆಡಳಿತಗಾರರನ್ನು \"\n\"ಕೇಳಿರಿ).</p>\\n\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"ಈ ಪುಟದ ಬಗೆಗಿನ ಮಾಹಿತಿ\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"\"\n\"ನಿಮ್ಮನ್ನು ಯಾವುದೇ ಪುಟದಿಂದ ಆ ಪುಟವನ್ನು ಸೃಷ್ಟಿಸುವ ನೋಟದ ಮಾಹಿತಿಪುಟಕ್ಕೆ ಕೊಂಡೊಯ್ಯುವದು\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"ವಸ್ತುವಿನ ಐಡಿ ತೋರಿಸಿ\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"\"\n\"ಏಕೈಕ ವಸ್ತುವನ್ನು ಪ್ರತಿನಿಧಿಸುವ ಪುಟಗಳ ವಿಶಿಷ್ಠ ಐಡಿ ಮತ್ತು ಒಳವಿಷಯಬಗೆಯನ್ನು ತೋರಿಸುತ್ತದೆ.\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"ಈ ವಸ್ತುವನ್ನು ಬದಲಿಸಿ(ಈಗಿನ ಕಿಟಕಿಯಲ್ಲಿ)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"ಏಕೈಕ ವಸ್ತುವನ್ನು ಪ್ರತಿನಿಧಿಸುವ ಪುಟಗಳಿಗಾಗಿ ಆಡಳಿತಪುಟಕ್ಕೆ ಒಯ್ಯುತ್ತದೆ\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"ಈ ವಸ್ತುವನ್ನು ಬದಲಿಸಿ(ಹೊಸ ಕಿಟಕಿಯಲ್ಲಿ)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"ಮೇಲಿನಂತೆ, ಆದರೆ ಆಡಳಿತಪುಟವನ್ನು ಹೊಸ ಕಿಟಕಿಯಲ್ಲಿ ತೆರೆಯುವದು.\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"ಬೂಲಿಯನ್ (ಹೌದು ಅಥವ ಅಲ್ಲ)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"ಕ್ಷೇತ್ರದ ಬಗೆ: %(field_type)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/ko/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-22 08:46+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Korean (http://www.transifex.com/projects/p/django/language/\"\n\"ko/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ko\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"태그:\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"필터:\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"뷰:\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"어플리케이션 %r (이)가 없습니다.\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"모델 %(model_name)r (이)가 어플리케이션 %(app_label)r 에 없습니다.\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"`%(app_label)s.%(data_type)s` 관련 오브젝트\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"모델:\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"`%(app_label)s.%(object_name)s` 관련 오브젝트(들)\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"모든 %s\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"%s 의 수\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"%s 오브젝트의 필드\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"%s (은)는 url 패턴의 오브젝트가 아닙니다.\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"홈\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"문서\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"북마크릿\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"문서 북마크릿\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\"\\n\"\n\"<p class=\\\"help\\\"> 북마크릿을 설치하시려면 링크를 북마크 툴바로 드래그 하거\"\n\"나,\\n\"\n\"오른쪽 클릭으로 해당 링크를 북마크에 추가하세요.\\n\"\n\"이제 사이트 내의 모든 페이지에서 북마크릿 선택이 가능합니다.\\n\"\n\"북마크릿에 따라 내부 네트워크 상의 컴퓨터로부터 이 사이트를 참조해야하는 경우\"\n\"가 있습니다.\\n\"\n\"(내부 네트워크가 있는지 불명확한 경우 시스템 관리자에게 확인하시기 바랍니다.)\"\n\"</p>\\n\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"이 페이지의 문서\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"각 페이지로에서 해당 페이지를 생성한 뷰의 문서로 갑니다.\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"오브젝트 아이디 표시\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"단일 오브젝트 페이지의 고유 아이디와 컨텐츠 타입을 표시합니다.\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"오브젝트 편집(현재 창)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"단일 오브젝트 페이지의 관리 페이지로 이동\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"오브젝트 편집(새로운 창)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"위와 동일하며, 새로운 창에서 관리 페이지를 엽니다.\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"boolean(참 또는 거짓)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"%(field_type)s 형식 필드\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/lt/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# lauris <lauris@runbox.com>, 2011.\n# Simonas Simas <simonas@kazlauskas.me>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-22 08:46+0000\\n\"\n\"Last-Translator: Simonas Kazlauskas <simonas@kazlauskas.me>\\n\"\n\"Language-Team: Lithuanian (http://www.transifex.com/projects/p/django/\"\n\"language/lt/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: lt\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n\"\n\"%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"žyme:\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"filtras:\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"vaizdas:\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"Programa %r nerasta\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"Modelis %(model_name)r programoje %(app_label)r nerastas\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"susijęs `%(app_label)s.%(data_type)s` objektas\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"modelis:\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"susiję`%(app_label)s.%(object_name)s` objektai\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"visi %s\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"%s skaičius\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"Objekto %s laukai\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"%s neatrodo kaip urlpattern objektas\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"Pradinis\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"Dokumentacija\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"Greitosios žymės\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"Doumentacijos greitosios žymės\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">Greitųjų žymių įdiegimui, nutempkite nuorodą į greitųjų \"\n\"žymių\\n\"\n\"juostą, arba spauskite dešinį pelės klavišą ir pridėkite prie greitųjų \"\n\"žymių. Dabar galite\\n\"\n\"pasirinkti greitąją žymę iš bet kurio saito puslapio. Pastebėjimas, kad \"\n\"keletas iš šių\\n\"\n\"greitųjų žymių reikalauja, kad saitas būtų žiūrimas iš vidinio kompiuterio \\n\"\n\"(pasitarkite su administratorium, jei nežinai ar tavo kompiuteris yra \"\n\"vidinis).</p>\\n\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"Šio puslapio dokumentacija\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"\"\n\"Pereina iš bet kurio puslapio į jo view funkcijos dokumentaciją, kuri \"\n\"sukūria tą puslapį\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"Parodyti objekto ID\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"\"\n\"Parodyti content-type ir unikalų puslapių ID, kuris parodo vieną objektą.\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"Redaguoti šį objektą (einamajame lange)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"Pereina į administravimo puslapį, kuris parodo vieną objektą.\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"Redaguoti šį objektą (naujame lange)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"Kaip ir viršuje, bet administravimo puslapį atidaro naujame lange.\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"Modeliai\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"Šablonai\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"Filtrai\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"Gairės\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"Rodiniai\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Loginė reikšmė (True arba False)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Lauko tipas: %(field_type)s \"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/lv/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-22 08:46+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Latvian (http://www.transifex.com/projects/p/django/language/\"\n\"lv/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: lv\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : \"\n\"2);\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"tags:\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"filtrs:\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"skats:\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"Lietotne %r netika atrasta\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"Modelis  %(model_name)r lietotnē %(app_label)r nav atrasts\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"saistītais `%(app_label)s.%(data_type)s` objekts\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"modelis:\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"saistītie `%(app_label)s.%(object_name)s` objekti\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"visi %s\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"%s skaits\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"Lauki %s objektiem\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"%s nav urlpattern objekts\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"Sākums\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"Dokumentācija\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"Grāmatzīmes\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"Dokumentācijas grāmatzīmes\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">Lai uzstādītu grāmatzīmes, aizvelciet saiti uz pārlūka \"\n\"grāmatzīmju\\n\"\n\"rīkjoslu vai arī veiciet labo klikšķi un pievienojiet to savām grāmatzīmēm. \"\n\"Tagad varat \\n\"\n\"izvēlēties grāmatzīmi no jebkuras lapas šajā mājaslapā.  Ievērojiet, ka, lai \"\n\"lietotu dažas no šīm\\n\"\n\"grāmatzīmēm, jums jālieto dators, kura IP adrese reģistrēta kā \\\"iekšēja\\\"\\n\"\n\"(ja ir neskaidrības, vai dators ir \\\"iekšējais\\\", runājiet ar sistēmas \"\n\"administratoru).</p>\\n\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"Dokumentācija šai lapai\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"\"\n\"Pārvieto no jebkuras lapas uz tā skata dokumentāciju, kas ģenerē šo lapu.\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"Parādīt objekta ID\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"Parāda content-type un unikālo ID lapām, kas atbilst vienam objektam.\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"Labot šo objektu (pašreizējā logā)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"Pārvieto uz admininstrācijas lapu tām lapām, kas attēlo vienu objektu.\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"Labot šo objektu (jaunā logā)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"Tāpat kā augstāk, tikai atver administrācijas lapu jaunā logā.\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Boolean (True vai False)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Lauks ar tipu: %(field_type)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/mk/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <vvangelovski@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-22 08:46+0000\\n\"\n\"Last-Translator: vvangelovski <vvangelovski@gmail.com>\\n\"\n\"Language-Team: Macedonian (http://www.transifex.com/projects/p/django/\"\n\"language/mk/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: mk\\n\"\n\"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"таг:\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"филтер:\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"поглед:\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"Не е најдена апликацијата %r\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"Моделот %(model_name)r не е најден во апликацијата %(app_label)r\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"поврзаниот `%(app_label)s.%(data_type)s` објект\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"модел:\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"поврзани `%(app_label)s.%(object_name)s` објекти\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"сите %s\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"број на %s\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"Полиња на %s објекти\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"%s не изгледа дека е url објект\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"Дома\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"Документација\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"Обележувачи\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"Обележувачи на документација\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">За да инсталирате обележувачи, влечете ја врската до \"\n\"вашата\\n\"\n\"лента со алатки, или кликнете со десното копче  и додадете го во вашите \\n\"\n\"обележувачи. Сега може да го изберете обележувачот од било која страница \"\n\"на \\n\"\n\"сајтот. Имајте на ум дека за некои од овие обележувачи е потребно да го \"\n\"гледате \\n\"\n\"сајтот од компјутер кој е означен како „внатрешен“ (разговарајте со вашиот \\n\"\n\"администратор ако не сте сигурни).</p>\\n\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"Документација за оваа страница\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"\"\n\"Ве носи од било која страница од документацијата до погледот кој ја генерира \"\n\"таа страница.\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"Прикажи идентификационен број на објектот\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"\"\n\"Го прикажува типот на содржината и уникатниот идентификационен број за \"\n\"страници  кои претставуваат единечен објект.\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"Уреди го овој објект (во овој прозорец)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"\"\n\"Скокнува до админ страницата за страници кои претставуваат единечен објект.\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"Уреди го овој објект (во нов прозорец)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"Како погоре, но ја отвара админ страницата во нов прозорец.\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"Модели\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"Шаблони (темплејти)\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"Филтри\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"Тагови\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"Погледи (вјуа)\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Логичка (или точно или неточно)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Поле од тип: %(field_type)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/ml/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Rajeesh Nair <rajeeshrnair@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-22 08:46+0000\\n\"\n\"Last-Translator: Rajeesh Nair <rajeeshrnair@gmail.com>\\n\"\n\"Language-Team: Malayalam (http://www.transifex.com/projects/p/django/\"\n\"language/ml/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ml\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"ടാഗ്:\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"അരിപ്പ:\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"വ്യൂ\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"%r എന്ന App കണ്ടില്ല.\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"%(app_label)r എന്ന Appല്‍ %(model_name)r എന്ന മാത്രുക കണ്ടില്ല.\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"ബന്ധപ്പെട്ട `%(app_label)s.%(data_type)s` വസ്തു\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"മാത്രുക:\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"ബന്ധപ്പെട്ട `%(app_label)s.%(object_name)s` വസ്തുക്കള്‍\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"%s എല്ലാം\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"%sന്റെ എണ്ണം\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"%s വസ്തുക്കളിലെ വിവരങ്ങള്‍\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"%s വിലാസ മാത്രുക (urlpattern object) ആണെന്ന് തോന്നുന്നില്ല.\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"പൂമുഖം\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"സഹായക്കുറിപ്പുകള്‍\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"ബുക്ക് മാര്‍ക്കുകള്‍\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"സഹായക്കുറിപ്പുകളുടെ ബുക്ക്മാര്‍ക്കുകള്‍\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">ബുക്ക്മാര്‍ക്ക്ലെറ്റുകള്‍ ഇന്‍സ്റ്റാള്‍ ചെയ്യാന്‍, ലിങ്കിനെ  നിങ്ങളുടെ ബുക്ക്മാര്‍ക് \"\n\"ടൂള്‍ബാറിലേക്ക് \\n\"\n\"വലിച്ചിടുകയോ, ലിങ്കിന്‍മേല്‍ റൈറ്റ്ക്ളിക് ചെയ്ത് ബുക്ക്മാര്‍ക്കായി ചേര്‍ക്കുകയോ ചെയ്യുക. ഇനി സൈറ്റിലെ \"\n\"ഏതു പേജില്‍ നിന്നും\\n\"\n\" ഈ ബുക്ക്മാര്ക് തെരഞ്ഞെടുക്കാം. ചില ബുക്ക്മാര്‍ക്കുകള്‍  ഇന്റേണല്‍ ആയ കമ്പ്യൂട്ടറില്‍ നിന്നേ ലഭ്യമാവൂ എന്നു \"\n\"ശ്രദ്ധിക്കണം.\\n\"\n\"നിങ്ങളുടെ കംപ്യൂട്ടര്‍ അത്തരത്തില്‍ പെട്ടതാണോ എന്നറിയാന്‍ സിസ്റ്റം അഡ്മിനിസ്ട്രേട്ടറെ ബന്ധപ്പെടുക.</\"\n\"p>\\n\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"ഈ പേജിന്റെ സഹായക്കുറിപ്പുകള്‍\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"ഏതു പേജില്‍ നിന്നും അതിന്റെ ഉദ്ഭവമായ വ്യൂവിന്റെ സഹായക്കുറിപ്പിലേക്കു ചാടാന്‍\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"വസ്തുവിന്റെ ഐഡി കാണിക്കുക.\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"\"\n\"ഒറ്റ വസ്തുവിനെ പ്രതിനിധീകരിക്കുന്ന പേജുകളുടെ ഉള്ളടക്കത്തിന്റെ തരവും തനതായ IDയും കാണിക്കുന്നു.\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"ഈ വസ്തുവില് മാറ്റം വരുത്തുക (ഇതേ വിന്‍ഡോ)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"ഒറ്റ വസ്തുവിനെ പ്രതിനിധീകരിക്കുന്ന പേജുകള്‍ക്കുള്ള അഡ്മിന്‍ പേജിലേക്ക് ചാടുന്നു.\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"ഈ വസ്തുവില് മാറ്റം വരുത്തുക (പുതിയ വിന്‍ഡോ)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"മുകളിലേതു പോലെ, പക്ഷെ, അഡ്മിന്‍ പേജ് പുതിയ വിന്ഡോവിലാണ് തുറക്കുക.\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"മോഡലുകള്‍\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"ടെമ്പ്‌ലേറ്റുകള്‍\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"ഫില്‍ട്ടറുകള്‍\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"ടാഗുകള്‍\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"വ്യൂകള്‍\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"ശരിയോ തെറ്റോ (True അഥവാ False)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"%(field_type)s എന്ന തരത്തിലുള്ള കളം (ഫീല്‍ഡ്)\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/mn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Анхбаяр Анхаа <l.ankhbayar@gmail.com>, 2011-2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-22 08:46+0000\\n\"\n\"Last-Translator: Анхбаяр Анхаа <l.ankhbayar@gmail.com>\\n\"\n\"Language-Team: Mongolian (http://www.transifex.com/projects/p/django/\"\n\"language/mn/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: mn\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"шошго:\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"шүүлтүүр:\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"харах:\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"%r програм олдсонгүй\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"  %(app_label)r програмд %(model_name)r модел олдсонгүй\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"холбогдох `%(app_label)s.%(data_type)s`объект\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"модел:\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"холбогдох `%(app_label)s.%(object_name)s` объектууд\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"бүх %s\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"%s-ийн тоо\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \" %s объектийн нөхөх хэсгүүд\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"%s нь url хэлбэрийн объект биш байна\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"Админ эхлэл\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"Баримтжуулалт\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"Bookmarklet-ууд\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"Мookmarklet-уудын баримтжуулалт\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">Bookmarklet суулгахын тулд холбоосыг bookmark-ийн\\n\"\n\" хэрэгслийн мөрт аваачих буюу холбоосон дээр хулганы баруун\\n\"\n\" товчлуураар дарж bookmark-даа нэмнэ. Ингэснээр та сайтын аль ч\\n\"\n\" хуудаснаас bookmarklet-ээ сонгох боломжтой болно.  Зарим\\n\"\n\" bookmarklet-ийн хувьд та \\\"дотоод\\\" гэж тодорхойлогдсон компьютерээс\\n\"\n\" сайт руу орох шаардлагатай болдог (компьютер тань \\\"дотоод\\\" мөн\\n\"\n\" эсэхийг мэдэхгүй байгаа бол системийн удирдлагаасаа асууна уу).</p>\\n\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"Энэ хуудасны баримтжуулалт\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"\"\n\"Таныг ямар ч хамаагүй хуудаснаас тухайн хуудсыг гаргаж байгаа \"\n\"баримтжуулалтанд аваачна.\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"Объектийн ID-ийг харуулах\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"\"\n\"Нэг объект харуулж буй хуудаснуудын агуулгын төрөл болоод давтагдахгүй ID-\"\n\"ийг харуулна.\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"Энэ объектийг засварлах (одоо хэрэглэж буй цонх)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"Нэг объект харуулж буй хуудаснуудын удирдлагын хуудсанд аваачна.\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"Энэ объектийг засварлах (шинэ цонх)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"Дээрхийн нэгэн адил ч удирдлагын хуудсыг шинэ цонхонд нээнэ.\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"Моделууд\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"Загварууд\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"Шүүлтүүрүүд\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"Таг-ууд\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"View-үүд\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Boolean (Үнэн худлын аль нэг нь)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Талбарийн төрөл нь : %(field_type)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/nb/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <jonklo@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-22 08:46+0000\\n\"\n\"Last-Translator: jonklo <jonklo@gmail.com>\\n\"\n\"Language-Team: Norwegian Bokmål (http://www.transifex.com/projects/p/django/\"\n\"language/nb/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: nb\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"tag:\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"filter:\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"view:\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"Fant ikke applikasjonen %r\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"Fant ikke modellen %(model_name)r i applikasjonen %(app_label)r\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"det relaterte `%(app_label)s.%(data_type)s`-objektet\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"modell:\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"relaterte `%(app_label)s.%(object_name)s`-objekter\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"alle %s\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"antall %s\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"Felter på %s-objekter\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"%s ser ikke ut til å være et urlpattern-objekt\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"Hjem\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"Dokumentasjon\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"Bokmerker\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"Dokumentasjonsbokmerker\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">For å installere bokmerker, dra linken til verktøylinja\\n\"\n\"for bokmerker, eller høyreklikk og legg til i bokmerker. Nå kan du du velge\\n\"\n\"bokmerket fra hvilken som helst side på nettstedet. Noen av disse\\n\"\n\"bokmerkene krever at datamaskinen du bruker er markert som \\\"intern\\\"\\n\"\n\"(kontakt din systemadministrator hvis du er usikker på om maskinen din er \"\n\"\\\"intern\\\").</p>\\n\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"Dokumentasjon for denne siden\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"\"\n\"Hopp fra hvilken som helst side til dokumentasjonen for visningsfunksjonen \"\n\"som genererte den siden.\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"Vis objekt-ID\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"\"\n\"Viser \\\"content-type\\\" og en unik ID for sider som representerer et enkelt \"\n\"objekt.\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"Rediger dette objektet (nåværende vindu)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"\"\n\"Hopper til administrasjonssiden for sider som representerer et enkelt objekt.\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"Rediger dette objektet (nytt vindu)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"Samme som over, men åpner administrasjonssiden i et nytt vindu.\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"Modeller\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"Maler\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"Filter\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"Tags\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"Views\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Boolsk (True eller False)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Felt av typen: %(field_type)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/ne/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Paras Nath Chaudhary <opnchaudhary@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-22 08:46+0000\\n\"\n\"Last-Translator: Paras Nath Chaudhary <opnchaudhary@gmail.com>\\n\"\n\"Language-Team: Nepali (http://www.transifex.com/projects/p/django/language/\"\n\"ne/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ne\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"ट्याग:\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"धृस्य :\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"App  %r भेटिएन \"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"%(model_name)r नमुना %(app_label)r appमा   भेटिएन\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"`%(app_label)s.%(data_type)s` संबंधित बस्तु \"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"नमुना :\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"`%(app_label)s.%(object_name)s` संबंधित बस्तु \"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"सबै  %s\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"%sको संख्या\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"गृह \"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"प्रलेखन\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"यो पृस्ठको लागी प्रलेखन\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"बस्तुको पहिचान  देखाउनुहोस \"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"नमुनाहरु \"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"ट्यागहरु \"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"धृस्यहरु \"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"बुलियन (True अथवा False)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"फाँटको प्रकार: %(field_type)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/nl/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Jeffrey Gelens <jeffrey@noppo.pro>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-22 08:46+0000\\n\"\n\"Last-Translator: Jeffrey Gelens <jeffrey@noppo.pro>\\n\"\n\"Language-Team: Dutch (http://www.transifex.com/projects/p/django/language/\"\n\"nl/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: nl\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"tag:\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"filter:\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"view:\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"Toepassing %r niet gevonden\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"Model %(model_name)r niet gevonden in toepassing %(app_label)r\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"het gerelateerde `%(app_label)s.%(data_type)s` object\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"model:\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"gerelateerde `%(app_label)s.%(object_name)s` objecten\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"alle %s\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"aantal %s\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"Velden van %s objecten\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"%s lijkt geen urlpattern-object te zijn\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"Voorpagina\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"Documentatie\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"Bookmarklets\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"Documentatie bookmarklets\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">Om bookmarklets te installeren, sleep de link naar uw \"\n\"bladwijzers\\n\"\n\"werkbalk, of rechtermuis klik op de link en voeg het toe aan de bladwijzer. \"\n\"Nu kan\\n\"\n\"de bookmarklet vanuit elke pagina op de site worden gekozen. Let erop dat \"\n\"het soms\\n\"\n\"noodzakelijk is dat de computer van waaruit de pagina wordt bekeken intern \"\n\"is.\\n\"\n\"(Raadpleeg uw systeembeheerder of uw computer zich op het interne netwerk \"\n\"bevind).<p>\\n\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"Documentatie voor deze pagina\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"\"\n\"Springt vanuit elke pagina naar de documentatie voor de view die gegenereerd \"\n\"wordt door die pagina.\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"Toon object-ID\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"\"\n\"Toont het content-type en unieke ID voor pagina's die een enkel object \"\n\"voorstellen.\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"Bewerk dit object (huidig venster)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"\"\n\"Gaat naar de beheerpagina voor pagina's die een enkel object weergeven.\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"Bewerk dit object (nieuw venster)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"Zoals hierboven, maar opent de beheerpagina in een nieuw venster.\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"Modellen\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"Templates\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"Filters\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"Tags\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"Views\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Boolean (True danwel False)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Veld van type: %(field_type)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/nn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-22 08:46+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Norwegian Nynorsk (http://www.transifex.com/projects/p/django/\"\n\"language/nn/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: nn\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"tag:\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"filter:\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"view:\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"Kunne ikkje finne applikasjonen %r\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"\"\n\"Kunne ikkje finne modellen %(model_name)r i applikasjonen %(app_label)r\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"det relaterte `%(app_label)s.%(data_type)s`-objektet\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"modell:\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"relaterte `%(app_label)s.%(object_name)s`-objekt\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"alle %s\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"tal på %s\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"Felt på %s-objekt\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"%s ser ikkje ut til å vere eit urlpattern-objekt\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"Heim\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"Dokumentasjon\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"Bokmerke\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"Dokumentasjonsbokmerke\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">For å installere bokmerke, dra linken til verktøylinja\\n\"\n\"for bokmerke, eller høgreklikk og legg til i bokmerke. No kan du du velge\\n\"\n\"bokmerket frå kva som helst side på nettstaden. Nokre av desse\\n\"\n\"bokmerka krevar at datamaskina du brukar er markert som \\\"intern\\\"\\n\"\n\"(kontakt systemadministratoren din dersom du er usikker på om maskina di er \"\n\"\\\"intern\\\").</p>\\n\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"Dokumentasjon for denne sida\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"\"\n\"Hopp frå kva som helst side til dokumentasjonen for visingsfunksjonen som \"\n\"genererte sida.\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"Vis objekt-ID\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"\"\n\"Viser \\\"content-type\\\" og ein unik ID for sider som representerar eit enkelt \"\n\"objekt.\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"Endre dette objektet (noverande vindauge)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"\"\n\"Hoppar til administrasjonssida for sider som representerer eit enkelt objekt.\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"Endre dette objektet (nytt vindauge)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"Samme som over, men opnar administrasjonssida i eit nytt vindauge.\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Boolsk (True eller False)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Felt av typen: %(field_type)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/pa/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-22 08:46+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Panjabi (Punjabi) (http://www.transifex.com/projects/p/django/\"\n\"language/pa/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: pa\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"ਟੈਗ:\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"ਫਿਲਟਰ:\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"ਵੇਖੋ:\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"ਐਪਲੀਕੇਸ਼ਨ %r ਨਹੀਂ ਲੱਭੀ\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"ਮਾਡਲ:\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"ਸਬੰਧਿਤ `%(app_label)s.%(object_name)s` ਆਬਜੈਕਟ\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"ਸਭ %s\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"%s ਦੀ ਗਿਣਤੀ\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"%s ਆਬਜੈਕਟ ਉੱਤੇ ਖੇਤਰ\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"ਘਰ\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"ਡੌਕੂਮੈਂਟੇਸ਼ਨ\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"ਬੁੱਕਮਾਰਕਲਿਟ\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"ਡੌਕੂਮੈਟੇਸ਼ਨ ਬੁੱਕਮਾਰਕਲਿਟ\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"ਇਹ ਸਫ਼ੇ ਲਈ ਡੌਕੂਮੈਂਟੇਸ਼ਨ\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"ਆਬਜੈਕਟ ID ਵੇਖੋ\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"ਇਹ ਆਬਜੈਕਟ ਸੋਧੋ (ਮੌਜੂਦਾ ਵਿੰਡੋ)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"ਇਹ ਆਬਜੈਕਟ ਸੋਧੋ (ਨਵੀਂ ਵਿੰਡੋ)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"ਖੇਤਰ ਦੀ ਕਿਸਮ: %(field_type)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/pl/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <angular.circle@gmail.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-22 08:46+0000\\n\"\n\"Last-Translator: angularcircle <angular.circle@gmail.com>\\n\"\n\"Language-Team: Polish (http://www.transifex.com/projects/p/django/language/\"\n\"pl/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: pl\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 \"\n\"|| n%100>=20) ? 1 : 2);\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"tag:\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"filtr:\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"widok:\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"Aplikacja %r nie została znaleziona\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"Model %(model_name)r nie został znaleziony w aplikacji %(app_label)r\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"powiązany obiekt `%(app_label)s.%(data_type)s`\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"model:\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"powiązane obiekty `%(app_label)s.%(object_name)s`\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"wszystkie %s\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"liczba %s\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"Pola obiektów %s\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"%s nie jest obiektem urlpattern\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"Początek\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"Dokumentacja\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"Zakładki\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"Zakładki Dokumentacji\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">Aby zainstalować skryptozakładki, przeciągnij łącze do \"\n\"paska zakładek\\n\"\n\"lub kliknij prawym klawiszem na łączu i dodaj je do zakładek. Teraz możesz\\n\"\n\"wybrać skryptozakładkę na dowolnej stronie serwisu. Uwaga: niektóre z tych \"\n\"skryptozakładek wymagają przeglądania serwisu z komputera\\n\"\n\"\\\"wewnętrznego\\\" (skontaktuj się z administratorem systemu, jeśli nie jesteś \"\n\"pewien, czy ten komputer jest \\\"wewnętrznym\\\").</p>\\n\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"Dokumentacja dla tej strony\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"\"\n\"Przekierowuje z dowolnej strony do dokumentacji dla widoku, który ją \"\n\"generuje.\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"Pokaż ID obiektu\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"\"\n\"Pokazuje typ i unikalne ID dla stron, które reprezentują pojedynczy obiekt.\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"Edytuj ten obiekt (bieżące okno)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"\"\n\"Przeskok do panelu administratora dla stron reprezentujących pojedynczy \"\n\"obiekt.\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"Edytuj ten obiekt (nowe okno)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"Jak wyżej, tyle że otwiera nowe okno.\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"Modele\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"Szablony\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"Filtry\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"Tagi\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"Widoki\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Wartość logiczna (True, False - prawda lub fałsz)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Pole typu: %(field_type)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/pt/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Bruno Miguel Custódio <bruno@brunomcustodio.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Nuno Mariz <nmariz@gmail.com>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-22 08:46+0000\\n\"\n\"Last-Translator: Bruno Miguel Custódio <bruno@brunomcustodio.com>\\n\"\n\"Language-Team: Portuguese (http://www.transifex.com/projects/p/django/\"\n\"language/pt/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: pt\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"tag:\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"filtro:\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"view:\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"A aplicação %r não encontrada\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"O Model %(model_name)r não foi encontrado na aplicação %(app_label)r\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"o objeto `%(app_label)s.%(data_type)s` relacionado\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"model:\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"os objetos `%(app_label)s.%(object_name)s` relacionados\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"todos %s\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"número de %s\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"Campos nos objetos %s\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"%s não parece ser um objeto urlpattern\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"Início\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"Documentação\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"Bookmarklets\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"Documentação dos bookmarklets\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">Para instalar bookmarklets, arraste o link para sua \"\n\"barra \\n\"\n\"de bookmarks, ou clique com o lado direito do rato no link e adicione ao \"\n\"seus bookmarks. Agora pode \\n\"\n\"seleccionar o bookmarklet de qualquer página no site. Note que alguns \"\n\"destes \\n\"\n\"bookmarklets requerem que visualize o site de um computador designado \\n\"\n\"por \\\"internal\\\" (entre em contacto com o seu administrador de sistema se \\n\"\n\"não tiver a certeza se o seu computador é \\\"internal\\\").</p>\\n\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"Documentação desta página\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"\"\n\"Vai de qualquer página para a documentação da view que gera essa página.\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"Mostrar o ID do objeto\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"\"\n\"Mostra o tipo de conteúdo e o ID único para as páginas que representam um \"\n\"único objeto.\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"Editar este objeto (janela actual)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"\"\n\"Vai para a página de admin para as páginas que representam um único objeto.\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"Editar este objeto (nova janela)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"Tal como acima, mas abre a página de admin numa nova janela.\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"Models\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"Templates\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"Filtros\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"Tags\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"Views\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Boolean (Pode ser True ou False)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Campo do tipo: %(field_type)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/pt_BR/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Guilherme Gondim <semente+transifex@taurinus.org>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-22 08:46+0000\\n\"\n\"Last-Translator: Guilherme Gondim <semente@taurinus.org>\\n\"\n\"Language-Team: Portuguese (Brazil) <django-l10n-portuguese@googlegroups.\"\n\"com>\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: pt_BR\\n\"\n\"Plural-Forms: nplurals=2; plural=(n > 1);\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"tag:\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"filtro:\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"view:\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"Aplicação %r não encontrada\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"Model %(model_name)r não encontrado na aplicação %(app_label)r\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"o objeto `%(app_label)s.%(data_type)s` relacionado\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"model:\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"objetos `%(app_label)s.%(object_name)s` relacionados\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"todos %s\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"número de %s\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"Campos nos objetos %s\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"%s não aparenta ser um objeto urlpattern\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"Início\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"Documentação\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"Itens de bookmark\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"Documentação de itens de bookmark\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">Para instalar um item no bookmark, arraste o link para a \\n\"\n\"barra de ferramentas de bookmarks, ou clique com o botão direito no link e\\n\"\n\"adicione-o à barra de ferramentas. Agora você pode selecionar o item de\\n\"\n\"bookmark de qualquer página do site. Lembre-se que alguns desses itens\\n\"\n\"de bookmark requerem que você veja o site de um computador designado\\n\"\n\"como \\\"interno\\\" (converse com seu administrador de sistemas se você não\\n\"\n\"souber se seu computador é \\\"interno\\\").</p>\\n\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"Documentação para esta página\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"\"\n\"Leva você de qualquer página para a documentação da view que gera tal página.\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"Mostar ID de objeto\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"\"\n\"Mostra o tipo de conteúdo e ID único para páginas que representam um objeto.\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"Editar este objeto (janela atual)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"Vai para a página de administração que representa um objeto.\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"Editar este objeto (nova janela)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"Como acima, mas abre a página de administração em uma nova janela.\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"Models\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"Templates\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"Filtros\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"Tags\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"Views\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Booleano (Verdadeiro ou Falso)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Campo do tipo: %(field_type)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/ro/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Daniel Ursache-Dogariu <contact@danniel.net>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-22 08:46+0000\\n\"\n\"Last-Translator: Daniel Ursache-Dogariu <contact@danniel.net>\\n\"\n\"Language-Team: Romanian (http://www.transifex.com/projects/p/django/language/\"\n\"ro/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ro\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?\"\n\"2:1));\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"tag:\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"filtru:\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"cod de afișare:\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"Applicația %r negăsită\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"Modelul %(model_name)r nu a fost găsit în aplicația %(app_label)r\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"obiectul înrudit `%(app_label)s.%(data_type)s`\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"model:\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"obiectele înrudite `%(app_label)s.%(object_name)s`\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"toate %s\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"numărul de %s\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"Câmpuri în %s obiecte\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"%s nu pare a fi un obiect urlpattern\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"Acasă\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"Documentație\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"Semne de carte\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"Semne de carte pentru documentație\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">Pentru a instala semne de carte, trageți link-ul în bara \"\n\"de\\n\"\n\"semne de carte, sau clic dreapta pe link și adaugați la semne de carte. Acum \"\n\"puteți\\n\"\n\"selecta semnul de carte din orice pagina a sitului. Notați că unele dintre\\n\"\n\"aceste semne de carte sunt accesibile doar de pe un calculator desemnat ca\\n\"\n\"\\\"intern\\\" (luați legătura cu administratorul sistemului dumneavoastră în \"\n\"caz că nu știți\\n\"\n\"dacă acest calculator este \\\"intern\\\").</p>\\n\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"Documentație pentru pagina aceasta\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"\"\n\"Vă trimite de la orice pagină către documentația pentru codul de afișare \"\n\"care generează acea pagină.\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"Arată ID-ul obiectului\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"\"\n\"Arată tipul de conținut și ID-ul unic pentru paginile ce reprezintă un \"\n\"singur obiect.\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"Modifică acest obiect (în fereastra curentă)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"\"\n\"Sare la pagina de administrare pentru pagini ce reprezintă un singur obiect.\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"Modifică acest obiect (într-o fereastra nouă)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"\"\n\"La fel ca mai sus, dar deschide pagina de administrare într-o fereastră nouă\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Boolean (adevărat sau fals)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Câmp de tip: %(field_type)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/ru/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Eugene MechanisM <contact@mechanism.name>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Алексей Борискин <sun.void@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-22 08:46+0000\\n\"\n\"Last-Translator: Алексей Борискин <sun.void@gmail.com>\\n\"\n\"Language-Team: Russian (http://www.transifex.com/projects/p/django/language/\"\n\"ru/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ru\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"тег:\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"фильтр:\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"view:\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"Приложение %r не найдено\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"Модель %(model_name)r не найдена в приложении %(app_label)r\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"зависимый `%(app_label)s.%(data_type)s` объект\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"модель:\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"связанные объекты `%(app_label)s.%(object_name)s`\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"все %s\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"количество %s\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"Поля объектов типа %s\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"%s не похож на объект urlpattern\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"Начало\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"Документация\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"Закладки\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"Закладки документации\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">Для установки закладок перетащите ссылку к себе на панель\\n\"\n\"закладок или щелкните правой кнопкой мыши по ссылке и добавьте ее в\\n\"\n\"закладки. Теперь у вас есть возможность выбрать закладку с любой страницы\\n\"\n\"сайта. Обратите внимание: некоторые из этих закладок требуют, чтобы вы\\n\"\n\"просматривали сайт с компьютера, определенного как \\\"внутренний\\\" (уточните\\n\"\n\"у своего системного администратора, если не уверены, является ли ваш\\n\"\n\"компьютер \\\"внутренним\\\").</p>\\n\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"Документация для данной страницы\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"\"\n\"Перенаправляет вас с любой страницы к документации для view, который \"\n\"генерирует эту страницу.\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"Показать идентификатор объекта\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"\"\n\"Показывает content-type и уникальный ID для страниц, представляющих один \"\n\"объект.\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"Редактировать данный объект (в текущем окне)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"\"\n\"Перейдет на административную страницу для страниц, представляющих один \"\n\"объект.\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"Редактировать данный объект (в новом окне)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"То же, что и выше, но откроет административную страницу в новом окне.\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"Модели\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"Шаблоны\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"Фильтры\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"Теги\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"View\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Логическое (True или False)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Поле типа %(field_type)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/sk/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Juraj Bubniak <translations@jbub.eu>, 2012.\n# Marian Andre <marian@andre.sk>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-22 08:46+0000\\n\"\n\"Last-Translator: Juraj Bubniak <translations@jbub.eu>\\n\"\n\"Language-Team: Slovak (http://www.transifex.com/projects/p/django/language/\"\n\"sk/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sk\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"značka:\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"filter:\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"pohľad:\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"Aplikácia %r nenájdená\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"Model %(model_name)r sa nenachádza v aplikácii %(app_label)r\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"súvisiaci objekt `%(app_label)s.%(data_type)s`\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"model:\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"súvisiace objekty `%(app_label)s.%(object_name)s`\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"všetky %s\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"počet %s\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"Polia objektov %s\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"%s nevyzerá ako urlpattern objekt\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"Domov\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"Dokumentácia\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"Záložky\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"Záložky dokumentácie\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">Ak chete nainštalovať záložky, pretiahnite odkaz do\\n\"\n\"nástrojovej lišty so záložkami, alebo kliknite pravým tlačidlom myši na \"\n\"odkaz a pridajte ho do záložiek.\\n\"\n\"Následne môžete záložky použiť na stránkach. Poznamenávame, že použitie \"\n\"niektorých záložiek vyžaduje, aby bol váš počítač \\\"interný\\\" (ak si nie ste \"\n\"istý, že váš počítač je \\\"interný\\\", oslovte svojho systémového správcu).</\"\n\"p>\\n\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"Dokumentácia k tejto stránke\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"\"\n\"Nasmeruje vás z ľubovoľnej stránky do dokumentácie, kde je popísané, ako sa \"\n\"táto stránka generuje.\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"Zobraziť identifikátor objektu\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"\"\n\"Zobrazí content-type a jedinečný identifikátor pre stránky, ktoré \"\n\"reprezentujú samostatný objekt.\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"Upraviť tento objekt (aktuálne okno)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"\"\n\"Skočí na stránku správy pre stránky, ktoré reprezentujú samostatný objekt.\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"Upraviť tento objekt (nové okno)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"Ako predtým, ale otvorí stránku správy v novom okne.\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"Modely\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"Šablóny\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"Filtre\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"Tagy\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"Zobrazenia\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Logická hodnota (buď True alebo False)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Pole typu: %(field_type)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/sl/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Gašper Žejn <zejn@kiberpipa.org>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <zejn@kiberpipa.org>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-31 20:26+0000\\n\"\n\"Last-Translator: mateju <>\\n\"\n\"Language-Team: Slovenian (http://www.transifex.com/projects/p/django/\"\n\"language/sl/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sl\\n\"\n\"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n\"\n\"%100==4 ? 2 : 3);\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"oznaka:\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"filter:\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"pogled:\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"Programa %r ni mogoče najti\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"Modela %(model_name)r ni v programu %(app_label)r\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"povezani predmet `%(app_label)s.%(data_type)s`\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"model:\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"povezani predmeti `%(app_label)s.%(object_name)s`\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"vse %s\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"število %s\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"Polja na predmetih %s\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"Predmet %s ni videti veljaven predmet urlpattern\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"Domov\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"Dokumentacija\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"Apleti zaznamkov\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"Dokumentacijski apleti zaznamkov\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">Aplete zaznamkov je mogoče namestiti z vleko\\n\"\n\"povezave v orodno vrstico z zaznamki, ali pa z desnim klikom na povezavo\\n\"\n\"Zaznamek je mogoče izbrati s katerekoli strani tega spletnega mesta.\\n\"\n\"Opomba: nekatere strani si je mogoče ogledati le le z računalnika, ki je\\n\"\n\"označen kot \\\"notranji\\\" računalnik (za več podrobnosti o tem, se obrnite\\n\"\n\"na skrbnika).</p>\\n\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"Dokumentacija te strani\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"Skok na stran z dokumentacijo za pogled, ki gustvarja trenutno stran.\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"Pokaži ID predmeta\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"\"\n\"Pokaže vrsto content-type in enoznačni ID za strani, ki predstavljajo en \"\n\"predmet.\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"Uredi predmet (v trenutnem oknu)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"Skok na skrbniško stran vseh strani, ki predstavljajo en predmet.\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"Uredi ta predmet (v novem oknu)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"Kot zgoraj, le da odpre skrbniško stran v novem oknu.\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"Modeli\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"Predloge\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"Filtri\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"Oznake\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"Pogledi\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Boolova vrednost (PRAV ali NAPAK)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Polje vrste: %(field_type)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/sq/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Besnik <besnik@programeshqip.org>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-11-25 11:03+0000\\n\"\n\"Last-Translator: Besnik <besnik@programeshqip.org>\\n\"\n\"Language-Team: Albanian (http://www.transifex.com/projects/p/django/language/\"\n\"sq/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sq\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"etiketë:\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"filtër:\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"parje:\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"Nuk u gjet zbatimi %r\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"Nuk u gjet modeli %(model_name)r në zbatimin %(app_label)r\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"objekti i afërt `%(app_label)s.%(data_type)s`\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"model:\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"objektet e afërta `%(app_label)s.%(object_name)s`\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"krejt %s\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"numër i %s\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"Fusha te objektet %s\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"%s nuk duket të jetë një objekt urlpattern\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"Hyrje\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"Dokumentim\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"\\\"Bookmarklet\\\"-e\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"\\\"Bookmarklet\\\"-e Dokumentimi\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">Për instalim \\\"bookmarklet\\\"-esh, tërhiqeni lidhjen te \"\n\"paneli juaj\\n\"\n\"i faqerojtësve, ose djathtas-klikoni dhe shtojeni te faqerojtësit tuaj. Tani \"\n\"mundeni\\n\"\n\"të përzgjidhni \\\"bookmarklet\\\" nga cilado faqe e \\\"site\\\"-it.  Kini parasysh \"\n\"që disa prej\\n\"\n\"\\\"bookmarklet\\\"-eve kërkojnë që ju ta shihni \\\"site\\\"-in prej një kompjuteri \"\n\"të specifikuar\\n\"\n\"si \\\"i brendshëm\\\" (sqarojeni me përgjegjësin e sistemit nëse nuk jeni i \"\n\"sigurt\\n\"\n\"në është a jo \\\"i brendshëm\\\" kompjuteri juaj).</p>\\n\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"Dokumentim për këtë faqe\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"\"\n\"Ju kalon nga cilado faqe te dokumenti që prodhon atë faqe, për ta parë.\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"Shfaq ID objekti\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"\"\n\"Shfaq lloj lënde dhe ID unike për faqet që përfaqësojnë një objekt të vetëm.\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"Përpunojeni këtë objekt (dritarja e tanishme)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"\"\n\"Kalon te faqja e përgjegjësit për faqet që përfaqësojnë një objekt të vetëm.\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"Përpunojeni këtë objekt (dritare e re)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"Si më sipër, por hap faqen e përgjegjësit në një dritare të re.\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"Modele\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"Gjedhe\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"Filtra\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"Etiketa\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"Parje\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Buleane (Ose True, ose False)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Fushë e llojit: %(field_type)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/sr/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Janos Guljas <janos@resenje.org>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-22 08:46+0000\\n\"\n\"Last-Translator: Janos Guljas <janos@resenje.org>\\n\"\n\"Language-Team: Serbian (http://www.transifex.com/projects/p/django/language/\"\n\"sr/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sr\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"таг:\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"филтер:\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"вју:\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"Апликација %r није пронађена\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"Модел %(model_name)r није пронађен у апликацији %(app_label)r\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"повезани објекти класе `%(app_label)s.%(data_type)s`\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"модел:\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"класе `%(app_label)s.%(object_name)s`\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"сви повезани објекти %s\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"број повезаних објеката %s\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"Поља у повезаним објектима %s\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"%s не изгледа као „urlpattern“ објекат\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"Почетна\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"Документација\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"Букмарклети\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"Букмарклети документације\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">Да бисте инсталирали букмарклет, превуците линк до својих\\n\"\n\"букмаркова или кликните десним дугметом и додајте међу букмарке. Након тога\\n\"\n\"букмарклетима можете приступити са сваке странице на сајту. Имајте на уму\\n\"\n\"да неки букмарклети захтевају да сајту приступите са рачунара који су\\n\"\n\"означени као „интерни“ (питајте администратора вашег система уколико нисте\\n\"\n\"сигурни да ли је ваш рачунар „интерни“).</p>\\n\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"Документација за ову страницу\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"\"\n\"Води од било које странице до документаицје погледа који је генерисао ту \"\n\"страницу.\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"Прикажи ID објекта\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"\"\n\"Приказује content-type и јединствени ID за страницу која преставља један \"\n\"објекат.\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"Измени овај објекат (у овом прозору)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"\"\n\"Води у администрациони страницу за странице које престављају један објекат\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"Измени овај објекат (нови прозор)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"\"\n\"Исто као претходни, али отвара администрациону страницу у новом прозору.\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"Модели\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"Шаблони\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"Филтери\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"Тагови\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"Вјуеви\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Булова вредност (True или False)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Поње типа: %(field_type)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/sr_Latn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Janos Guljas <janos@resenje.org>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-22 08:46+0000\\n\"\n\"Last-Translator: Janos Guljas <janos@resenje.org>\\n\"\n\"Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/django/\"\n\"language/sr@latin/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sr@latin\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"tag:\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"filter:\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"vju:\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"Aplikacija %r nije pronađena\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"Model %(model_name)r nije pronađen u aplikaciji %(app_label)r\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"povezani objekti klase `%(app_label)s.%(data_type)s`\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"model:\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"klase `%(app_label)s.%(object_name)s`\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"svi povezani objekti %s\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"broj povezanih objekata %s\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"Polja u povezanim objektima %s\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"%s ne izgleda kao „urlpattern“ objekat\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"Početna\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"Dokumentacija\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"Bukmarkleti\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"Bukmarkleti dokumentacije\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">Da biste instalirali bukmarklet, prevucite link do svojih\\n\"\n\"bukmarkova ili kliknite desnim dugmetom i dodajte među bukmarke. Nakon toga\\n\"\n\"bukmarkletima možete pristupiti sa svake stranice na sajtu. Imajte na umu\\n\"\n\"da neki bukmarkleti zahtevaju da sajtu pristupite sa računara koji su\\n\"\n\"označeni kao „interni“ (pitajte administratora vašeg sistema ukoliko niste\\n\"\n\"sigurni da li je vaš računar „interni“).</p>\\n\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"Dokumentacija za ovu stranicu\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"\"\n\"Vodi od bilo koje stranice do dokumentaicje pogleda koji je generisao tu \"\n\"stranicu.\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"Prikaži ID objekta\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"\"\n\"Prikazuje content-type i jedinstveni ID za stranicu koja prestavlja jedan \"\n\"objekat.\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"Izmeni ovaj objekat (u ovom prozoru)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"\"\n\"Vodi u administracioni stranicu za stranice koje prestavljaju jedan objekat\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"Izmeni ovaj objekat (novi prozor)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"\"\n\"Isto kao prethodni, ali otvara administracionu stranicu u novom prozoru.\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"Modeli\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"Šabloni\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"Filteri\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"Tagovi\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"Vjuevi\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Bulova vrednost (True ili False)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Ponje tipa: %(field_type)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/sv/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Andreas Pelme <andreas@pelme.se>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-22 08:46+0000\\n\"\n\"Last-Translator: Andreas Pelme <andreas@pelme.se>\\n\"\n\"Language-Team: Swedish (http://www.transifex.com/projects/p/django/language/\"\n\"sv/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sv\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"tagg:\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"filter:\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"vy:\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"Applikation %r hittades inte\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"Modell %(model_name)r hittades inte i applikation %(app_label)r\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"det relaterade `%(app_label)s.%(data_type)s`-objektet\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"modell:\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"relaterade `%(app_label)s.%(object_name)s`-objekt\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"alla %s\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"antal %s\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"Fält på %s objekt\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"%s verkar inte vara ett urlpattern-objekt\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"Hem\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"Dokumentation\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"Smarta bokmärken\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"Smarta bokmärken för dokumentation\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">För att installera smarta bokmärken, dra länken till din\\n\"\n\"verktygsrad med bokmärken, eller högerklicka på länken och lägg till den\\n\"\n\"till dina bokmärken. Nu kan du välja det smarta bokmärket från alla sidor\\n\"\n\"på webbplatsen. Observera att några av dessa smarta bokmärken kräver att du \"\n\"besöker\\n\"\n\"sidan från en dator som är \\\"intern\\\" (kontakta din systemadministratör\\n\"\n\"om du inte är säker på om din dator är \\\"intern\\\").</p>\\n\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"Dokumentation för denna sida\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"\"\n\"Förflyttar dig från valfri sida till dokumentationen för vyn som genererar \"\n\"den sidan.\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"Visa objektets ID\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"\"\n\"Visa innehållstypen och det unika ID-numret för sidor som representerar ett \"\n\"enskilt objekt.\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"Redigera detta objekt (aktuellt fönster)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"\"\n\"Hoppar till administrationssidan för sidor som representerar ett enskilt \"\n\"objekt.\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"Redigera detta objekt (nytt fönster)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"Som ovan, men öppnar administrationssidan i ett nytt fönster.\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"Modeller\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"Mallar\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"Filter\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"Taggar\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"Vyer\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Boolesk (antingen True eller False)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Fält av typ: %(field_type)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/sw/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-22 08:46+0000\\n\"\n\"Last-Translator: machaku <bmachaku@gmail.com>\\n\"\n\"Language-Team: Swahili (http://www.transifex.com/projects/p/django/language/\"\n\"sw/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sw\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"tagi\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"chujio\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"muonekano\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"Programu %r haijapatikana\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"Modeli %(model_name)r haijapatikana katika programu %(app_label)r\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"`%(app_label)s.%(data_type)s` kinachohusiana\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"modeli\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"`%(app_label)s.%(object_name)s` vinavyohusiana\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"kila %s\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"idadi ya %s\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"Uga zilizopo katika %s \"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"%s haionekani kuwa ni kitu cha urlpattern\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"Sebule\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"Waraka\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"Vialamisho\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"Vialamisho vya waraka\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">Kusanikisha vialamisho, kokota kiungo hadi upau wako wa\\n\"\n\"maalamisho, or bofya-kulia kiungo hicho na kiongeze kwenye maalamisho yako. \"\n\"Sasa unaweza\\n\"\n\"kuchagua kialamisho kutokea ukurasa wowote katika tovuti hii.  Kumbuka \"\n\"baadhi ya vialamisho \\n\"\n\"vitakuhitaji kuvitumia kwa kutumia kompyuta iliyoteuliwa kama \\\"internal\\\"\\n\"\n\"(ongea na utawala wa mfumo kama huna uhakika kuwa kompyuta yako ni  \"\n\"\\\"internal\\\") \\n\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"Nyaraka kwa ajili ya ukurasa huu\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"\"\n\"Inakurusha kutoka ukurasa wowote hadi kwenye waraka wa mounekano unaozalisha \"\n\"ukurasa huo.\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"Onesha Utambulisho wa kitu\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"\"\n\"inaonesha aina ya maudhui na utambulisho wa kipekee wa kurasa \"\n\"zinazowakilisha kitu kimoja.\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"Hariri kitu hiki (dirisha la sasa)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"Ruka hadi ukurasa wa utawala kwa kurasa zinazowakilisha kitu kimoja\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"Hariri kitu hiki (dirisha jipya)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"\"\n\"Kama hapo juu, lakini hufungua ukurasa wa utawala katika dirisha jipya.\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"Modeli\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"Templeti\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"Chujio\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"Tagi\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"Mionekano\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Buleani (Aidha Kweli au Si kweli)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Uga wa aina %(field_type)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/ta/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-22 08:46+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Tamil (http://www.transifex.com/projects/p/django/language/\"\n\"ta/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ta\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"ஒட்டு:\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"வடிகட்டி:\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"நோற்றமிடு:\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"பக்கம் %r இல்லை\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"மாதிரி:\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"அனைத்து %s \"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"எண்ணிக்கை %s\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"புலத்தின் %s பொருள்\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"%s -ல் urlpattern தோன்றுவதில்லை\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"வீடு\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"ஆவனமாக்கம்\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"புத்தகக்குறிகள்\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"ஆவணமாக்கக் குறியீடுகள்\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\"\\n\"\n\"<p class=\\\"help\\\"> புத்தக குறியீடுகளை நிறுவ இந்த இணைப்பினை புத்தகக்குறியீட்டுப் \\n\"\n\"பட்டைக்கு இழுக்கவும். அல்லது வலது கிளிக் செய்து புத்தகக்குறியீடுகளில் சேர்க்கவும். \\n\"\n\" இனி தளத்தில் எந்தப் பக்கத்தில் இருந்தும் புத்தகக்குறியீட்டினை தேர்வுசெய்ய முடியும். \\n\"\n\" நீங்கள் இந்த தளத்தை  \\\"internal\\\" என  குறிக்கப்பட்ட கணிணியில் இருந்து மட்டுமே \\n\"\n\" ஒருசில புத்தகக்குறிகளை செயல்படுத்தமுடியும்\\n\"\n\"  உங்களுக்கு, கணிணி  \\\"internal\\\" என உறுதி செய்ய கணிணிமேளாலரை அணுகவும்.</p>\\n\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"இந்த பக்கத்திற்கான ஆவணம்\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"\"\n\"எந்த ஒரு பக்கத்திலிருந்தும் ஆவணப்பக்கத்தை பார்வையிடுதல், அந்த பக்கத்தை உருவாக்குகிறது.\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"object ID-ஐ காட்டு\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"\"\n\"ஒரே object-ஐ குறிக்கும் பக்கங்களின் பொருளடக்க வகை மற்றும் unique ID-ஐ   காட்டுகிறது.\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"இதை திருத்துக (தற்போதைய சாளரம்)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"ஒரே object-ஐ குறிக்கும் பக்கங்களைக் காண மேலாளர் பக்கத்திற்கு செல்க.\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"இதை திருத்துக. (புதிய சாளரம்)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"மேளாலர் பக்கத்தை முன்பு கண்டதுபோல், ஆனால் புதிய சாளரத்தில் திறக்கிறது.\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"பூலியன் (சரி அல்லது தவறு)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/te/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# bhaskar teja yerneni <prudhviy@gmail.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-22 08:46+0000\\n\"\n\"Last-Translator: bhaskar teja yerneni <prudhviy@gmail.com>\\n\"\n\"Language-Team: Telugu (http://www.transifex.com/projects/p/django/language/\"\n\"te/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: te\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"టాగ్:\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"వడపోత:\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"దర్శనం:\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"%rఎప్ప్ దొరకలేడు\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"సంబంధించిన `%(app_label)s.%(data_type)s` అంశము\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"మొడల్:\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"సంబంధించిన `%(app_label)s.%(object_name)s` వస్తువులు\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"ఆన్నీ  %s\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"%s సంఖ్య\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"%s వస్తువులలో ఫీల్డ్స్   \"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"%s యు ఆర్ యల్  నిర్మాణక్రమ అంశము లా లేదు \"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"నివాసము\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"పత్రికీకరణ\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"నిర్దుష్ట గుర్తులు \"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"పత్రికీకరణ యొక్క నిర్దుష్ట గుర్తులు \"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"ఈ పొరటుకు పత్రికీకరణ\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"వస్తువు ఇడి చూడండి\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"వస్తువు ని మార్చండి (ప్రస్తుత విండొ)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"వస్తువు ని మార్చండి(కొత్త విండొ) \"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"బూలియన్ (అవునా లేక కాదా)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/th/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Vichai Vongvorakul <vongvichai@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-22 08:46+0000\\n\"\n\"Last-Translator: Vichai Vongvorakul <vongvichai@gmail.com>\\n\"\n\"Language-Team: Thai (http://www.transifex.com/projects/p/django/language/\"\n\"th/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: th\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"ป้ายกำกับ:\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"ตัวกรอง:\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"ดู:\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"ไม่พบแอป %r \"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"ไม่พบโมเดล %(model_name)r ในแอป %(app_label)r\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"ความสัมพันธ์`%(app_label)s.%(data_type)s` อ็อบเจ็กต์\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"โมเดล:\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"ความสัมพันธ์`%(app_label)s.%(object_name)s` อ็อบเจ็กต์\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"ทั้งหมด %s \"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"จำนวนของ %s\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"ฟิลด์บน %s อ็อบเจ็กต์\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"%s ดูเหมือนจะไม่ใช่ urlpattern อ็อบเจ็กต์\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"หน้าหลัก\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"เอกสารประกอบ\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"Bookmarklets\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"Documentation bookmarklets\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">เพื่อติดตั้ง bookmarklets, ลากลิ้งก์ไปที่แถบเครื่องมือบุ๊กมาร์ค\\n\"\n\", หรือคลิกขวาที่ลิ้งและเพิ่มเข้าบุ๊กมาร์คของคุณ. ตอนนี้คุณสามารถ\\n\"\n\"เลือก bookmarklet จากหน้าใดๆในเว็บไซต์.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"เอกสารสำหรับหน้านี้\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"ย้ายจากทุกหน้าไปที่วิวที่สร้างหน้านั้นขึ้นมา\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"แสดงอ็อบเจ็กต์ไอดี\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"แสดง content-type และ unique ID เพื่อแสดงอ็อบเจ็กต์เพียงอย่างเดียว.\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"แก้ไขออปเจ็กนี้ (ในหน้าต่างปัจจุบัน)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"ไปที่หน้าแอดมินเพื่อแสดงอ็อบเจ็กต์เพียงอย่างเดียว.\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"แก้ไขออปเจ็กนี้ (หน้าใหม่)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"เหมือนด้านบน แต่เปิดหน้าต่างผู้ดูแลระบบในหน้าต่างใหม่\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"Models\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"Templates\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"Filters\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"Tags:\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"View\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"ตรรกะแบบบูลหมายถึง ค่า\\\"จริง\\\" (True) หรือ \\\"ไม่จริง \\\" (False)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"ฟิลด์ข้อมูล: %(field_type)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/tr/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Murat Çorlu <muratcorlu@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-22 08:46+0000\\n\"\n\"Last-Translator: Murat Çorlu <muratcorlu@gmail.com>\\n\"\n\"Language-Team: Turkish (http://www.transifex.com/projects/p/django/language/\"\n\"tr/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: tr\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"etiket:\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"filtre:\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"görünüm:\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"%r uygulaması bulunamadı\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"%(app_label)r uygulamasında %(model_name)r modeli bulunamadı\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"İlgili `%(app_label)s.%(data_type)s` nesnesi\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"model:\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"ilgili `%(app_label)s.%(object_name)s` nesneleri\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"tüm %s\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"%s sayısı\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"%s nesnesindeki alanlar\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"%s geçerli bir adres kalıbı değil\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"Anasayfa\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"Dokümantasyon\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"Kısayollar\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"Dokümantasyon kısayolları\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">Kısayolları kullanabilmek için, bağlantıyı tarayıcınızdaki \"\n\"araç\\n\"\n\"çubuğuna sürükleyin, ya da sağ tıklayıp sık kullanılan adresler listenize \"\n\"ekleyin. \\n\"\n\"Bazı kısayollar, uygulamayı çalıştıran sunucu ile aynı adreste bulunan \"\n\"istemciler \\n\"\n\"tarafından kullanılabilir.</p>\\n\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"Bu sayfa için dokümantasyon\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"Sizi, bu sayfayı üreten betiğin dokümantasyonuna yönlendirir.\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"Nesne numarasını göster\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"\"\n\"Tek bir nesneyi temsil eden sayfaların içerik türünü ve numarasını gösterir.\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"Nesneyi düzenle (aynı pencerede)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"Tek bir nesneyi temsil eden sayfaların yönetim sayfasını gösterir.\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"Nesneyi düzenle (yeni pencerede)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"Yukarıdaki gibi, ancak yönetim sayfasını yeni bir pencerede açar.\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"Modeller\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"Şablonlar\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"Filtreler\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"Etiketler\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"Görünümler\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Mantıksal (True ya da False)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Alan türü: %(field_type)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/tt/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Azat Khasanshin <lordofbazuks@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-22 08:46+0000\\n\"\n\"Last-Translator: Azat Khasanshin <lordofbazuks@gmail.com>\\n\"\n\"Language-Team: Tatar (http://www.transifex.com/projects/p/django/language/\"\n\"tt/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: tt\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"билге:\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"фильтр:\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"күрсәтелеш:\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"%r кушымтасы табылмаган\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"%(model_name)r моделе %(app_label)r кушымтасында табылмаган\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"бәйләнгән '%(app_label)s.%(data_type)s' объект\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"модель:\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"бәйләнгән '%(app_label)s.%(object_name)s' объектлар\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"бөтен %s\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"%s саны\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"%s объектлары өчен кырлар\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"%s urlpattern объектына ошамаган\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"Өй\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"Документация\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"Кыстыргычлар\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"Документация кыстыргычлары\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">Кыстыргычны урнаштыру өчен сылтаманы кысыргычлар аслыгына \"\n\"күчерегез я тычканның уң төймәсенә чирттереп кыстыргычлар исемлегенә кушыгыз.\"\n\"</p>\\n\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"Бу сәхифә өчен документация\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"\"\n\"Теләсә нинди сәхифәдән сезне ул сәхифәне төзи торган view документациясенә \"\n\"җибәрә.\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"Объект идентификаторын күрсәтергә\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"Бер объектны күрсәтә торган сәхифәнең content-type һәм ID күрсәтә.\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"Бу объектны төзәтергә (шушы тәрәзәдә)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"Бер объектны күрсәтә торган сәхифәнең идарә сәхифәсенә җибәрә.\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"Бу объектны төзәтергә (яңа тәрәзәдә)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"Өстәге кебек, тик идарә сәхифәсен яңа тәрәзәдә ача.\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Логик (True яисә False)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"%(field_type)s типтагы кыр\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/udm/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2011-01-19 15:09+0000\\n\"\n\"Last-Translator: Django team\\n\"\n\"Language-Team: Udmurt (http://www.transifex.com/projects/p/django/language/\"\n\"udm/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: udm\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"True яке False\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"%(field_type)s типъем бусы\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/uk/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Sergey Lysach <sergikoff88@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-22 08:46+0000\\n\"\n\"Last-Translator: Sergey Lysach <sergikoff88@gmail.com>\\n\"\n\"Language-Team: Ukrainian (http://www.transifex.com/projects/p/django/\"\n\"language/uk/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: uk\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"тег:\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"відфільтрувати:\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"переглянути:\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"Прикладна система(app) %r не знайдена\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"Модель %(model_name)r не знайдено в прикладній системі %(app_label)r\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"пов'язаний `%(app_label)s.%(data_type)s` об'єкт\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"модель:\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"пов'язані з `%(app_label)s.%(object_name)s` об'єкти\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"всі %s\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"кількість з %s\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"Поля об'єктів %s\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"%s не є об'єктом urlpattern\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"Домівка\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"Документація\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"Інтерактивні закладки\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"Інтерактивні закладки документації\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">Щоб встановити інтерактивні закладки, перетягніть лінк до\\n\"\n\"тулбару закладок, або клікніть правою кнопкою миші та додайте у\\n\"\n\"свої закладки. Тепер ви можете обрати інтерактивні закладки з будь-якої\\n\"\n\"сторінки сайту. Зауважте, що деякі з цих інтерактивних закладок на сайті\\n\"\n\"можуть переглядатися тільки з комп'ютера, що є в одній внутрішній мережі з \\n\"\n\"даним сайтом (запитайте у вашого системного адміністратора, якщо ви не \"\n\"впевнені,\\n\"\n\"що сайт і ваш комп'ютер є в одній внутрішній мережі).</p>\\n\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"Документація для цієї сторінки\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"\"\n\"Перекидає вас з будь-якої сторінки в документацію для функції, що \"\n\"сгенерувала цю сторінку.\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"Показати ID об'єкту\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"\"\n\"Показує content-type та унікальний ID для сторінок, які являють собою єдиний \"\n\"об'єкт.\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"Редагувати цей об'єкт (поточне вікно)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"\"\n\"Перекидає до адміністраторської сторінки для сторінок, що відображають \"\n\"окремий об'єкт.\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"Редагувати цей об'єкт (нове вікно)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"Як і вище, але відкриває сторінку адміністрування у новому вікні.\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"Моделі\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"Шаблони\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"Фільтри\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"Теги\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"Відображення\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Булеве значення (True або False)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Тип поля: %(field_type)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/ur/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Mansoorulhaq Mansoor <mansoorulhaq1986@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-22 08:46+0000\\n\"\n\"Last-Translator: Mansoorulhaq Mansoor <mansoorulhaq1986@gmail.com>\\n\"\n\"Language-Team: Urdu (http://www.transifex.com/projects/p/django/language/\"\n\"ur/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ur\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"ٹیگ :\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"فلٹر:\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"ویو:\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"ایپلیکیشن %r نہیں ملی\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"ماڈل %(model_name)r ایپ %(app_label)r میں نہیں ملا\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"متعلقہ `%(app_label)s.%(data_type)s`اوبجیکٹ\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"model:\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"متعلقہ `%(app_label)s.%(object_name)s` اوبجیکٹس\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"تمام %s\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"%sکی تعداد \"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"%s اوبجیکٹ پر فیلڈز\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"%s بطور urlpattern ظاہر نہیں ہو رہا۔\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"صفحۂ اول\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"طریق استعمال\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"بک مارک لیٹس\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"طریق استعمال کے بک مارک لیٹس\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">بک مارک لیٹس کی تنصیب کے لئے،لنک کو اپنے بک مارکس ٹولبار\\n\"\n\"کی طرف ڈریگ کریں، یا لنک پر دائیں کلک کریں اسے اپنے بک مارکس میں جمع کریں۔ \"\n\"اب آپ\\n\"\n\"سائٹ کے کسی بھی صفحے سے بک مارک لیٹ منتخب کر سکتے ہیں۔ نوٹ کریں کہ ان میں \\n\"\n\"سے کچھ بک مارک لیٹس کے لئے آپ کو ضرورت ہے کہ آپ سائٹ کو ایسے کمپیوٹر سے دیکھ \"\n\"رہے\\n\"\n\"جو بطور \\\"internal\\\" ڈیزائن کیا گیا ہو۔ (اگر آپ کو یقین نہ ہو کہ آپ کا \"\n\"کمپیوٹر \\\"internal\\\" ہے تو اپنے\\n\"\n\"سسٹم کے منتظم سے رابطہ کریں)۔ </p>\\n\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"اس صفحے کا طریق استعمال\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"\"\n\"آپ کو لے جاتا ہے کسی بھی صفحے سے طریق استعمال کی طرف اس ویو کے لئے جو اس \"\n\"صفحے کو بناتا ہے۔\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"اوبجیکٹ کی آئی ڈی دکھائیں\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"\"\n\"مضمون کی قسم اور منفرد آئی ڈی دکھاتا ہے ان صفحوں کے لئے جو سنگل اوبجیکٹ کی \"\n\"نمائندگی کرتے ہیں۔\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"اس اوبجیکٹ کو ایڈٹ کریں (موجودہ ونڈو)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"\"\n\"منتظم کے صفحے کی طرف جمپ کرتا ھے ان صفحوں کے لئے سنگل اوبجیکٹ کی نمائندگی \"\n\"کرتے ہیں۔\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"اس اوبجیکٹ کو ایڈٹ کریں (نئی ونڈو)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"اوپر کی طرح ھے۔ لیکن منتظم کے صفحے کو نئی ونڈو میں کھولتا ھے۔\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"بولین (True یا False)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"%(field_type)s قسم کا خانہ\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/vi/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-22 08:46+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Vietnamese (http://www.transifex.com/projects/p/django/\"\n\"language/vi/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: vi\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"Nhãn:\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"Lọc:\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"Xem:\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"Ứng dụng %r không tìm thấy\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"Mẫu %(model_name)r không tìm thấy trong ứng dụng %(app_label)r\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"mẫu:\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"liên quan tới đối tượng `%(app_label)s.%(object_name)s`\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"Tất cả %s\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"số của %s\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"Trang chủ\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"Tài liệu\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"Hiện ID\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"Sửa lại đối tượng này (ở cửa sổ hiện tại)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"Sửa lại đối tượng này (trong cửa sổ mới)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"Như trên nhưng mở trang quản trị ở một cửa sổ mới.\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"Boolean (hoặc là Đúng hoặc là Sai)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"Trường thuộc dạng: %(field_type)s \"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/zh_CN/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Kevin Shi <leiarix@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-22 08:46+0000\\n\"\n\"Last-Translator: 磊 施 <leiarix@gmail.com>\\n\"\n\"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/django/\"\n\"language/zh_CN/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: zh_CN\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"标签：\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"过滤器：\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"视图：\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"应用 %r 没有找到\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"在应用 %(app_label)r 里找不到模型 %(model_name)r\"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"相关的 `%(app_label)s.%(data_type)s` 对象\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"模型：\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"相关的 `%(app_label)s.%(object_name)s` 对象\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"所有 %s\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"%s 的数量\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"%s 对象的字段\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"%s 似乎不是一个 urlpattern 对象\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"首页\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"文档\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"书签\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"文档书签\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">为了安装书签，将链接拖到你的书签工具条，\\n\"\n\"或者鼠标右击链接，添加到你的书签中。现在你可以从这个站\\n\"\n\"点的任何页面选择书签。注意，其中某些书签要求你在一台\\n\"\n\"被指定为\\\"内部\\\"的计算机上查看（如果不确定你的计算机\\n\"\n\"是否为\\\"内部\\\"的，不妨跟你的系统管理员沟通一下）。</p>\\n\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"关于本页面的文档\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"从任何页面跳转到生成该页面的 view 文档。\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"显示对象 ID\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"为那些展现单个对象的页面，显示 content-type 和唯一 ID。\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"编辑该对象(当前窗口)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"跳转到用于展现单个对象的页面的管理页。\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"编辑该对象(新窗口)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"同上，但在新窗口中打开管理页面。\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"模型\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"模板\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"过滤器\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"标签\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"视图\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"布尔值（真或假）\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"字段类型：%(field_type)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/locale/zh_TW/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# quantum9876 <quantum9876@gmail.com>, 2011.\n#   <yyc1217@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-22 09:28+0200\\n\"\n\"PO-Revision-Date: 2012-10-22 08:46+0000\\n\"\n\"Last-Translator: yyc1217 <yyc1217@gmail.com>\\n\"\n\"Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/django/\"\n\"language/zh_TW/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: zh_TW\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: views.py:58 views.py:60 views.py:62\nmsgid \"tag:\"\nmsgstr \"標籤：\"\n\n#: views.py:93 views.py:95 views.py:97\nmsgid \"filter:\"\nmsgstr \"過濾器：\"\n\n#: views.py:156 views.py:158 views.py:160\nmsgid \"view:\"\nmsgstr \"視圖：\"\n\n#: views.py:188\n#, python-format\nmsgid \"App %r not found\"\nmsgstr \"應用程式 %r 没有找到\"\n\n#: views.py:195\n#, python-format\nmsgid \"Model %(model_name)r not found in app %(app_label)r\"\nmsgstr \"未在%(app_label)r 找到模組 %(model_name)r \"\n\n#: views.py:207\n#, python-format\nmsgid \"the related `%(app_label)s.%(data_type)s` object\"\nmsgstr \"有關 `%(app_label)s.%(data_type)s` 的物件\"\n\n#: views.py:207 views.py:226 views.py:231 views.py:245 views.py:259\n#: views.py:264\nmsgid \"model:\"\nmsgstr \"模型：\"\n\n#: views.py:222 views.py:254\n#, python-format\nmsgid \"related `%(app_label)s.%(object_name)s` objects\"\nmsgstr \"有關 `%(app_label)s.%(object_name)s` 的物件\"\n\n#: views.py:226 views.py:259\n#, python-format\nmsgid \"all %s\"\nmsgstr \"所有 %s\"\n\n#: views.py:231 views.py:264\n#, python-format\nmsgid \"number of %s\"\nmsgstr \"%s 的数量\"\n\n#: views.py:269\n#, python-format\nmsgid \"Fields on %s objects\"\nmsgstr \"%s 物件的欄位\"\n\n#: views.py:361\n#, python-format\nmsgid \"%s does not appear to be a urlpattern object\"\nmsgstr \"%s 似乎不是一個 urlpattern 物件\"\n\n#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6\n#: templates/admin_doc/missing_docutils.html:6\n#: templates/admin_doc/model_detail.html:14\n#: templates/admin_doc/model_index.html:8\n#: templates/admin_doc/template_detail.html:6\n#: templates/admin_doc/template_filter_index.html:7\n#: templates/admin_doc/template_tag_index.html:7\n#: templates/admin_doc/view_detail.html:6\n#: templates/admin_doc/view_index.html:7\nmsgid \"Home\"\nmsgstr \"首頁\"\n\n#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7\n#: templates/admin_doc/missing_docutils.html:7\n#: templates/admin_doc/model_detail.html:15\n#: templates/admin_doc/model_index.html:9\n#: templates/admin_doc/template_detail.html:7\n#: templates/admin_doc/template_filter_index.html:8\n#: templates/admin_doc/template_tag_index.html:8\n#: templates/admin_doc/view_detail.html:7\n#: templates/admin_doc/view_index.html:8\nmsgid \"Documentation\"\nmsgstr \"文件\"\n\n#: templates/admin_doc/bookmarklets.html:8\nmsgid \"Bookmarklets\"\nmsgstr \"書籤\"\n\n#: templates/admin_doc/bookmarklets.html:11\nmsgid \"Documentation bookmarklets\"\nmsgstr \"文件 bookmarklets\"\n\n#: templates/admin_doc/bookmarklets.html:15\nmsgid \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">To install bookmarklets, drag the link to your bookmarks\\n\"\n\"toolbar, or right-click the link and add it to your bookmarks. Now you can\\n\"\n\"select the bookmarklet from any page in the site.  Note that some of these\\n\"\n\"bookmarklets require you to be viewing the site from a computer designated\\n\"\n\"as \\\"internal\\\" (talk to your system administrator if you aren't sure if\\n\"\n\"your computer is \\\"internal\\\").</p>\\n\"\nmsgstr \"\"\n\"\\n\"\n\"<p class=\\\"help\\\">要安裝 bookmarklet，把連結拖進你的書籤工具列，或右擊該連結\"\n\"後新增到你的書籤裡。現在你可以從網站的任何頁面來選擇 bookmarklet。注意其中某\"\n\"些 bookmarklet 要求你必須是從被稱為 \\\"內部\\\" 的電腦來檢視網站的 (如果你不確定\"\n\"你的電腦是否在 \\\"內部\\\"，那就和你的系統管理員談談)。</p>\\n\"\n\n#: templates/admin_doc/bookmarklets.html:25\nmsgid \"Documentation for this page\"\nmsgstr \"本頁面的文件\"\n\n#: templates/admin_doc/bookmarklets.html:26\nmsgid \"\"\n\"Jumps you from any page to the documentation for the view that generates \"\n\"that page.\"\nmsgstr \"讓你跳到用來產生該頁面之檢視的任何一頁文件。\"\n\n#: templates/admin_doc/bookmarklets.html:28\nmsgid \"Show object ID\"\nmsgstr \"顯示物件 ID\"\n\n#: templates/admin_doc/bookmarklets.html:29\nmsgid \"\"\n\"Shows the content-type and unique ID for pages that represent a single \"\n\"object.\"\nmsgstr \"顯示用來表示單一物件的頁面 content-type 與唯一 ID。\"\n\n#: templates/admin_doc/bookmarklets.html:31\nmsgid \"Edit this object (current window)\"\nmsgstr \"編輯此物件 (目前視窗)\"\n\n#: templates/admin_doc/bookmarklets.html:32\nmsgid \"Jumps to the admin page for pages that represent a single object.\"\nmsgstr \"跳到用來表示單一物件的管理頁面。\"\n\n#: templates/admin_doc/bookmarklets.html:34\nmsgid \"Edit this object (new window)\"\nmsgstr \"編輯此物件 (新視窗)\"\n\n#: templates/admin_doc/bookmarklets.html:35\nmsgid \"As above, but opens the admin page in a new window.\"\nmsgstr \"同上，但在新視窗裡開啟管理頁面。\"\n\n#: templates/admin_doc/model_detail.html:16\n#: templates/admin_doc/model_index.html:10\nmsgid \"Models\"\nmsgstr \"模型\"\n\n#: templates/admin_doc/template_detail.html:8\nmsgid \"Templates\"\nmsgstr \"模版\"\n\n#: templates/admin_doc/template_filter_index.html:9\nmsgid \"Filters\"\nmsgstr \"過濾器\"\n\n#: templates/admin_doc/template_tag_index.html:9\nmsgid \"Tags\"\nmsgstr \"標籤\"\n\n#: templates/admin_doc/view_detail.html:8\n#: templates/admin_doc/view_index.html:9\nmsgid \"Views\"\nmsgstr \"視圖\"\n\n#: tests/__init__.py:23\nmsgid \"Boolean (Either True or False)\"\nmsgstr \"布林值 (True 或 False)\"\n\n#: tests/__init__.py:33\n#, python-format\nmsgid \"Field of type: %(field_type)s\"\nmsgstr \"欄位型態： %(field_type)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/models.py",
    "content": "# Empty models.py to allow for specifying admindocs as a test label.\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/templates/admin_doc/bookmarklets.html",
    "content": "{% extends \"admin/base_site.html\" %}\n{% load i18n %}\n\n{% block breadcrumbs %}\n<div class=\"breadcrumbs\">\n<a href=\"{% url 'admin:index' %}\">{% trans 'Home' %}</a>\n&rsaquo; <a href=\"{% url 'django-admindocs-docroot' %}\">{% trans 'Documentation' %}</a>\n&rsaquo; {% trans 'Bookmarklets' %}\n</div>\n{% endblock %}\n{% block title %}{% trans \"Documentation bookmarklets\" %}{% endblock %}\n\n{% block content %}\n\n{% blocktrans %}\n<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\ntoolbar, or right-click the link and add it to your bookmarks. Now you can\nselect the bookmarklet from any page in the site.  Note that some of these\nbookmarklets require you to be viewing the site from a computer designated\nas \"internal\" (talk to your system administrator if you aren't sure if\nyour computer is \"internal\").</p>\n{% endblocktrans %}\n\n<div id=\"content-main\">\n    <h3><a href=\"javascript:(function(){if(typeof ActiveXObject!='undefined'){x=new ActiveXObject('Microsoft.XMLHTTP')}else if(typeof XMLHttpRequest!='undefined'){x=new XMLHttpRequest()}else{return;}x.open('HEAD',location.href,false);x.send(null);try{view=x.getResponseHeader('x-view');}catch(e){alert('No view found for this page');return;}if(view=='undefined'){alert('No view found for this page');}document.location='{{ admin_url|escapejs }}doc/views/'+view+'/';})()\">{% trans \"Documentation for this page\" %}</a></h3>\n    <p>{% trans \"Jumps you from any page to the documentation for the view that generates that page.\" %}</p>\n\n    <h3><a href=\"javascript:(function(){if(typeof ActiveXObject!='undefined'){x=new ActiveXObject('Microsoft.XMLHTTP')}else if(typeof XMLHttpRequest!='undefined'){x=new XMLHttpRequest()}else{return;}x.open('GET',location.href,false);x.send(null);try{type=x.getResponseHeader('x-object-type');id=x.getResponseHeader('x-object-id');}catch(e){type='(none)';id='(none)';}d=document;b=d.body;e=d.createElement('div');e.id='xxxhhh';s=e.style;s.position='absolute';s.left='10px';s.top='10px';s.font='10px monospace';s.border='1px black solid';s.padding='4px';s.backgroundColor='#eee';e.appendChild(d.createTextNode('Type: '+type));e.appendChild(d.createElement('br'));e.appendChild(d.createTextNode('ID: '+id));e.appendChild(d.createElement('br'));l=d.createElement('a');l.href='#';l.onclick=function(){b.removeChild(e);};l.appendChild(d.createTextNode('[close]'));l.style.textDecoration='none';e.appendChild(l);b.appendChild(e);})();\">{% trans \"Show object ID\" %}</a></h3>\n    <p>{% trans \"Shows the content-type and unique ID for pages that represent a single object.\" %}</p>\n\n    <h3><a href=\"javascript:(function(){if(typeof ActiveXObject!='undefined'){var x=new ActiveXObject('Microsoft.XMLHTTP')}else if(typeof XMLHttpRequest!='undefined'){var x=new XMLHttpRequest()}else{return;}x.open('GET',location.href,false);x.send(null);try{var type=x.getResponseHeader('x-object-type');var id=x.getResponseHeader('x-object-id');}catch(e){return;}document.location='{{ admin_url }}'+type.split('.').join('/')+'/'+id+'/';})()\">{% trans \"Edit this object (current window)\" %}</a></h3>\n    <p>{% trans \"Jumps to the admin page for pages that represent a single object.\" %}</p>\n\n    <h3><a href=\"javascript:(function(){if(typeof ActiveXObject!='undefined'){var x=new ActiveXObject('Microsoft.XMLHTTP')}else if(typeof XMLHttpRequest!='undefined'){var x=new XMLHttpRequest()}else{return;}x.open('GET',location.href,false);x.send(null);try{var type=x.getResponseHeader('x-object-type');var id=x.getResponseHeader('x-object-id');}catch(e){return;}window.open('{{ admin_url }}'+type.split('.').join('/')+'/'+id+'/');})()\">{% trans \"Edit this object (new window)\" %}</a></h3>\n    <p>{% trans \"As above, but opens the admin page in a new window.\" %}</p>\n</div>\n\n{% endblock %}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/templates/admin_doc/index.html",
    "content": "{% extends \"admin/base_site.html\" %}\n{% load i18n %}\n\n{% block breadcrumbs %}\n<div class=\"breadcrumbs\">\n<a href=\"{% url 'admin:index' %}\">{% trans 'Home' %}</a>\n&rsaquo; {% trans 'Documentation' %}</a>\n</div>\n{% endblock %}\n{% block title %}Documentation{% endblock %}\n\n{% block content %}\n\n<h1>Documentation</h1>\n\n<div id=\"content-main\">\n  <h3><a href=\"tags/\">Tags</a></h3>\n  <p>List of all the template tags and their functions.</p>\n\n  <h3><a href=\"filters/\">Filters</a></h3>\n  <p>Filters are actions which can be applied to variables in a template to alter the output.</p>\n\n  <h3><a href=\"models/\">Models</a></h3>\n  <p>Models are descriptions of all the objects in the system and their associated fields. Each model has a list of fields which can be accessed as template variables.</p>\n\n  <h3><a href=\"views/\">Views</a></h3>\n  <p>Each page on the public site is generated by a view. The view defines which template is used to generate the page and which objects are available to that template.</p>\n\n    <h3><a href=\"bookmarklets/\">Bookmarklets</a></h3>\n    <p>Tools for your browser to quickly access admin functionality.</p>\n</div>\n\n{% endblock %}\n\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/templates/admin_doc/missing_docutils.html",
    "content": "{% extends \"admin/base_site.html\" %}\n{% load i18n %}\n\n{% block breadcrumbs %}\n<div class=\"breadcrumbs\">\n<a href=\"{% url 'admin:index' %}\">{% trans 'Home' %}</a>\n&rsaquo; {% trans 'Documentation' %}</a>\n</div>\n{% endblock %}\n{% block title %}Please install docutils{% endblock %}\n\n{% block content %}\n\n<h1>Documentation</h1>\n\n<div id=\"content-main\">\n  <h3>The admin documentation system requires Python's <a href=\"http://docutils.sf.net/\">docutils</a> library.</h3>\n\n  <p>Please ask your administrators to install <a href=\"http://docutils.sf.net/\">docutils</a>.</p>\n</div>\n\n{% endblock %}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/templates/admin_doc/model_detail.html",
    "content": "{% extends \"admin/base_site.html\" %}\n{% load i18n %}\n\n{% block extrahead %}\n{{ block.super }}\n<style type=\"text/css\">\n.module table { width:100%; }\n.module table p { padding: 0; margin: 0; }\n</style>\n{% endblock %}\n\n{% block breadcrumbs %}\n<div class=\"breadcrumbs\">\n<a href=\"{% url 'admin:index' %}\">{% trans 'Home' %}</a>\n&rsaquo; <a href=\"{% url 'django-admindocs-docroot' %}\">{% trans 'Documentation' %}</a>\n&rsaquo; <a href=\"{% url 'django-admindocs-models-index' %}\">{% trans 'Models' %}</a>\n&rsaquo; {{ name }}\n</div>\n{% endblock %}\n\n{% block title %}Model: {{ name }}{% endblock %}\n\n{% block content %}\n<div id=\"content-main\">\n<h1>{{ summary }}</h1>\n\n{% if description %}\n  <p>{% filter linebreaksbr %}{% trans description %}{% endfilter %}</p>\n{% endif %}\n\n<div class=\"module\">\n<table class=\"model\">\n<thead>\n<tr>\n    <th>Field</th>\n    <th>Type</th>\n    <th>Description</th>\n</tr>\n</thead>\n<tbody>\n{% for field in fields|dictsort:\"name\" %}\n<tr>\n    <td>{{ field.name }}</td>\n    <td>{{ field.data_type }}</td>\n    <td>{{ field.verbose }}{% if field.help_text %} - {{ field.help_text|safe }}{% endif %}</td>\n</tr>\n{% endfor %}\n</tbody>\n</table>\n</div>\n\n<p class=\"small\"><a href=\"{% url 'django-admindocs-models-index' %}\">&lsaquo; Back to Models Documentation</a></p>\n</div>\n{% endblock %}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/templates/admin_doc/model_index.html",
    "content": "{% extends \"admin/base_site.html\" %}\n{% load i18n %}\n\n{% block coltype %}colSM{% endblock %}\n\n{% block breadcrumbs %}\n<div class=\"breadcrumbs\">\n<a href=\"{% url 'admin:index' %}\">{% trans 'Home' %}</a>\n&rsaquo; <a href=\"{% url 'django-admindocs-docroot' %}\">{% trans 'Documentation' %}</a>\n&rsaquo; {% trans 'Models' %}\n</div>\n{% endblock %}\n\n{% block title %}Models{% endblock %}\n\n{% block content %}\n\n<h1>Model documentation</h1>\n\n{% regroup models by app_label as grouped_models %}\n\n<div id=\"content-main\">\n{% for group in grouped_models %}\n<div class=\"module\">\n<h2 id=\"app-{{ group.grouper }}\">{{ group.grouper|capfirst }}</h2>\n\n<table class=\"xfull\">\n{% for model in group.list %}\n<tr>\n<th><a href=\"{% url 'django-admindocs-models-detail' app_label=model.app_label model_name=model.object_name.lower %}\">{{ model.object_name }}</a></th>\n</tr>\n{% endfor %}\n</table>\n</div>\n{% endfor %}\n\n</div>\n{% endblock %}\n\n{% block sidebar %}\n<div id=\"content-related\" class=\"sidebar\">\n<div class=\"module\">\n<h2>Model groups</h2>\n<ul>\n{% regroup models by app_label as grouped_models %}\n{% for group in grouped_models %}\n    <li><a href=\"#app-{{ group.grouper }}\">{{ group.grouper|capfirst }}</a></li>\n{% endfor %}\n</ul>\n</div>\n</div>\n{% endblock %}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/templates/admin_doc/template_detail.html",
    "content": "{% extends \"admin/base_site.html\" %}\n{% load i18n %}\n\n{% block breadcrumbs %}\n<div class=\"breadcrumbs\">\n<a href=\"{% url 'admin:index' %}\">{% trans 'Home' %}</a>\n&rsaquo; <a href=\"{% url 'django-admindocs-docroot' %}\">{% trans 'Documentation' %}</a>\n&rsaquo; {% trans 'Templates' %}\n&rsaquo; {{ name }}\n</div>\n{% endblock %}\n\n{% block title %}Template: {{ name }}{% endblock %}\n\n{% block content %}\n<h1>Template: \"{{ name }}\"</h1>\n\n{% regroup templates|dictsort:\"site_id\" by site as templates_by_site %}\n{% for group in templates_by_site %}\n    <h2>Search path for template \"{{ name }}\" on {{ group.grouper }}:</h2>\n    <ol>\n    {% for template in group.list|dictsort:\"order\" %}\n        <li><code>{{ template.file }}</code>{% if not template.exists %} <em>(does not exist)</em>{% endif %}</li>\n    {% endfor %}\n    </ol>\n{% endfor %}\n\n<p class=\"small\"><a href=\"{% url 'django-admindocs-docroot' %}\">&lsaquo; Back to Documentation</a></p>\n{% endblock %}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/templates/admin_doc/template_filter_index.html",
    "content": "{% extends \"admin/base_site.html\" %}\n{% load i18n %}\n\n{% block coltype %}colSM{% endblock %}\n{% block breadcrumbs %}\n<div class=\"breadcrumbs\">\n<a href=\"{% url 'admin:index' %}\">{% trans 'Home' %}</a>\n&rsaquo; <a href=\"{% url 'django-admindocs-docroot' %}\">{% trans 'Documentation' %}</a>\n&rsaquo; {% trans 'Filters' %}\n</div>\n{% endblock %}\n{% block title %}Template filters{% endblock %}\n\n{% block content %}\n\n<h1>Template filter documentation</h1>\n\n<div id=\"content-main\">\n{% regroup filters|dictsort:\"library\" by library as filter_libraries %}\n{% for library in filter_libraries %}\n<div class=\"module\">\n    <h2>{% firstof library.grouper \"Built-in filters\" %}</h2>\n    {% if library.grouper %}<p class=\"small quiet\">To use these filters, put <code>{% templatetag openblock %} load {{ library.grouper }} {% templatetag closeblock %}</code> in your template before using the filter.</p><hr />{% endif %}\n    {% for filter in library.list|dictsort:\"name\" %}\n    <h3 id=\"{{ library.grouper|default:\"built_in\" }}-{{ filter.name }}\">{{ filter.name }}</h3>\n    {{ filter.title }}\n    {{ filter.body }}\n    {% if not forloop.last %}<hr />{% endif %}\n    {% endfor %}\n</div>\n{% endfor %}\n</div>\n\n{% endblock %}\n\n{% block sidebar %}\n\n<div id=\"content-related\">\n\n{% regroup filters|dictsort:\"library\" by library as filter_libraries %}\n{% for library in filter_libraries %}\n<div class=\"module\">\n    <h2>{% firstof library.grouper \"Built-in filters\" %}</h2>\n    <ul>\n    {% for filter in library.list|dictsort:\"name\" %}\n        <li><a href=\"#{{ library.grouper|default:\"built_in\" }}-{{ filter.name }}\">{{ filter.name }}</a></li>\n    {% endfor %}\n    </ul>\n</div>\n{% endfor %}\n\n</div>\n\n{% endblock %}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/templates/admin_doc/template_tag_index.html",
    "content": "{% extends \"admin/base_site.html\" %}\n{% load i18n %}\n\n{% block coltype %}colSM{% endblock %}\n{% block breadcrumbs %}\n<div class=\"breadcrumbs\">\n<a href=\"{% url 'admin:index' %}\">{% trans 'Home' %}</a>\n&rsaquo; <a href=\"{% url 'django-admindocs-docroot' %}\">{% trans 'Documentation' %}</a>\n&rsaquo; {% trans 'Tags' %}\n</div>\n{% endblock %}\n{% block title %}Template tags{% endblock %}\n\n{% block content %}\n\n<h1>Template tag documentation</h1>\n\n<div id=\"content-main\">\n{% regroup tags|dictsort:\"library\" by library as tag_libraries %}\n{% for library in tag_libraries %}\n<div class=\"module\">\n    <h2>{% firstof library.grouper \"Built-in tags\" %}</h2>\n    {% if library.grouper %}<p class=\"small quiet\">To use these tags, put <code>{% templatetag openblock %} load {{ library.grouper }} {% templatetag closeblock %}</code> in your template before using the tag.</p><hr />{% endif %}\n    {% for tag in library.list|dictsort:\"name\" %}\n    <h3 id=\"{{ library.grouper|default:\"built_in\" }}-{{ tag.name }}\">{{ tag.name }}</h3>\n    <h4>{{ tag.title|striptags }}</h4>\n    {{ tag.body }}\n    {% if not forloop.last %}<hr />{% endif %}\n    {% endfor %}\n</div>\n{% endfor %}\n</div>\n\n{% endblock %}\n\n{% block sidebar %}\n\n<div id=\"content-related\">\n\n{% regroup tags|dictsort:\"library\" by library as tag_libraries %}\n{% for library in tag_libraries %}\n<div class=\"module\">\n    <h2>{% firstof library.grouper \"Built-in tags\" %}</h2>\n    <ul>\n    {% for tag in library.list|dictsort:\"name\" %}\n        <li><a href=\"#{{ library.grouper|default:\"built_in\" }}-{{ tag.name }}\">{{ tag.name }}</a></li>\n    {% endfor %}\n    </ul>\n</div>\n{% endfor %}\n\n</div>\n\n{% endblock %}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/templates/admin_doc/view_detail.html",
    "content": "{% extends \"admin/base_site.html\" %}\n{% load i18n %}\n\n{% block breadcrumbs %}\n<div class=\"breadcrumbs\">\n<a href=\"{% url 'admin:index' %}\">{% trans 'Home' %}</a>\n&rsaquo; <a href=\"{% url 'django-admindocs-docroot' %}\">{% trans 'Documentation' %}</a>\n&rsaquo; <a href=\"{% url 'django-admindocs-views-index' %}\">{% trans 'Views' %}</a>\n&rsaquo; {{ name }}\n</div>\n{% endblock %}\n{% block title %}View: {{ name }}{% endblock %}\n\n{% block content %}\n\n<h1>{{ name }}</h1>\n\n<h2 class=\"subhead\">{{ summary|striptags }}</h2>\n\n{{ body }}\n\n{% if meta.Context %}\n<h3>Context:</h3>\n<p>{{ meta.Context }}</p>\n{% endif %}\n\n{% if meta.Templates %}\n<h3>Templates:</h3>\n<p>{{ meta.Templates }}</p>\n{% endif %}\n\n<p class=\"small\"><a href=\"{% url 'django-admindocs-views-index' %}\">&lsaquo; Back to Views Documentation</a></p>\n{% endblock %}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/templates/admin_doc/view_index.html",
    "content": "{% extends \"admin/base_site.html\" %}\n{% load i18n %}\n\n{% block coltype %}colSM{% endblock %}\n{% block breadcrumbs %}\n<div class=\"breadcrumbs\">\n<a href=\"{% url 'admin:index' %}\">{% trans 'Home' %}</a>\n&rsaquo; <a href=\"{% url 'django-admindocs-docroot' %}\">{% trans 'Documentation' %}</a>\n&rsaquo; {% trans 'Views' %}\n</div>\n{% endblock %}\n{% block title %}Views{% endblock %}\n\n{% block content %}\n\n<h1>View documentation</h1>\n\n{% regroup views|dictsort:\"site_id\" by site as views_by_site %}\n\n<div id=\"content-related\" class=\"sidebar\">\n<div class=\"module\">\n<h2>Jump to site</h2>\n<ul>\n    {% for site_views in views_by_site %}\n    <li><a href=\"#site{{ site_views.grouper.id }}\">{{ site_views.grouper.name }}</a></li>\n    {% endfor %}\n</ul>\n</div>\n</div>\n\n<div id=\"content-main\">\n\n{% for site_views in views_by_site %}\n<div class=\"module\">\n<h2 id=\"site{{ site_views.grouper.id }}\">Views by URL on {{ site_views.grouper.name }}</h2>\n\n{% for view in site_views.list|dictsort:\"url\" %}\n{% ifchanged %}\n<h3><a href=\"{% url 'django-admindocs-views-detail' view=view.full_name %}\">{{ view.url }}</a></h3>\n<p class=\"small quiet\">View function: {{ view.full_name }}</p>\n<p>{{ view.title }}</p>\n<hr />\n{% endifchanged %}\n{% endfor %}\n</div>\n{% endfor %}\n</div>\n{% endblock %}\n\n\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/tests/__init__.py",
    "content": "from __future__ import absolute_import, unicode_literals\n\nfrom django.contrib.admindocs import views\nfrom django.db.models import fields as builtin_fields\nfrom django.utils import unittest\nfrom django.utils.translation import ugettext as _\n\nfrom . import fields\n\n\nclass TestFieldType(unittest.TestCase):\n    def setUp(self):\n        pass\n\n    def test_field_name(self):\n        self.assertRaises(AttributeError,\n            views.get_readable_field_data_type, \"NotAField\"\n        )\n\n    def test_builtin_fields(self):\n        self.assertEqual(\n            views.get_readable_field_data_type(builtin_fields.BooleanField()),\n            _('Boolean (Either True or False)')\n        )\n\n    def test_custom_fields(self):\n        self.assertEqual(\n            views.get_readable_field_data_type(fields.CustomField()),\n            'A custom field type'\n        )\n        self.assertEqual(\n            views.get_readable_field_data_type(fields.DescriptionLackingField()),\n            _('Field of type: %(field_type)s') % {\n                'field_type': 'DescriptionLackingField'\n            }\n        )\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/tests/fields.py",
    "content": "from django.db import models\n\nclass CustomField(models.Field):\n    description = \"A custom field type\"\n\nclass DescriptionLackingField(models.Field):\n    pass\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/urls.py",
    "content": "from django.conf.urls import patterns, url\nfrom django.contrib.admindocs import views\n\nurlpatterns = patterns('',\n    url('^$',\n        views.doc_index,\n        name='django-admindocs-docroot'\n    ),\n    url('^bookmarklets/$',\n        views.bookmarklets,\n        name='django-admindocs-bookmarklets'\n    ),\n    url('^tags/$',\n        views.template_tag_index,\n        name='django-admindocs-tags'\n    ),\n    url('^filters/$',\n        views.template_filter_index,\n        name='django-admindocs-filters'\n    ),\n    url('^views/$',\n        views.view_index,\n        name='django-admindocs-views-index'\n    ),\n    url('^views/(?P<view>[^/]+)/$',\n        views.view_detail,\n        name='django-admindocs-views-detail'\n    ),\n    url('^models/$',\n        views.model_index,\n        name='django-admindocs-models-index'\n    ),\n    url('^models/(?P<app_label>[^\\.]+)\\.(?P<model_name>[^/]+)/$',\n        views.model_detail,\n        name='django-admindocs-models-detail'\n    ),\n    url('^templates/(?P<template>.*)/$',\n        views.template_detail,\n        name='django-admindocs-templates'\n    ),\n)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/utils.py",
    "content": "\"Misc. utility functions/classes for admin documentation generator.\"\n\nimport re\nfrom email.parser import HeaderParser\nfrom email.errors import HeaderParseError\n\nfrom django.utils.safestring import mark_safe\nfrom django.core.urlresolvers import reverse\nfrom django.utils.encoding import force_bytes\ntry:\n    import docutils.core\n    import docutils.nodes\n    import docutils.parsers.rst.roles\nexcept ImportError:\n    docutils_is_available = False\nelse:\n    docutils_is_available = True\n\ndef trim_docstring(docstring):\n    \"\"\"\n    Uniformly trims leading/trailing whitespace from docstrings.\n\n    Based on http://www.python.org/peps/pep-0257.html#handling-docstring-indentation\n    \"\"\"\n    if not docstring or not docstring.strip():\n        return ''\n    # Convert tabs to spaces and split into lines\n    lines = docstring.expandtabs().splitlines()\n    indent = min([len(line) - len(line.lstrip()) for line in lines if line.lstrip()])\n    trimmed = [lines[0].lstrip()] + [line[indent:].rstrip() for line in lines[1:]]\n    return \"\\n\".join(trimmed).strip()\n\ndef parse_docstring(docstring):\n    \"\"\"\n    Parse out the parts of a docstring.  Returns (title, body, metadata).\n    \"\"\"\n    docstring = trim_docstring(docstring)\n    parts = re.split(r'\\n{2,}', docstring)\n    title = parts[0]\n    if len(parts) == 1:\n        body = ''\n        metadata = {}\n    else:\n        parser = HeaderParser()\n        try:\n            metadata = parser.parsestr(parts[-1])\n        except HeaderParseError:\n            metadata = {}\n            body = \"\\n\\n\".join(parts[1:])\n        else:\n            metadata = dict(metadata.items())\n            if metadata:\n                body = \"\\n\\n\".join(parts[1:-1])\n            else:\n                body = \"\\n\\n\".join(parts[1:])\n    return title, body, metadata\n\ndef parse_rst(text, default_reference_context, thing_being_parsed=None):\n    \"\"\"\n    Convert the string from reST to an XHTML fragment.\n    \"\"\"\n    overrides = {\n        'doctitle_xform' : True,\n        'inital_header_level' : 3,\n        \"default_reference_context\" : default_reference_context,\n        \"link_base\" : reverse('django-admindocs-docroot').rstrip('/')\n    }\n    if thing_being_parsed:\n        thing_being_parsed = force_bytes(\"<%s>\" % thing_being_parsed)\n    parts = docutils.core.publish_parts(text, source_path=thing_being_parsed,\n                destination_path=None, writer_name='html',\n                settings_overrides=overrides)\n    return mark_safe(parts['fragment'])\n\n#\n# reST roles\n#\nROLES = {\n    'model'    : '%s/models/%s/',\n    'view'     : '%s/views/%s/',\n    'template' : '%s/templates/%s/',\n    'filter'   : '%s/filters/#%s',\n    'tag'      : '%s/tags/#%s',\n}\n\ndef create_reference_role(rolename, urlbase):\n    def _role(name, rawtext, text, lineno, inliner, options=None, content=None):\n        if options is None: options = {}\n        if content is None: content = []\n        node = docutils.nodes.reference(rawtext, text, refuri=(urlbase % (inliner.document.settings.link_base, text.lower())), **options)\n        return [node], []\n    docutils.parsers.rst.roles.register_canonical_role(rolename, _role)\n\ndef default_reference_role(name, rawtext, text, lineno, inliner, options=None, content=None):\n    if options is None: options = {}\n    if content is None: content = []\n    context = inliner.document.settings.default_reference_context\n    node = docutils.nodes.reference(rawtext, text, refuri=(ROLES[context] % (inliner.document.settings.link_base, text.lower())), **options)\n    return [node], []\n\nif docutils_is_available:\n    docutils.parsers.rst.roles.register_canonical_role('cmsreference', default_reference_role)\n    docutils.parsers.rst.roles.DEFAULT_INTERPRETED_ROLE = 'cmsreference'\n\n    for name, urlbase in ROLES.items():\n        create_reference_role(name, urlbase)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/admindocs/views.py",
    "content": "import inspect\nimport os\nimport re\n\nfrom django import template\nfrom django.template import RequestContext\nfrom django.conf import settings\nfrom django.contrib.admin.views.decorators import staff_member_required\nfrom django.db import models\nfrom django.shortcuts import render_to_response\nfrom django.core.exceptions import ImproperlyConfigured, ViewDoesNotExist\nfrom django.http import Http404\nfrom django.core import urlresolvers\nfrom django.contrib.admindocs import utils\nfrom django.contrib.sites.models import Site\nfrom django.utils.importlib import import_module\nfrom django.utils._os import upath\nfrom django.utils import six\nfrom django.utils.translation import ugettext as _\nfrom django.utils.safestring import mark_safe\n\n# Exclude methods starting with these strings from documentation\nMODEL_METHODS_EXCLUDE = ('_', 'add_', 'delete', 'save', 'set_')\n\nclass GenericSite(object):\n    domain = 'example.com'\n    name = 'my site'\n\n@staff_member_required\ndef doc_index(request):\n    if not utils.docutils_is_available:\n        return missing_docutils_page(request)\n    return render_to_response('admin_doc/index.html', {\n        'root_path': urlresolvers.reverse('admin:index'),\n    }, context_instance=RequestContext(request))\n\n@staff_member_required\ndef bookmarklets(request):\n    admin_root = urlresolvers.reverse('admin:index')\n    return render_to_response('admin_doc/bookmarklets.html', {\n        'root_path': admin_root,\n        'admin_url': \"%s://%s%s\" % (request.is_secure() and 'https' or 'http', request.get_host(), admin_root),\n    }, context_instance=RequestContext(request))\n\n@staff_member_required\ndef template_tag_index(request):\n    if not utils.docutils_is_available:\n        return missing_docutils_page(request)\n\n    load_all_installed_template_libraries()\n\n    tags = []\n    app_libs = list(six.iteritems(template.libraries))\n    builtin_libs = [(None, lib) for lib in template.builtins]\n    for module_name, library in builtin_libs + app_libs:\n        for tag_name, tag_func in library.tags.items():\n            title, body, metadata = utils.parse_docstring(tag_func.__doc__)\n            if title:\n                title = utils.parse_rst(title, 'tag', _('tag:') + tag_name)\n            if body:\n                body = utils.parse_rst(body, 'tag', _('tag:') + tag_name)\n            for key in metadata:\n                metadata[key] = utils.parse_rst(metadata[key], 'tag', _('tag:') + tag_name)\n            if library in template.builtins:\n                tag_library = ''\n            else:\n                tag_library = module_name.split('.')[-1]\n            tags.append({\n                'name': tag_name,\n                'title': title,\n                'body': body,\n                'meta': metadata,\n                'library': tag_library,\n            })\n    return render_to_response('admin_doc/template_tag_index.html', {\n        'root_path': urlresolvers.reverse('admin:index'),\n        'tags': tags\n    }, context_instance=RequestContext(request))\n\n@staff_member_required\ndef template_filter_index(request):\n    if not utils.docutils_is_available:\n        return missing_docutils_page(request)\n\n    load_all_installed_template_libraries()\n\n    filters = []\n    app_libs = list(six.iteritems(template.libraries))\n    builtin_libs = [(None, lib) for lib in template.builtins]\n    for module_name, library in builtin_libs + app_libs:\n        for filter_name, filter_func in library.filters.items():\n            title, body, metadata = utils.parse_docstring(filter_func.__doc__)\n            if title:\n                title = utils.parse_rst(title, 'filter', _('filter:') + filter_name)\n            if body:\n                body = utils.parse_rst(body, 'filter', _('filter:') + filter_name)\n            for key in metadata:\n                metadata[key] = utils.parse_rst(metadata[key], 'filter', _('filter:') + filter_name)\n            if library in template.builtins:\n                tag_library = ''\n            else:\n                tag_library = module_name.split('.')[-1]\n            filters.append({\n                'name': filter_name,\n                'title': title,\n                'body': body,\n                'meta': metadata,\n                'library': tag_library,\n            })\n    return render_to_response('admin_doc/template_filter_index.html', {\n        'root_path': urlresolvers.reverse('admin:index'),\n        'filters': filters\n    }, context_instance=RequestContext(request))\n\n@staff_member_required\ndef view_index(request):\n    if not utils.docutils_is_available:\n        return missing_docutils_page(request)\n\n    if settings.ADMIN_FOR:\n        settings_modules = [import_module(m) for m in settings.ADMIN_FOR]\n    else:\n        settings_modules = [settings]\n\n    views = []\n    for settings_mod in settings_modules:\n        urlconf = import_module(settings_mod.ROOT_URLCONF)\n        view_functions = extract_views_from_urlpatterns(urlconf.urlpatterns)\n        if Site._meta.installed:\n            site_obj = Site.objects.get(pk=settings_mod.SITE_ID)\n        else:\n            site_obj = GenericSite()\n        for (func, regex) in view_functions:\n            views.append({\n                'full_name': '%s.%s' % (func.__module__, getattr(func, '__name__', func.__class__.__name__)),\n                'site_id': settings_mod.SITE_ID,\n                'site': site_obj,\n                'url': simplify_regex(regex),\n            })\n    return render_to_response('admin_doc/view_index.html', {\n        'root_path': urlresolvers.reverse('admin:index'),\n        'views': views\n    }, context_instance=RequestContext(request))\n\n@staff_member_required\ndef view_detail(request, view):\n    if not utils.docutils_is_available:\n        return missing_docutils_page(request)\n\n    mod, func = urlresolvers.get_mod_func(view)\n    try:\n        view_func = getattr(import_module(mod), func)\n    except (ImportError, AttributeError):\n        raise Http404\n    title, body, metadata = utils.parse_docstring(view_func.__doc__)\n    if title:\n        title = utils.parse_rst(title, 'view', _('view:') + view)\n    if body:\n        body = utils.parse_rst(body, 'view', _('view:') + view)\n    for key in metadata:\n        metadata[key] = utils.parse_rst(metadata[key], 'model', _('view:') + view)\n    return render_to_response('admin_doc/view_detail.html', {\n        'root_path': urlresolvers.reverse('admin:index'),\n        'name': view,\n        'summary': title,\n        'body': body,\n        'meta': metadata,\n    }, context_instance=RequestContext(request))\n\n@staff_member_required\ndef model_index(request):\n    if not utils.docutils_is_available:\n        return missing_docutils_page(request)\n    m_list = [m._meta for m in models.get_models()]\n    return render_to_response('admin_doc/model_index.html', {\n        'root_path': urlresolvers.reverse('admin:index'),\n        'models': m_list\n    }, context_instance=RequestContext(request))\n\n@staff_member_required\ndef model_detail(request, app_label, model_name):\n    if not utils.docutils_is_available:\n        return missing_docutils_page(request)\n\n    # Get the model class.\n    try:\n        app_mod = models.get_app(app_label)\n    except ImproperlyConfigured:\n        raise Http404(_(\"App %r not found\") % app_label)\n    model = None\n    for m in models.get_models(app_mod):\n        if m._meta.object_name.lower() == model_name:\n            model = m\n            break\n    if model is None:\n        raise Http404(_(\"Model %(model_name)r not found in app %(app_label)r\") % {'model_name': model_name, 'app_label': app_label})\n\n    opts = model._meta\n\n    # Gather fields/field descriptions.\n    fields = []\n    for field in opts.fields:\n        # ForeignKey is a special case since the field will actually be a\n        # descriptor that returns the other object\n        if isinstance(field, models.ForeignKey):\n            data_type = field.rel.to.__name__\n            app_label = field.rel.to._meta.app_label\n            verbose = utils.parse_rst((_(\"the related `%(app_label)s.%(data_type)s` object\")  % {'app_label': app_label, 'data_type': data_type}), 'model', _('model:') + data_type)\n        else:\n            data_type = get_readable_field_data_type(field)\n            verbose = field.verbose_name\n        fields.append({\n            'name': field.name,\n            'data_type': data_type,\n            'verbose': verbose,\n            'help_text': field.help_text,\n        })\n\n    # Gather many-to-many fields.\n    for field in opts.many_to_many:\n        data_type = field.rel.to.__name__\n        app_label = field.rel.to._meta.app_label\n        verbose = _(\"related `%(app_label)s.%(object_name)s` objects\") % {'app_label': app_label, 'object_name': data_type}\n        fields.append({\n            'name': \"%s.all\" % field.name,\n            \"data_type\": 'List',\n            'verbose': utils.parse_rst(_(\"all %s\") % verbose , 'model', _('model:') + opts.module_name),\n        })\n        fields.append({\n            'name'      : \"%s.count\" % field.name,\n            'data_type' : 'Integer',\n            'verbose'   : utils.parse_rst(_(\"number of %s\") % verbose , 'model', _('model:') + opts.module_name),\n        })\n\n    # Gather model methods.\n    for func_name, func in model.__dict__.items():\n        if (inspect.isfunction(func) and len(inspect.getargspec(func)[0]) == 1):\n            try:\n                for exclude in MODEL_METHODS_EXCLUDE:\n                    if func_name.startswith(exclude):\n                        raise StopIteration\n            except StopIteration:\n                continue\n            verbose = func.__doc__\n            if verbose:\n                verbose = utils.parse_rst(utils.trim_docstring(verbose), 'model', _('model:') + opts.module_name)\n            fields.append({\n                'name': func_name,\n                'data_type': get_return_data_type(func_name),\n                'verbose': verbose,\n            })\n\n    # Gather related objects\n    for rel in opts.get_all_related_objects() + opts.get_all_related_many_to_many_objects():\n        verbose = _(\"related `%(app_label)s.%(object_name)s` objects\") % {'app_label': rel.opts.app_label, 'object_name': rel.opts.object_name}\n        accessor = rel.get_accessor_name()\n        fields.append({\n            'name'      : \"%s.all\" % accessor,\n            'data_type' : 'List',\n            'verbose'   : utils.parse_rst(_(\"all %s\") % verbose , 'model', _('model:') + opts.module_name),\n        })\n        fields.append({\n            'name'      : \"%s.count\" % accessor,\n            'data_type' : 'Integer',\n            'verbose'   : utils.parse_rst(_(\"number of %s\") % verbose , 'model', _('model:') + opts.module_name),\n        })\n    return render_to_response('admin_doc/model_detail.html', {\n        'root_path': urlresolvers.reverse('admin:index'),\n        'name': '%s.%s' % (opts.app_label, opts.object_name),\n        'summary': _(\"Fields on %s objects\") % opts.object_name,\n        'description': model.__doc__,\n        'fields': fields,\n    }, context_instance=RequestContext(request))\n\n@staff_member_required\ndef template_detail(request, template):\n    templates = []\n    for site_settings_module in settings.ADMIN_FOR:\n        settings_mod = import_module(site_settings_module)\n        if Site._meta.installed:\n            site_obj = Site.objects.get(pk=settings_mod.SITE_ID)\n        else:\n            site_obj = GenericSite()\n        for dir in settings_mod.TEMPLATE_DIRS:\n            template_file = os.path.join(dir, template)\n            templates.append({\n                'file': template_file,\n                'exists': os.path.exists(template_file),\n                'contents': lambda: os.path.exists(template_file) and open(template_file).read() or '',\n                'site_id': settings_mod.SITE_ID,\n                'site': site_obj,\n                'order': list(settings_mod.TEMPLATE_DIRS).index(dir),\n            })\n    return render_to_response('admin_doc/template_detail.html', {\n        'root_path': urlresolvers.reverse('admin:index'),\n        'name': template,\n        'templates': templates,\n    }, context_instance=RequestContext(request))\n\n####################\n# Helper functions #\n####################\n\ndef missing_docutils_page(request):\n    \"\"\"Display an error message for people without docutils\"\"\"\n    return render_to_response('admin_doc/missing_docutils.html')\n\ndef load_all_installed_template_libraries():\n    # Load/register all template tag libraries from installed apps.\n    for module_name in template.get_templatetags_modules():\n        mod = import_module(module_name)\n        try:\n            libraries = [\n                os.path.splitext(p)[0]\n                for p in os.listdir(os.path.dirname(upath(mod.__file__)))\n                if p.endswith('.py') and p[0].isalpha()\n            ]\n        except OSError:\n            libraries = []\n        for library_name in libraries:\n            try:\n                lib = template.get_library(library_name)\n            except template.InvalidTemplateLibrary:\n                pass\n\ndef get_return_data_type(func_name):\n    \"\"\"Return a somewhat-helpful data type given a function name\"\"\"\n    if func_name.startswith('get_'):\n        if func_name.endswith('_list'):\n            return 'List'\n        elif func_name.endswith('_count'):\n            return 'Integer'\n    return ''\n\ndef get_readable_field_data_type(field):\n    \"\"\"Returns the description for a given field type, if it exists,\n    Fields' descriptions can contain format strings, which will be interpolated\n    against the values of field.__dict__ before being output.\"\"\"\n\n    return field.description % field.__dict__\n\ndef extract_views_from_urlpatterns(urlpatterns, base=''):\n    \"\"\"\n    Return a list of views from a list of urlpatterns.\n\n    Each object in the returned list is a two-tuple: (view_func, regex)\n    \"\"\"\n    views = []\n    for p in urlpatterns:\n        if hasattr(p, 'url_patterns'):\n            try:\n                patterns = p.url_patterns\n            except ImportError:\n                continue\n            views.extend(extract_views_from_urlpatterns(patterns, base + p.regex.pattern))\n        elif hasattr(p, 'callback'):\n            try:\n                views.append((p.callback, base + p.regex.pattern))\n            except ViewDoesNotExist:\n                continue\n        else:\n            raise TypeError(_(\"%s does not appear to be a urlpattern object\") % p)\n    return views\n\nnamed_group_matcher = re.compile(r'\\(\\?P(<\\w+>).+?\\)')\nnon_named_group_matcher = re.compile(r'\\(.*?\\)')\n\ndef simplify_regex(pattern):\n    \"\"\"\n    Clean up urlpattern regexes into something somewhat readable by Mere Humans:\n    turns something like \"^(?P<sport_slug>\\w+)/athletes/(?P<athlete_slug>\\w+)/$\"\n    into \"<sport_slug>/athletes/<athlete_slug>/\"\n    \"\"\"\n    # handle named groups first\n    pattern = named_group_matcher.sub(lambda m: m.group(1), pattern)\n\n    # handle non-named groups\n    pattern = non_named_group_matcher.sub(\"<var>\", pattern)\n\n    # clean up any outstanding regex-y characters.\n    pattern = pattern.replace('^', '').replace('$', '').replace('?', '').replace('//', '/').replace('\\\\', '')\n    if not pattern.startswith('/'):\n        pattern = '/' + pattern\n    return pattern\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/__init__.py",
    "content": "import re\n\nfrom django.core.exceptions import ImproperlyConfigured\nfrom django.utils.importlib import import_module\nfrom django.contrib.auth.signals import user_logged_in, user_logged_out, user_login_failed\n\nSESSION_KEY = '_auth_user_id'\nBACKEND_SESSION_KEY = '_auth_user_backend'\nREDIRECT_FIELD_NAME = 'next'\n\n\ndef load_backend(path):\n    i = path.rfind('.')\n    module, attr = path[:i], path[i + 1:]\n    try:\n        mod = import_module(module)\n    except ImportError as e:\n        raise ImproperlyConfigured('Error importing authentication backend %s: \"%s\"' % (path, e))\n    except ValueError:\n        raise ImproperlyConfigured('Error importing authentication backends. Is AUTHENTICATION_BACKENDS a correctly defined list or tuple?')\n    try:\n        cls = getattr(mod, attr)\n    except AttributeError:\n        raise ImproperlyConfigured('Module \"%s\" does not define a \"%s\" authentication backend' % (module, attr))\n    return cls()\n\n\ndef get_backends():\n    from django.conf import settings\n    backends = []\n    for backend_path in settings.AUTHENTICATION_BACKENDS:\n        backends.append(load_backend(backend_path))\n    if not backends:\n        raise ImproperlyConfigured('No authentication backends have been defined. Does AUTHENTICATION_BACKENDS contain anything?')\n    return backends\n\n\ndef _clean_credentials(credentials):\n    \"\"\"\n    Cleans a dictionary of credentials of potentially sensitive info before\n    sending to less secure functions.\n\n    Not comprehensive - intended for user_login_failed signal\n    \"\"\"\n    SENSITIVE_CREDENTIALS = re.compile('api|token|key|secret|password|signature', re.I)\n    CLEANSED_SUBSTITUTE = '********************'\n    for key in credentials:\n        if SENSITIVE_CREDENTIALS.search(key):\n            credentials[key] = CLEANSED_SUBSTITUTE\n    return credentials\n\n\ndef authenticate(**credentials):\n    \"\"\"\n    If the given credentials are valid, return a User object.\n    \"\"\"\n    for backend in get_backends():\n        try:\n            user = backend.authenticate(**credentials)\n        except TypeError:\n            # This backend doesn't accept these credentials as arguments. Try the next one.\n            continue\n        if user is None:\n            continue\n        # Annotate the user object with the path of the backend.\n        user.backend = \"%s.%s\" % (backend.__module__, backend.__class__.__name__)\n        return user\n\n    # The credentials supplied are invalid to all backends, fire signal\n    user_login_failed.send(sender=__name__,\n            credentials=_clean_credentials(credentials))\n\n\ndef login(request, user):\n    \"\"\"\n    Persist a user id and a backend in the request. This way a user doesn't\n    have to reauthenticate on every request. Note that data set during\n    the anonymous session is retained when the user logs in.\n    \"\"\"\n    if user is None:\n        user = request.user\n    # TODO: It would be nice to support different login methods, like signed cookies.\n    if SESSION_KEY in request.session:\n        if request.session[SESSION_KEY] != user.pk:\n            # To avoid reusing another user's session, create a new, empty\n            # session if the existing session corresponds to a different\n            # authenticated user.\n            request.session.flush()\n    else:\n        request.session.cycle_key()\n    request.session[SESSION_KEY] = user.pk\n    request.session[BACKEND_SESSION_KEY] = user.backend\n    if hasattr(request, 'user'):\n        request.user = user\n    user_logged_in.send(sender=user.__class__, request=request, user=user)\n\n\ndef logout(request):\n    \"\"\"\n    Removes the authenticated user's ID from the request and flushes their\n    session data.\n    \"\"\"\n    # Dispatch the signal before the user is logged out so the receivers have a\n    # chance to find out *who* logged out.\n    user = getattr(request, 'user', None)\n    if hasattr(user, 'is_authenticated') and not user.is_authenticated():\n        user = None\n    user_logged_out.send(sender=user.__class__, request=request, user=user)\n\n    request.session.flush()\n    if hasattr(request, 'user'):\n        from django.contrib.auth.models import AnonymousUser\n        request.user = AnonymousUser()\n\n\ndef get_user_model():\n    \"Return the User model that is active in this project\"\n    from django.conf import settings\n    from django.db.models import get_model\n\n    try:\n        app_label, model_name = settings.AUTH_USER_MODEL.split('.')\n    except ValueError:\n        raise ImproperlyConfigured(\"AUTH_USER_MODEL must be of the form 'app_label.model_name'\")\n    user_model = get_model(app_label, model_name)\n    if user_model is None:\n        raise ImproperlyConfigured(\"AUTH_USER_MODEL refers to model '%s' that has not been installed\" % settings.AUTH_USER_MODEL)\n    return user_model\n\n\ndef get_user(request):\n    from django.contrib.auth.models import AnonymousUser\n    try:\n        user_id = request.session[SESSION_KEY]\n        backend_path = request.session[BACKEND_SESSION_KEY]\n        backend = load_backend(backend_path)\n        user = backend.get_user(user_id) or AnonymousUser()\n    except KeyError:\n        user = AnonymousUser()\n    return user\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/admin.py",
    "content": "from django.db import transaction\nfrom django.conf import settings\nfrom django.contrib import admin\nfrom django.contrib.auth.forms import (UserCreationForm, UserChangeForm,\n    AdminPasswordChangeForm)\nfrom django.contrib.auth.models import User, Group\nfrom django.contrib import messages\nfrom django.core.exceptions import PermissionDenied\nfrom django.http import HttpResponseRedirect, Http404\nfrom django.shortcuts import get_object_or_404\nfrom django.template.response import TemplateResponse\nfrom django.utils.html import escape\nfrom django.utils.decorators import method_decorator\nfrom django.utils.translation import ugettext, ugettext_lazy as _\nfrom django.views.decorators.csrf import csrf_protect\nfrom django.views.decorators.debug import sensitive_post_parameters\n\ncsrf_protect_m = method_decorator(csrf_protect)\n\n\nclass GroupAdmin(admin.ModelAdmin):\n    search_fields = ('name',)\n    ordering = ('name',)\n    filter_horizontal = ('permissions',)\n\n    def formfield_for_manytomany(self, db_field, request=None, **kwargs):\n        if db_field.name == 'permissions':\n            qs = kwargs.get('queryset', db_field.rel.to.objects)\n            # Avoid a major performance hit resolving permission names which\n            # triggers a content_type load:\n            kwargs['queryset'] = qs.select_related('content_type')\n        return super(GroupAdmin, self).formfield_for_manytomany(\n            db_field, request=request, **kwargs)\n\n\nclass UserAdmin(admin.ModelAdmin):\n    add_form_template = 'admin/auth/user/add_form.html'\n    change_user_password_template = None\n    fieldsets = (\n        (None, {'fields': ('username', 'password')}),\n        (_('Personal info'), {'fields': ('first_name', 'last_name', 'email')}),\n        (_('Permissions'), {'fields': ('is_active', 'is_staff', 'is_superuser',\n                                       'groups', 'user_permissions')}),\n        (_('Important dates'), {'fields': ('last_login', 'date_joined')}),\n    )\n    add_fieldsets = (\n        (None, {\n            'classes': ('wide',),\n            'fields': ('username', 'password1', 'password2')}\n        ),\n    )\n    form = UserChangeForm\n    add_form = UserCreationForm\n    change_password_form = AdminPasswordChangeForm\n    list_display = ('username', 'email', 'first_name', 'last_name', 'is_staff')\n    list_filter = ('is_staff', 'is_superuser', 'is_active', 'groups')\n    search_fields = ('username', 'first_name', 'last_name', 'email')\n    ordering = ('username',)\n    filter_horizontal = ('groups', 'user_permissions',)\n\n    def get_fieldsets(self, request, obj=None):\n        if not obj:\n            return self.add_fieldsets\n        return super(UserAdmin, self).get_fieldsets(request, obj)\n\n    def get_form(self, request, obj=None, **kwargs):\n        \"\"\"\n        Use special form during user creation\n        \"\"\"\n        defaults = {}\n        if obj is None:\n            defaults.update({\n                'form': self.add_form,\n                'fields': admin.util.flatten_fieldsets(self.add_fieldsets),\n            })\n        defaults.update(kwargs)\n        return super(UserAdmin, self).get_form(request, obj, **defaults)\n\n    def get_urls(self):\n        from django.conf.urls import patterns\n        return patterns('',\n            (r'^(\\d+)/password/$',\n             self.admin_site.admin_view(self.user_change_password))\n        ) + super(UserAdmin, self).get_urls()\n\n    def lookup_allowed(self, lookup, value):\n        # See #20078: we don't want to allow any lookups involving passwords.\n        if lookup.startswith('password'):\n            return False\n        return super(UserAdmin, self).lookup_allowed(lookup, value)\n\n    @sensitive_post_parameters()\n    @csrf_protect_m\n    @transaction.commit_on_success\n    def add_view(self, request, form_url='', extra_context=None):\n        # It's an error for a user to have add permission but NOT change\n        # permission for users. If we allowed such users to add users, they\n        # could create superusers, which would mean they would essentially have\n        # the permission to change users. To avoid the problem entirely, we\n        # disallow users from adding users if they don't have change\n        # permission.\n        if not self.has_change_permission(request):\n            if self.has_add_permission(request) and settings.DEBUG:\n                # Raise Http404 in debug mode so that the user gets a helpful\n                # error message.\n                raise Http404(\n                    'Your user does not have the \"Change user\" permission. In '\n                    'order to add users, Django requires that your user '\n                    'account have both the \"Add user\" and \"Change user\" '\n                    'permissions set.')\n            raise PermissionDenied\n        if extra_context is None:\n            extra_context = {}\n        username_field = self.model._meta.get_field(self.model.USERNAME_FIELD)\n        defaults = {\n            'auto_populated_fields': (),\n            'username_help_text': username_field.help_text,\n        }\n        extra_context.update(defaults)\n        return super(UserAdmin, self).add_view(request, form_url,\n                                               extra_context)\n\n    @sensitive_post_parameters()\n    def user_change_password(self, request, id, form_url=''):\n        if not self.has_change_permission(request):\n            raise PermissionDenied\n        user = get_object_or_404(self.queryset(request), pk=id)\n        if request.method == 'POST':\n            form = self.change_password_form(user, request.POST)\n            if form.is_valid():\n                form.save()\n                msg = ugettext('Password changed successfully.')\n                messages.success(request, msg)\n                return HttpResponseRedirect('..')\n        else:\n            form = self.change_password_form(user)\n\n        fieldsets = [(None, {'fields': list(form.base_fields)})]\n        adminForm = admin.helpers.AdminForm(form, fieldsets, {})\n\n        context = {\n            'title': _('Change password: %s') % escape(user.get_username()),\n            'adminForm': adminForm,\n            'form_url': form_url,\n            'form': form,\n            'is_popup': '_popup' in request.REQUEST,\n            'add': True,\n            'change': False,\n            'has_delete_permission': False,\n            'has_change_permission': True,\n            'has_absolute_url': False,\n            'opts': self.model._meta,\n            'original': user,\n            'save_as': False,\n            'show_save': True,\n        }\n        return TemplateResponse(request,\n            self.change_user_password_template or\n            'admin/auth/user/change_password.html',\n            context, current_app=self.admin_site.name)\n\n    def response_add(self, request, obj, post_url_continue=None):\n        \"\"\"\n        Determines the HttpResponse for the add_view stage. It mostly defers to\n        its superclass implementation but is customized because the User model\n        has a slightly different workflow.\n        \"\"\"\n        # We should allow further modification of the user just added i.e. the\n        # 'Save' button should behave like the 'Save and continue editing'\n        # button except in two scenarios:\n        # * The user has pressed the 'Save and add another' button\n        # * We are adding a user in a popup\n        if '_addanother' not in request.POST and '_popup' not in request.POST:\n            request.POST['_continue'] = 1\n        return super(UserAdmin, self).response_add(request, obj,\n                                                   post_url_continue)\n\nadmin.site.register(Group, GroupAdmin)\nadmin.site.register(User, UserAdmin)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/backends.py",
    "content": "from __future__ import unicode_literals\nfrom django.contrib.auth import get_user_model\nfrom django.contrib.auth.models import Permission\n\n\nclass ModelBackend(object):\n    \"\"\"\n    Authenticates against django.contrib.auth.models.User.\n    \"\"\"\n\n    def authenticate(self, username=None, password=None, **kwargs):\n        UserModel = get_user_model()\n        if username is None:\n            username = kwargs.get(UserModel.USERNAME_FIELD)\n        try:\n            user = UserModel._default_manager.get_by_natural_key(username)\n            if user.check_password(password):\n                return user\n        except UserModel.DoesNotExist:\n            return None\n\n    def get_group_permissions(self, user_obj, obj=None):\n        \"\"\"\n        Returns a set of permission strings that this user has through his/her\n        groups.\n        \"\"\"\n        if user_obj.is_anonymous() or obj is not None:\n            return set()\n        if not hasattr(user_obj, '_group_perm_cache'):\n            if user_obj.is_superuser:\n                perms = Permission.objects.all()\n            else:\n                user_groups_field = get_user_model()._meta.get_field('groups')\n                user_groups_query = 'group__%s' % user_groups_field.related_query_name()\n                perms = Permission.objects.filter(**{user_groups_query: user_obj})\n            perms = perms.values_list('content_type__app_label', 'codename').order_by()\n            user_obj._group_perm_cache = set([\"%s.%s\" % (ct, name) for ct, name in perms])\n        return user_obj._group_perm_cache\n\n    def get_all_permissions(self, user_obj, obj=None):\n        if user_obj.is_anonymous() or obj is not None:\n            return set()\n        if not hasattr(user_obj, '_perm_cache'):\n            user_obj._perm_cache = set([\"%s.%s\" % (p.content_type.app_label, p.codename) for p in user_obj.user_permissions.select_related()])\n            user_obj._perm_cache.update(self.get_group_permissions(user_obj))\n        return user_obj._perm_cache\n\n    def has_perm(self, user_obj, perm, obj=None):\n        if not user_obj.is_active:\n            return False\n        return perm in self.get_all_permissions(user_obj, obj)\n\n    def has_module_perms(self, user_obj, app_label):\n        \"\"\"\n        Returns True if user_obj has any permissions in the given app_label.\n        \"\"\"\n        if not user_obj.is_active:\n            return False\n        for perm in self.get_all_permissions(user_obj):\n            if perm[:perm.index('.')] == app_label:\n                return True\n        return False\n\n    def get_user(self, user_id):\n        try:\n            UserModel = get_user_model()\n            return UserModel._default_manager.get(pk=user_id)\n        except UserModel.DoesNotExist:\n            return None\n\n\nclass RemoteUserBackend(ModelBackend):\n    \"\"\"\n    This backend is to be used in conjunction with the ``RemoteUserMiddleware``\n    found in the middleware module of this package, and is used when the server\n    is handling authentication outside of Django.\n\n    By default, the ``authenticate`` method creates ``User`` objects for\n    usernames that don't already exist in the database.  Subclasses can disable\n    this behavior by setting the ``create_unknown_user`` attribute to\n    ``False``.\n    \"\"\"\n\n    # Create a User object if not already in the database?\n    create_unknown_user = True\n\n    def authenticate(self, remote_user):\n        \"\"\"\n        The username passed as ``remote_user`` is considered trusted.  This\n        method simply returns the ``User`` object with the given username,\n        creating a new ``User`` object if ``create_unknown_user`` is ``True``.\n\n        Returns None if ``create_unknown_user`` is ``False`` and a ``User``\n        object with the given username is not found in the database.\n        \"\"\"\n        if not remote_user:\n            return\n        user = None\n        username = self.clean_username(remote_user)\n\n        UserModel = get_user_model()\n\n        # Note that this could be accomplished in one try-except clause, but\n        # instead we use get_or_create when creating unknown users since it has\n        # built-in safeguards for multiple threads.\n        if self.create_unknown_user:\n            user, created = UserModel.objects.get_or_create(**{\n                UserModel.USERNAME_FIELD: username\n            })\n            if created:\n                user = self.configure_user(user)\n        else:\n            try:\n                user = UserModel.objects.get_by_natural_key(username)\n            except UserModel.DoesNotExist:\n                pass\n        return user\n\n    def clean_username(self, username):\n        \"\"\"\n        Performs any cleaning on the \"username\" prior to using it to get or\n        create the user object.  Returns the cleaned username.\n\n        By default, returns the username unchanged.\n        \"\"\"\n        return username\n\n    def configure_user(self, user):\n        \"\"\"\n        Configures a user after creation and returns the updated user.\n\n        By default, returns the user unmodified.\n        \"\"\"\n        return user\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/context_processors.py",
    "content": "# PermWrapper and PermLookupDict proxy the permissions system into objects that\n# the template system can understand.\n\nclass PermLookupDict(object):\n    def __init__(self, user, module_name):\n        self.user, self.module_name = user, module_name\n\n    def __repr__(self):\n        return str(self.user.get_all_permissions())\n\n    def __getitem__(self, perm_name):\n        return self.user.has_perm(\"%s.%s\" % (self.module_name, perm_name))\n\n    def __iter__(self):\n        # To fix 'item in perms.someapp' and __getitem__ iteraction we need to\n        # define __iter__. See #18979 for details.\n        raise TypeError(\"PermLookupDict is not iterable.\")\n\n    def __bool__(self):\n        return self.user.has_module_perms(self.module_name)\n\n    def __nonzero__(self):      # Python 2 compatibility\n        return type(self).__bool__(self)\n\n\nclass PermWrapper(object):\n    def __init__(self, user):\n        self.user = user\n\n    def __getitem__(self, module_name):\n        return PermLookupDict(self.user, module_name)\n\n    def __iter__(self):\n        # I am large, I contain multitudes.\n        raise TypeError(\"PermWrapper is not iterable.\")\n\n    def __contains__(self, perm_name):\n        \"\"\"\n        Lookup by \"someapp\" or \"someapp.someperm\" in perms.\n        \"\"\"\n        if '.' not in perm_name:\n            # The name refers to module.\n            return bool(self[perm_name])\n        module_name, perm_name = perm_name.split('.', 1)\n        return self[module_name][perm_name]\n\n\ndef auth(request):\n    \"\"\"\n    Returns context variables required by apps that use Django's authentication\n    system.\n\n    If there is no 'user' attribute in the request, uses AnonymousUser (from\n    django.contrib.auth).\n    \"\"\"\n    if hasattr(request, 'user'):\n        user = request.user\n    else:\n        from django.contrib.auth.models import AnonymousUser\n        user = AnonymousUser()\n\n    return {\n        'user': user,\n        'perms': PermWrapper(user),\n    }\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/create_superuser.py",
    "content": "\"\"\"\nCreate a superuser from the command line. Deprecated; use manage.py\ncreatesuperuser instead.\n\"\"\"\n\nif __name__ == \"__main__\":\n    from django.core.management import call_command\n    call_command(\"createsuperuser\")\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/decorators.py",
    "content": "try:\n    from urllib.parse import urlparse\nexcept ImportError:     # Python 2\n    from urlparse import urlparse\nfrom functools import wraps\nfrom django.conf import settings\nfrom django.contrib.auth import REDIRECT_FIELD_NAME\nfrom django.core.exceptions import PermissionDenied\nfrom django.utils.decorators import available_attrs\nfrom django.utils.encoding import force_str\nfrom django.shortcuts import resolve_url\n\n\ndef user_passes_test(test_func, login_url=None, redirect_field_name=REDIRECT_FIELD_NAME):\n    \"\"\"\n    Decorator for views that checks that the user passes the given test,\n    redirecting to the log-in page if necessary. The test should be a callable\n    that takes the user object and returns True if the user passes.\n    \"\"\"\n\n    def decorator(view_func):\n        @wraps(view_func, assigned=available_attrs(view_func))\n        def _wrapped_view(request, *args, **kwargs):\n            if test_func(request.user):\n                return view_func(request, *args, **kwargs)\n            path = request.build_absolute_uri()\n            # urlparse chokes on lazy objects in Python 3, force to str\n            resolved_login_url = force_str(\n                resolve_url(login_url or settings.LOGIN_URL))\n            # If the login url is the same scheme and net location then just\n            # use the path as the \"next\" url.\n            login_scheme, login_netloc = urlparse(resolved_login_url)[:2]\n            current_scheme, current_netloc = urlparse(path)[:2]\n            if ((not login_scheme or login_scheme == current_scheme) and\n                (not login_netloc or login_netloc == current_netloc)):\n                path = request.get_full_path()\n            from django.contrib.auth.views import redirect_to_login\n            return redirect_to_login(\n                path, resolved_login_url, redirect_field_name)\n        return _wrapped_view\n    return decorator\n\n\ndef login_required(function=None, redirect_field_name=REDIRECT_FIELD_NAME, login_url=None):\n    \"\"\"\n    Decorator for views that checks that the user is logged in, redirecting\n    to the log-in page if necessary.\n    \"\"\"\n    actual_decorator = user_passes_test(\n        lambda u: u.is_authenticated(),\n        login_url=login_url,\n        redirect_field_name=redirect_field_name\n    )\n    if function:\n        return actual_decorator(function)\n    return actual_decorator\n\n\ndef permission_required(perm, login_url=None, raise_exception=False):\n    \"\"\"\n    Decorator for views that checks whether a user has a particular permission\n    enabled, redirecting to the log-in page if neccesary.\n    If the raise_exception parameter is given the PermissionDenied exception\n    is raised.\n    \"\"\"\n    def check_perms(user):\n        # First check if the user has the permission (even anon users)\n        if user.has_perm(perm):\n            return True\n        # In case the 403 handler should be called raise the exception\n        if raise_exception:\n            raise PermissionDenied\n        # As the last resort, show the login form\n        return False\n    return user_passes_test(check_perms, login_url=login_url)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/fixtures/authtestdata.json",
    "content": "[\n    {\n        \"pk\": \"1\",\n        \"model\": \"auth.user\",\n        \"fields\": {\n            \"username\": \"testclient\",\n            \"first_name\": \"Test\",\n            \"last_name\": \"Client\",\n            \"is_active\": true,\n            \"is_superuser\": false,\n            \"is_staff\": false,\n            \"last_login\": \"2006-12-17 07:03:31\",\n            \"groups\": [],\n            \"user_permissions\": [],\n            \"password\": \"sha1$6efc0$f93efe9fd7542f25a7be94871ea45aa95de57161\",\n            \"email\": \"testclient@example.com\",\n            \"date_joined\": \"2006-12-17 07:03:31\"\n        }\n    },\n    {\n        \"pk\": \"2\",\n        \"model\": \"auth.user\",\n        \"fields\": {\n            \"username\": \"inactive\",\n            \"first_name\": \"Inactive\",\n            \"last_name\": \"User\",\n            \"is_active\": false,\n            \"is_superuser\": false,\n            \"is_staff\": false,\n            \"last_login\": \"2006-12-17 07:03:31\",\n            \"groups\": [],\n            \"user_permissions\": [],\n            \"password\": \"sha1$6efc0$f93efe9fd7542f25a7be94871ea45aa95de57161\",\n            \"email\": \"testclient2@example.com\",\n            \"date_joined\": \"2006-12-17 07:03:31\"\n        }\n    },\n    {\n        \"pk\": \"3\",\n        \"model\": \"auth.user\",\n        \"fields\": {\n            \"username\": \"staff\",\n            \"first_name\": \"Staff\",\n            \"last_name\": \"Member\",\n            \"is_active\": true,\n            \"is_superuser\": false,\n            \"is_staff\": true,\n            \"last_login\": \"2006-12-17 07:03:31\",\n            \"groups\": [],\n            \"user_permissions\": [],\n            \"password\": \"sha1$6efc0$f93efe9fd7542f25a7be94871ea45aa95de57161\",\n            \"email\": \"staffmember@example.com\",\n            \"date_joined\": \"2006-12-17 07:03:31\"\n        }\n    },\n    {\n        \"pk\": \"4\",\n        \"model\": \"auth.user\",\n        \"fields\": {\n            \"username\": \"empty_password\",\n            \"first_name\": \"Empty\",\n            \"last_name\": \"Password\",\n            \"is_active\": true,\n            \"is_superuser\": false,\n            \"is_staff\": false,\n            \"last_login\": \"2006-12-17 07:03:31\",\n            \"groups\": [],\n            \"user_permissions\": [],\n            \"password\": \"\",\n            \"email\": \"empty_password@example.com\",\n            \"date_joined\": \"2006-12-17 07:03:31\"\n        }\n    },\n    {\n        \"pk\": \"5\",\n        \"model\": \"auth.user\",\n        \"fields\": {\n            \"username\": \"unmanageable_password\",\n            \"first_name\": \"Unmanageable\",\n            \"last_name\": \"Password\",\n            \"is_active\": true,\n            \"is_superuser\": false,\n            \"is_staff\": false,\n            \"last_login\": \"2006-12-17 07:03:31\",\n            \"groups\": [],\n            \"user_permissions\": [],\n            \"password\": \"$\",\n            \"email\": \"unmanageable_password@example.com\",\n            \"date_joined\": \"2006-12-17 07:03:31\"\n        }\n    },\n    {\n        \"pk\": \"6\",\n        \"model\": \"auth.user\",\n        \"fields\": {\n            \"username\": \"unknown_password\",\n            \"first_name\": \"Unknown\",\n            \"last_name\": \"Password\",\n            \"is_active\": true,\n            \"is_superuser\": false,\n            \"is_staff\": false,\n            \"last_login\": \"2006-12-17 07:03:31\",\n            \"groups\": [],\n            \"user_permissions\": [],\n            \"password\": \"foo$bar\",\n            \"email\": \"unknown_password@example.com\",\n            \"date_joined\": \"2006-12-17 07:03:31\"\n        }\n    }\n]\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/fixtures/context-processors-users.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<django-objects version=\"1.0\">\n    <object pk=\"100\" model=\"auth.user\">\n        <field type=\"CharField\" name=\"username\">super</field>\n        <field type=\"CharField\" name=\"first_name\">Super</field>\n        <field type=\"CharField\" name=\"last_name\">User</field>\n        <field type=\"CharField\" name=\"email\">super@example.com</field>\n        <field type=\"CharField\" name=\"password\">sha1$995a3$6011485ea3834267d719b4c801409b8b1ddd0158</field>\n        <field type=\"BooleanField\" name=\"is_staff\">True</field>\n        <field type=\"BooleanField\" name=\"is_active\">True</field>\n        <field type=\"BooleanField\" name=\"is_superuser\">True</field>\n        <field type=\"DateTimeField\" name=\"last_login\">2007-05-30 13:20:10</field>\n        <field type=\"DateTimeField\" name=\"date_joined\">2007-05-30 13:20:10</field>\n        <field to=\"auth.group\" name=\"groups\" rel=\"ManyToManyRel\"></field>\n        <field to=\"auth.permission\" name=\"user_permissions\" rel=\"ManyToManyRel\"></field>\n    </object>\n</django-objects>\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/fixtures/custom_user.json",
    "content": "[\n    {\n        \"pk\": \"1\",\n        \"model\": \"auth.customuser\",\n        \"fields\": {\n            \"password\": \"sha1$6efc0$f93efe9fd7542f25a7be94871ea45aa95de57161\",\n            \"last_login\": \"2006-12-17 07:03:31\",\n            \"email\": \"staffmember@example.com\",\n            \"is_active\": true,\n            \"is_admin\": false,\n            \"date_of_birth\": \"1976-11-08\"\n       }\n    }\n]"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/fixtures/natural.json",
    "content": "[\n    {\n        \"pk\": 1, \n        \"model\": \"auth.group\", \n        \"fields\": {\n            \"name\": \"my_group\", \n            \"permissions\": []\n        }\n    }, \n    {\n        \"pk\": 1, \n        \"model\": \"auth.user\", \n        \"fields\": {\n            \"username\": \"my_username\", \n            \"first_name\": \"\", \n            \"last_name\": \"\", \n            \"is_active\": true, \n            \"is_superuser\": true, \n            \"is_staff\": true, \n            \"last_login\": \"2012-01-13 00:14:00\", \n            \"groups\": [\n                [\n                    \"my_group\"\n                ]\n            ], \n            \"user_permissions\": [], \n            \"password\": \"pbkdf2_sha256$10000$LUyhxJjuLwXF$f6Zbpnx1L5dPze8m0itBaHMDyZ/n6JyhuavQy2RrBIM=\", \n            \"email\": \"email@example.com\", \n            \"date_joined\": \"2012-01-13 00:14:00\"\n        }\n    }\n]\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/fixtures/regular.json",
    "content": "[\n    {\n        \"pk\": 1, \n        \"model\": \"auth.group\", \n        \"fields\": {\n            \"name\": \"my_group\", \n            \"permissions\": []\n        }\n    }, \n    {\n        \"pk\": 1, \n        \"model\": \"auth.user\", \n        \"fields\": {\n            \"username\": \"my_username\", \n            \"first_name\": \"\", \n            \"last_name\": \"\", \n            \"is_active\": true, \n            \"is_superuser\": true, \n            \"is_staff\": true, \n            \"last_login\": \"2012-01-13 00:14:00\", \n            \"groups\": [\n                1\n            ], \n            \"user_permissions\": [], \n            \"password\": \"pbkdf2_sha256$10000$LUyhxJjuLwXF$f6Zbpnx1L5dPze8m0itBaHMDyZ/n6JyhuavQy2RrBIM=\", \n            \"email\": \"email@example.com\", \n            \"date_joined\": \"2012-01-13 00:14:00\"\n        }\n    }\n]\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/forms.py",
    "content": "from __future__ import unicode_literals\n\nfrom django import forms\nfrom django.forms.util import flatatt\nfrom django.template import loader\nfrom django.utils.datastructures import SortedDict\nfrom django.utils.html import format_html, format_html_join\nfrom django.utils.http import int_to_base36\nfrom django.utils.safestring import mark_safe\nfrom django.utils.text import capfirst\nfrom django.utils.translation import ugettext, ugettext_lazy as _\n\nfrom django.contrib.auth import authenticate, get_user_model\nfrom django.contrib.auth.models import User\nfrom django.contrib.auth.hashers import UNUSABLE_PASSWORD, identify_hasher\nfrom django.contrib.auth.tokens import default_token_generator\nfrom django.contrib.sites.models import get_current_site\n\n\nUNMASKED_DIGITS_TO_SHOW = 6\n\nmask_password = lambda p: \"%s%s\" % (p[:UNMASKED_DIGITS_TO_SHOW], \"*\" * max(len(p) - UNMASKED_DIGITS_TO_SHOW, 0))\n\n\nclass ReadOnlyPasswordHashWidget(forms.Widget):\n    def render(self, name, value, attrs):\n        encoded = value\n        final_attrs = self.build_attrs(attrs)\n\n        if not encoded or encoded == UNUSABLE_PASSWORD:\n            summary = mark_safe(\"<strong>%s</strong>\" % ugettext(\"No password set.\"))\n        else:\n            try:\n                hasher = identify_hasher(encoded)\n            except ValueError:\n                summary = mark_safe(\"<strong>%s</strong>\" % ugettext(\n                    \"Invalid password format or unknown hashing algorithm.\"))\n            else:\n                summary = format_html_join('',\n                                           \"<strong>{0}</strong>: {1} \",\n                                           ((ugettext(key), value)\n                                            for key, value in hasher.safe_summary(encoded).items())\n                                           )\n\n        return format_html(\"<div{0}>{1}</div>\", flatatt(final_attrs), summary)\n\n\nclass ReadOnlyPasswordHashField(forms.Field):\n    widget = ReadOnlyPasswordHashWidget\n\n    def __init__(self, *args, **kwargs):\n        kwargs.setdefault(\"required\", False)\n        super(ReadOnlyPasswordHashField, self).__init__(*args, **kwargs)\n\n    def bound_data(self, data, initial):\n        # Always return initial because the widget doesn't\n        # render an input field.\n        return initial\n\n\nclass UserCreationForm(forms.ModelForm):\n    \"\"\"\n    A form that creates a user, with no privileges, from the given username and\n    password.\n    \"\"\"\n    error_messages = {\n        'duplicate_username': _(\"A user with that username already exists.\"),\n        'password_mismatch': _(\"The two password fields didn't match.\"),\n    }\n    username = forms.RegexField(label=_(\"Username\"), max_length=30,\n        regex=r'^[\\w.@+-]+$',\n        help_text=_(\"Required. 30 characters or fewer. Letters, digits and \"\n                      \"@/./+/-/_ only.\"),\n        error_messages={\n            'invalid': _(\"This value may contain only letters, numbers and \"\n                         \"@/./+/-/_ characters.\")})\n    password1 = forms.CharField(label=_(\"Password\"),\n        widget=forms.PasswordInput)\n    password2 = forms.CharField(label=_(\"Password confirmation\"),\n        widget=forms.PasswordInput,\n        help_text=_(\"Enter the same password as above, for verification.\"))\n\n    class Meta:\n        model = User\n        fields = (\"username\",)\n\n    def clean_username(self):\n        # Since User.username is unique, this check is redundant,\n        # but it sets a nicer error message than the ORM. See #13147.\n        username = self.cleaned_data[\"username\"]\n        try:\n            User._default_manager.get(username=username)\n        except User.DoesNotExist:\n            return username\n        raise forms.ValidationError(self.error_messages['duplicate_username'])\n\n    def clean_password2(self):\n        password1 = self.cleaned_data.get(\"password1\")\n        password2 = self.cleaned_data.get(\"password2\")\n        if password1 and password2 and password1 != password2:\n            raise forms.ValidationError(\n                self.error_messages['password_mismatch'])\n        return password2\n\n    def save(self, commit=True):\n        user = super(UserCreationForm, self).save(commit=False)\n        user.set_password(self.cleaned_data[\"password1\"])\n        if commit:\n            user.save()\n        return user\n\n\nclass UserChangeForm(forms.ModelForm):\n    username = forms.RegexField(\n        label=_(\"Username\"), max_length=30, regex=r\"^[\\w.@+-]+$\",\n        help_text=_(\"Required. 30 characters or fewer. Letters, digits and \"\n                      \"@/./+/-/_ only.\"),\n        error_messages={\n            'invalid': _(\"This value may contain only letters, numbers and \"\n                         \"@/./+/-/_ characters.\")})\n    password = ReadOnlyPasswordHashField(label=_(\"Password\"),\n        help_text=_(\"Raw passwords are not stored, so there is no way to see \"\n                    \"this user's password, but you can change the password \"\n                    \"using <a href=\\\"password/\\\">this form</a>.\"))\n\n    class Meta:\n        model = User\n\n    def __init__(self, *args, **kwargs):\n        super(UserChangeForm, self).__init__(*args, **kwargs)\n        f = self.fields.get('user_permissions', None)\n        if f is not None:\n            f.queryset = f.queryset.select_related('content_type')\n\n    def clean_password(self):\n        # Regardless of what the user provides, return the initial value.\n        # This is done here, rather than on the field, because the\n        # field does not have access to the initial value\n        return self.initial[\"password\"]\n\n\nclass AuthenticationForm(forms.Form):\n    \"\"\"\n    Base class for authenticating users. Extend this to get a form that accepts\n    username/password logins.\n    \"\"\"\n    username = forms.CharField(max_length=254)\n    password = forms.CharField(label=_(\"Password\"), widget=forms.PasswordInput)\n\n    error_messages = {\n        'invalid_login': _(\"Please enter a correct %(username)s and password. \"\n                           \"Note that both fields may be case-sensitive.\"),\n        'no_cookies': _(\"Your Web browser doesn't appear to have cookies \"\n                        \"enabled. Cookies are required for logging in.\"),\n        'inactive': _(\"This account is inactive.\"),\n    }\n\n    def __init__(self, request=None, *args, **kwargs):\n        \"\"\"\n        If request is passed in, the form will validate that cookies are\n        enabled. Note that the request (a HttpRequest object) must have set a\n        cookie with the key TEST_COOKIE_NAME and value TEST_COOKIE_VALUE before\n        running this validation.\n        \"\"\"\n        self.request = request\n        self.user_cache = None\n        super(AuthenticationForm, self).__init__(*args, **kwargs)\n\n        # Set the label for the \"username\" field.\n        UserModel = get_user_model()\n        self.username_field = UserModel._meta.get_field(UserModel.USERNAME_FIELD)\n        if not self.fields['username'].label:\n            self.fields['username'].label = capfirst(self.username_field.verbose_name)\n\n    def clean(self):\n        username = self.cleaned_data.get('username')\n        password = self.cleaned_data.get('password')\n\n        if username and password:\n            self.user_cache = authenticate(username=username,\n                                           password=password)\n            if self.user_cache is None:\n                raise forms.ValidationError(\n                    self.error_messages['invalid_login'] % {\n                        'username': self.username_field.verbose_name\n                    })\n            elif not self.user_cache.is_active:\n                raise forms.ValidationError(self.error_messages['inactive'])\n        self.check_for_test_cookie()\n        return self.cleaned_data\n\n    def check_for_test_cookie(self):\n        if self.request and not self.request.session.test_cookie_worked():\n            raise forms.ValidationError(self.error_messages['no_cookies'])\n\n    def get_user_id(self):\n        if self.user_cache:\n            return self.user_cache.id\n        return None\n\n    def get_user(self):\n        return self.user_cache\n\n\nclass PasswordResetForm(forms.Form):\n    error_messages = {\n        'unknown': _(\"That email address doesn't have an associated \"\n                     \"user account. Are you sure you've registered?\"),\n        'unusable': _(\"The user account associated with this email \"\n                      \"address cannot reset the password.\"),\n    }\n    email = forms.EmailField(label=_(\"Email\"), max_length=254)\n\n    def clean_email(self):\n        \"\"\"\n        Validates that an active user exists with the given email address.\n        \"\"\"\n        UserModel = get_user_model()\n        email = self.cleaned_data[\"email\"]\n        self.users_cache = UserModel._default_manager.filter(email__iexact=email)\n        if not len(self.users_cache):\n            raise forms.ValidationError(self.error_messages['unknown'])\n        if not any(user.is_active for user in self.users_cache):\n            # none of the filtered users are active\n            raise forms.ValidationError(self.error_messages['unknown'])\n        if any((user.password == UNUSABLE_PASSWORD)\n               for user in self.users_cache):\n            raise forms.ValidationError(self.error_messages['unusable'])\n        return email\n\n    def save(self, domain_override=None,\n             subject_template_name='registration/password_reset_subject.txt',\n             email_template_name='registration/password_reset_email.html',\n             use_https=False, token_generator=default_token_generator,\n             from_email=None, request=None):\n        \"\"\"\n        Generates a one-use only link for resetting password and sends to the\n        user.\n        \"\"\"\n        from django.core.mail import send_mail\n        for user in self.users_cache:\n            if not domain_override:\n                current_site = get_current_site(request)\n                site_name = current_site.name\n                domain = current_site.domain\n            else:\n                site_name = domain = domain_override\n            c = {\n                'email': user.email,\n                'domain': domain,\n                'site_name': site_name,\n                'uid': int_to_base36(user.pk),\n                'user': user,\n                'token': token_generator.make_token(user),\n                'protocol': use_https and 'https' or 'http',\n            }\n            subject = loader.render_to_string(subject_template_name, c)\n            # Email subject *must not* contain newlines\n            subject = ''.join(subject.splitlines())\n            email = loader.render_to_string(email_template_name, c)\n            send_mail(subject, email, from_email, [user.email])\n\n\nclass SetPasswordForm(forms.Form):\n    \"\"\"\n    A form that lets a user change set his/her password without entering the\n    old password\n    \"\"\"\n    error_messages = {\n        'password_mismatch': _(\"The two password fields didn't match.\"),\n    }\n    new_password1 = forms.CharField(label=_(\"New password\"),\n                                    widget=forms.PasswordInput)\n    new_password2 = forms.CharField(label=_(\"New password confirmation\"),\n                                    widget=forms.PasswordInput)\n\n    def __init__(self, user, *args, **kwargs):\n        self.user = user\n        super(SetPasswordForm, self).__init__(*args, **kwargs)\n\n    def clean_new_password2(self):\n        password1 = self.cleaned_data.get('new_password1')\n        password2 = self.cleaned_data.get('new_password2')\n        if password1 and password2:\n            if password1 != password2:\n                raise forms.ValidationError(\n                    self.error_messages['password_mismatch'])\n        return password2\n\n    def save(self, commit=True):\n        self.user.set_password(self.cleaned_data['new_password1'])\n        if commit:\n            self.user.save()\n        return self.user\n\n\nclass PasswordChangeForm(SetPasswordForm):\n    \"\"\"\n    A form that lets a user change his/her password by entering\n    their old password.\n    \"\"\"\n    error_messages = dict(SetPasswordForm.error_messages, **{\n        'password_incorrect': _(\"Your old password was entered incorrectly. \"\n                                \"Please enter it again.\"),\n    })\n    old_password = forms.CharField(label=_(\"Old password\"),\n                                   widget=forms.PasswordInput)\n\n    def clean_old_password(self):\n        \"\"\"\n        Validates that the old_password field is correct.\n        \"\"\"\n        old_password = self.cleaned_data[\"old_password\"]\n        if not self.user.check_password(old_password):\n            raise forms.ValidationError(\n                self.error_messages['password_incorrect'])\n        return old_password\n\nPasswordChangeForm.base_fields = SortedDict([\n    (k, PasswordChangeForm.base_fields[k])\n    for k in ['old_password', 'new_password1', 'new_password2']\n])\n\n\nclass AdminPasswordChangeForm(forms.Form):\n    \"\"\"\n    A form used to change the password of a user in the admin interface.\n    \"\"\"\n    error_messages = {\n        'password_mismatch': _(\"The two password fields didn't match.\"),\n    }\n    password1 = forms.CharField(label=_(\"Password\"),\n                                widget=forms.PasswordInput)\n    password2 = forms.CharField(label=_(\"Password (again)\"),\n                                widget=forms.PasswordInput)\n\n    def __init__(self, user, *args, **kwargs):\n        self.user = user\n        super(AdminPasswordChangeForm, self).__init__(*args, **kwargs)\n\n    def clean_password2(self):\n        password1 = self.cleaned_data.get('password1')\n        password2 = self.cleaned_data.get('password2')\n        if password1 and password2:\n            if password1 != password2:\n                raise forms.ValidationError(\n                    self.error_messages['password_mismatch'])\n        return password2\n\n    def save(self, commit=True):\n        \"\"\"\n        Saves the new password.\n        \"\"\"\n        self.user.set_password(self.cleaned_data[\"password1\"])\n        if commit:\n            self.user.save()\n        return self.user\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/handlers/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/handlers/modwsgi.py",
    "content": "from django.contrib import auth\nfrom django import db\nfrom django.utils.encoding import force_bytes\n\n\ndef check_password(environ, username, password):\n    \"\"\"\n    Authenticates against Django's auth database\n\n    mod_wsgi docs specify None, True, False as return value depending\n    on whether the user exists and authenticates.\n    \"\"\"\n\n    UserModel = auth.get_user_model()\n    # db connection state is managed similarly to the wsgi handler\n    # as mod_wsgi may call these functions outside of a request/response cycle\n    db.reset_queries()\n\n    try:\n        try:\n            user = UserModel._default_manager.get_by_natural_key(username)\n        except UserModel.DoesNotExist:\n            return None\n        if not user.is_active:\n            return None\n        return user.check_password(password)\n    finally:\n        db.close_connection()\n\ndef groups_for_user(environ, username):\n    \"\"\"\n    Authorizes a user based on groups\n    \"\"\"\n\n    UserModel = auth.get_user_model()\n    db.reset_queries()\n\n    try:\n        try:\n            user = UserModel._default_manager.get_by_natural_key(username)\n        except UserModel.DoesNotExist:\n            return []\n        if not user.is_active:\n            return []\n        return [force_bytes(group.name) for group in user.groups.all()]\n    finally:\n        db.close_connection()\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/hashers.py",
    "content": "from __future__ import unicode_literals\n\nimport base64\nimport hashlib\n\nfrom django.dispatch import receiver\nfrom django.conf import settings\nfrom django.test.signals import setting_changed\nfrom django.utils import importlib\nfrom django.utils.datastructures import SortedDict\nfrom django.utils.encoding import force_bytes, force_str\nfrom django.core.exceptions import ImproperlyConfigured\nfrom django.utils.crypto import (\n    pbkdf2, constant_time_compare, get_random_string)\nfrom django.utils.translation import ugettext_noop as _\n\n\nUNUSABLE_PASSWORD = '!'  # This will never be a valid encoded hash\nHASHERS = None  # lazily loaded from PASSWORD_HASHERS\nPREFERRED_HASHER = None  # defaults to first item in PASSWORD_HASHERS\n\n@receiver(setting_changed)\ndef reset_hashers(**kwargs):\n    if kwargs['setting'] == 'PASSWORD_HASHERS':\n        global HASHERS, PREFERRED_HASHER\n        HASHERS = None\n        PREFERRED_HASHER = None\n\n\ndef is_password_usable(encoded):\n    if encoded is None or encoded == UNUSABLE_PASSWORD:\n        return False\n    try:\n        hasher = identify_hasher(encoded)\n    except ValueError:\n        return False\n    return True\n\n\ndef check_password(password, encoded, setter=None, preferred='default'):\n    \"\"\"\n    Returns a boolean of whether the raw password matches the three\n    part encoded digest.\n\n    If setter is specified, it'll be called when you need to\n    regenerate the password.\n    \"\"\"\n    if not password or not is_password_usable(encoded):\n        return False\n\n    preferred = get_hasher(preferred)\n    hasher = identify_hasher(encoded)\n\n    must_update = hasher.algorithm != preferred.algorithm\n    is_correct = hasher.verify(password, encoded)\n    if setter and is_correct and must_update:\n        setter(password)\n    return is_correct\n\n\ndef make_password(password, salt=None, hasher='default'):\n    \"\"\"\n    Turn a plain-text password into a hash for database storage\n\n    Same as encode() but generates a new random salt.  If\n    password is None or blank then UNUSABLE_PASSWORD will be\n    returned which disallows logins.\n    \"\"\"\n    if not password:\n        return UNUSABLE_PASSWORD\n\n    hasher = get_hasher(hasher)\n\n    if not salt:\n        salt = hasher.salt()\n\n    return hasher.encode(password, salt)\n\n\ndef load_hashers(password_hashers=None):\n    global HASHERS\n    global PREFERRED_HASHER\n    hashers = []\n    if not password_hashers:\n        password_hashers = settings.PASSWORD_HASHERS\n    for backend in password_hashers:\n        try:\n            mod_path, cls_name = backend.rsplit('.', 1)\n            mod = importlib.import_module(mod_path)\n            hasher_cls = getattr(mod, cls_name)\n        except (AttributeError, ImportError, ValueError):\n            raise ImproperlyConfigured(\"hasher not found: %s\" % backend)\n        hasher = hasher_cls()\n        if not getattr(hasher, 'algorithm'):\n            raise ImproperlyConfigured(\"hasher doesn't specify an \"\n                                       \"algorithm name: %s\" % backend)\n        hashers.append(hasher)\n    HASHERS = dict([(hasher.algorithm, hasher) for hasher in hashers])\n    PREFERRED_HASHER = hashers[0]\n\n\ndef get_hasher(algorithm='default'):\n    \"\"\"\n    Returns an instance of a loaded password hasher.\n\n    If algorithm is 'default', the default hasher will be returned.\n    This function will also lazy import hashers specified in your\n    settings file if needed.\n    \"\"\"\n    if hasattr(algorithm, 'algorithm'):\n        return algorithm\n\n    elif algorithm == 'default':\n        if PREFERRED_HASHER is None:\n            load_hashers()\n        return PREFERRED_HASHER\n    else:\n        if HASHERS is None:\n            load_hashers()\n        if algorithm not in HASHERS:\n            raise ValueError(\"Unknown password hashing algorithm '%s'. \"\n                             \"Did you specify it in the PASSWORD_HASHERS \"\n                             \"setting?\" % algorithm)\n        return HASHERS[algorithm]\n\n\ndef identify_hasher(encoded):\n    \"\"\"\n    Returns an instance of a loaded password hasher.\n\n    Identifies hasher algorithm by examining encoded hash, and calls\n    get_hasher() to return hasher. Raises ValueError if\n    algorithm cannot be identified, or if hasher is not loaded.\n    \"\"\"\n    # Ancient versions of Django created plain MD5 passwords and accepted\n    # MD5 passwords with an empty salt.\n    if ((len(encoded) == 32 and '$' not in encoded) or\n            (len(encoded) == 37 and encoded.startswith('md5$$'))):\n        algorithm = 'unsalted_md5'\n    # Ancient versions of Django accepted SHA1 passwords with an empty salt.\n    elif len(encoded) == 46 and encoded.startswith('sha1$$'):\n        algorithm = 'unsalted_sha1'\n    else:\n        algorithm = encoded.split('$', 1)[0]\n    return get_hasher(algorithm)\n\n\ndef mask_hash(hash, show=6, char=\"*\"):\n    \"\"\"\n    Returns the given hash, with only the first ``show`` number shown. The\n    rest are masked with ``char`` for security reasons.\n    \"\"\"\n    masked = hash[:show]\n    masked += char * len(hash[show:])\n    return masked\n\n\nclass BasePasswordHasher(object):\n    \"\"\"\n    Abstract base class for password hashers\n\n    When creating your own hasher, you need to override algorithm,\n    verify(), encode() and safe_summary().\n\n    PasswordHasher objects are immutable.\n    \"\"\"\n    algorithm = None\n    library = None\n\n    def _load_library(self):\n        if self.library is not None:\n            if isinstance(self.library, (tuple, list)):\n                name, mod_path = self.library\n            else:\n                name = mod_path = self.library\n            try:\n                module = importlib.import_module(mod_path)\n            except ImportError:\n                raise ValueError(\"Couldn't load %s password algorithm \"\n                                 \"library\" % name)\n            return module\n        raise ValueError(\"Hasher '%s' doesn't specify a library attribute\" %\n                         self.__class__)\n\n    def salt(self):\n        \"\"\"\n        Generates a cryptographically secure nonce salt in ascii\n        \"\"\"\n        return get_random_string()\n\n    def verify(self, password, encoded):\n        \"\"\"\n        Checks if the given password is correct\n        \"\"\"\n        raise NotImplementedError()\n\n    def encode(self, password, salt):\n        \"\"\"\n        Creates an encoded database value\n\n        The result is normally formatted as \"algorithm$salt$hash\" and\n        must be fewer than 128 characters.\n        \"\"\"\n        raise NotImplementedError()\n\n    def safe_summary(self, encoded):\n        \"\"\"\n        Returns a summary of safe values\n\n        The result is a dictionary and will be used where the password field\n        must be displayed to construct a safe representation of the password.\n        \"\"\"\n        raise NotImplementedError()\n\n\nclass PBKDF2PasswordHasher(BasePasswordHasher):\n    \"\"\"\n    Secure password hashing using the PBKDF2 algorithm (recommended)\n\n    Configured to use PBKDF2 + HMAC + SHA256 with 10000 iterations.\n    The result is a 64 byte binary string.  Iterations may be changed\n    safely but you must rename the algorithm if you change SHA256.\n    \"\"\"\n    algorithm = \"pbkdf2_sha256\"\n    iterations = 10000\n    digest = hashlib.sha256\n\n    def encode(self, password, salt, iterations=None):\n        assert password\n        assert salt and '$' not in salt\n        if not iterations:\n            iterations = self.iterations\n        hash = pbkdf2(password, salt, iterations, digest=self.digest)\n        hash = base64.b64encode(hash).decode('ascii').strip()\n        return \"%s$%d$%s$%s\" % (self.algorithm, iterations, salt, hash)\n\n    def verify(self, password, encoded):\n        algorithm, iterations, salt, hash = encoded.split('$', 3)\n        assert algorithm == self.algorithm\n        encoded_2 = self.encode(password, salt, int(iterations))\n        return constant_time_compare(encoded, encoded_2)\n\n    def safe_summary(self, encoded):\n        algorithm, iterations, salt, hash = encoded.split('$', 3)\n        assert algorithm == self.algorithm\n        return SortedDict([\n            (_('algorithm'), algorithm),\n            (_('iterations'), iterations),\n            (_('salt'), mask_hash(salt)),\n            (_('hash'), mask_hash(hash)),\n        ])\n\n\nclass PBKDF2SHA1PasswordHasher(PBKDF2PasswordHasher):\n    \"\"\"\n    Alternate PBKDF2 hasher which uses SHA1, the default PRF\n    recommended by PKCS #5. This is compatible with other\n    implementations of PBKDF2, such as openssl's\n    PKCS5_PBKDF2_HMAC_SHA1().\n    \"\"\"\n    algorithm = \"pbkdf2_sha1\"\n    digest = hashlib.sha1\n\n\nclass BCryptPasswordHasher(BasePasswordHasher):\n    \"\"\"\n    Secure password hashing using the bcrypt algorithm (recommended)\n\n    This is considered by many to be the most secure algorithm but you\n    must first install the py-bcrypt library.  Please be warned that\n    this library depends on native C code and might cause portability\n    issues.\n    \"\"\"\n    algorithm = \"bcrypt\"\n    library = (\"py-bcrypt\", \"bcrypt\")\n    rounds = 12\n\n    def salt(self):\n        bcrypt = self._load_library()\n        return bcrypt.gensalt(self.rounds)\n\n    def encode(self, password, salt):\n        bcrypt = self._load_library()\n        # Need to reevaluate the force_bytes call once bcrypt is supported on\n        # Python 3\n        data = bcrypt.hashpw(force_bytes(password), salt)\n        return \"%s$%s\" % (self.algorithm, data)\n\n    def verify(self, password, encoded):\n        algorithm, data = encoded.split('$', 1)\n        assert algorithm == self.algorithm\n        bcrypt = self._load_library()\n        return constant_time_compare(data, bcrypt.hashpw(force_bytes(password), data))\n\n    def safe_summary(self, encoded):\n        algorithm, empty, algostr, work_factor, data = encoded.split('$', 4)\n        assert algorithm == self.algorithm\n        salt, checksum = data[:22], data[22:]\n        return SortedDict([\n            (_('algorithm'), algorithm),\n            (_('work factor'), work_factor),\n            (_('salt'), mask_hash(salt)),\n            (_('checksum'), mask_hash(checksum)),\n        ])\n\n\nclass SHA1PasswordHasher(BasePasswordHasher):\n    \"\"\"\n    The SHA1 password hashing algorithm (not recommended)\n    \"\"\"\n    algorithm = \"sha1\"\n\n    def encode(self, password, salt):\n        assert password\n        assert salt and '$' not in salt\n        hash = hashlib.sha1(force_bytes(salt + password)).hexdigest()\n        return \"%s$%s$%s\" % (self.algorithm, salt, hash)\n\n    def verify(self, password, encoded):\n        algorithm, salt, hash = encoded.split('$', 2)\n        assert algorithm == self.algorithm\n        encoded_2 = self.encode(password, salt)\n        return constant_time_compare(encoded, encoded_2)\n\n    def safe_summary(self, encoded):\n        algorithm, salt, hash = encoded.split('$', 2)\n        assert algorithm == self.algorithm\n        return SortedDict([\n            (_('algorithm'), algorithm),\n            (_('salt'), mask_hash(salt, show=2)),\n            (_('hash'), mask_hash(hash)),\n        ])\n\n\nclass MD5PasswordHasher(BasePasswordHasher):\n    \"\"\"\n    The Salted MD5 password hashing algorithm (not recommended)\n    \"\"\"\n    algorithm = \"md5\"\n\n    def encode(self, password, salt):\n        assert password\n        assert salt and '$' not in salt\n        hash = hashlib.md5(force_bytes(salt + password)).hexdigest()\n        return \"%s$%s$%s\" % (self.algorithm, salt, hash)\n\n    def verify(self, password, encoded):\n        algorithm, salt, hash = encoded.split('$', 2)\n        assert algorithm == self.algorithm\n        encoded_2 = self.encode(password, salt)\n        return constant_time_compare(encoded, encoded_2)\n\n    def safe_summary(self, encoded):\n        algorithm, salt, hash = encoded.split('$', 2)\n        assert algorithm == self.algorithm\n        return SortedDict([\n            (_('algorithm'), algorithm),\n            (_('salt'), mask_hash(salt, show=2)),\n            (_('hash'), mask_hash(hash)),\n        ])\n\n\nclass UnsaltedSHA1PasswordHasher(BasePasswordHasher):\n    \"\"\"\n    Very insecure algorithm that you should *never* use; stores SHA1 hashes\n    with an empty salt.\n\n    This class is implemented because Django used to accept such password\n    hashes. Some older Django installs still have these values lingering\n    around so we need to handle and upgrade them properly.\n    \"\"\"\n    algorithm = \"unsalted_sha1\"\n\n    def salt(self):\n        return ''\n\n    def encode(self, password, salt):\n        assert salt == ''\n        hash = hashlib.sha1(force_bytes(password)).hexdigest()\n        return 'sha1$$%s' % hash\n\n    def verify(self, password, encoded):\n        encoded_2 = self.encode(password, '')\n        return constant_time_compare(encoded, encoded_2)\n\n    def safe_summary(self, encoded):\n        assert encoded.startswith('sha1$$')\n        hash = encoded[6:]\n        return SortedDict([\n            (_('algorithm'), self.algorithm),\n            (_('hash'), mask_hash(hash)),\n        ])\n\n\nclass UnsaltedMD5PasswordHasher(BasePasswordHasher):\n    \"\"\"\n    Incredibly insecure algorithm that you should *never* use; stores unsalted\n    MD5 hashes without the algorithm prefix, also accepts MD5 hashes with an\n    empty salt.\n\n    This class is implemented because Django used to store passwords this way\n    and to accept such password hashes. Some older Django installs still have\n    these values lingering around so we need to handle and upgrade them\n    properly.\n    \"\"\"\n    algorithm = \"unsalted_md5\"\n\n    def salt(self):\n        return ''\n\n    def encode(self, password, salt):\n        assert salt == ''\n        return hashlib.md5(force_bytes(password)).hexdigest()\n\n    def verify(self, password, encoded):\n        if len(encoded) == 37 and encoded.startswith('md5$$'):\n            encoded = encoded[5:]\n        encoded_2 = self.encode(password, '')\n        return constant_time_compare(encoded, encoded_2)\n\n    def safe_summary(self, encoded):\n        return SortedDict([\n            (_('algorithm'), self.algorithm),\n            (_('hash'), mask_hash(encoded, show=3)),\n        ])\n\n\nclass CryptPasswordHasher(BasePasswordHasher):\n    \"\"\"\n    Password hashing using UNIX crypt (not recommended)\n\n    The crypt module is not supported on all platforms.\n    \"\"\"\n    algorithm = \"crypt\"\n    library = \"crypt\"\n\n    def salt(self):\n        return get_random_string(2)\n\n    def encode(self, password, salt):\n        crypt = self._load_library()\n        assert len(salt) == 2\n        data = crypt.crypt(force_str(password), salt)\n        # we don't need to store the salt, but Django used to do this\n        return \"%s$%s$%s\" % (self.algorithm, '', data)\n\n    def verify(self, password, encoded):\n        crypt = self._load_library()\n        algorithm, salt, data = encoded.split('$', 2)\n        assert algorithm == self.algorithm\n        return constant_time_compare(data, crypt.crypt(force_str(password), data))\n\n    def safe_summary(self, encoded):\n        algorithm, salt, data = encoded.split('$', 2)\n        assert algorithm == self.algorithm\n        return SortedDict([\n            (_('algorithm'), algorithm),\n            (_('salt'), salt),\n            (_('hash'), mask_hash(data, show=3)),\n        ])\n\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/af/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2011-01-19 15:33+0000\\n\"\n\"Last-Translator: Django team\\n\"\n\"Language-Team: Afrikaans (http://www.transifex.com/projects/p/django/\"\n\"language/af/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: af\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"Wagwoord\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Vul dieselfde wagwoord in as hierbo, for bevestiging.\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"Nuwe wagwoord\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"Ou wagwoord\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"Wagwoord (weer)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/ar/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2012-12-16 08:51+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Arabic (http://www.transifex.com/projects/p/django/language/\"\n\"ar/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ar\\n\"\n\"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 \"\n\"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"المعلومات الشخصية\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"الصلاحيات\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"تواريخ مهمة\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"تم تغيير كلمة المرور بنجاح.\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"غيّر كلمة المرور: %s\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"هناك مستخدم موجود مسبقاً بهذا الاسم.\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"حقلا كلمتي المرور غير متطابقين.\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"اسم المستخدم\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"مطلوب. 30 حرف أو أقل. يتكوّن من حروف، وأرقام، والرموز @/./+/-/_ فقط.\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"هذه القيمة يجب أن تحتوي الأحرف، والأرقام، والرموز @/./+/-/_ فقط.\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"كلمة المرور\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"تأكيد كلمة المرور\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"أدخل كلمة المرور ذاتها التي أعلاه لتأكيدها.\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"يبدو بأن الكوكيز غير مفعله في متصفحك، الكوكيز مطلوبة للتمكن من الدخول.\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"هذا الحساب غير نشط.\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"كلمة المرور الجديدة\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"تأكيد كلمة المرور الجديدة\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"كلمة مرورك القديمة غير صحيحة. رجاءً أدخلها مرة أخرى.\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"كلمة المرور القديمة\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"كلمة المرور (مجدداً)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"الاسم\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"الاسم الرمزي\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"الصلاحية\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"الصلاحيات\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"مجموعة\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"المجموعات\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"كلمة المرور\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"آخر دخول\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"حالة المستخدم الخارق\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"\"\n\"حدد بأن هذا المستخدم يمتلك كافة الصلاحيات دون الحاجة لتحديدها له تصريحا.\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"صلاحيات المستخدم\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"اسم المستخدم\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"مطلوب. 30 حرف أو أقل. يتكوّن من حروف، وأرقام، والرموز @/./+/-/_ فقط.\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"الاسم الأول\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"الاسم الأخير\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"حالة الطاقم\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"يحدد ما إذا كان المستخدم يستطيع الدخول إلى موقع الإدارة هذا.\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"نشط\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\"يحدد ما إذا كان المستخدم سيُعامل على أنّه نشط. أزل تحديد ها الخيار بدلاً من حذف \"\n\"الحسابات.\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"تاريخ الانضمام\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"مستخدم\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"المستخدمين\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"تم الخروج\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/az/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Ali Ismayilov <ali@ismailov.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2012-12-16 08:51+0000\\n\"\n\"Last-Translator: Ali Ismayilov <ali@ismailov.info>\\n\"\n\"Language-Team: Azerbaijani (http://www.transifex.com/projects/p/django/\"\n\"language/az/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: az\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"Şəxsi məlumat\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"İcazələr\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"Vacib tarixlər\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"Parol uğurla dəyişdirildi\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"Parolu dəyiş: %s\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"Bu istifadəçi adı altında başqa istifadəçi var.\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"Parollar üst-üstə düşmədi.\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"İstifadəçi adı\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"\"\n\"Vacibdir. 30 simvoldan az olmalıdır. Yalnız hərf, rəqəm və @/./+/-/_ \"\n\"simvollarından istifadə etmək olar.\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"Yalnız hərf, rəqəm və @/./+/-/_ simvollarından istifadə etmək olar.\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"Parol\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"Parolun təsdiqi\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Yuxarıdakı parolu daxil edin ki, dəqiqliyinə əmin olaq.\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"\"\n\"Sizin brauzerdə kukilər (cookie) aktiv deyil. Daxil olmaq üçün onlar aktiv \"\n\"olmağı vacibdir.\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"Bu hesab qeyri-aktivdir.\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"Yeni parol\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"Yeni parolun təsdiqi\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"\"\n\"Köhnə parolu səhv daxil etdiniz. Bir daha cəhd etməyinizi xahiş edirik.\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"Köhnə parol\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"Parol (bir daha)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"ad\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"kod adı\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"icazə\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"icazələr\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"qrup\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"qruplar\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"parol\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"son dəfə daxil olub\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"superistifadəçi statusu\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"İstifadəçiyə bütün icazələri verir.\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"səlahiyyətləri\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"istifadəçi adı\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"\"\n\"Vacibdir. 30 simvola bərabər və ya az olmalıdır. Yalnız hərf, rəqəm və @/./\"\n\"+/-/_ simvollarından istifadə etmək olar.\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"ad\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"soyad\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"admin statusu\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"İstifadəçinin admin panelinə daxil olub, olmayacağını təyin edir.\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"Aktiv\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\"İstifadəçinin aktiv və ya qeyri-aktiv olmasını təyin edir. Hesabları silmək \"\n\"əvəzinə bundan istifadə edin.\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"qoşulub\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"istifadəçi\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"istifadəçilər\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"Çıxdınız\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"%(site_name)s, parolun sıfırlanması\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/be/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2012-12-16 08:51+0000\\n\"\n\"Last-Translator: Павал Клёк <yehekim@gmail.com>\\n\"\n\"Language-Team: Belarusian (http://www.transifex.com/projects/p/django/\"\n\"language/be/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: be\\n\"\n\"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"Асабістыя зьвесткі\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"Дазволы\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"Важныя даты\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"Пароль зьмянілі.\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"Зьмяніць пароль: %s\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"Карыстальнік з такім іменем ужо існуе.\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"Не супадаюць паролі ў двух палях.\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"Імя карыстальніка\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"\"\n\"Абавязковае поле. Да трыццаці знакаў. Толькі лічбы, літары ды знакі «@», \"\n\"«.» (кропка), «+», «-», «_».\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"\"\n\"Дазваляюцца толькі літары, лічбы ды знакі «@», «.» (кропка), «+», «-», «_».\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"Пароль\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"Пацьвердзіце пароль\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Дзеля пэўнасьці набярыце такі самы пароль яшчэ раз.\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\"Паролі не захоўваюцца ў такім выглядзе, як іх набралі, таму ўбачыць пароль \"\n\"карыстальніка нельга, але яго можна зьмяніць <a href=\\\"password/\\\">тут</a>.\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"\"\n\"Падобна, што сеціўны аглядальнік не дазваляе сьляды («кукі»). Але каб \"\n\"увайсьці, трэба дазволіць «сьляды».\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"Рахунак ня дзейнічае.\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"Новы пароль\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"Пацьвердзіце новы пароль\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"Пазначылі неадпаведны стары пароль. Набярыце яго зноўку.\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"Стары пароль\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"Пароль (яшчэ раз)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"альґарытм\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"паўтарэньні\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"соль\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"скарот\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"множнік працы\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"кантрольная сума\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"назва\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"найменьне\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"дазвол\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"дазволы\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"суполка\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"суполкі\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"пароль\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"апошні раз уваходзіў\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"становішча спраўніка\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"\"\n\"Паказвае, ці мае карыстальнік усе дазволы без таго, каб іх яўна прызначаць.\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\"Суполкі, у якія ўваходзіць карыстальнік. Карыстальнік атрымае дазволы, якія \"\n\"мае кожная ягоная суполка.\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"дазволы карыстальніка\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"імя карыстальніка\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"\"\n\"Абавязковае поле. Да трыццаці знакаў. Лічбы, літары ды знакі «@», \"\n\"«.» (кропка), «+», «-», «_».\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"імя\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"прозьвішча\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"становішча\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"Паказвае, ці можа карыстальнік ўваходзіць на кіраўнічую пляцоўку.\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"дзейны\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\"Паказвае, ці трэба ставіцца да карыстальніка як да дзейнага. Замест таго \"\n\"каб, каб выдаляць рахунак, зраіце карыстальніка нядзейным.\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"калі далучылі\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"карыстальнік\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"карыстальнікі\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"Не ўвайшоў\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"Узнавіць пароль на %(site_name)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/bg/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Boris Chervenkov <office@sentido.bg>, 2012.\n#   <grgkostadinov@gmail.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Todor Lubenov <tlubenov@gmail.com>, 2011-2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2012-12-16 08:51+0000\\n\"\n\"Last-Translator: Todor Lubenov <tlubenov@gmail.com>\\n\"\n\"Language-Team: Bulgarian (http://www.transifex.com/projects/p/django/\"\n\"language/bg/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: bg\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"Лична информация\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"Права\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"Важни дати\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"Паролата беше променена успешно.  \"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"Промени парола: %s\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"Потребител с това потребителско име вече съществува.  \"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"Двете полета за паролата не съвпадат.  \"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"Потребител\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"Задължително. 30 знака или по-малко. Букви, цифри и @/./+/-/_ .\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"Тази стойност може да съдържа само букви, цифри и  @/./+/-/_ символи.\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"Парола\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"Потвърждение на паролата\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Въведете същата парола още веднъж за проверка.  \"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\"Ние не запаметяваме паролите в чист вид, така че няма как да видите паролата \"\n\"на този потребител. Можете да промените паролата чрез <a href=\\\"password/\"\n\"\\\">този формуляр</a>.\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"\"\n\"Браузърът, който използвате не поддържа cookies, а те са необходими за да \"\n\"можете да се впишете.  \"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"Този профил е неактивен.\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"Нова парола\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"потвърждение на нова паролата\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"Въвели сте погрешна стара парола. Въведете я отново.  \"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"Стара парола\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"Парола (отново)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"алгоритъм\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"повторения\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"'salt'\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"хеш\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"работен фактор\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"чексума\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"име\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"код\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"право\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"права\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"група\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"групи\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"парола\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"последно вписване\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"статут на супер-потребител\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"\"\n\"Указва, че този потребител има всички права (без да има нужда да се \"\n\"изброяват изрично).\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\"Групата, към която този потребител принадлежи. Този потребител ще получи \"\n\"правата на всяка група, към която принадлежи.\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"права на потребител\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"потребител\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"Задължително. 30 знака или по-малко. Букви, цифри и символи @/./+/-/_\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"собствено име\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"фамилно име\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"статус на персонал\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"Указва дали този потребител има достъп до административния панел.\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"активен\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\"Указва дали този потребител трябва да се третира като активен. Премахнете на \"\n\"избора на това, вместо да триете профила.\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"дата на регистриране\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"потребител\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"потребители\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"Извън системата\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"Променена парола на %(site_name)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/bn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2012-12-16 08:51+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Bengali (http://www.transifex.com/projects/p/django/language/\"\n\"bn/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: bn\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"ব্যক্তিগত তথ্য\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"অনুমোদন\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"গুরুত্বপূর্ণ তারিখ\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"পাসওয়ার্ড বদল সফল হয়েছে।\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"পাসওয়ার্ড বদলানঃ %s\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"এই সদস্যনামে একজন সদস্য আছেন।\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"পাসওয়ার্ড দুটো মেলেনি।\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"সদস্যনাম\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"পাসওয়ার্ড\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"পাসওয়ার্ড নিশ্চিত করুন\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"উপরের পাসওয়ার্ডটি পুনরায় প্রবেশ করান, যাচাইয়ের জন্য।\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"আপনার ব্রাউজার কুকি গ্রহণে সক্ষম নয়। লগইন করার জন্য কুকি আবশ্যক।\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"এই একাউন্টটি কার্যকর নয়।\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"নতুন পাসওয়ার্ড\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"নতুন পাসওয়ার্ড নিশ্চিতকরণ\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"\"\n\"আপনার পুরনো পাসওয়ার্ড ঠিকভাবে প্রবেশ করানো হয়নি। অনুগ্রহপূর্বক সঠিক পাসওয়ার্ড দিন।\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"পুরনো পাসওয়ার্ড\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"পাসওয়ার্ড (পুনরায়)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"নাম\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"কোডনাম\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"অনুমোদন\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"অনুমোদন\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"দল\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"দল সমূহ\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"পাসওয়ার্ড\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"সর্বশেষ প্রবেশ\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"সুপারইউজার মর্যাদা\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"সদস্যকে সকল ধরণের অনুমতি প্রদান করে।\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"সদস্যের অনুমোদন সমূহ\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"সদস্যনাম\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"প্রথম নাম\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"শেষ নাম\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"স্টাফ মর্যাদা\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"সদস্যকে প্রশাসন সাইটে প্রবেশাধিকার প্রদান।\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"সচল\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"সদস্যকে সচল হিসেবে নির্ধারণ করুন। একাউন্ট মুছে ফেলার বদলে এটি ব্যবহার করুন।\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"যোগদানের তারিখ\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"সদস্য\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"সদস্যগণ\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"প্রস্থান সম্পন্ন\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/br/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Fulup  <fulup.jakez@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2012-12-16 08:51+0000\\n\"\n\"Last-Translator: Fulup <fulup.jakez@gmail.com>\\n\"\n\"Language-Team: Breton (http://www.transifex.com/projects/p/django/language/\"\n\"br/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: br\\n\"\n\"Plural-Forms: nplurals=2; plural=(n > 1);\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"Ger-tremen\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"Ger-tremen nevez\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"Kadarnaat ar ger-tremen nevez\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"Ger-tremen kozh\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"Ger-tremen (adarre)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"anv\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"strollad\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"strolladoù\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"ger-tremen\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"kevreet da ziwezhañ\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"anv-bihan\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"anv-familh\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"implijer\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"implijerien\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"Digevreet\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/bs/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2012-12-16 08:51+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Bosnian (http://www.transifex.com/projects/p/django/language/\"\n\"bs/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: bs\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"Lični podaci\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"Dozvole\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"Važni datumi\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"Lozinka uspješno izmjenjena.\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"Izmjeni lozinku: %s\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"Korisnik sa tim korisničkim imenom već postoji.\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"Dva polja za lozinku se nisu poklopila.\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"Korisnik\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"\"\n\"Neophodno. Najviše 30 slovnih mesta. Samo slova, brojke i  @/./+/-/_ only.\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"\"\n\"Ova vrijednost može sadržati samo slova, brojke i  digits and @/./+/-/_ \"\n\"znamenke.\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"Lozinka\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"Potvrda lozinke\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Radi provjere tačnosti ponovo unesite lozinku koju ste unijeli gore.\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"\"\n\"Izgleda da su kolačići isključeni u vašem browser-u. Oni moraju biti \"\n\"uključeni da bi ste se prijavili.\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"Ovaj nalog je neaktivan.\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"Nova lozinka\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"Potvrda nove lozinke\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"Vaša stara lozinka nije pravilno unesena. Unesite je ponovo.\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"Stara lozinka\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"Lozinka (ponovite)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"ime\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"šifra dozvole\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"dozvola\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"dozvole\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"grupa\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"grupe\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"lozinka\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"posljednja prijava\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"status administratora\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"\"\n\"Označava da li korisnik ima sve dozvole bez dodjeljivanja pojedinačnih \"\n\"dozvola.\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"korisničke dozvole\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"korisničko ime\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"\"\n\"Neophodno. Najviše 30 slovnih mesta. Slova, brojke i  @/./+/-/_ karakteri\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"ime\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"prezime\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"status člana uredništva\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"\"\n\"Označava da li korisnik može da se prijavi na ovaj sajt za administraciju.\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"aktivan\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\"Označava da li se korisnik smatra aktivnim. Uklnote izbor sa ovog polja \"\n\"umjesto da brišete nalog.\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"datum registracije\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"korisnik\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"korisnici\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"Odjavljen\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/ca/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Antoni Aloy <aaloy@apsl.net>, 2012-2013.\n# Carles Barrobés <carles@barrobes.com>, 2011, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2013-01-10 18:53+0000\\n\"\n\"Last-Translator: Antoni Aloy <aaloy@apsl.net>\\n\"\n\"Language-Team: Catalan (http://www.transifex.com/projects/p/django/language/\"\n\"ca/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ca\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"Informació personal\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"Permisos\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"Dates importants\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"Contrasenya canviada amb èxit\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"Canviar contrasenya: %s\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"No s'ha establert la clau.\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"Format de clau incorrecta o algorisme de hash desconegut.\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"Ja existeix un usuari amb aquest nom.\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"Els dos camps de contrasenya no coincideixen.\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"Nom d'usuari\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"Obligatori. 30 o menys caràcters. Només lletres, dígits i @/./+/-/_.\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"Aquest valor ha de contenir només lletres, números i @/./+/-/_.\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"Contrasenya\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"Confirmació de contrasenya\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Introduïu la mateixa contrasenya de dalt, per fer-ne la verificació.\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\"No s'emmagatzemen les contrasenyes en clar, per tant no hi ha manera de \"\n\"veure la contrasenya d'aquest usuari, però la podeu canviar fent servir <a \"\n\"href=\\\"password/\\\">aquest formulari</a>.\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\"SSi us plau, introduïu un %(username)s i clau. Observeu que ambdós camps \"\n\"poden ser sensibles a majúscules.\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"\"\n\"El vostre navegador no sembla tenir les galetes ('cookies') activades. \"\n\"Aquestes són necessàries per iniciar la sessió.\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"Aquest compte està inactiu\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\"Aquesta adreça de correu no té associat cap compte d'usuari. Està segur \"\n\"d'haver-se enregistrat?\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\"L'usuari associat a aquesta adreça de correu electrònic no pot restablir la \"\n\"clau.\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"Correu electrònic\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"Contrasenya nova\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"Contrasenya nova confirmada\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"\"\n\"La vostra antiga contrasenya no és correcta. Si us plau, introduïu-la de nou.\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"Contrasenya antiga\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"Contrasenya (de nou)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"algorisme\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"iteracions\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"sal\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"hash\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"factor de treball\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"suma de comprovació\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"nom\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"nom en clau\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"permís\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"permisos\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"grup\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"grups\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"contrasenya\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"últim inici de sessió\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"estat de superusuari\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"\"\n\"Designa que aquest usuari té tots els permisos sense assignar-los \"\n\"explícitament.\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\"Els grups als quals pertany aquest usuari. A un usuari se li concediran tots \"\n\"els permisos de cadascun dels seus grups.\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"permisos de l'usuari\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"nom d'usuari\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"Obligatori. 30 o menys caràcters. Només lletres, números i @/./+/-/_\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"Introdueix un nom d'usuari vàlid\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"nom propi\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"cognoms\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"adreça de correu electrònic\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"membre del personal\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"Designa si l'usuari pot entrar al lloc administratiu.\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"actiu\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\"Designa si aquest usuari ha de ser tractat com a actiu. Deseleccioneu-ho \"\n\"enlloc d'esborrar comptes d'usuari.\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"data d'incorporació\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"usuari\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"usuaris\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"Sessió finalitzada\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"Reinicialitzar la contrasenya a %(site_name)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/cs/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Vlada Macek <macek@sandbox.cz>, 2011-2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2012-12-17 13:06+0000\\n\"\n\"Last-Translator: Vlada Macek <macek@sandbox.cz>\\n\"\n\"Language-Team: Czech (http://www.transifex.com/projects/p/django/language/\"\n\"cs/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: cs\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"Osobní údaje\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"Oprávnění\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"Důležitá data\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"Změna hesla byla úspěšná.\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"Heslo pro uživatele %s: změnit\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"Heslo nenastaveno.\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"Neplatný formát hesla nebo neplatný hashovací algoritmus.\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"Uživatel s tímto jménem již existuje.\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"Hesla se neshodují.\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"Uživatelské jméno\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"\"\n\"Požadováno. 30 znaků nebo méně. Pouze písmena bez diakritiky (háčků a \"\n\"čárek), číslice a znaky @/./+/-/_.\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"\"\n\"Hodnota může obsahovat pouze písmena bez diakritiky (háčků a čárek), číslice \"\n\"a znaky @/./+/-/_.\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"Heslo\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"Potvrzení hesla\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Pro ověření vložte stejné heslo znovu.\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\"Hesla se neukládají přímo a tak je nelze zobrazit. Je ale možné je změnit \"\n\"pomocí <a href=\\\"password/\\\">tohoto formuláře</a>.\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\"Zadejte správnou hodnotu pole %(username)s a heslo. Pozor, obě pole mohou \"\n\"rozlišovat malá a velká písmena.\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"\"\n\"Váš prohlížeč zřejmě nemá povoleno přijímat cookies, které jsou ale potřeba \"\n\"pro přihlášení.\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"Tento účet je neaktivní.\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\"S touto e-mailovou adresou není spojen žádný účet. Určitě jste registrován\"\n\"(a)?\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\"Uživatelský účet spojený s touto e-mailovou adresou nemůže obnovovat heslo.\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"E-mail\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"Nové heslo\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"Potvrzení nového hesla\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"Vaše současné heslo nebylo vloženo správně. Zkuste to znovu.\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"Současné heslo\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"Heslo (znovu)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"algoritmus\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"iterace\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"hodnota salt\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"hash\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"faktor práce\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"kontrolní součet\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"název\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"kódový název\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"oprávnění\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"oprávnění\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"skupina\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"skupiny\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"heslo\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"poslední přihlášení\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"superuživatel\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"\"\n\"Určuje, že uživatel má veškerá oprávnění bez jejich explicitního přiřazení.\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\"Skupiny, do kterých tento uživatel patří. Uživatel dostane všechna oprávnění \"\n\"udělená každé z jeho skupin.\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"uživatelská oprávnění\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"uživatelské jméno\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"\"\n\"Požadováno. 30 znaků nebo méně. Pouze písmena bez diakritiky (háčků a \"\n\"čárek), číslice a znaky @/./+/-/_.\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"Zadejte platné uživatelské jméno\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"křestní jméno\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"příjmení\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"e-mailová adresa\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"administrační přístup\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"Určuje, zda se uživatel může přihlásit do správy tohoto webu.\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"aktivní\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\"Určuje, zda bude uživatel považován za aktivního. Použijte tuto možnost \"\n\"místo odstranění účtů.\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"datum registrace\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"uživatel\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"uživatelé\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"Odhlášeno\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"Obnovení hesla na webu %(site_name)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/cy/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2012-12-16 08:51+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Welsh (http://www.transifex.com/projects/p/django/language/\"\n\"cy/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: cy\\n\"\n\"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != \"\n\"11) ? 2 : 3;\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"Gwybodaeth personol\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"Hawliau\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"Dyddiadau pwysig\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"enw\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"enw arwyddol\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"cyfrinair\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"mewngofnod olaf\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"statws defnyddiwr swper\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"enw defnyddiwr\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"enw cyntaf\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"enw olaf\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"statws staff\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"Dylunio ai'r defnyddiwr yn gally mewngofnodi i'r safle weinyddiad yma.\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"gweithredol\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"Dyddiad\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/da/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Christian Joergensen <christian@gmta.info>, 2012.\n# Erik Wognsen <r4mses@gmail.com>, 2011-2013.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2013-01-13 04:31+0000\\n\"\n\"Last-Translator: Erik Wognsen <r4mses@gmail.com>\\n\"\n\"Language-Team: Danish (http://www.transifex.com/projects/p/django/language/\"\n\"da/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: da\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"Personlig information\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"Rettigheder\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"Vigtige datoer\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"Adgangskoden blev ændret.\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"Skift adgangskode: %s\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"Ingen adgangskode valgt.\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"Ugyldigt adgangskodeformat eller hashing-algoritme.\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"En bruger med dette brugernavn findes allerede.\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"De to adgangskoder var ikke identiske.\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"Brugernavn\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"Påkrævet. Højst 30 tegn. Kun  bogstaver og cifre samt @/./+/-/_\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"\"\n\"Dette felt må kun indeholde bogstaver og cifre samt disse tegn: @/./+/-/_\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"Adgangskode\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"Bekræftelse af adgangskode\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Indtast den samme adgangskode som ovenfor for verifikation.\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\"Rå adgangskoder gemmes ikke, så det er ikke muligt at se denne brugers \"\n\"adgangskode, men du kan ændre adgangskoden ved hjælp af <a href=\\\"password/\"\n\"\\\">denne formular</a>.\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\"Indtast venligst et korrekt %(username)s og adgangskode. Bemærk at begge \"\n\"felter kan være versalfølsomme.\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"\"\n\"Din browser ser ud til ikke at have cookies aktiveret. Cookies er påkrævet \"\n\"for at kunne logge ind.\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"Denne konto er inaktiv.\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\"Den e-mail-adresse er ikke knyttet til en brugerkonto. Er du sikker på, du \"\n\"har registreret dig?\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\"Den brugerkonto, der er tilknyttet denne e-mail-adresse, kan ikke nulstille \"\n\"adgangskoden.\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"E-mail\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"Ny adgangskode\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"Bekræftelse af ny adgangskode\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"\"\n\"Din gamle adgangskode blev ikke indtastet korrekt. Indtast den venligst igen.\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"Gammel adgangskode\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"Adgangskode (igen)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"algoritme\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"iterationer\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"salt\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"hash\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"work factor\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"tjeksum\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"navn\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"kodenavn\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"rettighed\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"rettigheder\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"gruppe\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"grupper\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"adgangskode\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"sidst logget ind\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"superbrugerstatus\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"\"\n\"Bestemmer at denne bruger har alle rettigheder uden at tildele dem eksplicit.\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\"Grupperne som denne bruger hører til. En bruger får alle rettigheder givet \"\n\"til hver af hans/hendes grupper.\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"rettigheder\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"brugernavn\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"\"\n\"Påkrævet. Højst 30 tegn. Kun  bogstaver og cifre samt disse tegn: @/./+/-/_\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"Indtast et gyldigt brugernavn.\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"fornavn\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"efternavn\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"e-mail-adresse\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"admin-status\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"Bestemmer om brugeren kan logge ind på dette administrationswebsite.\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"aktiv\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\"Bestemmer om brugeren skal behandles som aktiv. Fravælg dette frem for at \"\n\"slette en konto.\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"dato for registrering\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"bruger\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"brugere\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"Logget ud\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"Adgangskode nulstillet på %(site_name)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/de/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# André Hagenbruch <ahagenbruch@googlemail.com>, 2011.\n#   <florian@apolloner.eu>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011-2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2012-12-23 13:25+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: German (http://www.transifex.com/projects/p/django/language/\"\n\"de/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: de\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"Persönliche Infos\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"Berechtigungen\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"Wichtige Daten\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"Passwort erfolgreich geändert.\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"Passwort ändern: %s\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"Kein Passwort gesetzt.\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"Ungültiges Passwortformat oder unbekannter Hashing-Algorithmus.\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"Dieser Benutzername ist bereits vergeben.\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"Die beiden Passwörter sind nicht identisch.\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"Benutzername\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"\"\n\"Erforderlich. 30 Zeichen oder weniger. Nur alphanumerische Zeichen \"\n\"(Buchstaben, Ziffern und @/./+/-/_) sind erlaubt.\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"Dieser Wert darf nur Buchstaben, Ziffern und @/./+/-/_ enthalten.\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"Passwort\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"Passwort bestätigen\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Bitte das gleiche Passwort zur Überprüfung nochmal eingeben.\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\"Die Passwörter werden nicht als Klartext gespeichert, somit gibt es keine \"\n\"Möglichkeit das Passwort dieses Benutzers anzuschauen, allerdings kann das \"\n\"Passwort über <a href=\\\"password/\\\">dieses Formular</a> geändert werden.\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\"Bitte einen gültigen %(username)s und ein Passwort eingeben. Beide Felder \"\n\"berücksichtigen die Groß-/Kleinschreibung.\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"\"\n\"Der Webbrowser scheint keine Cookies aktiviert zu haben. Cookies sind für \"\n\"die Anmeldung zwingend erforderlich.\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"Dieser Benutzer ist inaktiv.\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\"Diese E-Mail-Adresse ist keinem Benutzer zugeordnet. Sicher, dass es die \"\n\"richtige ist?\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\"Der Benutzer mit dieser E-Mail-Adresse kann das Passwort nicht zurücksetzen.\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"E-Mail-Adresse\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"Neues Passwort\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"Neues Passwort bestätigen\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"Das alte Passwort war falsch. Bitte neu eingeben.\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"Altes Passwort\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"Passwort (wiederholen)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"Algorithmus\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"Iterationen\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"Salt\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"Hash\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"Arbeitsfaktor\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"Prüfsumme\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"Name\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"Codename\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"Berechtigung\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"Berechtigungen\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"Gruppe\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"Gruppen\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"Passwort\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"Letzte Anmeldung\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"Administrator-Status\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"\"\n\"Legt fest, dass der Benutzer alle Berechtigungen hat, ohne diese einzeln \"\n\"zuweisen zu müssen.\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\"Die Gruppen, denen der Benutzer angehört. Ein Benutzer bekommt alle \"\n\"Berechtigungen seiner zugeteilten Gruppen.\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"Berechtigungen\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"Benutzername\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"\"\n\"Erforderlich. 30 Zeichen oder weniger. Nur alphanumerische Zeichen \"\n\"(Buchstaben, Ziffern und @/./+/-/_) sind erlaubt.\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"Bitte einen gültigen Benutzernamen eingeben.\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"Vorname\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"Nachname\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"E-Mail-Adresse\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"Redakteur-Status\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"\"\n\"Legt fest, ob sich der Benutzer an der Administrationsseite anmelden kann.\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"Aktiv\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\"Legt fest, ob dieser Benutzer aktiv ist. Kann deaktiviert werden, anstatt \"\n\"Benutzer zu löschen.\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"Mitglied seit\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"Benutzer\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"Benutzer\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"Abgemeldet\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"Passwort auf %(site_name)s zurücksetzen\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/el/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Translators:\n# Apostolis Bessas <mpessas+txc@transifex.com>, 2013.\n# Dimitris Glezos <glezos@indifex.com>, 2011, 2012.\n# glogiotatidis <seadog@sealabs.net>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Yorgos Pagles <y.pagles@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2013-02-23 21:50+0000\\n\"\n\"Last-Translator: Apostolos Mpessas <mpessas+txc@transifex.com>\\n\"\n\"Language-Team: Greek (http://www.transifex.com/projects/p/django/language/\"\n\"el/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: el\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"Προσωπικές πληροφορίες\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"Δικαιώματα\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"Σημαντικές ημερομηνίες\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"Ο κωδικός πρόσβασης αλλάχτηκε με επιτυχία.\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"Αλλαγή κωδικού πρόσβασης: %s\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"Αυτό το όνομα χρήστη χρησιμοποιείται ήδη.\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"Τα δύο πεδία κωδικού χρήστη δεν ταιριάζουν.\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"Όνομα χρήστη\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"\"\n\"Απαραίτητο. Πρέπει να αποτελείται από 30 ή λιγότερους χαρακτήρες. Μπορείτε \"\n\"να χρησιμοποιήσετε μόνο γράμματα, αριθμούς και τους χαρακτήρες @/./+/-/_.\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"\"\n\"Αυτή η τιμή μπορεί να περιέχει μόνο γράμματα, αριθμούς και τους χαρακτήρες \"\n\"@/./+/-/_.\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"Κωδικός χρήστη\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"Επιβεβαίωση κωδικού χρήστη\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"\"\n\"Εισάγετε τον ίδιο κωδικό χρήστη όπως παραπάνω, για λόγους επιβεβαίωσης.\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"\"\n\"Ο πλοηγητής σας δεν φαίνεται να έχει ενεργοποιημένα τα αρχεία cookie. Τα \"\n\"αρχεία cookie απαιτούνται για να συνδεθείτε.\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"Αυτός ο λογαριασμός είναι ανενεργός.\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"Νέο συνθηματικό\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"Επιβεβαίωση νέου συνθηματικού\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"Το παλιό συνθηματικό σας δόθηκε λανθασμένα. Παρακαλώ δοκιμάστε ξανά.\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"Παλιό συνθηματικό\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"Συνθηματικό (ξανά)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"όνομα\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"κωδικό όνομα\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"δικαίωμα\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"διακαιώματα\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"ομάδα\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"ομάδες\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"συνθηματικό\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"τελευταία σύνδεση\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"κατάσταση υπερχρήστη\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"\"\n\"Υποδηλώνει ότι ο συγκεκριμένος χρήστης έχει όλα τα δικαιώματα χωρίς να \"\n\"χρειάζεται να τα παραχωρήσετε ξεχωριστά.\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"δικαιώματα χρήστη\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"όνομα χρήστη\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"\"\n\"Απαραίτητα. 30 ή λιγότεροι χαρακτήρες. Γράμματα, αριθμοί και οι χαρακτήρες \"\n\"@/./+/-/_.\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"Εισάφετε ένα έγκυρο όνομα χρήστη.\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"όνομα\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"επώνυμο\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"Κατάσταση προσωπικού\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"Ορίζει αν ο χρήστης μπορεί να συνδεθεί στο χώρο διαχείρισης.\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"ενεργό\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\"Υποδηλώνει αν ο συγκεκριμένος χρήστης μπορεί να θεωρηθεί ενεργός. Προτιμήστε \"\n\"την επεπιλογή αυτής της επιλογής αντί του να πραγματοποιήσετε διαγραφή του \"\n\"χρήστη.\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"ημερομηνία σύνδεσης\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"χρήστης\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"χρήστες\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"Έγινε αποσύνδεση\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"Επαναφοράς κωδικού πρόσβασης για το %(site_name)s \"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/en/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2012-12-16 08:51+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: English <en@li.org>\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: en\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"Personal info\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"Permissions\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"Important dates\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"Password changed successfully.\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"Change password: %s\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"No password set.\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"Invalid password format or unknown hashing algorithm.\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"A user with that username already exists.\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"The two password fields didn't match.\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"Username\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"Password\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"Password confirmation\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Enter the same password as above, for verification.\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"This account is inactive.\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"Email\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"New password\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"New password confirmation\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"Your old password was entered incorrectly. Please enter it again.\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"Old password\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"Password (again)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"algorithm\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"iterations\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"salt\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"hash\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"work factor\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"checksum\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"name\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"codename\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"permission\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"permissions\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"group\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"groups\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"password\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"last login\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"superuser status\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"user permissions\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"username\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"Enter a valid username.\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"first name\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"last name\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"email address\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"staff status\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"Designates whether the user can log into this admin site.\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"active\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"date joined\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"user\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"users\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"Logged out\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"Password reset on %(site_name)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/en_GB/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# jon_atkinson <jon@jonatkinson.co.uk>, 2011.\n#   <jon@jonatkinson.co.uk>, 2012.\n# Ross Poulton <ross@rossp.org>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2012-12-16 08:51+0000\\n\"\n\"Last-Translator: Ross Poulton <ross@rossp.org>\\n\"\n\"Language-Team: English (United Kingdom) (http://www.transifex.com/projects/p/\"\n\"django/language/en_GB/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: en_GB\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"Personal info\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"Permissions\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"Important dates\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"Password changed successfully.\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"Change password: %s\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"A user with that username already exists.\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"The two password fields didn't match.\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"Username\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"Password\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"Password confirmation\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Enter the same password as above, for verification.\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"This account is inactive.\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"New password\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"New password confirmation\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"Your old password was entered incorrectly. Please enter it again.\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"Old password\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"Password (again)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"algorithm\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"iterations\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"salt\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"hash\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"work factor\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"checksum\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"name\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"codename\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"permission\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"permissions\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"group\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"groups\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"password\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"last login\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"superuser status\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"user permissions\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"username\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"first name\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"last name\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"staff status\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"Designates whether the user can log into this admin site.\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"active\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"date joined\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"user\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"users\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"Logged out\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"Password reset on %(site_name)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/eo/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Baptiste  <baptiste+transifex@darthenay.fr>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2012-12-16 08:51+0000\\n\"\n\"Last-Translator: Baptiste <baptiste+transifex@darthenay.fr>\\n\"\n\"Language-Team: Esperanto (http://www.transifex.com/projects/p/django/\"\n\"language/eo/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: eo\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"Personaj informoj\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"Permesoj\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"Gravaj datoj\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"Pasvorto suksese ŝanĝita.\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"Ŝanĝi pasvorton: %s\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"Uzanto kun sama salutnomo jam ekzistas.\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"La du pasvotaj kampoj ne kongruas.\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"Salutnomo\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"Petita. 30 karakteroj aŭ malpli. Literoj, ciferoj kaj @/./+/-/_ nure.\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"\"\n\"Ĉi-tiu valoro povas enhavi nur literoj, ciferoj kaj la @/./+/-/_ karakteroj.\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"Pasvorto\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"Pasvorta konfirmo\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Entajpu la saman pasvorton kiel supre, por konfirmo.\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\"Pasvortoj ne estas krude entenita, do ne eblas vidi la pasvorton de tiu \"\n\"uzanto, sed vi povas ŝanĝi la pasvorton uzante <a href=\\\"password/\\\">tiu \"\n\"formalaro</a>.\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"\"\n\"Ŝajnas ke via retumilo ne havas kuketoj enŝaltitaj. Kuketoj estas postulitaj \"\n\"por ensaluti.\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"Ĉi-tiu konto ne estas aktiva.\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"Nova pasvorto\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"Nova pasvorto por konfirmo\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"\"\n\"Via malnova pasvorto estis nekorekte tajpita. Bonvolu denove entajpi ĝin.\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"Malnova pasvorto\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"Pasvorto (denove)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"algoritmo\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"iteracioj\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"salo\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"haketo\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"laborfaktoro\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"kontrolsumo\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"nomo\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"kodnomo\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"permeso\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"permesoj\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"grupo\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"grupoj\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"pasvorto\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"lasta ensaluto\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"ĉefuzanta statuso\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"\"\n\"Indikas ke tiu uzanto havas ĉiujn permesojn, sen eksplicite asigni ilin.\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\"La grupoj en kiu tiu uzanto apartenas. Uzanto akiros ĉiuj permesoj donita al \"\n\"ĉiuj de lia/ŝia grupo.\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"uzantaj permesoj\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"salutnomo\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"\"\n\"Petita. 30 karakteroj aŭ malpli. Literoj, nombroj kaj @/./+/-/_ karakteroj\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"persona nomo\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"famalia nomo\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"personara statuso\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"Indikas ĉu la uzanto povas saluti en ĉi-tiu administranta retejo.\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"aktiva\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\"Indikas ĉu tiu uzanto devus esti traktita kiel aktiva. Malselekti tion ĉi \"\n\"anstataŭ forigi kontojn.\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"dato aliĝita\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"uzanto\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"uzantoj\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"Adiaŭita\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"Pasvorta rekomencigo ĉe %(site_name)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/es/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Antoni Aloy <aaloy@apsl.net>, 2012-2013.\n# Antoni Aloy <antoni.aloy@trespams.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Leonardo J. Caballero G. <leonardocaballero@gmail.com>, 2011.\n#   <serra.guillem@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2013-01-10 18:54+0000\\n\"\n\"Last-Translator: Antoni Aloy <aaloy@apsl.net>\\n\"\n\"Language-Team: Spanish (http://www.transifex.com/projects/p/django/language/\"\n\"es/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: es\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"Información personal\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"Permisos\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"Fechas importantes\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"La contraseña se ha cambiado con éxito.\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"Cambiar contraseña: %s\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"No se ha establecido la clave\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"Formato de clave incorrecto o algoritmo de hash desconocido\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"Ya existe un usuario con este nombre.\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"Las dos contraseñas no coinciden.\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"Nombre de usuario\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"\"\n\"Requerido. 30 caracteres o menos. Letras, dígitos y @/./+/-/_ solamente.\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"Este valor puede contener sólo letras, números y @/./+/-/_.\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"Contraseña\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"Contraseña (confirmación)\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Introduzca la misma contraseña que arriba, para verificación.\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\"Las contraseñas no se almacenan en bruto, así que no hay manera de ver la \"\n\"contraseña del usuario, pero se puede cambiar la contraseña mediante <a href=\"\n\"\\\"password/\\\">este formulario</a> .\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\"Por favor, introduce un %(username)s y clave correctos. Observa que ambos \"\n\"campos pueden ser sensibles a mayúsculas.\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"\"\n\"Su navegador no parece tener las cookies habilitadas. Las cookies se \"\n\"necesitan para poder ingresar.\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"Esta cuenta está inactiva.\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\"Esta dirección de correo no tiene asociada cuenta de usuario. ¿Estás seguro \"\n\"que te has registrado?\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\"La cuenta de usuario asociada a esta dirección de correo no puede \"\n\"restablecer su clave.\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"Correo electrónico\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"Contraseña nueva\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"Contraseña nueva (confirmación):\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"\"\n\"Su contraseña antigua es incorrecta. Por favor, vuelva a introducirla \"\n\"correctamente.\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"Contraseña antigua\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"Contraseña (de nuevo)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"algoritmo\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"iteraciones\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"sal\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"función resumen\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"factor trabajo\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"suma de verificación\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"nombre\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"nombre en código\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"permiso\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"permisos\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"grupo\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"grupos\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"contraseña\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"último inicio de sesión\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"es superusuario\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"\"\n\"Indica que este usuario tiene todos los permisos sin asignárselos \"\n\"explícitamente.\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\"Los grupos a los que este usuario pertenece. Un usuario obtendrá todos los \"\n\"permisos concedidos a cada uno sus grupos.\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"permisos de usuario\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"nombre de usuario\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"Requerido. 30 caracteres o menos. Letras, números y @/./+/-/_\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"Introduce un nombre de usuario válido\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"nombre propio\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"apellidos\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"dirección de correo electrónico\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"es staff\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"Indica si el usuario puede entrar en este sitio de administración.\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"activo\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\"Indica si el usuario puede ser tratado como activo. Desmarque esta opción en \"\n\"lugar de borrar la cuenta.\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"fecha de alta\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"usuario\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"usuarios\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"Sesión terminada\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"Restablecimiento de la contraseña en %(site_name)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/es_AR/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Ramiro Morales <cramm0@gmail.com>, 2012-2013.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2013-02-18 15:01+0000\\n\"\n\"Last-Translator: Ramiro Morales <cramm0@gmail.com>\\n\"\n\"Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/\"\n\"django/language/es_AR/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: es_AR\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"Información personal\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"Permisos\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"Fechas importantes\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"Cambio de contraseña exitoso\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"Cambiar contraseña: %s\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"No se ha establecido una contraseña.\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"Formato de contraseña inválido o algoritmo de hashing desconocido.\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"Ya existe un usuario con ese nombre.\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"Los dos campos de contraseñas no coinciden entre si.\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"Nombre de usuario\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"\"\n\"Obligatorio. Longitud máxima 30 caracteres alfanuméricos (letras, dígitos y \"\n\"@/./+/-/_) solamente.\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"Este valor solo puede contener letras, números y @/./+/-/_.\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"Contraseña\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"Confirmación de contraseña\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"\"\n\"Para verificación, introduzca la misma contraseña que introdujo arriba.\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\"Las contraseñas no se almacenan por lo cual no es posible visualizar la \"\n\"contraseña de este usuario, pero puede modificarla usando <a href=\\\"password/\"\n\"\\\">este formulario</a>.\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\"Por favor introduzca un %(username)s y una contraseña correctos. Tenga en \"\n\"cuenta que ambos campos son sensibles a mayúsculas/minúsculas.\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"\"\n\"Su navegador Web aparenta no estar configurado para aceptar cookies. Las \"\n\"cookies son un requerimiento para poder ingresar.\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"Esta cuenta está inactiva\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\"La dirección de email provista no está asociada a ninguna cuenta de usuario. \"\n\"¿Está seguro de que se ha registrado?\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\"La cuenta de usuario asociada con esta dirección de email no puede \"\n\"restablecer la contraseña.\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"Email\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"Contraseña nueva\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"Confirmación de contraseña nueva\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"\"\n\"La antigua contraseña introducida es incorrecta. Por favor introdúzcala \"\n\"nuevamente.\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"Contraseña antigua\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"Contraseña (de nuevo)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"algoritmo\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"iteraciones\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"salt\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"hash\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"work fator\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"suma de verificación\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"nombre\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"nombre en código\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"permiso\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"permisos\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"grupo\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"grupos\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"contraseña\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"último ingreso\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"es superusuario\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"\"\n\"Indica que este usuario posee todos los permisos sin que sea necesario \"\n\"asignarle los mismos en forma explícita.\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\"Grupos a los cuales pertenece este usuario. Un usuario obtiene todos los \"\n\"permisos otorgados a cada uno de los grupos a los cuales pertenece.\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"permisos de usuario\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"nombre de usuario\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"\"\n\"Obligatorio. Longitud máxima de 30 caracteres alfanuméricos (letras, dígitos \"\n\"y @/./+/-/_).\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"Introduzca un nombre de usuario válido.\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"nombre\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"apellido\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"Dirección de email\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"es staff\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"Indica si el usuario puede ingresar a este sitio de administración.\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"activo\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\"Indica si el usuario debe ser tratado como un usuario activo. Desactive este \"\n\"campo en lugar de eliminar usuarios.\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"fecha de creación\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"usuario\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"usuarios\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"Sesión cerrada\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"Reinicio de contraseña en %(site_name)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/es_MX/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Abraham Estrada <abraham.estrada@gmail.com>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2012-12-16 08:51+0000\\n\"\n\"Last-Translator: jairtrejo <jairtrejo@gmail.com>\\n\"\n\"Language-Team: Spanish (Mexico) (http://www.transifex.com/projects/p/django/\"\n\"language/es_MX/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: es_MX\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"Información personal\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"Permisos\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"Fechas importantes\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"Cambio de contraseña exitoso\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"Cambiar contraseña: %s\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"Ya existe un usuario con ese nombre.\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"Los dos campos de contraseñas no coinciden entre si.\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"Nombre de usuario\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"\"\n\"Obligatorio. Longitud máxima 30 caracteres alfanuméricos (letras, dígitos y \"\n\"@/./+/-/_) solamente.\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"Este valor solo puede contener letras, números y @/./+/-/_.\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"Contraseña\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"Confirmación de contraseña\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Para verificar, introduzca la misma contraseña que introdujo arriba.\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\"Las contraseñas no se almacenan en texto plano, así que no hay manera de ver \"\n\"la contraseña del usuario, pero se puede cambiar la contraseña mediante <a \"\n\"href=\\\"password/\\\">este formulario</a>.\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"\"\n\"Su navegador aparenta no estar configurado para aceptar cookies. Las cookies \"\n\"son un requerimiento para poder ingresar.\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"Esta cuenta está inactiva.\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"Contraseña nueva\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"Confirmación de contraseña nueva\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"\"\n\"La antigua contraseña introducida es incorrecta. Por favor introdúzcala \"\n\"nuevamente.\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"Contraseña antigua\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"Contraseña (de nuevo)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"algoritmo\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"repeticiones\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"salt\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"hash\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"factor trabajo\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"checksum\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"nombre\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"nombre código\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"permiso\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"permisos\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"grupo\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"grupos\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"contraseña\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"último ingreso\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"es superusuario\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"\"\n\"Indica que este usuario posee todos los permisos sin que sea necesario \"\n\"asignarle los mismos en forma explícita.\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\"Los grupos a los que pertenece este usuario. Un usuario obtendrá todos los \"\n\"permisos concedidos para cada uno de su grupo.\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"permisos de usuario\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"nombre de usuario\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"\"\n\"Obligatorio. Longitud máxima de 30 caracteres alfanuméricos (letras, dígitos \"\n\"y @/./+/-/_).\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"nombre\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"apellido\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"es staff\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"Indica si el usuario puede ingresar a este sitio de administración.\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"activo\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\"Indica si el usuario debe ser tratado como un usuario activo. Desactive este \"\n\"campo en lugar de eliminar usuarios.\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"fecha de creación\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"usuario\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"usuarios\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"Sesión cerrada\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"Restablecimiento de la contraseña en %(site_name)s \"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/et/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# madisvain <madisvain@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2012-12-16 08:51+0000\\n\"\n\"Last-Translator: madisvain <madisvain@gmail.com>\\n\"\n\"Language-Team: Estonian (http://www.transifex.com/projects/p/django/language/\"\n\"et/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: et\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"Isiklikud andmd\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"Õigused\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"Tähtsad kuupäevad\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"Salasõna edukalt muudetud.\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"Muuda salasõna: %s\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"Sama kasutajatunnusega kasutaja on juba olemas.\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"Kaks sisestatud parooli ei olnud identsed.\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"Kasutajatunnus\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"\"\n\"Nõutav. 30 märki või vähem. Ainult tähed, numbrid ja /./+/-/_ tähemärgid.\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"\"\n\"See väärtust võib sisaldada ainult tähti, numbreid ja/./+/-/_ tähemärke.\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"Salasõna\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"Salasõna kinnitus\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"\"\n\"Sisestage sama salasõna uuesti veendumaks, et sisestamisel ei tekkinud vigu\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"\"\n\"Teie veebibrauser ei aktsepteeri küpsiseid, aga küpsised on sisselogimiseks \"\n\"vajalikud.\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"See konto ei ole aktiivne.\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"Uus salasõna\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"Uue salasõna kinnitus\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"Te sisestasite oma vana parooli vigaselt. Palun sisestage see uuesti.\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"Vana salasõna\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"Salasõna (uuesti)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"nimi\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"koodnimi\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"õigus\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"õigused\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"grupp\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"grupid\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"salasõna\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"viimane sisenemine\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"superkasutaja staatus\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"Määrab, kas see kasutaja omab automaatselt ja alati kõiki õigus.\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"kasutajaõigused\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"kasutajatunnus\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"Nõutav. 30 märki või vähem. Tähted, numbreid ja/./+/-/_ tähemärgid.\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"eesnimi\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"perenimi\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"personalistaatus\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"\"\n\"Määrab, kas kasutaja saab sisse logida sellesse admininistreerimisliidesesse.\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"aktiivne\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\"Määrab, kas see konto on aktiivne. Kustutamise asemel lihtsalt deaktiveerige \"\n\"konto.\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"liitumise kuupäev\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"kasutaja\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"kasutajad\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"Välja logitud\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/eu/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Aitzol Naberan <anaberan@codesyntax.com>, 2011-2013.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2013-01-07 13:41+0000\\n\"\n\"Last-Translator: Aitzol Naberan <anaberan@codesyntax.com>\\n\"\n\"Language-Team: Basque (http://www.transifex.com/projects/p/django/language/\"\n\"eu/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: eu\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"Informazio pertsonala\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"Baimenak\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"Data garrantzitsuak\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"Ondo aldatu da pasahitza.\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"Pasahitza aldatu: %s\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"Pasahitza ezarri gabe.\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"Pasahitz formatu baliogabea edo hash algoritmo ezezaguna.\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"Erabiltzaile izen hori ez dago eskuragarri.\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"Pasahitzak ez datoz bat.\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"Erabiltzaile izena\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"\"\n\"Beharrezkoa. 30 karaktere edo gutxiago. Hizki, zenbaki eta @/./+/-/_ \"\n\"bakarrik.\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"Hizki, zenbaki eta @/./+/-/_ karaktereak bakarrik izan ditzazke\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"Pasahitza\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"Pasahitza berretsi\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Idatzi berriro pasahitza.\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\"Pasahitzak zifratuta gordetzen direnez ez dago erabiltzaile pasahitza \"\n\"ikusterik, baina pasahitza aldatu dezakezu <a href=\\\"password/\\\">hemen</a>\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\"Mesedez idatzi %(username)s eta pasahitz egokiak. Maiskula eta minuskulak \"\n\"ondo bereiztu.\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"\"\n\"Zure nabigatzaileak ez ditu cookiak onartzen. Cookia-k beharrezkoak dira \"\n\"sisteman sartzeko.\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"Kontu hau az dago aktibo.\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\"Helbide elektroniko honek ez dauka erabiltzailerik esleituta. Ziur zaude \"\n\"erregistratu duzula?\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\"E-mail helbide honekin lotutako erabiltzaile kontuan ezin da pasahitza \"\n\"berrezarri.\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"Eposta\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"Pasahitz berria\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"Pasahitz berria berretsi\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"Zure pasahitz zaharra ez da zuzena. Idatzi ezazu berriro.\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"Pasahitz zaharra\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"Pasahitza (berriro)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"algoritmoak\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"begiztak\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"salt\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"hash\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"work factor\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"checksum\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"izena\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"kode izena\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"baimena\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"baimenak\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"taldea\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"taldeak\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"pasahitza\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"azken sarrera\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"Erabiltzaile nagusia\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"\"\n\"Erabiltzaileari baimen guztiak esleitzeko banan-banan aukeratu behar izan \"\n\"gabe.\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\"Erabiltzailea zein taldetakoa den. Erabiltzaileak taldeari emandako baimen \"\n\"guztiak jasoko ditu.\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"Erabiltzailearen baimenak\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"erabiltzaile izena\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"\"\n\"Beharrezkoa. 30 karaktere edo gutxiago. Hizki, zenbaki eta @/./+/-/_ \"\n\"karaktereak\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"Sartu baleko erabiltzaile izen bat.\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"izena\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"abizena\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"e-mail helbidea\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"Arduradun egoera\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"\"\n\"Erabiltzaileak kudeaketa gune honetan sartzeko baimena duen edo ez \"\n\"adierazten du.\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"Aktiboa\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\"Erabiltzaile bat aktibo gisa tratatu edo ez zehazten du. Ezgaitu hau kontuak \"\n\"ezabatu beharrean.\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"erregistro eguna\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"Erabiltzailea\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"Erabiltzaileak\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"Sesiotik kanpo\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"Pasahitza berrezarri %(site_name)s webgunean\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/fa/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Ali Nikneshan <ali@nikneshan.com>, 2011-2012.\n# Alireza Savand <alireza.savand@gmail.com>, 2012-2013.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2013-01-11 08:28+0000\\n\"\n\"Last-Translator: Alireza Savand <alireza.savand@gmail.com>\\n\"\n\"Language-Team: Persian (http://www.transifex.com/projects/p/django/language/\"\n\"fa/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: fa\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"اطلاعات شخصی\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"اجازه‌ها\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"تاریخ‌های مهم\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"گذرواژه با موفقیت تغییر یافت.\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"تغییر گذرواژه: %s\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"هیچ رمزی انتخاب نشده است.\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"رمز نامعتبر یا الگوریتم رمزنگاری ناشناس\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"کاربری با این نام کاربری وجود دارد.\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"دو فیلد گذرواژه با هم مطابقت ندارند.\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"نام کاربری\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"\"\n\"الزامی. ۳۰ حرف یا کمتر. فقط حروف الفبا (ارقام، الفبا و علائم @/./+/-/_).\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"این مقدار فقط باید حاوی حروف، اعداد و یا علائم @/./+/-/_ باشد.\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"گذرواژه\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"تصدیق گذرواژه\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"همان گذرواژهٔ بالایی را برای اطمینان دوباره وارد کنید.\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\"کلمات عبور نگهداری نمی شوند، لذا روشی برای مشاهده کلمه عبور کاربر وجود \"\n\"ندارد. ولی شما می توانید کلمه عبور را بوسیله <a href=\\\"password/\\\">این فرم</\"\n\"a> عوض کنید.\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\"لطفا %(username)s و گذرواژه‌ی را برای حساب کارکنان وارد کنید.\\n\"\n\"توجه داشته باشید که هر دو میتوانند به کوچکی و بزرگی حروف حساس باشند.\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"\"\n\"به نطر می رسد مرورگر شما کوکی‌ها را قبول نمی‌کند. کوکی‌ها برای ورود به وبگاه \"\n\"لازم هستند.\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"این حساب غیرفعال است.\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"این آدرس ایمیل به حسابی متصل نیست. آیا شما ثبت نام کرده اید؟\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"کاربری که به این آدرس ایمیل متسل است نمیتواند رمز خود را ریست کند\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"ایمیل\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"گذرواژهٔ جدید\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"تصدیق گذرواژهٔ جدید\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"گذرواژهٔ قدیمی شما اشتباه بود. لطفاً دوباره وارد کنید.\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"گذرواژهٔ قدیمی\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"گذرواژه (تکرار)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"الگوریتم\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"تکرار\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"salt\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"hash\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"عامل کار\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"checksum\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"نام\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"نام کد\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"اجازه\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"اجازه‌ها\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"گروه\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"گروه‌ها\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"گذرواژه\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"آخرین ورود\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"ابرکاربر\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"\"\n\"نشان می‌دهد که آیا این کاربر دسترسی نامحدود به کلیهٔ بخشهای وبگاه مدیریت دارد.\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\"گروه های این کاربر به آن تعلق دارد. کاربر تمامی دسترسیهای اعطا شده به هر یک \"\n\"از / گروه خود را دریافت کنید.\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"اجازه‌های کاربر\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"نام کاربری\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"\"\n\"الزامی. 30 حرف یا کمتر. فقط حروف الفبا (ارقام، الفبا و علائم @/./+/-/_ ).\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"یک نام کاربری معتبر وارد کنید\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"نام\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"نام خانوادگی\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"آدرس ایمیل\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"وضعیت کارمندی\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"تعبیه شده برای اینکه در وبگاه مدیریت، کاربر بتواند یا نتواند وارد شود.\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"فعال\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\"برای نشان دادن اینکه آیا باید با این کاربر به عنوان کاربر فعال رفتار کرد \"\n\"تعبیه شده است. به جای حذف کاربر تیک را بردارید.\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"تاریخ پیوستن\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"کاربر\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"کاربرها\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"خارج شدید\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"بازیابی کلمه عبور بر روی %(site_name)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/fi/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Antti Kaihola <akaihol+transifex@ambitone.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <klaus.dahlen@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2012-12-16 08:51+0000\\n\"\n\"Last-Translator: nanook <klaus.dahlen@gmail.com>\\n\"\n\"Language-Team: Finnish (http://www.transifex.com/projects/p/django/language/\"\n\"fi/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: fi\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"Henkilökohtaiset tiedot\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"Oikeudet\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"Tärkeät päivämäärät\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"Salasana muutettu onnistuneesti.\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"Vaihda salasana: %s\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"Salasanaa ei ole asetettu.\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"Tuntematon salasanamuoto tai tuntematon hajakoodausalgoritmi.\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"Käyttäjätunnus on jo rekisteröity.\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"Salasanat eivät täsmää.\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"Käyttäjätunnus\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"\"\n\" Vaaditaan. Enintään 30 merkkiä. Vain kirjaimet, numerot ja @/./+/-/_ ovat \"\n\"sallittuja.\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"Tässä voidaan käyttää vain kirjaimia, numeroita ja @/./+/-/_ merkkejä.\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"Salasana\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"Salasanan vahvistaminen\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Syötä sama salasana tarkistuksen vuoksi toistamiseen.\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\"Salasanoja ei tallenneta selkokielisinä, joten tämän käyttäjän salasanaa on \"\n\"mahdoton nähdä, mutta voit vaihtaa salasanan käyttämällä <a href=\\\"password/\"\n\"\\\">tätä lomaketta</a>.\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"\"\n\"Selaimesi ei näytä sallivan evästeitä. Sisäänkirjautuminen vaatii evästeen.\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"Tämä käyttäjätili ei ole voimassa.\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\"Sähköpostiosoitetta vastaavaa käyttäjätiliä ei löydy. Oletko varmasti  \"\n\"rekisteröitynyt?\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\"Tähän sähköpostiosoitteeseen liitetty käyttäjätili ei voi nollata salasanaa.\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"Sähköposti\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"Uusi salasana\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"Uusi salasana uudelleen\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"Vanha salasana on virheellinen. Yritä uudelleen.\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"Vanha salasana\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"Salasana toistamiseen\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"algoritmi\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"iteraatioita\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"suola\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"tiiviste\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"työmäärä\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"tarkistussumma\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"nimi\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"tunniste\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"oikeus\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"oikeudet\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"ryhmä\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"ryhmät\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"salasana\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"viimeisin kirjautuminen\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"pääkäyttäjä\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"\"\n\"Antaa käyttäjälle kaikki oikeudet ilman, että niitä täytyy erikseen luetella.\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\"Käyttäjäryhmät joihin tämä käyttäjä kuuluu. Käyttäjä saa käyttöoikeudet \"\n\"kaikista käyttäjäryhmistä, joihin hän kuuluu.\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"käyttäjän oikeudet\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"käyttäjätunnus\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"\"\n\" Vaaditaan. Enintään 30 merkkiä. Vain kirjaimet, numerot ja @/./+/-/_ ovat \"\n\"sallittuja.\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"Syötä kelvollinen käyttäjätunnus.\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"etunimi\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"sukunimi\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"sähköpostiosoite\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"ylläpitäjä\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"Määrittää, pääseekö käyttäjä tähän sivuston ylläpito-osioon.\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"voimassa\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\"Määrää, voiko käyttäjä kirjautua sisään. Tällä voi estää käyttäjätilin \"\n\"käytön poistamatta sitä.\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"liittynyt\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"käyttäjä\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"käyttäjät\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"Kirjautunut ulos\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"Salasanan nollaus sivustolla %(site_name)s \"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/fr/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <claude@2xlibre.net>, 2011-2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2012-12-17 09:26+0000\\n\"\n\"Last-Translator: claudep <claude@2xlibre.net>\\n\"\n\"Language-Team: French (http://www.transifex.com/projects/p/django/language/\"\n\"fr/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: fr\\n\"\n\"Plural-Forms: nplurals=2; plural=(n > 1);\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"Information personnelle\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"Permissions\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"Dates importantes\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"Mot de passe modifié avec succès\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"Modifier le mot de passe : %s\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"Aucun mot de passe défini.\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"\"\n\"Format de mot de passe non valide ou algorithme de hachage non reconnu.\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"Un utilisateur avec ce nom existe déjà.\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"Les deux mots de passe ne correspondent pas.\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"Nom d'utilisateur\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"\"\n\"Requis. 30 caractères maximum. Uniquement des lettres, nombres et les \"\n\"caractères « @ », « . », « + », « - » et « _ ».\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"\"\n\"Cette valeur peut uniquement contenir des lettres, nombres et les caractères \"\n\"« @ », « . », « + », « - » et « _ ».\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"Mot de passe\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"Confirmation du mot de passe\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Saisissez le même mot de passe que précédemment, pour vérification.\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\"Les mots de passe ne sont pas enregistrés en clair, ce qui ne permet pas \"\n\"d'afficher le mot de passe de cet utilisateur, mais il est possible de le \"\n\"changer en utilisant <a href=\\\"password/\\\">ce formulaire</a>. \"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\"Saisissez un %(username)s et un mot de passe valides. Remarquez que chacun \"\n\"de ces champs est sensible à la casse (différenciation des majuscules/\"\n\"minuscules).\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"\"\n\"Votre navigateur ne semble pas avoir activé les cookies. Les cookies sont \"\n\"nécessaires pour se connecter.\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"Ce compte est inactif.\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\"Cette adresse électronique ne correspond à aucun compte existant. Vous êtes-\"\n\"vous vraiment enregistré ?\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\"Le compte associé à cette adresse électronique ne peut pas réinitialiser le \"\n\"mot de passe.\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"Courriel\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"Nouveau mot de passe\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"Confirmation du nouveau mot de passe\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"Votre ancien mot de passe est incorrect. Veuillez le rectifier.\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"Ancien mot de passe\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"Mot de passe (à nouveau)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"algorithme\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"itérations\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"salage\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"empreinte\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"facteur travail\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"somme de contrôle\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"nom\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"nom de code\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"permission\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"permissions\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"groupe\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"groupes\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"mot de passe\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"dernière connexion\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"statut super-utilisateur\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"\"\n\"Précise que l'utilisateur possède toutes les permissions sans les assigner \"\n\"explicitement.\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\"Les groupes dont fait partie cet utilisateur. Celui-ci obtient tous les \"\n\"droits de tous ses groupes.\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"permissions de l'utilisateur\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"nom d'utilisateur\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"\"\n\"Requis. 30 caractères maximum. Uniquement des lettres, nombres et les \"\n\"caractères « @ », « . », « + », « - » et « _ ».\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"Saisissez un nom d'utilisateur valable.\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"prénom\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"nom\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"adresse électronique\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"statut équipe\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"Précise si l'utilisateur peut se connecter à ce site d'administration.\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"actif\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\"Précise si l'utilisateur doit être considéré comme actif. Décochez ceci \"\n\"plutôt que de supprimer le compte.\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"date d'inscription\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"utilisateur\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"utilisateurs\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"Déconnecté\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"Réinitialisation du mot de passe sur %(site_name)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/fy_NL/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:36+0100\\n\"\n\"PO-Revision-Date: 2011-03-15 15:33+0000\\n\"\n\"Last-Translator: Django team\\n\"\n\"Language-Team: English <en@li.org>\\n\"\n\"Language: fy_NL\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1)\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"\"\n\n#: admin.py:125\nmsgid \"Password changed successfully.\"\nmsgstr \"\"\n\n#: admin.py:135\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"\"\n\n#: forms.py:62\nmsgid \"A user with that username already exists.\"\nmsgstr \"\"\n\n#: forms.py:63 forms.py:251 forms.py:308\nmsgid \"The two password fields didn't match.\"\nmsgstr \"\"\n\n#: forms.py:65 forms.py:110 forms.py:139\nmsgid \"Username\"\nmsgstr \"\"\n\n#: forms.py:67 forms.py:111\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"\"\n\n#: forms.py:70 forms.py:114\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"\"\n\n#: forms.py:72 forms.py:116 forms.py:140 forms.py:310\nmsgid \"Password\"\nmsgstr \"\"\n\n#: forms.py:74\nmsgid \"Password confirmation\"\nmsgstr \"\"\n\n#: forms.py:76\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"\"\n\n#: forms.py:117\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\n#: forms.py:143\nmsgid \"\"\n\"Please enter a correct username and password. Note that both fields are case-\"\n\"sensitive.\"\nmsgstr \"\"\n\n#: forms.py:145\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"\"\n\n#: forms.py:147\nmsgid \"This account is inactive.\"\nmsgstr \"\"\n\n#: forms.py:191\nmsgid \"\"\n\"That e-mail address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\n#: forms.py:193\nmsgid \"\"\n\"The user account associated with this e-mail address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\n#: forms.py:196\nmsgid \"E-mail\"\nmsgstr \"\"\n\n#: forms.py:253\nmsgid \"New password\"\nmsgstr \"\"\n\n#: forms.py:255\nmsgid \"New password confirmation\"\nmsgstr \"\"\n\n#: forms.py:284\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"\"\n\n#: forms.py:287\nmsgid \"Old password\"\nmsgstr \"\"\n\n#: forms.py:312\nmsgid \"Password (again)\"\nmsgstr \"\"\n\n#: hashers.py:218 hashers.py:269 hashers.py:298 hashers.py:326 hashers.py:355\n#: hashers.py:389\nmsgid \"algorithm\"\nmsgstr \"\"\n\n#: hashers.py:219\nmsgid \"iterations\"\nmsgstr \"\"\n\n#: hashers.py:220 hashers.py:271 hashers.py:299 hashers.py:327 hashers.py:390\nmsgid \"salt\"\nmsgstr \"\"\n\n#: hashers.py:221 hashers.py:300 hashers.py:328 hashers.py:356 hashers.py:391\nmsgid \"hash\"\nmsgstr \"\"\n\n#: hashers.py:270\nmsgid \"work factor\"\nmsgstr \"\"\n\n#: hashers.py:272\nmsgid \"checksum\"\nmsgstr \"\"\n\n#: models.py:66 models.py:113\nmsgid \"name\"\nmsgstr \"\"\n\n#: models.py:68\nmsgid \"codename\"\nmsgstr \"\"\n\n#: models.py:72\nmsgid \"permission\"\nmsgstr \"\"\n\n#: models.py:73 models.py:115\nmsgid \"permissions\"\nmsgstr \"\"\n\n#: models.py:120\nmsgid \"group\"\nmsgstr \"\"\n\n#: models.py:121 models.py:250\nmsgid \"groups\"\nmsgstr \"\"\n\n#: models.py:232\nmsgid \"username\"\nmsgstr \"\"\n\n#: models.py:233\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"\"\n\n#: models.py:235\nmsgid \"first name\"\nmsgstr \"\"\n\n#: models.py:236\nmsgid \"last name\"\nmsgstr \"\"\n\n#: models.py:237\nmsgid \"e-mail address\"\nmsgstr \"\"\n\n#: models.py:238\nmsgid \"password\"\nmsgstr \"\"\n\n#: models.py:239\nmsgid \"staff status\"\nmsgstr \"\"\n\n#: models.py:240\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"\"\n\n#: models.py:242\nmsgid \"active\"\nmsgstr \"\"\n\n#: models.py:243\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\n#: models.py:245\nmsgid \"superuser status\"\nmsgstr \"\"\n\n#: models.py:246\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"\"\n\n#: models.py:248\nmsgid \"last login\"\nmsgstr \"\"\n\n#: models.py:249\nmsgid \"date joined\"\nmsgstr \"\"\n\n#: models.py:251\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\n#: models.py:255\nmsgid \"user permissions\"\nmsgstr \"\"\n\n#: models.py:260\nmsgid \"user\"\nmsgstr \"\"\n\n#: models.py:261\nmsgid \"users\"\nmsgstr \"\"\n\n#: views.py:93\nmsgid \"Logged out\"\nmsgstr \"\"\n\n#: management/commands/createsuperuser.py:27\nmsgid \"Enter a valid e-mail address.\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/ga/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Michael Thornhill <michael@maithu.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2012-12-16 08:51+0000\\n\"\n\"Last-Translator: Michael Thornhill <michael@maithu.com>\\n\"\n\"Language-Team: Irish (http://www.transifex.com/projects/p/django/language/\"\n\"ga/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ga\\n\"\n\"Plural-Forms: nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : \"\n\"4);\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"Eolas pearsantach\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"Ceada\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"Dáta tábhactach\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"Focal faire aithraithe rathúil\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"Athraigh focal faire: %s\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"In ann do úsáideoir leis an ainm úsáideora.\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"Níl an dá focla faire comhoiriúnigh\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"Ainm úsaideoir\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"\"\n\"Riachtanach. 30 carachtair nó níos lú. Litreacha, digite agus @/./+/-/_ \"\n\"amháin.\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"\"\n\"Cathaigh litreacha, digite agus na carachtair @/./+/-/_ amhain le hadhaigh \"\n\"an méid seo.\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"Focal faire\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"Focal faire deimhniú\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Iontráíl an focal faire céanna mar thuas, le fíorúchán.\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\"Níl focail fairí amh stóráilailte, agus mar sin níl aon bhealach focal faire \"\n\"an úsaideora a fheiceáil, ach is féidir leat athrú ar an focal faire leis <a \"\n\"href=\\\"password/\\\">an bhfoirm seo</a>.\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"\"\n\"Feictear nach bhfuil do brabhsálaí réidh le cuaiche a glacadh. Tá cuaiche ag \"\n\"teastail le logáil isteach.\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"Tá an cuntas seo neamhghníomhach.\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"Focal faire nua\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"Deimnhiú focal faire nua\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"\"\n\"Cuireadh do sean-focal faire isteach go mícheart. Iontráil isteach é arís.\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"Sean-focal faire \"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"Focal faire (arís)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"algartam\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"atriallta\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"salann\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"haiseáil\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"fachtóir oibre\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"suim sheiceála\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"ainm\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"Ainm cód\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"cead\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"ceada\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"grúpa\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"grúpa\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"focal faire\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"logáil deirneach\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"stádas forúsáideoir\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"\"\n\"Sainíonn go bhfuil gach ceada ag an úsáideoir seo gan iad a cur le go \"\n\"díreach.\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\"Na grúpaí a mbaineann leis an úsáideoir seo. Gheobhaidh úsáideor na ceadanna \"\n\"a deonaíodh do gach ceann den a  grúpa.\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"ceada úsáideoira\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"Ainm úsáideoir\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"\"\n\"Riachtanach. 30 carachtair nó níos lú. Litreacha, digite agus na carachtair \"\n\"@/./+/-/_\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"ainm baiste\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"sloinne\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"stádas foirne\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"\"\n\"Sainigh an bhfuil cead ag an úsáideoir logáil isteach go dtí an suíomh \"\n\"riaracháin seo.\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"gníomhach\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\"Sainíonn an bhfuil an úsáideoir gníomhach. Míroghnaigh seo in aineonn de \"\n\"scriseadh cuntasí.\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"Dáta teacht isteach\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"úsáideoir\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"úsáideora\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"Logáilte amach\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"Athshocraigh focal faire ar %(site_name)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/gl/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# fasouto <fsoutomoure@gmail.com>, 2011.\n# fonso <fonzzo@gmail.com>, 2011.\n#   <fonzzo@gmail.com>, 2013.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Leandro Regueiro <leandro.regueiro@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2013-01-07 11:41+0000\\n\"\n\"Last-Translator: fonso <fonzzo@gmail.com>\\n\"\n\"Language-Team: Galician (http://www.transifex.com/projects/p/django/language/\"\n\"gl/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: gl\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"Información persoal\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"Permisos\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"Datas importantes\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"O contrasinal cambiouse correctamente.\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"Cambiar contrasinal: %s\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"Non se configurou ningún contrasinal.\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"Formato de contrasinal inválido ou algoritmo de hash descoñecido.\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"Xa existe un usuario con ese nome de usuario.\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"Os dous campos de contrasinal non coinciden.\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"Usuario\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"\"\n\"Requirido. 30 caracteres ou menos. Soamente letras, díxitos e @/./+/-/_.\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"\"\n\"Este valor soamente pode conter letras, números e os caracteres @/./+/-/_.\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"Contrasinal\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"Confirmación do contrasinal\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Insira o mesmo contrasinal ca enriba para verificalo.\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\"Non se gardan os contrasinais sen cifrar, de maneira que non se pode ver o \"\n\"contrasinal deste usuario, pero pode modificar o contrasinal mediante <a \"\n\"href=\\\"password/\\\">este formulario</a>.\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\"Por favor, insira un %(username)s e contrasinal correctos. Teña en conta que \"\n\"ambos os dous campos poden distinguir maiúsculas e minúsculas.\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"\"\n\"Semella que o seu navegador non acepta 'cookies'. Requírense 'cookies' para \"\n\"iniciar sesión.\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"Esta conta está inactiva.\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\"Esta dirección de correo electrónico non ten unha conta de usuario asociada. \"\n\"Está seguro de que se rexistrou?\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\"A conta de usuario asociada con este enderezo de correo electrónico non pode \"\n\"restablecer o contrasinal.\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"Correo electrónico\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"Novo contrasinal\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"Confirmación do novo contrasinal\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"\"\n\"Inseriu incorrectamente o seu contrasinal actual. Por favor, insírao de novo.\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"Contrasinal antigo\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"Contrasinal (outra vez)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"algoritmo\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"iteracións\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"sal\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"hash\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"factor de traballo\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"suma de verificación\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"nome\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"código\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"permiso\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"permisos\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"grupo\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"grupos\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"contrasinal\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"última sesión\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"estatus de superusuario\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"\"\n\"Indica que este usuario ten todos os permisos sen asignarllos explicitamente.\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\"Os grupos aos que pertence este usuario. Un/ha usuario/a recibirá todos os \"\n\"permisos outorgados a cada un dos seus grupos.\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"permisos de usuario\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"nome de usuario\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"Requirido. 30 caracteres ou menos.  Letras, díxitos e @/./+/-/_.\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"Insira un nome de usuario válido.\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"nome\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"apelidos\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"enderezo de correo electrónico\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"membro do persoal\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"Indica se o usuario pode entrar neste sitio de administración.\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"activo\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\"Determina se este usuario se debe considerar activo. Deseleccione isto en \"\n\"vez de borrar contas de usuario.\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"data de rexistro\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"usuario\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"usuarios\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"Rematou a sesión\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"Cambio de contrasinal en %(site_name)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/he/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Alex Gaynor <alex.gaynor@gmail.com>, 2011, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Meir Kriheli <mkriheli@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2012-12-16 08:51+0000\\n\"\n\"Last-Translator: Meir Kriheli <mkriheli@gmail.com>\\n\"\n\"Language-Team: Hebrew (http://www.transifex.com/projects/p/django/language/\"\n\"he/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: he\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"מידע אישי\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"הרשאות\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"תאריכים חשובים\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"הסיסמה שונתה בהצלחה.\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"שינוי סיסמה: %s\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"לא נקבעה סיסמה.\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"תחביר סיסמה בלתי-חוקי או אלגוריתם גיבוב לא ידוע.\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"משתמש עם שם משתמש זה קיים כבר\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"שני שדות הסיסמה אינם זהים.\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"שם משתמש\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"שדה חובה. 30 תווים או פחות. אותיות, ספרות ו-@/./+/-/_ בלבד.\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"ערך זה יכול להכיל אותיות, ספרות והתווים @/./+/-/_ בלבד.\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"סיסמה\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"אימות סיסמה\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"יש להזין את אותה סיסמה שוב,לאימות.\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\"הסיסמאות אינן נשמרות באופן חשוף, כך שאין דרך לראות את סיסמת המשתמש, ניתן \"\n\"לשנות את הסיסמה בעזרת  <a href=\\\"password/\\\">טופס זה</a>.\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"נראה שעוגיות לא מאופשרות בדפדפן שלך. הן נדרשות כדי להתחבר.\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"חשבון זה אינו פעיל.\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"כתובת הדוא\\\"ל הזו אינה משוייכת לחשבון משתמש. האם בטוח שנרשמת ?\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"חשבון המשתמש המשוייך לכתובת דוא\\\"ל זו אינו יכול לאפס את הסיסמה.\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"דוא\\\"ל\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"סיסמה חדשה\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"אימות סיסמה חדשה\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"סיסמתך הישנה הוזנה בצורה שגויה. נא להזינה שוב.\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"סיסמה ישנה\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"סיסמה (שוב)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"אלגוריתם\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"חזרות\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"salt\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"גיבוב\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"work factor\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"סיכום ביקורת\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"שם\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"שם קוד\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"הרשאה\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"הרשאות\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"קבוצה\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"קבוצות\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"סיסמה\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"כניסה אחרונה\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"סטטוס משתמש על\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"מציין שלמשתמש זה יש את כל ההרשאות ללא הצורך המפורש בהענקתן.\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\"הקבוצות שמשתמש זה שייך אליהן. משתמש יקבל את כל ההרשאות המוקצות לקבוצה שלו/\"\n\"שלה.\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"הרשאות משתמש\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"שם משתמש\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"שדה חובה. 30 תווים או פחות. אותיות, ספרות והתווים @/./+/-/_ בלבד.\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"נא להזין שם משתמש חוקי.\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"שם פרטי\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"שם משפחה\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"כתובת דוא\\\"ל\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"סטטוס איש צוות\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"מציין האם המשתמש יכול להתחבר לאתר הניהול.\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"פעיל\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\"מציין האם יש להתייחס למשתמש כפעיל. יש לבטל בחירה זו במקום למחוק חשבונות \"\n\"משתמשים.\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"תאריך הצטרפות\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"משתמש\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"משתמשים\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"יצאת מהמערכת\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"החלפת הסיסמה ב-%(site_name)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/hi/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <alok.kumar@gmail.com>, 2013.\n# Chandan kumar <chandankumar.093047@gmail.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Sandeep Satavlekar <sandysat@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2013-01-09 10:31+0000\\n\"\n\"Last-Translator: alkuma <alok.kumar@gmail.com>\\n\"\n\"Language-Team: Hindi (http://www.transifex.com/projects/p/django/language/\"\n\"hi/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: hi\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"व्यक्तिगत सूचना\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"अनुमतियाँ\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"महत्त्वपूर्ण तिथियाँ\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"शब्दकूट बदली कामयाब\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"शब्दकूट बदलें: %s\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"कोई कूटशब्द नहीं।\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"अवैध कूटशब्द प्रारूप या अज्ञात द्रुतान्वेषण कलन विधि\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"इस नाम के साथ प्रवोक्ता अस्तित्व है\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"यह दो शब्दकूट क्षेत्रों का मेल नहीं होता \"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"प्रवोक्ता नाम\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"जरूरी है | 30 या कम | केवल वर्णों, अक्षर, अंक और @/./+/-/_ |\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"यह मूल्य केवल अक्षर, संख्या और @/./+/-/_ हो सकते हैं |\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"कूटशब्द\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"कूटशब्द पुष्टि\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"सत्याप्ती के लिए ऊपर दर्ज किए शब्दकूट को फिर से प्रवेश करें\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\"अधूरे कूटशब्द का संग्रह नहीं होता है, तो वहाँ इस उपयोगकर्ता के कूटशब्द को देखने के लिए कोई \"\n\"तरीका नहीं है, लेकिन आप <a href=\\\"password/\\\"> इस प्रपत्र</a> का उपयोग करते हुए \"\n\"कूटशब्द बदल सकते हैं.\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"कृपया सही %(username)s व कूटशब्द भरें। भरते समय लघु और दीर्घ अक्षरों का ध्यान रखें।\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"\"\n\"ऐसा लग रहा हैं की आप के वेब-ब्राउज़र में कुकीज़ सक्षम नहीं हैं | प्रवेश हेतु कुकीज़ आवश्यक हैं |\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"यस खाता सुस्त है\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"इस डाक पते का कोई खाता यहाँ नहीं है। आपने पंजीकरण तो किया है न?\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"इस डाक पते से जुड़े प्रयोक्ता कूटशब्द नहीं बदल सकते हैं\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"डाक पता\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"नया शब्दकूट\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"नया शब्दकूट पुष्टि\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"आपने पुराना शब्दकूट गलत दर्ज किया है । कृपया फिर से दर्ज करें\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"पुराना शब्दकूट\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"शब्दकूट (दुबारा)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"अलगोरिथम\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"पुनरूक्तियाँ\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"साल्ट\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"हैश\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"कार्य फ़ैक्टर\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"चेकसम\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"नाम\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"कोडनेम\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"अनुमति\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"अनुमतियाँ\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"वर्ग\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"वर्गों\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"शब्दकूट\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"पिछला लॉगिन\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"सर्वोच्च प्रयोक्ता स्थिति\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"\"\n\"निर्दिष्ट करता है कि जो इस उपयोगकर्ता के पास सभी अनुमतियाँ उन्हें बिना बताए स्पष्ट रूप से \"\n\"निर्धारित है.\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\"समूह के अंतर्गत यह उपयोगकर्ता आता है. उपयोगकर्ता उसकी / उसके समूह के प्रत्येक के लिए दी गई \"\n\"अनुमति प्राप्त होगा.\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"प्रयोक्ता अनुमतियाँ\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"प्रयोक्ता नाम\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"जरूरी है | 30 या कम वर्णों | केवल  अक्षर, संख्या और @/./+/-/_\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"वैध प्रयोक्ता नाम भरें\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"पहला नाम\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"आखिरी नाम\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"डाक पता\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"कर्मचारी स्थिति\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"तय करता हैं की उपयोगकर्ता इस साईट प्रशासन में प्रवेश कर सकता हैं या नहीं |\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"सक्रिय\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\"निर्दिष्ट करता है कि क्या इस उपयोगकर्ता को सक्रिय माना जाना चाहिए.खातों को हटाने की  \"\n\"बजाय इस अचयनित करे.\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"तिथि भरती\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"उपभोक्ता\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"उपभोक्ताऐं\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"लाग्ड आउट \"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"%(site_name)s पर कूटशब्द को पुनःठीक करे\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/hr/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <aljosa.mohorovic@gmail.com>, 2012-2013.\n# Bojan Mihelač <bmihelac@mihelac.org>, 2012.\n# Davor Lučić <r.dav.lc@gmail.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <senko.rasic@dobarkod.hr>, 2012.\n#   <zlatko.masek@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2013-01-14 18:37+0000\\n\"\n\"Last-Translator: aljosa <aljosa.mohorovic@gmail.com>\\n\"\n\"Language-Team: Croatian (http://www.transifex.com/projects/p/django/language/\"\n\"hr/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: hr\\n\"\n\"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"Osobni podaci\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"Privilegije\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"Važni datumi\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"Lozinka uspješno promijenjena.\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"Promijeni lozinku: %s\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"Lozinka nije postavljena.\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"Neispravan format lozinke ili nepoznati hashing algoritam.\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"Korisnik sa navedenim imenom već postoji.\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"Dva polja za lozinku nisu jednaka.\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"Korisničko ime\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"\"\n\"Obavezan unos. 30 alfanumeričkih znakova ili manje. Samo slova, brojevi i \"\n\"@/./+/-/_ znakovi.\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"\"\n\"Ova vrijednost može sadržavati samo slova, brojeve i @/./+/-/_ znakove.\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"Lozinka\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"Potvrda lozinke\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Unesite istu lozinku, za potvrdu.\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\"Lozinke se ne pohranjuju u čitljivom obliku, zbog toga nije moguće vidjeti \"\n\"lozinku ovog korisnika, ali je možete promjeniti koristeći <a href=\"\n\"\\\"password/\\\">ovaj obrazac</a>.\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\"Unesite ispravno %(username)s i lozinku. Imajte na umu da oba polja mogu \"\n\"biti velika i mala slova.\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"\"\n\"Izgleda da Vaš browser ne podržava kolačiće (cookies). Kolačići su potrebni \"\n\"da bi se prijavili.\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"Ovaj korisnički račun nije aktivan.\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\"E-mail adresa nije vezana uz nijedan korisnički račun. Da li ste sigurni da \"\n\"ste se registrirali?\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\"Korisnički račun povezan s ovom e-mail adresom ne može resetirati lozinku.\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"E-mail\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"Nova lozinka\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"Potvrda nove lozinke\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"Vaša stara lozinka je pogrešno unesena. Molim unesite ponovo.\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"Stara lozinka\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"Lozinka (unesi ponovo)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"algoritam\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"iteracije\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"slučajna vrijednost\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"hash\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"količina rada\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"zbroj za provjeru\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"ime\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"kodno ime\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"privilegija\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"privilegije\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"grupa\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"grupe\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"lozinka\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"posljednja prijava\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"superuser status\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"\"\n\"Određuje da ovaj korisnik ima sve privilegije te uklanja potrebu da se \"\n\"privilegije unose eksplicitno/ručno.\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\"Grupe kojima ovaj korisnik pripada. Korisnik će imati sve privilegije grupa \"\n\"kojima pripada.\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"privilegije korisnika\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"korisničko ime\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"\"\n\"Obavezan unos. 30 alfanumeričkih znakova ili manje. Samo slova, brojevi i \"\n\"@/./+/-/_ dozvoljeni.\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"Unesite ispravno korisničko ime.\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"ime\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"prezime\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"e-mail adresa\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"status osoblja\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"Određuje može li se korisnik prijaviti na ove stranice administracije.\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"aktivan\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\"Određuje treba li se ovaj korisnik tretirati kao aktivan korisnik. Koristite \"\n\"ovu opciju umjesto brisanja korisničkih računa.\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"datum učlanjenja\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"korisnik\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"korisnici\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"Niste logirani\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"Resetiranje lozinke na %(site_name)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/hu/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Máté Őry <orymate@iit.bme.hu>, 2012.\n# Szilveszter Farkas <szilveszter.farkas@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2012-12-16 08:51+0000\\n\"\n\"Last-Translator: Máté Őry <orymate@iit.bme.hu>\\n\"\n\"Language-Team: Hungarian (http://www.transifex.com/projects/p/django/\"\n\"language/hu/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: hu\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"személyes információ\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"jogosultságok\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"Fontos dátumok\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"Sikeres jelszóváltoztatás.\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"Jelszó megváltoztatása: %s\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"Létezik már egy felhasználó ezzel a névvel.\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"A két jelszó mező tartalma nem egyezik meg.\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"Felhasználó\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"\"\n\"Kötelező. Legfeljebb 30 karakter. Betűk, számok és @/./+/-/_ karakterek.\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"\"\n\"Ez az érték csak betűket, számokat és @/./+/-/_ karaktereket tartalmazhat.\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"Jelszó\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"Jelszó megerősítése\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Írja be a fenti jelszót ellenőrzés céljából.\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\"A kódolatlan jelszavakat nem tároljuk, így a felhasználó jelszavát nem lehet \"\n\"megtekinteni, azonban <a href=\\\"password/\\\">ezzel az űrlappal</a> a jelszó \"\n\"megváltoztatható.\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"\"\n\"A böngészője úgy tűnik nem támogatja a cookie-kat. A cookie-k engedélyezése \"\n\"szükséges a bejelentkezéshez.\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"Ez a fiók inaktív.\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"Új jelszó\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"Új jelszó megerősítése\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"A régi jelszó hibásan lett megadva. Írja be újra.\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"Régi jelszó\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"Jelszó újra\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"algoritmus\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"iterációk\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"salt\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"hash\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"erősség\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"ellenőrző összeg\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"név\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"kódnév\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"jogosultság\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"jogosultságok\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"csoport\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"csoportok\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"jelszó\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"utolsó bejelentkezés\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"rendszergazda státusz\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"\"\n\"Megadja, hogy ez a felhasználó rendelkezik-e minden jogosultsággal anélkül, \"\n\"hogy azt külön meg kellene adni.\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\"A csoportok, amelyekhez a felhasználó tartozik. A felhasználó minden egyes \"\n\"csoportja jogosultságaival rendelkezni fog.\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"felhasználói jogosultságok\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"felhasználónév\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"\"\n\"Kötelező. Legfeljebb 30 karakter. Betűk, számok és @/./+/-/_ karakterek.\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"keresztnév\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"vezetéknév\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"személyzet státusz\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"\"\n\"Megadja, hogy a felhasználó bejelentkezhet-e erre az adminisztrációs oldalra.\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"aktív\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\"Megadja, hogy a felhasználó aktív-e. Állítsa át ezt az értéket a fiók \"\n\"törlése helyett.\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"csatlakozás dátuma\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"felhasználó\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"felhasználók\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"Kijelentkezve\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"Jelszó újragenerálása ezen az oldalon: %(site_name)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/ia/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Martijn Dekker <mcdutchie@hotmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2012-12-16 08:51+0000\\n\"\n\"Last-Translator: Martijn Dekker <mcdutchie@hotmail.com>\\n\"\n\"Language-Team: Interlingua (http://www.transifex.com/projects/p/django/\"\n\"language/ia/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ia\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"Information personal\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"Permissiones\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"Datas importante\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"Le cambio del contrasigno ha succedite.\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"Cambia contrasigno: %s\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"Un usator con iste nomine de usator jam existe.\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"Le duo campos de contrasigno non es identic.\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"Nomine de usator\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"\"\n\"Obligatori. 30 characteres o minus. Litteras, cifras e @/./+/-/_ solmente.\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"\"\n\"Iste valor pote continer solmente litteras, numeros e le characteres @/./+/-/\"\n\"_.\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"Contrasigno\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"Confirma contrasigno\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Repete le contrasigno pro verification.\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\"Le contrasignos non es immagazinate in forma de texto simple, dunque il non \"\n\"es possibile vider le contrasigno de iste usator, ma tu pote cambiar le \"\n\"contrasigno con <a href=\\\"password/\\\">iste formulario</a>.\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"\"\n\"Vostre navigator del web non pare haber le \\\"cookies\\\" activate. Cookies es \"\n\"necessari pro aperir session.\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"Iste conto es inactive.\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"Nove contrasigno\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"Confirma nove contrasigno\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"Le ancian contrasigno non es correcte. Per favor scribe lo de novo.\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"Ancian contrasigno\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"Contrasigno (de novo)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"algorithmo\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"iterationes\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"sal\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"hash\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"factor de labor\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"summa de controlo\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"nomine\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"nomine de codice\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"permission\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"permissiones\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"gruppo\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"gruppos\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"contrasigno\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"ultime session\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"stato de superusator\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"\"\n\"Indica que iste usator ha tote le permissiones sin assignar los \"\n\"explicitemente.\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\"Le gruppos al quales iste usator pertine. Un usator obtene tote le \"\n\"permissiones concedite a cata un de su gruppos.\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"permissiones de usator\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"nomine de usator\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"\"\n\"Obligatori. 30 characteres o minus. Litteras, numeros e characteres @/./+/-/_\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"prenomine\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"nomine de familia\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"stato de personal\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"Indica si le usator pote aperir session in iste sito administrative.\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"active\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\"Indica si iste usator debe esser tractate como active. Dismarca isto in vice \"\n\"de deler contos.\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"data de inscription\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"usator\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"usatores\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"Session claudite\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"Reinitialisation del contrasigno in %(site_name)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/id/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# rodin <romihardiyanto@gmail.com>, 2011.\n#   <romihardiyanto@gmail.com>, 2011-2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2012-12-16 08:51+0000\\n\"\n\"Last-Translator: rodin <romihardiyanto@gmail.com>\\n\"\n\"Language-Team: Indonesian (http://www.transifex.com/projects/p/django/\"\n\"language/id/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: id\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"Informasi pribadi\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"Hak akses\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"Tanggal penting\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"Sandi berhasil diubah.\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"Ganti sandi: %s\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"Belum ada sandi yang disetel.\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"Format sandi tidak valid atau algoritma hash yang tidak dikenal.\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"Seorang pengguna dengan nama pengguna tersebut sudah ada.\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"Dua bidang sandi tidak cocok.\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"Username\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"\"\n\"Wajib. 30 karakter atau kurang dalam kombinasi huruf, angka, dan karakter \"\n\"@/./+/-/_ .\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"Nilai ini hanya boleh berisi huruf, angka, dan karakter @/./+/-/_ .\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"Sandi\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"Konfirmasi sandi\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Masukkan sandi yang sama dengan di atas, untuk verifikasi.\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\"Sandi mentah tidak akan disimpan dan tidak ada cara untuk membaca sandi \"\n\"pengguna ini, namun Anda dapat mengganti sandi tersebut lewat <a href=\"\n\"\\\"password/\\\">formulir ini</a>.\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"\"\n\"Tampaknya peramban Anda disetel untuk tidak menerima kuki. Kuki diperlukan \"\n\"untuk proses masuk.\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"Akun ini tidak aktif.\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\"Tidak ada akun pengguna yang terkait dengan alamat email ini. Yakin sudah \"\n\"terdaftar?\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\"Akun pengguna yang terkait dengan alamat email ini tidak dapat menyetel \"\n\"ulang sandi.\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"Email\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"Sandi baru\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"Konfirmasi sandi baru\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"Sandi lama Anda yang dimasukkan salah. Masukkan sekali lagi.\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"Sandi lama\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"Sandi (ulangi)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"algoritme\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"iterasi\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"garam\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"hash\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"faktor kerja\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"ceksum\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"nama\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"namasandi\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"hak akses\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"hak akses\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"grup\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"grup\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"sandi\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"masuk terakhir\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"status superuser\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"\"\n\"Menentukan apakah pengguna memiliki semua hak akses tanpa perlu diberikan \"\n\"secara manual.\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\"Grup tempat pengguna ini dikelompokkan. Pengguna akan mendapatkan semua hak \"\n\"akses yang diberikan pada grupnya.\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"hak akses pengguna\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"nama pengguna\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"\"\n\"Wajib. 30 karakter atau kurang dalam kombinasi huruf, angka, karakter @/./\"\n\"+/-/_ \"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"Masukkan nama pengguna yang valid.\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"nama depan\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"nama belakang\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"alamat email\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"status staf\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"Menentukan apakah pengguna berhak masuk ke situs administrasi ini.\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"aktif\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\"Menentukan apakah pengguna dianggap aktif. Hapus pilihan ini tanpa perlu \"\n\"menghapus akunnya.\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"tanggal daftar\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"pengguna\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"pengguna\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"Keluar\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"Penyetelan ulang sandi di %(site_name)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/is/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Hafsteinn Einarsson <haffi67@gmail.com>, 2011, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Logi Ragnarsson <logi@belgingur.is>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2012-12-16 08:51+0000\\n\"\n\"Last-Translator: Hafsteinn Einarsson <haffi67@gmail.com>\\n\"\n\"Language-Team: Icelandic (http://www.transifex.com/projects/p/django/\"\n\"language/is/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: is\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"Persónuupplýsingar\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"Réttindi\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"Mikilvægar dagsetningar\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"Breyting á lykilorði tókst.\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"Breyta lykilorði: %s\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"Notandi með þetta notendanafn er nú þegar til.\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"Lykilorðin tvö pössuðu ekki saman.\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"Notandanafn\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"\"\n\"Nauðsynlegt að fylla út. 30 stafir eða færri. Bókstafir (ekki broddstafir), \"\n\"tölustafir og @/./+/-/_ aðeins leyft.\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"\"\n\"Þessi reitur má aðeins innihalda bókstafi (ekki broddstafi), tölustafi og \"\n\"@/./+/-/_ táknin\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"Lykilorð\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"Staðfesting lykilorðs\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Settu inn sama lykilorðið aftur til staðfestingar.\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\"Lykilorð eru aðeins geymd dulkóðuð, svo ekki er hægt að sjá lykilorð þessa \"\n\"notanda, en þú getur breytt lykilorðinu með <a href=\\\"password/\\\">þessu \"\n\"eyðublaði</a> .\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"\"\n\"Vafri þinn virðist ekki vera stilltur til að leyfa dúsur (cookies). Dúsur \"\n\"eru nauðsynlegar fyrir innskráningu.\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"Þessi reikningur er óvirkur.\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"Nýtt lykilorð\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"Nýtt lykilorð (endurtekið)\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"Gamla lykilorðið var vitlaust. Vinsamlegast reyndu aftur.\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"Gamalt lykilorð\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"Lykilorð (aftur)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"algrím\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"ítranir\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"salt\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"hashtafla\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"vinnustuðull\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"varsumma\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"nafn\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"vinnuheiti\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"réttindi\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"réttindi\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"hópur\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"hópar\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"lykilorð\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"síðasta innskráning\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"staða ofurnotanda\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"\"\n\"Til marks um að notandinn hafi öll réttindi án þess að taka þau sérstaklega \"\n\"fram.\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\"Hópar sem þessi notandi tilheyrir. Notandi fær allan aðgangsrétt sem fylgir \"\n\"hverjum hóp sem hann/hún er skráð(ur) í.\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"réttindi\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"notandanafn\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"\"\n\"Nauðsynlegt að fylla út. 30 stafir eða færri. Bókstafir (ekki broddstafir), \"\n\"tölustafir og @/./+/-/_ aðeins leyft.\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"skírnarnafn\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"eftirnafn\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"staða starfsmanns\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"\"\n\"Segir til um hvort notandinn getur skráð sig inn á þetta stjórnunarsvæði.\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"virkur\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\"Til marks um að notandinn sé virku. Taktu hakið úr þessum möguleika til að \"\n\"eyða aðgangi.\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"skráning dags.\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"notandi\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"notendur\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"Útskráð(ur)\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"Lykilorð endursett á %(site_name)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/it/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Federico Capoano <federico.capoano@teletu.it>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Nicola Larosa <transifex@teknico.net>, 2011-2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2012-12-16 09:15+0000\\n\"\n\"Last-Translator: Nicola Larosa <transifex@teknico.net>\\n\"\n\"Language-Team: Italian (http://www.transifex.com/projects/p/django/language/\"\n\"it/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: it\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"Informazioni personali\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"Permessi\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"Date importanti\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"La password è stata cambiata correttamente.\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"Cambia la password: %s\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"Nessuna password impostata.\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"Formato di password non valido o algoritmo di hash sconosciuto.\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"Un utente con questo nome è già presente.\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"I due campi password non corrispondono.\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"Nome utente\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"Obbligatorio. 30 caratteri o meno. Solo lettere, cifre e @/./+/-/_ .\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"Questo valore può contenere solo lettere, cifre e @/./+/-/_ .\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"Password\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"Conferma password\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Inserisci la stessa password inserita sopra, come verifica.\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\"Le password originarie non vengono conservate, quindi non c'è modo di vedere \"\n\"la password di questo utente, ma è possibile modificare la password usando \"\n\"<a href=\\\"password/\\\">questa form</a>.\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\"Inserisci %(username)s e password corretti. In entrambi i campi le maiuscole \"\n\"sono significative.\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"\"\n\"Il browser web sembra non avere i cookie abilitati. I cookie sono necessari \"\n\"per poter accedere.\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"Questo account non è attivo.\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\"Questo indirizzo email non è associato ad alcun account utente. Sei sicuro \"\n\"d'esserti registrato?\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\"L'account utente associato a questo indirizzo email non può reimpostare la \"\n\"password.\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"Email\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"Nuova password\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"Conferma nuova password\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"\"\n\"La password attuale non è stata inserita correttamente: va inserita di nuovo.\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"Password attuale\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"Password (di nuovo)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"algoritmo\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"iterazioni\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"salt\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"hash\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"work factor\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"checksum\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"nome\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"nome in codice\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"permesso\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"permessi\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"gruppo\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"gruppi\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"password\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"ultimo accesso\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"privilegi di superutente\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"\"\n\"Stabilisce che l'utente ha tutti i privilegi, senza che siano stati \"\n\"assegnati esplicitamente.\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\"I gruppi cui l'utente appartiene. Un utente otterrà tutte le autorizzazioni \"\n\"concesse a ciascuno dei suoi gruppi.\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"privilegi utente\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"nome utente\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"Obbligatorio. 30 caratteri o meno. Solo lettere, cifre e @/./+/-/_\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"Inserisci un nome utente valido.\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"nome\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"cognome\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"indirizzo email\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"privilegi di staff\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"Indica se l'utente può accedere a questo sito di amministrazione.\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"attivo\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\"Stabilisce se l'utente debba essere considerato attivo. Deseleziona qui, \"\n\"piuttosto che cancellare gli account.\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"iscritto in data\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"utente\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"utenti\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"Accesso annullato\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"Password reset su %(site_name)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/ja/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Shinya Okano <tokibito@gmail.com>, 2012-2013.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2013-02-20 06:52+0000\\n\"\n\"Last-Translator: Shinya Okano <tokibito@gmail.com>\\n\"\n\"Language-Team: Japanese (http://www.transifex.com/projects/p/django/language/\"\n\"ja/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ja\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"個人情報\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"パーミッション\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"重要な日程\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"パスワードを変更しました\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"パスワードの変更: %s\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"同じユーザー名が既に登録済みです。\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"確認用パスワードが一致しません。\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"ユーザー名\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"\"\n\"この項目は必須です。半角アルファベット、半角数字、@/./+/-/_ で30文字以下にし\"\n\"てください。\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"半角の英数字および次の記号 @/./+/-/_ 以外は使用できません。\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"パスワード\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"パスワードの確認\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"確認のため、再度パスワードを入力してください。\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\"生のパスワードが格納されていないので、このユーザーのパスワードは参照できませ\"\n\"んが、 <a href=\\\"password/\\\">このフォーム</a> を使用してパスワードを変更でき\"\n\"ます 。\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"\"\n\"お使いのブラウザはクッキーを有効にしていないようです。ログインにはクッキーが\"\n\"必要です。\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"アカウントが無効です。\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"新しいパスワード\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"新しいパスワード(確認用)\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"元のパスワードが間違っています。もう一度入力してください。\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"元のパスワード\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"パスワード(確認用)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"アルゴリズム\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"イテレーション\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"ソルト\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"ハッシュ\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"ワークファクター\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"チェックサム\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"名前\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"コード名\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"パーミッション\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"パーミッション\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"グループ\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"グループ\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"パスワード\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"最終ログイン\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"スーパーユーザー権限\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"全ての権限を持っているとみなされます。\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\"このユーザーが所属するグループ。ユーザーはグループのそれぞれに付与されている\"\n\"すべての権限を持ちます。\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"ユーザーパーミッション\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"ユーザー名\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"\"\n\"この項目は必須です。半角アルファベット、半角数字、次の記号 @/./+/-/_ で30文字\"\n\"以下にしてください。\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"名\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"姓\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"スタッフ権限\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"ユーザーが管理サイトにログイン可能かどうかを示します。\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"有効\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\"ユーザーがアクティブかどうかを示します。アカウントを消す代わりに選択を解除し\"\n\"てください。\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"登録日\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"ユーザー\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"ユーザー\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"ログアウト\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"%(site_name)s のパスワードリセット\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/ka/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Translators:\n# André Bouatchidzé <a@anbz.net>, 2013.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2013-03-01 16:20+0000\\n\"\n\"Last-Translator: André Bouatchidzé <a@anbz.net>\\n\"\n\"Language-Team: Georgian (http://www.transifex.com/projects/p/django/language/\"\n\"ka/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ka\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"პირადი ინფორმაცია\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"უფლებები\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"მნიშვნელოვანი თარიღები\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"პაროლი წარმატებით შეიცვალა.\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"შევცვალოთ პაროლი: %s\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"არ არის დაყენებული პაროლი.\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"არასწორი პაროლის ფორმატი ან უცნობი ჰეშირების ალგორითმი.\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"მომხმარებელი ამ სახელით უკვე არსებობს.\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"პაროლის ორი ველი ერთმანეთს არ ემთხვევა.\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"მომხმარებელი\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"\"\n\"აუცილებელია. 30-მდე სიმბოლო. მხოლოდ ლათინური ასოები, ციფრები და შემდეგი \"\n\"სიმბოლოები: @/./+/-/_.\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"\"\n\"დასაშვებია მხოლოდ ლათინური ასოები, ციფრები და შემდეგი სიმბოლოები: @/./+/-/_.\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"პაროლი\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"პაროლის დამოწმება\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"შეიყვანეთ იგივე პაროლი, დამოწმებისათვის.\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\"დაუმუშავებელი პაროლები არ ინახება, ასე რომ, არ არსებობს ამ მომხმარებლის \"\n\"პაროლის ნახვის საშუალება, მაგრამ თქვენ შეგიძლიათ შეცვალოთ პაროლი <a href=\"\n\"\\\"password/\\\">ამ ფორმის</a> მეშვეობით.\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\"გთხოვთ, შეიყვანოთ სწორი %(username)s და პაროლი. იქონიეთ მხედველობაში, რომ \"\n\"ორივე ველი ითვალისწინებს მთავრულს.\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"\"\n\"თქვენი ბროუზერი არ ღებულობს cookie-ებს. Cookie საჭიროა საიტზე შესასვლელად.\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"თქვენი ანგარიში არააქტიურია.\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\"ამ ელ. ფოსტის მისამართს არ გააჩნია ასოცირებული მომხმარებლის ანგარიში. \"\n\"დარწმუნებული ხართ, რომ დარეგისტრირდით?\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\"ამ ელ. ფოსტასთან ასოცირებულ მომხმარებლის ანგარიშს არ გააჩნია პაროლის თავიდან \"\n\"დაყენების უფლება.\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"ელ. ფოსტა\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"ახალი პაროლი\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"ახალი პაროლის დამოწმება\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"თქვენი ძველი პაროლი შეყვანილია არასწორად. გთხოვთ, შეიყვანოთ ხელახლა.\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"ძველი პაროლი\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"პაროლი (განმეორებით)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"ალგორითმი\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"იტერაციები\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"მარილი\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"ჰეში\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"სამუშაო ფაქტორი\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"საკონტროლო ჯამი\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"სახელი\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"კოდური სახელი\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"უფლება\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"უფლებები\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"ჯგუფი\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"ჯგუფები\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"პაროლი\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"ბოლო შესვლა\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"სუპერმომხმარებლის სტატუსი\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"განსაზღვრავს, რომ ამ მომხმარებელს აქვს ყველა უფლება.\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\"ჯგუფები, რომლებსაც მიეკუთვნება ეს მომხმარებელი. მომხმარებელს ენიჭება მისი \"\n\"ყოველი ჯგუფის ყველა უფლება.\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"მომხმარებლის უფლებები\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"მომხმარებლის სახელი\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"\"\n\"აუცილებელია. 30-მდე სიმბოლო. მხოლოდ ლათინური ასოები, ციფრები და შემდეგი \"\n\"სიმბოლოები: @/./+/-/_.\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"შეიყვანეთ სწორი მომხმარებლის სახელი.\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"სახელი\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"გვარი\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"ელ. ფოსტის მისამართი\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"თანამშრომლობის სტატუსი\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"\"\n\"განსაზღვრავს, აქვს თუ არა მომხმარებელს ადმინისტრირების საიტზე შესვლის უფლება.\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"აქტიურია\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\"განსაზღვრავს, რომ მომხმარებელი გააქტიურებულია. მომხმარებლის წაშლის მაგივრად \"\n\"გადანიშნეთ ეს დროშა.\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"გაწევრიანების თარიღი\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"მომხმარებელი\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"მომხმარებლები\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"გამოსული ხართ\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"პაროლის თავიდან დაყენება %(site_name)s-ზე\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/kk/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <germanilyin@gmail.com>, 2011.\n#   <zhazira.mt@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2012-12-16 08:51+0000\\n\"\n\"Last-Translator: yun_man_ger <germanilyin@gmail.com>\\n\"\n\"Language-Team: Kazakh (http://www.transifex.com/projects/p/django/language/\"\n\"kk/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: kk\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"Жеке мағлұмат\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"Рұқсаттар\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"Маңызды даталар\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"Құпия сөз ойдағыдай өзгертілді.\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"Құпия сөзді өзгерту: %s\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"Осындай атаумен қолданушы бар.\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"Енгізілген құпия сөздер бірдей емес.\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"Қолданушы атауы\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"\"\n\"Міндетті. 30 немесе одан кем символ. Тек әріптер, цифрлар және @/./+/-/_.\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"Бұл мән тек әріптерді, цифрлерді және @/./+/-/_ құрайды.\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"Құпия сөз\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"Құпия сөз құптамасы\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Тексеру үшін құпия сөзді үстіндегідей енгізіңіз.\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"\"\n\"Cіздің веб-шолғышыңызде cookies доғарылған сияқты. Кіру үшін Сookies-ті қосу \"\n\"керек.\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"Бұл тіркелгі белсенді емес.\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"Жаңа құпия сөз\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"Жаңа құпия сөз құптамасы\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"Ескі құпия сөз қате енгізілді. Қайтадан енгізіңіз.\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"Ескі құпия сөз\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"Құпия сөз (қайтадан)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"атау\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"кодтық атау\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"рұқсат\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"рұқсаттар\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"топ\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"топтар\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"құпия сөз\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"соңғы кіруі\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"әкімші мәртебесі\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"Бұл қолданушының бүкіл рұқсаттарымен тағайындалатындығын білдіреді.\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"қолданушы рұқсаттары\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"Қолданушы атауы\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"\"\n\"Міндетті. 30 немесе одан кем символ. Тек әріптер, цифрлар және @/./+/-/_.\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"аты\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"жөні\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"қызметкер мәртебесі\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"Қолданушының басқарушы сайтына кіре алатындығын білдіреді.\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"белсенді\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\"Қолданушы белсенді болуын білдіреді. Тіркілгіні өшірмей мынаны алып тастаңыз.\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"тіркелген күн-айы\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"қолданушы\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"қолданушылар\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"Шығу орындалды\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"%(site_name)s торапта құпия сөзді өзгерту\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/km/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2012-12-16 08:51+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: English <en@li.org>\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: km\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"ព័ត៌មានផ្ទាល់ខ្លួន\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"ការអនុញ្ញាត\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"កាលបរិច្ឆេទសំខាន់\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"ឈ្មោះជាសមាជិក\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"ពាក្យសំងាត់\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"សូមបំពេញពាក្យសំងាត់ដូចខាងលើ ដើម្បីត្រួតពិនិត្យ។ \"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"\"\n\"កម្មវិធីសំរាប់មើលគេហទំព័រនេះហាក់បីដូចជាមិនទាន់បានទទួលយកគុគី ។ ចាំបាច់ត្រូវកំណត់អោយ​\"\n\"កម្មវិធីសំរាប់មើលគេហទំព័រទទួល​យក គុគី ដើម្បីពិនិត្យចូល ។\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"ឈ្មោះសមាជិកនេះ​លែងដំណើរការ\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"ពាក្យសំងាត់ (ម្តងទៀត)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"ឈ្មោះ\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"ឈ្មោះលេខកូត\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"អនុញ្ញាត\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"អនុញ្ញាត\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"ក្រុម\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"ក្រុម\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"ពាក្យសំងាត់\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"ការពិនិត្យចូលកន្លងមក\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"ស្ថានភាពអ្នកគ្រងគ្រង\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"កំណត់អោយសមាជិកនេះមានសិទ្ធិទាំងអស់។\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"ការអនុញ្ញាតអោយសមាជិក\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"ឈ្មោះជាសមាជិក\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"នាម\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"គោត្តនាម\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"ស្ថានភាពបុគ្គលិក\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"កំណត់អោយសមាជិកអាចចូលមកប្រើប្រាស់ទំព័រគ្រប់គ្រងនេះ។\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"សកម្ម\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"កាលបរិច្ឆេទចូលរួម\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"សមាជិក\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"សមាជិក\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"ចាកចេញ\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/kn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <karthikbgl@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2012-12-16 08:51+0000\\n\"\n\"Last-Translator: karthikbgl <karthikbgl@gmail.com>\\n\"\n\"Language-Team: Kannada (http://www.transifex.com/projects/p/django/language/\"\n\"kn/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: kn\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"ವೈಯುಕ್ತಿಕ ಮಾಹಿತಿ\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"ಅನುಮತಿಗಳು\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"ಮಹತ್ವದ ದಿನಾಂಕಗಳು\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"ಪಾಸ್ವರ್ಡ್ ಸಫಲವಾಗಿ ಬದಲಾಯಿಸಲಾಯಿತು\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"ಪಾಸ್ವರ್ಡ್ ಬದಲಾಯಿಸಲು: %s\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"ಆ ಬಳಕೆದಾರಹೆಸರು ಒಂದು ಬಳಕೆದಾರ ಈಗಾಗಲೇ ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ.\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"ಎರಡು ಪ್ರವೇಶಪದ ಕ್ಷೇತ್ರಗಳ ಹೊಂದಿಕೆಯಾಗುತ್ತಿಲ್ಲ\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"ಬಳಕೆದಾರ-ಹೆಸರು\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"ಪ್ರವೇಶಪದ\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"ಪಾಸ್ವರ್ಡ್ ಖಚಿತತೆ\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"ಖಚಿತಗೊಳಿಸಲು ಮೇಲಿನ ಪ್ರವೇಶಪದವನ್ನು ಇನ್ನೊಮ್ಮೆ ಬರೆಯಿರಿ.\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"ನಿಮ್ಮ ಜಾಲವೀಕ್ಷಕದಲ್ಲಿ ಕುಕೀಗಳು ಸಕ್ರಿಯಗೊಳಿಸಲ್ಪಟ್ಟಂತಿಲ್ಲ. ಒಳಬರಲು ಕುಕೀಗಳು ಅಗತ್ಯ. \"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"ಈ ಖಾತೆಯು ನಿಷ್ಕ್ರಿಯವಾಗಿದೆ\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"ಹೊಸ ಪ್ರವೇಶಪದ\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"ಹೊಸ ಪ್ರವೇಶಪದ ಖಚಿತತೆ\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"ನಿಮ್ಮ ಹಳೆಯ ಪ್ರವೇಶಪದ ತಪ್ಪಾಗಿ ಪ್ರವೇಶಿಸಲಾಗಿದೆ ಮತ್ತೆ ದಯವಿಟ್ಟು ನಮೂದಿಸಿ\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"ಹಳೆಯ ಪ್ರವೇಶಪದ\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"ಪ್ರವೇಶಪದ(ಇನ್ನೊಮ್ಮೆ)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"ಹೆಸರು\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"ಸಾಂಕೇತಿಕ ಹೆಸರು\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"ಅನುಮತಿ\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"ಅನುಮತಿಗಳು\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"ಗುಂಪು\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"ಗುಂಪುಗಳು\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"ಪ್ರವೇಶಪದ\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"ಕಡೇ ಸಾರಿ ಒಳಬಂದದ್ದು\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"ಮಹಾಬಳಕೆದಾರನ ಸ್ಧಿತಿ\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"\"\n\"ಈ ಸದಸ್ಯರು ಸುವ್ಯಕ್ತವಾಗಿ  ನೀಡದಿದ್ದರೂ ಎಲ್ಲಾ ಅನುಮತಿಗಳನ್ನು ಪಡೆದಿರುವರು ಎಂಬುದನ್ನು \"\n\"ಸೂಚಿಸುತ್ತದೆ.\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"ಬಳಕೆದಾರ ಅನುಮತಿಗಳು\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"ಬಳಕೆದಾರ-ಹೆಸರು\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"ಮೊದಲ ಹೆಸರು\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"ಕೊನೆಯ ಹೆಸರು\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"ಸಿಬ್ಬಂದಿ ಸ್ಥಿತಿ\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"ಬಲಕೆದಾರರು ಈ ಆಡಳಿತ ತಾಣಕ್ಕೆ  ಪ್ರವೇಶಪಡೆಯಬಹುದೇ ಎಂಬುದನ್ನು ತಿಳಿಸುತ್ತದೆ.\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"ಸಕ್ರಿಯ\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"ಸೇರಿದ ದಿನಾಂಕ\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"ಬಳಕೆದಾರ\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"ಬಳಕೆದಾರರು\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"ಹೊರಬರಲಾಗಿದೆ\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/ko/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2012-12-16 08:51+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Korean (http://www.transifex.com/projects/p/django/language/\"\n\"ko/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ko\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"개인정보\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"권한\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"중요한 일정\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"비밀번호가 변경되었습니다.\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"비밀번호 변경: %s\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"해당 사용자명은 이미 존재합니다.\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"비밀번호가 일치하지 않습니다.\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"사용자명\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"\"\n\"필수항목입니다. 30자 이내로 입력하세요. (알파벳, 숫자, @/./+/-/_만 가능)\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"알파벳, 숫자 및 @/./+/-/_만 가능합니다.\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"비밀번호\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"비밀번호 확인\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"확인을 위해 위와 동일한 비밀번호를 입력하세요. \"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"\"\n\"사용하시는 브라우저가 쿠키를 허용하지 않습니다.로그인하기 위해서는 쿠키 사용\"\n\"이 필요합니다.\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"이 계정은 유효하지 않습니다.\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"새 비밀번호:\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"새 비밀번호 확인:\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"기존 비밀번호를 잘못 입력하셨습니다. 다시 입력해 주세요.\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"기존 비밀번호:\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"비밀번호 (확인)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"이름\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"코드명\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"허가\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"허가\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"그룹\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"그룹\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"비밀번호\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"마지막 로그인\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"최상위 사용자 권한\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"해당 사용자에게 모든 권한을 허가합니다.\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"사용자 권한\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"사용자명\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"\"\n\"필수항목입니다. 30자 이내로 입력하세요. (알파벳, 숫자, @/./+/-/_만 가능)\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"이름\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"성\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"스태프 권한\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"사용자가 관리사이트에 로그인이 가능한지를 나타냅니다.\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"활성\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\"사용자가 'Django 관리'에 로그인이 가능한지를 나타냅니다.계정을 삭제하는 대신 \"\n\"이것을 선택 해제하세요.\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"등록일\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"사용자\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"사용자(들)\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"로그 아웃\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/lt/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# lauris <lauris@runbox.com>, 2011.\n#   <naktinis@gmail.com>, 2012.\n# Nikolajus Krauklis <nikolajus@gmail.com>, 2013.\n# Simonas Kazlauskas <simonas@kazlauskas.me>, 2012.\n# Simonas Simas <simonas@kazlauskas.me>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2013-02-23 12:40+0000\\n\"\n\"Last-Translator: Nikolajus Krauklis <nikolajus@gmail.com>\\n\"\n\"Language-Team: Lithuanian (http://www.transifex.com/projects/p/django/\"\n\"language/lt/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: lt\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n\"\n\"%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"Asmeninė informacija\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"Leidimai\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"Svarbios datos\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"Slaptažodis pakeistas sėkmingai.\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"Pakeisti slaptažodį: %s\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"Slaptažodis nenustatytas\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"Neteisingas slaptažodžio formatas arba nežinomas maišos algoritmas.\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"Jau egzistuoja vartotojas su tokiu vardu.\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"Slaptažodžio laukai nesutapo\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"Vartotojo vardas\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"\"\n\"Privalomas. 30 arba mažiau simbolių. Raidės, skaičiai bei @/./+/-/_ \"\n\"simboliai.\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"Ši reikšmė gali turėti tik raides, skaičius  ir @/./+/-/_ simbolius.\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"Slaptažodis\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"Slaptažodžio patvirtinimas\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Patikrinimui įvesk tokį patį slaptažodį, kaip viršuje.\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\"Neužkoduoti slaptažodžiai nėra saugomi, todėl galimybės pasižiūrėti šio \"\n\"vartotojo slaptažodį nėra. Tiesa galite slaptažodį pakeisti naudodamiesi <a \"\n\"href=\\\"password/\\\">šia forma</a>.\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\"Įveskite teisingą %(username)s ir slaptažodį. Abiejuose laukuose didžiosios \"\n\"mažosios raidės skiriasi.\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"\"\n\"Atrodo, jūsų naršyklė nepriima sausainėlių(cookies). Sausainėliai yra \"\n\"reikalingi norint prisijungti.\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"Ši paskyra yra neaktyvi.\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\"Šis el. pašto adresas neturi susieto vartotojo. Ar esate įsitikinę, kad \"\n\"esate užsiregistravę?\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\"Vartotojas susietas su šiuo el. pašto adresu negali atstatyti slaptažodžio.\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"El. paštas\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"Naujas slaptažodis\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"Naujo slaptažodžio patvirtinimas\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"Blogai įvestas senas slaptažodis. Bandykite dar kartą.\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"Senas slaptažodis\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"Slaptažodis (dar kartą)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"algoritmas\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"iteracijos\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"druska\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"maiša\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"darbo faktorius\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"kontrolinė suma\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"vardas\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"kodinis vardas\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"leidimas\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"leidimai\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"grupė\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"grupės\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"slaptažodis\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"paskutinį kartą prisijungęs\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"supervartotojo statusas\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"Pažymi, kad šis vartotojas turi visas teises be specialių nustatymų.\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\"Grupės, kurioms šis vartotojas priklauso. Vartotojas gaus visas teises, \"\n\"kurios yra suteiktos jo grupėms.\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"vartotojo leidimai\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"vartotojo vardas\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"\"\n\"Privalomas. 30 arba mažiau simbolių. Raidės, skaičiai bei @/./+/-/_ \"\n\"simboliai.\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"Įveskite teisingą vartotojo vardą.\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"vardas\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"pavardė\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"El. pašto adresas\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"personalo statusas\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"Nurodo ar vartotojas gali prisijungti prie administravimo puslapio.\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"aktyvus\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\"Nurodo ar vartotojas yra aktyvuotas. Užuot pašalinę vartotoją, galite nuimti \"\n\"šią žymę.\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"data, kada prisijungė\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"vartotojas\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"vartotojai\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"Atsijungęs\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"Slaptažodis atkurtas ant %(site_name)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/lv/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2012-12-16 08:51+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Latvian (http://www.transifex.com/projects/p/django/language/\"\n\"lv/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: lv\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : \"\n\"2);\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"Personīgā informācija\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"Tiesības\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"Svarīgi datumi\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"Paroles nomainīta sekmīgi.\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"Paroles maiņa: %s\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"Lietotājs ar šādu lietotāja vārdu jau eksistē.\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"Paroles lauki nesakrita.\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"Lietotāja vārds\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"Obligāts. 30 vai mazāk zīmes. Tikai burti, cipari un  @/./+/-/_ .\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"Šī vērtība var saturēt tikai burtus, ciparus un @/./+/-/_ simbolus\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"Parole\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"Paroles apstiprinājums\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Pārbaudei atkārtoti ievadiet to pašu paroli kā augstāk.\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"\"\n\"Izskatās, ka izmantotajam pārlūkam nav ieslēgtas sīkdatnes (cookies). Tās ir \"\n\"obligātas, lai pieslēgtos.\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"Šis konts nav aktīvs.\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"Jaunā parole\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"Jaunās parole vēlreiz\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"\"\n\"Jūsu iepriekšējā parole netika ievadīta korekti. Lūdzu ievadiet to atkārtoti.\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"Vecā parole\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"Parole (vēlreiz)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"nosaukums\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"kods\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"tiesība\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"tiesības\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"grupa\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"grupas\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"parole\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"pēdējoreiz pieslēdzies\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"superlietotāja statuss\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"Lietotājam ir visas tiesības arī bez to atsevišķas piešķiršanas.\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"lietotāja tiesības\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"lietotāja vārds\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"Obligāts. 30 vai mazāk zīmes. Tikai burti, cipari un @/./+/-/_ simboli\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"vārds\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"uzvārds\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"personāla statuss\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"\"\n\"Atzīmējiet, ja vēlaties, lai lietotājs var pieslēgties administrācijas lapā.\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"aktīvs\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"Nosaka, vai lietotājs ir aktīvs. Atceliet šo konta dzēšanas vietā.\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"datums, kad pievienojies\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"lietotājs\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"lietotāji\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"Atslēdzies\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/mk/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <vvangelovski@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2012-12-16 08:51+0000\\n\"\n\"Last-Translator: vvangelovski <vvangelovski@gmail.com>\\n\"\n\"Language-Team: Macedonian (http://www.transifex.com/projects/p/django/\"\n\"language/mk/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: mk\\n\"\n\"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"Лични информации\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"Привилегии\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"Важни датуми\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"Успешна промена на лозинката.\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"Промени лозинка: %s\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"Веќе постои корисник со тоа корисничко име.\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"Двете полиња со лозинките не се совпаѓаат.\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"Корисник\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"\"\n\"Задолжително. 30 или помалку знаци. Единствено букви, бројки и  @/./+/-/_ .\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"Оваа вредност смее да содржи само букви, бројки и @/./+/-/_ знаци.\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"Лозинка\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"Потврда на лозинка\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Заради верификација внесете ја истата лозинка како и горе.\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\"Лозинките не се чуваат во оригинална форма, така што не постои начин да ја \"\n\"видите лозинката на овој корисник, но можете да ја смените лозинката со \"\n\"користење на <a href=\\\"password/\\\">оваа форма</a> .\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"\"\n\"Не изгледа дека вашиот прелистувач има овозможено колачиња. Колачињата се \"\n\"потребни за да се најавите.\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"Оваа сметка е неактивна.\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"Нова лозинка\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"Потврда за нова лозинка\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"\"\n\"Не ја внесовте точно вашата стара лозинка. Ве молам внесете ја повторно.\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"Стара лозинка\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"Лозинка (повторно)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"алгоритам\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"повторувања\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"случаен клуч\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"хеш\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"фактор на работа\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"проверка\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"име\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"кодно име\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"привилегија\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"привилегии\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"група\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"групи\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"лозинка\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"последна најава\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"статус на суперкорисник\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"\"\n\"Означува дека овој корисник ги има сите привилегии без експлицитно да се \"\n\"доделуваат сите.\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\"Групите на кои овој корисник припаѓа. Корисникот ќе ги добие сите привилегии \"\n\"доделени на секоја од неговите / нејзините групи.\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"кориснички привилегии\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"корисничко име\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"Задолжително. 30 или помалку знаци. Букви, бројки и  @/./+/-/_ знаци\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"име\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"презиме\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"статус на администраторите\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"\"\n\"Означува дали корисникот може да се логира во сајтот за администрација.\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"активен\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\"Означува дали корисникот треба да биде активен. Одштиклирајте го ова наместо \"\n\"да бришете корисници.\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"датум на зачленување\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"корисник\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"корисници\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"Одјавен\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"Ресетирање на лозинка за  %(site_name)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/ml/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <david.forgoz@gmail.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Rajeesh Nair <rajeeshrnair@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2012-12-16 08:51+0000\\n\"\n\"Last-Translator: Rajeesh Nair <rajeeshrnair@gmail.com>\\n\"\n\"Language-Team: Malayalam (http://www.transifex.com/projects/p/django/\"\n\"language/ml/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ml\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"വ്യക്തിപരമായ വിവരങ്ങള്‍\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"അനുമതികള്‍\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"പ്രധാന തീയതികള്‍\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"പാസ് വേര്‍ഡ് മാറ്റിയിരിക്കുന്നു.\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"പാസ് വേര്‍ഡ് മാറ്റുക: %s\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"രഹസ്യവാക്ക് ക്രമീകരിച്ചിട്ടില്ല\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"ആ പേരുള്ള ഒരു ഉപയോക്താവ് നിലവിലുണ്ട്.\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"പാസ്‌വേര്‍ഡ് നല്കിയ കള്ളികള്‍ രണ്ടും തമ്മില്‍ സാമ്യമില്ല.\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"യൂസര്‍ നാമം (ഉപയോക്ത്രു നാമം)\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"\"\n\"നിര്‍ബന്ധം. 30 ഓ അതില്‍ കുറവോ ചിഹ്നങ്ങള്‍. അക്ഷരങ്ങള്‍, അക്കങ്ങള്‍, പിന്നെ @/./+/-/_എന്നിവയും \"\n\"മാത്രം.\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"അക്ഷരങ്ങള്‍, അക്കങ്ങള്‍, പിന്നെ @/./+/-/_എന്നിവയും മാത്രം.\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"പാസ്‌വേര്‍ഡ്\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"പാസ്‌വേര്‍ഡ് ഉറപ്പാക്കല്‍\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"പാസ്‌വേര്‍ഡ് മുകളിലെ പോലെ തന്നെ നല്കുക. (ഉറപ്പു വരുത്താനാണ്.)\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\"പാസ്‌വേര്‍ഡുകള്‍ അതേപടി സൂക്ഷിച്ചു വെക്കാത്തതുകൊണ്ട്  ഈ യൂസറുടെ പാസ്‌വേര്‍ഡ് കാണാന്‍ കഴിയില്ല, പകരം <a \"\n\"href=\\\"password/\\\">ഈ ഫോമു</a>പയോഗിച്ച് നിലവിലുള്ള പാസ്‌വേര്‍ഡ് മാറ്റാവുന്നതാണ്.\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"\"\n\"നിങ്ങളുടെ വെബ്-ബ്രൗസറിലെ കുക്കീസൊന്നും പ്രവര്‍ത്തിക്കുന്നില്ല. ഇതിലേക്ക് പ്രവേശിക്കാന്‍ കുക്കീസ് \"\n\"ആവശ്യമാണ്.\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"ഈ അക്കൗണ്ട് മരവിപ്പിച്ചതാണ്.\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"ഈമെയിൽ\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"പുതിയ പാസ്‌വേര്‍ഡ്\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"പുതിയ പാസ്‌വേര്‍ഡ് ഉറപ്പാക്കല്‍\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"നിങ്ങളുടെ പഴയ പാസ്‌വേര്‍ഡ് തെറ്റായാണ് നല്കിയത്. തിരുത്തുക.\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"പഴയ പാസ്‌വേര്‍ഡ്\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"പാസ്‌വേര്‍ഡ് (വീണ്ടും)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"അല്‍ഗോരിതം\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"പുനരാവൃത്തികള്‍\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"സോള്‍ട്ട്\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"ഹാഷ്\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"വര്‍ക്ക് ഫാക്ടര്‍\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"ചെക്‍സം\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"പേര്\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"കോഡ്-നാമം\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"അനുമതി\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"അനുമതികള്‍\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"ഗ്രൂപ്പ്\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"ഗ്രൂപ്പുകള്‍\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"പാസ്‌വേര്‍ഡ്\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"അവസാനമായി ലോഗിന്‍ ചെയ്തതു\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"സൂപ്പര്‍-യൂസര്‍ പദവി\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"ഈ ഉപയോക്താവിന് എടുത്തു പറയാതെ തന്നെ എല്ലാ അനുമതികളും ലഭിക്കുന്നതാണെന്ന് വ്യക്തമാക്കുന്നു\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\"ഈ യൂസര്‍ ഉള്‍പ്പെടുന്ന ഗ്രൂപ്പുകള്‍. ഒരു യൂസര്‍ക്ക് അയാളുടെ/അവരുടെ ഓരോ ഗ്രൂപ്പിന്റേയും മുഴുവന്‍ അനുമതികളും \"\n\"ലഭിക്കും.\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"യൂസര്‍ (ഉപയോക്താവ്)നുള്ള അനുമതികള്‍\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"യൂസര്‍ നാമം (ഉപയോക്ത്രു നാമം)\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"\"\n\"നിര്‍ബന്ധം. 30 ഓ അതില്‍ കുറവോ ചിഹ്നങ്ങള്‍. അക്ഷരങ്ങള്‍, അക്കങ്ങള്‍, പിന്നെ @/./+/-/_എന്നിവയും \"\n\"മാത്രം.\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"തെറ്റായ ഉപഭോക്തൃ നാമം\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"പേര് - ആദ്യഭാഗം\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"പേര് - അന്ത്യഭാഗം\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"ഈമെയിൽ വിലാസം\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"സ്റ്റാഫ് പദവി\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"ഈ യൂസര്‍ക്ക് ഈ അഡ്മിന്‍ സൈറ്റിലേക്ക് പ്രവേശിക്കാമോ എന്നു വ്യക്തമാക്കാന്‍\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"സജീവം\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\"ഈ യൂസര്‍ സജീവമാണോയെന്ന് വ്യക്തമാക്കുന്നു. അക്കൗണ്ട് ഡിലീറ്റ് ചെയ്യുന്നതിനു പകരം ഇത് ഒഴിവാക്കുക.\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"ചേര്‍ന്ന തീയതി\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"യൂസര്‍ (ഉപയോക്താവ്)\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"യൂസേര്‍സ് (ഉപയോക്താക്കള്‍)\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"ലോഗ്-ഔട്ട് ചെയ്തു (പുറത്തിറങ്ങി)\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"%(site_name)s ലെ പാസ്‌വേര്‍ഡ് മാറ്റിയിരിക്കുന്നു\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/mn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Анхбаяр Анхаа <l.ankhbayar@gmail.com>, 2011-2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2012-12-18 02:26+0000\\n\"\n\"Last-Translator: Анхбаяр Анхаа <l.ankhbayar@gmail.com>\\n\"\n\"Language-Team: Mongolian (http://www.transifex.com/projects/p/django/\"\n\"language/mn/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: mn\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"Хувийн мэдээлэл\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"Эрхүүд\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"Чухал огноо\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"Нууц үг амжилттай өөрчлөгдлөө.\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"Нууц үг өөрчлөх: %s\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"Нууц үг тохируулаагүй.\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"Нууц үгийн буруу формат эсвэл үл мэдэгдэх хаш алгоритм байна.\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"Ийм хэрэглэгчийн нэртэй хэрэглэгч өмнө нь бүртгүүлсэн байна.\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"Хоёр нууц үг зөрж байна.\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"Хэрэглэгчийн нэр\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"\"\n\"Заавал. 30 ба түүнээс бага үсэгтэй. Зөвхөн латин үсэг, тоо болон @/./+/-/_ \"\n\"тэмдэгтүүдийг зөвшөөрнө.\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"Энэ утга дотор зөвхөн үсэг, тоо болон @/./+/-/_ тэмдэгтүүд байж болно.\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"Нууц үг \"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"Нууц үгийн баталгаа\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Батлахын тулд дээрх нууц үгээ ахин хийнэ үү.\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\"Жинхэн нууц үгүүдийг хадгалдаггүй учраас хэрэглэгчийн нууц үгийг харах \"\n\"боломжгүй юм. Гэхдээ та нууц үгийг <a href=\\\"password/\\\">цонхоор</a> өөрчлөх \"\n\"боломжтой.\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\"Зөв %(username)s, нууц үг оруулна уу. Том жижиг үсэг ялгаатай болхын \"\n\"анхаарна уу.\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"\"\n\"Та вэб хөтчөө cookie ажиллахаар тохируулаагүй юм шиг байна. Нэвтрэхэд cookie \"\n\"шаардлагатай байдаг.\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"Энэ бүртгэл идэвхгүй байна.\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\"Энэ цахим шуудангийн хаягаар бүртгүүлсэн хэрэглэгчийн бүртгэл байхгүй байна. \"\n\"Та бүртгүүлсэн гэдэгтээ итгэлтэй байна уу?\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\"Энэ цахим хаягаар бүртгүүлсэн хэрэглэгчийн нууц үгийг сэргээх боломжгүй.\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"Цахим хаяг\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"Шинэ нууц үг\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"Шинэ нууц үгийн баталгаа\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"Хуучин нууц үгээ буруу оруулсан байна. Ахин оруулна уу.\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"Хуучин нууц үг\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"Нууц үг (ахиад)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"Алгоритм\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"давталтууд\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"давс\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"хаш\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"ажлын байгуулагч\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"checksum\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"нэр\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"Код\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"зөвшөөрөл\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"зөвшөөрлүүд\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"бүлэг \"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"бүлгүүд\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"нууц үг\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"сүүлд нэвтэрсэн\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"Удирдлагын төлөв\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"Энэ хэрэглэгчид бүх зөвшөөрөл байгааг ил тод харуулалгүй тодорхойлно. \"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\"Бүлэгүүд энэ хэрэглэгчийнхээс тусдаа. Хэрэглэгчид нь сонгосон бүлэгт \"\n\"олгогдсон бүх эрх зөвшөөрөгдөх болно.\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"хэрэглэгчийн эрхүүд\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"хэрэглэгчийн нэр\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"\"\n\"Заавал. 30 болон түүнээс бага тэмдэгт. Үсэг, тоо болон @/./+/-/_ тэмдэгтүүд \"\n\"ашиглана уу.\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"Зөв нэвтрэх нэр оруулна уу.\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"нэр\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"овог\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"цахим хаяг\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"Хэрэглэгчдийн төлөв\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"\"\n\"Уг удирдлагын сайт руу хэрэглэгч нэвтрэх боломжтой эсэхийг тодорхойлно.\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"идэвхтэй\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\"Энэ хэрэглэгчийг идэвхтэй болгох эсэхийг тодорхойлно. Бүртгэлийг нь устгахын \"\n\"оронд сонгохгүй байхад л хангалттай.\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"бүртгүүлсэн огноо\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"хэрэглэгч \"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"хэрэглэгчид\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"Гарсан\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"%(site_name)s cайт дээрх нууц үг сэргээлт\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/nb/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <jonklo@gmail.com>, 2012-2013.\n#   <sigurdga-transifex@sigurdga.no>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2013-01-09 23:06+0000\\n\"\n\"Last-Translator: jonklo <jonklo@gmail.com>\\n\"\n\"Language-Team: Norwegian Bokmål (http://www.transifex.com/projects/p/django/\"\n\"language/nb/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: nb\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"Personlig informasjon\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"Rettigheter\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"Viktige datoer\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"Passordet er endret.\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"Endre passord: %s\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"Passord ikke satt.\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"Ugyldig passordformat eller ukjent hash-algoritme.\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"Det eksisterer allerede en bruker med dette brukernavnet.\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"De to passordfeltene er ikke like.\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"Brukernavn\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"Påkrevet. 30 tegn eller færre. Kun bokstaver, tall og @/./+/-/_.\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"Verdien kan kun inneholde bokstaver, tall og @/./+/-/_.\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"Passord\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"Passordbekreftelse\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Skriv inn det samme passordet som ovenfor, for verifisering.\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\"Selve passordet lagres ikke, så det finnes ingen måte å se denne brukerens \"\n\"passord på. Du kan endre passordet med <a href=\\\"password/\\\">dette skjemaet</\"\n\"a>.\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\"Vennligst oppgi korrekt %(username)s og passord. Merk at det kan være \"\n\"forskjell på små og store bokstaver.\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"\"\n\"Din nettleser ser ikke ut til å støtte informasjonskapsler (cookies). \"\n\"Informasjonskapsler er påkrevet for å logge inn.\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"Denne kontoen er inaktiv.\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\"Den oppgitte e-postadressen er ikke registrert hos oss. Er du sikker på at \"\n\"du er registrert?\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\"Brukerkontoen assosiert med denne e-postadressen kan ikke nullstille \"\n\"passordet.\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"E-post\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"Nytt passord\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"Bekreft nytt passord\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"Ditt gamle passord er galt. Vennligst prøv igjen.\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"Gammelt passord\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"Passord (gjenta)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"algoritme\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"iterasjoner\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"salt\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"hash\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"arbeidsfaktor\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"sjekksum\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"navn\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"kodenavn\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"rettighet\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"rettigheter\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"gruppe\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"grupper\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"passord\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"siste innlogging\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"superbruker\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"\"\n\"Angir at denne brukeren har alle rettigheter uten å eksplisitt sette dem.\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\"Gruppene denne brukeren er tilknyttet. En bruker vil ha alle rettigheter \"\n\"tilhørende gruppene han/hun er medlem av.\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"Brukerrettigheter\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"brukernavn\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"Påkrevet. 30 tegn eller færre. Bokstaver, tall og @/./+/-/_.\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"Oppgi et gyldig brukernavn\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"fornavn\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"etternavn\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"e-postadresse\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"administrasjonsstatus\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"Angir at brukeren kan logge inn på denne administrasjonssiden.\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"aktiv\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\"Angir at denne brukeren er aktiv. Avmerk denne i stedet for å slette kontoen.\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"registrert\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"bruker\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"brukere\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"Logget ut\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"Passord-nullstilling på %(site_name)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/ne/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Sagar Chalise <chalisesagar@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2012-12-16 08:51+0000\\n\"\n\"Last-Translator: Sagar Chalise <chalisesagar@gmail.com>\\n\"\n\"Language-Team: Nepali (http://www.transifex.com/projects/p/django/language/\"\n\"ne/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ne\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"व्यक्तिगत विवरण\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"अनुमति\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"महत्वपूर्ण मितिहरु\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"पासवर्ड सफलतापूर्वक फेरिएको छ ।\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"पासवर्ड फेर्नुहोस : %s\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"पासवर्ड\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"पासवर्ड पुष्टि\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"प्रमाणिकरणको लागि माथी कै पासवर्ड राख्नुहोस ।\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"नयाँ पासवर्ड\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"नयाँ पासवर्ड पुष्टि\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"तपाईको पुरानो पासवर्ड गलत भयो । कृपया पुन: हाल्नुहोस ।  \"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"पुरानो पासवर्ड\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"पासवर्ड (पुन:)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"नाम\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"अनुमति\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"अनुमति\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"समुह\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"समुहहरु\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"पासवर्ड\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"प्रयोगकर्ता नाम\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"नाम\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"थर\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"दर्ता भएको मिति\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"प्रयोगकर्ता\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"प्रयोगकर्ता\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/nl/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Translators:\n#   <bart@dispectu.com>, 2012-2013.\n# Erik Romijn <eromijn@solidlinks.nl>, 2013.\n# Harro van der Klauw <hvdklauw@gmail.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Jeffrey Gelens <jeffrey@noppo.pro>, 2011, 2012.\n# Tino de Bruijn <tinodb@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2013-03-19 15:55+0000\\n\"\n\"Last-Translator: erikr <eromijn@solidlinks.nl>\\n\"\n\"Language-Team: Dutch (http://www.transifex.com/projects/p/django/language/\"\n\"nl/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: nl\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"Persoonlijke informatie\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"Rechten\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"Belangrijke datums\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"Wachtwoord wijzigen is geslaagd.\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"Wijzig wachtwoord: %s\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"Er is geen wachtwoord ingesteld.\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"Ongeldig wachtwoord formaat of onbekend hashing algoritme.\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"Een gebruiker met deze gebruikersnaam bestaat al.\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"De twee ingevulde wachtwoorden zijn niet gelijk.\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"Gebruikersnaam\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"\"\n\"Vereist. 30 tekens of minder. Alleen letters, cijfers en @/,/+/-/_ tekens \"\n\"zijn toegestaan.\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"Dit veld mag alleen letters, cijfers en @/,/+/-/_ tekens bevatten.\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"Wachtwoord\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"Bevestiging wachtwoord\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Vul hetzelfde wachtwoord als hierboven in, ter bevestiging.\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\"Wachtwoorden worden niet als tekst opgeslagen, dus je kunt een gebruikers \"\n\"wachtwoord niet zien. Je kunt hem aanpassen via <a href=\\\"password/\\\">dit \"\n\"formulier</a>.\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\"Voer een correcte %(username)s en wachtwoord in. Let op dat beide velden \"\n\"hoofdlettergevoelig zijn.\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"\"\n\"Het lijkt erop dat uw browser geen cookies accepteert. Om in te loggen \"\n\"moeten cookies worden geaccepteerd.\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"Dit account is inactief.\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\"Dat emailadres heeft geen geassocieerd gebruikersaccount. Weet je zeker dat \"\n\"je je hebt geregistreerd?\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\"Het gebruikersaccount dat met dit emailadres wordt geassocieerd kan het \"\n\"wachtwoord niet resetten.\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"Email\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"Nieuw wachtwoord\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"Nieuw wachtwoord bevestigen\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"\"\n\"Uw oude wachtwoord is niet correct ingevoerd. Voert u het alstublieft \"\n\"opnieuw in.\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"Oud wachtwoord\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"Wachtwoord (nogmaals)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"algoritme\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"iteraties\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"salt\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"hash\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"arbeidsfactor\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"checksum\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"naam\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"codenaam\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"recht\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"rechten\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"groep\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"groepen\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"wachtwoord\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"laatste inlog\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"supergebruikerstatus\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"\"\n\"Bepaalt dat deze gebruiker alle rechten heeft, zonder deze expliciet toe te \"\n\"wijzen.\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\"De groepen waar deze gebruiker toe behoord. Een gebruiker zal alle rechten \"\n\"krijgen van zijn/haar groepen.\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"gebruikersrechten\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"gebruikersnaam\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"Vereist. 30 tekens of minder. Letters, cijfers en /./+/-/_ tekens.\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"Vul een geldige gebruikersnaam in.\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"voornaam\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"achternaam\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"emailadres\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"stafstatus\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"Bepaalt of de gebruiker kan inloggen op deze beheersite.\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"actief\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\"Bepaalt of deze gebruiker als actief dient te worden behandeld. U kunt dit \"\n\"uitvinken in plaats van een gebruiker te verwijderen.\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"datum toegetreden\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"gebruiker\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"gebruikers\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"Afmelden\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"Wachtwoord reset voor %(site_name)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/nn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2012-12-16 08:51+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Norwegian Nynorsk (http://www.transifex.com/projects/p/django/\"\n\"language/nn/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: nn\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"Personleg informasjon\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"Løyve\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"Viktige datoar\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"Passordet er endra.\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"Endre passord: %s\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"Det eksisterar allereie ein brukar med dette brukernamnet.\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"Dei to passordfelta er ikkje like.\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"Brukarnamn\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"Nødvendig. 30 teikn eller færre. Berre bokstavar, tall @/./+/-/_.\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"Feltet kan berre innehalde bokstavar, nummer og @/./+/-/_.\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"Passord\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"Stadfesting av passord\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Skriv inn det samme passordet som over, for verifisering.\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"\"\n\"Nettlesaren din ser ikkje ut til å støtte informasjonskapslar (cookies). \"\n\"Informasjonskapslar er nødvendige for å logge inn.\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"Denne kontoen er inaktiv.\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"Nytt passord\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"Stadfest nytt passord\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"Det gamle passordet er feil. Prøv omatt.\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"Gammalt passord\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"Passord (gjenta)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"namn\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"kodenamn\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"løyve\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"løyve\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"gruppe\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"grupper\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"passord\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"siste innlogging\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"superbrukar\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"Angir at denne brukaren har alle løyve utan å eksplisitt sette dei.\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"Brukerløyve\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"brukarnamn\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"Nødvendig. 30 teikn eller færre. Berre bokstavar, tall @/./+/-/_.\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"fornamn\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"etternamn\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"administrasjonsstatus\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"Angir at brukaren kan logge inn på denne administrasjonssida.\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"aktiv\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\"Angir at denne brukaren er aktiv. Avmerk denne i staden for å slette kontoen.\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"registrert\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"brukar\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"brukarar\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"Logga ut\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/pa/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2012-12-16 08:51+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Panjabi (Punjabi) (http://www.transifex.com/projects/p/django/\"\n\"language/pa/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: pa\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"ਨਿੱਜੀ ਜਾਣਕਾਰੀ\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"ਅਧਿਕਾਰ\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"ਖਾਸ ਮਿਤੀਆਂ\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"ਪਾਸਵਰਡ ਠੀਕ ਤਰ੍ਹਾਂ ਬਦਲਿਆ ਗਿਆ ਹੈ।\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"ਪਾਸਵਰਡ ਬਦਲੋ: %s\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"ਉਸ ਯੂਜ਼ਰ ਨਾਂ ਨਾਲ ਯੂਜ਼ਰ ਪਹਿਲਾਂ ਹੀ ਮੌਜੂਦ ਹੈ।\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"ਦੋਵੇਂ ਪਾਸਵਰਡ ਖੇਤਰ ਮਿਲਦੇ ਨਹੀਂ ਹਨ।\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"ਯੂਜ਼ਰ ਨਾਂ\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"ਲਾਜ਼ਮੀ। ੩੦ ਜਾਂ ਘੱਟ ਅੱਖਰ ਚਾਹੀਦੇ ਹਨ। ਅੱਖਰ, ਅੰਕ @/./+/-/_ ਹੀ।\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"ਪਾਸਵਰਡ\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"ਪਾਸਵਰਡ ਪੁਸ਼ਟੀ\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"ਜਾਂਚ ਲਈ, ਉੱਤੇ ਦਿੱਤਾ ਪਾਸਵਰਡ ਹੀ ਦਿਓ।\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"ਤੁਹਾਡੇ ਵੈੱਬ ਬਰਾਊਜ਼ਰ ਉੱਤੇ ਕੂਕੀਜ਼ ਚਾਲੂ ਨਹੀਂ ਜਾਪਦੇ ਹਨ। ਲਾਗਇਨ ਕਰਨ ਲਈ ਕੂਕੀਜ਼ ਚਾਹੀਦੇ ਹਨ।\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"ਇਹ ਅਕਾਊਂਟ ਗ਼ੈਰ-ਸਰਗਰਮ ਹੈ।\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"ਨਵਾਂ ਪਾਸਵਰਡ\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"ਨਵਾਂ ਪਾਸਵਰਡ ਪੁਸ਼ਟੀ\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"ਤੁਹਾਡਾ ਪੁਰਾਣਾ ਪਾਸਵਰਡ ਗਲਤ ਦਿੱਤਾ ਗਿਆ ਸੀ। ਇਸ ਨੂੰ ਫੇਰ ਦਿਉ ਜੀ।\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"ਪੁਰਾਣਾ ਪਾਸਵਰਡ\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"ਪਾਸਵਰਡ (ਫੇਰ)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"ਨਾਂ\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"ਕੋਡ-ਨਾਂ\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"ਅਧਿਕਾਰ\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"ਅਧਿਕਾਰ\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"ਗਰੁੱਪ\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"ਗਰੁੱਪ\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"ਪਾਸਵਰਡ\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"ਆਖਰੀ ਲਾਗਇਨ\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"ਸੁਪਰਯੂਜ਼ਰ ਹਾਲਤ\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"ਯੂਜ਼ਰ ਅਧਿਕਾਰ\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"ਯੂਜ਼ਰ ਨਾਂ\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"ਲਾਜ਼ਮੀ। ੩੦ ਜਾਂ ਘੱਟ ਅੱਖਰ ਚਾਹੀਦੇ ਹਨ। ਅੱਖਰ, ਅੰਕ @//+/-/_ ਹੀ।\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"ਪਹਿਲਾਂ ਨਾਂ\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"ਆਖਰੀ ਨਾਂ\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"ਸਟਾਫ ਹਾਲਤ\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"ਸਰਗਰਮ\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"ਜੁਆਇੰਨ ਕਰਨ ਦੀ ਮਿਤੀ\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"ਯੂਜ਼ਰ\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"ਯੂਜ਼ਰ\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"ਲਾਗ ਆਉਟ ਕੀਤਾ\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/pl/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <angular.circle@gmail.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Karol  <kfuks2@o2.pl>, 2012.\n# Roman Barczyński <rombar@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2012-12-16 08:51+0000\\n\"\n\"Last-Translator: Roman Barczyński <rombar@gmail.com>\\n\"\n\"Language-Team: Polish (http://www.transifex.com/projects/p/django/language/\"\n\"pl/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: pl\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 \"\n\"|| n%100>=20) ? 1 : 2);\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"Dane osobowe\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"Uprawnienia\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"Ważne daty\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"Hasło zostało zmienione pomyślnie.\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"Zmień hasło: %s\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"Użytkownik o tej nazwie już istnieje.\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"Hasła się nie zgadzają.\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"Nazwa użytkownika\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"Wymagane. 30 znaków lub mniej. Tylko litery, cyfry i znaki @/./+/-/_.\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"To pole może zawierać tylko litery, cyfry i znaki @/./+/-/_.\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"Hasło\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"Potwierdzenie hasła\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Podaj powyższe hasło w celu weryfikacji.\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\"Czyste hasła nie są zapisywane, więc nie ma możliwości aby zobaczyć hasło \"\n\"użytkownika, ale możesz zmienić hasło używając <a href=\\\"password/\\\">tego \"\n\"formularza</a>.\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"\"\n\"Twoja przeglądarka nie chce akceptować ciasteczek. Są one wymagane do \"\n\"zalogowania się.\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"To konto jest nieaktywne.\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"Nowe hasło\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"Nowe hasło (powtórz)\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"Podane stare hasło jest niepoprawne. Proszę podać je jeszcze raz.\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"Stare hasło\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"Hasło (powtórz)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"algorytm\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"iteracje\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"sól\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"hash\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"work factor\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"suma kontrolna\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"nazwa\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"nazwa kodowa\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"uprawnienie\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"uprawnienia\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"grupa\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"grupy\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"hasło\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"ostatnio zalogowany\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"status administratora\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"\"\n\"Oznacza, że ten użytkownik ma wszystkie uprawnienia bez jawnego \"\n\"przypisywania ich.\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\"Grupy do których należy użytkownik. Użytkownik otrzyma wszystkie uprawnienia \"\n\"przypisane do którejkolwiek z jego/jej grup.\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"uprawnienia użytkownika\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"użytkownik\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"Wymagane. 30 znaków lub mniej. Tylko litery, cyfry i znaki @/./+/-/_.\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"imię\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"nazwisko\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"w zespole\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"Oznacza czy użytkownik może zalogować się do panelu admina.\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"aktywny\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\"Oznacza czy użytkownika należy uważać za aktywnego. Odznacz to, zamiast \"\n\"usuwać konta.\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"data przyłączenia\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"użytkownik\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"użytkownicy\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"Wylogowany\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"Reset hasła dla konta na stronie %(site_name)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/pt/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Bruno Miguel Custódio <bruno@brunomcustodio.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Nuno Mariz <nmariz@gmail.com>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2012-12-16 08:51+0000\\n\"\n\"Last-Translator: Bruno Miguel Custódio <bruno@brunomcustodio.com>\\n\"\n\"Language-Team: Portuguese (http://www.transifex.com/projects/p/django/\"\n\"language/pt/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: pt\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"Informação pessoal\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"Permissões\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"Datas importantes\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"Palavra-passe modificada com sucesso.\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"Modificar a palavra-passe: %s\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"Nenhuma palavra-chave definida.\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"Formato de palavra-chave inválido ou função de mistura desconhecida.\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"Já existe um utilizador com esse nome.\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"Os dois campos da palavra-passe não coincidem.\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"Utilizador\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"\"\n\"Obrigatório. 30 carateres ou menos. Apenas letras, dígitos e @/./+/-/_.\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"Este valor apenas deverá conter letras, números e carateres @/./+/-/_.\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"Palavra-passe\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"Confirmação da palavra-passe\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Introduza a palavra-passe como acima, para verificação.\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\"Não são guardadas palavras-passe sem encriptação, portanto não é possível \"\n\"visualizar a password deste utilizador, mas poderá modificar a palavra-passe \"\n\"através <a href=\\\"password/\\\">deste formulário</a>.\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"\"\n\"Aparentemente que o seu browser não está configurado para aceitar cookies. \"\n\"Os cookies são necessários para poder entrar.\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"Esta conta não está activa.\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\"O endereço de email especificado não está associado a nenhuma conta. Tem a \"\n\"certeza que efectuou o registo?\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\"O utilizador associado a este endereço de email não pode redefinir a palavra-\"\n\"chave.\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"Email\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"Nova palavra-passe\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"Confirmação da nova palavra-passe\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"\"\n\"A sua palavra-passe antiga foi introduzida incorretamente. Por favor tente \"\n\"novamente.\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"Palavra-passe antiga\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"Palavra-passe (novamente)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"algoritmo\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"iterações\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"salt\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"hash\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"fator trabalho\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"verificação\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"nome\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"nome de código\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"permissão\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"permissões\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"grupo\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"grupos\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"palavra-passe\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"última entrada\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"Status de superuser\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"\"\n\"Define se este utilizador tem todas as permissões sem explicitamente as \"\n\"atribuir.\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\"Os grupos este utilizador pertence. Um utilizador terá todas as permissões \"\n\"concedidas a cada um do seu grupo.\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"permissões do utilizador\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"utilizador\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"\"\n\"Obrigatório. 30 carateres ou menos. Apenas letras, números e carateres @/./\"\n\"+/-/_.\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"Introduza um nome de utilizador válido.\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"primeiro nome\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"último nome\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"endereço de email\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"status de equipa\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"Define se o utilizador pode usar a administração do site.\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"ativo\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\"Defina se este utilizador deva ser tratado como ativo. Não selecione em vez \"\n\"de remover as contas.\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"data de registo\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"utilizador\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"utilizadores\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"Saiu\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"Redefinição de palavra-passe em %(site_name)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/pt_BR/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <dudanogueira@gmail.com>, 2012.\n# Guilherme Gondim <semente+transifex@taurinus.org>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Sandro  <sandrossv@hotmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2012-12-17 12:33+0000\\n\"\n\"Last-Translator: dudanogueira <dudanogueira@gmail.com>\\n\"\n\"Language-Team: Portuguese (Brazil) <django-l10n-portuguese@googlegroups.\"\n\"com>\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: pt_BR\\n\"\n\"Plural-Forms: nplurals=2; plural=(n > 1);\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"Informações pessoais\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"Permissões\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"Datas importantes\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"Senha modificada com sucesso.\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"Alterar senha: %s\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"Nenhuma senha definida.\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"Formato de senha inválido ou algoritmo de hash desconhecido.\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"Um usuário com este nome de usuário já existe.\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"Os dois campos de senha não combinam.\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"Usuário\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"\"\n\"Obrigatório. 30 caracteres ou menos. Somente letras, dígitos e @/./+/-/_.\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"\"\n\"Este valor deve conter apenas letras, números e os caracteres @/./+/-/_.\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"Senha\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"Confirmação de senha\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Informe a mesma senha digitada acima, para verificação.\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\"Não são armazenadas senhas no formato plano, por isso não há como visualizar \"\n\"a senha do usuário, mas você pode alterá-la usando <a href=\\\"password/\"\n\"\\\">este formulário</a> .\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\"Por favor, entre com um %(username)s  e senha corretos. Note que ambos os \"\n\"campos diferenciam maiúsculas e minúsculas.\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"\"\n\"Seu navegador Web não parece estar com os cookies habilitados. Cookies são \"\n\"requeridos para acessar.\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"Esta conta está inativa.\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\"Este endereço de email não possui nenhuma conta associada. Você tem certeza \"\n\"que se registrou?\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\"A conta de usuário associada à este email não permite a redefinição de senha.\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"Email\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"Nova senha\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"Confirmação da nova senha\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"\"\n\"A senha antiga foi digitada incorretamente. Por favor, informe a senha \"\n\"novamente.\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"Senha antiga\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"Senha (novamente)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"algoritmo\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"iterações\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"salt\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"hash\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"work factor\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"checksum\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"nome\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"apelido\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"permissão\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"permissões\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"grupo\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"grupos\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"senha\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"último login\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"status de superusuário\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"\"\n\"Indica que este usuário tem todas as permissões sem atribuí-las \"\n\"explicitamente.\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\"Os grupos que este usuário pertence. Um usuário terá todas as permissões \"\n\"concedidas a cada um de seus dos grupos.\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"permissões do usuário\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"usuário\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"\"\n\"Obrigatório. 30 caracteres ou menos. Letras, números e os caracteres @/./+/-/\"\n\"_\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"Informe um usuário válido.\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"primeiro nome\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"último nome\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"endereço de email\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"membro da equipe\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"Indica que usuário consegue acessar este site de administração.\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"ativo\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\"Indica que o usuário será tratado como ativo. Ao invés de excluir contas de \"\n\"usuário, desmarque isso.\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"data de registro\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"usuário\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"usuários\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"Sessão encerrada\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"Redefinição de senha em %(site_name)s \"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/ro/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Daniel Ursache-Dogariu <contact@danniel.net>, 2011.\n# Denis Darii <sinednx@gmail.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2012-12-16 08:51+0000\\n\"\n\"Last-Translator: Daniel Ursache-Dogariu <contact@danniel.net>\\n\"\n\"Language-Team: Romanian (http://www.transifex.com/projects/p/django/language/\"\n\"ro/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ro\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?\"\n\"2:1));\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"Informații personale\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"Permisiuni\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"Date importante\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"Parolă schimbată cu succes.\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"Schimbă parola: %s\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"Un utilizator cu acest nume de utilizator există deja.\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"Cele două câmpuri pentru parole nu coincid.\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"Nume utilizator\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"\"\n\"Obligatoriu. 30 de caractere sau mai puține. Numai litere, cifre și @/./+/-/\"\n\"_.\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"Această valoare poate conține numai litere, cifre şi @/./+/-/_.\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"Parolă\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"Confirmare parolă\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Introduceți aceeași parolă, pentru verificare.\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"\"\n\"Navigatorul dumneavoastră nu pare să aibă activat suportul pentru cookies. \"\n\"Acesta este necesar pentru autentificare.\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"Acest cont este inactiv.\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"Parolă nouă\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"Confirmarea parolă nouă\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"Parola veche a fost introdusă greșit. Introduceți-o din nou.\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"Parolă veche\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"Parolă (din nou)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"nume\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"nume de cod\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"permisiune\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"permisiuni\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"grup\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"grupuri\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"parolă\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"ultima autentificare\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"stare superutilizator\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"\"\n\"Marchează daca acest utilizator are toate permisiunile,  fără a le mai \"\n\"selecta explicit.\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"permisiuni utilizator\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"nume utilizator\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"\"\n\"Obligatoriu. 30 de caractere sau mai puține. Numai litere, numere și @/./+/-/\"\n\"_.\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"Prenume\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"Nume\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"stare autorizare\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"\"\n\"Marchează dacă utilizatorul se poate autentifica în acest site de \"\n\"administrare.\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"activ\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\"Marchează dacă acest utilizator trebuie tratat ca activ sau nu. Deselectați \"\n\"în loc de a șterge conturi.\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"data înscrierii\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"utilizator\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"utilizatori\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"Deautentificat\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/ru/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Eugene MechanisM <contact@mechanism.name>, 2012-2013.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Алексей Борискин <sun.void@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2013-01-04 18:27+0000\\n\"\n\"Last-Translator: Eugene MechanisM <contact@mechanism.name>\\n\"\n\"Language-Team: Russian (http://www.transifex.com/projects/p/django/language/\"\n\"ru/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ru\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"Персональная информация\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"Права\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"Важные даты\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"Пароль успешно изменен.\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"Изменение пароля: %s\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"Пароль не задан.\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"Неизвестный формат пароля или алгоритм хеширования.\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"Пользователь с таким именем уже существует.\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"Два поля с паролями не совпадают.\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"Имя пользователя\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"\"\n\"Обязательное поле. Введите 30 символов или менее. Используйте только буквы, \"\n\"цифры и знаки из набора @/./+/-/_.\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"Значение должно состоять только из букв, цифр и знаков @/./+/-/_.\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"Пароль\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"Подтверждение пароля\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Введите тот же пароль, что и выше, для подтверждения.\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\"Пароли не хранятся в открытом виде, поэтому нет возможности увидеть пароль \"\n\"этого пользователя. Но вы можете изменить пароль используя <a href=\"\n\"\\\"password/\\\">эту форму</a>.\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\"Пожалуйста, введите корректные %(username)s и пароль. Оба поля могут быть \"\n\"чувствительны к регистру.\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"У вашего браузера не включены cookies. Cookies необходимы для входа.\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"Эта учетная запись отключена.\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\"Этот адрес электронной почты не связан ни с одной учетной записью. Вы \"\n\"уверены, что зарегистрированы?\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\"Настройки учётной записи пользователя, связанной с этим адресом электронной \"\n\"почты, запрещают восстановление пароля.\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"Адрес электронной почты\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"Новый пароль\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"Подтверждение нового пароля\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"Ваш старый пароль введен неправильно. Пожалуйста, введите его снова.\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"Старый пароль\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"Пароль (еще раз)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"алгоритм\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"итерации\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"соль\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"хэш\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"рабочий фактор\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"контрольная сумма\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"имя\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"кодовое название\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"право\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"права\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"группа\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"группы\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"пароль\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"последний вход\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"статус суперпользователя\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"Указывает, что пользователь имеет все права без явного их назначения.\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\"Группы, к которым принадлежит пользователь. Пользователь будет иметь все \"\n\"права, указанные в каждой его/её группе.\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"права пользователя\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"имя пользователя\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"\"\n\"Обязательное поле. Введите 30 символов или менее. Используйте только буквы, \"\n\"цифры и знаки из набора @/./+/-/_\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"Введите правильное имя пользователя.\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"имя\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"фамилия\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"адрес электронной почты\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"статус персонала\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"\"\n\"Отметьте, если пользователь может входить в административную часть сайта.\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"активный\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\"Отметьте, если пользователь должен считаться активным. Уберите эту отметку \"\n\"вместо удаления учётной записи.\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"дата регистрации\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"пользователь\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"пользователи\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"Не авторизован\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"Сброс пароля на %(site_name)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/sk/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Juraj Bubniak <>, 2012.\n# Juraj Bubniak <translations@jbub.eu>, 2012.\n# Marian Andre <marian@andre.sk>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2012-12-19 15:18+0000\\n\"\n\"Last-Translator: Juraj Bubniak <translations@jbub.eu>\\n\"\n\"Language-Team: Slovak (http://www.transifex.com/projects/p/django/language/\"\n\"sk/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sk\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"Osobné údaje\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"Práva\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"Dôležité dátumy\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"Heslo úspešne zmenené.\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"Zmeniť heslo: %s\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"Žiadne heslo.\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"Neplatný formát hesla alebo neznámy hašovací algoritmus.\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"Používateľ s takým používateľským menom už existuje.\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"Heslo a jeho potvrdenie sa nezhodujú.\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"Používateľské meno\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"Povinné. 30 znakov alebo menej. Iba písmená, čísla a @/./+/-/_.\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"Táto hodnota môže obsahovať len písmená, číslice a znaky @/./+/-/_.\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"Heslo\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"Potvrdenie hesla\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Kvôli overeniu zadajte rovnaké heslo ako vyššie.\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\"Heslá v pôvodnom tvare nie sú ukladané, takže neexistuje spôsob zobraziť \"\n\"heslo užívateľa. Môžete ho však zmeniť pomocou <a href=\\\"password/\\\">tohoto \"\n\"formulára</a>.\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\"Zadajte prosím správne %(username)s a heslo. Všimnite si, že obe polia môžu \"\n\"obsahovať veľké a malé písmená.\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"\"\n\"Váš prehliadač nemá povolené cookies. Cookies sú potrebné pre prihlásenie.\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"Tento účet je neaktívny.\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\"Táto e-mailová adresa nemá pridružený užívateľský účet. Ste si istí, že ste \"\n\"sa zaregistrovali?\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\"Užívateľský účet pridružený k tejto e-mailovej adrese nemože obnoviť heslo.\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"E-mail\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"Nové heslo\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"Potvrdenie nového hesla\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"Nezadali ste správne svoje staré heslo. Napíšte ho znovu, prosím.\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"Staré heslo\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"Heslo (znova)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"algoritmus\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"iterácie\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"salt\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"hash\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"faktor práce\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"kontrolný súčet\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"meno\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"kódové meno\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"oprávnenie\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"oprávnenia\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"skupina\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"skupiny\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"heslo\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"naposledy prihlásený\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"status superpoužívateľa\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"\"\n\"Určuje, či používateľ získava automaticky všetky práva aj bez priameho \"\n\"priradenia.\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\"Skupiny do ktorých užívateľ patrí. Užívateľ dostane všetky povolenia do \"\n\"každej z jeho skupín.\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"používateľské oprávnenia\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"používateľské meno\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"\"\n\"Povinné. 30 znakov alebo menej. Len písmená, číslice a znaky @/./+/-/_.\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"Zadajte platné užívateľské meno.\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"krstné meno\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"priezvisko\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"e-mailová adresa\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"postavenie zamestnanca\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"Určuje, či sa používateľ môže prihlásiť do správy stránok.\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"aktívny\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\"Určuje, či je účet aktívny. Odškrtnite, ak chcete vypnúť používateľský účet.\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"dátum registrácie\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"používateľ\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"používatelia\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"Odhlásený\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"Obnovenie hesla pre %(site_name)s \"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/sl/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Jure Cuhalev <gandalf@owca.info>, 2012.\n# Jure Čuhalev <gandalf@owca.info>, 2012.\n#  <zejn@kiberpipa.org>, 2013.\n#   <zejn@kiberpipa.org>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2013-02-15 18:00+0000\\n\"\n\"Last-Translator: zejn <zejn@kiberpipa.org>\\n\"\n\"Language-Team: Slovenian (http://www.transifex.com/projects/p/django/\"\n\"language/sl/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sl\\n\"\n\"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n\"\n\"%100==4 ? 2 : 3);\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"Osebni podatki\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"Dovoljenja\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"Pomembni datumi\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"Geslo je uspešno spremenjeno.\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"Spremeni geslo: %s\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"Geslo ni nastavljeno.\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"Neveljavna oblika gesla ali neznan algoritem razpršila.\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"Uporabnik s tem uporabniškim imenom že obstaja.\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"Gesli se ne ujemata.\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"Uporabniško ime\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"\"\n\"Polje je obvezno. Vpisanih mora biti do 30 znakov, ti pa so lahko črke, \"\n\"številke in znaki @/./+/-/_.\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"Ta vrednost lahko vsebuje le črke, števila in znake @/./+/-/_.\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"Geslo\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"Potrditev gesla\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Ponovno vpišite izbrano geslo za overitev.\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\"Gesla se ne shranjujejo v berljivi obliki, zato gesla tega uporabnika ni \"\n\"mogoče videti. Geslo lahko spremenite s pomočjo <a href=\\\"password/\\\">tega \"\n\"obrazca</a>.\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\"Vnesite veljavno %(username)s in geslo. Opomba: obe polji upoštevata \"\n\"velikost črk.\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"\"\n\"Videti je, da brskalnik nima omogočenih piškotkov. Piškotki so nujni za \"\n\"overjanje prijave.\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"Ta uporabniški račun ni dejaven.\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\"Tega elektronskega naslova ni mogoče pripisati nobenemu uporabniku. Ali ste \"\n\"prepričani, da ste že vpisani?\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\"Uporabnik s tem elektronskim naslovom nima dovoljen za ponastavitev gesla.\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"Elektronski naslov\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"Novo geslo\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"Potrditev novega gesla\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"Vaše staro geslo ni vneseno pravilno. Poskusite znova.\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"Staro geslo\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"Geslo (znova)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"algoritem\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"ponovitev\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"naključna vrednost\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"razpršilo\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"faktor obremenitve\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"nadzorna vsota\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"ime\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"kodno ime\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"dovoljenje\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"dovoljenja\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"skupina\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"skupine\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"geslo\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"zadnja prijava\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"stanje skrbnika\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"Uporabnik bo imel skrbniška dovoljenja.\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\"Skupine, katerih član je ta uporabnik. Uporabnik pridobi vsa dovoljenja, \"\n\"povezana s to skupino.\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"uporabniška dovoljenja\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"uporabniško ime\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"\"\n\"Polje je obvezno. Vpisanih mora biti do 30 znakov, ti pa so lahko črke, \"\n\"številke in znaki @/./+/-/_.\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"Vnesite veljavno uporabniško ime.\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"ime\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"priimek\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"elektronski naslov\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"stanje osebja\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"Določi, ali se sme uporabnik prijaviti kot skrbnik.\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"dejaven\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\"Določi, ali je uporabnik dejaven. Možnost je priročna in preprečuje brisanje \"\n\"računov.\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"vpisan od\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"uporabnik\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"uporabniki\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"Odjavljen\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"Geslo na %(site_name)s je ponastavljeno.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/sq/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Translators:\n# Besnik <besnik@programeshqip.org>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2013-02-20 08:30+0000\\n\"\n\"Last-Translator: Besnik <besnik@programeshqip.org>\\n\"\n\"Language-Team: Albanian (http://www.transifex.com/projects/p/django/language/\"\n\"sq/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sq\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"Të dhëna personale\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"Leje\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"Të dhëna të rëndësishme\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"Fjalëkalimi u ndryshua me sukses.\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"Ndryshoni fjalëkalimin: %s\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"Nuk ka fjalëkalim të caktuar.\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"Format i pavlefshëm fjalëkalimi ose algoritëm i panjohur hashi.\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"Ka tashmë një emër të tillë përdoruesi.\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"Dy fushat për fjalëkalim nuk u përputhën.\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"Emër përdoruesi\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"\"\n\"E domosdoshme. 30 ose më pak shenja. Vetëm shkronja, shifra dhe shenjat @/./\"\n\"+/-/_ .\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"\"\n\"Kjo vlerë mund të përmbajë vetëm shkronja, numra dhe shenja si @/./+/-/_ .\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"Fjalëkalim\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"Ripohim fjalëkalimi\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Jepni, për verifikim, të njëjtin fjalëkalim si më sipër.\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\"Fjalëkalimet shqeto nuk depozitohenm ndaj nuk ka ndonjë mënyrë si të shihet \"\n\"fjalëkalimi i këtij përdoruesi, por mund ta ndryshoni fjalëkalimin duke \"\n\"përdorur <a href=\\\"password/\\\">këtë formular</a>.\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"\"\n\"Shfletuesi juaj Web nuk duket se i ka të aktivizuara \\\"cookie\\\"-t. \\\"Cookie\"\n\"\\\"-t janë të domosdoshme për hyrjen.\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"Kjo llogari nuk është aktive.\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\"Kësaj adrese email nuk i përshoqërohet ndonjë llogari përdoruesi. Jeni i \"\n\"sigurt se jeni regjistruar?\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\"Llogaria e përdoruesit të përshoqëruar me këtë adres email nuk mund të \"\n\"kryejë ricaktim të fjalëkalimit.\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"Email\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"Fjalëkalim i ri\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"Ripohim fjalëkalimi të ri\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"Fjalëkalimi juaj i vjetër u dha pasaktësisht. Ju lutem, jepeni sërish.\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"Fjalëkalim i vjetër\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"Fjalëkalim (sërish)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"algoritëm\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"përsëritje\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"kripë\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"hash\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"emër\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"emër i koduar\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"leje\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"leje\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"grup\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"grupe\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"fjalëkalim\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"hyrja e fundit\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"gjendje superpërdoruesi\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"\"\n\"Përcakton që ky përdorues ka krejt lejet, pa ia akorduar ato shprehimisht.\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\"Grupet ku bën pjesë ky përdorues. Një përdorues përfiton krejt lejet e dhëna \"\n\"për secilin grup të tij/saj.\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"leje përdoruesi\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"emër përdoruesi\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"\"\n\"E domosdoshme. 30 ose më pak shenja. Shkronja, numra dhe shenjat @/./+/-/_\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"Jepni emër përdoruesi të vlefshëm.\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"emër\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"mbiemër\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"adresë email\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"vend në ekip\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"Përcakton nëse mund të hyjë ose jo përdoruesi te ky site administrimi.\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"veprues\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\"Përcakton nëse ky përdorues do të duhej trajtuar si aktiv. Çpërzgjidhni \"\n\"këtë, në vend se të fshihni llogarira.\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"datë anëtarësimi\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"përdorues\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"përdoruesa\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"I dalë\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"Ricaktim fjalëkalimi për te %(site_name)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/sr/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Janos Guljas <janos@resenje.org>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2012-12-16 08:51+0000\\n\"\n\"Last-Translator: Janos Guljas <janos@resenje.org>\\n\"\n\"Language-Team: Serbian (http://www.transifex.com/projects/p/django/language/\"\n\"sr/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sr\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"Лични подаци\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"Дозволе\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"Важни датуми\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"Лозинка успешно измењена.\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"Измени лозинку: %s\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"Корисник са тим корисничким именом већ постоји.\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"Два поља за лозинке се нису поклопила.\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"Корисник\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"\"\n\"Неопходно. Највише 30 словних места. Само алфанумерички знаци (слова, бројке \"\n\"и @/./+/-/_).\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"Ова вредност може садржати само слова, бројке и @/./+/-/_.\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"Лозинка\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"Потврда лозинке\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Ради провере тачности поново унесите лозинку коју сте унели горе.\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\"Лозинке у изворном облику се не чувају, тако да се не могу видети, али се \"\n\"могу променити <a href=\\\"password/\\\">овде</a>.\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"\"\n\"Изгледа да су колачићи искључени у вашем браузеру. Они морају бити укључени \"\n\"да би сте се пријавили.\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"Овај налог је неактиван.\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"Нова лозинка\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"Потврда нове лозинке\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"Ваша стара лознка није правилно унесена. Унесите је поново.\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"Стара лозинка\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"Лозинка (поновите)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"алгоритам\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"итерације\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"зачин\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"хеш\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"фактор рада\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"сума за проверу\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"име\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"шифра дозволе\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"дозвола\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"дозволе\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"група\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"групе\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"лозинка\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"последња пријава\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"статус администратора\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"\"\n\"Означава да ли корисник има све дозволе без додељивања појединачних дозвола.\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\"Групе којима корисник припада. Корисник ће добити све дозволе група у којим \"\n\"се налази.\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"корисничке дозволе\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"корисничко име\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"\"\n\"Неопходно. Највише 30 словних места. Само алфанумерички знаци (слова, бројке \"\n\"и @/./+/-/_).\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"име\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"презиме\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"статус члана посаде\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"\"\n\"Означава да ли корисник може да се пријави на овај сајт за администрацију.\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"активан\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\"Означава да ли се корисник сматра активним. Деселектујте ово уместо да \"\n\"бришете налог.\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"датум регистрације\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"корисник\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"корисници\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"Одјављен\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"Ресетовање лозинке на сајту %(site_name)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/sr_Latn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Janos Guljas <janos@resenje.org>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2012-12-16 08:51+0000\\n\"\n\"Last-Translator: Janos Guljas <janos@resenje.org>\\n\"\n\"Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/django/\"\n\"language/sr@latin/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sr@latin\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"Lični podaci\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"Dozvole\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"Važni datumi\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"Lozinka uspešno izmenjena.\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"Izmeni lozinku: %s\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"Korisnik sa tim korisničkim imenom već postoji.\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"Dva polja za lozinke se nisu poklopila.\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"Korisnik\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"\"\n\"Neophodno. Najviše 30 slovnih mesta. Samo alfanumerički znaci (slova, brojke \"\n\"i @/./+/-/_).\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"Ova vrednost može sadržati samo slova, brojke i @/./+/-/_.\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"Lozinka\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"Potvrda lozinke\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Radi provere tačnosti ponovo unesite lozinku koju ste uneli gore.\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\"Lozinke u izvornom obliku se ne čuvaju, tako da se ne mogu videti, ali se \"\n\"mogu promeniti <a href=\\\"password/\\\">ovde</a>.\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"\"\n\"Izgleda da su kolačići isključeni u vašem brauzeru. Oni moraju biti \"\n\"uključeni da bi ste se prijavili.\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"Ovaj nalog je neaktivan.\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"Nova lozinka\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"Potvrda nove lozinke\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"Vaša stara loznka nije pravilno unesena. Unesite je ponovo.\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"Stara lozinka\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"Lozinka (ponovite)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"algoritam\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"iteracije\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"začin\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"heš\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"faktor rada\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"suma za proveru\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"ime\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"šifra dozvole\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"dozvola\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"dozvole\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"grupa\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"grupe\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"lozinka\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"poslednja prijava\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"status administratora\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"\"\n\"Označava da li korisnik ima sve dozvole bez dodeljivanja pojedinačnih \"\n\"dozvola.\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\"Grupe kojima korisnik pripada. Korisnik će dobiti sve dozvole grupa u kojim \"\n\"se nalazi.\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"korisničke dozvole\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"korisničko ime\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"\"\n\"Neophodno. Najviše 30 slovnih mesta. Samo alfanumerički znaci (slova, brojke \"\n\"i @/./+/-/_).\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"ime\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"prezime\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"status člana posade\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"\"\n\"Označava da li korisnik može da se prijavi na ovaj sajt za administraciju.\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"aktivan\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\"Označava da li se korisnik smatra aktivnim. Deselektujte ovo umesto da \"\n\"brišete nalog.\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"datum registracije\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"korisnik\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"korisnici\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"Odjavljen\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"Resetovanje lozinke na sajtu %(site_name)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/sv/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Alex Nordlund <deep.alexander@gmail.com>, 2012.\n# Andreas Pelme <andreas@pelme.se>, 2011-2013.\n#   <cybjit@gmail.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Samuel Linde <samuel@linde.im>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2013-01-06 08:43+0000\\n\"\n\"Last-Translator: Andreas Pelme <andreas@pelme.se>\\n\"\n\"Language-Team: Swedish (http://www.transifex.com/projects/p/django/language/\"\n\"sv/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sv\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"Personlig information\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"Rättigheter\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"Viktiga datum\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"Lösenordet ändrades.\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"Ändra lösenord: %s\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"Inget lösenord angivet.\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"Ogiltigt lösenordsformat eller okänd hashalgoritm.\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"En användare med det användarnamnet finns redan.\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"De två lösenordsfälten stämde inte överens.\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"Användarnamn\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"\"\n\"Obligatoriskt. 30 tecken eller färre. Endast bokstäver, siffror och @/./+/-/\"\n\"_.\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"Detta värde får endast innehålla bokstäver, siffror och @/./+/-/_.\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"Lösenord\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"Lösenordsbekräftelse\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Fyll i samma lösenord som ovan för verifiering.\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\"Klartextlösenord lagras inte, så det är inte möjligt att se denna användares \"\n\"lösenord, men du kan ändra lösenordet med <a href=\\\"password/\\\">detta \"\n\"formulär</a>.\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\"Ange ett korrekt %(username)s och lösenord. Observera att båda fälten är \"\n\"skiftlägeskänsliga.\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"\"\n\"Din webbläsare verkar inte tillåta cookies. Cookies behövs för att kunna \"\n\"logga in.\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"Detta konto är inaktivt.\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\"Den e-postadressen är inte associerad med något användarkonto. Är du säker \"\n\"på att du har registrerat dig?\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"Användarkontot med denna e-postadress kan inte återställa lösenordet.\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"E-postaddress\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"Nytt lösenord\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"Bekräfta nytt lösenord\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"Ditt gamla lösenord var felaktigt ifyllt. Var vänlig fyll i det igen.\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"Gammalt lösenord\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"Lösenord (igen)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"algoritm\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"iterationer\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"salt\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"hash\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"arbetsfaktor\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"kontrollsumma\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"namn\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"kodnamn\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"rättighet\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"rättigheter\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"grupp\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"grupper\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"lösenord\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"senaste inloggning\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"superanvändare\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"\"\n\"Anger att denna användare har alla rättigheter utan att uttryckligen \"\n\"tilldela dem.\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\"De grupper som användaren är medlem i. En användare får tillgång till alla \"\n\"rättigheter som hans/hennes grupper har.\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"användarättigheter\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"användarnamn\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"Obligatorisk. 30 tecken eller färre. Bokstäver, siffror och @/./+/-/_.\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"Ange ett giltigt användarnamn.\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"förnamn\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"efternamn\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"e-postaddress\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"personalstatus\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"Avgör om användaren kan logga in på denna adminsida.\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"aktiv\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\"Anger om användaren skall betraktas som aktiv. Avmarkera detta istället för \"\n\"att ta bort konton.\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"registreringsdatum\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"användare\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"användare\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"Utloggad\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"Lösenord återställt på %(site_name)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/sw/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# machaku  <bmachaku@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2012-12-16 08:51+0000\\n\"\n\"Last-Translator: machaku <bmachaku@gmail.com>\\n\"\n\"Language-Team: Swahili (http://www.transifex.com/projects/p/django/language/\"\n\"sw/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sw\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"Taarifa binafsi\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"Ruhusa\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"Tarehe muhimu\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"Nenosiri limebadilishwa kwa mafanikio\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"Badilish nenosiri: %s\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"Hakuna nenosiri lililowekwa.\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"Muundo batili wa nenosiri au algorithm ya kuhash isiyojulikana\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"Mtumiaji mwenye jina la mtumiaji hilo tayari yupo.\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"Sehemu mbili za nenosiri hazikufanana\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"Jina la mtumiaji\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"Inahitajika. vibambo 30 au pungufu. Herufi, Tarakimu na @/./+/-/_ tu. \"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"Thamani hii inaweza kuwa na herufi, tarakimu na vibambo @/./+/-/_ tu\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"Nenosiri\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"Uthibitisho wa nenosiri\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Ingiza nenosiri linalofanana na la juu, kwa uthibitisho\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\"Manenosiri ghafi hayahifadhiwi, hivyo hakuna namna ya kuona nenosiri la \"\n\"mtumiaji huyu, ila unaweza kubadilisha nenosiri kwa kutumia <a href=\"\n\"\\\"password/\\\">fomu hii</a>.\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"\"\n\"Inaonekana kuwa kivinjari chako cha wavuti hakiruhusu kuki. Kuki \"\n\"zinahitajika ili kuingia.\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"Akaunti hii si hai.\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\"Anuani hiyo ya barua pepe haina akaunti inayoendana nayo. Una hakika \"\n\"Umejisajili?\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\"Akaunti ya mtumiaji inayohusika na barua pepe hii haiwezi kuwekwa nenosiri \"\n\"upya.\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"Barua pepe\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"Nenosiri jipya\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"Uthibitisho wa nenosiri jipya\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"\"\n\"Nenosiri lako la zamani liliingizwa isivyo sahihi. Tafadhali liingize tena.\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"Nenosiri la zamani\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"Nenosiri (tena)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"alogarithimu\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"mizunguko\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"salt\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"hash\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"kazi inayohitajika\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"checksum\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"jina\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"jina la msimbo\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"ruhusa\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"ruhusa\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"kundi\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"makundi\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"nenosiri\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"kuingia kwa mara ya mwisho\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"hadhi ya mtumiaji wa juu\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"Teua mtumiaji huyu kuwa na ruhusa zote pasipo kuziainisha wazi.\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\"Vikundi ambavyo mtumiaji huyu yupo. Mtumiaji atapata ruhusa zote \"\n\"zinazotolewa kwa kila mwanakundi hili.\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"ruhusa za mtumiaji\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"jina la mtumiaji\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"\"\n\"Inatakiwa. vibambo 30 au pungufu. Herufi, namba na vibambo @ / / + /-/_ .\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"Ingiza halali Jina la mtumiaji \"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"jina la kwanza\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"jina la mwisho\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"anuani ya barua pepe\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"hadhi ya utawala\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"Teua kama mtumiaji anaweza kuingia katika tovuti ya utawala.\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"hai\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \" \"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"tarehe ya kujiunga\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"mtumiaji\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"watumiaji\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"Umetoka\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"Kuseti upya nenosiri katika %(site_name)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/ta/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2012-12-16 08:51+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Tamil (http://www.transifex.com/projects/p/django/language/\"\n\"ta/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ta\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"தனிப்பட்ட விவரம்\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"அனுமதிகள்\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"முக்கியமான தேதிகள்\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"பயனர்ப்பெயர்\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"கடவுச்சொல்\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"மேலே அதே கடவுச்சொல்லை உள்ளிடவும், சரிபார்ப்பதற்காக .\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"\"\n\" உங்கள் இணைய உலாவியில்  குக்கிகள்  செயலாக்கம் பெறவில்லை. உள்நுழைவதற்கு குக்கிகள் அவசியம்.\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"இந்த கணக்கு செயல்பட துவங்கவில்லை\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"கடவுச்சொல்(மறுபடியும்)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"பெயர்\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"குறிமுறை பெயர்\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"அனுமதி\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"அனுமதிகள்\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"குழு\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"குழுக்கள்\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"கடவுச்சொல்\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"கடைசி உள்நுழைவு\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"மேலாளர் இருப்பு நிலை\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"இந்த பயனருக்கு எல்லா அங்கீகாரங்களும் வழங்கப்படவில்லை.\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"பயனர் அனுமதிகள்\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"பயனர் பெயர்\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"முதல் பெயர்\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"கடைசி பெயர்\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"பணியாளர் நிலை\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"பயனர், 'மேலாளலர்' பக்கத்தில் நுழைவதை முடிவு செய்கிறது\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"செயல்படும்\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"சேர்ந்த தேதி\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"பயனர்\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"பயனர்கள்\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"வெளியே வந்துவீட்டீர்\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/te/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <prudhviy@gmail.com>, 2011.\n# Veeven  <veeven@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2012-12-16 08:51+0000\\n\"\n\"Last-Translator: bhaskar teja yerneni <prudhviy@gmail.com>\\n\"\n\"Language-Team: Telugu (http://www.transifex.com/projects/p/django/language/\"\n\"te/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: te\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"వ్యక్తిగత సమాచారం  \"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"అనుమతులు\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"ముఖ్యమైన తేదీలు\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"సంకేతపదాన్ని విజయవంతంగా మార్చారు.\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"సంకేతపదాన్ని మార్చుకోండి: %s\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"ఈ నామముతొ ఇంకొ వినియొగదారి ఉన్నరు\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"ఈ రెండు అనుమతి పదాలు అసమానమైనంగ ఉన్నాయి\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"వాడుకరిపేరు\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"సంకేతపదం\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"సంకేపదపు నిర్ధారణ\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"ఇందాక ఇచ్చిన అనుమతిపదం మళ్ళీ ఇవ్వండి పరిశీలన కోసము\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"ఈ ఖాతా అచేతనమైనది\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"కొత్త సంకేతపదం\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"కొత్త సంకేతపదపు నిర్ధారణ\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"పాత  సంకేతపదం\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"సంకేతపదం (మళ్ళీ)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"పేరు\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"సంహితనామము\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"అనుమతి\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"అనుమతులు\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"గుంపు\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"గుంపులు\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"సంకేతపదం\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"చివరి ప్రవేశం\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"వాడుకరి అనుమతులు\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"వాడుకరిపేరు\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"మొదటి పేరు\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"ఇంటి పేరు\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"ఉద్యోగస్తుల  స్థితి\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"క్రియాశీలం\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"చేరిన తేదీ\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"వాడుకరి\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"వాడుకరులు\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"నిష్క్రమించారు\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/th/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Kowit Charoenratchatabhan <kowito@gmail.com>, 2012-2013.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2013-03-04 22:30+0000\\n\"\n\"Last-Translator: Kowit Charoenratchatabhan <kowit.s.c@gmail.com>\\n\"\n\"Language-Team: Thai (http://www.transifex.com/projects/p/django/language/\"\n\"th/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: th\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"ข้อมูลส่วนตัว\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"สิทธิ์\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"วันที่ที่สำคัญ\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"เปลี่ยนรหัสผ่านสำเร็จแล้ว\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"เปลี่ยนรหัสผ่าน: %s \"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"ไม่ได้ตั้งค่ารหัสผ่าน\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"รูปแบบรหัสผ่านไม่ถูกต้อง หรือไม่รู้จักแฮชอัลกอริทึมนี้\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"ชื่อผู้ใช้นั้นได้ถูกใช้ไปแล้ว\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"รหัสผ่านไม่ตรงกัน\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"ชื่อผู้ใช้\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"\"\n\"จำเป็น ต้องการไม่เกิน 30 ตัวอักษร ต้องเป็นตัวอักษรตัวเลขและเครื่องหมาย @/./+/-/_ เท่านั้น\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"ค่านี้ต้องเป็นตัวอักษรตัวเลขและเครื่องหมาย @/./+/-/_ เท่านั้น\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"รหัสผ่าน\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"ยืนยันรหัสผ่าน\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"ใส่รหัสผ่านเหมือนด้านบน เพื่อตรวจสอบความถูกต้อง\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\"รหัสผ่านที่ดิบจะไม่เก็บไว้ เพื่อไม่ให้มีวิธีการดูรหัสผ่านของผู้ใช้นี้ แต่คุณสามารถเปลี่ยนรหัสผ่านโดยใช้ <a \"\n\"href=\\\"password/\\\">แบบฟอร์มนี้</a> .\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"กรุณาใส่  %(username)s  และรหัสผ่านที่ถูกต้อง มีการแยกแยะตัวพิมพ์ใหญ่-เล็ก\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"เว็บเบราเซอร์ของคุณไม่สามารถใช้งานระบบคุกกี้ได้ จำเป็นต้องใช้ระบบคุกกี้ในการเข้าสู่ระบบ\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"บัญชีนี้ไม่ทำงาน\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"อีเมลนี้ไม่ตรงกับบัญชีใดๆในระบบ คุณแน่ใจหรือว่าคุณได้ลงทะเบียนแล้ว\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"บัญชีผู้ใช้ที่เกี่ยวข้องกับที่อยู่อีเมล์นี้ไม่สามารถตั้งค่ารหัสผ่าน\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"อีเมล\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"รหัสผ่านใหม่\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"ยืนยันการตั้งรหัสผ่านใหม่\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"ใส่รหัสผ่านเก่าผิด กรุณาใส่รหัสผ่านอีกครั้ง\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"รหัสผ่านเก่า\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"รหัสผ่าน (อีกครั้ง)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"algorithm\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"iterations\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"salt\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"hash\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"ปัจจัยการทำงาน\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"checksum\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"ชื่อ\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"รหัสชื่อ\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"สิทธิ์\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"สิทธิ์\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"กลุ่ม\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"กลุ่ม\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"รหัสผ่าน\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"เข้าสู่ระบบครั้งสุดท้าย\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"สถานะผู้ใช้พิเศษ\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"กำหนดสิทธิ์ทุกอย่างให้ผู้ใช้ โดยไม่ต้องการมอบหมายอย่างเป็นทางการ\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"กลุ่มที่ผู้ใช้อยู่ ผู้ใช้จะได้รับสิทธิ์ทั้งหมดที่กลุ่มของเขาได้รับ\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"สิทธิ์ของผู้ใช้\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"ชื่อผู้ใช้\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"จำเป็น ต้องการไม่เกิน 30 ตัวอักษร ต้องเป็นตัวอักษรตัวเลขและตัวอักษร @/./+/-/_\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"กรุณาใส่ชื่อผู้ใช้ที่ถูกต้อง\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"ชื่อ\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"นามสกุล\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"ที่อยู่อีเมล\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"สถานะของพนักงาน\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"กำหนดผู้ที่จะเข้ามาใช้งานในส่วนของผู้ดูแลระบบ\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"ใช้งานได้\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"กำหนดให้ผู้ใช้มีสถานะที่สามารถเข้ามาใช้งานได้ เลือกออกแทนที่จะลบชื่อผู้ใช้ทิ้งไป \"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"วันที่เข้าร่วม\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"ผู้ใช้\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"ผู้ใช้\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"ออกจากระบบ\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"รีเซ็ตรหัสผ่านบน %(site_name)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/tr/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Translators:\n# Gökmen Görgen <gokmen@alageek.com>, 2013.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Metin Amiroff <amiroff@gmail.com>, 2012.\n# Murat Çorlu <muratcorlu@gmail.com>, 2012.\n# Ozan  <uobasar@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2013-02-23 14:50+0000\\n\"\n\"Last-Translator: Gökmen Görgen <gokmen@alageek.com>\\n\"\n\"Language-Team: Turkish (http://www.transifex.com/projects/p/django/language/\"\n\"tr/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: tr\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"Kişisel bilgiler\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"İzinler\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"Önemli tarihler\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"Şifre başarı ile değiştirildi.\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"Şifre değiştir: %s\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"Şifre tanımlanmadı.\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"Yanlış şifre formatı veya bilinmeyen şifreleme algoritması.\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"Bu isimde bir kullanıcı zaten mevcuttur.\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"İki şifre alanı uyuşmuyor.\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"Kullanıcı adı\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"\"\n\"Zorunlu alan. 30 karakter ya da az olmalı. Harf, rakam ve @/./+/-/_ \"\n\"karakterleri kullanılabilir.\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"Bu değer sadece harf, rakam ve @/./+/-/_ karakterlerini içerebilir.\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"Şifre\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"Şifre onayı\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Onaylamak için, yukarıdaki şifrenin aynısını girin.\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\"Ham şifreler saklanmadığından kullanıcıların şifrelerini görmenin yolu \"\n\"yoktur, fakat <a href=\\\"password/\\\">buradaki form</a> aracılığıyla şifreyi \"\n\"değiştirebilirsiniz.\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\"Lütfen %(username)s için geçerli parolayı giriniz. Tüm alanlar büyük/küçük \"\n\"harfe duyarlıdır.\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"\"\n\"Web tarayıcınızın çerezleri desteklemediği görülüyor. Çerezler giriş için \"\n\"gerekli.\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"Bu hesap aktif değil.\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\"Belirtilen eposta adresi ile ilişkili kullanıcı hesabı bulunmamaktadır. \"\n\"Kayıt olduğunuzdan emin misiniz?\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\"Belirtilen eposta adresi ile ilişkili olan kullanıcı hesabının şifreyi \"\n\"sıfırlama yetkisi bulunmamaktadır.\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"Eposta\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"Yeni şifre\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"Yeni şifre tekrarı\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"Eski şifreniz hatalı. Lütfen tekrar girin.\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"Eski şifre\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"Şifre (tekrar)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"algoritma\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"iterasyonlar\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"tuz\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"hash\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"iş faktörü\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"sağlama\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"isim\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"takma ad\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"izin\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"izinler\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"grup\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"gruplar\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"şifre\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"son ziyaret\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"süper kullanıcı\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"\"\n\"Kullanıcıya ayrı ayrı izin atamasına gerek kalmadan tüm hakların verilip \"\n\"verilmeyeceğini belirler.\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\"Bu kullanıcının bağlı olduğu gruplar. Bir kullanıcı bağlı bulunduğu gruba \"\n\"atanan tüm yetkilere sahip olur.\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"kullanıcı izinleri\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"kullanıcı adı\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"\"\n\"Zorunlu alan. 30 karakter ya da az olmalı. Harf, rakam ve @/./+/-/_ \"\n\"karakterleri kullanılabilir\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"Geçerli bir kullanıcı adı giriniz.\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"isim\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"soyisim\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"eposta adresi\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"yönetici\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"Kullanıcının yönetim (admin) paneline girip giremeyeceğini belirler.\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"aktif\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\"Kullanıcının aktif olup olmadığını belirler. Kullanıcı hesabını silmek \"\n\"yerine bu işareti kaldırın.\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"kayıt tarihi\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"kullanıcı\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"kullanıcılar\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"Çıkış yapıldı\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"Parola resetlemesi %(site_name)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/tt/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2011-01-19 15:33+0000\\n\"\n\"Last-Translator: Django team\\n\"\n\"Language-Team: Tatar (http://www.transifex.com/projects/p/django/language/\"\n\"tt/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: tt\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"Серсүз\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Тикшерү өчен шул ук серсүзне яңадан кертегез.\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"Яңа серсүз\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"Иске серсүз\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"Серсүз (тагын бер тапкыр)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/uk/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# michael  <qotsaman@gmail.com>, 2012.\n# Sergey Lysach <sergikoff88@gmail.com>, 2011-2013.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2013-01-12 17:46+0000\\n\"\n\"Last-Translator: Sergey Lysach <sergikoff88@gmail.com>\\n\"\n\"Language-Team: Ukrainian (http://www.transifex.com/projects/p/django/\"\n\"language/uk/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: uk\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"Персональна інформація\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"Дозволи\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"Важливі дати\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"Пароль успішно змінено.\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"Змінити пароль: %s\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"Пароль не встановлено.\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"Невірний формат пароля або невідомий алгоритм хешування.\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"Користувач з таким ім'ям вже існує.\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"Паролі у двох полях не співпадають.\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"Користувач\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"\"\n\"Обов'язкове поле. 30 або менше символів . Тільки букви, цифри, а також \"\n\"символи: @/./+/-/_\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"\"\n\"Значення цього поля може складатися лише з літер, цифр, а також з символів: \"\n\"@/./+/-/_\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"Пароль\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"Підтвердження паролю\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Повторіть пароль для перевірки.\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\"Паролі не зберігаються у відкритому вигляді, тому не має можливості \"\n\"переглянути пароль цього користувача, але ви можете змінити пароль за \"\n\"допомогою <a href=\\\"password/\\\">цієї форми</a>.\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\"Будь-ласка введіть правильні %(username)s та пароль. Зауважте, що обидва \"\n\"поля чутливі до регістру.\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"\"\n\"Схоже, що у вашому браузері на увімкнені cookies. Cookies необхідні для \"\n\"входу.\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"Цей запис користувача не активний.\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\"Ця адреса електронної пошти не пов'язана з жодним обліковим записом \"\n\"користувача. Ви впевнені, що зареєструвалися?\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\"Обліковий запис користувача, пов'язаний з цією email-адресою не може скинути \"\n\"пароль.\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"Email\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"Новий пароль\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"Новий пароль (підтвердження):\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"\"\n\"Старий пароль було введено неправильно. Будь ласка, введіть його знову.\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"Старий пароль\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"Пароль (ще раз)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"алгоритм\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"ітерації\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"сіль\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"хеш\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"робочий фактор\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"контрольна сума\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"ім'я\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"код\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"дозвіл\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"дозволи\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"група\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"групи\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"пароль\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"останній вхід\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"статус суперкористувача\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"Визначає, що цей користувач має всі дозволи без їх точного зазначення.\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\"Групи, до котрих належить користувач. Користувач отримає всі дозволи, що \"\n\"вказані в кожній з його/її груп.\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"дозволи користувача\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"ім'я користувача\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"\"\n\" \\n\"\n\"Обов'язкове поле. 30 або менше символів. Тільки букви, цифри, а також \"\n\"символи: @/./+/-/_\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"Введіть правильне імя користувача.\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"ім'я\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"прізвище\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"email адреса\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"статус персоналу\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"Визначає, чи може користувач увійти до цього сайту адміністрування.\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"активний\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\"Визначає, чи можна цього користувача вважати діючим. Заберіть галочку, \"\n\"замість відалення запису користувача.\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"дата приєднання\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"користувач\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"користувачі\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"Вихід\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"Скидання пароля на %(site_name)s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/ur/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2011-01-19 15:33+0000\\n\"\n\"Last-Translator: Django team\\n\"\n\"Language-Team: Urdu (http://www.transifex.com/projects/p/django/language/\"\n\"ur/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ur\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"لفظ اجازت\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"توثیق کے لئے ویسا ہی لفظ اجازت درج کریں جیسا اوپر کیا۔\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"نیا لفظ اجازت\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"پرانا لفظ اجازت\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"لفظ اجازت (دوبارہ)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/vi/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Tran  <hongdiepkien@gmail.com>, 2011.\n# Tran Van <vantxm@yahoo.co.uk>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2012-12-16 08:51+0000\\n\"\n\"Last-Translator: Tran Van <vantxm@yahoo.co.uk>\\n\"\n\"Language-Team: Vietnamese (http://www.transifex.com/projects/p/django/\"\n\"language/vi/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: vi\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"Thông tin cá nhân\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"Quyền\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"Những ngày quan trọng\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"Mật khẩu thay đổi thành công\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"Thay đổi mật khẩu: %s\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"Tên đăng nhập đã được sử dụng\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"Hai trường mật khẩu không giống nhau\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"Tên đăng nhập\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"Yêu cầu. 30 ký tự hoặc ít hơn. Chỉ là chữ cái, chữ số và @/./+/-/_.\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"Giá trị này có thể chứa chữ cái, số và ký tự @/./+/-/_.\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"Mật khẩu\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"Xác nhận mật khẩu\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"Nhập dãy mật mã trên để xác minh lại\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"\"\n\"Trình duyệt web của bạn không bật cookie. Cookies được yêu cầu để đăng nhập\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"Tài khoản này chưa được kích hoạt.\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"Mật khẩu mới\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"Xác nhận mật khẩu mới\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"Mật khẩu cũ không chính xác. Hãy nhập lại lần nữa\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"Mật khẩu cũ\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"Nhập lại mật khẩu\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"thuật toán\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"lặp lại\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"băm\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"kiểm tra\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"Tên\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"tên mã\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"cho phép\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"cho phép\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"Nhóm\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"Các nhóm\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"Mật khẩu\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"Lần cuối đăng nhập\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"\"\n\"Các nhóm người dùng này thuộc về. Người dùng sẽ nhận được tất cả các quyền \"\n\"được cấp cho mỗi nhóm của mình.\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"quyền của người sử dụng\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"Tên đăng nhập\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"Yêu cầu. 30 ký tự hoặc ít hơn. Chữ cái, số và ký tự @/./+/-/_\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"Tên\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"Họ\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"tình trạng nhân viên\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"Chỉ định người dùng nào được phép truy cập vào trang admin.\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"Kích hoạt\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"Ngày tham gia\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"Người dùng\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"người sử dụng\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"Đã thoát\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/zh_CN/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Lele Long <schemacs@gmail.com>, 2011.\n# pylemon  <leeway1985@gmail.com>, 2012.\n# Ziang Song <songziang@gmail.com>, 2011.\n# 磊 施 <leiarix@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2012-12-16 08:51+0000\\n\"\n\"Last-Translator: 磊 施 <leiarix@gmail.com>\\n\"\n\"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/django/\"\n\"language/zh_CN/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: zh_CN\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"个人信息\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"权限\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"重要日期\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"密码修改成功。\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"修改密码：%s\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"密码未设置。\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"不可用的密码格式或未知的哈希算法。\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"已存在一位使用该名字的用户。\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"两个密码字段不一致。\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"用户名\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"必填。不多于30个字符。只能用字母、数字和字符 @/./+/-/_ 。\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"该值只能包含字母、数字和字符@/./+/-/_ 。\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"密码\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"密码确认\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"为了校验，输入与上面相同的密码。\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\"原始密码不会存储到数据库，因此没有办法看到这个用户的密码，但您可以使用<a \"\n\"href=\\\"password/\\\">这个表单</a>来更改密码。\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"你的浏览器好象不允许使用cookie。登录需要使用启用cookie。\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"该帐号未激活。\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"电子邮件地址没有同用户账户关联。你确定你已经注册了吗？\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"同此电子邮件地址关联的用户账户不能重置密码。\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"电子邮件\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"新密码\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"新密码确认\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"你的旧密码不正确。请重新输入。\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"旧密码\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"密码(重复)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"算法\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"迭代次数\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"盐\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"哈希\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"加密因子\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"校验和\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"名称\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"代码名称\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"权限\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"权限\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"组\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"组\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"密码\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"上次登录\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"超级用户状态\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"指明该用户缺省拥有所有权限。\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"这个用户所属的组。一个用户将得到他/她所在的每一个组的所有权限。\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"用户权限\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"用户名\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"必填。不多于30个字符。只能用字母、数字和字符 @/./+/-/_ 。\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"输入一个可用的用户名\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"名字\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"姓氏\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"电子邮件地址\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"职员状态\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"指明用户是否可以登录到这个管理站点。\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"有效\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"指明用户是否被认为活跃的。以反选代替删除帐号。\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"加入日期\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"用户\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"用户\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"退出登录\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"重置 %(site_name)s 的密码\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/locale/zh_TW/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <ilay@ilay.tw>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# tcc <tcchou@tcchou.org>, 2011.\n#   <yyc1217@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-12-15 23:27+0100\\n\"\n\"PO-Revision-Date: 2012-12-16 08:51+0000\\n\"\n\"Last-Translator: yyc1217 <yyc1217@gmail.com>\\n\"\n\"Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/django/\"\n\"language/zh_TW/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: zh_TW\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: admin.py:41\nmsgid \"Personal info\"\nmsgstr \"個人資訊\"\n\n#: admin.py:42\nmsgid \"Permissions\"\nmsgstr \"權限\"\n\n#: admin.py:44\nmsgid \"Important dates\"\nmsgstr \"重要日期\"\n\n#: admin.py:126\nmsgid \"Password changed successfully.\"\nmsgstr \"密碼修改成功\"\n\n#: admin.py:136\n#, python-format\nmsgid \"Change password: %s\"\nmsgstr \"修改密碼: %s\"\n\n#: forms.py:31 tests/forms.py:251 tests/forms.py:256 tests/forms.py:384\nmsgid \"No password set.\"\nmsgstr \"無設定密碼。\"\n\n#: forms.py:37 tests/forms.py:261 tests/forms.py:267\nmsgid \"Invalid password format or unknown hashing algorithm.\"\nmsgstr \"無效的密碼格式或不知名的雜湊演算法。\"\n\n#: forms.py:67\nmsgid \"A user with that username already exists.\"\nmsgstr \"一個相同名稱的使用者已經存在。\"\n\n#: forms.py:68 forms.py:269 forms.py:329\nmsgid \"The two password fields didn't match.\"\nmsgstr \"兩個密碼欄位不相符。\"\n\n#: forms.py:70 forms.py:115\nmsgid \"Username\"\nmsgstr \"使用者名稱\"\n\n#: forms.py:72 forms.py:116\nmsgid \"Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.\"\nmsgstr \"必要的。30 個字或更少, 只包含字母、數字和 @/./+/-/_。\"\n\n#: forms.py:75 forms.py:119\nmsgid \"This value may contain only letters, numbers and @/./+/-/_ characters.\"\nmsgstr \"這資料值只能包含字母、數字和 @/./+/-/_ 字元。\"\n\n#: forms.py:77 forms.py:121 forms.py:148 forms.py:331\nmsgid \"Password\"\nmsgstr \"密碼\"\n\n#: forms.py:79\nmsgid \"Password confirmation\"\nmsgstr \"密碼確認\"\n\n#: forms.py:81\nmsgid \"Enter the same password as above, for verification.\"\nmsgstr \"為檢查用，請輸入與上面相同的密碼。\"\n\n#: forms.py:122\nmsgid \"\"\n\"Raw passwords are not stored, so there is no way to see this user's \"\n\"password, but you can change the password using <a href=\\\"password/\\\">this \"\n\"form</a>.\"\nmsgstr \"\"\n\"原始密碼尚未儲存，因此無法存取此帳號的密碼，但你可以透過<a href=\\\"password/\"\n\"\\\">這個表單</a>來變更密碼。\"\n\n#: forms.py:151\n#, python-format\nmsgid \"\"\n\"Please enter a correct %(username)s and password. Note that both fields may \"\n\"be case-sensitive.\"\nmsgstr \"\"\n\n#: forms.py:153\nmsgid \"\"\n\"Your Web browser doesn't appear to have cookies enabled. Cookies are \"\n\"required for logging in.\"\nmsgstr \"你的Web瀏覽器好像不允許使用cookie。登入時需要使用cookie。\"\n\n#: forms.py:155\nmsgid \"This account is inactive.\"\nmsgstr \"這個帳戶未啟用\"\n\n#: forms.py:206\nmsgid \"\"\n\"That email address doesn't have an associated user account. Are you sure \"\n\"you've registered?\"\nmsgstr \"這個電子郵件地址無對應的使用者帳號。你確定你已經註冊了？\"\n\n#: forms.py:208 tests/forms.py:374\nmsgid \"\"\n\"The user account associated with this email address cannot reset the \"\n\"password.\"\nmsgstr \"這個電子郵件地址對應的使用者帳號無法重設密碼。\"\n\n#: forms.py:211\nmsgid \"Email\"\nmsgstr \"電子信箱\"\n\n#: forms.py:271\nmsgid \"New password\"\nmsgstr \"新密碼\"\n\n#: forms.py:273\nmsgid \"New password confirmation\"\nmsgstr \"新密碼確認\"\n\n#: forms.py:302\nmsgid \"Your old password was entered incorrectly. Please enter it again.\"\nmsgstr \"你的舊密碼不正確。請重新輸入。\"\n\n#: forms.py:305\nmsgid \"Old password\"\nmsgstr \"舊密碼\"\n\n#: forms.py:333\nmsgid \"Password (again)\"\nmsgstr \"密碼(重複)\"\n\n#: hashers.py:241 hashers.py:292 hashers.py:321 hashers.py:349 hashers.py:378\n#: hashers.py:412\nmsgid \"algorithm\"\nmsgstr \"演算法\"\n\n#: hashers.py:242\nmsgid \"iterations\"\nmsgstr \"迭代\"\n\n#: hashers.py:243 hashers.py:294 hashers.py:322 hashers.py:350 hashers.py:413\nmsgid \"salt\"\nmsgstr \"隨機值\"\n\n#: hashers.py:244 hashers.py:323 hashers.py:351 hashers.py:379 hashers.py:414\nmsgid \"hash\"\nmsgstr \"哈希碼\"\n\n#: hashers.py:293\nmsgid \"work factor\"\nmsgstr \"作用因素\"\n\n#: hashers.py:295\nmsgid \"checksum\"\nmsgstr \"校驗\"\n\n#: models.py:72 models.py:121\nmsgid \"name\"\nmsgstr \"名稱\"\n\n#: models.py:74\nmsgid \"codename\"\nmsgstr \"代碼\"\n\n#: models.py:78\nmsgid \"permission\"\nmsgstr \"權限\"\n\n#: models.py:79 models.py:123\nmsgid \"permissions\"\nmsgstr \"權限\"\n\n#: models.py:128\nmsgid \"group\"\nmsgstr \"群組\"\n\n#: models.py:129 models.py:301\nmsgid \"groups\"\nmsgstr \"群組\"\n\n#: models.py:200\nmsgid \"password\"\nmsgstr \"密碼\"\n\n#: models.py:201\nmsgid \"last login\"\nmsgstr \"上次登入\"\n\n#: models.py:298\nmsgid \"superuser status\"\nmsgstr \"超級使用者狀態\"\n\n#: models.py:299\nmsgid \"\"\n\"Designates that this user has all permissions without explicitly assigning \"\n\"them.\"\nmsgstr \"指定是否使用者可以登入到這個管理網站\"\n\n#: models.py:302\nmsgid \"\"\n\"The groups this user belongs to. A user will get all permissions granted to \"\n\"each of his/her group.\"\nmsgstr \"此為帳號可加入的群組。其所屬的群組將授予該帳號對應的權限。\"\n\n#: models.py:306\nmsgid \"user permissions\"\nmsgstr \"使用者權限\"\n\n#: models.py:377\nmsgid \"username\"\nmsgstr \"使用者名稱\"\n\n#: models.py:378\nmsgid \"\"\n\"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters\"\nmsgstr \"必要的。30 個字或更少, 只包含字母、數字和 @/./+/-/_。\"\n\n#: models.py:381\nmsgid \"Enter a valid username.\"\nmsgstr \"輸入有效帳號。\"\n\n#: models.py:383\nmsgid \"first name\"\nmsgstr \"名字\"\n\n#: models.py:384\nmsgid \"last name\"\nmsgstr \"姓氏\"\n\n#: models.py:385\nmsgid \"email address\"\nmsgstr \"電子信箱\"\n\n#: models.py:386\nmsgid \"staff status\"\nmsgstr \"工作人員狀態\"\n\n#: models.py:387\nmsgid \"Designates whether the user can log into this admin site.\"\nmsgstr \"指定是否使用者可以登入此管理網站。\"\n\n#: models.py:389\nmsgid \"active\"\nmsgstr \"有效\"\n\n#: models.py:390\nmsgid \"\"\n\"Designates whether this user should be treated as active. Unselect this \"\n\"instead of deleting accounts.\"\nmsgstr \"指定使用者是否有效。請取消選擇而不是刪除帳號。\"\n\n#: models.py:392\nmsgid \"date joined\"\nmsgstr \"加入日期\"\n\n#: models.py:400\nmsgid \"user\"\nmsgstr \"使用者\"\n\n#: models.py:401\nmsgid \"users\"\nmsgstr \"使用者\"\n\n#: views.py:94\nmsgid \"Logged out\"\nmsgstr \"登出\"\n\n#: templates/registration/password_reset_subject.txt:2\n#, python-format\nmsgid \"Password reset on %(site_name)s\"\nmsgstr \"在 %(site_name)s 進行密碼重置\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/management/__init__.py",
    "content": "\"\"\"\nCreates permissions for all installed apps that need permissions.\n\"\"\"\nfrom __future__ import unicode_literals\n\nimport getpass\nimport locale\nimport unicodedata\n\nfrom django.contrib.auth import models as auth_app, get_user_model\nfrom django.core import exceptions\nfrom django.core.management.base import CommandError\nfrom django.db import DEFAULT_DB_ALIAS, router\nfrom django.db.models import get_models, signals\nfrom django.utils import six\nfrom django.utils.six.moves import input\n\n\ndef _get_permission_codename(action, opts):\n    return '%s_%s' % (action, opts.object_name.lower())\n\n\ndef _get_all_permissions(opts, ctype):\n    \"\"\"\n    Returns (codename, name) for all permissions in the given opts.\n    \"\"\"\n    builtin = _get_builtin_permissions(opts)\n    custom = list(opts.permissions)\n    _check_permission_clashing(custom, builtin, ctype)\n    return builtin + custom\n\ndef _get_builtin_permissions(opts):\n    \"\"\"\n    Returns (codename, name) for all autogenerated permissions.\n    \"\"\"\n    perms = []\n    for action in ('add', 'change', 'delete'):\n        perms.append((_get_permission_codename(action, opts),\n            'Can %s %s' % (action, opts.verbose_name_raw)))\n    return perms\n\ndef _check_permission_clashing(custom, builtin, ctype):\n    \"\"\"\n    Check that permissions for a model do not clash. Raises CommandError if\n    there are duplicate permissions.\n    \"\"\"\n    pool = set()\n    builtin_codenames = set(p[0] for p in builtin)\n    for codename, _name in custom:\n        if codename in pool:\n            raise CommandError(\n                \"The permission codename '%s' is duplicated for model '%s.%s'.\" %\n                (codename, ctype.app_label, ctype.model_class().__name__))\n        elif codename in builtin_codenames:\n            raise CommandError(\n                \"The permission codename '%s' clashes with a builtin permission \"\n                \"for model '%s.%s'.\" %\n                (codename, ctype.app_label, ctype.model_class().__name__))\n        pool.add(codename)\n\ndef create_permissions(app, created_models, verbosity, db=DEFAULT_DB_ALIAS, **kwargs):\n    if not router.allow_syncdb(db, auth_app.Permission):\n        return\n\n    from django.contrib.contenttypes.models import ContentType\n\n    app_models = get_models(app)\n\n    # This will hold the permissions we're looking for as\n    # (content_type, (codename, name))\n    searched_perms = list()\n    # The codenames and ctypes that should exist.\n    ctypes = set()\n    for klass in app_models:\n        # Force looking up the content types in the current database\n        # before creating foreign keys to them.\n        ctype = ContentType.objects.db_manager(db).get_for_model(klass)\n        ctypes.add(ctype)\n        for perm in _get_all_permissions(klass._meta, ctype):\n            searched_perms.append((ctype, perm))\n\n    # Find all the Permissions that have a context_type for a model we're\n    # looking for.  We don't need to check for codenames since we already have\n    # a list of the ones we're going to create.\n    all_perms = set(auth_app.Permission.objects.using(db).filter(\n        content_type__in=ctypes,\n    ).values_list(\n        \"content_type\", \"codename\"\n    ))\n\n    perms = [\n        auth_app.Permission(codename=codename, name=name, content_type=ctype)\n        for ctype, (codename, name) in searched_perms\n        if (ctype.pk, codename) not in all_perms\n    ]\n    auth_app.Permission.objects.using(db).bulk_create(perms)\n    if verbosity >= 2:\n        for perm in perms:\n            print(\"Adding permission '%s'\" % perm)\n\n\ndef create_superuser(app, created_models, verbosity, db, **kwargs):\n    from django.core.management import call_command\n\n    UserModel = get_user_model()\n\n    if UserModel in created_models and kwargs.get('interactive', True):\n        msg = (\"\\nYou just installed Django's auth system, which means you \"\n            \"don't have any superusers defined.\\nWould you like to create one \"\n            \"now? (yes/no): \")\n        confirm = input(msg)\n        while 1:\n            if confirm not in ('yes', 'no'):\n                confirm = input('Please enter either \"yes\" or \"no\": ')\n                continue\n            if confirm == 'yes':\n                call_command(\"createsuperuser\", interactive=True, database=db)\n            break\n\n\ndef get_system_username():\n    \"\"\"\n    Try to determine the current system user's username.\n\n    :returns: The username as a unicode string, or an empty string if the\n        username could not be determined.\n    \"\"\"\n    try:\n        result = getpass.getuser()\n    except (ImportError, KeyError):\n        # KeyError will be raised by os.getpwuid() (called by getuser())\n        # if there is no corresponding entry in the /etc/passwd file\n        # (a very restricted chroot environment, for example).\n        return ''\n    if not six.PY3:\n        try:\n            default_locale = locale.getdefaultlocale()[1]\n        except ValueError:\n            return ''\n        if not default_locale:\n            return ''\n        try:\n            result = result.decode(default_locale)\n        except UnicodeDecodeError:\n            # UnicodeDecodeError - preventive treatment for non-latin Windows.\n            return ''\n    return result\n\n\ndef get_default_username(check_db=True):\n    \"\"\"\n    Try to determine the current system user's username to use as a default.\n\n    :param check_db: If ``True``, requires that the username does not match an\n        existing ``auth.User`` (otherwise returns an empty string).\n    :returns: The username, or an empty string if no username can be\n        determined.\n    \"\"\"\n    # If the User model has been swapped out, we can't make any assumptions\n    # about the default user name.\n    if auth_app.User._meta.swapped:\n        return ''\n\n    default_username = get_system_username()\n    try:\n        default_username = unicodedata.normalize('NFKD', default_username)\\\n            .encode('ascii', 'ignore').decode('ascii').replace(' ', '').lower()\n    except UnicodeDecodeError:\n        return ''\n\n    # Run the username validator\n    try:\n        auth_app.User._meta.get_field('username').run_validators(default_username)\n    except exceptions.ValidationError:\n        return ''\n\n    # Don't return the default username if it is already taken.\n    if check_db and default_username:\n        try:\n            auth_app.User._default_manager.get(username=default_username)\n        except auth_app.User.DoesNotExist:\n            pass\n        else:\n            return ''\n    return default_username\n\nsignals.post_syncdb.connect(create_permissions,\n    dispatch_uid=\"django.contrib.auth.management.create_permissions\")\nsignals.post_syncdb.connect(create_superuser,\n    sender=auth_app, dispatch_uid=\"django.contrib.auth.management.create_superuser\")\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/management/commands/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/management/commands/changepassword.py",
    "content": "import getpass\nfrom optparse import make_option\n\nfrom django.contrib.auth import get_user_model\nfrom django.core.management.base import BaseCommand, CommandError\nfrom django.db import DEFAULT_DB_ALIAS\n\n\nclass Command(BaseCommand):\n    option_list = BaseCommand.option_list + (\n        make_option('--database', action='store', dest='database',\n            default=DEFAULT_DB_ALIAS, help='Specifies the database to use. Default is \"default\".'),\n    )\n    help = \"Change a user's password for django.contrib.auth.\"\n\n    requires_model_validation = False\n\n    def _get_pass(self, prompt=\"Password: \"):\n        p = getpass.getpass(prompt=prompt)\n        if not p:\n            raise CommandError(\"aborted\")\n        return p\n\n    def handle(self, *args, **options):\n        if len(args) > 1:\n            raise CommandError(\"need exactly one or zero arguments for username\")\n\n        if args:\n            username, = args\n        else:\n            username = getpass.getuser()\n\n        UserModel = get_user_model()\n\n        try:\n            u = UserModel._default_manager.using(options.get('database')).get(**{\n                    UserModel.USERNAME_FIELD: username\n                })\n        except UserModel.DoesNotExist:\n            raise CommandError(\"user '%s' does not exist\" % username)\n\n        self.stdout.write(\"Changing password for user '%s'\\n\" % u)\n\n        MAX_TRIES = 3\n        count = 0\n        p1, p2 = 1, 2  # To make them initially mismatch.\n        while p1 != p2 and count < MAX_TRIES:\n            p1 = self._get_pass()\n            p2 = self._get_pass(\"Password (again): \")\n            if p1 != p2:\n                self.stdout.write(\"Passwords do not match. Please try again.\\n\")\n                count = count + 1\n\n        if count == MAX_TRIES:\n            raise CommandError(\"Aborting password change for user '%s' after %s attempts\" % (u, count))\n\n        u.set_password(p1)\n        u.save()\n\n        return \"Password changed successfully for user '%s'\" % u\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/management/commands/createsuperuser.py",
    "content": "\"\"\"\nManagement utility to create superusers.\n\"\"\"\n\nimport getpass\nimport sys\nfrom optparse import make_option\n\nfrom django.contrib.auth import get_user_model\nfrom django.contrib.auth.management import get_default_username\nfrom django.core import exceptions\nfrom django.core.management.base import BaseCommand, CommandError\nfrom django.db import DEFAULT_DB_ALIAS\nfrom django.utils.encoding import force_str, force_text\nfrom django.utils.six.moves import input\nfrom django.utils.text import capfirst\n\n\nclass Command(BaseCommand):\n\n    def __init__(self, *args, **kwargs):\n        # Options are defined in an __init__ method to support swapping out\n        # custom user models in tests.\n        super(Command, self).__init__(*args, **kwargs)\n        self.UserModel = get_user_model()\n        self.username_field = self.UserModel._meta.get_field(self.UserModel.USERNAME_FIELD)\n\n        self.option_list = BaseCommand.option_list + (\n            make_option('--%s' % self.UserModel.USERNAME_FIELD, dest=self.UserModel.USERNAME_FIELD, default=None,\n                help='Specifies the login for the superuser.'),\n            make_option('--noinput', action='store_false', dest='interactive', default=True,\n                help=('Tells Django to NOT prompt the user for input of any kind. '\n                    'You must use --%s with --noinput, along with an option for '\n                    'any other required field. Superusers created with --noinput will '\n                    ' not be able to log in until they\\'re given a valid password.' %\n                    self.UserModel.USERNAME_FIELD)),\n            make_option('--database', action='store', dest='database',\n                default=DEFAULT_DB_ALIAS, help='Specifies the database to use. Default is \"default\".'),\n        ) + tuple(\n            make_option('--%s' % field, dest=field, default=None,\n                help='Specifies the %s for the superuser.' % field)\n            for field in self.UserModel.REQUIRED_FIELDS\n        )\n\n    option_list = BaseCommand.option_list\n    help = 'Used to create a superuser.'\n\n    def handle(self, *args, **options):\n        username = options.get(self.UserModel.USERNAME_FIELD, None)\n        interactive = options.get('interactive')\n        verbosity = int(options.get('verbosity', 1))\n        database = options.get('database')\n\n        # If not provided, create the user with an unusable password\n        password = None\n        user_data = {}\n\n        # Do quick and dirty validation if --noinput\n        if not interactive:\n            try:\n                if not username:\n                    raise CommandError(\"You must use --%s with --noinput.\" %\n                            self.UserModel.USERNAME_FIELD)\n                username = self.username_field.clean(username, None)\n\n                for field_name in self.UserModel.REQUIRED_FIELDS:\n                    if options.get(field_name):\n                        field = self.UserModel._meta.get_field(field_name)\n                        user_data[field_name] = field.clean(options[field_name], None)\n                    else:\n                        raise CommandError(\"You must use --%s with --noinput.\" % field_name)\n            except exceptions.ValidationError as e:\n                raise CommandError('; '.join(e.messages))\n\n        else:\n            # Prompt for username/password, and any other required fields.\n            # Enclose this whole thing in a try/except to trap for a\n            # keyboard interrupt and exit gracefully.\n            default_username = get_default_username()\n            try:\n\n                # Get a username\n                verbose_field_name = force_text(self.username_field.verbose_name)\n                while username is None:\n                    if not username:\n                        input_msg = capfirst(verbose_field_name)\n                        if default_username:\n                            input_msg = \"%s (leave blank to use '%s')\" % (\n                                input_msg, default_username)\n                        raw_value = input(force_str('%s: ' % input_msg))\n\n                    if default_username and raw_value == '':\n                        raw_value = default_username\n                    try:\n                        username = self.username_field.clean(raw_value, None)\n                    except exceptions.ValidationError as e:\n                        self.stderr.write(\"Error: %s\" % '; '.join(e.messages))\n                        username = None\n                        continue\n                    try:\n                        self.UserModel._default_manager.db_manager(database).get_by_natural_key(username)\n                    except self.UserModel.DoesNotExist:\n                        pass\n                    else:\n                        self.stderr.write(\"Error: That %s is already taken.\" %\n                                verbose_field_name)\n                        username = None\n\n                for field_name in self.UserModel.REQUIRED_FIELDS:\n                    field = self.UserModel._meta.get_field(field_name)\n                    user_data[field_name] = options.get(field_name)\n                    while user_data[field_name] is None:\n                        raw_value = input(force_str('%s: ' % capfirst(force_text(field.verbose_name))))\n                        try:\n                            user_data[field_name] = field.clean(raw_value, None)\n                        except exceptions.ValidationError as e:\n                            self.stderr.write(\"Error: %s\" % '; '.join(e.messages))\n                            user_data[field_name] = None\n\n                # Get a password\n                while password is None:\n                    if not password:\n                        password = getpass.getpass()\n                        password2 = getpass.getpass(force_str('Password (again): '))\n                        if password != password2:\n                            self.stderr.write(\"Error: Your passwords didn't match.\")\n                            password = None\n                            continue\n                    if password.strip() == '':\n                        self.stderr.write(\"Error: Blank passwords aren't allowed.\")\n                        password = None\n                        continue\n\n            except KeyboardInterrupt:\n                self.stderr.write(\"\\nOperation cancelled.\")\n                sys.exit(1)\n\n        user_data[self.UserModel.USERNAME_FIELD] = username\n        user_data['password'] = password\n        self.UserModel._default_manager.db_manager(database).create_superuser(**user_data)\n        if verbosity >= 1:\n            self.stdout.write(\"Superuser created successfully.\")\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/middleware.py",
    "content": "from django.contrib import auth\nfrom django.contrib.auth import load_backend\nfrom django.contrib.auth.backends import RemoteUserBackend\nfrom django.core.exceptions import ImproperlyConfigured\nfrom django.utils.functional import SimpleLazyObject\n\n\ndef get_user(request):\n    if not hasattr(request, '_cached_user'):\n        request._cached_user = auth.get_user(request)\n    return request._cached_user\n\n\nclass AuthenticationMiddleware(object):\n    def process_request(self, request):\n        assert hasattr(request, 'session'), \"The Django authentication middleware requires session middleware to be installed. Edit your MIDDLEWARE_CLASSES setting to insert 'django.contrib.sessions.middleware.SessionMiddleware'.\"\n\n        request.user = SimpleLazyObject(lambda: get_user(request))\n\n\nclass RemoteUserMiddleware(object):\n    \"\"\"\n    Middleware for utilizing Web-server-provided authentication.\n\n    If request.user is not authenticated, then this middleware attempts to\n    authenticate the username passed in the ``REMOTE_USER`` request header.\n    If authentication is successful, the user is automatically logged in to\n    persist the user in the session.\n\n    The header used is configurable and defaults to ``REMOTE_USER``.  Subclass\n    this class and change the ``header`` attribute if you need to use a\n    different header.\n    \"\"\"\n\n    # Name of request header to grab username from.  This will be the key as\n    # used in the request.META dictionary, i.e. the normalization of headers to\n    # all uppercase and the addition of \"HTTP_\" prefix apply.\n    header = \"REMOTE_USER\"\n\n    def process_request(self, request):\n        # AuthenticationMiddleware is required so that request.user exists.\n        if not hasattr(request, 'user'):\n            raise ImproperlyConfigured(\n                \"The Django remote user auth middleware requires the\"\n                \" authentication middleware to be installed.  Edit your\"\n                \" MIDDLEWARE_CLASSES setting to insert\"\n                \" 'django.contrib.auth.middleware.AuthenticationMiddleware'\"\n                \" before the RemoteUserMiddleware class.\")\n        try:\n            username = request.META[self.header]\n        except KeyError:\n            # If specified header doesn't exist then remove any existing\n            # authenticated remote-user, or return (leaving request.user set to\n            # AnonymousUser by the AuthenticationMiddleware).\n            if request.user.is_authenticated():\n                try:\n                    stored_backend = load_backend(request.session.get(\n                        auth.BACKEND_SESSION_KEY, ''))\n                    if isinstance(stored_backend, RemoteUserBackend):\n                        auth.logout(request)\n                except ImproperlyConfigured as e:\n                    # backend failed to load\n                    auth.logout(request)\n            return\n        # If the user is already authenticated and that user is the user we are\n        # getting passed in the headers, then the correct user is already\n        # persisted in the session and we don't need to continue.\n        if request.user.is_authenticated():\n            if request.user.get_username() == self.clean_username(username, request):\n                return\n        # We are seeing this user for the first time in this session, attempt\n        # to authenticate the user.\n        user = auth.authenticate(remote_user=username)\n        if user:\n            # User is valid.  Set request.user and persist user in the session\n            # by logging the user in.\n            request.user = user\n            auth.login(request, user)\n\n    def clean_username(self, username, request):\n        \"\"\"\n        Allows the backend to clean the username, if the backend defines a\n        clean_username method.\n        \"\"\"\n        backend_str = request.session[auth.BACKEND_SESSION_KEY]\n        backend = auth.load_backend(backend_str)\n        try:\n            username = backend.clean_username(username)\n        except AttributeError:  # Backend has no clean_username method.\n            pass\n        return username\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/models.py",
    "content": "from __future__ import unicode_literals\nimport re\nimport warnings\n\nfrom django.core.exceptions import ImproperlyConfigured\nfrom django.core.mail import send_mail\nfrom django.core import validators\nfrom django.db import models\nfrom django.db.models.manager import EmptyManager\nfrom django.utils.crypto import get_random_string\nfrom django.utils.http import urlquote\nfrom django.utils import six\nfrom django.utils.translation import ugettext_lazy as _\nfrom django.utils import timezone\n\nfrom django.contrib import auth\n# UNUSABLE_PASSWORD is still imported here for backwards compatibility\nfrom django.contrib.auth.hashers import (\n    check_password, make_password, is_password_usable, UNUSABLE_PASSWORD)\nfrom django.contrib.auth.signals import user_logged_in\nfrom django.contrib.contenttypes.models import ContentType\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\ndef update_last_login(sender, user, **kwargs):\n    \"\"\"\n    A signal receiver which updates the last_login date for\n    the user logging in.\n    \"\"\"\n    user.last_login = timezone.now()\n    user.save(update_fields=['last_login'])\nuser_logged_in.connect(update_last_login)\n\n\nclass SiteProfileNotAvailable(Exception):\n    pass\n\n\nclass PermissionManager(models.Manager):\n    def get_by_natural_key(self, codename, app_label, model):\n        return self.get(\n            codename=codename,\n            content_type=ContentType.objects.get_by_natural_key(app_label,\n                                                                model),\n        )\n\n\n@python_2_unicode_compatible\nclass Permission(models.Model):\n    \"\"\"\n    The permissions system provides a way to assign permissions to specific\n    users and groups of users.\n\n    The permission system is used by the Django admin site, but may also be\n    useful in your own code. The Django admin site uses permissions as follows:\n\n        - The \"add\" permission limits the user's ability to view the \"add\" form\n          and add an object.\n        - The \"change\" permission limits a user's ability to view the change\n          list, view the \"change\" form and change an object.\n        - The \"delete\" permission limits the ability to delete an object.\n\n    Permissions are set globally per type of object, not per specific object\n    instance. It is possible to say \"Mary may change news stories,\" but it's\n    not currently possible to say \"Mary may change news stories, but only the\n    ones she created herself\" or \"Mary may only change news stories that have a\n    certain status or publication date.\"\n\n    Three basic permissions -- add, change and delete -- are automatically\n    created for each Django model.\n    \"\"\"\n    name = models.CharField(_('name'), max_length=50)\n    content_type = models.ForeignKey(ContentType)\n    codename = models.CharField(_('codename'), max_length=100)\n    objects = PermissionManager()\n\n    class Meta:\n        verbose_name = _('permission')\n        verbose_name_plural = _('permissions')\n        unique_together = (('content_type', 'codename'),)\n        ordering = ('content_type__app_label', 'content_type__model',\n                    'codename')\n\n    def __str__(self):\n        return \"%s | %s | %s\" % (\n            six.text_type(self.content_type.app_label),\n            six.text_type(self.content_type),\n            six.text_type(self.name))\n\n    def natural_key(self):\n        return (self.codename,) + self.content_type.natural_key()\n    natural_key.dependencies = ['contenttypes.contenttype']\n\n\nclass GroupManager(models.Manager):\n    \"\"\"\n    The manager for the auth's Group model.\n    \"\"\"\n    def get_by_natural_key(self, name):\n        return self.get(name=name)\n\n\n@python_2_unicode_compatible\nclass Group(models.Model):\n    \"\"\"\n    Groups are a generic way of categorizing users to apply permissions, or\n    some other label, to those users. A user can belong to any number of\n    groups.\n\n    A user in a group automatically has all the permissions granted to that\n    group. For example, if the group Site editors has the permission\n    can_edit_home_page, any user in that group will have that permission.\n\n    Beyond permissions, groups are a convenient way to categorize users to\n    apply some label, or extended functionality, to them. For example, you\n    could create a group 'Special users', and you could write code that would\n    do special things to those users -- such as giving them access to a\n    members-only portion of your site, or sending them members-only email\n    messages.\n    \"\"\"\n    name = models.CharField(_('name'), max_length=80, unique=True)\n    permissions = models.ManyToManyField(Permission,\n        verbose_name=_('permissions'), blank=True)\n\n    objects = GroupManager()\n\n    class Meta:\n        verbose_name = _('group')\n        verbose_name_plural = _('groups')\n\n    def __str__(self):\n        return self.name\n\n    def natural_key(self):\n        return (self.name,)\n\n\nclass BaseUserManager(models.Manager):\n\n    @classmethod\n    def normalize_email(cls, email):\n        \"\"\"\n        Normalize the address by lowercasing the domain part of the email\n        address.\n        \"\"\"\n        email = email or ''\n        try:\n            email_name, domain_part = email.strip().rsplit('@', 1)\n        except ValueError:\n            pass\n        else:\n            email = '@'.join([email_name, domain_part.lower()])\n        return email\n\n    def make_random_password(self, length=10,\n                             allowed_chars='abcdefghjkmnpqrstuvwxyz'\n                                           'ABCDEFGHJKLMNPQRSTUVWXYZ'\n                                           '23456789'):\n        \"\"\"\n        Generates a random password with the given length and given\n        allowed_chars. Note that the default value of allowed_chars does not\n        have \"I\" or \"O\" or letters and digits that look similar -- just to\n        avoid confusion.\n        \"\"\"\n        return get_random_string(length, allowed_chars)\n\n    def get_by_natural_key(self, username):\n        return self.get(**{self.model.USERNAME_FIELD: username})\n\n\nclass UserManager(BaseUserManager):\n\n    def create_user(self, username, email=None, password=None, **extra_fields):\n        \"\"\"\n        Creates and saves a User with the given username, email and password.\n        \"\"\"\n        now = timezone.now()\n        if not username:\n            raise ValueError('The given username must be set')\n        email = UserManager.normalize_email(email)\n        user = self.model(username=username, email=email,\n                          is_staff=False, is_active=True, is_superuser=False,\n                          last_login=now, date_joined=now, **extra_fields)\n\n        user.set_password(password)\n        user.save(using=self._db)\n        return user\n\n    def create_superuser(self, username, email, password, **extra_fields):\n        u = self.create_user(username, email, password, **extra_fields)\n        u.is_staff = True\n        u.is_active = True\n        u.is_superuser = True\n        u.save(using=self._db)\n        return u\n\n\n@python_2_unicode_compatible\nclass AbstractBaseUser(models.Model):\n    password = models.CharField(_('password'), max_length=128)\n    last_login = models.DateTimeField(_('last login'), default=timezone.now)\n\n    is_active = True\n\n    REQUIRED_FIELDS = []\n\n    class Meta:\n        abstract = True\n\n    def get_username(self):\n        \"Return the identifying username for this User\"\n        return getattr(self, self.USERNAME_FIELD)\n\n    def __str__(self):\n        return self.get_username()\n\n    def natural_key(self):\n        return (self.get_username(),)\n\n    def is_anonymous(self):\n        \"\"\"\n        Always returns False. This is a way of comparing User objects to\n        anonymous users.\n        \"\"\"\n        return False\n\n    def is_authenticated(self):\n        \"\"\"\n        Always return True. This is a way to tell if the user has been\n        authenticated in templates.\n        \"\"\"\n        return True\n\n    def set_password(self, raw_password):\n        self.password = make_password(raw_password)\n\n    def check_password(self, raw_password):\n        \"\"\"\n        Returns a boolean of whether the raw_password was correct. Handles\n        hashing formats behind the scenes.\n        \"\"\"\n        def setter(raw_password):\n            self.set_password(raw_password)\n            self.save(update_fields=[\"password\"])\n        return check_password(raw_password, self.password, setter)\n\n    def set_unusable_password(self):\n        # Sets a value that will never be a valid hash\n        self.password = make_password(None)\n\n    def has_usable_password(self):\n        return is_password_usable(self.password)\n\n    def get_full_name(self):\n        raise NotImplementedError()\n\n    def get_short_name(self):\n        raise NotImplementedError()\n\n\n# A few helper functions for common logic between User and AnonymousUser.\ndef _user_get_all_permissions(user, obj):\n    permissions = set()\n    for backend in auth.get_backends():\n        if hasattr(backend, \"get_all_permissions\"):\n            if obj is not None:\n                permissions.update(backend.get_all_permissions(user, obj))\n            else:\n                permissions.update(backend.get_all_permissions(user))\n    return permissions\n\n\ndef _user_has_perm(user, perm, obj):\n    for backend in auth.get_backends():\n        if hasattr(backend, \"has_perm\"):\n            if obj is not None:\n                if backend.has_perm(user, perm, obj):\n                    return True\n            else:\n                if backend.has_perm(user, perm):\n                    return True\n    return False\n\n\ndef _user_has_module_perms(user, app_label):\n    for backend in auth.get_backends():\n        if hasattr(backend, \"has_module_perms\"):\n            if backend.has_module_perms(user, app_label):\n                return True\n    return False\n\n\nclass PermissionsMixin(models.Model):\n    \"\"\"\n    A mixin class that adds the fields and methods necessary to support\n    Django's Group and Permission model using the ModelBackend.\n    \"\"\"\n    is_superuser = models.BooleanField(_('superuser status'), default=False,\n        help_text=_('Designates that this user has all permissions without '\n                    'explicitly assigning them.'))\n    groups = models.ManyToManyField(Group, verbose_name=_('groups'),\n        blank=True, help_text=_('The groups this user belongs to. A user will '\n                                'get all permissions granted to each of '\n                                'his/her group.'))\n    user_permissions = models.ManyToManyField(Permission,\n        verbose_name=_('user permissions'), blank=True,\n        help_text='Specific permissions for this user.')\n\n    class Meta:\n        abstract = True\n\n    def get_group_permissions(self, obj=None):\n        \"\"\"\n        Returns a list of permission strings that this user has through his/her\n        groups. This method queries all available auth backends. If an object\n        is passed in, only permissions matching this object are returned.\n        \"\"\"\n        permissions = set()\n        for backend in auth.get_backends():\n            if hasattr(backend, \"get_group_permissions\"):\n                if obj is not None:\n                    permissions.update(backend.get_group_permissions(self,\n                                                                     obj))\n                else:\n                    permissions.update(backend.get_group_permissions(self))\n        return permissions\n\n    def get_all_permissions(self, obj=None):\n        return _user_get_all_permissions(self, obj)\n\n    def has_perm(self, perm, obj=None):\n        \"\"\"\n        Returns True if the user has the specified permission. This method\n        queries all available auth backends, but returns immediately if any\n        backend returns True. Thus, a user who has permission from a single\n        auth backend is assumed to have permission in general. If an object is\n        provided, permissions for this specific object are checked.\n        \"\"\"\n\n        # Active superusers have all permissions.\n        if self.is_active and self.is_superuser:\n            return True\n\n        # Otherwise we need to check the backends.\n        return _user_has_perm(self, perm, obj)\n\n    def has_perms(self, perm_list, obj=None):\n        \"\"\"\n        Returns True if the user has each of the specified permissions. If\n        object is passed, it checks if the user has all required perms for this\n        object.\n        \"\"\"\n        for perm in perm_list:\n            if not self.has_perm(perm, obj):\n                return False\n        return True\n\n    def has_module_perms(self, app_label):\n        \"\"\"\n        Returns True if the user has any permissions in the given app label.\n        Uses pretty much the same logic as has_perm, above.\n        \"\"\"\n        # Active superusers have all permissions.\n        if self.is_active and self.is_superuser:\n            return True\n\n        return _user_has_module_perms(self, app_label)\n\n\nclass AbstractUser(AbstractBaseUser, PermissionsMixin):\n    \"\"\"\n    An abstract base class implementing a fully featured User model with\n    admin-compliant permissions.\n\n    Username, password and email are required. Other fields are optional.\n    \"\"\"\n    username = models.CharField(_('username'), max_length=30, unique=True,\n        help_text=_('Required. 30 characters or fewer. Letters, numbers and '\n                    '@/./+/-/_ characters'),\n        validators=[\n            validators.RegexValidator(re.compile('^[\\w.@+-]+$'), _('Enter a valid username.'), 'invalid')\n        ])\n    first_name = models.CharField(_('first name'), max_length=30, blank=True)\n    last_name = models.CharField(_('last name'), max_length=30, blank=True)\n    email = models.EmailField(_('email address'), blank=True)\n    is_staff = models.BooleanField(_('staff status'), default=False,\n        help_text=_('Designates whether the user can log into this admin '\n                    'site.'))\n    is_active = models.BooleanField(_('active'), default=True,\n        help_text=_('Designates whether this user should be treated as '\n                    'active. Unselect this instead of deleting accounts.'))\n    date_joined = models.DateTimeField(_('date joined'), default=timezone.now)\n\n    objects = UserManager()\n\n    USERNAME_FIELD = 'username'\n    REQUIRED_FIELDS = ['email']\n\n    class Meta:\n        verbose_name = _('user')\n        verbose_name_plural = _('users')\n        abstract = True\n\n    def get_absolute_url(self):\n        return \"/users/%s/\" % urlquote(self.username)\n\n    def get_full_name(self):\n        \"\"\"\n        Returns the first_name plus the last_name, with a space in between.\n        \"\"\"\n        full_name = '%s %s' % (self.first_name, self.last_name)\n        return full_name.strip()\n\n    def get_short_name(self):\n        \"Returns the short name for the user.\"\n        return self.first_name\n\n    def email_user(self, subject, message, from_email=None):\n        \"\"\"\n        Sends an email to this User.\n        \"\"\"\n        send_mail(subject, message, from_email, [self.email])\n\n    def get_profile(self):\n        \"\"\"\n        Returns site-specific profile for this user. Raises\n        SiteProfileNotAvailable if this site does not allow profiles.\n        \"\"\"\n        warnings.warn(\"The use of AUTH_PROFILE_MODULE to define user profiles has been deprecated.\",\n            PendingDeprecationWarning)\n        if not hasattr(self, '_profile_cache'):\n            from django.conf import settings\n            if not getattr(settings, 'AUTH_PROFILE_MODULE', False):\n                raise SiteProfileNotAvailable(\n                    'You need to set AUTH_PROFILE_MODULE in your project '\n                    'settings')\n            try:\n                app_label, model_name = settings.AUTH_PROFILE_MODULE.split('.')\n            except ValueError:\n                raise SiteProfileNotAvailable(\n                    'app_label and model_name should be separated by a dot in '\n                    'the AUTH_PROFILE_MODULE setting')\n            try:\n                model = models.get_model(app_label, model_name)\n                if model is None:\n                    raise SiteProfileNotAvailable(\n                        'Unable to load the profile model, check '\n                        'AUTH_PROFILE_MODULE in your project settings')\n                self._profile_cache = model._default_manager.using(\n                                   self._state.db).get(user__id__exact=self.id)\n                self._profile_cache.user = self\n            except (ImportError, ImproperlyConfigured):\n                raise SiteProfileNotAvailable\n        return self._profile_cache\n\n\nclass User(AbstractUser):\n    \"\"\"\n    Users within the Django authentication system are represented by this\n    model.\n\n    Username, password and email are required. Other fields are optional.\n    \"\"\"\n    class Meta:\n        swappable = 'AUTH_USER_MODEL'\n\n\n@python_2_unicode_compatible\nclass AnonymousUser(object):\n    id = None\n    pk = None\n    username = ''\n    is_staff = False\n    is_active = False\n    is_superuser = False\n    _groups = EmptyManager()\n    _user_permissions = EmptyManager()\n\n    def __init__(self):\n        pass\n\n    def __str__(self):\n        return 'AnonymousUser'\n\n    def __eq__(self, other):\n        return isinstance(other, self.__class__)\n\n    def __ne__(self, other):\n        return not self.__eq__(other)\n\n    def __hash__(self):\n        return 1  # instances always return the same hash value\n\n    def save(self):\n        raise NotImplementedError\n\n    def delete(self):\n        raise NotImplementedError\n\n    def set_password(self, raw_password):\n        raise NotImplementedError\n\n    def check_password(self, raw_password):\n        raise NotImplementedError\n\n    def _get_groups(self):\n        return self._groups\n    groups = property(_get_groups)\n\n    def _get_user_permissions(self):\n        return self._user_permissions\n    user_permissions = property(_get_user_permissions)\n\n    def get_group_permissions(self, obj=None):\n        return set()\n\n    def get_all_permissions(self, obj=None):\n        return _user_get_all_permissions(self, obj=obj)\n\n    def has_perm(self, perm, obj=None):\n        return _user_has_perm(self, perm, obj=obj)\n\n    def has_perms(self, perm_list, obj=None):\n        for perm in perm_list:\n            if not self.has_perm(perm, obj):\n                return False\n        return True\n\n    def has_module_perms(self, module):\n        return _user_has_module_perms(self, module)\n\n    def is_anonymous(self):\n        return True\n\n    def is_authenticated(self):\n        return False\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/signals.py",
    "content": "from django.dispatch import Signal\n\nuser_logged_in = Signal(providing_args=['request', 'user'])\nuser_login_failed = Signal(providing_args=['credentials'])\nuser_logged_out = Signal(providing_args=['request', 'user'])\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/templates/registration/password_reset_subject.txt",
    "content": "{% load i18n %}{% autoescape off %}\n{% blocktrans %}Password reset on {{ site_name }}{% endblocktrans %}\n{% endautoescape %}"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/tests/__init__.py",
    "content": "from django.contrib.auth.tests.custom_user import *\nfrom django.contrib.auth.tests.auth_backends import *\nfrom django.contrib.auth.tests.basic import *\nfrom django.contrib.auth.tests.context_processors import *\nfrom django.contrib.auth.tests.decorators import *\nfrom django.contrib.auth.tests.forms import *\nfrom django.contrib.auth.tests.remote_user import *\nfrom django.contrib.auth.tests.management import *\nfrom django.contrib.auth.tests.models import *\nfrom django.contrib.auth.tests.handlers import *\nfrom django.contrib.auth.tests.hashers import *\nfrom django.contrib.auth.tests.signals import *\nfrom django.contrib.auth.tests.tokens import *\nfrom django.contrib.auth.tests.views import *\n\n# The password for the fixture data users is 'password'\n\nfrom django.dispatch import receiver\nfrom django.test.signals import setting_changed\n\n\n@receiver(setting_changed)\ndef user_model_swapped(**kwargs):\n    if kwargs['setting'] == 'AUTH_USER_MODEL':\n        from django.db.models.manager import ensure_default_manager\n        from django.contrib.auth.models import User\n        # Reset User manager\n        setattr(User, 'objects', User._default_manager)\n        ensure_default_manager(User)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/tests/auth_backends.py",
    "content": "from __future__ import unicode_literals\nfrom datetime import date\n\nfrom django.conf import settings\nfrom django.contrib.auth.models import User, Group, Permission, AnonymousUser\nfrom django.contrib.auth.tests.utils import skipIfCustomUser\nfrom django.contrib.auth.tests.custom_user import ExtensionUser, CustomPermissionsUser, CustomUser\nfrom django.contrib.contenttypes.models import ContentType\nfrom django.core.exceptions import ImproperlyConfigured\nfrom django.contrib.auth import authenticate\nfrom django.test import TestCase\nfrom django.test.utils import override_settings\n\n\nclass BaseModelBackendTest(object):\n    \"\"\"\n    A base class for tests that need to validate the ModelBackend\n    with different User models. Subclasses should define a class\n    level UserModel attribute, and a create_users() method to\n    construct two users for test purposes.\n    \"\"\"\n    backend = 'django.contrib.auth.backends.ModelBackend'\n\n    def setUp(self):\n        self.curr_auth = settings.AUTHENTICATION_BACKENDS\n        settings.AUTHENTICATION_BACKENDS = (self.backend,)\n        self.create_users()\n\n    def tearDown(self):\n        settings.AUTHENTICATION_BACKENDS = self.curr_auth\n        # The custom_perms test messes with ContentTypes, which will\n        # be cached; flush the cache to ensure there are no side effects\n        # Refs #14975, #14925\n        ContentType.objects.clear_cache()\n\n    def test_has_perm(self):\n        user = self.UserModel._default_manager.get(pk=self.user.pk)\n        self.assertEqual(user.has_perm('auth.test'), False)\n        user.is_staff = True\n        user.save()\n        self.assertEqual(user.has_perm('auth.test'), False)\n        user.is_superuser = True\n        user.save()\n        self.assertEqual(user.has_perm('auth.test'), True)\n        user.is_staff = False\n        user.is_superuser = False\n        user.save()\n        self.assertEqual(user.has_perm('auth.test'), False)\n        user.is_staff = True\n        user.is_superuser = True\n        user.is_active = False\n        user.save()\n        self.assertEqual(user.has_perm('auth.test'), False)\n\n    def test_custom_perms(self):\n        user = self.UserModel._default_manager.get(pk=self.user.pk)\n        content_type = ContentType.objects.get_for_model(Group)\n        perm = Permission.objects.create(name='test', content_type=content_type, codename='test')\n        user.user_permissions.add(perm)\n        user.save()\n\n        # reloading user to purge the _perm_cache\n        user = self.UserModel._default_manager.get(pk=self.user.pk)\n        self.assertEqual(user.get_all_permissions() == set(['auth.test']), True)\n        self.assertEqual(user.get_group_permissions(), set([]))\n        self.assertEqual(user.has_module_perms('Group'), False)\n        self.assertEqual(user.has_module_perms('auth'), True)\n        perm = Permission.objects.create(name='test2', content_type=content_type, codename='test2')\n        user.user_permissions.add(perm)\n        user.save()\n        perm = Permission.objects.create(name='test3', content_type=content_type, codename='test3')\n        user.user_permissions.add(perm)\n        user.save()\n        user = self.UserModel._default_manager.get(pk=self.user.pk)\n        self.assertEqual(user.get_all_permissions(), set(['auth.test2', 'auth.test', 'auth.test3']))\n        self.assertEqual(user.has_perm('test'), False)\n        self.assertEqual(user.has_perm('auth.test'), True)\n        self.assertEqual(user.has_perms(['auth.test2', 'auth.test3']), True)\n        perm = Permission.objects.create(name='test_group', content_type=content_type, codename='test_group')\n        group = Group.objects.create(name='test_group')\n        group.permissions.add(perm)\n        group.save()\n        user.groups.add(group)\n        user = self.UserModel._default_manager.get(pk=self.user.pk)\n        exp = set(['auth.test2', 'auth.test', 'auth.test3', 'auth.test_group'])\n        self.assertEqual(user.get_all_permissions(), exp)\n        self.assertEqual(user.get_group_permissions(), set(['auth.test_group']))\n        self.assertEqual(user.has_perms(['auth.test3', 'auth.test_group']), True)\n\n        user = AnonymousUser()\n        self.assertEqual(user.has_perm('test'), False)\n        self.assertEqual(user.has_perms(['auth.test2', 'auth.test3']), False)\n\n    def test_has_no_object_perm(self):\n        \"\"\"Regressiontest for #12462\"\"\"\n        user = self.UserModel._default_manager.get(pk=self.user.pk)\n        content_type = ContentType.objects.get_for_model(Group)\n        perm = Permission.objects.create(name='test', content_type=content_type, codename='test')\n        user.user_permissions.add(perm)\n        user.save()\n\n        self.assertEqual(user.has_perm('auth.test', 'object'), False)\n        self.assertEqual(user.get_all_permissions('object'), set([]))\n        self.assertEqual(user.has_perm('auth.test'), True)\n        self.assertEqual(user.get_all_permissions(), set(['auth.test']))\n\n    def test_get_all_superuser_permissions(self):\n        \"A superuser has all permissions. Refs #14795\"\n        user = self.UserModel._default_manager.get(pk=self.superuser.pk)\n        self.assertEqual(len(user.get_all_permissions()), len(Permission.objects.all()))\n\n\n@skipIfCustomUser\nclass ModelBackendTest(BaseModelBackendTest, TestCase):\n    \"\"\"\n    Tests for the ModelBackend using the default User model.\n    \"\"\"\n    UserModel = User\n\n    def create_users(self):\n        self.user = User.objects.create_user(\n            username='test',\n            email='test@example.com',\n            password='test',\n        )\n        self.superuser = User.objects.create_superuser(\n            username='test2',\n            email='test2@example.com',\n            password='test',\n        )\n\n\n@override_settings(AUTH_USER_MODEL='auth.ExtensionUser')\nclass ExtensionUserModelBackendTest(BaseModelBackendTest, TestCase):\n    \"\"\"\n    Tests for the ModelBackend using the custom ExtensionUser model.\n\n    This isn't a perfect test, because both the User and ExtensionUser are\n    synchronized to the database, which wouldn't ordinary happen in\n    production. As a result, it doesn't catch errors caused by the non-\n    existence of the User table.\n\n    The specific problem is queries on .filter(groups__user) et al, which\n    makes an implicit assumption that the user model is called 'User'. In\n    production, the auth.User table won't exist, so the requested join\n    won't exist either; in testing, the auth.User *does* exist, and\n    so does the join. However, the join table won't contain any useful\n    data; for testing, we check that the data we expect actually does exist.\n    \"\"\"\n\n    UserModel = ExtensionUser\n\n    def create_users(self):\n        self.user = ExtensionUser._default_manager.create_user(\n            username='test',\n            email='test@example.com',\n            password='test',\n            date_of_birth=date(2006, 4, 25)\n        )\n        self.superuser = ExtensionUser._default_manager.create_superuser(\n            username='test2',\n            email='test2@example.com',\n            password='test',\n            date_of_birth=date(1976, 11, 8)\n        )\n\n\n@override_settings(AUTH_USER_MODEL='auth.CustomPermissionsUser')\nclass CustomPermissionsUserModelBackendTest(BaseModelBackendTest, TestCase):\n    \"\"\"\n    Tests for the ModelBackend using the CustomPermissionsUser model.\n\n    As with the ExtensionUser test, this isn't a perfect test, because both\n    the User and CustomPermissionsUser are synchronized to the database,\n    which wouldn't ordinary happen in production.\n    \"\"\"\n\n    UserModel = CustomPermissionsUser\n\n    def create_users(self):\n        self.user = CustomPermissionsUser._default_manager.create_user(\n            email='test@example.com',\n            password='test',\n            date_of_birth=date(2006, 4, 25)\n        )\n        self.superuser = CustomPermissionsUser._default_manager.create_superuser(\n            email='test2@example.com',\n            password='test',\n            date_of_birth=date(1976, 11, 8)\n        )\n\n\n@override_settings(AUTH_USER_MODEL='auth.CustomUser')\nclass CustomUserModelBackendAuthenticateTest(TestCase):\n    \"\"\"\n    Tests that the model backend can accept a credentials kwarg labeled with\n    custom user model's USERNAME_FIELD.\n    \"\"\"\n\n    def test_authenticate(self):\n        test_user = CustomUser._default_manager.create_user(\n            email='test@example.com',\n            password='test',\n            date_of_birth=date(2006, 4, 25)\n        )\n        authenticated_user = authenticate(email='test@example.com', password='test')\n        self.assertEqual(test_user, authenticated_user)\n\n\n\nclass TestObj(object):\n    pass\n\n\nclass SimpleRowlevelBackend(object):\n    def has_perm(self, user, perm, obj=None):\n        if not obj:\n            return  # We only support row level perms\n\n        if isinstance(obj, TestObj):\n            if user.username == 'test2':\n                return True\n            elif user.is_anonymous() and perm == 'anon':\n                return True\n            elif not user.is_active and perm == 'inactive':\n                return True\n        return False\n\n    def has_module_perms(self, user, app_label):\n        if not user.is_anonymous() and not user.is_active:\n            return False\n        return app_label == \"app1\"\n\n    def get_all_permissions(self, user, obj=None):\n        if not obj:\n            return []  # We only support row level perms\n\n        if not isinstance(obj, TestObj):\n            return ['none']\n\n        if user.is_anonymous():\n            return ['anon']\n        if user.username == 'test2':\n            return ['simple', 'advanced']\n        else:\n            return ['simple']\n\n    def get_group_permissions(self, user, obj=None):\n        if not obj:\n            return  # We only support row level perms\n\n        if not isinstance(obj, TestObj):\n            return ['none']\n\n        if 'test_group' in [group.name for group in user.groups.all()]:\n            return ['group_perm']\n        else:\n            return ['none']\n\n\n@skipIfCustomUser\nclass RowlevelBackendTest(TestCase):\n    \"\"\"\n    Tests for auth backend that supports object level permissions\n    \"\"\"\n    backend = 'django.contrib.auth.tests.auth_backends.SimpleRowlevelBackend'\n\n    def setUp(self):\n        self.curr_auth = settings.AUTHENTICATION_BACKENDS\n        settings.AUTHENTICATION_BACKENDS = tuple(self.curr_auth) + (self.backend,)\n        self.user1 = User.objects.create_user('test', 'test@example.com', 'test')\n        self.user2 = User.objects.create_user('test2', 'test2@example.com', 'test')\n        self.user3 = User.objects.create_user('test3', 'test3@example.com', 'test')\n\n    def tearDown(self):\n        settings.AUTHENTICATION_BACKENDS = self.curr_auth\n        # The get_group_permissions test messes with ContentTypes, which will\n        # be cached; flush the cache to ensure there are no side effects\n        # Refs #14975, #14925\n        ContentType.objects.clear_cache()\n\n    def test_has_perm(self):\n        self.assertEqual(self.user1.has_perm('perm', TestObj()), False)\n        self.assertEqual(self.user2.has_perm('perm', TestObj()), True)\n        self.assertEqual(self.user2.has_perm('perm'), False)\n        self.assertEqual(self.user2.has_perms(['simple', 'advanced'], TestObj()), True)\n        self.assertEqual(self.user3.has_perm('perm', TestObj()), False)\n        self.assertEqual(self.user3.has_perm('anon', TestObj()), False)\n        self.assertEqual(self.user3.has_perms(['simple', 'advanced'], TestObj()), False)\n\n    def test_get_all_permissions(self):\n        self.assertEqual(self.user1.get_all_permissions(TestObj()), set(['simple']))\n        self.assertEqual(self.user2.get_all_permissions(TestObj()), set(['simple', 'advanced']))\n        self.assertEqual(self.user2.get_all_permissions(), set([]))\n\n    def test_get_group_permissions(self):\n        group = Group.objects.create(name='test_group')\n        self.user3.groups.add(group)\n        self.assertEqual(self.user3.get_group_permissions(TestObj()), set(['group_perm']))\n\n\nclass AnonymousUserBackendTest(TestCase):\n    \"\"\"\n    Tests for AnonymousUser delegating to backend.\n    \"\"\"\n\n    backend = 'django.contrib.auth.tests.auth_backends.SimpleRowlevelBackend'\n\n    def setUp(self):\n        self.curr_auth = settings.AUTHENTICATION_BACKENDS\n        settings.AUTHENTICATION_BACKENDS = (self.backend,)\n        self.user1 = AnonymousUser()\n\n    def tearDown(self):\n        settings.AUTHENTICATION_BACKENDS = self.curr_auth\n\n    def test_has_perm(self):\n        self.assertEqual(self.user1.has_perm('perm', TestObj()), False)\n        self.assertEqual(self.user1.has_perm('anon', TestObj()), True)\n\n    def test_has_perms(self):\n        self.assertEqual(self.user1.has_perms(['anon'], TestObj()), True)\n        self.assertEqual(self.user1.has_perms(['anon', 'perm'], TestObj()), False)\n\n    def test_has_module_perms(self):\n        self.assertEqual(self.user1.has_module_perms(\"app1\"), True)\n        self.assertEqual(self.user1.has_module_perms(\"app2\"), False)\n\n    def test_get_all_permissions(self):\n        self.assertEqual(self.user1.get_all_permissions(TestObj()), set(['anon']))\n\n\n@skipIfCustomUser\n@override_settings(AUTHENTICATION_BACKENDS=[])\nclass NoBackendsTest(TestCase):\n    \"\"\"\n    Tests that an appropriate error is raised if no auth backends are provided.\n    \"\"\"\n    def setUp(self):\n        self.user = User.objects.create_user('test', 'test@example.com', 'test')\n\n    def test_raises_exception(self):\n        self.assertRaises(ImproperlyConfigured, self.user.has_perm, ('perm', TestObj(),))\n\n\n@skipIfCustomUser\nclass InActiveUserBackendTest(TestCase):\n    \"\"\"\n    Tests for a inactive user\n    \"\"\"\n    backend = 'django.contrib.auth.tests.auth_backends.SimpleRowlevelBackend'\n\n    def setUp(self):\n        self.curr_auth = settings.AUTHENTICATION_BACKENDS\n        settings.AUTHENTICATION_BACKENDS = (self.backend,)\n        self.user1 = User.objects.create_user('test', 'test@example.com', 'test')\n        self.user1.is_active = False\n        self.user1.save()\n\n    def tearDown(self):\n        settings.AUTHENTICATION_BACKENDS = self.curr_auth\n\n    def test_has_perm(self):\n        self.assertEqual(self.user1.has_perm('perm', TestObj()), False)\n        self.assertEqual(self.user1.has_perm('inactive', TestObj()), True)\n\n    def test_has_module_perms(self):\n        self.assertEqual(self.user1.has_module_perms(\"app1\"), False)\n        self.assertEqual(self.user1.has_module_perms(\"app2\"), False)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/tests/basic.py",
    "content": "# -*- encoding: utf-8 -*-\nfrom __future__ import unicode_literals\n\nimport locale\n\nfrom django.contrib.auth import get_user_model\nfrom django.contrib.auth.management.commands import createsuperuser\nfrom django.contrib.auth.models import User, AnonymousUser\nfrom django.contrib.auth.tests.custom_user import CustomUser\nfrom django.contrib.auth.tests.utils import skipIfCustomUser\nfrom django.core.exceptions import ImproperlyConfigured\nfrom django.core.management import call_command\nfrom django.test import TestCase\nfrom django.test.utils import override_settings\nfrom django.utils.encoding import force_str\nfrom django.utils.six import binary_type, PY3, StringIO\n\n\ndef mock_inputs(inputs):\n    \"\"\"\n    Decorator to temporarily replace input/getpass to allow interactive\n    createsuperuser.\n    \"\"\"\n    def inner(test_func):\n        def wrapped(*args):\n            class mock_getpass:\n                @staticmethod\n                def getpass(prompt=b'Password: ', stream=None):\n                    if not PY3:\n                        # getpass on Windows only supports prompt as bytestring (#19807)\n                        assert isinstance(prompt, binary_type)\n                    return inputs['password']\n\n            def mock_input(prompt):\n                # prompt should be encoded in Python 2. This line will raise an\n                # Exception if prompt contains unencoded non-ascii on Python 2.\n                prompt = str(prompt)\n                assert str('__proxy__') not in prompt\n                response = ''\n                for key, val in inputs.items():\n                    if force_str(key) in prompt.lower():\n                        response = val\n                        break\n                return response\n\n            old_getpass = createsuperuser.getpass\n            old_input = createsuperuser.input\n            createsuperuser.getpass = mock_getpass\n            createsuperuser.input = mock_input\n            try:\n                test_func(*args)\n            finally:\n                createsuperuser.getpass = old_getpass\n                createsuperuser.input = old_input\n        return wrapped\n    return inner\n\n\n@skipIfCustomUser\nclass BasicTestCase(TestCase):\n    def test_user(self):\n        \"Check that users can be created and can set their password\"\n        u = User.objects.create_user('testuser', 'test@example.com', 'testpw')\n        self.assertTrue(u.has_usable_password())\n        self.assertFalse(u.check_password('bad'))\n        self.assertTrue(u.check_password('testpw'))\n\n        # Check we can manually set an unusable password\n        u.set_unusable_password()\n        u.save()\n        self.assertFalse(u.check_password('testpw'))\n        self.assertFalse(u.has_usable_password())\n        u.set_password('testpw')\n        self.assertTrue(u.check_password('testpw'))\n        u.set_password(None)\n        self.assertFalse(u.has_usable_password())\n\n        # Check authentication/permissions\n        self.assertTrue(u.is_authenticated())\n        self.assertFalse(u.is_staff)\n        self.assertTrue(u.is_active)\n        self.assertFalse(u.is_superuser)\n\n        # Check API-based user creation with no password\n        u2 = User.objects.create_user('testuser2', 'test2@example.com')\n        self.assertFalse(u2.has_usable_password())\n\n    def test_user_no_email(self):\n        \"Check that users can be created without an email\"\n        u = User.objects.create_user('testuser1')\n        self.assertEqual(u.email, '')\n\n        u2 = User.objects.create_user('testuser2', email='')\n        self.assertEqual(u2.email, '')\n\n        u3 = User.objects.create_user('testuser3', email=None)\n        self.assertEqual(u3.email, '')\n\n    def test_anonymous_user(self):\n        \"Check the properties of the anonymous user\"\n        a = AnonymousUser()\n        self.assertEqual(a.pk, None)\n        self.assertFalse(a.is_authenticated())\n        self.assertFalse(a.is_staff)\n        self.assertFalse(a.is_active)\n        self.assertFalse(a.is_superuser)\n        self.assertEqual(a.groups.all().count(), 0)\n        self.assertEqual(a.user_permissions.all().count(), 0)\n\n    def test_superuser(self):\n        \"Check the creation and properties of a superuser\"\n        super = User.objects.create_superuser('super', 'super@example.com', 'super')\n        self.assertTrue(super.is_superuser)\n        self.assertTrue(super.is_active)\n        self.assertTrue(super.is_staff)\n\n    def test_createsuperuser_management_command(self):\n        \"Check the operation of the createsuperuser management command\"\n        # We can use the management command to create a superuser\n        new_io = StringIO()\n        call_command(\"createsuperuser\",\n            interactive=False,\n            username=\"joe\",\n            email=\"joe@somewhere.org\",\n            stdout=new_io\n        )\n        command_output = new_io.getvalue().strip()\n        self.assertEqual(command_output, 'Superuser created successfully.')\n        u = User.objects.get(username=\"joe\")\n        self.assertEqual(u.email, 'joe@somewhere.org')\n\n        # created password should be unusable\n        self.assertFalse(u.has_usable_password())\n\n        # We can supress output on the management command\n        new_io = StringIO()\n        call_command(\"createsuperuser\",\n            interactive=False,\n            username=\"joe2\",\n            email=\"joe2@somewhere.org\",\n            verbosity=0,\n            stdout=new_io\n        )\n        command_output = new_io.getvalue().strip()\n        self.assertEqual(command_output, '')\n        u = User.objects.get(username=\"joe2\")\n        self.assertEqual(u.email, 'joe2@somewhere.org')\n        self.assertFalse(u.has_usable_password())\n\n        call_command(\"createsuperuser\",\n            interactive=False,\n            username=\"joe+admin@somewhere.org\",\n            email=\"joe@somewhere.org\",\n            verbosity=0\n        )\n        u = User.objects.get(username=\"joe+admin@somewhere.org\")\n        self.assertEqual(u.email, 'joe@somewhere.org')\n        self.assertFalse(u.has_usable_password())\n\n    @mock_inputs({'password': \"nopasswd\"})\n    def test_createsuperuser_nolocale(self):\n        \"\"\"\n        Check that createsuperuser does not break when no locale is set. See\n        ticket #16017.\n        \"\"\"\n\n        old_getdefaultlocale = locale.getdefaultlocale\n        try:\n            # Temporarily remove locale information\n            locale.getdefaultlocale = lambda: (None, None)\n\n            # Call the command in this new environment\n            call_command(\"createsuperuser\",\n                interactive=True,\n                username=\"nolocale@somewhere.org\",\n                email=\"nolocale@somewhere.org\",\n                verbosity=0\n            )\n\n        except TypeError:\n            self.fail(\"createsuperuser fails if the OS provides no information about the current locale\")\n\n        finally:\n            # Re-apply locale information\n            locale.getdefaultlocale = old_getdefaultlocale\n\n        # If we were successful, a user should have been created\n        u = User.objects.get(username=\"nolocale@somewhere.org\")\n        self.assertEqual(u.email, 'nolocale@somewhere.org')\n\n    @mock_inputs({\n        'password': \"nopasswd\",\n        'uživatel': 'foo',  # username (cz)\n        'email': 'nolocale@somewhere.org'})\n    def test_createsuperuser_non_ascii_verbose_name(self):\n        # Aliased so the string doesn't get extracted\n        from django.utils.translation import ugettext_lazy as ulazy\n        username_field = User._meta.get_field('username')\n        old_verbose_name = username_field.verbose_name\n        username_field.verbose_name = ulazy('uživatel')\n        new_io = StringIO()\n        try:\n            call_command(\"createsuperuser\",\n                interactive=True,\n                stdout=new_io\n            )\n        finally:\n            username_field.verbose_name = old_verbose_name\n\n        command_output = new_io.getvalue().strip()\n        self.assertEqual(command_output, 'Superuser created successfully.')\n\n    def test_get_user_model(self):\n        \"The current user model can be retrieved\"\n        self.assertEqual(get_user_model(), User)\n\n    @override_settings(AUTH_USER_MODEL='auth.CustomUser')\n    def test_swappable_user(self):\n        \"The current user model can be swapped out for another\"\n        self.assertEqual(get_user_model(), CustomUser)\n        with self.assertRaises(AttributeError):\n            User.objects.all()\n\n    @override_settings(AUTH_USER_MODEL='badsetting')\n    def test_swappable_user_bad_setting(self):\n        \"The alternate user setting must point to something in the format app.model\"\n        with self.assertRaises(ImproperlyConfigured):\n            get_user_model()\n\n    @override_settings(AUTH_USER_MODEL='thismodel.doesntexist')\n    def test_swappable_user_nonexistent_model(self):\n        \"The current user model must point to an installed model\"\n        with self.assertRaises(ImproperlyConfigured):\n            get_user_model()\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/tests/context_processors.py",
    "content": "import os\n\nfrom django.conf import global_settings\nfrom django.contrib.auth import authenticate\nfrom django.contrib.auth.tests.utils import skipIfCustomUser\nfrom django.contrib.auth.models import User, Permission\nfrom django.contrib.contenttypes.models import ContentType\nfrom django.contrib.auth.context_processors import PermWrapper, PermLookupDict\nfrom django.db.models import Q\nfrom django.test import TestCase\nfrom django.test.utils import override_settings\nfrom django.utils._os import upath\n\n\nclass MockUser(object):\n    def has_module_perms(self, perm):\n        if perm == 'mockapp':\n            return True\n        return False\n\n    def has_perm(self, perm):\n        if perm == 'mockapp.someperm':\n            return True\n        return False\n\n\nclass PermWrapperTests(TestCase):\n    \"\"\"\n    Test some details of the PermWrapper implementation.\n    \"\"\"\n    class EQLimiterObject(object):\n        \"\"\"\n        This object makes sure __eq__ will not be called endlessly.\n        \"\"\"\n        def __init__(self):\n            self.eq_calls = 0\n\n        def __eq__(self, other):\n            if self.eq_calls > 0:\n                return True\n            self.eq_calls += 1\n            return False\n\n    def test_permwrapper_in(self):\n        \"\"\"\n        Test that 'something' in PermWrapper works as expected.\n        \"\"\"\n        perms = PermWrapper(MockUser())\n        # Works for modules and full permissions.\n        self.assertTrue('mockapp' in perms)\n        self.assertFalse('nonexisting' in perms)\n        self.assertTrue('mockapp.someperm' in perms)\n        self.assertFalse('mockapp.nonexisting' in perms)\n\n    def test_permlookupdict_in(self):\n        \"\"\"\n        No endless loops if accessed with 'in' - refs #18979.\n        \"\"\"\n        pldict = PermLookupDict(MockUser(), 'mockapp')\n        with self.assertRaises(TypeError):\n            self.EQLimiterObject() in pldict\n\n\n@skipIfCustomUser\n@override_settings(\n    TEMPLATE_DIRS=(\n            os.path.join(os.path.dirname(upath(__file__)), 'templates'),\n        ),\n    USE_TZ=False,                           # required for loading the fixture\n    PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',),\n)\nclass AuthContextProcessorTests(TestCase):\n    \"\"\"\n    Tests for the ``django.contrib.auth.context_processors.auth`` processor\n    \"\"\"\n    urls = 'django.contrib.auth.tests.urls'\n    fixtures = ['context-processors-users.xml']\n\n    @override_settings(\n        MIDDLEWARE_CLASSES=global_settings.MIDDLEWARE_CLASSES,\n        TEMPLATE_CONTEXT_PROCESSORS=global_settings.TEMPLATE_CONTEXT_PROCESSORS,\n    )\n    def test_session_not_accessed(self):\n        \"\"\"\n        Tests that the session is not accessed simply by including\n        the auth context processor\n        \"\"\"\n        response = self.client.get('/auth_processor_no_attr_access/')\n        self.assertContains(response, \"Session not accessed\")\n\n    @override_settings(\n        MIDDLEWARE_CLASSES=global_settings.MIDDLEWARE_CLASSES,\n        TEMPLATE_CONTEXT_PROCESSORS=global_settings.TEMPLATE_CONTEXT_PROCESSORS,\n    )\n    def test_session_is_accessed(self):\n        \"\"\"\n        Tests that the session is accessed if the auth context processor\n        is used and relevant attributes accessed.\n        \"\"\"\n        response = self.client.get('/auth_processor_attr_access/')\n        self.assertContains(response, \"Session accessed\")\n\n    def test_perms_attrs(self):\n        u = User.objects.create_user(username='normal', password='secret')\n        u.user_permissions.add(\n            Permission.objects.get(\n                content_type=ContentType.objects.get_for_model(Permission),\n                codename='add_permission'))\n        self.client.login(username='normal', password='secret')\n        response = self.client.get('/auth_processor_perms/')\n        self.assertContains(response, \"Has auth permissions\")\n        self.assertContains(response, \"Has auth.add_permission permissions\")\n        self.assertNotContains(response, \"nonexisting\")\n    \n    def test_perm_in_perms_attrs(self):\n        u = User.objects.create_user(username='normal', password='secret')\n        u.user_permissions.add(\n            Permission.objects.get(\n                content_type=ContentType.objects.get_for_model(Permission),\n                codename='add_permission'))\n        self.client.login(username='normal', password='secret')\n        response = self.client.get('/auth_processor_perm_in_perms/')\n        self.assertContains(response, \"Has auth permissions\")\n        self.assertContains(response, \"Has auth.add_permission permissions\")\n        self.assertNotContains(response, \"nonexisting\")\n\n    def test_message_attrs(self):\n        self.client.login(username='super', password='secret')\n        response = self.client.get('/auth_processor_messages/')\n        self.assertContains(response, \"Message 1\")\n\n    def test_user_attrs(self):\n        \"\"\"\n        Test that the lazy objects returned behave just like the wrapped objects.\n        \"\"\"\n        # These are 'functional' level tests for common use cases.  Direct\n        # testing of the implementation (SimpleLazyObject) is in the 'utils'\n        # tests.\n        self.client.login(username='super', password='secret')\n        user = authenticate(username='super', password='secret')\n        response = self.client.get('/auth_processor_user/')\n        self.assertContains(response, \"unicode: super\")\n        self.assertContains(response, \"id: 100\")\n        self.assertContains(response, \"username: super\")\n        # bug #12037 is tested by the {% url %} in the template:\n        self.assertContains(response, \"url: /userpage/super/\")\n\n        # See if this object can be used for queries where a Q() comparing\n        # a user can be used with another Q() (in an AND or OR fashion).\n        # This simulates what a template tag might do with the user from the\n        # context. Note that we don't need to execute a query, just build it.\n        #\n        # The failure case (bug #12049) on Python 2.4 with a LazyObject-wrapped\n        # User is a fatal TypeError: \"function() takes at least 2 arguments\n        # (0 given)\" deep inside deepcopy().\n        #\n        # Python 2.5 and 2.6 succeeded, but logged internally caught exception\n        # spew:\n        #\n        #    Exception RuntimeError: 'maximum recursion depth exceeded while\n        #    calling a Python object' in <type 'exceptions.AttributeError'>\n        #    ignored\"\n        query = Q(user=response.context['user']) & Q(someflag=True)\n\n        # Tests for user equality.  This is hard because User defines\n        # equality in a non-duck-typing way\n        # See bug #12060\n        self.assertEqual(response.context['user'], user)\n        self.assertEqual(user, response.context['user'])\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/tests/custom_user.py",
    "content": "from django.db import models\nfrom django.contrib.auth.models import (\n    BaseUserManager,\n    AbstractBaseUser,\n    AbstractUser,\n    UserManager,\n    PermissionsMixin\n)\n\n\n# The custom User uses email as the unique identifier, and requires\n# that every user provide a date of birth. This lets us test\n# changes in username datatype, and non-text required fields.\n\nclass CustomUserManager(BaseUserManager):\n    def create_user(self, email, date_of_birth, password=None):\n        \"\"\"\n        Creates and saves a User with the given email and password.\n        \"\"\"\n        if not email:\n            raise ValueError('Users must have an email address')\n\n        user = self.model(\n            email=CustomUserManager.normalize_email(email),\n            date_of_birth=date_of_birth,\n        )\n\n        user.set_password(password)\n        user.save(using=self._db)\n        return user\n\n    def create_superuser(self, email, password, date_of_birth):\n        u = self.create_user(email, password=password, date_of_birth=date_of_birth)\n        u.is_admin = True\n        u.save(using=self._db)\n        return u\n\n\nclass CustomUser(AbstractBaseUser):\n    email = models.EmailField(verbose_name='email address', max_length=255, unique=True)\n    is_active = models.BooleanField(default=True)\n    is_admin = models.BooleanField(default=False)\n    date_of_birth = models.DateField()\n\n    custom_objects = CustomUserManager()\n\n    USERNAME_FIELD = 'email'\n    REQUIRED_FIELDS = ['date_of_birth']\n\n    class Meta:\n        app_label = 'auth'\n\n    def get_full_name(self):\n        return self.email\n\n    def get_short_name(self):\n        return self.email\n\n    def __unicode__(self):\n        return self.email\n\n    # Maybe required?\n    def get_group_permissions(self, obj=None):\n        return set()\n\n    def get_all_permissions(self, obj=None):\n        return set()\n\n    def has_perm(self, perm, obj=None):\n        return True\n\n    def has_perms(self, perm_list, obj=None):\n        return True\n\n    def has_module_perms(self, app_label):\n        return True\n\n    # Admin required fields\n    @property\n    def is_staff(self):\n        return self.is_admin\n\n\n# The extension user is a simple extension of the built-in user class,\n# adding a required date_of_birth field. This allows us to check for\n# any hard references to the name \"User\" in forms/handlers etc.\n\nclass ExtensionUser(AbstractUser):\n    date_of_birth = models.DateField()\n\n    custom_objects = UserManager()\n\n    REQUIRED_FIELDS = AbstractUser.REQUIRED_FIELDS + ['date_of_birth']\n\n    class Meta:\n        app_label = 'auth'\n\n\n# The CustomPermissionsUser users email as the identifier, but uses the normal\n# Django permissions model. This allows us to check that the PermissionsMixin\n# includes everything that is needed to interact with the ModelBackend.\n\nclass CustomPermissionsUserManager(CustomUserManager):\n    def create_superuser(self, email, password, date_of_birth):\n        u = self.create_user(email, password=password, date_of_birth=date_of_birth)\n        u.is_superuser = True\n        u.save(using=self._db)\n        return u\n\n\nclass CustomPermissionsUser(AbstractBaseUser, PermissionsMixin):\n    email = models.EmailField(verbose_name='email address', max_length=255, unique=True)\n    date_of_birth = models.DateField()\n\n    custom_objects = CustomPermissionsUserManager()\n\n    USERNAME_FIELD = 'email'\n    REQUIRED_FIELDS = ['date_of_birth']\n\n    class Meta:\n        app_label = 'auth'\n\n    def get_full_name(self):\n        return self.email\n\n    def get_short_name(self):\n        return self.email\n\n    def __unicode__(self):\n        return self.email\n\n\nclass IsActiveTestUser1(AbstractBaseUser):\n    \"\"\"\n    This test user class and derivatives test the default is_active behavior\n    \"\"\"\n    username = models.CharField(max_length=30, unique=True)\n\n    custom_objects = BaseUserManager()\n\n    USERNAME_FIELD = 'username'\n\n    class Meta:\n        app_label = 'auth'\n\n    # the is_active attr is provided by AbstractBaseUser\n\n\nclass CustomUserNonUniqueUsername(AbstractBaseUser):\n    \"A user with a non-unique username\"\n    username = models.CharField(max_length=30)\n\n    USERNAME_FIELD = 'username'\n\n    class Meta:\n        app_label = 'auth'\n\n\nclass CustomUserBadRequiredFields(AbstractBaseUser):\n    \"A user with a non-unique username\"\n    username = models.CharField(max_length=30, unique=True)\n    date_of_birth = models.DateField()\n\n    USERNAME_FIELD = 'username'\n    REQUIRED_FIELDS = ['username', 'date_of_birth']\n\n    class Meta:\n        app_label = 'auth'\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/tests/decorators.py",
    "content": "from django.contrib.auth.decorators import login_required\nfrom django.contrib.auth.tests.views import AuthViewsTestCase\nfrom django.contrib.auth.tests.utils import skipIfCustomUser\n\n\n@skipIfCustomUser\nclass LoginRequiredTestCase(AuthViewsTestCase):\n    \"\"\"\n    Tests the login_required decorators\n    \"\"\"\n    urls = 'django.contrib.auth.tests.urls'\n\n    def testCallable(self):\n        \"\"\"\n        Check that login_required is assignable to callable objects.\n        \"\"\"\n        class CallableView(object):\n            def __call__(self, *args, **kwargs):\n                pass\n        login_required(CallableView())\n\n    def testView(self):\n        \"\"\"\n        Check that login_required is assignable to normal views.\n        \"\"\"\n        def normal_view(request):\n            pass\n        login_required(normal_view)\n\n    def testLoginRequired(self, view_url='/login_required/', login_url='/login/'):\n        \"\"\"\n        Check that login_required works on a simple view wrapped in a\n        login_required decorator.\n        \"\"\"\n        response = self.client.get(view_url)\n        self.assertEqual(response.status_code, 302)\n        self.assertTrue(login_url in response['Location'])\n        self.login()\n        response = self.client.get(view_url)\n        self.assertEqual(response.status_code, 200)\n\n    def testLoginRequiredNextUrl(self):\n        \"\"\"\n        Check that login_required works on a simple view wrapped in a\n        login_required decorator with a login_url set.\n        \"\"\"\n        self.testLoginRequired(view_url='/login_required_login_url/',\n            login_url='/somewhere/')\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/tests/forms.py",
    "content": "from __future__ import unicode_literals\n\nimport os\nfrom django.contrib.auth.models import User\nfrom django.contrib.auth.forms import (UserCreationForm, AuthenticationForm,\n    PasswordChangeForm, SetPasswordForm, UserChangeForm, PasswordResetForm,\n    ReadOnlyPasswordHashWidget)\nfrom django.contrib.auth.tests.utils import skipIfCustomUser\nfrom django.core import mail\nfrom django.forms.fields import Field, EmailField, CharField\nfrom django.test import TestCase\nfrom django.test.utils import override_settings\nfrom django.utils.encoding import force_text\nfrom django.utils._os import upath\nfrom django.utils import translation\nfrom django.utils.translation import ugettext as _\n\n\n@skipIfCustomUser\n@override_settings(USE_TZ=False, PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))\nclass UserCreationFormTest(TestCase):\n\n    fixtures = ['authtestdata.json']\n\n    def test_user_already_exists(self):\n        data = {\n            'username': 'testclient',\n            'password1': 'test123',\n            'password2': 'test123',\n            }\n        form = UserCreationForm(data)\n        self.assertFalse(form.is_valid())\n        self.assertEqual(form[\"username\"].errors,\n                         [force_text(form.error_messages['duplicate_username'])])\n\n    def test_invalid_data(self):\n        data = {\n            'username': 'jsmith!',\n            'password1': 'test123',\n            'password2': 'test123',\n            }\n        form = UserCreationForm(data)\n        self.assertFalse(form.is_valid())\n        self.assertEqual(form[\"username\"].errors,\n                         [force_text(form.fields['username'].error_messages['invalid'])])\n\n    def test_password_verification(self):\n        # The verification password is incorrect.\n        data = {\n            'username': 'jsmith',\n            'password1': 'test123',\n            'password2': 'test',\n            }\n        form = UserCreationForm(data)\n        self.assertFalse(form.is_valid())\n        self.assertEqual(form[\"password2\"].errors,\n                         [force_text(form.error_messages['password_mismatch'])])\n\n    def test_both_passwords(self):\n        # One (or both) passwords weren't given\n        data = {'username': 'jsmith'}\n        form = UserCreationForm(data)\n        required_error = [force_text(Field.default_error_messages['required'])]\n        self.assertFalse(form.is_valid())\n        self.assertEqual(form['password1'].errors, required_error)\n        self.assertEqual(form['password2'].errors, required_error)\n\n        data['password2'] = 'test123'\n        form = UserCreationForm(data)\n        self.assertFalse(form.is_valid())\n        self.assertEqual(form['password1'].errors, required_error)\n        self.assertEqual(form['password2'].errors, [])\n\n    def test_success(self):\n        # The success case.\n        data = {\n            'username': 'jsmith@example.com',\n            'password1': 'test123',\n            'password2': 'test123',\n            }\n        form = UserCreationForm(data)\n        self.assertTrue(form.is_valid())\n        u = form.save()\n        self.assertEqual(repr(u), '<User: jsmith@example.com>')\n\n\n@skipIfCustomUser\n@override_settings(USE_TZ=False, PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))\nclass AuthenticationFormTest(TestCase):\n\n    fixtures = ['authtestdata.json']\n\n    def test_invalid_username(self):\n        # The user submits an invalid username.\n\n        data = {\n            'username': 'jsmith_does_not_exist',\n            'password': 'test123',\n            }\n        form = AuthenticationForm(None, data)\n        self.assertFalse(form.is_valid())\n        self.assertEqual(form.non_field_errors(),\n                [force_text(form.error_messages['invalid_login'] % {\n                   'username': User._meta.get_field('username').verbose_name\n                })])\n\n    def test_inactive_user(self):\n        # The user is inactive.\n        data = {\n            'username': 'inactive',\n            'password': 'password',\n            }\n        form = AuthenticationForm(None, data)\n        self.assertFalse(form.is_valid())\n        self.assertEqual(form.non_field_errors(),\n                         [force_text(form.error_messages['inactive'])])\n\n    def test_inactive_user_i18n(self):\n        with self.settings(USE_I18N=True):\n            with translation.override('pt-br', deactivate=True):\n                # The user is inactive.\n                data = {\n                    'username': 'inactive',\n                    'password': 'password',\n                    }\n                form = AuthenticationForm(None, data)\n                self.assertFalse(form.is_valid())\n                self.assertEqual(form.non_field_errors(),\n                                 [force_text(form.error_messages['inactive'])])\n\n    def test_success(self):\n        # The success case\n        data = {\n            'username': 'testclient',\n            'password': 'password',\n            }\n        form = AuthenticationForm(None, data)\n        self.assertTrue(form.is_valid())\n        self.assertEqual(form.non_field_errors(), [])\n\n    def test_username_field_label(self):\n\n        class CustomAuthenticationForm(AuthenticationForm):\n            username = CharField(label=\"Name\", max_length=75)\n\n        form = CustomAuthenticationForm()\n        self.assertEqual(form['username'].label, \"Name\")\n\n\n@skipIfCustomUser\n@override_settings(USE_TZ=False, PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))\nclass SetPasswordFormTest(TestCase):\n\n    fixtures = ['authtestdata.json']\n\n    def test_password_verification(self):\n        # The two new passwords do not match.\n        user = User.objects.get(username='testclient')\n        data = {\n            'new_password1': 'abc123',\n            'new_password2': 'abc',\n            }\n        form = SetPasswordForm(user, data)\n        self.assertFalse(form.is_valid())\n        self.assertEqual(form[\"new_password2\"].errors,\n                         [force_text(form.error_messages['password_mismatch'])])\n\n    def test_success(self):\n        user = User.objects.get(username='testclient')\n        data = {\n            'new_password1': 'abc123',\n            'new_password2': 'abc123',\n            }\n        form = SetPasswordForm(user, data)\n        self.assertTrue(form.is_valid())\n\n\n@skipIfCustomUser\n@override_settings(USE_TZ=False, PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))\nclass PasswordChangeFormTest(TestCase):\n\n    fixtures = ['authtestdata.json']\n\n    def test_incorrect_password(self):\n        user = User.objects.get(username='testclient')\n        data = {\n            'old_password': 'test',\n            'new_password1': 'abc123',\n            'new_password2': 'abc123',\n            }\n        form = PasswordChangeForm(user, data)\n        self.assertFalse(form.is_valid())\n        self.assertEqual(form[\"old_password\"].errors,\n                         [force_text(form.error_messages['password_incorrect'])])\n\n    def test_password_verification(self):\n        # The two new passwords do not match.\n        user = User.objects.get(username='testclient')\n        data = {\n            'old_password': 'password',\n            'new_password1': 'abc123',\n            'new_password2': 'abc',\n            }\n        form = PasswordChangeForm(user, data)\n        self.assertFalse(form.is_valid())\n        self.assertEqual(form[\"new_password2\"].errors,\n                         [force_text(form.error_messages['password_mismatch'])])\n\n    def test_success(self):\n        # The success case.\n        user = User.objects.get(username='testclient')\n        data = {\n            'old_password': 'password',\n            'new_password1': 'abc123',\n            'new_password2': 'abc123',\n            }\n        form = PasswordChangeForm(user, data)\n        self.assertTrue(form.is_valid())\n\n    def test_field_order(self):\n        # Regression test - check the order of fields:\n        user = User.objects.get(username='testclient')\n        self.assertEqual(list(PasswordChangeForm(user, {}).fields),\n                         ['old_password', 'new_password1', 'new_password2'])\n\n\n@skipIfCustomUser\n@override_settings(USE_TZ=False, PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))\nclass UserChangeFormTest(TestCase):\n\n    fixtures = ['authtestdata.json']\n\n    def test_username_validity(self):\n        user = User.objects.get(username='testclient')\n        data = {'username': 'not valid'}\n        form = UserChangeForm(data, instance=user)\n        self.assertFalse(form.is_valid())\n        self.assertEqual(form['username'].errors,\n                         [force_text(form.fields['username'].error_messages['invalid'])])\n\n    def test_bug_14242(self):\n        # A regression test, introduce by adding an optimization for the\n        # UserChangeForm.\n\n        class MyUserForm(UserChangeForm):\n            def __init__(self, *args, **kwargs):\n                super(MyUserForm, self).__init__(*args, **kwargs)\n                self.fields['groups'].help_text = 'These groups give users different permissions'\n\n            class Meta(UserChangeForm.Meta):\n                fields = ('groups',)\n\n        # Just check we can create it\n        form = MyUserForm({})\n\n    def test_unsuable_password(self):\n        user = User.objects.get(username='empty_password')\n        user.set_unusable_password()\n        user.save()\n        form = UserChangeForm(instance=user)\n        self.assertIn(_(\"No password set.\"), form.as_table())\n\n    def test_bug_17944_empty_password(self):\n        user = User.objects.get(username='empty_password')\n        form = UserChangeForm(instance=user)\n        self.assertIn(_(\"No password set.\"), form.as_table())\n\n    def test_bug_17944_unmanageable_password(self):\n        user = User.objects.get(username='unmanageable_password')\n        form = UserChangeForm(instance=user)\n        self.assertIn(_(\"Invalid password format or unknown hashing algorithm.\"),\n            form.as_table())\n\n    def test_bug_17944_unknown_password_algorithm(self):\n        user = User.objects.get(username='unknown_password')\n        form = UserChangeForm(instance=user)\n        self.assertIn(_(\"Invalid password format or unknown hashing algorithm.\"),\n            form.as_table())\n\n    def test_bug_19133(self):\n        \"The change form does not return the password value\"\n        # Use the form to construct the POST data\n        user = User.objects.get(username='testclient')\n        form_for_data = UserChangeForm(instance=user)\n        post_data = form_for_data.initial\n\n        # The password field should be readonly, so anything\n        # posted here should be ignored; the form will be\n        # valid, and give back the 'initial' value for the\n        # password field.\n        post_data['password'] = 'new password'\n        form = UserChangeForm(instance=user, data=post_data)\n\n        self.assertTrue(form.is_valid())\n        self.assertEqual(form.cleaned_data['password'], 'sha1$6efc0$f93efe9fd7542f25a7be94871ea45aa95de57161')\n\n    def test_bug_19349_bound_password_field(self):\n        user = User.objects.get(username='testclient')\n        form = UserChangeForm(data={}, instance=user)\n        # When rendering the bound password field,\n        # ReadOnlyPasswordHashWidget needs the initial\n        # value to render correctly\n        self.assertEqual(form.initial['password'], form['password'].value())\n\n\n@skipIfCustomUser\n@override_settings(USE_TZ=False, PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))\nclass PasswordResetFormTest(TestCase):\n\n    fixtures = ['authtestdata.json']\n\n    def create_dummy_user(self):\n        \"\"\"creates a user and returns a tuple\n        (user_object, username, email)\n        \"\"\"\n        username = 'jsmith'\n        email = 'jsmith@example.com'\n        user = User.objects.create_user(username, email, 'test123')\n        return (user, username, email)\n\n    def test_invalid_email(self):\n        data = {'email': 'not valid'}\n        form = PasswordResetForm(data)\n        self.assertFalse(form.is_valid())\n        self.assertEqual(form['email'].errors,\n                         [force_text(EmailField.default_error_messages['invalid'])])\n\n    def test_nonexistant_email(self):\n        # Test nonexistant email address\n        data = {'email': 'foo@bar.com'}\n        form = PasswordResetForm(data)\n        self.assertFalse(form.is_valid())\n        self.assertEqual(form.errors,\n                         {'email': [force_text(form.error_messages['unknown'])]})\n\n    def test_cleaned_data(self):\n        # Regression test\n        (user, username, email) = self.create_dummy_user()\n        data = {'email': email}\n        form = PasswordResetForm(data)\n        self.assertTrue(form.is_valid())\n        self.assertEqual(form.cleaned_data['email'], email)\n\n    def test_custom_email_subject(self):\n        template_path = os.path.join(os.path.dirname(upath(__file__)), 'templates')\n        with self.settings(TEMPLATE_DIRS=(template_path,)):\n            data = {'email': 'testclient@example.com'}\n            form = PasswordResetForm(data)\n            self.assertTrue(form.is_valid())\n            # Since we're not providing a request object, we must provide a\n            # domain_override to prevent the save operation from failing in the\n            # potential case where contrib.sites is not installed. Refs #16412.\n            form.save(domain_override='example.com')\n            self.assertEqual(len(mail.outbox), 1)\n            self.assertEqual(mail.outbox[0].subject, 'Custom password reset on example.com')\n\n    def test_bug_5605(self):\n        # bug #5605, preserve the case of the user name (before the @ in the\n        # email address) when creating a user.\n        user = User.objects.create_user('forms_test2', 'tesT@EXAMple.com', 'test')\n        self.assertEqual(user.email, 'tesT@example.com')\n        user = User.objects.create_user('forms_test3', 'tesT', 'test')\n        self.assertEqual(user.email, 'tesT')\n\n    def test_inactive_user(self):\n        #tests that inactive user cannot\n        #receive password reset email\n        (user, username, email) = self.create_dummy_user()\n        user.is_active = False\n        user.save()\n        form = PasswordResetForm({'email': email})\n        self.assertFalse(form.is_valid())\n\n    def test_unusable_password(self):\n        user = User.objects.create_user('testuser', 'test@example.com', 'test')\n        data = {\"email\": \"test@example.com\"}\n        form = PasswordResetForm(data)\n        self.assertTrue(form.is_valid())\n        user.set_unusable_password()\n        user.save()\n        form = PasswordResetForm(data)\n        self.assertFalse(form.is_valid())\n        self.assertEqual(form[\"email\"].errors,\n                         [_(\"The user account associated with this email address cannot reset the password.\")])\n\n\nclass ReadOnlyPasswordHashWidgetTest(TestCase):\n\n    def test_bug_19349_render_with_none_value(self):\n        # Rendering the widget with value set to None\n        # mustn't raise an exception.\n        widget = ReadOnlyPasswordHashWidget()\n        html = widget.render(name='password', value=None, attrs={})\n        self.assertIn(_(\"No password set.\"), html)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/tests/handlers.py",
    "content": "from __future__ import unicode_literals\n\nfrom django.contrib.auth.handlers.modwsgi import check_password, groups_for_user\nfrom django.contrib.auth.models import User, Group\nfrom django.contrib.auth.tests import CustomUser\nfrom django.contrib.auth.tests.utils import skipIfCustomUser\nfrom django.test import TransactionTestCase\nfrom django.test.utils import override_settings\n\n\nclass ModWsgiHandlerTestCase(TransactionTestCase):\n    \"\"\"\n    Tests for the mod_wsgi authentication handler\n    \"\"\"\n    @skipIfCustomUser\n    def test_check_password(self):\n        \"\"\"\n        Verify that check_password returns the correct values as per\n        http://code.google.com/p/modwsgi/wiki/AccessControlMechanisms#Apache_Authentication_Provider\n        \"\"\"\n        User.objects.create_user('test', 'test@example.com', 'test')\n\n        # User not in database\n        self.assertTrue(check_password({}, 'unknown', '') is None)\n\n        # Valid user with correct password\n        self.assertTrue(check_password({}, 'test', 'test'))\n\n        # correct password, but user is inactive\n        User.objects.filter(username='test').update(is_active=False)\n        self.assertFalse(check_password({}, 'test', 'test'))\n\n        # Valid user with incorrect password\n        self.assertFalse(check_password({}, 'test', 'incorrect'))\n\n    @override_settings(AUTH_USER_MODEL='auth.CustomUser')\n    def test_check_password_custom_user(self):\n        \"\"\"\n        Verify that check_password returns the correct values as per\n        http://code.google.com/p/modwsgi/wiki/AccessControlMechanisms#Apache_Authentication_Provider\n\n        with custom user installed\n        \"\"\"\n\n        CustomUser._default_manager.create_user('test@example.com', '1990-01-01', 'test')\n\n        # User not in database\n        self.assertTrue(check_password({}, 'unknown', '') is None)\n\n        # Valid user with correct password'\n        self.assertTrue(check_password({}, 'test@example.com', 'test'))\n\n        # Valid user with incorrect password\n        self.assertFalse(check_password({}, 'test@example.com', 'incorrect'))\n\n    @skipIfCustomUser\n    def test_groups_for_user(self):\n        \"\"\"\n        Check that groups_for_user returns correct values as per\n        http://code.google.com/p/modwsgi/wiki/AccessControlMechanisms#Apache_Group_Authorisation\n        \"\"\"\n        user1 = User.objects.create_user('test', 'test@example.com', 'test')\n        User.objects.create_user('test1', 'test1@example.com', 'test1')\n        group = Group.objects.create(name='test_group')\n        user1.groups.add(group)\n\n        # User not in database\n        self.assertEqual(groups_for_user({}, 'unknown'), [])\n\n        self.assertEqual(groups_for_user({}, 'test'), [b'test_group'])\n        self.assertEqual(groups_for_user({}, 'test1'), [])\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/tests/hashers.py",
    "content": "# -*- coding: utf-8 -*-\nfrom __future__ import unicode_literals\n\nfrom django.conf.global_settings import PASSWORD_HASHERS as default_hashers\nfrom django.contrib.auth.hashers import (is_password_usable,\n    check_password, make_password, PBKDF2PasswordHasher, load_hashers,\n    PBKDF2SHA1PasswordHasher, get_hasher, identify_hasher, UNUSABLE_PASSWORD)\nfrom django.utils import unittest\nfrom django.utils.unittest import skipUnless\n\n\ntry:\n    import crypt\nexcept ImportError:\n    crypt = None\n\ntry:\n    import bcrypt\nexcept ImportError:\n    bcrypt = None\n\n\nclass TestUtilsHashPass(unittest.TestCase):\n\n    def setUp(self):\n        load_hashers(password_hashers=default_hashers)\n\n    def test_simple(self):\n        encoded = make_password('lètmein')\n        self.assertTrue(encoded.startswith('pbkdf2_sha256$'))\n        self.assertTrue(is_password_usable(encoded))\n        self.assertTrue(check_password('lètmein', encoded))\n        self.assertFalse(check_password('lètmeinz', encoded))\n\n    def test_pkbdf2(self):\n        encoded = make_password('lètmein', 'seasalt', 'pbkdf2_sha256')\n        self.assertEqual(encoded,\n            'pbkdf2_sha256$10000$seasalt$CWWFdHOWwPnki7HvkcqN9iA2T3KLW1cf2uZ5kvArtVY=')\n        self.assertTrue(is_password_usable(encoded))\n        self.assertTrue(check_password('lètmein', encoded))\n        self.assertFalse(check_password('lètmeinz', encoded))\n        self.assertEqual(identify_hasher(encoded).algorithm, \"pbkdf2_sha256\")\n\n    def test_sha1(self):\n        encoded = make_password('lètmein', 'seasalt', 'sha1')\n        self.assertEqual(encoded,\n            'sha1$seasalt$cff36ea83f5706ce9aa7454e63e431fc726b2dc8')\n        self.assertTrue(is_password_usable(encoded))\n        self.assertTrue(check_password('lètmein', encoded))\n        self.assertFalse(check_password('lètmeinz', encoded))\n        self.assertEqual(identify_hasher(encoded).algorithm, \"sha1\")\n\n    def test_md5(self):\n        encoded = make_password('lètmein', 'seasalt', 'md5')\n        self.assertEqual(encoded,\n                         'md5$seasalt$3f86d0d3d465b7b458c231bf3555c0e3')\n        self.assertTrue(is_password_usable(encoded))\n        self.assertTrue(check_password('lètmein', encoded))\n        self.assertFalse(check_password('lètmeinz', encoded))\n        self.assertEqual(identify_hasher(encoded).algorithm, \"md5\")\n\n    def test_unsalted_md5(self):\n        encoded = make_password('lètmein', '', 'unsalted_md5')\n        self.assertEqual(encoded, '88a434c88cca4e900f7874cd98123f43')\n        self.assertTrue(is_password_usable(encoded))\n        self.assertTrue(check_password('lètmein', encoded))\n        self.assertFalse(check_password('lètmeinz', encoded))\n        self.assertEqual(identify_hasher(encoded).algorithm, \"unsalted_md5\")\n        # Alternate unsalted syntax\n        alt_encoded = \"md5$$%s\" % encoded\n        self.assertTrue(is_password_usable(alt_encoded))\n        self.assertTrue(check_password('lètmein', alt_encoded))\n        self.assertFalse(check_password('lètmeinz', alt_encoded))\n\n    def test_unsalted_sha1(self):\n        encoded = make_password('lètmein', '', 'unsalted_sha1')\n        self.assertEqual(encoded, 'sha1$$6d138ca3ae545631b3abd71a4f076ce759c5700b')\n        self.assertTrue(is_password_usable(encoded))\n        self.assertTrue(check_password('lètmein', encoded))\n        self.assertFalse(check_password('lètmeinz', encoded))\n        self.assertEqual(identify_hasher(encoded).algorithm, \"unsalted_sha1\")\n        # Raw SHA1 isn't acceptable\n        alt_encoded = encoded[6:]\n        self.assertFalse(check_password('lètmein', alt_encoded))\n\n    @skipUnless(crypt, \"no crypt module to generate password.\")\n    def test_crypt(self):\n        encoded = make_password('lètmei', 'ab', 'crypt')\n        self.assertEqual(encoded, 'crypt$$ab1Hv2Lg7ltQo')\n        self.assertTrue(is_password_usable(encoded))\n        self.assertTrue(check_password('lètmei', encoded))\n        self.assertFalse(check_password('lètmeiz', encoded))\n        self.assertEqual(identify_hasher(encoded).algorithm, \"crypt\")\n\n    @skipUnless(bcrypt, \"py-bcrypt not installed\")\n    def test_bcrypt(self):\n        encoded = make_password('lètmein', hasher='bcrypt')\n        self.assertTrue(is_password_usable(encoded))\n        self.assertTrue(encoded.startswith('bcrypt$'))\n        self.assertTrue(check_password('lètmein', encoded))\n        self.assertFalse(check_password('lètmeinz', encoded))\n        self.assertEqual(identify_hasher(encoded).algorithm, \"bcrypt\")\n\n    def test_unusable(self):\n        encoded = make_password(None)\n        self.assertFalse(is_password_usable(encoded))\n        self.assertFalse(check_password(None, encoded))\n        self.assertFalse(check_password(UNUSABLE_PASSWORD, encoded))\n        self.assertFalse(check_password('', encoded))\n        self.assertFalse(check_password('lètmein', encoded))\n        self.assertFalse(check_password('lètmeinz', encoded))\n        self.assertRaises(ValueError, identify_hasher, encoded)\n\n    def test_bad_algorithm(self):\n        def doit():\n            make_password('lètmein', hasher='lolcat')\n        self.assertRaises(ValueError, doit)\n        self.assertRaises(ValueError, identify_hasher, \"lolcat$salt$hash\")\n\n    def test_bad_encoded(self):\n        self.assertFalse(is_password_usable('lètmein_badencoded'))\n        self.assertFalse(is_password_usable(''))\n\n    def test_low_level_pkbdf2(self):\n        hasher = PBKDF2PasswordHasher()\n        encoded = hasher.encode('lètmein', 'seasalt')\n        self.assertEqual(encoded,\n            'pbkdf2_sha256$10000$seasalt$CWWFdHOWwPnki7HvkcqN9iA2T3KLW1cf2uZ5kvArtVY=')\n        self.assertTrue(hasher.verify('lètmein', encoded))\n\n    def test_low_level_pbkdf2_sha1(self):\n        hasher = PBKDF2SHA1PasswordHasher()\n        encoded = hasher.encode('lètmein', 'seasalt')\n        self.assertEqual(encoded,\n            'pbkdf2_sha1$10000$seasalt$oAfF6vgs95ncksAhGXOWf4Okq7o=')\n        self.assertTrue(hasher.verify('lètmein', encoded))\n\n    def test_upgrade(self):\n        self.assertEqual('pbkdf2_sha256', get_hasher('default').algorithm)\n        for algo in ('sha1', 'md5'):\n            encoded = make_password('lètmein', hasher=algo)\n            state = {'upgraded': False}\n            def setter(password):\n                state['upgraded'] = True\n            self.assertTrue(check_password('lètmein', encoded, setter))\n            self.assertTrue(state['upgraded'])\n\n    def test_no_upgrade(self):\n        encoded = make_password('lètmein')\n        state = {'upgraded': False}\n        def setter():\n            state['upgraded'] = True\n        self.assertFalse(check_password('WRONG', encoded, setter))\n        self.assertFalse(state['upgraded'])\n\n    def test_no_upgrade_on_incorrect_pass(self):\n        self.assertEqual('pbkdf2_sha256', get_hasher('default').algorithm)\n        for algo in ('sha1', 'md5'):\n            encoded = make_password('lètmein', hasher=algo)\n            state = {'upgraded': False}\n            def setter():\n                state['upgraded'] = True\n            self.assertFalse(check_password('WRONG', encoded, setter))\n            self.assertFalse(state['upgraded'])\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/tests/management.py",
    "content": "from __future__ import unicode_literals\nfrom datetime import date\n\nfrom django.contrib.auth import models, management\nfrom django.contrib.auth.management import create_permissions\nfrom django.contrib.auth.management.commands import changepassword\nfrom django.contrib.auth.models import User\nfrom django.contrib.auth.tests import CustomUser\nfrom django.contrib.auth.tests.utils import skipIfCustomUser\nfrom django.core.management import call_command\nfrom django.core.management.base import CommandError\nfrom django.core.management.validation import get_validation_errors\nfrom django.db.models.loading import get_app\nfrom django.test import TestCase\nfrom django.test.utils import override_settings\nfrom django.utils import six\nfrom django.utils.six import StringIO\n\n\n@skipIfCustomUser\nclass GetDefaultUsernameTestCase(TestCase):\n\n    def setUp(self):\n        self.old_get_system_username = management.get_system_username\n\n    def tearDown(self):\n        management.get_system_username = self.old_get_system_username\n\n    def test_actual_implementation(self):\n        self.assertIsInstance(management.get_system_username(), six.text_type)\n\n    def test_simple(self):\n        management.get_system_username = lambda: 'joe'\n        self.assertEqual(management.get_default_username(), 'joe')\n\n    def test_existing(self):\n        models.User.objects.create(username='joe')\n        management.get_system_username = lambda: 'joe'\n        self.assertEqual(management.get_default_username(), '')\n        self.assertEqual(\n            management.get_default_username(check_db=False), 'joe')\n\n    def test_i18n(self):\n        # 'Julia' with accented 'u':\n        management.get_system_username = lambda: 'J\\xfalia'\n        self.assertEqual(management.get_default_username(), 'julia')\n\n\n@skipIfCustomUser\nclass ChangepasswordManagementCommandTestCase(TestCase):\n\n    def setUp(self):\n        self.user = models.User.objects.create_user(username='joe', password='qwerty')\n        self.stdout = StringIO()\n        self.stderr = StringIO()\n\n    def tearDown(self):\n        self.stdout.close()\n        self.stderr.close()\n\n    def test_that_changepassword_command_changes_joes_password(self):\n        \"Executing the changepassword management command should change joe's password\"\n        self.assertTrue(self.user.check_password('qwerty'))\n        command = changepassword.Command()\n        command._get_pass = lambda *args: 'not qwerty'\n\n        command.execute(\"joe\", stdout=self.stdout)\n        command_output = self.stdout.getvalue().strip()\n\n        self.assertEqual(command_output, \"Changing password for user 'joe'\\nPassword changed successfully for user 'joe'\")\n        self.assertTrue(models.User.objects.get(username=\"joe\").check_password(\"not qwerty\"))\n\n    def test_that_max_tries_exits_1(self):\n        \"\"\"\n        A CommandError should be thrown by handle() if the user enters in\n        mismatched passwords three times.\n        \"\"\"\n        command = changepassword.Command()\n        command._get_pass = lambda *args: args or 'foo'\n\n        with self.assertRaises(CommandError):\n            command.execute(\"joe\", stdout=self.stdout, stderr=self.stderr)\n\n\n@skipIfCustomUser\nclass CreatesuperuserManagementCommandTestCase(TestCase):\n\n    def test_createsuperuser(self):\n        \"Check the operation of the createsuperuser management command\"\n        # We can use the management command to create a superuser\n        new_io = StringIO()\n        call_command(\"createsuperuser\",\n            interactive=False,\n            username=\"joe\",\n            email=\"joe@somewhere.org\",\n            stdout=new_io\n        )\n        command_output = new_io.getvalue().strip()\n        self.assertEqual(command_output, 'Superuser created successfully.')\n        u = User.objects.get(username=\"joe\")\n        self.assertEqual(u.email, 'joe@somewhere.org')\n\n        # created password should be unusable\n        self.assertFalse(u.has_usable_password())\n\n    def test_verbosity_zero(self):\n        # We can supress output on the management command\n        new_io = StringIO()\n        call_command(\"createsuperuser\",\n            interactive=False,\n            username=\"joe2\",\n            email=\"joe2@somewhere.org\",\n            verbosity=0,\n            stdout=new_io\n        )\n        command_output = new_io.getvalue().strip()\n        self.assertEqual(command_output, '')\n        u = User.objects.get(username=\"joe2\")\n        self.assertEqual(u.email, 'joe2@somewhere.org')\n        self.assertFalse(u.has_usable_password())\n\n    def test_email_in_username(self):\n        new_io = StringIO()\n        call_command(\"createsuperuser\",\n            interactive=False,\n            username=\"joe+admin@somewhere.org\",\n            email=\"joe@somewhere.org\",\n            stdout=new_io\n        )\n        u = User._default_manager.get(username=\"joe+admin@somewhere.org\")\n        self.assertEqual(u.email, 'joe@somewhere.org')\n        self.assertFalse(u.has_usable_password())\n\n    @override_settings(AUTH_USER_MODEL='auth.CustomUser')\n    def test_swappable_user(self):\n        \"A superuser can be created when a custom User model is in use\"\n        # We can use the management command to create a superuser\n        # We skip validation because the temporary substitution of the\n        # swappable User model messes with validation.\n        new_io = StringIO()\n        call_command(\"createsuperuser\",\n            interactive=False,\n            email=\"joe@somewhere.org\",\n            date_of_birth=\"1976-04-01\",\n            stdout=new_io,\n            skip_validation=True\n        )\n        command_output = new_io.getvalue().strip()\n        self.assertEqual(command_output, 'Superuser created successfully.')\n        u = CustomUser._default_manager.get(email=\"joe@somewhere.org\")\n        self.assertEqual(u.date_of_birth, date(1976, 4, 1))\n\n        # created password should be unusable\n        self.assertFalse(u.has_usable_password())\n\n    @override_settings(AUTH_USER_MODEL='auth.CustomUser')\n    def test_swappable_user_missing_required_field(self):\n        \"A Custom superuser won't be created when a required field isn't provided\"\n        # We can use the management command to create a superuser\n        # We skip validation because the temporary substitution of the\n        # swappable User model messes with validation.\n        new_io = StringIO()\n        with self.assertRaises(CommandError):\n            call_command(\"createsuperuser\",\n                interactive=False,\n                username=\"joe@somewhere.org\",\n                stdout=new_io,\n                stderr=new_io,\n                skip_validation=True\n            )\n\n        self.assertEqual(CustomUser._default_manager.count(), 0)\n\n\nclass CustomUserModelValidationTestCase(TestCase):\n    @override_settings(AUTH_USER_MODEL='auth.CustomUserBadRequiredFields')\n    def test_username_not_in_required_fields(self):\n        \"USERNAME_FIELD should not appear in REQUIRED_FIELDS.\"\n        new_io = StringIO()\n        get_validation_errors(new_io, get_app('auth'))\n        self.assertIn(\"The field named as the USERNAME_FIELD should not be included in REQUIRED_FIELDS on a swappable User model.\", new_io.getvalue())\n\n    @override_settings(AUTH_USER_MODEL='auth.CustomUserNonUniqueUsername')\n    def test_username_non_unique(self):\n        \"A non-unique USERNAME_FIELD should raise a model validation error.\"\n        new_io = StringIO()\n        get_validation_errors(new_io, get_app('auth'))\n        self.assertIn(\"The USERNAME_FIELD must be unique. Add unique=True to the field parameters.\", new_io.getvalue())\n\n\nclass PermissionDuplicationTestCase(TestCase):\n\n    def setUp(self):\n        self._original_permissions = models.Permission._meta.permissions[:]\n\n    def tearDown(self):\n        models.Permission._meta.permissions = self._original_permissions\n\n    def test_duplicated_permissions(self):\n        \"\"\"\n        Test that we show proper error message if we are trying to create\n        duplicate permissions.\n        \"\"\"\n        # check duplicated default permission\n        models.Permission._meta.permissions = [\n           ('change_permission', 'Can edit permission (duplicate)')]\n        six.assertRaisesRegex(self, CommandError,\n            \"The permission codename 'change_permission' clashes with a \"\n            \"builtin permission for model 'auth.Permission'.\",\n            create_permissions, models, [], verbosity=0)\n\n        # check duplicated custom permissions\n        models.Permission._meta.permissions = [\n            ('my_custom_permission', 'Some permission'),\n            ('other_one', 'Some other permission'),\n            ('my_custom_permission', 'Some permission with duplicate permission code'),\n        ]\n        six.assertRaisesRegex(self, CommandError,\n            \"The permission codename 'my_custom_permission' is duplicated for model \"\n            \"'auth.Permission'.\",\n            create_permissions, models, [], verbosity=0)\n\n        # should not raise anything\n        models.Permission._meta.permissions = [\n            ('my_custom_permission', 'Some permission'),\n            ('other_one', 'Some other permission'),\n        ]\n        create_permissions(models, [], verbosity=0)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/tests/models.py",
    "content": "from django.conf import settings\nfrom django.contrib.auth import get_user_model\nfrom django.contrib.auth.models import (Group, User, SiteProfileNotAvailable,\n    UserManager)\nfrom django.contrib.auth.tests.utils import skipIfCustomUser\nfrom django.test import TestCase\nfrom django.test.utils import override_settings\nfrom django.utils import six\n\n\n@skipIfCustomUser\n@override_settings(USE_TZ=False, AUTH_PROFILE_MODULE='')\nclass ProfileTestCase(TestCase):\n\n    def test_site_profile_not_available(self):\n        user = User.objects.create(username='testclient')\n\n        # calling get_profile without AUTH_PROFILE_MODULE set\n        del settings.AUTH_PROFILE_MODULE\n        with six.assertRaisesRegex(self, SiteProfileNotAvailable,\n                \"You need to set AUTH_PROFILE_MODULE in your project\"):\n            user.get_profile()\n\n        # Bad syntax in AUTH_PROFILE_MODULE:\n        settings.AUTH_PROFILE_MODULE = 'foobar'\n        with six.assertRaisesRegex(self, SiteProfileNotAvailable,\n                \"app_label and model_name should be separated by a dot\"):\n            user.get_profile()\n\n        # module that doesn't exist\n        settings.AUTH_PROFILE_MODULE = 'foo.bar'\n        with six.assertRaisesRegex(self, SiteProfileNotAvailable,\n                \"Unable to load the profile model\"):\n            user.get_profile()\n\n\n@skipIfCustomUser\n@override_settings(USE_TZ=False)\nclass NaturalKeysTestCase(TestCase):\n    fixtures = ['authtestdata.json']\n\n    def test_user_natural_key(self):\n        staff_user = User.objects.get(username='staff')\n        self.assertEqual(User.objects.get_by_natural_key('staff'), staff_user)\n        self.assertEqual(staff_user.natural_key(), ('staff',))\n\n    def test_group_natural_key(self):\n        users_group = Group.objects.create(name='users')\n        self.assertEqual(Group.objects.get_by_natural_key('users'), users_group)\n\n\n@skipIfCustomUser\n@override_settings(USE_TZ=False)\nclass LoadDataWithoutNaturalKeysTestCase(TestCase):\n    fixtures = ['regular.json']\n\n    def test_user_is_created_and_added_to_group(self):\n        user = User.objects.get(username='my_username')\n        group = Group.objects.get(name='my_group')\n        self.assertEqual(group, user.groups.get())\n\n\n@skipIfCustomUser\n@override_settings(USE_TZ=False)\nclass LoadDataWithNaturalKeysTestCase(TestCase):\n    fixtures = ['natural.json']\n\n    def test_user_is_created_and_added_to_group(self):\n        user = User.objects.get(username='my_username')\n        group = Group.objects.get(name='my_group')\n        self.assertEqual(group, user.groups.get())\n\n\n@skipIfCustomUser\nclass UserManagerTestCase(TestCase):\n\n    def test_create_user(self):\n        email_lowercase = 'normal@normal.com'\n        user = User.objects.create_user('user', email_lowercase)\n        self.assertEqual(user.email, email_lowercase)\n        self.assertEqual(user.username, 'user')\n        self.assertEqual(user.password, '!')\n\n    def test_create_user_email_domain_normalize_rfc3696(self):\n        # According to  http://tools.ietf.org/html/rfc3696#section-3\n        # the \"@\" symbol can be part of the local part of an email address\n        returned = UserManager.normalize_email(r'Abc\\@DEF@EXAMPLE.com')\n        self.assertEqual(returned, r'Abc\\@DEF@example.com')\n\n    def test_create_user_email_domain_normalize(self):\n        returned = UserManager.normalize_email('normal@DOMAIN.COM')\n        self.assertEqual(returned, 'normal@domain.com')\n\n    def test_create_user_email_domain_normalize_with_whitespace(self):\n        returned = UserManager.normalize_email('email\\ with_whitespace@D.COM')\n        self.assertEqual(returned, 'email\\ with_whitespace@d.com')\n\n    def test_empty_username(self):\n        self.assertRaisesMessage(ValueError,\n                                 'The given username must be set',\n                                  User.objects.create_user, username='')\n\n\nclass IsActiveTestCase(TestCase):\n    \"\"\"\n    Tests the behavior of the guaranteed is_active attribute\n    \"\"\"\n\n    @skipIfCustomUser\n    def test_builtin_user_isactive(self):\n        user = User.objects.create(username='foo', email='foo@bar.com')\n        # is_active is true by default\n        self.assertEqual(user.is_active, True)\n        user.is_active = False\n        user.save()\n        user_fetched = User.objects.get(pk=user.pk)\n        # the is_active flag is saved\n        self.assertFalse(user_fetched.is_active)\n\n    @override_settings(AUTH_USER_MODEL='auth.IsActiveTestUser1')\n    def test_is_active_field_default(self):\n        \"\"\"\n        tests that the default value for is_active is provided\n        \"\"\"\n        UserModel = get_user_model()\n        user = UserModel(username='foo')\n        self.assertEqual(user.is_active, True)\n        # you can set the attribute - but it will not save\n        user.is_active = False\n        # there should be no problem saving - but the attribute is not saved\n        user.save()\n        user_fetched = UserModel._default_manager.get(pk=user.pk)\n        # the attribute is always true for newly retrieved instance\n        self.assertEqual(user_fetched.is_active, True)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/tests/remote_user.py",
    "content": "from datetime import datetime\n\nfrom django.conf import settings\nfrom django.contrib.auth import authenticate\nfrom django.contrib.auth.backends import RemoteUserBackend\nfrom django.contrib.auth.models import User, AnonymousUser\nfrom django.contrib.auth.tests.utils import skipIfCustomUser\nfrom django.test import TestCase\nfrom django.utils import timezone\n\n\n@skipIfCustomUser\nclass RemoteUserTest(TestCase):\n\n    urls = 'django.contrib.auth.tests.urls'\n    middleware = 'django.contrib.auth.middleware.RemoteUserMiddleware'\n    backend = 'django.contrib.auth.backends.RemoteUserBackend'\n\n    # Usernames to be passed in REMOTE_USER for the test_known_user test case.\n    known_user = 'knownuser'\n    known_user2 = 'knownuser2'\n\n    def setUp(self):\n        self.curr_middleware = settings.MIDDLEWARE_CLASSES\n        self.curr_auth = settings.AUTHENTICATION_BACKENDS\n        settings.MIDDLEWARE_CLASSES += (self.middleware,)\n        settings.AUTHENTICATION_BACKENDS += (self.backend,)\n\n    def test_no_remote_user(self):\n        \"\"\"\n        Tests requests where no remote user is specified and insures that no\n        users get created.\n        \"\"\"\n        num_users = User.objects.count()\n\n        response = self.client.get('/remote_user/')\n        self.assertTrue(response.context['user'].is_anonymous())\n        self.assertEqual(User.objects.count(), num_users)\n\n        response = self.client.get('/remote_user/', REMOTE_USER=None)\n        self.assertTrue(response.context['user'].is_anonymous())\n        self.assertEqual(User.objects.count(), num_users)\n\n        response = self.client.get('/remote_user/', REMOTE_USER='')\n        self.assertTrue(response.context['user'].is_anonymous())\n        self.assertEqual(User.objects.count(), num_users)\n\n    def test_unknown_user(self):\n        \"\"\"\n        Tests the case where the username passed in the header does not exist\n        as a User.\n        \"\"\"\n        num_users = User.objects.count()\n        response = self.client.get('/remote_user/', REMOTE_USER='newuser')\n        self.assertEqual(response.context['user'].username, 'newuser')\n        self.assertEqual(User.objects.count(), num_users + 1)\n        User.objects.get(username='newuser')\n\n        # Another request with same user should not create any new users.\n        response = self.client.get('/remote_user/', REMOTE_USER='newuser')\n        self.assertEqual(User.objects.count(), num_users + 1)\n\n    def test_known_user(self):\n        \"\"\"\n        Tests the case where the username passed in the header is a valid User.\n        \"\"\"\n        User.objects.create(username='knownuser')\n        User.objects.create(username='knownuser2')\n        num_users = User.objects.count()\n        response = self.client.get('/remote_user/', REMOTE_USER=self.known_user)\n        self.assertEqual(response.context['user'].username, 'knownuser')\n        self.assertEqual(User.objects.count(), num_users)\n        # Test that a different user passed in the headers causes the new user\n        # to be logged in.\n        response = self.client.get('/remote_user/', REMOTE_USER=self.known_user2)\n        self.assertEqual(response.context['user'].username, 'knownuser2')\n        self.assertEqual(User.objects.count(), num_users)\n\n    def test_last_login(self):\n        \"\"\"\n        Tests that a user's last_login is set the first time they make a\n        request but not updated in subsequent requests with the same session.\n        \"\"\"\n        user = User.objects.create(username='knownuser')\n        # Set last_login to something so we can determine if it changes.\n        default_login = datetime(2000, 1, 1)\n        if settings.USE_TZ:\n            default_login = default_login.replace(tzinfo=timezone.utc)\n        user.last_login = default_login\n        user.save()\n\n        response = self.client.get('/remote_user/', REMOTE_USER=self.known_user)\n        self.assertNotEqual(default_login, response.context['user'].last_login)\n\n        user = User.objects.get(username='knownuser')\n        user.last_login = default_login\n        user.save()\n        response = self.client.get('/remote_user/', REMOTE_USER=self.known_user)\n        self.assertEqual(default_login, response.context['user'].last_login)\n\n    def test_header_disappears(self):\n        \"\"\"\n        Tests that a logged in user is logged out automatically when\n        the REMOTE_USER header disappears during the same browser session.\n        \"\"\"\n        User.objects.create(username='knownuser')\n        # Known user authenticates\n        response = self.client.get('/remote_user/', REMOTE_USER=self.known_user)\n        self.assertEqual(response.context['user'].username, 'knownuser')\n        # During the session, the REMOTE_USER header disappears. Should trigger logout.\n        response = self.client.get('/remote_user/')\n        self.assertEqual(response.context['user'].is_anonymous(), True)\n        # verify the remoteuser middleware will not remove a user\n        # authenticated via another backend\n        User.objects.create_user(username='modeluser', password='foo')\n        self.client.login(username='modeluser', password='foo')\n        authenticate(username='modeluser', password='foo')\n        response = self.client.get('/remote_user/')\n        self.assertEqual(response.context['user'].username, 'modeluser')\n\n    def tearDown(self):\n        \"\"\"Restores settings to avoid breaking other tests.\"\"\"\n        settings.MIDDLEWARE_CLASSES = self.curr_middleware\n        settings.AUTHENTICATION_BACKENDS = self.curr_auth\n\n\nclass RemoteUserNoCreateBackend(RemoteUserBackend):\n    \"\"\"Backend that doesn't create unknown users.\"\"\"\n    create_unknown_user = False\n\n\n@skipIfCustomUser\nclass RemoteUserNoCreateTest(RemoteUserTest):\n    \"\"\"\n    Contains the same tests as RemoteUserTest, but using a custom auth backend\n    class that doesn't create unknown users.\n    \"\"\"\n\n    backend =\\\n        'django.contrib.auth.tests.remote_user.RemoteUserNoCreateBackend'\n\n    def test_unknown_user(self):\n        num_users = User.objects.count()\n        response = self.client.get('/remote_user/', REMOTE_USER='newuser')\n        self.assertTrue(response.context['user'].is_anonymous())\n        self.assertEqual(User.objects.count(), num_users)\n\n\nclass CustomRemoteUserBackend(RemoteUserBackend):\n    \"\"\"\n    Backend that overrides RemoteUserBackend methods.\n    \"\"\"\n\n    def clean_username(self, username):\n        \"\"\"\n        Grabs username before the @ character.\n        \"\"\"\n        return username.split('@')[0]\n\n    def configure_user(self, user):\n        \"\"\"\n        Sets user's email address.\n        \"\"\"\n        user.email = 'user@example.com'\n        user.save()\n        return user\n\n\n@skipIfCustomUser\nclass RemoteUserCustomTest(RemoteUserTest):\n    \"\"\"\n    Tests a custom RemoteUserBackend subclass that overrides the clean_username\n    and configure_user methods.\n    \"\"\"\n\n    backend =\\\n        'django.contrib.auth.tests.remote_user.CustomRemoteUserBackend'\n    # REMOTE_USER strings with email addresses for the custom backend to\n    # clean.\n    known_user = 'knownuser@example.com'\n    known_user2 = 'knownuser2@example.com'\n\n    def test_known_user(self):\n        \"\"\"\n        The strings passed in REMOTE_USER should be cleaned and the known users\n        should not have been configured with an email address.\n        \"\"\"\n        super(RemoteUserCustomTest, self).test_known_user()\n        self.assertEqual(User.objects.get(username='knownuser').email, '')\n        self.assertEqual(User.objects.get(username='knownuser2').email, '')\n\n    def test_unknown_user(self):\n        \"\"\"\n        The unknown user created should be configured with an email address.\n        \"\"\"\n        super(RemoteUserCustomTest, self).test_unknown_user()\n        newuser = User.objects.get(username='newuser')\n        self.assertEqual(newuser.email, 'user@example.com')\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/tests/signals.py",
    "content": "from django.contrib.auth import signals\nfrom django.contrib.auth.models import User\nfrom django.contrib.auth.tests.utils import skipIfCustomUser\nfrom django.test import TestCase\nfrom django.test.client import RequestFactory\nfrom django.test.utils import override_settings\n\n\n@skipIfCustomUser\n@override_settings(USE_TZ=False, PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))\nclass SignalTestCase(TestCase):\n    urls = 'django.contrib.auth.tests.urls'\n    fixtures = ['authtestdata.json']\n\n    def listener_login(self, user, **kwargs):\n        self.logged_in.append(user)\n\n    def listener_logout(self, user, **kwargs):\n        self.logged_out.append(user)\n\n    def listener_login_failed(self, sender, credentials, **kwargs):\n        self.login_failed.append(credentials)\n\n    def setUp(self):\n        \"\"\"Set up the listeners and reset the logged in/logged out counters\"\"\"\n        self.logged_in = []\n        self.logged_out = []\n        self.login_failed = []\n        signals.user_logged_in.connect(self.listener_login)\n        signals.user_logged_out.connect(self.listener_logout)\n        signals.user_login_failed.connect(self.listener_login_failed)\n\n    def tearDown(self):\n        \"\"\"Disconnect the listeners\"\"\"\n        signals.user_logged_in.disconnect(self.listener_login)\n        signals.user_logged_out.disconnect(self.listener_logout)\n        signals.user_login_failed.disconnect(self.listener_login_failed)\n\n    def test_login(self):\n        # Only a successful login will trigger the success signal.\n        self.client.login(username='testclient', password='bad')\n        self.assertEqual(len(self.logged_in), 0)\n        self.assertEqual(len(self.login_failed), 1)\n        self.assertEqual(self.login_failed[0]['username'], 'testclient')\n        # verify the password is cleansed\n        self.assertTrue('***' in self.login_failed[0]['password'])\n\n        # Like this:\n        self.client.login(username='testclient', password='password')\n        self.assertEqual(len(self.logged_in), 1)\n        self.assertEqual(self.logged_in[0].username, 'testclient')\n\n        # Ensure there were no more failures.\n        self.assertEqual(len(self.login_failed), 1)\n\n    def test_logout_anonymous(self):\n        # The log_out function will still trigger the signal for anonymous\n        # users.\n        self.client.get('/logout/next_page/')\n        self.assertEqual(len(self.logged_out), 1)\n        self.assertEqual(self.logged_out[0], None)\n\n    def test_logout(self):\n        self.client.login(username='testclient', password='password')\n        self.client.get('/logout/next_page/')\n        self.assertEqual(len(self.logged_out), 1)\n        self.assertEqual(self.logged_out[0].username, 'testclient')\n\n    def test_update_last_login(self):\n        \"\"\"Ensure that only `last_login` is updated in `update_last_login`\"\"\"\n        user = User.objects.get(pk=3)\n        old_last_login = user.last_login\n\n        user.username = \"This username shouldn't get saved\"\n        request = RequestFactory().get('/login')\n        signals.user_logged_in.send(sender=user.__class__, request=request,\n            user=user)\n        user = User.objects.get(pk=3)\n        self.assertEqual(user.username, 'staff')\n        self.assertNotEqual(user.last_login, old_last_login)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/tests/templates/context_processors/auth_attrs_access.html",
    "content": "{{ user }}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/tests/templates/context_processors/auth_attrs_messages.html",
    "content": "{% for m in messages %}{{ m }}{% endfor %}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/tests/templates/context_processors/auth_attrs_no_access.html",
    "content": " \n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/tests/templates/context_processors/auth_attrs_perm_in_perms.html",
    "content": "{% if 'auth' in perms %}Has auth permissions{% endif %}\n{% if 'auth.add_permission' in perms %}Has auth.add_permission permissions{% endif %}\n{% if 'nonexisting' in perms %}nonexisting perm found{% endif %}\n{% if 'auth.nonexisting' in perms %}auth.nonexisting perm found{% endif %}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/tests/templates/context_processors/auth_attrs_perms.html",
    "content": "{% if perms.auth %}Has auth permissions{% endif %}\n{% if perms.auth.add_permission %}Has auth.add_permission permissions{% endif %}\n{% if perms.nonexisting %}nonexisting perm found{% endif %}\n{% if perms.auth.nonexisting in perms %}auth.nonexisting perm found{% endif %}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/tests/templates/context_processors/auth_attrs_test_access.html",
    "content": "{% if session_accessed %}Session accessed{% else %}Session not accessed{% endif %}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/tests/templates/context_processors/auth_attrs_user.html",
    "content": "unicode: {{ user }}\nid: {{ user.pk }}\nusername: {{ user.username }}\nurl: {% url 'userpage' user %}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/tests/templates/registration/logged_out.html",
    "content": "Logged out"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/tests/templates/registration/login.html",
    "content": "{{ form.as_ul }}"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/tests/templates/registration/password_change_form.html",
    "content": "{{ form }}"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/tests/templates/registration/password_reset_complete.html",
    "content": "Password reset successfully"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/tests/templates/registration/password_reset_confirm.html",
    "content": "{% if validlink %}\nPlease enter your new password: {{ form }}\n{% else %}\nThe password reset link was invalid\n{% endif %}"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/tests/templates/registration/password_reset_done.html",
    "content": "Email sent"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/tests/templates/registration/password_reset_email.html",
    "content": "{{ protocol }}://{{ domain }}/reset/{{ uid }}-{{ token }}/"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/tests/templates/registration/password_reset_form.html",
    "content": "{{ form }}"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/tests/templates/registration/password_reset_subject.txt",
    "content": "{% autoescape off %}Custom password reset on {{ site_name }}{% endautoescape %}"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/tests/tokens.py",
    "content": "import sys\nfrom datetime import date, timedelta\n\nfrom django.conf import settings\nfrom django.contrib.auth.models import User\nfrom django.contrib.auth.tokens import PasswordResetTokenGenerator\nfrom django.contrib.auth.tests.utils import skipIfCustomUser\nfrom django.test import TestCase\nfrom django.utils import unittest\n\n\n@skipIfCustomUser\nclass TokenGeneratorTest(TestCase):\n\n    def test_make_token(self):\n        \"\"\"\n        Ensure that we can make a token and that it is valid\n        \"\"\"\n        user = User.objects.create_user('tokentestuser', 'test2@example.com', 'testpw')\n        p0 = PasswordResetTokenGenerator()\n        tk1 = p0.make_token(user)\n        self.assertTrue(p0.check_token(user, tk1))\n\n    def test_10265(self):\n        \"\"\"\n        Ensure that the token generated for a user created in the same request\n        will work correctly.\n        \"\"\"\n        # See ticket #10265\n        user = User.objects.create_user('comebackkid', 'test3@example.com', 'testpw')\n        p0 = PasswordResetTokenGenerator()\n        tk1 = p0.make_token(user)\n        reload = User.objects.get(username='comebackkid')\n        tk2 = p0.make_token(reload)\n        self.assertEqual(tk1, tk2)\n\n    def test_timeout(self):\n        \"\"\"\n        Ensure we can use the token after n days, but no greater.\n        \"\"\"\n        # Uses a mocked version of PasswordResetTokenGenerator so we can change\n        # the value of 'today'\n        class Mocked(PasswordResetTokenGenerator):\n            def __init__(self, today):\n                self._today_val = today\n            def _today(self):\n                return self._today_val\n\n        user = User.objects.create_user('tokentestuser', 'test2@example.com', 'testpw')\n        p0 = PasswordResetTokenGenerator()\n        tk1 = p0.make_token(user)\n        p1 = Mocked(date.today() + timedelta(settings.PASSWORD_RESET_TIMEOUT_DAYS))\n        self.assertTrue(p1.check_token(user, tk1))\n\n        p2 = Mocked(date.today() + timedelta(settings.PASSWORD_RESET_TIMEOUT_DAYS + 1))\n        self.assertFalse(p2.check_token(user, tk1))\n\n    @unittest.skipIf(sys.version_info[:2] >= (3, 0), \"Unnecessary test with Python 3\")\n    def test_date_length(self):\n        \"\"\"\n        Make sure we don't allow overly long dates, causing a potential DoS.\n        \"\"\"\n        user = User.objects.create_user('ima1337h4x0r', 'test4@example.com', 'p4ssw0rd')\n        p0 = PasswordResetTokenGenerator()\n\n        # This will put a 14-digit base36 timestamp into the token, which is too large.\n        self.assertRaises(ValueError,\n                          p0._make_token_with_timestamp,\n                          user, 175455491841851871349)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/tests/urls.py",
    "content": "from django.conf.urls import patterns, url\nfrom django.contrib.auth import context_processors\nfrom django.contrib.auth.urls import urlpatterns\nfrom django.contrib.auth.views import password_reset\nfrom django.contrib.auth.decorators import login_required\nfrom django.contrib.messages.api import info\nfrom django.http import HttpResponse\nfrom django.shortcuts import render_to_response\nfrom django.template import Template, RequestContext\nfrom django.views.decorators.cache import never_cache\n\n@never_cache\ndef remote_user_auth_view(request):\n    \"Dummy view for remote user tests\"\n    t = Template(\"Username is {{ user }}.\")\n    c = RequestContext(request, {})\n    return HttpResponse(t.render(c))\n\ndef auth_processor_no_attr_access(request):\n    r1 = render_to_response('context_processors/auth_attrs_no_access.html',\n        RequestContext(request, {}, processors=[context_processors.auth]))\n    # *After* rendering, we check whether the session was accessed\n    return render_to_response('context_processors/auth_attrs_test_access.html',\n        {'session_accessed':request.session.accessed})\n\ndef auth_processor_attr_access(request):\n    r1 = render_to_response('context_processors/auth_attrs_access.html',\n        RequestContext(request, {}, processors=[context_processors.auth]))\n    return render_to_response('context_processors/auth_attrs_test_access.html',\n        {'session_accessed':request.session.accessed})\n\ndef auth_processor_user(request):\n    return render_to_response('context_processors/auth_attrs_user.html',\n        RequestContext(request, {}, processors=[context_processors.auth]))\n\ndef auth_processor_perms(request):\n    return render_to_response('context_processors/auth_attrs_perms.html',\n        RequestContext(request, {}, processors=[context_processors.auth]))\n\ndef auth_processor_perm_in_perms(request):\n    return render_to_response('context_processors/auth_attrs_perm_in_perms.html',\n        RequestContext(request, {}, processors=[context_processors.auth]))\n\ndef auth_processor_messages(request):\n    info(request, \"Message 1\")\n    return render_to_response('context_processors/auth_attrs_messages.html',\n         RequestContext(request, {}, processors=[context_processors.auth]))\n\ndef userpage(request):\n    pass\n\n# special urls for auth test cases\nurlpatterns = urlpatterns + patterns('',\n    (r'^logout/custom_query/$', 'django.contrib.auth.views.logout', dict(redirect_field_name='follow')),\n    (r'^logout/next_page/$', 'django.contrib.auth.views.logout', dict(next_page='/somewhere/')),\n    (r'^remote_user/$', remote_user_auth_view),\n    (r'^password_reset_from_email/$', 'django.contrib.auth.views.password_reset', dict(from_email='staffmember@example.com')),\n    (r'^admin_password_reset/$', 'django.contrib.auth.views.password_reset', dict(is_admin_site=True)),\n    (r'^login_required/$', login_required(password_reset)),\n    (r'^login_required_login_url/$', login_required(password_reset, login_url='/somewhere/')),\n\n    (r'^auth_processor_no_attr_access/$', auth_processor_no_attr_access),\n    (r'^auth_processor_attr_access/$', auth_processor_attr_access),\n    (r'^auth_processor_user/$', auth_processor_user),\n    (r'^auth_processor_perms/$', auth_processor_perms),\n    (r'^auth_processor_perm_in_perms/$', auth_processor_perm_in_perms),\n    (r'^auth_processor_messages/$', auth_processor_messages),\n    url(r'^userpage/(.+)/$', userpage, name=\"userpage\"),\n)\n\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/tests/urls_admin.py",
    "content": "\"\"\"\nTest URLs for auth admins.\n\"\"\"\n\nfrom django.conf.urls import patterns, include\nfrom django.contrib import admin\nfrom django.contrib.auth.admin import UserAdmin, GroupAdmin\nfrom django.contrib.auth.models import User, Group\nfrom django.contrib.auth.urls import urlpatterns\n\n# Create a silo'd admin site for just the user/group admins.\nsite = admin.AdminSite(name='auth_test_admin')\nsite.register(User, UserAdmin)\nsite.register(Group, GroupAdmin)\n\nurlpatterns = urlpatterns + patterns('',\n    (r'^admin/', include(site.urls)),\n)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/tests/utils.py",
    "content": "from django.conf import settings\nfrom django.utils.unittest import skipIf\n\n\ndef skipIfCustomUser(test_func):\n    \"\"\"\n    Skip a test if a custom user model is in use.\n    \"\"\"\n    return skipIf(settings.AUTH_USER_MODEL != 'auth.User', 'Custom user model in use')(test_func)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/tests/views.py",
    "content": "import os\nimport re\n\nfrom django.conf import global_settings, settings\nfrom django.contrib.sites.models import Site, RequestSite\nfrom django.contrib.auth.models import User\nfrom django.core import mail\nfrom django.core.exceptions import SuspiciousOperation\nfrom django.core.urlresolvers import reverse, NoReverseMatch\nfrom django.http import QueryDict\nfrom django.utils.encoding import force_text\nfrom django.utils.html import escape\nfrom django.utils.http import urlquote\nfrom django.utils._os import upath\nfrom django.test import TestCase\nfrom django.test.utils import override_settings\n\nfrom django.contrib.auth import SESSION_KEY, REDIRECT_FIELD_NAME\nfrom django.contrib.auth.forms import (AuthenticationForm, PasswordChangeForm,\n                SetPasswordForm, PasswordResetForm)\nfrom django.contrib.auth.tests.utils import skipIfCustomUser\n\n\n@override_settings(\n    LANGUAGES=(\n        ('en', 'English'),\n    ),\n    LANGUAGE_CODE='en',\n    TEMPLATE_LOADERS=global_settings.TEMPLATE_LOADERS,\n    TEMPLATE_DIRS=(\n        os.path.join(os.path.dirname(upath(__file__)), 'templates'),\n    ),\n    USE_TZ=False,\n    PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',),\n)\nclass AuthViewsTestCase(TestCase):\n    \"\"\"\n    Helper base class for all the follow test cases.\n    \"\"\"\n    fixtures = ['authtestdata.json']\n    urls = 'django.contrib.auth.tests.urls'\n\n    def login(self, password='password'):\n        response = self.client.post('/login/', {\n            'username': 'testclient',\n            'password': password,\n            })\n        self.assertEqual(response.status_code, 302)\n        self.assertTrue(response['Location'].endswith(settings.LOGIN_REDIRECT_URL))\n        self.assertTrue(SESSION_KEY in self.client.session)\n\n    def assertContainsEscaped(self, response, text, **kwargs):\n        return self.assertContains(response, escape(force_text(text)), **kwargs)\n\n\n@skipIfCustomUser\nclass AuthViewNamedURLTests(AuthViewsTestCase):\n    urls = 'django.contrib.auth.urls'\n\n    def test_named_urls(self):\n        \"Named URLs should be reversible\"\n        expected_named_urls = [\n            ('login', [], {}),\n            ('logout', [], {}),\n            ('password_change', [], {}),\n            ('password_change_done', [], {}),\n            ('password_reset', [], {}),\n            ('password_reset_done', [], {}),\n            ('password_reset_confirm', [], {\n                'uidb36': 'aaaaaaa',\n                'token': '1111-aaaaa',\n            }),\n            ('password_reset_complete', [], {}),\n        ]\n        for name, args, kwargs in expected_named_urls:\n            try:\n                reverse(name, args=args, kwargs=kwargs)\n            except NoReverseMatch:\n                self.fail(\"Reversal of url named '%s' failed with NoReverseMatch\" % name)\n\n\n@skipIfCustomUser\nclass PasswordResetTest(AuthViewsTestCase):\n\n    def test_email_not_found(self):\n        \"Error is raised if the provided email address isn't currently registered\"\n        response = self.client.get('/password_reset/')\n        self.assertEqual(response.status_code, 200)\n        response = self.client.post('/password_reset/', {'email': 'not_a_real_email@email.com'})\n        self.assertContainsEscaped(response, PasswordResetForm.error_messages['unknown'])\n        self.assertEqual(len(mail.outbox), 0)\n\n    def test_email_found(self):\n        \"Email is sent if a valid email address is provided for password reset\"\n        response = self.client.post('/password_reset/', {'email': 'staffmember@example.com'})\n        self.assertEqual(response.status_code, 302)\n        self.assertEqual(len(mail.outbox), 1)\n        self.assertTrue(\"http://\" in mail.outbox[0].body)\n        self.assertEqual(settings.DEFAULT_FROM_EMAIL, mail.outbox[0].from_email)\n\n    def test_email_found_custom_from(self):\n        \"Email is sent if a valid email address is provided for password reset when a custom from_email is provided.\"\n        response = self.client.post('/password_reset_from_email/', {'email': 'staffmember@example.com'})\n        self.assertEqual(response.status_code, 302)\n        self.assertEqual(len(mail.outbox), 1)\n        self.assertEqual(\"staffmember@example.com\", mail.outbox[0].from_email)\n\n    @override_settings(ALLOWED_HOSTS=['adminsite.com'])\n    def test_admin_reset(self):\n        \"If the reset view is marked as being for admin, the HTTP_HOST header is used for a domain override.\"\n        response = self.client.post('/admin_password_reset/',\n            {'email': 'staffmember@example.com'},\n            HTTP_HOST='adminsite.com'\n        )\n        self.assertEqual(response.status_code, 302)\n        self.assertEqual(len(mail.outbox), 1)\n        self.assertTrue(\"http://adminsite.com\" in mail.outbox[0].body)\n        self.assertEqual(settings.DEFAULT_FROM_EMAIL, mail.outbox[0].from_email)\n\n    # Skip any 500 handler action (like sending more mail...)\n    @override_settings(DEBUG_PROPAGATE_EXCEPTIONS=True)\n    def test_poisoned_http_host(self):\n        \"Poisoned HTTP_HOST headers can't be used for reset emails\"\n        # This attack is based on the way browsers handle URLs. The colon\n        # should be used to separate the port, but if the URL contains an @,\n        # the colon is interpreted as part of a username for login purposes,\n        # making 'evil.com' the request domain. Since HTTP_HOST is used to\n        # produce a meaningful reset URL, we need to be certain that the\n        # HTTP_HOST header isn't poisoned. This is done as a check when get_host()\n        # is invoked, but we check here as a practical consequence.\n        with self.assertRaises(SuspiciousOperation):\n            self.client.post('/password_reset/',\n                {'email': 'staffmember@example.com'},\n                HTTP_HOST='www.example:dr.frankenstein@evil.tld'\n            )\n        self.assertEqual(len(mail.outbox), 0)\n\n    # Skip any 500 handler action (like sending more mail...)\n    @override_settings(DEBUG_PROPAGATE_EXCEPTIONS=True)\n    def test_poisoned_http_host_admin_site(self):\n        \"Poisoned HTTP_HOST headers can't be used for reset emails on admin views\"\n        with self.assertRaises(SuspiciousOperation):\n            self.client.post('/admin_password_reset/',\n                {'email': 'staffmember@example.com'},\n                HTTP_HOST='www.example:dr.frankenstein@evil.tld'\n            )\n        self.assertEqual(len(mail.outbox), 0)\n\n    def _test_confirm_start(self):\n        # Start by creating the email\n        response = self.client.post('/password_reset/', {'email': 'staffmember@example.com'})\n        self.assertEqual(response.status_code, 302)\n        self.assertEqual(len(mail.outbox), 1)\n        return self._read_signup_email(mail.outbox[0])\n\n    def _read_signup_email(self, email):\n        urlmatch = re.search(r\"https?://[^/]*(/.*reset/\\S*)\", email.body)\n        self.assertTrue(urlmatch is not None, \"No URL found in sent email\")\n        return urlmatch.group(), urlmatch.groups()[0]\n\n    def test_confirm_valid(self):\n        url, path = self._test_confirm_start()\n        response = self.client.get(path)\n        # redirect to a 'complete' page:\n        self.assertContains(response, \"Please enter your new password\")\n\n    def test_confirm_invalid(self):\n        url, path = self._test_confirm_start()\n        # Let's munge the token in the path, but keep the same length,\n        # in case the URLconf will reject a different length.\n        path = path[:-5] + (\"0\" * 4) + path[-1]\n\n        response = self.client.get(path)\n        self.assertContains(response, \"The password reset link was invalid\")\n\n    def test_confirm_invalid_user(self):\n        # Ensure that we get a 200 response for a non-existant user, not a 404\n        response = self.client.get('/reset/123456-1-1/')\n        self.assertContains(response, \"The password reset link was invalid\")\n\n    def test_confirm_overflow_user(self):\n        # Ensure that we get a 200 response for a base36 user id that overflows int\n        response = self.client.get('/reset/zzzzzzzzzzzzz-1-1/')\n        self.assertContains(response, \"The password reset link was invalid\")\n\n    def test_confirm_invalid_post(self):\n        # Same as test_confirm_invalid, but trying\n        # to do a POST instead.\n        url, path = self._test_confirm_start()\n        path = path[:-5] + (\"0\" * 4) + path[-1]\n\n        self.client.post(path, {\n            'new_password1': 'anewpassword',\n            'new_password2': ' anewpassword',\n        })\n        # Check the password has not been changed\n        u = User.objects.get(email='staffmember@example.com')\n        self.assertTrue(not u.check_password(\"anewpassword\"))\n\n    def test_confirm_complete(self):\n        url, path = self._test_confirm_start()\n        response = self.client.post(path, {'new_password1': 'anewpassword',\n                                           'new_password2': 'anewpassword'})\n        # It redirects us to a 'complete' page:\n        self.assertEqual(response.status_code, 302)\n        # Check the password has been changed\n        u = User.objects.get(email='staffmember@example.com')\n        self.assertTrue(u.check_password(\"anewpassword\"))\n\n        # Check we can't use the link again\n        response = self.client.get(path)\n        self.assertContains(response, \"The password reset link was invalid\")\n\n    def test_confirm_different_passwords(self):\n        url, path = self._test_confirm_start()\n        response = self.client.post(path, {'new_password1': 'anewpassword',\n                                           'new_password2': 'x'})\n        self.assertContainsEscaped(response, SetPasswordForm.error_messages['password_mismatch'])\n\n\n@override_settings(AUTH_USER_MODEL='auth.CustomUser')\nclass CustomUserPasswordResetTest(AuthViewsTestCase):\n    fixtures = ['custom_user.json']\n\n    def _test_confirm_start(self):\n        # Start by creating the email\n        response = self.client.post('/password_reset/', {'email': 'staffmember@example.com'})\n        self.assertEqual(response.status_code, 302)\n        self.assertEqual(len(mail.outbox), 1)\n        return self._read_signup_email(mail.outbox[0])\n\n    def _read_signup_email(self, email):\n        urlmatch = re.search(r\"https?://[^/]*(/.*reset/\\S*)\", email.body)\n        self.assertTrue(urlmatch is not None, \"No URL found in sent email\")\n        return urlmatch.group(), urlmatch.groups()[0]\n\n    def test_confirm_valid_custom_user(self):\n        url, path = self._test_confirm_start()\n        response = self.client.get(path)\n        # redirect to a 'complete' page:\n        self.assertContains(response, \"Please enter your new password\")\n\n\n@skipIfCustomUser\nclass ChangePasswordTest(AuthViewsTestCase):\n\n    def fail_login(self, password='password'):\n        response = self.client.post('/login/', {\n            'username': 'testclient',\n            'password': password,\n        })\n        self.assertContainsEscaped(response, AuthenticationForm.error_messages['invalid_login'] % {\n                'username': User._meta.get_field('username').verbose_name\n            })\n\n    def logout(self):\n        response = self.client.get('/logout/')\n\n    def test_password_change_fails_with_invalid_old_password(self):\n        self.login()\n        response = self.client.post('/password_change/', {\n            'old_password': 'donuts',\n            'new_password1': 'password1',\n            'new_password2': 'password1',\n        })\n        self.assertContainsEscaped(response, PasswordChangeForm.error_messages['password_incorrect'])\n\n    def test_password_change_fails_with_mismatched_passwords(self):\n        self.login()\n        response = self.client.post('/password_change/', {\n            'old_password': 'password',\n            'new_password1': 'password1',\n            'new_password2': 'donuts',\n        })\n        self.assertContainsEscaped(response, SetPasswordForm.error_messages['password_mismatch'])\n\n    def test_password_change_succeeds(self):\n        self.login()\n        response = self.client.post('/password_change/', {\n            'old_password': 'password',\n            'new_password1': 'password1',\n            'new_password2': 'password1',\n        })\n        self.assertEqual(response.status_code, 302)\n        self.assertTrue(response['Location'].endswith('/password_change/done/'))\n        self.fail_login()\n        self.login(password='password1')\n\n    def test_password_change_done_succeeds(self):\n        self.login()\n        response = self.client.post('/password_change/', {\n            'old_password': 'password',\n            'new_password1': 'password1',\n            'new_password2': 'password1',\n        })\n        self.assertEqual(response.status_code, 302)\n        self.assertTrue(response['Location'].endswith('/password_change/done/'))\n\n    def test_password_change_done_fails(self):\n        with self.settings(LOGIN_URL='/login/'):\n            response = self.client.get('/password_change/done/')\n            self.assertEqual(response.status_code, 302)\n            self.assertTrue(response['Location'].endswith('/login/?next=/password_change/done/'))\n\n\n@skipIfCustomUser\nclass LoginTest(AuthViewsTestCase):\n\n    def test_current_site_in_context_after_login(self):\n        response = self.client.get(reverse('django.contrib.auth.views.login'))\n        self.assertEqual(response.status_code, 200)\n        if Site._meta.installed:\n            site = Site.objects.get_current()\n            self.assertEqual(response.context['site'], site)\n            self.assertEqual(response.context['site_name'], site.name)\n        else:\n            self.assertIsInstance(response.context['site'], RequestSite)\n        self.assertTrue(isinstance(response.context['form'], AuthenticationForm),\n                     'Login form is not an AuthenticationForm')\n\n    def test_security_check(self, password='password'):\n        login_url = reverse('django.contrib.auth.views.login')\n\n        # Those URLs should not pass the security check\n        for bad_url in ('http://example.com',\n                        'https://example.com',\n                        'ftp://exampel.com',\n                        '//example.com'):\n\n            nasty_url = '%(url)s?%(next)s=%(bad_url)s' % {\n                'url': login_url,\n                'next': REDIRECT_FIELD_NAME,\n                'bad_url': urlquote(bad_url),\n            }\n            response = self.client.post(nasty_url, {\n                'username': 'testclient',\n                'password': password,\n            })\n            self.assertEqual(response.status_code, 302)\n            self.assertFalse(bad_url in response['Location'],\n                             \"%s should be blocked\" % bad_url)\n\n        # These URLs *should* still pass the security check\n        for good_url in ('/view/?param=http://example.com',\n                         '/view/?param=https://example.com',\n                         '/view?param=ftp://exampel.com',\n                         'view/?param=//example.com',\n                         'https:///',\n                         '//testserver/',\n                         '/url%20with%20spaces/'):  # see ticket #12534\n            safe_url = '%(url)s?%(next)s=%(good_url)s' % {\n                'url': login_url,\n                'next': REDIRECT_FIELD_NAME,\n                'good_url': urlquote(good_url),\n            }\n            response = self.client.post(safe_url, {\n                    'username': 'testclient',\n                    'password': password,\n            })\n            self.assertEqual(response.status_code, 302)\n            self.assertTrue(good_url in response['Location'],\n                            \"%s should be allowed\" % good_url)\n\n\n@skipIfCustomUser\nclass LoginURLSettings(AuthViewsTestCase):\n\n    def setUp(self):\n        super(LoginURLSettings, self).setUp()\n        self.old_LOGIN_URL = settings.LOGIN_URL\n\n    def tearDown(self):\n        super(LoginURLSettings, self).tearDown()\n        settings.LOGIN_URL = self.old_LOGIN_URL\n\n    def get_login_required_url(self, login_url):\n        settings.LOGIN_URL = login_url\n        response = self.client.get('/login_required/')\n        self.assertEqual(response.status_code, 302)\n        return response['Location']\n\n    def test_standard_login_url(self):\n        login_url = '/login/'\n        login_required_url = self.get_login_required_url(login_url)\n        querystring = QueryDict('', mutable=True)\n        querystring['next'] = '/login_required/'\n        self.assertEqual(login_required_url, 'http://testserver%s?%s' %\n                         (login_url, querystring.urlencode('/')))\n\n    def test_remote_login_url(self):\n        login_url = 'http://remote.example.com/login'\n        login_required_url = self.get_login_required_url(login_url)\n        querystring = QueryDict('', mutable=True)\n        querystring['next'] = 'http://testserver/login_required/'\n        self.assertEqual(login_required_url,\n                         '%s?%s' % (login_url, querystring.urlencode('/')))\n\n    def test_https_login_url(self):\n        login_url = 'https:///login/'\n        login_required_url = self.get_login_required_url(login_url)\n        querystring = QueryDict('', mutable=True)\n        querystring['next'] = 'http://testserver/login_required/'\n        self.assertEqual(login_required_url,\n                         '%s?%s' % (login_url, querystring.urlencode('/')))\n\n    def test_login_url_with_querystring(self):\n        login_url = '/login/?pretty=1'\n        login_required_url = self.get_login_required_url(login_url)\n        querystring = QueryDict('pretty=1', mutable=True)\n        querystring['next'] = '/login_required/'\n        self.assertEqual(login_required_url, 'http://testserver/login/?%s' %\n                         querystring.urlencode('/'))\n\n    def test_remote_login_url_with_next_querystring(self):\n        login_url = 'http://remote.example.com/login/'\n        login_required_url = self.get_login_required_url('%s?next=/default/' %\n                                                         login_url)\n        querystring = QueryDict('', mutable=True)\n        querystring['next'] = 'http://testserver/login_required/'\n        self.assertEqual(login_required_url, '%s?%s' % (login_url,\n                                                    querystring.urlencode('/')))\n\n\n@skipIfCustomUser\nclass LogoutTest(AuthViewsTestCase):\n\n    def confirm_logged_out(self):\n        self.assertTrue(SESSION_KEY not in self.client.session)\n\n    def test_logout_default(self):\n        \"Logout without next_page option renders the default template\"\n        self.login()\n        response = self.client.get('/logout/')\n        self.assertContains(response, 'Logged out')\n        self.confirm_logged_out()\n\n    def test_14377(self):\n        # Bug 14377\n        self.login()\n        response = self.client.get('/logout/')\n        self.assertTrue('site' in response.context)\n\n    def test_logout_with_overridden_redirect_url(self):\n        # Bug 11223\n        self.login()\n        response = self.client.get('/logout/next_page/')\n        self.assertEqual(response.status_code, 302)\n        self.assertTrue(response['Location'].endswith('/somewhere/'))\n\n        response = self.client.get('/logout/next_page/?next=/login/')\n        self.assertEqual(response.status_code, 302)\n        self.assertTrue(response['Location'].endswith('/login/'))\n\n        self.confirm_logged_out()\n\n    def test_logout_with_next_page_specified(self):\n        \"Logout with next_page option given redirects to specified resource\"\n        self.login()\n        response = self.client.get('/logout/next_page/')\n        self.assertEqual(response.status_code, 302)\n        self.assertTrue(response['Location'].endswith('/somewhere/'))\n        self.confirm_logged_out()\n\n    def test_logout_with_redirect_argument(self):\n        \"Logout with query string redirects to specified resource\"\n        self.login()\n        response = self.client.get('/logout/?next=/login/')\n        self.assertEqual(response.status_code, 302)\n        self.assertTrue(response['Location'].endswith('/login/'))\n        self.confirm_logged_out()\n\n    def test_logout_with_custom_redirect_argument(self):\n        \"Logout with custom query string redirects to specified resource\"\n        self.login()\n        response = self.client.get('/logout/custom_query/?follow=/somewhere/')\n        self.assertEqual(response.status_code, 302)\n        self.assertTrue(response['Location'].endswith('/somewhere/'))\n        self.confirm_logged_out()\n\n    def test_security_check(self, password='password'):\n        logout_url = reverse('django.contrib.auth.views.logout')\n\n        # Those URLs should not pass the security check\n        for bad_url in ('http://example.com',\n                        'https://example.com',\n                        'ftp://exampel.com',\n                        '//example.com'):\n            nasty_url = '%(url)s?%(next)s=%(bad_url)s' % {\n                'url': logout_url,\n                'next': REDIRECT_FIELD_NAME,\n                'bad_url': urlquote(bad_url),\n            }\n            self.login()\n            response = self.client.get(nasty_url)\n            self.assertEqual(response.status_code, 302)\n            self.assertFalse(bad_url in response['Location'],\n                             \"%s should be blocked\" % bad_url)\n            self.confirm_logged_out()\n\n        # These URLs *should* still pass the security check\n        for good_url in ('/view/?param=http://example.com',\n                         '/view/?param=https://example.com',\n                         '/view?param=ftp://exampel.com',\n                         'view/?param=//example.com',\n                         'https:///',\n                         '//testserver/',\n                         '/url%20with%20spaces/'):  # see ticket #12534\n            safe_url = '%(url)s?%(next)s=%(good_url)s' % {\n                'url': logout_url,\n                'next': REDIRECT_FIELD_NAME,\n                'good_url': urlquote(good_url),\n            }\n            self.login()\n            response = self.client.get(safe_url)\n            self.assertEqual(response.status_code, 302)\n            self.assertTrue(good_url in response['Location'],\n                            \"%s should be allowed\" % good_url)\n            self.confirm_logged_out()\n\n@skipIfCustomUser\nclass ChangelistTests(AuthViewsTestCase):\n    urls = 'django.contrib.auth.tests.urls_admin'\n\n    # #20078 - users shouldn't be allowed to guess password hashes via\n    # repeated password__startswith queries.\n    def test_changelist_disallows_password_lookups(self):\n        # Make me a superuser before loging in.\n        User.objects.filter(username='testclient').update(is_staff=True, is_superuser=True)\n        self.login()\n\n        # A lookup that tries to filter on password isn't OK\n        with self.assertRaises(SuspiciousOperation):\n            response = self.client.get('/admin/auth/user/?password__startswith=sha1$')\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/tokens.py",
    "content": "from datetime import date\nfrom django.conf import settings\nfrom django.utils.http import int_to_base36, base36_to_int\nfrom django.utils.crypto import constant_time_compare, salted_hmac\nfrom django.utils import six\n\n\nclass PasswordResetTokenGenerator(object):\n    \"\"\"\n    Strategy object used to generate and check tokens for the password\n    reset mechanism.\n    \"\"\"\n    def make_token(self, user):\n        \"\"\"\n        Returns a token that can be used once to do a password reset\n        for the given user.\n        \"\"\"\n        return self._make_token_with_timestamp(user, self._num_days(self._today()))\n\n    def check_token(self, user, token):\n        \"\"\"\n        Check that a password reset token is correct for a given user.\n        \"\"\"\n        # Parse the token\n        try:\n            ts_b36, hash = token.split(\"-\")\n        except ValueError:\n            return False\n\n        try:\n            ts = base36_to_int(ts_b36)\n        except ValueError:\n            return False\n\n        # Check that the timestamp/uid has not been tampered with\n        if not constant_time_compare(self._make_token_with_timestamp(user, ts), token):\n            return False\n\n        # Check the timestamp is within limit\n        if (self._num_days(self._today()) - ts) > settings.PASSWORD_RESET_TIMEOUT_DAYS:\n            return False\n\n        return True\n\n    def _make_token_with_timestamp(self, user, timestamp):\n        # timestamp is number of days since 2001-1-1.  Converted to\n        # base 36, this gives us a 3 digit string until about 2121\n        ts_b36 = int_to_base36(timestamp)\n\n        # By hashing on the internal state of the user and using state\n        # that is sure to change (the password salt will change as soon as\n        # the password is set, at least for current Django auth, and\n        # last_login will also change), we produce a hash that will be\n        # invalid as soon as it is used.\n        # We limit the hash to 20 chars to keep URL short\n        key_salt = \"django.contrib.auth.tokens.PasswordResetTokenGenerator\"\n\n        # Ensure results are consistent across DB backends\n        login_timestamp = user.last_login.replace(microsecond=0, tzinfo=None)\n\n        value = (six.text_type(user.pk) + user.password +\n                six.text_type(login_timestamp) + six.text_type(timestamp))\n        hash = salted_hmac(key_salt, value).hexdigest()[::2]\n        return \"%s-%s\" % (ts_b36, hash)\n\n    def _num_days(self, dt):\n        return (dt - date(2001, 1, 1)).days\n\n    def _today(self):\n        # Used for mocking in tests\n        return date.today()\n\ndefault_token_generator = PasswordResetTokenGenerator()\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/urls.py",
    "content": "# The views used below are normally mapped in django.contrib.admin.urls.py\n# This URLs file is used to provide a reliable view deployment for test purposes.\n# It is also provided as a convenience to those who want to deploy these URLs\n# elsewhere.\n\nfrom django.conf.urls import patterns, url\n\nurlpatterns = patterns('',\n    url(r'^login/$', 'django.contrib.auth.views.login', name='login'),\n    url(r'^logout/$', 'django.contrib.auth.views.logout', name='logout'),\n    url(r'^password_change/$', 'django.contrib.auth.views.password_change', name='password_change'),\n    url(r'^password_change/done/$', 'django.contrib.auth.views.password_change_done', name='password_change_done'),\n    url(r'^password_reset/$', 'django.contrib.auth.views.password_reset', name='password_reset'),\n    url(r'^password_reset/done/$', 'django.contrib.auth.views.password_reset_done', name='password_reset_done'),\n    url(r'^reset/(?P<uidb36>[0-9A-Za-z]{1,13})-(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$',\n        'django.contrib.auth.views.password_reset_confirm',\n        name='password_reset_confirm'),\n    url(r'^reset/done/$', 'django.contrib.auth.views.password_reset_complete', name='password_reset_complete'),\n)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/auth/views.py",
    "content": "try:\n    from urllib.parse import urlparse, urlunparse\nexcept ImportError:     # Python 2\n    from urlparse import urlparse, urlunparse\n\nfrom django.conf import settings\nfrom django.core.urlresolvers import reverse\nfrom django.http import HttpResponseRedirect, QueryDict\nfrom django.template.response import TemplateResponse\nfrom django.utils.http import base36_to_int, is_safe_url\nfrom django.utils.translation import ugettext as _\nfrom django.shortcuts import resolve_url\nfrom django.views.decorators.debug import sensitive_post_parameters\nfrom django.views.decorators.cache import never_cache\nfrom django.views.decorators.csrf import csrf_protect\n\n# Avoid shadowing the login() and logout() views below.\nfrom django.contrib.auth import REDIRECT_FIELD_NAME, login as auth_login, logout as auth_logout, get_user_model\nfrom django.contrib.auth.decorators import login_required\nfrom django.contrib.auth.forms import AuthenticationForm, PasswordResetForm, SetPasswordForm, PasswordChangeForm\nfrom django.contrib.auth.tokens import default_token_generator\nfrom django.contrib.sites.models import get_current_site\n\n\n@sensitive_post_parameters()\n@csrf_protect\n@never_cache\ndef login(request, template_name='registration/login.html',\n          redirect_field_name=REDIRECT_FIELD_NAME,\n          authentication_form=AuthenticationForm,\n          current_app=None, extra_context=None):\n    \"\"\"\n    Displays the login form and handles the login action.\n    \"\"\"\n    redirect_to = request.REQUEST.get(redirect_field_name, '')\n\n    if request.method == \"POST\":\n        form = authentication_form(data=request.POST)\n        if form.is_valid():\n\n            # Ensure the user-originating redirection url is safe.\n            if not is_safe_url(url=redirect_to, host=request.get_host()):\n                redirect_to = resolve_url(settings.LOGIN_REDIRECT_URL)\n\n            # Okay, security check complete. Log the user in.\n            auth_login(request, form.get_user())\n\n            if request.session.test_cookie_worked():\n                request.session.delete_test_cookie()\n\n            return HttpResponseRedirect(redirect_to)\n    else:\n        form = authentication_form(request)\n\n    request.session.set_test_cookie()\n\n    current_site = get_current_site(request)\n\n    context = {\n        'form': form,\n        redirect_field_name: redirect_to,\n        'site': current_site,\n        'site_name': current_site.name,\n    }\n    if extra_context is not None:\n        context.update(extra_context)\n    return TemplateResponse(request, template_name, context,\n                            current_app=current_app)\n\n\ndef logout(request, next_page=None,\n           template_name='registration/logged_out.html',\n           redirect_field_name=REDIRECT_FIELD_NAME,\n           current_app=None, extra_context=None):\n    \"\"\"\n    Logs out the user and displays 'You are logged out' message.\n    \"\"\"\n    auth_logout(request)\n\n    if redirect_field_name in request.REQUEST:\n        next_page = request.REQUEST[redirect_field_name]\n        # Security check -- don't allow redirection to a different host.\n        if not is_safe_url(url=next_page, host=request.get_host()):\n            next_page = request.path\n\n    if next_page:\n        # Redirect to this page until the session has been cleared.\n        return HttpResponseRedirect(next_page)\n\n    current_site = get_current_site(request)\n    context = {\n        'site': current_site,\n        'site_name': current_site.name,\n        'title': _('Logged out')\n    }\n    if extra_context is not None:\n        context.update(extra_context)\n    return TemplateResponse(request, template_name, context,\n        current_app=current_app)\n\n\ndef logout_then_login(request, login_url=None, current_app=None, extra_context=None):\n    \"\"\"\n    Logs out the user if he is logged in. Then redirects to the log-in page.\n    \"\"\"\n    if not login_url:\n        login_url = settings.LOGIN_URL\n    login_url = resolve_url(login_url)\n    return logout(request, login_url, current_app=current_app, extra_context=extra_context)\n\n\ndef redirect_to_login(next, login_url=None,\n                      redirect_field_name=REDIRECT_FIELD_NAME):\n    \"\"\"\n    Redirects the user to the login page, passing the given 'next' page\n    \"\"\"\n    resolved_url = resolve_url(login_url or settings.LOGIN_URL)\n\n    login_url_parts = list(urlparse(resolved_url))\n    if redirect_field_name:\n        querystring = QueryDict(login_url_parts[4], mutable=True)\n        querystring[redirect_field_name] = next\n        login_url_parts[4] = querystring.urlencode(safe='/')\n\n    return HttpResponseRedirect(urlunparse(login_url_parts))\n\n\n# 4 views for password reset:\n# - password_reset sends the mail\n# - password_reset_done shows a success message for the above\n# - password_reset_confirm checks the link the user clicked and\n#   prompts for a new password\n# - password_reset_complete shows a success message for the above\n\n@csrf_protect\ndef password_reset(request, is_admin_site=False,\n                   template_name='registration/password_reset_form.html',\n                   email_template_name='registration/password_reset_email.html',\n                   subject_template_name='registration/password_reset_subject.txt',\n                   password_reset_form=PasswordResetForm,\n                   token_generator=default_token_generator,\n                   post_reset_redirect=None,\n                   from_email=None,\n                   current_app=None,\n                   extra_context=None):\n    if post_reset_redirect is None:\n        post_reset_redirect = reverse('django.contrib.auth.views.password_reset_done')\n    if request.method == \"POST\":\n        form = password_reset_form(request.POST)\n        if form.is_valid():\n            opts = {\n                'use_https': request.is_secure(),\n                'token_generator': token_generator,\n                'from_email': from_email,\n                'email_template_name': email_template_name,\n                'subject_template_name': subject_template_name,\n                'request': request,\n            }\n            if is_admin_site:\n                opts = dict(opts, domain_override=request.get_host())\n            form.save(**opts)\n            return HttpResponseRedirect(post_reset_redirect)\n    else:\n        form = password_reset_form()\n    context = {\n        'form': form,\n    }\n    if extra_context is not None:\n        context.update(extra_context)\n    return TemplateResponse(request, template_name, context,\n                            current_app=current_app)\n\n\ndef password_reset_done(request,\n                        template_name='registration/password_reset_done.html',\n                        current_app=None, extra_context=None):\n    context = {}\n    if extra_context is not None:\n        context.update(extra_context)\n    return TemplateResponse(request, template_name, context,\n                            current_app=current_app)\n\n\n# Doesn't need csrf_protect since no-one can guess the URL\n@sensitive_post_parameters()\n@never_cache\ndef password_reset_confirm(request, uidb36=None, token=None,\n                           template_name='registration/password_reset_confirm.html',\n                           token_generator=default_token_generator,\n                           set_password_form=SetPasswordForm,\n                           post_reset_redirect=None,\n                           current_app=None, extra_context=None):\n    \"\"\"\n    View that checks the hash in a password reset link and presents a\n    form for entering a new password.\n    \"\"\"\n    UserModel = get_user_model()\n    assert uidb36 is not None and token is not None  # checked by URLconf\n    if post_reset_redirect is None:\n        post_reset_redirect = reverse('django.contrib.auth.views.password_reset_complete')\n    try:\n        uid_int = base36_to_int(uidb36)\n        user = UserModel._default_manager.get(pk=uid_int)\n    except (ValueError, OverflowError, UserModel.DoesNotExist):\n        user = None\n\n    if user is not None and token_generator.check_token(user, token):\n        validlink = True\n        if request.method == 'POST':\n            form = set_password_form(user, request.POST)\n            if form.is_valid():\n                form.save()\n                return HttpResponseRedirect(post_reset_redirect)\n        else:\n            form = set_password_form(None)\n    else:\n        validlink = False\n        form = None\n    context = {\n        'form': form,\n        'validlink': validlink,\n    }\n    if extra_context is not None:\n        context.update(extra_context)\n    return TemplateResponse(request, template_name, context,\n                            current_app=current_app)\n\n\ndef password_reset_complete(request,\n                            template_name='registration/password_reset_complete.html',\n                            current_app=None, extra_context=None):\n    context = {\n        'login_url': resolve_url(settings.LOGIN_URL)\n    }\n    if extra_context is not None:\n        context.update(extra_context)\n    return TemplateResponse(request, template_name, context,\n                            current_app=current_app)\n\n\n@sensitive_post_parameters()\n@csrf_protect\n@login_required\ndef password_change(request,\n                    template_name='registration/password_change_form.html',\n                    post_change_redirect=None,\n                    password_change_form=PasswordChangeForm,\n                    current_app=None, extra_context=None):\n    if post_change_redirect is None:\n        post_change_redirect = reverse('django.contrib.auth.views.password_change_done')\n    if request.method == \"POST\":\n        form = password_change_form(user=request.user, data=request.POST)\n        if form.is_valid():\n            form.save()\n            return HttpResponseRedirect(post_change_redirect)\n    else:\n        form = password_change_form(user=request.user)\n    context = {\n        'form': form,\n    }\n    if extra_context is not None:\n        context.update(extra_context)\n    return TemplateResponse(request, template_name, context,\n                            current_app=current_app)\n\n\n@login_required\ndef password_change_done(request,\n                         template_name='registration/password_change_done.html',\n                         current_app=None, extra_context=None):\n    context = {}\n    if extra_context is not None:\n        context.update(extra_context)\n    return TemplateResponse(request, template_name, context,\n                            current_app=current_app)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/__init__.py",
    "content": "from django.conf import settings\nfrom django.core import urlresolvers\nfrom django.core.exceptions import ImproperlyConfigured\nfrom django.contrib.comments.models import Comment\nfrom django.contrib.comments.forms import CommentForm\nfrom django.utils.importlib import import_module\n\nDEFAULT_COMMENTS_APP = 'django.contrib.comments'\n\ndef get_comment_app():\n    \"\"\"\n    Get the comment app (i.e. \"django.contrib.comments\") as defined in the settings\n    \"\"\"\n    # Make sure the app's in INSTALLED_APPS\n    comments_app = get_comment_app_name()\n    if comments_app not in settings.INSTALLED_APPS:\n        raise ImproperlyConfigured(\"The COMMENTS_APP (%r) \"\\\n                                   \"must be in INSTALLED_APPS\" % settings.COMMENTS_APP)\n\n    # Try to import the package\n    try:\n        package = import_module(comments_app)\n    except ImportError as e:\n        raise ImproperlyConfigured(\"The COMMENTS_APP setting refers to \"\\\n                                   \"a non-existing package. (%s)\" % e)\n\n    return package\n\ndef get_comment_app_name():\n    \"\"\"\n    Returns the name of the comment app (either the setting value, if it\n    exists, or the default).\n    \"\"\"\n    return getattr(settings, 'COMMENTS_APP', DEFAULT_COMMENTS_APP)\n\ndef get_model():\n    \"\"\"\n    Returns the comment model class.\n    \"\"\"\n    if get_comment_app_name() != DEFAULT_COMMENTS_APP and hasattr(get_comment_app(), \"get_model\"):\n        return get_comment_app().get_model()\n    else:\n        return Comment\n\ndef get_form():\n    \"\"\"\n    Returns the comment ModelForm class.\n    \"\"\"\n    if get_comment_app_name() != DEFAULT_COMMENTS_APP and hasattr(get_comment_app(), \"get_form\"):\n        return get_comment_app().get_form()\n    else:\n        return CommentForm\n\ndef get_form_target():\n    \"\"\"\n    Returns the target URL for the comment form submission view.\n    \"\"\"\n    if get_comment_app_name() != DEFAULT_COMMENTS_APP and hasattr(get_comment_app(), \"get_form_target\"):\n        return get_comment_app().get_form_target()\n    else:\n        return urlresolvers.reverse(\"django.contrib.comments.views.comments.post_comment\")\n\ndef get_flag_url(comment):\n    \"\"\"\n    Get the URL for the \"flag this comment\" view.\n    \"\"\"\n    if get_comment_app_name() != DEFAULT_COMMENTS_APP and hasattr(get_comment_app(), \"get_flag_url\"):\n        return get_comment_app().get_flag_url(comment)\n    else:\n        return urlresolvers.reverse(\"django.contrib.comments.views.moderation.flag\",\n                                    args=(comment.id,))\n\ndef get_delete_url(comment):\n    \"\"\"\n    Get the URL for the \"delete this comment\" view.\n    \"\"\"\n    if get_comment_app_name() != DEFAULT_COMMENTS_APP and hasattr(get_comment_app(), \"get_delete_url\"):\n        return get_comment_app().get_delete_url(comment)\n    else:\n        return urlresolvers.reverse(\"django.contrib.comments.views.moderation.delete\",\n                                    args=(comment.id,))\n\ndef get_approve_url(comment):\n    \"\"\"\n    Get the URL for the \"approve this comment from moderation\" view.\n    \"\"\"\n    if get_comment_app_name() != DEFAULT_COMMENTS_APP and hasattr(get_comment_app(), \"get_approve_url\"):\n        return get_comment_app().get_approve_url(comment)\n    else:\n        return urlresolvers.reverse(\"django.contrib.comments.views.moderation.approve\",\n                                    args=(comment.id,))\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/admin.py",
    "content": "from __future__ import unicode_literals\n\nfrom django.contrib import admin\nfrom django.contrib.auth import get_user_model\nfrom django.contrib.comments.models import Comment\nfrom django.utils.translation import ugettext_lazy as _, ungettext\nfrom django.contrib.comments import get_model\nfrom django.contrib.comments.views.moderation import perform_flag, perform_approve, perform_delete\n\n\nclass UsernameSearch(object):\n    \"\"\"The User object may not be auth.User, so we need to provide\n    a mechanism for issuing the equivalent of a .filter(user__username=...)\n    search in CommentAdmin.\n    \"\"\"\n    def __str__(self):\n        return 'user__%s' % get_user_model().USERNAME_FIELD\n\n\nclass CommentsAdmin(admin.ModelAdmin):\n    fieldsets = (\n        (None,\n           {'fields': ('content_type', 'object_pk', 'site')}\n        ),\n        (_('Content'),\n           {'fields': ('user', 'user_name', 'user_email', 'user_url', 'comment')}\n        ),\n        (_('Metadata'),\n           {'fields': ('submit_date', 'ip_address', 'is_public', 'is_removed')}\n        ),\n     )\n\n    list_display = ('name', 'content_type', 'object_pk', 'ip_address', 'submit_date', 'is_public', 'is_removed')\n    list_filter = ('submit_date', 'site', 'is_public', 'is_removed')\n    date_hierarchy = 'submit_date'\n    ordering = ('-submit_date',)\n    raw_id_fields = ('user',)\n    search_fields = ('comment', UsernameSearch(), 'user_name', 'user_email', 'user_url', 'ip_address')\n    actions = [\"flag_comments\", \"approve_comments\", \"remove_comments\"]\n\n    def get_actions(self, request):\n        actions = super(CommentsAdmin, self).get_actions(request)\n        # Only superusers should be able to delete the comments from the DB.\n        if not request.user.is_superuser and 'delete_selected' in actions:\n            actions.pop('delete_selected')\n        if not request.user.has_perm('comments.can_moderate'):\n            if 'approve_comments' in actions:\n                actions.pop('approve_comments')\n            if 'remove_comments' in actions:\n                actions.pop('remove_comments')\n        return actions\n\n    def flag_comments(self, request, queryset):\n        self._bulk_flag(request, queryset, perform_flag,\n                        lambda n: ungettext('flagged', 'flagged', n))\n    flag_comments.short_description = _(\"Flag selected comments\")\n\n    def approve_comments(self, request, queryset):\n        self._bulk_flag(request, queryset, perform_approve,\n                        lambda n: ungettext('approved', 'approved', n))\n    approve_comments.short_description = _(\"Approve selected comments\")\n\n    def remove_comments(self, request, queryset):\n        self._bulk_flag(request, queryset, perform_delete,\n                        lambda n: ungettext('removed', 'removed', n))\n    remove_comments.short_description = _(\"Remove selected comments\")\n\n    def _bulk_flag(self, request, queryset, action, done_message):\n        \"\"\"\n        Flag, approve, or remove some comments from an admin action. Actually\n        calls the `action` argument to perform the heavy lifting.\n        \"\"\"\n        n_comments = 0\n        for comment in queryset:\n            action(request, comment)\n            n_comments += 1\n\n        msg = ungettext('1 comment was successfully %(action)s.',\n                        '%(count)s comments were successfully %(action)s.',\n                        n_comments)\n        self.message_user(request, msg % {'count': n_comments, 'action': done_message(n_comments)})\n\n# Only register the default admin if the model is the built-in comment model\n# (this won't be true if there's a custom comment app).\nif get_model() is Comment:\n    admin.site.register(Comment, CommentsAdmin)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/feeds.py",
    "content": "from django.contrib.syndication.views import Feed\nfrom django.contrib.sites.models import get_current_site\nfrom django.contrib import comments\nfrom django.utils.translation import ugettext as _\n\nclass LatestCommentFeed(Feed):\n    \"\"\"Feed of latest comments on the current site.\"\"\"\n\n    def __call__(self, request, *args, **kwargs):\n        self.site = get_current_site(request)\n        return super(LatestCommentFeed, self).__call__(request, *args, **kwargs)\n\n    def title(self):\n        return _(\"%(site_name)s comments\") % dict(site_name=self.site.name)\n\n    def link(self):\n        return \"http://%s/\" % (self.site.domain)\n\n    def description(self):\n        return _(\"Latest comments on %(site_name)s\") % dict(site_name=self.site.name)\n\n    def items(self):\n        qs = comments.get_model().objects.filter(\n            site__pk = self.site.pk,\n            is_public = True,\n            is_removed = False,\n        )\n        return qs.order_by('-submit_date')[:40]\n\n    def item_pubdate(self, item):\n        return item.submit_date\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/forms.py",
    "content": "import time\nfrom django import forms\nfrom django.forms.util import ErrorDict\nfrom django.conf import settings\nfrom django.contrib.contenttypes.models import ContentType\nfrom django.contrib.comments.models import Comment\nfrom django.utils.crypto import salted_hmac, constant_time_compare\nfrom django.utils.encoding import force_text\nfrom django.utils.text import get_text_list\nfrom django.utils import timezone\nfrom django.utils.translation import ungettext, ugettext, ugettext_lazy as _\n\nCOMMENT_MAX_LENGTH = getattr(settings,'COMMENT_MAX_LENGTH', 3000)\n\nclass CommentSecurityForm(forms.Form):\n    \"\"\"\n    Handles the security aspects (anti-spoofing) for comment forms.\n    \"\"\"\n    content_type  = forms.CharField(widget=forms.HiddenInput)\n    object_pk     = forms.CharField(widget=forms.HiddenInput)\n    timestamp     = forms.IntegerField(widget=forms.HiddenInput)\n    security_hash = forms.CharField(min_length=40, max_length=40, widget=forms.HiddenInput)\n\n    def __init__(self, target_object, data=None, initial=None):\n        self.target_object = target_object\n        if initial is None:\n            initial = {}\n        initial.update(self.generate_security_data())\n        super(CommentSecurityForm, self).__init__(data=data, initial=initial)\n\n    def security_errors(self):\n        \"\"\"Return just those errors associated with security\"\"\"\n        errors = ErrorDict()\n        for f in [\"honeypot\", \"timestamp\", \"security_hash\"]:\n            if f in self.errors:\n                errors[f] = self.errors[f]\n        return errors\n\n    def clean_security_hash(self):\n        \"\"\"Check the security hash.\"\"\"\n        security_hash_dict = {\n            'content_type' : self.data.get(\"content_type\", \"\"),\n            'object_pk' : self.data.get(\"object_pk\", \"\"),\n            'timestamp' : self.data.get(\"timestamp\", \"\"),\n        }\n        expected_hash = self.generate_security_hash(**security_hash_dict)\n        actual_hash = self.cleaned_data[\"security_hash\"]\n        if not constant_time_compare(expected_hash, actual_hash):\n            raise forms.ValidationError(\"Security hash check failed.\")\n        return actual_hash\n\n    def clean_timestamp(self):\n        \"\"\"Make sure the timestamp isn't too far (> 2 hours) in the past.\"\"\"\n        ts = self.cleaned_data[\"timestamp\"]\n        if time.time() - ts > (2 * 60 * 60):\n            raise forms.ValidationError(\"Timestamp check failed\")\n        return ts\n\n    def generate_security_data(self):\n        \"\"\"Generate a dict of security data for \"initial\" data.\"\"\"\n        timestamp = int(time.time())\n        security_dict =   {\n            'content_type'  : str(self.target_object._meta),\n            'object_pk'     : str(self.target_object._get_pk_val()),\n            'timestamp'     : str(timestamp),\n            'security_hash' : self.initial_security_hash(timestamp),\n        }\n        return security_dict\n\n    def initial_security_hash(self, timestamp):\n        \"\"\"\n        Generate the initial security hash from self.content_object\n        and a (unix) timestamp.\n        \"\"\"\n\n        initial_security_dict = {\n            'content_type' : str(self.target_object._meta),\n            'object_pk' : str(self.target_object._get_pk_val()),\n            'timestamp' : str(timestamp),\n          }\n        return self.generate_security_hash(**initial_security_dict)\n\n    def generate_security_hash(self, content_type, object_pk, timestamp):\n        \"\"\"\n        Generate a HMAC security hash from the provided info.\n        \"\"\"\n        info = (content_type, object_pk, timestamp)\n        key_salt = \"django.contrib.forms.CommentSecurityForm\"\n        value = \"-\".join(info)\n        return salted_hmac(key_salt, value).hexdigest()\n\nclass CommentDetailsForm(CommentSecurityForm):\n    \"\"\"\n    Handles the specific details of the comment (name, comment, etc.).\n    \"\"\"\n    name          = forms.CharField(label=_(\"Name\"), max_length=50)\n    email         = forms.EmailField(label=_(\"Email address\"))\n    url           = forms.URLField(label=_(\"URL\"), required=False)\n    comment       = forms.CharField(label=_('Comment'), widget=forms.Textarea,\n                                    max_length=COMMENT_MAX_LENGTH)\n\n    def get_comment_object(self):\n        \"\"\"\n        Return a new (unsaved) comment object based on the information in this\n        form. Assumes that the form is already validated and will throw a\n        ValueError if not.\n\n        Does not set any of the fields that would come from a Request object\n        (i.e. ``user`` or ``ip_address``).\n        \"\"\"\n        if not self.is_valid():\n            raise ValueError(\"get_comment_object may only be called on valid forms\")\n\n        CommentModel = self.get_comment_model()\n        new = CommentModel(**self.get_comment_create_data())\n        new = self.check_for_duplicate_comment(new)\n\n        return new\n\n    def get_comment_model(self):\n        \"\"\"\n        Get the comment model to create with this form. Subclasses in custom\n        comment apps should override this, get_comment_create_data, and perhaps\n        check_for_duplicate_comment to provide custom comment models.\n        \"\"\"\n        return Comment\n\n    def get_comment_create_data(self):\n        \"\"\"\n        Returns the dict of data to be used to create a comment. Subclasses in\n        custom comment apps that override get_comment_model can override this\n        method to add extra fields onto a custom comment model.\n        \"\"\"\n        return dict(\n            content_type = ContentType.objects.get_for_model(self.target_object),\n            object_pk    = force_text(self.target_object._get_pk_val()),\n            user_name    = self.cleaned_data[\"name\"],\n            user_email   = self.cleaned_data[\"email\"],\n            user_url     = self.cleaned_data[\"url\"],\n            comment      = self.cleaned_data[\"comment\"],\n            submit_date  = timezone.now(),\n            site_id      = settings.SITE_ID,\n            is_public    = True,\n            is_removed   = False,\n        )\n\n    def check_for_duplicate_comment(self, new):\n        \"\"\"\n        Check that a submitted comment isn't a duplicate. This might be caused\n        by someone posting a comment twice. If it is a dup, silently return the *previous* comment.\n        \"\"\"\n        possible_duplicates = self.get_comment_model()._default_manager.using(\n            self.target_object._state.db\n        ).filter(\n            content_type = new.content_type,\n            object_pk = new.object_pk,\n            user_name = new.user_name,\n            user_email = new.user_email,\n            user_url = new.user_url,\n        )\n        for old in possible_duplicates:\n            if old.submit_date.date() == new.submit_date.date() and old.comment == new.comment:\n                return old\n\n        return new\n\n    def clean_comment(self):\n        \"\"\"\n        If COMMENTS_ALLOW_PROFANITIES is False, check that the comment doesn't\n        contain anything in PROFANITIES_LIST.\n        \"\"\"\n        comment = self.cleaned_data[\"comment\"]\n        if settings.COMMENTS_ALLOW_PROFANITIES == False:\n            bad_words = [w for w in settings.PROFANITIES_LIST if w in comment.lower()]\n            if bad_words:\n                raise forms.ValidationError(ungettext(\n                    \"Watch your mouth! The word %s is not allowed here.\",\n                    \"Watch your mouth! The words %s are not allowed here.\",\n                    len(bad_words)) % get_text_list(\n                        ['\"%s%s%s\"' % (i[0], '-'*(len(i)-2), i[-1])\n                         for i in bad_words], ugettext('and')))\n        return comment\n\nclass CommentForm(CommentDetailsForm):\n    honeypot      = forms.CharField(required=False,\n                                    label=_('If you enter anything in this field '\\\n                                            'your comment will be treated as spam'))\n\n    def clean_honeypot(self):\n        \"\"\"Check that nothing's been entered into the honeypot.\"\"\"\n        value = self.cleaned_data[\"honeypot\"]\n        if value:\n            raise forms.ValidationError(self.fields[\"honeypot\"].label)\n        return value\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/ar/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Ossama Khayat <okhayat@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:24+0000\\n\"\n\"Last-Translator: Ossama Khayat <okhayat@gmail.com>\\n\"\n\"Language-Team: Arabic (http://www.transifex.com/projects/p/django/language/\"\n\"ar/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ar\\n\"\n\"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 \"\n\"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"محتوى\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"ميتاداتا\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"لا يوجد\"\nmsgstr[1] \"عليه علامة\"\nmsgstr[2] \"عليهما علامة\"\nmsgstr[3] \"عليها علامة\"\nmsgstr[4] \"عليها علامة\"\nmsgstr[5] \"عليها علامة\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"تعليم التعليقات المحددة\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"اعتُمد\"\nmsgstr[1] \"اعتُمد\"\nmsgstr[2] \"اعتُمدا\"\nmsgstr[3] \"اعتُمدت\"\nmsgstr[4] \"اعتُمدت\"\nmsgstr[5] \"اعتُمدت\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"اعتماد التعليقات المحددة\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"أزيل\"\nmsgstr[1] \"أزيل\"\nmsgstr[2] \"أزيلا\"\nmsgstr[3] \"أزيلت\"\nmsgstr[4] \"أزيل\"\nmsgstr[5] \"أزيل\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"احذف التعليقات المحددة\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"تعليق %(count)s %(action)s.\"\nmsgstr[1] \"تعليق %(count)s %(action)s.\"\nmsgstr[2] \"تعليقان %(count)s %(action)s.\"\nmsgstr[3] \"تعليقات %(count)s %(action)s.\"\nmsgstr[4] \"تعليق %(count)s %(action)s.\"\nmsgstr[5] \"تعليقات %(count)s %(action)s.\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"تعليقات %(site_name)s\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"آخر التعليقات على %(site_name)s\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"الاسم\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"عنوان بريد إلكتروني\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"رابط\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"تعليق\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"احفظ لسانك! الكلمة %s ممنوعة هنا.\"\nmsgstr[1] \"احفظ لسانك! الكلمة %s ممنوعة هنا.\"\nmsgstr[2] \"احفظ لسانك! الكلمة %s ممنوعة هنا.\"\nmsgstr[3] \"احفظ لسانك! الكلمة %s ممنوعة هنا.\"\nmsgstr[4] \"احفظ لسانك! الكلمة %s ممنوعة هنا.\"\nmsgstr[5] \"احفظ لسانك! الكلمة %s ممنوعة هنا.\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"و\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"إن كتبت أي شيء في هذا الحقل فسيُعتبر تعليقك غير مرغوب به\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"نوع البيانات\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"معرف العنصر\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"مستخدم\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"اسم المستخدم\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"عنوان البريد الإلكتروني للمستخدم\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"عنوان URL للمستخدم\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"تعليق\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"تاريخ ووقت الإرسال\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"عنوان IP\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"عام\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"أزل اختيار هذا المربّع كي تُزيل التعليق نهائياً من الموقع.\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"محذوف\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\"انتق هذا المربع إذا كان التعليق غير لائق، سيتم عرض الرسالة \\\"تم حذف هذا \"\n\"التعليق\\\" بدلا منه.\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"تعليقات\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"كتب هذا التعليق مستخدم مُسجّل ولذا كان اسمهللقراءة فقط.\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\"كتب هذا التعليق مستخدم مُسجّل ولذا كان عنوان بريده الالكتروني للقراءة فقط.\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\"كتبه %(user)s في %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"علم\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"التاريخ\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"علَم التعليق\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"أعلام التعليقات\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"وافق على تعليق\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"تريد فعلاً جعل هذا التعليق عامّاً؟\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"وافق\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"شكراً لموافقتك\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"شكراً لك على قضاء وقتك في تحسين جودة النقاش على موقعنا\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"أزل تعليق\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"تريد فعلاً إزالة هذا التعليق؟\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"أزل\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"شكراً لإزالته\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"سِم هذا التعليق\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"تريد فعلاً وسم هذا التعليق؟\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"سٍم\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"شكراً لك على الوَسم\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"أرسل \"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"عاين\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"شكراً على تعليقك\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"شكراً لك على تعليقك\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"عاين تعليقك\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"لا يوجد أخطاء\"\nmsgstr[1] \"رجاءً صحح الخطأ أدناه\"\nmsgstr[2] \"رجاءً صحح الخطأين أدناه\"\nmsgstr[3] \"رجاءً صحح الأخطاء أدناه\"\nmsgstr[4] \"رجاءً صحح الأخطاء أدناه\"\nmsgstr[5] \"رجاءً صحح الأخطاء أدناه\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"أرسال تعليقك\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"أو قم ببعض التغيير\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/az/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Ali Ismayilov <ali@ismailov.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:24+0000\\n\"\n\"Last-Translator: Ali Ismayilov <ali@ismailov.info>\\n\"\n\"Language-Team: Azerbaijani (http://www.transifex.com/projects/p/django/\"\n\"language/az/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: az\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"Məzmun\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"Meta-məlumat\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"\"\n\"one: işarələndi\\n\"\n\"other: işarələndilər\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"Seçilmiş şərhləri işarələ\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"\"\n\"one: təsdiq olundu\\n\"\n\"other: təsdiq olundular\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"Seçilmiş şərhləri təsdiq et\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"\"\n\"one: silindi\\n\"\n\"other: silindilər\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"Seçilmiş şərhləri sil\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"\"\n\"one: Şərh uğurla %(action)s.\\n\"\n\"other: %(count)s şərh uğurlar %(action)s.\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"%(site_name)s şərhləri\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"%(site_name)s üzrə son şərhlər\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"Ad\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"E-poçt\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"Şərh\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"\"\n\"one: Danışığınıza fikir verin! %s sözünü burda işlətməyə icazə verilmir.\\n\"\n\"other:Danışığınıza fikir verin! %s sözlərini burda işlətməyə icazə verilmir.\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"və\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"Bu sahəyə nəsə yazsanız, şərhiniz spam kimi qiymətləndiriləcək.\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"məzmunun tipi\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"obyektin ID-si\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"istifadəçi\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"istifadəçinin adı\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"istifadəçinin e-poçt ünvanı\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"istifadəçinin URL-ni\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"şərh\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"yazılma tarix/vaxtı\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"IP ünvanı\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"hamı görür\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"Şərhi saytdan yox etmək üçün buradakı quşu yığışdırın.\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"yığışdırılıb\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\"Əgər şərh qeyri-uyğundursa, bura quş qoyun və şərhin yerinə \\\"Bu şərh \"\n\"yığışdırılıb\\\" yazısı çıxacaq.\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"şərhlər\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"\"\n\"Bu şərh daxil olmuş istifadəçi adından yazılmışdır, buna görə də onun adını \"\n\"dəyişmək mümkün deyil.\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\"Bu şərh daxil olmuş istifadəçi adından yazılmışdır, buna görə də onun e-poçt \"\n\"ünvanını dəyişmək mümkün deyil.\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\"%(user)s %(date)s tarixində yazmışdır.\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"işarələ\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"tarix\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"şərh işarəsi\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"şərh işarələri\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"Şərhə icazə ver\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"Bu şərhi hamı görsün?\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"Təsdiqləyirəm\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"Təsdiqlədiniz\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"\"\n\"Saytımızda müzakirəni daha keyfiyyətli etmək üçün sərf etdiyiniz vaxta görə \"\n\"təşəkkür edirik.\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"Şərhi yığışdır\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"Şərhi yığışdıraq?\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"Yığışdır\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"Yığışdırdıq\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"Şərhi işarələ\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"Şərhi işarələyək?\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"İşarələ\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"İşarələdik\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"Yaz\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"Baxım\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"Şərh etdiyiniz üçün təşəkkür edirik\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"Şərh etdiyiniz üçün təşəkkür edirik\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"Şərhin görünüşü\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"\"\n\"one: Aşağıdakı səhvi düzəldin.\\n\"\n\"other: Aşağıdakı səhvləri düzəldin.\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"Şərhi göndər\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"və ya düzəliş et\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/be/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-08-01 10:41+0000\\n\"\n\"Last-Translator: Павал Клёк <yehekim@gmail.com>\\n\"\n\"Language-Team: Belarusian (http://www.transifex.com/projects/p/django/\"\n\"language/be/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: be\\n\"\n\"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"Зьмесьціва\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"Зьвесткі\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"Пазначылі\"\nmsgstr[1] \"пазначылі\"\nmsgstr[2] \"Пазначылі\"\nmsgstr[3] \"Пазначылі\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"Пазначыць абраныя выказваньні\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"Ухвалілі\"\nmsgstr[1] \"Ухвалілі\"\nmsgstr[2] \"Ухвалілі\"\nmsgstr[3] \"Ухвалілі\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"Ухваліць абраныя выказваньні\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"Прыбралі\"\nmsgstr[1] \"Прыбралі\"\nmsgstr[2] \"Прыбралі\"\nmsgstr[3] \"Прыбралі\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"Прыбраць абраныя выказваньні\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"%(action)s %(count)s заўвагу.\"\nmsgstr[1] \"%(action)s %(count)s заўвагі.\"\nmsgstr[2] \"%(action)s %(count)s заўвагаў.\"\nmsgstr[3] \"%(action)s %(count)s заўвагаў.\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"Выказваньні на %(site_name)s\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"Найноўшыя выказваньні на %(site_name)s\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"Імя\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"Адрас эл. пошты\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"Сеціўная спасылка\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"Выказваньне\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"Сачыце за сваімі словамі! Тут нельга казаць «%s».\"\nmsgstr[1] \"Сачыце за сваімі словамі! Тут нельга казаць «%s».\"\nmsgstr[2] \"Сачыце за сваімі словамі! Тут нельга казаць «%s».\"\nmsgstr[3] \"Сачыце за сваімі словамі! Тут нельга казаць «%s».\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"і\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"\"\n\"Калі напісаць нешта ў гэтым полі, выказваньне будзе лічыцца лухтою (спамам).\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"від зьмесьціва\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"нумар аб’екта\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"карыстальнік\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"імя карыстальніка\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"эл. пошта карыстальніка\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"сеціўная спасылка карыстальніка\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"выкавзаньне\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"час і дата выказваньня\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"Адрас IP\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"бачнае\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"Прыбярыце гэтую птушачку, каб выказваньне зьнікла з пляцоўкі.\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"прыбралі\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\"Абярыце, калі выказваньне не да месца або не адпавядае правілам. Замест яго \"\n\"будзе надпіс «Выказваньне прыбралі».\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"выказваньні\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"\"\n\"Выказваньне пакінуў карыстальнік, які апазнаўся, таму ягонае імя нельга \"\n\"зьмяняць.\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\"Выказваньне пакінуў карыстальнік, які апазнаўся, таму ягоны адрас эл. пошты \"\n\"нельга зьмяняць.\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\"%(date)s, аўтар — %(user)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"пазнака\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"дата\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"пазнака выказваньня\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"пазнакі выказваньняў\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"Ухваліць выказваньне\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"Ці сапраўды зрабіць выказваньне бачным?\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"Ухваліць\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"Дзякуем, што ўхвалілі\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"\"\n\"Мы ўдзячныя, што вы дапамагаеце палепшыць якасьць размовы на нашай пляцоўцы\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"Прыбраць выказваньне\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"Ці сапраўды прыбраць выказваньне?\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"Прыбраць\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"Дзякуем, што прыбралі\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"Пазначыць выказваньне\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"Ці сапраўды пазначыць выказваньне?\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"Пазначыць\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"Дзякуем, што пазначылі\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"Даслаць\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"Прагледзець\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"Дзякуем, што выказаліся\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"Мы ўдзячныя за вашае выказваньне\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"Прагледзець выказваньне\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"Выпраўце памылку ніжэй\"\nmsgstr[1] \"Выпраўце памылкі ніжэй\"\nmsgstr[2] \"Выпраўце памылкі ніжэй\"\nmsgstr[3] \"Выпраўце памылкі ніжэй\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"Дашліце выказваньне\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"або выпраўце яго\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/bg/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Boris Chervenkov <office@sentido.bg>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Todor Lubenov <tlubenov@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:24+0000\\n\"\n\"Last-Translator: Boris Chervenkov <office@sentido.bg>\\n\"\n\"Language-Team: Bulgarian (http://www.transifex.com/projects/p/django/\"\n\"language/bg/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: bg\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"Благодаря за маркирането\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"Метаданни\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"маркиран\"\nmsgstr[1] \"маркирани\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"Маркирай избраните коментари\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"одобрен\"\nmsgstr[1] \"одобрени\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"Одобри избраните коментари\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"отстранен\"\nmsgstr[1] \"отстранени\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"Премахване на избраните коментари\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"%(count)s коментар беше успешно %(action)s.\"\nmsgstr[1] \"%(count)s коментари бяха успешно %(action)s.\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"%(site_name)s коментари\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"Последни коментари  на %(site_name)s\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"Име\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"Email адрес\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"URL адрес\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"Коментар\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"Внимание! Думата %s не се допуска.\"\nmsgstr[1] \"Внимание! Думите %s не се допускат.\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"и\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"Ако въведете нещо в това поле, вашия коментар ще се третира като спам\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"тип на съдържанието\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"ID на обекта\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"потребител\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"потребителско име\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"email адрес на потребителя\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"URL адрес на потребителя\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"коментар\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"дата и час на подаване\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"IP адрес\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"е публичен\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"Махнете отметката от това поле, за да премахнете коментара от сайта.\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"е премахнат\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\"Щракнете тук ако коментарът е неподходящ. Вместо съдържанието на коментара, \"\n\"ще се покаже надписът \\\"Този коментар беше премахнат.\\\"\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"коментари\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"\"\n\"Този коментар е публикуван от регистриран потребител, затова името не може \"\n\"да бъде редактирано.\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\"Този коментар е публикуван от регистриран потребител, затова email адресът \"\n\"не може да бъде редактиран.\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\"Публикуван от %(user)s на %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"маркиране\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"дата\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"отбелязване на коментар\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"отбелязване на коментари\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"Одобряване на коментар\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"Наистина ли да стане този коментар публичен?\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"Одобри\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"Благодарим за одобрението\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"\"\n\"Благодарим, че отделихте време, за да се подобри качеството на обсъждането \"\n\"на нашия сайт\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"Премахване на коментар\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"Сигурни ли сте, че искате да премахнете този коментар?\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"Премахване\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"Благодарим за премахването\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"Маркирай този коментар\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"Сигурни ли сте, че искате да отбележете този коментар?\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"Отбелязване\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"Благодарим за отбелязването\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"Публикувай\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"Преглед\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"Благодарим за коментара\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"Благодарим за Вашия коментар\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"Преглед на коментар\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"Моля, поправете грешката по-долу\"\nmsgstr[1] \"Моля, поправете грешките по-долу\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"Публикувай коментар\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"или направете промени\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/bn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Translators:\n#  <anubhab91@gmail.com>, 2013.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2013-02-20 15:10+0000\\n\"\n\"Last-Translator: anubhab91 <anubhab91@gmail.com>\\n\"\n\"Language-Team: Bengali (http://www.transifex.com/projects/p/django/language/\"\n\"bn/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: bn\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"কনটেন্ট\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"মেটাডাটা\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"ফ্ল্যাগ করা হয়েছে\"\nmsgstr[1] \"ফ্ল্যাগ করা হয়েছে\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"চয়িত মন্তব্যগুলোকে ফ্ল্যাগ করুন\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"অনুমোদিত\"\nmsgstr[1] \"অনুমোদিত\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"চিহ্নিত মন্তব্যগুলি অনুমোদন করুন\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"মুছে ফেলা হয়েছে\"\nmsgstr[1] \"মুছে ফেলা হয়েছে\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"চয়িত মন্তব্যগুলি মুছে ফেলুন\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"নাম\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"ইমেইল ঠিকানা\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"ইউআরএল (URL)\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"মন্তব্য\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"সাবধান! %s শব্দটি এখানে প্রযোজ্য নয়।\"\nmsgstr[1] \"সাবধান! %s শব্দগুলো এখানে প্রযোজ্য নয়।\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"এবং\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"আপনি যদি এখানে কোনকিছু লিখেন তবে আপনার মন্তব্যকে স্প্যাম হিসেবে ধরা হবে\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"কনটেন্ট টাইপ\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"অবজেক্ট আইডি\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"সদস্য\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"সদস্যের নাম\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"সদস্যের ইমেইল ঠিকানা\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"সদস্যের ইউআরএল (URL)\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"মন্তব্য\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"দাখিলের তারিখ/সময়\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"আইপি ঠিকানা\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"সার্বজনীন\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"সাইট থেকে মন্তব্য মুছে ফেলতে এখানে আনচেক করুন।\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"মোছা হয়েছে\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\"এই বাক্সে চেক করুন যদি মন্তব্যটি যথাযথ না হয়। মন্তব্যের পরিবর্তে \\\"মন্তব্যদি মুছে ফেলা \"\n\"হয়েছে\\\" দেখানো হবে।\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"এই মন্তব্যটি একজন নিবন্ধনকৃত সদস্য করেছেন, সেজন্যই নামটি শুধুমাত্র পড়ার যোগ্য।\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\"এই মন্তব্যটি একজন নিবন্ধনকৃত সদস্য করেছেন, সেজন্যই ইমেইল ঠিকানা শুধুমাত্র পড়ার যোগ্য।\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\"লিখেছেন %(user)s - %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"পতাকা\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"তারিখ\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"মন্তব্য পতাকা\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"মন্তব্য পতাকাসমূহ\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"একটি মন্তব্য অনুমোদন করুন\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"সত্যিই কি এই মন্তব্যকে সাধারণের জন্য উন্মুক্ত করতে চান?\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"অনুমোদন\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"অনুমোদন করার জন্য ধন্যবাদ\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"আমাদের সাইটের উন্নতিকল্পে আলোচনায় যোগ দেওয়ার জন্য আপনাকে সাধুবাদ জানাই\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"একটি মন্তব্য মুছে ফেলুন\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"সত্যিই কি এই মন্তব্যকে উড়িয়ে দিতে চান?\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"মুছে ফেলুন\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"মুছে ফেলার জন্য ধন্যবাদ\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"এই মন্তব্যকে পতাকাচিহ্নিত করুন\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"সত্যিই কি এই মন্তব্যকে পতাকাচিহ্নিত করতে চান?\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"পতাকা\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"পতাকাচিহ্নিত করার জন্য ধন্যবাদ\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"প্রাকদর্শন\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"মন্তব্য লেখার জন্য ধন্যবাদ\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"আপনার মতামতের জন্য ধন্যবাদ\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"আপনার মন্তব্যকে প্রাকদর্শন করুন\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/br/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Fulup  <fulup.jakez@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-06-29 18:35+0000\\n\"\n\"Last-Translator: Fulup <fulup.jakez@gmail.com>\\n\"\n\"Language-Team: Breton (http://www.transifex.com/projects/p/django/language/\"\n\"br/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: br\\n\"\n\"Plural-Forms: nplurals=2; plural=(n > 1);\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"Danvez\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"Metaroadennoù\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"merket\"\nmsgstr[1] \"merket\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"Merkañ an evezhiadennoù diuzet\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"aprouet\"\nmsgstr[1] \"aprouet\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"Aprouiñ an evezhiadennoù diuzet\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"dilamet\"\nmsgstr[1] \"dilamet\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"Dilemel an evezhiadennoù diuzet\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"Anv\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"Chomlec'h postel\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"Evezhiadenn\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"seurt danvez\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"implijer\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"chomlec'h postel an implijer\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"URL an implijer\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"danvez\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"deiziad/eur kaset\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"Chomlec'h IP\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"zo foran\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"zo bet dilamet\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"evezhiadennoù\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"merker\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"deiziad\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"aprouiñ un evezhiadenn\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"Aprouiñ\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"Trugarez da vezañ aprouet\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"Diverkañ un evezhiadenn\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"Dilemel\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"Trugarez evit an diverkadenn-mañ\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"Kas\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"Rakwelet\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"Rakwelet hoc'h evezhiadenn\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/bs/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Filip Dupanović <filip.dupanovic@gmail.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:24+0000\\n\"\n\"Last-Translator: Filip Dupanović <filip.dupanovic@gmail.com>\\n\"\n\"Language-Team: Bosnian (http://www.transifex.com/projects/p/django/language/\"\n\"bs/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: bs\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"Sadržaj\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"Metapodaci\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"označen\"\nmsgstr[1] \"označena\"\nmsgstr[2] \"označena\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"Označite izabrane komentare\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"odobren\"\nmsgstr[1] \"odobrena\"\nmsgstr[2] \"odobrena\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"Odobri izabrane komentare\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"izbrisan\"\nmsgstr[1] \"izbrisana\"\nmsgstr[2] \"izbrisan\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"Obriši izabrane komentare\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"%(count)s komentar je uspješno %(action)s.\"\nmsgstr[1] \"%(count)s komentara su uspješno %(action)s.\"\nmsgstr[2] \"%(count)s komentara su uspješno %(action)s.\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"Komentari na %(site_name)s\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"Najnoviji komentari na %(site_name)s\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"Ime\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"Email adresa\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"Komentar\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"Pazite šta pišete! Riječ %s nije dozvoljena ovdje.\"\nmsgstr[1] \"Pazite šta pišete! Riječi %s nisu dozvoljene ovdje.\"\nmsgstr[2] \"Pazite šta pišete! Riječi %s nisu dozvoljene ovdje.\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"i\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"Ako unesete bilo šta u ovo polje, Vaš komentar će se smatrati spamom\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"tip sadržaja\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"ID objekta\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"korisnik\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"korisnikovo ime\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"korisnikova email adresa\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"korisnikov URL\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"komentar\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"datum/vrijeme unosa\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"IP adresa\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"javno dostupan\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"Uklonite izbor ovog polja da bi se komentar izbrisao sa stranice.\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"uklonjen\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\"Obilježite ovo polje ukoliko je komentar neprikladan. Prikazat će se poruka \"\n\"\\\"Komentar je ukonjen\\\" umjesto komentara.\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"komentari\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"\"\n\"Ovaj komentar je postavio prijavljeni korisnik i ime se ne može mijenjati.\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\"Ovaj komentar je postavio prijavljeni korisnik i email se ne može mijenjati.\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\"Postavio %(user)s, %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"oznaka\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"datum\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"oznaka komentara\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"oznake komentara\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"Odobri komentar\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"Da li zaista želite da učinite ovaj komentar javno dostupnim?\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"Odobri\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"Hvala na odobrenju\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"\"\n\"Hvala što ste izdvojili vrijeme da poboljšate kvalitet diskusije na našoj \"\n\"stranici\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"Obriši komentar\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"Da li zaista želite da obrišete ovaj komentar?\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"Obriši\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"Hvala na brisanju\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"Označi ovaj komentar\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"Da li zaista želite da označite ovaj komentar?\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"Označi\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"Hvala što ste označili komentar.\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"Postavi\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"Pregled\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"Hvala na komentaru\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"Hvala što ste ostavili svoj komentar\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"Pregledaj komentar\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"Molimo ispravite navadenu grešku niže\"\nmsgstr[1] \"Molimo ispravite navedene greške niže\"\nmsgstr[2] \"Molimo ispravite navedene greške\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"Postavi komentar\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"ili izvrši izmjene\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/ca/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:24+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Catalan (http://www.transifex.com/projects/p/django/language/\"\n\"ca/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ca\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"Contingut\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"Metadades\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"marcat\"\nmsgstr[1] \"marcats\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"Marcar els comentaris seleccionats\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"aprovat\"\nmsgstr[1] \"aprovats\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"Aprovar els comentaris seleccionats\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"eliminat\"\nmsgstr[1] \"eliminats\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"Eliminar els comentaris seleccionats\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"1 comentari ha estat %(action)s satisfactòriament.\"\nmsgstr[1] \"%(count)s comentaris han estat %(action)s satisfactòriament.\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"comentaris de %(site_name)s\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"Últims comentaris a %(site_name)s.\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"Nom\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"Adreça de correu electrònic\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"Comentari\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"Vigileu amb el vostre llenguatge! Aquí no s'admet la paraula: %s.\"\nmsgstr[1] \"\"\n\"Vigileu amb el vostre llenguatge! Aquí no s'admeten les paraules: %s.\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"i\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"\"\n\"Si entreu qualsevol cosa en aquest camp el vostre comentari es tractarà com \"\n\"a spam\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"tipus de contingut\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"ID de l'objecte\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"usuari\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"nom de l'usuari\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"adreça de correu electrònic de l'usuari\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"URL de l'usuari\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"comentari\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"data/hora d'enviament\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"Adreça IP\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"és públic\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"\"\n\"Desmarqueu aquesta casella per fer desaparèixer aquest comentari del lloc \"\n\"web de forma efectiva.\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"està eliminat\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\"Marqueu aquesta casella si el comentari no és apropiat. En lloc seu es \"\n\"mostrarà \\\"Aquest comentari ha estat eliminat\\\" \"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"comentaris\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"\"\n\"Aquest comentari va ser publicat per un usuari autentificat, per això el seu \"\n\"nom no es pot modificar.\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\"Aquest comentari va ser publicat per un usuari autentificat, per això la \"\n\"seva adreça de correu electrònic no es pot modificar.\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\"Enviat per %(user)s el %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"marcar\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"data\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"marca del comentari\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"marques del comentari\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"Aprovar un comentari\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"Voleu realment fer públic aquest comentari?\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"Aprovar\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"Gràcies per aprovar\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"\"\n\"Gràcies per dedicar el temps a millorar la qualitat del debat al nostre lloc\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"Eliminar un comentari\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"Realment voleu eliminar aquest comentari?\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"Eliminar\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"Gràcies per eliminar\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"Marcar aquest comentari\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"Realment voleu marcar aquest comentari?\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"Marcar\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"Gràcies per marcar\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"Publicar\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"Vista prèvia\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"Gràcies per comentar\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"Gràcies pel vostre comentari\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"Previsualitzar el vostre comentari\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"Si us plau, corregiu l'error mostrat a sota.\"\nmsgstr[1] \"Si us plau, corregiu els errors mostrats a sota.\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"Enviar el seu comentari\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"o feu canvis.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/cs/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:24+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Czech (http://www.transifex.com/projects/p/django/language/\"\n\"cs/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: cs\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"Obsah\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"Metadata\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"označen\"\nmsgstr[1] \"označeny\"\nmsgstr[2] \"označeno\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"Označit vybrané komentáře\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"schválen\"\nmsgstr[1] \"schváleny\"\nmsgstr[2] \"schváleno\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"Schválit vybrané komentáře\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"odebrán\"\nmsgstr[1] \"odebrány\"\nmsgstr[2] \"odebráno\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"Odebrat vybrané komentáře\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"1 komentář byl úspěšně %(action)s.\"\nmsgstr[1] \"%(count)s komentáře byly úspěšně %(action)s.\"\nmsgstr[2] \"%(count)s komentářů bylo úspěšně %(action)s.\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"Komentáře z webu %(site_name)s\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"Poslední komentáře na webu %(site_name)s\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"Jméno\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"E-mailová adresa\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"Komentář\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"Mluvte slušně! Slovo %s je zde nepřípustné.\"\nmsgstr[1] \"Mluvte slušně! Slova %s jsou zde nepřípustná.\"\nmsgstr[2] \"Mluvte slušně! Slova %s jsou zde nepřípustná.\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"a\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"Jestliže do tohoto pole cokoli zadáte, bude komentář považován za spam\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"typ obsahu\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"ID položky\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"uživatel\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"jméno uživatele\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"e-mailová adresa uživatele\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"URL uživatele\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"komentář\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"datum a čas byly zaslané\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"Adresa IP\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"je veřejný\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"\"\n\"Pokud zrušíte zaškrtnutí tohoto políčka, komentář se na stránce nezobrazí.\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"je odebrán\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\"Zaškrtněte, pokud je komentář nevhodný. Místo něj bude zobrazena zpráva \"\n\"\\\"Tento komentář byl odebrán\\\".\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"komentář\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"\"\n\"Tento komentář zaslal přihlášený uživatel, jméno tedy není možné změnit.\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\"Tento komentář zaslal přihlášený uživatel, e-mail tedy není možné změnit.\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\"Zadal uživatel %(user)s dne %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"značka\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"datum\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"značka komentáře\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"značky komentáře\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"Schválit komentář\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"Opravdu chcete zveřejnit tento komentář?\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"Schválit\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"Děkujeme za schválení\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"\"\n\"Děkujeme za váš čas věnovaný zlepšení kvality diskuze na našich stránkách\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"Odebrat komentář\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"Opravdu chcete odebrat tento komentář?\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"Odebrat\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"Děkujeme za odebrání\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"Označit tento komentář\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"Opravdu chcete označit tento komentář?\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"Označit\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"Děkujeme za označení komentáře\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"Odeslat\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"Náhled\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"Děkujeme za vložení komentáře\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"Děkujeme za komentář\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"Zobrazit náhled komentáře\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"Opravte níže uvedenou chybu.\"\nmsgstr[1] \"Opravte níže uvedené chyby.\"\nmsgstr[2] \"Opravte níže uvedené chyby.\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"Komentář odeslat\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"nebo upravit\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/cy/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:24+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Welsh (http://www.transifex.com/projects/p/django/language/\"\n\"cy/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: cy\\n\"\n\"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != \"\n\"11) ? 2 : 3;\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"Sylw\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"ac\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"math cynnwys\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"ID gwrthrych\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"sylw\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"dyddiad/amser wedi ymostwng\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"cyfeiriad IP\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"yn gyhoeddus\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"wedi diddymu\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\"Postiwyd gan %(user)s ar %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/da/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:24+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Danish (http://www.transifex.com/projects/p/django/language/\"\n\"da/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: da\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"Indhold\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"Metadata\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"Markeret\"\nmsgstr[1] \"Markeret\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"Marker valgte kommentarer\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"Godkendt\"\nmsgstr[1] \"Godkendt\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"Godkend valgte kommentarer\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"fjernet\"\nmsgstr[1] \"fjernet\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"Fjern valgte kommentarer\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"1 kommentar blev %(action)s\"\nmsgstr[1] \"%(count)s kommentarer blev %(action)s.\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"kommentarer på %(site_name)s\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"Seneste kommentarer på %(site_name)s\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"Navn\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"E-mail-adresse\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"Kommentar\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"Var din mund! Ordet %s er ikke tilladt her.\"\nmsgstr[1] \"Var din mund! Ordene %s er ikke tilladt her.\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"og\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"\"\n\"Hvis du indtaster noget i dette felt, vil din kommentar blive betragtet som \"\n\"spam.\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"indholdstype\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"objekt-ID\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"bruger\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"brugerens navn\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"brugerens e-mail-adresse\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"brugerens URL\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"kommentar\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"dato/tidspunkt for oprettelse\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"IP-adresse\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"er offentlig\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"\"\n\"Hvis du fjerner afkrydsningen her, bliver din kommentar slettet fra sitet.\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"er fjernet\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\"Afkryds denne boks, hvis kommentaren er upassende. Beskeden \\\"Denne \"\n\"kommentar er blevet fjernet\\\" vil blive vist i stedet.\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"kommentarer\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"\"\n\"Denne kommentar blev indsendt af en autenticeret bruger; derfor er navnet \"\n\"skrivebeskyttet.\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\"Denne kommentar blev indsendt af en autenticeret bruger; derfor er e-mail-\"\n\"adressen skrivebeskyttet.\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\"Indsendt af %(user)s den %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"Flag\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"dato\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"kommentarflag\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"kommentarflag\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"Godkend en kommentar\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"Vil du godkende denne kommentar?\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"Godkend\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"Tak for godkendelsen\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"\"\n\"Tak fordi du tog dig tid til at højne kvaliteten af diskussionen på vores \"\n\"website\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"Fjern en kommentar\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"Skal kommentaren fjernes?\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"Fjern\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"Tak for fjernelsen\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"Flag denne kommentar\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"Skal kommentaren flages?\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"Flag\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"Tak for markeringen\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"Indsend\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"Forhåndsvis\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"Tak for kommenteringen\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"Tak for kommentaren\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"Forhåndsvis kommentar\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"Ret venligst fejlen herunder.\"\nmsgstr[1] \"Ret venligst fejlene herunder.\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"Indsend din kommentar\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"eller gennemfør ændringer\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/de/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:24+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: German (http://www.transifex.com/projects/p/django/language/\"\n\"de/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: de\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"Inhalt\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"Metadaten\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"markiert\"\nmsgstr[1] \"markiert\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"Ausgewählte Kommentare markieren\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"freigegeben\"\nmsgstr[1] \"freigegeben\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"Ausgewählte Kommentare freigeben\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"entfernt\"\nmsgstr[1] \"entfernt\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"Ausgewählte Kommentare entfernen\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"1 Kommentar wurde erfolgreich %(action)s.\"\nmsgstr[1] \"%(count)s Kommentare wurden erfolgreich %(action)s.\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"%(site_name)s-Kommentare\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"Die neuesten Kommentare auf %(site_name)s\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"Name\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"E-Mail-Adresse\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"Adresse (URL)\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"Kommentar\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"Keine Schimpfworte! Das Wort %s ist hier nicht erlaubt!\"\nmsgstr[1] \"Keine Schimpfworte! Die Wörter %s sind hier nicht erlaubt!\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"und\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"\"\n\"Wenn Sie irgendetwas in dieses Feld eintragen, wird der Kommentar als Spam \"\n\"betrachtet\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"Inhaltstyp\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"Objekt-ID\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"Benutzer\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"Benutzername\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"E-Mail-Adresse\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"URL\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"Kommentar\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"Datum/Zeit Erstellung\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"IP-Adresse\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"ist öffentlich\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"Deaktivieren, um den Kommentar sofort von der Website zu entfernen.\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"ist gelöscht\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\"Hier einen Haken setzen, wenn der Kommentar unpassend ist. Stattdessen wird \"\n\"dann \\\"Dieser Kommentar wurde entfernt\\\" Meldung angezeigt.\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"Kommentare\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"\"\n\"Dieser Kommentar wurde von einem authentifizierten Benutzer geschrieben.\\n\"\n\"Der Name ist daher schreibgeschützt.\\n\"\n\"\\n\"\n\"%(text)s\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\"Dieser Kommentar wurde von einem authentifizierten Benutzer geschrieben.\\n\"\n\"Die E-Mail-Adresse ist daher schreibgeschützt.\\n\"\n\"\\n\"\n\"%(text)s\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\"Geschrieben von %(user)s am %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"Markierung\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"Datum\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"Kommentar-Markierung\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"Kommentar-Markierungen\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"Kommentar freigeben\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"Wollen Sie diesen Kommentar wirklich freigeben?\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"Freigeben\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"Vielen Dank, dass Sie den Kommentar freigegeben haben\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"\"\n\"Vielen Dank, dass Sie dabei mithelfen, die Qualität der Diskussion auf \"\n\"unserer Website zu verbessern\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"Kommentar entfernen\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"Wollen Sie diesen Kommentar wirklich entfernen?\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"Entfernen\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"Vielen Dank, dass Sie diesen Kommentar entfernt haben\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"Diesen Kommentar markieren\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"Wollen Sie diesen Kommentar wirklich markieren?\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"Markierung\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"Vielen Dank, dass Sie diesen Kommentar markiert haben\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"Abschicken\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"Vorschau\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"Vielen Dank, dass Sie einen Kommentar geschrieben haben\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"Vielen Dank für Ihren Kommentar\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"Kommentarvorschau\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"Bitte den unten aufgeführten Fehler korrigieren.\"\nmsgstr[1] \"Bitte die unten aufgeführten Fehler korrigieren.\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"Kommentar abschicken\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"oder Änderungen vornehmen\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/el/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Dimitris Glezos <glezos@indifex.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Yorgos Pagles <y.pagles@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:24+0000\\n\"\n\"Last-Translator: Yorgos Pagles <y.pagles@gmail.com>\\n\"\n\"Language-Team: Greek (http://www.transifex.com/projects/p/django/language/\"\n\"el/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: el\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"Περιεχόμενο\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"Μεταδεδομένα\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"επισημασμένο\"\nmsgstr[1] \"επισημασμένα\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"Επισημανση των επιλεγμένων σχολίων\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"εγκρίθηκε\"\nmsgstr[1] \"εγκρίθηκαν\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"Έγκριση των συγκεκριμένων σχολίων\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"αφαιρέθηκε\"\nmsgstr[1] \"αφαιρέθηκαν\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"Αφαίρεση των επιλεγμένων σχολίων\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"\"\nmsgstr[1] \"Πραγματοποιήθκε επιτυχημένα %(action)s στα %(count)s σχόλια.\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"Σχόλια στο %(site_name)s\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"Τελευταία σχόλια στο %(site_name)s\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"Όνομα\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"Ηλεκτρονική διεύθυνση\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"Σχόλιο\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"Η λέξη %s δεν επιτρέπεται σε σχόλια.\"\nmsgstr[1] \"Η λέξεις %s δεν επιτρέπονται σε σχόλια.\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"και\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"\"\n\"Αφήστε αυτό το πεδίο κενό. Αν εισάγετε κάτι τότε το σχόλιο θα θεωρηθεί spam \"\n\"και δεν θα εμφανιστεί.\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"τύπος περιεχομένου\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"ID αντικειμένου\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"χρήστης\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"όνομα χρήστη\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"ηλεκτρονική διεύθυνση χρήστη\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"διεύθυνση ιστοτόπου χρήστη\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"σχόλιο\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"ημερομηνία/ώρα υποβολής\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"διεύθυνση IP\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"είναι δημόσιο\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"\"\n\"Απεπιλέξτε αυτή την επιλογή για να κάνετε το σχόλιο να μην εμφανίζεται.\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"είναι διαγραμμένο\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\"Επιλέξτε αυτή την επιλογή εάν το σχόλιο είναι ανάρμοστο. Ένα μήνυμα \\\"Αυτό \"\n\"το σχόλιο διαγράφηκε\\\" θα εμφανιστεί στη θέση του.\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"σχόλια\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"\"\n\"Αυτό το σχόλιο πραγματοποιήθκε από πιστοποιημένο χρήστη και για τον λόγο \"\n\"αυτό δεν είναι είναι δυνατή η επεξεργασία του ονόματός του.\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\"Αυτό το σχόλιο πραγματοποιήθκε από πιστοποιημένο χρήστη και για τον λόγο \"\n\"αυτό δεν είναι είναι δυνατή η επεξεργασία της διεύθυνσης του ηλεκτρονικού \"\n\"του ταχυδρομείου.\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\"Σχόλιο από %(user)s στις %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"επισήμανση\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"ημερομηνία\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"επισήμανση σχολίου\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"επισημάνσεις σχολίου\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"Έγκριση σχολίου\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"Επιβεβαιώστε ότι επιθυμείτε την δημόσια εμφάνιση του σχολίου.\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"Έγκριση.\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"Ευχαριστούμε για την έγκριση.\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"\"\n\"Ευχαριστούμε για τον χρόνο που διαθέσατε για την βελτίωση της ποιότητας των \"\n\"σχολίων στον ιστότοπό μας.\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"Αφαίρεση σχολίου\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"Επιβεβαιώστε ότι επιθυμείτε την αφαίρεση του σχολίου.\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"Αφαίρεση\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"Ευχαριστούμε για την αφαίρεση\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"Επισήμανση σχολίου\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"Επιβεβαιώστε ότι επιθυμείτε την επισήμανσση του σχολίου.\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"Επισήμανση\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"Ευχαριστούμε για την επισήμανση\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"Δημοσίευση\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"Προβολή:\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"Ευχαριστούμε για το σχόλιό σας\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"Ευχαριστούμε για το σχόλιό σας\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"Προβολή του σχολίου σας\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"Παρακαλούμε διορθώστε το παρακάτω σφάλμα:\"\nmsgstr[1] \"Παρακαλούμε διορθώστε τα παρακάτω σφάλματα:\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"Δημοσιοποίηση του σχολίου σας\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"ή πραγματοποιήστε αλλαγές\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/en/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:24+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: English <en@li.org>\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: en\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"Content\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"Metadata\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"flagged\"\nmsgstr[1] \"flagged\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"Flag selected comments\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"approved\"\nmsgstr[1] \"approved\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"Approve selected comments\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"removed\"\nmsgstr[1] \"removed\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"Remove selected comments\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"1 comment was successfully %(action)s.\"\nmsgstr[1] \"%(count)s comments were successfully %(action)s.\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"%(site_name)s comments\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"Latest comments on %(site_name)s\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"Name\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"Email address\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"Comment\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"Watch your mouth! The word %s is not allowed here.\"\nmsgstr[1] \"Watch your mouth! The words %s are not allowed here.\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"and\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"content type\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"object ID\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"user\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"user's name\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"user's email address\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"user's URL\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"comment\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"date/time submitted\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"IP address\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"is public\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"is removed\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"comments\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"flag\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"date\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"comment flag\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"comment flags\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"Approve a comment\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"Really make this comment public?\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"Approve\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"Thanks for approving\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"Remove a comment\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"Really remove this comment?\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"Remove\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"Thanks for removing\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"Flag this comment\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"Really flag this comment?\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"Flag\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"Thanks for flagging\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"Post\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"Preview\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"Thanks for commenting\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"Thank you for your comment\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"Preview your comment\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"Please correct the error below\"\nmsgstr[1] \"Please correct the errors below\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"Post your comment\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"or make changes\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/en_GB/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Ross Poulton <ross@rossp.org>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:24+0000\\n\"\n\"Last-Translator: Ross Poulton <ross@rossp.org>\\n\"\n\"Language-Team: English (United Kingdom) (http://www.transifex.com/projects/p/\"\n\"django/language/en_GB/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: en_GB\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"Content\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"Metadata\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"flagged\"\nmsgstr[1] \"flagged\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"Flag selected comments\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"approved\"\nmsgstr[1] \"approved\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"Approve selected comments\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"removed\"\nmsgstr[1] \"removed\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"Remove selected comments\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"\"\nmsgstr[1] \"%(count)s comments were successfully %(action)s.\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"%(site_name)s comments\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"Latest comments on %(site_name)s\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"Name\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"Email address\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"Comment\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"Watch your mouth! The word %s is not allowed here.\"\nmsgstr[1] \"Watch your mouth! The words %s are not allowed here.\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"and\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"content type\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"object ID\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"user\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"user's name\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"user's email address\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"user's URL\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"comment\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"date/time submitted\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"IP address\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"is public\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"is removed\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"comments\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"flag\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"date\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"comment flag\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"comment flags\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"Approve a comment\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"Really make this comment public?\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"Approve\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"Thanks for approving\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"Remove a comment\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"Really remove this comment?\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"Remove\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"Thanks for removing\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"Flag this comment\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"Really flag this comment?\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"Flag\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"Thanks for flagging\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"Post\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"Preview\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"Thanks for commenting\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"Thank you for your comment\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"Preview your comment\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"Please correct the error below\"\nmsgstr[1] \"Please correct the errors below\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"Post your comment\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"or make changes\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/eo/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:24+0000\\n\"\n\"Last-Translator: Baptiste <baptiste+transifex@darthenay.fr>\\n\"\n\"Language-Team: Esperanto (http://www.transifex.com/projects/p/django/\"\n\"language/eo/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: eo\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"Enhavo\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"Metadatumo\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"markita\"\nmsgstr[1] \"markitaj\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"Marki elektitajn komentojn\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"aprobita\"\nmsgstr[1] \"aprobitaj\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"Aprobi elektitajn komentojn\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"forigita\"\nmsgstr[1] \"forigitaj\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"Forigi elektitajn komentojn\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"1 komento estis suksese %(action)s.\"\nmsgstr[1] \"%(count)s komentoj estis suksese %(action)s.\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"%(site_name)s komentoj\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"Lastaj komentoj ĉe %(site_name)s\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"Nomo\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"Retpoŝtadreso\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"Komento\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"Atentu via lingvaĵo! La vorto %s ne estas permisita ĉi-tie.\"\nmsgstr[1] \"Atentu via lingvaĵo! La vortoj %s ne estas permisitaj ĉi-tie.\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"kaj\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"\"\n\"Se vi enigas ion-ajn en ĉi-tiu kampo, via komento estos traktita kiel spamo\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"enhava tipo\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"objekta identigaĵo\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"uzanto\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"uzanta nomo\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"uzanta retpoŝtadreso\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"uzanta URL\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"komento\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"dato kaj horo transsenditaj\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"IP-adreso\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"estas publika\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"\"\n\"Malŝaltu ĉi-tiun markobutonon por definitive malaperigi la komenton el la \"\n\"retejo.\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"estas forigita\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\"Ŝaltu ĉi-tiun markobutonon se la komento estas nekonvena. La mesaĝo \\\"Ĉi-tiu \"\n\"komento estis forigita\\\" estos montrita anstataŭe.\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"komentoj\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"\"\n\"Ĉi-tiu komento estis afiŝita de aŭtentigita uzanto, do tiel la nomo estas \"\n\"nurlega.\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\"Ĉi-tiu komento estis afiŝita de aŭtentigita uzanto, do tiel la nomo kaj \"\n\"retpoŝtadreo estas nurlegaj.\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\"Afiŝita de %(user)s - %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"marko\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"dato\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"komenta marko\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"komentaj markoj\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"Aprobi komenton\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"Ĉu certe publikigi ĉi-tiun komenton?\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"Aprobi\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"Dankon por la aprobo\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"\"\n\"Dankon por trapasi tempon por plibonigi la diskutan kvaliton ĉe nia retejo\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"Forigi komenton\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"Ĉu certe forigi ĉi-tiun komenton?\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"Forigu\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"Dankon por la forigo\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"Marki ĉi-tiun komenton\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"Ĉu certe marki ĉi-tiun komenton?\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"Marki\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"Dankon por la marko\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"Afiŝi\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"Antaŭrigardo\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"Dankon por al komentado\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"Dankon por via komento\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"Antaŭrigardi vian komenton\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"Bonvolu ĝustigi la eraron sube.\"\nmsgstr[1] \"Bonvolu ĝustigi la erarojn sube.\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"Publikigi vian komenton\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"aŭ lin redakti\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/es/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Marc Garcia <garcia.marc@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:24+0000\\n\"\n\"Last-Translator: Marc Garcia <garcia.marc@gmail.com>\\n\"\n\"Language-Team: Spanish (http://www.transifex.com/projects/p/django/language/\"\n\"es/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: es\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"contenido\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"metadatos\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"marcado\"\nmsgstr[1] \"marcados\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"Marcar los comentarios seleccionados\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"aprobado\"\nmsgstr[1] \"aprobados\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"aprobar los comentarios seleccionados\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"eliminado\"\nmsgstr[1] \"eliminados\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"Eliminar los comentarios seleccionados\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"1 comentarios ha sido %(action)s satisfactoriamente.\"\nmsgstr[1] \"%(count)s comentarios han sido %(action)s satisfactoriamente.\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"comentarios de %(site_name)s\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"Últimos comentarios en %(site_name)s\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"Nombre\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"dirección de correo electrónico\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"Comentario\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"¡Cuide su vocabulario! Aquí no admitimos la palabra %s.\"\nmsgstr[1] \"¡Cuide su vocabulario! Aquí no admitimos las palabras %s.\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"y\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"Si introduce algo en este campo su comentario será tratado como spam\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"tipo de contenido\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"ID de objeto\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"usuario\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"nombre del usuario\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"dirección de correo electrónico del usuario\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"URL del usuario\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"comentario\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"fecha/hora de envío\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"Dirección IP\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"es público\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"\"\n\"Desmarque esta casilla para hacer desaparecer el comentario del sitio web de \"\n\"forma efectiva.\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"está eliminado\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\"Marque esta opción si el comentario es inapropiado. En su lugar se mostrará \"\n\"el mensaje \\\"Este comentario ha sido eliminado\\\".\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"comentarios\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"\"\n\"Este comentario ha sido enviado por un usuario autentificado: de modo que su \"\n\"nombre no es modificable.\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\"Este comentario ha sido colocado por un usuario autentificado: de modo que \"\n\"su dirección de correo electrónico no es modificable.\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\"Enviado por %(user)s en %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"marcar\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"fecha\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"marca de comentario\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"marcas de comentario\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"Aprobar un comentario\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"Realmente desea hacer este comentario público?\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"Aprobar\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"Gracias por aprobar\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"\"\n\"Gracias por tomarse el tiempo para mejorar la calidad del debate en nuestro \"\n\"sitio\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"Eliminar un comentario\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"¿Realmente desea eliminar este comentario?\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"Eliminar\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"Gracias por eliminar\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"Marcar este comentario\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"¿Realmente desea marcar este comentario?\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"Marcar\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"Graciar por marcar\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"Enviar\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"Previsualizar\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"Gracias por comentar\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"Gracias por su comentario\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"Previsualizar su comentario\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"Por favor, corrija el siguiente error.\"\nmsgstr[1] \"Por favor, corrija los siguientes errores.\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"Envie su comentario\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"o haga cambios\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/es_AR/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:24+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/\"\n\"django/language/es_AR/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: es_AR\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"Contenido\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"Metadatos\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"marcado\"\nmsgstr[1] \"marcados\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"Marcar comentarios seleccionados\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"aprobado\"\nmsgstr[1] \"aprobados\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"Aprobar comentario seleccionado\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"eliminado\"\nmsgstr[1] \"eliminados\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"Eliminar comentarios seleccionados\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"un comentario fue %(action)s satisfactoriamente.\"\nmsgstr[1] \"%(count)s comentarios fueron %(action)s satisfactoriamente\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"comentarios en %(site_name)s\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"Últimos comentarios en %(site_name)s.\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"Nombre\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"Dirección de correo electrónico\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"Comentario\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"¡Controla tu lenguaje! Aquí no admitimos la palabra %s.\"\nmsgstr[1] \"¡Controla tu lenguaje! Aquí no admitimos las palabras %s.\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"y\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"Si introduce algo en este campo su comentario será tratado como spam\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"tipo de contenido\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"ID de objeto\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"usuario\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"nombre de usuario\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"dirección de correo electrónico del usuario\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"URL del usuario\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"comentario\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"fecha/hora de envío\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"Dirección IP\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"es público\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"desmarque este ítem para que el comentario desaparezca del sitio.\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"se ha eliminado\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\"Marque este ítem si el comentario es inapropiado. En su lugar se mostrará un \"\n\"mensaje \\\"Este comentario ha sido eliminado\\\".\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"comentarios\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"\"\n\"Este comentario ha sido enviado por un usuario identificado, por lo tanto el \"\n\"nombre no puede modificarse.\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\"Este comentario ha sido enviado por un usuario identificado, por lo tanto la \"\n\"dirección de correo electrónico no puede modificarse.\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\"Enviado por %(user)s el %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"marca\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"fecha\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"marca de comentario\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"marcas de comentario\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"Aprobar un comentario\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"¿Confirma que realmente desea hacer este comentario público?\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"Aprobar\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"¡Gracias por aprobar!\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"\"\n\"Gracias por tomarse el tiempo de mejorar la calidad de la discusión en \"\n\"nuestro sitio\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"Eliminar un comentario\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"¿Confirma que realmente desea eliminar este comentario?\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"Eliminar\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"¡Gracias por eliminar!\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"Marcar este comentario\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"¿Confirma que realmente desde marcar este comentario?\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"Marcar\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"¡Gracias por marcar!\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"Remitir\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"Previsualización\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"Gracias por dejar su comentario\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"Gracias por dejar su comentario\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"Ver una copia previa de su comentario\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"Por favor, corrija el siguiente error.\"\nmsgstr[1] \"Por favor, corrija los siguientes errores.\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"Enviar su comentario\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"o realice modificaciones\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/es_MX/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Abraham Estrada <abraham.estrada@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:24+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Spanish (Mexico) (http://www.transifex.com/projects/p/django/\"\n\"language/es_MX/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: es_MX\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"Contenido\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"Metadatos\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"marcado\"\nmsgstr[1] \"marcados\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"Marcar comentarios seleccionados\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"aprobado\"\nmsgstr[1] \"aprobados\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"Aprobar comentario seleccionado\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"eliminado\"\nmsgstr[1] \"eliminados\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"Eliminar comentarios seleccionados\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"\"\nmsgstr[1] \"%(count)s comentarios fueron %(action)s satisfactoriamente.\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"comentarios en %(site_name)s\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"Últimos comentarios en %(site_name)s \"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"Nombre\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"Dirección de correo electrónico\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"Comentario\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"¡Controla tu lenguaje! Aquí no admitimos la palabra %s.\"\nmsgstr[1] \"¡Controla tu lenguaje! Aquí no admitimos las palabras %s.\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"y\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"Si introduce algo en este campo su comentario será tratado como spam\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"tipo de contenido\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"ID de objeto\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"usuario\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"nombre de usuario\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"dirección de correo electrónico del usuario\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"URL del usuario\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"comentario\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"fecha/hora de envío\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"Dirección IP\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"es público\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"Desactive esta casilla para hacer el comentario desaparezca del sitio.\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"se ha eliminado\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\"Marque esta casilla si el comentario es inapropiado. En su lugar se mostrará \"\n\"un mensaje \\\"Este comentario ha sido eliminado\\\".\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"comentarios\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"\"\n\"Este comentario ha sido enviado por un usuario identificado, por lo tanto el \"\n\"nombre no puede modificarse.\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\"Este comentario ha sido enviado por un usuario identificado, por lo tanto la \"\n\"dirección de correo electrónico no puede modificarse.\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\"Enviado por %(user)s el %(date)s \\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"marca\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"fecha\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"marca de comentario\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"marcas de comentario\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"Aprobar un comentario\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"¿Desea hacer público este comentario?\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"Aprobar\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"Gracias por aprovar\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"\"\n\"Gracias por tomarse el tiempo para mejorar la calidad de la  discución en \"\n\"nuestro sitio\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"Eliminar comentario\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"¿Desea eliminar este comentario?\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"Eliminar\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"Gracias por eliminar\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"Marcar este comentario\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"¿Desea marcar este comentario?\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"Marcar\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"Gracias por marcar\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"Enviar\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"Previsualizar\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"Gracias por comentar\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"Gracier por el comentario\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"Previsualizar el comentario\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"Por favor corrija el error\"\nmsgstr[1] \"Por favor corrija los errores\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"Envia comentario\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"o hacer cambios\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/et/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# madisvain <madisvain@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:24+0000\\n\"\n\"Last-Translator: madisvain <madisvain@gmail.com>\\n\"\n\"Language-Team: Estonian (http://www.transifex.com/projects/p/django/language/\"\n\"et/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: et\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"Sisu\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"Meta-andmed\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"märgistatud\"\nmsgstr[1] \"märgistatud\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"Märgista valitud kommentaarid\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"heaks kiidetud\"\nmsgstr[1] \"heaks kiidetud\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"Kiida heaks valitud kommentaarid\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"eemaldatud\"\nmsgstr[1] \"eemaldatud\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"Eemalda valitud kommentaarid\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"%(count)s comments were successfully %(action)s.\"\nmsgstr[1] \"%(count)s comments were successfully %(action)s.\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"Saidi %(site_name)s kommentaarid\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"Viimased kommentaarid saidil %(site_name)s\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"Nimi\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"E-posti aadress\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"Kommentaar\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"Jälgige oma keelekasutust. Sõna %s ei ole lubatud.\"\nmsgstr[1] \"Jälgige oma keelekasutust. Sõnad %s ei ole lubatud.\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"ja\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"Kui sisestate sellesse lahtrisse midagi, loetakse kommentaar rämpsuks\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"sisutüüp\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"objekti ID\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"kasutaja\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"kasutaja pärisnimi\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"kasutaja e-posti aadress\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"kasutaja URL\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"kommentaar\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"loomise kuupäev/kellaaeg\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"IP aadress\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"on avalik\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"Eemaldage siit linnuke, et varjata kommentaar saidilt.\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"on eemaldatud\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\"Märkige siia linnuke, kui see kommentaar on ebasobiv. Kommentaari asemel \"\n\"kuvatakse kirja \\\"Kommentaar on kustutatud\\\".\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"kommentaarid\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"\"\n\"Selle kommentaari postitas sisselogitud kasutaja, mistõttu ei ole nimetus \"\n\"muudetav.\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\"Selle kommentaari postitas sisselogitud kasutaja, mistõttu ei ole e-posti \"\n\"aadress muudetav.\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\"Postitatud kasutaja %(user)s poolt %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"märge\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"kuupäev\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"kommentaari märge\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"kommentaari märked\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"Märgi kommentaar sobivaks\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"Oled kindel, et soovid teha selle kommentaari avalikuks?\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"Sobib\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"Aitäh, et märkisid kommentaari sobivaks\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"Aitäh, et leidsid aega parandamaks arutelude kvaliteeti meie lehel\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"Eemalda kommentaar\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"Oled kindel, et soovid selle kommentaari eemaldada?\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"Eemalda\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"Aitäh, et eemaldasid kommentaari\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"Märgi see kommentaar\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"Oled kindel, et soovid selle kommentaari märkida?\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"Märge\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"Aitäh, et märkisid kommentaari\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"Postita\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"Eelvaade\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"Tänan kommenteerimast\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"Aitäh kommentaari eest\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"Kommentaari eelvaade\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"Palun parandage allolev viga\"\nmsgstr[1] \"Palun parandage allolevad vead\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"Postita kommentaar\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"või tee muudatused\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/eu/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Aitzol Naberan <anaberan@codesyntax.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:24+0000\\n\"\n\"Last-Translator: Aitzol Naberan <anaberan@codesyntax.com>\\n\"\n\"Language-Team: Basque (http://www.transifex.com/projects/p/django/language/\"\n\"eu/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: eu\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"Edukia\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"Metada\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"markaduna\"\nmsgstr[1] \"markadunak\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"Markatu aukeratutako iruzkinak\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"onartua\"\nmsgstr[1] \"onartuak\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"Onartu aukeratutako iruzkinak\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"ezabatua\"\nmsgstr[1] \"ezabatuak\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"Ezabatu aukeratutako iruzkinak\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"\"\nmsgstr[1] \"%(count)s iruzkin ondo %(action)s dira.\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"%(site_name)s guneko iruzkinak\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"%(site_name)s guneko azken iruzkinak\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"Izena\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"Eposta helbidea\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"Iruzkina\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"Txiiist! %s hitza ez zaigu gustatzen\"\nmsgstr[1] \"Txiiist! %s hitzak ez zaizkigu gustatzen\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"eta\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"\"\n\"Eremu honetan zerbait idazten baduzu zure iruzkina spam gisa tratatuko da.\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"eduki mota\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"objetuaren ID\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"Erabiltzailea\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"erabiltzailearen izena\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"erabiltzailearen eposta helbidea\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"erabiltzailearen URL\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"iruzkina\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"data/hordua bidalia\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"IP helbidea\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"publikoa\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"Markatu kutxa hau iruzkina webgunetik desagertarazteko.\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"ezabatua\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\"Markatu kutxa hau komentario ezegokia bada. \\\"Komentario hau ezabatua izan da\"\n\"\\\" mezua erakutsiko da bere ordez.\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"iruzkinak\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"\"\n\"Iruzkin hau autentikatutako erabiltzaile batek egin du. Hori dela eta, izena \"\n\"irakurtzeko moduan dago bakarrik. \"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\"Iruzkin hau autentikatutako erabiltzaile batek egin du. Hori dela eta, \"\n\"eposta irakurtzeko moduan dago bakarrik. \"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\"%(user)s erabiltzileak bidalia %(date)s datan\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"marka\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"data\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"iruzkin marka\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"iruzkin markak\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"Onartu iruzkina\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"Publikatu iruzkina?\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"Onartu\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"Eskerrik asko onartzearren\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"\"\n\"Eskerrik asko webguneko estabaidaren kalitatea hobetzeko hartutako \"\n\"denboragatik\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"Ezabatu iruzkina\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"Ziur iruzkin hau ezabtu nahi duzula?\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"Ezabatu\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"Eskerrik asko ezabatzearren\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"Markatu iruzkina\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"Ziur iruzkin hau markatu nahi duzula?\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"Marka\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"Eskerrik asko markatzearren\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"Bidali\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"Aurreikusi\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"Eskerrik asko iruzkintzearren\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"Eskerrik asko zure iruzkinagatik\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"Aurreikusi zure iruzkina\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"Mesedez zuzendu azpiko errorea\"\nmsgstr[1] \"Mesedez zuzendu azpiko erroreak\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"Bidali zure iruzkina\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"edo egin aldaketak\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/fa/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Ali Nikneshan <ali@nikneshan.com>, 2012.\n# Arash Fazeli <arash_fazeli77@yahoo.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-08-11 08:27+0000\\n\"\n\"Last-Translator: Ali Nikneshan <ali@nikneshan.com>\\n\"\n\"Language-Team: Persian (http://www.transifex.com/projects/p/django/language/\"\n\"fa/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: fa\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"محتوا\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"فوق داده\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"پرچم دار\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"نشان‌گذاری نظرات انتخاب شده\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"تایید شده\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"تایید نظرات انتخاب شده\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"حذف شده\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"حذف نظر های انتخاب شده\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"%(count)s کامنت با موفقیت %(action)s شدند.\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"نظرات %(site_name)s\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"آخرین نظرات در  %(site_name)s\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"نام\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"نشانی پست الکترونیکی\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"نشانی اینترنتی\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"نظر:\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"حرف دهنت رو بفهم! کلمهٔ %s اینجا قابل قبول نیست\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"و\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"اگر چیزی در این فیلد وارد کنید، نظر شما به عنوان اسپم شناخته خواهد شد\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"نوع محتوا\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"مشخصهٔ شیء\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"کاربر\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"نام کاربر\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"نشانی پست الکترونیکی کاربر\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"نشانی اینترنتی کاربر\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"نظر\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"تاریخ/زمان فرستاده شد\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"نشانی IP\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"عمومی است\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"تیک این جعبه را بردارید تا نظر به طور کارا از وبگاه ناپدید شود.\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"حذف شده است\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\"اگر نظر نامناسب است این جا علامت بزنید. پیغام \\\"این نظر حذف شد\\\" به جای آن \"\n\"نمایش داده می شود.\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"نظرات\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"این نظر توسط یک کاربر ثبت‌شده فرستاده شده و لذا نامش فقط-خواندنی است.\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\"این نظر توسط یک کاربر ثبت‌شده فرستاده شده و لذا پست الکترونیکی‌اش فقط-خواندنی \"\n\"است.\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\"ارسال‌شده توسط %(user)s در تاریخ %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"علامت گذاری \"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"تاریخ\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"علامت گذاری نظر\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"علامت گذاری های نظر\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"تایید یک نظر\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"واقعا این نظر به صورت عمومی نمایش داده شود؟\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"تایید\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"ممنون از تایید.\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"ممنون از وقتی که برای افزایش کیفیت بحث در سایت ما گذاشتید.\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"حذف یک نظر\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"واقعا این نظر حذف شود؟\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"حذف\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"ممنون از حذف\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"علامت گذاری این نظر\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"واقعا این نظر علامت گذاری شود؟\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"علامت گذاری \"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"ممنون از علامت گذاری \"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"پست\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"پیش نمایش\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"برای اظهار نظر\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"با تشکر از نظر شما\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"پیش نمایش نظر شما\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"لطفا خطاهای زیر را تصحیح\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"نظر خود را ارسال کنید\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"و یا تغییر ایجاد کنید.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/fi/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:24+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Finnish (http://www.transifex.com/projects/p/django/language/\"\n\"fi/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: fi\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"Sisältö\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"Metatieto\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"merkitty\"\nmsgstr[1] \"merkitty\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"Merkitse valitut kommentit\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"hyväksytty\"\nmsgstr[1] \"hyväksytty\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"Hyväksy valitut kommentit\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"poistettu\"\nmsgstr[1] \"poistettu\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"Poista valitut kommentit\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"1 kommentti %(count)s onnistuneesti.\"\nmsgstr[1] \"%(count)s kommenttia %(action)s onnistuneesti.\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"Kommentit sivustolle %(site_name)s\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"Sivuston %(site_name)s viimeisimmät kommentit\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"Nimi\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"Sähköpostiosoite\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"URL-osoite\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"Kommentti\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"Siivoa suusi! Sanaa \\\"%s\\\" ei saa käyttää tässä.\"\nmsgstr[1] \"Siivoa suusi! Sanoja \\\"%s\\\" ei saa käyttää tässä.\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"ja\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"\"\n\"Jos syötät tähän kenttään jotain, kommenttisi luokitellaan roskapostiksi\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"sisältötyyppi\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"kohteen tunniste\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"käyttäjä\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"käyttäjän nimi\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"käyttäjän sähköpostiosoite\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"käyttäjän URL\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"kommentti\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"lähettämishetki\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"IP-osoite\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"on julkinen\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"Piilottaaksesi kommentin näkymästä sivustolta, poista tämä ruksi.\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"on poistettu\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\"Rastita jos kommentti on asiaankuulumaton. Kommentin tilalla näytetään\\n\"\n\"viesti \\\"Tämä kommentti on poistettu\\\".\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"kommentit\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"\"\n\"Kommentin lähettäjän nimeä ei voi muuttaa, koska lähettäjä on kirjautunut \"\n\"käyttäjä.\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\"Kommentin lähettäjän sähköpostiosoitetta ei voi muuttaa, koska lähettäjä on \"\n\"kirjautunut käyttäjä.\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\" Kirjoittanut %(user)s, pvm %(date)s\\\\n\\n\"\n\" \\\\n\\n\"\n\" %(comment)s\\\\n\\n\"\n\" \\\\n\\n\"\n\" http://%(domain)s%(url)s\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"merkintä\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"päivä\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"kommentin merkintä\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"kommenttien merkinnät\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"Hyväksy kommentti\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"Haluatko varmasti tehdä kommentista julkisen?\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"Hyväksy\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"Kiitos hyväksynnästäsi\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"Kiitos sivustomme keskusteluihin panostamastasi ajasta\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"Poista kommentti\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"Haluatko varmasti poistaa tämän kommentin?\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"Poista\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"Kiitos poistamisesta\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"Merkitse tämä kommentti\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"Haluatko varmasti merkitä tämän kommentin?\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"Merkitse\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"Kiitos merkitsemisestä\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"Lähetä\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"Esikatsele\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"Kiitos kommentista\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"Kiitos kommentistasi\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"Esikatsele kommenttia\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"Korjaa allaoleva virhe\"\nmsgstr[1] \"Korjaa allaolevat virheet\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"Lähetä kommentti\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"tai tee muutoksia\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/fr/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <claude@2xlibre.net>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:24+0000\\n\"\n\"Last-Translator: claudep <claude@2xlibre.net>\\n\"\n\"Language-Team: French (http://www.transifex.com/projects/p/django/language/\"\n\"fr/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: fr\\n\"\n\"Plural-Forms: nplurals=2; plural=(n > 1);\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"Contenu\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"Métadonnées\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"marqué\"\nmsgstr[1] \"marqués\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"Marquer les commentaires sélectionnés\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"approuvé\"\nmsgstr[1] \"approuvés\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"Approuver les commentaires sélectionnés\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"supprimé\"\nmsgstr[1] \"supprimés\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"Masquer les commentaires sélectionnés\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"1 commentaire a été %(action)s avec succès.\"\nmsgstr[1] \"%(count)s commentaires ont été %(action)ss avec succès.\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"Commentaires sur %(site_name)s\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"Derniers commentaires sur %(site_name)s\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"Nom\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"Adresse électronique\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"Commentaire\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"Attention à votre langage ! Le terme %s n'est pas autorisé ici.\"\nmsgstr[1] \"\"\n\"Attention à votre langage ! Les termes %s ne sont pas autorisés ici.\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"et\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"\"\n\"Si vous saisissez quelque chose dans ce champ, votre commentaire sera \"\n\"considéré comme étant indésirable\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"type de contenu\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"ID de l'objet\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"utilisateur\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"nom de l'utilisateur\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"adresse électronique de l'utilisateur\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"URL de l'utilisateur\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"commentaire\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"date et heure soumises\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"adresse IP\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"est public\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"\"\n\"Décochez cette case pour faire vraiment disparaître ce commentaire du site.\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"est masqué\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\"Cochez cette case si le commentaire est inadéquat. Un message type « Ce \"\n\"commentaire a été supprimé » sera affiché en lieu et place de celui-ci.\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"commentaires\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"\"\n\"Ce commentaire a été posté par un utilisateur authentifié, le nom est donc \"\n\"en lecture seule.\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\"Ce commentaire a été posté par un utilisateur authentifié et le courriel est \"\n\"donc en lecture seule\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\"Posté par %(user)s le %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"indicateur\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"date\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"indicateur de commentaire\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"indicateurs de commentaire\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"Valider un commentaire\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"Voulez-vous rendre ce commentaire public ?\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"Valider\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"Merci pour cette validation\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"\"\n\"Merci d'avoir pris le temps d'améliorer la qualité de la discussion sur \"\n\"notre site\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"Supprimer un commentaire\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"Voulez-vous supprimer définitivement ce commentaire ?\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"Supprimer\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"Merci pour cette suppression\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"Signaler ce commentaire\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"Voulez-vous vraiment signaler ce commentaire ?\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"Signaler\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"Merci d'avoir signalé ce commentaire\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"Envoyer\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"Prévisualiser\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"Merci pour votre commentaire\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"Merci pour votre commentaire\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"Prévisualiser votre commentaire\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"Veuillez corriger l'erreur suivante.\"\nmsgstr[1] \"Veuillez corriger les erreurs suivantes.\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"Envoyer votre commentaire\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"ou le modifier\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/fy_NL/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:37+0100\\n\"\n\"PO-Revision-Date: 2011-03-15 15:37+0000\\n\"\n\"Last-Translator: Django team\\n\"\n\"Language-Team: English <en@li.org>\\n\"\n\"Language: fy_NL\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1)\\n\"\n\n#: admin.py:12\nmsgid \"Content\"\nmsgstr \"\"\n\n#: admin.py:15\nmsgid \"Metadata\"\nmsgstr \"\"\n\n#: admin.py:42\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: admin.py:43\nmsgid \"Flag selected comments\"\nmsgstr \"\"\n\n#: admin.py:47\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: admin.py:48\nmsgid \"Approve selected comments\"\nmsgstr \"\"\n\n#: admin.py:52\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: admin.py:53\nmsgid \"Remove selected comments\"\nmsgstr \"\"\n\n#: admin.py:65\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: feeds.py:13\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"\"\n\n#: feeds.py:23\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"\"\n\n#: models.py:22\nmsgid \"content type\"\nmsgstr \"\"\n\n#: models.py:24\nmsgid \"object ID\"\nmsgstr \"\"\n\n#: models.py:50 models.py:168\nmsgid \"user\"\nmsgstr \"\"\n\n#: models.py:52\nmsgid \"user's name\"\nmsgstr \"\"\n\n#: models.py:53\nmsgid \"user's email address\"\nmsgstr \"\"\n\n#: models.py:54\nmsgid \"user's URL\"\nmsgstr \"\"\n\n#: models.py:56 models.py:76 models.py:169\nmsgid \"comment\"\nmsgstr \"\"\n\n#: models.py:59\nmsgid \"date/time submitted\"\nmsgstr \"\"\n\n#: models.py:60\nmsgid \"IP address\"\nmsgstr \"\"\n\n#: models.py:61\nmsgid \"is public\"\nmsgstr \"\"\n\n#: models.py:62\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"\"\n\n#: models.py:64\nmsgid \"is removed\"\nmsgstr \"\"\n\n#: models.py:65\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\n#: models.py:77\nmsgid \"comments\"\nmsgstr \"\"\n\n#: models.py:119\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"\"\n\n#: models.py:128\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\n#: models.py:153\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\n#: models.py:170\nmsgid \"flag\"\nmsgstr \"\"\n\n#: models.py:171\nmsgid \"date\"\nmsgstr \"\"\n\n#: models.py:181\nmsgid \"comment flag\"\nmsgstr \"\"\n\n#: models.py:182\nmsgid \"comment flags\"\nmsgstr \"\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/ga/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Michael Thornhill <michael@maithu.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:24+0000\\n\"\n\"Last-Translator: Michael Thornhill <michael@maithu.com>\\n\"\n\"Language-Team: Irish (http://www.transifex.com/projects/p/django/language/\"\n\"ga/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ga\\n\"\n\"Plural-Forms: nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : \"\n\"4);\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"Inneachar\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"Meiteashonraí\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"bratach curtha leis \"\nmsgstr[1] \"bratach curtha leis \"\nmsgstr[2] \"bratach curtha leis \"\nmsgstr[3] \"bratach curtha leis \"\nmsgstr[4] \"bratach curtha leis \"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"Bratach nótaí tráchta roghnaithe\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"ceadaithe\"\nmsgstr[1] \"ceadaithe\"\nmsgstr[2] \"ceadaithe\"\nmsgstr[3] \"ceadaithe\"\nmsgstr[4] \"ceadaithe\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"Cheadú nótaí tráchta roghnaithe\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"bhaint\"\nmsgstr[1] \"bhaint\"\nmsgstr[2] \"bhaint\"\nmsgstr[3] \"bhaint\"\nmsgstr[4] \"bhaint\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"Bain nótaí tráchta roghnaithe\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"Bhí %(count)s nóta tráchta %(action)s go rathúil.\"\nmsgstr[1] \"Bhí %(count)s nótaí tráchta %(action)s go rathúil.\"\nmsgstr[2] \"Bhí %(count)s nótaí tráchta %(action)s go rathúil.\"\nmsgstr[3] \"Bhí %(count)s nótaí tráchta %(action)s go rathúil.\"\nmsgstr[4] \"Bhí %(count)s nótaí tráchta %(action)s go rathúil.\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"%(site_name)s nótaí\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"Nótaí tráchtaí is déanaí ar %(site_name)s\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"Ainm\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"R-phost\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"Nóta tráchta\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"Féach ar do bhéal! Níl an focal %s cheadaítear anseo.\"\nmsgstr[1] \"Féach ar do bhéal! Níl na focail %s cheadaítear anseo.\"\nmsgstr[2] \"Féach ar do bhéal! Níl na focail %s cheadaítear anseo.\"\nmsgstr[3] \"Féach ar do bhéal! Níl na focail %s cheadaítear anseo.\"\nmsgstr[4] \"Féach ar do bhéal! Níl na focail %s cheadaítear anseo.\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"agus\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"\"\n\"Má cuireann tú aon rud sa réimse seo, beidh do nóta déileálfar mar spam\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"tíopa inneachar \"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"oibiacht ID\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"úsáideoir\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"Ainm úsáideoir\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"seoladh r-phost an t-úsáideoir\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"URL an t-úsáideora\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"trácht\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"Dáta/am curtha isteach\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"Seol IP\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"poiblí\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"Díthiceáil an bosca seo chun an nóta a thógáil as an suíomh.\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"Scrioste\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\"Seic an bosca seo dá bbéadh an nóta tráchta seo míchuí. Taispeantar \\\"Bhí an \"\n\"nóta tráchta scrioste\\\" in áit an nóta tráchta seo.\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"nótaí tráchta\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"\"\n\"Bhí an nóta tráchta póstailte trí uaire trí úsáideoir fíordheimhnithe mar \"\n\"sin tá an ainm léamh-amhain.\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\"Bhí an nóta tráchta póstailte trí úsáideoir fíordeimhnite mar sin tá an r-\"\n\"phost léamh amháin.\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\"Postáilte trí %(user)s ar %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"brat\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"dáta\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"brat nóta tráchta\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"bratacha nótaí tráchta\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"Ceadaigh nóta tráchta\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"Cuir an nóta seo poiblí?\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"Fhormheas\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"Go raibh maith agait le hadhaigh to formheas\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"\"\n\"Go raibh maith agat as an am chun feabhas a chur ar chaighdeán na \"\n\"díospóireachta ar ár suíomh\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"Tóg amach nóta tráchta\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"Dáiríre, cuir amach an nóta seo?\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"Tóg amach\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"Go raibh maith agat le hadhaigh do thógail amach\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"Cuir brat ar an nóta tráchta seo\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"Go deimhin cuir brat ar an nóta tráchta seo?\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"Brat\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"Go raibh maith agat le hadhaigh do brat\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"Post\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"Réamhamharc\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"Go raibh maith agat le hadhaign do nóta tráchta\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"Go raibh maith agat le hadhaigh do nóta tráchta\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"Nóta tráchta réamhamharc\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"Le do thoil, ceartaigh an botún thíos.\"\nmsgstr[1] \"Le do thoil, ceartaigh na botúin thíos.\"\nmsgstr[2] \"Le do thoil, ceartaigh na botúin thíos.\"\nmsgstr[3] \"Le do thoil, ceartaigh na botúin thíos.\"\nmsgstr[4] \"Le do thoil, ceartaigh na botúin thíos.\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"Seol do Nóta tráchta\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"nó déan aithraithe\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/gl/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# fasouto <fsoutomoure@gmail.com>, 2011.\n# fonso <fonzzo@gmail.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:24+0000\\n\"\n\"Last-Translator: fonso <fonzzo@gmail.com>\\n\"\n\"Language-Team: Galician (http://www.transifex.com/projects/p/django/language/\"\n\"gl/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: gl\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"Contido\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"Metadatos\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"con indicador\"\nmsgstr[1] \"con indicador\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"Poñer un indicador\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"aprobado\"\nmsgstr[1] \"aprobados\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"Aprobar os comentarios seleccionados\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"eliminado\"\nmsgstr[1] \"eliminados\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"Eliminar os comentarios seleccionados\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"\"\nmsgstr[1] \"%(count)s comentarios foron %(action)s con éxito.\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"Comentarios en %(site_name)s\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"Últimos comentarios en %(site_name)s\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"Nome\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"Enderezo electrónico\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"Comentario\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"Sen palabrotas, por favor! Aquí non se pode usar a palabra %s.\"\nmsgstr[1] \"Sen palabrotas, por favor! Aquí non se poden usar as palabras %s.\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"e\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"\"\n\"Se insire calquera cousa neste campo o seu comentario será tratado coma spam\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"tipo de contido\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"ID do obxecto\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"usuario\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"nome de usuario\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"enderedo electrónico do usuario\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"URL do usuario\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"comentario\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"data/hora do envío\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"Enderezo IP\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"é público\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"\"\n\"Desmarque esta casilla para eliminar o comentario definitivamente deste \"\n\"sitio.\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"está borrado\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\"Marque esta caixa se o comentario non é apropiado. Verase a mensaxe \\\"Este \"\n\"comentario foi borrado\\\" no canto do seu contido.\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"comentarios\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"\"\n\"Este comentario foi publicado por un usuario identificado e polo tanto o \"\n\"nome é de só lectura.\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\"Este comentario foi publicado por un usuario identificado e polo tanto o \"\n\"enderezo de correo electrónico é de só lectura.\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\"Publicado por %(user)s o %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"indicador\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"data\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"indicador de comentarios\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"indicadores de comentarios\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"Aprobar un comentario\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"Realmente desexa facer público este comentario?\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"Aprobar\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"Grazas pola aprobación\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"\"\n\"Grazas por tomar o tempo de mellorar a calidade da discusión no noso sitio\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"Eliminar un comentario\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"Realmente desexa eliminar este comentario?\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"Eliminar\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"Grazas pola eliminación\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"Poñerlle un indicador a este comentario\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"Realmente desexa poñerlle un indicador a este comentario?\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"Indicador\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"Grazas por colocar o indicador\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"Publicar\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"Vista previa\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"Grazas polo seu comentario\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"Grazas polo seu comentario\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"Vista previa do seu comentario\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"Por favor, corrixa o erro de embaixo\"\nmsgstr[1] \"Por favor, corrixa os erros de embaixo\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"Publicar o seu comentario\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"ou facer cambios\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/he/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:24+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Hebrew (http://www.transifex.com/projects/p/django/language/\"\n\"he/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: he\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"תוכן\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"מטא־נתונים\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"סומנה\"\nmsgstr[1] \"סומנו\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"סמן תגובות שנבחרו\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"אושרה\"\nmsgstr[1] \"אושרו\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"אשר תגובות שנבחרו\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"הוסרה\"\nmsgstr[1] \"הוסרו\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"הסר תגובות שנבחרו\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"תגובה אחת %(action)s בהצלחה\"\nmsgstr[1] \"%(count)s תגובות %(action)s בהצלחה\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"תגובות עבור %(site_name)s\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"התגובות האחרונות על %(site_name)s\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"שם\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"כתובת דוא\\\"ל\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"תגובה\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"שמור על לשונך! המילה %s אסורה לשימוש כאן.\"\nmsgstr[1] \"שמור על לשונך! המילים %s אסורות לשימוש כאן.\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"ו\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"אם יוזן משהו בשדה זה תגובתך תטופל כספאם\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"סוג תוכן\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"מזהה אובייקט\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"משתמש\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"שם משתמש\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"כתובת דוא\\\"ל משתמש\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"אתר המשתמש\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"תגובה\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"תאריך/שעת הגשה\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"כתובת IP\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"פומבי \"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"ביטול סימון התיבה יעלים בפועל את התגובה מהאתר\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"האם הוסר\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\"יש לסמן תיבה זו עבור תגובה לא נאותה. הודעת \\\"תגובה זו נמחקה\\\" תוצג במקום \"\n\"התגובה.\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"תגובות\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"הודעה זו נשלחה ע\\\"י משתמש מחובר לכן השם אינו ניתן לשינוי.\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"הודעה זו נשלחה ע\\\"י משתמש מחובר לכן כתובת הדוא\\\"ל אינה ניתנת לשינוי.\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\"הוגש ע\\\"י %(user)s ב %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"סימן\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"תאריך\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"סמן הערה\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"סמני הערה\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"אשר הערה\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"באמת להפוך את התגובה לפומבית?\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"אשר\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"תודה על אישור התגובה\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"תודה על שהקדשת מזמנך כדי לשפר את איכות הדיון באתר שלנו\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"הסר תגובה\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"באמת להסיר תגובה זו?\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"להסיר\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"תודה על ההסרה\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"סמן תגובה זו\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"באמת לסמן תגובה זו?\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"סימן\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"תודה על הסימון\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"פוסט\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"תצוגה מקדימה\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"תודה על התגובה\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"תודה על התגובה\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"תצוגה מקדימה של התגובה\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"בבקשה לתקן את השגיאה למטה\"\nmsgstr[1] \"אנא תקן את שגיאות למטה\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"פרסם את התגובה\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"או לבצע שינויים\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/hi/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Sandeep Satavlekar <sandysat@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:24+0000\\n\"\n\"Last-Translator: Sandeep Satavlekar <sandysat@gmail.com>\\n\"\n\"Language-Team: Hindi (http://www.transifex.com/projects/p/django/language/\"\n\"hi/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: hi\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"विषय सूची\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"मेटाडाटा\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"झंडी ऊंचायी\"\nmsgstr[1] \"झंडी ऊंचायी\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"चयनित टिप्पणियों के लिए झंडी ऊंचाओ\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"स्वीकृत\"\nmsgstr[1] \"स्वीकृत\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"चयनित टिप्पणियों को स्वीकार करो\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"हटाया\"\nmsgstr[1] \"हटाया\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"चयनित टिप्पणियाँ हटाएँ\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"%(count)s टिप्पणि सफलतापूर्वक %(action)s\"\nmsgstr[1] \"%(count)s टिप्पणियाँ सफलतापूर्वक %(action)s\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"%(site_name)s टिप्पणियाँ \"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"%(site_name)s पर नवीनतम टिप्पणियाँ\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"नाम\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"ईमेल पता\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"टिप्पणी\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"अपनी ज़बान संभालो %s यह शब्द इस्तेमाल करने की यहाँ अनुमति नहीं हैं \"\nmsgstr[1] \"अपनी ज़बान संभालो %s यह शब्द इस्तेमाल करने की यहाँ अनुमति नहीं हैं \"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"और\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"\"\n\"अगर आप इस क्षेत्र में कुछ भी दर्ज करते हो तो आप की टिप्पणी के साथ spam के जैसा सुलुख किया \"\n\"जायेगा\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"विषय-सूची प्रकार\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"वस्तु आइ डी\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"उपभोक्ता\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"प्रयोक्ता नाम\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"प्रयोक्ता ईमेल पता\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"प्रयोक्ता यू.आर.एल\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"टिप्पणी\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"तिथि/समय निवेदित\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"आइ.पि पता\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"सार्वजनिक है\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"इस टिप्पणी को प्रभावी रूप से साइट से गायब करने के लिए यह बॉक्स को अनचेक करें.\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"हटाया गया\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\"अगर टिप्पणी अनुचित है तो इस बॉक्स को चेक करें. एक \\\"यह टिप्पणी हटा दी गयी हैं\\\" संदेश \"\n\"प्रदर्शित किया जाएगा.\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"टिप्पणियाँ\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"\"\n\"इस टिप्पणी को किसी प्राधिकृत उपयोगकर्ता द्वारा पोस्ट किया गया था और इसीलिए इस नाम \"\n\"को केवल पढ़ने के लिए है.\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\"इस टिप्पणी को किसी प्राधिकृत उपयोगकर्ता द्वारा पोस्ट किया गया था और इसीलिए यह ईमेल \"\n\"केवल पढ़ने के लिए है.\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\"%(user)s द्वारा %(date)s पर पोस्ट की गयी हैं\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"झंडा\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"तिथि\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"टिप्पणी झंडा\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"टिप्पणी झंडे\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"टिप्पणी पसंद करें\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"क्या इस टिप्पणी को सार्वजनिक बनाएँ ?\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"पसंद करें\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"पसंद करने के लिए धन्यवाद\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"हमारी साइट पर चर्चा की गुणवत्ता में सुधार के लिए समय देने के लिए धन्यवाद\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"टिप्पणी निकालें\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"क्या आप इस टिप्पणी को हटाना चाहते हैं ?\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"निकालें\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"निकालने के लिये धन्यवाद\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"टिप्पनी को फ्लैग करो\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"क्या आप इस टिप्पणी को फ्लैग करना चाहते हैं ?\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"फ्लैग\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"फ्लैग करने के लिए धन्यवाद\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"प्रस्तुत\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"पूर्व दर्शन\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"टिप्पणी के लिये धन्यवाद\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"टिप्पणी के लिये धन्यवाद\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"आपके टिप्पणी का पूर्व दर्शन देखे`\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"कृपया नीचे पायी गयी गलती को ठीक करें\"\nmsgstr[1] \"कृपया नीचे पाये गये गलतियाँ को ठीक करें\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"टिप्पणी प्रस्तुत करें\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"अथवा बदलें\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/hr/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:24+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Croatian (http://www.transifex.com/projects/p/django/language/\"\n\"hr/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: hr\\n\"\n\"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"Sadržaj\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"Metadata\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"oznaka\"\nmsgstr[1] \"oznake\"\nmsgstr[2] \"oznake\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"Označi ovaj komentar\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"odobreno\"\nmsgstr[1] \"odobrene\"\nmsgstr[2] \"odobrene\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"Odobri odabrane komentare\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"uklonjeno\"\nmsgstr[1] \"uklonjena\"\nmsgstr[2] \"uklonjena\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"Ukloni odabrane komentare\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"%(count)s komentar je uspješno %(action)s.\"\nmsgstr[1] \"%(count)s komentara su uspješno %(action)s.\"\nmsgstr[2] \"%(count)s komentara su uspješno %(action)s.\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"komentari za %(site_name)s\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"Najnoviji komentari na %(site_name)s\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"Ime\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"E-mail adresa\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"Komentar\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"Pazite na izražavanje! Riječ %s nije dopuštena.\"\nmsgstr[1] \"Pazite na izražavanje! Riječi %s nisu dopuštene.\"\nmsgstr[2] \"Pazite na izražavanje! Riječi %s nisu dopuštene.\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"i\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"Ako unesete nešto u ovo polje vaš komentar biti će tretiran kao spam\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"tip sadržaja\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"ID objekta\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"korisnik\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"korisničko ime\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"e-mail adresa korisnika\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"korisnikov URL\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"komentar\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"datum/vrijeme unosa\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"IP adresa\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"javno dostupno\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"Uklonite oznaku da bi komentar nestao sa stranica.\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"uklonjeno\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\"Uključite ako je komentar neprikladan. Umjesto komentara biti će prikazana \"\n\"poruka \\\"Komentar je uklonjen.\\\".\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"komentari\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"\"\n\"Ovaj komentar je napisao prijavljeni korisnik te se ime ne može mijenjati.\\n\"\n\"\\n\"\n\"%(text)s\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\"Ovaj komentar je napisao prijavljeni korisnik te se email ne može \"\n\"mijenjati.\\n\"\n\"\\n\"\n\"%(text)s\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\"Napisao %(user)s dana %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"oznaka\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"datum\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"oznaka za komentar\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"oznake komentara\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"Odobri komentar\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"Učini komentar javno dostupnim?\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"Odobri\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"Hvala na odobrenju\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"\"\n\"Hvala što ste izdvojili vrijeme da poboljšate kvalitetu rasprava na \"\n\"stranicama\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"Ukloni komentar\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"Stvarno ukloni ovaj komentar?\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"Ukloni\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"Hvala na brisanju\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"Označi ovaj komentar\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"Stvarno označi ovaj komentar?\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"Oznaka\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"Hvala na označavanju\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"Unos\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"Prikaz\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"Hvala što ste komentirali\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"Hvala na komentaru\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"Prikaz komentara\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"Molimo ispravite navedenu grešku.\"\nmsgstr[1] \"Molimo ispravite navedene greške.\"\nmsgstr[2] \"Molimo ispravite navedene greške.\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"Objava komentara\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"ili unesite promjene\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/hu/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Szilveszter Farkas <szilveszter.farkas@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:24+0000\\n\"\n\"Last-Translator: Szilveszter Farkas <szilveszter.farkas@gmail.com>\\n\"\n\"Language-Team: Hungarian (http://www.transifex.com/projects/p/django/\"\n\"language/hu/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: hu\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"Tartalom\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"Metaadat\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"megjelölve\"\nmsgstr[1] \"megjelölve\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"Kiválasztott hozzászólások megjelölése\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"jóváhagyva\"\nmsgstr[1] \"jóváhagyva\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"Kiválasztott hozzászólások jóváhagyása\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"törölve\"\nmsgstr[1] \"törölve\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"Kiválasztott hozzászólások törlése\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"%(count)s hozzászólás sikeresen %(action)s.\"\nmsgstr[1] \"%(count)s hozzászólás sikeresen %(action)s.\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"%(site_name)s hozzászólások\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"%(site_name)s legfrissebb hozzászólásai\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"Név\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"E-mail cím\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"Hozzászólás\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"Vigyázzon a szájára! Az ilyen szó (%s) itt nem megengedett.\"\nmsgstr[1] \"Vigyázzon a szájára! Az ilyen szavak (%s) itt nem megengedettek.\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"és\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"\"\n\"Ha bármit begépel ebbe a mezőbe, akkor azt szemétként fogja kezelni a \"\n\"rendszer\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"tartalom típusa\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"objektum ID\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"felhasználó\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"felhasználó neve\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"felhasználó e-mail címe\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"felhasználó URL-je\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"megjegyzés\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"dátum/idő beállítva\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"IP cím\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"publikus\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"\"\n\"Vegye ki a pipát a jelölőnégyzetből, hogy eltűntesse a hozzászólást az \"\n\"oldalról.\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"eltávolítva\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\"Jelöld be a négyzetet, ha a megjegyzés nem megfelelő. Az \\\"Ezt a megjegyzést \"\n\"törölték\\\" üzenet fog megjelenni helyette.\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"hozzászólások\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"\"\n\"Ezt a hozzászólást egy hitelesített felhasználó küldte be, ezért a név csak \"\n\"olvasható.\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\"Ezt a hozzászólást egy hitelesített felhasználó küldte be, ezért az e-mail \"\n\"csak olvasható.\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\"Beküldte %(user)s ekkor: %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"megjelölés\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"dátum\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"hozzászólás megjelölés\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"hozzászólás megjelölés\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"Hozzászólás jóváhagyása\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"Biztosan publikálni szeretné ezt a hozzászólást?\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"Jóváhagyás\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"Köszönjük a jóváhagyást\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"\"\n\"Köszönjük, hogy időt szánt az oldalunkon zajló beszélgetések minőségének \"\n\"javítására\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"Hozzászólás törlése\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"Biztosan törli ezt a hozzászólást?\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"Törlés\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"Köszönjük a törlést\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"Hozzászólás megjelölése\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"Biztosan megjelöli ezt a hozzászólást?\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"Megjelölés\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"Köszönjük a megjelölést\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"Elküldés\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"Előnézet\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"Köszönjük a hozzászólást\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"Köszönjük, hogy hozzászólt\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"Hozzászólás előnézetének megtekintése\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"Javítsa ki az alábbi hibát\"\nmsgstr[1] \"Javítsa ki az alábbi hibákat\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"Hozzászólás elküldése\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"vagy módosítása\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/ia/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Martijn Dekker <mcdutchie@hotmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-09-19 23:34+0000\\n\"\n\"Last-Translator: Martijn Dekker <mcdutchie@hotmail.com>\\n\"\n\"Language-Team: Interlingua (http://www.transifex.com/projects/p/django/\"\n\"language/ia/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ia\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"Contento\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"Metadatos\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"marcate\"\nmsgstr[1] \"marcate\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"Marcar le commentos seligite\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"approbate\"\nmsgstr[1] \"approbate\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"Approbar le commentos seligite\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"removite\"\nmsgstr[1] \"removite\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"Remover le commentos seligite\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"1 commento ha essite %(action)s con successo.\"\nmsgstr[1] \"%(count)s commentos ha essite %(action)s con successo.\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"Commentos de %(site_name)s\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"Ultime commentos in %(site_name)s\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"Nomine\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"Adresse de e-mail\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"Commento\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"Le parola %s non es permittite hic.\"\nmsgstr[1] \"Le parolas %s non es permittite hic.\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"e\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"\"\n\"Si tu insere qualcosa in iste campo, tu commento essera tractate como spam.\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"typo de contento\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"ID del objecto\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"usator\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"nomine del usator\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"adresse de e-mail del usator\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"URL del usator\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"commento\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"data/hora de submission\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"adresse IP\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"es public\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"\"\n\"Dismarca iste quadro pro facer le commento effectivemente disparer de iste \"\n\"sito.\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"es removite\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\"Marca iste quadro si le commento es inappropriate. Un message \\\"iste \"\n\"commento ha essite removite\\\" essera monstrate in su loco.\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"commentos\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"\"\n\"Iste commento ha essite publicate per un usator authenticate e dunque le \"\n\"nomine es immodificabile.\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\"Iste commento ha essite publicate per un usator authenticate e dunque le \"\n\"adresse de e-mail es immodificabile.\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\"Publicate per %(user)s le %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"marca\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"data\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"marcation de commento\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"marcationes de commento\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"Approbar un commento\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"Es tu secur de voler render iste commento public?\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"Approbar\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"Gratias pro approbar\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"\"\n\"Gratias pro prender le tempore pro meliorar le qualitate del discussion in \"\n\"nostre sito\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"Remover un commento\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"Es tu secur de voler remover iste commento?\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"Remover\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"Gratias pro remover\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"Marcar iste commento\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"Es tu secur de voler marcar iste commento?\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"Marcar\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"Gratias pro marcar\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"Publicar\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"Previsualisar\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"Gratias pro commentar\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"Gratias pro tu commento\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"Previsualisar tu commento\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"Per favor corrige le error sequente\"\nmsgstr[1] \"Per favor corrige le errores sequente\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"Publicar tu commento\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"o facer modificationes\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/id/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# rodin <romihardiyanto@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:24+0000\\n\"\n\"Last-Translator: rodin <romihardiyanto@gmail.com>\\n\"\n\"Language-Team: Indonesian (http://www.transifex.com/projects/p/django/\"\n\"language/id/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: id\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"Isi\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"Metadata\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"ditandai\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"Tandai komentar terpilih\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"disetujui\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"Setujui komentar terpilih\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"dihapus\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"Hapus komentar terpilih\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"%(count)s komentar berhasil %(action)s.\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"komentar pada %(site_name)s\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"Komentar terbaru pada %(site_name)s\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"Nama\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"Alamat email\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"Komentar\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"Awas! Kata %s tidak diizinkan di sini.\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"dan\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"Jika Anda mengisi bidang ini, komentar Anda akan dianggap sebagai spam\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"tipe konten\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"ID objek\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"pengguna\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"nama pengguna\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"alamat email pengguna\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"URL pengguna\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"komentar\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"tanggal/waktu dikirim\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"alamat IP\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"untuk umum\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"\"\n\"Hapus centang pada kotak ini agar komentar tidak ditampilkan pada situs.\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"telah dihapus\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\"Centang kotak ini jika komentar tidak pantas. Pesan \\\"Komentar ini telah \"\n\"dihapus\\\" akan ditampilkan sebagai penggantinya.\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"komentar\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"\"\n\"Komentar ini dikirim oleh seorang pengguna terautentikasi sehingga nama \"\n\"pengguna tidak dapat diubah.\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\"Komentar ini dikirim oleh seorang pengguna terautentikasi sehingga alamat \"\n\"email tidak dapat diubah.\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\"Dikirim oleh %(user)s pada %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"tanda\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"tanggal\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"tanda komentar\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"tanda komentar\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"Setujui komentar\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"Yakin ingin menampilkan komentar ini untuk umum?\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"Setujui\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"Terima kasih telah menyetujui komentar\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"\"\n\"Terima kasih telah membantu meningkatkan kualitas diskusi pada situs kami\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"Hapus komentar\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"Yakin ingin menghapus komentar ini?\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"Hapus\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"Terima kasih telah menghapus\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"Tandai komentar ini\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"Yakin ingin menandai komentar ini?\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"Tandai\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"Terima kasih telah menandai\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"Kirim\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"Pratinjau\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"Terima kasih telah meninggalkan komentar\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"Terima kasih atas komentar Anda\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"Pratinjau komentar Anda\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"Mohon perbaiki kesalahan di bawah ini\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"Kirim komentar Anda\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"atau lakukan perubahan\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/is/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Hafsteinn Einarsson <haffi67@gmail.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:24+0000\\n\"\n\"Last-Translator: Hafsteinn Einarsson <haffi67@gmail.com>\\n\"\n\"Language-Team: Icelandic (http://www.transifex.com/projects/p/django/\"\n\"language/is/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: is\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"Innihald\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"Hengigögn\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"flaggað\"\nmsgstr[1] \"flaggað\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"Flagga valdar athugasemdir\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"samþykkt\"\nmsgstr[1] \"samþykkt\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"Samþykkja valdar athugasemdir\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"fjarlægð\"\nmsgstr[1] \"fjarlægðar\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"Fjarlægja valdar athugasemdir\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"\"\nmsgstr[1] \"Það tókst að %(action)s %(count)s athugasemdum.\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"%(site_name)s: athugasemdir\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"Nýjustu athugasemdir á %(site_name)s\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"Nafn\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"Netfang\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"Veffang\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"Athugasemd\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"Passaðu orðbragðið! Orðið %s er ekki leyft hér.\"\nmsgstr[1] \"Passaðu orðbragðið! Orðin %s eru ekki leyfð hér.\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"og\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"\"\n\"Ef þú skrifar eitthvað hérna verður athugasemdin sjálfkrafa meðhöndluð sem \"\n\"ruslpóstur\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"efnistag\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"kenni hlutar\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"notandi\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"nafn notanda\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"netfang notanda\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"veffang notanda\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"athugasemd\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"innsent dags/tími\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"IP tala\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"er öllum sýnilegt\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"Taktu hakið úr til að fjarlægja athugasemdina af vefsíðunni.\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"hefur verið fjarlægt\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\"Hakaðu við þennan reit ef athugasemdin er óviðeigandi. Skilaboðin „Þessi \"\n\"athugasemd hefur verið fjarlægð“ birtist í staðinn.\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"athugasemdir\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"\"\n\"Athugasemdin var send inn af innskráðum notanda og því er ekki hægt að \"\n\"breyta nafninu.\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\"Athugasemdin var send inn af innskráðum notanda og því er ekki hægt að \"\n\"breyta netfanginu.\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\"%(user)s sendi inn %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"flagga\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"dagsetning\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"flagg athugasemdar\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"flögg athugasemdar\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"Samþykkja athugasemd\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"Gera þessa athugasemd sýnilega?\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"Samþykkja\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"Takk fyrir að samþykkja\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"Takk fyrir að gefa þér tíma til að bæta gæði umræðunnar á síðunni.\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"Fjarlægja athugasemd\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"Eyða þessari athugasemd?\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"Fjarlægja\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"Takk fyrir að fjarlægja\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"Flagga athugasemd\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"Flagga þesa athugasemd?\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"Flagg\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"Takk fyrir að flagga\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"Birta\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"Skoða\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"Takk fyrir að senda athugasemd\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"Takk fyrir athugasemdina\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"Skoða athugasemd\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"Vinsamlegast lagfærðu villuna fyrir neðan\"\nmsgstr[1] \"Vinsamlegast lagfærðu villurnar fyrir neðan\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"Birta athugasemd\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"eða breyta\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/it/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Nicola Larosa <transifex@teknico.net>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:24+0000\\n\"\n\"Last-Translator: Nicola Larosa <transifex@teknico.net>\\n\"\n\"Language-Team: Italian (http://www.transifex.com/projects/p/django/language/\"\n\"it/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: it\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"Contenuto\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"Metadati\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"segnalato\"\nmsgstr[1] \"segnalati\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"Segnala i commenti selezionati\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"approvato\"\nmsgstr[1] \"approvati\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"Approva i commenti selezionati\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"eliminato\"\nmsgstr[1] \"eliminati\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"Elimina i commenti selezionati\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"Ad 1 commento è stata applicata con successo l'azione %(action)s.\"\nmsgstr[1] \"\"\n\"A %(count)s commenti è stata applicata con successo l'azione %(action)s.\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"commenti su %(site_name)s \"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"Commenti più recenti su %(site_name)s\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"Nome\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"Indirizzo email\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"Commento\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"Modera i termini: la parola %s non è ammessa qui.\"\nmsgstr[1] \"Modera i termini: le parole %s non sono ammesse qui.\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"e\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"\"\n\"Se inserisci qualcosa in questo campo, il tuo commento verrà considerato spam\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"content type\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"ID dell'oggetto\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"utente\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"nome utente\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"indirizzo email utente\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"URL utente\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"commento\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"data/ora di inserimento\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"indirizzo IP\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"è pubblico\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"\"\n\"Deseleziona questa casella per far sparire del tutto il commento dal sito.\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"è eliminato\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\"Seleziona la casella se il commento è inappropriato. Verrà sostituito dal \"\n\"messaggio \\\"Questo commento è stato rimosso\\\".\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"commenti\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"\"\n\"Questo commento è stato inserito da un utente autenticato e quindi il nome \"\n\"non è modificabile.\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\"Questo commento è stato inserito da un utente autenticato e quindi l'email \"\n\"non è modificabile.\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\"Inserito da %(user)s il %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"Segnala\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"data\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"segnalazione commento\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"segnalazioni commenti\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"Approva un commento\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"Sicuro di voler pubblicare questo commento?\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"Approva\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"Grazie per aver approvato\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"\"\n\"Grazie per aver speso tempo a migliorare la qualità della discussione sul \"\n\"nostro sito\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"Elimina un commento\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"Sicuro di voler eliminare questo commento?\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"Elimina\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"Grazie per aver eliminato\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"Segnala questo commento\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"Sicuro di voler segnalare questo commento?\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"Segnala\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"Grazie per aver segnalato\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"Pubblica\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"Anteprima\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"Grazie per aver commentato\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"Grazie per il tuo commento\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"Mostra l'anteprima del tuo commento\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"Correggi l'errore qui sotto\"\nmsgstr[1] \"Correggi gli errori qui sotto\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"Pubblica il tuo commento\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"o fai dei cambiamenti\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/ja/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-06-04 16:06+0000\\n\"\n\"Last-Translator: Yoichi Fujimoto <wozozo@gmail.com>\\n\"\n\"Language-Team: Japanese (http://www.transifex.com/projects/p/django/language/\"\n\"ja/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ja\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"内容\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"メタデータ\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"にフラグが付きました\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"選択したコメントにフラグを付ける\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"は承認されました\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"選択したコメントを承認する\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"は削除されました\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"コメントを削除する\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"%(count)s個のコメント%(action)s。\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"%(site_name)s のコメント\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"%(site_name)s の最新コメント\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"名前\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"メールアドレス\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"コメント\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"言葉使いに気を付けて！ %s という言葉は使えません。\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"と\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"このフィールドに入力するとコメントはスパム扱いされます\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"コンテンツタイプ\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"オブジェクト ID\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"ユーザー\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"名前\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"メールアドレス\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"URL\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"コメント\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"コメント投稿日時\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"IP アドレス\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"は公開中です\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"\"\n\"手っ取り早くコメントをサイトから消すにはここのチェックを外してください。\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"は削除されました\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\"コメントが不適切な場合はチェックを入れてください。「コメントは削除されまし\"\n\"た」と表示されるようになります。\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"コメント\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"\"\n\"このコメントは認証済みユーザーによって投稿されたため、名前は読み取り専用で\"\n\"す。\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\"このコメントは認証済みユーザーによって投稿されたため、メールアドレスは読み取\"\n\"り専用です。\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\"%(user)s が %(date)s に投稿\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"フラグ\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"フラグを付けた日時\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"コメントフラグ\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"コメントフラグ\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"コメントを承認する\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"本当にこのコメントを承認しますか？\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"承認\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"ご利用ありがとうございました！\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"当サイトの品質向上にご協力いただきありがとうございました\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"コメントを削除する\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"本当にこのコメントを削除しますか？\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"削除\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"ご利用ありがとうございました！\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"このコメントにフラグを付ける\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"本当にこのコメントにフラグを付けますか？\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"フラグを付ける\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"ご利用ありがとうございました！\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"投稿\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"プレビュー\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"コメントしてくれてありがとうございました\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"コメントありがとうございました\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"コメントのプレビュー\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"下記のエラーを修正してください。\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"コメントを投稿\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"さらに編集\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/ka/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# avsd05 <avsd05@gmail.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:24+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Georgian (http://www.transifex.com/projects/p/django/language/\"\n\"ka/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ka\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"კონტენტი\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"მეტა-მონაცემები\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"დროშა\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"არჩეულ კომენტარებზე დროშის დასმა\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"დამტკიცებულია\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"არჩეული კომენტარების დამტკიცება\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"წაშლილია\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"არჩეული კომენტარების წაშლა\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"წარმატებით %(action)s %(count)s კომენტარი\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"%(site_name)s-ის კომენტარები\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"ბოლო კომენტარები %(site_name)s-ზე\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"სახელი\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"ელ. ფოსტის მისამართი\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"კომენტარი\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"დაიცავით წესრიგი! სიტყვა \\\"%s\\\" აქ დაუშვებელია.\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"და\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"თუ თვენ შეიყვანთ რამეს ამ ველში, თქვენი კომენტარი სპამად აღიქმება\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"კონტენტის ტიპი\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"ობიექტის ID\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"მომხმარებელი\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"მომხმარებლის სახელი\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"მომხმარებლის ელ. ფოსტა\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"მომხმარებლის URL\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"კომენტარი\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"გაგზავნის თარიღი და დრო\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"IP-მისამართი\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"საყოველთაოა\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"გადანიშნეთ ეს დროშა, რათა კომენტარი რეალურად გაქრეს საიტიდან.\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"წაშლილია\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\"მონიშნეთ ეს დროშა, თუ კომენტარი შეუსაბამოა. მის ნაცვლად გაჩნდება \"\n\"შეტყობინება: \\\"კომენტარი წაშლილია\\\".\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"კომენტარები\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"\"\n\"ეს კომენტარი გამოგზავნილია აუდენტიფიცირებული მომხმარებლის მიერ, და ამიტომ \"\n\"სახელის შეცვლა შეუძლებელია.\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\"ეს კომენტარი გამოგზავნილია აუდენტიფიცირებული მომხმარებლის მიერ, და ამიტომ \"\n\"ელ. ფოსტის შეცვლა შეუძლებელია.\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\"გამოგზავნილია %(user)s-ს მიერ, %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"დროშა\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"თარიღი\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"კომენტარის დროშა\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"კომენტარის დროშები\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"კომენტარის დადასტურება\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"ნამდვილად გსურთ ამ კომენტარის გამოქვეყნება?\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"დასტური\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"გმადლობთ, კომენტარის დადასტურებისათვის\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"\"\n\"გმადლობთ, რომ დრო დახარჯეთ ჩვენს საიტზე დისკუსიის ხარისხის გასაუმჯობესებლად\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"წავშალოთ კომენტარები\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"ნამდვილად გსურთ ამ კომენტარის წაშლა?\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"წაშლა\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"გმადლობთ, წაშლისათვის\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"კომენტარის მარკირება\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"ნამდვილად გსურთ ამ კომენტარის მარკირება?\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"დროშა\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"გმადლობთ, მარკირებისათვის\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"გაგზავნა\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"წინასწარი ნახვა\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"გმადლობთ კომენტარისთვის\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"გმადლობთ თქვენი კომენტარისათვის\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"კომენტარის წინასწარი ნახვა\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"გთხოვთ, შეასწოროთ შეცდომა ქვემოთ\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"კომენტარის გაგზავნა\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"ან შეიტანეთ ცვლილებები\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/kk/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <germanilyin@gmail.com>, 2011.\n#   <zhazira.mt@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:24+0000\\n\"\n\"Last-Translator: yun_man_ger <germanilyin@gmail.com>\\n\"\n\"Language-Team: Kazakh (http://www.transifex.com/projects/p/django/language/\"\n\"kk/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: kk\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"Мазмұн\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"Метадата\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"белгіленген\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"Таңдалған коментарийлерді белгілеу\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"Расталған\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"Таңдалған аңғартпаларды бекіту\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"өшірілген\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"Таңдалған аңғартпаларды өшіру\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"\"\n\"one: 1 аңғартпа ойдағыдай %(action)s.\\n\"\n\"other: %(count)s аңғартпа ойдағыдай %(action)s.\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"%(site_name)s аңғартпалары\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"Соңғы %(site_name)s аңғартпалары\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"Атау\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"Email адрес\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"Аңғартпа\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"\"\n\"one: Байқап сөйлеңіз! Бұл жерде %s сөзіне тыйым салынған.\\n\"\n\"\\n\"\n\"other: Байқап сөйлеңіз! Бұл жерде %s сөздеріне тыйым салынған.\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"және\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"\"\n\"Егер сіз бұл жолаққа қандай да бір нарсені енгізсеңіз, сіздің коментариіңіз \"\n\"спам ретінде белгіленеді.\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"мазмұн түрі\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"нысан ID\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"пайдаланушы\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"пайдаланушының есімі\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"пайдаланушының email адресі\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"пайдаланушының URLі\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"аңғартпа\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"жіберілген күні/уықыты\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"IP адрес\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"ашық\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"Анғартпаның сайттан жоғалуы үшін құсбелгіні алып тастаңыз.\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"өшірілген\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\"Анғартпа дұрыс болмаса құсбелгігі қойыңыз. Орнына  \\\"Бұл анғартпа өшірілді\\\" \"\n\"деген хабар көрінеді.\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"анғартпалар\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"Бұл аңғартпа пайдаланушы орналастырған үшін аты өзгертілмейді.\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"Бұл аңғартпа пайдаланушы орналастырған үшін email өзгертілмейді.\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\"%(user)s %(date)s орналастырды\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"жалауша\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"мерзім\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"Аңғартпа жалаушасы\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"Аңғартпа жалаушалары\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"Аңғартпаны мақұлда\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"Бұл аңғартпаны ашық қылуға сенімдісіз бе?\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"Мақұлдау\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"Мақұлдау үшін рахмет\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"Торпабымыздағы\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"Аңғартпаны өшір\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"Аңғартпаны өшіруге сенімдісіз бе?\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"Өшір\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"Өшіргеніңіз үшін рахмет\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"Бұл аңғартпаға жалауша қой\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"Бұл аңғартпаға жалауша қоюға сенімдісіз бе?\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"Жалауша\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"Жалауша қойғаныңыз үшін рахмет\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"Орналастыру\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"Алдын ала қарап алу\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"Аңғартпаңыз үшін рахмет\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"Аңғартпаңыз үшін рахмет\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"Аңғартпаны алдын ала қарап алу\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"\"\n\"one: Төмендегі қатені түзеңіз\\n\"\n\"other: Төмендегі қателерді түзеңіз\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"Аңғартпаңызды орналастырыңыз\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"немесе өзгертіңіз\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/km/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:24+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: English <en@li.org>\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: km\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"អត្ថបទ\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"ឈ្មោះ\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"អាស័យដ្ឋានគេហទំព័រ(URL)\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"ផ្សេងៗ\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"និង\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"ប្រភេទអត្ថន័យ\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"លេខ​សំគាល់​កម្មវិធី\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"សមាជិក\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"មតិ​យោបល់\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"កាល​បរិច្ឆេទនៃ​ការ​សរសេរ​​\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"លេខ IP\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"ផ្សព្វផ្សាយ​ជាសធារណៈ\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"ត្រូវ​បាន​លប់​ចេញ\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\"សូម​ចុច​ជ្រើសរើស​យក​ប្រអប់​នេះ​ ប្រសិន​បើ​មតិ​យោបល់​មិនសមរម្យ។ ឃ្លា \\\" មតិ​យោបល់​នេះ​ត្រូវបាន​គេលប់​\\\" នឹងត្រូវ​\"\n\"បង្ហាញ​ជំនួស​វិញ។\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"មតិ​យោបល់\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\"សរសេរ​ដោយ %(user)s នៅថ្ងៃ​ %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"​កាលបរិច្ឆេទ\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/kn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <karthikbgl@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:24+0000\\n\"\n\"Last-Translator: karthikbgl <karthikbgl@gmail.com>\\n\"\n\"Language-Team: Kannada (http://www.transifex.com/projects/p/django/language/\"\n\"kn/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: kn\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"ವಿಷಯ\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"ಹೆಸರು\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"ಅಭಿಪ್ರಾಯ\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"ಮತ್ತು\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"ಒಳವಿಷಯದ ಬಗೆ\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"ವಸ್ತುವಿನ ಐಡಿ\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"ಬಳಕೆದಾರ\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"ಬಳಕೆದಾರನ ಹೆಸರು\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"ಟಿಪ್ಪಣಿ\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"ಸಲ್ಲಿಸಿದ ದಿನಾಂಕ/ಸಮಯ\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"IP ವಿಳಾಸ\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"ಸಾರ್ವಜನಿಕವಾಗಿದೆ\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"ತೆಗೆದು ಹಾಕಲಾಗಿದೆ\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\"ಟಿಪ್ಪಣಿ ಅನುಚಿತವಾಗಿ ಇದ್ದಲ್ಲಿ ಈ ಚೌಕದಲ್ಲಿ ಗುರುತು ಮಾಡಿ. ಅದರ ಬದಲಾಗಿ \\\"ಈ ಟಿಪ್ಪಣಿ \"\n\"ತೆಗೆದುಹಾಕಲಾಗಿದೆ\\\" ಎಂಬ ಸಂದೇಶವನ್ನು  ತೋರಿಸಲಾಗುವುದು.\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"ಟಿಪ್ಪಣಿಗಳು\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\"ಸಲ್ಲಿಸಿದವರು %(user)s ರವರು  %(date)s\\n\"\n\"\\n\"\n\"  ದಿನ/ಸಮಯಕ್ಕೆ %(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s  ಸಲ್ಲಿಸಿದ್ದು\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"ದಿನಾಂಕ\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"ಅಭಿಪ್ರಾಯ ಒಪ್ಪಿಗೆ\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"ಒಪ್ಪಿಗೆ\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/ko/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:24+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Korean (http://www.transifex.com/projects/p/django/language/\"\n\"ko/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ko\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"내용\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"메타데이터\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"플래그되었습니다\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"선택된 코멘트에 플래그 달기\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"승인되었습니다\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"선택된 코멘트 승인하기\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"삭제되었습니다\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"선택된 코멘트 삭제\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"%(count)s개의 코멘트가 성공적으로 %(action)s.\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"%(site_name)s 의 코멘트\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"%(site_name)s 의 사용자 비밀번호가 초기화 되었습니다.\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"이름\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"이메일 주소\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"코멘트:\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"비속어/욕설입니다. %s (은)는 사용하실 수 없습니다.\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"또한\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"이 필드에 무엇이라도 입력하면 코멘트는 스팸으로 처리될 것입니다.\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"콘텐츠 타입\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"오브젝트 ID\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"사용자\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"사용자명\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"사용자 이메일 주소\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"사용자 URL\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"코멘트\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"날짜/시간 확인\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"IP 주소\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"공개합니다.\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"이 사이트에서 코멘트가 나타나지 않게 하려면 체크 해제하세요.\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"삭제합니다.\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\"코멘트가 부적절한 경우 체크하세요. \\\"코멘트가 삭제되었습니다.\\\" 메시지가 표시\"\n\"됩니다.\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"코멘트(들)\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"이 코멘트는 등록된 사용자가 작성하였으므로 읽기 전용입니다.\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"이 코멘트는 등록된 사용자가 작성하였으므로 읽기 전용입니다.\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\"%(user)s (이)가 %(date)s 등록\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"플래그\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"날짜\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"코멘트 플래그\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"코멘트 플래그\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"코멘트 승인\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"정말로 이 코멘트를 공개하시겠습니까?\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"승인\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"승인해주셔서 고맙습니다.\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"우리 사이트의 토론에 기여해주셔서 감사합니다.\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"코멘트 삭제\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"정말로 이 코멘트를 삭제하시겠습니까?\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"삭제하기\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"삭제해주셔서 고맙습니다.\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"코멘트에 플래그 달기\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"정말로 플래그를 다시겠습니까?\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"플래그를 답니다.\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"플래그를 달아주셔서 고맙습니다.\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"작성하기\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"미리보기\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"코멘트 작성 완료\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"코멘트를 달아주셔서 고맙습니다.\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"코멘트 미리보기\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"아래의 오류를 수정해 주세요.\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"코멘트 작성하기\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"또는 변경하기\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/lt/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# lauris <lauris@runbox.com>, 2011.\n# Simonas Simas <simonas@kazlauskas.me>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-09 16:58+0000\\n\"\n\"Last-Translator: Simonas Kazlauskas <simonas@kazlauskas.me>\\n\"\n\"Language-Team: Lithuanian (http://www.transifex.com/projects/p/django/\"\n\"language/lt/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: lt\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n\"\n\"%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"Turinys\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"Meta-duomenys\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"pažymėtas\"\nmsgstr[1] \"pažymėti\"\nmsgstr[2] \"pažymėti\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"Žymėti pasirinktus komentarus\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"patvirtintas\"\nmsgstr[1] \"patvirtinti\"\nmsgstr[2] \"patvirtinti\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"Patvirtinti pasirinktus komentarus\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"pašalintas\"\nmsgstr[1] \"pašalinti\"\nmsgstr[2] \"pašalinti\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"Pašalinti pasirinktus įrašus\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"%(count)s komentaras buvo sėkmingai %(action)s.\"\nmsgstr[1] \"%(count)s komentarai buvo sėkmingai %(action)s.\"\nmsgstr[2] \"%(count)s komentarai buvo sėkmingai %(action)s.\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"%(site_name)s komentarai\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"Paskutiniai %(site_name)s komentarai\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"Vardas\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"El. pašto adresas\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"Nuoroda\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"Komentaras\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"Žiūrėk ką kalbi! Žodis %s yra čia uždraustas.\"\nmsgstr[1] \"Žiūrėk ką kalbi! Žodžiai %s yra čia uždrausti.\"\nmsgstr[2] \"Žiūrėk ką kalbi! Žodžiai %s yra čia uždrausti.\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"ir\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"\"\n\"Jei ką nors įrašysite į šį laukelį, jūsų komentaras bus laikomas brukalu\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"turinio tipas\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"objekto ID\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"vartotojas\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"vartotojo vardas\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"vartotojo el. pašto adresas\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"vartotojo nuoroda\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"komentaras\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"įvesta data/laikas\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"IP adresas\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"viešas\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"Nuimkite šį žymejimą, kad komentaras būtų panaikintas.\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"pašalintas\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\"Pažymėkite šį laukelį, jei komentaras netinkamas. \\\"Šis komentaras ištrintas\"\n\"\\\" bus rodoma.\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"komentarai\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"\"\n\"Šis komentaras buvo paskelbtas neprisijungusio vartotojo, todel vardas yra \"\n\"neredaguojamas.\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\"Šis komentaras buvo paskelbtas neprisijungusio vartotojo, todel el. pašto \"\n\"adresas yra neredaguojamas.\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\"Paskelbta  %(user)s, %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"žymė\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"Data\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"Komentaro žymė\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"Komentaro žymės\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"Patvirtinti komentarą\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"Tikrai publikuoti šį komentarą?\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"Patvirtinti\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"Ačiū už patvirtinimą\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"Ačiū, kad radote laiko pagerinti diskusijų kokybę mūsų svetainėje\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"Pašalinti komentarą\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"Tikrai ištrinti šį komentarą?\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"Pašalinti\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"Ačiū už pašalinimą\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"Pažymėti šį komentarą\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"Tikrai žymėti šį komentarą?\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"Žymė\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"Ačiū už žymėjimą\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"Siųsti\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"Peržiūra\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"Ačiū už komentarą\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"Ačiū už jūsų komentarą\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"Peržiūrėti savo komentarą\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"Prašau ištaisyti žemiau esančią klaidą\"\nmsgstr[1] \"Prašau ištaisyti žemiau esančias klaidas\"\nmsgstr[2] \"Prašau ištaisyti žemiau esančias klaidas\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"Publikuoti komentarą\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"arba keisti\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/lv/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:24+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Latvian (http://www.transifex.com/projects/p/django/language/\"\n\"lv/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: lv\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : \"\n\"2);\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"Saturs\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"Metadati\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"atzīmēts\"\nmsgstr[1] \"atzīmēti\"\nmsgstr[2] \"atzīmēts\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"Atzīmēt izvēlētos komentārus\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"apstiprināts\"\nmsgstr[1] \"apstiprināti\"\nmsgstr[2] \"apstiprināti\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"Apstiprināt izvēlētos komentārus\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"dzēsts\"\nmsgstr[1] \"dzēsti\"\nmsgstr[2] \"dzēsts\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"Dzēst izvēlētos komentārus\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"%(count)s komentārs tika veiksmīgi %(action)s.\"\nmsgstr[1] \"%(count)s komentāri tika veiksmīgi %(action)s.\"\nmsgstr[2] \"%(count)s komentāru tika veiksmīgi %(action)s.\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"%(site_name)s komentāri\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"Pēdējie komentāri lapā %(site_name)s\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"Vārds\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"E-pasta adrese\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"Komentārs\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"Lūdzam ievērot pieklājību! Vārds %s šeit nav atļauts.\"\nmsgstr[1] \"Lūdzam ievērot pieklājību! Vārdi %s šeit nav atļauti.\"\nmsgstr[2] \"Lūdzam ievērot pieklājību! Vārdi %s šeit nav atļauti.\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"un\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"Ja aizpildīsiet šo lauku, tad komentārs tiks uzskatīts par spamu\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"satura tips\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"objekta ID\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"lietotājs\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"lietotāja vārds\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"lietotāja e-pasta adrese\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"lietotāja URL\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"komentārs\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"nosūtīšanas datums/laiks\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"IP adrese\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"publisks\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"Noņemiet ķeksi, lai komentārs neparādītos lapā.\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"dzēsts\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\"Atķeksējiet, ja komentārs ir neatbilstošs (nepieklājīgs). Tā vietā tiks \"\n\"rādīts paziņojums \\\"Šis komentārs ir izdzēsts\\\".\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"komentāri\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"\"\n\"Šo komentāru rakstīja autentificēts lietotājs, tāpēc vārds ir tikai \"\n\"lasīšanas režīmā.\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\"Šo komentāru rakstīja autentificēts lietotājs, tāpēc e-pasts ir tikai \"\n\"lasīšanas režīmā.\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\"Pievienojis  %(user)s, %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"atzīmēt\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"datums\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"komentāra atzīmējums\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"komentāra atzīmējumi\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"Apstiprināt komentāru\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"Patiešām padarīt šo komentāru publisku?\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"Apstiprināt\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"Paldies par apstiprināšanu\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"\"\n\"Paldies par laika veltīšanu mūsu lapas diskusiju kvalitātes uzlabošanai\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"Dzēst komentāru\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"Patiešām dzēst šo komentāru?\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"Dzēst\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"Paldies par dzēšanu\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"Atzīmēt šo komentāru\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"Patiešām atzīmēt šo komentāru?\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"Atzīmējums\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"Paldies par komentāra atzīmēšanu\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"Iesūtīt\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"Priekšskats\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"Paldies par komentēšanu\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"Paldies par Jūsu komentāru\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"Pirmsskatīt komentāru\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"Lūdzu izlabojiet kļūdu zemāk.\"\nmsgstr[1] \"Lūdzu izlabojiet kļūdas zemāk.\"\nmsgstr[2] \"Lūdzu, izlabojiet kļūdu zemāk.\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"Iesūtīt komentāru\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"vai veikt izmaiņas\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/mk/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:24+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Macedonian (http://www.transifex.com/projects/p/django/\"\n\"language/mk/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: mk\\n\"\n\"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"Содржина\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"Метаподатоци\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"обележан\"\nmsgstr[1] \"обележани\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"Обележи го одбраните коментари\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"одобрен\"\nmsgstr[1] \"одобрени\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"Одобри ги одбраните коментари\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"отстранет\"\nmsgstr[1] \"отстранети\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"Отстрани ги избраните коментари\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"1 коментар беше успешно %(action)s.\"\nmsgstr[1] \"%(count)s коментари беа успешно %(action)s.\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"коментари за %(site_name)s\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"Последни коментари за %(site_name)s\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"Име\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"Е-пошта\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"Коментар\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"Внимавајте на јазикот. Тука не е дозволен зборот %s.\"\nmsgstr[1] \"Внимавајте на јазикот. Тука не се дозволени зборовите %s.\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"и\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"\"\n\"Ако внесете нешто во ова поле вашиот коментар ќе биде означен како спам\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"тип на содржина\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"object ID\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"корисник\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"името на корисникот\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"е-пошта на корисникот\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"веб страна на корсникот\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"коментар\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"датум/време пријавен\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"ИП адреса\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"е јавен\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"\"\n\"Одштиклирајте го ова за да направите коментаров да исчезне од овој сајт.\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"е отстранет\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\"Штиклирајте го ова поле ако коментарот не е пригоден. Наместо него пораката \"\n\"„Овој коментар беше отстранет“ ќе биде прикажана.\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"коментари\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"\"\n\"Овој коментар бил пратен од автентициран корисник и затоа името е заштитено \"\n\"од промена.\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\"Овој коментар бил пратен од автентициран корисник и затоа е-пошта е \"\n\"заштитена од промена.\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\"Напишан од %(user)s на %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"обележи\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"датум\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"обележје за коментар\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"обележја за коментари\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"Одобри коментар\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"Навистина ли сакате овој коментар да биде објавен?\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"Одобри\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"Ви благодариме што одобривте\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"\"\n\"Ви благодариме што допринесовте да се подобри квалитетот на дискусиите на \"\n\"нашиот сајт\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"Избриши коментар\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"Навистина ли сакате да го отстраните овој коментар?\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"Отстрани\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"Ви благодариме што отстранивте\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"Обележи го овој коментар\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"Навистина ли сакате да го обележите овој коментар?\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"Обележи\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"Ви благодариме што обележавте\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"Објави\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"Преглед\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"Ви благодариме за коментарот\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"Ви благодариме за коментарот\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"Прегледајте го вашиот коментар\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"Ве молам поправете ја грешката подолу.\"\nmsgstr[1] \"Ве молам поправете ги грешките подолу.\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"Објавете го вашиот коментар\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"или направете измени\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/ml/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Rajeesh Nair <rajeeshrnair@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:24+0000\\n\"\n\"Last-Translator: Rajeesh Nair <rajeeshrnair@gmail.com>\\n\"\n\"Language-Team: Malayalam (http://www.transifex.com/projects/p/django/\"\n\"language/ml/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ml\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"ഉള്ളടക്കം\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"മെറ്റാ-ഡാറ്റ\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"അടയാളപ്പെടുത്തി\"\nmsgstr[1] \"അടയാളപ്പെടുത്തി\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"തെരഞ്ഞെടുത്ത അഭിപ്രായങ്ങള്‍ അടയാളപ്പെടുത്തുക\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"അംഗീകരിച്ചു\"\nmsgstr[1] \"അംഗീകരിച്ചു\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"തെരഞ്ഞെടുത്ത അഭിപ്രായങ്ങള്‍ അംഗീകരിക്കുക\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"നീക്കം ചെയ്തു\"\nmsgstr[1] \"നീക്കം ചെയ്തു\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"തെരഞ്ഞെടുത്ത അഭിപ്രായങ്ങള്‍ നീക്കം ചെയ്യുക\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"1 അഭിപ്രായം വിജയകരമായി %(action)s.\"\nmsgstr[1] \"%(count)s അഭിപ്രായങ്ങള്‍ വിജയകരമായി %(action)s.\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"%(site_name)s അഭിപ്രായങ്ങള്‍\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"%(site_name)s ലെ ഏറ്റവും പുതിയ അഭിപ്രായങ്ങള്‍\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"പേര്\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"ഇ-മെയില്‍ വിലാസം\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"URL(വെബ്-വിലാസം)\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"അഭിപ്രായം\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"ശ്ശ്ശ്! %s എന്ന വാക്ക് ഇവിടെ അനുവദനീയമല്ല.\"\nmsgstr[1] \"ശ്ശ്ശ്! %s എന്നീ വാക്കുകള്‍ ഇവിടെ അനുവദനീയമല്ല.\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"ഉം\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"ഈ കള്ളിയില്‍ എന്തെങ്കിലും രേഖപ്പെടുത്തിയാല്‍ നിങ്ങളുടെ അഭിപ്രായം സ്പാം ആയി കണക്കാക്കും\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"ഏതു തരം ഉള്ളടക്കം\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"വസ്തുവിന്റെ ID (തിരിച്ചറിയല്‍ സംഖ്യ)\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"യൂസര്‍ (ഉപയോക്താവ്)\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"യൂസറുടെ പേര്\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"യൂസറുടെ ഇ-മെയില്‍ വിലാസം\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"യൂസറുടെ URL\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"അഭിപ്രായം\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"സമര്‍പ്പിച്ച തീയതി/സമയം\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"IP വിലാസം\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"പരസ്യമാണ്\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"അഭിപ്രായം സൈറ്റില്‍ നിന്നും ഫലപ്രദമായി നീക്കം ചെയ്യാന്‍ ഈ ബോക്സിലെ ടിക് ഒഴിവാക്കുക.\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"നീക്കം ചെയ്തു.\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\"അഭിപ്രായം അനുചിതമെങ്കില്‍ ഈ ബോക്സ് ടിക് ചെയ്യുക. \\\"ഈ അഭിപ്രായം നീക്കം ചെയ്തു \\\" എന്ന സന്ദേശം \"\n\"ആയിരിക്കും പകരം കാണുക.\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"അഭിപ്രായങ്ങള്‍\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"ഈ അഭിപ്രായം ഒരു അംഗീകൃത യൂസര്‍ രേഖപ്പെടുത്തിയതാണ്. അതിനാല്‍ പേര് വായിക്കാന്‍ മാത്രം.\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\"ഈ അഭിപ്രായം ഒരു അംഗീകൃത യൂസര്‍ രേഖപ്പെടുത്തിയതാണ്. അതിനാല്‍ ഇ-മെയില്‍ വിലാസം വായിക്കാന്‍ \"\n\"മാത്രം.\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\"%(date)sന്  %(user)s രേഖപ്പെടുത്തിയത്:\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"അടയാളം\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"തീയതി\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"അഭിപ്രായ അടയാളം\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"അഭിപ്രായ അടയാളങ്ങള്‍\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"അഭിപ്രായം അംഗീകരിക്കൂ\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"ശരിക്കും ഈ അഭിപ്രായം പരസ്യമാക്കണോ?\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"അംഗീകരിക്കൂ\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"അംഗീകരിച്ചതിനു നന്ദി\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"നമ്മുടെ സൈറ്റിലെ ചര്‍ച്ചകളുടെ നിലവാരം ഉയര്‍ത്താന്‍ സമയം ചെലവഴിച്ചതിനു നന്ദി.\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"അഭിപ്രായം നീക്കം ചെയ്യൂ\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"ശരിക്കും ഈ അഭിപ്രായം നീക്കം ചെയ്യണോ?\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"നീക്കം ചെയ്യുക\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"നീക്കം ചെയ്തതിനു നന്ദി\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"ഈ അഭിപ്രായം അടയാളപ്പെടുത്തൂ\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"ഈ അഭിപ്രായം ശരിക്കും അടയാളപ്പെടുത്തണോ?\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"അടയാളം\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"അടയാളപ്പെടുത്തിയതിനു നന്ദി\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"രേഖപ്പെടുത്തൂ\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"അവലോകനം\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"അഭിപ്രായം രേഖപ്പെടുത്തിയതിനു നന്ദി\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"അഭിപ്രായത്തിനു നന്ദി\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"അഭിപ്രായം അവലോകനം ചെയ്യുക\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"ദയവായി താഴെ പറയുന്ന തെറ്റ് തിരുത്തുക\"\nmsgstr[1] \"ദയവായി താഴെ പറയുന്ന തെറ്റുകള്‍ തിരുത്തുക\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"അഭിപ്രായം രേഖപ്പെടുത്തുക\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"അല്ലെങ്കില്‍ മാറ്റം വരുത്തുക.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/mn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Анхбаяр Анхаа <l.ankhbayar@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:24+0000\\n\"\n\"Last-Translator: Анхбаяр Анхаа <l.ankhbayar@gmail.com>\\n\"\n\"Language-Team: Mongolian (http://www.transifex.com/projects/p/django/\"\n\"language/mn/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: mn\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"Агуулга\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"Мета өгөгдөл\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"тэгдэглсэн\"\nmsgstr[1] \"тэгдэглсэн\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"Сонгосон сэтгэгдэлүүдийг тэмдэглэ\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"зөвшөөрөх\"\nmsgstr[1] \"зөвшөөрөх\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"Сонгосон сэтгэгдэлүүдийг зөвшөөрөх\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"устгасан\"\nmsgstr[1] \"устгасан\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"Сонгосон сэтгэгдэлүүдийг утсгах\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"%(count)s сэтгэгдэлийг амжилттай %(action)s.\"\nmsgstr[1] \"%(count)s сэтгэгдэлүүдийг амжилттай %(action)s.\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"%(site_name)s сэтгэгдэлүүд\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \" %(site_name)s сүүлийн сэтгэгдэлүүд\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"Нэр\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"Цахим шуудангийн хаяг\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"Сэтгэгдэл\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"Соёлтой байна уу! %s гэсэн үг оруулах хориотой.\"\nmsgstr[1] \"Соёлтой байна уу! %s гэсэн үгүүд оруулах хориотой.\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"ба\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"\"\n\"Та энэ хэсэгт ямар нэг зүйл оруулбал таний сэтгэгдэлийг  спам гэж үзэх болно.\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"агуулгын төрөл\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"объектийн ID\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"хэрэглэгч \"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"хэрэглэгчийн нэр\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"хэрэглэгчийн цахим шуудангийн хаяг\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"хэрэглэгчийн URL\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"сэтгэгдэл\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"оруулсан огноо/цаг\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"IP хаяг\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"нийтийн\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"\"\n\"Сайтаас санал сэтгэгдлийг байнга устгахын тулд энэ хайрцагны өмнөх чагтыг \"\n\"авна уу.\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"устлаа\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\"Ирсэн санал сэтгэгдэл зүй зохисгүй бол энэ хайрцгийг чагтла. Ингэснээр \"\n\"тухайн санал сэтгэгдлийн оронд \\\"Энэ санал сэтгэгдлийг устгалаа\\\" гэсэн \"\n\"бичиг гарч ирнэ.\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"сэтгэгдэлүүд\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"\"\n\"Энэ санал сэтгэгдлийг баталгаажсан хэрэглэгч оруулсан учир зөвхөн нэрийг нь \"\n\"харж болно.\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\"Энэ санал сэтгэгдлийг баталгаажсан хэрэглэгч оруулсан учир зөвхөн цахим \"\n\"шууданг нь харж болно.\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\"%(date)s-д %(user)s дараах санал сэтгэгдлийг үлдээжээ\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"тэмдэг\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"огноо\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"Тайлбарын тэмдэг\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"тайлбарын тэмдэгүүд\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"Сэтгэгдэл зөвшөөрөх\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"Үнэхээр энэ сэтгэгдэлийн нийтийн болгох гэж байна у?\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"Зөвшөөрөх\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"Зөвшөөрсөнд баяраллаа\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"\"\n\"Манай сайтанд цаг гаргаж хэлэлцүүлэгийг сонирхолтой болгосонд баяраллаа.\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"Үнэхээр энэ сэтгэдэлийг\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"Үнхээр энэ сэтгэдэлийг устгах уу?\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"Устгах\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"Устгасанд баяраллаа\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"Энэ сэтгэгдэлийг тэмлэглэ\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"Үнэхээр энэ сэтгэдэлийг тэмдэглэх үү?\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"Тэмдэг\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"Тэмдэглсэнд баяраллаа\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"Бичлэг\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"Урьдчилан харах\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"Сэтгэгдэл үлдээсэнд баяраллаа\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"Сэтгэгдэл үлдээсэн таньд баяраллаа\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"Өөрийн сэтгэгдэлээ урьдчилан харах\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"Доорх алдааг засна у\"\nmsgstr[1] \"Доорх алдаануудыг засна у\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"Сэтгэгдэл оруулах\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"эсвэл засвар хийх\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/nb/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <jonklo@gmail.com>, 2012.\n#   <sigurdga-transifex@sigurdga.no>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-12 21:43+0000\\n\"\n\"Last-Translator: Sigurd Gartmann <sigurdga-transifex@sigurdga.no>\\n\"\n\"Language-Team: Norwegian Bokmål (http://www.transifex.com/projects/p/django/\"\n\"language/nb/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: nb\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"Innhold\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"Metadata\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"flagget\"\nmsgstr[1] \"flagget\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"Flagg valgte kommentarer\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"godkjent\"\nmsgstr[1] \"godkjent\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"Tillat valgte kommentarer\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"fjernet\"\nmsgstr[1] \"fjernet\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"Fjern valgte kommentarer\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"1 kommentar ble %(action)s.\"\nmsgstr[1] \"%(count)s kommentarer ble %(action)s.\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"%(site_name)s kommentarer\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"Siste kommentarer fra %(site_name)s\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"Navn\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"E-postadresse\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"Nettadresse\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"Kommentar\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"Pass munnen din! Ordet %s er ikke tillatt her.\"\nmsgstr[1] \"Pass munnen din! Ordene %s er ikke tillatt her.\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"og\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"\"\n\"Hvis du oppgir noe i dette feltet, vil kommentaren bli behandlet som spam\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"innholdstype\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"objekt-ID\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"bruker\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"brukerens navn\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"brukerens e-postadresse\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"brukerens nettadresse\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"kommentar\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"dato/tid for innsendelse\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"IP-adresse\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"er tilgjengelig for alle\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"Fjern avhuking av denne boksen for å fjerne kommentaren fra siden.\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"er fjernet\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\"Huk av denne hvis kommentaren er upassende. Meldingen «Denne kommentaren har \"\n\"blitt fjernet» vil bli vist i stedet.\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"kommentarer\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"\"\n\"Denne kommentaren er skrevet av en innlogget bruker og navnet kan derfor \"\n\"ikke endres.\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\"Denne kommentaren er skrevet av en innlogget bruker og e-postadressen kan \"\n\"derfor ikke endres.\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\"Skrevet av %(user)s, %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"flagg\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"dato\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"kommentarflagg\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"kommentarflagg\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"Tillat en kommentar\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"Gjør denne kommentaren offentlig?\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"Godkjenn\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"Takk for godkjennelse\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"\"\n\"Takk for at du tok deg tid til å forbedre kvaliteten på diskusjonen på siden \"\n\"vår\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"Fjern en kommentar\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"Fjern denne kommentaren?\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"Fjern\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"Takk for fjerningen\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"Flagg denne kommentaren\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"Flagg denne kommentaren?\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"Flagg\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"Takk for flagging\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"Publiser\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"Forhåndsvisning\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"Takk for kommentar\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"Takk for din kommentar\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"Forhåndsvis kommentaren din\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"Vennligst korriger feilen under\"\nmsgstr[1] \"Vennligst korriger feilene under\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"Publiser din kommentar\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"eller gjør endringer\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/ne/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Paras Nath Chaudhary <opnchaudhary@gmail.com>, 2012.\n# Sagar Chalise <chalisesagar@gmail.com>, 2011.\n#   <surit_people@hotmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-12-05 19:55+0000\\n\"\n\"Last-Translator: Paras Nath Chaudhary <opnchaudhary@gmail.com>\\n\"\n\"Language-Team: Nepali (http://www.transifex.com/projects/p/django/language/\"\n\"ne/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ne\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"विषय\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"मेटाडाटा\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"स्वीकृत\"\nmsgstr[1] \"स्वीकृत\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"चुनिएको प्रतिकृया स्वीकार गर्नुहोस ।\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"हटाइएको छ\"\nmsgstr[1] \"हटाइएको छ\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"चुनिएको प्रतिकृया हटाउनुहोस ।\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"%(site_name)s प्रतिकृया\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"%(site_name)sका ताजा प्रतिकृया\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"नाम\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"ई-मेल ठेगाना\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"प्रतिकृया\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"र\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"याहा केहि पनि नलेख्नु होला । याहा केहि लेखियेमा तेसला\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"विषयको ढाँचा\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"प्रयोगकर्ता \"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"प्रतिकृया\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"हटाइएको छ\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"प्रतिकृया\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"मिति\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"प्रतिकृया स्वीकार गर्नुहोस\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"स्वीकार गर्नुहोस\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"स्वीकार गरेकोमा धन्यवाद\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"प्रतिकृया हटाउनुहोस\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"के साच्चै प्रतिकृया हटाउनुहुन्छ ?\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"हटाउनुहोस\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"हटाएकोमा धन्यवाद\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"लेख \"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"पूर्व समीक्षा\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"प्रतिकृयाको लागि धन्यवाद\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"तपाइको प्रतिकृयाको लागि धन्यवाद\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"तपाइको प्रतिकृयाको पूर्व समीक्षा\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"कृपया तलका त्रुटि सच्याउनुहोस ।\"\nmsgstr[1] \"कृपया तलका त्रुटि सच्याउनुहोस ।\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"तपाइको प्रतिकृयाको पठाउनुहोस\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"अथवा फेरबदल गर्नुहोस\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/nl/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <admin@go2people.nl>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Tino de Bruijn <tinodb@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:24+0000\\n\"\n\"Last-Translator: go2people <admin@go2people.nl>\\n\"\n\"Language-Team: Dutch (http://www.transifex.com/projects/p/django/language/\"\n\"nl/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: nl\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"Inhoud\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"Metadata\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"gemarkeerd\"\nmsgstr[1] \"gemarkeerd\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"Markeer geselecteerde commentaren\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"goedgekeurd\"\nmsgstr[1] \"goedgekeurd\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"Keur geselecteerde commentaren goed\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"verwijderd\"\nmsgstr[1] \"verwijderd\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"Verwijder geselecteerde commentaren\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \" %(count)s opmerking werd met succes %(action)s .\"\nmsgstr[1] \" %(count)s opmerkingen werden met succes %(action)s .\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"%(site_name)s opmerkingen\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"Laatste opmerkingen op %(site_name)s\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"Naam\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"E-mailadres\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"Opmerking\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"Pas op uw taalgebruik! Gebruik van %s niet toegestaan.\"\nmsgstr[1] \"\"\n\"Pas op uw taalgebruik! Gebruik van de woorden %s is niet toegestaan.\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"en\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"Indien u hier iets invult dan wordt uw opmerking behandeld als spam\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"inhoudstype\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"object-ID\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"gebruiker\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"naam gebruiker\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"e-mailadres gebruiker\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"URL gebruiker\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"opmerking\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"datum/tijd toegevoegd\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"IP-adres\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"is openbaar\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"\"\n\"Vink dit vakje uit zodat de opmerking niet meer zichtbaar is op de site.\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"is verwijderd\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\"Vink dit vak aan indien de opmerking niet gepast is. Een \\\"Dit commentaar is \"\n\"verwijderd\\\" bericht wordt dan getoond.\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"opmerkingen\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"\"\n\"Deze opmerking is gepost door een ingelogde gebruiker en daardoor is de naam \"\n\"niet aan te passen.\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\"Deze opmerking is gepost door een ingelogde gebruiker en daardoor is het e-\"\n\"mailadres niet aan te passen.\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\"Geplaatst door %(user)s op %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"vlag\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"datum\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"opmerking vlag\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"opmerking vlaggen\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"Een opmerking toestaan\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"Weet u zeker dat u deze opmerking openbaar wilt maken?\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"Goedkeuren\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"Bedankt voor het goedkeuren\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"\"\n\"Bedankt dat u de tijd heeft genomen om de kwaliteit van de discussie op onze \"\n\"site te verbeteren\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"Een opmerking verwijderen\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"Weet u zeker dat u deze opmerking wilt verwijderen?\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"Verwijderen\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"Bedankt voor het verwijderen\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"Vlag deze opmerking\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"Weet u zeker dat u deze opmerking wilt vlaggen?\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"Vlag\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"Bedankt voor het vlaggen\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"Bericht\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"Voorbeeld\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"Bedankt voor uw opmerking\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"Bedankt voor uw opmerking\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"Toon voorbeeld van uw opmerking\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"Herstel de fout hieronder\"\nmsgstr[1] \"Herstel de fouten hieronder\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"Plaats uw opmerking\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"of maak aanpassingen\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/nn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:24+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Norwegian Nynorsk (http://www.transifex.com/projects/p/django/\"\n\"language/nn/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: nn\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"Innhald\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"Metadata\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"flagga\"\nmsgstr[1] \"flagga\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"Flagg valde kommentarar\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"Godkjend\"\nmsgstr[1] \"Godkjende\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"Tillat valde kommentarar\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"er fjerna\"\nmsgstr[1] \"er fjerna\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"Fjern valdte kommentarar\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"Ein kommentar vart %(action)s.\"\nmsgstr[1] \"%(count)s kommentarar vart %(action)s.\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"%(site_name)s - kommentarar\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"Siste kommentarar frå %(site_name)s\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"Namn\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"E-postadresse\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"Nettadresse\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"Kommentar\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"Pass munnen din! Ordet %s er ikkje lovleg her.\"\nmsgstr[1] \"Pass munnen din! Orda %s er ikkje lovlege her.\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"og\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"\"\n\"Dersom du oppgjev noko i dette feltet, vil kommentaren bli behandla som spam\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"innhaldstype\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"objekt-ID\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"brukar\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"brukaren sitt namn\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"brukaren si e-postadresse\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"brukaren si nettadresse\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"kommentar\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"dato/tid for innsending\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"IP-adresse\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"er tilgjengeleg for alle\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"Avmerk denne boksen for å fjerne kommentaren frå sida.\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"er fjerna\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\"Kryss av denne dersom kommentaren er upassande. Meldinga \\\"Denne kommentaren \"\n\"har blitt fjerna\\\" vil bli vist i staden.\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"kommentarar\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"\"\n\"Denne kommentaren er skriven av ein innlogga brukar og namnnet kan difor \"\n\"ikkje endrast.\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\"Denne kommentaren er skriven av ein innlogga brukar og e-postadressa kan \"\n\"derfor ikkje endrast.\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\"Skrive av %(user)s, %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"flagg\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"dato\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"kommentarflagg\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"kommentarflagg\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"Tillat ein kommentar\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"Gjere denne kommentaren offentleg?\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"Godkjenn\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"Takk for godkjenning\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"\"\n\"Takk for at du tok deg tid til å forbetre kvaliteten på diskusjonen på sida \"\n\"vår\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"Fjern ein kommentar\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"Fjerne denne kommentaren?\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"Fjern\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"Takk for fjerninga\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"Flagg denne kommentaren\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"Flagg denne kommentaren?\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"Flagg\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"Takk for flagging\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"Publiser\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"Førehandsvising\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"Takk for kommentaren\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"Takk for kommentaren din\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"Førehandsvis kommentaren din\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"Korriger feilen under\"\nmsgstr[1] \"Korriger feila under\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"Publiser kommentaren din\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"eller gjer endringar\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/pa/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:24+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Panjabi (Punjabi) (http://www.transifex.com/projects/p/django/\"\n\"language/pa/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: pa\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"ਸਮੱਗਰੀ\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"ਮੇਟਾਡਾਟਾ\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"ਚੁਣੀਆਂ ਟਿੱਪਣੀਆਂ ਫਲੈਗ ਕਰੋ\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"ਮਨਜ਼ੂਰ ਹੈ\"\nmsgstr[1] \"ਮਨਜ਼ੂਰ ਹਨ\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"ਚੁਣੀਆਂ ਟਿੱਪਣੀਆਂ ਮਨਜ਼ੂਰ\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"ਹਟਾਈ\"\nmsgstr[1] \"ਹਟਾਈਆਂ\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"ਚੁਣੀਆਂ ਟਿੱਪਣੀਆਂ ਹਟਾਓ\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"੧ ਟਿੱਪਣੀ ਠੀਕ ਤਰ੍ਹਾਂ %(action)s ਗਈ।\"\nmsgstr[1] \"%(count)s ਟਿੱਪਣੀਆਂ ਠੀਕ ਤਰ੍ਹਾਂ %(action)s ਗਈਆਂ।\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"%(site_name)s ਟਿੱਪਣੀਆਂ\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"%(site_name)s ਉੱਤੇ ਤਾਜ਼ਾ ਟਿੱਪਣੀਆਂ\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"ਨਾਂ\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"ਈਮੇਲ ਐਡਰੈੱਸ\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"ਟਿੱਪਣੀ\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"ਅਤੇ\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"ਸਮੱਗਰੀ ਕਿਸਮ\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"ਆਬਜੈਕਟ ID\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"ਯੂਜ਼ਰ\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"ਯੂਜ਼ਰ ਦਾ ਨਾਂ\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"ਯੂਜ਼ਰ ਦਾ ਈਮੇਲ ਐਡਰੈੱਸ\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"ਯੂਜ਼ਰ ਦਾ URL\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"ਟਿੱਪਣੀ\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"ਭੇਜਣ ਮਿਤੀ/ਸਮਾਂ\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"IP ਐਡਰੈੱਸ\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"ਪਬਲਿਕ ਹੈ\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"ਹਟਾਇਆ ਗਿਆ\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"ਟਿੱਪਣੀਆਂ\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\"%(user)s ਵਲੋਂ %(date)s ਨੂੰ ਪੋਸਟ ਕੀਤੀ\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"ਫਲੈਗ\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"ਮਿਤੀ\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"ਟਿੱਪਣੀ ਫਲੈਗ\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"ਟਿੱਪਣੀ ਫਲੈਗ\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"ਟਿੱਪਣੀ ਮਨਜ਼ੂਰ ਕਰੋ\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"ਇਹ ਟਿੱਪਣੀ ਪਬਲਿਕ ਬਣਾਉਣੀ ਹੈ?\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"ਮਨਜ਼ੂਰ\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"ਮਨਜ਼ੂਰ ਕਰਨ ਲਈ ਧੰਨਵਾਦ ਜੀ\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"ਟਿੱਪਣੀ ਹਟਾਓ\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"ਇਹ ਟਿੱਪਣੀ ਹਟਾਉਣੀ ਹੈ?\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"ਹਟਾਓ\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"ਹਟਾਉਣ ਲਈ ਧੰਨਵਾਦ\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"ਇਹ ਟਿੱਪਣੀ ਲਈ ਫਲੈਗ\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"ਇਹ ਟਿੱਪਣੀ ਲਈ ਫਲੈਗ ਲਾਉਣਾ ਹੈ?\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"ਫਲੈਗ\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"ਫਲੈਗ ਲਗਾਉਣ ਲਈ ਧੰਨਵਾਦ\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"ਪੋਸਟ ਕਰੋ\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"ਝਲਕ\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"ਟਿੱਪਣੀ ਦੇਣ ਲਈ ਧੰਨਵਾਦ\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"ਤੁਹਾਡੀ ਟਿੱਪਣੀ ਲਈ ਤੁਹਾਡਾ ਧੰਨਵਾਦ\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"ਆਪਣੀ ਟਿੱਪਣੀ ਦੀ ਝਲਕ ਵੇਖੋ\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"ਹੇਠਾਂ ਦਿੱਤੀ ਗਲਤੀ ਠੀਕ ਕਰੋ ਜੀ।\"\nmsgstr[1] \"ਹੇਠ ਦਿੱਤੀਆਂ ਗਲਤੀਆਂ ਠੀਕ ਕਰੋ ਜੀ।\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"ਆਪਣੀ ਟਿੱਪਣੀ ਪੋਸਟ ਕਰੋ\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"ਜਾਂ ਬਦਲਾਅ ਕਰੋ\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/pl/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:24+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Polish (http://www.transifex.com/projects/p/django/language/\"\n\"pl/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: pl\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 \"\n\"|| n%100>=20) ? 1 : 2);\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"Zawartość\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"Metadane\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"oflagowany\"\nmsgstr[1] \"oflagowane\"\nmsgstr[2] \"oflagowanych\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"Oflaguj wybrane komentarze\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"zaakceptowany\"\nmsgstr[1] \"zaakceptowane\"\nmsgstr[2] \"zaakceptowanych\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"Zaakceptuj wybrane komentarze\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"usunięty\"\nmsgstr[1] \"usunięte\"\nmsgstr[2] \"usuniętych\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"Usuń wybrane komentarze\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"1 komentarz został %(action)s\"\nmsgstr[1] \"%(count)s komentarze zostały %(action)s\"\nmsgstr[2] \"%(count)s komentarzy zostało %(action)s\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"komentarze na %(site_name)s\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"Ostatnie komentarze na %(site_name)s\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"Nazwa\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"Adres e-mail\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"Komentarz\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"Nie wolno przeklinać! Słowo %s nie jest dozwolone.\"\nmsgstr[1] \"Nie wolno przeklinać! Słowa %s nie są dozwolone.\"\nmsgstr[2] \"Nie wolno przeklinać! Słowa %s nie są dozwolone.\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"i\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"\"\n\"Jeżeli wpiszesz cokolwiek w to pole, Twój komentarz zostanie uznany za spam\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"typ zawartości\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"ID obiektu\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"użytkownik\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"nazwa użytkownika\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"adres e-mail użytkownika\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"URL użytkownika\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"komentarz\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"data/czas dodania\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"Adres IP\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"publicznie dostępny\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"Odznacz to pole, aby komentarz nie był wyświetlany w serwisie.\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"usunięty\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\"Zaznacz to pole jeżeli komentarz jest nieodpowiedni. Wyświetlony zostanie \"\n\"tekst \\\"Ten komentarz został usunięty\\\".\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"komentarze\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"\"\n\"Ten komentarz został dodany przez zalogowanego użytkownika i dlatego nazwa \"\n\"jest tylko do odczytu.\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\"Ten komentarz został dodany przez zalogowanego użytkownika i dlatego adres e-\"\n\"mail jest tylko do odczytu.\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\"Dodane przez %(user)s dnia %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"flaga\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"data\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"flaga dla komentarza\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"flagi dla komentarzy\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"Zaakceptuj komentarz\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"Czy ten komentarz na pewno ma być publiczny?\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"Zaakceptuj\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"Dziękujemy za zaakceptowanie\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"\"\n\"Dziękujemy za poświęcenie czasu na podniesienie jakości dyskusji w naszym \"\n\"serwisie\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"Usuń komentarz\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"Czy na pewno usunąć ten komentarz?\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"Usuń\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"Dziękujemy za usunięcie\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"Oflaguj ten komentarz\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"Czy na pewno oflagować ten komentarz?\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"Flaga\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"Dziękujemy za oflagowanie\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"Zapisz\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"Podgląd\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"Dziękujemy za dodanie komentarza\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"Dziękujemy za komentarz\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"Podgląd komentarza\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"Proszę popraw poniższy błąd.\"\nmsgstr[1] \"Proszę popraw poniższe błędy.\"\nmsgstr[2] \"Proszę popraw poniższe błędy.\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"Zapisz swój komentarz\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"lub wprowadź jakieś zmiany\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/pt/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Nuno Mariz <nmariz@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:24+0000\\n\"\n\"Last-Translator: Nuno Mariz <nmariz@gmail.com>\\n\"\n\"Language-Team: Portuguese (http://www.transifex.com/projects/p/django/\"\n\"language/pt/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: pt\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"Conteúdo\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"Metadata\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"marcado\"\nmsgstr[1] \"marcados\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"Marcar os comentários selecionados\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"aprovado\"\nmsgstr[1] \"aprovados\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"Aprovar os comentários selecionados\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"removido\"\nmsgstr[1] \"removidos\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"Remover os comentários selecionados\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"1 comentário foi %(action)s com sucesso.\"\nmsgstr[1] \"%(count)s comentários foram %(action)s com sucesso.\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"comentários em %(site_name)s\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"Últimos comentários em %(site_name)s\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"Nome\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"Endereço de e-mail\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"Comentário\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"Atenção à linguagem! A palavra %s não é permitida aqui.\"\nmsgstr[1] \"Atenção à linguagem! As palavras %s não são permitidas aqui.\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"e\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"\"\n\"Se introduzir alguma coisa neste campo o seu comentário irá ser tratado como \"\n\"spam\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"tipo de conteúdo\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"ID do objeto\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"utilizador\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"o nome do utilizador\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"endereço de e-mail do utilizador\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"URL do utilizador\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"comentário\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"data/hora de submissão\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"Endereço IP\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"é público\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"Não selecione esta caixa para que o comentário desapareça do site.\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"foi removido\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\"Selecione esta opção se o comentário não é apropriado. Uma mensagem \\\"Este \"\n\"comentário foi removido\\\" será mostrada no seu lugar.\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"comentários\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"\"\n\"Este comentário foi colocado por um utilizador autenticado, portanto o nome \"\n\"é apenas de leitura.\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\"Este comentário foi colocado por um utilizador autenticado, portanto o e-\"\n\"mail é apenas de leitura.\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\"Colocado pelo utilizador %(user)s em %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"marcar\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"data\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"marca de comentário\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"marcas de comentários\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"Aprovar um comentário\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"Tem a certeza que deseja tornar este comentário público?\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"Aprovar\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"Obrigado pela aprovação\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"\"\n\"Obrigado por dedicar o seu tempo para melhorar a qualidade de discussão no \"\n\"nosso site\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"Remover um comentário\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"Tem a certeza que deseja remover este comentário?\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"Remover\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"Obrigado pela remoção\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"Marcar este comentário\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"Tem a certeza que deseja marcar este comentário?\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"Marcar\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"Obrigado por marcar\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"Publicar\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"Prever\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"Obrigado por comentar\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"Obrigado pelo seu comentário\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"Pré-visualizar comentário\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"Por favor corrija o seguinte erro.\"\nmsgstr[1] \"Por favor corrija os seguintes erros.\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"Publique o seu comentário\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"ou faça modificações\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/pt_BR/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:24+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Portuguese (Brazil) <django-l10n-portuguese@googlegroups.\"\n\"com>\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: pt_BR\\n\"\n\"Plural-Forms: nplurals=2; plural=(n > 1);\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"Conteúdo\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"Meta-dados\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"marcado\"\nmsgstr[1] \"marcados\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"Marcar comentários selecionados\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"aprovado\"\nmsgstr[1] \"aprovados\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"Aprovar comentários selecionados\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"removido\"\nmsgstr[1] \"removidos\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"Remover comentários selecionados\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"1 comentários foi %(action)s com sucesso.\"\nmsgstr[1] \"%(count)s comentários foram %(action)s com sucesso.\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"Comentários de %(site_name)s\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"Últimos comentários em %(site_name)s\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"Nome\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"Endereço de e-mail\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"Comentário\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"Olha sua boca! A palavra %s não é permitida aqui.\"\nmsgstr[1] \"Olha sua boca! As palavras %s não são permitidas aqui.\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"e\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"\"\n\"Se você inserir qualquer coisa neste campo, seu comentário será tratado como \"\n\"spam\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"tipo de conteúdo\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"id do objeto\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"usuário\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"nome do usuário\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"endereço de e-mail do usuário\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"URL do usuário\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"comentário\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"data/hora de envio\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"Endereço IP\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"é público\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"\"\n\"Desmarque esta caixa para fazer o comentário desaparecer efetivamente deste \"\n\"site.\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"foi removido\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\"Selecione esta opção se o comentário é inapropriado. A mensagem \\\"Este \"\n\"comentário foi removido\\\" será mostrada no lugar.\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"comentários\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"\"\n\"Este comentário foi feito por um usuário autenticado e portanto seu nome é \"\n\"apenas para leitura.\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\"Este comentário foi feito por um usuário autenticado e portanto seu e-mail é \"\n\"apenas para leitura.\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\"Enviado por %(user)s em %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"marcar\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"data\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"marca de comentário\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"marcas de comentários\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"Aprovar um comentário\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"Realmente tornar este comentário público?\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"Aprovar\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"Obrigado pela aprovação\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"\"\n\"Obrigado por dedicar tempo para melhorar a qualidade de discussão de nosso \"\n\"site.\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"Remover um comentário\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"Realmente remover este comentário?\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"Remover\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"Obrigado pela remoção\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"Marcar um comentário\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"Realmente marcar este comentário?\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"Marcar\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"Obrigado pela marcação\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"Publicar\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"Visualizar\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"Obrigado por comentar\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"Obrigado pelo seu comentário\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"Visualizar seu comentário\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"Por favor, corrija o erro abaixo.\"\nmsgstr[1] \"Por favor, corrija os erros abaixo.\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"Publique seu comentário\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"ou faça modificações\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/ro/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Daniel Ursache-Dogariu <contact@danniel.net>, 2011.\n# Denis Darii <sinednx@gmail.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:24+0000\\n\"\n\"Last-Translator: Daniel Ursache-Dogariu <contact@danniel.net>\\n\"\n\"Language-Team: Romanian (http://www.transifex.com/projects/p/django/language/\"\n\"ro/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ro\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?\"\n\"2:1));\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"Conţinut\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"Metadate\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"marcat\"\nmsgstr[1] \"marcate\"\nmsgstr[2] \"marcate\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"Marchează comentariile selectate\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"aprobat\"\nmsgstr[1] \"aprobate\"\nmsgstr[2] \"aprobate\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"Aprobă comentariile selectate\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"eliminat\"\nmsgstr[1] \"eliminate\"\nmsgstr[2] \"eliminate\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"Elimină comentariile selectate\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"%(count)s comentariu a fost %(action)s cu succes.\"\nmsgstr[1] \"%(count)s comentarii au fost %(action)s cu succes.\"\nmsgstr[2] \"%(count)s de comentarii au fost %(action)s cu succes.\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"Comentariile de la %(site_name)s\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"Ultimele comentarii la %(site_name)s\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"Nume\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"Adresă e-mail\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"Comentariu\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"Atenție la limbajul folosit! Cuvântul %s nu este permis aici.\"\nmsgstr[1] \"Atenție la limbajul folosit! Cuvintele %s nu sunt permise aici.\"\nmsgstr[2] \"Atenție la limbajul folosit! Cuvintele %s nu sunt permise aici.\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"și\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"\"\n\"Dacă introduceți ceva în acest câmp, comentariul dumneavoastră va fi \"\n\"considerat ca spam\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"tip conţinut\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"ID obiect\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"utilizator\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"numele utilizatorului\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"adresa e-mail a utilizatorului\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"URL-ul utilizatorului\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"comentariu\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"data/ora creării\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"adresă ip\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"este public\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"\"\n\"Debifaţi această casetă pentru a face comentariul să dispară de pe site.\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"este șters\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\"Bifați această casuța dacă acest comentariu nu este adecvat. Un mesaj de \"\n\"tipul \\\"Acest comentariu a fost șters\\\" va fi afișat în schimb.\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"comentarii\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"\"\n\"Acest comentariu a fost scris de către un utilizator autentificat, astfel \"\n\"numele poate fi doar citit.\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\"Acest comentariu a fost scris de către un utilizator autentificat, astfel \"\n\"adresa e-mail poate fi doar citită.\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\"Scris de %(user)s la %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"marcaj\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"dată\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"marcaj comentariu\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"marcaje comentarii\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"Aprobă un comentariu\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"Chiar doriți să faceți public acest comentariu?\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"Aprobă\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"Mulțumiri pentru aprobare\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"\"\n\"Vă mulţumim pentru a timpul acordat spre a îmbunătăți calitatea discuțiilor \"\n\"de pe situl nostru\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"Elimină un comentariu\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"Chiar doriți să eliminați acest comentariu?\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"Elimină\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"Mulțumiri pentru eliminare\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"Marcați acest comentariu\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"Chiar doriți să marcați acest comentariu?\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"Marchează\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"Mulțumiri pentru marcare\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"Publică\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"Previzualizează\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"Mulțumiri pentru comentariu\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"Vă mulțumim pentru comentariu\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"Previzualizați-vă comentariul\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"Corectați eroarea de mai jos\"\nmsgstr[1] \"Corectați erorile de mai jos\"\nmsgstr[2] \"Corectați erorile de mai jos\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"Publicați-vă comentariul\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"sau faceți modificări\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/ru/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Translators:\n# Denis Darii <sinednx@gmail.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Алексей Борискин <sun.void@gmail.com>, 2013.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2013-02-05 20:10+0000\\n\"\n\"Last-Translator: Алексей Борискин <sun.void@gmail.com>\\n\"\n\"Language-Team: Russian (http://www.transifex.com/projects/p/django/language/\"\n\"ru/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ru\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"Содержание\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"Метаданные\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"помечен\"\nmsgstr[1] \"помечены\"\nmsgstr[2] \"помечены\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"Пометить выбранные комментарии\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"одобрен\"\nmsgstr[1] \"одобрены\"\nmsgstr[2] \"одобрены\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"Одобрить выбранные комментарии\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"удален\"\nmsgstr[1] \"удалены\"\nmsgstr[2] \"удалены\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"Удалить выбранные комментарии\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"%(count)s комментарий был успешно %(action)s.\"\nmsgstr[1] \"%(count)s комментария были успешно %(action)s.\"\nmsgstr[2] \"%(count)s комментариев были успешно %(action)s.\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"Комментарии %(site_name)s\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"Последние комментарии на %(site_name)s\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"Имя\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"Адрес электронной почты\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"Комментарий\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"\"\n\"Следите за своими словами! Употребление слова \\\"%s\\\" здесь запрещено.\"\nmsgstr[1] \"\"\n\"Следите за своими словами! Употребление слов \\\"%s\\\" здесь запрещено.\"\nmsgstr[2] \"\"\n\"Следите за своими словами! Употребление слов \\\"%s\\\" здесь запрещено.\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"и\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"\"\n\"Если вы что-то введете в это поле, то ваш комментарий будет помечен как спам\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"тип содержимого\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"идентификатор объекта\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"пользователь\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"имя пользователя\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"адрес электронной почты пользователя\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"URL пользователя\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"комментарий\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"дата и время добавления\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"IP-адрес\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"публичный\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"Снимите выделение, чтобы убрать комментарий с сайта.\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"удалён\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\"Отметьте, если комментарий нежелателен. Взамен будет показано сообщение \"\n\"\\\"Этот комментарий был удален\\\".\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"Комментарии\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"\"\n\"Комментарий был добавлен зарегистрированным пользователем, поэтому имя \"\n\"пользователя доступно только для чтения.\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\"Комментарий был добавлен зарегистрированным пользователем, поэтому адрес \"\n\"электронной почты доступен только для чтения.\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\"Добавил %(user)s %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"отметка\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"дата\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"отметка комментария\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"отметки комментариев\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"Одобрить комментарий\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"Вы уверены, что хотите опубликовать этот комментарий?\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"Одобрить\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"Спасибо, что одобрили комментарий\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"Спасибо, что заботитесь о качестве общения на нашем сайте\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"Удалить комментарий\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"Вы уверены, что хотите удалить этот комментарий?\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"Удалить\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"Спасибо за удаление\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"Отметить этот комментарий\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"Вы уверены, что хотите отметить этот комментарий?\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"Отметить\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"Спасибо\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"Опубликовать\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"Предпросмотр\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"Спасибо за комментарий\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"Спасибо за ваш комментарий\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"Предпросмотр вашего комментария\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"Пожалуйста, исправьте ошибку ниже\"\nmsgstr[1] \"Пожалуйста, исправьте ошибки ниже\"\nmsgstr[2] \"Пожалуйста, исправьте ошибки ниже\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"Опубликуйте ваш комментарий\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"или внесите изменения\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/sk/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:24+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Slovak (http://www.transifex.com/projects/p/django/language/\"\n\"sk/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sk\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"Obsah\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"Metaúdaje\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"označený\"\nmsgstr[1] \"označené\"\nmsgstr[2] \"označených\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"Označiť vybraný komentár\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"schválený\"\nmsgstr[1] \"schválené\"\nmsgstr[2] \"schválených\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"Schváliť vybraný komentár\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"odstránený\"\nmsgstr[1] \"odstránené\"\nmsgstr[2] \"odstránených\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"Odstrániť vybrané komentáre\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"1 komentár bol úspešne %(action)s.\"\nmsgstr[1] \"%(count)s komentáre boli úspešne %(action)s.\"\nmsgstr[2] \"%(count)s komentárov bolo úspešne %(action)s.\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"%(site_name)s komentáre\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"Najnovšie komentáre na %(site_name)s\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"Meno\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"E-mail adresa\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"Komentár\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"Vyjadrujte sa slušne! Slovo %s tu nie je dovolené používať.\"\nmsgstr[1] \"Vyjadrujte sa slušne! Slová %s tu nie je dovolené používať.\"\nmsgstr[2] \"Vyjadrujte sa slušne! Slová %s tu nie je dovolené používať.\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"a\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"\"\n\"Ak ste do tohoto poľa čokoľvek zadali, váš komentár bude považovaný za spam\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"typ obsahu\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"identifikátor objektu\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"používateľ\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"meno používateľa\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"e-mail adresa používateľa\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"URL používateľa\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"komentár\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"dátum a čas odoslania\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"IP adresa\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"je verejný\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"\"\n\"Ak chcete, aby komentár zmizol zo stránky, zrušte zaškrtnutie tohoto políčka.\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"je odstránený\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\"Zaškrtnite toto pole, ak je komentár nevhodný. Namiesto neho sa zobrazí \"\n\"správa \\\"Tento komenár bol odstránený\\\".\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"komentáre\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"\"\n\"Tento komentár je od autentifikovaného používateľa a preto je jeho meno len \"\n\"na čítanie.\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\"Tento komentár je od autentifikovaného používateľa a preto je jeho e-mail \"\n\"len na čítanie.\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\"Pridaný užívateľom %(user)s dňa %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"príznak\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"dátum\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"komentárový príznak\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"komentárové príznaky\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"Povoliť komentár\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"Skutočne chcete zverejniť tento komentár?\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"Povoliť\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"Ďakujeme za povolenie\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"\"\n\"Ďakujeme za čas, ktorý ste venovali zvýšniu kvality diskusie na našej stránke\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"Zmazať komentár\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"Naozaj chcete zmazať tento komentár?\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"Odstrániť\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"Ďakujeme za odstránenie\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"Označiť tento komentár\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"Naozaj chcete označiť tento komentár?\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"Príznak\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"Ďakujeme za označenie\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"Poslať\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"Náhľad\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"Vďaka za komentár\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"Ďakujeme za váš komentár\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"Náhľad komentára\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"Opravte, prosím, chybu uvedenú nižšie\"\nmsgstr[1] \"Opravte, prosím, chyby uvedené nižšie\"\nmsgstr[2] \"Opravte, prosím, chyby uvedené nižšie\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"Poslať váš komentár\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"alebo urobiť zmeny\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/sl/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-31 20:17+0000\\n\"\n\"Last-Translator: mateju <>\\n\"\n\"Language-Team: Slovenian (http://www.transifex.com/projects/p/django/\"\n\"language/sl/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sl\\n\"\n\"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n\"\n\"%100==4 ? 2 : 3);\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"Vsebina\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"Metapodatki\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"označenih\"\nmsgstr[1] \"označen\"\nmsgstr[2] \"označena\"\nmsgstr[3] \"označeni\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"Označi izbrane komentarje\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"odobrenih\"\nmsgstr[1] \"odobren\"\nmsgstr[2] \"odobrena\"\nmsgstr[3] \"odobreni\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"Odobri izbrane opokomentarje\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"odstranjenih\"\nmsgstr[1] \"odstranjen\"\nmsgstr[2] \"odstranjena\"\nmsgstr[3] \"odstranjeni\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"Odstrani izbrane komentarje\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"%(count)s komentarev je uspešno %(action)s.\"\nmsgstr[1] \"%(count)s komentar je uspešno %(action)s.\"\nmsgstr[2] \"%(count)s komentarja sta uspešno %(action)s.\"\nmsgstr[3] \"%(count)s komentarji so uspešno %(action)s.\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"Komentarji %(site_name)s\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"Zadnji komentarji na %(site_name)s\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"Ime\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"Elektronski naslov\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"Naslov URL\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"Komentar\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"Pazite na jezik! Besede %s tu niso dovoljene.\"\nmsgstr[1] \"Pazite na jezik! Beseda %s tu ni dovoljena.\"\nmsgstr[2] \"Pazite na jezik! Besedi %s tu nista dovoljeni.\"\nmsgstr[3] \"Pazite na jezik! Besede %s tu niso dovoljene.\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"in\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"\"\n\"Če v to polje vnesete kakršnokoli besedilo, bo vaš komentar označen kot \"\n\"neželen komentar.\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"vrsta vsebine\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"ID predmeta\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"uporabnik\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"ime uporabnika\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"elektronski naslov uporabnika\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"naslov URL uporabnika\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"komentar\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"datum in čas objave\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"naslov IP\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"je javno\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"Odkljukajte izbor in komentar bo izginil s strani.\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"je odstranjen\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\"Odkljukajte, če je komentarj neprimeren. Namesto komentarja bo prikazano \"\n\"obvestilo \\\"Komentar je bil odstranjen\\\".\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"komentarji\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"\"\n\"Komentar je objavil prijavljen uporabnik, zato je ime na voljo le za branje.\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\"Komentar je objavil prijavljen uporabnik, zato je elektronski naslov na \"\n\"voljo le za branje.\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\"Objavljeno z računa %(user)s ob %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"označi\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"datum\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"oznaka komentarja\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"oznake komentarja\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"Odobri komentar\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"Ali ste prepričani, da želite ta komentar objaviti?\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"Odobri\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"Hvala za odobritev\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"\"\n\"Hvala, da ste si vzeli čas in pomagali izboljšati kakovost pogovorov na naši \"\n\"strani.\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"Odstrani komentar\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"Ali res želite odstraniti ta komentar?\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"Odstrani\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"Hvala, ker ste odstranili komentar.\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"Označi ta komentar\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"Ali res želite označiti ta komentar?\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"Označi\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"Hvala, ker ste označili komentar\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"Objavi\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"Predogled\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"Hvala za objavljanje komentarjev\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"Hvala za vaš komentar\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"Predogled komentarja\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"Odpravite naslednje napake\"\nmsgstr[1] \"Odpravite naslednjo napako\"\nmsgstr[2] \"Odpravite naslednji napaki\"\nmsgstr[3] \"Odpravite naslednje napake\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"Objavite komentar\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"ali naredite spremembe\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/sq/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Besnik <besnik@programeshqip.org>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:24+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Albanian (http://www.transifex.com/projects/p/django/language/\"\n\"sq/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sq\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"Lëndë\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"Tejtëdhëna\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"me shenjë\"\nmsgstr[1] \"me shenjë\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"Vëru shenjë komenteve të përzgjedhura\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"i miratuar\"\nmsgstr[1] \"të miratuar\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"Miratoji komentet e përzgjedhura\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"i hequr\"\nmsgstr[1] \"të hequr\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"Hiqi komentet e përzgjedhur\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"1 koment %(action)s me sukses.\"\nmsgstr[1] \"%(count)s komente %(action)s me sukses.\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"komente te %(site_name)s\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"Komentet më të fundit te %(site_name)s\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"Emër\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"Adresë email\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"Koment\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"Mbani gojën! Këtu nuk lejohet fjala %s.\"\nmsgstr[1] \"Mbani gojën! Këtu nuk lejohen fjalët %s.\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \" dhe \"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"\"\n\"Nëse fusni diçka në këtë fushë komenti juaj do të trajtohet si i pavlerë\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"lloj lënde\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"ID objekti\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"përdorues\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"emri i përdoruesit\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"adresa email e përdoruesit\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"URL përdoruesi\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"koment\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"data/koha e parashtrimit\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"Adresë IP\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"është publike\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"\"\n\"Hiqjani shenjën kësaj kutize që ta bëni komentin të zhduket faktikisht prej \"\n\"site-it.\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"është hequr\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\"I vini shenjë kësaj kutie, nëse komenti është i papërshtatshëm. Në vend të \"\n\"tij do të shfaqet një mesazh \\\"Ky koment është hequr\\\".\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"komente\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"\"\n\"Ky koment u postua nga një përdorues i mirëfilltësuar, ndaj emri është nën \"\n\"atributin vetëm-lexim.\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\"Ky koment u postua nga një përdorues i mirëfilltësuar, ndaj email-i është \"\n\"nën atributin vetëm-lexim.\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\"Postuar nga %(user)s më %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"shenjë\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"datë\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"shenjë komenti\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"shenja komenti\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"Miratoni një koment\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"Të bëhet vërtet publik ky koment?\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"Miratoje\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"Faleminderit që e miratuat\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"\"\n\"Faleminderit për kohën e harxhuar për përmirësimin e cilësisë së diskutimit \"\n\"në site-in tonë.\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"Hiqni një koment\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"Të hiqet vërtet ky koment?\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"Hiqe\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"Faleminderit që e hoqët\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"I vini shenjë këtij komenti\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"T'i vihet shenjë vërtet këtij komenti?\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"Vëri shenjë\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"Faleminderit që i vutë shenjë\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"Postoje\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"Paraparje\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"Faleminderit që komentuat\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"Faleminderit për komentin tuaj\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"Parashiheni komentin tuaj\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"Ju lutem, ndreqni gabimin e mëposhtëm\"\nmsgstr[1] \"Ju lutem, ndreqni gabimet e mëposhtme\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"Postojeni komentin tuaj\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"ose bëni ndryshime\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/sr/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Janos Guljas <janos@resenje.org>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:24+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Serbian (http://www.transifex.com/projects/p/django/language/\"\n\"sr/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sr\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"Садржај\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"Метаподаци\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"означен\"\nmsgstr[1] \"означена\"\nmsgstr[2] \"означена\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"Означавање изабраних коментара\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"одобрен\"\nmsgstr[1] \"одобрена\"\nmsgstr[2] \"одобрена\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"Одобрење изабраних коментара\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"избрисан\"\nmsgstr[1] \"избрисана\"\nmsgstr[2] \"избрисана\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"Обриши изабране коментаре\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"%(count)s коментар је успешно %(action)s.\"\nmsgstr[1] \"%(count)s коментара су успешно %(action)s.\"\nmsgstr[2] \"%(count)s коментара су успешно %(action)s.\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"Коментари на сајту %(site_name)s\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"Скорији коментари на сајту %(site_name)s\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"Име\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"Имејл адреса\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"Коментари\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"Пазите шта пишете! Реч %s није дозвољена овде.\"\nmsgstr[1] \"Пазите шта пишете! Речи %s нису дозвољене овде.\"\nmsgstr[2] \"Пазите шта пишете! Речи %s нису дозвољене овде.\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"и\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"Ако ишта унесете у ово поље, Ваш коментар ће се сматрати спамом.\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"тип садржаја\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"ID објекта\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"корисник\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"корисниково име\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"корисникова имејл адреса\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"корисников URL\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"коментар\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"датум/време постављања\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"IP адреса\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"јавно\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"\"\n\"Деселектујте ово поље ако желите да порука фактички нестане са овог сајта.\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"уклоњен\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\"Обележите ову кућицу ако је коментар неприкладан. Порука о уклањању ће бити \"\n\"приказана уместо коментара.\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"коментари\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"\"\n\"Овај коментар је поставио пријављен корисник и зато је поље са именом \"\n\"закључано.\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\"Овај коментар је поставио пријављен корисник и зато је поље са имејл адресом \"\n\"закључано.\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\"Поставио %(user)s, %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"ознака\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"датум\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"ознака коментара\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"ознаке коментара\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"Одобрење коментара\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"Да ли заиста желите да означите овај коментар јавним?\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"Одобри\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"Хвала на одобрењу!\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"Хвала на учешћу у унапређењу квалитета дискусија на нашем сајту.\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"Обриши коментар\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"Да ли заиста желите да обришете овај коментар?\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"Обриши\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"Хвала што користите наш сајт!\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"Означавање коментара\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"Да ли заиста желите да означите овај коментар?\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"Означи\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"Хвала што сте означили коментар.\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"Постави\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"Преглед\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"Хвала на коментару\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"Хвала што сте оставили свој коментар\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"Прегледај коментар\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"Исправите наведену грешку\"\nmsgstr[1] \"Исправите наведене грешке\"\nmsgstr[2] \"Исправите наведене грешке\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"Постави коментар\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"или изврши измене\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/sr_Latn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Janos Guljas <janos@resenje.org>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:24+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/django/\"\n\"language/sr@latin/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sr@latin\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"Sadržaj\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"Metapodaci\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"označen\"\nmsgstr[1] \"označena\"\nmsgstr[2] \"označena\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"Označavanje izabranih komentara\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"odobren\"\nmsgstr[1] \"odobrena\"\nmsgstr[2] \"odobrena\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"Odobrenje izabranih komentara\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"izbrisan\"\nmsgstr[1] \"izbrisana\"\nmsgstr[2] \"izbrisana\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"Obriši izabrane komentare\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"%(count)s komentar je uspešno %(action)s.\"\nmsgstr[1] \"%(count)s komentara su uspešno %(action)s.\"\nmsgstr[2] \"%(count)s komentara su uspešno %(action)s.\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"Komentari na sajtu %(site_name)s\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"Skoriji komentari na sajtu %(site_name)s\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"Ime\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"Imejl adresa\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"Komentari\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"Pazite šta pišete! Reč %s nije dozvoljena ovde.\"\nmsgstr[1] \"Pazite šta pišete! Reči %s nisu dozvoljene ovde.\"\nmsgstr[2] \"Pazite šta pišete! Reči %s nisu dozvoljene ovde.\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"i\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"Ako išta unesete u ovo polje, Vaš komentar će se smatrati spamom.\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"tip sadržaja\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"ID objekta\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"korisnik\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"korisnikovo ime\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"korisnikova imejl adresa\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"korisnikov URL\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"komentar\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"datum/vreme postavljanja\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"IP adresa\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"javno\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"\"\n\"Deselektujte ovo polje ako želite da poruka faktički nestane sa ovog sajta.\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"uklonjen\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\"Obeležite ovu kućicu ako je komentar neprikladan. Poruka o uklanjanju će \"\n\"biti prikazana umesto komentara.\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"komentari\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"\"\n\"Ovaj komentar je postavio prijavljen korisnik i zato je polje sa imenom \"\n\"zaključano.\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\"Ovaj komentar je postavio prijavljen korisnik i zato je polje sa imejl \"\n\"adresom zaključano.\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\"Postavio %(user)s, %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"oznaka\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"datum\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"oznaka komentara\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"oznake komentara\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"Odobrenje komentara\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"Da li zaista želite da označite ovaj komentar javnim?\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"Odobri\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"Hvala na odobrenju!\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"Hvala na učešću u unapređenju kvaliteta diskusija na našem sajtu.\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"Obriši komentar\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"Da li zaista želite da obrišete ovaj komentar?\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"Obriši\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"Hvala što koristite naš sajt!\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"Označavanje komentara\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"Da li zaista želite da označite ovaj komentar?\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"Označi\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"Hvala što ste označili komentar.\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"Postavi\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"Pregled\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"Hvala na komentaru\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"Hvala što ste ostavili svoj komentar\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"Pregledaj komentar\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"Ispravite navedenu grešku\"\nmsgstr[1] \"Ispravite navedene greške\"\nmsgstr[2] \"Ispravite navedene greške\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"Postavi komentar\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"ili izvrši izmene\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/sv/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Andreas Pelme <andreas@pelme.se>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:24+0000\\n\"\n\"Last-Translator: Andreas Pelme <andreas@pelme.se>\\n\"\n\"Language-Team: Swedish (http://www.transifex.com/projects/p/django/language/\"\n\"sv/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sv\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"Innehåll\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"Metadata\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"flaggad\"\nmsgstr[1] \"flaggade\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"Flagga markerade kommentarer\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"godkänd\"\nmsgstr[1] \"godkända\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"Godkänn valda kommentarer\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"borttagen\"\nmsgstr[1] \"borttagna\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"Ta bort valda kommentarer\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"\"\nmsgstr[1] \"%(count)s kommentarer har blivit %(action)s.\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"%(site_name)s kommentarer\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"Senaste kommentarer på %(site_name)s\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"Namn\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"E-postadress\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"Kommentar\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"Akta din tunga! Ordet %s är inte tillåtet här.\"\nmsgstr[1] \"Akta din tunga! Orden %s är inte tillåtna här.\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"och\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"Om du fyller i detta fält kommer din kommentar att betraktas som spam\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"innehålls typ\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"objektets ID\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"användare\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"användares namn\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"användares e-postadress\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"användares URL\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"kommentar\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"skickat datum/tid\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"IP-adress\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"är offentlig\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"Avmarkeras detta kommer kommentaren inte synas på webbplatsen.\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"är borttaget\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\"Bocka för denna ruta om kommentaren är olämplig. Ett \\\"Denna kommentar har \"\n\"tagits bort\\\"-meddelande kommer visas istället.\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"kommentarer\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"\"\n\"Denna kommentar postades av en autentiserad användare och därför är namnet \"\n\"skrivskyddat.\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\"Denna kommentar postades av en autentiserad användare och därför är e-\"\n\"postadressen skrivskyddad.\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\"Inlagt av %(user)s %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"flagga\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"datum\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"kommentarsflagga\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"kommentarsflaggor\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"Godkänn en kommentar\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"Är du säker på att du vill offentliggöra kommentaren?\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"Godkänn\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"Tack för ditt godkännande\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"\"\n\"Tack för att du tog dig tid att förbättra kvaliteten på denna sites \"\n\"diskussioner\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"Tag bort en kommentar\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"Är du säker på att du vill ta bort denna kommentar?\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"Tag bort\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"Tack för att du tog bort\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"Flagga denna kommentar\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"Är du säker på att du vill flagga kommentaren?\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"Flagga\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"Tack för att ditt flaggande\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"Skicka\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"Förhandsgranska\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"Tack för din kommentar\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"Tack för din kommentar\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"Förhandsgranska din kommentar\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"Rätta till felet nedan.\"\nmsgstr[1] \"Rätta till felen nedan.\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"Skicka kommentar\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"eller gör ändringar\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/sw/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-07-06 16:44+0000\\n\"\n\"Last-Translator: machaku <bmachaku@gmail.com>\\n\"\n\"Language-Team: Swahili (http://www.transifex.com/projects/p/django/language/\"\n\"sw/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sw\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"Maudhui\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"Metadata\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"yameidhinishwa\"\nmsgstr[1] \"yameidhinishwa\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"Idhinisha maoni yaliyochaguliwa\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"yameondolewa\"\nmsgstr[1] \"yameondolewa\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"Ondoa maoni yaliyochaguliwa\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"maoni %(action)s kwa mafanikio.\"\nmsgstr[1] \"maoni %(count)s %(action)s kwa mafanikio.\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"maoni ya %(site_name)s\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"Maoni ya karibuni ya %(site_name)s.\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"Jina\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"Anuani ya baruapepe\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"Maoni\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"Chunga mdomo wako! Neno %s haliruhusiwi hapa.\"\nmsgstr[1] \"Chunga mdomo wako! Maneno %s hayaruhusiwi hapa.\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"na\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"\"\n\"Ikiwa utaingiza chochote katika uga huu maoni yako yatachukuliwa kama taka\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"aina ya maudhui\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"ID ya kitu\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"mtumiaji\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"jina la mtumiaji\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"anuani ya baruapepe ya mtumiaji\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"URL ya mtumiaji\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"maoni\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"tarehe/muda yalipotolewa\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"anuani ya IP\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"kwa umma\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"\"\n\"Toa tiki katika kisanduku hiki na maoni yako yatatolewa kikamilifu kutoka \"\n\"tovuti hii.\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"yameondolewa\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"maoni\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"\"\n\"Maoni haya yametumwa na mtumiaji aliyethibitishwa na hivyo jina ni la kusoma \"\n\"tu.\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\"Maoni haya yametumwa na mtumiaji aliyethibitishwa na hivyo anuani ya \"\n\"baruapepe ni ya kusoma tu.\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\"Yametumwa na %(user)s %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"tarehe\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"Kweli toa maoni haya kwa umma?\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"Pitisha\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"Ahsante kwa kupitisha\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"\"\n\"Asante kwa kutumia muda ili kuboresha ubora wa mjadala katika tovuti yetu\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"Ondoa maoni\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"Kweli, ondoa maoni haya?\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"Ondoa\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"Ahsante kwa kuondoa\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"Tuma\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"Hakikisha\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"Ahsante kwa kutoa maoni\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"Ahsante kwa maoni yako\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"Hakikisha maoni haya\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"Tafadhali sahihisha kosa lifuatalo\"\nmsgstr[1] \"Tafadhali sahihisha makosa yafuatayo\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"Tuma maoni yako\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"au fanya mabadiliko\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/ta/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:24+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Tamil (http://www.transifex.com/projects/p/django/language/\"\n\"ta/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ta\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"வார்த்தைகளை அளன்து பேசுங்கள்! %s என்ற வார்த்தை இங்கு அனுமதி இல்லை\"\nmsgstr[1] \"வார்த்தைகளை அளந்து பேசுங்கள்! %s என்ற வார்த்தைகள் இங்கு அனுமதி இல்லை\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"மற்றும்\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"பொருளடக்க வகை\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"அடையாளம்\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"பயனர்\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"குறிப்பு\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"தேதி/நேரம் சமர்ப்பிக்கப்பட்டுள்ளது\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"IP விலாசம்\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"பொதுவானது\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"நீக்கபட்டது\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\"குறிப்பு சரியாக இல்லையென்றால் இந்த பெட்டியில் குறியிடவும். இதற்கு பதிலாக \\\"இந்த \"\n\"குறிப்பு நீக்கபட்டது\\\" காண்பிக்கபடும்.\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"குறிப்பு\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\"%(user)s ஆல் %(date)s இல் அளிக்கப்பட்டது \\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/te/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# bhaskar teja yerneni <prudhviy@gmail.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Veeven  <veeven@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:24+0000\\n\"\n\"Last-Translator: bhaskar teja yerneni <prudhviy@gmail.com>\\n\"\n\"Language-Team: Telugu (http://www.transifex.com/projects/p/django/language/\"\n\"te/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: te\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"విషయం\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"అంగికరించబడినది\"\nmsgstr[1] \"అంగికరించబడినది\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"ఎంచుకున్న వ్యాఖ్యానమునలను సంమతించుము\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"తీసివేయబడినది \"\nmsgstr[1] \"తీసివేయబడినది \"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"ఎంచుకున్న వ్యాఖ్యానమునలను తీసివేయుము \"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"1 వ్యాఖ్యానము జయప్రదముగా %(action)s.\"\nmsgstr[1] \"%(count)s వ్యాఖ్యానములు జయప్రదముగా %(action)s.\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"%(site_name)s వ్యాఖ్యలు\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"తాజా వ్యాఖ్యానములు %(site_name)s నందు కలదు \"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"పేరు\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"ఈమెయిలు చిరునామా\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"యు ఆర్ యల్ \"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"వ్యాఖ్య\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"సరిచూసుకోండి! %s పదము ఇక్కడ సరియినది కాదు \"\nmsgstr[1] \"సరిచూసుకోండి! %s పదములు ఇక్కడ సరియినది కాదు \"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"మరియు\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"ఈ క్షేత్రములో ఏదయినా వ్యాఖ్య రాసినట్లయితే అది అసంధర్బ వ్యాఖ్య గా పరిగనించబడుతుంది \"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"సూచన రకం\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"వస్తువు ఐడి\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"వాడుకరి\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"వాడుకరి పేరు\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"వాడుకరి ఈమెయిలు చిరునామా\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"వాడుకరి URL\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"వ్యాఖ్య\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"సమర్పించిన తేదీ/సమయం\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"ఐపీ చిరునామా\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"బహిరంగమయినది\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"తీసివేయబడినది\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \" ఈ వ్యాఖ్యానము సరిగ్గా లేదని తోచినచో ఈ  డబ్బా ని చెక్ చేయండి \"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"వ్యాఖ్యలు\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"తేదీ\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"నిరాటంకమైన వ్యాఖ్యానము\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"ఖచితముగా ఈ వ్యాఖ్యను జాతియము చేయమంటారా?\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"అనుమతించు \"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"అనుమతించినందుకు ధన్యవాదములు \"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"వ్యాఖ్యను తొలగించుము \"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"ఖచితముగా ఈ వ్యాఖ్యను తొలగించవలసినదేనా?  \"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"తొలగించు\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"తొలగించినందుకు ధన్యవాదములు \"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"సమర్పణ\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"ముందస్తు వీక్షణం\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"వ్యాఖ్యానిచినందుకు ధన్యవాదములు  \"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"వ్యాఖ్యానిచినందుకు ధన్యవాదములు  \"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"వ్యాఖ్యను ముందస్తు గా వీక్షిపుము \"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"దయచేసి క్రింద వున్న వ్యాఖ్యను సరిచేసుకోండి \"\nmsgstr[1] \"దయచేసి క్రింద వున్న వ్యాఖ్యలను సరిచేసుకోండి \"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"మీ వ్యాఖ్యని టపాచేయండి\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"లేదా మార్పులు చేయండి\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/th/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Kowit Charoenratchatabhan <kowito@gmail.com>, 2012.\n# Suteepat Damrongyingsupab <monkeycrew_topza@hotmail.com>, 2012.\n# Vichai Vongvorakul <vongvichai@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-12 06:23+0000\\n\"\n\"Last-Translator: Suteepat Damrongyingsupab <monkeycrew_topza@hotmail.com>\\n\"\n\"Language-Team: Thai (http://www.transifex.com/projects/p/django/language/\"\n\"th/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: th\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"เนื้อหา\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"Metadata\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"ถูกแจ้งเตือนแล้ว\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"แจ้งเตือนความคิดเห็นที่เลือก\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"ได้รับการอนุมัติ\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"อนุมัติความคิดเห็นที่เลือกไว้\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"ลบ\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"ลบความคิดเห็นที่เลือกไว้\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"%(count)s ความคิดเห็นได้ถูก%(action)sเรียบร้อยแล้ว\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"ความเห็นของ %(site_name)s\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"ความเห็นล่าสุดเมื่อ %(site_name)s\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"ชื่อ\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"อีเมล\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"ข้อคิดเห็น\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"ระวังนะ ไม่สามารถใช้คำว่า %s ที่นี่ได้\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"และ\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"ถ้าคุณใส่ข้อมูลใดๆ ก็ตามในส่วนนี้ มันจะกลายเป็นสแปม\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"content type\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"อ็อบเจ็กต์ไอดี\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"ผู้ใช้\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"ชื่อของผู้ใช้\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"อีเมลของผู้ใช้\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"URL ของผู้ใช้\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"ข้อคิดเห็น\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"วันและเวลาที่ส่งข้อมูล\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"หมายเลขไอพี\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"สาธารณะ\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"เลือกออกเพื่อที่จะทำให้ข้อคิดเห็นนั้นหายไปจากเว็บไซต์\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"ถอดออกแล้ว\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\"เลือกเมื่อเห็นว่าข้อคิดเห็นไหนไม่เหมาะสม เมื่อข้อคิดเห็นนี้ได้ถูกลบแล้ว ข้อมูลอื่นจะถูกแสดงขึ้นแทน\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"ความคิดเห็น\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"ข้อคิดเห็นนี้ได้ถูกเขียนไว้โดยผู้ใช้ที่สามารถเชื่อถือได้ จะถูกอ่านได้เพียงอย่างเดียว\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"ข้อคิดเห็นนี้ถูกเขียนไว้โดยผู้ใช้ที่สามารถเชื่อถือได้ ดังนั้นอีเมลนั้นจะถูกอ่านเท่านั้น\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\"โพสต์โดย %(user)s ที่ %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"ธง\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"วันที่\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"ธงแสดงความเห็น\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"ปักธงแสดงความคิดเห็น\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"อนุมัติความคิดเห็น\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"ยืนยันที่จะให้ประชาชนแสดงความคิดเห็นนี้ไหม?\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"อนุมัติ\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"ขอบคุณสำหรับการอนุมัติ\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"ขอบคุณที่สละเวลาเพื่อปรับปรุงคุณภาพของการสนทนาในเว็บไซต์ของเรา\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"ลบออกความคิดเห็น\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"ยืนยันที่จะลบความคิดเห็นนี้?\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"ลบ\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"ขอบคุณสำหรับการลบ\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"ปักธงความคิดเห็นนี้\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"ยืยยันที่จะปักธงความคิดเห็นนี้นี้?\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"ปักธง\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"ขอบคุณสำหรับการปักธง\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"โพสต์\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"ดูตัวอย่าง\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"ขอบคุณสำหรับการให้ความคิดเห็น\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"ขอบคุณสำหรับความคิดเห็นของคุณ\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"แสดงตัวอย่างความคิดเห็นของคุณ\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"กรุณาแก้ไขข้อผิดพลาดด้านล่าง\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"โพสต์ความคิดเห็นของคุณ\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"หรือทำการเปลี่ยนแปลง\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/tr/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:24+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Turkish (http://www.transifex.com/projects/p/django/language/\"\n\"tr/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: tr\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"İçerik\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"Meta bilgi\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"işaretli\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"Seçili yorumları işaretle\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"onaylandı\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"Seçili yorumları onayla\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"silinmiş\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"Seçili yorumları sil\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"%(count)s adet yorum başarıyla %(action)s.\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"%(site_name)s sitesine ait yorumlar\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"%(site_name)s sitesindeki son yorumlar\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"İsim\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"E-posta adresi\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"Yorum\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"Söylediğinize dikkat edin! %s kelimeleri burada kullanılamaz.\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"ve\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"\"\n\"Eğer bu alana herhangi bir şey girerseniz, yorumunuz spam olarak kabul \"\n\"edilecektir\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"içerik türü\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"nesne no\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"kullanıcı\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"kullanıcının adı\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"kullanıcının e-posta adresi\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"kullanıcının URL'si\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"yorum\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"gönderim tarihi/saati\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"IP adresi\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"görünürlük\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"Yorumu site üzerinden kaldırmak için bu kutucuğun seçimini kaldırın.\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"silinmiş\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\"Yorum uygunsuz ise bu işareti kaldırın. \\\"Yorum silindi\\\" uyarısı \"\n\"görüntülenecek.\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"yorumlar\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"\"\n\"Bu yorum kayıtlı kullanıcı tarafından yazıldığı için başlığı salt okunurdur.\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\"Bu yorum kayıtlı kullanıcı tarafından yazıldığı için e-posta adresi salt \"\n\"okunurdur.\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\"%(date)s tarihinde %(user)s göndermiş:\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"işaret\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"tarih\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"yorum işareti\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"yorum işaretleri\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"Yorumu onayla\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"Bu yorum gerçekten umuma açılsın mı?\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"Onayla\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"Onayınız için teşekkürler\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"\"\n\"Sitemizdeki tartışma kalitesini yükseltmek amacıyla ayırdığınız zaman için \"\n\"teşekkür ederiz.\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"Yorumu sil\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"Yorum silinsin mi?\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"Sil\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"Sildiğiniz için teşekkürler\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"Bu yorumu işlaretle\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"Yorum işaretlensin mi?\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"İşaret\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"İşaretlediğiniz için teşekkürler\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"Gönderi\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"Önizleme\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"Yorumunuz için teşekkürler\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"Yorumunuz için teşekkür ederiz\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"Yorumunuzun önüzlemesini görün\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"Lütfen aşağıdaki hataları düzeltin\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"Yorumunuzu gönderin\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"veya düzenleme yapmak\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/tt/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2011-01-19 15:42+0000\\n\"\n\"Last-Translator: Django team\\n\"\n\"Language-Team: Tatar (http://www.transifex.com/projects/p/django/language/\"\n\"tt/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: tt\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/uk/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Sergey Lysach <sergikoff88@gmail.com>, 2011.\n# Sergiy Kuzmenko <s.kuzmenko@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:24+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Ukrainian (http://www.transifex.com/projects/p/django/\"\n\"language/uk/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: uk\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"Зміст\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"Мета-дані\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"позначено\"\nmsgstr[1] \"позначено\"\nmsgstr[2] \"позначено\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"Позначити відзначені коментарі\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"апробовано\"\nmsgstr[1] \"апробовано\"\nmsgstr[2] \"апробовано\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"Апробувати відзначені коментарі\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"видалено\"\nmsgstr[1] \"видалено\"\nmsgstr[2] \"видалено\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"Видалити відзначені коментарі\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"%(count)s коментар було %(action)s.\"\nmsgstr[1] \"%(count)s коментарі було %(action)s.\"\nmsgstr[2] \"%(count)s коментарів було %(action)s.\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"коментарі сайту %(site_name)s\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"Останні коментарі на сайті %(site_name)s\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"Ім'я\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"E-mail адреса\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"Коментар\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"Слідкуйте за своїм язиком! Тут не дозволено вживати слово %s. \"\nmsgstr[1] \"Слідкуйте за своїм язиком! Тут не дозволено вживати слова %s. \"\nmsgstr[2] \"Слідкуйте за своїм язиком! Тут не дозволено вживати слова %s. \"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"та\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"Якщо ви введете щось в це поле, ваш коментар буде вважатися спамом\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"content type\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"ID об'єкту\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"користувач\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"ім'я користувача\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"e-mail адреса користувача\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"URL користувачів\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"коментар\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"дата/час додавання\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"IP адреса\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"публічний\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"Видаліть галочку звідси, щоб коментар зник з сайту.\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"видалений\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\"Поставте тут галочку, якщо коментар неприйнятний. Повідомлення \\\"Цей \"\n\"коментар було видалено\\\" буде відображено замість цього коментаря.\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"коментарі\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"\"\n\"Цей коментар був розміщений зареєстрованим користувачем і тому ім'я не може \"\n\"бути відредаговано.\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\"Цей коментар був розміщений зареєстрованим користувачем і тому email не може \"\n\"бути відредагований.\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\"Додав %(user)s %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"позначка\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"число\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"позначка коментаря\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"позначки коментаря\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"Затвердіть коментар\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"Дійсно, зробити цей коментар публічним?\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"Затвердити\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"Дякуємо за затвердження.\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"\"\n\"Дякуємо за те, що ви приділили увагу покращенню якості дискусії на нашому \"\n\"сайті\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"Видалити коментар\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"Дійсно, видалити цей коментар?\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"Видалити\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"Дякуємо за видалення.\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"Відмітити цей коментар?\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"Дійсно відмітити цей коментар?\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"Відмітити\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"Дякуємо за користування нашим сайтом.\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"Надіслати\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"Попередній перегляд\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"Дякуємо за коментування\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"Дякуємо за ваш коментар\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"Попередній перегляд коментаря\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"Будь ласка, виправте помилку зазначену нижче\"\nmsgstr[1] \"Будь ласка, виправте помилки зазначені нижче\"\nmsgstr[2] \"Будь ласка, виправте помилки зазначені нижче\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"Опублікувати коментар\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"або зробити зміни\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/ur/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2011-01-19 15:42+0000\\n\"\n\"Last-Translator: Django team\\n\"\n\"Language-Team: Urdu (http://www.transifex.com/projects/p/django/language/\"\n\"ur/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ur\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/vi/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Tran  <hongdiepkien@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:24+0000\\n\"\n\"Last-Translator: Tran <hongdiepkien@gmail.com>\\n\"\n\"Language-Team: Vietnamese (http://www.transifex.com/projects/p/django/\"\n\"language/vi/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: vi\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"Nội dung\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"Siêu dữ liệu\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"Đặt cờ những nhận xét được chọn\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"phê duyệt\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"Phê duyệt những nhận xét đã chọn\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"loại bỏ\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"Loại bỏ nhận xét được chọn\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"Nhận xét cuối cùng trên %(site_name)s\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"Tên\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"Địa chỉ email\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"Đường dẫn URL\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"Bình luận\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"Hãy cẩn thận! Cụm từ %s không được sử dụng ở đây.\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"và\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"Bất kì bình luận nào bạn nhập vào đây cũng sẽ bị coi là thư rác\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"kiểu nội dung\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"object ID\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"Người dùng\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"Tên người sử dụng\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"Địa chỉ email của người sử dụng\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"Đường dẫn URL của người sử dụng\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"Bình luận\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"Ngày/giờ đã đăng kí\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"Địa chỉ IP\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"Được phổ biến\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"Không đánh dấu vào hộp này để gỡ bình luận ra khỏi Site\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"Bị xóa\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\"Đánh dấu vào hộp này nếu bình luận không thích hợp. Tin nhắn \\\"Bình luận đã \"\n\"bị xóa\\\" sẽ thay thế vào đó.\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"những nhận xét\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"\"\n\"nhận xét này đã được đăng bởi một người dùng xác thực và do đó đặt tên cho \"\n\"là chỉ đọc.\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"\"\n\"nhận xét này đã được đăng bởi một người dùng xác thực và do đó email là chỉ \"\n\"đọc.\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\"Gửi bởi %(user)s  vào %(date)s  \\n\"\n\"%(comment)s\\n\"\n\"http://%(domain)s%(url)s \"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"ngày\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"cờ nhận xét\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"Phê duyệt một nhận xét\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"Chấp thuận\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"Cảm ơn bạn đã phê duyệt\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"\"\n\"Cảm ơn bạn đã dành thời gian để cải thiện chất lượng cuộc thảo luận trên \"\n\"trang web của chúng tôi\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"Hủy bỏ một nhận xét\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"Thực sự loại bỏ bình luận này?\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"Hủy bỏ\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"Cảm ơn đã loại bỏ\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"Flag\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"Post\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"Xem trước\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"Cảm ơn đã  bình luận\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"Cảm ơn vì bình luận của bạn\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"Xem trước bình luận của bạn\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"Hãy sửa các lỗi dưới đây\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"Đăng bình luận của bạn\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"hoặc thay đổi\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/zh_CN/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Lele Long <schemacs@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:24+0000\\n\"\n\"Last-Translator: Lele Long <schemacs@gmail.com>\\n\"\n\"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/django/\"\n\"language/zh_CN/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: zh_CN\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"内容\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"元数据\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"标记\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"标记选中的评论\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"批准\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"批准选中的评论\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"移除\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"移除选中的评论\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"%(count)s 条评论被成功 %(action)s。\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"%(site_name)s的评论\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"%(site_name)s的最新评论\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"名称\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"Email 地址\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"评论\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"注意言论！%s 不允许在这里出现。\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"和\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"如果你在该字段中输入任何内容，那么你的评论就会被视为垃圾评论。\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"内容类型\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"对象ID\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"用户\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"用户名\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"用户的 email 地址\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"用户的网址\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"评论\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"提交日期/时间\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"IP 地址\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"公开\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"取消选中此复选框，可隐藏该条评论。\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"已删除\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"\"\n\"若评论内容不妥，则选中这个复选框。该评论将被一条\\\"此评论已经被删除\\\"的消息所\"\n\"替换。\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"评论\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"此评论由一位验证用户发表，因此该用户名是只读的。\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"此评论由一位验证用户发表，因此该 email 是只读的。\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\"由 %(user)s 在 %(date)s 张贴\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"标记\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"标记时间\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"评论标记\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"评论标记\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"批准评论\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"真的要公开该评论？\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"批准\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"感谢批准\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"感谢花费时间改善本站点的讨论质量。\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"删除评论\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"真的要删除该评论？\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"删除\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"感谢删除\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"标记该评论\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"真的要标记该评论？\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"标记\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"感谢标记\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"张贴\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"预览\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"感谢评论\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"感谢您所作的评论\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"预览您的评论\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"请修正如下错误\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"张贴您的评论\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"或进行修改\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/locale/zh_TW/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# tcc <tcchou@tcchou.org>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:24+0000\\n\"\n\"Last-Translator: tcc <tcchou@tcchou.org>\\n\"\n\"Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/django/\"\n\"language/zh_TW/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: zh_TW\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: admin.py:25\nmsgid \"Content\"\nmsgstr \"內容\"\n\n#: admin.py:28\nmsgid \"Metadata\"\nmsgstr \"元資料\"\n\n#: admin.py:55\nmsgid \"flagged\"\nmsgid_plural \"flagged\"\nmsgstr[0] \"已標記\"\n\n#: admin.py:56\nmsgid \"Flag selected comments\"\nmsgstr \"標記已選評論\"\n\n#: admin.py:60\nmsgid \"approved\"\nmsgid_plural \"approved\"\nmsgstr[0] \"已核可\"\n\n#: admin.py:61\nmsgid \"Approve selected comments\"\nmsgstr \"核可已選評論\"\n\n#: admin.py:65\nmsgid \"removed\"\nmsgid_plural \"removed\"\nmsgstr[0] \"已移除\"\n\n#: admin.py:66\nmsgid \"Remove selected comments\"\nmsgstr \"移除已選評論\"\n\n#: admin.py:78\n#, python-format\nmsgid \"1 comment was successfully %(action)s.\"\nmsgid_plural \"%(count)s comments were successfully %(action)s.\"\nmsgstr[0] \"%(count)s 個評論已成功完成%(action)s。\"\n\n#: feeds.py:14\n#, python-format\nmsgid \"%(site_name)s comments\"\nmsgstr \"%(site_name)s 評論\"\n\n#: feeds.py:20\n#, python-format\nmsgid \"Latest comments on %(site_name)s\"\nmsgstr \"最新評論在 %(site_name)s\"\n\n#: forms.py:96\nmsgid \"Name\"\nmsgstr \"名稱\"\n\n#: forms.py:97\nmsgid \"Email address\"\nmsgstr \"電子郵件地址\"\n\n#: forms.py:98\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:99\nmsgid \"Comment\"\nmsgstr \"評論\"\n\n#: forms.py:177\n#, python-format\nmsgid \"Watch your mouth! The word %s is not allowed here.\"\nmsgid_plural \"Watch your mouth! The words %s are not allowed here.\"\nmsgstr[0] \"看住你的嘴！此處不允許 %s 這樣的字眼。\"\n\n#: forms.py:181 templates/comments/preview.html:16\nmsgid \"and\"\nmsgstr \"和\"\n\n#: forms.py:186\nmsgid \"\"\n\"If you enter anything in this field your comment will be treated as spam\"\nmsgstr \"如果你在這一個欄位輸入任何內容，會被視為是垃圾評論\"\n\n#: models.py:23\nmsgid \"content type\"\nmsgstr \"內容類型\"\n\n#: models.py:25\nmsgid \"object ID\"\nmsgstr \"物件 ID\"\n\n#: models.py:53 models.py:177\nmsgid \"user\"\nmsgstr \"使用者\"\n\n#: models.py:55\nmsgid \"user's name\"\nmsgstr \"使用者名稱\"\n\n#: models.py:56\nmsgid \"user's email address\"\nmsgstr \"使用者電子郵件\"\n\n#: models.py:57\nmsgid \"user's URL\"\nmsgstr \"使用者 URL\"\n\n#: models.py:59 models.py:79 models.py:178\nmsgid \"comment\"\nmsgstr \"評論\"\n\n#: models.py:62\nmsgid \"date/time submitted\"\nmsgstr \"日期/時間已送出\"\n\n#: models.py:63\nmsgid \"IP address\"\nmsgstr \"IP 位址\"\n\n#: models.py:64\nmsgid \"is public\"\nmsgstr \"公開\"\n\n#: models.py:65\nmsgid \"\"\n\"Uncheck this box to make the comment effectively disappear from the site.\"\nmsgstr \"取消這個選項可讓評論立刻在網站消失。\"\n\n#: models.py:67\nmsgid \"is removed\"\nmsgstr \"已刪除\"\n\n#: models.py:68\nmsgid \"\"\n\"Check this box if the comment is inappropriate. A \\\"This comment has been \"\n\"removed\\\" message will be displayed instead.\"\nmsgstr \"如果此評論不恰當則選取這個檢查框，其將以 \\\"此評論已被移除\\\" 訊息取代。\"\n\n#: models.py:80\nmsgid \"comments\"\nmsgstr \"評論\"\n\n#: models.py:124\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the name is read-\"\n\"only.\"\nmsgstr \"這個評論由認證的使用者張貼, 因此名稱是唯讀的。\"\n\n#: models.py:134\nmsgid \"\"\n\"This comment was posted by an authenticated user and thus the email is read-\"\n\"only.\"\nmsgstr \"這個評論由認證的使用者張貼, 因此名稱是唯讀的。\"\n\n#: models.py:160\n#, python-format\nmsgid \"\"\n\"Posted by %(user)s at %(date)s\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\nmsgstr \"\"\n\"由 %(user)s 在 %(date)s 張貼\\n\"\n\"\\n\"\n\"%(comment)s\\n\"\n\"\\n\"\n\"http://%(domain)s%(url)s\"\n\n#: models.py:179\nmsgid \"flag\"\nmsgstr \"標記\"\n\n#: models.py:180\nmsgid \"date\"\nmsgstr \"日期\"\n\n#: models.py:190\nmsgid \"comment flag\"\nmsgstr \"標記評論\"\n\n#: models.py:191\nmsgid \"comment flags\"\nmsgstr \"評論標記\"\n\n#: templates/comments/approve.html:4\nmsgid \"Approve a comment\"\nmsgstr \"審核一個評論\"\n\n#: templates/comments/approve.html:7\nmsgid \"Really make this comment public?\"\nmsgstr \"真的要讓這個評論公開?\"\n\n#: templates/comments/approve.html:12\nmsgid \"Approve\"\nmsgstr \"核可\"\n\n#: templates/comments/approved.html:4\nmsgid \"Thanks for approving\"\nmsgstr \"感謝進行審核\"\n\n#: templates/comments/approved.html:7 templates/comments/deleted.html:7\n#: templates/comments/flagged.html:7\nmsgid \"\"\n\"Thanks for taking the time to improve the quality of discussion on our site\"\nmsgstr \"感謝花費時間增進網站討論的品質\"\n\n#: templates/comments/delete.html:4\nmsgid \"Remove a comment\"\nmsgstr \"移除一個評論\"\n\n#: templates/comments/delete.html:7\nmsgid \"Really remove this comment?\"\nmsgstr \"真的要移除這個評論?\"\n\n#: templates/comments/delete.html:12\nmsgid \"Remove\"\nmsgstr \"移除\"\n\n#: templates/comments/deleted.html:4\nmsgid \"Thanks for removing\"\nmsgstr \"感謝移除\"\n\n#: templates/comments/flag.html:4\nmsgid \"Flag this comment\"\nmsgstr \"標記這個評論\"\n\n#: templates/comments/flag.html:7\nmsgid \"Really flag this comment?\"\nmsgstr \"真的要標記這個評論?\"\n\n#: templates/comments/flag.html:12\nmsgid \"Flag\"\nmsgstr \"標記\"\n\n#: templates/comments/flagged.html:4\nmsgid \"Thanks for flagging\"\nmsgstr \"感謝標記\"\n\n#: templates/comments/form.html:17 templates/comments/preview.html:32\nmsgid \"Post\"\nmsgstr \"張貼\"\n\n#: templates/comments/form.html:18 templates/comments/preview.html:33\nmsgid \"Preview\"\nmsgstr \"預覽\"\n\n#: templates/comments/posted.html:4\nmsgid \"Thanks for commenting\"\nmsgstr \"感謝寫下評論\"\n\n#: templates/comments/posted.html:7\nmsgid \"Thank you for your comment\"\nmsgstr \"謝謝你的評論\"\n\n#: templates/comments/preview.html:4 templates/comments/preview.html.py:13\nmsgid \"Preview your comment\"\nmsgstr \"預覽你的評論\"\n\n#: templates/comments/preview.html:11\nmsgid \"Please correct the error below\"\nmsgid_plural \"Please correct the errors below\"\nmsgstr[0] \"請修正下面的錯誤\"\n\n#: templates/comments/preview.html:16\nmsgid \"Post your comment\"\nmsgstr \"張貼你的評論\"\n\n#: templates/comments/preview.html:16\nmsgid \"or make changes\"\nmsgstr \"或進行變更\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/managers.py",
    "content": "from django.db import models\nfrom django.contrib.contenttypes.models import ContentType\nfrom django.utils.encoding import force_text\n\nclass CommentManager(models.Manager):\n\n    def in_moderation(self):\n        \"\"\"\n        QuerySet for all comments currently in the moderation queue.\n        \"\"\"\n        return self.get_query_set().filter(is_public=False, is_removed=False)\n\n    def for_model(self, model):\n        \"\"\"\n        QuerySet for all comments for a particular model (either an instance or\n        a class).\n        \"\"\"\n        ct = ContentType.objects.get_for_model(model)\n        qs = self.get_query_set().filter(content_type=ct)\n        if isinstance(model, models.Model):\n            qs = qs.filter(object_pk=force_text(model._get_pk_val()))\n        return qs\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/models.py",
    "content": "from django.conf import settings\nfrom django.contrib.comments.managers import CommentManager\nfrom django.contrib.contenttypes import generic\nfrom django.contrib.contenttypes.models import ContentType\nfrom django.contrib.sites.models import Site\nfrom django.core import urlresolvers\nfrom django.db import models\nfrom django.utils.translation import ugettext_lazy as _\nfrom django.utils import timezone\nfrom django.utils.encoding import python_2_unicode_compatible\n\nCOMMENT_MAX_LENGTH = getattr(settings, 'COMMENT_MAX_LENGTH', 3000)\n\n\nclass BaseCommentAbstractModel(models.Model):\n    \"\"\"\n    An abstract base class that any custom comment models probably should\n    subclass.\n    \"\"\"\n\n    # Content-object field\n    content_type = models.ForeignKey(ContentType,\n            verbose_name=_('content type'),\n            related_name=\"content_type_set_for_%(class)s\")\n    object_pk = models.TextField(_('object ID'))\n    content_object = generic.GenericForeignKey(ct_field=\"content_type\", fk_field=\"object_pk\")\n\n    # Metadata about the comment\n    site = models.ForeignKey(Site)\n\n    class Meta:\n        abstract = True\n\n    def get_content_object_url(self):\n        \"\"\"\n        Get a URL suitable for redirecting to the content object.\n        \"\"\"\n        return urlresolvers.reverse(\n            \"comments-url-redirect\",\n            args=(self.content_type_id, self.object_pk)\n        )\n\n\n@python_2_unicode_compatible\nclass Comment(BaseCommentAbstractModel):\n    \"\"\"\n    A user comment about some object.\n    \"\"\"\n\n    # Who posted this comment? If ``user`` is set then it was an authenticated\n    # user; otherwise at least user_name should have been set and the comment\n    # was posted by a non-authenticated user.\n    user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=_('user'),\n                    blank=True, null=True, related_name=\"%(class)s_comments\")\n    user_name = models.CharField(_(\"user's name\"), max_length=50, blank=True)\n    user_email = models.EmailField(_(\"user's email address\"), blank=True)\n    user_url = models.URLField(_(\"user's URL\"), blank=True)\n\n    comment = models.TextField(_('comment'), max_length=COMMENT_MAX_LENGTH)\n\n    # Metadata about the comment\n    submit_date = models.DateTimeField(_('date/time submitted'), default=None)\n    ip_address = models.IPAddressField(_('IP address'), blank=True, null=True)\n    is_public = models.BooleanField(_('is public'), default=True,\n                    help_text=_('Uncheck this box to make the comment effectively ' \\\n                                'disappear from the site.'))\n    is_removed = models.BooleanField(_('is removed'), default=False,\n                    help_text=_('Check this box if the comment is inappropriate. ' \\\n                                'A \"This comment has been removed\" message will ' \\\n                                'be displayed instead.'))\n\n    # Manager\n    objects = CommentManager()\n\n    class Meta:\n        db_table = \"django_comments\"\n        ordering = ('submit_date',)\n        permissions = [(\"can_moderate\", \"Can moderate comments\")]\n        verbose_name = _('comment')\n        verbose_name_plural = _('comments')\n\n    def __str__(self):\n        return \"%s: %s...\" % (self.name, self.comment[:50])\n\n    def save(self, *args, **kwargs):\n        if self.submit_date is None:\n            self.submit_date = timezone.now()\n        super(Comment, self).save(*args, **kwargs)\n\n    def _get_userinfo(self):\n        \"\"\"\n        Get a dictionary that pulls together information about the poster\n        safely for both authenticated and non-authenticated comments.\n\n        This dict will have ``name``, ``email``, and ``url`` fields.\n        \"\"\"\n        if not hasattr(self, \"_userinfo\"):\n            userinfo = {\n                \"name\": self.user_name,\n                \"email\": self.user_email,\n                \"url\": self.user_url\n            }\n            if self.user_id:\n                u = self.user\n                if u.email:\n                    userinfo[\"email\"] = u.email\n\n                # If the user has a full name, use that for the user name.\n                # However, a given user_name overrides the raw user.username,\n                # so only use that if this comment has no associated name.\n                if u.get_full_name():\n                    userinfo[\"name\"] = self.user.get_full_name()\n                elif not self.user_name:\n                    userinfo[\"name\"] = u.get_username()\n            self._userinfo = userinfo\n        return self._userinfo\n    userinfo = property(_get_userinfo, doc=_get_userinfo.__doc__)\n\n    def _get_name(self):\n        return self.userinfo[\"name\"]\n\n    def _set_name(self, val):\n        if self.user_id:\n            raise AttributeError(_(\"This comment was posted by an authenticated \"\\\n                                   \"user and thus the name is read-only.\"))\n        self.user_name = val\n    name = property(_get_name, _set_name, doc=\"The name of the user who posted this comment\")\n\n    def _get_email(self):\n        return self.userinfo[\"email\"]\n\n    def _set_email(self, val):\n        if self.user_id:\n            raise AttributeError(_(\"This comment was posted by an authenticated \"\\\n                                   \"user and thus the email is read-only.\"))\n        self.user_email = val\n    email = property(_get_email, _set_email, doc=\"The email of the user who posted this comment\")\n\n    def _get_url(self):\n        return self.userinfo[\"url\"]\n\n    def _set_url(self, val):\n        self.user_url = val\n    url = property(_get_url, _set_url, doc=\"The URL given by the user who posted this comment\")\n\n    def get_absolute_url(self, anchor_pattern=\"#c%(id)s\"):\n        return self.get_content_object_url() + (anchor_pattern % self.__dict__)\n\n    def get_as_text(self):\n        \"\"\"\n        Return this comment as plain text.  Useful for emails.\n        \"\"\"\n        d = {\n            'user': self.user or self.name,\n            'date': self.submit_date,\n            'comment': self.comment,\n            'domain': self.site.domain,\n            'url': self.get_absolute_url()\n        }\n        return _('Posted by %(user)s at %(date)s\\n\\n%(comment)s\\n\\nhttp://%(domain)s%(url)s') % d\n\n\n@python_2_unicode_compatible\nclass CommentFlag(models.Model):\n    \"\"\"\n    Records a flag on a comment. This is intentionally flexible; right now, a\n    flag could be:\n\n        * A \"removal suggestion\" -- where a user suggests a comment for (potential) removal.\n\n        * A \"moderator deletion\" -- used when a moderator deletes a comment.\n\n    You can (ab)use this model to add other flags, if needed. However, by\n    design users are only allowed to flag a comment with a given flag once;\n    if you want rating look elsewhere.\n    \"\"\"\n    user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=_('user'), related_name=\"comment_flags\")\n    comment = models.ForeignKey(Comment, verbose_name=_('comment'), related_name=\"flags\")\n    flag = models.CharField(_('flag'), max_length=30, db_index=True)\n    flag_date = models.DateTimeField(_('date'), default=None)\n\n    # Constants for flag types\n    SUGGEST_REMOVAL = \"removal suggestion\"\n    MODERATOR_DELETION = \"moderator deletion\"\n    MODERATOR_APPROVAL = \"moderator approval\"\n\n    class Meta:\n        db_table = 'django_comment_flags'\n        unique_together = [('user', 'comment', 'flag')]\n        verbose_name = _('comment flag')\n        verbose_name_plural = _('comment flags')\n\n    def __str__(self):\n        return \"%s flag of comment ID %s by %s\" % \\\n            (self.flag, self.comment_id, self.user.get_username())\n\n    def save(self, *args, **kwargs):\n        if self.flag_date is None:\n            self.flag_date = timezone.now()\n        super(CommentFlag, self).save(*args, **kwargs)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/moderation.py",
    "content": "\"\"\"\nA generic comment-moderation system which allows configuration of\nmoderation options on a per-model basis.\n\nTo use, do two things:\n\n1. Create or import a subclass of ``CommentModerator`` defining the\n   options you want.\n\n2. Import ``moderator`` from this module and register one or more\n   models, passing the models and the ``CommentModerator`` options\n   class you want to use.\n\n\nExample\n-------\n\nFirst, we define a simple model class which might represent entries in\na Weblog::\n\n    from django.db import models\n\n    class Entry(models.Model):\n        title = models.CharField(maxlength=250)\n        body = models.TextField()\n        pub_date = models.DateField()\n        enable_comments = models.BooleanField()\n\nThen we create a ``CommentModerator`` subclass specifying some\nmoderation options::\n\n    from django.contrib.comments.moderation import CommentModerator, moderator\n\n    class EntryModerator(CommentModerator):\n        email_notification = True\n        enable_field = 'enable_comments'\n\nAnd finally register it for moderation::\n\n    moderator.register(Entry, EntryModerator)\n\nThis sample class would apply two moderation steps to each new\ncomment submitted on an Entry:\n\n* If the entry's ``enable_comments`` field is set to ``False``, the\n  comment will be rejected (immediately deleted).\n\n* If the comment is successfully posted, an email notification of the\n  comment will be sent to site staff.\n\nFor a full list of built-in moderation options and other\nconfigurability, see the documentation for the ``CommentModerator``\nclass.\n\n\"\"\"\n\nimport datetime\n\nfrom django.conf import settings\nfrom django.core.mail import send_mail\nfrom django.contrib.comments import signals\nfrom django.db.models.base import ModelBase\nfrom django.template import Context, loader\nfrom django.contrib import comments\nfrom django.contrib.sites.models import get_current_site\nfrom django.utils import timezone\n\nclass AlreadyModerated(Exception):\n    \"\"\"\n    Raised when a model which is already registered for moderation is\n    attempting to be registered again.\n\n    \"\"\"\n    pass\n\nclass NotModerated(Exception):\n    \"\"\"\n    Raised when a model which is not registered for moderation is\n    attempting to be unregistered.\n\n    \"\"\"\n    pass\n\nclass CommentModerator(object):\n    \"\"\"\n    Encapsulates comment-moderation options for a given model.\n\n    This class is not designed to be used directly, since it doesn't\n    enable any of the available moderation options. Instead, subclass\n    it and override attributes to enable different options::\n\n    ``auto_close_field``\n        If this is set to the name of a ``DateField`` or\n        ``DateTimeField`` on the model for which comments are\n        being moderated, new comments for objects of that model\n        will be disallowed (immediately deleted) when a certain\n        number of days have passed after the date specified in\n        that field. Must be used in conjunction with\n        ``close_after``, which specifies the number of days past\n        which comments should be disallowed. Default value is\n        ``None``.\n\n    ``auto_moderate_field``\n        Like ``auto_close_field``, but instead of outright\n        deleting new comments when the requisite number of days\n        have elapsed, it will simply set the ``is_public`` field\n        of new comments to ``False`` before saving them. Must be\n        used in conjunction with ``moderate_after``, which\n        specifies the number of days past which comments should be\n        moderated. Default value is ``None``.\n\n    ``close_after``\n        If ``auto_close_field`` is used, this must specify the\n        number of days past the value of the field specified by\n        ``auto_close_field`` after which new comments for an\n        object should be disallowed. Default value is ``None``.\n\n    ``email_notification``\n        If ``True``, any new comment on an object of this model\n        which survives moderation will generate an email to site\n        staff. Default value is ``False``.\n\n    ``enable_field``\n        If this is set to the name of a ``BooleanField`` on the\n        model for which comments are being moderated, new comments\n        on objects of that model will be disallowed (immediately\n        deleted) whenever the value of that field is ``False`` on\n        the object the comment would be attached to. Default value\n        is ``None``.\n\n    ``moderate_after``\n        If ``auto_moderate_field`` is used, this must specify the number\n        of days past the value of the field specified by\n        ``auto_moderate_field`` after which new comments for an\n        object should be marked non-public. Default value is\n        ``None``.\n\n    Most common moderation needs can be covered by changing these\n    attributes, but further customization can be obtained by\n    subclassing and overriding the following methods. Each method will\n    be called with three arguments: ``comment``, which is the comment\n    being submitted, ``content_object``, which is the object the\n    comment will be attached to, and ``request``, which is the\n    ``HttpRequest`` in which the comment is being submitted::\n\n    ``allow``\n        Should return ``True`` if the comment should be allowed to\n        post on the content object, and ``False`` otherwise (in\n        which case the comment will be immediately deleted).\n\n    ``email``\n        If email notification of the new comment should be sent to\n        site staff or moderators, this method is responsible for\n        sending the email.\n\n    ``moderate``\n        Should return ``True`` if the comment should be moderated\n        (in which case its ``is_public`` field will be set to\n        ``False`` before saving), and ``False`` otherwise (in\n        which case the ``is_public`` field will not be changed).\n\n    Subclasses which want to introspect the model for which comments\n    are being moderated can do so through the attribute ``_model``,\n    which will be the model class.\n\n    \"\"\"\n    auto_close_field = None\n    auto_moderate_field = None\n    close_after = None\n    email_notification = False\n    enable_field = None\n    moderate_after = None\n\n    def __init__(self, model):\n        self._model = model\n\n    def _get_delta(self, now, then):\n        \"\"\"\n        Internal helper which will return a ``datetime.timedelta``\n        representing the time between ``now`` and ``then``. Assumes\n        ``now`` is a ``datetime.date`` or ``datetime.datetime`` later\n        than ``then``.\n\n        If ``now`` and ``then`` are not of the same type due to one of\n        them being a ``datetime.date`` and the other being a\n        ``datetime.datetime``, both will be coerced to\n        ``datetime.date`` before calculating the delta.\n\n        \"\"\"\n        if now.__class__ is not then.__class__:\n            now = datetime.date(now.year, now.month, now.day)\n            then = datetime.date(then.year, then.month, then.day)\n        if now < then:\n            raise ValueError(\"Cannot determine moderation rules because date field is set to a value in the future\")\n        return now - then\n\n    def allow(self, comment, content_object, request):\n        \"\"\"\n        Determine whether a given comment is allowed to be posted on\n        a given object.\n\n        Return ``True`` if the comment should be allowed, ``False\n        otherwise.\n\n        \"\"\"\n        if self.enable_field:\n            if not getattr(content_object, self.enable_field):\n                return False\n        if self.auto_close_field and self.close_after is not None:\n            close_after_date = getattr(content_object, self.auto_close_field)\n            if close_after_date is not None and self._get_delta(timezone.now(), close_after_date).days >= self.close_after:\n                return False\n        return True\n\n    def moderate(self, comment, content_object, request):\n        \"\"\"\n        Determine whether a given comment on a given object should be\n        allowed to show up immediately, or should be marked non-public\n        and await approval.\n\n        Return ``True`` if the comment should be moderated (marked\n        non-public), ``False`` otherwise.\n\n        \"\"\"\n        if self.auto_moderate_field and self.moderate_after is not None:\n            moderate_after_date = getattr(content_object, self.auto_moderate_field)\n            if moderate_after_date is not None and self._get_delta(timezone.now(), moderate_after_date).days >= self.moderate_after:\n                return True\n        return False\n\n    def email(self, comment, content_object, request):\n        \"\"\"\n        Send email notification of a new comment to site staff when email\n        notifications have been requested.\n\n        \"\"\"\n        if not self.email_notification:\n            return\n        recipient_list = [manager_tuple[1] for manager_tuple in settings.MANAGERS]\n        t = loader.get_template('comments/comment_notification_email.txt')\n        c = Context({ 'comment': comment,\n                      'content_object': content_object })\n        subject = '[%s] New comment posted on \"%s\"' % (get_current_site(request).name,\n                                                          content_object)\n        message = t.render(c)\n        send_mail(subject, message, settings.DEFAULT_FROM_EMAIL, recipient_list, fail_silently=True)\n\nclass Moderator(object):\n    \"\"\"\n    Handles moderation of a set of models.\n\n    An instance of this class will maintain a list of one or more\n    models registered for comment moderation, and their associated\n    moderation classes, and apply moderation to all incoming comments.\n\n    To register a model, obtain an instance of ``Moderator`` (this\n    module exports one as ``moderator``), and call its ``register``\n    method, passing the model class and a moderation class (which\n    should be a subclass of ``CommentModerator``). Note that both of\n    these should be the actual classes, not instances of the classes.\n\n    To cease moderation for a model, call the ``unregister`` method,\n    passing the model class.\n\n    For convenience, both ``register`` and ``unregister`` can also\n    accept a list of model classes in place of a single model; this\n    allows easier registration of multiple models with the same\n    ``CommentModerator`` class.\n\n    The actual moderation is applied in two phases: one prior to\n    saving a new comment, and the other immediately after saving. The\n    pre-save moderation may mark a comment as non-public or mark it to\n    be removed; the post-save moderation may delete a comment which\n    was disallowed (there is currently no way to prevent the comment\n    being saved once before removal) and, if the comment is still\n    around, will send any notification emails the comment generated.\n\n    \"\"\"\n    def __init__(self):\n        self._registry = {}\n        self.connect()\n\n    def connect(self):\n        \"\"\"\n        Hook up the moderation methods to pre- and post-save signals\n        from the comment models.\n\n        \"\"\"\n        signals.comment_will_be_posted.connect(self.pre_save_moderation, sender=comments.get_model())\n        signals.comment_was_posted.connect(self.post_save_moderation, sender=comments.get_model())\n\n    def register(self, model_or_iterable, moderation_class):\n        \"\"\"\n        Register a model or a list of models for comment moderation,\n        using a particular moderation class.\n\n        Raise ``AlreadyModerated`` if any of the models are already\n        registered.\n\n        \"\"\"\n        if isinstance(model_or_iterable, ModelBase):\n            model_or_iterable = [model_or_iterable]\n        for model in model_or_iterable:\n            if model in self._registry:\n                raise AlreadyModerated(\"The model '%s' is already being moderated\" % model._meta.module_name)\n            self._registry[model] = moderation_class(model)\n\n    def unregister(self, model_or_iterable):\n        \"\"\"\n        Remove a model or a list of models from the list of models\n        whose comments will be moderated.\n\n        Raise ``NotModerated`` if any of the models are not currently\n        registered for moderation.\n\n        \"\"\"\n        if isinstance(model_or_iterable, ModelBase):\n            model_or_iterable = [model_or_iterable]\n        for model in model_or_iterable:\n            if model not in self._registry:\n                raise NotModerated(\"The model '%s' is not currently being moderated\" % model._meta.module_name)\n            del self._registry[model]\n\n    def pre_save_moderation(self, sender, comment, request, **kwargs):\n        \"\"\"\n        Apply any necessary pre-save moderation steps to new\n        comments.\n\n        \"\"\"\n        model = comment.content_type.model_class()\n        if model not in self._registry:\n            return\n        content_object = comment.content_object\n        moderation_class = self._registry[model]\n\n        # Comment will be disallowed outright (HTTP 403 response)\n        if not moderation_class.allow(comment, content_object, request): \n            return False\n\n        if moderation_class.moderate(comment, content_object, request):\n            comment.is_public = False\n\n    def post_save_moderation(self, sender, comment, request, **kwargs):\n        \"\"\"\n        Apply any necessary post-save moderation steps to new\n        comments.\n\n        \"\"\"\n        model = comment.content_type.model_class()\n        if model not in self._registry:\n            return\n        self._registry[model].email(comment, comment.content_object, request)\n\n# Import this instance in your own code to use in registering\n# your models for moderation.\nmoderator = Moderator()\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/signals.py",
    "content": "\"\"\"\nSignals relating to comments.\n\"\"\"\nfrom django.dispatch import Signal\n\n# Sent just before a comment will be posted (after it's been approved and\n# moderated; this can be used to modify the comment (in place) with posting\n# details or other such actions. If any receiver returns False the comment will be\n# discarded and a 400 response. This signal is sent at more or less\n# the same time (just before, actually) as the Comment object's pre-save signal,\n# except that the HTTP request is sent along with this signal.\ncomment_will_be_posted = Signal(providing_args=[\"comment\", \"request\"])\n\n# Sent just after a comment was posted. See above for how this differs\n# from the Comment object's post-save signal.\ncomment_was_posted = Signal(providing_args=[\"comment\", \"request\"])\n\n# Sent after a comment was \"flagged\" in some way. Check the flag to see if this\n# was a user requesting removal of a comment, a moderator approving/removing a\n# comment, or some other custom user flag.\ncomment_was_flagged = Signal(providing_args=[\"comment\", \"flag\", \"created\", \"request\"])\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/templates/comments/400-debug.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n  <meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />\n  <title>Comment post not allowed (400)</title>\n  <meta name=\"robots\" content=\"NONE,NOARCHIVE\" />\n  <style type=\"text/css\">\n  <![CDATA[\n    html * { padding:0; margin:0; }\n    body * { padding:10px 20px; }\n    body * * { padding:0; }\n    body { font:small sans-serif; background:#eee; }\n    body>div { border-bottom:1px solid #ddd; }\n    h1 { font-weight:normal; margin-bottom:.4em; }\n    h1 span { font-size:60%; color:#666; font-weight:normal; }\n    table { border:none; border-collapse: collapse; width:100%; }\n    td, th { vertical-align:top; padding:2px 3px; }\n    th { width:12em; text-align:right; color:#666; padding-right:.5em; }\n    #info { background:#f6f6f6; }\n    #info ol { margin: 0.5em 4em; }\n    #info ol li { font-family: monospace; }\n    #summary { background: #ffc; }\n    #explanation { background:#eee; border-bottom: 0px none; }\n  ]]>\n  </style>\n</head>\n<body>\n  <div id=\"summary\">\n    <h1>Comment post not allowed <span>(400)</span></h1>\n    <table class=\"meta\">\n      <tr>\n        <th>Why:</th>\n        <td>{{ why }}</td>\n      </tr>\n    </table>\n  </div>\n  <div id=\"info\">\n    <p>\n    The comment you tried to post to this view wasn't saved because something\n    tampered with the security information in the comment form. The message\n    above should explain the problem, or you can check the <a\n    href=\"http://docs.djangoproject.com/en/dev/ref/contrib/comments/\">comment\n    documentation</a> for more help.\n    </p>\n  </div>\n\n  <div id=\"explanation\">\n    <p>\n      You're seeing this error because you have <code>DEBUG = True</code> in\n      your Django settings file. Change that to <code>False</code>, and Django\n      will display a standard 400 error page.\n    </p>\n  </div>\n</body>\n</html>\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/templates/comments/approve.html",
    "content": "{% extends \"comments/base.html\" %}\n{% load i18n %}\n\n{% block title %}{% trans \"Approve a comment\" %}{% endblock %}\n\n{% block content %}\n  <h1>{% trans \"Really make this comment public?\" %}</h1>\n  <blockquote>{{ comment|linebreaks }}</blockquote>\n  <form action=\".\" method=\"post\">{% csrf_token %}\n    {% if next %}<div><input type=\"hidden\" name=\"next\" value=\"{{ next }}\" id=\"next\" /></div>{% endif %}\n    <p class=\"submit\">\n      <input type=\"submit\" name=\"submit\" value=\"{% trans \"Approve\" %}\" /> or <a href=\"{{ comment.get_absolute_url }}\">cancel</a>\n    </p>\n  </form>\n{% endblock %}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/templates/comments/approved.html",
    "content": "{% extends \"comments/base.html\" %}\n{% load i18n %}\n\n{% block title %}{% trans \"Thanks for approving\" %}.{% endblock %}\n\n{% block content %}\n  <h1>{% trans \"Thanks for taking the time to improve the quality of discussion on our site\" %}.</h1>\n{% endblock %}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/templates/comments/base.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n  <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n  <title>{% block title %}{% endblock %}</title>\n</head>\n<body>\n  {% block content %}{% endblock %}\n</body>\n</html>\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/templates/comments/delete.html",
    "content": "{% extends \"comments/base.html\" %}\n{% load i18n %}\n\n{% block title %}{% trans \"Remove a comment\" %}{% endblock %}\n\n{% block content %}\n<h1>{% trans \"Really remove this comment?\" %}</h1>\n  <blockquote>{{ comment|linebreaks }}</blockquote>\n  <form action=\".\" method=\"post\">{% csrf_token %}\n    {% if next %}<div><input type=\"hidden\" name=\"next\" value=\"{{ next }}\" id=\"next\" /></div>{% endif %}\n    <p class=\"submit\">\n    <input type=\"submit\" name=\"submit\" value=\"{% trans \"Remove\" %}\" /> or <a href=\"{{ comment.get_absolute_url }}\">cancel</a>\n    </p>\n  </form>\n{% endblock %}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/templates/comments/deleted.html",
    "content": "{% extends \"comments/base.html\" %}\n{% load i18n %}\n\n{% block title %}{% trans \"Thanks for removing\" %}.{% endblock %}\n\n{% block content %}\n  <h1>{% trans \"Thanks for taking the time to improve the quality of discussion on our site\" %}.</h1>\n{% endblock %}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/templates/comments/flag.html",
    "content": "{% extends \"comments/base.html\" %}\n{% load i18n %}\n\n{% block title %}{% trans \"Flag this comment\" %}{% endblock %}\n\n{% block content %}\n<h1>{% trans \"Really flag this comment?\" %}</h1>\n  <blockquote>{{ comment|linebreaks }}</blockquote>\n  <form action=\".\" method=\"post\">{% csrf_token %}\n    {% if next %}<div><input type=\"hidden\" name=\"next\" value=\"{{ next }}\" id=\"next\" /></div>{% endif %}\n    <p class=\"submit\">\n    <input type=\"submit\" name=\"submit\" value=\"{% trans \"Flag\" %}\" /> or <a href=\"{{ comment.get_absolute_url }}\">cancel</a>\n    </p>\n  </form>\n{% endblock %}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/templates/comments/flagged.html",
    "content": "{% extends \"comments/base.html\" %}\n{% load i18n %}\n\n{% block title %}{% trans \"Thanks for flagging\" %}.{% endblock %}\n\n{% block content %}\n  <h1>{% trans \"Thanks for taking the time to improve the quality of discussion on our site\" %}.</h1>\n{% endblock %}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/templates/comments/form.html",
    "content": "{% load comments i18n %}\n<form action=\"{% comment_form_target %}\" method=\"post\">{% csrf_token %}\n  {% if next %}<div><input type=\"hidden\" name=\"next\" value=\"{{ next }}\" /></div>{% endif %}\n  {% for field in form %}\n    {% if field.is_hidden %}\n      <div>{{ field }}</div>\n    {% else %}\n      {% if field.errors %}{{ field.errors }}{% endif %}\n      <p\n        {% if field.errors %} class=\"error\"{% endif %}\n        {% ifequal field.name \"honeypot\" %} style=\"display:none;\"{% endifequal %}>\n        {{ field.label_tag }} {{ field }}\n      </p>\n    {% endif %}\n  {% endfor %}\n  <p class=\"submit\">\n    <input type=\"submit\" name=\"post\" class=\"submit-post\" value=\"{% trans \"Post\" %}\" />\n    <input type=\"submit\" name=\"preview\" class=\"submit-preview\" value=\"{% trans \"Preview\" %}\" />\n  </p>\n</form>\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/templates/comments/list.html",
    "content": "<dl id=\"comments\">\n  {% for comment in comment_list %}\n    <dt id=\"c{{ comment.id }}\">\n        {{ comment.submit_date }} - {{ comment.name }}\n    </dt>\n    <dd>\n        <p>{{ comment.comment }}</p>\n    </dd>\n  {% endfor %}\n</dl>\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/templates/comments/posted.html",
    "content": "{% extends \"comments/base.html\" %}\n{% load i18n %}\n\n{% block title %}{% trans \"Thanks for commenting\" %}.{% endblock %}\n\n{% block content %}\n  <h1>{% trans \"Thank you for your comment\" %}.</h1>\n{% endblock %}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/templates/comments/preview.html",
    "content": "{% extends \"comments/base.html\" %}\n{% load i18n %}\n\n{% block title %}{% trans \"Preview your comment\" %}{% endblock %}\n\n{% block content %}\n  {% load comments %}\n  <form action=\"{% comment_form_target %}\" method=\"post\">{% csrf_token %}\n    {% if next %}<div><input type=\"hidden\" name=\"next\" value=\"{{ next }}\" /></div>{% endif %}\n    {% if form.errors %}\n    <h1>{% blocktrans count counter=form.errors|length %}Please correct the error below{% plural %}Please correct the errors below{% endblocktrans %}</h1>\n    {% else %}\n    <h1>{% trans \"Preview your comment\" %}</h1>\n      <blockquote>{{ comment|linebreaks }}</blockquote>\n      <p>\n      {% trans \"and\" %} <input type=\"submit\" name=\"submit\" class=\"submit-post\" value=\"{% trans \"Post your comment\" %}\" id=\"submit\" /> {% trans \"or make changes\" %}:\n      </p>\n    {% endif %}\n    {% for field in form %}\n      {% if field.is_hidden %}\n        <div>{{ field }}</div>\n      {% else %}\n        {% if field.errors %}{{ field.errors }}{% endif %}\n        <p\n          {% if field.errors %} class=\"error\"{% endif %}\n          {% ifequal field.name \"honeypot\" %} style=\"display:none;\"{% endifequal %}>\n          {{ field.label_tag }} {{ field }}\n        </p>\n      {% endif %}\n    {% endfor %}\n    <p class=\"submit\">\n    <input type=\"submit\" name=\"submit\" class=\"submit-post\" value=\"{% trans \"Post\" %}\" />\n    <input type=\"submit\" name=\"preview\" class=\"submit-preview\" value=\"{% trans \"Preview\" %}\" />\n    </p>\n  </form>\n{% endblock %}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/templatetags/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/templatetags/comments.py",
    "content": "from django import template\nfrom django.template.loader import render_to_string\nfrom django.conf import settings\nfrom django.contrib.contenttypes.models import ContentType\nfrom django.contrib import comments\nfrom django.utils.encoding import smart_text\n\nregister = template.Library()\n\nclass BaseCommentNode(template.Node):\n    \"\"\"\n    Base helper class (abstract) for handling the get_comment_* template tags.\n    Looks a bit strange, but the subclasses below should make this a bit more\n    obvious.\n    \"\"\"\n\n    @classmethod\n    def handle_token(cls, parser, token):\n        \"\"\"Class method to parse get_comment_list/count/form and return a Node.\"\"\"\n        tokens = token.contents.split()\n        if tokens[1] != 'for':\n            raise template.TemplateSyntaxError(\"Second argument in %r tag must be 'for'\" % tokens[0])\n\n        # {% get_whatever for obj as varname %}\n        if len(tokens) == 5:\n            if tokens[3] != 'as':\n                raise template.TemplateSyntaxError(\"Third argument in %r must be 'as'\" % tokens[0])\n            return cls(\n                object_expr = parser.compile_filter(tokens[2]),\n                as_varname = tokens[4],\n            )\n\n        # {% get_whatever for app.model pk as varname %}\n        elif len(tokens) == 6:\n            if tokens[4] != 'as':\n                raise template.TemplateSyntaxError(\"Fourth argument in %r must be 'as'\" % tokens[0])\n            return cls(\n                ctype = BaseCommentNode.lookup_content_type(tokens[2], tokens[0]),\n                object_pk_expr = parser.compile_filter(tokens[3]),\n                as_varname = tokens[5]\n            )\n\n        else:\n            raise template.TemplateSyntaxError(\"%r tag requires 4 or 5 arguments\" % tokens[0])\n\n    @staticmethod\n    def lookup_content_type(token, tagname):\n        try:\n            app, model = token.split('.')\n            return ContentType.objects.get_by_natural_key(app, model)\n        except ValueError:\n            raise template.TemplateSyntaxError(\"Third argument in %r must be in the format 'app.model'\" % tagname)\n        except ContentType.DoesNotExist:\n            raise template.TemplateSyntaxError(\"%r tag has non-existant content-type: '%s.%s'\" % (tagname, app, model))\n\n    def __init__(self, ctype=None, object_pk_expr=None, object_expr=None, as_varname=None, comment=None):\n        if ctype is None and object_expr is None:\n            raise template.TemplateSyntaxError(\"Comment nodes must be given either a literal object or a ctype and object pk.\")\n        self.comment_model = comments.get_model()\n        self.as_varname = as_varname\n        self.ctype = ctype\n        self.object_pk_expr = object_pk_expr\n        self.object_expr = object_expr\n        self.comment = comment\n\n    def render(self, context):\n        qs = self.get_query_set(context)\n        context[self.as_varname] = self.get_context_value_from_queryset(context, qs)\n        return ''\n\n    def get_query_set(self, context):\n        ctype, object_pk = self.get_target_ctype_pk(context)\n        if not object_pk:\n            return self.comment_model.objects.none()\n\n        qs = self.comment_model.objects.filter(\n            content_type = ctype,\n            object_pk    = smart_text(object_pk),\n            site__pk     = settings.SITE_ID,\n        )\n\n        # The is_public and is_removed fields are implementation details of the\n        # built-in comment model's spam filtering system, so they might not\n        # be present on a custom comment model subclass. If they exist, we\n        # should filter on them.\n        field_names = [f.name for f in self.comment_model._meta.fields]\n        if 'is_public' in field_names:\n            qs = qs.filter(is_public=True)\n        if getattr(settings, 'COMMENTS_HIDE_REMOVED', True) and 'is_removed' in field_names:\n            qs = qs.filter(is_removed=False)\n\n        return qs\n\n    def get_target_ctype_pk(self, context):\n        if self.object_expr:\n            try:\n                obj = self.object_expr.resolve(context)\n            except template.VariableDoesNotExist:\n                return None, None\n            return ContentType.objects.get_for_model(obj), obj.pk\n        else:\n            return self.ctype, self.object_pk_expr.resolve(context, ignore_failures=True)\n\n    def get_context_value_from_queryset(self, context, qs):\n        \"\"\"Subclasses should override this.\"\"\"\n        raise NotImplementedError\n\nclass CommentListNode(BaseCommentNode):\n    \"\"\"Insert a list of comments into the context.\"\"\"\n    def get_context_value_from_queryset(self, context, qs):\n        return list(qs)\n\nclass CommentCountNode(BaseCommentNode):\n    \"\"\"Insert a count of comments into the context.\"\"\"\n    def get_context_value_from_queryset(self, context, qs):\n        return qs.count()\n\nclass CommentFormNode(BaseCommentNode):\n    \"\"\"Insert a form for the comment model into the context.\"\"\"\n\n    def get_form(self, context):\n        obj = self.get_object(context)\n        if obj:\n            return comments.get_form()(obj)\n        else:\n            return None\n\n    def get_object(self, context):\n        if self.object_expr:\n            try:\n                return self.object_expr.resolve(context)\n            except template.VariableDoesNotExist:\n                return None\n        else:\n            object_pk = self.object_pk_expr.resolve(context,\n                    ignore_failures=True)\n            return self.ctype.get_object_for_this_type(pk=object_pk)\n\n    def render(self, context):\n        context[self.as_varname] = self.get_form(context)\n        return ''\n\nclass RenderCommentFormNode(CommentFormNode):\n    \"\"\"Render the comment form directly\"\"\"\n\n    @classmethod\n    def handle_token(cls, parser, token):\n        \"\"\"Class method to parse render_comment_form and return a Node.\"\"\"\n        tokens = token.contents.split()\n        if tokens[1] != 'for':\n            raise template.TemplateSyntaxError(\"Second argument in %r tag must be 'for'\" % tokens[0])\n\n        # {% render_comment_form for obj %}\n        if len(tokens) == 3:\n            return cls(object_expr=parser.compile_filter(tokens[2]))\n\n        # {% render_comment_form for app.models pk %}\n        elif len(tokens) == 4:\n            return cls(\n                ctype = BaseCommentNode.lookup_content_type(tokens[2], tokens[0]),\n                object_pk_expr = parser.compile_filter(tokens[3])\n            )\n\n    def render(self, context):\n        ctype, object_pk = self.get_target_ctype_pk(context)\n        if object_pk:\n            template_search_list = [\n                \"comments/%s/%s/form.html\" % (ctype.app_label, ctype.model),\n                \"comments/%s/form.html\" % ctype.app_label,\n                \"comments/form.html\"\n            ]\n            context.push()\n            formstr = render_to_string(template_search_list, {\"form\" : self.get_form(context)}, context)\n            context.pop()\n            return formstr\n        else:\n            return ''\n\nclass RenderCommentListNode(CommentListNode):\n    \"\"\"Render the comment list directly\"\"\"\n\n    @classmethod\n    def handle_token(cls, parser, token):\n        \"\"\"Class method to parse render_comment_list and return a Node.\"\"\"\n        tokens = token.contents.split()\n        if tokens[1] != 'for':\n            raise template.TemplateSyntaxError(\"Second argument in %r tag must be 'for'\" % tokens[0])\n\n        # {% render_comment_list for obj %}\n        if len(tokens) == 3:\n            return cls(object_expr=parser.compile_filter(tokens[2]))\n\n        # {% render_comment_list for app.models pk %}\n        elif len(tokens) == 4:\n            return cls(\n                ctype = BaseCommentNode.lookup_content_type(tokens[2], tokens[0]),\n                object_pk_expr = parser.compile_filter(tokens[3])\n            )\n\n    def render(self, context):\n        ctype, object_pk = self.get_target_ctype_pk(context)\n        if object_pk:\n            template_search_list = [\n                \"comments/%s/%s/list.html\" % (ctype.app_label, ctype.model),\n                \"comments/%s/list.html\" % ctype.app_label,\n                \"comments/list.html\"\n            ]\n            qs = self.get_query_set(context)\n            context.push()\n            liststr = render_to_string(template_search_list, {\n                \"comment_list\" : self.get_context_value_from_queryset(context, qs)\n            }, context)\n            context.pop()\n            return liststr\n        else:\n            return ''\n\n# We could just register each classmethod directly, but then we'd lose out on\n# the automagic docstrings-into-admin-docs tricks. So each node gets a cute\n# wrapper function that just exists to hold the docstring.\n\n@register.tag\ndef get_comment_count(parser, token):\n    \"\"\"\n    Gets the comment count for the given params and populates the template\n    context with a variable containing that value, whose name is defined by the\n    'as' clause.\n\n    Syntax::\n\n        {% get_comment_count for [object] as [varname]  %}\n        {% get_comment_count for [app].[model] [object_id] as [varname]  %}\n\n    Example usage::\n\n        {% get_comment_count for event as comment_count %}\n        {% get_comment_count for calendar.event event.id as comment_count %}\n        {% get_comment_count for calendar.event 17 as comment_count %}\n\n    \"\"\"\n    return CommentCountNode.handle_token(parser, token)\n\n@register.tag\ndef get_comment_list(parser, token):\n    \"\"\"\n    Gets the list of comments for the given params and populates the template\n    context with a variable containing that value, whose name is defined by the\n    'as' clause.\n\n    Syntax::\n\n        {% get_comment_list for [object] as [varname]  %}\n        {% get_comment_list for [app].[model] [object_id] as [varname]  %}\n\n    Example usage::\n\n        {% get_comment_list for event as comment_list %}\n        {% for comment in comment_list %}\n            ...\n        {% endfor %}\n\n    \"\"\"\n    return CommentListNode.handle_token(parser, token)\n\n@register.tag\ndef render_comment_list(parser, token):\n    \"\"\"\n    Render the comment list (as returned by ``{% get_comment_list %}``)\n    through the ``comments/list.html`` template\n\n    Syntax::\n\n        {% render_comment_list for [object] %}\n        {% render_comment_list for [app].[model] [object_id] %}\n\n    Example usage::\n\n        {% render_comment_list for event %}\n\n    \"\"\"\n    return RenderCommentListNode.handle_token(parser, token)\n\n@register.tag\ndef get_comment_form(parser, token):\n    \"\"\"\n    Get a (new) form object to post a new comment.\n\n    Syntax::\n\n        {% get_comment_form for [object] as [varname] %}\n        {% get_comment_form for [app].[model] [object_id] as [varname] %}\n    \"\"\"\n    return CommentFormNode.handle_token(parser, token)\n\n@register.tag\ndef render_comment_form(parser, token):\n    \"\"\"\n    Render the comment form (as returned by ``{% render_comment_form %}``) through\n    the ``comments/form.html`` template.\n\n    Syntax::\n\n        {% render_comment_form for [object] %}\n        {% render_comment_form for [app].[model] [object_id] %}\n    \"\"\"\n    return RenderCommentFormNode.handle_token(parser, token)\n\n@register.simple_tag\ndef comment_form_target():\n    \"\"\"\n    Get the target URL for the comment form.\n\n    Example::\n\n        <form action=\"{% comment_form_target %}\" method=\"post\">\n    \"\"\"\n    return comments.get_form_target()\n\n@register.simple_tag\ndef get_comment_permalink(comment, anchor_pattern=None):\n    \"\"\"\n    Get the permalink for a comment, optionally specifying the format of the\n    named anchor to be appended to the end of the URL.\n\n    Example::\n        {% get_comment_permalink comment \"#c%(id)s-by-%(user_name)s\" %}\n    \"\"\"\n\n    if anchor_pattern:\n        return comment.get_absolute_url(anchor_pattern)\n    return comment.get_absolute_url()\n\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/urls.py",
    "content": "from django.conf.urls import patterns, url\n\nurlpatterns = patterns('django.contrib.comments.views',\n    url(r'^post/$',          'comments.post_comment',       name='comments-post-comment'),\n    url(r'^posted/$',        'comments.comment_done',       name='comments-comment-done'),\n    url(r'^flag/(\\d+)/$',    'moderation.flag',             name='comments-flag'),\n    url(r'^flagged/$',       'moderation.flag_done',        name='comments-flag-done'),\n    url(r'^delete/(\\d+)/$',  'moderation.delete',           name='comments-delete'),\n    url(r'^deleted/$',       'moderation.delete_done',      name='comments-delete-done'),\n    url(r'^approve/(\\d+)/$', 'moderation.approve',          name='comments-approve'),\n    url(r'^approved/$',      'moderation.approve_done',     name='comments-approve-done'),\n)\n\nurlpatterns += patterns('',\n    url(r'^cr/(\\d+)/(.+)/$', 'django.contrib.contenttypes.views.shortcut', name='comments-url-redirect'),\n)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/views/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/views/comments.py",
    "content": "from __future__ import absolute_import\n\nfrom django import http\nfrom django.conf import settings\nfrom django.contrib import comments\nfrom django.contrib.comments import signals\nfrom django.contrib.comments.views.utils import next_redirect, confirmation_view\nfrom django.core.exceptions import ObjectDoesNotExist, ValidationError\nfrom django.db import models\nfrom django.shortcuts import render_to_response\nfrom django.template import RequestContext\nfrom django.template.loader import render_to_string\nfrom django.utils.html import escape\nfrom django.views.decorators.csrf import csrf_protect\nfrom django.views.decorators.http import require_POST\n\n\nclass CommentPostBadRequest(http.HttpResponseBadRequest):\n    \"\"\"\n    Response returned when a comment post is invalid. If ``DEBUG`` is on a\n    nice-ish error message will be displayed (for debugging purposes), but in\n    production mode a simple opaque 400 page will be displayed.\n    \"\"\"\n    def __init__(self, why):\n        super(CommentPostBadRequest, self).__init__()\n        if settings.DEBUG:\n            self.content = render_to_string(\"comments/400-debug.html\", {\"why\": why})\n\n\n@csrf_protect\n@require_POST\ndef post_comment(request, next=None, using=None):\n    \"\"\"\n    Post a comment.\n\n    HTTP POST is required. If ``POST['submit'] == \"preview\"`` or if there are\n    errors a preview template, ``comments/preview.html``, will be rendered.\n    \"\"\"\n    # Fill out some initial data fields from an authenticated user, if present\n    data = request.POST.copy()\n    if request.user.is_authenticated():\n        if not data.get('name', ''):\n            data[\"name\"] = request.user.get_full_name() or request.user.get_username()\n        if not data.get('email', ''):\n            data[\"email\"] = request.user.email\n\n    # Look up the object we're trying to comment about\n    ctype = data.get(\"content_type\")\n    object_pk = data.get(\"object_pk\")\n    if ctype is None or object_pk is None:\n        return CommentPostBadRequest(\"Missing content_type or object_pk field.\")\n    try:\n        model = models.get_model(*ctype.split(\".\", 1))\n        target = model._default_manager.using(using).get(pk=object_pk)\n    except TypeError:\n        return CommentPostBadRequest(\n            \"Invalid content_type value: %r\" % escape(ctype))\n    except AttributeError:\n        return CommentPostBadRequest(\n            \"The given content-type %r does not resolve to a valid model.\" % \\\n                escape(ctype))\n    except ObjectDoesNotExist:\n        return CommentPostBadRequest(\n            \"No object matching content-type %r and object PK %r exists.\" % \\\n                (escape(ctype), escape(object_pk)))\n    except (ValueError, ValidationError) as e:\n        return CommentPostBadRequest(\n            \"Attempting go get content-type %r and object PK %r exists raised %s\" % \\\n                (escape(ctype), escape(object_pk), e.__class__.__name__))\n\n    # Do we want to preview the comment?\n    preview = \"preview\" in data\n\n    # Construct the comment form\n    form = comments.get_form()(target, data=data)\n\n    # Check security information\n    if form.security_errors():\n        return CommentPostBadRequest(\n            \"The comment form failed security verification: %s\" % \\\n                escape(str(form.security_errors())))\n\n    # If there are errors or if we requested a preview show the comment\n    if form.errors or preview:\n        template_list = [\n            # These first two exist for purely historical reasons.\n            # Django v1.0 and v1.1 allowed the underscore format for\n            # preview templates, so we have to preserve that format.\n            \"comments/%s_%s_preview.html\" % (model._meta.app_label, model._meta.module_name),\n            \"comments/%s_preview.html\" % model._meta.app_label,\n            # Now the usual directory based template hierarchy.\n            \"comments/%s/%s/preview.html\" % (model._meta.app_label, model._meta.module_name),\n            \"comments/%s/preview.html\" % model._meta.app_label,\n            \"comments/preview.html\",\n        ]\n        return render_to_response(\n            template_list, {\n                \"comment\": form.data.get(\"comment\", \"\"),\n                \"form\": form,\n                \"next\": data.get(\"next\", next),\n            },\n            RequestContext(request, {})\n        )\n\n    # Otherwise create the comment\n    comment = form.get_comment_object()\n    comment.ip_address = request.META.get(\"REMOTE_ADDR\", None)\n    if request.user.is_authenticated():\n        comment.user = request.user\n\n    # Signal that the comment is about to be saved\n    responses = signals.comment_will_be_posted.send(\n        sender=comment.__class__,\n        comment=comment,\n        request=request\n    )\n\n    for (receiver, response) in responses:\n        if response == False:\n            return CommentPostBadRequest(\n                \"comment_will_be_posted receiver %r killed the comment\" % receiver.__name__)\n\n    # Save the comment and signal that it was saved\n    comment.save()\n    signals.comment_was_posted.send(\n        sender=comment.__class__,\n        comment=comment,\n        request=request\n    )\n\n    return next_redirect(request, fallback=next or 'comments-comment-done',\n        c=comment._get_pk_val())\n\ncomment_done = confirmation_view(\n    template=\"comments/posted.html\",\n    doc=\"\"\"Display a \"comment was posted\" success page.\"\"\"\n)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/views/moderation.py",
    "content": "from __future__ import absolute_import\n\nfrom django import template\nfrom django.conf import settings\nfrom django.contrib import comments\nfrom django.contrib.auth.decorators import login_required, permission_required\nfrom django.contrib.comments import signals\nfrom django.contrib.comments.views.utils import next_redirect, confirmation_view\nfrom django.shortcuts import get_object_or_404, render_to_response\nfrom django.views.decorators.csrf import csrf_protect\n\n\n@csrf_protect\n@login_required\ndef flag(request, comment_id, next=None):\n    \"\"\"\n    Flags a comment. Confirmation on GET, action on POST.\n\n    Templates: :template:`comments/flag.html`,\n    Context:\n        comment\n            the flagged `comments.comment` object\n    \"\"\"\n    comment = get_object_or_404(comments.get_model(), pk=comment_id, site__pk=settings.SITE_ID)\n\n    # Flag on POST\n    if request.method == 'POST':\n        perform_flag(request, comment)\n        return next_redirect(request, fallback=next or 'comments-flag-done',\n            c=comment.pk)\n\n    # Render a form on GET\n    else:\n        return render_to_response('comments/flag.html',\n            {'comment': comment, \"next\": next},\n            template.RequestContext(request)\n        )\n\n@csrf_protect\n@permission_required(\"comments.can_moderate\")\ndef delete(request, comment_id, next=None):\n    \"\"\"\n    Deletes a comment. Confirmation on GET, action on POST. Requires the \"can\n    moderate comments\" permission.\n\n    Templates: :template:`comments/delete.html`,\n    Context:\n        comment\n            the flagged `comments.comment` object\n    \"\"\"\n    comment = get_object_or_404(comments.get_model(), pk=comment_id, site__pk=settings.SITE_ID)\n\n    # Delete on POST\n    if request.method == 'POST':\n        # Flag the comment as deleted instead of actually deleting it.\n        perform_delete(request, comment)\n        return next_redirect(request, fallback=next or 'comments-delete-done',\n            c=comment.pk)\n\n    # Render a form on GET\n    else:\n        return render_to_response('comments/delete.html',\n            {'comment': comment, \"next\": next},\n            template.RequestContext(request)\n        )\n\n@csrf_protect\n@permission_required(\"comments.can_moderate\")\ndef approve(request, comment_id, next=None):\n    \"\"\"\n    Approve a comment (that is, mark it as public and non-removed). Confirmation\n    on GET, action on POST. Requires the \"can moderate comments\" permission.\n\n    Templates: :template:`comments/approve.html`,\n    Context:\n        comment\n            the `comments.comment` object for approval\n    \"\"\"\n    comment = get_object_or_404(comments.get_model(), pk=comment_id, site__pk=settings.SITE_ID)\n\n    # Delete on POST\n    if request.method == 'POST':\n        # Flag the comment as approved.\n        perform_approve(request, comment)\n        return next_redirect(request, fallback=next or 'comments-approve-done',\n            c=comment.pk)\n\n    # Render a form on GET\n    else:\n        return render_to_response('comments/approve.html',\n            {'comment': comment, \"next\": next},\n            template.RequestContext(request)\n        )\n\n# The following functions actually perform the various flag/aprove/delete\n# actions. They've been broken out into separate functions to that they\n# may be called from admin actions.\n\ndef perform_flag(request, comment):\n    \"\"\"\n    Actually perform the flagging of a comment from a request.\n    \"\"\"\n    flag, created = comments.models.CommentFlag.objects.get_or_create(\n        comment = comment,\n        user    = request.user,\n        flag    = comments.models.CommentFlag.SUGGEST_REMOVAL\n    )\n    signals.comment_was_flagged.send(\n        sender  = comment.__class__,\n        comment = comment,\n        flag    = flag,\n        created = created,\n        request = request,\n    )\n\ndef perform_delete(request, comment):\n    flag, created = comments.models.CommentFlag.objects.get_or_create(\n        comment = comment,\n        user    = request.user,\n        flag    = comments.models.CommentFlag.MODERATOR_DELETION\n    )\n    comment.is_removed = True\n    comment.save()\n    signals.comment_was_flagged.send(\n        sender  = comment.__class__,\n        comment = comment,\n        flag    = flag,\n        created = created,\n        request = request,\n    )\n\n\ndef perform_approve(request, comment):\n    flag, created = comments.models.CommentFlag.objects.get_or_create(\n        comment = comment,\n        user    = request.user,\n        flag    = comments.models.CommentFlag.MODERATOR_APPROVAL,\n    )\n\n    comment.is_removed = False\n    comment.is_public = True\n    comment.save()\n\n    signals.comment_was_flagged.send(\n        sender  = comment.__class__,\n        comment = comment,\n        flag    = flag,\n        created = created,\n        request = request,\n    )\n\n# Confirmation views.\n\nflag_done = confirmation_view(\n    template = \"comments/flagged.html\",\n    doc = 'Displays a \"comment was flagged\" success page.'\n)\ndelete_done = confirmation_view(\n    template = \"comments/deleted.html\",\n    doc = 'Displays a \"comment was deleted\" success page.'\n)\napprove_done = confirmation_view(\n    template = \"comments/approved.html\",\n    doc = 'Displays a \"comment was approved\" success page.'\n)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/comments/views/utils.py",
    "content": "\"\"\"\nA few bits of helper functions for comment views.\n\"\"\"\n\nimport textwrap\ntry:\n    from urllib.parse import urlencode\nexcept ImportError:     # Python 2\n    from urllib import urlencode\n\nfrom django.http import HttpResponseRedirect\nfrom django.shortcuts import render_to_response, resolve_url\nfrom django.template import RequestContext\nfrom django.core.exceptions import ObjectDoesNotExist\nfrom django.contrib import comments\nfrom django.utils.http import is_safe_url\n\ndef next_redirect(request, fallback, **get_kwargs):\n    \"\"\"\n    Handle the \"where should I go next?\" part of comment views.\n\n    The next value could be a\n    ``?next=...`` GET arg or the URL of a given view (``fallback``). See\n    the view modules for examples.\n\n    Returns an ``HttpResponseRedirect``.\n    \"\"\"\n    next = request.POST.get('next')\n    if not is_safe_url(url=next, host=request.get_host()):\n        next = resolve_url(fallback)\n\n    if get_kwargs:\n        if '#' in next:\n            tmp = next.rsplit('#', 1)\n            next = tmp[0]\n            anchor = '#' + tmp[1]\n        else:\n            anchor = ''\n\n        joiner = ('?' in next) and '&' or '?'\n        next += joiner + urlencode(get_kwargs) + anchor\n    return HttpResponseRedirect(next)\n\ndef confirmation_view(template, doc=\"Display a confirmation view.\"):\n    \"\"\"\n    Confirmation view generator for the \"comment was\n    posted/flagged/deleted/approved\" views.\n    \"\"\"\n    def confirmed(request):\n        comment = None\n        if 'c' in request.GET:\n            try:\n                comment = comments.get_model().objects.get(pk=request.GET['c'])\n            except (ObjectDoesNotExist, ValueError):\n                pass\n        return render_to_response(template,\n            {'comment': comment},\n            context_instance=RequestContext(request)\n        )\n\n    confirmed.__doc__ = textwrap.dedent(\"\"\"\\\n        %s\n\n        Templates: :template:`%s``\n        Context:\n            comment\n                The posted comment\n        \"\"\" % (doc, template)\n    )\n    return confirmed\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/generic.py",
    "content": "\"\"\"\nClasses allowing \"generic\" relations through ContentType and object-id fields.\n\"\"\"\nfrom __future__ import unicode_literals\n\nfrom collections import defaultdict\nfrom functools import partial\n\nfrom django.core.exceptions import ObjectDoesNotExist\nfrom django.db import connection\nfrom django.db.models import signals\nfrom django.db import models, router, DEFAULT_DB_ALIAS\nfrom django.db.models.fields.related import RelatedField, Field, ManyToManyRel\nfrom django.db.models.loading import get_model\nfrom django.forms import ModelForm\nfrom django.forms.models import BaseModelFormSet, modelformset_factory, save_instance\nfrom django.contrib.admin.options import InlineModelAdmin, flatten_fieldsets\nfrom django.contrib.contenttypes.models import ContentType\nfrom django.utils.encoding import smart_text\n\nclass GenericForeignKey(object):\n    \"\"\"\n    Provides a generic relation to any object through content-type/object-id\n    fields.\n    \"\"\"\n\n    def __init__(self, ct_field=\"content_type\", fk_field=\"object_id\"):\n        self.ct_field = ct_field\n        self.fk_field = fk_field\n\n    def contribute_to_class(self, cls, name):\n        self.name = name\n        self.model = cls\n        self.cache_attr = \"_%s_cache\" % name\n        cls._meta.add_virtual_field(self)\n\n        # For some reason I don't totally understand, using weakrefs here doesn't work.\n        signals.pre_init.connect(self.instance_pre_init, sender=cls, weak=False)\n\n        # Connect myself as the descriptor for this field\n        setattr(cls, name, self)\n\n    def instance_pre_init(self, signal, sender, args, kwargs, **_kwargs):\n        \"\"\"\n        Handles initializing an object with the generic FK instaed of\n        content-type/object-id fields.\n        \"\"\"\n        if self.name in kwargs:\n            value = kwargs.pop(self.name)\n            kwargs[self.ct_field] = self.get_content_type(obj=value)\n            kwargs[self.fk_field] = value._get_pk_val()\n\n    def get_content_type(self, obj=None, id=None, using=None):\n        # Convenience function using get_model avoids a circular import when\n        # using this model\n        ContentType = get_model(\"contenttypes\", \"contenttype\")\n        if obj:\n            return ContentType.objects.db_manager(obj._state.db).get_for_model(obj)\n        elif id:\n            return ContentType.objects.db_manager(using).get_for_id(id)\n        else:\n            # This should never happen. I love comments like this, don't you?\n            raise Exception(\"Impossible arguments to GFK.get_content_type!\")\n\n    def get_prefetch_query_set(self, instances):\n        # For efficiency, group the instances by content type and then do one\n        # query per model\n        fk_dict = defaultdict(set)\n        # We need one instance for each group in order to get the right db:\n        instance_dict = {}\n        ct_attname = self.model._meta.get_field(self.ct_field).get_attname()\n        for instance in instances:\n            # We avoid looking for values if either ct_id or fkey value is None\n            ct_id = getattr(instance, ct_attname)\n            if ct_id is not None:\n                fk_val = getattr(instance, self.fk_field)\n                if fk_val is not None:\n                    fk_dict[ct_id].add(fk_val)\n                    instance_dict[ct_id] = instance\n\n        ret_val = []\n        for ct_id, fkeys in fk_dict.items():\n            instance = instance_dict[ct_id]\n            ct = self.get_content_type(id=ct_id, using=instance._state.db)\n            ret_val.extend(ct.get_all_objects_for_this_type(pk__in=fkeys))\n\n        # For doing the join in Python, we have to match both the FK val and the\n        # content type, so we use a callable that returns a (fk, class) pair.\n        def gfk_key(obj):\n            ct_id = getattr(obj, ct_attname)\n            if ct_id is None:\n                return None\n            else:\n                model = self.get_content_type(id=ct_id,\n                                              using=obj._state.db).model_class()\n                return (model._meta.pk.get_prep_value(getattr(obj, self.fk_field)),\n                        model)\n\n        return (ret_val,\n                lambda obj: (obj._get_pk_val(), obj.__class__),\n                gfk_key,\n                True,\n                self.cache_attr)\n\n    def is_cached(self, instance):\n        return hasattr(instance, self.cache_attr)\n\n    def __get__(self, instance, instance_type=None):\n        if instance is None:\n            return self\n\n        try:\n            return getattr(instance, self.cache_attr)\n        except AttributeError:\n            rel_obj = None\n\n            # Make sure to use ContentType.objects.get_for_id() to ensure that\n            # lookups are cached (see ticket #5570). This takes more code than\n            # the naive ``getattr(instance, self.ct_field)``, but has better\n            # performance when dealing with GFKs in loops and such.\n            f = self.model._meta.get_field(self.ct_field)\n            ct_id = getattr(instance, f.get_attname(), None)\n            if ct_id:\n                ct = self.get_content_type(id=ct_id, using=instance._state.db)\n                try:\n                    rel_obj = ct.get_object_for_this_type(pk=getattr(instance, self.fk_field))\n                except ObjectDoesNotExist:\n                    pass\n            setattr(instance, self.cache_attr, rel_obj)\n            return rel_obj\n\n    def __set__(self, instance, value):\n        if instance is None:\n            raise AttributeError(\"%s must be accessed via instance\" % self.related.opts.object_name)\n\n        ct = None\n        fk = None\n        if value is not None:\n            ct = self.get_content_type(obj=value)\n            fk = value._get_pk_val()\n\n        setattr(instance, self.ct_field, ct)\n        setattr(instance, self.fk_field, fk)\n        setattr(instance, self.cache_attr, value)\n\nclass GenericRelation(RelatedField, Field):\n    \"\"\"Provides an accessor to generic related objects (e.g. comments)\"\"\"\n\n    def __init__(self, to, **kwargs):\n        kwargs['verbose_name'] = kwargs.get('verbose_name', None)\n        kwargs['rel'] = GenericRel(to,\n                            related_name=kwargs.pop('related_name', None),\n                            limit_choices_to=kwargs.pop('limit_choices_to', None),\n                            symmetrical=kwargs.pop('symmetrical', True))\n\n\n        # Override content-type/object-id field names on the related class\n        self.object_id_field_name = kwargs.pop(\"object_id_field\", \"object_id\")\n        self.content_type_field_name = kwargs.pop(\"content_type_field\", \"content_type\")\n\n        kwargs['blank'] = True\n        kwargs['editable'] = False\n        kwargs['serialize'] = False\n        Field.__init__(self, **kwargs)\n\n    def get_choices_default(self):\n        return Field.get_choices(self, include_blank=False)\n\n    def value_to_string(self, obj):\n        qs = getattr(obj, self.name).all()\n        return smart_text([instance._get_pk_val() for instance in qs])\n\n    def m2m_db_table(self):\n        return self.rel.to._meta.db_table\n\n    def m2m_column_name(self):\n        return self.object_id_field_name\n\n    def m2m_reverse_name(self):\n        return self.rel.to._meta.pk.column\n\n    def m2m_target_field_name(self):\n        return self.model._meta.pk.name\n\n    def m2m_reverse_target_field_name(self):\n        return self.rel.to._meta.pk.name\n\n    def contribute_to_class(self, cls, name):\n        super(GenericRelation, self).contribute_to_class(cls, name)\n\n        # Save a reference to which model this class is on for future use\n        self.model = cls\n\n        # Add the descriptor for the m2m relation\n        setattr(cls, self.name, ReverseGenericRelatedObjectsDescriptor(self))\n\n    def contribute_to_related_class(self, cls, related):\n        pass\n\n    def set_attributes_from_rel(self):\n        pass\n\n    def get_internal_type(self):\n        return \"ManyToManyField\"\n\n    def db_type(self, connection):\n        # Since we're simulating a ManyToManyField, in effect, best return the\n        # same db_type as well.\n        return None\n\n    def extra_filters(self, pieces, pos, negate):\n        \"\"\"\n        Return an extra filter to the queryset so that the results are filtered\n        on the appropriate content type.\n        \"\"\"\n        if negate:\n            return []\n        ContentType = get_model(\"contenttypes\", \"contenttype\")\n        content_type = ContentType.objects.get_for_model(self.model)\n        prefix = \"__\".join(pieces[:pos + 1])\n        return [(\"%s__%s\" % (prefix, self.content_type_field_name),\n            content_type)]\n\n    def bulk_related_objects(self, objs, using=DEFAULT_DB_ALIAS):\n        \"\"\"\n        Return all objects related to ``objs`` via this ``GenericRelation``.\n\n        \"\"\"\n        return self.rel.to._base_manager.db_manager(using).filter(**{\n                \"%s__pk\" % self.content_type_field_name:\n                    ContentType.objects.db_manager(using).get_for_model(self.model).pk,\n                \"%s__in\" % self.object_id_field_name:\n                    [obj.pk for obj in objs]\n                })\n\n\nclass ReverseGenericRelatedObjectsDescriptor(object):\n    \"\"\"\n    This class provides the functionality that makes the related-object\n    managers available as attributes on a model class, for fields that have\n    multiple \"remote\" values and have a GenericRelation defined in their model\n    (rather than having another model pointed *at* them). In the example\n    \"article.publications\", the publications attribute is a\n    ReverseGenericRelatedObjectsDescriptor instance.\n    \"\"\"\n    def __init__(self, field):\n        self.field = field\n\n    def __get__(self, instance, instance_type=None):\n        if instance is None:\n            return self\n\n        # This import is done here to avoid circular import importing this module\n        from django.contrib.contenttypes.models import ContentType\n\n        # Dynamically create a class that subclasses the related model's\n        # default manager.\n        rel_model = self.field.rel.to\n        superclass = rel_model._default_manager.__class__\n        RelatedManager = create_generic_related_manager(superclass)\n\n        qn = connection.ops.quote_name\n        content_type = ContentType.objects.db_manager(instance._state.db).get_for_model(instance)\n\n        manager = RelatedManager(\n            model = rel_model,\n            instance = instance,\n            symmetrical = (self.field.rel.symmetrical and instance.__class__ == rel_model),\n            source_col_name = qn(self.field.m2m_column_name()),\n            target_col_name = qn(self.field.m2m_reverse_name()),\n            content_type = content_type,\n            content_type_field_name = self.field.content_type_field_name,\n            object_id_field_name = self.field.object_id_field_name,\n            prefetch_cache_name = self.field.attname,\n        )\n\n        return manager\n\n    def __set__(self, instance, value):\n        if instance is None:\n            raise AttributeError(\"Manager must be accessed via instance\")\n\n        manager = self.__get__(instance)\n        manager.clear()\n        for obj in value:\n            manager.add(obj)\n\ndef create_generic_related_manager(superclass):\n    \"\"\"\n    Factory function for a manager that subclasses 'superclass' (which is a\n    Manager) and adds behavior for generic related objects.\n    \"\"\"\n\n    class GenericRelatedObjectManager(superclass):\n        def __init__(self, model=None, instance=None, symmetrical=None,\n                     source_col_name=None, target_col_name=None, content_type=None,\n                     content_type_field_name=None, object_id_field_name=None,\n                     prefetch_cache_name=None):\n\n            super(GenericRelatedObjectManager, self).__init__()\n            self.model = model\n            self.content_type = content_type\n            self.symmetrical = symmetrical\n            self.instance = instance\n            self.source_col_name = source_col_name\n            self.target_col_name = target_col_name\n            self.content_type_field_name = content_type_field_name\n            self.object_id_field_name = object_id_field_name\n            self.prefetch_cache_name = prefetch_cache_name\n            self.pk_val = self.instance._get_pk_val()\n            self.core_filters = {\n                '%s__pk' % content_type_field_name: content_type.id,\n                '%s__exact' % object_id_field_name: instance._get_pk_val(),\n            }\n\n        def get_query_set(self):\n            try:\n                return self.instance._prefetched_objects_cache[self.prefetch_cache_name]\n            except (AttributeError, KeyError):\n                db = self._db or router.db_for_read(self.model, instance=self.instance)\n                return super(GenericRelatedObjectManager, self).get_query_set().using(db).filter(**self.core_filters)\n\n        def get_prefetch_query_set(self, instances):\n            db = self._db or router.db_for_read(self.model, instance=instances[0])\n            query = {\n                '%s__pk' % self.content_type_field_name: self.content_type.id,\n                '%s__in' % self.object_id_field_name:\n                    set(obj._get_pk_val() for obj in instances)\n                }\n            qs = super(GenericRelatedObjectManager, self).get_query_set().using(db).filter(**query)\n            # We (possibly) need to convert object IDs to the type of the\n            # instances' PK in order to match up instances:\n            object_id_converter = instances[0]._meta.pk.to_python\n            return (qs,\n                    lambda relobj: object_id_converter(getattr(relobj, self.object_id_field_name)),\n                    lambda obj: obj._get_pk_val(),\n                    False,\n                    self.prefetch_cache_name)\n\n        def add(self, *objs):\n            for obj in objs:\n                if not isinstance(obj, self.model):\n                    raise TypeError(\"'%s' instance expected\" % self.model._meta.object_name)\n                setattr(obj, self.content_type_field_name, self.content_type)\n                setattr(obj, self.object_id_field_name, self.pk_val)\n                obj.save()\n        add.alters_data = True\n\n        def remove(self, *objs):\n            db = router.db_for_write(self.model, instance=self.instance)\n            for obj in objs:\n                obj.delete(using=db)\n        remove.alters_data = True\n\n        def clear(self):\n            db = router.db_for_write(self.model, instance=self.instance)\n            for obj in self.all():\n                obj.delete(using=db)\n        clear.alters_data = True\n\n        def create(self, **kwargs):\n            kwargs[self.content_type_field_name] = self.content_type\n            kwargs[self.object_id_field_name] = self.pk_val\n            db = router.db_for_write(self.model, instance=self.instance)\n            return super(GenericRelatedObjectManager, self).using(db).create(**kwargs)\n        create.alters_data = True\n\n    return GenericRelatedObjectManager\n\nclass GenericRel(ManyToManyRel):\n    def __init__(self, to, related_name=None, limit_choices_to=None, symmetrical=True):\n        self.to = to\n        self.related_name = related_name\n        self.limit_choices_to = limit_choices_to or {}\n        self.symmetrical = symmetrical\n        self.multiple = True\n        self.through = None\n\nclass BaseGenericInlineFormSet(BaseModelFormSet):\n    \"\"\"\n    A formset for generic inline objects to a parent.\n    \"\"\"\n\n    def __init__(self, data=None, files=None, instance=None, save_as_new=None,\n                 prefix=None, queryset=None):\n        # Avoid a circular import.\n        from django.contrib.contenttypes.models import ContentType\n        opts = self.model._meta\n        self.instance = instance\n        self.rel_name = '-'.join((\n            opts.app_label, opts.object_name.lower(),\n            self.ct_field.name, self.ct_fk_field.name,\n        ))\n        if self.instance is None or self.instance.pk is None:\n            qs = self.model._default_manager.none()\n        else:\n            if queryset is None:\n                queryset = self.model._default_manager\n            qs = queryset.filter(**{\n                self.ct_field.name: ContentType.objects.get_for_model(self.instance),\n                self.ct_fk_field.name: self.instance.pk,\n            })\n        super(BaseGenericInlineFormSet, self).__init__(\n            queryset=qs, data=data, files=files,\n            prefix=prefix\n        )\n\n    @classmethod\n    def get_default_prefix(cls):\n        opts = cls.model._meta\n        return '-'.join((opts.app_label, opts.object_name.lower(),\n                        cls.ct_field.name, cls.ct_fk_field.name,\n        ))\n\n    def save_new(self, form, commit=True):\n        # Avoid a circular import.\n        from django.contrib.contenttypes.models import ContentType\n        kwargs = {\n            self.ct_field.get_attname(): ContentType.objects.get_for_model(self.instance).pk,\n            self.ct_fk_field.get_attname(): self.instance.pk,\n        }\n        new_obj = self.model(**kwargs)\n        return save_instance(form, new_obj, commit=commit)\n\ndef generic_inlineformset_factory(model, form=ModelForm,\n                                  formset=BaseGenericInlineFormSet,\n                                  ct_field=\"content_type\", fk_field=\"object_id\",\n                                  fields=None, exclude=None,\n                                  extra=3, can_order=False, can_delete=True,\n                                  max_num=None,\n                                  formfield_callback=None):\n    \"\"\"\n    Returns a ``GenericInlineFormSet`` for the given kwargs.\n\n    You must provide ``ct_field`` and ``object_id`` if they different from the\n    defaults ``content_type`` and ``object_id`` respectively.\n    \"\"\"\n    opts = model._meta\n    # Avoid a circular import.\n    from django.contrib.contenttypes.models import ContentType\n    # if there is no field called `ct_field` let the exception propagate\n    ct_field = opts.get_field(ct_field)\n    if not isinstance(ct_field, models.ForeignKey) or ct_field.rel.to != ContentType:\n        raise Exception(\"fk_name '%s' is not a ForeignKey to ContentType\" % ct_field)\n    fk_field = opts.get_field(fk_field) # let the exception propagate\n    if exclude is not None:\n        exclude = list(exclude)\n        exclude.extend([ct_field.name, fk_field.name])\n    else:\n        exclude = [ct_field.name, fk_field.name]\n    FormSet = modelformset_factory(model, form=form,\n                                   formfield_callback=formfield_callback,\n                                   formset=formset,\n                                   extra=extra, can_delete=can_delete, can_order=can_order,\n                                   fields=fields, exclude=exclude, max_num=max_num)\n    FormSet.ct_field = ct_field\n    FormSet.ct_fk_field = fk_field\n    return FormSet\n\nclass GenericInlineModelAdmin(InlineModelAdmin):\n    ct_field = \"content_type\"\n    ct_fk_field = \"object_id\"\n    formset = BaseGenericInlineFormSet\n\n    def get_formset(self, request, obj=None, **kwargs):\n        if self.declared_fieldsets:\n            fields = flatten_fieldsets(self.declared_fieldsets)\n        else:\n            fields = None\n        if self.exclude is None:\n            exclude = []\n        else:\n            exclude = list(self.exclude)\n        exclude.extend(self.get_readonly_fields(request, obj))\n        if self.exclude is None and hasattr(self.form, '_meta') and self.form._meta.exclude:\n            # Take the custom ModelForm's Meta.exclude into account only if the\n            # GenericInlineModelAdmin doesn't define its own.\n            exclude.extend(self.form._meta.exclude)\n        exclude = exclude or None\n        can_delete = self.can_delete and self.has_delete_permission(request, obj)\n        defaults = {\n            \"ct_field\": self.ct_field,\n            \"fk_field\": self.ct_fk_field,\n            \"form\": self.form,\n            \"formfield_callback\": partial(self.formfield_for_dbfield, request=request),\n            \"formset\": self.formset,\n            \"extra\": self.extra,\n            \"can_delete\": can_delete,\n            \"can_order\": False,\n            \"fields\": fields,\n            \"max_num\": self.max_num,\n            \"exclude\": exclude\n        }\n        defaults.update(kwargs)\n        return generic_inlineformset_factory(self.model, **defaults)\n\nclass GenericStackedInline(GenericInlineModelAdmin):\n    template = 'admin/edit_inline/stacked.html'\n\nclass GenericTabularInline(GenericInlineModelAdmin):\n    template = 'admin/edit_inline/tabular.html'\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/ar/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 11:45+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Arabic (http://www.transifex.com/projects/p/django/language/\"\n\"ar/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ar\\n\"\n\"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 \"\n\"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"اسم صنف النموذج في python\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"نوع البيانات\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"أنواع البيانات\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/az/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Ali Ismayilov <ali@ismailov.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 11:45+0000\\n\"\n\"Last-Translator: Ali Ismayilov <ali@ismailov.info>\\n\"\n\"Language-Team: Azerbaijani (http://www.transifex.com/projects/p/django/\"\n\"language/az/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: az\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"python modelinin sinif (class) adı\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"məzmun tipi\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"məzmun tipləri\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/be/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-08-01 10:43+0000\\n\"\n\"Last-Translator: Павал Клёк <yehekim@gmail.com>\\n\"\n\"Language-Team: Belarusian (http://www.transifex.com/projects/p/django/\"\n\"language/be/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: be\\n\"\n\"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"назва клясы пітонавае мадэлі\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"від зьмесьціва\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"віды зьмесьціва\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"Аб’ект са зьмесьцівам віду %(ct_id)s не зьвязалі з мадэльлю\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"Аб’ект %(obj_id)s са зьмесьцівам віду %(ct_id)s не існуе\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"Аб’екты %(ct_name)s ня маюць спосабу «get_absolute_url()»\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/bg/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Boris Chervenkov <office@sentido.bg>, 2012.\n#   <grgkostadinov@gmail.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-04-01 19:30+0000\\n\"\n\"Last-Translator: Georgi Kostadinov <grgkostadinov@gmail.com>\\n\"\n\"Language-Team: Bulgarian (http://www.transifex.com/projects/p/django/\"\n\"language/bg/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: bg\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"име на класа на модела в Python\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"тип на съдържанието\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"типове съдържание\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"Обект с тип на съдържанието %(ct_id)s няма асоцииран модел.\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"Обект %(obj_id)s с тип на съдържанието %(ct_id)s не съществува.\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"%(ct_name)s обекти нямат метода get_absolute_url()\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/bn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 11:45+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Bengali (http://www.transifex.com/projects/p/django/language/\"\n\"bn/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: bn\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"পাইথন মডেল ক্লাসের নাম\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"কনটেন্ট টাইপ\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"কনটেন্ট টাইপ সমূহ\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/br/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2011-01-19 15:05+0000\\n\"\n\"Last-Translator: Django team\\n\"\n\"Language-Team: Breton (http://www.transifex.com/projects/p/django/language/\"\n\"br/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: br\\n\"\n\"Plural-Forms: nplurals=2; plural=(n > 1);\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/bs/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 11:45+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Bosnian (http://www.transifex.com/projects/p/django/language/\"\n\"bs/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: bs\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"ime python klase modela\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"tip sadržaja\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"tipovi sadržaja\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/ca/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Carles Barrobés <carles@barrobes.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 11:45+0000\\n\"\n\"Last-Translator: Carles Barrobés <carles@barrobes.com>\\n\"\n\"Language-Team: Catalan (http://www.transifex.com/projects/p/django/language/\"\n\"ca/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ca\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"nom de la classe del model en python\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"tipus de contingut\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"tipus de continguts\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"L'objecte del tipus de contingut %(ct_id)s no té un model associat\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"L'objecte %(obj_id)s del tipus de contingut %(ct_id)s no existeix\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"Els objectes %(ct_name)s no tenen un mètode get_absolute_url()\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/cs/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Vlada Macek <macek@sandbox.cz>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 11:45+0000\\n\"\n\"Last-Translator: Vlada Macek <macek@sandbox.cz>\\n\"\n\"Language-Team: Czech (http://www.transifex.com/projects/p/django/language/\"\n\"cs/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: cs\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"název třídy modelu v Pythonu\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"typ obsahu\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"typy obsahu\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"Typ obsahu %(ct_id)s nemá přidružený model.\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"Objekt %(obj_id)s typu obsahu %(ct_id)s neexistuje.\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"Objektům %(ct_name)s chybí metoda get_absolute_url().\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/cy/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 11:45+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Welsh (http://www.transifex.com/projects/p/django/language/\"\n\"cy/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: cy\\n\"\n\"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != \"\n\"11) ? 2 : 3;\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"math cynnwys\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"mathau cynnwys\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/da/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Kristian Øllegaard <kristian@oellegaard.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-19 14:41+0000\\n\"\n\"Last-Translator: Kristian Øllegaard <kristian@oellegaard.com>\\n\"\n\"Language-Team: Danish (http://www.transifex.com/projects/p/django/language/\"\n\"da/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: da\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"klassenavn i Python-model\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"indholdstype\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"indholdstyper\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"Indholdstypen %(ct_id)s objekt har ingen tilhørende model\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"Indholdstypen %(ct_id)s objekt %(obj_id)s findes ikke\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \" %(ct_name)s objekter ikke har en get_absolute_url ()-metode\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/de/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# André Hagenbruch <ahagenbruch@googlemail.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 13:16+0000\\n\"\n\"Last-Translator: André Hagenbruch <ahagenbruch@googlemail.com>\\n\"\n\"Language-Team: German (http://www.transifex.com/projects/p/django/language/\"\n\"de/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: de\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"Python Modell-Klassenname\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"Inhaltstyp\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"Inhaltstypen\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"Objekt des Inhaltstyps %(ct_id)s hat kein dazugehöriges Modell\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"Objekt %(obj_id)s des Inhaltstyps %(ct_id)s ist nicht vorhanden\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \" %(ct_name)s  Objekte haben keine get_absolute_url ()-Methode\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/el/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 11:45+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Greek (http://www.transifex.com/projects/p/django/language/\"\n\"el/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: el\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"όνομα python model class\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"τύπος περιεχομένου\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"τύποι περιεχομένου\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/en/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 11:45+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: English <en@li.org>\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: en\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"python model class name\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"content type\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"content types\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"Content type %(ct_id)s object has no associated model\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"%(ct_name)s objects don't have a get_absolute_url() method\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/en_GB/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# jon_atkinson <jon@jonatkinson.co.uk>, 2011.\n# Ross Poulton <ross@rossp.org>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-12 21:57+0000\\n\"\n\"Last-Translator: Ross Poulton <ross@rossp.org>\\n\"\n\"Language-Team: English (United Kingdom) (http://www.transifex.com/projects/p/\"\n\"django/language/en_GB/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: en_GB\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"python model class name\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"content type\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"content types\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"Content type %(ct_id)s object has no associated model\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"%(ct_name)s objects don't have a get_absolute_url() method\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/eo/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Baptiste  <bapdarth@yahoo.fr>, 2011-2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-09-15 19:58+0000\\n\"\n\"Last-Translator: Baptiste <baptiste+transifex@darthenay.fr>\\n\"\n\"Language-Team: Esperanto (http://www.transifex.com/projects/p/django/\"\n\"language/eo/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: eo\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"klasa nomo de pitona modelo\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"enhava tipo\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"enhavaj tipoj\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"Objekto kun enhava tipo %(ct_id)s ne havas asociitaj modeloj\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"Objekto %(obj_id)s kun enhava tipo %(ct_id)s ne ekzistas\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \" %(ct_name)s objektoj ne havas metodon get_absolute_url()\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/es/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Antoni Aloy <antoni.aloy@trespams.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-14 19:04+0000\\n\"\n\"Last-Translator: Antoni Aloy <aaloy@apsl.net>\\n\"\n\"Language-Team: Spanish (http://www.transifex.com/projects/p/django/language/\"\n\"es/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: es\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"nombre de la clase modelo de python\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"tipo de contenido\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"tipos de contenido\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"\"\n\"El objeto de tipo de contenido %(ct_id)s  no tiene ningún modelo asociado.\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"El objeto de tipo de contenido %(ct_id)s objeto %(obj_id)s  no existe\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"El objeto %(ct_name)s no tiene un método get_absolute_url () \"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/es_AR/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Ramiro Morales <cramm0@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-16 01:41+0000\\n\"\n\"Last-Translator: Ramiro Morales <cramm0@gmail.com>\\n\"\n\"Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/\"\n\"django/language/es_AR/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: es_AR\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"nombre de la clase python del modelo\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"tipo de contenido\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"tipos de contenido\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"El objeto Tipo de contenido %(ct_id)s no tiene un modelo asociado\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"El objeto Tipo de contenido %(ct_id)s %(obj_id)s no existe\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"Los objetos %(ct_name)s no tienen un método et_absolute_url()\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/es_MX/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Abraham Estrada <abraham.estrada@gmail.com>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 11:45+0000\\n\"\n\"Last-Translator: Abraham Estrada <abraham.estrada@gmail.com>\\n\"\n\"Language-Team: Spanish (Mexico) (http://www.transifex.com/projects/p/django/\"\n\"language/es_MX/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: es_MX\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"nombre de la clase python del modelo\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"tipo de contenido\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"tipos de contenido\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"\"\n\"Los objetos con el tipo de contenido %(ct_id)s no tienen un modelo asociado\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"Los objetos %(obj_id)s con el tipo de contenido %(ct_id)s no existen\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"Los %(ct_name)s objetos no tienen el método get_absolute_url()\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/et/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 11:45+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Estonian (http://www.transifex.com/projects/p/django/language/\"\n\"et/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: et\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"pythoni mudeli klassinimi\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"sisutüüp\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"sisutüübid\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/eu/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Aitzol Naberan <anaberan@codesyntax.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 20:45+0000\\n\"\n\"Last-Translator: Aitzol Naberan <anaberan@codesyntax.com>\\n\"\n\"Language-Team: Basque (http://www.transifex.com/projects/p/django/language/\"\n\"eu/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: eu\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"python model class izena\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"eduki mota\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"eduki motak\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"%(ct_id)s eduki motak ez dauka lotutako eredurik\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"%(ct_id)s eduki motako %(obj_id)s objekturik ez da existitzen\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"%(ct_name)s objektuek ez dauketa get_absolute_url() metodorik\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/fa/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Ali Nikneshan <ali@nikneshan.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-06-21 08:15+0000\\n\"\n\"Last-Translator: Ali Nikneshan <ali@nikneshan.com>\\n\"\n\"Language-Team: Persian (http://www.transifex.com/projects/p/django/language/\"\n\"fa/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: fa\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"نام پایتونی کلاس مدل\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"نوع محتوا\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"نوع‌های محتوا\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"نوع محتوای %(ct_id)s به هیچ مدلی مرتبط نشده است.\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"نوع محتوای  %(ct_id)s شیی  %(obj_id)s وجود ندارد\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"  اشیای %(ct_name)s متد  get_absolute_url() را ندارند.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/fi/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <klaus.dahlen@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-24 15:23+0000\\n\"\n\"Last-Translator: nanook <klaus.dahlen@gmail.com>\\n\"\n\"Language-Team: Finnish (http://www.transifex.com/projects/p/django/language/\"\n\"fi/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: fi\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"mallin python-luokan nimi\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"sisältötyyppi\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"sisältötyypit\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"Sisältötyypin %(ct_id)s objektiin ei ole liitetty mallia\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"Sisältötyypin %(ct_id)s objektia %(obj_id)s ei ole olemassa\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"%(ct_name)s-objekteilla ei ole get_absolute_url()-metodia\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/fr/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <claude@2xlibre.net>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 11:45+0000\\n\"\n\"Last-Translator: claudep <claude@2xlibre.net>\\n\"\n\"Language-Team: French (http://www.transifex.com/projects/p/django/language/\"\n\"fr/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: fr\\n\"\n\"Plural-Forms: nplurals=2; plural=(n > 1);\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"nom de la classe python du modèle\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"type de contenu\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"types de contenu\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"L'objet type de contenu %(ct_id)s n'a pas de modèle associé\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"L'objet %(obj_id)s du type de contenu %(ct_id)s n'existe pas\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"Les objets %(ct_name)s n'ont pas de méthode get_absolute_url()\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/fy_NL/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:37+0100\\n\"\n\"PO-Revision-Date: 2011-03-15 15:26+0000\\n\"\n\"Last-Translator: Django team\\n\"\n\"Language-Team: English <en@li.org>\\n\"\n\"Language: fy_NL\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1)\\n\"\n\n#: models.py:123\nmsgid \"python model class name\"\nmsgstr \"\"\n\n#: models.py:127\nmsgid \"content type\"\nmsgstr \"\"\n\n#: models.py:128\nmsgid \"content types\"\nmsgstr \"\"\n\n#: views.py:15\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"\"\n\n#: views.py:19\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"\"\n\n#: views.py:25\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/ga/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Michael Thornhill <michael@maithu.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-16 13:17+0000\\n\"\n\"Last-Translator: Michael Thornhill <michael@maithu.com>\\n\"\n\"Language-Team: Irish (http://www.transifex.com/projects/p/django/language/\"\n\"ga/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ga\\n\"\n\"Plural-Forms: nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : \"\n\"4);\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"píotón samhail aicme ainm\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"tíopa inneachar \"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"tíopaI inneachair\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"Ní bhaineann samhail leis an cineál inneachar %(ct_id)s\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"Níl cineál inneachar %(ct_id)s oibiacht %(obj_id)s ann\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"Níl modh get_absolute_url() ag %(ct_name)s oibiachtaí\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/gl/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <fonzzo@gmail.com>, 2013.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2013-01-07 12:00+0000\\n\"\n\"Last-Translator: fonso <fonzzo@gmail.com>\\n\"\n\"Language-Team: Galician (http://www.transifex.com/projects/p/django/language/\"\n\"gl/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: gl\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"nome do módulo Python\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"tipo de contido\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"tipos de contido\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"O obxecto de tipo de contido %(ct_id)s non ten un modelo asociado\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"O obxecto %(obj_id)s con tipo de contido %(ct_id)s non existe\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"Os obxectos %(ct_name)s non teñen un método get_absolute_url()\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/he/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Meir Kriheli <mkriheli@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-21 10:49+0000\\n\"\n\"Last-Translator: Meir Kriheli <mkriheli@gmail.com>\\n\"\n\"Language-Team: Hebrew (http://www.transifex.com/projects/p/django/language/\"\n\"he/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: he\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"שם ה־class של מודל פייתון\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"סוג תוכן\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"סוגי תוכן\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"לא משוייך מודל לאובייקט מסוג התוכן  %(ct_id)s\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"אובייקט %(obj_id)s מסוג תוכן %(ct_id)s אינו קיים\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"אובייקטי %(ct_name)s אינם כוללים מתודת get_absolute_url()\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/hi/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# chandankumar(ciypro) <chandankumar.093047@gmail.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-15 13:09+0000\\n\"\n\"Last-Translator: Chandan kumar <chandankumar.093047@gmail.com>\\n\"\n\"Language-Team: Hindi (http://www.transifex.com/projects/p/django/language/\"\n\"hi/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: hi\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"पैथॉन मॉडल क्लास नाम\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"विषय-सूची प्रकार\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"विषय-सूचियाँ प्रकार\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"सामग्री प्रकार के  %(ct_id)s ऑब्जेक्ट कोई संबद्ध मॉडल नहीं है।\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"सामग्री प्रकार %(ct_id)s वस्तु %(obj_id)s मौजूद नहीं है.\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"%(ct_name)s वस्तुओं की get_absolute_url() विधि नहीं है.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/hr/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Bojan Mihelač <bmihelac@mihelac.org>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-22 11:06+0000\\n\"\n\"Last-Translator: Bojan Mihelač <bmihelac@mihelac.org>\\n\"\n\"Language-Team: Croatian (http://www.transifex.com/projects/p/django/language/\"\n\"hr/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: hr\\n\"\n\"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"ime klase (class) python modela\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"tip sadržaja\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"tipovi sadržaja\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"Tip sadržaja %(ct_id)s objekt nema pridruženi model\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"Tip sadržaja %(ct_id)s objekt  %(obj_id)s ne postoji\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"%(ct_name)s objekti nemaju get_absolute_url() metodu\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/hu/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Attila Nagy <>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-19 19:42+0000\\n\"\n\"Last-Translator: Attila Nagy <>\\n\"\n\"Language-Team: Hungarian (http://www.transifex.com/projects/p/django/\"\n\"language/hu/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: hu\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"python modell osztály neve\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"tartalom típusa\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"tartalom típusok\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"A %(ct_id)s tartalomtípus-objektumhoz nincsenek modellek hozzárendelve\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"%(ct_id)s tartalomtípus-objektum %(obj_id)s nem található\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"%(ct_name)s objektumoknak nincs get_absolute_url() metódusuk\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/ia/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Martijn Dekker <mcdutchie@hotmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-08-20 19:32+0000\\n\"\n\"Last-Translator: Martijn Dekker <mcdutchie@hotmail.com>\\n\"\n\"Language-Team: Interlingua (http://www.transifex.com/projects/p/django/\"\n\"language/ia/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ia\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"nomine del classe del modello Python\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"typo de contento\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"typos de contento\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"Le objecto del typo de contento %(ct_id)s non ha un modello associate\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"Le objecto %(obj_id)s del typo de contento %(ct_id)s non existe\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"Objectos %(ct_name)s non ha un methodo get_absolute_url()\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/id/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# rodin <romihardiyanto@gmail.com>, 2011.\n#   <romihardiyanto@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 11:45+0000\\n\"\n\"Last-Translator: rodin <romihardiyanto@gmail.com>\\n\"\n\"Language-Team: Indonesian (http://www.transifex.com/projects/p/django/\"\n\"language/id/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: id\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"nama kelas model python\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"tipe konten\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"tipe konten\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"Tipe konten objek %(ct_id)s tidak memiliki model yang terkait\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"Tipe konten %(ct_id)s objek %(obj_id)s tidak ada\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"Objek %(ct_name)s tidak memiliki metode get_absolute_url()\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/is/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Hafsteinn Einarsson <haffi67@gmail.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-19 14:48+0000\\n\"\n\"Last-Translator: Hafsteinn Einarsson <haffi67@gmail.com>\\n\"\n\"Language-Team: Icelandic (http://www.transifex.com/projects/p/django/\"\n\"language/is/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: is\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"python eininga klasa nafn\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"efnistag\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"efnistög\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"Gerð innihalds %(ct_id)s hefur ekkert tengt módel\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"Gerð innihalds %(ct_id)s hlutar %(obj_id)s er ekki til\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"%(ct_name)s hlutir hafa ekki get_absolute_url () aðferð\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/it/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Nicola Larosa <transifex@teknico.net>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 11:45+0000\\n\"\n\"Last-Translator: Nicola Larosa <transifex@teknico.net>\\n\"\n\"Language-Team: Italian (http://www.transifex.com/projects/p/django/language/\"\n\"it/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: it\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"nome della classe del modello Python\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"content type\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"content type\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"L'oggetto con content type %(ct_id)s non ha alcun modello associato\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"L'oggetto %(obj_id)s con content type %(ct_id)s non esiste\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"Gli oggetti %(ct_name)s non hanno un metodo get_absolute_url()\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/ja/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Shinya Okano <tokibito@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-04-06 09:53+0000\\n\"\n\"Last-Translator: Shinya Okano <tokibito@gmail.com>\\n\"\n\"Language-Team: Japanese (http://www.transifex.com/projects/p/django/language/\"\n\"ja/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ja\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"Python モデルクラス名\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"コンテンツタイプ\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"コンテンツタイプ\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"\"\n\"コンテンツタイプ %(ct_id)s のオブジェクトは、関連付けられたモデルを持っていま\"\n\"せん\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"コンテンツタイプ %(ct_id)s のオブジェクト %(obj_id)s は存在しません\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"\"\n\"%(ct_name)s のオブジェクトは get_absolute_url() メソッドを持っていません\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/ka/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Translators:\n# André Bouatchidzé <a@anbz.net>, 2013.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2013-03-01 08:10+0000\\n\"\n\"Last-Translator: André Bouatchidzé <a@anbz.net>\\n\"\n\"Language-Team: Georgian (http://www.transifex.com/projects/p/django/language/\"\n\"ka/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ka\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"python-ის მოდელის კლასის სახელი\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"კონტენტის ტიპი\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"კონტენტის ტიპები\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"კონტენტის ტიპის %(ct_id)s ობიექტს არ გააჩნია ასოცირებული მოდელი\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"კონტენტის ტიპის %(ct_id)s ობიექტი %(obj_id)s არ არსებობს\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"%(ct_name)s ობიექტებს არ გააჩნიათ მეთოდი get_absolute_url()\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/kk/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Nurlan Rakhimzhanov <nurlan.rakhimzhanov@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 11:45+0000\\n\"\n\"Last-Translator: Nurlan Rakhimzhanov <nurlan.rakhimzhanov@gmail.com>\\n\"\n\"Language-Team: Kazakh (http://www.transifex.com/projects/p/django/language/\"\n\"kk/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: kk\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"питонның үлгі классның аты\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"мазмұн түрі\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"мазмұн түрлері\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/km/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 11:45+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: English <en@li.org>\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: km\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"ឈ្មោះ python model class\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"ប្រភេទអត្ថន័យ\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"ប្រភេទអត្ថន័យ\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/kn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 11:45+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Kannada (http://www.transifex.com/projects/p/django/language/\"\n\"kn/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: kn\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"ಪೈಥಾನ್ ಮಾಡೆಲ್  ಕ್ಲಾಸಿನ ಹೆಸರು\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"ಒಳವಿಷಯದ ಬಗೆ\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"ಒಳವಿಷಯದ ಬಗೆಗಳು\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/ko/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 11:45+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Korean (http://www.transifex.com/projects/p/django/language/\"\n\"ko/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ko\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"python 모델 클래스 명\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"콘텐츠 타입\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"콘텐츠 타입(들)\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/lt/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Simonas Simas <simonas@kazlauskas.me>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-09 16:53+0000\\n\"\n\"Last-Translator: Simonas Kazlauskas <simonas@kazlauskas.me>\\n\"\n\"Language-Team: Lithuanian (http://www.transifex.com/projects/p/django/\"\n\"language/lt/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: lt\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n\"\n\"%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"python modelio klasės vardas\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"turinio tipas\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"turinio tipai\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"Tūrinio tipo %(ct_id)s objektas neturi priskirto modelio\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"Tūrinio tipo %(ct_id)s objektas %(obj_id)s neegzistuoja\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"%(ct_name)s objektai neturi get_absolute_url() metodo\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/lv/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 11:45+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Latvian (http://www.transifex.com/projects/p/django/language/\"\n\"lv/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: lv\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : \"\n\"2);\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"python modeļa klases nosaukums\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"satura tips\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"satura tipi\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/mk/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <vvangelovski@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-12 11:11+0000\\n\"\n\"Last-Translator: vvangelovski <vvangelovski@gmail.com>\\n\"\n\"Language-Team: Macedonian (http://www.transifex.com/projects/p/django/\"\n\"language/mk/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: mk\\n\"\n\"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"име на класата за python моделoт\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"тип на содржина\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"типови содржини\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"Типот на содржина %(ct_id)s објект нема асоциран модел\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"Типот на содржина %(ct_id)s објект %(obj_id)s не постои\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"%(ct_name)s објекти немаат get_absolute_url() метод\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/ml/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Rajeesh Nair <rajeeshrnair@gmail.com>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-04-17 18:21+0000\\n\"\n\"Last-Translator: Rajeesh Nair <rajeeshrnair@gmail.com>\\n\"\n\"Language-Team: Malayalam (http://www.transifex.com/projects/p/django/\"\n\"language/ml/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ml\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"പൈത്തണ്‍ മോഡല്‍  ക്ളാസ്സിന്റെ പേര്\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"ഏതു തരം ഉള്ളടക്കം\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"ഏതൊക്കെ തരം ഉള്ളടക്കം\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"കണ്ടന്റ് ടൈപ്പ് %(ct_id)s വസ്തുവിന് അനുബന്ധമായ മോഡല്‍ ഇല്ല.\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"കണ്ടന്റ് ടൈപ്പ് %(ct_id)s വസ്തു %(obj_id)s നിലവിലില്ല\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"%(ct_name)s വസ്തുക്കള്‍ക്ക് get_absolute_url() രീതി ഇല്ല.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/mn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Анхбаяр Анхаа <l.ankhbayar@gmail.com>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 11:45+0000\\n\"\n\"Last-Translator: Анхбаяр Анхаа <l.ankhbayar@gmail.com>\\n\"\n\"Language-Team: Mongolian (http://www.transifex.com/projects/p/django/\"\n\"language/mn/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: mn\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"пайтоны модел класын нэр\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"агуулгын төрөл\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"агуулгын төрлүүд\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"%(ct_id)s төрлийн холбоотой модель олдсонгүй\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"%(ct_id)s төрлийн %(obj_id)s id тай обект олдсонгүй\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"\"\n\"%(ct_name)s обектууд дээр get_absolute_url() функцийг тодохройлоогүй байна.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/nb/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <jonklo@gmail.com>, 2012.\n#   <sigurdga-transifex@sigurdga.no>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-12 14:51+0000\\n\"\n\"Last-Translator: Sigurd Gartmann <sigurdga-transifex@sigurdga.no>\\n\"\n\"Language-Team: Norwegian Bokmål (http://www.transifex.com/projects/p/django/\"\n\"language/nb/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: nb\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"python-modellklassenavn\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"innholdstype\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"innholdstyper\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"Innholdstype %(ct_id)s objekt har ingen assosiert model\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"Innholdstype %(ct_id)s objekt %(obj_id)s finnes ikke\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"%(ct_name)s-objekter har ikke get_absolute_url()-metode\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/ne/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Sagar Chalise <chalisesagar@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 11:45+0000\\n\"\n\"Last-Translator: Sagar Chalise <chalisesagar@gmail.com>\\n\"\n\"Language-Team: Nepali (http://www.transifex.com/projects/p/django/language/\"\n\"ne/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ne\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"पाइथन मोडेल क्लासको नाम\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"विषयको ढाँचा\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"विषयको ढाँचाहरु\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/nl/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Harro van der Klauw <hvdklauw@gmail.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 11:45+0000\\n\"\n\"Last-Translator: Harro van der Klauw <hvdklauw@gmail.com>\\n\"\n\"Language-Team: Dutch (http://www.transifex.com/projects/p/django/language/\"\n\"nl/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: nl\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"klassenaam van pythonmodel\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"inhoudstype\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"inhoudstypen\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"Content type %(ct_id)s object heeft geen bijbehorende model\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"Content type %(ct_id)s object %(obj_id)s bestaat niet\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"%(ct_name)s objecten niet over een get_absolute_url() methode\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/nn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 11:45+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Norwegian Nynorsk (http://www.transifex.com/projects/p/django/\"\n\"language/nn/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: nn\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"python-modell klassenamn\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"innhaldstype\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"innhaldstypar\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/pa/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 11:45+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Panjabi (Punjabi) (http://www.transifex.com/projects/p/django/\"\n\"language/pa/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: pa\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"ਪਾਈਥਨ ਮਾਡਲ ਕਲਾਸ ਨਾਂ\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"ਸਮੱਗਰੀ ਕਿਸਮ\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"ਸਮੱਗਰੀ ਕਿਸਮ\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/pl/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <angular.circle@gmail.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-12 00:32+0000\\n\"\n\"Last-Translator: angularcircle <angular.circle@gmail.com>\\n\"\n\"Language-Team: Polish (http://www.transifex.com/projects/p/django/language/\"\n\"pl/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: pl\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 \"\n\"|| n%100>=20) ? 1 : 2);\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"nazwa pythonowa modelu klasy\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"typ zawartości\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"typy zawartości\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"Obiekt typu zawartości %(ct_id)s nie posiada przypisanego modelu\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"Obiekt %(obj_id)s typu zawartości %(ct_id)s nie istnieje\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"Obiekty %(ct_name)s nie posiadają metody o nazwie get_absolute_url()\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/pt/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Nuno Mariz <nmariz@gmail.com>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-04-02 14:45+0000\\n\"\n\"Last-Translator: Nuno Mariz <nmariz@gmail.com>\\n\"\n\"Language-Team: Portuguese (http://www.transifex.com/projects/p/django/\"\n\"language/pt/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: pt\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"nome da classe do model em python\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"tipo de conteúdo\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"tipos de conteúdos\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"Objeto do tipo de conteúdo %(ct_id)s não tem nenhum model associado\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"Objeto %(obj_id)s do tipo de conteúdo %(ct_id)s não existe\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"Objetos %(ct_name)s não tem um método get_absolute_url()\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/pt_BR/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Guilherme Gondim <semente+transifex@taurinus.org>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-19 18:27+0000\\n\"\n\"Last-Translator: Guilherme Gondim <semente@taurinus.org>\\n\"\n\"Language-Team: Portuguese (Brazil) <django-l10n-portuguese@googlegroups.\"\n\"com>\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: pt_BR\\n\"\n\"Plural-Forms: nplurals=2; plural=(n > 1);\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"nome da classe model em python\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"tipo de conteúdo\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"tipos de conteúdo\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"Objeto do tipo de conteúdo %(ct_id)s não tem nenhum model associado\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"Objeto %(obj_id)s do tipo de conteúdo %(ct_id)s não existe\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"Objetos %(ct_name)s não tem um método get_absolute_url()\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/ro/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Daniel Ursache-Dogariu <contact@danniel.net>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 11:45+0000\\n\"\n\"Last-Translator: Daniel Ursache-Dogariu <contact@danniel.net>\\n\"\n\"Language-Team: Romanian (http://www.transifex.com/projects/p/django/language/\"\n\"ro/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ro\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?\"\n\"2:1));\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"nume clasă model Python\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"tip conținut\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"tipuri conținut\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/ru/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Eugene MechanisM <contact@mechanism.name>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Алексей Борискин <sun.void@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 11:45+0000\\n\"\n\"Last-Translator: Алексей Борискин <sun.void@gmail.com>\\n\"\n\"Language-Team: Russian (http://www.transifex.com/projects/p/django/language/\"\n\"ru/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ru\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"имя класса модели\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"тип содержимого\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"типы содержимого\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"Тип содержимого %(ct_id)s не имеет связанной модели\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"\"\n\"Объект с идентификатором %(obj_id)s, имеющий тип содержимого %(ct_id)s, не \"\n\"существует\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"Объекты типа \\\"%(ct_name)s\\\" не имеют метода get_absolute_url()\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/sk/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Marian Andre <marian@andre.sk>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-07-15 12:13+0000\\n\"\n\"Last-Translator: Marian Andre <marian@andre.sk>\\n\"\n\"Language-Team: Slovak (http://www.transifex.com/projects/p/django/language/\"\n\"sk/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sk\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"pythonovské meno triedy modelu\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"typ obsahu\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"typy obsahu\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"Objekt typu obsahu %(ct_id)s  nemá pridružený model\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"Objekt %(obj_id)s typu obsahu %(ct_id)s neexistuje\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \" Objekty %(ct_name)s neobsahujú metódu get_absolute_url()\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/sl/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Gašper Žejn <zejn@kiberpipa.org>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <zejn@kiberpipa.org>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-31 19:42+0000\\n\"\n\"Last-Translator: mateju <>\\n\"\n\"Language-Team: Slovenian (http://www.transifex.com/projects/p/django/\"\n\"language/sl/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sl\\n\"\n\"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n\"\n\"%100==4 ? 2 : 3);\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"ime razreda modela python\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"vrsta vsebine\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"vrste vsebine\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"Predmet vrste vsebine %(ct_id)s nima določenega povezanega modela\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"Predmet %(obj_id)s vrste %(ct_id)s ne obstaja\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"Predmeti vrste %(ct_name)s nimajo določila get_absolute_url()\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/sq/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Besnik <besnik@programeshqip.org>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-11-25 19:25+0000\\n\"\n\"Last-Translator: Besnik <besnik@programeshqip.org>\\n\"\n\"Language-Team: Albanian (http://www.transifex.com/projects/p/django/language/\"\n\"sq/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sq\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"emër klase modeli python\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"lloj lënde\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"lloje lënde\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"Objekti %(ct_id)s për lloj lënde nuk ka model të përshoqëruar\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"\"\n\"Objekti %(obj_id)s për lloj lënde %(ct_id)s nuk ka model të përshoqëruar\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"Objektet %(ct_name)s nuk përmbajnë ndonjë metodë get_absolute_url()\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/sr/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Janos Guljas <janos@resenje.org>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 11:45+0000\\n\"\n\"Last-Translator: Janos Guljas <janos@resenje.org>\\n\"\n\"Language-Team: Serbian (http://www.transifex.com/projects/p/django/language/\"\n\"sr/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sr\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"име python класе модела\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"тип садржаја\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"типови садржаја\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"Тип садржаја %(ct_id)s нема асоцирани модел\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"Тип садржаја %(ct_id)s објекта %(obj_id)s не постоји\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"Објекти %(ct_name)s немају метод get_absolute_url()\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/sr_Latn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Janos Guljas <janos@resenje.org>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 11:45+0000\\n\"\n\"Last-Translator: Janos Guljas <janos@resenje.org>\\n\"\n\"Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/django/\"\n\"language/sr@latin/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sr@latin\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"ime python klase modela\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"tip sadržaja\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"tipovi sadržaja\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"Tip sadržaja %(ct_id)s nema asocirani model\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"Tip sadržaja %(ct_id)s objekta %(obj_id)s ne postoji\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"Objekti %(ct_name)s nemaju metod get_absolute_url()\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/sv/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Andreas Pelme <andreas@pelme.se>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 11:45+0000\\n\"\n\"Last-Translator: Andreas Pelme <andreas@pelme.se>\\n\"\n\"Language-Team: Swedish (http://www.transifex.com/projects/p/django/language/\"\n\"sv/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sv\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"klassnamn för Python-modell\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"innehålls typ\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"innehållstyper\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"Innehållstypens %(ct_id)s har ingen associerad modell.\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"Innehållstypens %(ct_id)s objekt %(obj_id)s finns inte\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"%(ct_name)s objekt har inte en get_absolute_url()-metod\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/sw/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-09 16:10+0000\\n\"\n\"Last-Translator: machaku <bmachaku@gmail.com>\\n\"\n\"Language-Team: Swahili (http://www.transifex.com/projects/p/django/language/\"\n\"sw/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sw\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"aina ya maudhui\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"aina ya maudhui\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/ta/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 11:45+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Tamil (http://www.transifex.com/projects/p/django/language/\"\n\"ta/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ta\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"python model class name\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"பொருளடக்க வகை\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"பொருளடக்க வகைகள்\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/te/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 11:45+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Telugu (http://www.transifex.com/projects/p/django/language/\"\n\"te/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: te\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"పైతాన్ మొడల్ క్లాస్  పేరు\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"సూచన రకం\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"సూచన రకాలు\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/th/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Kowit Charoenratchatabhan <kowito@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-09 03:09+0000\\n\"\n\"Last-Translator: Kowit Charoenratchatabhan <kowit.s.c@gmail.com>\\n\"\n\"Language-Team: Thai (http://www.transifex.com/projects/p/django/language/\"\n\"th/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: th\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"python model class name\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"content type\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"content types\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"ประเภทของเนื้อหา %(ct_id)s ไม่มีอ็อบเจ็กที่มีรูปแบบที่เกี่ยวข้อง\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"ไม่มีประเภทของเนื้อหา %(ct_id)s วัตถุ %(obj_id)s\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"%(ct_name)s ไม่มีเมธอด get_absolute_url()\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/tr/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Murat Çorlu <muratcorlu@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 20:31+0000\\n\"\n\"Last-Translator: Murat Çorlu <muratcorlu@gmail.com>\\n\"\n\"Language-Team: Turkish (http://www.transifex.com/projects/p/django/language/\"\n\"tr/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: tr\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"python model sınıf adı\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"içerik türü\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"içerik türleri\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"%(ct_id)s içerik türü hiç bir model ile ilişkilendirilmemiş\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"%(ct_id)s nolu içerik türünün %(obj_id)s nolu objesi yok\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"%(ct_name)s objeleri bir get_absolute_url() metoduna sahip değiller\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/tt/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Azat Khasanshin <lordofbazuks@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 11:45+0000\\n\"\n\"Last-Translator: Azat Khasanshin <lordofbazuks@gmail.com>\\n\"\n\"Language-Team: Tatar (http://www.transifex.com/projects/p/django/language/\"\n\"tt/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: tt\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"модель классының исеме\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"эчтәлек тибы\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"эчтәлек тиблары\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/uk/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Sergey Lysach <sergikoff88@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-11 17:02+0000\\n\"\n\"Last-Translator: Sergey Lysach <sergikoff88@gmail.com>\\n\"\n\"Language-Team: Ukrainian (http://www.transifex.com/projects/p/django/\"\n\"language/uk/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: uk\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"ім'я класу моделі\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"тип вмісту\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"типи вмісту\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"Тип вмісту %(ct_id)s не має пов'язанної моделі\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"\"\n\"Об'єкт з ідентифікатором %(ct_id)s, що має тип вмісту %(obj_id)s не існує\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"Об'єкт типу %(ct_name)s не має методу get_absolute_url()\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/ur/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Mansoorulhaq Mansoor <mansoorulhaq1986@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 11:45+0000\\n\"\n\"Last-Translator: Mansoorulhaq Mansoor <mansoorulhaq1986@gmail.com>\\n\"\n\"Language-Team: Urdu (http://www.transifex.com/projects/p/django/language/\"\n\"ur/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ur\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"پائثان کے ماڈل کی کلاس کا نام\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"مضمون کی قسم\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"مضمون کی اقسام\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/vi/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Tran  <hongdiepkien@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 11:45+0000\\n\"\n\"Last-Translator: Tran <hongdiepkien@gmail.com>\\n\"\n\"Language-Team: Vietnamese (http://www.transifex.com/projects/p/django/\"\n\"language/vi/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: vi\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"tên lớp mô hình python\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"kiểu nội dung\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"kiểu nội dung\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/zh_CN/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Kevin Shi <leiarix@gmail.com>, 2012.\n# slene <vslene@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-08-26 01:37+0000\\n\"\n\"Last-Translator: 磊 施 <leiarix@gmail.com>\\n\"\n\"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/django/\"\n\"language/zh_CN/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: zh_CN\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"python 模型类名\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"内容类型\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"内容类型\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"内容类型 %(ct_id)s 对象没有关联的模型\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"内容类型 %(ct_id)s 对象 %(obj_id)s 不存在\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"%(ct_name)s 对象没有 a get_absolute_url() 方法\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/locale/zh_TW/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <ilay@ilay.tw>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-08-06 02:26+0000\\n\"\n\"Last-Translator: ilay <ilay@ilay.tw>\\n\"\n\"Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/django/\"\n\"language/zh_TW/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: zh_TW\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: models.py:130\nmsgid \"python model class name\"\nmsgstr \"python 模組名稱\"\n\n#: models.py:134\nmsgid \"content type\"\nmsgstr \"內容類型\"\n\n#: models.py:135\nmsgid \"content types\"\nmsgstr \"內容類型\"\n\n#: views.py:17\n#, python-format\nmsgid \"Content type %(ct_id)s object has no associated model\"\nmsgstr \"內容類型 %(ct_id)s 的物件沒有關聯的資料模型\"\n\n#: views.py:21\n#, python-format\nmsgid \"Content type %(ct_id)s object %(obj_id)s doesn't exist\"\nmsgstr \"內容類型 %(ct_id)s 的物件 %(obj_id)s 不存在\"\n\n#: views.py:27\n#, python-format\nmsgid \"%(ct_name)s objects don't have a get_absolute_url() method\"\nmsgstr \"%(ct_name)s 的物件沒有 get_absolute_url() 方法\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/management.py",
    "content": "from django.contrib.contenttypes.models import ContentType\nfrom django.db import DEFAULT_DB_ALIAS, router\nfrom django.db.models import get_apps, get_models, signals\nfrom django.utils.encoding import smart_text\nfrom django.utils import six\nfrom django.utils.six.moves import input\n\n\ndef update_contenttypes(app, created_models, verbosity=2, db=DEFAULT_DB_ALIAS, **kwargs):\n    \"\"\"\n    Creates content types for models in the given app, removing any model\n    entries that no longer have a matching model class.\n    \"\"\"\n    if not router.allow_syncdb(db, ContentType):\n        return\n\n    ContentType.objects.clear_cache()\n    app_models = get_models(app)\n    if not app_models:\n        return\n    # They all have the same app_label, get the first one.\n    app_label = app_models[0]._meta.app_label\n    app_models = dict(\n        (model._meta.object_name.lower(), model)\n        for model in app_models\n    )\n\n    # Get all the content types\n    content_types = dict(\n        (ct.model, ct)\n        for ct in ContentType.objects.using(db).filter(app_label=app_label)\n    )\n    to_remove = [\n        ct\n        for (model_name, ct) in six.iteritems(content_types)\n        if model_name not in app_models\n    ]\n\n    cts = [\n        ContentType(\n            name=smart_text(model._meta.verbose_name_raw),\n            app_label=app_label,\n            model=model_name,\n        )\n        for (model_name, model) in six.iteritems(app_models)\n        if model_name not in content_types\n    ]\n    ContentType.objects.using(db).bulk_create(cts)\n    if verbosity >= 2:\n        for ct in cts:\n            print(\"Adding content type '%s | %s'\" % (ct.app_label, ct.model))\n\n    # Confirm that the content type is stale before deletion.\n    if to_remove:\n        if kwargs.get('interactive', False):\n            content_type_display = '\\n'.join([\n                '    %s | %s' % (ct.app_label, ct.model)\n                for ct in to_remove\n            ])\n            ok_to_delete = input(\"\"\"The following content types are stale and need to be deleted:\n\n%s\n\nAny objects related to these content types by a foreign key will also\nbe deleted. Are you sure you want to delete these content types?\nIf you're unsure, answer 'no'.\n\n    Type 'yes' to continue, or 'no' to cancel: \"\"\" % content_type_display)\n        else:\n            ok_to_delete = False\n\n        if ok_to_delete == 'yes':\n            for ct in to_remove:\n                if verbosity >= 2:\n                    print(\"Deleting stale content type '%s | %s'\" % (ct.app_label, ct.model))\n                ct.delete()\n        else:\n            if verbosity >= 2:\n                print(\"Stale content types remain.\")\n\n\ndef update_all_contenttypes(verbosity=2, **kwargs):\n    for app in get_apps():\n        update_contenttypes(app, None, verbosity, **kwargs)\n\nsignals.post_syncdb.connect(update_contenttypes)\n\nif __name__ == \"__main__\":\n    update_all_contenttypes()\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/models.py",
    "content": "from django.db import models\nfrom django.utils.translation import ugettext_lazy as _\nfrom django.utils.encoding import smart_text, force_text\nfrom django.utils.encoding import python_2_unicode_compatible\n\nclass ContentTypeManager(models.Manager):\n\n    # Cache to avoid re-looking up ContentType objects all over the place.\n    # This cache is shared by all the get_for_* methods.\n    _cache = {}\n\n    def get_by_natural_key(self, app_label, model):\n        try:\n            ct = self.__class__._cache[self.db][(app_label, model)]\n        except KeyError:\n            ct = self.get(app_label=app_label, model=model)\n            self._add_to_cache(self.db, ct)\n        return ct\n\n    def _get_opts(self, model, for_concrete_model):\n        if for_concrete_model:\n            model = model._meta.concrete_model\n        elif model._deferred:\n            model = model._meta.proxy_for_model\n        return model._meta\n\n    def _get_from_cache(self, opts):\n        key = (opts.app_label, opts.object_name.lower())\n        return self.__class__._cache[self.db][key]\n\n    def get_for_model(self, model, for_concrete_model=True):\n        \"\"\"\n        Returns the ContentType object for a given model, creating the\n        ContentType if necessary. Lookups are cached so that subsequent lookups\n        for the same model don't hit the database.\n        \"\"\"\n        opts = self._get_opts(model, for_concrete_model)\n        try:\n            ct = self._get_from_cache(opts)\n        except KeyError:\n            # Load or create the ContentType entry. The smart_text() is\n            # needed around opts.verbose_name_raw because name_raw might be a\n            # django.utils.functional.__proxy__ object.\n            ct, created = self.get_or_create(\n                app_label = opts.app_label,\n                model = opts.object_name.lower(),\n                defaults = {'name': smart_text(opts.verbose_name_raw)},\n            )\n            self._add_to_cache(self.db, ct)\n\n        return ct\n\n    def get_for_models(self, *models, **kwargs):\n        \"\"\"\n        Given *models, returns a dictionary mapping {model: content_type}.\n        \"\"\"\n        for_concrete_models = kwargs.pop('for_concrete_models', True)\n        # Final results\n        results = {}\n        # models that aren't already in the cache\n        needed_app_labels = set()\n        needed_models = set()\n        needed_opts = set()\n        for model in models:\n            opts = self._get_opts(model, for_concrete_models)\n            try:\n                ct = self._get_from_cache(opts)\n            except KeyError:\n                needed_app_labels.add(opts.app_label)\n                needed_models.add(opts.object_name.lower())\n                needed_opts.add(opts)\n            else:\n                results[model] = ct\n        if needed_opts:\n            cts = self.filter(\n                app_label__in=needed_app_labels,\n                model__in=needed_models\n            )\n            for ct in cts:\n                model = ct.model_class()\n                if model._meta in needed_opts:\n                    results[model] = ct\n                    needed_opts.remove(model._meta)\n                self._add_to_cache(self.db, ct)\n        for opts in needed_opts:\n            # These weren't in the cache, or the DB, create them.\n            ct = self.create(\n                app_label=opts.app_label,\n                model=opts.object_name.lower(),\n                name=smart_text(opts.verbose_name_raw),\n            )\n            self._add_to_cache(self.db, ct)\n            results[ct.model_class()] = ct\n        return results\n\n    def get_for_id(self, id):\n        \"\"\"\n        Lookup a ContentType by ID. Uses the same shared cache as get_for_model\n        (though ContentTypes are obviously not created on-the-fly by get_by_id).\n        \"\"\"\n        try:\n            ct = self.__class__._cache[self.db][id]\n        except KeyError:\n            # This could raise a DoesNotExist; that's correct behavior and will\n            # make sure that only correct ctypes get stored in the cache dict.\n            ct = self.get(pk=id)\n            self._add_to_cache(self.db, ct)\n        return ct\n\n    def clear_cache(self):\n        \"\"\"\n        Clear out the content-type cache. This needs to happen during database\n        flushes to prevent caching of \"stale\" content type IDs (see\n        django.contrib.contenttypes.management.update_contenttypes for where\n        this gets called).\n        \"\"\"\n        self.__class__._cache.clear()\n\n    def _add_to_cache(self, using, ct):\n        \"\"\"Insert a ContentType into the cache.\"\"\"\n        model = ct.model_class()\n        key = (model._meta.app_label, model._meta.object_name.lower())\n        self.__class__._cache.setdefault(using, {})[key] = ct\n        self.__class__._cache.setdefault(using, {})[ct.id] = ct\n\n@python_2_unicode_compatible\nclass ContentType(models.Model):\n    name = models.CharField(max_length=100)\n    app_label = models.CharField(max_length=100)\n    model = models.CharField(_('python model class name'), max_length=100)\n    objects = ContentTypeManager()\n\n    class Meta:\n        verbose_name = _('content type')\n        verbose_name_plural = _('content types')\n        db_table = 'django_content_type'\n        ordering = ('name',)\n        unique_together = (('app_label', 'model'),)\n\n    def __str__(self):\n        # self.name is deprecated in favor of using model's verbose_name, which\n        # can be translated. Formal deprecation is delayed until we have DB\n        # migration to be able to remove the field from the database along with\n        # the attribute.\n        #\n        # We return self.name only when users have changed its value from the\n        # initial verbose_name_raw and might rely on it.\n        model = self.model_class()\n        if not model or self.name != model._meta.verbose_name_raw:\n            return self.name\n        else:\n            return force_text(model._meta.verbose_name)\n\n    def model_class(self):\n        \"Returns the Python model class for this type of content.\"\n        from django.db import models\n        return models.get_model(self.app_label, self.model,\n                                only_installed=False)\n\n    def get_object_for_this_type(self, **kwargs):\n        \"\"\"\n        Returns an object of this type for the keyword arguments given.\n        Basically, this is a proxy around this object_type's get_object() model\n        method. The ObjectNotExist exception, if thrown, will not be caught,\n        so code that calls this method should catch it.\n        \"\"\"\n        return self.model_class()._base_manager.using(self._state.db).get(**kwargs)\n\n    def get_all_objects_for_this_type(self, **kwargs):\n        \"\"\"\n        Returns all objects of this type for the keyword arguments given.\n        \"\"\"\n        return self.model_class()._base_manager.using(self._state.db).filter(**kwargs)\n\n    def natural_key(self):\n        return (self.app_label, self.model)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/tests.py",
    "content": "from __future__ import unicode_literals\n\nfrom django.db import models\nfrom django.contrib.contenttypes.models import ContentType\nfrom django.contrib.contenttypes.views import shortcut\nfrom django.contrib.sites.models import Site, get_current_site\nfrom django.http import HttpRequest, Http404\nfrom django.test import TestCase\nfrom django.test.utils import override_settings\nfrom django.utils.http import urlquote\nfrom django.utils import six\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\nclass ConcreteModel(models.Model):\n    name = models.CharField(max_length=10)\n\nclass ProxyModel(ConcreteModel):\n    class Meta:\n        proxy = True\n\n@python_2_unicode_compatible\nclass FooWithoutUrl(models.Model):\n    \"\"\"\n    Fake model not defining ``get_absolute_url`` for\n    :meth:`ContentTypesTests.test_shortcut_view_without_get_absolute_url`\"\"\"\n    name = models.CharField(max_length=30, unique=True)\n\n    def __str__(self):\n        return self.name\n\n\nclass FooWithUrl(FooWithoutUrl):\n    \"\"\"\n    Fake model defining ``get_absolute_url`` for\n    :meth:`ContentTypesTests.test_shortcut_view`\n    \"\"\"\n\n    def get_absolute_url(self):\n        return \"/users/%s/\" % urlquote(self.name)\n\nclass FooWithBrokenAbsoluteUrl(FooWithoutUrl):\n    \"\"\"\n    Fake model defining a ``get_absolute_url`` method containing an error\n    \"\"\"\n\n    def get_absolute_url(self):\n        return \"/users/%s/\" % self.unknown_field\n\nclass ContentTypesTests(TestCase):\n\n    def setUp(self):\n        self.old_Site_meta_installed = Site._meta.installed\n        ContentType.objects.clear_cache()\n\n    def tearDown(self):\n        Site._meta.installed = self.old_Site_meta_installed\n        ContentType.objects.clear_cache()\n\n    def test_lookup_cache(self):\n        \"\"\"\n        Make sure that the content type cache (see ContentTypeManager)\n        works correctly. Lookups for a particular content type -- by model, ID\n        or natural key -- should hit the database only on the first lookup.\n        \"\"\"\n\n        # At this point, a lookup for a ContentType should hit the DB\n        with self.assertNumQueries(1):\n            ContentType.objects.get_for_model(ContentType)\n\n        # A second hit, though, won't hit the DB, nor will a lookup by ID\n        # or natural key\n        with self.assertNumQueries(0):\n            ct = ContentType.objects.get_for_model(ContentType)\n        with self.assertNumQueries(0):\n            ContentType.objects.get_for_id(ct.id)\n        with self.assertNumQueries(0):\n            ContentType.objects.get_by_natural_key('contenttypes',\n                                                   'contenttype')\n\n        # Once we clear the cache, another lookup will again hit the DB\n        ContentType.objects.clear_cache()\n        with self.assertNumQueries(1):\n            ContentType.objects.get_for_model(ContentType)\n\n        # The same should happen with a lookup by natural key\n        ContentType.objects.clear_cache()\n        with self.assertNumQueries(1):\n            ContentType.objects.get_by_natural_key('contenttypes',\n                                                   'contenttype')\n        # And a second hit shouldn't hit the DB\n        with self.assertNumQueries(0):\n            ContentType.objects.get_by_natural_key('contenttypes',\n                                                   'contenttype')\n\n    def test_get_for_models_empty_cache(self):\n        # Empty cache.\n        with self.assertNumQueries(1):\n            cts = ContentType.objects.get_for_models(ContentType, FooWithUrl)\n        self.assertEqual(cts, {\n            ContentType: ContentType.objects.get_for_model(ContentType),\n            FooWithUrl: ContentType.objects.get_for_model(FooWithUrl),\n        })\n\n    def test_get_for_models_partial_cache(self):\n        # Partial cache\n        ContentType.objects.get_for_model(ContentType)\n        with self.assertNumQueries(1):\n            cts = ContentType.objects.get_for_models(ContentType, FooWithUrl)\n        self.assertEqual(cts, {\n            ContentType: ContentType.objects.get_for_model(ContentType),\n            FooWithUrl: ContentType.objects.get_for_model(FooWithUrl),\n        })\n\n    def test_get_for_models_full_cache(self):\n        # Full cache\n        ContentType.objects.get_for_model(ContentType)\n        ContentType.objects.get_for_model(FooWithUrl)\n        with self.assertNumQueries(0):\n            cts = ContentType.objects.get_for_models(ContentType, FooWithUrl)\n        self.assertEqual(cts, {\n            ContentType: ContentType.objects.get_for_model(ContentType),\n            FooWithUrl: ContentType.objects.get_for_model(FooWithUrl),\n        })\n\n    def test_get_for_concrete_model(self):\n        \"\"\"\n        Make sure the `for_concrete_model` kwarg correctly works\n        with concrete, proxy and deferred models\n        \"\"\"\n        concrete_model_ct = ContentType.objects.get_for_model(ConcreteModel)\n\n        self.assertEqual(concrete_model_ct,\n            ContentType.objects.get_for_model(ProxyModel))\n\n        self.assertEqual(concrete_model_ct,\n            ContentType.objects.get_for_model(ConcreteModel,\n                                              for_concrete_model=False))\n\n        proxy_model_ct = ContentType.objects.get_for_model(ProxyModel,\n                                                           for_concrete_model=False)\n\n        self.assertNotEqual(concrete_model_ct, proxy_model_ct)\n\n        # Make sure deferred model are correctly handled\n        ConcreteModel.objects.create(name=\"Concrete\")\n        DeferredConcreteModel = ConcreteModel.objects.only('pk').get().__class__\n        DeferredProxyModel = ProxyModel.objects.only('pk').get().__class__\n\n        self.assertEqual(concrete_model_ct,\n            ContentType.objects.get_for_model(DeferredConcreteModel))\n\n        self.assertEqual(concrete_model_ct,\n            ContentType.objects.get_for_model(DeferredConcreteModel,\n                                              for_concrete_model=False))\n\n        self.assertEqual(concrete_model_ct,\n            ContentType.objects.get_for_model(DeferredProxyModel))\n\n        self.assertEqual(proxy_model_ct,\n            ContentType.objects.get_for_model(DeferredProxyModel,\n                                              for_concrete_model=False))\n\n    def test_get_for_concrete_models(self):\n        \"\"\"\n        Make sure the `for_concrete_models` kwarg correctly works\n        with concrete, proxy and deferred models.\n        \"\"\"\n        concrete_model_ct = ContentType.objects.get_for_model(ConcreteModel)\n\n        cts = ContentType.objects.get_for_models(ConcreteModel, ProxyModel)\n        self.assertEqual(cts, {\n            ConcreteModel: concrete_model_ct,\n            ProxyModel: concrete_model_ct,\n        })\n\n        proxy_model_ct = ContentType.objects.get_for_model(ProxyModel,\n                                                           for_concrete_model=False)\n        cts = ContentType.objects.get_for_models(ConcreteModel, ProxyModel,\n                                                 for_concrete_models=False)\n        self.assertEqual(cts, {\n            ConcreteModel: concrete_model_ct,\n            ProxyModel: proxy_model_ct,\n        })\n\n        # Make sure deferred model are correctly handled\n        ConcreteModel.objects.create(name=\"Concrete\")\n        DeferredConcreteModel = ConcreteModel.objects.only('pk').get().__class__\n        DeferredProxyModel = ProxyModel.objects.only('pk').get().__class__\n\n        cts = ContentType.objects.get_for_models(DeferredConcreteModel,\n                                                 DeferredProxyModel)\n        self.assertEqual(cts, {\n            DeferredConcreteModel: concrete_model_ct,\n            DeferredProxyModel: concrete_model_ct,\n        })\n\n        cts = ContentType.objects.get_for_models(DeferredConcreteModel,\n                                                 DeferredProxyModel,\n                                                 for_concrete_models=False)\n        self.assertEqual(cts, {\n            DeferredConcreteModel: concrete_model_ct,\n            DeferredProxyModel: proxy_model_ct,\n        })\n\n\n    @override_settings(ALLOWED_HOSTS=['example.com'])\n    def test_shortcut_view(self):\n        \"\"\"\n        Check that the shortcut view (used for the admin \"view on site\"\n        functionality) returns a complete URL regardless of whether the sites\n        framework is installed\n        \"\"\"\n\n        request = HttpRequest()\n        request.META = {\n            \"SERVER_NAME\": \"Example.com\",\n            \"SERVER_PORT\": \"80\",\n        }\n        user_ct = ContentType.objects.get_for_model(FooWithUrl)\n        obj = FooWithUrl.objects.create(name=\"john\")\n\n        if Site._meta.installed:\n            response = shortcut(request, user_ct.id, obj.id)\n            self.assertEqual(\"http://%s/users/john/\" % get_current_site(request).domain,\n                             response._headers.get(\"location\")[1])\n\n        Site._meta.installed = False\n        response = shortcut(request, user_ct.id, obj.id)\n        self.assertEqual(\"http://Example.com/users/john/\",\n                         response._headers.get(\"location\")[1])\n\n    def test_shortcut_view_without_get_absolute_url(self):\n        \"\"\"\n        Check that the shortcut view (used for the admin \"view on site\"\n        functionality) returns 404 when get_absolute_url is not defined.\n        \"\"\"\n\n        request = HttpRequest()\n        request.META = {\n            \"SERVER_NAME\": \"Example.com\",\n            \"SERVER_PORT\": \"80\",\n        }\n        user_ct = ContentType.objects.get_for_model(FooWithoutUrl)\n        obj = FooWithoutUrl.objects.create(name=\"john\")\n\n        self.assertRaises(Http404, shortcut, request, user_ct.id, obj.id)\n\n    def test_shortcut_view_with_broken_get_absolute_url(self):\n        \"\"\"\n        Check that the shortcut view does not catch an AttributeError raised\n        by the model's get_absolute_url method.\n        Refs #8997.\n        \"\"\"\n        request = HttpRequest()\n        request.META = {\n            \"SERVER_NAME\": \"Example.com\",\n            \"SERVER_PORT\": \"80\",\n        }\n        user_ct = ContentType.objects.get_for_model(FooWithBrokenAbsoluteUrl)\n        obj = FooWithBrokenAbsoluteUrl.objects.create(name=\"john\")\n\n        self.assertRaises(AttributeError, shortcut, request, user_ct.id, obj.id)\n\n    def test_missing_model(self):\n        \"\"\"\n        Ensures that displaying content types in admin (or anywhere) doesn't\n        break on leftover content type records in the DB for which no model\n        is defined anymore.\n        \"\"\"\n        ct = ContentType.objects.create(\n            name = 'Old model',\n            app_label = 'contenttypes',\n            model = 'OldModel',\n        )\n        self.assertEqual(six.text_type(ct), 'Old model')\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/contenttypes/views.py",
    "content": "from __future__ import unicode_literals\n\nfrom django import http\nfrom django.contrib.contenttypes.models import ContentType\nfrom django.contrib.sites.models import Site, get_current_site\nfrom django.core.exceptions import ObjectDoesNotExist\nfrom django.utils.translation import ugettext as _\n\ndef shortcut(request, content_type_id, object_id):\n    \"\"\"\n    Redirect to an object's page based on a content-type ID and an object ID.\n    \"\"\"\n    # Look up the object, making sure it's got a get_absolute_url() function.\n    try:\n        content_type = ContentType.objects.get(pk=content_type_id)\n        if not content_type.model_class():\n            raise http.Http404(_(\"Content type %(ct_id)s object has no associated model\") %\n                               {'ct_id': content_type_id})\n        obj = content_type.get_object_for_this_type(pk=object_id)\n    except (ObjectDoesNotExist, ValueError):\n        raise http.Http404(_(\"Content type %(ct_id)s object %(obj_id)s doesn't exist\") %\n                           {'ct_id': content_type_id, 'obj_id': object_id})\n\n    try:\n        get_absolute_url = obj.get_absolute_url\n    except AttributeError:\n        raise http.Http404(_(\"%(ct_name)s objects don't have a get_absolute_url() method\") %\n                           {'ct_name': content_type.name})\n    absurl = get_absolute_url()\n\n    # Try to figure out the object's domain, so we can do a cross-site redirect\n    # if necessary.\n\n    # If the object actually defines a domain, we're done.\n    if absurl.startswith('http://') or absurl.startswith('https://'):\n        return http.HttpResponseRedirect(absurl)\n\n    # Otherwise, we need to introspect the object's relationships for a\n    # relation to the Site object\n    object_domain = None\n\n    if Site._meta.installed:\n        opts = obj._meta\n\n        # First, look for an many-to-many relationship to Site.\n        for field in opts.many_to_many:\n            if field.rel.to is Site:\n                try:\n                    # Caveat: In the case of multiple related Sites, this just\n                    # selects the *first* one, which is arbitrary.\n                    object_domain = getattr(obj, field.name).all()[0].domain\n                except IndexError:\n                    pass\n                if object_domain is not None:\n                    break\n\n        # Next, look for a many-to-one relationship to Site.\n        if object_domain is None:\n            for field in obj._meta.fields:\n                if field.rel and field.rel.to is Site:\n                    try:\n                        object_domain = getattr(obj, field.name).domain\n                    except Site.DoesNotExist:\n                        pass\n                    if object_domain is not None:\n                        break\n\n    # Fall back to the current site (if possible).\n    if object_domain is None:\n        try:\n            object_domain = get_current_site(request).domain\n        except Site.DoesNotExist:\n            pass\n\n    # If all that malarkey found an object domain, use it. Otherwise, fall back\n    # to whatever get_absolute_url() returned.\n    if object_domain is not None:\n        protocol = request.is_secure() and 'https' or 'http'\n        return http.HttpResponseRedirect('%s://%s%s'\n                                         % (protocol, object_domain, absurl))\n    else:\n        return http.HttpResponseRedirect(absurl)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/databrowse/__init__.py",
    "content": "import warnings\nfrom django.contrib.databrowse.sites import DatabrowsePlugin, ModelDatabrowse, DatabrowseSite, site\n\n\nwarnings.warn(\"The Databrowse contrib app is deprecated\", DeprecationWarning)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/databrowse/datastructures.py",
    "content": "\"\"\"\nThese classes are light wrappers around Django's database API that provide\nconvenience functionality and permalink functions for the databrowse app.\n\"\"\"\nfrom __future__ import unicode_literals\n\nfrom django.db import models\nfrom django.utils import formats\nfrom django.utils.text import capfirst\nfrom django.utils.encoding import smart_text, force_str, iri_to_uri\nfrom django.db.models.query import QuerySet\nfrom django.utils.encoding import python_2_unicode_compatible\n\nEMPTY_VALUE = '(None)'\nDISPLAY_SIZE = 100\n\nclass EasyModel(object):\n    def __init__(self, site, model):\n        self.site = site\n        self.model = model\n        self.model_list = list(site.registry.keys())\n        self.verbose_name = model._meta.verbose_name\n        self.verbose_name_plural = model._meta.verbose_name_plural\n\n    def __repr__(self):\n        return force_str('<EasyModel for %s>' % self.model._meta.object_name)\n\n    def model_databrowse(self):\n        \"Returns the ModelDatabrowse class for this model.\"\n        return self.site.registry[self.model]\n\n    def url(self):\n        return '%s%s/%s/' % (self.site.root_url, self.model._meta.app_label, self.model._meta.module_name)\n\n    def objects(self, **kwargs):\n        return self.get_query_set().filter(**kwargs)\n\n    def get_query_set(self):\n        easy_qs = self.model._default_manager.get_query_set()._clone(klass=EasyQuerySet)\n        easy_qs._easymodel = self\n        return easy_qs\n\n    def object_by_pk(self, pk):\n        return EasyInstance(self, self.model._default_manager.get(pk=pk))\n\n    def sample_objects(self):\n        for obj in self.model._default_manager.all()[:3]:\n            yield EasyInstance(self, obj)\n\n    def field(self, name):\n        try:\n            f = self.model._meta.get_field(name)\n        except models.FieldDoesNotExist:\n            return None\n        return EasyField(self, f)\n\n    def fields(self):\n        return [EasyField(self, f) for f in (self.model._meta.fields + self.model._meta.many_to_many)]\n\nclass EasyField(object):\n    def __init__(self, easy_model, field):\n        self.model, self.field = easy_model, field\n\n    def __repr__(self):\n        return force_str('<EasyField for %s.%s>' % (self.model.model._meta.object_name, self.field.name))\n\n    def choices(self):\n        for value, label in self.field.choices:\n            yield EasyChoice(self.model, self, value, label)\n\n    def url(self):\n        if self.field.choices:\n            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)\n        elif self.field.rel:\n            return '%s%s/%s/' % (self.model.site.root_url, self.model.model._meta.app_label, self.model.model._meta.module_name)\n\nclass EasyChoice(object):\n    def __init__(self, easy_model, field, value, label):\n        self.model, self.field = easy_model, field\n        self.value, self.label = value, label\n\n    def __repr__(self):\n        return force_str('<EasyChoice for %s.%s>' % (self.model.model._meta.object_name, self.field.name))\n\n    def url(self):\n        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, iri_to_uri(self.value))\n\n@python_2_unicode_compatible\nclass EasyInstance(object):\n    def __init__(self, easy_model, instance):\n        self.model, self.instance = easy_model, instance\n\n    def __repr__(self):\n        return force_str('<EasyInstance for %s (%s)>' % (self.model.model._meta.object_name, self.instance._get_pk_val()))\n\n    def __str__(self):\n        val = smart_text(self.instance)\n        if len(val) > DISPLAY_SIZE:\n            return val[:DISPLAY_SIZE] + '...'\n        return val\n\n    def pk(self):\n        return self.instance._get_pk_val()\n\n    def url(self):\n        return '%s%s/%s/objects/%s/' % (self.model.site.root_url, self.model.model._meta.app_label, self.model.model._meta.module_name, iri_to_uri(self.pk()))\n\n    def fields(self):\n        \"\"\"\n        Generator that yields EasyInstanceFields for each field in this\n        EasyInstance's model.\n        \"\"\"\n        for f in self.model.model._meta.fields + self.model.model._meta.many_to_many:\n            yield EasyInstanceField(self.model, self, f)\n\n    def related_objects(self):\n        \"\"\"\n        Generator that yields dictionaries of all models that have this\n        EasyInstance's model as a ForeignKey or ManyToManyField, along with\n        lists of related objects.\n        \"\"\"\n        for rel_object in self.model.model._meta.get_all_related_objects() + self.model.model._meta.get_all_related_many_to_many_objects():\n            if rel_object.model not in self.model.model_list:\n                continue # Skip models that aren't in the model_list\n            em = EasyModel(self.model.site, rel_object.model)\n            yield {\n                'model': em,\n                'related_field': rel_object.field.verbose_name,\n                'object_list': [EasyInstance(em, i) for i in getattr(self.instance, rel_object.get_accessor_name()).all()],\n            }\n\nclass EasyInstanceField(object):\n    def __init__(self, easy_model, instance, field):\n        self.model, self.field, self.instance = easy_model, field, instance\n        self.raw_value = getattr(instance.instance, field.name)\n\n    def __repr__(self):\n        return force_str('<EasyInstanceField for %s.%s>' % (self.model.model._meta.object_name, self.field.name))\n\n    def values(self):\n        \"\"\"\n        Returns a list of values for this field for this instance. It's a list\n        so we can accomodate many-to-many fields.\n        \"\"\"\n        # This import is deliberately inside the function because it causes\n        # some settings to be imported, and we don't want to do that at the\n        # module level.\n        if self.field.rel:\n            if isinstance(self.field.rel, models.ManyToOneRel):\n                objs = getattr(self.instance.instance, self.field.name)\n            elif isinstance(self.field.rel, models.ManyToManyRel): # ManyToManyRel\n                return list(getattr(self.instance.instance, self.field.name).all())\n        elif self.field.choices:\n            objs = dict(self.field.choices).get(self.raw_value, EMPTY_VALUE)\n        elif isinstance(self.field, models.DateField) or isinstance(self.field, models.TimeField):\n            if self.raw_value:\n                if isinstance(self.field, models.DateTimeField):\n                    objs = capfirst(formats.date_format(self.raw_value, 'DATETIME_FORMAT'))\n                elif isinstance(self.field, models.TimeField):\n                    objs = capfirst(formats.time_format(self.raw_value, 'TIME_FORMAT'))\n                else:\n                    objs = capfirst(formats.date_format(self.raw_value, 'DATE_FORMAT'))\n            else:\n                objs = EMPTY_VALUE\n        elif isinstance(self.field, models.BooleanField) or isinstance(self.field, models.NullBooleanField):\n            objs = {True: 'Yes', False: 'No', None: 'Unknown'}[self.raw_value]\n        else:\n            objs = self.raw_value\n        return [objs]\n\n    def urls(self):\n        \"Returns a list of (value, URL) tuples.\"\n        # First, check the urls() method for each plugin.\n        plugin_urls = []\n        for plugin_name, plugin in self.model.model_databrowse().plugins.items():\n            urls = plugin.urls(plugin_name, self)\n            if urls is not None:\n                return zip(self.values(), urls)\n        if self.field.rel:\n            m = EasyModel(self.model.site, self.field.rel.to)\n            if self.field.rel.to in self.model.model_list:\n                lst = []\n                for value in self.values():\n                    if value is None:\n                        continue\n                    url = '%s%s/%s/objects/%s/' % (self.model.site.root_url, m.model._meta.app_label, m.model._meta.module_name, iri_to_uri(value._get_pk_val()))\n                    lst.append((smart_text(value), url))\n            else:\n                lst = [(value, None) for value in self.values()]\n        elif self.field.choices:\n            lst = []\n            for value in self.values():\n                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, iri_to_uri(self.raw_value))\n                lst.append((value, url))\n        elif isinstance(self.field, models.URLField):\n            val = list(self.values())[0]\n            lst = [(val, iri_to_uri(val))]\n        else:\n            lst = [(list(self.values())[0], None)]\n        return lst\n\nclass EasyQuerySet(QuerySet):\n    \"\"\"\n    When creating (or cloning to) an `EasyQuerySet`, make sure to set the\n    `_easymodel` variable to the related `EasyModel`.\n    \"\"\"\n    def iterator(self, *args, **kwargs):\n        for obj in super(EasyQuerySet, self).iterator(*args, **kwargs):\n            yield EasyInstance(self._easymodel, obj)\n\n    def _clone(self, *args, **kwargs):\n        c = super(EasyQuerySet, self)._clone(*args, **kwargs)\n        c._easymodel = self._easymodel\n        return c\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/databrowse/models.py",
    "content": "# Empty models.py to allow for specifying databrowse as a test label.\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/databrowse/plugins/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/databrowse/plugins/calendars.py",
    "content": "from __future__ import unicode_literals\n\nfrom django import http\nfrom django.db import models\nfrom django.contrib.databrowse.datastructures import EasyModel\nfrom django.contrib.databrowse.sites import DatabrowsePlugin\nfrom django.shortcuts import render_to_response\nfrom django.utils.html import format_html, format_html_join\nfrom django.utils.text import capfirst\nfrom django.utils.encoding import force_text\nfrom django.views.generic import dates\nfrom django.utils import datetime_safe\n\n\nclass DateViewMixin(object):\n    allow_empty = False\n    allow_future = True\n    root_url = None\n    model = None\n    field = None\n\n    def get_context_data(self, **kwargs):\n        context = super(DateViewMixin, self).get_context_data(**kwargs)\n        context.update({\n            'root_url': self.root_url,\n            'model': self.model,\n            'field': self.field\n        })\n        return context\n\n\nclass DayView(DateViewMixin, dates.DayArchiveView):\n    template_name = 'databrowse/calendar_day.html'\n\n\nclass MonthView(DateViewMixin, dates.MonthArchiveView):\n    template_name = 'databrowse/calendar_month.html'\n\n\nclass YearView(DateViewMixin, dates.YearArchiveView):\n    template_name = 'databrowse/calendar_year.html'\n\n\nclass IndexView(DateViewMixin, dates.ArchiveIndexView):\n    template_name = 'databrowse/calendar_main.html'\n\n\nclass CalendarPlugin(DatabrowsePlugin):\n    def __init__(self, field_names=None):\n        self.field_names = field_names\n\n    def field_dict(self, model):\n        \"\"\"\n        Helper function that returns a dictionary of all DateFields or\n        DateTimeFields in the given model. If self.field_names is set, it takes\n        take that into account when building the dictionary.\n        \"\"\"\n        if self.field_names is None:\n            return dict([(f.name, f) for f in model._meta.fields if isinstance(f, models.DateField)])\n        else:\n            return dict([(f.name, f) for f in model._meta.fields if isinstance(f, models.DateField) and f.name in self.field_names])\n\n    def model_index_html(self, request, model, site):\n        fields = self.field_dict(model)\n        if not fields:\n            return ''\n        return format_html('<p class=\"filter\"><strong>View calendar by:</strong> {0}</p>',\n                           format_html_join(', ', '<a href=\"calendars/{0}/\">{1}</a>',\n                                            ((f.name, force_text(capfirst(f.verbose_name))) for f in fields.values())))\n\n    def urls(self, plugin_name, easy_instance_field):\n        if isinstance(easy_instance_field.field, models.DateField):\n            d = easy_instance_field.raw_value\n            return ['%s%s/%s/%s/%s/%s/' % (\n                easy_instance_field.model.url(),\n                plugin_name, easy_instance_field.field.name,\n                str(d.year),\n                datetime_safe.new_date(d).strftime('%b').lower(),\n                d.day)]\n\n    def model_view(self, request, model_databrowse, url):\n        self.model, self.site = model_databrowse.model, model_databrowse.site\n        self.fields = self.field_dict(self.model)\n\n        # If the model has no DateFields, there's no point in going further.\n        if not self.fields:\n            raise http.Http404('The requested model has no calendars.')\n\n        if url is None:\n            return self.homepage_view(request)\n        url_bits = url.split('/')\n        if url_bits[0] in self.fields:\n            return self.calendar_view(request, self.fields[url_bits[0]], *url_bits[1:])\n\n        raise http.Http404('The requested page does not exist.')\n\n    def homepage_view(self, request):\n        easy_model = EasyModel(self.site, self.model)\n        field_list = list(self.fields.values())\n        field_list.sort(key=lambda k:k.verbose_name)\n        return render_to_response('databrowse/calendar_homepage.html', {\n                'root_url': self.site.root_url,\n                'model': easy_model,\n                'field_list': field_list\n            })\n\n    def calendar_view(self, request, field, year=None, month=None, day=None):\n        easy_model = EasyModel(self.site, self.model)\n        root_url = self.site.root_url\n\n        if day is not None:\n            return DayView.as_view(\n                                year=year, month=month, day=day,\n                                date_field=field.name,\n                                queryset=easy_model.get_query_set(),\n                                root_url=root_url,\n                                model=easy_model,\n                                field=field\n                            )(request)\n        elif month is not None:\n            return MonthView.as_view(\n                                year=year, month=month,\n                                date_field=field.name,\n                                queryset=easy_model.get_query_set(),\n                                root_url=root_url,\n                                model=easy_model,\n                                field=field\n                            )(request)\n        elif year is not None:\n            return YearView.as_view(\n                                year=year,\n                                date_field=field.name,\n                                queryset=easy_model.get_query_set(),\n                                root_url=root_url,\n                                model=easy_model,\n                                field=field\n                            )(request)\n        else:\n            return IndexView.as_view(\n                                date_field=field.name,\n                                queryset=easy_model.get_query_set(),\n                                root_url=root_url,\n                                model=easy_model,\n                                field=field\n                            )(request)\n\n        assert False, ('%s, %s, %s, %s' % (field, year, month, day))\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/databrowse/plugins/fieldchoices.py",
    "content": "from __future__ import unicode_literals\n\nfrom django import http\nfrom django.db import models\nfrom django.contrib.databrowse.datastructures import EasyModel\nfrom django.contrib.databrowse.sites import DatabrowsePlugin\nfrom django.shortcuts import render_to_response\nfrom django.utils.html import format_html, format_html_join\nfrom django.utils.http import urlquote\nfrom django.utils.text import capfirst\nfrom django.utils.encoding import force_text\n\n\nclass FieldChoicePlugin(DatabrowsePlugin):\n    def __init__(self, field_filter=None):\n        # If field_filter is given, it should be a callable that takes a\n        # Django database Field instance and returns True if that field should\n        # be included. If field_filter is None, that all fields will be used.\n        self.field_filter = field_filter\n\n    def field_dict(self, model):\n        \"\"\"\n        Helper function that returns a dictionary of all fields in the given\n        model. If self.field_filter is set, it only includes the fields that\n        match the filter.\n        \"\"\"\n        if self.field_filter:\n            return dict([(f.name, f) for f in model._meta.fields if self.field_filter(f)])\n        else:\n            return dict([(f.name, f) for f in model._meta.fields if not f.rel and not f.primary_key and not f.unique and not isinstance(f, (models.AutoField, models.TextField))])\n\n    def model_index_html(self, request, model, site):\n        fields = self.field_dict(model)\n        if not fields:\n            return ''\n        return format_html('<p class=\"filter\"><strong>View by:</strong> {0}</p>',\n                           format_html_join(', ', '<a href=\"fields/{0}/\">{1}</a>',\n                                            ((f.name, force_text(capfirst(f.verbose_name))) for f in fields.values())))\n\n    def urls(self, plugin_name, easy_instance_field):\n        if easy_instance_field.field in self.field_dict(easy_instance_field.model.model).values():\n            return ['%s%s/%s/%s/' % (\n                easy_instance_field.model.url(),\n                plugin_name, easy_instance_field.field.name,\n                urlquote(easy_instance_field.raw_value, safe=''))]\n\n    def model_view(self, request, model_databrowse, url):\n        self.model, self.site = model_databrowse.model, model_databrowse.site\n        self.fields = self.field_dict(self.model)\n\n        # If the model has no fields with choices, there's no point in going\n        # further.\n        if not self.fields:\n            raise http.Http404('The requested model has no fields.')\n\n        if url is None:\n            return self.homepage_view(request)\n        url_bits = url.split('/', 1)\n        if url_bits[0] in self.fields:\n            return self.field_view(request, self.fields[url_bits[0]], *url_bits[1:])\n\n        raise http.Http404('The requested page does not exist.')\n\n    def homepage_view(self, request):\n        easy_model = EasyModel(self.site, self.model)\n        field_list = list(self.fields.values())\n        field_list.sort(key=lambda k: k.verbose_name)\n        return render_to_response('databrowse/fieldchoice_homepage.html', {'root_url': self.site.root_url, 'model': easy_model, 'field_list': field_list})\n\n    def field_view(self, request, field, value=None):\n        easy_model = EasyModel(self.site, self.model)\n        easy_field = easy_model.field(field.name)\n        if value is not None:\n            obj_list = easy_model.objects(**{field.name: value})\n            return render_to_response('databrowse/fieldchoice_detail.html', {'root_url': self.site.root_url, 'model': easy_model, 'field': easy_field, 'value': value, 'object_list': obj_list})\n        obj_list = [v[field.name] for v in self.model._default_manager.distinct().order_by(field.name).values(field.name)]\n        return render_to_response('databrowse/fieldchoice_list.html', {'root_url': self.site.root_url, 'model': easy_model, 'field': easy_field, 'object_list': obj_list})\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/databrowse/plugins/objects.py",
    "content": "try:\n    from urllib.parse import urljoin\nexcept ImportError:     # Python 2\n    from urlparse import urljoin\n\nfrom django import http\nfrom django.contrib.databrowse.datastructures import EasyModel\nfrom django.contrib.databrowse.sites import DatabrowsePlugin\nfrom django.shortcuts import render_to_response\n\nclass ObjectDetailPlugin(DatabrowsePlugin):\n    def model_view(self, request, model_databrowse, url):\n        # If the object ID wasn't provided, redirect to the model page, which is one level up.\n        if url is None:\n            return http.HttpResponseRedirect(urljoin(request.path, '../'))\n        easy_model = EasyModel(model_databrowse.site, model_databrowse.model)\n        obj = easy_model.object_by_pk(url)\n        return render_to_response('databrowse/object_detail.html', {'object': obj, 'root_url': model_databrowse.site.root_url})\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/databrowse/sites.py",
    "content": "from __future__ import unicode_literals\n\nfrom django import http\nfrom django.db import models\nfrom django.contrib.databrowse.datastructures import EasyModel\nfrom django.shortcuts import render_to_response\nfrom django.utils.safestring import mark_safe\n\nclass AlreadyRegistered(Exception):\n    pass\n\nclass NotRegistered(Exception):\n    pass\n\nclass DatabrowsePlugin(object):\n    def urls(self, plugin_name, easy_instance_field):\n        \"\"\"\n        Given an EasyInstanceField object, returns a list of URLs for this\n        plugin's views of this object. These URLs should be absolute.\n\n        Returns None if the EasyInstanceField object doesn't get a\n        list of plugin-specific URLs.\n        \"\"\"\n        return None\n\n    def model_index_html(self, request, model, site):\n        \"\"\"\n        Returns a snippet of HTML to include on the model index page.\n        \"\"\"\n        return ''\n\n    def model_view(self, request, model_databrowse, url):\n        \"\"\"\n        Handles main URL routing for a plugin's model-specific pages.\n        \"\"\"\n        raise NotImplementedError\n\nclass ModelDatabrowse(object):\n    plugins = {}\n\n    def __init__(self, model, site):\n        self.model = model\n        self.site = site\n\n    def root(self, request, url):\n        \"\"\"\n        Handles main URL routing for the databrowse app.\n\n        `url` is the remainder of the URL -- e.g. 'objects/3'.\n        \"\"\"\n        # Delegate to the appropriate method, based on the URL.\n        if url is None:\n            return self.main_view(request)\n        try:\n            plugin_name, rest_of_url = url.split('/', 1)\n        except ValueError: # need more than 1 value to unpack\n            plugin_name, rest_of_url = url, None\n        try:\n            plugin = self.plugins[plugin_name]\n        except KeyError:\n            raise http.Http404('A plugin with the requested name does not exist.')\n        return plugin.model_view(request, self, rest_of_url)\n\n    def main_view(self, request):\n        easy_model = EasyModel(self.site, self.model)\n        html_snippets = mark_safe('\\n'.join([p.model_index_html(request, self.model, self.site) for p in self.plugins.values()]))\n        return render_to_response('databrowse/model_detail.html', {\n            'model': easy_model,\n            'root_url': self.site.root_url,\n            'plugin_html': html_snippets,\n        })\n\nclass DatabrowseSite(object):\n    def __init__(self):\n        self.registry = {} # model_class -> databrowse_class\n        self.root_url = None\n\n    def register(self, *model_list, **options):\n        \"\"\"\n        Registers the given model(s) with the given databrowse site.\n\n        The model(s) should be Model classes, not instances.\n\n        If a databrowse class isn't given, it will use DefaultModelDatabrowse\n        (the default databrowse options).\n\n        If a model is already registered, this will raise AlreadyRegistered.\n        \"\"\"\n        databrowse_class = options.pop('databrowse_class', DefaultModelDatabrowse)\n        for model in model_list:\n            if model in self.registry:\n                raise AlreadyRegistered('The model %s is already registered' % model.__name__)\n            self.registry[model] = databrowse_class\n\n    def unregister(self, *model_list):\n        \"\"\"\n        Unregisters the given model(s).\n\n        If a model isn't already registered, this will raise NotRegistered.\n        \"\"\"\n        for model in model_list:\n            if model not in self.registry:\n                raise NotRegistered('The model %s is not registered' % model.__name__)\n            del self.registry[model]\n\n    def root(self, request, url):\n        \"\"\"\n        Handles main URL routing for the databrowse app.\n\n        `url` is the remainder of the URL -- e.g. 'comments/comment/'.\n        \"\"\"\n        self.root_url = request.path[:len(request.path) - len(url)]\n        url = url.rstrip('/') # Trim trailing slash, if it exists.\n\n        if url == '':\n            return self.index(request)\n        elif '/' in url:\n            return self.model_page(request, *url.split('/', 2))\n\n        raise http.Http404('The requested databrowse page does not exist.')\n\n    def index(self, request):\n        m_list = [EasyModel(self, m) for m in self.registry.keys()]\n        return render_to_response('databrowse/homepage.html', {'model_list': m_list, 'root_url': self.root_url})\n\n    def model_page(self, request, app_label, model_name, rest_of_url=None):\n        \"\"\"\n        Handles the model-specific functionality of the databrowse site, delegating\n        to the appropriate ModelDatabrowse class.\n        \"\"\"\n        model = models.get_model(app_label, model_name)\n        if model is None:\n            raise http.Http404(\"App %r, model %r, not found.\" % (app_label, model_name))\n        try:\n            databrowse_class = self.registry[model]\n        except KeyError:\n            raise http.Http404(\"This model exists but has not been registered with databrowse.\")\n        return databrowse_class(model, self).root(request, rest_of_url)\n\nsite = DatabrowseSite()\n\nfrom django.contrib.databrowse.plugins.calendars import CalendarPlugin\nfrom django.contrib.databrowse.plugins.objects import ObjectDetailPlugin\nfrom django.contrib.databrowse.plugins.fieldchoices import FieldChoicePlugin\n\nclass DefaultModelDatabrowse(ModelDatabrowse):\n    plugins = {'objects': ObjectDetailPlugin(), 'calendars': CalendarPlugin(), 'fields': FieldChoicePlugin()}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/databrowse/templates/databrowse/base.html",
    "content": "<!DOCTYPE html>\n<html lang=\"{{ LANGUAGE_CODE|default:\"en-us\" }}\" {% if LANGUAGE_BIDI %}dir=\"rtl\"{% endif %}>\n<head>\n<title>{% block title %}{% endblock %}</title>\n{% block style %}\n<style type=\"text/css\">\n* { margin:0; padding:0; }\nbody { background:#eee; color:#333; font:76%/1.6 \"Lucida Grande\",\"Bitstream Vera Sans\",Verdana,sans-serif; }\na { color: #5b80b2; text-decoration:none; }\na:hover { text-decoration:underline; }\na img { border:none; }\nh1 { font-size:1.8em; color:#666; margin:0.4em 0 0.2em 0; }\nh2 { font-size:1.5em; color:#666; margin:1em 0 0.2em 0; }\np { margin:0.5em 0 1em 0; }\n.odd { background-color:#EDF3FE; }\n.quiet { color:#666; }\n/* FILTERS */\n.filter { color:#999; font-size:0.9em; float:left; margin-bottom:10px; margin-right:20px; }\n.filter strong { color:#666; }\n/* OBJECT LISTS */\n.objectlist { clear:both; margin:0 -20px; color:#666; }\n.objectlist li a { display:block; padding:1em 20px; }\n.objectlist li a:hover { background:#5b80b2; color:#3B5572; color:#fff; text-decoration:none; }\n.related h2 { font-size: 1em; margin-bottom: 0.6em; }\n.related .objectlist li a { padding: 0.6em 20px; }\n.related .objectlist li.odd { background:#eee; }\n/* OBJECT DETAIL */\n.objectinfo { border-collapse:collapse; color:#666; margin:0 -20px; }\n.objectinfo td, .objectinfo th { padding:1em 20px; vertical-align:top; }\n.objectinfo td { width:100%; }\n.objectinfo th { text-align:left; white-space:nowrap; }\n/* MODEL GROUPS */\n.modelgroup { color:#999; font-size:0.9em; margin:0 -20px; }\n.modelgroup h2 { font-size:1.2em; margin:0; }\n.modelgroup h2 a { display: block; padding: 0.83em 20px; }\n.modelgroup h2 a:hover { text-decoration: none; color: #fff; }\n.modelgroup p { float:left; margin:-2.65em 0 0 14em; position:relative; }\n.modelgroup p a { white-space:nowrap; }\n.modelgroup a.more { color:#999; }\n.modelgroup:hover { background:#5b80b2; color:#becfe5; }\n.modelgroup:hover p a { color:#becfe5; }\n.modelgroup:hover a { color:#fff; }\n.modelgroup:hover a.more { color:#fff; }\n/* BREADCRUMBS */\n#breadcrumbs { padding:10px 0; color:#999; font-size:0.9em; }\n/* HEADER */\n#header a { display:block; background:#eee; color:#676868; padding:10px 20px; font-weight:bold; font-size:1em; text-decoration:none; border-bottom:1px solid #ddd; }\n#header a:hover { text-decoration:underline; }\n/* CONTENT */\n#content { background:#fff; border-bottom:1px solid #ddd; padding:0 20px; }\n</style>\n{% endblock %}\n{% block extrahead %}{% endblock %}\n</head>\n<body id=\"{% block bodyid %}page{% endblock %}\">\n<div id=\"header\"><a href=\"{{ root_url }}\">{% block databrowse_title %}Databrowse{% endblock %}</a></div>\n<div id=\"content\">\n{% block content %}{% endblock %}\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/databrowse/templates/databrowse/base_site.html",
    "content": "{% extends \"databrowse/base.html\" %}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/databrowse/templates/databrowse/calendar_day.html",
    "content": "{% extends \"databrowse/base_site.html\" %}\n\n{% block title %}{{ model.verbose_name_plural|capfirst }} with {{ field.verbose_name }} {{ day|date:\"F j, Y\" }}{% endblock %}\n\n{% block content %}\n\n<div id=\"breadcrumbs\"><a href=\"{{ root_url }}\">Home</a> / <a href=\"{{ model.url }}\">{{ model.verbose_name_plural|capfirst }}</a> / <a href=\"../../../../\">Calendars</a> / <a href=\"../../../\">By {{ field.verbose_name }}</a> / <a href=\"../../\">{{ day|date:\"Y\" }}</a> / <a href=\"../\">{{ day|date:\"F\" }}</a> / {{ day|date:\"d\" }}</div>\n\n<h1>{{ object_list.count }} {% if object_list.count|pluralize %}{{ model.verbose_name_plural }}{% else %}{{ model.verbose_name }}{% endif %} with {{ field.verbose_name }} on {{ day|date:\"F j, Y\" }}</h1>\n\n<ul class=\"objectlist\">\n{% for object in object_list %}\n<li class=\"{% cycle 'odd' 'even' %}\"><a href=\"{{ object.url }}\">{{ object }}</a></li>\n{% endfor %}\n</ul>\n\n{% endblock %}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/databrowse/templates/databrowse/calendar_homepage.html",
    "content": "{% extends \"databrowse/base_site.html\" %}\n\n{% block title %}Calendars{% endblock %}\n\n{% block content %}\n\n<div id=\"breadcrumbs\"><a href=\"{{ root_url }}\">Home</a> / <a href=\"{{ model.url }}\">{{ model.verbose_name_plural|capfirst }}</a> / Calendars</div>\n\n<h1>Calendars</h1>\n\n<ul class=\"objectlist\">\n{% for field in field_list %}\n<li class=\"{% cycle 'odd' 'even' %}\"><a href=\"{{ field.name }}/\">{{ model.verbose_name_plural|capfirst }} by {{ field.verbose_name }}</a></li>\n{% endfor %}\n</ul>\n\n{% endblock %}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/databrowse/templates/databrowse/calendar_main.html",
    "content": "{% extends \"databrowse/base_site.html\" %}\n\n{% block title %}{{ field.verbose_name|capfirst }} calendar{% endblock %}\n\n{% block content %}\n\n<div id=\"breadcrumbs\"><a href=\"{{ root_url }}\">Home</a> / <a href=\"{{ model.url }}\">{{ model.verbose_name_plural|capfirst }}</a> / <a href=\"../\">Calendars</a> / By {{ field.verbose_name }}</div>\n\n<h1>{{ model.verbose_name_plural|capfirst }} by {{ field.verbose_name }}</h1>\n\n<ul class=\"objectlist\">\n{% for year in date_list %}\n<li class=\"{% cycle 'odd' 'even' %}\"><a href=\"{{ year|date:\"Y\" }}/\">{{ year|date:\"Y\" }}</a></li>\n{% endfor %}\n</ul>\n\n{% endblock %}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/databrowse/templates/databrowse/calendar_month.html",
    "content": "{% extends \"databrowse/base_site.html\" %}\n\n{% block title %}{{ model.verbose_name_plural|capfirst }} with {{ field.verbose_name }} in {{ month|date:\"F Y\" }}{% endblock %}\n\n{% block content %}\n\n<div id=\"breadcrumbs\"><a href=\"{{ root_url }}\">Home</a> / <a href=\"{{ model.url }}\">{{ model.verbose_name_plural|capfirst }}</a> / <a href=\"../../../\">Calendars</a> / <a href=\"../../\">By {{ field.verbose_name }}</a> / <a href=\"../\">{{ month|date:\"Y\" }}</a> / {{ month|date:\"F\" }}</div>\n\n<h1>{{ object_list.count }} {% if object_list.count|pluralize %}{{ model.verbose_name_plural }}{% else %}{{ model.verbose_name }}{% endif %} with {{ field.verbose_name }} on {{ month|date:\"F Y\" }}</h1>\n\n<ul class=\"objectlist\">\n{% for object in object_list %}\n<li class=\"{% cycle 'odd' 'even' %}\"><a href=\"{{ object.url }}\">{{ object }}</a></li>\n{% endfor %}\n</ul>\n\n{% endblock %}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/databrowse/templates/databrowse/calendar_year.html",
    "content": "{% extends \"databrowse/base_site.html\" %}\n\n{% block title %}{{ model.verbose_name_plural|capfirst }} with {{ field.verbose_name }} in {{ year }}{% endblock %}\n\n{% block content %}\n\n<div id=\"breadcrumbs\"><a href=\"{{ root_url }}\">Home</a> / <a href=\"{{ model.url }}\">{{ model.verbose_name_plural|capfirst }}</a> / <a href=\"../../\">Calendars</a> / <a href=\"../\">By {{ field.verbose_name }}</a> / {{ year }}</div>\n\n<h1>{{ model.verbose_name_plural|capfirst }} with {{ field.verbose_name }} in {{ year }}</h1>\n\n<ul class=\"objectlist\">\n{% for month in date_list %}\n<li class=\"{% cycle 'odd' 'even' %}\"><a href=\"{{ month|date:\"M\"|lower }}/\">{{ month|date:\"F\" }}</a></li>\n{% endfor %}\n</ul>\n\n{% endblock %}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/databrowse/templates/databrowse/choice_detail.html",
    "content": "{% extends \"databrowse/base_site.html\" %}\n\n{% block title %}{{ model.verbose_name_plural|capfirst }} by {{ field.field.verbose_name }}: {{ value }}{% endblock %}\n\n{% block content %}\n\n<div id=\"breadcrumbs\"><a href=\"{{ root_url }}\">Home</a> / <a href=\"{{ model.url }}\">{{ model.verbose_name_plural|capfirst }}</a> / <a href=\"{{ field.url }}\">By {{ field.field.verbose_name }}</a> / {{ value }}</div>\n\n<h1>{{ model.verbose_name_plural|capfirst }} by {{ field.field.verbose_name }}: {{ value }}</h1>\n\n<ul class=\"objectlist\">\n{% for object in object_list %}\n<li class=\"{% cycle 'odd' 'even' %}\"><a href=\"{{ object.url }}\">{{ object }}</a></li>\n{% endfor %}\n</ul>\n\n{% endblock %}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/databrowse/templates/databrowse/choice_list.html",
    "content": "{% extends \"databrowse/base_site.html\" %}\n\n{% block title %}{{ model.verbose_name_plural|capfirst }} by {{ field.field.verbose_name }}{% endblock %}\n\n{% block content %}\n\n<div id=\"breadcrumbs\"><a href=\"{{ root_url }}\">Home</a> / <a href=\"{{ model.url }}\">{{ model.verbose_name_plural|capfirst }}</a> / By {{ field.field.verbose_name }}</div>\n\n<h1>{{ model.verbose_name_plural|capfirst }} by {{ field.field.verbose_name }}</h1>\n\n<ul class=\"objectlist\">\n{% for choice in field.choices %}\n<li class=\"{% cycle 'odd' 'even' %}\"><a href=\"{{ choice.url }}\">{{ choice.label }}</a></li>\n{% endfor %}\n</ul>\n\n{% endblock %}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/databrowse/templates/databrowse/fieldchoice_detail.html",
    "content": "{% extends \"databrowse/base_site.html\" %}\n\n{% block title %}{{ model.verbose_name_plural|capfirst }} with {{ field.field.verbose_name }} {{ value }}{% endblock %}\n\n{% block content %}\n\n<div id=\"breadcrumbs\"><a href=\"{{ root_url }}\">Home</a> / <a href=\"{{ model.url }}\">{{ model.verbose_name_plural|capfirst }}</a> / <a href=\"../../\">Fields</a> / <a href=\"../\">By {{ field.field.verbose_name }}</a> / {{ value }}</div>\n\n<h1>{{ object_list.count }} {% if object_list.count|pluralize %}{{ model.verbose_name_plural }}{% else %}{{ model.verbose_name }}{% endif %} with {{ field.field.verbose_name }} {{ value }}</h1>\n\n<ul class=\"objectlist\">\n{% for object in object_list %}\n<li class=\"{% cycle 'odd' 'even' %}\"><a href=\"{{ object.url }}\">{{ object }}</a></li>\n{% endfor %}\n</ul>\n\n{% endblock %}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/databrowse/templates/databrowse/fieldchoice_homepage.html",
    "content": "{% extends \"databrowse/base_site.html\" %}\n\n{% block title %}Browsable fields in {{ model.verbose_name_plural }}{% endblock %}\n\n{% block content %}\n\n<div id=\"breadcrumbs\"><a href=\"{{ root_url }}\">Home</a> / <a href=\"{{ model.url }}\">{{ model.verbose_name_plural|capfirst }}</a> / Fields</div>\n\n<h1>Browsable fields in {{ model.verbose_name_plural }}</h1>\n\n<ul class=\"objectlist\">\n{% for field in field_list %}\n<li class=\"{% cycle 'odd' 'even' %}\"><a href=\"{{ field.name }}/\">{{ model.verbose_name_plural|capfirst }} by {{ field.verbose_name }}</a></li>\n{% endfor %}\n</ul>\n\n{% endblock %}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/databrowse/templates/databrowse/fieldchoice_list.html",
    "content": "{% extends \"databrowse/base_site.html\" %}\n\n{% block title %}{{ model.verbose_name_plural|capfirst }} by {{ field.field.verbose_name }}{% endblock %}\n\n{% block content %}\n\n<div id=\"breadcrumbs\"><a href=\"{{ root_url }}\">Home</a> / <a href=\"{{ model.url }}\">{{ model.verbose_name_plural|capfirst }}</a> / <a href=\"../\">Fields</a> / By {{ field.field.verbose_name }}</div>\n\n<h1>{{ model.verbose_name_plural|capfirst }} by {{ field.field.verbose_name }}</h1>\n\n<ul class=\"objectlist\">\n{% for object in object_list %}\n<li class=\"{% cycle 'odd' 'even' %}\"><a href=\"{{ object|iriencode }}/\">{{ object }}</a></li>\n{% endfor %}\n</ul>\n\n{% endblock %}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/databrowse/templates/databrowse/homepage.html",
    "content": "{% extends \"databrowse/base_site.html\" %}\n\n{% block title %}Databrowse{% endblock %}\n\n{% block bodyid %}homepage{% endblock %}\n\n{% block content %}\n\n{% for model in model_list %}\n  <div class=\"modelgroup {% cycle 'even' 'odd' %}\">\n\t  <h2><a href=\"{{ model.url }}\">{{ model.verbose_name_plural|capfirst }}</a></h2>\n\t\t<p>\n\t\t{% for object in model.sample_objects %}\n\t\t\t<a href=\"{{ object.url }}\">{{ object }}</a>, \n\t\t{% endfor %}\n\t\t\t<a class=\"more\" href=\"{{ model.url }}\">More &rarr;</a>\n\t\t</p>\n  </div>\n{% endfor %}\n\n{% endblock %}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/databrowse/templates/databrowse/model_detail.html",
    "content": "{% extends \"databrowse/base_site.html\" %}\n\n{% block title %}{{ model.verbose_name_plural|capfirst }}{% endblock %}\n\n{% block content %}\n\n<div id=\"breadcrumbs\"><a href=\"{{ root_url }}\">Home</a> / {{ model.verbose_name_plural|capfirst }}</div>\n\n<h1>{{ model.objects.count }} {% if model.objects.count|pluralize %}{{ model.verbose_name_plural }}{% else %}{{ model.verbose_name }}{% endif %}</h1>\n\n{{ plugin_html }}\n\n<ul class=\"objectlist\">\n{% for object in model.objects %}\n    <li class=\"{% cycle 'odd' 'even' %}\"><a href=\"{{ object.url }}\">{{ object }}</a></li>\n{% endfor %}\n</ul>\n\n{% endblock %}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/databrowse/templates/databrowse/object_detail.html",
    "content": "{% extends \"databrowse/base_site.html\" %}\n\n{% block title %}{{ object.model.verbose_name|capfirst }}: {{ object }}{% endblock %}\n\n{% block content %}\n\n<div id=\"breadcrumbs\"><a href=\"{{ root_url }}\">Home</a> / <a href=\"{{ object.model.url }}\">{{ object.model.verbose_name_plural|capfirst }}</a> / {{ object }}</div>\n\n<h1>{{ object.model.verbose_name|capfirst }}: {{ object }}</h1>\n\n<table class=\"objectinfo\">\n{% for field in object.fields %}\n<tr class=\"{% cycle 'odd' 'even' %}\">\n<th>{{ field.field.verbose_name|capfirst }}</th>\n<td>\n{% if field.urls %}\n{% for value, url in field.urls %}\n{% if url %}<a href=\"{{ url }}\">{% endif %}{{ value }}{% if url %}</a>{% endif %}{% if not forloop.last %}, {% endif %}\n{% endfor %}\n{% else %}None{% endif %}\n</td>\n</tr>\n{% endfor %}\n</table>\n\n{% for related_object in object.related_objects %}\n  <div class=\"related\">\n  <h2>Appears in \"{{ related_object.related_field }}\" in the following {{ related_object.model.verbose_name_plural }}:</h2>\n  {% if related_object.object_list %}\n  <ul class=\"objectlist\">\n    {% for object in related_object.object_list %}\n    <li class=\"{% cycle 'odd' 'even' %}\"><a href=\"{{ object.url }}\">{{ object }}</a></li>\n    {% endfor %}\n  </ul>\n  {% else %}\n  <p class=\"quiet\">(None)</p>\n  {% endif %}\n  </div>\n{% endfor %}\n\n{% endblock %}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/databrowse/tests.py",
    "content": "from django.contrib import databrowse\nfrom django.db import models\nfrom django.test import TestCase\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n@python_2_unicode_compatible\nclass SomeModel(models.Model):\n    some_field = models.CharField(max_length=50)\n\n    def __str__(self):\n        return self.some_field\n\n\n@python_2_unicode_compatible\nclass SomeOtherModel(models.Model):\n    some_other_field = models.CharField(max_length=50)\n\n    def __str__(self):\n        return self.some_other_field\n\n\n@python_2_unicode_compatible\nclass YetAnotherModel(models.Model):\n    yet_another_field = models.CharField(max_length=50)\n\n    def __str__(self):\n        return self.yet_another_field\n\n\nclass DatabrowseTests(TestCase):\n\n    def test_databrowse_register_unregister(self):\n        databrowse.site.register(SomeModel)\n        self.assertTrue(SomeModel in databrowse.site.registry)\n        databrowse.site.register(SomeOtherModel, YetAnotherModel)\n        self.assertTrue(SomeOtherModel in databrowse.site.registry)\n        self.assertTrue(YetAnotherModel in databrowse.site.registry)\n\n        self.assertRaisesMessage(\n            databrowse.sites.AlreadyRegistered,\n            'The model SomeModel is already registered',\n            databrowse.site.register, SomeModel, SomeOtherModel\n        )\n\n        databrowse.site.unregister(SomeOtherModel)\n        self.assertFalse(SomeOtherModel in databrowse.site.registry)\n        databrowse.site.unregister(SomeModel, YetAnotherModel)\n        self.assertFalse(SomeModel in databrowse.site.registry)\n        self.assertFalse(YetAnotherModel in databrowse.site.registry)\n\n        self.assertRaisesMessage(\n            databrowse.sites.NotRegistered,\n            'The model SomeModel is not registered',\n            databrowse.site.unregister, SomeModel, SomeOtherModel\n        )\n\n        self.assertRaisesMessage(\n            databrowse.sites.AlreadyRegistered,\n            'The model SomeModel is already registered',\n            databrowse.site.register, SomeModel, SomeModel\n        )\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/databrowse/urls.py",
    "content": "from django.conf.urls import patterns\nfrom django.contrib.databrowse import views\n\n# Note: The views in this URLconf all require a 'models' argument,\n# which is a list of model classes (*not* instances).\n\nurlpatterns = patterns('',\n    #(r'^$', views.homepage),\n    #(r'^([^/]+)/([^/]+)/$', views.model_detail),\n\n    (r'^([^/]+)/([^/]+)/fields/(\\w+)/$', views.choice_list),\n    (r'^([^/]+)/([^/]+)/fields/(\\w+)/(.*)/$', views.choice_detail),\n\n    #(r'^([^/]+)/([^/]+)/calendars/(\\w+)/$', views.calendar_main),\n    #(r'^([^/]+)/([^/]+)/calendars/(\\w+)/(\\d{4})/$', views.calendar_year),\n    #(r'^([^/]+)/([^/]+)/calendars/(\\w+)/(\\d{4})/(\\w{3})/$', views.calendar_month),\n    #(r'^([^/]+)/([^/]+)/calendars/(\\w+)/(\\d{4})/(\\w{3})/(\\d{1,2})/$', views.calendar_day),\n\n    #(r'^([^/]+)/([^/]+)/objects/(.*)/$', views.object_detail),\n)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/databrowse/views.py",
    "content": "from django.http import Http404\nfrom django.shortcuts import render_to_response\n\n###########\n# CHOICES #\n###########\n\ndef choice_list(request, app_label, module_name, field_name, models):\n    m, f = lookup_field(app_label, module_name, field_name, models)\n    return render_to_response('databrowse/choice_list.html', {'model': m, 'field': f})\n\ndef choice_detail(request, app_label, module_name, field_name, field_val, models):\n    m, f = lookup_field(app_label, module_name, field_name, models)\n    try:\n        label = dict(f.field.choices)[field_val]\n    except KeyError:\n        raise Http404('Invalid choice value given')\n    obj_list = m.objects(**{f.field.name: field_val})\n    return render_to_response('databrowse/choice_detail.html', {'model': m, 'field': f, 'value': label, 'object_list': obj_list})\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/admin.py",
    "content": "from django.contrib import admin\nfrom django.contrib.flatpages.models import FlatPage\nfrom django.utils.translation import ugettext_lazy as _\nfrom django.contrib.flatpages.forms import FlatpageForm\n\nclass FlatPageAdmin(admin.ModelAdmin):\n    form = FlatpageForm\n    fieldsets = (\n        (None, {'fields': ('url', 'title', 'content', 'sites')}),\n        (_('Advanced options'), {'classes': ('collapse',), 'fields': ('enable_comments', 'registration_required', 'template_name')}),\n    )\n    list_display = ('url', 'title')\n    list_filter = ('sites', 'enable_comments', 'registration_required')\n    search_fields = ('url', 'title')\n\nadmin.site.register(FlatPage, FlatPageAdmin)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/fixtures/example_site.json",
    "content": "[\n  {\n    \"pk\": 1,\n    \"model\": \"sites.site\",\n    \"fields\": {\n      \"domain\": \"example.com\",\n      \"name\": \"example.com\"\n    }\n  }\n]\n\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/fixtures/sample_flatpages.json",
    "content": "[\n    {\n        \"pk\": 1,\n        \"model\": \"flatpages.flatpage\",\n        \"fields\": {\n            \"registration_required\": false,\n            \"title\": \"A Flatpage\",\n            \"url\": \"/flatpage/\",\n            \"template_name\": \"\",\n            \"sites\": [\n                1\n            ],\n            \"content\": \"Isn't it flat!\",\n            \"enable_comments\": false\n        }\n    },\n    {\n        \"pk\": 2,\n        \"model\": \"flatpages.flatpage\",\n        \"fields\": {\n            \"registration_required\": false,\n            \"title\": \"A Nested Flatpage\",\n            \"url\": \"/location/flatpage/\",\n            \"template_name\": \"\",\n            \"sites\": [\n                1\n            ],\n            \"content\": \"Isn't it flat and deep!\",\n            \"enable_comments\": false\n        }\n    },\n\n    {\n        \"pk\": 101,\n        \"model\": \"flatpages.flatpage\",\n        \"fields\": {\n            \"registration_required\": true,\n            \"title\": \"Sekrit Flatpage\",\n            \"url\": \"/sekrit/\",\n            \"template_name\": \"\",\n            \"sites\": [\n                1\n            ],\n            \"content\": \"Isn't it sekrit!\",\n            \"enable_comments\": false\n        }\n    },\n    {\n        \"pk\": 102,\n        \"model\": \"flatpages.flatpage\",\n        \"fields\": {\n            \"registration_required\": true,\n            \"title\": \"Sekrit Nested Flatpage\",\n            \"url\": \"/location/sekrit/\",\n            \"template_name\": \"\",\n            \"sites\": [\n                1\n            ],\n            \"content\": \"Isn't it sekrit and deep!\",\n            \"enable_comments\": false\n        }\n    }\n]"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/forms.py",
    "content": "from django import forms\nfrom django.conf import settings\nfrom django.contrib.flatpages.models import FlatPage\nfrom django.utils.translation import ugettext, ugettext_lazy as _\n\nclass FlatpageForm(forms.ModelForm):\n    url = forms.RegexField(label=_(\"URL\"), max_length=100, regex=r'^[-\\w/\\.~]+$',\n        help_text = _(\"Example: '/about/contact/'. Make sure to have leading\"\n                      \" and trailing slashes.\"),\n        error_message = _(\"This value must contain only letters, numbers,\"\n                          \" dots, underscores, dashes, slashes or tildes.\"))\n\n    class Meta:\n        model = FlatPage\n\n    def clean_url(self):\n        url = self.cleaned_data['url']\n        if not url.startswith('/'):\n            raise forms.ValidationError(ugettext(\"URL is missing a leading slash.\"))\n        if (settings.APPEND_SLASH and\n            'django.middleware.common.CommonMiddleware' in settings.MIDDLEWARE_CLASSES and\n            not url.endswith('/')):\n            raise forms.ValidationError(ugettext(\"URL is missing a trailing slash.\"))\n        return url\n\n    def clean(self):\n        url = self.cleaned_data.get('url', None)\n        sites = self.cleaned_data.get('sites', None)\n\n        same_url = FlatPage.objects.filter(url=url)\n        if self.instance.pk:\n            same_url = same_url.exclude(pk=self.instance.pk)\n\n        if sites and same_url.filter(sites__in=sites).exists():\n            for site in sites:\n                if same_url.filter(sites=site).exists():\n                    raise forms.ValidationError(\n                        _('Flatpage with url %(url)s already exists for site %(site)s' %\n                          {'url': url, 'site': site}))\n\n        return super(FlatpageForm, self).clean()\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/af/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2011-01-19 16:48+0000\\n\"\n\"Last-Translator: Django team\\n\"\n\"Language-Team: Afrikaans (http://www.transifex.com/projects/p/django/\"\n\"language/af/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: af\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"Die veld is verpligtend.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/ar/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Ossama Khayat <okhayat@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-18 10:56+0000\\n\"\n\"Last-Translator: Ossama Khayat <okhayat@gmail.com>\\n\"\n\"Language-Team: Arabic (http://www.transifex.com/projects/p/django/language/\"\n\"ar/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ar\\n\"\n\"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 \"\n\"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"خيارات متقدّمة\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"رابط\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"مثال: '/about/contact/'. تأكد من وضع شرطات في البداية والنهاية.\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\"يجب أن تحتوي هذه القيمة الأحرف والأرقام والنقاط وعلامات _ و - و / أو ~ فقط.\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"العنوان\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"المحتوى\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"السماح بالتعليقات\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"اسم القالب\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\"مثال: 'flatpages/contact_page.html'. إن لم تكن الصفحة موجودة، فسوف يستخدم \"\n\"النظام 'flatpages/default.html'.\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"التسجيل مطلوب\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"\"\n\"إذا كان هذا الخيار محددا، فإن المستخدمين الداخلين فقط سيتمكنون من مشاهدة \"\n\"الصفحة.\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"صفحة مسطحة\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"صفحات مسطحة\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"هذا الحقل مطلوب.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/az/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Ali Ismayilov <ali@ismailov.info>, 2011.\n# Dimitris Glezos <glezos@indifex.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-18 10:56+0000\\n\"\n\"Last-Translator: Dimitris Glezos <glezos@transifex.com>\\n\"\n\"Language-Team: Azerbaijani (http://www.transifex.com/projects/p/django/\"\n\"language/az/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: az\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"Əlavə imkanlar\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"\"\n\"Məsələn, \\\"/about/contact/\\\". Əvvəldə və sondakı kəsr xəttinin olmasına \"\n\"diqqət edin.\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\"Burada yalnız hərf, rəqəm, nöqtə, altdan xətt, defis, kəsr xətti və ya \"\n\"tildadan istifadə etmək olar.\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"başlıq\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"məzmun\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"şərhlər olsun\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"şablonun adı\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\"Məsələn, \\\"flatpages/contact_page.html\\\". Əgər göstərməsəniz, biz \"\n\"\\\"flatpages/default.html\\\" şablonundan istifadə edəcəyik.\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"ancaq qeydiyyatlılar üçün\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"\"\n\"Əgər bura quş qoysanız, ancaq qeydiyyatdan keçib sayta daxil olmuş \"\n\"istifadəçilər bu səhifəni görə biləcəklər.\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"adi səhifə\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"adi səhifələr\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"Bu sahə vacibdir.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/be/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-18 10:56+0000\\n\"\n\"Last-Translator: Павал Клёк <yehekim@gmail.com>\\n\"\n\"Language-Team: Belarusian (http://www.transifex.com/projects/p/django/\"\n\"language/be/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: be\\n\"\n\"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"Адмысловыя можнасьці\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"Сеціўная спасылка\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"\"\n\"Прыклад: «/about/contact/». Упэўніцеся, што адрас пачынаецца й заканчваецца \"\n\"рыскаю «/».\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\"Дазваляюцца толькі літары, лічбы, кропкі, знак падкрэсьліваньня, злучкі, \"\n\"нахіленыя рыскі, тыльды.\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"Спасылка не пачынаецца з рыскі «/».\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"Спасылка не заканчваецца рыскаю «/».\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"На пляцоўцы «%(site)s» ужо існуе нязьменная бачына з адрасам «%(url)s»\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"назва\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"зьмесьціва\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"дазволіць выказваньні\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"назва шаблёну\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\"Прыклад: «flatpages/contact_page.html». Калі не пазначаць нічога, сыстэма \"\n\"будзе ўжываць «flatpages/default.html».\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"трэба запісацца\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"\"\n\"Калі абраць гэта, бачыну змогуць пабачыць толькі тыя карыстальнікі, што \"\n\"апазналіся.\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"нязьменная бачына\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"нязьменныя бачыны\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"Поле трэба запоўніць.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/bg/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Todor Lubenov <tlubenov@gmail.com>, 2011-2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-18 10:56+0000\\n\"\n\"Last-Translator: Todor Lubenov <tlubenov@gmail.com>\\n\"\n\"Language-Team: Bulgarian (http://www.transifex.com/projects/p/django/\"\n\"language/bg/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: bg\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"Допълнителни опции\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"\"\n\"Пример: '/about/contact/'.  Началната и крайната наклонена чертичка са \"\n\"задължителни.  \"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\"Тази стойност трябва да съдържа само букви, цифри, точки, долни тирета, \"\n\"наклонени черти или tildes.\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"URL липсва водеща черта.\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"URL липсва наклонена черта.\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"Flatpage с url %(url)s вече съществува за site %(site)s\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"заглавие\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"съдържание\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"позволяване на коментари\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"име на шаблон\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\"Пример: 'flatpages/contact_page.html'.  Ако това не е указано, системата ще \"\n\"използва 'flatpages/default.html'.  \"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"изисква се регистрация\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"\"\n\"Ако това е чекнато, само логнати потребители ще могат да виждат страницата.  \"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"информативна страница\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"информативни страници\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"Това поле е задължително.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/bn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-18 10:56+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Bengali (http://www.transifex.com/projects/p/django/language/\"\n\"bn/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: bn\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"এডভান্সড অপশন\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"ইউআরএল (URL)\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"উদাহরণঃ '/about/contact/'। শুরু এবং শেষের স্ল্যাশগুলো আবশ্যক।\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"শিরোনাম\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"কনটেন্ট\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"মন্তব্য প্রদান সচল করুন\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"টেমপ্লেট নাম\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\"উদাহরণঃ ’flatpage/contact_page.html'। এটি যদি খালি থাকে, তবে সিস্টেম \"\n\"’flatpage/default.html' ব্যবহার করবে।\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"নিবন্ধন আবশ্যক\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"এটি চেক করা হলে, শুধুমাত্র লগইন করা সদস্যরা পাতাটি দেখতে সমর্থ হবেন।\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"ফ্লাট পাতা\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"ফ্লাট পাতা সমূহ\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"এটি আবশ্যক।\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/br/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Fulup  <fulup.jakez@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-18 10:56+0000\\n\"\n\"Last-Translator: Fulup <fulup.jakez@gmail.com>\\n\"\n\"Language-Team: Breton (http://www.transifex.com/projects/p/django/language/\"\n\"br/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: br\\n\"\n\"Plural-Forms: nplurals=2; plural=(n > 1);\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"titl\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"danvez\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"Rekis eo leuniañ ar vaezienn.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/bs/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Filip Dupanović <filip.dupanovic@gmail.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-18 10:56+0000\\n\"\n\"Last-Translator: Filip Dupanović <filip.dupanovic@gmail.com>\\n\"\n\"Language-Team: Bosnian (http://www.transifex.com/projects/p/django/language/\"\n\"bs/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: bs\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"Napredna podešavanja\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"\"\n\"Primjer: '/about/contact/'. Pazite na to da postoje i početne i završne kose \"\n\"crte.\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\"Ova vrijednost smije samo sadržati slova, brijeve, tačke, donje crte, crte, \"\n\"kose crte i tilde.\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"naslov\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"sadržaj\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"omogući komentare\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"naziv obrazca\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\"Primjer: 'flatpages/contact_page.html'. Ako ovo ostavite praznim, sistem će \"\n\"koristiti 'flatpages/default.html'.\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"registracija obavezna\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"\"\n\"Ako je ovo obilježeno, samo će prijavljeni korisnici moći da vide ovu \"\n\"stranicu.\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"statična stranica\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"statične stranice\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"Ovo polje se mora popuniti.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/ca/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Antoni Aloy <antoni.aloy@trespams.com>, 2011.\n# Carles Barrobés <carles@barrobes.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-18 10:56+0000\\n\"\n\"Last-Translator: Carles Barrobés <carles@barrobes.com>\\n\"\n\"Language-Team: Catalan (http://www.transifex.com/projects/p/django/language/\"\n\"ca/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ca\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"Opcions avançades\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"\"\n\"Exemple: '/about/contact/'. Assegureu-vos de posar les barres al principi i \"\n\"al final.\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\"Aquest valor sols pot contenir lletres, nombres, punts, subratllats, guions, \"\n\"barres o accents.\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"La URL no comença amb \\\"/\\\".\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"La URL no acaba amb \\\"/\\\".\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"Ja hi ha una pàgina estàtica amb la URL %(url)s per al lloc %(site)s\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"títol\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"contingut\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"habilitar comentaris\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"nom de la plantilla\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\"Exemple: 'flatpages/contact_page.html'. Si no es proporciona, el sistema \"\n\"utilitzarà 'flatpages/default.html'.\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"cal estar registrat\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"Si està marcat, només els usuaris registrats podran veure la pàgina.\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"pàgina estàtica\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"pàgines estàtiques\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"Aquest camp és obligatori.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/cs/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Vlada Macek <macek@sandbox.cz>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-18 10:56+0000\\n\"\n\"Last-Translator: Vlada Macek <macek@sandbox.cz>\\n\"\n\"Language-Team: Czech (http://www.transifex.com/projects/p/django/language/\"\n\"cs/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: cs\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"Pokročilá nastavení\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"\"\n\"Příklad: \\\"/o/kontakt/\\\". Ujistěte se, že máte počáteční a konečná lomítka.\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\"Tato hodnota musí obsahovat pouze písmena, číslice, tečky, podtržítka, \"\n\"pomlčky, lomítka nebo vlnovky.\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"V adrese URL chybí úvodní lomítko.\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"V adrese URL chybí koncové lomítko.\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"Flat stránka s adresou %(url)s pro web %(site)s již existuje.\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"titulek\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"obsah\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"povolit komentáře\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"název šablony\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\"Příklad: \\\"flatpages/kontaktni_stranka.html\\\". Pokud toto není zadáno, bude \"\n\"použita šablona \\\"flatpages/default.html\\\".\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"nutná registrace\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"Určuje, že tuto stránku uvidí pouze přihlášení uživatelé.\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"statická stránka\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"statické stránky\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"Pole je povinné.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/cy/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-18 10:56+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Welsh (http://www.transifex.com/projects/p/django/language/\"\n\"cy/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: cy\\n\"\n\"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != \"\n\"11) ? 2 : 3;\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"\"\n\"Er enghraifft: '/amdan/cyswllt/'. Sicrhewch gennych slaesau arweiniol ac \"\n\"trywyddiol.\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"teitl\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"cynnwys\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"galluogi sylwadau\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"enw'r templed\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"cofrestriad gofynnol\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"\"\n\"Os wedi dewis, dim ond defnyddwyr a mewngofnodwyd bydd yn gallu gweld y \"\n\"tudalen.\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"tudalen fflat\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"tudalennau fflat\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"Mae angen y faes yma.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/da/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Christian Joergensen <christian@gmta.info>, 2012.\n# Erik Wognsen <r4mses@gmail.com>, 2012.\n# Finn Gruwier <finn@gruwier.dk>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-18 10:56+0000\\n\"\n\"Last-Translator: Erik Wognsen <r4mses@gmail.com>\\n\"\n\"Language-Team: Danish (http://www.transifex.com/projects/p/django/language/\"\n\"da/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: da\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"Avancerede muligheder\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"\"\n\"Eksempel: '/om/kontakt/'. Vær opmærksom på, at der skal være skråstreg både \"\n\"først og sidst.\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\"Denne værdi må kun indeholde bogstaver, tal, punktum, understreger, \"\n\"bindestreger, skråstreger eller tilder.\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"URL mangler en skråstreg i starten.\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"URL mangler en afsluttende skråstreg.\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"Flatpage med URL'en %(url)s eksisterer allerede for siden %(site)s\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"titel\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"indhold\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"tillad kommentarer\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"skabelonnavn\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\"Eksempel: 'flatpages/kontaktside'. Hvis dette ikke tilbydes, bruger systemet \"\n\"'flatpages/default'.\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"registrering påkrævet\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"\"\n\"Hvis denne boks er markeret, vil kun brugere der er logget ind, kunne se \"\n\"siden.\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"flad side\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"flade sider\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"Dette felt er påkrævet.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/de/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# André Hagenbruch <ahagenbruch@googlemail.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-18 10:56+0000\\n\"\n\"Last-Translator: André Hagenbruch <ahagenbruch@googlemail.com>\\n\"\n\"Language-Team: German (http://www.transifex.com/projects/p/django/language/\"\n\"de/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: de\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"Erweiterte Optionen\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"Adresse (URL)\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"\"\n\"Beispiel: '/about/contact/'. Wichtig: Am Anfang und Ende muss ein / stehen.\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\"Dieser Wert darf nur Buchstaben, Ziffern, Punkte, Unterstriche und \"\n\"Bindestriche enthalten.\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"Der URL fehlt ein vorangestellter Schrägstrich.\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"Der URL fehlt ein abschließender Schrägstrich.\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"\"\n\"Flatpage mit der URL %(url)s ist für die Website %(site)s bereits vorhanden\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"Titel\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"Inhalt\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"Kommentare aktivieren\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"Name des Template\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\"Beispiel: 'flatpages/contact_page.html'. Wenn dieses Feld nicht gesetzt ist, \"\n\"wird standardmäßig 'flatpages/default.html' benutzt.\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"Registrierung erforderlich\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"\"\n\"Wenn hier ein Haken gesetzt ist, können nur angemeldete Benutzer diese Seite \"\n\"sehen.\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"Seite\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"Seiten\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"Dieses Feld ist zwingend erforderlich.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/el/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Dimitris Glezos <glezos@indifex.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-18 10:56+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Greek (http://www.transifex.com/projects/p/django/language/\"\n\"el/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: el\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"Προχωρημένες επιλογές\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"\"\n\"Παράδειγμα: '/about/contact/'. Βεβαιωθείτε ότι περιέχει καθέτους στην αρχή \"\n\"και το τέλος.\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\"Η τιμή αυτή πρέπει να περιέχει μόνο γράμματα, αριθμούς, τελείες, παύλες, \"\n\"κάτω παύλες, καθέτους ή περισπωμένες.\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"τίτλος\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"περιεχόμενο\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"ενεργοποίηση σχολίων\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"όνομα προτύπου\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\"Παράδειγμα: 'flatpages/contact_page.html'. Αν δεν εισαχθεί, το σύστημα θα \"\n\"χρησιμοποιήσει το 'flatpages/default.html'.\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"απαιτείται εγγραφή\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"\"\n\"Εάν επιλεγεί, μόνο συνδεδεμένοι χρήστες θα μπορούν να βλέπουν τη σελίδα.\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"απλή σελίδα\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"απλές σελίδες\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"Αυτό το πεδίο είναι απαραίτητο.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/en/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-18 10:56+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: English <en@li.org>\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: en\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"Advanced options\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"URL is missing a leading slash.\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"URL is missing a trailing slash.\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"Flatpage with url %(url)s already exists for site %(site)s\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"title\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"content\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"enable comments\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"template name\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"registration required\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"\"\n\"If this is checked, only logged-in users will be able to view the page.\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"flat page\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"flat pages\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"This field is required.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/en_GB/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <jon@jonatkinson.co.uk>, 2012.\n# Ross Poulton <ross@rossp.org>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-18 10:56+0000\\n\"\n\"Last-Translator: Ross Poulton <ross@rossp.org>\\n\"\n\"Language-Team: English (United Kingdom) (http://www.transifex.com/projects/p/\"\n\"django/language/en_GB/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: en_GB\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"Advanced options\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"URL is missing a leading slash.\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"URL is missing a trailing slash.\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"Flatpage with url %(url)s already exists for site %(site)s\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"title\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"content\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"enable comments\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"template name\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"registration required\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"\"\n\"If this is checked, only logged-in users will be able to view the page.\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"flat page\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"flat pages\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"This field is required.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/eo/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Baptiste  <bapdarth@yahoo.fr>, 2011.\n# Baptiste  <baptiste+transifex@darthenay.fr>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-18 10:56+0000\\n\"\n\"Last-Translator: Baptiste <baptiste+transifex@darthenay.fr>\\n\"\n\"Language-Team: Esperanto (http://www.transifex.com/projects/p/django/\"\n\"language/eo/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: eo\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"Altnivelaj elektoj\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"\"\n\"Ekzemplo: '/pri/kontakto/'. Certigu, ke estas kondukaj kaj sekvaj strekoj.\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\"Ĉi tiu valoro devus enhavi sole leterojn, nombrojn, punktojn, substrekoj, \"\n\"haltostrekoj, oblikvoj aŭ tildoj.\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"La streka karaktero \\\"/\\\" ne ĉeestas en komenco de ĉeno.\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"La streka karaktero \\\"/\\\" ne ĉeestas en fino de ĉeno.\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"Platpaĝo kun URL %(url)s jam ekzistas for la retejo %(site)s\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"titolo\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"enhavo\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"ebligu rimarkoj\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"nomo de ŝablono\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\"Ekzemplo: 'platpaĝoj/kontakto_paĝo.html'. Se ĉi tiu ne provizas, la sistemo \"\n\"uzos 'platpaĝoj/defaŭlto.html'.\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"registrado postulita\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"\"\n\"Se ĉi tio estus elektita, nur ensalutitaj uzantoj povus rigardi la paĝon.\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"plata paĝo\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"plataj paĝoj\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"Tiu kampo estas postulata.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/es/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Antoni Aloy <antoni.aloy@trespams.com>, 2011, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-18 10:56+0000\\n\"\n\"Last-Translator: Antoni Aloy <aaloy@apsl.net>\\n\"\n\"Language-Team: Spanish (http://www.transifex.com/projects/p/django/language/\"\n\"es/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: es\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"Opciones avanzadas\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"\"\n\"Ejemplo: '/about/contact/'. Asegúrese de que pone barras al principio y al \"\n\"final.\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\"Este valor solo puede contener letras, números, puntos, subrayados, guiones, \"\n\"barras o tildes.\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"A la URL le falta la barra inicial.\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"A la url le falta la barra final.\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"Un Flatpage con la url %(url)s ya existe para el sitio %(site)s\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"título\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"contenido\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"habilitar comentarios\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"nombre de plantilla\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\"Ejemplo: 'flatpages/contact_page.html'. Si no es proporcionado, el sistema \"\n\"usará 'flatpages/default.html'.\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"debe estar registrado\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"Si está marcado, sólo los usuarios registrados podrán ver la página.\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"página estática\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"páginas estáticas\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"Este campo es obligatorio.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/es_AR/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Ramiro Morales <cramm0@gmail.com>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-18 10:56+0000\\n\"\n\"Last-Translator: Ramiro Morales <cramm0@gmail.com>\\n\"\n\"Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/\"\n\"django/language/es_AR/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: es_AR\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"Opciones avanzadas\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"\"\n\"Ejemplo: '/about/contact/'. Asegúrese de usar barras '/' al principio y al \"\n\"final.\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\"Este valor debe contener solamente letras, números, puntos, guiones bajos, \"\n\"guiones (-), barras (/) o tildes.\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"A la URL le falta una / al principio\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"A la URL le falta una / al final\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"Ya existe una flatpage con url %(url)s para el sitio %(site)s\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"título\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"contenido\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"activar comentarios\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"nombre de plantilla\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\"Ejemplo: 'flatpages/contact_page.html'. Si no lo proporciona, el sistema \"\n\"usará 'flatpages/default.html'.\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"debe estar registrado\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"Si está marcado, sólo los usuarios registrados podrán ver la página.\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"página estática\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"páginas estáticas\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"Este campo es obligatorio.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/es_MX/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Abraham Estrada <abraham.estrada@gmail.com>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-18 10:56+0000\\n\"\n\"Last-Translator: Abraham Estrada <abraham.estrada@gmail.com>\\n\"\n\"Language-Team: Spanish (Mexico) (http://www.transifex.com/projects/p/django/\"\n\"language/es_MX/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: es_MX\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"Opciones avanzadas\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"\"\n\"Ejemplo: '/acerca/contacto/'. Asegúrese de usar barras '/' al principio y al \"\n\"final.\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\"Este valor debe contener solamente letras, números, puntos, guiones bajos, \"\n\"guiones (-), barras (/) o tildes.\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"A la URL le falta una diagonal al inicio\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"A la URL le falta una diagonal al final\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"La página con la url %(url)s ya existe para el sitio %(site)s\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"título\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"contenido\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"activar comentarios\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"nombre de la plantilla\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\"Ejemplo: 'flatpages/pagina_contacto.html'. Si no lo proporciona, el sistema \"\n\"usará 'flatpages/default.html'.\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"necesario registrarse\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"Si está marcado, sólo los usuarios registrados podrán ver la página.\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"página estática\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"páginas estática\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"Este campo es obligatorio.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/es_VE/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2011-01-19 16:48+0000\\n\"\n\"Last-Translator: Django team\\n\"\n\"Language-Team: Spanish (Venezuela) (http://www.transifex.com/projects/p/\"\n\"django/language/es_VE/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: es_VE\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"Este campo es obligatorio.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/et/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# madisvain <madisvain@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-18 10:56+0000\\n\"\n\"Last-Translator: madisvain <madisvain@gmail.com>\\n\"\n\"Language-Team: Estonian (http://www.transifex.com/projects/p/django/language/\"\n\"et/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: et\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"Lisavalikud\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"\"\n\"Näide: '/about/contact/'. Veenduge, et URL algaks ja lõppeks kaldkriipsuga.\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\"See väärtus peab sisaldama ainult tähti, numbreid, punkte, alakriipse, \"\n\"kriipse, kaldkriipse või tildeseid.\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"pealkiri\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"sisu\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"võimalda kommentaarid\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"mall\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\"Näide: 'flatpages/contact_page.html'. Kui mall on määramata, kasutatakse \"\n\"vaikimisi malli 'flatpages/default.html'.\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"registreerumine nõutav\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"Kui see on valitud, näevad lehte ainult sisselogitud kasutajad\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"sisuleht\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"sisulehed\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"See lahter on nõutav.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/eu/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Aitzol Naberan <anaberan@codesyntax.com>, 2011, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-18 10:56+0000\\n\"\n\"Last-Translator: Aitzol Naberan <anaberan@codesyntax.com>\\n\"\n\"Language-Team: Basque (http://www.transifex.com/projects/p/django/language/\"\n\"eu/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: eu\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"Aukera aurreratuak\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"\"\n\"Adibidez: '/about/contact/'. Ziurta zaitez '/' karaktera hasieran eta \"\n\"bukaeran dagoela.\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\"Eremu honetan soilik hizki, zenbaki, puntu, azpimarra, gidoi, / edo ~ egon \"\n\"daitezke.\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"URLak hasierako / falta du.\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"URLk bukaerako / falta du.\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"%(site)s webgunean dagoeneko existitzende %(url)s urldun Flatpage bat\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"izenburua\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"edukia\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"komentarioak onartu\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"plantila izena\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\"Adibidez: 'flatpages/contact_page.html'. Hau ematen ez bada, sistemak \"\n\"'flatpages/default.html' erabiliko du.\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"erregistratzea beharrezkoa da\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"\"\n\"Hau markatuta badago, erregistratutako erabiltzaileek bakarrik ikusiko dute \"\n\"orria.\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"flat page\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"flat pages\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"Eremu hau beharrezkoa da.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/fa/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Ali Nikneshan <ali@nikneshan.com>, 2011, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-18 10:56+0000\\n\"\n\"Last-Translator: Ali Nikneshan <ali@nikneshan.com>\\n\"\n\"Language-Team: Persian (http://www.transifex.com/projects/p/django/language/\"\n\"fa/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: fa\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"گزینه‌های پیشرفته\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"نشانی اینترنتی\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"\"\n\"مثال: '/about/contact/'. مطمئن شوید که اسلش را هم در ابتدا و هم در انتها \"\n\"گذاشته‌اید.\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"این مقدار فقط باید حاوی حروف، اعداد، خط زیر، خط تیره و یا اسلش باشد.\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"در آدرس اسلش آغازین فراموش شده است.\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"در آدرس اسلش پایانی فراموش شده است.\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"صفحه تخت با آدرس %(url)s برای سایت %(site)s وجود دارد \"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"عنوان\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"محتوا\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"فعال کردن نظرات\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"نام قالب\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\"مثال: 'flatpages/contact_page.html'. اگر این مشخص نشود، سیستم از 'flatpages/\"\n\"default.html' استفاده خواهد کرد.\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"عضویت لازم است\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"\"\n\"اگر این انتخاب شود، فقط کاربران وارد شده خواهند توانست این صفحه را مشاهده \"\n\"نمایند.\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"صفحه تخت\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"صفحات تخت\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"این فیلد لازم است.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/fi/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <klaus.dahlen@gmail.com>, 2012.\n# Ville Säävuori <ville@syneus.fi>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-24 15:17+0000\\n\"\n\"Last-Translator: nanook <klaus.dahlen@gmail.com>\\n\"\n\"Language-Team: Finnish (http://www.transifex.com/projects/p/django/language/\"\n\"fi/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: fi\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"Lisäasetukset\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"URL-osoite\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"\"\n\"Esimerkki: '/tietoja/yhteystiedot/'. Varmista, että sekä alussa että lopussa \"\n\"on kauttaviiva.\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\"Tämä arvo saa sisältää vain kirjaimia, numeroita, pisteitä sekä ala-, tavu-, \"\n\"kautta- ja aaltoviivoja.\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"URL:n alusta puuttuu kauttaviiva.\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"URL:n lopusta puuttuu kauttaviiva.\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"Sivustolla %(site)s on jo sivu, jonka URL on %(url)s\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"otsikko\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"sisältö\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"salli kommentit\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"mallipohjan nimi\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\"Esimerkiksi: 'flatpages/yhteydenotto.html'. Jos tämä jätetään tyhjäksi, \"\n\"käytetään oletuspohjaa 'flatpages/default.html'.\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"vaaditaan rekisteröityminen\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"\"\n\"Jos tämä kohta on valittu, vain sisäänkirjautuneet käyttäjät näkevät sivun.\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"tekstisivu\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"tekstisivut\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"Tämä kenttä vaaditaan.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/fr/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <charette.s@gmail.com>, 2012.\n#   <claude@2xlibre.net>, 2011-2012.\n# claudep <claude@2xlibre.net>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-18 10:56+0000\\n\"\n\"Last-Translator: claudep <claude@2xlibre.net>\\n\"\n\"Language-Team: French (http://www.transifex.com/projects/p/django/language/\"\n\"fr/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: fr\\n\"\n\"Plural-Forms: nplurals=2; plural=(n > 1);\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"Options avancées\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"\"\n\"Par exemple, « /a_propos/contact/ ». Vérifiez la présence du caractère « / » \"\n\"en début et en fin de chaîne.\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\"Cette valeur ne peut contenir que des lettres, des chiffres, des points, des \"\n\"soulignés, des tirets, des barres obliques ou des tildes.\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"Le caractère « / » n'est pas présent en début de chaîne.\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"Le caractère « / » n'est pas présent en fin de chaîne.\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"La page statique à l'URL %(url)s existe déjà pour le site %(site)s\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"titre\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"contenu\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"autoriser les commentaires\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"nom du template\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\"Par exemple, « flatpages/contact_page.html ». Sans définition, le système \"\n\"utilisera « flatpages/default.html ».\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"enregistrement requis\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"\"\n\"Si coché, seuls les utilisateurs connectés auront la possibilité de voir \"\n\"cette page.\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"page statique\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"pages statiques\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"Ce champ est obligatoire.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/fy_NL/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:37+0100\\n\"\n\"PO-Revision-Date: 2011-03-15 15:46+0000\\n\"\n\"Last-Translator: Django team\\n\"\n\"Language-Team: English <en@li.org>\\n\"\n\"Language: fy_NL\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1)\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"\"\n\n#: forms.py:7 models.py:7\nmsgid \"URL\"\nmsgstr \"\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"\"\n\n#: models.py:8\nmsgid \"title\"\nmsgstr \"\"\n\n#: models.py:9\nmsgid \"content\"\nmsgstr \"\"\n\n#: models.py:10\nmsgid \"enable comments\"\nmsgstr \"\"\n\n#: models.py:11\nmsgid \"template name\"\nmsgstr \"\"\n\n#: models.py:12\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\n#: models.py:13\nmsgid \"registration required\"\nmsgstr \"\"\n\n#: models.py:13\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"\"\n\n#: models.py:18\nmsgid \"flat page\"\nmsgstr \"\"\n\n#: models.py:19\nmsgid \"flat pages\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/ga/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Michael Thornhill <michael@maithu.com>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-18 10:56+0000\\n\"\n\"Last-Translator: Michael Thornhill <michael@maithu.com>\\n\"\n\"Language-Team: Irish (http://www.transifex.com/projects/p/django/language/\"\n\"ga/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ga\\n\"\n\"Plural-Forms: nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : \"\n\"4);\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"Ard-rogha\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"\"\n\"Sampla '/about/contact/' Déan cinnte go bhfuil príomhslaid agus cúlslais \"\n\"agat.\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\"Ní mór an luach a bhfuil ach litreacha, uimhreacha, poncanna, béim, dashes, \"\n\"slaiseanna nó thilde.\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"Tá slais tosaigh in easnamh ag an URL.\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"Tá slais deireanach in easnamh ag an URL.\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"Tá flatpage le url %(url)s ann cheana le suíomh %(site)s.\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"teideal\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"inneachar\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"Cuir nótaí tráchta ar chumas\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"ainm an teimpléid\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\"Sampla: 'flatpages/contact_page.html'. Muna bhfuil sé ar soláthair, bainfidh \"\n\"an córás úsáid as 'flatpages/default.html'.\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"clárúchán riachtanach\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"\"\n\"Dá mbéadh é seo seicailte, ní beidh ach úsáideora logáilte isteach in ann an \"\n\"leathanach seo a fheiceail\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"leacleathanach\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"leacleathanaigh\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"Tá an réimse seo riachtanach.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/gl/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# fasouto <fsoutomoure@gmail.com>, 2011.\n# fonso <fonzzo@gmail.com>, 2011.\n#   <fonzzo@gmail.com>, 2013.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2013-01-07 11:33+0000\\n\"\n\"Last-Translator: fonso <fonzzo@gmail.com>\\n\"\n\"Language-Team: Galician (http://www.transifex.com/projects/p/django/language/\"\n\"gl/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: gl\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"Opciones avanzadas\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"\"\n\"Exemplo: '/about/contact/'. Lembre incluír as barras ao principio e ao final.\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\"Este valor soamente pode conter letras, números, puntos, guións baixos, \"\n\"guións, barras inclinadas e tiles do eñe (~).\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"Falta unha barra inclinada no principio da URL.\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"Falta unha barra inclinada no final da URL.\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"Xa existe unha páxina simple con url %(url)s no sitio %(site)s\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"título\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"contido\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"activar comentarios\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"nome da plantilla\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\"Exemplo: 'flatpages/contact_page.html'. Se non se especifica, o sistema \"\n\"usará 'flatpages/default.html'.\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"require rexistro\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"Se se marca, só poderán ver a páxina os usuarios identificados.\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"páxina simple\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"páxinas simples\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"Requírese este campo.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/he/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Alex Gaynor <alex.gaynor@gmail.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Meir Kriheli <mkriheli@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-21 10:44+0000\\n\"\n\"Last-Translator: Meir Kriheli <mkriheli@gmail.com>\\n\"\n\"Language-Team: Hebrew (http://www.transifex.com/projects/p/django/language/\"\n\"he/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: he\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"אפשרויות מתקדמות\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"\"\n\"לדוגמא: '/about/contact/'. יש לוודא הימצאות הקווים הנטויים בהתחלה ובסוף.\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\"הערך הזאת חייב להכיל רק אותיות, מספרים, נקודות, מקפים, קווים תחתונים, חתכים \"\n\"או סימני טילדה בלבד.\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"חסר קו נטוי בתחילת URL.\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"חסר קו נטוי בסוף URL.\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"קיים כבר דף פשוט עם  url %(url)s עבור אתר %(site)s\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"כותרת\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"תוכן\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"אפשר תגובות\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"שם תבנית\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\"דוגמא: 'flatpages/contact_page.html'. אם לא צויין, המערכת תשתמש ב-'flatpages/\"\n\"default.html'.\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"הרשמה נדרשת\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"אם מסומן, רק משתמשים מחוברים יוכלו לצפות בדף.\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"דף פשוט\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"דפים פשוטים\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"יש להזין תוכן בשדה זה.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/hi/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Chandan kumar <chandankumar.093047@gmail.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Sandeep Satavlekar <sandysat@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-18 10:56+0000\\n\"\n\"Last-Translator: Chandan kumar <chandankumar.093047@gmail.com>\\n\"\n\"Language-Team: Hindi (http://www.transifex.com/projects/p/django/language/\"\n\"hi/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: hi\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"उन्नत विकल्प\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"अग्रणी है और अनुगामी स्लैश का होना सुनिश्चित करें. उदाहरण: '/about/contact/'\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"इस मूल्य में सिर्फ वर्णाक्षर, अंक, बिंदु, रेखांकन, डैश, स्लैश और टिल्ड्स ही होने चाहिए\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"यूआरएल से प्रमुख स्लैश गायब है.\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"यूआरएल से अनुगामी स्लैश गायब है.\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"%(site)s साइट के लिए %(url)s यूआरएल के साथ चपटापृष्ट मौजूद है.\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"शीर्षक\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"विषय सूची\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"टिप्पणियां सक्षम करें\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"सांचे का नाम\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\"उदाहरण: 'flatpages/contact_page.html'. यदि यह जिक्र नहीं किया तो यह प्रणाली \"\n\"'flatpages/default.html' का प्रयोग करेगी. .\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"पंजीकरण आवश्यक\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"अगर इस जाँच की है, केवल लॉग इन करने वालों के लिए पृष्ठ देखने में सक्षम हो जाएगा.\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"चपटा पृष्ट\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"चपटे पृष्ट\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"यह क्षेत्र अपेक्षित हैं\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/hr/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# aljosa <aljosa.mohorovic@gmail.com>, 2011.\n#   <aljosa.mohorovic@gmail.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-18 10:56+0000\\n\"\n\"Last-Translator: aljosa <aljosa.mohorovic@gmail.com>\\n\"\n\"Language-Team: Croatian (http://www.transifex.com/projects/p/django/language/\"\n\"hr/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: hr\\n\"\n\"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"Napredne opcije\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"\"\n\"Primjer: '/about/contact/'. Provjerite ako imate prvi i preostale slash-eve \"\n\"(/).\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\"Ova vrijednost može sadržavati samo slova, brojeve, točke, podvlake, crtice, \"\n\"kose crte ili tilde.\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"URL-u nedostaje početni /.\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"URL-u nedostaje / na kraju.\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"Stranica sa URL-om %(url)s već postoji za web %(site)s\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"naslov\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"sadržaj\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"uključi komentare\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"ime template-a\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\"Primjer: 'flatpages/contact_page.html'. Ako navedeno nije definirano sistem \"\n\"će koristiti 'flatpages/default.html'.\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"registracija obavezna\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"\"\n\"Ako je ovo selektirano samo logirani korisnici moći će vidjeti ovu stranicu.\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"statična stranica\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"statične stranice\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"Unos za ovo polje je obavezan.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/hu/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Szilveszter Farkas <szilveszter.farkas@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-18 10:56+0000\\n\"\n\"Last-Translator: istvanf <istvan.farkas@gmail.com>\\n\"\n\"Language-Team: Hungarian (http://www.transifex.com/projects/p/django/\"\n\"language/hu/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: hu\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"További beállítások\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"Például: '/about/contact/'. Figyeljen a nyitó és záró perjelre!\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\"Ez az érték csak betűt, számot, pontot, aláhúzást, kötőjelet, perjelet, vagy \"\n\"hullámot tartalmazhat.\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"AZ URL-ből hiányzik a kezdő perjel.\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"AZ URL-ből hiányzik a záró perjel.\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"%(site)s honlapon már létezik egyszerű oldal ezzel az URL-lel: %(url)s\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"cím\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"tartalom\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"megjegyzések engedélyezése\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"sablon neve\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\"Példa: 'flatpages/contact_page'. Ha ez nem létezik, a rendszer a 'flatpages/\"\n\"default.html' sablont fogja használni.\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"regisztráció szükséges\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"\"\n\"Ha ez be van jelölve, csak bejelentkezett felhasználó tudja az oldalt \"\n\"megnézni.\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"egyszerű oldal\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"egyszerű oldalak\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"Ennek a mezőnek a megadása kötelező.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/ia/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2011-01-19 16:48+0000\\n\"\n\"Last-Translator: Django team\\n\"\n\"Language-Team: Interlingua (http://www.transifex.com/projects/p/django/\"\n\"language/ia/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ia\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"Iste campo es obligatori.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/id/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# rodin <romihardiyanto@gmail.com>, 2011.\n#   <romihardiyanto@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-18 10:56+0000\\n\"\n\"Last-Translator: rodin <romihardiyanto@gmail.com>\\n\"\n\"Language-Team: Indonesian (http://www.transifex.com/projects/p/django/\"\n\"language/id/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: id\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"Opsi lanjutan\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"\"\n\"Contoh: '/about/contact/'. Pastikan dimulai dan diakhiri dengan garis miring \"\n\"(/).\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\"Nilai hanya hanya dapat berisi huruf, angka, titik, garis bawah, tanda \"\n\"minus, garis miring, atau tanda tilde.\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"Tidak ada garis miring awal pada URL.\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"Tidak ada garis miring akhir pada URL.\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"Laman tetap %(url)s sudah ada untuk situs %(site)s\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"judul\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"isi\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"aktifkan komentar\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"nama templat\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\"Contoh: 'flatpages/contact_page.html'. Jika tidak tersedia, sistem akan \"\n\"menggunakan 'flatpages/default.html'.\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"pendaftaran diwajibkan\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"\"\n\"Jika dipilih, hanya pengguna ter-otentikasi yang bisa mengunjungi halaman \"\n\"ini.\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"laman tetap\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"laman tetap\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"Bidang ini wajib diisi.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/is/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Hafsteinn Einarsson <haffi67@gmail.com>, 2011, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-18 10:56+0000\\n\"\n\"Last-Translator: Hafsteinn Einarsson <haffi67@gmail.com>\\n\"\n\"Language-Team: Icelandic (http://www.transifex.com/projects/p/django/\"\n\"language/is/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: is\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"Ítarlegar stillingar\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"Veffang\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"Dæmi: '/about/contact/'. Passaðu að hafa skástrik fremst og aftast.\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\"Þessi reitur má aðeins innihalda bókstafi (ekki broddstafi), tölustafi og \"\n\"táknin . / - _ og ~.\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"Skástrik vantar fremst í slóð\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"Skástrik vantar aftast í slóð\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"'Flatpage' með slóðina %(url)s er þegar til fyrir síðuna %(site)s\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"titill\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"innihald\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"virkja athugasemdir\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"nafn sniðmáts\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\"Dæmi: 'flatpages/contact_page.html'. Ef ekkert er gefið upp mun kerfið nota \"\n\"'flatpages/default.html'.\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"skráning nauðsynleg\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"Ef þetta er valið geta eingöngu innskráðir notendur séð síðuna.\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"flatskrá\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"flatskrár\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"Þennan reit þarf að fylla út.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/it/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Nicola Larosa <transifex@teknico.net>, 2011-2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-18 10:56+0000\\n\"\n\"Last-Translator: Nicola Larosa <transifex@teknico.net>\\n\"\n\"Language-Team: Italian (http://www.transifex.com/projects/p/django/language/\"\n\"it/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: it\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"Opzioni avanzate\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"\"\n\"Esempio: '/about/contact/'. Assicurati di inserire le barre diagonali \"\n\"iniziali e finali.\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\"Questo valore deve contenere solo lettere, numeri, punti, underscore, \"\n\"trattini, barre diagonali o tilde.\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"Manca una barra iniziale nella URL.\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"Manca una barra finale nella URL.\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"La flatpage con url %(url)s esiste già per il sito %(site)s\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"titolo\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"contenuto\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"abilita commenti\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"nome template\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\"Esempio: 'flatpages/contact_page.html'. Se non specificato, il sistema userà \"\n\"'flatpages/default.html'.\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"registrazione obbligatoria\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"\"\n\"Se selezionato, solo gli utenti che hanno effettuato l'accesso potranno \"\n\"vedere la pagina.\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"flat page\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"flat page\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"Questo campo è obbligatorio.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/ja/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Shinya Okano <tokibito@gmail.com>, 2012.\n# Tetsuya Morimoto <tetsuya.morimoto@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-18 10:56+0000\\n\"\n\"Last-Translator: Yoichi Fujimoto <wozozo@gmail.com>\\n\"\n\"Language-Team: Japanese (http://www.transifex.com/projects/p/django/language/\"\n\"ja/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ja\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"詳細設定\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"\"\n\"例: '/about/contact/'. 先頭と最後にスラッシュがあるか確認してください。\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\"この値は文字、数字、ドット、アンダースコア、ダッシュ、スラッシュかチルダのみ\"\n\"でなければいけません。\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"URLの先頭はスラッシュが必要です。\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"URLの末尾はスラッシュが必要です。\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"URL %(url)s のフラットページは %(site)s のサイトに既に存在しています。\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"タイトル\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"内容\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"コメントを有効にする\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"テンプレート名\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\"例: 'flatpages/contact_page.html'. 指定しなければ、デフォルト設定\"\n\"の'flatpages/default.html' を使います。\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"登録が必要です\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"チェックした場合、ログインしたユーザーだけがページを参照できます。\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"フラットページ\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"フラットページ\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"このフィールドは必須です。\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/ka/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Translators:\n# André Bouatchidzé <a@anbz.net>, 2013.\n# avsd05 <avsd05@gmail.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2013-03-01 08:31+0000\\n\"\n\"Last-Translator: André Bouatchidzé <a@anbz.net>\\n\"\n\"Language-Team: Georgian (http://www.transifex.com/projects/p/django/language/\"\n\"ka/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ka\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"დამატებითი პარამეტრები\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"\"\n\"მაგალითი: '/about/contact/'. ყურადღება მიაქციეთ დახრილ ხაზებს თავში და \"\n\"ბოლოში.\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\"ეს მნიშვნელობა უნდა შეიცავდეს მხოლოდ ლათინურ ასოებს, ციფრებს, წერტილებს, \"\n\"ხაზგასმის ნიშნებს, დეფისებს, დახრილ ხაზებს და ტილდებს.\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"URL-ს დასაწყისში აკლია დახრილი ხაზი.\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"URL-ს ბოლოში აკლია დახრილი ხაზი.\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"უბრალო გვერდი url-ით %(url)s უკვე არსებობს საიტისთვის %(site)s\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"სათაური\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"კონტენტი\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"ჩავრთოთ კომენტარები\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"შაბლონის სახელი\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\"მაგალითი: 'flatpages/contact_page.html'. თუ იგი მითითებული არ არის, \"\n\"გამოყენებული იქნება 'flatpages/default.html'.\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"რეგისტრაცია აუცილებელია\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"\"\n\"თუ ეს დროშა ჩართულია, მხოლო შემოსულ მომხმარებლებს ექნებათ გვერდის \"\n\"დათვალიერების საშუალება.\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"უბრალო გვერდი\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"უბრალო გვერდები\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"ეს ველი აუცილებელია.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/kk/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <germanilyin@gmail.com>, 2011.\n#   <zhazira.mt@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-18 10:56+0000\\n\"\n\"Last-Translator: Zhazira <zhazira.mt@gmail.com>\\n\"\n\"Language-Team: Kazakh (http://www.transifex.com/projects/p/django/language/\"\n\"kk/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: kk\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"Толық опциялар\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"\"\n\"Мысал: '/about/contact/'. Басында және аяғында слэштің болуын тексеріңіз.\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\"Бұл мән тек әріптерден, сандардан, нүктелерден, төменгі сызықтардан, \"\n\"сызықшалардан, слэштерден немесе тильдалардан құралуы тиіс. \"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"атау\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"мазмұн\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"комментарийларды рұқсат ету\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"шаблон атауы\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\"Мысал: 'flatpages/contact_page.html'. Ештенке берілмесе, 'flatpages/default.\"\n\"html' қолданылады.\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"тіркеу қажетті\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"\"\n\"Бұл белгіленген жағдайда, тек енген қолданушылар ғана бетті көре алады.\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"Жай бет\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"Жай беттер\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"Бұл өрісті толтыру міндетті.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/km/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-18 10:56+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: English <en@li.org>\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: km\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"អាស័យដ្ឋានគេហទំព័រ(URL)\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"\"\n\"ឧទាហរណ៍  '/about/contact/' ។ ត្រូវប្រាកដថាមានសញ្ញា / ទាំងនៅផ្នែកខាងមុខ និង ខាងក្រោយ។\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"ចំណងជើង\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"អត្ថន័យ\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"អនុញ្ញាត\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"ឈ្មោះឯកសារគំរូ\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\"ឧទាហរណ៍ 'flatpages/contact_page.html'។ ប្រសិនឯកសារនេះមិនមានទេ​\"\n\" នោះឯកសារ 'flatpages/default.html'នឹងត្រូវប្រើ។\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"ត្រូវការសមាជិកភាព\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"ប្រសិនជាចុចជ្រើសរើសយកជំរើសនេះ នោះ មានតែសមាជិកទេដែលអាចមើលទំព័រនេះបាន​។\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"ទំព័ថ្មី\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"ទំព័ថ្មី\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"ចាំបាច់បំពេញទិន្នន័យកន្លែងនេះ។\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/kn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-18 10:56+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Kannada (http://www.transifex.com/projects/p/django/language/\"\n\"kn/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: kn\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"\"\n\"ಉದಾ:'/about/contact/'. ಮೊದಲು ಮತ್ತು ಕೊನೆಯಲ್ಲಿ ಓರೆಗೆರೆ (/) ಇರುವಂತೆ ನೋಡಿಕೊಳ್ಳಿ.\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"ಶೀರ್ಷಿಕೆ\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"ಒಳವಿಷಯ\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"ಟಿಪ್ಪಣಿಗಳನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"ಟೆಂಪ್ಲೇಟಿನ ಹೆಸರು\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\"ಉದಾ:'flatpages/contact_page.html'. ಇದನ್ನು ಕೊಡದಿದ್ದರೆ ಗಣಕವ್ಯವಸ್ಥೆಯು  'flatpages/\"\n\"default.html' ಅನ್ನು ಬಳಸುವದು.\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"ನೋಂದಾವಣೆ ಅಗತ್ಯವಿದೆ.\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"\"\n\"ಇದರಲ್ಲಿ ಗುರುತು  ಮಾಡಿದರೆ,  ಒಳಬಂದ (ಲಾಗಿನ್ ಆದ) ಬಳಕೆದಾರರು ಮಾತ್ರ ಪುಟವನ್ನು ನೋಡಬಹುದು.\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"ಚಪ್ಪಟೆ ಪುಟ\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"ಚಪ್ಪಟೆ  ಪುಟಗಳು\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"ಈ ಸ್ಥಳವು ಅಗತ್ಯವಿರುತ್ತದೆ.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/ko/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jaehong Kim <mixe@korea.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-18 10:56+0000\\n\"\n\"Last-Translator: Jaehong Kim <mixe@korea.com>\\n\"\n\"Language-Team: Korean (http://www.transifex.com/projects/p/django/language/\"\n\"ko/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ko\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"고급 옵션\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"앞, 뒤에 슬래시(/)를 넣으세요. 예:'/about/contact/' \"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\"이 문자열은 문자, 수자, 점, 언더스코어, 대쉬, 슬래쉬, 틸드만 사용해야 합니다.\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"제목\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"내용\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"사용 가능한 코멘트\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"템플릿명\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\"예: 'flatpages/contact_page.html' 를 사용할 수 없는 경우 시스템이 'flatpages/\"\n\"default.html' (을)를 사용합니다.\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"등록하세요.\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"체크할 경우, 로그인 사용자만 해당 페이지를 볼 수 있습니다.\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"플랫 페이지\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"플랫 페이지(들)\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"필수 항목입니다.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/lt/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Kostas  <tamosiunas@gmail.com>, 2011.\n# Simonas Simas <simonas@kazlauskas.me>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-18 10:56+0000\\n\"\n\"Last-Translator: Simonas Kazlauskas <simonas@kazlauskas.me>\\n\"\n\"Language-Team: Lithuanian (http://www.transifex.com/projects/p/django/\"\n\"language/lt/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: lt\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n\"\n\"%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"Sudėtingesni nustatymai\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"Nuoroda\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"\"\n\"Pavyzdžiui: '/about/contact/'. Įsitikink, kad yra pasvirieji brūkšniai \"\n\"pradžioj ir gale.\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\"Ši reikšmė gali būti sudaryta tik iš raidžių, skaičių, pabraukimų, brūkšnių \"\n\"ir/arba pasvirų brūkšnių.\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"Nuorodos pradžioje trūksta pasvirojo brūkšnio.\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"Nuorodos pabaigoje trūksta pasvirojo brūkšnio.\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"Paprastas puslapis su adresu %(url)s %(site)s puslapyje jau egzistuoja\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"pavadinimas\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"turinys\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"įjungti komentavimą\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"šablono vardas\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\"Pavyzdžiui: 'flatpages/contact_page.html'. Jeigu bus nenurodytas, sistema \"\n\"naudos 'flatpages/default.html'.\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"registracija privaloma\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"Jeigu pažymėta, tik prisijungę vartotojai galės matyti šį puslapį.\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"paprastas puslapis\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"paprasti puslapiai\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"Šis laukas yra privalomas.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/lv/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-18 10:56+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Latvian (http://www.transifex.com/projects/p/django/language/\"\n\"lv/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: lv\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : \"\n\"2);\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"Papildus opcijas\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"\"\n\"Piemēram: '/about/contact/'. Pārliecinieties, ka esat ievietojuši sākuma un \"\n\"beigu slīpsvītras.\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"virsraksts\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"saturs\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"ieslēgt komentārus\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"šablona nosaukums\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\"Piemēram: 'flatpages/contact_page.html'. Ja tas nav norādīts, sistēma \"\n\"lietos  'flatpages/default.html'.\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"reģistrācija obligāta\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"\"\n\"Ja šis ir atzīmēts, tikai pieslēgušies lietotāji, varēs piekļūt šai lapu.\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"vienkārša lapa\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"vienkāršas lapas\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"Šis lauks ir obligāts.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/mk/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <vvangelovski@gmail.com>, 2012.\n# vvangelovski <vvangelovski@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-18 10:56+0000\\n\"\n\"Last-Translator: vvangelovski <vvangelovski@gmail.com>\\n\"\n\"Language-Team: Macedonian (http://www.transifex.com/projects/p/django/\"\n\"language/mk/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: mk\\n\"\n\"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"Напредни можности\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"\"\n\"На пр. „/за_сајтот/контакт/“. Осигурајте се да имате коса црта и на крајот и \"\n\"на почетокот.\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\"Оваа вредност смее да има само букви, бројки, долни црти, црти, коси црти \"\n\"или тилди.\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"На линкот му недостасува почетна црта.\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"На линкот му недостасува завршна црта.\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"Страница со url %(url)s  веќе постои за сајт %(site)s\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"наслов\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"содржина\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"овозможи коментари\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"име на шаблонот\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\"На пр. „flatpages/kontakt.html'. Ако не го внесете ова, системот ќе користи \"\n\"„flatpages/default.html“.\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"потребна е регистрација\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"\"\n\"Ако ова е штиклирано, само најавените корисници ќе можат да ја гледаат оваа \"\n\"страница.\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"статична страница\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"статични страници\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"Ова поле е задолжително.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/ml/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Rajeesh Nair <rajeeshrnair@gmail.com>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-18 10:56+0000\\n\"\n\"Last-Translator: Rajeesh Nair <rajeeshrnair@gmail.com>\\n\"\n\"Language-Team: Malayalam (http://www.transifex.com/projects/p/django/\"\n\"language/ml/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ml\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"ഉന്നത സൗകര്യങ്ങള്‍\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"URL(വെബ്-വിലാസം)\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"ഉദാ: '/about/contact/'. ആദ്യവും അവസാനവും സ്ളാഷുകള്‍ നിര്‍ബന്ധം.\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\"ഈ വിലയില്‍ അക്ഷരങ്ങള്‍, അക്കങ്ങള്‍, വിരാമം (ബിന്ദു), അടിവര (അണ്ടര്‍സ്കോര്‍), വരകള്‍ (ഡാഷ്), സ്ളാഷ്\"\n\"(/), ടില്ഡ് (~) എന്നിവ മാത്രമേ പാടുള്ളൂ.\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"URLന്റെ മുന്‍വശത്ത് ഒരു സ്ലാഷിന്റെ കുറവുണ്ട്.\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"URLന്റെ പിന്‍വശത്ത് ഒരു സ്ലാഷിന്റെ കുറവുണ്ട്.\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"%(site)s എന്ന സൈറ്റിനു %(url)s എന്ന url ഉള്ള ഫ്ലാറ്റ്പേജ് നിലവിലുണ്ട്\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"ശീര്‍ഷകം\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"ഉള്ളടക്കം\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"അഭിപ്രായങ്ങള്‍ അനുവദിക്കുക\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"ടെമ്പ്ലേറ്റിന്റെ പേര്\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\"ഉദാ: 'flatpages/contact_page.html'. ഇതു നല്കിയില്ലെങ്കില്‍, 'flatpages/default.\"\n\"html' എന്ന വിലാസം ഉപയോഗിക്കപ്പെടും.\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"രജിസ്ട്രേഷന്‍ ആവശ്യമാണ്\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"ഇതു ടിക് ചെയ്താല്‍ പിന്നെ ലോഗ്-ഇന്‍ ചെയ്ത യൂസര്‍ക്കു മാത്രമേ ഈ പേജ് കാണാന്‍ കഴിയൂ.\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"ഫ്ളാറ്റ് പേജ്\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"ഫ്ളാറ്റ് പേജുകള്‍\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"ഈ കള്ളി(ഫീല്‍ഡ്) നിര്‍ബന്ധമാണ്.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/mn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Анхбаяр Анхаа <l.ankhbayar@gmail.com>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-18 10:56+0000\\n\"\n\"Last-Translator: Анхбаяр Анхаа <l.ankhbayar@gmail.com>\\n\"\n\"Language-Team: Mongolian (http://www.transifex.com/projects/p/django/\"\n\"language/mn/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: mn\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"Дээд хэрэглээний сонголтууд\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"\"\n\"Жишээ: '/about/contact/'. Хөтлөх буюу зам заах ташуу зураас байх хэрэгтэй.\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\"Энэ хэсэгт зөвхөн үсэг, тоо, цэг, доогуур зураас, налуу зураасууд бичих \"\n\"боломжтой. \"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"URL ийн эхний slash ийг мартсан байна.\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"URL ийн арийн slash ийг мартсан байна\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"Хуудасны хаяг %(url)s  %(site)s  дээр давхардаж байна.\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"гарчиг\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"агуулга\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"санал сэтгэгдэл үлдээх боломжтой болгох\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"загварын нэр\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\"Жишээ: 'flatpages/contact_page.html'. Хэрэв ийм зүйл гарч ирэхгүй бол систем \"\n\"'flatpages/default.html'-ийг хэрэглэнэ.\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"бүртгэгдсэн хэрэглэгчид үзнэ\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"\"\n\"Үүнийг чагтлавал зөвхөн сайтад нэвтэрсэн хэрэглэгч сайтыг харах боломжтой \"\n\"болно.\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"өөрчлөлтгүй хуудас\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"өөрчлөлтгүй хуудаснууд\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"Энэ талбарыг бөглөх шаардлагатай.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/nb/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <jonklo@gmail.com>, 2012.\n# jonklo <jonklo@gmail.com>, 2011.\n#   <sigurdga-transifex@sigurdga.no>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-18 10:56+0000\\n\"\n\"Last-Translator: Sigurd Gartmann <sigurdga-transifex@sigurdga.no>\\n\"\n\"Language-Team: Norwegian Bokmål (http://www.transifex.com/projects/p/django/\"\n\"language/nb/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: nb\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"Avanserte innstillinger\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"Nettadresse\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"\"\n\"Eksempel: «/om/kontakt/». Kontroller at det er en skråstrek foran og bak.\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\"Dette feltet kan kun inneholde bokstaver, nummer, skilletegn, understreker, \"\n\"bindestreker, skråstreker eller tilder.\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"URL mangler innledende skråstrek.\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"URL mangler avsluttende skråstrek.\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"Flatside med URL-en %(url)s finnes allerede for siden %(site)s\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"tittel\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"innhold\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"tillat kommentarer\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"malnavn\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\"Eksempel: «flatpages/kontakt_side.html». Hvis denne ikke er gitt, vil \"\n\"«flatpages/default.html» bli brukt.\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"krever registrering\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"Hvis denne er krysset av, kan kun innloggede brukere se siden.\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"flatside\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"flatsider\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"Feltet er påkrevet.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/ne/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Sagar Chalise <chalisesagar@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-18 10:56+0000\\n\"\n\"Last-Translator: Sagar Chalise <chalisesagar@gmail.com>\\n\"\n\"Language-Team: Nepali (http://www.transifex.com/projects/p/django/language/\"\n\"ne/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ne\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"उदाहरणका लागि: '/about/contact/' । अगाडि र पछाडि '/' राख्न नभुल्नुहोला ।\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"यो मानमा अंक, वर्ण, थोप्लो, अन्डरस्कोर, ड्यास, स्ल्यास र टिल्ड मात्र हुनुपर्दछ ।\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"शीर्षक\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"विषय\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"प्रतिकृयाको लागि मञ्जुरी दिनुहोस\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"यो फाँट अनिवार्य छ ।\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/nl/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Harro van der Klauw <hvdklauw@gmail.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Jeffrey Gelens <jeffrey@noppo.pro>, 2012.\n# Tino de Bruijn <tinodb@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-18 10:56+0000\\n\"\n\"Last-Translator: Harro van der Klauw <hvdklauw@gmail.com>\\n\"\n\"Language-Team: Dutch (http://www.transifex.com/projects/p/django/language/\"\n\"nl/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: nl\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"Geavanceerde opties\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"Voorbeeld: '/about/contact/'. Zorg voor slashes aan het begin en eind.\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\"Deze waarde mag alleen letters, cijfers, punten, lage streepjes, streepjes, \"\n\"schuine strepen of tildes bevatten.\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"In de URL ontbreekt een begin slash.\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"In de URL ontbreekt een eind slash.\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"Platte pagina met url %(url)s bestaat al voor site %(site)s\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"titel\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"inhoud\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"opmerkingen toestaan\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"sjabloonnaam\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\"Voorbeeld: 'flatpages/contact_page.html'. Als deze niet is opgegeven, dan \"\n\"wordt 'flatpages/default.html' gebruikt.\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"registratie verplicht\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"\"\n\"Indien dit is aangevinkt kunnen alleen ingelogde gebruikers deze pagina \"\n\"bekijken.\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"platte pagina\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"platte pagina's\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"Dit veld is verplicht.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/nn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# hgrimelid <havard@grimelid.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-18 10:56+0000\\n\"\n\"Last-Translator: hgrimelid <havard@grimelid.com>\\n\"\n\"Language-Team: Norwegian Nynorsk (http://www.transifex.com/projects/p/django/\"\n\"language/nn/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: nn\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"Avanserte innstillingar\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"Nettadresse\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"\"\n\"Eksempel: '/om/kontakt/'. Kontroller at det er ein skråstrek framfor og bak.\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\"Dette feltet kan berre innehalde bokstavar, nummer, skilleteikn, \"\n\"understrekar, bindestrekar, skråstrekar eller tilder.\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"tittel\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"innhald\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"tillat kommentarer\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"malnamn\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\"Døme: 'flatpages/kontakt_side.html'. Dersom denne ikkje er gjeve, vil \"\n\"'flatpages/default.html' bli brukt.\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"krevar registrering\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"Dersom denne er kryssa av, kan berre innlogga brukarar sjå sida.\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"flatside\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"flatsider\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"Feltet er påkravd.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/pa/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-18 10:56+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Panjabi (Punjabi) (http://www.transifex.com/projects/p/django/\"\n\"language/pa/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: pa\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"ਤਕਨੀਕੀ ਚੋਣਾਂ\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"ਟਾਈਟਲ\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"ਸਮੱਗਰੀ\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"ਟਿੱਪਣੀਆਂ ਚਾਲੂ\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"ਟੈਪਲੇਟ ਨਾਂ\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"ਰਜਿਸਟਰੇਸ਼ਨ ਲੋੜੀਦੀ ਹੈ\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"ਇਹ ਖੇਤਰ ਲਾਜ਼ਮੀ ਹੈ।\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/pl/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <angular.circle@gmail.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-18 10:56+0000\\n\"\n\"Last-Translator: angularcircle <angular.circle@gmail.com>\\n\"\n\"Language-Team: Polish (http://www.transifex.com/projects/p/django/language/\"\n\"pl/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: pl\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 \"\n\"|| n%100>=20) ? 1 : 2);\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"Opcje zaawansowane\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"\"\n\"Przykład: '/about/contact/'. Upewnij się że wpisałeś otwierający i \"\n\"zamykający ukośnik.\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\"To pole może zawierać jedynie litery, cyfry, kropki, podkreślenia, myślniki \"\n\"i ukośniki lub tyldy.\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"Na początku adresu URL brakuje ukośnika\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"Na końcu adresu URL brakuje ukośnika\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"\"\n\"Strona statyczna o adresie %(url)s została już utworzona dla domeny %(site)s\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"tytuł\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"zawartość\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"włącz komentarze\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"nazwa szablonu\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\"Przykład: 'flatpages/contact_page.html'. Jeżeli nie zostanie podane, system \"\n\"użyje 'flatpages/default.html'.\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"wymagana rejestracja\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"\"\n\"Jeżeli zaznaczone - tylko zalogowani użytkownicy będą mogli zobaczyć stronę.\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"strona statyczna\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"strony statyczne\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"To pole jest wymagane.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/pt/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Nuno Mariz <nmariz@gmail.com>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-18 10:56+0000\\n\"\n\"Last-Translator: Nuno Mariz <nmariz@gmail.com>\\n\"\n\"Language-Team: Portuguese (http://www.transifex.com/projects/p/django/\"\n\"language/pt/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: pt\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"Opções avançadas\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"\"\n\"Exemplo: '/about/contact/'. Verifique se possui as barras no inicio e no fim.\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\"Este valor apenas poderá conter letras, números, pontos, underscores, \"\n\"hífenes, barras ou tils.\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"Está a faltar a barra inicial no URL.\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"Está a faltar a barra final no URL.\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"A página plana com o url %(url)s já existe no site %(site)s\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"título\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"conteúdo\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"permitir comentários\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"nome da template\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\"Exemplo: 'flatpages/contact_page.html'. Se não for fornecido, o sistema \"\n\"usará: 'flatpages/default.html'.\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"é necessário registo\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"\"\n\"Se estiver selecionado, apenas utilizadores autenticados poderão ver esta \"\n\"página.\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"página plana\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"páginas planas\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"Este campo é obrigatório.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/pt_BR/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Eduardo Carvalho <eduardocereto@gmail.com>, 2011.\n# Guilherme Gondim <semente+transifex@taurinus.org>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-18 10:56+0000\\n\"\n\"Last-Translator: Guilherme Gondim <semente@taurinus.org>\\n\"\n\"Language-Team: Portuguese (Brazil) <django-l10n-portuguese@googlegroups.\"\n\"com>\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: pt_BR\\n\"\n\"Plural-Forms: nplurals=2; plural=(n > 1);\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"Opções avançadas\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"Exemplo: '/sobre/contato/'. Lembre-se das barras no começo e no final.\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\"Este valor deve conter apenas letras, números, pontos, sublinhados, traços, \"\n\"barras ou til.\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"Está faltando uma barra no início da URL.\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"Está faltando uma barra no final da URL.\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"Uma Flatpage com a URL %(url)s já existe para o site %(site)s \"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"título\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"conteúdo\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"habilitar comentários\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"nome do template\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\"Exemplo: 'flatpages/contact_page.html'. Se não for informado, será utilizado \"\n\"'flatpages/default.html'.\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"registro obrigatório\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"\"\n\"Se estiver assinalado, apenas usuários autenticados poderão ver a página.\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"página plana\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"páginas planas\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"Este campo é obrigatório.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/ro/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Daniel Ursache-Dogariu <contact@danniel.net>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-18 10:56+0000\\n\"\n\"Last-Translator: Daniel Ursache-Dogariu <contact@danniel.net>\\n\"\n\"Language-Team: Romanian (http://www.transifex.com/projects/p/django/language/\"\n\"ro/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ro\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?\"\n\"2:1));\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"Opțiuni avansate\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"\"\n\"Exemplu: '/despre/contact/'. Asigurați-vă că sunt bare oblice la început și \"\n\"la sfârșit.\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\"Această valoare trebuie să conţină doar litere, numere, puncte, linii joase, \"\n\"cratime, bare oblice sau tilde.\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"titlu\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"conținut\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"permite comentarii\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"nume șablon\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\"Exemplu: 'flatpages/contact_page.html'. Dacă aceasta nu există, sistemul va \"\n\"folosi 'flatpages/default.html'.\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"necesită înregistrare\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"\"\n\"Dacă aceasta este bifată, numai utilizatorii autentificați vor putea vedea \"\n\"pagina.\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"pagină statică\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"pagini statice\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"Acest câmp este obligatoriu.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/ru/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Eugene MechanisM <contact@mechanism.name>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Mike Yumatov <mike@yumatov.org>, 2011.\n# Алексей Борискин <sun.void@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-18 10:56+0000\\n\"\n\"Last-Translator: Алексей Борискин <sun.void@gmail.com>\\n\"\n\"Language-Team: Russian (http://www.transifex.com/projects/p/django/language/\"\n\"ru/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ru\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"Расширенные настройки\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"\"\n\"Пример: '/about/contact/'. Убедитесь, что ввели начальную и конечную косые \"\n\"черты.\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\"Значение должно состоять только из букв, цифр и символов точки, \"\n\"подчеркивания, тире, косой черты и тильды.\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"В начале URL отсутствует косая черта\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"В конце URL отсутствует косая черта\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"Простая страница с адресом %(url)s уже существует для сайта %(site)s\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"заголовок\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"содержимое\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"включить комментарии\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"имя шаблона\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\"Пример: 'flatpages/contact_page.html'. Если не указано, система будет \"\n\"использовать 'flatpages/default.html'.\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"требуется регистрация\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"Если отмечено, только вошедшие пользователи смогут видеть страницу.\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"простая страница\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"простые страницы\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"Обязательное поле.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/sk/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Marian Andre <marian@andre.sk>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-18 10:56+0000\\n\"\n\"Last-Translator: Marian Andre <marian@andre.sk>\\n\"\n\"Language-Team: Slovak (http://www.transifex.com/projects/p/django/language/\"\n\"sk/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sk\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"Pokročilé nastavenia\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"\"\n\"Príklad: '/about/contact/'. Uistite sa, že máte lomky na začiatku a na konci.\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\"Táto hodnota musí obsahovať len písmená, číslice, bodky, podčiarovníky, \"\n\"pomlčky, lomky alebo vlnovky.\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"V URL chýba úvodná lomka.\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"V URL chýba koncová lomka.\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"Statická stránka s url %(url)s pre sídlo %(site)s už existuje.\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"názov\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"obsah\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"povoliť komentáre\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"názov šablóny\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\"Príklad: 'flatpages/contact_page.html'. Ak nič nenapíšete, systém použije \"\n\"'flatpages/default.html'.\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"nutná registrácia\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"\"\n\"Ak je toto zaškrtnuté, stránku budú môcť prezerať len prihlásení \"\n\"používatelia.\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"statická stránka\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"statické stránky\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"Toto pole je povinné.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/sl/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Gašper Žejn <zejn@kiberpipa.org>, 2012.\n# iElectric <domen@dev.si>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <zejn@kiberpipa.org>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-31 19:50+0000\\n\"\n\"Last-Translator: mateju <>\\n\"\n\"Language-Team: Slovenian (http://www.transifex.com/projects/p/django/\"\n\"language/sl/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sl\\n\"\n\"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n\"\n\"%100==4 ? 2 : 3);\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"Napredne možnosti\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"Naslov URL\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"\"\n\"Primer: '/about/contact/'. Poševnica (/) mora biti na začetku in na koncu \"\n\"vnosa.\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\"Vsebina lahko vsebuje samo črke, številke, pike, podčrtaje, poševnice, \"\n\"črtice in tilde.\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"Na začetku naslov URL manjka poševnica.\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"Na koncu naslova URL manjka poševnica.\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"Enostavna stran na naslovu %(url)s že obstaja na strani %(site)s\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"naslov\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"vsebina\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"omogoči opombe\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"ime predloge\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\"Primer: 'flatpages/contact_page.html'. Kadar je to polje prazno, sistem \"\n\"uporabi 'flatpages/default.html'.\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"zahtevana je registracija\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"Izbrana možnost omogoča ogled strani le prijavljenim uporabnikom.\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"enostavna stran\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"enostavne strani\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"To polje mora biti izpolnjeno.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/sq/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Besnik <besnik@programeshqip.org>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-12-09 09:09+0000\\n\"\n\"Last-Translator: Besnik <besnik@programeshqip.org>\\n\"\n\"Language-Team: Albanian (http://www.transifex.com/projects/p/django/language/\"\n\"sq/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sq\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"Mundësi të mëtejshme\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"\"\n\"Shembull: '/rreth/kontakt/'. Sigurohuni që vendosni pjerraket përkatëse.\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\"Kjo vlerë duhet të përmbajë vetëm shkronja, numra, pika, nënvija, vija \"\n\"ndarëse, pjerrake ose shenjën afërsisht.\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"URL-së i mungon një pjerrake në krye.\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"URL-së i mungon një pjerrake në fund.\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"Ka tashmë një flatpage me url %(url)s për site-in %(site)s\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"titull\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"lëndë\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"aktivizo komente\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"emër gjedheje\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\"Shembull: 'flatpages/contact_page.html'. Nëse nuk ka një të tillë, sistemi \"\n\"do të përdorë 'flatpages/default.html'.\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"lypset regjistrim\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"\"\n\"Po iu vu shenjë kësaj, vetëm përdoruesit që kanë bërë hyrjen do të jenë në \"\n\"gjendje të shohin faqen.\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"faqe e e thjeshtë\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"faqe të thjeshta\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"Kjo fushë është e domosdoshme.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/sr/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Janos Guljas <janos@resenje.org>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-18 10:56+0000\\n\"\n\"Last-Translator: Janos Guljas <janos@resenje.org>\\n\"\n\"Language-Team: Serbian (http://www.transifex.com/projects/p/django/language/\"\n\"sr/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sr\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"Напредна подешавања\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"\"\n\"Пример: '/about/contact/'. Пазите на то да постоје и почетне и завршне косе \"\n\"црте.\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\"Унета вредност може садржати само слова, бројке, тачке, доње црте, црте, \"\n\"знаке разломка или тилде.\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"Недостаје коса црта на почетку URL-а.\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"Недостаје коса црта на крају URL-а.\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"Страница са адресом %(url)s већ постоји за сајт %(site)s\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"наслов\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"садржај\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"омогући коментарисање\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"назив темплејта\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\"Пример: 'flatpages/contact_page.html'. Ако ово оставите празним, систем ће \"\n\"користити 'flatpages/default.html'.\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"потребна регистрација\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"\"\n\"Ако је ово обележено, само ће пријављени корисници моћи да виде ову страницу.\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"флет страница\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"флет странице\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"Ово поље се мора попунити.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/sr_Latn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Janos Guljas <janos@resenje.org>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-18 10:56+0000\\n\"\n\"Last-Translator: Janos Guljas <janos@resenje.org>\\n\"\n\"Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/django/\"\n\"language/sr@latin/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sr@latin\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"Napredna podešavanja\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"\"\n\"Primer: '/about/contact/'. Pazite na to da postoje i početne i završne kose \"\n\"crte.\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\"Uneta vrednost može sadržati samo slova, brojke, tačke, donje crte, crte, \"\n\"znake razlomka ili tilde.\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"Nedostaje kosa crta na početku URL-a.\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"Nedostaje kosa crta na kraju URL-a.\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"Stranica sa adresom %(url)s već postoji za sajt %(site)s\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"naslov\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"sadržaj\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"omogući komentarisanje\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"naziv templejta\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\"Primer: 'flatpages/contact_page.html'. Ako ovo ostavite praznim, sistem će \"\n\"koristiti 'flatpages/default.html'.\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"potrebna registracija\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"\"\n\"Ako je ovo obeleženo, samo će prijavljeni korisnici moći da vide ovu \"\n\"stranicu.\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"flet stranica\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"flet stranice\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"Ovo polje se mora popuniti.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/sv/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Andreas Pelme <andreas@pelme.se>, 2011, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-18 10:56+0000\\n\"\n\"Last-Translator: Andreas Pelme <andreas@pelme.se>\\n\"\n\"Language-Team: Swedish (http://www.transifex.com/projects/p/django/language/\"\n\"sv/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sv\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"Avancerade inställningar\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"\"\n\"Exempel: '/om/kontakt/'. Se till att ha inledande och avslutande snedstreck.\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\"Detta värde får endast innehålla bokstäver, siffror, punkter, understreck, \"\n\"bindestreck, snedstreck och tilde.\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"URL:en saknar ett inledande snedstreck.\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"URL:en saknar ett avslutande snedstreck.\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"Statisk sida med %(url)s finns redan för webbplatsen %(site)s\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"titel\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"innehåll\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"aktivera kommentarer\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"mallnamn\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\"Exempel: 'sidor/kontaktsida.html'. Om detta inte fylls i kommer systemet att \"\n\"använda 'flatpages/default.html'.\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"registrering krävs\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"Om detta bockas för kommer endast inloggade användare kunna se sidan.\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"statisk sida\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"statiska sidor\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"Detta fält måste fyllas i.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/sw/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-18 10:56+0000\\n\"\n\"Last-Translator: machaku <bmachaku@gmail.com>\\n\"\n\"Language-Team: Swahili (http://www.transifex.com/projects/p/django/language/\"\n\"sw/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sw\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"Chaguzi za hali ya juu\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"kichwa\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"maudhui\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"ruhusu maoni\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"usajili unahitajika\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"Sehemu hii inahitajika\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/ta/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-18 10:56+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Tamil (http://www.transifex.com/projects/p/django/language/\"\n\"ta/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ta\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"உதாரணம்: '/about/contact/'. முன்னும் பின்னும் '/' உள்ளதை உறுதி செய்க.\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"தலைப்பு\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"பொருளடக்கம்\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"விமர்சனங்களை செயலாக்கு\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"வார்ப்புரு பெயர்\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\"உதாரணம்  'flatpages/contact_page'. இது இல்லையெனில் 'flatpages/default' என்பதே \"\n\"பயன்படுத்தப்படும்.ப்படும்.\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"முன்பதிவு தேவை\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"\"\n\"இது தெரிவு செய்யப்பட்டிருந்தால், உள்நுழைந்த பயனர்கள் மட்டுமே இந்தப் பக்கத்தை பார்க்க முடியும்.\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"எளிய பக்கம்\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"எளிய பக்கங்கள்\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"இந்த  புலத்தில் மதிப்பு தேவை\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/te/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-18 10:56+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Telugu (http://www.transifex.com/projects/p/django/language/\"\n\"te/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: te\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"పట్టము\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"సూచన \"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\"ఉదాహరణ: 'flatpages/contact_page.html'.ఇది ఇవ్వకపోతే సిస్టం  'flatpages/default.\"\n\"html' ని వాడుకుంటడి\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"నమొదు చేయటము అవసరం\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"ఇది చెక్ చేసి ఉంటే కేవలం లాగ్గడ్ ఇన్ యూజర్లు పేజి చూడలేస్తారు\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"ఈ ఫీల్డ్ అవసరము\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/th/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Kowit Charoenratchatabhan <kowito@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-18 10:56+0000\\n\"\n\"Last-Translator: Kowit Charoenratchatabhan <kowit.s.c@gmail.com>\\n\"\n\"Language-Team: Thai (http://www.transifex.com/projects/p/django/language/\"\n\"th/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: th\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"ตัวเลือกเพิ่มเติม\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"ตัวอย่าง: '/about/contact/'. ต้องแน่ใจว่าขึ้นต้นและลงท้ายด้วยเครื่องหมาย /\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"ค่านี้จะต้องประกอบด้วยตัวอักษร, ตัวเลข, จุด, ขีดขีดกลาง, เครื่องหมาย / หรือตัวหนอน\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"เครื่องหมาย \\\"/\\\" นำหน้า URL หายไป\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"เครื่องหมาย \\\"/\\\" ตามหลัง URL หายไป\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"หน้าเรียบชื่อ %(url)s ถูกใช้ไปแล้วสำหรับ %(site)s\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"หัวข้อ\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"เนื้อหา\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"ใช้งานข้อติชม\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"ชื่อเทมเพลต\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\"ตัวอย่าง: 'flatpages/contact_page.html' ถ้าไม่ได้ถูกใช้ ระบบจะใช้ 'flatpages/default.\"\n\"html' \"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"ต้องลงทะเบียนก่อน\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"ถ้าถูกเลือก ผู้ใช้ที่ลงทะเบียนเข้าสู่ระบบเท่านั้นที่จะสามารถดูหน้านี้\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"หน้าเรียบ\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"หน้าเรียบ\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"ฟิลด์นี้จำเป็น\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/tr/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Metin Amiroff <amiroff@gmail.com>, 2011.\n# Murat Çorlu <muratcorlu@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-18 10:56+0000\\n\"\n\"Last-Translator: Murat Çorlu <muratcorlu@gmail.com>\\n\"\n\"Language-Team: Turkish (http://www.transifex.com/projects/p/django/language/\"\n\"tr/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: tr\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"Gelişmiş seçenekler\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"\"\n\"Örnek: '/about/contact/'. Başında ve sonunda bölü işareti olduğundan emin \"\n\"olun.\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\"Bu değer sadece harf, rakam, nokta, alt çizgi, tire, bölme veya yaklaşık \"\n\"işareti içerebilir.\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"URL başında bölü işareti yok.\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"URL sonunda bölü işareti yok.\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"%(url)s adresli düz sayfa %(site)s sitesinde zaten mevcut\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"başlık\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"içerik\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"yorumlara izin ver\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"şablon adı\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\"Örnek: 'flatpages/contact_page.html'. Eğer birşey yazılmazsa, sistem \"\n\"otomatik olarak 'flatpages/default.html' kullanacak.\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"kayıt gerekli\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"Bu seçili ise, sadece kayıtlı kullanıcılar sayfayı görüntüleyebilir.\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"düz sayfa\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"düz sayfalar\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"Bu alan zorunludur.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/tt/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Azat Khasanshin <lordofbazuks@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-18 10:56+0000\\n\"\n\"Last-Translator: Azat Khasanshin <lordofbazuks@gmail.com>\\n\"\n\"Language-Team: Tatar (http://www.transifex.com/projects/p/django/language/\"\n\"tt/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: tt\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"Өстәмә көйләүләр\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"\"\n\"Үрнәк: '/about/contact/'. Алдынгы һәм арттагы авыш сызыкларын кертүне \"\n\"тикшерегез.\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\"Бу кыйммәт тик хәрефләрдән, саннардан һәм нокта, астына сызу, тире, авыш \"\n\"сызык, тильда билгеләреннән генә тора ала.\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"башлам\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"эчтәлек\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"фикерләрне ялгарга\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"шаблон исеме\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\"Үрнәк: 'flatpages/contact_page.html'. Күрсәтелгән булмаса, система \"\n\"'flatpages/defalut.html' кулланыр.\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"теркәлү кирәк\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"\"\n\"Билгеләнгән булса, фәкать кергән кулланучылар гына сәхифәне күрә алырлар.\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"гади сәхифә\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"гади сәхифәләр\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"Мәҗбүри кыр.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/udm/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2011-01-19 16:48+0000\\n\"\n\"Last-Translator: Django team\\n\"\n\"Language-Team: Udmurt (http://www.transifex.com/projects/p/django/language/\"\n\"udm/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: udm\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"Та клуэ.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/uk/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Sergey Lysach <sergikoff88@gmail.com>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-18 10:56+0000\\n\"\n\"Last-Translator: Sergey Lysach <sergikoff88@gmail.com>\\n\"\n\"Language-Team: Ukrainian (http://www.transifex.com/projects/p/django/\"\n\"language/uk/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: uk\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"Додаткові опції\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"\"\n\"Приклад: '/about/contact/'. Переконайтеся у наявності слешу на початку та у \"\n\"кінці.\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\"Це значення повинне містити тільки літери, цифри, крапки, підкреслення, \"\n\"тире, косі риси чи тільди.\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"На початку URL відсутня коса риса.\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"В кінці URL відсутня коса риса.\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"Проста сторінка з адресою %(url)s вже існує для сайту %(site)s\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"заголовок\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"зміст\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"увімкнути коментарі\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"ім'я шаблона\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\"Приклад: 'flatpages/contact_page'. Якщо це не надано, система буда \"\n\"використовувати 'flatpages/default'.\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"потрібна реєстрація\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"\"\n\"Якщо тут є галочка, тільки користувачі, що увійшли, зможуть переглядати цю \"\n\"сторінку.\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"проста сторінка\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"прості сторінки\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"Це поле обов'язкове.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/ur/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Mansoorulhaq Mansoor <mansoorulhaq1986@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-18 10:56+0000\\n\"\n\"Last-Translator: Mansoorulhaq Mansoor <mansoorulhaq1986@gmail.com>\\n\"\n\"Language-Team: Urdu (http://www.transifex.com/projects/p/django/language/\"\n\"ur/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ur\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"اعلٰی اختیارات\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"یو آر ایل (URL(\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"\"\n\"مثال:  '/about/contact/'۔ یقین کر لیں کہ سابقہ اور لاحقہ سلیش موجود ھے۔\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\"اس قیمت (ویلیو) کا صرف حروف، نمبروں، نقاط، انڈرسکور، ڈیش، سلیش، یا ٹائلڈ پر \"\n\"مشتمل ھونا ضروری ھے۔\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"عنوان\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"مضمون\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"تبصرے فعال کریں\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"قالب کا نام\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\"مثال: 'flatpages/contact_page.html'۔ اگر یہ مھیا نھیں کیا گیا تو سسٹم \"\n\"'flatpages/default.html' استعمال کرے گا۔\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"رجسٹریشن ضروری ھے\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"\"\n\"اگر یہ فعال ھے تو صرف اندر آئے ھوئے (logged-in) صارفین یہ صفحہ دیکھنے کے \"\n\"قابل ھوں گے۔\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"ھموار صفحہ\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"ھموار صفحے\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"یہ خانہ درکار ھے۔\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/vi/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Tran  <hongdiepkien@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-18 10:56+0000\\n\"\n\"Last-Translator: Tran <hongdiepkien@gmail.com>\\n\"\n\"Language-Team: Vietnamese (http://www.transifex.com/projects/p/django/\"\n\"language/vi/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: vi\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"Các lựa chọn \"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"tiêu đề\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"nội dung\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"mở bình luận\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"tên thiết kế\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"Bạn cần phải cần đăng kí\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"\"\n\"Nếu bạn đánh dấu vào đây, chỉ những tài khoản đã đăng nhập mới có thể xem \"\n\"được trang này.\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"Trường này là bắt buộc.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/zh_CN/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Kevin Shi <leiarix@gmail.com>, 2012.\n# Lele Long <schemacs@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-18 10:56+0000\\n\"\n\"Last-Translator: 磊 施 <leiarix@gmail.com>\\n\"\n\"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/django/\"\n\"language/zh_CN/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: zh_CN\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"高级选项\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"例如：'/about/contact/'。请确保开始和结尾的斜杠。\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"该值必须只能包含字母，数字，点号，下划线，破折号，和\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"URL头部缺失斜线.\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"URL尾部缺失斜线.\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"带有url %(url)s的Flatpage已经存在于站点 %(site)s\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"标题\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"内容\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"允许评论\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"模板名称\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\"例如：'flatpages/contact_page.html'。若未提供，系统将使用'flatpages/default.\"\n\"html'。\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"请先注册\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"如果被选中，仅登录用户才可以查看此页。\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"简单页面\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"简单页面\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"这个字段是必填项。\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/locale/zh_TW/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <ilay@ilay.tw>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# quantum9876 <quantum9876@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-18 10:56+0000\\n\"\n\"Last-Translator: ilay <ilay@ilay.tw>\\n\"\n\"Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/django/\"\n\"language/zh_TW/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: zh_TW\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: admin.py:10\nmsgid \"Advanced options\"\nmsgstr \"進階選項\"\n\n#: forms.py:7 models.py:11\nmsgid \"URL\"\nmsgstr \"URL\"\n\n#: forms.py:8\nmsgid \"\"\n\"Example: '/about/contact/'. Make sure to have leading and trailing slashes.\"\nmsgstr \"例如： '/about/contact/'。開頭與結束的斜線。\"\n\n#: forms.py:10\nmsgid \"\"\n\"This value must contain only letters, numbers, dots, underscores, dashes, \"\n\"slashes or tildes.\"\nmsgstr \"\"\n\"此欄位只能有: 英文字母、數字、點(.)、底線(_)、刪節號(-)、斜線(/)、波浪號(~)。\"\n\n#: forms.py:19\nmsgid \"URL is missing a leading slash.\"\nmsgstr \"URL 缺少前導的斜線。\"\n\n#: forms.py:23\nmsgid \"URL is missing a trailing slash.\"\nmsgstr \"URL 缺少一個斜線。\"\n\n#: forms.py:38\n#, python-format\nmsgid \"Flatpage with url %(url)s already exists for site %(site)s\"\nmsgstr \"網站 %(site)s 已經存在一個浮動頁面，其位址為 %(url)s。\"\n\n#: models.py:12\nmsgid \"title\"\nmsgstr \"標題\"\n\n#: models.py:13\nmsgid \"content\"\nmsgstr \"內容\"\n\n#: models.py:14\nmsgid \"enable comments\"\nmsgstr \"啟用評論\"\n\n#: models.py:15\nmsgid \"template name\"\nmsgstr \"模板名稱\"\n\n#: models.py:16\nmsgid \"\"\n\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system \"\n\"will use 'flatpages/default.html'.\"\nmsgstr \"\"\n\"例如： 'flatpages/contact_page'。如果沒有提供它，系統會使用 'flatpages/\"\n\"default.html'。\"\n\n#: models.py:17\nmsgid \"registration required\"\nmsgstr \"請先註冊\"\n\n#: models.py:17\nmsgid \"If this is checked, only logged-in users will be able to view the page.\"\nmsgstr \"如果此項被選取，則只有登入的使用者可以檢視頁面。\"\n\n#: models.py:22\nmsgid \"flat page\"\nmsgstr \"簡平頁面\"\n\n#: models.py:23\nmsgid \"flat pages\"\nmsgstr \"簡平頁面\"\n\n#: tests/forms.py:97\nmsgid \"This field is required.\"\nmsgstr \"這個欄位是必須的。\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/middleware.py",
    "content": "from django.contrib.flatpages.views import flatpage\nfrom django.http import Http404\nfrom django.conf import settings\n\nclass FlatpageFallbackMiddleware(object):\n    def process_response(self, request, response):\n        if response.status_code != 404:\n            return response # No need to check for a flatpage for non-404 responses.\n        try:\n            return flatpage(request, request.path_info)\n        # Return the original response if any errors happened. Because this\n        # is a middleware, we can't assume the errors will be caught elsewhere.\n        except Http404:\n            return response\n        except:\n            if settings.DEBUG:\n                raise\n            return response\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/models.py",
    "content": "from __future__ import unicode_literals\n\nfrom django.db import models\nfrom django.contrib.sites.models import Site\nfrom django.utils.translation import ugettext_lazy as _\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n@python_2_unicode_compatible\nclass FlatPage(models.Model):\n    url = models.CharField(_('URL'), max_length=100, db_index=True)\n    title = models.CharField(_('title'), max_length=200)\n    content = models.TextField(_('content'), blank=True)\n    enable_comments = models.BooleanField(_('enable comments'))\n    template_name = models.CharField(_('template name'), max_length=70, blank=True,\n        help_text=_(\"Example: 'flatpages/contact_page.html'. If this isn't provided, the system will use 'flatpages/default.html'.\"))\n    registration_required = models.BooleanField(_('registration required'), help_text=_(\"If this is checked, only logged-in users will be able to view the page.\"))\n    sites = models.ManyToManyField(Site)\n\n    class Meta:\n        db_table = 'django_flatpage'\n        verbose_name = _('flat page')\n        verbose_name_plural = _('flat pages')\n        ordering = ('url',)\n\n    def __str__(self):\n        return \"%s -- %s\" % (self.url, self.title)\n\n    def get_absolute_url(self):\n        return self.url\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/templatetags/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/templatetags/flatpages.py",
    "content": "from django import template\nfrom django.conf import settings\nfrom django.contrib.flatpages.models import FlatPage\nfrom django.contrib.sites.models import get_current_site\n\n\nregister = template.Library()\n\n\nclass FlatpageNode(template.Node):\n    def __init__(self, context_name, starts_with=None, user=None):\n        self.context_name = context_name\n        if starts_with:\n            self.starts_with = template.Variable(starts_with)\n        else:\n            self.starts_with = None\n        if user:\n            self.user = template.Variable(user)\n        else:\n            self.user = None\n\n    def render(self, context):\n        if 'request' in context:\n            site_pk = get_current_site(context['request']).pk\n        else:\n            site_pk = settings.SITE_ID\n        flatpages = FlatPage.objects.filter(sites__id=site_pk)\n        # If a prefix was specified, add a filter\n        if self.starts_with:\n            flatpages = flatpages.filter(\n                url__startswith=self.starts_with.resolve(context))\n\n        # If the provided user is not authenticated, or no user\n        # was provided, filter the list to only public flatpages.\n        if self.user:\n            user = self.user.resolve(context)\n            if not user.is_authenticated():\n                flatpages = flatpages.filter(registration_required=False)\n        else:\n            flatpages = flatpages.filter(registration_required=False)\n\n        context[self.context_name] = flatpages\n        return ''\n\n\n@register.tag\ndef get_flatpages(parser, token):\n    \"\"\"\n    Retrieves all flatpage objects available for the current site and\n    visible to the specific user (or visible to all users if no user is\n    specified). Populates the template context with them in a variable\n    whose name is defined by the ``as`` clause.\n\n    An optional ``for`` clause can be used to control the user whose\n    permissions are to be used in determining which flatpages are visible.\n\n    An optional argument, ``starts_with``, can be applied to limit the\n    returned flatpages to those beginning with a particular base URL.\n    This argument can be passed as a variable or a string, as it resolves\n    from the template context.\n\n    Syntax::\n\n        {% get_flatpages ['url_starts_with'] [for user] as context_name %}\n\n    Example usage::\n\n        {% get_flatpages as flatpages %}\n        {% get_flatpages for someuser as flatpages %}\n        {% get_flatpages '/about/' as about_pages %}\n        {% get_flatpages prefix as about_pages %}\n        {% get_flatpages '/about/' for someuser as about_pages %}\n    \"\"\"\n    bits = token.split_contents()\n    syntax_message = (\"%(tag_name)s expects a syntax of %(tag_name)s \"\n                       \"['url_starts_with'] [for user] as context_name\" %\n                       dict(tag_name=bits[0]))\n   # Must have at 3-6 bits in the tag\n    if len(bits) >= 3 and len(bits) <= 6:\n\n        # If there's an even number of bits, there's no prefix\n        if len(bits) % 2 == 0:\n            prefix = bits[1]\n        else:\n            prefix = None\n\n        # The very last bit must be the context name\n        if bits[-2] != 'as':\n            raise template.TemplateSyntaxError(syntax_message)\n        context_name = bits[-1]\n\n        # If there are 5 or 6 bits, there is a user defined\n        if len(bits) >= 5:\n            if bits[-4] != 'for':\n                raise template.TemplateSyntaxError(syntax_message)\n            user = bits[-3]\n        else:\n            user = None\n\n        return FlatpageNode(context_name, starts_with=prefix, user=user)\n    else:\n        raise template.TemplateSyntaxError(syntax_message)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/tests/__init__.py",
    "content": "from django.contrib.flatpages.tests.csrf import *\nfrom django.contrib.flatpages.tests.forms import *\nfrom django.contrib.flatpages.tests.middleware import *\nfrom django.contrib.flatpages.tests.templatetags import *\nfrom django.contrib.flatpages.tests.views import *\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/tests/csrf.py",
    "content": "import os\nfrom django.conf import settings\nfrom django.contrib.auth.models import User\nfrom django.contrib.auth.tests.utils import skipIfCustomUser\nfrom django.test import TestCase, Client\nfrom django.test.utils import override_settings\n\n\n@override_settings(\n    LOGIN_URL='/accounts/login/',\n    MIDDLEWARE_CLASSES=(\n        'django.middleware.common.CommonMiddleware',\n        'django.contrib.sessions.middleware.SessionMiddleware',\n        'django.middleware.csrf.CsrfViewMiddleware',\n        'django.contrib.auth.middleware.AuthenticationMiddleware',\n        'django.contrib.messages.middleware.MessageMiddleware',\n        'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware',\n    ),\n    TEMPLATE_DIRS=(\n        os.path.join(os.path.dirname(__file__), 'templates'),\n    ),\n    SITE_ID=1,\n)\nclass FlatpageCSRFTests(TestCase):\n    fixtures = ['sample_flatpages', 'example_site']\n    urls = 'django.contrib.flatpages.tests.urls'\n\n    def setUp(self):\n        self.client = Client(enforce_csrf_checks=True)\n\n    def test_view_flatpage(self):\n        \"A flatpage can be served through a view, even when the middleware is in use\"\n        response = self.client.get('/flatpage_root/flatpage/')\n        self.assertEqual(response.status_code, 200)\n        self.assertContains(response, \"<p>Isn't it flat!</p>\")\n\n    def test_view_non_existent_flatpage(self):\n        \"A non-existent flatpage raises 404 when served through a view, even when the middleware is in use\"\n        response = self.client.get('/flatpage_root/no_such_flatpage/')\n        self.assertEqual(response.status_code, 404)\n\n    @skipIfCustomUser\n    def test_view_authenticated_flatpage(self):\n        \"A flatpage served through a view can require authentication\"\n        response = self.client.get('/flatpage_root/sekrit/')\n        self.assertRedirects(response, '/accounts/login/?next=/flatpage_root/sekrit/')\n        User.objects.create_user('testuser', 'test@example.com', 's3krit')\n        self.client.login(username='testuser',password='s3krit')\n        response = self.client.get('/flatpage_root/sekrit/')\n        self.assertEqual(response.status_code, 200)\n        self.assertContains(response, \"<p>Isn't it sekrit!</p>\")\n\n    def test_fallback_flatpage(self):\n        \"A flatpage can be served by the fallback middlware\"\n        response = self.client.get('/flatpage/')\n        self.assertEqual(response.status_code, 200)\n        self.assertContains(response, \"<p>Isn't it flat!</p>\")\n\n    def test_fallback_non_existent_flatpage(self):\n        \"A non-existent flatpage raises a 404 when served by the fallback middlware\"\n        response = self.client.get('/no_such_flatpage/')\n        self.assertEqual(response.status_code, 404)\n\n    def test_post_view_flatpage(self):\n        \"POSTing to a flatpage served through a view will raise a CSRF error if no token is provided (Refs #14156)\"\n        response = self.client.post('/flatpage_root/flatpage/')\n        self.assertEqual(response.status_code, 403)\n\n    def test_post_fallback_flatpage(self):\n        \"POSTing to a flatpage served by the middleware will raise a CSRF error if no token is provided (Refs #14156)\"\n        response = self.client.post('/flatpage/')\n        self.assertEqual(response.status_code, 403)\n\n    def test_post_unknown_page(self):\n        \"POSTing to an unknown page isn't caught as a 403 CSRF error\"\n        response = self.client.post('/no_such_page/')\n        self.assertEqual(response.status_code, 404)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/tests/forms.py",
    "content": "from __future__ import unicode_literals\n\nfrom django.conf import settings\nfrom django.contrib.flatpages.forms import FlatpageForm\nfrom django.contrib.flatpages.models import FlatPage\nfrom django.test import TestCase\nfrom django.test.utils import override_settings\nfrom django.utils import translation\n\n@override_settings(SITE_ID=1)\nclass FlatpageAdminFormTests(TestCase):\n    fixtures = ['example_site']\n\n    def setUp(self):\n        self.form_data = {\n            'title': \"A test page\",\n            'content': \"This is a test\",\n            'sites': [settings.SITE_ID],\n        }\n\n    def test_flatpage_admin_form_url_validation(self):\n        \"The flatpage admin form correctly validates urls\"\n        self.assertTrue(FlatpageForm(data=dict(url='/new_flatpage/', **self.form_data)).is_valid())\n        self.assertTrue(FlatpageForm(data=dict(url='/some.special~chars/', **self.form_data)).is_valid())\n        self.assertTrue(FlatpageForm(data=dict(url='/some.very_special~chars-here/', **self.form_data)).is_valid())\n\n        self.assertFalse(FlatpageForm(data=dict(url='/a space/', **self.form_data)).is_valid())\n        self.assertFalse(FlatpageForm(data=dict(url='/a % char/', **self.form_data)).is_valid())\n        self.assertFalse(FlatpageForm(data=dict(url='/a ! char/', **self.form_data)).is_valid())\n        self.assertFalse(FlatpageForm(data=dict(url='/a & char/', **self.form_data)).is_valid())\n        self.assertFalse(FlatpageForm(data=dict(url='/a ? char/', **self.form_data)).is_valid())\n\n    def test_flatpage_requires_leading_slash(self):\n        form = FlatpageForm(data=dict(url='no_leading_slash/', **self.form_data))\n        with translation.override('en'):\n            self.assertFalse(form.is_valid())\n            self.assertEqual(form.errors['url'], [\"URL is missing a leading slash.\"])\n\n    @override_settings(APPEND_SLASH=True,\n            MIDDLEWARE_CLASSES=('django.middleware.common.CommonMiddleware',))\n    def test_flatpage_requires_trailing_slash_with_append_slash(self):\n        form = FlatpageForm(data=dict(url='/no_trailing_slash', **self.form_data))\n        with translation.override('en'):\n            self.assertFalse(form.is_valid())\n            self.assertEqual(form.errors['url'], [\"URL is missing a trailing slash.\"])\n\n    @override_settings(APPEND_SLASH=False,\n            MIDDLEWARE_CLASSES=('django.middleware.common.CommonMiddleware',))\n    def test_flatpage_doesnt_requires_trailing_slash_without_append_slash(self):\n        form = FlatpageForm(data=dict(url='/no_trailing_slash', **self.form_data))\n        self.assertTrue(form.is_valid())\n\n    def test_flatpage_admin_form_url_uniqueness_validation(self):\n        \"The flatpage admin form correctly enforces url uniqueness among flatpages of the same site\"\n        data = dict(url='/myflatpage1/', **self.form_data)\n\n        FlatpageForm(data=data).save()\n\n        f = FlatpageForm(data=data)\n\n        self.assertFalse(f.is_valid())\n\n        self.assertEqual(\n            f.errors,\n            {'__all__': ['Flatpage with url /myflatpage1/ already exists for site example.com']})\n\n    def test_flatpage_admin_form_edit(self):\n        \"\"\"\n        Existing flatpages can be edited in the admin form without triggering\n        the url-uniqueness validation.\n\n        \"\"\"\n        existing = FlatPage.objects.create(\n            url=\"/myflatpage1/\", title=\"Some page\", content=\"The content\")\n        existing.sites.add(settings.SITE_ID)\n\n        data = dict(url='/myflatpage1/', **self.form_data)\n\n        f = FlatpageForm(data=data, instance=existing)\n\n        self.assertTrue(f.is_valid(), f.errors)\n\n        updated = f.save()\n\n        self.assertEqual(updated.title, \"A test page\")\n\n    def test_flatpage_nosites(self):\n        data = dict(url='/myflatpage1/', **self.form_data)\n        data.update({'sites': ''})\n\n        f = FlatpageForm(data=data)\n\n        self.assertFalse(f.is_valid())\n\n        self.assertEqual(\n            f.errors,\n            {'sites': [translation.ugettext('This field is required.')]})\n\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/tests/middleware.py",
    "content": "import os\nfrom django.conf import settings\nfrom django.contrib.auth.models import User\nfrom django.contrib.auth.tests.utils import skipIfCustomUser\nfrom django.contrib.flatpages.models import FlatPage\nfrom django.test import TestCase\nfrom django.test.utils import override_settings\n\n\n@override_settings(\n    LOGIN_URL='/accounts/login/',\n    MIDDLEWARE_CLASSES=(\n        'django.middleware.common.CommonMiddleware',\n        'django.contrib.sessions.middleware.SessionMiddleware',\n        'django.middleware.csrf.CsrfViewMiddleware',\n        'django.contrib.auth.middleware.AuthenticationMiddleware',\n        'django.contrib.messages.middleware.MessageMiddleware',\n        'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware',\n    ),\n    TEMPLATE_DIRS=(\n        os.path.join(os.path.dirname(__file__), 'templates'),\n    ),\n    SITE_ID=1,\n)\nclass FlatpageMiddlewareTests(TestCase):\n    fixtures = ['sample_flatpages', 'example_site']\n    urls = 'django.contrib.flatpages.tests.urls'\n\n    def test_view_flatpage(self):\n        \"A flatpage can be served through a view, even when the middleware is in use\"\n        response = self.client.get('/flatpage_root/flatpage/')\n        self.assertEqual(response.status_code, 200)\n        self.assertContains(response, \"<p>Isn't it flat!</p>\")\n\n    def test_view_non_existent_flatpage(self):\n        \"A non-existent flatpage raises 404 when served through a view, even when the middleware is in use\"\n        response = self.client.get('/flatpage_root/no_such_flatpage/')\n        self.assertEqual(response.status_code, 404)\n\n    @skipIfCustomUser\n    def test_view_authenticated_flatpage(self):\n        \"A flatpage served through a view can require authentication\"\n        response = self.client.get('/flatpage_root/sekrit/')\n        self.assertRedirects(response, '/accounts/login/?next=/flatpage_root/sekrit/')\n        User.objects.create_user('testuser', 'test@example.com', 's3krit')\n        self.client.login(username='testuser',password='s3krit')\n        response = self.client.get('/flatpage_root/sekrit/')\n        self.assertEqual(response.status_code, 200)\n        self.assertContains(response, \"<p>Isn't it sekrit!</p>\")\n\n    def test_fallback_flatpage(self):\n        \"A flatpage can be served by the fallback middlware\"\n        response = self.client.get('/flatpage/')\n        self.assertEqual(response.status_code, 200)\n        self.assertContains(response, \"<p>Isn't it flat!</p>\")\n\n    def test_fallback_non_existent_flatpage(self):\n        \"A non-existent flatpage raises a 404 when served by the fallback middlware\"\n        response = self.client.get('/no_such_flatpage/')\n        self.assertEqual(response.status_code, 404)\n\n    @skipIfCustomUser\n    def test_fallback_authenticated_flatpage(self):\n        \"A flatpage served by the middleware can require authentication\"\n        response = self.client.get('/sekrit/')\n        self.assertRedirects(response, '/accounts/login/?next=/sekrit/')\n        User.objects.create_user('testuser', 'test@example.com', 's3krit')\n        self.client.login(username='testuser',password='s3krit')\n        response = self.client.get('/sekrit/')\n        self.assertEqual(response.status_code, 200)\n        self.assertContains(response, \"<p>Isn't it sekrit!</p>\")\n\n    def test_fallback_flatpage_special_chars(self):\n        \"A flatpage with special chars in the URL can be served by the fallback middleware\"\n        fp = FlatPage.objects.create(\n            url=\"/some.very_special~chars-here/\",\n            title=\"A very special page\",\n            content=\"Isn't it special!\",\n            enable_comments=False,\n            registration_required=False,\n        )\n        fp.sites.add(settings.SITE_ID)\n\n        response = self.client.get('/some.very_special~chars-here/')\n        self.assertEqual(response.status_code, 200)\n        self.assertContains(response, \"<p>Isn't it special!</p>\")\n\n\n@override_settings(\n    APPEND_SLASH = True,\n    LOGIN_URL='/accounts/login/',\n    MIDDLEWARE_CLASSES=(\n        'django.middleware.common.CommonMiddleware',\n        'django.contrib.sessions.middleware.SessionMiddleware',\n        'django.middleware.csrf.CsrfViewMiddleware',\n        'django.contrib.auth.middleware.AuthenticationMiddleware',\n        'django.contrib.messages.middleware.MessageMiddleware',\n        'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware',\n    ),\n    TEMPLATE_DIRS=(\n        os.path.join(os.path.dirname(__file__), 'templates'),\n    ),\n    SITE_ID=1,\n)\nclass FlatpageMiddlewareAppendSlashTests(TestCase):\n    fixtures = ['sample_flatpages', 'example_site']\n    urls = 'django.contrib.flatpages.tests.urls'\n\n    def test_redirect_view_flatpage(self):\n        \"A flatpage can be served through a view and should add a slash\"\n        response = self.client.get('/flatpage_root/flatpage')\n        self.assertRedirects(response, '/flatpage_root/flatpage/', status_code=301)\n\n    def test_redirect_view_non_existent_flatpage(self):\n        \"A non-existent flatpage raises 404 when served through a view and should not add a slash\"\n        response = self.client.get('/flatpage_root/no_such_flatpage')\n        self.assertEqual(response.status_code, 404)\n\n    def test_redirect_fallback_flatpage(self):\n        \"A flatpage can be served by the fallback middlware and should add a slash\"\n        response = self.client.get('/flatpage')\n        self.assertRedirects(response, '/flatpage/', status_code=301)\n\n    def test_redirect_fallback_non_existent_flatpage(self):\n        \"A non-existent flatpage raises a 404 when served by the fallback middlware and should not add a slash\"\n        response = self.client.get('/no_such_flatpage')\n        self.assertEqual(response.status_code, 404)\n\n    def test_redirect_fallback_flatpage_special_chars(self):\n        \"A flatpage with special chars in the URL can be served by the fallback middleware and should add a slash\"\n        fp = FlatPage.objects.create(\n            url=\"/some.very_special~chars-here/\",\n            title=\"A very special page\",\n            content=\"Isn't it special!\",\n            enable_comments=False,\n            registration_required=False,\n        )\n        fp.sites.add(settings.SITE_ID)\n\n        response = self.client.get('/some.very_special~chars-here')\n        self.assertRedirects(response, '/some.very_special~chars-here/', status_code=301)\n\n    def test_redirect_fallback_flatpage_root(self):\n        \"A flatpage at / should not cause a redirect loop when APPEND_SLASH is set\"\n        fp = FlatPage.objects.create(\n            url=\"/\",\n            title=\"Root\",\n            content=\"Root\",\n            enable_comments=False,\n            registration_required=False,\n        )\n        fp.sites.add(settings.SITE_ID)\n\n        response = self.client.get('/')\n        self.assertEqual(response.status_code, 200)\n        self.assertContains(response, \"<p>Root</p>\")\n\n\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/tests/templates/404.html",
    "content": "<h1>Oh Noes!</h1>"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/tests/templates/flatpages/default.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n<title>{{ flatpage.title }}</title>\n</head>\n<body>\n<p>{{ flatpage.content }}</p>\n</body>\n</html>\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/tests/templates/registration/login.html",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/tests/templatetags.py",
    "content": "import os\nfrom django.conf import settings\nfrom django.contrib.auth.models import AnonymousUser, User\nfrom django.contrib.auth.tests.utils import skipIfCustomUser\nfrom django.template import Template, Context, TemplateSyntaxError\nfrom django.test import TestCase\nfrom django.test.utils import override_settings\n\n\n@override_settings(\n    MIDDLEWARE_CLASSES=(\n        'django.middleware.common.CommonMiddleware',\n        'django.contrib.sessions.middleware.SessionMiddleware',\n        'django.middleware.csrf.CsrfViewMiddleware',\n        'django.contrib.auth.middleware.AuthenticationMiddleware',\n        'django.contrib.messages.middleware.MessageMiddleware',\n        'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware',\n    ),\n    TEMPLATE_DIRS=(\n        os.path.join(os.path.dirname(__file__), 'templates'),\n    ),\n    SITE_ID=1,\n)\nclass FlatpageTemplateTagTests(TestCase):\n    fixtures = ['sample_flatpages']\n    urls = 'django.contrib.flatpages.tests.urls'\n\n    def test_get_flatpages_tag(self):\n        \"The flatpage template tag retrives unregistered prefixed flatpages by default\"\n        out = Template(\n                \"{% load flatpages %}\"\n                \"{% get_flatpages as flatpages %}\"\n                \"{% for page in flatpages %}\"\n                \"{{ page.title }},\"\n                \"{% endfor %}\"\n            ).render(Context())\n        self.assertEqual(out, \"A Flatpage,A Nested Flatpage,\")\n\n    def test_get_flatpages_tag_for_anon_user(self):\n        \"The flatpage template tag retrives unregistered flatpages for an anonymous user\"\n        out = Template(\n                \"{% load flatpages %}\"\n                \"{% get_flatpages for anonuser as flatpages %}\"\n                \"{% for page in flatpages %}\"\n                \"{{ page.title }},\"\n                \"{% endfor %}\"\n            ).render(Context({\n                'anonuser': AnonymousUser()\n            }))\n        self.assertEqual(out, \"A Flatpage,A Nested Flatpage,\")\n\n    @skipIfCustomUser\n    def test_get_flatpages_tag_for_user(self):\n        \"The flatpage template tag retrives all flatpages for an authenticated user\"\n        me = User.objects.create_user('testuser', 'test@example.com', 's3krit')\n        out = Template(\n                \"{% load flatpages %}\"\n                \"{% get_flatpages for me as flatpages %}\"\n                \"{% for page in flatpages %}\"\n                \"{{ page.title }},\"\n                \"{% endfor %}\"\n            ).render(Context({\n                'me': me\n            }))\n        self.assertEqual(out, \"A Flatpage,A Nested Flatpage,Sekrit Nested Flatpage,Sekrit Flatpage,\")\n\n    def test_get_flatpages_with_prefix(self):\n        \"The flatpage template tag retrives unregistered prefixed flatpages by default\"\n        out = Template(\n                \"{% load flatpages %}\"\n                \"{% get_flatpages '/location/' as location_flatpages %}\"\n                \"{% for page in location_flatpages %}\"\n                \"{{ page.title }},\"\n                \"{% endfor %}\"\n            ).render(Context())\n        self.assertEqual(out, \"A Nested Flatpage,\")\n\n    def test_get_flatpages_with_prefix_for_anon_user(self):\n        \"The flatpage template tag retrives unregistered prefixed flatpages for an anonymous user\"\n        out = Template(\n                \"{% load flatpages %}\"\n                \"{% get_flatpages '/location/' for anonuser as location_flatpages %}\"\n                \"{% for page in location_flatpages %}\"\n                \"{{ page.title }},\"\n                \"{% endfor %}\"\n            ).render(Context({\n                'anonuser': AnonymousUser()\n            }))\n        self.assertEqual(out, \"A Nested Flatpage,\")\n\n    @skipIfCustomUser\n    def test_get_flatpages_with_prefix_for_user(self):\n        \"The flatpage template tag retrive prefixed flatpages for an authenticated user\"\n        me = User.objects.create_user('testuser', 'test@example.com', 's3krit')\n        out = Template(\n                \"{% load flatpages %}\"\n                \"{% get_flatpages '/location/' for me as location_flatpages %}\"\n                \"{% for page in location_flatpages %}\"\n                \"{{ page.title }},\"\n                \"{% endfor %}\"\n            ).render(Context({\n                'me': me\n            }))\n        self.assertEqual(out, \"A Nested Flatpage,Sekrit Nested Flatpage,\")\n\n    def test_get_flatpages_with_variable_prefix(self):\n        \"The prefix for the flatpage template tag can be a template variable\"\n        out = Template(\n                \"{% load flatpages %}\"\n                \"{% get_flatpages location_prefix as location_flatpages %}\"\n                \"{% for page in location_flatpages %}\"\n                \"{{ page.title }},\"\n                \"{% endfor %}\"\n            ).render(Context({\n                'location_prefix': '/location/'\n            }))\n        self.assertEqual(out, \"A Nested Flatpage,\")\n\n    def test_parsing_errors(self):\n        \"There are various ways that the flatpages template tag won't parse\"\n        render = lambda t: Template(t).render(Context())\n\n        self.assertRaises(TemplateSyntaxError, render,\n                          \"{% load flatpages %}{% get_flatpages %}\")\n        self.assertRaises(TemplateSyntaxError, render,\n                          \"{% load flatpages %}{% get_flatpages as %}\")\n        self.assertRaises(TemplateSyntaxError, render,\n                          \"{% load flatpages %}{% get_flatpages cheesecake flatpages %}\")\n        self.assertRaises(TemplateSyntaxError, render,\n                          \"{% load flatpages %}{% get_flatpages as flatpages asdf%}\")\n        self.assertRaises(TemplateSyntaxError, render,\n                          \"{% load flatpages %}{% get_flatpages cheesecake user as flatpages %}\")\n        self.assertRaises(TemplateSyntaxError, render,\n                          \"{% load flatpages %}{% get_flatpages for user as flatpages asdf%}\")\n        self.assertRaises(TemplateSyntaxError, render,\n                          \"{% load flatpages %}{% get_flatpages prefix for user as flatpages asdf%}\")\n\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/tests/urls.py",
    "content": "from django.conf.urls import patterns, include\n\n# special urls for flatpage test cases\nurlpatterns = patterns('',\n    (r'^flatpage_root', include('django.contrib.flatpages.urls')),\n    (r'^accounts/', include('django.contrib.auth.urls')),\n)\n\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/tests/views.py",
    "content": "import os\nfrom django.conf import settings\nfrom django.contrib.auth.models import User\nfrom django.contrib.auth.tests.utils import skipIfCustomUser\nfrom django.contrib.flatpages.models import FlatPage\nfrom django.test import TestCase\nfrom django.test.utils import override_settings\n\n\n@override_settings(\n    LOGIN_URL='/accounts/login/',\n    MIDDLEWARE_CLASSES=(\n        'django.middleware.common.CommonMiddleware',\n        'django.contrib.sessions.middleware.SessionMiddleware',\n        'django.middleware.csrf.CsrfViewMiddleware',\n        'django.contrib.auth.middleware.AuthenticationMiddleware',\n        'django.contrib.messages.middleware.MessageMiddleware',\n        # no 'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware'\n    ),\n    TEMPLATE_DIRS=(\n        os.path.join(os.path.dirname(__file__), 'templates'),\n    ),\n    SITE_ID=1,\n)\nclass FlatpageViewTests(TestCase):\n    fixtures = ['sample_flatpages', 'example_site']\n    urls = 'django.contrib.flatpages.tests.urls'\n\n    def test_view_flatpage(self):\n        \"A flatpage can be served through a view\"\n        response = self.client.get('/flatpage_root/flatpage/')\n        self.assertEqual(response.status_code, 200)\n        self.assertContains(response, \"<p>Isn't it flat!</p>\")\n\n    def test_view_non_existent_flatpage(self):\n        \"A non-existent flatpage raises 404 when served through a view\"\n        response = self.client.get('/flatpage_root/no_such_flatpage/')\n        self.assertEqual(response.status_code, 404)\n\n    @skipIfCustomUser\n    def test_view_authenticated_flatpage(self):\n        \"A flatpage served through a view can require authentication\"\n        response = self.client.get('/flatpage_root/sekrit/')\n        self.assertRedirects(response, '/accounts/login/?next=/flatpage_root/sekrit/')\n        User.objects.create_user('testuser', 'test@example.com', 's3krit')\n        self.client.login(username='testuser',password='s3krit')\n        response = self.client.get('/flatpage_root/sekrit/')\n        self.assertEqual(response.status_code, 200)\n        self.assertContains(response, \"<p>Isn't it sekrit!</p>\")\n\n    def test_fallback_flatpage(self):\n        \"A fallback flatpage won't be served if the middleware is disabled\"\n        response = self.client.get('/flatpage/')\n        self.assertEqual(response.status_code, 404)\n\n    def test_fallback_non_existent_flatpage(self):\n        \"A non-existent flatpage won't be served if the fallback middlware is disabled\"\n        response = self.client.get('/no_such_flatpage/')\n        self.assertEqual(response.status_code, 404)\n\n    def test_view_flatpage_special_chars(self):\n        \"A flatpage with special chars in the URL can be served through a view\"\n        fp = FlatPage.objects.create(\n            url=\"/some.very_special~chars-here/\",\n            title=\"A very special page\",\n            content=\"Isn't it special!\",\n            enable_comments=False,\n            registration_required=False,\n        )\n        fp.sites.add(settings.SITE_ID)\n\n        response = self.client.get('/flatpage_root/some.very_special~chars-here/')\n        self.assertEqual(response.status_code, 200)\n        self.assertContains(response, \"<p>Isn't it special!</p>\")\n\n\n@override_settings(\n    APPEND_SLASH = True,\n    LOGIN_URL='/accounts/login/',\n    MIDDLEWARE_CLASSES=(\n        'django.middleware.common.CommonMiddleware',\n        'django.contrib.sessions.middleware.SessionMiddleware',\n        'django.middleware.csrf.CsrfViewMiddleware',\n        'django.contrib.auth.middleware.AuthenticationMiddleware',\n        'django.contrib.messages.middleware.MessageMiddleware',\n        # no 'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware'\n    ),\n    TEMPLATE_DIRS=(\n        os.path.join(os.path.dirname(__file__), 'templates'),\n    ),\n    SITE_ID=1,\n)\nclass FlatpageViewAppendSlashTests(TestCase):\n    fixtures = ['sample_flatpages', 'example_site']\n    urls = 'django.contrib.flatpages.tests.urls'\n\n    def test_redirect_view_flatpage(self):\n        \"A flatpage can be served through a view and should add a slash\"\n        response = self.client.get('/flatpage_root/flatpage')\n        self.assertRedirects(response, '/flatpage_root/flatpage/', status_code=301)\n\n    def test_redirect_view_non_existent_flatpage(self):\n        \"A non-existent flatpage raises 404 when served through a view and should not add a slash\"\n        response = self.client.get('/flatpage_root/no_such_flatpage')\n        self.assertEqual(response.status_code, 404)\n\n    def test_redirect_fallback_flatpage(self):\n        \"A fallback flatpage won't be served if the middleware is disabled and should not add a slash\"\n        response = self.client.get('/flatpage')\n        self.assertEqual(response.status_code, 404)\n\n    def test_redirect_fallback_non_existent_flatpage(self):\n        \"A non-existent flatpage won't be served if the fallback middlware is disabled and should not add a slash\"\n        response = self.client.get('/no_such_flatpage')\n        self.assertEqual(response.status_code, 404)\n\n    def test_redirect_view_flatpage_special_chars(self):\n        \"A flatpage with special chars in the URL can be served through a view and should add a slash\"\n        fp = FlatPage.objects.create(\n            url=\"/some.very_special~chars-here/\",\n            title=\"A very special page\",\n            content=\"Isn't it special!\",\n            enable_comments=False,\n            registration_required=False,\n        )\n        fp.sites.add(settings.SITE_ID)\n\n        response = self.client.get('/flatpage_root/some.very_special~chars-here')\n        self.assertRedirects(response, '/flatpage_root/some.very_special~chars-here/', status_code=301)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/urls.py",
    "content": "from django.conf.urls import patterns\n\nurlpatterns = patterns('django.contrib.flatpages.views',\n    (r'^(?P<url>.*)$', 'flatpage'),\n)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/flatpages/views.py",
    "content": "from django.conf import settings\nfrom django.contrib.flatpages.models import FlatPage\nfrom django.contrib.sites.models import get_current_site\nfrom django.core.xheaders import populate_xheaders\nfrom django.http import Http404, HttpResponse, HttpResponsePermanentRedirect\nfrom django.shortcuts import get_object_or_404\nfrom django.template import loader, RequestContext\nfrom django.utils.safestring import mark_safe\nfrom django.views.decorators.csrf import csrf_protect\n\nDEFAULT_TEMPLATE = 'flatpages/default.html'\n\n# This view is called from FlatpageFallbackMiddleware.process_response\n# when a 404 is raised, which often means CsrfViewMiddleware.process_view\n# has not been called even if CsrfViewMiddleware is installed. So we need\n# to use @csrf_protect, in case the template needs {% csrf_token %}.\n# However, we can't just wrap this view; if no matching flatpage exists,\n# or a redirect is required for authentication, the 404 needs to be returned\n# without any CSRF checks. Therefore, we only\n# CSRF protect the internal implementation.\ndef flatpage(request, url):\n    \"\"\"\n    Public interface to the flat page view.\n\n    Models: `flatpages.flatpages`\n    Templates: Uses the template defined by the ``template_name`` field,\n        or :template:`flatpages/default.html` if template_name is not defined.\n    Context:\n        flatpage\n            `flatpages.flatpages` object\n    \"\"\"\n    if not url.startswith('/'):\n        url = '/' + url\n    site_id = get_current_site(request).id\n    try:\n        f = get_object_or_404(FlatPage,\n            url__exact=url, sites__id__exact=site_id)\n    except Http404:\n        if not url.endswith('/') and settings.APPEND_SLASH:\n            url += '/'\n            f = get_object_or_404(FlatPage,\n                url__exact=url, sites__id__exact=site_id)\n            return HttpResponsePermanentRedirect('%s/' % request.path)\n        else:\n            raise\n    return render_flatpage(request, f)\n\n@csrf_protect\ndef render_flatpage(request, f):\n    \"\"\"\n    Internal interface to the flat page view.\n    \"\"\"\n    # If registration is required for accessing this page, and the user isn't\n    # logged in, redirect to the login page.\n    if f.registration_required and not request.user.is_authenticated():\n        from django.contrib.auth.views import redirect_to_login\n        return redirect_to_login(request.path)\n    if f.template_name:\n        t = loader.select_template((f.template_name, DEFAULT_TEMPLATE))\n    else:\n        t = loader.get_template(DEFAULT_TEMPLATE)\n\n    # To avoid having to always use the \"|safe\" filter in flatpage templates,\n    # mark the title and content as already safe (since they are raw HTML\n    # content in the first place).\n    f.title = mark_safe(f.title)\n    f.content = mark_safe(f.content)\n\n    c = RequestContext(request, {\n        'flatpage': f,\n    })\n    response = HttpResponse(t.render(c))\n    populate_xheaders(request, response, FlatPage, f.id)\n    return response\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/ar/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:42+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Arabic (http://www.transifex.com/projects/p/django/language/\"\n\"ar/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ar\\n\"\n\"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 \"\n\"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n\"نعتذر، لكنّ استمارتك انتهت صلاحيتها. رجاء أكمل تعبئة الاستمارة من هذه الصفحة.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/az/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Ali Ismayilov <ali@ismailov.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:42+0000\\n\"\n\"Last-Translator: Ali Ismayilov <ali@ismailov.info>\\n\"\n\"Language-Team: Azerbaijani (http://www.transifex.com/projects/p/django/\"\n\"language/az/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: az\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n\"Üzr istəyirik, ancaq sizin vərəqənin vaxtı bitmişdir. Bu səhifədə vərəqəni \"\n\"yenidən doldurmağı xahiş edirik.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/be/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-08-01 11:44+0000\\n\"\n\"Last-Translator: Павал Клёк <yehekim@gmail.com>\\n\"\n\"Language-Team: Belarusian (http://www.transifex.com/projects/p/django/\"\n\"language/be/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: be\\n\"\n\"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"першы крок\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"папярэдні крок\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"падаць\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n\"Прабачце, але тэрмін дзеяньня блянку скончыўся. Працягвайце запаўняць на \"\n\"гэтай бачыне.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/bg/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <grgkostadinov@gmail.com>, 2012.\n# Todor Lubenov <tlubenov@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-04-01 19:06+0000\\n\"\n\"Last-Translator: Georgi Kostadinov <grgkostadinov@gmail.com>\\n\"\n\"Language-Team: Bulgarian (http://www.transifex.com/projects/p/django/\"\n\"language/bg/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: bg\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"първа стъпка\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"предишна стъпка\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"запази\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n\"Извиняваме се, но формата е изтекла. Моля, продължете попълване на формуляра \"\n\"от тази страница.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/bn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:42+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Bengali (http://www.transifex.com/projects/p/django/language/\"\n\"bn/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: bn\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n\"আমরা দুঃখিত, আপনার ফর্মের মেয়াদ শেষ। অনুগ্রহপূর্বক এই পাতা থেকে ফর্ম পূরণ করতে থাকুন।\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/br/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Fulup  <fulup.jakez@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-06-29 17:40+0000\\n\"\n\"Last-Translator: Fulup <fulup.jakez@gmail.com>\\n\"\n\"Language-Team: Breton (http://www.transifex.com/projects/p/django/language/\"\n\"br/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: br\\n\"\n\"Plural-Forms: nplurals=2; plural=(n > 1);\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"pazenn gentañ\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"pazenn gent\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"kas\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n\"Ho tigarez met aet eo ho furmskrid d'e dermen. Kendalc'hit d'e leuniañ war \"\n\"ar bajenn-mañ.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/bs/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:42+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Bosnian (http://www.transifex.com/projects/p/django/language/\"\n\"bs/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: bs\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n\"Žao nam je, ali Vaša sesija je istekla. Popunjavanje formulara nastavite na \"\n\"ovoj stranici.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/ca/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Carles Barrobés <carles@barrobes.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-29 23:20+0000\\n\"\n\"Last-Translator: Carles Barrobés <carles@barrobes.com>\\n\"\n\"Language-Team: Catalan (http://www.transifex.com/projects/p/django/language/\"\n\"ca/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ca\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"primer pas\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"pas anterior\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"enviar\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n\"Ho sentim, pero el vostre formulari ha caducat. Si us plau, continueu \"\n\"omplint el formulari en aquesta pàgina.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/cs/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Vlada Macek <macek@sandbox.cz>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:42+0000\\n\"\n\"Last-Translator: Vlada Macek <macek@sandbox.cz>\\n\"\n\"Language-Team: Czech (http://www.transifex.com/projects/p/django/language/\"\n\"cs/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: cs\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"první krok\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"předchozí krok\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"odeslat\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n\"Platnost formuláře bohužel vypršela. Pokračujte vyplněním formuláře z této \"\n\"stránky.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/cy/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2011-01-19 16:45+0000\\n\"\n\"Last-Translator: Django team\\n\"\n\"Language-Team: Welsh (http://www.transifex.com/projects/p/django/language/\"\n\"cy/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: cy\\n\"\n\"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != \"\n\"11) ? 2 : 3;\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/da/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Christian Joergensen <christian@gmta.info>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:42+0000\\n\"\n\"Last-Translator: Christian Joergensen <christian@gmta.info>\\n\"\n\"Language-Team: Danish (http://www.transifex.com/projects/p/django/language/\"\n\"da/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: da\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"første skridt\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"forrige skridt\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"send\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n\"Tiden er udløbet - vi beklager. Vær venlig at fortsætte med at udfylde \"\n\"formularen på denne side.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/de/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# André Hagenbruch <ahagenbruch@googlemail.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-18 10:56+0000\\n\"\n\"Last-Translator: André Hagenbruch <ahagenbruch@googlemail.com>\\n\"\n\"Language-Team: German (http://www.transifex.com/projects/p/django/language/\"\n\"de/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: de\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"Erster Schritt\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"Vorheriger Schritt\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"Abschicken\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n\"Es tut uns leid, aber das Formular hat seine Gültigkeit verloren. Bitte \"\n\"füllen Sie es erneut aus.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/el/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Yorgos Pagles <y.pagles@gmail.com>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-07 14:57+0000\\n\"\n\"Last-Translator: Yorgos Pagles <y.pagles@gmail.com>\\n\"\n\"Language-Team: Greek (http://www.transifex.com/projects/p/django/language/\"\n\"el/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: el\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"πρώτο βήμα\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"επόμενο βήμα\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"αποδοχή\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n\"Το περιθώριο για την συμπλήρωση της φόρμας έχει λήξει. Παρακαλούμε συνεχίστε \"\n\"τη συμπλήρωση της φόρμας από την τρέχουσα σελίδα.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/en/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:42+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: English <en@li.org>\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: en\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"first step\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"prev step\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"submit\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/en_GB/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <jon@jonatkinson.co.uk>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:42+0000\\n\"\n\"Last-Translator: jon_atkinson <jon@jonatkinson.co.uk>\\n\"\n\"Language-Team: English (United Kingdom) (http://www.transifex.com/projects/p/\"\n\"django/language/en_GB/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: en_GB\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"first step\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"prev step\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"submit\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n\"We apologise, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/eo/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <adam.raizen@gmail.com>, 2012.\n# Baptiste  <bapdarth@yahoo.fr>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-12-11 19:21+0000\\n\"\n\"Last-Translator: sagittarian <adam.raizen@gmail.com>\\n\"\n\"Language-Team: Esperanto (http://www.transifex.com/projects/p/django/\"\n\"language/eo/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: eo\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"unua paŝo\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"antaŭa paŝo\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"sendi\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n\"Ni pardonpetas, sed via formularo eksvalidiĝis. Bonvolu daŭre plenigi la \"\n\"formularon el ĉi tiu paĝo.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/es/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Antoni Aloy <antoni.aloy@trespams.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-01 23:28+0000\\n\"\n\"Last-Translator: Antoni Aloy <aaloy@apsl.net>\\n\"\n\"Language-Team: Spanish (http://www.transifex.com/projects/p/django/language/\"\n\"es/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: es\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"primer paso\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"paso anterior\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"enviar\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n\"Lo sentimos, pero su formulario ha expirado. Por favor, continue rellenando \"\n\"el formulario en esta página.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/es_AR/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Ramiro Morales <cramm0@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-14 20:04+0000\\n\"\n\"Last-Translator: Ramiro Morales <cramm0@gmail.com>\\n\"\n\"Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/\"\n\"django/language/es_AR/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: es_AR\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"primer paso\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"paso previo\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"enviar\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n\"Lamentablemente su formulario ha caducado. Por favor continúe rellenando el \"\n\"formulario en esta página.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/es_MX/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Abraham Estrada <abraham.estrada@gmail.com>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-06 19:17+0000\\n\"\n\"Last-Translator: Abraham Estrada <abraham.estrada@gmail.com>\\n\"\n\"Language-Team: Spanish (Mexico) (http://www.transifex.com/projects/p/django/\"\n\"language/es_MX/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: es_MX\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"primer paso\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"paso anterior\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"enviar\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n\"Lamentablemente su formulario ha caducado. Por favor continúe llenando el \"\n\"formulario en esta página.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/et/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:42+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Estonian (http://www.transifex.com/projects/p/django/language/\"\n\"et/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: et\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n\"Vabandame, kuid vorm on aegunud. Palun jätkake vormi täitmist käesolevalt \"\n\"lehelt.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/eu/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Aitzol Naberan <anaberan@codesyntax.com>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 21:22+0000\\n\"\n\"Last-Translator: Aitzol Naberan <anaberan@codesyntax.com>\\n\"\n\"Language-Team: Basque (http://www.transifex.com/projects/p/django/language/\"\n\"eu/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: eu\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"lehen pausua\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"aurreko pausua\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"bidali\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n\"Sentitzen dugu, baina zure formularioa iraungitu da. Mesedez jarraitu orri \"\n\"honetako formularioa batetzen.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/fa/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Ali Nikneshan <ali@nikneshan.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-06-21 08:06+0000\\n\"\n\"Last-Translator: Ali Nikneshan <ali@nikneshan.com>\\n\"\n\"Language-Team: Persian (http://www.transifex.com/projects/p/django/language/\"\n\"fa/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: fa\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"گام اول\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"گام قبل\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"ارسال\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n\"معذرت می‌خواهیم ولی فرم شما منقضی شده است. لطفاً پر کردن را از این صفحه ادامه \"\n\"دهید.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/fi/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <klaus.dahlen@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-24 15:19+0000\\n\"\n\"Last-Translator: nanook <klaus.dahlen@gmail.com>\\n\"\n\"Language-Team: Finnish (http://www.transifex.com/projects/p/django/language/\"\n\"fi/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: fi\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"ensimmäinen vaihe\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"edellinen vaihe\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"lähetä\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n\"Pahoittelumme, mutta istuntosi on vanhentunut. Ole hyvä ja jatka lomakkeen \"\n\"täyttämistä tältä sivulta.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/fr/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <claude@2xlibre.net>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:42+0000\\n\"\n\"Last-Translator: claudep <claude@2xlibre.net>\\n\"\n\"Language-Team: French (http://www.transifex.com/projects/p/django/language/\"\n\"fr/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: fr\\n\"\n\"Plural-Forms: nplurals=2; plural=(n > 1);\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"première étape\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"étape précédente\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"soumettre\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n\"Nous sommes désolés, mais votre formulaire a expiré. Veuillez compléter le \"\n\"formulaire sur cette page.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/fy_NL/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:38+0100\\n\"\n\"PO-Revision-Date: 2011-03-15 15:47+0000\\n\"\n\"Last-Translator: Django team\\n\"\n\"Language-Team: English <en@li.org>\\n\"\n\"Language: fy_NL\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1)\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/ga/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Michael Thornhill <michael@maithu.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-16 13:32+0000\\n\"\n\"Last-Translator: Michael Thornhill <michael@maithu.com>\\n\"\n\"Language-Team: Irish (http://www.transifex.com/projects/p/django/language/\"\n\"ga/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ga\\n\"\n\"Plural-Forms: nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : \"\n\"4);\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"chéad chéim\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"chéim roimhe seo\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"chur faoi bhráid\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n\"Gabh ár leithscéal, ach tá do fhoirm in éag. Lean ar aghaidh le do thoil \"\n\"líonadh amach an fhoirm ón leathanach seo.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/gl/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# fasouto <fsoutomoure@gmail.com>, 2011.\n#   <fonzzo@gmail.com>, 2013.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2013-01-07 12:00+0000\\n\"\n\"Last-Translator: fonso <fonzzo@gmail.com>\\n\"\n\"Language-Team: Galician (http://www.transifex.com/projects/p/django/language/\"\n\"gl/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: gl\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"primeiro paso\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"paso anterior\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"enviar\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n\"Sentímolo, pero o seu formulario expirou. Por favor, continue enchendo o \"\n\"formulario nesta páxina.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/he/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Alex Gaynor <alex.gaynor@gmail.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Meir Kriheli <mkriheli@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-21 10:46+0000\\n\"\n\"Last-Translator: Meir Kriheli <mkriheli@gmail.com>\\n\"\n\"Language-Team: Hebrew (http://www.transifex.com/projects/p/django/language/\"\n\"he/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: he\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"צעד ראשון\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"צעד אחרון\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"שלח\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n\"לצערנו פג תוקף הטופס שלך.  עליך להמשיך למלא את הטופס מן העמוד הזה ואילך.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/hi/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Chandan kumar <chandankumar.093047@gmail.com>, 2012.\n# Sandeep Satavlekar <sandysat@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-26 14:26+0000\\n\"\n\"Last-Translator: Chandan kumar <chandankumar.093047@gmail.com>\\n\"\n\"Language-Team: Hindi (http://www.transifex.com/projects/p/django/language/\"\n\"hi/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: hi\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"पहला कदम\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"पिछला कदम\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"प्रस्तुत करे \"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"हमें खेद है, लेकिन आप का फ़ॉर्म खत्म हो गया. इस पृष्ठ से फ़ॉर्म को भरना जारी करें.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/hr/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <berislav.lopac@gmail.com>, 2012.\n# Dimitris Glezos <glezos@indifex.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-06-23 06:18+0000\\n\"\n\"Last-Translator: berislavlopac <berislav.lopac@gmail.com>\\n\"\n\"Language-Team: Croatian (http://www.transifex.com/projects/p/django/language/\"\n\"hr/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: hr\\n\"\n\"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"prvi korak\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"prethodni korak\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"pošalji\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n\"Ispričavamo se, ali vaš obrazac je istekao. Molimo nastavite ispunjavati \"\n\"obrazac od ove stranice.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/hu/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Attila Nagy <>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-19 19:26+0000\\n\"\n\"Last-Translator: Attila Nagy <>\\n\"\n\"Language-Team: Hungarian (http://www.transifex.com/projects/p/django/\"\n\"language/hu/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: hu\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"első\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"előző\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"küldés\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n\"Elnézést kérünk, de az űrlap érvényessége lejárt. Kérjük folytassa a \"\n\"kitöltést ettől az oldaltól.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/ia/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Martijn Dekker <mcdutchie@hotmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-08-20 19:22+0000\\n\"\n\"Last-Translator: Martijn Dekker <mcdutchie@hotmail.com>\\n\"\n\"Language-Team: Interlingua (http://www.transifex.com/projects/p/django/\"\n\"language/ia/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ia\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"prime passo\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"previe passo\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"submitter\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n\"Vostre formulario ha expirate. Per favor continua a completar le formulario \"\n\"a partir de iste pagina.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/id/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# rodin <romihardiyanto@gmail.com>, 2011.\n#   <romihardiyanto@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-06 20:07+0000\\n\"\n\"Last-Translator: rodin <romihardiyanto@gmail.com>\\n\"\n\"Language-Team: Indonesian (http://www.transifex.com/projects/p/django/\"\n\"language/id/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: id\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"langkah pertama\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"langkah pertama\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"langkah sebelumnya\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n\"Maaf, formulir Anda sudah kedaluwarsa. Silakan lanjutkan mengisi formulir \"\n\"pada laman ini.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/is/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Hafsteinn Einarsson <haffi67@gmail.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-15 13:34+0000\\n\"\n\"Last-Translator: Hafsteinn Einarsson <haffi67@gmail.com>\\n\"\n\"Language-Team: Icelandic (http://www.transifex.com/projects/p/django/\"\n\"language/is/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: is\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"fyrsta skref\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"fyrra skref\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"Senda\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n\"Því miður er formið runnið út. Vinsamlegast haltu áfram að fylla út formið á \"\n\"þessari síðu.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/it/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Nicola Larosa <transifex@teknico.net>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:42+0000\\n\"\n\"Last-Translator: Nicola Larosa <transifex@teknico.net>\\n\"\n\"Language-Team: Italian (http://www.transifex.com/projects/p/django/language/\"\n\"it/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: it\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"primo passo\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"passo precedente\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"invia\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n\"Spiacenti, ma la tua form è scaduta. Puoi continuare a compilare la form da \"\n\"questa pagina.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/ja/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Shinya Okano <tokibito@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-09 00:28+0000\\n\"\n\"Last-Translator: Shinya Okano <tokibito@gmail.com>\\n\"\n\"Language-Team: Japanese (http://www.transifex.com/projects/p/django/language/\"\n\"ja/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ja\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"最初のステップ\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"前のステップ\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"送信\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n\"申し訳ありませんが、あなたのフォームへの入力は時間切れになりました。このペー\"\n\"ジで再度入力してください。\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/ka/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Translators:\n# André Bouatchidzé <a@anbz.net>, 2013.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2013-03-01 08:00+0000\\n\"\n\"Last-Translator: André Bouatchidzé <a@anbz.net>\\n\"\n\"Language-Team: Georgian (http://www.transifex.com/projects/p/django/language/\"\n\"ka/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ka\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"პირველი ეტაპი\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"წინა ეტაპი\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"გაგზავნა\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n\"ბოდიშს გიხდით, მაგრამ თქვენს ფორმას ვადა გაუვიდა. გთხოვთ, გააგრძელოთ ფორმის \"\n\"შევსება ამ გვერდზე.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/kk/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Nurlan Rakhimzhanov <nurlan.rakhimzhanov@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:42+0000\\n\"\n\"Last-Translator: Nurlan Rakhimzhanov <nurlan.rakhimzhanov@gmail.com>\\n\"\n\"Language-Team: Kazakh (http://www.transifex.com/projects/p/django/language/\"\n\"kk/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: kk\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n\"Кешірім сұраймыз, бірақ сіздің формаңыздың уақыты өтіп кеткен. Өтініш, \"\n\"форманы толтыруды осы беттен жалғастырыңыз.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/km/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:38+0100\\n\"\n\"PO-Revision-Date: 2011-03-15 15:47+0000\\n\"\n\"Last-Translator: Django team\\n\"\n\"Language-Team: English <en@li.org>\\n\"\n\"Language: km\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=1; plural=0\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/kn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2011-01-19 16:45+0000\\n\"\n\"Last-Translator: Django team\\n\"\n\"Language-Team: Kannada (http://www.transifex.com/projects/p/django/language/\"\n\"kn/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: kn\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/ko/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:42+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Korean (http://www.transifex.com/projects/p/django/language/\"\n\"ko/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ko\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n\"죄송합니다. 입력하신 양식이 더 이상 유효하지 않습니다. 이 페이지부터 다시 양\"\n\"식을 채워주세요.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/lt/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# lauris <lauris@runbox.com>, 2011.\n# Simonas Simas <simonas@kazlauskas.me>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-09 16:54+0000\\n\"\n\"Last-Translator: Simonas Kazlauskas <simonas@kazlauskas.me>\\n\"\n\"Language-Team: Lithuanian (http://www.transifex.com/projects/p/django/\"\n\"language/lt/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: lt\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n\"\n\"%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"pirmas žingsnis\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"praeitas žingsnis\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"pateikti\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n\"Atsiprašome, tačiau jūsų forma nebegalioja. Prašau tęsti anketos pildymą \"\n\"šiame puslapyje.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/lv/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:42+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Latvian (http://www.transifex.com/projects/p/django/language/\"\n\"lv/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: lv\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : \"\n\"2);\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n\"Atvainojiet, formai beidzies derīguma termiņš. Lūdzu, turpiniet aizpildīt \"\n\"formu no šīs lapas.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/mk/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <vvangelovski@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-15 12:12+0000\\n\"\n\"Last-Translator: vvangelovski <vvangelovski@gmail.com>\\n\"\n\"Language-Team: Macedonian (http://www.transifex.com/projects/p/django/\"\n\"language/mk/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: mk\\n\"\n\"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"прв чекор\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"претходен чекор\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"готово\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n\"Се извинуваме но вашата форма истече. Ве молам продолжете пополнувајќи ја \"\n\"формата од оваа страница.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/ml/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Rajeesh Nair <rajeeshrnair@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-07 15:16+0000\\n\"\n\"Last-Translator: Rajeesh Nair <rajeeshrnair@gmail.com>\\n\"\n\"Language-Team: Malayalam (http://www.transifex.com/projects/p/django/\"\n\"language/ml/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ml\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"ആദ്യ ഘട്ടം\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"തൊട്ടു മുമ്പിലെ ഘട്ടം\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"സമര്‍പ്പിക്കൂ\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n\"ക്ഷമിക്കണം, താങ്കളുടെ ഫോം കാലഹരണപ്പെട്ടു കഴിഞ്ഞു. ദയവായി ഈ പേജിലെ ഫോം പൂരിപ്പിച്ച് തുടരുക.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/mn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jacara <baskhuujacara@gmail.com>, 2011.\n# Анхбаяр Анхаа <l.ankhbayar@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:42+0000\\n\"\n\"Last-Translator: Анхбаяр Анхаа <l.ankhbayar@gmail.com>\\n\"\n\"Language-Team: Mongolian (http://www.transifex.com/projects/p/django/\"\n\"language/mn/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: mn\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"эхний алхам\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"өмнөх алхам\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"илгээх\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n\"Уучлаарай, таны бөглөсөн мэдээлэл хүчингүй болсон тул та энэ хуудсанд \"\n\"мэдээллээ дахин бөглөж оруулна уу.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/nb/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <jonklo@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-06 19:56+0000\\n\"\n\"Last-Translator: jonklo <jonklo@gmail.com>\\n\"\n\"Language-Team: Norwegian Bokmål (http://www.transifex.com/projects/p/django/\"\n\"language/nb/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: nb\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"første steg\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"forrige steg\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"lagre\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n\"Vi beklager, men dette skjemaet har tidsavbrutt. Vennligst fyll ut skjemaet \"\n\"fra denne siden.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/ne/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Paras Nath Chaudhary <opnchaudhary@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-01 12:14+0000\\n\"\n\"Last-Translator: Paras Nath Chaudhary <opnchaudhary@gmail.com>\\n\"\n\"Language-Team: Nepali (http://www.transifex.com/projects/p/django/language/\"\n\"ne/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ne\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"प्रथम चाल \"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"अघिल्लो  चाल \"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"जम्मा गर्नु \"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n\"क्षमापार्थी छौं तर तपाईको फारम अवधि सिद्धिएको छ । यहि पृष्ठबाट फारम भर्नुहोला ।\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/nl/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Jeffrey Gelens <jeffrey@noppo.pro>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-17 22:39+0000\\n\"\n\"Last-Translator: Jeffrey Gelens <jeffrey@noppo.pro>\\n\"\n\"Language-Team: Dutch (http://www.transifex.com/projects/p/django/language/\"\n\"nl/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: nl\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"eerste stap\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"vorige stap\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"verzenden\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n\"Onze excuses, maar uw formulier is verlopen. Gaat u alstublieft verder met \"\n\"het invullen van het formulier op deze pagina.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/nn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <odin.omdal@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-06-03 20:20+0000\\n\"\n\"Last-Translator: velmont <odin.omdal@gmail.com>\\n\"\n\"Language-Team: Norwegian Nynorsk (http://www.transifex.com/projects/p/django/\"\n\"language/nn/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: nn\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"fyrste steg\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"førre steg\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"lagre\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n\"Du har brukt for lang tid på å fylle ut skjemaet. Fyll ut skjemaet frå denne \"\n\"sida.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/pa/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:42+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Panjabi (Punjabi) (http://www.transifex.com/projects/p/django/\"\n\"language/pa/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: pa\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/pl/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <angular.circle@gmail.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-21 12:46+0000\\n\"\n\"Last-Translator: angularcircle <angular.circle@gmail.com>\\n\"\n\"Language-Team: Polish (http://www.transifex.com/projects/p/django/language/\"\n\"pl/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: pl\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 \"\n\"|| n%100>=20) ? 1 : 2);\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"Pierwszy krok\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"Poprzedni krok\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"Wyślij\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n\"Przepraszamy, ale Twój formularz wygasł. Proszę kontynuować wypełnianie \"\n\"formularza od tej strony.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/pt/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Nuno Mariz <nmariz@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-07 09:40+0000\\n\"\n\"Last-Translator: Nuno Mariz <nmariz@gmail.com>\\n\"\n\"Language-Team: Portuguese (http://www.transifex.com/projects/p/django/\"\n\"language/pt/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: pt\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"primeiro passo\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"passo anterior\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"submeter\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n\"Pedimos desculpa, mas o seu formulário expirou. Por favor continue a \"\n\"preencher o formulário a partir desta página.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/pt_BR/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Guilherme Gondim <semente+transifex@taurinus.org>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-19 17:01+0000\\n\"\n\"Last-Translator: Guilherme Gondim <semente@taurinus.org>\\n\"\n\"Language-Team: Portuguese (Brazil) <django-l10n-portuguese@googlegroups.\"\n\"com>\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: pt_BR\\n\"\n\"Plural-Forms: nplurals=2; plural=(n > 1);\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"primeiro passo\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"passo anterior\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"enviar\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n\"Desculpe, mas seu formulário expirou. Por favor, continue preenchendo o \"\n\"formulário desta página.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/ro/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Daniel Ursache-Dogariu <contact@danniel.net>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:42+0000\\n\"\n\"Last-Translator: Daniel Ursache-Dogariu <contact@danniel.net>\\n\"\n\"Language-Team: Romanian (http://www.transifex.com/projects/p/django/language/\"\n\"ro/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ro\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?\"\n\"2:1));\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n\"Ne cerem scuze, dar formularul dumneavoastră a expirat. Continuați \"\n\"completarea formularului pe această pagină.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/ru/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Eugene MechanisM <contact@mechanism.name>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-06 18:35+0000\\n\"\n\"Last-Translator: Eugene MechanisM <contact@mechanism.name>\\n\"\n\"Language-Team: Russian (http://www.transifex.com/projects/p/django/language/\"\n\"ru/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ru\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"первый шаг\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"предыдущий шаг\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"отправить\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n\"Мы сожалеем, но ваша форма устарела. Пожалуйста, продолжите заполнять форму \"\n\"на этой странице.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/sk/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Marian Andre <marian@andre.sk>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:42+0000\\n\"\n\"Last-Translator: Marian Andre <marian@andre.sk>\\n\"\n\"Language-Team: Slovak (http://www.transifex.com/projects/p/django/language/\"\n\"sk/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sk\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"prvý krok\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"predchádzajúci krok\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"odoslať\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n\"Ospravedlňujeme sa, ale platnosť formulára vypršala. Prosím, pokračujte vo \"\n\"vypĺňaní z tejto stránky.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/sl/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Gašper Žejn <zejn@kiberpipa.org>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <zejn@kiberpipa.org>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-31 19:06+0000\\n\"\n\"Last-Translator: mateju <>\\n\"\n\"Language-Team: Slovenian (http://www.transifex.com/projects/p/django/\"\n\"language/sl/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sl\\n\"\n\"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n\"\n\"%100==4 ? 2 : 3);\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"prvi korak\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"predhodni korak\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"pošlji\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n\"Predviden čas izpolnjevanja obrazca je potekel. Nadaljujte z izpolnjevanjem \"\n\"na tej strani.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/sq/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Besnik <besnik@programeshqip.org>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-11-25 19:30+0000\\n\"\n\"Last-Translator: Besnik <besnik@programeshqip.org>\\n\"\n\"Language-Team: Albanian (http://www.transifex.com/projects/p/django/language/\"\n\"sq/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sq\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"hapi i parë\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"hapi i mëparshëm\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"parashtroje\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n\"Kërkojmë ndjesë, por formulari juaj ka skaduar. Ju lutem, vazhdoni \"\n\"plotësimin e formularit nga kjo faqe.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/sr/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Janos Guljas <janos@resenje.org>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-17 05:18+0000\\n\"\n\"Last-Translator: Janos Guljas <janos@resenje.org>\\n\"\n\"Language-Team: Serbian (http://www.transifex.com/projects/p/django/language/\"\n\"sr/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sr\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"први корак\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"претходни корак\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"постави\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n\"Жао нам је, али Ваша сесија је истекла. Попуњавање формулара наставите на \"\n\"овој страници.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/sr_Latn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Janos Guljas <janos@resenje.org>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-02 21:00+0000\\n\"\n\"Last-Translator: Janos Guljas <janos@resenje.org>\\n\"\n\"Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/django/\"\n\"language/sr@latin/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sr@latin\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"prvi korak\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"prethodni korak\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"postavi\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n\"Žao nam je, ali Vaša sesija je istekla. Popunjavanje formulara nastavite na \"\n\"ovoj stranici.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/sv/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Andreas Pelme <andreas@pelme.se>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-06 20:33+0000\\n\"\n\"Last-Translator: Andreas Pelme <andreas@pelme.se>\\n\"\n\"Language-Team: Swedish (http://www.transifex.com/projects/p/django/language/\"\n\"sv/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sv\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"första steget\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"föregående steg\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"spara\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n\"Vi beklagar, men formuläret har förfallit. Var god fortsätt fylla i det från \"\n\"denna sida.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/sw/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-07 15:24+0000\\n\"\n\"Last-Translator: machaku <bmachaku@gmail.com>\\n\"\n\"Language-Team: Swahili (http://www.transifex.com/projects/p/django/language/\"\n\"sw/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sw\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"hatua ya kwanza\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"hatua iliyopita\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"kusanya\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n\"Samahani, fomu yako imekwisha muda wake. Tafadhali endelea kujaza fomu \"\n\"kuanzia ukurasa huu.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/ta/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2011-01-19 16:45+0000\\n\"\n\"Last-Translator: Django team\\n\"\n\"Language-Team: Tamil (http://www.transifex.com/projects/p/django/language/\"\n\"ta/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ta\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/te/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# bhaskar teja yerneni <prudhviy@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:42+0000\\n\"\n\"Last-Translator: bhaskar teja yerneni <prudhviy@gmail.com>\\n\"\n\"Language-Team: Telugu (http://www.transifex.com/projects/p/django/language/\"\n\"te/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: te\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n\"క్షమించండి, మీ యొక్క నమూనా పత్రము నింపు సమయము మించినది. తదుపరి దయచేసి ఈ పుటలో మీ నమూనా పత్రమును \"\n\"నింపుము \"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/th/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Vichai Vongvorakul <vongvichai@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:42+0000\\n\"\n\"Last-Translator: Vichai Vongvorakul <vongvichai@gmail.com>\\n\"\n\"Language-Team: Thai (http://www.transifex.com/projects/p/django/language/\"\n\"th/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: th\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"ขั้นตอนแรก\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"ขั้นตอนก่อนหน้านี้\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"ดำเนินการส่ง\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"ขออภัย แบบฟอร์มไม่สามารถใช้งานได้ กรุณาใส่ข้อมูลในหน้านี้ใหม่\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/tr/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Murat Çorlu <muratcorlu@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 20:13+0000\\n\"\n\"Last-Translator: Murat Çorlu <muratcorlu@gmail.com>\\n\"\n\"Language-Team: Turkish (http://www.transifex.com/projects/p/django/language/\"\n\"tr/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: tr\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"ilk adım\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"önceki adım\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"gönder\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n\"Özür dileriz, form bilgileriniz zaman aşımına uğramış. Lütfen formu bu \"\n\"sayfada doldurmaya devam edin.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/tt/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Azat Khasanshin <lordofbazuks@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:42+0000\\n\"\n\"Last-Translator: Azat Khasanshin <lordofbazuks@gmail.com>\\n\"\n\"Language-Team: Tatar (http://www.transifex.com/projects/p/django/language/\"\n\"tt/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: tt\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n\"Гафу үтенәбез, сезнең формагыз искергән. Зинһар, бу биттәге форманы \"\n\"тутырыгыз.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/uk/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Sergey Lysach <sergikoff88@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-11 17:26+0000\\n\"\n\"Last-Translator: Sergey Lysach <sergikoff88@gmail.com>\\n\"\n\"Language-Team: Ukrainian (http://www.transifex.com/projects/p/django/\"\n\"language/uk/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: uk\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"перший крок\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"попередній крок\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"відправити\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n\"Пробачте, але закінчився строк заповнення форми. Будь ласка, продовжіть \"\n\"заповнення форми з цієї сторінки.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/ur/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Mansoorulhaq Mansoor <mansoorulhaq1986@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:42+0000\\n\"\n\"Last-Translator: Mansoorulhaq Mansoor <mansoorulhaq1986@gmail.com>\\n\"\n\"Language-Team: Urdu (http://www.transifex.com/projects/p/django/language/\"\n\"ur/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ur\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n\"ھم معذرت خواہ ھیں، آپ کے فارم کی مدت ختم ھو چکی ھے۔ براہ مھربانی اس صفحے سے \"\n\"فارم پر کریں۔\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/vi/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:42+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Vietnamese (http://www.transifex.com/projects/p/django/\"\n\"language/vi/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: vi\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"\"\n\"Xin lỗi, form mà bạn điền đã hết hiệu lực. Hãy điền vào form lấy từ trang \"\n\"này.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/zh_CN/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Ziang Song <songziang@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 18:56+0000\\n\"\n\"Last-Translator: Ziang Song <songziang@gmail.com>\\n\"\n\"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/django/\"\n\"language/zh_CN/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: zh_CN\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"第一步\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"上一步\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"提交\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"很抱歉，但是你的表单已过期。请继续填写本页中表单的其余部分。\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/locale/zh_TW/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <ilay@ilay.tw>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-08-06 01:25+0000\\n\"\n\"Last-Translator: ilay <ilay@ilay.tw>\\n\"\n\"Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/django/\"\n\"language/zh_TW/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: zh_TW\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: templates/formtools/wizard/wizard_form.html:15\nmsgid \"first step\"\nmsgstr \"第一步\"\n\n#: templates/formtools/wizard/wizard_form.html:16\nmsgid \"prev step\"\nmsgstr \"下一步\"\n\n#: templates/formtools/wizard/wizard_form.html:18\nmsgid \"submit\"\nmsgstr \"送出\"\n\n#: wizard/legacy.py:159\nmsgid \"\"\n\"We apologize, but your form has expired. Please continue filling out the \"\n\"form from this page.\"\nmsgstr \"很抱歉，但你的表單已過期。請繼續填寫本頁的表單。\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/models.py",
    "content": "\"\"\" models.py (even empty) currently required by the runtests.py to enable unit tests \"\"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/preview.py",
    "content": "\"\"\"\nFormtools Preview application.\n\"\"\"\n\nfrom django.http import Http404\nfrom django.shortcuts import render_to_response\nfrom django.template.context import RequestContext\nfrom django.utils.crypto import constant_time_compare\nfrom django.contrib.formtools.utils import form_hmac\n\nAUTO_ID = 'formtools_%s' # Each form here uses this as its auto_id parameter.\n\nclass FormPreview(object):\n    preview_template = 'formtools/preview.html'\n    form_template = 'formtools/form.html'\n\n    # METHODS SUBCLASSES SHOULDN'T OVERRIDE ###################################\n\n    def __init__(self, form):\n        # form should be a Form class, not an instance.\n        self.form, self.state = form, {}\n\n    def __call__(self, request, *args, **kwargs):\n        stage = {'1': 'preview', '2': 'post'}.get(request.POST.get(self.unused_name('stage')), 'preview')\n        self.parse_params(*args, **kwargs)\n        try:\n            method = getattr(self, stage + '_' + request.method.lower())\n        except AttributeError:\n            raise Http404\n        return method(request)\n\n    def unused_name(self, name):\n        \"\"\"\n        Given a first-choice name, adds an underscore to the name until it\n        reaches a name that isn't claimed by any field in the form.\n\n        This is calculated rather than being hard-coded so that no field names\n        are off-limits for use in the form.\n        \"\"\"\n        while 1:\n            try:\n                f = self.form.base_fields[name]\n            except KeyError:\n                break # This field name isn't being used by the form.\n            name += '_'\n        return name\n\n    def preview_get(self, request):\n        \"Displays the form\"\n        f = self.form(auto_id=self.get_auto_id(), initial=self.get_initial(request))\n        return render_to_response(self.form_template,\n            self.get_context(request, f),\n            context_instance=RequestContext(request))\n\n    def preview_post(self, request):\n        \"Validates the POST data. If valid, displays the preview page. Else, redisplays form.\"\n        f = self.form(request.POST, auto_id=self.get_auto_id())\n        context = self.get_context(request, f)\n        if f.is_valid():\n            self.process_preview(request, f, context)\n            context['hash_field'] = self.unused_name('hash')\n            context['hash_value'] = self.security_hash(request, f)\n            return render_to_response(self.preview_template, context, context_instance=RequestContext(request))\n        else:\n            return render_to_response(self.form_template, context, context_instance=RequestContext(request))\n\n    def _check_security_hash(self, token, request, form):\n        expected = self.security_hash(request, form)\n        return constant_time_compare(token, expected)\n\n    def post_post(self, request):\n        \"Validates the POST data. If valid, calls done(). Else, redisplays form.\"\n        f = self.form(request.POST, auto_id=self.get_auto_id())\n        if f.is_valid():\n            if not self._check_security_hash(request.POST.get(self.unused_name('hash'), ''),\n                                             request, f):\n                return self.failed_hash(request) # Security hash failed.\n            return self.done(request, f.cleaned_data)\n        else:\n            return render_to_response(self.form_template,\n                self.get_context(request, f),\n                context_instance=RequestContext(request))\n\n    # METHODS SUBCLASSES MIGHT OVERRIDE IF APPROPRIATE ########################\n\n    def get_auto_id(self):\n        \"\"\"\n        Hook to override the ``auto_id`` kwarg for the form. Needed when\n        rendering two form previews in the same template.\n        \"\"\"\n        return AUTO_ID\n\n    def get_initial(self, request):\n        \"\"\"\n        Takes a request argument and returns a dictionary to pass to the form's\n        ``initial`` kwarg when the form is being created from an HTTP get.\n        \"\"\"\n        return {}\n\n    def get_context(self, request, form):\n        \"Context for template rendering.\"\n        return {'form': form, 'stage_field': self.unused_name('stage'), 'state': self.state}\n\n\n    def parse_params(self, *args, **kwargs):\n        \"\"\"\n        Given captured args and kwargs from the URLconf, saves something in\n        self.state and/or raises Http404 if necessary.\n\n        For example, this URLconf captures a user_id variable:\n\n            (r'^contact/(?P<user_id>\\d{1,6})/$', MyFormPreview(MyForm)),\n\n        In this case, the kwargs variable in parse_params would be\n        {'user_id': 32} for a request to '/contact/32/'. You can use that\n        user_id to make sure it's a valid user and/or save it for later, for\n        use in done().\n        \"\"\"\n        pass\n\n    def process_preview(self, request, form, context):\n        \"\"\"\n        Given a validated form, performs any extra processing before displaying\n        the preview page, and saves any extra data in context.\n        \"\"\"\n        pass\n\n    def security_hash(self, request, form):\n        \"\"\"\n        Calculates the security hash for the given HttpRequest and Form instances.\n\n        Subclasses may want to take into account request-specific information,\n        such as the IP address.\n        \"\"\"\n        return form_hmac(form)\n\n    def failed_hash(self, request):\n        \"Returns an HttpResponse in the case of an invalid security hash.\"\n        return self.preview_post(request)\n\n    # METHODS SUBCLASSES MUST OVERRIDE ########################################\n\n    def done(self, request, cleaned_data):\n        \"\"\"\n        Does something with the cleaned_data and returns an\n        HttpResponseRedirect.\n        \"\"\"\n        raise NotImplementedError('You must define a done() method on your %s subclass.' % self.__class__.__name__)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/templates/formtools/form.html",
    "content": "{% extends \"base.html\" %}\n\n{% block content %}\n\n{% if form.errors %}<h1>Please correct the following errors</h1>{% else %}<h1>Submit</h1>{% endif %}\n\n<form action=\"\" method=\"post\">{% csrf_token %}\n<table>\n{{ form }}\n</table>\n<input type=\"hidden\" name=\"{{ stage_field }}\" value=\"1\" />\n<p><input type=\"submit\" value=\"Preview\" /></p>\n</form>\n\n{% endblock %}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/templates/formtools/preview.html",
    "content": "{% extends \"base.html\" %}\n\n{% block content %}\n\n<h1>Preview your submission</h1>\n\n<table>\n{% for field in form %}\n<tr>\n<th>{{ field.label }}:</th>\n<td>{{ field.data }}</td>\n</tr>\n{% endfor %}\n</table>\n\n<p>Security hash: {{ hash_value }}</p>\n\n<form action=\"\" method=\"post\">{% csrf_token %}\n{% for field in form %}{{ field.as_hidden }}\n{% endfor %}\n<input type=\"hidden\" name=\"{{ stage_field }}\" value=\"2\" />\n<input type=\"hidden\" name=\"{{ hash_field }}\" value=\"{{ hash_value }}\" />\n<p><input type=\"submit\" value=\"Submit\" /></p>\n</form>\n\n<h1>Or edit it again</h1>\n\n<form action=\"\" method=\"post\">{% csrf_token %}\n<table>\n{{ form }}\n</table>\n<input type=\"hidden\" name=\"{{ stage_field }}\" value=\"1\" />\n<p><input type=\"submit\" value=\"Preview\" /></p>\n</form>\n\n{% endblock %}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/templates/formtools/wizard/wizard_form.html",
    "content": "{% load i18n %}\n{% csrf_token %}\n{{ wizard.form.media }}\n{{ wizard.management_form }}\n{% if wizard.form.forms %}\n    {{ wizard.form.management_form }}\n    {% for form in wizard.form.forms %}\n        {{ form.as_p }}\n    {% endfor %}\n{% else %}\n    {{ wizard.form.as_p }}\n{% endif %}\n\n{% if wizard.steps.prev %}\n<button name=\"wizard_goto_step\" type=\"submit\" value=\"{{ wizard.steps.first }}\">{% trans \"first step\" %}</button>\n<button name=\"wizard_goto_step\" type=\"submit\" value=\"{{ wizard.steps.prev }}\">{% trans \"prev step\" %}</button>\n{% endif %}\n<input type=\"submit\" name=\"submit\" value=\"{% trans \"submit\" %}\" />\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/tests/__init__.py",
    "content": "# -*- coding: utf-8 -*-\nfrom __future__ import unicode_literals\n\nimport datetime\nimport os\nimport pickle\nimport re\nimport warnings\n\nfrom django import http\nfrom django.conf import settings\nfrom django.contrib.formtools import preview, utils\nfrom django.contrib.formtools.wizard import FormWizard\nfrom django.test import TestCase\nfrom django.test.html import parse_html\nfrom django.test.utils import override_settings\nfrom django.utils._os import upath\nfrom django.utils import unittest\n\nfrom django.contrib.formtools.tests.wizard import *\nfrom django.contrib.formtools.tests.forms import *\n\nsuccess_string = \"Done was called!\"\nsuccess_string_encoded = success_string.encode()\n\nclass TestFormPreview(preview.FormPreview):\n    def get_context(self, request, form):\n        context = super(TestFormPreview, self).get_context(request, form)\n        context.update({'custom_context': True})\n        return context\n\n    def get_initial(self, request):\n        return {'field1': 'Works!'}\n\n    def done(self, request, cleaned_data):\n        return http.HttpResponse(success_string)\n\n@override_settings(\n    TEMPLATE_DIRS=(\n        os.path.join(os.path.dirname(upath(__file__)), 'templates'),\n    ),\n)\nclass PreviewTests(TestCase):\n    urls = 'django.contrib.formtools.tests.urls'\n\n    def setUp(self):\n        super(PreviewTests, self).setUp()\n        # Create a FormPreview instance to share between tests\n        self.preview = preview.FormPreview(TestForm)\n        input_template = '<input type=\"hidden\" name=\"%s\" value=\"%s\" />'\n        self.input = input_template % (self.preview.unused_name('stage'), \"%d\")\n        self.test_data = {'field1': 'foo', 'field1_': 'asdf'}\n\n    def test_unused_name(self):\n        \"\"\"\n        Verifies name mangling to get uniue field name.\n        \"\"\"\n        self.assertEqual(self.preview.unused_name('field1'), 'field1__')\n\n    def test_form_get(self):\n        \"\"\"\n        Test contrib.formtools.preview form retrieval.\n\n        Use the client library to see if we can sucessfully retrieve\n        the form (mostly testing the setup ROOT_URLCONF\n        process). Verify that an additional  hidden input field\n        is created to manage the stage.\n\n        \"\"\"\n        response = self.client.get('/preview/')\n        stage = self.input % 1\n        self.assertContains(response, stage, 1)\n        self.assertEqual(response.context['custom_context'], True)\n        self.assertEqual(response.context['form'].initial, {'field1': 'Works!'})\n\n    def test_form_preview(self):\n        \"\"\"\n        Test contrib.formtools.preview form preview rendering.\n\n        Use the client library to POST to the form to see if a preview\n        is returned.  If we do get a form back check that the hidden\n        value is correctly managing the state of the form.\n\n        \"\"\"\n        # Pass strings for form submittal and add stage variable to\n        # show we previously saw first stage of the form.\n        self.test_data.update({'stage': 1, 'date1': datetime.date(2006, 10, 25)})\n        response = self.client.post('/preview/', self.test_data)\n        # Check to confirm stage is set to 2 in output form.\n        stage = self.input % 2\n        self.assertContains(response, stage, 1)\n\n    def test_form_submit(self):\n        \"\"\"\n        Test contrib.formtools.preview form submittal.\n\n        Use the client library to POST to the form with stage set to 3\n        to see if our forms done() method is called. Check first\n        without the security hash, verify failure, retry with security\n        hash and verify sucess.\n\n        \"\"\"\n        # Pass strings for form submittal and add stage variable to\n        # show we previously saw first stage of the form.\n        self.test_data.update({'stage': 2, 'date1': datetime.date(2006, 10, 25)})\n        response = self.client.post('/preview/', self.test_data)\n        self.assertNotEqual(response.content, success_string_encoded)\n        hash = self.preview.security_hash(None, TestForm(self.test_data))\n        self.test_data.update({'hash': hash})\n        response = self.client.post('/preview/', self.test_data)\n        self.assertEqual(response.content, success_string_encoded)\n\n    def test_bool_submit(self):\n        \"\"\"\n        Test contrib.formtools.preview form submittal when form contains:\n        BooleanField(required=False)\n\n        Ticket: #6209 - When an unchecked BooleanField is previewed, the preview\n        form's hash would be computed with no value for ``bool1``. However, when\n        the preview form is rendered, the unchecked hidden BooleanField would be\n        rendered with the string value 'False'. So when the preview form is\n        resubmitted, the hash would be computed with the value 'False' for\n        ``bool1``. We need to make sure the hashes are the same in both cases.\n\n        \"\"\"\n        self.test_data.update({'stage':2})\n        hash = self.preview.security_hash(None, TestForm(self.test_data))\n        self.test_data.update({'hash': hash, 'bool1': 'False'})\n        with warnings.catch_warnings(record=True):\n            response = self.client.post('/preview/', self.test_data)\n            self.assertEqual(response.content, success_string_encoded)\n\n    def test_form_submit_good_hash(self):\n        \"\"\"\n        Test contrib.formtools.preview form submittal, using a correct\n        hash\n        \"\"\"\n        # Pass strings for form submittal and add stage variable to\n        # show we previously saw first stage of the form.\n        self.test_data.update({'stage':2})\n        response = self.client.post('/preview/', self.test_data)\n        self.assertNotEqual(response.content, success_string_encoded)\n        hash = utils.form_hmac(TestForm(self.test_data))\n        self.test_data.update({'hash': hash})\n        response = self.client.post('/preview/', self.test_data)\n        self.assertEqual(response.content, success_string_encoded)\n\n\n    def test_form_submit_bad_hash(self):\n        \"\"\"\n        Test contrib.formtools.preview form submittal does not proceed\n        if the hash is incorrect.\n        \"\"\"\n        # Pass strings for form submittal and add stage variable to\n        # show we previously saw first stage of the form.\n        self.test_data.update({'stage':2})\n        response = self.client.post('/preview/', self.test_data)\n        self.assertEqual(response.status_code, 200)\n        self.assertNotEqual(response.content, success_string_encoded)\n        hash = utils.form_hmac(TestForm(self.test_data)) + \"bad\"\n        self.test_data.update({'hash': hash})\n        response = self.client.post('/previewpreview/', self.test_data)\n        self.assertNotEqual(response.content, success_string_encoded)\n\n\nclass FormHmacTests(unittest.TestCase):\n\n    def test_textfield_hash(self):\n        \"\"\"\n        Regression test for #10034: the hash generation function should ignore\n        leading/trailing whitespace so as to be friendly to broken browsers that\n        submit it (usually in textareas).\n        \"\"\"\n        f1 = HashTestForm({'name': 'joe', 'bio': 'Speaking español.'})\n        f2 = HashTestForm({'name': '  joe', 'bio': 'Speaking español.  '})\n        hash1 = utils.form_hmac(f1)\n        hash2 = utils.form_hmac(f2)\n        self.assertEqual(hash1, hash2)\n\n    def test_empty_permitted(self):\n        \"\"\"\n        Regression test for #10643: the security hash should allow forms with\n        empty_permitted = True, or forms where data has not changed.\n        \"\"\"\n        f1 = HashTestBlankForm({})\n        f2 = HashTestForm({}, empty_permitted=True)\n        hash1 = utils.form_hmac(f1)\n        hash2 = utils.form_hmac(f2)\n        self.assertEqual(hash1, hash2)\n\n\n#\n# FormWizard tests\n#\n\nclass TestWizardClass(FormWizard):\n\n    def get_template(self, step):\n        return 'forms/wizard.html'\n\n    def done(self, request, cleaned_data):\n        return http.HttpResponse(success_string)\n\n\nclass DummyRequest(http.HttpRequest):\n\n    def __init__(self, POST=None):\n        super(DummyRequest, self).__init__()\n        self.method = POST and \"POST\" or \"GET\"\n        if POST is not None:\n            self.POST.update(POST)\n        self._dont_enforce_csrf_checks = True\n\n\n@override_settings(\n    SECRET_KEY=\"123\",\n    TEMPLATE_DIRS=(\n        os.path.join(os.path.dirname(upath(__file__)), 'templates'),\n    ),\n)\nclass WizardTests(TestCase):\n    urls = 'django.contrib.formtools.tests.urls'\n    wizard_step_data = (\n        {\n            '0-name': 'Pony',\n            '0-thirsty': '2',\n        },\n        {\n            '1-address1': '123 Main St',\n            '1-address2': 'Djangoland',\n        },\n        {\n            '2-random_crap': 'blah blah',\n        }\n    )\n\n    def setUp(self):\n        super(WizardTests, self).setUp()\n        self.save_warnings_state()\n        warnings.filterwarnings('ignore', category=DeprecationWarning,\n                                module='django.contrib.formtools.wizard')\n\n    def tearDown(self):\n        super(WizardTests, self).tearDown()\n        self.restore_warnings_state()\n\n    def test_step_starts_at_zero(self):\n        \"\"\"\n        step should be zero for the first form\n        \"\"\"\n        response = self.client.get('/wizard1/')\n        self.assertEqual(0, response.context['step0'])\n\n    def test_step_increments(self):\n        \"\"\"\n        step should be incremented when we go to the next page\n        \"\"\"\n        response = self.client.post('/wizard1/', {\"0-field\":\"test\", \"wizard_step\":\"0\"})\n        self.assertEqual(1, response.context['step0'])\n\n    def test_bad_hash(self):\n        \"\"\"\n        Form should not advance if the hash is missing or bad\n        \"\"\"\n        response = self.client.post('/wizard1/',\n                                    {\"0-field\":\"test\",\n                                     \"1-field\":\"test2\",\n                                     \"wizard_step\": \"1\"})\n        self.assertEqual(0, response.context['step0'])\n\n    def test_good_hash(self):\n        \"\"\"\n        Form should advance if the hash is present and good, as calculated using\n        current method.\n        \"\"\"\n        data = {\"0-field\": \"test\",\n                \"1-field\": \"test2\",\n                \"hash_0\": {\n                    2: \"cd13b1db3e8f55174bc5745a1b1a53408d4fd1ca\",\n                    3: \"9355d5dff22d49dbad58e46189982cec649f9f5b\",\n                }[pickle.HIGHEST_PROTOCOL],\n                \"wizard_step\": \"1\"}\n        response = self.client.post('/wizard1/', data)\n        self.assertEqual(2, response.context['step0'])\n\n    def test_11726(self):\n        \"\"\"\n        Regression test for ticket #11726.\n        Wizard should not raise Http404 when steps are added dynamically.\n        \"\"\"\n        reached = [False]\n        that = self\n\n        class WizardWithProcessStep(TestWizardClass):\n            def process_step(self, request, form, step):\n                if step == 0:\n                    if self.num_steps() < 2:\n                        self.form_list.append(WizardPageTwoForm)\n                if step == 1:\n                    that.assertTrue(isinstance(form, WizardPageTwoForm))\n                    reached[0] = True\n\n        wizard = WizardWithProcessStep([WizardPageOneForm])\n        data = {\"0-field\": \"test\",\n                \"1-field\": \"test2\",\n                \"hash_0\": {\n                    2: \"cd13b1db3e8f55174bc5745a1b1a53408d4fd1ca\",\n                    3: \"9355d5dff22d49dbad58e46189982cec649f9f5b\",\n                }[pickle.HIGHEST_PROTOCOL],\n                \"wizard_step\": \"1\"}\n        wizard(DummyRequest(POST=data))\n        self.assertTrue(reached[0])\n\n        data = {\"0-field\": \"test\",\n                \"1-field\": \"test2\",\n                \"hash_0\": {\n                    2: \"cd13b1db3e8f55174bc5745a1b1a53408d4fd1ca\",\n                    3: \"9355d5dff22d49dbad58e46189982cec649f9f5b\",\n                }[pickle.HIGHEST_PROTOCOL],\n                \"hash_1\": {\n                    2: \"1e6f6315da42e62f33a30640ec7e007ad3fbf1a1\",\n                    3: \"c33142ef9d01b1beae238adf22c3c6c57328f51a\",\n                }[pickle.HIGHEST_PROTOCOL],\n                \"wizard_step\": \"2\"}\n        self.assertRaises(http.Http404, wizard, DummyRequest(POST=data))\n\n    def test_14498(self):\n        \"\"\"\n        Regression test for ticket #14498.  All previous steps' forms should be\n        validated.\n        \"\"\"\n        reached = [False]\n        that = self\n\n        class WizardWithProcessStep(TestWizardClass):\n            def process_step(self, request, form, step):\n                that.assertTrue(form.is_valid())\n                reached[0] = True\n\n        wizard = WizardWithProcessStep([WizardPageOneForm,\n                                        WizardPageTwoForm,\n                                        WizardPageThreeForm])\n        data = {\"0-field\": \"test\",\n                \"1-field\": \"test2\",\n                \"hash_0\": {\n                    2: \"cd13b1db3e8f55174bc5745a1b1a53408d4fd1ca\",\n                    3: \"9355d5dff22d49dbad58e46189982cec649f9f5b\",\n                }[pickle.HIGHEST_PROTOCOL],\n                \"wizard_step\": \"1\"}\n        wizard(DummyRequest(POST=data))\n        self.assertTrue(reached[0])\n\n    def test_14576(self):\n        \"\"\"\n        Regression test for ticket #14576.\n\n        The form of the last step is not passed to the done method.\n        \"\"\"\n        reached = [False]\n        that = self\n\n        class Wizard(TestWizardClass):\n            def done(self, request, form_list):\n                reached[0] = True\n                that.assertTrue(len(form_list) == 2)\n\n        wizard = Wizard([WizardPageOneForm,\n                         WizardPageTwoForm])\n\n        data = {\"0-field\": \"test\",\n                \"1-field\": \"test2\",\n                \"hash_0\": {\n                    2: \"cd13b1db3e8f55174bc5745a1b1a53408d4fd1ca\",\n                    3: \"9355d5dff22d49dbad58e46189982cec649f9f5b\",\n                }[pickle.HIGHEST_PROTOCOL],\n                \"wizard_step\": \"1\"}\n        wizard(DummyRequest(POST=data))\n        self.assertTrue(reached[0])\n\n    def test_15075(self):\n        \"\"\"\n        Regression test for ticket #15075.  Allow modifying wizard's form_list\n        in process_step.\n        \"\"\"\n        reached = [False]\n        that = self\n\n        class WizardWithProcessStep(TestWizardClass):\n            def process_step(self, request, form, step):\n                if step == 0:\n                    self.form_list[1] = WizardPageTwoAlternativeForm\n                if step == 1:\n                    that.assertTrue(isinstance(form, WizardPageTwoAlternativeForm))\n                    reached[0] = True\n\n        wizard = WizardWithProcessStep([WizardPageOneForm,\n                                        WizardPageTwoForm,\n                                        WizardPageThreeForm])\n        data = {\"0-field\": \"test\",\n                \"1-field\": \"test2\",\n                \"hash_0\": {\n                    2: \"cd13b1db3e8f55174bc5745a1b1a53408d4fd1ca\",\n                    3: \"9355d5dff22d49dbad58e46189982cec649f9f5b\",\n                }[pickle.HIGHEST_PROTOCOL],\n                \"wizard_step\": \"1\"}\n        wizard(DummyRequest(POST=data))\n        self.assertTrue(reached[0])\n\n    def grab_field_data(self, response):\n        \"\"\"\n        Pull the appropriate field data from the context to pass to the next wizard step\n        \"\"\"\n        previous_fields = parse_html(response.context['previous_fields'])\n        fields = {'wizard_step': response.context['step0']}\n\n        for input_field in previous_fields:\n            input_attrs = dict(input_field.attributes)\n            fields[input_attrs[\"name\"]] = input_attrs[\"value\"]\n\n        return fields\n\n    def check_wizard_step(self, response, step_no):\n        \"\"\"\n        Helper function to test each step of the wizard\n        - Make sure the call succeeded\n        - Make sure response is the proper step number\n        - return the result from the post for the next step\n        \"\"\"\n        step_count = len(self.wizard_step_data)\n\n        self.assertContains(response, 'Step %d of %d' % (step_no, step_count))\n\n        data = self.grab_field_data(response)\n        data.update(self.wizard_step_data[step_no - 1])\n\n        return self.client.post('/wizard2/', data)\n\n    def test_9473(self):\n        response = self.client.get('/wizard2/')\n        for step_no in range(1, len(self.wizard_step_data) + 1):\n            response = self.check_wizard_step(response, step_no)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/tests/forms.py",
    "content": "from django import forms\nfrom django.contrib.formtools.wizard import FormWizard\nfrom django.http import HttpResponse\n\nclass Page1(forms.Form):\n    name = forms.CharField(max_length=100)\n    thirsty = forms.NullBooleanField()\n\nclass Page2(forms.Form):\n    address1 = forms.CharField(max_length=100)\n    address2 = forms.CharField(max_length=100)\n\nclass Page3(forms.Form):\n    random_crap = forms.CharField(max_length=100)\n\nclass ContactWizard(FormWizard):\n    def done(self, request, form_list):\n        return HttpResponse(\"\")\n\nclass TestForm(forms.Form):\n    field1 = forms.CharField()\n    field1_ = forms.CharField()\n    bool1 = forms.BooleanField(required=False)\n    date1 = forms.DateField(required=False)\n\nclass HashTestForm(forms.Form):\n    name = forms.CharField()\n    bio = forms.CharField()\n\nclass HashTestBlankForm(forms.Form):\n    name = forms.CharField(required=False)\n    bio = forms.CharField(required=False)\n\nclass WizardPageOneForm(forms.Form):\n    field = forms.CharField()\n\nclass WizardPageTwoForm(forms.Form):\n    field = forms.CharField()\n\nclass WizardPageTwoAlternativeForm(forms.Form):\n    field = forms.CharField()\n\nclass WizardPageThreeForm(forms.Form):\n    field = forms.CharField()\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/tests/templates/404.html",
    "content": "Not found.\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/tests/templates/base.html",
    "content": "{% block content %}\n{% endblock %}"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/tests/templates/forms/wizard.html",
    "content": "<html>\n  <body>\n    <p>Step {{ step }} of {{ step_count }}</p>\n    <form action=\".\" method=\"post\">\n    <table>\n    {{ form }}\n    </table>\n    <input type=\"hidden\" name=\"{{ step_field }}\" value=\"{{ step0 }}\" />\n    {{ previous_fields|safe }}\n    <input type=\"submit\">\n    </form>\n  </body>\n</html>\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/tests/urls.py",
    "content": "\"\"\"\nThis is a URLconf to be loaded by tests.py. Add any URLs needed for tests only.\n\"\"\"\n\nfrom __future__ import absolute_import\n\nfrom django.conf.urls import patterns, url\nfrom django.contrib.formtools.tests import TestFormPreview, TestWizardClass\n\nfrom django.contrib.formtools.tests.forms import (ContactWizard, Page1, Page2,\n    Page3, TestForm, WizardPageOneForm, WizardPageTwoForm, WizardPageThreeForm)\n\n\nurlpatterns = patterns('',\n    url(r'^preview/', TestFormPreview(TestForm)),\n    url(r'^wizard1/$', TestWizardClass(\n        [WizardPageOneForm, WizardPageTwoForm, WizardPageThreeForm])),\n    url(r'^wizard2/$', ContactWizard([Page1, Page2, Page3])),\n)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/tests/wizard/__init__.py",
    "content": "from django.contrib.formtools.tests.wizard.cookiestorage import TestCookieStorage\nfrom django.contrib.formtools.tests.wizard.forms import FormTests, SessionFormTests, CookieFormTests\nfrom django.contrib.formtools.tests.wizard.loadstorage import TestLoadStorage\nfrom django.contrib.formtools.tests.wizard.namedwizardtests.tests import (\n    NamedSessionWizardTests,\n    NamedCookieWizardTests,\n    TestNamedUrlSessionWizardView,\n    TestNamedUrlCookieWizardView,\n    NamedSessionFormTests,\n    NamedCookieFormTests,\n)\nfrom django.contrib.formtools.tests.wizard.sessionstorage import TestSessionStorage\nfrom django.contrib.formtools.tests.wizard.wizardtests.tests import (\n    SessionWizardTests,\n    CookieWizardTests,\n    WizardTestKwargs,\n    WizardTestGenericViewInterface,\n    WizardFormKwargsOverrideTests,\n)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/tests/wizard/cookiestorage.py",
    "content": "import json\n\nfrom django.test import TestCase\nfrom django.core import signing\nfrom django.core.exceptions import SuspiciousOperation\nfrom django.http import HttpResponse\n\nfrom django.contrib.auth.tests.utils import skipIfCustomUser\nfrom django.contrib.formtools.wizard.storage.cookie import CookieStorage\nfrom django.contrib.formtools.tests.wizard.storage import get_request, TestStorage\n\n\n@skipIfCustomUser\nclass TestCookieStorage(TestStorage, TestCase):\n    def get_storage(self):\n        return CookieStorage\n\n    def test_manipulated_cookie(self):\n        request = get_request()\n        storage = self.get_storage()('wizard1', request, None)\n\n        cookie_signer = signing.get_cookie_signer(storage.prefix)\n\n        storage.request.COOKIES[storage.prefix] = cookie_signer.sign(\n            storage.encoder.encode({'key1': 'value1'}))\n\n        self.assertEqual(storage.load_data(), {'key1': 'value1'})\n\n        storage.request.COOKIES[storage.prefix] = 'i_am_manipulated'\n        self.assertRaises(SuspiciousOperation, storage.load_data)\n\n    def test_reset_cookie(self):\n        request = get_request()\n        storage = self.get_storage()('wizard1', request, None)\n\n        storage.data = {'key1': 'value1'}\n\n        response = HttpResponse()\n        storage.update_response(response)\n\n        cookie_signer = signing.get_cookie_signer(storage.prefix)\n        signed_cookie_data = cookie_signer.sign(storage.encoder.encode(storage.data))\n        self.assertEqual(response.cookies[storage.prefix].value, signed_cookie_data)\n\n        storage.init_data()\n        storage.update_response(response)\n        unsigned_cookie_data = cookie_signer.unsign(response.cookies[storage.prefix].value)\n        self.assertJSONEqual(unsigned_cookie_data,\n            {\"step_files\": {}, \"step\": None, \"extra_data\": {}, \"step_data\": {}})\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/tests/wizard/forms.py",
    "content": "from __future__ import unicode_literals\n\nfrom django import forms, http\nfrom django.conf import settings\nfrom django.db import models\nfrom django.test import TestCase\nfrom django.template.response import TemplateResponse\nfrom django.utils.importlib import import_module\n\nfrom django.contrib.auth.models import User\n\nfrom django.contrib.formtools.wizard.views import (WizardView,\n                                                   SessionWizardView,\n                                                   CookieWizardView)\n\n\nclass DummyRequest(http.HttpRequest):\n    def __init__(self, POST=None):\n        super(DummyRequest, self).__init__()\n        self.method = POST and \"POST\" or \"GET\"\n        if POST is not None:\n            self.POST.update(POST)\n        self.session = {}\n        self._dont_enforce_csrf_checks = True\n\n\ndef get_request(*args, **kwargs):\n    request = DummyRequest(*args, **kwargs)\n    engine = import_module(settings.SESSION_ENGINE)\n    request.session = engine.SessionStore(None)\n    return request\n\n\nclass Step1(forms.Form):\n    name = forms.CharField()\n\n\nclass Step2(forms.Form):\n    name = forms.CharField()\n\n\nclass Step3(forms.Form):\n    data = forms.CharField()\n\n\nclass CustomKwargsStep1(Step1):\n\n    def __init__(self, test=None, *args, **kwargs):\n        self.test = test\n        return super(CustomKwargsStep1, self).__init__(*args, **kwargs)\n\n\nclass TestModel(models.Model):\n    name = models.CharField(max_length=100)\n\n    class Meta:\n        app_label = 'formtools'\n\n\nclass TestModelForm(forms.ModelForm):\n    class Meta:\n        model = TestModel\n\n\nTestModelFormSet = forms.models.modelformset_factory(TestModel, form=TestModelForm, extra=2)\n\n\nclass TestWizard(WizardView):\n    storage_name = 'django.contrib.formtools.wizard.storage.session.SessionStorage'\n\n    def dispatch(self, request, *args, **kwargs):\n        response = super(TestWizard, self).dispatch(request, *args, **kwargs)\n        return response, self\n\n    def get_form_kwargs(self, step, *args, **kwargs):\n        kwargs = super(TestWizard, self).get_form_kwargs(step, *args, **kwargs)\n        if step == 'kwargs_test':\n            kwargs['test'] = True\n        return kwargs\n\nclass FormTests(TestCase):\n    def test_form_init(self):\n        testform = TestWizard.get_initkwargs([Step1, Step2])\n        self.assertEqual(testform['form_list'], {'0': Step1, '1': Step2})\n\n        testform = TestWizard.get_initkwargs([('start', Step1), ('step2', Step2)])\n        self.assertEqual(\n            testform['form_list'], {'start': Step1, 'step2': Step2})\n\n        testform = TestWizard.get_initkwargs([Step1, Step2, ('finish', Step3)])\n        self.assertEqual(\n            testform['form_list'], {'0': Step1, '1': Step2, 'finish': Step3})\n\n    def test_first_step(self):\n        request = get_request()\n\n        testform = TestWizard.as_view([Step1, Step2])\n        response, instance = testform(request)\n        self.assertEqual(instance.steps.current, '0')\n\n        testform = TestWizard.as_view([('start', Step1), ('step2', Step2)])\n        response, instance = testform(request)\n\n        self.assertEqual(instance.steps.current, 'start')\n\n    def test_persistence(self):\n        testform = TestWizard.as_view([('start', Step1), ('step2', Step2)])\n        request = get_request({'test_wizard-current_step': 'start',\n                               'name': 'data1'})\n        response, instance = testform(request)\n        self.assertEqual(instance.steps.current, 'start')\n\n        instance.storage.current_step = 'step2'\n\n        testform2 = TestWizard.as_view([('start', Step1), ('step2', Step2)])\n        request.POST = {'test_wizard-current_step': 'step2'}\n        response, instance = testform2(request)\n        self.assertEqual(instance.steps.current, 'step2')\n\n    def test_form_condition(self):\n        request = get_request()\n\n        testform = TestWizard.as_view(\n            [('start', Step1), ('step2', Step2), ('step3', Step3)],\n            condition_dict={'step2': True})\n        response, instance = testform(request)\n        self.assertEqual(instance.get_next_step(), 'step2')\n\n        testform = TestWizard.as_view(\n            [('start', Step1), ('step2', Step2), ('step3', Step3)],\n            condition_dict={'step2': False})\n        response, instance = testform(request)\n        self.assertEqual(instance.get_next_step(), 'step3')\n\n    def test_form_kwargs(self):\n        request = get_request()\n\n        testform = TestWizard.as_view([('start', Step1),\n            ('kwargs_test', CustomKwargsStep1)])\n        response, instance = testform(request)\n\n        self.assertEqual(instance.get_form_kwargs('start'), {})\n        self.assertEqual(instance.get_form_kwargs('kwargs_test'), {'test': True})\n        self.assertEqual(instance.get_form('kwargs_test').test, True)\n\n    def test_form_prefix(self):\n        request = get_request()\n\n        testform = TestWizard.as_view([('start', Step1), ('step2', Step2)])\n        response, instance = testform(request)\n\n        self.assertEqual(instance.get_form_prefix(), 'start')\n        self.assertEqual(instance.get_form_prefix('another'), 'another')\n\n    def test_form_initial(self):\n        request = get_request()\n\n        testform = TestWizard.as_view([('start', Step1), ('step2', Step2)],\n            initial_dict={'start': {'name': 'value1'}})\n        response, instance = testform(request)\n\n        self.assertEqual(instance.get_form_initial('start'), {'name': 'value1'})\n        self.assertEqual(instance.get_form_initial('step2'), {})\n\n    def test_form_instance(self):\n        request = get_request()\n        the_instance = TestModel()\n        testform = TestWizard.as_view([('start', TestModelForm), ('step2', Step2)],\n            instance_dict={'start': the_instance})\n        response, instance = testform(request)\n\n        self.assertEqual(\n            instance.get_form_instance('start'),\n            the_instance)\n        self.assertEqual(\n            instance.get_form_instance('non_exist_instance'),\n            None)\n\n    def test_formset_instance(self):\n        request = get_request()\n        the_instance1, created = TestModel.objects.get_or_create(\n            name='test object 1')\n        the_instance2, created = TestModel.objects.get_or_create(\n            name='test object 2')\n        testform = TestWizard.as_view([('start', TestModelFormSet), ('step2', Step2)],\n            instance_dict={'start': TestModel.objects.filter(name='test object 1')})\n        response, instance = testform(request)\n\n        self.assertEqual(list(instance.get_form_instance('start')), [the_instance1])\n        self.assertEqual(instance.get_form_instance('non_exist_instance'), None)\n\n        self.assertEqual(instance.get_form().initial_form_count(), 1)\n\n    def test_done(self):\n        request = get_request()\n\n        testform = TestWizard.as_view([('start', Step1), ('step2', Step2)])\n        response, instance = testform(request)\n\n        self.assertRaises(NotImplementedError, instance.done, None)\n\n    def test_revalidation(self):\n        request = get_request()\n\n        testform = TestWizard.as_view([('start', Step1), ('step2', Step2)])\n        response, instance = testform(request)\n        instance.render_done(None)\n        self.assertEqual(instance.storage.current_step, 'start')\n\n\nclass SessionFormTests(TestCase):\n    def test_init(self):\n        request = get_request()\n        testform = SessionWizardView.as_view([('start', Step1)])\n        self.assertTrue(isinstance(testform(request), TemplateResponse))\n\n\nclass CookieFormTests(TestCase):\n    def test_init(self):\n        request = get_request()\n        testform = CookieWizardView.as_view([('start', Step1)])\n        self.assertTrue(isinstance(testform(request), TemplateResponse))\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/tests/wizard/loadstorage.py",
    "content": "from django.test import TestCase\n\nfrom django.contrib.formtools.wizard.storage import (get_storage,\n                                                     MissingStorageModule,\n                                                     MissingStorageClass)\nfrom django.contrib.formtools.wizard.storage.base import BaseStorage\n\n\nclass TestLoadStorage(TestCase):\n    def test_load_storage(self):\n        self.assertEqual(\n            type(get_storage('django.contrib.formtools.wizard.storage.base.BaseStorage', 'wizard1')),\n            BaseStorage)\n\n    def test_missing_module(self):\n        self.assertRaises(MissingStorageModule, get_storage,\n            'django.contrib.formtools.wizard.storage.idontexist.IDontExistStorage', 'wizard1')\n\n    def test_missing_class(self):\n        self.assertRaises(MissingStorageClass, get_storage,\n            'django.contrib.formtools.wizard.storage.base.IDontExistStorage', 'wizard1')\n\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/tests/wizard/namedwizardtests/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/tests/wizard/namedwizardtests/forms.py",
    "content": "import os\nimport tempfile\n\nfrom django import forms\nfrom django.core.files.storage import FileSystemStorage\nfrom django.forms.formsets import formset_factory\nfrom django.http import HttpResponse\nfrom django.template import Template, Context\n\nfrom django.contrib.auth.models import User\n\nfrom django.contrib.formtools.wizard.views import NamedUrlWizardView\n\ntemp_storage_location = tempfile.mkdtemp(dir=os.environ.get('DJANGO_TEST_TEMP_DIR'))\ntemp_storage = FileSystemStorage(location=temp_storage_location)\n\nclass Page1(forms.Form):\n    name = forms.CharField(max_length=100)\n    user = forms.ModelChoiceField(queryset=User.objects.all())\n    thirsty = forms.NullBooleanField()\n\nclass Page2(forms.Form):\n    address1 = forms.CharField(max_length=100)\n    address2 = forms.CharField(max_length=100)\n    file1 = forms.FileField()\n\nclass Page3(forms.Form):\n    random_crap = forms.CharField(max_length=100)\n\nPage4 = formset_factory(Page3, extra=2)\n\nclass ContactWizard(NamedUrlWizardView):\n    file_storage = temp_storage\n\n    def done(self, form_list, **kwargs):\n        c = Context({\n            'form_list': [x.cleaned_data for x in form_list],\n            'all_cleaned_data': self.get_all_cleaned_data()\n        })\n\n        for form in self.form_list.keys():\n            c[form] = self.get_cleaned_data_for_step(form)\n\n        c['this_will_fail'] = self.get_cleaned_data_for_step('this_will_fail')\n        return HttpResponse(Template('').render(c))\n\nclass SessionContactWizard(ContactWizard):\n    storage_name = 'django.contrib.formtools.wizard.storage.session.SessionStorage'\n\nclass CookieContactWizard(ContactWizard):\n    storage_name = 'django.contrib.formtools.wizard.storage.cookie.CookieStorage'\n\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/tests/wizard/namedwizardtests/tests.py",
    "content": "from __future__ import unicode_literals\n\nfrom django.core.urlresolvers import reverse\nfrom django.http import QueryDict\nfrom django.test import TestCase\n\nfrom django.contrib.auth.models import User\nfrom django.contrib.auth.tests.utils import skipIfCustomUser\n\nfrom django.contrib.formtools.wizard.views import (NamedUrlSessionWizardView,\n                                                   NamedUrlCookieWizardView)\nfrom django.contrib.formtools.tests.wizard.forms import get_request, Step1, Step2\n\n\nclass NamedWizardTests(object):\n    urls = 'django.contrib.formtools.tests.wizard.namedwizardtests.urls'\n\n    def setUp(self):\n        self.testuser, created = User.objects.get_or_create(username='testuser1')\n        self.wizard_step_data[0]['form1-user'] = self.testuser.pk\n\n    def test_initial_call(self):\n        response = self.client.get(reverse('%s_start' % self.wizard_urlname))\n        self.assertEqual(response.status_code, 302)\n        response = self.client.get(response['Location'])\n        self.assertEqual(response.status_code, 200)\n        wizard = response.context['wizard']\n        self.assertEqual(wizard['steps'].current, 'form1')\n        self.assertEqual(wizard['steps'].step0, 0)\n        self.assertEqual(wizard['steps'].step1, 1)\n        self.assertEqual(wizard['steps'].last, 'form4')\n        self.assertEqual(wizard['steps'].prev, None)\n        self.assertEqual(wizard['steps'].next, 'form2')\n        self.assertEqual(wizard['steps'].count, 4)\n        self.assertEqual(wizard['url_name'], self.wizard_urlname)\n\n    def test_initial_call_with_params(self):\n        get_params = {'getvar1': 'getval1', 'getvar2': 'getval2'}\n        response = self.client.get(reverse('%s_start' % self.wizard_urlname),\n                                   get_params)\n        self.assertEqual(response.status_code, 302)\n\n        # Test for proper redirect GET parameters\n        location = response['Location']\n        self.assertNotEqual(location.find('?'), -1)\n        querydict = QueryDict(location[location.find('?') + 1:])\n        self.assertEqual(dict(querydict.items()), get_params)\n\n    def test_form_post_error(self):\n        response = self.client.post(\n            reverse(self.wizard_urlname, kwargs={'step': 'form1'}),\n            self.wizard_step_1_data)\n\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.context['wizard']['steps'].current, 'form1')\n        self.assertEqual(response.context['wizard']['form'].errors,\n                         {'name': ['This field is required.'],\n                          'user': ['This field is required.']})\n\n    def test_form_post_success(self):\n        response = self.client.post(\n            reverse(self.wizard_urlname, kwargs={'step': 'form1'}),\n            self.wizard_step_data[0])\n        response = self.client.get(response['Location'])\n\n        self.assertEqual(response.status_code, 200)\n        wizard = response.context['wizard']\n        self.assertEqual(wizard['steps'].current, 'form2')\n        self.assertEqual(wizard['steps'].step0, 1)\n        self.assertEqual(wizard['steps'].prev, 'form1')\n        self.assertEqual(wizard['steps'].next, 'form3')\n\n    def test_form_stepback(self):\n        response = self.client.get(\n            reverse(self.wizard_urlname, kwargs={'step': 'form1'}))\n\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.context['wizard']['steps'].current, 'form1')\n\n        response = self.client.post(\n            reverse(self.wizard_urlname, kwargs={'step': 'form1'}),\n            self.wizard_step_data[0])\n        response = self.client.get(response['Location'])\n\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.context['wizard']['steps'].current, 'form2')\n\n        response = self.client.post(\n            reverse(self.wizard_urlname, kwargs={\n                'step': response.context['wizard']['steps'].current\n            }), {'wizard_goto_step': response.context['wizard']['steps'].prev})\n        response = self.client.get(response['Location'])\n\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.context['wizard']['steps'].current, 'form1')\n\n    def test_form_jump(self):\n        response = self.client.get(\n            reverse(self.wizard_urlname, kwargs={'step': 'form1'}))\n\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.context['wizard']['steps'].current, 'form1')\n\n        response = self.client.get(\n            reverse(self.wizard_urlname, kwargs={'step': 'form3'}))\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.context['wizard']['steps'].current, 'form3')\n\n    def test_form_finish(self):\n        response = self.client.get(\n            reverse(self.wizard_urlname, kwargs={'step': 'form1'}))\n\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.context['wizard']['steps'].current, 'form1')\n\n        response = self.client.post(\n            reverse(self.wizard_urlname,\n                    kwargs={'step': response.context['wizard']['steps'].current}),\n            self.wizard_step_data[0])\n        response = self.client.get(response['Location'])\n\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.context['wizard']['steps'].current, 'form2')\n\n        post_data = self.wizard_step_data[1]\n        post_data['form2-file1'].close()\n        post_data['form2-file1'] = open(__file__, 'rb')\n        response = self.client.post(\n            reverse(self.wizard_urlname,\n                    kwargs={'step': response.context['wizard']['steps'].current}),\n            post_data)\n        response = self.client.get(response['Location'])\n\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.context['wizard']['steps'].current, 'form3')\n\n        response = self.client.post(\n            reverse(self.wizard_urlname,\n                    kwargs={'step': response.context['wizard']['steps'].current}),\n            self.wizard_step_data[2])\n        response = self.client.get(response['Location'])\n\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.context['wizard']['steps'].current, 'form4')\n\n        response = self.client.post(\n            reverse(self.wizard_urlname,\n                    kwargs={'step': response.context['wizard']['steps'].current}),\n            self.wizard_step_data[3])\n        response = self.client.get(response['Location'])\n        self.assertEqual(response.status_code, 200)\n\n        all_data = response.context['form_list']\n        with open(__file__, 'rb') as f:\n            self.assertEqual(all_data[1]['file1'].read(), f.read())\n        all_data[1]['file1'].close()\n        del all_data[1]['file1']\n        self.assertEqual(all_data, [\n            {'name': 'Pony', 'thirsty': True, 'user': self.testuser},\n            {'address1': '123 Main St', 'address2': 'Djangoland'},\n            {'random_crap': 'blah blah'},\n            [{'random_crap': 'blah blah'}, {'random_crap': 'blah blah'}]])\n\n    def test_cleaned_data(self):\n        response = self.client.get(\n            reverse(self.wizard_urlname, kwargs={'step': 'form1'}))\n        self.assertEqual(response.status_code, 200)\n\n        response = self.client.post(\n            reverse(self.wizard_urlname,\n                    kwargs={'step': response.context['wizard']['steps'].current}),\n            self.wizard_step_data[0])\n        response = self.client.get(response['Location'])\n        self.assertEqual(response.status_code, 200)\n\n        post_data = self.wizard_step_data[1]\n        post_data['form2-file1'] = open(__file__, 'rb')\n        response = self.client.post(\n            reverse(self.wizard_urlname,\n                    kwargs={'step': response.context['wizard']['steps'].current}),\n            post_data)\n        response = self.client.get(response['Location'])\n        self.assertEqual(response.status_code, 200)\n\n        step2_url = reverse(self.wizard_urlname, kwargs={'step': 'form2'})\n        response = self.client.get(step2_url)\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.context['wizard']['steps'].current, 'form2')\n        with open(__file__, 'rb') as f:\n            self.assertEqual(\n                response.context['wizard']['form'].files['form2-file1'].read(),\n                f.read())\n\n        response = self.client.post(\n            reverse(self.wizard_urlname,\n                    kwargs={'step': response.context['wizard']['steps'].current}),\n            self.wizard_step_data[2])\n        response = self.client.get(response['Location'])\n        self.assertEqual(response.status_code, 200)\n\n        response = self.client.post(\n            reverse(self.wizard_urlname,\n                    kwargs={'step': response.context['wizard']['steps'].current}),\n            self.wizard_step_data[3])\n        response = self.client.get(response['Location'])\n        self.assertEqual(response.status_code, 200)\n\n        all_data = response.context['all_cleaned_data']\n        with open(__file__, 'rb') as f:\n            self.assertEqual(all_data['file1'].read(), f.read())\n        all_data['file1'].close()\n        del all_data['file1']\n        self.assertEqual(\n            all_data,\n            {'name': 'Pony', 'thirsty': True, 'user': self.testuser,\n             'address1': '123 Main St', 'address2': 'Djangoland',\n             'random_crap': 'blah blah', 'formset-form4': [\n                 {'random_crap': 'blah blah'},\n                 {'random_crap': 'blah blah'}\n             ]})\n\n    def test_manipulated_data(self):\n        response = self.client.get(\n            reverse(self.wizard_urlname, kwargs={'step': 'form1'}))\n        self.assertEqual(response.status_code, 200)\n\n        response = self.client.post(\n            reverse(self.wizard_urlname,\n                    kwargs={'step': response.context['wizard']['steps'].current}),\n            self.wizard_step_data[0])\n        response = self.client.get(response['Location'])\n        self.assertEqual(response.status_code, 200)\n\n        post_data = self.wizard_step_data[1]\n        post_data['form2-file1'].close()\n        post_data['form2-file1'] = open(__file__, 'rb')\n        response = self.client.post(\n            reverse(self.wizard_urlname,\n                    kwargs={'step': response.context['wizard']['steps'].current}),\n            post_data)\n        response = self.client.get(response['Location'])\n        self.assertEqual(response.status_code, 200)\n\n        response = self.client.post(\n            reverse(self.wizard_urlname,\n                    kwargs={'step': response.context['wizard']['steps'].current}),\n            self.wizard_step_data[2])\n        loc = response['Location']\n        response = self.client.get(loc)\n        self.assertEqual(response.status_code, 200, loc)\n\n        self.client.cookies.pop('sessionid', None)\n        self.client.cookies.pop('wizard_cookie_contact_wizard', None)\n\n        response = self.client.post(\n            reverse(self.wizard_urlname,\n                    kwargs={'step': response.context['wizard']['steps'].current}),\n            self.wizard_step_data[3])\n\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.context['wizard']['steps'].current, 'form1')\n\n    def test_form_reset(self):\n        response = self.client.post(\n            reverse(self.wizard_urlname, kwargs={'step': 'form1'}),\n            self.wizard_step_data[0])\n        response = self.client.get(response['Location'])\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.context['wizard']['steps'].current, 'form2')\n\n        response = self.client.get(\n            '%s?reset=1' % reverse('%s_start' % self.wizard_urlname))\n        self.assertEqual(response.status_code, 302)\n\n        response = self.client.get(response['Location'])\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.context['wizard']['steps'].current, 'form1')\n\n\n@skipIfCustomUser\nclass NamedSessionWizardTests(NamedWizardTests, TestCase):\n    wizard_urlname = 'nwiz_session'\n    wizard_step_1_data = {\n        'session_contact_wizard-current_step': 'form1',\n    }\n    wizard_step_data = (\n        {\n            'form1-name': 'Pony',\n            'form1-thirsty': '2',\n            'session_contact_wizard-current_step': 'form1',\n        },\n        {\n            'form2-address1': '123 Main St',\n            'form2-address2': 'Djangoland',\n            'session_contact_wizard-current_step': 'form2',\n        },\n        {\n            'form3-random_crap': 'blah blah',\n            'session_contact_wizard-current_step': 'form3',\n        },\n        {\n            'form4-INITIAL_FORMS': '0',\n            'form4-TOTAL_FORMS': '2',\n            'form4-MAX_NUM_FORMS': '0',\n            'form4-0-random_crap': 'blah blah',\n            'form4-1-random_crap': 'blah blah',\n            'session_contact_wizard-current_step': 'form4',\n        }\n    )\n\n\n@skipIfCustomUser\nclass NamedCookieWizardTests(NamedWizardTests, TestCase):\n    wizard_urlname = 'nwiz_cookie'\n    wizard_step_1_data = {\n        'cookie_contact_wizard-current_step': 'form1',\n    }\n    wizard_step_data = (\n        {\n            'form1-name': 'Pony',\n            'form1-thirsty': '2',\n            'cookie_contact_wizard-current_step': 'form1',\n        },\n        {\n            'form2-address1': '123 Main St',\n            'form2-address2': 'Djangoland',\n            'cookie_contact_wizard-current_step': 'form2',\n        },\n        {\n            'form3-random_crap': 'blah blah',\n            'cookie_contact_wizard-current_step': 'form3',\n        },\n        {\n            'form4-INITIAL_FORMS': '0',\n            'form4-TOTAL_FORMS': '2',\n            'form4-MAX_NUM_FORMS': '0',\n            'form4-0-random_crap': 'blah blah',\n            'form4-1-random_crap': 'blah blah',\n            'cookie_contact_wizard-current_step': 'form4',\n        }\n    )\n\n\nclass NamedFormTests(object):\n    urls = 'django.contrib.formtools.tests.wizard.namedwizardtests.urls'\n\n    def test_revalidation(self):\n        request = get_request()\n\n        testform = self.formwizard_class.as_view(\n            [('start', Step1), ('step2', Step2)],\n            url_name=self.wizard_urlname)\n        response, instance = testform(request, step='done')\n\n        instance.render_done(None)\n        self.assertEqual(instance.storage.current_step, 'start')\n\n\nclass TestNamedUrlSessionWizardView(NamedUrlSessionWizardView):\n\n    def dispatch(self, request, *args, **kwargs):\n        response = super(TestNamedUrlSessionWizardView, self).dispatch(request, *args, **kwargs)\n        return response, self\n\n\nclass TestNamedUrlCookieWizardView(NamedUrlCookieWizardView):\n\n    def dispatch(self, request, *args, **kwargs):\n        response = super(TestNamedUrlCookieWizardView, self).dispatch(request, *args, **kwargs)\n        return response, self\n\n\n@skipIfCustomUser\nclass NamedSessionFormTests(NamedFormTests, TestCase):\n    formwizard_class = TestNamedUrlSessionWizardView\n    wizard_urlname = 'nwiz_session'\n\n\n@skipIfCustomUser\nclass NamedCookieFormTests(NamedFormTests, TestCase):\n    formwizard_class = TestNamedUrlCookieWizardView\n    wizard_urlname = 'nwiz_cookie'\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/tests/wizard/namedwizardtests/urls.py",
    "content": "from django.conf.urls import patterns, url\nfrom django.contrib.formtools.tests.wizard.namedwizardtests.forms import (\n    SessionContactWizard, CookieContactWizard, Page1, Page2, Page3, Page4)\n\ndef get_named_session_wizard():\n    return SessionContactWizard.as_view(\n        [('form1', Page1), ('form2', Page2), ('form3', Page3), ('form4', Page4)],\n        url_name='nwiz_session',\n        done_step_name='nwiz_session_done'\n    )\n\ndef get_named_cookie_wizard():\n    return CookieContactWizard.as_view(\n        [('form1', Page1), ('form2', Page2), ('form3', Page3), ('form4', Page4)],\n        url_name='nwiz_cookie',\n        done_step_name='nwiz_cookie_done'\n    )\n\nurlpatterns = patterns('',\n    url(r'^nwiz_session/(?P<step>.+)/$', get_named_session_wizard(), name='nwiz_session'),\n    url(r'^nwiz_session/$', get_named_session_wizard(), name='nwiz_session_start'),\n    url(r'^nwiz_cookie/(?P<step>.+)/$', get_named_cookie_wizard(), name='nwiz_cookie'),\n    url(r'^nwiz_cookie/$', get_named_cookie_wizard(), name='nwiz_cookie_start'),\n)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/tests/wizard/sessionstorage.py",
    "content": "from django.test import TestCase\n\nfrom django.contrib.auth.tests.utils import skipIfCustomUser\nfrom django.contrib.formtools.tests.wizard.storage import TestStorage\nfrom django.contrib.formtools.wizard.storage.session import SessionStorage\n\n\n@skipIfCustomUser\nclass TestSessionStorage(TestStorage, TestCase):\n    def get_storage(self):\n        return SessionStorage\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/tests/wizard/storage.py",
    "content": "from datetime import datetime\n\nfrom django.http import HttpRequest\nfrom django.conf import settings\nfrom django.utils.importlib import import_module\n\nfrom django.contrib.auth.models import User\n\n\ndef get_request():\n    request = HttpRequest()\n    engine = import_module(settings.SESSION_ENGINE)\n    request.session = engine.SessionStore(None)\n    return request\n\n\nclass TestStorage(object):\n    def setUp(self):\n        self.testuser, created = User.objects.get_or_create(username='testuser1')\n\n    def test_current_step(self):\n        request = get_request()\n        storage = self.get_storage()('wizard1', request, None)\n        my_step = 2\n\n        self.assertEqual(storage.current_step, None)\n\n        storage.current_step = my_step\n        self.assertEqual(storage.current_step, my_step)\n\n        storage.reset()\n        self.assertEqual(storage.current_step, None)\n\n        storage.current_step = my_step\n        storage2 = self.get_storage()('wizard2', request, None)\n        self.assertEqual(storage2.current_step, None)\n\n    def test_step_data(self):\n        request = get_request()\n        storage = self.get_storage()('wizard1', request, None)\n        step1 = 'start'\n        step_data1 = {'field1': 'data1',\n                      'field2': 'data2',\n                      'field3': datetime.now(),\n                      'field4': self.testuser}\n\n        self.assertEqual(storage.get_step_data(step1), None)\n\n        storage.set_step_data(step1, step_data1)\n        self.assertEqual(storage.get_step_data(step1), step_data1)\n\n        storage.reset()\n        self.assertEqual(storage.get_step_data(step1), None)\n\n        storage.set_step_data(step1, step_data1)\n        storage2 = self.get_storage()('wizard2', request, None)\n        self.assertEqual(storage2.get_step_data(step1), None)\n\n    def test_extra_context(self):\n        request = get_request()\n        storage = self.get_storage()('wizard1', request, None)\n        extra_context = {'key1': 'data1',\n                         'key2': 'data2',\n                         'key3': datetime.now(),\n                         'key4': self.testuser}\n\n        self.assertEqual(storage.extra_data, {})\n\n        storage.extra_data = extra_context\n        self.assertEqual(storage.extra_data, extra_context)\n\n        storage.reset()\n        self.assertEqual(storage.extra_data, {})\n\n        storage.extra_data = extra_context\n        storage2 = self.get_storage()('wizard2', request, None)\n        self.assertEqual(storage2.extra_data, {})\n\n    def test_extra_context_key_persistence(self):\n        request = get_request()\n        storage = self.get_storage()('wizard1', request, None)\n\n        self.assertFalse('test' in storage.extra_data)\n\n        storage.extra_data['test'] = True\n\n        self.assertTrue('test' in storage.extra_data)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/tests/wizard/wizardtests/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/tests/wizard/wizardtests/forms.py",
    "content": "import os\nimport tempfile\n\nfrom django import forms\nfrom django.contrib.auth.models import User\nfrom django.core.files.storage import FileSystemStorage\nfrom django.forms.formsets import formset_factory\nfrom django.forms.models import modelformset_factory\nfrom django.http import HttpResponse\nfrom django.template import Template, Context\n\nfrom django.contrib.auth.models import User\n\nfrom django.contrib.formtools.wizard.views import WizardView\n\ntemp_storage_location = tempfile.mkdtemp(dir=os.environ.get('DJANGO_TEST_TEMP_DIR'))\ntemp_storage = FileSystemStorage(location=temp_storage_location)\n\nclass Page1(forms.Form):\n    name = forms.CharField(max_length=100)\n    user = forms.ModelChoiceField(queryset=User.objects.all())\n    thirsty = forms.NullBooleanField()\n\nclass Page2(forms.Form):\n    address1 = forms.CharField(max_length=100)\n    address2 = forms.CharField(max_length=100)\n    file1 = forms.FileField()\n\nclass Page3(forms.Form):\n    random_crap = forms.CharField(max_length=100)\n\nPage4 = formset_factory(Page3, extra=2)\n\nclass ContactWizard(WizardView):\n    file_storage = temp_storage\n\n    def done(self, form_list, **kwargs):\n        c = Context({\n            'form_list': [x.cleaned_data for x in form_list],\n            'all_cleaned_data': self.get_all_cleaned_data(),\n        })\n\n        for form in self.form_list.keys():\n            c[form] = self.get_cleaned_data_for_step(form)\n\n        c['this_will_fail'] = self.get_cleaned_data_for_step('this_will_fail')\n        return HttpResponse(Template('').render(c))\n\n    def get_context_data(self, form, **kwargs):\n        context = super(ContactWizard, self).get_context_data(form, **kwargs)\n        if self.storage.current_step == 'form2':\n            context.update({'another_var': True})\n        return context\n\nclass UserForm(forms.ModelForm):\n    class Meta:\n        model = User\n        fields = ('username', 'email')\n\nUserFormSet = modelformset_factory(User, form=UserForm)\n\nclass SessionContactWizard(ContactWizard):\n    storage_name = 'django.contrib.formtools.wizard.storage.session.SessionStorage'\n\nclass CookieContactWizard(ContactWizard):\n    storage_name = 'django.contrib.formtools.wizard.storage.cookie.CookieStorage'\n\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/tests/wizard/wizardtests/templates/other_wizard_form.html",
    "content": "{% extends \"formtools/wizard/wizard_form.html\" %}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/tests/wizard/wizardtests/tests.py",
    "content": "from __future__ import unicode_literals\n\nimport os\n\nfrom django import forms\nfrom django.test import TestCase\nfrom django.test.client import RequestFactory\nfrom django.conf import settings\nfrom django.contrib.auth.models import User\nfrom django.contrib.auth.tests.utils import skipIfCustomUser\nfrom django.contrib.formtools.wizard.views import CookieWizardView\nfrom django.utils._os import upath\n\n\nclass UserForm(forms.ModelForm):\n    class Meta:\n        model = User\n\n\nUserFormSet = forms.models.modelformset_factory(User, form=UserForm, extra=2)\n\n\nclass WizardTests(object):\n    urls = 'django.contrib.formtools.tests.wizard.wizardtests.urls'\n\n    def setUp(self):\n        self.testuser, created = User.objects.get_or_create(username='testuser1')\n        self.wizard_step_data[0]['form1-user'] = self.testuser.pk\n\n    def test_initial_call(self):\n        response = self.client.get(self.wizard_url)\n        wizard = response.context['wizard']\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(wizard['steps'].current, 'form1')\n        self.assertEqual(wizard['steps'].step0, 0)\n        self.assertEqual(wizard['steps'].step1, 1)\n        self.assertEqual(wizard['steps'].last, 'form4')\n        self.assertEqual(wizard['steps'].prev, None)\n        self.assertEqual(wizard['steps'].next, 'form2')\n        self.assertEqual(wizard['steps'].count, 4)\n\n    def test_form_post_error(self):\n        response = self.client.post(self.wizard_url, self.wizard_step_1_data)\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.context['wizard']['steps'].current, 'form1')\n        self.assertEqual(response.context['wizard']['form'].errors,\n                         {'name': ['This field is required.'],\n                          'user': ['This field is required.']})\n\n    def test_form_post_success(self):\n        response = self.client.post(self.wizard_url, self.wizard_step_data[0])\n        wizard = response.context['wizard']\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(wizard['steps'].current, 'form2')\n        self.assertEqual(wizard['steps'].step0, 1)\n        self.assertEqual(wizard['steps'].prev, 'form1')\n        self.assertEqual(wizard['steps'].next, 'form3')\n\n    def test_form_stepback(self):\n        response = self.client.get(self.wizard_url)\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.context['wizard']['steps'].current, 'form1')\n\n        response = self.client.post(self.wizard_url, self.wizard_step_data[0])\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.context['wizard']['steps'].current, 'form2')\n\n        response = self.client.post(self.wizard_url, {\n            'wizard_goto_step': response.context['wizard']['steps'].prev})\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.context['wizard']['steps'].current, 'form1')\n\n    def test_template_context(self):\n        response = self.client.get(self.wizard_url)\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.context['wizard']['steps'].current, 'form1')\n        self.assertEqual(response.context.get('another_var', None), None)\n\n        response = self.client.post(self.wizard_url, self.wizard_step_data[0])\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.context['wizard']['steps'].current, 'form2')\n        self.assertEqual(response.context.get('another_var', None), True)\n\n        # ticket #19025: `form` should be included in context\n        form = response.context_data['wizard']['form']\n        self.assertEqual(response.context_data['form'], form)\n\n    def test_form_finish(self):\n        response = self.client.get(self.wizard_url)\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.context['wizard']['steps'].current, 'form1')\n\n        response = self.client.post(self.wizard_url, self.wizard_step_data[0])\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.context['wizard']['steps'].current, 'form2')\n\n        post_data = self.wizard_step_data[1]\n        post_data['form2-file1'] = open(upath(__file__), 'rb')\n        response = self.client.post(self.wizard_url, post_data)\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.context['wizard']['steps'].current, 'form3')\n\n        response = self.client.post(self.wizard_url, self.wizard_step_data[2])\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.context['wizard']['steps'].current, 'form4')\n\n        response = self.client.post(self.wizard_url, self.wizard_step_data[3])\n        self.assertEqual(response.status_code, 200)\n\n        all_data = response.context['form_list']\n        with open(upath(__file__), 'rb') as f:\n            self.assertEqual(all_data[1]['file1'].read(), f.read())\n        all_data[1]['file1'].close()\n        del all_data[1]['file1']\n        self.assertEqual(all_data, [\n            {'name': 'Pony', 'thirsty': True, 'user': self.testuser},\n            {'address1': '123 Main St', 'address2': 'Djangoland'},\n            {'random_crap': 'blah blah'},\n            [{'random_crap': 'blah blah'},\n             {'random_crap': 'blah blah'}]])\n\n    def test_cleaned_data(self):\n        response = self.client.get(self.wizard_url)\n        self.assertEqual(response.status_code, 200)\n\n        response = self.client.post(self.wizard_url, self.wizard_step_data[0])\n        self.assertEqual(response.status_code, 200)\n\n        post_data = self.wizard_step_data[1]\n        with open(upath(__file__), 'rb') as post_file:\n            post_data['form2-file1'] = post_file\n            response = self.client.post(self.wizard_url, post_data)\n        self.assertEqual(response.status_code, 200)\n\n        response = self.client.post(self.wizard_url, self.wizard_step_data[2])\n        self.assertEqual(response.status_code, 200)\n\n        response = self.client.post(self.wizard_url, self.wizard_step_data[3])\n        self.assertEqual(response.status_code, 200)\n\n        all_data = response.context['all_cleaned_data']\n        with open(upath(__file__), 'rb') as f:\n            self.assertEqual(all_data['file1'].read(), f.read())\n        all_data['file1'].close()\n        del all_data['file1']\n        self.assertEqual(all_data, {\n            'name': 'Pony', 'thirsty': True, 'user': self.testuser,\n            'address1': '123 Main St', 'address2': 'Djangoland',\n            'random_crap': 'blah blah', 'formset-form4': [\n                {'random_crap': 'blah blah'},\n                {'random_crap': 'blah blah'}]})\n\n    def test_manipulated_data(self):\n        response = self.client.get(self.wizard_url)\n        self.assertEqual(response.status_code, 200)\n\n        response = self.client.post(self.wizard_url, self.wizard_step_data[0])\n        self.assertEqual(response.status_code, 200)\n\n        post_data = self.wizard_step_data[1]\n        post_data['form2-file1'].close()\n        post_data['form2-file1'] = open(upath(__file__), 'rb')\n        response = self.client.post(self.wizard_url, post_data)\n        self.assertEqual(response.status_code, 200)\n\n        response = self.client.post(self.wizard_url, self.wizard_step_data[2])\n        self.assertEqual(response.status_code, 200)\n        self.client.cookies.pop('sessionid', None)\n        self.client.cookies.pop('wizard_cookie_contact_wizard', None)\n\n        response = self.client.post(self.wizard_url, self.wizard_step_data[3])\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.context['wizard']['steps'].current, 'form1')\n\n    def test_form_refresh(self):\n        response = self.client.get(self.wizard_url)\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.context['wizard']['steps'].current, 'form1')\n\n        response = self.client.post(self.wizard_url, self.wizard_step_data[0])\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.context['wizard']['steps'].current, 'form2')\n\n        response = self.client.post(self.wizard_url, self.wizard_step_data[0])\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.context['wizard']['steps'].current, 'form2')\n\n        post_data = self.wizard_step_data[1]\n        post_data['form2-file1'].close()\n        post_data['form2-file1'] = open(upath(__file__), 'rb')\n        response = self.client.post(self.wizard_url, post_data)\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.context['wizard']['steps'].current, 'form3')\n\n        response = self.client.post(self.wizard_url, self.wizard_step_data[2])\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.context['wizard']['steps'].current, 'form4')\n\n        response = self.client.post(self.wizard_url, self.wizard_step_data[0])\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.context['wizard']['steps'].current, 'form2')\n\n        response = self.client.post(self.wizard_url, self.wizard_step_data[3])\n        self.assertEqual(response.status_code, 200)\n\n\n@skipIfCustomUser\nclass SessionWizardTests(WizardTests, TestCase):\n    wizard_url = '/wiz_session/'\n    wizard_step_1_data = {\n        'session_contact_wizard-current_step': 'form1',\n    }\n    wizard_step_data = (\n        {\n            'form1-name': 'Pony',\n            'form1-thirsty': '2',\n            'session_contact_wizard-current_step': 'form1',\n        },\n        {\n            'form2-address1': '123 Main St',\n            'form2-address2': 'Djangoland',\n            'session_contact_wizard-current_step': 'form2',\n        },\n        {\n            'form3-random_crap': 'blah blah',\n            'session_contact_wizard-current_step': 'form3',\n        },\n        {\n            'form4-INITIAL_FORMS': '0',\n            'form4-TOTAL_FORMS': '2',\n            'form4-MAX_NUM_FORMS': '0',\n            'form4-0-random_crap': 'blah blah',\n            'form4-1-random_crap': 'blah blah',\n            'session_contact_wizard-current_step': 'form4',\n        }\n    )\n\n\n@skipIfCustomUser\nclass CookieWizardTests(WizardTests, TestCase):\n    wizard_url = '/wiz_cookie/'\n    wizard_step_1_data = {\n        'cookie_contact_wizard-current_step': 'form1',\n    }\n    wizard_step_data = (\n        {\n            'form1-name': 'Pony',\n            'form1-thirsty': '2',\n            'cookie_contact_wizard-current_step': 'form1',\n        },\n        {\n            'form2-address1': '123 Main St',\n            'form2-address2': 'Djangoland',\n            'cookie_contact_wizard-current_step': 'form2',\n        },\n        {\n            'form3-random_crap': 'blah blah',\n            'cookie_contact_wizard-current_step': 'form3',\n        },\n        {\n            'form4-INITIAL_FORMS': '0',\n            'form4-TOTAL_FORMS': '2',\n            'form4-MAX_NUM_FORMS': '0',\n            'form4-0-random_crap': 'blah blah',\n            'form4-1-random_crap': 'blah blah',\n            'cookie_contact_wizard-current_step': 'form4',\n        }\n    )\n\n\n@skipIfCustomUser\nclass WizardTestKwargs(TestCase):\n    wizard_url = '/wiz_other_template/'\n    wizard_step_1_data = {\n        'cookie_contact_wizard-current_step': 'form1',\n    }\n    wizard_step_data = (\n        {\n            'form1-name': 'Pony',\n            'form1-thirsty': '2',\n            'cookie_contact_wizard-current_step': 'form1',\n        },\n        {\n            'form2-address1': '123 Main St',\n            'form2-address2': 'Djangoland',\n            'cookie_contact_wizard-current_step': 'form2',\n        },\n        {\n            'form3-random_crap': 'blah blah',\n            'cookie_contact_wizard-current_step': 'form3',\n        },\n        {\n            'form4-INITIAL_FORMS': '0',\n            'form4-TOTAL_FORMS': '2',\n            'form4-MAX_NUM_FORMS': '0',\n            'form4-0-random_crap': 'blah blah',\n            'form4-1-random_crap': 'blah blah',\n            'cookie_contact_wizard-current_step': 'form4',\n        }\n    )\n    urls = 'django.contrib.formtools.tests.wizard.wizardtests.urls'\n\n    def setUp(self):\n        self.testuser, created = User.objects.get_or_create(username='testuser1')\n        self.wizard_step_data[0]['form1-user'] = self.testuser.pk\n\n    def test_template(self):\n        templates = os.path.join(os.path.dirname(upath(__file__)), 'templates')\n        with self.settings(\n                TEMPLATE_DIRS=list(settings.TEMPLATE_DIRS) + [templates]):\n            response = self.client.get(self.wizard_url)\n            self.assertTemplateUsed(response, 'other_wizard_form.html')\n\n\nclass WizardTestGenericViewInterface(TestCase):\n    def test_get_context_data_inheritance(self):\n        class TestWizard(CookieWizardView):\n            \"\"\"\n            A subclass that implements ``get_context_data`` using the standard\n            protocol for generic views (accept only **kwargs).\n\n            See ticket #17148.\n            \"\"\"\n            def get_context_data(self, **kwargs):\n                context = super(TestWizard, self).get_context_data(**kwargs)\n                context['test_key'] = 'test_value'\n                return context\n\n        factory = RequestFactory()\n        view = TestWizard.as_view([forms.Form])\n\n        response = view(factory.get('/'))\n        self.assertEqual(response.context_data['test_key'], 'test_value')\n\n    def test_get_context_data_with_mixin(self):\n        class AnotherMixin(object):\n            def get_context_data(self, **kwargs):\n                context = super(AnotherMixin, self).get_context_data(**kwargs)\n                context['another_key'] = 'another_value'\n                return context\n\n        class TestWizard(AnotherMixin, CookieWizardView):\n            \"\"\"\n            A subclass that implements ``get_context_data`` using the standard\n            protocol for generic views (accept only **kwargs).\n\n            See ticket #17148.\n            \"\"\"\n            def get_context_data(self, **kwargs):\n                context = super(TestWizard, self).get_context_data(**kwargs)\n                context['test_key'] = 'test_value'\n                return context\n\n        factory = RequestFactory()\n\n        view = TestWizard.as_view([forms.Form])\n\n        response = view(factory.get('/'))\n        self.assertEqual(response.context_data['test_key'], 'test_value')\n        self.assertEqual(response.context_data['another_key'], 'another_value')\n\n\n@skipIfCustomUser\nclass WizardFormKwargsOverrideTests(TestCase):\n    def setUp(self):\n        super(WizardFormKwargsOverrideTests, self).setUp()\n        self.rf = RequestFactory()\n\n        # Create two users so we can filter by is_staff when handing our\n        # wizard a queryset keyword argument.\n        self.normal_user = User.objects.create(username='test1', email='normal@example.com')\n        self.staff_user = User.objects.create(username='test2', email='staff@example.com', is_staff=True)\n\n    def test_instance_is_maintained(self):\n        self.assertEqual(2, User.objects.count())\n        queryset = User.objects.get(pk=self.staff_user.pk)\n\n        class InstanceOverrideWizard(CookieWizardView):\n            def get_form_kwargs(self, step):\n                return {'instance': queryset}\n\n        view = InstanceOverrideWizard.as_view([UserForm])\n        response = view(self.rf.get('/'))\n\n        form = response.context_data['wizard']['form']\n\n        self.assertNotEqual(form.instance.pk, None)\n        self.assertEqual(form.instance.pk, self.staff_user.pk)\n        self.assertEqual('staff@example.com', form.initial.get('email', None))\n\n    def test_queryset_is_maintained(self):\n        queryset = User.objects.filter(pk=self.staff_user.pk)\n\n        class QuerySetOverrideWizard(CookieWizardView):\n            def get_form_kwargs(self, step):\n                return {'queryset': queryset}\n\n        view = QuerySetOverrideWizard.as_view([UserFormSet])\n        response = view(self.rf.get('/'))\n\n        formset = response.context_data['wizard']['form']\n\n        self.assertNotEqual(formset.queryset, None)\n        self.assertEqual(formset.initial_form_count(), 1)\n        self.assertEqual(['staff@example.com'],\n            list(formset.queryset.values_list('email', flat=True)))\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/tests/wizard/wizardtests/urls.py",
    "content": "from django.conf.urls import patterns, url\nfrom django.contrib.formtools.tests.wizard.wizardtests.forms import (\n    SessionContactWizard, CookieContactWizard, Page1, Page2, Page3, Page4)\n\nurlpatterns = patterns('',\n    url(r'^wiz_session/$', SessionContactWizard.as_view(\n        [('form1', Page1),\n         ('form2', Page2),\n         ('form3', Page3),\n         ('form4', Page4)])),\n    url(r'^wiz_cookie/$', CookieContactWizard.as_view(\n        [('form1', Page1),\n         ('form2', Page2),\n         ('form3', Page3),\n         ('form4', Page4)])),\n     url(r'^wiz_other_template/$', CookieContactWizard.as_view(\n         [('form1', Page1),\n          ('form2', Page2),\n          ('form3', Page3),\n          ('form4', Page4)],\n          template_name='other_wizard_form.html')),\n)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/utils.py",
    "content": "from __future__ import unicode_literals\n\n# Do not try cPickle here (see #18340)\nimport pickle\n\nfrom django.utils.crypto import salted_hmac\nfrom django.utils import six\n\n\ndef form_hmac(form):\n    \"\"\"\n    Calculates a security hash for the given Form instance.\n    \"\"\"\n    data = []\n    for bf in form:\n        # Get the value from the form data. If the form allows empty or hasn't\n        # changed then don't call clean() to avoid trigger validation errors.\n        if form.empty_permitted and not form.has_changed():\n            value = bf.data or ''\n        else:\n            value = bf.field.clean(bf.data) or ''\n        if isinstance(value, six.string_types):\n            value = value.strip()\n        data.append((bf.name, value))\n\n    pickled = pickle.dumps(data, pickle.HIGHEST_PROTOCOL)\n    key_salt = 'django.contrib.formtools'\n    return salted_hmac(key_salt, pickled).hexdigest()\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/wizard/__init__.py",
    "content": "from django.contrib.formtools.wizard.legacy import FormWizard\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/wizard/forms.py",
    "content": "from django import forms\n\nclass ManagementForm(forms.Form):\n    \"\"\"\n    ``ManagementForm`` is used to keep track of the current wizard step.\n    \"\"\"\n    current_step = forms.CharField(widget=forms.HiddenInput)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/wizard/legacy.py",
    "content": "\"\"\"\nFormWizard class -- implements a multi-page form, validating between each\nstep and storing the form's state as HTML hidden fields so that no state is\nstored on the server side.\n\"\"\"\nfrom django.forms import HiddenInput\nfrom django.http import Http404\nfrom django.shortcuts import render_to_response\nfrom django.template.context import RequestContext\nfrom django.utils.crypto import constant_time_compare\nfrom django.utils.translation import ugettext_lazy as _\nfrom django.utils.decorators import method_decorator\nfrom django.views.decorators.csrf import csrf_protect\n\nfrom django.contrib.formtools.utils import form_hmac\n\nclass FormWizard(object):\n    # The HTML (and POST data) field name for the \"step\" variable.\n    step_field_name=\"wizard_step\"\n\n    # METHODS SUBCLASSES SHOULDN'T OVERRIDE ###################################\n\n    def __init__(self, form_list, initial=None):\n        \"\"\"\n        Start a new wizard with a list of forms.\n\n        form_list should be a list of Form classes (not instances).\n        \"\"\"\n        self.form_list = form_list[:]\n        self.initial = initial or {}\n\n        # Dictionary of extra template context variables.\n        self.extra_context = {}\n\n        # A zero-based counter keeping track of which step we're in.\n        self.step = 0\n\n        import warnings\n        warnings.warn(\n            'Old-style form wizards have been deprecated; use the class-based '\n            'views in django.contrib.formtools.wizard.views instead.',\n            DeprecationWarning)\n\n    def __repr__(self):\n        return \"step: %d\\nform_list: %s\\ninitial_data: %s\" % (self.step, self.form_list, self.initial)\n\n    def get_form(self, step, data=None):\n        \"Helper method that returns the Form instance for the given step.\"\n        # Sanity check.\n        if step >= self.num_steps():\n            raise Http404('Step %s does not exist' % step)\n        return self.form_list[step](data, prefix=self.prefix_for_step(step), initial=self.initial.get(step, None))\n\n    def num_steps(self):\n        \"Helper method that returns the number of steps.\"\n        # You might think we should just set \"self.num_steps = len(form_list)\"\n        # in __init__(), but this calculation needs to be dynamic, because some\n        # hook methods might alter self.form_list.\n        return len(self.form_list)\n\n    def _check_security_hash(self, token, request, form):\n        expected = self.security_hash(request, form)\n        return constant_time_compare(token, expected)\n\n    @method_decorator(csrf_protect)\n    def __call__(self, request, *args, **kwargs):\n        \"\"\"\n        Main method that does all the hard work, conforming to the Django view\n        interface.\n        \"\"\"\n        if 'extra_context' in kwargs:\n            self.extra_context.update(kwargs['extra_context'])\n        current_step = self.get_current_or_first_step(request, *args, **kwargs)\n        self.parse_params(request, *args, **kwargs)\n\n        # Validate and process all the previous forms before instantiating the\n        # current step's form in case self.process_step makes changes to\n        # self.form_list.\n\n        # If any of them fails validation, that must mean the validator relied\n        # on some other input, such as an external Web site.\n\n        # It is also possible that alidation might fail under certain attack\n        # situations: an attacker might be able to bypass previous stages, and\n        # generate correct security hashes for all the skipped stages by virtue\n        # of:\n        #  1) having filled out an identical form which doesn't have the\n        #     validation (and does something different at the end),\n        #  2) or having filled out a previous version of the same form which\n        #     had some validation missing,\n        #  3) or previously having filled out the form when they had more\n        #     privileges than they do now.\n        #\n        # Since the hashes only take into account values, and not other other\n        # validation the form might do, we must re-do validation now for\n        # security reasons.\n        previous_form_list = []\n        for i in range(current_step):\n            f = self.get_form(i, request.POST)\n            if not self._check_security_hash(request.POST.get(\"hash_%d\" % i, ''),\n                                             request, f):\n                return self.render_hash_failure(request, i)\n\n            if not f.is_valid():\n                return self.render_revalidation_failure(request, i, f)\n            else:\n                self.process_step(request, f, i)\n                previous_form_list.append(f)\n\n        # Process the current step. If it's valid, go to the next step or call\n        # done(), depending on whether any steps remain.\n        if request.method == 'POST':\n            form = self.get_form(current_step, request.POST)\n        else:\n            form = self.get_form(current_step)\n\n        if form.is_valid():\n            self.process_step(request, form, current_step)\n            next_step = current_step + 1\n\n            if next_step == self.num_steps():\n                return self.done(request, previous_form_list + [form])\n            else:\n                form = self.get_form(next_step)\n                self.step = current_step = next_step\n\n        return self.render(form, request, current_step)\n\n    def render(self, form, request, step, context=None):\n        \"Renders the given Form object, returning an HttpResponse.\"\n        old_data = request.POST\n        prev_fields = []\n        if old_data:\n            hidden = HiddenInput()\n            # Collect all data from previous steps and render it as HTML hidden fields.\n            for i in range(step):\n                old_form = self.get_form(i, old_data)\n                hash_name = 'hash_%s' % i\n                prev_fields.extend([bf.as_hidden() for bf in old_form])\n                prev_fields.append(hidden.render(hash_name, old_data.get(hash_name, self.security_hash(request, old_form))))\n        return self.render_template(request, form, ''.join(prev_fields), step, context)\n\n    # METHODS SUBCLASSES MIGHT OVERRIDE IF APPROPRIATE ########################\n\n    def prefix_for_step(self, step):\n        \"Given the step, returns a Form prefix to use.\"\n        return str(step)\n\n    def render_hash_failure(self, request, step):\n        \"\"\"\n        Hook for rendering a template if a hash check failed.\n\n        step is the step that failed. Any previous step is guaranteed to be\n        valid.\n\n        This default implementation simply renders the form for the given step,\n        but subclasses may want to display an error message, etc.\n        \"\"\"\n        return self.render(self.get_form(step), request, step, context={'wizard_error': _('We apologize, but your form has expired. Please continue filling out the form from this page.')})\n\n    def render_revalidation_failure(self, request, step, form):\n        \"\"\"\n        Hook for rendering a template if final revalidation failed.\n\n        It is highly unlikely that this point would ever be reached, but See\n        the comment in __call__() for an explanation.\n        \"\"\"\n        return self.render(form, request, step)\n\n    def security_hash(self, request, form):\n        \"\"\"\n        Calculates the security hash for the given HttpRequest and Form instances.\n\n        Subclasses may want to take into account request-specific information,\n        such as the IP address.\n        \"\"\"\n        return form_hmac(form)\n\n    def get_current_or_first_step(self, request, *args, **kwargs):\n        \"\"\"\n        Given the request object and whatever *args and **kwargs were passed to\n        __call__(), returns the current step (which is zero-based).\n\n        Note that the result should not be trusted. It may even be a completely\n        invalid number. It's not the job of this method to validate it.\n        \"\"\"\n        if not request.POST:\n            return 0\n        try:\n            step = int(request.POST.get(self.step_field_name, 0))\n        except ValueError:\n            return 0\n        return step\n\n    def parse_params(self, request, *args, **kwargs):\n        \"\"\"\n        Hook for setting some state, given the request object and whatever\n        *args and **kwargs were passed to __call__(), sets some state.\n\n        This is called at the beginning of __call__().\n        \"\"\"\n        pass\n\n    def get_template(self, step):\n        \"\"\"\n        Hook for specifying the name of the template to use for a given step.\n\n        Note that this can return a tuple of template names if you'd like to\n        use the template system's select_template() hook.\n        \"\"\"\n        return 'forms/wizard.html'\n\n    def render_template(self, request, form, previous_fields, step, context=None):\n        \"\"\"\n        Renders the template for the given step, returning an HttpResponse object.\n\n        Override this method if you want to add a custom context, return a\n        different MIME type, etc. If you only need to override the template\n        name, use get_template() instead.\n\n        The template will be rendered with the following context:\n            step_field -- The name of the hidden field containing the step.\n            step0      -- The current step (zero-based).\n            step       -- The current step (one-based).\n            step_count -- The total number of steps.\n            form       -- The Form instance for the current step (either empty\n                          or with errors).\n            previous_fields -- A string representing every previous data field,\n                          plus hashes for completed forms, all in the form of\n                          hidden fields. Note that you'll need to run this\n                          through the \"safe\" template filter, to prevent\n                          auto-escaping, because it's raw HTML.\n        \"\"\"\n        context = context or {}\n        context.update(self.extra_context)\n        return render_to_response(self.get_template(step), dict(context,\n            step_field=self.step_field_name,\n            step0=step,\n            step=step + 1,\n            step_count=self.num_steps(),\n            form=form,\n            previous_fields=previous_fields\n        ), context_instance=RequestContext(request))\n\n    def process_step(self, request, form, step):\n        \"\"\"\n        Hook for modifying the FormWizard's internal state, given a fully\n        validated Form object. The Form is guaranteed to have clean, valid\n        data.\n\n        This method should *not* modify any of that data. Rather, it might want\n        to set self.extra_context or dynamically alter self.form_list, based on\n        previously submitted forms.\n\n        Note that this method is called every time a page is rendered for *all*\n        submitted steps.\n        \"\"\"\n        pass\n\n    # METHODS SUBCLASSES MUST OVERRIDE ########################################\n\n    def done(self, request, form_list):\n        \"\"\"\n        Hook for doing something with the validated data. This is responsible\n        for the final processing.\n\n        form_list is a list of Form instances, each containing clean, valid\n        data.\n        \"\"\"\n        raise NotImplementedError(\"Your %s class has not defined a done() method, which is required.\" % self.__class__.__name__)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/wizard/storage/__init__.py",
    "content": "from django.utils.importlib import import_module\n\nfrom django.contrib.formtools.wizard.storage.base import BaseStorage\nfrom django.contrib.formtools.wizard.storage.exceptions import (\n    MissingStorageModule, MissingStorageClass, NoFileStorageConfigured)\n\n\ndef get_storage(path, *args, **kwargs):\n    i = path.rfind('.')\n    module, attr = path[:i], path[i+1:]\n    try:\n        mod = import_module(module)\n    except ImportError as e:\n        raise MissingStorageModule(\n            'Error loading storage %s: \"%s\"' % (module, e))\n    try:\n        storage_class = getattr(mod, attr)\n    except AttributeError:\n        raise MissingStorageClass(\n            'Module \"%s\" does not define a storage named \"%s\"' % (module, attr))\n    return storage_class(*args, **kwargs)\n\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/wizard/storage/base.py",
    "content": "from django.core.files.uploadedfile import UploadedFile\nfrom django.utils.datastructures import MultiValueDict\nfrom django.utils.functional import lazy_property\nfrom django.utils import six\n\nfrom django.contrib.formtools.wizard.storage.exceptions import NoFileStorageConfigured\n\n\nclass BaseStorage(object):\n    step_key = 'step'\n    step_data_key = 'step_data'\n    step_files_key = 'step_files'\n    extra_data_key = 'extra_data'\n\n    def __init__(self, prefix, request=None, file_storage=None):\n        self.prefix = 'wizard_%s' % prefix\n        self.request = request\n        self.file_storage = file_storage\n\n    def init_data(self):\n        self.data = {\n            self.step_key: None,\n            self.step_data_key: {},\n            self.step_files_key: {},\n            self.extra_data_key: {},\n        }\n\n    def reset(self):\n        self.init_data()\n\n    def _get_current_step(self):\n        return self.data[self.step_key]\n\n    def _set_current_step(self, step):\n        self.data[self.step_key] = step\n\n    current_step = lazy_property(_get_current_step, _set_current_step)\n\n    def _get_extra_data(self):\n        return self.data[self.extra_data_key]\n\n    def _set_extra_data(self, extra_data):\n        self.data[self.extra_data_key] = extra_data\n\n    extra_data = lazy_property(_get_extra_data, _set_extra_data)\n\n    def get_step_data(self, step):\n        # When reading the serialized data, upconvert it to a MultiValueDict,\n        # some serializers (json) don't preserve the type of the object.\n        values = self.data[self.step_data_key].get(step, None)\n        if values is not None:\n            values = MultiValueDict(values)\n        return values\n\n    def set_step_data(self, step, cleaned_data):\n        # If the value is a MultiValueDict, convert it to a regular dict of the\n        # underlying contents.  Some serializers call the public API on it (as\n        # opposed to the underlying dict methods), in which case the content\n        # can be truncated (__getitem__ returns only the first item).\n        if isinstance(cleaned_data, MultiValueDict):\n            cleaned_data = dict(cleaned_data.lists())\n        self.data[self.step_data_key][step] = cleaned_data\n\n    @property\n    def current_step_data(self):\n        return self.get_step_data(self.current_step)\n\n    def get_step_files(self, step):\n        wizard_files = self.data[self.step_files_key].get(step, {})\n\n        if wizard_files and not self.file_storage:\n            raise NoFileStorageConfigured(\n                    \"You need to define 'file_storage' in your \"\n                    \"wizard view in order to handle file uploads.\")\n\n        files = {}\n        for field, field_dict in six.iteritems(wizard_files):\n            field_dict = field_dict.copy()\n            tmp_name = field_dict.pop('tmp_name')\n            files[field] = UploadedFile(\n                file=self.file_storage.open(tmp_name), **field_dict)\n        return files or None\n\n    def set_step_files(self, step, files):\n        if files and not self.file_storage:\n            raise NoFileStorageConfigured(\n                    \"You need to define 'file_storage' in your \"\n                    \"wizard view in order to handle file uploads.\")\n\n        if step not in self.data[self.step_files_key]:\n            self.data[self.step_files_key][step] = {}\n\n        for field, field_file in six.iteritems(files or {}):\n            tmp_filename = self.file_storage.save(field_file.name, field_file)\n            file_dict = {\n                'tmp_name': tmp_filename,\n                'name': field_file.name,\n                'content_type': field_file.content_type,\n                'size': field_file.size,\n                'charset': field_file.charset\n            }\n            self.data[self.step_files_key][step][field] = file_dict\n\n    @property\n    def current_step_files(self):\n        return self.get_step_files(self.current_step)\n\n    def update_response(self, response):\n        pass\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/wizard/storage/cookie.py",
    "content": "import json\n\nfrom django.core.exceptions import SuspiciousOperation\nfrom django.core.signing import BadSignature\n\nfrom django.contrib.formtools.wizard import storage\n\n\nclass CookieStorage(storage.BaseStorage):\n    encoder = json.JSONEncoder(separators=(',', ':'))\n\n    def __init__(self, *args, **kwargs):\n        super(CookieStorage, self).__init__(*args, **kwargs)\n        self.data = self.load_data()\n        if self.data is None:\n            self.init_data()\n\n    def load_data(self):\n        try:\n            data = self.request.get_signed_cookie(self.prefix)\n        except KeyError:\n            data = None\n        except BadSignature:\n            raise SuspiciousOperation('WizardView cookie manipulated')\n        if data is None:\n            return None\n        return json.loads(data, cls=json.JSONDecoder)\n\n    def update_response(self, response):\n        if self.data:\n            response.set_signed_cookie(self.prefix, self.encoder.encode(self.data))\n        else:\n            response.delete_cookie(self.prefix)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/wizard/storage/exceptions.py",
    "content": "from django.core.exceptions import ImproperlyConfigured\n\nclass MissingStorageModule(ImproperlyConfigured):\n    pass\n\nclass MissingStorageClass(ImproperlyConfigured):\n    pass\n\nclass NoFileStorageConfigured(ImproperlyConfigured):\n    pass\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/wizard/storage/session.py",
    "content": "from django.contrib.formtools.wizard import storage\n\n\nclass SessionStorage(storage.BaseStorage):\n\n    def __init__(self, *args, **kwargs):\n        super(SessionStorage, self).__init__(*args, **kwargs)\n        if self.prefix not in self.request.session:\n            self.init_data()\n\n    def _get_data(self):\n        self.request.session.modified = True\n        return self.request.session[self.prefix]\n\n    def _set_data(self, value):\n        self.request.session[self.prefix] = value\n        self.request.session.modified = True\n\n    data = property(_get_data, _set_data)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/formtools/wizard/views.py",
    "content": "import re\n\nfrom django import forms\nfrom django.shortcuts import redirect\nfrom django.core.urlresolvers import reverse\nfrom django.forms import formsets, ValidationError\nfrom django.views.generic import TemplateView\nfrom django.utils.datastructures import SortedDict\nfrom django.utils.decorators import classonlymethod\nfrom django.utils import six\n\nfrom django.contrib.formtools.wizard.storage import get_storage\nfrom django.contrib.formtools.wizard.storage.exceptions import NoFileStorageConfigured\nfrom django.contrib.formtools.wizard.forms import ManagementForm\n\n\ndef normalize_name(name):\n    \"\"\"\n    Converts camel-case style names into underscore seperated words. Example::\n\n        >>> normalize_name('oneTwoThree')\n        'one_two_three'\n        >>> normalize_name('FourFiveSix')\n        'four_five_six'\n\n    \"\"\"\n    new = re.sub('(((?<=[a-z])[A-Z])|([A-Z](?![A-Z]|$)))', '_\\\\1', name)\n    return new.lower().strip('_')\n\nclass StepsHelper(object):\n\n    def __init__(self, wizard):\n        self._wizard = wizard\n\n    def __dir__(self):\n        return self.all\n\n    def __len__(self):\n        return self.count\n\n    def __repr__(self):\n        return '<StepsHelper for %s (steps: %s)>' % (self._wizard, self.all)\n\n    @property\n    def all(self):\n        \"Returns the names of all steps/forms.\"\n        return list(self._wizard.get_form_list())\n\n    @property\n    def count(self):\n        \"Returns the total number of steps/forms in this the wizard.\"\n        return len(self.all)\n\n    @property\n    def current(self):\n        \"\"\"\n        Returns the current step. If no current step is stored in the\n        storage backend, the first step will be returned.\n        \"\"\"\n        return self._wizard.storage.current_step or self.first\n\n    @property\n    def first(self):\n        \"Returns the name of the first step.\"\n        return self.all[0]\n\n    @property\n    def last(self):\n        \"Returns the name of the last step.\"\n        return self.all[-1]\n\n    @property\n    def next(self):\n        \"Returns the next step.\"\n        return self._wizard.get_next_step()\n\n    @property\n    def prev(self):\n        \"Returns the previous step.\"\n        return self._wizard.get_prev_step()\n\n    @property\n    def index(self):\n        \"Returns the index for the current step.\"\n        return self._wizard.get_step_index()\n\n    @property\n    def step0(self):\n        return int(self.index)\n\n    @property\n    def step1(self):\n        return int(self.index) + 1\n\n\nclass WizardView(TemplateView):\n    \"\"\"\n    The WizardView is used to create multi-page forms and handles all the\n    storage and validation stuff. The wizard is based on Django's generic\n    class based views.\n    \"\"\"\n    storage_name = None\n    form_list = None\n    initial_dict = None\n    instance_dict = None\n    condition_dict = None\n    template_name = 'formtools/wizard/wizard_form.html'\n\n    def __repr__(self):\n        return '<%s: forms: %s>' % (self.__class__.__name__, self.form_list)\n\n    @classonlymethod\n    def as_view(cls, *args, **kwargs):\n        \"\"\"\n        This method is used within urls.py to create unique wizardview\n        instances for every request. We need to override this method because\n        we add some kwargs which are needed to make the wizardview usable.\n        \"\"\"\n        initkwargs = cls.get_initkwargs(*args, **kwargs)\n        return super(WizardView, cls).as_view(**initkwargs)\n\n    @classmethod\n    def get_initkwargs(cls, form_list, initial_dict=None,\n            instance_dict=None, condition_dict=None, *args, **kwargs):\n        \"\"\"\n        Creates a dict with all needed parameters for the form wizard instances.\n\n        * `form_list` - is a list of forms. The list entries can be single form\n          classes or tuples of (`step_name`, `form_class`). If you pass a list\n          of forms, the wizardview will convert the class list to\n          (`zero_based_counter`, `form_class`). This is needed to access the\n          form for a specific step.\n        * `initial_dict` - contains a dictionary of initial data dictionaries.\n          The key should be equal to the `step_name` in the `form_list` (or\n          the str of the zero based counter - if no step_names added in the\n          `form_list`)\n        * `instance_dict` - contains a dictionary whose values are model\n          instances if the step is based on a ``ModelForm`` and querysets if\n          the step is based on a ``ModelFormSet``. The key should be equal to\n          the `step_name` in the `form_list`. Same rules as for `initial_dict`\n          apply.\n        * `condition_dict` - contains a dictionary of boolean values or\n          callables. If the value of for a specific `step_name` is callable it\n          will be called with the wizardview instance as the only argument.\n          If the return value is true, the step's form will be used.\n        \"\"\"\n        kwargs.update({\n            'initial_dict': initial_dict or {},\n            'instance_dict': instance_dict or {},\n            'condition_dict': condition_dict or {},\n        })\n        init_form_list = SortedDict()\n\n        assert len(form_list) > 0, 'at least one form is needed'\n\n        # walk through the passed form list\n        for i, form in enumerate(form_list):\n            if isinstance(form, (list, tuple)):\n                # if the element is a tuple, add the tuple to the new created\n                # sorted dictionary.\n                init_form_list[six.text_type(form[0])] = form[1]\n            else:\n                # if not, add the form with a zero based counter as unicode\n                init_form_list[six.text_type(i)] = form\n\n        # walk through the new created list of forms\n        for form in six.itervalues(init_form_list):\n            if issubclass(form, formsets.BaseFormSet):\n                # if the element is based on BaseFormSet (FormSet/ModelFormSet)\n                # we need to override the form variable.\n                form = form.form\n            # check if any form contains a FileField, if yes, we need a\n            # file_storage added to the wizardview (by subclassing).\n            for field in six.itervalues(form.base_fields):\n                if (isinstance(field, forms.FileField) and\n                        not hasattr(cls, 'file_storage')):\n                    raise NoFileStorageConfigured(\n                            \"You need to define 'file_storage' in your \"\n                            \"wizard view in order to handle file uploads.\")\n\n        # build the kwargs for the wizardview instances\n        kwargs['form_list'] = init_form_list\n        return kwargs\n\n    def get_prefix(self, *args, **kwargs):\n        # TODO: Add some kind of unique id to prefix\n        return normalize_name(self.__class__.__name__)\n\n    def get_form_list(self):\n        \"\"\"\n        This method returns a form_list based on the initial form list but\n        checks if there is a condition method/value in the condition_list.\n        If an entry exists in the condition list, it will call/read the value\n        and respect the result. (True means add the form, False means ignore\n        the form)\n\n        The form_list is always generated on the fly because condition methods\n        could use data from other (maybe previous forms).\n        \"\"\"\n        form_list = SortedDict()\n        for form_key, form_class in six.iteritems(self.form_list):\n            # try to fetch the value from condition list, by default, the form\n            # gets passed to the new list.\n            condition = self.condition_dict.get(form_key, True)\n            if callable(condition):\n                # call the value if needed, passes the current instance.\n                condition = condition(self)\n            if condition:\n                form_list[form_key] = form_class\n        return form_list\n\n    def dispatch(self, request, *args, **kwargs):\n        \"\"\"\n        This method gets called by the routing engine. The first argument is\n        `request` which contains a `HttpRequest` instance.\n        The request is stored in `self.request` for later use. The storage\n        instance is stored in `self.storage`.\n\n        After processing the request using the `dispatch` method, the\n        response gets updated by the storage engine (for example add cookies).\n        \"\"\"\n        # add the storage engine to the current wizardview instance\n        self.prefix = self.get_prefix(*args, **kwargs)\n        self.storage = get_storage(self.storage_name, self.prefix, request,\n            getattr(self, 'file_storage', None))\n        self.steps = StepsHelper(self)\n        response = super(WizardView, self).dispatch(request, *args, **kwargs)\n\n        # update the response (e.g. adding cookies)\n        self.storage.update_response(response)\n        return response\n\n    def get(self, request, *args, **kwargs):\n        \"\"\"\n        This method handles GET requests.\n\n        If a GET request reaches this point, the wizard assumes that the user\n        just starts at the first step or wants to restart the process.\n        The data of the wizard will be resetted before rendering the first step.\n        \"\"\"\n        self.storage.reset()\n\n        # reset the current step to the first step.\n        self.storage.current_step = self.steps.first\n        return self.render(self.get_form())\n\n    def post(self, *args, **kwargs):\n        \"\"\"\n        This method handles POST requests.\n\n        The wizard will render either the current step (if form validation\n        wasn't successful), the next step (if the current step was stored\n        successful) or the done view (if no more steps are available)\n        \"\"\"\n        # Look for a wizard_goto_step element in the posted data which\n        # contains a valid step name. If one was found, render the requested\n        # form. (This makes stepping back a lot easier).\n        wizard_goto_step = self.request.POST.get('wizard_goto_step', None)\n        if wizard_goto_step and wizard_goto_step in self.get_form_list():\n            self.storage.current_step = wizard_goto_step\n            form = self.get_form(\n                data=self.storage.get_step_data(self.steps.current),\n                files=self.storage.get_step_files(self.steps.current))\n            return self.render(form)\n\n        # Check if form was refreshed\n        management_form = ManagementForm(self.request.POST, prefix=self.prefix)\n        if not management_form.is_valid():\n            raise ValidationError(\n                'ManagementForm data is missing or has been tampered.')\n\n        form_current_step = management_form.cleaned_data['current_step']\n        if (form_current_step != self.steps.current and\n                self.storage.current_step is not None):\n            # form refreshed, change current step\n            self.storage.current_step = form_current_step\n\n        # get the form for the current step\n        form = self.get_form(data=self.request.POST, files=self.request.FILES)\n\n        # and try to validate\n        if form.is_valid():\n            # if the form is valid, store the cleaned data and files.\n            self.storage.set_step_data(self.steps.current, self.process_step(form))\n            self.storage.set_step_files(self.steps.current, self.process_step_files(form))\n\n            # check if the current step is the last step\n            if self.steps.current == self.steps.last:\n                # no more steps, render done view\n                return self.render_done(form, **kwargs)\n            else:\n                # proceed to the next step\n                return self.render_next_step(form)\n        return self.render(form)\n\n    def render_next_step(self, form, **kwargs):\n        \"\"\"\n        This method gets called when the next step/form should be rendered.\n        `form` contains the last/current form.\n        \"\"\"\n        # get the form instance based on the data from the storage backend\n        # (if available).\n        next_step = self.steps.next\n        new_form = self.get_form(next_step,\n            data=self.storage.get_step_data(next_step),\n            files=self.storage.get_step_files(next_step))\n\n        # change the stored current step\n        self.storage.current_step = next_step\n        return self.render(new_form, **kwargs)\n\n    def render_done(self, form, **kwargs):\n        \"\"\"\n        This method gets called when all forms passed. The method should also\n        re-validate all steps to prevent manipulation. If any form don't\n        validate, `render_revalidation_failure` should get called.\n        If everything is fine call `done`.\n        \"\"\"\n        final_form_list = []\n        # walk through the form list and try to validate the data again.\n        for form_key in self.get_form_list():\n            form_obj = self.get_form(step=form_key,\n                data=self.storage.get_step_data(form_key),\n                files=self.storage.get_step_files(form_key))\n            if not form_obj.is_valid():\n                return self.render_revalidation_failure(form_key, form_obj, **kwargs)\n            final_form_list.append(form_obj)\n\n        # render the done view and reset the wizard before returning the\n        # response. This is needed to prevent from rendering done with the\n        # same data twice.\n        done_response = self.done(final_form_list, **kwargs)\n        self.storage.reset()\n        return done_response\n\n    def get_form_prefix(self, step=None, form=None):\n        \"\"\"\n        Returns the prefix which will be used when calling the actual form for\n        the given step. `step` contains the step-name, `form` the form which\n        will be called with the returned prefix.\n\n        If no step is given, the form_prefix will determine the current step\n        automatically.\n        \"\"\"\n        if step is None:\n            step = self.steps.current\n        return str(step)\n\n    def get_form_initial(self, step):\n        \"\"\"\n        Returns a dictionary which will be passed to the form for `step`\n        as `initial`. If no initial data was provied while initializing the\n        form wizard, a empty dictionary will be returned.\n        \"\"\"\n        return self.initial_dict.get(step, {})\n\n    def get_form_instance(self, step):\n        \"\"\"\n        Returns a object which will be passed to the form for `step`\n        as `instance`. If no instance object was provied while initializing\n        the form wizard, None will be returned.\n        \"\"\"\n        return self.instance_dict.get(step, None)\n\n    def get_form_kwargs(self, step=None):\n        \"\"\"\n        Returns the keyword arguments for instantiating the form\n        (or formset) on the given step.\n        \"\"\"\n        return {}\n\n    def get_form(self, step=None, data=None, files=None):\n        \"\"\"\n        Constructs the form for a given `step`. If no `step` is defined, the\n        current step will be determined automatically.\n\n        The form will be initialized using the `data` argument to prefill the\n        new form. If needed, instance or queryset (for `ModelForm` or\n        `ModelFormSet`) will be added too.\n        \"\"\"\n        if step is None:\n            step = self.steps.current\n        # prepare the kwargs for the form instance.\n        kwargs = self.get_form_kwargs(step)\n        kwargs.update({\n            'data': data,\n            'files': files,\n            'prefix': self.get_form_prefix(step, self.form_list[step]),\n            'initial': self.get_form_initial(step),\n        })\n        if issubclass(self.form_list[step], forms.ModelForm):\n            # If the form is based on ModelForm, add instance if available\n            # and not previously set.\n            kwargs.setdefault('instance', self.get_form_instance(step))\n        elif issubclass(self.form_list[step], forms.models.BaseModelFormSet):\n            # If the form is based on ModelFormSet, add queryset if available\n            # and not previous set.\n            kwargs.setdefault('queryset', self.get_form_instance(step))\n        return self.form_list[step](**kwargs)\n\n    def process_step(self, form):\n        \"\"\"\n        This method is used to postprocess the form data. By default, it\n        returns the raw `form.data` dictionary.\n        \"\"\"\n        return self.get_form_step_data(form)\n\n    def process_step_files(self, form):\n        \"\"\"\n        This method is used to postprocess the form files. By default, it\n        returns the raw `form.files` dictionary.\n        \"\"\"\n        return self.get_form_step_files(form)\n\n    def render_revalidation_failure(self, step, form, **kwargs):\n        \"\"\"\n        Gets called when a form doesn't validate when rendering the done\n        view. By default, it changes the current step to failing forms step\n        and renders the form.\n        \"\"\"\n        self.storage.current_step = step\n        return self.render(form, **kwargs)\n\n    def get_form_step_data(self, form):\n        \"\"\"\n        Is used to return the raw form data. You may use this method to\n        manipulate the data.\n        \"\"\"\n        return form.data\n\n    def get_form_step_files(self, form):\n        \"\"\"\n        Is used to return the raw form files. You may use this method to\n        manipulate the data.\n        \"\"\"\n        return form.files\n\n    def get_all_cleaned_data(self):\n        \"\"\"\n        Returns a merged dictionary of all step cleaned_data dictionaries.\n        If a step contains a `FormSet`, the key will be prefixed with\n        'formset-' and contain a list of the formset cleaned_data dictionaries.\n        \"\"\"\n        cleaned_data = {}\n        for form_key in self.get_form_list():\n            form_obj = self.get_form(\n                step=form_key,\n                data=self.storage.get_step_data(form_key),\n                files=self.storage.get_step_files(form_key)\n            )\n            if form_obj.is_valid():\n                if isinstance(form_obj.cleaned_data, (tuple, list)):\n                    cleaned_data.update({\n                        'formset-%s' % form_key: form_obj.cleaned_data\n                    })\n                else:\n                    cleaned_data.update(form_obj.cleaned_data)\n        return cleaned_data\n\n    def get_cleaned_data_for_step(self, step):\n        \"\"\"\n        Returns the cleaned data for a given `step`. Before returning the\n        cleaned data, the stored values are revalidated through the form.\n        If the data doesn't validate, None will be returned.\n        \"\"\"\n        if step in self.form_list:\n            form_obj = self.get_form(step=step,\n                data=self.storage.get_step_data(step),\n                files=self.storage.get_step_files(step))\n            if form_obj.is_valid():\n                return form_obj.cleaned_data\n        return None\n\n    def get_next_step(self, step=None):\n        \"\"\"\n        Returns the next step after the given `step`. If no more steps are\n        available, None will be returned. If the `step` argument is None, the\n        current step will be determined automatically.\n        \"\"\"\n        if step is None:\n            step = self.steps.current\n        form_list = self.get_form_list()\n        key = form_list.keyOrder.index(step) + 1\n        if len(form_list.keyOrder) > key:\n            return form_list.keyOrder[key]\n        return None\n\n    def get_prev_step(self, step=None):\n        \"\"\"\n        Returns the previous step before the given `step`. If there are no\n        steps available, None will be returned. If the `step` argument is\n        None, the current step will be determined automatically.\n        \"\"\"\n        if step is None:\n            step = self.steps.current\n        form_list = self.get_form_list()\n        key = form_list.keyOrder.index(step) - 1\n        if key >= 0:\n            return form_list.keyOrder[key]\n        return None\n\n    def get_step_index(self, step=None):\n        \"\"\"\n        Returns the index for the given `step` name. If no step is given,\n        the current step will be used to get the index.\n        \"\"\"\n        if step is None:\n            step = self.steps.current\n        return self.get_form_list().keyOrder.index(step)\n\n    def get_context_data(self, form, **kwargs):\n        \"\"\"\n        Returns the template context for a step. You can overwrite this method\n        to add more data for all or some steps. This method returns a\n        dictionary containing the rendered form step. Available template\n        context variables are:\n\n         * all extra data stored in the storage backend\n         * `form` - form instance of the current step\n         * `wizard` - the wizard instance itself\n\n        Example:\n\n        .. code-block:: python\n\n            class MyWizard(WizardView):\n                def get_context_data(self, form, **kwargs):\n                    context = super(MyWizard, self).get_context_data(form=form, **kwargs)\n                    if self.steps.current == 'my_step_name':\n                        context.update({'another_var': True})\n                    return context\n        \"\"\"\n        context = super(WizardView, self).get_context_data(form=form, **kwargs)\n        context.update(self.storage.extra_data)\n        context['wizard'] = {\n            'form': form,\n            'steps': self.steps,\n            'management_form': ManagementForm(prefix=self.prefix, initial={\n                'current_step': self.steps.current,\n            }),\n        }\n        return context\n\n    def render(self, form=None, **kwargs):\n        \"\"\"\n        Returns a ``HttpResponse`` containing all needed context data.\n        \"\"\"\n        form = form or self.get_form()\n        context = self.get_context_data(form=form, **kwargs)\n        return self.render_to_response(context)\n\n    def done(self, form_list, **kwargs):\n        \"\"\"\n        This method must be overridden by a subclass to process to form data\n        after processing all steps.\n        \"\"\"\n        raise NotImplementedError(\"Your %s class has not defined a done() \"\n            \"method, which is required.\" % self.__class__.__name__)\n\n\nclass SessionWizardView(WizardView):\n    \"\"\"\n    A WizardView with pre-configured SessionStorage backend.\n    \"\"\"\n    storage_name = 'django.contrib.formtools.wizard.storage.session.SessionStorage'\n\n\nclass CookieWizardView(WizardView):\n    \"\"\"\n    A WizardView with pre-configured CookieStorage backend.\n    \"\"\"\n    storage_name = 'django.contrib.formtools.wizard.storage.cookie.CookieStorage'\n\n\nclass NamedUrlWizardView(WizardView):\n    \"\"\"\n    A WizardView with URL named steps support.\n    \"\"\"\n    url_name = None\n    done_step_name = None\n\n    @classmethod\n    def get_initkwargs(cls, *args, **kwargs):\n        \"\"\"\n        We require a url_name to reverse URLs later. Additionally users can\n        pass a done_step_name to change the URL name of the \"done\" view.\n        \"\"\"\n        assert 'url_name' in kwargs, 'URL name is needed to resolve correct wizard URLs'\n        extra_kwargs = {\n            'done_step_name': kwargs.pop('done_step_name', 'done'),\n            'url_name': kwargs.pop('url_name'),\n        }\n        initkwargs = super(NamedUrlWizardView, cls).get_initkwargs(*args, **kwargs)\n        initkwargs.update(extra_kwargs)\n\n        assert initkwargs['done_step_name'] not in initkwargs['form_list'], \\\n            'step name \"%s\" is reserved for \"done\" view' % initkwargs['done_step_name']\n        return initkwargs\n\n    def get_step_url(self, step):\n        return reverse(self.url_name, kwargs={'step': step})\n\n    def get(self, *args, **kwargs):\n        \"\"\"\n        This renders the form or, if needed, does the http redirects.\n        \"\"\"\n        step_url = kwargs.get('step', None)\n        if step_url is None:\n            if 'reset' in self.request.GET:\n                self.storage.reset()\n                self.storage.current_step = self.steps.first\n            if self.request.GET:\n                query_string = \"?%s\" % self.request.GET.urlencode()\n            else:\n                query_string = \"\"\n            return redirect(self.get_step_url(self.steps.current)\n                            + query_string)\n\n        # is the current step the \"done\" name/view?\n        elif step_url == self.done_step_name:\n            last_step = self.steps.last\n            return self.render_done(self.get_form(step=last_step,\n                data=self.storage.get_step_data(last_step),\n                files=self.storage.get_step_files(last_step)\n            ), **kwargs)\n\n        # is the url step name not equal to the step in the storage?\n        # if yes, change the step in the storage (if name exists)\n        elif step_url == self.steps.current:\n            # URL step name and storage step name are equal, render!\n            return self.render(self.get_form(\n                data=self.storage.current_step_data,\n                files=self.storage.current_step_files,\n            ), **kwargs)\n\n        elif step_url in self.get_form_list():\n            self.storage.current_step = step_url\n            return self.render(self.get_form(\n                data=self.storage.current_step_data,\n                files=self.storage.current_step_files,\n            ), **kwargs)\n\n        # invalid step name, reset to first and redirect.\n        else:\n            self.storage.current_step = self.steps.first\n            return redirect(self.get_step_url(self.steps.first))\n\n    def post(self, *args, **kwargs):\n        \"\"\"\n        Do a redirect if user presses the prev. step button. The rest of this\n        is super'd from WizardView.\n        \"\"\"\n        wizard_goto_step = self.request.POST.get('wizard_goto_step', None)\n        if wizard_goto_step and wizard_goto_step in self.get_form_list():\n            self.storage.current_step = wizard_goto_step\n            return redirect(self.get_step_url(wizard_goto_step))\n        return super(NamedUrlWizardView, self).post(*args, **kwargs)\n\n    def get_context_data(self, form, **kwargs):\n        \"\"\"\n        NamedUrlWizardView provides the url_name of this wizard in the context\n        dict `wizard`.\n        \"\"\"\n        context = super(NamedUrlWizardView, self).get_context_data(form=form, **kwargs)\n        context['wizard']['url_name'] = self.url_name\n        return context\n\n    def render_next_step(self, form, **kwargs):\n        \"\"\"\n        When using the NamedUrlWizardView, we have to redirect to update the\n        browser's URL to match the shown step.\n        \"\"\"\n        next_step = self.get_next_step()\n        self.storage.current_step = next_step\n        return redirect(self.get_step_url(next_step))\n\n    def render_revalidation_failure(self, failed_step, form, **kwargs):\n        \"\"\"\n        When a step fails, we have to redirect the user to the first failing\n        step.\n        \"\"\"\n        self.storage.current_step = failed_step\n        return redirect(self.get_step_url(failed_step))\n\n    def render_done(self, form, **kwargs):\n        \"\"\"\n        When rendering the done view, we have to redirect first (if the URL\n        name doesn't fit).\n        \"\"\"\n        if kwargs.get('step', None) != self.done_step_name:\n            return redirect(self.get_step_url(self.done_step_name))\n        return super(NamedUrlWizardView, self).render_done(form, **kwargs)\n\n\nclass NamedUrlSessionWizardView(NamedUrlWizardView):\n    \"\"\"\n    A NamedUrlWizardView with pre-configured SessionStorage backend.\n    \"\"\"\n    storage_name = 'django.contrib.formtools.wizard.storage.session.SessionStorage'\n\n\nclass NamedUrlCookieWizardView(NamedUrlWizardView):\n    \"\"\"\n    A NamedUrlFormWizard with pre-configured CookieStorageBackend.\n    \"\"\"\n    storage_name = 'django.contrib.formtools.wizard.storage.cookie.CookieStorage'\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/__init__.py",
    "content": "from django.utils import six\n\nif six.PY3:\n    memoryview = memoryview\nelse:\n    memoryview = buffer\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/admin/__init__.py",
    "content": "# Getting the normal admin routines, classes, and `site` instance.\nfrom django.contrib.admin import autodiscover, site, AdminSite, ModelAdmin, StackedInline, TabularInline, HORIZONTAL, VERTICAL\n\n# Geographic admin options classes and widgets.\nfrom django.contrib.gis.admin.options import GeoModelAdmin\nfrom django.contrib.gis.admin.widgets import OpenLayersWidget\n\ntry:\n    from django.contrib.gis.admin.options import OSMGeoAdmin\n    HAS_OSM = True\nexcept ImportError:\n    HAS_OSM = False\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/admin/options.py",
    "content": "from django.contrib.admin import ModelAdmin\nfrom django.contrib.gis.admin.widgets import OpenLayersWidget\nfrom django.contrib.gis.gdal import OGRGeomType\nfrom django.contrib.gis.db import models\n\nclass GeoModelAdmin(ModelAdmin):\n    \"\"\"\n    The administration options class for Geographic models. Map settings\n    may be overloaded from their defaults to create custom maps.\n    \"\"\"\n    # The default map settings that may be overloaded -- still subject\n    # to API changes.\n    default_lon = 0\n    default_lat = 0\n    default_zoom = 4\n    display_wkt = False\n    display_srid = False\n    extra_js = []\n    num_zoom = 18\n    max_zoom = False\n    min_zoom = False\n    units = False\n    max_resolution = False\n    max_extent = False\n    modifiable = True\n    mouse_position = True\n    scale_text = True\n    layerswitcher = True\n    scrollable = True\n    map_width = 600\n    map_height = 400\n    map_srid = 4326\n    map_template = 'gis/admin/openlayers.html'\n    openlayers_url = 'http://openlayers.org/api/2.11/OpenLayers.js'\n    point_zoom = num_zoom - 6\n    wms_url = 'http://vmap0.tiles.osgeo.org/wms/vmap0'\n    wms_layer = 'basic'\n    wms_name = 'OpenLayers WMS'\n    wms_options = {'format': 'image/jpeg'}\n    debug = False\n    widget = OpenLayersWidget\n\n    @property\n    def media(self):\n        \"Injects OpenLayers JavaScript into the admin.\"\n        media = super(GeoModelAdmin, self).media\n        media.add_js([self.openlayers_url])\n        media.add_js(self.extra_js)\n        return media\n\n    def formfield_for_dbfield(self, db_field, **kwargs):\n        \"\"\"\n        Overloaded from ModelAdmin so that an OpenLayersWidget is used\n        for viewing/editing GeometryFields.\n        \"\"\"\n        if isinstance(db_field, models.GeometryField):\n            request = kwargs.pop('request', None)\n            # Setting the widget with the newly defined widget.\n            kwargs['widget'] = self.get_map_widget(db_field)\n            return db_field.formfield(**kwargs)\n        else:\n            return super(GeoModelAdmin, self).formfield_for_dbfield(db_field, **kwargs)\n\n    def get_map_widget(self, db_field):\n        \"\"\"\n        Returns a subclass of the OpenLayersWidget (or whatever was specified\n        in the `widget` attribute) using the settings from the attributes set\n        in this class.\n        \"\"\"\n        is_collection = db_field.geom_type in ('MULTIPOINT', 'MULTILINESTRING', 'MULTIPOLYGON', 'GEOMETRYCOLLECTION')\n        if is_collection:\n            if db_field.geom_type == 'GEOMETRYCOLLECTION': collection_type = 'Any'\n            else: collection_type = OGRGeomType(db_field.geom_type.replace('MULTI', ''))\n        else:\n            collection_type = 'None'\n\n        class OLMap(self.widget):\n            template = self.map_template\n            geom_type = db_field.geom_type\n\n            wms_options = ''\n            if self.wms_options:\n                wms_options = [\"%s: '%s'\" % pair for pair in self.wms_options.items()]\n                wms_options = ', %s' % ', '.join(wms_options)\n\n            params = {'default_lon' : self.default_lon,\n                      'default_lat' : self.default_lat,\n                      'default_zoom' : self.default_zoom,\n                      'display_wkt' : self.debug or self.display_wkt,\n                      'geom_type' : OGRGeomType(db_field.geom_type),\n                      'field_name' : db_field.name,\n                      'is_collection' : is_collection,\n                      'scrollable' : self.scrollable,\n                      'layerswitcher' : self.layerswitcher,\n                      'collection_type' : collection_type,\n                      'is_linestring' : db_field.geom_type in ('LINESTRING', 'MULTILINESTRING'),\n                      'is_polygon' : db_field.geom_type in ('POLYGON', 'MULTIPOLYGON'),\n                      'is_point' : db_field.geom_type in ('POINT', 'MULTIPOINT'),\n                      'num_zoom' : self.num_zoom,\n                      'max_zoom' : self.max_zoom,\n                      'min_zoom' : self.min_zoom,\n                      'units' : self.units, #likely shoud get from object\n                      'max_resolution' : self.max_resolution,\n                      'max_extent' : self.max_extent,\n                      'modifiable' : self.modifiable,\n                      'mouse_position' : self.mouse_position,\n                      'scale_text' : self.scale_text,\n                      'map_width' : self.map_width,\n                      'map_height' : self.map_height,\n                      'point_zoom' : self.point_zoom,\n                      'srid' : self.map_srid,\n                      'display_srid' : self.display_srid,\n                      'wms_url' : self.wms_url,\n                      'wms_layer' : self.wms_layer,\n                      'wms_name' : self.wms_name,\n                      'wms_options' : wms_options,\n                      'debug' : self.debug,\n                      }\n        return OLMap\n\nfrom django.contrib.gis import gdal\nif gdal.HAS_GDAL:\n    # Use the official spherical mercator projection SRID on versions\n    # of GDAL that support it; otherwise, fallback to 900913.\n    if gdal.GDAL_VERSION >= (1, 7):\n        spherical_mercator_srid = 3857\n    else:\n        spherical_mercator_srid = 900913\n\n    class OSMGeoAdmin(GeoModelAdmin):\n        map_template = 'gis/admin/osm.html'\n        num_zoom = 20\n        map_srid = spherical_mercator_srid\n        max_extent = '-20037508,-20037508,20037508,20037508'\n        max_resolution = '156543.0339'\n        point_zoom = num_zoom - 6\n        units = 'm'\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/admin/widgets.py",
    "content": "import logging\n\nfrom django.forms.widgets import Textarea\nfrom django.template import loader, Context\nfrom django.templatetags.static import static\nfrom django.utils import six\nfrom django.utils import translation\n\nfrom django.contrib.gis.gdal import OGRException\nfrom django.contrib.gis.geos import GEOSGeometry, GEOSException, fromstr\n\n# Creating a template context that contains Django settings\n# values needed by admin map templates.\ngeo_context = Context({'LANGUAGE_BIDI' : translation.get_language_bidi()})\nlogger = logging.getLogger('django.contrib.gis')\n\n\nclass OpenLayersWidget(Textarea):\n    \"\"\"\n    Renders an OpenLayers map using the WKT of the geometry.\n    \"\"\"\n    def render(self, name, value, attrs=None):\n        # Update the template parameters with any attributes passed in.\n        if attrs: self.params.update(attrs)\n\n        # Defaulting the WKT value to a blank string -- this\n        # will be tested in the JavaScript and the appropriate\n        # interface will be constructed.\n        self.params['wkt'] = ''\n\n        # If a string reaches here (via a validation error on another\n        # field) then just reconstruct the Geometry.\n        if isinstance(value, six.string_types):\n            try:\n                value = GEOSGeometry(value)\n            except (GEOSException, ValueError) as err:\n                logger.error(\n                    \"Error creating geometry from value '%s' (%s)\" % (\n                    value, err)\n                )\n                value = None\n\n        if value and value.geom_type.upper() != self.geom_type:\n            value = None\n\n        # Constructing the dictionary of the map options.\n        self.params['map_options'] = self.map_options()\n\n        # Constructing the JavaScript module name using the name of\n        # the GeometryField (passed in via the `attrs` keyword).\n        # Use the 'name' attr for the field name (rather than 'field')\n        self.params['name'] = name\n        # note: we must switch out dashes for underscores since js\n        # functions are created using the module variable\n        js_safe_name = self.params['name'].replace('-','_')\n        self.params['module'] = 'geodjango_%s' % js_safe_name\n\n        if value:\n            # Transforming the geometry to the projection used on the\n            # OpenLayers map.\n            srid = self.params['srid']\n            if value.srid != srid:\n                try:\n                    ogr = value.ogr\n                    ogr.transform(srid)\n                    wkt = ogr.wkt\n                except OGRException as err:\n                    logger.error(\n                        \"Error transforming geometry from srid '%s' to srid '%s' (%s)\" % (\n                        value.srid, srid, err)\n                    )\n                    wkt = ''\n            else:\n                wkt = value.wkt\n\n            # Setting the parameter WKT with that of the transformed\n            # geometry.\n            self.params['wkt'] = wkt\n\n        return loader.render_to_string(self.template, self.params,\n                                       context_instance=geo_context)\n\n    def map_options(self):\n        \"Builds the map options hash for the OpenLayers template.\"\n\n        # JavaScript construction utilities for the Bounds and Projection.\n        def ol_bounds(extent):\n            return 'new OpenLayers.Bounds(%s)' % str(extent)\n        def ol_projection(srid):\n            return 'new OpenLayers.Projection(\"EPSG:%s\")' % srid\n\n        # An array of the parameter name, the name of their OpenLayers\n        # counterpart, and the type of variable they are.\n        map_types = [('srid', 'projection', 'srid'),\n                     ('display_srid', 'displayProjection', 'srid'),\n                     ('units', 'units', str),\n                     ('max_resolution', 'maxResolution', float),\n                     ('max_extent', 'maxExtent', 'bounds'),\n                     ('num_zoom', 'numZoomLevels', int),\n                     ('max_zoom', 'maxZoomLevels', int),\n                     ('min_zoom', 'minZoomLevel', int),\n                     ]\n\n        # Building the map options hash.\n        map_options = {}\n        for param_name, js_name, option_type in map_types:\n            if self.params.get(param_name, False):\n                if option_type == 'srid':\n                    value = ol_projection(self.params[param_name])\n                elif option_type == 'bounds':\n                    value = ol_bounds(self.params[param_name])\n                elif option_type in (float, int):\n                    value = self.params[param_name]\n                elif option_type in (str,):\n                    value = '\"%s\"' % self.params[param_name]\n                else:\n                    raise TypeError\n                map_options[js_name] = value\n        return map_options\n\n    def _has_changed(self, initial, data):\n        \"\"\" Compare geographic value of data with its initial value. \"\"\"\n\n        # Ensure we are dealing with a geographic object\n        if isinstance(initial, six.string_types):\n            try:\n                initial = GEOSGeometry(initial)\n            except (GEOSException, ValueError):\n                initial = None\n\n        # Only do a geographic comparison if both values are available\n        if initial and data:\n            data = fromstr(data)\n            data.transform(initial.srid)\n            # If the initial value was not added by the browser, the geometry\n            # provided may be slightly different, the first time it is saved.\n            # The comparison is done with a very low tolerance.\n            return not initial.equals_exact(data, tolerance=0.000001)\n        else:\n            # Check for change of state of existence\n            return bool(initial) != bool(data)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/db/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/db/backends/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/db/backends/adapter.py",
    "content": "class WKTAdapter(object):\n    \"\"\"\n    This provides an adaptor for Geometries sent to the\n    MySQL and Oracle database backends.\n    \"\"\"\n    def __init__(self, geom):\n        self.wkt = geom.wkt\n        self.srid = geom.srid\n\n    def __eq__(self, other):\n        if not isinstance(other, WKTAdapter):\n            return False\n        return self.wkt == other.wkt and self.srid == other.srid\n\n    def __str__(self):\n        return self.wkt\n\n    def prepare_database_save(self, unused):\n        return self\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/db/backends/base.py",
    "content": "\"\"\"\nBase/mixin classes for the spatial backend database operations and the\n`SpatialRefSys` model the backend.\n\"\"\"\nimport re\nfrom django.contrib.gis import gdal\nfrom django.utils import six\nfrom django.utils.encoding import python_2_unicode_compatible\n\nclass BaseSpatialOperations(object):\n    \"\"\"\n    This module holds the base `BaseSpatialBackend` object, which is\n    instantiated by each spatial database backend with the features\n    it has.\n    \"\"\"\n    distance_functions = {}\n    geometry_functions = {}\n    geometry_operators = {}\n    geography_operators = {}\n    geography_functions = {}\n    gis_terms = {}\n    truncate_params = {}\n\n    # Quick booleans for the type of this spatial backend, and\n    # an attribute for the spatial database version tuple (if applicable)\n    postgis = False\n    spatialite = False\n    mysql = False\n    oracle = False\n    spatial_version = None\n\n    # How the geometry column should be selected.\n    select = None\n\n    # Does the spatial database have a geometry or geography type?\n    geography = False\n    geometry = False\n\n    area = False\n    centroid = False\n    difference = False\n    distance = False\n    distance_sphere = False\n    distance_spheroid = False\n    envelope = False\n    force_rhr = False\n    mem_size = False\n    bounding_circle = False\n    num_geom = False\n    num_points = False\n    perimeter = False\n    perimeter3d = False\n    point_on_surface = False\n    polygonize = False\n    reverse = False\n    scale = False\n    snap_to_grid = False\n    sym_difference = False\n    transform = False\n    translate = False\n    union = False\n\n    # Aggregates\n    collect = False\n    extent = False\n    extent3d = False\n    make_line = False\n    unionagg = False\n\n    # Serialization\n    geohash = False\n    geojson = False\n    gml = False\n    kml = False\n    svg = False\n\n    # Constructors\n    from_text = False\n    from_wkb = False\n\n    # Default conversion functions for aggregates; will be overridden if implemented\n    # for the spatial backend.\n    def convert_extent(self, box):\n        raise NotImplementedError('Aggregate extent not implemented for this spatial backend.')\n\n    def convert_extent3d(self, box):\n        raise NotImplementedError('Aggregate 3D extent not implemented for this spatial backend.')\n\n    def convert_geom(self, geom_val, geom_field):\n        raise NotImplementedError('Aggregate method not implemented for this spatial backend.')\n\n    # For quoting column values, rather than columns.\n    def geo_quote_name(self, name):\n        return \"'%s'\" % name\n\n    # GeometryField operations\n    def geo_db_type(self, f):\n        \"\"\"\n        Returns the database column type for the geometry field on\n        the spatial backend.\n        \"\"\"\n        raise NotImplementedError\n\n    def get_distance(self, f, value, lookup_type):\n        \"\"\"\n        Returns the distance parameters for the given geometry field,\n        lookup value, and lookup type.\n        \"\"\"\n        raise NotImplementedError('Distance operations not available on this spatial backend.')\n\n    def get_geom_placeholder(self, f, value):\n        \"\"\"\n        Returns the placeholder for the given geometry field with the given\n        value.  Depending on the spatial backend, the placeholder may contain a\n        stored procedure call to the transformation function of the spatial\n        backend.\n        \"\"\"\n        raise NotImplementedError\n\n    def get_expression_column(self, evaluator):\n        \"\"\"\n        Helper method to return the quoted column string from the evaluator\n        for its expression.\n        \"\"\"\n        for expr, col_tup in evaluator.cols:\n            if expr is evaluator.expression:\n                return '%s.%s' % tuple(map(self.quote_name, col_tup))\n        raise Exception(\"Could not find the column for the expression.\")\n\n    # Spatial SQL Construction\n    def spatial_aggregate_sql(self, agg):\n        raise NotImplementedError('Aggregate support not implemented for this spatial backend.')\n\n    def spatial_lookup_sql(self, lvalue, lookup_type, value, field):\n        raise NotImplementedError\n\n    # Routines for getting the OGC-compliant models.\n    def geometry_columns(self):\n        raise NotImplementedError\n\n    def spatial_ref_sys(self):\n        raise NotImplementedError\n\n@python_2_unicode_compatible\nclass SpatialRefSysMixin(object):\n    \"\"\"\n    The SpatialRefSysMixin is a class used by the database-dependent\n    SpatialRefSys objects to reduce redundnant code.\n    \"\"\"\n    # For pulling out the spheroid from the spatial reference string. This\n    # regular expression is used only if the user does not have GDAL installed.\n    # TODO: Flattening not used in all ellipsoids, could also be a minor axis,\n    # or 'b' parameter.\n    spheroid_regex = re.compile(r'.+SPHEROID\\[\\\"(?P<name>.+)\\\",(?P<major>\\d+(\\.\\d+)?),(?P<flattening>\\d{3}\\.\\d+),')\n\n    # For pulling out the units on platforms w/o GDAL installed.\n    # TODO: Figure out how to pull out angular units of projected coordinate system and\n    # fix for LOCAL_CS types.  GDAL should be highly recommended for performing\n    # distance queries.\n    units_regex = re.compile(r'.+UNIT ?\\[\"(?P<unit_name>[\\w \\'\\(\\)]+)\", ?(?P<unit>[\\d\\.]+)(,AUTHORITY\\[\"(?P<unit_auth_name>[\\w \\'\\(\\)]+)\",\"(?P<unit_auth_val>\\d+)\"\\])?\\]([\\w ]+)?(,AUTHORITY\\[\"(?P<auth_name>[\\w \\'\\(\\)]+)\",\"(?P<auth_val>\\d+)\"\\])?\\]$')\n\n    @property\n    def srs(self):\n        \"\"\"\n        Returns a GDAL SpatialReference object, if GDAL is installed.\n        \"\"\"\n        if gdal.HAS_GDAL:\n            # TODO: Is caching really necessary here?  Is complexity worth it?\n            if hasattr(self, '_srs'):\n                # Returning a clone of the cached SpatialReference object.\n                return self._srs.clone()\n            else:\n                # Attempting to cache a SpatialReference object.\n\n                # Trying to get from WKT first.\n                try:\n                    self._srs = gdal.SpatialReference(self.wkt)\n                    return self.srs\n                except Exception as msg:\n                    pass\n\n                try:\n                    self._srs = gdal.SpatialReference(self.proj4text)\n                    return self.srs\n                except Exception as msg:\n                    pass\n\n                raise Exception('Could not get OSR SpatialReference from WKT: %s\\nError:\\n%s' % (self.wkt, msg))\n        else:\n            raise Exception('GDAL is not installed.')\n\n    @property\n    def ellipsoid(self):\n        \"\"\"\n        Returns a tuple of the ellipsoid parameters:\n        (semimajor axis, semiminor axis, and inverse flattening).\n        \"\"\"\n        if gdal.HAS_GDAL:\n            return self.srs.ellipsoid\n        else:\n            m = self.spheroid_regex.match(self.wkt)\n            if m: return (float(m.group('major')), float(m.group('flattening')))\n            else: return None\n\n    @property\n    def name(self):\n        \"Returns the projection name.\"\n        return self.srs.name\n\n    @property\n    def spheroid(self):\n        \"Returns the spheroid name for this spatial reference.\"\n        return self.srs['spheroid']\n\n    @property\n    def datum(self):\n        \"Returns the datum for this spatial reference.\"\n        return self.srs['datum']\n\n    @property\n    def projected(self):\n        \"Is this Spatial Reference projected?\"\n        if gdal.HAS_GDAL:\n            return self.srs.projected\n        else:\n            return self.wkt.startswith('PROJCS')\n\n    @property\n    def local(self):\n        \"Is this Spatial Reference local?\"\n        if gdal.HAS_GDAL:\n            return self.srs.local\n        else:\n            return self.wkt.startswith('LOCAL_CS')\n\n    @property\n    def geographic(self):\n        \"Is this Spatial Reference geographic?\"\n        if gdal.HAS_GDAL:\n            return self.srs.geographic\n        else:\n            return self.wkt.startswith('GEOGCS')\n\n    @property\n    def linear_name(self):\n        \"Returns the linear units name.\"\n        if gdal.HAS_GDAL:\n            return self.srs.linear_name\n        elif self.geographic:\n            return None\n        else:\n            m = self.units_regex.match(self.wkt)\n            return m.group('unit_name')\n\n    @property\n    def linear_units(self):\n        \"Returns the linear units.\"\n        if gdal.HAS_GDAL:\n            return self.srs.linear_units\n        elif self.geographic:\n            return None\n        else:\n            m = self.units_regex.match(self.wkt)\n            return m.group('unit')\n\n    @property\n    def angular_name(self):\n        \"Returns the name of the angular units.\"\n        if gdal.HAS_GDAL:\n            return self.srs.angular_name\n        elif self.projected:\n            return None\n        else:\n            m = self.units_regex.match(self.wkt)\n            return m.group('unit_name')\n\n    @property\n    def angular_units(self):\n        \"Returns the angular units.\"\n        if gdal.HAS_GDAL:\n            return self.srs.angular_units\n        elif self.projected:\n            return None\n        else:\n            m = self.units_regex.match(self.wkt)\n            return m.group('unit')\n\n    @property\n    def units(self):\n        \"Returns a tuple of the units and the name.\"\n        if self.projected or self.local:\n            return (self.linear_units, self.linear_name)\n        elif self.geographic:\n            return (self.angular_units, self.angular_name)\n        else:\n            return (None, None)\n\n    @classmethod\n    def get_units(cls, wkt):\n        \"\"\"\n        Class method used by GeometryField on initialization to\n        retrive the units on the given WKT, without having to use\n        any of the database fields.\n        \"\"\"\n        if gdal.HAS_GDAL:\n            return gdal.SpatialReference(wkt).units\n        else:\n            m = cls.units_regex.match(wkt)\n            return m.group('unit'), m.group('unit_name')\n\n    @classmethod\n    def get_spheroid(cls, wkt, string=True):\n        \"\"\"\n        Class method used by GeometryField on initialization to\n        retrieve the `SPHEROID[..]` parameters from the given WKT.\n        \"\"\"\n        if gdal.HAS_GDAL:\n            srs = gdal.SpatialReference(wkt)\n            sphere_params = srs.ellipsoid\n            sphere_name = srs['spheroid']\n        else:\n            m = cls.spheroid_regex.match(wkt)\n            if m:\n                sphere_params = (float(m.group('major')), float(m.group('flattening')))\n                sphere_name = m.group('name')\n            else:\n                return None\n\n        if not string:\n            return sphere_name, sphere_params\n        else:\n            # `string` parameter used to place in format acceptable by PostGIS\n            if len(sphere_params) == 3:\n                radius, flattening = sphere_params[0], sphere_params[2]\n            else:\n                radius, flattening = sphere_params\n            return 'SPHEROID[\"%s\",%s,%s]' % (sphere_name, radius, flattening)\n\n    def __str__(self):\n        \"\"\"\n        Returns the string representation.  If GDAL is installed,\n        it will be 'pretty' OGC WKT.\n        \"\"\"\n        try:\n            return six.text_type(self.srs)\n        except:\n            return six.text_type(self.wkt)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/db/backends/mysql/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/db/backends/mysql/base.py",
    "content": "from django.db.backends.mysql.base import *\nfrom django.db.backends.mysql.base import DatabaseWrapper as MySQLDatabaseWrapper\nfrom django.contrib.gis.db.backends.mysql.creation import MySQLCreation\nfrom django.contrib.gis.db.backends.mysql.introspection import MySQLIntrospection\nfrom django.contrib.gis.db.backends.mysql.operations import MySQLOperations\n\nclass DatabaseWrapper(MySQLDatabaseWrapper):\n\n    def __init__(self, *args, **kwargs):\n        super(DatabaseWrapper, self).__init__(*args, **kwargs)\n        self.creation = MySQLCreation(self)\n        self.ops = MySQLOperations(self)\n        self.introspection = MySQLIntrospection(self)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/db/backends/mysql/compiler.py",
    "content": "from django.contrib.gis.db.models.sql.compiler import GeoSQLCompiler as BaseGeoSQLCompiler\nfrom django.db.backends.mysql import compiler\n\nSQLCompiler = compiler.SQLCompiler\n\nclass GeoSQLCompiler(BaseGeoSQLCompiler, SQLCompiler):\n    def resolve_columns(self, row, fields=()):\n        \"\"\"\n        Integrate the cases handled both by the base GeoSQLCompiler and the\n        main MySQL compiler (converting 0/1 to True/False for boolean fields).\n\n        Refs #15169.\n\n        \"\"\"\n        row = BaseGeoSQLCompiler.resolve_columns(self, row, fields)\n        return SQLCompiler.resolve_columns(self, row, fields)\n\n\nclass SQLInsertCompiler(compiler.SQLInsertCompiler, GeoSQLCompiler):\n    pass\n\nclass SQLDeleteCompiler(compiler.SQLDeleteCompiler, GeoSQLCompiler):\n    pass\n\nclass SQLUpdateCompiler(compiler.SQLUpdateCompiler, GeoSQLCompiler):\n    pass\n\nclass SQLAggregateCompiler(compiler.SQLAggregateCompiler, GeoSQLCompiler):\n    pass\n\nclass SQLDateCompiler(compiler.SQLDateCompiler, GeoSQLCompiler):\n    pass\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/db/backends/mysql/creation.py",
    "content": "from django.db.backends.mysql.creation import DatabaseCreation\n\nclass MySQLCreation(DatabaseCreation):\n\n    def sql_indexes_for_field(self, model, f, style):\n        from django.contrib.gis.db.models.fields import GeometryField\n        output = super(MySQLCreation, self).sql_indexes_for_field(model, f, style)\n\n        if isinstance(f, GeometryField) and f.spatial_index:\n            qn = self.connection.ops.quote_name\n            db_table = model._meta.db_table\n            idx_name = '%s_%s_id' % (db_table, f.column)\n            output.append(style.SQL_KEYWORD('CREATE SPATIAL INDEX ') +\n                          style.SQL_TABLE(qn(idx_name)) +\n                          style.SQL_KEYWORD(' ON ') +\n                          style.SQL_TABLE(qn(db_table)) + '(' +\n                          style.SQL_FIELD(qn(f.column)) + ');')\n        return output\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/db/backends/mysql/introspection.py",
    "content": "from MySQLdb.constants import FIELD_TYPE\n\nfrom django.contrib.gis.gdal import OGRGeomType\nfrom django.db.backends.mysql.introspection import DatabaseIntrospection\n\nclass MySQLIntrospection(DatabaseIntrospection):\n    # Updating the data_types_reverse dictionary with the appropriate\n    # type for Geometry fields.\n    data_types_reverse = DatabaseIntrospection.data_types_reverse.copy()\n    data_types_reverse[FIELD_TYPE.GEOMETRY] = 'GeometryField'\n\n    def get_geometry_type(self, table_name, geo_col):\n        cursor = self.connection.cursor()\n        try:\n            # In order to get the specific geometry type of the field,\n            # we introspect on the table definition using `DESCRIBE`.\n            cursor.execute('DESCRIBE %s' %\n                           self.connection.ops.quote_name(table_name))\n            # Increment over description info until we get to the geometry\n            # column.\n            for column, typ, null, key, default, extra in cursor.fetchall():\n                if column == geo_col:\n                    # Using OGRGeomType to convert from OGC name to Django field.\n                    # MySQL does not support 3D or SRIDs, so the field params\n                    # are empty.\n                    field_type = OGRGeomType(typ).django\n                    field_params = {}\n                    break\n        finally:\n            cursor.close()\n\n        return field_type, field_params\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/db/backends/mysql/operations.py",
    "content": "from django.db.backends.mysql.base import DatabaseOperations\n\nfrom django.contrib.gis.db.backends.adapter import WKTAdapter\nfrom django.contrib.gis.db.backends.base import BaseSpatialOperations\n\nfrom django.utils import six\n\nclass MySQLOperations(DatabaseOperations, BaseSpatialOperations):\n\n    compiler_module = 'django.contrib.gis.db.backends.mysql.compiler'\n    mysql = True\n    name = 'mysql'\n    select = 'AsText(%s)'\n    from_wkb = 'GeomFromWKB'\n    from_text = 'GeomFromText'\n\n    Adapter = WKTAdapter\n    Adaptor = Adapter # Backwards-compatibility alias.\n\n    geometry_functions = {\n        'bbcontains' : 'MBRContains', # For consistency w/PostGIS API\n        'bboverlaps' : 'MBROverlaps', # .. ..\n        'contained' : 'MBRWithin',    # .. ..\n        'contains' : 'MBRContains',\n        'disjoint' : 'MBRDisjoint',\n        'equals' : 'MBREqual',\n        'exact' : 'MBREqual',\n        'intersects' : 'MBRIntersects',\n        'overlaps' : 'MBROverlaps',\n        'same_as' : 'MBREqual',\n        'touches' : 'MBRTouches',\n        'within' : 'MBRWithin',\n        }\n\n    gis_terms = dict([(term, None) for term in list(geometry_functions) + ['isnull']])\n\n    def geo_db_type(self, f):\n        return f.geom_type\n\n    def get_geom_placeholder(self, value, srid):\n        \"\"\"\n        The placeholder here has to include MySQL's WKT constructor.  Because\n        MySQL does not support spatial transformations, there is no need to\n        modify the placeholder based on the contents of the given value.\n        \"\"\"\n        if hasattr(value, 'expression'):\n            placeholder = self.get_expression_column(value)\n        else:\n            placeholder = '%s(%%s)' % self.from_text\n        return placeholder\n\n    def spatial_lookup_sql(self, lvalue, lookup_type, value, field, qn):\n        alias, col, db_type = lvalue\n\n        geo_col = '%s.%s' % (qn(alias), qn(col))\n\n        lookup_info = self.geometry_functions.get(lookup_type, False)\n        if lookup_info:\n            return \"%s(%s, %s)\" % (lookup_info, geo_col,\n                                   self.get_geom_placeholder(value, field.srid))\n\n        # TODO: Is this really necessary? MySQL can't handle NULL geometries\n        #  in its spatial indexes anyways.\n        if lookup_type == 'isnull':\n            return \"%s IS %sNULL\" % (geo_col, (not value and 'NOT ' or ''))\n\n        raise TypeError(\"Got invalid lookup_type: %s\" % repr(lookup_type))\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/db/backends/oracle/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/db/backends/oracle/adapter.py",
    "content": "from cx_Oracle import CLOB\nfrom django.contrib.gis.db.backends.adapter import WKTAdapter\n\nclass OracleSpatialAdapter(WKTAdapter):\n    input_size = CLOB\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/db/backends/oracle/base.py",
    "content": "from django.db.backends.oracle.base import *\nfrom django.db.backends.oracle.base import DatabaseWrapper as OracleDatabaseWrapper\nfrom django.contrib.gis.db.backends.oracle.creation import OracleCreation\nfrom django.contrib.gis.db.backends.oracle.introspection import OracleIntrospection\nfrom django.contrib.gis.db.backends.oracle.operations import OracleOperations\n\nclass DatabaseWrapper(OracleDatabaseWrapper):\n    def __init__(self, *args, **kwargs):\n        super(DatabaseWrapper, self).__init__(*args, **kwargs)\n        self.ops = OracleOperations(self)\n        self.creation = OracleCreation(self)\n        self.introspection = OracleIntrospection(self)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/db/backends/oracle/compiler.py",
    "content": "from django.contrib.gis.db.models.sql.compiler import GeoSQLCompiler as BaseGeoSQLCompiler\nfrom django.db.backends.oracle import compiler\n\nSQLCompiler = compiler.SQLCompiler\n\nclass GeoSQLCompiler(BaseGeoSQLCompiler, SQLCompiler):\n    pass\n\nclass SQLInsertCompiler(compiler.SQLInsertCompiler, GeoSQLCompiler):\n    pass\n\nclass SQLDeleteCompiler(compiler.SQLDeleteCompiler, GeoSQLCompiler):\n    pass\n\nclass SQLUpdateCompiler(compiler.SQLUpdateCompiler, GeoSQLCompiler):\n    pass\n\nclass SQLAggregateCompiler(compiler.SQLAggregateCompiler, GeoSQLCompiler):\n    pass\n\nclass SQLDateCompiler(compiler.SQLDateCompiler, GeoSQLCompiler):\n    pass\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/db/backends/oracle/creation.py",
    "content": "from django.db.backends.oracle.creation import DatabaseCreation\nfrom django.db.backends.util import truncate_name\n\nclass OracleCreation(DatabaseCreation):\n\n    def sql_indexes_for_field(self, model, f, style):\n        \"Return any spatial index creation SQL for the field.\"\n        from django.contrib.gis.db.models.fields import GeometryField\n\n        output = super(OracleCreation, self).sql_indexes_for_field(model, f, style)\n\n        if isinstance(f, GeometryField):\n            gqn = self.connection.ops.geo_quote_name\n            qn = self.connection.ops.quote_name\n            db_table = model._meta.db_table\n\n            output.append(style.SQL_KEYWORD('INSERT INTO ') +\n                          style.SQL_TABLE('USER_SDO_GEOM_METADATA') +\n                          ' (%s, %s, %s, %s)\\n  ' % tuple(map(qn, ['TABLE_NAME', 'COLUMN_NAME', 'DIMINFO', 'SRID'])) +\n                          style.SQL_KEYWORD(' VALUES ') + '(\\n    ' +\n                          style.SQL_TABLE(gqn(db_table)) + ',\\n    ' +\n                          style.SQL_FIELD(gqn(f.column)) + ',\\n    ' +\n                          style.SQL_KEYWORD(\"MDSYS.SDO_DIM_ARRAY\") + '(\\n      ' +\n                          style.SQL_KEYWORD(\"MDSYS.SDO_DIM_ELEMENT\") +\n                          (\"('LONG', %s, %s, %s),\\n      \" % (f._extent[0], f._extent[2], f._tolerance)) +\n                          style.SQL_KEYWORD(\"MDSYS.SDO_DIM_ELEMENT\") +\n                          (\"('LAT', %s, %s, %s)\\n    ),\\n\" % (f._extent[1], f._extent[3], f._tolerance)) +\n                          '    %s\\n  );' % f.srid)\n\n            if f.spatial_index:\n                # Getting the index name, Oracle doesn't allow object\n                # names > 30 characters.\n                idx_name = truncate_name('%s_%s_id' % (db_table, f.column), 30)\n\n                output.append(style.SQL_KEYWORD('CREATE INDEX ') +\n                              style.SQL_TABLE(qn(idx_name)) +\n                              style.SQL_KEYWORD(' ON ') +\n                              style.SQL_TABLE(qn(db_table)) + '(' +\n                              style.SQL_FIELD(qn(f.column)) + ') ' +\n                              style.SQL_KEYWORD('INDEXTYPE IS ') +\n                              style.SQL_TABLE('MDSYS.SPATIAL_INDEX') + ';')\n        return output\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/db/backends/oracle/introspection.py",
    "content": "import cx_Oracle\nfrom django.db.backends.oracle.introspection import DatabaseIntrospection\n\nclass OracleIntrospection(DatabaseIntrospection):\n    # Associating any OBJECTVAR instances with GeometryField.  Of course,\n    # this won't work right on Oracle objects that aren't MDSYS.SDO_GEOMETRY,\n    # but it is the only object type supported within Django anyways.\n    data_types_reverse = DatabaseIntrospection.data_types_reverse.copy()\n    data_types_reverse[cx_Oracle.OBJECT] = 'GeometryField'\n\n    def get_geometry_type(self, table_name, geo_col):\n        cursor = self.connection.cursor()\n        try:\n            # Querying USER_SDO_GEOM_METADATA to get the SRID and dimension information.\n            try:\n                cursor.execute('SELECT \"DIMINFO\", \"SRID\" FROM \"USER_SDO_GEOM_METADATA\" WHERE \"TABLE_NAME\"=%s AND \"COLUMN_NAME\"=%s',\n                               (table_name.upper(), geo_col.upper()))\n                row = cursor.fetchone()\n            except Exception as msg:\n                raise Exception('Could not find entry in USER_SDO_GEOM_METADATA corresponding to \"%s\".\"%s\"\\n'\n                                'Error message: %s.' % (table_name, geo_col, msg))\n\n            # TODO: Research way to find a more specific geometry field type for\n            # the column's contents.\n            field_type = 'GeometryField'\n\n            # Getting the field parameters.\n            field_params = {}\n            dim, srid = row\n            if srid != 4326:\n                field_params['srid'] = srid\n            # Length of object array ( SDO_DIM_ARRAY ) is number of dimensions.\n            dim = len(dim)\n            if dim != 2:\n                field_params['dim'] = dim\n        finally:\n            cursor.close()\n\n        return field_type, field_params\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/db/backends/oracle/models.py",
    "content": "\"\"\"\n The GeometryColumns and SpatialRefSys models for the Oracle spatial\n backend.\n\n It should be noted that Oracle Spatial does not have database tables\n named according to the OGC standard, so the closest analogs are used.\n For example, the `USER_SDO_GEOM_METADATA` is used for the GeometryColumns\n model and the `SDO_COORD_REF_SYS` is used for the SpatialRefSys model.\n\"\"\"\nfrom django.contrib.gis.db import models\nfrom django.contrib.gis.db.backends.base import SpatialRefSysMixin\nfrom django.utils.encoding import python_2_unicode_compatible\n\n@python_2_unicode_compatible\nclass GeometryColumns(models.Model):\n    \"Maps to the Oracle USER_SDO_GEOM_METADATA table.\"\n    table_name = models.CharField(max_length=32)\n    column_name = models.CharField(max_length=1024)\n    srid = models.IntegerField(primary_key=True)\n    # TODO: Add support for `diminfo` column (type MDSYS.SDO_DIM_ARRAY).\n    class Meta:\n        db_table = 'USER_SDO_GEOM_METADATA'\n        managed = False\n\n    @classmethod\n    def table_name_col(cls):\n        \"\"\"\n        Returns the name of the metadata column used to store the\n        the feature table name.\n        \"\"\"\n        return 'table_name'\n\n    @classmethod\n    def geom_col_name(cls):\n        \"\"\"\n        Returns the name of the metadata column used to store the\n        the feature geometry column.\n        \"\"\"\n        return 'column_name'\n\n    def __str__(self):\n        return '%s - %s (SRID: %s)' % (self.table_name, self.column_name, self.srid)\n\nclass SpatialRefSys(models.Model, SpatialRefSysMixin):\n    \"Maps to the Oracle MDSYS.CS_SRS table.\"\n    cs_name = models.CharField(max_length=68)\n    srid = models.IntegerField(primary_key=True)\n    auth_srid = models.IntegerField()\n    auth_name = models.CharField(max_length=256)\n    wktext = models.CharField(max_length=2046)\n    # Optional geometry representing the bounds of this coordinate\n    # system.  By default, all are NULL in the table.\n    cs_bounds = models.PolygonField(null=True)\n    objects = models.GeoManager()\n\n    class Meta:\n        db_table = 'CS_SRS'\n        managed = False\n\n    @property\n    def wkt(self):\n        return self.wktext\n\n    @classmethod\n    def wkt_col(cls):\n        return 'wktext'\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/db/backends/oracle/operations.py",
    "content": "\"\"\"\n This module contains the spatial lookup types, and the `get_geo_where_clause`\n routine for Oracle Spatial.\n\n Please note that WKT support is broken on the XE version, and thus\n this backend will not work on such platforms.  Specifically, XE lacks\n support for an internal JVM, and Java libraries are required to use\n the WKT constructors.\n\"\"\"\nimport re\nfrom decimal import Decimal\n\nfrom django.db.backends.oracle.base import DatabaseOperations\nfrom django.contrib.gis.db.backends.base import BaseSpatialOperations\nfrom django.contrib.gis.db.backends.oracle.adapter import OracleSpatialAdapter\nfrom django.contrib.gis.db.backends.util import SpatialFunction\nfrom django.contrib.gis.geometry.backend import Geometry\nfrom django.contrib.gis.measure import Distance\nfrom django.utils import six\n\nclass SDOOperation(SpatialFunction):\n    \"Base class for SDO* Oracle operations.\"\n    sql_template = \"%(function)s(%(geo_col)s, %(geometry)s) %(operator)s '%(result)s'\"\n\n    def __init__(self, func, **kwargs):\n        kwargs.setdefault('operator', '=')\n        kwargs.setdefault('result', 'TRUE')\n        super(SDOOperation, self).__init__(func, **kwargs)\n\nclass SDODistance(SpatialFunction):\n    \"Class for Distance queries.\"\n    sql_template = ('%(function)s(%(geo_col)s, %(geometry)s, %(tolerance)s) '\n                    '%(operator)s %(result)s')\n    dist_func = 'SDO_GEOM.SDO_DISTANCE'\n    def __init__(self, op, tolerance=0.05):\n        super(SDODistance, self).__init__(self.dist_func,\n                                          tolerance=tolerance,\n                                          operator=op, result='%s')\n\nclass SDODWithin(SpatialFunction):\n    dwithin_func = 'SDO_WITHIN_DISTANCE'\n    sql_template = \"%(function)s(%(geo_col)s, %(geometry)s, %%s) = 'TRUE'\"\n    def __init__(self):\n        super(SDODWithin, self).__init__(self.dwithin_func)\n\nclass SDOGeomRelate(SpatialFunction):\n    \"Class for using SDO_GEOM.RELATE.\"\n    relate_func = 'SDO_GEOM.RELATE'\n    sql_template = (\"%(function)s(%(geo_col)s, '%(mask)s', %(geometry)s, \"\n                    \"%(tolerance)s) %(operator)s '%(mask)s'\")\n    def __init__(self, mask, tolerance=0.05):\n        # SDO_GEOM.RELATE(...) has a peculiar argument order: column, mask, geom, tolerance.\n        # Moreover, the runction result is the mask (e.g., 'DISJOINT' instead of 'TRUE').\n        super(SDOGeomRelate, self).__init__(self.relate_func, operator='=',\n                                            mask=mask, tolerance=tolerance)\n\nclass SDORelate(SpatialFunction):\n    \"Class for using SDO_RELATE.\"\n    masks = 'TOUCH|OVERLAPBDYDISJOINT|OVERLAPBDYINTERSECT|EQUAL|INSIDE|COVEREDBY|CONTAINS|COVERS|ANYINTERACT|ON'\n    mask_regex = re.compile(r'^(%s)(\\+(%s))*$' % (masks, masks), re.I)\n    sql_template = \"%(function)s(%(geo_col)s, %(geometry)s, 'mask=%(mask)s') = 'TRUE'\"\n    relate_func = 'SDO_RELATE'\n    def __init__(self, mask):\n        if not self.mask_regex.match(mask):\n            raise ValueError('Invalid %s mask: \"%s\"' % (self.relate_func, mask))\n        super(SDORelate, self).__init__(self.relate_func, mask=mask)\n\n# Valid distance types and substitutions\ndtypes = (Decimal, Distance, float) + six.integer_types\n\nclass OracleOperations(DatabaseOperations, BaseSpatialOperations):\n    compiler_module = \"django.contrib.gis.db.backends.oracle.compiler\"\n\n    name = 'oracle'\n    oracle = True\n    valid_aggregates = dict([(a, None) for a in ('Union', 'Extent')])\n\n    Adapter = OracleSpatialAdapter\n    Adaptor = Adapter # Backwards-compatibility alias.\n\n    area = 'SDO_GEOM.SDO_AREA'\n    gml= 'SDO_UTIL.TO_GMLGEOMETRY'\n    centroid = 'SDO_GEOM.SDO_CENTROID'\n    difference = 'SDO_GEOM.SDO_DIFFERENCE'\n    distance = 'SDO_GEOM.SDO_DISTANCE'\n    extent= 'SDO_AGGR_MBR'\n    intersection= 'SDO_GEOM.SDO_INTERSECTION'\n    length = 'SDO_GEOM.SDO_LENGTH'\n    num_geom = 'SDO_UTIL.GETNUMELEM'\n    num_points = 'SDO_UTIL.GETNUMVERTICES'\n    perimeter = length\n    point_on_surface = 'SDO_GEOM.SDO_POINTONSURFACE'\n    reverse = 'SDO_UTIL.REVERSE_LINESTRING'\n    sym_difference = 'SDO_GEOM.SDO_XOR'\n    transform = 'SDO_CS.TRANSFORM'\n    union = 'SDO_GEOM.SDO_UNION'\n    unionagg = 'SDO_AGGR_UNION'\n\n    # We want to get SDO Geometries as WKT because it is much easier to\n    # instantiate GEOS proxies from WKT than SDO_GEOMETRY(...) strings.\n    # However, this adversely affects performance (i.e., Java is called\n    # to convert to WKT on every query).  If someone wishes to write a\n    # SDO_GEOMETRY(...) parser in Python, let me know =)\n    select = 'SDO_UTIL.TO_WKTGEOMETRY(%s)'\n\n    distance_functions = {\n        'distance_gt' : (SDODistance('>'), dtypes),\n        'distance_gte' : (SDODistance('>='), dtypes),\n        'distance_lt' : (SDODistance('<'), dtypes),\n        'distance_lte' : (SDODistance('<='), dtypes),\n        'dwithin' : (SDODWithin(), dtypes),\n        }\n\n    geometry_functions = {\n        'contains' : SDOOperation('SDO_CONTAINS'),\n        'coveredby' : SDOOperation('SDO_COVEREDBY'),\n        'covers' : SDOOperation('SDO_COVERS'),\n        'disjoint' : SDOGeomRelate('DISJOINT'),\n        'intersects' : SDOOperation('SDO_OVERLAPBDYINTERSECT'), # TODO: Is this really the same as ST_Intersects()?\n        'equals' : SDOOperation('SDO_EQUAL'),\n        'exact' : SDOOperation('SDO_EQUAL'),\n        'overlaps' : SDOOperation('SDO_OVERLAPS'),\n        'same_as' : SDOOperation('SDO_EQUAL'),\n        'relate' : (SDORelate, six.string_types), # Oracle uses a different syntax, e.g., 'mask=inside+touch'\n        'touches' : SDOOperation('SDO_TOUCH'),\n        'within' : SDOOperation('SDO_INSIDE'),\n        }\n    geometry_functions.update(distance_functions)\n\n    gis_terms = ['isnull']\n    gis_terms += list(geometry_functions)\n    gis_terms = dict([(term, None) for term in gis_terms])\n\n    truncate_params = {'relate' : None}\n\n    def convert_extent(self, clob):\n        if clob:\n            # Generally, Oracle returns a polygon for the extent -- however,\n            # it can return a single point if there's only one Point in the\n            # table.\n            ext_geom = Geometry(clob.read())\n            gtype = str(ext_geom.geom_type)\n            if gtype == 'Polygon':\n                # Construct the 4-tuple from the coordinates in the polygon.\n                shell = ext_geom.shell\n                ll, ur = shell[0][:2], shell[2][:2]\n            elif gtype == 'Point':\n                ll = ext_geom.coords[:2]\n                ur = ll\n            else:\n                raise Exception('Unexpected geometry type returned for extent: %s' % gtype)\n            xmin, ymin = ll\n            xmax, ymax = ur\n            return (xmin, ymin, xmax, ymax)\n        else:\n            return None\n\n    def convert_geom(self, clob, geo_field):\n        if clob:\n            return Geometry(clob.read(), geo_field.srid)\n        else:\n            return None\n\n    def geo_db_type(self, f):\n        \"\"\"\n        Returns the geometry database type for Oracle.  Unlike other spatial\n        backends, no stored procedure is necessary and it's the same for all\n        geometry types.\n        \"\"\"\n        return 'MDSYS.SDO_GEOMETRY'\n\n    def get_distance(self, f, value, lookup_type):\n        \"\"\"\n        Returns the distance parameters given the value and the lookup type.\n        On Oracle, geometry columns with a geodetic coordinate system behave\n        implicitly like a geography column, and thus meters will be used as\n        the distance parameter on them.\n        \"\"\"\n        if not value:\n            return []\n        value = value[0]\n        if isinstance(value, Distance):\n            if f.geodetic(self.connection):\n                dist_param = value.m\n            else:\n                dist_param = getattr(value, Distance.unit_attname(f.units_name(self.connection)))\n        else:\n            dist_param = value\n\n        # dwithin lookups on oracle require a special string parameter\n        # that starts with \"distance=\".\n        if lookup_type == 'dwithin':\n            dist_param = 'distance=%s' % dist_param\n\n        return [dist_param]\n\n    def get_geom_placeholder(self, f, value):\n        \"\"\"\n        Provides a proper substitution value for Geometries that are not in the\n        SRID of the field.  Specifically, this routine will substitute in the\n        SDO_CS.TRANSFORM() function call.\n        \"\"\"\n        if value is None:\n            return 'NULL'\n\n        def transform_value(val, srid):\n            return val.srid != srid\n\n        if hasattr(value, 'expression'):\n            if transform_value(value, f.srid):\n                placeholder = '%s(%%s, %s)' % (self.transform, f.srid)\n            else:\n                placeholder = '%s'\n            # No geometry value used for F expression, substitue in\n            # the column name instead.\n            return placeholder % self.get_expression_column(value)\n        else:\n            if transform_value(value, f.srid):\n                return '%s(SDO_GEOMETRY(%%s, %s), %s)' % (self.transform, value.srid, f.srid)\n            else:\n                return 'SDO_GEOMETRY(%%s, %s)' % f.srid\n\n    def spatial_lookup_sql(self, lvalue, lookup_type, value, field, qn):\n        \"Returns the SQL WHERE clause for use in Oracle spatial SQL construction.\"\n        alias, col, db_type = lvalue\n\n        # Getting the quoted table name as `geo_col`.\n        geo_col = '%s.%s' % (qn(alias), qn(col))\n\n        # See if a Oracle Geometry function matches the lookup type next\n        lookup_info = self.geometry_functions.get(lookup_type, False)\n        if lookup_info:\n            # Lookup types that are tuples take tuple arguments, e.g., 'relate' and\n            # 'dwithin' lookup types.\n            if isinstance(lookup_info, tuple):\n                # First element of tuple is lookup type, second element is the type\n                # of the expected argument (e.g., str, float)\n                sdo_op, arg_type = lookup_info\n                geom = value[0]\n\n                # Ensuring that a tuple _value_ was passed in from the user\n                if not isinstance(value, tuple):\n                    raise ValueError('Tuple required for `%s` lookup type.' % lookup_type)\n                if len(value) != 2:\n                    raise ValueError('2-element tuple required for %s lookup type.' % lookup_type)\n\n                # Ensuring the argument type matches what we expect.\n                if not isinstance(value[1], arg_type):\n                    raise ValueError('Argument type should be %s, got %s instead.' % (arg_type, type(value[1])))\n\n                if lookup_type == 'relate':\n                    # The SDORelate class handles construction for these queries,\n                    # and verifies the mask argument.\n                    return sdo_op(value[1]).as_sql(geo_col, self.get_geom_placeholder(field, geom))\n                else:\n                    # Otherwise, just call the `as_sql` method on the SDOOperation instance.\n                    return sdo_op.as_sql(geo_col, self.get_geom_placeholder(field, geom))\n            else:\n                # Lookup info is a SDOOperation instance, whose `as_sql` method returns\n                # the SQL necessary for the geometry function call. For example:\n                #  SDO_CONTAINS(\"geoapp_country\".\"poly\", SDO_GEOMTRY('POINT(5 23)', 4326)) = 'TRUE'\n                return lookup_info.as_sql(geo_col, self.get_geom_placeholder(field, value))\n        elif lookup_type == 'isnull':\n            # Handling 'isnull' lookup type\n            return \"%s IS %sNULL\" % (geo_col, (not value and 'NOT ' or ''))\n\n        raise TypeError(\"Got invalid lookup_type: %s\" % repr(lookup_type))\n\n    def spatial_aggregate_sql(self, agg):\n        \"\"\"\n        Returns the spatial aggregate SQL template and function for the\n        given Aggregate instance.\n        \"\"\"\n        agg_name = agg.__class__.__name__.lower()\n        if agg_name == 'union' : agg_name += 'agg'\n        if agg.is_extent:\n            sql_template = '%(function)s(%(field)s)'\n        else:\n            sql_template = '%(function)s(SDOAGGRTYPE(%(field)s,%(tolerance)s))'\n        sql_function = getattr(self, agg_name)\n        return self.select % sql_template, sql_function\n\n    # Routines for getting the OGC-compliant models.\n    def geometry_columns(self):\n        from django.contrib.gis.db.backends.oracle.models import GeometryColumns\n        return GeometryColumns\n\n    def spatial_ref_sys(self):\n        from django.contrib.gis.db.backends.oracle.models import SpatialRefSys\n        return SpatialRefSys\n    \n    def modify_insert_params(self, placeholders, params):\n        \"\"\"Drop out insert parameters for NULL placeholder. Needed for Oracle Spatial\n        backend due to #10888\n        \"\"\"\n        # This code doesn't work for bulk insert cases.\n        assert len(placeholders) == 1\n        return [[param for pholder,param\n                 in six.moves.zip(placeholders[0], params[0]) if pholder != 'NULL'], ]\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/db/backends/postgis/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/db/backends/postgis/adapter.py",
    "content": "\"\"\"\n This object provides quoting for GEOS geometries into PostgreSQL/PostGIS.\n\"\"\"\nfrom __future__ import unicode_literals\n\nfrom psycopg2 import Binary\nfrom psycopg2.extensions import ISQLQuote\n\nclass PostGISAdapter(object):\n    def __init__(self, geom):\n        \"Initializes on the geometry.\"\n        # Getting the WKB (in string form, to allow easy pickling of\n        # the adaptor) and the SRID from the geometry.\n        self.ewkb = bytes(geom.ewkb)\n        self.srid = geom.srid\n        self._adapter = Binary(self.ewkb)\n\n    def __conform__(self, proto):\n        # Does the given protocol conform to what Psycopg2 expects?\n        if proto == ISQLQuote:\n            return self\n        else:\n            raise Exception('Error implementing psycopg2 protocol. Is psycopg2 installed?')\n\n    def __eq__(self, other):\n        if not isinstance(other, PostGISAdapter):\n            return False\n        return (self.ewkb == other.ewkb) and (self.srid == other.srid)\n\n    def __str__(self):\n        return self.getquoted()\n\n    def prepare(self, conn):\n        \"\"\"\n        This method allows escaping the binary in the style required by the\n        server's `standard_conforming_string` setting.\n        \"\"\"\n        self._adapter.prepare(conn)\n\n    def getquoted(self):\n        \"Returns a properly quoted string for use in PostgreSQL/PostGIS.\"\n        # psycopg will figure out whether to use E'\\\\000' or '\\000'\n        return str('ST_GeomFromEWKB(%s)' % self._adapter.getquoted().decode())\n\n    def prepare_database_save(self, unused):\n        return self\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/db/backends/postgis/base.py",
    "content": "from django.db.backends.postgresql_psycopg2.base import *\nfrom django.db.backends.postgresql_psycopg2.base import DatabaseWrapper as Psycopg2DatabaseWrapper\nfrom django.contrib.gis.db.backends.postgis.creation import PostGISCreation\nfrom django.contrib.gis.db.backends.postgis.introspection import PostGISIntrospection\nfrom django.contrib.gis.db.backends.postgis.operations import PostGISOperations\n\nclass DatabaseWrapper(Psycopg2DatabaseWrapper):\n    def __init__(self, *args, **kwargs):\n        super(DatabaseWrapper, self).__init__(*args, **kwargs)\n        self.creation = PostGISCreation(self)\n        self.ops = PostGISOperations(self)\n        self.introspection = PostGISIntrospection(self)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/db/backends/postgis/creation.py",
    "content": "from django.conf import settings\nfrom django.core.exceptions import ImproperlyConfigured\nfrom django.db.backends.postgresql_psycopg2.creation import DatabaseCreation\nfrom django.utils.functional import cached_property\n\n\nclass PostGISCreation(DatabaseCreation):\n    geom_index_type = 'GIST'\n    geom_index_ops = 'GIST_GEOMETRY_OPS'\n    geom_index_ops_nd = 'GIST_GEOMETRY_OPS_ND'\n\n    @cached_property\n    def template_postgis(self):\n        template_postgis = getattr(settings, 'POSTGIS_TEMPLATE', 'template_postgis')\n        cursor = self.connection.cursor()\n        cursor.execute('SELECT 1 FROM pg_database WHERE datname = %s LIMIT 1;', (template_postgis,))\n        if cursor.fetchone():\n            return template_postgis\n        return None\n\n    def sql_indexes_for_field(self, model, f, style):\n        \"Return any spatial index creation SQL for the field.\"\n        from django.contrib.gis.db.models.fields import GeometryField\n\n        output = super(PostGISCreation, self).sql_indexes_for_field(model, f, style)\n\n        if isinstance(f, GeometryField):\n            gqn = self.connection.ops.geo_quote_name\n            qn = self.connection.ops.quote_name\n            db_table = model._meta.db_table\n\n            if f.geography or self.connection.ops.geometry:\n                # Geography and Geometry (PostGIS 2.0+) columns are\n                # created normally.\n                pass\n            else:\n                # Geometry columns are created by `AddGeometryColumn`\n                # stored procedure.\n                output.append(style.SQL_KEYWORD('SELECT ') +\n                              style.SQL_TABLE('AddGeometryColumn') + '(' +\n                              style.SQL_TABLE(gqn(db_table)) + ', ' +\n                              style.SQL_FIELD(gqn(f.column)) + ', ' +\n                              style.SQL_FIELD(str(f.srid)) + ', ' +\n                              style.SQL_COLTYPE(gqn(f.geom_type)) + ', ' +\n                              style.SQL_KEYWORD(str(f.dim)) + ');')\n\n                if not f.null:\n                    # Add a NOT NULL constraint to the field\n                    output.append(style.SQL_KEYWORD('ALTER TABLE ') +\n                                  style.SQL_TABLE(qn(db_table)) +\n                                  style.SQL_KEYWORD(' ALTER ') +\n                                  style.SQL_FIELD(qn(f.column)) +\n                                  style.SQL_KEYWORD(' SET NOT NULL') + ';')\n\n            if f.spatial_index:\n                # Spatial indexes created the same way for both Geometry and\n                # Geography columns.\n                # PostGIS 2.0 does not support GIST_GEOMETRY_OPS. So, on 1.5\n                # we use GIST_GEOMETRY_OPS, on 2.0 we use either \"nd\" ops\n                # which are fast on multidimensional cases, or just plain\n                # gist index for the 2d case.\n                if f.geography:\n                    index_ops = ''\n                elif self.connection.ops.geometry:\n                    if f.dim > 2:\n                        index_ops = ' ' + style.SQL_KEYWORD(self.geom_index_ops_nd)\n                    else:\n                        index_ops = ''\n                else:\n                    index_ops = ' ' + style.SQL_KEYWORD(self.geom_index_ops)\n                output.append(style.SQL_KEYWORD('CREATE INDEX ') +\n                              style.SQL_TABLE(qn('%s_%s_id' % (db_table, f.column))) +\n                              style.SQL_KEYWORD(' ON ') +\n                              style.SQL_TABLE(qn(db_table)) +\n                              style.SQL_KEYWORD(' USING ') +\n                              style.SQL_COLTYPE(self.geom_index_type) + ' ( ' +\n                              style.SQL_FIELD(qn(f.column)) + index_ops + ' );')\n        return output\n\n    def sql_table_creation_suffix(self):\n        if self.template_postgis is not None:\n            return ' TEMPLATE %s' % (\n                self.connection.ops.quote_name(self.template_postgis),)\n        return ''\n\n    def _create_test_db(self, verbosity, autoclobber):\n        test_database_name = super(PostGISCreation, self)._create_test_db(verbosity, autoclobber)\n        if self.template_postgis is None:\n            # Connect to the test database in order to create the postgis extension\n            self.connection.close()\n            self.connection.settings_dict[\"NAME\"] = test_database_name\n            cursor = self.connection.cursor()\n            cursor.execute(\"CREATE EXTENSION postgis\")\n            cursor.connection.commit()\n\n        return test_database_name\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/db/backends/postgis/introspection.py",
    "content": "from django.db.backends.postgresql_psycopg2.introspection import DatabaseIntrospection\nfrom django.contrib.gis.gdal import OGRGeomType\n\nclass GeoIntrospectionError(Exception):\n    pass\n\nclass PostGISIntrospection(DatabaseIntrospection):\n    # Reverse dictionary for PostGIS geometry types not populated until\n    # introspection is actually performed.\n    postgis_types_reverse = {}\n\n    def get_postgis_types(self):\n        \"\"\"\n        Returns a dictionary with keys that are the PostgreSQL object\n        identification integers for the PostGIS geometry and/or\n        geography types (if supported).\n        \"\"\"\n        cursor = self.connection.cursor()\n        # The OID integers associated with the geometry type may\n        # be different across versions; hence, this is why we have\n        # to query the PostgreSQL pg_type table corresponding to the\n        # PostGIS custom data types.\n        oid_sql = 'SELECT \"oid\" FROM \"pg_type\" WHERE \"typname\" = %s'\n        try:\n            cursor.execute(oid_sql, ('geometry',))\n            GEOM_TYPE = cursor.fetchone()[0]\n            postgis_types = { GEOM_TYPE : 'GeometryField' }\n            if self.connection.ops.geography:\n                cursor.execute(oid_sql, ('geography',))\n                GEOG_TYPE = cursor.fetchone()[0]\n                # The value for the geography type is actually a tuple\n                # to pass in the `geography=True` keyword to the field\n                # definition.\n                postgis_types[GEOG_TYPE] = ('GeometryField', {'geography' : True})\n        finally:\n            cursor.close()\n\n        return postgis_types\n\n    def get_field_type(self, data_type, description):\n        if not self.postgis_types_reverse:\n            # If the PostGIS types reverse dictionary is not populated, do so\n            # now.  In order to prevent unnecessary requests upon connection\n            # intialization, the `data_types_reverse` dictionary is not updated\n            # with the PostGIS custom types until introspection is actually\n            # performed -- in other words, when this function is called.\n            self.postgis_types_reverse = self.get_postgis_types()\n            self.data_types_reverse.update(self.postgis_types_reverse)\n        return super(PostGISIntrospection, self).get_field_type(data_type, description)\n\n    def get_geometry_type(self, table_name, geo_col):\n        \"\"\"\n        The geometry type OID used by PostGIS does not indicate the particular\n        type of field that a geometry column is (e.g., whether it's a\n        PointField or a PolygonField).  Thus, this routine queries the PostGIS\n        metadata tables to determine the geometry type,\n        \"\"\"\n        cursor = self.connection.cursor()\n        try:\n            try:\n                # First seeing if this geometry column is in the `geometry_columns`\n                cursor.execute('SELECT \"coord_dimension\", \"srid\", \"type\" '\n                               'FROM \"geometry_columns\" '\n                               'WHERE \"f_table_name\"=%s AND \"f_geometry_column\"=%s',\n                               (table_name, geo_col))\n                row = cursor.fetchone()\n                if not row: raise GeoIntrospectionError\n            except GeoIntrospectionError:\n                if self.connection.ops.geography:\n                    cursor.execute('SELECT \"coord_dimension\", \"srid\", \"type\" '\n                                   'FROM \"geography_columns\" '\n                                   'WHERE \"f_table_name\"=%s AND \"f_geography_column\"=%s',\n                                   (table_name, geo_col))\n                    row = cursor.fetchone()\n\n            if not row:\n                raise Exception('Could not find a geometry or geography column for \"%s\".\"%s\"' %\n                                (table_name, geo_col))\n\n            # OGRGeomType does not require GDAL and makes it easy to convert\n            # from OGC geom type name to Django field.\n            field_type = OGRGeomType(row[2]).django\n\n            # Getting any GeometryField keyword arguments that are not the default.\n            dim = row[0]\n            srid = row[1]\n            field_params = {}\n            if srid != 4326:\n                field_params['srid'] = srid\n            if dim != 2:\n                field_params['dim'] = dim\n        finally:\n            cursor.close()\n\n        return field_type, field_params\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/db/backends/postgis/models.py",
    "content": "\"\"\"\n The GeometryColumns and SpatialRefSys models for the PostGIS backend.\n\"\"\"\nfrom django.db import models\nfrom django.contrib.gis.db.backends.base import SpatialRefSysMixin\nfrom django.utils.encoding import python_2_unicode_compatible\n\n@python_2_unicode_compatible\nclass GeometryColumns(models.Model):\n    \"\"\"\n    The 'geometry_columns' table from the PostGIS. See the PostGIS\n    documentation at Ch. 4.2.2.\n    \"\"\"\n    f_table_catalog = models.CharField(max_length=256)\n    f_table_schema = models.CharField(max_length=256)\n    f_table_name = models.CharField(max_length=256)\n    f_geometry_column = models.CharField(max_length=256)\n    coord_dimension = models.IntegerField()\n    srid = models.IntegerField(primary_key=True)\n    type = models.CharField(max_length=30)\n\n    class Meta:\n        db_table = 'geometry_columns'\n        managed = False\n\n    @classmethod\n    def table_name_col(cls):\n        \"\"\"\n        Returns the name of the metadata column used to store the\n        the feature table name.\n        \"\"\"\n        return 'f_table_name'\n\n    @classmethod\n    def geom_col_name(cls):\n        \"\"\"\n        Returns the name of the metadata column used to store the\n        the feature geometry column.\n        \"\"\"\n        return 'f_geometry_column'\n\n    def __str__(self):\n        return \"%s.%s - %dD %s field (SRID: %d)\" % \\\n               (self.f_table_name, self.f_geometry_column,\n                self.coord_dimension, self.type, self.srid)\n\nclass SpatialRefSys(models.Model, SpatialRefSysMixin):\n    \"\"\"\n    The 'spatial_ref_sys' table from PostGIS. See the PostGIS\n    documentaiton at Ch. 4.2.1.\n    \"\"\"\n    srid = models.IntegerField(primary_key=True)\n    auth_name = models.CharField(max_length=256)\n    auth_srid = models.IntegerField()\n    srtext = models.CharField(max_length=2048)\n    proj4text = models.CharField(max_length=2048)\n\n    class Meta:\n        db_table = 'spatial_ref_sys'\n        managed = False\n\n    @property\n    def wkt(self):\n        return self.srtext\n\n    @classmethod\n    def wkt_col(cls):\n        return 'srtext'\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/db/backends/postgis/operations.py",
    "content": "import re\nfrom decimal import Decimal\n\nfrom django.conf import settings\nfrom django.contrib.gis.db.backends.base import BaseSpatialOperations\nfrom django.contrib.gis.db.backends.util import SpatialOperation, SpatialFunction\nfrom django.contrib.gis.db.backends.postgis.adapter import PostGISAdapter\nfrom django.contrib.gis.geometry.backend import Geometry\nfrom django.contrib.gis.measure import Distance\nfrom django.core.exceptions import ImproperlyConfigured\nfrom django.db.backends.postgresql_psycopg2.base import DatabaseOperations\nfrom django.db.utils import DatabaseError\nfrom django.utils import six\n\n#### Classes used in constructing PostGIS spatial SQL ####\nclass PostGISOperator(SpatialOperation):\n    \"For PostGIS operators (e.g. `&&`, `~`).\"\n    def __init__(self, operator):\n        super(PostGISOperator, self).__init__(operator=operator)\n\nclass PostGISFunction(SpatialFunction):\n    \"For PostGIS function calls (e.g., `ST_Contains(table, geom)`).\"\n    def __init__(self, prefix, function, **kwargs):\n        super(PostGISFunction, self).__init__(prefix + function, **kwargs)\n\nclass PostGISFunctionParam(PostGISFunction):\n    \"For PostGIS functions that take another parameter (e.g. DWithin, Relate).\"\n    sql_template = '%(function)s(%(geo_col)s, %(geometry)s, %%s)'\n\nclass PostGISDistance(PostGISFunction):\n    \"For PostGIS distance operations.\"\n    dist_func = 'Distance'\n    sql_template = '%(function)s(%(geo_col)s, %(geometry)s) %(operator)s %%s'\n\n    def __init__(self, prefix, operator):\n        super(PostGISDistance, self).__init__(prefix, self.dist_func,\n                                              operator=operator)\n\nclass PostGISSpheroidDistance(PostGISFunction):\n    \"For PostGIS spherical distance operations (using the spheroid).\"\n    dist_func = 'distance_spheroid'\n    sql_template = '%(function)s(%(geo_col)s, %(geometry)s, %%s) %(operator)s %%s'\n    def __init__(self, prefix, operator):\n        # An extra parameter in `end_subst` is needed for the spheroid string.\n        super(PostGISSpheroidDistance, self).__init__(prefix, self.dist_func,\n                                                      operator=operator)\n\nclass PostGISSphereDistance(PostGISDistance):\n    \"For PostGIS spherical distance operations.\"\n    dist_func = 'distance_sphere'\n\nclass PostGISRelate(PostGISFunctionParam):\n    \"For PostGIS Relate(<geom>, <pattern>) calls.\"\n    pattern_regex = re.compile(r'^[012TF\\*]{9}$')\n    def __init__(self, prefix, pattern):\n        if not self.pattern_regex.match(pattern):\n            raise ValueError('Invalid intersection matrix pattern \"%s\".' % pattern)\n        super(PostGISRelate, self).__init__(prefix, 'Relate')\n\n\nclass PostGISOperations(DatabaseOperations, BaseSpatialOperations):\n    compiler_module = 'django.contrib.gis.db.models.sql.compiler'\n    name = 'postgis'\n    postgis = True\n    version_regex = re.compile(r'^(?P<major>\\d)\\.(?P<minor1>\\d)\\.(?P<minor2>\\d+)')\n    valid_aggregates = dict([(k, None) for k in\n                             ('Collect', 'Extent', 'Extent3D', 'MakeLine', 'Union')])\n\n    Adapter = PostGISAdapter\n    Adaptor = Adapter # Backwards-compatibility alias.\n\n    def __init__(self, connection):\n        super(PostGISOperations, self).__init__(connection)\n\n        # Trying to get the PostGIS version because the function\n        # signatures will depend on the version used.  The cost\n        # here is a database query to determine the version, which\n        # can be mitigated by setting `POSTGIS_VERSION` with a 3-tuple\n        # comprising user-supplied values for the major, minor, and\n        # subminor revision of PostGIS.\n        try:\n            if hasattr(settings, 'POSTGIS_VERSION'):\n                vtup = settings.POSTGIS_VERSION\n                if len(vtup) == 3:\n                    # The user-supplied PostGIS version.\n                    version = vtup\n                else:\n                    # This was the old documented way, but it's stupid to\n                    # include the string.\n                    version = vtup[1:4]\n            else:\n                vtup = self.postgis_version_tuple()\n                version = vtup[1:]\n\n            # Getting the prefix -- even though we don't officially support\n            # PostGIS 1.2 anymore, keeping it anyway in case a prefix change\n            # for something else is necessary.\n            if version >= (1, 2, 2):\n                prefix = 'ST_'\n            else:\n                prefix = ''\n\n            self.geom_func_prefix = prefix\n            self.spatial_version = version\n        except DatabaseError:\n            raise ImproperlyConfigured(\n                'Cannot determine PostGIS version for database \"%s\". '\n                'GeoDjango requires at least PostGIS version 1.3. '\n                'Was the database created from a spatial database '\n                'template?' % self.connection.settings_dict['NAME']\n                )\n        # TODO: Raise helpful exceptions as they become known.\n\n        # PostGIS-specific operators. The commented descriptions of these\n        # operators come from Section 7.6 of the PostGIS 1.4 documentation.\n        self.geometry_operators = {\n            # The \"&<\" operator returns true if A's bounding box overlaps or\n            # is to the left of B's bounding box.\n            'overlaps_left' : PostGISOperator('&<'),\n            # The \"&>\" operator returns true if A's bounding box overlaps or\n            # is to the right of B's bounding box.\n            'overlaps_right' : PostGISOperator('&>'),\n            # The \"<<\" operator returns true if A's bounding box is strictly\n            # to the left of B's bounding box.\n            'left' : PostGISOperator('<<'),\n            # The \">>\" operator returns true if A's bounding box is strictly\n            # to the right of B's bounding box.\n            'right' : PostGISOperator('>>'),\n            # The \"&<|\" operator returns true if A's bounding box overlaps or\n            # is below B's bounding box.\n            'overlaps_below' : PostGISOperator('&<|'),\n            # The \"|&>\" operator returns true if A's bounding box overlaps or\n            # is above B's bounding box.\n            'overlaps_above' : PostGISOperator('|&>'),\n            # The \"<<|\" operator returns true if A's bounding box is strictly\n            # below B's bounding box.\n            'strictly_below' : PostGISOperator('<<|'),\n            # The \"|>>\" operator returns true if A's bounding box is strictly\n            # above B's bounding box.\n            'strictly_above' : PostGISOperator('|>>'),\n            # The \"~=\" operator is the \"same as\" operator. It tests actual\n            # geometric equality of two features. So if A and B are the same feature,\n            # vertex-by-vertex, the operator returns true.\n            'same_as' : PostGISOperator('~='),\n            'exact' : PostGISOperator('~='),\n            # The \"@\" operator returns true if A's bounding box is completely contained\n            # by B's bounding box.\n            'contained' : PostGISOperator('@'),\n            # The \"~\" operator returns true if A's bounding box completely contains\n            #  by B's bounding box.\n            'bbcontains' : PostGISOperator('~'),\n            # The \"&&\" operator returns true if A's bounding box overlaps\n            # B's bounding box.\n            'bboverlaps' : PostGISOperator('&&'),\n            }\n\n        self.geometry_functions = {\n            'equals' : PostGISFunction(prefix, 'Equals'),\n            'disjoint' : PostGISFunction(prefix, 'Disjoint'),\n            'touches' : PostGISFunction(prefix, 'Touches'),\n            'crosses' : PostGISFunction(prefix, 'Crosses'),\n            'within' : PostGISFunction(prefix, 'Within'),\n            'overlaps' : PostGISFunction(prefix, 'Overlaps'),\n            'contains' : PostGISFunction(prefix, 'Contains'),\n            'intersects' : PostGISFunction(prefix, 'Intersects'),\n            'relate' : (PostGISRelate, six.string_types),\n            'coveredby' : PostGISFunction(prefix, 'CoveredBy'),\n            'covers' : PostGISFunction(prefix, 'Covers'),\n        }\n\n        # Valid distance types and substitutions\n        dtypes = (Decimal, Distance, float) + six.integer_types\n        def get_dist_ops(operator):\n            \"Returns operations for both regular and spherical distances.\"\n            return {'cartesian' : PostGISDistance(prefix, operator),\n                    'sphere' : PostGISSphereDistance(prefix, operator),\n                    'spheroid' : PostGISSpheroidDistance(prefix, operator),\n                    }\n        self.distance_functions = {\n            'distance_gt' : (get_dist_ops('>'), dtypes),\n            'distance_gte' : (get_dist_ops('>='), dtypes),\n            'distance_lt' : (get_dist_ops('<'), dtypes),\n            'distance_lte' : (get_dist_ops('<='), dtypes),\n            'dwithin' : (PostGISFunctionParam(prefix, 'DWithin'), dtypes)\n        }\n\n        # Adding the distance functions to the geometries lookup.\n        self.geometry_functions.update(self.distance_functions)\n\n        # Only PostGIS versions 1.3.4+ have GeoJSON serialization support.\n        if version < (1, 3, 4):\n            GEOJSON = False\n        else:\n            GEOJSON = prefix + 'AsGeoJson'\n\n        # ST_ContainsProperly ST_MakeLine, and ST_GeoHash added in 1.4.\n        if version >= (1, 4, 0):\n            GEOHASH = 'ST_GeoHash'\n            BOUNDINGCIRCLE = 'ST_MinimumBoundingCircle'\n            self.geometry_functions['contains_properly'] = PostGISFunction(prefix, 'ContainsProperly')\n        else:\n            GEOHASH, BOUNDINGCIRCLE = False, False\n\n        # Geography type support added in 1.5.\n        if version >= (1, 5, 0):\n            self.geography = True\n            # Only a subset of the operators and functions are available\n            # for the geography type.\n            self.geography_functions = self.distance_functions.copy()\n            self.geography_functions.update({\n                    'coveredby' : self.geometry_functions['coveredby'],\n                    'covers' : self.geometry_functions['covers'],\n                    'intersects' : self.geometry_functions['intersects'],\n                    })\n            self.geography_operators = {\n                'bboverlaps' : PostGISOperator('&&'),\n                }\n\n        # Native geometry type support added in PostGIS 2.0.\n        if version >= (2, 0, 0):\n            self.geometry = True\n\n        # Creating a dictionary lookup of all GIS terms for PostGIS.\n        gis_terms = ['isnull']\n        gis_terms += list(self.geometry_operators)\n        gis_terms += list(self.geometry_functions)\n        self.gis_terms = dict([(term, None) for term in gis_terms])\n\n        self.area = prefix + 'Area'\n        self.bounding_circle = BOUNDINGCIRCLE\n        self.centroid = prefix + 'Centroid'\n        self.collect = prefix + 'Collect'\n        self.difference = prefix + 'Difference'\n        self.distance = prefix + 'Distance'\n        self.distance_sphere = prefix + 'distance_sphere'\n        self.distance_spheroid = prefix + 'distance_spheroid'\n        self.envelope = prefix + 'Envelope'\n        self.extent = prefix + 'Extent'\n        self.force_rhr = prefix + 'ForceRHR'\n        self.geohash = GEOHASH\n        self.geojson = GEOJSON\n        self.gml = prefix + 'AsGML'\n        self.intersection = prefix + 'Intersection'\n        self.kml = prefix + 'AsKML'\n        self.length = prefix + 'Length'\n        self.length_spheroid = prefix + 'length_spheroid'\n        self.makeline = prefix + 'MakeLine'\n        self.mem_size = prefix + 'mem_size'\n        self.num_geom = prefix + 'NumGeometries'\n        self.num_points =prefix + 'npoints'\n        self.perimeter = prefix + 'Perimeter'\n        self.point_on_surface = prefix + 'PointOnSurface'\n        self.polygonize = prefix + 'Polygonize'\n        self.reverse = prefix + 'Reverse'\n        self.scale = prefix + 'Scale'\n        self.snap_to_grid = prefix + 'SnapToGrid'\n        self.svg = prefix + 'AsSVG'\n        self.sym_difference = prefix + 'SymDifference'\n        self.transform = prefix + 'Transform'\n        self.translate = prefix + 'Translate'\n        self.union = prefix + 'Union'\n        self.unionagg = prefix + 'Union'\n\n        if version >= (2, 0, 0):\n            self.extent3d = prefix + '3DExtent'\n            self.length3d = prefix + '3DLength'\n            self.perimeter3d = prefix + '3DPerimeter'\n        else:\n            self.extent3d = prefix + 'Extent3D'\n            self.length3d = prefix + 'Length3D'\n            self.perimeter3d = prefix + 'Perimeter3D'\n\n    def check_aggregate_support(self, aggregate):\n        \"\"\"\n        Checks if the given aggregate name is supported (that is, if it's\n        in `self.valid_aggregates`).\n        \"\"\"\n        agg_name = aggregate.__class__.__name__\n        return agg_name in self.valid_aggregates\n\n    def convert_extent(self, box):\n        \"\"\"\n        Returns a 4-tuple extent for the `Extent` aggregate by converting\n        the bounding box text returned by PostGIS (`box` argument), for\n        example: \"BOX(-90.0 30.0, -85.0 40.0)\".\n        \"\"\"\n        ll, ur = box[4:-1].split(',')\n        xmin, ymin = map(float, ll.split())\n        xmax, ymax = map(float, ur.split())\n        return (xmin, ymin, xmax, ymax)\n\n    def convert_extent3d(self, box3d):\n        \"\"\"\n        Returns a 6-tuple extent for the `Extent3D` aggregate by converting\n        the 3d bounding-box text returnded by PostGIS (`box3d` argument), for\n        example: \"BOX3D(-90.0 30.0 1, -85.0 40.0 2)\".\n        \"\"\"\n        ll, ur = box3d[6:-1].split(',')\n        xmin, ymin, zmin = map(float, ll.split())\n        xmax, ymax, zmax = map(float, ur.split())\n        return (xmin, ymin, zmin, xmax, ymax, zmax)\n\n    def convert_geom(self, hex, geo_field):\n        \"\"\"\n        Converts the geometry returned from PostGIS aggretates.\n        \"\"\"\n        if hex:\n            return Geometry(hex)\n        else:\n            return None\n\n    def geo_db_type(self, f):\n        \"\"\"\n        Return the database field type for the given geometry field.\n        Typically this is `None` because geometry columns are added via\n        the `AddGeometryColumn` stored procedure, unless the field\n        has been specified to be of geography type instead.\n        \"\"\"\n        if f.geography:\n            if not self.geography:\n                raise NotImplementedError('PostGIS 1.5 required for geography column support.')\n\n            if f.srid != 4326:\n                raise NotImplementedError('PostGIS 1.5 supports geography columns '\n                                          'only with an SRID of 4326.')\n\n            return 'geography(%s,%d)'% (f.geom_type, f.srid)\n        elif self.geometry:\n            # Postgis 2.0 supports type-based geometries.\n            # TODO: Support 'M' extension.\n            if f.dim == 3:\n                geom_type = f.geom_type + 'Z'\n            else:\n                geom_type = f.geom_type\n            return 'geometry(%s,%d)' % (geom_type, f.srid)\n        else:\n            return None\n\n    def get_distance(self, f, dist_val, lookup_type):\n        \"\"\"\n        Retrieve the distance parameters for the given geometry field,\n        distance lookup value, and the distance lookup type.\n\n        This is the most complex implementation of the spatial backends due to\n        what is supported on geodetic geometry columns vs. what's available on\n        projected geometry columns.  In addition, it has to take into account\n        the newly introduced geography column type introudced in PostGIS 1.5.\n        \"\"\"\n        # Getting the distance parameter and any options.\n        if len(dist_val) == 1:\n            value, option = dist_val[0], None\n        else:\n            value, option = dist_val\n\n        # Shorthand boolean flags.\n        geodetic = f.geodetic(self.connection)\n        geography = f.geography and self.geography\n\n        if isinstance(value, Distance):\n            if geography:\n                dist_param = value.m\n            elif geodetic:\n                if lookup_type == 'dwithin':\n                    raise ValueError('Only numeric values of degree units are '\n                                     'allowed on geographic DWithin queries.')\n                dist_param = value.m\n            else:\n                dist_param = getattr(value, Distance.unit_attname(f.units_name(self.connection)))\n        else:\n            # Assuming the distance is in the units of the field.\n            dist_param = value\n\n        if (not geography and geodetic and lookup_type != 'dwithin'\n            and option == 'spheroid'):\n            # using distance_spheroid requires the spheroid of the field as\n            # a parameter.\n            return [f._spheroid, dist_param]\n        else:\n            return [dist_param]\n\n    def get_geom_placeholder(self, f, value):\n        \"\"\"\n        Provides a proper substitution value for Geometries that are not in the\n        SRID of the field.  Specifically, this routine will substitute in the\n        ST_Transform() function call.\n        \"\"\"\n        if value is None or value.srid == f.srid:\n            placeholder = '%s'\n        else:\n            # Adding Transform() to the SQL placeholder.\n            placeholder = '%s(%%s, %s)' % (self.transform, f.srid)\n\n        if hasattr(value, 'expression'):\n            # If this is an F expression, then we don't really want\n            # a placeholder and instead substitute in the column\n            # of the expression.\n            placeholder = placeholder % self.get_expression_column(value)\n\n        return placeholder\n\n    def _get_postgis_func(self, func):\n        \"\"\"\n        Helper routine for calling PostGIS functions and returning their result.\n        \"\"\"\n        cursor = self.connection._cursor()\n        try:\n            try:\n                cursor.execute('SELECT %s()' % func)\n                row = cursor.fetchone()\n            except:\n                # Responsibility of callers to perform error handling.\n                raise\n        finally:\n            # Close out the connection.  See #9437.\n            self.connection.close()\n        return row[0]\n\n    def postgis_geos_version(self):\n        \"Returns the version of the GEOS library used with PostGIS.\"\n        return self._get_postgis_func('postgis_geos_version')\n\n    def postgis_lib_version(self):\n        \"Returns the version number of the PostGIS library used with PostgreSQL.\"\n        return self._get_postgis_func('postgis_lib_version')\n\n    def postgis_proj_version(self):\n        \"Returns the version of the PROJ.4 library used with PostGIS.\"\n        return self._get_postgis_func('postgis_proj_version')\n\n    def postgis_version(self):\n        \"Returns PostGIS version number and compile-time options.\"\n        return self._get_postgis_func('postgis_version')\n\n    def postgis_full_version(self):\n        \"Returns PostGIS version number and compile-time options.\"\n        return self._get_postgis_func('postgis_full_version')\n\n    def postgis_version_tuple(self):\n        \"\"\"\n        Returns the PostGIS version as a tuple (version string, major,\n        minor, subminor).\n        \"\"\"\n        # Getting the PostGIS version\n        version = self.postgis_lib_version()\n        m = self.version_regex.match(version)\n\n        if m:\n            major = int(m.group('major'))\n            minor1 = int(m.group('minor1'))\n            minor2 = int(m.group('minor2'))\n        else:\n            raise Exception('Could not parse PostGIS version string: %s' % version)\n\n        return (version, major, minor1, minor2)\n\n    def proj_version_tuple(self):\n        \"\"\"\n        Return the version of PROJ.4 used by PostGIS as a tuple of the\n        major, minor, and subminor release numbers.\n        \"\"\"\n        proj_regex = re.compile(r'(\\d+)\\.(\\d+)\\.(\\d+)')\n        proj_ver_str = self.postgis_proj_version()\n        m = proj_regex.search(proj_ver_str)\n        if m:\n            return tuple(map(int, [m.group(1), m.group(2), m.group(3)]))\n        else:\n            raise Exception('Could not determine PROJ.4 version from PostGIS.')\n\n    def num_params(self, lookup_type, num_param):\n        \"\"\"\n        Helper routine that returns a boolean indicating whether the number of\n        parameters is correct for the lookup type.\n        \"\"\"\n        def exactly_two(np): return np == 2\n        def two_to_three(np): return np >= 2 and np <=3\n        if (lookup_type in self.distance_functions and\n            lookup_type != 'dwithin'):\n            return two_to_three(num_param)\n        else:\n            return exactly_two(num_param)\n\n    def spatial_lookup_sql(self, lvalue, lookup_type, value, field, qn):\n        \"\"\"\n        Constructs spatial SQL from the given lookup value tuple a\n        (alias, col, db_type), the lookup type string, lookup value, and\n        the geometry field.\n        \"\"\"\n        alias, col, db_type = lvalue\n\n        # Getting the quoted geometry column.\n        geo_col = '%s.%s' % (qn(alias), qn(col))\n\n        if lookup_type in self.geometry_operators:\n            if field.geography and not lookup_type in self.geography_operators:\n                raise ValueError('PostGIS geography does not support the '\n                                 '\"%s\" lookup.' % lookup_type)\n            # Handling a PostGIS operator.\n            op = self.geometry_operators[lookup_type]\n            return op.as_sql(geo_col, self.get_geom_placeholder(field, value))\n        elif lookup_type in self.geometry_functions:\n            if field.geography and not lookup_type in self.geography_functions:\n                raise ValueError('PostGIS geography type does not support the '\n                                 '\"%s\" lookup.' % lookup_type)\n\n            # See if a PostGIS geometry function matches the lookup type.\n            tmp = self.geometry_functions[lookup_type]\n\n            # Lookup types that are tuples take tuple arguments, e.g., 'relate' and\n            # distance lookups.\n            if isinstance(tmp, tuple):\n                # First element of tuple is the PostGISOperation instance, and the\n                # second element is either the type or a tuple of acceptable types\n                # that may passed in as further parameters for the lookup type.\n                op, arg_type = tmp\n\n                # Ensuring that a tuple _value_ was passed in from the user\n                if not isinstance(value, (tuple, list)):\n                    raise ValueError('Tuple required for `%s` lookup type.' % lookup_type)\n\n                # Geometry is first element of lookup tuple.\n                geom = value[0]\n\n                # Number of valid tuple parameters depends on the lookup type.\n                nparams = len(value)\n                if not self.num_params(lookup_type, nparams):\n                    raise ValueError('Incorrect number of parameters given for `%s` lookup type.' % lookup_type)\n\n                # Ensuring the argument type matches what we expect.\n                if not isinstance(value[1], arg_type):\n                    raise ValueError('Argument type should be %s, got %s instead.' % (arg_type, type(value[1])))\n\n                # For lookup type `relate`, the op instance is not yet created (has\n                # to be instantiated here to check the pattern parameter).\n                if lookup_type == 'relate':\n                    op = op(self.geom_func_prefix, value[1])\n                elif lookup_type in self.distance_functions and lookup_type != 'dwithin':\n                    if not field.geography and field.geodetic(self.connection):\n                        # Geodetic distances are only available from Points to\n                        # PointFields on PostGIS 1.4 and below.\n                        if not self.connection.ops.geography:\n                            if field.geom_type != 'POINT':\n                                raise ValueError('PostGIS spherical operations are only valid on PointFields.')\n\n                            if str(geom.geom_type) != 'Point':\n                                raise ValueError('PostGIS geometry distance parameter is required to be of type Point.')\n\n                        # Setting up the geodetic operation appropriately.\n                        if nparams == 3 and value[2] == 'spheroid':\n                            op = op['spheroid']\n                        else:\n                            op = op['sphere']\n                    else:\n                        op = op['cartesian']\n            else:\n                op = tmp\n                geom = value\n\n            # Calling the `as_sql` function on the operation instance.\n            return op.as_sql(geo_col, self.get_geom_placeholder(field, geom))\n\n        elif lookup_type == 'isnull':\n            # Handling 'isnull' lookup type\n            return \"%s IS %sNULL\" % (geo_col, (not value and 'NOT ' or ''))\n\n        raise TypeError(\"Got invalid lookup_type: %s\" % repr(lookup_type))\n\n    def spatial_aggregate_sql(self, agg):\n        \"\"\"\n        Returns the spatial aggregate SQL template and function for the\n        given Aggregate instance.\n        \"\"\"\n        agg_name = agg.__class__.__name__\n        if not self.check_aggregate_support(agg):\n            raise NotImplementedError('%s spatial aggregate is not implmented for this backend.' % agg_name)\n        agg_name = agg_name.lower()\n        if agg_name == 'union': agg_name += 'agg'\n        sql_template = '%(function)s(%(field)s)'\n        sql_function = getattr(self, agg_name)\n        return sql_template, sql_function\n\n    # Routines for getting the OGC-compliant models.\n    def geometry_columns(self):\n        from django.contrib.gis.db.backends.postgis.models import GeometryColumns\n        return GeometryColumns\n\n    def spatial_ref_sys(self):\n        from django.contrib.gis.db.backends.postgis.models import SpatialRefSys\n        return SpatialRefSys\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/db/backends/spatialite/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/db/backends/spatialite/adapter.py",
    "content": "from django.db.backends.sqlite3.base import Database\nfrom django.contrib.gis.db.backends.adapter import WKTAdapter\n\nclass SpatiaLiteAdapter(WKTAdapter):\n    \"SQLite adaptor for geometry objects.\"\n    def __conform__(self, protocol):\n        if protocol is Database.PrepareProtocol:\n            return str(self)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/db/backends/spatialite/base.py",
    "content": "from ctypes.util import find_library\nfrom django.conf import settings\n\nfrom django.core.exceptions import ImproperlyConfigured\nfrom django.db.backends.sqlite3.base import (\n    _sqlite_extract, _sqlite_date_trunc, _sqlite_regexp, _sqlite_format_dtdelta,\n    connection_created, Database, DatabaseWrapper as SQLiteDatabaseWrapper,\n    SQLiteCursorWrapper)\nfrom django.contrib.gis.db.backends.spatialite.client import SpatiaLiteClient\nfrom django.contrib.gis.db.backends.spatialite.creation import SpatiaLiteCreation\nfrom django.contrib.gis.db.backends.spatialite.introspection import SpatiaLiteIntrospection\nfrom django.contrib.gis.db.backends.spatialite.operations import SpatiaLiteOperations\n\nclass DatabaseWrapper(SQLiteDatabaseWrapper):\n    def __init__(self, *args, **kwargs):\n        # Before we get too far, make sure pysqlite 2.5+ is installed.\n        if Database.version_info < (2, 5, 0):\n            raise ImproperlyConfigured('Only versions of pysqlite 2.5+ are '\n                                       'compatible with SpatiaLite and GeoDjango.')\n\n        # Trying to find the location of the SpatiaLite library.\n        # Here we are figuring out the path to the SpatiaLite library\n        # (`libspatialite`). If it's not in the system library path (e.g., it\n        # cannot be found by `ctypes.util.find_library`), then it may be set\n        # manually in the settings via the `SPATIALITE_LIBRARY_PATH` setting.\n        self.spatialite_lib = getattr(settings, 'SPATIALITE_LIBRARY_PATH',\n                                      find_library('spatialite'))\n        if not self.spatialite_lib:\n            raise ImproperlyConfigured('Unable to locate the SpatiaLite library. '\n                                       'Make sure it is in your library path, or set '\n                                       'SPATIALITE_LIBRARY_PATH in your settings.'\n                                       )\n        super(DatabaseWrapper, self).__init__(*args, **kwargs)\n        self.ops = SpatiaLiteOperations(self)\n        self.client = SpatiaLiteClient(self)\n        self.creation = SpatiaLiteCreation(self)\n        self.introspection = SpatiaLiteIntrospection(self)\n\n    def _cursor(self):\n        if self.connection is None:\n            self._sqlite_create_connection()\n\n            ## From here on, customized for GeoDjango ##\n\n            # Enabling extension loading on the SQLite connection.\n            try:\n                self.connection.enable_load_extension(True)\n            except AttributeError:\n                raise ImproperlyConfigured('The pysqlite library does not support C extension loading. '\n                                           'Both SQLite and pysqlite must be configured to allow '\n                                           'the loading of extensions to use SpatiaLite.'\n                                           )\n\n            # Loading the SpatiaLite library extension on the connection, and returning\n            # the created cursor.\n            cur = self.connection.cursor(factory=SQLiteCursorWrapper)\n            try:\n                cur.execute(\"SELECT load_extension(%s)\", (self.spatialite_lib,))\n            except Exception as msg:\n                raise ImproperlyConfigured('Unable to load the SpatiaLite library extension '\n                                           '\"%s\" because: %s' % (self.spatialite_lib, msg))\n            return cur\n        else:\n            return self.connection.cursor(factory=SQLiteCursorWrapper)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/db/backends/spatialite/client.py",
    "content": "from django.db.backends.sqlite3.client import DatabaseClient\n\nclass SpatiaLiteClient(DatabaseClient):\n    executable_name = 'spatialite'\n\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/db/backends/spatialite/creation.py",
    "content": "import os\nfrom django.conf import settings\nfrom django.core.cache import get_cache\nfrom django.core.cache.backends.db import BaseDatabaseCache\nfrom django.core.exceptions import ImproperlyConfigured\nfrom django.db.backends.sqlite3.creation import DatabaseCreation\n\nclass SpatiaLiteCreation(DatabaseCreation):\n\n    def create_test_db(self, verbosity=1, autoclobber=False):\n        \"\"\"\n        Creates a test database, prompting the user for confirmation if the\n        database already exists. Returns the name of the test database created.\n\n        This method is overloaded to load up the SpatiaLite initialization\n        SQL prior to calling the `syncdb` command.\n        \"\"\"\n        # Don't import django.core.management if it isn't needed.\n        from django.core.management import call_command\n\n        test_database_name = self._get_test_db_name()\n\n        if verbosity >= 1:\n            test_db_repr = ''\n            if verbosity >= 2:\n                test_db_repr = \" ('%s')\" % test_database_name\n            print(\"Creating test database for alias '%s'%s...\" % (self.connection.alias, test_db_repr))\n\n        self._create_test_db(verbosity, autoclobber)\n\n        self.connection.close()\n        self.connection.settings_dict[\"NAME\"] = test_database_name\n        self.connection.ops.confirm_spatial_components_versions()\n\n        # Need to load the SpatiaLite initialization SQL before running `syncdb`.\n        self.load_spatialite_sql()\n\n        # Report syncdb messages at one level lower than that requested.\n        # This ensures we don't get flooded with messages during testing\n        # (unless you really ask to be flooded)\n        call_command('syncdb',\n            verbosity=max(verbosity - 1, 0),\n            interactive=False,\n            database=self.connection.alias,\n            load_initial_data=False)\n\n        # We need to then do a flush to ensure that any data installed by\n        # custom SQL has been removed. The only test data should come from\n        # test fixtures, or autogenerated from post_syncdb triggers.\n        # This has the side effect of loading initial data (which was\n        # intentionally skipped in the syncdb).\n        call_command('flush',\n            verbosity=max(verbosity - 1, 0),\n            interactive=False,\n            database=self.connection.alias)\n\n        from django.core.cache import get_cache\n        from django.core.cache.backends.db import BaseDatabaseCache\n        for cache_alias in settings.CACHES:\n            cache = get_cache(cache_alias)\n            if isinstance(cache, BaseDatabaseCache):\n                call_command('createcachetable', cache._table, database=self.connection.alias)\n\n        # Get a cursor (even though we don't need one yet). This has\n        # the side effect of initializing the test database.\n        cursor = self.connection.cursor()\n\n        return test_database_name\n\n    def sql_indexes_for_field(self, model, f, style):\n        \"Return any spatial index creation SQL for the field.\"\n        from django.contrib.gis.db.models.fields import GeometryField\n\n        output = super(SpatiaLiteCreation, self).sql_indexes_for_field(model, f, style)\n\n        if isinstance(f, GeometryField):\n            gqn = self.connection.ops.geo_quote_name\n            qn = self.connection.ops.quote_name\n            db_table = model._meta.db_table\n\n            output.append(style.SQL_KEYWORD('SELECT ') +\n                          style.SQL_TABLE('AddGeometryColumn') + '(' +\n                          style.SQL_TABLE(gqn(db_table)) + ', ' +\n                          style.SQL_FIELD(gqn(f.column)) + ', ' +\n                          style.SQL_FIELD(str(f.srid)) + ', ' +\n                          style.SQL_COLTYPE(gqn(f.geom_type)) + ', ' +\n                          style.SQL_KEYWORD(str(f.dim)) + ', ' +\n                          style.SQL_KEYWORD(str(int(not f.null))) +\n                          ');')\n\n            if f.spatial_index:\n                output.append(style.SQL_KEYWORD('SELECT ') +\n                              style.SQL_TABLE('CreateSpatialIndex') + '(' +\n                              style.SQL_TABLE(gqn(db_table)) + ', ' +\n                              style.SQL_FIELD(gqn(f.column)) + ');')\n\n        return output\n\n    def load_spatialite_sql(self):\n        \"\"\"\n        This routine loads up the SpatiaLite SQL file.\n        \"\"\"\n        if self.connection.ops.spatial_version[:2] >= (2, 4):\n            # Spatialite >= 2.4 -- No need to load any SQL file, calling\n            # InitSpatialMetaData() transparently creates the spatial metadata\n            # tables\n            cur = self.connection._cursor()\n            cur.execute(\"SELECT InitSpatialMetaData()\")\n        else:\n            # Spatialite < 2.4 -- Load the initial SQL\n\n            # Getting the location of the SpatiaLite SQL file, and confirming\n            # it exists.\n            spatialite_sql = self.spatialite_init_file()\n            if not os.path.isfile(spatialite_sql):\n                raise ImproperlyConfigured('Could not find the required SpatiaLite initialization '\n                                        'SQL file (necessary for testing): %s' % spatialite_sql)\n\n            # Opening up the SpatiaLite SQL initialization file and executing\n            # as a script.\n            with open(spatialite_sql, 'r') as sql_fh:\n                cur = self.connection._cursor()\n                cur.executescript(sql_fh.read())\n\n    def spatialite_init_file(self):\n        # SPATIALITE_SQL may be placed in settings to tell GeoDjango\n        # to use a specific path to the SpatiaLite initilization SQL.\n        return getattr(settings, 'SPATIALITE_SQL',\n                       'init_spatialite-%s.%s.sql' %\n                       self.connection.ops.spatial_version[:2])\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/db/backends/spatialite/introspection.py",
    "content": "from django.contrib.gis.gdal import OGRGeomType\nfrom django.db.backends.sqlite3.introspection import DatabaseIntrospection, FlexibleFieldLookupDict\nfrom django.utils import six\n\nclass GeoFlexibleFieldLookupDict(FlexibleFieldLookupDict):\n    \"\"\"\n    Sublcass that includes updates the `base_data_types_reverse` dict\n    for geometry field types.\n    \"\"\"\n    base_data_types_reverse = FlexibleFieldLookupDict.base_data_types_reverse.copy()\n    base_data_types_reverse.update(\n        {'point' : 'GeometryField',\n         'linestring' : 'GeometryField',\n         'polygon' : 'GeometryField',\n         'multipoint' : 'GeometryField',\n         'multilinestring' : 'GeometryField',\n         'multipolygon' : 'GeometryField',\n         'geometrycollection' : 'GeometryField',\n         })\n\nclass SpatiaLiteIntrospection(DatabaseIntrospection):\n    data_types_reverse = GeoFlexibleFieldLookupDict()\n\n    def get_geometry_type(self, table_name, geo_col):\n        cursor = self.connection.cursor()\n        try:\n            # Querying the `geometry_columns` table to get additional metadata.\n            cursor.execute('SELECT \"coord_dimension\", \"srid\", \"type\" '\n                           'FROM \"geometry_columns\" '\n                           'WHERE \"f_table_name\"=%s AND \"f_geometry_column\"=%s',\n                           (table_name, geo_col))\n            row = cursor.fetchone()\n            if not row:\n                raise Exception('Could not find a geometry column for \"%s\".\"%s\"' %\n                                (table_name, geo_col))\n\n            # OGRGeomType does not require GDAL and makes it easy to convert\n            # from OGC geom type name to Django field.\n            field_type = OGRGeomType(row[2]).django\n\n            # Getting any GeometryField keyword arguments that are not the default.\n            dim = row[0]\n            srid = row[1]\n            field_params = {}\n            if srid != 4326:\n                field_params['srid'] = srid\n            if isinstance(dim, six.string_types) and 'Z' in dim:\n                field_params['dim'] = 3\n        finally:\n            cursor.close()\n\n        return field_type, field_params\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/db/backends/spatialite/models.py",
    "content": "\"\"\"\n The GeometryColumns and SpatialRefSys models for the SpatiaLite backend.\n\"\"\"\nfrom django.db import models\nfrom django.contrib.gis.db.backends.base import SpatialRefSysMixin\nfrom django.utils.encoding import python_2_unicode_compatible\n\n@python_2_unicode_compatible\nclass GeometryColumns(models.Model):\n    \"\"\"\n    The 'geometry_columns' table from SpatiaLite.\n    \"\"\"\n    f_table_name = models.CharField(max_length=256)\n    f_geometry_column = models.CharField(max_length=256)\n    type = models.CharField(max_length=30)\n    coord_dimension = models.IntegerField()\n    srid = models.IntegerField(primary_key=True)\n    spatial_index_enabled = models.IntegerField()\n\n    class Meta:\n        db_table = 'geometry_columns'\n        managed = False\n\n    @classmethod\n    def table_name_col(cls):\n        \"\"\"\n        Returns the name of the metadata column used to store the\n        the feature table name.\n        \"\"\"\n        return 'f_table_name'\n\n    @classmethod\n    def geom_col_name(cls):\n        \"\"\"\n        Returns the name of the metadata column used to store the\n        the feature geometry column.\n        \"\"\"\n        return 'f_geometry_column'\n\n    def __str__(self):\n        return \"%s.%s - %dD %s field (SRID: %d)\" % \\\n               (self.f_table_name, self.f_geometry_column,\n                self.coord_dimension, self.type, self.srid)\n\nclass SpatialRefSys(models.Model, SpatialRefSysMixin):\n    \"\"\"\n    The 'spatial_ref_sys' table from SpatiaLite.\n    \"\"\"\n    srid = models.IntegerField(primary_key=True)\n    auth_name = models.CharField(max_length=256)\n    auth_srid = models.IntegerField()\n    ref_sys_name = models.CharField(max_length=256)\n    proj4text = models.CharField(max_length=2048)\n\n    @property\n    def wkt(self):\n        from django.contrib.gis.gdal import SpatialReference\n        return SpatialReference(self.proj4text).wkt\n\n    class Meta:\n        db_table = 'spatial_ref_sys'\n        managed = False\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/db/backends/spatialite/operations.py",
    "content": "import re\nfrom decimal import Decimal\n\nfrom django.contrib.gis.db.backends.base import BaseSpatialOperations\nfrom django.contrib.gis.db.backends.util import SpatialOperation, SpatialFunction\nfrom django.contrib.gis.db.backends.spatialite.adapter import SpatiaLiteAdapter\nfrom django.contrib.gis.geometry.backend import Geometry\nfrom django.contrib.gis.measure import Distance\nfrom django.core.exceptions import ImproperlyConfigured\nfrom django.db.backends.sqlite3.base import DatabaseOperations\nfrom django.db.utils import DatabaseError\nfrom django.utils import six\n\nclass SpatiaLiteOperator(SpatialOperation):\n    \"For SpatiaLite operators (e.g. `&&`, `~`).\"\n    def __init__(self, operator):\n        super(SpatiaLiteOperator, self).__init__(operator=operator)\n\nclass SpatiaLiteFunction(SpatialFunction):\n    \"For SpatiaLite function calls.\"\n    def __init__(self, function, **kwargs):\n        super(SpatiaLiteFunction, self).__init__(function, **kwargs)\n\nclass SpatiaLiteFunctionParam(SpatiaLiteFunction):\n    \"For SpatiaLite functions that take another parameter.\"\n    sql_template = '%(function)s(%(geo_col)s, %(geometry)s, %%s)'\n\nclass SpatiaLiteDistance(SpatiaLiteFunction):\n    \"For SpatiaLite distance operations.\"\n    dist_func = 'Distance'\n    sql_template = '%(function)s(%(geo_col)s, %(geometry)s) %(operator)s %%s'\n\n    def __init__(self, operator):\n        super(SpatiaLiteDistance, self).__init__(self.dist_func,\n                                                 operator=operator)\n\nclass SpatiaLiteRelate(SpatiaLiteFunctionParam):\n    \"For SpatiaLite Relate(<geom>, <pattern>) calls.\"\n    pattern_regex = re.compile(r'^[012TF\\*]{9}$')\n    def __init__(self, pattern):\n        if not self.pattern_regex.match(pattern):\n            raise ValueError('Invalid intersection matrix pattern \"%s\".' % pattern)\n        super(SpatiaLiteRelate, self).__init__('Relate')\n\n# Valid distance types and substitutions\ndtypes = (Decimal, Distance, float) + six.integer_types\ndef get_dist_ops(operator):\n    \"Returns operations for regular distances; spherical distances are not currently supported.\"\n    return (SpatiaLiteDistance(operator),)\n\nclass SpatiaLiteOperations(DatabaseOperations, BaseSpatialOperations):\n    compiler_module = 'django.contrib.gis.db.models.sql.compiler'\n    name = 'spatialite'\n    spatialite = True\n    version_regex = re.compile(r'^(?P<major>\\d)\\.(?P<minor1>\\d)\\.(?P<minor2>\\d+)')\n    valid_aggregates = dict([(k, None) for k in ('Extent', 'Union')])\n\n    Adapter = SpatiaLiteAdapter\n    Adaptor = Adapter # Backwards-compatibility alias.\n\n    area = 'Area'\n    centroid = 'Centroid'\n    contained = 'MbrWithin'\n    difference = 'Difference'\n    distance = 'Distance'\n    envelope = 'Envelope'\n    intersection = 'Intersection'\n    length = 'GLength' # OpenGis defines Length, but this conflicts with an SQLite reserved keyword\n    num_geom = 'NumGeometries'\n    num_points = 'NumPoints'\n    point_on_surface = 'PointOnSurface'\n    scale = 'ScaleCoords'\n    svg = 'AsSVG'\n    sym_difference = 'SymDifference'\n    transform = 'Transform'\n    translate = 'ShiftCoords'\n    union = 'GUnion' # OpenGis defines Union, but this conflicts with an SQLite reserved keyword\n    unionagg = 'GUnion'\n\n    from_text = 'GeomFromText'\n    from_wkb = 'GeomFromWKB'\n    select = 'AsText(%s)'\n\n    geometry_functions = {\n        'equals' : SpatiaLiteFunction('Equals'),\n        'disjoint' : SpatiaLiteFunction('Disjoint'),\n        'touches' : SpatiaLiteFunction('Touches'),\n        'crosses' : SpatiaLiteFunction('Crosses'),\n        'within' : SpatiaLiteFunction('Within'),\n        'overlaps' : SpatiaLiteFunction('Overlaps'),\n        'contains' : SpatiaLiteFunction('Contains'),\n        'intersects' : SpatiaLiteFunction('Intersects'),\n        'relate' : (SpatiaLiteRelate, six.string_types),\n        # Returns true if B's bounding box completely contains A's bounding box.\n        'contained' : SpatiaLiteFunction('MbrWithin'),\n        # Returns true if A's bounding box completely contains B's bounding box.\n        'bbcontains' : SpatiaLiteFunction('MbrContains'),\n        # Returns true if A's bounding box overlaps B's bounding box.\n        'bboverlaps' : SpatiaLiteFunction('MbrOverlaps'),\n        # These are implemented here as synonyms for Equals\n        'same_as' : SpatiaLiteFunction('Equals'),\n        'exact' : SpatiaLiteFunction('Equals'),\n        }\n\n    distance_functions = {\n        'distance_gt' : (get_dist_ops('>'), dtypes),\n        'distance_gte' : (get_dist_ops('>='), dtypes),\n        'distance_lt' : (get_dist_ops('<'), dtypes),\n        'distance_lte' : (get_dist_ops('<='), dtypes),\n        }\n    geometry_functions.update(distance_functions)\n\n    def __init__(self, connection):\n        super(DatabaseOperations, self).__init__(connection)\n\n        # Creating the GIS terms dictionary.\n        gis_terms = ['isnull']\n        gis_terms += self.geometry_functions.keys()\n        self.gis_terms = dict([(term, None) for term in gis_terms])\n\n    def confirm_spatial_components_versions(self):\n        # Determine the version of the SpatiaLite library.\n        try:\n            vtup = self.spatialite_version_tuple()\n            version = vtup[1:]\n            if version < (2, 3, 0):\n                raise ImproperlyConfigured('GeoDjango only supports SpatiaLite versions '\n                                           '2.3.0 and above')\n            self.spatial_version = version\n        except ImproperlyConfigured:\n            raise\n        except Exception as msg:\n            raise ImproperlyConfigured('Cannot determine the SpatiaLite version for the \"%s\" '\n                                       'database (error was \"%s\").  Was the SpatiaLite initialization '\n                                       'SQL loaded on this database?' %\n                                       (self.connection.settings_dict['NAME'], msg))\n\n        if version >= (2, 4, 0):\n            # Spatialite 2.4.0-RC4 added AsGML and AsKML, however both\n            # RC2 (shipped in popular Debian/Ubuntu packages) and RC4\n            # report version as '2.4.0', so we fall back to feature detection\n            try:\n                self._get_spatialite_func(\"AsGML(GeomFromText('POINT(1 1)'))\")\n                self.gml = 'AsGML'\n                self.kml = 'AsKML'\n            except DatabaseError:\n                # we are using < 2.4.0-RC4\n                pass\n        if version >= (3, 0, 0):\n            self.geojson = 'AsGeoJSON'\n\n    def check_aggregate_support(self, aggregate):\n        \"\"\"\n        Checks if the given aggregate name is supported (that is, if it's\n        in `self.valid_aggregates`).\n        \"\"\"\n        agg_name = aggregate.__class__.__name__\n        return agg_name in self.valid_aggregates\n\n    def convert_geom(self, wkt, geo_field):\n        \"\"\"\n        Converts geometry WKT returned from a SpatiaLite aggregate.\n        \"\"\"\n        if wkt:\n            return Geometry(wkt, geo_field.srid)\n        else:\n            return None\n\n    def geo_db_type(self, f):\n        \"\"\"\n        Returns None because geometry columnas are added via the\n        `AddGeometryColumn` stored procedure on SpatiaLite.\n        \"\"\"\n        return None\n\n    def get_distance(self, f, value, lookup_type):\n        \"\"\"\n        Returns the distance parameters for the given geometry field,\n        lookup value, and lookup type.  SpatiaLite only supports regular\n        cartesian-based queries (no spheroid/sphere calculations for point\n        geometries like PostGIS).\n        \"\"\"\n        if not value:\n            return []\n        value = value[0]\n        if isinstance(value, Distance):\n            if f.geodetic(self.connection):\n                raise ValueError('SpatiaLite does not support distance queries on '\n                                 'geometry fields with a geodetic coordinate system. '\n                                 'Distance objects; use a numeric value of your '\n                                 'distance in degrees instead.')\n            else:\n                dist_param = getattr(value, Distance.unit_attname(f.units_name(self.connection)))\n        else:\n            dist_param = value\n        return [dist_param]\n\n    def get_geom_placeholder(self, f, value):\n        \"\"\"\n        Provides a proper substitution value for Geometries that are not in the\n        SRID of the field.  Specifically, this routine will substitute in the\n        Transform() and GeomFromText() function call(s).\n        \"\"\"\n        def transform_value(value, srid):\n            return not (value is None or value.srid == srid)\n        if hasattr(value, 'expression'):\n            if transform_value(value, f.srid):\n                placeholder = '%s(%%s, %s)' % (self.transform, f.srid)\n            else:\n                placeholder = '%s'\n            # No geometry value used for F expression, substitue in\n            # the column name instead.\n            return placeholder % self.get_expression_column(value)\n        else:\n            if transform_value(value, f.srid):\n                # Adding Transform() to the SQL placeholder.\n                return '%s(%s(%%s,%s), %s)' % (self.transform, self.from_text, value.srid, f.srid)\n            else:\n                return '%s(%%s,%s)' % (self.from_text, f.srid)\n\n    def _get_spatialite_func(self, func):\n        \"\"\"\n        Helper routine for calling SpatiaLite functions and returning\n        their result.\n        \"\"\"\n        cursor = self.connection._cursor()\n        try:\n            try:\n                cursor.execute('SELECT %s' % func)\n                row = cursor.fetchone()\n            except:\n                # Responsibility of caller to perform error handling.\n                raise\n        finally:\n            cursor.close()\n        return row[0]\n\n    def geos_version(self):\n        \"Returns the version of GEOS used by SpatiaLite as a string.\"\n        return self._get_spatialite_func('geos_version()')\n\n    def proj4_version(self):\n        \"Returns the version of the PROJ.4 library used by SpatiaLite.\"\n        return self._get_spatialite_func('proj4_version()')\n\n    def spatialite_version(self):\n        \"Returns the SpatiaLite library version as a string.\"\n        return self._get_spatialite_func('spatialite_version()')\n\n    def spatialite_version_tuple(self):\n        \"\"\"\n        Returns the SpatiaLite version as a tuple (version string, major,\n        minor, subminor).\n        \"\"\"\n        # Getting the SpatiaLite version.\n        try:\n            version = self.spatialite_version()\n        except DatabaseError:\n            # The `spatialite_version` function first appeared in version 2.3.1\n            # of SpatiaLite, so doing a fallback test for 2.3.0 (which is\n            # used by popular Debian/Ubuntu packages).\n            version = None\n            try:\n                tmp = self._get_spatialite_func(\"X(GeomFromText('POINT(1 1)'))\")\n                if tmp == 1.0: version = '2.3.0'\n            except DatabaseError:\n                pass\n            # If no version string defined, then just re-raise the original\n            # exception.\n            if version is None: raise\n\n        m = self.version_regex.match(version)\n        if m:\n            major = int(m.group('major'))\n            minor1 = int(m.group('minor1'))\n            minor2 = int(m.group('minor2'))\n        else:\n            raise Exception('Could not parse SpatiaLite version string: %s' % version)\n\n        return (version, major, minor1, minor2)\n\n    def spatial_aggregate_sql(self, agg):\n        \"\"\"\n        Returns the spatial aggregate SQL template and function for the\n        given Aggregate instance.\n        \"\"\"\n        agg_name = agg.__class__.__name__\n        if not self.check_aggregate_support(agg):\n            raise NotImplementedError('%s spatial aggregate is not implmented for this backend.' % agg_name)\n        agg_name = agg_name.lower()\n        if agg_name == 'union': agg_name += 'agg'\n        sql_template = self.select % '%(function)s(%(field)s)'\n        sql_function = getattr(self, agg_name)\n        return sql_template, sql_function\n\n    def spatial_lookup_sql(self, lvalue, lookup_type, value, field, qn):\n        \"\"\"\n        Returns the SpatiaLite-specific SQL for the given lookup value\n        [a tuple of (alias, column, db_type)], lookup type, lookup\n        value, the model field, and the quoting function.\n        \"\"\"\n        alias, col, db_type = lvalue\n\n        # Getting the quoted field as `geo_col`.\n        geo_col = '%s.%s' % (qn(alias), qn(col))\n\n        if lookup_type in self.geometry_functions:\n            # See if a SpatiaLite geometry function matches the lookup type.\n            tmp = self.geometry_functions[lookup_type]\n\n            # Lookup types that are tuples take tuple arguments, e.g., 'relate' and\n            # distance lookups.\n            if isinstance(tmp, tuple):\n                # First element of tuple is the SpatiaLiteOperation instance, and the\n                # second element is either the type or a tuple of acceptable types\n                # that may passed in as further parameters for the lookup type.\n                op, arg_type = tmp\n\n                # Ensuring that a tuple _value_ was passed in from the user\n                if not isinstance(value, (tuple, list)):\n                    raise ValueError('Tuple required for `%s` lookup type.' % lookup_type)\n\n                # Geometry is first element of lookup tuple.\n                geom = value[0]\n\n                # Number of valid tuple parameters depends on the lookup type.\n                if len(value) != 2:\n                    raise ValueError('Incorrect number of parameters given for `%s` lookup type.' % lookup_type)\n\n                # Ensuring the argument type matches what we expect.\n                if not isinstance(value[1], arg_type):\n                    raise ValueError('Argument type should be %s, got %s instead.' % (arg_type, type(value[1])))\n\n                # For lookup type `relate`, the op instance is not yet created (has\n                # to be instantiated here to check the pattern parameter).\n                if lookup_type == 'relate':\n                    op = op(value[1])\n                elif lookup_type in self.distance_functions:\n                    op = op[0]\n            else:\n                op = tmp\n                geom = value\n            # Calling the `as_sql` function on the operation instance.\n            return op.as_sql(geo_col, self.get_geom_placeholder(field, geom))\n        elif lookup_type == 'isnull':\n            # Handling 'isnull' lookup type\n            return \"%s IS %sNULL\" % (geo_col, (not value and 'NOT ' or ''))\n\n        raise TypeError(\"Got invalid lookup_type: %s\" % repr(lookup_type))\n\n    # Routines for getting the OGC-compliant models.\n    def geometry_columns(self):\n        from django.contrib.gis.db.backends.spatialite.models import GeometryColumns\n        return GeometryColumns\n\n    def spatial_ref_sys(self):\n        from django.contrib.gis.db.backends.spatialite.models import SpatialRefSys\n        return SpatialRefSys\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/db/backends/util.py",
    "content": "\"\"\"\nA collection of utility routines and classes used by the spatial\nbackends.\n\"\"\"\n\nclass SpatialOperation(object):\n    \"\"\"\n    Base class for generating spatial SQL.\n    \"\"\"\n    sql_template = '%(geo_col)s %(operator)s %(geometry)s'\n\n    def __init__(self, function='', operator='', result='', **kwargs):\n        self.function = function\n        self.operator = operator\n        self.result = result\n        self.extra = kwargs\n\n    def as_sql(self, geo_col, geometry='%s'):\n        return self.sql_template % self.params(geo_col, geometry)\n\n    def params(self, geo_col, geometry):\n        params = {'function' : self.function,\n                  'geo_col' : geo_col,\n                  'geometry' : geometry,\n                  'operator' : self.operator,\n                  'result' : self.result,\n                  }\n        params.update(self.extra)\n        return params\n\nclass SpatialFunction(SpatialOperation):\n    \"\"\"\n    Base class for generating spatial SQL related to a function.\n    \"\"\"\n    sql_template = '%(function)s(%(geo_col)s, %(geometry)s)'\n\n    def __init__(self, func, result='', operator='', **kwargs):\n        # Getting the function prefix.\n        default = {'function' : func,\n                   'operator' : operator,\n                   'result' : result\n                   }\n        kwargs.update(default)\n        super(SpatialFunction, self).__init__(**kwargs)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/db/models/__init__.py",
    "content": "# Want to get everything from the 'normal' models package.\nfrom django.db.models import *\n\n# Geographic aggregate functions\nfrom django.contrib.gis.db.models.aggregates import *\n\n# The GeoManager\nfrom django.contrib.gis.db.models.manager import GeoManager\n\n# The geographic-enabled fields.\nfrom django.contrib.gis.db.models.fields import (\n     GeometryField, PointField, LineStringField, PolygonField,\n     MultiPointField, MultiLineStringField, MultiPolygonField,\n     GeometryCollectionField)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/db/models/aggregates.py",
    "content": "from django.db.models import Aggregate\nfrom django.contrib.gis.db.models.sql import GeomField\n\nclass Collect(Aggregate):\n    name = 'Collect'\n\nclass Extent(Aggregate):\n    name = 'Extent'\n\nclass Extent3D(Aggregate):\n    name = 'Extent3D'\n\nclass MakeLine(Aggregate):\n    name = 'MakeLine'\n\nclass Union(Aggregate):\n    name = 'Union'\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/db/models/fields.py",
    "content": "from django.db.models.fields import Field\nfrom django.db.models.sql.expressions import SQLEvaluator\nfrom django.utils.translation import ugettext_lazy as _\nfrom django.contrib.gis import forms\nfrom django.contrib.gis.db.models.proxy import GeometryProxy\nfrom django.contrib.gis.geometry.backend import Geometry, GeometryException\nfrom django.utils import six\n\n# Local cache of the spatial_ref_sys table, which holds SRID data for each\n# spatial database alias. This cache exists so that the database isn't queried\n# for SRID info each time a distance query is constructed.\n_srid_cache = {}\n\ndef get_srid_info(srid, connection):\n    \"\"\"\n    Returns the units, unit name, and spheroid WKT associated with the\n    given SRID from the `spatial_ref_sys` (or equivalent) spatial database\n    table for the given database connection.  These results are cached.\n    \"\"\"\n    global _srid_cache\n\n    try:\n        # The SpatialRefSys model for the spatial backend.\n        SpatialRefSys = connection.ops.spatial_ref_sys()\n    except NotImplementedError:\n        # No `spatial_ref_sys` table in spatial backend (e.g., MySQL).\n        return None, None, None\n\n    if not connection.alias in _srid_cache:\n        # Initialize SRID dictionary for database if it doesn't exist.\n        _srid_cache[connection.alias] = {}\n\n    if not srid in _srid_cache[connection.alias]:\n        # Use `SpatialRefSys` model to query for spatial reference info.\n        sr = SpatialRefSys.objects.using(connection.alias).get(srid=srid)\n        units, units_name = sr.units\n        spheroid = SpatialRefSys.get_spheroid(sr.wkt)\n        _srid_cache[connection.alias][srid] = (units, units_name, spheroid)\n\n    return _srid_cache[connection.alias][srid]\n\nclass GeometryField(Field):\n    \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\n\n    # The OpenGIS Geometry name.\n    geom_type = 'GEOMETRY'\n\n    # Geodetic units.\n    geodetic_units = ('Decimal Degree', 'degree')\n\n    description = _(\"The base GIS field -- maps to the OpenGIS Specification Geometry type.\")\n\n    def __init__(self, verbose_name=None, srid=4326, spatial_index=True, dim=2,\n                 geography=False, **kwargs):\n        \"\"\"\n        The initialization function for geometry fields.  Takes the following\n        as keyword arguments:\n\n        srid:\n         The spatial reference system identifier, an OGC standard.\n         Defaults to 4326 (WGS84).\n\n        spatial_index:\n         Indicates whether to create a spatial index.  Defaults to True.\n         Set this instead of 'db_index' for geographic fields since index\n         creation is different for geometry columns.\n\n        dim:\n         The number of dimensions for this geometry.  Defaults to 2.\n\n        extent:\n         Customize the extent, in a 4-tuple of WGS 84 coordinates, for the\n         geometry field entry in the `USER_SDO_GEOM_METADATA` table.  Defaults\n         to (-180.0, -90.0, 180.0, 90.0).\n\n        tolerance:\n         Define the tolerance, in meters, to use for the geometry field\n         entry in the `USER_SDO_GEOM_METADATA` table.  Defaults to 0.05.\n        \"\"\"\n\n        # Setting the index flag with the value of the `spatial_index` keyword.\n        self.spatial_index = spatial_index\n\n        # Setting the SRID and getting the units.  Unit information must be\n        # easily available in the field instance for distance queries.\n        self.srid = srid\n\n        # Setting the dimension of the geometry field.\n        self.dim = dim\n\n        # Setting the verbose_name keyword argument with the positional\n        # first parameter, so this works like normal fields.\n        kwargs['verbose_name'] = verbose_name\n\n        # Is this a geography rather than a geometry column?\n        self.geography = geography\n\n        # Oracle-specific private attributes for creating the entry in\n        # `USER_SDO_GEOM_METADATA`\n        self._extent = kwargs.pop('extent', (-180.0, -90.0, 180.0, 90.0))\n        self._tolerance = kwargs.pop('tolerance', 0.05)\n\n        super(GeometryField, self).__init__(**kwargs)\n\n    # The following functions are used to get the units, their name, and\n    # the spheroid corresponding to the SRID of the GeometryField.\n    def _get_srid_info(self, connection):\n        # Get attributes from `get_srid_info`.\n        self._units, self._units_name, self._spheroid = get_srid_info(self.srid, connection)\n\n    def spheroid(self, connection):\n        if not hasattr(self, '_spheroid'):\n            self._get_srid_info(connection)\n        return self._spheroid\n\n    def units(self, connection):\n        if not hasattr(self, '_units'):\n            self._get_srid_info(connection)\n        return self._units\n\n    def units_name(self, connection):\n        if not hasattr(self, '_units_name'):\n            self._get_srid_info(connection)\n        return self._units_name\n\n    ### Routines specific to GeometryField ###\n    def geodetic(self, connection):\n        \"\"\"\n        Returns true if this field's SRID corresponds with a coordinate\n        system that uses non-projected units (e.g., latitude/longitude).\n        \"\"\"\n        return self.units_name(connection) in self.geodetic_units\n\n    def get_distance(self, value, lookup_type, connection):\n        \"\"\"\n        Returns a distance number in units of the field.  For example, if\n        `D(km=1)` was passed in and the units of the field were in meters,\n        then 1000 would be returned.\n        \"\"\"\n        return connection.ops.get_distance(self, value, lookup_type)\n\n    def get_prep_value(self, value):\n        \"\"\"\n        Spatial lookup values are either a parameter that is (or may be\n        converted to) a geometry, or a sequence of lookup values that\n        begins with a geometry.  This routine will setup the geometry\n        value properly, and preserve any other lookup parameters before\n        returning to the caller.\n        \"\"\"\n        if isinstance(value, SQLEvaluator):\n            return value\n        elif isinstance(value, (tuple, list)):\n            geom = value[0]\n            seq_value = True\n        else:\n            geom = value\n            seq_value = False\n\n        # When the input is not a GEOS geometry, attempt to construct one\n        # from the given string input.\n        if isinstance(geom, Geometry):\n            pass\n        elif isinstance(geom, (bytes, six.string_types)) or hasattr(geom, '__geo_interface__'):\n            try:\n                geom = Geometry(geom)\n            except GeometryException:\n                raise ValueError('Could not create geometry from lookup value.')\n        else:\n            raise ValueError('Cannot use object with type %s for a geometry lookup parameter.' % type(geom).__name__)\n\n        # Assigning the SRID value.\n        geom.srid = self.get_srid(geom)\n\n        if seq_value:\n            lookup_val = [geom]\n            lookup_val.extend(value[1:])\n            return tuple(lookup_val)\n        else:\n            return geom\n\n    def get_srid(self, geom):\n        \"\"\"\n        Returns the default SRID for the given geometry, taking into account\n        the SRID set for the field.  For example, if the input geometry\n        has no SRID, then that of the field will be returned.\n        \"\"\"\n        gsrid = geom.srid # SRID of given geometry.\n        if gsrid is None or self.srid == -1 or (gsrid == -1 and self.srid != -1):\n            return self.srid\n        else:\n            return gsrid\n\n    ### Routines overloaded from Field ###\n    def contribute_to_class(self, cls, name):\n        super(GeometryField, self).contribute_to_class(cls, name)\n\n        # Setup for lazy-instantiated Geometry object.\n        setattr(cls, self.attname, GeometryProxy(Geometry, self))\n\n    def db_type(self, connection):\n        return connection.ops.geo_db_type(self)\n\n    def formfield(self, **kwargs):\n        defaults = {'form_class' : forms.GeometryField,\n                    'null' : self.null,\n                    'geom_type' : self.geom_type,\n                    'srid' : self.srid,\n                    }\n        defaults.update(kwargs)\n        return super(GeometryField, self).formfield(**defaults)\n\n    def get_db_prep_lookup(self, lookup_type, value, connection, prepared=False):\n        \"\"\"\n        Prepare for the database lookup, and return any spatial parameters\n        necessary for the query.  This includes wrapping any geometry\n        parameters with a backend-specific adapter and formatting any distance\n        parameters into the correct units for the coordinate system of the\n        field.\n        \"\"\"\n        if lookup_type in connection.ops.gis_terms:\n            # special case for isnull lookup\n            if lookup_type == 'isnull':\n                return []\n\n            # Populating the parameters list, and wrapping the Geometry\n            # with the Adapter of the spatial backend.\n            if isinstance(value, (tuple, list)):\n                params = [connection.ops.Adapter(value[0])]\n                if lookup_type in connection.ops.distance_functions:\n                    # Getting the distance parameter in the units of the field.\n                    params += self.get_distance(value[1:], lookup_type, connection)\n                elif lookup_type in connection.ops.truncate_params:\n                    # Lookup is one where SQL parameters aren't needed from the\n                    # given lookup value.\n                    pass\n                else:\n                    params += value[1:]\n            elif isinstance(value, SQLEvaluator):\n                params = []\n            else:\n                params = [connection.ops.Adapter(value)]\n\n            return params\n        else:\n            raise ValueError('%s is not a valid spatial lookup for %s.' %\n                             (lookup_type, self.__class__.__name__))\n\n    def get_prep_lookup(self, lookup_type, value):\n        if lookup_type == 'isnull':\n            return bool(value)\n        else:\n            return self.get_prep_value(value)\n\n    def get_db_prep_save(self, value, connection):\n        \"Prepares the value for saving in the database.\"\n        if value is None:\n            return None\n        else:\n            return connection.ops.Adapter(self.get_prep_value(value))\n\n    def get_placeholder(self, value, connection):\n        \"\"\"\n        Returns the placeholder for the geometry column for the\n        given value.\n        \"\"\"\n        return connection.ops.get_geom_placeholder(self, value)\n\n# The OpenGIS Geometry Type Fields\nclass PointField(GeometryField):\n    geom_type = 'POINT'\n    description = _(\"Point\")\n\nclass LineStringField(GeometryField):\n    geom_type = 'LINESTRING'\n    description = _(\"Line string\")\n\nclass PolygonField(GeometryField):\n    geom_type = 'POLYGON'\n    description = _(\"Polygon\")\n\nclass MultiPointField(GeometryField):\n    geom_type = 'MULTIPOINT'\n    description = _(\"Multi-point\")\n\nclass MultiLineStringField(GeometryField):\n    geom_type = 'MULTILINESTRING'\n    description = _(\"Multi-line string\")\n\nclass MultiPolygonField(GeometryField):\n    geom_type = 'MULTIPOLYGON'\n    description = _(\"Multi polygon\")\n\nclass GeometryCollectionField(GeometryField):\n    geom_type = 'GEOMETRYCOLLECTION'\n    description = _(\"Geometry collection\")\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/db/models/manager.py",
    "content": "from django.db.models.manager import Manager\nfrom django.contrib.gis.db.models.query import GeoQuerySet\n\nclass GeoManager(Manager):\n    \"Overrides Manager to return Geographic QuerySets.\"\n\n    # This manager should be used for queries on related fields\n    # so that geometry columns on Oracle and MySQL are selected\n    # properly.\n    use_for_related_fields = True\n\n    def get_query_set(self):\n        return GeoQuerySet(self.model, using=self._db)\n\n    def area(self, *args, **kwargs):\n        return self.get_query_set().area(*args, **kwargs)\n\n    def centroid(self, *args, **kwargs):\n        return self.get_query_set().centroid(*args, **kwargs)\n\n    def collect(self, *args, **kwargs):\n        return self.get_query_set().collect(*args, **kwargs)\n\n    def difference(self, *args, **kwargs):\n        return self.get_query_set().difference(*args, **kwargs)\n\n    def distance(self, *args, **kwargs):\n        return self.get_query_set().distance(*args, **kwargs)\n\n    def envelope(self, *args, **kwargs):\n        return self.get_query_set().envelope(*args, **kwargs)\n\n    def extent(self, *args, **kwargs):\n        return self.get_query_set().extent(*args, **kwargs)\n\n    def extent3d(self, *args, **kwargs):\n        return self.get_query_set().extent3d(*args, **kwargs)\n\n    def force_rhr(self, *args, **kwargs):\n        return self.get_query_set().force_rhr(*args, **kwargs)\n\n    def geohash(self, *args, **kwargs):\n        return self.get_query_set().geohash(*args, **kwargs)\n\n    def geojson(self, *args, **kwargs):\n        return self.get_query_set().geojson(*args, **kwargs)\n\n    def gml(self, *args, **kwargs):\n        return self.get_query_set().gml(*args, **kwargs)\n\n    def intersection(self, *args, **kwargs):\n        return self.get_query_set().intersection(*args, **kwargs)\n\n    def kml(self, *args, **kwargs):\n        return self.get_query_set().kml(*args, **kwargs)\n\n    def length(self, *args, **kwargs):\n        return self.get_query_set().length(*args, **kwargs)\n\n    def make_line(self, *args, **kwargs):\n        return self.get_query_set().make_line(*args, **kwargs)\n\n    def mem_size(self, *args, **kwargs):\n        return self.get_query_set().mem_size(*args, **kwargs)\n\n    def num_geom(self, *args, **kwargs):\n        return self.get_query_set().num_geom(*args, **kwargs)\n\n    def num_points(self, *args, **kwargs):\n        return self.get_query_set().num_points(*args, **kwargs)\n\n    def perimeter(self, *args, **kwargs):\n        return self.get_query_set().perimeter(*args, **kwargs)\n\n    def point_on_surface(self, *args, **kwargs):\n        return self.get_query_set().point_on_surface(*args, **kwargs)\n\n    def reverse_geom(self, *args, **kwargs):\n        return self.get_query_set().reverse_geom(*args, **kwargs)\n\n    def scale(self, *args, **kwargs):\n        return self.get_query_set().scale(*args, **kwargs)\n\n    def snap_to_grid(self, *args, **kwargs):\n        return self.get_query_set().snap_to_grid(*args, **kwargs)\n\n    def svg(self, *args, **kwargs):\n        return self.get_query_set().svg(*args, **kwargs)\n\n    def sym_difference(self, *args, **kwargs):\n        return self.get_query_set().sym_difference(*args, **kwargs)\n\n    def transform(self, *args, **kwargs):\n        return self.get_query_set().transform(*args, **kwargs)\n\n    def translate(self, *args, **kwargs):\n        return self.get_query_set().translate(*args, **kwargs)\n\n    def union(self, *args, **kwargs):\n        return self.get_query_set().union(*args, **kwargs)\n\n    def unionagg(self, *args, **kwargs):\n        return self.get_query_set().unionagg(*args, **kwargs)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/db/models/proxy.py",
    "content": "\"\"\"\nThe GeometryProxy object, allows for lazy-geometries.  The proxy uses\nPython descriptors for instantiating and setting Geometry objects\ncorresponding to geographic model fields.\n\nThanks to Robert Coup for providing this functionality (see #4322).\n\"\"\"\nfrom django.contrib.gis import memoryview\nfrom django.utils import six\n\nclass GeometryProxy(object):\n    def __init__(self, klass, field):\n        \"\"\"\n        Proxy initializes on the given Geometry class (not an instance) and\n        the GeometryField.\n        \"\"\"\n        self._field = field\n        self._klass = klass\n\n    def __get__(self, obj, type=None):\n        \"\"\"\n        This accessor retrieves the geometry, initializing it using the geometry\n        class specified during initialization and the HEXEWKB value of the field.\n        Currently, only GEOS or OGR geometries are supported.\n        \"\"\"\n        if obj is None:\n            # Accessed on a class, not an instance\n            return self\n\n        # Getting the value of the field.\n        geom_value = obj.__dict__[self._field.attname]\n\n        if isinstance(geom_value, self._klass):\n            geom = geom_value\n        elif (geom_value is None) or (geom_value==''):\n            geom = None\n        else:\n            # Otherwise, a Geometry object is built using the field's contents,\n            # and the model's corresponding attribute is set.\n            geom = self._klass(geom_value)\n            setattr(obj, self._field.attname, geom)\n        return geom\n\n    def __set__(self, obj, value):\n        \"\"\"\n        This accessor sets the proxied geometry with the geometry class\n        specified during initialization.  Values of None, HEXEWKB, or WKT may\n        be used to set the geometry as well.\n        \"\"\"\n        # The OGC Geometry type of the field.\n        gtype = self._field.geom_type\n\n        # The geometry type must match that of the field -- unless the\n        # general GeometryField is used.\n        if isinstance(value, self._klass) and (str(value.geom_type).upper() == gtype or gtype == 'GEOMETRY'):\n            # Assigning the SRID to the geometry.\n            if value.srid is None: value.srid = self._field.srid\n        elif value is None or isinstance(value, six.string_types + (memoryview,)):\n            # Set with None, WKT, HEX, or WKB\n            pass\n        else:\n            raise TypeError('cannot set %s GeometryProxy with value of type: %s' % (obj.__class__.__name__, type(value)))\n\n        # Setting the objects dictionary with the value, and returning.\n        obj.__dict__[self._field.attname] = value\n        return value\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/db/models/query.py",
    "content": "from django.db import connections\nfrom django.db.models.query import QuerySet, ValuesQuerySet, ValuesListQuerySet\n\nfrom django.contrib.gis import memoryview\nfrom django.contrib.gis.db.models import aggregates\nfrom django.contrib.gis.db.models.fields import get_srid_info, PointField, LineStringField\nfrom django.contrib.gis.db.models.sql import AreaField, DistanceField, GeomField, GeoQuery\nfrom django.contrib.gis.geometry.backend import Geometry\nfrom django.contrib.gis.measure import Area, Distance\n\nfrom django.utils import six\n\n\nclass GeoQuerySet(QuerySet):\n    \"The Geographic QuerySet.\"\n\n    ### Methods overloaded from QuerySet ###\n    def __init__(self, model=None, query=None, using=None):\n        super(GeoQuerySet, self).__init__(model=model, query=query, using=using)\n        self.query = query or GeoQuery(self.model)\n\n    def values(self, *fields):\n        return self._clone(klass=GeoValuesQuerySet, setup=True, _fields=fields)\n\n    def values_list(self, *fields, **kwargs):\n        flat = kwargs.pop('flat', False)\n        if kwargs:\n            raise TypeError('Unexpected keyword arguments to values_list: %s'\n                    % (list(kwargs),))\n        if flat and len(fields) > 1:\n            raise TypeError(\"'flat' is not valid when values_list is called with more than one field.\")\n        return self._clone(klass=GeoValuesListQuerySet, setup=True, flat=flat,\n                           _fields=fields)\n\n    ### GeoQuerySet Methods ###\n    def area(self, tolerance=0.05, **kwargs):\n        \"\"\"\n        Returns the area of the geographic field in an `area` attribute on\n        each element of this GeoQuerySet.\n        \"\"\"\n        # Peforming setup here rather than in `_spatial_attribute` so that\n        # we can get the units for `AreaField`.\n        procedure_args, geo_field = self._spatial_setup('area', field_name=kwargs.get('field_name', None))\n        s = {'procedure_args' : procedure_args,\n             'geo_field' : geo_field,\n             'setup' : False,\n             }\n        connection = connections[self.db]\n        backend = connection.ops\n        if backend.oracle:\n            s['procedure_fmt'] = '%(geo_col)s,%(tolerance)s'\n            s['procedure_args']['tolerance'] = tolerance\n            s['select_field'] = AreaField('sq_m') # Oracle returns area in units of meters.\n        elif backend.postgis or backend.spatialite:\n            if backend.geography:\n                # Geography fields support area calculation, returns square meters.\n                s['select_field'] = AreaField('sq_m')\n            elif not geo_field.geodetic(connection):\n                # Getting the area units of the geographic field.\n                s['select_field'] = AreaField(Area.unit_attname(geo_field.units_name(connection)))\n            else:\n                # TODO: Do we want to support raw number areas for geodetic fields?\n                raise Exception('Area on geodetic coordinate systems not supported.')\n        return self._spatial_attribute('area', s, **kwargs)\n\n    def centroid(self, **kwargs):\n        \"\"\"\n        Returns the centroid of the geographic field in a `centroid`\n        attribute on each element of this GeoQuerySet.\n        \"\"\"\n        return self._geom_attribute('centroid', **kwargs)\n\n    def collect(self, **kwargs):\n        \"\"\"\n        Performs an aggregate collect operation on the given geometry field.\n        This is analagous to a union operation, but much faster because\n        boundaries are not dissolved.\n        \"\"\"\n        return self._spatial_aggregate(aggregates.Collect, **kwargs)\n\n    def difference(self, geom, **kwargs):\n        \"\"\"\n        Returns the spatial difference of the geographic field in a `difference`\n        attribute on each element of this GeoQuerySet.\n        \"\"\"\n        return self._geomset_attribute('difference', geom, **kwargs)\n\n    def distance(self, geom, **kwargs):\n        \"\"\"\n        Returns the distance from the given geographic field name to the\n        given geometry in a `distance` attribute on each element of the\n        GeoQuerySet.\n\n        Keyword Arguments:\n         `spheroid`  => If the geometry field is geodetic and PostGIS is\n                        the spatial database, then the more accurate\n                        spheroid calculation will be used instead of the\n                        quicker sphere calculation.\n\n         `tolerance` => Used only for Oracle. The tolerance is\n                        in meters -- a default of 5 centimeters (0.05)\n                        is used.\n        \"\"\"\n        return self._distance_attribute('distance', geom, **kwargs)\n\n    def envelope(self, **kwargs):\n        \"\"\"\n        Returns a Geometry representing the bounding box of the\n        Geometry field in an `envelope` attribute on each element of\n        the GeoQuerySet.\n        \"\"\"\n        return self._geom_attribute('envelope', **kwargs)\n\n    def extent(self, **kwargs):\n        \"\"\"\n        Returns the extent (aggregate) of the features in the GeoQuerySet.  The\n        extent will be returned as a 4-tuple, consisting of (xmin, ymin, xmax, ymax).\n        \"\"\"\n        return self._spatial_aggregate(aggregates.Extent, **kwargs)\n\n    def extent3d(self, **kwargs):\n        \"\"\"\n        Returns the aggregate extent, in 3D, of the features in the\n        GeoQuerySet. It is returned as a 6-tuple, comprising:\n          (xmin, ymin, zmin, xmax, ymax, zmax).\n        \"\"\"\n        return self._spatial_aggregate(aggregates.Extent3D, **kwargs)\n\n    def force_rhr(self, **kwargs):\n        \"\"\"\n        Returns a modified version of the Polygon/MultiPolygon in which\n        all of the vertices follow the Right-Hand-Rule.  By default,\n        this is attached as the `force_rhr` attribute on each element\n        of the GeoQuerySet.\n        \"\"\"\n        return self._geom_attribute('force_rhr', **kwargs)\n\n    def geojson(self, precision=8, crs=False, bbox=False, **kwargs):\n        \"\"\"\n        Returns a GeoJSON representation of the geomtry field in a `geojson`\n        attribute on each element of the GeoQuerySet.\n\n        The `crs` and `bbox` keywords may be set to True if the users wants\n        the coordinate reference system and the bounding box to be included\n        in the GeoJSON representation of the geometry.\n        \"\"\"\n        backend = connections[self.db].ops\n        if not backend.geojson:\n            raise NotImplementedError('Only PostGIS 1.3.4+ and SpatiaLite 3.0+ '\n                                      'support GeoJSON serialization.')\n\n        if not isinstance(precision, six.integer_types):\n            raise TypeError('Precision keyword must be set with an integer.')\n\n        # Setting the options flag -- which depends on which version of\n        # PostGIS we're using. SpatiaLite only uses the first group of options.\n        if backend.spatial_version >= (1, 4, 0):\n            options = 0\n            if crs and bbox: options = 3\n            elif bbox: options = 1\n            elif crs: options = 2\n        else:\n            options = 0\n            if crs and bbox: options = 3\n            elif crs: options = 1\n            elif bbox: options = 2\n        s = {'desc' : 'GeoJSON',\n             'procedure_args' : {'precision' : precision, 'options' : options},\n             'procedure_fmt' : '%(geo_col)s,%(precision)s,%(options)s',\n             }\n        return self._spatial_attribute('geojson', s, **kwargs)\n\n    def geohash(self, precision=20, **kwargs):\n        \"\"\"\n        Returns a GeoHash representation of the given field in a `geohash`\n        attribute on each element of the GeoQuerySet.\n\n        The `precision` keyword may be used to custom the number of\n        _characters_ used in the output GeoHash, the default is 20.\n        \"\"\"\n        s = {'desc' : 'GeoHash',\n             'procedure_args': {'precision': precision},\n             'procedure_fmt': '%(geo_col)s,%(precision)s',\n             }\n        return self._spatial_attribute('geohash', s, **kwargs)\n\n    def gml(self, precision=8, version=2, **kwargs):\n        \"\"\"\n        Returns GML representation of the given field in a `gml` attribute\n        on each element of the GeoQuerySet.\n        \"\"\"\n        backend = connections[self.db].ops\n        s = {'desc' : 'GML', 'procedure_args' : {'precision' : precision}}\n        if backend.postgis:\n            # PostGIS AsGML() aggregate function parameter order depends on the\n            # version -- uggh.\n            if backend.spatial_version > (1, 3, 1):\n                s['procedure_fmt'] = '%(version)s,%(geo_col)s,%(precision)s'\n            else:\n                s['procedure_fmt'] = '%(geo_col)s,%(precision)s,%(version)s'\n            s['procedure_args'] = {'precision' : precision, 'version' : version}\n\n        return self._spatial_attribute('gml', s, **kwargs)\n\n    def intersection(self, geom, **kwargs):\n        \"\"\"\n        Returns the spatial intersection of the Geometry field in\n        an `intersection` attribute on each element of this\n        GeoQuerySet.\n        \"\"\"\n        return self._geomset_attribute('intersection', geom, **kwargs)\n\n    def kml(self, **kwargs):\n        \"\"\"\n        Returns KML representation of the geometry field in a `kml`\n        attribute on each element of this GeoQuerySet.\n        \"\"\"\n        s = {'desc' : 'KML',\n             'procedure_fmt' : '%(geo_col)s,%(precision)s',\n             'procedure_args' : {'precision' : kwargs.pop('precision', 8)},\n             }\n        return self._spatial_attribute('kml', s, **kwargs)\n\n    def length(self, **kwargs):\n        \"\"\"\n        Returns the length of the geometry field as a `Distance` object\n        stored in a `length` attribute on each element of this GeoQuerySet.\n        \"\"\"\n        return self._distance_attribute('length', None, **kwargs)\n\n    def make_line(self, **kwargs):\n        \"\"\"\n        Creates a linestring from all of the PointField geometries in the\n        this GeoQuerySet and returns it.  This is a spatial aggregate\n        method, and thus returns a geometry rather than a GeoQuerySet.\n        \"\"\"\n        return self._spatial_aggregate(aggregates.MakeLine, geo_field_type=PointField, **kwargs)\n\n    def mem_size(self, **kwargs):\n        \"\"\"\n        Returns the memory size (number of bytes) that the geometry field takes\n        in a `mem_size` attribute  on each element of this GeoQuerySet.\n        \"\"\"\n        return self._spatial_attribute('mem_size', {}, **kwargs)\n\n    def num_geom(self, **kwargs):\n        \"\"\"\n        Returns the number of geometries if the field is a\n        GeometryCollection or Multi* Field in a `num_geom`\n        attribute on each element of this GeoQuerySet; otherwise\n        the sets with None.\n        \"\"\"\n        return self._spatial_attribute('num_geom', {}, **kwargs)\n\n    def num_points(self, **kwargs):\n        \"\"\"\n        Returns the number of points in the first linestring in the\n        Geometry field in a `num_points` attribute on each element of\n        this GeoQuerySet; otherwise sets with None.\n        \"\"\"\n        return self._spatial_attribute('num_points', {}, **kwargs)\n\n    def perimeter(self, **kwargs):\n        \"\"\"\n        Returns the perimeter of the geometry field as a `Distance` object\n        stored in a `perimeter` attribute on each element of this GeoQuerySet.\n        \"\"\"\n        return self._distance_attribute('perimeter', None, **kwargs)\n\n    def point_on_surface(self, **kwargs):\n        \"\"\"\n        Returns a Point geometry guaranteed to lie on the surface of the\n        Geometry field in a `point_on_surface` attribute on each element\n        of this GeoQuerySet; otherwise sets with None.\n        \"\"\"\n        return self._geom_attribute('point_on_surface', **kwargs)\n\n    def reverse_geom(self, **kwargs):\n        \"\"\"\n        Reverses the coordinate order of the geometry, and attaches as a\n        `reverse` attribute on each element of this GeoQuerySet.\n        \"\"\"\n        s = {'select_field' : GeomField(),}\n        kwargs.setdefault('model_att', 'reverse_geom')\n        if connections[self.db].ops.oracle:\n            s['geo_field_type'] = LineStringField\n        return self._spatial_attribute('reverse', s, **kwargs)\n\n    def scale(self, x, y, z=0.0, **kwargs):\n        \"\"\"\n        Scales the geometry to a new size by multiplying the ordinates\n        with the given x,y,z scale factors.\n        \"\"\"\n        if connections[self.db].ops.spatialite:\n            if z != 0.0:\n                raise NotImplementedError('SpatiaLite does not support 3D scaling.')\n            s = {'procedure_fmt' : '%(geo_col)s,%(x)s,%(y)s',\n                 'procedure_args' : {'x' : x, 'y' : y},\n                 'select_field' : GeomField(),\n                 }\n        else:\n            s = {'procedure_fmt' : '%(geo_col)s,%(x)s,%(y)s,%(z)s',\n                 'procedure_args' : {'x' : x, 'y' : y, 'z' : z},\n                 'select_field' : GeomField(),\n                 }\n        return self._spatial_attribute('scale', s, **kwargs)\n\n    def snap_to_grid(self, *args, **kwargs):\n        \"\"\"\n        Snap all points of the input geometry to the grid.  How the\n        geometry is snapped to the grid depends on how many arguments\n        were given:\n          - 1 argument : A single size to snap both the X and Y grids to.\n          - 2 arguments: X and Y sizes to snap the grid to.\n          - 4 arguments: X, Y sizes and the X, Y origins.\n        \"\"\"\n        if False in [isinstance(arg, (float,) + six.integer_types) for arg in args]:\n            raise TypeError('Size argument(s) for the grid must be a float or integer values.')\n\n        nargs = len(args)\n        if nargs == 1:\n            size = args[0]\n            procedure_fmt = '%(geo_col)s,%(size)s'\n            procedure_args = {'size' : size}\n        elif nargs == 2:\n            xsize, ysize = args\n            procedure_fmt = '%(geo_col)s,%(xsize)s,%(ysize)s'\n            procedure_args = {'xsize' : xsize, 'ysize' : ysize}\n        elif nargs == 4:\n            xsize, ysize, xorigin, yorigin = args\n            procedure_fmt = '%(geo_col)s,%(xorigin)s,%(yorigin)s,%(xsize)s,%(ysize)s'\n            procedure_args = {'xsize' : xsize, 'ysize' : ysize,\n                              'xorigin' : xorigin, 'yorigin' : yorigin}\n        else:\n            raise ValueError('Must provide 1, 2, or 4 arguments to `snap_to_grid`.')\n\n        s = {'procedure_fmt' : procedure_fmt,\n             'procedure_args' : procedure_args,\n             'select_field' : GeomField(),\n             }\n\n        return self._spatial_attribute('snap_to_grid', s, **kwargs)\n\n    def svg(self, relative=False, precision=8, **kwargs):\n        \"\"\"\n        Returns SVG representation of the geographic field in a `svg`\n        attribute on each element of this GeoQuerySet.\n\n        Keyword Arguments:\n         `relative`  => If set to True, this will evaluate the path in\n                        terms of relative moves (rather than absolute).\n\n         `precision` => May be used to set the maximum number of decimal\n                        digits used in output (defaults to 8).\n        \"\"\"\n        relative = int(bool(relative))\n        if not isinstance(precision, six.integer_types):\n            raise TypeError('SVG precision keyword argument must be an integer.')\n        s = {'desc' : 'SVG',\n             'procedure_fmt' : '%(geo_col)s,%(rel)s,%(precision)s',\n             'procedure_args' : {'rel' : relative,\n                                 'precision' : precision,\n                                 }\n             }\n        return self._spatial_attribute('svg', s, **kwargs)\n\n    def sym_difference(self, geom, **kwargs):\n        \"\"\"\n        Returns the symmetric difference of the geographic field in a\n        `sym_difference` attribute on each element of this GeoQuerySet.\n        \"\"\"\n        return self._geomset_attribute('sym_difference', geom, **kwargs)\n\n    def translate(self, x, y, z=0.0, **kwargs):\n        \"\"\"\n        Translates the geometry to a new location using the given numeric\n        parameters as offsets.\n        \"\"\"\n        if connections[self.db].ops.spatialite:\n            if z != 0.0:\n                raise NotImplementedError('SpatiaLite does not support 3D translation.')\n            s = {'procedure_fmt' : '%(geo_col)s,%(x)s,%(y)s',\n                 'procedure_args' : {'x' : x, 'y' : y},\n                 'select_field' : GeomField(),\n                 }\n        else:\n            s = {'procedure_fmt' : '%(geo_col)s,%(x)s,%(y)s,%(z)s',\n                 'procedure_args' : {'x' : x, 'y' : y, 'z' : z},\n                 'select_field' : GeomField(),\n                 }\n        return self._spatial_attribute('translate', s, **kwargs)\n\n    def transform(self, srid=4326, **kwargs):\n        \"\"\"\n        Transforms the given geometry field to the given SRID.  If no SRID is\n        provided, the transformation will default to using 4326 (WGS84).\n        \"\"\"\n        if not isinstance(srid, six.integer_types):\n            raise TypeError('An integer SRID must be provided.')\n        field_name = kwargs.get('field_name', None)\n        tmp, geo_field = self._spatial_setup('transform', field_name=field_name)\n\n        # Getting the selection SQL for the given geographic field.\n        field_col = self._geocol_select(geo_field, field_name)\n\n        # Why cascading substitutions? Because spatial backends like\n        # Oracle and MySQL already require a function call to convert to text, thus\n        # when there's also a transformation we need to cascade the substitutions.\n        # For example, 'SDO_UTIL.TO_WKTGEOMETRY(SDO_CS.TRANSFORM( ... )'\n        geo_col = self.query.custom_select.get(geo_field, field_col)\n\n        # Setting the key for the field's column with the custom SELECT SQL to\n        # override the geometry column returned from the database.\n        custom_sel = '%s(%s, %s)' % (connections[self.db].ops.transform, geo_col, srid)\n        # TODO: Should we have this as an alias?\n        # custom_sel = '(%s(%s, %s)) AS %s' % (SpatialBackend.transform, geo_col, srid, qn(geo_field.name))\n        self.query.transformed_srid = srid # So other GeoQuerySet methods\n        self.query.custom_select[geo_field] = custom_sel\n        return self._clone()\n\n    def union(self, geom, **kwargs):\n        \"\"\"\n        Returns the union of the geographic field with the given\n        Geometry in a `union` attribute on each element of this GeoQuerySet.\n        \"\"\"\n        return self._geomset_attribute('union', geom, **kwargs)\n\n    def unionagg(self, **kwargs):\n        \"\"\"\n        Performs an aggregate union on the given geometry field.  Returns\n        None if the GeoQuerySet is empty.  The `tolerance` keyword is for\n        Oracle backends only.\n        \"\"\"\n        return self._spatial_aggregate(aggregates.Union, **kwargs)\n\n    ### Private API -- Abstracted DRY routines. ###\n    def _spatial_setup(self, att, desc=None, field_name=None, geo_field_type=None):\n        \"\"\"\n        Performs set up for executing the spatial function.\n        \"\"\"\n        # Does the spatial backend support this?\n        connection = connections[self.db]\n        func = getattr(connection.ops, att, False)\n        if desc is None: desc = att\n        if not func:\n            raise NotImplementedError('%s stored procedure not available on '\n                                      'the %s backend.' %\n                                      (desc, connection.ops.name))\n\n        # Initializing the procedure arguments.\n        procedure_args = {'function' : func}\n\n        # Is there a geographic field in the model to perform this\n        # operation on?\n        geo_field = self.query._geo_field(field_name)\n        if not geo_field:\n            raise TypeError('%s output only available on GeometryFields.' % func)\n\n        # If the `geo_field_type` keyword was used, then enforce that\n        # type limitation.\n        if not geo_field_type is None and not isinstance(geo_field, geo_field_type):\n            raise TypeError('\"%s\" stored procedures may only be called on %ss.' % (func, geo_field_type.__name__))\n\n        # Setting the procedure args.\n        procedure_args['geo_col'] = self._geocol_select(geo_field, field_name)\n\n        return procedure_args, geo_field\n\n    def _spatial_aggregate(self, aggregate, field_name=None,\n                           geo_field_type=None, tolerance=0.05):\n        \"\"\"\n        DRY routine for calling aggregate spatial stored procedures and\n        returning their result to the caller of the function.\n        \"\"\"\n        # Getting the field the geographic aggregate will be called on.\n        geo_field = self.query._geo_field(field_name)\n        if not geo_field:\n            raise TypeError('%s aggregate only available on GeometryFields.' % aggregate.name)\n\n        # Checking if there are any geo field type limitations on this\n        # aggregate (e.g. ST_Makeline only operates on PointFields).\n        if not geo_field_type is None and not isinstance(geo_field, geo_field_type):\n            raise TypeError('%s aggregate may only be called on %ss.' % (aggregate.name, geo_field_type.__name__))\n\n        # Getting the string expression of the field name, as this is the\n        # argument taken by `Aggregate` objects.\n        agg_col = field_name or geo_field.name\n\n        # Adding any keyword parameters for the Aggregate object. Oracle backends\n        # in particular need an additional `tolerance` parameter.\n        agg_kwargs = {}\n        if connections[self.db].ops.oracle: agg_kwargs['tolerance'] = tolerance\n\n        # Calling the QuerySet.aggregate, and returning only the value of the aggregate.\n        return self.aggregate(geoagg=aggregate(agg_col, **agg_kwargs))['geoagg']\n\n    def _spatial_attribute(self, att, settings, field_name=None, model_att=None):\n        \"\"\"\n        DRY routine for calling a spatial stored procedure on a geometry column\n        and attaching its output as an attribute of the model.\n\n        Arguments:\n         att:\n          The name of the spatial attribute that holds the spatial\n          SQL function to call.\n\n         settings:\n          Dictonary of internal settings to customize for the spatial procedure.\n\n        Public Keyword Arguments:\n\n         field_name:\n          The name of the geographic field to call the spatial\n          function on.  May also be a lookup to a geometry field\n          as part of a foreign key relation.\n\n         model_att:\n          The name of the model attribute to attach the output of\n          the spatial function to.\n        \"\"\"\n        # Default settings.\n        settings.setdefault('desc', None)\n        settings.setdefault('geom_args', ())\n        settings.setdefault('geom_field', None)\n        settings.setdefault('procedure_args', {})\n        settings.setdefault('procedure_fmt', '%(geo_col)s')\n        settings.setdefault('select_params', [])\n\n        connection = connections[self.db]\n        backend = connection.ops\n\n        # Performing setup for the spatial column, unless told not to.\n        if settings.get('setup', True):\n            default_args, geo_field = self._spatial_setup(att, desc=settings['desc'], field_name=field_name,\n                                                          geo_field_type=settings.get('geo_field_type', None))\n            for k, v in six.iteritems(default_args): settings['procedure_args'].setdefault(k, v)\n        else:\n            geo_field = settings['geo_field']\n\n        # The attribute to attach to the model.\n        if not isinstance(model_att, six.string_types): model_att = att\n\n        # Special handling for any argument that is a geometry.\n        for name in settings['geom_args']:\n            # Using the field's get_placeholder() routine to get any needed\n            # transformation SQL.\n            geom = geo_field.get_prep_value(settings['procedure_args'][name])\n            params = geo_field.get_db_prep_lookup('contains', geom, connection=connection)\n            geom_placeholder = geo_field.get_placeholder(geom, connection)\n\n            # Replacing the procedure format with that of any needed\n            # transformation SQL.\n            old_fmt = '%%(%s)s' % name\n            new_fmt = geom_placeholder % '%%s'\n            settings['procedure_fmt'] = settings['procedure_fmt'].replace(old_fmt, new_fmt)\n            settings['select_params'].extend(params)\n\n        # Getting the format for the stored procedure.\n        fmt = '%%(function)s(%s)' % settings['procedure_fmt']\n\n        # If the result of this function needs to be converted.\n        if settings.get('select_field', False):\n            sel_fld = settings['select_field']\n            if isinstance(sel_fld, GeomField) and backend.select:\n                self.query.custom_select[model_att] = backend.select\n            if connection.ops.oracle:\n                sel_fld.empty_strings_allowed = False\n            self.query.extra_select_fields[model_att] = sel_fld\n\n        # Finally, setting the extra selection attribute with\n        # the format string expanded with the stored procedure\n        # arguments.\n        return self.extra(select={model_att : fmt % settings['procedure_args']},\n                          select_params=settings['select_params'])\n\n    def _distance_attribute(self, func, geom=None, tolerance=0.05, spheroid=False, **kwargs):\n        \"\"\"\n        DRY routine for GeoQuerySet distance attribute routines.\n        \"\"\"\n        # Setting up the distance procedure arguments.\n        procedure_args, geo_field = self._spatial_setup(func, field_name=kwargs.get('field_name', None))\n\n        # If geodetic defaulting distance attribute to meters (Oracle and\n        # PostGIS spherical distances return meters).  Otherwise, use the\n        # units of the geometry field.\n        connection = connections[self.db]\n        geodetic = geo_field.geodetic(connection)\n        geography = geo_field.geography\n\n        if geodetic:\n            dist_att = 'm'\n        else:\n            dist_att = Distance.unit_attname(geo_field.units_name(connection))\n\n        # Shortcut booleans for what distance function we're using and\n        # whether the geometry field is 3D.\n        distance = func == 'distance'\n        length = func == 'length'\n        perimeter = func == 'perimeter'\n        if not (distance or length or perimeter):\n            raise ValueError('Unknown distance function: %s' % func)\n        geom_3d = geo_field.dim == 3\n\n        # The field's get_db_prep_lookup() is used to get any\n        # extra distance parameters.  Here we set up the\n        # parameters that will be passed in to field's function.\n        lookup_params = [geom or 'POINT (0 0)', 0]\n\n        # Getting the spatial backend operations.\n        backend = connection.ops\n\n        # If the spheroid calculation is desired, either by the `spheroid`\n        # keyword or when calculating the length of geodetic field, make\n        # sure the 'spheroid' distance setting string is passed in so we\n        # get the correct spatial stored procedure.\n        if spheroid or (backend.postgis and geodetic and\n                        (not geography) and length):\n            lookup_params.append('spheroid')\n        lookup_params = geo_field.get_prep_value(lookup_params)\n        params = geo_field.get_db_prep_lookup('distance_lte', lookup_params, connection=connection)\n\n        # The `geom_args` flag is set to true if a geometry parameter was\n        # passed in.\n        geom_args = bool(geom)\n\n        if backend.oracle:\n            if distance:\n                procedure_fmt = '%(geo_col)s,%(geom)s,%(tolerance)s'\n            elif length or perimeter:\n                procedure_fmt = '%(geo_col)s,%(tolerance)s'\n            procedure_args['tolerance'] = tolerance\n        else:\n            # Getting whether this field is in units of degrees since the field may have\n            # been transformed via the `transform` GeoQuerySet method.\n            if self.query.transformed_srid:\n                u, unit_name, s = get_srid_info(self.query.transformed_srid, connection)\n                geodetic = unit_name in geo_field.geodetic_units\n\n            if backend.spatialite and geodetic:\n                raise ValueError('SQLite does not support linear distance calculations on geodetic coordinate systems.')\n\n            if distance:\n                if self.query.transformed_srid:\n                    # Setting the `geom_args` flag to false because we want to handle\n                    # transformation SQL here, rather than the way done by default\n                    # (which will transform to the original SRID of the field rather\n                    #  than to what was transformed to).\n                    geom_args = False\n                    procedure_fmt = '%s(%%(geo_col)s, %s)' % (backend.transform, self.query.transformed_srid)\n                    if geom.srid is None or geom.srid == self.query.transformed_srid:\n                        # If the geom parameter srid is None, it is assumed the coordinates\n                        # are in the transformed units.  A placeholder is used for the\n                        # geometry parameter.  `GeomFromText` constructor is also needed\n                        # to wrap geom placeholder for SpatiaLite.\n                        if backend.spatialite:\n                            procedure_fmt += ', %s(%%%%s, %s)' % (backend.from_text, self.query.transformed_srid)\n                        else:\n                            procedure_fmt += ', %%s'\n                    else:\n                        # We need to transform the geom to the srid specified in `transform()`,\n                        # so wrapping the geometry placeholder in transformation SQL.\n                        # SpatiaLite also needs geometry placeholder wrapped in `GeomFromText`\n                        # constructor.\n                        if backend.spatialite:\n                            procedure_fmt += ', %s(%s(%%%%s, %s), %s)' % (backend.transform, backend.from_text,\n                                                                          geom.srid, self.query.transformed_srid)\n                        else:\n                            procedure_fmt += ', %s(%%%%s, %s)' % (backend.transform, self.query.transformed_srid)\n                else:\n                    # `transform()` was not used on this GeoQuerySet.\n                    procedure_fmt  = '%(geo_col)s,%(geom)s'\n\n                if not geography and geodetic:\n                    # Spherical distance calculation is needed (because the geographic\n                    # field is geodetic). However, the PostGIS ST_distance_sphere/spheroid()\n                    # procedures may only do queries from point columns to point geometries\n                    # some error checking is required.\n                    if not backend.geography:\n                        if not isinstance(geo_field, PointField):\n                            raise ValueError('Spherical distance calculation only supported on PointFields.')\n                        if not str(Geometry(memoryview(params[0].ewkb)).geom_type) == 'Point':\n                            raise ValueError('Spherical distance calculation only supported with Point Geometry parameters')\n                    # The `function` procedure argument needs to be set differently for\n                    # geodetic distance calculations.\n                    if spheroid:\n                        # Call to distance_spheroid() requires spheroid param as well.\n                        procedure_fmt += \",'%(spheroid)s'\"\n                        procedure_args.update({'function' : backend.distance_spheroid, 'spheroid' : params[1]})\n                    else:\n                        procedure_args.update({'function' : backend.distance_sphere})\n            elif length or perimeter:\n                procedure_fmt = '%(geo_col)s'\n                if not geography and geodetic and length:\n                    # There's no `length_sphere`, and `length_spheroid` also\n                    # works on 3D geometries.\n                    procedure_fmt += \",'%(spheroid)s'\"\n                    procedure_args.update({'function' : backend.length_spheroid, 'spheroid' : params[1]})\n                elif geom_3d and backend.postgis:\n                    # Use 3D variants of perimeter and length routines on PostGIS.\n                    if perimeter:\n                        procedure_args.update({'function' : backend.perimeter3d})\n                    elif length:\n                        procedure_args.update({'function' : backend.length3d})\n\n        # Setting up the settings for `_spatial_attribute`.\n        s = {'select_field' : DistanceField(dist_att),\n             'setup' : False,\n             'geo_field' : geo_field,\n             'procedure_args' : procedure_args,\n             'procedure_fmt' : procedure_fmt,\n             }\n        if geom_args:\n            s['geom_args'] = ('geom',)\n            s['procedure_args']['geom'] = geom\n        elif geom:\n            # The geometry is passed in as a parameter because we handled\n            # transformation conditions in this routine.\n            s['select_params'] = [backend.Adapter(geom)]\n        return self._spatial_attribute(func, s, **kwargs)\n\n    def _geom_attribute(self, func, tolerance=0.05, **kwargs):\n        \"\"\"\n        DRY routine for setting up a GeoQuerySet method that attaches a\n        Geometry attribute (e.g., `centroid`, `point_on_surface`).\n        \"\"\"\n        s = {'select_field' : GeomField(),}\n        if connections[self.db].ops.oracle:\n            s['procedure_fmt'] = '%(geo_col)s,%(tolerance)s'\n            s['procedure_args'] = {'tolerance' : tolerance}\n        return self._spatial_attribute(func, s, **kwargs)\n\n    def _geomset_attribute(self, func, geom, tolerance=0.05, **kwargs):\n        \"\"\"\n        DRY routine for setting up a GeoQuerySet method that attaches a\n        Geometry attribute and takes a Geoemtry parameter.  This is used\n        for geometry set-like operations (e.g., intersection, difference,\n        union, sym_difference).\n        \"\"\"\n        s = {'geom_args' : ('geom',),\n             'select_field' : GeomField(),\n             'procedure_fmt' : '%(geo_col)s,%(geom)s',\n             'procedure_args' : {'geom' : geom},\n            }\n        if connections[self.db].ops.oracle:\n            s['procedure_fmt'] += ',%(tolerance)s'\n            s['procedure_args']['tolerance'] = tolerance\n        return self._spatial_attribute(func, s, **kwargs)\n\n    def _geocol_select(self, geo_field, field_name):\n        \"\"\"\n        Helper routine for constructing the SQL to select the geographic\n        column.  Takes into account if the geographic field is in a\n        ForeignKey relation to the current model.\n        \"\"\"\n        opts = self.model._meta\n        if not geo_field in opts.fields:\n            # Is this operation going to be on a related geographic field?\n            # If so, it'll have to be added to the select related information\n            # (e.g., if 'location__point' was given as the field name).\n            self.query.add_select_related([field_name])\n            compiler = self.query.get_compiler(self.db)\n            compiler.pre_sql_setup()\n            rel_table, rel_col = self.query.related_select_cols[self.query.related_select_fields.index(geo_field)]\n            return compiler._field_column(geo_field, rel_table)\n        elif not geo_field in opts.local_fields:\n            # This geographic field is inherited from another model, so we have to\n            # use the db table for the _parent_ model instead.\n            tmp_fld, parent_model, direct, m2m = opts.get_field_by_name(geo_field.name)\n            return self.query.get_compiler(self.db)._field_column(geo_field, parent_model._meta.db_table)\n        else:\n            return self.query.get_compiler(self.db)._field_column(geo_field)\n\nclass GeoValuesQuerySet(ValuesQuerySet):\n    def __init__(self, *args, **kwargs):\n        super(GeoValuesQuerySet, self).__init__(*args, **kwargs)\n        # This flag tells `resolve_columns` to run the values through\n        # `convert_values`.  This ensures that Geometry objects instead\n        # of string values are returned with `values()` or `values_list()`.\n        self.query.geo_values = True\n\nclass GeoValuesListQuerySet(GeoValuesQuerySet, ValuesListQuerySet):\n    pass\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/db/models/sql/__init__.py",
    "content": "from django.contrib.gis.db.models.sql.conversion import AreaField, DistanceField, GeomField\nfrom django.contrib.gis.db.models.sql.query import GeoQuery\nfrom django.contrib.gis.db.models.sql.where import GeoWhereNode\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/db/models/sql/aggregates.py",
    "content": "from django.db.models.sql.aggregates import *\nfrom django.contrib.gis.db.models.fields import GeometryField\n\nclass GeoAggregate(Aggregate):\n    # Default SQL template for spatial aggregates.\n    sql_template = '%(function)s(%(field)s)'\n\n    # Conversion class, if necessary.\n    conversion_class = None\n\n    # Flags for indicating the type of the aggregate.\n    is_extent = False\n\n    def __init__(self, col, source=None, is_summary=False, tolerance=0.05, **extra):\n        super(GeoAggregate, self).__init__(col, source, is_summary, **extra)\n\n        # Required by some Oracle aggregates.\n        self.tolerance = tolerance\n\n        # Can't use geographic aggregates on non-geometry fields.\n        if not isinstance(self.source, GeometryField):\n            raise ValueError('Geospatial aggregates only allowed on geometry fields.')\n\n    def as_sql(self, qn, connection):\n        \"Return the aggregate, rendered as SQL.\"\n\n        if connection.ops.oracle:\n            self.extra['tolerance'] = self.tolerance\n\n        if hasattr(self.col, 'as_sql'):\n            field_name = self.col.as_sql(qn, connection)\n        elif isinstance(self.col, (list, tuple)):\n            field_name = '.'.join([qn(c) for c in self.col])\n        else:\n            field_name = self.col\n\n        sql_template, sql_function = connection.ops.spatial_aggregate_sql(self)\n\n        params = {\n            'function': sql_function,\n            'field': field_name\n        }\n        params.update(self.extra)\n\n        return sql_template % params\n\nclass Collect(GeoAggregate):\n    pass\n\nclass Extent(GeoAggregate):\n    is_extent = '2D'\n\nclass Extent3D(GeoAggregate):\n    is_extent = '3D'\n\nclass MakeLine(GeoAggregate):\n    pass\n\nclass Union(GeoAggregate):\n    pass\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/db/models/sql/compiler.py",
    "content": "try:\n    from itertools import zip_longest\nexcept ImportError:\n    from itertools import izip_longest as zip_longest\n\nfrom django.utils.six.moves import zip\n\nfrom django.db.backends.util import truncate_name, typecast_timestamp\nfrom django.db.models.sql import compiler\nfrom django.db.models.sql.constants import MULTI\nfrom django.utils import six\n\nSQLCompiler = compiler.SQLCompiler\n\nclass GeoSQLCompiler(compiler.SQLCompiler):\n\n    def get_columns(self, with_aliases=False):\n        \"\"\"\n        Return the list of columns to use in the select statement. If no\n        columns have been specified, returns all columns relating to fields in\n        the model.\n\n        If 'with_aliases' is true, any column names that are duplicated\n        (without the table names) are given unique aliases. This is needed in\n        some cases to avoid ambiguitity with nested queries.\n\n        This routine is overridden from Query to handle customized selection of\n        geometry columns.\n        \"\"\"\n        qn = self.quote_name_unless_alias\n        qn2 = self.connection.ops.quote_name\n        result = ['(%s) AS %s' % (self.get_extra_select_format(alias) % col[0], qn2(alias))\n                  for alias, col in six.iteritems(self.query.extra_select)]\n        aliases = set(self.query.extra_select.keys())\n        if with_aliases:\n            col_aliases = aliases.copy()\n        else:\n            col_aliases = set()\n        if self.query.select:\n            only_load = self.deferred_to_columns()\n            # This loop customized for GeoQuery.\n            for col, field in zip(self.query.select, self.query.select_fields):\n                if isinstance(col, (list, tuple)):\n                    alias, column = col\n                    table = self.query.alias_map[alias].table_name\n                    if table in only_load and column not in only_load[table]:\n                        continue\n                    r = self.get_field_select(field, alias, column)\n                    if with_aliases:\n                        if col[1] in col_aliases:\n                            c_alias = 'Col%d' % len(col_aliases)\n                            result.append('%s AS %s' % (r, c_alias))\n                            aliases.add(c_alias)\n                            col_aliases.add(c_alias)\n                        else:\n                            result.append('%s AS %s' % (r, qn2(col[1])))\n                            aliases.add(r)\n                            col_aliases.add(col[1])\n                    else:\n                        result.append(r)\n                        aliases.add(r)\n                        col_aliases.add(col[1])\n                else:\n                    result.append(col.as_sql(qn, self.connection))\n\n                    if hasattr(col, 'alias'):\n                        aliases.add(col.alias)\n                        col_aliases.add(col.alias)\n\n        elif self.query.default_cols:\n            cols, new_aliases = self.get_default_columns(with_aliases,\n                    col_aliases)\n            result.extend(cols)\n            aliases.update(new_aliases)\n\n        max_name_length = self.connection.ops.max_name_length()\n        result.extend([\n                '%s%s' % (\n                    self.get_extra_select_format(alias) % aggregate.as_sql(qn, self.connection),\n                    alias is not None\n                        and ' AS %s' % qn(truncate_name(alias, max_name_length))\n                        or ''\n                    )\n                for alias, aggregate in self.query.aggregate_select.items()\n        ])\n\n        # This loop customized for GeoQuery.\n        for (table, col), field in zip(self.query.related_select_cols, self.query.related_select_fields):\n            r = self.get_field_select(field, table, col)\n            if with_aliases and col in col_aliases:\n                c_alias = 'Col%d' % len(col_aliases)\n                result.append('%s AS %s' % (r, c_alias))\n                aliases.add(c_alias)\n                col_aliases.add(c_alias)\n            else:\n                result.append(r)\n                aliases.add(r)\n                col_aliases.add(col)\n\n        self._select_aliases = aliases\n        return result\n\n    def get_default_columns(self, with_aliases=False, col_aliases=None,\n            start_alias=None, opts=None, as_pairs=False, local_only=False):\n        \"\"\"\n        Computes the default columns for selecting every field in the base\n        model. Will sometimes be called to pull in related models (e.g. via\n        select_related), in which case \"opts\" and \"start_alias\" will be given\n        to provide a starting point for the traversal.\n\n        Returns a list of strings, quoted appropriately for use in SQL\n        directly, as well as a set of aliases used in the select statement (if\n        'as_pairs' is True, returns a list of (alias, col_name) pairs instead\n        of strings as the first component and None as the second component).\n\n        This routine is overridden from Query to handle customized selection of\n        geometry columns.\n        \"\"\"\n        result = []\n        if opts is None:\n            opts = self.query.model._meta\n        aliases = set()\n        only_load = self.deferred_to_columns()\n\n        if start_alias:\n            seen = {None: start_alias}\n        for field, model in opts.get_fields_with_model():\n            # For local fields (even if through proxy) the model should\n            # be None.\n            if model == opts.concrete_model:\n                model = None\n            if local_only and model is not None:\n                continue\n            if start_alias:\n                try:\n                    alias = seen[model]\n                except KeyError:\n                    link_field = opts.get_ancestor_link(model)\n                    alias = self.query.join((start_alias, model._meta.db_table,\n                            link_field.column, model._meta.pk.column))\n                    seen[model] = alias\n            else:\n                # If we're starting from the base model of the queryset, the\n                # aliases will have already been set up in pre_sql_setup(), so\n                # we can save time here.\n                alias = self.query.included_inherited_models[model]\n            table = self.query.alias_map[alias].table_name\n            if table in only_load and field.column not in only_load[table]:\n                continue\n            if as_pairs:\n                result.append((alias, field.column))\n                aliases.add(alias)\n                continue\n            # This part of the function is customized for GeoQuery. We\n            # see if there was any custom selection specified in the\n            # dictionary, and set up the selection format appropriately.\n            field_sel = self.get_field_select(field, alias)\n            if with_aliases and field.column in col_aliases:\n                c_alias = 'Col%d' % len(col_aliases)\n                result.append('%s AS %s' % (field_sel, c_alias))\n                col_aliases.add(c_alias)\n                aliases.add(c_alias)\n            else:\n                r = field_sel\n                result.append(r)\n                aliases.add(r)\n                if with_aliases:\n                    col_aliases.add(field.column)\n        return result, aliases\n\n    def resolve_columns(self, row, fields=()):\n        \"\"\"\n        This routine is necessary so that distances and geometries returned\n        from extra selection SQL get resolved appropriately into Python\n        objects.\n        \"\"\"\n        values = []\n        aliases = list(self.query.extra_select)\n\n        # Have to set a starting row number offset that is used for\n        # determining the correct starting row index -- needed for\n        # doing pagination with Oracle.\n        rn_offset = 0\n        if self.connection.ops.oracle:\n            if self.query.high_mark is not None or self.query.low_mark: rn_offset = 1\n        index_start = rn_offset + len(aliases)\n\n        # Converting any extra selection values (e.g., geometries and\n        # distance objects added by GeoQuerySet methods).\n        values = [self.query.convert_values(v,\n                               self.query.extra_select_fields.get(a, None),\n                               self.connection)\n                  for v, a in zip(row[rn_offset:index_start], aliases)]\n        if self.connection.ops.oracle or getattr(self.query, 'geo_values', False):\n            # We resolve the rest of the columns if we're on Oracle or if\n            # the `geo_values` attribute is defined.\n            for value, field in zip_longest(row[index_start:], fields):\n                values.append(self.query.convert_values(value, field, self.connection))\n        else:\n            values.extend(row[index_start:])\n        return tuple(values)\n\n    #### Routines unique to GeoQuery ####\n    def get_extra_select_format(self, alias):\n        sel_fmt = '%s'\n        if hasattr(self.query, 'custom_select') and alias in self.query.custom_select:\n            sel_fmt = sel_fmt % self.query.custom_select[alias]\n        return sel_fmt\n\n    def get_field_select(self, field, alias=None, column=None):\n        \"\"\"\n        Returns the SELECT SQL string for the given field.  Figures out\n        if any custom selection SQL is needed for the column  The `alias`\n        keyword may be used to manually specify the database table where\n        the column exists, if not in the model associated with this\n        `GeoQuery`.  Similarly, `column` may be used to specify the exact\n        column name, rather than using the `column` attribute on `field`.\n        \"\"\"\n        sel_fmt = self.get_select_format(field)\n        if field in self.query.custom_select:\n            field_sel = sel_fmt % self.query.custom_select[field]\n        else:\n            field_sel = sel_fmt % self._field_column(field, alias, column)\n        return field_sel\n\n    def get_select_format(self, fld):\n        \"\"\"\n        Returns the selection format string, depending on the requirements\n        of the spatial backend.  For example, Oracle and MySQL require custom\n        selection formats in order to retrieve geometries in OGC WKT. For all\n        other fields a simple '%s' format string is returned.\n        \"\"\"\n        if self.connection.ops.select and hasattr(fld, 'geom_type'):\n            # This allows operations to be done on fields in the SELECT,\n            # overriding their values -- used by the Oracle and MySQL\n            # spatial backends to get database values as WKT, and by the\n            # `transform` method.\n            sel_fmt = self.connection.ops.select\n\n            # Because WKT doesn't contain spatial reference information,\n            # the SRID is prefixed to the returned WKT to ensure that the\n            # transformed geometries have an SRID different than that of the\n            # field -- this is only used by `transform` for Oracle and\n            # SpatiaLite backends.\n            if self.query.transformed_srid and ( self.connection.ops.oracle or\n                                                 self.connection.ops.spatialite ):\n                sel_fmt = \"'SRID=%d;'||%s\" % (self.query.transformed_srid, sel_fmt)\n        else:\n            sel_fmt = '%s'\n        return sel_fmt\n\n    # Private API utilities, subject to change.\n    def _field_column(self, field, table_alias=None, column=None):\n        \"\"\"\n        Helper function that returns the database column for the given field.\n        The table and column are returned (quoted) in the proper format, e.g.,\n        `\"geoapp_city\".\"point\"`.  If `table_alias` is not specified, the\n        database table associated with the model of this `GeoQuery` will be\n        used.  If `column` is specified, it will be used instead of the value\n        in `field.column`.\n        \"\"\"\n        if table_alias is None: table_alias = self.query.model._meta.db_table\n        return \"%s.%s\" % (self.quote_name_unless_alias(table_alias),\n                          self.connection.ops.quote_name(column or field.column))\n\nclass SQLInsertCompiler(compiler.SQLInsertCompiler, GeoSQLCompiler):\n    pass\n\nclass SQLDeleteCompiler(compiler.SQLDeleteCompiler, GeoSQLCompiler):\n    pass\n\nclass SQLUpdateCompiler(compiler.SQLUpdateCompiler, GeoSQLCompiler):\n    pass\n\nclass SQLAggregateCompiler(compiler.SQLAggregateCompiler, GeoSQLCompiler):\n    pass\n\nclass SQLDateCompiler(compiler.SQLDateCompiler, GeoSQLCompiler):\n    \"\"\"\n    This is overridden for GeoDjango to properly cast date columns, since\n    `GeoQuery.resolve_columns` is used for spatial values.\n    See #14648, #16757.\n    \"\"\"\n    def results_iter(self):\n        if self.connection.ops.oracle:\n            from django.db.models.fields import DateTimeField\n            fields = [DateTimeField()]\n        else:\n            needs_string_cast = self.connection.features.needs_datetime_string_cast\n\n        offset = len(self.query.extra_select)\n        for rows in self.execute_sql(MULTI):\n            for row in rows:\n                date = row[offset]\n                if self.connection.ops.oracle:\n                    date = self.resolve_columns(row, fields)[offset]\n                elif needs_string_cast:\n                    date = typecast_timestamp(str(date))\n                yield date\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/db/models/sql/conversion.py",
    "content": "\"\"\"\nThis module holds simple classes used by GeoQuery.convert_values\nto convert geospatial values from the database.\n\"\"\"\n\nclass BaseField(object):\n    empty_strings_allowed = True\n    def get_internal_type(self):\n        \"Overloaded method so OracleQuery.convert_values doesn't balk.\"\n        return None\n\nclass AreaField(BaseField):\n    \"Wrapper for Area values.\"\n    def __init__(self, area_att):\n        self.area_att = area_att\n\nclass DistanceField(BaseField):\n    \"Wrapper for Distance values.\"\n    def __init__(self, distance_att):\n        self.distance_att = distance_att\n\nclass GeomField(BaseField):\n    \"\"\"\n    Wrapper for Geometry values.  It is a lightweight alternative to \n    using GeometryField (which requires a SQL query upon instantiation).\n    \"\"\"\n    pass\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/db/models/sql/query.py",
    "content": "from django.db import connections\nfrom django.db.models.query import sql\n\nfrom django.contrib.gis.db.models.fields import GeometryField\nfrom django.contrib.gis.db.models.sql import aggregates as gis_aggregates\nfrom django.contrib.gis.db.models.sql.conversion import AreaField, DistanceField, GeomField\nfrom django.contrib.gis.db.models.sql.where import GeoWhereNode\nfrom django.contrib.gis.geometry.backend import Geometry\nfrom django.contrib.gis.measure import Area, Distance\n\n\nALL_TERMS = set([\n            'bbcontains', 'bboverlaps', 'contained', 'contains',\n            'contains_properly', 'coveredby', 'covers', 'crosses', 'disjoint',\n            'distance_gt', 'distance_gte', 'distance_lt', 'distance_lte',\n            'dwithin', 'equals', 'exact',\n            'intersects', 'overlaps', 'relate', 'same_as', 'touches', 'within',\n            'left', 'right', 'overlaps_left', 'overlaps_right',\n            'overlaps_above', 'overlaps_below',\n            'strictly_above', 'strictly_below'\n            ])\nALL_TERMS.update(sql.constants.QUERY_TERMS)\n\nclass GeoQuery(sql.Query):\n    \"\"\"\n    A single spatial SQL query.\n    \"\"\"\n    # Overridding the valid query terms.\n    query_terms = ALL_TERMS\n    aggregates_module = gis_aggregates\n\n    compiler = 'GeoSQLCompiler'\n\n    #### Methods overridden from the base Query class ####\n    def __init__(self, model, where=GeoWhereNode):\n        super(GeoQuery, self).__init__(model, where)\n        # The following attributes are customized for the GeoQuerySet.\n        # The GeoWhereNode and SpatialBackend classes contain backend-specific\n        # routines and functions.\n        self.custom_select = {}\n        self.transformed_srid = None\n        self.extra_select_fields = {}\n\n    def clone(self, *args, **kwargs):\n        obj = super(GeoQuery, self).clone(*args, **kwargs)\n        # Customized selection dictionary and transformed srid flag have\n        # to also be added to obj.\n        obj.custom_select = self.custom_select.copy()\n        obj.transformed_srid = self.transformed_srid\n        obj.extra_select_fields = self.extra_select_fields.copy()\n        return obj\n\n    def convert_values(self, value, field, connection):\n        \"\"\"\n        Using the same routines that Oracle does we can convert our\n        extra selection objects into Geometry and Distance objects.\n        TODO: Make converted objects 'lazy' for less overhead.\n        \"\"\"\n        if connection.ops.oracle:\n            # Running through Oracle's first.\n            value = super(GeoQuery, self).convert_values(value, field or GeomField(), connection)\n\n        if value is None:\n            # Output from spatial function is NULL (e.g., called\n            # function on a geometry field with NULL value).\n            pass\n        elif isinstance(field, DistanceField):\n            # Using the field's distance attribute, can instantiate\n            # `Distance` with the right context.\n            value = Distance(**{field.distance_att : value})\n        elif isinstance(field, AreaField):\n            value = Area(**{field.area_att : value})\n        elif isinstance(field, (GeomField, GeometryField)) and value:\n            value = Geometry(value)\n        elif field is not None:\n            return super(GeoQuery, self).convert_values(value, field, connection)\n        return value\n\n    def get_aggregation(self, using):\n        # Remove any aggregates marked for reduction from the subquery\n        # and move them to the outer AggregateQuery.\n        connection = connections[using]\n        for alias, aggregate in self.aggregate_select.items():\n            if isinstance(aggregate, gis_aggregates.GeoAggregate):\n                if not getattr(aggregate, 'is_extent', False) or connection.ops.oracle:\n                    self.extra_select_fields[alias] = GeomField()\n        return super(GeoQuery, self).get_aggregation(using)\n\n    def resolve_aggregate(self, value, aggregate, connection):\n        \"\"\"\n        Overridden from GeoQuery's normalize to handle the conversion of\n        GeoAggregate objects.\n        \"\"\"\n        if isinstance(aggregate, self.aggregates_module.GeoAggregate):\n            if aggregate.is_extent:\n                if aggregate.is_extent == '3D':\n                    return connection.ops.convert_extent3d(value)\n                else:\n                    return connection.ops.convert_extent(value)\n            else:\n                return connection.ops.convert_geom(value, aggregate.source)\n        else:\n            return super(GeoQuery, self).resolve_aggregate(value, aggregate, connection)\n\n    # Private API utilities, subject to change.\n    def _geo_field(self, field_name=None):\n        \"\"\"\n        Returns the first Geometry field encountered; or specified via the\n        `field_name` keyword.  The `field_name` may be a string specifying\n        the geometry field on this GeoQuery's model, or a lookup string\n        to a geometry field via a ForeignKey relation.\n        \"\"\"\n        if field_name is None:\n            # Incrementing until the first geographic field is found.\n            for fld in self.model._meta.fields:\n                if isinstance(fld, GeometryField): return fld\n            return False\n        else:\n            # Otherwise, check by the given field name -- which may be\n            # a lookup to a _related_ geographic field.\n            return GeoWhereNode._check_geo_field(self.model._meta, field_name)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/db/models/sql/where.py",
    "content": "from django.db.models.constants import LOOKUP_SEP\nfrom django.db.models.fields import FieldDoesNotExist\nfrom django.db.models.sql.expressions import SQLEvaluator\nfrom django.db.models.sql.where import Constraint, WhereNode\nfrom django.contrib.gis.db.models.fields import GeometryField\n\nclass GeoConstraint(Constraint):\n    \"\"\"\n    This subclass overrides `process` to better handle geographic SQL\n    construction.\n    \"\"\"\n    def __init__(self, init_constraint):\n        self.alias = init_constraint.alias\n        self.col = init_constraint.col\n        self.field = init_constraint.field\n\n    def process(self, lookup_type, value, connection):\n        if isinstance(value, SQLEvaluator):\n            # Make sure the F Expression destination field exists, and\n            # set an `srid` attribute with the same as that of the\n            # destination.\n            geo_fld = GeoWhereNode._check_geo_field(value.opts, value.expression.name)\n            if not geo_fld:\n                raise ValueError('No geographic field found in expression.')\n            value.srid = geo_fld.srid\n        db_type = self.field.db_type(connection=connection)\n        params = self.field.get_db_prep_lookup(lookup_type, value, connection=connection)\n        return (self.alias, self.col, db_type), params\n\nclass GeoWhereNode(WhereNode):\n    \"\"\"\n    Used to represent the SQL where-clause for spatial databases --\n    these are tied to the GeoQuery class that created it.\n    \"\"\"\n    def add(self, data, connector):\n        if isinstance(data, (list, tuple)):\n            obj, lookup_type, value = data\n            if ( isinstance(obj, Constraint) and\n                 isinstance(obj.field, GeometryField) ):\n                data = (GeoConstraint(obj), lookup_type, value)\n        super(GeoWhereNode, self).add(data, connector)\n\n    def make_atom(self, child, qn, connection):\n        lvalue, lookup_type, value_annot, params_or_value = child\n        if isinstance(lvalue, GeoConstraint):\n            data, params = lvalue.process(lookup_type, params_or_value, connection)\n            spatial_sql = connection.ops.spatial_lookup_sql(data, lookup_type, params_or_value, lvalue.field, qn)\n            return spatial_sql, params\n        else:\n            return super(GeoWhereNode, self).make_atom(child, qn, connection)\n\n    @classmethod\n    def _check_geo_field(cls, opts, lookup):\n        \"\"\"\n        Utility for checking the given lookup with the given model options.\n        The lookup is a string either specifying the geographic field, e.g.\n        'point, 'the_geom', or a related lookup on a geographic field like\n        'address__point'.\n\n        If a GeometryField exists according to the given lookup on the model\n        options, it will be returned.  Otherwise returns None.\n        \"\"\"\n        # This takes into account the situation where the lookup is a\n        # lookup to a related geographic field, e.g., 'address__point'.\n        field_list = lookup.split(LOOKUP_SEP)\n\n        # Reversing so list operates like a queue of related lookups,\n        # and popping the top lookup.\n        field_list.reverse()\n        fld_name = field_list.pop()\n\n        try:\n            geo_fld = opts.get_field(fld_name)\n            # If the field list is still around, then it means that the\n            # lookup was for a geometry field across a relationship --\n            # thus we keep on getting the related model options and the\n            # model field associated with the next field in the list\n            # until there's no more left.\n            while len(field_list):\n                opts = geo_fld.rel.to._meta\n                geo_fld = opts.get_field(field_list.pop())\n        except (FieldDoesNotExist, AttributeError):\n            return False\n\n        # Finally, make sure we got a Geographic field and return.\n        if isinstance(geo_fld, GeometryField):\n            return geo_fld\n        else:\n            return False\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/feeds.py",
    "content": "from __future__ import unicode_literals\n\nfrom django.contrib.syndication.views import Feed as BaseFeed\nfrom django.utils.feedgenerator import Atom1Feed, Rss201rev2Feed\n\nclass GeoFeedMixin(object):\n    \"\"\"\n    This mixin provides the necessary routines for SyndicationFeed subclasses\n    to produce simple GeoRSS or W3C Geo elements.\n    \"\"\"\n\n    def georss_coords(self, coords):\n        \"\"\"\n        In GeoRSS coordinate pairs are ordered by lat/lon and separated by\n        a single white space.  Given a tuple of coordinates, this will return\n        a unicode GeoRSS representation.\n        \"\"\"\n        return ' '.join(['%f %f' % (coord[1], coord[0]) for coord in coords])\n\n    def add_georss_point(self, handler, coords, w3c_geo=False):\n        \"\"\"\n        Adds a GeoRSS point with the given coords using the given handler.\n        Handles the differences between simple GeoRSS and the more pouplar\n        W3C Geo specification.\n        \"\"\"\n        if w3c_geo:\n            lon, lat = coords[:2]\n            handler.addQuickElement('geo:lat', '%f' % lat)\n            handler.addQuickElement('geo:lon', '%f' % lon)\n        else:\n            handler.addQuickElement('georss:point', self.georss_coords((coords,)))\n\n    def add_georss_element(self, handler, item, w3c_geo=False):\n        \"\"\"\n        This routine adds a GeoRSS XML element using the given item and handler.\n        \"\"\"\n        # Getting the Geometry object.\n        geom = item.get('geometry', None)\n        if not geom is None:\n            if isinstance(geom, (list, tuple)):\n                # Special case if a tuple/list was passed in.  The tuple may be\n                # a point or a box\n                box_coords = None\n                if isinstance(geom[0], (list, tuple)):\n                    # Box: ( (X0, Y0), (X1, Y1) )\n                    if len(geom) == 2:\n                        box_coords = geom\n                    else:\n                        raise ValueError('Only should be two sets of coordinates.')\n                else:\n                    if len(geom) == 2:\n                        # Point: (X, Y)\n                        self.add_georss_point(handler, geom, w3c_geo=w3c_geo)\n                    elif len(geom) == 4:\n                        # Box: (X0, Y0, X1, Y1)\n                        box_coords = (geom[:2], geom[2:])\n                    else:\n                        raise ValueError('Only should be 2 or 4 numeric elements.')\n                # If a GeoRSS box was given via tuple.\n                if not box_coords is None:\n                    if w3c_geo: raise ValueError('Cannot use simple GeoRSS box in W3C Geo feeds.')\n                    handler.addQuickElement('georss:box', self.georss_coords(box_coords))\n            else:\n                # Getting the lower-case geometry type.\n                gtype = str(geom.geom_type).lower()\n                if gtype == 'point':\n                    self.add_georss_point(handler, geom.coords, w3c_geo=w3c_geo) \n                else:\n                    if w3c_geo: raise ValueError('W3C Geo only supports Point geometries.')\n                    # For formatting consistent w/the GeoRSS simple standard:\n                    # http://georss.org/1.0#simple\n                    if gtype in ('linestring', 'linearring'):\n                        handler.addQuickElement('georss:line', self.georss_coords(geom.coords))\n                    elif gtype in ('polygon',):\n                        # Only support the exterior ring.\n                        handler.addQuickElement('georss:polygon', self.georss_coords(geom[0].coords))\n                    else:\n                        raise ValueError('Geometry type \"%s\" not supported.' % geom.geom_type)\n\n### SyndicationFeed subclasses ###\nclass GeoRSSFeed(Rss201rev2Feed, GeoFeedMixin):\n    def rss_attributes(self):\n        attrs = super(GeoRSSFeed, self).rss_attributes()\n        attrs['xmlns:georss'] = 'http://www.georss.org/georss'\n        return attrs\n\n    def add_item_elements(self, handler, item):\n        super(GeoRSSFeed, self).add_item_elements(handler, item)\n        self.add_georss_element(handler, item)\n\n    def add_root_elements(self, handler):\n        super(GeoRSSFeed, self).add_root_elements(handler)\n        self.add_georss_element(handler, self.feed)\n\nclass GeoAtom1Feed(Atom1Feed, GeoFeedMixin):\n    def root_attributes(self):\n        attrs = super(GeoAtom1Feed, self).root_attributes()\n        attrs['xmlns:georss'] = 'http://www.georss.org/georss'\n        return attrs\n\n    def add_item_elements(self, handler, item):\n        super(GeoAtom1Feed, self).add_item_elements(handler, item)\n        self.add_georss_element(handler, item)\n\n    def add_root_elements(self, handler):\n        super(GeoAtom1Feed, self).add_root_elements(handler)\n        self.add_georss_element(handler, self.feed)\n\nclass W3CGeoFeed(Rss201rev2Feed, GeoFeedMixin):\n    def rss_attributes(self):\n        attrs = super(W3CGeoFeed, self).rss_attributes()\n        attrs['xmlns:geo'] = 'http://www.w3.org/2003/01/geo/wgs84_pos#'\n        return attrs\n\n    def add_item_elements(self, handler, item):\n        super(W3CGeoFeed, self).add_item_elements(handler, item)\n        self.add_georss_element(handler, item, w3c_geo=True)\n\n    def add_root_elements(self, handler):\n        super(W3CGeoFeed, self).add_root_elements(handler)\n        self.add_georss_element(handler, self.feed, w3c_geo=True)\n\n### Feed subclass ###\nclass Feed(BaseFeed):\n    \"\"\"\n    This is a subclass of the `Feed` from `django.contrib.syndication`.\n    This allows users to define a `geometry(obj)` and/or `item_geometry(item)`\n    methods on their own subclasses so that geo-referenced information may\n    placed in the feed.\n    \"\"\"\n    feed_type = GeoRSSFeed\n\n    def feed_extra_kwargs(self, obj):\n        return {'geometry' : self.__get_dynamic_attr('geometry', obj)}\n\n    def item_extra_kwargs(self, item):\n        return {'geometry' : self.__get_dynamic_attr('item_geometry', item)}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/forms/__init__.py",
    "content": "from django.forms import *\nfrom django.contrib.gis.forms.fields import GeometryField\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/forms/fields.py",
    "content": "from __future__ import unicode_literals\n\nfrom django import forms\nfrom django.utils.translation import ugettext_lazy as _\n\n# While this couples the geographic forms to the GEOS library,\n# it decouples from database (by not importing SpatialBackend).\nfrom django.contrib.gis.geos import GEOSException, GEOSGeometry\n\nclass GeometryField(forms.Field):\n    \"\"\"\n    This is the basic form field for a Geometry.  Any textual input that is\n    accepted by GEOSGeometry is accepted by this form.  By default,\n    this includes WKT, HEXEWKB, WKB (in a buffer), and GeoJSON.\n    \"\"\"\n    widget = forms.Textarea\n\n    default_error_messages = {\n        'no_geom' : _('No geometry value provided.'),\n        'invalid_geom' : _('Invalid geometry value.'),\n        'invalid_geom_type' : _('Invalid geometry type.'),\n        'transform_error' : _('An error occurred when transforming the geometry '\n                              'to the SRID of the geometry form field.'),\n        }\n\n    def __init__(self, **kwargs):\n        # Pop out attributes from the database field, or use sensible\n        # defaults (e.g., allow None).\n        self.srid = kwargs.pop('srid', None)\n        self.geom_type = kwargs.pop('geom_type', 'GEOMETRY')\n        self.null = kwargs.pop('null', True)\n        super(GeometryField, self).__init__(**kwargs)\n\n    def to_python(self, value):\n        \"\"\"\n        Transforms the value to a Geometry object.\n        \"\"\"\n        try:\n            return GEOSGeometry(value)\n        except (GEOSException, ValueError, TypeError):\n            raise forms.ValidationError(self.error_messages['invalid_geom'])\n\n    def clean(self, value):\n        \"\"\"\n        Validates that the input value can be converted to a Geometry\n        object (which is returned).  A ValidationError is raised if\n        the value cannot be instantiated as a Geometry.\n        \"\"\"\n        if not value:\n            if self.null and not self.required:\n                # The geometry column allows NULL and is not required.\n                return None\n            else:\n                raise forms.ValidationError(self.error_messages['no_geom'])\n\n        # Transform the value to a python object first\n        geom = self.to_python(value)\n\n        # Ensuring that the geometry is of the correct type (indicated\n        # using the OGC string label).\n        if str(geom.geom_type).upper() != self.geom_type and not self.geom_type == 'GEOMETRY':\n            raise forms.ValidationError(self.error_messages['invalid_geom_type'])\n\n        # Transforming the geometry if the SRID was set.\n        if self.srid:\n            if not geom.srid:\n                # Should match that of the field if not given.\n                geom.srid = self.srid\n            elif self.srid != -1 and self.srid != geom.srid:\n                try:\n                    geom.transform(self.srid)\n                except:\n                    raise forms.ValidationError(self.error_messages['transform_error'])\n\n        return geom\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/gdal/LICENSE",
    "content": "Copyright (c) 2007-2009, Justin Bronn\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without modification,\nare permitted provided that the following conditions are met:\n\n    1. Redistributions of source code must retain the above copyright notice,\n       this list of conditions and the following disclaimer.\n\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in the\n       documentation and/or other materials provided with the distribution.\n\n    3. Neither the name of OGRGeometry nor the names of its contributors may be used\n       to endorse or promote products derived from this software without\n       specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/gdal/__init__.py",
    "content": "\"\"\"\n This module houses ctypes interfaces for GDAL objects.  The following GDAL\n objects are supported:\n\n CoordTransform: Used for coordinate transformations from one spatial\n  reference system to another.\n\n Driver: Wraps an OGR data source driver.\n\n DataSource: Wrapper for the OGR data source object, supports\n  OGR-supported data sources.\n\n Envelope: A ctypes structure for bounding boxes (GDAL library\n  not required).\n\n OGRGeometry: Object for accessing OGR Geometry functionality.\n\n OGRGeomType: A class for representing the different OGR Geometry\n  types (GDAL library not required).\n\n SpatialReference: Represents OSR Spatial Reference objects.\n\n The GDAL library will be imported from the system path using the default\n library name for the current OS. The default library path may be overridden\n by setting `GDAL_LIBRARY_PATH` in your settings with the path to the GDAL C\n library on your system.\n\n GDAL links to a large number of external libraries that consume RAM when\n loaded.  Thus, it may desirable to disable GDAL on systems with limited\n RAM resources -- this may be accomplished by setting `GDAL_LIBRARY_PATH`\n to a non-existant file location (e.g., `GDAL_LIBRARY_PATH='/null/path'`;\n setting to None/False/'' will not work as a string must be given).\n\"\"\"\n# Attempting to import objects that depend on the GDAL library.  The\n# HAS_GDAL flag will be set to True if the library is present on\n# the system.\ntry:\n    from django.contrib.gis.gdal.driver import Driver\n    from django.contrib.gis.gdal.datasource import DataSource\n    from django.contrib.gis.gdal.libgdal import gdal_version, gdal_full_version, GDAL_VERSION\n    from django.contrib.gis.gdal.srs import SpatialReference, CoordTransform\n    from django.contrib.gis.gdal.geometries import OGRGeometry\n    HAS_GDAL = True\nexcept Exception:\n    HAS_GDAL = False\n\ntry:\n    from django.contrib.gis.gdal.envelope import Envelope\nexcept ImportError:\n    # No ctypes, but don't raise an exception.\n    pass\n\nfrom django.contrib.gis.gdal.error import check_err, OGRException, OGRIndexError, SRSException\nfrom django.contrib.gis.gdal.geomtype import OGRGeomType\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/gdal/base.py",
    "content": "from ctypes import c_void_p\n\nfrom django.contrib.gis.gdal.error import GDALException\nfrom django.utils import six\n\nclass GDALBase(object):\n    \"\"\"\n    Base object for GDAL objects that has a pointer access property\n    that controls access to the underlying C pointer.\n    \"\"\"\n    # Initially the pointer is NULL.\n    _ptr = None\n\n    # Default allowed pointer type.\n    ptr_type = c_void_p\n\n    # Pointer access property.\n    def _get_ptr(self):\n        # Raise an exception if the pointer isn't valid don't\n        # want to be passing NULL pointers to routines --\n        # that's very bad.\n        if self._ptr: return self._ptr\n        else: raise GDALException('GDAL %s pointer no longer valid.' % self.__class__.__name__)\n\n    def _set_ptr(self, ptr):\n        # Only allow the pointer to be set with pointers of the\n        # compatible type or None (NULL).\n        if isinstance(ptr, six.integer_types):\n            self._ptr = self.ptr_type(ptr)\n        elif ptr is None or isinstance(ptr, self.ptr_type):\n            self._ptr = ptr\n        else:\n            raise TypeError('Incompatible pointer type')\n\n    ptr = property(_get_ptr, _set_ptr)\n\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/gdal/datasource.py",
    "content": "\"\"\"\n DataSource is a wrapper for the OGR Data Source object, which provides\n an interface for reading vector geometry data from many different file\n formats (including ESRI shapefiles).\n\n When instantiating a DataSource object, use the filename of a\n GDAL-supported data source.  For example, a SHP file or a\n TIGER/Line file from the government.\n\n The ds_driver keyword is used internally when a ctypes pointer\n is passed in directly.\n\n Example:\n  ds = DataSource('/home/foo/bar.shp')\n  for layer in ds:\n      for feature in layer:\n          # Getting the geometry for the feature.\n          g = feature.geom\n\n          # Getting the 'description' field for the feature.\n          desc = feature['description']\n\n          # We can also increment through all of the fields\n          #  attached to this feature.\n          for field in feature:\n              # Get the name of the field (e.g. 'description')\n              nm = field.name\n\n              # Get the type (integer) of the field, e.g. 0 => OFTInteger\n              t = field.type\n\n              # Returns the value the field; OFTIntegers return ints,\n              #  OFTReal returns floats, all else returns string.\n              val = field.value\n\"\"\"\n# ctypes prerequisites.\nfrom ctypes import byref\n\n# The GDAL C library, OGR exceptions, and the Layer object.\nfrom django.contrib.gis.gdal.base import GDALBase\nfrom django.contrib.gis.gdal.driver import Driver\nfrom django.contrib.gis.gdal.error import OGRException, OGRIndexError\nfrom django.contrib.gis.gdal.layer import Layer\n\n# Getting the ctypes prototypes for the DataSource.\nfrom django.contrib.gis.gdal.prototypes import ds as capi\n\nfrom django.utils.encoding import force_bytes, force_text\nfrom django.utils import six\nfrom django.utils.six.moves import xrange\n\n# For more information, see the OGR C API source code:\n#  http://www.gdal.org/ogr/ogr__api_8h.html\n#\n# The OGR_DS_* routines are relevant here.\nclass DataSource(GDALBase):\n    \"Wraps an OGR Data Source object.\"\n\n    #### Python 'magic' routines ####\n    def __init__(self, ds_input, ds_driver=False, write=False, encoding='utf-8'):\n        # The write flag.\n        if write:\n            self._write = 1\n        else:\n            self._write = 0\n        # See also http://trac.osgeo.org/gdal/wiki/rfc23_ogr_unicode\n        self.encoding = encoding\n\n        # Registering all the drivers, this needs to be done\n        #  _before_ we try to open up a data source.\n        if not capi.get_driver_count():\n            capi.register_all()\n\n        if isinstance(ds_input, six.string_types):\n            # The data source driver is a void pointer.\n            ds_driver = Driver.ptr_type()\n            try:\n                # OGROpen will auto-detect the data source type.\n                ds = capi.open_ds(force_bytes(ds_input), self._write, byref(ds_driver))\n            except OGRException:\n                # Making the error message more clear rather than something\n                # like \"Invalid pointer returned from OGROpen\".\n                raise OGRException('Could not open the datasource at \"%s\"' % ds_input)\n        elif isinstance(ds_input, self.ptr_type) and isinstance(ds_driver, Driver.ptr_type):\n            ds = ds_input\n        else:\n            raise OGRException('Invalid data source input type: %s' % type(ds_input))\n\n        if bool(ds):\n            self.ptr = ds\n            self.driver = Driver(ds_driver)\n        else:\n            # Raise an exception if the returned pointer is NULL\n            raise OGRException('Invalid data source file \"%s\"' % ds_input)\n\n    def __del__(self):\n        \"Destroys this DataStructure object.\"\n        if self._ptr: capi.destroy_ds(self._ptr)\n\n    def __iter__(self):\n        \"Allows for iteration over the layers in a data source.\"\n        for i in xrange(self.layer_count):\n            yield self[i]\n\n    def __getitem__(self, index):\n        \"Allows use of the index [] operator to get a layer at the index.\"\n        if isinstance(index, six.string_types):\n            l = capi.get_layer_by_name(self.ptr, force_bytes(index))\n            if not l: raise OGRIndexError('invalid OGR Layer name given: \"%s\"' % index)\n        elif isinstance(index, int):\n            if index < 0 or index >= self.layer_count:\n                raise OGRIndexError('index out of range')\n            l = capi.get_layer(self._ptr, index)\n        else:\n            raise TypeError('Invalid index type: %s' % type(index))\n        return Layer(l, self)\n\n    def __len__(self):\n        \"Returns the number of layers within the data source.\"\n        return self.layer_count\n\n    def __str__(self):\n        \"Returns OGR GetName and Driver for the Data Source.\"\n        return '%s (%s)' % (self.name, str(self.driver))\n\n    @property\n    def layer_count(self):\n        \"Returns the number of layers in the data source.\"\n        return capi.get_layer_count(self._ptr)\n\n    @property\n    def name(self):\n        \"Returns the name of the data source.\"\n        name = capi.get_ds_name(self._ptr)\n        return force_text(name, self.encoding, strings_only=True)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/gdal/driver.py",
    "content": "# prerequisites imports\nfrom ctypes import c_void_p\nfrom django.contrib.gis.gdal.base import GDALBase\nfrom django.contrib.gis.gdal.error import OGRException\nfrom django.contrib.gis.gdal.prototypes import ds as capi\n\nfrom django.utils import six\nfrom django.utils.encoding import force_bytes\n\n# For more information, see the OGR C API source code:\n#  http://www.gdal.org/ogr/ogr__api_8h.html\n#\n# The OGR_Dr_* routines are relevant here.\nclass Driver(GDALBase):\n    \"Wraps an OGR Data Source Driver.\"\n\n    # Case-insensitive aliases for OGR Drivers.\n    _alias = {'esri' : 'ESRI Shapefile',\n              'shp' : 'ESRI Shapefile',\n              'shape' : 'ESRI Shapefile',\n              'tiger' : 'TIGER',\n              'tiger/line' : 'TIGER',\n              }\n\n    def __init__(self, dr_input):\n        \"Initializes an OGR driver on either a string or integer input.\"\n\n        if isinstance(dr_input, six.string_types):\n            # If a string name of the driver was passed in\n            self._register()\n\n            # Checking the alias dictionary (case-insensitive) to see if an alias\n            #  exists for the given driver.\n            if dr_input.lower() in self._alias:\n                name = self._alias[dr_input.lower()]\n            else:\n                name = dr_input\n\n            # Attempting to get the OGR driver by the string name.\n            dr = capi.get_driver_by_name(force_bytes(name))\n        elif isinstance(dr_input, int):\n            self._register()\n            dr = capi.get_driver(dr_input)\n        elif isinstance(dr_input, c_void_p):\n            dr = dr_input\n        else:\n            raise OGRException('Unrecognized input type for OGR Driver: %s' % str(type(dr_input)))\n\n        # Making sure we get a valid pointer to the OGR Driver\n        if not dr:\n            raise OGRException('Could not initialize OGR Driver on input: %s' % str(dr_input))\n        self.ptr = dr\n\n    def __str__(self):\n        \"Returns the string name of the OGR Driver.\"\n        return capi.get_driver_name(self.ptr)\n\n    def _register(self):\n        \"Attempts to register all the data source drivers.\"\n        # Only register all if the driver count is 0 (or else all drivers\n        # will be registered over and over again)\n        if not self.driver_count: capi.register_all()\n\n    # Driver properties\n    @property\n    def driver_count(self):\n        \"Returns the number of OGR data source drivers registered.\"\n        return capi.get_driver_count()\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/gdal/envelope.py",
    "content": "\"\"\"\n The GDAL/OGR library uses an Envelope structure to hold the bounding\n box information for a geometry.  The envelope (bounding box) contains\n two pairs of coordinates, one for the lower left coordinate and one\n for the upper right coordinate:\n\n                           +----------o Upper right; (max_x, max_y)\n                           |          |\n                           |          |\n                           |          |\n Lower left (min_x, min_y) o----------+\n\"\"\"\nfrom ctypes import Structure, c_double\nfrom django.contrib.gis.gdal.error import OGRException\n\n# The OGR definition of an Envelope is a C structure containing four doubles.\n#  See the 'ogr_core.h' source file for more information:\n#   http://www.gdal.org/ogr/ogr__core_8h-source.html\nclass OGREnvelope(Structure):\n    \"Represents the OGREnvelope C Structure.\"\n    _fields_ = [(\"MinX\", c_double),\n                (\"MaxX\", c_double),\n                (\"MinY\", c_double),\n                (\"MaxY\", c_double),\n                ]\n\nclass Envelope(object):\n    \"\"\"\n    The Envelope object is a C structure that contains the minimum and\n    maximum X, Y coordinates for a rectangle bounding box.  The naming\n    of the variables is compatible with the OGR Envelope structure.\n    \"\"\"\n\n    def __init__(self, *args):\n        \"\"\"\n        The initialization function may take an OGREnvelope structure, 4-element\n        tuple or list, or 4 individual arguments.\n        \"\"\"\n        \n        if len(args) == 1:\n            if isinstance(args[0], OGREnvelope):\n                # OGREnvelope (a ctypes Structure) was passed in.\n                self._envelope = args[0]\n            elif isinstance(args[0], (tuple, list)):\n                # A tuple was passed in.\n                if len(args[0]) != 4:\n                    raise OGRException('Incorrect number of tuple elements (%d).' % len(args[0]))\n                else:\n                    self._from_sequence(args[0])\n            else:\n                raise TypeError('Incorrect type of argument: %s' % str(type(args[0])))\n        elif len(args) == 4:\n            # Individual parameters passed in.\n            #  Thanks to ww for the help\n            self._from_sequence([float(a) for a in args])\n        else:\n            raise OGRException('Incorrect number (%d) of arguments.' % len(args))\n\n        # Checking the x,y coordinates\n        if self.min_x > self.max_x:\n            raise OGRException('Envelope minimum X > maximum X.')\n        if self.min_y > self.max_y:\n            raise OGRException('Envelope minimum Y > maximum Y.')\n\n    def __eq__(self, other):\n        \"\"\"\n        Returns True if the envelopes are equivalent; can compare against\n        other Envelopes and 4-tuples.\n        \"\"\"\n        if isinstance(other, Envelope):\n            return (self.min_x == other.min_x) and (self.min_y == other.min_y) and \\\n                   (self.max_x == other.max_x) and (self.max_y == other.max_y)\n        elif isinstance(other, tuple) and len(other) == 4:\n            return (self.min_x == other[0]) and (self.min_y == other[1]) and \\\n                   (self.max_x == other[2]) and (self.max_y == other[3])\n        else:\n            raise OGRException('Equivalence testing only works with other Envelopes.')\n\n    def __str__(self):\n        \"Returns a string representation of the tuple.\"\n        return str(self.tuple)\n\n    def _from_sequence(self, seq):\n        \"Initializes the C OGR Envelope structure from the given sequence.\"\n        self._envelope = OGREnvelope()\n        self._envelope.MinX = seq[0]\n        self._envelope.MinY = seq[1]\n        self._envelope.MaxX = seq[2]\n        self._envelope.MaxY = seq[3]\n    \n    def expand_to_include(self, *args): \n        \"\"\" \n        Modifies the envelope to expand to include the boundaries of \n        the passed-in 2-tuple (a point), 4-tuple (an extent) or \n        envelope. \n        \"\"\" \n        # We provide a number of different signatures for this method, \n        # and the logic here is all about converting them into a \n        # 4-tuple single parameter which does the actual work of \n        # expanding the envelope. \n        if len(args) == 1: \n            if isinstance(args[0], Envelope): \n                return self.expand_to_include(args[0].tuple) \n            elif hasattr(args[0], 'x') and hasattr(args[0], 'y'):\n                return self.expand_to_include(args[0].x, args[0].y, args[0].x, args[0].y) \n            elif isinstance(args[0], (tuple, list)): \n                # A tuple was passed in. \n                if len(args[0]) == 2: \n                    return self.expand_to_include((args[0][0], args[0][1], args[0][0], args[0][1])) \n                elif len(args[0]) == 4: \n                    (minx, miny, maxx, maxy) = args[0] \n                    if minx < self._envelope.MinX: \n                        self._envelope.MinX = minx \n                    if miny < self._envelope.MinY: \n                        self._envelope.MinY = miny \n                    if maxx > self._envelope.MaxX: \n                        self._envelope.MaxX = maxx \n                    if maxy > self._envelope.MaxY: \n                        self._envelope.MaxY = maxy \n                else: \n                    raise OGRException('Incorrect number of tuple elements (%d).' % len(args[0])) \n            else: \n                raise TypeError('Incorrect type of argument: %s' % str(type(args[0]))) \n        elif len(args) == 2: \n            # An x and an y parameter were passed in \n                return self.expand_to_include((args[0], args[1], args[0], args[1])) \n        elif len(args) == 4: \n            # Individual parameters passed in.\n            return self.expand_to_include(args) \n        else: \n            raise OGRException('Incorrect number (%d) of arguments.' % len(args[0])) \n\n    @property\n    def min_x(self):\n        \"Returns the value of the minimum X coordinate.\"\n        return self._envelope.MinX\n\n    @property\n    def min_y(self):\n        \"Returns the value of the minimum Y coordinate.\"\n        return self._envelope.MinY\n\n    @property\n    def max_x(self):\n        \"Returns the value of the maximum X coordinate.\"\n        return self._envelope.MaxX\n\n    @property\n    def max_y(self):\n        \"Returns the value of the maximum Y coordinate.\"\n        return self._envelope.MaxY\n\n    @property\n    def ur(self):\n        \"Returns the upper-right coordinate.\"\n        return (self.max_x, self.max_y)\n\n    @property\n    def ll(self):\n        \"Returns the lower-left coordinate.\"\n        return (self.min_x, self.min_y)\n\n    @property\n    def tuple(self):\n        \"Returns a tuple representing the envelope.\"\n        return (self.min_x, self.min_y, self.max_x, self.max_y)\n\n    @property\n    def wkt(self):\n        \"Returns WKT representing a Polygon for this envelope.\"\n        # TODO: Fix significant figures.\n        return 'POLYGON((%s %s,%s %s,%s %s,%s %s,%s %s))' % \\\n               (self.min_x, self.min_y, self.min_x, self.max_y,\n                self.max_x, self.max_y, self.max_x, self.min_y,\n                self.min_x, self.min_y)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/gdal/error.py",
    "content": "\"\"\"\n This module houses the OGR & SRS Exception objects, and the\n check_err() routine which checks the status code returned by\n OGR methods.\n\"\"\"\n#### OGR & SRS Exceptions ####\nclass GDALException(Exception): pass\nclass OGRException(Exception): pass\nclass SRSException(Exception): pass\nclass OGRIndexError(OGRException, KeyError):\n    \"\"\"\n    This exception is raised when an invalid index is encountered, and has\n    the 'silent_variable_feature' attribute set to true.  This ensures that\n    django's templates proceed to use the next lookup type gracefully when\n    an Exception is raised.  Fixes ticket #4740.\n    \"\"\"\n    silent_variable_failure = True\n\n#### OGR error checking codes and routine ####\n\n# OGR Error Codes\nOGRERR_DICT = { 1 : (OGRException, 'Not enough data.'),\n                2 : (OGRException, 'Not enough memory.'),\n                3 : (OGRException, 'Unsupported geometry type.'),\n                4 : (OGRException, 'Unsupported operation.'),\n                5 : (OGRException, 'Corrupt data.'),\n                6 : (OGRException, 'OGR failure.'),\n                7 : (SRSException, 'Unsupported SRS.'),\n                8 : (OGRException, 'Invalid handle.'),\n                }\nOGRERR_NONE = 0\n\ndef check_err(code):\n    \"Checks the given OGRERR, and raises an exception where appropriate.\"\n    \n    if code == OGRERR_NONE:\n        return\n    elif code in OGRERR_DICT:\n        e, msg = OGRERR_DICT[code]\n        raise e(msg)\n    else:\n        raise OGRException('Unknown error code: \"%s\"' % code)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/gdal/feature.py",
    "content": "# The GDAL C library, OGR exception, and the Field object\nfrom django.contrib.gis.gdal.base import GDALBase\nfrom django.contrib.gis.gdal.error import OGRException, OGRIndexError\nfrom django.contrib.gis.gdal.field import Field\nfrom django.contrib.gis.gdal.geometries import OGRGeometry, OGRGeomType\n\n# ctypes function prototypes\nfrom django.contrib.gis.gdal.prototypes import ds as capi, geom as geom_api\n\nfrom django.utils.encoding import force_bytes, force_text\nfrom django.utils import six\nfrom django.utils.six.moves import xrange\n\n# For more information, see the OGR C API source code:\n#  http://www.gdal.org/ogr/ogr__api_8h.html\n#\n# The OGR_F_* routines are relevant here.\nclass Feature(GDALBase):\n    \"\"\"\n    This class that wraps an OGR Feature, needs to be instantiated\n    from a Layer object.\n    \"\"\"\n\n    #### Python 'magic' routines ####\n    def __init__(self, feat, layer):\n        \"\"\"\n        Initializes Feature from a pointer and its Layer object.\n        \"\"\"\n        if not feat:\n            raise OGRException('Cannot create OGR Feature, invalid pointer given.')\n        self.ptr = feat\n        self._layer = layer\n\n    def __del__(self):\n        \"Releases a reference to this object.\"\n        if self._ptr: capi.destroy_feature(self._ptr)\n\n    def __getitem__(self, index):\n        \"\"\"\n        Gets the Field object at the specified index, which may be either\n        an integer or the Field's string label.  Note that the Field object\n        is not the field's _value_ -- use the `get` method instead to\n        retrieve the value (e.g. an integer) instead of a Field instance.\n        \"\"\"\n        if isinstance(index, six.string_types):\n            i = self.index(index)\n        else:\n            if index < 0 or index > self.num_fields:\n                raise OGRIndexError('index out of range')\n            i = index\n        return Field(self, i)\n\n    def __iter__(self):\n        \"Iterates over each field in the Feature.\"\n        for i in xrange(self.num_fields):\n            yield self[i]\n\n    def __len__(self):\n        \"Returns the count of fields in this feature.\"\n        return self.num_fields\n\n    def __str__(self):\n        \"The string name of the feature.\"\n        return 'Feature FID %d in Layer<%s>' % (self.fid, self.layer_name)\n\n    def __eq__(self, other):\n        \"Does equivalence testing on the features.\"\n        return bool(capi.feature_equal(self.ptr, other._ptr))\n\n    #### Feature Properties ####\n    @property\n    def encoding(self):\n        return self._layer._ds.encoding\n\n    @property\n    def fid(self):\n        \"Returns the feature identifier.\"\n        return capi.get_fid(self.ptr)\n\n    @property\n    def layer_name(self):\n        \"Returns the name of the layer for the feature.\"\n        name = capi.get_feat_name(self._layer._ldefn)\n        return force_text(name, self.encoding, strings_only=True)\n\n    @property\n    def num_fields(self):\n        \"Returns the number of fields in the Feature.\"\n        return capi.get_feat_field_count(self.ptr)\n\n    @property\n    def fields(self):\n        \"Returns a list of fields in the Feature.\"\n        return [capi.get_field_name(capi.get_field_defn(self._layer._ldefn, i))\n                for i in xrange(self.num_fields)]\n\n    @property\n    def geom(self):\n        \"Returns the OGR Geometry for this Feature.\"\n        # Retrieving the geometry pointer for the feature.\n        geom_ptr = capi.get_feat_geom_ref(self.ptr)\n        return OGRGeometry(geom_api.clone_geom(geom_ptr))\n\n    @property\n    def geom_type(self):\n        \"Returns the OGR Geometry Type for this Feture.\"\n        return OGRGeomType(capi.get_fd_geom_type(self._layer._ldefn))\n\n    #### Feature Methods ####\n    def get(self, field):\n        \"\"\"\n        Returns the value of the field, instead of an instance of the Field\n        object.  May take a string of the field name or a Field object as\n        parameters.\n        \"\"\"\n        field_name = getattr(field, 'name', field)\n        return self[field_name].value\n\n    def index(self, field_name):\n        \"Returns the index of the given field name.\"\n        i = capi.get_field_index(self.ptr, force_bytes(field_name))\n        if i < 0:\n            raise OGRIndexError('invalid OFT field name given: \"%s\"' % field_name)\n        return i\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/gdal/field.py",
    "content": "from ctypes import byref, c_int\nfrom datetime import date, datetime, time\nfrom django.contrib.gis.gdal.base import GDALBase\nfrom django.contrib.gis.gdal.error import OGRException\nfrom django.contrib.gis.gdal.prototypes import ds as capi\nfrom django.utils.encoding import force_text\n\n\n# For more information, see the OGR C API source code:\n#  http://www.gdal.org/ogr/ogr__api_8h.html\n#\n# The OGR_Fld_* routines are relevant here.\nclass Field(GDALBase):\n    \"\"\"\n    This class wraps an OGR Field, and needs to be instantiated\n    from a Feature object.\n    \"\"\"\n\n    #### Python 'magic' routines ####\n    def __init__(self, feat, index):\n        \"\"\"\n        Initializes on the feature object and the integer index of\n        the field within the feature.\n        \"\"\"\n        # Setting the feature pointer and index.\n        self._feat = feat\n        self._index = index\n\n        # Getting the pointer for this field.\n        fld_ptr = capi.get_feat_field_defn(feat.ptr, index)\n        if not fld_ptr:\n            raise OGRException('Cannot create OGR Field, invalid pointer given.')\n        self.ptr = fld_ptr\n\n        # Setting the class depending upon the OGR Field Type (OFT)\n        self.__class__ = OGRFieldTypes[self.type]\n\n        # OFTReal with no precision should be an OFTInteger.\n        if isinstance(self, OFTReal) and self.precision == 0:\n            self.__class__ = OFTInteger\n            self._double = True\n\n    def __str__(self):\n        \"Returns the string representation of the Field.\"\n        return str(self.value).strip()\n\n    #### Field Methods ####\n    def as_double(self):\n        \"Retrieves the Field's value as a double (float).\"\n        return capi.get_field_as_double(self._feat.ptr, self._index)\n\n    def as_int(self):\n        \"Retrieves the Field's value as an integer.\"\n        return capi.get_field_as_integer(self._feat.ptr, self._index)\n\n    def as_string(self):\n        \"Retrieves the Field's value as a string.\"\n        string = capi.get_field_as_string(self._feat.ptr, self._index)\n        return force_text(string, encoding=self._feat.encoding, strings_only=True)\n\n    def as_datetime(self):\n        \"Retrieves the Field's value as a tuple of date & time components.\"\n        yy, mm, dd, hh, mn, ss, tz = [c_int() for i in range(7)]\n        status = capi.get_field_as_datetime(\n            self._feat.ptr, self._index, byref(yy), byref(mm), byref(dd),\n            byref(hh), byref(mn), byref(ss), byref(tz))\n        if status:\n            return (yy, mm, dd, hh, mn, ss, tz)\n        else:\n            raise OGRException('Unable to retrieve date & time information from the field.')\n\n    #### Field Properties ####\n    @property\n    def name(self):\n        \"Returns the name of this Field.\"\n        name = capi.get_field_name(self.ptr)\n        return force_text(name, encoding=self._feat.encoding, strings_only=True)\n\n    @property\n    def precision(self):\n        \"Returns the precision of this Field.\"\n        return capi.get_field_precision(self.ptr)\n\n    @property\n    def type(self):\n        \"Returns the OGR type of this Field.\"\n        return capi.get_field_type(self.ptr)\n\n    @property\n    def type_name(self):\n        \"Return the OGR field type name for this Field.\"\n        return capi.get_field_type_name(self.type)\n\n    @property\n    def value(self):\n        \"Returns the value of this Field.\"\n        # Default is to get the field as a string.\n        return self.as_string()\n\n    @property\n    def width(self):\n        \"Returns the width of this Field.\"\n        return capi.get_field_width(self.ptr)\n\n### The Field sub-classes for each OGR Field type. ###\nclass OFTInteger(Field):\n    _double = False\n\n    @property\n    def value(self):\n        \"Returns an integer contained in this field.\"\n        if self._double:\n            # If this is really from an OFTReal field with no precision,\n            # read as a double and cast as Python int (to prevent overflow).\n            return int(self.as_double())\n        else:\n            return self.as_int()\n\n    @property\n    def type(self):\n        \"\"\"\n        GDAL uses OFTReals to represent OFTIntegers in created\n        shapefiles -- forcing the type here since the underlying field\n        type may actually be OFTReal.\n        \"\"\"\n        return 0\n\nclass OFTReal(Field):\n    @property\n    def value(self):\n        \"Returns a float contained in this field.\"\n        return self.as_double()\n\n# String & Binary fields, just subclasses\nclass OFTString(Field): pass\nclass OFTWideString(Field): pass\nclass OFTBinary(Field): pass\n\n# OFTDate, OFTTime, OFTDateTime fields.\nclass OFTDate(Field):\n    @property\n    def value(self):\n        \"Returns a Python `date` object for the OFTDate field.\"\n        try:\n            yy, mm, dd, hh, mn, ss, tz = self.as_datetime()\n            return date(yy.value, mm.value, dd.value)\n        except (ValueError, OGRException):\n            return None\n\nclass OFTDateTime(Field):\n    @property\n    def value(self):\n        \"Returns a Python `datetime` object for this OFTDateTime field.\"\n        # TODO: Adapt timezone information.\n        #  See http://lists.osgeo.org/pipermail/gdal-dev/2006-February/007990.html\n        #  The `tz` variable has values of: 0=unknown, 1=localtime (ambiguous),\n        #  100=GMT, 104=GMT+1, 80=GMT-5, etc.\n        try:\n            yy, mm, dd, hh, mn, ss, tz = self.as_datetime()\n            return datetime(yy.value, mm.value, dd.value, hh.value, mn.value, ss.value)\n        except (ValueError, OGRException):\n            return None\n\nclass OFTTime(Field):\n    @property\n    def value(self):\n        \"Returns a Python `time` object for this OFTTime field.\"\n        try:\n            yy, mm, dd, hh, mn, ss, tz = self.as_datetime()\n            return time(hh.value, mn.value, ss.value)\n        except (ValueError, OGRException):\n            return None\n\n# List fields are also just subclasses\nclass OFTIntegerList(Field): pass\nclass OFTRealList(Field): pass\nclass OFTStringList(Field): pass\nclass OFTWideStringList(Field): pass\n\n# Class mapping dictionary for OFT Types and reverse mapping.\nOGRFieldTypes = { 0 : OFTInteger,\n                  1 : OFTIntegerList,\n                  2 : OFTReal,\n                  3 : OFTRealList,\n                  4 : OFTString,\n                  5 : OFTStringList,\n                  6 : OFTWideString,\n                  7 : OFTWideStringList,\n                  8 : OFTBinary,\n                  9 : OFTDate,\n                 10 : OFTTime,\n                 11 : OFTDateTime,\n                  }\nROGRFieldTypes = dict([(cls, num) for num, cls in OGRFieldTypes.items()])\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/gdal/geometries.py",
    "content": "\"\"\"\n The OGRGeometry is a wrapper for using the OGR Geometry class\n (see http://www.gdal.org/ogr/classOGRGeometry.html).  OGRGeometry\n may be instantiated when reading geometries from OGR Data Sources\n (e.g. SHP files), or when given OGC WKT (a string).\n\n While the 'full' API is not present yet, the API is \"pythonic\" unlike\n the traditional and \"next-generation\" OGR Python bindings.  One major\n advantage OGR Geometries have over their GEOS counterparts is support\n for spatial reference systems and their transformation.\n\n Example:\n  >>> from django.contrib.gis.gdal import OGRGeometry, OGRGeomType, SpatialReference\n  >>> wkt1, wkt2 = 'POINT(-90 30)', 'POLYGON((0 0, 5 0, 5 5, 0 5)'\n  >>> pnt = OGRGeometry(wkt1)\n  >>> print(pnt)\n  POINT (-90 30)\n  >>> mpnt = OGRGeometry(OGRGeomType('MultiPoint'), SpatialReference('WGS84'))\n  >>> mpnt.add(wkt1)\n  >>> mpnt.add(wkt1)\n  >>> print(mpnt)\n  MULTIPOINT (-90 30,-90 30)\n  >>> print(mpnt.srs.name)\n  WGS 84\n  >>> print(mpnt.srs.proj)\n  +proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs\n  >>> mpnt.transform_to(SpatialReference('NAD27'))\n  >>> print(mpnt.proj)\n  +proj=longlat +ellps=clrk66 +datum=NAD27 +no_defs\n  >>> print(mpnt)\n  MULTIPOINT (-89.999930378602485 29.999797886557641,-89.999930378602485 29.999797886557641)\n\n  The OGRGeomType class is to make it easy to specify an OGR geometry type:\n  >>> from django.contrib.gis.gdal import OGRGeomType\n  >>> gt1 = OGRGeomType(3) # Using an integer for the type\n  >>> gt2 = OGRGeomType('Polygon') # Using a string\n  >>> gt3 = OGRGeomType('POLYGON') # It's case-insensitive\n  >>> print(gt1 == 3, gt1 == 'Polygon') # Equivalence works w/non-OGRGeomType objects\n  True True\n\"\"\"\n# Python library requisites.\nimport sys\nfrom binascii import a2b_hex, b2a_hex\nfrom ctypes import byref, string_at, c_char_p, c_double, c_ubyte, c_void_p\n\nfrom django.contrib.gis import memoryview\n\n# Getting GDAL prerequisites\nfrom django.contrib.gis.gdal.base import GDALBase\nfrom django.contrib.gis.gdal.envelope import Envelope, OGREnvelope\nfrom django.contrib.gis.gdal.error import OGRException, OGRIndexError, SRSException\nfrom django.contrib.gis.gdal.geomtype import OGRGeomType\nfrom django.contrib.gis.gdal.libgdal import GDAL_VERSION\nfrom django.contrib.gis.gdal.srs import SpatialReference, CoordTransform\n\n# Getting the ctypes prototype functions that interface w/the GDAL C library.\nfrom django.contrib.gis.gdal.prototypes import geom as capi, srs as srs_api\n\n# For recognizing geometry input.\nfrom django.contrib.gis.geometry.regex import hex_regex, wkt_regex, json_regex\n\nfrom django.utils import six\nfrom django.utils.six.moves import xrange\n\n# For more information, see the OGR C API source code:\n#  http://www.gdal.org/ogr/ogr__api_8h.html\n#\n# The OGR_G_* routines are relevant here.\n\n#### OGRGeometry Class ####\nclass OGRGeometry(GDALBase):\n    \"Generally encapsulates an OGR geometry.\"\n\n    def __init__(self, geom_input, srs=None):\n        \"Initializes Geometry on either WKT or an OGR pointer as input.\"\n\n        str_instance = isinstance(geom_input, six.string_types)\n\n        # If HEX, unpack input to a binary buffer.\n        if str_instance and hex_regex.match(geom_input):\n            geom_input = memoryview(a2b_hex(geom_input.upper().encode()))\n            str_instance = False\n\n        # Constructing the geometry,\n        if str_instance:\n            wkt_m = wkt_regex.match(geom_input)\n            json_m = json_regex.match(geom_input)\n            if wkt_m:\n                if wkt_m.group('srid'):\n                    # If there's EWKT, set the SRS w/value of the SRID.\n                    srs = int(wkt_m.group('srid'))\n                if wkt_m.group('type').upper() == 'LINEARRING':\n                    # OGR_G_CreateFromWkt doesn't work with LINEARRING WKT.\n                    #  See http://trac.osgeo.org/gdal/ticket/1992.\n                    g = capi.create_geom(OGRGeomType(wkt_m.group('type')).num)\n                    capi.import_wkt(g, byref(c_char_p(wkt_m.group('wkt').encode())))\n                else:\n                    g = capi.from_wkt(byref(c_char_p(wkt_m.group('wkt').encode())), None, byref(c_void_p()))\n            elif json_m:\n                g = capi.from_json(geom_input.encode())\n            else:\n                # Seeing if the input is a valid short-hand string\n                # (e.g., 'Point', 'POLYGON').\n                ogr_t = OGRGeomType(geom_input)\n                g = capi.create_geom(OGRGeomType(geom_input).num)\n        elif isinstance(geom_input, memoryview):\n            # WKB was passed in\n            g = capi.from_wkb(bytes(geom_input), None, byref(c_void_p()), len(geom_input))\n        elif isinstance(geom_input, OGRGeomType):\n            # OGRGeomType was passed in, an empty geometry will be created.\n            g = capi.create_geom(geom_input.num)\n        elif isinstance(geom_input, self.ptr_type):\n            # OGR pointer (c_void_p) was the input.\n            g = geom_input\n        else:\n            raise OGRException('Invalid input type for OGR Geometry construction: %s' % type(geom_input))\n\n        # Now checking the Geometry pointer before finishing initialization\n        # by setting the pointer for the object.\n        if not g:\n            raise OGRException('Cannot create OGR Geometry from input: %s' % str(geom_input))\n        self.ptr = g\n\n        # Assigning the SpatialReference object to the geometry, if valid.\n        if bool(srs): self.srs = srs\n\n        # Setting the class depending upon the OGR Geometry Type\n        self.__class__ = GEO_CLASSES[self.geom_type.num]\n\n    def __del__(self):\n        \"Deletes this Geometry.\"\n        if self._ptr: capi.destroy_geom(self._ptr)\n\n    # Pickle routines\n    def __getstate__(self):\n        srs = self.srs\n        if srs:\n            srs = srs.wkt\n        else:\n            srs = None\n        return bytes(self.wkb), srs\n\n    def __setstate__(self, state):\n        wkb, srs = state\n        ptr = capi.from_wkb(wkb, None, byref(c_void_p()), len(wkb))\n        if not ptr: raise OGRException('Invalid OGRGeometry loaded from pickled state.')\n        self.ptr = ptr\n        self.srs = srs\n\n    @classmethod\n    def from_bbox(cls, bbox):\n        \"Constructs a Polygon from a bounding box (4-tuple).\"\n        x0, y0, x1, y1 = bbox\n        return OGRGeometry( 'POLYGON((%s %s, %s %s, %s %s, %s %s, %s %s))' %  (\n                x0, y0, x0, y1, x1, y1, x1, y0, x0, y0) )\n\n    ### Geometry set-like operations ###\n    # g = g1 | g2\n    def __or__(self, other):\n        \"Returns the union of the two geometries.\"\n        return self.union(other)\n\n    # g = g1 & g2\n    def __and__(self, other):\n        \"Returns the intersection of this Geometry and the other.\"\n        return self.intersection(other)\n\n    # g = g1 - g2\n    def __sub__(self, other):\n        \"Return the difference this Geometry and the other.\"\n        return self.difference(other)\n\n    # g = g1 ^ g2\n    def __xor__(self, other):\n        \"Return the symmetric difference of this Geometry and the other.\"\n        return self.sym_difference(other)\n\n    def __eq__(self, other):\n        \"Is this Geometry equal to the other?\"\n        if isinstance(other, OGRGeometry):\n            return self.equals(other)\n        else:\n            return False\n\n    def __ne__(self, other):\n        \"Tests for inequality.\"\n        return not (self == other)\n\n    def __str__(self):\n        \"WKT is used for the string representation.\"\n        return self.wkt\n\n    #### Geometry Properties ####\n    @property\n    def dimension(self):\n        \"Returns 0 for points, 1 for lines, and 2 for surfaces.\"\n        return capi.get_dims(self.ptr)\n\n    def _get_coord_dim(self):\n        \"Returns the coordinate dimension of the Geometry.\"\n        if isinstance(self, GeometryCollection) and GDAL_VERSION < (1, 5, 2):\n            # On GDAL versions prior to 1.5.2, there exists a bug in which\n            # the coordinate dimension of geometry collections is always 2:\n            #   http://trac.osgeo.org/gdal/ticket/2334\n            # Here we workaround by returning the coordinate dimension of the\n            # first geometry in the collection instead.\n            if len(self):\n                return capi.get_coord_dim(capi.get_geom_ref(self.ptr, 0))\n        return capi.get_coord_dim(self.ptr)\n\n    def _set_coord_dim(self, dim):\n        \"Sets the coordinate dimension of this Geometry.\"\n        if not dim in (2, 3):\n            raise ValueError('Geometry dimension must be either 2 or 3')\n        capi.set_coord_dim(self.ptr, dim)\n\n    coord_dim = property(_get_coord_dim, _set_coord_dim)\n\n    @property\n    def geom_count(self):\n        \"The number of elements in this Geometry.\"\n        return capi.get_geom_count(self.ptr)\n\n    @property\n    def point_count(self):\n        \"Returns the number of Points in this Geometry.\"\n        return capi.get_point_count(self.ptr)\n\n    @property\n    def num_points(self):\n        \"Alias for `point_count` (same name method in GEOS API.)\"\n        return self.point_count\n\n    @property\n    def num_coords(self):\n        \"Alais for `point_count`.\"\n        return self.point_count\n\n    @property\n    def geom_type(self):\n        \"Returns the Type for this Geometry.\"\n        return OGRGeomType(capi.get_geom_type(self.ptr))\n\n    @property\n    def geom_name(self):\n        \"Returns the Name of this Geometry.\"\n        return capi.get_geom_name(self.ptr)\n\n    @property\n    def area(self):\n        \"Returns the area for a LinearRing, Polygon, or MultiPolygon; 0 otherwise.\"\n        return capi.get_area(self.ptr)\n\n    @property\n    def envelope(self):\n        \"Returns the envelope for this Geometry.\"\n        # TODO: Fix Envelope() for Point geometries.\n        return Envelope(capi.get_envelope(self.ptr, byref(OGREnvelope())))\n\n    @property\n    def extent(self):\n        \"Returns the envelope as a 4-tuple, instead of as an Envelope object.\"\n        return self.envelope.tuple\n\n    #### SpatialReference-related Properties ####\n\n    # The SRS property\n    def _get_srs(self):\n        \"Returns the Spatial Reference for this Geometry.\"\n        try:\n            srs_ptr = capi.get_geom_srs(self.ptr)\n            return SpatialReference(srs_api.clone_srs(srs_ptr))\n        except SRSException:\n            return None\n\n    def _set_srs(self, srs):\n        \"Sets the SpatialReference for this geometry.\"\n        # Do not have to clone the `SpatialReference` object pointer because\n        # when it is assigned to this `OGRGeometry` it's internal OGR\n        # reference count is incremented, and will likewise be released\n        # (decremented) when this geometry's destructor is called.\n        if isinstance(srs, SpatialReference):\n            srs_ptr = srs.ptr\n        elif isinstance(srs, six.integer_types + six.string_types):\n            sr = SpatialReference(srs)\n            srs_ptr = sr.ptr\n        else:\n            raise TypeError('Cannot assign spatial reference with object of type: %s' % type(srs))\n        capi.assign_srs(self.ptr, srs_ptr)\n\n    srs = property(_get_srs, _set_srs)\n\n    # The SRID property\n    def _get_srid(self):\n        srs = self.srs\n        if srs: return srs.srid\n        return None\n\n    def _set_srid(self, srid):\n        if isinstance(srid, six.integer_types):\n            self.srs = srid\n        else:\n            raise TypeError('SRID must be set with an integer.')\n\n    srid = property(_get_srid, _set_srid)\n\n    #### Output Methods ####\n    @property\n    def geos(self):\n        \"Returns a GEOSGeometry object from this OGRGeometry.\"\n        from django.contrib.gis.geos import GEOSGeometry\n        return GEOSGeometry(self.wkb, self.srid)\n\n    @property\n    def gml(self):\n        \"Returns the GML representation of the Geometry.\"\n        return capi.to_gml(self.ptr)\n\n    @property\n    def hex(self):\n        \"Returns the hexadecimal representation of the WKB (a string).\"\n        return b2a_hex(self.wkb).upper()\n\n    @property\n    def json(self):\n        \"\"\"\n        Returns the GeoJSON representation of this Geometry.\n        \"\"\"\n        return capi.to_json(self.ptr)\n    geojson = json\n\n    @property\n    def kml(self):\n        \"Returns the KML representation of the Geometry.\"\n        return capi.to_kml(self.ptr, None)\n\n    @property\n    def wkb_size(self):\n        \"Returns the size of the WKB buffer.\"\n        return capi.get_wkbsize(self.ptr)\n\n    @property\n    def wkb(self):\n        \"Returns the WKB representation of the Geometry.\"\n        if sys.byteorder == 'little':\n            byteorder = 1 # wkbNDR (from ogr_core.h)\n        else:\n            byteorder = 0 # wkbXDR\n        sz = self.wkb_size\n        # Creating the unsigned character buffer, and passing it in by reference.\n        buf = (c_ubyte * sz)()\n        wkb = capi.to_wkb(self.ptr, byteorder, byref(buf))\n        # Returning a buffer of the string at the pointer.\n        return memoryview(string_at(buf, sz))\n\n    @property\n    def wkt(self):\n        \"Returns the WKT representation of the Geometry.\"\n        return capi.to_wkt(self.ptr, byref(c_char_p()))\n\n    @property\n    def ewkt(self):\n        \"Returns the EWKT representation of the Geometry.\"\n        srs = self.srs\n        if srs and srs.srid:\n            return 'SRID=%s;%s' % (srs.srid, self.wkt)\n        else:\n            return self.wkt\n\n    #### Geometry Methods ####\n    def clone(self):\n        \"Clones this OGR Geometry.\"\n        return OGRGeometry(capi.clone_geom(self.ptr), self.srs)\n\n    def close_rings(self):\n        \"\"\"\n        If there are any rings within this geometry that have not been\n        closed, this routine will do so by adding the starting point at the\n        end.\n        \"\"\"\n        # Closing the open rings.\n        capi.geom_close_rings(self.ptr)\n\n    def transform(self, coord_trans, clone=False):\n        \"\"\"\n        Transforms this geometry to a different spatial reference system.\n        May take a CoordTransform object, a SpatialReference object, string\n        WKT or PROJ.4, and/or an integer SRID.  By default nothing is returned\n        and the geometry is transformed in-place.  However, if the `clone`\n        keyword is set, then a transformed clone of this geometry will be\n        returned.\n        \"\"\"\n        if clone:\n            klone = self.clone()\n            klone.transform(coord_trans)\n            return klone\n\n        # Have to get the coordinate dimension of the original geometry\n        # so it can be used to reset the transformed geometry's dimension\n        # afterwards.  This is done because of GDAL bug (in versions prior\n        # to 1.7) that turns geometries 3D after transformation, see:\n        #  http://trac.osgeo.org/gdal/changeset/17792\n        if GDAL_VERSION < (1, 7):\n            orig_dim = self.coord_dim\n\n        # Depending on the input type, use the appropriate OGR routine\n        # to perform the transformation.\n        if isinstance(coord_trans, CoordTransform):\n            capi.geom_transform(self.ptr, coord_trans.ptr)\n        elif isinstance(coord_trans, SpatialReference):\n            capi.geom_transform_to(self.ptr, coord_trans.ptr)\n        elif isinstance(coord_trans, six.integer_types + six.string_types):\n            sr = SpatialReference(coord_trans)\n            capi.geom_transform_to(self.ptr, sr.ptr)\n        else:\n            raise TypeError('Transform only accepts CoordTransform, '\n                            'SpatialReference, string, and integer objects.')\n\n        # Setting with original dimension, see comment above.\n        if GDAL_VERSION < (1, 7):\n            if isinstance(self, GeometryCollection):\n                # With geometry collections have to set dimension on\n                # each internal geometry reference, as the collection\n                # dimension isn't affected.\n                for i in xrange(len(self)):\n                    internal_ptr = capi.get_geom_ref(self.ptr, i)\n                    if orig_dim != capi.get_coord_dim(internal_ptr):\n                        capi.set_coord_dim(internal_ptr, orig_dim)\n            else:\n                if self.coord_dim != orig_dim:\n                    self.coord_dim = orig_dim\n\n    def transform_to(self, srs):\n        \"For backwards-compatibility.\"\n        self.transform(srs)\n\n    #### Topology Methods ####\n    def _topology(self, func, other):\n        \"\"\"A generalized function for topology operations, takes a GDAL function and\n        the other geometry to perform the operation on.\"\"\"\n        if not isinstance(other, OGRGeometry):\n            raise TypeError('Must use another OGRGeometry object for topology operations!')\n\n        # Returning the output of the given function with the other geometry's\n        # pointer.\n        return func(self.ptr, other.ptr)\n\n    def intersects(self, other):\n        \"Returns True if this geometry intersects with the other.\"\n        return self._topology(capi.ogr_intersects, other)\n\n    def equals(self, other):\n        \"Returns True if this geometry is equivalent to the other.\"\n        return self._topology(capi.ogr_equals, other)\n\n    def disjoint(self, other):\n        \"Returns True if this geometry and the other are spatially disjoint.\"\n        return self._topology(capi.ogr_disjoint, other)\n\n    def touches(self, other):\n        \"Returns True if this geometry touches the other.\"\n        return self._topology(capi.ogr_touches, other)\n\n    def crosses(self, other):\n        \"Returns True if this geometry crosses the other.\"\n        return self._topology(capi.ogr_crosses, other)\n\n    def within(self, other):\n        \"Returns True if this geometry is within the other.\"\n        return self._topology(capi.ogr_within, other)\n\n    def contains(self, other):\n        \"Returns True if this geometry contains the other.\"\n        return self._topology(capi.ogr_contains, other)\n\n    def overlaps(self, other):\n        \"Returns True if this geometry overlaps the other.\"\n        return self._topology(capi.ogr_overlaps, other)\n\n    #### Geometry-generation Methods ####\n    def _geomgen(self, gen_func, other=None):\n        \"A helper routine for the OGR routines that generate geometries.\"\n        if isinstance(other, OGRGeometry):\n            return OGRGeometry(gen_func(self.ptr, other.ptr), self.srs)\n        else:\n            return OGRGeometry(gen_func(self.ptr), self.srs)\n\n    @property\n    def boundary(self):\n        \"Returns the boundary of this geometry.\"\n        return self._geomgen(capi.get_boundary)\n\n    @property\n    def convex_hull(self):\n        \"\"\"\n        Returns the smallest convex Polygon that contains all the points in\n        this Geometry.\n        \"\"\"\n        return self._geomgen(capi.geom_convex_hull)\n\n    def difference(self, other):\n        \"\"\"\n        Returns a new geometry consisting of the region which is the difference\n        of this geometry and the other.\n        \"\"\"\n        return self._geomgen(capi.geom_diff, other)\n\n    def intersection(self, other):\n        \"\"\"\n        Returns a new geometry consisting of the region of intersection of this\n        geometry and the other.\n        \"\"\"\n        return self._geomgen(capi.geom_intersection, other)\n\n    def sym_difference(self, other):\n        \"\"\"\n        Returns a new geometry which is the symmetric difference of this\n        geometry and the other.\n        \"\"\"\n        return self._geomgen(capi.geom_sym_diff, other)\n\n    def union(self, other):\n        \"\"\"\n        Returns a new geometry consisting of the region which is the union of\n        this geometry and the other.\n        \"\"\"\n        return self._geomgen(capi.geom_union, other)\n\n# The subclasses for OGR Geometry.\nclass Point(OGRGeometry):\n\n    @property\n    def x(self):\n        \"Returns the X coordinate for this Point.\"\n        return capi.getx(self.ptr, 0)\n\n    @property\n    def y(self):\n        \"Returns the Y coordinate for this Point.\"\n        return capi.gety(self.ptr, 0)\n\n    @property\n    def z(self):\n        \"Returns the Z coordinate for this Point.\"\n        if self.coord_dim == 3:\n            return capi.getz(self.ptr, 0)\n\n    @property\n    def tuple(self):\n        \"Returns the tuple of this point.\"\n        if self.coord_dim == 2:\n            return (self.x, self.y)\n        elif self.coord_dim == 3:\n            return (self.x, self.y, self.z)\n    coords = tuple\n\nclass LineString(OGRGeometry):\n\n    def __getitem__(self, index):\n        \"Returns the Point at the given index.\"\n        if index >= 0 and index < self.point_count:\n            x, y, z = c_double(), c_double(), c_double()\n            capi.get_point(self.ptr, index, byref(x), byref(y), byref(z))\n            dim = self.coord_dim\n            if dim == 1:\n                return (x.value,)\n            elif dim == 2:\n                return (x.value, y.value)\n            elif dim == 3:\n                return (x.value, y.value, z.value)\n        else:\n            raise OGRIndexError('index out of range: %s' % str(index))\n\n    def __iter__(self):\n        \"Iterates over each point in the LineString.\"\n        for i in xrange(self.point_count):\n            yield self[i]\n\n    def __len__(self):\n        \"The length returns the number of points in the LineString.\"\n        return self.point_count\n\n    @property\n    def tuple(self):\n        \"Returns the tuple representation of this LineString.\"\n        return tuple([self[i] for i in xrange(len(self))])\n    coords = tuple\n\n    def _listarr(self, func):\n        \"\"\"\n        Internal routine that returns a sequence (list) corresponding with\n        the given function.\n        \"\"\"\n        return [func(self.ptr, i) for i in xrange(len(self))]\n\n    @property\n    def x(self):\n        \"Returns the X coordinates in a list.\"\n        return self._listarr(capi.getx)\n\n    @property\n    def y(self):\n        \"Returns the Y coordinates in a list.\"\n        return self._listarr(capi.gety)\n\n    @property\n    def z(self):\n        \"Returns the Z coordinates in a list.\"\n        if self.coord_dim == 3:\n            return self._listarr(capi.getz)\n\n# LinearRings are used in Polygons.\nclass LinearRing(LineString): pass\n\nclass Polygon(OGRGeometry):\n\n    def __len__(self):\n        \"The number of interior rings in this Polygon.\"\n        return self.geom_count\n\n    def __iter__(self):\n        \"Iterates through each ring in the Polygon.\"\n        for i in xrange(self.geom_count):\n            yield self[i]\n\n    def __getitem__(self, index):\n        \"Gets the ring at the specified index.\"\n        if index < 0 or index >= self.geom_count:\n            raise OGRIndexError('index out of range: %s' % index)\n        else:\n            return OGRGeometry(capi.clone_geom(capi.get_geom_ref(self.ptr, index)), self.srs)\n\n    # Polygon Properties\n    @property\n    def shell(self):\n        \"Returns the shell of this Polygon.\"\n        return self[0] # First ring is the shell\n    exterior_ring = shell\n\n    @property\n    def tuple(self):\n        \"Returns a tuple of LinearRing coordinate tuples.\"\n        return tuple([self[i].tuple for i in xrange(self.geom_count)])\n    coords = tuple\n\n    @property\n    def point_count(self):\n        \"The number of Points in this Polygon.\"\n        # Summing up the number of points in each ring of the Polygon.\n        return sum([self[i].point_count for i in xrange(self.geom_count)])\n\n    @property\n    def centroid(self):\n        \"Returns the centroid (a Point) of this Polygon.\"\n        # The centroid is a Point, create a geometry for this.\n        p = OGRGeometry(OGRGeomType('Point'))\n        capi.get_centroid(self.ptr, p.ptr)\n        return p\n\n# Geometry Collection base class.\nclass GeometryCollection(OGRGeometry):\n    \"The Geometry Collection class.\"\n\n    def __getitem__(self, index):\n        \"Gets the Geometry at the specified index.\"\n        if index < 0 or index >= self.geom_count:\n            raise OGRIndexError('index out of range: %s' % index)\n        else:\n            return OGRGeometry(capi.clone_geom(capi.get_geom_ref(self.ptr, index)), self.srs)\n\n    def __iter__(self):\n        \"Iterates over each Geometry.\"\n        for i in xrange(self.geom_count):\n            yield self[i]\n\n    def __len__(self):\n        \"The number of geometries in this Geometry Collection.\"\n        return self.geom_count\n\n    def add(self, geom):\n        \"Add the geometry to this Geometry Collection.\"\n        if isinstance(geom, OGRGeometry):\n            if isinstance(geom, self.__class__):\n                for g in geom: capi.add_geom(self.ptr, g.ptr)\n            else:\n                capi.add_geom(self.ptr, geom.ptr)\n        elif isinstance(geom, six.string_types):\n            tmp = OGRGeometry(geom)\n            capi.add_geom(self.ptr, tmp.ptr)\n        else:\n            raise OGRException('Must add an OGRGeometry.')\n\n    @property\n    def point_count(self):\n        \"The number of Points in this Geometry Collection.\"\n        # Summing up the number of points in each geometry in this collection\n        return sum([self[i].point_count for i in xrange(self.geom_count)])\n\n    @property\n    def tuple(self):\n        \"Returns a tuple representation of this Geometry Collection.\"\n        return tuple([self[i].tuple for i in xrange(self.geom_count)])\n    coords = tuple\n\n# Multiple Geometry types.\nclass MultiPoint(GeometryCollection): pass\nclass MultiLineString(GeometryCollection): pass\nclass MultiPolygon(GeometryCollection): pass\n\n# Class mapping dictionary (using the OGRwkbGeometryType as the key)\nGEO_CLASSES = {1 : Point,\n               2 : LineString,\n               3 : Polygon,\n               4 : MultiPoint,\n               5 : MultiLineString,\n               6 : MultiPolygon,\n               7 : GeometryCollection,\n               101: LinearRing,\n               1 + OGRGeomType.wkb25bit : Point,\n               2 + OGRGeomType.wkb25bit : LineString,\n               3 + OGRGeomType.wkb25bit : Polygon,\n               4 + OGRGeomType.wkb25bit : MultiPoint,\n               5 + OGRGeomType.wkb25bit : MultiLineString,\n               6 + OGRGeomType.wkb25bit : MultiPolygon,\n               7 + OGRGeomType.wkb25bit : GeometryCollection,\n               }\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/gdal/geomtype.py",
    "content": "from django.contrib.gis.gdal.error import OGRException\n\nfrom django.utils import six\n\n#### OGRGeomType ####\nclass OGRGeomType(object):\n    \"Encapulates OGR Geometry Types.\"\n\n    wkb25bit = -2147483648\n\n    # Dictionary of acceptable OGRwkbGeometryType s and their string names.\n    _types = {0 : 'Unknown',\n              1 : 'Point',\n              2 : 'LineString',\n              3 : 'Polygon',\n              4 : 'MultiPoint',\n              5 : 'MultiLineString',\n              6 : 'MultiPolygon',\n              7 : 'GeometryCollection',\n              100 : 'None',\n              101 : 'LinearRing',\n              1 + wkb25bit: 'Point25D',\n              2 + wkb25bit: 'LineString25D',\n              3 + wkb25bit: 'Polygon25D',\n              4 + wkb25bit: 'MultiPoint25D',\n              5 + wkb25bit : 'MultiLineString25D',\n              6 + wkb25bit : 'MultiPolygon25D',\n              7 + wkb25bit : 'GeometryCollection25D',\n              }\n    # Reverse type dictionary, keyed by lower-case of the name.\n    _str_types = dict([(v.lower(), k) for k, v in _types.items()])\n\n    def __init__(self, type_input):\n        \"Figures out the correct OGR Type based upon the input.\"\n        if isinstance(type_input, OGRGeomType):\n            num = type_input.num\n        elif isinstance(type_input, six.string_types):\n            type_input = type_input.lower()\n            if type_input == 'geometry': type_input='unknown'\n            num = self._str_types.get(type_input, None)\n            if num is None:\n                raise OGRException('Invalid OGR String Type \"%s\"' % type_input)\n        elif isinstance(type_input, int):\n            if not type_input in self._types:\n                raise OGRException('Invalid OGR Integer Type: %d' % type_input)\n            num = type_input\n        else:\n            raise TypeError('Invalid OGR input type given.')\n\n        # Setting the OGR geometry type number.\n        self.num = num\n\n    def __str__(self):\n        \"Returns the value of the name property.\"\n        return self.name\n\n    def __eq__(self, other):\n        \"\"\"\n        Does an equivalence test on the OGR type with the given\n        other OGRGeomType, the short-hand string, or the integer.\n        \"\"\"\n        if isinstance(other, OGRGeomType):\n            return self.num == other.num\n        elif isinstance(other, six.string_types):\n            return self.name.lower() == other.lower()\n        elif isinstance(other, int):\n            return self.num == other\n        else:\n            return False\n\n    def __ne__(self, other):\n        return not (self == other)\n\n    @property\n    def name(self):\n        \"Returns a short-hand string form of the OGR Geometry type.\"\n        return self._types[self.num]\n\n    @property\n    def django(self):\n        \"Returns the Django GeometryField for this OGR Type.\"\n        s = self.name.replace('25D', '')\n        if s in ('LinearRing', 'None'):\n            return None\n        elif s == 'Unknown':\n            s = 'Geometry'\n        return s + 'Field'\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/gdal/layer.py",
    "content": "# Needed ctypes routines\nfrom ctypes import c_double, byref\n\n# Other GDAL imports.\nfrom django.contrib.gis.gdal.base import GDALBase\nfrom django.contrib.gis.gdal.envelope import Envelope, OGREnvelope\nfrom django.contrib.gis.gdal.error import OGRException, OGRIndexError, SRSException\nfrom django.contrib.gis.gdal.feature import Feature\nfrom django.contrib.gis.gdal.field import OGRFieldTypes\nfrom django.contrib.gis.gdal.geomtype import OGRGeomType\nfrom django.contrib.gis.gdal.geometries import OGRGeometry\nfrom django.contrib.gis.gdal.srs import SpatialReference\n\n# GDAL ctypes function prototypes.\nfrom django.contrib.gis.gdal.prototypes import ds as capi, geom as geom_api, srs as srs_api\n\nfrom django.utils.encoding import force_bytes, force_text\nfrom django.utils import six\nfrom django.utils.six.moves import xrange\n\n# For more information, see the OGR C API source code:\n#  http://www.gdal.org/ogr/ogr__api_8h.html\n#\n# The OGR_L_* routines are relevant here.\nclass Layer(GDALBase):\n    \"A class that wraps an OGR Layer, needs to be instantiated from a DataSource object.\"\n\n    #### Python 'magic' routines ####\n    def __init__(self, layer_ptr, ds):\n        \"\"\"\n        Initializes on an OGR C pointer to the Layer and the `DataSource` object\n        that owns this layer.  The `DataSource` object is required so that a\n        reference to it is kept with this Layer.  This prevents garbage\n        collection of the `DataSource` while this Layer is still active.\n        \"\"\"\n        if not layer_ptr:\n            raise OGRException('Cannot create Layer, invalid pointer given')\n        self.ptr = layer_ptr\n        self._ds = ds\n        self._ldefn = capi.get_layer_defn(self._ptr)\n        # Does the Layer support random reading?\n        self._random_read = self.test_capability(b'RandomRead')\n\n    def __getitem__(self, index):\n        \"Gets the Feature at the specified index.\"\n        if isinstance(index, six.integer_types):\n            # An integer index was given -- we cannot do a check based on the\n            # number of features because the beginning and ending feature IDs\n            # are not guaranteed to be 0 and len(layer)-1, respectively.\n            if index < 0: raise OGRIndexError('Negative indices are not allowed on OGR Layers.')\n            return self._make_feature(index)\n        elif isinstance(index, slice):\n            # A slice was given\n            start, stop, stride = index.indices(self.num_feat)\n            return [self._make_feature(fid) for fid in xrange(start, stop, stride)]\n        else:\n            raise TypeError('Integers and slices may only be used when indexing OGR Layers.')\n\n    def __iter__(self):\n        \"Iterates over each Feature in the Layer.\"\n        # ResetReading() must be called before iteration is to begin.\n        capi.reset_reading(self._ptr)\n        for i in xrange(self.num_feat):\n            yield Feature(capi.get_next_feature(self._ptr), self)\n\n    def __len__(self):\n        \"The length is the number of features.\"\n        return self.num_feat\n\n    def __str__(self):\n        \"The string name of the layer.\"\n        return self.name\n\n    def _make_feature(self, feat_id):\n        \"\"\"\n        Helper routine for __getitem__ that constructs a Feature from the given\n        Feature ID.  If the OGR Layer does not support random-access reading,\n        then each feature of the layer will be incremented through until the\n        a Feature is found matching the given feature ID.\n        \"\"\"\n        if self._random_read:\n            # If the Layer supports random reading, return.\n            try:\n                return Feature(capi.get_feature(self.ptr, feat_id), self)\n            except OGRException:\n                pass\n        else:\n            # Random access isn't supported, have to increment through\n            # each feature until the given feature ID is encountered.\n            for feat in self:\n                if feat.fid == feat_id: return feat\n        # Should have returned a Feature, raise an OGRIndexError.\n        raise OGRIndexError('Invalid feature id: %s.' % feat_id)\n\n    #### Layer properties ####\n    @property\n    def extent(self):\n        \"Returns the extent (an Envelope) of this layer.\"\n        env = OGREnvelope()\n        capi.get_extent(self.ptr, byref(env), 1)\n        return Envelope(env)\n\n    @property\n    def name(self):\n        \"Returns the name of this layer in the Data Source.\"\n        name = capi.get_fd_name(self._ldefn)\n        return force_text(name, self._ds.encoding, strings_only=True)\n\n    @property\n    def num_feat(self, force=1):\n        \"Returns the number of features in the Layer.\"\n        return capi.get_feature_count(self.ptr, force)\n\n    @property\n    def num_fields(self):\n        \"Returns the number of fields in the Layer.\"\n        return capi.get_field_count(self._ldefn)\n\n    @property\n    def geom_type(self):\n        \"Returns the geometry type (OGRGeomType) of the Layer.\"\n        return OGRGeomType(capi.get_fd_geom_type(self._ldefn))\n\n    @property\n    def srs(self):\n        \"Returns the Spatial Reference used in this Layer.\"\n        try:\n            ptr = capi.get_layer_srs(self.ptr)\n            return SpatialReference(srs_api.clone_srs(ptr))\n        except SRSException:\n            return None\n\n    @property\n    def fields(self):\n        \"\"\"\n        Returns a list of string names corresponding to each of the Fields\n        available in this Layer.\n        \"\"\"\n        return [force_text(capi.get_field_name(capi.get_field_defn(self._ldefn, i)),\n                           self._ds.encoding, strings_only=True)\n                for i in xrange(self.num_fields)]\n\n    @property\n    def field_types(self):\n        \"\"\"\n        Returns a list of the types of fields in this Layer.  For example,\n        the list [OFTInteger, OFTReal, OFTString] would be returned for\n        an OGR layer that had an integer, a floating-point, and string\n        fields.\n        \"\"\"\n        return [OGRFieldTypes[capi.get_field_type(capi.get_field_defn(self._ldefn, i))]\n                for i in xrange(self.num_fields)]\n\n    @property\n    def field_widths(self):\n        \"Returns a list of the maximum field widths for the features.\"\n        return [capi.get_field_width(capi.get_field_defn(self._ldefn, i))\n                for i in xrange(self.num_fields)]\n\n    @property\n    def field_precisions(self):\n        \"Returns the field precisions for the features.\"\n        return [capi.get_field_precision(capi.get_field_defn(self._ldefn, i))\n                for i in xrange(self.num_fields)]\n\n    def _get_spatial_filter(self):\n        try:\n            return OGRGeometry(geom_api.clone_geom(capi.get_spatial_filter(self.ptr)))\n        except OGRException:\n            return None\n\n    def _set_spatial_filter(self, filter):\n        if isinstance(filter, OGRGeometry):\n            capi.set_spatial_filter(self.ptr, filter.ptr)\n        elif isinstance(filter, (tuple, list)):\n            if not len(filter) == 4:\n                raise ValueError('Spatial filter list/tuple must have 4 elements.')\n            # Map c_double onto params -- if a bad type is passed in it\n            # will be caught here.\n            xmin, ymin, xmax, ymax = map(c_double, filter)\n            capi.set_spatial_filter_rect(self.ptr, xmin, ymin, xmax, ymax)\n        elif filter is None:\n            capi.set_spatial_filter(self.ptr, None)\n        else:\n            raise TypeError('Spatial filter must be either an OGRGeometry instance, a 4-tuple, or None.')\n\n    spatial_filter = property(_get_spatial_filter, _set_spatial_filter)\n\n    #### Layer Methods ####\n    def get_fields(self, field_name):\n        \"\"\"\n        Returns a list containing the given field name for every Feature\n        in the Layer.\n        \"\"\"\n        if not field_name in self.fields:\n            raise OGRException('invalid field name: %s' % field_name)\n        return [feat.get(field_name) for feat in self]\n\n    def get_geoms(self, geos=False):\n        \"\"\"\n        Returns a list containing the OGRGeometry for every Feature in\n        the Layer.\n        \"\"\"\n        if geos:\n            from django.contrib.gis.geos import GEOSGeometry\n            return [GEOSGeometry(feat.geom.wkb) for feat in self]\n        else:\n            return [feat.geom for feat in self]\n\n    def test_capability(self, capability):\n        \"\"\"\n        Returns a bool indicating whether the this Layer supports the given\n        capability (a string).  Valid capability strings include:\n          'RandomRead', 'SequentialWrite', 'RandomWrite', 'FastSpatialFilter',\n          'FastFeatureCount', 'FastGetExtent', 'CreateField', 'Transactions',\n          'DeleteFeature', and 'FastSetNextByIndex'.\n        \"\"\"\n        return bool(capi.test_capability(self.ptr, force_bytes(capability)))\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/gdal/libgdal.py",
    "content": "from __future__ import unicode_literals\n\nimport logging\nimport os\nimport re\nfrom ctypes import c_char_p, c_int, CDLL, CFUNCTYPE\nfrom ctypes.util import find_library\n\nfrom django.contrib.gis.gdal.error import OGRException\nfrom django.core.exceptions import ImproperlyConfigured\n\nlogger = logging.getLogger('django.contrib.gis')\n\n# Custom library path set?\ntry:\n    from django.conf import settings\n    lib_path = settings.GDAL_LIBRARY_PATH\nexcept (AttributeError, EnvironmentError,\n        ImportError, ImproperlyConfigured):\n    lib_path = None\n\nif lib_path:\n    lib_names = None\nelif os.name == 'nt':\n    # Windows NT shared libraries\n    lib_names = ['gdal19', 'gdal18', 'gdal17', 'gdal16', 'gdal15']\nelif os.name == 'posix':\n    # *NIX library names.\n    lib_names = ['gdal', 'GDAL', 'gdal1.9.0', 'gdal1.8.0', 'gdal1.7.0',\n        'gdal1.6.0', 'gdal1.5.0']\nelse:\n    raise OGRException('Unsupported OS \"%s\"' % os.name)\n\n# Using the ctypes `find_library` utility  to find the\n# path to the GDAL library from the list of library names.\nif lib_names:\n    for lib_name in lib_names:\n        lib_path = find_library(lib_name)\n        if not lib_path is None: break\n\nif lib_path is None:\n    raise OGRException('Could not find the GDAL library (tried \"%s\"). '\n                       'Try setting GDAL_LIBRARY_PATH in your settings.' %\n                       '\", \"'.join(lib_names))\n\n# This loads the GDAL/OGR C library\nlgdal = CDLL(lib_path)\n\n# On Windows, the GDAL binaries have some OSR routines exported with\n# STDCALL, while others are not.  Thus, the library will also need to\n# be loaded up as WinDLL for said OSR functions that require the\n# different calling convention.\nif os.name == 'nt':\n    from ctypes import WinDLL\n    lwingdal = WinDLL(lib_path)\n\ndef std_call(func):\n    \"\"\"\n    Returns the correct STDCALL function for certain OSR routines on Win32\n    platforms.\n    \"\"\"\n    if os.name == 'nt':\n        return lwingdal[func]\n    else:\n        return lgdal[func]\n\n#### Version-information functions. ####\n\n# Returns GDAL library version information with the given key.\n_version_info = std_call('GDALVersionInfo')\n_version_info.argtypes = [c_char_p]\n_version_info.restype = c_char_p\n\ndef gdal_version():\n    \"Returns only the GDAL version number information.\"\n    return _version_info(b'RELEASE_NAME')\n\ndef gdal_full_version():\n    \"Returns the full GDAL version information.\"\n    return _version_info('')\n\nversion_regex = re.compile(r'^(?P<major>\\d+)\\.(?P<minor>\\d+)(\\.(?P<subminor>\\d+))?')\ndef gdal_version_info():\n    ver = gdal_version().decode()\n    m = version_regex.match(ver)\n    if not m: raise OGRException('Could not parse GDAL version string \"%s\"' % ver)\n    return dict([(key, m.group(key)) for key in ('major', 'minor', 'subminor')])\n\n_verinfo = gdal_version_info()\nGDAL_MAJOR_VERSION = int(_verinfo['major'])\nGDAL_MINOR_VERSION = int(_verinfo['minor'])\nGDAL_SUBMINOR_VERSION = _verinfo['subminor'] and int(_verinfo['subminor'])\nGDAL_VERSION = (GDAL_MAJOR_VERSION, GDAL_MINOR_VERSION, GDAL_SUBMINOR_VERSION)\ndel _verinfo\n\n# Set library error handling so as errors are logged\nCPLErrorHandler = CFUNCTYPE(None, c_int, c_int, c_char_p)\ndef err_handler(error_class, error_number, message):\n    logger.error('GDAL_ERROR %d: %s' % (error_number, message))\nerr_handler = CPLErrorHandler(err_handler)\n\ndef function(name, args, restype):\n    func = std_call(name)\n    func.argtypes = args\n    func.restype = restype\n    return func\n\nset_error_handler = function('CPLSetErrorHandler', [CPLErrorHandler], CPLErrorHandler)\nset_error_handler(err_handler)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/gdal/prototypes/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/gdal/prototypes/ds.py",
    "content": "\"\"\"\n This module houses the ctypes function prototypes for OGR DataSource\n related data structures. OGR_Dr_*, OGR_DS_*, OGR_L_*, OGR_F_*, \n OGR_Fld_* routines are relevant here.\n\"\"\"\nfrom ctypes import c_char_p, c_double, c_int, c_long, c_void_p, POINTER\nfrom django.contrib.gis.gdal.envelope import OGREnvelope\nfrom django.contrib.gis.gdal.libgdal import lgdal\nfrom django.contrib.gis.gdal.prototypes.generation import (const_string_output,\n    double_output, geom_output, int_output, srs_output, void_output, voidptr_output)\n\nc_int_p = POINTER(c_int) # shortcut type\n\n### Driver Routines ###\nregister_all = void_output(lgdal.OGRRegisterAll, [], errcheck=False)\ncleanup_all = void_output(lgdal.OGRCleanupAll, [], errcheck=False)\nget_driver = voidptr_output(lgdal.OGRGetDriver, [c_int])\nget_driver_by_name = voidptr_output(lgdal.OGRGetDriverByName, [c_char_p])\nget_driver_count = int_output(lgdal.OGRGetDriverCount, [])\nget_driver_name = const_string_output(lgdal.OGR_Dr_GetName, [c_void_p], decoding='ascii')\n\n### DataSource ###\nopen_ds = voidptr_output(lgdal.OGROpen, [c_char_p, c_int, POINTER(c_void_p)])\ndestroy_ds = void_output(lgdal.OGR_DS_Destroy, [c_void_p], errcheck=False)\nrelease_ds = void_output(lgdal.OGRReleaseDataSource, [c_void_p])\nget_ds_name = const_string_output(lgdal.OGR_DS_GetName, [c_void_p])\nget_layer = voidptr_output(lgdal.OGR_DS_GetLayer, [c_void_p, c_int])\nget_layer_by_name = voidptr_output(lgdal.OGR_DS_GetLayerByName, [c_void_p, c_char_p])\nget_layer_count = int_output(lgdal.OGR_DS_GetLayerCount, [c_void_p])\n\n### Layer Routines ###\nget_extent = void_output(lgdal.OGR_L_GetExtent, [c_void_p, POINTER(OGREnvelope), c_int])\nget_feature = voidptr_output(lgdal.OGR_L_GetFeature, [c_void_p, c_long])\nget_feature_count = int_output(lgdal.OGR_L_GetFeatureCount, [c_void_p, c_int])\nget_layer_defn = voidptr_output(lgdal.OGR_L_GetLayerDefn, [c_void_p])\nget_layer_srs = srs_output(lgdal.OGR_L_GetSpatialRef, [c_void_p])\nget_next_feature = voidptr_output(lgdal.OGR_L_GetNextFeature, [c_void_p])\nreset_reading = void_output(lgdal.OGR_L_ResetReading, [c_void_p], errcheck=False)\ntest_capability = int_output(lgdal.OGR_L_TestCapability, [c_void_p, c_char_p])\nget_spatial_filter = geom_output(lgdal.OGR_L_GetSpatialFilter, [c_void_p])\nset_spatial_filter = void_output(lgdal.OGR_L_SetSpatialFilter, [c_void_p, c_void_p], errcheck=False)\nset_spatial_filter_rect = void_output(lgdal.OGR_L_SetSpatialFilterRect, [c_void_p, c_double, c_double, c_double, c_double], errcheck=False)\n\n### Feature Definition Routines ###\nget_fd_geom_type = int_output(lgdal.OGR_FD_GetGeomType, [c_void_p])\nget_fd_name = const_string_output(lgdal.OGR_FD_GetName, [c_void_p])\nget_feat_name = const_string_output(lgdal.OGR_FD_GetName, [c_void_p])\nget_field_count = int_output(lgdal.OGR_FD_GetFieldCount, [c_void_p])\nget_field_defn = voidptr_output(lgdal.OGR_FD_GetFieldDefn, [c_void_p, c_int])\n\n### Feature Routines ###\nclone_feature = voidptr_output(lgdal.OGR_F_Clone, [c_void_p])\ndestroy_feature = void_output(lgdal.OGR_F_Destroy, [c_void_p], errcheck=False)\nfeature_equal = int_output(lgdal.OGR_F_Equal, [c_void_p, c_void_p])\nget_feat_geom_ref = geom_output(lgdal.OGR_F_GetGeometryRef, [c_void_p])\nget_feat_field_count = int_output(lgdal.OGR_F_GetFieldCount, [c_void_p])\nget_feat_field_defn = voidptr_output(lgdal.OGR_F_GetFieldDefnRef, [c_void_p, c_int])\nget_fid = int_output(lgdal.OGR_F_GetFID, [c_void_p])\nget_field_as_datetime = int_output(lgdal.OGR_F_GetFieldAsDateTime, [c_void_p, c_int, c_int_p, c_int_p, c_int_p, c_int_p, c_int_p, c_int_p])\nget_field_as_double = double_output(lgdal.OGR_F_GetFieldAsDouble, [c_void_p, c_int])\nget_field_as_integer = int_output(lgdal.OGR_F_GetFieldAsInteger, [c_void_p, c_int])\nget_field_as_string = const_string_output(lgdal.OGR_F_GetFieldAsString, [c_void_p, c_int])\nget_field_index = int_output(lgdal.OGR_F_GetFieldIndex, [c_void_p, c_char_p])\n\n### Field Routines ###\nget_field_name = const_string_output(lgdal.OGR_Fld_GetNameRef, [c_void_p])\nget_field_precision = int_output(lgdal.OGR_Fld_GetPrecision, [c_void_p])\nget_field_type = int_output(lgdal.OGR_Fld_GetType, [c_void_p])\nget_field_type_name = const_string_output(lgdal.OGR_GetFieldTypeName, [c_int])\nget_field_width = int_output(lgdal.OGR_Fld_GetWidth, [c_void_p])\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/gdal/prototypes/errcheck.py",
    "content": "\"\"\"\n This module houses the error-checking routines used by the GDAL\n ctypes prototypes.\n\"\"\"\nfrom ctypes import c_void_p, string_at\nfrom django.contrib.gis.gdal.error import check_err, OGRException, SRSException\nfrom django.contrib.gis.gdal.libgdal import lgdal\nfrom django.utils import six\n\n# Helper routines for retrieving pointers and/or values from\n# arguments passed in by reference.\ndef arg_byref(args, offset=-1):\n    \"Returns the pointer argument's by-refernece value.\"\n    return args[offset]._obj.value\n\ndef ptr_byref(args, offset=-1):\n    \"Returns the pointer argument passed in by-reference.\"\n    return args[offset]._obj\n\ndef check_bool(result, func, cargs):\n    \"Returns the boolean evaluation of the value.\"\n    if bool(result): return True\n    else: return False\n\n### String checking Routines ###\ndef check_const_string(result, func, cargs, offset=None):\n    \"\"\"\n    Similar functionality to `check_string`, but does not free the pointer.\n    \"\"\"\n    if offset:\n        check_err(result)\n        ptr = ptr_byref(cargs, offset)\n        return ptr.value\n    else:\n        return result\n\ndef check_string(result, func, cargs, offset=-1, str_result=False):\n    \"\"\"\n    Checks the string output returned from the given function, and frees\n    the string pointer allocated by OGR.  The `str_result` keyword\n    may be used when the result is the string pointer, otherwise\n    the OGR error code is assumed.  The `offset` keyword may be used\n    to extract the string pointer passed in by-reference at the given\n    slice offset in the function arguments.\n    \"\"\"\n    if str_result:\n        # For routines that return a string.\n        ptr = result\n        if not ptr: s = None\n        else: s = string_at(result)\n    else:\n        # Error-code return specified.\n        check_err(result)\n        ptr = ptr_byref(cargs, offset)\n        # Getting the string value\n        s = ptr.value\n    # Correctly freeing the allocated memory beind GDAL pointer\n    # w/the VSIFree routine.\n    if ptr: lgdal.VSIFree(ptr)\n    return s\n\n### DataSource, Layer error-checking ###\n\n### Envelope checking ###\ndef check_envelope(result, func, cargs, offset=-1):\n    \"Checks a function that returns an OGR Envelope by reference.\"\n    env = ptr_byref(cargs, offset)\n    return env\n\n### Geometry error-checking routines ###\ndef check_geom(result, func, cargs):\n    \"Checks a function that returns a geometry.\"\n    # OGR_G_Clone may return an integer, even though the\n    # restype is set to c_void_p\n    if isinstance(result, six.integer_types):\n        result = c_void_p(result)\n    if not result:\n        raise OGRException('Invalid geometry pointer returned from \"%s\".' % func.__name__)\n    return result\n\ndef check_geom_offset(result, func, cargs, offset=-1):\n    \"Chcks the geometry at the given offset in the C parameter list.\"\n    check_err(result)\n    geom = ptr_byref(cargs, offset=offset)\n    return check_geom(geom, func, cargs)\n\n### Spatial Reference error-checking routines ###\ndef check_srs(result, func, cargs):\n    if isinstance(result, six.integer_types):\n        result = c_void_p(result)\n    if not result:\n        raise SRSException('Invalid spatial reference pointer returned from \"%s\".' % func.__name__)\n    return result\n\n### Other error-checking routines ###\ndef check_arg_errcode(result, func, cargs):\n    \"\"\"\n    The error code is returned in the last argument, by reference.\n    Check its value with `check_err` before returning the result.\n    \"\"\"\n    check_err(arg_byref(cargs))\n    return result\n\ndef check_errcode(result, func, cargs):\n    \"\"\"\n    Check the error code returned (c_int).\n    \"\"\"\n    check_err(result)\n    return\n\ndef check_pointer(result, func, cargs):\n    \"Makes sure the result pointer is valid.\"\n    if isinstance(result, six.integer_types):\n        result = c_void_p(result)\n    if bool(result):\n        return result\n    else:\n        raise OGRException('Invalid pointer returned from \"%s\"' % func.__name__)\n\ndef check_str_arg(result, func, cargs):\n    \"\"\"\n    This is for the OSRGet[Angular|Linear]Units functions, which\n    require that the returned string pointer not be freed.  This\n    returns both the double and tring values.\n    \"\"\"\n    dbl = result\n    ptr = cargs[-1]._obj\n    return dbl, ptr.value.decode()\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/gdal/prototypes/generation.py",
    "content": "\"\"\"\n This module contains functions that generate ctypes prototypes for the\n GDAL routines.\n\"\"\"\n\nfrom ctypes import c_char_p, c_double, c_int, c_void_p\nfrom django.contrib.gis.gdal.prototypes.errcheck import (\n    check_arg_errcode, check_errcode, check_geom, check_geom_offset,\n    check_pointer, check_srs, check_str_arg, check_string, check_const_string)\n\nclass gdal_char_p(c_char_p):\n    pass\n\ndef double_output(func, argtypes, errcheck=False, strarg=False):\n    \"Generates a ctypes function that returns a double value.\"\n    func.argtypes = argtypes\n    func.restype = c_double\n    if errcheck: func.errcheck = check_arg_errcode\n    if strarg: func.errcheck = check_str_arg\n    return func\n\ndef geom_output(func, argtypes, offset=None):\n    \"\"\"\n    Generates a function that returns a Geometry either by reference\n    or directly (if the return_geom keyword is set to True).\n    \"\"\"\n    # Setting the argument types\n    func.argtypes = argtypes\n\n    if not offset:\n        # When a geometry pointer is directly returned.\n        func.restype = c_void_p\n        func.errcheck = check_geom\n    else:\n        # Error code returned, geometry is returned by-reference.\n        func.restype = c_int\n        def geomerrcheck(result, func, cargs):\n            return check_geom_offset(result, func, cargs, offset)\n        func.errcheck = geomerrcheck\n\n    return func\n\ndef int_output(func, argtypes):\n    \"Generates a ctypes function that returns an integer value.\"\n    func.argtypes = argtypes\n    func.restype = c_int\n    return func\n\ndef srs_output(func, argtypes):\n    \"\"\"\n    Generates a ctypes prototype for the given function with\n    the given C arguments that returns a pointer to an OGR\n    Spatial Reference System.\n    \"\"\"\n    func.argtypes = argtypes\n    func.restype = c_void_p\n    func.errcheck = check_srs\n    return func\n\ndef const_string_output(func, argtypes, offset=None, decoding=None):\n    func.argtypes = argtypes\n    if offset:\n        func.restype = c_int\n    else:\n        func.restype = c_char_p\n\n    def _check_const(result, func, cargs):\n        res = check_const_string(result, func, cargs, offset=offset)\n        if res and decoding:\n            res = res.decode(decoding)\n        return res\n    func.errcheck = _check_const\n\n    return func\n\ndef string_output(func, argtypes, offset=-1, str_result=False, decoding=None):\n    \"\"\"\n    Generates a ctypes prototype for the given function with the\n    given argument types that returns a string from a GDAL pointer.\n    The `const` flag indicates whether the allocated pointer should \n    be freed via the GDAL library routine VSIFree -- but only applies\n    only when `str_result` is True.\n    \"\"\"\n    func.argtypes = argtypes\n    if str_result:\n        # Use subclass of c_char_p so the error checking routine\n        # can free the memory at the pointer's address.\n        func.restype = gdal_char_p\n    else:\n        # Error code is returned\n        func.restype = c_int\n\n    # Dynamically defining our error-checking function with the\n    # given offset.\n    def _check_str(result, func, cargs):\n        res = check_string(result, func, cargs,\n                            offset=offset, str_result=str_result)\n        if res and decoding:\n            res = res.decode(decoding)\n        return res\n    func.errcheck = _check_str\n    return func\n\ndef void_output(func, argtypes, errcheck=True):\n    \"\"\"\n    For functions that don't only return an error code that needs to\n    be examined.\n    \"\"\"\n    if argtypes: func.argtypes = argtypes\n    if errcheck:\n        # `errcheck` keyword may be set to False for routines that\n        # return void, rather than a status code.\n        func.restype = c_int\n        func.errcheck = check_errcode\n    else:\n        func.restype = None\n        \n    return func\n\ndef voidptr_output(func, argtypes):\n    \"For functions that return c_void_p.\"\n    func.argtypes = argtypes\n    func.restype = c_void_p\n    func.errcheck = check_pointer\n    return func\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/gdal/prototypes/geom.py",
    "content": "from ctypes import c_char_p, c_double, c_int, c_void_p, POINTER\nfrom django.contrib.gis.gdal.envelope import OGREnvelope\nfrom django.contrib.gis.gdal.libgdal import lgdal\nfrom django.contrib.gis.gdal.prototypes.errcheck import check_bool, check_envelope\nfrom django.contrib.gis.gdal.prototypes.generation import (const_string_output,\n    double_output, geom_output, int_output, srs_output, string_output, void_output)\n\n### Generation routines specific to this module ###\ndef env_func(f, argtypes):\n    \"For getting OGREnvelopes.\"\n    f.argtypes = argtypes\n    f.restype = None\n    f.errcheck = check_envelope\n    return f\n\ndef pnt_func(f):\n    \"For accessing point information.\"\n    return double_output(f, [c_void_p, c_int])\n\ndef topology_func(f):\n    f.argtypes = [c_void_p, c_void_p]\n    f.restype = c_int\n    f.errchck = check_bool\n    return f\n\n### OGR_G ctypes function prototypes ###\n\n# GeoJSON routines.\nfrom_json = geom_output(lgdal.OGR_G_CreateGeometryFromJson, [c_char_p])\nto_json = string_output(lgdal.OGR_G_ExportToJson, [c_void_p], str_result=True, decoding='ascii')\nto_kml = string_output(lgdal.OGR_G_ExportToKML, [c_void_p, c_char_p], str_result=True, decoding='ascii')\n\n# GetX, GetY, GetZ all return doubles.\ngetx = pnt_func(lgdal.OGR_G_GetX)\ngety = pnt_func(lgdal.OGR_G_GetY)\ngetz = pnt_func(lgdal.OGR_G_GetZ)\n    \n# Geometry creation routines.\nfrom_wkb = geom_output(lgdal.OGR_G_CreateFromWkb, [c_char_p, c_void_p, POINTER(c_void_p), c_int], offset=-2)\nfrom_wkt = geom_output(lgdal.OGR_G_CreateFromWkt, [POINTER(c_char_p), c_void_p, POINTER(c_void_p)], offset=-1)\ncreate_geom = geom_output(lgdal.OGR_G_CreateGeometry, [c_int])\nclone_geom = geom_output(lgdal.OGR_G_Clone, [c_void_p])\nget_geom_ref = geom_output(lgdal.OGR_G_GetGeometryRef, [c_void_p, c_int])\nget_boundary = geom_output(lgdal.OGR_G_GetBoundary, [c_void_p])\ngeom_convex_hull = geom_output(lgdal.OGR_G_ConvexHull, [c_void_p])\ngeom_diff = geom_output(lgdal.OGR_G_Difference, [c_void_p, c_void_p])\ngeom_intersection = geom_output(lgdal.OGR_G_Intersection, [c_void_p, c_void_p])\ngeom_sym_diff = geom_output(lgdal.OGR_G_SymmetricDifference, [c_void_p, c_void_p])\ngeom_union = geom_output(lgdal.OGR_G_Union, [c_void_p, c_void_p])\n\n# Geometry modification routines.\nadd_geom = void_output(lgdal.OGR_G_AddGeometry, [c_void_p, c_void_p])\nimport_wkt = void_output(lgdal.OGR_G_ImportFromWkt, [c_void_p, POINTER(c_char_p)])\n\n# Destroys a geometry\ndestroy_geom = void_output(lgdal.OGR_G_DestroyGeometry, [c_void_p], errcheck=False)\n\n# Geometry export routines.\nto_wkb = void_output(lgdal.OGR_G_ExportToWkb, None, errcheck=True) # special handling for WKB.\nto_wkt = string_output(lgdal.OGR_G_ExportToWkt, [c_void_p, POINTER(c_char_p)], decoding='ascii')\nto_gml = string_output(lgdal.OGR_G_ExportToGML, [c_void_p], str_result=True, decoding='ascii')\nget_wkbsize = int_output(lgdal.OGR_G_WkbSize, [c_void_p])\n\n# Geometry spatial-reference related routines.\nassign_srs = void_output(lgdal.OGR_G_AssignSpatialReference, [c_void_p, c_void_p], errcheck=False)\nget_geom_srs = srs_output(lgdal.OGR_G_GetSpatialReference, [c_void_p])\n\n# Geometry properties\nget_area = double_output(lgdal.OGR_G_GetArea, [c_void_p])\nget_centroid = void_output(lgdal.OGR_G_Centroid, [c_void_p, c_void_p])\nget_dims = int_output(lgdal.OGR_G_GetDimension, [c_void_p])\nget_coord_dim = int_output(lgdal.OGR_G_GetCoordinateDimension, [c_void_p])\nset_coord_dim = void_output(lgdal.OGR_G_SetCoordinateDimension, [c_void_p, c_int], errcheck=False)\n\nget_geom_count = int_output(lgdal.OGR_G_GetGeometryCount, [c_void_p])\nget_geom_name = const_string_output(lgdal.OGR_G_GetGeometryName, [c_void_p], decoding='ascii')\nget_geom_type = int_output(lgdal.OGR_G_GetGeometryType, [c_void_p])\nget_point_count = int_output(lgdal.OGR_G_GetPointCount, [c_void_p])\nget_point = void_output(lgdal.OGR_G_GetPoint, [c_void_p, c_int, POINTER(c_double), POINTER(c_double), POINTER(c_double)], errcheck=False)\ngeom_close_rings = void_output(lgdal.OGR_G_CloseRings, [c_void_p], errcheck=False)\n\n# Topology routines.\nogr_contains = topology_func(lgdal.OGR_G_Contains)\nogr_crosses = topology_func(lgdal.OGR_G_Crosses)\nogr_disjoint = topology_func(lgdal.OGR_G_Disjoint)\nogr_equals = topology_func(lgdal.OGR_G_Equals)\nogr_intersects = topology_func(lgdal.OGR_G_Intersects)\nogr_overlaps = topology_func(lgdal.OGR_G_Overlaps)\nogr_touches = topology_func(lgdal.OGR_G_Touches)\nogr_within = topology_func(lgdal.OGR_G_Within)\n\n# Transformation routines.\ngeom_transform = void_output(lgdal.OGR_G_Transform, [c_void_p, c_void_p])\ngeom_transform_to = void_output(lgdal.OGR_G_TransformTo, [c_void_p, c_void_p])\n\n# For retrieving the envelope of the geometry.\nget_envelope = env_func(lgdal.OGR_G_GetEnvelope, [c_void_p, POINTER(OGREnvelope)])\n\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/gdal/prototypes/srs.py",
    "content": "from ctypes import c_char_p, c_int, c_void_p, POINTER\nfrom django.contrib.gis.gdal.libgdal import lgdal, std_call\nfrom django.contrib.gis.gdal.prototypes.generation import (const_string_output,\n    double_output, int_output, srs_output, string_output, void_output)\n\n## Shortcut generation for routines with known parameters.\ndef srs_double(f):\n    \"\"\"\n    Creates a function prototype for the OSR routines that take\n    the OSRSpatialReference object and\n    \"\"\"\n    return double_output(f, [c_void_p, POINTER(c_int)], errcheck=True)\n\ndef units_func(f):\n    \"\"\"\n    Creates a ctypes function prototype for OSR units functions, e.g.,\n    OSRGetAngularUnits, OSRGetLinearUnits.\n    \"\"\"\n    return double_output(f, [c_void_p, POINTER(c_char_p)], strarg=True)\n\n# Creation & destruction.\nclone_srs = srs_output(std_call('OSRClone'), [c_void_p])\nnew_srs = srs_output(std_call('OSRNewSpatialReference'), [c_char_p])\nrelease_srs = void_output(lgdal.OSRRelease, [c_void_p], errcheck=False)\ndestroy_srs = void_output(std_call('OSRDestroySpatialReference'), [c_void_p], errcheck=False)\nsrs_validate = void_output(lgdal.OSRValidate, [c_void_p])\n\n# Getting the semi_major, semi_minor, and flattening functions.\nsemi_major = srs_double(lgdal.OSRGetSemiMajor)\nsemi_minor = srs_double(lgdal.OSRGetSemiMinor)\ninvflattening = srs_double(lgdal.OSRGetInvFlattening)\n\n# WKT, PROJ, EPSG, XML importation routines.\nfrom_wkt = void_output(lgdal.OSRImportFromWkt, [c_void_p, POINTER(c_char_p)])\nfrom_proj = void_output(lgdal.OSRImportFromProj4, [c_void_p, c_char_p])\nfrom_epsg = void_output(std_call('OSRImportFromEPSG'), [c_void_p, c_int])\nfrom_xml = void_output(lgdal.OSRImportFromXML, [c_void_p, c_char_p])\nfrom_user_input = void_output(std_call('OSRSetFromUserInput'), [c_void_p, c_char_p])\n\n# Morphing to/from ESRI WKT.\nmorph_to_esri = void_output(lgdal.OSRMorphToESRI, [c_void_p])\nmorph_from_esri = void_output(lgdal.OSRMorphFromESRI, [c_void_p])\n\n# Identifying the EPSG\nidentify_epsg = void_output(lgdal.OSRAutoIdentifyEPSG, [c_void_p])\n\n# Getting the angular_units, linear_units functions\nlinear_units = units_func(lgdal.OSRGetLinearUnits)\nangular_units = units_func(lgdal.OSRGetAngularUnits)\n\n# For exporting to WKT, PROJ.4, \"Pretty\" WKT, and XML.\nto_wkt = string_output(std_call('OSRExportToWkt'), [c_void_p, POINTER(c_char_p)], decoding='ascii')\nto_proj = string_output(std_call('OSRExportToProj4'), [c_void_p, POINTER(c_char_p)], decoding='ascii')\nto_pretty_wkt = string_output(std_call('OSRExportToPrettyWkt'), [c_void_p, POINTER(c_char_p), c_int], offset=-2, decoding='ascii')\n\n# Memory leak fixed in GDAL 1.5; still exists in 1.4.\nto_xml = string_output(lgdal.OSRExportToXML, [c_void_p, POINTER(c_char_p), c_char_p], offset=-2, decoding='ascii')\n\n# String attribute retrival routines.\nget_attr_value = const_string_output(std_call('OSRGetAttrValue'), [c_void_p, c_char_p, c_int], decoding='ascii')\nget_auth_name = const_string_output(lgdal.OSRGetAuthorityName, [c_void_p, c_char_p], decoding='ascii')\nget_auth_code = const_string_output(lgdal.OSRGetAuthorityCode, [c_void_p, c_char_p], decoding='ascii')\n\n# SRS Properties\nisgeographic = int_output(lgdal.OSRIsGeographic, [c_void_p])\nislocal = int_output(lgdal.OSRIsLocal, [c_void_p])\nisprojected = int_output(lgdal.OSRIsProjected, [c_void_p])\n\n# Coordinate transformation\nnew_ct= srs_output(std_call('OCTNewCoordinateTransformation'), [c_void_p, c_void_p])\ndestroy_ct = void_output(std_call('OCTDestroyCoordinateTransformation'), [c_void_p], errcheck=False)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/gdal/srs.py",
    "content": "\"\"\"\n  The Spatial Reference class, represensents OGR Spatial Reference objects.\n\n  Example:\n  >>> from django.contrib.gis.gdal import SpatialReference\n  >>> srs = SpatialReference('WGS84')\n  >>> print(srs)\n  GEOGCS[\"WGS 84\",\n      DATUM[\"WGS_1984\",\n          SPHEROID[\"WGS 84\",6378137,298.257223563,\n              AUTHORITY[\"EPSG\",\"7030\"]],\n          TOWGS84[0,0,0,0,0,0,0],\n          AUTHORITY[\"EPSG\",\"6326\"]],\n      PRIMEM[\"Greenwich\",0,\n          AUTHORITY[\"EPSG\",\"8901\"]],\n      UNIT[\"degree\",0.01745329251994328,\n          AUTHORITY[\"EPSG\",\"9122\"]],\n      AUTHORITY[\"EPSG\",\"4326\"]]\n  >>> print(srs.proj)\n  +proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs\n  >>> print(srs.ellipsoid)\n  (6378137.0, 6356752.3142451793, 298.25722356300003)\n  >>> print(srs.projected, srs.geographic)\n  False True\n  >>> srs.import_epsg(32140)\n  >>> print(srs.name)\n  NAD83 / Texas South Central\n\"\"\"\nfrom ctypes import byref, c_char_p, c_int\n\n# Getting the error checking routine and exceptions\nfrom django.contrib.gis.gdal.base import GDALBase\nfrom django.contrib.gis.gdal.error import SRSException\nfrom django.contrib.gis.gdal.prototypes import srs as capi\n\nfrom django.utils import six\nfrom django.utils.encoding import force_bytes\n\n\n#### Spatial Reference class. ####\nclass SpatialReference(GDALBase):\n    \"\"\"\n    A wrapper for the OGRSpatialReference object.  According to the GDAL Web site,\n    the SpatialReference object \"provide[s] services to represent coordinate\n    systems (projections and datums) and to transform between them.\"\n    \"\"\"\n\n    #### Python 'magic' routines ####\n    def __init__(self, srs_input=''):\n        \"\"\"\n        Creates a GDAL OSR Spatial Reference object from the given input.\n        The input may be string of OGC Well Known Text (WKT), an integer\n        EPSG code, a PROJ.4 string, and/or a projection \"well known\" shorthand\n        string (one of 'WGS84', 'WGS72', 'NAD27', 'NAD83').\n        \"\"\"\n        srs_type = 'user'\n\n        if isinstance(srs_input, six.string_types):\n            # Encoding to ASCII if unicode passed in.\n            if isinstance(srs_input, six.text_type):\n                srs_input = srs_input.encode('ascii')\n            try:\n                # If SRID is a string, e.g., '4326', then make acceptable\n                # as user input.\n                srid = int(srs_input)\n                srs_input = 'EPSG:%d' % srid\n            except ValueError:\n                pass\n        elif isinstance(srs_input, six.integer_types):\n            # EPSG integer code was input.\n            srs_type = 'epsg'\n        elif isinstance(srs_input, self.ptr_type):\n            srs = srs_input\n            srs_type = 'ogr'\n        else:\n            raise TypeError('Invalid SRS type \"%s\"' % srs_type)\n\n        if srs_type == 'ogr':\n            # Input is already an SRS pointer.\n            srs = srs_input\n        else:\n            # Creating a new SRS pointer, using the string buffer.\n            buf = c_char_p(b'')\n            srs = capi.new_srs(buf)\n\n        # If the pointer is NULL, throw an exception.\n        if not srs:\n            raise SRSException('Could not create spatial reference from: %s' % srs_input)\n        else:\n            self.ptr = srs\n\n        # Importing from either the user input string or an integer SRID.\n        if srs_type == 'user':\n            self.import_user_input(srs_input)\n        elif srs_type == 'epsg':\n            self.import_epsg(srs_input)\n\n    def __del__(self):\n        \"Destroys this spatial reference.\"\n        if self._ptr: capi.release_srs(self._ptr)\n\n    def __getitem__(self, target):\n        \"\"\"\n        Returns the value of the given string attribute node, None if the node\n        doesn't exist.  Can also take a tuple as a parameter, (target, child),\n        where child is the index of the attribute in the WKT.  For example:\n\n        >>> wkt = 'GEOGCS[\"WGS 84\", DATUM[\"WGS_1984, ... AUTHORITY[\"EPSG\",\"4326\"]]')\n        >>> srs = SpatialReference(wkt) # could also use 'WGS84', or 4326\n        >>> print(srs['GEOGCS'])\n        WGS 84\n        >>> print(srs['DATUM'])\n        WGS_1984\n        >>> print(srs['AUTHORITY'])\n        EPSG\n        >>> print(srs['AUTHORITY', 1]) # The authority value\n        4326\n        >>> print(srs['TOWGS84', 4]) # the fourth value in this wkt\n        0\n        >>> print(srs['UNIT|AUTHORITY']) # For the units authority, have to use the pipe symbole.\n        EPSG\n        >>> print(srs['UNIT|AUTHORITY', 1]) # The authority value for the untis\n        9122\n        \"\"\"\n        if isinstance(target, tuple):\n            return self.attr_value(*target)\n        else:\n            return self.attr_value(target)\n\n    def __str__(self):\n        \"The string representation uses 'pretty' WKT.\"\n        return self.pretty_wkt\n\n    #### SpatialReference Methods ####\n    def attr_value(self, target, index=0):\n        \"\"\"\n        The attribute value for the given target node (e.g. 'PROJCS'). The index\n        keyword specifies an index of the child node to return.\n        \"\"\"\n        if not isinstance(target, six.string_types) or not isinstance(index, int):\n            raise TypeError\n        return capi.get_attr_value(self.ptr, force_bytes(target), index)\n\n    def auth_name(self, target):\n        \"Returns the authority name for the given string target node.\"\n        return capi.get_auth_name(self.ptr, force_bytes(target))\n\n    def auth_code(self, target):\n        \"Returns the authority code for the given string target node.\"\n        return capi.get_auth_code(self.ptr, force_bytes(target))\n\n    def clone(self):\n        \"Returns a clone of this SpatialReference object.\"\n        return SpatialReference(capi.clone_srs(self.ptr))\n\n    def from_esri(self):\n        \"Morphs this SpatialReference from ESRI's format to EPSG.\"\n        capi.morph_from_esri(self.ptr)\n\n    def identify_epsg(self):\n        \"\"\"\n        This method inspects the WKT of this SpatialReference, and will\n        add EPSG authority nodes where an EPSG identifier is applicable.\n        \"\"\"\n        capi.identify_epsg(self.ptr)\n\n    def to_esri(self):\n        \"Morphs this SpatialReference to ESRI's format.\"\n        capi.morph_to_esri(self.ptr)\n\n    def validate(self):\n        \"Checks to see if the given spatial reference is valid.\"\n        capi.srs_validate(self.ptr)\n\n    #### Name & SRID properties ####\n    @property\n    def name(self):\n        \"Returns the name of this Spatial Reference.\"\n        if self.projected: return self.attr_value('PROJCS')\n        elif self.geographic: return self.attr_value('GEOGCS')\n        elif self.local: return self.attr_value('LOCAL_CS')\n        else: return None\n\n    @property\n    def srid(self):\n        \"Returns the SRID of top-level authority, or None if undefined.\"\n        try:\n            return int(self.attr_value('AUTHORITY', 1))\n        except (TypeError, ValueError):\n            return None\n\n    #### Unit Properties ####\n    @property\n    def linear_name(self):\n        \"Returns the name of the linear units.\"\n        units, name = capi.linear_units(self.ptr, byref(c_char_p()))\n        return name\n\n    @property\n    def linear_units(self):\n        \"Returns the value of the linear units.\"\n        units, name = capi.linear_units(self.ptr, byref(c_char_p()))\n        return units\n\n    @property\n    def angular_name(self):\n        \"Returns the name of the angular units.\"\n        units, name = capi.angular_units(self.ptr, byref(c_char_p()))\n        return name\n\n    @property\n    def angular_units(self):\n        \"Returns the value of the angular units.\"\n        units, name = capi.angular_units(self.ptr, byref(c_char_p()))\n        return units\n\n    @property\n    def units(self):\n        \"\"\"\n        Returns a 2-tuple of the units value and the units name,\n        and will automatically determines whether to return the linear\n        or angular units.\n        \"\"\"\n        units, name = None, None\n        if self.projected or self.local:\n            units, name = capi.linear_units(self.ptr, byref(c_char_p()))\n        elif self.geographic:\n            units, name = capi.angular_units(self.ptr, byref(c_char_p()))\n        if name is not None:\n            name.decode()\n        return (units, name)\n\n    #### Spheroid/Ellipsoid Properties ####\n    @property\n    def ellipsoid(self):\n        \"\"\"\n        Returns a tuple of the ellipsoid parameters:\n         (semimajor axis, semiminor axis, and inverse flattening)\n        \"\"\"\n        return (self.semi_major, self.semi_minor, self.inverse_flattening)\n\n    @property\n    def semi_major(self):\n        \"Returns the Semi Major Axis for this Spatial Reference.\"\n        return capi.semi_major(self.ptr, byref(c_int()))\n\n    @property\n    def semi_minor(self):\n        \"Returns the Semi Minor Axis for this Spatial Reference.\"\n        return capi.semi_minor(self.ptr, byref(c_int()))\n\n    @property\n    def inverse_flattening(self):\n        \"Returns the Inverse Flattening for this Spatial Reference.\"\n        return capi.invflattening(self.ptr, byref(c_int()))\n\n    #### Boolean Properties ####\n    @property\n    def geographic(self):\n        \"\"\"\n        Returns True if this SpatialReference is geographic\n         (root node is GEOGCS).\n        \"\"\"\n        return bool(capi.isgeographic(self.ptr))\n\n    @property\n    def local(self):\n        \"Returns True if this SpatialReference is local (root node is LOCAL_CS).\"\n        return bool(capi.islocal(self.ptr))\n\n    @property\n    def projected(self):\n        \"\"\"\n        Returns True if this SpatialReference is a projected coordinate system\n         (root node is PROJCS).\n        \"\"\"\n        return bool(capi.isprojected(self.ptr))\n\n    #### Import Routines #####\n    def import_epsg(self, epsg):\n        \"Imports the Spatial Reference from the EPSG code (an integer).\"\n        capi.from_epsg(self.ptr, epsg)\n\n    def import_proj(self, proj):\n        \"Imports the Spatial Reference from a PROJ.4 string.\"\n        capi.from_proj(self.ptr, proj)\n\n    def import_user_input(self, user_input):\n        \"Imports the Spatial Reference from the given user input string.\"\n        capi.from_user_input(self.ptr, force_bytes(user_input))\n\n    def import_wkt(self, wkt):\n        \"Imports the Spatial Reference from OGC WKT (string)\"\n        capi.from_wkt(self.ptr, byref(c_char_p(wkt)))\n\n    def import_xml(self, xml):\n        \"Imports the Spatial Reference from an XML string.\"\n        capi.from_xml(self.ptr, xml)\n\n    #### Export Properties ####\n    @property\n    def wkt(self):\n        \"Returns the WKT representation of this Spatial Reference.\"\n        return capi.to_wkt(self.ptr, byref(c_char_p()))\n\n    @property\n    def pretty_wkt(self, simplify=0):\n        \"Returns the 'pretty' representation of the WKT.\"\n        return capi.to_pretty_wkt(self.ptr, byref(c_char_p()), simplify)\n\n    @property\n    def proj(self):\n        \"Returns the PROJ.4 representation for this Spatial Reference.\"\n        return capi.to_proj(self.ptr, byref(c_char_p()))\n\n    @property\n    def proj4(self):\n        \"Alias for proj().\"\n        return self.proj\n\n    @property\n    def xml(self, dialect=''):\n        \"Returns the XML representation of this Spatial Reference.\"\n        return capi.to_xml(self.ptr, byref(c_char_p()), dialect)\n\nclass CoordTransform(GDALBase):\n    \"The coordinate system transformation object.\"\n\n    def __init__(self, source, target):\n        \"Initializes on a source and target SpatialReference objects.\"\n        if not isinstance(source, SpatialReference) or not isinstance(target, SpatialReference):\n            raise TypeError('source and target must be of type SpatialReference')\n        self.ptr = capi.new_ct(source._ptr, target._ptr)\n        self._srs1_name = source.name\n        self._srs2_name = target.name\n\n    def __del__(self):\n        \"Deletes this Coordinate Transformation object.\"\n        if self._ptr: capi.destroy_ct(self._ptr)\n\n    def __str__(self):\n        return 'Transform from \"%s\" to \"%s\"' % (self._srs1_name, self._srs2_name)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/gdal/tests/__init__.py",
    "content": "\"\"\"\nModule for executing all of the GDAL tests.  None\nof these tests require the use of the database.\n\"\"\"\nfrom __future__ import absolute_import\n\nfrom django.utils.unittest import TestSuite, TextTestRunner\n\n# Importing the GDAL test modules.\nfrom . import test_driver, test_ds, test_envelope, test_geom, test_srs\n\ntest_suites = [test_driver.suite(),\n               test_ds.suite(),\n               test_envelope.suite(),\n               test_geom.suite(),\n               test_srs.suite(),\n               ]\n\ndef suite():\n    \"Builds a test suite for the GDAL tests.\"\n    s = TestSuite()\n    for test_suite in test_suites:\n        s.addTest(test_suite)\n    return s\n\ndef run(verbosity=1):\n    \"Runs the GDAL tests.\"\n    TextTestRunner(verbosity=verbosity).run(suite())\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/gdal/tests/test_driver.py",
    "content": "import unittest\nfrom django.contrib.gis.gdal import Driver, OGRException\n\nvalid_drivers = ('ESRI Shapefile', 'MapInfo File', 'TIGER', 'S57', 'DGN',\n                 'Memory', 'CSV', 'GML', 'KML')\n\ninvalid_drivers = ('Foo baz', 'clucka', 'ESRI Shp')\n\naliases = {'eSrI' : 'ESRI Shapefile',\n           'TigER/linE' : 'TIGER',\n           'SHAPE' : 'ESRI Shapefile',\n           'sHp' : 'ESRI Shapefile',\n           }\n\nclass DriverTest(unittest.TestCase):\n\n    def test01_valid_driver(self):\n        \"Testing valid OGR Data Source Drivers.\"\n        for d in valid_drivers:\n            dr = Driver(d)\n            self.assertEqual(d, str(dr))\n\n    def test02_invalid_driver(self):\n        \"Testing invalid OGR Data Source Drivers.\"\n        for i in invalid_drivers:\n            self.assertRaises(OGRException, Driver, i)\n\n    def test03_aliases(self):\n        \"Testing driver aliases.\"\n        for alias, full_name in aliases.items():\n            dr = Driver(alias)\n            self.assertEqual(full_name, str(dr))\n\ndef suite():\n    s = unittest.TestSuite()\n    s.addTest(unittest.makeSuite(DriverTest))\n    return s\n\ndef run(verbosity=2):\n    unittest.TextTestRunner(verbosity=verbosity).run(suite())\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/gdal/tests/test_ds.py",
    "content": "import os\nimport unittest\nfrom django.contrib.gis.gdal import DataSource, Envelope, OGRGeometry, OGRException, OGRIndexError, GDAL_VERSION\nfrom django.contrib.gis.gdal.field import OFTReal, OFTInteger, OFTString\nfrom django.contrib.gis.geometry.test_data import get_ds_file, TestDS, TEST_DATA\n\n\n# List of acceptable data sources.\nds_list = (TestDS('test_point', nfeat=5, nfld=3, geom='POINT', gtype=1, driver='ESRI Shapefile',\n                  fields={'dbl' : OFTReal, 'int' : OFTInteger, 'str' : OFTString,},\n                  extent=(-1.35011,0.166623,-0.524093,0.824508), # Got extent from QGIS\n                  srs_wkt='GEOGCS[\"GCS_WGS_1984\",DATUM[\"WGS_1984\",SPHEROID[\"WGS_1984\",6378137,298.257223563]],PRIMEM[\"Greenwich\",0],UNIT[\"Degree\",0.017453292519943295]]',\n                  field_values={'dbl' : [float(i) for i in range(1, 6)], 'int' : list(range(1, 6)), 'str' : [str(i) for i in range(1, 6)]},\n                  fids=range(5)),\n           TestDS('test_vrt', ext='vrt', nfeat=3, nfld=3, geom='POINT', gtype='Point25D', driver='VRT',\n                  fields={'POINT_X' : OFTString, 'POINT_Y' : OFTString, 'NUM' : OFTString}, # VRT uses CSV, which all types are OFTString.\n                  extent=(1.0, 2.0, 100.0, 523.5), # Min/Max from CSV\n                  field_values={'POINT_X' : ['1.0', '5.0', '100.0'], 'POINT_Y' : ['2.0', '23.0', '523.5'], 'NUM' : ['5', '17', '23']},\n                  fids=range(1,4)),\n           TestDS('test_poly', nfeat=3, nfld=3, geom='POLYGON', gtype=3,\n                  driver='ESRI Shapefile',\n                  fields={'float' : OFTReal, 'int' : OFTInteger, 'str' : OFTString,},\n                  extent=(-1.01513,-0.558245,0.161876,0.839637), # Got extent from QGIS\n                  srs_wkt='GEOGCS[\"GCS_WGS_1984\",DATUM[\"WGS_1984\",SPHEROID[\"WGS_1984\",6378137,298.257223563]],PRIMEM[\"Greenwich\",0],UNIT[\"Degree\",0.017453292519943295]]'),\n           )\n\nbad_ds = (TestDS('foo'),\n          )\n\nclass DataSourceTest(unittest.TestCase):\n\n    def test01_valid_shp(self):\n        \"Testing valid SHP Data Source files.\"\n\n        for source in ds_list:\n            # Loading up the data source\n            ds = DataSource(source.ds)\n\n            # Making sure the layer count is what's expected (only 1 layer in a SHP file)\n            self.assertEqual(1, len(ds))\n\n            # Making sure GetName works\n            self.assertEqual(source.ds, ds.name)\n\n            # Making sure the driver name matches up\n            self.assertEqual(source.driver, str(ds.driver))\n\n            # Making sure indexing works\n            try:\n                ds[len(ds)]\n            except OGRIndexError:\n                pass\n            else:\n                self.fail('Expected an IndexError!')\n\n    def test02_invalid_shp(self):\n        \"Testing invalid SHP files for the Data Source.\"\n        for source in bad_ds:\n            self.assertRaises(OGRException, DataSource, source.ds)\n\n    def test03a_layers(self):\n        \"Testing Data Source Layers.\"\n        for source in ds_list:\n            ds = DataSource(source.ds)\n\n            # Incrementing through each layer, this tests DataSource.__iter__\n            for layer in ds:\n                # Making sure we get the number of features we expect\n                self.assertEqual(len(layer), source.nfeat)\n\n                # Making sure we get the number of fields we expect\n                self.assertEqual(source.nfld, layer.num_fields)\n                self.assertEqual(source.nfld, len(layer.fields))\n\n                # Testing the layer's extent (an Envelope), and it's properties\n                if source.driver == 'VRT' and (GDAL_VERSION >= (1, 7, 0) and GDAL_VERSION < (1, 7, 3)):\n                    # There's a known GDAL regression with retrieving the extent\n                    # of a VRT layer in versions 1.7.0-1.7.2:\n                    #  http://trac.osgeo.org/gdal/ticket/3783\n                    pass\n                else:\n                    self.assertEqual(True, isinstance(layer.extent, Envelope))\n                    self.assertAlmostEqual(source.extent[0], layer.extent.min_x, 5)\n                    self.assertAlmostEqual(source.extent[1], layer.extent.min_y, 5)\n                    self.assertAlmostEqual(source.extent[2], layer.extent.max_x, 5)\n                    self.assertAlmostEqual(source.extent[3], layer.extent.max_y, 5)\n\n                # Now checking the field names.\n                flds = layer.fields\n                for f in flds: self.assertEqual(True, f in source.fields)\n\n                # Negative FIDs are not allowed.\n                self.assertRaises(OGRIndexError, layer.__getitem__, -1)\n                self.assertRaises(OGRIndexError, layer.__getitem__, 50000)\n\n                if hasattr(source, 'field_values'):\n                    fld_names = source.field_values.keys()\n\n                    # Testing `Layer.get_fields` (which uses Layer.__iter__)\n                    for fld_name in fld_names:\n                        self.assertEqual(source.field_values[fld_name], layer.get_fields(fld_name))\n\n                    # Testing `Layer.__getitem__`.\n                    for i, fid in enumerate(source.fids):\n                        feat = layer[fid]\n                        self.assertEqual(fid, feat.fid)\n                        # Maybe this should be in the test below, but we might as well test\n                        # the feature values here while in this loop.\n                        for fld_name in fld_names:\n                            self.assertEqual(source.field_values[fld_name][i], feat.get(fld_name))\n\n    def test03b_layer_slice(self):\n        \"Test indexing and slicing on Layers.\"\n        # Using the first data-source because the same slice\n        # can be used for both the layer and the control values.\n        source = ds_list[0]\n        ds = DataSource(source.ds)\n\n        sl = slice(1, 3)\n        feats = ds[0][sl]\n\n        for fld_name in ds[0].fields:\n            test_vals = [feat.get(fld_name) for feat in feats]\n            control_vals = source.field_values[fld_name][sl]\n            self.assertEqual(control_vals, test_vals)\n\n    def test03c_layer_references(self):\n        \"\"\"\n        Ensure OGR objects keep references to the objects they belong to.\n        \"\"\"\n        source = ds_list[0]\n\n        # See ticket #9448.\n        def get_layer():\n            # This DataSource object is not accessible outside this\n            # scope.  However, a reference should still be kept alive\n            # on the `Layer` returned.\n            ds = DataSource(source.ds)\n            return ds[0]\n\n        # Making sure we can call OGR routines on the Layer returned.\n        lyr = get_layer()\n        self.assertEqual(source.nfeat, len(lyr))\n        self.assertEqual(source.gtype, lyr.geom_type.num)\n\n        # Same issue for Feature/Field objects, see #18640\n        self.assertEqual(str(lyr[0]['str']), \"1\")\n\n    def test04_features(self):\n        \"Testing Data Source Features.\"\n        for source in ds_list:\n            ds = DataSource(source.ds)\n\n            # Incrementing through each layer\n            for layer in ds:\n                # Incrementing through each feature in the layer\n                for feat in layer:\n                    # Making sure the number of fields, and the geometry type\n                    # are what's expected.\n                    self.assertEqual(source.nfld, len(list(feat)))\n                    self.assertEqual(source.gtype, feat.geom_type)\n\n                    # Making sure the fields match to an appropriate OFT type.\n                    for k, v in source.fields.items():\n                        # Making sure we get the proper OGR Field instance, using\n                        # a string value index for the feature.\n                        self.assertEqual(True, isinstance(feat[k], v))\n\n                    # Testing Feature.__iter__\n                    for fld in feat:\n                        self.assertEqual(True, fld.name in source.fields.keys())\n\n    def test05_geometries(self):\n        \"Testing Geometries from Data Source Features.\"\n        for source in ds_list:\n            ds = DataSource(source.ds)\n\n            # Incrementing through each layer and feature.\n            for layer in ds:\n                for feat in layer:\n                    g = feat.geom\n\n                    # Making sure we get the right Geometry name & type\n                    self.assertEqual(source.geom, g.geom_name)\n                    self.assertEqual(source.gtype, g.geom_type)\n\n                    # Making sure the SpatialReference is as expected.\n                    if hasattr(source, 'srs_wkt'):\n                        self.assertEqual(\n                            source.srs_wkt,\n                            # Depending on lib versions, WGS_84 might be WGS_1984\n                            g.srs.wkt.replace('SPHEROID[\"WGS_84\"', 'SPHEROID[\"WGS_1984\"')\n                        )\n\n    def test06_spatial_filter(self):\n        \"Testing the Layer.spatial_filter property.\"\n        ds = DataSource(get_ds_file('cities', 'shp'))\n        lyr = ds[0]\n\n        # When not set, it should be None.\n        self.assertEqual(None, lyr.spatial_filter)\n\n        # Must be set a/an OGRGeometry or 4-tuple.\n        self.assertRaises(TypeError, lyr._set_spatial_filter, 'foo')\n\n        # Setting the spatial filter with a tuple/list with the extent of\n        # a buffer centering around Pueblo.\n        self.assertRaises(ValueError, lyr._set_spatial_filter, list(range(5)))\n        filter_extent = (-105.609252, 37.255001, -103.609252, 39.255001)\n        lyr.spatial_filter = (-105.609252, 37.255001, -103.609252, 39.255001)\n        self.assertEqual(OGRGeometry.from_bbox(filter_extent), lyr.spatial_filter)\n        feats = [feat for feat in lyr]\n        self.assertEqual(1, len(feats))\n        self.assertEqual('Pueblo', feats[0].get('Name'))\n\n        # Setting the spatial filter with an OGRGeometry for buffer centering\n        # around Houston.\n        filter_geom = OGRGeometry('POLYGON((-96.363151 28.763374,-94.363151 28.763374,-94.363151 30.763374,-96.363151 30.763374,-96.363151 28.763374))')\n        lyr.spatial_filter = filter_geom\n        self.assertEqual(filter_geom, lyr.spatial_filter)\n        feats = [feat for feat in lyr]\n        self.assertEqual(1, len(feats))\n        self.assertEqual('Houston', feats[0].get('Name'))\n\n        # Clearing the spatial filter by setting it to None.  Now\n        # should indicate that there are 3 features in the Layer.\n        lyr.spatial_filter = None\n        self.assertEqual(3, len(lyr))\n\n    def test07_integer_overflow(self):\n        \"Testing that OFTReal fields, treated as OFTInteger, do not overflow.\"\n        # Using *.dbf from Census 2010 TIGER Shapefile for Texas,\n        # which has land area ('ALAND10') stored in a Real field\n        # with no precision.\n        ds = DataSource(os.path.join(TEST_DATA, 'texas.dbf'))\n        feat = ds[0][0]\n        # Reference value obtained using `ogrinfo`.\n        self.assertEqual(676586997978, feat.get('ALAND10'))\n\ndef suite():\n    s = unittest.TestSuite()\n    s.addTest(unittest.makeSuite(DataSourceTest))\n    return s\n\ndef run(verbosity=2):\n    unittest.TextTestRunner(verbosity=verbosity).run(suite())\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/gdal/tests/test_envelope.py",
    "content": "from django.contrib.gis.gdal import Envelope, OGRException\nfrom django.utils import unittest\n\n\nclass TestPoint(object):\n    def __init__(self, x, y):\n        self.x = x\n        self.y = y\n\nclass EnvelopeTest(unittest.TestCase):\n\n    def setUp(self):\n        self.e = Envelope(0, 0, 5, 5)\n\n    def test01_init(self):\n        \"Testing Envelope initilization.\"\n        e1 = Envelope((0, 0, 5, 5))\n        e2 = Envelope(0, 0, 5, 5)\n        e3 = Envelope(0, '0', '5', 5) # Thanks to ww for this\n        e4 = Envelope(e1._envelope)\n        self.assertRaises(OGRException, Envelope, (5, 5, 0, 0))\n        self.assertRaises(OGRException, Envelope, 5, 5, 0, 0)\n        self.assertRaises(OGRException, Envelope, (0, 0, 5, 5, 3))\n        self.assertRaises(OGRException, Envelope, ())\n        self.assertRaises(ValueError, Envelope, 0, 'a', 5, 5)\n        self.assertRaises(TypeError, Envelope, 'foo')\n        self.assertRaises(OGRException, Envelope, (1, 1, 0, 0))\n        try:\n            Envelope(0, 0, 0, 0)\n        except OGRException:\n            self.fail(\"shouldn't raise an exception for min_x == max_x or min_y == max_y\")\n\n    def test02_properties(self):\n        \"Testing Envelope properties.\"\n        e = Envelope(0, 0, 2, 3)\n        self.assertEqual(0, e.min_x)\n        self.assertEqual(0, e.min_y)\n        self.assertEqual(2, e.max_x)\n        self.assertEqual(3, e.max_y)\n        self.assertEqual((0, 0), e.ll)\n        self.assertEqual((2, 3), e.ur)\n        self.assertEqual((0, 0, 2, 3), e.tuple)\n        self.assertEqual('POLYGON((0.0 0.0,0.0 3.0,2.0 3.0,2.0 0.0,0.0 0.0))', e.wkt)\n        self.assertEqual('(0.0, 0.0, 2.0, 3.0)', str(e))\n\n    def test03_equivalence(self):\n        \"Testing Envelope equivalence.\"\n        e1 = Envelope(0.523, 0.217, 253.23, 523.69)\n        e2 = Envelope((0.523, 0.217, 253.23, 523.69))\n        self.assertEqual(e1, e2)\n        self.assertEqual((0.523, 0.217, 253.23, 523.69), e1)\n\n    def test04_expand_to_include_pt_2_params(self):\n        \"Testing Envelope expand_to_include -- point as two parameters.\"\n        self.e.expand_to_include(2, 6)\n        self.assertEqual((0, 0, 5, 6), self.e)\n        self.e.expand_to_include(-1, -1)\n        self.assertEqual((-1, -1, 5, 6), self.e)\n\n    def test05_expand_to_include_pt_2_tuple(self):\n        \"Testing Envelope expand_to_include -- point as a single 2-tuple parameter.\"\n        self.e.expand_to_include((10, 10))\n        self.assertEqual((0, 0, 10, 10), self.e)\n        self.e.expand_to_include((-10, -10))\n        self.assertEqual((-10, -10, 10, 10), self.e)\n\n    def test06_expand_to_include_extent_4_params(self):\n        \"Testing Envelope expand_to_include -- extent as 4 parameters.\"\n        self.e.expand_to_include(-1, 1, 3, 7)\n        self.assertEqual((-1, 0, 5, 7), self.e)\n\n    def test06_expand_to_include_extent_4_tuple(self):\n        \"Testing Envelope expand_to_include -- extent as a single 4-tuple parameter.\"\n        self.e.expand_to_include((-1, 1, 3, 7))\n        self.assertEqual((-1, 0, 5, 7), self.e)\n\n    def test07_expand_to_include_envelope(self):\n        \"Testing Envelope expand_to_include with Envelope as parameter.\"\n        self.e.expand_to_include(Envelope(-1, 1, 3, 7))\n        self.assertEqual((-1, 0, 5, 7), self.e)\n\n    def test08_expand_to_include_point(self):\n        \"Testing Envelope expand_to_include with Point as parameter.\"\n        self.e.expand_to_include(TestPoint(-1, 1))\n        self.assertEqual((-1, 0, 5, 5), self.e)\n        self.e.expand_to_include(TestPoint(10, 10))\n        self.assertEqual((-1, 0, 10, 10), self.e)\n\ndef suite():\n    s = unittest.TestSuite()\n    s.addTest(unittest.makeSuite(EnvelopeTest))\n    return s\n\ndef run(verbosity=2):\n    unittest.TextTestRunner(verbosity=verbosity).run(suite())\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/gdal/tests/test_geom.py",
    "content": "import json\nfrom binascii import b2a_hex\ntry:\n    from django.utils.six.moves import cPickle as pickle\nexcept ImportError:\n    import pickle\n\nfrom django.contrib.gis.gdal import (OGRGeometry, OGRGeomType, OGRException,\n    OGRIndexError, SpatialReference, CoordTransform, GDAL_VERSION)\nfrom django.contrib.gis.geometry.test_data import TestDataMixin\nfrom django.utils.six.moves import xrange\nfrom django.utils import unittest\n\nclass OGRGeomTest(unittest.TestCase, TestDataMixin):\n    \"This tests the OGR Geometry.\"\n\n    def test00a_geomtype(self):\n        \"Testing OGRGeomType object.\"\n\n        # OGRGeomType should initialize on all these inputs.\n        try:\n            g = OGRGeomType(1)\n            g = OGRGeomType(7)\n            g = OGRGeomType('point')\n            g = OGRGeomType('GeometrycollectioN')\n            g = OGRGeomType('LINearrING')\n            g = OGRGeomType('Unknown')\n        except:\n            self.fail('Could not create an OGRGeomType object!')\n\n        # Should throw TypeError on this input\n        self.assertRaises(OGRException, OGRGeomType, 23)\n        self.assertRaises(OGRException, OGRGeomType, 'fooD')\n        self.assertRaises(OGRException, OGRGeomType, 9)\n\n        # Equivalence can take strings, ints, and other OGRGeomTypes\n        self.assertEqual(True, OGRGeomType(1) == OGRGeomType(1))\n        self.assertEqual(True, OGRGeomType(7) == 'GeometryCollection')\n        self.assertEqual(True, OGRGeomType('point') == 'POINT')\n        self.assertEqual(False, OGRGeomType('point') == 2)\n        self.assertEqual(True, OGRGeomType('unknown') == 0)\n        self.assertEqual(True, OGRGeomType(6) == 'MULtiPolyGON')\n        self.assertEqual(False, OGRGeomType(1) != OGRGeomType('point'))\n        self.assertEqual(True, OGRGeomType('POINT') != OGRGeomType(6))\n\n        # Testing the Django field name equivalent property.\n        self.assertEqual('PointField', OGRGeomType('Point').django)\n        self.assertEqual('GeometryField', OGRGeomType('Unknown').django)\n        self.assertEqual(None, OGRGeomType('none').django)\n\n        # 'Geometry' initialization implies an unknown geometry type.\n        gt = OGRGeomType('Geometry')\n        self.assertEqual(0, gt.num)\n        self.assertEqual('Unknown', gt.name)\n\n    def test00b_geomtype_25d(self):\n        \"Testing OGRGeomType object with 25D types.\"\n        wkb25bit = OGRGeomType.wkb25bit\n        self.assertTrue(OGRGeomType(wkb25bit + 1) == 'Point25D')\n        self.assertTrue(OGRGeomType('MultiLineString25D') == (5 + wkb25bit))\n        self.assertEqual('GeometryCollectionField', OGRGeomType('GeometryCollection25D').django)\n\n    def test01a_wkt(self):\n        \"Testing WKT output.\"\n        for g in self.geometries.wkt_out:\n            geom = OGRGeometry(g.wkt)\n            self.assertEqual(g.wkt, geom.wkt)\n\n    def test01a_ewkt(self):\n        \"Testing EWKT input/output.\"\n        for ewkt_val in ('POINT (1 2 3)', 'LINEARRING (0 0,1 1,2 1,0 0)'):\n            # First with ewkt output when no SRID in EWKT\n            self.assertEqual(ewkt_val, OGRGeometry(ewkt_val).ewkt)\n            # No test consumption with an SRID specified.\n            ewkt_val = 'SRID=4326;%s' % ewkt_val\n            geom = OGRGeometry(ewkt_val)\n            self.assertEqual(ewkt_val, geom.ewkt)\n            self.assertEqual(4326, geom.srs.srid)\n\n    def test01b_gml(self):\n        \"Testing GML output.\"\n        for g in self.geometries.wkt_out:\n            geom = OGRGeometry(g.wkt)\n            exp_gml = g.gml\n            if GDAL_VERSION >= (1, 8):\n                # In GDAL 1.8, the non-conformant GML tag  <gml:GeometryCollection> was\n                # replaced with <gml:MultiGeometry>.\n                exp_gml = exp_gml.replace('GeometryCollection', 'MultiGeometry')\n            self.assertEqual(exp_gml, geom.gml)\n\n    def test01c_hex(self):\n        \"Testing HEX input/output.\"\n        for g in self.geometries.hex_wkt:\n            geom1 = OGRGeometry(g.wkt)\n            self.assertEqual(g.hex.encode(), geom1.hex)\n            # Constructing w/HEX\n            geom2 = OGRGeometry(g.hex)\n            self.assertEqual(geom1, geom2)\n\n    def test01d_wkb(self):\n        \"Testing WKB input/output.\"\n        for g in self.geometries.hex_wkt:\n            geom1 = OGRGeometry(g.wkt)\n            wkb = geom1.wkb\n            self.assertEqual(b2a_hex(wkb).upper(), g.hex.encode())\n            # Constructing w/WKB.\n            geom2 = OGRGeometry(wkb)\n            self.assertEqual(geom1, geom2)\n\n    def test01e_json(self):\n        \"Testing GeoJSON input/output.\"\n        for g in self.geometries.json_geoms:\n            geom = OGRGeometry(g.wkt)\n            if not hasattr(g, 'not_equal'):\n                # Loading jsons to prevent decimal differences\n                self.assertEqual(json.loads(g.json), json.loads(geom.json))\n                self.assertEqual(json.loads(g.json), json.loads(geom.geojson))\n            self.assertEqual(OGRGeometry(g.wkt), OGRGeometry(geom.json))\n\n    def test02_points(self):\n        \"Testing Point objects.\"\n\n        prev = OGRGeometry('POINT(0 0)')\n        for p in self.geometries.points:\n            if not hasattr(p, 'z'): # No 3D\n                pnt = OGRGeometry(p.wkt)\n                self.assertEqual(1, pnt.geom_type)\n                self.assertEqual('POINT', pnt.geom_name)\n                self.assertEqual(p.x, pnt.x)\n                self.assertEqual(p.y, pnt.y)\n                self.assertEqual((p.x, p.y), pnt.tuple)\n\n    def test03_multipoints(self):\n        \"Testing MultiPoint objects.\"\n        for mp in self.geometries.multipoints:\n            mgeom1 = OGRGeometry(mp.wkt) # First one from WKT\n            self.assertEqual(4, mgeom1.geom_type)\n            self.assertEqual('MULTIPOINT', mgeom1.geom_name)\n            mgeom2 = OGRGeometry('MULTIPOINT') # Creating empty multipoint\n            mgeom3 = OGRGeometry('MULTIPOINT')\n            for g in mgeom1:\n                mgeom2.add(g) # adding each point from the multipoints\n                mgeom3.add(g.wkt) # should take WKT as well\n            self.assertEqual(mgeom1, mgeom2) # they should equal\n            self.assertEqual(mgeom1, mgeom3)\n            self.assertEqual(mp.coords, mgeom2.coords)\n            self.assertEqual(mp.n_p, mgeom2.point_count)\n\n    def test04_linestring(self):\n        \"Testing LineString objects.\"\n        prev = OGRGeometry('POINT(0 0)')\n        for ls in self.geometries.linestrings:\n            linestr = OGRGeometry(ls.wkt)\n            self.assertEqual(2, linestr.geom_type)\n            self.assertEqual('LINESTRING', linestr.geom_name)\n            self.assertEqual(ls.n_p, linestr.point_count)\n            self.assertEqual(ls.coords, linestr.tuple)\n            self.assertEqual(True, linestr == OGRGeometry(ls.wkt))\n            self.assertEqual(True, linestr != prev)\n            self.assertRaises(OGRIndexError, linestr.__getitem__, len(linestr))\n            prev = linestr\n\n            # Testing the x, y properties.\n            x = [tmpx for tmpx, tmpy in ls.coords]\n            y = [tmpy for tmpx, tmpy in ls.coords]\n            self.assertEqual(x, linestr.x)\n            self.assertEqual(y, linestr.y)\n\n    def test05_multilinestring(self):\n        \"Testing MultiLineString objects.\"\n        prev = OGRGeometry('POINT(0 0)')\n        for mls in self.geometries.multilinestrings:\n            mlinestr = OGRGeometry(mls.wkt)\n            self.assertEqual(5, mlinestr.geom_type)\n            self.assertEqual('MULTILINESTRING', mlinestr.geom_name)\n            self.assertEqual(mls.n_p, mlinestr.point_count)\n            self.assertEqual(mls.coords, mlinestr.tuple)\n            self.assertEqual(True, mlinestr == OGRGeometry(mls.wkt))\n            self.assertEqual(True, mlinestr != prev)\n            prev = mlinestr\n            for ls in mlinestr:\n                self.assertEqual(2, ls.geom_type)\n                self.assertEqual('LINESTRING', ls.geom_name)\n            self.assertRaises(OGRIndexError, mlinestr.__getitem__, len(mlinestr))\n\n    def test06_linearring(self):\n        \"Testing LinearRing objects.\"\n        prev = OGRGeometry('POINT(0 0)')\n        for rr in self.geometries.linearrings:\n            lr = OGRGeometry(rr.wkt)\n            #self.assertEqual(101, lr.geom_type.num)\n            self.assertEqual('LINEARRING', lr.geom_name)\n            self.assertEqual(rr.n_p, len(lr))\n            self.assertEqual(True, lr == OGRGeometry(rr.wkt))\n            self.assertEqual(True, lr != prev)\n            prev = lr\n\n    def test07a_polygons(self):\n        \"Testing Polygon objects.\"\n\n        # Testing `from_bbox` class method\n        bbox =  (-180,-90,180,90)\n        p = OGRGeometry.from_bbox( bbox )\n        self.assertEqual(bbox, p.extent)\n\n        prev = OGRGeometry('POINT(0 0)')\n        for p in self.geometries.polygons:\n            poly = OGRGeometry(p.wkt)\n            self.assertEqual(3, poly.geom_type)\n            self.assertEqual('POLYGON', poly.geom_name)\n            self.assertEqual(p.n_p, poly.point_count)\n            self.assertEqual(p.n_i + 1, len(poly))\n\n            # Testing area & centroid.\n            self.assertAlmostEqual(p.area, poly.area, 9)\n            x, y = poly.centroid.tuple\n            self.assertAlmostEqual(p.centroid[0], x, 9)\n            self.assertAlmostEqual(p.centroid[1], y, 9)\n\n            # Testing equivalence\n            self.assertEqual(True, poly == OGRGeometry(p.wkt))\n            self.assertEqual(True, poly != prev)\n\n            if p.ext_ring_cs:\n                ring = poly[0]\n                self.assertEqual(p.ext_ring_cs, ring.tuple)\n                self.assertEqual(p.ext_ring_cs, poly[0].tuple)\n                self.assertEqual(len(p.ext_ring_cs), ring.point_count)\n\n            for r in poly:\n                self.assertEqual('LINEARRING', r.geom_name)\n\n    def test07b_closepolygons(self):\n        \"Testing closing Polygon objects.\"\n        # Both rings in this geometry are not closed.\n        poly = OGRGeometry('POLYGON((0 0, 5 0, 5 5, 0 5), (1 1, 2 1, 2 2, 2 1))')\n        self.assertEqual(8, poly.point_count)\n        with self.assertRaises(OGRException):\n            _ = poly.centroid\n\n        poly.close_rings()\n        self.assertEqual(10, poly.point_count) # Two closing points should've been added\n        self.assertEqual(OGRGeometry('POINT(2.5 2.5)'), poly.centroid)\n\n    def test08_multipolygons(self):\n        \"Testing MultiPolygon objects.\"\n        prev = OGRGeometry('POINT(0 0)')\n        for mp in self.geometries.multipolygons:\n            mpoly = OGRGeometry(mp.wkt)\n            self.assertEqual(6, mpoly.geom_type)\n            self.assertEqual('MULTIPOLYGON', mpoly.geom_name)\n            if mp.valid:\n                self.assertEqual(mp.n_p, mpoly.point_count)\n                self.assertEqual(mp.num_geom, len(mpoly))\n                self.assertRaises(OGRIndexError, mpoly.__getitem__, len(mpoly))\n                for p in mpoly:\n                    self.assertEqual('POLYGON', p.geom_name)\n                    self.assertEqual(3, p.geom_type)\n            self.assertEqual(mpoly.wkt, OGRGeometry(mp.wkt).wkt)\n\n    def test09a_srs(self):\n        \"Testing OGR Geometries with Spatial Reference objects.\"\n        for mp in self.geometries.multipolygons:\n            # Creating a geometry w/spatial reference\n            sr = SpatialReference('WGS84')\n            mpoly = OGRGeometry(mp.wkt, sr)\n            self.assertEqual(sr.wkt, mpoly.srs.wkt)\n\n            # Ensuring that SRS is propagated to clones.\n            klone = mpoly.clone()\n            self.assertEqual(sr.wkt, klone.srs.wkt)\n\n            # Ensuring all children geometries (polygons and their rings) all\n            # return the assigned spatial reference as well.\n            for poly in mpoly:\n                self.assertEqual(sr.wkt, poly.srs.wkt)\n                for ring in poly:\n                    self.assertEqual(sr.wkt, ring.srs.wkt)\n\n            # Ensuring SRS propagate in topological ops.\n            a = OGRGeometry(self.geometries.topology_geoms[0].wkt_a, sr)\n            b = OGRGeometry(self.geometries.topology_geoms[0].wkt_b, sr)\n            diff = a.difference(b)\n            union = a.union(b)\n            self.assertEqual(sr.wkt, diff.srs.wkt)\n            self.assertEqual(sr.srid, union.srs.srid)\n\n            # Instantiating w/an integer SRID\n            mpoly = OGRGeometry(mp.wkt, 4326)\n            self.assertEqual(4326, mpoly.srid)\n            mpoly.srs = SpatialReference(4269)\n            self.assertEqual(4269, mpoly.srid)\n            self.assertEqual('NAD83', mpoly.srs.name)\n\n            # Incrementing through the multipolyogn after the spatial reference\n            # has been re-assigned.\n            for poly in mpoly:\n                self.assertEqual(mpoly.srs.wkt, poly.srs.wkt)\n                poly.srs = 32140\n                for ring in poly:\n                    # Changing each ring in the polygon\n                    self.assertEqual(32140, ring.srs.srid)\n                    self.assertEqual('NAD83 / Texas South Central', ring.srs.name)\n                    ring.srs = str(SpatialReference(4326)) # back to WGS84\n                    self.assertEqual(4326, ring.srs.srid)\n\n                    # Using the `srid` property.\n                    ring.srid = 4322\n                    self.assertEqual('WGS 72', ring.srs.name)\n                    self.assertEqual(4322, ring.srid)\n\n    def test09b_srs_transform(self):\n        \"Testing transform().\"\n        orig = OGRGeometry('POINT (-104.609 38.255)', 4326)\n        trans = OGRGeometry('POINT (992385.4472045 481455.4944650)', 2774)\n\n        # Using an srid, a SpatialReference object, and a CoordTransform object\n        # or transformations.\n        t1, t2, t3 = orig.clone(), orig.clone(), orig.clone()\n        t1.transform(trans.srid)\n        t2.transform(SpatialReference('EPSG:2774'))\n        ct = CoordTransform(SpatialReference('WGS84'), SpatialReference(2774))\n        t3.transform(ct)\n\n        # Testing use of the `clone` keyword.\n        k1 = orig.clone()\n        k2 = k1.transform(trans.srid, clone=True)\n        self.assertEqual(k1, orig)\n        self.assertNotEqual(k1, k2)\n\n        prec = 3\n        for p in (t1, t2, t3, k2):\n            self.assertAlmostEqual(trans.x, p.x, prec)\n            self.assertAlmostEqual(trans.y, p.y, prec)\n\n    def test09c_transform_dim(self):\n        \"Testing coordinate dimension is the same on transformed geometries.\"\n        ls_orig = OGRGeometry('LINESTRING(-104.609 38.255)', 4326)\n        ls_trans = OGRGeometry('LINESTRING(992385.4472045 481455.4944650)', 2774)\n\n        prec = 3\n        ls_orig.transform(ls_trans.srs)\n        # Making sure the coordinate dimension is still 2D.\n        self.assertEqual(2, ls_orig.coord_dim)\n        self.assertAlmostEqual(ls_trans.x[0], ls_orig.x[0], prec)\n        self.assertAlmostEqual(ls_trans.y[0], ls_orig.y[0], prec)\n\n    def test10_difference(self):\n        \"Testing difference().\"\n        for i in xrange(len(self.geometries.topology_geoms)):\n            a = OGRGeometry(self.geometries.topology_geoms[i].wkt_a)\n            b = OGRGeometry(self.geometries.topology_geoms[i].wkt_b)\n            d1 = OGRGeometry(self.geometries.diff_geoms[i].wkt)\n            d2 = a.difference(b)\n            self.assertEqual(d1, d2)\n            self.assertEqual(d1, a - b) # __sub__ is difference operator\n            a -= b # testing __isub__\n            self.assertEqual(d1, a)\n\n    def test11_intersection(self):\n        \"Testing intersects() and intersection().\"\n        for i in xrange(len(self.geometries.topology_geoms)):\n            a = OGRGeometry(self.geometries.topology_geoms[i].wkt_a)\n            b = OGRGeometry(self.geometries.topology_geoms[i].wkt_b)\n            i1 = OGRGeometry(self.geometries.intersect_geoms[i].wkt)\n            self.assertEqual(True, a.intersects(b))\n            i2 = a.intersection(b)\n            self.assertEqual(i1, i2)\n            self.assertEqual(i1, a & b) # __and__ is intersection operator\n            a &= b # testing __iand__\n            self.assertEqual(i1, a)\n\n    def test12_symdifference(self):\n        \"Testing sym_difference().\"\n        for i in xrange(len(self.geometries.topology_geoms)):\n            a = OGRGeometry(self.geometries.topology_geoms[i].wkt_a)\n            b = OGRGeometry(self.geometries.topology_geoms[i].wkt_b)\n            d1 = OGRGeometry(self.geometries.sdiff_geoms[i].wkt)\n            d2 = a.sym_difference(b)\n            self.assertEqual(d1, d2)\n            self.assertEqual(d1, a ^ b) # __xor__ is symmetric difference operator\n            a ^= b # testing __ixor__\n            self.assertEqual(d1, a)\n\n    def test13_union(self):\n        \"Testing union().\"\n        for i in xrange(len(self.geometries.topology_geoms)):\n            a = OGRGeometry(self.geometries.topology_geoms[i].wkt_a)\n            b = OGRGeometry(self.geometries.topology_geoms[i].wkt_b)\n            u1 = OGRGeometry(self.geometries.union_geoms[i].wkt)\n            u2 = a.union(b)\n            self.assertEqual(u1, u2)\n            self.assertEqual(u1, a | b) # __or__ is union operator\n            a |= b # testing __ior__\n            self.assertEqual(u1, a)\n\n    def test14_add(self):\n        \"Testing GeometryCollection.add().\"\n        # Can't insert a Point into a MultiPolygon.\n        mp = OGRGeometry('MultiPolygon')\n        pnt = OGRGeometry('POINT(5 23)')\n        self.assertRaises(OGRException, mp.add, pnt)\n\n        # GeometryCollection.add may take an OGRGeometry (if another collection\n        # of the same type all child geoms will be added individually) or WKT.\n        for mp in self.geometries.multipolygons:\n            mpoly = OGRGeometry(mp.wkt)\n            mp1 = OGRGeometry('MultiPolygon')\n            mp2 = OGRGeometry('MultiPolygon')\n            mp3 = OGRGeometry('MultiPolygon')\n\n            for poly in mpoly:\n                mp1.add(poly) # Adding a geometry at a time\n                mp2.add(poly.wkt) # Adding WKT\n            mp3.add(mpoly) # Adding a MultiPolygon's entire contents at once.\n            for tmp in (mp1, mp2, mp3): self.assertEqual(mpoly, tmp)\n\n    def test15_extent(self):\n        \"Testing `extent` property.\"\n        # The xmin, ymin, xmax, ymax of the MultiPoint should be returned.\n        mp = OGRGeometry('MULTIPOINT(5 23, 0 0, 10 50)')\n        self.assertEqual((0.0, 0.0, 10.0, 50.0), mp.extent)\n        # Testing on the 'real world' Polygon.\n        poly = OGRGeometry(self.geometries.polygons[3].wkt)\n        ring = poly.shell\n        x, y = ring.x, ring.y\n        xmin, ymin = min(x), min(y)\n        xmax, ymax = max(x), max(y)\n        self.assertEqual((xmin, ymin, xmax, ymax), poly.extent)\n\n    def test16_25D(self):\n        \"Testing 2.5D geometries.\"\n        pnt_25d = OGRGeometry('POINT(1 2 3)')\n        self.assertEqual('Point25D', pnt_25d.geom_type.name)\n        self.assertEqual(3.0, pnt_25d.z)\n        self.assertEqual(3, pnt_25d.coord_dim)\n        ls_25d = OGRGeometry('LINESTRING(1 1 1,2 2 2,3 3 3)')\n        self.assertEqual('LineString25D', ls_25d.geom_type.name)\n        self.assertEqual([1.0, 2.0, 3.0], ls_25d.z)\n        self.assertEqual(3, ls_25d.coord_dim)\n\n    def test17_pickle(self):\n        \"Testing pickle support.\"\n        g1 = OGRGeometry('LINESTRING(1 1 1,2 2 2,3 3 3)', 'WGS84')\n        g2 = pickle.loads(pickle.dumps(g1))\n        self.assertEqual(g1, g2)\n        self.assertEqual(4326, g2.srs.srid)\n        self.assertEqual(g1.srs.wkt, g2.srs.wkt)\n\n    def test18_ogrgeometry_transform_workaround(self):\n        \"Testing coordinate dimensions on geometries after transformation.\"\n        # A bug in GDAL versions prior to 1.7 changes the coordinate\n        # dimension of a geometry after it has been transformed.\n        # This test ensures that the bug workarounds employed within\n        # `OGRGeometry.transform` indeed work.\n        wkt_2d = \"MULTILINESTRING ((0 0,1 1,2 2))\"\n        wkt_3d = \"MULTILINESTRING ((0 0 0,1 1 1,2 2 2))\"\n        srid = 4326\n\n        # For both the 2D and 3D MultiLineString, ensure _both_ the dimension\n        # of the collection and the component LineString have the expected\n        # coordinate dimension after transform.\n        geom = OGRGeometry(wkt_2d, srid)\n        geom.transform(srid)\n        self.assertEqual(2, geom.coord_dim)\n        self.assertEqual(2, geom[0].coord_dim)\n        self.assertEqual(wkt_2d, geom.wkt)\n\n        geom = OGRGeometry(wkt_3d, srid)\n        geom.transform(srid)\n        self.assertEqual(3, geom.coord_dim)\n        self.assertEqual(3, geom[0].coord_dim)\n        self.assertEqual(wkt_3d, geom.wkt)\n\n    def test19_equivalence_regression(self):\n        \"Testing equivalence methods with non-OGRGeometry instances.\"\n        self.assertNotEqual(None, OGRGeometry('POINT(0 0)'))\n        self.assertEqual(False, OGRGeometry('LINESTRING(0 0, 1 1)') == 3)\n\ndef suite():\n    s = unittest.TestSuite()\n    s.addTest(unittest.makeSuite(OGRGeomTest))\n    return s\n\ndef run(verbosity=2):\n    unittest.TextTestRunner(verbosity=verbosity).run(suite())\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/gdal/tests/test_srs.py",
    "content": "from django.contrib.gis.gdal import SpatialReference, CoordTransform, OGRException, SRSException\nfrom django.utils import unittest\n\n\nclass TestSRS:\n    def __init__(self, wkt, **kwargs):\n        self.wkt = wkt\n        for key, value in kwargs.items():\n            setattr(self, key, value)\n\n# Some Spatial Reference examples\nsrlist = (TestSRS('GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]]',\n                  proj='+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs ',\n                  epsg=4326, projected=False, geographic=True, local=False,\n                  lin_name='unknown', ang_name='degree', lin_units=1.0, ang_units=0.0174532925199,\n                  auth={'GEOGCS' : ('EPSG', '4326'), 'spheroid' : ('EPSG', '7030')},\n                  attr=(('DATUM', 'WGS_1984'), (('SPHEROID', 1), '6378137'),('primem|authority', 'EPSG'),),\n                  ),\n          TestSRS('PROJCS[\"NAD83 / Texas South Central\",GEOGCS[\"NAD83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",30.28333333333333],PARAMETER[\"standard_parallel_2\",28.38333333333333],PARAMETER[\"latitude_of_origin\",27.83333333333333],PARAMETER[\"central_meridian\",-99],PARAMETER[\"false_easting\",600000],PARAMETER[\"false_northing\",4000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"32140\"]]',\n                  proj=None, epsg=32140, projected=True, geographic=False, local=False,\n                  lin_name='metre', ang_name='degree', lin_units=1.0, ang_units=0.0174532925199,\n                  auth={'PROJCS' : ('EPSG', '32140'), 'spheroid' : ('EPSG', '7019'), 'unit' : ('EPSG', '9001'),},\n                  attr=(('DATUM', 'North_American_Datum_1983'),(('SPHEROID', 2), '298.257222101'),('PROJECTION','Lambert_Conformal_Conic_2SP'),),\n                  ),\n          TestSRS('PROJCS[\"NAD_1983_StatePlane_Texas_South_Central_FIPS_4204_Feet\",GEOGCS[\"GCS_North_American_1983\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS_1980\",6378137.0,298.257222101]],PRIMEM[\"Greenwich\",0.0],UNIT[\"Degree\",0.0174532925199433]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"False_Easting\",1968500.0],PARAMETER[\"False_Northing\",13123333.33333333],PARAMETER[\"Central_Meridian\",-99.0],PARAMETER[\"Standard_Parallel_1\",28.38333333333333],PARAMETER[\"Standard_Parallel_2\",30.28333333333334],PARAMETER[\"Latitude_Of_Origin\",27.83333333333333],UNIT[\"Foot_US\",0.3048006096012192]]',\n                  proj=None, epsg=None, projected=True, geographic=False, local=False,\n                  lin_name='Foot_US', ang_name='Degree', lin_units=0.3048006096012192, ang_units=0.0174532925199,\n                  auth={'PROJCS' : (None, None),},\n                  attr=(('PROJCS|GeOgCs|spheroid', 'GRS_1980'),(('projcs', 9), 'UNIT'), (('projcs', 11), None),),\n                  ),\n          # This is really ESRI format, not WKT -- but the import should work the same\n          TestSRS('LOCAL_CS[\"Non-Earth (Meter)\",LOCAL_DATUM[\"Local Datum\",0],UNIT[\"Meter\",1.0],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]]',\n                  esri=True, proj=None, epsg=None, projected=False, geographic=False, local=True,\n                  lin_name='Meter', ang_name='degree', lin_units=1.0, ang_units=0.0174532925199,\n                  attr=(('LOCAL_DATUM', 'Local Datum'), ('unit', 'Meter')),\n                  ),\n          )\n\n# Well-Known Names\nwell_known = (TestSRS('GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]]', wk='WGS84', name='WGS 84', attrs=(('GEOGCS|AUTHORITY', 1, '4326'), ('SPHEROID', 'WGS 84'))),\n              TestSRS('GEOGCS[\"WGS 72\",DATUM[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4322\"]]', wk='WGS72', name='WGS 72', attrs=(('GEOGCS|AUTHORITY', 1, '4322'), ('SPHEROID', 'WGS 72'))),\n              TestSRS('GEOGCS[\"NAD27\",DATUM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4267\"]]', wk='NAD27', name='NAD27', attrs=(('GEOGCS|AUTHORITY', 1, '4267'), ('SPHEROID', 'Clarke 1866'))),\n              TestSRS('GEOGCS[\"NAD83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4269\"]]', wk='NAD83', name='NAD83', attrs=(('GEOGCS|AUTHORITY', 1, '4269'), ('SPHEROID', 'GRS 1980'))),\n              TestSRS('PROJCS[\"NZGD49 / Karamea Circuit\",GEOGCS[\"NZGD49\",DATUM[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID[\"International 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993],AUTHORITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4272\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\",-41.28991152777778],PARAMETER[\"central_meridian\",172.1090281944444],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",300000],PARAMETER[\"false_northing\",700000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"27216\"]]', wk='EPSG:27216', name='NZGD49 / Karamea Circuit', attrs=(('PROJECTION','Transverse_Mercator'), ('SPHEROID', 'International 1924'))),\n              )\n\nbad_srlist = ('Foobar', 'OOJCS[\"NAD83 / Texas South Central\",GEOGCS[\"NAD83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",30.28333333333333],PARAMETER[\"standard_parallel_2\",28.38333333333333],PARAMETER[\"latitude_of_origin\",27.83333333333333],PARAMETER[\"central_meridian\",-99],PARAMETER[\"false_easting\",600000],PARAMETER[\"false_northing\",4000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"32140\"]]',)\n\nclass SpatialRefTest(unittest.TestCase):\n\n    def test01_wkt(self):\n        \"Testing initialization on valid OGC WKT.\"\n        for s in srlist:\n            srs = SpatialReference(s.wkt)\n\n    def test02_bad_wkt(self):\n        \"Testing initialization on invalid WKT.\"\n        for bad in bad_srlist:\n            try:\n                srs = SpatialReference(bad)\n                srs.validate()\n            except (SRSException, OGRException):\n                pass\n            else:\n                self.fail('Should not have initialized on bad WKT \"%s\"!')\n\n    def test03_get_wkt(self):\n        \"Testing getting the WKT.\"\n        for s in srlist:\n            srs = SpatialReference(s.wkt)\n            self.assertEqual(s.wkt, srs.wkt)\n\n    def test04_proj(self):\n        \"Test PROJ.4 import and export.\"\n        for s in srlist:\n            if s.proj:\n                srs1 = SpatialReference(s.wkt)\n                srs2 = SpatialReference(s.proj)\n                self.assertEqual(srs1.proj, srs2.proj)\n\n    def test05_epsg(self):\n        \"Test EPSG import.\"\n        for s in srlist:\n            if s.epsg:\n                srs1 = SpatialReference(s.wkt)\n                srs2 = SpatialReference(s.epsg)\n                srs3 = SpatialReference(str(s.epsg))\n                srs4 = SpatialReference('EPSG:%d' % s.epsg)\n                for srs in (srs1, srs2, srs3, srs4):\n                    for attr, expected in s.attr:\n                        self.assertEqual(expected, srs[attr])\n\n    def test07_boolean_props(self):\n        \"Testing the boolean properties.\"\n        for s in srlist:\n            srs = SpatialReference(s.wkt)\n            self.assertEqual(s.projected, srs.projected)\n            self.assertEqual(s.geographic, srs.geographic)\n\n    def test08_angular_linear(self):\n        \"Testing the linear and angular units routines.\"\n        for s in srlist:\n            srs = SpatialReference(s.wkt)\n            self.assertEqual(s.ang_name, srs.angular_name)\n            self.assertEqual(s.lin_name, srs.linear_name)\n            self.assertAlmostEqual(s.ang_units, srs.angular_units, 9)\n            self.assertAlmostEqual(s.lin_units, srs.linear_units, 9)\n\n    def test09_authority(self):\n        \"Testing the authority name & code routines.\"\n        for s in srlist:\n            if hasattr(s, 'auth'):\n                srs = SpatialReference(s.wkt)\n                for target, tup in s.auth.items():\n                    self.assertEqual(tup[0], srs.auth_name(target))\n                    self.assertEqual(tup[1], srs.auth_code(target))\n\n    def test10_attributes(self):\n        \"Testing the attribute retrieval routines.\"\n        for s in srlist:\n            srs = SpatialReference(s.wkt)\n            for tup in s.attr:\n                att = tup[0] # Attribute to test\n                exp = tup[1] # Expected result\n                self.assertEqual(exp, srs[att])\n\n    def test11_wellknown(self):\n        \"Testing Well Known Names of Spatial References.\"\n        for s in well_known:\n            srs = SpatialReference(s.wk)\n            self.assertEqual(s.name, srs.name)\n            for tup in s.attrs:\n                if len(tup) == 2:\n                    key = tup[0]\n                    exp = tup[1]\n                elif len(tup) == 3:\n                    key = tup[:2]\n                    exp = tup[2]\n                self.assertEqual(srs[key], exp)\n\n    def test12_coordtransform(self):\n        \"Testing initialization of a CoordTransform.\"\n        target = SpatialReference('WGS84')\n        for s in srlist:\n            if s.proj:\n                ct = CoordTransform(SpatialReference(s.wkt), target)\n\n    def test13_attr_value(self):\n        \"Testing the attr_value() method.\"\n        s1 = SpatialReference('WGS84')\n        self.assertRaises(TypeError, s1.__getitem__, 0)\n        self.assertRaises(TypeError, s1.__getitem__, ('GEOGCS', 'foo'))\n        self.assertEqual('WGS 84', s1['GEOGCS'])\n        self.assertEqual('WGS_1984', s1['DATUM'])\n        self.assertEqual('EPSG', s1['AUTHORITY'])\n        self.assertEqual(4326, int(s1['AUTHORITY', 1]))\n        self.assertEqual(None, s1['FOOBAR'])\n\ndef suite():\n    s = unittest.TestSuite()\n    s.addTest(unittest.makeSuite(SpatialRefTest))\n    return s\n\ndef run(verbosity=2):\n    unittest.TextTestRunner(verbosity=verbosity).run(suite())\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/geoip/__init__.py",
    "content": "\"\"\"\n This module houses the GeoIP object, a ctypes wrapper for the MaxMind GeoIP(R)\n C API (http://www.maxmind.com/app/c).  This is an alternative to the GPL\n licensed Python GeoIP interface provided by MaxMind.\n\n GeoIP(R) is a registered trademark of MaxMind, LLC of Boston, Massachusetts.\n\n For IP-based geolocation, this module requires the GeoLite Country and City\n datasets, in binary format (CSV will not work!).  The datasets may be\n downloaded from MaxMind at http://www.maxmind.com/download/geoip/database/.\n Grab GeoIP.dat.gz and GeoLiteCity.dat.gz, and unzip them in the directory\n corresponding to settings.GEOIP_PATH.\n\"\"\"\nfrom __future__ import absolute_import\n\ntry:\n    from .base import GeoIP, GeoIPException\n    HAS_GEOIP = True\nexcept:\n    HAS_GEOIP = False\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/geoip/base.py",
    "content": "import os\nimport re\nfrom ctypes import c_char_p\n\nfrom django.core.validators import ipv4_re\nfrom django.contrib.gis.geoip.libgeoip import GEOIP_SETTINGS\nfrom django.contrib.gis.geoip.prototypes import (\n    GeoIPRecord, GeoIPTag, GeoIP_open, GeoIP_delete, GeoIP_database_info,\n    GeoIP_lib_version, GeoIP_record_by_addr, GeoIP_record_by_name,\n    GeoIP_country_code_by_addr, GeoIP_country_code_by_name,\n    GeoIP_country_name_by_addr, GeoIP_country_name_by_name)\n\nfrom django.utils import six\n\n# Regular expressions for recognizing the GeoIP free database editions.\nfree_regex = re.compile(r'^GEO-\\d{3}FREE')\nlite_regex = re.compile(r'^GEO-\\d{3}LITE')\n\n#### GeoIP classes ####\nclass GeoIPException(Exception): pass\n\nclass GeoIP(object):\n    # The flags for GeoIP memory caching.\n    # GEOIP_STANDARD - read database from filesystem, uses least memory.\n    #\n    # GEOIP_MEMORY_CACHE - load database into memory, faster performance\n    #        but uses more memory\n    #\n    # GEOIP_CHECK_CACHE - check for updated database.  If database has been\n    #        updated, reload filehandle and/or memory cache.  This option\n    #        is not thread safe.\n    #\n    # GEOIP_INDEX_CACHE - just cache the most frequently accessed index\n    #        portion of the database, resulting in faster lookups than\n    #        GEOIP_STANDARD, but less memory usage than GEOIP_MEMORY_CACHE -\n    #        useful for larger databases such as GeoIP Organization and\n    #        GeoIP City.  Note, for GeoIP Country, Region and Netspeed\n    #        databases, GEOIP_INDEX_CACHE is equivalent to GEOIP_MEMORY_CACHE\n    #\n    # GEOIP_MMAP_CACHE - load database into mmap shared memory ( not available\n    #       on Windows).\n    GEOIP_STANDARD     = 0\n    GEOIP_MEMORY_CACHE = 1\n    GEOIP_CHECK_CACHE  = 2\n    GEOIP_INDEX_CACHE  = 4\n    GEOIP_MMAP_CACHE   = 8\n    cache_options = dict((opt, None) for opt in (0, 1, 2, 4, 8))\n\n    # Paths to the city & country binary databases.\n    _city_file = ''\n    _country_file = ''\n\n    # Initially, pointers to GeoIP file references are NULL.\n    _city = None\n    _country = None\n\n    def __init__(self, path=None, cache=0, country=None, city=None):\n        \"\"\"\n        Initializes the GeoIP object, no parameters are required to use default\n        settings.  Keyword arguments may be passed in to customize the locations\n        of the GeoIP data sets.\n\n        * path: Base directory to where GeoIP data is located or the full path\n            to where the city or country data files (*.dat) are located.\n            Assumes that both the city and country data sets are located in\n            this directory; overrides the GEOIP_PATH settings attribute.\n\n        * cache: The cache settings when opening up the GeoIP datasets,\n            and may be an integer in (0, 1, 2, 4, 8) corresponding to\n            the GEOIP_STANDARD, GEOIP_MEMORY_CACHE, GEOIP_CHECK_CACHE,\n            GEOIP_INDEX_CACHE, and GEOIP_MMAP_CACHE, `GeoIPOptions` C API\n            settings,  respectively.  Defaults to 0, meaning that the data is read\n            from the disk.\n\n        * country: The name of the GeoIP country data file.  Defaults to\n            'GeoIP.dat'; overrides the GEOIP_COUNTRY settings attribute.\n\n        * city: The name of the GeoIP city data file.  Defaults to\n            'GeoLiteCity.dat'; overrides the GEOIP_CITY settings attribute.\n        \"\"\"\n        # Checking the given cache option.\n        if cache in self.cache_options:\n            self._cache = cache\n        else:\n            raise GeoIPException('Invalid GeoIP caching option: %s' % cache)\n\n        # Getting the GeoIP data path.\n        if not path:\n            path = GEOIP_SETTINGS.get('GEOIP_PATH', None)\n            if not path: raise GeoIPException('GeoIP path must be provided via parameter or the GEOIP_PATH setting.')\n        if not isinstance(path, six.string_types):\n            raise TypeError('Invalid path type: %s' % type(path).__name__)\n\n        if os.path.isdir(path):\n            # Constructing the GeoIP database filenames using the settings\n            # dictionary.  If the database files for the GeoLite country\n            # and/or city datasets exist, then try and open them.\n            country_db = os.path.join(path, country or GEOIP_SETTINGS.get('GEOIP_COUNTRY', 'GeoIP.dat'))\n            if os.path.isfile(country_db):\n                self._country = GeoIP_open(country_db, cache)\n                self._country_file = country_db\n\n            city_db = os.path.join(path, city or GEOIP_SETTINGS.get('GEOIP_CITY', 'GeoLiteCity.dat'))\n            if os.path.isfile(city_db):\n                self._city = GeoIP_open(city_db, cache)\n                self._city_file = city_db\n        elif os.path.isfile(path):\n            # Otherwise, some detective work will be needed to figure\n            # out whether the given database path is for the GeoIP country\n            # or city databases.\n            ptr = GeoIP_open(path, cache)\n            info = GeoIP_database_info(ptr)\n            if lite_regex.match(info):\n                # GeoLite City database detected.\n                self._city = ptr\n                self._city_file = path\n            elif free_regex.match(info):\n                # GeoIP Country database detected.\n                self._country = ptr\n                self._country_file = path\n            else:\n                raise GeoIPException('Unable to recognize database edition: %s' % info)\n        else:\n            raise GeoIPException('GeoIP path must be a valid file or directory.')\n\n    def __del__(self):\n        # Cleaning any GeoIP file handles lying around.\n        if self._country: GeoIP_delete(self._country)\n        if self._city: GeoIP_delete(self._city)\n\n    def _check_query(self, query, country=False, city=False, city_or_country=False):\n        \"Helper routine for checking the query and database availability.\"\n        # Making sure a string was passed in for the query.\n        if not isinstance(query, six.string_types):\n            raise TypeError('GeoIP query must be a string, not type %s' % type(query).__name__)\n\n        # GeoIP only takes ASCII-encoded strings.\n        query = query.encode('ascii')\n\n        # Extra checks for the existence of country and city databases.\n        if city_or_country and not (self._country or self._city):\n            raise GeoIPException('Invalid GeoIP country and city data files.')\n        elif country and not self._country:\n            raise GeoIPException('Invalid GeoIP country data file: %s' % self._country_file)\n        elif city and not self._city:\n            raise GeoIPException('Invalid GeoIP city data file: %s' % self._city_file)\n\n        # Return the query string back to the caller.\n        return query\n\n    def city(self, query):\n        \"\"\"\n        Returns a dictionary of city information for the given IP address or\n        Fully Qualified Domain Name (FQDN).  Some information in the dictionary\n        may be undefined (None).\n        \"\"\"\n        query = self._check_query(query, city=True)\n        if ipv4_re.match(query):\n            # If an IP address was passed in\n            return GeoIP_record_by_addr(self._city, c_char_p(query))\n        else:\n            # If a FQDN was passed in.\n            return GeoIP_record_by_name(self._city, c_char_p(query))\n\n    def country_code(self, query):\n        \"Returns the country code for the given IP Address or FQDN.\"\n        query = self._check_query(query, city_or_country=True)\n        if self._country:\n            if ipv4_re.match(query):\n                return GeoIP_country_code_by_addr(self._country, query)\n            else:\n                return GeoIP_country_code_by_name(self._country, query)\n        else:\n            return self.city(query)['country_code']\n\n    def country_name(self, query):\n        \"Returns the country name for the given IP Address or FQDN.\"\n        query = self._check_query(query, city_or_country=True)\n        if self._country:\n            if ipv4_re.match(query):\n                return GeoIP_country_name_by_addr(self._country, query)\n            else:\n                return GeoIP_country_name_by_name(self._country, query)\n        else:\n            return self.city(query)['country_name']\n\n    def country(self, query):\n        \"\"\"\n        Returns a dictonary with with the country code and name when given an\n        IP address or a Fully Qualified Domain Name (FQDN).  For example, both\n        '24.124.1.80' and 'djangoproject.com' are valid parameters.\n        \"\"\"\n        # Returning the country code and name\n        return {'country_code' : self.country_code(query),\n                'country_name' : self.country_name(query),\n                }\n\n    #### Coordinate retrieval routines ####\n    def coords(self, query, ordering=('longitude', 'latitude')):\n        cdict = self.city(query)\n        if cdict is None: return None\n        else: return tuple(cdict[o] for o in ordering)\n\n    def lon_lat(self, query):\n        \"Returns a tuple of the (longitude, latitude) for the given query.\"\n        return self.coords(query)\n\n    def lat_lon(self, query):\n        \"Returns a tuple of the (latitude, longitude) for the given query.\"\n        return self.coords(query, ('latitude', 'longitude'))\n\n    def geos(self, query):\n        \"Returns a GEOS Point object for the given query.\"\n        ll = self.lon_lat(query)\n        if ll:\n            from django.contrib.gis.geos import Point\n            return Point(ll, srid=4326)\n        else:\n            return None\n\n    #### GeoIP Database Information Routines ####\n    @property\n    def country_info(self):\n        \"Returns information about the GeoIP country database.\"\n        if self._country is None:\n            ci = 'No GeoIP Country data in \"%s\"' % self._country_file\n        else:\n            ci = GeoIP_database_info(self._country)\n        return ci\n\n    @property\n    def city_info(self):\n        \"Retuns information about the GeoIP city database.\"\n        if self._city is None:\n            ci = 'No GeoIP City data in \"%s\"' % self._city_file\n        else:\n            ci = GeoIP_database_info(self._city)\n        return ci\n\n    @property\n    def info(self):\n        \"Returns information about the GeoIP library and databases in use.\"\n        info = ''\n        if GeoIP_lib_version:\n            info += 'GeoIP Library:\\n\\t%s\\n' % GeoIP_lib_version()\n        return info + 'Country:\\n\\t%s\\nCity:\\n\\t%s' % (self.country_info, self.city_info)\n\n    #### Methods for compatibility w/the GeoIP-Python API. ####\n    @classmethod\n    def open(cls, full_path, cache):\n        return GeoIP(full_path, cache)\n\n    def _rec_by_arg(self, arg):\n        if self._city:\n            return self.city(arg)\n        else:\n            return self.country(arg)\n    region_by_addr = city\n    region_by_name = city\n    record_by_addr = _rec_by_arg\n    record_by_name = _rec_by_arg\n    country_code_by_addr = country_code\n    country_code_by_name = country_code\n    country_name_by_addr = country_name\n    country_name_by_name = country_name\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/geoip/libgeoip.py",
    "content": "import os\nfrom ctypes import CDLL\nfrom ctypes.util import find_library\nfrom django.conf import settings\n\n# Creating the settings dictionary with any settings, if needed.\nGEOIP_SETTINGS = dict((key, getattr(settings, key))\n                      for key in ('GEOIP_PATH', 'GEOIP_LIBRARY_PATH', 'GEOIP_COUNTRY', 'GEOIP_CITY')\n                      if hasattr(settings, key))\nlib_path = GEOIP_SETTINGS.get('GEOIP_LIBRARY_PATH', None)\n\n# The shared library for the GeoIP C API.  May be downloaded\n#  from http://www.maxmind.com/download/geoip/api/c/\nif lib_path:\n    lib_name = None\nelse:\n    # TODO: Is this really the library name for Windows?\n    lib_name = 'GeoIP'\n\n# Getting the path to the GeoIP library.\nif lib_name: lib_path = find_library(lib_name)\nif lib_path is None: raise GeoIPException('Could not find the GeoIP library (tried \"%s\"). '\n                                          'Try setting GEOIP_LIBRARY_PATH in your settings.' % lib_name)\nlgeoip = CDLL(lib_path)\n\n# Getting the C `free` for the platform.\nif os.name == 'nt':\n    libc = CDLL('msvcrt')\nelse:\n    libc = CDLL(None)\nfree = libc.free\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/geoip/prototypes.py",
    "content": "from ctypes import c_char_p, c_float, c_int, string_at, Structure, POINTER\nfrom django.contrib.gis.geoip.libgeoip import lgeoip, free\n\n#### GeoIP C Structure definitions ####\n\nclass GeoIPRecord(Structure):\n    _fields_ = [('country_code', c_char_p),\n                ('country_code3', c_char_p),\n                ('country_name', c_char_p),\n                ('region', c_char_p),\n                ('city', c_char_p),\n                ('postal_code', c_char_p),\n                ('latitude', c_float),\n                ('longitude', c_float),\n                # TODO: In 1.4.6 this changed from `int dma_code;` to\n                # `union {int metro_code; int dma_code;};`.  Change\n                # to a `ctypes.Union` in to accomodate in future when\n                # pre-1.4.6 versions are no longer distributed.\n                ('dma_code', c_int),\n                ('area_code', c_int),\n                ('charset', c_int),\n                ('continent_code', c_char_p),\n                ]\ngeoip_char_fields = [name for name, ctype in GeoIPRecord._fields_ if ctype is c_char_p]\ngeoip_encodings = { 0: 'iso-8859-1',\n                    1: 'utf8',\n                    }\n\nclass GeoIPTag(Structure): pass\n\nRECTYPE = POINTER(GeoIPRecord)\nDBTYPE = POINTER(GeoIPTag)\n\n#### ctypes function prototypes ####\n\n# GeoIP_lib_version appeared in version 1.4.7.\nif hasattr(lgeoip, 'GeoIP_lib_version'):\n    GeoIP_lib_version = lgeoip.GeoIP_lib_version\n    GeoIP_lib_version.argtypes = None\n    GeoIP_lib_version.restype = c_char_p\nelse:\n    GeoIP_lib_version = None\n\n# For freeing memory allocated within a record\nGeoIPRecord_delete = lgeoip.GeoIPRecord_delete\nGeoIPRecord_delete.argtypes = [RECTYPE]\nGeoIPRecord_delete.restype = None\n\n# For retrieving records by name or address.\ndef check_record(result, func, cargs):\n    if bool(result):\n        # Checking the pointer to the C structure, if valid pull out elements\n        # into a dicionary.\n        rec = result.contents\n        record = dict((fld, getattr(rec, fld)) for fld, ctype in rec._fields_)\n\n        # Now converting the strings to unicode using the proper encoding.\n        encoding = geoip_encodings[record['charset']]\n        for char_field in geoip_char_fields:\n            if record[char_field]:\n                record[char_field] = record[char_field].decode(encoding)\n\n        # Free the memory allocated for the struct & return.\n        GeoIPRecord_delete(result)\n        return record\n    else:\n        return None\n\ndef record_output(func):\n    func.argtypes = [DBTYPE, c_char_p]\n    func.restype = RECTYPE\n    func.errcheck = check_record\n    return func\nGeoIP_record_by_addr = record_output(lgeoip.GeoIP_record_by_addr)\nGeoIP_record_by_name = record_output(lgeoip.GeoIP_record_by_name)\n\n\n# For opening & closing GeoIP database files.\nGeoIP_open = lgeoip.GeoIP_open\nGeoIP_open.restype = DBTYPE\nGeoIP_delete = lgeoip.GeoIP_delete\nGeoIP_delete.argtypes = [DBTYPE]\nGeoIP_delete.restype = None\n\n# This is so the string pointer can be freed within Python.\nclass geoip_char_p(c_char_p):\n    pass\n\ndef check_string(result, func, cargs):\n    if result:\n        s = string_at(result)\n        free(result)\n    else:\n        s = ''\n    return s\n\nGeoIP_database_info = lgeoip.GeoIP_database_info\nGeoIP_database_info.restype = geoip_char_p\nGeoIP_database_info.errcheck = check_string\n\n# String output routines.\ndef string_output(func):\n    func.restype = c_char_p\n    return func\n\nGeoIP_country_code_by_addr = string_output(lgeoip.GeoIP_country_code_by_addr)\nGeoIP_country_code_by_name = string_output(lgeoip.GeoIP_country_code_by_name)\nGeoIP_country_name_by_addr = string_output(lgeoip.GeoIP_country_name_by_addr)\nGeoIP_country_name_by_name = string_output(lgeoip.GeoIP_country_name_by_name)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/geoip/tests.py",
    "content": "# -*- coding: utf-8 -*-\nfrom __future__ import unicode_literals\n\nimport os\nfrom django.conf import settings\nfrom django.contrib.gis.geos import GEOSGeometry\nfrom django.contrib.gis.geoip import GeoIP, GeoIPException\nfrom django.utils import unittest\n\nfrom django.utils import six\n\n# Note: Requires use of both the GeoIP country and city datasets.\n# The GEOIP_DATA path should be the only setting set (the directory\n# should contain links or the actual database files 'GeoIP.dat' and\n# 'GeoLiteCity.dat'.\nclass GeoIPTest(unittest.TestCase):\n\n    def test01_init(self):\n        \"Testing GeoIP initialization.\"\n        g1 = GeoIP() # Everything inferred from GeoIP path\n        path = settings.GEOIP_PATH\n        g2 = GeoIP(path, 0) # Passing in data path explicitly.\n        g3 = GeoIP.open(path, 0) # MaxMind Python API syntax.\n\n        for g in (g1, g2, g3):\n            self.assertEqual(True, bool(g._country))\n            self.assertEqual(True, bool(g._city))\n\n        # Only passing in the location of one database.\n        city = os.path.join(path, 'GeoLiteCity.dat')\n        cntry = os.path.join(path, 'GeoIP.dat')\n        g4 = GeoIP(city, country='')\n        self.assertEqual(None, g4._country)\n        g5 = GeoIP(cntry, city='')\n        self.assertEqual(None, g5._city)\n\n        # Improper parameters.\n        bad_params = (23, 'foo', 15.23)\n        for bad in bad_params:\n            self.assertRaises(GeoIPException, GeoIP, cache=bad)\n            if isinstance(bad, six.string_types):\n                e = GeoIPException\n            else:\n                e = TypeError\n            self.assertRaises(e, GeoIP, bad, 0)\n\n    def test02_bad_query(self):\n        \"Testing GeoIP query parameter checking.\"\n        cntry_g = GeoIP(city='<foo>')\n        # No city database available, these calls should fail.\n        self.assertRaises(GeoIPException, cntry_g.city, 'google.com')\n        self.assertRaises(GeoIPException, cntry_g.coords, 'yahoo.com')\n\n        # Non-string query should raise TypeError\n        self.assertRaises(TypeError, cntry_g.country_code, 17)\n        self.assertRaises(TypeError, cntry_g.country_name, GeoIP)\n\n    def test03_country(self):\n        \"Testing GeoIP country querying methods.\"\n        g = GeoIP(city='<foo>')\n\n        fqdn = 'www.google.com'\n        addr = '12.215.42.19'\n\n        for query in (fqdn, addr):\n            for func in (g.country_code, g.country_code_by_addr, g.country_code_by_name):\n                self.assertEqual('US', func(query))\n            for func in (g.country_name, g.country_name_by_addr, g.country_name_by_name):\n                self.assertEqual('United States', func(query))\n            self.assertEqual({'country_code' : 'US', 'country_name' : 'United States'},\n                             g.country(query))\n\n    def test04_city(self):\n        \"Testing GeoIP city querying methods.\"\n        g = GeoIP(country='<foo>')\n\n        addr = '128.249.1.1'\n        fqdn = 'tmc.edu'\n        for query in (fqdn, addr):\n            # Country queries should still work.\n            for func in (g.country_code, g.country_code_by_addr, g.country_code_by_name):\n                self.assertEqual('US', func(query))\n            for func in (g.country_name, g.country_name_by_addr, g.country_name_by_name):\n                self.assertEqual('United States', func(query))\n            self.assertEqual({'country_code' : 'US', 'country_name' : 'United States'},\n                             g.country(query))\n\n            # City information dictionary.\n            d = g.city(query)\n            self.assertEqual('USA', d['country_code3'])\n            self.assertEqual('Houston', d['city'])\n            self.assertEqual('TX', d['region'])\n            self.assertEqual(713, d['area_code'])\n            geom = g.geos(query)\n            self.assertTrue(isinstance(geom, GEOSGeometry))\n            lon, lat = (-95.4010, 29.7079)\n            lat_lon = g.lat_lon(query)\n            lat_lon = (lat_lon[1], lat_lon[0])\n            for tup in (geom.tuple, g.coords(query), g.lon_lat(query), lat_lon):\n                self.assertAlmostEqual(lon, tup[0], 4)\n                self.assertAlmostEqual(lat, tup[1], 4)\n\n    def test05_unicode_response(self):\n        \"Testing that GeoIP strings are properly encoded, see #16553.\"\n        g = GeoIP()\n        d = g.city('62.224.93.23')\n        self.assertEqual('Schümberg', d['city'])\n\n    def test06_unicode_query(self):\n        \"Testing that GeoIP accepts unicode string queries, see #17059.\"\n        g = GeoIP()\n        d = g.country('whitehouse.gov')\n        self.assertEqual('US', d['country_code'])\n\n\ndef suite():\n    s = unittest.TestSuite()\n    s.addTest(unittest.makeSuite(GeoIPTest))\n    return s\n\ndef run(verbosity=1):\n    unittest.TextTestRunner(verbosity=verbosity).run(suite())\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/geometry/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/geometry/backend/__init__.py",
    "content": "from django.conf import settings\nfrom django.core.exceptions import ImproperlyConfigured\nfrom django.utils.importlib import import_module\n\ngeom_backend = getattr(settings, 'GEOMETRY_BACKEND', 'geos')\n\ntry:\n    module = import_module('.%s' % geom_backend, 'django.contrib.gis.geometry.backend')\nexcept ImportError:\n    try:\n        module = import_module(geom_backend)\n    except ImportError:\n        raise ImproperlyConfigured('Could not import user-defined GEOMETRY_BACKEND '\n                                   '\"%s\".' % geom_backend)\n\ntry:\n    Geometry = module.Geometry\n    GeometryException = module.GeometryException\nexcept AttributeError:\n    raise ImproperlyConfigured('Cannot import Geometry from the \"%s\" '\n                               'geometry backend.' % geom_backend)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/geometry/backend/geos.py",
    "content": "from django.contrib.gis.geos import (\n    GEOSGeometry as Geometry, GEOSException as GeometryException)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/geometry/regex.py",
    "content": "import re\n\n# Regular expression for recognizing HEXEWKB and WKT.  A prophylactic measure\n# to prevent potentially malicious input from reaching the underlying C\n# library.  Not a substitute for good Web security programming practices.\nhex_regex = re.compile(r'^[0-9A-F]+$', re.I)\nwkt_regex = re.compile(r'^(SRID=(?P<srid>\\-?\\d+);)?'\n                       r'(?P<wkt>'\n                       r'(?P<type>POINT|LINESTRING|LINEARRING|POLYGON|MULTIPOINT|MULTILINESTRING|MULTIPOLYGON|GEOMETRYCOLLECTION)'\n                       r'[ACEGIMLONPSRUTYZ\\d,\\.\\-\\(\\) ]+)$',\n                       re.I)\njson_regex = re.compile(r'^(\\s+)?\\{[\\s\\w,\\[\\]\\{\\}\\-\\.\"\\':]+\\}(\\s+)?$')\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/geometry/test_data.py",
    "content": "\"\"\"\nThis module has the mock object definitions used to hold reference geometry\nfor the GEOS and GDAL tests.\n\"\"\"\nimport json\nimport os\n\nfrom django.contrib import gis\nfrom django.utils import six\nfrom django.utils._os import upath\n\n\n# This global used to store reference geometry data.\nGEOMETRIES = None\n\n# Path where reference test data is located.\nTEST_DATA = os.path.join(os.path.dirname(upath(gis.__file__)), 'tests', 'data')\n\n\ndef tuplize(seq):\n    \"Turn all nested sequences to tuples in given sequence.\"\n    if isinstance(seq, (list, tuple)):\n        return tuple([tuplize(i) for i in seq])\n    return seq\n\n\ndef strconvert(d):\n    \"Converts all keys in dictionary to str type.\"\n    return dict([(str(k), v) for k, v in six.iteritems(d)])\n\n\ndef get_ds_file(name, ext):\n    return os.path.join(TEST_DATA,\n                        name,\n                        name + '.%s' % ext\n                        )\n\n\nclass TestObj(object):\n    \"\"\"\n    Base testing object, turns keyword args into attributes.\n    \"\"\"\n    def __init__(self, **kwargs):\n        for key, value in kwargs.items():\n            setattr(self, key, value)\n\n\nclass TestDS(TestObj):\n    \"\"\"\n    Object for testing GDAL data sources.\n    \"\"\"\n    def __init__(self, name, **kwargs):\n        # Shapefile is default extension, unless specified otherwise.\n        ext = kwargs.pop('ext', 'shp')\n        self.ds = get_ds_file(name, ext)\n        super(TestDS, self).__init__(**kwargs)\n\n\nclass TestGeom(TestObj):\n    \"\"\"\n    Testing object used for wrapping reference geometry data\n    in GEOS/GDAL tests.\n    \"\"\"\n    def __init__(self, **kwargs):\n        # Converting lists to tuples of certain keyword args\n        # so coordinate test cases will match (JSON has no\n        # concept of tuple).\n        coords = kwargs.pop('coords', None)\n        if coords:\n            self.coords = tuplize(coords)\n\n        centroid = kwargs.pop('centroid', None)\n        if centroid:\n            self.centroid = tuple(centroid)\n\n        ext_ring_cs = kwargs.pop('ext_ring_cs', None)\n        if ext_ring_cs:\n            ext_ring_cs = tuplize(ext_ring_cs)\n        self.ext_ring_cs = ext_ring_cs\n\n        super(TestGeom, self).__init__(**kwargs)\n\n\nclass TestGeomSet(object):\n    \"\"\"\n    Each attribute of this object is a list of `TestGeom` instances.\n    \"\"\"\n    def __init__(self, **kwargs):\n        for key, value in kwargs.items():\n            setattr(self, key, [TestGeom(**strconvert(kw)) for kw in value])\n\n\nclass TestDataMixin(object):\n    \"\"\"\n    Mixin used for GEOS/GDAL test cases that defines a `geometries`\n    property, which returns and/or loads the reference geometry data.\n    \"\"\"\n    @property\n    def geometries(self):\n        global GEOMETRIES\n        if GEOMETRIES is None:\n            # Load up the test geometry data from fixture into global.\n            with open(os.path.join(TEST_DATA, 'geometries.json')) as f:\n                geometries = json.load(f)\n            GEOMETRIES = TestGeomSet(**strconvert(geometries))\n        return GEOMETRIES\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/geos/LICENSE",
    "content": "Copyright (c) 2007-2009 Justin Bronn\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without modification,\nare permitted provided that the following conditions are met:\n\n    1. Redistributions of source code must retain the above copyright notice, \n       this list of conditions and the following disclaimer.\n   \n    2. Redistributions in binary form must reproduce the above copyright \n       notice, this list of conditions and the following disclaimer in the\n       documentation and/or other materials provided with the distribution.\n\n    3. Neither the name of GEOSGeometry nor the names of its contributors may be used\n       to endorse or promote products derived from this software without\n       specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/geos/__init__.py",
    "content": "\"\"\"\nThe GeoDjango GEOS module.  Please consult the GeoDjango documentation\nfor more details: \n  http://geodjango.org/docs/geos.html\n\"\"\"\nfrom django.contrib.gis.geos.geometry import GEOSGeometry, wkt_regex, hex_regex\nfrom django.contrib.gis.geos.point import Point\nfrom django.contrib.gis.geos.linestring import LineString, LinearRing\nfrom django.contrib.gis.geos.polygon import Polygon\nfrom django.contrib.gis.geos.collections import GeometryCollection, MultiPoint, MultiLineString, MultiPolygon\nfrom django.contrib.gis.geos.error import GEOSException, GEOSIndexError\nfrom django.contrib.gis.geos.io import WKTReader, WKTWriter, WKBReader, WKBWriter\nfrom django.contrib.gis.geos.factory import fromfile, fromstr\nfrom django.contrib.gis.geos.libgeos import geos_version, geos_version_info, GEOS_PREPARE\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/geos/base.py",
    "content": "from ctypes import c_void_p\n\nfrom django.contrib.gis.geos.error import GEOSException\n\n# Trying to import GDAL libraries, if available.  Have to place in\n# try/except since this package may be used outside GeoDjango.\ntry:\n    from django.contrib.gis import gdal\nexcept ImportError:\n    # A 'dummy' gdal module.\n    class GDALInfo(object):\n        HAS_GDAL = False\n    gdal = GDALInfo()\n\n# NumPy supported?\ntry:\n    import numpy\nexcept ImportError:\n    numpy = False\n\nclass GEOSBase(object):\n    \"\"\"\n    Base object for GEOS objects that has a pointer access property\n    that controls access to the underlying C pointer.\n    \"\"\"\n    # Initially the pointer is NULL.\n    _ptr = None\n\n    # Default allowed pointer type.\n    ptr_type = c_void_p\n\n    # Pointer access property.\n    def _get_ptr(self):\n        # Raise an exception if the pointer isn't valid don't\n        # want to be passing NULL pointers to routines --\n        # that's very bad.\n        if self._ptr: return self._ptr\n        else: raise GEOSException('NULL GEOS %s pointer encountered.' % self.__class__.__name__)\n\n    def _set_ptr(self, ptr):\n        # Only allow the pointer to be set with pointers of the\n        # compatible type or None (NULL).\n        if ptr is None or isinstance(ptr, self.ptr_type):\n            self._ptr = ptr\n        else:\n            raise TypeError('Incompatible pointer type')\n\n    # Property for controlling access to the GEOS object pointers.  Using\n    # this raises an exception when the pointer is NULL, thus preventing\n    # the C library from attempting to access an invalid memory location.\n    ptr = property(_get_ptr, _set_ptr)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/geos/collections.py",
    "content": "\"\"\"\n This module houses the Geometry Collection objects:\n GeometryCollection, MultiPoint, MultiLineString, and MultiPolygon\n\"\"\"\nfrom ctypes import c_int, c_uint, byref\nfrom django.contrib.gis.geos.error import GEOSException\nfrom django.contrib.gis.geos.geometry import GEOSGeometry\nfrom django.contrib.gis.geos.libgeos import get_pointer_arr, GEOS_PREPARE\nfrom django.contrib.gis.geos.linestring import LineString, LinearRing\nfrom django.contrib.gis.geos.point import Point\nfrom django.contrib.gis.geos.polygon import Polygon\nfrom django.contrib.gis.geos import prototypes as capi\nfrom django.utils.six.moves import xrange\n\nclass GeometryCollection(GEOSGeometry):\n    _typeid = 7\n\n    def __init__(self, *args, **kwargs):\n        \"Initializes a Geometry Collection from a sequence of Geometry objects.\"\n\n        # Checking the arguments\n        if not args:\n            raise TypeError('Must provide at least one Geometry to initialize %s.' % self.__class__.__name__)\n\n        if len(args) == 1:\n            # If only one geometry provided or a list of geometries is provided\n            #  in the first argument.\n            if isinstance(args[0], (tuple, list)):\n                init_geoms = args[0]\n            else:\n                init_geoms = args\n        else:\n            init_geoms = args\n\n        # Ensuring that only the permitted geometries are allowed in this collection\n        # this is moved to list mixin super class\n        self._check_allowed(init_geoms)\n\n        # Creating the geometry pointer array.\n        collection = self._create_collection(len(init_geoms), iter(init_geoms))\n        super(GeometryCollection, self).__init__(collection, **kwargs)\n\n    def __iter__(self):\n        \"Iterates over each Geometry in the Collection.\"\n        for i in xrange(len(self)):\n            yield self[i]\n\n    def __len__(self):\n        \"Returns the number of geometries in this Collection.\"\n        return self.num_geom\n\n    ### Methods for compatibility with ListMixin ###\n    def _create_collection(self, length, items):\n        # Creating the geometry pointer array.\n        geoms = get_pointer_arr(length)\n        for i, g in enumerate(items):\n            # this is a little sloppy, but makes life easier\n            # allow GEOSGeometry types (python wrappers) or pointer types\n            geoms[i] = capi.geom_clone(getattr(g, 'ptr', g))\n\n        return capi.create_collection(c_int(self._typeid), byref(geoms), c_uint(length))\n\n    def _get_single_internal(self, index):\n        return capi.get_geomn(self.ptr, index)\n\n    def _get_single_external(self, index):\n        \"Returns the Geometry from this Collection at the given index (0-based).\"\n        # Checking the index and returning the corresponding GEOS geometry.\n        return GEOSGeometry(capi.geom_clone(self._get_single_internal(index)), srid=self.srid)\n\n    def _set_list(self, length, items):\n        \"Create a new collection, and destroy the contents of the previous pointer.\"\n        prev_ptr = self.ptr\n        srid = self.srid\n        self.ptr = self._create_collection(length, items)\n        if srid: self.srid = srid\n        capi.destroy_geom(prev_ptr)\n\n    _set_single = GEOSGeometry._set_single_rebuild\n    _assign_extended_slice = GEOSGeometry._assign_extended_slice_rebuild\n\n    @property\n    def kml(self):\n        \"Returns the KML for this Geometry Collection.\"\n        return '<MultiGeometry>%s</MultiGeometry>' % ''.join([g.kml for g in self])\n\n    @property\n    def tuple(self):\n        \"Returns a tuple of all the coordinates in this Geometry Collection\"\n        return tuple([g.tuple for g in self])\n    coords = tuple\n\n# MultiPoint, MultiLineString, and MultiPolygon class definitions.\nclass MultiPoint(GeometryCollection):\n    _allowed = Point\n    _typeid = 4\n\nclass MultiLineString(GeometryCollection):\n    _allowed = (LineString, LinearRing)\n    _typeid = 5\n\n    @property\n    def merged(self):\n        \"\"\"\n        Returns a LineString representing the line merge of this\n        MultiLineString.\n        \"\"\"\n        return self._topology(capi.geos_linemerge(self.ptr))\n\nclass MultiPolygon(GeometryCollection):\n    _allowed = Polygon\n    _typeid = 6\n\n    @property\n    def cascaded_union(self):\n        \"Returns a cascaded union of this MultiPolygon.\"\n        if GEOS_PREPARE:\n            return GEOSGeometry(capi.geos_cascaded_union(self.ptr), self.srid)\n        else:\n            raise GEOSException('The cascaded union operation requires GEOS 3.1+.')\n\n# Setting the allowed types here since GeometryCollection is defined before\n# its subclasses.\nGeometryCollection._allowed = (Point, LineString, LinearRing, Polygon, MultiPoint, MultiLineString, MultiPolygon)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/geos/coordseq.py",
    "content": "\"\"\"\n This module houses the GEOSCoordSeq object, which is used internally\n by GEOSGeometry to house the actual coordinates of the Point,\n LineString, and LinearRing geometries.\n\"\"\"\nfrom ctypes import c_double, c_uint, byref\nfrom django.contrib.gis.geos.base import GEOSBase, numpy\nfrom django.contrib.gis.geos.error import GEOSException, GEOSIndexError\nfrom django.contrib.gis.geos.libgeos import CS_PTR\nfrom django.contrib.gis.geos import prototypes as capi\nfrom django.utils.six.moves import xrange\n\nclass GEOSCoordSeq(GEOSBase):\n    \"The internal representation of a list of coordinates inside a Geometry.\"\n\n    ptr_type = CS_PTR\n\n    #### Python 'magic' routines ####\n    def __init__(self, ptr, z=False):\n        \"Initializes from a GEOS pointer.\"\n        if not isinstance(ptr, CS_PTR):\n            raise TypeError('Coordinate sequence should initialize with a CS_PTR.')\n        self._ptr = ptr\n        self._z = z\n\n    def __iter__(self):\n        \"Iterates over each point in the coordinate sequence.\"\n        for i in xrange(self.size):\n            yield self[i]\n\n    def __len__(self):\n        \"Returns the number of points in the coordinate sequence.\"\n        return int(self.size)\n\n    def __str__(self):\n        \"Returns the string representation of the coordinate sequence.\"\n        return str(self.tuple)\n\n    def __getitem__(self, index):\n        \"Returns the coordinate sequence value at the given index.\"\n        coords = [self.getX(index), self.getY(index)]\n        if self.dims == 3 and self._z:\n            coords.append(self.getZ(index))\n        return tuple(coords)\n\n    def __setitem__(self, index, value):\n        \"Sets the coordinate sequence value at the given index.\"\n        # Checking the input value\n        if isinstance(value, (list, tuple)):\n            pass\n        elif numpy and isinstance(value, numpy.ndarray):\n            pass\n        else:\n            raise TypeError('Must set coordinate with a sequence (list, tuple, or numpy array).')\n        # Checking the dims of the input\n        if self.dims == 3 and self._z:\n            n_args = 3\n            set_3d = True\n        else:\n            n_args = 2\n            set_3d = False\n        if len(value) != n_args:\n            raise TypeError('Dimension of value does not match.')\n        # Setting the X, Y, Z\n        self.setX(index, value[0])\n        self.setY(index, value[1])\n        if set_3d: self.setZ(index, value[2])\n\n    #### Internal Routines ####\n    def _checkindex(self, index):\n        \"Checks the given index.\"\n        sz = self.size\n        if (sz < 1) or (index < 0) or (index >= sz):\n            raise GEOSIndexError('invalid GEOS Geometry index: %s' % str(index))\n\n    def _checkdim(self, dim):\n        \"Checks the given dimension.\"\n        if dim < 0 or dim > 2:\n            raise GEOSException('invalid ordinate dimension \"%d\"' % dim)\n\n    #### Ordinate getting and setting routines ####\n    def getOrdinate(self, dimension, index):\n        \"Returns the value for the given dimension and index.\"\n        self._checkindex(index)\n        self._checkdim(dimension)\n        return capi.cs_getordinate(self.ptr, index, dimension, byref(c_double()))\n\n    def setOrdinate(self, dimension, index, value):\n        \"Sets the value for the given dimension and index.\"\n        self._checkindex(index)\n        self._checkdim(dimension)\n        capi.cs_setordinate(self.ptr, index, dimension, value)\n\n    def getX(self, index):\n        \"Get the X value at the index.\"\n        return self.getOrdinate(0, index)\n\n    def setX(self, index, value):\n        \"Set X with the value at the given index.\"\n        self.setOrdinate(0, index, value)\n\n    def getY(self, index):\n        \"Get the Y value at the given index.\"\n        return self.getOrdinate(1, index)\n\n    def setY(self, index, value):\n        \"Set Y with the value at the given index.\"\n        self.setOrdinate(1, index, value)\n\n    def getZ(self, index):\n        \"Get Z with the value at the given index.\"\n        return self.getOrdinate(2, index)\n\n    def setZ(self, index, value):\n        \"Set Z with the value at the given index.\"\n        self.setOrdinate(2, index, value)\n\n    ### Dimensions ###\n    @property\n    def size(self):\n        \"Returns the size of this coordinate sequence.\"\n        return capi.cs_getsize(self.ptr, byref(c_uint()))\n\n    @property\n    def dims(self):\n        \"Returns the dimensions of this coordinate sequence.\"\n        return capi.cs_getdims(self.ptr, byref(c_uint()))\n\n    @property\n    def hasz(self):\n        \"\"\"\n        Returns whether this coordinate sequence is 3D.  This property value is\n        inherited from the parent Geometry.\n        \"\"\"\n        return self._z\n\n    ### Other Methods ###\n    def clone(self):\n        \"Clones this coordinate sequence.\"\n        return GEOSCoordSeq(capi.cs_clone(self.ptr), self.hasz)\n\n    @property\n    def kml(self):\n        \"Returns the KML representation for the coordinates.\"\n        # Getting the substitution string depending on whether the coordinates have\n        #  a Z dimension.\n        if self.hasz: substr = '%s,%s,%s '\n        else: substr = '%s,%s,0 '\n        return '<coordinates>%s</coordinates>' % \\\n            ''.join([substr % self[i] for i in xrange(len(self))]).strip()\n\n    @property\n    def tuple(self):\n        \"Returns a tuple version of this coordinate sequence.\"\n        n = self.size\n        if n == 1: return self[0]\n        else: return tuple([self[i] for i in xrange(n)])\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/geos/error.py",
    "content": "\"\"\"\n This module houses the GEOS exceptions, specifically, GEOSException and\n GEOSGeometryIndexError.\n\"\"\"\n\nclass GEOSException(Exception):\n    \"The base GEOS exception, indicates a GEOS-related error.\"\n    pass\n\nclass GEOSIndexError(GEOSException, KeyError):\n    \"\"\"\n    This exception is raised when an invalid index is encountered, and has\n    the 'silent_variable_feature' attribute set to true.  This ensures that\n    django's templates proceed to use the next lookup type gracefully when\n    an Exception is raised.  Fixes ticket #4740.\n    \"\"\"\n    # \"If, during the method lookup, a method raises an exception, the exception\n    #  will be propagated, unless the exception has an attribute \n    #  `silent_variable_failure` whose value is True.\" -- Django template docs.\n    silent_variable_failure = True\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/geos/factory.py",
    "content": "from django.contrib.gis import memoryview\nfrom django.contrib.gis.geos.geometry import GEOSGeometry, wkt_regex, hex_regex\n\nfrom django.utils import six\n\n\ndef fromfile(file_h):\n    \"\"\"\n    Given a string file name, returns a GEOSGeometry. The file may contain WKB,\n    WKT, or HEX.\n    \"\"\"\n    # If given a file name, get a real handle.\n    if isinstance(file_h, six.string_types):\n        with open(file_h, 'rb') as file_h:\n            buf = file_h.read()\n    else:\n        buf = file_h.read()\n\n    # If we get WKB need to wrap in memoryview(), so run through regexes.\n    if isinstance(buf, bytes):\n        try:\n            decoded = buf.decode()\n            if wkt_regex.match(decoded) or hex_regex.match(decoded):\n                return GEOSGeometry(decoded)\n        except UnicodeDecodeError:\n            pass\n    else:\n        return GEOSGeometry(buf)\n\n    return GEOSGeometry(memoryview(buf))\n\n\ndef fromstr(string, **kwargs):\n    \"Given a string value, returns a GEOSGeometry object.\"\n    return GEOSGeometry(string, **kwargs)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/geos/geometry.py",
    "content": "\"\"\"\n This module contains the 'base' GEOSGeometry object -- all GEOS Geometries\n inherit from this object.\n\"\"\"\nfrom __future__ import unicode_literals\n\n# Python, ctypes and types dependencies.\nfrom ctypes import addressof, byref, c_double\n\nfrom django.contrib.gis import memoryview\n# super-class for mutable list behavior\nfrom django.contrib.gis.geos.mutable_list import ListMixin\n\n# GEOS-related dependencies.\nfrom django.contrib.gis.geos.base import GEOSBase, gdal\nfrom django.contrib.gis.geos.coordseq import GEOSCoordSeq\nfrom django.contrib.gis.geos.error import GEOSException, GEOSIndexError\nfrom django.contrib.gis.geos.libgeos import GEOM_PTR, GEOS_PREPARE\nfrom django.contrib.gis.geos.mutable_list import ListMixin\n\n# All other functions in this module come from the ctypes\n# prototypes module -- which handles all interaction with\n# the underlying GEOS library.\nfrom django.contrib.gis.geos import prototypes as capi\n\n# These functions provide access to a thread-local instance\n# of their corresponding GEOS I/O class.\nfrom django.contrib.gis.geos.prototypes.io import wkt_r, wkt_w, wkb_r, wkb_w, ewkb_w\n\n# For recognizing geometry input.\nfrom django.contrib.gis.geometry.regex import hex_regex, wkt_regex, json_regex\n\nfrom django.utils import six\nfrom django.utils.encoding import force_bytes, force_text\n\n\nclass GEOSGeometry(GEOSBase, ListMixin):\n    \"A class that, generally, encapsulates a GEOS geometry.\"\n\n    # Raise GEOSIndexError instead of plain IndexError\n    # (see ticket #4740 and GEOSIndexError docstring)\n    _IndexError = GEOSIndexError\n\n    ptr_type = GEOM_PTR\n\n    #### Python 'magic' routines ####\n    def __init__(self, geo_input, srid=None):\n        \"\"\"\n        The base constructor for GEOS geometry objects, and may take the\n        following inputs:\n\n         * strings:\n            - WKT\n            - HEXEWKB (a PostGIS-specific canonical form)\n            - GeoJSON (requires GDAL)\n         * buffer:\n            - WKB\n\n        The `srid` keyword is used to specify the Source Reference Identifier\n        (SRID) number for this Geometry.  If not set, the SRID will be None.\n        \"\"\"\n        if isinstance(geo_input, bytes):\n            geo_input = force_text(geo_input)\n        if isinstance(geo_input, six.string_types):\n            wkt_m = wkt_regex.match(geo_input)\n            if wkt_m:\n                # Handling WKT input.\n                if wkt_m.group('srid'): srid = int(wkt_m.group('srid'))\n                g = wkt_r().read(force_bytes(wkt_m.group('wkt')))\n            elif hex_regex.match(geo_input):\n                # Handling HEXEWKB input.\n                g = wkb_r().read(force_bytes(geo_input))\n            elif gdal.HAS_GDAL and json_regex.match(geo_input):\n                # Handling GeoJSON input.\n                g = wkb_r().read(gdal.OGRGeometry(geo_input).wkb)\n            else:\n                raise ValueError('String or unicode input unrecognized as WKT EWKT, and HEXEWKB.')\n        elif isinstance(geo_input, GEOM_PTR):\n            # When the input is a pointer to a geomtry (GEOM_PTR).\n            g = geo_input\n        elif isinstance(geo_input, memoryview):\n            # When the input is a buffer (WKB).\n            g = wkb_r().read(geo_input)\n        elif isinstance(geo_input, GEOSGeometry):\n            g = capi.geom_clone(geo_input.ptr)\n        else:\n            # Invalid geometry type.\n            raise TypeError('Improper geometry input type: %s' % str(type(geo_input)))\n\n        if bool(g):\n            # Setting the pointer object with a valid pointer.\n            self.ptr = g\n        else:\n            raise GEOSException('Could not initialize GEOS Geometry with given input.')\n\n        # Post-initialization setup.\n        self._post_init(srid)\n\n    def _post_init(self, srid):\n        \"Helper routine for performing post-initialization setup.\"\n        # Setting the SRID, if given.\n        if srid and isinstance(srid, int): self.srid = srid\n\n        # Setting the class type (e.g., Point, Polygon, etc.)\n        self.__class__ = GEOS_CLASSES[self.geom_typeid]\n\n        # Setting the coordinate sequence for the geometry (will be None on\n        # geometries that do not have coordinate sequences)\n        self._set_cs()\n\n    def __del__(self):\n        \"\"\"\n        Destroys this Geometry; in other words, frees the memory used by the\n        GEOS C++ object.\n        \"\"\"\n        if self._ptr: capi.destroy_geom(self._ptr)\n\n    def __copy__(self):\n        \"\"\"\n        Returns a clone because the copy of a GEOSGeometry may contain an\n        invalid pointer location if the original is garbage collected.\n        \"\"\"\n        return self.clone()\n\n    def __deepcopy__(self, memodict):\n        \"\"\"\n        The `deepcopy` routine is used by the `Node` class of django.utils.tree;\n        thus, the protocol routine needs to be implemented to return correct\n        copies (clones) of these GEOS objects, which use C pointers.\n        \"\"\"\n        return self.clone()\n\n    def __str__(self):\n        \"WKT is used for the string representation.\"\n        return self.wkt\n\n    def __repr__(self):\n        \"Short-hand representation because WKT may be very large.\"\n        return '<%s object at %s>' % (self.geom_type, hex(addressof(self.ptr)))\n\n    # Pickling support\n    def __getstate__(self):\n        # The pickled state is simply a tuple of the WKB (in string form)\n        # and the SRID.\n        return bytes(self.wkb), self.srid\n\n    def __setstate__(self, state):\n        # Instantiating from the tuple state that was pickled.\n        wkb, srid = state\n        ptr = wkb_r().read(memoryview(wkb))\n        if not ptr: raise GEOSException('Invalid Geometry loaded from pickled state.')\n        self.ptr = ptr\n        self._post_init(srid)\n\n    # Comparison operators\n    def __eq__(self, other):\n        \"\"\"\n        Equivalence testing, a Geometry may be compared with another Geometry\n        or a WKT representation.\n        \"\"\"\n        if isinstance(other, six.string_types):\n            return self.wkt == other\n        elif isinstance(other, GEOSGeometry):\n            return self.equals_exact(other)\n        else:\n            return False\n\n    def __ne__(self, other):\n        \"The not equals operator.\"\n        return not (self == other)\n\n    ### Geometry set-like operations ###\n    # Thanks to Sean Gillies for inspiration:\n    #  http://lists.gispython.org/pipermail/community/2007-July/001034.html\n    # g = g1 | g2\n    def __or__(self, other):\n        \"Returns the union of this Geometry and the other.\"\n        return self.union(other)\n\n    # g = g1 & g2\n    def __and__(self, other):\n        \"Returns the intersection of this Geometry and the other.\"\n        return self.intersection(other)\n\n    # g = g1 - g2\n    def __sub__(self, other):\n        \"Return the difference this Geometry and the other.\"\n        return self.difference(other)\n\n    # g = g1 ^ g2\n    def __xor__(self, other):\n        \"Return the symmetric difference of this Geometry and the other.\"\n        return self.sym_difference(other)\n\n    #### Coordinate Sequence Routines ####\n    @property\n    def has_cs(self):\n        \"Returns True if this Geometry has a coordinate sequence, False if not.\"\n        # Only these geometries are allowed to have coordinate sequences.\n        if isinstance(self, (Point, LineString, LinearRing)):\n            return True\n        else:\n            return False\n\n    def _set_cs(self):\n        \"Sets the coordinate sequence for this Geometry.\"\n        if self.has_cs:\n            self._cs = GEOSCoordSeq(capi.get_cs(self.ptr), self.hasz)\n        else:\n            self._cs = None\n\n    @property\n    def coord_seq(self):\n        \"Returns a clone of the coordinate sequence for this Geometry.\"\n        if self.has_cs:\n            return self._cs.clone()\n\n    #### Geometry Info ####\n    @property\n    def geom_type(self):\n        \"Returns a string representing the Geometry type, e.g. 'Polygon'\"\n        return capi.geos_type(self.ptr).decode()\n\n    @property\n    def geom_typeid(self):\n        \"Returns an integer representing the Geometry type.\"\n        return capi.geos_typeid(self.ptr)\n\n    @property\n    def num_geom(self):\n        \"Returns the number of geometries in the Geometry.\"\n        return capi.get_num_geoms(self.ptr)\n\n    @property\n    def num_coords(self):\n        \"Returns the number of coordinates in the Geometry.\"\n        return capi.get_num_coords(self.ptr)\n\n    @property\n    def num_points(self):\n        \"Returns the number points, or coordinates, in the Geometry.\"\n        return self.num_coords\n\n    @property\n    def dims(self):\n        \"Returns the dimension of this Geometry (0=point, 1=line, 2=surface).\"\n        return capi.get_dims(self.ptr)\n\n    def normalize(self):\n        \"Converts this Geometry to normal form (or canonical form).\"\n        return capi.geos_normalize(self.ptr)\n\n    #### Unary predicates ####\n    @property\n    def empty(self):\n        \"\"\"\n        Returns a boolean indicating whether the set of points in this Geometry\n        are empty.\n        \"\"\"\n        return capi.geos_isempty(self.ptr)\n\n    @property\n    def hasz(self):\n        \"Returns whether the geometry has a 3D dimension.\"\n        return capi.geos_hasz(self.ptr)\n\n    @property\n    def ring(self):\n        \"Returns whether or not the geometry is a ring.\"\n        return capi.geos_isring(self.ptr)\n\n    @property\n    def simple(self):\n        \"Returns false if the Geometry not simple.\"\n        return capi.geos_issimple(self.ptr)\n\n    @property\n    def valid(self):\n        \"This property tests the validity of this Geometry.\"\n        return capi.geos_isvalid(self.ptr)\n\n    @property\n    def valid_reason(self):\n        \"\"\"\n        Returns a string containing the reason for any invalidity.\n        \"\"\"\n        if not GEOS_PREPARE:\n            raise GEOSException('Upgrade GEOS to 3.1 to get validity reason.')\n        return capi.geos_isvalidreason(self.ptr).decode()\n\n    #### Binary predicates. ####\n    def contains(self, other):\n        \"Returns true if other.within(this) returns true.\"\n        return capi.geos_contains(self.ptr, other.ptr)\n\n    def crosses(self, other):\n        \"\"\"\n        Returns true if the DE-9IM intersection matrix for the two Geometries\n        is T*T****** (for a point and a curve,a point and an area or a line and\n        an area) 0******** (for two curves).\n        \"\"\"\n        return capi.geos_crosses(self.ptr, other.ptr)\n\n    def disjoint(self, other):\n        \"\"\"\n        Returns true if the DE-9IM intersection matrix for the two Geometries\n        is FF*FF****.\n        \"\"\"\n        return capi.geos_disjoint(self.ptr, other.ptr)\n\n    def equals(self, other):\n        \"\"\"\n        Returns true if the DE-9IM intersection matrix for the two Geometries\n        is T*F**FFF*.\n        \"\"\"\n        return capi.geos_equals(self.ptr, other.ptr)\n\n    def equals_exact(self, other, tolerance=0):\n        \"\"\"\n        Returns true if the two Geometries are exactly equal, up to a\n        specified tolerance.\n        \"\"\"\n        return capi.geos_equalsexact(self.ptr, other.ptr, float(tolerance))\n\n    def intersects(self, other):\n        \"Returns true if disjoint returns false.\"\n        return capi.geos_intersects(self.ptr, other.ptr)\n\n    def overlaps(self, other):\n        \"\"\"\n        Returns true if the DE-9IM intersection matrix for the two Geometries\n        is T*T***T** (for two points or two surfaces) 1*T***T** (for two curves).\n        \"\"\"\n        return capi.geos_overlaps(self.ptr, other.ptr)\n\n    def relate_pattern(self, other, pattern):\n        \"\"\"\n        Returns true if the elements in the DE-9IM intersection matrix for the\n        two Geometries match the elements in pattern.\n        \"\"\"\n        if not isinstance(pattern, six.string_types) or len(pattern) > 9:\n            raise GEOSException('invalid intersection matrix pattern')\n        return capi.geos_relatepattern(self.ptr, other.ptr, force_bytes(pattern))\n\n    def touches(self, other):\n        \"\"\"\n        Returns true if the DE-9IM intersection matrix for the two Geometries\n        is FT*******, F**T***** or F***T****.\n        \"\"\"\n        return capi.geos_touches(self.ptr, other.ptr)\n\n    def within(self, other):\n        \"\"\"\n        Returns true if the DE-9IM intersection matrix for the two Geometries\n        is T*F**F***.\n        \"\"\"\n        return capi.geos_within(self.ptr, other.ptr)\n\n    #### SRID Routines ####\n    def get_srid(self):\n        \"Gets the SRID for the geometry, returns None if no SRID is set.\"\n        s = capi.geos_get_srid(self.ptr)\n        if s == 0: return None\n        else: return s\n\n    def set_srid(self, srid):\n        \"Sets the SRID for the geometry.\"\n        capi.geos_set_srid(self.ptr, srid)\n    srid = property(get_srid, set_srid)\n\n    #### Output Routines ####\n    @property\n    def ewkt(self):\n        \"\"\"\n        Returns the EWKT (WKT + SRID) of the Geometry.  Note that Z values\n        are *not* included in this representation because GEOS does not yet\n        support serializing them.\n        \"\"\"\n        if self.get_srid(): return 'SRID=%s;%s' % (self.srid, self.wkt)\n        else: return self.wkt\n\n    @property\n    def wkt(self):\n        \"Returns the WKT (Well-Known Text) representation of this Geometry.\"\n        return wkt_w().write(self).decode()\n\n    @property\n    def hex(self):\n        \"\"\"\n        Returns the WKB of this Geometry in hexadecimal form.  Please note\n        that the SRID is not included in this representation because it is not\n        a part of the OGC specification (use the `hexewkb` property instead).\n        \"\"\"\n        # A possible faster, all-python, implementation:\n        #  str(self.wkb).encode('hex')\n        return wkb_w(self.hasz and 3 or 2).write_hex(self)\n\n    @property\n    def hexewkb(self):\n        \"\"\"\n        Returns the EWKB of this Geometry in hexadecimal form.  This is an\n        extension of the WKB specification that includes SRID value that are\n        a part of this geometry.\n        \"\"\"\n        if self.hasz and not GEOS_PREPARE:\n            # See: http://trac.osgeo.org/geos/ticket/216\n            raise GEOSException('Upgrade GEOS to 3.1 to get valid 3D HEXEWKB.')\n        return ewkb_w(self.hasz and 3 or 2).write_hex(self)\n\n    @property\n    def json(self):\n        \"\"\"\n        Returns GeoJSON representation of this Geometry if GDAL is installed.\n        \"\"\"\n        if gdal.HAS_GDAL:\n            return self.ogr.json\n        else:\n            raise GEOSException('GeoJSON output only supported when GDAL is installed.')\n    geojson = json\n\n    @property\n    def wkb(self):\n        \"\"\"\n        Returns the WKB (Well-Known Binary) representation of this Geometry\n        as a Python buffer.  SRID and Z values are not included, use the\n        `ewkb` property instead.\n        \"\"\"\n        return wkb_w(self.hasz and 3 or 2).write(self)\n\n    @property\n    def ewkb(self):\n        \"\"\"\n        Return the EWKB representation of this Geometry as a Python buffer.\n        This is an extension of the WKB specification that includes any SRID\n        value that are a part of this geometry.\n        \"\"\"\n        if self.hasz and not GEOS_PREPARE:\n            # See: http://trac.osgeo.org/geos/ticket/216\n            raise GEOSException('Upgrade GEOS to 3.1 to get valid 3D EWKB.')\n        return ewkb_w(self.hasz and 3 or 2).write(self)\n\n    @property\n    def kml(self):\n        \"Returns the KML representation of this Geometry.\"\n        gtype = self.geom_type\n        return '<%s>%s</%s>' % (gtype, self.coord_seq.kml, gtype)\n\n    @property\n    def prepared(self):\n        \"\"\"\n        Returns a PreparedGeometry corresponding to this geometry -- it is\n        optimized for the contains, intersects, and covers operations.\n        \"\"\"\n        if GEOS_PREPARE:\n            return PreparedGeometry(self)\n        else:\n            raise GEOSException('GEOS 3.1+ required for prepared geometry support.')\n\n    #### GDAL-specific output routines ####\n    @property\n    def ogr(self):\n        \"Returns the OGR Geometry for this Geometry.\"\n        if gdal.HAS_GDAL:\n            if self.srid:\n                return gdal.OGRGeometry(self.wkb, self.srid)\n            else:\n                return gdal.OGRGeometry(self.wkb)\n        else:\n            raise GEOSException('GDAL required to convert to an OGRGeometry.')\n\n    @property\n    def srs(self):\n        \"Returns the OSR SpatialReference for SRID of this Geometry.\"\n        if gdal.HAS_GDAL:\n            if self.srid:\n                return gdal.SpatialReference(self.srid)\n            else:\n                return None\n        else:\n            raise GEOSException('GDAL required to return a SpatialReference object.')\n\n    @property\n    def crs(self):\n        \"Alias for `srs` property.\"\n        return self.srs\n\n    def transform(self, ct, clone=False):\n        \"\"\"\n        Requires GDAL. Transforms the geometry according to the given\n        transformation object, which may be an integer SRID, and WKT or\n        PROJ.4 string. By default, the geometry is transformed in-place and\n        nothing is returned. However if the `clone` keyword is set, then this\n        geometry will not be modified and a transformed clone will be returned\n        instead.\n        \"\"\"\n        srid = self.srid\n\n        if ct == srid:\n            # short-circuit where source & dest SRIDs match\n            if clone:\n                return self.clone()\n            else:\n                return\n\n        if (srid is None) or (srid < 0):\n            raise GEOSException(\"Calling transform() with no SRID set is not supported\")\n\n        if not gdal.HAS_GDAL:\n            raise GEOSException(\"GDAL library is not available to transform() geometry.\")\n\n        # Creating an OGR Geometry, which is then transformed.\n        g = self.ogr\n        g.transform(ct)\n        # Getting a new GEOS pointer\n        ptr = wkb_r().read(g.wkb)\n        if clone:\n            # User wants a cloned transformed geometry returned.\n            return GEOSGeometry(ptr, srid=g.srid)\n        if ptr:\n            # Reassigning pointer, and performing post-initialization setup\n            # again due to the reassignment.\n            capi.destroy_geom(self.ptr)\n            self.ptr = ptr\n            self._post_init(g.srid)\n        else:\n            raise GEOSException('Transformed WKB was invalid.')\n\n    #### Topology Routines ####\n    def _topology(self, gptr):\n        \"Helper routine to return Geometry from the given pointer.\"\n        return GEOSGeometry(gptr, srid=self.srid)\n\n    @property\n    def boundary(self):\n        \"Returns the boundary as a newly allocated Geometry object.\"\n        return self._topology(capi.geos_boundary(self.ptr))\n\n    def buffer(self, width, quadsegs=8):\n        \"\"\"\n        Returns a geometry that represents all points whose distance from this\n        Geometry is less than or equal to distance. Calculations are in the\n        Spatial Reference System of this Geometry. The optional third parameter sets\n        the number of segment used to approximate a quarter circle (defaults to 8).\n        (Text from PostGIS documentation at ch. 6.1.3)\n        \"\"\"\n        return self._topology(capi.geos_buffer(self.ptr, width, quadsegs))\n\n    @property\n    def centroid(self):\n        \"\"\"\n        The centroid is equal to the centroid of the set of component Geometries\n        of highest dimension (since the lower-dimension geometries contribute zero\n        \"weight\" to the centroid).\n        \"\"\"\n        return self._topology(capi.geos_centroid(self.ptr))\n\n    @property\n    def convex_hull(self):\n        \"\"\"\n        Returns the smallest convex Polygon that contains all the points\n        in the Geometry.\n        \"\"\"\n        return self._topology(capi.geos_convexhull(self.ptr))\n\n    def difference(self, other):\n        \"\"\"\n        Returns a Geometry representing the points making up this Geometry\n        that do not make up other.\n        \"\"\"\n        return self._topology(capi.geos_difference(self.ptr, other.ptr))\n\n    @property\n    def envelope(self):\n        \"Return the envelope for this geometry (a polygon).\"\n        return self._topology(capi.geos_envelope(self.ptr))\n\n    def interpolate(self, distance):\n        if not isinstance(self, (LineString, MultiLineString)):\n            raise TypeError('interpolate only works on LineString and MultiLineString geometries')\n        if not hasattr(capi, 'geos_interpolate'):\n            raise NotImplementedError('interpolate requires GEOS 3.2+')\n        return self._topology(capi.geos_interpolate(self.ptr, distance))\n\n    def interpolate_normalized(self, distance):\n        if not isinstance(self, (LineString, MultiLineString)):\n            raise TypeError('interpolate only works on LineString and MultiLineString geometries')\n        if not hasattr(capi, 'geos_interpolate_normalized'):\n            raise NotImplementedError('interpolate_normalized requires GEOS 3.2+')\n        return self._topology(capi.geos_interpolate_normalized(self.ptr, distance))\n\n    def intersection(self, other):\n        \"Returns a Geometry representing the points shared by this Geometry and other.\"\n        return self._topology(capi.geos_intersection(self.ptr, other.ptr))\n\n    @property\n    def point_on_surface(self):\n        \"Computes an interior point of this Geometry.\"\n        return self._topology(capi.geos_pointonsurface(self.ptr))\n\n    def project(self, point):\n        if not isinstance(point, Point):\n            raise TypeError('locate_point argument must be a Point')\n        if not isinstance(self, (LineString, MultiLineString)):\n            raise TypeError('locate_point only works on LineString and MultiLineString geometries')\n        if not hasattr(capi, 'geos_project'):\n            raise NotImplementedError('geos_project requires GEOS 3.2+')\n        return capi.geos_project(self.ptr, point.ptr)\n\n    def project_normalized(self, point):\n        if not isinstance(point, Point):\n            raise TypeError('locate_point argument must be a Point')\n        if not isinstance(self, (LineString, MultiLineString)):\n            raise TypeError('locate_point only works on LineString and MultiLineString geometries')\n        if not hasattr(capi, 'geos_project_normalized'):\n            raise NotImplementedError('project_normalized requires GEOS 3.2+')\n        return capi.geos_project_normalized(self.ptr, point.ptr)\n\n    def relate(self, other):\n        \"Returns the DE-9IM intersection matrix for this Geometry and the other.\"\n        return capi.geos_relate(self.ptr, other.ptr).decode()\n\n    def simplify(self, tolerance=0.0, preserve_topology=False):\n        \"\"\"\n        Returns the Geometry, simplified using the Douglas-Peucker algorithm\n        to the specified tolerance (higher tolerance => less points).  If no\n        tolerance provided, defaults to 0.\n\n        By default, this function does not preserve topology - e.g. polygons can\n        be split, collapse to lines or disappear holes can be created or\n        disappear, and lines can cross. By specifying preserve_topology=True,\n        the result will have the same dimension and number of components as the\n        input. This is significantly slower.\n        \"\"\"\n        if preserve_topology:\n            return self._topology(capi.geos_preservesimplify(self.ptr, tolerance))\n        else:\n            return self._topology(capi.geos_simplify(self.ptr, tolerance))\n\n    def sym_difference(self, other):\n        \"\"\"\n        Returns a set combining the points in this Geometry not in other,\n        and the points in other not in this Geometry.\n        \"\"\"\n        return self._topology(capi.geos_symdifference(self.ptr, other.ptr))\n\n    def union(self, other):\n        \"Returns a Geometry representing all the points in this Geometry and other.\"\n        return self._topology(capi.geos_union(self.ptr, other.ptr))\n\n    #### Other Routines ####\n    @property\n    def area(self):\n        \"Returns the area of the Geometry.\"\n        return capi.geos_area(self.ptr, byref(c_double()))\n\n    def distance(self, other):\n        \"\"\"\n        Returns the distance between the closest points on this Geometry\n        and the other. Units will be in those of the coordinate system of\n        the Geometry.\n        \"\"\"\n        if not isinstance(other, GEOSGeometry):\n            raise TypeError('distance() works only on other GEOS Geometries.')\n        return capi.geos_distance(self.ptr, other.ptr, byref(c_double()))\n\n    @property\n    def extent(self):\n        \"\"\"\n        Returns the extent of this geometry as a 4-tuple, consisting of\n        (xmin, ymin, xmax, ymax).\n        \"\"\"\n        env = self.envelope\n        if isinstance(env, Point):\n            xmin, ymin = env.tuple\n            xmax, ymax = xmin, ymin\n        else:\n            xmin, ymin = env[0][0]\n            xmax, ymax = env[0][2]\n        return (xmin, ymin, xmax, ymax)\n\n    @property\n    def length(self):\n        \"\"\"\n        Returns the length of this Geometry (e.g., 0 for point, or the\n        circumfrence of a Polygon).\n        \"\"\"\n        return capi.geos_length(self.ptr, byref(c_double()))\n\n    def clone(self):\n        \"Clones this Geometry.\"\n        return GEOSGeometry(capi.geom_clone(self.ptr), srid=self.srid)\n\n# Class mapping dictionary.  Has to be at the end to avoid import\n# conflicts with GEOSGeometry.\nfrom django.contrib.gis.geos.linestring import LineString, LinearRing\nfrom django.contrib.gis.geos.point import Point\nfrom django.contrib.gis.geos.polygon import Polygon\nfrom django.contrib.gis.geos.collections import GeometryCollection, MultiPoint, MultiLineString, MultiPolygon\nGEOS_CLASSES = {0 : Point,\n                1 : LineString,\n                2 : LinearRing,\n                3 : Polygon,\n                4 : MultiPoint,\n                5 : MultiLineString,\n                6 : MultiPolygon,\n                7 : GeometryCollection,\n                }\n\n# If supported, import the PreparedGeometry class.\nif GEOS_PREPARE:\n    from django.contrib.gis.geos.prepared import PreparedGeometry\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/geos/io.py",
    "content": "\"\"\"\nModule that holds classes for performing I/O operations on GEOS geometry\nobjects.  Specifically, this has Python implementations of WKB/WKT\nreader and writer classes.\n\"\"\"\nfrom django.contrib.gis.geos.geometry import GEOSGeometry\nfrom django.contrib.gis.geos.prototypes.io import _WKTReader, _WKBReader, WKBWriter, WKTWriter\n\n# Public classes for (WKB|WKT)Reader, which return GEOSGeometry\nclass WKBReader(_WKBReader):\n    def read(self, wkb):\n        \"Returns a GEOSGeometry for the given WKB buffer.\"\n        return GEOSGeometry(super(WKBReader, self).read(wkb))\n\nclass WKTReader(_WKTReader):\n    def read(self, wkt):\n        \"Returns a GEOSGeometry for the given WKT string.\"\n        return GEOSGeometry(super(WKTReader, self).read(wkt))\n\n\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/geos/libgeos.py",
    "content": "\"\"\"\n This module houses the ctypes initialization procedures, as well\n as the notice and error handler function callbacks (get called\n when an error occurs in GEOS).\n\n This module also houses GEOS Pointer utilities, including\n get_pointer_arr(), and GEOM_PTR.\n\"\"\"\nimport logging\nimport os\nimport re\nfrom ctypes import c_char_p, Structure, CDLL, CFUNCTYPE, POINTER\nfrom ctypes.util import find_library\n\nfrom django.contrib.gis.geos.error import GEOSException\nfrom django.core.exceptions import ImproperlyConfigured\n\nlogger = logging.getLogger('django.contrib.gis')\n\n# Custom library path set?\ntry:\n    from django.conf import settings\n    lib_path = settings.GEOS_LIBRARY_PATH\nexcept (AttributeError, EnvironmentError,\n        ImportError, ImproperlyConfigured):\n    lib_path = None\n\n# Setting the appropriate names for the GEOS-C library.\nif lib_path:\n    lib_names = None\nelif os.name == 'nt':\n    # Windows NT libraries\n    lib_names = ['geos_c', 'libgeos_c-1']\nelif os.name == 'posix':\n    # *NIX libraries\n    lib_names = ['geos_c', 'GEOS']\nelse:\n    raise ImportError('Unsupported OS \"%s\"' % os.name)\n\n# Using the ctypes `find_library` utility to find the path to the GEOS\n# shared library.  This is better than manually specifiying each library name\n# and extension (e.g., libgeos_c.[so|so.1|dylib].).\nif lib_names:\n    for lib_name in lib_names:\n        lib_path = find_library(lib_name)\n        if not lib_path is None: break\n\n# No GEOS library could be found.\nif lib_path is None:\n    raise ImportError('Could not find the GEOS library (tried \"%s\"). '\n                        'Try setting GEOS_LIBRARY_PATH in your settings.' %\n                        '\", \"'.join(lib_names))\n\n# Getting the GEOS C library.  The C interface (CDLL) is used for\n# both *NIX and Windows.\n# See the GEOS C API source code for more details on the library function calls:\n#  http://geos.refractions.net/ro/doxygen_docs/html/geos__c_8h-source.html\nlgeos = CDLL(lib_path)\n\n# The notice and error handler C function callback definitions.\n# Supposed to mimic the GEOS message handler (C below):\n#  typedef void (*GEOSMessageHandler)(const char *fmt, ...);\nNOTICEFUNC = CFUNCTYPE(None, c_char_p, c_char_p)\ndef notice_h(fmt, lst):\n    fmt, lst = fmt.decode(), lst.decode()\n    try:\n        warn_msg = fmt % lst\n    except:\n        warn_msg = fmt\n    logger.warn('GEOS_NOTICE: %s\\n' % warn_msg)\nnotice_h = NOTICEFUNC(notice_h)\n\nERRORFUNC = CFUNCTYPE(None, c_char_p, c_char_p)\ndef error_h(fmt, lst):\n    fmt, lst = fmt.decode(), lst.decode()\n    try:\n        err_msg = fmt % lst\n    except:\n        err_msg = fmt\n    logger.error('GEOS_ERROR: %s\\n' % err_msg)\nerror_h = ERRORFUNC(error_h)\n\n#### GEOS Geometry C data structures, and utility functions. ####\n\n# Opaque GEOS geometry structures, used for GEOM_PTR and CS_PTR\nclass GEOSGeom_t(Structure): pass\nclass GEOSPrepGeom_t(Structure): pass\nclass GEOSCoordSeq_t(Structure): pass\nclass GEOSContextHandle_t(Structure): pass\n\n# Pointers to opaque GEOS geometry structures.\nGEOM_PTR = POINTER(GEOSGeom_t)\nPREPGEOM_PTR = POINTER(GEOSPrepGeom_t)\nCS_PTR = POINTER(GEOSCoordSeq_t)\nCONTEXT_PTR  = POINTER(GEOSContextHandle_t)\n\n# Used specifically by the GEOSGeom_createPolygon and GEOSGeom_createCollection\n#  GEOS routines\ndef get_pointer_arr(n):\n    \"Gets a ctypes pointer array (of length `n`) for GEOSGeom_t opaque pointer.\"\n    GeomArr = GEOM_PTR * n\n    return GeomArr()\n\n# Returns the string version of the GEOS library. Have to set the restype\n# explicitly to c_char_p to ensure compatibility accross 32 and 64-bit platforms.\ngeos_version = lgeos.GEOSversion\ngeos_version.argtypes = None\ngeos_version.restype = c_char_p\n\n# Regular expression should be able to parse version strings such as\n# '3.0.0rc4-CAPI-1.3.3', '3.0.0-CAPI-1.4.1', '3.4.0dev-CAPI-1.8.0' or '3.4.0dev-CAPI-1.8.0 r0'\nversion_regex = re.compile(\n    r'^(?P<version>(?P<major>\\d+)\\.(?P<minor>\\d+)\\.(?P<subminor>\\d+))'\n    r'((rc(?P<release_candidate>\\d+))|dev)?-CAPI-(?P<capi_version>\\d+\\.\\d+\\.\\d+)( r\\d+)?$'\n)\ndef geos_version_info():\n    \"\"\"\n    Returns a dictionary containing the various version metadata parsed from\n    the GEOS version string, including the version number, whether the version\n    is a release candidate (and what number release candidate), and the C API\n    version.\n    \"\"\"\n    ver = geos_version().decode()\n    m = version_regex.match(ver)\n    if not m:\n        raise GEOSException('Could not parse version info string \"%s\"' % ver)\n    return dict((key, m.group(key)) for key in (\n        'version', 'release_candidate', 'capi_version', 'major', 'minor', 'subminor'))\n\n# Version numbers and whether or not prepared geometry support is available.\n_verinfo = geos_version_info()\nGEOS_MAJOR_VERSION = int(_verinfo['major'])\nGEOS_MINOR_VERSION = int(_verinfo['minor'])\nGEOS_SUBMINOR_VERSION = int(_verinfo['subminor'])\ndel _verinfo\nGEOS_VERSION = (GEOS_MAJOR_VERSION, GEOS_MINOR_VERSION, GEOS_SUBMINOR_VERSION)\nGEOS_PREPARE = GEOS_VERSION >= (3, 1, 0)\n\nif GEOS_PREPARE:\n    # Here we set up the prototypes for the initGEOS_r and finishGEOS_r\n    # routines.  These functions aren't actually called until they are\n    # attached to a GEOS context handle -- this actually occurs in\n    # geos/prototypes/threadsafe.py.\n    lgeos.initGEOS_r.restype = CONTEXT_PTR\n    lgeos.finishGEOS_r.argtypes = [CONTEXT_PTR]\nelse:\n    # When thread-safety isn't available, the initGEOS routine must be called\n    # first.  This function takes the notice and error functions, defined\n    # as Python callbacks above, as parameters. Here is the C code that is\n    # wrapped:\n    #  extern void GEOS_DLL initGEOS(GEOSMessageHandler notice_function, GEOSMessageHandler error_function);\n    lgeos.initGEOS(notice_h, error_h)\n    # Calling finishGEOS() upon exit of the interpreter.\n    import atexit\n    atexit.register(lgeos.finishGEOS)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/geos/linestring.py",
    "content": "from django.contrib.gis.geos.base import numpy\nfrom django.contrib.gis.geos.coordseq import GEOSCoordSeq\nfrom django.contrib.gis.geos.error import GEOSException\nfrom django.contrib.gis.geos.geometry import GEOSGeometry\nfrom django.contrib.gis.geos.point import Point\nfrom django.contrib.gis.geos import prototypes as capi\nfrom django.utils.six.moves import xrange\n\nclass LineString(GEOSGeometry):\n    _init_func = capi.create_linestring\n    _minlength = 2\n\n    #### Python 'magic' routines ####\n    def __init__(self, *args, **kwargs):\n        \"\"\"\n        Initializes on the given sequence -- may take lists, tuples, NumPy arrays\n        of X,Y pairs, or Point objects.  If Point objects are used, ownership is\n        _not_ transferred to the LineString object.\n\n        Examples:\n         ls = LineString((1, 1), (2, 2))\n         ls = LineString([(1, 1), (2, 2)])\n         ls = LineString(array([(1, 1), (2, 2)]))\n         ls = LineString(Point(1, 1), Point(2, 2))\n        \"\"\"\n        # If only one argument provided, set the coords array appropriately\n        if len(args) == 1: coords = args[0]\n        else: coords = args\n\n        if isinstance(coords, (tuple, list)):\n            # Getting the number of coords and the number of dimensions -- which\n            #  must stay the same, e.g., no LineString((1, 2), (1, 2, 3)).\n            ncoords = len(coords)\n            if coords: ndim = len(coords[0])\n            else: raise TypeError('Cannot initialize on empty sequence.')\n            self._checkdim(ndim)\n            # Incrementing through each of the coordinates and verifying\n            for i in xrange(1, ncoords):\n                if not isinstance(coords[i], (tuple, list, Point)):\n                    raise TypeError('each coordinate should be a sequence (list or tuple)')\n                if len(coords[i]) != ndim: raise TypeError('Dimension mismatch.')\n            numpy_coords = False\n        elif numpy and isinstance(coords, numpy.ndarray):\n            shape = coords.shape # Using numpy's shape.\n            if len(shape) != 2: raise TypeError('Too many dimensions.')\n            self._checkdim(shape[1])\n            ncoords = shape[0]\n            ndim = shape[1]\n            numpy_coords = True\n        else:\n            raise TypeError('Invalid initialization input for LineStrings.')\n\n        # Creating a coordinate sequence object because it is easier to\n        # set the points using GEOSCoordSeq.__setitem__().\n        cs = GEOSCoordSeq(capi.create_cs(ncoords, ndim), z=bool(ndim==3))\n\n        for i in xrange(ncoords):\n            if numpy_coords: cs[i] = coords[i,:]\n            elif isinstance(coords[i], Point): cs[i] = coords[i].tuple\n            else: cs[i] = coords[i]\n\n        # If SRID was passed in with the keyword arguments\n        srid = kwargs.get('srid', None)\n\n        # Calling the base geometry initialization with the returned pointer\n        #  from the function.\n        super(LineString, self).__init__(self._init_func(cs.ptr), srid=srid)\n\n    def __iter__(self):\n        \"Allows iteration over this LineString.\"\n        for i in xrange(len(self)):\n            yield self[i]\n\n    def __len__(self):\n        \"Returns the number of points in this LineString.\"\n        return len(self._cs)\n\n    def _get_single_external(self, index):\n        return self._cs[index]\n\n    _get_single_internal = _get_single_external\n\n    def _set_list(self, length, items):\n        ndim = self._cs.dims #\n        hasz = self._cs.hasz # I don't understand why these are different\n\n        # create a new coordinate sequence and populate accordingly\n        cs = GEOSCoordSeq(capi.create_cs(length, ndim), z=hasz)\n        for i, c in enumerate(items):\n            cs[i] = c\n\n        ptr = self._init_func(cs.ptr)\n        if ptr:\n            capi.destroy_geom(self.ptr)\n            self.ptr = ptr\n            self._post_init(self.srid)\n        else:\n            # can this happen?\n            raise GEOSException('Geometry resulting from slice deletion was invalid.')\n\n    def _set_single(self, index, value):\n        self._checkindex(index)\n        self._cs[index] = value\n\n    def _checkdim(self, dim):\n        if dim not in (2, 3): raise TypeError('Dimension mismatch.')\n\n    #### Sequence Properties ####\n    @property\n    def tuple(self):\n        \"Returns a tuple version of the geometry from the coordinate sequence.\"\n        return self._cs.tuple\n    coords = tuple\n\n    def _listarr(self, func):\n        \"\"\"\n        Internal routine that returns a sequence (list) corresponding with\n        the given function.  Will return a numpy array if possible.\n        \"\"\"\n        lst = [func(i) for i in xrange(len(self))]\n        if numpy: return numpy.array(lst) # ARRRR!\n        else: return lst\n\n    @property\n    def array(self):\n        \"Returns a numpy array for the LineString.\"\n        return self._listarr(self._cs.__getitem__)\n\n    @property\n    def merged(self):\n        \"Returns the line merge of this LineString.\"\n        return self._topology(capi.geos_linemerge(self.ptr))\n\n    @property\n    def x(self):\n        \"Returns a list or numpy array of the X variable.\"\n        return self._listarr(self._cs.getX)\n\n    @property\n    def y(self):\n        \"Returns a list or numpy array of the Y variable.\"\n        return self._listarr(self._cs.getY)\n\n    @property\n    def z(self):\n        \"Returns a list or numpy array of the Z variable.\"\n        if not self.hasz: return None\n        else: return self._listarr(self._cs.getZ)\n\n# LinearRings are LineStrings used within Polygons.\nclass LinearRing(LineString):\n    _minLength = 4\n    _init_func = capi.create_linearring\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/geos/mutable_list.py",
    "content": "# Copyright (c) 2008-2009 Aryeh Leib Taurog, all rights reserved.\n# Released under the New BSD license.\n\"\"\"\nThis module contains a base type which provides list-style mutations\nwithout specific data storage methods.\n\nSee also http://www.aryehleib.com/MutableLists.html\n\nAuthor: Aryeh Leib Taurog.\n\"\"\"\nfrom django.utils.functional import total_ordering\nfrom django.utils import six\nfrom django.utils.six.moves import xrange\n\n@total_ordering\nclass ListMixin(object):\n    \"\"\"\n    A base class which provides complete list interface.\n    Derived classes must call ListMixin's __init__() function\n    and implement the following:\n\n    function _get_single_external(self, i):\n        Return single item with index i for general use.\n        The index i will always satisfy 0 <= i < len(self).\n\n    function _get_single_internal(self, i):\n        Same as above, but for use within the class [Optional]\n        Note that if _get_single_internal and _get_single_internal return\n        different types of objects, _set_list must distinguish\n        between the two and handle each appropriately.\n\n    function _set_list(self, length, items):\n        Recreate the entire object.\n\n        NOTE: items may be a generator which calls _get_single_internal.\n        Therefore, it is necessary to cache the values in a temporary:\n            temp = list(items)\n        before clobbering the original storage.\n\n    function _set_single(self, i, value):\n        Set the single item at index i to value [Optional]\n        If left undefined, all mutations will result in rebuilding\n        the object using _set_list.\n\n    function __len__(self):\n        Return the length\n\n    int _minlength:\n        The minimum legal length [Optional]\n\n    int _maxlength:\n        The maximum legal length [Optional]\n\n    type or tuple _allowed:\n        A type or tuple of allowed item types [Optional]\n\n    class _IndexError:\n        The type of exception to be raise on invalid index [Optional]\n    \"\"\"\n\n    _minlength = 0\n    _maxlength = None\n    _IndexError = IndexError\n\n    ### Python initialization and special list interface methods ###\n\n    def __init__(self, *args, **kwargs):\n        if not hasattr(self, '_get_single_internal'):\n            self._get_single_internal = self._get_single_external\n\n        if not hasattr(self, '_set_single'):\n            self._set_single = self._set_single_rebuild\n            self._assign_extended_slice = self._assign_extended_slice_rebuild\n\n        super(ListMixin, self).__init__(*args, **kwargs)\n\n    def __getitem__(self, index):\n        \"Get the item(s) at the specified index/slice.\"\n        if isinstance(index, slice):\n            return [self._get_single_external(i) for i in xrange(*index.indices(len(self)))]\n        else:\n            index = self._checkindex(index)\n            return self._get_single_external(index)\n\n    def __delitem__(self, index):\n        \"Delete the item(s) at the specified index/slice.\"\n        if not isinstance(index, six.integer_types + (slice,)):\n            raise TypeError(\"%s is not a legal index\" % index)\n\n        # calculate new length and dimensions\n        origLen     = len(self)\n        if isinstance(index, six.integer_types):\n            index = self._checkindex(index)\n            indexRange  = [index]\n        else:\n            indexRange  = range(*index.indices(origLen))\n\n        newLen      = origLen - len(indexRange)\n        newItems    = ( self._get_single_internal(i)\n                        for i in xrange(origLen)\n                        if i not in indexRange )\n\n        self._rebuild(newLen, newItems)\n\n    def __setitem__(self, index, val):\n        \"Set the item(s) at the specified index/slice.\"\n        if isinstance(index, slice):\n            self._set_slice(index, val)\n        else:\n            index = self._checkindex(index)\n            self._check_allowed((val,))\n            self._set_single(index, val)\n\n    def __iter__(self):\n        \"Iterate over the items in the list\"\n        for i in xrange(len(self)):\n            yield self[i]\n\n    ### Special methods for arithmetic operations ###\n    def __add__(self, other):\n        'add another list-like object'\n        return self.__class__(list(self) + list(other))\n\n    def __radd__(self, other):\n        'add to another list-like object'\n        return other.__class__(list(other) + list(self))\n\n    def __iadd__(self, other):\n        'add another list-like object to self'\n        self.extend(list(other))\n        return self\n\n    def __mul__(self, n):\n        'multiply'\n        return self.__class__(list(self) * n)\n\n    def __rmul__(self, n):\n        'multiply'\n        return self.__class__(list(self) * n)\n\n    def __imul__(self, n):\n        'multiply'\n        if n <= 0:\n            del self[:]\n        else:\n            cache = list(self)\n            for i in range(n-1):\n                self.extend(cache)\n        return self\n\n    def __eq__(self, other):\n        olen = len(other)\n        for i in range(olen):\n            try:\n                c = self[i] == other[i]\n            except self._IndexError:\n                # self must be shorter\n                return False\n            if not c:\n                return False\n        return len(self) == olen\n\n    def __lt__(self, other):\n        olen = len(other)\n        for i in range(olen):\n            try:\n                c = self[i] < other[i]\n            except self._IndexError:\n                # self must be shorter\n                return True\n            if c:\n                return c\n            elif other[i] < self[i]:\n                return False\n        return len(self) < olen\n\n    ### Public list interface Methods ###\n    ## Non-mutating ##\n    def count(self, val):\n        \"Standard list count method\"\n        count = 0\n        for i in self:\n            if val == i: count += 1\n        return count\n\n    def index(self, val):\n        \"Standard list index method\"\n        for i in xrange(0, len(self)):\n            if self[i] == val: return i\n        raise ValueError('%s not found in object' % str(val))\n\n    ## Mutating ##\n    def append(self, val):\n        \"Standard list append method\"\n        self[len(self):] = [val]\n\n    def extend(self, vals):\n        \"Standard list extend method\"\n        self[len(self):] = vals\n\n    def insert(self, index, val):\n        \"Standard list insert method\"\n        if not isinstance(index, six.integer_types):\n            raise TypeError(\"%s is not a legal index\" % index)\n        self[index:index] = [val]\n\n    def pop(self, index=-1):\n        \"Standard list pop method\"\n        result = self[index]\n        del self[index]\n        return result\n\n    def remove(self, val):\n        \"Standard list remove method\"\n        del self[self.index(val)]\n\n    def reverse(self):\n        \"Standard list reverse method\"\n        self[:] = self[-1::-1]\n\n    def sort(self, cmp=None, key=None, reverse=False):\n        \"Standard list sort method\"\n        if key:\n            temp = [(key(v),v) for v in self]\n            temp.sort(key=lambda x: x[0], reverse=reverse)\n            self[:] = [v[1] for v in temp]\n        else:\n            temp = list(self)\n            if cmp is not None:\n                temp.sort(cmp=cmp, reverse=reverse)\n            else:\n                temp.sort(reverse=reverse)\n            self[:] = temp\n\n    ### Private routines ###\n    def _rebuild(self, newLen, newItems):\n        if newLen < self._minlength:\n            raise ValueError('Must have at least %d items' % self._minlength)\n        if self._maxlength is not None and newLen > self._maxlength:\n            raise ValueError('Cannot have more than %d items' % self._maxlength)\n\n        self._set_list(newLen, newItems)\n\n    def _set_single_rebuild(self, index, value):\n        self._set_slice(slice(index, index + 1, 1), [value])\n\n    def _checkindex(self, index, correct=True):\n        length = len(self)\n        if 0 <= index < length:\n            return index\n        if correct and -length <= index < 0:\n            return index + length\n        raise self._IndexError('invalid index: %s' % str(index))\n\n    def _check_allowed(self, items):\n        if hasattr(self, '_allowed'):\n            if False in [isinstance(val, self._allowed) for val in items]:\n                raise TypeError('Invalid type encountered in the arguments.')\n\n    def _set_slice(self, index, values):\n        \"Assign values to a slice of the object\"\n        try:\n            iter(values)\n        except TypeError:\n            raise TypeError('can only assign an iterable to a slice')\n\n        self._check_allowed(values)\n\n        origLen     = len(self)\n        valueList   = list(values)\n        start, stop, step = index.indices(origLen)\n\n        # CAREFUL: index.step and step are not the same!\n        # step will never be None\n        if index.step is None:\n            self._assign_simple_slice(start, stop, valueList)\n        else:\n            self._assign_extended_slice(start, stop, step, valueList)\n\n    def _assign_extended_slice_rebuild(self, start, stop, step, valueList):\n        'Assign an extended slice by rebuilding entire list'\n        indexList   = range(start, stop, step)\n        # extended slice, only allow assigning slice of same size\n        if len(valueList) != len(indexList):\n            raise ValueError('attempt to assign sequence of size %d '\n                             'to extended slice of size %d'\n                             % (len(valueList), len(indexList)))\n\n        # we're not changing the length of the sequence\n        newLen  = len(self)\n        newVals = dict(zip(indexList, valueList))\n        def newItems():\n            for i in xrange(newLen):\n                if i in newVals:\n                    yield newVals[i]\n                else:\n                    yield self._get_single_internal(i)\n\n        self._rebuild(newLen, newItems())\n\n    def _assign_extended_slice(self, start, stop, step, valueList):\n        'Assign an extended slice by re-assigning individual items'\n        indexList   = range(start, stop, step)\n        # extended slice, only allow assigning slice of same size\n        if len(valueList) != len(indexList):\n            raise ValueError('attempt to assign sequence of size %d '\n                             'to extended slice of size %d'\n                             % (len(valueList), len(indexList)))\n\n        for i, val in zip(indexList, valueList):\n            self._set_single(i, val)\n\n    def _assign_simple_slice(self, start, stop, valueList):\n        'Assign a simple slice; Can assign slice of any length'\n        origLen = len(self)\n        stop = max(start, stop)\n        newLen  = origLen - stop + start + len(valueList)\n        def newItems():\n            for i in xrange(origLen + 1):\n                if i == start:\n                    for val in valueList:\n                        yield val\n\n                if i < origLen:\n                    if i < start or i >= stop:\n                        yield self._get_single_internal(i)\n\n        self._rebuild(newLen, newItems())\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/geos/point.py",
    "content": "from ctypes import c_uint\nfrom django.contrib.gis.geos.error import GEOSException\nfrom django.contrib.gis.geos.geometry import GEOSGeometry\nfrom django.contrib.gis.geos import prototypes as capi\nfrom django.utils import six\nfrom django.utils.six.moves import xrange\n\nclass Point(GEOSGeometry):\n    _minlength = 2\n    _maxlength = 3\n\n    def __init__(self, x, y=None, z=None, srid=None):\n        \"\"\"\n        The Point object may be initialized with either a tuple, or individual\n        parameters.\n\n        For Example:\n        >>> p = Point((5, 23)) # 2D point, passed in as a tuple\n        >>> p = Point(5, 23, 8) # 3D point, passed in with individual parameters\n        \"\"\"\n        if isinstance(x, (tuple, list)):\n            # Here a tuple or list was passed in under the `x` parameter.\n            ndim = len(x)\n            coords = x\n        elif isinstance(x, six.integer_types + (float,)) and isinstance(y, six.integer_types + (float,)):\n            # Here X, Y, and (optionally) Z were passed in individually, as parameters.\n            if isinstance(z, six.integer_types + (float,)):\n                ndim = 3\n                coords = [x, y, z]\n            else:\n                ndim = 2\n                coords = [x, y]\n        else:\n            raise TypeError('Invalid parameters given for Point initialization.')\n\n        point = self._create_point(ndim, coords)\n\n        # Initializing using the address returned from the GEOS\n        #  createPoint factory.\n        super(Point, self).__init__(point, srid=srid)\n\n    def _create_point(self, ndim, coords):\n        \"\"\"\n        Create a coordinate sequence, set X, Y, [Z], and create point\n        \"\"\"\n        if ndim < 2 or ndim > 3:\n            raise TypeError('Invalid point dimension: %s' % str(ndim))\n\n        cs = capi.create_cs(c_uint(1), c_uint(ndim))\n        i = iter(coords)\n        capi.cs_setx(cs, 0, next(i))\n        capi.cs_sety(cs, 0, next(i))\n        if ndim == 3: capi.cs_setz(cs, 0, next(i))\n\n        return capi.create_point(cs)\n\n    def _set_list(self, length, items):\n        ptr = self._create_point(length, items)\n        if ptr:\n            capi.destroy_geom(self.ptr)\n            self._ptr = ptr\n            self._set_cs()\n        else:\n            # can this happen?\n            raise GEOSException('Geometry resulting from slice deletion was invalid.')\n\n    def _set_single(self, index, value):\n        self._cs.setOrdinate(index, 0, value)\n\n    def __iter__(self):\n        \"Allows iteration over coordinates of this Point.\"\n        for i in xrange(len(self)):\n            yield self[i]\n\n    def __len__(self):\n        \"Returns the number of dimensions for this Point (either 0, 2 or 3).\"\n        if self.empty: return 0\n        if self.hasz: return 3\n        else: return 2\n\n    def _get_single_external(self, index):\n        if index == 0:\n            return self.x\n        elif index == 1:\n            return self.y\n        elif index == 2:\n            return self.z\n\n    _get_single_internal = _get_single_external\n\n    def get_x(self):\n        \"Returns the X component of the Point.\"\n        return self._cs.getOrdinate(0, 0)\n\n    def set_x(self, value):\n        \"Sets the X component of the Point.\"\n        self._cs.setOrdinate(0, 0, value)\n\n    def get_y(self):\n        \"Returns the Y component of the Point.\"\n        return self._cs.getOrdinate(1, 0)\n\n    def set_y(self, value):\n        \"Sets the Y component of the Point.\"\n        self._cs.setOrdinate(1, 0, value)\n\n    def get_z(self):\n        \"Returns the Z component of the Point.\"\n        if self.hasz:\n            return self._cs.getOrdinate(2, 0)\n        else:\n            return None\n\n    def set_z(self, value):\n        \"Sets the Z component of the Point.\"\n        if self.hasz:\n            self._cs.setOrdinate(2, 0, value)\n        else:\n            raise GEOSException('Cannot set Z on 2D Point.')\n\n    # X, Y, Z properties\n    x = property(get_x, set_x)\n    y = property(get_y, set_y)\n    z = property(get_z, set_z)\n\n    ### Tuple setting and retrieval routines. ###\n    def get_coords(self):\n        \"Returns a tuple of the point.\"\n        return self._cs.tuple\n\n    def set_coords(self, tup):\n        \"Sets the coordinates of the point with the given tuple.\"\n        self._cs[0] = tup\n\n    # The tuple and coords properties\n    tuple = property(get_coords, set_coords)\n    coords = tuple\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/geos/polygon.py",
    "content": "from ctypes import c_uint, byref\nfrom django.contrib.gis.geos.geometry import GEOSGeometry\nfrom django.contrib.gis.geos.libgeos import get_pointer_arr, GEOM_PTR\nfrom django.contrib.gis.geos.linestring import LinearRing\nfrom django.contrib.gis.geos import prototypes as capi\nfrom django.utils import six\nfrom django.utils.six.moves import xrange\n\nclass Polygon(GEOSGeometry):\n    _minlength = 1\n\n    def __init__(self, *args, **kwargs):\n        \"\"\"\n        Initializes on an exterior ring and a sequence of holes (both\n        instances may be either LinearRing instances, or a tuple/list\n        that may be constructed into a LinearRing).\n\n        Examples of initialization, where shell, hole1, and hole2 are\n        valid LinearRing geometries:\n        >>> poly = Polygon(shell, hole1, hole2)\n        >>> poly = Polygon(shell, (hole1, hole2))\n\n        Example where a tuple parameters are used:\n        >>> poly = Polygon(((0, 0), (0, 10), (10, 10), (0, 10), (0, 0)),\n                           ((4, 4), (4, 6), (6, 6), (6, 4), (4, 4)))\n        \"\"\"\n        if not args:\n            raise TypeError('Must provide at least one LinearRing, or a tuple, to initialize a Polygon.')\n\n        # Getting the ext_ring and init_holes parameters from the argument list\n        ext_ring = args[0]\n        init_holes = args[1:]\n        n_holes = len(init_holes)\n\n        # If initialized as Polygon(shell, (LinearRing, LinearRing)) [for backward-compatibility]\n        if n_holes == 1 and isinstance(init_holes[0], (tuple, list)):\n            if len(init_holes[0]) == 0:\n                init_holes  = ()\n                n_holes     = 0\n            elif isinstance(init_holes[0][0], LinearRing):\n                init_holes  = init_holes[0]\n                n_holes     = len(init_holes)\n\n        polygon = self._create_polygon(n_holes + 1, (ext_ring,) + init_holes)\n        super(Polygon, self).__init__(polygon, **kwargs)\n\n    def __iter__(self):\n        \"Iterates over each ring in the polygon.\"\n        for i in xrange(len(self)):\n            yield self[i]\n\n    def __len__(self):\n        \"Returns the number of rings in this Polygon.\"\n        return self.num_interior_rings + 1\n\n    @classmethod\n    def from_bbox(cls, bbox):\n        \"Constructs a Polygon from a bounding box (4-tuple).\"\n        x0, y0, x1, y1 = bbox\n        for z in bbox:\n            if not isinstance(z, six.integer_types + (float,)):\n                return GEOSGeometry('POLYGON((%s %s, %s %s, %s %s, %s %s, %s %s))' %\n                                    (x0, y0, x0, y1, x1, y1, x1, y0, x0, y0))\n        return Polygon(((x0, y0), (x0, y1), (x1, y1), (x1, y0), (x0, y0)))\n\n    ### These routines are needed for list-like operation w/ListMixin ###\n    def _create_polygon(self, length, items):\n        # Instantiate LinearRing objects if necessary, but don't clone them yet\n        # _construct_ring will throw a TypeError if a parameter isn't a valid ring\n        # If we cloned the pointers here, we wouldn't be able to clean up\n        # in case of error.\n        rings = []\n        for r in items:\n            if isinstance(r, GEOM_PTR):\n                rings.append(r)\n            else:\n                rings.append(self._construct_ring(r))\n\n        shell = self._clone(rings.pop(0))\n\n        n_holes = length - 1\n        if n_holes:\n            holes = get_pointer_arr(n_holes)\n            for i, r in enumerate(rings):\n                holes[i] = self._clone(r)\n                holes_param = byref(holes)\n        else:\n            holes_param = None\n\n        return capi.create_polygon(shell, holes_param, c_uint(n_holes))\n\n    def _clone(self, g):\n        if isinstance(g, GEOM_PTR):\n            return capi.geom_clone(g)\n        else:\n            return capi.geom_clone(g.ptr)\n\n    def _construct_ring(self, param, msg='Parameter must be a sequence of LinearRings or objects that can initialize to LinearRings'):\n        \"Helper routine for trying to construct a ring from the given parameter.\"\n        if isinstance(param, LinearRing): return param\n        try:\n            ring = LinearRing(param)\n            return ring\n        except TypeError:\n            raise TypeError(msg)\n\n    def _set_list(self, length, items):\n        # Getting the current pointer, replacing with the newly constructed\n        # geometry, and destroying the old geometry.\n        prev_ptr = self.ptr\n        srid = self.srid\n        self.ptr = self._create_polygon(length, items)\n        if srid: self.srid = srid\n        capi.destroy_geom(prev_ptr)\n\n    def _get_single_internal(self, index):\n        \"\"\"\n        Returns the ring at the specified index.  The first index, 0, will\n        always return the exterior ring.  Indices > 0 will return the\n        interior ring at the given index (e.g., poly[1] and poly[2] would\n        return the first and second interior ring, respectively).\n\n        CAREFUL: Internal/External are not the same as Interior/Exterior!\n        _get_single_internal returns a pointer from the existing geometries for use\n        internally by the object's methods.  _get_single_external returns a clone\n        of the same geometry for use by external code.\n        \"\"\"\n        if index == 0:\n            return capi.get_extring(self.ptr)\n        else:\n            # Getting the interior ring, have to subtract 1 from the index.\n            return capi.get_intring(self.ptr, index-1)\n\n    def _get_single_external(self, index):\n        return GEOSGeometry(capi.geom_clone(self._get_single_internal(index)), srid=self.srid)\n\n    _set_single = GEOSGeometry._set_single_rebuild\n    _assign_extended_slice = GEOSGeometry._assign_extended_slice_rebuild\n\n    #### Polygon Properties ####\n    @property\n    def num_interior_rings(self):\n        \"Returns the number of interior rings.\"\n        # Getting the number of rings\n        return capi.get_nrings(self.ptr)\n\n    def _get_ext_ring(self):\n        \"Gets the exterior ring of the Polygon.\"\n        return self[0]\n\n    def _set_ext_ring(self, ring):\n        \"Sets the exterior ring of the Polygon.\"\n        self[0] = ring\n\n    # Properties for the exterior ring/shell.\n    exterior_ring = property(_get_ext_ring, _set_ext_ring)\n    shell = exterior_ring\n\n    @property\n    def tuple(self):\n        \"Gets the tuple for each ring in this Polygon.\"\n        return tuple([self[i].tuple for i in xrange(len(self))])\n    coords = tuple\n\n    @property\n    def kml(self):\n        \"Returns the KML representation of this Polygon.\"\n        inner_kml = ''.join([\"<innerBoundaryIs>%s</innerBoundaryIs>\" % self[i+1].kml\n                             for i in xrange(self.num_interior_rings)])\n        return \"<Polygon><outerBoundaryIs>%s</outerBoundaryIs>%s</Polygon>\" % (self[0].kml, inner_kml)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/geos/prepared.py",
    "content": "from django.contrib.gis.geos.base import GEOSBase\nfrom django.contrib.gis.geos.geometry import GEOSGeometry\nfrom django.contrib.gis.geos.prototypes import prepared as capi\n\nclass PreparedGeometry(GEOSBase):\n    \"\"\"\n    A geometry that is prepared for performing certain operations.\n    At the moment this includes the contains covers, and intersects\n    operations.\n    \"\"\"\n    ptr_type = capi.PREPGEOM_PTR\n\n    def __init__(self, geom):\n        if not isinstance(geom, GEOSGeometry): raise TypeError\n        self.ptr = capi.geos_prepare(geom.ptr)\n\n    def __del__(self):\n        if self._ptr: capi.prepared_destroy(self._ptr)\n\n    def contains(self, other):\n        return capi.prepared_contains(self.ptr, other.ptr)\n\n    def contains_properly(self, other):\n        return capi.prepared_contains_properly(self.ptr, other.ptr)\n\n    def covers(self, other):\n        return capi.prepared_covers(self.ptr, other.ptr)\n\n    def intersects(self, other):\n        return capi.prepared_intersects(self.ptr, other.ptr)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/geos/prototypes/__init__.py",
    "content": "\"\"\"\n This module contains all of the GEOS ctypes function prototypes. Each\n prototype handles the interaction between the GEOS library and Python\n via ctypes.\n\"\"\"\n\n# Coordinate sequence routines.\nfrom django.contrib.gis.geos.prototypes.coordseq import (create_cs, get_cs,\n    cs_clone, cs_getordinate, cs_setordinate, cs_getx, cs_gety, cs_getz,\n    cs_setx, cs_sety, cs_setz, cs_getsize, cs_getdims)\n\n# Geometry routines.\nfrom django.contrib.gis.geos.prototypes.geom import (from_hex, from_wkb, from_wkt,\n    create_point, create_linestring, create_linearring, create_polygon, create_collection,\n    destroy_geom, get_extring, get_intring, get_nrings, get_geomn, geom_clone,\n    geos_normalize, geos_type, geos_typeid, geos_get_srid, geos_set_srid,\n    get_dims, get_num_coords, get_num_geoms,\n    to_hex, to_wkb, to_wkt)\n\n# Miscellaneous routines.\nfrom django.contrib.gis.geos.prototypes.misc import *\n\n# Predicates\nfrom django.contrib.gis.geos.prototypes.predicates import (geos_hasz, geos_isempty,\n    geos_isring, geos_issimple, geos_isvalid, geos_contains, geos_crosses,\n    geos_disjoint, geos_equals, geos_equalsexact, geos_intersects,\n    geos_intersects, geos_overlaps, geos_relatepattern, geos_touches, geos_within)\n\n# Topology routines\nfrom django.contrib.gis.geos.prototypes.topology import *\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/geos/prototypes/coordseq.py",
    "content": "from ctypes import c_double, c_int, c_uint, POINTER\nfrom django.contrib.gis.geos.libgeos import GEOM_PTR, CS_PTR\nfrom django.contrib.gis.geos.prototypes.errcheck import last_arg_byref, GEOSException\nfrom django.contrib.gis.geos.prototypes.threadsafe import GEOSFunc\n\n## Error-checking routines specific to coordinate sequences. ##\ndef check_cs_ptr(result, func, cargs):\n    \"Error checking on routines that return Geometries.\"\n    if not result:\n        raise GEOSException('Error encountered checking Coordinate Sequence returned from GEOS C function \"%s\".' % func.__name__)\n    return result\n\ndef check_cs_op(result, func, cargs):\n    \"Checks the status code of a coordinate sequence operation.\"\n    if result == 0:\n        raise GEOSException('Could not set value on coordinate sequence')\n    else:\n        return result\n\ndef check_cs_get(result, func, cargs):\n    \"Checking the coordinate sequence retrieval.\"\n    check_cs_op(result, func, cargs)\n    # Object in by reference, return its value.\n    return last_arg_byref(cargs)\n\n## Coordinate sequence prototype generation functions. ##\ndef cs_int(func):\n    \"For coordinate sequence routines that return an integer.\"\n    func.argtypes = [CS_PTR, POINTER(c_uint)]\n    func.restype = c_int\n    func.errcheck = check_cs_get\n    return func\n\ndef cs_operation(func, ordinate=False, get=False):\n    \"For coordinate sequence operations.\"\n    if get:\n        # Get routines get double parameter passed-in by reference.\n        func.errcheck = check_cs_get\n        dbl_param = POINTER(c_double)\n    else:\n        func.errcheck = check_cs_op\n        dbl_param = c_double\n\n    if ordinate:\n        # Get/Set ordinate routines have an extra uint parameter.\n        func.argtypes = [CS_PTR, c_uint, c_uint, dbl_param]\n    else:\n        func.argtypes = [CS_PTR, c_uint, dbl_param]\n\n    func.restype = c_int\n    return func\n\ndef cs_output(func, argtypes):\n    \"For routines that return a coordinate sequence.\"\n    func.argtypes = argtypes\n    func.restype = CS_PTR\n    func.errcheck = check_cs_ptr\n    return func\n\n## Coordinate Sequence ctypes prototypes ##\n\n# Coordinate Sequence constructors & cloning.\ncs_clone = cs_output(GEOSFunc('GEOSCoordSeq_clone'), [CS_PTR])\ncreate_cs = cs_output(GEOSFunc('GEOSCoordSeq_create'), [c_uint, c_uint])\nget_cs = cs_output(GEOSFunc('GEOSGeom_getCoordSeq'), [GEOM_PTR])\n\n# Getting, setting ordinate\ncs_getordinate = cs_operation(GEOSFunc('GEOSCoordSeq_getOrdinate'), ordinate=True, get=True)\ncs_setordinate = cs_operation(GEOSFunc('GEOSCoordSeq_setOrdinate'), ordinate=True)\n\n# For getting, x, y, z\ncs_getx = cs_operation(GEOSFunc('GEOSCoordSeq_getX'), get=True)\ncs_gety = cs_operation(GEOSFunc('GEOSCoordSeq_getY'), get=True)\ncs_getz = cs_operation(GEOSFunc('GEOSCoordSeq_getZ'), get=True)\n\n# For setting, x, y, z\ncs_setx = cs_operation(GEOSFunc('GEOSCoordSeq_setX'))\ncs_sety = cs_operation(GEOSFunc('GEOSCoordSeq_setY'))\ncs_setz = cs_operation(GEOSFunc('GEOSCoordSeq_setZ'))\n\n# These routines return size & dimensions.\ncs_getsize = cs_int(GEOSFunc('GEOSCoordSeq_getSize'))\ncs_getdims = cs_int(GEOSFunc('GEOSCoordSeq_getDimensions'))\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/geos/prototypes/errcheck.py",
    "content": "\"\"\"\n Error checking functions for GEOS ctypes prototype functions.\n\"\"\"\nimport os\nfrom ctypes import c_void_p, string_at, CDLL\nfrom django.contrib.gis.geos.error import GEOSException\nfrom django.contrib.gis.geos.libgeos import GEOS_VERSION\nfrom django.contrib.gis.geos.prototypes.threadsafe import GEOSFunc\n\n# Getting the `free` routine used to free the memory allocated for\n# string pointers returned by GEOS.\nif GEOS_VERSION >= (3, 1, 1):\n    # In versions 3.1.1 and above, `GEOSFree` was added to the C API\n    # because `free` isn't always available on all platforms.\n    free = GEOSFunc('GEOSFree')\n    free.argtypes = [c_void_p]\n    free.restype = None\nelse:\n    # Getting the `free` routine from the C library of the platform.\n    if os.name == 'nt':\n        # On NT, use the MS C library.\n        libc = CDLL('msvcrt')\n    else:\n        # On POSIX platforms C library is obtained by passing None into `CDLL`.\n        libc = CDLL(None)\n    free = libc.free\n\n### ctypes error checking routines ###\ndef last_arg_byref(args):\n    \"Returns the last C argument's value by reference.\"\n    return args[-1]._obj.value\n\ndef check_dbl(result, func, cargs):\n    \"Checks the status code and returns the double value passed in by reference.\"\n    # Checking the status code\n    if result != 1: return None\n    # Double passed in by reference, return its value.\n    return last_arg_byref(cargs)\n\ndef check_geom(result, func, cargs):\n    \"Error checking on routines that return Geometries.\"\n    if not result:\n        raise GEOSException('Error encountered checking Geometry returned from GEOS C function \"%s\".' % func.__name__)\n    return result\n\ndef check_minus_one(result, func, cargs):\n    \"Error checking on routines that should not return -1.\"\n    if result == -1:\n        raise GEOSException('Error encountered in GEOS C function \"%s\".' % func.__name__)\n    else:\n        return result\n\ndef check_predicate(result, func, cargs):\n    \"Error checking for unary/binary predicate functions.\"\n    val = ord(result) # getting the ordinal from the character\n    if val == 1: return True\n    elif val == 0: return False\n    else:\n        raise GEOSException('Error encountered on GEOS C predicate function \"%s\".' % func.__name__)\n\ndef check_sized_string(result, func, cargs):\n    \"\"\"\n    Error checking for routines that return explicitly sized strings.\n\n    This frees the memory allocated by GEOS at the result pointer.\n    \"\"\"\n    if not result:\n        raise GEOSException('Invalid string pointer returned by GEOS C function \"%s\"' % func.__name__)\n    # A c_size_t object is passed in by reference for the second\n    # argument on these routines, and its needed to determine the\n    # correct size.\n    s = string_at(result, last_arg_byref(cargs))\n    # Freeing the memory allocated within GEOS\n    free(result)\n    return s\n\ndef check_string(result, func, cargs):\n    \"\"\"\n    Error checking for routines that return strings.\n\n    This frees the memory allocated by GEOS at the result pointer.\n    \"\"\"\n    if not result: raise GEOSException('Error encountered checking string return value in GEOS C function \"%s\".' % func.__name__)\n    # Getting the string value at the pointer address.\n    s = string_at(result)\n    # Freeing the memory allocated within GEOS\n    free(result)\n    return s\n\ndef check_zero(result, func, cargs):\n    \"Error checking on routines that should not return 0.\"\n    if result == 0:\n        raise GEOSException('Error encountered in GEOS C function \"%s\".' % func.__name__)\n    else:\n        return result\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/geos/prototypes/geom.py",
    "content": "from ctypes import c_char_p, c_int, c_size_t, c_ubyte, POINTER\nfrom django.contrib.gis.geos.libgeos import CS_PTR, GEOM_PTR\nfrom django.contrib.gis.geos.prototypes.errcheck import (\n    check_geom, check_minus_one, check_sized_string, check_string, check_zero)\nfrom django.contrib.gis.geos.prototypes.threadsafe import GEOSFunc\n\n# This is the return type used by binary output (WKB, HEX) routines.\nc_uchar_p = POINTER(c_ubyte)\n\n# We create a simple subclass of c_char_p here because when the response\n# type is set to c_char_p, you get a _Python_ string and there's no way\n# to access the string's address inside the error checking function.\n# In other words, you can't free the memory allocated inside GEOS.  Previously,\n# the return type would just be omitted and the integer address would be\n# used -- but this allows us to be specific in the function definition and\n# keeps the reference so it may be free'd.\nclass geos_char_p(c_char_p):\n    pass\n\n### ctypes generation functions ###\ndef bin_constructor(func):\n    \"Generates a prototype for binary construction (HEX, WKB) GEOS routines.\"\n    func.argtypes = [c_char_p, c_size_t]\n    func.restype = GEOM_PTR\n    func.errcheck = check_geom\n    return func\n\n# HEX & WKB output\ndef bin_output(func):\n    \"Generates a prototype for the routines that return a sized string.\"\n    func.argtypes = [GEOM_PTR, POINTER(c_size_t)]\n    func.errcheck = check_sized_string\n    func.restype = c_uchar_p\n    return func\n\ndef geom_output(func, argtypes):\n    \"For GEOS routines that return a geometry.\"\n    if argtypes: func.argtypes = argtypes\n    func.restype = GEOM_PTR\n    func.errcheck = check_geom\n    return func\n\ndef geom_index(func):\n    \"For GEOS routines that return geometries from an index.\"\n    return geom_output(func, [GEOM_PTR, c_int])\n\ndef int_from_geom(func, zero=False):\n    \"Argument is a geometry, return type is an integer.\"\n    func.argtypes = [GEOM_PTR]\n    func.restype = c_int\n    if zero:\n        func.errcheck = check_zero\n    else:\n        func.errcheck = check_minus_one\n    return func\n\ndef string_from_geom(func):\n    \"Argument is a Geometry, return type is a string.\"\n    func.argtypes = [GEOM_PTR]\n    func.restype = geos_char_p\n    func.errcheck = check_string\n    return func\n\n### ctypes prototypes ###\n\n# Deprecated creation routines from WKB, HEX, WKT\nfrom_hex = bin_constructor(GEOSFunc('GEOSGeomFromHEX_buf'))\nfrom_wkb = bin_constructor(GEOSFunc('GEOSGeomFromWKB_buf'))\nfrom_wkt = geom_output(GEOSFunc('GEOSGeomFromWKT'), [c_char_p])\n\n# Deprecated output routines\nto_hex = bin_output(GEOSFunc('GEOSGeomToHEX_buf'))\nto_wkb = bin_output(GEOSFunc('GEOSGeomToWKB_buf'))\nto_wkt = string_from_geom(GEOSFunc('GEOSGeomToWKT'))\n\n# The GEOS geometry type, typeid, num_coordites and number of geometries\ngeos_normalize = int_from_geom(GEOSFunc('GEOSNormalize'))\ngeos_type = string_from_geom(GEOSFunc('GEOSGeomType'))\ngeos_typeid = int_from_geom(GEOSFunc('GEOSGeomTypeId'))\nget_dims = int_from_geom(GEOSFunc('GEOSGeom_getDimensions'), zero=True)\nget_num_coords = int_from_geom(GEOSFunc('GEOSGetNumCoordinates'))\nget_num_geoms = int_from_geom(GEOSFunc('GEOSGetNumGeometries'))\n\n# Geometry creation factories\ncreate_point = geom_output(GEOSFunc('GEOSGeom_createPoint'), [CS_PTR])\ncreate_linestring = geom_output(GEOSFunc('GEOSGeom_createLineString'), [CS_PTR])\ncreate_linearring = geom_output(GEOSFunc('GEOSGeom_createLinearRing'), [CS_PTR])\n\n# Polygon and collection creation routines are special and will not\n# have their argument types defined.\ncreate_polygon = geom_output(GEOSFunc('GEOSGeom_createPolygon'), None)\ncreate_collection = geom_output(GEOSFunc('GEOSGeom_createCollection'), None)\n\n# Ring routines\nget_extring = geom_output(GEOSFunc('GEOSGetExteriorRing'), [GEOM_PTR])\nget_intring = geom_index(GEOSFunc('GEOSGetInteriorRingN'))\nget_nrings = int_from_geom(GEOSFunc('GEOSGetNumInteriorRings'))\n\n# Collection Routines\nget_geomn = geom_index(GEOSFunc('GEOSGetGeometryN'))\n\n# Cloning\ngeom_clone = GEOSFunc('GEOSGeom_clone')\ngeom_clone.argtypes = [GEOM_PTR]\ngeom_clone.restype = GEOM_PTR\n\n# Destruction routine.\ndestroy_geom = GEOSFunc('GEOSGeom_destroy')\ndestroy_geom.argtypes = [GEOM_PTR]\ndestroy_geom.restype = None\n\n# SRID routines\ngeos_get_srid = GEOSFunc('GEOSGetSRID')\ngeos_get_srid.argtypes = [GEOM_PTR]\ngeos_get_srid.restype = c_int\n\ngeos_set_srid = GEOSFunc('GEOSSetSRID')\ngeos_set_srid.argtypes = [GEOM_PTR, c_int]\ngeos_set_srid.restype = None\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/geos/prototypes/io.py",
    "content": "import threading\nfrom ctypes import byref, c_char_p, c_int, c_char, c_size_t, Structure, POINTER\nfrom django.contrib.gis import memoryview\nfrom django.contrib.gis.geos.base import GEOSBase\nfrom django.contrib.gis.geos.libgeos import GEOM_PTR\nfrom django.contrib.gis.geos.prototypes.errcheck import check_geom, check_string, check_sized_string\nfrom django.contrib.gis.geos.prototypes.geom import c_uchar_p, geos_char_p\nfrom django.contrib.gis.geos.prototypes.threadsafe import GEOSFunc\n\nfrom django.utils import six\nfrom django.utils.encoding import force_bytes\n\n### The WKB/WKT Reader/Writer structures and pointers ###\nclass WKTReader_st(Structure): pass\nclass WKTWriter_st(Structure): pass\nclass WKBReader_st(Structure): pass\nclass WKBWriter_st(Structure): pass\n\nWKT_READ_PTR  = POINTER(WKTReader_st)\nWKT_WRITE_PTR = POINTER(WKTWriter_st)\nWKB_READ_PTR  = POINTER(WKBReader_st)\nWKB_WRITE_PTR = POINTER(WKBReader_st)\n\n### WKTReader routines ###\nwkt_reader_create = GEOSFunc('GEOSWKTReader_create')\nwkt_reader_create.restype = WKT_READ_PTR\n\nwkt_reader_destroy = GEOSFunc('GEOSWKTReader_destroy')\nwkt_reader_destroy.argtypes = [WKT_READ_PTR]\n\nwkt_reader_read = GEOSFunc('GEOSWKTReader_read')\nwkt_reader_read.argtypes = [WKT_READ_PTR, c_char_p]\nwkt_reader_read.restype = GEOM_PTR\nwkt_reader_read.errcheck = check_geom\n\n### WKTWriter routines ###\nwkt_writer_create = GEOSFunc('GEOSWKTWriter_create')\nwkt_writer_create.restype = WKT_WRITE_PTR\n\nwkt_writer_destroy = GEOSFunc('GEOSWKTWriter_destroy')\nwkt_writer_destroy.argtypes = [WKT_WRITE_PTR]\n\nwkt_writer_write = GEOSFunc('GEOSWKTWriter_write')\nwkt_writer_write.argtypes = [WKT_WRITE_PTR, GEOM_PTR]\nwkt_writer_write.restype = geos_char_p\nwkt_writer_write.errcheck = check_string\n\n### WKBReader routines ###\nwkb_reader_create = GEOSFunc('GEOSWKBReader_create')\nwkb_reader_create.restype = WKB_READ_PTR\n\nwkb_reader_destroy = GEOSFunc('GEOSWKBReader_destroy')\nwkb_reader_destroy.argtypes = [WKB_READ_PTR]\n\ndef wkb_read_func(func):\n    # Although the function definitions take `const unsigned char *`\n    # as their parameter, we use c_char_p here so the function may\n    # take Python strings directly as parameters.  Inside Python there\n    # is not a difference between signed and unsigned characters, so\n    # it is not a problem.\n    func.argtypes = [WKB_READ_PTR, c_char_p, c_size_t]\n    func.restype = GEOM_PTR\n    func.errcheck = check_geom\n    return func\n\nwkb_reader_read = wkb_read_func(GEOSFunc('GEOSWKBReader_read'))\nwkb_reader_read_hex = wkb_read_func(GEOSFunc('GEOSWKBReader_readHEX'))\n\n### WKBWriter routines ###\nwkb_writer_create = GEOSFunc('GEOSWKBWriter_create')\nwkb_writer_create.restype = WKB_WRITE_PTR\n\nwkb_writer_destroy = GEOSFunc('GEOSWKBWriter_destroy')\nwkb_writer_destroy.argtypes = [WKB_WRITE_PTR]\n\n# WKB Writing prototypes.\ndef wkb_write_func(func):\n    func.argtypes = [WKB_WRITE_PTR, GEOM_PTR, POINTER(c_size_t)]\n    func.restype = c_uchar_p\n    func.errcheck = check_sized_string\n    return func\n\nwkb_writer_write = wkb_write_func(GEOSFunc('GEOSWKBWriter_write'))\nwkb_writer_write_hex = wkb_write_func(GEOSFunc('GEOSWKBWriter_writeHEX'))\n\n# WKBWriter property getter/setter prototypes.\ndef wkb_writer_get(func, restype=c_int):\n    func.argtypes = [WKB_WRITE_PTR]\n    func.restype = restype\n    return func\n\ndef wkb_writer_set(func, argtype=c_int):\n    func.argtypes = [WKB_WRITE_PTR, argtype]\n    return func\n\nwkb_writer_get_byteorder = wkb_writer_get(GEOSFunc('GEOSWKBWriter_getByteOrder'))\nwkb_writer_set_byteorder = wkb_writer_set(GEOSFunc('GEOSWKBWriter_setByteOrder'))\nwkb_writer_get_outdim    = wkb_writer_get(GEOSFunc('GEOSWKBWriter_getOutputDimension'))\nwkb_writer_set_outdim    = wkb_writer_set(GEOSFunc('GEOSWKBWriter_setOutputDimension'))\nwkb_writer_get_include_srid = wkb_writer_get(GEOSFunc('GEOSWKBWriter_getIncludeSRID'), restype=c_char)\nwkb_writer_set_include_srid = wkb_writer_set(GEOSFunc('GEOSWKBWriter_setIncludeSRID'), argtype=c_char)\n\n### Base I/O Class ###\nclass IOBase(GEOSBase):\n    \"Base class for GEOS I/O objects.\"\n    def __init__(self):\n        # Getting the pointer with the constructor.\n        self.ptr = self._constructor()\n\n    def __del__(self):\n        # Cleaning up with the appropriate destructor.\n        if self._ptr: self._destructor(self._ptr)\n\n### Base WKB/WKT Reading and Writing objects ###\n\n# Non-public WKB/WKT reader classes for internal use because\n# their `read` methods return _pointers_ instead of GEOSGeometry\n# objects.\nclass _WKTReader(IOBase):\n    _constructor = wkt_reader_create\n    _destructor = wkt_reader_destroy\n    ptr_type = WKT_READ_PTR\n\n    def read(self, wkt):\n        if not isinstance(wkt, (bytes, six.string_types)):\n            raise TypeError\n        return wkt_reader_read(self.ptr, force_bytes(wkt))\n\nclass _WKBReader(IOBase):\n    _constructor = wkb_reader_create\n    _destructor = wkb_reader_destroy\n    ptr_type = WKB_READ_PTR\n\n    def read(self, wkb):\n        \"Returns a _pointer_ to C GEOS Geometry object from the given WKB.\"\n        if isinstance(wkb, memoryview):\n            wkb_s = bytes(wkb)\n            return wkb_reader_read(self.ptr, wkb_s, len(wkb_s))\n        elif isinstance(wkb, (bytes, six.string_types)):\n            return wkb_reader_read_hex(self.ptr, wkb, len(wkb))\n        else:\n            raise TypeError\n\n### WKB/WKT Writer Classes ###\nclass WKTWriter(IOBase):\n    _constructor = wkt_writer_create\n    _destructor = wkt_writer_destroy\n    ptr_type = WKT_WRITE_PTR\n\n    def write(self, geom):\n        \"Returns the WKT representation of the given geometry.\"\n        return wkt_writer_write(self.ptr, geom.ptr)\n\nclass WKBWriter(IOBase):\n    _constructor = wkb_writer_create\n    _destructor = wkb_writer_destroy\n    ptr_type = WKB_WRITE_PTR\n\n    def write(self, geom):\n        \"Returns the WKB representation of the given geometry.\"\n        return memoryview(wkb_writer_write(self.ptr, geom.ptr, byref(c_size_t())))\n\n    def write_hex(self, geom):\n        \"Returns the HEXEWKB representation of the given geometry.\"\n        return wkb_writer_write_hex(self.ptr, geom.ptr, byref(c_size_t()))\n\n    ### WKBWriter Properties ###\n\n    # Property for getting/setting the byteorder.\n    def _get_byteorder(self):\n        return wkb_writer_get_byteorder(self.ptr)\n\n    def _set_byteorder(self, order):\n        if not order in (0, 1): raise ValueError('Byte order parameter must be 0 (Big Endian) or 1 (Little Endian).')\n        wkb_writer_set_byteorder(self.ptr, order)\n\n    byteorder = property(_get_byteorder, _set_byteorder)\n\n    # Property for getting/setting the output dimension.\n    def _get_outdim(self):\n        return wkb_writer_get_outdim(self.ptr)\n\n    def _set_outdim(self, new_dim):\n        if not new_dim in (2, 3): raise ValueError('WKB output dimension must be 2 or 3')\n        wkb_writer_set_outdim(self.ptr, new_dim)\n\n    outdim = property(_get_outdim, _set_outdim)\n\n    # Property for getting/setting the include srid flag.\n    def _get_include_srid(self):\n        return bool(ord(wkb_writer_get_include_srid(self.ptr)))\n\n    def _set_include_srid(self, include):\n        if bool(include): flag = b'\\x01'\n        else: flag = b'\\x00'\n        wkb_writer_set_include_srid(self.ptr, flag)\n\n    srid = property(_get_include_srid, _set_include_srid)\n\n# `ThreadLocalIO` object holds instances of the WKT and WKB reader/writer\n# objects that are local to the thread.  The `GEOSGeometry` internals\n# access these instances by calling the module-level functions, defined\n# below.\nclass ThreadLocalIO(threading.local):\n    wkt_r = None\n    wkt_w = None\n    wkb_r = None\n    wkb_w = None\n    ewkb_w = None\n\nthread_context = ThreadLocalIO()\n\n# These module-level routines return the I/O object that is local to the\n# thread. If the I/O object does not exist yet it will be initialized.\ndef wkt_r():\n    if not thread_context.wkt_r:\n        thread_context.wkt_r = _WKTReader()\n    return thread_context.wkt_r\n\ndef wkt_w():\n    if not thread_context.wkt_w:\n        thread_context.wkt_w = WKTWriter()\n    return thread_context.wkt_w\n\ndef wkb_r():\n    if not thread_context.wkb_r:\n        thread_context.wkb_r = _WKBReader()\n    return thread_context.wkb_r\n\ndef wkb_w(dim=2):\n   if not thread_context.wkb_w:\n       thread_context.wkb_w = WKBWriter()\n   thread_context.wkb_w.outdim = dim\n   return thread_context.wkb_w\n\ndef ewkb_w(dim=2):\n    if not thread_context.ewkb_w:\n        thread_context.ewkb_w = WKBWriter()\n        thread_context.ewkb_w.srid = True\n    thread_context.ewkb_w.outdim = dim\n    return thread_context.ewkb_w\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/geos/prototypes/misc.py",
    "content": "\"\"\"\n This module is for the miscellaneous GEOS routines, particularly the\n ones that return the area, distance, and length.\n\"\"\"\nfrom ctypes import c_int, c_double, POINTER\nfrom django.contrib.gis.geos.libgeos import GEOM_PTR, GEOS_PREPARE\nfrom django.contrib.gis.geos.prototypes.errcheck import check_dbl, check_string\nfrom django.contrib.gis.geos.prototypes.geom import geos_char_p\nfrom django.contrib.gis.geos.prototypes.threadsafe import GEOSFunc\nfrom django.utils.six.moves import xrange\n\n__all__ = ['geos_area', 'geos_distance', 'geos_length']\n\n### ctypes generator function ###\ndef dbl_from_geom(func, num_geom=1):\n    \"\"\"\n    Argument is a Geometry, return type is double that is passed\n    in by reference as the last argument.\n    \"\"\"\n    argtypes = [GEOM_PTR for i in xrange(num_geom)]\n    argtypes += [POINTER(c_double)]\n    func.argtypes = argtypes\n    func.restype = c_int # Status code returned\n    func.errcheck = check_dbl\n    return func\n\n### ctypes prototypes ###\n\n# Area, distance, and length prototypes.\ngeos_area = dbl_from_geom(GEOSFunc('GEOSArea'))\ngeos_distance = dbl_from_geom(GEOSFunc('GEOSDistance'), num_geom=2)\ngeos_length = dbl_from_geom(GEOSFunc('GEOSLength'))\n\n# Validity reason; only in GEOS 3.1+\nif GEOS_PREPARE:\n    geos_isvalidreason = GEOSFunc('GEOSisValidReason')\n    geos_isvalidreason.argtypes = [GEOM_PTR]\n    geos_isvalidreason.restype = geos_char_p\n    geos_isvalidreason.errcheck = check_string\n    __all__.append('geos_isvalidreason')\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/geos/prototypes/predicates.py",
    "content": "\"\"\"\n This module houses the GEOS ctypes prototype functions for the\n unary and binary predicate operations on geometries.\n\"\"\"\nfrom ctypes import c_char, c_char_p, c_double\nfrom django.contrib.gis.geos.libgeos import GEOM_PTR\nfrom django.contrib.gis.geos.prototypes.errcheck import check_predicate\nfrom django.contrib.gis.geos.prototypes.threadsafe import GEOSFunc\n\n## Binary & unary predicate functions ##\ndef binary_predicate(func, *args):\n    \"For GEOS binary predicate functions.\"\n    argtypes = [GEOM_PTR, GEOM_PTR]\n    if args: argtypes += args\n    func.argtypes = argtypes\n    func.restype = c_char\n    func.errcheck = check_predicate\n    return func\n\ndef unary_predicate(func):\n    \"For GEOS unary predicate functions.\"\n    func.argtypes = [GEOM_PTR]\n    func.restype = c_char\n    func.errcheck = check_predicate\n    return func\n\n## Unary Predicates ##\ngeos_hasz = unary_predicate(GEOSFunc('GEOSHasZ'))\ngeos_isempty = unary_predicate(GEOSFunc('GEOSisEmpty'))\ngeos_isring = unary_predicate(GEOSFunc('GEOSisRing'))\ngeos_issimple = unary_predicate(GEOSFunc('GEOSisSimple'))\ngeos_isvalid = unary_predicate(GEOSFunc('GEOSisValid'))\n\n## Binary Predicates ##\ngeos_contains = binary_predicate(GEOSFunc('GEOSContains'))\ngeos_crosses = binary_predicate(GEOSFunc('GEOSCrosses'))\ngeos_disjoint = binary_predicate(GEOSFunc('GEOSDisjoint'))\ngeos_equals = binary_predicate(GEOSFunc('GEOSEquals'))\ngeos_equalsexact = binary_predicate(GEOSFunc('GEOSEqualsExact'), c_double)\ngeos_intersects = binary_predicate(GEOSFunc('GEOSIntersects'))\ngeos_overlaps = binary_predicate(GEOSFunc('GEOSOverlaps'))\ngeos_relatepattern = binary_predicate(GEOSFunc('GEOSRelatePattern'), c_char_p)\ngeos_touches = binary_predicate(GEOSFunc('GEOSTouches'))\ngeos_within = binary_predicate(GEOSFunc('GEOSWithin'))\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/geos/prototypes/prepared.py",
    "content": "from ctypes import c_char\nfrom django.contrib.gis.geos.libgeos import GEOM_PTR, PREPGEOM_PTR\nfrom django.contrib.gis.geos.prototypes.errcheck import check_predicate\nfrom django.contrib.gis.geos.prototypes.threadsafe import GEOSFunc\n\n# Prepared geometry constructor and destructors.\ngeos_prepare = GEOSFunc('GEOSPrepare')\ngeos_prepare.argtypes = [GEOM_PTR]\ngeos_prepare.restype = PREPGEOM_PTR\n\nprepared_destroy = GEOSFunc('GEOSPreparedGeom_destroy')\nprepared_destroy.argtpes = [PREPGEOM_PTR]\nprepared_destroy.restype = None\n\n# Prepared geometry binary predicate support.\ndef prepared_predicate(func):\n    func.argtypes= [PREPGEOM_PTR, GEOM_PTR]\n    func.restype = c_char\n    func.errcheck = check_predicate\n    return func\n\nprepared_contains = prepared_predicate(GEOSFunc('GEOSPreparedContains'))\nprepared_contains_properly = prepared_predicate(GEOSFunc('GEOSPreparedContainsProperly'))\nprepared_covers = prepared_predicate(GEOSFunc('GEOSPreparedCovers'))\nprepared_intersects = prepared_predicate(GEOSFunc('GEOSPreparedIntersects'))\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/geos/prototypes/threadsafe.py",
    "content": "import threading\nfrom django.contrib.gis.geos.libgeos import lgeos, notice_h, error_h, CONTEXT_PTR\n\nclass GEOSContextHandle(object):\n    \"\"\"\n    Python object representing a GEOS context handle.\n    \"\"\"\n    def __init__(self):\n        # Initializing the context handler for this thread with\n        # the notice and error handler.\n        self.ptr = lgeos.initGEOS_r(notice_h, error_h)\n\n    def __del__(self):\n        if self.ptr: lgeos.finishGEOS_r(self.ptr)\n\n# Defining a thread-local object and creating an instance\n# to hold a reference to GEOSContextHandle for this thread.\nclass GEOSContext(threading.local):\n    handle = None\n\nthread_context = GEOSContext()\n\nclass GEOSFunc(object):\n    \"\"\"\n    Class that serves as a wrapper for GEOS C Functions, and will\n    use thread-safe function variants when available.\n    \"\"\"\n    def __init__(self, func_name):\n        try:\n            # GEOS thread-safe function signatures end with '_r', and\n            # take an additional context handle parameter.\n            self.cfunc = getattr(lgeos, func_name + '_r')\n            self.threaded = True\n            # Create a reference here to thread_context so it's not\n            # garbage-collected before an attempt to call this object.\n            self.thread_context = thread_context\n        except AttributeError:\n            # Otherwise, use usual function.\n            self.cfunc = getattr(lgeos, func_name)\n            self.threaded = False\n\n    def __call__(self, *args):\n        if self.threaded:\n            # If a context handle does not exist for this thread, initialize one.\n            if not self.thread_context.handle:\n                self.thread_context.handle = GEOSContextHandle()\n            # Call the threaded GEOS routine with pointer of the context handle\n            # as the first argument.\n            return self.cfunc(self.thread_context.handle.ptr, *args)\n        else:\n            return self.cfunc(*args)\n\n    def __str__(self):\n        return self.cfunc.__name__\n\n    # argtypes property\n    def _get_argtypes(self):\n        return self.cfunc.argtypes\n\n    def _set_argtypes(self, argtypes):\n        if self.threaded:\n            new_argtypes = [CONTEXT_PTR]\n            new_argtypes.extend(argtypes)\n            self.cfunc.argtypes = new_argtypes\n        else:\n            self.cfunc.argtypes = argtypes\n\n    argtypes = property(_get_argtypes, _set_argtypes)\n\n    # restype property\n    def _get_restype(self):\n        return self.cfunc.restype\n\n    def _set_restype(self, restype):\n        self.cfunc.restype = restype\n\n    restype = property(_get_restype, _set_restype)\n\n    # errcheck property\n    def _get_errcheck(self):\n        return self.cfunc.errcheck\n\n    def _set_errcheck(self, errcheck):\n        self.cfunc.errcheck = errcheck\n\n    errcheck = property(_get_errcheck, _set_errcheck)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/geos/prototypes/topology.py",
    "content": "\"\"\"\n This module houses the GEOS ctypes prototype functions for the\n topological operations on geometries.\n\"\"\"\n__all__ = ['geos_boundary', 'geos_buffer', 'geos_centroid', 'geos_convexhull',\n           'geos_difference', 'geos_envelope', 'geos_intersection', \n           'geos_linemerge', 'geos_pointonsurface', 'geos_preservesimplify',\n           'geos_simplify', 'geos_symdifference', 'geos_union', 'geos_relate']\n\nfrom ctypes import c_double, c_int\nfrom django.contrib.gis.geos.libgeos import geos_version_info, GEOM_PTR, GEOS_PREPARE\nfrom django.contrib.gis.geos.prototypes.errcheck import check_geom, check_minus_one, check_string\nfrom django.contrib.gis.geos.prototypes.geom import geos_char_p\nfrom django.contrib.gis.geos.prototypes.threadsafe import GEOSFunc\n\ndef topology(func, *args, **kwargs):\n    \"For GEOS unary topology functions.\"\n    argtypes = [GEOM_PTR]\n    if args: argtypes += args\n    func.argtypes = argtypes\n    func.restype = kwargs.get('restype', GEOM_PTR)\n    func.errcheck = kwargs.get('errcheck', check_geom)\n    return func\n\n### Topology Routines ###\ngeos_boundary = topology(GEOSFunc('GEOSBoundary'))\ngeos_buffer = topology(GEOSFunc('GEOSBuffer'), c_double, c_int)\ngeos_centroid = topology(GEOSFunc('GEOSGetCentroid'))\ngeos_convexhull = topology(GEOSFunc('GEOSConvexHull'))\ngeos_difference = topology(GEOSFunc('GEOSDifference'), GEOM_PTR)\ngeos_envelope = topology(GEOSFunc('GEOSEnvelope'))\ngeos_intersection = topology(GEOSFunc('GEOSIntersection'), GEOM_PTR)\ngeos_linemerge = topology(GEOSFunc('GEOSLineMerge'))\ngeos_pointonsurface = topology(GEOSFunc('GEOSPointOnSurface'))\ngeos_preservesimplify = topology(GEOSFunc('GEOSTopologyPreserveSimplify'), c_double)\ngeos_simplify = topology(GEOSFunc('GEOSSimplify'), c_double)\ngeos_symdifference = topology(GEOSFunc('GEOSSymDifference'), GEOM_PTR)\ngeos_union = topology(GEOSFunc('GEOSUnion'), GEOM_PTR)\n\n# GEOSRelate returns a string, not a geometry.\ngeos_relate = GEOSFunc('GEOSRelate')\ngeos_relate.argtypes = [GEOM_PTR, GEOM_PTR]\ngeos_relate.restype = geos_char_p\ngeos_relate.errcheck = check_string\n\n# Routines only in GEOS 3.1+\nif GEOS_PREPARE:\n    geos_cascaded_union = GEOSFunc('GEOSUnionCascaded')\n    geos_cascaded_union.argtypes = [GEOM_PTR]\n    geos_cascaded_union.restype = GEOM_PTR\n    __all__.append('geos_cascaded_union')\n\n# Linear referencing routines\ninfo = geos_version_info()\nif info['version'] >= '3.2.0':\n    geos_project = topology(GEOSFunc('GEOSProject'), GEOM_PTR,\n        restype=c_double, errcheck=check_minus_one)\n    geos_interpolate = topology(GEOSFunc('GEOSInterpolate'), c_double)\n\n    geos_project_normalized = topology(GEOSFunc('GEOSProjectNormalized'),\n        GEOM_PTR, restype=c_double, errcheck=check_minus_one)\n    geos_interpolate_normalized = topology(GEOSFunc('GEOSInterpolateNormalized'), c_double)\n    __all__.extend(['geos_project', 'geos_interpolate',\n        'geos_project_normalized', 'geos_interpolate_normalized'])\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/geos/tests/__init__.py",
    "content": "\"\"\"\nGEOS Testing module.\n\"\"\"\nfrom __future__ import absolute_import\n\nfrom django.utils.unittest import TestSuite, TextTestRunner\nfrom . import test_geos, test_io, test_geos_mutation, test_mutable_list\n\ntest_suites = [\n    test_geos.suite(),\n    test_io.suite(),\n    test_geos_mutation.suite(),\n    test_mutable_list.suite(),\n    ]\n\ndef suite():\n    \"Builds a test suite for the GEOS tests.\"\n    s = TestSuite()\n    for suite in test_suites:\n        s.addTest(suite)\n    return s\n\ndef run(verbosity=1):\n    \"Runs the GEOS tests.\"\n    TextTestRunner(verbosity=verbosity).run(suite())\n\nif __name__ == '__main__':\n    run(2)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/geos/tests/test_geos.py",
    "content": "from __future__ import unicode_literals\n\nimport ctypes\nimport json\nimport random\nfrom binascii import a2b_hex, b2a_hex\nfrom io import BytesIO\n\nfrom django.contrib.gis import memoryview\nfrom django.contrib.gis.geos import (GEOSException, GEOSIndexError, GEOSGeometry,\n    GeometryCollection, Point, MultiPoint, Polygon, MultiPolygon, LinearRing,\n    LineString, MultiLineString, fromfile, fromstr, geos_version_info)\nfrom django.contrib.gis.geos.base import gdal, numpy, GEOSBase\nfrom django.contrib.gis.geos.libgeos import GEOS_PREPARE\nfrom django.contrib.gis.geometry.test_data import TestDataMixin\n\nfrom django.utils.encoding import force_bytes\nfrom django.utils import six\nfrom django.utils.six.moves import xrange\nfrom django.utils import unittest\n\n\nclass GEOSTest(unittest.TestCase, TestDataMixin):\n\n    @property\n    def null_srid(self):\n        \"\"\"\n        Returns the proper null SRID depending on the GEOS version.\n        See the comments in `test_srid` for more details.\n        \"\"\"\n        info = geos_version_info()\n        if info['version'] == '3.0.0' and info['release_candidate']:\n            return -1\n        else:\n            return None\n\n    def test_base(self):\n        \"Tests out the GEOSBase class.\"\n        # Testing out GEOSBase class, which provides a `ptr` property\n        # that abstracts out access to underlying C pointers.\n        class FakeGeom1(GEOSBase):\n            pass\n\n        # This one only accepts pointers to floats\n        c_float_p = ctypes.POINTER(ctypes.c_float)\n        class FakeGeom2(GEOSBase):\n            ptr_type = c_float_p\n\n        # Default ptr_type is `c_void_p`.\n        fg1 = FakeGeom1()\n        # Default ptr_type is C float pointer\n        fg2 = FakeGeom2()\n\n        # These assignments are OK -- None is allowed because\n        # it's equivalent to the NULL pointer.\n        fg1.ptr = ctypes.c_void_p()\n        fg1.ptr = None\n        fg2.ptr = c_float_p(ctypes.c_float(5.23))\n        fg2.ptr = None\n\n        # Because pointers have been set to NULL, an exception should be\n        # raised when we try to access it.  Raising an exception is\n        # preferrable to a segmentation fault that commonly occurs when\n        # a C method is given a NULL memory reference.\n        for fg in (fg1, fg2):\n            # Equivalent to `fg.ptr`\n            self.assertRaises(GEOSException, fg._get_ptr)\n\n        # Anything that is either not None or the acceptable pointer type will\n        # result in a TypeError when trying to assign it to the `ptr` property.\n        # Thus, memmory addresses (integers) and pointers of the incorrect type\n        # (in `bad_ptrs`) will not be allowed.\n        bad_ptrs = (5, ctypes.c_char_p(b'foobar'))\n        for bad_ptr in bad_ptrs:\n            # Equivalent to `fg.ptr = bad_ptr`\n            self.assertRaises(TypeError, fg1._set_ptr, bad_ptr)\n            self.assertRaises(TypeError, fg2._set_ptr, bad_ptr)\n\n    def test_wkt(self):\n        \"Testing WKT output.\"\n        for g in self.geometries.wkt_out:\n            geom = fromstr(g.wkt)\n            self.assertEqual(g.ewkt, geom.wkt)\n\n    def test_hex(self):\n        \"Testing HEX output.\"\n        for g in self.geometries.hex_wkt:\n            geom = fromstr(g.wkt)\n            self.assertEqual(g.hex, geom.hex.decode())\n\n    def test_hexewkb(self):\n        \"Testing (HEX)EWKB output.\"\n        # For testing HEX(EWKB).\n        ogc_hex = b'01010000000000000000000000000000000000F03F'\n        ogc_hex_3d = b'01010000800000000000000000000000000000F03F0000000000000040'\n        # `SELECT ST_AsHEXEWKB(ST_GeomFromText('POINT(0 1)', 4326));`\n        hexewkb_2d = b'0101000020E61000000000000000000000000000000000F03F'\n        # `SELECT ST_AsHEXEWKB(ST_GeomFromEWKT('SRID=4326;POINT(0 1 2)'));`\n        hexewkb_3d = b'01010000A0E61000000000000000000000000000000000F03F0000000000000040'\n\n        pnt_2d = Point(0, 1, srid=4326)\n        pnt_3d = Point(0, 1, 2, srid=4326)\n\n        # OGC-compliant HEX will not have SRID value.\n        self.assertEqual(ogc_hex, pnt_2d.hex)\n        self.assertEqual(ogc_hex_3d, pnt_3d.hex)\n\n        # HEXEWKB should be appropriate for its dimension -- have to use an\n        # a WKBWriter w/dimension set accordingly, else GEOS will insert\n        # garbage into 3D coordinate if there is none.  Also, GEOS has a\n        # a bug in versions prior to 3.1 that puts the X coordinate in\n        # place of Z; an exception should be raised on those versions.\n        self.assertEqual(hexewkb_2d, pnt_2d.hexewkb)\n        if GEOS_PREPARE:\n            self.assertEqual(hexewkb_3d, pnt_3d.hexewkb)\n            self.assertEqual(True, GEOSGeometry(hexewkb_3d).hasz)\n        else:\n            try:\n                hexewkb = pnt_3d.hexewkb\n            except GEOSException:\n                pass\n            else:\n                self.fail('Should have raised GEOSException.')\n\n        # Same for EWKB.\n        self.assertEqual(memoryview(a2b_hex(hexewkb_2d)), pnt_2d.ewkb)\n        if GEOS_PREPARE:\n            self.assertEqual(memoryview(a2b_hex(hexewkb_3d)), pnt_3d.ewkb)\n        else:\n            try:\n                ewkb = pnt_3d.ewkb\n            except GEOSException:\n                pass\n            else:\n                self.fail('Should have raised GEOSException')\n\n        # Redundant sanity check.\n        self.assertEqual(4326, GEOSGeometry(hexewkb_2d).srid)\n\n    def test_kml(self):\n        \"Testing KML output.\"\n        for tg in self.geometries.wkt_out:\n            geom = fromstr(tg.wkt)\n            kml = getattr(tg, 'kml', False)\n            if kml: self.assertEqual(kml, geom.kml)\n\n    def test_errors(self):\n        \"Testing the Error handlers.\"\n        # string-based\n        for err in self.geometries.errors:\n            with self.assertRaises((GEOSException, ValueError)):\n                _ = fromstr(err.wkt)\n\n        # Bad WKB\n        self.assertRaises(GEOSException, GEOSGeometry, memoryview(b'0'))\n\n        class NotAGeometry(object):\n            pass\n\n        # Some other object\n        self.assertRaises(TypeError, GEOSGeometry, NotAGeometry())\n        # None\n        self.assertRaises(TypeError, GEOSGeometry, None)\n\n    def test_wkb(self):\n        \"Testing WKB output.\"\n        for g in self.geometries.hex_wkt:\n            geom = fromstr(g.wkt)\n            wkb = geom.wkb\n            self.assertEqual(b2a_hex(wkb).decode().upper(), g.hex)\n\n    def test_create_hex(self):\n        \"Testing creation from HEX.\"\n        for g in self.geometries.hex_wkt:\n            geom_h = GEOSGeometry(g.hex)\n            # we need to do this so decimal places get normalised\n            geom_t = fromstr(g.wkt)\n            self.assertEqual(geom_t.wkt, geom_h.wkt)\n\n    def test_create_wkb(self):\n        \"Testing creation from WKB.\"\n        for g in self.geometries.hex_wkt:\n            wkb = memoryview(a2b_hex(g.hex.encode()))\n            geom_h = GEOSGeometry(wkb)\n            # we need to do this so decimal places get normalised\n            geom_t = fromstr(g.wkt)\n            self.assertEqual(geom_t.wkt, geom_h.wkt)\n\n    def test_ewkt(self):\n        \"Testing EWKT.\"\n        srids = (-1, 32140)\n        for srid in srids:\n            for p in self.geometries.polygons:\n                ewkt = 'SRID=%d;%s' % (srid, p.wkt)\n                poly = fromstr(ewkt)\n                self.assertEqual(srid, poly.srid)\n                self.assertEqual(srid, poly.shell.srid)\n                self.assertEqual(srid, fromstr(poly.ewkt).srid) # Checking export\n\n    @unittest.skipUnless(gdal.HAS_GDAL, \"gdal is required\")\n    def test_json(self):\n        \"Testing GeoJSON input/output (via GDAL).\"\n        for g in self.geometries.json_geoms:\n            geom = GEOSGeometry(g.wkt)\n            if not hasattr(g, 'not_equal'):\n                # Loading jsons to prevent decimal differences\n                self.assertEqual(json.loads(g.json), json.loads(geom.json))\n                self.assertEqual(json.loads(g.json), json.loads(geom.geojson))\n            self.assertEqual(GEOSGeometry(g.wkt), GEOSGeometry(geom.json))\n\n    def test_fromfile(self):\n        \"Testing the fromfile() factory.\"\n        ref_pnt = GEOSGeometry('POINT(5 23)')\n\n        wkt_f = BytesIO()\n        wkt_f.write(force_bytes(ref_pnt.wkt))\n        wkb_f = BytesIO()\n        wkb_f.write(bytes(ref_pnt.wkb))\n\n        # Other tests use `fromfile()` on string filenames so those\n        # aren't tested here.\n        for fh in (wkt_f, wkb_f):\n            fh.seek(0)\n            pnt = fromfile(fh)\n            self.assertEqual(ref_pnt, pnt)\n\n    def test_eq(self):\n        \"Testing equivalence.\"\n        p = fromstr('POINT(5 23)')\n        self.assertEqual(p, p.wkt)\n        self.assertNotEqual(p, 'foo')\n        ls = fromstr('LINESTRING(0 0, 1 1, 5 5)')\n        self.assertEqual(ls, ls.wkt)\n        self.assertNotEqual(p, 'bar')\n        # Error shouldn't be raise on equivalence testing with\n        # an invalid type.\n        for g in (p, ls):\n            self.assertNotEqual(g, None)\n            self.assertNotEqual(g, {'foo' : 'bar'})\n            self.assertNotEqual(g, False)\n\n    def test_points(self):\n        \"Testing Point objects.\"\n        prev = fromstr('POINT(0 0)')\n        for p in self.geometries.points:\n            # Creating the point from the WKT\n            pnt = fromstr(p.wkt)\n            self.assertEqual(pnt.geom_type, 'Point')\n            self.assertEqual(pnt.geom_typeid, 0)\n            self.assertEqual(p.x, pnt.x)\n            self.assertEqual(p.y, pnt.y)\n            self.assertEqual(True, pnt == fromstr(p.wkt))\n            self.assertEqual(False, pnt == prev)\n\n            # Making sure that the point's X, Y components are what we expect\n            self.assertAlmostEqual(p.x, pnt.tuple[0], 9)\n            self.assertAlmostEqual(p.y, pnt.tuple[1], 9)\n\n            # Testing the third dimension, and getting the tuple arguments\n            if hasattr(p, 'z'):\n                self.assertEqual(True, pnt.hasz)\n                self.assertEqual(p.z, pnt.z)\n                self.assertEqual(p.z, pnt.tuple[2], 9)\n                tup_args = (p.x, p.y, p.z)\n                set_tup1 = (2.71, 3.14, 5.23)\n                set_tup2 = (5.23, 2.71, 3.14)\n            else:\n                self.assertEqual(False, pnt.hasz)\n                self.assertEqual(None, pnt.z)\n                tup_args = (p.x, p.y)\n                set_tup1 = (2.71, 3.14)\n                set_tup2 = (3.14, 2.71)\n\n            # Centroid operation on point should be point itself\n            self.assertEqual(p.centroid, pnt.centroid.tuple)\n\n            # Now testing the different constructors\n            pnt2 = Point(tup_args)  # e.g., Point((1, 2))\n            pnt3 = Point(*tup_args) # e.g., Point(1, 2)\n            self.assertEqual(True, pnt == pnt2)\n            self.assertEqual(True, pnt == pnt3)\n\n            # Now testing setting the x and y\n            pnt.y = 3.14\n            pnt.x = 2.71\n            self.assertEqual(3.14, pnt.y)\n            self.assertEqual(2.71, pnt.x)\n\n            # Setting via the tuple/coords property\n            pnt.tuple = set_tup1\n            self.assertEqual(set_tup1, pnt.tuple)\n            pnt.coords = set_tup2\n            self.assertEqual(set_tup2, pnt.coords)\n\n            prev = pnt # setting the previous geometry\n\n    def test_multipoints(self):\n        \"Testing MultiPoint objects.\"\n        for mp in self.geometries.multipoints:\n            mpnt = fromstr(mp.wkt)\n            self.assertEqual(mpnt.geom_type, 'MultiPoint')\n            self.assertEqual(mpnt.geom_typeid, 4)\n\n            self.assertAlmostEqual(mp.centroid[0], mpnt.centroid.tuple[0], 9)\n            self.assertAlmostEqual(mp.centroid[1], mpnt.centroid.tuple[1], 9)\n\n            self.assertRaises(GEOSIndexError, mpnt.__getitem__, len(mpnt))\n            self.assertEqual(mp.centroid, mpnt.centroid.tuple)\n            self.assertEqual(mp.coords, tuple(m.tuple for m in mpnt))\n            for p in mpnt:\n                self.assertEqual(p.geom_type, 'Point')\n                self.assertEqual(p.geom_typeid, 0)\n                self.assertEqual(p.empty, False)\n                self.assertEqual(p.valid, True)\n\n    def test_linestring(self):\n        \"Testing LineString objects.\"\n        prev = fromstr('POINT(0 0)')\n        for l in self.geometries.linestrings:\n            ls = fromstr(l.wkt)\n            self.assertEqual(ls.geom_type, 'LineString')\n            self.assertEqual(ls.geom_typeid, 1)\n            self.assertEqual(ls.empty, False)\n            self.assertEqual(ls.ring, False)\n            if hasattr(l, 'centroid'):\n                self.assertEqual(l.centroid, ls.centroid.tuple)\n            if hasattr(l, 'tup'):\n                self.assertEqual(l.tup, ls.tuple)\n\n            self.assertEqual(True, ls == fromstr(l.wkt))\n            self.assertEqual(False, ls == prev)\n            self.assertRaises(GEOSIndexError, ls.__getitem__, len(ls))\n            prev = ls\n\n            # Creating a LineString from a tuple, list, and numpy array\n            self.assertEqual(ls, LineString(ls.tuple))  # tuple\n            self.assertEqual(ls, LineString(*ls.tuple)) # as individual arguments\n            self.assertEqual(ls, LineString([list(tup) for tup in ls.tuple])) # as list\n            self.assertEqual(ls.wkt, LineString(*tuple(Point(tup) for tup in ls.tuple)).wkt) # Point individual arguments\n            if numpy: self.assertEqual(ls, LineString(numpy.array(ls.tuple))) # as numpy array\n\n    def test_multilinestring(self):\n        \"Testing MultiLineString objects.\"\n        prev = fromstr('POINT(0 0)')\n        for l in self.geometries.multilinestrings:\n            ml = fromstr(l.wkt)\n            self.assertEqual(ml.geom_type, 'MultiLineString')\n            self.assertEqual(ml.geom_typeid, 5)\n\n            self.assertAlmostEqual(l.centroid[0], ml.centroid.x, 9)\n            self.assertAlmostEqual(l.centroid[1], ml.centroid.y, 9)\n\n            self.assertEqual(True, ml == fromstr(l.wkt))\n            self.assertEqual(False, ml == prev)\n            prev = ml\n\n            for ls in ml:\n                self.assertEqual(ls.geom_type, 'LineString')\n                self.assertEqual(ls.geom_typeid, 1)\n                self.assertEqual(ls.empty, False)\n\n            self.assertRaises(GEOSIndexError, ml.__getitem__, len(ml))\n            self.assertEqual(ml.wkt, MultiLineString(*tuple(s.clone() for s in ml)).wkt)\n            self.assertEqual(ml, MultiLineString(*tuple(LineString(s.tuple) for s in ml)))\n\n    def test_linearring(self):\n        \"Testing LinearRing objects.\"\n        for rr in self.geometries.linearrings:\n            lr = fromstr(rr.wkt)\n            self.assertEqual(lr.geom_type, 'LinearRing')\n            self.assertEqual(lr.geom_typeid, 2)\n            self.assertEqual(rr.n_p, len(lr))\n            self.assertEqual(True, lr.valid)\n            self.assertEqual(False, lr.empty)\n\n            # Creating a LinearRing from a tuple, list, and numpy array\n            self.assertEqual(lr, LinearRing(lr.tuple))\n            self.assertEqual(lr, LinearRing(*lr.tuple))\n            self.assertEqual(lr, LinearRing([list(tup) for tup in lr.tuple]))\n            if numpy: self.assertEqual(lr, LinearRing(numpy.array(lr.tuple)))\n\n    def test_polygons_from_bbox(self):\n        \"Testing `from_bbox` class method.\"\n        bbox = (-180, -90, 180, 90)\n        p = Polygon.from_bbox(bbox)\n        self.assertEqual(bbox, p.extent)\n\n        # Testing numerical precision\n        x = 3.14159265358979323\n        bbox = (0, 0, 1, x)\n        p = Polygon.from_bbox(bbox)\n        y = p.extent[-1]\n        self.assertEqual(format(x, '.13f'), format(y, '.13f'))\n\n    def test_polygons(self):\n        \"Testing Polygon objects.\"\n\n        prev = fromstr('POINT(0 0)')\n        for p in self.geometries.polygons:\n            # Creating the Polygon, testing its properties.\n            poly = fromstr(p.wkt)\n            self.assertEqual(poly.geom_type, 'Polygon')\n            self.assertEqual(poly.geom_typeid, 3)\n            self.assertEqual(poly.empty, False)\n            self.assertEqual(poly.ring, False)\n            self.assertEqual(p.n_i, poly.num_interior_rings)\n            self.assertEqual(p.n_i + 1, len(poly)) # Testing __len__\n            self.assertEqual(p.n_p, poly.num_points)\n\n            # Area & Centroid\n            self.assertAlmostEqual(p.area, poly.area, 9)\n            self.assertAlmostEqual(p.centroid[0], poly.centroid.tuple[0], 9)\n            self.assertAlmostEqual(p.centroid[1], poly.centroid.tuple[1], 9)\n\n            # Testing the geometry equivalence\n            self.assertEqual(True, poly == fromstr(p.wkt))\n            self.assertEqual(False, poly == prev) # Should not be equal to previous geometry\n            self.assertEqual(True, poly != prev)\n\n            # Testing the exterior ring\n            ring = poly.exterior_ring\n            self.assertEqual(ring.geom_type, 'LinearRing')\n            self.assertEqual(ring.geom_typeid, 2)\n            if p.ext_ring_cs:\n                self.assertEqual(p.ext_ring_cs, ring.tuple)\n                self.assertEqual(p.ext_ring_cs, poly[0].tuple) # Testing __getitem__\n\n            # Testing __getitem__ and __setitem__ on invalid indices\n            self.assertRaises(GEOSIndexError, poly.__getitem__, len(poly))\n            self.assertRaises(GEOSIndexError, poly.__setitem__, len(poly), False)\n            self.assertRaises(GEOSIndexError, poly.__getitem__, -1 * len(poly) - 1)\n\n            # Testing __iter__\n            for r in poly:\n                self.assertEqual(r.geom_type, 'LinearRing')\n                self.assertEqual(r.geom_typeid, 2)\n\n            # Testing polygon construction.\n            self.assertRaises(TypeError, Polygon, 0, [1, 2, 3])\n            self.assertRaises(TypeError, Polygon, 'foo')\n\n            # Polygon(shell, (hole1, ... holeN))\n            rings = tuple(r for r in poly)\n            self.assertEqual(poly, Polygon(rings[0], rings[1:]))\n\n            # Polygon(shell_tuple, hole_tuple1, ... , hole_tupleN)\n            ring_tuples = tuple(r.tuple for r in poly)\n            self.assertEqual(poly, Polygon(*ring_tuples))\n\n            # Constructing with tuples of LinearRings.\n            self.assertEqual(poly.wkt, Polygon(*tuple(r for r in poly)).wkt)\n            self.assertEqual(poly.wkt, Polygon(*tuple(LinearRing(r.tuple) for r in poly)).wkt)\n\n    def test_polygon_comparison(self):\n        p1 = Polygon(((0, 0), (0, 1), (1, 1), (1, 0), (0, 0)))\n        p2 = Polygon(((0, 0), (0, 1), (1, 0), (0, 0)))\n        self.assertTrue(p1 > p2)\n        self.assertFalse(p1 < p2)\n        self.assertFalse(p2 > p1)\n        self.assertTrue(p2 < p1)\n\n        p3 = Polygon(((0, 0), (0, 1), (1, 1), (2, 0), (0, 0)))\n        p4 = Polygon(((0, 0), (0, 1), (2, 2), (1, 0), (0, 0)))\n        self.assertFalse(p4 < p3)\n        self.assertTrue(p3 < p4)\n        self.assertTrue(p4 > p3)\n        self.assertFalse(p3 > p4)\n\n    def test_multipolygons(self):\n        \"Testing MultiPolygon objects.\"\n        prev = fromstr('POINT (0 0)')\n        for mp in self.geometries.multipolygons:\n            mpoly = fromstr(mp.wkt)\n            self.assertEqual(mpoly.geom_type, 'MultiPolygon')\n            self.assertEqual(mpoly.geom_typeid, 6)\n            self.assertEqual(mp.valid, mpoly.valid)\n\n            if mp.valid:\n                self.assertEqual(mp.num_geom, mpoly.num_geom)\n                self.assertEqual(mp.n_p, mpoly.num_coords)\n                self.assertEqual(mp.num_geom, len(mpoly))\n                self.assertRaises(GEOSIndexError, mpoly.__getitem__, len(mpoly))\n                for p in mpoly:\n                    self.assertEqual(p.geom_type, 'Polygon')\n                    self.assertEqual(p.geom_typeid, 3)\n                    self.assertEqual(p.valid, True)\n                self.assertEqual(mpoly.wkt, MultiPolygon(*tuple(poly.clone() for poly in mpoly)).wkt)\n\n    def test_memory_hijinks(self):\n        \"Testing Geometry __del__() on rings and polygons.\"\n        #### Memory issues with rings and polygons\n\n        # These tests are needed to ensure sanity with writable geometries.\n\n        # Getting a polygon with interior rings, and pulling out the interior rings\n        poly = fromstr(self.geometries.polygons[1].wkt)\n        ring1 = poly[0]\n        ring2 = poly[1]\n\n        # These deletes should be 'harmless' since they are done on child geometries\n        del ring1\n        del ring2\n        ring1 = poly[0]\n        ring2 = poly[1]\n\n        # Deleting the polygon\n        del poly\n\n        # Access to these rings is OK since they are clones.\n        s1, s2 = str(ring1), str(ring2)\n\n    def test_coord_seq(self):\n        \"Testing Coordinate Sequence objects.\"\n        for p in self.geometries.polygons:\n            if p.ext_ring_cs:\n                # Constructing the polygon and getting the coordinate sequence\n                poly = fromstr(p.wkt)\n                cs = poly.exterior_ring.coord_seq\n\n                self.assertEqual(p.ext_ring_cs, cs.tuple) # done in the Polygon test too.\n                self.assertEqual(len(p.ext_ring_cs), len(cs)) # Making sure __len__ works\n\n                # Checks __getitem__ and __setitem__\n                for i in xrange(len(p.ext_ring_cs)):\n                    c1 = p.ext_ring_cs[i] # Expected value\n                    c2 = cs[i] # Value from coordseq\n                    self.assertEqual(c1, c2)\n\n                    # Constructing the test value to set the coordinate sequence with\n                    if len(c1) == 2: tset = (5, 23)\n                    else: tset = (5, 23, 8)\n                    cs[i] = tset\n\n                    # Making sure every set point matches what we expect\n                    for j in range(len(tset)):\n                        cs[i] = tset\n                        self.assertEqual(tset[j], cs[i][j])\n\n    def test_relate_pattern(self):\n        \"Testing relate() and relate_pattern().\"\n        g = fromstr('POINT (0 0)')\n        self.assertRaises(GEOSException, g.relate_pattern, 0, 'invalid pattern, yo')\n        for rg in self.geometries.relate_geoms:\n            a = fromstr(rg.wkt_a)\n            b = fromstr(rg.wkt_b)\n            self.assertEqual(rg.result, a.relate_pattern(b, rg.pattern))\n            self.assertEqual(rg.pattern, a.relate(b))\n\n    def test_intersection(self):\n        \"Testing intersects() and intersection().\"\n        for i in xrange(len(self.geometries.topology_geoms)):\n            a = fromstr(self.geometries.topology_geoms[i].wkt_a)\n            b = fromstr(self.geometries.topology_geoms[i].wkt_b)\n            i1 = fromstr(self.geometries.intersect_geoms[i].wkt)\n            self.assertEqual(True, a.intersects(b))\n            i2 = a.intersection(b)\n            self.assertEqual(i1, i2)\n            self.assertEqual(i1, a & b) # __and__ is intersection operator\n            a &= b # testing __iand__\n            self.assertEqual(i1, a)\n\n    def test_union(self):\n        \"Testing union().\"\n        for i in xrange(len(self.geometries.topology_geoms)):\n            a = fromstr(self.geometries.topology_geoms[i].wkt_a)\n            b = fromstr(self.geometries.topology_geoms[i].wkt_b)\n            u1 = fromstr(self.geometries.union_geoms[i].wkt)\n            u2 = a.union(b)\n            self.assertEqual(u1, u2)\n            self.assertEqual(u1, a | b) # __or__ is union operator\n            a |= b # testing __ior__\n            self.assertEqual(u1, a)\n\n    def test_difference(self):\n        \"Testing difference().\"\n        for i in xrange(len(self.geometries.topology_geoms)):\n            a = fromstr(self.geometries.topology_geoms[i].wkt_a)\n            b = fromstr(self.geometries.topology_geoms[i].wkt_b)\n            d1 = fromstr(self.geometries.diff_geoms[i].wkt)\n            d2 = a.difference(b)\n            self.assertEqual(d1, d2)\n            self.assertEqual(d1, a - b) # __sub__ is difference operator\n            a -= b # testing __isub__\n            self.assertEqual(d1, a)\n\n    def test_symdifference(self):\n        \"Testing sym_difference().\"\n        for i in xrange(len(self.geometries.topology_geoms)):\n            a = fromstr(self.geometries.topology_geoms[i].wkt_a)\n            b = fromstr(self.geometries.topology_geoms[i].wkt_b)\n            d1 = fromstr(self.geometries.sdiff_geoms[i].wkt)\n            d2 = a.sym_difference(b)\n            self.assertEqual(d1, d2)\n            self.assertEqual(d1, a ^ b) # __xor__ is symmetric difference operator\n            a ^= b # testing __ixor__\n            self.assertEqual(d1, a)\n\n    def test_buffer(self):\n        \"Testing buffer().\"\n        for bg in self.geometries.buffer_geoms:\n            g = fromstr(bg.wkt)\n\n            # The buffer we expect\n            exp_buf = fromstr(bg.buffer_wkt)\n            quadsegs = bg.quadsegs\n            width = bg.width\n\n            # Can't use a floating-point for the number of quadsegs.\n            self.assertRaises(ctypes.ArgumentError, g.buffer, width, float(quadsegs))\n\n            # Constructing our buffer\n            buf = g.buffer(width, quadsegs)\n            self.assertEqual(exp_buf.num_coords, buf.num_coords)\n            self.assertEqual(len(exp_buf), len(buf))\n\n            # Now assuring that each point in the buffer is almost equal\n            for j in xrange(len(exp_buf)):\n                exp_ring = exp_buf[j]\n                buf_ring = buf[j]\n                self.assertEqual(len(exp_ring), len(buf_ring))\n                for k in xrange(len(exp_ring)):\n                    # Asserting the X, Y of each point are almost equal (due to floating point imprecision)\n                    self.assertAlmostEqual(exp_ring[k][0], buf_ring[k][0], 9)\n                    self.assertAlmostEqual(exp_ring[k][1], buf_ring[k][1], 9)\n\n    def test_srid(self):\n        \"Testing the SRID property and keyword.\"\n        # Testing SRID keyword on Point\n        pnt = Point(5, 23, srid=4326)\n        self.assertEqual(4326, pnt.srid)\n        pnt.srid = 3084\n        self.assertEqual(3084, pnt.srid)\n        self.assertRaises(ctypes.ArgumentError, pnt.set_srid, '4326')\n\n        # Testing SRID keyword on fromstr(), and on Polygon rings.\n        poly = fromstr(self.geometries.polygons[1].wkt, srid=4269)\n        self.assertEqual(4269, poly.srid)\n        for ring in poly: self.assertEqual(4269, ring.srid)\n        poly.srid = 4326\n        self.assertEqual(4326, poly.shell.srid)\n\n        # Testing SRID keyword on GeometryCollection\n        gc = GeometryCollection(Point(5, 23), LineString((0, 0), (1.5, 1.5), (3, 3)), srid=32021)\n        self.assertEqual(32021, gc.srid)\n        for i in range(len(gc)): self.assertEqual(32021, gc[i].srid)\n\n        # GEOS may get the SRID from HEXEWKB\n        # 'POINT(5 23)' at SRID=4326 in hex form -- obtained from PostGIS\n        # using `SELECT GeomFromText('POINT (5 23)', 4326);`.\n        hex = '0101000020E610000000000000000014400000000000003740'\n        p1 = fromstr(hex)\n        self.assertEqual(4326, p1.srid)\n\n        # In GEOS 3.0.0rc1-4  when the EWKB and/or HEXEWKB is exported,\n        # the SRID information is lost and set to -1 -- this is not a\n        # problem on the 3.0.0 version (another reason to upgrade).\n        exp_srid = self.null_srid\n\n        p2 = fromstr(p1.hex)\n        self.assertEqual(exp_srid, p2.srid)\n        p3 = fromstr(p1.hex, srid=-1) # -1 is intended.\n        self.assertEqual(-1, p3.srid)\n\n    def test_mutable_geometries(self):\n        \"Testing the mutability of Polygons and Geometry Collections.\"\n        ### Testing the mutability of Polygons ###\n        for p in self.geometries.polygons:\n            poly = fromstr(p.wkt)\n\n            # Should only be able to use __setitem__ with LinearRing geometries.\n            self.assertRaises(TypeError, poly.__setitem__, 0, LineString((1, 1), (2, 2)))\n\n            # Constructing the new shell by adding 500 to every point in the old shell.\n            shell_tup = poly.shell.tuple\n            new_coords = []\n            for point in shell_tup: new_coords.append((point[0] + 500., point[1] + 500.))\n            new_shell = LinearRing(*tuple(new_coords))\n\n            # Assigning polygon's exterior ring w/the new shell\n            poly.exterior_ring = new_shell\n            s = str(new_shell) # new shell is still accessible\n            self.assertEqual(poly.exterior_ring, new_shell)\n            self.assertEqual(poly[0], new_shell)\n\n        ### Testing the mutability of Geometry Collections\n        for tg in self.geometries.multipoints:\n            mp = fromstr(tg.wkt)\n            for i in range(len(mp)):\n                # Creating a random point.\n                pnt = mp[i]\n                new = Point(random.randint(21, 100), random.randint(21, 100))\n                # Testing the assignment\n                mp[i] = new\n                s = str(new) # what was used for the assignment is still accessible\n                self.assertEqual(mp[i], new)\n                self.assertEqual(mp[i].wkt, new.wkt)\n                self.assertNotEqual(pnt, mp[i])\n\n        # MultiPolygons involve much more memory management because each\n        # Polygon w/in the collection has its own rings.\n        for tg in self.geometries.multipolygons:\n            mpoly = fromstr(tg.wkt)\n            for i in xrange(len(mpoly)):\n                poly = mpoly[i]\n                old_poly = mpoly[i]\n                # Offsetting the each ring in the polygon by 500.\n                for j in xrange(len(poly)):\n                    r = poly[j]\n                    for k in xrange(len(r)): r[k] = (r[k][0] + 500., r[k][1] + 500.)\n                    poly[j] = r\n\n                self.assertNotEqual(mpoly[i], poly)\n                # Testing the assignment\n                mpoly[i] = poly\n                s = str(poly) # Still accessible\n                self.assertEqual(mpoly[i], poly)\n                self.assertNotEqual(mpoly[i], old_poly)\n\n        # Extreme (!!) __setitem__ -- no longer works, have to detect\n        # in the first object that __setitem__ is called in the subsequent\n        # objects -- maybe mpoly[0, 0, 0] = (3.14, 2.71)?\n        #mpoly[0][0][0] = (3.14, 2.71)\n        #self.assertEqual((3.14, 2.71), mpoly[0][0][0])\n        # Doing it more slowly..\n        #self.assertEqual((3.14, 2.71), mpoly[0].shell[0])\n        #del mpoly\n\n    def test_threed(self):\n        \"Testing three-dimensional geometries.\"\n        # Testing a 3D Point\n        pnt = Point(2, 3, 8)\n        self.assertEqual((2.,3.,8.), pnt.coords)\n        self.assertRaises(TypeError, pnt.set_coords, (1.,2.))\n        pnt.coords = (1.,2.,3.)\n        self.assertEqual((1.,2.,3.), pnt.coords)\n\n        # Testing a 3D LineString\n        ls = LineString((2., 3., 8.), (50., 250., -117.))\n        self.assertEqual(((2.,3.,8.), (50.,250.,-117.)), ls.tuple)\n        self.assertRaises(TypeError, ls.__setitem__, 0, (1.,2.))\n        ls[0] = (1.,2.,3.)\n        self.assertEqual((1.,2.,3.), ls[0])\n\n    def test_distance(self):\n        \"Testing the distance() function.\"\n        # Distance to self should be 0.\n        pnt = Point(0, 0)\n        self.assertEqual(0.0, pnt.distance(Point(0, 0)))\n\n        # Distance should be 1\n        self.assertEqual(1.0, pnt.distance(Point(0, 1)))\n\n        # Distance should be ~ sqrt(2)\n        self.assertAlmostEqual(1.41421356237, pnt.distance(Point(1, 1)), 11)\n\n        # Distances are from the closest vertex in each geometry --\n        #  should be 3 (distance from (2, 2) to (5, 2)).\n        ls1 = LineString((0, 0), (1, 1), (2, 2))\n        ls2 = LineString((5, 2), (6, 1), (7, 0))\n        self.assertEqual(3, ls1.distance(ls2))\n\n    def test_length(self):\n        \"Testing the length property.\"\n        # Points have 0 length.\n        pnt = Point(0, 0)\n        self.assertEqual(0.0, pnt.length)\n\n        # Should be ~ sqrt(2)\n        ls = LineString((0, 0), (1, 1))\n        self.assertAlmostEqual(1.41421356237, ls.length, 11)\n\n        # Should be circumfrence of Polygon\n        poly = Polygon(LinearRing((0, 0), (0, 1), (1, 1), (1, 0), (0, 0)))\n        self.assertEqual(4.0, poly.length)\n\n        # Should be sum of each element's length in collection.\n        mpoly = MultiPolygon(poly.clone(), poly)\n        self.assertEqual(8.0, mpoly.length)\n\n    def test_emptyCollections(self):\n        \"Testing empty geometries and collections.\"\n        gc1 = GeometryCollection([])\n        gc2 = fromstr('GEOMETRYCOLLECTION EMPTY')\n        pnt = fromstr('POINT EMPTY')\n        ls = fromstr('LINESTRING EMPTY')\n        poly = fromstr('POLYGON EMPTY')\n        mls = fromstr('MULTILINESTRING EMPTY')\n        mpoly1 = fromstr('MULTIPOLYGON EMPTY')\n        mpoly2 = MultiPolygon(())\n\n        for g in [gc1, gc2, pnt, ls, poly, mls, mpoly1, mpoly2]:\n            self.assertEqual(True, g.empty)\n\n            # Testing len() and num_geom.\n            if isinstance(g, Polygon):\n                self.assertEqual(1, len(g)) # Has one empty linear ring\n                self.assertEqual(1, g.num_geom)\n                self.assertEqual(0, len(g[0]))\n            elif isinstance(g, (Point, LineString)):\n                self.assertEqual(1, g.num_geom)\n                self.assertEqual(0, len(g))\n            else:\n                self.assertEqual(0, g.num_geom)\n                self.assertEqual(0, len(g))\n\n            # Testing __getitem__ (doesn't work on Point or Polygon)\n            if isinstance(g, Point):\n                self.assertRaises(GEOSIndexError, g.get_x)\n            elif isinstance(g, Polygon):\n                lr = g.shell\n                self.assertEqual('LINEARRING EMPTY', lr.wkt)\n                self.assertEqual(0, len(lr))\n                self.assertEqual(True, lr.empty)\n                self.assertRaises(GEOSIndexError, lr.__getitem__, 0)\n            else:\n                self.assertRaises(GEOSIndexError, g.__getitem__, 0)\n\n    def test_collections_of_collections(self):\n        \"Testing GeometryCollection handling of other collections.\"\n        # Creating a GeometryCollection WKT string composed of other\n        # collections and polygons.\n        coll = [mp.wkt for mp in self.geometries.multipolygons if mp.valid]\n        coll.extend([mls.wkt for mls in self.geometries.multilinestrings])\n        coll.extend([p.wkt for p in self.geometries.polygons])\n        coll.extend([mp.wkt for mp in self.geometries.multipoints])\n        gc_wkt = 'GEOMETRYCOLLECTION(%s)' % ','.join(coll)\n\n        # Should construct ok from WKT\n        gc1 = GEOSGeometry(gc_wkt)\n\n        # Should also construct ok from individual geometry arguments.\n        gc2 = GeometryCollection(*tuple(g for g in gc1))\n\n        # And, they should be equal.\n        self.assertEqual(gc1, gc2)\n\n    @unittest.skipUnless(gdal.HAS_GDAL, \"gdal is required\")\n    def test_gdal(self):\n        \"Testing `ogr` and `srs` properties.\"\n        g1 = fromstr('POINT(5 23)')\n        self.assertIsInstance(g1.ogr, gdal.OGRGeometry)\n        self.assertIsNone(g1.srs)\n\n        if GEOS_PREPARE:\n            g1_3d = fromstr('POINT(5 23 8)')\n            self.assertIsInstance(g1_3d.ogr, gdal.OGRGeometry)\n            self.assertEqual(g1_3d.ogr.z, 8)\n\n        g2 = fromstr('LINESTRING(0 0, 5 5, 23 23)', srid=4326)\n        self.assertIsInstance(g2.ogr, gdal.OGRGeometry)\n        self.assertIsInstance(g2.srs, gdal.SpatialReference)\n        self.assertEqual(g2.hex, g2.ogr.hex)\n        self.assertEqual('WGS 84', g2.srs.name)\n\n    def test_copy(self):\n        \"Testing use with the Python `copy` module.\"\n        import copy\n        poly = GEOSGeometry('POLYGON((0 0, 0 23, 23 23, 23 0, 0 0), (5 5, 5 10, 10 10, 10 5, 5 5))')\n        cpy1 = copy.copy(poly)\n        cpy2 = copy.deepcopy(poly)\n        self.assertNotEqual(poly._ptr, cpy1._ptr)\n        self.assertNotEqual(poly._ptr, cpy2._ptr)\n\n    @unittest.skipUnless(gdal.HAS_GDAL, \"gdal is required to transform geometries\")\n    def test_transform(self):\n        \"Testing `transform` method.\"\n        orig = GEOSGeometry('POINT (-104.609 38.255)', 4326)\n        trans = GEOSGeometry('POINT (992385.4472045 481455.4944650)', 2774)\n\n        # Using a srid, a SpatialReference object, and a CoordTransform object\n        # for transformations.\n        t1, t2, t3 = orig.clone(), orig.clone(), orig.clone()\n        t1.transform(trans.srid)\n        t2.transform(gdal.SpatialReference('EPSG:2774'))\n        ct = gdal.CoordTransform(gdal.SpatialReference('WGS84'), gdal.SpatialReference(2774))\n        t3.transform(ct)\n\n        # Testing use of the `clone` keyword.\n        k1 = orig.clone()\n        k2 = k1.transform(trans.srid, clone=True)\n        self.assertEqual(k1, orig)\n        self.assertNotEqual(k1, k2)\n\n        prec = 3\n        for p in (t1, t2, t3, k2):\n            self.assertAlmostEqual(trans.x, p.x, prec)\n            self.assertAlmostEqual(trans.y, p.y, prec)\n\n    @unittest.skipUnless(gdal.HAS_GDAL, \"gdal is required to transform geometries\")\n    def test_transform_3d(self):\n        p3d = GEOSGeometry('POINT (5 23 100)', 4326)\n        p3d.transform(2774)\n        if GEOS_PREPARE:\n            self.assertEqual(p3d.z, 100)\n        else:\n            self.assertIsNone(p3d.z)\n\n    def test_transform_noop(self):\n        \"\"\" Testing `transform` method (SRID match) \"\"\"\n        # transform() should no-op if source & dest SRIDs match,\n        # regardless of whether GDAL is available.\n        if gdal.HAS_GDAL:\n            g = GEOSGeometry('POINT (-104.609 38.255)', 4326)\n            gt = g.tuple\n            g.transform(4326)\n            self.assertEqual(g.tuple, gt)\n            self.assertEqual(g.srid, 4326)\n\n            g = GEOSGeometry('POINT (-104.609 38.255)', 4326)\n            g1 = g.transform(4326, clone=True)\n            self.assertEqual(g1.tuple, g.tuple)\n            self.assertEqual(g1.srid, 4326)\n            self.assertTrue(g1 is not g, \"Clone didn't happen\")\n\n        old_has_gdal = gdal.HAS_GDAL\n        try:\n            gdal.HAS_GDAL = False\n\n            g = GEOSGeometry('POINT (-104.609 38.255)', 4326)\n            gt = g.tuple\n            g.transform(4326)\n            self.assertEqual(g.tuple, gt)\n            self.assertEqual(g.srid, 4326)\n\n            g = GEOSGeometry('POINT (-104.609 38.255)', 4326)\n            g1 = g.transform(4326, clone=True)\n            self.assertEqual(g1.tuple, g.tuple)\n            self.assertEqual(g1.srid, 4326)\n            self.assertTrue(g1 is not g, \"Clone didn't happen\")\n        finally:\n            gdal.HAS_GDAL = old_has_gdal\n\n    def test_transform_nosrid(self):\n        \"\"\" Testing `transform` method (no SRID or negative SRID) \"\"\"\n\n        g = GEOSGeometry('POINT (-104.609 38.255)', srid=None)\n        self.assertRaises(GEOSException, g.transform, 2774)\n\n        g = GEOSGeometry('POINT (-104.609 38.255)', srid=None)\n        self.assertRaises(GEOSException, g.transform, 2774, clone=True)\n\n        g = GEOSGeometry('POINT (-104.609 38.255)', srid=-1)\n        self.assertRaises(GEOSException, g.transform, 2774)\n\n        g = GEOSGeometry('POINT (-104.609 38.255)', srid=-1)\n        self.assertRaises(GEOSException, g.transform, 2774, clone=True)\n\n    def test_transform_nogdal(self):\n        \"\"\" Testing `transform` method (GDAL not available) \"\"\"\n        old_has_gdal = gdal.HAS_GDAL\n        try:\n            gdal.HAS_GDAL = False\n\n            g = GEOSGeometry('POINT (-104.609 38.255)', 4326)\n            self.assertRaises(GEOSException, g.transform, 2774)\n\n            g = GEOSGeometry('POINT (-104.609 38.255)', 4326)\n            self.assertRaises(GEOSException, g.transform, 2774, clone=True)\n        finally:\n            gdal.HAS_GDAL = old_has_gdal\n\n    def test_extent(self):\n        \"Testing `extent` method.\"\n        # The xmin, ymin, xmax, ymax of the MultiPoint should be returned.\n        mp = MultiPoint(Point(5, 23), Point(0, 0), Point(10, 50))\n        self.assertEqual((0.0, 0.0, 10.0, 50.0), mp.extent)\n        pnt = Point(5.23, 17.8)\n        # Extent of points is just the point itself repeated.\n        self.assertEqual((5.23, 17.8, 5.23, 17.8), pnt.extent)\n        # Testing on the 'real world' Polygon.\n        poly = fromstr(self.geometries.polygons[3].wkt)\n        ring = poly.shell\n        x, y = ring.x, ring.y\n        xmin, ymin = min(x), min(y)\n        xmax, ymax = max(x), max(y)\n        self.assertEqual((xmin, ymin, xmax, ymax), poly.extent)\n\n    def test_pickle(self):\n        \"Testing pickling and unpickling support.\"\n        # Using both pickle and cPickle -- just 'cause.\n        from django.utils.six.moves import cPickle\n        import pickle\n\n        # Creating a list of test geometries for pickling,\n        # and setting the SRID on some of them.\n        def get_geoms(lst, srid=None):\n            return [GEOSGeometry(tg.wkt, srid) for tg in lst]\n        tgeoms = get_geoms(self.geometries.points)\n        tgeoms.extend(get_geoms(self.geometries.multilinestrings, 4326))\n        tgeoms.extend(get_geoms(self.geometries.polygons, 3084))\n        tgeoms.extend(get_geoms(self.geometries.multipolygons, 900913))\n\n        # The SRID won't be exported in GEOS 3.0 release candidates.\n        no_srid = self.null_srid == -1\n        for geom in tgeoms:\n            s1, s2 = cPickle.dumps(geom), pickle.dumps(geom)\n            g1, g2 = cPickle.loads(s1), pickle.loads(s2)\n            for tmpg in (g1, g2):\n                self.assertEqual(geom, tmpg)\n                if not no_srid: self.assertEqual(geom.srid, tmpg.srid)\n\n    @unittest.skipUnless(GEOS_PREPARE, \"geos >= 3.1.0 is required\")\n    def test_prepared(self):\n        \"Testing PreparedGeometry support.\"\n        # Creating a simple multipolygon and getting a prepared version.\n        mpoly = GEOSGeometry('MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0)),((5 5,5 10,10 10,10 5,5 5)))')\n        prep = mpoly.prepared\n\n        # A set of test points.\n        pnts = [Point(5, 5), Point(7.5, 7.5), Point(2.5, 7.5)]\n        covers = [True, True, False] # No `covers` op for regular GEOS geoms.\n        for pnt, c in zip(pnts, covers):\n            # Results should be the same (but faster)\n            self.assertEqual(mpoly.contains(pnt), prep.contains(pnt))\n            self.assertEqual(mpoly.intersects(pnt), prep.intersects(pnt))\n            self.assertEqual(c, prep.covers(pnt))\n\n    def test_line_merge(self):\n        \"Testing line merge support\"\n        ref_geoms = (fromstr('LINESTRING(1 1, 1 1, 3 3)'),\n                     fromstr('MULTILINESTRING((1 1, 3 3), (3 3, 4 2))'),\n                     )\n        ref_merged = (fromstr('LINESTRING(1 1, 3 3)'),\n                      fromstr('LINESTRING (1 1, 3 3, 4 2)'),\n                      )\n        for geom, merged in zip(ref_geoms, ref_merged):\n            self.assertEqual(merged, geom.merged)\n\n    @unittest.skipUnless(GEOS_PREPARE, \"geos >= 3.1.0 is required\")\n    def test_valid_reason(self):\n        \"Testing IsValidReason support\"\n\n        g = GEOSGeometry(\"POINT(0 0)\")\n        self.assertTrue(g.valid)\n        self.assertIsInstance(g.valid_reason, six.string_types)\n        self.assertEqual(g.valid_reason, \"Valid Geometry\")\n\n        g = GEOSGeometry(\"LINESTRING(0 0, 0 0)\")\n\n        self.assertFalse(g.valid)\n        self.assertIsInstance(g.valid_reason, six.string_types)\n        self.assertTrue(g.valid_reason.startswith(\"Too few points in geometry component\"))\n\n    @unittest.skipUnless(geos_version_info()['version'] >= '3.2.0', \"geos >= 3.2.0 is required\")\n    def test_linearref(self):\n        \"Testing linear referencing\"\n\n        ls = fromstr('LINESTRING(0 0, 0 10, 10 10, 10 0)')\n        mls = fromstr('MULTILINESTRING((0 0, 0 10), (10 0, 10 10))')\n\n        self.assertEqual(ls.project(Point(0, 20)), 10.0)\n        self.assertEqual(ls.project(Point(7, 6)), 24)\n        self.assertEqual(ls.project_normalized(Point(0, 20)), 1.0/3)\n\n        self.assertEqual(ls.interpolate(10), Point(0, 10))\n        self.assertEqual(ls.interpolate(24), Point(10, 6))\n        self.assertEqual(ls.interpolate_normalized(1.0/3), Point(0, 10))\n\n        self.assertEqual(mls.project(Point(0, 20)), 10)\n        self.assertEqual(mls.project(Point(7, 6)), 16)\n\n        self.assertEqual(mls.interpolate(9), Point(0, 9))\n        self.assertEqual(mls.interpolate(17), Point(10, 7))\n\n    def test_geos_version(self):\n        \"\"\"Testing the GEOS version regular expression.\"\"\"\n        from django.contrib.gis.geos.libgeos import version_regex\n        versions = [('3.0.0rc4-CAPI-1.3.3', '3.0.0', '1.3.3'),\n                    ('3.0.0-CAPI-1.4.1', '3.0.0', '1.4.1'),\n                    ('3.4.0dev-CAPI-1.8.0', '3.4.0', '1.8.0'),\n                    ('3.4.0dev-CAPI-1.8.0 r0', '3.4.0', '1.8.0')]\n        for v_init, v_geos, v_capi in versions:\n            m = version_regex.match(v_init)\n            self.assertTrue(m, msg=\"Unable to parse the version string '%s'\" % v_init)\n            self.assertEqual(m.group('version'), v_geos)\n            self.assertEqual(m.group('capi_version'), v_capi)\n\n\ndef suite():\n    s = unittest.TestSuite()\n    s.addTest(unittest.makeSuite(GEOSTest))\n    return s\n\ndef run(verbosity=2):\n    unittest.TextTestRunner(verbosity=verbosity).run(suite())\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/geos/tests/test_geos_mutation.py",
    "content": "# Copyright (c) 2008-2009 Aryeh Leib Taurog, all rights reserved.\n# Modified from original contribution by Aryeh Leib Taurog, which was\n# released under the New BSD license.\n\nfrom django.contrib.gis.geos import *\nfrom django.contrib.gis.geos.error import GEOSIndexError\nfrom django.utils import unittest\n\ndef getItem(o,i): return o[i]\ndef delItem(o,i): del o[i]\ndef setItem(o,i,v): o[i] = v\n\ndef api_get_distance(x): return x.distance(Point(-200,-200))\ndef api_get_buffer(x): return x.buffer(10)\ndef api_get_geom_typeid(x): return x.geom_typeid\ndef api_get_num_coords(x): return x.num_coords\ndef api_get_centroid(x): return x.centroid\ndef api_get_empty(x): return x.empty\ndef api_get_valid(x): return x.valid\ndef api_get_simple(x): return x.simple\ndef api_get_ring(x): return x.ring\ndef api_get_boundary(x): return x.boundary\ndef api_get_convex_hull(x): return x.convex_hull\ndef api_get_extent(x): return x.extent\ndef api_get_area(x): return x.area\ndef api_get_length(x): return x.length\n\ngeos_function_tests =  [ val for name, val in vars().items()\n                        if hasattr(val, '__call__')\n                        and name.startswith('api_get_') ]\n\nclass GEOSMutationTest(unittest.TestCase):\n    \"\"\"\n    Tests Pythonic Mutability of Python GEOS geometry wrappers\n    get/set/delitem on a slice, normal list methods\n    \"\"\"\n\n    def test00_GEOSIndexException(self):\n        'Testing Geometry GEOSIndexError'\n        p = Point(1,2)\n        for i in range(-2,2): p._checkindex(i)\n        self.assertRaises(GEOSIndexError, p._checkindex, 2)\n        self.assertRaises(GEOSIndexError, p._checkindex, -3)\n\n    def test01_PointMutations(self):\n        'Testing Point mutations'\n        for p in (Point(1,2,3), fromstr('POINT (1 2 3)')):\n            self.assertEqual(p._get_single_external(1), 2.0, 'Point _get_single_external')\n\n            # _set_single\n            p._set_single(0,100)\n            self.assertEqual(p.coords, (100.0,2.0,3.0), 'Point _set_single')\n\n            # _set_list\n            p._set_list(2,(50,3141))\n            self.assertEqual(p.coords, (50.0,3141.0), 'Point _set_list')\n\n    def test02_PointExceptions(self):\n        'Testing Point exceptions'\n        self.assertRaises(TypeError, Point, range(1))\n        self.assertRaises(TypeError, Point, range(4))\n\n    def test03_PointApi(self):\n        'Testing Point API'\n        q = Point(4,5,3)\n        for p in (Point(1,2,3), fromstr('POINT (1 2 3)')):\n            p[0:2] = [4,5]\n            for f in geos_function_tests:\n                self.assertEqual(f(q), f(p), 'Point ' + f.__name__)\n\n    def test04_LineStringMutations(self):\n        'Testing LineString mutations'\n        for ls in (LineString((1,0),(4,1),(6,-1)),\n                    fromstr('LINESTRING (1 0,4 1,6 -1)')):\n            self.assertEqual(ls._get_single_external(1), (4.0,1.0), 'LineString _get_single_external')\n\n            # _set_single\n            ls._set_single(0,(-50,25))\n            self.assertEqual(ls.coords, ((-50.0,25.0),(4.0,1.0),(6.0,-1.0)), 'LineString _set_single')\n\n            # _set_list\n            ls._set_list(2, ((-50.0,25.0),(6.0,-1.0)))\n            self.assertEqual(ls.coords, ((-50.0,25.0),(6.0,-1.0)), 'LineString _set_list')\n\n            lsa = LineString(ls.coords)\n            for f in geos_function_tests:\n                self.assertEqual(f(lsa), f(ls), 'LineString ' + f.__name__)\n\n    def test05_Polygon(self):\n        'Testing Polygon mutations'\n        for pg in (Polygon(((1,0),(4,1),(6,-1),(8,10),(1,0)),\n                            ((5,4),(6,4),(6,3),(5,4))),\n                    fromstr('POLYGON ((1 0,4 1,6 -1,8 10,1 0),(5 4,6 4,6 3,5 4))')):\n            self.assertEqual(pg._get_single_external(0),\n                            LinearRing((1,0),(4,1),(6,-1),(8,10),(1,0)),\n                            'Polygon _get_single_external(0)')\n            self.assertEqual(pg._get_single_external(1),\n                            LinearRing((5,4),(6,4),(6,3),(5,4)),\n                            'Polygon _get_single_external(1)')\n\n            # _set_list\n            pg._set_list(2, (((1,2),(10,0),(12,9),(-1,15),(1,2)),\n                            ((4,2),(5,2),(5,3),(4,2))))\n            self.assertEqual(pg.coords,\n                    (((1.0,2.0),(10.0,0.0),(12.0,9.0),(-1.0,15.0),(1.0,2.0)),\n                        ((4.0,2.0),(5.0,2.0),(5.0,3.0),(4.0,2.0))),\n                    'Polygon _set_list')\n\n            lsa = Polygon(*pg.coords)\n            for f in geos_function_tests:\n                self.assertEqual(f(lsa), f(pg), 'Polygon ' + f.__name__)\n\n    def test06_Collection(self):\n        'Testing Collection mutations'\n        for mp in (MultiPoint(*map(Point,((3,4),(-1,2),(5,-4),(2,8)))),\n                    fromstr('MULTIPOINT (3 4,-1 2,5 -4,2 8)')):\n            self.assertEqual(mp._get_single_external(2), Point(5,-4), 'Collection _get_single_external')\n\n            mp._set_list(3, map(Point,((5,5),(3,-2),(8,1))))\n            self.assertEqual(mp.coords, ((5.0,5.0),(3.0,-2.0),(8.0,1.0)), 'Collection _set_list')\n\n            lsa = MultiPoint(*map(Point,((5,5),(3,-2),(8,1))))\n            for f in geos_function_tests:\n                self.assertEqual(f(lsa), f(mp), 'MultiPoint ' + f.__name__)\n\ndef suite():\n    s = unittest.TestSuite()\n    s.addTest(unittest.makeSuite(GEOSMutationTest))\n    return s\n\ndef run(verbosity=2):\n    unittest.TextTestRunner(verbosity=verbosity).run(suite())\n\nif __name__ == '__main__':\n    run()\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/geos/tests/test_io.py",
    "content": "from __future__ import unicode_literals\n\nimport binascii\nimport unittest\n\nfrom django.contrib.gis import memoryview\nfrom django.contrib.gis.geos import GEOSGeometry, WKTReader, WKTWriter, WKBReader, WKBWriter, geos_version_info\nfrom django.utils import six\n\n\nclass GEOSIOTest(unittest.TestCase):\n\n    def test01_wktreader(self):\n        # Creating a WKTReader instance\n        wkt_r = WKTReader()\n        wkt = 'POINT (5 23)'\n\n        # read() should return a GEOSGeometry\n        ref = GEOSGeometry(wkt)\n        g1 = wkt_r.read(wkt.encode())\n        g2 = wkt_r.read(wkt)\n\n        for geom in (g1, g2):\n            self.assertEqual(ref, geom)\n\n        # Should only accept six.string_types objects.\n        self.assertRaises(TypeError, wkt_r.read, 1)\n        self.assertRaises(TypeError, wkt_r.read, memoryview(b'foo'))\n\n    def test02_wktwriter(self):\n        # Creating a WKTWriter instance, testing its ptr property.\n        wkt_w = WKTWriter()\n        self.assertRaises(TypeError, wkt_w._set_ptr, WKTReader.ptr_type())\n\n        ref = GEOSGeometry('POINT (5 23)')\n        ref_wkt = 'POINT (5.0000000000000000 23.0000000000000000)'\n        self.assertEqual(ref_wkt, wkt_w.write(ref).decode())\n\n    def test03_wkbreader(self):\n        # Creating a WKBReader instance\n        wkb_r = WKBReader()\n\n        hex = b'000000000140140000000000004037000000000000'\n        wkb = memoryview(binascii.a2b_hex(hex))\n        ref = GEOSGeometry(hex)\n\n        # read() should return a GEOSGeometry on either a hex string or\n        # a WKB buffer.\n        g1 = wkb_r.read(wkb)\n        g2 = wkb_r.read(hex)\n        for geom in (g1, g2):\n            self.assertEqual(ref, geom)\n\n        bad_input = (1, 5.23, None, False)\n        for bad_wkb in bad_input:\n            self.assertRaises(TypeError, wkb_r.read, bad_wkb)\n\n    def test04_wkbwriter(self):\n        wkb_w = WKBWriter()\n\n        # Representations of 'POINT (5 23)' in hex -- one normal and\n        # the other with the byte order changed.\n        g = GEOSGeometry('POINT (5 23)')\n        hex1 = b'010100000000000000000014400000000000003740'\n        wkb1 = memoryview(binascii.a2b_hex(hex1))\n        hex2 = b'000000000140140000000000004037000000000000'\n        wkb2 = memoryview(binascii.a2b_hex(hex2))\n\n        self.assertEqual(hex1, wkb_w.write_hex(g))\n        self.assertEqual(wkb1, wkb_w.write(g))\n\n        # Ensuring bad byteorders are not accepted.\n        for bad_byteorder in (-1, 2, 523, 'foo', None):\n            # Equivalent of `wkb_w.byteorder = bad_byteorder`\n            self.assertRaises(ValueError, wkb_w._set_byteorder, bad_byteorder)\n\n        # Setting the byteorder to 0 (for Big Endian)\n        wkb_w.byteorder = 0\n        self.assertEqual(hex2, wkb_w.write_hex(g))\n        self.assertEqual(wkb2, wkb_w.write(g))\n\n        # Back to Little Endian\n        wkb_w.byteorder = 1\n\n        # Now, trying out the 3D and SRID flags.\n        g = GEOSGeometry('POINT (5 23 17)')\n        g.srid = 4326\n\n        hex3d = b'0101000080000000000000144000000000000037400000000000003140'\n        wkb3d = memoryview(binascii.a2b_hex(hex3d))\n        hex3d_srid = b'01010000A0E6100000000000000000144000000000000037400000000000003140'\n        wkb3d_srid = memoryview(binascii.a2b_hex(hex3d_srid))\n\n        # Ensuring bad output dimensions are not accepted\n        for bad_outdim in (-1, 0, 1, 4, 423, 'foo', None):\n            # Equivalent of `wkb_w.outdim = bad_outdim`\n            self.assertRaises(ValueError, wkb_w._set_outdim, bad_outdim)\n\n        # These tests will fail on 3.0.0 because of a bug that was fixed in 3.1:\n        # http://trac.osgeo.org/geos/ticket/216\n        if not geos_version_info()['version'].startswith('3.0.'):\n            # Now setting the output dimensions to be 3\n            wkb_w.outdim = 3\n\n            self.assertEqual(hex3d, wkb_w.write_hex(g))\n            self.assertEqual(wkb3d, wkb_w.write(g))\n\n            # Telling the WKBWriter to include the srid in the representation.\n            wkb_w.srid = True\n            self.assertEqual(hex3d_srid, wkb_w.write_hex(g))\n            self.assertEqual(wkb3d_srid, wkb_w.write(g))\n\ndef suite():\n    s = unittest.TestSuite()\n    s.addTest(unittest.makeSuite(GEOSIOTest))\n    return s\n\ndef run(verbosity=2):\n    unittest.TextTestRunner(verbosity=verbosity).run(suite())\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/geos/tests/test_mutable_list.py",
    "content": "# Copyright (c) 2008-2009 Aryeh Leib Taurog, http://www.aryehleib.com\n# All rights reserved.\n#\n# Modified from original contribution by Aryeh Leib Taurog, which was\n# released under the New BSD license.\nfrom django.contrib.gis.geos.mutable_list import ListMixin\nfrom django.utils import six\nfrom django.utils import unittest\n\n\nclass UserListA(ListMixin):\n    _mytype = tuple\n    def __init__(self, i_list, *args, **kwargs):\n        self._list = self._mytype(i_list)\n        super(UserListA, self).__init__(*args, **kwargs)\n\n    def __len__(self):  return len(self._list)\n\n    def __str__(self):  return str(self._list)\n\n    def __repr__(self): return repr(self._list)\n\n    def _set_list(self, length, items):\n        # this would work:\n        # self._list = self._mytype(items)\n        # but then we wouldn't be testing length parameter\n        itemList = ['x'] * length\n        for i, v in enumerate(items):\n            itemList[i] = v\n\n        self._list = self._mytype(itemList)\n\n    def _get_single_external(self, index):\n        return self._list[index]\n\nclass UserListB(UserListA):\n    _mytype = list\n\n    def _set_single(self, index, value):\n        self._list[index] = value\n\ndef nextRange(length):\n    nextRange.start += 100\n    return range(nextRange.start, nextRange.start + length)\n\nnextRange.start = 0\n\nclass ListMixinTest(unittest.TestCase):\n    \"\"\"\n    Tests base class ListMixin by comparing a list clone which is\n    a ListMixin subclass with a real Python list.\n    \"\"\"\n    limit = 3\n    listType = UserListA\n\n    def lists_of_len(self, length=None):\n        if length is None: length = self.limit\n        pl = list(range(length))\n        return pl, self.listType(pl)\n\n    def limits_plus(self, b):\n        return range(-self.limit - b, self.limit + b)\n\n    def step_range(self):\n        return list(range(-1 - self.limit, 0)) + list(range(1, 1 + self.limit))\n\n    def test01_getslice(self):\n        'Slice retrieval'\n        pl, ul = self.lists_of_len()\n        for i in self.limits_plus(1):\n            self.assertEqual(pl[i:], ul[i:], 'slice [%d:]' % (i))\n            self.assertEqual(pl[:i], ul[:i], 'slice [:%d]' % (i))\n\n            for j in self.limits_plus(1):\n                self.assertEqual(pl[i:j], ul[i:j], 'slice [%d:%d]' % (i,j))\n                for k in self.step_range():\n                    self.assertEqual(pl[i:j:k], ul[i:j:k], 'slice [%d:%d:%d]' % (i,j,k))\n\n            for k in self.step_range():\n                self.assertEqual(pl[i::k], ul[i::k], 'slice [%d::%d]' % (i,k))\n                self.assertEqual(pl[:i:k], ul[:i:k], 'slice [:%d:%d]' % (i,k))\n\n        for k in self.step_range():\n            self.assertEqual(pl[::k], ul[::k], 'slice [::%d]' % (k))\n\n    def test02_setslice(self):\n        'Slice assignment'\n        def setfcn(x,i,j,k,L): x[i:j:k] = range(L)\n        pl, ul = self.lists_of_len()\n        for slen in range(self.limit + 1):\n            ssl = nextRange(slen)\n            ul[:] = ssl\n            pl[:] = ssl\n            self.assertEqual(pl, ul[:], 'set slice [:]')\n\n            for i in self.limits_plus(1):\n                ssl = nextRange(slen)\n                ul[i:] = ssl\n                pl[i:] = ssl\n                self.assertEqual(pl, ul[:], 'set slice [%d:]' % (i))\n\n                ssl = nextRange(slen)\n                ul[:i] = ssl\n                pl[:i] = ssl\n                self.assertEqual(pl, ul[:], 'set slice [:%d]' % (i))\n\n                for j in self.limits_plus(1):\n                    ssl = nextRange(slen)\n                    ul[i:j] = ssl\n                    pl[i:j] = ssl\n                    self.assertEqual(pl, ul[:], 'set slice [%d:%d]' % (i, j))\n\n                    for k in self.step_range():\n                        ssl = nextRange( len(ul[i:j:k]) )\n                        ul[i:j:k] = ssl\n                        pl[i:j:k] = ssl\n                        self.assertEqual(pl, ul[:], 'set slice [%d:%d:%d]' % (i, j, k))\n\n                        sliceLen = len(ul[i:j:k])\n                        self.assertRaises(ValueError, setfcn, ul, i, j, k, sliceLen + 1)\n                        if sliceLen > 2:\n                            self.assertRaises(ValueError, setfcn, ul, i, j, k, sliceLen - 1)\n\n                for k in self.step_range():\n                    ssl = nextRange( len(ul[i::k]) )\n                    ul[i::k] = ssl\n                    pl[i::k] = ssl\n                    self.assertEqual(pl, ul[:], 'set slice [%d::%d]' % (i, k))\n\n                    ssl = nextRange( len(ul[:i:k]) )\n                    ul[:i:k] = ssl\n                    pl[:i:k] = ssl\n                    self.assertEqual(pl, ul[:], 'set slice [:%d:%d]' % (i, k))\n\n            for k in self.step_range():\n                ssl = nextRange(len(ul[::k]))\n                ul[::k] = ssl\n                pl[::k] = ssl\n                self.assertEqual(pl, ul[:], 'set slice [::%d]' % (k))\n\n\n    def test03_delslice(self):\n        'Delete slice'\n        for Len in range(self.limit):\n            pl, ul = self.lists_of_len(Len)\n            del pl[:]\n            del ul[:]\n            self.assertEqual(pl[:], ul[:], 'del slice [:]')\n            for i in range(-Len - 1, Len + 1):\n                pl, ul = self.lists_of_len(Len)\n                del pl[i:]\n                del ul[i:]\n                self.assertEqual(pl[:], ul[:], 'del slice [%d:]' % (i))\n                pl, ul = self.lists_of_len(Len)\n                del pl[:i]\n                del ul[:i]\n                self.assertEqual(pl[:], ul[:], 'del slice [:%d]' % (i))\n                for j in range(-Len - 1, Len + 1):\n                    pl, ul = self.lists_of_len(Len)\n                    del pl[i:j]\n                    del ul[i:j]\n                    self.assertEqual(pl[:], ul[:], 'del slice [%d:%d]' % (i,j))\n                    for k in list(range(-Len - 1, 0)) + list(range(1, Len)):\n                        pl, ul = self.lists_of_len(Len)\n                        del pl[i:j:k]\n                        del ul[i:j:k]\n                        self.assertEqual(pl[:], ul[:], 'del slice [%d:%d:%d]' % (i,j,k))\n\n                for k in list(range(-Len - 1, 0)) + list(range(1, Len)):\n                    pl, ul = self.lists_of_len(Len)\n                    del pl[:i:k]\n                    del ul[:i:k]\n                    self.assertEqual(pl[:], ul[:], 'del slice [:%d:%d]' % (i,k))\n\n                    pl, ul = self.lists_of_len(Len)\n                    del pl[i::k]\n                    del ul[i::k]\n                    self.assertEqual(pl[:], ul[:], 'del slice [%d::%d]' % (i,k))\n\n            for k in list(range(-Len - 1, 0)) + list(range(1, Len)):\n                pl, ul = self.lists_of_len(Len)\n                del pl[::k]\n                del ul[::k]\n                self.assertEqual(pl[:], ul[:], 'del slice [::%d]' % (k))\n\n    def test04_get_set_del_single(self):\n        'Get/set/delete single item'\n        pl, ul = self.lists_of_len()\n        for i in self.limits_plus(0):\n            self.assertEqual(pl[i], ul[i], 'get single item [%d]' % i)\n\n        for i in self.limits_plus(0):\n            pl, ul = self.lists_of_len()\n            pl[i] = 100\n            ul[i] = 100\n            self.assertEqual(pl[:], ul[:], 'set single item [%d]' % i)\n\n        for i in self.limits_plus(0):\n            pl, ul = self.lists_of_len()\n            del pl[i]\n            del ul[i]\n            self.assertEqual(pl[:], ul[:], 'del single item [%d]' % i)\n\n    def test05_out_of_range_exceptions(self):\n        'Out of range exceptions'\n        def setfcn(x, i): x[i] = 20\n        def getfcn(x, i): return x[i]\n        def delfcn(x, i): del x[i]\n        pl, ul = self.lists_of_len()\n        for i in (-1 - self.limit, self.limit):\n            self.assertRaises(IndexError, setfcn, ul, i) # 'set index %d' % i)\n            self.assertRaises(IndexError, getfcn, ul, i) # 'get index %d' % i)\n            self.assertRaises(IndexError, delfcn, ul, i) # 'del index %d' % i)\n\n    def test06_list_methods(self):\n        'List methods'\n        pl, ul = self.lists_of_len()\n        pl.append(40)\n        ul.append(40)\n        self.assertEqual(pl[:], ul[:], 'append')\n\n        pl.extend(range(50,55))\n        ul.extend(range(50,55))\n        self.assertEqual(pl[:], ul[:], 'extend')\n\n        pl.reverse()\n        ul.reverse()\n        self.assertEqual(pl[:], ul[:], 'reverse')\n\n        for i in self.limits_plus(1):\n            pl, ul = self.lists_of_len()\n            pl.insert(i,50)\n            ul.insert(i,50)\n            self.assertEqual(pl[:], ul[:], 'insert at %d' % i)\n\n        for i in self.limits_plus(0):\n            pl, ul = self.lists_of_len()\n            self.assertEqual(pl.pop(i), ul.pop(i), 'popped value at %d' % i)\n            self.assertEqual(pl[:], ul[:], 'after pop at %d' % i)\n\n        pl, ul = self.lists_of_len()\n        self.assertEqual(pl.pop(), ul.pop(i), 'popped value')\n        self.assertEqual(pl[:], ul[:], 'after pop')\n\n        pl, ul = self.lists_of_len()\n        def popfcn(x, i): x.pop(i)\n        self.assertRaises(IndexError, popfcn, ul, self.limit)\n        self.assertRaises(IndexError, popfcn, ul, -1 - self.limit)\n\n        pl, ul = self.lists_of_len()\n        for val in range(self.limit):\n            self.assertEqual(pl.index(val), ul.index(val), 'index of %d' % val)\n\n        for val in self.limits_plus(2):\n            self.assertEqual(pl.count(val), ul.count(val), 'count %d' % val)\n\n        for val in range(self.limit):\n            pl, ul = self.lists_of_len()\n            pl.remove(val)\n            ul.remove(val)\n            self.assertEqual(pl[:], ul[:], 'after remove val %d' % val)\n\n        def indexfcn(x, v): return x.index(v)\n        def removefcn(x, v): return x.remove(v)\n        self.assertRaises(ValueError, indexfcn, ul, 40)\n        self.assertRaises(ValueError, removefcn, ul, 40)\n\n    def test07_allowed_types(self):\n        'Type-restricted list'\n        pl, ul = self.lists_of_len()\n        ul._allowed = six.integer_types\n        ul[1] = 50\n        ul[:2] = [60, 70, 80]\n        def setfcn(x, i, v): x[i] = v\n        self.assertRaises(TypeError, setfcn, ul, 2, 'hello')\n        self.assertRaises(TypeError, setfcn, ul, slice(0,3,2), ('hello','goodbye'))\n\n    def test08_min_length(self):\n        'Length limits'\n        pl, ul = self.lists_of_len()\n        ul._minlength = 1\n        def delfcn(x,i): del x[:i]\n        def setfcn(x,i): x[:i] = []\n        for i in range(self.limit - ul._minlength + 1, self.limit + 1):\n            self.assertRaises(ValueError, delfcn, ul, i)\n            self.assertRaises(ValueError, setfcn, ul, i)\n        del ul[:ul._minlength]\n\n        ul._maxlength = 4\n        for i in range(0, ul._maxlength - len(ul)):\n            ul.append(i)\n        self.assertRaises(ValueError, ul.append, 10)\n\n    def test09_iterable_check(self):\n        'Error on assigning non-iterable to slice'\n        pl, ul = self.lists_of_len(self.limit + 1)\n        def setfcn(x, i, v): x[i] = v\n        self.assertRaises(TypeError, setfcn, ul, slice(0,3,2), 2)\n\n    def test10_checkindex(self):\n        'Index check'\n        pl, ul = self.lists_of_len()\n        for i in self.limits_plus(0):\n            if i < 0:\n                self.assertEqual(ul._checkindex(i), i + self.limit, '_checkindex(neg index)')\n            else:\n                self.assertEqual(ul._checkindex(i), i, '_checkindex(pos index)')\n\n        for i in (-self.limit - 1, self.limit):\n            self.assertRaises(IndexError, ul._checkindex, i)\n\n        ul._IndexError = TypeError\n        self.assertRaises(TypeError, ul._checkindex, -self.limit - 1)\n\n    def test_11_sorting(self):\n        'Sorting'\n        pl, ul = self.lists_of_len()\n        pl.insert(0, pl.pop())\n        ul.insert(0, ul.pop())\n        pl.sort()\n        ul.sort()\n        self.assertEqual(pl[:], ul[:], 'sort')\n        mid = pl[len(pl) // 2]\n        pl.sort(key=lambda x: (mid-x)**2)\n        ul.sort(key=lambda x: (mid-x)**2)\n        self.assertEqual(pl[:], ul[:], 'sort w/ key')\n\n        pl.insert(0, pl.pop())\n        ul.insert(0, ul.pop())\n        pl.sort(reverse=True)\n        ul.sort(reverse=True)\n        self.assertEqual(pl[:], ul[:], 'sort w/ reverse')\n        mid = pl[len(pl) // 2]\n        pl.sort(key=lambda x: (mid-x)**2)\n        ul.sort(key=lambda x: (mid-x)**2)\n        self.assertEqual(pl[:], ul[:], 'sort w/ key')\n\n    def test_12_arithmetic(self):\n        'Arithmetic'\n        pl, ul = self.lists_of_len()\n        al = list(range(10,14))\n        self.assertEqual(list(pl + al), list(ul + al), 'add')\n        self.assertEqual(type(ul), type(ul + al), 'type of add result')\n        self.assertEqual(list(al + pl), list(al + ul), 'radd')\n        self.assertEqual(type(al), type(al + ul), 'type of radd result')\n        objid = id(ul)\n        pl += al\n        ul += al\n        self.assertEqual(pl[:], ul[:], 'in-place add')\n        self.assertEqual(objid, id(ul), 'in-place add id')\n\n        for n in (-1,0,1,3):\n            pl, ul = self.lists_of_len()\n            self.assertEqual(list(pl * n), list(ul * n), 'mul by %d' % n)\n            self.assertEqual(type(ul), type(ul * n), 'type of mul by %d result' % n)\n            self.assertEqual(list(n * pl), list(n * ul), 'rmul by %d' % n)\n            self.assertEqual(type(ul), type(n * ul), 'type of rmul by %d result' % n)\n            objid = id(ul)\n            pl *= n\n            ul *= n\n            self.assertEqual(pl[:], ul[:], 'in-place mul by %d' % n)\n            self.assertEqual(objid, id(ul), 'in-place mul by %d id' % n)\n\n        pl, ul = self.lists_of_len()\n        self.assertEqual(pl, ul, 'cmp for equal')\n        self.assertFalse(ul == pl + [2], 'cmp for not equal')\n        self.assertTrue(pl >= ul, 'cmp for gte self')\n        self.assertTrue(pl <= ul, 'cmp for lte self')\n        self.assertTrue(ul >= pl, 'cmp for self gte')\n        self.assertTrue(ul <= pl, 'cmp for self lte')\n\n        self.assertTrue(pl + [5] > ul, 'cmp')\n        self.assertTrue(pl + [5] >= ul, 'cmp')\n        self.assertTrue(pl < ul + [2], 'cmp')\n        self.assertTrue(pl <= ul + [2], 'cmp')\n        self.assertTrue(ul + [5] > pl, 'cmp')\n        self.assertTrue(ul + [5] >= pl, 'cmp')\n        self.assertTrue(ul < pl + [2], 'cmp')\n        self.assertTrue(ul <= pl + [2], 'cmp')\n\n        # Also works with a custom IndexError\n        ul_longer = ul + [2]\n        ul_longer._IndexError = TypeError\n        ul._IndexError = TypeError\n        self.assertFalse(ul_longer == pl)\n        self.assertFalse(ul == ul_longer)\n        self.assertTrue(ul_longer > ul)\n\n        pl[1] = 20\n        self.assertTrue(pl > ul, 'cmp for gt self')\n        self.assertTrue(ul < pl, 'cmp for self lt')\n        pl[1] = -20\n        self.assertTrue(pl < ul, 'cmp for lt self')\n        self.assertTrue(pl < ul, 'cmp for lt self')\n\nclass ListMixinTestSingle(ListMixinTest):\n    listType = UserListB\n\ndef suite():\n    s = unittest.TestSuite()\n    s.addTest(unittest.makeSuite(ListMixinTest))\n    s.addTest(unittest.makeSuite(ListMixinTestSingle))\n    return s\n\ndef run(verbosity=2):\n    unittest.TextTestRunner(verbosity=verbosity).run(suite())\n\nif __name__ == '__main__':\n    run()\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/ar/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 12:32+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Arabic (http://www.transifex.com/projects/p/django/language/\"\n\"ar/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ar\\n\"\n\"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 \"\n\"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"حقل GIS الأساسي -- مُرتبط بنوع مواصفات OpenGIS الهندسية.\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"نقطة إحداثية\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"سطر تسلسل أحرف\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"مُضلّع إحداثي\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"نقاط إحداثية\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"تسلسل أحرف متعدد الأسطر\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"مجموعة مُضلعات إحداثية\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"مجموعة إحداثية\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"لم تُدخل أي أحداثيات.\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"الإحداثيات غير صحيحة.\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"نوع الإحداثيات غير صحيح.\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"حدث خطأ أثناء تحويل geometry إلى حقل SRID.\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/az/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Ali Ismayilov <ali@ismailov.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 12:32+0000\\n\"\n\"Last-Translator: Ali Ismayilov <ali@ismailov.info>\\n\"\n\"Language-Team: Azerbaijani (http://www.transifex.com/projects/p/django/\"\n\"language/az/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: az\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"\"\n\"Əsas GIS sahəsi OpenGIS Müəyyənləşdirmə Həndəsəsi tipinə uyğunlaşdırılır.\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"Nöqtə\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"Xətt\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"Poliqon\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"Nöqtələr\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"Xətlər\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"Poliqonlar\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"Fiqurlar çoxluğu\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"Həndəsi qiyməti verilməyib.\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"Həndəsi qiyməti düzgün deyil.\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"Həndəsi tipi düzgün deyil.\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"\"\n\"Fiquru vərəqənin fiqur sahəsinin SRID qiymətinə çevirərkən xəta baş verdi.\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/be/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-08-01 11:31+0000\\n\"\n\"Last-Translator: Павал Клёк <yehekim@gmail.com>\\n\"\n\"Language-Team: Belarusian (http://www.transifex.com/projects/p/django/\"\n\"language/be/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: be\\n\"\n\"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"Няма запісаных стужак.\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"Біркі «%r» няма ў запісаных.\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"\"\n\"Галоўнае поле ҐІС — адлюстроўвае ґеамэтрычныя віды паводле спэцыфікацыі \"\n\"«OpenGIS».\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"Пункт\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"Ломаная\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"Шматкутнік\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"Набор пунктаў\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"Набор ломаных\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"Набор шматкутнікаў\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"Набор ґеамэтрычных аб’ектаў\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"Не пазначылі значэньне ґеамэтрыі.\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"Хібнае значэньне ґеамэтрыі.\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"Хібны від ґеамэтрыі.\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"Не ўдалося ператварыць ґеамэтрыю ў SRID.\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"Разьдзел «%r» ня мае мапы пляцоўкі.\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"Бачына «%s» парожняя\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"Бачына «%s» не існуе\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/bg/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <grgkostadinov@gmail.com>, 2012.\n# Todor Lubenov <tlubenov@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-04-01 19:16+0000\\n\"\n\"Last-Translator: Georgi Kostadinov <grgkostadinov@gmail.com>\\n\"\n\"Language-Team: Bulgarian (http://www.transifex.com/projects/p/django/\"\n\"language/bg/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: bg\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"Няма регистрирани фийда.\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"Слъгът %r не е регистриран.\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"Основно ГИС поле - карти за спецификация от OpenGIS  геометричен тип.\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"Точка\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"Линеен елемент\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"Полигон\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"Комплексна-точка\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"Комплексен-линеен елемент\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"Комплексен полигон\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"Геометрична колекция\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"Няма предоставена геометрична стойност.\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"Невалидна геометрична стойност.\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"Невалиден геометричен тип.\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"\"\n\"Възникна грешка при трансформиране на геометрията на SRID от полето \"\n\"геометрия.\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"Не съществува 'sitemap' на тази секция: %r\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"Страница %s е празна\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"Няма страница '%s'\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/bn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 12:32+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Bengali (http://www.transifex.com/projects/p/django/language/\"\n\"bn/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: bn\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"কোন জ্যামিতিক মান দেয়া হয়নি।\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"জ্যামিতিক মানটি বৈধ নয়।\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"জ্যামিতিক নমুনাটি বৈধ নয়।\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/br/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Fulup  <fulup.jakez@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-06-29 10:58+0000\\n\"\n\"Last-Translator: Fulup <fulup.jakez@gmail.com>\\n\"\n\"Language-Team: Breton (http://www.transifex.com/projects/p/django/language/\"\n\"br/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: br\\n\"\n\"Plural-Forms: nplurals=2; plural=(n > 1);\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"Pajenn %s goullo\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"Pajenn '%s' ebet\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/bs/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 12:32+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Bosnian (http://www.transifex.com/projects/p/django/language/\"\n\"bs/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: bs\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"\"\n\"Osnovno GIS polje -- mapiran je za  OpenGIS Specification Geometry tip polja.\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"Tačka\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"Linijska nit\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"Poligon\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"Multi-point\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"Višelinijska nit\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"Multi poligon\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"Geometrijska kolekcija\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"Niste zadali parametre za geometriju.\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"Neispravan parametar za geometriju.\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"Nepostojeći tip geometrije.\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"\"\n\"Došlo je do greške tokom pretvaranje geometrije u SRID geometrijskom polja \"\n\"obrazca.\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/ca/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Antoni Aloy <antoni.aloy@trespams.com>, 2012.\n# Carles Barrobés <carles@barrobes.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-13 19:35+0000\\n\"\n\"Last-Translator: Antoni Aloy <aaloy@apsl.net>\\n\"\n\"Language-Team: Catalan (http://www.transifex.com/projects/p/django/language/\"\n\"ca/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ca\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"No s'han registrat canal de contingut\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"L'slug %r no està registrat\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"\"\n\"El camp GIS base -- correspon al tipus 'Geometry' de l'especificació OpenGIS.\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"Punt\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"Cadena de línies\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"Polígon\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"Multi-punt\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"Cadena de multi-línies\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"Multi polígon\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"Col·leció de geometria\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"No s'ha indicat cap valor de geometria.\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"Valor de geometria invàlid.\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"Tipus de geometria invàlid.\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"\"\n\"S'ha produït un error en transformar la geometria al SRID del camp de \"\n\"geometria del formulari.\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"No hi ha un mapa del lloc disponible per a la secció: %r\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"Pàgina %s buida\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"No hi ha cap pàgina '%s'\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/cs/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Vlada Macek <macek@sandbox.cz>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 12:32+0000\\n\"\n\"Last-Translator: Vlada Macek <macek@sandbox.cz>\\n\"\n\"Language-Team: Czech (http://www.transifex.com/projects/p/django/language/\"\n\"cs/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: cs\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"Žádné dávky nejsou registrované.\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"Identifikátor %r není registrován.\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"\"\n\"Základní GIS pole -- mapováno na typ Geometry podle specifikace OpenGIS.\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"Bod\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"Úsek čáry\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"Polygon\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"Mnohonásobný bod\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"Mnohonásobný úsek čáry\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"Mnohonásobný polygon\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"Kolekce geometrií\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"Hodnota geometrie nezadána.\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"Neplatná hodnota geometrie.\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"Neplatný typ geometrie.\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"\"\n\"Nastala chyba při transformaci geometrie na identifikátor SRID geometrického \"\n\"formulářového pole.\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"Mapa webu není definovaná pro sekci: %r\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"Stránka %s je prázdná\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"Není stránka '%s'\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/cy/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2011-01-19 16:52+0000\\n\"\n\"Last-Translator: Django team\\n\"\n\"Language-Team: Welsh (http://www.transifex.com/projects/p/django/language/\"\n\"cy/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: cy\\n\"\n\"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != \"\n\"11) ? 2 : 3;\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/da/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Erik Wognsen <r4mses@gmail.com>, 2012.\n# Finn Gruwier <finn@gruwier.dk>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Kristian Øllegaard <kristian@oellegaard.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-19 18:19+0000\\n\"\n\"Last-Translator: Kristian Øllegaard <kristian@oellegaard.com>\\n\"\n\"Language-Team: Danish (http://www.transifex.com/projects/p/django/language/\"\n\"da/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: da\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"Ingen feeds registrerede.\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"\\\"Slug\\\" %r er ikke registreret.\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"\"\n\"Det grundlæggende GIS-felt - kæder til OpenGIS Specification geometritype.\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"Punkt\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"Linjesegment\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"Polygon\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"Multipunkt\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"Multilinjesegment\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"Multipolygon\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"Geometrisamling\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"Ingen værdi givet for geometri.\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"Ugyldig geometriværdi.\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"Ugyldig gemometritype.\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"\"\n\"Der opstod en fejl ved transformation af geometrien til formularfeltets SRID\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"Intet sitemap tilgængelig for sektion: %r\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"Siden %s er tom\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"Ingen side hedder '%s'\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/de/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# André Hagenbruch <ahagenbruch@googlemail.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-14 06:38+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: German (http://www.transifex.com/projects/p/django/language/\"\n\"de/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: de\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"Keine Feeds registriert.\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"Kürzel %r nicht registriert.\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"Das Basis-GIS-Feld, das dem OpenGIS-Geometrie-Typ entspricht.\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"Punkt\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"Linienzug\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"Polygon\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"Mehrere Punkte\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"Mehrere Linienzüge\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"Mehrere Polygone\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"Sammlung geometrischer Objekte\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"Kein geometrischer Wert gegeben.\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"Ungültiger geometrischer Wert.\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"Ungültiger geometrischer Typ.\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"\"\n\"Ein Fehler ist beim Umwandeln der Geometrie-Werte in die SRID des Geometrie-\"\n\"Formularfeldes aufgetreten.\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"Für den Abschnit %r ist keine Sitemap vorhanden\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"Seite %s ist leer\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"Seite '%s' existiert nicht\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/el/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Dimitris Glezos <glezos@indifex.com>, 2011.\n# Kostas Papadimitriou <vinilios@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-12 19:19+0000\\n\"\n\"Last-Translator: Kostas Papadimitriou <vinilios@gmail.com>\\n\"\n\"Language-Team: Greek (http://www.transifex.com/projects/p/django/language/\"\n\"el/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: el\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"Δεν υπάρχουν εγγεγραμμένες ροές ειδήσεων.\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"\"\n\"Το βασικό πεδίο GIS - αντιστοιχεί στον τύπο γεωμετρίας των προδιαγραφών \"\n\"OpenGIS.\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"Σημείο\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"Γραμμή string\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"Πολύγωνο\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"Πολλαπλό σημείο\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"Multi-line string\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"Πολλαπλό πολύγωνο\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"Συλλογή γεωμετριών\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"Δε δόθηκε τιμή γεωμετρίας.\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"Άκυρα τιμή γεωμετρίας.\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"Άκυρος τύπος γεωμετρίας.\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"\"\n\"Παρουσιάστηκε σφάλμα κατά τη μετατροπή της γεωμετρίας στο SRID του πεδίου \"\n\"της φόρμας  γεωμετρίας.\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/en/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 12:32+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: English <en@li.org>\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: en\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"No feeds are registered.\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"Slug %r isn't registered.\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"Point\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"Line string\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"Polygon\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"Multi-point\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"Multi-line string\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"Multi polygon\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"Geometry collection\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"No geometry value provided.\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"Invalid geometry value.\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"Invalid geometry type.\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"No sitemap available for section: %r\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"Page %s empty\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"No page '%s'\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/en_GB/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# jon_atkinson <jon@jonatkinson.co.uk>, 2011.\n# Ross Poulton <ross@rossp.org>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-12 21:57+0000\\n\"\n\"Last-Translator: Ross Poulton <ross@rossp.org>\\n\"\n\"Language-Team: English (United Kingdom) (http://www.transifex.com/projects/p/\"\n\"django/language/en_GB/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: en_GB\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"No feeds are registered.\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"Slug %r isn't registered.\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"Point\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"Line string\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"Polygon\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"Multi-point\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"Multi-line string\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"Multi polygon\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"Geometry collection\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"No geometry value provided.\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"Invalid geometry value.\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"Invalid geometry type.\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"No sitemap available for section: %r\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"Page %s empty\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"No page '%s'\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/eo/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Baptiste  <baptiste+transifex@darthenay.fr>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-09-19 03:30+0000\\n\"\n\"Last-Translator: Baptiste <baptiste+transifex@darthenay.fr>\\n\"\n\"Language-Team: Esperanto (http://www.transifex.com/projects/p/django/\"\n\"language/eo/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: eo\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"Neniu fluo estas registrita.\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"Ĵetonvorto %r ne estas registrita.\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"La baza GISa kampo -- mapas al la MalfermaGIS Specifa Geometria tipo.\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"Punkto\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"Liniŝnuro\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"Plurangulo\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"Multpunkto\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"Multlinia ŝnuro\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"Multplurangulo\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"Geometriaro\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"Neniu geometria valoro provizas.\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"Malvalida geometria valoro.\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"Malvalida geometria tipo.\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"\"\n\"Eraro okazis dum transformi la geometrion al la SRID de la geometria forma \"\n\"kampo.\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"Neniu paĝaro-mapo disponebla por sekcio:%r\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"Paĝo %s malplena\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"Neniu paĝo '%s' trovita\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/es/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Antoni Aloy <antoni.aloy@trespams.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Marc Garcia <garcia.marc@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-14 19:13+0000\\n\"\n\"Last-Translator: Antoni Aloy <aaloy@apsl.net>\\n\"\n\"Language-Team: Spanish (http://www.transifex.com/projects/p/django/language/\"\n\"es/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: es\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"No se han registrado canales de contenido.\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"El slug %r no está registrado.\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"\"\n\"El campo GIS base -- apunta al tipo de especificación geométrica de OpenGIS.\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"Punto\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"Cadena de línea\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"Polígono\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"Punto múltiple\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"Cadena de línea múltiple\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"Polígono múltiple\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"Colección de \\\"Geometry\\\"\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"No se indico ningún valor de geometría.\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"Valor de geometría inválido.\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"Tipo de geometría inválido.\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"\"\n\"Ocurrió un error al transformar la geometria al SRID de la geometria del \"\n\"campo de formulario.\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"No hay sitemap disponible para la sección: %r\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"La página %s está vacía\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"No hay página '%s'\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/es_AR/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Ramiro Morales <cramm0@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-16 01:45+0000\\n\"\n\"Last-Translator: Ramiro Morales <cramm0@gmail.com>\\n\"\n\"Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/\"\n\"django/language/es_AR/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: es_AR\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"No se han registrado feeds\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"El slug %r no ha sido registrado\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"\"\n\"El campo GIS base -- corresponde al tipo Geometry de la especificación \"\n\"OpenGIS.\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"Punto\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"Secuencia de líneas\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"Polígono\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"Multi-punto\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"Cadena multi-línea\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"Multi polígono\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"Colección de Geometry's\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"No se ha proporcionado un valor de geometría.\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"Valor de geometría no válido.\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"Tipo de geometría no válido.\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"\"\n\"Ha ocurrido un error mientras se transformaba la geometría al SRID del campo \"\n\"de formulario de la misma.\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"No hay un sitemap disponible para la sección: %r\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"La página %s está vacía\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"No existe la página '%s'\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/es_MX/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Abraham Estrada <abraham.estrada@gmail.com>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 12:32+0000\\n\"\n\"Last-Translator: Abraham Estrada <abraham.estrada@gmail.com>\\n\"\n\"Language-Team: Spanish (Mexico) (http://www.transifex.com/projects/p/django/\"\n\"language/es_MX/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: es_MX\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"No hay feeds registrados.\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"El slug %r no está registrado.\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"\"\n\"El campo GIS base -- corresponde al tipo Geometry de la especificación \"\n\"OpenGIS.\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"Punto\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"Secuencia de líneas\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"Polígono\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"Multi-punto\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"Cadena multi-línea\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"Multi polígonos\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"Colección de geometrías\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"No se ha proporcionado un valor de geometría.\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"Valor de geometría no válido.\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"Tipo de geometría no válido.\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"\"\n\"Ha ocurrido un error mientras se transformaba la geometría al SRID del campo \"\n\"de formulario de la misma.\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"No hay mapa del sitio disponible para esta sección: %r\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"Página %s vacía\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"No hay página '%s'\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/et/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# eallik <eallik@gmail.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# madisvain <madisvain@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 12:32+0000\\n\"\n\"Last-Translator: madisvain <madisvain@gmail.com>\\n\"\n\"Language-Team: Estonian (http://www.transifex.com/projects/p/django/language/\"\n\"et/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: et\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"Baas GIS väli -- ühildub OpenGIS Spetsifikatsiooni Geomeetria tüübiga.\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"Punkt\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"Polügon\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"Multi-punkt\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"Mitmerealine string\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"Multi-polügon\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"Geomeetriakogum\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"Geomeetriline väärtus puudub.\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"Vigane geomeetriline väärtus.\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"Vigane geomeetriline tüüp.\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"Geomeetria teisendamisel geomeetria vormivälja SRID-ks tekkis viga.\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/eu/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Aitzol Naberan <anaberan@codesyntax.com>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 20:41+0000\\n\"\n\"Last-Translator: Aitzol Naberan <anaberan@codesyntax.com>\\n\"\n\"Language-Team: Basque (http://www.transifex.com/projects/p/django/language/\"\n\"eu/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: eu\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"Ez dago jariorik erregistratuta.\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"%r sluga ez dago erregistratuta.\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"\"\n\"Oinarrizko GIS eremua -- OpenGIS zehaztapeneko Geomtry motarentzat mapak\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"Puntua\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"Lerro string-a\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"Poligonoa\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"Puntu anitz\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"Lerro anitz sting-a\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"Multi poligonoa\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"Geometria bilduma\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"Ez fa geometria baliorik eman.\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"Geometria balio okera.\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"Geometria mota okerra.\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"Errore bat gertatu da geometria bere form eremuaren SRIDra biurtzean.\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"%r atalarentzat ez dago sitemap-ik\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"%s orria hutsik dago\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"'%s' orririk ez\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/fa/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Ali Nikneshan <ali@nikneshan.com>, 2012.\n# Alireza Savand <alireza.savand@gmail.com>, 2013.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Saeed  <sd.javadi@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2013-01-11 08:32+0000\\n\"\n\"Last-Translator: Alireza Savand <alireza.savand@gmail.com>\\n\"\n\"Language-Team: Persian (http://www.transifex.com/projects/p/django/language/\"\n\"fa/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: fa\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"هیچ کدام از  فید ها ثبت شده است.\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"Slug %r ثبت نشده\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"فیلد  GIS  پایه -- نقشه‌ها برای مشخصه‌های هندسی OpenGIS\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"نقطه\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"رشته خط\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"چندضلعی\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"چند نقطه ای\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"چند خط رشته\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"چندین چند ضلعی \"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"مجموعه هندسی\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"مقدار جغرافیایی‌ای مقرر نشده است.\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"مقدار جغرافیایی نامعتبر\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"نوعِ جغرافیایی نامعتبر\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"مشکلی در هنگام انتقال مختصات هندسی از فیلد به SRID رخ داد.\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"هیچ سایت مپی برای قسمت %r موجود نیست\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"صفحه %s خالی است.\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"صفحه '%s' یافت نشد\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/fi/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Antti Kaihola <akaihol+transifex@ambitone.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 12:32+0000\\n\"\n\"Last-Translator: Antti Kaihola <akaihol+transifex@ambitone.com>\\n\"\n\"Language-Team: Finnish (http://www.transifex.com/projects/p/django/language/\"\n\"fi/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: fi\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"GIS-peruskenttä – vastaa OpenGIS-määrittelyn geometriatyyppiä.\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"Piste\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"Murtoviiva\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"Polygoni\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"Monipiste\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"Monimurtoviiva\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"Monipolygoni\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"Geometriakokoelma\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"Geometria-arvoa ei annettu.\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"Virheellinen geometria-arvo.\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"Virheellinen geometriatyyppi.\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"Kentän SRID-muunnoksessa tapahtui virhe.\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/fr/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <claude@2xlibre.net>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 12:32+0000\\n\"\n\"Last-Translator: claudep <claude@2xlibre.net>\\n\"\n\"Language-Team: French (http://www.transifex.com/projects/p/django/language/\"\n\"fr/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: fr\\n\"\n\"Plural-Forms: nplurals=2; plural=(n > 1);\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"Aucun flux enregistré.\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"Le slug %r n'est pas enregistré.\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"\"\n\"Le champ GIS -- convertit dans le type de spécification géométrique \"\n\"d'OpenGIS.\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"Point\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"Chaîne de segment\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"Polygone\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"Multipoint\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"Chaîne multisegment\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"Multipolygone\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"Collection géométrique\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"Acune valeur géométrique fournie.\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"Valeur géométrique non valide.\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"Type de géométrie non valide.\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"\"\n\"Une erreur est survenue lors de la transformation de l'objet géométrique \"\n\"dans le SRID du champ de formulaire géométrique.\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"Aucun plan de site disponible pour la section %r\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"Page %s vide\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"Aucune page « %s »\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/fy_NL/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:39+0100\\n\"\n\"PO-Revision-Date: 2011-03-15 15:48+0000\\n\"\n\"Last-Translator: Django team\\n\"\n\"Language-Team: English <en@li.org>\\n\"\n\"Language: fy_NL\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1)\\n\"\n\n#: views.py:7\nmsgid \"No feeds are registered.\"\nmsgstr \"\"\n\n#: views.py:17\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"\"\n\n#: db/models/fields.py:50\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"\"\n\n#: db/models/fields.py:270\nmsgid \"Point\"\nmsgstr \"\"\n\n#: db/models/fields.py:274\nmsgid \"Line string\"\nmsgstr \"\"\n\n#: db/models/fields.py:278\nmsgid \"Polygon\"\nmsgstr \"\"\n\n#: db/models/fields.py:282\nmsgid \"Multi-point\"\nmsgstr \"\"\n\n#: db/models/fields.py:286\nmsgid \"Multi-line string\"\nmsgstr \"\"\n\n#: db/models/fields.py:290\nmsgid \"Multi polygon\"\nmsgstr \"\"\n\n#: db/models/fields.py:294\nmsgid \"Geometry collection\"\nmsgstr \"\"\n\n#: forms/fields.py:17\nmsgid \"No geometry value provided.\"\nmsgstr \"\"\n\n#: forms/fields.py:18\nmsgid \"Invalid geometry value.\"\nmsgstr \"\"\n\n#: forms/fields.py:19\nmsgid \"Invalid geometry type.\"\nmsgstr \"\"\n\n#: forms/fields.py:20\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"\"\n\n#: sitemaps/views.py:44\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"\"\n\n#: sitemaps/views.py:58\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/ga/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Michael Thornhill <michael@maithu.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-16 13:13+0000\\n\"\n\"Last-Translator: Michael Thornhill <michael@maithu.com>\\n\"\n\"Language-Team: Irish (http://www.transifex.com/projects/p/django/language/\"\n\"ga/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ga\\n\"\n\"Plural-Forms: nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : \"\n\"4);\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"Níl fothaí cláraithe.\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"Níl slug %r cláraithe.\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"\"\n\"GIS an bonn réimse - léarscáileanna chun an Sonraíocht OpenGIS cineál \"\n\"Céimseata.\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"Pointe\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"Líne teaghrán\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"Polagán\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"Il-phointe\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"Il-líne teaghrán\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"Il polagán\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"Céimseata bhailiú\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"Ní soláthair méid geoiméadracht\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"Méid geoiméadracht neamhbhailí\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"Tíopa geoiméadracht neamhbhailí\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"\"\n\"Tharla earráid ag claochlú an geoiméadracht go dtí SRID an réimse fhoirm \"\n\"geoiméadracht.\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"Níl léarscáil an tSuoímh ar fáil le haghaidh roinn: %r\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"Leathanach %s folamh\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"Níl leathanach '%s'\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/gl/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# fasouto <fsoutomoure@gmail.com>, 2011.\n#   <fonzzo@gmail.com>, 2013.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2013-01-07 11:44+0000\\n\"\n\"Last-Translator: fonso <fonzzo@gmail.com>\\n\"\n\"Language-Team: Galician (http://www.transifex.com/projects/p/django/language/\"\n\"gl/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: gl\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"Non hai feeds rexistradas.\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"A url curta %r non está rexistrada.\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"\"\n\"O campo GIS base -- correspóndese co tipo Geometry da especificación OpenGIS.\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"Punto\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"Secuencia de liñas\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"Polígono\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"Punto múltiple\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"Cadea multi-liña\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"Multi polígono\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"Colección de xeometrías\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"Non se proporcionou un valor de xeometría.\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"Valor xeométrico non válido.\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"Tipo xeometríco non válido.\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"\"\n\"Atopouse un erro mentras se trasnformaba a xeometría ó SRID do campo \"\n\"xeométrico do formulario.\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"Non hai un mapa do sitio dispoñíbel para a sección: %r\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"A páxina %s baleira\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"Non existe a páxina '%s'\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/he/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Meir Kriheli <mkriheli@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-23 09:00+0000\\n\"\n\"Last-Translator: Meir Kriheli <mkriheli@gmail.com>\\n\"\n\"Language-Team: Hebrew (http://www.transifex.com/projects/p/django/language/\"\n\"he/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: he\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"לא נרשמו פידים.\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"Slug %r אינו רשום.\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"שדה ה־GIS הבסיסי -- ממופה לטיפוס OpenGIS Specification Geometry.\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"נקודה\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"מחרוזת קו\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"פוליגון\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"מרובה־נקודות\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"מחרוזת קו מרובת שורות\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"פוליגון מרובה\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"אוסף גיאומטרי\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"לא סופק ערך גיאומטרי.\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"ערך גאומטרי שגוי.\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"סוג גיאומטרי שגוי.\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"הייתה בעיה עם השינוי של הצורה לסוג של השדה.\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"אין sitemap זמין עבור מדור: %r\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"עמוד %s ריק\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"עמוד '%s' אינו קיים\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/hi/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# chandankumar(ciypro) <chandankumar.093047@gmail.com>, 2012.\n# Sandeep Satavlekar <sandysat@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-15 13:44+0000\\n\"\n\"Last-Translator: Chandan kumar <chandankumar.093047@gmail.com>\\n\"\n\"Language-Team: Hindi (http://www.transifex.com/projects/p/django/language/\"\n\"hi/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: hi\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"कोई फ़ीड पंजीकृत नहीं हैं.\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"स्लग %r पंजीकृत नहीं है.\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"आधारभूत GIS फ़ील्ड OpenGIS विशिष्टता ज्यामिति के प्ररूप हैं .\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"बिंदु\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"पंक्ति शृंखला\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"बहुभुज\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"बहु बिंदु\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"बहु - पंक्ति शृंखला\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"बहु बहुभुज\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"ज्यामिति संग्रह\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"कोई ज्यामिति मूल्य प्रदान नहीं की है.\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"अवैध ज्यामिति मूल्य.\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"अवैध ज्यामिति प्रकार\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"\"\n\"ज्यामिति को ज्यामिति प्रपत्र फ़ील्ड के SRID में परिवर्तित करते वक़्त एक ग़लती हो गयी .\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"अनुभाग के लिए कोई साइटमैप उपलब्ध नहीं: %r\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"पृष्ठ %s खाली\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"कोई पृष्ठ '%s' नहीं \"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/hr/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <berislav.lopac@gmail.com>, 2012.\n# Davor Lučić <r.dav.lc@gmail.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-11-25 11:32+0000\\n\"\n\"Last-Translator: Davor Lučić <r.dav.lc@gmail.com>\\n\"\n\"Language-Team: Croatian (http://www.transifex.com/projects/p/django/language/\"\n\"hr/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: hr\\n\"\n\"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"Nema registriranih izvora.\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"Slug %r nije registriran.\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"Osnovno GIS polje -- mapira OpenGIS Specification Geometry tip.\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"Točka\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"Linija (Line string)\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"Poligon\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"Više točaka\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"Više linija (Line string)\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"Više poligona\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"Geometrijska kolekcija\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"Geometrijska vrijednost nije priložena.\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"Neispravna geometrijska vrijednost.\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"Neispravan geometrijski tip.\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"\"\n\"Došlo je do greške pri transformaciji geometrije na SRID geometrijskog polja \"\n\"forme.\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"Ne postoji mapa za odjeljak: %r\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"Stranica %s je prazna\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"Stranica '%s' ne postoji\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/hu/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Kristóf Gruber <>, 2012.\n# Szilveszter Farkas <szilveszter.farkas@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-19 19:17+0000\\n\"\n\"Last-Translator: Kristóf Gruber <>\\n\"\n\"Language-Team: Hungarian (http://www.transifex.com/projects/p/django/\"\n\"language/hu/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: hu\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"Nincs regisztrált feed.\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"%r slug nincs regisztrálva.\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"\"\n\"Az alap GIS mező -- az OpenGIS specifikáció geometria típusának megfelelően\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"Pont\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"Vonallánc\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"Poligon\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"Multi-pont\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"Többes vonallánc\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"Multi-poligon\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"Geometria gyűjtemény\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"Geometriai adat nem került megadásra.\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"Érvénytelen geometriai érték.\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"Érvénytelen geometriai típus.\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"Hiba történt a geometriai transzformáció során.\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"%r szekcióhoz nincsen oldaltérkép\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"'%s' oldal üres\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"'%s' oldal nem létezik\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/ia/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Martijn Dekker <mcdutchie@hotmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-08-20 19:30+0000\\n\"\n\"Last-Translator: Martijn Dekker <mcdutchie@hotmail.com>\\n\"\n\"Language-Team: Interlingua (http://www.transifex.com/projects/p/django/\"\n\"language/ia/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ia\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"Nulle syndication es registrate.\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"Le denotation %r non es registrate.\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"\"\n\"Le campo GIS de base. Corresponde al typo geometric del specification \"\n\"OpenGIS.\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"Puncto\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"Texto de linea\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"Polygono\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"Plure punctos\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"Texto con plure lineas\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"Plure polygonos\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"Collection geometric\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"Nulle valor geometric fornite.\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"Valor geometric invalide.\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"Typo geometric invalide.\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"\"\n\"Un error occurreva durante le transformation del geometria al SRID del campo \"\n\"del formulario geometric.\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"Nulle mappa de sito disponibile pro le section: %r\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"Le pagina '%s' es vacue\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"Le pagina '%s' non existe\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/id/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# rodin <romihardiyanto@gmail.com>, 2011.\n#   <romihardiyanto@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 12:32+0000\\n\"\n\"Last-Translator: rodin <romihardiyanto@gmail.com>\\n\"\n\"Language-Team: Indonesian (http://www.transifex.com/projects/p/django/\"\n\"language/id/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: id\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"Tidak ada umpan terdaftar.\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"Slug %r tidak terdaftar.\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"\"\n\"Bidang dasar GIS disesuaikan berdasarkan OpenGIS Specification Geometry.\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"Point\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"Line string\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"Polygon\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"Multi-point\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"Multi-line string\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"Multi polygon\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"Geometry collection\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"Nilai geometri tidak disediakan.\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"Nilai geometri salah.\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"Tipe geometri salah.\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"\"\n\"Galat terjadi saat mentransformasi geometri ke SRID bidang formulir geometri.\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"Tidak ada peta situs tersedia untuk bagian: %r\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"Laman %s kosong\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"Tidak ada laman '%s'\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/is/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Hafsteinn Einarsson <haffi67@gmail.com>, 2011, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-19 14:50+0000\\n\"\n\"Last-Translator: Hafsteinn Einarsson <haffi67@gmail.com>\\n\"\n\"Language-Team: Icelandic (http://www.transifex.com/projects/p/django/\"\n\"language/is/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: is\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"Engir listar (feeds) eru skráðir\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"Slögg %r er ekki skráður\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"Grunn GIS reitur -- varpast í OpenGIS rúmgerð.\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"Punktur\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"Lína\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"Marghyrningur\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"Punktar\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"Línur\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"Marghyrningar\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"Rúmsafn\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"Ekkert rúmgildi gefið.\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"Ógild rúmeining\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"Ógild rúmmálsgerð.\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"Villa kom upp við að varpa rúmgildi í SRID reitsins.\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"Ekkert veftré tiltækt fyrir: %r\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"Síða %s tóm\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"Engin síða %s\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/it/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Nicola Larosa <transifex@teknico.net>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 12:32+0000\\n\"\n\"Last-Translator: Nicola Larosa <transifex@teknico.net>\\n\"\n\"Language-Team: Italian (http://www.transifex.com/projects/p/django/language/\"\n\"it/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: it\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"Non ci sono feed registrati.\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"Lo slug %r non è registrato.\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"\"\n\"Il campo base GIS -- corrisponde al tipo Geometry delle specifiche OpenGIS.\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"Punto\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"Stringa linea\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"Poligono\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"Multipunto\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"Stringa multilinea\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"Multi poligono\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"Raccolta Geometry\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"Nessun valore geometrico fornito.\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"Valore geometrico non valido.\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"Tipo geometrico non valido.\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"\"\n\"Si è verificato un errore durante la trasformazione della geometria nello \"\n\"SRID del campo geometria della form.\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"Nessun sitemap disponibile per la sezione: %r\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"Pagina %s vuota\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"Nessuna pagina '%s'\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/ja/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Shinya Okano <tokibito@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-07-31 16:39+0000\\n\"\n\"Last-Translator: Shinya Okano <tokibito@gmail.com>\\n\"\n\"Language-Team: Japanese (http://www.transifex.com/projects/p/django/language/\"\n\"ja/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ja\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"フィードが登録されていません。\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"スラグ %r は登録されていません。\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"GIS基底フィールドです -- OpenGIS で決められた地形タイプに対応\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"点\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"線\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"ポリゴン\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"複数の点\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"複数の線\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"複数のポリゴン\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"地形の集合\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"geometry値がありません。\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"geometry値が不正です\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"geometryタイプが不正です。\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"\"\n\"geometry を geometry フォームフィールドの SRID に変換しようとしてエラーが起き\"\n\"ました。\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"このセクションで利用可能なサイトマップはありません: %r\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"ページ %s は空です\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"ページ '%s' は存在しません\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/ka/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Translators:\n# André Bouatchidzé <a@anbz.net>, 2013.\n# avsd05 <avsd05@gmail.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2013-03-01 07:50+0000\\n\"\n\"Last-Translator: André Bouatchidzé <a@anbz.net>\\n\"\n\"Language-Team: Georgian (http://www.transifex.com/projects/p/django/language/\"\n\"ka/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ka\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"არცერთი ფიდი არ არის რეგისტრირებული.\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"სლაგი %r არ არის რეგისტრირებული.\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"GIS-ის ბაზური ველი -- შეესაბამება OpenGIS სპეციფიკაციის Geometry ტიპს.\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"წერტილი\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"ხაზის მასივი\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"მრავალკუთხედი\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"წერტილების სიმრავლე\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"ხაზების სიმრავლის მასივი\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"მრავალკუთხედების სიმრავლე\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"გეომეტრიული კოლექცია\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"გეომეტრიის მნიშვნელობა მოცემული არ არის.\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"გეომეტრიის მნიშვნელობა არასწორია.\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"გეომეტრიის ტიპი არასწორია.\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"ველიდან გეომეტრიის SRID-ში გადაყვანისას მოხდა შეცდომა.\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"არ არსებობს საიტის რუკა სექციისთვის: %r\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"გვერდი %s ცარიელია\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"გვერდი '%s' არ არსებობს\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/kk/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <germanilyin@gmail.com>, 2011.\n#   <zhazira.mt@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 12:32+0000\\n\"\n\"Last-Translator: Zhazira <zhazira.mt@gmail.com>\\n\"\n\"Language-Team: Kazakh (http://www.transifex.com/projects/p/django/language/\"\n\"kk/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: kk\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"\"\n\"Негізгі GIS алаңы - OpenGIS спецификация бойынша геометриялық түрлерін \"\n\"белгілейді.\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"Нүкте\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"Сынық\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"Көпбұрыш\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"Нүкте жинағы\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"Сынықтар жинағы\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"Көпбұрыш жинағы\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"Геометриялық объект жинағы\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"Геметрия мәні берілген жоқ\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"Геометрия мәні  дұрыс емес\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"Геометрия  түрі  дұрыс емес\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"Геометрияны SRID-ге өзгерту кезінде қате шықты.\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/km/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:39+0100\\n\"\n\"PO-Revision-Date: 2011-03-15 15:48+0000\\n\"\n\"Last-Translator: Django team\\n\"\n\"Language-Team: English <en@li.org>\\n\"\n\"Language: km\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=1; plural=0\\n\"\n\n#: views.py:7\nmsgid \"No feeds are registered.\"\nmsgstr \"\"\n\n#: views.py:17\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"\"\n\n#: db/models/fields.py:50\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"\"\n\n#: db/models/fields.py:270\nmsgid \"Point\"\nmsgstr \"\"\n\n#: db/models/fields.py:274\nmsgid \"Line string\"\nmsgstr \"\"\n\n#: db/models/fields.py:278\nmsgid \"Polygon\"\nmsgstr \"\"\n\n#: db/models/fields.py:282\nmsgid \"Multi-point\"\nmsgstr \"\"\n\n#: db/models/fields.py:286\nmsgid \"Multi-line string\"\nmsgstr \"\"\n\n#: db/models/fields.py:290\nmsgid \"Multi polygon\"\nmsgstr \"\"\n\n#: db/models/fields.py:294\nmsgid \"Geometry collection\"\nmsgstr \"\"\n\n#: forms/fields.py:17\nmsgid \"No geometry value provided.\"\nmsgstr \"\"\n\n#: forms/fields.py:18\nmsgid \"Invalid geometry value.\"\nmsgstr \"\"\n\n#: forms/fields.py:19\nmsgid \"Invalid geometry type.\"\nmsgstr \"\"\n\n#: forms/fields.py:20\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"\"\n\n#: sitemaps/views.py:44\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"\"\n\n#: sitemaps/views.py:58\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/kn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2011-01-19 16:52+0000\\n\"\n\"Last-Translator: Django team\\n\"\n\"Language-Team: Kannada (http://www.transifex.com/projects/p/django/language/\"\n\"kn/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: kn\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/ko/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jaehong Kim <mixe@korea.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 12:32+0000\\n\"\n\"Last-Translator: Jaehong Kim <mixe@korea.com>\\n\"\n\"Language-Team: Korean (http://www.transifex.com/projects/p/django/language/\"\n\"ko/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ko\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"기본 GIS 필드. OpenGIS Specification의 Geometry type으로 매핑됩니다.\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"위치\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"한줄 문자열\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"다각형\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"복수위치\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"여러줄 문자열\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"복수 다각형\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"지리적 위치 모음\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"Geometry 값이 없습니다.\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"Geometry 값이 부적절합니다.\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"Geometry 형식이 부적절합니다.\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"Geometry를 geometry 필드의 SRID로 변환하는 도중 오류가 발생하였습니다.\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/lt/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Kostas  <tamosiunas@gmail.com>, 2011.\n# lauris <lauris@runbox.com>, 2011.\n# Simonas Kazlauskas <simonas@kazlauskas.me>, 2012.\n# Simonas Simas <simonas@kazlauskas.me>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-06-14 13:31+0000\\n\"\n\"Last-Translator: Simonas Kazlauskas <simonas@kazlauskas.me>\\n\"\n\"Language-Team: Lithuanian (http://www.transifex.com/projects/p/django/\"\n\"language/lt/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: lt\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n\"\n\"%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"Nėra užregistruotų srautų.\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"Adresas %r neregistruotas.\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"Bazinis GIS laukas - atvaizduoja OpenGIS Specification Geometry tipą\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"Taškas\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"Atkarpa\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"Daugiakampis\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"Taškų aibė\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"Atkarpų aibė\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"Daugiakampių aibė\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"Geometrinė kolekcija\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"Nenurodyta geometrinė reikšmė\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"Netinkama geometrinė reikšmė\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"Netinkamas geometrinis tipas\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"Įvyko klaida pertvarkant geometrijos lauko SRID geometriją.\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"Nėra %r skyriaus svetainės medžio\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"Puslapis %s tuščias\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"Nėra '%s' puslapio\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/lv/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 12:32+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Latvian (http://www.transifex.com/projects/p/django/language/\"\n\"lv/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: lv\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : \"\n\"2);\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"Bāzes ĢIS lauks -- atbilst OpenGIS specifikācijas Geometry tipam.\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"Punkts\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"Līniju virkne\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"Daudzstūris\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"Vairāki punkti\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"Vairāku rindu virkne\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"Vairāki daudzstūri\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"Ģeometrijas kolekcija\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"Nav norādīta ģeometrijas vērtība.\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"Nekorekta ģeometrijas vērtība.\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"Nekorekts ģeometrijas tips.\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"\"\n\"Sastapta kļūda, pārveidojot ģeometriju uz ģeometriskās formas lauka SRID.\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/mk/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <vvangelovski@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-12 11:30+0000\\n\"\n\"Last-Translator: vvangelovski <vvangelovski@gmail.com>\\n\"\n\"Language-Team: Macedonian (http://www.transifex.com/projects/p/django/\"\n\"language/mk/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: mk\\n\"\n\"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"Нема регистрирани фидови.\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"Краткото име %r не е регистрирано\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"\"\n\"Базичното GIS поле -- соодветствува на геометриски тип од OpenGIS \"\n\"спецификацијата.\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"Точка\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"Линиска нишка\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"Полигон\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"Повеќе точки\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"Повеќе-линиска нишка\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"Повеќе полигони\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"Колекција од геометриски објекти\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"Не е внесена геометриска вредност.\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"Невалидна геометриска вредност.\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"Невалиден геометриски тип.\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"\"\n\"Се појави грешка при трансформација на геометриската вредност во SRID од \"\n\"геометриското поле\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"Нема достапна мапа на сијтот за секцијата: %r\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"Страницата %s е празна\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"Нема страница '%s'\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/ml/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Rajeesh Nair <rajeeshrnair@gmail.com>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-04-17 19:18+0000\\n\"\n\"Last-Translator: Rajeesh Nair <rajeeshrnair@gmail.com>\\n\"\n\"Language-Team: Malayalam (http://www.transifex.com/projects/p/django/\"\n\"language/ml/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ml\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \" ഫീഡുകളൊന്നും രജിസ്റ്റര്‍ ചെയ്തിട്ടില്ല.\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"%r എന്ന സ്ലഗ് രജിസ്റ്റര്‍ ചെയ്തിട്ടില്ല.\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"\"\n\"അടിസ്ഥാന ജി.ഐ.എസ് കളം (ഫീല്‍ഡ്) -- ഓപ്പണ്‍ ജി.ഐ.എസ് നിര്‍ദേശിച്ച തരം ജ്യാമിതീയ രൂപത്തെ \"\n\"സൂചിപ്പിക്കാന്‍\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"ബിന്ദു\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"രേഖാ സ്ട്രിങ്ങ്\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"ബഹുഭുജം\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"ബഹുബിന്ദു\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"ബഹു രേഖാ സ്ട്രിങ്ങ്\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"ബഹു ബഹുഭുജം\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"ജ്യാമിതി ശേഖരം\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"ജ്യാമിതീയ മൂല്യമൊന്നും തന്നിട്ടില്ല.\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"തെറ്റായ ജ്യാമിതീയ മൂല്യം.\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"തെറ്റായ തരം ജ്യാമിതി.\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"\"\n\"ജ്യാമിതീയ രൂപത്തെ ജ്യാമിതി കളത്തിന്റെ SRID-ലേക്കു മാറ്റുമ്പോള്‍ എന്തോ തകരാറു സംഭവിച്ചിട്ടുണ്ട്.\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"%r എന്ന വിഭാഗത്തിനു സൈറ്റ്മാപ്പൊന്നും ലഭ്യമല്ല.\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"പേജ്  %s കാലിയാണ്\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"'%s' എന്ന പേജില്ല.\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/mn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jacara <baskhuujacara@gmail.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Анхбаяр Анхаа <l.ankhbayar@gmail.com>, 2011, 2012.\n# Баясгалан Цэвлээ <bayasaa_7672@yahoo.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-11 05:35+0000\\n\"\n\"Last-Translator: Анхбаяр Анхаа <l.ankhbayar@gmail.com>\\n\"\n\"Language-Team: Mongolian (http://www.transifex.com/projects/p/django/\"\n\"language/mn/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: mn\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"Бүртгэгдсэн feeds байхгүй байна.\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"%r слаг бүгтгэгдээгүй байна\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"\"\n\"Үндсэн GIS талбар -- OpenGIS газрын зургын Геометрын дүрсны онцгой төрөлтэй \"\n\"байна.\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"Цэг\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"Тэмдэгт мөр\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"Олон өнцөгт\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"Олон цэг\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"Олон мөр бүхий тэмтэгт мөр\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"Олон өнцөгтийн олонлог\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"Дүрсний цуглуулга\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"Дүрс оруулаагүй байна.\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"Буруу дүрс байна.\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"Дүрсийн төрөл буруу байна.\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"\"\n\"An error occurred when transforming the geometry to the SRID дүрсний форм \"\n\"талбарын SRID утгыг хөрвүүлэхэд алдаа гарлаа.\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"Энэ хэсэгт Sitemap алга: %r\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"%s хуудас хоосон\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"'%s' хуудас байхгүй\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/nb/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <jonklo@gmail.com>, 2012.\n# jonklo <jonklo@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 14:13+0000\\n\"\n\"Last-Translator: jonklo <jonklo@gmail.com>\\n\"\n\"Language-Team: Norwegian Bokmål (http://www.transifex.com/projects/p/django/\"\n\"language/nb/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: nb\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"Ingen feeds er registrert.\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"Slug %r er ikke registrert.\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"GIS-basefeltet - tilordnes til OpenGIS Specification Geometry-typen.\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"Punkt\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"Linje-string\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"Polygon\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"Multipunkt\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"Multilinje-string\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"Multi-polygon\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"Geometri-samling\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"Ingen geometriverdi oppgitt.\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"Ugyldig geometriverdi\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"Ugyldig geometritype\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"\"\n\"En feil oppstod ved transformering av geometrien til SRID fra geometrifeltet.\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"Ingen sitemap tilgjengelig for seksjon: %r\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"Side %s tom\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"Ingen side '%s'\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/ne/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Sagar Chalise <chalisesagar@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 12:32+0000\\n\"\n\"Last-Translator: Sagar Chalise <chalisesagar@gmail.com>\\n\"\n\"Language-Team: Nepali (http://www.transifex.com/projects/p/django/language/\"\n\"ne/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ne\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"बिन्दु\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"बहुभुज\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"ज्यामिति संकलन\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"ज्यामिति मान उपलब्ध छैन ।\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"उनुपयुक्त ज्यामिति मान\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"उनुपयुक्त ज्यामिति प्रकार\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/nl/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Blue <alexandervanratingen@gmail.com>, 2011.\n# Harro van der Klauw <hvdklauw@gmail.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Jeffrey Gelens <jeffrey@noppo.pro>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 12:32+0000\\n\"\n\"Last-Translator: Harro van der Klauw <hvdklauw@gmail.com>\\n\"\n\"Language-Team: Dutch (http://www.transifex.com/projects/p/django/language/\"\n\"nl/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: nl\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"Er zijn geen feeds geregistreerd\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"Slug %r is niet geregistreerd.\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"\"\n\"Het basis GIS veld -- corresponderend met het OpenGIS Specificatie \"\n\"Geometrisch type\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"Punt\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"Lijn string\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"Polygoon\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"Multi-punt\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"Multi-lijn string\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"Multi-polygoon\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"Geometrie collectie\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"Geen geometrische waarde opgegeven.\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"Ongeldige geometrie waarde.\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"Ongeldig geometrie type.\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"\"\n\"Er is een fout opgetreden bij het omvormen van de geometrie naar de SRID van \"\n\"het geometrie veld.\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"Geen sitemap beschikbaar voor sectie: %r\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"Pagina %s leeg\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"Geen pagina '%s'\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/nn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 12:32+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Norwegian Nynorsk (http://www.transifex.com/projects/p/django/\"\n\"language/nn/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: nn\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"Punkt\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"Linjestreng\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"Polygon\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"Fleirpunkt\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"Fleirlinje-streng\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"Multi-polygon\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"Geometrisamling\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"Ingen geometriverdi oppgjeve.\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"Ugyldig geometriverdi\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"Ugyldig geometritype\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"\"\n\"Det oppstod ein feil ved transformering av geometrien til SRID frå \"\n\"geometrifeltet.\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/pa/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 12:32+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Panjabi (Punjabi) (http://www.transifex.com/projects/p/django/\"\n\"language/pa/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: pa\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"ਪੁਆਇੰਟ\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"ਲਾਈਨ ਸਤਰ\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"ਬਹੁਭੁਜ\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"ਕਈ-ਪੁਆਇੰਟ\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"ਮਲਟੀ ਬਹੁ-ਭੁਜ\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"ਜੁਮੈਟਰੀ ਭੰਡਾਰ\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"ਕੋਈ ਜੁਮੈਟਰੀ ਮੁੱਲ ਨਹੀਂ ਦਿੱਤਾ ਗਿਆ।\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"ਗਲਤ ਜੁਮੈਟਰੀ ਮੁੱਲ।\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"ਗਲਤ ਜੁਮੈਟਰੀ ਕਿਸਮ।\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/pl/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <angular.circle@gmail.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-21 13:06+0000\\n\"\n\"Last-Translator: angularcircle <angular.circle@gmail.com>\\n\"\n\"Language-Team: Polish (http://www.transifex.com/projects/p/django/language/\"\n\"pl/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: pl\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 \"\n\"|| n%100>=20) ? 1 : 2);\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"Kanał informacyjny (RSS/ATOM) nie został zarejestrowany.\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"Slug '%r' nie został zarejestrowany.\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"\"\n\"Podstawowe pole GIS - odpowiada typowi Geometry w specyfikacji OpenGIS.\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"Punkt\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"Ścieżka\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"Wielokąt\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"Zbiór punktów\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"Zbiór ścieżek\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"Zbiór wielokątów\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"Zbiór geometrii\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"Brak wartości geometrii.\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"Błędna wartość geometrii.\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"Błędny typ geometrii.\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"\"\n\"Wystąpił błąd podczas przekształcania geometrii do SRID pola formularza \"\n\"geometrii.\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"Mapa strony dla sekcji '%r' nie jest dostępna\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"Strona '%s' jest pusta\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"Brak strony '%s'\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/pt/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Nuno Mariz <nmariz@gmail.com>, 2011, 2012.\n# Paulo Köch <paulo.koch@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-04-02 14:41+0000\\n\"\n\"Last-Translator: Nuno Mariz <nmariz@gmail.com>\\n\"\n\"Language-Team: Portuguese (http://www.transifex.com/projects/p/django/\"\n\"language/pt/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: pt\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"Nenhum feed está registado.\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"O slug %r não está registado.\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"O campo GIS base -- mapeado para o tipo especificado no OpenGIS.\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"Ponto\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"Linha\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"Polígono\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"Multi-ponto\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"Multi-linha\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"Multi-polígono\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"Coleção geométrica\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"Não foi submetido nenhum valor do tipo geometria.\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"Valor inválido de geometria.\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"Tipo inválido de geometria.\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"\"\n\"Ocorreu um erro na transformação da geometria para o SRID da geometria do \"\n\"campo do formulário.\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"Nenhum sitemap disponível para secção: %r\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"Página %s vazia\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"Nenhuma página '%s'\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/pt_BR/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Eduardo Carvalho <eduardocereto@gmail.com>, 2011.\n# Guilherme Gondim <semente+transifex@taurinus.org>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-19 18:32+0000\\n\"\n\"Last-Translator: Guilherme Gondim <semente@taurinus.org>\\n\"\n\"Language-Team: Portuguese (Brazil) <django-l10n-portuguese@googlegroups.\"\n\"com>\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: pt_BR\\n\"\n\"Plural-Forms: nplurals=2; plural=(n > 1);\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"Nenhum feed foi registrado.\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"O slug %r não foi registrado.\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"\"\n\"O campo GIS base -- mapeia para o tipo Especificação de Geometria OpenGIS\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"Ponto\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"Linha string\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"Polígono\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"Multiponto\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"Multilinha string\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"Multipolígono\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"Coleção geométrica\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"Nenhum valor geométrico fornecido.\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"Valor geométrico inválido.\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"Tipo geométrico inválido.\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"\"\n\"Ocorreu um erro ao transformar a geometria para o SRID do campo de \"\n\"formulário de geometria.\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"Nenhum sitemap disponível para a seção: %r\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"Página %s vazia\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"Nenhuma página '%s'\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/ro/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Daniel Ursache-Dogariu <contact@danniel.net>, 2011.\n# Denis Darii <sinednx@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 12:32+0000\\n\"\n\"Last-Translator: Daniel Ursache-Dogariu <contact@danniel.net>\\n\"\n\"Language-Team: Romanian (http://www.transifex.com/projects/p/django/language/\"\n\"ro/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ro\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?\"\n\"2:1));\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"\"\n\"Câmpul GIS de bază -- mapat către tipul OpenGIS Specification Geometry.\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"Punct\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"Șir linii\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"Poligon\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"Multi-punct\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"Șir multi-linie\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"Multi poligon\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"Colecție geometrie\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"Nicio valoare geometrică furnizată.\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"Valoare geometrică nevalidă.\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"Tip geometric nevalid.\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"\"\n\"A avut loc o eroare la transformarea geometriei în SRID-ul  câmpului \"\n\"geometric al formularului.\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/ru/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Eugene MechanisM <contact@mechanism.name>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Алексей Борискин <sun.void@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 12:32+0000\\n\"\n\"Last-Translator: Алексей Борискин <sun.void@gmail.com>\\n\"\n\"Language-Team: Russian (http://www.transifex.com/projects/p/django/language/\"\n\"ru/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ru\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"Нет зарегистрированных фидов.\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"Слаг %r не зарегистрирован.\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"\"\n\"Базовое ГИС-поле. Его потомки отражают конкретные геометрические типы по \"\n\"спецификации OpenGIS.\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"Точка\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"Ломаная\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"Многоугольник\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"Набор точек\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"Набор ломаных\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"Набор многоугольников\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"Набор геометрических объектов\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"Не указано значение геометрии.\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"Неверное значение геометрии.\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"Неверный тип геометрии.\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"Произошла ошибка во время преобразования геометрии в SRID.\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"Нет карты сайта для секции: %r\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"Страница  %s пустая\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"Нет страницы '%s'\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/sk/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Juraj Bubniak <>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-07-16 12:16+0000\\n\"\n\"Last-Translator: Juraj Bubniak <translations@jbub.eu>\\n\"\n\"Language-Team: Slovak (http://www.transifex.com/projects/p/django/language/\"\n\"sk/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sk\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"Žiadne kanály nie sú registrované.\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"Identifikátor %r nie je registrovaný.\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"Základné GIS pole -- mapuje na typ OpenGIS Specification Geometry\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"Bod\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"Čiara\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"Polygón\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"Viacero bodov\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"Viacero čiar\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"Viacero polygónov\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"Goemetrická kolekcia\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"Nie je zadaná žiadna geometrická hodnota.\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"Chybná geometrická hodnota.\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"Chybný geometrický typ.\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"Nastala chyba pri prevode geometrie do SRID z formulárového poľa.\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"Žiadna mapa stránok nie je dostupná pre sekciu: %r\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"Stránka %s je prázdna\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"Žiadna stránka '%s'\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/sl/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Gašper Žejn <zejn@kiberpipa.org>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <zejn@kiberpipa.org>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-10-31 19:06+0000\\n\"\n\"Last-Translator: mateju <>\\n\"\n\"Language-Team: Slovenian (http://www.transifex.com/projects/p/django/\"\n\"language/sl/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sl\\n\"\n\"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n\"\n\"%100==4 ? 2 : 3);\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"Ni vpisanih virov.\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"Okrajšava %r ni vpisana.\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"\"\n\"Osnovno polje GIS -- se preslika v vrsto Geometry po določilih OpenGIS.\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"Točka\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"Črtni niz\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"Mnogokotnik\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"Več-točkovi predmet\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"Več črtni niz\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"Večkratni mnogokotnikov\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"Zbirka likov\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"Ni navdene geometrijske vrednosti.\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"Neveljavna geometrijska vrednost.\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"Neveljavna vrsta geometrije.\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"\"\n\"Med pretvarjanjem geometrijskega zapisa v SRID geometrijskega polja je \"\n\"prišlo do napake.\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"Za odsek %r ni zemljevida strani.\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"Stran %s je prazna\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"Ni strani '%s'\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/sq/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Besnik <besnik@programeshqip.org>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-11-25 19:28+0000\\n\"\n\"Last-Translator: Besnik <besnik@programeshqip.org>\\n\"\n\"Language-Team: Albanian (http://www.transifex.com/projects/p/django/language/\"\n\"sq/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sq\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"Nuk ka prurje të regjistruara.\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"Identifikuesi %r nuk është i regjistruar.\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"\"\n\"Fusha bazë GIS -- skiconi sipas llojit Gjeometri me Specifikime OpenGIS.\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"Pikë\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"Varg vije\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"Shumëkëndësh\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"Multi-pika\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"Varg multi-vijë\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"Multi shumëkëndësh\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"Përmbledhje gjeometrie\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"Nuk u dha vlerë gjeometrie.\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"Vlerë e pavlefshme gjeometrie.\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"Lloj i pavlefshëm gjeometrie.\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"\"\n\"Ndodhi një gabim gjatë shndërrimit të gjeometrisë në fushë SRID formulari \"\n\"gjeometrie.\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"Nuk ka të passhme hartë site-i për ndarjen: %r\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"Faqe %s e zbrazët\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"Nuk ka faqe '%s'\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/sr/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Janos Guljas <janos@resenje.org>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 12:32+0000\\n\"\n\"Last-Translator: Janos Guljas <janos@resenje.org>\\n\"\n\"Language-Team: Serbian (http://www.transifex.com/projects/p/django/language/\"\n\"sr/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sr\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"Нема регистрованих фидова.\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"Слаг „%r“ није регистрован.\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"\"\n\"Основно „GIS“ поље које мапира тип геометрије по „OpenGIS“ спецификацији.\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"Тачка\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"Линија\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"Полигон\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"Више тачака\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"Више линија\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"Више полигона\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"Колекција геопметријских облика\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"Нисте задали параметре за геометрију.\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"Неисправан параметар за геометрију.\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"Непостојећи тип геометрије.\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"Грешка се десила током трансформације геометрије на „SRID“ тип поља.\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"Нема сајт мапа за секцију: %r\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"Страница %s је празна\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"Страница „%s“ не постоји\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/sr_Latn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Janos Guljas <janos@resenje.org>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 12:32+0000\\n\"\n\"Last-Translator: Janos Guljas <janos@resenje.org>\\n\"\n\"Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/django/\"\n\"language/sr@latin/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sr@latin\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"Nema registrovanih fidova.\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"Slag „%r“ nije registrovan.\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"\"\n\"Osnovno „GIS“ polje koje mapira tip geometrije po „OpenGIS“ specifikaciji.\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"Tačka\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"Linija\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"Poligon\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"Više tačaka\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"Više linija\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"Više poligona\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"Kolekcija geopmetrijskih oblika\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"Niste zadali parametre za geometriju.\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"Neispravan parametar za geometriju.\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"Nepostojeći tip geometrije.\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"Greška se desila tokom transformacije geometrije na „SRID“ tip polja.\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"Nema sajt mapa za sekciju: %r\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"Stranica %s je prazna\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"Stranica „%s“ ne postoji\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/sv/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Andreas Pelme <andreas@pelme.se>, 2011, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 12:32+0000\\n\"\n\"Last-Translator: Andreas Pelme <andreas@pelme.se>\\n\"\n\"Language-Team: Swedish (http://www.transifex.com/projects/p/django/language/\"\n\"sv/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sv\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"Inga flöden är registrerade.\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"Slugen %r är inte registrerad.\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"Grundläggande GIS-fält -- motsvarar ett OpenGIS-geometrifält.\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"Punkt\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"Linjesegment\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"Polygon\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"Multipunkt\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"Multilinjesegment\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"Multipolygon\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"Geometrisamling\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"Inget geometriskt värde angivet.\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"Ogiltigt geometrivärde.\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"Ogiltig geometrityp\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"Ett fel uppstod under transformering till SRID:t hos formulärsfältet.\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"Ingen sitemap finns tillgänglig för sektionen: %r\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"Sidan %s tom\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"Ingen sida '%s'\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/sw/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-09 18:08+0000\\n\"\n\"Last-Translator: machaku <bmachaku@gmail.com>\\n\"\n\"Language-Team: Swahili (http://www.transifex.com/projects/p/django/language/\"\n\"sw/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sw\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"Slagi %r haijasajiliwa\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"Nukta\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"Poligoni\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"Nukta-mbalimbali\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"Poligoni mbalimbali\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"Mkusanyiko wa jiometri\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"Hakuna thamani ya jiometri iliyotolewa\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"Thamani batili ya jiometri.\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"Aina batili ya jiometri.\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"\"\n\"Makosa yametokea wakati wa kubadilisha jiometri kuwa SRID ya sehemu ya fomu \"\n\"ya jiometri.\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"Hakuna ramani ya tovuti kipengele %r inayopatikana\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"Ukurasa mtupu %s\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"Ukurasa '%s' haupo\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/ta/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2011-01-19 16:52+0000\\n\"\n\"Last-Translator: Django team\\n\"\n\"Language-Team: Tamil (http://www.transifex.com/projects/p/django/language/\"\n\"ta/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ta\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/te/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 12:32+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Telugu (http://www.transifex.com/projects/p/django/language/\"\n\"te/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: te\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"క్షెత్రగనిత మూల్యము ఇవ్వలెదు.\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"సరికాని  క్షేత్రగణిత మూల్యము.\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"సరికాని  క్షేత్రగణిత రకం.\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/th/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Kowit Charoenratchatabhan <kowito@gmail.com>, 2012.\n# Vichai Vongvorakul <vongvichai@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-09 04:19+0000\\n\"\n\"Last-Translator: Kowit Charoenratchatabhan <kowit.s.c@gmail.com>\\n\"\n\"Language-Team: Thai (http://www.transifex.com/projects/p/django/language/\"\n\"th/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: th\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"ไม่มีฟีดที่ลงทะเบียน\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"Slug %r ไม่ได้ลงทะเบียน\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"เขตข้อมูล GIS ฐาน -- แผนที่ไปยังประเภท OpenGIS เรขาคณิตจำเพาะ\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"จุด\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"สายสตริง\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"รูปหลายเหลี่ยม\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"หลาย ๆ จุด\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"สตริงหลายบรรทัด\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"รูปหลายเหลี่ยมหลายรูป\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"คอลเลกชันรูปทรงเรขาคณิต\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"ไม่พบข้อมูลพิกัด\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"ค่าพิกัดผิดพลาด \"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"ขนิดข้อมูลพิกัดผิดพลาด\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"ข้อผิดพลาดที่เกิดขึ้นเมื่อการเปลี่ยนรูปทรงเรขาคณิตที่ SRID ของเขตข้อมูลฟอร์มเรขาคณิต\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"ไม่มีแผนผังไซต์บริการสำหรับส่วน: %r\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"หน้า %s ที่ว่างเปล่า\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"ไม่มีหน้า '%s'\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/tr/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Murat Çorlu <muratcorlu@gmail.com>, 2012.\n# Murat Sahin <martinamca@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 21:17+0000\\n\"\n\"Last-Translator: Murat Sahin <martinamca@gmail.com>\\n\"\n\"Language-Team: Turkish (http://www.transifex.com/projects/p/django/language/\"\n\"tr/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: tr\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"Hiçbir besleme kayıtlı değildir.\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"Slug %r kayıtlı değildir.\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"\"\n\"Taban GIS alanı -- OpenGIS Spesifikasyonu Geometri türüne eşleşmektedir.\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"Nokta\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"Satır dizisi\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"Poligon\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"Çok noktalı\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"Çok satırlı metin\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"Çoklu poligon\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"Geometri kolleksiyonu\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"Hiçbir geometri değeri verilmemiştir.\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"Geçersiz geometri değeri.\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"Geçersiz geometri türü.\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"\"\n\"Geometri verisi geometri form alanının SRID değerine dönüştürülürken hata \"\n\"oluştu.\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"%r bölümü için bir site haritası mevcut değil\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"%s sayfası boş\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"'%s' adında sayfa yok\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/tt/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Azat Khasanshin <lordofbazuks@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 12:32+0000\\n\"\n\"Last-Translator: Azat Khasanshin <lordofbazuks@gmail.com>\\n\"\n\"Language-Team: Tatar (http://www.transifex.com/projects/p/django/language/\"\n\"tt/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: tt\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"\"\n\"Төп ГИС-кыр. Аның токымы OpenGIS спецификациясе буенча геометрик тибларны \"\n\"күрсәтә.\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"Нокта\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"Сынык сызык\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"Күппочмак\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"Нокта җыелмасы\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"Сынык сызыклар җыелмасы\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"Күппочмаклар җыелмасы\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"Геометрик объектлар җыелмасы\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"Геометрик кыйммәт күрсәтелмәгән.\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"Дөрес булмаган геометрик кыйммәт.\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"Дөрес булмаган геометрик тип.\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"Геометриядән SRIDгә үзгәртү вакытында хата килеп чыкты.\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/uk/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <krzroman@gmail.com>, 2012.\n# Sergey Lysach <sergikoff88@gmail.com>, 2011.\n# Андрей Костенко <andrey@kostenko.name>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-08-12 20:30+0000\\n\"\n\"Last-Translator: Roman Kozlovskiy <krzroman@gmail.com>\\n\"\n\"Language-Team: Ukrainian (http://www.transifex.com/projects/p/django/\"\n\"language/uk/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: uk\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"Точка\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"Багатокутник\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"Не задано геометрічне значення.\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"Невірне геометричне значення.\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"Невірний геометричний тип.\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"Помилка при перетворенні геометрії до SRID геометричного поля форми.\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"Немає карти сайту для розділу: %r\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"Сторінка %s порожня\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"Немає сторінки '%s'\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/ur/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Mansoorulhaq Mansoor <mansoorulhaq1986@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 12:32+0000\\n\"\n\"Last-Translator: Mansoorulhaq Mansoor <mansoorulhaq1986@gmail.com>\\n\"\n\"Language-Team: Urdu (http://www.transifex.com/projects/p/django/language/\"\n\"ur/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ur\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"بنیادی GIS خانہ -- مخصوص OpenGIS جیومیٹری کی قسم سے منسلک ھے۔\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"نقطہ\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"لائن سٹرنگ\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"پولی گان\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"کثیر النقاط\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"متعدد لائنوں والا سٹرنگ\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"ملٹی پولی گان\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"جیومیٹری کا ذخیرہ\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"کوئی جیومیٹری ویلیو مھیا نھیں کی گئی۔\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"غلط جیومیٹری ویلیو۔\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"غلط جیومیٹری ٹائپ\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"\"\n\"جیومیٹری کو جیومیٹری کے فارم کے SRID خانے میں تبدیل کرتے ھوئےکوئی خرابی واقع \"\n\"ھو گئی ھے۔\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/vi/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Tran  <hongdiepkien@gmail.com>, 2011.\n# Tran Van <vantxm@yahoo.co.uk>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 12:32+0000\\n\"\n\"Last-Translator: Tran Van <vantxm@yahoo.co.uk>\\n\"\n\"Language-Team: Vietnamese (http://www.transifex.com/projects/p/django/\"\n\"language/vi/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: vi\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"Điểm\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"Đa giác\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"Đa điểm\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"Nhiều đa giác\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"Giá trị của hình dạng không phù h\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"Kiểu hình dạng không phù hợp\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/zh_CN/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Daniel Duan <DaNmarner@gmail.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Kevin Shi <leiarix@gmail.com>, 2012.\n# Lei Yang <yanglei.go@gmail.com>, 2011.\n# Lele Long <schemacs@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-08-26 01:39+0000\\n\"\n\"Last-Translator: 磊 施 <leiarix@gmail.com>\\n\"\n\"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/django/\"\n\"language/zh_CN/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: zh_CN\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"没有已注册的源。\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"Slug %r 没有注册.\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"基本地理信息系统域 - 映射于 OpenGIS 规范几何类型。\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"点\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"行字串\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"多边形\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"多点\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"多行字符串\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"多个多边形\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"几何集合\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"未提供几何信息。\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"无效几何信息。\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"无效几何类型。\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"几何形状的SRID字段发生试图转换错误ました。\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"没有站点地图可用的部分: %r\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"页面 %s 为空\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"无页面 '%s'\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/locale/zh_TW/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <ilay@ilay.tw>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# quantum9876 <quantum9876@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:56+0200\\n\"\n\"PO-Revision-Date: 2012-08-06 03:15+0000\\n\"\n\"Last-Translator: ilay <ilay@ilay.tw>\\n\"\n\"Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/django/\"\n\"language/zh_TW/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: zh_TW\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: views.py:9\nmsgid \"No feeds are registered.\"\nmsgstr \"沒有已註冊的 feed。\"\n\n#: views.py:19\n#, python-format\nmsgid \"Slug %r isn't registered.\"\nmsgstr \"嵌入式語法 %r 尚未註冊。\"\n\n#: db/models/fields.py:51\nmsgid \"The base GIS field -- maps to the OpenGIS Specification Geometry type.\"\nmsgstr \"將基本的 GIS 平面以OpenGIS  Specification Geometry type對應。\"\n\n#: db/models/fields.py:271\nmsgid \"Point\"\nmsgstr \"Point 類別\"\n\n#: db/models/fields.py:275\nmsgid \"Line string\"\nmsgstr \"Line string 類別\"\n\n#: db/models/fields.py:279\nmsgid \"Polygon\"\nmsgstr \"Polygon 類別\"\n\n#: db/models/fields.py:283\nmsgid \"Multi-point\"\nmsgstr \"Multi-point 類別\"\n\n#: db/models/fields.py:287\nmsgid \"Multi-line string\"\nmsgstr \"Multi-line string 類別\"\n\n#: db/models/fields.py:291\nmsgid \"Multi polygon\"\nmsgstr \"Multi polygon 類別\"\n\n#: db/models/fields.py:295\nmsgid \"Geometry collection\"\nmsgstr \"Geometry collection (幾何型別之叢集) 類別\"\n\n#: forms/fields.py:19\nmsgid \"No geometry value provided.\"\nmsgstr \"沒有幾何資訊。\"\n\n#: forms/fields.py:20\nmsgid \"Invalid geometry value.\"\nmsgstr \"無效的幾何參數。\"\n\n#: forms/fields.py:21\nmsgid \"Invalid geometry type.\"\nmsgstr \"無效的幾何類型。\"\n\n#: forms/fields.py:22\nmsgid \"\"\n\"An error occurred when transforming the geometry to the SRID of the geometry \"\n\"form field.\"\nmsgstr \"當把目前地理資訊-GIS，轉成空間參考識別碼-SRID時發生錯誤。\"\n\n#: sitemaps/views.py:46\n#, python-format\nmsgid \"No sitemap available for section: %r\"\nmsgstr \"區域 %r 無可用的網站地圖\"\n\n#: sitemaps/views.py:60\n#, python-format\nmsgid \"Page %s empty\"\nmsgstr \"頁面 %s 為空\"\n\n#: sitemaps/views.py:62\n#, python-format\nmsgid \"No page '%s'\"\nmsgstr \"無此頁面 '%s'\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/management/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/management/commands/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/management/commands/inspectdb.py",
    "content": "from django.core.management.commands.inspectdb import Command as InspectDBCommand\n\nclass Command(InspectDBCommand):\n    db_module = 'django.contrib.gis.db'\n    gis_tables = {}\n\n    def get_field_type(self, connection, table_name, row):\n        field_type, field_params, field_notes = super(Command, self).get_field_type(connection, table_name, row)\n        if field_type == 'GeometryField':\n            geo_col = row[0]\n            # Getting a more specific field type and any additional parameters\n            # from the `get_geometry_type` routine for the spatial backend.\n            field_type, geo_params = connection.introspection.get_geometry_type(table_name, geo_col)\n            field_params.update(geo_params)\n            # Adding the table name and column to the `gis_tables` dictionary, this\n            # allows us to track which tables need a GeoManager.\n            if table_name in self.gis_tables:\n                self.gis_tables[table_name].append(geo_col)\n            else:\n                self.gis_tables[table_name] = [geo_col]\n        return field_type, field_params, field_notes\n\n    def get_meta(self, table_name):\n        meta_lines = super(Command, self).get_meta(table_name)\n        if table_name in self.gis_tables:\n            # If the table is a geographic one, then we need make\n            # GeoManager the default manager for the model.\n            meta_lines.insert(0, '    objects = models.GeoManager()')\n        return meta_lines\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/management/commands/ogrinspect.py",
    "content": "import os\nfrom optparse import make_option\nfrom django.contrib.gis import gdal\nfrom django.core.management.base import LabelCommand, CommandError\n\ndef layer_option(option, opt, value, parser):\n    \"\"\"\n    Callback for `make_option` for the `ogrinspect` `layer_key`\n    keyword option which may be an integer or a string.\n    \"\"\"\n    try:\n        dest = int(value)\n    except ValueError:\n        dest = value\n    setattr(parser.values, option.dest, dest)\n\ndef list_option(option, opt, value, parser):\n    \"\"\"\n    Callback for `make_option` for `ogrinspect` keywords that require\n    a string list.  If the string is 'True'/'true' then the option\n    value will be a boolean instead.\n    \"\"\"\n    if value.lower() == 'true':\n        dest = True\n    else:\n        dest = [s for s in value.split(',')]\n    setattr(parser.values, option.dest, dest)\n\nclass Command(LabelCommand):\n    help = ('Inspects the given OGR-compatible data source (e.g., a shapefile) and outputs\\n'\n            'a GeoDjango model with the given model name. For example:\\n'\n            ' ./manage.py ogrinspect zipcode.shp Zipcode')\n    args = '[data_source] [model_name]'\n\n    option_list = LabelCommand.option_list + (\n        make_option('--blank', dest='blank', type='string', action='callback',\n                    callback=list_option, default=False,\n                    help='Use a comma separated list of OGR field names to add '\n                    'the `blank=True` option to the field definition.  Set with'\n                    '`true` to apply to all applicable fields.'),\n        make_option('--decimal', dest='decimal', type='string', action='callback',\n                    callback=list_option, default=False,\n                    help='Use a comma separated list of OGR float fields to '\n                    'generate `DecimalField` instead of the default '\n                    '`FloatField`. Set to `true` to apply to all OGR float fields.'),\n        make_option('--geom-name', dest='geom_name', type='string', default='geom',\n                    help='Specifies the model name for the Geometry Field '\n                    '(defaults to `geom`)'),\n        make_option('--layer', dest='layer_key', type='string', action='callback',\n                    callback=layer_option, default=0,\n                    help='The key for specifying which layer in the OGR data '\n                    'source to use. Defaults to 0 (the first layer). May be '\n                    'an integer or a string identifier for the layer.'),\n        make_option('--multi-geom', action='store_true', dest='multi_geom', default=False,\n                    help='Treat the geometry in the data source as a geometry collection.'),\n        make_option('--name-field', dest='name_field',\n                    help='Specifies a field name to return for the `__unicode__` function.'),\n        make_option('--no-imports', action='store_false', dest='imports', default=True,\n                    help='Do not include `from django.contrib.gis.db import models` '\n                    'statement.'),\n        make_option('--null', dest='null', type='string', action='callback',\n                    callback=list_option, default=False,\n                    help='Use a comma separated list of OGR field names to add '\n                    'the `null=True` option to the field definition.  Set with'\n                    '`true` to apply to all applicable fields.'),\n        make_option('--srid', dest='srid',\n                    help='The SRID to use for the Geometry Field.  If it can be '\n                    'determined, the SRID of the data source is used.'),\n        make_option('--mapping', action='store_true', dest='mapping',\n                    help='Generate mapping dictionary for use with `LayerMapping`.')\n        )\n\n    requires_model_validation = False\n\n    def handle(self, *args, **options):\n        try:\n            data_source, model_name = args\n        except ValueError:\n            raise CommandError('Invalid arguments, must provide: %s' % self.args)\n\n        if not gdal.HAS_GDAL:\n            raise CommandError('GDAL is required to inspect geospatial data sources.')\n\n        # Removing options with `None` values.\n        options = dict([(k, v) for k, v in options.items() if not v is None])\n\n        # Getting the OGR DataSource from the string parameter.\n        try:\n            ds = gdal.DataSource(data_source)\n        except gdal.OGRException as msg:\n            raise CommandError(msg)\n\n        # Whether the user wants to generate the LayerMapping dictionary as well.\n        show_mapping = options.pop('mapping', False)\n\n        # Getting rid of settings that `_ogrinspect` doesn't like.\n        verbosity = options.pop('verbosity', False)\n        settings = options.pop('settings', False)\n\n        # Returning the output of ogrinspect with the given arguments\n        # and options.\n        from django.contrib.gis.utils.ogrinspect import _ogrinspect, mapping\n        output = [s for s in _ogrinspect(ds, model_name, **options)]\n        if show_mapping:\n            # Constructing the keyword arguments for `mapping`, and\n            # calling it on the data source.\n            kwargs = {'geom_name' : options['geom_name'],\n                      'layer_key' : options['layer_key'],\n                      'multi_geom' : options['multi_geom'],\n                      }\n            mapping_dict = mapping(ds, **kwargs)\n            # This extra legwork is so that the dictionary definition comes\n            # out in the same order as the fields in the model definition.\n            rev_mapping = dict([(v, k) for k, v in mapping_dict.items()])\n            output.extend(['', '# Auto-generated `LayerMapping` dictionary for %s model' % model_name,\n                           '%s_mapping = {' % model_name.lower()])\n            output.extend([\"    '%s' : '%s',\" % (rev_mapping[ogr_fld], ogr_fld) for ogr_fld in ds[options['layer_key']].fields])\n            output.extend([\"    '%s' : '%s',\" % (options['geom_name'], mapping_dict[options['geom_name']]), '}'])\n        return '\\n'.join(output) + '\\n'\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/maps/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/maps/google/__init__.py",
    "content": "\"\"\"\n  This module houses the GoogleMap object, used for generating\n   the needed javascript to embed Google Maps in a Web page.\n\n  Google(R) is a registered trademark of Google, Inc. of Mountain View, California.\n\n  Example:\n\n   * In the view:\n      return render_to_response('template.html', {'google' : GoogleMap(key=\"abcdefg\")})\n\n   * In the template:\n\n     <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n     {{ google.xhtml }}\n     <head>\n       <title>Google Maps via GeoDjango</title>\n       {{ google.style }}\n       {{ google.scripts }}\n     </head>\n     {{ google.body }}\n     <div id=\"{{ google.dom_id }}\" style=\"width:600px;height:400px;\"></div>\n     </body>\n     </html>\n\n     Note:  If you want to be more explicit in your templates, the following are\n      equivalent:\n      {{ google.body }} => \"<body {{ google.onload }} {{ google.onunload }}>\"\n      {{ google.xhtml }} => \"<html xmlns=\"http://www.w3.org/1999/xhtml\" {{ google.xmlns }}>\"\n      {{ google.style }} => \"<style>{{ google.vml_css }}</style>\"\n\n  Explanation:\n   - The `xhtml` property provides the correct XML namespace needed for \n     Google Maps to operate in IE using XHTML.  Google Maps on IE uses\n     VML to draw polylines.  Returns, by default: \n     <html xmlns=\"http://www.w3.org/1999/xhtml\" xmlns:v=\"urn:schemas-microsoft-com:vml\">\n       \n   - The `style` property provides the correct style tag for the CSS\n     properties required by Google Maps on IE:\n     <style type=\"text/css\">v\\:* {behavior:url(#default#VML);}</style>\n\n   - The `scripts` property provides the necessary <script> tags for \n     including the Google Maps javascript, as well as including the\n     generated javascript.\n\n   - The `body` property provides the correct attributes for the \n     body tag to load the generated javascript.  By default, returns:\n     <body onload=\"gmap_load()\" onunload=\"GUnload()\">\n\n   - The `dom_id` property returns the DOM id for the map.  Defaults to \"map\".\n\n  The following attributes may be set or customized in your local settings:\n   * GOOGLE_MAPS_API_KEY: String of your Google Maps API key.  These are tied to\n      to a domain.  May be obtained from http://www.google.com/apis/maps/\n   * GOOGLE_MAPS_API_VERSION (optional): Defaults to using \"2.x\"\n   * GOOGLE_MAPS_URL (optional): Must have a substitution ('%s') for the API\n      version.\n\"\"\"\nfrom django.contrib.gis.maps.google.gmap import GoogleMap, GoogleMapSet\nfrom django.contrib.gis.maps.google.overlays import GEvent, GIcon, GMarker, GPolygon, GPolyline\nfrom django.contrib.gis.maps.google.zoom import GoogleZoom\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/maps/google/gmap.py",
    "content": "from django.conf import settings\nfrom django.template.loader import render_to_string\nfrom django.utils.html import format_html\nfrom django.utils.safestring import mark_safe\nfrom django.utils.six.moves import xrange\n\nfrom django.contrib.gis.maps.google.overlays import GPolygon, GPolyline, GMarker\n\nclass GoogleMapException(Exception):\n    pass\n\n\n# The default Google Maps URL (for the API javascript)\n# TODO: Internationalize for Japan, UK, etc.\nGOOGLE_MAPS_URL='http://maps.google.com/maps?file=api&v=%s&key='\n\n\nclass GoogleMap(object):\n    \"A class for generating Google Maps JavaScript.\"\n\n    # String constants\n    onunload = mark_safe('onunload=\"GUnload()\"') # Cleans up after Google Maps\n    vml_css  = mark_safe('v\\:* {behavior:url(#default#VML);}') # CSS for IE VML\n    xmlns    = mark_safe('xmlns:v=\"urn:schemas-microsoft-com:vml\"') # XML Namespace (for IE VML).\n\n    def __init__(self, key=None, api_url=None, version=None,\n                 center=None, zoom=None, dom_id='map',\n                 kml_urls=[], polylines=None, polygons=None, markers=None,\n                 template='gis/google/google-map.js',\n                 js_module='geodjango',\n                 extra_context={}):\n\n        # The Google Maps API Key defined in the settings will be used\n        # if not passed in as a parameter.  The use of an API key is\n        # _required_.\n        if not key:\n            try:\n                self.key = settings.GOOGLE_MAPS_API_KEY\n            except AttributeError:\n                raise GoogleMapException('Google Maps API Key not found (try adding GOOGLE_MAPS_API_KEY to your settings).')\n        else:\n            self.key = key\n\n        # Getting the Google Maps API version, defaults to using the latest (\"2.x\"),\n        # this is not necessarily the most stable.\n        if not version:\n            self.version = getattr(settings, 'GOOGLE_MAPS_API_VERSION', '2.x')\n        else:\n            self.version = version\n\n        # Can specify the API URL in the `api_url` keyword.\n        if not api_url:\n            self.api_url = getattr(settings, 'GOOGLE_MAPS_URL', GOOGLE_MAPS_URL) % self.version\n        else:\n            self.api_url = api_url\n\n        # Setting the DOM id of the map, the load function, the JavaScript\n        # template, and the KML URLs array.\n        self.dom_id = dom_id\n        self.extra_context = extra_context\n        self.js_module = js_module\n        self.template = template\n        self.kml_urls = kml_urls\n\n        # Does the user want any GMarker, GPolygon, and/or GPolyline overlays?\n        overlay_info = [[GMarker, markers, 'markers'],\n                        [GPolygon, polygons, 'polygons'],\n                        [GPolyline, polylines, 'polylines']]\n\n        for overlay_class, overlay_list, varname in overlay_info:\n            setattr(self, varname, [])\n            if overlay_list:\n                for overlay in overlay_list:\n                    if isinstance(overlay, overlay_class):\n                        getattr(self, varname).append(overlay)\n                    else:\n                        getattr(self, varname).append(overlay_class(overlay))\n\n        # If GMarker, GPolygons, and/or GPolylines are used the zoom will be\n        # automatically calculated via the Google Maps API.  If both a zoom\n        # level and a center coordinate are provided with polygons/polylines,\n        # no automatic determination will occur.\n        self.calc_zoom = False\n        if self.polygons or self.polylines  or self.markers:\n            if center is None or zoom is None:\n                self.calc_zoom = True\n\n        # Defaults for the zoom level and center coordinates if the zoom\n        # is not automatically calculated.\n        if zoom is None: zoom = 4\n        self.zoom = zoom\n        if center is None: center = (0, 0)\n        self.center = center\n\n    def render(self):\n        \"\"\"\n        Generates the JavaScript necessary for displaying this Google Map.\n        \"\"\"\n        params = {'calc_zoom' : self.calc_zoom,\n                  'center' : self.center,\n                  'dom_id' : self.dom_id,\n                  'js_module' : self.js_module,\n                  'kml_urls' : self.kml_urls,\n                  'zoom' : self.zoom,\n                  'polygons' : self.polygons,\n                  'polylines' : self.polylines,\n                  'icons': self.icons,\n                  'markers' : self.markers,\n                  }\n        params.update(self.extra_context)\n        return render_to_string(self.template, params)\n\n    @property\n    def body(self):\n        \"Returns HTML body tag for loading and unloading Google Maps javascript.\"\n        return format_html('<body {0} {1}>', self.onload, self.onunload)\n\n    @property\n    def onload(self):\n        \"Returns the `onload` HTML <body> attribute.\"\n        return format_html('onload=\"{0}.{1}_load()\"', self.js_module, self.dom_id)\n\n    @property\n    def api_script(self):\n        \"Returns the <script> tag for the Google Maps API javascript.\"\n        return format_html('<script src=\"{0}{1}\" type=\"text/javascript\"></script>',\n                           self.api_url, self.key)\n\n    @property\n    def js(self):\n        \"Returns only the generated Google Maps JavaScript (no <script> tags).\"\n        return self.render()\n\n    @property\n    def scripts(self):\n        \"Returns all <script></script> tags required with Google Maps JavaScript.\"\n        return format_html('%s\\n  <script type=\"text/javascript\">\\n//<![CDATA[\\n%s//]]>\\n  </script>', self.api_script, mark_safe(self.js))\n\n    @property\n    def style(self):\n        \"Returns additional CSS styling needed for Google Maps on IE.\"\n        return format_html('<style type=\"text/css\">{0}</style>', self.vml_css)\n\n    @property\n    def xhtml(self):\n        \"Returns XHTML information needed for IE VML overlays.\"\n        return format_html('<html xmlns=\"http://www.w3.org/1999/xhtml\" {0}>', self.xmlns)\n\n    @property\n    def icons(self):\n        \"Returns a sequence of GIcon objects in this map.\"\n        return set([marker.icon for marker in self.markers if marker.icon])\n\nclass GoogleMapSet(GoogleMap):\n\n    def __init__(self, *args, **kwargs):\n        \"\"\"\n        A class for generating sets of Google Maps that will be shown on the\n        same page together.\n\n        Example:\n         gmapset = GoogleMapSet( GoogleMap( ... ), GoogleMap( ... ) )\n         gmapset = GoogleMapSet( [ gmap1, gmap2] )\n        \"\"\"\n        # The `google-multi.js` template is used instead of `google-single.js`\n        # by default.\n        template = kwargs.pop('template', 'gis/google/google-multi.js')\n\n        # This is the template used to generate the GMap load JavaScript for\n        # each map in the set.\n        self.map_template = kwargs.pop('map_template', 'gis/google/google-single.js')\n\n        # Running GoogleMap.__init__(), and resetting the template\n        # value with default obtained above.\n        super(GoogleMapSet, self).__init__(**kwargs)\n        self.template = template\n\n        # If a tuple/list passed in as first element of args, then assume\n        if isinstance(args[0], (tuple, list)):\n            self.maps = args[0]\n        else:\n            self.maps = args\n\n        # Generating DOM ids for each of the maps in the set.\n        self.dom_ids = ['map%d' % i for i in xrange(len(self.maps))]\n\n    def load_map_js(self):\n        \"\"\"\n        Returns JavaScript containing all of the loading routines for each\n        map in this set.\n        \"\"\"\n        result = []\n        for dom_id, gmap in zip(self.dom_ids, self.maps):\n            # Backup copies the GoogleMap DOM id and template attributes.\n            # They are overridden on each GoogleMap instance in the set so\n            # that only the loading JavaScript (and not the header variables)\n            # is used with the generated DOM ids.\n            tmp = (gmap.template, gmap.dom_id)\n            gmap.template = self.map_template\n            gmap.dom_id = dom_id\n            result.append(gmap.js)\n            # Restoring the backup values.\n            gmap.template, gmap.dom_id = tmp\n        return mark_safe(''.join(result))\n\n    def render(self):\n        \"\"\"\n        Generates the JavaScript for the collection of Google Maps in\n        this set.\n        \"\"\"\n        params = {'js_module' : self.js_module,\n                  'dom_ids' : self.dom_ids,\n                  'load_map_js' : self.load_map_js(),\n                  'icons' : self.icons,\n                  }\n        params.update(self.extra_context)\n        return render_to_string(self.template, params)\n\n    @property\n    def onload(self):\n        \"Returns the `onload` HTML <body> attribute.\"\n        # Overloaded to use the `load` function defined in the\n        # `google-multi.js`, which calls the load routines for\n        # each one of the individual maps in the set.\n        return mark_safe('onload=\"%s.load()\"' % self.js_module)\n\n    @property\n    def icons(self):\n        \"Returns a sequence of all icons in each map of the set.\"\n        icons = set()\n        for map in self.maps: icons |= map.icons\n        return icons\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/maps/google/overlays.py",
    "content": "from django.contrib.gis.geos import fromstr, Point, LineString, LinearRing, Polygon\nfrom django.utils.functional import total_ordering\nfrom django.utils.safestring import mark_safe\nfrom django.utils import six\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n@python_2_unicode_compatible\nclass GEvent(object):\n    \"\"\"\n    A Python wrapper for the Google GEvent object.\n\n    Events can be attached to any object derived from GOverlayBase with the\n    add_event() call.\n\n    For more information please see the Google Maps API Reference:\n     http://code.google.com/apis/maps/documentation/reference.html#GEvent\n\n    Example:\n\n      from django.shortcuts import render_to_response\n      from django.contrib.gis.maps.google import GoogleMap, GEvent, GPolyline\n\n      def sample_request(request):\n          polyline = GPolyline('LINESTRING(101 26, 112 26, 102 31)')\n          event = GEvent('click',\n            'function() { location.href = \"http://www.google.com\"}')\n          polyline.add_event(event)\n          return render_to_response('mytemplate.html',\n          {'google' : GoogleMap(polylines=[polyline])})\n    \"\"\"\n\n    def __init__(self, event, action):\n        \"\"\"\n        Initializes a GEvent object.\n\n        Parameters:\n\n        event:\n          string for the event, such as 'click'. The event must be a valid\n          event for the object in the Google Maps API.\n          There is no validation of the event type within Django.\n\n        action:\n          string containing a Javascript function, such as\n          'function() { location.href = \"newurl\";}'\n          The string must be a valid Javascript function. Again there is no\n          validation fo the function within Django.\n        \"\"\"\n        self.event = event\n        self.action = action\n\n    def __str__(self):\n        \"Returns the parameter part of a GEvent.\"\n        return mark_safe('\"%s\", %s' %(self.event, self.action))\n\n@python_2_unicode_compatible\nclass GOverlayBase(object):\n    def __init__(self):\n        self.events = []\n\n    def latlng_from_coords(self, coords):\n        \"Generates a JavaScript array of GLatLng objects for the given coordinates.\"\n        return '[%s]' % ','.join(['new GLatLng(%s,%s)' % (y, x) for x, y in coords])\n\n    def add_event(self, event):\n        \"Attaches a GEvent to the overlay object.\"\n        self.events.append(event)\n\n    def __str__(self):\n        \"The string representation is the JavaScript API call.\"\n        return mark_safe('%s(%s)' % (self.__class__.__name__, self.js_params))\n\nclass GPolygon(GOverlayBase):\n    \"\"\"\n    A Python wrapper for the Google GPolygon object.  For more information\n    please see the Google Maps API Reference:\n     http://code.google.com/apis/maps/documentation/reference.html#GPolygon\n    \"\"\"\n    def __init__(self, poly,\n                 stroke_color='#0000ff', stroke_weight=2, stroke_opacity=1,\n                 fill_color='#0000ff', fill_opacity=0.4):\n        \"\"\"\n        The GPolygon object initializes on a GEOS Polygon or a parameter that\n        may be instantiated into GEOS Polygon.  Please note that this will not\n        depict a Polygon's internal rings.\n\n        Keyword Options:\n\n          stroke_color:\n            The color of the polygon outline. Defaults to '#0000ff' (blue).\n\n          stroke_weight:\n            The width of the polygon outline, in pixels.  Defaults to 2.\n\n          stroke_opacity:\n            The opacity of the polygon outline, between 0 and 1.  Defaults to 1.\n\n          fill_color:\n            The color of the polygon fill.  Defaults to '#0000ff' (blue).\n\n          fill_opacity:\n            The opacity of the polygon fill.  Defaults to 0.4.\n        \"\"\"\n        if isinstance(poly, six.string_types): poly = fromstr(poly)\n        if isinstance(poly, (tuple, list)): poly = Polygon(poly)\n        if not isinstance(poly, Polygon):\n            raise TypeError('GPolygon may only initialize on GEOS Polygons.')\n\n        # Getting the envelope of the input polygon (used for automatically\n        # determining the zoom level).\n        self.envelope = poly.envelope\n\n        # Translating the coordinates into a JavaScript array of\n        # Google `GLatLng` objects.\n        self.points = self.latlng_from_coords(poly.shell.coords)\n\n        # Stroke settings.\n        self.stroke_color, self.stroke_opacity, self.stroke_weight = stroke_color, stroke_opacity, stroke_weight\n\n        # Fill settings.\n        self.fill_color, self.fill_opacity = fill_color, fill_opacity\n\n        super(GPolygon, self).__init__()\n\n    @property\n    def js_params(self):\n        return '%s, \"%s\", %s, %s, \"%s\", %s' % (self.points, self.stroke_color, self.stroke_weight, self.stroke_opacity,\n                                               self.fill_color, self.fill_opacity)\n\nclass GPolyline(GOverlayBase):\n    \"\"\"\n    A Python wrapper for the Google GPolyline object.  For more information\n    please see the Google Maps API Reference:\n     http://code.google.com/apis/maps/documentation/reference.html#GPolyline\n    \"\"\"\n    def __init__(self, geom, color='#0000ff', weight=2, opacity=1):\n        \"\"\"\n        The GPolyline object may be initialized on GEOS LineStirng, LinearRing,\n        and Polygon objects (internal rings not supported) or a parameter that\n        may instantiated into one of the above geometries.\n\n        Keyword Options:\n\n          color:\n            The color to use for the polyline.  Defaults to '#0000ff' (blue).\n\n          weight:\n            The width of the polyline, in pixels.  Defaults to 2.\n\n          opacity:\n            The opacity of the polyline, between 0 and 1.  Defaults to 1.\n        \"\"\"\n        # If a GEOS geometry isn't passed in, try to contsruct one.\n        if isinstance(geom, six.string_types): geom = fromstr(geom)\n        if isinstance(geom, (tuple, list)): geom = Polygon(geom)\n        # Generating the lat/lng coordinate pairs.\n        if isinstance(geom, (LineString, LinearRing)):\n            self.latlngs = self.latlng_from_coords(geom.coords)\n        elif isinstance(geom, Polygon):\n            self.latlngs = self.latlng_from_coords(geom.shell.coords)\n        else:\n            raise TypeError('GPolyline may only initialize on GEOS LineString, LinearRing, and/or Polygon geometries.')\n\n        # Getting the envelope for automatic zoom determination.\n        self.envelope = geom.envelope\n        self.color, self.weight, self.opacity = color, weight, opacity\n        super(GPolyline, self).__init__()\n\n    @property\n    def js_params(self):\n        return '%s, \"%s\", %s, %s' % (self.latlngs, self.color, self.weight, self.opacity)\n\n\n@total_ordering\nclass GIcon(object):\n    \"\"\"\n    Creates a GIcon object to pass into a Gmarker object.\n\n    The keyword arguments map to instance attributes of the same name. These,\n    in turn, correspond to a subset of the attributes of the official GIcon\n    javascript object:\n\n    http://code.google.com/apis/maps/documentation/reference.html#GIcon\n\n    Because a Google map often uses several different icons, a name field has\n    been added to the required arguments.\n\n    Required Arguments:\n        varname:\n            A string which will become the basis for the js variable name of\n            the marker, for this reason, your code should assign a unique\n            name for each GIcon you instantiate, otherwise there will be\n            name space collisions in your javascript.\n\n    Keyword Options:\n        image:\n            The url of the image to be used as the icon on the map defaults\n            to 'G_DEFAULT_ICON'\n\n        iconsize:\n            a tuple representing the pixel size of the foreground (not the\n            shadow) image of the icon, in the format: (width, height) ex.:\n\n            GIcon('fast_food',\n                  image=\"/media/icon/star.png\",\n                  iconsize=(15,10))\n\n            Would indicate your custom icon was 15px wide and 10px height.\n\n        shadow:\n            the url of the image of the icon's shadow\n\n        shadowsize:\n            a tuple representing the pixel size of the shadow image, format is\n            the same as ``iconsize``\n\n        iconanchor:\n            a tuple representing the pixel coordinate relative to the top left\n            corner of the icon image at which this icon is anchored to the map.\n            In (x, y) format.  x increases to the right in the Google Maps\n            coordinate system and y increases downwards in the Google Maps\n            coordinate system.)\n\n        infowindowanchor:\n            The pixel coordinate relative to the top left corner of the icon\n            image at which the info window is anchored to this icon.\n\n    \"\"\"\n    def __init__(self, varname, image=None, iconsize=None,\n                 shadow=None, shadowsize=None, iconanchor=None,\n                 infowindowanchor=None):\n        self.varname = varname\n        self.image = image\n        self.iconsize = iconsize\n        self.shadow = shadow\n        self.shadowsize = shadowsize\n        self.iconanchor = iconanchor\n        self.infowindowanchor = infowindowanchor\n\n    def __eq__(self, other):\n        return self.varname == other.varname\n\n    def __lt__(self, other):\n        return self.varname < other.varname\n\n    def __hash__(self):\n        # XOR with hash of GIcon type so that hash('varname') won't\n        # equal hash(GIcon('varname')).\n        return hash(self.__class__) ^ hash(self.varname)\n\nclass GMarker(GOverlayBase):\n    \"\"\"\n    A Python wrapper for the Google GMarker object.  For more information\n    please see the Google Maps API Reference:\n     http://code.google.com/apis/maps/documentation/reference.html#GMarker\n\n    Example:\n\n      from django.shortcuts import render_to_response\n      from django.contrib.gis.maps.google.overlays import GMarker, GEvent\n\n      def sample_request(request):\n          marker = GMarker('POINT(101 26)')\n          event = GEvent('click',\n                         'function() { location.href = \"http://www.google.com\"}')\n          marker.add_event(event)\n          return render_to_response('mytemplate.html',\n                 {'google' : GoogleMap(markers=[marker])})\n    \"\"\"\n    def __init__(self, geom, title=None, draggable=False, icon=None):\n        \"\"\"\n        The GMarker object may initialize on GEOS Points or a parameter\n        that may be instantiated into a GEOS point.  Keyword options map to\n        GMarkerOptions -- so far only the title option is supported.\n\n        Keyword Options:\n         title:\n           Title option for GMarker, will be displayed as a tooltip.\n\n         draggable:\n           Draggable option for GMarker, disabled by default.\n        \"\"\"\n        # If a GEOS geometry isn't passed in, try to construct one.\n        if isinstance(geom, six.string_types): geom = fromstr(geom)\n        if isinstance(geom, (tuple, list)): geom = Point(geom)\n        if isinstance(geom, Point):\n            self.latlng = self.latlng_from_coords(geom.coords)\n        else:\n            raise TypeError('GMarker may only initialize on GEOS Point geometry.')\n        # Getting the envelope for automatic zoom determination.\n        self.envelope = geom.envelope\n        # TODO: Add support for more GMarkerOptions\n        self.title = title\n        self.draggable = draggable\n        self.icon = icon\n        super(GMarker, self).__init__()\n\n    def latlng_from_coords(self, coords):\n        return 'new GLatLng(%s,%s)' %(coords[1], coords[0])\n\n    def options(self):\n        result = []\n        if self.title: result.append('title: \"%s\"' % self.title)\n        if self.icon: result.append('icon: %s' % self.icon.varname)\n        if self.draggable: result.append('draggable: true')\n        return '{%s}' % ','.join(result)\n\n    @property\n    def js_params(self):\n        return '%s, %s' % (self.latlng, self.options())\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/maps/google/zoom.py",
    "content": "from django.contrib.gis.geos import GEOSGeometry, LinearRing, Polygon, Point\nfrom django.contrib.gis.maps.google.gmap import GoogleMapException\nfrom django.utils.six.moves import xrange\nfrom math import pi, sin, log, exp, atan\n\n# Constants used for degree to radian conversion, and vice-versa.\nDTOR = pi / 180.\nRTOD = 180. / pi\n\nclass GoogleZoom(object):\n    \"\"\"\n    GoogleZoom is a utility for performing operations related to the zoom\n    levels on Google Maps.\n\n    This class is inspired by the OpenStreetMap Mapnik tile generation routine\n    `generate_tiles.py`, and the article \"How Big Is the World\" (Hack #16) in\n    \"Google Maps Hacks\" by Rich Gibson and Schuyler Erle.\n\n    `generate_tiles.py` may be found at:\n      http://trac.openstreetmap.org/browser/applications/rendering/mapnik/generate_tiles.py\n\n    \"Google Maps Hacks\" may be found at http://safari.oreilly.com/0596101619\n    \"\"\"\n\n    def __init__(self, num_zoom=19, tilesize=256):\n        \"Initializes the Google Zoom object.\"\n        # Google's tilesize is 256x256, square tiles are assumed.\n        self._tilesize = tilesize\n\n        # The number of zoom levels\n        self._nzoom = num_zoom\n\n        # Initializing arrays to hold the parameters for each one of the\n        # zoom levels.\n        self._degpp = [] # Degrees per pixel\n        self._radpp = [] # Radians per pixel\n        self._npix  = [] # 1/2 the number of pixels for a tile at the given zoom level\n\n        # Incrementing through the zoom levels and populating the parameter arrays.\n        z = tilesize # The number of pixels per zoom level.\n        for i in xrange(num_zoom):\n            # Getting the degrees and radians per pixel, and the 1/2 the number of\n            # for every zoom level.\n            self._degpp.append(z / 360.) # degrees per pixel\n            self._radpp.append(z / (2 * pi)) # radians per pixel\n            self._npix.append(z / 2) # number of pixels to center of tile\n\n            # Multiplying `z` by 2 for the next iteration.\n            z *= 2\n\n    def __len__(self):\n        \"Returns the number of zoom levels.\"\n        return self._nzoom\n\n    def get_lon_lat(self, lonlat):\n        \"Unpacks longitude, latitude from GEOS Points and 2-tuples.\"\n        if isinstance(lonlat, Point):\n            lon, lat = lonlat.coords\n        else:\n            lon, lat = lonlat\n        return lon, lat\n\n    def lonlat_to_pixel(self, lonlat, zoom):\n        \"Converts a longitude, latitude coordinate pair for the given zoom level.\"\n        # Setting up, unpacking the longitude, latitude values and getting the\n        # number of pixels for the given zoom level.\n        lon, lat = self.get_lon_lat(lonlat)\n        npix = self._npix[zoom]\n\n        # Calculating the pixel x coordinate by multiplying the longitude value\n        # with with the number of degrees/pixel at the given zoom level.\n        px_x = round(npix + (lon * self._degpp[zoom]))\n\n        # Creating the factor, and ensuring that 1 or -1 is not passed in as the\n        # base to the logarithm.  Here's why:\n        #  if fac = -1, we'll get log(0) which is undefined;\n        #  if fac =  1, our logarithm base will be divided by 0, also undefined.\n        fac = min(max(sin(DTOR * lat), -0.9999), 0.9999)\n\n        # Calculating the pixel y coordinate.\n        px_y = round(npix + (0.5 * log((1 + fac)/(1 - fac)) * (-1.0 * self._radpp[zoom])))\n\n        # Returning the pixel x, y to the caller of the function.\n        return (px_x, px_y)\n\n    def pixel_to_lonlat(self, px, zoom):\n        \"Converts a pixel to a longitude, latitude pair at the given zoom level.\"\n        if len(px) != 2:\n            raise TypeError('Pixel should be a sequence of two elements.')\n\n        # Getting the number of pixels for the given zoom level.\n        npix = self._npix[zoom]\n\n        # Calculating the longitude value, using the degrees per pixel.\n        lon = (px[0] - npix) / self._degpp[zoom]\n\n        # Calculating the latitude value.\n        lat = RTOD * ( 2 * atan(exp((px[1] - npix)/ (-1.0 * self._radpp[zoom]))) - 0.5 * pi)\n\n        # Returning the longitude, latitude coordinate pair.\n        return (lon, lat)\n\n    def tile(self, lonlat, zoom):\n        \"\"\"\n        Returns a Polygon  corresponding to the region represented by a fictional\n        Google Tile for the given longitude/latitude pair and zoom level. This\n        tile is used to determine the size of a tile at the given point.\n        \"\"\"\n        # The given lonlat is the center of the tile.\n        delta = self._tilesize / 2\n\n        # Getting the pixel coordinates corresponding to the\n        # the longitude/latitude.\n        px = self.lonlat_to_pixel(lonlat, zoom)\n\n        # Getting the lower-left and upper-right lat/lon coordinates\n        # for the bounding box of the tile.\n        ll = self.pixel_to_lonlat((px[0]-delta, px[1]-delta), zoom)\n        ur = self.pixel_to_lonlat((px[0]+delta, px[1]+delta), zoom)\n\n        # Constructing the Polygon, representing the tile and returning.\n        return Polygon(LinearRing(ll, (ll[0], ur[1]), ur, (ur[0], ll[1]), ll), srid=4326)\n\n    def get_zoom(self, geom):\n        \"Returns the optimal Zoom level for the given geometry.\"\n        # Checking the input type.\n        if not isinstance(geom, GEOSGeometry) or geom.srid != 4326:\n            raise TypeError('get_zoom() expects a GEOS Geometry with an SRID of 4326.')\n\n        # Getting the envelope for the geometry, and its associated width, height\n        # and centroid.\n        env = geom.envelope\n        env_w, env_h = self.get_width_height(env.extent)\n        center = env.centroid\n\n        for z in xrange(self._nzoom):\n            # Getting the tile at the zoom level.\n            tile_w, tile_h = self.get_width_height(self.tile(center, z).extent)\n\n            # When we span more than one tile, this is an approximately good\n            # zoom level.\n            if (env_w > tile_w) or (env_h > tile_h):\n                if z == 0:\n                    raise GoogleMapException('Geometry width and height should not exceed that of the Earth.')\n                return z-1\n\n        # Otherwise, we've zoomed in to the max.\n        return self._nzoom-1\n\n    def get_width_height(self, extent):\n        \"\"\"\n        Returns the width and height for the given extent.\n        \"\"\"\n        # Getting the lower-left, upper-left, and upper-right\n        # coordinates from the extent.\n        ll = Point(extent[:2])\n        ul = Point(extent[0], extent[3])\n        ur = Point(extent[2:])\n        # Calculating the width and height.\n        height = ll.distance(ul)\n        width  = ul.distance(ur)\n        return width, height\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/maps/openlayers/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/measure.py",
    "content": "# Copyright (c) 2007, Robert Coup <robert.coup@onetrackmind.co.nz>\n# All rights reserved.\n#\n# Redistribution and use in source and binary forms, with or without modification,\n# are permitted provided that the following conditions are met:\n#\n#   1. Redistributions of source code must retain the above copyright notice,\n#      this list of conditions and the following disclaimer.\n#\n#   2. Redistributions in binary form must reproduce the above copyright\n#      notice, this list of conditions and the following disclaimer in the\n#      documentation and/or other materials provided with the distribution.\n#\n#   3. Neither the name of Distance nor the names of its contributors may be used\n#      to endorse or promote products derived from this software without\n#      specific prior written permission.\n#\n# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\n# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\n# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n#\n\"\"\"\nDistance and Area objects to allow for sensible and convienient calculation\nand conversions.\n\nAuthors: Robert Coup, Justin Bronn, Riccardo Di Virgilio\n\nInspired by GeoPy (http://exogen.case.edu/projects/geopy/)\nand Geoff Biggs' PhD work on dimensioned units for robotics.\n\"\"\"\n__all__ = ['A', 'Area', 'D', 'Distance']\nfrom decimal import Decimal\n\nfrom django.utils.functional import total_ordering\nfrom django.utils import six\n\nNUMERIC_TYPES = six.integer_types + (float, Decimal)\nAREA_PREFIX = \"sq_\"\n\ndef pretty_name(obj):\n    return obj.__name__ if obj.__class__ == type else obj.__class__.__name__\n\n\n@total_ordering\nclass MeasureBase(object):\n    STANDARD_UNIT = None\n    ALIAS  = {}\n    UNITS  = {}\n    LALIAS = {}\n\n    def __init__(self, default_unit=None, **kwargs):\n        value, self._default_unit = self.default_units(kwargs)\n        setattr(self, self.STANDARD_UNIT, value)\n        if default_unit and isinstance(default_unit, six.string_types):\n            self._default_unit = default_unit\n\n    def _get_standard(self):\n        return getattr(self, self.STANDARD_UNIT)\n\n    def _set_standard(self, value):\n        setattr(self, self.STANDARD_UNIT, value)\n\n    standard = property(_get_standard, _set_standard)\n\n    def __getattr__(self, name):\n        if name in self.UNITS:\n            return self.standard / self.UNITS[name]\n        else:\n            raise AttributeError('Unknown unit type: %s' % name)\n\n    def __repr__(self):\n        return '%s(%s=%s)' % (pretty_name(self), self._default_unit,\n            getattr(self, self._default_unit))\n\n    def __str__(self):\n        return '%s %s' % (getattr(self, self._default_unit), self._default_unit)\n\n    # **** Comparison methods ****\n\n    def __eq__(self, other):\n        if isinstance(other, self.__class__):\n            return self.standard == other.standard\n        else:\n            return NotImplemented\n\n    def __lt__(self, other):\n        if isinstance(other, self.__class__):\n            return self.standard < other.standard\n        else:\n            return NotImplemented\n\n    # **** Operators methods ****\n\n    def __add__(self, other):\n        if isinstance(other, self.__class__):\n            return self.__class__(default_unit=self._default_unit,\n                **{self.STANDARD_UNIT: (self.standard + other.standard)})\n        else:\n            raise TypeError('%(class)s must be added with %(class)s' % {\"class\":pretty_name(self)})\n\n    def __iadd__(self, other):\n        if isinstance(other, self.__class__):\n            self.standard += other.standard\n            return self\n        else:\n            raise TypeError('%(class)s must be added with %(class)s' % {\"class\":pretty_name(self)})\n\n    def __sub__(self, other):\n        if isinstance(other, self.__class__):\n            return self.__class__(default_unit=self._default_unit,\n                **{self.STANDARD_UNIT: (self.standard - other.standard)})\n        else:\n            raise TypeError('%(class)s must be subtracted from %(class)s' % {\"class\":pretty_name(self)})\n\n    def __isub__(self, other):\n        if isinstance(other, self.__class__):\n            self.standard -= other.standard\n            return self\n        else:\n            raise TypeError('%(class)s must be subtracted from %(class)s' % {\"class\":pretty_name(self)})\n\n    def __mul__(self, other):\n        if isinstance(other, NUMERIC_TYPES):\n            return self.__class__(default_unit=self._default_unit,\n                **{self.STANDARD_UNIT: (self.standard * other)})\n        else:\n            raise TypeError('%(class)s must be multiplied with number' % {\"class\":pretty_name(self)})\n\n    def __imul__(self, other):\n        if isinstance(other, NUMERIC_TYPES):\n            self.standard *= float(other)\n            return self\n        else:\n            raise TypeError('%(class)s must be multiplied with number' % {\"class\":pretty_name(self)})\n\n    def __rmul__(self, other):\n        return self * other\n\n    def __truediv__(self, other):\n        if isinstance(other, self.__class__):\n            return self.standard / other.standard\n        if isinstance(other, NUMERIC_TYPES):\n            return self.__class__(default_unit=self._default_unit,\n                **{self.STANDARD_UNIT: (self.standard / other)})\n        else:\n            raise TypeError('%(class)s must be divided with number or %(class)s' % {\"class\":pretty_name(self)})\n\n    def __div__(self, other):   # Python 2 compatibility\n        return type(self).__truediv__(self, other)\n\n    def __itruediv__(self, other):\n        if isinstance(other, NUMERIC_TYPES):\n            self.standard /= float(other)\n            return self\n        else:\n            raise TypeError('%(class)s must be divided with number' % {\"class\":pretty_name(self)})\n\n    def __idiv__(self, other):  # Python 2 compatibility\n        return type(self).__itruediv__(self, other)\n\n    def __bool__(self):\n        return bool(self.standard)\n\n    def __nonzero__(self):      # Python 2 compatibility\n        return type(self).__bool__(self)\n\n    def default_units(self, kwargs):\n        \"\"\"\n        Return the unit value and the default units specified\n        from the given keyword arguments dictionary.\n        \"\"\"\n        val = 0.0\n        default_unit = self.STANDARD_UNIT\n        for unit, value in six.iteritems(kwargs):\n            if not isinstance(value, float): value = float(value)\n            if unit in self.UNITS:\n                val += self.UNITS[unit] * value\n                default_unit = unit\n            elif unit in self.ALIAS:\n                u = self.ALIAS[unit]\n                val += self.UNITS[u] * value\n                default_unit = u\n            else:\n                lower = unit.lower()\n                if lower in self.UNITS:\n                    val += self.UNITS[lower] * value\n                    default_unit = lower\n                elif lower in self.LALIAS:\n                    u = self.LALIAS[lower]\n                    val += self.UNITS[u] * value\n                    default_unit = u\n                else:\n                    raise AttributeError('Unknown unit type: %s' % unit)\n        return val, default_unit\n\n    @classmethod\n    def unit_attname(cls, unit_str):\n        \"\"\"\n        Retrieves the unit attribute name for the given unit string.\n        For example, if the given unit string is 'metre', 'm' would be returned.\n        An exception is raised if an attribute cannot be found.\n        \"\"\"\n        lower = unit_str.lower()\n        if unit_str in cls.UNITS:\n            return unit_str\n        elif lower in cls.UNITS:\n            return lower\n        elif lower in cls.LALIAS:\n            return cls.LALIAS[lower]\n        else:\n            raise Exception('Could not find a unit keyword associated with \"%s\"' % unit_str)\n\nclass Distance(MeasureBase):\n    STANDARD_UNIT = \"m\"\n    UNITS = {\n        'chain' : 20.1168,\n        'chain_benoit' : 20.116782,\n        'chain_sears' : 20.1167645,\n        'british_chain_benoit' : 20.1167824944,\n        'british_chain_sears' : 20.1167651216,\n        'british_chain_sears_truncated' : 20.116756,\n        'cm' : 0.01,\n        'british_ft' : 0.304799471539,\n        'british_yd' : 0.914398414616,\n        'clarke_ft' : 0.3047972654,\n        'clarke_link' : 0.201166195164,\n        'fathom' :  1.8288,\n        'ft': 0.3048,\n        'german_m' : 1.0000135965,\n        'gold_coast_ft' : 0.304799710181508,\n        'indian_yd' : 0.914398530744,\n        'inch' : 0.0254,\n        'km': 1000.0,\n        'link' : 0.201168,\n        'link_benoit' : 0.20116782,\n        'link_sears' : 0.20116765,\n        'm': 1.0,\n        'mi': 1609.344,\n        'mm' : 0.001,\n        'nm': 1852.0,\n        'nm_uk' : 1853.184,\n        'rod' : 5.0292,\n        'sears_yd' : 0.91439841,\n        'survey_ft' : 0.304800609601,\n        'um' : 0.000001,\n        'yd': 0.9144,\n        }\n\n    # Unit aliases for `UNIT` terms encountered in Spatial Reference WKT.\n    ALIAS = {\n        'centimeter' : 'cm',\n        'foot' : 'ft',\n        'inches' : 'inch',\n        'kilometer' : 'km',\n        'kilometre' : 'km',\n        'meter' : 'm',\n        'metre' : 'm',\n        'micrometer' : 'um',\n        'micrometre' : 'um',\n        'millimeter' : 'mm',\n        'millimetre' : 'mm',\n        'mile' : 'mi',\n        'yard' : 'yd',\n        'British chain (Benoit 1895 B)' : 'british_chain_benoit',\n        'British chain (Sears 1922)' : 'british_chain_sears',\n        'British chain (Sears 1922 truncated)' : 'british_chain_sears_truncated',\n        'British foot (Sears 1922)' : 'british_ft',\n        'British foot' : 'british_ft',\n        'British yard (Sears 1922)' : 'british_yd',\n        'British yard' : 'british_yd',\n        \"Clarke's Foot\" : 'clarke_ft',\n        \"Clarke's link\" : 'clarke_link',\n        'Chain (Benoit)' : 'chain_benoit',\n        'Chain (Sears)' : 'chain_sears',\n        'Foot (International)' : 'ft',\n        'German legal metre' : 'german_m',\n        'Gold Coast foot' : 'gold_coast_ft',\n        'Indian yard' : 'indian_yd',\n        'Link (Benoit)': 'link_benoit',\n        'Link (Sears)': 'link_sears',\n        'Nautical Mile' : 'nm',\n        'Nautical Mile (UK)' : 'nm_uk',\n        'US survey foot' : 'survey_ft',\n        'U.S. Foot' : 'survey_ft',\n        'Yard (Indian)' : 'indian_yd',\n        'Yard (Sears)' : 'sears_yd'\n        }\n    LALIAS = dict([(k.lower(), v) for k, v in ALIAS.items()])\n\n    def __mul__(self, other):\n        if isinstance(other, self.__class__):\n            return Area(default_unit=AREA_PREFIX + self._default_unit,\n                **{AREA_PREFIX + self.STANDARD_UNIT: (self.standard * other.standard)})\n        elif isinstance(other, NUMERIC_TYPES):\n            return self.__class__(default_unit=self._default_unit,\n                **{self.STANDARD_UNIT: (self.standard * other)})\n        else:\n            raise TypeError('%(distance)s must be multiplied with number or %(distance)s' % {\n                \"distance\" : pretty_name(self.__class__),\n                })\n\n\nclass Area(MeasureBase):\n    STANDARD_UNIT = AREA_PREFIX + Distance.STANDARD_UNIT\n    # Getting the square units values and the alias dictionary.\n    UNITS = dict([('%s%s' % (AREA_PREFIX, k), v ** 2) for k, v in Distance.UNITS.items()])\n    ALIAS = dict([(k, '%s%s' % (AREA_PREFIX, v)) for k, v in Distance.ALIAS.items()])\n    LALIAS = dict([(k.lower(), v) for k, v in ALIAS.items()])\n\n    def __truediv__(self, other):\n        if isinstance(other, NUMERIC_TYPES):\n            return self.__class__(default_unit=self._default_unit,\n                **{self.STANDARD_UNIT: (self.standard / other)})\n        else:\n            raise TypeError('%(class)s must be divided by a number' % {\"class\":pretty_name(self)})\n\n    def __div__(self, other):  # Python 2 compatibility\n        return type(self).__truediv__(self, other)\n\n\n# Shortcuts\nD = Distance\nA = Area\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/models.py",
    "content": "from django.db import connection\n\nif (hasattr(connection.ops, 'spatial_version') and\n    not connection.ops.mysql):\n    # Getting the `SpatialRefSys` and `GeometryColumns`\n    # models for the default spatial backend.  These\n    # aliases are provided for backwards-compatibility.\n    SpatialRefSys = connection.ops.spatial_ref_sys()\n    GeometryColumns = connection.ops.geometry_columns()\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/shortcuts.py",
    "content": "import zipfile\nfrom io import BytesIO\n\nfrom django.conf import settings\nfrom django.http import HttpResponse\nfrom django.template import loader\n\ndef compress_kml(kml):\n    \"Returns compressed KMZ from the given KML string.\"\n    kmz = BytesIO()\n    zf = zipfile.ZipFile(kmz, 'a', zipfile.ZIP_DEFLATED)\n    zf.writestr('doc.kml', kml.encode(settings.DEFAULT_CHARSET))\n    zf.close()\n    kmz.seek(0)\n    return kmz.read()\n\ndef render_to_kml(*args, **kwargs):\n    \"Renders the response as KML (using the correct MIME type).\"\n    return HttpResponse(loader.render_to_string(*args, **kwargs),\n        content_type='application/vnd.google-earth.kml+xml')\n\ndef render_to_kmz(*args, **kwargs):\n    \"\"\"\n    Compresses the KML content and returns as KMZ (using the correct \n    MIME type).\n    \"\"\"\n    return HttpResponse(compress_kml(loader.render_to_string(*args, **kwargs)),\n        content_type='application/vnd.google-earth.kmz')\n\ndef render_to_text(*args, **kwargs):\n    \"Renders the response using the MIME type for plain text.\"\n    return HttpResponse(loader.render_to_string(*args, **kwargs),\n        content_type='text/plain')\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/sitemaps/__init__.py",
    "content": "# Geo-enabled Sitemap classes.\nfrom django.contrib.gis.sitemaps.georss import GeoRSSSitemap\nfrom django.contrib.gis.sitemaps.kml import KMLSitemap, KMZSitemap\n\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/sitemaps/georss.py",
    "content": "from django.core import urlresolvers\nfrom django.contrib.sitemaps import Sitemap\n\nclass GeoRSSSitemap(Sitemap):\n    \"\"\"\n    A minimal hook to produce sitemaps for GeoRSS feeds.\n    \"\"\"\n    def __init__(self, feed_dict, slug_dict=None):\n        \"\"\"\n        This sitemap object initializes on a feed dictionary (as would be passed\n        to `django.contrib.gis.views.feed`) and a slug dictionary.\n        If the slug dictionary is not defined, then it's assumed the keys provide\n        the URL parameter to the feed.  However, if you have a complex feed (e.g.,\n        you override `get_object`, then you'll need to provide a slug dictionary.\n        The slug dictionary should have the same keys as the feed dictionary, but\n        each value in the slug dictionary should be a sequence of slugs that may\n        be used for valid feeds.  For example, let's say we have a feed that\n        returns objects for a specific ZIP code in our feed dictionary:\n\n            feed_dict = {'zipcode' : ZipFeed}\n\n        Then we would use a slug dictionary with a list of the zip code slugs\n        corresponding to feeds you want listed in the sitemap:\n\n            slug_dict = {'zipcode' : ['77002', '77054']}\n        \"\"\"\n        # Setting up.\n        self.feed_dict = feed_dict\n        self.locations = []\n        if slug_dict is None: slug_dict = {}\n        # Getting the feed locations.\n        for section in feed_dict.keys():\n            if slug_dict.get(section, False):\n                for slug in slug_dict[section]:\n                    self.locations.append('%s/%s' % (section, slug))\n            else:\n                self.locations.append(section)\n\n    def get_urls(self, page=1, site=None):\n        \"\"\"\n        This method is overrridden so the appropriate `geo_format` attribute\n        is placed on each URL element.\n        \"\"\"\n        urls = Sitemap.get_urls(self, page=page, site=site)\n        for url in urls: url['geo_format'] = 'georss'\n        return urls\n\n    def items(self):\n        return self.locations\n\n    def location(self, obj):\n        return urlresolvers.reverse('django.contrib.gis.views.feed', args=(obj,))\n\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/sitemaps/kml.py",
    "content": "from django.core import urlresolvers\nfrom django.contrib.sitemaps import Sitemap\nfrom django.contrib.gis.db.models.fields import GeometryField\nfrom django.db import models\n\nclass KMLSitemap(Sitemap):\n    \"\"\"\n    A minimal hook to produce KML sitemaps.\n    \"\"\"\n    geo_format = 'kml'\n\n    def __init__(self, locations=None):\n        # If no locations specified, then we try to build for\n        # every model in installed applications.\n        self.locations = self._build_kml_sources(locations)\n        \n    def _build_kml_sources(self, sources):\n        \"\"\"\n        Goes through the given sources and returns a 3-tuple of\n        the application label, module name, and field name of every\n        GeometryField encountered in the sources.\n\n        If no sources are provided, then all models.\n        \"\"\"\n        kml_sources = []\n        if sources is None:\n            sources = models.get_models()\n        for source in sources:\n            if isinstance(source, models.base.ModelBase):\n                for field in source._meta.fields:\n                    if isinstance(field, GeometryField):\n                        kml_sources.append((source._meta.app_label,\n                                            source._meta.module_name,\n                                            field.name))\n            elif isinstance(source, (list, tuple)):\n                if len(source) != 3: \n                    raise ValueError('Must specify a 3-tuple of (app_label, module_name, field_name).')\n                kml_sources.append(source)\n            else:\n                raise TypeError('KML Sources must be a model or a 3-tuple.')\n        return kml_sources\n\n    def get_urls(self, page=1, site=None):\n        \"\"\"\n        This method is overrridden so the appropriate `geo_format` attribute\n        is placed on each URL element.\n        \"\"\"\n        urls = Sitemap.get_urls(self, page=page, site=site)\n        for url in urls: url['geo_format'] = self.geo_format\n        return urls\n\n    def items(self):\n        return self.locations\n\n    def location(self, obj):\n        return urlresolvers.reverse('django.contrib.gis.sitemaps.views.%s' % self.geo_format,\n                                    kwargs={'label' : obj[0], \n                                            'model' : obj[1],\n                                            'field_name': obj[2],\n                                            }\n                                    )\nclass KMZSitemap(KMLSitemap):\n    geo_format = 'kmz'\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/sitemaps/views.py",
    "content": "from __future__ import unicode_literals\n\nfrom django.http import HttpResponse, Http404\nfrom django.template import loader\nfrom django.contrib.sites.models import get_current_site\nfrom django.core import urlresolvers\nfrom django.core.paginator import EmptyPage, PageNotAnInteger\nfrom django.contrib.gis.db.models.fields import GeometryField\nfrom django.db import connections, DEFAULT_DB_ALIAS\nfrom django.db.models import get_model\nfrom django.utils import six\nfrom django.utils.translation import ugettext as _\n\nfrom django.contrib.gis.shortcuts import render_to_kml, render_to_kmz\n\ndef index(request, sitemaps):\n    \"\"\"\n    This view generates a sitemap index that uses the proper view\n    for resolving geographic section sitemap URLs.\n    \"\"\"\n    current_site = get_current_site(request)\n    sites = []\n    protocol = request.is_secure() and 'https' or 'http'\n    for section, site in sitemaps.items():\n        if callable(site):\n            pages = site().paginator.num_pages\n        else:\n            pages = site.paginator.num_pages\n        sitemap_url = urlresolvers.reverse('django.contrib.gis.sitemaps.views.sitemap', kwargs={'section': section})\n        sites.append('%s://%s%s' % (protocol, current_site.domain, sitemap_url))\n\n        if pages > 1:\n            for page in range(2, pages+1):\n                sites.append('%s://%s%s?p=%s' % (protocol, current_site.domain, sitemap_url, page))\n    xml = loader.render_to_string('sitemap_index.xml', {'sitemaps': sites})\n    return HttpResponse(xml, content_type='application/xml')\n\ndef sitemap(request, sitemaps, section=None):\n    \"\"\"\n    This view generates a sitemap with additional geographic\n    elements defined by Google.\n    \"\"\"\n    maps, urls = [], []\n    if section is not None:\n        if section not in sitemaps:\n            raise Http404(_(\"No sitemap available for section: %r\") % section)\n        maps.append(sitemaps[section])\n    else:\n        maps = list(six.itervalues(sitemaps))\n\n    page = request.GET.get(\"p\", 1)\n    current_site = get_current_site(request)\n    for site in maps:\n        try:\n            if callable(site):\n                urls.extend(site().get_urls(page=page, site=current_site))\n            else:\n                urls.extend(site.get_urls(page=page, site=current_site))\n        except EmptyPage:\n            raise Http404(_(\"Page %s empty\") % page)\n        except PageNotAnInteger:\n            raise Http404(_(\"No page '%s'\") % page)\n    xml = loader.render_to_string('gis/sitemaps/geo_sitemap.xml', {'urlset': urls})\n    return HttpResponse(xml, content_type='application/xml')\n\ndef kml(request, label, model, field_name=None, compress=False, using=DEFAULT_DB_ALIAS):\n    \"\"\"\n    This view generates KML for the given app label, model, and field name.\n\n    The model's default manager must be GeoManager, and the field name\n    must be that of a geographic field.\n    \"\"\"\n    placemarks = []\n    klass = get_model(label, model)\n    if not klass:\n        raise Http404('You must supply a valid app label and module name.  Got \"%s.%s\"' % (label, model))\n\n    if field_name:\n        try:\n            info = klass._meta.get_field_by_name(field_name)\n            if not isinstance(info[0], GeometryField):\n                raise Exception\n        except:\n            raise Http404('Invalid geometry field.')\n\n    connection = connections[using]\n\n    if connection.ops.postgis:\n        # PostGIS will take care of transformation.\n        placemarks = klass._default_manager.using(using).kml(field_name=field_name)\n    else:\n        # There's no KML method on Oracle or MySQL, so we use the `kml`\n        # attribute of the lazy geometry instead.\n        placemarks = []\n        if connection.ops.oracle:\n            qs = klass._default_manager.using(using).transform(4326, field_name=field_name)\n        else:\n            qs = klass._default_manager.using(using).all()\n        for mod in qs:\n            mod.kml = getattr(mod, field_name).kml\n            placemarks.append(mod)\n\n    # Getting the render function and rendering to the correct.\n    if compress:\n        render = render_to_kmz\n    else:\n        render = render_to_kml\n    return render('gis/kml/placemarks.kml', {'places' : placemarks})\n\ndef kmz(request, label, model, field_name=None, using=DEFAULT_DB_ALIAS):\n    \"\"\"\n    This view returns KMZ for the given app label, model, and field name.\n    \"\"\"\n    return kml(request, label, model, field_name, compress=True, using=using)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/templates/gis/admin/openlayers.html",
    "content": "{% block extrastyle %}\n{% load static %}\n<style type=\"text/css\">\n  #{{ id }}_map { width: {{ map_width }}px; height: {{ map_height }}px; }\n  #{{ id }}_map .aligned label { float:inherit; }\n  #{{ id }}_admin_map { position: relative; vertical-align: top; float: {{ LANGUAGE_BIDI|yesno:\"right,left\" }}; }\n  {% if not display_wkt %}#{{ id }} { display: none; }{% endif %}\n  .olControlEditingToolbar .olControlModifyFeatureItemActive { \n     background-image: url(\"{% static \"admin/img/gis/move_vertex_on.png\" %}\");\n     background-repeat: no-repeat;\n  }\n  .olControlEditingToolbar .olControlModifyFeatureItemInactive { \n     background-image: url(\"{% static \"admin/img/gis/move_vertex_off.png\" %}\");\n     background-repeat: no-repeat;\n  }\n</style>\n<!--[if IE]>\n<style type=\"text/css\">\n  /* This fixes the mouse offset issues in IE. */\n  #{{ id }}_admin_map { position: static; vertical-align: top; }\n  /* `font-size: 0` fixes the 1px border between tiles, but borks LayerSwitcher.\n      Thus, this is disabled until a better fix is found.\n  #{{ id }}_map { width: {{ map_width }}px; height: {{ map_height }}px; font-size: 0; } */\n</style>\n<![endif]-->\n{% endblock %}\n<span id=\"{{ id }}_admin_map\">\n<script type=\"text/javascript\">\n//<![CDATA[\n{% block openlayers %}{% include \"gis/admin/openlayers.js\" %}{% endblock %}\n//]]>\n</script>\n<div id=\"{{ id }}_map\"{% if LANGUAGE_BIDI %} dir=\"ltr\"{% endif %}></div>\n<a href=\"javascript:{{ module }}.clearFeatures()\">Delete all Features</a>\n{% if display_wkt %}<p> WKT debugging window:</p>{% endif %}\n<textarea id=\"{{ id }}\" class=\"vWKTField required\" cols=\"150\" rows=\"10\" name=\"{{ name }}\">{{ wkt }}</textarea>\n<script type=\"text/javascript\">{% block init_function %}{{ module }}.init();{% endblock %}</script>\n</span>\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/templates/gis/admin/openlayers.js",
    "content": "{% load l10n %}\nOpenLayers.Projection.addTransform(\"EPSG:4326\", \"EPSG:3857\", OpenLayers.Layer.SphericalMercator.projectForward);\n{% block vars %}var {{ module }} = {};\n{{ module }}.map = null; {{ module }}.controls = null; {{ module }}.panel = null; {{ module }}.re = new RegExp(\"^SRID=\\\\d+;(.+)\", \"i\"); {{ module }}.layers = {};\n{{ module }}.modifiable = {{ modifiable|yesno:\"true,false\" }};\n{{ module }}.wkt_f = new OpenLayers.Format.WKT();\n{{ module }}.is_collection = {{ is_collection|yesno:\"true,false\" }};\n{{ module }}.collection_type = '{{ collection_type }}';\n{{ module }}.is_linestring = {{ is_linestring|yesno:\"true,false\" }};\n{{ module }}.is_polygon = {{ is_polygon|yesno:\"true,false\" }};\n{{ module }}.is_point = {{ is_point|yesno:\"true,false\" }};\n{% endblock %}\n{{ module }}.get_ewkt = function(feat){return 'SRID={{ srid }};' + {{ module }}.wkt_f.write(feat);}\n{{ module }}.read_wkt = function(wkt){\n  // OpenLayers cannot handle EWKT -- we make sure to strip it out.\n  // EWKT is only exposed to OL if there's a validation error in the admin.\n  var match = {{ module }}.re.exec(wkt);\n  if (match){wkt = match[1];}\n  return {{ module }}.wkt_f.read(wkt);\n}\n{{ module }}.write_wkt = function(feat){\n  if ({{ module }}.is_collection){ {{ module }}.num_geom = feat.geometry.components.length;}\n  else { {{ module }}.num_geom = 1;}\n  document.getElementById('{{ id }}').value = {{ module }}.get_ewkt(feat);\n}\n{{ module }}.add_wkt = function(event){\n  // This function will sync the contents of the `vector` layer with the\n  // WKT in the text field.\n  if ({{ module }}.is_collection){\n    var feat = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.{{ geom_type }}());\n    for (var i = 0; i < {{ module }}.layers.vector.features.length; i++){\n      feat.geometry.addComponents([{{ module }}.layers.vector.features[i].geometry]);\n    }\n    {{ module }}.write_wkt(feat);\n  } else {\n    // Make sure to remove any previously added features.\n    if ({{ module }}.layers.vector.features.length > 1){\n      old_feats = [{{ module }}.layers.vector.features[0]];\n      {{ module }}.layers.vector.removeFeatures(old_feats);\n      {{ module }}.layers.vector.destroyFeatures(old_feats);\n    }\n    {{ module }}.write_wkt(event.feature);\n  }\n}\n{{ module }}.modify_wkt = function(event){\n  if ({{ module }}.is_collection){\n    if ({{ module }}.is_point){\n      {{ module }}.add_wkt(event);\n      return;\n    } else {\n      // When modifying the selected components are added to the\n      // vector layer so we only increment to the `num_geom` value.\n      var feat = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.{{ geom_type }}());\n      for (var i = 0; i < {{ module }}.num_geom; i++){\n\tfeat.geometry.addComponents([{{ module }}.layers.vector.features[i].geometry]);\n      }\n      {{ module }}.write_wkt(feat);\n    }\n  } else {\n    {{ module }}.write_wkt(event.feature);\n  }\n}\n// Function to clear vector features and purge wkt from div\n{{ module }}.deleteFeatures = function(){\n  {{ module }}.layers.vector.removeFeatures({{ module }}.layers.vector.features);\n  {{ module }}.layers.vector.destroyFeatures();\n}\n{{ module }}.clearFeatures = function (){\n  {{ module }}.deleteFeatures();\n  document.getElementById('{{ id }}').value = '';\n  {% localize off %}\n  {{ module }}.map.setCenter(new OpenLayers.LonLat({{ default_lon }}, {{ default_lat }}), {{ default_zoom }});\n  {% endlocalize %}\n}\n// Add Select control\n{{ module }}.addSelectControl = function(){\n  var select = new OpenLayers.Control.SelectFeature({{ module }}.layers.vector, {'toggle' : true, 'clickout' : true});\n  {{ module }}.map.addControl(select);\n  select.activate();\n}\n{{ module }}.enableDrawing = function(){ {{ module }}.map.getControlsByClass('OpenLayers.Control.DrawFeature')[0].activate();}\n{{ module }}.enableEditing = function(){ {{ module }}.map.getControlsByClass('OpenLayers.Control.ModifyFeature')[0].activate();}\n// Create an array of controls based on geometry type\n{{ module }}.getControls = function(lyr){\n  {{ module }}.panel = new OpenLayers.Control.Panel({'displayClass': 'olControlEditingToolbar'});\n  var nav = new OpenLayers.Control.Navigation();\n  var draw_ctl;\n  if ({{ module }}.is_linestring){\n    draw_ctl = new OpenLayers.Control.DrawFeature(lyr, OpenLayers.Handler.Path, {'displayClass': 'olControlDrawFeaturePath'});\n  } else if ({{ module }}.is_polygon){\n    draw_ctl = new OpenLayers.Control.DrawFeature(lyr, OpenLayers.Handler.Polygon, {'displayClass': 'olControlDrawFeaturePolygon'});\n  } else if ({{ module }}.is_point){\n    draw_ctl = new OpenLayers.Control.DrawFeature(lyr, OpenLayers.Handler.Point, {'displayClass': 'olControlDrawFeaturePoint'});\n  }\n  if ({{ module }}.modifiable){\n    var mod = new OpenLayers.Control.ModifyFeature(lyr, {'displayClass': 'olControlModifyFeature'});\n    {{ module }}.controls = [nav, draw_ctl, mod];\n  } else {\n    if(!lyr.features.length){\n      {{ module }}.controls = [nav, draw_ctl];\n    } else {\n      {{ module }}.controls = [nav];\n    }\n  }\n}\n{{ module }}.init = function(){\n    {% block map_options %}// The options hash, w/ zoom, resolution, and projection settings.\n    var options = {\n{% autoescape off %}{% for item in map_options.items %}      '{{ item.0 }}' : {{ item.1 }}{% if not forloop.last %},{% endif %}\n{% endfor %}{% endautoescape %}    };{% endblock %}\n    // The admin map for this geometry field.\n    {% block map_creation %}\n    {{ module }}.map = new OpenLayers.Map('{{ id }}_map', options);\n    // Base Layer\n    {{ module }}.layers.base = {% block base_layer %}new OpenLayers.Layer.WMS(\"{{ wms_name }}\", \"{{ wms_url }}\", {layers: '{{ wms_layer }}'{{ wms_options|safe }}});{% endblock %}\n    {{ module }}.map.addLayer({{ module }}.layers.base);\n    {% endblock %}\n    {% block extra_layers %}{% endblock %}\n    {% if is_linestring %}OpenLayers.Feature.Vector.style[\"default\"][\"strokeWidth\"] = 3; // Default too thin for linestrings. {% endif %}\n    {{ module }}.layers.vector = new OpenLayers.Layer.Vector(\" {{ field_name }}\");\n    {{ module }}.map.addLayer({{ module }}.layers.vector);\n    // Read WKT from the text field.\n    var wkt = document.getElementById('{{ id }}').value;\n    if (wkt){\n      // After reading into geometry, immediately write back to\n      // WKT <textarea> as EWKT (so that SRID is included).\n      var admin_geom = {{ module }}.read_wkt(wkt);\n      {{ module }}.write_wkt(admin_geom);\n      if ({{ module }}.is_collection){\n\t// If geometry collection, add each component individually so they may be\n\t// edited individually.\n\tfor (var i = 0; i < {{ module }}.num_geom; i++){\n\t  {{ module }}.layers.vector.addFeatures([new OpenLayers.Feature.Vector(admin_geom.geometry.components[i].clone())]);\n\t}\n      } else {\n\t{{ module }}.layers.vector.addFeatures([admin_geom]);\n      }\n      // Zooming to the bounds.\n      {{ module }}.map.zoomToExtent(admin_geom.geometry.getBounds());\n      if ({{ module }}.is_point){\n          {{ module }}.map.zoomTo({{ point_zoom }});\n      }\n    } else {\n      {% localize off %}\n      {{ module }}.map.setCenter(new OpenLayers.LonLat({{ default_lon }}, {{ default_lat }}), {{ default_zoom }});\n      {% endlocalize %}\n    }\n    // This allows editing of the geographic fields -- the modified WKT is\n    // written back to the content field (as EWKT, so that the ORM will know\n    // to transform back to original SRID).\n    {{ module }}.layers.vector.events.on({\"featuremodified\" : {{ module }}.modify_wkt});\n    {{ module }}.layers.vector.events.on({\"featureadded\" : {{ module }}.add_wkt});\n    {% block controls %}\n    // Map controls:\n    // Add geometry specific panel of toolbar controls\n    {{ module }}.getControls({{ module }}.layers.vector);\n    {{ module }}.panel.addControls({{ module }}.controls);\n    {{ module }}.map.addControl({{ module }}.panel);\n    {{ module }}.addSelectControl();\n    // Then add optional visual controls\n    {% if mouse_position %}{{ module }}.map.addControl(new OpenLayers.Control.MousePosition());{% endif %}\n    {% if scale_text %}{{ module }}.map.addControl(new OpenLayers.Control.Scale());{% endif %}\n    {% if layerswitcher %}{{ module }}.map.addControl(new OpenLayers.Control.LayerSwitcher());{% endif %}\n    // Then add optional behavior controls\n    {% if not scrollable %}{{ module }}.map.getControlsByClass('OpenLayers.Control.Navigation')[0].disableZoomWheel();{% endif %}\n    {% endblock %}\n    if (wkt){\n      if ({{ module }}.modifiable){\n        {{ module }}.enableEditing();\n      }\n    } else {\n      {{ module }}.enableDrawing();\n    }\n}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/templates/gis/admin/osm.html",
    "content": "{% extends \"gis/admin/openlayers.html\" %}\n{% block openlayers %}{% include \"gis/admin/osm.js\" %}{% endblock %}"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/templates/gis/admin/osm.js",
    "content": "{% extends \"gis/admin/openlayers.js\" %}\n{% block base_layer %}new OpenLayers.Layer.OSM(\"OpenStreetMap (Mapnik)\");{% endblock %}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/templates/gis/google/google-map.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\" {{ gmap.xmlns }}>\n<head>\n  <title>{% block title %}Google Maps via GeoDjango{% endblock %}</title>\n  {{ gmap.style }}\n  {{ gmap.scripts }}\n</head>\n<body {{ gmap.onload }} {{ gmap.onunload }}>\n{% if gmap.dom_ids %}{% for dom_id in gmap.dom_ids %}<div id=\"{{ dom_id }}\" style=\"width:600px;height:400px;\"></div>{% endfor %}\n{% else %}<div id=\"{{ gmap.dom_id }}\" style=\"width:600px;height:400px;\"></div>{% endif %}\n</body>\n</html>\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/templates/gis/google/google-map.js",
    "content": "{% load l10n %}\n{% autoescape off %}\n{% localize off %}\n{% block vars %}var geodjango = {};{% for icon in icons %}\nvar {{ icon.varname }} = new GIcon(G_DEFAULT_ICON);\n{% if icon.image %}{{ icon.varname }}.image = \"{{ icon.image }}\";{% endif %}\n{% if icon.shadow %}{{ icon.varname }}.shadow = \"{{ icon.shadow }}\";{% endif %} {% if icon.shadowsize %}{{ icon.varname }}.shadowSize = new GSize({{ icon.shadowsize.0 }}, {{ icon.shadowsize.1 }});{% endif %}\n{% if icon.iconanchor %}{{ icon.varname }}.iconAnchor = new GPoint({{ icon.iconanchor.0 }}, {{ icon.iconanchor.1 }});{% endif %} {% if icon.iconsize %}{{ icon.varname }}.iconSize = new GSize({{ icon.iconsize.0 }}, {{ icon.iconsize.1 }});{% endif %}\n{% if icon.infowindowanchor %}{{ icon.varname }}.infoWindowAnchor = new GPoint({{ icon.infowindowanchor.0 }}, {{ icon.infowindowanchor.1 }});{% endif %}{% endfor %}\n{% endblock vars %}{% block functions %}\n{% block load %}{{ js_module }}.{{ dom_id }}_load = function(){\n  if (GBrowserIsCompatible()) {\n    {{ js_module }}.{{ dom_id }} = new GMap2(document.getElementById(\"{{ dom_id }}\"));\n    {{ js_module }}.{{ dom_id }}.setCenter(new GLatLng({{ center.1 }}, {{ center.0 }}), {{ zoom }});\n    {% block controls %}{{ js_module }}.{{ dom_id }}.setUIToDefault();{% endblock %}\n    {% if calc_zoom %}var bounds = new GLatLngBounds(); var tmp_bounds = new GLatLngBounds();{% endif %}\n    {% for kml_url in kml_urls %}{{ js_module }}.{{ dom_id }}_kml{{ forloop.counter }} = new GGeoXml(\"{{ kml_url }}\");\n    {{ js_module }}.{{ dom_id }}.addOverlay({{ js_module }}.{{ dom_id }}_kml{{ forloop.counter }});{% endfor %}\n    {% for polygon in polygons %}{{ js_module }}.{{ dom_id }}_poly{{ forloop.counter }} = new {{ polygon }};\n    {{ js_module }}.{{ dom_id }}.addOverlay({{ js_module }}.{{ dom_id }}_poly{{ forloop.counter }});\n    {% for event in polygon.events %}GEvent.addListener({{ js_module }}.{{ dom_id }}_poly{{ forloop.parentloop.counter }}, {{ event }});{% endfor %}\n    {% if calc_zoom %}tmp_bounds = {{ js_module }}.{{ dom_id }}_poly{{ forloop.counter }}.getBounds(); bounds.extend(tmp_bounds.getSouthWest()); bounds.extend(tmp_bounds.getNorthEast());{% endif %}{% endfor %}\n    {% for polyline in polylines %}{{ js_module }}.{{ dom_id }}_polyline{{ forloop.counter }} = new {{ polyline }};\n    {{ js_module }}.{{ dom_id }}.addOverlay({{ js_module }}.{{ dom_id }}_polyline{{ forloop.counter }});\n    {% for event in polyline.events %}GEvent.addListener({{ js_module }}.{{ dom_id }}_polyline{{ forloop.parentloop.counter }}, {{ event }}); {% endfor %}\n    {% if calc_zoom %}tmp_bounds = {{ js_module }}.{{ dom_id }}_polyline{{ forloop.counter }}.getBounds(); bounds.extend(tmp_bounds.getSouthWest()); bounds.extend(tmp_bounds.getNorthEast());{% endif %}{% endfor %}\n    {% for marker in markers %}{{ js_module }}.{{ dom_id }}_marker{{ forloop.counter }} = new {{ marker }};\n    {{ js_module }}.{{ dom_id }}.addOverlay({{ js_module }}.{{ dom_id }}_marker{{ forloop.counter }});\n    {% for event in marker.events %}GEvent.addListener({{ js_module }}.{{ dom_id }}_marker{{ forloop.parentloop.counter }}, {{ event }}); {% endfor %}\n    {% if calc_zoom %}bounds.extend({{ js_module }}.{{ dom_id }}_marker{{ forloop.counter }}.getLatLng()); {% endif %}{% endfor %}\n    {% if calc_zoom %}{{ js_module }}.{{ dom_id }}.setCenter(bounds.getCenter(), {{ js_module }}.{{ dom_id }}.getBoundsZoomLevel(bounds));{% endif %}\n    {% block load_extra %}{% endblock %}\n  }else {\n    alert(\"Sorry, the Google Maps API is not compatible with this browser.\");\n  }\n}\n{% endblock load %}{% endblock functions %}{% endlocalize %}{% endautoescape %}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/templates/gis/google/google-multi.js",
    "content": "{% extends \"gis/google/google-map.js\" %}\n{% block functions %}\n{{ load_map_js }}\n{{ js_module }}.load = function(){\n    {% for dom_id in dom_ids %}{{ js_module }}.{{ dom_id }}_load();\n    {% endfor %}\n}\n{% endblock %}"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/templates/gis/google/google-single.js",
    "content": "{% extends \"gis/google/google-map.js\" %}\n{% block vars %}{# No vars here because used within GoogleMapSet #}{% endblock %}"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/templates/gis/kml/base.kml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<kml xmlns=\"http://earth.google.com/kml/{% block kml_version %}2.1{% endblock %}\">\n<Document>{% block name %}{% endblock %}\n{% block placemarks %}{% endblock %}\n</Document>\n</kml>\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/templates/gis/kml/placemarks.kml",
    "content": "{% extends \"gis/kml/base.kml\" %}\n{% block placemarks %}{% for place in places %}\n  <Placemark>\n    <name>{% if place.name %}{{ place.name }}{% else %}{{ place }}{% endif %}</name>\n    <description>{% if place.description %}{{ place.description }}{% else %}{{ place }}{% endif %}</description>\n    {{ place.kml|safe }}\n  </Placemark>{% endfor %}{% endblock %}\n\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/templates/gis/sitemaps/geo_sitemap.xml",
    "content": "{% autoescape off %}<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\" xmlns:geo=\"http://www.google.com/geo/schemas/sitemap/1.0\">\n{% spaceless %}\n{% for url in urlset %}\n  <url>\n    <loc>{{ url.location|escape }}</loc>\n    {% if url.lastmod %}<lastmod>{{ url.lastmod|date:\"Y-m-d\" }}</lastmod>{% endif %}\n    {% if url.changefreq %}<changefreq>{{ url.changefreq }}</changefreq>{% endif %}\n    {% if url.priority %}<priority>{{ url.priority }}</priority>{% endif %}\n    {% if url.geo_format %}<geo:geo>\n      <geo:format>{{ url.geo_format }}</geo:format>\n    </geo:geo>{% endif %}\n   </url>\n{% endfor %}\n{% endspaceless %}\n</urlset>\n{% endautoescape %}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/tests/__init__.py",
    "content": "from django.conf import settings\nfrom django.test.simple import build_suite, DjangoTestSuiteRunner\nfrom django.utils import unittest\n\nfrom .test_geoforms import GeometryFieldTest\nfrom .test_measure import DistanceTest, AreaTest\nfrom .test_spatialrefsys import SpatialRefSysTest\n\n\ndef geo_apps(namespace=True, runtests=False):\n    \"\"\"\n    Returns a list of GeoDjango test applications that reside in\n    `django.contrib.gis.tests` that can be used with the current\n    database and the spatial libraries that are installed.\n    \"\"\"\n    from django.db import connection\n    from django.contrib.gis.geos import GEOS_PREPARE\n    from django.contrib.gis.gdal import HAS_GDAL\n\n    apps = ['geoapp', 'relatedapp']\n\n    # No distance queries on MySQL.\n    if not connection.ops.mysql:\n        apps.append('distapp')\n\n    # Test geography support with PostGIS 1.5+.\n    if connection.ops.postgis and connection.ops.geography:\n        apps.append('geogapp')\n\n    # The following GeoDjango test apps depend on GDAL support.\n    if HAS_GDAL:\n        # Geographic admin, LayerMapping, and ogrinspect test apps\n        # all require GDAL.\n        apps.extend(['geoadmin', 'layermap', 'inspectapp'])\n\n        # 3D apps use LayerMapping, which uses GDAL and require GEOS 3.1+.\n        if connection.ops.postgis and GEOS_PREPARE:\n            apps.append('geo3d')\n    if runtests:\n        return [('django.contrib.gis.tests', app) for app in apps]\n    elif namespace:\n        return ['django.contrib.gis.tests.%s' % app\n                for app in apps]\n    else:\n        return apps\n\n\ndef geodjango_suite(apps=True):\n    \"\"\"\n    Returns a TestSuite consisting only of GeoDjango tests that can be run.\n    \"\"\"\n    import sys\n    from django.db.models import get_app\n\n    suite = unittest.TestSuite()\n\n    # Adding the GEOS tests.\n    from django.contrib.gis.geos import tests as geos_tests\n    suite.addTest(geos_tests.suite())\n\n    # Adding GDAL tests, and any test suite that depends on GDAL, to the\n    # suite if GDAL is available.\n    from django.contrib.gis.gdal import HAS_GDAL\n    if HAS_GDAL:\n        from django.contrib.gis.gdal import tests as gdal_tests\n        suite.addTest(gdal_tests.suite())\n    else:\n        sys.stderr.write('GDAL not available - no tests requiring GDAL will be run.\\n')\n\n    # Add GeoIP tests to the suite, if the library and data is available.\n    from django.contrib.gis.geoip import HAS_GEOIP\n    if HAS_GEOIP and hasattr(settings, 'GEOIP_PATH'):\n        from django.contrib.gis.geoip import tests as geoip_tests\n        suite.addTest(geoip_tests.suite())\n\n    # Finally, adding the suites for each of the GeoDjango test apps.\n    if apps:\n        for app_name in geo_apps(namespace=False):\n            suite.addTest(build_suite(get_app(app_name)))\n\n    return suite\n\n\nclass GeoDjangoTestSuiteRunner(DjangoTestSuiteRunner):\n\n    def setup_test_environment(self, **kwargs):\n        super(GeoDjangoTestSuiteRunner, self).setup_test_environment(**kwargs)\n\n        # Saving original values of INSTALLED_APPS, ROOT_URLCONF, and SITE_ID.\n        self.old_installed = getattr(settings, 'INSTALLED_APPS', None)\n        self.old_root_urlconf = getattr(settings, 'ROOT_URLCONF', '')\n        self.old_site_id = getattr(settings, 'SITE_ID', None)\n\n        # Constructing the new INSTALLED_APPS, and including applications\n        # within the GeoDjango test namespace.\n        new_installed =  [\n            'django.contrib.sites',\n            'django.contrib.sitemaps',\n            'django.contrib.gis',\n        ]\n\n        # Calling out to `geo_apps` to get GeoDjango applications supported\n        # for testing.\n        new_installed.extend(geo_apps())\n        settings.INSTALLED_APPS = list(self.old_installed) + new_installed\n\n        # SITE_ID needs to be set\n        settings.SITE_ID = 1\n\n        # ROOT_URLCONF needs to be set, else `AttributeErrors` are raised\n        # when TestCases are torn down that have `urls` defined.\n        settings.ROOT_URLCONF = ''\n\n\n    def teardown_test_environment(self, **kwargs):\n        super(GeoDjangoTestSuiteRunner, self).teardown_test_environment(**kwargs)\n        settings.INSTALLED_APPS = self.old_installed\n        settings.ROOT_URLCONF = self.old_root_urlconf\n        settings.SITE_ID = self.old_site_id\n\n\n    def build_suite(self, test_labels, extra_tests=None, **kwargs):\n        return geodjango_suite()\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/tests/data/ch-city/ch-city.prj",
    "content": "GEOGCS[\"GCS_WGS_1984\",DATUM[\"D_WGS_1984\",SPHEROID[\"WGS_1984\",6378137,298.257223563]],PRIMEM[\"Greenwich\",0],UNIT[\"Degree\",0.017453292519943295]]"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/tests/data/cities/cities.prj",
    "content": "GEOGCS[\"GCS_WGS_1984\",DATUM[\"D_WGS_1984\",SPHEROID[\"WGS_1984\",6378137,298.257223563]],PRIMEM[\"Greenwich\",0],UNIT[\"Degree\",0.017453292519943295]]"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/tests/data/geometries.json",
    "content": "{\n  \"polygons\": [\n    {\"wkt\": \"POLYGON ((0 0, 0 100, 100 100, 100 0, 0 0), (10 10, 10 90, 90 90, 90 10, 10 10))\", \"n_i\": 1, \"ext_ring_cs\": [[0, 0], [0, 100], [100, 100], [100, 0], [0, 0]], \"n_p\": 10, \"area\": 3600.0, \"centroid\": [50.0, 50.0]},\n    {\"wkt\": \"POLYGON ((0 0, 0 100, 100 100, 100 0, 0 0), (10 10, 10 20, 20 20, 20 10, 10 10), (80 80, 80 90, 90 90, 90 80, 80 80))\", \"n_i\": 2, \"ext_ring_cs\": [[0, 0], [0, 100], [100, 100], [100, 0], [0, 0]], \"n_p\": 15, \"area\": 9800.0, \"centroid\": [50.0, 50.0]},\n    {\"wkt\": \"POLYGON ((0 0, 0 100, 100 100, 100 0, 0 0))\", \"n_i\": 0, \"ext_ring_cs\": [[0, 0], [0, 100], [100, 100], [100, 0], [0, 0]], \"n_p\": 5, \"area\": 10000.0, \"centroid\": [50.0, 50.0]},\n    {\"wkt\": \"POLYGON ((-95.3848703124799471 29.7056021479768511, -95.3851905195191847 29.7046588196500281, -95.3859356966379011 29.7025053545605502, -95.3860723000647539 29.7020963367038391, -95.3871517697222089 29.6989779021280995, -95.3865578518265522 29.6990856888057202, -95.3862634205175226 29.6999471753441782, -95.3861991779541967 29.6999591988978615, -95.3856773799358137 29.6998323107113578, -95.3856209915427229 29.6998005235473741, -95.3855833545501639 29.6996619391729801, -95.3855776331865002 29.6996232659570047, -95.3850162731712885 29.6997236706530536, -95.3831047357410284 29.7000847603095082, -95.3829800724914776 29.7000676365023502, -95.3828084594470909 29.6999969684031200, -95.3828131504821499 29.6999090511531065, -95.3828022942979601 29.6998152117366025, -95.3827893930918833 29.6997790953076759, -95.3825174668099862 29.6998267772748825, -95.3823521544804862 29.7000451723151606, -95.3820491918785223 29.6999682034582335, -95.3817932841505893 29.6999640407204772, -95.3815438924600443 29.7005983712500630, -95.3807812390843424 29.7007538492921590, -95.3778578936435935 29.7012966201172048, -95.3770817300034679 29.7010555145969093, -95.3772763716395957 29.7004995005932031, -95.3769891024414420 29.7005797730360186, -95.3759855007185990 29.7007754783987821, -95.3759516423090474 29.7007305400669388, -95.3765252155960042 29.6989549173240874, -95.3766842746727832 29.6985134987163164, -95.3768510987262914 29.6980530300744938, -95.3769198676258014 29.6977137204527573, -95.3769616670751930 29.6973351617272172, -95.3770309229297766 29.6969821084304186, -95.3772352596880637 29.6959751305871613, -95.3776232419333354 29.6945439060847463, -95.3776849628727064 29.6943364710766069, -95.3779699491714723 29.6926548349458947, -95.3781945479573494 29.6920088336742545, -95.3785807118394189 29.6908279316076005, -95.3787441368896651 29.6908846275832197, -95.3787903214163890 29.6907152912461640, -95.3791765069353659 29.6893335376821526, -95.3794935959513026 29.6884781789101595, -95.3796592071232112 29.6880066681407619, -95.3799788182090111 29.6873687353035081, -95.3801545516183893 29.6868782380716993, -95.3801258908302145 29.6867756621337762, -95.3801104284899566 29.6867229678809572, -95.3803803523746154 29.6863753372986459, -95.3821028558287622 29.6837392961470421, -95.3827289584682205 29.6828097375216160, -95.3827494698109035 29.6790739156259278, -95.3826022014838486 29.6776502228345507, -95.3825047356438063 29.6765773006280753, -95.3823473035336917 29.6750405250369127, -95.3824540163482055 29.6750076408228587, -95.3838984230304305 29.6745679207378679, -95.3916547074937426 29.6722459226508377, -95.3926154662749468 29.6719609085105489, -95.3967246645118081 29.6707316485589736, -95.3974588054406780 29.6705065336410989, -95.3978523748756828 29.6703795547846845, -95.3988598162279970 29.6700874981900853, -95.3995628600665952 29.6698505300412414, -95.4134721665944170 29.6656841279906232, -95.4143262068232616 29.6654291174019278, -95.4159685142480214 29.6649750989232288, -95.4180067396277565 29.6643253024318021, -95.4185886692196590 29.6641482768691063, -95.4234155309609662 29.6626925393704788, -95.4287785503196346 29.6611023620959706, -95.4310287312749352 29.6604222580752648, -95.4320295629628959 29.6603361318136720, -95.4332899683975739 29.6600560661713608, -95.4342675748811047 29.6598454934599900, -95.4343110414310871 29.6598411486215490, -95.4345576779282538 29.6598147020668499, -95.4348823041721630 29.6597875803673112, -95.4352827715209457 29.6597762346946681, -95.4355290431309982 29.6597827926562374, -95.4359197997999331 29.6598014511782715, -95.4361907884752156 29.6598444333523368, -95.4364608955807228 29.6598901433108217, -95.4367250147512323 29.6599494499910712, -95.4364898759758091 29.6601880616540186, -95.4354501111810691 29.6616378572201107, -95.4381459623171224 29.6631265631655126, -95.4367852490863129 29.6642266600024023, -95.4370040894557263 29.6643425389568769, -95.4367078350812648 29.6645492592343238, -95.4366081749871285 29.6646291473027297, -95.4358539359938192 29.6652308742342932, -95.4350327668927889 29.6658995989314462, -95.4350580905272921 29.6678812477895271, -95.4349710541447536 29.6680054925936965, -95.4349500440473548 29.6671410080890006, -95.4341492724148850 29.6678790545191688, -95.4340248868274728 29.6680353198492135, -95.4333227845797438 29.6689245624945990, -95.4331325652123326 29.6691616138940901, -95.4321314741096955 29.6704473333237253, -95.4320435792664341 29.6702578985411982, -95.4320147929883547 29.6701800936425109, -95.4319764538662980 29.6683246590817085, -95.4317490976340679 29.6684974372577166, -95.4305958185342718 29.6694049049170374, -95.4296600735653016 29.6701723430938493, -95.4284928989940937 29.6710931793380972, -95.4274630532378580 29.6719378813640091, -95.4273056811974811 29.6720684984625791, -95.4260554084574864 29.6730668861566969, -95.4253558063699643 29.6736342467365724, -95.4249278826026028 29.6739557343648919, -95.4248648873821423 29.6745400910786152, -95.4260016131471929 29.6750987014005858, -95.4258567183010911 29.6753452063069929, -95.4260238081486847 29.6754322077221353, -95.4258707374502393 29.6756647377294307, -95.4257951755816691 29.6756407098663360, -95.4257701599566985 29.6761077719536068, -95.4257726684792260 29.6761711204603955, -95.4257980187195614 29.6770219651929423, -95.4252712669032519 29.6770161558853758, -95.4249234392992065 29.6770068683962300, -95.4249574272905789 29.6779707498635759, -95.4244725881033702 29.6779825646764159, -95.4222269476429545 29.6780711474441716, -95.4223032371999267 29.6796029391538809, -95.4239133706588945 29.6795331493690355, -95.4224579084327331 29.6813706893847780, -95.4224290108823965 29.6821953228763924, -95.4230916478977349 29.6822130268724109, -95.4222928279595521 29.6832041816675343, -95.4228763710016352 29.6832087677714505, -95.4223401691637179 29.6838987872753748, -95.4211655906087088 29.6838784024852984, -95.4201984153205558 29.6851319258758082, -95.4206156387716362 29.6851623398125319, -95.4213438084897660 29.6851763011334739, -95.4212071118618752 29.6853679931624974, -95.4202651399651245 29.6865313962980508, -95.4172061157659783 29.6865816431043932, -95.4182217951255183 29.6872251197301544, -95.4178664826439160 29.6876750901471631, -95.4180678442928780 29.6877960336377207, -95.4188763472917572 29.6882826379510938, -95.4185374500596311 29.6887137897831934, -95.4182121713132290 29.6885097429738813, -95.4179857231741551 29.6888118367840086, -95.4183106010563620 29.6890048676118212, -95.4179489865331334 29.6894546700979056, -95.4175581746284820 29.6892323606815438, -95.4173439957341571 29.6894990139807007, -95.4177411199311081 29.6897435034738422, -95.4175789200209721 29.6899207529979208, -95.4170598559864800 29.6896042165807508, -95.4166733682539814 29.6900891174451367, -95.4165941362704331 29.6900347214235047, -95.4163537218065301 29.6903529467753238, -95.4126843270708775 29.6881086357212780, -95.4126604121378392 29.6880942378803496, -95.4126672298953338 29.6885951670109982, -95.4126680884821923 29.6887052446594275, -95.4158080137241882 29.6906382377959339, -95.4152061403821961 29.6910871045531586, -95.4155842583188161 29.6917382915894308, -95.4157426793520358 29.6920726941677096, -95.4154520563662203 29.6922052332446427, -95.4151389936167078 29.6923261661269571, -95.4148649784384872 29.6924343866430256, -95.4144051352401590 29.6925623927348106, -95.4146792019416665 29.6926770338507744, -95.4148824479948985 29.6928117893696388, -95.4149851734360226 29.6929823719519774, -95.4140436551925291 29.6929626643100946, -95.4140465993023241 29.6926545917254892, -95.4137269186733334 29.6927395764256090, -95.4137372859685513 29.6935432485666624, -95.4135702836218655 29.6933186678088283, -95.4133925235973237 29.6930415229852152, -95.4133017035615580 29.6928685062036166, -95.4129588921634593 29.6929391128977862, -95.4125107395559695 29.6930481664661485, -95.4102647423187307 29.6935850183258019, -95.4081931340840157 29.6940907430947760, -95.4078783596459772 29.6941703429951609, -95.4049213975000043 29.6948723732981961, -95.4045944244127071 29.6949626434239207, -95.4045865139788134 29.6954109019001358, -95.4045953345484037 29.6956972800496963, -95.4038879332535146 29.6958296089365490, -95.4040366394459340 29.6964389004769842, -95.4032774779020798 29.6965643341263892, -95.4026066501239853 29.6966646227683881, -95.4024991226393837 29.6961389766619703, -95.4011781398631911 29.6963566063186377, -95.4011524097636112 29.6962596176762190, -95.4018184046368276 29.6961399466727336, -95.4016995838361908 29.6956442609415099, -95.4007100753964608 29.6958900524002978, -95.4008032469935188 29.6962639900781404, -95.3995660267125487 29.6965636449370329, -95.3996140564775601 29.6967877962763644, -95.3996364430014410 29.6968901984825280, -95.3984003269631842 29.6968679634805746, -95.3981442026887265 29.6983660679730335, -95.3980178461957706 29.6990890276252415, -95.3977097967130163 29.7008526152273049, -95.3962347157626027 29.7009697553607630, -95.3951949050136250 29.7004740386619019, -95.3957564950617183 29.6990281830553187, -95.3965927101519924 29.6968771129030706, -95.3957496517238184 29.6970800358387095, -95.3957720559467361 29.6972264611230727, -95.3957391586571788 29.6973548894558732, -95.3956286413405365 29.6974949857280883, -95.3955111053256957 29.6975661086270186, -95.3953215342724121 29.6976022763384790, -95.3951795558443365 29.6975846977491038, -95.3950369632041060 29.6975175779330200, -95.3949401089966500 29.6974269267953304, -95.3948740281415581 29.6972903308506346, -95.3946650813866910 29.6973397326847923, -95.3947654059391112 29.6974882560192022, -95.3949627316619768 29.6980355864961858, -95.3933200807862249 29.6984590863712796, -95.3932606497523494 29.6984464798710839, -95.3932983699113350 29.6983154306484352, -95.3933058014696655 29.6982165816983610, -95.3932946347785133 29.6981089778195759, -95.3931780601756287 29.6977068906794841, -95.3929928222970602 29.6977541771878180, -95.3930873169846478 29.6980676264932946, -95.3932743746374570 29.6981249406449663, -95.3929512584706316 29.6989526513922222, -95.3919850280655197 29.7014358632108646, -95.3918950918929056 29.7014169320765724, -95.3916928317890296 29.7019232352846423, -95.3915424614970959 29.7022988712928289, -95.3901530441668939 29.7058519502930061, -95.3899656322116698 29.7059156823562418, -95.3897628748670883 29.7059900058266777, -95.3896062677805787 29.7060738276384946, -95.3893941800512266 29.7061891695242046, -95.3892150365492455 29.7062641292949436, -95.3890502563035199 29.7063339729630940, -95.3888717930715586 29.7063896908080736, -95.3886925428988945 29.7064453871994978, -95.3885376849411983 29.7064797304524149, -95.3883284158984139 29.7065153575050189, -95.3881046767627794 29.7065368368267357, -95.3878809284696132 29.7065363048447537, -95.3876046356120924 29.7065288525102424, -95.3873060894974714 29.7064822806001452, -95.3869851943158409 29.7063993367575350, -95.3865967896568065 29.7062870572919202, -95.3861785624983156 29.7061492099008184, -95.3857375009733488 29.7059887337478798, -95.3854573290902152 29.7058683664514618, -95.3848703124799471 29.7056021479768511))\", \"n_i\": 0, \"ext_ring_cs\": false, \"n_p\": 264, \"area\": 0.00129917360654, \"centroid\": [-95.403569179437341, 29.681772571690402]}\n  ],\n  \"multipolygons\": [ \n    {\"wkt\": \"MULTIPOLYGON (((100 20, 180 20, 180 100, 100 100, 100 20)), ((20 100, 100 100, 100 180, 20 180, 20 100)), ((100 180, 180 180, 180 260, 100 260, 100 180)), ((180 100, 260 100, 260 180, 180 180, 180 100)))\",\"valid\": true, \"num_geom\":4, \"n_p\":20},\n    {\"wkt\": \"MULTIPOLYGON (((60 300, 320 220, 260 60, 60 100, 60 300)), ((60 300, 320 220, 260 60, 60 100, 60 300)))\", \"valid\": false},\n    {\"wkt\": \"MULTIPOLYGON (((180 60, 240 160, 300 60, 180 60)), ((80 80, 180 60, 160 140, 240 160, 360 140, 300 60, 420 100, 320 280, 120 260, 80 80)))\", \"valid\": true, \"num_geom\": 2, \"n_p\": 14}\n  ],\n  \"errors\": [\n    {\"wkt\": \"GEOMETR##!@#%#............a32515\", \"bad\": true, \"hex\": false},\n    {\"wkt\": \"Foo.Bar\", \"bad\": true, \"hex\": false},\n    {\"wkt\": \"POINT (5, 23)\", \"bad\": true, \"hex\": false},\n    {\"wkt\": \"AAABBBDDDAAD##@#1113511111-098111111111111111533333333333333\", \"bad\": true, \"hex\": true},\n    {\"wkt\": \"FFFFFFFFFFFFFFFFF1355555555555555555565111\", \"bad\": true, \"hex\": true},\n    {\"wkt\": \"\", \"bad\": true, \"hex\": false}\n  ],\n  \"wkt_out\": [\n    {\"wkt\": \"POINT (110 130)\", \"ewkt\": \"POINT (110.0000000000000000 130.0000000000000000)\", \"kml\": \"<Point><coordinates>110.0,130.0,0</coordinates></Point>\", \"gml\": \"<gml:Point><gml:coordinates>110,130</gml:coordinates></gml:Point>\"},\n    {\"wkt\": \"LINESTRING (40 40,50 130,130 130)\", \"ewkt\": \"LINESTRING (40.0000000000000000 40.0000000000000000, 50.0000000000000000 130.0000000000000000, 130.0000000000000000 130.0000000000000000)\", \"kml\": \"<LineString><coordinates>40.0,40.0,0 50.0,130.0,0 130.0,130.0,0</coordinates></LineString>\", \"gml\": \"<gml:LineString><gml:coordinates>40,40 50,130 130,130</gml:coordinates></gml:LineString>\"},\n    {\"wkt\": \"POLYGON ((150 150,410 150,280 20,20 20,150 150),(170 120,330 120,260 50,100 50,170 120))\", \"ewkt\": \"POLYGON ((150.0000000000000000 150.0000000000000000, 410.0000000000000000 150.0000000000000000, 280.0000000000000000 20.0000000000000000, 20.0000000000000000 20.0000000000000000, 150.0000000000000000 150.0000000000000000), (170.0000000000000000 120.0000000000000000, 330.0000000000000000 120.0000000000000000, 260.0000000000000000 50.0000000000000000, 100.0000000000000000 50.0000000000000000, 170.0000000000000000 120.0000000000000000))\", \"kml\": \"<Polygon><outerBoundaryIs><LinearRing><coordinates>150.0,150.0,0 410.0,150.0,0 280.0,20.0,0 20.0,20.0,0 150.0,150.0,0</coordinates></LinearRing></outerBoundaryIs><innerBoundaryIs><LinearRing><coordinates>170.0,120.0,0 330.0,120.0,0 260.0,50.0,0 100.0,50.0,0 170.0,120.0,0</coordinates></LinearRing></innerBoundaryIs></Polygon>\", \"gml\": \"<gml:Polygon><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>150,150 410,150 280,20 20,20 150,150</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs><gml:innerBoundaryIs><gml:LinearRing><gml:coordinates>170,120 330,120 260,50 100,50 170,120</gml:coordinates></gml:LinearRing></gml:innerBoundaryIs></gml:Polygon>\"},\n    {\"wkt\": \"MULTIPOINT (10 80,110 170,110 120)\", \"ewkt\": \"MULTIPOINT (10.0000000000000000 80.0000000000000000, 110.0000000000000000 170.0000000000000000, 110.0000000000000000 120.0000000000000000)\", \"kml\": \"<MultiGeometry><Point><coordinates>10.0,80.0,0</coordinates></Point><Point><coordinates>110.0,170.0,0</coordinates></Point><Point><coordinates>110.0,120.0,0</coordinates></Point></MultiGeometry>\", \"gml\": \"<gml:MultiPoint><gml:pointMember><gml:Point><gml:coordinates>10,80</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>110,170</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>110,120</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint>\"},\n    {\"wkt\": \"MULTILINESTRING ((110 100,40 30,180 30),(170 30,110 90,50 30))\", \"ewkt\": \"MULTILINESTRING ((110.0000000000000000 100.0000000000000000, 40.0000000000000000 30.0000000000000000, 180.0000000000000000 30.0000000000000000), (170.0000000000000000 30.0000000000000000, 110.0000000000000000 90.0000000000000000, 50.0000000000000000 30.0000000000000000))\", \"kml\": \"<MultiGeometry><LineString><coordinates>110.0,100.0,0 40.0,30.0,0 180.0,30.0,0</coordinates></LineString><LineString><coordinates>170.0,30.0,0 110.0,90.0,0 50.0,30.0,0</coordinates></LineString></MultiGeometry>\", \"gml\": \"<gml:MultiLineString><gml:lineStringMember><gml:LineString><gml:coordinates>110,100 40,30 180,30</gml:coordinates></gml:LineString></gml:lineStringMember><gml:lineStringMember><gml:LineString><gml:coordinates>170,30 110,90 50,30</gml:coordinates></gml:LineString></gml:lineStringMember></gml:MultiLineString>\"},\n    {\"wkt\": \"MULTIPOLYGON (((110 110,70 200,150 200,110 110),(110 110,100 180,120 180,110 110)),((110 110,150 20,70 20,110 110),(110 110,120 40,100 40,110 110)))\", \"ewkt\": \"MULTIPOLYGON (((110.0000000000000000 110.0000000000000000, 70.0000000000000000 200.0000000000000000, 150.0000000000000000 200.0000000000000000, 110.0000000000000000 110.0000000000000000), (110.0000000000000000 110.0000000000000000, 100.0000000000000000 180.0000000000000000, 120.0000000000000000 180.0000000000000000, 110.0000000000000000 110.0000000000000000)), ((110.0000000000000000 110.0000000000000000, 150.0000000000000000 20.0000000000000000, 70.0000000000000000 20.0000000000000000, 110.0000000000000000 110.0000000000000000), (110.0000000000000000 110.0000000000000000, 120.0000000000000000 40.0000000000000000, 100.0000000000000000 40.0000000000000000, 110.0000000000000000 110.0000000000000000)))\", \"kml\": \"<MultiGeometry><Polygon><outerBoundaryIs><LinearRing><coordinates>110.0,110.0,0 70.0,200.0,0 150.0,200.0,0 110.0,110.0,0</coordinates></LinearRing></outerBoundaryIs><innerBoundaryIs><LinearRing><coordinates>110.0,110.0,0 100.0,180.0,0 120.0,180.0,0 110.0,110.0,0</coordinates></LinearRing></innerBoundaryIs></Polygon><Polygon><outerBoundaryIs><LinearRing><coordinates>110.0,110.0,0 150.0,20.0,0 70.0,20.0,0 110.0,110.0,0</coordinates></LinearRing></outerBoundaryIs><innerBoundaryIs><LinearRing><coordinates>110.0,110.0,0 120.0,40.0,0 100.0,40.0,0 110.0,110.0,0</coordinates></LinearRing></innerBoundaryIs></Polygon></MultiGeometry>\", \"gml\": \"<gml:MultiPolygon><gml:polygonMember><gml:Polygon><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>110,110 70,200 150,200 110,110</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs><gml:innerBoundaryIs><gml:LinearRing><gml:coordinates>110,110 100,180 120,180 110,110</gml:coordinates></gml:LinearRing></gml:innerBoundaryIs></gml:Polygon></gml:polygonMember><gml:polygonMember><gml:Polygon><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>110,110 150,20 70,20 110,110</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs><gml:innerBoundaryIs><gml:LinearRing><gml:coordinates>110,110 120,40 100,40 110,110</gml:coordinates></gml:LinearRing></gml:innerBoundaryIs></gml:Polygon></gml:polygonMember></gml:MultiPolygon>\"},\n    {\"wkt\": \"GEOMETRYCOLLECTION (POINT (110 260),LINESTRING (110 0,110 60))\", \"ewkt\": \"GEOMETRYCOLLECTION (POINT (110.0000000000000000 260.0000000000000000), LINESTRING (110.0000000000000000 0.0000000000000000, 110.0000000000000000 60.0000000000000000))\", \"kml\": \"<MultiGeometry><Point><coordinates>110.0,260.0,0</coordinates></Point><LineString><coordinates>110.0,0.0,0 110.0,60.0,0</coordinates></LineString></MultiGeometry>\", \"gml\": \"<gml:GeometryCollection><gml:geometryMember><gml:Point><gml:coordinates>110,260</gml:coordinates></gml:Point></gml:geometryMember><gml:geometryMember><gml:LineString><gml:coordinates>110,0 110,60</gml:coordinates></gml:LineString></gml:geometryMember></gml:GeometryCollection>\"}\n  ],\n  \"hex_wkt\": [\n    {\"wkt\": \"POINT(0 1)\", \"hex\": \"01010000000000000000000000000000000000F03F\"},\n    {\"wkt\": \"LINESTRING(0 1, 2 3, 4 5)\", \"hex\": \"0102000000030000000000000000000000000000000000F03F0000000000000040000000000000084000000000000010400000000000001440\"},\n    {\"wkt\": \"POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))\", \"hex\": \"010300000001000000050000000000000000000000000000000000000000000000000024400000000000000000000000000000244000000000000024400000000000000000000000000000244000000000000000000000000000000000\"},\n    {\"wkt\": \"MULTIPOINT(0 0, 10 0, 10 10, 0 10, 0 0)\", \"hex\": \"010400000005000000010100000000000000000000000000000000000000010100000000000000000024400000000000000000010100000000000000000024400000000000002440010100000000000000000000000000000000002440010100000000000000000000000000000000000000\"},\n    {\"wkt\": \"MULTILINESTRING((0 0, 10 0, 10 10, 0 10),(20 20, 30 20))\", \"hex\": \"01050000000200000001020000000400000000000000000000000000000000000000000000000000244000000000000000000000000000002440000000000000244000000000000000000000000000002440010200000002000000000000000000344000000000000034400000000000003E400000000000003440\"},\n    {\"wkt\": \"MULTIPOLYGON(((0 0, 10 0, 10 10, 0 10, 0 0)),((20 20, 20 30, 30 30, 30 20, 20 20),(25 25, 25 26, 26 26, 26 25, 25 25)))\", \"hex\": \"010600000002000000010300000001000000050000000000000000000000000000000000000000000000000024400000000000000000000000000000244000000000000024400000000000000000000000000000244000000000000000000000000000000000010300000002000000050000000000000000003440000000000000344000000000000034400000000000003E400000000000003E400000000000003E400000000000003E40000000000000344000000000000034400000000000003440050000000000000000003940000000000000394000000000000039400000000000003A400000000000003A400000000000003A400000000000003A40000000000000394000000000000039400000000000003940\"},\n    {\"wkt\": \"GEOMETRYCOLLECTION(MULTIPOLYGON(((0 0, 10 0, 10 10, 0 10, 0 0)),((20 20, 20 30, 30 30, 30 20, 20 20),(25 25, 25 26, 26 26, 26 25, 25 25))),MULTILINESTRING((0 0, 10 0, 10 10, 0 10),(20 20, 30 20)),MULTIPOINT(0 0, 10 0, 10 10, 0 10, 0 0))\", \"hex\": \"010700000003000000010600000002000000010300000001000000050000000000000000000000000000000000000000000000000024400000000000000000000000000000244000000000000024400000000000000000000000000000244000000000000000000000000000000000010300000002000000050000000000000000003440000000000000344000000000000034400000000000003E400000000000003E400000000000003E400000000000003E40000000000000344000000000000034400000000000003440050000000000000000003940000000000000394000000000000039400000000000003A400000000000003A400000000000003A400000000000003A4000000000000039400000000000003940000000000000394001050000000200000001020000000400000000000000000000000000000000000000000000000000244000000000000000000000000000002440000000000000244000000000000000000000000000002440010200000002000000000000000000344000000000000034400000000000003E400000000000003440010400000005000000010100000000000000000000000000000000000000010100000000000000000024400000000000000000010100000000000000000024400000000000002440010100000000000000000000000000000000002440010100000000000000000000000000000000000000\"}\n  ],\n  \"json_geoms\": [\n    {\"wkt\": \"POINT(100 0)\", \"json\": \"{ \\\"type\\\": \\\"Point\\\", \\\"coordinates\\\": [ 100.000000, 0.000000 ] }\"},\n    {\"wkt\": \"POLYGON((0 0, -10 0, -10 -10, 0 -10, 0 0))\", \"json\": \"{ \\\"type\\\": \\\"Polygon\\\", \\\"coordinates\\\": [ [ [ 0.000000, 0.000000 ], [ -10.000000, 0.000000 ], [ -10.000000, -10.000000 ], [ 0.000000, -10.000000 ], [ 0.000000, 0.000000 ] ] ] }\"},\n    {\"wkt\": \"MULTIPOLYGON(((102 2, 103 2, 103 3, 102 3, 102 2)), ((100.0 0.0, 101.0 0.0, 101.0 1.0, 100.0 1.0, 100.0 0.0), (100.2 0.2, 100.8 0.2, 100.8 0.8, 100.2 0.8, 100.2 0.2)))\", \"json\": \"{ \\\"type\\\": \\\"MultiPolygon\\\", \\\"coordinates\\\": [ [ [ [ 102.000000, 2.000000 ], [ 103.000000, 2.000000 ], [ 103.000000, 3.000000 ], [ 102.000000, 3.000000 ], [ 102.000000, 2.000000 ] ] ], [ [ [ 100.000000, 0.000000 ], [ 101.000000, 0.000000 ], [ 101.000000, 1.000000 ], [ 100.000000, 1.000000 ], [ 100.000000, 0.000000 ] ], [ [ 100.200000, 0.200000 ], [ 100.800000, 0.200000 ], [ 100.800000, 0.800000 ], [ 100.200000, 0.800000 ], [ 100.200000, 0.200000 ] ] ] ] }\"},\n    {\"wkt\": \"GEOMETRYCOLLECTION(POINT(100 0),LINESTRING(101.0 0.0, 102.0 1.0))\", \"json\": \"{ \\\"type\\\": \\\"GeometryCollection\\\", \\\"geometries\\\": [ { \\\"type\\\": \\\"Point\\\", \\\"coordinates\\\": [ 100.000000, 0.000000 ] }, { \\\"type\\\": \\\"LineString\\\", \\\"coordinates\\\": [ [ 101.000000, 0.000000 ], [ 102.000000, 1.000000 ] ] } ] }\"},\n    {\"wkt\": \"MULTILINESTRING((100.0 0.0, 101.0 1.0),(102.0 2.0, 103.0 3.0))\", \"json\": \"\\\\n\\\\n{ \\\"type\\\": \\\"MultiLineString\\\",\\\\n  \\\"coordinates\\\": [\\\\n      [ [100.0, 0.0], [101.0, 1.0] ],\\\\n      [ [102.0, 2.0], [103.0, 3.0] ]\\\\n    ]\\\\n  }\\\\n\\\\n\", \"not_equal\": true}\n  ],\n  \"points\": [\n    {\"wkt\": \"POINT (5 23)\", \"x\": 5.0, \"y\": 23.0, \"centroid\": [5.0, 23.0]},\n    {\"wkt\": \"POINT (-95.338492 29.723893)\", \"x\": -95.338492, \"y\": 29.723893, \"centroid\": [-95.338492, 29.723893]},\n    {\"wkt\": \"POINT(1.234 5.678)\", \"x\": 1.234, \"y\": 5.678, \"centroid\": [1.234, 5.678]},\n    {\"wkt\": \"POINT(4.321 8.765)\", \"x\": 4.321, \"y\": 8.765, \"centroid\": [4.321, 8.765]},\n    {\"wkt\": \"POINT(10 10)\", \"x\": 10, \"y\": 10, \"centroid\": [10.0, 10.0]},\n    {\"wkt\": \"POINT (5 23 8)\", \"x\": 5.0, \"y\": 23.0, \"z\": 8.0, \"centroid\": [5.0, 23.0]}\n  ],\n  \"multipoints\":[\n    {\"wkt\": \"MULTIPOINT(10 10, 20 20 )\", \"n_p\": 2, \"coords\": [[10.0, 10.0], [20.0, 20.0]], \"centroid\": [15.0, 15.0]},\n    {\"wkt\": \"MULTIPOINT(10 10, 20 20, 10 20, 20 10)\", \"n_p\": 4, \"coords\": [[10.0, 10.0], [20.0, 20.0], [10.0, 20.0], [20.0, 10.0]], \"centroid\": [15.0, 15.0]}\n  ],\n  \"linestrings\": [\n    {\"wkt\": \"LINESTRING (60 180, 120 100, 180 180)\", \"n_p\": 3, \"centroid\": [120.0, 140.0], \"coords\": [[60.0, 180.0], [120.0, 100.0], [180.0, 180.0]]},\n    {\"wkt\": \"LINESTRING (0 0, 5 5, 10 5, 10 10)\", \"n_p\": 4, \"centroid\": [6.1611652351681556, 4.6966991411008934], \"coords\": [[0.0, 0.0], [5.0, 5.0], [10.0, 5.0], [10.0, 10.0]]}\n  ],\n  \"linearrings\": [\n    {\"wkt\": \"LINEARRING (649899.3065171393100172 4176512.3807915160432458, 649902.7294133581453934 4176512.7834989596158266, 649906.5550170192727819 4176514.3942507002502680, 649910.5820134161040187 4176516.0050024418160319, 649914.4076170771149918 4176518.0184616246260703, 649917.2264131171396002 4176519.4278986593708396, 649920.0452871860470623 4176521.6427505780011415, 649922.0587463703704998 4176522.8507948759943247, 649924.2735982896992937 4176524.4616246484220028, 649926.2870574744883925 4176525.4683542405255139, 649927.8978092158213258 4176526.8777912775985897, 649929.3072462501004338 4176528.0858355751261115, 649930.1126611357321963 4176529.4952726080082357, 649927.4951798024121672 4176506.9444361114874482, 649899.3065171393100172 4176512.3807915160432458)\", \"n_p\": 15}\n  ],\n  \"multilinestrings\": [\n    {\"wkt\": \"MULTILINESTRING ((0 0, 0 100), (100 0, 100 100))\", \"n_p\": 4, \"centroid\": [50.0, 50.0], \"coords\": [[[0, 0], [0, 100]], [[100, 0], [100, 100]]]},\n    {\"wkt\": \"MULTILINESTRING ((20 20, 60 60), (20 -20, 60 -60), (-20 -20, -60 -60), (-20 20, -60 60), (-80 0, 0 80, 80 0, 0 -80, -80 0), (-40 20, -40 -20), (-20 40, 20 40), (40 20, 40 -20), (20 -40, -20 -40))\", \"n_p\": 21, \"centroid\": [0.0, 0.0], \"coords\": [[[20.0, 20.0], [60.0, 60.0]], [[20.0, -20.0], [60.0, -60.0]], [[-20.0, -20.0], [-60.0, -60.0]], [[-20.0, 20.0], [-60.0, 60.0]], [[-80.0, 0.0], [0.0, 80.0], [80.0, 0.0], [0.0, -80.0], [-80.0, 0.0]], [[-40.0, 20.0], [-40.0, -20.0]], [[-20.0, 40.0], [20.0, 40.0]], [[40.0, 20.0], [40.0, -20.0]], [[20.0, -40.0], [-20.0, -40.0]]]}\n  ],\n  \"buffer_geoms\": [\n      {\"wkt\": \"POINT(0 0)\",\n       \"buffer_wkt\": \"POLYGON ((5 0,4.903926402016153 -0.97545161008064,4.619397662556435 -1.913417161825447,4.157348061512728 -2.777851165098009,3.53553390593274 -3.535533905932735,2.777851165098015 -4.157348061512724,1.913417161825454 -4.619397662556431,0.975451610080648 -4.903926402016151,0.000000000000008 -5.0,-0.975451610080632 -4.903926402016154,-1.913417161825439 -4.619397662556437,-2.777851165098002 -4.157348061512732,-3.53553390593273 -3.535533905932746,-4.157348061512719 -2.777851165098022,-4.619397662556429 -1.913417161825462,-4.903926402016149 -0.975451610080656,-5.0 -0.000000000000016,-4.903926402016156 0.975451610080624,-4.619397662556441 1.913417161825432,-4.157348061512737 2.777851165097995,-3.535533905932752 3.535533905932723,-2.777851165098029 4.157348061512714,-1.913417161825468 4.619397662556426,-0.975451610080661 4.903926402016149,-0.000000000000019 5.0,0.975451610080624 4.903926402016156,1.913417161825434 4.61939766255644,2.777851165097998 4.157348061512735,3.535533905932727 3.535533905932748,4.157348061512719 2.777851165098022,4.619397662556429 1.91341716182546,4.90392640201615 0.975451610080652,5 0))\",\n       \"width\": 5.0, \"quadsegs\": 8\n      },\n      {\"wkt\": \"POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))\",\n       \"buffer_wkt\": \"POLYGON ((-2 0,-2 10,-1.961570560806461 10.390180644032258,-1.847759065022573 10.765366864730179,-1.662939224605091 11.111140466039204,-1.414213562373095 11.414213562373096,-1.111140466039204 11.662939224605092,-0.765366864730179 11.847759065022574,-0.390180644032256 11.961570560806461,0 12,10 12,10.390180644032256 11.961570560806461,10.765366864730179 11.847759065022574,11.111140466039204 11.66293922460509,11.414213562373096 11.414213562373096,11.66293922460509 11.111140466039204,11.847759065022574 10.765366864730179,11.961570560806461 10.390180644032256,12 10,12 0,11.961570560806461 -0.390180644032256,11.847759065022574 -0.76536686473018,11.66293922460509 -1.111140466039204,11.414213562373096 -1.414213562373095,11.111140466039204 -1.66293922460509,10.765366864730179 -1.847759065022573,10.390180644032256 -1.961570560806461,10 -2,0.0 -2.0,-0.390180644032255 -1.961570560806461,-0.765366864730177 -1.847759065022575,-1.1111404660392 -1.662939224605093,-1.41421356237309 -1.4142135623731,-1.662939224605086 -1.111140466039211,-1.84775906502257 -0.765366864730189,-1.961570560806459 -0.390180644032268,-2 0))\",\n       \"width\": 2.0, \"quadsegs\": 8\n      }\n  ],\n  \"relate_geoms\": [\n      {\"wkt_a\": \"MULTIPOINT(80 70, 20 20, 200 170, 140 120)\",\n       \"wkt_b\": \"MULTIPOINT(80 170, 140 120, 200 80, 80 70)\",\n       \"pattern\": \"0F0FFF0F2\", \"result\": true\n      },\n      {\"wkt_a\": \"POINT(20 20)\",\n       \"wkt_b\": \"POINT(40 60)\",\n       \"pattern\": \"FF0FFF0F2\", \"result\": true\n      },\n      {\"wkt_a\": \"POINT(110 110)\",\n       \"wkt_b\": \"LINESTRING(200 200, 110 110, 200 20, 20 20, 110 110, 20 200, 200 200)\",\n       \"pattern\": \"0FFFFF1F2\", \"result\": true\n      },\n      {\"wkt_a\": \"MULTILINESTRING((20 20, 90 20, 170 20), (90 20, 90 80, 90 140))\",\n       \"wkt_b\": \"MULTILINESTRING((90 20, 170 100, 170 140), (130 140, 130 60, 90 20, 20 90, 90 20))\",\n       \"pattern\": \"FF10F0102\", \"result\": true\n      }\n  ],\n  \"topology_geoms\": [\n      {\"wkt_a\": \"POLYGON ((-5.0 0.0, -5.0 10.0, 5.0 10.0, 5.0 0.0, -5.0 0.0))\",\n       \"wkt_b\": \"POLYGON ((0.0 -5.0, 0.0 5.0, 10.0 5.0, 10.0 -5.0, 0.0 -5.0))\"\n      },\n      {\"wkt_a\": \"POLYGON ((2 0, 18 0, 18 15, 2 15, 2 0))\",\n       \"wkt_b\": \"POLYGON ((10 1, 11 3, 13 4, 15 6, 16 8, 16 10, 15 12, 13 13, 11 12, 10 10, 9 12, 7 13, 5 12, 4 10, 4 8, 5 6, 7 4, 9 3, 10 1))\"\n      }\n  ],\n  \"diff_geoms\": [\n      {\"wkt\": \"POLYGON ((-5 0,-5 10,5 10,5 5,0 5,0 0,-5 0))\"},\n      {\"wkt\": \"POLYGON ((2 0, 2 15, 18 15, 18 0, 2 0), (10 1, 11 3, 13 4, 15 6, 16 8, 16 10, 15 12, 13 13, 11 12, 10 10, 9 12, 7 13, 5 12, 4 10, 4 8, 5 6, 7 4, 9 3, 10 1))\"}\n  ],\n  \"sdiff_geoms\": [\n      {\"wkt\": \"MULTIPOLYGON (((-5 0,-5 10,5 10,5 5,0 5,0 0,-5 0)),((0 0,5 0,5 5,10 5,10 -5,0 -5,0 0)))\"},\n      {\"wkt\": \"POLYGON ((2 0, 2 15, 18 15, 18 0, 2 0), (10 1, 11 3, 13 4, 15 6, 16 8, 16 10, 15 12, 13 13, 11 12, 10 10, 9 12, 7 13, 5 12, 4 10, 4 8, 5 6, 7 4, 9 3, 10 1))\"}\n  ],\n  \"intersect_geoms\": [\n      {\"wkt\": \"POLYGON ((5 5,5 0,0 0,0 5,5 5))\"},\n      {\"wkt\": \"POLYGON ((10 1, 9 3, 7 4, 5 6, 4 8, 4 10, 5 12, 7 13, 9 12, 10 10, 11 12, 13 13, 15 12, 16 10, 16 8, 15 6, 13 4, 11 3, 10 1))\"}\n  ],\n  \"union_geoms\": [\n      {\"wkt\": \"POLYGON ((-5 0,-5 10,5 10,5 5,10 5,10 -5,0 -5,0 0,-5 0))\"},\n      {\"wkt\": \"POLYGON ((2 0, 2 15, 18 15, 18 0, 2 0))\"}\n  ]\n}"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/tests/data/interstates/interstates.prj",
    "content": "GEOGCS[\"GCS_WGS_1984\",DATUM[\"D_WGS_1984\",SPHEROID[\"WGS_1984\",6378137,298.257223563]],PRIMEM[\"Greenwich\",0],UNIT[\"Degree\",0.017453292519943295]]"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/tests/data/test_point/test_point.prj",
    "content": "GEOGCS[\"GCS_WGS_1984\",DATUM[\"D_WGS_1984\",SPHEROID[\"WGS_1984\",6378137,298.257223563]],PRIMEM[\"Greenwich\",0],UNIT[\"Degree\",0.017453292519943295]]"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/tests/data/test_poly/test_poly.prj",
    "content": "GEOGCS[\"GCS_WGS_1984\",DATUM[\"D_WGS_1984\",SPHEROID[\"WGS_1984\",6378137,298.257223563]],PRIMEM[\"Greenwich\",0],UNIT[\"Degree\",0.017453292519943295]]"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/tests/data/test_vrt/test_vrt.csv",
    "content": "POINT_X,POINT_Y,NUM\n1.0,2.0,5\n5.0,23.0,17\n100.0,523.5,23\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/tests/data/test_vrt/test_vrt.vrt",
    "content": "<OGRVRTDataSource>\n<OGRVRTLayer name=\"test_vrt\">\n<SrcDataSource relativeToVRT=\"1\">test_vrt.csv</SrcDataSource>\n<GeometryType>wkbPoint25D</GeometryType>\n<GeometryField encoding=\"PointFromColumns\" x=\"POINT_X\" y=\"POINT_Y\" z=\"NUM\"/>\n</OGRVRTLayer>\n</OGRVRTDataSource>"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/tests/distapp/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/tests/distapp/models.py",
    "content": "from django.contrib.gis.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n@python_2_unicode_compatible\nclass SouthTexasCity(models.Model):\n    \"City model on projected coordinate system for South Texas.\"\n    name = models.CharField(max_length=30)\n    point = models.PointField(srid=32140)\n    objects = models.GeoManager()\n    def __str__(self): return self.name\n\n@python_2_unicode_compatible\nclass SouthTexasCityFt(models.Model):\n    \"Same City model as above, but U.S. survey feet are the units.\"\n    name = models.CharField(max_length=30)\n    point = models.PointField(srid=2278)\n    objects = models.GeoManager()\n    def __str__(self): return self.name\n\n@python_2_unicode_compatible\nclass AustraliaCity(models.Model):\n    \"City model for Australia, using WGS84.\"\n    name = models.CharField(max_length=30)\n    point = models.PointField()\n    objects = models.GeoManager()\n    def __str__(self): return self.name\n\n@python_2_unicode_compatible\nclass CensusZipcode(models.Model):\n    \"Model for a few South Texas ZIP codes (in original Census NAD83).\"\n    name = models.CharField(max_length=5)\n    poly = models.PolygonField(srid=4269)\n    objects = models.GeoManager()\n    def __str__(self): return self.name\n\n@python_2_unicode_compatible\nclass SouthTexasZipcode(models.Model):\n    \"Model for a few South Texas ZIP codes.\"\n    name = models.CharField(max_length=5)\n    poly = models.PolygonField(srid=32140, null=True)\n    objects = models.GeoManager()\n    def __str__(self): return self.name\n\n@python_2_unicode_compatible\nclass Interstate(models.Model):\n    \"Geodetic model for U.S. Interstates.\"\n    name = models.CharField(max_length=10)\n    path = models.LineStringField()\n    objects = models.GeoManager()\n    def __str__(self): return self.name\n\n@python_2_unicode_compatible\nclass SouthTexasInterstate(models.Model):\n    \"Projected model for South Texas Interstates.\"\n    name = models.CharField(max_length=10)\n    path = models.LineStringField(srid=32140)\n    objects = models.GeoManager()\n    def __str__(self): return self.name\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/tests/distapp/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom django.db import connection\nfrom django.db.models import Q\nfrom django.contrib.gis.geos import GEOSGeometry, LineString\nfrom django.contrib.gis.measure import D # alias for Distance\nfrom django.contrib.gis.tests.utils import oracle, postgis, spatialite, no_oracle, no_spatialite\nfrom django.test import TestCase\n\nfrom .models import (AustraliaCity, Interstate, SouthTexasInterstate,\n    SouthTexasCity, SouthTexasCityFt, CensusZipcode, SouthTexasZipcode)\n\n\nclass DistanceTest(TestCase):\n\n    # A point we are testing distances with -- using a WGS84\n    # coordinate that'll be implicitly transormed to that to\n    # the coordinate system of the field, EPSG:32140 (Texas South Central\n    # w/units in meters)\n    stx_pnt = GEOSGeometry('POINT (-95.370401017314293 29.704867409475465)', 4326)\n    # Another one for Australia\n    au_pnt = GEOSGeometry('POINT (150.791 -34.4919)', 4326)\n\n    def get_names(self, qs):\n        cities = [c.name for c in qs]\n        cities.sort()\n        return cities\n\n    def test01_init(self):\n        \"Test initialization of distance models.\"\n        self.assertEqual(9, SouthTexasCity.objects.count())\n        self.assertEqual(9, SouthTexasCityFt.objects.count())\n        self.assertEqual(11, AustraliaCity.objects.count())\n        self.assertEqual(4, SouthTexasZipcode.objects.count())\n        self.assertEqual(4, CensusZipcode.objects.count())\n        self.assertEqual(1, Interstate.objects.count())\n        self.assertEqual(1, SouthTexasInterstate.objects.count())\n\n    @no_spatialite\n    def test02_dwithin(self):\n        \"Testing the `dwithin` lookup type.\"\n        # Distances -- all should be equal (except for the\n        # degree/meter pair in au_cities, that's somewhat\n        # approximate).\n        tx_dists = [(7000, 22965.83), D(km=7), D(mi=4.349)]\n        au_dists = [(0.5, 32000), D(km=32), D(mi=19.884)]\n\n        # Expected cities for Australia and Texas.\n        tx_cities = ['Downtown Houston', 'Southside Place']\n        au_cities = ['Mittagong', 'Shellharbour', 'Thirroul', 'Wollongong']\n\n        # Performing distance queries on two projected coordinate systems one\n        # with units in meters and the other in units of U.S. survey feet.\n        for dist in tx_dists:\n            if isinstance(dist, tuple): dist1, dist2 = dist\n            else: dist1 = dist2 = dist\n            qs1 = SouthTexasCity.objects.filter(point__dwithin=(self.stx_pnt, dist1))\n            qs2 = SouthTexasCityFt.objects.filter(point__dwithin=(self.stx_pnt, dist2))\n            for qs in qs1, qs2:\n                self.assertEqual(tx_cities, self.get_names(qs))\n\n        # Now performing the `dwithin` queries on a geodetic coordinate system.\n        for dist in au_dists:\n            if isinstance(dist, D) and not oracle: type_error = True\n            else: type_error = False\n\n            if isinstance(dist, tuple):\n                if oracle: dist = dist[1]\n                else: dist = dist[0]\n\n            # Creating the query set.\n            qs = AustraliaCity.objects.order_by('name')\n            if type_error:\n                # A ValueError should be raised on PostGIS when trying to pass\n                # Distance objects into a DWithin query using a geodetic field.\n                self.assertRaises(ValueError, AustraliaCity.objects.filter(point__dwithin=(self.au_pnt, dist)).count)\n            else:\n                self.assertEqual(au_cities, self.get_names(qs.filter(point__dwithin=(self.au_pnt, dist))))\n\n    def test03a_distance_method(self):\n        \"Testing the `distance` GeoQuerySet method on projected coordinate systems.\"\n        # The point for La Grange, TX\n        lagrange = GEOSGeometry('POINT(-96.876369 29.905320)', 4326)\n        # Reference distances in feet and in meters. Got these values from\n        # using the provided raw SQL statements.\n        #  SELECT ST_Distance(point, ST_Transform(ST_GeomFromText('POINT(-96.876369 29.905320)', 4326), 32140)) FROM distapp_southtexascity;\n        m_distances = [147075.069813, 139630.198056, 140888.552826,\n                       138809.684197, 158309.246259, 212183.594374,\n                       70870.188967, 165337.758878, 139196.085105]\n        #  SELECT ST_Distance(point, ST_Transform(ST_GeomFromText('POINT(-96.876369 29.905320)', 4326), 2278)) FROM distapp_southtexascityft;\n        # Oracle 11 thinks this is not a projected coordinate system, so it's s\n        # not tested.\n        ft_distances = [482528.79154625, 458103.408123001, 462231.860397575,\n                        455411.438904354, 519386.252102563, 696139.009211594,\n                        232513.278304279, 542445.630586414, 456679.155883207]\n\n        # Testing using different variations of parameters and using models\n        # with different projected coordinate systems.\n        dist1 = SouthTexasCity.objects.distance(lagrange, field_name='point')\n        dist2 = SouthTexasCity.objects.distance(lagrange)  # Using GEOSGeometry parameter\n        if spatialite or oracle:\n            dist_qs = [dist1, dist2]\n        else:\n            dist3 = SouthTexasCityFt.objects.distance(lagrange.ewkt) # Using EWKT string parameter.\n            dist4 = SouthTexasCityFt.objects.distance(lagrange)\n            dist_qs = [dist1, dist2, dist3, dist4]\n\n        # Original query done on PostGIS, have to adjust AlmostEqual tolerance\n        # for Oracle.\n        if oracle: tol = 2\n        else: tol = 5\n\n        # Ensuring expected distances are returned for each distance queryset.\n        for qs in dist_qs:\n            for i, c in enumerate(qs):\n                self.assertAlmostEqual(m_distances[i], c.distance.m, tol)\n                self.assertAlmostEqual(ft_distances[i], c.distance.survey_ft, tol)\n\n    @no_spatialite\n    def test03b_distance_method(self):\n        \"Testing the `distance` GeoQuerySet method on geodetic coordnate systems.\"\n        if oracle: tol = 2\n        else: tol = 5\n\n        # Testing geodetic distance calculation with a non-point geometry\n        # (a LineString of Wollongong and Shellharbour coords).\n        ls = LineString( ( (150.902, -34.4245), (150.87, -34.5789) ) )\n        if oracle or connection.ops.geography:\n            # Reference query:\n            #  SELECT ST_distance_sphere(point, ST_GeomFromText('LINESTRING(150.9020 -34.4245,150.8700 -34.5789)', 4326)) FROM distapp_australiacity ORDER BY name;\n            distances = [1120954.92533513, 140575.720018241, 640396.662906304,\n                         60580.9693849269, 972807.955955075, 568451.8357838,\n                         40435.4335201384, 0, 68272.3896586844, 12375.0643697706, 0]\n            qs = AustraliaCity.objects.distance(ls).order_by('name')\n            for city, distance in zip(qs, distances):\n                # Testing equivalence to within a meter.\n                self.assertAlmostEqual(distance, city.distance.m, 0)\n        else:\n            # PostGIS 1.4 and below is limited to disance queries only\n            # to/from point geometries, check for raising of ValueError.\n            self.assertRaises(ValueError, AustraliaCity.objects.distance, ls)\n            self.assertRaises(ValueError, AustraliaCity.objects.distance, ls.wkt)\n\n        # Got the reference distances using the raw SQL statements:\n        #  SELECT ST_distance_spheroid(point, ST_GeomFromText('POINT(151.231341 -33.952685)', 4326), 'SPHEROID[\"WGS 84\",6378137.0,298.257223563]') FROM distapp_australiacity WHERE (NOT (id = 11));\n        #  SELECT ST_distance_sphere(point, ST_GeomFromText('POINT(151.231341 -33.952685)', 4326)) FROM distapp_australiacity WHERE (NOT (id = 11));  st_distance_sphere\n        if connection.ops.postgis and connection.ops.proj_version_tuple() >= (4, 7, 0):\n            # PROJ.4 versions 4.7+ have updated datums, and thus different\n            # distance values.\n            spheroid_distances = [60504.0628957201, 77023.9489850262, 49154.8867574404,\n                                  90847.4358768573, 217402.811919332, 709599.234564757,\n                                  640011.483550888, 7772.00667991925, 1047861.78619339,\n                                  1165126.55236034]\n            sphere_distances = [60580.9693849267, 77144.0435286473, 49199.4415344719,\n                                90804.7533823494, 217713.384600405, 709134.127242793,\n                                639828.157159169, 7786.82949717788, 1049204.06569028,\n                                1162623.7238134]\n\n        else:\n            spheroid_distances = [60504.0628825298, 77023.948962654, 49154.8867507115,\n                                  90847.435881812, 217402.811862568, 709599.234619957,\n                                  640011.483583758, 7772.00667666425, 1047861.7859506,\n                                  1165126.55237647]\n            sphere_distances = [60580.7612632291, 77143.7785056615, 49199.2725132184,\n                                90804.4414289463, 217712.63666124, 709131.691061906,\n                                639825.959074112, 7786.80274606706, 1049200.46122281,\n                                1162619.7297006]\n\n        # Testing with spheroid distances first.\n        hillsdale = AustraliaCity.objects.get(name='Hillsdale')\n        qs = AustraliaCity.objects.exclude(id=hillsdale.id).distance(hillsdale.point, spheroid=True)\n        for i, c in enumerate(qs):\n            self.assertAlmostEqual(spheroid_distances[i], c.distance.m, tol)\n        if postgis:\n            # PostGIS uses sphere-only distances by default, testing these as well.\n            qs =  AustraliaCity.objects.exclude(id=hillsdale.id).distance(hillsdale.point)\n            for i, c in enumerate(qs):\n                self.assertAlmostEqual(sphere_distances[i], c.distance.m, tol)\n\n    @no_oracle # Oracle already handles geographic distance calculation.\n    def test03c_distance_method(self):\n        \"Testing the `distance` GeoQuerySet method used with `transform` on a geographic field.\"\n        # Normally you can't compute distances from a geometry field\n        # that is not a PointField (on PostGIS 1.4 and below).\n        if not connection.ops.geography:\n            self.assertRaises(ValueError, CensusZipcode.objects.distance, self.stx_pnt)\n\n        # We'll be using a Polygon (created by buffering the centroid\n        # of 77005 to 100m) -- which aren't allowed in geographic distance\n        # queries normally, however our field has been transformed to\n        # a non-geographic system.\n        z = SouthTexasZipcode.objects.get(name='77005')\n\n        # Reference query:\n        # SELECT ST_Distance(ST_Transform(\"distapp_censuszipcode\".\"poly\", 32140), ST_GeomFromText('<buffer_wkt>', 32140)) FROM \"distapp_censuszipcode\";\n        dists_m = [3553.30384972258, 1243.18391525602, 2186.15439472242]\n\n        # Having our buffer in the SRID of the transformation and of the field\n        # -- should get the same results. The first buffer has no need for\n        # transformation SQL because it is the same SRID as what was given\n        # to `transform()`.  The second buffer will need to be transformed,\n        # however.\n        buf1 = z.poly.centroid.buffer(100)\n        buf2 = buf1.transform(4269, clone=True)\n        ref_zips = ['77002', '77025', '77401']\n\n        for buf in [buf1, buf2]:\n            qs = CensusZipcode.objects.exclude(name='77005').transform(32140).distance(buf)\n            self.assertEqual(ref_zips, self.get_names(qs))\n            for i, z in enumerate(qs):\n                self.assertAlmostEqual(z.distance.m, dists_m[i], 5)\n\n    def test04_distance_lookups(self):\n        \"Testing the `distance_lt`, `distance_gt`, `distance_lte`, and `distance_gte` lookup types.\"\n        # Retrieving the cities within a 20km 'donut' w/a 7km radius 'hole'\n        # (thus, Houston and Southside place will be excluded as tested in\n        # the `test02_dwithin` above).\n        qs1 = SouthTexasCity.objects.filter(point__distance_gte=(self.stx_pnt, D(km=7))).filter(point__distance_lte=(self.stx_pnt, D(km=20)))\n\n        # Can't determine the units on SpatiaLite from PROJ.4 string, and\n        # Oracle 11 incorrectly thinks it is not projected.\n        if spatialite or oracle:\n            dist_qs = (qs1,)\n        else:\n            qs2 = SouthTexasCityFt.objects.filter(point__distance_gte=(self.stx_pnt, D(km=7))).filter(point__distance_lte=(self.stx_pnt, D(km=20)))\n            dist_qs = (qs1, qs2)\n\n        for qs in dist_qs:\n            cities = self.get_names(qs)\n            self.assertEqual(cities, ['Bellaire', 'Pearland', 'West University Place'])\n\n        # Doing a distance query using Polygons instead of a Point.\n        z = SouthTexasZipcode.objects.get(name='77005')\n        qs = SouthTexasZipcode.objects.exclude(name='77005').filter(poly__distance_lte=(z.poly, D(m=275)))\n        self.assertEqual(['77025', '77401'], self.get_names(qs))\n        # If we add a little more distance 77002 should be included.\n        qs = SouthTexasZipcode.objects.exclude(name='77005').filter(poly__distance_lte=(z.poly, D(m=300)))\n        self.assertEqual(['77002', '77025', '77401'], self.get_names(qs))\n\n    def test05_geodetic_distance_lookups(self):\n        \"Testing distance lookups on geodetic coordinate systems.\"\n        # Line is from Canberra to Sydney.  Query is for all other cities within\n        # a 100km of that line (which should exclude only Hobart & Adelaide).\n        line = GEOSGeometry('LINESTRING(144.9630 -37.8143,151.2607 -33.8870)', 4326)\n        dist_qs = AustraliaCity.objects.filter(point__distance_lte=(line, D(km=100)))\n\n        if oracle or connection.ops.geography:\n            # Oracle and PostGIS 1.5 can do distance lookups on arbitrary geometries.\n            self.assertEqual(9, dist_qs.count())\n            self.assertEqual(['Batemans Bay', 'Canberra', 'Hillsdale',\n                              'Melbourne', 'Mittagong', 'Shellharbour',\n                              'Sydney', 'Thirroul', 'Wollongong'],\n                             self.get_names(dist_qs))\n        else:\n            # PostGIS 1.4 and below only allows geodetic distance queries (utilizing\n            # ST_Distance_Sphere/ST_Distance_Spheroid) from Points to PointFields\n            # on geometry columns.\n            self.assertRaises(ValueError, dist_qs.count)\n\n            # Ensured that a ValueError was raised, none of the rest of the test is\n            # support on this backend, so bail now.\n            if spatialite: return\n\n        # Too many params (4 in this case) should raise a ValueError.\n        self.assertRaises(ValueError, len,\n                          AustraliaCity.objects.filter(point__distance_lte=('POINT(5 23)', D(km=100), 'spheroid', '4')))\n\n        # Not enough params should raise a ValueError.\n        self.assertRaises(ValueError, len,\n                          AustraliaCity.objects.filter(point__distance_lte=('POINT(5 23)',)))\n\n        # Getting all cities w/in 550 miles of Hobart.\n        hobart = AustraliaCity.objects.get(name='Hobart')\n        qs = AustraliaCity.objects.exclude(name='Hobart').filter(point__distance_lte=(hobart.point, D(mi=550)))\n        cities = self.get_names(qs)\n        self.assertEqual(cities, ['Batemans Bay', 'Canberra', 'Melbourne'])\n\n        # Cities that are either really close or really far from Wollongong --\n        # and using different units of distance.\n        wollongong = AustraliaCity.objects.get(name='Wollongong')\n        d1, d2 = D(yd=19500), D(nm=400) # Yards (~17km) & Nautical miles.\n\n        # Normal geodetic distance lookup (uses `distance_sphere` on PostGIS.\n        gq1 = Q(point__distance_lte=(wollongong.point, d1))\n        gq2 = Q(point__distance_gte=(wollongong.point, d2))\n        qs1 = AustraliaCity.objects.exclude(name='Wollongong').filter(gq1 | gq2)\n\n        # Geodetic distance lookup but telling GeoDjango to use `distance_spheroid`\n        # instead (we should get the same results b/c accuracy variance won't matter\n        # in this test case).\n        if postgis:\n            gq3 = Q(point__distance_lte=(wollongong.point, d1, 'spheroid'))\n            gq4 = Q(point__distance_gte=(wollongong.point, d2, 'spheroid'))\n            qs2 = AustraliaCity.objects.exclude(name='Wollongong').filter(gq3 | gq4)\n            querysets = [qs1, qs2]\n        else:\n            querysets = [qs1]\n\n        for qs in querysets:\n            cities = self.get_names(qs)\n            self.assertEqual(cities, ['Adelaide', 'Hobart', 'Shellharbour', 'Thirroul'])\n\n    def test06_area(self):\n        \"Testing the `area` GeoQuerySet method.\"\n        # Reference queries:\n        # SELECT ST_Area(poly) FROM distapp_southtexaszipcode;\n        area_sq_m = [5437908.90234375, 10183031.4389648, 11254471.0073242, 9881708.91772461]\n        # Tolerance has to be lower for Oracle and differences\n        # with GEOS 3.0.0RC4\n        tol = 2\n        for i, z in enumerate(SouthTexasZipcode.objects.area()):\n            self.assertAlmostEqual(area_sq_m[i], z.area.sq_m, tol)\n\n    def test07_length(self):\n        \"Testing the `length` GeoQuerySet method.\"\n        # Reference query (should use `length_spheroid`).\n        # SELECT ST_length_spheroid(ST_GeomFromText('<wkt>', 4326) 'SPHEROID[\"WGS 84\",6378137,298.257223563, AUTHORITY[\"EPSG\",\"7030\"]]');\n        len_m1 = 473504.769553813\n        len_m2 = 4617.668\n\n        if spatialite:\n            # Does not support geodetic coordinate systems.\n            self.assertRaises(ValueError, Interstate.objects.length)\n        else:\n            qs = Interstate.objects.length()\n            if oracle: tol = 2\n            else: tol = 3\n            self.assertAlmostEqual(len_m1, qs[0].length.m, tol)\n\n        # Now doing length on a projected coordinate system.\n        i10 = SouthTexasInterstate.objects.length().get(name='I-10')\n        self.assertAlmostEqual(len_m2, i10.length.m, 2)\n\n    @no_spatialite\n    def test08_perimeter(self):\n        \"Testing the `perimeter` GeoQuerySet method.\"\n        # Reference query:\n        # SELECT ST_Perimeter(distapp_southtexaszipcode.poly) FROM distapp_southtexaszipcode;\n        perim_m = [18404.3550889361, 15627.2108551001, 20632.5588368978, 17094.5996143697]\n        if oracle: tol = 2\n        else: tol = 7\n        for i, z in enumerate(SouthTexasZipcode.objects.perimeter()):\n            self.assertAlmostEqual(perim_m[i], z.perimeter.m, tol)\n\n        # Running on points; should return 0.\n        for i, c in enumerate(SouthTexasCity.objects.perimeter(model_att='perim')):\n            self.assertEqual(0, c.perim.m)\n\n    def test09_measurement_null_fields(self):\n        \"Testing the measurement GeoQuerySet methods on fields with NULL values.\"\n        # Creating SouthTexasZipcode w/NULL value.\n        SouthTexasZipcode.objects.create(name='78212')\n        # Performing distance/area queries against the NULL PolygonField,\n        # and ensuring the result of the operations is None.\n        htown = SouthTexasCity.objects.get(name='Downtown Houston')\n        z = SouthTexasZipcode.objects.distance(htown.point).area().get(name='78212')\n        self.assertEqual(None, z.distance)\n        self.assertEqual(None, z.area)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/tests/geo3d/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/tests/geo3d/models.py",
    "content": "from django.contrib.gis.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n@python_2_unicode_compatible\nclass City3D(models.Model):\n    name = models.CharField(max_length=30)\n    point = models.PointField(dim=3)\n    objects = models.GeoManager()\n\n    def __str__(self):\n        return self.name\n\n@python_2_unicode_compatible\nclass Interstate2D(models.Model):\n    name = models.CharField(max_length=30)\n    line = models.LineStringField(srid=4269)\n    objects = models.GeoManager()\n\n    def __str__(self):\n        return self.name\n\n@python_2_unicode_compatible\nclass Interstate3D(models.Model):\n    name = models.CharField(max_length=30)\n    line = models.LineStringField(dim=3, srid=4269)\n    objects = models.GeoManager()\n\n    def __str__(self):\n        return self.name\n\n@python_2_unicode_compatible\nclass InterstateProj2D(models.Model):\n    name = models.CharField(max_length=30)\n    line = models.LineStringField(srid=32140)\n    objects = models.GeoManager()\n\n    def __str__(self):\n        return self.name\n\n@python_2_unicode_compatible\nclass InterstateProj3D(models.Model):\n    name = models.CharField(max_length=30)\n    line = models.LineStringField(dim=3, srid=32140)\n    objects = models.GeoManager()\n\n    def __str__(self):\n        return self.name\n\n@python_2_unicode_compatible\nclass Polygon2D(models.Model):\n    name = models.CharField(max_length=30)\n    poly = models.PolygonField(srid=32140)\n    objects = models.GeoManager()\n\n    def __str__(self):\n        return self.name\n\n@python_2_unicode_compatible\nclass Polygon3D(models.Model):\n    name = models.CharField(max_length=30)\n    poly = models.PolygonField(dim=3, srid=32140)\n    objects = models.GeoManager()\n\n    def __str__(self):\n        return self.name\n\nclass Point2D(models.Model):\n    point = models.PointField()\n    objects = models.GeoManager()\n\nclass Point3D(models.Model):\n    point = models.PointField(dim=3)\n    objects = models.GeoManager()\n\nclass MultiPoint3D(models.Model):\n    mpoint = models.MultiPointField(dim=3)\n    objects = models.GeoManager()\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/tests/geo3d/tests.py",
    "content": "from __future__ import absolute_import, unicode_literals\n\nimport os\nimport re\n\nfrom django.contrib.gis.db.models import Union, Extent3D\nfrom django.contrib.gis.geos import GEOSGeometry, LineString, Point, Polygon\nfrom django.contrib.gis.utils import LayerMapping, LayerMapError\nfrom django.test import TestCase\nfrom django.utils._os import upath\n\nfrom .models import (City3D, Interstate2D, Interstate3D, InterstateProj2D,\n    InterstateProj3D, Point2D, Point3D, MultiPoint3D, Polygon2D, Polygon3D)\n\n\ndata_path = os.path.realpath(os.path.join(os.path.dirname(upath(__file__)), '..', 'data'))\ncity_file = os.path.join(data_path, 'cities', 'cities.shp')\nvrt_file = os.path.join(data_path, 'test_vrt', 'test_vrt.vrt')\n\n# The coordinates of each city, with Z values corresponding to their\n# altitude in meters.\ncity_data = (\n    ('Houston', (-95.363151, 29.763374, 18)),\n    ('Dallas', (-96.801611, 32.782057, 147)),\n    ('Oklahoma City', (-97.521157, 34.464642, 380)),\n    ('Wellington', (174.783117, -41.315268, 14)),\n    ('Pueblo', (-104.609252, 38.255001, 1433)),\n    ('Lawrence', (-95.235060, 38.971823, 251)),\n    ('Chicago', (-87.650175, 41.850385, 181)),\n    ('Victoria', (-123.305196, 48.462611, 15)),\n)\n\n# Reference mapping of city name to its altitude (Z value).\ncity_dict = dict((name, coords) for name, coords in city_data)\n\n# 3D freeway data derived from the National Elevation Dataset:\n#  http://seamless.usgs.gov/products/9arc.php\ninterstate_data = (\n    ('I-45',\n     'LINESTRING(-95.3708481 29.7765870 11.339,-95.3694580 29.7787980 4.536,-95.3690305 29.7797359 9.762,-95.3691886 29.7812450 12.448,-95.3696447 29.7850144 10.457,-95.3702511 29.7868518 9.418,-95.3706724 29.7881286 14.858,-95.3711632 29.7896157 15.386,-95.3714525 29.7936267 13.168,-95.3717848 29.7955007 15.104,-95.3717719 29.7969804 16.516,-95.3717305 29.7982117 13.923,-95.3717254 29.8000778 14.385,-95.3719875 29.8013539 15.160,-95.3720575 29.8026785 15.544,-95.3721321 29.8040912 14.975,-95.3722074 29.8050998 15.688,-95.3722779 29.8060430 16.099,-95.3733818 29.8076750 15.197,-95.3741563 29.8103686 17.268,-95.3749458 29.8129927 19.857,-95.3763564 29.8144557 15.435)',\n     ( 11.339,   4.536,   9.762,  12.448,  10.457,   9.418,  14.858,\n       15.386,  13.168,  15.104,  16.516,  13.923,  14.385,  15.16 ,\n       15.544,  14.975,  15.688,  16.099,  15.197,  17.268,  19.857,\n       15.435),\n     ),\n    )\n\n# Bounding box polygon for inner-loop of Houston (in projected coordinate\n# system 32140), with elevation values from the National Elevation Dataset\n# (see above).\nbbox_data = (\n    'POLYGON((941527.97 4225693.20,962596.48 4226349.75,963152.57 4209023.95,942051.75 4208366.38,941527.97 4225693.20))',\n    (21.71, 13.21, 9.12, 16.40, 21.71)\n)\n\n\nclass Geo3DTest(TestCase):\n    \"\"\"\n    Only a subset of the PostGIS routines are 3D-enabled, and this TestCase\n    tries to test the features that can handle 3D and that are also\n    available within GeoDjango.  For more information, see the PostGIS docs\n    on the routines that support 3D:\n\n    http://postgis.refractions.net/documentation/manual-1.4/ch08.html#PostGIS_3D_Functions\n    \"\"\"\n\n    def _load_interstate_data(self):\n        # Interstate (2D / 3D and Geographic/Projected variants)\n        for name, line, exp_z in interstate_data:\n            line_3d = GEOSGeometry(line, srid=4269)\n            line_2d = LineString([l[:2] for l in line_3d.coords], srid=4269)\n\n            # Creating a geographic and projected version of the\n            # interstate in both 2D and 3D.\n            Interstate3D.objects.create(name=name, line=line_3d)\n            InterstateProj3D.objects.create(name=name, line=line_3d)\n            Interstate2D.objects.create(name=name, line=line_2d)\n            InterstateProj2D.objects.create(name=name, line=line_2d)\n\n    def _load_city_data(self):\n        for name, pnt_data in city_data:\n            City3D.objects.create(name=name, point=Point(*pnt_data, srid=4326))\n\n    def _load_polygon_data(self):\n        bbox_wkt, bbox_z = bbox_data\n        bbox_2d = GEOSGeometry(bbox_wkt, srid=32140)\n        bbox_3d = Polygon(tuple((x, y, z) for (x, y), z in zip(bbox_2d[0].coords, bbox_z)), srid=32140)\n        Polygon2D.objects.create(name='2D BBox', poly=bbox_2d)\n        Polygon3D.objects.create(name='3D BBox', poly=bbox_3d)\n\n    def test_3d_hasz(self):\n        \"\"\"\n        Make sure data is 3D and has expected Z values -- shouldn't change\n        because of coordinate system.\n        \"\"\"\n        self._load_interstate_data()\n        for name, line, exp_z in interstate_data:\n            interstate = Interstate3D.objects.get(name=name)\n            interstate_proj = InterstateProj3D.objects.get(name=name)\n            for i in [interstate, interstate_proj]:\n                self.assertTrue(i.line.hasz)\n                self.assertEqual(exp_z, tuple(i.line.z))\n\n        self._load_city_data()\n        for name, pnt_data in city_data:\n            city = City3D.objects.get(name=name)\n            z = pnt_data[2]\n            self.assertTrue(city.point.hasz)\n            self.assertEqual(z, city.point.z)\n\n    def test_3d_polygons(self):\n        \"\"\"\n        Test the creation of polygon 3D models.\n        \"\"\"\n        self._load_polygon_data()\n        p3d = Polygon3D.objects.get(name='3D BBox')\n        self.assertTrue(p3d.poly.hasz)\n        self.assertIsInstance(p3d.poly, Polygon)\n        self.assertEqual(p3d.poly.srid, 32140)\n\n    def test_3d_layermapping(self):\n        \"\"\"\n        Testing LayerMapping on 3D models.\n        \"\"\"\n        point_mapping = {'point' : 'POINT'}\n        mpoint_mapping = {'mpoint' : 'MULTIPOINT'}\n\n        # The VRT is 3D, but should still be able to map sans the Z.\n        lm = LayerMapping(Point2D, vrt_file, point_mapping, transform=False)\n        lm.save()\n        self.assertEqual(3, Point2D.objects.count())\n\n        # The city shapefile is 2D, and won't be able to fill the coordinates\n        # in the 3D model -- thus, a LayerMapError is raised.\n        self.assertRaises(LayerMapError, LayerMapping,\n                          Point3D, city_file, point_mapping, transform=False)\n\n        # 3D model should take 3D data just fine.\n        lm = LayerMapping(Point3D, vrt_file, point_mapping, transform=False)\n        lm.save()\n        self.assertEqual(3, Point3D.objects.count())\n\n        # Making sure LayerMapping.make_multi works right, by converting\n        # a Point25D into a MultiPoint25D.\n        lm = LayerMapping(MultiPoint3D, vrt_file, mpoint_mapping, transform=False)\n        lm.save()\n        self.assertEqual(3, MultiPoint3D.objects.count())\n\n    def test_kml(self):\n        \"\"\"\n        Test GeoQuerySet.kml() with Z values.\n        \"\"\"\n        self._load_city_data()\n        h = City3D.objects.kml(precision=6).get(name='Houston')\n        # KML should be 3D.\n        # `SELECT ST_AsKML(point, 6) FROM geo3d_city3d WHERE name = 'Houston';`\n        ref_kml_regex = re.compile(r'^<Point><coordinates>-95.363\\d+,29.763\\d+,18</coordinates></Point>$')\n        self.assertTrue(ref_kml_regex.match(h.kml))\n\n    def test_geojson(self):\n        \"\"\"\n        Test GeoQuerySet.geojson() with Z values.\n        \"\"\"\n        self._load_city_data()\n        h = City3D.objects.geojson(precision=6).get(name='Houston')\n        # GeoJSON should be 3D\n        # `SELECT ST_AsGeoJSON(point, 6) FROM geo3d_city3d WHERE name='Houston';`\n        ref_json_regex = re.compile(r'^{\"type\":\"Point\",\"coordinates\":\\[-95.363151,29.763374,18(\\.0+)?\\]}$')\n        self.assertTrue(ref_json_regex.match(h.geojson))\n\n    def test_union(self):\n        \"\"\"\n        Testing the Union aggregate of 3D models.\n        \"\"\"\n        # PostGIS query that returned the reference EWKT for this test:\n        #  `SELECT ST_AsText(ST_Union(point)) FROM geo3d_city3d;`\n        self._load_city_data()\n        ref_ewkt = 'SRID=4326;MULTIPOINT(-123.305196 48.462611 15,-104.609252 38.255001 1433,-97.521157 34.464642 380,-96.801611 32.782057 147,-95.363151 29.763374 18,-95.23506 38.971823 251,-87.650175 41.850385 181,174.783117 -41.315268 14)'\n        ref_union = GEOSGeometry(ref_ewkt)\n        union = City3D.objects.aggregate(Union('point'))['point__union']\n        self.assertTrue(union.hasz)\n        self.assertEqual(ref_union, union)\n\n    def test_extent(self):\n        \"\"\"\n        Testing the Extent3D aggregate for 3D models.\n        \"\"\"\n        self._load_city_data()\n        # `SELECT ST_Extent3D(point) FROM geo3d_city3d;`\n        ref_extent3d = (-123.305196, -41.315268, 14,174.783117, 48.462611, 1433)\n        extent1 = City3D.objects.aggregate(Extent3D('point'))['point__extent3d']\n        extent2 = City3D.objects.extent3d()\n\n        def check_extent3d(extent3d, tol=6):\n            for ref_val, ext_val in zip(ref_extent3d, extent3d):\n                self.assertAlmostEqual(ref_val, ext_val, tol)\n\n        for e3d in [extent1, extent2]:\n            check_extent3d(e3d)\n\n    def test_perimeter(self):\n        \"\"\"\n        Testing GeoQuerySet.perimeter() on 3D fields.\n        \"\"\"\n        self._load_polygon_data()\n        # Reference query for values below:\n        #  `SELECT ST_Perimeter3D(poly), ST_Perimeter2D(poly) FROM geo3d_polygon3d;`\n        ref_perim_3d = 76859.2620451\n        ref_perim_2d = 76859.2577803\n        tol = 6\n        self.assertAlmostEqual(ref_perim_2d,\n                               Polygon2D.objects.perimeter().get(name='2D BBox').perimeter.m,\n                               tol)\n        self.assertAlmostEqual(ref_perim_3d,\n                               Polygon3D.objects.perimeter().get(name='3D BBox').perimeter.m,\n                               tol)\n\n    def test_length(self):\n        \"\"\"\n        Testing GeoQuerySet.length() on 3D fields.\n        \"\"\"\n        # ST_Length_Spheroid Z-aware, and thus does not need to use\n        # a separate function internally.\n        # `SELECT ST_Length_Spheroid(line, 'SPHEROID[\"GRS 1980\",6378137,298.257222101]')\n        #    FROM geo3d_interstate[2d|3d];`\n        self._load_interstate_data()\n        tol = 3\n        ref_length_2d = 4368.1721949481\n        ref_length_3d = 4368.62547052088\n        self.assertAlmostEqual(ref_length_2d,\n                               Interstate2D.objects.length().get(name='I-45').length.m,\n                               tol)\n        self.assertAlmostEqual(ref_length_3d,\n                               Interstate3D.objects.length().get(name='I-45').length.m,\n                               tol)\n\n        # Making sure `ST_Length3D` is used on for a projected\n        # and 3D model rather than `ST_Length`.\n        # `SELECT ST_Length(line) FROM geo3d_interstateproj2d;`\n        ref_length_2d = 4367.71564892392\n        # `SELECT ST_Length3D(line) FROM geo3d_interstateproj3d;`\n        ref_length_3d = 4368.16897234101\n        self.assertAlmostEqual(ref_length_2d,\n                               InterstateProj2D.objects.length().get(name='I-45').length.m,\n                               tol)\n        self.assertAlmostEqual(ref_length_3d,\n                               InterstateProj3D.objects.length().get(name='I-45').length.m,\n                               tol)\n\n    def test_scale(self):\n        \"\"\"\n        Testing GeoQuerySet.scale() on Z values.\n        \"\"\"\n        self._load_city_data()\n        # Mapping of City name to reference Z values.\n        zscales = (-3, 4, 23)\n        for zscale in zscales:\n            for city in City3D.objects.scale(1.0, 1.0, zscale):\n                self.assertEqual(city_dict[city.name][2] * zscale, city.scale.z)\n\n    def test_translate(self):\n        \"\"\"\n        Testing GeoQuerySet.translate() on Z values.\n        \"\"\"\n        self._load_city_data()\n        ztranslations = (5.23, 23, -17)\n        for ztrans in ztranslations:\n            for city in City3D.objects.translate(0, 0, ztrans):\n                self.assertEqual(city_dict[city.name][2] + ztrans, city.translate.z)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/tests/geo3d/views.py",
    "content": "# Create your views here.\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/tests/geoadmin/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/tests/geoadmin/models.py",
    "content": "from django.contrib.gis.db import models\nfrom django.contrib.gis import admin\nfrom django.utils.encoding import python_2_unicode_compatible\n\n@python_2_unicode_compatible\nclass City(models.Model):\n    name = models.CharField(max_length=30)\n    point = models.PointField()\n    objects = models.GeoManager()\n    def __str__(self): return self.name\n\nadmin.site.register(City, admin.OSMGeoAdmin)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/tests/geoadmin/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom django.test import TestCase\nfrom django.contrib.gis import admin\nfrom django.contrib.gis.geos import GEOSGeometry, Point\n\nfrom .models import City\n\n\nclass GeoAdminTest(TestCase):\n    urls = 'django.contrib.gis.tests.geoadmin.urls'\n\n    def test_ensure_geographic_media(self):\n        geoadmin = admin.site._registry[City]\n        admin_js = geoadmin.media.render_js()\n        self.assertTrue(any([geoadmin.openlayers_url in js for js in admin_js]))\n\n    def test_olmap_OSM_rendering(self):\n        geoadmin = admin.site._registry[City]\n        result = geoadmin.get_map_widget(City._meta.get_field('point'))(\n            ).render('point', Point(-79.460734, 40.18476))\n        self.assertIn(\n            \"\"\"geodjango_point.layers.base = new OpenLayers.Layer.OSM(\"OpenStreetMap (Mapnik)\");\"\"\",\n            result)\n\n    def test_olmap_WMS_rendering(self):\n        admin.site.unregister(City)\n        admin.site.register(City, admin.GeoModelAdmin)\n\n        geoadmin = admin.site._registry[City]\n        result = geoadmin.get_map_widget(City._meta.get_field('point'))(\n            ).render('point', Point(-79.460734, 40.18476))\n        self.assertIn(\n            \"\"\"geodjango_point.layers.base = new OpenLayers.Layer.WMS(\"OpenLayers WMS\", \"http://vmap0.tiles.osgeo.org/wms/vmap0\", {layers: \\'basic\\', format: 'image/jpeg'});\"\"\",\n            result)\n\n    def test_olwidget_has_changed(self):\n        \"\"\" Check that changes are accurately noticed by OpenLayersWidget. \"\"\"\n        geoadmin = admin.site._registry[City]\n        form = geoadmin.get_changelist_form(None)()\n        has_changed = form.fields['point'].widget._has_changed\n\n        initial = Point(13.4197458572965953, 52.5194108501149799, srid=4326)\n        data_same = \"SRID=3857;POINT(1493879.2754093995 6894592.019687599)\"\n        data_almost_same = \"SRID=3857;POINT(1493879.2754093990 6894592.019687590)\"\n        data_changed = \"SRID=3857;POINT(1493884.0527237 6894593.8111804)\"\n\n        self.assertTrue(has_changed(None, data_changed))\n        self.assertTrue(has_changed(initial, \"\"))\n        self.assertFalse(has_changed(None, \"\"))\n        self.assertFalse(has_changed(initial, data_same))\n        self.assertFalse(has_changed(initial, data_almost_same))\n        self.assertTrue(has_changed(initial, data_changed))\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/tests/geoadmin/urls.py",
    "content": "from django.conf.urls import patterns, include\nfrom django.contrib import admin\n\nurlpatterns = patterns('',\n    (r'^admin/', include(admin.site.urls)),\n)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/tests/geoapp/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/tests/geoapp/feeds.py",
    "content": "from __future__ import absolute_import\n\nfrom django.contrib.gis import feeds\n\nfrom .models import City\n\n\nclass TestGeoRSS1(feeds.Feed):\n    link = '/city/'\n    title = 'Test GeoDjango Cities'\n\n    def items(self):\n        return City.objects.all()\n\n    def item_link(self, item):\n        return '/city/%s/' % item.pk\n\n    def item_geometry(self, item):\n        return item.point\n\nclass TestGeoRSS2(TestGeoRSS1):\n    def geometry(self, obj):\n        # This should attach a <georss:box> element for the extent of\n        # of the cities in the database.  This tuple came from\n        # calling `City.objects.extent()` -- we can't do that call here\n        # because `extent` is not implemented for MySQL/Oracle.\n        return (-123.30, -41.32, 174.78, 48.46)\n\n    def item_geometry(self, item):\n        # Returning a simple tuple for the geometry.\n        return item.point.x, item.point.y\n\nclass TestGeoAtom1(TestGeoRSS1):\n    feed_type = feeds.GeoAtom1Feed\n\nclass TestGeoAtom2(TestGeoRSS2):\n    feed_type = feeds.GeoAtom1Feed\n\n    def geometry(self, obj):\n        # This time we'll use a 2-tuple of coordinates for the box.\n        return ((-123.30, -41.32), (174.78, 48.46))\n\nclass TestW3CGeo1(TestGeoRSS1):\n    feed_type = feeds.W3CGeoFeed\n\n# The following feeds are invalid, and will raise exceptions.\nclass TestW3CGeo2(TestGeoRSS2):\n    feed_type = feeds.W3CGeoFeed\n\nclass TestW3CGeo3(TestGeoRSS1):\n    feed_type = feeds.W3CGeoFeed\n\n    def item_geometry(self, item):\n        from django.contrib.gis.geos import Polygon\n        return Polygon(((0, 0), (0, 1), (1, 1), (1, 0), (0, 0)))\n\n# The feed dictionary to use for URLs.\nfeed_dict = {\n    'rss1' : TestGeoRSS1,\n    'rss2' : TestGeoRSS2,\n    'atom1' : TestGeoAtom1,\n    'atom2' : TestGeoAtom2,\n    'w3cgeo1' : TestW3CGeo1,\n    'w3cgeo2' : TestW3CGeo2,\n    'w3cgeo3' : TestW3CGeo3,\n}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/tests/geoapp/models.py",
    "content": "from django.contrib.gis.db import models\nfrom django.contrib.gis.tests.utils import mysql, spatialite\nfrom django.utils.encoding import python_2_unicode_compatible\n\n# MySQL spatial indices can't handle NULL geometries.\nnull_flag = not mysql\n\n@python_2_unicode_compatible\nclass Country(models.Model):\n    name = models.CharField(max_length=30)\n    mpoly = models.MultiPolygonField() # SRID, by default, is 4326\n    objects = models.GeoManager()\n    def __str__(self): return self.name\n\n@python_2_unicode_compatible\nclass City(models.Model):\n    name = models.CharField(max_length=30)\n    point = models.PointField()\n    objects = models.GeoManager()\n    def __str__(self): return self.name\n\n# This is an inherited model from City\nclass PennsylvaniaCity(City):\n    county = models.CharField(max_length=30)\n    founded = models.DateTimeField(null=True)\n    objects = models.GeoManager() # TODO: This should be implicitly inherited.\n\n@python_2_unicode_compatible\nclass State(models.Model):\n    name = models.CharField(max_length=30)\n    poly = models.PolygonField(null=null_flag) # Allowing NULL geometries here.\n    objects = models.GeoManager()\n    def __str__(self): return self.name\n\n@python_2_unicode_compatible\nclass Track(models.Model):\n    name = models.CharField(max_length=30)\n    line = models.LineStringField()\n    objects = models.GeoManager()\n    def __str__(self): return self.name\n\nclass Truth(models.Model):\n    val = models.BooleanField()\n    objects = models.GeoManager()\n\nif not spatialite:\n    @python_2_unicode_compatible\n    class Feature(models.Model):\n        name = models.CharField(max_length=20)\n        geom = models.GeometryField()\n        objects = models.GeoManager()\n        def __str__(self): return self.name\n\n    class MinusOneSRID(models.Model):\n        geom = models.PointField(srid=-1) # Minus one SRID.\n        objects = models.GeoManager()\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/tests/geoapp/sitemaps.py",
    "content": "from __future__ import absolute_import\n\nfrom django.contrib.gis.sitemaps import GeoRSSSitemap, KMLSitemap, KMZSitemap\n\nfrom .feeds import feed_dict\nfrom .models import City, Country\n\n\nsitemaps = {'kml' : KMLSitemap([City, Country]),\n            'kmz' : KMZSitemap([City, Country]),\n            'georss' : GeoRSSSitemap(feed_dict),\n            }\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/tests/geoapp/test_feeds.py",
    "content": "from __future__ import absolute_import\n\nfrom xml.dom import minidom\n\nfrom django.conf import settings\nfrom django.contrib.sites.models import Site\nfrom django.test import TestCase\n\nfrom .models import City\n\n\nclass GeoFeedTest(TestCase):\n\n    urls = 'django.contrib.gis.tests.geoapp.urls'\n\n    def setUp(self):\n        Site(id=settings.SITE_ID, domain=\"example.com\", name=\"example.com\").save()\n        self.old_Site_meta_installed = Site._meta.installed\n        Site._meta.installed = True\n\n    def tearDown(self):\n        Site._meta.installed = self.old_Site_meta_installed\n\n    def assertChildNodes(self, elem, expected):\n        \"Taken from regressiontests/syndication/tests.py.\"\n        actual = set([n.nodeName for n in elem.childNodes])\n        expected = set(expected)\n        self.assertEqual(actual, expected)\n\n    def test_geofeed_rss(self):\n        \"Tests geographic feeds using GeoRSS over RSSv2.\"\n        # Uses `GEOSGeometry` in `item_geometry`\n        doc1 = minidom.parseString(self.client.get('/feeds/rss1/').content)\n        # Uses a 2-tuple in `item_geometry`\n        doc2 = minidom.parseString(self.client.get('/feeds/rss2/').content)\n        feed1, feed2 = doc1.firstChild, doc2.firstChild\n\n        # Making sure the box got added to the second GeoRSS feed.\n        self.assertChildNodes(feed2.getElementsByTagName('channel')[0],\n                              ['title', 'link', 'description', 'language',\n                               'lastBuildDate', 'item', 'georss:box', 'atom:link']\n                              )\n\n        # Incrementing through the feeds.\n        for feed in [feed1, feed2]:\n            # Ensuring the georss namespace was added to the <rss> element.\n            self.assertEqual(feed.getAttribute('xmlns:georss'),  'http://www.georss.org/georss')\n            chan = feed.getElementsByTagName('channel')[0]\n            items = chan.getElementsByTagName('item')\n            self.assertEqual(len(items), City.objects.count())\n\n            # Ensuring the georss element was added to each item in the feed.\n            for item in items:\n                self.assertChildNodes(item, ['title', 'link', 'description', 'guid', 'georss:point'])\n\n    def test_geofeed_atom(self):\n        \"Testing geographic feeds using GeoRSS over Atom.\"\n        doc1 = minidom.parseString(self.client.get('/feeds/atom1/').content)\n        doc2 = minidom.parseString(self.client.get('/feeds/atom2/').content)\n        feed1, feed2 = doc1.firstChild, doc2.firstChild\n\n        # Making sure the box got added to the second GeoRSS feed.\n        self.assertChildNodes(feed2, ['title', 'link', 'id', 'updated', 'entry', 'georss:box'])\n\n        for feed in [feed1, feed2]:\n            # Ensuring the georsss namespace was added to the <feed> element.\n            self.assertEqual(feed.getAttribute('xmlns:georss'),  'http://www.georss.org/georss')\n            entries = feed.getElementsByTagName('entry')\n            self.assertEqual(len(entries), City.objects.count())\n\n            # Ensuring the georss element was added to each entry in the feed.\n            for entry in entries:\n                self.assertChildNodes(entry, ['title', 'link', 'id', 'summary', 'georss:point'])\n\n    def test_geofeed_w3c(self):\n        \"Testing geographic feeds using W3C Geo.\"\n        doc = minidom.parseString(self.client.get('/feeds/w3cgeo1/').content)\n        feed = doc.firstChild\n        # Ensuring the geo namespace was added to the <feed> element.\n        self.assertEqual(feed.getAttribute('xmlns:geo'), 'http://www.w3.org/2003/01/geo/wgs84_pos#')\n        chan = feed.getElementsByTagName('channel')[0]\n        items = chan.getElementsByTagName('item')\n        self.assertEqual(len(items), City.objects.count())\n\n        # Ensuring the geo:lat and geo:lon element was added to each item in the feed.\n        for item in items:\n            self.assertChildNodes(item, ['title', 'link', 'description', 'guid', 'geo:lat', 'geo:lon'])\n\n        # Boxes and Polygons aren't allowed in W3C Geo feeds.\n        self.assertRaises(ValueError, self.client.get, '/feeds/w3cgeo2/') # Box in <channel>\n        self.assertRaises(ValueError, self.client.get, '/feeds/w3cgeo3/') # Polygons in <entry>\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/tests/geoapp/test_regress.py",
    "content": "# -*- encoding: utf-8 -*-\nfrom __future__ import absolute_import, unicode_literals\n\nfrom datetime import datetime\n\nfrom django.contrib.gis.tests.utils import no_mysql, no_spatialite\nfrom django.contrib.gis.shortcuts import render_to_kmz\nfrom django.db.models import Count, Min\nfrom django.test import TestCase\n\nfrom .models import City, PennsylvaniaCity, State, Truth\n\n\nclass GeoRegressionTests(TestCase):\n\n    def test_update(self):\n        \"Testing GeoQuerySet.update(). See #10411.\"\n        pnt = City.objects.get(name='Pueblo').point\n        bak = pnt.clone()\n        pnt.y += 0.005\n        pnt.x += 0.005\n\n        City.objects.filter(name='Pueblo').update(point=pnt)\n        self.assertEqual(pnt, City.objects.get(name='Pueblo').point)\n        City.objects.filter(name='Pueblo').update(point=bak)\n        self.assertEqual(bak, City.objects.get(name='Pueblo').point)\n\n    def test_kmz(self):\n        \"Testing `render_to_kmz` with non-ASCII data. See #11624.\"\n        name = \"Åland Islands\"\n        places = [{'name' : name,\n                  'description' : name,\n                  'kml' : '<Point><coordinates>5.0,23.0</coordinates></Point>'\n                  }]\n        kmz = render_to_kmz('gis/kml/placemarks.kml', {'places' : places})\n\n    @no_spatialite\n    @no_mysql\n    def test_extent(self):\n        \"Testing `extent` on a table with a single point. See #11827.\"\n        pnt = City.objects.get(name='Pueblo').point\n        ref_ext = (pnt.x, pnt.y, pnt.x, pnt.y)\n        extent = City.objects.filter(name='Pueblo').extent()\n        for ref_val, val in zip(ref_ext, extent):\n            self.assertAlmostEqual(ref_val, val, 4)\n\n    def test_unicode_date(self):\n        \"Testing dates are converted properly, even on SpatiaLite. See #16408.\"\n        founded = datetime(1857, 5, 23)\n        mansfield = PennsylvaniaCity.objects.create(name='Mansfield', county='Tioga', point='POINT(-77.071445 41.823881)',\n                                                    founded=founded)\n        self.assertEqual(founded, PennsylvaniaCity.objects.dates('founded', 'day')[0])\n        self.assertEqual(founded, PennsylvaniaCity.objects.aggregate(Min('founded'))['founded__min'])\n\n    def test_empty_count(self):\n         \"Testing that PostGISAdapter.__eq__ does check empty strings. See #13670.\"\n         # contrived example, but need a geo lookup paired with an id__in lookup\n         pueblo = City.objects.get(name='Pueblo')\n         state = State.objects.filter(poly__contains=pueblo.point)\n         cities_within_state = City.objects.filter(id__in=state)\n\n         # .count() should not throw TypeError in __eq__\n         self.assertEqual(cities_within_state.count(), 1)\n\n    def test_defer_or_only_with_annotate(self):\n        \"Regression for #16409. Make sure defer() and only() work with annotate()\"\n        self.assertIsInstance(list(City.objects.annotate(Count('point')).defer('name')), list)\n        self.assertIsInstance(list(City.objects.annotate(Count('point')).only('name')), list)\n\n    def test_boolean_conversion(self):\n        \"Testing Boolean value conversion with the spatial backend, see #15169.\"\n        t1 = Truth.objects.create(val=True)\n        t2 = Truth.objects.create(val=False)\n\n        val1 = Truth.objects.get(pk=1).val\n        val2 = Truth.objects.get(pk=2).val\n        # verify types -- should't be 0/1\n        self.assertIsInstance(val1, bool)\n        self.assertIsInstance(val2, bool)\n        # verify values\n        self.assertEqual(val1, True)\n        self.assertEqual(val2, False)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/tests/geoapp/test_sitemaps.py",
    "content": "from __future__ import absolute_import\n\nfrom io import BytesIO\nfrom xml.dom import minidom\nimport zipfile\n\nfrom django.conf import settings\nfrom django.contrib.sites.models import Site\nfrom django.test import TestCase\n\nfrom .models import City, Country\n\n\nclass GeoSitemapTest(TestCase):\n\n    urls = 'django.contrib.gis.tests.geoapp.urls'\n\n    def setUp(self):\n        Site(id=settings.SITE_ID, domain=\"example.com\", name=\"example.com\").save()\n        self.old_Site_meta_installed = Site._meta.installed\n        Site._meta.installed = True\n\n    def tearDown(self):\n        Site._meta.installed = self.old_Site_meta_installed\n\n    def assertChildNodes(self, elem, expected):\n        \"Taken from regressiontests/syndication/tests.py.\"\n        actual = set([n.nodeName for n in elem.childNodes])\n        expected = set(expected)\n        self.assertEqual(actual, expected)\n\n    def test_geositemap_index(self):\n        \"Tests geographic sitemap index.\"\n        # Getting the geo index.\n        doc = minidom.parseString(self.client.get('/sitemap.xml').content)\n        index = doc.firstChild\n        self.assertEqual(index.getAttribute('xmlns'), 'http://www.sitemaps.org/schemas/sitemap/0.9')\n        self.assertEqual(3, len(index.getElementsByTagName('sitemap')))\n\n    def test_geositemap_kml(self):\n        \"Tests KML/KMZ geographic sitemaps.\"\n        for kml_type in ('kml', 'kmz'):\n            doc = minidom.parseString(self.client.get('/sitemaps/%s.xml' % kml_type).content)\n\n            # Ensuring the right sitemaps namespaces are present.\n            urlset = doc.firstChild\n            self.assertEqual(urlset.getAttribute('xmlns'), 'http://www.sitemaps.org/schemas/sitemap/0.9')\n            self.assertEqual(urlset.getAttribute('xmlns:geo'), 'http://www.google.com/geo/schemas/sitemap/1.0')\n\n            urls = urlset.getElementsByTagName('url')\n            self.assertEqual(2, len(urls)) # Should only be 2 sitemaps.\n            for url in urls:\n                self.assertChildNodes(url, ['loc', 'geo:geo'])\n                # Making sure the 'geo:format' element was properly set.\n                geo_elem = url.getElementsByTagName('geo:geo')[0]\n                geo_format = geo_elem.getElementsByTagName('geo:format')[0]\n                self.assertEqual(kml_type, geo_format.childNodes[0].data)\n\n                # Getting the relative URL since we don't have a real site.\n                kml_url = url.getElementsByTagName('loc')[0].childNodes[0].data.split('http://example.com')[1]\n\n                if kml_type == 'kml':\n                    kml_doc = minidom.parseString(self.client.get(kml_url).content)\n                elif kml_type == 'kmz':\n                    # Have to decompress KMZ before parsing.\n                    buf = BytesIO(self.client.get(kml_url).content)\n                    zf = zipfile.ZipFile(buf)\n                    self.assertEqual(1, len(zf.filelist))\n                    self.assertEqual('doc.kml', zf.filelist[0].filename)\n                    kml_doc = minidom.parseString(zf.read('doc.kml'))\n\n                # Ensuring the correct number of placemarks are in the KML doc.\n                if 'city' in kml_url:\n                    model = City\n                elif 'country' in kml_url:\n                    model = Country\n                self.assertEqual(model.objects.count(), len(kml_doc.getElementsByTagName('Placemark')))\n\n    def test_geositemap_georss(self):\n        \"Tests GeoRSS geographic sitemaps.\"\n        from .feeds import feed_dict\n\n        doc = minidom.parseString(self.client.get('/sitemaps/georss.xml').content)\n\n        # Ensuring the right sitemaps namespaces are present.\n        urlset = doc.firstChild\n        self.assertEqual(urlset.getAttribute('xmlns'), 'http://www.sitemaps.org/schemas/sitemap/0.9')\n        self.assertEqual(urlset.getAttribute('xmlns:geo'), 'http://www.google.com/geo/schemas/sitemap/1.0')\n\n        # Making sure the correct number of feed URLs were included.\n        urls = urlset.getElementsByTagName('url')\n        self.assertEqual(len(feed_dict), len(urls))\n\n        for url in urls:\n            self.assertChildNodes(url, ['loc', 'geo:geo'])\n            # Making sure the 'geo:format' element was properly set to 'georss'.\n            geo_elem = url.getElementsByTagName('geo:geo')[0]\n            geo_format = geo_elem.getElementsByTagName('geo:format')[0]\n            self.assertEqual('georss', geo_format.childNodes[0].data)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/tests/geoapp/tests.py",
    "content": "from __future__ import absolute_import\n\nimport re\n\nfrom django.db import connection\nfrom django.db.utils import DatabaseError\nfrom django.contrib.gis import gdal\nfrom django.contrib.gis.geos import (fromstr, GEOSGeometry,\n    Point, LineString, LinearRing, Polygon, GeometryCollection)\nfrom django.contrib.gis.tests.utils import (\n    no_mysql, no_oracle, no_spatialite,\n    mysql, oracle, postgis, spatialite)\nfrom django.test import TestCase\nfrom django.utils import six, unittest\n\nfrom .models import Country, City, PennsylvaniaCity, State, Track\n\nfrom .test_feeds import GeoFeedTest\nfrom .test_regress import GeoRegressionTests\nfrom .test_sitemaps import GeoSitemapTest\n\n\nif not spatialite:\n    from .models import Feature, MinusOneSRID\n\nclass GeoModelTest(TestCase):\n\n    def test_fixtures(self):\n        \"Testing geographic model initialization from fixtures.\"\n        # Ensuring that data was loaded from initial data fixtures.\n        self.assertEqual(2, Country.objects.count())\n        self.assertEqual(8, City.objects.count())\n        self.assertEqual(2, State.objects.count())\n\n    def test_proxy(self):\n        \"Testing Lazy-Geometry support (using the GeometryProxy).\"\n        ## Testing on a Point\n        pnt = Point(0, 0)\n        nullcity = City(name='NullCity', point=pnt)\n        nullcity.save()\n\n        # Making sure TypeError is thrown when trying to set with an\n        #  incompatible type.\n        for bad in [5, 2.0, LineString((0, 0), (1, 1))]:\n            try:\n                nullcity.point = bad\n            except TypeError:\n                pass\n            else:\n                self.fail('Should throw a TypeError')\n\n        # Now setting with a compatible GEOS Geometry, saving, and ensuring\n        #  the save took, notice no SRID is explicitly set.\n        new = Point(5, 23)\n        nullcity.point = new\n\n        # Ensuring that the SRID is automatically set to that of the\n        #  field after assignment, but before saving.\n        self.assertEqual(4326, nullcity.point.srid)\n        nullcity.save()\n\n        # Ensuring the point was saved correctly after saving\n        self.assertEqual(new, City.objects.get(name='NullCity').point)\n\n        # Setting the X and Y of the Point\n        nullcity.point.x = 23\n        nullcity.point.y = 5\n        # Checking assignments pre & post-save.\n        self.assertNotEqual(Point(23, 5), City.objects.get(name='NullCity').point)\n        nullcity.save()\n        self.assertEqual(Point(23, 5), City.objects.get(name='NullCity').point)\n        nullcity.delete()\n\n        ## Testing on a Polygon\n        shell = LinearRing((0, 0), (0, 100), (100, 100), (100, 0), (0, 0))\n        inner = LinearRing((40, 40), (40, 60), (60, 60), (60, 40), (40, 40))\n\n        # Creating a State object using a built Polygon\n        ply = Polygon(shell, inner)\n        nullstate = State(name='NullState', poly=ply)\n        self.assertEqual(4326, nullstate.poly.srid) # SRID auto-set from None\n        nullstate.save()\n\n        ns = State.objects.get(name='NullState')\n        self.assertEqual(ply, ns.poly)\n\n        # Testing the `ogr` and `srs` lazy-geometry properties.\n        if gdal.HAS_GDAL:\n            self.assertEqual(True, isinstance(ns.poly.ogr, gdal.OGRGeometry))\n            self.assertEqual(ns.poly.wkb, ns.poly.ogr.wkb)\n            self.assertEqual(True, isinstance(ns.poly.srs, gdal.SpatialReference))\n            self.assertEqual('WGS 84', ns.poly.srs.name)\n\n        # Changing the interior ring on the poly attribute.\n        new_inner = LinearRing((30, 30), (30, 70), (70, 70), (70, 30), (30, 30))\n        ns.poly[1] = new_inner\n        ply[1] = new_inner\n        self.assertEqual(4326, ns.poly.srid)\n        ns.save()\n        self.assertEqual(ply, State.objects.get(name='NullState').poly)\n        ns.delete()\n\n    @no_mysql\n    def test_lookup_insert_transform(self):\n        \"Testing automatic transform for lookups and inserts.\"\n        # San Antonio in 'WGS84' (SRID 4326)\n        sa_4326 = 'POINT (-98.493183 29.424170)'\n        wgs_pnt = fromstr(sa_4326, srid=4326) # Our reference point in WGS84\n\n        # Oracle doesn't have SRID 3084, using 41157.\n        if oracle:\n            # San Antonio in 'Texas 4205, Southern Zone (1983, meters)' (SRID 41157)\n            # Used the following Oracle SQL to get this value:\n            #  SELECT SDO_UTIL.TO_WKTGEOMETRY(SDO_CS.TRANSFORM(SDO_GEOMETRY('POINT (-98.493183 29.424170)', 4326), 41157)) FROM DUAL;\n            nad_wkt  = 'POINT (300662.034646583 5416427.45974934)'\n            nad_srid = 41157\n        else:\n            # San Antonio in 'NAD83(HARN) / Texas Centric Lambert Conformal' (SRID 3084)\n            nad_wkt = 'POINT (1645978.362408288754523 6276356.025927528738976)' # Used ogr.py in gdal 1.4.1 for this transform\n            nad_srid = 3084\n\n        # Constructing & querying with a point from a different SRID. Oracle\n        # `SDO_OVERLAPBDYINTERSECT` operates differently from\n        # `ST_Intersects`, so contains is used instead.\n        nad_pnt = fromstr(nad_wkt, srid=nad_srid)\n        if oracle:\n            tx = Country.objects.get(mpoly__contains=nad_pnt)\n        else:\n            tx = Country.objects.get(mpoly__intersects=nad_pnt)\n        self.assertEqual('Texas', tx.name)\n\n        # Creating San Antonio.  Remember the Alamo.\n        sa = City.objects.create(name='San Antonio', point=nad_pnt)\n\n        # Now verifying that San Antonio was transformed correctly\n        sa = City.objects.get(name='San Antonio')\n        self.assertAlmostEqual(wgs_pnt.x, sa.point.x, 6)\n        self.assertAlmostEqual(wgs_pnt.y, sa.point.y, 6)\n\n        # If the GeometryField SRID is -1, then we shouldn't perform any\n        # transformation if the SRID of the input geometry is different.\n        # SpatiaLite does not support missing SRID values.\n        if not spatialite:\n            m1 = MinusOneSRID(geom=Point(17, 23, srid=4326))\n            m1.save()\n            self.assertEqual(-1, m1.geom.srid)\n\n    def test_createnull(self):\n        \"Testing creating a model instance and the geometry being None\"\n        c = City()\n        self.assertEqual(c.point, None)\n\n    @no_spatialite # SpatiaLite does not support abstract geometry columns\n    def test_geometryfield(self):\n        \"Testing the general GeometryField.\"\n        Feature(name='Point', geom=Point(1, 1)).save()\n        Feature(name='LineString', geom=LineString((0, 0), (1, 1), (5, 5))).save()\n        Feature(name='Polygon', geom=Polygon(LinearRing((0, 0), (0, 5), (5, 5), (5, 0), (0, 0)))).save()\n        Feature(name='GeometryCollection',\n                geom=GeometryCollection(Point(2, 2), LineString((0, 0), (2, 2)),\n                                        Polygon(LinearRing((0, 0), (0, 5), (5, 5), (5, 0), (0, 0))))).save()\n\n        f_1 = Feature.objects.get(name='Point')\n        self.assertEqual(True, isinstance(f_1.geom, Point))\n        self.assertEqual((1.0, 1.0), f_1.geom.tuple)\n        f_2 = Feature.objects.get(name='LineString')\n        self.assertEqual(True, isinstance(f_2.geom, LineString))\n        self.assertEqual(((0.0, 0.0), (1.0, 1.0), (5.0, 5.0)), f_2.geom.tuple)\n\n        f_3 = Feature.objects.get(name='Polygon')\n        self.assertEqual(True, isinstance(f_3.geom, Polygon))\n        f_4 = Feature.objects.get(name='GeometryCollection')\n        self.assertEqual(True, isinstance(f_4.geom, GeometryCollection))\n        self.assertEqual(f_3.geom, f_4.geom[2])\n\n    @no_mysql\n    def test_inherited_geofields(self):\n        \"Test GeoQuerySet methods on inherited Geometry fields.\"\n        # Creating a Pennsylvanian city.\n        mansfield = PennsylvaniaCity.objects.create(name='Mansfield', county='Tioga', point='POINT(-77.071445 41.823881)')\n\n        # All transformation SQL will need to be performed on the\n        # _parent_ table.\n        qs = PennsylvaniaCity.objects.transform(32128)\n\n        self.assertEqual(1, qs.count())\n        for pc in qs: self.assertEqual(32128, pc.point.srid)\n\n    def test_raw_sql_query(self):\n        \"Testing raw SQL query.\"\n        cities1 = City.objects.all()\n        # Only PostGIS would support a 'select *' query because of its recognized\n        # HEXEWKB format for geometry fields\n        as_text = 'ST_AsText' if postgis else 'asText'\n        cities2 = City.objects.raw('select id, name, %s(point) from geoapp_city' % as_text)\n        self.assertEqual(len(cities1), len(list(cities2)))\n        self.assertTrue(isinstance(cities2[0].point, Point))\n\n\nclass GeoLookupTest(TestCase):\n\n    @no_mysql\n    def test_disjoint_lookup(self):\n        \"Testing the `disjoint` lookup type.\"\n        ptown = City.objects.get(name='Pueblo')\n        qs1 = City.objects.filter(point__disjoint=ptown.point)\n        self.assertEqual(7, qs1.count())\n\n        qs2 = State.objects.filter(poly__disjoint=ptown.point)\n        self.assertEqual(1, qs2.count())\n        self.assertEqual('Kansas', qs2[0].name)\n\n    def test_contains_contained_lookups(self):\n        \"Testing the 'contained', 'contains', and 'bbcontains' lookup types.\"\n        # Getting Texas, yes we were a country -- once ;)\n        texas = Country.objects.get(name='Texas')\n\n        # Seeing what cities are in Texas, should get Houston and Dallas,\n        #  and Oklahoma City because 'contained' only checks on the\n        #  _bounding box_ of the Geometries.\n        if not oracle:\n            qs = City.objects.filter(point__contained=texas.mpoly)\n            self.assertEqual(3, qs.count())\n            cities = ['Houston', 'Dallas', 'Oklahoma City']\n            for c in qs: self.assertEqual(True, c.name in cities)\n\n        # Pulling out some cities.\n        houston = City.objects.get(name='Houston')\n        wellington = City.objects.get(name='Wellington')\n        pueblo = City.objects.get(name='Pueblo')\n        okcity = City.objects.get(name='Oklahoma City')\n        lawrence = City.objects.get(name='Lawrence')\n\n        # Now testing contains on the countries using the points for\n        #  Houston and Wellington.\n        tx = Country.objects.get(mpoly__contains=houston.point) # Query w/GEOSGeometry\n        nz = Country.objects.get(mpoly__contains=wellington.point.hex) # Query w/EWKBHEX\n        self.assertEqual('Texas', tx.name)\n        self.assertEqual('New Zealand', nz.name)\n\n        # Spatialite 2.3 thinks that Lawrence is in Puerto Rico (a NULL geometry).\n        if not spatialite:\n            ks = State.objects.get(poly__contains=lawrence.point)\n            self.assertEqual('Kansas', ks.name)\n\n        # Pueblo and Oklahoma City (even though OK City is within the bounding box of Texas)\n        # are not contained in Texas or New Zealand.\n        self.assertEqual(0, len(Country.objects.filter(mpoly__contains=pueblo.point))) # Query w/GEOSGeometry object\n        self.assertEqual((mysql and 1) or 0,\n                         len(Country.objects.filter(mpoly__contains=okcity.point.wkt))) # Qeury w/WKT\n\n        # OK City is contained w/in bounding box of Texas.\n        if not oracle:\n            qs = Country.objects.filter(mpoly__bbcontains=okcity.point)\n            self.assertEqual(1, len(qs))\n            self.assertEqual('Texas', qs[0].name)\n\n    # Only PostGIS has `left` and `right` lookup types.\n    @no_mysql\n    @no_oracle\n    @no_spatialite\n    def test_left_right_lookups(self):\n        \"Testing the 'left' and 'right' lookup types.\"\n        # Left: A << B => true if xmax(A) < xmin(B)\n        # Right: A >> B => true if xmin(A) > xmax(B)\n        # See: BOX2D_left() and BOX2D_right() in lwgeom_box2dfloat4.c in PostGIS source.\n\n        # Getting the borders for Colorado & Kansas\n        co_border = State.objects.get(name='Colorado').poly\n        ks_border = State.objects.get(name='Kansas').poly\n\n        # Note: Wellington has an 'X' value of 174, so it will not be considered\n        # to the left of CO.\n\n        # These cities should be strictly to the right of the CO border.\n        cities = ['Houston', 'Dallas', 'Oklahoma City',\n                  'Lawrence', 'Chicago', 'Wellington']\n        qs = City.objects.filter(point__right=co_border)\n        self.assertEqual(6, len(qs))\n        for c in qs: self.assertEqual(True, c.name in cities)\n\n        # These cities should be strictly to the right of the KS border.\n        cities = ['Chicago', 'Wellington']\n        qs = City.objects.filter(point__right=ks_border)\n        self.assertEqual(2, len(qs))\n        for c in qs: self.assertEqual(True, c.name in cities)\n\n        # Note: Wellington has an 'X' value of 174, so it will not be considered\n        #  to the left of CO.\n        vic = City.objects.get(point__left=co_border)\n        self.assertEqual('Victoria', vic.name)\n\n        cities = ['Pueblo', 'Victoria']\n        qs = City.objects.filter(point__left=ks_border)\n        self.assertEqual(2, len(qs))\n        for c in qs: self.assertEqual(True, c.name in cities)\n\n    # The left/right lookup tests are known failures on PostGIS 2.0+\n    # until the following bug is fixed:\n    #  http://trac.osgeo.org/postgis/ticket/2035\n    # TODO: Ensure fixed in 2.0.2, else modify upper bound for version here.\n    if (2, 0, 0) <= connection.ops.spatial_version <= (2, 0, 1):\n        test_left_right_lookups = unittest.expectedFailure(test_left_right_lookups)\n\n    def test_equals_lookups(self):\n        \"Testing the 'same_as' and 'equals' lookup types.\"\n        pnt = fromstr('POINT (-95.363151 29.763374)', srid=4326)\n        c1 = City.objects.get(point=pnt)\n        c2 = City.objects.get(point__same_as=pnt)\n        c3 = City.objects.get(point__equals=pnt)\n        for c in [c1, c2, c3]: self.assertEqual('Houston', c.name)\n\n    @no_mysql\n    def test_null_geometries(self):\n        \"Testing NULL geometry support, and the `isnull` lookup type.\"\n        # Creating a state with a NULL boundary.\n        State.objects.create(name='Puerto Rico')\n\n        # Querying for both NULL and Non-NULL values.\n        nullqs = State.objects.filter(poly__isnull=True)\n        validqs = State.objects.filter(poly__isnull=False)\n\n        # Puerto Rico should be NULL (it's a commonwealth unincorporated territory)\n        self.assertEqual(1, len(nullqs))\n        self.assertEqual('Puerto Rico', nullqs[0].name)\n\n        # The valid states should be Colorado & Kansas\n        self.assertEqual(2, len(validqs))\n        state_names = [s.name for s in validqs]\n        self.assertEqual(True, 'Colorado' in state_names)\n        self.assertEqual(True, 'Kansas' in state_names)\n\n        # Saving another commonwealth w/a NULL geometry.\n        nmi = State.objects.create(name='Northern Mariana Islands', poly=None)\n        self.assertEqual(nmi.poly, None)\n\n        # Assigning a geomery and saving -- then UPDATE back to NULL.\n        nmi.poly = 'POLYGON((0 0,1 0,1 1,1 0,0 0))'\n        nmi.save()\n        State.objects.filter(name='Northern Mariana Islands').update(poly=None)\n        self.assertEqual(None, State.objects.get(name='Northern Mariana Islands').poly)\n\n    @no_mysql\n    def test_relate_lookup(self):\n        \"Testing the 'relate' lookup type.\"\n        # To make things more interesting, we will have our Texas reference point in\n        # different SRIDs.\n        pnt1 = fromstr('POINT (649287.0363174 4177429.4494686)', srid=2847)\n        pnt2 = fromstr('POINT(-98.4919715741052 29.4333344025053)', srid=4326)\n\n        # Not passing in a geometry as first param shoud\n        # raise a type error when initializing the GeoQuerySet\n        self.assertRaises(ValueError, Country.objects.filter, mpoly__relate=(23, 'foo'))\n\n        # Making sure the right exception is raised for the given\n        # bad arguments.\n        for bad_args, e in [((pnt1, 0), ValueError), ((pnt2, 'T*T***FF*', 0), ValueError)]:\n            qs = Country.objects.filter(mpoly__relate=bad_args)\n            self.assertRaises(e, qs.count)\n\n        # Relate works differently for the different backends.\n        if postgis or spatialite:\n            contains_mask = 'T*T***FF*'\n            within_mask = 'T*F**F***'\n            intersects_mask = 'T********'\n        elif oracle:\n            contains_mask = 'contains'\n            within_mask = 'inside'\n            # TODO: This is not quite the same as the PostGIS mask above\n            intersects_mask = 'overlapbdyintersect'\n\n        # Testing contains relation mask.\n        self.assertEqual('Texas', Country.objects.get(mpoly__relate=(pnt1, contains_mask)).name)\n        self.assertEqual('Texas', Country.objects.get(mpoly__relate=(pnt2, contains_mask)).name)\n\n        # Testing within relation mask.\n        ks = State.objects.get(name='Kansas')\n        self.assertEqual('Lawrence', City.objects.get(point__relate=(ks.poly, within_mask)).name)\n\n        # Testing intersection relation mask.\n        if not oracle:\n            self.assertEqual('Texas', Country.objects.get(mpoly__relate=(pnt1, intersects_mask)).name)\n            self.assertEqual('Texas', Country.objects.get(mpoly__relate=(pnt2, intersects_mask)).name)\n            self.assertEqual('Lawrence', City.objects.get(point__relate=(ks.poly, intersects_mask)).name)\n\n\nclass GeoQuerySetTest(TestCase):\n    # Please keep the tests in GeoQuerySet method's alphabetic order\n\n    @no_mysql\n    def test_centroid(self):\n        \"Testing the `centroid` GeoQuerySet method.\"\n        qs = State.objects.exclude(poly__isnull=True).centroid()\n        if oracle:\n            tol = 0.1\n        elif spatialite:\n            tol = 0.000001\n        else:\n            tol = 0.000000001\n        for s in qs:\n            self.assertEqual(True, s.poly.centroid.equals_exact(s.centroid, tol))\n\n    @no_mysql\n    def test_diff_intersection_union(self):\n        \"Testing the `difference`, `intersection`, `sym_difference`, and `union` GeoQuerySet methods.\"\n        geom = Point(5, 23)\n        tol = 1\n        qs = Country.objects.all().difference(geom).sym_difference(geom).union(geom)\n\n        # XXX For some reason SpatiaLite does something screwey with the Texas geometry here.  Also,\n        # XXX it doesn't like the null intersection.\n        if spatialite:\n            qs = qs.exclude(name='Texas')\n        else:\n            qs = qs.intersection(geom)\n\n        for c in qs:\n            if oracle:\n                # Should be able to execute the queries; however, they won't be the same\n                # as GEOS (because Oracle doesn't use GEOS internally like PostGIS or\n                # SpatiaLite).\n                pass\n            else:\n                self.assertEqual(c.mpoly.difference(geom), c.difference)\n                if not spatialite:\n                    self.assertEqual(c.mpoly.intersection(geom), c.intersection)\n                self.assertEqual(c.mpoly.sym_difference(geom), c.sym_difference)\n                self.assertEqual(c.mpoly.union(geom), c.union)\n\n    @no_mysql\n    @no_spatialite # SpatiaLite does not have an Extent function\n    def test_extent(self):\n        \"Testing the `extent` GeoQuerySet method.\"\n        # Reference query:\n        # `SELECT ST_extent(point) FROM geoapp_city WHERE (name='Houston' or name='Dallas');`\n        #   =>  BOX(-96.8016128540039 29.7633724212646,-95.3631439208984 32.7820587158203)\n        expected = (-96.8016128540039, 29.7633724212646, -95.3631439208984, 32.782058715820)\n\n        qs = City.objects.filter(name__in=('Houston', 'Dallas'))\n        extent = qs.extent()\n\n        for val, exp in zip(extent, expected):\n            self.assertAlmostEqual(exp, val, 4)\n\n    @no_mysql\n    @no_oracle\n    @no_spatialite\n    def test_force_rhr(self):\n        \"Testing GeoQuerySet.force_rhr().\"\n        rings = ( ( (0, 0), (5, 0), (0, 5), (0, 0) ),\n                  ( (1, 1), (1, 3), (3, 1), (1, 1) ),\n                  )\n        rhr_rings = ( ( (0, 0), (0, 5), (5, 0), (0, 0) ),\n                      ( (1, 1), (3, 1), (1, 3), (1, 1) ),\n                      )\n        State.objects.create(name='Foo', poly=Polygon(*rings))\n        s = State.objects.force_rhr().get(name='Foo')\n        self.assertEqual(rhr_rings, s.force_rhr.coords)\n\n    @no_mysql\n    @no_oracle\n    @no_spatialite\n    def test_geohash(self):\n        \"Testing GeoQuerySet.geohash().\"\n        if not connection.ops.geohash: return\n        # Reference query:\n        # SELECT ST_GeoHash(point) FROM geoapp_city WHERE name='Houston';\n        # SELECT ST_GeoHash(point, 5) FROM geoapp_city WHERE name='Houston';\n        ref_hash = '9vk1mfq8jx0c8e0386z6'\n        h1 = City.objects.geohash().get(name='Houston')\n        h2 = City.objects.geohash(precision=5).get(name='Houston')\n        self.assertEqual(ref_hash, h1.geohash)\n        self.assertEqual(ref_hash[:5], h2.geohash)\n\n    def test_geojson(self):\n        \"Testing GeoJSON output from the database using GeoQuerySet.geojson().\"\n        # Only PostGIS 1.3.4+ and SpatiaLite 3.0+ support GeoJSON.\n        if not connection.ops.geojson:\n            self.assertRaises(NotImplementedError, Country.objects.all().geojson, field_name='mpoly')\n            return\n\n        pueblo_json = '{\"type\":\"Point\",\"coordinates\":[-104.609252,38.255001]}'\n        houston_json = '{\"type\":\"Point\",\"crs\":{\"type\":\"name\",\"properties\":{\"name\":\"EPSG:4326\"}},\"coordinates\":[-95.363151,29.763374]}'\n        victoria_json = '{\"type\":\"Point\",\"bbox\":[-123.30519600,48.46261100,-123.30519600,48.46261100],\"coordinates\":[-123.305196,48.462611]}'\n        chicago_json = '{\"type\":\"Point\",\"crs\":{\"type\":\"name\",\"properties\":{\"name\":\"EPSG:4326\"}},\"bbox\":[-87.65018,41.85039,-87.65018,41.85039],\"coordinates\":[-87.65018,41.85039]}'\n        if postgis and connection.ops.spatial_version < (1, 4, 0):\n            pueblo_json = '{\"type\":\"Point\",\"coordinates\":[-104.60925200,38.25500100]}'\n            houston_json = '{\"type\":\"Point\",\"crs\":{\"type\":\"EPSG\",\"properties\":{\"EPSG\":4326}},\"coordinates\":[-95.36315100,29.76337400]}'\n            victoria_json = '{\"type\":\"Point\",\"bbox\":[-123.30519600,48.46261100,-123.30519600,48.46261100],\"coordinates\":[-123.30519600,48.46261100]}'\n        elif spatialite:\n            victoria_json = '{\"type\":\"Point\",\"bbox\":[-123.305196,48.462611,-123.305196,48.462611],\"coordinates\":[-123.305196,48.462611]}'\n\n        # Precision argument should only be an integer\n        self.assertRaises(TypeError, City.objects.geojson, precision='foo')\n\n        # Reference queries and values.\n        # SELECT ST_AsGeoJson(\"geoapp_city\".\"point\", 8, 0) FROM \"geoapp_city\" WHERE \"geoapp_city\".\"name\" = 'Pueblo';\n        self.assertEqual(pueblo_json, City.objects.geojson().get(name='Pueblo').geojson)\n\n        # 1.3.x: SELECT ST_AsGeoJson(\"geoapp_city\".\"point\", 8, 1) FROM \"geoapp_city\" WHERE \"geoapp_city\".\"name\" = 'Houston';\n        # 1.4.x: SELECT ST_AsGeoJson(\"geoapp_city\".\"point\", 8, 2) FROM \"geoapp_city\" WHERE \"geoapp_city\".\"name\" = 'Houston';\n        # This time we want to include the CRS by using the `crs` keyword.\n        self.assertEqual(houston_json, City.objects.geojson(crs=True, model_att='json').get(name='Houston').json)\n\n        # 1.3.x: SELECT ST_AsGeoJson(\"geoapp_city\".\"point\", 8, 2) FROM \"geoapp_city\" WHERE \"geoapp_city\".\"name\" = 'Victoria';\n        # 1.4.x: SELECT ST_AsGeoJson(\"geoapp_city\".\"point\", 8, 1) FROM \"geoapp_city\" WHERE \"geoapp_city\".\"name\" = 'Houston';\n        # This time we include the bounding box by using the `bbox` keyword.\n        self.assertEqual(victoria_json, City.objects.geojson(bbox=True).get(name='Victoria').geojson)\n\n        # 1.(3|4).x: SELECT ST_AsGeoJson(\"geoapp_city\".\"point\", 5, 3) FROM \"geoapp_city\" WHERE \"geoapp_city\".\"name\" = 'Chicago';\n        # Finally, we set every available keyword.\n        self.assertEqual(chicago_json, City.objects.geojson(bbox=True, crs=True, precision=5).get(name='Chicago').geojson)\n\n    def test_gml(self):\n        \"Testing GML output from the database using GeoQuerySet.gml().\"\n        if mysql or (spatialite and not connection.ops.gml) :\n            self.assertRaises(NotImplementedError, Country.objects.all().gml, field_name='mpoly')\n            return\n\n        # Should throw a TypeError when tyring to obtain GML from a\n        # non-geometry field.\n        qs = City.objects.all()\n        self.assertRaises(TypeError, qs.gml, field_name='name')\n        ptown1 = City.objects.gml(field_name='point', precision=9).get(name='Pueblo')\n        ptown2 = City.objects.gml(precision=9).get(name='Pueblo')\n\n        if oracle:\n            # No precision parameter for Oracle :-/\n            gml_regex = re.compile(r'^<gml:Point srsName=\"SDO:4326\" xmlns:gml=\"http://www.opengis.net/gml\"><gml:coordinates decimal=\"\\.\" cs=\",\" ts=\" \">-104.60925\\d+,38.25500\\d+ </gml:coordinates></gml:Point>')\n        elif spatialite and connection.ops.spatial_version < (3, 0, 0):\n            # Spatialite before 3.0 has extra colon in SrsName\n            gml_regex = re.compile(r'^<gml:Point SrsName=\"EPSG::4326\"><gml:coordinates decimal=\"\\.\" cs=\",\" ts=\" \">-104.609251\\d+,38.255001</gml:coordinates></gml:Point>')\n        else:\n            gml_regex = re.compile(r'^<gml:Point srsName=\"EPSG:4326\"><gml:coordinates>-104\\.60925\\d+,38\\.255001</gml:coordinates></gml:Point>')\n\n        for ptown in [ptown1, ptown2]:\n            self.assertTrue(gml_regex.match(ptown.gml))\n\n        # PostGIS < 1.5 doesn't include dimension im GMLv3 output.\n        if postgis and connection.ops.spatial_version >= (1, 5, 0):\n            self.assertIn('<gml:pos srsDimension=\"2\">',\n                          City.objects.gml(version=3).get(name='Pueblo').gml)\n\n    def test_kml(self):\n        \"Testing KML output from the database using GeoQuerySet.kml().\"\n        # Only PostGIS and Spatialite (>=2.4.0-RC4) support KML serialization\n        if not (postgis or (spatialite and connection.ops.kml)):\n            self.assertRaises(NotImplementedError, State.objects.all().kml, field_name='poly')\n            return\n\n        # Should throw a TypeError when trying to obtain KML from a\n        #  non-geometry field.\n        qs = City.objects.all()\n        self.assertRaises(TypeError, qs.kml, 'name')\n\n        # The reference KML depends on the version of PostGIS used\n        # (the output stopped including altitude in 1.3.3).\n        if connection.ops.spatial_version >= (1, 3, 3):\n            ref_kml =  '<Point><coordinates>-104.609252,38.255001</coordinates></Point>'\n        else:\n            ref_kml = '<Point><coordinates>-104.609252,38.255001,0</coordinates></Point>'\n\n        # Ensuring the KML is as expected.\n        ptown1 = City.objects.kml(field_name='point', precision=9).get(name='Pueblo')\n        ptown2 = City.objects.kml(precision=9).get(name='Pueblo')\n        for ptown in [ptown1, ptown2]:\n            self.assertEqual(ref_kml, ptown.kml)\n\n    # Only PostGIS has support for the MakeLine aggregate.\n    @no_mysql\n    @no_oracle\n    @no_spatialite\n    def test_make_line(self):\n        \"Testing the `make_line` GeoQuerySet method.\"\n        # Ensuring that a `TypeError` is raised on models without PointFields.\n        self.assertRaises(TypeError, State.objects.make_line)\n        self.assertRaises(TypeError, Country.objects.make_line)\n        # Reference query:\n        # SELECT AsText(ST_MakeLine(geoapp_city.point)) FROM geoapp_city;\n        ref_line = GEOSGeometry('LINESTRING(-95.363151 29.763374,-96.801611 32.782057,-97.521157 34.464642,174.783117 -41.315268,-104.609252 38.255001,-95.23506 38.971823,-87.650175 41.850385,-123.305196 48.462611)', srid=4326)\n        self.assertEqual(ref_line, City.objects.make_line())\n\n    @no_mysql\n    def test_num_geom(self):\n        \"Testing the `num_geom` GeoQuerySet method.\"\n        # Both 'countries' only have two geometries.\n        for c in Country.objects.num_geom():\n            self.assertEqual(2, c.num_geom)\n\n        for c in City.objects.filter(point__isnull=False).num_geom():\n            # Oracle and PostGIS 2.0+ will return 1 for the number of\n            # geometries on non-collections, whereas PostGIS < 2.0.0\n            # will return None.\n            if postgis and connection.ops.spatial_version < (2, 0, 0):\n                self.assertIsNone(c.num_geom)\n            else:\n                self.assertEqual(1, c.num_geom)\n\n    @no_mysql\n    @no_spatialite # SpatiaLite can only count vertices in LineStrings\n    def test_num_points(self):\n        \"Testing the `num_points` GeoQuerySet method.\"\n        for c in Country.objects.num_points():\n            self.assertEqual(c.mpoly.num_points, c.num_points)\n\n        if not oracle:\n            # Oracle cannot count vertices in Point geometries.\n            for c in City.objects.num_points(): self.assertEqual(1, c.num_points)\n\n    @no_mysql\n    def test_point_on_surface(self):\n        \"Testing the `point_on_surface` GeoQuerySet method.\"\n        # Reference values.\n        if oracle:\n            # SELECT SDO_UTIL.TO_WKTGEOMETRY(SDO_GEOM.SDO_POINTONSURFACE(GEOAPP_COUNTRY.MPOLY, 0.05)) FROM GEOAPP_COUNTRY;\n            ref = {'New Zealand' : fromstr('POINT (174.616364 -36.100861)', srid=4326),\n                   'Texas' : fromstr('POINT (-103.002434 36.500397)', srid=4326),\n                   }\n\n        elif postgis or spatialite:\n            # Using GEOSGeometry to compute the reference point on surface values\n            # -- since PostGIS also uses GEOS these should be the same.\n            ref = {'New Zealand' : Country.objects.get(name='New Zealand').mpoly.point_on_surface,\n                   'Texas' : Country.objects.get(name='Texas').mpoly.point_on_surface\n                   }\n\n        for c in Country.objects.point_on_surface():\n            if spatialite:\n                # XXX This seems to be a WKT-translation-related precision issue?\n                tol = 0.00001\n            else:\n                tol = 0.000000001\n            self.assertEqual(True, ref[c.name].equals_exact(c.point_on_surface, tol))\n\n    @no_mysql\n    @no_spatialite\n    def test_reverse_geom(self):\n        \"Testing GeoQuerySet.reverse_geom().\"\n        coords = [ (-95.363151, 29.763374), (-95.448601, 29.713803) ]\n        Track.objects.create(name='Foo', line=LineString(coords))\n        t = Track.objects.reverse_geom().get(name='Foo')\n        coords.reverse()\n        self.assertEqual(tuple(coords), t.reverse_geom.coords)\n        if oracle:\n            self.assertRaises(TypeError, State.objects.reverse_geom)\n\n    @no_mysql\n    @no_oracle\n    def test_scale(self):\n        \"Testing the `scale` GeoQuerySet method.\"\n        xfac, yfac = 2, 3\n        tol = 5 # XXX The low precision tolerance is for SpatiaLite\n        qs = Country.objects.scale(xfac, yfac, model_att='scaled')\n        for c in qs:\n            for p1, p2 in zip(c.mpoly, c.scaled):\n                for r1, r2 in zip(p1, p2):\n                    for c1, c2 in zip(r1.coords, r2.coords):\n                        self.assertAlmostEqual(c1[0] * xfac, c2[0], tol)\n                        self.assertAlmostEqual(c1[1] * yfac, c2[1], tol)\n\n    @no_mysql\n    @no_oracle\n    @no_spatialite\n    def test_snap_to_grid(self):\n        \"Testing GeoQuerySet.snap_to_grid().\"\n        # Let's try and break snap_to_grid() with bad combinations of arguments.\n        for bad_args in ((), range(3), range(5)):\n            self.assertRaises(ValueError, Country.objects.snap_to_grid, *bad_args)\n        for bad_args in (('1.0',), (1.0, None), tuple(map(six.text_type, range(4)))):\n            self.assertRaises(TypeError, Country.objects.snap_to_grid, *bad_args)\n\n        # Boundary for San Marino, courtesy of Bjorn Sandvik of thematicmapping.org\n        # from the world borders dataset he provides.\n        wkt = ('MULTIPOLYGON(((12.41580 43.95795,12.45055 43.97972,12.45389 43.98167,'\n               '12.46250 43.98472,12.47167 43.98694,12.49278 43.98917,'\n               '12.50555 43.98861,12.51000 43.98694,12.51028 43.98277,'\n               '12.51167 43.94333,12.51056 43.93916,12.49639 43.92333,'\n               '12.49500 43.91472,12.48778 43.90583,12.47444 43.89722,'\n               '12.46472 43.89555,12.45917 43.89611,12.41639 43.90472,'\n               '12.41222 43.90610,12.40782 43.91366,12.40389 43.92667,'\n               '12.40500 43.94833,12.40889 43.95499,12.41580 43.95795)))')\n        sm = Country.objects.create(name='San Marino', mpoly=fromstr(wkt))\n\n        # Because floating-point arithmetic isn't exact, we set a tolerance\n        # to pass into GEOS `equals_exact`.\n        tol = 0.000000001\n\n        # SELECT AsText(ST_SnapToGrid(\"geoapp_country\".\"mpoly\", 0.1)) FROM \"geoapp_country\" WHERE \"geoapp_country\".\"name\" = 'San Marino';\n        ref = fromstr('MULTIPOLYGON(((12.4 44,12.5 44,12.5 43.9,12.4 43.9,12.4 44)))')\n        self.assertTrue(ref.equals_exact(Country.objects.snap_to_grid(0.1).get(name='San Marino').snap_to_grid, tol))\n\n        # SELECT AsText(ST_SnapToGrid(\"geoapp_country\".\"mpoly\", 0.05, 0.23)) FROM \"geoapp_country\" WHERE \"geoapp_country\".\"name\" = 'San Marino';\n        ref = fromstr('MULTIPOLYGON(((12.4 43.93,12.45 43.93,12.5 43.93,12.45 43.93,12.4 43.93)))')\n        self.assertTrue(ref.equals_exact(Country.objects.snap_to_grid(0.05, 0.23).get(name='San Marino').snap_to_grid, tol))\n\n        # SELECT AsText(ST_SnapToGrid(\"geoapp_country\".\"mpoly\", 0.5, 0.17, 0.05, 0.23)) FROM \"geoapp_country\" WHERE \"geoapp_country\".\"name\" = 'San Marino';\n        ref = fromstr('MULTIPOLYGON(((12.4 43.87,12.45 43.87,12.45 44.1,12.5 44.1,12.5 43.87,12.45 43.87,12.4 43.87)))')\n        self.assertTrue(ref.equals_exact(Country.objects.snap_to_grid(0.05, 0.23, 0.5, 0.17).get(name='San Marino').snap_to_grid, tol))\n\n    def test_svg(self):\n        \"Testing SVG output using GeoQuerySet.svg().\"\n        if mysql or oracle:\n            self.assertRaises(NotImplementedError, City.objects.svg)\n            return\n\n        self.assertRaises(TypeError, City.objects.svg, precision='foo')\n        # SELECT AsSVG(geoapp_city.point, 0, 8) FROM geoapp_city WHERE name = 'Pueblo';\n        svg1 = 'cx=\"-104.609252\" cy=\"-38.255001\"'\n        # Even though relative, only one point so it's practically the same except for\n        # the 'c' letter prefix on the x,y values.\n        svg2 = svg1.replace('c', '')\n        self.assertEqual(svg1, City.objects.svg().get(name='Pueblo').svg)\n        self.assertEqual(svg2, City.objects.svg(relative=5).get(name='Pueblo').svg)\n\n    @no_mysql\n    def test_transform(self):\n        \"Testing the transform() GeoQuerySet method.\"\n        # Pre-transformed points for Houston and Pueblo.\n        htown = fromstr('POINT(1947516.83115183 6322297.06040572)', srid=3084)\n        ptown = fromstr('POINT(992363.390841912 481455.395105533)', srid=2774)\n        prec = 3 # Precision is low due to version variations in PROJ and GDAL.\n\n        # Asserting the result of the transform operation with the values in\n        #  the pre-transformed points.  Oracle does not have the 3084 SRID.\n        if not oracle:\n            h = City.objects.transform(htown.srid).get(name='Houston')\n            self.assertEqual(3084, h.point.srid)\n            self.assertAlmostEqual(htown.x, h.point.x, prec)\n            self.assertAlmostEqual(htown.y, h.point.y, prec)\n\n        p1 = City.objects.transform(ptown.srid, field_name='point').get(name='Pueblo')\n        p2 = City.objects.transform(srid=ptown.srid).get(name='Pueblo')\n        for p in [p1, p2]:\n            self.assertEqual(2774, p.point.srid)\n            self.assertAlmostEqual(ptown.x, p.point.x, prec)\n            self.assertAlmostEqual(ptown.y, p.point.y, prec)\n\n    @no_mysql\n    @no_oracle\n    def test_translate(self):\n        \"Testing the `translate` GeoQuerySet method.\"\n        xfac, yfac = 5, -23\n        qs = Country.objects.translate(xfac, yfac, model_att='translated')\n        for c in qs:\n            for p1, p2 in zip(c.mpoly, c.translated):\n                for r1, r2 in zip(p1, p2):\n                    for c1, c2 in zip(r1.coords, r2.coords):\n                        # XXX The low precision is for SpatiaLite\n                        self.assertAlmostEqual(c1[0] + xfac, c2[0], 5)\n                        self.assertAlmostEqual(c1[1] + yfac, c2[1], 5)\n\n    @no_mysql\n    def test_unionagg(self):\n        \"Testing the `unionagg` (aggregate union) GeoQuerySet method.\"\n        tx = Country.objects.get(name='Texas').mpoly\n        # Houston, Dallas -- Oracle has different order.\n        union1 = fromstr('MULTIPOINT(-96.801611 32.782057,-95.363151 29.763374)')\n        union2 = fromstr('MULTIPOINT(-96.801611 32.782057,-95.363151 29.763374)')\n        qs = City.objects.filter(point__within=tx)\n        self.assertRaises(TypeError, qs.unionagg, 'name')\n        # Using `field_name` keyword argument in one query and specifying an\n        # order in the other (which should not be used because this is\n        # an aggregate method on a spatial column)\n        u1 = qs.unionagg(field_name='point')\n        u2 = qs.order_by('name').unionagg()\n        tol = 0.00001\n        if oracle:\n            union = union2\n        else:\n            union = union1\n        self.assertEqual(True, union.equals_exact(u1, tol))\n        self.assertEqual(True, union.equals_exact(u2, tol))\n        qs = City.objects.filter(name='NotACity')\n        self.assertEqual(None, qs.unionagg(field_name='point'))\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/tests/geoapp/urls.py",
    "content": "from __future__ import absolute_import\n\nfrom django.conf.urls import patterns\n\nfrom .feeds import feed_dict\nfrom .sitemaps import sitemaps\n\n\nurlpatterns = patterns('',\n    (r'^feeds/(?P<url>.*)/$', 'django.contrib.gis.views.feed', {'feed_dict': feed_dict}),\n)\n\nurlpatterns += patterns('django.contrib.gis.sitemaps.views',\n    (r'^sitemap.xml$', 'index', {'sitemaps' : sitemaps}),\n    (r'^sitemaps/(?P<section>\\w+)\\.xml$', 'sitemap', {'sitemaps' : sitemaps}),\n    (r'^sitemaps/kml/(?P<label>\\w+)/(?P<model>\\w+)/(?P<field_name>\\w+)\\.kml$', 'kml'),\n    (r'^sitemaps/kml/(?P<label>\\w+)/(?P<model>\\w+)/(?P<field_name>\\w+)\\.kmz$', 'kmz'),\n)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/tests/geogapp/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/tests/geogapp/fixtures/initial_data.json",
    "content": "[  \n  {\n    \"pk\": 1, \n    \"model\": \"geogapp.city\", \n    \"fields\": {\n      \"name\": \"Houston\", \n      \"point\": \"POINT (-95.363151 29.763374)\"\n    }\n  }, \n  {\n    \"pk\": 2, \n    \"model\": \"geogapp.city\", \n    \"fields\": {\n      \"name\": \"Dallas\", \n      \"point\": \"POINT (-96.801611 32.782057)\"\n    }\n  }, \n  {\n    \"pk\": 3, \n    \"model\": \"geogapp.city\", \n    \"fields\": {\n      \"name\": \"Oklahoma City\",\n      \"point\": \"POINT (-97.521157 34.464642)\"\n    }\n  }, \n  {\n    \"pk\": 4, \n    \"model\": \"geogapp.city\", \n    \"fields\": {\n      \"name\": \"Wellington\",\n      \"point\": \"POINT (174.783117 -41.315268)\"\n    }\n  }, \n  {\n    \"pk\": 5, \n    \"model\": \"geogapp.city\", \n    \"fields\": {\n      \"name\": \"Pueblo\", \n      \"point\": \"POINT (-104.609252 38.255001)\"\n    }\n  }, \n  {\n    \"pk\": 6, \n    \"model\": \"geogapp.city\", \n    \"fields\": {\n      \"name\": \"Lawrence\", \n      \"point\": \"POINT (-95.235060 38.971823)\"\n    }\n  }, \n  {\n    \"pk\": 7, \n    \"model\": \"geogapp.city\", \n    \"fields\": {\n      \"name\": \"Chicago\", \n      \"point\": \"POINT (-87.650175 41.850385)\"\n    }\n  }, \n  {\n    \"pk\": 8, \n    \"model\": \"geogapp.city\", \n    \"fields\": {\n      \"name\": \"Victoria\", \n      \"point\": \"POINT (-123.305196 48.462611)\"\n    }\n  },\n  {\n    \"pk\": 1,\n    \"model\": \"geogapp.zipcode\",\n    \"fields\" : {\n       \"code\" : \"77002\",\n       \"poly\" : \"SRID=4269;POLYGON ((-95.365015 29.772327, -95.362415 29.772327, -95.360915 29.771827, -95.354615 29.771827, -95.351515 29.772527, -95.350915 29.765327, -95.351015 29.762436, -95.350115 29.760328, -95.347515 29.758528, -95.352315 29.753928, -95.356415 29.756328, -95.358215 29.754028, -95.360215 29.756328, -95.363415 29.757128, -95.364014 29.75638, -95.363415 29.753928, -95.360015 29.751828, -95.361815 29.749528, -95.362715 29.750028, -95.367516 29.744128, -95.369316 29.745128, -95.373916 29.744128, -95.380116 29.738028, -95.387916 29.727929, -95.388516 29.729629, -95.387916 29.732129, -95.382916 29.737428, -95.376616 29.742228, -95.372616 29.747228, -95.378601 29.750846, -95.378616 29.752028, -95.378616 29.754428, -95.376016 29.754528, -95.374616 29.759828, -95.373616 29.761128, -95.371916 29.763928, -95.372316 29.768727, -95.365884 29.76791, -95.366015 29.767127, -95.358715 29.765327, -95.358615 29.766327, -95.359115 29.767227, -95.360215 29.767027, -95.362783 29.768267, -95.365315 29.770527, -95.365015 29.772327))\"\n       }\n  },\n  {\n    \"pk\": 2,\n    \"model\": \"geogapp.zipcode\",\n    \"fields\" : {\n       \"code\" : \"77005\",\n       \"poly\" : \"SRID=4269;POLYGON ((-95.447918 29.727275, -95.428017 29.728729, -95.421117 29.729029, -95.418617 29.727629, -95.418517 29.726429, -95.402117 29.726629, -95.402117 29.725729, -95.395316 29.725729, -95.391916 29.726229, -95.389716 29.725829, -95.396517 29.715429, -95.397517 29.715929, -95.400917 29.711429, -95.411417 29.715029, -95.418417 29.714729, -95.418317 29.70623, -95.440818 29.70593, -95.445018 29.70683, -95.446618 29.70763, -95.447418 29.71003, -95.447918 29.727275))\"\n    }\n  },\n  {\n    \"pk\": 3,\n    \"model\": \"geogapp.zipcode\",\n    \"fields\" : {\n       \"code\" : \"77025\",\n       \"poly\" : \"SRID=4269;POLYGON ((-95.418317 29.70623, -95.414717 29.706129, -95.414617 29.70533, -95.418217 29.70533, -95.419817 29.69533, -95.419484 29.694196, -95.417166 29.690901, -95.414517 29.69433, -95.413317 29.69263, -95.412617 29.68973, -95.412817 29.68753, -95.414087 29.685055, -95.419165 29.685428, -95.421617 29.68513, -95.425717 29.67983, -95.425017 29.67923, -95.424517 29.67763, -95.427418 29.67763, -95.438018 29.664631, -95.436713 29.664411, -95.440118 29.662231, -95.439218 29.661031, -95.437718 29.660131, -95.435718 29.659731, -95.431818 29.660331, -95.441418 29.656631, -95.441318 29.656331, -95.441818 29.656131, -95.441718 29.659031, -95.441118 29.661031, -95.446718 29.656431, -95.446518 29.673431, -95.446918 29.69013, -95.447418 29.71003, -95.446618 29.70763, -95.445018 29.70683, -95.440818 29.70593, -95.418317 29.70623))\"\n    }\n  },\n  {\n    \"pk\": 4,\n    \"model\": \"geogapp.zipcode\",\n    \"fields\" : {\n       \"code\" : \"77401\",\n       \"poly\" : \"SRID=4269;POLYGON ((-95.447918 29.727275, -95.447418 29.71003, -95.446918 29.69013, -95.454318 29.68893, -95.475819 29.68903, -95.475819 29.69113, -95.484419 29.69103, -95.484519 29.69903, -95.480419 29.70133, -95.480419 29.69833, -95.474119 29.69833, -95.474119 29.70453, -95.472719 29.71283, -95.468019 29.71293, -95.468219 29.720229, -95.464018 29.720229, -95.464118 29.724529, -95.463018 29.725929, -95.459818 29.726129, -95.459918 29.720329, -95.451418 29.720429, -95.451775 29.726303, -95.451318 29.727029, -95.447918 29.727275))\"\n    }\n  }\n]"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/tests/geogapp/models.py",
    "content": "from django.contrib.gis.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n@python_2_unicode_compatible\nclass City(models.Model):\n    name = models.CharField(max_length=30)\n    point = models.PointField(geography=True)\n    objects = models.GeoManager()\n    def __str__(self): return self.name\n\n@python_2_unicode_compatible\nclass Zipcode(models.Model):\n    code = models.CharField(max_length=10)\n    poly = models.PolygonField(geography=True)\n    objects = models.GeoManager()\n    def __str__(self): return self.code\n\n@python_2_unicode_compatible\nclass County(models.Model):\n    name = models.CharField(max_length=25)\n    state = models.CharField(max_length=20)\n    mpoly = models.MultiPolygonField(geography=True)\n    objects = models.GeoManager()\n    def __str__(self): return ' County, '.join([self.name, self.state])\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/tests/geogapp/tests.py",
    "content": "\"\"\"\nTests for geography support in PostGIS 1.5+\n\"\"\"\nfrom __future__ import absolute_import\n\nimport os\n\nfrom django.contrib.gis import gdal\nfrom django.contrib.gis.measure import D\nfrom django.test import TestCase\nfrom django.utils._os import upath\n\nfrom .models import City, County, Zipcode\n\n\nclass GeographyTest(TestCase):\n\n    def test01_fixture_load(self):\n        \"Ensure geography features loaded properly.\"\n        self.assertEqual(8, City.objects.count())\n\n    def test02_distance_lookup(self):\n        \"Testing GeoQuerySet distance lookup support on non-point geography fields.\"\n        z = Zipcode.objects.get(code='77002')\n        cities1 = list(City.objects\n                       .filter(point__distance_lte=(z.poly, D(mi=500)))\n                       .order_by('name')\n                       .values_list('name', flat=True))\n        cities2 = list(City.objects\n                       .filter(point__dwithin=(z.poly, D(mi=500)))\n                       .order_by('name')\n                       .values_list('name', flat=True))\n        for cities in [cities1, cities2]:\n            self.assertEqual(['Dallas', 'Houston', 'Oklahoma City'], cities)\n\n    def test03_distance_method(self):\n        \"Testing GeoQuerySet.distance() support on non-point geography fields.\"\n        # `GeoQuerySet.distance` is not allowed geometry fields.\n        htown = City.objects.get(name='Houston')\n        qs = Zipcode.objects.distance(htown.point)\n\n    def test04_invalid_operators_functions(self):\n        \"Ensuring exceptions are raised for operators & functions invalid on geography fields.\"\n        # Only a subset of the geometry functions & operator are available\n        # to PostGIS geography types.  For more information, visit:\n        #  http://postgis.refractions.net/documentation/manual-1.5/ch08.html#PostGIS_GeographyFunctions\n        z = Zipcode.objects.get(code='77002')\n        # ST_Within not available.\n        self.assertRaises(ValueError, City.objects.filter(point__within=z.poly).count)\n        # `@` operator not available.\n        self.assertRaises(ValueError, City.objects.filter(point__contained=z.poly).count)\n\n        # Regression test for #14060, `~=` was never really implemented for PostGIS.\n        htown = City.objects.get(name='Houston')\n        self.assertRaises(ValueError, City.objects.get, point__exact=htown.point)\n\n    def test05_geography_layermapping(self):\n        \"Testing LayerMapping support on models with geography fields.\"\n        # There is a similar test in `layermap` that uses the same data set,\n        # but the County model here is a bit different.\n        if not gdal.HAS_GDAL: return\n        from django.contrib.gis.utils import LayerMapping\n\n        # Getting the shapefile and mapping dictionary.\n        shp_path = os.path.realpath(os.path.join(os.path.dirname(upath(__file__)), '..', 'data'))\n        co_shp = os.path.join(shp_path, 'counties', 'counties.shp')\n        co_mapping = {'name' : 'Name',\n                      'state' : 'State',\n                      'mpoly' : 'MULTIPOLYGON',\n                      }\n\n        # Reference county names, number of polygons, and state names.\n        names = ['Bexar', 'Galveston', 'Harris', 'Honolulu', 'Pueblo']\n        num_polys = [1, 2, 1, 19, 1] # Number of polygons for each.\n        st_names = ['Texas', 'Texas', 'Texas', 'Hawaii', 'Colorado']\n\n        lm = LayerMapping(County, co_shp, co_mapping, source_srs=4269, unique='name')\n        lm.save(silent=True, strict=True)\n\n        for c, name, num_poly, state in zip(County.objects.order_by('name'), names, num_polys, st_names):\n            self.assertEqual(4326, c.mpoly.srid)\n            self.assertEqual(num_poly, len(c.mpoly))\n            self.assertEqual(name, c.name)\n            self.assertEqual(state, c.state)\n\n    def test06_geography_area(self):\n        \"Testing that Area calculations work on geography columns.\"\n        # SELECT ST_Area(poly) FROM geogapp_zipcode WHERE code='77002';\n        ref_area = 5439084.70637573\n        tol = 5\n        z = Zipcode.objects.area().get(code='77002')\n        self.assertAlmostEqual(z.area.sq_m, ref_area, tol)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/tests/inspectapp/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/tests/inspectapp/models.py",
    "content": "from django.contrib.gis.db import models\n\nclass AllOGRFields(models.Model):\n    f_decimal = models.FloatField()\n    f_float = models.FloatField()\n    f_int = models.IntegerField()\n    f_char = models.CharField(max_length=10)\n    f_date = models.DateField()\n    f_datetime = models.DateTimeField()\n    f_time = models.TimeField()\n    geom = models.PolygonField()\n\n    objects = models.GeoManager()\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/tests/inspectapp/tests.py",
    "content": "from __future__ import absolute_import\n\nimport os\n\nfrom django.db import connections\nfrom django.test import TestCase\nfrom django.contrib.gis.gdal import Driver\nfrom django.contrib.gis.geometry.test_data import TEST_DATA\nfrom django.contrib.gis.utils.ogrinspect import ogrinspect\n\nfrom .models import AllOGRFields\n\n\nclass OGRInspectTest(TestCase):\n    def test_poly(self):\n        shp_file = os.path.join(TEST_DATA, 'test_poly', 'test_poly.shp')\n        model_def = ogrinspect(shp_file, 'MyModel')\n\n        expected = [\n            '# This is an auto-generated Django model module created by ogrinspect.',\n            'from django.contrib.gis.db import models',\n            '',\n            'class MyModel(models.Model):',\n            '    float = models.FloatField()',\n            '    int = models.FloatField()',\n            '    str = models.CharField(max_length=80)',\n            '    geom = models.PolygonField(srid=-1)',\n            '    objects = models.GeoManager()',\n        ]\n\n        self.assertEqual(model_def, '\\n'.join(expected))\n\n    def test_date_field(self):\n        shp_file = os.path.join(TEST_DATA, 'cities', 'cities.shp')\n        model_def = ogrinspect(shp_file, 'City')\n\n        expected = [\n            '# This is an auto-generated Django model module created by ogrinspect.',\n            'from django.contrib.gis.db import models',\n            '',\n            'class City(models.Model):',\n            '    name = models.CharField(max_length=80)',\n            '    population = models.FloatField()',\n            '    density = models.FloatField()',\n            '    created = models.DateField()',\n            '    geom = models.PointField(srid=-1)',\n            '    objects = models.GeoManager()',\n        ]\n\n        self.assertEqual(model_def, '\\n'.join(expected))\n\n    def test_time_field(self):\n        # Only possible to test this on PostGIS at the momemnt.  MySQL\n        # complains about permissions, and SpatiaLite/Oracle are\n        # insanely difficult to get support compiled in for in GDAL.\n        if not connections['default'].ops.postgis:\n            return\n\n        # Getting the database identifier used by OGR, if None returned\n        # GDAL does not have the support compiled in.\n        ogr_db = get_ogr_db_string()\n        if not ogr_db:\n            return\n\n        # writing shapefules via GDAL currently does not support writing OGRTime\n        # fields, so we need to actually use a database\n        model_def = ogrinspect(ogr_db, 'Measurement',\n                               layer_key=AllOGRFields._meta.db_table,\n                               decimal=['f_decimal'])\n\n        self.assertTrue(model_def.startswith(\n            '# This is an auto-generated Django model module created by ogrinspect.\\n'\n            'from django.contrib.gis.db import models\\n'\n            '\\n'\n            'class Measurement(models.Model):\\n'\n        ))\n\n        # The ordering of model fields might vary depending on several factors (version of GDAL, etc.)\n        self.assertIn('    f_decimal = models.DecimalField(max_digits=0, decimal_places=0)', model_def)\n        self.assertIn('    f_int = models.IntegerField()', model_def)\n        self.assertIn('    f_datetime = models.DateTimeField()', model_def)\n        self.assertIn('    f_time = models.TimeField()', model_def)\n        self.assertIn('    f_float = models.FloatField()', model_def)\n        self.assertIn('    f_char = models.CharField(max_length=10)', model_def)\n        self.assertIn('    f_date = models.DateField()', model_def)\n\n        self.assertTrue(model_def.endswith(\n            '    geom = models.PolygonField()\\n'\n            '    objects = models.GeoManager()'\n        ))\n\n\ndef get_ogr_db_string():\n    # Construct the DB string that GDAL will use to inspect the database.\n    # GDAL will create its own connection to the database, so we re-use the\n    # connection settings from the Django test.  This approach is a bit fragile\n    # and cannot work on any other database other than PostgreSQL at the moment.\n    db = connections.databases['default']\n\n    # Map from the django backend into the OGR driver name and database identifier\n    # http://www.gdal.org/ogr/ogr_formats.html\n    #\n    # TODO: Support Oracle (OCI), MySQL, and SpatiaLite.\n    drivers = {\n        'django.contrib.gis.db.backends.postgis': ('PostgreSQL', 'PG'),\n    }\n\n    drv_name, db_str = drivers[db['ENGINE']]\n\n    # Ensure that GDAL library has driver support for the database.\n    try:\n        Driver(drv_name)\n    except:\n        return None\n\n    # Build the params of the OGR database connection string\n    # TODO: connection strings are database-dependent, thus if\n    #       we ever test other backends, this will need to change.\n    params = [\"dbname='%s'\" % db['NAME']]\n    def add(key, template):\n        value = db.get(key, None)\n        # Don't add the parameter if it is not in django's settings\n        if value:\n            params.append(template % value)\n    add('HOST', \"host='%s'\")\n    add('PORT', \"port='%s'\")\n    add('USER', \"user='%s'\")\n    add('PASSWORD', \"password='%s'\")\n\n    return '%s:%s' % (db_str, ' '.join(params))\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/tests/layermap/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/tests/layermap/models.py",
    "content": "from django.contrib.gis.db import models\n\nclass State(models.Model):\n    name = models.CharField(max_length=20)\n    objects = models.GeoManager()\n\nclass County(models.Model):\n    name = models.CharField(max_length=25)\n    state = models.ForeignKey(State)\n    mpoly = models.MultiPolygonField(srid=4269) # Multipolygon in NAD83\n    objects = models.GeoManager()\n\nclass CountyFeat(models.Model):\n    name = models.CharField(max_length=25)\n    poly = models.PolygonField(srid=4269)\n    objects = models.GeoManager()\n\nclass City(models.Model):\n    name = models.CharField(max_length=25)\n    name_txt = models.TextField(default='')\n    population = models.IntegerField()\n    density = models.DecimalField(max_digits=7, decimal_places=1)\n    dt = models.DateField()\n    point = models.PointField()\n    objects = models.GeoManager()\n\nclass Interstate(models.Model):\n    name = models.CharField(max_length=20)\n    length = models.DecimalField(max_digits=6, decimal_places=2)\n    path = models.LineStringField()\n    objects = models.GeoManager()\n\n# Same as `City` above, but for testing model inheritance.\nclass CityBase(models.Model):\n    name = models.CharField(max_length=25)\n    population = models.IntegerField()\n    density = models.DecimalField(max_digits=7, decimal_places=1)\n    point = models.PointField()\n    objects = models.GeoManager()\n\nclass ICity1(CityBase):\n    dt = models.DateField()\n    \nclass ICity2(ICity1):\n    dt_time = models.DateTimeField(auto_now=True)\n\nclass Invalid(models.Model):\n    point = models.PointField()\n\n# Mapping dictionaries for the models above.\nco_mapping = {'name' : 'Name',\n              'state' : {'name' : 'State'}, # ForeignKey's use another mapping dictionary for the _related_ Model (State in this case).\n              'mpoly' : 'MULTIPOLYGON', # Will convert POLYGON features into MULTIPOLYGONS.\n              }\n\ncofeat_mapping = {'name' : 'Name',\n                  'poly' : 'POLYGON',\n                  }\n\ncity_mapping = {'name' : 'Name',\n                'population' : 'Population',\n                'density' : 'Density',\n                'dt' : 'Created',\n                'point' : 'POINT',\n                }\n\ninter_mapping = {'name' : 'Name',\n                 'length' : 'Length',\n                 'path' : 'LINESTRING',\n                 }\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/tests/layermap/tests.py",
    "content": "# coding: utf-8\nfrom __future__ import absolute_import, unicode_literals\n\nimport os\nfrom copy import copy\nfrom decimal import Decimal\n\nfrom django.contrib.gis.gdal import DataSource\nfrom django.contrib.gis.tests.utils import mysql\nfrom django.contrib.gis.utils.layermapping import (LayerMapping, LayerMapError,\n    InvalidDecimal, MissingForeignKey)\nfrom django.db import router\nfrom django.conf import settings\nfrom django.test import TestCase\nfrom django.utils import unittest\nfrom django.utils._os import upath\n\nfrom .models import (\n    City, County, CountyFeat, Interstate, ICity1, ICity2, Invalid, State,\n    city_mapping, co_mapping, cofeat_mapping, inter_mapping)\n\n\nshp_path = os.path.realpath(os.path.join(os.path.dirname(upath(__file__)), os.pardir, 'data'))\ncity_shp = os.path.join(shp_path, 'cities', 'cities.shp')\nco_shp = os.path.join(shp_path, 'counties', 'counties.shp')\ninter_shp = os.path.join(shp_path, 'interstates', 'interstates.shp')\ninvalid_shp = os.path.join(shp_path, 'invalid', 'emptypoints.shp')\n\n# Dictionaries to hold what's expected in the county shapefile.\nNAMES  = ['Bexar', 'Galveston', 'Harris', 'Honolulu', 'Pueblo']\nNUMS   = [1, 2, 1, 19, 1] # Number of polygons for each.\nSTATES = ['Texas', 'Texas', 'Texas', 'Hawaii', 'Colorado']\n\n\nclass LayerMapTest(TestCase):\n\n    def test_init(self):\n        \"Testing LayerMapping initialization.\"\n\n        # Model field that does not exist.\n        bad1 = copy(city_mapping)\n        bad1['foobar'] = 'FooField'\n\n        # Shapefile field that does not exist.\n        bad2 = copy(city_mapping)\n        bad2['name'] = 'Nombre'\n\n        # Nonexistent geographic field type.\n        bad3 = copy(city_mapping)\n        bad3['point'] = 'CURVE'\n\n        # Incrementing through the bad mapping dictionaries and\n        # ensuring that a LayerMapError is raised.\n        for bad_map in (bad1, bad2, bad3):\n            with self.assertRaises(LayerMapError):\n                lm = LayerMapping(City, city_shp, bad_map)\n\n        # A LookupError should be thrown for bogus encodings.\n        with self.assertRaises(LookupError):\n            lm = LayerMapping(City, city_shp, city_mapping, encoding='foobar')\n\n    def test_simple_layermap(self):\n        \"Test LayerMapping import of a simple point shapefile.\"\n        # Setting up for the LayerMapping.\n        lm = LayerMapping(City, city_shp, city_mapping)\n        lm.save()\n\n        # There should be three cities in the shape file.\n        self.assertEqual(3, City.objects.count())\n\n        # Opening up the shapefile, and verifying the values in each\n        # of the features made it to the model.\n        ds = DataSource(city_shp)\n        layer = ds[0]\n        for feat in layer:\n            city = City.objects.get(name=feat['Name'].value)\n            self.assertEqual(feat['Population'].value, city.population)\n            self.assertEqual(Decimal(str(feat['Density'])), city.density)\n            self.assertEqual(feat['Created'].value, city.dt)\n\n            # Comparing the geometries.\n            pnt1, pnt2 = feat.geom, city.point\n            self.assertAlmostEqual(pnt1.x, pnt2.x, 5)\n            self.assertAlmostEqual(pnt1.y, pnt2.y, 5)\n\n    def test_layermap_strict(self):\n        \"Testing the `strict` keyword, and import of a LineString shapefile.\"\n        # When the `strict` keyword is set an error encountered will force\n        # the importation to stop.\n        with self.assertRaises(InvalidDecimal):\n            lm = LayerMapping(Interstate, inter_shp, inter_mapping)\n            lm.save(silent=True, strict=True)\n        Interstate.objects.all().delete()\n\n        # This LayerMapping should work b/c `strict` is not set.\n        lm = LayerMapping(Interstate, inter_shp, inter_mapping)\n        lm.save(silent=True)\n\n        # Two interstate should have imported correctly.\n        self.assertEqual(2, Interstate.objects.count())\n\n        # Verifying the values in the layer w/the model.\n        ds = DataSource(inter_shp)\n\n        # Only the first two features of this shapefile are valid.\n        valid_feats = ds[0][:2]\n        for feat in valid_feats:\n            istate = Interstate.objects.get(name=feat['Name'].value)\n\n            if feat.fid == 0:\n                self.assertEqual(Decimal(str(feat['Length'])), istate.length)\n            elif feat.fid == 1:\n                # Everything but the first two decimal digits were truncated,\n                # because the Interstate model's `length` field has decimal_places=2.\n                self.assertAlmostEqual(feat.get('Length'), float(istate.length), 2)\n\n            for p1, p2 in zip(feat.geom, istate.path):\n                self.assertAlmostEqual(p1[0], p2[0], 6)\n                self.assertAlmostEqual(p1[1], p2[1], 6)\n\n    def county_helper(self, county_feat=True):\n        \"Helper function for ensuring the integrity of the mapped County models.\"\n        for name, n, st in zip(NAMES, NUMS, STATES):\n            # Should only be one record b/c of `unique` keyword.\n            c = County.objects.get(name=name)\n            self.assertEqual(n, len(c.mpoly))\n            self.assertEqual(st, c.state.name) # Checking ForeignKey mapping.\n\n            # Multiple records because `unique` was not set.\n            if county_feat:\n                qs = CountyFeat.objects.filter(name=name)\n                self.assertEqual(n, qs.count())\n\n    def test_layermap_unique_multigeometry_fk(self):\n        \"Testing the `unique`, and `transform`, geometry collection conversion, and ForeignKey mappings.\"\n        # All the following should work.\n        try:\n            # Telling LayerMapping that we want no transformations performed on the data.\n            lm = LayerMapping(County, co_shp, co_mapping, transform=False)\n\n            # Specifying the source spatial reference system via the `source_srs` keyword.\n            lm = LayerMapping(County, co_shp, co_mapping, source_srs=4269)\n            lm = LayerMapping(County, co_shp, co_mapping, source_srs='NAD83')\n\n            # Unique may take tuple or string parameters.\n            for arg in ('name', ('name', 'mpoly')):\n                lm = LayerMapping(County, co_shp, co_mapping, transform=False, unique=arg)\n        except:\n            self.fail('No exception should be raised for proper use of keywords.')\n\n        # Testing invalid params for the `unique` keyword.\n        for e, arg in ((TypeError, 5.0), (ValueError, 'foobar'), (ValueError, ('name', 'mpolygon'))):\n            self.assertRaises(e, LayerMapping, County, co_shp, co_mapping, transform=False, unique=arg)\n\n        # No source reference system defined in the shapefile, should raise an error.\n        if not mysql:\n            self.assertRaises(LayerMapError, LayerMapping, County, co_shp, co_mapping)\n\n        # Passing in invalid ForeignKey mapping parameters -- must be a dictionary\n        # mapping for the model the ForeignKey points to.\n        bad_fk_map1 = copy(co_mapping); bad_fk_map1['state'] = 'name'\n        bad_fk_map2 = copy(co_mapping); bad_fk_map2['state'] = {'nombre' : 'State'}\n        self.assertRaises(TypeError, LayerMapping, County, co_shp, bad_fk_map1, transform=False)\n        self.assertRaises(LayerMapError, LayerMapping, County, co_shp, bad_fk_map2, transform=False)\n\n        # There exist no State models for the ForeignKey mapping to work -- should raise\n        # a MissingForeignKey exception (this error would be ignored if the `strict`\n        # keyword is not set).\n        lm = LayerMapping(County, co_shp, co_mapping, transform=False, unique='name')\n        self.assertRaises(MissingForeignKey, lm.save, silent=True, strict=True)\n\n        # Now creating the state models so the ForeignKey mapping may work.\n        State.objects.bulk_create([\n            State(name='Colorado'), State(name='Hawaii'), State(name='Texas')\n        ])\n\n        # If a mapping is specified as a collection, all OGR fields that\n        # are not collections will be converted into them.  For example,\n        # a Point column would be converted to MultiPoint. Other things being done\n        # w/the keyword args:\n        #  `transform=False`: Specifies that no transform is to be done; this\n        #    has the effect of ignoring the spatial reference check (because the\n        #    county shapefile does not have implicit spatial reference info).\n        #\n        #  `unique='name'`: Creates models on the condition that they have\n        #    unique county names; geometries from each feature however will be\n        #    appended to the geometry collection of the unique model.  Thus,\n        #    all of the various islands in Honolulu county will be in in one\n        #    database record with a MULTIPOLYGON type.\n        lm = LayerMapping(County, co_shp, co_mapping, transform=False, unique='name')\n        lm.save(silent=True, strict=True)\n\n        # A reference that doesn't use the unique keyword; a new database record will\n        # created for each polygon.\n        lm = LayerMapping(CountyFeat, co_shp, cofeat_mapping, transform=False)\n        lm.save(silent=True, strict=True)\n\n        # The county helper is called to ensure integrity of County models.\n        self.county_helper()\n\n    def test_test_fid_range_step(self):\n        \"Tests the `fid_range` keyword and the `step` keyword of .save().\"\n        # Function for clearing out all the counties before testing.\n        def clear_counties(): County.objects.all().delete()\n\n        State.objects.bulk_create([\n            State(name='Colorado'), State(name='Hawaii'), State(name='Texas')\n        ])\n\n        # Initializing the LayerMapping object to use in these tests.\n        lm = LayerMapping(County, co_shp, co_mapping, transform=False, unique='name')\n\n        # Bad feature id ranges should raise a type error.\n        bad_ranges = (5.0, 'foo', co_shp)\n        for bad in bad_ranges:\n            self.assertRaises(TypeError, lm.save, fid_range=bad)\n\n        # Step keyword should not be allowed w/`fid_range`.\n        fr = (3, 5) # layer[3:5]\n        self.assertRaises(LayerMapError, lm.save, fid_range=fr, step=10)\n        lm.save(fid_range=fr)\n\n        # Features IDs 3 & 4 are for Galveston County, Texas -- only\n        # one model is returned because the `unique` keyword was set.\n        qs = County.objects.all()\n        self.assertEqual(1, qs.count())\n        self.assertEqual('Galveston', qs[0].name)\n\n        # Features IDs 5 and beyond for Honolulu County, Hawaii, and\n        # FID 0 is for Pueblo County, Colorado.\n        clear_counties()\n        lm.save(fid_range=slice(5, None), silent=True, strict=True) # layer[5:]\n        lm.save(fid_range=slice(None, 1), silent=True, strict=True) # layer[:1]\n\n        # Only Pueblo & Honolulu counties should be present because of\n        # the `unique` keyword.  Have to set `order_by` on this QuerySet\n        # or else MySQL will return a different ordering than the other dbs.\n        qs = County.objects.order_by('name')\n        self.assertEqual(2, qs.count())\n        hi, co = tuple(qs)\n        hi_idx, co_idx = tuple(map(NAMES.index, ('Honolulu', 'Pueblo')))\n        self.assertEqual('Pueblo', co.name)\n        self.assertEqual(NUMS[co_idx], len(co.mpoly))\n        self.assertEqual('Honolulu', hi.name)\n        self.assertEqual(NUMS[hi_idx], len(hi.mpoly))\n\n        # Testing the `step` keyword -- should get the same counties\n        # regardless of we use a step that divides equally, that is odd,\n        # or that is larger than the dataset.\n        for st in (4,7,1000):\n            clear_counties()\n            lm.save(step=st, strict=True)\n            self.county_helper(county_feat=False)\n\n    def test_model_inheritance(self):\n        \"Tests LayerMapping on inherited models.  See #12093.\"\n        icity_mapping = {'name' : 'Name',\n                         'population' : 'Population',\n                         'density' : 'Density',\n                         'point' : 'POINT',\n                         'dt' : 'Created',\n                         }\n\n        # Parent model has geometry field.\n        lm1 = LayerMapping(ICity1, city_shp, icity_mapping)\n        lm1.save()\n\n        # Grandparent has geometry field.\n        lm2 = LayerMapping(ICity2, city_shp, icity_mapping)\n        lm2.save()\n\n        self.assertEqual(6, ICity1.objects.count())\n        self.assertEqual(3, ICity2.objects.count())\n\n    def test_invalid_layer(self):\n        \"Tests LayerMapping on invalid geometries.  See #15378.\"\n        invalid_mapping = {'point': 'POINT'}\n        lm = LayerMapping(Invalid, invalid_shp, invalid_mapping,\n                          source_srs=4326)\n        lm.save(silent=True)\n\n    def test_textfield(self):\n        \"Tests that String content fits also in a TextField\"\n        mapping = copy(city_mapping)\n        mapping['name_txt'] = 'Name'\n        lm = LayerMapping(City, city_shp, mapping)\n        lm.save(silent=True, strict=True)\n        self.assertEqual(City.objects.count(), 3)\n        self.assertEqual(City.objects.all().order_by('name_txt')[0].name_txt, \"Houston\")\n\n    def test_encoded_name(self):\n        \"\"\" Test a layer containing utf-8-encoded name \"\"\"\n        city_shp = os.path.join(shp_path, 'ch-city', 'ch-city.shp')\n        lm = LayerMapping(City, city_shp, city_mapping)\n        lm.save(silent=True, strict=True)\n        self.assertEqual(City.objects.count(), 1)\n        self.assertEqual(City.objects.all()[0].name, \"Zürich\")\n\nclass OtherRouter(object):\n    def db_for_read(self, model, **hints):\n        return 'other'\n\n    def db_for_write(self, model, **hints):\n        return self.db_for_read(model, **hints)\n\n    def allow_relation(self, obj1, obj2, **hints):\n        return None\n\n    def allow_syncdb(self, db, model):\n        return True\n\n\nclass LayerMapRouterTest(TestCase):\n\n    def setUp(self):\n        self.old_routers = router.routers\n        router.routers = [OtherRouter()]\n\n    def tearDown(self):\n        router.routers = self.old_routers\n\n    @unittest.skipUnless(len(settings.DATABASES) > 1, 'multiple databases required')\n    def test_layermapping_default_db(self):\n        lm = LayerMapping(City, city_shp, city_mapping)\n        self.assertEqual(lm.using, 'other')\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/tests/relatedapp/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/tests/relatedapp/models.py",
    "content": "from django.contrib.gis.db import models\nfrom django.contrib.localflavor.us.models import USStateField\nfrom django.utils.encoding import python_2_unicode_compatible\n\n@python_2_unicode_compatible\nclass Location(models.Model):\n    point = models.PointField()\n    objects = models.GeoManager()\n    def __str__(self): return self.point.wkt\n\n@python_2_unicode_compatible\nclass City(models.Model):\n    name = models.CharField(max_length=50)\n    state = USStateField()\n    location = models.ForeignKey(Location)\n    objects = models.GeoManager()\n    def __str__(self): return self.name\n\nclass AugmentedLocation(Location):\n    extra_text = models.TextField(blank=True)\n    objects = models.GeoManager()\n\nclass DirectoryEntry(models.Model):\n    listing_text = models.CharField(max_length=50)\n    location = models.ForeignKey(AugmentedLocation)\n    objects = models.GeoManager()\n\n@python_2_unicode_compatible\nclass Parcel(models.Model):\n    name = models.CharField(max_length=30)\n    city = models.ForeignKey(City)\n    center1 = models.PointField()\n    # Throwing a curveball w/`db_column` here.\n    center2 = models.PointField(srid=2276, db_column='mycenter')\n    border1 = models.PolygonField()\n    border2 = models.PolygonField(srid=2276)\n    objects = models.GeoManager()\n    def __str__(self): return self.name\n\n# These use the GeoManager but do not have any geographic fields.\nclass Author(models.Model):\n    name = models.CharField(max_length=100)\n    dob = models.DateField()\n    objects = models.GeoManager()\n\nclass Article(models.Model):\n    title = models.CharField(max_length=100)\n    author = models.ForeignKey(Author, unique=True)\n    objects = models.GeoManager()\n\nclass Book(models.Model):\n    title = models.CharField(max_length=100)\n    author = models.ForeignKey(Author, related_name='books', null=True)\n    objects = models.GeoManager()\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/tests/relatedapp/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom datetime import date\n\nfrom django.contrib.gis.geos import GEOSGeometry, Point, MultiPoint\nfrom django.contrib.gis.db.models import Collect, Count, Extent, F, Union\nfrom django.contrib.gis.geometry.backend import Geometry\nfrom django.contrib.gis.tests.utils import mysql, oracle, no_mysql, no_oracle, no_spatialite\nfrom django.test import TestCase\n\nfrom .models import City, Location, DirectoryEntry, Parcel, Book, Author, Article\n\n\nclass RelatedGeoModelTest(TestCase):\n\n    def test02_select_related(self):\n        \"Testing `select_related` on geographic models (see #7126).\"\n        qs1 = City.objects.all()\n        qs2 = City.objects.select_related()\n        qs3 = City.objects.select_related('location')\n\n        # Reference data for what's in the fixtures.\n        cities = (\n            ('Aurora', 'TX', -97.516111, 33.058333),\n            ('Roswell', 'NM', -104.528056, 33.387222),\n            ('Kecksburg', 'PA',  -79.460734, 40.18476),\n        )\n\n        for qs in (qs1, qs2, qs3):\n            for ref, c in zip(cities, qs):\n                nm, st, lon, lat = ref\n                self.assertEqual(nm, c.name)\n                self.assertEqual(st, c.state)\n                self.assertEqual(Point(lon, lat), c.location.point)\n\n    @no_mysql\n    def test03_transform_related(self):\n        \"Testing the `transform` GeoQuerySet method on related geographic models.\"\n        # All the transformations are to state plane coordinate systems using\n        # US Survey Feet (thus a tolerance of 0 implies error w/in 1 survey foot).\n        tol = 0\n\n        def check_pnt(ref, pnt):\n            self.assertAlmostEqual(ref.x, pnt.x, tol)\n            self.assertAlmostEqual(ref.y, pnt.y, tol)\n            self.assertEqual(ref.srid, pnt.srid)\n\n        # Each city transformed to the SRID of their state plane coordinate system.\n        transformed = (('Kecksburg', 2272, 'POINT(1490553.98959621 314792.131023984)'),\n                       ('Roswell', 2257, 'POINT(481902.189077221 868477.766629735)'),\n                       ('Aurora', 2276, 'POINT(2269923.2484839 7069381.28722222)'),\n                       )\n\n        for name, srid, wkt in transformed:\n            # Doing this implicitly sets `select_related` select the location.\n            # TODO: Fix why this breaks on Oracle.\n            qs = list(City.objects.filter(name=name).transform(srid, field_name='location__point'))\n            check_pnt(GEOSGeometry(wkt, srid), qs[0].location.point)\n\n    @no_mysql\n    @no_spatialite\n    def test04a_related_extent_aggregate(self):\n        \"Testing the `extent` GeoQuerySet aggregates on related geographic models.\"\n        # This combines the Extent and Union aggregates into one query\n        aggs = City.objects.aggregate(Extent('location__point'))\n\n        # One for all locations, one that excludes New Mexico (Roswell).\n        all_extent = (-104.528056, 29.763374, -79.460734, 40.18476)\n        txpa_extent = (-97.516111, 29.763374, -79.460734, 40.18476)\n        e1 = City.objects.extent(field_name='location__point')\n        e2 = City.objects.exclude(state='NM').extent(field_name='location__point')\n        e3 = aggs['location__point__extent']\n\n        # The tolerance value is to four decimal places because of differences\n        # between the Oracle and PostGIS spatial backends on the extent calculation.\n        tol = 4\n        for ref, e in [(all_extent, e1), (txpa_extent, e2), (all_extent, e3)]:\n            for ref_val, e_val in zip(ref, e): self.assertAlmostEqual(ref_val, e_val, tol)\n\n    @no_mysql\n    def test04b_related_union_aggregate(self):\n        \"Testing the `unionagg` GeoQuerySet aggregates on related geographic models.\"\n        # This combines the Extent and Union aggregates into one query\n        aggs = City.objects.aggregate(Union('location__point'))\n\n        # These are the points that are components of the aggregate geographic\n        # union that is returned.  Each point # corresponds to City PK.\n        p1 = Point(-104.528056, 33.387222)\n        p2 = Point(-97.516111, 33.058333)\n        p3 = Point(-79.460734, 40.18476)\n        p4 = Point(-96.801611, 32.782057)\n        p5 = Point(-95.363151, 29.763374)\n\n        # Creating the reference union geometry depending on the spatial backend,\n        # as Oracle will have a different internal ordering of the component\n        # geometries than PostGIS.  The second union aggregate is for a union\n        # query that includes limiting information in the WHERE clause (in other\n        # words a `.filter()` precedes the call to `.unionagg()`).\n        if oracle:\n            ref_u1 = MultiPoint(p4, p5, p3, p1, p2, srid=4326)\n            ref_u2 = MultiPoint(p3, p2, srid=4326)\n        else:\n            # Looks like PostGIS points by longitude value.\n            ref_u1 = MultiPoint(p1, p2, p4, p5, p3, srid=4326)\n            ref_u2 = MultiPoint(p2, p3, srid=4326)\n\n        u1 = City.objects.unionagg(field_name='location__point')\n        u2 = City.objects.exclude(name__in=('Roswell', 'Houston', 'Dallas', 'Fort Worth')).unionagg(field_name='location__point')\n        u3 = aggs['location__point__union']\n\n        self.assertEqual(ref_u1, u1)\n        self.assertEqual(ref_u2, u2)\n        self.assertEqual(ref_u1, u3)\n\n    def test05_select_related_fk_to_subclass(self):\n        \"Testing that calling select_related on a query over a model with an FK to a model subclass works\"\n        # Regression test for #9752.\n        l = list(DirectoryEntry.objects.all().select_related())\n\n    def test06_f_expressions(self):\n        \"Testing F() expressions on GeometryFields.\"\n        # Constructing a dummy parcel border and getting the City instance for\n        # assigning the FK.\n        b1 = GEOSGeometry('POLYGON((-97.501205 33.052520,-97.501205 33.052576,-97.501150 33.052576,-97.501150 33.052520,-97.501205 33.052520))', srid=4326)\n        pcity = City.objects.get(name='Aurora')\n\n        # First parcel has incorrect center point that is equal to the City;\n        # it also has a second border that is different from the first as a\n        # 100ft buffer around the City.\n        c1 = pcity.location.point\n        c2 = c1.transform(2276, clone=True)\n        b2 = c2.buffer(100)\n        p1 = Parcel.objects.create(name='P1', city=pcity, center1=c1, center2=c2, border1=b1, border2=b2)\n\n        # Now creating a second Parcel where the borders are the same, just\n        # in different coordinate systems.  The center points are also the\n        # same (but in different coordinate systems), and this time they\n        # actually correspond to the centroid of the border.\n        c1 = b1.centroid\n        c2 = c1.transform(2276, clone=True)\n        p2 = Parcel.objects.create(name='P2', city=pcity, center1=c1, center2=c2, border1=b1, border2=b1)\n\n        # Should return the second Parcel, which has the center within the\n        # border.\n        qs = Parcel.objects.filter(center1__within=F('border1'))\n        self.assertEqual(1, len(qs))\n        self.assertEqual('P2', qs[0].name)\n\n        if not mysql:\n            # This time center2 is in a different coordinate system and needs\n            # to be wrapped in transformation SQL.\n            qs = Parcel.objects.filter(center2__within=F('border1'))\n            self.assertEqual(1, len(qs))\n            self.assertEqual('P2', qs[0].name)\n\n        # Should return the first Parcel, which has the center point equal\n        # to the point in the City ForeignKey.\n        qs = Parcel.objects.filter(center1=F('city__location__point'))\n        self.assertEqual(1, len(qs))\n        self.assertEqual('P1', qs[0].name)\n\n        if not mysql:\n            # This time the city column should be wrapped in transformation SQL.\n            qs = Parcel.objects.filter(border2__contains=F('city__location__point'))\n            self.assertEqual(1, len(qs))\n            self.assertEqual('P1', qs[0].name)\n\n    def test07_values(self):\n        \"Testing values() and values_list() and GeoQuerySets.\"\n        # GeoQuerySet and GeoValuesQuerySet, and GeoValuesListQuerySet respectively.\n        gqs = Location.objects.all()\n        gvqs = Location.objects.values()\n        gvlqs = Location.objects.values_list()\n\n        # Incrementing through each of the models, dictionaries, and tuples\n        # returned by the different types of GeoQuerySets.\n        for m, d, t in zip(gqs, gvqs, gvlqs):\n            # The values should be Geometry objects and not raw strings returned\n            # by the spatial database.\n            self.assertTrue(isinstance(d['point'], Geometry))\n            self.assertTrue(isinstance(t[1], Geometry))\n            self.assertEqual(m.point, d['point'])\n            self.assertEqual(m.point, t[1])\n\n    def test08_defer_only(self):\n        \"Testing defer() and only() on Geographic models.\"\n        qs = Location.objects.all()\n        def_qs = Location.objects.defer('point')\n        for loc, def_loc in zip(qs, def_qs):\n            self.assertEqual(loc.point, def_loc.point)\n\n    def test09_pk_relations(self):\n        \"Ensuring correct primary key column is selected across relations. See #10757.\"\n        # The expected ID values -- notice the last two location IDs\n        # are out of order.  Dallas and Houston have location IDs that differ\n        # from their PKs -- this is done to ensure that the related location\n        # ID column is selected instead of ID column for the city.\n        city_ids = (1, 2, 3, 4, 5)\n        loc_ids = (1, 2, 3, 5, 4)\n        ids_qs = City.objects.order_by('id').values('id', 'location__id')\n        for val_dict, c_id, l_id in zip(ids_qs, city_ids, loc_ids):\n            self.assertEqual(val_dict['id'], c_id)\n            self.assertEqual(val_dict['location__id'], l_id)\n\n    def test10_combine(self):\n        \"Testing the combination of two GeoQuerySets.  See #10807.\"\n        buf1 = City.objects.get(name='Aurora').location.point.buffer(0.1)\n        buf2 = City.objects.get(name='Kecksburg').location.point.buffer(0.1)\n        qs1 = City.objects.filter(location__point__within=buf1)\n        qs2 = City.objects.filter(location__point__within=buf2)\n        combined = qs1 | qs2\n        names = [c.name for c in combined]\n        self.assertEqual(2, len(names))\n        self.assertTrue('Aurora' in names)\n        self.assertTrue('Kecksburg' in names)\n\n    def test11_geoquery_pickle(self):\n        \"Ensuring GeoQuery objects are unpickled correctly.  See #10839.\"\n        import pickle\n        from django.contrib.gis.db.models.sql import GeoQuery\n        qs = City.objects.all()\n        q_str = pickle.dumps(qs.query)\n        q = pickle.loads(q_str)\n        self.assertEqual(GeoQuery, q.__class__)\n\n    # TODO: fix on Oracle -- get the following error because the SQL is ordered\n    # by a geometry object, which Oracle apparently doesn't like:\n    #  ORA-22901: cannot compare nested table or VARRAY or LOB attributes of an object type\n    @no_oracle\n    def test12a_count(self):\n        \"Testing `Count` aggregate use with the `GeoManager` on geo-fields.\"\n        # The City, 'Fort Worth' uses the same location as Dallas.\n        dallas = City.objects.get(name='Dallas')\n\n        # Count annotation should be 2 for the Dallas location now.\n        loc = Location.objects.annotate(num_cities=Count('city')).get(id=dallas.location.id)\n        self.assertEqual(2, loc.num_cities)\n\n    def test12b_count(self):\n        \"Testing `Count` aggregate use with the `GeoManager` on non geo-fields. See #11087.\"\n        # Should only be one author (Trevor Paglen) returned by this query, and\n        # the annotation should have 3 for the number of books, see #11087.\n        # Also testing with a `GeoValuesQuerySet`, see #11489.\n        qs = Author.objects.annotate(num_books=Count('books')).filter(num_books__gt=1)\n        vqs = Author.objects.values('name').annotate(num_books=Count('books')).filter(num_books__gt=1)\n        self.assertEqual(1, len(qs))\n        self.assertEqual(3, qs[0].num_books)\n        self.assertEqual(1, len(vqs))\n        self.assertEqual(3, vqs[0]['num_books'])\n\n    def test13c_count(self):\n        \"Testing `Count` aggregate with `.values()`.  See #15305.\"\n        qs = Location.objects.filter(id=5).annotate(num_cities=Count('city')).values('id', 'point', 'num_cities')\n        self.assertEqual(1, len(qs))\n        self.assertEqual(2, qs[0]['num_cities'])\n        self.assertTrue(isinstance(qs[0]['point'], GEOSGeometry))\n\n    # TODO: The phantom model does appear on Oracle.\n    @no_oracle\n    def test13_select_related_null_fk(self):\n        \"Testing `select_related` on a nullable ForeignKey via `GeoManager`. See #11381.\"\n        no_author = Book.objects.create(title='Without Author')\n        b = Book.objects.select_related('author').get(title='Without Author')\n        # Should be `None`, and not a 'dummy' model.\n        self.assertEqual(None, b.author)\n\n    @no_mysql\n    @no_oracle\n    @no_spatialite\n    def test14_collect(self):\n        \"Testing the `collect` GeoQuerySet method and `Collect` aggregate.\"\n        # Reference query:\n        # SELECT AsText(ST_Collect(\"relatedapp_location\".\"point\")) FROM \"relatedapp_city\" LEFT OUTER JOIN\n        #    \"relatedapp_location\" ON (\"relatedapp_city\".\"location_id\" = \"relatedapp_location\".\"id\")\n        #    WHERE \"relatedapp_city\".\"state\" = 'TX';\n        ref_geom = GEOSGeometry('MULTIPOINT(-97.516111 33.058333,-96.801611 32.782057,-95.363151 29.763374,-96.801611 32.782057)')\n\n        c1 = City.objects.filter(state='TX').collect(field_name='location__point')\n        c2 = City.objects.filter(state='TX').aggregate(Collect('location__point'))['location__point__collect']\n\n        for coll in (c1, c2):\n            # Even though Dallas and Ft. Worth share same point, Collect doesn't\n            # consolidate -- that's why 4 points in MultiPoint.\n            self.assertEqual(4, len(coll))\n            self.assertEqual(ref_geom, coll)\n\n    def test15_invalid_select_related(self):\n        \"Testing doing select_related on the related name manager of a unique FK. See #13934.\"\n        qs = Article.objects.select_related('author__article')\n        # This triggers TypeError when `get_default_columns` has no `local_only`\n        # keyword.  The TypeError is swallowed if QuerySet is actually\n        # evaluated as list generation swallows TypeError in CPython.\n        sql = str(qs.query)\n\n    def test16_annotated_date_queryset(self):\n        \"Ensure annotated date querysets work if spatial backend is used.  See #14648.\"\n        birth_years = [dt.year for dt in\n                       list(Author.objects.annotate(num_books=Count('books')).dates('dob', 'year'))]\n        birth_years.sort()\n        self.assertEqual([1950, 1974], birth_years)\n\n    # TODO: Related tests for KML, GML, and distance lookups.\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/tests/test_geoforms.py",
    "content": "from django.forms import ValidationError\nfrom django.contrib.gis.gdal import HAS_GDAL\nfrom django.contrib.gis.tests.utils import HAS_SPATIALREFSYS\nfrom django.utils import unittest\n\n\nif HAS_SPATIALREFSYS:\n    from django.contrib.gis import forms\n    from django.contrib.gis.geos import GEOSGeometry\n\n@unittest.skipUnless(HAS_GDAL and HAS_SPATIALREFSYS, \"GeometryFieldTest needs gdal support and a spatial database\")\nclass GeometryFieldTest(unittest.TestCase):\n\n    def test00_init(self):\n        \"Testing GeometryField initialization with defaults.\"\n        fld = forms.GeometryField()\n        for bad_default in ('blah', 3, 'FoO', None, 0):\n            self.assertRaises(ValidationError, fld.clean, bad_default)\n\n    def test01_srid(self):\n        \"Testing GeometryField with a SRID set.\"\n        # Input that doesn't specify the SRID is assumed to be in the SRID\n        # of the input field.\n        fld = forms.GeometryField(srid=4326)\n        geom = fld.clean('POINT(5 23)')\n        self.assertEqual(4326, geom.srid)\n        # Making the field in a different SRID from that of the geometry, and\n        # asserting it transforms.\n        fld = forms.GeometryField(srid=32140)\n        tol = 0.0000001\n        xform_geom = GEOSGeometry('POINT (951640.547328465 4219369.26171664)', srid=32140)\n        # The cleaned geometry should be transformed to 32140.\n        cleaned_geom = fld.clean('SRID=4326;POINT (-95.363151 29.763374)')\n        self.assertTrue(xform_geom.equals_exact(cleaned_geom, tol))\n\n    def test02_null(self):\n        \"Testing GeometryField's handling of null (None) geometries.\"\n        # Form fields, by default, are required (`required=True`)\n        fld = forms.GeometryField()\n        self.assertRaises(forms.ValidationError, fld.clean, None)\n\n        # Still not allowed if `null=False`.\n        fld = forms.GeometryField(required=False, null=False)\n        self.assertRaises(forms.ValidationError, fld.clean, None)\n\n        # This will clean None as a geometry (See #10660).\n        fld = forms.GeometryField(required=False)\n        self.assertEqual(None, fld.clean(None))\n\n    def test03_geom_type(self):\n        \"Testing GeometryField's handling of different geometry types.\"\n        # By default, all geometry types are allowed.\n        fld = forms.GeometryField()\n        for wkt in ('POINT(5 23)', 'MULTIPOLYGON(((0 0, 0 1, 1 1, 1 0, 0 0)))', 'LINESTRING(0 0, 1 1)'):\n            self.assertEqual(GEOSGeometry(wkt), fld.clean(wkt))\n\n        pnt_fld = forms.GeometryField(geom_type='POINT')\n        self.assertEqual(GEOSGeometry('POINT(5 23)'), pnt_fld.clean('POINT(5 23)'))\n        # a WKT for any other geom_type will be properly transformed by `to_python`\n        self.assertEqual(GEOSGeometry('LINESTRING(0 0, 1 1)'), pnt_fld.to_python('LINESTRING(0 0, 1 1)'))\n        # but rejected by `clean`\n        self.assertRaises(forms.ValidationError, pnt_fld.clean, 'LINESTRING(0 0, 1 1)')\n\n    def test04_to_python(self):\n        \"\"\"\n        Testing to_python returns a correct GEOSGeometry object or\n        a ValidationError\n        \"\"\"\n        fld = forms.GeometryField()\n        # to_python returns the same GEOSGeometry for a WKT\n        for wkt in ('POINT(5 23)', 'MULTIPOLYGON(((0 0, 0 1, 1 1, 1 0, 0 0)))', 'LINESTRING(0 0, 1 1)'):\n            self.assertEqual(GEOSGeometry(wkt), fld.to_python(wkt))\n        # but raises a ValidationError for any other string\n        for wkt in ('POINT(5)', 'MULTI   POLYGON(((0 0, 0 1, 1 1, 1 0, 0 0)))', 'BLAH(0 0, 1 1)'):\n            self.assertRaises(forms.ValidationError, fld.to_python, wkt)\n\n\ndef suite():\n    s = unittest.TestSuite()\n    s.addTest(unittest.makeSuite(GeometryFieldTest))\n    return s\n\ndef run(verbosity=2):\n    unittest.TextTestRunner(verbosity=verbosity).run(suite())\n\nif __name__==\"__main__\":\n    run()\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/tests/test_measure.py",
    "content": "\"\"\"\nDistance and Area objects to allow for sensible and convienient calculation\nand conversions. Here are some tests.\n\"\"\"\n\nfrom django.contrib.gis.measure import Distance, Area, D, A\nfrom django.utils import unittest\n\n\nclass DistanceTest(unittest.TestCase):\n    \"Testing the Distance object\"\n\n    def testInit(self):\n        \"Testing initialisation from valid units\"\n        d = Distance(m=100)\n        self.assertEqual(d.m, 100)\n\n        d1, d2, d3 = D(m=100), D(meter=100), D(metre=100)\n        for d in (d1, d2, d3):\n            self.assertEqual(d.m, 100)\n\n        d = D(nm=100)\n        self.assertEqual(d.m, 185200)\n\n        y1, y2, y3 = D(yd=100), D(yard=100), D(Yard=100)\n        for d in (y1, y2, y3):\n            self.assertEqual(d.yd, 100)\n\n        mm1, mm2 = D(millimeter=1000), D(MiLLiMeTeR=1000)\n        for d in (mm1, mm2):\n            self.assertEqual(d.m, 1.0)\n            self.assertEqual(d.mm, 1000.0)\n\n\n    def testInitInvalid(self):\n        \"Testing initialisation from invalid units\"\n        self.assertRaises(AttributeError, D, banana=100)\n\n    def testAccess(self):\n        \"Testing access in different units\"\n        d = D(m=100)\n        self.assertEqual(d.km, 0.1)\n        self.assertAlmostEqual(d.ft, 328.084, 3)\n\n    def testAccessInvalid(self):\n        \"Testing access in invalid units\"\n        d = D(m=100)\n        self.assertFalse(hasattr(d, 'banana'))\n\n    def testAddition(self):\n        \"Test addition & subtraction\"\n        d1 = D(m=100)\n        d2 = D(m=200)\n\n        d3 = d1 + d2\n        self.assertEqual(d3.m, 300)\n        d3 += d1\n        self.assertEqual(d3.m, 400)\n\n        d4 = d1 - d2\n        self.assertEqual(d4.m, -100)\n        d4 -= d1\n        self.assertEqual(d4.m, -200)\n\n        with self.assertRaises(TypeError):\n            d5 = d1 + 1\n            self.fail('Distance + number should raise TypeError')\n\n        with self.assertRaises(TypeError):\n            d5 = d1 - 1\n            self.fail('Distance - number should raise TypeError')\n\n        with self.assertRaises(TypeError):\n            d1 += 1\n            self.fail('Distance += number should raise TypeError')\n\n        with self.assertRaises(TypeError):\n            d1 -= 1\n            self.fail('Distance -= number should raise TypeError')\n\n    def testMultiplication(self):\n        \"Test multiplication & division\"\n        d1 = D(m=100)\n\n        d3 = d1 * 2\n        self.assertEqual(d3.m, 200)\n        d3 = 2 * d1\n        self.assertEqual(d3.m, 200)\n        d3 *= 5\n        self.assertEqual(d3.m, 1000)\n\n        d4 = d1 / 2\n        self.assertEqual(d4.m, 50)\n        d4 /= 5\n        self.assertEqual(d4.m, 10)\n        d5 = d1 / D(m=2)\n        self.assertEqual(d5, 50)\n\n        a5 = d1 * D(m=10)\n        self.assertTrue(isinstance(a5, Area))\n        self.assertEqual(a5.sq_m, 100*10)\n\n        with self.assertRaises(TypeError):\n            d1 *= D(m=1)\n            self.fail('Distance *= Distance should raise TypeError')\n\n        with self.assertRaises(TypeError):\n            d1 /= D(m=1)\n            self.fail('Distance /= Distance should raise TypeError')\n\n    def testUnitConversions(self):\n        \"Testing default units during maths\"\n        d1 = D(m=100)\n        d2 = D(km=1)\n\n        d3 = d1 + d2\n        self.assertEqual(d3._default_unit, 'm')\n        d4 = d2 + d1\n        self.assertEqual(d4._default_unit, 'km')\n        d5 = d1 * 2\n        self.assertEqual(d5._default_unit, 'm')\n        d6 = d1 / 2\n        self.assertEqual(d6._default_unit, 'm')\n\n    def testComparisons(self):\n        \"Testing comparisons\"\n        d1 = D(m=100)\n        d2 = D(km=1)\n        d3 = D(km=0)\n\n        self.assertTrue(d2 > d1)\n        self.assertTrue(d1 == d1)\n        self.assertTrue(d1 < d2)\n        self.assertFalse(d3)\n\n    def testUnitsStr(self):\n        \"Testing conversion to strings\"\n        d1 = D(m=100)\n        d2 = D(km=3.5)\n\n        self.assertEqual(str(d1), '100.0 m')\n        self.assertEqual(str(d2), '3.5 km')\n        self.assertEqual(repr(d1), 'Distance(m=100.0)')\n        self.assertEqual(repr(d2), 'Distance(km=3.5)')\n\n    def testUnitAttName(self):\n        \"Testing the `unit_attname` class method\"\n        unit_tuple = [('Yard', 'yd'), ('Nautical Mile', 'nm'), ('German legal metre', 'german_m'),\n                      ('Indian yard', 'indian_yd'), ('Chain (Sears)', 'chain_sears'), ('Chain', 'chain')]\n        for nm, att in unit_tuple:\n            self.assertEqual(att, D.unit_attname(nm))\n\nclass AreaTest(unittest.TestCase):\n    \"Testing the Area object\"\n\n    def testInit(self):\n        \"Testing initialisation from valid units\"\n        a = Area(sq_m=100)\n        self.assertEqual(a.sq_m, 100)\n\n        a = A(sq_m=100)\n        self.assertEqual(a.sq_m, 100)\n\n        a = A(sq_mi=100)\n        self.assertEqual(a.sq_m, 258998811.0336)\n\n    def testInitInvaliA(self):\n        \"Testing initialisation from invalid units\"\n        self.assertRaises(AttributeError, A, banana=100)\n\n    def testAccess(self):\n        \"Testing access in different units\"\n        a = A(sq_m=100)\n        self.assertEqual(a.sq_km, 0.0001)\n        self.assertAlmostEqual(a.sq_ft, 1076.391, 3)\n\n    def testAccessInvaliA(self):\n        \"Testing access in invalid units\"\n        a = A(sq_m=100)\n        self.assertFalse(hasattr(a, 'banana'))\n\n    def testAddition(self):\n        \"Test addition & subtraction\"\n        a1 = A(sq_m=100)\n        a2 = A(sq_m=200)\n\n        a3 = a1 + a2\n        self.assertEqual(a3.sq_m, 300)\n        a3 += a1\n        self.assertEqual(a3.sq_m, 400)\n\n        a4 = a1 - a2\n        self.assertEqual(a4.sq_m, -100)\n        a4 -= a1\n        self.assertEqual(a4.sq_m, -200)\n\n        with self.assertRaises(TypeError):\n            a5 = a1 + 1\n            self.fail('Area + number should raise TypeError')\n\n        with self.assertRaises(TypeError):\n            a5 = a1 - 1\n            self.fail('Area - number should raise TypeError')\n\n        with self.assertRaises(TypeError):\n            a1 += 1\n            self.fail('Area += number should raise TypeError')\n\n        with self.assertRaises(TypeError):\n            a1 -= 1\n            self.fail('Area -= number should raise TypeError')\n\n    def testMultiplication(self):\n        \"Test multiplication & division\"\n        a1 = A(sq_m=100)\n\n        a3 = a1 * 2\n        self.assertEqual(a3.sq_m, 200)\n        a3 = 2 * a1\n        self.assertEqual(a3.sq_m, 200)\n        a3 *= 5\n        self.assertEqual(a3.sq_m, 1000)\n\n        a4 = a1 / 2\n        self.assertEqual(a4.sq_m, 50)\n        a4 /= 5\n        self.assertEqual(a4.sq_m, 10)\n\n        with self.assertRaises(TypeError):\n            a5 = a1 * A(sq_m=1)\n            self.fail('Area * Area should raise TypeError')\n\n        with self.assertRaises(TypeError):\n            a1 *= A(sq_m=1)\n            self.fail('Area *= Area should raise TypeError')\n\n        with self.assertRaises(TypeError):\n            a5 = a1 / A(sq_m=1)\n            self.fail('Area / Area should raise TypeError')\n\n        with self.assertRaises(TypeError):\n            a1 /= A(sq_m=1)\n            self.fail('Area /= Area should raise TypeError')\n\n    def testUnitConversions(self):\n        \"Testing default units during maths\"\n        a1 = A(sq_m=100)\n        a2 = A(sq_km=1)\n\n        a3 = a1 + a2\n        self.assertEqual(a3._default_unit, 'sq_m')\n        a4 = a2 + a1\n        self.assertEqual(a4._default_unit, 'sq_km')\n        a5 = a1 * 2\n        self.assertEqual(a5._default_unit, 'sq_m')\n        a6 = a1 / 2\n        self.assertEqual(a6._default_unit, 'sq_m')\n\n    def testComparisons(self):\n        \"Testing comparisons\"\n        a1 = A(sq_m=100)\n        a2 = A(sq_km=1)\n        a3 = A(sq_km=0)\n\n        self.assertTrue(a2 > a1)\n        self.assertTrue(a1 == a1)\n        self.assertTrue(a1 < a2)\n        self.assertFalse(a3)\n\n    def testUnitsStr(self):\n        \"Testing conversion to strings\"\n        a1 = A(sq_m=100)\n        a2 = A(sq_km=3.5)\n\n        self.assertEqual(str(a1), '100.0 sq_m')\n        self.assertEqual(str(a2), '3.5 sq_km')\n        self.assertEqual(repr(a1), 'Area(sq_m=100.0)')\n        self.assertEqual(repr(a2), 'Area(sq_km=3.5)')\n\ndef suite():\n    s = unittest.TestSuite()\n    s.addTest(unittest.makeSuite(DistanceTest))\n    s.addTest(unittest.makeSuite(AreaTest))\n    return s\n\ndef run(verbosity=2):\n    unittest.TextTestRunner(verbosity=verbosity).run(suite())\n\nif __name__==\"__main__\":\n    run()\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/tests/test_spatialrefsys.py",
    "content": "from django.db import connection\nfrom django.contrib.gis.gdal import HAS_GDAL\nfrom django.contrib.gis.tests.utils import (no_mysql, oracle, postgis,\n    spatialite, HAS_SPATIALREFSYS, SpatialRefSys)\nfrom django.utils import unittest\n\n\ntest_srs = ({'srid' : 4326,\n             'auth_name' : ('EPSG', True),\n             'auth_srid' : 4326,\n             # Only the beginning, because there are differences depending on installed libs\n             'srtext' : 'GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\"',\n             'proj4' : ['+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs ',\n                        # +ellps=WGS84 has been removed in the 4326 proj string in proj-4.8\n                        '+proj=longlat +datum=WGS84 +no_defs '],\n             'spheroid' : 'WGS 84', 'name' : 'WGS 84',\n             'geographic' : True, 'projected' : False, 'spatialite' : True,\n             'ellipsoid' : (6378137.0, 6356752.3, 298.257223563), # From proj's \"cs2cs -le\" and Wikipedia (semi-minor only)\n             'eprec' : (1, 1, 9),\n             },\n            {'srid' : 32140,\n             'auth_name' : ('EPSG', False),\n             'auth_srid' : 32140,\n             'srtext' : 'PROJCS[\"NAD83 / Texas South Central\",GEOGCS[\"NAD83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\"',\n             'proj4' : ['+proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=4000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs ',\n                        '+proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=4000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs '],\n             'spheroid' : 'GRS 1980', 'name' : 'NAD83 / Texas South Central',\n             'geographic' : False, 'projected' : True, 'spatialite' : False,\n             'ellipsoid' : (6378137.0, 6356752.31414, 298.257222101), # From proj's \"cs2cs -le\" and Wikipedia (semi-minor only)\n             'eprec' : (1, 5, 10),\n             },\n            )\n\n@unittest.skipUnless(HAS_GDAL and HAS_SPATIALREFSYS,\n    \"SpatialRefSysTest needs gdal support and a spatial database\")\nclass SpatialRefSysTest(unittest.TestCase):\n\n    @no_mysql\n    def test01_retrieve(self):\n        \"Testing retrieval of SpatialRefSys model objects.\"\n        for sd in test_srs:\n            srs = SpatialRefSys.objects.get(srid=sd['srid'])\n            self.assertEqual(sd['srid'], srs.srid)\n\n            # Some of the authority names are borked on Oracle, e.g., SRID=32140.\n            #  also, Oracle Spatial seems to add extraneous info to fields, hence the\n            #  the testing with the 'startswith' flag.\n            auth_name, oracle_flag = sd['auth_name']\n            if postgis or (oracle and oracle_flag):\n                self.assertEqual(True, srs.auth_name.startswith(auth_name))\n\n            self.assertEqual(sd['auth_srid'], srs.auth_srid)\n\n            # No proj.4 and different srtext on oracle backends :(\n            if postgis:\n                self.assertTrue(srs.wkt.startswith(sd['srtext']))\n                self.assertTrue(srs.proj4text in sd['proj4'])\n\n    @no_mysql\n    def test02_osr(self):\n        \"Testing getting OSR objects from SpatialRefSys model objects.\"\n        for sd in test_srs:\n            sr = SpatialRefSys.objects.get(srid=sd['srid'])\n            self.assertEqual(True, sr.spheroid.startswith(sd['spheroid']))\n            self.assertEqual(sd['geographic'], sr.geographic)\n            self.assertEqual(sd['projected'], sr.projected)\n\n            if not (spatialite and not sd['spatialite']):\n                # Can't get 'NAD83 / Texas South Central' from PROJ.4 string\n                # on SpatiaLite\n                self.assertEqual(True, sr.name.startswith(sd['name']))\n\n            # Testing the SpatialReference object directly.\n            if postgis or spatialite:\n                srs = sr.srs\n                self.assertTrue(srs.proj4 in sd['proj4'])\n                # No `srtext` field in the `spatial_ref_sys` table in SpatiaLite\n                if not spatialite:\n                    self.assertTrue(srs.wkt.startswith(sd['srtext']))\n\n    @no_mysql\n    def test03_ellipsoid(self):\n        \"Testing the ellipsoid property.\"\n        for sd in test_srs:\n            # Getting the ellipsoid and precision parameters.\n            ellps1 = sd['ellipsoid']\n            prec = sd['eprec']\n\n            # Getting our spatial reference and its ellipsoid\n            srs = SpatialRefSys.objects.get(srid=sd['srid'])\n            ellps2 = srs.ellipsoid\n\n            for i in range(3):\n                param1 = ellps1[i]\n                param2 = ellps2[i]\n                self.assertAlmostEqual(ellps1[i], ellps2[i], prec[i])\n\ndef suite():\n    s = unittest.TestSuite()\n    s.addTest(unittest.makeSuite(SpatialRefSysTest))\n    return s\n\ndef run(verbosity=2):\n    unittest.TextTestRunner(verbosity=verbosity).run(suite())\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/tests/utils.py",
    "content": "from django.conf import settings\nfrom django.db import DEFAULT_DB_ALIAS\n\n# function that will pass a test.\ndef pass_test(*args): return\n\ndef no_backend(test_func, backend):\n    \"Use this decorator to disable test on specified backend.\"\n    if settings.DATABASES[DEFAULT_DB_ALIAS]['ENGINE'].rsplit('.')[-1] == backend:\n        return pass_test\n    else:\n        return test_func\n\n# Decorators to disable entire test functions for specific\n# spatial backends.\ndef no_oracle(func): return no_backend(func, 'oracle')\ndef no_postgis(func): return no_backend(func, 'postgis')\ndef no_mysql(func): return no_backend(func, 'mysql')\ndef no_spatialite(func): return no_backend(func, 'spatialite')\n\n# Shortcut booleans to omit only portions of tests.\n_default_db = settings.DATABASES[DEFAULT_DB_ALIAS]['ENGINE'].rsplit('.')[-1]\noracle  = _default_db == 'oracle'\npostgis = _default_db == 'postgis'\nmysql   = _default_db == 'mysql'\nspatialite = _default_db == 'spatialite'\n\nHAS_SPATIALREFSYS = True\nif oracle and 'gis' in settings.DATABASES[DEFAULT_DB_ALIAS]['ENGINE']:\n    from django.contrib.gis.db.backends.oracle.models import SpatialRefSys\nelif postgis:\n    from django.contrib.gis.db.backends.postgis.models import SpatialRefSys\nelif spatialite:\n    from django.contrib.gis.db.backends.spatialite.models import SpatialRefSys\nelse:\n    HAS_SPATIALREFSYS = False\n    SpatialRefSys = None\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/utils/__init__.py",
    "content": "\"\"\"\n This module contains useful utilities for GeoDjango.\n\"\"\"\n# Importing the utilities that depend on GDAL, if available.\nfrom django.contrib.gis.gdal import HAS_GDAL\nif HAS_GDAL:\n    from django.contrib.gis.utils.ogrinfo import ogrinfo, sample\n    from django.contrib.gis.utils.ogrinspect import mapping, ogrinspect\n    from django.contrib.gis.utils.srs import add_postgis_srs, add_srs_entry\n    try:\n        # LayerMapping requires DJANGO_SETTINGS_MODULE to be set,\n        # so this needs to be in try/except.\n        from django.contrib.gis.utils.layermapping import LayerMapping, LayerMapError\n    except:\n        pass\n\n# GeoIP now lives in `django.contrib.gis.geoip`; this shortcut will be\n# removed in Django 1.6.\nfrom django.contrib.gis.utils import geoip\nHAS_GEOIP = geoip.HAS_GEOIP\nif HAS_GEOIP:\n    GeoIP = geoip.GeoIP\n    GeoIPException = geoip.GeoIPException\n\nfrom django.contrib.gis.utils.wkt import precision_wkt\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/utils/geoip.py",
    "content": "import warnings\n\nfrom django.contrib.gis import geoip\nHAS_GEOIP = geoip.HAS_GEOIP\nif HAS_GEOIP:\n    BaseGeoIP = geoip.GeoIP\n    GeoIPException = geoip.GeoIPException\n\n    class GeoIP(BaseGeoIP):\n        def __init__(self, *args, **kwargs):\n            warnings.warn('GeoIP class has been moved to `django.contrib.gis.geoip`, and '\n                          'this shortcut will disappear in Django v1.6.',\n                          DeprecationWarning, stacklevel=2)\n            super(GeoIP, self).__init__(*args, **kwargs)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/utils/layermapping.py",
    "content": "# LayerMapping -- A Django Model/OGR Layer Mapping Utility\n\"\"\"\n The LayerMapping class provides a way to map the contents of OGR\n vector files (e.g. SHP files) to Geographic-enabled Django models.\n\n For more information, please consult the GeoDjango documentation:\n   http://geodjango.org/docs/layermapping.html\n\"\"\"\nimport sys\nfrom decimal import Decimal\nfrom django.core.exceptions import ObjectDoesNotExist\nfrom django.db import connections, router\nfrom django.contrib.gis.db.models import GeometryField\nfrom django.contrib.gis.gdal import (CoordTransform, DataSource,\n    OGRException, OGRGeometry, OGRGeomType, SpatialReference)\nfrom django.contrib.gis.gdal.field import (\n    OFTDate, OFTDateTime, OFTInteger, OFTReal, OFTString, OFTTime)\nfrom django.db import models, transaction\nfrom django.contrib.localflavor.us.models import USStateField\nfrom django.utils import six\nfrom django.utils.encoding import force_text\n\n\n# LayerMapping exceptions.\nclass LayerMapError(Exception): pass\nclass InvalidString(LayerMapError): pass\nclass InvalidDecimal(LayerMapError): pass\nclass InvalidInteger(LayerMapError): pass\nclass MissingForeignKey(LayerMapError): pass\n\nclass LayerMapping(object):\n    \"A class that maps OGR Layers to GeoDjango Models.\"\n\n    # Acceptable 'base' types for a multi-geometry type.\n    MULTI_TYPES = {1 : OGRGeomType('MultiPoint'),\n                   2 : OGRGeomType('MultiLineString'),\n                   3 : OGRGeomType('MultiPolygon'),\n                   OGRGeomType('Point25D').num : OGRGeomType('MultiPoint25D'),\n                   OGRGeomType('LineString25D').num : OGRGeomType('MultiLineString25D'),\n                   OGRGeomType('Polygon25D').num : OGRGeomType('MultiPolygon25D'),\n                   }\n\n    # Acceptable Django field types and corresponding acceptable OGR\n    # counterparts.\n    FIELD_TYPES = {\n        models.AutoField : OFTInteger,\n        models.IntegerField : (OFTInteger, OFTReal, OFTString),\n        models.FloatField : (OFTInteger, OFTReal),\n        models.DateField : OFTDate,\n        models.DateTimeField : OFTDateTime,\n        models.EmailField : OFTString,\n        models.TimeField : OFTTime,\n        models.DecimalField : (OFTInteger, OFTReal),\n        models.CharField : OFTString,\n        models.SlugField : OFTString,\n        models.TextField : OFTString,\n        models.URLField : OFTString,\n        USStateField : OFTString,\n        models.BigIntegerField : (OFTInteger, OFTReal, OFTString),\n        models.SmallIntegerField : (OFTInteger, OFTReal, OFTString),\n        models.PositiveSmallIntegerField : (OFTInteger, OFTReal, OFTString),\n        }\n\n    # The acceptable transaction modes.\n    TRANSACTION_MODES = {'autocommit' : transaction.autocommit,\n                         'commit_on_success' : transaction.commit_on_success,\n                         }\n\n    def __init__(self, model, data, mapping, layer=0,\n                 source_srs=None, encoding='utf-8',\n                 transaction_mode='commit_on_success',\n                 transform=True, unique=None, using=None):\n        \"\"\"\n        A LayerMapping object is initialized using the given Model (not an instance),\n        a DataSource (or string path to an OGR-supported data file), and a mapping\n        dictionary.  See the module level docstring for more details and keyword\n        argument usage.\n        \"\"\"\n        # Getting the DataSource and the associated Layer.\n        if isinstance(data, six.string_types):\n            self.ds = DataSource(data, encoding=encoding)\n        else:\n            self.ds = data\n        self.layer = self.ds[layer]\n\n        self.using = using if using is not None else router.db_for_write(model)\n        self.spatial_backend = connections[self.using].ops\n\n        # Setting the mapping & model attributes.\n        self.mapping = mapping\n        self.model = model\n\n        # Checking the layer -- intitialization of the object will fail if\n        # things don't check out before hand.\n        self.check_layer()\n\n        # Getting the geometry column associated with the model (an\n        # exception will be raised if there is no geometry column).\n        if self.spatial_backend.mysql:\n            transform = False\n        else:\n            self.geo_field = self.geometry_field()\n\n        # Checking the source spatial reference system, and getting\n        # the coordinate transformation object (unless the `transform`\n        # keyword is set to False)\n        if transform:\n            self.source_srs = self.check_srs(source_srs)\n            self.transform = self.coord_transform()\n        else:\n            self.transform = transform\n\n        # Setting the encoding for OFTString fields, if specified.\n        if encoding:\n            # Making sure the encoding exists, if not a LookupError\n            # exception will be thrown.\n            from codecs import lookup\n            lookup(encoding)\n            self.encoding = encoding\n        else:\n            self.encoding = None\n\n        if unique:\n            self.check_unique(unique)\n            transaction_mode = 'autocommit' # Has to be set to autocommit.\n            self.unique = unique\n        else:\n            self.unique = None\n\n        # Setting the transaction decorator with the function in the\n        # transaction modes dictionary.\n        if transaction_mode in self.TRANSACTION_MODES:\n            self.transaction_decorator = self.TRANSACTION_MODES[transaction_mode]\n            self.transaction_mode = transaction_mode\n        else:\n            raise LayerMapError('Unrecognized transaction mode: %s' % transaction_mode)\n\n    #### Checking routines used during initialization ####\n    def check_fid_range(self, fid_range):\n        \"This checks the `fid_range` keyword.\"\n        if fid_range:\n            if isinstance(fid_range, (tuple, list)):\n                return slice(*fid_range)\n            elif isinstance(fid_range, slice):\n                return fid_range\n            else:\n                raise TypeError\n        else:\n            return None\n\n    def check_layer(self):\n        \"\"\"\n        This checks the Layer metadata, and ensures that it is compatible\n        with the mapping information and model.  Unlike previous revisions,\n        there is no need to increment through each feature in the Layer.\n        \"\"\"\n        # The geometry field of the model is set here.\n        # TODO: Support more than one geometry field / model.  However, this\n        # depends on the GDAL Driver in use.\n        self.geom_field = False\n        self.fields = {}\n\n        # Getting lists of the field names and the field types available in\n        # the OGR Layer.\n        ogr_fields = self.layer.fields\n        ogr_field_types = self.layer.field_types\n\n        # Function for determining if the OGR mapping field is in the Layer.\n        def check_ogr_fld(ogr_map_fld):\n            try:\n                idx = ogr_fields.index(ogr_map_fld)\n            except ValueError:\n                raise LayerMapError('Given mapping OGR field \"%s\" not found in OGR Layer.' % ogr_map_fld)\n            return idx\n\n        # No need to increment through each feature in the model, simply check\n        # the Layer metadata against what was given in the mapping dictionary.\n        for field_name, ogr_name in self.mapping.items():\n            # Ensuring that a corresponding field exists in the model\n            # for the given field name in the mapping.\n            try:\n                model_field = self.model._meta.get_field(field_name)\n            except models.fields.FieldDoesNotExist:\n                raise LayerMapError('Given mapping field \"%s\" not in given Model fields.' % field_name)\n\n            # Getting the string name for the Django field class (e.g., 'PointField').\n            fld_name = model_field.__class__.__name__\n\n            if isinstance(model_field, GeometryField):\n                if self.geom_field:\n                    raise LayerMapError('LayerMapping does not support more than one GeometryField per model.')\n\n                # Getting the coordinate dimension of the geometry field.\n                coord_dim = model_field.dim\n\n                try:\n                    if coord_dim == 3:\n                        gtype = OGRGeomType(ogr_name + '25D')\n                    else:\n                        gtype = OGRGeomType(ogr_name)\n                except OGRException:\n                    raise LayerMapError('Invalid mapping for GeometryField \"%s\".' % field_name)\n\n                # Making sure that the OGR Layer's Geometry is compatible.\n                ltype = self.layer.geom_type\n                if not (ltype.name.startswith(gtype.name) or self.make_multi(ltype, model_field)):\n                    raise LayerMapError('Invalid mapping geometry; model has %s%s, '\n                                        'layer geometry type is %s.' %\n                                        (fld_name, (coord_dim == 3 and '(dim=3)') or '', ltype))\n\n                # Setting the `geom_field` attribute w/the name of the model field\n                # that is a Geometry.  Also setting the coordinate dimension\n                # attribute.\n                self.geom_field = field_name\n                self.coord_dim = coord_dim\n                fields_val = model_field\n            elif isinstance(model_field, models.ForeignKey):\n                if isinstance(ogr_name, dict):\n                    # Is every given related model mapping field in the Layer?\n                    rel_model = model_field.rel.to\n                    for rel_name, ogr_field in ogr_name.items():\n                        idx = check_ogr_fld(ogr_field)\n                        try:\n                            rel_field = rel_model._meta.get_field(rel_name)\n                        except models.fields.FieldDoesNotExist:\n                            raise LayerMapError('ForeignKey mapping field \"%s\" not in %s fields.' %\n                                                (rel_name, rel_model.__class__.__name__))\n                    fields_val = rel_model\n                else:\n                    raise TypeError('ForeignKey mapping must be of dictionary type.')\n            else:\n                # Is the model field type supported by LayerMapping?\n                if not model_field.__class__ in self.FIELD_TYPES:\n                    raise LayerMapError('Django field type \"%s\" has no OGR mapping (yet).' % fld_name)\n\n                # Is the OGR field in the Layer?\n                idx = check_ogr_fld(ogr_name)\n                ogr_field = ogr_field_types[idx]\n\n                # Can the OGR field type be mapped to the Django field type?\n                if not issubclass(ogr_field, self.FIELD_TYPES[model_field.__class__]):\n                    raise LayerMapError('OGR field \"%s\" (of type %s) cannot be mapped to Django %s.' %\n                                        (ogr_field, ogr_field.__name__, fld_name))\n                fields_val = model_field\n\n            self.fields[field_name] = fields_val\n\n    def check_srs(self, source_srs):\n        \"Checks the compatibility of the given spatial reference object.\"\n\n        if isinstance(source_srs, SpatialReference):\n            sr = source_srs\n        elif isinstance(source_srs, self.spatial_backend.spatial_ref_sys()):\n            sr = source_srs.srs\n        elif isinstance(source_srs, (int, six.string_types)):\n            sr = SpatialReference(source_srs)\n        else:\n            # Otherwise just pulling the SpatialReference from the layer\n            sr = self.layer.srs\n\n        if not sr:\n            raise LayerMapError('No source reference system defined.')\n        else:\n            return sr\n\n    def check_unique(self, unique):\n        \"Checks the `unique` keyword parameter -- may be a sequence or string.\"\n        if isinstance(unique, (list, tuple)):\n            # List of fields to determine uniqueness with\n            for attr in unique:\n                if not attr in self.mapping: raise ValueError\n        elif isinstance(unique, six.string_types):\n            # Only a single field passed in.\n            if unique not in self.mapping: raise ValueError\n        else:\n            raise TypeError('Unique keyword argument must be set with a tuple, list, or string.')\n\n    #### Keyword argument retrieval routines ####\n    def feature_kwargs(self, feat):\n        \"\"\"\n        Given an OGR Feature, this will return a dictionary of keyword arguments\n        for constructing the mapped model.\n        \"\"\"\n        # The keyword arguments for model construction.\n        kwargs = {}\n\n        # Incrementing through each model field and OGR field in the\n        # dictionary mapping.\n        for field_name, ogr_name in self.mapping.items():\n            model_field = self.fields[field_name]\n\n            if isinstance(model_field, GeometryField):\n                # Verify OGR geometry.\n                try:\n                    val = self.verify_geom(feat.geom, model_field)\n                except OGRException:\n                    raise LayerMapError('Could not retrieve geometry from feature.')\n            elif isinstance(model_field, models.base.ModelBase):\n                # The related _model_, not a field was passed in -- indicating\n                # another mapping for the related Model.\n                val = self.verify_fk(feat, model_field, ogr_name)\n            else:\n                # Otherwise, verify OGR Field type.\n                val = self.verify_ogr_field(feat[ogr_name], model_field)\n\n            # Setting the keyword arguments for the field name with the\n            # value obtained above.\n            kwargs[field_name] = val\n\n        return kwargs\n\n    def unique_kwargs(self, kwargs):\n        \"\"\"\n        Given the feature keyword arguments (from `feature_kwargs`) this routine\n        will construct and return the uniqueness keyword arguments -- a subset\n        of the feature kwargs.\n        \"\"\"\n        if isinstance(self.unique, six.string_types):\n            return {self.unique : kwargs[self.unique]}\n        else:\n            return dict((fld, kwargs[fld]) for fld in self.unique)\n\n    #### Verification routines used in constructing model keyword arguments. ####\n    def verify_ogr_field(self, ogr_field, model_field):\n        \"\"\"\n        Verifies if the OGR Field contents are acceptable to the Django\n        model field.  If they are, the verified value is returned,\n        otherwise the proper exception is raised.\n        \"\"\"\n        if (isinstance(ogr_field, OFTString) and\n            isinstance(model_field, (models.CharField, models.TextField))):\n            if self.encoding:\n                # The encoding for OGR data sources may be specified here\n                # (e.g., 'cp437' for Census Bureau boundary files).\n                val = force_text(ogr_field.value, self.encoding)\n            else:\n                val = ogr_field.value\n                if model_field.max_length and len(val) > model_field.max_length:\n                    raise InvalidString('%s model field maximum string length is %s, given %s characters.' %\n                                        (model_field.name, model_field.max_length, len(val)))\n        elif isinstance(ogr_field, OFTReal) and isinstance(model_field, models.DecimalField):\n            try:\n                # Creating an instance of the Decimal value to use.\n                d = Decimal(str(ogr_field.value))\n            except:\n                raise InvalidDecimal('Could not construct decimal from: %s' % ogr_field.value)\n\n            # Getting the decimal value as a tuple.\n            dtup = d.as_tuple()\n            digits = dtup[1]\n            d_idx = dtup[2] # index where the decimal is\n\n            # Maximum amount of precision, or digits to the left of the decimal.\n            max_prec = model_field.max_digits - model_field.decimal_places\n\n            # Getting the digits to the left of the decimal place for the\n            # given decimal.\n            if d_idx < 0:\n                n_prec = len(digits[:d_idx])\n            else:\n                n_prec = len(digits) + d_idx\n\n            # If we have more than the maximum digits allowed, then throw an\n            # InvalidDecimal exception.\n            if n_prec > max_prec:\n                raise InvalidDecimal('A DecimalField with max_digits %d, decimal_places %d must round to an absolute value less than 10^%d.' %\n                                     (model_field.max_digits, model_field.decimal_places, max_prec))\n            val = d\n        elif isinstance(ogr_field, (OFTReal, OFTString)) and isinstance(model_field, models.IntegerField):\n            # Attempt to convert any OFTReal and OFTString value to an OFTInteger.\n            try:\n                val = int(ogr_field.value)\n            except:\n                raise InvalidInteger('Could not construct integer from: %s' % ogr_field.value)\n        else:\n            val = ogr_field.value\n        return val\n\n    def verify_fk(self, feat, rel_model, rel_mapping):\n        \"\"\"\n        Given an OGR Feature, the related model and its dictionary mapping,\n        this routine will retrieve the related model for the ForeignKey\n        mapping.\n        \"\"\"\n        # TODO: It is expensive to retrieve a model for every record --\n        #  explore if an efficient mechanism exists for caching related\n        #  ForeignKey models.\n\n        # Constructing and verifying the related model keyword arguments.\n        fk_kwargs = {}\n        for field_name, ogr_name in rel_mapping.items():\n            fk_kwargs[field_name] = self.verify_ogr_field(feat[ogr_name], rel_model._meta.get_field(field_name))\n\n        # Attempting to retrieve and return the related model.\n        try:\n            return rel_model.objects.using(self.using).get(**fk_kwargs)\n        except ObjectDoesNotExist:\n            raise MissingForeignKey('No ForeignKey %s model found with keyword arguments: %s' % (rel_model.__name__, fk_kwargs))\n\n    def verify_geom(self, geom, model_field):\n        \"\"\"\n        Verifies the geometry -- will construct and return a GeometryCollection\n        if necessary (for example if the model field is MultiPolygonField while\n        the mapped shapefile only contains Polygons).\n        \"\"\"\n        # Downgrade a 3D geom to a 2D one, if necessary.\n        if self.coord_dim != geom.coord_dim:\n            geom.coord_dim = self.coord_dim\n\n        if self.make_multi(geom.geom_type, model_field):\n            # Constructing a multi-geometry type to contain the single geometry\n            multi_type = self.MULTI_TYPES[geom.geom_type.num]\n            g = OGRGeometry(multi_type)\n            g.add(geom)\n        else:\n            g = geom\n\n        # Transforming the geometry with our Coordinate Transformation object,\n        # but only if the class variable `transform` is set w/a CoordTransform\n        # object.\n        if self.transform: g.transform(self.transform)\n\n        # Returning the WKT of the geometry.\n        return g.wkt\n\n    #### Other model methods ####\n    def coord_transform(self):\n        \"Returns the coordinate transformation object.\"\n        SpatialRefSys = self.spatial_backend.spatial_ref_sys()\n        try:\n            # Getting the target spatial reference system\n            target_srs = SpatialRefSys.objects.using(self.using).get(srid=self.geo_field.srid).srs\n\n            # Creating the CoordTransform object\n            return CoordTransform(self.source_srs, target_srs)\n        except Exception as msg:\n            raise LayerMapError('Could not translate between the data source and model geometry: %s' % msg)\n\n    def geometry_field(self):\n        \"Returns the GeometryField instance associated with the geographic column.\"\n        # Use the `get_field_by_name` on the model's options so that we\n        # get the correct field instance if there's model inheritance.\n        opts = self.model._meta\n        fld, model, direct, m2m = opts.get_field_by_name(self.geom_field)\n        return fld\n\n    def make_multi(self, geom_type, model_field):\n        \"\"\"\n        Given the OGRGeomType for a geometry and its associated GeometryField,\n        determine whether the geometry should be turned into a GeometryCollection.\n        \"\"\"\n        return (geom_type.num in self.MULTI_TYPES and\n                model_field.__class__.__name__ == 'Multi%s' % geom_type.django)\n\n    def save(self, verbose=False, fid_range=False, step=False,\n             progress=False, silent=False, stream=sys.stdout, strict=False):\n        \"\"\"\n        Saves the contents from the OGR DataSource Layer into the database\n        according to the mapping dictionary given at initialization.\n\n        Keyword Parameters:\n         verbose:\n           If set, information will be printed subsequent to each model save\n           executed on the database.\n\n         fid_range:\n           May be set with a slice or tuple of (begin, end) feature ID's to map\n           from the data source.  In other words, this keyword enables the user\n           to selectively import a subset range of features in the geographic\n           data source.\n\n         step:\n           If set with an integer, transactions will occur at every step\n           interval. For example, if step=1000, a commit would occur after\n           the 1,000th feature, the 2,000th feature etc.\n\n         progress:\n           When this keyword is set, status information will be printed giving\n           the number of features processed and sucessfully saved.  By default,\n           progress information will pe printed every 1000 features processed,\n           however, this default may be overridden by setting this keyword with an\n           integer for the desired interval.\n\n         stream:\n           Status information will be written to this file handle.  Defaults to\n           using `sys.stdout`, but any object with a `write` method is supported.\n\n         silent:\n           By default, non-fatal error notifications are printed to stdout, but\n           this keyword may be set to disable these notifications.\n\n         strict:\n           Execution of the model mapping will cease upon the first error\n           encountered.  The default behavior is to attempt to continue.\n        \"\"\"\n        # Getting the default Feature ID range.\n        default_range = self.check_fid_range(fid_range)\n\n        # Setting the progress interval, if requested.\n        if progress:\n            if progress is True or not isinstance(progress, int):\n                progress_interval = 1000\n            else:\n                progress_interval = progress\n\n        # Defining the 'real' save method, utilizing the transaction\n        # decorator created during initialization.\n        @self.transaction_decorator\n        def _save(feat_range=default_range, num_feat=0, num_saved=0):\n            if feat_range:\n                layer_iter = self.layer[feat_range]\n            else:\n                layer_iter = self.layer\n\n            for feat in layer_iter:\n                num_feat += 1\n                # Getting the keyword arguments\n                try:\n                    kwargs = self.feature_kwargs(feat)\n                except LayerMapError as msg:\n                    # Something borked the validation\n                    if strict: raise\n                    elif not silent:\n                        stream.write('Ignoring Feature ID %s because: %s\\n' % (feat.fid, msg))\n                else:\n                    # Constructing the model using the keyword args\n                    is_update = False\n                    if self.unique:\n                        # If we want unique models on a particular field, handle the\n                        # geometry appropriately.\n                        try:\n                            # Getting the keyword arguments and retrieving\n                            # the unique model.\n                            u_kwargs = self.unique_kwargs(kwargs)\n                            m = self.model.objects.using(self.using).get(**u_kwargs)\n                            is_update = True\n\n                            # Getting the geometry (in OGR form), creating\n                            # one from the kwargs WKT, adding in additional\n                            # geometries, and update the attribute with the\n                            # just-updated geometry WKT.\n                            geom = getattr(m, self.geom_field).ogr\n                            new = OGRGeometry(kwargs[self.geom_field])\n                            for g in new: geom.add(g)\n                            setattr(m, self.geom_field, geom.wkt)\n                        except ObjectDoesNotExist:\n                            # No unique model exists yet, create.\n                            m = self.model(**kwargs)\n                    else:\n                        m = self.model(**kwargs)\n\n                    try:\n                        # Attempting to save.\n                        m.save(using=self.using)\n                        num_saved += 1\n                        if verbose: stream.write('%s: %s\\n' % (is_update and 'Updated' or 'Saved', m))\n                    except SystemExit:\n                        raise\n                    except Exception as msg:\n                        if self.transaction_mode == 'autocommit':\n                            # Rolling back the transaction so that other model saves\n                            # will work.\n                            transaction.rollback_unless_managed()\n                        if strict:\n                            # Bailing out if the `strict` keyword is set.\n                            if not silent:\n                                stream.write('Failed to save the feature (id: %s) into the model with the keyword arguments:\\n' % feat.fid)\n                                stream.write('%s\\n' % kwargs)\n                            raise\n                        elif not silent:\n                            stream.write('Failed to save %s:\\n %s\\nContinuing\\n' % (kwargs, msg))\n\n                # Printing progress information, if requested.\n                if progress and num_feat % progress_interval == 0:\n                    stream.write('Processed %d features, saved %d ...\\n' % (num_feat, num_saved))\n\n            # Only used for status output purposes -- incremental saving uses the\n            # values returned here.\n            return num_saved, num_feat\n\n        nfeat = self.layer.num_feat\n        if step and isinstance(step, int) and step < nfeat:\n            # Incremental saving is requested at the given interval (step)\n            if default_range:\n                raise LayerMapError('The `step` keyword may not be used in conjunction with the `fid_range` keyword.')\n            beg, num_feat, num_saved = (0, 0, 0)\n            indices = range(step, nfeat, step)\n            n_i = len(indices)\n\n            for i, end in enumerate(indices):\n                # Constructing the slice to use for this step; the last slice is\n                # special (e.g, [100:] instead of [90:100]).\n                if i+1 == n_i: step_slice = slice(beg, None)\n                else: step_slice = slice(beg, end)\n\n                try:\n                    num_feat, num_saved = _save(step_slice, num_feat, num_saved)\n                    beg = end\n                except:\n                    stream.write('%s\\nFailed to save slice: %s\\n' % ('=-' * 20, step_slice))\n                    raise\n        else:\n            # Otherwise, just calling the previously defined _save() function.\n            _save()\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/utils/ogrinfo.py",
    "content": "\"\"\"\nThis module includes some utility functions for inspecting the layout\nof a GDAL data source -- the functionality is analogous to the output\nproduced by the `ogrinfo` utility.\n\"\"\"\n\nfrom django.contrib.gis.gdal import DataSource\nfrom django.contrib.gis.gdal.geometries import GEO_CLASSES\n\ndef ogrinfo(data_source, num_features=10):\n    \"\"\"\n    Walks the available layers in the supplied `data_source`, displaying\n    the fields for the first `num_features` features.\n    \"\"\"\n\n    # Checking the parameters.\n    if isinstance(data_source, str):\n        data_source = DataSource(data_source)\n    elif isinstance(data_source, DataSource):\n        pass\n    else:\n        raise Exception('Data source parameter must be a string or a DataSource object.')\n\n    for i, layer in enumerate(data_source):\n        print(\"data source : %s\" % data_source.name)\n        print(\"==== layer %s\" % i)\n        print(\"  shape type: %s\" % GEO_CLASSES[layer.geom_type.num].__name__)\n        print(\"  # features: %s\" % len(layer))\n        print(\"         srs: %s\" % layer.srs)\n        extent_tup = layer.extent.tuple\n        print(\"      extent: %s - %s\" % (extent_tup[0:2], extent_tup[2:4]))\n        print(\"Displaying the first %s features ====\" % num_features)\n\n        width = max(*map(len,layer.fields))\n        fmt = \" %%%ss: %%s\" % width\n        for j, feature in enumerate(layer[:num_features]):\n            print(\"=== Feature %s\" % j)\n            for fld_name in layer.fields:\n                type_name = feature[fld_name].type_name\n                output = fmt % (fld_name, type_name)\n                val = feature.get(fld_name)\n                if val:\n                    if isinstance(val, str):\n                        val_fmt = ' (\"%s\")'\n                    else:\n                        val_fmt = ' (%s)'\n                    output += val_fmt % val\n                else:\n                    output += ' (None)'\n                print(output)\n\n# For backwards compatibility.\nsample = ogrinfo\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/utils/ogrinspect.py",
    "content": "\"\"\"\nThis module is for inspecting OGR data sources and generating either\nmodels for GeoDjango and/or mapping dictionaries for use with the\n`LayerMapping` utility.\n\"\"\"\nfrom django.utils.six.moves import zip\n# Requires GDAL to use.\nfrom django.contrib.gis.gdal import DataSource\nfrom django.contrib.gis.gdal.field import OFTDate, OFTDateTime, OFTInteger, OFTReal, OFTString, OFTTime\nfrom django.utils import six\n\ndef mapping(data_source, geom_name='geom', layer_key=0, multi_geom=False):\n    \"\"\"\n    Given a DataSource, generates a dictionary that may be used\n    for invoking the LayerMapping utility.\n\n    Keyword Arguments:\n     `geom_name` => The name of the geometry field to use for the model.\n\n     `layer_key` => The key for specifying which layer in the DataSource to use;\n       defaults to 0 (the first layer).  May be an integer index or a string\n       identifier for the layer.\n\n     `multi_geom` => Boolean (default: False) - specify as multigeometry.\n    \"\"\"\n    if isinstance(data_source, six.string_types):\n        # Instantiating the DataSource from the string.\n        data_source = DataSource(data_source)\n    elif isinstance(data_source, DataSource):\n        pass\n    else:\n        raise TypeError('Data source parameter must be a string or a DataSource object.')\n\n    # Creating the dictionary.\n    _mapping = {}\n\n    # Generating the field name for each field in the layer.\n    for field in data_source[layer_key].fields:\n        mfield = field.lower()\n        if mfield[-1:] == '_': mfield += 'field'\n        _mapping[mfield] = field\n    gtype = data_source[layer_key].geom_type\n    if multi_geom and gtype.num in (1, 2, 3): prefix = 'MULTI'\n    else: prefix = ''\n    _mapping[geom_name] = prefix + str(gtype).upper()\n    return _mapping\n\ndef ogrinspect(*args, **kwargs):\n    \"\"\"\n    Given a data source (either a string or a DataSource object) and a string\n    model name this function will generate a GeoDjango model.\n\n    Usage:\n\n    >>> from django.contrib.gis.utils import ogrinspect\n    >>> ogrinspect('/path/to/shapefile.shp','NewModel')\n\n    ...will print model definition to stout\n\n    or put this in a python script and use to redirect the output to a new\n    model like:\n\n    $ python generate_model.py > myapp/models.py\n\n    # generate_model.py\n    from django.contrib.gis.utils import ogrinspect\n    shp_file = 'data/mapping_hacks/world_borders.shp'\n    model_name = 'WorldBorders'\n\n    print(ogrinspect(shp_file, model_name, multi_geom=True, srid=4326,\n                     geom_name='shapes', blank=True))\n\n    Required Arguments\n     `datasource` => string or DataSource object to file pointer\n\n     `model name` => string of name of new model class to create\n\n    Optional Keyword Arguments\n     `geom_name` => For specifying the model name for the Geometry Field.\n       Otherwise will default to `geom`\n\n     `layer_key` => The key for specifying which layer in the DataSource to use;\n       defaults to 0 (the first layer).  May be an integer index or a string\n       identifier for the layer.\n\n     `srid` => The SRID to use for the Geometry Field.  If it can be determined,\n       the SRID of the datasource is used.\n\n     `multi_geom` => Boolean (default: False) - specify as multigeometry.\n\n     `name_field` => String - specifies a field name to return for the\n       `__unicode__` function (which will be generated if specified).\n\n     `imports` => Boolean (default: True) - set to False to omit the\n       `from django.contrib.gis.db import models` code from the\n       autogenerated models thus avoiding duplicated imports when building\n       more than one model by batching ogrinspect()\n\n     `decimal` => Boolean or sequence (default: False).  When set to True\n       all generated model fields corresponding to the `OFTReal` type will\n       be `DecimalField` instead of `FloatField`.  A sequence of specific\n       field names to generate as `DecimalField` may also be used.\n\n     `blank` => Boolean or sequence (default: False).  When set to True all\n       generated model fields will have `blank=True`.  If the user wants to\n       give specific fields to have blank, then a list/tuple of OGR field\n       names may be used.\n\n     `null` => Boolean (default: False) - When set to True all generated\n       model fields will have `null=True`.  If the user wants to specify\n       give specific fields to have null, then a list/tuple of OGR field\n       names may be used.\n\n    Note: This routine calls the _ogrinspect() helper to do the heavy lifting.\n    \"\"\"\n    return '\\n'.join(s for s in _ogrinspect(*args, **kwargs))\n\ndef _ogrinspect(data_source, model_name, geom_name='geom', layer_key=0, srid=None,\n                multi_geom=False, name_field=None, imports=True,\n                decimal=False, blank=False, null=False):\n    \"\"\"\n    Helper routine for `ogrinspect` that generates GeoDjango models corresponding\n    to the given data source.  See the `ogrinspect` docstring for more details.\n    \"\"\"\n    # Getting the DataSource\n    if isinstance(data_source, six.string_types):\n        data_source = DataSource(data_source)\n    elif isinstance(data_source, DataSource):\n        pass\n    else:\n        raise TypeError('Data source parameter must be a string or a DataSource object.')\n\n    # Getting the layer corresponding to the layer key and getting\n    # a string listing of all OGR fields in the Layer.\n    layer = data_source[layer_key]\n    ogr_fields = layer.fields\n\n    # Creating lists from the `null`, `blank`, and `decimal`\n    # keyword arguments.\n    def process_kwarg(kwarg):\n        if isinstance(kwarg, (list, tuple)):\n            return [s.lower() for s in kwarg]\n        elif kwarg:\n            return [s.lower() for s in ogr_fields]\n        else:\n            return []\n    null_fields = process_kwarg(null)\n    blank_fields = process_kwarg(blank)\n    decimal_fields = process_kwarg(decimal)\n\n    # Gets the `null` and `blank` keywords for the given field name.\n    def get_kwargs_str(field_name):\n        kwlist = []\n        if field_name.lower() in null_fields: kwlist.append('null=True')\n        if field_name.lower() in blank_fields: kwlist.append('blank=True')\n        if kwlist: return ', ' + ', '.join(kwlist)\n        else: return ''\n\n    # For those wishing to disable the imports.\n    if imports:\n        yield '# This is an auto-generated Django model module created by ogrinspect.'\n        yield 'from django.contrib.gis.db import models'\n        yield ''\n\n    yield 'class %s(models.Model):' % model_name\n\n    for field_name, width, precision, field_type in zip(ogr_fields, layer.field_widths, layer.field_precisions, layer.field_types):\n        # The model field name.\n        mfield = field_name.lower()\n        if mfield[-1:] == '_': mfield += 'field'\n\n        # Getting the keyword args string.\n        kwargs_str = get_kwargs_str(field_name)\n\n        if field_type is OFTReal:\n            # By default OFTReals are mapped to `FloatField`, however, they\n            # may also be mapped to `DecimalField` if specified in the\n            # `decimal` keyword.\n            if field_name.lower() in decimal_fields:\n                yield '    %s = models.DecimalField(max_digits=%d, decimal_places=%d%s)' % (mfield, width, precision, kwargs_str)\n            else:\n                yield '    %s = models.FloatField(%s)' % (mfield, kwargs_str[2:])\n        elif field_type is OFTInteger:\n            yield '    %s = models.IntegerField(%s)' % (mfield, kwargs_str[2:])\n        elif field_type is OFTString:\n            yield '    %s = models.CharField(max_length=%s%s)' % (mfield, width, kwargs_str)\n        elif field_type is OFTDate:\n            yield '    %s = models.DateField(%s)' % (mfield, kwargs_str[2:])\n        elif field_type is OFTDateTime:\n            yield '    %s = models.DateTimeField(%s)' % (mfield, kwargs_str[2:])\n        elif field_type is OFTTime:\n            yield '    %s = models.TimeField(%s)' % (mfield, kwargs_str[2:])\n        else:\n            raise TypeError('Unknown field type %s in %s' % (field_type, mfield))\n\n    # TODO: Autodetection of multigeometry types (see #7218).\n    gtype = layer.geom_type\n    if multi_geom and gtype.num in (1, 2, 3):\n        geom_field = 'Multi%s' % gtype.django\n    else:\n        geom_field = gtype.django\n\n    # Setting up the SRID keyword string.\n    if srid is None:\n        if layer.srs is None:\n            srid_str = 'srid=-1'\n        else:\n            srid = layer.srs.srid\n            if srid is None:\n                srid_str = 'srid=-1'\n            elif srid == 4326:\n                # WGS84 is already the default.\n                srid_str = ''\n            else:\n                srid_str = 'srid=%s' % srid\n    else:\n        srid_str = 'srid=%s' % srid\n\n    yield '    %s = models.%s(%s)' % (geom_name, geom_field, srid_str)\n    yield '    objects = models.GeoManager()'\n\n    if name_field:\n        yield ''\n        yield '    def __str__(self): return self.%s' % name_field\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/utils/srs.py",
    "content": "from django.contrib.gis.gdal import SpatialReference\n\ndef add_srs_entry(srs, auth_name='EPSG', auth_srid=None, ref_sys_name=None,\n                  database=None):\n    \"\"\"\n    This function takes a GDAL SpatialReference system and adds its information\n    to the `spatial_ref_sys` table of the spatial backend.  Doing this enables\n    database-level spatial transformations for the backend.  Thus, this utility\n    is useful for adding spatial reference systems not included by default with\n    the backend -- for example, the so-called \"Google Maps Mercator Projection\"\n    is excluded in PostGIS 1.3 and below, and the following adds it to the\n    `spatial_ref_sys` table:\n\n    >>> from django.contrib.gis.utils import add_srs_entry\n    >>> add_srs_entry(900913)\n\n    Keyword Arguments:\n     auth_name:\n       This keyword may be customized with the value of the `auth_name` field.\n       Defaults to 'EPSG'.\n\n     auth_srid:\n       This keyword may be customized with the value of the `auth_srid` field.\n       Defaults to the SRID determined by GDAL.\n\n     ref_sys_name:\n       For SpatiaLite users only, sets the value of the `ref_sys_name` field.\n       Defaults to the name determined by GDAL.\n\n     database:\n      The name of the database connection to use; the default is the value\n      of `django.db.DEFAULT_DB_ALIAS` (at the time of this writing, it's value\n      is 'default').\n    \"\"\"\n    from django.db import connections, DEFAULT_DB_ALIAS\n    if not database:\n        database = DEFAULT_DB_ALIAS\n    connection = connections[database]\n\n    if not hasattr(connection.ops, 'spatial_version'):\n        raise Exception('The `add_srs_entry` utility only works '\n                        'with spatial backends.')\n    if connection.ops.oracle or connection.ops.mysql:\n        raise Exception('This utility does not support the '\n                        'Oracle or MySQL spatial backends.')\n    SpatialRefSys = connection.ops.spatial_ref_sys()\n\n    # If argument is not a `SpatialReference` instance, use it as parameter\n    # to construct a `SpatialReference` instance.\n    if not isinstance(srs, SpatialReference):\n        srs = SpatialReference(srs)\n\n    if srs.srid is None:\n        raise Exception('Spatial reference requires an SRID to be '\n                        'compatible with the spatial backend.')\n\n    # Initializing the keyword arguments dictionary for both PostGIS\n    # and SpatiaLite.\n    kwargs = {'srid' : srs.srid,\n              'auth_name' : auth_name,\n              'auth_srid' : auth_srid or srs.srid,\n              'proj4text' : srs.proj4,\n              }\n\n    # Backend-specific fields for the SpatialRefSys model.\n    if connection.ops.postgis:\n        kwargs['srtext'] = srs.wkt\n    if connection.ops.spatialite:\n        kwargs['ref_sys_name'] = ref_sys_name or srs.name\n\n    # Creating the spatial_ref_sys model.\n    try:\n        # Try getting via SRID only, because using all kwargs may\n        # differ from exact wkt/proj in database.\n        sr = SpatialRefSys.objects.using(database).get(srid=srs.srid)\n    except SpatialRefSys.DoesNotExist:\n        sr = SpatialRefSys.objects.using(database).create(**kwargs)\n\n# Alias is for backwards-compatibility purposes.\nadd_postgis_srs = add_srs_entry\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/utils/wkt.py",
    "content": "\"\"\"\n Utilities for manipulating Geometry WKT.\n\"\"\"\n\nfrom django.utils import six\n\ndef precision_wkt(geom, prec):\n    \"\"\"\n    Returns WKT text of the geometry according to the given precision (an\n    integer or a string).  If the precision is an integer, then the decimal\n    places of coordinates WKT will be truncated to that number:\n\n     >>> pnt = Point(5, 23)\n     >>> pnt.wkt\n     'POINT (5.0000000000000000 23.0000000000000000)'\n     >>> precision(geom, 1)\n     'POINT (5.0 23.0)'\n\n    If the precision is a string, it must be valid Python format string\n    (e.g., '%20.7f') -- thus, you should know what you're doing.\n    \"\"\"\n    if isinstance(prec, int):\n        num_fmt = '%%.%df' % prec\n    elif isinstance(prec, six.string_types):\n        num_fmt = prec\n    else:\n        raise TypeError\n\n    # TODO: Support 3D geometries.\n    coord_fmt = ' '.join([num_fmt, num_fmt])\n\n    def formatted_coords(coords):\n        return ','.join([coord_fmt % c[:2] for c in coords])\n\n    def formatted_poly(poly):\n        return ','.join(['(%s)' % formatted_coords(r) for r in poly])\n\n    def formatted_geom(g):\n        gtype = str(g.geom_type).upper()\n        yield '%s(' % gtype\n        if gtype == 'POINT':\n            yield formatted_coords((g.coords,))\n        elif gtype in ('LINESTRING', 'LINEARRING'):\n            yield formatted_coords(g.coords)\n        elif gtype in ('POLYGON', 'MULTILINESTRING'):\n            yield formatted_poly(g)\n        elif gtype == 'MULTIPOINT':\n            yield formatted_coords(g.coords)\n        elif gtype == 'MULTIPOLYGON':\n            yield ','.join(['(%s)' % formatted_poly(p) for p in g])\n        elif gtype == 'GEOMETRYCOLLECTION':\n            yield ','.join([''.join([wkt for wkt in formatted_geom(child)]) for child in g])\n        else:\n            raise TypeError\n        yield ')'\n\n    return ''.join([wkt for wkt in formatted_geom(geom)])\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/gis/views.py",
    "content": "from __future__ import unicode_literals\n\nfrom django.http import Http404\nfrom django.utils.translation import ugettext as _\n\ndef feed(request, url, feed_dict=None):\n    \"\"\"Provided for backwards compatibility.\"\"\"\n    if not feed_dict:\n        raise Http404(_(\"No feeds are registered.\"))\n\n    try:\n        slug, param = url.split('/', 1)\n    except ValueError:\n        slug, param = url, ''\n\n    try:\n        f = feed_dict[slug]\n    except KeyError:\n        raise Http404(_(\"Slug %r isn't registered.\") % slug)\n\n    instance = f()\n    instance.feed_url = getattr(f, 'feed_url', None) or request.path\n    instance.title_template = f.title_template or ('feeds/%s_title.html' % slug)\n    instance.description_template = f.description_template or ('feeds/%s_description.html' % slug)\n    return instance(request)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/ar/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Ossama Khayat <okhayat@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:08+0000\\n\"\n\"Last-Translator: Ossama Khayat <okhayat@gmail.com>\\n\"\n\"Language-Team: Arabic (http://www.transifex.com/projects/p/django/language/\"\n\"ar/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ar\\n\"\n\"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 \"\n\"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"اليوم\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"أمس\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"غداً\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \" \"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \" \"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \" \"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \" \"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"%(value).1f مليون\"\nmsgstr[1] \"%(value).1f مليون\"\nmsgstr[2] \"%(value).1f مليونان\"\nmsgstr[3] \"%(value).1f مليون\"\nmsgstr[4] \"%(value).1f مليون\"\nmsgstr[5] \"%(value).1f مليون\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\nmsgstr[4] \"\"\nmsgstr[5] \"\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"%(value).1f مليار\"\nmsgstr[1] \"%(value).1f مليار\"\nmsgstr[2] \"%(value).1f ملياران\"\nmsgstr[3] \"%(value).1f مليار\"\nmsgstr[4] \"%(value).1f مليار\"\nmsgstr[5] \"%(value).1f مليار\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\nmsgstr[4] \"\"\nmsgstr[5] \"\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"%(value).1f ترليون\"\nmsgstr[1] \"%(value).1f ترليون\"\nmsgstr[2] \"%(value).1f ترليونان\"\nmsgstr[3] \"%(value).1f ترليونات\"\nmsgstr[4] \"%(value).1f ترليون\"\nmsgstr[5] \"%(value).1f ترليون\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\nmsgstr[4] \"\"\nmsgstr[5] \"\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\nmsgstr[4] \"\"\nmsgstr[5] \"\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\nmsgstr[4] \"\"\nmsgstr[5] \"\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\nmsgstr[4] \"\"\nmsgstr[5] \"\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\nmsgstr[4] \"\"\nmsgstr[5] \"\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\nmsgstr[4] \"\"\nmsgstr[5] \"\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\nmsgstr[4] \"\"\nmsgstr[5] \"\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\nmsgstr[4] \"\"\nmsgstr[5] \"\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\nmsgstr[4] \"\"\nmsgstr[5] \"\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\nmsgstr[4] \"\"\nmsgstr[5] \"\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\nmsgstr[4] \"\"\nmsgstr[5] \"\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\nmsgstr[4] \"\"\nmsgstr[5] \"\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\nmsgstr[4] \"\"\nmsgstr[5] \"\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\nmsgstr[4] \"\"\nmsgstr[5] \"\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\nmsgstr[4] \"\"\nmsgstr[5] \"\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\nmsgstr[4] \"\"\nmsgstr[5] \"\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\nmsgstr[4] \"\"\nmsgstr[5] \"\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"واحد\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"إثنان\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"ثلالثة\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"أربعة\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"خمسة\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"ستة\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"سبعة\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"ثمانية\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"تسعة\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\nmsgstr[4] \"\"\nmsgstr[5] \"\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\nmsgstr[4] \"\"\nmsgstr[5] \"\"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\nmsgstr[4] \"\"\nmsgstr[5] \"\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\nmsgstr[4] \"\"\nmsgstr[5] \"\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\nmsgstr[4] \"\"\nmsgstr[5] \"\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\nmsgstr[4] \"\"\nmsgstr[5] \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/az/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Ali Ismayilov <ali@ismailov.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:08+0000\\n\"\n\"Last-Translator: Ali Ismayilov <ali@ismailov.info>\\n\"\n\"Language-Team: Azerbaijani (http://www.transifex.com/projects/p/django/\"\n\"language/az/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: az\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"bu gün\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"dünən\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"sabah\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \"-ıncı\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \"-ıncı\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \"-ıncı\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \"-ıncı\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"%(value).1f milyon\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"%(value)s milyon\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"%(value).1f milyard\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"%(value)s milyard\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"%(value).1f trilyon\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"%(value)s trilyon\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"bir\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"iki\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"üç\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"dörd\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"beş\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"altı\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"yeddi\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"səkkiz\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"doqquz\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"%(delta)s əvvəl\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"indi\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"\"\n\"one: bir saniyə əvvəl\\n\"\n\"other: %(count)s saniyə əvvəl\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"\"\n\"one: bir dəqiqə əvvəl\\n\"\n\"other: %(count)s dəqiqə əvvəl\"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"\"\n\"one: bir saat əvvəl\\n\"\n\"other: %(count)s saat əvvəl\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"%(delta)s sonra\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"\"\n\"one: bir saniyə sonra\\n\"\n\"other: %(count)s saniyə sonra\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"\"\n\"one: bir dəqiqə sonra\\n\"\n\"other: %(count)s dəqiqə sonra\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"\"\n\"one: bir saat sonra\\n\"\n\"other: %(count)s saat sonra\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/be/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-07-31 12:10+0000\\n\"\n\"Last-Translator: Павал Клёк <yehekim@gmail.com>\\n\"\n\"Language-Team: Belarusian (http://www.transifex.com/projects/p/django/\"\n\"language/be/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: be\\n\"\n\"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"сёньня\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"ўчора\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"заўтра\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \"ы\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \"ы\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \"і\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \"і\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"%(value).1f мільён\"\nmsgstr[1] \"%(value).1f мільёны\"\nmsgstr[2] \"%(value).1f мільёнаў\"\nmsgstr[3] \"%(value).1f мільёнаў\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"%(value)s мільён\"\nmsgstr[1] \"%(value)s мільёны\"\nmsgstr[2] \"%(value)s мільёнаў\"\nmsgstr[3] \"%(value)s мільёнаў\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"%(value).1f мільярд\"\nmsgstr[1] \"%(value).1f мільярды\"\nmsgstr[2] \"%(value).1f мільярдаў\"\nmsgstr[3] \"%(value).1f мільярдаў\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"%(value).s мільярд\"\nmsgstr[1] \"%(value)s мільярды\"\nmsgstr[2] \"%(value)s мільярдаў\"\nmsgstr[3] \"%(value)s мільярдаў\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"%(value).1f трыльён\"\nmsgstr[1] \"%(value).1f трыльёны\"\nmsgstr[2] \"%(value).1f трыльёнаў\"\nmsgstr[3] \"%(value).1f трыльёнаў\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"%(value)s трыльён\"\nmsgstr[1] \"%(value)s трыльёны\"\nmsgstr[2] \"%(value)s трыльёнаў\"\nmsgstr[3] \"%(value)s трыльёнаў\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"%(value).1f квадрыльён\"\nmsgstr[1] \"%(value).1f квадрыльёны\"\nmsgstr[2] \"%(value).1f квадрыльёнаў\"\nmsgstr[3] \"%(value).1f квадрыльёнаў\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"%(value)s квадрыльён\"\nmsgstr[1] \"%(value)s квадрыльёны\"\nmsgstr[2] \"%(value)s квадрыльёнаў\"\nmsgstr[3] \"%(value)s квадрыльёнаў\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"%(value).1f квінтыльён\"\nmsgstr[1] \"%(value).1f квінтыльёны\"\nmsgstr[2] \"%(value).1f квінтыльёнаў\"\nmsgstr[3] \"%(value).1f квінтыльёнаў\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"%(value)s квінтыльён\"\nmsgstr[1] \"%(value)s квінтыльёны\"\nmsgstr[2] \"%(value)s квінтыльёнаў\"\nmsgstr[3] \"%(value)s квінтыльёнаў\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"%(value).1f сэкстыльён\"\nmsgstr[1] \"%(value).1f сэкстыльёны\"\nmsgstr[2] \"%(value).1f сэкстыльёнаў\"\nmsgstr[3] \"%(value).1f сэкстыльёнаў\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"%(value)s сэкстыльён\"\nmsgstr[1] \"%(value)s сэкстыльёны\"\nmsgstr[2] \"%(value)s сэкстыльёнаў\"\nmsgstr[3] \"%(value)s сэкстыльёнаў\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"%(value).1f сэптыльён\"\nmsgstr[1] \"%(value).1f сэптыльёны\"\nmsgstr[2] \"%(value).1f сэптыльёнаў\"\nmsgstr[3] \"%(value).1f сэптыльёнаў\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"%(value)s сэптыльён\"\nmsgstr[1] \"%(value)s сэптыльёны\"\nmsgstr[2] \"%(value)s сэптыльёнаў\"\nmsgstr[3] \"%(value)s сэптыльёнаў\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"%(value).1f актыльён\"\nmsgstr[1] \"%(value).1f актыльёны\"\nmsgstr[2] \"%(value).1f актыльёнаў\"\nmsgstr[3] \"%(value).1f актыльёнаў\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"%(value)s актыльён\"\nmsgstr[1] \"%(value)s актыльёны\"\nmsgstr[2] \"%(value)s актыльёнаў\"\nmsgstr[3] \"%(value)s актыльёнаў\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"%(value).1f нанільён\"\nmsgstr[1] \"%(value).1f нанільёны\"\nmsgstr[2] \"%(value).1f нанільёнаў\"\nmsgstr[3] \"%(value).1f нанільёнаў\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"%(value)s нанільён\"\nmsgstr[1] \"%(value)s нанільёны\"\nmsgstr[2] \"%(value)s нанільёнаў\"\nmsgstr[3] \"%(value)s нанільёнаў\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"%(value).1f дэцыльён\"\nmsgstr[1] \"%(value).1f дэцыльёны\"\nmsgstr[2] \"%(value).1f дэцыльёнаў\"\nmsgstr[3] \"%(value).1f дэцыльёнаў\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"%(value)s дэцыльён\"\nmsgstr[1] \"%(value)s дэцыльёны\"\nmsgstr[2] \"%(value)s дэцыльёнаў\"\nmsgstr[3] \"%(value)s дэцыльёнаў\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"%(value).1f ґуґал\"\nmsgstr[1] \"%(value).1f ґуґлы\"\nmsgstr[2] \"%(value).1f ґуґлаў\"\nmsgstr[3] \"%(value).1f ґуґлаў\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"%(value)s ґуґал\"\nmsgstr[1] \"%(value)s ґуґлы\"\nmsgstr[2] \"%(value)s ґуґлаў\"\nmsgstr[3] \"%(value)s ґуґлаў\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"адзін\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"два\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"тры\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"чатыры\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"пяць\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"шэсьць\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"сем\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"восем\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"дзевяць\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"%(delta)s таму\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"зараз\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"%(count)s сэкунду таму\"\nmsgstr[1] \"%(count)s сэкунды таму\"\nmsgstr[2] \"%(count)s сэкундаў таму\"\nmsgstr[3] \"%(count)s сэкундаў таму\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"%(count)s хвіліну таму\"\nmsgstr[1] \"%(count)s хвіліны таму\"\nmsgstr[2] \"%(count)s хвілінаў таму\"\nmsgstr[3] \"%(count)s хвілінаў таму\"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"%(count)s гадзіну таму\"\nmsgstr[1] \"%(count)s гадзіны таму\"\nmsgstr[2] \"%(count)s гадзінаў таму\"\nmsgstr[3] \"%(count)s гадзінаў таму\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"праз %(delta)s\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"праз %(count)s сэкунду\"\nmsgstr[1] \"праз %(count)s сэкунды\"\nmsgstr[2] \"праз %(count)s сэкундаў\"\nmsgstr[3] \"праз %(count)s сэкундаў\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"праз %(count)s хвіліну\"\nmsgstr[1] \"праз %(count)s хвіліны\"\nmsgstr[2] \"праз %(count)s хвілінаў\"\nmsgstr[3] \"праз %(count)s хвілінаў\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"праз %(count)s гадзіну\"\nmsgstr[1] \"праз %(count)s гадзіны\"\nmsgstr[2] \"праз %(count)s гадзінаў\"\nmsgstr[3] \"праз %(count)s гадзінаў\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/bg/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <grgkostadinov@gmail.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Todor Lubenov <tlubenov@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-04-01 19:29+0000\\n\"\n\"Last-Translator: Georgi Kostadinov <grgkostadinov@gmail.com>\\n\"\n\"Language-Team: Bulgarian (http://www.transifex.com/projects/p/django/\"\n\"language/bg/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: bg\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"днес\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"вчера\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"Утре\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \"и\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \"ви\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \"ри\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \"ти\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"%(value).1f милион\"\nmsgstr[1] \"%(value).1f милиона\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"%(value)s милион\"\nmsgstr[1] \"%(value)s милиона\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"%(value).1f милиард\"\nmsgstr[1] \"%(value).1f милиарда\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"%(value)s милиард\"\nmsgstr[1] \"%(value)s милиарда\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"%(value).1f трилион\"\nmsgstr[1] \"%(value).1f трилиона\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"%(value)s трилион\"\nmsgstr[1] \"%(value)s трилиона\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"%(value).1f квадрилион\"\nmsgstr[1] \"%(value).1f квадрилиона\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"%(value)s квадрилион\"\nmsgstr[1] \"%(value)s квадрилиона\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"%(value).1f квинтилион\"\nmsgstr[1] \"%(value).1f квинтилиона\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"%(value)s квинтилион\"\nmsgstr[1] \"%(value)s квинтилиона\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"%(value).1f секстилион\"\nmsgstr[1] \"%(value).1f секстилиона\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"%(value)s секстилион\"\nmsgstr[1] \"%(value)s секстилиона\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"%(value).1f септилион\"\nmsgstr[1] \"%(value).1f септилиона\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"%(value)s септилион\"\nmsgstr[1] \"%(value)s септилиона\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"%(value).1f октилион\"\nmsgstr[1] \"%(value).1f октилиона\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"%(value)s октилион\"\nmsgstr[1] \"%(value)s октилиона\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"%(value).1f нонилион\"\nmsgstr[1] \"%(value).1f нонилиона\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"%(value)s нонилион\"\nmsgstr[1] \"%(value)s нонилиона\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"%(value).1f децилион\"\nmsgstr[1] \"%(value).1f децилиона\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"%(value)s децилион\"\nmsgstr[1] \"%(value)s децилиона\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"%(value).1f гугол\"\nmsgstr[1] \"%(value).1f гугола\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"%(value)s гугол\"\nmsgstr[1] \"%(value)s гугола\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"един\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"два\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"три\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"четири\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"пет\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"шест\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"седем\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"осем\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"девет\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"преди %(delta)s\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"сега\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"преди секунда\"\nmsgstr[1] \"преди %(count)s секунди\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"преди минута\"\nmsgstr[1] \"преди %(count)s минути\"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"преди час\"\nmsgstr[1] \"преди %(count)s часа\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"%(delta)s от сега\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"секунда от сега\"\nmsgstr[1] \"%(count)s секунди от сега\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"минута от сега\"\nmsgstr[1] \"%(count)s минути от сега\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"час от сега\"\nmsgstr[1] \"%(count)s часа от сега\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/bn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:08+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Bengali (http://www.transifex.com/projects/p/django/language/\"\n\"bn/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: bn\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"আজ\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"গতকাল\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"আগামীকাল\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \"তম\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \"ম\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \"য়\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \"য়\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"%(value).1f মিলিয়ন\"\nmsgstr[1] \"%(value).1f মিলিয়ন\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"%(value).1f বিলিয়ন\"\nmsgstr[1] \"%(value).1f বিলিয়ন\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"%(value).1f ট্রিলিয়ন\"\nmsgstr[1] \"%(value).1f ট্রিলিয়ন\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"এক\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"দুই\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"তিন\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"চার\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"পাঁচ\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"ছয়\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"সাত\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"আট\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"নয়\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/br/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Fulup  <fulup.jakez@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-06-29 10:20+0000\\n\"\n\"Last-Translator: Fulup <fulup.jakez@gmail.com>\\n\"\n\"Language-Team: Breton (http://www.transifex.com/projects/p/django/language/\"\n\"br/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: br\\n\"\n\"Plural-Forms: nplurals=2; plural=(n > 1);\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"hiziv\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"dec'h\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"warc'hoazh\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \"<sup>e</sup>\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \"<sup>añ</sup>\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \"<sup>l</sup>\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \"<sup>e</sup>\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"%(value).1f milion\"\nmsgstr[1] \"%(value).1f milion\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"%(value)s million\"\nmsgstr[1] \"%(value)s million\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"%(value).1f miliard\"\nmsgstr[1] \"%(value).1f miliard\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"%(value)s miliard\"\nmsgstr[1] \"%(value)s miliard\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"%(value).1f bilion\"\nmsgstr[1] \"%(value).1f bilion\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"%(value)s bilion\"\nmsgstr[1] \"%(value)s bilion\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"%(value).1f c'hadrilion\"\nmsgstr[1] \"%(value).1f kadrilion\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"%(value)s c'hadrilion\"\nmsgstr[1] \"%(value)s kadrilion\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"%(value).1f c'hintilion\"\nmsgstr[1] \"%(value).1f kintilion\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"%(value)s c'hintilion\"\nmsgstr[1] \"%(value)s kintilion\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"%(value).1f sekstilion\"\nmsgstr[1] \"%(value).1f sekstilion\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"%(value)s sekstilion\"\nmsgstr[1] \"%(value)s sekstilion\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"%(value).1f septilion\"\nmsgstr[1] \"%(value).1f septilion\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"%(value)s septilion\"\nmsgstr[1] \"%(value)s septilion\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"%(value).1f oktilion\"\nmsgstr[1] \"%(value).1f oktilion\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"%(value)s oktilion\"\nmsgstr[1] \"%(value)s oktilion\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"%(value).1f nonilion\"\nmsgstr[1] \"%(value).1f nonilion\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"%(value)s nonilion\"\nmsgstr[1] \"%(value)s nonilion\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"%(value).1f dekilion\"\nmsgstr[1] \"%(value).1f dekilion\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"%(value)s dekilion\"\nmsgstr[1] \"%(value)s dekilion\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"%(value).1f gogol\"\nmsgstr[1] \"%(value).1f gogol\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"%(value)s gogol\"\nmsgstr[1] \"%(value)s gogol\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"unan\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"daou\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"tri\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"pevar\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"pemp\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"c'hwec'h\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"seizh\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"eizh\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"nav\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"%(delta)s zo\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"bremañ\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"un eilenn zo\"\nmsgstr[1] \"%(count)s eilenn zo\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"ur vunutenn zo\"\nmsgstr[1] \"%(count)s munut zo\"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"un eurvezh zo\"\nmsgstr[1] \"%(count)s eurvezh zo\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"a-benn %(delta)s \"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"a-benn un eilenn\"\nmsgstr[1] \"a-benn %(count)s eilenn\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"a-benn ur vunutenn\"\nmsgstr[1] \"a-benn %(count)s munut\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"a-benn un eurvezh\"\nmsgstr[1] \"a-benn %(count)s eurvezh\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/bs/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Filip Dupanović <filip.dupanovic@gmail.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:08+0000\\n\"\n\"Last-Translator: Filip Dupanović <filip.dupanovic@gmail.com>\\n\"\n\"Language-Team: Bosnian (http://www.transifex.com/projects/p/django/language/\"\n\"bs/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: bs\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"deset\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"jučer\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"sutra\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \"-i\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \"-vi\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \"-i\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \"-i\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"%(value).1f million\"\nmsgstr[1] \"%(value).1f miliona\"\nmsgstr[2] \"%(value).1f miliona\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"%(value).1f milijarda\"\nmsgstr[1] \"%(value).1f milijarde\"\nmsgstr[2] \"%(value).1f milijardi\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"%(value).1f bilion\"\nmsgstr[1] \"%(value).1f biliona\"\nmsgstr[2] \"%(value).1f biliona\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"jedan\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"dva\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"tri\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"četiri\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"pet\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"šest\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"sedam\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"osam\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"devet\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/ca/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Antoni Aloy <antoni.aloy@trespams.com>, 2011, 2012.\n# Carles Barrobés <carles@barrobes.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-03-05 23:00+0000\\n\"\n\"Last-Translator: Antoni Aloy <aaloy@apsl.net>\\n\"\n\"Language-Team: Catalan (http://www.transifex.com/projects/p/django/language/\"\n\"ca/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ca\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"avui\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"ahir\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"demà\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \"è\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \"r\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \"n\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \"r\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"%(value).1f milió\"\nmsgstr[1] \"%(value).1f  milions\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"%(value)s milió\"\nmsgstr[1] \"%(value)s milions\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"%(value).1f miliard\"\nmsgstr[1] \"%(value).1f miliards\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"%(value)s miliard\"\nmsgstr[1] \"%(value)s miliards\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"%(value).1f bilió\"\nmsgstr[1] \"%(value).1f bilions\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"%(value)s bilió\"\nmsgstr[1] \"%(value)s bilió\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"%(value).1f quadrilió\"\nmsgstr[1] \"%(value).1f quadrilions\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"%(value)s quadrilió\"\nmsgstr[1] \"%(value)s quadrilions\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"%(value).1f quintilió\"\nmsgstr[1] \"%(value).1f quintilions\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"%(value)s quintilió\"\nmsgstr[1] \"%(value)s quintilions\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"%(value).1f sextilió\"\nmsgstr[1] \"%(value).1f sextilions\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"%(value)s sextilió\"\nmsgstr[1] \"%(value)s sextilions\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"%(value).1f septilió\"\nmsgstr[1] \"%(value).1f septilions\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"%(value)s septilió\"\nmsgstr[1] \"%(value)s septilions\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"%(value).1f octilió\"\nmsgstr[1] \"%(value).1f octilions\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"%(value)s octilió\"\nmsgstr[1] \"%(value)s octilions\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"%(value).1f nonilió\"\nmsgstr[1] \"%(value).1f nonilions\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"%(value)s nonilió\"\nmsgstr[1] \"%(value)s nonilions\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"%(value).1f decilió\"\nmsgstr[1] \"%(value).1f decilions\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"%(value)s decilió\"\nmsgstr[1] \"%(value)s decilions\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"%(value).1f googol\"\nmsgstr[1] \"%(value).1f googols\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"%(value)s googol\"\nmsgstr[1] \"%(value)s googols\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"un\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"dos\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"tres\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"quatre\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"cinc\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"sis\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"set\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"vuit\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"nou\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"fa %(delta)s\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"ara\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"fa un segon\"\nmsgstr[1] \"fa %(count)s segons\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"fa un minut\"\nmsgstr[1] \"fa %(count)s minuts\"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"fa una hora\"\nmsgstr[1] \"fa %(count)s hores\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"%(delta)s des d'ara\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"d'aquí a un segon\"\nmsgstr[1] \"d'aquí a %(count)s segons\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"d'aquí a un minut\"\nmsgstr[1] \"d'aquí a %(count)s minuts\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"d'aquí a una hora\"\nmsgstr[1] \"d'aquí a %(count)s hores\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/cs/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Vlada Macek <macek@sandbox.cz>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:08+0000\\n\"\n\"Last-Translator: Vlada Macek <macek@sandbox.cz>\\n\"\n\"Language-Team: Czech (http://www.transifex.com/projects/p/django/language/\"\n\"cs/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: cs\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"dnes\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"včera\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"zítra\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \".\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \".\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \".\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \".\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"%(value).1f milion\"\nmsgstr[1] \"%(value).1f miliony\"\nmsgstr[2] \"%(value).1f milionů\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \" %(value)s milion\"\nmsgstr[1] \" %(value)s miliony\"\nmsgstr[2] \" %(value)s milionů\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"%(value).1f miliarda\"\nmsgstr[1] \"%(value).1f miliardy\"\nmsgstr[2] \"%(value).1f miliard\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"%(value)s miliarda\"\nmsgstr[1] \"%(value)s miliardy\"\nmsgstr[2] \"%(value)s miliard\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"%(value).1f bilion\"\nmsgstr[1] \"%(value).1f biliony\"\nmsgstr[2] \"%(value).1f bilionů\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"%(value)s bilion\"\nmsgstr[1] \"%(value)s biliony\"\nmsgstr[2] \"%(value)s bilionů\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"%(value).1f biliarda\"\nmsgstr[1] \"%(value).1f biliardy\"\nmsgstr[2] \"%(value).1f biliard\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"%(value)s biliarda\"\nmsgstr[1] \"%(value)s biliardy\"\nmsgstr[2] \"%(value)s biliard\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"%(value).1f trilion\"\nmsgstr[1] \"%(value).1f triliony\"\nmsgstr[2] \"%(value).1f trilionů\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"%(value)s trilion\"\nmsgstr[1] \"%(value)s triliony\"\nmsgstr[2] \"%(value)s trilionů\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"%(value).1f triliarda\"\nmsgstr[1] \"%(value).1f triliardy\"\nmsgstr[2] \"%(value).1f triliard\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"%(value)s triliard\"\nmsgstr[1] \"%(value)s triliardy\"\nmsgstr[2] \"%(value)s triliard\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"%(value).1f kvadrilion\"\nmsgstr[1] \"%(value).1f kvadriliony\"\nmsgstr[2] \"%(value).1f kvadrilionů\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"%(value)s kvadrilion\"\nmsgstr[1] \"%(value)s kvadriliony\"\nmsgstr[2] \"%(value)s kvadrilionů\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"%(value).1f kvadriliarda\"\nmsgstr[1] \"%(value).1f kvadriliardy\"\nmsgstr[2] \"%(value).1f kvadriliard\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"%(value)s kvadriliarda\"\nmsgstr[1] \"%(value)s kvadriliardy\"\nmsgstr[2] \"%(value)s kvadriliard\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"%(value).1f kvintilion\"\nmsgstr[1] \"%(value).1f kvintiliony\"\nmsgstr[2] \"%(value).1f kvintilionů\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"%(value)s kvintilion\"\nmsgstr[1] \"%(value)s kvintiliony\"\nmsgstr[2] \"%(value)s kvintilionů\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"%(value).1f kvintiliarda\"\nmsgstr[1] \"%(value).1f kvintiliardy\"\nmsgstr[2] \"%(value).1f kvintiliard\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"%(value)s kvintiliarda\"\nmsgstr[1] \"%(value)s kvintiliardy\"\nmsgstr[2] \"%(value)s kvintiliard\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"%(value).1f googol\"\nmsgstr[1] \"%(value).1f googoly\"\nmsgstr[2] \"%(value).1f googolů\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"%(value)s googol\"\nmsgstr[1] \"%(value)s googoly\"\nmsgstr[2] \"%(value)s googolů\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"jedna\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"dvě\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"tři\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"čtyři\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"pět\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"šest\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"sedm\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"osm\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"devět\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"%(delta)s v minulosti\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"nyní\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"před sekundou\"\nmsgstr[1] \"před %(count)s sekundami\"\nmsgstr[2] \"před %(count)s sekundami\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"před minutou\"\nmsgstr[1] \"před %(count)s minutami\"\nmsgstr[2] \"před %(count)s minutami\"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"před hodinou\"\nmsgstr[1] \"před %(count)s hodinami\"\nmsgstr[2] \"před %(count)s hodinami\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"%(delta)s v budoucnosti\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"za sekundu\"\nmsgstr[1] \"za %(count)s sekundy\"\nmsgstr[2] \"za %(count)s sekund\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"za minutu\"\nmsgstr[1] \"za %(count)s minuty\"\nmsgstr[2] \"za %(count)s minut\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"za hodinu\"\nmsgstr[1] \"za %(count)s hodiny\"\nmsgstr[2] \"za %(count)s hodin\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/cy/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2011-01-19 15:13+0000\\n\"\n\"Last-Translator: Django team\\n\"\n\"Language-Team: Welsh (http://www.transifex.com/projects/p/django/language/\"\n\"cy/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: cy\\n\"\n\"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != \"\n\"11) ? 2 : 3;\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\nmsgstr[3] \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/da/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Christian Joergensen <christian@gmta.info>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:08+0000\\n\"\n\"Last-Translator: Christian Joergensen <christian@gmta.info>\\n\"\n\"Language-Team: Danish (http://www.transifex.com/projects/p/django/language/\"\n\"da/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: da\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"i dag\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"i går\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"i morgen\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \".\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \".\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \".\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \".\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"%(value).1f million\"\nmsgstr[1] \"%(value).1f millioner\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"%(value)s million\"\nmsgstr[1] \"%(value)s millioner\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"%(value).1f milliard\"\nmsgstr[1] \"%(value).1f milliarder\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"%(value)s milliard\"\nmsgstr[1] \"%(value)s milliarder\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"%(value).1f billion\"\nmsgstr[1] \"%(value).1f billioner\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"%(value)s billion\"\nmsgstr[1] \"%(value)s billioner\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"%(value).1f billiard\"\nmsgstr[1] \"%(value).1f billiarder\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"%(value)s billiard\"\nmsgstr[1] \"%(value)s billiarder\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"%(value).1f trillion\"\nmsgstr[1] \"%(value).1f trillioner\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"%(value)s trillion\"\nmsgstr[1] \"%(value)s trillioner\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"%(value).1f trilliard\"\nmsgstr[1] \"%(value).1f trilliarder\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"%(value)s trilliard\"\nmsgstr[1] \"%(value)s trilliarder\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"%(value).1f kvadrillion\"\nmsgstr[1] \"%(value).1f kvadrillioner\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"%(value)s kvadrillion\"\nmsgstr[1] \"%(value)s kvadrillioner\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"%(value).1f kvadrilliard\"\nmsgstr[1] \"%(value).1f kvadrilliarder\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"%(value)s kvadrilliard\"\nmsgstr[1] \"%(value)s kvadrilliarder\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"%(value).1f kvintillion\"\nmsgstr[1] \"%(value).1f kvintillioner\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"%(value)s kvintillion\"\nmsgstr[1] \"%(value)s kvintillioner\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"%(value).1f kvintilliard\"\nmsgstr[1] \"%(value).1f kvintilliarder\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"%(value)s kvintilliard\"\nmsgstr[1] \"%(value)s kvintilliarder\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"%(value).1f gogol\"\nmsgstr[1] \"%(value).1f gogoler\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"%(value)s gogol\"\nmsgstr[1] \"%(value)s gogoler\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"en\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"to\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"tre\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"fire\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"fem\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"seks\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"syv\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"otte\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"ni\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"%(delta)s siden\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"nu\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"et sekund siden\"\nmsgstr[1] \"%(count)s sekunder siden\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"et minut siden\"\nmsgstr[1] \"%(count)s minutter siden\"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"en time siden\"\nmsgstr[1] \"%(count)s timer siden\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"%(delta)s fra nu af\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"et sekund fra nu af\"\nmsgstr[1] \"%(count)s sekunder fra nu af\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"et minut fra nu af\"\nmsgstr[1] \"%(count)s minutter fra nu af\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"en time fra nu af\"\nmsgstr[1] \"%(count)s timer fra nu af\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/de/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# André Hagenbruch <ahagenbruch@googlemail.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:08+0000\\n\"\n\"Last-Translator: André Hagenbruch <ahagenbruch@googlemail.com>\\n\"\n\"Language-Team: German (http://www.transifex.com/projects/p/django/language/\"\n\"de/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: de\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"heute\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"gestern\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"morgen\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \".\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \".\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \".\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \".\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"%(value).1f Million\"\nmsgstr[1] \"%(value).1f Millionen\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"%(value)s Million\"\nmsgstr[1] \"%(value)s Millionen\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"%(value).1f Milliarde\"\nmsgstr[1] \"%(value).1f Milliarden\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"%(value)s Milliarde\"\nmsgstr[1] \"%(value)s Milliarden\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"%(value).1f Billion\"\nmsgstr[1] \"%(value).1f Billionen\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"%(value)s Billion\"\nmsgstr[1] \"%(value)s Billionen\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"%(value).1f Billiarde\"\nmsgstr[1] \"%(value).1f Billiarden\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"%(value)s Billiarde\"\nmsgstr[1] \"%(value)s Billiarden\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"%(value).1f Trillion\"\nmsgstr[1] \"%(value).1f Trillionen\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"%(value)s Trillion\"\nmsgstr[1] \"%(value)s Trillionen\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"%(value).1f Trilliarde\"\nmsgstr[1] \"%(value).1f Trilliarden\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"%(value)s Trilliarde\"\nmsgstr[1] \"%(value)s Trilliarden\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"%(value).1f Quadrillion\"\nmsgstr[1] \"%(value).1f Quadrillionen\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"%(value)s Quadrillion\"\nmsgstr[1] \"%(value)s Quadrillionen\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"%(value).1f Quadrilliarde\"\nmsgstr[1] \"%(value).1f Quadrilliarden\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"%(value)s Quadrilliarde\"\nmsgstr[1] \"%(value)s Quadrilliarden\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"%(value).1f Quintillion\"\nmsgstr[1] \"%(value).1f Quintillionen\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"%(value)s Quintillion\"\nmsgstr[1] \"%(value)s Quintillionen\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"%(value).1f Quintilliarde\"\nmsgstr[1] \"%(value).1f Quintilliarden\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"%(value)s Quintilliarde\"\nmsgstr[1] \"%(value)s Quintilliarden\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"%(value).1f Sedezilliarde\"\nmsgstr[1] \"%(value).1f Sedezilliarden\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"%(value)s Sedezilliarde\"\nmsgstr[1] \"%(value)s Sedezilliarden\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"ein\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"zwei\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"drei\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"vier\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"fünf\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"sechs\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"sieben\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"acht\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"neun\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"vor %(delta)s\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"jetzt\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"vor einer Sekunde\"\nmsgstr[1] \"vor %(count)s Sekunden\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"vor einer Minute\"\nmsgstr[1] \"vor %(count)s Minuten\"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"vor einer Stunde\"\nmsgstr[1] \"vor %(count)s Stunden\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"in %(delta)s\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"in einer Sekunde\"\nmsgstr[1] \"in %(count)s Sekunden\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"in einer Minute\"\nmsgstr[1] \"in %(count)s Minuten\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"in einer Stunde\"\nmsgstr[1] \"in %(count)s Stunden\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/el/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Dimitris Glezos <glezos@indifex.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Kostas Papadimitriou <vinilios@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-03-12 19:02+0000\\n\"\n\"Last-Translator: Kostas Papadimitriou <vinilios@gmail.com>\\n\"\n\"Language-Team: Greek (http://www.transifex.com/projects/p/django/language/\"\n\"el/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: el\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"σήμερα\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"χθες\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"αύριο\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \"η\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \"η\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \"η\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \"η\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"%(value).1f εκατομμύριο\"\nmsgstr[1] \"%(value).1f εκατομμύρια\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \" %(value)s  εκατομμύριο\"\nmsgstr[1] \" %(value)s  εκατομμύρια\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"%(value).1f δισεκατομμύριο\"\nmsgstr[1] \"%(value).1f δισεκατομμύρια\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"%(value)s δισεκατομμύριο\"\nmsgstr[1] \"%(value)s δισεκατομμύρια\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"%(value).1f τρισεκατομμύριο\"\nmsgstr[1] \"%(value).1f τρισεκατομμύρια\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"%(value)s τρισεκατομμύριο\"\nmsgstr[1] \"%(value)s τρισεκατομμύρια\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"%(value).1f τετράκις εκατομμύριο\"\nmsgstr[1] \"%(value).1f τετράκις εκατομμύρια\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"%(value)s τετράκις εκατομμύριο\"\nmsgstr[1] \"%(value)s τετράκις εκατομμύρια\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"%(value).1f πεντάκις εκατομμύριo\"\nmsgstr[1] \"%(value).1f πεντάκις εκατομμύρια\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"%(value)s πεντάκις εκατομμύριo\"\nmsgstr[1] \"%(value)s πεντάκις εκατομμύρια\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"%(value).1f εξάκις εκατομμύριo\"\nmsgstr[1] \"%(value).1f εξάκις εκατομμύρια\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"%(value)s εξάκις εκατομμύριo\"\nmsgstr[1] \"%(value)s εξάκις εκατομμύρια\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"%(value).1f επτάκις εκατομμύριο\"\nmsgstr[1] \"%(value).1f επτάκις εκατομμύρια\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"%(value)s επτάκις εκατομμύριο\"\nmsgstr[1] \"%(value)s επτάκις εκατομμύρια\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"%(value).1f οκτάκις εκατομμύριο\"\nmsgstr[1] \"%(value).1f οκτάκις εκατομμύρια\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"%(value)s οκτάκις εκατομμύριο\"\nmsgstr[1] \"%(value)s οκτάκις εκατομμύρια\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"%(value).1f εννεάκις εκατομμύριο\"\nmsgstr[1] \"%(value).1f εννεάκις εκατομμύρια\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"%(value)s εννεάκις εκατομμύριο\"\nmsgstr[1] \"%(value)s εννεάκις εκατομμύρια\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"%(value).1f δεκάκις εκατομμύριο\"\nmsgstr[1] \"%(value).1f δεκάκις εκατομμύρια\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"%(value)s δεκάκις εκατομμύριο\"\nmsgstr[1] \"%(value)s δεκάκις εκατομμύρια\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"%(value).1f googol\"\nmsgstr[1] \"%(value).1f googol\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"%(value)s googol\"\nmsgstr[1] \"%(value)s googol\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"ένα\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"δύο\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"τρία\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"τέσσερα\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"πέντε\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"έξι\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"εφτά\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"οκτώ\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"εννιά\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"πριν από %(delta)s\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"τώρα\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"πριν από ένα δευτερόλεπτο\"\nmsgstr[1] \"πριν από %(count)s δευτερόλεπτα\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"πριν από ένα λεπτό\"\nmsgstr[1] \"πριν από %(count)s λεπτά\"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"πριν από μια ώρα\"\nmsgstr[1] \"πριν από %(count)s ώρες\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"σε %(delta)s\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"σε ένα δευτερόλεπτο\"\nmsgstr[1] \"σε %(count)s δευτερόλεπτα\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"σε ένα λεπτό\"\nmsgstr[1] \"σε %(count)s λεπτά\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"σε μία ώρα\"\nmsgstr[1] \"σε %(count)s ώρες\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/en/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:08+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: English <en@li.org>\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: en\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"today\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"yesterday\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"tomorrow\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \"th\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \"st\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \"nd\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \"rd\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"%(value).1f million\"\nmsgstr[1] \"%(value).1f million\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"%(value)s million\"\nmsgstr[1] \"%(value)s million\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"%(value).1f billion\"\nmsgstr[1] \"%(value).1f billion\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"%(value)s billion\"\nmsgstr[1] \"%(value)s billion\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"%(value).1f trillion\"\nmsgstr[1] \"%(value).1f trillion\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"%(value)s trillion\"\nmsgstr[1] \"%(value)s trillion\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"%(value).1f quadrillion\"\nmsgstr[1] \"%(value).1f quadrillion\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"%(value)s quadrillion\"\nmsgstr[1] \"%(value)s quadrillion\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"%(value).1f quintillion\"\nmsgstr[1] \"%(value).1f quintillion\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"%(value)s quintillion\"\nmsgstr[1] \"%(value)s quintillion\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"%(value).1f sextillion\"\nmsgstr[1] \"%(value).1f sextillion\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"%(value)s sextillion\"\nmsgstr[1] \"%(value)s sextillion\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"%(value).1f septillion\"\nmsgstr[1] \"%(value).1f septillion\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"%(value)s septillion\"\nmsgstr[1] \"%(value)s septillion\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"%(value).1f octillion\"\nmsgstr[1] \"%(value).1f octillion\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"%(value)s octillion\"\nmsgstr[1] \"%(value)s octillion\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"%(value).1f nonillion\"\nmsgstr[1] \"%(value).1f nonillion\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"%(value)s nonillion\"\nmsgstr[1] \"%(value)s nonillion\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"%(value).1f decillion\"\nmsgstr[1] \"%(value).1f decillion\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"%(value)s decillion\"\nmsgstr[1] \"%(value)s decillion\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"%(value).1f googol\"\nmsgstr[1] \"%(value).1f googol\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"%(value)s googol\"\nmsgstr[1] \"%(value)s googol\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"one\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"two\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"three\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"four\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"five\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"six\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"seven\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"eight\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"nine\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"%(delta)s ago\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"now\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"a second ago\"\nmsgstr[1] \"%(count)s seconds ago\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"a minute ago\"\nmsgstr[1] \"%(count)s minutes ago\"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"an hour ago\"\nmsgstr[1] \"%(count)s hours ago\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"%(delta)s from now\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"a second from now\"\nmsgstr[1] \"%(count)s seconds from now\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"a minute from now\"\nmsgstr[1] \"%(count)s minutes from now\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"an hour from now\"\nmsgstr[1] \"%(count)s hours from now\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/en_GB/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <ben@firshman.co.uk>, 2011.\n# jon_atkinson <jon@jonatkinson.co.uk>, 2011.\n#   <jon@jonatkinson.co.uk>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:08+0000\\n\"\n\"Last-Translator: jon_atkinson <jon@jonatkinson.co.uk>\\n\"\n\"Language-Team: English (United Kingdom) (http://www.transifex.com/projects/p/\"\n\"django/language/en_GB/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: en_GB\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"today\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"yesterday\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"tomorrow\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \"th\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \"st\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \"nd\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \"rd\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"%(value).1f million\"\nmsgstr[1] \"%(value).1f million\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"%(value)s million\"\nmsgstr[1] \"%(value)s million\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"%(value).1f billion\"\nmsgstr[1] \"%(value).1f billion\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"%(value)s billion\"\nmsgstr[1] \"%(value)s billion\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"%(value).1f trillion\"\nmsgstr[1] \"%(value).1f trillion\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"%(value)s trillion\"\nmsgstr[1] \"%(value)s trillion\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"%(value).1f quadrillion\"\nmsgstr[1] \"%(value).1f quadrillion\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"%(value)s quadrillion\"\nmsgstr[1] \"%(value)s quadrillion\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"%(value).1f quintillion\"\nmsgstr[1] \"%(value).1f quintillion\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"%(value)s quintillion\"\nmsgstr[1] \"%(value)s quintillion\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"%(value).1f sextillion\"\nmsgstr[1] \"%(value).1f sextillion\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"%(value)s sextillion\"\nmsgstr[1] \"%(value)s sextillion\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"%(value).1f septillion\"\nmsgstr[1] \"%(value).1f septillion\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"%(value)s septillion\"\nmsgstr[1] \"%(value)s septillion\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"%(value).1f octillion\"\nmsgstr[1] \"%(value).1f octillion\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"%(value)s octillion\"\nmsgstr[1] \"%(value)s octillion\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"%(value).1f nonillion\"\nmsgstr[1] \"%(value).1f nonillion\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"%(value)s nonillion\"\nmsgstr[1] \"%(value)s nonillion\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"%(value).1f decillion\"\nmsgstr[1] \"%(value).1f decillion\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"%(value)s decillion\"\nmsgstr[1] \"%(value)s decillion\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"%(value).1f googol\"\nmsgstr[1] \"%(value).1f googol\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"%(value)s googol\"\nmsgstr[1] \"%(value)s googol\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"one\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"two\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"three\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"four\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"five\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"six\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"seven\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"eight\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"nine\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"%(delta)s ago\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"now\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"a second ago\"\nmsgstr[1] \"%(count)s seconds ago\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"a minute ago\"\nmsgstr[1] \"%(count)s minutes ago\"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"an hour ago\"\nmsgstr[1] \"%(count)s hours ago\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"%(delta)s from now\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"a second from now\"\nmsgstr[1] \"%(count)s seconds from now\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"a minute from now\"\nmsgstr[1] \"%(count)s minutes from now\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"an hour from now\"\nmsgstr[1] \"%(count)s hours from now\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/eo/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:08+0000\\n\"\n\"Last-Translator: Baptiste <baptiste+transifex@darthenay.fr>\\n\"\n\"Language-Team: Esperanto (http://www.transifex.com/projects/p/django/\"\n\"language/eo/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: eo\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"hodiaŭ\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"hieraŭ\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"morgaŭ\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \"a\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \"a\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \"a\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \"a\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"%(value).1f milionoj\"\nmsgstr[1] \"%(value).1f milionoj\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"%(value)s milionoj\"\nmsgstr[1] \"%(value)s milionoj\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"%(value).1f miliardoj\"\nmsgstr[1] \"%(value).1f miliardoj\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"%(value)s miliardoj\"\nmsgstr[1] \"%(value)s miliardoj\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"%(value).1f triiliono\"\nmsgstr[1] \"%(value).1f triiliono\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"%(value)s triilionoj\"\nmsgstr[1] \"%(value)s triilionoj\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"%(value).1f kvariliono\"\nmsgstr[1] \"%(value).1f kvariliono\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"%(value)s kvarilionoj\"\nmsgstr[1] \"%(value)s kvarilionoj\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"%(value).1f kvinilionoj\"\nmsgstr[1] \"%(value).1f kvinilionoj\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"%(value)s kvinilionoj\"\nmsgstr[1] \"%(value)s kvinilionoj\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"%(value).1f sesilionoj\"\nmsgstr[1] \"%(value).1f sesilionoj\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"%(value)s sesilionoj\"\nmsgstr[1] \"%(value)s sesilionoj\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"%(value).1f sepilionoj\"\nmsgstr[1] \"%(value).1f sepilionoj\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"%(value)s sepilionoj\"\nmsgstr[1] \"%(value)s sepilionoj\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"%(value).1f okilionoj\"\nmsgstr[1] \"%(value).1f okilionoj\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"%(value)s okilionoj\"\nmsgstr[1] \"%(value)s okilionoj\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"%(value).1f naŭilionoj\"\nmsgstr[1] \"%(value).1f naŭilionoj\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"%(value)s naŭilionoj\"\nmsgstr[1] \"%(value)s naŭilionoj\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"%(value).1f dekilionoj\"\nmsgstr[1] \"%(value).1f dekilionoj\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"%(value)s dekilionoj\"\nmsgstr[1] \"%(value)s dekilionoj\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"%(value).1f guglo\"\nmsgstr[1] \"%(value).1f guglo\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"%(value)s gugloj\"\nmsgstr[1] \"%(value)s gugloj\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"unu\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"du\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"tri\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"kvar\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"kvin\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"ses\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"sep\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"ok\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"naŭ\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"%(delta)s antaŭe\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"nun\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"unu sekundo antaŭe\"\nmsgstr[1] \"%(count)s sekundoj antaŭe\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"unu minuto antaŭe\"\nmsgstr[1] \"%(count)s minutoj antaŭe\"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"unu horo antaŭe\"\nmsgstr[1] \"%(count)s horoj antaŭe\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"%(delta)s ekde nun\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"unu sekundo ekde nun\"\nmsgstr[1] \"%(count)s sekundoj ekde nun\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"unu minuto ekde nun\"\nmsgstr[1] \"%(count)s minutoj ekde nun\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"unu horo ekde nun\"\nmsgstr[1] \"%(count)s horoj ekde nun\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/es/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Antoni Aloy <antoni.aloy@trespams.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Leonardo J. Caballero G. <leonardocaballero@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-03-14 19:27+0000\\n\"\n\"Last-Translator: Antoni Aloy <aaloy@apsl.net>\\n\"\n\"Language-Team: Spanish (http://www.transifex.com/projects/p/django/language/\"\n\"es/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: es\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"hoy\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"ayer\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"mañana\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \"º\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \"º\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \"º\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \"º\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"%(value).1f millón\"\nmsgstr[1] \"%(value).1f millón\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"%(value)s millon\"\nmsgstr[1] \"%(value)s millones\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"%(value).1f millardo\"\nmsgstr[1] \"%(value).1f millardos\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"%(value)s millardo\"\nmsgstr[1] \"%(value)s millardos\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"%(value).1f billón\"\nmsgstr[1] \"%(value).1f billón\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"%(value)s billón\"\nmsgstr[1] \"%(value)s billones\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"%(value).1f billardo\"\nmsgstr[1] \"%(value).1f billardos\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"%(value)s billardos\"\nmsgstr[1] \"%(value)s billardos\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"%(value).1f trillón\"\nmsgstr[1] \"%(value).1f trillones\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"%(value)s trillón\"\nmsgstr[1] \"%(value)s trillones\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"%(value).1f trillardo\"\nmsgstr[1] \"%(value).1f trillardos\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"%(value)s trillardo\"\nmsgstr[1] \"%(value)s trillardos\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"%(value).1f cuatrillón\"\nmsgstr[1] \"%(value).1f cuatrillones\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"%(value)s cuatrillón\"\nmsgstr[1] \"%(value)s cuatrillones\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"%(value).1f cuatrillardo\"\nmsgstr[1] \"%(value).1f cuatrillardos\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"%(value)s cuatrillardo\"\nmsgstr[1] \"%(value)s cuatrillardos\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"%(value).1f quintillón\"\nmsgstr[1] \"%(value).1f quintillones\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"%(value)s quintillón\"\nmsgstr[1] \"%(value)s quintillones\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"%(value).1f quintillardo\"\nmsgstr[1] \"%(value).1f quintillardos\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"%(value)s quintillardo\"\nmsgstr[1] \"%(value)s quintillardos\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"%(value).1f googol\"\nmsgstr[1] \"%(value).1f googol\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \" %(value)s  googol\"\nmsgstr[1] \" %(value)s  googol\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"uno\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"dos\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"tres\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"cuatro\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"cinco\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"seis\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"siete\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"ocho\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"nueve\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"hace %(delta)s\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"ahora\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"hace un segundo\"\nmsgstr[1] \"hace %(count)s segundos\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"hace un minuto\"\nmsgstr[1] \"hace %(count)s minutos \"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"hace una hora\"\nmsgstr[1] \"hace %(count)s horas\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"%(delta)s a partir de ahora\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"un segundo a partir de ahora\"\nmsgstr[1] \"%(count)s segundos a partir de ahora\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"un minuto a partir de ahora\"\nmsgstr[1] \" %(count)s minutos a partir de ahora\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"una hora a partir de ahora\"\nmsgstr[1] \"%(count)s horas a partir de ahora\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/es_AR/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Ramiro Morales <cramm0@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-03-22 11:22+0000\\n\"\n\"Last-Translator: Ramiro Morales <cramm0@gmail.com>\\n\"\n\"Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/\"\n\"django/language/es_AR/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: es_AR\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"hoy\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"ayer\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"mañana\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \"to\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \"ro\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \"do\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \"ro\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"%(value).1f millón\"\nmsgstr[1] \"%(value).1f millones\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"%(value)s millón\"\nmsgstr[1] \"%(value)s millones\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"%(value).1f millardo\"\nmsgstr[1] \"%(value).1f millardos\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"%(value)s millardo\"\nmsgstr[1] \"%(value)s millardos\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"%(value).1f billón\"\nmsgstr[1] \"%(value).1f billones\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"%(value)s billón\"\nmsgstr[1] \"%(value)s billones\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"%(value).1f mil billones\"\nmsgstr[1] \"%(value).1f miles de billones\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"%(value)s mil billones\"\nmsgstr[1] \"%(value)s miles de billones\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"%(value).1f trillón\"\nmsgstr[1] \"%(value).1f trilliones\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"%(value)s trillón\"\nmsgstr[1] \"%(value)s trilliones\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"%(value).1f mil trillones\"\nmsgstr[1] \"%(value).1f miles de trillones\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"%(value)s mil trillones\"\nmsgstr[1] \"%(value)s miles de trillones\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"%(value).1f cuatrillón\"\nmsgstr[1] \"%(value).1f cuatrillones\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"%(value)s cuatrillón\"\nmsgstr[1] \"%(value)s cuatrillones\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"%(value).1f mil cuatrillones\"\nmsgstr[1] \"%(value).1f miles de cuatrillones\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"%(value)s mil cuatrillones\"\nmsgstr[1] \"%(value)s miles de cuatrillones\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"%(value).1f quintillón\"\nmsgstr[1] \"%(value).1f quintillones\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"%(value)s quintillón\"\nmsgstr[1] \"%(value)s quintillones\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"%(value).1f mil quintillones\"\nmsgstr[1] \"%(value).1f miles de quintillones\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"%(value)s mil quintillones\"\nmsgstr[1] \"%(value)s miles de quintillones\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"%(value).1f \\\"gúgol\\\"\"\nmsgstr[1] \"%(value).1f \\\"gúgols\\\"\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"%(value)s \\\"gúgol\\\"\"\nmsgstr[1] \"%(value)s \\\"gúgols\\\"\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"uno\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"dos\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"tres\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"cuatro\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"cinco\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"seis\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"siete\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"ocho\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"nueve\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"hace %(delta)s\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"ahora\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"hace un segundo\"\nmsgstr[1] \"hace %(count)s segundos\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"hace un minuto\"\nmsgstr[1] \"hace %(count)s minutos\"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"hace una hora\"\nmsgstr[1] \"hace %(count)s horas\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"dentro de %(delta)s\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"dentro de un segundo\"\nmsgstr[1] \"dentro de %(count)s segundos\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"dentro de un minuto\"\nmsgstr[1] \"dentro de %(count)s minutos\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"dentro de una hora\"\nmsgstr[1] \"dentro de %(count)s horas\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/es_MX/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Abraham Estrada <abraham.estrada@gmail.com>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-03-06 20:32+0000\\n\"\n\"Last-Translator: Abraham Estrada <abraham.estrada@gmail.com>\\n\"\n\"Language-Team: Spanish (Mexico) (http://www.transifex.com/projects/p/django/\"\n\"language/es_MX/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: es_MX\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"hoy\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"ayer\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"mañana\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \"to\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \"ro\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \"do\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \"ro\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"%(value).1f millón\"\nmsgstr[1] \"%(value).1f millones\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"%(value)s millones\"\nmsgstr[1] \"%(value)s millones\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"%(value).1f billón\"\nmsgstr[1] \"%(value).1f billones\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"%(value)s billiones\"\nmsgstr[1] \"%(value)s billiones\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"%(value).1f trillón\"\nmsgstr[1] \"%(value).1f trillones\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"%(value)s trilliones\"\nmsgstr[1] \"%(value)s trilliones\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"%(value).1f cuatrillón\"\nmsgstr[1] \"%(value).1f cuatrillones\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"%(value)s cuatrillón\"\nmsgstr[1] \"%(value)s cuatrillones\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"%(value).1f quintillón\"\nmsgstr[1] \"%(value).1f quintillones\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"%(value)s quintillón\"\nmsgstr[1] \"%(value)s quintillones\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"%(value).1f sextillón\"\nmsgstr[1] \"%(value).1f sextillones\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"%(value)s sextillón\"\nmsgstr[1] \"%(value)s sextillones\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"%(value).1f septillón\"\nmsgstr[1] \"%(value).1f septillones\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"%(value)s septillón\"\nmsgstr[1] \"%(value)s septillones\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"%(value).1f octillón\"\nmsgstr[1] \"%(value).1f octillones\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"%(value)s octillón\"\nmsgstr[1] \"%(value)s octillones\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"%(value).1f nonillion\"\nmsgstr[1] \"%(value).1f nonillion\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"%(value)s nonillón\"\nmsgstr[1] \"%(value)s nonillones\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"%(value).1f decillón\"\nmsgstr[1] \"%(value).1f decillones\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"%(value)s decillón\"\nmsgstr[1] \"%(value)s decillones\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"%(value).1f googol\"\nmsgstr[1] \"%(value).1f googoles\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"%(value)s googol\"\nmsgstr[1] \"%(value)s googoles\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"uno\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"dos\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"tres\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"cuatro\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"cinco\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"seis\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"siete\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"ocho\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"nueve\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"hace %(delta)s\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"ahora\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"hace un segundo\"\nmsgstr[1] \"hace %(count)s segundos\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"Hace un minuto\"\nmsgstr[1] \"Hace %s minutos\"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"Hace una hora\"\nmsgstr[1] \"Hace %s horas\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"%(delta)s a partir de ahora\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"un segundo a partir de ahora\"\nmsgstr[1] \"%(count)s segundos a partir de ahora\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"un minuto a partir de ahora\"\nmsgstr[1] \"%(count)s minutos a partir de ahora\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"una hora a partir de ahora\"\nmsgstr[1] \"%(count)s horas a partir de ahora\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/et/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:08+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Estonian (http://www.transifex.com/projects/p/django/language/\"\n\"et/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: et\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"täna\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"eile\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"homme\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \".\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \".\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \".\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \".\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"%(value).1f miljon\"\nmsgstr[1] \"%(value).11f miljonit\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"%(value).1f miljard\"\nmsgstr[1] \"%(value).1f miljardit\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"%(value).1f triljon\"\nmsgstr[1] \"%(value).1f triljonit\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"üks\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"kaks\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"kolm\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"neli\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"viis\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"kuus\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"seitse\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"kaheksa\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"üheksa\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/eu/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Aitzol Naberan <anaberan@codesyntax.com>, 2011, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-03-09 10:28+0000\\n\"\n\"Last-Translator: Aitzol Naberan <anaberan@codesyntax.com>\\n\"\n\"Language-Team: Basque (http://www.transifex.com/projects/p/django/language/\"\n\"eu/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: eu\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"gaur\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"atzo\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"bihar\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \"garren\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \".\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \"garren\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \"garren\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"miloi %(value).1f \"\nmsgstr[1] \"%(value).1f miloi\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"milioi %(value)s\"\nmsgstr[1] \"%(value)s milioi\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"biloi %(value).1f \"\nmsgstr[1] \"%(value).1f biloi\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"bilioi %(value)s\"\nmsgstr[1] \"%(value)s bilioi\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"triloi %(value).1f \"\nmsgstr[1] \"%(value).1f triloi\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"trilioi %(value)s\"\nmsgstr[1] \"%(value)s trilioi\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"kuatrilioi %(value).1f \"\nmsgstr[1] \"%(value).1f kuatrilioi\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"kuatrilioi %(value)s\"\nmsgstr[1] \"%(value)s kuatrilioi\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"kintilioi %(value).1f\"\nmsgstr[1] \"%(value).1f kintilioi\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"kintilioi %(value)s\"\nmsgstr[1] \"%(value)s kintilioi\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"sextilioi %(value).1f\"\nmsgstr[1] \"%(value).1f sextilioi\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"sextilioi %(value)s\"\nmsgstr[1] \"%(value)s sextilioi\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"septilioi %(value).1f\"\nmsgstr[1] \"%(value).1f septilioi\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"septilioi %(value)s\"\nmsgstr[1] \"%(value)s septilioi\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"octilioi %(value).1f\"\nmsgstr[1] \"%(value).1f octilioi\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"octillioi %(value)s\"\nmsgstr[1] \" %(value)s  octilioi\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"nonilioi %(value).1f \"\nmsgstr[1] \"%(value).1f nonilioi\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"nonilioi %(value)s\"\nmsgstr[1] \"%(value)s nonilioi\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"dezilioi %(value).1f\"\nmsgstr[1] \"%(value).1f deziioi\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"dezilioi %(value)s \"\nmsgstr[1] \"%(value)s dezilioi\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"gugol %(value).1f\"\nmsgstr[1] \"%(value).1f gugol\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"gugol %(value)s\"\nmsgstr[1] \"%(value)s gugol\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"bat\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"bi\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"hiru\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"lau\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"bost\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"sei\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"zazpi\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"zortzi\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"bederatzi\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"duela %(delta)s\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"orain\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"duela segundu bat\"\nmsgstr[1] \"duela %(count)s segundu\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"duela minutu  bat\"\nmsgstr[1] \"duela %(count)s minutu \"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"duela ordubete\"\nmsgstr[1] \"duela %(count)s ordu\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"%(delta)s barru\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"segundu bat barru\"\nmsgstr[1] \"%(count)s segundu barru\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"minutu bat barru\"\nmsgstr[1] \"%(count)s minutu barru\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"ordubete barru\"\nmsgstr[1] \"%(count)s ordu barru\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/fa/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Ali Nikneshan <ali@nikneshan.com>, 2012.\n# Alireza Savand <alireza.savand@gmail.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-08-11 08:49+0000\\n\"\n\"Last-Translator: Ali Nikneshan <ali@nikneshan.com>\\n\"\n\"Language-Team: Persian (http://www.transifex.com/projects/p/django/language/\"\n\"fa/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: fa\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"امروز\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"دیروز\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"فردا\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \"اُم\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \"اُم\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \"اُم\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \"اُم\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"%(value).1f میلیون\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"%(value)s میلیون\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"%(value).1f بیلیون\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"%(value)s میلیارد\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"%(value).1f تریلون\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"%(value)s تریلیون\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"%(value).1f کوادریلیون\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"%(value)s کوادریلیون\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"%(value).1f  کوانتینیوم\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"%(value)s کوانتینیوم\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"%(value).1f  با 21 صفر\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"%(value)s با 21 صفر\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"%(value).1f سپتیلیون\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"%(value)s سپتیلیون\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"%(value).1f octillion\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"%(value)s octillion\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \" %(value).1f با 54 صفر\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"%(value)s با 54 صفر\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"%(value).1f با شصت صفر\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"%(value)s با شصت صفر\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"%(value).1f googol\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"%(value)s googol\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"یک\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"دو\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"سه\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"چهار\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"پنج\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"شش\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"هفت\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"هشت\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"نُه\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"%(delta)s قبل\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"اکنون\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"%(count)s ثانیه پیش\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"\"\n\"%(count)s دقیقه پیش\\n\"\n\" \"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"%(count)s ساعت پیش\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"%(delta)s از الان\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"%(count)s ثانیه بعد\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"%(count)s دقیقه بعد\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"%(count)s ساعت بعد\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/fi/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Antti Kaihola <akaihol+transifex@ambitone.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:08+0000\\n\"\n\"Last-Translator: Antti Kaihola <akaihol+transifex@ambitone.com>\\n\"\n\"Language-Team: Finnish (http://www.transifex.com/projects/p/django/language/\"\n\"fi/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: fi\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"tänään\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"eilen\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"huomenna\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \".\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \".\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \".\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \".\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"%(value).1f miljoona\"\nmsgstr[1] \"%(value).1f miljoonaa\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"%(value)s miljoona\"\nmsgstr[1] \"%(value)s miljoonaa\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"%(value).1f miljardi\"\nmsgstr[1] \"%(value).1f miljardia\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"%(value)s miljardi\"\nmsgstr[1] \"%(value)s miljardia\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"%(value).1f biljoona\"\nmsgstr[1] \"%(value).1f biljoonaa\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"%(value)s biljoona\"\nmsgstr[1] \"%(value)s biljoonaa\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"yksi\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"kaksi\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"kolme\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"neljä\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"viisi\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"kuusi\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"seitsemän\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"kahdeksan\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"yhdeksän\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"%(delta)s sitten\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"nyt\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"sekunti sitten\"\nmsgstr[1] \"%(count)s sekuntia sitten\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"minuutti sitten\"\nmsgstr[1] \"%(count)s minuuttia sitten\"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"tunti sitten\"\nmsgstr[1] \"%(count)s tuntia sitten\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"%(delta)s tästä hetkestä\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"sekunnin kuluttua\"\nmsgstr[1] \"%(count)s sekunnin kuluttua\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"minuutin kuluttua\"\nmsgstr[1] \"%(count)s minuutin kuluttua\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"tunnin kuluttua\"\nmsgstr[1] \"%(count)s tunnin kuluttua\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/fr/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <claude@2xlibre.net>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:08+0000\\n\"\n\"Last-Translator: claudep <claude@2xlibre.net>\\n\"\n\"Language-Team: French (http://www.transifex.com/projects/p/django/language/\"\n\"fr/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: fr\\n\"\n\"Plural-Forms: nplurals=2; plural=(n > 1);\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"aujourd'hui\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"hier\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"demain\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \"<sup>e</sup>\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \"<sup>er</sup>\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \"<sup>e</sup>\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \"<sup>e</sup>\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"%(value).1f million\"\nmsgstr[1] \"%(value).1f millions\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"%(value)s million\"\nmsgstr[1] \"%(value)s millions\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"%(value).1f milliard\"\nmsgstr[1] \"%(value).1f milliards\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"%(value)s milliard\"\nmsgstr[1] \"%(value)s milliards\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"%(value).1f billion\"\nmsgstr[1] \"%(value).1f billions\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"%(value)s billion\"\nmsgstr[1] \"%(value)s billions\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"%(value).1f quadrillion\"\nmsgstr[1] \"%(value).1f quadrillions\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"%(value)s quadrillion\"\nmsgstr[1] \"%(value)s quadrillions\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"%(value).1f quintillion\"\nmsgstr[1] \"%(value).1f quintillions\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"%(value)s quintillion\"\nmsgstr[1] \"%(value)s quintillions\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"%(value).1f sextillion\"\nmsgstr[1] \"%(value).1f sextillions\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"%(value)s sextillion\"\nmsgstr[1] \"%(value)s sextillion\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"%(value).1f septillion\"\nmsgstr[1] \"%(value).1f septillions\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"%(value)s septillion\"\nmsgstr[1] \"%(value)s septillions\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"%(value).1f octillion\"\nmsgstr[1] \"%(value).1f octillions\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"%(value)s octillion\"\nmsgstr[1] \"%(value)s octillions\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"%(value).1f nonillion\"\nmsgstr[1] \"%(value).1f nonillions\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"%(value)s nonillion\"\nmsgstr[1] \"%(value)s nonillions\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"%(value).1f décillion\"\nmsgstr[1] \"%(value).1f décillions\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"%(value)s décillion\"\nmsgstr[1] \"%(value)s décillions\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"%(value).1f gogol\"\nmsgstr[1] \"%(value).1f gogols\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"%(value)s gogol\"\nmsgstr[1] \"%(value)s gogols\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"un\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"deux\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"trois\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"quatre\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"cinq\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"six\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"sept\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"huit\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"neuf\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"il y a %(delta)s\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"maintenant\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"il y a une seconde\"\nmsgstr[1] \"il y a %(count)s secondes\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"il y a une minute\"\nmsgstr[1] \"il y a %(count)s minutes\"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"il y a une heure\"\nmsgstr[1] \"il y a %(count)s heures\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"dans %(delta)s\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"dans une seconde\"\nmsgstr[1] \"dans %(count)s secondes\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"dans une minute\"\nmsgstr[1] \"dans %(count)s minutes\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"dans une heure\"\nmsgstr[1] \"dans %(count)s heures\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/fy_NL/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:41+0100\\n\"\n\"PO-Revision-Date: 2011-03-15 15:28+0000\\n\"\n\"Last-Translator: Django team\\n\"\n\"Language-Team: English <en@li.org>\\n\"\n\"Language: fy_NL\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1)\\n\"\n\n#: tests.py:108 templatetags/humanize.py:164\nmsgid \"today\"\nmsgstr \"\"\n\n#: tests.py:108 templatetags/humanize.py:168\nmsgid \"yesterday\"\nmsgstr \"\"\n\n#: tests.py:108 templatetags/humanize.py:166\nmsgid \"tomorrow\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:24\nmsgid \"th\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:24\nmsgid \"st\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:24\nmsgid \"nd\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:24\nmsgid \"rd\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:53\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:57\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:61\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:65\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:69\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:73\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:77\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:81\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:85\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:89\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:93\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:143\nmsgid \"one\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:143\nmsgid \"two\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:143\nmsgid \"three\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:143\nmsgid \"four\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:143\nmsgid \"five\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:143\nmsgid \"six\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:143\nmsgid \"seven\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:143\nmsgid \"eight\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:143\nmsgid \"nine\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:185\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:188 templatetags/humanize.py:210\nmsgid \"now\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:191\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:207\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:213\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/ga/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Michael Thornhill <michael@maithu.com>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-03-16 13:31+0000\\n\"\n\"Last-Translator: Michael Thornhill <michael@maithu.com>\\n\"\n\"Language-Team: Irish (http://www.transifex.com/projects/p/django/language/\"\n\"ga/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ga\\n\"\n\"Plural-Forms: nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : \"\n\"4);\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"inniu\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"inné\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"amárach\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \"ú\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \"ú\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \"ú\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \"ú\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"%(value).1f milliún\"\nmsgstr[1] \"%(value).1f milliún\"\nmsgstr[2] \"%(value).1f milliún\"\nmsgstr[3] \"%(value).1f milliún\"\nmsgstr[4] \"%(value).1f milliún\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \" %(value)s  milliún\"\nmsgstr[1] \" %(value)s  milliún\"\nmsgstr[2] \" %(value)s  milliún\"\nmsgstr[3] \" %(value)s  milliún\"\nmsgstr[4] \" %(value)s  milliún\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"%(value).1f billiún\"\nmsgstr[1] \"%(value).1f billiún\"\nmsgstr[2] \"%(value).1f billiún\"\nmsgstr[3] \"%(value).1f billiún\"\nmsgstr[4] \"%(value).1f billiún\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \" %(value)s  billiún\"\nmsgstr[1] \" %(value)s  billiún\"\nmsgstr[2] \" %(value)s  billiún\"\nmsgstr[3] \" %(value)s  billiún\"\nmsgstr[4] \" %(value)s  billiún\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"%(value).1f trilliún\"\nmsgstr[1] \"%(value).1f trilliún\"\nmsgstr[2] \"%(value).1f trilliún\"\nmsgstr[3] \"%(value).1f trilliún\"\nmsgstr[4] \"%(value).1f trilliún\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \" %(value)s  trilliún\"\nmsgstr[1] \" %(value)s  trilliún\"\nmsgstr[2] \" %(value)s  trilliún\"\nmsgstr[3] \" %(value)s  trilliún\"\nmsgstr[4] \" %(value)s  trilliún\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"%(value).1f quadrilliún\"\nmsgstr[1] \"%(value).1f quadrilliún\"\nmsgstr[2] \"%(value).1f quadrilliún\"\nmsgstr[3] \"%(value).1f quadrilliún\"\nmsgstr[4] \"%(value).1f quadrilliún\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"%(value)s quadrilliún\"\nmsgstr[1] \"%(value)s quadrilliún\"\nmsgstr[2] \"%(value)s quadrilliún\"\nmsgstr[3] \"%(value)s quadrilliún\"\nmsgstr[4] \"%(value)s quadrilliún\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"%(value).1f quintillion\"\nmsgstr[1] \"%(value).1f quintillion\"\nmsgstr[2] \"%(value).1f quintillion\"\nmsgstr[3] \"%(value).1f quintillion\"\nmsgstr[4] \"%(value).1f quintillion\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"%(value)s quintillion\"\nmsgstr[1] \"%(value)s quintillion\"\nmsgstr[2] \"%(value)s quintillion\"\nmsgstr[3] \"%(value)s quintillion\"\nmsgstr[4] \"%(value)s quintillion\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"%(value).1f sextillion\"\nmsgstr[1] \"%(value).1f sextillion\"\nmsgstr[2] \"%(value).1f sextillion\"\nmsgstr[3] \"%(value).1f sextillion\"\nmsgstr[4] \"%(value).1f sextillion\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"%(value)s sextillion\"\nmsgstr[1] \"%(value)s sextillion\"\nmsgstr[2] \"%(value)s sextillion\"\nmsgstr[3] \"%(value)s sextillion\"\nmsgstr[4] \"%(value)s sextillion\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"%(value).1f septillion\"\nmsgstr[1] \"%(value).1f septillion\"\nmsgstr[2] \"%(value).1f septillion\"\nmsgstr[3] \"%(value).1f septillion\"\nmsgstr[4] \"%(value).1f septillion\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"%(value)s septillion\"\nmsgstr[1] \"%(value)s septillion\"\nmsgstr[2] \"%(value)s septillion\"\nmsgstr[3] \"%(value)s septillion\"\nmsgstr[4] \"%(value)s septillion\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"%(value).1f octillion\"\nmsgstr[1] \"%(value).1f octillion\"\nmsgstr[2] \"%(value).1f octillion\"\nmsgstr[3] \"%(value).1f octillion\"\nmsgstr[4] \"%(value).1f octillion\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"%(value)s octillion\"\nmsgstr[1] \"%(value)s octillion\"\nmsgstr[2] \"%(value)s octillion\"\nmsgstr[3] \"%(value)s octillion\"\nmsgstr[4] \"%(value)s octillion\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"%(value).1f nonillion\"\nmsgstr[1] \"%(value).1f nonillion\"\nmsgstr[2] \"%(value).1f nonillion\"\nmsgstr[3] \"%(value).1f nonillion\"\nmsgstr[4] \"%(value).1f nonillion\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"%(value)s nonillion\"\nmsgstr[1] \"%(value)s nonillion\"\nmsgstr[2] \"%(value)s nonillion\"\nmsgstr[3] \"%(value)s nonillion\"\nmsgstr[4] \"%(value)s nonillion\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"%(value).1f decillion\"\nmsgstr[1] \"%(value).1f decillion\"\nmsgstr[2] \"%(value).1f decillion\"\nmsgstr[3] \"%(value).1f decillion\"\nmsgstr[4] \"%(value).1f decillion\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"%(value)s decillion\"\nmsgstr[1] \"%(value)s decillion\"\nmsgstr[2] \"%(value)s decillion\"\nmsgstr[3] \"%(value)s decillion\"\nmsgstr[4] \"%(value)s decillion\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"%(value).1f googol\"\nmsgstr[1] \"%(value).1f googol\"\nmsgstr[2] \"%(value).1f googol\"\nmsgstr[3] \"%(value).1f googol\"\nmsgstr[4] \"%(value).1f googol\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"%(value)s googol\"\nmsgstr[1] \"%(value)s googol\"\nmsgstr[2] \"%(value)s googol\"\nmsgstr[3] \"%(value)s googol\"\nmsgstr[4] \"%(value)s googol\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"aon\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"dó\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"trí\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"ceathair\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"cúig\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"sé\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"seacht\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"ocht\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"naoi\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"%(delta)s ó shin\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"anois\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"soicind ó shin\"\nmsgstr[1] \"%(count)s soicind ó shin\"\nmsgstr[2] \"%(count)s soicind ó shin\"\nmsgstr[3] \"%(count)s soicind ó shin\"\nmsgstr[4] \"%(count)s soicind ó shin\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"nóiméad ó shin\"\nmsgstr[1] \"%(count)s nóiméad ó shin\"\nmsgstr[2] \"%(count)s nóiméad ó shin\"\nmsgstr[3] \"%(count)s nóiméad ó shin\"\nmsgstr[4] \"%(count)s nóiméad ó shin\"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"uair a chloig ó shin\"\nmsgstr[1] \"%(count)s uair a chloig ó shin\"\nmsgstr[2] \"%(count)s uair a chloig ó shin\"\nmsgstr[3] \"%(count)s uair a chloig ó shin\"\nmsgstr[4] \"%(count)s uair a chloig ó shin\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \" %(delta)s as seo amach\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"soicind as seo amach\"\nmsgstr[1] \"%(count)s soicind as seo amach\"\nmsgstr[2] \"%(count)s soicind as seo amach\"\nmsgstr[3] \"%(count)s soicind as seo amach\"\nmsgstr[4] \"%(count)s soicind as seo amach\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"nóiméad as seo amach\"\nmsgstr[1] \"%(count)s nóiméad as seo amach\"\nmsgstr[2] \"%(count)s nóiméad as seo amach\"\nmsgstr[3] \"%(count)s nóiméad as seo amach\"\nmsgstr[4] \"%(count)s nóiméad as seo amach\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"uair a chloig as seo amach\"\nmsgstr[1] \"%(count)s uair a chloig as seo amach\"\nmsgstr[2] \"%(count)s uair a chloig as seo amach\"\nmsgstr[3] \"%(count)s uair a chloig as seo amach\"\nmsgstr[4] \"%(count)s uair a chloig as seo amach\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/gl/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# fasouto <fsoutomoure@gmail.com>, 2011.\n#   <fonzzo@gmail.com>, 2013.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Leandro Regueiro <leandro.regueiro@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2013-01-07 11:58+0000\\n\"\n\"Last-Translator: fonso <fonzzo@gmail.com>\\n\"\n\"Language-Team: Galician (http://www.transifex.com/projects/p/django/language/\"\n\"gl/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: gl\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"hoxe\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"onte\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"mañá\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \"º\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \"º\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \"º\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \"º\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"%(value).1f millón\"\nmsgstr[1] \"%(value).1f millóns\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"%(value)s millón\"\nmsgstr[1] \"%(value)s millóns\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"%(value).1f mil millóns\"\nmsgstr[1] \"%(value).1f miles de millóns\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"%(value)s mil millóns\"\nmsgstr[1] \"%(value)s mil millóns\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"%(value).1f billón\"\nmsgstr[1] \"%(value).1f billóns\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"%(value)s billón\"\nmsgstr[1] \"%(value)s billóns\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"%(value).1f trillóns\"\nmsgstr[1] \"%(value).1f trillóns\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"%(value)s trillón\"\nmsgstr[1] \"%(value)s trillóns\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"%(value).1f cuadrillóns\"\nmsgstr[1] \"%(value).1f cuadrillóns\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"%(value)s cuadrillón\"\nmsgstr[1] \"%(value)s cuadrillóns\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"%(value).1f quintillóns\"\nmsgstr[1] \"%(value).1f quintillóns\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"%(value)s quintillón\"\nmsgstr[1] \"%(value)s quintillóns\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"%(value).1f sextillóns\"\nmsgstr[1] \"%(value).1f sextillóns\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"%(value)s sextillón\"\nmsgstr[1] \"%(value)s sextillóns\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"%(value).1f septillóns\"\nmsgstr[1] \"%(value).1f septillóns\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"%(value)s septillón\"\nmsgstr[1] \"%(value)s septillóns\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"%(value).1f octillóns\"\nmsgstr[1] \"%(value).1f octillóns\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"%(value)s octillón\"\nmsgstr[1] \"%(value)s octillóns\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"%(value).1f nonillóns\"\nmsgstr[1] \"%(value).1f nonillóns\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"%(value)s nonillón\"\nmsgstr[1] \"%(value)s nonillóns\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"%(value).1f gúgols\"\nmsgstr[1] \"%(value).1f gúgols\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"%(value)s gúgol\"\nmsgstr[1] \"%(value)s gúgols\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"un\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"dous\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"tres\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"catro\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"cinco\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"seis\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"sete\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"oito\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"nove\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"hai %(delta)s\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"agora\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"hai un segundo\"\nmsgstr[1] \"hai %(count)s segundos\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"hai un minuto\"\nmsgstr[1] \"hai %(count)s minutos\"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"hai unha hora\"\nmsgstr[1] \"hai %(count)s horas\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"dentro de %(delta)s\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"dentro dun segundo\"\nmsgstr[1] \"dentro de %(count)s segundos\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"dentro dun minuto\"\nmsgstr[1] \"dentro de %(count)s minutos\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"dentro dunha hora\"\nmsgstr[1] \"dentro de %(count)s horas\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/he/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Alex Gaynor <alex.gaynor@gmail.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Meir Kriheli <mkriheli@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-10-21 11:11+0000\\n\"\n\"Last-Translator: Meir Kriheli <mkriheli@gmail.com>\\n\"\n\"Language-Team: Hebrew (http://www.transifex.com/projects/p/django/language/\"\n\"he/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: he\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"היום\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"אתמול\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"מחר\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \"רביעי\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \"ראשון\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \"שני\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \"שלישי\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"%(value).1f מיליון\"\nmsgstr[1] \"%(value).1f מיליונים\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"%(value)s מיליון\"\nmsgstr[1] \"%(value)s מיליון\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"%(value).1f מיליארד\"\nmsgstr[1] \"%(value).1f מיליארדים\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"%(value)s מיליארד\"\nmsgstr[1] \"%(value)s מיליארד\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"%(value).1f טריליון\"\nmsgstr[1] \"%(value).1f טריליונים\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"%(value)s טריליון\"\nmsgstr[1] \"%(value)s טריליון\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"%(value).1f קוודריליון\"\nmsgstr[1] \"%(value).1f קוודריליון\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"%(value)s קוודריליון\"\nmsgstr[1] \"%(value)s קוודריליון\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"%(value).1f קווינטיליון\"\nmsgstr[1] \"%(value).1f קווינטיליון\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"%(value)s קווינטיליון\"\nmsgstr[1] \"%(value)s קווינטיליון\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"%(value).1f סקסטיליון\"\nmsgstr[1] \"%(value).1f סקסטיליון\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"%(value)s סקסטיליון\"\nmsgstr[1] \"%(value)s סקסטיליון\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"%(value).1f ספטיליון\"\nmsgstr[1] \"%(value).1f ספטיליון\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"%(value)s ספטיליון\"\nmsgstr[1] \"%(value)s ספטיליון\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"%(value).1f אוקטיליון\"\nmsgstr[1] \"%(value).1f אוקטיליון\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"%(value)s אוקטיליון\"\nmsgstr[1] \"%(value)s אוקטיליון\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"%(value).1f נוניליון\"\nmsgstr[1] \"%(value).1f נוניליון\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"%(value)s נוניליון\"\nmsgstr[1] \"%(value)s נוניליון\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"%(value).1f דציליון\"\nmsgstr[1] \"%(value).1f דציליון\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"%(value)s דציליון\"\nmsgstr[1] \"%(value)s דציליון\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"%(value).1f גוגול\"\nmsgstr[1] \"%(value).1f גוגול\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"%(value)s גוגול\"\nmsgstr[1] \"%(value)s גוגול\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"אחד\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"שניים\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"שלושה\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"ארבעה\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"חמישה\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"שישה\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"שבעה\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"שמונה\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"תשעה\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"לפני %(delta)s\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"עכשיו\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"לפני שנייה\"\nmsgstr[1] \"לפני %(count)s שניות\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"לפני דקה\"\nmsgstr[1] \"לפני %(count)s דקות\"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"לפני שעה\"\nmsgstr[1] \"לפני %(count)s שעות\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"בעוד %(delta)s\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"בעוד שנייה\"\nmsgstr[1] \"בעוד %(count)s שניות\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"בעוד דקה\"\nmsgstr[1] \"בעוד %(count)s דקות\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"בעוד שעה\"\nmsgstr[1] \"בעוד %(count)s שעות\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/hi/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# chandankumar(ciypro) <chandankumar.093047@gmail.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Sandeep Satavlekar <sandysat@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-03-04 08:26+0000\\n\"\n\"Last-Translator: Chandan kumar <chandankumar.093047@gmail.com>\\n\"\n\"Language-Team: Hindi (http://www.transifex.com/projects/p/django/language/\"\n\"hi/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: hi\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"आज\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"कल (बीता)\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"कल\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \"वाँ\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \"ला\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \"रा\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \"रा\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"%(value).1f मिलियन\"\nmsgstr[1] \"%(value).1f मिलियन\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"%(value)s मिलियन\"\nmsgstr[1] \"%(value)s मिलियन\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"%(value).1f बिलियन\"\nmsgstr[1] \"%(value).1f बिलियन\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"%(value)s बिलियन\"\nmsgstr[1] \"%(value)s बिलियन\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"%(value).1f खरब\"\nmsgstr[1] \"%(value).1f खरब\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"%(value)s खरब\"\nmsgstr[1] \"%(value)s खरब\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"%(value).1f करोड़ शंख\"\nmsgstr[1] \"%(value).1f करोड़ शंख\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"%(value)s करोड़ शंख\"\nmsgstr[1] \"%(value)s करोड़ शंख\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"%(value).1f कुइनतिलिअन \"\nmsgstr[1] \"%(value).1f कुइनतिलिअन \"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"%(value)s कुइनतिलिअन \"\nmsgstr[1] \"%(value)s कुइनतिलिअन \"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"%(value).1f सेक्सतिलियन\"\nmsgstr[1] \"%(value).1f सेक्सतिलियन\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"%(value)s सेक्सतिलियन\"\nmsgstr[1] \"%(value)s सेक्सतिलियन\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"%(value).1f सेपतिलियन \"\nmsgstr[1] \"%(value).1f सेपतिलियन \"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"%(value)s सेपतिलियन \"\nmsgstr[1] \"%(value)s सेपतिलियन \"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"%(value).1f ओकतिलियन \"\nmsgstr[1] \"%(value).1f ओकतिलियन \"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"%(value)s ओकतिलियन \"\nmsgstr[1] \"%(value)s ओकतिलियन \"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"%(value).1f नोनिलियन\"\nmsgstr[1] \"%(value).1f नोनिलियन\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"%(value)s नोनिलियन\"\nmsgstr[1] \"%(value)s नोनिलियन\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"%(value).1f देसीलियन\"\nmsgstr[1] \"%(value).1f देसीलियन\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"%(value)s देसीलियन\"\nmsgstr[1] \"%(value)s देसीलियन\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"%(value).1f गोगोल\"\nmsgstr[1] \"%(value).1f गोगोल\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"%(value)s गोगोल\"\nmsgstr[1] \"%(value)s गोगोल\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"एक\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"दो\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"तीन\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"चार\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"पाँच\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"छह\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"सात\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"आठ\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"नौ\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"%(delta)s पहले\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"अभी\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"एक सेकेंड पहले\"\nmsgstr[1] \"%(count)s सेकेंड पहले\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \" एक मिनट पहले\"\nmsgstr[1] \"%(count)s मिनट पहले\"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"एक घंटा पहले\"\nmsgstr[1] \"%(count)s घंटे पहले\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"%(delta)s अब से\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"अब से एक सेकेंड\"\nmsgstr[1] \"अब से %(count)s सेकेंड\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"अब से एक मिनट\"\nmsgstr[1] \"अब से %(count)s मिनट\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"अब से एक घंटा\"\nmsgstr[1] \"अब से %(count)s घंटे\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/hr/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <aljosa.mohorovic@gmail.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <senko.rasic@dobarkod.hr>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-04-16 10:48+0000\\n\"\n\"Last-Translator: aljosa <aljosa.mohorovic@gmail.com>\\n\"\n\"Language-Team: Croatian (http://www.transifex.com/projects/p/django/language/\"\n\"hr/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: hr\\n\"\n\"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"danas\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"jučer\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"sutra\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \"th\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \"st\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \"nd\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \"rd\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"%(value).1f milijun\"\nmsgstr[1] \"%(value).1f milijuna\"\nmsgstr[2] \"%(value).1f milijuna\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"%(value)s milijun\"\nmsgstr[1] \"%(value)s milijuna\"\nmsgstr[2] \"%(value)s milijun\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"%(value).1f milijarda\"\nmsgstr[1] \"%(value).1f milijarde\"\nmsgstr[2] \"%(value).1f milijarde\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"%(value)s milijarda\"\nmsgstr[1] \"%(value)s milijarde\"\nmsgstr[2] \"%(value)s milijardi\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"%(value).1f bilion\"\nmsgstr[1] \"%(value).1f biliona\"\nmsgstr[2] \"%(value).1f bilion\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"%(value)s bilijun\"\nmsgstr[1] \"%(value)s bilijuna\"\nmsgstr[2] \"%(value)s bilijuna\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"%(value).1f kvadrilijun\"\nmsgstr[1] \"%(value).1f kvadrilijuna\"\nmsgstr[2] \"%(value).1f kvadrilijuna\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"%(value)s kvadrilijun\"\nmsgstr[1] \"%(value)s kvadrilijuna\"\nmsgstr[2] \"%(value)s kvadrilijuna\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"%(value).1f kvintilijun\"\nmsgstr[1] \"%(value).1f kvintilijuna\"\nmsgstr[2] \"%(value).1f kvintilijuna\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"%(value)s kvintilijun\"\nmsgstr[1] \"%(value)s kvintilijuna\"\nmsgstr[2] \"%(value)s kvintilijuna\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"%(value).1f sekstilijun\"\nmsgstr[1] \"%(value).1f sekstilijuna\"\nmsgstr[2] \"%(value).1f sekstilijuna\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"%(value)s sekstilijun\"\nmsgstr[1] \"%(value)s sekstilijuna\"\nmsgstr[2] \"%(value)s sekstilijuna\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"%(value).1f septilijun\"\nmsgstr[1] \"%(value).1f septilijuna\"\nmsgstr[2] \"%(value).1f septilijuna\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"%(value)s septilijun\"\nmsgstr[1] \"%(value)s septilijuna\"\nmsgstr[2] \"%(value)s septilijuna\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"%(value).1f oktilijun\"\nmsgstr[1] \"%(value).1f oktilijuna\"\nmsgstr[2] \"%(value).1f oktilijuna\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"%(value)s oktilijun\"\nmsgstr[1] \"%(value)s oktilijuna\"\nmsgstr[2] \"%(value)s oktilijuna\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"%(value).1f nonillion\"\nmsgstr[1] \"%(value).1f nonillion\"\nmsgstr[2] \"%(value).1f nonillion\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"%(value)s nonillion\"\nmsgstr[1] \"%(value)s nonillion\"\nmsgstr[2] \"%(value)s nonillion\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"%(value).1f decillion\"\nmsgstr[1] \"%(value).1f decillion\"\nmsgstr[2] \"%(value).1f decillion\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"%(value)s decillion\"\nmsgstr[1] \"%(value)s decillion\"\nmsgstr[2] \"%(value)s decillion\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"%(value).1f googol\"\nmsgstr[1] \"%(value).1f googol\"\nmsgstr[2] \"%(value).1f googol\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"%(value)s googol\"\nmsgstr[1] \"%(value)s googol\"\nmsgstr[2] \"%(value)s googol\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"jedan\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"dva\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"tri\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"četiri\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"pet\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"šest\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"sedam\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"osam\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"devet\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"prije %(delta)s\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"sada\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"prije sekundu\"\nmsgstr[1] \"prije %(count)s sekunde\"\nmsgstr[2] \"prije %(count)s sekundi\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"prije minutu\"\nmsgstr[1] \"prije %(count)s minute\"\nmsgstr[2] \"prije %(count)s minuta\"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"prije sat vremena\"\nmsgstr[1] \"prije %(count)s sata\"\nmsgstr[2] \"prije %(count)s sati\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"%(delta)s od sad\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"sekunda od sad\"\nmsgstr[1] \"%(count)s sekunde od sad\"\nmsgstr[2] \"%(count)s sekundi od sad\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"za minutu\"\nmsgstr[1] \"za %(count)s minuta\"\nmsgstr[2] \"za %(count)s minuta\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"za sat vremena\"\nmsgstr[1] \"za %(count)s sata/sati\"\nmsgstr[2] \"za %(count)s sata/sati\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/hu/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Attila Nagy <>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# János Péter Ronkay <transifex@hangya.net>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-03-19 20:34+0000\\n\"\n\"Last-Translator: istvanf <istvan.farkas@gmail.com>\\n\"\n\"Language-Team: Hungarian (http://www.transifex.com/projects/p/django/\"\n\"language/hu/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: hu\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"ma\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"tegnap\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"holnap\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \".\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \".\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \".\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \".\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"%(value)1f millió\"\nmsgstr[1] \"%(value)1f millió\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"%(value)s millió\"\nmsgstr[1] \"%(value)s millió\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"%(value)1f milliárd\"\nmsgstr[1] \"%(value)1f milliárd\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \" %(value)s milliárd\"\nmsgstr[1] \" %(value)s milliárd\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"%(value)1f trilliárd\"\nmsgstr[1] \"%(value)1f trilliárd\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"%(value)s billió\"\nmsgstr[1] \"%(value)s billió\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"%(value).1f billiárd\"\nmsgstr[1] \"%(value).1f billiárd\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"%(value)s billiárd\"\nmsgstr[1] \"%(value)s billiárd\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"%(value).1f trillió\"\nmsgstr[1] \"%(value).1f trillió\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"%(value)s trillió\"\nmsgstr[1] \"%(value)s trillió\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"%(value).1f trilliárd\"\nmsgstr[1] \"%(value).1f trilliárd\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"%(value)s trilliárd\"\nmsgstr[1] \"%(value)s trilliárd\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"%(value).1f kvadrillió\"\nmsgstr[1] \"%(value).1f kvadrillió\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"%(value)s kvadrillió\"\nmsgstr[1] \"%(value)s kvadrillió\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"%(value).1f kvadrilliárd\"\nmsgstr[1] \"%(value).1f kvadrilliárd\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"%(value)s kvadrilliárd\"\nmsgstr[1] \"%(value)s kvadrilliárd\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"%(value).1f kvintillió\"\nmsgstr[1] \"%(value).1f kvintillió\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"%(value)s kvintillió\"\nmsgstr[1] \"%(value)s kvintillió\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"%(value).1f kvintilliárd\"\nmsgstr[1] \"%(value).1f kvintilliárd\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"%(value)s kvintilliárd\"\nmsgstr[1] \"%(value)s kvintilliárd\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"%(value).1f googol\"\nmsgstr[1] \"%(value).1f googol\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"%(value)s googol\"\nmsgstr[1] \"%(value)s googol\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"egy\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"kettő\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"három\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"négy\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"öt\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"hat\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"hét\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"nyolc\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"kilenc\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \" %(delta)s ezelőtt\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"most\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"egy másodperccel ezelőtt\"\nmsgstr[1] \"%(count)s másodperccel ezelőtt\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"egy perccel ezelőtt\"\nmsgstr[1] \"%(count)s perccel ezelőtt\"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"egy órával ezelőtt\"\nmsgstr[1] \"%(count)s órával ezelőtt\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"%(delta)s mostantól\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"egy másodperccel ezután\"\nmsgstr[1] \"%(count)s másodperccel ezután\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"egy perccel ezután\"\nmsgstr[1] \"%(count)s perccel ezután\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"egy órával ezután\"\nmsgstr[1] \"%(count)s órával ezután\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/ia/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Martijn Dekker <mcdutchie@hotmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-05-03 20:48+0000\\n\"\n\"Last-Translator: Martijn Dekker <mcdutchie@hotmail.com>\\n\"\n\"Language-Team: Interlingua (http://www.transifex.com/projects/p/django/\"\n\"language/ia/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ia\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"hodie\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"heri\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"deman\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \"e\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \"me\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \"nde\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \"tie\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"%(value).1f million\"\nmsgstr[1] \"%(value).1f milliones\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"%(value)s million\"\nmsgstr[1] \"%(value)s milliones\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"%(value).1f milliardo\"\nmsgstr[1] \"%(value).1f milliardos\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"%(value)s milliardo\"\nmsgstr[1] \"%(value)s milliardos\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"%(value).1f billion\"\nmsgstr[1] \"%(value).1f billiones\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"%(value)s billion\"\nmsgstr[1] \"%(value)s billiones\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"%(value).1f billiardo\"\nmsgstr[1] \"%(value).1f billiardos\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"%(value)s billiardo\"\nmsgstr[1] \"%(value)s billiardos\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"%(value).1f trillion\"\nmsgstr[1] \"%(value).1f trilliones\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"%(value)s trillion\"\nmsgstr[1] \"%(value)s trilliones\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"%(value).1f trilliardo\"\nmsgstr[1] \"%(value).1f trilliardos\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"%(value)s trilliardo\"\nmsgstr[1] \"%(value)s trilliardos\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"%(value).1f quadrillion\"\nmsgstr[1] \"%(value).1f quadrilliones\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"%(value)s quadrillion\"\nmsgstr[1] \"%(value)s quadrilliones\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"%(value).1f quadrilliardo\"\nmsgstr[1] \"%(value).1f quadrilliardos\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"%(value)s quadrilliardo\"\nmsgstr[1] \"%(value)s quadrilliardos\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"%(value).1f quintillion\"\nmsgstr[1] \"%(value).1f quintilliones\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"%(value)s quintillion\"\nmsgstr[1] \"%(value)s quintilliones\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"%(value).1f quintilliardo\"\nmsgstr[1] \"%(value).1f quintilliardos\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"%(value)s quintilliardo\"\nmsgstr[1] \"%(value)s quintilliardos\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"%(value).1f googol\"\nmsgstr[1] \"%(value).1f googoles\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"%(value)s googol\"\nmsgstr[1] \"%(value)s googoles\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"un\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"duo\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"tres\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"quatro\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"cinque\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"sex\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"septe\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"octo\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"novem\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"%(delta)s retro\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"ora\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"un secunda retro\"\nmsgstr[1] \"%(count)s secundas retro\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"un minuta retro\"\nmsgstr[1] \"%(count)s minutas retro\"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"un hora retro\"\nmsgstr[1] \"%(count)s horas retro\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"in %(delta)s\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"in un secunda\"\nmsgstr[1] \"in %(count)s secundas\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"in un minuta\"\nmsgstr[1] \"in %(count)s minutas\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"in un hora\"\nmsgstr[1] \"in %(count)s horas\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/id/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <romihardiyanto@gmail.com>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-03-06 20:12+0000\\n\"\n\"Last-Translator: rodin <romihardiyanto@gmail.com>\\n\"\n\"Language-Team: Indonesian (http://www.transifex.com/projects/p/django/\"\n\"language/id/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: id\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"hari ini\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"kemarin\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"besok\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \"th\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \"st\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \"nd\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \"rd\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"%(value).1f juta\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"%(value)s juta\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"%(value).1f milyar\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"%(value)s miliar\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"%(value).1f trilyun\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"%(value)s triliun\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"%(value).1f kuadriliun\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"%(value)s kuadriliun\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"%(value).1f kuintiliun\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"%(value)s kuintiliun\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"%(value).1f sekstiliun\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"%(value)s sekstiliun\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"%(value).1f septiliun\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"%(value)s septiliun\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"%(value).1f oktiliun\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"%(value)s oktiliun\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"%(value).1f noniliun\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"%(value)s noniliun\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"%(value).1f desiliun\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"%(value)s desiliun\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"%(value).1f googol\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"%(value)s googol\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"satu\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"dua\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"tiga\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"empat\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"lima\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"enam\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"tujuh\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"delapan\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"sembilan\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"%(delta)s yang lalu\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"sekarang\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"%(count)s detik yang lalu\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"%(count)s menit yang lalu\"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"%(count)s jam yang lalu\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"%(delta)s dari sekarang\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"%(count)s detik dari sekarang\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"%(count)s menit dari sekarang\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"%(count)s jam dari sekarang\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/is/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <gudmundur.bjarni@gmail.com>, 2012.\n# Hafsteinn Einarsson <haffi67@gmail.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-17 18:46+0000\\n\"\n\"Last-Translator: gudmundur <gudmundur.bjarni@gmail.com>\\n\"\n\"Language-Team: Icelandic (http://www.transifex.com/projects/p/django/\"\n\"language/is/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: is\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"í dag\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"gærdagur\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"morgundagur\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \".\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \".\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \".\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \".\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"%(value).1f milljón\"\nmsgstr[1] \"%(value).1f milljónir\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"%(value)s milljón\"\nmsgstr[1] \"%(value)s milljónir\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"%(value).1f milljarður\"\nmsgstr[1] \"%(value).1f milljarðar\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"%(value)s milljarður\"\nmsgstr[1] \"%(value)s milljarðar\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"%(value).1f billjarður\"\nmsgstr[1] \"%(value).1f billjónir\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"%(value)s billjón\"\nmsgstr[1] \"%(value)s billjónir\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"%(value).1f billjarður\"\nmsgstr[1] \"%(value).1f billjarðar\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"%(value)s billjarður\"\nmsgstr[1] \"%(value)s billjarðar\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"%(value).1f trilljón\"\nmsgstr[1] \"%(value).1f trilljónir\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"%(value)s trilljón\"\nmsgstr[1] \"%(value)s trilljónir\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"%(value).1f trilljarður\"\nmsgstr[1] \"%(value).1f trilljarðar\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"%(value)s trilljarður\"\nmsgstr[1] \"%(value)s trilljarðar\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"%(value).1f kvaðrilljón\"\nmsgstr[1] \"%(value).1f kvaðrilljónir\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"%(value)s kvaðrilljón\"\nmsgstr[1] \"%(value)s kvaðrilljónir\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"%(value).1f kvaðrilljarður\"\nmsgstr[1] \"%(value).1f kvaðrilljarðar\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"%(value)s kvaðrilljarður\"\nmsgstr[1] \"%(value)s kvaðrilljarðar\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"%(value).1f kvintilljón\"\nmsgstr[1] \"%(value).1f kvintilljónir\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"%(value)s kvintilljón\"\nmsgstr[1] \"%(value)s kvintilljónir\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"%(value).1f kvintilljarður\"\nmsgstr[1] \"%(value).1f kvintilljarðar\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"%(value)s kvintilljarður\"\nmsgstr[1] \"%(value)s kvintilljarðar\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"%(value).1f googol\"\nmsgstr[1] \"%(value).1f googol\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"%(value)s googol\"\nmsgstr[1] \"%(value)s googol\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"einn\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"tveir\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"þrír\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"fjórir\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"fimm\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"sex\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"sjö\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"átta\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"níu\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"%(delta)s síðan\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"núna\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"fyrir sekúndu síðan\"\nmsgstr[1] \"%(count)s sekúndum síðan\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"fyrir mínútu síðan\"\nmsgstr[1] \"%(count)s mínútum síðan\"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"fyrir klukkustund\"\nmsgstr[1] \"fyrir %(count)s klukkustundum\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"eftir %(delta)s\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"eftir sekúndu\"\nmsgstr[1] \"eftir %(count)s sekúndur\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"eftir mínútu\"\nmsgstr[1] \"eftir %(count)s mínútur\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"eftir klukkustund\"\nmsgstr[1] \"eftir %(count)s klukkustundir\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/it/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Federico Capoano <federico.capoano@teletu.it>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <lukefiltroman@gmail.com>, 2011.\n# Nicola Larosa <transifex@teknico.net>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:08+0000\\n\"\n\"Last-Translator: Nicola Larosa <transifex@teknico.net>\\n\"\n\"Language-Team: Italian (http://www.transifex.com/projects/p/django/language/\"\n\"it/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: it\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"oggi\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"ieri\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"domani\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \"º\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \"º\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \"º\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \"º\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"%(value).1f milione\"\nmsgstr[1] \"%(value).1f milioni\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"%(value)s milione\"\nmsgstr[1] \"%(value)s milioni\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"%(value).1f miliardo\"\nmsgstr[1] \"%(value).1f miliardi\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"%(value)s miliardo\"\nmsgstr[1] \"%(value)s miliardi\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"%(value).1f migliaio di miliardi\"\nmsgstr[1] \"%(value).1f migliaia di miliardi\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"%(value)s migliaio di miliardi\"\nmsgstr[1] \"%(value)s migliaia di miliardi\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"%(value).1f milione di miliardi\"\nmsgstr[1] \"%(value).1f milioni di miliardi\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"%(value)s milione di miliardi\"\nmsgstr[1] \"%(value)s milioni di miliardi\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"%(value).1f miliardo di miliardi\"\nmsgstr[1] \"%(value).1f miliardi di miliardi\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"%(value)s miliardo di miliardi\"\nmsgstr[1] \"%(value)s miliardi di miliardi\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"%(value).1f migliaio di miliardi di miliardi\"\nmsgstr[1] \"%(value).1f migliaia di miliardi di miliardi\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"%(value)s migliaio di miliardi di miliardi\"\nmsgstr[1] \"%(value)s migliaia di miliardi di miliardi\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"%(value).1f milione di miliardi di miliardi\"\nmsgstr[1] \"%(value).1f milioni di miliardi di miliardi\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"%(value)s milione di miliardi di miliardi\"\nmsgstr[1] \"%(value)s milioni di miliardi di miliardi\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"%(value).1f miliardo di miliardi di miliardi\"\nmsgstr[1] \"%(value).1f miliardi di miliardi di miliardi\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"%(value)s miliardo di miliardi di miliardi\"\nmsgstr[1] \"%(value)s miliardi di miliardi di miliardi\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"%(value).1f migliaio di miliardi di miliardi di miliardi\"\nmsgstr[1] \"%(value).1f migliaioa di miliardi di miliardi di miliardi\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"%(value)s migliaio di miliardi di miliardi di miliardi\"\nmsgstr[1] \"%(value)s migliaia di miliardi di miliardi di miliardi\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"%(value).1f milione di miliardi di miliardi di miliardi\"\nmsgstr[1] \"%(value).1f milioni di miliardi di miliardi di miliardi\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"%(value)s milione di miliardi di miliardi di miliardi\"\nmsgstr[1] \"%(value)s milioni di miliardi di miliardi di miliardi\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"%(value).1f googol\"\nmsgstr[1] \"%(value).1f googol\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"%(value)s googol\"\nmsgstr[1] \"%(value)s googol\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"uno\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"due\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"tre\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"quattro\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"cinque\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"sei\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"sette\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"otto\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"nove\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"%(delta)s fa\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"adesso\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"un secondo fa\"\nmsgstr[1] \"%(count)s secondi fa\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"un minuto fa\"\nmsgstr[1] \"%(count)s minuti fa\"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"un'ora fa\"\nmsgstr[1] \"%(count)s ore fa\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"%(delta)s da adesso\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"un secondo da adesso\"\nmsgstr[1] \"%(count)s secondi da adesso\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"un minuto da adesso\"\nmsgstr[1] \"%(count)s minuti da adesso\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"un'ora da adesso\"\nmsgstr[1] \"%(count)s ore da adesso\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/ja/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Jonas Obrist <me@ojii.ch>, 2012.\n# Shinya Okano <tokibito@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-08-05 11:26+0000\\n\"\n\"Last-Translator: Shinya Okano <tokibito@gmail.com>\\n\"\n\"Language-Team: Japanese (http://www.transifex.com/projects/p/django/language/\"\n\"ja/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ja\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"今日\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"昨日\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"明日\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \"番目\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \"番目\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \"番目\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \"番目\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"%(value).1f 百万\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"%(value)s百万\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"%(value).1f 十億\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"%(value)s十億\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"%(value).1f 兆\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"%(value)s兆\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"1\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"2\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"3\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"4\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"5\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"6\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"7\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"8\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"9\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"%(delta)s前\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"今\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"%(count)s秒前\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"%(count)s分前\"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"%(count)s時間前\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"今から%(delta)s\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"今から%(count)s秒\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"今から%(count)s分\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"今から%(count)s時間\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/ka/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Translators:\n# André Bouatchidzé <a@anbz.net>, 2013.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2013-03-01 10:40+0000\\n\"\n\"Last-Translator: André Bouatchidzé <a@anbz.net>\\n\"\n\"Language-Team: Georgian (http://www.transifex.com/projects/p/django/language/\"\n\"ka/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ka\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"დღეს\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"გუშინ\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"ხვალ\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \"-ე\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \"-ლი\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \"-ე\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \"-ე\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"%(value).1f მილიონი\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"%(value)s მილიონი\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"%(value).1f მილიარდი\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"%(value)s მილიარდი\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"%(value).1f ტრილიონი\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"%(value)s ტრილიონი\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"%(value).1f კვადრილიონი\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"%(value)s კვადრილიონი\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"%(value).1f კვინტილიონი\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"%(value)s კვინტილიონი\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"%(value).1f სექსტილიონი\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"%(value)s სექსტილიონი\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"%(value).1f სეპტილიონი\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"%(value)s სეპტილიონი\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"%(value).1f ოქტილიონი\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"%(value)s ოქტილიონი\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"%(value).1f ნონილიონი\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"%(value)s ნონილიონი\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"%(value).1f დეცილიონი\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"%(value)s დეცილიონი\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"%(value).1f გუგოლი\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"%(value)s გუგოლი\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"ერთი\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"ორი\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"სამი\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"ოთხი\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"ხუთი\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"ექვსი\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"შვიდი\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"რვა\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"ცხრა\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"%(delta)s-ის წინ\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"ახლა\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"%(count)s წამის წინ\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"%(count)s წუთის წინ\"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"%(count)s საათის წინ\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"%(delta)s-ის შემდეგ\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"%(count)s წამის შემდეგ\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"%(count)s წუთის შემდეგ\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"%(count)s საათის შემდეგ\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/kk/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <germanilyin@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:08+0000\\n\"\n\"Last-Translator: yun_man_ger <germanilyin@gmail.com>\\n\"\n\"Language-Team: Kazakh (http://www.transifex.com/projects/p/django/language/\"\n\"kk/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: kk\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"бүгін\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"кеше\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"ерте\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \"ші\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \"ші\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \"ші\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \"ші\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"%(value).1f миллион\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"%(value)s миллион\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"%(value).1f миллиард\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"%(value)s миллиард\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"%(value).1f триллион\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"%(value)s trillion\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"бір\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"екі\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"үш\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"төрт\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"бес\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"алты\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"жеті\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"сегіз\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"тоғыз\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"%(delta)s бұрын\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"кәзір\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"\"\n\"one: бір секунд бұрын\\n\"\n\"other: %(count)s секунд бұрын\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"\"\n\"one: бір минут бұрын\\n\"\n\"other: %(count)s минут бұрын\"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"\"\n\"one: бір сағат бұрын\\n\"\n\"other: %(count)s сағат бұрын\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"кәзірден %(delta)s\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"\"\n\"one: кәзірден бір секунд\\n\"\n\"other: кәзірден %(count)s секунд\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"\"\n\"one: кәзірден бір минут\\n\"\n\"other: кәзірден %(count)s минут\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"\"\n\"one: кәзірден бір сағат\\n\"\n\"other: кәзірден %(count)s сағат\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/km/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:41+0100\\n\"\n\"PO-Revision-Date: 2011-03-15 15:28+0000\\n\"\n\"Last-Translator: Django team\\n\"\n\"Language-Team: English <en@li.org>\\n\"\n\"Language: km\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=1; plural=0\\n\"\n\n#: tests.py:108 templatetags/humanize.py:164\nmsgid \"today\"\nmsgstr \"\"\n\n#: tests.py:108 templatetags/humanize.py:168\nmsgid \"yesterday\"\nmsgstr \"\"\n\n#: tests.py:108 templatetags/humanize.py:166\nmsgid \"tomorrow\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:24\nmsgid \"th\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:24\nmsgid \"st\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:24\nmsgid \"nd\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:24\nmsgid \"rd\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:53\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:57\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:61\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:65\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:69\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:73\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:77\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:81\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:85\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:89\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:93\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:143\nmsgid \"one\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:143\nmsgid \"two\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:143\nmsgid \"three\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:143\nmsgid \"four\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:143\nmsgid \"five\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:143\nmsgid \"six\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:143\nmsgid \"seven\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:143\nmsgid \"eight\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:143\nmsgid \"nine\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:185\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:188 templatetags/humanize.py:210\nmsgid \"now\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:191\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:207\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:213\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/kn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2011-01-19 15:13+0000\\n\"\n\"Last-Translator: Django team\\n\"\n\"Language-Team: Kannada (http://www.transifex.com/projects/p/django/language/\"\n\"kn/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: kn\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/ko/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:08+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Korean (http://www.transifex.com/projects/p/django/language/\"\n\"ko/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ko\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"오늘\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"어제\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"내일\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \"번째\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \"번째\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \"번째\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \"번째\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"%(value).1f백만\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"%(value).1f십억\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"%(value).1f조\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"1\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"2\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"3\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"4\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"5\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"6\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"7\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"8\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"9\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/lt/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# lauris <lauris@runbox.com>, 2011.\n# Simonas Simas <simonas@kazlauskas.me>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-03-09 16:51+0000\\n\"\n\"Last-Translator: Simonas Kazlauskas <simonas@kazlauskas.me>\\n\"\n\"Language-Team: Lithuanian (http://www.transifex.com/projects/p/django/\"\n\"language/lt/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: lt\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n\"\n\"%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"šiandien\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"vakar\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"rytoj\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \"-as\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \"-as\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \"-as\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \"-as\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"%(value).1f milijonas\"\nmsgstr[1] \"%(value).1f milijonai\"\nmsgstr[2] \"%(value).1f milijonai\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"%(value)s milijonas\"\nmsgstr[1] \"%(value)s milijonai\"\nmsgstr[2] \"%(value)s milijonų\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"%(value).1f milijardas\"\nmsgstr[1] \"%(value).1f milijardai\"\nmsgstr[2] \"%(value).1f milijardai\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"%(value)s milijardas\"\nmsgstr[1] \"%(value)s milijardai\"\nmsgstr[2] \"%(value)s milijardų\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"%(value).1f trilijonas\"\nmsgstr[1] \"%(value).1f trilijonai\"\nmsgstr[2] \"%(value).1f trilijonai\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"%(value)s trilijonas\"\nmsgstr[1] \"%(value)s trilijonai\"\nmsgstr[2] \"%(value)s trilijonų\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"%(value).1f kvadrilijonas\"\nmsgstr[1] \"%(value).1f kvadrilijonai\"\nmsgstr[2] \"%(value).1f kvadrilijonų\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"%(value)s kvadrilijonas\"\nmsgstr[1] \"%(value)s kvadrilijonai\"\nmsgstr[2] \"%(value)s kvadrilijonų\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"%(value).1f kvintilijonas\"\nmsgstr[1] \"%(value).1f kvintilijonai\"\nmsgstr[2] \"%(value).1f kvintilijonų\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"%(value)s kvintilijonas\"\nmsgstr[1] \"%(value)s kvintilijonai\"\nmsgstr[2] \"%(value)s kvintilijonų\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"%(value).1f sikstilijonas\"\nmsgstr[1] \"%(value).1f sikstilijonai\"\nmsgstr[2] \"%(value).1f sikstilijonų\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"%(value)s sikstilijonas\"\nmsgstr[1] \"%(value)s sikstilijonai\"\nmsgstr[2] \"%(value)s sikstilijonų\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"%(value).1f septilijonas\"\nmsgstr[1] \"%(value).1f septilijonai\"\nmsgstr[2] \"%(value).1f septilijonų\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"%(value)s septilijonas\"\nmsgstr[1] \"%(value)s septilijonai\"\nmsgstr[2] \"%(value)s septilijonų\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"%(value).1f oktilijonas\"\nmsgstr[1] \"%(value).1f oktilijonai\"\nmsgstr[2] \"%(value).1f oktilijonų\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"%(value)s oktilijonas\"\nmsgstr[1] \"%(value)s oktilijonai\"\nmsgstr[2] \"%(value)s oktilijonų\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"%(value).1f naintilijonas\"\nmsgstr[1] \"%(value).1f naintilijonai\"\nmsgstr[2] \"%(value).1f naintilijonų\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"%(value)s naintilijonas\"\nmsgstr[1] \"%(value)s naintilijonai\"\nmsgstr[2] \"%(value)s naintilijonų\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"%(value).1f decilijonas\"\nmsgstr[1] \"%(value).1f decilijonai\"\nmsgstr[2] \"%(value).1f decilijonų\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"%(value)s decilijonas\"\nmsgstr[1] \"%(value)s decilijonai\"\nmsgstr[2] \"%(value)s decilijonų\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"%(value).1f gugolas\"\nmsgstr[1] \"%(value).1f gugolai\"\nmsgstr[2] \"%(value).1f gugolų\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"%(value)s gugolas\"\nmsgstr[1] \"%(value)s gugolai\"\nmsgstr[2] \"%(value)s gugolų\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"vienas\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"du\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"trys\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"keturi\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"penki\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"šeši\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"septyni\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"aštuoni\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"devyni\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"prieš %(delta)s\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"dabar\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"prieš sekundę\"\nmsgstr[1] \"prieš %(count)s sekundes\"\nmsgstr[2] \"prieš %(count)s sekundžių\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"prieš minutę\"\nmsgstr[1] \"prieš %(count)s minutes\"\nmsgstr[2] \"prieš %(count)s minučių\"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"prieš valandą\"\nmsgstr[1] \"prieš %(count)s valandas\"\nmsgstr[2] \"prieš %(count)s valandų\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"%(delta)s nuo dabar\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"sekundė nuo dabar\"\nmsgstr[1] \"%(count)s sekundės nuo dabar\"\nmsgstr[2] \"%(count)s sekundžių nuo dabar\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"minutė nuo dabar\"\nmsgstr[1] \"%(count)s minutės nuo dabar\"\nmsgstr[2] \"%(count)s minučių nuo dabar\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"valanda nuo dabar\"\nmsgstr[1] \"%(count)s valandos nuo dabar\"\nmsgstr[2] \"%(count)s valandų nuo dabar\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/lv/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:08+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Latvian (http://www.transifex.com/projects/p/django/language/\"\n\"lv/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: lv\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : \"\n\"2);\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"šodien\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"vakar\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"rīt\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \"th\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \"st\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \"nd\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \"rd\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"%(value).1f miljons\"\nmsgstr[1] \"%(value).1f miljoni\"\nmsgstr[2] \"%(value).1f miljonu\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"%(value).1f miljards\"\nmsgstr[1] \"%(value).1f miljardi\"\nmsgstr[2] \"%(value).1f miljardu\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"%(value).1f triljons\"\nmsgstr[1] \"%(value).1f triljoni\"\nmsgstr[2] \"%(value).1f triljonu\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"viens\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"divi\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"trīs\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"četri\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"pieci\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"seši\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"septiņi\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"astoņi\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"deviņi\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/mk/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <vvangelovski@gmail.com>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-15 12:41+0000\\n\"\n\"Last-Translator: vvangelovski <vvangelovski@gmail.com>\\n\"\n\"Language-Team: Macedonian (http://www.transifex.com/projects/p/django/\"\n\"language/mk/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: mk\\n\"\n\"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"денеска\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"вчера\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"утре\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \"th\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \"st\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \"nd\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \"rd\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"%(value).1f милион\"\nmsgstr[1] \"%(value).1f милион\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"%(value)s милион\"\nmsgstr[1] \"%(value)s милиони\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"%(value).1f милијарда\"\nmsgstr[1] \"%(value).1f милијарда\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"%(value)s милијарда\"\nmsgstr[1] \"%(value)s милијарди\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"%(value).1f трилион\"\nmsgstr[1] \"%(value).1f трилион\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"%(value)s трилион\"\nmsgstr[1] \"%(value)s трилиони\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"%(value).1f квадрилион\"\nmsgstr[1] \"%(value).1f квадрилиони\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"%(value)s квадрилион\"\nmsgstr[1] \"%(value)s квадрилиони\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"%(value).1f квинтилион\"\nmsgstr[1] \"%(value).1f квинтилиони\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"%(value)s квинтилион\"\nmsgstr[1] \"%(value)s квинтилиони\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"%(value).1f секстилион\"\nmsgstr[1] \"%(value).1f секстилиони\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"%(value)s секстилион\"\nmsgstr[1] \"%(value)s секстилиони\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"%(value).1f септилион\"\nmsgstr[1] \"%(value).1f септилиони\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"%(value)s септилион\"\nmsgstr[1] \"%(value)s септилиони\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"%(value).1f октилион\"\nmsgstr[1] \"%(value).1f октилиони\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"%(value)s октилион\"\nmsgstr[1] \"%(value)s октилиони\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"%(value).1f нонилион\"\nmsgstr[1] \"%(value).1f нонилиони\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"%(value)s нонилион\"\nmsgstr[1] \"%(value)s нонилиони\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"%(value).1f децилион\"\nmsgstr[1] \"%(value).1f децилиони\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"%(value)s децилион\"\nmsgstr[1] \"%(value)s децилиони\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"%(value).1f гугол\"\nmsgstr[1] \"%(value).1f гуголи\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"%(value)s гугол\"\nmsgstr[1] \"%(value)s гуголи\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"еден\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"два\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"три\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"четири\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"пет\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"шест\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"седум\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"осум\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"девет\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"пред %(delta)s\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"сега\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"пред една секунда\"\nmsgstr[1] \"пред %(count)s секунди\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"пред една минута\"\nmsgstr[1] \"пред %(count)s минути\"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"пред еден час\"\nmsgstr[1] \"пред %(count)s часа\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"за %(delta)s\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"за една секунда\"\nmsgstr[1] \"за %(count)s секунди\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"за една минута\"\nmsgstr[1] \"за %(count)s минути\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"за еден час\"\nmsgstr[1] \"за %(count)s часа\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/ml/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Rajeesh Nair <rajeeshrnair@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-03-07 15:48+0000\\n\"\n\"Last-Translator: Rajeesh Nair <rajeeshrnair@gmail.com>\\n\"\n\"Language-Team: Malayalam (http://www.transifex.com/projects/p/django/\"\n\"language/ml/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ml\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"ഇന്ന്\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"ഇന്നലെ\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"നാളെ\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \"ആം\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \"ആം\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \"ആം\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \"ആം\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"%(value).1f മില്ല്യണ്‍ (ദശലക്ഷം)\"\nmsgstr[1] \"%(value).1f മില്ല്യണ്‍ (ദശലക്ഷം)\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"%(value)s ദശലക്ഷം\"\nmsgstr[1] \"%(value)s ദശലക്ഷം\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"%(value).1f ബില്ല്യണ്‍ (ശതകോടി)\"\nmsgstr[1] \"%(value).1f ബില്ല്യണ്‍ (ശതകോടി)\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"%(value)s ശതകോടി\"\nmsgstr[1] \"%(value)s ശതകോടി\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"%(value).1f ട്രില്ല്യണ്‍ (ലക്ഷം കോടി)\"\nmsgstr[1] \"%(value).1f ട്രില്ല്യണ്‍ (ലക്ഷം കോടി)\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"%(value)s ലക്ഷം കോടി\"\nmsgstr[1] \"%(value)s ലക്ഷം കോടി\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"%(value).1f ക്വാഡ്രില്ല്യണ്‍\"\nmsgstr[1] \"%(value).1f ക്വാഡ്രില്ല്യണ്‍\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"%(value)s ക്വാഡ്രില്ല്യണ്‍\"\nmsgstr[1] \"%(value)s ക്വാഡ്രില്ല്യണ്‍\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"%(value).1f ക്വിന്റില്ല്യണ്‍\"\nmsgstr[1] \"%(value).1f ക്വിന്റില്ല്യണ്‍\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"%(value)s ക്വിന്റില്ല്യണ്‍\"\nmsgstr[1] \"%(value)s ക്വിന്റില്ല്യണ്‍\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"%(value).1f സെക്സ്റ്റില്ല്യണ്‍\"\nmsgstr[1] \"%(value).1f സെക്സ്റ്റില്ല്യണ്‍\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"%(value)s സെക്സ്റ്റില്ല്യണ്‍\"\nmsgstr[1] \"%(value)s സെക്സ്റ്റില്ല്യണ്‍\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"%(value).1f സെപ്റ്റില്ല്യണ്‍\"\nmsgstr[1] \"%(value).1f സെപ്റ്റില്ല്യണ്‍\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"%(value)s സെപ്റ്റില്ല്യണ്‍\"\nmsgstr[1] \"%(value)s സെപ്റ്റില്ല്യണ്‍\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"%(value).1f ഒക്റ്റില്ല്യണ്‍\"\nmsgstr[1] \"%(value).1f ഒക്റ്റില്ല്യണ്‍\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"%(value)s ഒക്റ്റില്ല്യണ്‍\"\nmsgstr[1] \"%(value)s ഒക്റ്റില്ല്യണ്‍\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"%(value).1f നോനില്ല്യണ്‍\"\nmsgstr[1] \"%(value).1f നോനില്ല്യണ്‍\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"%(value)s നോനില്ല്യണ്‍\"\nmsgstr[1] \"%(value)s നോനില്ല്യണ്‍\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"%(value).1f ഡെസില്ല്യണ്‍\"\nmsgstr[1] \"%(value).1f ഡെസില്ല്യണ്‍\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"%(value)s ഡെസില്ല്യണ്‍\"\nmsgstr[1] \"%(value)s ഡെസില്ല്യണ്‍\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"%(value).1f ഗൂഗോള്‍\"\nmsgstr[1] \"%(value).1f ഗൂഗോള്‍\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"%(value)s ഗൂഗോള്‍\"\nmsgstr[1] \"%(value)s ഗൂഗോള്‍\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"ഒന്ന്\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"രണ്ട്\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"മൂന്ന്\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"നാല്\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"അഞ്ച്\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"ആറ്\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"ഏഴ്\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"എട്ട്\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"ഒന്‍പത്\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"%(delta)s മുമ്പ്\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"ഇപ്പോള്‍\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"ഒരു സെക്കന്‍ഡ് മുമ്പ്\"\nmsgstr[1] \"%(count)s സെക്കന്‍ഡുകള്‍ മുമ്പ്\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"ഒരു മിനുറ്റ് മുമ്പ്\"\nmsgstr[1] \"%(count)s മിനുറ്റുകള്‍ മുമ്പ്\"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"ഒരു മണിക്കൂര്‍ മുമ്പ്\"\nmsgstr[1] \"%(count)s മണിക്കൂര്‍ മുമ്പ്\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"ഇപ്പോള്‍ മുതല്‍ %(delta)s\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"ഇപ്പോള്‍ മുതല്‍ ഒരു സെക്കന്‍ഡ്\"\nmsgstr[1] \"ഇപ്പോള്‍ മുതല്‍ %(count)s സെക്കന്‍ഡുകള്‍\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"ഇപ്പോള്‍ മുതല്‍ ഒരു മിനുട്ട്\"\nmsgstr[1] \"ഇപ്പോള്‍ മുതല്‍ %(count)s മിനുട്ടുകള്‍\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"ഇപ്പോള്‍ മുതല്‍ ഒരു മണിക്കൂര്‍\"\nmsgstr[1] \"ഇപ്പോള്‍ മുതല്‍ %(count)s മണിക്കൂറുകള്‍\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/mn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Анхбаяр Анхаа <l.ankhbayar@gmail.com>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-15 12:39+0000\\n\"\n\"Last-Translator: Анхбаяр Анхаа <l.ankhbayar@gmail.com>\\n\"\n\"Language-Team: Mongolian (http://www.transifex.com/projects/p/django/\"\n\"language/mn/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: mn\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"өнөөдөр\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"өчигдөр\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"маргааш\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \"-р\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \"-р\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \"-р\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \"-р\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"%(value).1f сая\"\nmsgstr[1] \"%(value).1f сая\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"%(value)s сая\"\nmsgstr[1] \"%(value)s сая\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"%(value).1f тэр бум\"\nmsgstr[1] \"%(value).1f тэр бум\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"%(value)s тэрбум\"\nmsgstr[1] \"%(value)s тэрбум\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"%(value).1f их наяд\"\nmsgstr[1] \"%(value).1f их наяд\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"%(value)s их наяд\"\nmsgstr[1] \"%(value)s их наяд\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"%(value).1f их маш дэлэгмэл\"\nmsgstr[1] \"%(value).1f их маш дэлэгмэл\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"%(value)s их маш дэлэгмэл\"\nmsgstr[1] \"%(value)s их маш дэлэгмэл\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"%(value).1f их ингуумэл\"\nmsgstr[1] \"%(value).1f их ингуумэл\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"%(value)s их ингуумэл\"\nmsgstr[1] \"%(value)s их ингуумэл\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"%(value).1f ялгаруулагч\"\nmsgstr[1] \"%(value).1f ялгаруулагч\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"%(value)s ялгаруулагч\"\nmsgstr[1] \"%(value)s ялгаруулагч\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"%(value).1f их өвөр дээр\"\nmsgstr[1] \"%(value).1f их өвөр дээр\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"%(value)s их өвөр дээр\"\nmsgstr[1] \"%(value)s их өвөр дээр\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"%(value).1f хязгаар үзэгдэл\"\nmsgstr[1] \"%(value).1f хязгаар үзэгдэл\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"%(value)s хязгаар үзэгдэл\"\nmsgstr[1] \"%(value)s хязгаар үзэгдэл\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"%(value).1f их шалтгааны зүйл\"\nmsgstr[1] \"%(value).1f их шалтгааны зүйл\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"%(value)s их шалтгааны зүйл\"\nmsgstr[1] \"%(value)s их шалтгааны зүйл\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"%(value).1f эрхэт\"\nmsgstr[1] \"%(value).1f эрхэт\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"%(value)s эрхэт\"\nmsgstr[1] \"%(value)s эрхэт\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"%(value).1f googol\"\nmsgstr[1] \"%(value).1f googol\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"%(value)s сэтгэшгүй\"\nmsgstr[1] \"%(value)s сэтгэшгүй\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"нэг\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"хоёр\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"гурав\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"дөрөв\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"тав\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"зургаа\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"долоо\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"найм\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"ес\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"%(delta)s өмнө\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"одоо\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"секундын өмнө\"\nmsgstr[1] \"%(count)s секундын өмнө\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"минутын өмнө\"\nmsgstr[1] \"%s минутын өмнө\"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"цагын өмнө\"\nmsgstr[1] \"%s цагын өмнө\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"%(delta)s дараа\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"секундын дараа\"\nmsgstr[1] \"%(count)s секундын дараа\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"минутын дараа\"\nmsgstr[1] \"%(count)s минутын дараа\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"цагийн дараа\"\nmsgstr[1] \"%(count)s цагийн дараа\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/nb/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <jonklo@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-03-08 14:27+0000\\n\"\n\"Last-Translator: jonklo <jonklo@gmail.com>\\n\"\n\"Language-Team: Norwegian Bokmål (http://www.transifex.com/projects/p/django/\"\n\"language/nb/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: nb\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"i dag\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"i går\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"i morgen\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \".\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \".\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \".\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \".\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"%(value).1f million\"\nmsgstr[1] \"%(value).1f millioner\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"%(value)s million\"\nmsgstr[1] \"%(value)s millioner\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"%(value).1f milliard\"\nmsgstr[1] \"%(value).1f milliarder\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"%(value)s milliard\"\nmsgstr[1] \"%(value)s milliarder\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"%(value).1f billion\"\nmsgstr[1] \"%(value).1f billioner\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"%(value)s billion\"\nmsgstr[1] \"%(value)s billioner\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"%(value).1f kvadrillion\"\nmsgstr[1] \"%(value).1f kvadrillioner\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"%(value)s kvadrillion\"\nmsgstr[1] \"%(value)s kvadrillioner\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"%(value).1f kvintillion\"\nmsgstr[1] \"%(value).1f kvintillioner\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"%(value)s kvintillion\"\nmsgstr[1] \"%(value)s kvintillioner\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"%(value).1f sekstillion\"\nmsgstr[1] \"%(value).1f sekstillioner\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"%(value)s sekstillion\"\nmsgstr[1] \"%(value)s sekstillioner\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"%(value).1f septillion\"\nmsgstr[1] \"%(value).1f septillioner\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"%(value)s septillion\"\nmsgstr[1] \"%(value)s septillioner\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"%(value).1f oktillion\"\nmsgstr[1] \"%(value).1f oktillioner\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"%(value)s oktillion\"\nmsgstr[1] \"%(value)s oktillioner\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"%(value).1f nonillion\"\nmsgstr[1] \"%(value).1f nonillioner\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"%(value)s nonillion\"\nmsgstr[1] \"%(value)s nonillioner\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"%(value).1f desillion\"\nmsgstr[1] \"%(value).1f desillioner\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"%(value)s desillion\"\nmsgstr[1] \"%(value)s desillioner\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"%(value).1f googol\"\nmsgstr[1] \"%(value).1f googoler\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"%(value)s googol\"\nmsgstr[1] \"%(value)s googoler\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"én\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"to\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"tre\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"fire\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"fem\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"seks\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"sju\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"åtte\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"ni\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"%(delta)s siden\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"nå\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"ett sekund siden\"\nmsgstr[1] \"%(count)s sekunder siden\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"ett minutt siden\"\nmsgstr[1] \"%(count)s minutter siden\"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"en time siden\"\nmsgstr[1] \"%(count)s timer siden\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"%(delta)s fra nå\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"ett sekund fra nå\"\nmsgstr[1] \"%(count)s sekunder fra nå\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"ett minutt fra nå\"\nmsgstr[1] \"%(count)s minutter fra nå\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"en time fra nå\"\nmsgstr[1] \"%(count)s timer fra nå\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/ne/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Paras Nath Chaudhary <opnchaudhary@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-10-04 12:02+0000\\n\"\n\"Last-Translator: Paras Nath Chaudhary <opnchaudhary@gmail.com>\\n\"\n\"Language-Team: Nepali (http://www.transifex.com/projects/p/django/language/\"\n\"ne/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ne\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"आज\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"हिजो\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"भोली\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"%(value)s मिलियन\"\nmsgstr[1] \"%(value)s मिलियन\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"%(value)s अरब\"\nmsgstr[1] \"%(value)s अरब\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"%(value)s खरब\"\nmsgstr[1] \"%(value)s खरब\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"%(value)s करोड़ शंख\"\nmsgstr[1] \"%(value)s करोड़ शंख\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"एक \"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"दुई \"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"तीन \"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"चार \"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"पाँच \"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"छ \"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"सात \"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"आठ \"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"नौ \"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"%(delta)s अगाडी\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"अहिले\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"एक सेकेन्ड  अगाडी \"\nmsgstr[1] \"%(count)s सेकेन्ड  अगाडी \"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"एक मिनेट अगाडी \"\nmsgstr[1] \"%(count)s मिनेट अगाडी \"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"एक घन्टा अगाडी \"\nmsgstr[1] \"%(count)s घन्टा अगाडी \"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/nl/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <alexandervanratingen@gmail.com>, 2011, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Tino de Bruijn <tinodb@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-03-07 19:59+0000\\n\"\n\"Last-Translator: Blue <alexandervanratingen@gmail.com>\\n\"\n\"Language-Team: Dutch (http://www.transifex.com/projects/p/django/language/\"\n\"nl/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: nl\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"vandaag\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"gisteren\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"morgen\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \"e\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \"e\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \"e\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \"e\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"%(value).1f miljoen\"\nmsgstr[1] \"%(value).1f miljoen\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"%(value)s miljoen\"\nmsgstr[1] \"%(value)s miljoen\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"%(value).1f miljard\"\nmsgstr[1] \"%(value).1f miljard\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"%(value)s miljard\"\nmsgstr[1] \"%(value)s miljard\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"%(value).1f biljoen\"\nmsgstr[1] \"%(value).1f biljoen\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"%(value)s biljoen\"\nmsgstr[1] \"%(value)s biljoen\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"%(value).1f biljard\"\nmsgstr[1] \"%(value).1f biljard\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"%(value)s biljard\"\nmsgstr[1] \"%(value)s biljard\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"%(value).1f triljoen\"\nmsgstr[1] \"%(value).1f triljoen\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"%(value)s triljoen\"\nmsgstr[1] \"%(value)s triljoen\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"%(value).1f triljard\"\nmsgstr[1] \"%(value).1f triljard\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"%(value)s triljard\"\nmsgstr[1] \"%(value)s triljard\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"%(value).1f quadriljoen\"\nmsgstr[1] \"%(value).1f quadriljoen\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"%(value)s quadriljoen\"\nmsgstr[1] \"%(value)s quadriljoen\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"%(value).1f quadriljard\"\nmsgstr[1] \"%(value).1f quadriljard\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"%(value)s quadriljard\"\nmsgstr[1] \"%(value)s quadriljard\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"%(value).1f quintiljoen\"\nmsgstr[1] \"%(value).1f quintiljoen\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"%(value)s quintiljoen\"\nmsgstr[1] \"%(value)s quintiljoen\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"%(value).1f quintiljard\"\nmsgstr[1] \"%(value).1f quintiljard\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"%(value)s quintiljard\"\nmsgstr[1] \"%(value)s quintiljard\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"%(value).1f googol\"\nmsgstr[1] \"%(value).1f googol\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"%(value)s googol\"\nmsgstr[1] \"%(value)s googol\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"één\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"twee\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"drie\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"vier\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"vijf\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"zes\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"zeven\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"acht\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"negen\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"%(delta)s geleden\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"nu\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"een seconde geleden\"\nmsgstr[1] \"%(count)s seconden geleden\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"een minuut geleden\"\nmsgstr[1] \"%(count)s minuten geleden\"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"een uur geleden\"\nmsgstr[1] \"%(count)s uur geleden\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"%(delta)s van nu\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"een seconde van nu\"\nmsgstr[1] \"%(count)s seconden van nu\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"een minuut van nu\"\nmsgstr[1] \"%(count)s minuten van nu\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"een uur geleden\"\nmsgstr[1] \"%(count)s uur van nu\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/nn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <odin.omdal@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-06-03 20:11+0000\\n\"\n\"Last-Translator: velmont <odin.omdal@gmail.com>\\n\"\n\"Language-Team: Norwegian Nynorsk (http://www.transifex.com/projects/p/django/\"\n\"language/nn/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: nn\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"i dag\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"i går\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"i morgon\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \".\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \".\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \".\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \".\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"%(value).1f million\"\nmsgstr[1] \"%(value).1f millionar\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"%(value)s million\"\nmsgstr[1] \"%(value)s millionar\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"%(value).1f milliard\"\nmsgstr[1] \"%(value).1f milliardar\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"%(value)s milliard\"\nmsgstr[1] \"%(value)s milliardar\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"%(value).1f billion\"\nmsgstr[1] \"%(value).1f billionar\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"%(value)s billion\"\nmsgstr[1] \"%(value)s billionar\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"%(value).1f kvadrillion\"\nmsgstr[1] \"%(value).1f kvadrillionar\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"%(value)s kvadrillion\"\nmsgstr[1] \"%(value)s kvadrillionar\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"%(value).1f kvintillion\"\nmsgstr[1] \"%(value).1f kvintillionar\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"%(value)s kvintillion\"\nmsgstr[1] \"%(value)s kvintillionar\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"%(value).1f sekstillion\"\nmsgstr[1] \"%(value).1f sekstilionar\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"%(value)s sekstillion\"\nmsgstr[1] \"%(value)s sekstillionar\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"%(value).1f septillion\"\nmsgstr[1] \"%(value).1f septillionar\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"%(value)s septillion\"\nmsgstr[1] \"%(value)s septillionar\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"%(value).1f oktillion\"\nmsgstr[1] \"%(value).1f oktillionar\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"%(value)s oktillion\"\nmsgstr[1] \"%(value)s oktillionar\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"%(value).1f nonillion\"\nmsgstr[1] \"%(value).1f nonillionar\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"%(value)s nonillion\"\nmsgstr[1] \"%(value)s nonillionar\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"%(value).1f desillion\"\nmsgstr[1] \"%(value).1f desillionar\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"%(value)s desillion\"\nmsgstr[1] \"%(value)s desillionar\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"%(value).1f googol\"\nmsgstr[1] \"%(value).1f googolar\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"%(value)s googol\"\nmsgstr[1] \"%(value)s googolar\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"éin\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"to\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"tre\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"fire\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"fem\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"seks\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"sju\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"åtte\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"ni\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"%(delta)s sidan\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"no\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"eitt sekund sidan\"\nmsgstr[1] \"%(count)s sekund sidan\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"eitt minutt sidan\"\nmsgstr[1] \"%(count)s minutt sidan\"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"éin time sidan\"\nmsgstr[1] \"%(count)s timar sidan\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"%(delta)s frå no\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"eitt sekund frå no\"\nmsgstr[1] \"%(count)s sekund frå no\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"eitt minutt frå no\"\nmsgstr[1] \"%(count)s minutt frå no\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"éin time frå no\"\nmsgstr[1] \"%(count)s timar frå no\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/pa/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:08+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Panjabi (Punjabi) (http://www.transifex.com/projects/p/django/\"\n\"language/pa/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: pa\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"ਅੱਜ\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"ਕੱਲ੍ਹ\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"ਭਲਕੇ\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \"ਵਾਂ\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \"ਲਾਂ\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \"ਜਾ\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \"ਜਾ\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"%(value).1f ਮਿਲੀਅਨ\"\nmsgstr[1] \"%(value).1f ਮਿਲੀਅਨ\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"%(value).1f ਬਿਲੀਅਨ\"\nmsgstr[1] \"%(value).1f ਬਿਲੀਅਨ\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"%(value).1f ਟਰਲੀਅਨ\"\nmsgstr[1] \"%(value).1f ਟਰਲੀਅਨ\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"ਇੱਕ\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"ਦੋ\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"ਤਿੰਨ\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"ਚਾਰ\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"ਪੰਜ\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"ਛੇ\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"ਸੱਤ\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"ਅੱਠ\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"ਨੌ\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/pl/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <angular.circle@gmail.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Roman Barczyński <rombar@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-03-22 13:05+0000\\n\"\n\"Last-Translator: Roman Barczyński <rombar@gmail.com>\\n\"\n\"Language-Team: Polish (http://www.transifex.com/projects/p/django/language/\"\n\"pl/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: pl\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 \"\n\"|| n%100>=20) ? 1 : 2);\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"dzisiaj\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"wczoraj\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"jutro\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \"-y\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \"-szy\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \"-gi\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \"-ci\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"%(value).1f milion\"\nmsgstr[1] \"%(value).1f miliony\"\nmsgstr[2] \"%(value).1f milionów\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"%(value)s milion\"\nmsgstr[1] \"%(value)s miliony\"\nmsgstr[2] \"%(value)s milionów\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"%(value).1f miliard\"\nmsgstr[1] \"%(value).1f miliardy\"\nmsgstr[2] \"%(value).1f miliardów\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"%(value)s miliard\"\nmsgstr[1] \"%(value)s miliardy\"\nmsgstr[2] \"%(value)s miliardów\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"%(value).1f bilion\"\nmsgstr[1] \"%(value).1f biliony\"\nmsgstr[2] \"%(value).1f bilionów\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"%(value)s bilion\"\nmsgstr[1] \"%(value)s biliony\"\nmsgstr[2] \"%(value)s bilionów\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"%(value).1f biliard\"\nmsgstr[1] \"%(value).1f biliardy\"\nmsgstr[2] \"%(value).1f biliardów\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"%(value)s biliard\"\nmsgstr[1] \"%(value)s biliardy\"\nmsgstr[2] \"%(value)s biliardów\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"%(value).1f trylion\"\nmsgstr[1] \"%(value).1f tryliony\"\nmsgstr[2] \"%(value).1f trylionów\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"%(value)s trylion\"\nmsgstr[1] \"%(value)s tryliony\"\nmsgstr[2] \"%(value)s trylionyów\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"%(value).1f tryliard\"\nmsgstr[1] \"%(value).1f tryliardy\"\nmsgstr[2] \"%(value).1f tryliardów\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \" %(value)s tryliard\"\nmsgstr[1] \"%(value)s tryliardy\"\nmsgstr[2] \"%(value)s tryliardów\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"%(value).1f kwadrylion\"\nmsgstr[1] \"%(value).1f kwadryliony\"\nmsgstr[2] \"%(value).1f kwadrylionów\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"%(value)s kwadrylion\"\nmsgstr[1] \"%(value)s kwadryliony\"\nmsgstr[2] \"%(value)s kwadrylionów\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"%(value).1f kwadryliard\"\nmsgstr[1] \"%(value).1f kwardyliardy\"\nmsgstr[2] \"%(value).1f kwadryliardów\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"%(value)s kwadryliard\"\nmsgstr[1] \"%(value)s kwardyliardy\"\nmsgstr[2] \"%(value)s kwadryliardów\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"%(value).1f kwintylion\"\nmsgstr[1] \"%(value).1f kwintyliony\"\nmsgstr[2] \"%(value).1f kwintylionów\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"%(value)s kwintylion\"\nmsgstr[1] \"%(value)s kwintyliony\"\nmsgstr[2] \"%(value)s kwintylionów\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"%(value).1f kwintyliard\"\nmsgstr[1] \"%(value).1f kwintyliardy\"\nmsgstr[2] \"%(value).1f kwintyliardów\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"%(value)s kwintyliard\"\nmsgstr[1] \"%(value)s kwintyliardy\"\nmsgstr[2] \"%(value)s kwintyliardów\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"%(value).1f googol\"\nmsgstr[1] \"%(value).1f googole\"\nmsgstr[2] \"%(value).1f googolów\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"%(value)s googol\"\nmsgstr[1] \"%(value)s googole\"\nmsgstr[2] \"%(value)s googolów\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"jeden\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"dwa\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"trzy\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"cztery\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"pięć\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"sześć\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"siedem\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"osiem\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"dziewięć\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"%(delta)s temu\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"teraz\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"sekundę temu\"\nmsgstr[1] \"%(count)s sekundy temu\"\nmsgstr[2] \"%(count)s sekund temu\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"minutę temu\"\nmsgstr[1] \"%(count)s minuty temu\"\nmsgstr[2] \"%(count)s minut temu\"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"godzinę temu\"\nmsgstr[1] \"%(count)s  godzin temu\"\nmsgstr[2] \"%(count)s  godziny temu\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"za %(delta)s \"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"za sekundę\"\nmsgstr[1] \"za %(count)s sekundy\"\nmsgstr[2] \"za %(count)s sekund\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"za minutę\"\nmsgstr[1] \"za %(count)s minuty\"\nmsgstr[2] \"za %(count)s minut\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"za godzinę\"\nmsgstr[1] \"za %(count)s godziny\"\nmsgstr[2] \"za %(count)s godzin\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/pt/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Nuno Mariz <nmariz@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-04-02 15:07+0000\\n\"\n\"Last-Translator: Nuno Mariz <nmariz@gmail.com>\\n\"\n\"Language-Team: Portuguese (http://www.transifex.com/projects/p/django/\"\n\"language/pt/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: pt\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"hoje\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"ontem\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"amanhã\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \"º\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \"º\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \"º\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \"º\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"%(value).1f milhão\"\nmsgstr[1] \"%(value).1f milhões\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"%(value)s milhão\"\nmsgstr[1] \"%(value)s milhões\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"%(value).1f bilião\"\nmsgstr[1] \"%(value).1f biliões\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"%(value)s bilião\"\nmsgstr[1] \"%(value)s biliões\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"%(value).1f trilião\"\nmsgstr[1] \"%(value).1f triliões\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"%(value)s trilião\"\nmsgstr[1] \"%(value)s triliões\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"%(value).1f quadrilião\"\nmsgstr[1] \"%(value).1f quadriliões\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"%(value)s quadrilião\"\nmsgstr[1] \"%(value)s quadriliões\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"%(value).1f quintilião\"\nmsgstr[1] \"%(value).1f quintiliões\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"%(value)s quintilião\"\nmsgstr[1] \"%(value)s quintiliões\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"%(value).1f sextilião\"\nmsgstr[1] \"%(value).1f sextiliões\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"%(value)s sextilião\"\nmsgstr[1] \"%(value)s sextiliões\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"%(value).1f septilião\"\nmsgstr[1] \"%(value).1f septiliões\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"%(value)s septilião\"\nmsgstr[1] \"%(value)s septiliões\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"%(value).1f octilião\"\nmsgstr[1] \"%(value).1f octiliões\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"%(value)s octilião\"\nmsgstr[1] \"%(value)s octiliões\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"%(value).1f nonilião\"\nmsgstr[1] \"%(value).1f noniliões\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"%(value)s nonilião\"\nmsgstr[1] \"%(value)s noniliões\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"%(value).1f decilião\"\nmsgstr[1] \"%(value).1f deciliões\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"%(value)s decilião\"\nmsgstr[1] \"%(value)s deciliões\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"%(value).1f googol\"\nmsgstr[1] \"%(value).1f googol\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"%(value)s googol\"\nmsgstr[1] \"%(value)s googol\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"um\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"dois\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"três\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"quatro\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"cinco\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"seis\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"sete\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"oito\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"nove\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"%(delta)s atrás\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"agora\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"há 1 segundo\"\nmsgstr[1] \"há %(count)s segundos\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"há 1 minuto\"\nmsgstr[1] \"há %(count)s minutos\"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"há 1 hora\"\nmsgstr[1] \"há %(count)s horas\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"%(delta)s a partir de agora\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"1 segundo a partir de agora\"\nmsgstr[1] \"%(count)s segundos a partir de agora\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"1 minuto a partir de agora\"\nmsgstr[1] \"%(count)s minutos a partir de agora\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"1 hora a partir de agora\"\nmsgstr[1] \"%(count)s horas a partir de agora\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/pt_BR/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Eduardo Carvalho <eduardocereto@gmail.com>, 2012.\n# Guilherme Gondim <semente+transifex@taurinus.org>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Sandro  <sandrossv@hotmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-06-04 12:37+0000\\n\"\n\"Last-Translator: Eduardo Carvalho <eduardocereto@gmail.com>\\n\"\n\"Language-Team: Portuguese (Brazil) <django-l10n-portuguese@googlegroups.\"\n\"com>\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: pt_BR\\n\"\n\"Plural-Forms: nplurals=2; plural=(n > 1);\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"hoje\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"ontem\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"amanhã\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \"º\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \"º\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \"º\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \"º\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"%(value).1f milhão\"\nmsgstr[1] \"%(value).1f milhões\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"%(value)s milhão\"\nmsgstr[1] \"%(value)s milhões\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"%(value).1f bilhão\"\nmsgstr[1] \"%(value).1f bilhões\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"%(value)s bilhão\"\nmsgstr[1] \"%(value)s bilhões\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"%(value).1f trilhão\"\nmsgstr[1] \"%(value).1f trilhões\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"%(value)s trilhão\"\nmsgstr[1] \"%(value)s trilhões\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"%(value).1f quadrilhão\"\nmsgstr[1] \"%(value).1f quadrilhões\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"%(value)s quadrilhão\"\nmsgstr[1] \"%(value)s quadrilhões\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"%(value).1f quintilhão\"\nmsgstr[1] \"%(value).1f quintilhões\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"%(value)s quintilhão\"\nmsgstr[1] \"%(value)s quintilhões\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"%(value).1f sextilhão\"\nmsgstr[1] \"%(value).1f sextilhões\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"%(value)s sextilhão\"\nmsgstr[1] \"%(value)s sextilhões\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"%(value).1f septilhão\"\nmsgstr[1] \"%(value).1f septilhões\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"%(value)s septilhão\"\nmsgstr[1] \"%(value)s septilhões\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"%(value).1f octilhão\"\nmsgstr[1] \"%(value).1f octilhões\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"%(value)s octilhão\"\nmsgstr[1] \"%(value)s octilhões\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"%(value).1f nonilhão\"\nmsgstr[1] \"%(value).1f nonilhões\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"%(value)s nonilhão\"\nmsgstr[1] \"%(value)s nonilhões\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"%(value).1f decilhão\"\nmsgstr[1] \"%(value).1f decilhões\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"%(value)s decilhão\"\nmsgstr[1] \"%(value)s decilhões\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"%(value).1f googol\"\nmsgstr[1] \"%(value).1f googol\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"%(value)s googol\"\nmsgstr[1] \"%(value)s googol\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"um\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"dois\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"três\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"quatro\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"cinco\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"seis\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"sete\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"oito\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"nove\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"%(delta)s atrás\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"agora\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"há 1 segundo\"\nmsgstr[1] \"há %(count)s segundos\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"há 1 minuto\"\nmsgstr[1] \"há %(count)s minutos\"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"há 1 hora\"\nmsgstr[1] \"há %(count)s horas\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"%(delta)s a partir de agora\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"1 segundo a partir de agora\"\nmsgstr[1] \"%(count)s segundos a partir de agora\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"1 minuto a partir de agora\"\nmsgstr[1] \"%(count)s minutos a partir de agora\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"1 hora a partir de agora\"\nmsgstr[1] \"%(count)s horas a partir de agora\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/ro/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Daniel Ursache-Dogariu <contact@danniel.net>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <sorin.sbarnea@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:08+0000\\n\"\n\"Last-Translator: sorin <sorin.sbarnea@gmail.com>\\n\"\n\"Language-Team: Romanian (http://www.transifex.com/projects/p/django/language/\"\n\"ro/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ro\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?\"\n\"2:1));\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"astăzi\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"ieri\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"mâine\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \"ul\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \"ul\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \"lea\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \"lea\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"%(value).1f milion\"\nmsgstr[1] \"%(value).1f milioane\"\nmsgstr[2] \"%(value).1f de milione\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"%(value)s milion\"\nmsgstr[1] \"%(value)s milioane\"\nmsgstr[2] \"%(value)s de milioane\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"%(value).1f miliard\"\nmsgstr[1] \"%(value).1f miliarde\"\nmsgstr[2] \"%(value).1f de miliarde\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"%(value)s miliard\"\nmsgstr[1] \"%(value)s miliarde\"\nmsgstr[2] \"%(value)s de miliarde\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"%(value).1f trilion\"\nmsgstr[1] \"%(value).1f trilioane\"\nmsgstr[2] \"%(value).1f de trilioane\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"%(value)s trilion\"\nmsgstr[1] \"%(value)s trilioane\"\nmsgstr[2] \"%(value)s de trilioane\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\nmsgstr[2] \"\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"unu\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"doi\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"trei\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"patru\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"cinci\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"șase\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"șapte\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"opt\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"nouă\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"acum %(delta)s\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"acum\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"acum o secundă\"\nmsgstr[1] \"acum %(count)s secunde\"\nmsgstr[2] \"\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"acum un minut\"\nmsgstr[1] \"acum %(count)s minute \"\nmsgstr[2] \"acum %(count)s de minute \"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"acum o oră\"\nmsgstr[1] \"acum %(count)s ore\"\nmsgstr[2] \"acum %(count)s de ore\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"%(delta)s de acum\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"o secundă de acum\"\nmsgstr[1] \"%(count)s secunde de acum\"\nmsgstr[2] \"%(count)s de secunde de acum\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"un minut de acum\"\nmsgstr[1] \"%(count)s minute de acum\"\nmsgstr[2] \"%(count)s de ore de acum\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"o oră de acum\"\nmsgstr[1] \"%(count)s ore de acum\"\nmsgstr[2] \"%(count)s de ore de acum\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/ru/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Dimmus <dmitri.chudinov@gmail.com>, 2011.\n# Eugene MechanisM <contact@mechanism.name>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Алексей Борискин <sun.void@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-03-07 08:58+0000\\n\"\n\"Last-Translator: Алексей Борискин <sun.void@gmail.com>\\n\"\n\"Language-Team: Russian (http://www.transifex.com/projects/p/django/language/\"\n\"ru/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ru\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"сегодня\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"вчера\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"завтра\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \"ий\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \"ый\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \"ой\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \"ий\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"%(value).1f миллион\"\nmsgstr[1] \"%(value).1f миллиона\"\nmsgstr[2] \"%(value).1f миллионов\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"%(value)s миллион\"\nmsgstr[1] \"%(value)s миллиона\"\nmsgstr[2] \"%(value)s миллионов\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"%(value).1f миллиард\"\nmsgstr[1] \"%(value).1f миллиарда\"\nmsgstr[2] \"%(value).1f миллиардов\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"%(value)s миллиард\"\nmsgstr[1] \"%(value)s миллиарда\"\nmsgstr[2] \"%(value)s миллиардов\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"%(value).1f триллион\"\nmsgstr[1] \"%(value).1f триллиона\"\nmsgstr[2] \"%(value).1f триллионов\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"%(value)s триллион\"\nmsgstr[1] \"%(value)s триллиона\"\nmsgstr[2] \"%(value)s триллионов\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"%(value).1f квадриллион\"\nmsgstr[1] \"%(value).1f квадриллиона\"\nmsgstr[2] \"%(value).1f квадриллионов\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"%(value)s квадриллион\"\nmsgstr[1] \"%(value)s квадриллиона\"\nmsgstr[2] \"%(value)s квадриллионов\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"%(value).1f квинтиллион\"\nmsgstr[1] \"%(value).1f квинтиллиона\"\nmsgstr[2] \"%(value).1f квинтиллионов\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"%(value)s квинтиллион\"\nmsgstr[1] \"%(value)s квинтиллиона\"\nmsgstr[2] \"%(value)s квинтиллионов\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"%(value).1f секстиллион\"\nmsgstr[1] \"%(value).1f секстиллиона\"\nmsgstr[2] \"%(value).1f секстиллионов\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"%(value)s секстиллион\"\nmsgstr[1] \"%(value)s секстиллиона\"\nmsgstr[2] \"%(value)s секстиллионов\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"%(value).1f септиллион\"\nmsgstr[1] \"%(value).1f септиллиона\"\nmsgstr[2] \"%(value).1f септиллионов\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"%(value)s септиллион\"\nmsgstr[1] \"%(value)s септиллиона\"\nmsgstr[2] \"%(value)s септиллионов\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"%(value).1f октиллион\"\nmsgstr[1] \"%(value).1f октиллиона\"\nmsgstr[2] \"%(value).1f октиллионов\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"%(value)s октиллион\"\nmsgstr[1] \"%(value)s октиллиона\"\nmsgstr[2] \"%(value)s октиллионов\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"%(value).1f нониллион\"\nmsgstr[1] \"%(value).1f нониллиона\"\nmsgstr[2] \"%(value).1f нониллионов\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"%(value)s нониллион\"\nmsgstr[1] \"%(value)s нониллиона\"\nmsgstr[2] \"%(value)s нониллионов\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"%(value).1f дециллион\"\nmsgstr[1] \"%(value).1f дециллиона\"\nmsgstr[2] \"%(value).1f дециллионов\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"%(value)s дециллион\"\nmsgstr[1] \"%(value)s дециллиона\"\nmsgstr[2] \"%(value)s дециллионов\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"%(value).1f гугол\"\nmsgstr[1] \"%(value).1f гугола\"\nmsgstr[2] \"%(value).1f гуголов\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"%(value)s гугол\"\nmsgstr[1] \"%(value)s гугола\"\nmsgstr[2] \"%(value)s гуголов\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"один\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"два\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"три\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"четыре\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"пять\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"шесть\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"семь\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"восемь\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"девять\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"%(delta)s назад\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"сейчас\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"%(count)s секунду назад\"\nmsgstr[1] \"%(count)s секунды назад\"\nmsgstr[2] \"%(count)s секунд назад\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"%(count)s минуту назад\"\nmsgstr[1] \"%(count)s минуты назад\"\nmsgstr[2] \"%(count)s минут назад\"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"%(count)s час назад\"\nmsgstr[1] \"%(count)s часа назад\"\nmsgstr[2] \"%(count)s часов назад\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"через %(delta)s\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"через %(count)s секунду\"\nmsgstr[1] \"через %(count)s секунды\"\nmsgstr[2] \"через %(count)s секунд\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"через %(count)s минуту\"\nmsgstr[1] \"через %(count)s минуты\"\nmsgstr[2] \"через %(count)s минут\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"через %(count)s час\"\nmsgstr[1] \"через %(count)s часа\"\nmsgstr[2] \"через %(count)s часов\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/sk/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Marian Andre <marian@andre.sk>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:08+0000\\n\"\n\"Last-Translator: Marian Andre <marian@andre.sk>\\n\"\n\"Language-Team: Slovak (http://www.transifex.com/projects/p/django/language/\"\n\"sk/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sk\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"dnes\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"včera\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"zajtra\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \"th\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \"st\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \"nd\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \"rd\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"%(value).1f milión\"\nmsgstr[1] \"%(value).1f milióny\"\nmsgstr[2] \"%(value).1f miliónov\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \" %(value)s milión\"\nmsgstr[1] \" %(value)s milióny\"\nmsgstr[2] \" %(value)s miliónov\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"%(value).1f miliárda\"\nmsgstr[1] \"%(value).1f miliardy\"\nmsgstr[2] \"%(value).1f miliárd\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \" %(value)s miliarda\"\nmsgstr[1] \" %(value)s miliardy\"\nmsgstr[2] \" %(value)s miliárd\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"%(value).1f bilión\"\nmsgstr[1] \"%(value).1f bilióny\"\nmsgstr[2] \"%(value).1f biliónov\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"%(value)s bilión\"\nmsgstr[1] \"%(value)s bilióny\"\nmsgstr[2] \"%(value)s biliónov\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"%(value).1f biliardy\"\nmsgstr[1] \"%(value).1f biliardy\"\nmsgstr[2] \"%(value).1f biliárd\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"%(value)s biliarda\"\nmsgstr[1] \"%(value)s biliardy\"\nmsgstr[2] \"%(value)s biliárd\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"%(value).1f triliónu\"\nmsgstr[1] \"%(value).1f triliónu\"\nmsgstr[2] \"%(value).1f triliónu\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"%(value)s trilión\"\nmsgstr[1] \"%(value)s trilióny\"\nmsgstr[2] \"%(value)s triliónov\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"%(value).1f triliardy\"\nmsgstr[1] \"%(value).1f triliardy\"\nmsgstr[2] \"%(value).1f triliárd\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"%(value)s triliarda\"\nmsgstr[1] \"%(value)s triliardy\"\nmsgstr[2] \"%(value)s triliárd\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"%(value).1f kvadriliónu\"\nmsgstr[1] \"%(value).1f kvadriliónu\"\nmsgstr[2] \"%(value).1f kvadriliónov\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"%(value)s kvadrilión\"\nmsgstr[1] \"%(value)s kvadrilióny\"\nmsgstr[2] \"%(value)s kvadriliónov\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"%(value).1f kvadriliardy\"\nmsgstr[1] \"%(value).1f kvadriliardy\"\nmsgstr[2] \"%(value).1f kvadriliárd\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"%(value)s kvadriliarda\"\nmsgstr[1] \"%(value)s kvadriliardy\"\nmsgstr[2] \"%(value)s kvadriliárd\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"%(value).1f kvintiliónu\"\nmsgstr[1] \"%(value).1f kvintiliónu\"\nmsgstr[2] \"%(value).1f kvintiliónov\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"%(value)s kvintilión\"\nmsgstr[1] \"%(value)s kvintilióny\"\nmsgstr[2] \"%(value)s kvintiliónov\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"%(value).1f kvintiliardy\"\nmsgstr[1] \"%(value).1f kvintiliardy\"\nmsgstr[2] \"%(value).1f kvintiliárd\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"%(value)s kvintiliarda\"\nmsgstr[1] \"%(value)s kvintiliardy\"\nmsgstr[2] \"%(value)s kvintiliárd\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"%(value).1f googol\"\nmsgstr[1] \"%(value).1f googol\"\nmsgstr[2] \"%(value).1f googol\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"%(value)s googol\"\nmsgstr[1] \"%(value)s googol\"\nmsgstr[2] \"%(value)s googol\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"jeden\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"dva\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"tri\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"štyri\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"päť\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"šesť\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"sedem\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"osem\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"deväť\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"pred %(delta)s\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"teraz\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"pred sekundou\"\nmsgstr[1] \"pred %(count)s sekundami\"\nmsgstr[2] \"pred %(count)s sekundami\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"pred minútou\"\nmsgstr[1] \"pred %(count)s minútami\"\nmsgstr[2] \"pred %(count)s minútami\"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"pred hodinou\"\nmsgstr[1] \"pred %(count)s hodinami\"\nmsgstr[2] \"pred %(count)s hodinami\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"%(delta)s odteraz\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"sekundu odteraz\"\nmsgstr[1] \"%(count)s sekundy odteraz\"\nmsgstr[2] \"%(count)s sekúnd odteraz\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"minútu odteraz\"\nmsgstr[1] \"%(count)s minúty odteraz\"\nmsgstr[2] \"%(count)s minút odteraz\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"hodinu odteraz\"\nmsgstr[1] \"%(count)s hodiny odteraz\"\nmsgstr[2] \"%(count)s hodín odteraz\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/sl/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Gašper Žejn <zejn@kiberpipa.org>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Jure Cuhalev <gandalf@owca.info>, 2011.\n# Jure Čuhalev <gandalf@owca.info>, 2011.\n#   <zejn@kiberpipa.org>, 2011.\n# zejn <zejn@kiberpipa.org>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-10-31 19:15+0000\\n\"\n\"Last-Translator: mateju <>\\n\"\n\"Language-Team: Slovenian (http://www.transifex.com/projects/p/django/\"\n\"language/sl/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sl\\n\"\n\"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n\"\n\"%100==4 ? 2 : 3);\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"danes\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"včeraj\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"jutri\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \"th\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \"st\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \"nd\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \"rd\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"%(value).1f milijonov\"\nmsgstr[1] \"%(value).1f milijon\"\nmsgstr[2] \"%(value).1f milijona\"\nmsgstr[3] \"%(value).1f milijoni\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"%(value)s milijonov\"\nmsgstr[1] \"%(value)s milijon\"\nmsgstr[2] \"%(value)s milijona\"\nmsgstr[3] \"%(value)s milijoni\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"%(value).1f miljard\"\nmsgstr[1] \"%(value).1f miljarda\"\nmsgstr[2] \"%(value).1f miljardi\"\nmsgstr[3] \"%(value).1f miljarde\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"%(value)s miljard\"\nmsgstr[1] \"%(value)s miljarda\"\nmsgstr[2] \"%(value)s miljardi\"\nmsgstr[3] \"%(value)s miljarde\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"%(value).1f triljonov\"\nmsgstr[1] \"%(value).1f triljon\"\nmsgstr[2] \"%(value).1f triljona\"\nmsgstr[3] \"%(value).1f triljoni\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"%(value)s triljonov\"\nmsgstr[1] \"%(value)s triljon\"\nmsgstr[2] \"%(value)s triljona\"\nmsgstr[3] \"%(value)s triljoni\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"%(value).1f  kvadrilijonov\"\nmsgstr[1] \"%(value).1f  kvadrilijon\"\nmsgstr[2] \"%(value).1f  kvadrilijona\"\nmsgstr[3] \"%(value).1f  kvadrilijoni\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"%(value)s kvadrilijonov\"\nmsgstr[1] \"%(value)s kvadrilijon\"\nmsgstr[2] \"%(value)s kvadrilijona\"\nmsgstr[3] \"%(value)s kvadrilijoni\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"%(value).1f kvintilijonov\"\nmsgstr[1] \"%(value).1f kvintilijon\"\nmsgstr[2] \"%(value).1f kvintilijona\"\nmsgstr[3] \"%(value).1f kvintilijoni\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"%(value)s kvintilijonov\"\nmsgstr[1] \"%(value)s kvintilijon\"\nmsgstr[2] \"%(value)s kvintilijona\"\nmsgstr[3] \"%(value)s kvintilijoni\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"%(value).1f sekstilijonov\"\nmsgstr[1] \"%(value).1f sekstilijon\"\nmsgstr[2] \"%(value).1f sekstilijona\"\nmsgstr[3] \"%(value).1f sekstilijoni\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"%(value)s sekstilijonov\"\nmsgstr[1] \"%(value)s sekstilijon\"\nmsgstr[2] \"%(value)s sekstilijona\"\nmsgstr[3] \"%(value)s sekstilijoni\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"%(value).1f septilijonov\"\nmsgstr[1] \"%(value).1f septilijon\"\nmsgstr[2] \"%(value).1f septilijona\"\nmsgstr[3] \"%(value).1f septilijoni\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"%(value)s septilijonov\"\nmsgstr[1] \"%(value)s septilijon\"\nmsgstr[2] \"%(value)s septilijona\"\nmsgstr[3] \"%(value)s septilijoni\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"%(value).1f oktilijonov\"\nmsgstr[1] \"%(value).1f oktilijon\"\nmsgstr[2] \"%(value).1f oktilijona\"\nmsgstr[3] \"%(value).1f oktilijoni\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"%(value)s oktilijonov\"\nmsgstr[1] \"%(value)s oktilijon\"\nmsgstr[2] \"%(value)s oktilijona\"\nmsgstr[3] \"%(value)s oktilijoni\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"%(value).1f nonilijonov\"\nmsgstr[1] \"%(value).1f nonilijon\"\nmsgstr[2] \"%(value).1f nonilijona\"\nmsgstr[3] \"%(value).1f nonilijoni\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"%(value)s nonilijonov\"\nmsgstr[1] \"%(value)s nonilijon\"\nmsgstr[2] \"%(value)s nonilijona\"\nmsgstr[3] \"%(value)s nonilijoni\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"%(value).1f decilijonov\"\nmsgstr[1] \"%(value).1f decilijon\"\nmsgstr[2] \"%(value).1f decilijona\"\nmsgstr[3] \"%(value).1f decilijoni\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"%(value)s decilijonov\"\nmsgstr[1] \"%(value)s decilijon\"\nmsgstr[2] \"%(value)s decilijona\"\nmsgstr[3] \"%(value)s decilijoni\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"%(value).1f gugolov\"\nmsgstr[1] \"%(value).1f gugol\"\nmsgstr[2] \"%(value).1f gugola\"\nmsgstr[3] \"%(value).1f gugoli\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"%(value)s gugolov\"\nmsgstr[1] \"%(value)s gugol\"\nmsgstr[2] \"%(value)s gugola\"\nmsgstr[3] \"%(value)s gugoli\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"ena\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"dve\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"tri\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"štiri\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"pet\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"šest\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"sedem\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"osem\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"devet\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"Pred %(delta)s\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"zdaj\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"pred %(count)s sekundami\"\nmsgstr[1] \"pred %(count)s sekundo\"\nmsgstr[2] \"pred %(count)s sekundama\"\nmsgstr[3] \"pred %(count)s sekundami\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"pred %(count)s minutami\"\nmsgstr[1] \"pred %(count)s minuto\"\nmsgstr[2] \"pred %(count)s minutama\"\nmsgstr[3] \"pred %(count)s minutami\"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"pred %(count)s urami\"\nmsgstr[1] \"pred %(count)s uro\"\nmsgstr[2] \"pred %(count)s urama\"\nmsgstr[3] \"pred %(count)s urami\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"čez %(delta)s\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"čez %(count)s sekund\"\nmsgstr[1] \"čez %(count)s sekundo\"\nmsgstr[2] \"čez %(count)s sekundi\"\nmsgstr[3] \"čez %(count)s sekunde\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"čez %(count)s minut\"\nmsgstr[1] \"čez %(count)s minuto\"\nmsgstr[2] \"čez %(count)s minuti\"\nmsgstr[3] \"čez %(count)s minute\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"čez %(count)s ur\"\nmsgstr[1] \"čez %(count)s uro\"\nmsgstr[2] \"čez %(count)s uri\"\nmsgstr[3] \"čez %(count)s ure\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/sq/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Besnik <besnik@programeshqip.org>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-11-25 19:51+0000\\n\"\n\"Last-Translator: Besnik <besnik@programeshqip.org>\\n\"\n\"Language-Team: Albanian (http://www.transifex.com/projects/p/django/language/\"\n\"sq/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sq\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"sot\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"dje\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"nesër\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \"ti\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \"ti\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \"ti\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"%(value).1f milion\"\nmsgstr[1] \"%(value).1f milionë\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"%(value)s milion\"\nmsgstr[1] \"%(value)s milionë\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"%(value).1f miliard\"\nmsgstr[1] \"%(value).1f miliardë\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"%(value)s miliard\"\nmsgstr[1] \"%(value)s miliardë\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"%(value).1f trilion\"\nmsgstr[1] \"%(value).1f trilionë\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"%(value)s trilion\"\nmsgstr[1] \"%(value)s trilionë\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"%(value).1f kuadrilion\"\nmsgstr[1] \"%(value).1f kuadrilionë\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"%(value)s kuadrilion\"\nmsgstr[1] \"%(value)s kuadrilionë\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"%(value).1f kuintilion\"\nmsgstr[1] \"%(value).1f kuintilionë\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"%(value)s kuintilionë\"\nmsgstr[1] \"%(value)s kuintilionë\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"%(value).1f sestilion\"\nmsgstr[1] \"%(value).1f sestilionë\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"%(value)s sestilion\"\nmsgstr[1] \"%(value)s sestilionë\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"%(value).1f septilion\"\nmsgstr[1] \"%(value).1f septilionë\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"%(value)s septilion\"\nmsgstr[1] \"%(value)s septilionë\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"%(value).1f oktilion\"\nmsgstr[1] \"%(value).1f oktilionë\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"%(value)s oktilion\"\nmsgstr[1] \"%(value)s oktilionë\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"%(value).1f nonilion\"\nmsgstr[1] \"%(value).1f nonilionë\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"%(value)s nonilion\"\nmsgstr[1] \"%(value)s nonilionë\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"%(value).1f decilion\"\nmsgstr[1] \"%(value).1f decilionë\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"%(value)s decillion\"\nmsgstr[1] \"%(value)s decilionë\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"%(value).1f gugol\"\nmsgstr[1] \"%(value).1f gugolë\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"%(value)s gugol\"\nmsgstr[1] \"%(value)s gugolë\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"një\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"dy\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"tre\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"katër\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"pesë\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"gjashtë\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"shtatë\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"tetë\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"nëntë\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"%(delta)s më parë\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"tani\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"një sekondë më parë\"\nmsgstr[1] \"%(count)s sekonda më parë\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"një minutë më parë\"\nmsgstr[1] \"%(count)s minuta më parë\"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"një orë më parë\"\nmsgstr[1] \"%(count)s orë më parë\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"%(delta)s nga tani\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"një sekondë nga tani\"\nmsgstr[1] \"%(count)s sekonda nga tani\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"një minutë nga tani\"\nmsgstr[1] \"%(count)s minuta nga tani\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"një orë nga tani\"\nmsgstr[1] \"%(count)s orë nga tani\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/sr/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Janos Guljas <janos@resenje.org>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-20 15:05+0000\\n\"\n\"Last-Translator: Janos Guljas <janos@resenje.org>\\n\"\n\"Language-Team: Serbian (http://www.transifex.com/projects/p/django/language/\"\n\"sr/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sr\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"десет\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"јуче\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"сутра\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \"-и\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \"-ви\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \"-и\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \"-и\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"%(value).1f милион\"\nmsgstr[1] \"%(value).1f милиона\"\nmsgstr[2] \"%(value).1f милиона\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"%(value)s милион\"\nmsgstr[1] \"%(value)s милиона\"\nmsgstr[2] \"%(value)s милиона\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"%(value).1f билион\"\nmsgstr[1] \"%(value).1f билиона\"\nmsgstr[2] \"%(value).1f билиона\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"%(value)s билион\"\nmsgstr[1] \"%(value)s билиона\"\nmsgstr[2] \"%(value)s билиона\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"%(value).1f трилион\"\nmsgstr[1] \"%(value).1f трилиона\"\nmsgstr[2] \"%(value).1f трилиона\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"%(value)s трилион\"\nmsgstr[1] \"%(value)s трилиона\"\nmsgstr[2] \"%(value)s трилиона\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"%(value).1f квадрилион\"\nmsgstr[1] \"%(value).1f квадрилиона\"\nmsgstr[2] \"%(value).1f квадрилиона\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"%(value)s квадрилион\"\nmsgstr[1] \"%(value)s квадрилиона\"\nmsgstr[2] \"%(value)s квадрилиона\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"%(value).1f квинтилион\"\nmsgstr[1] \"%(value).1f квинтилиона\"\nmsgstr[2] \"%(value).1f квинтилиона\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"%(value)s квинтилион\"\nmsgstr[1] \"%(value)s квинтилиона\"\nmsgstr[2] \"%(value)s квинтилиона\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"%(value).1f секстилион\"\nmsgstr[1] \"%(value).1f секстилиона\"\nmsgstr[2] \"%(value).1f секстилиона\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"%(value)s секстилион\"\nmsgstr[1] \"%(value)s секстилиона\"\nmsgstr[2] \"%(value)s секстилиона\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"%(value).1f септилион\"\nmsgstr[1] \"%(value).1f септилиона\"\nmsgstr[2] \"%(value).1f септилиона\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"%(value)s септилион\"\nmsgstr[1] \"%(value)s септилиона\"\nmsgstr[2] \"%(value)s септилиона\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"%(value).1f окталион\"\nmsgstr[1] \"%(value).1f окталиона\"\nmsgstr[2] \"%(value).1f окталиона\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"%(value)s окталион\"\nmsgstr[1] \"%(value)s окталиона\"\nmsgstr[2] \"%(value)s окталиона\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"%(value).1f нонилион\"\nmsgstr[1] \"%(value).1f нонилиона\"\nmsgstr[2] \"%(value).1f нонилиона\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"%(value)s нонилион\"\nmsgstr[1] \"%(value)s нонилиона\"\nmsgstr[2] \"%(value)s нонилиона\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"%(value).1f дектилион\"\nmsgstr[1] \"%(value).1f дектилиона\"\nmsgstr[2] \"%(value).1f дектилиона\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"%(value)s дектилион\"\nmsgstr[1] \"%(value)s дектилиона\"\nmsgstr[2] \"%(value)s дектилиона\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"%(value).1f гугол\"\nmsgstr[1] \"%(value).1f гугола\"\nmsgstr[2] \"%(value).1f гугола\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"%(value)s гугол\"\nmsgstr[1] \"%(value)s гугола\"\nmsgstr[2] \"%(value)s гугола\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"један\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"два\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"три\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"четири\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"пет\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"шест\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"седам\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"осам\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"девет\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"пре %(delta)s\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"сада\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"пре једне секунде\"\nmsgstr[1] \"пре %(count)s секунде\"\nmsgstr[2] \"пре %(count)s секунди\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"пре једног минута\"\nmsgstr[1] \"пре %(count)s минута\"\nmsgstr[2] \"пре %(count)s минута\"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"пре једног сата\"\nmsgstr[1] \"пре %(count)s сата\"\nmsgstr[2] \"пре %(count)s сати\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"за %(delta)s\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"за једну секунду\"\nmsgstr[1] \"за %(count)s секунде\"\nmsgstr[2] \"за %(count)s секунди\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"за један минут\"\nmsgstr[1] \"за %(count)s минута\"\nmsgstr[2] \"за %(count)s минута\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"за један сат\"\nmsgstr[1] \"за %(count)s сата\"\nmsgstr[2] \"за %(count)s сати\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/sr_Latn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Janos Guljas <janos@resenje.org>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-03-05 14:01+0000\\n\"\n\"Last-Translator: Janos Guljas <janos@resenje.org>\\n\"\n\"Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/django/\"\n\"language/sr@latin/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sr@latin\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"deset\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"juče\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"sutra\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \"-i\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \"-vi\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \"-i\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \"-i\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"%(value).1f milion\"\nmsgstr[1] \"%(value).1f miliona\"\nmsgstr[2] \"%(value).1f miliona\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"%(value)s milion\"\nmsgstr[1] \"%(value)s miliona\"\nmsgstr[2] \"%(value)s miliona\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"%(value).1f bilion\"\nmsgstr[1] \"%(value).1f biliona\"\nmsgstr[2] \"%(value).1f biliona\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"%(value)s bilion\"\nmsgstr[1] \"%(value)s biliona\"\nmsgstr[2] \"%(value)s biliona\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"%(value).1f trilion\"\nmsgstr[1] \"%(value).1f triliona\"\nmsgstr[2] \"%(value).1f triliona\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"%(value)s trilion\"\nmsgstr[1] \"%(value)s triliona\"\nmsgstr[2] \"%(value)s triliona\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"%(value).1f kvadrilion\"\nmsgstr[1] \"%(value).1f kvadriliona\"\nmsgstr[2] \"%(value).1f kvadriliona\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"%(value)s kvadrilion\"\nmsgstr[1] \"%(value)s kvadriliona\"\nmsgstr[2] \"%(value)s kvadriliona\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"%(value).1f kvintilion\"\nmsgstr[1] \"%(value).1f kvintiliona\"\nmsgstr[2] \"%(value).1f kvintiliona\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"%(value)s kvintilion\"\nmsgstr[1] \"%(value)s kvintiliona\"\nmsgstr[2] \"%(value)s kvintiliona\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"%(value).1f sekstilion\"\nmsgstr[1] \"%(value).1f sekstiliona\"\nmsgstr[2] \"%(value).1f sekstiliona\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"%(value)s sekstilion\"\nmsgstr[1] \"%(value)s sekstiliona\"\nmsgstr[2] \"%(value)s sekstiliona\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"%(value).1f septilion\"\nmsgstr[1] \"%(value).1f septiliona\"\nmsgstr[2] \"%(value).1f septiliona\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"%(value)s septilion\"\nmsgstr[1] \"%(value)s septiliona\"\nmsgstr[2] \"%(value)s septiliona\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"%(value).1f oktalion\"\nmsgstr[1] \"%(value).1f oktaliona\"\nmsgstr[2] \"%(value).1f oktaliona\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"%(value)s oktalion\"\nmsgstr[1] \"%(value)s oktaliona\"\nmsgstr[2] \"%(value)s oktaliona\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"%(value).1f nonilion\"\nmsgstr[1] \"%(value).1f noniliona\"\nmsgstr[2] \"%(value).1f noniliona\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"%(value)s nonilion\"\nmsgstr[1] \"%(value)s noniliona\"\nmsgstr[2] \"%(value)s noniliona\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"%(value).1f dektilion\"\nmsgstr[1] \"%(value).1f dektiliona\"\nmsgstr[2] \"%(value).1f dektiliona\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"%(value)s dektilion\"\nmsgstr[1] \"%(value)s dektiliona\"\nmsgstr[2] \"%(value)s dektiliona\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"%(value).1f gugol\"\nmsgstr[1] \"%(value).1f gugola\"\nmsgstr[2] \"%(value).1f gugola\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"%(value)s gugol\"\nmsgstr[1] \"%(value)s gugola\"\nmsgstr[2] \"%(value)s gugola\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"jedan\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"dva\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"tri\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"četiri\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"pet\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"šest\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"sedam\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"osam\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"devet\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"pre %(delta)s\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"sada\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"pre jedne sekunde\"\nmsgstr[1] \"pre %(count)s sekunde\"\nmsgstr[2] \"pre %(count)s sekundi\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"pre jednog minuta\"\nmsgstr[1] \"pre %(count)s minuta\"\nmsgstr[2] \"pre %(count)s minuta\"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"pre jednog sata\"\nmsgstr[1] \"pre %(count)s sata\"\nmsgstr[2] \"pre %(count)s sati\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"za %(delta)s\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"za jadnu sekundu\"\nmsgstr[1] \"za %(count)s sekunde\"\nmsgstr[2] \"za %(count)s sekundi\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"za jedan minut\"\nmsgstr[1] \"za %(count)s minuta\"\nmsgstr[2] \"za %(count)s minuta\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"za jedan sat\"\nmsgstr[1] \"za %(count)s sata\"\nmsgstr[2] \"za %(count)s sati\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/sv/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Andreas Pelme <andreas@pelme.se>, 2011, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-03-06 20:29+0000\\n\"\n\"Last-Translator: Andreas Pelme <andreas@pelme.se>\\n\"\n\"Language-Team: Swedish (http://www.transifex.com/projects/p/django/language/\"\n\"sv/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sv\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"idag\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"igår\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"imorgon\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \":a\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \":a\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \":e\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \":e\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"%(value).1f miljon\"\nmsgstr[1] \"%(value).1f miljoner\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"%(value)s miljon\"\nmsgstr[1] \"%(value)s miljoner\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"%(value)1.f miljard\"\nmsgstr[1] \"%(value)1.f miljarder\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"%(value)s miljard\"\nmsgstr[1] \"%(value)s miljarder\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"%(value)1.f biljon\"\nmsgstr[1] \"%(value)1.f biljoner\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"%(value)s triljon\"\nmsgstr[1] \"%(value)s triljoner\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"%(value).1f biljard\"\nmsgstr[1] \"%(value).1f biljarder\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"%(value)s biljard\"\nmsgstr[1] \"%(value)s biljarder\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"%(value).1f kvintiljon\"\nmsgstr[1] \"%(value).1f kvintiljoner\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"%(value)s kvintiljon\"\nmsgstr[1] \"%(value)s kvintiljoner\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"%(value).1f triljard\"\nmsgstr[1] \"%(value).1f triljarder\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"%(value)s triljard\"\nmsgstr[1] \"%(value)s triljarder\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"%(value).1f kvadriljon\"\nmsgstr[1] \"%(value).1f kvadriljoner\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"%(value)s kvadriljon\"\nmsgstr[1] \"%(value)s kvadriljoner\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"%(value).1f kvadriljard\"\nmsgstr[1] \"%(value).1f kvadriljarder\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"%(value)s kvadriljard\"\nmsgstr[1] \"%(value)s kvadriljarder\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"%(value).1f kvintiljon\"\nmsgstr[1] \"%(value).1f kvintiljoner\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"%(value)s kvintiljon\"\nmsgstr[1] \"%(value)s kvintiljoner\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"%(value).1f kvintiljard\"\nmsgstr[1] \"%(value).1f kvintiljarder\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"%(value)s kvintiljard\"\nmsgstr[1] \"%(value)s kvintiljarder\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"%(value).1f googol\"\nmsgstr[1] \"%(value).1f googoler\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"%(value)s googol\"\nmsgstr[1] \"%(value)s googoler\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"ett\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"två\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"tre\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"fyra\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"fem\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"sex\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"sju\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"åtta\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"nio\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"%(delta)s sedan\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"nu\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"en sekund sedan\"\nmsgstr[1] \"%(count)s sekunder sedan\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"en minut sedan\"\nmsgstr[1] \"%(count)s minuter sedan\"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"en timma sedan\"\nmsgstr[1] \"%(count)s timmar sedan\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"%(delta)s från nu\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"en sekund från nu\"\nmsgstr[1] \"%(count)s sekunder från nu\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"en minut från nu\"\nmsgstr[1] \"%(count)s minuter från nu\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"en timma från nu\"\nmsgstr[1] \"%(count)s timmar från nu\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/sw/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-07-06 18:46+0000\\n\"\n\"Last-Translator: machaku <bmachaku@gmail.com>\\n\"\n\"Language-Team: Swahili (http://www.transifex.com/projects/p/django/language/\"\n\"sw/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sw\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"leo\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"jana\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"kesho\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \" \"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \" \"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \" \"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \" \"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"milioni %(value).1f\"\nmsgstr[1] \"milioni %(value).1f\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"milioni %(value)s\"\nmsgstr[1] \"milioni %(value)s\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"bilioni %(value).1f\"\nmsgstr[1] \"bilioni %(value).1f\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"bilioni %(value)s\"\nmsgstr[1] \"bilioni %(value)s\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"trilioni %(value).1f\"\nmsgstr[1] \"trilioni %(value).1f\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"trilioni %(value)s\"\nmsgstr[1] \"trilioni %(value)s\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"kuadrilioni %(value).1f\"\nmsgstr[1] \"kuadrilioni %(value).1f\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"kuadrilioni %(value)s\"\nmsgstr[1] \"kuadrilioni %(value)s\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"kuintilioni %(value).1f\"\nmsgstr[1] \"kuintilioni %(value).1f\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"kuintilioni %(value)s\"\nmsgstr[1] \"kuintilioni %(value)s\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"seksitilioni %(value).1f\"\nmsgstr[1] \"seksitilioni %(value).1f\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"seksitilioni %(value)s\"\nmsgstr[1] \"seksitilioni %(value)s\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"septilioni %(value).1f\"\nmsgstr[1] \"septilioni %(value).1f\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"septilioni %(value)s\"\nmsgstr[1] \"septilioni %(value)s\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"%(value).1f oktilioni\"\nmsgstr[1] \"%(value).1f oktilioni\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"oktilioni %(value)s\"\nmsgstr[1] \"oktilioni %(value)s\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"nonilioni %(value).1f\"\nmsgstr[1] \"nonilioni %(value).1f\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"nonilioni %(value)s\"\nmsgstr[1] \"nonilioni %(value)s\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"desilioni %(value).1f\"\nmsgstr[1] \"desilioni %(value).1f\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"desilioni %(value)s\"\nmsgstr[1] \"desilioni %(value)s\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"gogoli %(value).1f\"\nmsgstr[1] \"gogoli %(value).1f\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"gogoli %(value)s\"\nmsgstr[1] \"gogoli %(value)s\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"moja\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"mbili\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"tatu\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"nne\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"tano\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"sita\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"saba\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"nane\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"tisa\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"%(delta)s zilizopita\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"sasa\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"sekunde iliyopita\"\nmsgstr[1] \"sekunde %(count)s zilizopita\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"dakika iliyopita\"\nmsgstr[1] \"dakika %(count)s zilizopita\"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"saa iliyopita\"\nmsgstr[1] \"saa %(count)s zilizopita\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"%(delta)s kutoka sasa\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"sekunde moja kutoka sasa\"\nmsgstr[1] \"sekunde %(count)s kutoka sasa\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"dakika moja kutoka sasa\"\nmsgstr[1] \"dakika %(count)s kutoka sasa\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"saa moja kutoka sasa\"\nmsgstr[1] \"saa %(count)s kutoka sasa\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/ta/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2011-01-19 15:13+0000\\n\"\n\"Last-Translator: Django team\\n\"\n\"Language-Team: Tamil (http://www.transifex.com/projects/p/django/language/\"\n\"ta/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ta\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/te/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# bhaskar teja yerneni <prudhviy@gmail.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <prudhviy@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:08+0000\\n\"\n\"Last-Translator: bhaskar teja yerneni <prudhviy@gmail.com>\\n\"\n\"Language-Team: Telugu (http://www.transifex.com/projects/p/django/language/\"\n\"te/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: te\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"ఈ రోజు\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"నిన్న\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"రెపు\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \"వ\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \"వ\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \"వ\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \"వ\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"ఒక్కటి\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"రెండు\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"మూడు\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"నాలుగు\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"ఐదు\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"ఆరు\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"ఏడు\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"ఎనిమిది \"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"తొమ్మిది\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"%(delta)s క్రితము\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"ఇప్పుడు \"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"ఒక క్షణం క్రితము \"\nmsgstr[1] \"%(count)s క్షణాలు క్రితము \"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"ఒక నిముషము క్రితము \"\nmsgstr[1] \"%(count)s నిముషాల క్రితము \"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"ఒక గంట క్రితము \"\nmsgstr[1] \"%(count)s గంటల క్రితము \"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"ఇప్పటినుండి %(delta)s కు\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"ఒక క్షణములో \"\nmsgstr[1] \"%(count)s క్షణాలో \"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"ఒక నిముషములో \"\nmsgstr[1] \"%(count)s నిముషాలో \"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"ఒక గంట సమయములో \"\nmsgstr[1] \"%(count)s గంటల సమయము లో \"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/th/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Kowit Charoenratchatabhan <kowito@gmail.com>, 2012.\n# Vichai Vongvorakul <vongvichai@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:08+0000\\n\"\n\"Last-Translator: Vichai Vongvorakul <vongvichai@gmail.com>\\n\"\n\"Language-Team: Thai (http://www.transifex.com/projects/p/django/language/\"\n\"th/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: th\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"วันนี้\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"เมื่อวานนี้\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"พรุ่งนี้\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \"th\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \"st\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \"nd\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \"rd\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"%(value).1f หนึ่งล้าน\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"%(value)s ล้าน\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"%(value).1f สิบล้าน\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"%(value)s พันล้าน\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"%(value).1f ร้อยล้าน\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \" %(value)s  ล้านล้าน\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"%(value).1f quadrillion\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"%(value)s quadrillion\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"%(value).1f quintillion\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"%(value)s quintillion\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"%(value).1f sextillion\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"%(value)s sextillion\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"%(value).1f septillion\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"%(value)s septillion\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"%(value).1f octillion\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"%(value)s octillion\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"%(value).1f nonillion\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"%(value)s nonillion\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"%(value).1f decillion\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"%(value)s decillion\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"%(value).1f googol\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"%(value)s googol\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"หนึ่ง\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"สอง\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"สาม\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"สี่\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"ห้า\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"หก\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"เจ็ด\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"แปด\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"เก้า\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \" %(delta)s  ที่ผ่านมา\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"ขณะนี้\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"%(count)s วินาทีที่ผ่านมา\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"%(count)s นาทีที่แล้ว\"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"%(count)s ชั่วโมงที่แล้ว\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"%(delta)s จากนี้\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"%(count)s วินาทีต่อจากนี้\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \" %(count)s  นาทีต่อจากนี้\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"%(count)s ชั่วโมงต่อจากนี้\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/tr/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Metin Amiroff <amiroff@gmail.com>, 2012.\n# Murat Sahin <martinamca@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-03-10 14:53+0000\\n\"\n\"Last-Translator: Metin Amiroff <amiroff@gmail.com>\\n\"\n\"Language-Team: Turkish (http://www.transifex.com/projects/p/django/language/\"\n\"tr/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: tr\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"bugün\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"dün\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"yarın\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \".\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \".\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \".\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \".\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"%(value).1f milyon\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"%(value)s milyon\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"%(value).1f milyar\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"%(value)s milyar\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"%(value).1f trilyon\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"%(value)s trilyon\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"%(value).1f katrilyon\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"%(value)s katrilyon\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"%(value).1f kentilyon\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"%(value)s kentilyon\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"%(value).1f seksilyon\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"%(value)s seksilyon\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"%(value).1f septilyon\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"%(value)s septilyon\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"%(value).1f oktilyon\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"%(value)s oktilyon\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"%(value).1f nonilyon\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"%(value)s nonilyon\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"%(value).1f desilyon\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"%(value)s desilyon\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"%(value).1f googol\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"%(value)s googol\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"bir\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"iki\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"üç\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"dört\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"beş\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"altı\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"yedi\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"sekiz\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"dokuz\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"%(delta)s önce\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"şimdi\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"%(count)s saniye önce\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"%s dakika önce\"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"%s saat önce\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"şu andan %(delta)s\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"şu andan %(count)s saniye sonra\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"şu andan %(count)s dakika sonra\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"şu andan %(count)s saat sonra\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/tt/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Azat Khasanshin <lordofbazuks@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:08+0000\\n\"\n\"Last-Translator: Azat Khasanshin <lordofbazuks@gmail.com>\\n\"\n\"Language-Team: Tatar (http://www.transifex.com/projects/p/django/language/\"\n\"tt/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: tt\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"бүген\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"кичә\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"иртәгә\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \"че\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \"че\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \"че\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \"че\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"%(value).1f миллион\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"%(value)s миллион\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"%(value).1f миллиард\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"%(value)s миллиард\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"%(value).1f триллион\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"%(value)s триллион\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"%(value).1f квадриллион\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"%(value)s квадриллион\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"%(value).1f квинтиллион\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"%(value)s квинтиллион\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"%(value).1f секстиллион\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"%(value)s секстиллион\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"%(value).1f септиллион\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"%(value)s септиллион\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"%(value).1f октиллион\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"%(value)s октиллион\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"%(value).1f нониллион\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"%(value)s нониллион\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"%(value).1f дециллион\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"%(value)s дециллион\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"%(value).1f дециллион\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"%(value)s гугол\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"бер\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"ике\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"өч\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"дүрт\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"биш\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"алты\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"җиде\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"сигез\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"тугыз\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"%(delta)s элек\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"хәзер\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"%(count)s секунд элек\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"%(count)s минут элек\"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"%(count)s сәгать элек\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"хәзердән %(delta)s\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"%(count)s секундта\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"%(count)s минутта\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"%(count)s сәгаттә\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/uk/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Sergey Lysach <sergikoff88@gmail.com>, 2012.\n# Андрей Костенко <andrey@kostenko.name>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-03-11 17:52+0000\\n\"\n\"Last-Translator: Sergey Lysach <sergikoff88@gmail.com>\\n\"\n\"Language-Team: Ukrainian (http://www.transifex.com/projects/p/django/\"\n\"language/uk/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: uk\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"сьогодні\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"вчора\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"завтра\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \"ий\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \"ий\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \"ій\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \"ий\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"%(value).1f мільйон\"\nmsgstr[1] \"%(value).1f мільйони\"\nmsgstr[2] \"%(value).1f мільйонів\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"%(value)s мільйон\"\nmsgstr[1] \"%(value)s мільйони\"\nmsgstr[2] \"%(value)s мільйонів\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"%(value).1f мільярд\"\nmsgstr[1] \"%(value).1f мільярди\"\nmsgstr[2] \"%(value).1f мільярдів\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"%(value)s мільярд\"\nmsgstr[1] \"%(value)s мільярди\"\nmsgstr[2] \"%(value)s мільярдів\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"%(value).1f трильйон\"\nmsgstr[1] \"%(value).1f трильйони\"\nmsgstr[2] \"%(value).1f трильйонів\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"%(value)s трильйон\"\nmsgstr[1] \"%(value)s трильйони\"\nmsgstr[2] \"%(value)s трильйонів\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"%(value).1f квадрильйон\"\nmsgstr[1] \"%(value).1f квадрильйони\"\nmsgstr[2] \"%(value).1f квадрильйонів\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"%(value)s квадрильйон\"\nmsgstr[1] \"%(value)s квадрильйони\"\nmsgstr[2] \"%(value)s квадрильйонів\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"%(value).1f квінтильйон\"\nmsgstr[1] \"%(value).1f квінтильйона\"\nmsgstr[2] \"%(value).1f квінтильйонів\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"%(value)s квінтильйон\"\nmsgstr[1] \"%(value)s квінтильйона\"\nmsgstr[2] \"%(value)s квінтильйонів\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"%(value).1f секстильйон\"\nmsgstr[1] \"%(value).1f секстильйона\"\nmsgstr[2] \"%(value).1f секстильйонів\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"%(value)s секстильйон\"\nmsgstr[1] \"%(value)s секстильйона\"\nmsgstr[2] \"%(value)s секстильйонів\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"%(value).1f септильйон\"\nmsgstr[1] \"%(value).1f септильйона\"\nmsgstr[2] \"%(value).1f септильйонів\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"%(value)s септильйон\"\nmsgstr[1] \"%(value)s септильйона\"\nmsgstr[2] \"%(value)s септильйонів\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"%(value).1f октильйон\"\nmsgstr[1] \"%(value).1f октильйони\"\nmsgstr[2] \"%(value).1f октильйонів\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"%(value)s октильйон\"\nmsgstr[1] \"%(value)s октильйони\"\nmsgstr[2] \"%(value)s октильйонів\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"%(value).1f нонільйон\"\nmsgstr[1] \"%(value).1f нонільйони\"\nmsgstr[2] \"%(value).1f нонільйонів\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"%(value)s нонільйон\"\nmsgstr[1] \"%(value)s нонільйони\"\nmsgstr[2] \"%(value)s нонільйонів\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"%(value).1f децильйон\"\nmsgstr[1] \"%(value).1f децильйони\"\nmsgstr[2] \"%(value).1f децильйонів\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"%(value)s децильйон\"\nmsgstr[1] \"%(value)s децильйони\"\nmsgstr[2] \"%(value)s децильйонів\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"%(value).1f гугол\"\nmsgstr[1] \"%(value).1f гуголі\"\nmsgstr[2] \"%(value).1f гуголів\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"%(value)s гугол\"\nmsgstr[1] \"%(value)s гуголі\"\nmsgstr[2] \"%(value)s гуголів\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"один\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"два\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"три\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"чотири\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"п'ять\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"шість\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"сім\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"вісім\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"дев'ять\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"%(delta)s тому\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"зараз\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"секунду тому\"\nmsgstr[1] \"%(count)s секунди тому\"\nmsgstr[2] \"%(count)s секунд тому\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"хвилину тому\"\nmsgstr[1] \"%(count)s хвилини тому\"\nmsgstr[2] \"%(count)s хвилин тому\"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"годину тому\"\nmsgstr[1] \"%(count)s години тому\"\nmsgstr[2] \"%(count)s годин тому\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"через %(delta)s\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"через секунду\"\nmsgstr[1] \"через %(count)s секунди\"\nmsgstr[2] \"через %(count)s секунд\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"через хвилину\"\nmsgstr[1] \"через %(count)s хвилини\"\nmsgstr[2] \"через %(count)s хвилин\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"через годину\"\nmsgstr[1] \"через %(count)s години\"\nmsgstr[2] \"через %(count)s годин\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/ur/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Mansoorulhaq Mansoor <mansoorulhaq1986@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:08+0000\\n\"\n\"Last-Translator: Mansoorulhaq Mansoor <mansoorulhaq1986@gmail.com>\\n\"\n\"Language-Team: Urdu (http://www.transifex.com/projects/p/django/language/\"\n\"ur/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ur\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"آج\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"گزستہ کل\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"آئندہ کل\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \"واں\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \"پہلا\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \"دوسرا\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \"تیسرا\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"%(value).1f ملین\"\nmsgstr[1] \"%(value).1f ملین\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"%(value).1f بلین\"\nmsgstr[1] \"%(value).1f بلین\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"%(value).1f ٹریلین\"\nmsgstr[1] \"%(value).1f ٹریلین\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"ایک\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"دو\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"تین\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"چار\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"پانچ\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"چھ\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"سات\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"آتھ\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"نو\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/vi/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:08+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Vietnamese (http://www.transifex.com/projects/p/django/\"\n\"language/vi/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: vi\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"Hôm nay\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"Hôm qua\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"Ngày mai\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \"th\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \"st\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \"nd\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \"rd\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"Một\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"Hai\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"Ba\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"Bốn\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"Năm\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"Sáu\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"Bảy\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"Tám\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"Chín\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/zh_CN/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Kevin Shi <leiarix@gmail.com>, 2012.\n# Ziang Song <songziang@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-08-26 01:58+0000\\n\"\n\"Last-Translator: 磊 施 <leiarix@gmail.com>\\n\"\n\"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/django/\"\n\"language/zh_CN/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: zh_CN\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"今天\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"昨天\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"明天\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \"th\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \"st\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \"nd\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \"rd\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"%(value).1f 百万\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"%(value)s 百万\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"%(value).1f 十亿\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"%(value)s 十亿\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"%(value).1f 万亿\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"%(value)s 万亿\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"%(value).1f 1000的5次方\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"%(value)s 1000的5次方\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"%(value).1f 1000的4次方\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"%(value)s 1000的4次方\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"%(value).1f 1000的7次方\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"%(value)s 1000的7次方\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"%(value).1f 1000的8次方\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"%(value)s 1000的8次方\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"%(value).1f 1000的9次方\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"%(value)s 1000的9次方\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"%(value).1f 1000的10次方\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"%(value)s 1000的10次方\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"%(value).1f 1000的11次方\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"%(value)s 1000的11次方\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"%(value).1f 10的100次方\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"%(value)s 10的100次方\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"一\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"二\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"三\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"四\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"五\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"六\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"七\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"八\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"九\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"%(delta)s 之前\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"现在\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"%(count)s 秒钟之前\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"%(count)s 分钟之前\"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"%(count)s 小时之前\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"%(delta)s 之后\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"%(count)s 秒钟之后\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"%(count)s 分钟之后\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"%(count)s 小时之后\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/locale/zh_TW/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# tcc <tcchou@tcchou.org>, 2011.\n#   <yyc1217@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-09-20 06:29+0000\\n\"\n\"Last-Translator: yyc1217 <yyc1217@gmail.com>\\n\"\n\"Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/django/\"\n\"language/zh_TW/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: zh_TW\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: tests.py:125 templatetags/humanize.py:167\nmsgid \"today\"\nmsgstr \"今天\"\n\n#: tests.py:125 templatetags/humanize.py:171\nmsgid \"yesterday\"\nmsgstr \"昨天\"\n\n#: tests.py:125 templatetags/humanize.py:169\nmsgid \"tomorrow\"\nmsgstr \"明天\"\n\n#: templatetags/humanize.py:25\nmsgid \"th\"\nmsgstr \"th\"\n\n#: templatetags/humanize.py:25\nmsgid \"st\"\nmsgstr \"st\"\n\n#: templatetags/humanize.py:25\nmsgid \"nd\"\nmsgstr \"nd\"\n\n#: templatetags/humanize.py:25\nmsgid \"rd\"\nmsgstr \"rd\"\n\n#: templatetags/humanize.py:54\n#, python-format\nmsgid \"%(value).1f million\"\nmsgid_plural \"%(value).1f million\"\nmsgstr[0] \"%(value).1f 百萬\"\n\n#: templatetags/humanize.py:55\n#, python-format\nmsgid \"%(value)s million\"\nmsgid_plural \"%(value)s million\"\nmsgstr[0] \"%(value)s 百萬\"\n\n#: templatetags/humanize.py:58\n#, python-format\nmsgid \"%(value).1f billion\"\nmsgid_plural \"%(value).1f billion\"\nmsgstr[0] \"%(value).1f 十億\"\n\n#: templatetags/humanize.py:59\n#, python-format\nmsgid \"%(value)s billion\"\nmsgid_plural \"%(value)s billion\"\nmsgstr[0] \"%(value)s 十億\"\n\n#: templatetags/humanize.py:62\n#, python-format\nmsgid \"%(value).1f trillion\"\nmsgid_plural \"%(value).1f trillion\"\nmsgstr[0] \"%(value).1f 兆\"\n\n#: templatetags/humanize.py:63\n#, python-format\nmsgid \"%(value)s trillion\"\nmsgid_plural \"%(value)s trillion\"\nmsgstr[0] \"%(value)s 兆\"\n\n#: templatetags/humanize.py:66\n#, python-format\nmsgid \"%(value).1f quadrillion\"\nmsgid_plural \"%(value).1f quadrillion\"\nmsgstr[0] \"%(value).1f 千兆\"\n\n#: templatetags/humanize.py:67\n#, python-format\nmsgid \"%(value)s quadrillion\"\nmsgid_plural \"%(value)s quadrillion\"\nmsgstr[0] \"%(value)s 千兆\"\n\n#: templatetags/humanize.py:70\n#, python-format\nmsgid \"%(value).1f quintillion\"\nmsgid_plural \"%(value).1f quintillion\"\nmsgstr[0] \"%(value).1f 百京\"\n\n#: templatetags/humanize.py:71\n#, python-format\nmsgid \"%(value)s quintillion\"\nmsgid_plural \"%(value)s quintillion\"\nmsgstr[0] \"%(value)s 百京\"\n\n#: templatetags/humanize.py:74\n#, python-format\nmsgid \"%(value).1f sextillion\"\nmsgid_plural \"%(value).1f sextillion\"\nmsgstr[0] \"%(value).1f 十垓\"\n\n#: templatetags/humanize.py:75\n#, python-format\nmsgid \"%(value)s sextillion\"\nmsgid_plural \"%(value)s sextillion\"\nmsgstr[0] \"%(value)s 十垓\"\n\n#: templatetags/humanize.py:78\n#, python-format\nmsgid \"%(value).1f septillion\"\nmsgid_plural \"%(value).1f septillion\"\nmsgstr[0] \"%(value).1f 秭\"\n\n#: templatetags/humanize.py:79\n#, python-format\nmsgid \"%(value)s septillion\"\nmsgid_plural \"%(value)s septillion\"\nmsgstr[0] \"%(value)s 秭\"\n\n#: templatetags/humanize.py:82\n#, python-format\nmsgid \"%(value).1f octillion\"\nmsgid_plural \"%(value).1f octillion\"\nmsgstr[0] \"%(value).1f 千秭\"\n\n#: templatetags/humanize.py:83\n#, python-format\nmsgid \"%(value)s octillion\"\nmsgid_plural \"%(value)s octillion\"\nmsgstr[0] \"%(value)s 千秭\"\n\n#: templatetags/humanize.py:86\n#, python-format\nmsgid \"%(value).1f nonillion\"\nmsgid_plural \"%(value).1f nonillion\"\nmsgstr[0] \"%(value).1f 百穰\"\n\n#: templatetags/humanize.py:87\n#, python-format\nmsgid \"%(value)s nonillion\"\nmsgid_plural \"%(value)s nonillion\"\nmsgstr[0] \"%(value)s 百穰\"\n\n#: templatetags/humanize.py:90\n#, python-format\nmsgid \"%(value).1f decillion\"\nmsgid_plural \"%(value).1f decillion\"\nmsgstr[0] \"%(value).1f 十溝\"\n\n#: templatetags/humanize.py:91\n#, python-format\nmsgid \"%(value)s decillion\"\nmsgid_plural \"%(value)s decillion\"\nmsgstr[0] \"%(value)s 十溝\"\n\n#: templatetags/humanize.py:94\n#, python-format\nmsgid \"%(value).1f googol\"\nmsgid_plural \"%(value).1f googol\"\nmsgstr[0] \"%(value).1f 穰大數\"\n\n#: templatetags/humanize.py:95\n#, python-format\nmsgid \"%(value)s googol\"\nmsgid_plural \"%(value)s googol\"\nmsgstr[0] \"%(value)s 穰大數\"\n\n#: templatetags/humanize.py:144\nmsgid \"one\"\nmsgstr \"一\"\n\n#: templatetags/humanize.py:144\nmsgid \"two\"\nmsgstr \"二\"\n\n#: templatetags/humanize.py:144\nmsgid \"three\"\nmsgstr \"三\"\n\n#: templatetags/humanize.py:144\nmsgid \"four\"\nmsgstr \"四\"\n\n#: templatetags/humanize.py:144\nmsgid \"five\"\nmsgstr \"五\"\n\n#: templatetags/humanize.py:144\nmsgid \"six\"\nmsgstr \"六\"\n\n#: templatetags/humanize.py:144\nmsgid \"seven\"\nmsgstr \"七\"\n\n#: templatetags/humanize.py:144\nmsgid \"eight\"\nmsgstr \"八\"\n\n#: templatetags/humanize.py:144\nmsgid \"nine\"\nmsgstr \"九\"\n\n#: templatetags/humanize.py:190\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s ago\"\nmsgstr \"%(delta)s 以前\"\n\n#: templatetags/humanize.py:193 templatetags/humanize.py:215\nmsgid \"now\"\nmsgstr \"現在\"\n\n#: templatetags/humanize.py:196\n#, python-format\nmsgid \"a second ago\"\nmsgid_plural \"%(count)s seconds ago\"\nmsgstr[0] \"%(count)s 秒前\"\n\n#: templatetags/humanize.py:201\n#, python-format\nmsgid \"a minute ago\"\nmsgid_plural \"%(count)s minutes ago\"\nmsgstr[0] \"%(count)s 分鐘前\"\n\n#: templatetags/humanize.py:206\n#, python-format\nmsgid \"an hour ago\"\nmsgid_plural \"%(count)s hours ago\"\nmsgstr[0] \"%(count)s 小時前\"\n\n#: templatetags/humanize.py:212\n#, python-format\nmsgctxt \"naturaltime\"\nmsgid \"%(delta)s from now\"\nmsgstr \"%(delta)s 後\"\n\n#: templatetags/humanize.py:218\n#, python-format\nmsgid \"a second from now\"\nmsgid_plural \"%(count)s seconds from now\"\nmsgstr[0] \"%(count)s 秒後\"\n\n#: templatetags/humanize.py:223\n#, python-format\nmsgid \"a minute from now\"\nmsgid_plural \"%(count)s minutes from now\"\nmsgstr[0] \"%(count)s 分鐘後\"\n\n#: templatetags/humanize.py:228\n#, python-format\nmsgid \"an hour from now\"\nmsgid_plural \"%(count)s hours from now\"\nmsgstr[0] \"%(count)s 小時後\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/models.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/templatetags/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/templatetags/humanize.py",
    "content": "from __future__ import unicode_literals\nimport re\nfrom datetime import date, datetime\n\nfrom django import template\nfrom django.conf import settings\nfrom django.template import defaultfilters\nfrom django.utils.encoding import force_text\nfrom django.utils.formats import number_format\nfrom django.utils.translation import pgettext, ungettext, ugettext as _\nfrom django.utils.timezone import is_aware, utc\n\nregister = template.Library()\n\n@register.filter(is_safe=True)\ndef ordinal(value):\n    \"\"\"\n    Converts an integer to its ordinal as a string. 1 is '1st', 2 is '2nd',\n    3 is '3rd', etc. Works for any integer.\n    \"\"\"\n    try:\n        value = int(value)\n    except (TypeError, ValueError):\n        return value\n    suffixes = (_('th'), _('st'), _('nd'), _('rd'), _('th'), _('th'), _('th'), _('th'), _('th'), _('th'))\n    if value % 100 in (11, 12, 13): # special case\n        return \"%d%s\" % (value, suffixes[0])\n    return \"%d%s\" % (value, suffixes[value % 10])\n\n@register.filter(is_safe=True)\ndef intcomma(value, use_l10n=True):\n    \"\"\"\n    Converts an integer to a string containing commas every three digits.\n    For example, 3000 becomes '3,000' and 45000 becomes '45,000'.\n    \"\"\"\n    if settings.USE_L10N and use_l10n:\n        try:\n            if not isinstance(value, float):\n                value = int(value)\n        except (TypeError, ValueError):\n            return intcomma(value, False)\n        else:\n            return number_format(value, force_grouping=True)\n    orig = force_text(value)\n    new = re.sub(\"^(-?\\d+)(\\d{3})\", '\\g<1>,\\g<2>', orig)\n    if orig == new:\n        return new\n    else:\n        return intcomma(new, use_l10n)\n\n# A tuple of standard large number to their converters\nintword_converters = (\n    (6, lambda number: (\n        ungettext('%(value).1f million', '%(value).1f million', number),\n        ungettext('%(value)s million', '%(value)s million', number),\n    )),\n    (9, lambda number: (\n        ungettext('%(value).1f billion', '%(value).1f billion', number),\n        ungettext('%(value)s billion', '%(value)s billion', number),\n    )),\n    (12, lambda number: (\n        ungettext('%(value).1f trillion', '%(value).1f trillion', number),\n        ungettext('%(value)s trillion', '%(value)s trillion', number),\n    )),\n    (15, lambda number: (\n        ungettext('%(value).1f quadrillion', '%(value).1f quadrillion', number),\n        ungettext('%(value)s quadrillion', '%(value)s quadrillion', number),\n    )),\n    (18, lambda number: (\n        ungettext('%(value).1f quintillion', '%(value).1f quintillion', number),\n        ungettext('%(value)s quintillion', '%(value)s quintillion', number),\n    )),\n    (21, lambda number: (\n        ungettext('%(value).1f sextillion', '%(value).1f sextillion', number),\n        ungettext('%(value)s sextillion', '%(value)s sextillion', number),\n    )),\n    (24, lambda number: (\n        ungettext('%(value).1f septillion', '%(value).1f septillion', number),\n        ungettext('%(value)s septillion', '%(value)s septillion', number),\n    )),\n    (27, lambda number: (\n        ungettext('%(value).1f octillion', '%(value).1f octillion', number),\n        ungettext('%(value)s octillion', '%(value)s octillion', number),\n    )),\n    (30, lambda number: (\n        ungettext('%(value).1f nonillion', '%(value).1f nonillion', number),\n        ungettext('%(value)s nonillion', '%(value)s nonillion', number),\n    )),\n    (33, lambda number: (\n        ungettext('%(value).1f decillion', '%(value).1f decillion', number),\n        ungettext('%(value)s decillion', '%(value)s decillion', number),\n    )),\n    (100, lambda number: (\n        ungettext('%(value).1f googol', '%(value).1f googol', number),\n        ungettext('%(value)s googol', '%(value)s googol', number),\n    )),\n)\n\n@register.filter(is_safe=False)\ndef intword(value):\n    \"\"\"\n    Converts a large integer to a friendly text representation. Works best\n    for numbers over 1 million. For example, 1000000 becomes '1.0 million',\n    1200000 becomes '1.2 million' and '1200000000' becomes '1.2 billion'.\n    \"\"\"\n    try:\n        value = int(value)\n    except (TypeError, ValueError):\n        return value\n\n    if value < 1000000:\n        return value\n\n    def _check_for_i18n(value, float_formatted, string_formatted):\n        \"\"\"\n        Use the i18n enabled defaultfilters.floatformat if possible\n        \"\"\"\n        if settings.USE_L10N:\n            value = defaultfilters.floatformat(value, 1)\n            template = string_formatted\n        else:\n            template = float_formatted\n        return template % {'value': value}\n\n    for exponent, converters in intword_converters:\n        large_number = 10 ** exponent\n        if value < large_number * 1000:\n            new_value = value / float(large_number)\n            return _check_for_i18n(new_value, *converters(new_value))\n    return value\n\n@register.filter(is_safe=True)\ndef apnumber(value):\n    \"\"\"\n    For numbers 1-9, returns the number spelled out. Otherwise, returns the\n    number. This follows Associated Press style.\n    \"\"\"\n    try:\n        value = int(value)\n    except (TypeError, ValueError):\n        return value\n    if not 0 < value < 10:\n        return value\n    return (_('one'), _('two'), _('three'), _('four'), _('five'), _('six'), _('seven'), _('eight'), _('nine'))[value-1]\n\n# Perform the comparison in the default time zone when USE_TZ = True\n# (unless a specific time zone has been applied with the |timezone filter).\n@register.filter(expects_localtime=True)\ndef naturalday(value, arg=None):\n    \"\"\"\n    For date values that are tomorrow, today or yesterday compared to\n    present day returns representing string. Otherwise, returns a string\n    formatted according to settings.DATE_FORMAT.\n    \"\"\"\n    try:\n        tzinfo = getattr(value, 'tzinfo', None)\n        value = date(value.year, value.month, value.day)\n    except AttributeError:\n        # Passed value wasn't a date object\n        return value\n    except ValueError:\n        # Date arguments out of range\n        return value\n    today = datetime.now(tzinfo).date()\n    delta = value - today\n    if delta.days == 0:\n        return _('today')\n    elif delta.days == 1:\n        return _('tomorrow')\n    elif delta.days == -1:\n        return _('yesterday')\n    return defaultfilters.date(value, arg)\n\n# This filter doesn't require expects_localtime=True because it deals properly\n# with both naive and aware datetimes. Therefore avoid the cost of conversion.\n@register.filter\ndef naturaltime(value):\n    \"\"\"\n    For date and time values shows how many seconds, minutes or hours ago\n    compared to current timestamp returns representing string.\n    \"\"\"\n    if not isinstance(value, date): # datetime is a subclass of date\n        return value\n\n    now = datetime.now(utc if is_aware(value) else None)\n    if value < now:\n        delta = now - value\n        if delta.days != 0:\n            return pgettext(\n                'naturaltime', '%(delta)s ago'\n            ) % {'delta': defaultfilters.timesince(value, now)}\n        elif delta.seconds == 0:\n            return _('now')\n        elif delta.seconds < 60:\n            return ungettext(\n                'a second ago', '%(count)s seconds ago', delta.seconds\n            ) % {'count': delta.seconds}\n        elif delta.seconds // 60 < 60:\n            count = delta.seconds // 60\n            return ungettext(\n                'a minute ago', '%(count)s minutes ago', count\n            ) % {'count': count}\n        else:\n            count = delta.seconds // 60 // 60\n            return ungettext(\n                'an hour ago', '%(count)s hours ago', count\n            ) % {'count': count}\n    else:\n        delta = value - now\n        if delta.days != 0:\n            return pgettext(\n                'naturaltime', '%(delta)s from now'\n            ) % {'delta': defaultfilters.timeuntil(value, now)}\n        elif delta.seconds == 0:\n            return _('now')\n        elif delta.seconds < 60:\n            return ungettext(\n                'a second from now', '%(count)s seconds from now', delta.seconds\n            ) % {'count': delta.seconds}\n        elif delta.seconds // 60 < 60:\n            count = delta.seconds // 60\n            return ungettext(\n                'a minute from now', '%(count)s minutes from now', count\n            ) % {'count': count}\n        else:\n            count = delta.seconds // 60 // 60\n            return ungettext(\n                'an hour from now', '%(count)s hours from now', count\n            ) % {'count': count}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/humanize/tests.py",
    "content": "from __future__ import unicode_literals\nimport datetime\n\ntry:\n    import pytz\nexcept ImportError:\n    pytz = None\n\nfrom django.conf import settings\nfrom django.contrib.humanize.templatetags import humanize\nfrom django.template import Template, Context, defaultfilters\nfrom django.test import TestCase\nfrom django.test.utils import override_settings\nfrom django.utils.html import escape\nfrom django.utils.timezone import utc\nfrom django.utils import translation\nfrom django.utils.translation import ugettext as _\nfrom django.utils import tzinfo\nfrom django.utils.unittest import skipIf\n\n\n# Mock out datetime in some tests so they don't fail occasionally when they\n# run too slow. Use a fixed datetime for datetime.now(). DST change in\n# America/Chicago (the default time zone) happened on March 11th in 2012.\n\nnow = datetime.datetime(2012, 3, 9, 22, 30)\n\nclass MockDateTime(datetime.datetime):\n    @classmethod\n    def now(self, tz=None):\n        if tz is None or tz.utcoffset(now) is None:\n            return now\n        else:\n            # equals now.replace(tzinfo=utc)\n            return now.replace(tzinfo=tz) + tz.utcoffset(now)\n\n\nclass HumanizeTests(TestCase):\n\n    def humanize_tester(self, test_list, result_list, method):\n        # Using max below ensures we go through both lists\n        # However, if the lists are not equal length, this raises an exception\n        for test_content, result in zip(test_list, result_list):\n            t = Template('{%% load humanize %%}{{ test_content|%s }}' % method)\n            rendered = t.render(Context(locals())).strip()\n            self.assertEqual(rendered, escape(result),\n                             msg=\"%s test failed, produced '%s', should've produced '%s'\" % (method, rendered, result))\n\n    def test_ordinal(self):\n        test_list = ('1', '2', '3', '4', '11', '12',\n                     '13', '101', '102', '103', '111',\n                     'something else', None)\n        result_list = ('1st', '2nd', '3rd', '4th', '11th',\n                       '12th', '13th', '101st', '102nd', '103rd',\n                       '111th', 'something else', None)\n\n        self.humanize_tester(test_list, result_list, 'ordinal')\n\n    def test_intcomma(self):\n        test_list = (100, 1000, 10123, 10311, 1000000, 1234567.25,\n                     '100', '1000', '10123', '10311', '1000000', '1234567.1234567',\n                     None)\n        result_list = ('100', '1,000', '10,123', '10,311', '1,000,000', '1,234,567.25',\n                       '100', '1,000', '10,123', '10,311', '1,000,000', '1,234,567.1234567',\n                     None)\n\n        self.humanize_tester(test_list, result_list, 'intcomma')\n\n    def test_l10n_intcomma(self):\n        test_list = (100, 1000, 10123, 10311, 1000000, 1234567.25,\n                     '100', '1000', '10123', '10311', '1000000', '1234567.1234567',\n                     None)\n        result_list = ('100', '1,000', '10,123', '10,311', '1,000,000', '1,234,567.25',\n                       '100', '1,000', '10,123', '10,311', '1,000,000', '1,234,567.1234567',\n                     None)\n\n        with self.settings(USE_L10N=True, USE_THOUSAND_SEPARATOR=False):\n            self.humanize_tester(test_list, result_list, 'intcomma')\n\n    def test_intcomma_without_number_grouping(self):\n        # Regression for #17414\n        with translation.override('ja'):\n            with self.settings(USE_L10N=True):\n                self.humanize_tester([100], ['100'], 'intcomma')\n\n    def test_intword(self):\n        test_list = ('100', '1000000', '1200000', '1290000',\n                     '1000000000', '2000000000', '6000000000000',\n                     '1300000000000000', '3500000000000000000000',\n                     '8100000000000000000000000000000000', None)\n        result_list = ('100', '1.0 million', '1.2 million', '1.3 million',\n                       '1.0 billion', '2.0 billion', '6.0 trillion',\n                       '1.3 quadrillion', '3.5 sextillion',\n                       '8.1 decillion', None)\n        self.humanize_tester(test_list, result_list, 'intword')\n\n    def test_i18n_intcomma(self):\n        test_list = (100, 1000, 10123, 10311, 1000000, 1234567.25,\n                     '100', '1000', '10123', '10311', '1000000', None)\n        result_list = ('100', '1.000', '10.123', '10.311', '1.000.000', '1.234.567,25',\n                       '100', '1.000', '10.123', '10.311', '1.000.000', None)\n        with self.settings(USE_L10N=True, USE_THOUSAND_SEPARATOR=True):\n            with translation.override('de'):\n                self.humanize_tester(test_list, result_list, 'intcomma')\n\n    def test_i18n_intword(self):\n        test_list = ('100', '1000000', '1200000', '1290000',\n                     '1000000000', '2000000000', '6000000000000')\n        result_list = ('100', '1,0 Million', '1,2 Millionen', '1,3 Millionen',\n                       '1,0 Milliarde', '2,0 Milliarden', '6,0 Billionen')\n        with self.settings(USE_L10N=True, USE_THOUSAND_SEPARATOR=True):\n            with translation.override('de'):\n                self.humanize_tester(test_list, result_list, 'intword')\n\n    def test_apnumber(self):\n        test_list = [str(x) for x in range(1, 11)]\n        test_list.append(None)\n        result_list = ('one', 'two', 'three', 'four', 'five', 'six',\n                       'seven', 'eight', 'nine', '10', None)\n\n        self.humanize_tester(test_list, result_list, 'apnumber')\n\n    def test_naturalday(self):\n        today = datetime.date.today()\n        yesterday = today - datetime.timedelta(days=1)\n        tomorrow = today + datetime.timedelta(days=1)\n        someday = today - datetime.timedelta(days=10)\n        notdate = \"I'm not a date value\"\n\n        test_list = (today, yesterday, tomorrow, someday, notdate, None)\n        someday_result = defaultfilters.date(someday)\n        result_list = (_('today'), _('yesterday'), _('tomorrow'),\n                       someday_result, \"I'm not a date value\", None)\n        self.humanize_tester(test_list, result_list, 'naturalday')\n\n    def test_naturalday_tz(self):\n        today = datetime.date.today()\n        tz_one = tzinfo.FixedOffset(datetime.timedelta(hours=-12))\n        tz_two = tzinfo.FixedOffset(datetime.timedelta(hours=12))\n\n        # Can be today or yesterday\n        date_one = datetime.datetime(today.year, today.month, today.day, tzinfo=tz_one)\n        naturalday_one = humanize.naturalday(date_one)\n        # Can be today or tomorrow\n        date_two = datetime.datetime(today.year, today.month, today.day, tzinfo=tz_two)\n        naturalday_two = humanize.naturalday(date_two)\n\n        # As 24h of difference they will never be the same\n        self.assertNotEqual(naturalday_one, naturalday_two)\n\n    @skipIf(settings.TIME_ZONE != \"America/Chicago\" and pytz is None,\n            \"this test requires pytz when a non-default time zone is set\")\n    def test_naturalday_uses_localtime(self):\n        # Regression for #18504\n        # This is 2012-03-08HT19:30:00-06:00 in America/Chicago\n        dt = datetime.datetime(2012, 3, 9, 1, 30, tzinfo=utc)\n\n        orig_humanize_datetime, humanize.datetime = humanize.datetime, MockDateTime\n        try:\n            with override_settings(TIME_ZONE=\"America/Chicago\", USE_TZ=True):\n                self.humanize_tester([dt], ['yesterday'], 'naturalday')\n        finally:\n            humanize.datetime = orig_humanize_datetime\n\n    def test_naturaltime(self):\n        class naive(datetime.tzinfo):\n            def utcoffset(self, dt):\n                return None\n        test_list = [\n            now,\n            now - datetime.timedelta(seconds=1),\n            now - datetime.timedelta(seconds=30),\n            now - datetime.timedelta(minutes=1, seconds=30),\n            now - datetime.timedelta(minutes=2),\n            now - datetime.timedelta(hours=1, minutes=30, seconds=30),\n            now - datetime.timedelta(hours=23, minutes=50, seconds=50),\n            now - datetime.timedelta(days=1),\n            now - datetime.timedelta(days=500),\n            now + datetime.timedelta(seconds=1),\n            now + datetime.timedelta(seconds=30),\n            now + datetime.timedelta(minutes=1, seconds=30),\n            now + datetime.timedelta(minutes=2),\n            now + datetime.timedelta(hours=1, minutes=30, seconds=30),\n            now + datetime.timedelta(hours=23, minutes=50, seconds=50),\n            now + datetime.timedelta(days=1),\n            now + datetime.timedelta(days=2, hours=6),\n            now + datetime.timedelta(days=500),\n            now.replace(tzinfo=naive()),\n            now.replace(tzinfo=utc),\n        ]\n        result_list = [\n            'now',\n            'a second ago',\n            '30 seconds ago',\n            'a minute ago',\n            '2 minutes ago',\n            'an hour ago',\n            '23 hours ago',\n            '1 day ago',\n            '1 year, 4 months ago',\n            'a second from now',\n            '30 seconds from now',\n            'a minute from now',\n            '2 minutes from now',\n            'an hour from now',\n            '23 hours from now',\n            '1 day from now',\n            '2 days, 6 hours from now',\n            '1 year, 4 months from now',\n            'now',\n            'now',\n        ]\n        # Because of the DST change, 2 days and 6 hours after the chosen\n        # date in naive arithmetic is only 2 days and 5 hours after in\n        # aware arithmetic.\n        result_list_with_tz_support = result_list[:]\n        assert result_list_with_tz_support[-4] == '2 days, 6 hours from now'\n        result_list_with_tz_support[-4] == '2 days, 5 hours from now'\n\n        orig_humanize_datetime, humanize.datetime = humanize.datetime, MockDateTime\n        try:\n            self.humanize_tester(test_list, result_list, 'naturaltime')\n            with override_settings(USE_TZ=True):\n                self.humanize_tester(test_list, result_list_with_tz_support, 'naturaltime')\n        finally:\n            humanize.datetime = orig_humanize_datetime\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/__init__.py",
    "content": "import warnings\nwarnings.warn(\"django.contrib.localflavor is deprecated. Use the separate django-localflavor-* packages instead.\", DeprecationWarning)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/ar/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/ar/ar_provinces.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nA list of Argentinean provinces and autonomous cities as `choices` in a\nformfield. From\nhttp://www.argentina.gov.ar/argentina/portal/paginas.dhtml?pagina=425\n\nThis exists in this standalone file so that it's only imported into memory\nwhen explicitly needed.\n\"\"\"\nfrom __future__ import unicode_literals\n\nPROVINCE_CHOICES = (\n    ('B', 'Buenos Aires'),\n    ('K', 'Catamarca'),\n    ('H', 'Chaco'),\n    ('U', 'Chubut'),\n    ('C', 'Ciudad Autónoma de Buenos Aires'),\n    ('X', 'Córdoba'),\n    ('W', 'Corrientes'),\n    ('E', 'Entre Ríos'),\n    ('P', 'Formosa'),\n    ('Y', 'Jujuy'),\n    ('L', 'La Pampa'),\n    ('F', 'La Rioja'),\n    ('M', 'Mendoza'),\n    ('N', 'Misiones'),\n    ('Q', 'Neuquén'),\n    ('R', 'Río Negro'),\n    ('A', 'Salta'),\n    ('J', 'San Juan'),\n    ('D', 'San Luis'),\n    ('Z', 'Santa Cruz'),\n    ('S', 'Santa Fe'),\n    ('G', 'Santiago del Estero'),\n    ('V', 'Tierra del Fuego, Antártida e Islas del Atlántico Sur'),\n    ('T', 'Tucumán'),\n)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/ar/forms.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nAR-specific Form helpers.\n\"\"\"\n\nfrom __future__ import absolute_import, unicode_literals\n\nfrom django.contrib.localflavor.ar.ar_provinces import PROVINCE_CHOICES\nfrom django.core.validators import EMPTY_VALUES\nfrom django.forms import ValidationError\nfrom django.forms.fields import RegexField, CharField, Select\nfrom django.utils.translation import ugettext_lazy as _\n\n\nclass ARProvinceSelect(Select):\n    \"\"\"\n    A Select widget that uses a list of Argentinean provinces/autonomous cities\n    as its choices.\n    \"\"\"\n    def __init__(self, attrs=None):\n        super(ARProvinceSelect, self).__init__(attrs, choices=PROVINCE_CHOICES)\n\nclass ARPostalCodeField(RegexField):\n    \"\"\"\n    A field that accepts a 'classic' NNNN Postal Code or a CPA.\n\n    See:\n        http://www.correoargentino.com.ar/cpa/que_es\n        http://www.correoargentino.com.ar/cpa/como_escribirlo\n    \"\"\"\n    default_error_messages = {\n        'invalid': _(\"Enter a postal code in the format NNNN or ANNNNAAA.\"),\n    }\n\n    def __init__(self, max_length=8, min_length=4, *args, **kwargs):\n        super(ARPostalCodeField, self).__init__(r'^\\d{4}$|^[A-HJ-NP-Za-hj-np-z]\\d{4}\\D{3}$',\n            max_length, min_length, *args, **kwargs)\n\n    def clean(self, value):\n        value = super(ARPostalCodeField, self).clean(value)\n        if value in EMPTY_VALUES:\n            return ''\n        if len(value) not in (4, 8):\n            raise ValidationError(self.error_messages['invalid'])\n        if len(value) == 8:\n            return '%s%s%s' % (value[0].upper(), value[1:5], value[5:].upper())\n        return value\n\nclass ARDNIField(CharField):\n    \"\"\"\n    A field that validates 'Documento Nacional de Identidad' (DNI) numbers.\n    \"\"\"\n    default_error_messages = {\n        'invalid': _(\"This field requires only numbers.\"),\n        'max_digits': _(\"This field requires 7 or 8 digits.\"),\n    }\n\n    def __init__(self, max_length=10, min_length=7, *args, **kwargs):\n        super(ARDNIField, self).__init__(max_length, min_length, *args,\n                **kwargs)\n\n    def clean(self, value):\n        \"\"\"\n        Value can be a string either in the [X]X.XXX.XXX or [X]XXXXXXX formats.\n        \"\"\"\n        value = super(ARDNIField, self).clean(value)\n        if value in EMPTY_VALUES:\n            return ''\n        if not value.isdigit():\n            value = value.replace('.', '')\n        if not value.isdigit():\n            raise ValidationError(self.error_messages['invalid'])\n        if len(value) not in (7, 8):\n            raise ValidationError(self.error_messages['max_digits'])\n\n        return value\n\nclass ARCUITField(RegexField):\n    \"\"\"\n    This field validates a CUIT (Código Único de Identificación Tributaria). A\n    CUIT is of the form XX-XXXXXXXX-V. The last digit is a check digit.\n    \"\"\"\n    default_error_messages = {\n        'invalid': _('Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.'),\n        'checksum': _(\"Invalid CUIT.\"),\n        'legal_type': _('Invalid legal type. Type must be 27, 20, 23 or 30.'),\n    }\n\n    def __init__(self, max_length=None, min_length=None, *args, **kwargs):\n        super(ARCUITField, self).__init__(r'^\\d{2}-?\\d{8}-?\\d$',\n            max_length, min_length, *args, **kwargs)\n\n    def clean(self, value):\n        \"\"\"\n        Value can be either a string in the format XX-XXXXXXXX-X or an\n        11-digit number.\n        \"\"\"\n        value = super(ARCUITField, self).clean(value)\n        if value in EMPTY_VALUES:\n            return ''\n        value, cd = self._canon(value)\n        if not value[:2] in ['27', '20', '23', '30']:\n            raise ValidationError(self.error_messages['legal_type'])\n        if self._calc_cd(value) != cd:\n            raise ValidationError(self.error_messages['checksum'])\n        return self._format(value, cd)\n\n    def _canon(self, cuit):\n        cuit = cuit.replace('-', '')\n        return cuit[:-1], cuit[-1]\n\n    def _calc_cd(self, cuit):\n        # Calculation code based on:\n        # http://es.wikipedia.org/wiki/C%C3%B3digo_%C3%9Anico_de_Identificaci%C3%B3n_Tributaria\n        mults = (5, 4, 3, 2, 7, 6, 5, 4, 3, 2)\n        tmp = sum([m * int(cuit[idx]) for idx, m in enumerate(mults)])\n        result = 11 - (tmp % 11)\n        if result == 11:\n            result = 0\n        elif result == 10:\n            result = 9\n        return str(result)\n\n    def _format(self, cuit, check_digit=None):\n        if check_digit is None:\n            check_digit = cuit[-1]\n            cuit = cuit[:-1]\n        return '%s-%s-%s' % (cuit[:2], cuit[2:], check_digit)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/at/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/at/at_states.py",
    "content": "# -*- coding: utf-8 -*\nfrom django.utils.translation import ugettext_lazy as _\n\nSTATE_CHOICES = (\n    ('BL', _('Burgenland')),\n    ('KA', _('Carinthia')),\n    ('NO', _('Lower Austria')),\n    ('OO', _('Upper Austria')),\n    ('SA', _('Salzburg')),\n    ('ST', _('Styria')),\n    ('TI', _('Tyrol')),\n    ('VO', _('Vorarlberg')),\n    ('WI', _('Vienna')),\n)"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/at/forms.py",
    "content": "\"\"\"\nAT-specific Form helpers\n\"\"\"\nfrom __future__ import unicode_literals\nimport re\n\nfrom django.core.validators import EMPTY_VALUES\nfrom django.forms import ValidationError\nfrom django.forms.fields import Field, RegexField, Select\nfrom django.utils.translation import ugettext_lazy as _\n\nre_ssn = re.compile(r'^\\d{4} \\d{6}')\n\n\nclass ATZipCodeField(RegexField):\n    \"\"\"\n    A form field that validates its input is an Austrian postcode.\n\n    Accepts 4 digits (first digit must be greater than 0).\n    \"\"\"\n    default_error_messages = {\n        'invalid': _('Enter a zip code in the format XXXX.'),\n    }\n    def __init__(self, max_length=None, min_length=None, *args, **kwargs):\n        super(ATZipCodeField, self).__init__(r'^[1-9]{1}\\d{3}$',\n                max_length, min_length, *args, **kwargs)\n\nclass ATStateSelect(Select):\n    \"\"\"\n    A Select widget that uses a list of AT states as its choices.\n    \"\"\"\n    def __init__(self, attrs=None):\n        from django.contrib.localflavor.at.at_states import STATE_CHOICES\n        super(ATStateSelect, self).__init__(attrs, choices=STATE_CHOICES)\n\nclass ATSocialSecurityNumberField(Field):\n    \"\"\"\n    Austrian Social Security numbers are composed of a 4 digits and 6 digits\n    field. The latter represents in most cases the person's birthdate while\n    the first 4 digits represent a 3-digits counter and a one-digit checksum.\n\n    The 6-digits field can also differ from the person's birthdate if the\n    3-digits counter suffered an overflow.\n\n    This code is based on information available on\n    http://de.wikipedia.org/wiki/Sozialversicherungsnummer#.C3.96sterreich\n    \"\"\"\n\n    default_error_messages = {\n        'invalid': _('Enter a valid Austrian Social Security Number in XXXX XXXXXX format.'),\n    }\n\n    def clean(self, value):\n        value = super(ATSocialSecurityNumberField, self).clean(value)\n        if value in EMPTY_VALUES:\n            return \"\"\n        if not re_ssn.search(value):\n            raise ValidationError(self.error_messages['invalid'])\n        sqnr, date = value.split(\" \")\n        sqnr, check = (sqnr[:3], (sqnr[3]))\n        if int(sqnr) < 100:\n           raise ValidationError(self.error_messages['invalid'])\n        res = int(sqnr[0])*3 + int(sqnr[1])*7 + int(sqnr[2])*9 \\\n           + int(date[0])*5 + int(date[1])*8 + int(date[2])*4 \\\n           + int(date[3])*2 + int(date[4])*1 + int(date[5])*6\n        res = res % 11\n        if res != int(check):\n           raise ValidationError(self.error_messages['invalid'])\n        return '%s%s %s'%(sqnr, check, date,)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/au/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/au/au_states.py",
    "content": "\"\"\"\nAn alphabetical list of states for use as `choices` in a formfield.\n\nThis exists in this standalone file so that it's only imported into memory\nwhen explicitly needed.\n\"\"\"\n\nSTATE_CHOICES = (\n    ('ACT', 'Australian Capital Territory'),\n    ('NSW', 'New South Wales'),\n    ('NT', 'Northern Territory'),\n    ('QLD', 'Queensland'),\n    ('SA', 'South Australia'),\n    ('TAS', 'Tasmania'),\n    ('VIC', 'Victoria'),\n    ('WA', 'Western Australia'),\n)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/au/forms.py",
    "content": "\"\"\"\nAustralian-specific Form helpers\n\"\"\"\n\nfrom __future__ import absolute_import, unicode_literals\n\nimport re\n\nfrom django.contrib.localflavor.au.au_states import STATE_CHOICES\nfrom django.core.validators import EMPTY_VALUES\nfrom django.forms import ValidationError\nfrom django.forms.fields import Field, RegexField, Select\nfrom django.utils.encoding import smart_text\nfrom django.utils.translation import ugettext_lazy as _\n\n\nPHONE_DIGITS_RE = re.compile(r'^(\\d{10})$')\n\nclass AUPostCodeField(RegexField):\n    \"\"\" Australian post code field.\n\n    Assumed to be 4 digits.\n    Northern Territory 3-digit postcodes should have leading zero.\n    \"\"\"\n    default_error_messages = {\n        'invalid': _('Enter a 4 digit postcode.'),\n    }\n\n    def __init__(self, max_length=4, min_length=None, *args, **kwargs):\n        super(AUPostCodeField, self).__init__(r'^\\d{4}$',\n            max_length, min_length, *args, **kwargs)\n\n\nclass AUPhoneNumberField(Field):\n    \"\"\"Australian phone number field.\"\"\"\n    default_error_messages = {\n        'invalid': 'Phone numbers must contain 10 digits.',\n    }\n\n    def clean(self, value):\n        \"\"\"\n        Validate a phone number. Strips parentheses, whitespace and hyphens.\n        \"\"\"\n        super(AUPhoneNumberField, self).clean(value)\n        if value in EMPTY_VALUES:\n            return ''\n        value = re.sub('(\\(|\\)|\\s+|-)', '', smart_text(value))\n        phone_match = PHONE_DIGITS_RE.search(value)\n        if phone_match:\n            return '%s' % phone_match.group(1)\n        raise ValidationError(self.error_messages['invalid'])\n\n\nclass AUStateSelect(Select):\n    \"\"\"\n    A Select widget that uses a list of Australian states/territories as its\n    choices.\n    \"\"\"\n    def __init__(self, attrs=None):\n        super(AUStateSelect, self).__init__(attrs, choices=STATE_CHOICES)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/au/models.py",
    "content": "from django.utils.translation import ugettext_lazy as _\nfrom django.db.models.fields import CharField\n\nfrom django.contrib.localflavor.au.au_states import STATE_CHOICES\nfrom django.contrib.localflavor.au import forms\n\nclass AUStateField(CharField):\n\n    description = _(\"Australian State\")\n\n    def __init__(self, *args, **kwargs):\n        kwargs['choices'] = STATE_CHOICES\n        kwargs['max_length'] = 3\n        super(AUStateField, self).__init__(*args, **kwargs)\n\n\nclass AUPostCodeField(CharField):\n\n    description = _(\"Australian Postcode\")\n\n    def __init__(self, *args, **kwargs):\n        kwargs['max_length'] = 4\n        super(AUPostCodeField, self).__init__(*args, **kwargs)\n\n    def formfield(self, **kwargs):\n        defaults = {'form_class': forms.AUPostCodeField}\n        defaults.update(kwargs)\n        return super(AUPostCodeField, self).formfield(**defaults)\n\n\nclass AUPhoneNumberField(CharField):\n\n    description = _(\"Australian Phone number\")\n\n    def __init__(self, *args, **kwargs):\n        kwargs['max_length'] = 20\n        super(AUPhoneNumberField, self).__init__(*args, **kwargs)\n\n    def formfield(self, **kwargs):\n        defaults = {'form_class': forms.AUPhoneNumberField}\n        defaults.update(kwargs)\n        return super(AUPhoneNumberField, self).formfield(**defaults)\n\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/be/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/be/be_provinces.py",
    "content": "from django.utils.translation import ugettext_lazy as _\n\n# ISO codes\nPROVINCE_CHOICES = (\n    ('VAN', _('Antwerp')),\n    ('BRU', _('Brussels')),\n    ('VOV', _('East Flanders')),\n    ('VBR', _('Flemish Brabant')),\n    ('WHT', _('Hainaut')),\n    ('WLG', _('Liege')),\n    ('VLI', _('Limburg')),\n    ('WLX', _('Luxembourg')),\n    ('WNA', _('Namur')),\n    ('WBR', _('Walloon Brabant')),\n    ('VWV', _('West Flanders'))\n)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/be/be_regions.py",
    "content": "from django.utils.translation import ugettext_lazy as _\n\n# ISO codes\nREGION_CHOICES = (\n    ('BRU', _('Brussels Capital Region')),\n    ('VLG', _('Flemish Region')),\n    ('WAL', _('Wallonia'))\n)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/be/forms.py",
    "content": "\"\"\"\nBelgium-specific Form helpers\n\"\"\"\n\nfrom __future__ import absolute_import\n\nfrom django.contrib.localflavor.be.be_provinces import PROVINCE_CHOICES\nfrom django.contrib.localflavor.be.be_regions import REGION_CHOICES\nfrom django.forms.fields import RegexField, Select\nfrom django.utils.translation import ugettext_lazy as _\n\n\nclass BEPostalCodeField(RegexField):\n    \"\"\"\n    A form field that validates its input as a belgium postal code.\n\n    Belgium postal code is a 4 digits string. The first digit indicates\n    the province (except for the 3ddd numbers that are shared by the\n    eastern part of Flemish Brabant and Limburg and the and 1ddd that\n    are shared by the Brussels Capital Region, the western part of\n    Flemish Brabant and Walloon Brabant)\n    \"\"\"\n    default_error_messages = {\n        'invalid': _(\n            'Enter a valid postal code in the range and format 1XXX - 9XXX.'),\n    }\n\n    def __init__(self, max_length=None, min_length=None, *args, **kwargs):\n        super(BEPostalCodeField, self).__init__(r'^[1-9]\\d{3}$',\n                max_length, min_length, *args, **kwargs)\n\nclass BEPhoneNumberField(RegexField):\n    \"\"\"\n    A form field that validates its input as a belgium phone number.\n\n    Landlines have a seven-digit subscriber number and a one-digit area code,\n    while smaller cities have a six-digit subscriber number and a two-digit\n    area code. Cell phones have a six-digit subscriber number and a two-digit\n    area code preceeded by the number 4.\n    0d ddd dd dd, 0d/ddd.dd.dd, 0d.ddd.dd.dd,\n    0dddddddd - dialling a bigger city\n    0dd dd dd dd, 0dd/dd.dd.dd, 0dd.dd.dd.dd,\n    0dddddddd - dialling a smaller city\n    04dd ddd dd dd, 04dd/ddd.dd.dd,\n    04dd.ddd.dd.dd, 04ddddddddd - dialling a mobile number\n    \"\"\"\n    default_error_messages = {\n        'invalid': _('Enter a valid phone number in one of the formats '\n                     '0x xxx xx xx, 0xx xx xx xx, 04xx xx xx xx, '\n                     '0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, '\n                     '0x.xxx.xx.xx, 0xx.xx.xx.xx, 04xx.xx.xx.xx, '\n                     '0xxxxxxxx or 04xxxxxxxx.'),\n    }\n\n    def __init__(self, max_length=None, min_length=None, *args, **kwargs):\n        super(BEPhoneNumberField, self).__init__(r'^[0]\\d{1}[/. ]?\\d{3}[. ]\\d{2}[. ]?\\d{2}$|^[0]\\d{2}[/. ]?\\d{2}[. ]?\\d{2}[. ]?\\d{2}$|^[0][4]\\d{2}[/. ]?\\d{2}[. ]?\\d{2}[. ]?\\d{2}$',\n            max_length, min_length, *args, **kwargs)\n\nclass BERegionSelect(Select):\n    \"\"\"\n    A Select widget that uses a list of belgium regions as its choices.\n    \"\"\"\n    def __init__(self, attrs=None):\n        super(BERegionSelect, self).__init__(attrs, choices=REGION_CHOICES)\n\nclass BEProvinceSelect(Select):\n    \"\"\"\n    A Select widget that uses a list of belgium provinces as its choices.\n    \"\"\"\n    def __init__(self, attrs=None):\n        super(BEProvinceSelect, self).__init__(attrs, choices=PROVINCE_CHOICES)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/br/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/br/br_states.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nAn alphabetical list of Brazilian states for use as `choices` in a formfield.\n\nThis exists in this standalone file so that it's only imported into memory\nwhen explicitly needed.\n\"\"\"\nfrom __future__ import unicode_literals\n\nSTATE_CHOICES = (\n    ('AC', 'Acre'),\n    ('AL', 'Alagoas'),\n    ('AP', 'Amapá'),\n    ('AM', 'Amazonas'),\n    ('BA', 'Bahia'),\n    ('CE', 'Ceará'),\n    ('DF', 'Distrito Federal'),\n    ('ES', 'Espírito Santo'),\n    ('GO', 'Goiás'),\n    ('MA', 'Maranhão'),\n    ('MT', 'Mato Grosso'),\n    ('MS', 'Mato Grosso do Sul'),\n    ('MG', 'Minas Gerais'),\n    ('PA', 'Pará'),\n    ('PB', 'Paraíba'),\n    ('PR', 'Paraná'),\n    ('PE', 'Pernambuco'),\n    ('PI', 'Piauí'),\n    ('RJ', 'Rio de Janeiro'),\n    ('RN', 'Rio Grande do Norte'),\n    ('RS', 'Rio Grande do Sul'),\n    ('RO', 'Rondônia'),\n    ('RR', 'Roraima'),\n    ('SC', 'Santa Catarina'),\n    ('SP', 'São Paulo'),\n    ('SE', 'Sergipe'),\n    ('TO', 'Tocantins'),\n)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/br/forms.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nBR-specific Form helpers\n\"\"\"\n\nfrom __future__ import absolute_import, unicode_literals\n\nimport re\n\nfrom django.contrib.localflavor.br.br_states import STATE_CHOICES\nfrom django.core.validators import EMPTY_VALUES\nfrom django.forms import ValidationError\nfrom django.forms.fields import Field, RegexField, CharField, Select\nfrom django.utils.encoding import smart_text\nfrom django.utils.translation import ugettext_lazy as _\n\n\nphone_digits_re = re.compile(r'^(\\d{2})[-\\.]?(\\d{4})[-\\.]?(\\d{4})$')\n\nclass BRZipCodeField(RegexField):\n    default_error_messages = {\n        'invalid': _('Enter a zip code in the format XXXXX-XXX.'),\n    }\n\n    def __init__(self, max_length=None, min_length=None, *args, **kwargs):\n        super(BRZipCodeField, self).__init__(r'^\\d{5}-\\d{3}$',\n            max_length, min_length, *args, **kwargs)\n\nclass BRPhoneNumberField(Field):\n    default_error_messages = {\n        'invalid': _('Phone numbers must be in XX-XXXX-XXXX format.'),\n    }\n\n    def clean(self, value):\n        super(BRPhoneNumberField, self).clean(value)\n        if value in EMPTY_VALUES:\n            return ''\n        value = re.sub('(\\(|\\)|\\s+)', '', smart_text(value))\n        m = phone_digits_re.search(value)\n        if m:\n            return '%s-%s-%s' % (m.group(1), m.group(2), m.group(3))\n        raise ValidationError(self.error_messages['invalid'])\n\nclass BRStateSelect(Select):\n    \"\"\"\n    A Select widget that uses a list of Brazilian states/territories\n    as its choices.\n    \"\"\"\n    def __init__(self, attrs=None):\n        super(BRStateSelect, self).__init__(attrs, choices=STATE_CHOICES)\n\nclass BRStateChoiceField(Field):\n    \"\"\"\n    A choice field that uses a list of Brazilian states as its choices.\n    \"\"\"\n    widget = Select\n    default_error_messages = {\n        'invalid': _('Select a valid brazilian state. That state is not one of the available states.'),\n    }\n\n    def __init__(self, required=True, widget=None, label=None,\n                 initial=None, help_text=None):\n        super(BRStateChoiceField, self).__init__(required, widget, label,\n                                                 initial, help_text)\n        self.widget.choices = STATE_CHOICES\n\n    def clean(self, value):\n        value = super(BRStateChoiceField, self).clean(value)\n        if value in EMPTY_VALUES:\n            value = ''\n        value = smart_text(value)\n        if value == '':\n            return value\n        valid_values = set([smart_text(k) for k, v in self.widget.choices])\n        if value not in valid_values:\n            raise ValidationError(self.error_messages['invalid'])\n        return value\n\ndef DV_maker(v):\n    if v >= 2:\n        return 11 - v\n    return 0\n\nclass BRCPFField(CharField):\n    \"\"\"\n    This field validate a CPF number or a CPF string. A CPF number is\n    compounded by XXX.XXX.XXX-VD. The two last digits are check digits.\n\n    More information:\n    http://en.wikipedia.org/wiki/Cadastro_de_Pessoas_F%C3%ADsicas\n    \"\"\"\n    default_error_messages = {\n        'invalid': _(\"Invalid CPF number.\"),\n        'max_digits': _(\"This field requires at most 11 digits or 14 characters.\"),\n        'digits_only': _(\"This field requires only numbers.\"),\n    }\n\n    def __init__(self, max_length=14, min_length=11, *args, **kwargs):\n        super(BRCPFField, self).__init__(max_length, min_length, *args, **kwargs)\n\n    def clean(self, value):\n        \"\"\"\n        Value can be either a string in the format XXX.XXX.XXX-XX or an\n        11-digit number.\n        \"\"\"\n        value = super(BRCPFField, self).clean(value)\n        if value in EMPTY_VALUES:\n            return ''\n        orig_value = value[:]\n        if not value.isdigit():\n            value = re.sub(\"[-\\.]\", \"\", value)\n        try:\n            int(value)\n        except ValueError:\n            raise ValidationError(self.error_messages['digits_only'])\n        if len(value) != 11:\n            raise ValidationError(self.error_messages['max_digits'])\n        orig_dv = value[-2:]\n\n        new_1dv = sum([i * int(value[idx]) for idx, i in enumerate(range(10, 1, -1))])\n        new_1dv = DV_maker(new_1dv % 11)\n        value = value[:-2] + str(new_1dv) + value[-1]\n        new_2dv = sum([i * int(value[idx]) for idx, i in enumerate(range(11, 1, -1))])\n        new_2dv = DV_maker(new_2dv % 11)\n        value = value[:-1] + str(new_2dv)\n        if value[-2:] != orig_dv:\n            raise ValidationError(self.error_messages['invalid'])\n\n        return orig_value\n\nclass BRCNPJField(Field):\n    default_error_messages = {\n        'invalid': _(\"Invalid CNPJ number.\"),\n        'digits_only': _(\"This field requires only numbers.\"),\n        'max_digits': _(\"This field requires at least 14 digits\"),\n    }\n\n    def clean(self, value):\n        \"\"\"\n        Value can be either a string in the format XX.XXX.XXX/XXXX-XX or a\n        group of 14 characters.\n        \"\"\"\n        value = super(BRCNPJField, self).clean(value)\n        if value in EMPTY_VALUES:\n            return ''\n        orig_value = value[:]\n        if not value.isdigit():\n            value = re.sub(\"[-/\\.]\", \"\", value)\n        try:\n            int(value)\n        except ValueError:\n            raise ValidationError(self.error_messages['digits_only'])\n        if len(value) != 14:\n            raise ValidationError(self.error_messages['max_digits'])\n        orig_dv = value[-2:]\n\n        new_1dv = sum([i * int(value[idx]) for idx, i in enumerate(list(range(5, 1, -1)) + list(range(9, 1, -1)))])\n        new_1dv = DV_maker(new_1dv % 11)\n        value = value[:-2] + str(new_1dv) + value[-1]\n        new_2dv = sum([i * int(value[idx]) for idx, i in enumerate(list(range(6, 1, -1)) + list(range(9, 1, -1)))])\n        new_2dv = DV_maker(new_2dv % 11)\n        value = value[:-1] + str(new_2dv)\n        if value[-2:] != orig_dv:\n            raise ValidationError(self.error_messages['invalid'])\n\n        return orig_value\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/ca/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/ca/ca_provinces.py",
    "content": "\"\"\" \nAn alphabetical list of provinces and territories for use as `choices` \nin a formfield., and a mapping of province misspellings/abbreviations to \nnormalized abbreviations\n\nSource: http://www.canada.gc.ca/othergov/prov_e.html \n\nThis exists in this standalone file so that it's only imported into memory \nwhen explicitly needed. \n\"\"\" \n\nPROVINCE_CHOICES = ( \n    ('AB', 'Alberta'), \n    ('BC', 'British Columbia'), \n    ('MB', 'Manitoba'), \n    ('NB', 'New Brunswick'), \n    ('NL', 'Newfoundland and Labrador'),\n    ('NT', 'Northwest Territories'), \n    ('NS', 'Nova Scotia'), \n    ('NU', 'Nunavut'), \n    ('ON', 'Ontario'), \n    ('PE', 'Prince Edward Island'), \n    ('QC', 'Quebec'), \n    ('SK', 'Saskatchewan'), \n    ('YT', 'Yukon')\n)\n\nPROVINCES_NORMALIZED = {\n    'ab': 'AB',\n    'alberta': 'AB',\n    'bc': 'BC',\n    'b.c.': 'BC',\n    'british columbia': 'BC',\n    'mb': 'MB',\n    'manitoba': 'MB',\n    'nb': 'NB',\n    'new brunswick': 'NB',\n    'nf': 'NL',\n    'nl': 'NL',\n    'newfoundland': 'NL',\n    'newfoundland and labrador': 'NL',\n    'nt': 'NT',\n    'northwest territories': 'NT',\n    'ns': 'NS',\n    'nova scotia': 'NS',\n    'nu': 'NU',\n    'nunavut': 'NU',\n    'on': 'ON',\n    'ontario': 'ON',\n    'pe': 'PE',\n    'pei': 'PE',\n    'p.e.i.': 'PE',\n    'prince edward island': 'PE',\n    'pq' : 'QC',\n    'qc': 'QC',\n    'quebec': 'QC',\n    'sk': 'SK',\n    'saskatchewan': 'SK',\n    'yk': 'YT',\n    'yt': 'YT',\n    'yukon': 'YT',\n    'yukon territory': 'YT',\n}"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/ca/forms.py",
    "content": "\"\"\"\nCanada-specific Form helpers\n\"\"\"\n\nfrom __future__ import absolute_import, unicode_literals\n\nimport re\n\nfrom django.core.validators import EMPTY_VALUES\nfrom django.forms import ValidationError\nfrom django.forms.fields import Field, CharField, Select\nfrom django.utils.encoding import smart_text\nfrom django.utils.translation import ugettext_lazy as _\n\n\nphone_digits_re = re.compile(r'^(?:1-?)?(\\d{3})[-\\.]?(\\d{3})[-\\.]?(\\d{4})$')\nsin_re = re.compile(r\"^(\\d{3})-(\\d{3})-(\\d{3})$\")\n\nclass CAPostalCodeField(CharField):\n    \"\"\"\n    Canadian postal code field.\n\n    Validates against known invalid characters: D, F, I, O, Q, U\n    Additionally the first character cannot be Z or W.\n    For more info see:\n    http://www.canadapost.ca/tools/pg/manual/PGaddress-e.asp#1402170\n    \"\"\"\n    default_error_messages = {\n        'invalid': _('Enter a postal code in the format XXX XXX.'),\n    }\n\n    postcode_regex = re.compile(r'^([ABCEGHJKLMNPRSTVXY]\\d[ABCEGHJKLMNPRSTVWXYZ]) *(\\d[ABCEGHJKLMNPRSTVWXYZ]\\d)$')\n\n    def clean(self, value):\n        value = super(CAPostalCodeField, self).clean(value)\n        if value in EMPTY_VALUES:\n            return ''\n        postcode = value.upper().strip()\n        m = self.postcode_regex.match(postcode)\n        if not m:\n            raise ValidationError(self.default_error_messages['invalid'])\n        return \"%s %s\" % (m.group(1), m.group(2))\n\nclass CAPhoneNumberField(Field):\n    \"\"\"Canadian phone number field.\"\"\"\n    default_error_messages = {\n        'invalid': _('Phone numbers must be in XXX-XXX-XXXX format.'),\n    }\n\n    def clean(self, value):\n        \"\"\"Validate a phone number.\n        \"\"\"\n        super(CAPhoneNumberField, self).clean(value)\n        if value in EMPTY_VALUES:\n            return ''\n        value = re.sub('(\\(|\\)|\\s+)', '', smart_text(value))\n        m = phone_digits_re.search(value)\n        if m:\n            return '%s-%s-%s' % (m.group(1), m.group(2), m.group(3))\n        raise ValidationError(self.error_messages['invalid'])\n\nclass CAProvinceField(Field):\n    \"\"\"\n    A form field that validates its input is a Canadian province name or abbreviation.\n    It normalizes the input to the standard two-leter postal service\n    abbreviation for the given province.\n    \"\"\"\n    default_error_messages = {\n        'invalid': _('Enter a Canadian province or territory.'),\n    }\n\n    def clean(self, value):\n        super(CAProvinceField, self).clean(value)\n        if value in EMPTY_VALUES:\n            return ''\n        try:\n            value = value.strip().lower()\n        except AttributeError:\n            pass\n        else:\n            # Load data in memory only when it is required, see also #17275\n            from .ca_provinces import PROVINCES_NORMALIZED\n            try:\n                return PROVINCES_NORMALIZED[value.strip().lower()]\n            except KeyError:\n                pass\n        raise ValidationError(self.error_messages['invalid'])\n\nclass CAProvinceSelect(Select):\n    \"\"\"\n    A Select widget that uses a list of Canadian provinces and\n    territories as its choices.\n    \"\"\"\n    def __init__(self, attrs=None):\n        # Load data in memory only when it is required, see also #17275\n        from .ca_provinces import PROVINCE_CHOICES\n        super(CAProvinceSelect, self).__init__(attrs, choices=PROVINCE_CHOICES)\n\nclass CASocialInsuranceNumberField(Field):\n    \"\"\"\n    A Canadian Social Insurance Number (SIN).\n\n    Checks the following rules to determine whether the number is valid:\n\n        * Conforms to the XXX-XXX-XXX format.\n        * Passes the check digit process \"Luhn Algorithm\"\n             See: http://en.wikipedia.org/wiki/Social_Insurance_Number\n    \"\"\"\n    default_error_messages = {\n        'invalid': _('Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.'),\n    }\n\n    def clean(self, value):\n        super(CASocialInsuranceNumberField, self).clean(value)\n        if value in EMPTY_VALUES:\n            return ''\n\n        match = re.match(sin_re, value)\n        if not match:\n            raise ValidationError(self.error_messages['invalid'])\n\n        number = '%s-%s-%s' % (match.group(1), match.group(2), match.group(3))\n        check_number = '%s%s%s' % (match.group(1), match.group(2), match.group(3))\n        if not self.luhn_checksum_is_valid(check_number):\n            raise ValidationError(self.error_messages['invalid'])\n        return number\n\n    def luhn_checksum_is_valid(self, number):\n        \"\"\"\n        Checks to make sure that the SIN passes a luhn mod-10 checksum\n        See: http://en.wikipedia.org/wiki/Luhn_algorithm\n        \"\"\"\n\n        sum = 0\n        num_digits = len(number)\n        oddeven = num_digits & 1\n\n        for count in range(0, num_digits):\n            digit = int(number[count])\n\n            if not (( count & 1 ) ^ oddeven ):\n                digit = digit * 2\n            if digit > 9:\n                digit = digit - 9\n\n            sum = sum + digit\n\n        return ( (sum % 10) == 0 )\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/ch/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/ch/ch_states.py",
    "content": "# -*- coding: utf-8 -*\nfrom django.utils.translation import ugettext_lazy as _\n\nSTATE_CHOICES = (\n    ('AG', _('Aargau')),\n    ('AI', _('Appenzell Innerrhoden')),\n    ('AR', _('Appenzell Ausserrhoden')),\n    ('BS', _('Basel-Stadt')),\n    ('BL', _('Basel-Land')),\n    ('BE', _('Berne')),\n    ('FR', _('Fribourg')),\n    ('GE', _('Geneva')),\n    ('GL', _('Glarus')),\n    ('GR', _('Graubuenden')),\n    ('JU', _('Jura')),\n    ('LU', _('Lucerne')),\n    ('NE', _('Neuchatel')),\n    ('NW', _('Nidwalden')),\n    ('OW', _('Obwalden')),\n    ('SH', _('Schaffhausen')),\n    ('SZ', _('Schwyz')),\n    ('SO', _('Solothurn')),\n    ('SG', _('St. Gallen')),\n    ('TG', _('Thurgau')),\n    ('TI', _('Ticino')),\n    ('UR', _('Uri')),\n    ('VS', _('Valais')),\n    ('VD', _('Vaud')),\n    ('ZG', _('Zug')),\n    ('ZH', _('Zurich'))\n)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/ch/forms.py",
    "content": "\"\"\"\nSwiss-specific Form helpers\n\"\"\"\n\nfrom __future__ import absolute_import, unicode_literals\n\nimport re\n\nfrom django.contrib.localflavor.ch.ch_states import STATE_CHOICES\nfrom django.core.validators import EMPTY_VALUES\nfrom django.forms import ValidationError\nfrom django.forms.fields import Field, RegexField, Select\nfrom django.utils.encoding import smart_text\nfrom django.utils.translation import ugettext_lazy as _\n\n\nid_re = re.compile(r\"^(?P<idnumber>\\w{8})(?P<pos9>(\\d{1}|<))(?P<checksum>\\d{1})$\")\nphone_digits_re = re.compile(r'^0([1-9]{1})\\d{8}$')\n\nclass CHZipCodeField(RegexField):\n    default_error_messages = {\n        'invalid': _('Enter a zip code in the format XXXX.'),\n    }\n\n    def __init__(self, max_length=None, min_length=None, *args, **kwargs):\n        super(CHZipCodeField, self).__init__(r'^\\d{4}$',\n        max_length, min_length, *args, **kwargs)\n\nclass CHPhoneNumberField(Field):\n    \"\"\"\n    Validate local Swiss phone number (not international ones)\n    The correct format is '0XX XXX XX XX'.\n    '0XX.XXX.XX.XX' and '0XXXXXXXXX' validate but are corrected to\n    '0XX XXX XX XX'.\n    \"\"\"\n    default_error_messages = {\n        'invalid': _('Phone numbers must be in 0XX XXX XX XX format.'),\n    }\n\n    def clean(self, value):\n        super(CHPhoneNumberField, self).clean(value)\n        if value in EMPTY_VALUES:\n            return ''\n        value = re.sub('(\\.|\\s|/|-)', '', smart_text(value))\n        m = phone_digits_re.search(value)\n        if m:\n            return '%s %s %s %s' % (value[0:3], value[3:6], value[6:8], value[8:10])\n        raise ValidationError(self.error_messages['invalid'])\n\nclass CHStateSelect(Select):\n    \"\"\"\n    A Select widget that uses a list of CH states as its choices.\n    \"\"\"\n    def __init__(self, attrs=None):\n        super(CHStateSelect, self).__init__(attrs, choices=STATE_CHOICES)\n\nclass CHIdentityCardNumberField(Field):\n    \"\"\"\n    A Swiss identity card number.\n\n    Checks the following rules to determine whether the number is valid:\n\n        * Conforms to the X1234567<0 or 1234567890 format.\n        * Included checksums match calculated checksums\n\n    \"\"\"\n    default_error_messages = {\n        'invalid': _('Enter a valid Swiss identity or passport card number in X1234567<0 or 1234567890 format.'),\n    }\n\n    def has_valid_checksum(self, number):\n        given_number, given_checksum = number[:-1], number[-1]\n        new_number = given_number\n        calculated_checksum = 0\n        fragment = \"\"\n        parameter = 7\n\n        first = str(number[:1])\n        if first.isalpha():\n            num = ord(first.upper()) - 65\n            if num < 0 or num > 8:\n                return False\n            new_number = str(num) + new_number[1:]\n            new_number = new_number[:8] + '0'\n\n        if not new_number.isdigit():\n            return False\n\n        for i in range(len(new_number)):\n          fragment = int(new_number[i])*parameter\n          calculated_checksum += fragment\n\n          if parameter == 1:\n            parameter = 7\n          elif parameter == 3:\n            parameter = 1\n          elif parameter ==7:\n            parameter = 3\n\n        return str(calculated_checksum)[-1] == given_checksum\n\n    def clean(self, value):\n        super(CHIdentityCardNumberField, self).clean(value)\n        if value in EMPTY_VALUES:\n            return ''\n\n        match = re.match(id_re, value)\n        if not match:\n            raise ValidationError(self.error_messages['invalid'])\n\n        idnumber, pos9, checksum = match.groupdict()['idnumber'], match.groupdict()['pos9'], match.groupdict()['checksum']\n\n        if idnumber == '00000000' or \\\n           idnumber == 'A0000000':\n            raise ValidationError(self.error_messages['invalid'])\n\n        all_digits = \"%s%s%s\" % (idnumber, pos9, checksum)\n        if not self.has_valid_checksum(all_digits):\n            raise ValidationError(self.error_messages['invalid'])\n\n        return '%s%s%s' % (idnumber, pos9, checksum)\n\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/cl/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/cl/cl_regions.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nA list of Chilean regions as `choices` in a formfield.\n\nThis exists in this standalone file so that it's only imported into memory\nwhen explicitly needed.\n\"\"\"\nfrom __future__ import unicode_literals\n\nREGION_CHOICES = (\n    ('RM',  'Región Metropolitana de Santiago'),\n    ('I',   'Región de Tarapacá'),\n    ('II',  'Región de Antofagasta'),\n    ('III', 'Región de Atacama'),\n    ('IV',  'Región de Coquimbo'),\n    ('V',   'Región de Valparaíso'),\n    ('VI',  'Región del Libertador Bernardo O\\'Higgins'),\n    ('VII', 'Región del Maule'),\n    ('VIII','Región del Bío Bío'),\n    ('IX',  'Región de la Araucanía'),\n    ('X',   'Región de los Lagos'),\n    ('XI',  'Región de Aysén del General Carlos Ibáñez del Campo'),\n    ('XII', 'Región de Magallanes y la Antártica Chilena'),\n    ('XIV', 'Región de Los Ríos'),\n    ('XV',  'Región de Arica-Parinacota'),\n)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/cl/forms.py",
    "content": "\"\"\"\nChile specific form helpers.\n\"\"\"\n\nfrom __future__ import absolute_import, unicode_literals\n\nfrom django.core.validators import EMPTY_VALUES\nfrom django.forms import ValidationError\nfrom django.forms.fields import RegexField, Select\nfrom django.utils.translation import ugettext_lazy as _\nfrom django.utils.encoding import smart_text\n\nfrom .cl_regions import REGION_CHOICES\n\nclass CLRegionSelect(Select):\n    \"\"\"\n    A Select widget that uses a list of Chilean Regions (Regiones)\n    as its choices.\n    \"\"\"\n    def __init__(self, attrs=None):\n        super(CLRegionSelect, self).__init__(attrs, choices=REGION_CHOICES)\n\nclass CLRutField(RegexField):\n    \"\"\"\n    Chilean \"Rol Unico Tributario\" (RUT) field. This is the Chilean national\n    identification number.\n\n    Samples for testing are available from\n    https://palena.sii.cl/cvc/dte/ee_empresas_emisoras.html\n    \"\"\"\n    default_error_messages = {\n        'invalid': _('Enter a valid Chilean RUT.'),\n        'strict': _('Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.'),\n        'checksum': _('The Chilean RUT is not valid.'),\n    }\n\n    def __init__(self, *args, **kwargs):\n        if 'strict' in kwargs:\n            del kwargs['strict']\n            super(CLRutField, self).__init__(r'^(\\d{1,2}\\.)?\\d{3}\\.\\d{3}-[\\dkK]$',\n                error_message=self.default_error_messages['strict'], *args, **kwargs)\n        else:\n            # In non-strict mode, accept RUTs that validate but do not exist in\n            # the real world.\n            super(CLRutField, self).__init__(r'^[\\d\\.]{1,11}-?[\\dkK]$', *args, **kwargs)\n\n    def clean(self, value):\n        \"\"\"\n        Check and clean the Chilean RUT.\n        \"\"\"\n        super(CLRutField, self).clean(value)\n        if value in EMPTY_VALUES:\n            return ''\n        rut, verificador = self._canonify(value)\n        if self._algorithm(rut) == verificador:\n            return self._format(rut, verificador)\n        else:\n            raise ValidationError(self.error_messages['checksum'])\n\n    def _algorithm(self, rut):\n        \"\"\"\n        Takes RUT in pure canonical form, calculates the verifier digit.\n        \"\"\"\n        suma  = 0\n        multi = 2\n        for r in rut[::-1]:\n            suma  += int(r) * multi\n            multi += 1\n            if multi == 8:\n                multi = 2\n        return '0123456789K0'[11 - suma % 11]\n\n    def _canonify(self, rut):\n        \"\"\"\n        Turns the RUT into one normalized format. Returns a (rut, verifier)\n        tuple.\n        \"\"\"\n        rut = smart_text(rut).replace(' ', '').replace('.', '').replace('-', '')\n        return rut[:-1], rut[-1].upper()\n\n    def _format(self, code, verifier=None):\n        \"\"\"\n        Formats the RUT from canonical form to the common string representation.\n        If verifier=None, then the last digit in 'code' is the verifier.\n        \"\"\"\n        if verifier is None:\n            verifier = code[-1]\n            code = code[:-1]\n        while len(code) > 3 and '.' not in code[:3]:\n            pos = code.find('.')\n            if pos == -1:\n                new_dot = -3\n            else:\n                new_dot = pos - 3\n            code = code[:new_dot] + '.' + code[new_dot:]\n        return '%s-%s' % (code, verifier)\n\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/cn/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/cn/cn_provinces.py",
    "content": "# -*- coding: utf-8 -*-\n\n\"\"\"\nAn alphabetical list of provinces for use as `choices` in a formfield.\n\nReference:\nhttp://en.wikipedia.org/wiki/ISO_3166-2:CN\nhttp://en.wikipedia.org/wiki/Province_%28China%29\nhttp://en.wikipedia.org/wiki/Direct-controlled_municipality\nhttp://en.wikipedia.org/wiki/Autonomous_regions_of_China\n\"\"\"\nfrom __future__ import unicode_literals\n\nCN_PROVINCE_CHOICES = (\n    (\"anhui\", \"安徽\"),\n    (\"beijing\", \"北京\"),\n    (\"chongqing\", \"重庆\"),\n    (\"fujian\", \"福建\"),\n    (\"gansu\", \"甘肃\"),\n    (\"guangdong\", \"广东\"),\n    (\"guangxi\", \"广西壮族自治区\"),\n    (\"guizhou\", \"贵州\"),\n    (\"hainan\", \"海南\"),\n    (\"hebei\", \"河北\"),\n    (\"heilongjiang\", \"黑龙江\"),\n    (\"henan\", \"河南\"),\n    (\"hongkong\", \"香港\"),\n    (\"hubei\", \"湖北\"),\n    (\"hunan\", \"湖南\"),\n    (\"jiangsu\", \"江苏\"),\n    (\"jiangxi\", \"江西\"),\n    (\"jilin\", \"吉林\"),\n    (\"liaoning\", \"辽宁\"),\n    (\"macao\", \"澳门\"),\n    (\"neimongol\", \"内蒙古自治区\"),\n    (\"ningxia\", \"宁夏回族自治区\"),\n    (\"qinghai\", \"青海\"),\n    (\"shaanxi\", \"陕西\"),\n    (\"shandong\", \"山东\"),\n    (\"shanghai\", \"上海\"),\n    (\"shanxi\", \"山西\"),\n    (\"sichuan\", \"四川\"),\n    (\"taiwan\", \"台湾\"),\n    (\"tianjin\", \"天津\"),\n    (\"xinjiang\", \"新疆维吾尔自治区\"),\n    (\"xizang\", \"西藏自治区\"),\n    (\"yunnan\", \"云南\"),\n    (\"zhejiang\", \"浙江\"),\n)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/cn/forms.py",
    "content": "# -*- coding: utf-8 -*-\n\n\"\"\"\nChinese-specific form helpers\n\"\"\"\nfrom __future__ import absolute_import, unicode_literals\n\nimport re\n\nfrom django.contrib.localflavor.cn.cn_provinces import CN_PROVINCE_CHOICES\nfrom django.forms import ValidationError\nfrom django.forms.fields import CharField, RegexField, Select\nfrom django.utils.translation import ugettext_lazy as _\n\n\n__all__ = (\n    'CNProvinceSelect',\n    'CNPostCodeField',\n    'CNIDCardField',\n    'CNPhoneNumberField',\n    'CNCellNumberField',\n)\n\n\nID_CARD_RE = r'^\\d{15}(\\d{2}[0-9xX])?$'\nPOST_CODE_RE = r'^\\d{6}$'\nPHONE_RE = r'^\\d{3,4}-\\d{7,8}(-\\d+)?$'\nCELL_RE = r'^1[358]\\d{9}$'\n\n# Valid location code used in id card checking algorithm\nCN_LOCATION_CODES = (\n     11,  # Beijing\n     12,  # Tianjin\n     13,  # Hebei\n     14,  # Shanxi\n     15,  # Nei Mongol\n     21,  # Liaoning\n     22,  # Jilin\n     23,  # Heilongjiang\n     31,  # Shanghai\n     32,  # Jiangsu\n     33,  # Zhejiang\n     34,  # Anhui\n     35,  # Fujian\n     36,  # Jiangxi\n     37,  # Shandong\n     41,  # Henan\n     42,  # Hubei\n     43,  # Hunan\n     44,  # Guangdong\n     45,  # Guangxi\n     46,  # Hainan\n     50,  # Chongqing\n     51,  # Sichuan\n     52,  # Guizhou\n     53,  # Yunnan\n     54,  # Xizang\n     61,  # Shaanxi\n     62,  # Gansu\n     63,  # Qinghai\n     64,  # Ningxia\n     65,  # Xinjiang\n     71,  # Taiwan\n     81,  # Hong Kong\n     91,  # Macao\n)\n\nclass CNProvinceSelect(Select):\n    \"\"\"\n    A select widget with list of Chinese provinces as choices.\n    \"\"\"\n    def __init__(self, attrs=None):\n        super(CNProvinceSelect, self).__init__(\n            attrs, choices=CN_PROVINCE_CHOICES,\n        )\n\n\nclass CNPostCodeField(RegexField):\n    \"\"\"\n    A form field that validates as Chinese post code.\n    Valid code is XXXXXX where X is digit.\n    \"\"\"\n    default_error_messages = {\n        'invalid': _('Enter a post code in the format XXXXXX.'),\n    }\n\n    def __init__(self, *args, **kwargs):\n        super(CNPostCodeField, self).__init__(POST_CODE_RE, *args, **kwargs)\n\n\nclass CNIDCardField(CharField):\n    \"\"\"\n    A form field that validates as Chinese Identification Card Number.\n\n    This field would check the following restrictions:\n        * the length could only be 15 or 18.\n        * if the length is 18, the last digit could be x or X.\n        * has a valid checksum.(length 18 only)\n        * has a valid birthdate.\n        * has a valid location.\n\n    The checksum algorithm is described in GB11643-1999.\n    \"\"\"\n    default_error_messages = {\n        'invalid': _('ID Card Number consists of 15 or 18 digits.'),\n        'checksum': _('Invalid ID Card Number: Wrong checksum'),\n        'birthday': _('Invalid ID Card Number: Wrong birthdate'),\n        'location': _('Invalid ID Card Number: Wrong location code'),\n    }\n\n    def __init__(self, max_length=18, min_length=15, *args, **kwargs):\n        super(CNIDCardField, self).__init__(max_length, min_length, *args,\n                                         **kwargs)\n\n    def clean(self, value):\n        \"\"\"\n        Check whether the input is a valid ID Card Number.\n        \"\"\"\n        # Check the length of the ID card number.\n        super(CNIDCardField, self).clean(value)\n        if not value:\n            return \"\"\n        # Check whether this ID card number has valid format\n        if not re.match(ID_CARD_RE, value):\n            raise ValidationError(self.error_messages['invalid'])\n        # Check the birthday of the ID card number.\n        if not self.has_valid_birthday(value):\n            raise ValidationError(self.error_messages['birthday'])\n        # Check the location of the ID card number.\n        if not self.has_valid_location(value):\n            raise ValidationError(self.error_messages['location'])\n        # Check the checksum of the ID card number.\n        value = value.upper()\n        if not self.has_valid_checksum(value):\n            raise ValidationError(self.error_messages['checksum'])\n        return '%s' % value\n\n    def has_valid_birthday(self, value):\n        \"\"\"\n        This function would grab the birthdate from the ID card number and test\n        whether it is a valid date.\n        \"\"\"\n        from datetime import datetime\n        if len(value) == 15:\n            # 1st generation ID card\n            time_string = value[6:12]\n            format_string = \"%y%m%d\"\n        else:\n            # 2nd generation ID card\n            time_string = value[6:14]\n            format_string = \"%Y%m%d\"\n        try:\n            datetime.strptime(time_string, format_string)\n            return True\n        except ValueError:\n            # invalid date\n            return False\n\n    def has_valid_location(self, value):\n        \"\"\"\n        This method checks if the first two digits in the ID Card are valid.\n        \"\"\"\n        return int(value[:2]) in CN_LOCATION_CODES\n\n    def has_valid_checksum(self, value):\n        \"\"\"\n        This method checks if the last letter/digit in value is valid\n        according to the algorithm the ID Card follows.\n        \"\"\"\n        # If the length of the number is not 18, then the number is a 1st\n        # generation ID card number, and there is no checksum to be checked.\n        if len(value) != 18:\n            return True\n        checksum_index = sum(\n            map(\n                lambda a,b:a*(ord(b)-ord('0')),\n                (7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2),\n                value[:17],\n            ),\n        ) % 11\n        return '10X98765432'[checksum_index] == value[-1]\n\n\nclass CNPhoneNumberField(RegexField):\n    \"\"\"\n    A form field that validates as Chinese phone number\n    A valid phone number could be like:\n        010-55555555\n    Considering there might be extension phone numbers, so this could also be:\n        010-55555555-35\n    \"\"\"\n    default_error_messages = {\n        'invalid': _('Enter a valid phone number.'),\n    }\n\n    def __init__(self, *args, **kwargs):\n        super(CNPhoneNumberField, self).__init__(PHONE_RE, *args, **kwargs)\n\n\nclass CNCellNumberField(RegexField):\n    \"\"\"\n    A form field that validates as Chinese cell number\n    A valid cell number could be like:\n        13012345678\n    We used a rough rule here, the first digit should be 1, the second could be\n    3, 5 and 8, the rest could be what so ever.\n    The length of the cell number should be 11.\n    \"\"\"\n    default_error_messages = {\n        'invalid': _('Enter a valid cell number.'),\n    }\n\n    def __init__(self, *args, **kwargs):\n        super(CNCellNumberField, self).__init__(CELL_RE, *args, **kwargs)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/co/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/co/co_departments.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nA list of Colombian departaments as `choices` in a\nformfield.\n\nThis exists in this standalone file so that it's only\nimported into memory when explicitly needed.\n\"\"\"\nfrom __future__ import unicode_literals\n\nDEPARTMENT_CHOICES = (\n    ('AMA', 'Amazonas'),\n    ('ANT', 'Antioquia'),\n    ('ARA', 'Arauca'),\n    ('ATL', 'Atlántico'),\n    ('DC',  'Bogotá'),\n    ('BOL', 'Bolívar'),\n    ('BOY', 'Boyacá'),\n    ('CAL', 'Caldas'),\n    ('CAQ', 'Caquetá'),\n    ('CAS', 'Casanare'),\n    ('CAU', 'Cauca'),\n    ('CES', 'Cesar'),\n    ('CHO', 'Chocó'),\n    ('COR', 'Córdoba'),\n    ('CUN', 'Cundinamarca'),\n    ('GUA', 'Guainía'),\n    ('GUV', 'Guaviare'),\n    ('HUI', 'Huila'),\n    ('LAG', 'La Guajira'),\n    ('MAG', 'Magdalena'),\n    ('MET', 'Meta'),\n    ('NAR', 'Nariño'),\n    ('NSA', 'Norte de Santander'),\n    ('PUT', 'Putumayo'),\n    ('QUI', 'Quindío'),\n    ('RIS', 'Risaralda'),\n    ('SAP', 'San Andrés and Providencia'),\n    ('SAN', 'Santander'),\n    ('SUC', 'Sucre'),\n    ('TOL', 'Tolima'),\n    ('VAC', 'Valle del Cauca'),\n    ('VAU', 'Vaupés'),\n    ('VID', 'Vichada'),\n)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/co/forms.py",
    "content": "\"\"\"\nColombian-specific form helpers.\n\"\"\"\n\nfrom __future__ import absolute_import\n\nfrom django.contrib.localflavor.co.co_departments import DEPARTMENT_CHOICES\nfrom django.forms.fields import Select\n\n\nclass CODepartmentSelect(Select):\n    \"\"\"\n    A Select widget that uses a list of Colombian states as its choices.\n    \"\"\"\n    def __init__(self, attrs=None):\n        super(CODepartmentSelect, self).__init__(attrs, choices=DEPARTMENT_CHOICES)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/cz/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/cz/cz_regions.py",
    "content": "\"\"\"\nCzech regions, translations get from http://www.crwflags.com/fotw/Flags/cz-re.html\n\"\"\"\n\nfrom django.utils.translation import ugettext_lazy as _\n\nREGION_CHOICES = (\n    ('PR', _('Prague')),\n    ('CE', _('Central Bohemian Region')),\n    ('SO', _('South Bohemian Region')),\n    ('PI', _('Pilsen Region')),\n    ('CA', _('Carlsbad Region')),\n    ('US', _('Usti Region')),\n    ('LB', _('Liberec Region')),\n    ('HK', _('Hradec Region')),\n    ('PA', _('Pardubice Region')),\n    ('VY', _('Vysocina Region')),\n    ('SM', _('South Moravian Region')),\n    ('OL', _('Olomouc Region')),\n    ('ZL', _('Zlin Region')),\n    ('MS', _('Moravian-Silesian Region')),\n)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/cz/forms.py",
    "content": "\"\"\"\nCzech-specific form helpers\n\"\"\"\n\nfrom __future__ import absolute_import, unicode_literals\n\nimport re\n\nfrom django.contrib.localflavor.cz.cz_regions import REGION_CHOICES\nfrom django.core.validators import EMPTY_VALUES\nfrom django.forms import ValidationError\nfrom django.forms.fields import Select, RegexField, Field\nfrom django.utils.translation import ugettext_lazy as _\n\n\nbirth_number = re.compile(r'^(?P<birth>\\d{6})/?(?P<id>\\d{3,4})$')\nic_number = re.compile(r'^(?P<number>\\d{7})(?P<check>\\d)$')\n\nclass CZRegionSelect(Select):\n    \"\"\"\n    A select widget widget with list of Czech regions as choices.\n    \"\"\"\n    def __init__(self, attrs=None):\n        super(CZRegionSelect, self).__init__(attrs, choices=REGION_CHOICES)\n\nclass CZPostalCodeField(RegexField):\n    \"\"\"\n    A form field that validates its input as Czech postal code.\n    Valid form is XXXXX or XXX XX, where X represents integer.\n    \"\"\"\n    default_error_messages = {\n        'invalid': _('Enter a postal code in the format XXXXX or XXX XX.'),\n    }\n\n    def __init__(self, max_length=None, min_length=None, *args, **kwargs):\n        super(CZPostalCodeField, self).__init__(r'^\\d{5}$|^\\d{3} \\d{2}$',\n            max_length, min_length, *args, **kwargs)\n\n    def clean(self, value):\n        \"\"\"\n        Validates the input and returns a string that contains only numbers.\n        Returns an empty string for empty values.\n        \"\"\"\n        v = super(CZPostalCodeField, self).clean(value)\n        return v.replace(' ', '')\n\nclass CZBirthNumberField(Field):\n    \"\"\"\n    Czech birth number field.\n    \"\"\"\n    default_error_messages = {\n        'invalid_format': _('Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.'),\n        'invalid': _('Enter a valid birth number.'),\n    }\n\n    def clean(self, value, gender=None):\n        super(CZBirthNumberField, self).clean(value)\n\n        if value in EMPTY_VALUES:\n            return ''\n\n        match = re.match(birth_number, value)\n        if not match:\n            raise ValidationError(self.error_messages['invalid_format'])\n\n        birth, id = match.groupdict()['birth'], match.groupdict()['id']\n\n        # Three digits for verification number were used until 1. january 1954\n        if len(id) == 3:\n            return '%s' % value\n\n        # Birth number is in format YYMMDD. Females have month value raised by 50.\n        # In case that all possible number are already used (for given date),\n        # the month field is raised by 20.\n        month = int(birth[2:4])\n        if (not 1 <= month <= 12) and (not 21 <= month <= 32) and \\\n                (not 51 <= month <= 62) and (not 71 <= month <= 82):\n            raise ValidationError(self.error_messages['invalid'])\n\n        day = int(birth[4:6])\n        if not (1 <= day <= 31):\n            raise ValidationError(self.error_messages['invalid'])\n\n        # Fourth digit has been added since 1. January 1954.\n        # It is modulo of dividing birth number and verification number by 11.\n        # If the modulo were 10, the last number was 0 (and therefore, the whole\n        # birth number wasn't divisable by 11. These number are no longer used (since 1985)\n        # and the condition 'modulo == 10' can be removed in 2085.\n\n        modulo = int(birth + id[:3]) % 11\n\n        if (modulo == int(id[-1])) or (modulo == 10 and id[-1] == '0'):\n            return '%s' % value\n        else:\n            raise ValidationError(self.error_messages['invalid'])\n\nclass CZICNumberField(Field):\n    \"\"\"\n    Czech IC number field.\n    \"\"\"\n    default_error_messages = {\n        'invalid': _('Enter a valid IC number.'),\n    }\n\n    def clean(self, value):\n        super(CZICNumberField, self).clean(value)\n\n        if value in EMPTY_VALUES:\n            return ''\n\n        match = re.match(ic_number, value)\n        if not match:\n            raise ValidationError(self.error_messages['invalid'])\n\n        number, check = match.groupdict()['number'], int(match.groupdict()['check'])\n\n        sum = 0\n        weight = 8\n        for digit in number:\n            sum += int(digit)*weight\n            weight -= 1\n\n        remainder = sum % 11\n\n        # remainder is equal:\n        #  0 or 10: last digit is 1\n        #  1: last digit is 0\n        # in other case, last digit is 11 - remainder\n\n        if (not remainder % 10 and check == 1) or \\\n        (remainder == 1 and check == 0) or \\\n        (check == (11 - remainder)):\n            return '%s' % value\n\n        raise ValidationError(self.error_messages['invalid'])\n\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/de/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/de/de_states.py",
    "content": "# -*- coding: utf-8 -*\nfrom django.utils.translation import ugettext_lazy as _\n\nSTATE_CHOICES = (\n    ('BW', _('Baden-Wuerttemberg')),\n    ('BY', _('Bavaria')),\n    ('BE', _('Berlin')),\n    ('BB', _('Brandenburg')),\n    ('HB', _('Bremen')),\n    ('HH', _('Hamburg')),\n    ('HE', _('Hessen')),\n    ('MV', _('Mecklenburg-Western Pomerania')),\n    ('NI', _('Lower Saxony')),\n    ('NW', _('North Rhine-Westphalia')),\n    ('RP', _('Rhineland-Palatinate')),\n    ('SL', _('Saarland')),\n    ('SN', _('Saxony')),\n    ('ST', _('Saxony-Anhalt')),\n    ('SH', _('Schleswig-Holstein')),\n    ('TH', _('Thuringia')),\n)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/de/forms.py",
    "content": "\"\"\"\nDE-specific Form helpers\n\"\"\"\n\nfrom __future__ import absolute_import, unicode_literals\n\nimport re\n\nfrom django.contrib.localflavor.de.de_states import STATE_CHOICES\nfrom django.core.validators import EMPTY_VALUES\nfrom django.forms import ValidationError\nfrom django.forms.fields import Field, RegexField, Select\nfrom django.utils.translation import ugettext_lazy as _\n\n\nid_re = re.compile(r\"^(?P<residence>\\d{10})(?P<origin>\\w{1,3})[-\\ ]?(?P<birthday>\\d{7})[-\\ ]?(?P<validity>\\d{7})[-\\ ]?(?P<checksum>\\d{1})$\")\n\nclass DEZipCodeField(RegexField):\n    default_error_messages = {\n        'invalid': _('Enter a zip code in the format XXXXX.'),\n    }\n    def __init__(self, max_length=None, min_length=None, *args, **kwargs):\n        super(DEZipCodeField, self).__init__(r'^\\d{5}$',\n            max_length, min_length, *args, **kwargs)\n\nclass DEStateSelect(Select):\n    \"\"\"\n    A Select widget that uses a list of DE states as its choices.\n    \"\"\"\n    def __init__(self, attrs=None):\n        super(DEStateSelect, self).__init__(attrs, choices=STATE_CHOICES)\n\nclass DEIdentityCardNumberField(Field):\n    \"\"\"\n    A German identity card number.\n\n    Checks the following rules to determine whether the number is valid:\n\n        * Conforms to the XXXXXXXXXXX-XXXXXXX-XXXXXXX-X format.\n        * No group consists entirely of zeroes.\n        * Included checksums match calculated checksums\n\n    Algorithm is documented at http://de.wikipedia.org/wiki/Personalausweis\n    \"\"\"\n    default_error_messages = {\n        'invalid': _('Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X format.'),\n    }\n\n    def has_valid_checksum(self, number):\n        given_number, given_checksum = number[:-1], number[-1]\n        calculated_checksum = 0\n        fragment = \"\"\n        parameter = 7\n\n        for i in range(len(given_number)):\n            fragment = str(int(given_number[i]) * parameter)\n            if fragment.isalnum():\n                calculated_checksum += int(fragment[-1])\n            if parameter == 1:\n                parameter = 7\n            elif parameter == 3:\n                parameter = 1\n            elif parameter ==7:\n                parameter = 3\n\n        return str(calculated_checksum)[-1] == given_checksum\n\n    def clean(self, value):\n        super(DEIdentityCardNumberField, self).clean(value)\n        if value in EMPTY_VALUES:\n            return ''\n        match = re.match(id_re, value)\n        if not match:\n            raise ValidationError(self.error_messages['invalid'])\n\n        gd = match.groupdict()\n        residence, origin = gd['residence'], gd['origin']\n        birthday, validity, checksum = gd['birthday'], gd['validity'], gd['checksum']\n\n        if residence == '0000000000' or birthday == '0000000' or validity == '0000000':\n            raise ValidationError(self.error_messages['invalid'])\n\n        all_digits = \"%s%s%s%s\" % (residence, birthday, validity, checksum)\n        if not self.has_valid_checksum(residence) or not self.has_valid_checksum(birthday) or \\\n            not self.has_valid_checksum(validity) or not self.has_valid_checksum(all_digits):\n                raise ValidationError(self.error_messages['invalid'])\n\n        return '%s%s-%s-%s-%s' % (residence, origin, birthday, validity, checksum)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/ec/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/ec/ec_provinces.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nA list of Ecuador departaments as `choices` in a\nformfield.\n\nThis exists in this standalone file so that it's only\nimported into memory when explicitly needed.\n\"\"\"\nfrom __future__ import unicode_literals\n\nPROVINCE_CHOICES = (\n    ('A', 'Azuay'),\n    ('B', 'Bolívar'),\n    ('F', 'Cañar'),\n    ('C', 'Carchi'),\n    ('H', 'Chimborazo'),\n    ('X', 'Cotopaxi'),\n    ('O', 'El Oro'),\n    ('E', 'Esmeraldas'),\n    ('W', 'Galápagos'),\n    ('G', 'Guayas'),\n    ('I', 'Imbabura'),\n    ('L', 'Loja'),\n    ('R', 'Los Ríos'),\n    ('M', 'Manabí'),\n    ('S', 'Morona Santiago'),\n    ('N', 'Napo'),\n    ('D', 'Orellana'),\n    ('Y', 'Pastaza'),\n    ('P', 'Pichincha'),\n    ('SE', 'Santa Elena'),\n    ('SD', 'Santo Domingo de los Tsáchilas'),\n    ('U', 'Sucumbíos'),\n    ('T', 'Tungurahua'),\n    ('Z', 'Zamora Chinchipe'),\n)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/ec/forms.py",
    "content": "\"\"\"\nEcuador-specific form helpers.\n\"\"\"\n\nfrom __future__ import absolute_import\n\nfrom django.contrib.localflavor.ec.ec_provinces import PROVINCE_CHOICES\nfrom django.forms.fields import Select\n\nclass ECProvinceSelect(Select):\n    \"\"\"\n    A Select widget that uses a list of Ecuador provinces as its choices.\n    \"\"\"\n    def __init__(self, attrs=None):\n        super(ECProvinceSelect, self).__init__(attrs, choices=PROVINCE_CHOICES)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/es/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/es/es_provinces.py",
    "content": "# -*- coding: utf-8 -*-\nfrom django.utils.translation import ugettext_lazy as _\n\nPROVINCE_CHOICES = (\n    ('01', _('Araba')),\n    ('02', _('Albacete')),\n    ('03', _('Alacant')),\n    ('04', _('Almeria')),\n    ('05', _('Avila')),\n    ('06', _('Badajoz')),\n    ('07', _('Illes Balears')),\n    ('08', _('Barcelona')),\n    ('09', _('Burgos')),\n    ('10', _('Caceres')),\n    ('11', _('Cadiz')),\n    ('12', _('Castello')),\n    ('13', _('Ciudad Real')),\n    ('14', _('Cordoba')),\n    ('15', _('A Coruna')),\n    ('16', _('Cuenca')),\n    ('17', _('Girona')),\n    ('18', _('Granada')),\n    ('19', _('Guadalajara')),\n    ('20', _('Guipuzkoa')),\n    ('21', _('Huelva')),\n    ('22', _('Huesca')),\n    ('23', _('Jaen')),\n    ('24', _('Leon')),\n    ('25', _('Lleida')),\n    ('26', _('La Rioja')),\n    ('27', _('Lugo')),\n    ('28', _('Madrid')),\n    ('29', _('Malaga')),\n    ('30', _('Murcia')),\n    ('31', _('Navarre')),\n    ('32', _('Ourense')),\n    ('33', _('Asturias')),\n    ('34', _('Palencia')),\n    ('35', _('Las Palmas')),\n    ('36', _('Pontevedra')),\n    ('37', _('Salamanca')),\n    ('38', _('Santa Cruz de Tenerife')),\n    ('39', _('Cantabria')),\n    ('40', _('Segovia')),\n    ('41', _('Seville')),\n    ('42', _('Soria')),\n    ('43', _('Tarragona')),\n    ('44', _('Teruel')),\n    ('45', _('Toledo')),\n    ('46', _('Valencia')),\n    ('47', _('Valladolid')),\n    ('48', _('Bizkaia')),\n    ('49', _('Zamora')),\n    ('50', _('Zaragoza')),\n    ('51', _('Ceuta')),\n    ('52', _('Melilla')),\n)\n\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/es/es_regions.py",
    "content": "# -*- coding: utf-8 -*-\nfrom django.utils.translation import ugettext_lazy as _\n\nREGION_CHOICES = (\n    ('AN', _('Andalusia')),\n    ('AR', _('Aragon')),\n    ('O', _('Principality of Asturias')),\n    ('IB', _('Balearic Islands')),\n    ('PV', _('Basque Country')),\n    ('CN', _('Canary Islands')),\n    ('S', _('Cantabria')),\n    ('CM', _('Castile-La Mancha')),\n    ('CL', _('Castile and Leon')),\n    ('CT', _('Catalonia')),\n    ('EX', _('Extremadura')),\n    ('GA', _('Galicia')),\n    ('LO', _('La Rioja')),\n    ('M', _('Madrid')),\n    ('MU', _('Region of Murcia')),\n    ('NA', _('Foral Community of Navarre')),\n    ('VC', _('Valencian Community')),\n)\n\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/es/forms.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nSpanish-specific Form helpers\n\"\"\"\n\nfrom __future__ import absolute_import, unicode_literals\n\nimport re\n\nfrom django.contrib.localflavor.es.es_provinces import PROVINCE_CHOICES\nfrom django.contrib.localflavor.es.es_regions import REGION_CHOICES\nfrom django.core.validators import EMPTY_VALUES\nfrom django.forms import ValidationError\nfrom django.forms.fields import RegexField, Select\nfrom django.utils.translation import ugettext_lazy as _\n\n\nclass ESPostalCodeField(RegexField):\n    \"\"\"\n    A form field that validates its input as a spanish postal code.\n\n    Spanish postal code is a five digits string, with two first digits\n    between 01 and 52, assigned to provinces code.\n    \"\"\"\n    default_error_messages = {\n        'invalid': _('Enter a valid postal code in the range and format 01XXX - 52XXX.'),\n    }\n\n    def __init__(self, max_length=None, min_length=None, *args, **kwargs):\n        super(ESPostalCodeField, self).__init__(\n                r'^(0[1-9]|[1-4][0-9]|5[0-2])\\d{3}$',\n                max_length, min_length, *args, **kwargs)\n\nclass ESPhoneNumberField(RegexField):\n    \"\"\"\n    A form field that validates its input as a Spanish phone number.\n    Information numbers are ommited.\n\n    Spanish phone numbers are nine digit numbers, where first digit is 6 (for\n    cell phones), 8 (for special phones), or 9 (for landlines and special\n    phones)\n\n    TODO: accept and strip characters like dot, hyphen... in phone number\n    \"\"\"\n    default_error_messages = {\n        'invalid': _('Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or 9XXXXXXXX.'),\n    }\n\n    def __init__(self, max_length=None, min_length=None, *args, **kwargs):\n        super(ESPhoneNumberField, self).__init__(r'^(6|7|8|9)\\d{8}$',\n                max_length, min_length, *args, **kwargs)\n\nclass ESIdentityCardNumberField(RegexField):\n    \"\"\"\n    Spanish NIF/NIE/CIF (Fiscal Identification Number) code.\n\n    Validates three diferent formats:\n\n        NIF (individuals): 12345678A\n        CIF (companies): A12345678\n        NIE (foreigners): X12345678A\n\n    according to a couple of simple checksum algorithms.\n\n    Value can include a space or hyphen separator between number and letters.\n    Number length is not checked for NIF (or NIE), old values start with a 1,\n    and future values can contain digits greater than 8. The CIF control digit\n    can be a number or a letter depending on company type. Algorithm is not\n    public, and different authors have different opinions on which ones allows\n    letters, so both validations are assumed true for all types.\n    \"\"\"\n    default_error_messages = {\n        'invalid': _('Please enter a valid NIF, NIE, or CIF.'),\n        'invalid_only_nif': _('Please enter a valid NIF or NIE.'),\n        'invalid_nif': _('Invalid checksum for NIF.'),\n        'invalid_nie': _('Invalid checksum for NIE.'),\n        'invalid_cif': _('Invalid checksum for CIF.'),\n    }\n\n    def __init__(self, only_nif=False, max_length=None, min_length=None, *args, **kwargs):\n        self.only_nif = only_nif\n        self.nif_control = 'TRWAGMYFPDXBNJZSQVHLCKE'\n        self.cif_control = 'JABCDEFGHI'\n        self.cif_types = 'ABCDEFGHKLMNPQS'\n        self.nie_types = 'XT'\n        id_card_re = re.compile(r'^([%s]?)[ -]?(\\d+)[ -]?([%s]?)$' % (self.cif_types + self.nie_types, self.nif_control + self.cif_control), re.IGNORECASE)\n        super(ESIdentityCardNumberField, self).__init__(id_card_re, max_length, min_length,\n                error_message=self.default_error_messages['invalid%s' % (self.only_nif and '_only_nif' or '')],\n                *args, **kwargs)\n\n    def clean(self, value):\n        super(ESIdentityCardNumberField, self).clean(value)\n        if value in EMPTY_VALUES:\n            return ''\n        nif_get_checksum = lambda d: self.nif_control[int(d)%23]\n\n        value = value.upper().replace(' ', '').replace('-', '')\n        m = re.match(r'^([%s]?)[ -]?(\\d+)[ -]?([%s]?)$' % (self.cif_types + self.nie_types, self.nif_control + self.cif_control), value)\n        letter1, number, letter2 = m.groups()\n\n        if not letter1 and letter2:\n            # NIF\n            if letter2 == nif_get_checksum(number):\n                return value\n            else:\n                raise ValidationError(self.error_messages['invalid_nif'])\n        elif letter1 in self.nie_types and letter2:\n            # NIE\n            if letter2 == nif_get_checksum(number):\n                return value\n            else:\n                raise ValidationError(self.error_messages['invalid_nie'])\n        elif not self.only_nif and letter1 in self.cif_types and len(number) in [7, 8]:\n            # CIF\n            if not letter2:\n                number, letter2 = number[:-1], int(number[-1])\n            checksum = cif_get_checksum(number)\n            if letter2 in (checksum, self.cif_control[checksum]):\n                return value\n            else:\n                raise ValidationError(self.error_messages['invalid_cif'])\n        else:\n            raise ValidationError(self.error_messages['invalid'])\n\nclass ESCCCField(RegexField):\n    \"\"\"\n    A form field that validates its input as a Spanish bank account or CCC\n    (Codigo Cuenta Cliente).\n\n        Spanish CCC is in format EEEE-OOOO-CC-AAAAAAAAAA where:\n\n            E = entity\n            O = office\n            C = checksum\n            A = account\n\n        It's also valid to use a space as delimiter, or to use no delimiter.\n\n        First checksum digit validates entity and office, and last one\n        validates account. Validation is done multiplying every digit of 10\n        digit value (with leading 0 if necessary) by number in its position in\n        string 1, 2, 4, 8, 5, 10, 9, 7, 3, 6. Sum resulting numbers and extract\n        it from 11.  Result is checksum except when 10 then is 1, or when 11\n        then is 0.\n\n        TODO: allow IBAN validation too\n    \"\"\"\n    default_error_messages = {\n        'invalid': _('Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.'),\n        'checksum': _('Invalid checksum for bank account number.'),\n    }\n\n    def __init__(self, max_length=None, min_length=None, *args, **kwargs):\n        super(ESCCCField, self).__init__(r'^\\d{4}[ -]?\\d{4}[ -]?\\d{2}[ -]?\\d{10}$',\n            max_length, min_length, *args, **kwargs)\n\n    def clean(self, value):\n        super(ESCCCField, self).clean(value)\n        if value in EMPTY_VALUES:\n            return ''\n        control_str = [1, 2, 4, 8, 5, 10, 9, 7, 3, 6]\n        m = re.match(r'^(\\d{4})[ -]?(\\d{4})[ -]?(\\d{2})[ -]?(\\d{10})$', value)\n        entity, office, checksum, account = m.groups()\n        get_checksum = lambda d: str(11 - sum([int(digit) * int(control) for digit, control in zip(d, control_str)]) % 11).replace('10', '1').replace('11', '0')\n        if get_checksum('00' + entity + office) + get_checksum(account) == checksum:\n            return value\n        else:\n            raise ValidationError(self.error_messages['checksum'])\n\nclass ESRegionSelect(Select):\n    \"\"\"\n    A Select widget that uses a list of spanish regions as its choices.\n    \"\"\"\n    def __init__(self, attrs=None):\n        super(ESRegionSelect, self).__init__(attrs, choices=REGION_CHOICES)\n\nclass ESProvinceSelect(Select):\n    \"\"\"\n    A Select widget that uses a list of spanish provinces as its choices.\n    \"\"\"\n    def __init__(self, attrs=None):\n        super(ESProvinceSelect, self).__init__(attrs, choices=PROVINCE_CHOICES)\n\n\ndef cif_get_checksum(number):\n    s1 = sum([int(digit) for pos, digit in enumerate(number) if int(pos) % 2])\n    s2 = sum([sum([int(unit) for unit in str(int(digit) * 2)]) for pos, digit in enumerate(number) if not int(pos) % 2])\n    return (10 - ((s1 + s2) % 10)) % 10\n\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/fi/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/fi/fi_municipalities.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nAn alphabetical list of Finnish municipalities for use as `choices` in a\nformfield.\n\nThis exists in this standalone file so that it's only imported into memory\nwhen explicitly needed.\n\"\"\"\n\nfrom __future__ import unicode_literals\n\nMUNICIPALITY_CHOICES = (\n    ('akaa', \"Akaa\"),\n    ('alajarvi', \"Alajärvi\"),\n    ('alavieska', \"Alavieska\"),\n    ('alavus', \"Alavus\"),\n    ('artjarvi', \"Artjärvi\"),\n    ('asikkala', \"Asikkala\"),\n    ('askola', \"Askola\"),\n    ('aura', \"Aura\"),\n    ('brando', \"Brändö\"),\n    ('eckero', \"Eckerö\"),\n    ('enonkoski', \"Enonkoski\"),\n    ('enontekio', \"Enontekiö\"),\n    ('espoo', \"Espoo\"),\n    ('eura', \"Eura\"),\n    ('eurajoki', \"Eurajoki\"),\n    ('evijarvi', \"Evijärvi\"),\n    ('finstrom', \"Finström\"),\n    ('forssa', \"Forssa\"),\n    ('foglo', \"Föglö\"),\n    ('geta', \"Geta\"),\n    ('haapajarvi', \"Haapajärvi\"),\n    ('haapavesi', \"Haapavesi\"),\n    ('hailuoto', \"Hailuoto\"),\n    ('halsua', \"Halsua\"),\n    ('hamina', \"Hamina\"),\n    ('hammarland', \"Hammarland\"),\n    ('hankasalmi', \"Hankasalmi\"),\n    ('hanko', \"Hanko\"),\n    ('harjavalta', \"Harjavalta\"),\n    ('hartola', \"Hartola\"),\n    ('hattula', \"Hattula\"),\n    ('haukipudas', \"Haukipudas\"),\n    ('hausjarvi', \"Hausjärvi\"),\n    ('heinola', \"Heinola\"),\n    ('heinavesi', \"Heinävesi\"),\n    ('helsinki', \"Helsinki\"),\n    ('hirvensalmi', \"Hirvensalmi\"),\n    ('hollola', \"Hollola\"),\n    ('honkajoki', \"Honkajoki\"),\n    ('huittinen', \"Huittinen\"),\n    ('humppila', \"Humppila\"),\n    ('hyrynsalmi', \"Hyrynsalmi\"),\n    ('hyvinkaa', \"Hyvinkää\"),\n    ('hameenkoski', \"Hämeenkoski\"),\n    ('hameenkyro', \"Hämeenkyrö\"),\n    ('hameenlinna', \"Hämeenlinna\"),\n    ('ii', \"Ii\"),\n    ('iisalmi', \"Iisalmi\"),\n    ('iitti', \"Iitti\"),\n    ('ikaalinen', \"Ikaalinen\"),\n    ('ilmajoki', \"Ilmajoki\"),\n    ('ilomantsi', \"Ilomantsi\"),\n    ('imatra', \"Imatra\"),\n    ('inari', \"Inari\"),\n    ('inkoo', \"Inkoo\"),\n    ('isojoki', \"Isojoki\"),\n    ('isokyro', \"Isokyrö\"),\n    ('jalasjarvi', \"Jalasjärvi\"),\n    ('janakkala', \"Janakkala\"),\n    ('joensuu', \"Joensuu\"),\n    ('jokioinen', \"Jokioinen\"),\n    ('jomala', \"Jomala\"),\n    ('joroinen', \"Joroinen\"),\n    ('joutsa', \"Joutsa\"),\n    ('juankoski', \"Juankoski\"),\n    ('juuka', \"Juuka\"),\n    ('juupajoki', \"Juupajoki\"),\n    ('juva', \"Juva\"),\n    ('jyvaskyla', \"Jyväskylä\"),\n    ('jamijarvi', \"Jämijärvi\"),\n    ('jamsa', \"Jämsä\"),\n    ('jarvenpaa', \"Järvenpää\"),\n    ('kaarina', \"Kaarina\"),\n    ('kaavi', \"Kaavi\"),\n    ('kajaani', \"Kajaani\"),\n    ('kalajoki', \"Kalajoki\"),\n    ('kangasala', \"Kangasala\"),\n    ('kangasniemi', \"Kangasniemi\"),\n    ('kankaanpaa', \"Kankaanpää\"),\n    ('kannonkoski', \"Kannonkoski\"),\n    ('kannus', \"Kannus\"),\n    ('karijoki', \"Karijoki\"),\n    ('karjalohja', \"Karjalohja\"),\n    ('karkkila', \"Karkkila\"),\n    ('karstula', \"Karstula\"),\n    ('karttula', \"Karttula\"),\n    ('karvia', \"Karvia\"),\n    ('kaskinen', \"Kaskinen\"),\n    ('kauhajoki', \"Kauhajoki\"),\n    ('kauhava', \"Kauhava\"),\n    ('kauniainen', \"Kauniainen\"),\n    ('kaustinen', \"Kaustinen\"),\n    ('keitele', \"Keitele\"),\n    ('kemi', \"Kemi\"),\n    ('kemijarvi', \"Kemijärvi\"),\n    ('keminmaa', \"Keminmaa\"),\n    ('kemionsaari', \"Kemiönsaari\"),\n    ('kempele', \"Kempele\"),\n    ('kerava', \"Kerava\"),\n    ('kerimaki', \"Kerimäki\"),\n    ('kesalahti', \"Kesälahti\"),\n    ('keuruu', \"Keuruu\"),\n    ('kihnio', \"Kihniö\"),\n    ('kiikoinen', \"Kiikoinen\"),\n    ('kiiminki', \"Kiiminki\"),\n    ('kinnula', \"Kinnula\"),\n    ('kirkkonummi', \"Kirkkonummi\"),\n    ('kitee', \"Kitee\"),\n    ('kittila', \"Kittilä\"),\n    ('kiuruvesi', \"Kiuruvesi\"),\n    ('kivijarvi', \"Kivijärvi\"),\n    ('kokemaki', \"Kokemäki\"),\n    ('kokkola', \"Kokkola\"),\n    ('kolari', \"Kolari\"),\n    ('konnevesi', \"Konnevesi\"),\n    ('kontiolahti', \"Kontiolahti\"),\n    ('korsnas', \"Korsnäs\"),\n    ('koskitl', \"Koski Tl\"),\n    ('kotka', \"Kotka\"),\n    ('kouvola', \"Kouvola\"),\n    ('kristiinankaupunki', \"Kristiinankaupunki\"),\n    ('kruunupyy', \"Kruunupyy\"),\n    ('kuhmalahti', \"Kuhmalahti\"),\n    ('kuhmo', \"Kuhmo\"),\n    ('kuhmoinen', \"Kuhmoinen\"),\n    ('kumlinge', \"Kumlinge\"),\n    ('kuopio', \"Kuopio\"),\n    ('kuortane', \"Kuortane\"),\n    ('kurikka', \"Kurikka\"),\n    ('kustavi', \"Kustavi\"),\n    ('kuusamo', \"Kuusamo\"),\n    ('kylmakoski', \"Kylmäkoski\"),\n    ('kyyjarvi', \"Kyyjärvi\"),\n    ('karkola', \"Kärkölä\"),\n    ('karsamaki', \"Kärsämäki\"),\n    ('kokar', \"Kökar\"),\n    ('koylio', \"Köyliö\"),\n    ('lahti', \"Lahti\"),\n    ('laihia', \"Laihia\"),\n    ('laitila', \"Laitila\"),\n    ('lapinjarvi', \"Lapinjärvi\"),\n    ('lapinlahti', \"Lapinlahti\"),\n    ('lappajarvi', \"Lappajärvi\"),\n    ('lappeenranta', \"Lappeenranta\"),\n    ('lapua', \"Lapua\"),\n    ('laukaa', \"Laukaa\"),\n    ('lavia', \"Lavia\"),\n    ('lemi', \"Lemi\"),\n    ('lemland', \"Lemland\"),\n    ('lempaala', \"Lempäälä\"),\n    ('leppavirta', \"Leppävirta\"),\n    ('lestijarvi', \"Lestijärvi\"),\n    ('lieksa', \"Lieksa\"),\n    ('lieto', \"Lieto\"),\n    ('liminka', \"Liminka\"),\n    ('liperi', \"Liperi\"),\n    ('lohja', \"Lohja\"),\n    ('loimaa', \"Loimaa\"),\n    ('loppi', \"Loppi\"),\n    ('loviisa', \"Loviisa\"),\n    ('luhanka', \"Luhanka\"),\n    ('lumijoki', \"Lumijoki\"),\n    ('lumparland', \"Lumparland\"),\n    ('luoto', \"Luoto\"),\n    ('luumaki', \"Luumäki\"),\n    ('luvia', \"Luvia\"),\n    ('lansi-turunmaa', \"Länsi-Turunmaa\"),\n    ('maalahti', \"Maalahti\"),\n    ('maaninka', \"Maaninka\"),\n    ('maarianhamina', \"Maarianhamina\"),\n    ('marttila', \"Marttila\"),\n    ('masku', \"Masku\"),\n    ('merijarvi', \"Merijärvi\"),\n    ('merikarvia', \"Merikarvia\"),\n    ('miehikkala', \"Miehikkälä\"),\n    ('mikkeli', \"Mikkeli\"),\n    ('muhos', \"Muhos\"),\n    ('multia', \"Multia\"),\n    ('muonio', \"Muonio\"),\n    ('mustasaari', \"Mustasaari\"),\n    ('muurame', \"Muurame\"),\n    ('mynamaki', \"Mynämäki\"),\n    ('myrskyla', \"Myrskylä\"),\n    ('mantsala', \"Mäntsälä\"),\n    ('mantta-vilppula', \"Mänttä-Vilppula\"),\n    ('mantyharju', \"Mäntyharju\"),\n    ('naantali', \"Naantali\"),\n    ('nakkila', \"Nakkila\"),\n    ('nastola', \"Nastola\"),\n    ('nilsia', \"Nilsiä\"),\n    ('nivala', \"Nivala\"),\n    ('nokia', \"Nokia\"),\n    ('nousiainen', \"Nousiainen\"),\n    ('nummi-pusula', \"Nummi-Pusula\"),\n    ('nurmes', \"Nurmes\"),\n    ('nurmijarvi', \"Nurmijärvi\"),\n    ('narpio', \"Närpiö\"),\n    ('oravainen', \"Oravainen\"),\n    ('orimattila', \"Orimattila\"),\n    ('oripaa', \"Oripää\"),\n    ('orivesi', \"Orivesi\"),\n    ('oulainen', \"Oulainen\"),\n    ('oulu', \"Oulu\"),\n    ('oulunsalo', \"Oulunsalo\"),\n    ('outokumpu', \"Outokumpu\"),\n    ('padasjoki', \"Padasjoki\"),\n    ('paimio', \"Paimio\"),\n    ('paltamo', \"Paltamo\"),\n    ('parikkala', \"Parikkala\"),\n    ('parkano', \"Parkano\"),\n    ('pedersore', \"Pedersöre\"),\n    ('pelkosenniemi', \"Pelkosenniemi\"),\n    ('pello', \"Pello\"),\n    ('perho', \"Perho\"),\n    ('pertunmaa', \"Pertunmaa\"),\n    ('petajavesi', \"Petäjävesi\"),\n    ('pieksamaki', \"Pieksämäki\"),\n    ('pielavesi', \"Pielavesi\"),\n    ('pietarsaari', \"Pietarsaari\"),\n    ('pihtipudas', \"Pihtipudas\"),\n    ('pirkkala', \"Pirkkala\"),\n    ('polvijarvi', \"Polvijärvi\"),\n    ('pomarkku', \"Pomarkku\"),\n    ('pori', \"Pori\"),\n    ('pornainen', \"Pornainen\"),\n    ('porvoo', \"Porvoo\"),\n    ('posio', \"Posio\"),\n    ('pudasjarvi', \"Pudasjärvi\"),\n    ('pukkila', \"Pukkila\"),\n    ('punkaharju', \"Punkaharju\"),\n    ('punkalaidun', \"Punkalaidun\"),\n    ('puolanka', \"Puolanka\"),\n    ('puumala', \"Puumala\"),\n    ('pyhtaa', \"Pyhtää\"),\n    ('pyhajoki', \"Pyhäjoki\"),\n    ('pyhajarvi', \"Pyhäjärvi\"),\n    ('pyhanta', \"Pyhäntä\"),\n    ('pyharanta', \"Pyhäranta\"),\n    ('palkane', \"Pälkäne\"),\n    ('poytya', \"Pöytyä\"),\n    ('raahe', \"Raahe\"),\n    ('raasepori', \"Raasepori\"),\n    ('raisio', \"Raisio\"),\n    ('rantasalmi', \"Rantasalmi\"),\n    ('ranua', \"Ranua\"),\n    ('rauma', \"Rauma\"),\n    ('rautalampi', \"Rautalampi\"),\n    ('rautavaara', \"Rautavaara\"),\n    ('rautjarvi', \"Rautjärvi\"),\n    ('reisjarvi', \"Reisjärvi\"),\n    ('riihimaki', \"Riihimäki\"),\n    ('ristiina', \"Ristiina\"),\n    ('ristijarvi', \"Ristijärvi\"),\n    ('rovaniemi', \"Rovaniemi\"),\n    ('ruokolahti', \"Ruokolahti\"),\n    ('ruovesi', \"Ruovesi\"),\n    ('rusko', \"Rusko\"),\n    ('raakkyla', \"Rääkkylä\"),\n    ('saarijarvi', \"Saarijärvi\"),\n    ('salla', \"Salla\"),\n    ('salo', \"Salo\"),\n    ('saltvik', \"Saltvik\"),\n    ('sastamala', \"Sastamala\"),\n    ('sauvo', \"Sauvo\"),\n    ('savitaipale', \"Savitaipale\"),\n    ('savonlinna', \"Savonlinna\"),\n    ('savukoski', \"Savukoski\"),\n    ('seinajoki', \"Seinäjoki\"),\n    ('sievi', \"Sievi\"),\n    ('siikainen', \"Siikainen\"),\n    ('siikajoki', \"Siikajoki\"),\n    ('siikalatva', \"Siikalatva\"),\n    ('siilinjarvi', \"Siilinjärvi\"),\n    ('simo', \"Simo\"),\n    ('sipoo', \"Sipoo\"),\n    ('siuntio', \"Siuntio\"),\n    ('sodankyla', \"Sodankylä\"),\n    ('soini', \"Soini\"),\n    ('somero', \"Somero\"),\n    ('sonkajarvi', \"Sonkajärvi\"),\n    ('sotkamo', \"Sotkamo\"),\n    ('sottunga', \"Sottunga\"),\n    ('sulkava', \"Sulkava\"),\n    ('sund', \"Sund\"),\n    ('suomenniemi', \"Suomenniemi\"),\n    ('suomussalmi', \"Suomussalmi\"),\n    ('suonenjoki', \"Suonenjoki\"),\n    ('sysma', \"Sysmä\"),\n    ('sakyla', \"Säkylä\"),\n    ('taipalsaari', \"Taipalsaari\"),\n    ('taivalkoski', \"Taivalkoski\"),\n    ('taivassalo', \"Taivassalo\"),\n    ('tammela', \"Tammela\"),\n    ('tampere', \"Tampere\"),\n    ('tarvasjoki', \"Tarvasjoki\"),\n    ('tervo', \"Tervo\"),\n    ('tervola', \"Tervola\"),\n    ('teuva', \"Teuva\"),\n    ('tohmajarvi', \"Tohmajärvi\"),\n    ('toholampi', \"Toholampi\"),\n    ('toivakka', \"Toivakka\"),\n    ('tornio', \"Tornio\"),\n    ('turku', \"Turku\"),\n    ('tuusniemi', \"Tuusniemi\"),\n    ('tuusula', \"Tuusula\"),\n    ('tyrnava', \"Tyrnävä\"),\n    ('toysa', \"Töysä\"),\n    ('ulvila', \"Ulvila\"),\n    ('urjala', \"Urjala\"),\n    ('utajarvi', \"Utajärvi\"),\n    ('utsjoki', \"Utsjoki\"),\n    ('uurainen', \"Uurainen\"),\n    ('uusikaarlepyy', \"Uusikaarlepyy\"),\n    ('uusikaupunki', \"Uusikaupunki\"),\n    ('vaala', \"Vaala\"),\n    ('vaasa', \"Vaasa\"),\n    ('valkeakoski', \"Valkeakoski\"),\n    ('valtimo', \"Valtimo\"),\n    ('vantaa', \"Vantaa\"),\n    ('varkaus', \"Varkaus\"),\n    ('varpaisjarvi', \"Varpaisjärvi\"),\n    ('vehmaa', \"Vehmaa\"),\n    ('vesanto', \"Vesanto\"),\n    ('vesilahti', \"Vesilahti\"),\n    ('veteli', \"Veteli\"),\n    ('vierema', \"Vieremä\"),\n    ('vihanti', \"Vihanti\"),\n    ('vihti', \"Vihti\"),\n    ('viitasaari', \"Viitasaari\"),\n    ('vimpeli', \"Vimpeli\"),\n    ('virolahti', \"Virolahti\"),\n    ('virrat', \"Virrat\"),\n    ('vardo', \"Vårdö\"),\n    ('vahakyro', \"Vähäkyrö\"),\n    ('voyri-maksamaa', \"Vöyri-Maksamaa\"),\n    ('yli-ii', \"Yli-Ii\"),\n    ('ylitornio', \"Ylitornio\"),\n    ('ylivieska', \"Ylivieska\"),\n    ('ylojarvi', \"Ylöjärvi\"),\n    ('ypaja', \"Ypäjä\"),\n    ('ahtari', \"Ähtäri\"),\n    ('aanekoski', \"Äänekoski\")\n)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/fi/forms.py",
    "content": "\"\"\"\nFI-specific Form helpers\n\"\"\"\n\nfrom __future__ import absolute_import, unicode_literals\n\nimport re\n\nfrom django.contrib.localflavor.fi.fi_municipalities import MUNICIPALITY_CHOICES\nfrom django.core.validators import EMPTY_VALUES\nfrom django.forms import ValidationError\nfrom django.forms.fields import Field, RegexField, Select\nfrom django.utils.translation import ugettext_lazy as _\n\n\nclass FIZipCodeField(RegexField):\n    default_error_messages = {\n        'invalid': _('Enter a zip code in the format XXXXX.'),\n    }\n    def __init__(self, max_length=None, min_length=None, *args, **kwargs):\n        super(FIZipCodeField, self).__init__(r'^\\d{5}$',\n            max_length, min_length, *args, **kwargs)\n\nclass FIMunicipalitySelect(Select):\n    \"\"\"\n    A Select widget that uses a list of Finnish municipalities as its choices.\n    \"\"\"\n    def __init__(self, attrs=None):\n        super(FIMunicipalitySelect, self).__init__(attrs, choices=MUNICIPALITY_CHOICES)\n\nclass FISocialSecurityNumber(Field):\n    default_error_messages = {\n        'invalid': _('Enter a valid Finnish social security number.'),\n    }\n\n    def clean(self, value):\n        super(FISocialSecurityNumber, self).clean(value)\n        if value in EMPTY_VALUES:\n            return ''\n\n        checkmarks = \"0123456789ABCDEFHJKLMNPRSTUVWXY\"\n        result = re.match(r\"\"\"^\n            (?P<date>([0-2]\\d|3[01])\n            (0\\d|1[012])\n            (\\d{2}))\n            [A+-]\n            (?P<serial>(\\d{3}))\n            (?P<checksum>[%s])$\"\"\" % checkmarks, value, re.VERBOSE | re.IGNORECASE)\n        if not result:\n            raise ValidationError(self.error_messages['invalid'])\n        gd = result.groupdict()\n        checksum = int(gd['date'] + gd['serial'])\n        if checkmarks[checksum % len(checkmarks)] == gd['checksum'].upper():\n            return '%s' % value.upper()\n        raise ValidationError(self.error_messages['invalid'])\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/fr/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/fr/forms.py",
    "content": "\"\"\"\nFR-specific Form helpers\n\"\"\"\nfrom __future__ import absolute_import, unicode_literals\n\nimport re\n\nfrom django.contrib.localflavor.fr.fr_department import DEPARTMENT_CHOICES\nfrom django.core.validators import EMPTY_VALUES\nfrom django.forms import ValidationError\nfrom django.forms.fields import CharField, RegexField, Select\nfrom django.utils.encoding import smart_text\nfrom django.utils.translation import ugettext_lazy as _\n\n\nphone_digits_re = re.compile(r'^0\\d(\\s|\\.)?(\\d{2}(\\s|\\.)?){3}\\d{2}$')\n\nclass FRZipCodeField(RegexField):\n    default_error_messages = {\n        'invalid': _('Enter a zip code in the format XXXXX.'),\n    }\n\n    def __init__(self, max_length=5, min_length=5, *args, **kwargs):\n        super(FRZipCodeField, self).__init__(r'^\\d{5}$',\n            max_length, min_length, *args, **kwargs)\n\nclass FRPhoneNumberField(CharField):\n    \"\"\"\n    Validate local French phone number (not international ones)\n    The correct format is '0X XX XX XX XX'.\n    '0X.XX.XX.XX.XX' and '0XXXXXXXXX' validate but are corrected to\n    '0X XX XX XX XX'.\n    \"\"\"\n    default_error_messages = {\n        'invalid': _('Phone numbers must be in 0X XX XX XX XX format.'),\n    }\n\n    def __init__(self, max_length=14, min_length=10, *args, **kwargs):\n        super(FRPhoneNumberField, self).__init__(\n            max_length, min_length, *args, **kwargs)\n\n    def clean(self, value):\n        super(FRPhoneNumberField, self).clean(value)\n        if value in EMPTY_VALUES:\n            return ''\n        value = re.sub('(\\.|\\s)', '', smart_text(value))\n        m = phone_digits_re.search(value)\n        if m:\n            return '%s %s %s %s %s' % (value[0:2], value[2:4], value[4:6], value[6:8], value[8:10])\n        raise ValidationError(self.error_messages['invalid'])\n\nclass FRDepartmentSelect(Select):\n    \"\"\"\n    A Select widget that uses a list of FR departments as its choices.\n    \"\"\"\n    def __init__(self, attrs=None):\n        super(FRDepartmentSelect, self).__init__(attrs, choices=DEPARTMENT_CHOICES)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/fr/fr_department.py",
    "content": "# -*- coding: utf-8 -*-\n\n# See the \"Code officiel géographique\" on the INSEE website <www.insee.fr>.\nfrom __future__ import unicode_literals\n\nDEPARTMENT_CHOICES = (\n    # Metropolitan departments\n    ('01', '01 - Ain'),\n    ('02', '02 - Aisne'),\n    ('03', '03 - Allier'),\n    ('04', '04 - Alpes-de-Haute-Provence'),\n    ('05', '05 - Hautes-Alpes'),\n    ('06', '06 - Alpes-Maritimes'),\n    ('07', '07 - Ardèche'),\n    ('08', '08 - Ardennes'),\n    ('09', '09 - Ariège'),\n    ('10', '10 - Aube'),\n    ('11', '11 - Aude'),\n    ('12', '12 - Aveyron'),\n    ('13', '13 - Bouches-du-Rhône'),\n    ('14', '14 - Calvados'),\n    ('15', '15 - Cantal'),\n    ('16', '16 - Charente'),\n    ('17', '17 - Charente-Maritime'),\n    ('18', '18 - Cher'),\n    ('19', '19 - Corrèze'),\n    ('2A', '2A - Corse-du-Sud'),\n    ('2B', '2B - Haute-Corse'),\n    ('21', '21 - Côte-d\\'Or'),\n    ('22', '22 - Côtes-d\\'Armor'),\n    ('23', '23 - Creuse'),\n    ('24', '24 - Dordogne'),\n    ('25', '25 - Doubs'),\n    ('26', '26 - Drôme'),\n    ('27', '27 - Eure'),\n    ('28', '28 - Eure-et-Loir'),\n    ('29', '29 - Finistère'),\n    ('30', '30 - Gard'),\n    ('31', '31 - Haute-Garonne'),\n    ('32', '32 - Gers'),\n    ('33', '33 - Gironde'),\n    ('34', '34 - Hérault'),\n    ('35', '35 - Ille-et-Vilaine'),\n    ('36', '36 - Indre'),\n    ('37', '37 - Indre-et-Loire'),\n    ('38', '38 - Isère'),\n    ('39', '39 - Jura'),\n    ('40', '40 - Landes'),\n    ('41', '41 - Loir-et-Cher'),\n    ('42', '42 - Loire'),\n    ('43', '43 - Haute-Loire'),\n    ('44', '44 - Loire-Atlantique'),\n    ('45', '45 - Loiret'),\n    ('46', '46 - Lot'),\n    ('47', '47 - Lot-et-Garonne'),\n    ('48', '48 - Lozère'),\n    ('49', '49 - Maine-et-Loire'),\n    ('50', '50 - Manche'),\n    ('51', '51 - Marne'),\n    ('52', '52 - Haute-Marne'),\n    ('53', '53 - Mayenne'),\n    ('54', '54 - Meurthe-et-Moselle'),\n    ('55', '55 - Meuse'),\n    ('56', '56 - Morbihan'),\n    ('57', '57 - Moselle'),\n    ('58', '58 - Nièvre'),\n    ('59', '59 - Nord'),\n    ('60', '60 - Oise'),\n    ('61', '61 - Orne'),\n    ('62', '62 - Pas-de-Calais'),\n    ('63', '63 - Puy-de-Dôme'),\n    ('64', '64 - Pyrénées-Atlantiques'),\n    ('65', '65 - Hautes-Pyrénées'),\n    ('66', '66 - Pyrénées-Orientales'),\n    ('67', '67 - Bas-Rhin'),\n    ('68', '68 - Haut-Rhin'),\n    ('69', '69 - Rhône'),\n    ('70', '70 - Haute-Saône'),\n    ('71', '71 - Saône-et-Loire'),\n    ('72', '72 - Sarthe'),\n    ('73', '73 - Savoie'),\n    ('74', '74 - Haute-Savoie'),\n    ('75', '75 - Paris'),\n    ('76', '76 - Seine-Maritime'),\n    ('77', '77 - Seine-et-Marne'),\n    ('78', '78 - Yvelines'),\n    ('79', '79 - Deux-Sèvres'),\n    ('80', '80 - Somme'),\n    ('81', '81 - Tarn'),\n    ('82', '82 - Tarn-et-Garonne'),\n    ('83', '83 - Var'),\n    ('84', '84 - Vaucluse'),\n    ('85', '85 - Vendée'),\n    ('86', '86 - Vienne'),\n    ('87', '87 - Haute-Vienne'),\n    ('88', '88 - Vosges'),\n    ('89', '89 - Yonne'),\n    ('90', '90 - Territoire de Belfort'),\n    ('91', '91 - Essonne'),\n    ('92', '92 - Hauts-de-Seine'),\n    ('93', '93 - Seine-Saint-Denis'),\n    ('94', '94 - Val-de-Marne'),\n    ('95', '95 - Val-d\\'Oise'),\n    # Overseas departments, communities, and other territories\n    ('971', '971 - Guadeloupe'),\n    ('972', '972 - Martinique'),\n    ('973', '973 - Guyane'),\n    ('974', '974 - La Réunion'),\n    ('975', '975 - Saint-Pierre-et-Miquelon'),\n    ('976', '976 - Mayotte'),\n    ('977', '977 - Saint-Barthélemy'),\n    ('978', '978 - Saint-Martin'),\n    ('984', '984 - Terres australes et antarctiques françaises'),\n    ('986', '986 - Wallis et Futuna'),\n    ('987', '987 - Polynésie française'),\n    ('988', '988 - Nouvelle-Calédonie'),\n    ('989', '989 - Île de Clipperton'),\n)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/gb/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/gb/forms.py",
    "content": "\"\"\"\nGB-specific Form helpers\n\"\"\"\n\nfrom __future__ import absolute_import, unicode_literals\n\nimport re\n\nfrom django.contrib.localflavor.gb.gb_regions import GB_NATIONS_CHOICES, GB_REGION_CHOICES\nfrom django.forms.fields import CharField, Select\nfrom django.forms import ValidationError\nfrom django.utils.translation import ugettext_lazy as _\n\n\nclass GBPostcodeField(CharField):\n    \"\"\"\n    A form field that validates its input is a UK postcode.\n\n    The regular expression used is sourced from the schema for British Standard\n    BS7666 address types: http://www.govtalk.gov.uk/gdsc/schemas/bs7666-v2-0.xsd\n\n    The value is uppercased and a space added in the correct place, if required.\n    \"\"\"\n    default_error_messages = {\n        'invalid': _('Enter a valid postcode.'),\n    }\n    outcode_pattern = '[A-PR-UWYZ]([0-9]{1,2}|([A-HIK-Y][0-9](|[0-9]|[ABEHMNPRVWXY]))|[0-9][A-HJKSTUW])'\n    incode_pattern = '[0-9][ABD-HJLNP-UW-Z]{2}'\n    postcode_regex = re.compile(r'^(GIR 0AA|%s %s)$' % (outcode_pattern, incode_pattern))\n    space_regex = re.compile(r' *(%s)$' % incode_pattern)\n\n    def clean(self, value):\n        value = super(GBPostcodeField, self).clean(value)\n        if value == '':\n            return value\n        postcode = value.upper().strip()\n        # Put a single space before the incode (second part).\n        postcode = self.space_regex.sub(r' \\1', postcode)\n        if not self.postcode_regex.search(postcode):\n            raise ValidationError(self.error_messages['invalid'])\n        return postcode\n\nclass GBCountySelect(Select):\n    \"\"\"\n    A Select widget that uses a list of UK Counties/Regions as its choices.\n    \"\"\"\n    def __init__(self, attrs=None):\n        super(GBCountySelect, self).__init__(attrs, choices=GB_REGION_CHOICES)\n\nclass GBNationSelect(Select):\n    \"\"\"\n    A Select widget that uses a list of UK Nations as its choices.\n    \"\"\"\n    def __init__(self, attrs=None):\n        super(GBNationSelect, self).__init__(attrs, choices=GB_NATIONS_CHOICES)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/gb/gb_regions.py",
    "content": "\"\"\"\nSources:\n    English regions: http://www.statistics.gov.uk/geography/downloads/31_10_01_REGION_names_and_codes_12_00.xls\n    Northern Ireland regions: http://en.wikipedia.org/wiki/List_of_Irish_counties_by_area\n    Welsh regions: http://en.wikipedia.org/wiki/Preserved_counties_of_Wales\n    Scottish regions: http://en.wikipedia.org/wiki/Regions_and_districts_of_Scotland\n\"\"\"\nfrom django.utils.translation import ugettext_lazy as _\n\nENGLAND_REGION_CHOICES = (\n    (\"Bedfordshire\", _(\"Bedfordshire\")),\n    (\"Buckinghamshire\", _(\"Buckinghamshire\")),\n    (\"Cambridgeshire\", (\"Cambridgeshire\")),\n    (\"Cheshire\", _(\"Cheshire\")),\n    (\"Cornwall and Isles of Scilly\", _(\"Cornwall and Isles of Scilly\")),\n    (\"Cumbria\", _(\"Cumbria\")),\n    (\"Derbyshire\", _(\"Derbyshire\")),\n    (\"Devon\", _(\"Devon\")),\n    (\"Dorset\", _(\"Dorset\")),\n    (\"Durham\", _(\"Durham\")),\n    (\"East Sussex\", _(\"East Sussex\")),\n    (\"Essex\", _(\"Essex\")),\n    (\"Gloucestershire\", _(\"Gloucestershire\")),\n    (\"Greater London\", _(\"Greater London\")),\n    (\"Greater Manchester\", _(\"Greater Manchester\")),\n    (\"Hampshire\", _(\"Hampshire\")),\n    (\"Hertfordshire\", _(\"Hertfordshire\")),\n    (\"Kent\", _(\"Kent\")),\n    (\"Lancashire\", _(\"Lancashire\")),\n    (\"Leicestershire\", _(\"Leicestershire\")),\n    (\"Lincolnshire\", _(\"Lincolnshire\")),\n    (\"Merseyside\", _(\"Merseyside\")),\n    (\"Norfolk\", _(\"Norfolk\")),\n    (\"North Yorkshire\", _(\"North Yorkshire\")),\n    (\"Northamptonshire\", _(\"Northamptonshire\")),\n    (\"Northumberland\", _(\"Northumberland\")),\n    (\"Nottinghamshire\", _(\"Nottinghamshire\")),\n    (\"Oxfordshire\", _(\"Oxfordshire\")),\n    (\"Shropshire\", _(\"Shropshire\")),\n    (\"Somerset\", _(\"Somerset\")),\n    (\"South Yorkshire\", _(\"South Yorkshire\")),\n    (\"Staffordshire\", _(\"Staffordshire\")),\n    (\"Suffolk\", _(\"Suffolk\")),\n    (\"Surrey\", _(\"Surrey\")),\n    (\"Tyne and Wear\", _(\"Tyne and Wear\")),\n    (\"Warwickshire\", _(\"Warwickshire\")),\n    (\"West Midlands\", _(\"West Midlands\")),\n    (\"West Sussex\", _(\"West Sussex\")),\n    (\"West Yorkshire\", _(\"West Yorkshire\")),\n    (\"Wiltshire\", _(\"Wiltshire\")),\n    (\"Worcestershire\", _(\"Worcestershire\")),\n)\n\nNORTHERN_IRELAND_REGION_CHOICES = (\n    (\"County Antrim\", _(\"County Antrim\")),\n    (\"County Armagh\", _(\"County Armagh\")),\n    (\"County Down\", _(\"County Down\")),\n    (\"County Fermanagh\", _(\"County Fermanagh\")),\n    (\"County Londonderry\", _(\"County Londonderry\")),\n    (\"County Tyrone\", _(\"County Tyrone\")),\n)\n\nWALES_REGION_CHOICES = (\n    (\"Clwyd\", _(\"Clwyd\")),\n    (\"Dyfed\", _(\"Dyfed\")),\n    (\"Gwent\", _(\"Gwent\")),\n    (\"Gwynedd\", _(\"Gwynedd\")),\n    (\"Mid Glamorgan\", _(\"Mid Glamorgan\")),\n    (\"Powys\", _(\"Powys\")),\n    (\"South Glamorgan\", _(\"South Glamorgan\")),\n    (\"West Glamorgan\", _(\"West Glamorgan\")),\n)\n\nSCOTTISH_REGION_CHOICES = (\n    (\"Borders\", _(\"Borders\")),\n    (\"Central Scotland\", _(\"Central Scotland\")),\n    (\"Dumfries and Galloway\", _(\"Dumfries and Galloway\")),\n    (\"Fife\", _(\"Fife\")),\n    (\"Grampian\", _(\"Grampian\")),\n    (\"Highland\", _(\"Highland\")),\n    (\"Lothian\", _(\"Lothian\")),\n    (\"Orkney Islands\", _(\"Orkney Islands\")),\n    (\"Shetland Islands\", _(\"Shetland Islands\")),\n    (\"Strathclyde\", _(\"Strathclyde\")),\n    (\"Tayside\", _(\"Tayside\")),\n    (\"Western Isles\", _(\"Western Isles\")),\n)\n\nGB_NATIONS_CHOICES = (\n    (\"England\", _(\"England\")),\n    (\"Northern Ireland\", _(\"Northern Ireland\")),\n    (\"Scotland\", _(\"Scotland\")),\n    (\"Wales\", _(\"Wales\")),\n)\n\nGB_REGION_CHOICES = ENGLAND_REGION_CHOICES + NORTHERN_IRELAND_REGION_CHOICES + WALES_REGION_CHOICES + SCOTTISH_REGION_CHOICES\n\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/generic/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/generic/forms.py",
    "content": "from django import forms\n\nDEFAULT_DATE_INPUT_FORMATS = (\n    '%Y-%m-%d', '%d/%m/%Y', '%d/%m/%y', # '2006-10-25', '25/10/2006', '25/10/06'\n    '%b %d %Y', '%b %d, %Y',            # 'Oct 25 2006', 'Oct 25, 2006'\n    '%d %b %Y', '%d %b, %Y',            # '25 Oct 2006', '25 Oct, 2006'\n    '%B %d %Y', '%B %d, %Y',            # 'October 25 2006', 'October 25, 2006'\n    '%d %B %Y', '%d %B, %Y',            # '25 October 2006', '25 October, 2006'\n)\n\nDEFAULT_DATETIME_INPUT_FORMATS = (\n    '%Y-%m-%d %H:%M:%S',     # '2006-10-25 14:30:59'\n    '%Y-%m-%d %H:%M',        # '2006-10-25 14:30'\n    '%Y-%m-%d',              # '2006-10-25'\n    '%d/%m/%Y %H:%M:%S',     # '25/10/2006 14:30:59'\n    '%d/%m/%Y %H:%M',        # '25/10/2006 14:30'\n    '%d/%m/%Y',              # '25/10/2006'\n    '%d/%m/%y %H:%M:%S',     # '25/10/06 14:30:59'\n    '%d/%m/%y %H:%M',        # '25/10/06 14:30'\n    '%d/%m/%y',              # '25/10/06'\n)\n\nclass DateField(forms.DateField):\n    \"\"\"\n    A date input field which uses non-US date input formats by default.\n    \"\"\"\n    def __init__(self, input_formats=None, *args, **kwargs):\n        input_formats = input_formats or DEFAULT_DATE_INPUT_FORMATS\n        super(DateField, self).__init__(input_formats=input_formats, *args, **kwargs)\n\nclass DateTimeField(forms.DateTimeField):\n    \"\"\"\n    A date and time input field which uses non-US date and time input formats\n    by default.\n    \"\"\"\n    def __init__(self, input_formats=None, *args, **kwargs):\n        input_formats = input_formats or DEFAULT_DATETIME_INPUT_FORMATS\n        super(DateTimeField, self).__init__(input_formats=input_formats, *args, **kwargs)\n\nclass SplitDateTimeField(forms.SplitDateTimeField):\n    \"\"\"\n    Split date and time input fields which use non-US date and time input\n    formats by default.\n    \"\"\"\n    def __init__(self, input_date_formats=None, input_time_formats=None, *args, **kwargs):\n        input_date_formats = input_date_formats or DEFAULT_DATE_INPUT_FORMATS\n        super(SplitDateTimeField, self).__init__(input_date_formats=input_date_formats,\n                                                 input_time_formats=input_time_formats, *args, **kwargs)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/hk/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/hk/forms.py",
    "content": "\"\"\"\nHong Kong specific Form helpers\n\"\"\"\nfrom __future__ import absolute_import, unicode_literals\n\nimport re\n\nfrom django.core.validators import EMPTY_VALUES\nfrom django.forms import CharField\nfrom django.forms import ValidationError\nfrom django.utils.encoding import smart_text\nfrom django.utils.translation import ugettext_lazy as _\n\n\nhk_phone_digits_re = re.compile(r'^(?:852-?)?(\\d{4})[-\\.]?(\\d{4})$')\nhk_special_numbers = ('999', '992', '112')\nhk_phone_prefixes = ('2', '3', '5', '6', '8', '9')\nhk_formats = ['XXXX-XXXX', '852-XXXX-XXXX', '(+852) XXXX-XXXX',\n    'XXXX XXXX', 'XXXXXXXX']\n\n\n\nclass HKPhoneNumberField(CharField):\n    \"\"\"\n    Validate Hong Kong phone number.\n    The input format can be either one of the followings:\n    'XXXX-XXXX', '852-XXXX-XXXX', '(+852) XXXX-XXXX',\n    'XXXX XXXX', or 'XXXXXXXX'.\n    The output format is 'XXXX-XXXX'.\n\n    Note: The phone number shall not start with 999, 992, or 112.\n          And, it should start with either 2, 3, 5, 6, 8, or 9.\n\n    Ref - http://en.wikipedia.org/wiki/Telephone_numbers_in_Hong_Kong\n    \"\"\"\n    default_error_messages = {\n        'disguise': _('Phone number should not start with ' \\\n                    'one of the followings: %s.' % \\\n                    ', '.join(hk_special_numbers)),\n        'invalid': _('Phone number must be in one of the following formats: '\n                    '%s.' % ', '.join(hk_formats)),\n        'prefix': _('Phone number should start with ' \\\n                  'one of the followings: %s.' % \\\n                  ', '.join(hk_phone_prefixes)),\n    }\n\n    def __init__(self, *args, **kwargs):\n        super(HKPhoneNumberField, self).__init__(*args, **kwargs)\n\n    def clean(self, value):\n        super(HKPhoneNumberField, self).clean(value)\n\n        if value in EMPTY_VALUES:\n            return ''\n\n        value = re.sub('(\\(|\\)|\\s+|\\+)', '', smart_text(value))\n        m = hk_phone_digits_re.search(value)\n        if not m:\n            raise ValidationError(self.error_messages['invalid'])\n\n        value = '%s-%s' % (m.group(1), m.group(2))\n        for special in hk_special_numbers:\n            if value.startswith(special):\n                raise ValidationError(self.error_messages['disguise'])\n\n        prefix_found = map(lambda prefix: value.startswith(prefix),\n                           hk_phone_prefixes)\n        if not any(prefix_found):\n            raise ValidationError(self.error_messages['prefix'])\n\n        return value\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/hr/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/hr/forms.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nHR-specific Form helpers\n\"\"\"\nfrom __future__ import absolute_import, unicode_literals\n\nimport datetime\nimport re\n\nfrom django.contrib.localflavor.hr.hr_choices import (\n    HR_LICENSE_PLATE_PREFIX_CHOICES, HR_COUNTY_CHOICES,\n    HR_PHONE_NUMBER_PREFIX_CHOICES)\nfrom django.core.validators import EMPTY_VALUES\nfrom django.forms import ValidationError\nfrom django.forms.fields import Field, Select, RegexField\nfrom django.utils.encoding import smart_text\nfrom django.utils.translation import ugettext_lazy as _\n\n\njmbg_re = re.compile(r'^(?P<dd>\\d{2})(?P<mm>\\d{2})(?P<yyy>\\d{3})' + \\\n            r'(?P<rr>\\d{2})(?P<bbb>\\d{3})(?P<k>\\d{1})$')\noib_re = re.compile(r'^\\d{11}$')\nplate_re = re.compile(r'^(?P<prefix>[A-ZČŠŽ]{2})' + \\\n            r'(?P<number>\\d{3,4})(?P<suffix>[ABCDEFGHIJKLMNOPRSTUVZ]{1,2})$')\npostal_code_re = re.compile(r'^\\d{5}$')\nphone_re = re.compile(r'^(\\+385|00385|0)(?P<prefix>\\d{2})(?P<number>\\d{6,7})$')\njmbag_re = re.compile(r'^601983(?P<copy>\\d{1})1(?P<jmbag>\\d{10})(?P<k>\\d{1})$')\n\n\nclass HRCountySelect(Select):\n    \"\"\"\n    A Select widget that uses a list of counties of Croatia as its choices.\n    \"\"\"\n\n    def __init__(self, attrs=None):\n        super(HRCountySelect, self).__init__(attrs, choices=HR_COUNTY_CHOICES)\n\n\nclass HRLicensePlatePrefixSelect(Select):\n    \"\"\"\n    A Select widget that uses a list of vehicle license plate prefixes of\n    Croatia as its choices.\n    \"\"\"\n\n    def __init__(self, attrs=None):\n        super(HRLicensePlatePrefixSelect, self).__init__(attrs,\n            choices=HR_LICENSE_PLATE_PREFIX_CHOICES)\n\n\nclass HRPhoneNumberPrefixSelect(Select):\n    \"\"\"\n    A Select widget that uses a list of phone number prefixes of Croatia as its\n    choices.\n    \"\"\"\n\n    def __init__(self, attrs=None):\n        super(HRPhoneNumberPrefixSelect, self).__init__(attrs,\n            choices=HR_PHONE_NUMBER_PREFIX_CHOICES)\n\n\nclass HRJMBGField(Field):\n    \"\"\"\n    Unique Master Citizen Number (JMBG) field.\n    The number is still in use in Croatia, but it is being replaced by OIB.\n\n    Source: http://en.wikipedia.org/wiki/Unique_Master_Citizen_Number\n\n    For who might be reimplementing:\n    The \"area\" regular expression group is used to calculate the region where a\n    person was registered. Additional validation can be implemented in\n    accordance with it, however this could result in exclusion of legit\n    immigrated citizens. Therefore, this field works for any ex-Yugoslavia\n    country.\n    \"\"\"\n    default_error_messages = {\n        'invalid': _('Enter a valid 13 digit JMBG'),\n        'date': _('Error in date segment'),\n    }\n\n    def clean(self, value):\n        super(HRJMBGField, self).clean(value)\n        if value in EMPTY_VALUES:\n            return ''\n\n        value = value.strip()\n\n        matches = jmbg_re.search(value)\n        if matches is None:\n            raise ValidationError(self.error_messages['invalid'])\n\n        # Make sure the date part is correct.\n        dd = int(matches.group('dd'))\n        mm = int(matches.group('mm'))\n        yyy = int(matches.group('yyy'))\n        try:\n            datetime.date(yyy, mm, dd)\n        except ValueError:\n            raise ValidationError(self.error_messages['date'])\n\n        # Validate checksum.\n        k = matches.group('k')\n        checksum = 0\n        for i, j in zip(range(7, 1, -1), range(6)):\n            checksum += i * (int(value[j]) + int(value[13 - i]))\n        m = 11 - checksum % 11\n        if m == 10:\n            raise ValidationError(self.error_messages['invalid'])\n        if m == 11 and k != '0':\n            raise ValidationError(self.error_messages['invalid'])\n        if not str(m) == k:\n            raise ValidationError(self.error_messages['invalid'])\n\n        return '%s' % (value, )\n\n\nclass HROIBField(RegexField):\n    \"\"\"\n    Personal Identification Number of Croatia (OIB) field.\n\n    http://www.oib.hr/\n    \"\"\"\n    default_error_messages = {\n        'invalid': _('Enter a valid 11 digit OIB'),\n    }\n\n    def __init__(self, min_length=11, max_length=11, *args, **kwargs):\n        super(HROIBField, self).__init__(r'^\\d{11}$',\n            min_length, max_length, *args, **kwargs)\n\n    def clean(self, value):\n        super(HROIBField, self).clean(value)\n        if value in EMPTY_VALUES:\n            return ''\n\n        return '%s' % (value, )\n\n\nclass HRLicensePlateField(Field):\n    \"\"\"\n    Vehicle license plate of Croatia field. Normalizes to the specific format\n    below. Suffix is constructed from the shared letters of the Croatian and\n    English alphabets.\n\n    Format examples:\n        SB 123-A\n        (but also supports more characters)\n        ZG 1234-AA\n\n    Used for standardized license plates only.\n    \"\"\"\n    default_error_messages = {\n        'invalid': _('Enter a valid vehicle license plate number'),\n        'area': _('Enter a valid location code'),\n        'number': _('Number part cannot be zero'),\n    }\n\n    def clean(self, value):\n        super(HRLicensePlateField, self).clean(value)\n        if value in EMPTY_VALUES:\n            return ''\n\n        value = re.sub(r'[\\s\\-]+', '', smart_text(value.strip())).upper()\n\n        matches = plate_re.search(value)\n        if matches is None:\n            raise ValidationError(self.error_messages['invalid'])\n\n        # Make sure the prefix is in the list of known codes.\n        prefix = matches.group('prefix')\n        if prefix not in [choice[0] for choice in HR_LICENSE_PLATE_PREFIX_CHOICES]:\n            raise ValidationError(self.error_messages['area'])\n\n        # Make sure the number portion is not zero.\n        number = matches.group('number')\n        if int(number) == 0:\n            raise ValidationError(self.error_messages['number'])\n\n        return '%s %s-%s' % (prefix,number,matches.group('suffix'), )\n\n\nclass HRPostalCodeField(Field):\n    \"\"\"\n    Postal code of Croatia field.\n    It consists of exactly five digits ranging from 10000 to possibly less than\n    60000.\n\n    http://www.posta.hr/main.aspx?id=66\n    \"\"\"\n    default_error_messages = {\n        'invalid': _('Enter a valid 5 digit postal code'),\n    }\n\n    def clean(self, value):\n        super(HRPostalCodeField, self).clean(value)\n        if value in EMPTY_VALUES:\n            return ''\n\n        value = value.strip()\n        if not postal_code_re.search(value):\n            raise ValidationError(self.error_messages['invalid'])\n\n        # Make sure the number is in valid range.\n        if not 9999<int(value)<60000:\n            raise ValidationError(self.error_messages['invalid'])\n\n        return '%s' % (value, )\n\n\nclass HRPhoneNumberField(Field):\n    \"\"\"\n    Phone number of Croatia field.\n    Format: Complete country code or leading zero, area code prefix, 6 or 7\n    digit number.\n    Validates fixed, mobile and FGSM numbers. Normalizes to a full number with\n    country code (+385 prefix).\n    \"\"\"\n    default_error_messages = {\n        'invalid': _('Enter a valid phone number'),\n        'area': _('Enter a valid area or mobile network code'),\n        'number': _('The phone nubmer is too long'),\n    }\n\n    def clean(self, value):\n        super(HRPhoneNumberField, self).clean(value)\n        if value in EMPTY_VALUES:\n            return ''\n\n        value = re.sub(r'[\\-\\s\\(\\)]', '', smart_text(value))\n\n        matches = phone_re.search(value)\n        if matches is None:\n            raise ValidationError(self.error_messages['invalid'])\n\n        # Make sure the prefix is in the list of known codes.\n        prefix = matches.group('prefix')\n        number = matches.group('number')\n        if prefix[0] == '1':\n            number = prefix[1] + number\n            prefix = prefix[0]\n        if prefix not in [choice[0] for choice in HR_PHONE_NUMBER_PREFIX_CHOICES]:\n            raise ValidationError(self.error_messages['area'])\n\n        # Make sure the number is of adequate length.\n        if prefix=='1' and len(number)!=7:\n            raise ValidationError(self.error_messages['number'])\n\n        return '%s%s%s' % ('+385',prefix,number)\n\n\nclass HRJMBAGField(Field):\n    \"\"\"\n    Unique Master Academic Citizen Number of Croatia (JMBAG) field.\n    This number is used by college students and professors in Croatia.\n\n    http://www.cap.srce.hr/IzgledX.aspx\n    \"\"\"\n    default_error_messages = {\n        'invalid': _('Enter a valid 19 digit JMBAG starting with 601983'),\n        'copy': _('Card issue number cannot be zero'),\n    }\n\n    def clean(self, value):\n        super(HRJMBAGField, self).clean(value)\n        if value in EMPTY_VALUES:\n            return ''\n\n        value = re.sub(r'[\\-\\s]', '', value.strip())\n\n        matches = jmbag_re.search(value)\n        if matches is None:\n            raise ValidationError(self.error_messages['invalid'])\n\n        # Make sure the issue number is not zero.\n        if matches.group('copy')=='0':\n            raise ValidationError(self.error_messages['copy'])\n\n        # Validate checksum using Luhn algorithm.\n        num = [int(x) for x in value]\n        if not sum(num[::-2] + [sum(divmod(d * 2, 10)) for d in num[-2::-2]]) % 10 == 0:\n            raise ValidationError(self.error_messages['invalid'])\n\n        return '%s' % (value, )\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/hr/hr_choices.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nSources:\n    Croatian Counties: http://en.wikipedia.org/wiki/ISO_3166-2:HR\n\n    Croatia doesn't have official abbreviations for counties.\n    The ones provided are in common use.\n\"\"\"\nfrom __future__ import unicode_literals\n\nfrom django.utils.translation import ugettext_lazy as _\n\nHR_COUNTY_CHOICES = (\n    ('GZG', _('Grad Zagreb')),\n    ('BBŽ', _('Bjelovarsko-bilogorska županija')),\n    ('BPŽ', _('Brodsko-posavska županija')),\n    ('DNŽ', _('Dubrovačko-neretvanska županija')),\n    ('IŽ', _('Istarska županija')),\n    ('KŽ', _('Karlovačka županija')),\n    ('KKŽ', _('Koprivničko-križevačka županija')),\n    ('KZŽ', _('Krapinsko-zagorska županija')),\n    ('LSŽ', _('Ličko-senjska županija')),\n    ('MŽ', _('Međimurska županija')),\n    ('OBŽ', _('Osječko-baranjska županija')),\n    ('PSŽ', _('Požeško-slavonska županija')),\n    ('PGŽ', _('Primorsko-goranska županija')),\n    ('SMŽ', _('Sisačko-moslavačka županija')),\n    ('SDŽ', _('Splitsko-dalmatinska županija')),\n    ('ŠKŽ', _('Šibensko-kninska županija')),\n    ('VŽ', _('Varaždinska županija')),\n    ('VPŽ', _('Virovitičko-podravska županija')),\n    ('VSŽ', _('Vukovarsko-srijemska županija')),\n    ('ZDŽ', _('Zadarska županija')),\n    ('ZGŽ', _('Zagrebačka županija')),\n)\n\n\"\"\"\nSources:\nhttp://hr.wikipedia.org/wiki/Dodatak:Popis_registracijskih_oznaka_za_cestovna_vozila_u_Hrvatskoj\n\nOnly common license plate prefixes are provided. Special cases and obsolete prefixes are omitted.\n\"\"\"\n\nHR_LICENSE_PLATE_PREFIX_CHOICES = (\n    ('BJ', 'BJ'),\n    ('BM', 'BM'),\n    ('ČK', 'ČK'),\n    ('DA', 'DA'),\n    ('DE', 'DE'),\n    ('DJ', 'DJ'),\n    ('DU', 'DU'),\n    ('GS', 'GS'),\n    ('IM', 'IM'),\n    ('KA', 'KA'),\n    ('KC', 'KC'),\n    ('KR', 'KR'),\n    ('KT', 'KT'),\n    ('KŽ', 'KŽ'),\n    ('MA', 'MA'),\n    ('NA', 'NA'),\n    ('NG', 'NG'),\n    ('OG', 'OG'),\n    ('OS', 'OS'),\n    ('PU', 'PU'),\n    ('PŽ', 'PŽ'),\n    ('RI', 'RI'),\n    ('SB', 'SB'),\n    ('SK', 'SK'),\n    ('SL', 'SL'),\n    ('ST', 'ST'),\n    ('ŠI', 'ŠI'),\n    ('VK', 'VK'),\n    ('VT', 'VT'),\n    ('VU', 'VU'),\n    ('VŽ', 'VŽ'),\n    ('ZD', 'ZD'),\n    ('ZG', 'ZG'),\n    ('ŽU', 'ŽU'),\n)\n\n\"\"\"\nThe list includes county and cellular network phone number prefixes.\n\"\"\"\n\nHR_PHONE_NUMBER_PREFIX_CHOICES = (\n    ('1', '01'),\n    ('20', '020'),\n    ('21', '021'),\n    ('22', '022'),\n    ('23', '023'),\n    ('31', '031'),\n    ('32', '032'),\n    ('33', '033'),\n    ('34', '034'),\n    ('35', '035'),\n    ('40', '040'),\n    ('42', '042'),\n    ('43', '043'),\n    ('44', '044'),\n    ('47', '047'),\n    ('48', '048'),\n    ('49', '049'),\n    ('51', '051'),\n    ('52', '052'),\n    ('53', '053'),\n    ('91', '091'),\n    ('92', '092'),\n    ('95', '095'),\n    ('97', '097'),\n    ('98', '098'),\n    ('99', '099'),\n)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/id/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/id/forms.py",
    "content": "\"\"\"\nID-specific Form helpers\n\"\"\"\n\nfrom __future__ import absolute_import, unicode_literals\n\nimport re\nimport time\n\nfrom django.core.validators import EMPTY_VALUES\nfrom django.forms import ValidationError\nfrom django.forms.fields import Field, Select\nfrom django.utils.translation import ugettext_lazy as _\nfrom django.utils.encoding import smart_text\n\n\npostcode_re = re.compile(r'^[1-9]\\d{4}$')\nphone_re = re.compile(r'^(\\+62|0)[2-9]\\d{7,10}$')\nplate_re = re.compile(r'^(?P<prefix>[A-Z]{1,2}) ' + \\\n            r'(?P<number>\\d{1,5})( (?P<suffix>([A-Z]{1,3}|[1-9][0-9]{,2})))?$')\nnik_re = re.compile(r'^\\d{16}$')\n\n\nclass IDPostCodeField(Field):\n    \"\"\"\n    An Indonesian post code field.\n\n    http://id.wikipedia.org/wiki/Kode_pos\n    \"\"\"\n    default_error_messages = {\n        'invalid': _('Enter a valid post code'),\n    }\n\n    def clean(self, value):\n        super(IDPostCodeField, self).clean(value)\n        if value in EMPTY_VALUES:\n            return ''\n\n        value = value.strip()\n        if not postcode_re.search(value):\n            raise ValidationError(self.error_messages['invalid'])\n\n        if int(value) < 10110:\n            raise ValidationError(self.error_messages['invalid'])\n\n        # 1xxx0\n        if value[0] == '1' and value[4] != '0':\n            raise ValidationError(self.error_messages['invalid'])\n\n        return '%s' % (value, )\n\n\nclass IDProvinceSelect(Select):\n    \"\"\"\n    A Select widget that uses a list of provinces of Indonesia as its\n    choices.\n    \"\"\"\n\n    def __init__(self, attrs=None):\n        # Load data in memory only when it is required, see also #17275\n        from django.contrib.localflavor.id.id_choices import PROVINCE_CHOICES\n        super(IDProvinceSelect, self).__init__(attrs, choices=PROVINCE_CHOICES)\n\n\nclass IDPhoneNumberField(Field):\n    \"\"\"\n    An Indonesian telephone number field.\n\n    http://id.wikipedia.org/wiki/Daftar_kode_telepon_di_Indonesia\n    \"\"\"\n    default_error_messages = {\n        'invalid': _('Enter a valid phone number'),\n    }\n\n    def clean(self, value):\n        super(IDPhoneNumberField, self).clean(value)\n        if value in EMPTY_VALUES:\n            return ''\n\n        phone_number = re.sub(r'[\\-\\s\\(\\)]', '', smart_text(value))\n\n        if phone_re.search(phone_number):\n            return smart_text(value)\n\n        raise ValidationError(self.error_messages['invalid'])\n\n\nclass IDLicensePlatePrefixSelect(Select):\n    \"\"\"\n    A Select widget that uses a list of vehicle license plate prefix code\n    of Indonesia as its choices.\n\n    http://id.wikipedia.org/wiki/Tanda_Nomor_Kendaraan_Bermotor\n    \"\"\"\n\n    def __init__(self, attrs=None):\n        # Load data in memory only when it is required, see also #17275\n        from django.contrib.localflavor.id.id_choices import LICENSE_PLATE_PREFIX_CHOICES\n        super(IDLicensePlatePrefixSelect, self).__init__(attrs,\n            choices=LICENSE_PLATE_PREFIX_CHOICES)\n\n\nclass IDLicensePlateField(Field):\n    \"\"\"\n    An Indonesian vehicle license plate field.\n\n    http://id.wikipedia.org/wiki/Tanda_Nomor_Kendaraan_Bermotor\n\n    Plus: \"B 12345 12\"\n    \"\"\"\n    default_error_messages = {\n        'invalid': _('Enter a valid vehicle license plate number'),\n    }\n\n    def clean(self, value):\n        # Load data in memory only when it is required, see also #17275\n        from django.contrib.localflavor.id.id_choices import LICENSE_PLATE_PREFIX_CHOICES\n        super(IDLicensePlateField, self).clean(value)\n        if value in EMPTY_VALUES:\n            return ''\n\n        plate_number = re.sub(r'\\s+', ' ',\n            smart_text(value.strip())).upper()\n\n        matches = plate_re.search(plate_number)\n        if matches is None:\n            raise ValidationError(self.error_messages['invalid'])\n\n        # Make sure prefix is in the list of known codes.\n        prefix = matches.group('prefix')\n        if prefix not in [choice[0] for choice in LICENSE_PLATE_PREFIX_CHOICES]:\n            raise ValidationError(self.error_messages['invalid'])\n\n        # Only Jakarta (prefix B) can have 3 letter suffix.\n        suffix = matches.group('suffix')\n        if suffix is not None and len(suffix) == 3 and prefix != 'B':\n            raise ValidationError(self.error_messages['invalid'])\n\n        # RI plates don't have suffix.\n        if prefix == 'RI' and suffix is not None and suffix != '':\n            raise ValidationError(self.error_messages['invalid'])\n\n        # Number can't be zero.\n        number = matches.group('number')\n        if number == '0':\n            raise ValidationError(self.error_messages['invalid'])\n\n        # CD, CC and B 12345 12\n        if len(number) == 5 or prefix in ('CD', 'CC'):\n            # suffix must be numeric and non-empty\n            if re.match(r'^\\d+$', suffix) is None:\n                raise ValidationError(self.error_messages['invalid'])\n\n            # Known codes range is 12-124\n            if prefix in ('CD', 'CC') and not (12 <= int(number) <= 124):\n                raise ValidationError(self.error_messages['invalid'])\n            if len(number) == 5 and not (12 <= int(suffix) <= 124):\n                raise ValidationError(self.error_messages['invalid'])\n        else:\n            # suffix must be non-numeric\n            if suffix is not None and re.match(r'^[A-Z]{,3}$', suffix) is None:\n                raise ValidationError(self.error_messages['invalid'])\n\n        return plate_number\n\n\nclass IDNationalIdentityNumberField(Field):\n    \"\"\"\n    An Indonesian national identity number (NIK/KTP#) field.\n\n    http://id.wikipedia.org/wiki/Nomor_Induk_Kependudukan\n\n    xx.xxxx.ddmmyy.xxxx - 16 digits (excl. dots)\n    \"\"\"\n    default_error_messages = {\n        'invalid': _('Enter a valid NIK/KTP number'),\n    }\n\n    def clean(self, value):\n        super(IDNationalIdentityNumberField, self).clean(value)\n        if value in EMPTY_VALUES:\n            return ''\n\n        value = re.sub(r'[\\s.]', '', smart_text(value))\n\n        if not nik_re.search(value):\n            raise ValidationError(self.error_messages['invalid'])\n\n        if int(value) == 0:\n            raise ValidationError(self.error_messages['invalid'])\n\n        def valid_nik_date(year, month, day):\n            try:\n                t1 = (int(year), int(month), int(day), 0, 0, 0, 0, 0, -1)\n                d = time.mktime(t1)\n                t2 = time.localtime(d)\n                if t1[:3] != t2[:3]:\n                    return False\n                else:\n                    return True\n            except (OverflowError, ValueError):\n                return False\n\n        year = int(value[10:12])\n        month = int(value[8:10])\n        day = int(value[6:8])\n        current_year = time.localtime().tm_year\n        if year < int(str(current_year)[-2:]):\n            if not valid_nik_date(2000 + int(year), month, day):\n                raise ValidationError(self.error_messages['invalid'])\n        elif not valid_nik_date(1900 + int(year), month, day):\n            raise ValidationError(self.error_messages['invalid'])\n\n        if value[:6] == '000000' or value[12:] == '0000':\n            raise ValidationError(self.error_messages['invalid'])\n\n        return '%s.%s.%s.%s' % (value[:2], value[2:6], value[6:12], value[12:])\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/id/id_choices.py",
    "content": "import warnings\nfrom django.utils.translation import ugettext_lazy as _\n\n# Reference: http://id.wikipedia.org/wiki/Daftar_provinsi_Indonesia\n\n# Indonesia does not have an official Province code standard.\n# I decided to use unambiguous and consistent (some are common) 3-letter codes.\n\nwarnings.warn(\n    'There have been recent changes to the ID localflavor. See the release notes for details',\n    RuntimeWarning\n)\n\nPROVINCE_CHOICES = (\n    ('ACE', _('Aceh')),\n    ('BLI', _('Bali')),\n    ('BTN', _('Banten')),\n    ('BKL', _('Bengkulu')),\n    ('DIY', _('Yogyakarta')),\n    ('JKT', _('Jakarta')),\n    ('GOR', _('Gorontalo')),\n    ('JMB', _('Jambi')),\n    ('JBR', _('Jawa Barat')),\n    ('JTG', _('Jawa Tengah')),\n    ('JTM', _('Jawa Timur')),\n    ('KBR', _('Kalimantan Barat')),\n    ('KSL', _('Kalimantan Selatan')),\n    ('KTG', _('Kalimantan Tengah')),\n    ('KTM', _('Kalimantan Timur')),\n    ('BBL', _('Kepulauan Bangka-Belitung')),\n    ('KRI', _('Kepulauan Riau')),\n    ('LPG', _('Lampung')),\n    ('MLK', _('Maluku')),\n    ('MUT', _('Maluku Utara')),\n    ('NTB', _('Nusa Tenggara Barat')),\n    ('NTT', _('Nusa Tenggara Timur')),\n    ('PPA', _('Papua')),\n    ('PPB', _('Papua Barat')),\n    ('RIU', _('Riau')),\n    ('SLB', _('Sulawesi Barat')),\n    ('SLS', _('Sulawesi Selatan')),\n    ('SLT', _('Sulawesi Tengah')),\n    ('SLR', _('Sulawesi Tenggara')),\n    ('SLU', _('Sulawesi Utara')),\n    ('SMB', _('Sumatera Barat')),\n    ('SMS', _('Sumatera Selatan')),\n    ('SMU', _('Sumatera Utara')),\n)\n\nLICENSE_PLATE_PREFIX_CHOICES = (\n    ('A', _('Banten')),\n    ('AA', _('Magelang')),\n    ('AB', _('Yogyakarta')),\n    ('AD', _('Surakarta - Solo')),\n    ('AE', _('Madiun')),\n    ('AG', _('Kediri')),\n    ('B', _('Jakarta')),\n    ('BA', _('Sumatera Barat')),\n    ('BB', _('Tapanuli')),\n    ('BD', _('Bengkulu')),\n    ('BE', _('Lampung')),\n    ('BG', _('Sumatera Selatan')),\n    ('BH', _('Jambi')),\n    ('BK', _('Sumatera Utara')),\n    ('BL', _('Nanggroe Aceh Darussalam')),\n    ('BM', _('Riau')),\n    ('BN', _('Kepulauan Bangka Belitung')),\n    ('BP', _('Kepulauan Riau')),\n    ('CC', _('Corps Consulate')),\n    ('CD', _('Corps Diplomatic')),\n    ('D', _('Bandung')),\n    ('DA', _('Kalimantan Selatan')),\n    ('DB', _('Sulawesi Utara Daratan')),\n    ('DC', _('Sulawesi Barat')),\n    ('DD', _('Sulawesi Selatan')),\n    ('DE', _('Maluku')),\n    ('DG', _('Maluku Utara')),\n    ('DH', _('NTT - Timor')),\n    ('DK', _('Bali')),\n    ('DL', _('Sulawesi Utara Kepulauan')),\n    ('DM', _('Gorontalo')),\n    ('DN', _('Sulawesi Tengah')),\n    ('DR', _('NTB - Lombok')),\n    ('DS', _('Papua dan Papua Barat')),\n    ('DT', _('Sulawesi Tenggara')),\n    ('E', _('Cirebon')),\n    ('EA', _('NTB - Sumbawa')),\n    ('EB', _('NTT - Flores')),\n    ('ED', _('NTT - Sumba')),\n    ('F', _('Bogor')),\n    ('G', _('Pekalongan')),\n    ('H', _('Semarang')),\n    ('K', _('Pati')),\n    ('KB', _('Kalimantan Barat')),\n    ('KH', _('Kalimantan Tengah')),\n    ('KT', _('Kalimantan Timur')),\n    ('L', _('Surabaya')),\n    ('M', _('Madura')),\n    ('N', _('Malang')),\n    ('P', _('Jember')),\n    ('R', _('Banyumas')),\n    ('RI', _('Federal Government')),\n    ('S', _('Bojonegoro')),\n    ('T', _('Purwakarta')),\n    ('W', _('Sidoarjo')),\n    ('Z', _('Garut')),\n)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/ie/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/ie/forms.py",
    "content": "\"\"\"\nUK-specific Form helpers\n\"\"\"\n\nfrom __future__ import absolute_import\n\nfrom django.contrib.localflavor.ie.ie_counties import IE_COUNTY_CHOICES\nfrom django.forms.fields import Select\n\n\nclass IECountySelect(Select):\n    \"\"\"\n    A Select widget that uses a list of Irish Counties as its choices.\n    \"\"\"\n    def __init__(self, attrs=None):\n        super(IECountySelect, self).__init__(attrs, choices=IE_COUNTY_CHOICES)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/ie/ie_counties.py",
    "content": "\"\"\"\nSources:\n    Irish Counties: http://en.wikipedia.org/wiki/Counties_of_Ireland    \n\"\"\"\nfrom django.utils.translation import ugettext_lazy as _\n\nIE_COUNTY_CHOICES = (\n    ('antrim', _('Antrim')),\n    ('armagh', _('Armagh')),\n    ('carlow', _('Carlow')),\n    ('cavan', _('Cavan')),\n    ('clare', _('Clare')),\n    ('cork', _('Cork')),\n    ('derry', _('Derry')),\n    ('donegal', _('Donegal')),\n    ('down', _('Down')),\n    ('dublin', _('Dublin')),\n    ('fermanagh', _('Fermanagh')),\n    ('galway', _('Galway')),\n    ('kerry', _('Kerry')),\n    ('kildare', _('Kildare')),\n    ('kilkenny', _('Kilkenny')),\n    ('laois', _('Laois')),\n    ('leitrim', _('Leitrim')),\n    ('limerick', _('Limerick')),\n    ('longford', _('Longford')),\n    ('louth', _('Louth')),\n    ('mayo', _('Mayo')),\n    ('meath', _('Meath')),\n    ('monaghan', _('Monaghan')),\n    ('offaly', _('Offaly')),\n    ('roscommon', _('Roscommon')),\n    ('sligo', _('Sligo')),\n    ('tipperary', _('Tipperary')),\n    ('tyrone', _('Tyrone')),\n    ('waterford', _('Waterford')),\n    ('westmeath', _('Westmeath')),\n    ('wexford', _('Wexford')),\n    ('wicklow', _('Wicklow')),\n)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/il/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/il/forms.py",
    "content": "\"\"\"\nIsraeli-specific form helpers\n\"\"\"\nfrom __future__ import unicode_literals\nimport re\n\nfrom django.core.exceptions import ValidationError\nfrom django.core.validators import EMPTY_VALUES\nfrom django.forms.fields import RegexField, Field, EMPTY_VALUES\nfrom django.utils.checksums import luhn\nfrom django.utils.translation import ugettext_lazy as _\n\n# Israeli ID numbers consist of up to 8 digits followed by a checksum digit.\n# Numbers which are shorter than 8 digits are effectively left-zero-padded.\n# The checksum digit is occasionally separated from the number by a hyphen,\n# and is calculated using the luhn algorithm.\n#\n# Relevant references:\n#\n# (hebrew) http://he.wikipedia.org/wiki/%D7%9E%D7%A1%D7%A4%D7%A8_%D7%96%D7%94%D7%95%D7%AA_(%D7%99%D7%A9%D7%A8%D7%90%D7%9C)\n# (hebrew) http://he.wikipedia.org/wiki/%D7%A1%D7%A4%D7%A8%D7%AA_%D7%91%D7%99%D7%A7%D7%95%D7%A8%D7%AA\n\nid_number_re = re.compile(r'^(?P<number>\\d{1,8})-?(?P<check>\\d)$')\n\nclass ILPostalCodeField(RegexField):\n    \"\"\"\n    A form field that validates its input as an Israeli postal code.\n    Valid form is XXXXX where X represents integer.\n    \"\"\"\n\n    default_error_messages = {\n        'invalid': _('Enter a postal code in the format XXXXX'),\n    }\n\n    def __init__(self, *args, **kwargs):\n        super(ILPostalCodeField, self).__init__(r'^\\d{5}$', *args, **kwargs)\n\n    def clean(self, value):\n        if value not in EMPTY_VALUES:\n            value = value.replace(\" \", \"\")\n        return super(ILPostalCodeField, self).clean(value)\n\n\nclass ILIDNumberField(Field):\n    \"\"\"\n    A form field that validates its input as an Israeli identification number.\n    Valid form is per the Israeli ID specification.\n    \"\"\"\n\n    default_error_messages = {\n        'invalid': _('Enter a valid ID number.'),\n    }\n\n    def clean(self, value):\n        value = super(ILIDNumberField, self).clean(value)\n\n        if value in EMPTY_VALUES:\n            return ''\n\n        match = id_number_re.match(value)\n        if not match:\n            raise ValidationError(self.error_messages['invalid'])\n\n        value = match.group('number') + match.group('check')\n        if not luhn(value):\n            raise ValidationError(self.error_messages['invalid'])\n        return value\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/in_/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/in_/forms.py",
    "content": "\"\"\"\nIndia-specific Form helpers.\n\"\"\"\n\nfrom __future__ import absolute_import, unicode_literals\n\nimport re\n\nfrom django.contrib.localflavor.in_.in_states import STATES_NORMALIZED, STATE_CHOICES\nfrom django.core.validators import EMPTY_VALUES\nfrom django.forms import ValidationError\nfrom django.forms.fields import Field, RegexField, CharField, Select\nfrom django.utils.encoding import smart_text\nfrom django.utils.translation import ugettext_lazy as _\n\n\nphone_digits_re = re.compile(r\"\"\"\n(\n    (?P<std_code>                   # the std-code group\n        ^0                          # all std-codes start with 0\n        (\n            (?P<twodigit>\\d{2})   | # either two, three or four digits\n            (?P<threedigit>\\d{3}) | # following the 0\n            (?P<fourdigit>\\d{4})\n        )\n    )\n    [-\\s]                           # space or -\n    (?P<phone_no>                   # the phone number group\n        [1-6]                       # first digit of phone number\n        (\n            (?(twodigit)\\d{7})   |  # 7 more phone digits for 3 digit stdcode\n            (?(threedigit)\\d{6}) |  # 6 more phone digits for 4 digit stdcode\n            (?(fourdigit)\\d{5})     # 5 more phone digits for 5 digit stdcode\n        )\n    )\n)$\"\"\", re.VERBOSE)\n\n\nclass INZipCodeField(RegexField):\n    default_error_messages = {\n        'invalid': _('Enter a zip code in the format XXXXXX or XXX XXX.'),\n    }\n\n    def __init__(self, max_length=None, min_length=None, *args, **kwargs):\n        super(INZipCodeField, self).__init__(r'^\\d{3}\\s?\\d{3}$',\n            max_length, min_length, *args, **kwargs)\n\n    def clean(self, value):\n        super(INZipCodeField, self).clean(value)\n        if value in EMPTY_VALUES:\n            return ''\n        # Convert to \"NNNNNN\" if \"NNN NNN\" given\n        value = re.sub(r'^(\\d{3})\\s(\\d{3})$', r'\\1\\2', value)\n        return value\n\n\nclass INStateField(Field):\n    \"\"\"\n    A form field that validates its input is a Indian state name or\n    abbreviation. It normalizes the input to the standard two-letter vehicle\n    registration abbreviation for the given state or union territory\n    \"\"\"\n    default_error_messages = {\n        'invalid': _('Enter an Indian state or territory.'),\n    }\n\n    def clean(self, value):\n        super(INStateField, self).clean(value)\n        if value in EMPTY_VALUES:\n            return ''\n        try:\n            value = value.strip().lower()\n        except AttributeError:\n            pass\n        else:\n            try:\n                return smart_text(STATES_NORMALIZED[value.strip().lower()])\n            except KeyError:\n                pass\n        raise ValidationError(self.error_messages['invalid'])\n\n\nclass INStateSelect(Select):\n    \"\"\"\n    A Select widget that uses a list of Indian states/territories as its\n    choices.\n    \"\"\"\n    def __init__(self, attrs=None):\n        super(INStateSelect, self).__init__(attrs, choices=STATE_CHOICES)\n\n\nclass INPhoneNumberField(CharField):\n    \"\"\"\n    INPhoneNumberField validates that the data is a valid Indian phone number,\n    including the STD code. It's normalised to 0XXX-XXXXXXX or 0XXX XXXXXXX\n    format. The first string is the STD code which is a '0' followed by 2-4\n    digits. The second string is 8 digits if the STD code is 3 digits, 7\n    digits if the STD code is 4 digits and 6 digits if the STD code is 5\n    digits. The second string will start with numbers between 1 and 6. The\n    separator is either a space or a hyphen.\n    \"\"\"\n    default_error_messages = {\n        'invalid': _('Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.'),\n    }\n\n    def clean(self, value):\n        super(INPhoneNumberField, self).clean(value)\n        if value in EMPTY_VALUES:\n            return ''\n        value = smart_text(value)\n        m = phone_digits_re.match(value)\n        if m:\n            return '%s' % (value)\n        raise ValidationError(self.error_messages['invalid'])\n\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/in_/in_states.py",
    "content": "\"\"\"\nA mapping of state misspellings/abbreviations to normalized abbreviations, and\nan alphabetical list of states for use as `choices` in a formfield.\n\nThis exists in this standalone file so that it's only imported into memory\nwhen explicitly needed.\n\"\"\"\n\nSTATE_CHOICES = (\n    ('KA', 'Karnataka'),\n    ('AP', 'Andhra Pradesh'),\n    ('KL', 'Kerala'),\n    ('TN', 'Tamil Nadu'),\n    ('MH', 'Maharashtra'),\n    ('UP', 'Uttar Pradesh'),\n    ('GA', 'Goa'),\n    ('GJ', 'Gujarat'),\n    ('RJ', 'Rajasthan'),\n    ('HP', 'Himachal Pradesh'),\n    ('JK', 'Jammu and Kashmir'),\n    ('AR', 'Arunachal Pradesh'),\n    ('AS', 'Assam'),\n    ('BR', 'Bihar'),\n    ('CG', 'Chattisgarh'),\n    ('HR', 'Haryana'),\n    ('JH', 'Jharkhand'),\n    ('MP', 'Madhya Pradesh'),\n    ('MN', 'Manipur'),\n    ('ML', 'Meghalaya'),\n    ('MZ', 'Mizoram'),\n    ('NL', 'Nagaland'),\n    ('OR', 'Orissa'),\n    ('PB', 'Punjab'),\n    ('SK', 'Sikkim'),\n    ('TR', 'Tripura'),\n    ('UA', 'Uttarakhand'),\n    ('WB', 'West Bengal'),\n\n    # Union Territories\n    ('AN', 'Andaman and Nicobar'),\n    ('CH', 'Chandigarh'),\n    ('DN', 'Dadra and Nagar Haveli'),\n    ('DD', 'Daman and Diu'),\n    ('DL', 'Delhi'),\n    ('LD', 'Lakshadweep'),\n    ('PY', 'Pondicherry'),\n)\n\nSTATES_NORMALIZED = {\n    'an': 'AN',\n    'andaman and nicobar': 'AN',\n    'andra pradesh': 'AP',\n    'andrapradesh': 'AP',\n    'andhrapradesh': 'AP',\n    'ap': 'AP',\n    'andhra pradesh': 'AP',\n    'ar': 'AR',\n    'arunachal pradesh': 'AR',\n    'assam': 'AS',\n    'as': 'AS',\n    'bihar': 'BR',\n    'br': 'BR',\n    'cg': 'CG',\n    'chattisgarh': 'CG',\n    'ch': 'CH',\n    'chandigarh': 'CH',\n    'daman and diu': 'DD',\n    'dd': 'DD',\n    'dl': 'DL',\n    'delhi': 'DL',\n    'dn': 'DN',\n    'dadra and nagar haveli': 'DN',\n    'ga': 'GA',\n    'goa': 'GA',\n    'gj': 'GJ',\n    'gujarat': 'GJ',\n    'himachal pradesh': 'HP',\n    'hp': 'HP',\n    'hr': 'HR',\n    'haryana': 'HR',\n    'jharkhand': 'JH',\n    'jh': 'JH',\n    'jammu and kashmir': 'JK',\n    'jk': 'JK',\n    'karnataka': 'KA',\n    'karnatka': 'KA',\n    'ka': 'KA',\n    'kerala': 'KL',\n    'kl': 'KL',\n    'ld': 'LD',\n    'lakshadweep': 'LD',\n    'maharastra': 'MH',\n    'mh': 'MH',\n    'maharashtra': 'MH',\n    'meghalaya': 'ML',\n    'ml': 'ML',\n    'mn': 'MN',\n    'manipur': 'MN',\n    'madhya pradesh': 'MP',\n    'mp': 'MP',\n    'mizoram': 'MZ',\n    'mizo': 'MZ',\n    'mz': 'MZ',\n    'nl': 'NL',\n    'nagaland': 'NL',\n    'orissa': 'OR',\n    'odisa': 'OR',\n    'orisa': 'OR',\n    'or': 'OR',\n    'pb': 'PB',\n    'punjab': 'PB',\n    'py': 'PY',\n    'pondicherry': 'PY',\n    'rajasthan': 'RJ',\n    'rajastan': 'RJ',\n    'rj': 'RJ',\n    'sikkim': 'SK',\n    'sk': 'SK',\n    'tamil nadu': 'TN',\n    'tn': 'TN',\n    'tamilnadu': 'TN',\n    'tamilnad': 'TN',\n    'tr': 'TR',\n    'tripura': 'TR',\n    'ua': 'UA',\n    'uttarakhand': 'UA',\n    'up': 'UP',\n    'uttar pradesh': 'UP',\n    'westbengal': 'WB',\n    'bengal': 'WB',\n    'wb': 'WB',\n    'west bengal': 'WB'\n}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/is_/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/is_/forms.py",
    "content": "\"\"\"\nIceland specific form helpers.\n\"\"\"\n\nfrom __future__ import absolute_import, unicode_literals\n\nfrom django.contrib.localflavor.is_.is_postalcodes import IS_POSTALCODES\nfrom django.core.validators import EMPTY_VALUES\nfrom django.forms import ValidationError\nfrom django.forms.fields import RegexField\nfrom django.forms.widgets import Select\nfrom django.utils.encoding import smart_text\nfrom django.utils.translation import ugettext_lazy as _\n\n\nclass ISIdNumberField(RegexField):\n    \"\"\"\n    Icelandic identification number (kennitala). This is a number every citizen\n    of Iceland has.\n    \"\"\"\n    default_error_messages = {\n        'invalid': _('Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.'),\n        'checksum': _('The Icelandic identification number is not valid.'),\n    }\n\n    def __init__(self, max_length=11, min_length=10, *args, **kwargs):\n        super(ISIdNumberField, self).__init__(r'^\\d{6}(-| )?\\d{4}$',\n            max_length, min_length, *args, **kwargs)\n\n    def clean(self, value):\n        value = super(ISIdNumberField, self).clean(value)\n\n        if value in EMPTY_VALUES:\n            return ''\n\n        value = self._canonify(value)\n        if self._validate(value):\n            return self._format(value)\n        else:\n            raise ValidationError(self.error_messages['checksum'])\n\n    def _canonify(self, value):\n        \"\"\"\n        Returns the value as only digits.\n        \"\"\"\n        return value.replace('-', '').replace(' ', '')\n\n    def _validate(self, value):\n        \"\"\"\n        Takes in the value in canonical form and checks the verifier digit. The\n        method is modulo 11.\n        \"\"\"\n        check = [3, 2, 7, 6, 5, 4, 3, 2, 1, 0]\n        return sum([int(value[i]) * check[i] for i in range(10)]) % 11 == 0\n\n    def _format(self, value):\n        \"\"\"\n        Takes in the value in canonical form and returns it in the common\n        display format.\n        \"\"\"\n        return smart_text(value[:6]+'-'+value[6:])\n\nclass ISPhoneNumberField(RegexField):\n    \"\"\"\n    Icelandic phone number. Seven digits with an optional hyphen or space after\n    the first three digits.\n    \"\"\"\n    def __init__(self, max_length=8, min_length=7, *args, **kwargs):\n        super(ISPhoneNumberField, self).__init__(r'^\\d{3}(-| )?\\d{4}$',\n            max_length, min_length, *args, **kwargs)\n\n    def clean(self, value):\n        value = super(ISPhoneNumberField, self).clean(value)\n\n        if value in EMPTY_VALUES:\n            return ''\n\n        return value.replace('-', '').replace(' ', '')\n\nclass ISPostalCodeSelect(Select):\n    \"\"\"\n    A Select widget that uses a list of Icelandic postal codes as its choices.\n    \"\"\"\n    def __init__(self, attrs=None):\n        super(ISPostalCodeSelect, self).__init__(attrs, choices=IS_POSTALCODES)\n\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/is_/is_postalcodes.py",
    "content": "# -*- coding: utf-8 -*-\nfrom __future__ import unicode_literals\n\nIS_POSTALCODES = (\n    ('101', '101 Reykjavík'),\n    ('103', '103 Reykjavík'),\n    ('104', '104 Reykjavík'),\n    ('105', '105 Reykjavík'),\n    ('107', '107 Reykjavík'),\n    ('108', '108 Reykjavík'),\n    ('109', '109 Reykjavík'),\n    ('110', '110 Reykjavík'),\n    ('111', '111 Reykjavík'),\n    ('112', '112 Reykjavík'),\n    ('113', '113 Reykjavík'),\n    ('116', '116 Kjalarnes'),\n    ('121', '121 Reykjavík'),\n    ('123', '123 Reykjavík'),\n    ('124', '124 Reykjavík'),\n    ('125', '125 Reykjavík'),\n    ('127', '127 Reykjavík'),\n    ('128', '128 Reykjavík'),\n    ('129', '129 Reykjavík'),\n    ('130', '130 Reykjavík'),\n    ('132', '132 Reykjavík'),\n    ('150', '150 Reykjavík'),\n    ('155', '155 Reykjavík'),\n    ('170', '170 Seltjarnarnes'),\n    ('172', '172 Seltjarnarnes'),\n    ('190', '190 Vogar'),\n    ('200', '200 Kópavogur'),\n    ('201', '201 Kópavogur'),\n    ('202', '202 Kópavogur'),\n    ('203', '203 Kópavogur'),\n    ('210', '210 Garðabær'),\n    ('212', '212 Garðabær'),\n    ('220', '220 Hafnarfjörður'),\n    ('221', '221 Hafnarfjörður'),\n    ('222', '222 Hafnarfjörður'),\n    ('225', '225 Álftanes'),\n    ('230', '230 Reykjanesbær'),\n    ('232', '232 Reykjanesbær'),\n    ('233', '233 Reykjanesbær'),\n    ('235', '235 Keflavíkurflugvöllur'),\n    ('240', '240 Grindavík'),\n    ('245', '245 Sandgerði'),\n    ('250', '250 Garður'),\n    ('260', '260 Reykjanesbær'),\n    ('270', '270 Mosfellsbær'),\n    ('300', '300 Akranes'),\n    ('301', '301 Akranes'),\n    ('302', '302 Akranes'),\n    ('310', '310 Borgarnes'),\n    ('311', '311 Borgarnes'),\n    ('320', '320 Reykholt í Borgarfirði'),\n    ('340', '340 Stykkishólmur'),\n    ('345', '345 Flatey á Breiðafirði'),\n    ('350', '350 Grundarfjörður'),\n    ('355', '355 Ólafsvík'),\n    ('356', '356 Snæfellsbær'),\n    ('360', '360 Hellissandur'),\n    ('370', '370 Búðardalur'),\n    ('371', '371 Búðardalur'),\n    ('380', '380 Reykhólahreppur'),\n    ('400', '400 Ísafjörður'),\n    ('401', '401 Ísafjörður'),\n    ('410', '410 Hnífsdalur'),\n    ('415', '415 Bolungarvík'),\n    ('420', '420 Súðavík'),\n    ('425', '425 Flateyri'),\n    ('430', '430 Suðureyri'),\n    ('450', '450 Patreksfjörður'),\n    ('451', '451 Patreksfjörður'),\n    ('460', '460 Tálknafjörður'),\n    ('465', '465 Bíldudalur'),\n    ('470', '470 Þingeyri'),\n    ('471', '471 Þingeyri'),\n    ('500', '500 Staður'),\n    ('510', '510 Hólmavík'),\n    ('512', '512 Hólmavík'),\n    ('520', '520 Drangsnes'),\n    ('522', '522 Kjörvogur'),\n    ('523', '523 Bær'),\n    ('524', '524 Norðurfjörður'),\n    ('530', '530 Hvammstangi'),\n    ('531', '531 Hvammstangi'),\n    ('540', '540 Blönduós'),\n    ('541', '541 Blönduós'),\n    ('545', '545 Skagaströnd'),\n    ('550', '550 Sauðárkrókur'),\n    ('551', '551 Sauðárkrókur'),\n    ('560', '560 Varmahlíð'),\n    ('565', '565 Hofsós'),\n    ('566', '566 Hofsós'),\n    ('570', '570 Fljót'),\n    ('580', '580 Siglufjörður'),\n    ('600', '600 Akureyri'),\n    ('601', '601 Akureyri'),\n    ('602', '602 Akureyri'),\n    ('603', '603 Akureyri'),\n    ('610', '610 Grenivík'),\n    ('611', '611 Grímsey'),\n    ('620', '620 Dalvík'),\n    ('621', '621 Dalvík'),\n    ('625', '625 Ólafsfjörður'),\n    ('630', '630 Hrísey'),\n    ('640', '640 Húsavík'),\n    ('641', '641 Húsavík'),\n    ('645', '645 Fosshóll'),\n    ('650', '650 Laugar'),\n    ('660', '660 Mývatn'),\n    ('670', '670 Kópasker'),\n    ('671', '671 Kópasker'),\n    ('675', '675 Raufarhöfn'),\n    ('680', '680 Þórshöfn'),\n    ('681', '681 Þórshöfn'),\n    ('685', '685 Bakkafjörður'),\n    ('690', '690 Vopnafjörður'),\n    ('700', '700 Egilsstaðir'),\n    ('701', '701 Egilsstaðir'),\n    ('710', '710 Seyðisfjörður'),\n    ('715', '715 Mjóifjörður'),\n    ('720', '720 Borgarfjörður eystri'),\n    ('730', '730 Reyðarfjörður'),\n    ('735', '735 Eskifjörður'),\n    ('740', '740 Neskaupstaður'),\n    ('750', '750 Fáskrúðsfjörður'),\n    ('755', '755 Stöðvarfjörður'),\n    ('760', '760 Breiðdalsvík'),\n    ('765', '765 Djúpivogur'),\n    ('780', '780 Höfn í Hornafirði'),\n    ('781', '781 Höfn í Hornafirði'),\n    ('785', '785 Öræfi'),\n    ('800', '800 Selfoss'),\n    ('801', '801 Selfoss'),\n    ('802', '802 Selfoss'),\n    ('810', '810 Hveragerði'),\n    ('815', '815 Þorlákshöfn'),\n    ('820', '820 Eyrarbakki'),\n    ('825', '825 Stokkseyri'),\n    ('840', '840 Laugarvatn'),\n    ('845', '845 Flúðir'),\n    ('850', '850 Hella'),\n    ('851', '851 Hella'),\n    ('860', '860 Hvolsvöllur'),\n    ('861', '861 Hvolsvöllur'),\n    ('870', '870 Vík'),\n    ('871', '871 Vík'),\n    ('880', '880 Kirkjubæjarklaustur'),\n    ('900', '900 Vestmannaeyjar'),\n    ('902', '902 Vestmannaeyjar')\n)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/it/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/it/forms.py",
    "content": "\"\"\"\nIT-specific Form helpers\n\"\"\"\n\nfrom __future__ import absolute_import, unicode_literals\n\nimport re\n\nfrom django.contrib.localflavor.it.it_province import PROVINCE_CHOICES\nfrom django.contrib.localflavor.it.it_region import REGION_CHOICES\nfrom django.contrib.localflavor.it.util import ssn_check_digit, vat_number_check_digit\nfrom django.core.validators import EMPTY_VALUES\nfrom django.forms import ValidationError\nfrom django.forms.fields import Field, RegexField, Select\nfrom django.utils.translation import ugettext_lazy as _\nfrom django.utils.encoding import smart_text\n\n\nclass ITZipCodeField(RegexField):\n    default_error_messages = {\n        'invalid': _('Enter a valid zip code.'),\n    }\n    def __init__(self, max_length=None, min_length=None, *args, **kwargs):\n        super(ITZipCodeField, self).__init__(r'^\\d{5}$',\n              max_length, min_length, *args, **kwargs)\n\nclass ITRegionSelect(Select):\n    \"\"\"\n    A Select widget that uses a list of IT regions as its choices.\n    \"\"\"\n    def __init__(self, attrs=None):\n        super(ITRegionSelect, self).__init__(attrs, choices=REGION_CHOICES)\n\nclass ITProvinceSelect(Select):\n    \"\"\"\n    A Select widget that uses a list of IT provinces as its choices.\n    \"\"\"\n    def __init__(self, attrs=None):\n        super(ITProvinceSelect, self).__init__(attrs, choices=PROVINCE_CHOICES)\n\nclass ITSocialSecurityNumberField(RegexField):\n    \"\"\"\n    A form field that validates Italian Social Security numbers (codice fiscale).\n    For reference see http://www.agenziaentrate.it/ and search for\n    'Informazioni sulla codificazione delle persone fisiche'.\n    \"\"\"\n    default_error_messages = {\n        'invalid': _('Enter a valid Social Security number.'),\n    }\n\n    def __init__(self, max_length=None, min_length=None, *args, **kwargs):\n        super(ITSocialSecurityNumberField, self).__init__(r'^\\w{3}\\s*\\w{3}\\s*\\w{5}\\s*\\w{5}$',\n              max_length, min_length, *args, **kwargs)\n\n    def clean(self, value):\n        value = super(ITSocialSecurityNumberField, self).clean(value)\n        if value in EMPTY_VALUES:\n            return ''\n        value = re.sub('\\s', '', value).upper()\n        try:\n            check_digit = ssn_check_digit(value)\n        except ValueError:\n            raise ValidationError(self.error_messages['invalid'])\n        if not value[15] == check_digit:\n            raise ValidationError(self.error_messages['invalid'])\n        return value\n\nclass ITVatNumberField(Field):\n    \"\"\"\n    A form field that validates Italian VAT numbers (partita IVA).\n    \"\"\"\n    default_error_messages = {\n        'invalid': _('Enter a valid VAT number.'),\n    }\n\n    def clean(self, value):\n        value = super(ITVatNumberField, self).clean(value)\n        if value in EMPTY_VALUES:\n            return ''\n        try:\n            vat_number = int(value)\n        except ValueError:\n            raise ValidationError(self.error_messages['invalid'])\n        vat_number = str(vat_number).zfill(11)\n        check_digit = vat_number_check_digit(vat_number[0:10])\n        if not vat_number[10] == check_digit:\n            raise ValidationError(self.error_messages['invalid'])\n        return smart_text(vat_number)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/it/it_province.py",
    "content": "# -*- coding: utf-8 -*\nfrom __future__ import unicode_literals\n\nPROVINCE_CHOICES = (\n    ('AG', 'Agrigento'),\n    ('AL', 'Alessandria'),\n    ('AN', 'Ancona'),\n    ('AO', 'Aosta'),\n    ('AR', 'Arezzo'),\n    ('AP', 'Ascoli Piceno'),\n    ('AT', 'Asti'),\n    ('AV', 'Avellino'),\n    ('BA', 'Bari'),\n    ('BT', 'Barletta-Andria-Trani'), # active starting from 2009\n    ('BL', 'Belluno'),\n    ('BN', 'Benevento'),\n    ('BG', 'Bergamo'),\n    ('BI', 'Biella'),\n    ('BO', 'Bologna'),\n    ('BZ', 'Bolzano/Bozen'),\n    ('BS', 'Brescia'),\n    ('BR', 'Brindisi'),\n    ('CA', 'Cagliari'),\n    ('CL', 'Caltanissetta'),\n    ('CB', 'Campobasso'),\n    ('CI', 'Carbonia-Iglesias'),\n    ('CE', 'Caserta'),\n    ('CT', 'Catania'),\n    ('CZ', 'Catanzaro'),\n    ('CH', 'Chieti'),\n    ('CO', 'Como'),\n    ('CS', 'Cosenza'),\n    ('CR', 'Cremona'),\n    ('KR', 'Crotone'),\n    ('CN', 'Cuneo'),\n    ('EN', 'Enna'),\n    ('FM', 'Fermo'), # active starting from 2009\n    ('FE', 'Ferrara'),\n    ('FI', 'Firenze'),\n    ('FG', 'Foggia'),\n    ('FC', 'Forlì-Cesena'),\n    ('FR', 'Frosinone'),\n    ('GE', 'Genova'),\n    ('GO', 'Gorizia'),\n    ('GR', 'Grosseto'),\n    ('IM', 'Imperia'),\n    ('IS', 'Isernia'),\n    ('SP', 'La Spezia'),\n    ('AQ', 'L’Aquila'),\n    ('LT', 'Latina'),\n    ('LE', 'Lecce'),\n    ('LC', 'Lecco'),\n    ('LI', 'Livorno'),\n    ('LO', 'Lodi'),\n    ('LU', 'Lucca'),\n    ('MC', 'Macerata'),\n    ('MN', 'Mantova'),\n    ('MS', 'Massa-Carrara'),\n    ('MT', 'Matera'),\n    ('VS', 'Medio Campidano'),\n    ('ME', 'Messina'),\n    ('MI', 'Milano'),\n    ('MO', 'Modena'),\n    ('MB', 'Monza e Brianza'), # active starting from 2009\n    ('NA', 'Napoli'),\n    ('NO', 'Novara'),\n    ('NU', 'Nuoro'),\n    ('OG', 'Ogliastra'),\n    ('OT', 'Olbia-Tempio'),\n    ('OR', 'Oristano'),\n    ('PD', 'Padova'),\n    ('PA', 'Palermo'),\n    ('PR', 'Parma'),\n    ('PV', 'Pavia'),\n    ('PG', 'Perugia'),\n    ('PU', 'Pesaro e Urbino'),\n    ('PE', 'Pescara'),\n    ('PC', 'Piacenza'),\n    ('PI', 'Pisa'),\n    ('PT', 'Pistoia'),\n    ('PN', 'Pordenone'),\n    ('PZ', 'Potenza'),\n    ('PO', 'Prato'),\n    ('RG', 'Ragusa'),\n    ('RA', 'Ravenna'),\n    ('RC', 'Reggio Calabria'),\n    ('RE', 'Reggio Emilia'),\n    ('RI', 'Rieti'),\n    ('RN', 'Rimini'),\n    ('RM', 'Roma'),\n    ('RO', 'Rovigo'),\n    ('SA', 'Salerno'),\n    ('SS', 'Sassari'),\n    ('SV', 'Savona'),\n    ('SI', 'Siena'),\n    ('SR', 'Siracusa'),\n    ('SO', 'Sondrio'),\n    ('TA', 'Taranto'),\n    ('TE', 'Teramo'),\n    ('TR', 'Terni'),\n    ('TO', 'Torino'),\n    ('TP', 'Trapani'),\n    ('TN', 'Trento'),\n    ('TV', 'Treviso'),\n    ('TS', 'Trieste'),\n    ('UD', 'Udine'),\n    ('VA', 'Varese'),\n    ('VE', 'Venezia'),\n    ('VB', 'Verbano Cusio Ossola'),\n    ('VC', 'Vercelli'),\n    ('VR', 'Verona'),\n    ('VV', 'Vibo Valentia'),\n    ('VI', 'Vicenza'),\n    ('VT', 'Viterbo'),\n)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/it/it_region.py",
    "content": "# -*- coding: utf-8 -*\nfrom __future__ import unicode_literals\n\nREGION_CHOICES = (\n    ('ABR', 'Abruzzo'),\n    ('BAS', 'Basilicata'),\n    ('CAL', 'Calabria'),\n    ('CAM', 'Campania'),\n    ('EMR', 'Emilia-Romagna'),\n    ('FVG', 'Friuli-Venezia Giulia'),\n    ('LAZ', 'Lazio'),\n    ('LIG', 'Liguria'),\n    ('LOM', 'Lombardia'),\n    ('MAR', 'Marche'),\n    ('MOL', 'Molise'),\n    ('PMN', 'Piemonte'),\n    ('PUG', 'Puglia'),\n    ('SAR', 'Sardegna'),\n    ('SIC', 'Sicilia'),\n    ('TOS', 'Toscana'),\n    ('TAA', 'Trentino-Alto Adige'),\n    ('UMB', 'Umbria'),\n    ('VAO', 'Valle d’Aosta'),\n    ('VEN', 'Veneto'),\n)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/it/util.py",
    "content": "from django.utils.encoding import smart_text\n\ndef ssn_check_digit(value):\n    \"Calculate Italian social security number check digit.\"\n    ssn_even_chars = {\n        '0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8,\n        '9': 9, 'A': 0, 'B': 1, 'C': 2, 'D': 3, 'E': 4, 'F': 5, 'G': 6, 'H': 7,\n        'I': 8, 'J': 9, 'K': 10, 'L': 11, 'M': 12, 'N': 13, 'O': 14, 'P': 15,\n        'Q': 16, 'R': 17, 'S': 18, 'T': 19, 'U': 20, 'V': 21, 'W': 22, 'X': 23,\n        'Y': 24, 'Z': 25\n    }\n    ssn_odd_chars = {\n        '0': 1, '1': 0, '2': 5, '3': 7, '4': 9, '5': 13, '6': 15, '7': 17, '8':\n        19, '9': 21, 'A': 1, 'B': 0, 'C': 5, 'D': 7, 'E': 9, 'F': 13, 'G': 15,\n        'H': 17, 'I': 19, 'J': 21, 'K': 2, 'L': 4, 'M': 18, 'N': 20, 'O': 11,\n        'P': 3, 'Q': 6, 'R': 8, 'S': 12, 'T': 14, 'U': 16, 'V': 10, 'W': 22,\n        'X': 25, 'Y': 24, 'Z': 23\n    }\n    # Chars from 'A' to 'Z'\n    ssn_check_digits = [chr(x) for x in range(65, 91)]\n\n    ssn = value.upper()\n    total = 0\n    for i in range(0, 15):\n        try:\n            if i % 2 == 0:\n                total += ssn_odd_chars[ssn[i]]\n            else:\n                total += ssn_even_chars[ssn[i]]\n        except KeyError:\n            msg = \"Character '%(char)s' is not allowed.\" % {'char': ssn[i]}\n            raise ValueError(msg)\n    return ssn_check_digits[total % 26]\n\ndef vat_number_check_digit(vat_number):\n    \"Calculate Italian VAT number check digit.\"\n    normalized_vat_number = smart_text(vat_number).zfill(10)\n    total = 0\n    for i in range(0, 10, 2):\n        total += int(normalized_vat_number[i])\n    for i in range(1, 11, 2):\n        quotient , remainder = divmod(int(normalized_vat_number[i]) * 2, 10)\n        total += quotient + remainder\n    return smart_text((10 - total % 10) % 10)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/jp/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/jp/forms.py",
    "content": "\"\"\"\nJP-specific Form helpers\n\"\"\"\n\nfrom __future__ import absolute_import\n\nfrom django.contrib.localflavor.jp.jp_prefectures import JP_PREFECTURES\nfrom django.forms.fields import RegexField, Select\nfrom django.utils.translation import ugettext_lazy as _\n\n\nclass JPPostalCodeField(RegexField):\n    \"\"\"\n    A form field that validates its input is a Japanese postcode.\n\n    Accepts 7 digits, with or without a hyphen.\n    \"\"\"\n    default_error_messages = {\n        'invalid': _('Enter a postal code in the format XXXXXXX or XXX-XXXX.'),\n    }\n\n    def __init__(self, max_length=None, min_length=None, *args, **kwargs):\n        super(JPPostalCodeField, self).__init__(r'^\\d{3}-\\d{4}$|^\\d{7}$',\n            max_length, min_length, *args, **kwargs)\n\n    def clean(self, value):\n        \"\"\"\n        Validates the input and returns a string that contains only numbers.\n        Returns an empty string for empty values.\n        \"\"\"\n        v = super(JPPostalCodeField, self).clean(value)\n        return v.replace('-', '')\n\nclass JPPrefectureSelect(Select):\n    \"\"\"\n    A Select widget that uses a list of Japanese prefectures as its choices.\n    \"\"\"\n    def __init__(self, attrs=None):\n        super(JPPrefectureSelect, self).__init__(attrs, choices=JP_PREFECTURES)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/jp/jp_prefectures.py",
    "content": "from django.utils.translation import ugettext_lazy\n\nJP_PREFECTURES = (\n    ('hokkaido', ugettext_lazy('Hokkaido'),),\n    ('aomori', ugettext_lazy('Aomori'),),\n    ('iwate', ugettext_lazy('Iwate'),),\n    ('miyagi', ugettext_lazy('Miyagi'),),\n    ('akita', ugettext_lazy('Akita'),),\n    ('yamagata', ugettext_lazy('Yamagata'),),\n    ('fukushima', ugettext_lazy('Fukushima'),),\n    ('ibaraki', ugettext_lazy('Ibaraki'),),\n    ('tochigi', ugettext_lazy('Tochigi'),),\n    ('gunma', ugettext_lazy('Gunma'),),\n    ('saitama', ugettext_lazy('Saitama'),),\n    ('chiba', ugettext_lazy('Chiba'),),\n    ('tokyo', ugettext_lazy('Tokyo'),),\n    ('kanagawa', ugettext_lazy('Kanagawa'),),\n    ('yamanashi', ugettext_lazy('Yamanashi'),),\n    ('nagano', ugettext_lazy('Nagano'),),\n    ('niigata', ugettext_lazy('Niigata'),),\n    ('toyama', ugettext_lazy('Toyama'),),\n    ('ishikawa', ugettext_lazy('Ishikawa'),),\n    ('fukui', ugettext_lazy('Fukui'),),\n    ('gifu', ugettext_lazy('Gifu'),),\n    ('shizuoka', ugettext_lazy('Shizuoka'),),\n    ('aichi', ugettext_lazy('Aichi'),),\n    ('mie', ugettext_lazy('Mie'),),\n    ('shiga', ugettext_lazy('Shiga'),),\n    ('kyoto', ugettext_lazy('Kyoto'),),\n    ('osaka', ugettext_lazy('Osaka'),),\n    ('hyogo', ugettext_lazy('Hyogo'),),\n    ('nara', ugettext_lazy('Nara'),),\n    ('wakayama', ugettext_lazy('Wakayama'),),\n    ('tottori', ugettext_lazy('Tottori'),),\n    ('shimane', ugettext_lazy('Shimane'),),\n    ('okayama', ugettext_lazy('Okayama'),),\n    ('hiroshima', ugettext_lazy('Hiroshima'),),\n    ('yamaguchi', ugettext_lazy('Yamaguchi'),),\n    ('tokushima', ugettext_lazy('Tokushima'),),\n    ('kagawa', ugettext_lazy('Kagawa'),),\n    ('ehime', ugettext_lazy('Ehime'),),\n    ('kochi', ugettext_lazy('Kochi'),),\n    ('fukuoka', ugettext_lazy('Fukuoka'),),\n    ('saga', ugettext_lazy('Saga'),),\n    ('nagasaki', ugettext_lazy('Nagasaki'),),\n    ('kumamoto', ugettext_lazy('Kumamoto'),),\n    ('oita', ugettext_lazy('Oita'),),\n    ('miyazaki', ugettext_lazy('Miyazaki'),),\n    ('kagoshima', ugettext_lazy('Kagoshima'),),\n    ('okinawa', ugettext_lazy('Okinawa'),),\n)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/kw/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/kw/forms.py",
    "content": "\"\"\"\nKuwait-specific Form helpers\n\"\"\"\nfrom __future__ import unicode_literals\n\nimport re\nfrom datetime import date\n\nfrom django.core.validators import EMPTY_VALUES\nfrom django.forms import ValidationError\nfrom django.forms.fields import Field\nfrom django.utils.translation import gettext as _\n\nid_re = re.compile(r'^(?P<initial>\\d{1})(?P<yy>\\d\\d)(?P<mm>\\d\\d)(?P<dd>\\d\\d)(?P<mid>\\d{4})(?P<checksum>\\d{1})')\n\nclass KWCivilIDNumberField(Field):\n    \"\"\"\n    Kuwaiti Civil ID numbers are 12 digits, second to seventh digits\n    represents the person's birthdate.\n\n    Checks the following rules to determine the validty of the number:\n        * The number consist of 12 digits.\n        * The birthdate of the person is a valid date.\n        * The calculated checksum equals to the last digit of the Civil ID.\n    \"\"\"\n    default_error_messages = {\n        'invalid': _('Enter a valid Kuwaiti Civil ID number'),\n    }\n\n    def has_valid_checksum(self, value):\n        weight = (2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2)\n        calculated_checksum = 0\n        for i in range(11):\n            calculated_checksum += int(value[i]) * weight[i]\n\n        remainder = calculated_checksum % 11\n        checkdigit = 11 - remainder\n        if checkdigit != int(value[11]):\n            return False\n        return True\n\n    def clean(self, value):\n        super(KWCivilIDNumberField, self).clean(value)\n        if value in EMPTY_VALUES:\n            return ''\n\n        if not re.match(r'^\\d{12}$', value):\n            raise ValidationError(self.error_messages['invalid'])\n\n        match = re.match(id_re, value)\n\n        if not match:\n            raise ValidationError(self.error_messages['invalid'])\n\n        gd = match.groupdict()\n\n        try:\n            d = date(int(gd['yy']), int(gd['mm']), int(gd['dd']))\n        except ValueError:\n            raise ValidationError(self.error_messages['invalid'])\n\n        if not self.has_valid_checksum(value):\n            raise ValidationError(self.error_messages['invalid'])\n\n        return value\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/locale/ar/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Ossama Khayat <okhayat@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-10-17 09:16+0000\\n\"\n\"Last-Translator: Ossama Khayat <okhayat@gmail.com>\\n\"\n\"Language-Team: Arabic (http://www.transifex.com/projects/p/django/language/\"\n\"ar/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ar\\n\"\n\"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 \"\n\"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\\n\"\n\n#: ar/forms.py:30\nmsgid \"Enter a postal code in the format NNNN or ANNNNAAA.\"\nmsgstr \"أدخل رمزاً بريدياً بالنسق NNNN أو ANNNNAAA.\"\n\n#: ar/forms.py:52 br/forms.py:95 br/forms.py:134 pe/forms.py:27 pe/forms.py:55\nmsgid \"This field requires only numbers.\"\nmsgstr \"يتطلب هذا الحقل أرقاماً فقط.\"\n\n#: ar/forms.py:53\nmsgid \"This field requires 7 or 8 digits.\"\nmsgstr \"يتطلب الحقل 7 أو 8 أعداد.\"\n\n#: ar/forms.py:82\nmsgid \"Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.\"\nmsgstr \"أدخل رمز CUIT صحيح بالنسق XX-XXXXXXXX-X أو XXXXXXXXXXXX.\"\n\n#: ar/forms.py:83\nmsgid \"Invalid CUIT.\"\nmsgstr \"رمز CUIT غير صحيح.\"\n\n#: ar/forms.py:84\nmsgid \"Invalid legal type. Type must be 27, 20, 23 or 30.\"\nmsgstr \"\"\n\n#: at/at_states.py:5\nmsgid \"Burgenland\"\nmsgstr \"برغنلاند\"\n\n#: at/at_states.py:6\nmsgid \"Carinthia\"\nmsgstr \"كارينثيا\"\n\n#: at/at_states.py:7\nmsgid \"Lower Austria\"\nmsgstr \"أدنى النمسا\"\n\n#: at/at_states.py:8\nmsgid \"Upper Austria\"\nmsgstr \"أقصى النمسا\"\n\n#: at/at_states.py:9\nmsgid \"Salzburg\"\nmsgstr \"سالزبورغ\"\n\n#: at/at_states.py:10\nmsgid \"Styria\"\nmsgstr \"ستيريا\"\n\n#: at/at_states.py:11\nmsgid \"Tyrol\"\nmsgstr \"تايرُل\"\n\n#: at/at_states.py:12\nmsgid \"Vorarlberg\"\nmsgstr \"فورارلبيرغ\"\n\n#: at/at_states.py:13\nmsgid \"Vienna\"\nmsgstr \"فيينا\"\n\n#: at/forms.py:22 ch/forms.py:22 no/forms.py:19\nmsgid \"Enter a zip code in the format XXXX.\"\nmsgstr \"أدخل رمز zip بالنسق XXXX.\"\n\n#: at/forms.py:50\nmsgid \"Enter a valid Austrian Social Security Number in XXXX XXXXXX format.\"\nmsgstr \"أدخل رقم ضمان اجتماعي سويدي صحيح بالنسق XXXX XXXXXX.\"\n\n#: au/forms.py:26\nmsgid \"Enter a 4 digit postcode.\"\nmsgstr \"\"\n\n#: au/models.py:9\nmsgid \"Australian State\"\nmsgstr \"\"\n\n#: au/models.py:19\nmsgid \"Australian Postcode\"\nmsgstr \"\"\n\n#: au/models.py:33\nmsgid \"Australian Phone number\"\nmsgstr \"\"\n\n#: be/be_provinces.py:5\nmsgid \"Antwerp\"\nmsgstr \"\"\n\n#: be/be_provinces.py:6\nmsgid \"Brussels\"\nmsgstr \"بروكسل\"\n\n#: be/be_provinces.py:7\nmsgid \"East Flanders\"\nmsgstr \"\"\n\n#: be/be_provinces.py:8\nmsgid \"Flemish Brabant\"\nmsgstr \"\"\n\n#: be/be_provinces.py:9\nmsgid \"Hainaut\"\nmsgstr \"\"\n\n#: be/be_provinces.py:10\nmsgid \"Liege\"\nmsgstr \"\"\n\n#: be/be_provinces.py:11 nl/nl_provinces.py:9\nmsgid \"Limburg\"\nmsgstr \"\"\n\n#: be/be_provinces.py:12\nmsgid \"Luxembourg\"\nmsgstr \"لوكسومبورج\"\n\n#: be/be_provinces.py:13\nmsgid \"Namur\"\nmsgstr \"\"\n\n#: be/be_provinces.py:14\nmsgid \"Walloon Brabant\"\nmsgstr \"\"\n\n#: be/be_provinces.py:15\nmsgid \"West Flanders\"\nmsgstr \"\"\n\n#: be/be_regions.py:5\nmsgid \"Brussels Capital Region\"\nmsgstr \"\"\n\n#: be/be_regions.py:6\nmsgid \"Flemish Region\"\nmsgstr \"\"\n\n#: be/be_regions.py:7\nmsgid \"Wallonia\"\nmsgstr \"\"\n\n#: be/forms.py:25\nmsgid \"Enter a valid postal code in the range and format 1XXX - 9XXX.\"\nmsgstr \"أدخل الرمز البريدي بالتسلسل الصحيح ما بين 1XXX - 9XXX.\"\n\n#: be/forms.py:48\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\nmsgstr \"\"\n\"أدخل رقم هاتف صحيح بأي من الأنساق التالية 0x xxx xx xx، 0xx xx xx xx، 04xx \"\n\"xx xx xx، 0x/xxx.xx.xx، 0xx/xx.xx.xx، 04xx/xx.xx.xx، 0x.xxx.xx.xx، 0xx.xx.xx.\"\n\"xx، 04xx.xx.xx.xx، 0xxxxxxxx أو 04xxxxxxxx.\"\n\n#: br/forms.py:22\nmsgid \"Enter a zip code in the format XXXXX-XXX.\"\nmsgstr \"أدخل رمزاً بريدياً بالنسق XXXXX-XXX.\"\n\n#: br/forms.py:31\nmsgid \"Phone numbers must be in XX-XXXX-XXXX format.\"\nmsgstr \"أرقام الهاتف يجب أن تكون بالنسق XX-XXXX-XXXX.\"\n\n#: br/forms.py:58\nmsgid \"\"\n\"Select a valid brazilian state. That state is not one of the available \"\n\"states.\"\nmsgstr \"انتق ولايةً برازيلية صحيحة. تلك الولاية ليست ضمن الولايات المتاحة.\"\n\n#: br/forms.py:93\nmsgid \"Invalid CPF number.\"\nmsgstr \"رقم CPF غير صحيح.\"\n\n#: br/forms.py:94\nmsgid \"This field requires at most 11 digits or 14 characters.\"\nmsgstr \"يتطلب هذا الحقل 11 رقماً أو 14 حرفاً كحد أقصى.\"\n\n#: br/forms.py:133\nmsgid \"Invalid CNPJ number.\"\nmsgstr \"رقم CNPJ غير صحيح.\"\n\n#: br/forms.py:135\nmsgid \"This field requires at least 14 digits\"\nmsgstr \"يتطلب هذا الحقل 14 رقماً على الأقل.\"\n\n#: ca/forms.py:29\nmsgid \"Enter a postal code in the format XXX XXX.\"\nmsgstr \"أدخل رمزاً بريدياً بنسق XXX XXX.\"\n\n#: ca/forms.py:47 us/forms.py:30\nmsgid \"Phone numbers must be in XXX-XXX-XXXX format.\"\nmsgstr \"أرقام الهاتف يجب أن تكون بالنسق XXX-XXX-XXXX.\"\n\n#: ca/forms.py:69\nmsgid \"Enter a Canadian province or territory.\"\nmsgstr \"\"\n\n#: ca/forms.py:110\nmsgid \"Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.\"\nmsgstr \"أدخل رقم ضمان اجتماعي كندي صحيح بالنسق XXX-XXX-XXX.\"\n\n#: ch/ch_states.py:5\nmsgid \"Aargau\"\nmsgstr \"أرجاو\"\n\n#: ch/ch_states.py:6\nmsgid \"Appenzell Innerrhoden\"\nmsgstr \"\"\n\n#: ch/ch_states.py:7\nmsgid \"Appenzell Ausserrhoden\"\nmsgstr \"\"\n\n#: ch/ch_states.py:8\nmsgid \"Basel-Stadt\"\nmsgstr \"\"\n\n#: ch/ch_states.py:9\nmsgid \"Basel-Land\"\nmsgstr \"\"\n\n#: ch/ch_states.py:10\nmsgid \"Berne\"\nmsgstr \"\"\n\n#: ch/ch_states.py:11\nmsgid \"Fribourg\"\nmsgstr \"\"\n\n#: ch/ch_states.py:12\nmsgid \"Geneva\"\nmsgstr \"جنيف\"\n\n#: ch/ch_states.py:13\nmsgid \"Glarus\"\nmsgstr \"\"\n\n#: ch/ch_states.py:14\nmsgid \"Graubuenden\"\nmsgstr \"\"\n\n#: ch/ch_states.py:15\nmsgid \"Jura\"\nmsgstr \"\"\n\n#: ch/ch_states.py:16\nmsgid \"Lucerne\"\nmsgstr \"\"\n\n#: ch/ch_states.py:17\nmsgid \"Neuchatel\"\nmsgstr \"\"\n\n#: ch/ch_states.py:18\nmsgid \"Nidwalden\"\nmsgstr \"\"\n\n#: ch/ch_states.py:19\nmsgid \"Obwalden\"\nmsgstr \"\"\n\n#: ch/ch_states.py:20\nmsgid \"Schaffhausen\"\nmsgstr \"\"\n\n#: ch/ch_states.py:21\nmsgid \"Schwyz\"\nmsgstr \"\"\n\n#: ch/ch_states.py:22\nmsgid \"Solothurn\"\nmsgstr \"\"\n\n#: ch/ch_states.py:23\nmsgid \"St. Gallen\"\nmsgstr \"\"\n\n#: ch/ch_states.py:24\nmsgid \"Thurgau\"\nmsgstr \"\"\n\n#: ch/ch_states.py:25\nmsgid \"Ticino\"\nmsgstr \"\"\n\n#: ch/ch_states.py:26\nmsgid \"Uri\"\nmsgstr \"\"\n\n#: ch/ch_states.py:27\nmsgid \"Valais\"\nmsgstr \"\"\n\n#: ch/ch_states.py:28\nmsgid \"Vaud\"\nmsgstr \"\"\n\n#: ch/ch_states.py:29\nmsgid \"Zug\"\nmsgstr \"\"\n\n#: ch/ch_states.py:30\nmsgid \"Zurich\"\nmsgstr \"زيورخ\"\n\n#: ch/forms.py:37\nmsgid \"Phone numbers must be in 0XX XXX XX XX format.\"\nmsgstr \"\"\n\n#: ch/forms.py:68\nmsgid \"\"\n\"Enter a valid Swiss identity or passport card number in X1234567<0 or \"\n\"1234567890 format.\"\nmsgstr \"\"\n\"أدخل رقم هوية سويسرية صحيح أو رقم جواز سفر بالنسق X1234567<0 أو 1234567890.\"\n\n#: cl/forms.py:32\nmsgid \"Enter a valid Chilean RUT.\"\nmsgstr \"أدخل رمز RUT تشيلي صحيح.\"\n\n#: cl/forms.py:33\nmsgid \"Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.\"\nmsgstr \"أدخل رمز RUT تشيلي صحيح. النسق هو XX.XXX.XXX-X.\"\n\n#: cl/forms.py:34\nmsgid \"The Chilean RUT is not valid.\"\nmsgstr \"قيمة RUT التشيلية غير صحيحة.\"\n\n#: cn/forms.py:84\nmsgid \"Enter a post code in the format XXXXXX.\"\nmsgstr \"\"\n\n#: cn/forms.py:105\nmsgid \"ID Card Number consists of 15 or 18 digits.\"\nmsgstr \"\"\n\n#: cn/forms.py:106\nmsgid \"Invalid ID Card Number: Wrong checksum\"\nmsgstr \"\"\n\n#: cn/forms.py:107\nmsgid \"Invalid ID Card Number: Wrong birthdate\"\nmsgstr \"\"\n\n#: cn/forms.py:108\nmsgid \"Invalid ID Card Number: Wrong location code\"\nmsgstr \"\"\n\n#: cn/forms.py:193\nmsgid \"Enter a valid phone number.\"\nmsgstr \"\"\n\n#: cn/forms.py:210\nmsgid \"Enter a valid cell number.\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:8\nmsgid \"Prague\"\nmsgstr \"براغ\"\n\n#: cz/cz_regions.py:9\nmsgid \"Central Bohemian Region\"\nmsgstr \"وسط منطقة بوهيميا\"\n\n#: cz/cz_regions.py:10\nmsgid \"South Bohemian Region\"\nmsgstr \"جنوب منطقة بوهيميا\"\n\n#: cz/cz_regions.py:11\nmsgid \"Pilsen Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:12\nmsgid \"Carlsbad Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:13\nmsgid \"Usti Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:14\nmsgid \"Liberec Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:15\nmsgid \"Hradec Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:16\nmsgid \"Pardubice Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:17\nmsgid \"Vysocina Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:18\nmsgid \"South Moravian Region\"\nmsgstr \"منطقة جنوب مورافيا\"\n\n#: cz/cz_regions.py:19\nmsgid \"Olomouc Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:20\nmsgid \"Zlin Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:21\nmsgid \"Moravian-Silesian Region\"\nmsgstr \"\"\n\n#: cz/forms.py:32 sk/forms.py:33\nmsgid \"Enter a postal code in the format XXXXX or XXX XX.\"\nmsgstr \"أدخل رمزاً بريدياً بالنسق XXXXX أو XXX XX.\"\n\n#: cz/forms.py:52\nmsgid \"Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.\"\nmsgstr \"أدخل رقم الميلاد بالنسق XXXXXX/XXXX أو XXXXXXXXXX.\"\n\n#: cz/forms.py:53\nmsgid \"Enter a valid birth number.\"\nmsgstr \"أدخل رقم ميلاد صحيح.\"\n\n#: cz/forms.py:102\nmsgid \"Enter a valid IC number.\"\nmsgstr \"أدخل رقم IC صحيح.\"\n\n#: de/de_states.py:5\nmsgid \"Baden-Wuerttemberg\"\nmsgstr \"\"\n\n#: de/de_states.py:6\nmsgid \"Bavaria\"\nmsgstr \"بافاريا\"\n\n#: de/de_states.py:7\nmsgid \"Berlin\"\nmsgstr \"برلين\"\n\n#: de/de_states.py:8\nmsgid \"Brandenburg\"\nmsgstr \"\"\n\n#: de/de_states.py:9\nmsgid \"Bremen\"\nmsgstr \"\"\n\n#: de/de_states.py:10\nmsgid \"Hamburg\"\nmsgstr \"هامبورغ\"\n\n#: de/de_states.py:11\nmsgid \"Hessen\"\nmsgstr \"\"\n\n#: de/de_states.py:12\nmsgid \"Mecklenburg-Western Pomerania\"\nmsgstr \"\"\n\n#: de/de_states.py:13\nmsgid \"Lower Saxony\"\nmsgstr \"\"\n\n#: de/de_states.py:14\nmsgid \"North Rhine-Westphalia\"\nmsgstr \"\"\n\n#: de/de_states.py:15\nmsgid \"Rhineland-Palatinate\"\nmsgstr \"\"\n\n#: de/de_states.py:16\nmsgid \"Saarland\"\nmsgstr \"\"\n\n#: de/de_states.py:17\nmsgid \"Saxony\"\nmsgstr \"\"\n\n#: de/de_states.py:18\nmsgid \"Saxony-Anhalt\"\nmsgstr \"\"\n\n#: de/de_states.py:19\nmsgid \"Schleswig-Holstein\"\nmsgstr \"\"\n\n#: de/de_states.py:20\nmsgid \"Thuringia\"\nmsgstr \"\"\n\n#: de/forms.py:20 fi/forms.py:18 fr/forms.py:20\nmsgid \"Enter a zip code in the format XXXXX.\"\nmsgstr \"أدخل رمز zip بالنسق XXXXX.\"\n\n#: de/forms.py:46\nmsgid \"\"\n\"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"format.\"\nmsgstr \"\"\n\"أدخل رقم بطاقة هوية ألمانية صحيحة بالنسق XXXXXXXXXXX-XXXXXXX-XXXXXXX-X.\"\n\n#: es/es_provinces.py:5\nmsgid \"Araba\"\nmsgstr \"\"\n\n#: es/es_provinces.py:6\nmsgid \"Albacete\"\nmsgstr \"\"\n\n#: es/es_provinces.py:7\nmsgid \"Alacant\"\nmsgstr \"\"\n\n#: es/es_provinces.py:8\nmsgid \"Almeria\"\nmsgstr \"ألميريا\"\n\n#: es/es_provinces.py:9\nmsgid \"Avila\"\nmsgstr \"أفيلا\"\n\n#: es/es_provinces.py:10\nmsgid \"Badajoz\"\nmsgstr \"باداجوز\"\n\n#: es/es_provinces.py:11\nmsgid \"Illes Balears\"\nmsgstr \"\"\n\n#: es/es_provinces.py:12\nmsgid \"Barcelona\"\nmsgstr \"برشلونة\"\n\n#: es/es_provinces.py:13\nmsgid \"Burgos\"\nmsgstr \"بورجوس\"\n\n#: es/es_provinces.py:14\nmsgid \"Caceres\"\nmsgstr \"\"\n\n#: es/es_provinces.py:15\nmsgid \"Cadiz\"\nmsgstr \"\"\n\n#: es/es_provinces.py:16\nmsgid \"Castello\"\nmsgstr \"كاستلّو\"\n\n#: es/es_provinces.py:17\nmsgid \"Ciudad Real\"\nmsgstr \"\"\n\n#: es/es_provinces.py:18\nmsgid \"Cordoba\"\nmsgstr \"قرطبة\"\n\n#: es/es_provinces.py:19\nmsgid \"A Coruna\"\nmsgstr \"\"\n\n#: es/es_provinces.py:20\nmsgid \"Cuenca\"\nmsgstr \"\"\n\n#: es/es_provinces.py:21\nmsgid \"Girona\"\nmsgstr \"\"\n\n#: es/es_provinces.py:22\nmsgid \"Granada\"\nmsgstr \"غرناطة\"\n\n#: es/es_provinces.py:23\nmsgid \"Guadalajara\"\nmsgstr \"جوادالاخارا\"\n\n#: es/es_provinces.py:24\nmsgid \"Guipuzkoa\"\nmsgstr \"\"\n\n#: es/es_provinces.py:25\nmsgid \"Huelva\"\nmsgstr \"\"\n\n#: es/es_provinces.py:26\nmsgid \"Huesca\"\nmsgstr \"\"\n\n#: es/es_provinces.py:27\nmsgid \"Jaen\"\nmsgstr \"\"\n\n#: es/es_provinces.py:28\nmsgid \"Leon\"\nmsgstr \"ليون\"\n\n#: es/es_provinces.py:29\nmsgid \"Lleida\"\nmsgstr \"\"\n\n#: es/es_provinces.py:30 es/es_regions.py:17\nmsgid \"La Rioja\"\nmsgstr \"\"\n\n#: es/es_provinces.py:31\nmsgid \"Lugo\"\nmsgstr \"\"\n\n#: es/es_provinces.py:32 es/es_regions.py:18\nmsgid \"Madrid\"\nmsgstr \"مدريد\"\n\n#: es/es_provinces.py:33\nmsgid \"Malaga\"\nmsgstr \"\"\n\n#: es/es_provinces.py:34\nmsgid \"Murcia\"\nmsgstr \"\"\n\n#: es/es_provinces.py:35\nmsgid \"Navarre\"\nmsgstr \"\"\n\n#: es/es_provinces.py:36\nmsgid \"Ourense\"\nmsgstr \"\"\n\n#: es/es_provinces.py:37\nmsgid \"Asturias\"\nmsgstr \"\"\n\n#: es/es_provinces.py:38\nmsgid \"Palencia\"\nmsgstr \"\"\n\n#: es/es_provinces.py:39\nmsgid \"Las Palmas\"\nmsgstr \"لاس بالماس\"\n\n#: es/es_provinces.py:40\nmsgid \"Pontevedra\"\nmsgstr \"\"\n\n#: es/es_provinces.py:41\nmsgid \"Salamanca\"\nmsgstr \"سالامانكا\"\n\n#: es/es_provinces.py:42\nmsgid \"Santa Cruz de Tenerife\"\nmsgstr \"\"\n\n#: es/es_provinces.py:43 es/es_regions.py:11\nmsgid \"Cantabria\"\nmsgstr \"\"\n\n#: es/es_provinces.py:44\nmsgid \"Segovia\"\nmsgstr \"\"\n\n#: es/es_provinces.py:45\nmsgid \"Seville\"\nmsgstr \"\"\n\n#: es/es_provinces.py:46\nmsgid \"Soria\"\nmsgstr \"\"\n\n#: es/es_provinces.py:47\nmsgid \"Tarragona\"\nmsgstr \"\"\n\n#: es/es_provinces.py:48\nmsgid \"Teruel\"\nmsgstr \"\"\n\n#: es/es_provinces.py:49\nmsgid \"Toledo\"\nmsgstr \"توليدو\"\n\n#: es/es_provinces.py:50\nmsgid \"Valencia\"\nmsgstr \"فالنسيا\"\n\n#: es/es_provinces.py:51\nmsgid \"Valladolid\"\nmsgstr \"\"\n\n#: es/es_provinces.py:52\nmsgid \"Bizkaia\"\nmsgstr \"\"\n\n#: es/es_provinces.py:53\nmsgid \"Zamora\"\nmsgstr \"\"\n\n#: es/es_provinces.py:54\nmsgid \"Zaragoza\"\nmsgstr \"\"\n\n#: es/es_provinces.py:55\nmsgid \"Ceuta\"\nmsgstr \"\"\n\n#: es/es_provinces.py:56\nmsgid \"Melilla\"\nmsgstr \"\"\n\n#: es/es_regions.py:5\nmsgid \"Andalusia\"\nmsgstr \"الأندلس\"\n\n#: es/es_regions.py:6\nmsgid \"Aragon\"\nmsgstr \"أراغون\"\n\n#: es/es_regions.py:7\nmsgid \"Principality of Asturias\"\nmsgstr \"\"\n\n#: es/es_regions.py:8\nmsgid \"Balearic Islands\"\nmsgstr \"\"\n\n#: es/es_regions.py:9\nmsgid \"Basque Country\"\nmsgstr \"\"\n\n#: es/es_regions.py:10\nmsgid \"Canary Islands\"\nmsgstr \"جزر الكناري\"\n\n#: es/es_regions.py:12\nmsgid \"Castile-La Mancha\"\nmsgstr \"\"\n\n#: es/es_regions.py:13\nmsgid \"Castile and Leon\"\nmsgstr \"\"\n\n#: es/es_regions.py:14\nmsgid \"Catalonia\"\nmsgstr \"كتالونيا\"\n\n#: es/es_regions.py:15\nmsgid \"Extremadura\"\nmsgstr \"\"\n\n#: es/es_regions.py:16\nmsgid \"Galicia\"\nmsgstr \"جليقية\"\n\n#: es/es_regions.py:19\nmsgid \"Region of Murcia\"\nmsgstr \"\"\n\n#: es/es_regions.py:20\nmsgid \"Foral Community of Navarre\"\nmsgstr \"\"\n\n#: es/es_regions.py:21\nmsgid \"Valencian Community\"\nmsgstr \"\"\n\n#: es/forms.py:26\nmsgid \"Enter a valid postal code in the range and format 01XXX - 52XXX.\"\nmsgstr \"أدخل رمزاً بريدياً صحيحاً بالمدى والنسق 01XXX - 52XXX.\"\n\n#: es/forms.py:46\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or \"\n\"9XXXXXXXX.\"\nmsgstr \"أدخل رقم هاتف صحيح بأحد الأنساق 6XXXXXXXX، 8XXXXXXXX أو 9XXXXXXXX.\"\n\n#: es/forms.py:73\nmsgid \"Please enter a valid NIF, NIE, or CIF.\"\nmsgstr \"رجاءً أدخل قيمة NIF، NIE أو CIF صحيحة.\"\n\n#: es/forms.py:74\nmsgid \"Please enter a valid NIF or NIE.\"\nmsgstr \"رجاءً أدخل قيمة NIF أو NIE صحيحة.\"\n\n#: es/forms.py:75\nmsgid \"Invalid checksum for NIF.\"\nmsgstr \"تدقيق مجموع NIF غير صحيح.\"\n\n#: es/forms.py:76\nmsgid \"Invalid checksum for NIE.\"\nmsgstr \"تدقيق مجموع NIE غير صحيح.\"\n\n#: es/forms.py:77\nmsgid \"Invalid checksum for CIF.\"\nmsgstr \"تدقيق مجموع CIF غير صحيح.\"\n\n#: es/forms.py:149\nmsgid \"\"\n\"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.\"\nmsgstr \"رجاءً أدخل رقم حساب بنكي صحيح بالنسق XXXX-XXXX-XX-XXXXXXXXXX.\"\n\n#: es/forms.py:150\nmsgid \"Invalid checksum for bank account number.\"\nmsgstr \"تدقيق مجموع رقم حساب البنك غير صحيح.\"\n\n#: fi/forms.py:33\nmsgid \"Enter a valid Finnish social security number.\"\nmsgstr \"أدخل رقم ضمان اجتماع فنلندي صحيح.\"\n\n#: fr/forms.py:35\nmsgid \"Phone numbers must be in 0X XX XX XX XX format.\"\nmsgstr \"أرقام الهاتف يجب أن تكون بالنسق 0X XX XX XX XX.\"\n\n#: gb/forms.py:25\nmsgid \"Enter a valid postcode.\"\nmsgstr \"أدخل رمزاً بريدياً صحيحاً.\"\n\n#: gb/gb_regions.py:11\nmsgid \"Bedfordshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:12\nmsgid \"Buckinghamshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:14\nmsgid \"Cheshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:15\nmsgid \"Cornwall and Isles of Scilly\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:16\nmsgid \"Cumbria\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:17\nmsgid \"Derbyshire\"\nmsgstr \"ديربي شاير\"\n\n#: gb/gb_regions.py:18\nmsgid \"Devon\"\nmsgstr \"دِفون\"\n\n#: gb/gb_regions.py:19\nmsgid \"Dorset\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:20\nmsgid \"Durham\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:21\nmsgid \"East Sussex\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:22\nmsgid \"Essex\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:23\nmsgid \"Gloucestershire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:24\nmsgid \"Greater London\"\nmsgstr \"لندن العظمى\"\n\n#: gb/gb_regions.py:25\nmsgid \"Greater Manchester\"\nmsgstr \"مانشستر العظمى\"\n\n#: gb/gb_regions.py:26\nmsgid \"Hampshire\"\nmsgstr \"هامشاير\"\n\n#: gb/gb_regions.py:27\nmsgid \"Hertfordshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:28\nmsgid \"Kent\"\nmsgstr \"كِنْت\"\n\n#: gb/gb_regions.py:29\nmsgid \"Lancashire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:30\nmsgid \"Leicestershire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:31\nmsgid \"Lincolnshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:32\nmsgid \"Merseyside\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:33\nmsgid \"Norfolk\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:34\nmsgid \"North Yorkshire\"\nmsgstr \"شمال يورك شاير\"\n\n#: gb/gb_regions.py:35\nmsgid \"Northamptonshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:36\nmsgid \"Northumberland\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:37\nmsgid \"Nottinghamshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:38\nmsgid \"Oxfordshire\"\nmsgstr \"أوكسفوردشاير\"\n\n#: gb/gb_regions.py:39\nmsgid \"Shropshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:40\nmsgid \"Somerset\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:41\nmsgid \"South Yorkshire\"\nmsgstr \"جنوب يوركشاير\"\n\n#: gb/gb_regions.py:42\nmsgid \"Staffordshire\"\nmsgstr \"ستافوردشاير\"\n\n#: gb/gb_regions.py:43\nmsgid \"Suffolk\"\nmsgstr \"سوفولك\"\n\n#: gb/gb_regions.py:44\nmsgid \"Surrey\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:45\nmsgid \"Tyne and Wear\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:46\nmsgid \"Warwickshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:47\nmsgid \"West Midlands\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:48\nmsgid \"West Sussex\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:49\nmsgid \"West Yorkshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:50\nmsgid \"Wiltshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:51\nmsgid \"Worcestershire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:55\nmsgid \"County Antrim\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:56\nmsgid \"County Armagh\"\nmsgstr \"مقاطعة ارماغ\"\n\n#: gb/gb_regions.py:57\nmsgid \"County Down\"\nmsgstr \"مقاطعة داون\"\n\n#: gb/gb_regions.py:58\nmsgid \"County Fermanagh\"\nmsgstr \"مقاطعة فيرماناغ\"\n\n#: gb/gb_regions.py:59\nmsgid \"County Londonderry\"\nmsgstr \"مقاطعة لندنديري\"\n\n#: gb/gb_regions.py:60\nmsgid \"County Tyrone\"\nmsgstr \"مقاطعة تيرون\"\n\n#: gb/gb_regions.py:64\nmsgid \"Clwyd\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:65\nmsgid \"Dyfed\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:66\nmsgid \"Gwent\"\nmsgstr \"غوِنْت\"\n\n#: gb/gb_regions.py:67\nmsgid \"Gwynedd\"\nmsgstr \"غوينيد\"\n\n#: gb/gb_regions.py:68\nmsgid \"Mid Glamorgan\"\nmsgstr \"وسط غلامورغان\"\n\n#: gb/gb_regions.py:69\nmsgid \"Powys\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:70\nmsgid \"South Glamorgan\"\nmsgstr \"جنوب غلامورغان\"\n\n#: gb/gb_regions.py:71\nmsgid \"West Glamorgan\"\nmsgstr \"غرب غلامورغان\"\n\n#: gb/gb_regions.py:75\nmsgid \"Borders\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:76\nmsgid \"Central Scotland\"\nmsgstr \"وسط اسكتلندا\"\n\n#: gb/gb_regions.py:77\nmsgid \"Dumfries and Galloway\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:78\nmsgid \"Fife\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:79\nmsgid \"Grampian\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:80\nmsgid \"Highland\"\nmsgstr \"هاي لاند\"\n\n#: gb/gb_regions.py:81\nmsgid \"Lothian\"\nmsgstr \"لوثيان\"\n\n#: gb/gb_regions.py:82\nmsgid \"Orkney Islands\"\nmsgstr \"جزر أوركني\"\n\n#: gb/gb_regions.py:83\nmsgid \"Shetland Islands\"\nmsgstr \"جزر شتلاند\"\n\n#: gb/gb_regions.py:84\nmsgid \"Strathclyde\"\nmsgstr \"ستراثكلايد\"\n\n#: gb/gb_regions.py:85\nmsgid \"Tayside\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:86\nmsgid \"Western Isles\"\nmsgstr \"الجزر الغربية\"\n\n#: gb/gb_regions.py:90\nmsgid \"England\"\nmsgstr \"إنجلترا\"\n\n#: gb/gb_regions.py:91\nmsgid \"Northern Ireland\"\nmsgstr \"شمال ايرلندا\"\n\n#: gb/gb_regions.py:92\nmsgid \"Scotland\"\nmsgstr \"اسكوتلندة\"\n\n#: gb/gb_regions.py:93\nmsgid \"Wales\"\nmsgstr \"ويلز\"\n\n#: hk/forms.py:37\n#, python-format\nmsgid \"Phone number should not start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:40\n#, python-format\nmsgid \"Phone number must be in one of the following formats: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:42\n#, python-format\nmsgid \"Phone number should start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hr/forms.py:76\nmsgid \"Enter a valid 13 digit JMBG\"\nmsgstr \"\"\n\n#: hr/forms.py:77\nmsgid \"Error in date segment\"\nmsgstr \"\"\n\n#: hr/forms.py:123\nmsgid \"Enter a valid 11 digit OIB\"\nmsgstr \"\"\n\n#: hr/forms.py:152 id/forms.py:112\nmsgid \"Enter a valid vehicle license plate number\"\nmsgstr \"أدخل رقم لوحة رخصة مركبة صحيح\"\n\n#: hr/forms.py:153\nmsgid \"Enter a valid location code\"\nmsgstr \"\"\n\n#: hr/forms.py:154\nmsgid \"Number part cannot be zero\"\nmsgstr \"\"\n\n#: hr/forms.py:190\nmsgid \"Enter a valid 5 digit postal code\"\nmsgstr \"\"\n\n#: hr/forms.py:218 id/forms.py:72 nl/forms.py:56\nmsgid \"Enter a valid phone number\"\nmsgstr \"أدخل رقم هاتف صحيح\"\n\n#: hr/forms.py:219\nmsgid \"Enter a valid area or mobile network code\"\nmsgstr \"\"\n\n#: hr/forms.py:220\nmsgid \"The phone nubmer is too long\"\nmsgstr \"\"\n\n#: hr/forms.py:258\nmsgid \"Enter a valid 19 digit JMBAG starting with 601983\"\nmsgstr \"\"\n\n#: hr/forms.py:259\nmsgid \"Card issue number cannot be zero\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:14\nmsgid \"Grad Zagreb\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:15\nmsgid \"Bjelovarsko-bilogorska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:16\nmsgid \"Brodsko-posavska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:17\nmsgid \"Dubrovačko-neretvanska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:18\nmsgid \"Istarska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:19\nmsgid \"Karlovačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:20\nmsgid \"Koprivničko-križevačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:21\nmsgid \"Krapinsko-zagorska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:22\nmsgid \"Ličko-senjska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:23\nmsgid \"Međimurska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:24\nmsgid \"Osječko-baranjska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:25\nmsgid \"Požeško-slavonska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:26\nmsgid \"Primorsko-goranska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:27\nmsgid \"Sisačko-moslavačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:28\nmsgid \"Splitsko-dalmatinska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:29\nmsgid \"Šibensko-kninska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:30\nmsgid \"Varaždinska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:31\nmsgid \"Virovitičko-podravska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:32\nmsgid \"Vukovarsko-srijemska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:33\nmsgid \"Zadarska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:34\nmsgid \"Zagrebačka županija\"\nmsgstr \"\"\n\n#: id/forms.py:31\nmsgid \"Enter a valid post code\"\nmsgstr \"أدخل رمزاً بريدياً صحيحاً\"\n\n#: id/forms.py:176\nmsgid \"Enter a valid NIK/KTP number\"\nmsgstr \"أدخل رقم NIK/KTP صحيح\"\n\n#: id/id_choices.py:15\nmsgid \"Aceh\"\nmsgstr \"\"\n\n#: id/id_choices.py:16 id/id_choices.py:79\nmsgid \"Bali\"\nmsgstr \"بالي\"\n\n#: id/id_choices.py:17 id/id_choices.py:51\nmsgid \"Banten\"\nmsgstr \"بانتن\"\n\n#: id/id_choices.py:18 id/id_choices.py:60\nmsgid \"Bengkulu\"\nmsgstr \"بنجكولو\"\n\n#: id/id_choices.py:19 id/id_choices.py:53\nmsgid \"Yogyakarta\"\nmsgstr \"\"\n\n#: id/id_choices.py:20 id/id_choices.py:57\nmsgid \"Jakarta\"\nmsgstr \"جاكرتا\"\n\n#: id/id_choices.py:21 id/id_choices.py:81\nmsgid \"Gorontalo\"\nmsgstr \"\"\n\n#: id/id_choices.py:22 id/id_choices.py:63\nmsgid \"Jambi\"\nmsgstr \"جامبي\"\n\n#: id/id_choices.py:23\nmsgid \"Jawa Barat\"\nmsgstr \"جاوة الغربية\"\n\n#: id/id_choices.py:24\nmsgid \"Jawa Tengah\"\nmsgstr \"جاوة الوسطى\"\n\n#: id/id_choices.py:25\nmsgid \"Jawa Timur\"\nmsgstr \"جاوة الشرقية\"\n\n#: id/id_choices.py:26 id/id_choices.py:94\nmsgid \"Kalimantan Barat\"\nmsgstr \"غرب كاليمانتان\"\n\n#: id/id_choices.py:27 id/id_choices.py:72\nmsgid \"Kalimantan Selatan\"\nmsgstr \"جنوب كاليمانتان\"\n\n#: id/id_choices.py:28 id/id_choices.py:95\nmsgid \"Kalimantan Tengah\"\nmsgstr \"وسط كاليمانتان\"\n\n#: id/id_choices.py:29 id/id_choices.py:96\nmsgid \"Kalimantan Timur\"\nmsgstr \"شرق كاليمانتان\"\n\n#: id/id_choices.py:30\nmsgid \"Kepulauan Bangka-Belitung\"\nmsgstr \"جزر بانكا بليتانج\"\n\n#: id/id_choices.py:31 id/id_choices.py:68\nmsgid \"Kepulauan Riau\"\nmsgstr \"جزر رياو\"\n\n#: id/id_choices.py:32 id/id_choices.py:61\nmsgid \"Lampung\"\nmsgstr \"لامبونج\"\n\n#: id/id_choices.py:33 id/id_choices.py:76\nmsgid \"Maluku\"\nmsgstr \"مالوكو\"\n\n#: id/id_choices.py:34 id/id_choices.py:77\nmsgid \"Maluku Utara\"\nmsgstr \"\"\n\n#: id/id_choices.py:35\nmsgid \"Nusa Tenggara Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:36\nmsgid \"Nusa Tenggara Timur\"\nmsgstr \"\"\n\n#: id/id_choices.py:37\nmsgid \"Papua\"\nmsgstr \"\"\n\n#: id/id_choices.py:38\nmsgid \"Papua Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:39 id/id_choices.py:66\nmsgid \"Riau\"\nmsgstr \"\"\n\n#: id/id_choices.py:40 id/id_choices.py:74\nmsgid \"Sulawesi Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:41 id/id_choices.py:75\nmsgid \"Sulawesi Selatan\"\nmsgstr \"\"\n\n#: id/id_choices.py:42 id/id_choices.py:82\nmsgid \"Sulawesi Tengah\"\nmsgstr \"\"\n\n#: id/id_choices.py:43 id/id_choices.py:85\nmsgid \"Sulawesi Tenggara\"\nmsgstr \"\"\n\n#: id/id_choices.py:44\nmsgid \"Sulawesi Utara\"\nmsgstr \"\"\n\n#: id/id_choices.py:45 id/id_choices.py:58\nmsgid \"Sumatera Barat\"\nmsgstr \"سومطرة الغربية\"\n\n#: id/id_choices.py:46 id/id_choices.py:62\nmsgid \"Sumatera Selatan\"\nmsgstr \"سومطرة الشرقية\"\n\n#: id/id_choices.py:47 id/id_choices.py:64\nmsgid \"Sumatera Utara\"\nmsgstr \"سومطرة الشمالية\"\n\n#: id/id_choices.py:52\nmsgid \"Magelang\"\nmsgstr \"\"\n\n#: id/id_choices.py:54\nmsgid \"Surakarta - Solo\"\nmsgstr \"\"\n\n#: id/id_choices.py:55\nmsgid \"Madiun\"\nmsgstr \"\"\n\n#: id/id_choices.py:56\nmsgid \"Kediri\"\nmsgstr \"\"\n\n#: id/id_choices.py:59\nmsgid \"Tapanuli\"\nmsgstr \"\"\n\n#: id/id_choices.py:65\nmsgid \"Nanggroe Aceh Darussalam\"\nmsgstr \"\"\n\n#: id/id_choices.py:67\nmsgid \"Kepulauan Bangka Belitung\"\nmsgstr \"\"\n\n#: id/id_choices.py:69\nmsgid \"Corps Consulate\"\nmsgstr \"\"\n\n#: id/id_choices.py:70\nmsgid \"Corps Diplomatic\"\nmsgstr \"\"\n\n#: id/id_choices.py:71\nmsgid \"Bandung\"\nmsgstr \"\"\n\n#: id/id_choices.py:73\nmsgid \"Sulawesi Utara Daratan\"\nmsgstr \"\"\n\n#: id/id_choices.py:78\nmsgid \"NTT - Timor\"\nmsgstr \"\"\n\n#: id/id_choices.py:80\nmsgid \"Sulawesi Utara Kepulauan\"\nmsgstr \"\"\n\n#: id/id_choices.py:83\nmsgid \"NTB - Lombok\"\nmsgstr \"\"\n\n#: id/id_choices.py:84\nmsgid \"Papua dan Papua Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:86\nmsgid \"Cirebon\"\nmsgstr \"\"\n\n#: id/id_choices.py:87\nmsgid \"NTB - Sumbawa\"\nmsgstr \"\"\n\n#: id/id_choices.py:88\nmsgid \"NTT - Flores\"\nmsgstr \"\"\n\n#: id/id_choices.py:89\nmsgid \"NTT - Sumba\"\nmsgstr \"\"\n\n#: id/id_choices.py:90\nmsgid \"Bogor\"\nmsgstr \"\"\n\n#: id/id_choices.py:91\nmsgid \"Pekalongan\"\nmsgstr \"\"\n\n#: id/id_choices.py:92\nmsgid \"Semarang\"\nmsgstr \"\"\n\n#: id/id_choices.py:93\nmsgid \"Pati\"\nmsgstr \"باتي\"\n\n#: id/id_choices.py:97\nmsgid \"Surabaya\"\nmsgstr \"سورابايا\"\n\n#: id/id_choices.py:98\nmsgid \"Madura\"\nmsgstr \"\"\n\n#: id/id_choices.py:99\nmsgid \"Malang\"\nmsgstr \"\"\n\n#: id/id_choices.py:100\nmsgid \"Jember\"\nmsgstr \"\"\n\n#: id/id_choices.py:101\nmsgid \"Banyumas\"\nmsgstr \"\"\n\n#: id/id_choices.py:102\nmsgid \"Federal Government\"\nmsgstr \"الحكومة الاتحادية\"\n\n#: id/id_choices.py:103\nmsgid \"Bojonegoro\"\nmsgstr \"\"\n\n#: id/id_choices.py:104\nmsgid \"Purwakarta\"\nmsgstr \"\"\n\n#: id/id_choices.py:105\nmsgid \"Sidoarjo\"\nmsgstr \"\"\n\n#: id/id_choices.py:106\nmsgid \"Garut\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:8\nmsgid \"Antrim\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:9\nmsgid \"Armagh\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:10\nmsgid \"Carlow\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:11\nmsgid \"Cavan\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:12\nmsgid \"Clare\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:13\nmsgid \"Cork\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:14\nmsgid \"Derry\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:15\nmsgid \"Donegal\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:16\nmsgid \"Down\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:17\nmsgid \"Dublin\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:18\nmsgid \"Fermanagh\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:19\nmsgid \"Galway\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:20\nmsgid \"Kerry\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:21\nmsgid \"Kildare\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:22\nmsgid \"Kilkenny\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:23\nmsgid \"Laois\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:24\nmsgid \"Leitrim\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:25\nmsgid \"Limerick\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:26\nmsgid \"Longford\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:27\nmsgid \"Louth\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:28\nmsgid \"Mayo\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:29\nmsgid \"Meath\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:30\nmsgid \"Monaghan\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:31\nmsgid \"Offaly\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:32\nmsgid \"Roscommon\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:33\nmsgid \"Sligo\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:34\nmsgid \"Tipperary\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:35\nmsgid \"Tyrone\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:36\nmsgid \"Waterford\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:37\nmsgid \"Westmeath\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:38\nmsgid \"Wexford\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:39\nmsgid \"Wicklow\"\nmsgstr \"\"\n\n#: il/forms.py:32\nmsgid \"Enter a postal code in the format XXXXX\"\nmsgstr \"اكتب الرمز البريدي بالنسق XXXXX\"\n\n#: il/forms.py:51\nmsgid \"Enter a valid ID number.\"\nmsgstr \"أدخل رقم هوية صحيح.\"\n\n#: in_/forms.py:41\nmsgid \"Enter a zip code in the format XXXXXX or XXX XXX.\"\nmsgstr \"\"\n\n#: in_/forms.py:64\nmsgid \"Enter an Indian state or territory.\"\nmsgstr \"\"\n\n#: in_/forms.py:103\nmsgid \"Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.\"\nmsgstr \"\"\n\n#: is_/forms.py:22\nmsgid \"\"\n\"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.\"\nmsgstr \"رجاءً أدخل رقم مُعرّف آيسلندي صحيح. النسق هو XXXXXX-XXXX.\"\n\n#: is_/forms.py:23\nmsgid \"The Icelandic identification number is not valid.\"\nmsgstr \"رقم المُعرّف الآيسلندي غير صحيح.\"\n\n#: it/forms.py:21\nmsgid \"Enter a valid zip code.\"\nmsgstr \"أدخل رمز zip صحيح.\"\n\n#: it/forms.py:48\nmsgid \"Enter a valid Social Security number.\"\nmsgstr \"أدخل رقم ضمان اجتماعي صحيح.\"\n\n#: it/forms.py:73\nmsgid \"Enter a valid VAT number.\"\nmsgstr \"أدخل رقم ضريبة VAT صحيح.\"\n\n#: jp/forms.py:19\nmsgid \"Enter a postal code in the format XXXXXXX or XXX-XXXX.\"\nmsgstr \"أدخل رمزاً بريدياً بالنسق XXXXXXX أو XXX-XXXX.\"\n\n#: jp/jp_prefectures.py:4\nmsgid \"Hokkaido\"\nmsgstr \"هوكايدو\"\n\n#: jp/jp_prefectures.py:5\nmsgid \"Aomori\"\nmsgstr \"أوموري\"\n\n#: jp/jp_prefectures.py:6\nmsgid \"Iwate\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:7\nmsgid \"Miyagi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:8\nmsgid \"Akita\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:9\nmsgid \"Yamagata\"\nmsgstr \"ياماغاتا\"\n\n#: jp/jp_prefectures.py:10\nmsgid \"Fukushima\"\nmsgstr \"فوكوشيما\"\n\n#: jp/jp_prefectures.py:11\nmsgid \"Ibaraki\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:12\nmsgid \"Tochigi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:13\nmsgid \"Gunma\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:14\nmsgid \"Saitama\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:15\nmsgid \"Chiba\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:16\nmsgid \"Tokyo\"\nmsgstr \"طوكيو\"\n\n#: jp/jp_prefectures.py:17\nmsgid \"Kanagawa\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:18\nmsgid \"Yamanashi\"\nmsgstr \"ياماناشي\"\n\n#: jp/jp_prefectures.py:19\nmsgid \"Nagano\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:20\nmsgid \"Niigata\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:21\nmsgid \"Toyama\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:22\nmsgid \"Ishikawa\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:23\nmsgid \"Fukui\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:24\nmsgid \"Gifu\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:25\nmsgid \"Shizuoka\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:26\nmsgid \"Aichi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:27\nmsgid \"Mie\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:28\nmsgid \"Shiga\"\nmsgstr \"شيغا\"\n\n#: jp/jp_prefectures.py:29\nmsgid \"Kyoto\"\nmsgstr \"كيوتو\"\n\n#: jp/jp_prefectures.py:30\nmsgid \"Osaka\"\nmsgstr \"أُساكا\"\n\n#: jp/jp_prefectures.py:31\nmsgid \"Hyogo\"\nmsgstr \"هَيوغو\"\n\n#: jp/jp_prefectures.py:32\nmsgid \"Nara\"\nmsgstr \"نارا\"\n\n#: jp/jp_prefectures.py:33\nmsgid \"Wakayama\"\nmsgstr \"واكاياما\"\n\n#: jp/jp_prefectures.py:34\nmsgid \"Tottori\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:35\nmsgid \"Shimane\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:36\nmsgid \"Okayama\"\nmsgstr \"أوكاياما\"\n\n#: jp/jp_prefectures.py:37\nmsgid \"Hiroshima\"\nmsgstr \"هيروشيما\"\n\n#: jp/jp_prefectures.py:38\nmsgid \"Yamaguchi\"\nmsgstr \"ياماغوشي\"\n\n#: jp/jp_prefectures.py:39\nmsgid \"Tokushima\"\nmsgstr \"توكوشيما\"\n\n#: jp/jp_prefectures.py:40\nmsgid \"Kagawa\"\nmsgstr \"كاغاوا\"\n\n#: jp/jp_prefectures.py:41\nmsgid \"Ehime\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:42\nmsgid \"Kochi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:43\nmsgid \"Fukuoka\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:44\nmsgid \"Saga\"\nmsgstr \"ساغا\"\n\n#: jp/jp_prefectures.py:45\nmsgid \"Nagasaki\"\nmsgstr \"ناجاساكي\"\n\n#: jp/jp_prefectures.py:46\nmsgid \"Kumamoto\"\nmsgstr \"كوماموتو\"\n\n#: jp/jp_prefectures.py:47\nmsgid \"Oita\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:48\nmsgid \"Miyazaki\"\nmsgstr \"ميازاكي\"\n\n#: jp/jp_prefectures.py:49\nmsgid \"Kagoshima\"\nmsgstr \"كاغوشيما\"\n\n#: jp/jp_prefectures.py:50\nmsgid \"Okinawa\"\nmsgstr \"أوكيناوا\"\n\n#: kw/forms.py:27\nmsgid \"Enter a valid Kuwaiti Civil ID number\"\nmsgstr \"أدخل رقم بطاقة مدنيّة كويتيّة صحيح\"\n\n#: mk/forms.py:18\nmsgid \"\"\n\"Identity card numbers must contain either 4 to 7 digits or an uppercase \"\n\"letter and 7 digits.\"\nmsgstr \"\"\n\n#: mk/forms.py:57 si/forms.py:24\nmsgid \"This field should contain exactly 13 digits.\"\nmsgstr \"\"\n\n#: mk/forms.py:58\nmsgid \"The first 7 digits of the UMCN must represent a valid past date.\"\nmsgstr \"\"\n\n#: mk/forms.py:59\nmsgid \"The UMCN is not valid.\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:10\nmsgid \"Aerodrom\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:11\nmsgid \"Aračinovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:12\nmsgid \"Berovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:13\nmsgid \"Bitola\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:14\nmsgid \"Bogdanci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:15\nmsgid \"Bogovinje\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:16\nmsgid \"Bosilovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:17\nmsgid \"Brvenica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:18\nmsgid \"Butel\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:19\nmsgid \"Valandovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:20\nmsgid \"Vasilevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:21\nmsgid \"Vevčani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:22\nmsgid \"Veles\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:23\nmsgid \"Vinica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:24\nmsgid \"Vraneštica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:25\nmsgid \"Vrapčište\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:26\nmsgid \"Gazi Baba\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:27\nmsgid \"Gevgelija\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:28\nmsgid \"Gostivar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:29\nmsgid \"Gradsko\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:30\nmsgid \"Debar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:31\nmsgid \"Debarca\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:32\nmsgid \"Delčevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:33\nmsgid \"Demir Kapija\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:34\nmsgid \"Demir Hisar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:35\nmsgid \"Dolneni\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:36\nmsgid \"Drugovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:37\nmsgid \"Gjorče Petrov\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:38\nmsgid \"Želino\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:39\nmsgid \"Zajas\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:40\nmsgid \"Zelenikovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:41\nmsgid \"Zrnovci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:42\nmsgid \"Ilinden\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:43\nmsgid \"Jegunovce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:44\nmsgid \"Kavadarci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:45\nmsgid \"Karbinci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:46\nmsgid \"Karpoš\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:47\nmsgid \"Kisela Voda\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:48\nmsgid \"Kičevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:49\nmsgid \"Konče\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:50\nmsgid \"Koćani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:51\nmsgid \"Kratovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:52\nmsgid \"Kriva Palanka\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:53\nmsgid \"Krivogaštani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:54\nmsgid \"Kruševo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:55\nmsgid \"Kumanovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:56\nmsgid \"Lipkovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:57\nmsgid \"Lozovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:58\nmsgid \"Mavrovo i Rostuša\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:59\nmsgid \"Makedonska Kamenica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:60\nmsgid \"Makedonski Brod\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:61\nmsgid \"Mogila\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:62\nmsgid \"Negotino\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:63\nmsgid \"Novaci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:64\nmsgid \"Novo Selo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:65\nmsgid \"Oslomej\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:66\nmsgid \"Ohrid\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:67\nmsgid \"Petrovec\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:68\nmsgid \"Pehčevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:69\nmsgid \"Plasnica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:70\nmsgid \"Prilep\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:71\nmsgid \"Probištip\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:72\nmsgid \"Radoviš\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:73\nmsgid \"Rankovce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:74\nmsgid \"Resen\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:75\nmsgid \"Rosoman\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:76\nmsgid \"Saraj\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:77\nmsgid \"Sveti Nikole\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:78\nmsgid \"Sopište\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:79\nmsgid \"Star Dojran\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:80\nmsgid \"Staro Nagoričane\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:81\nmsgid \"Struga\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:82\nmsgid \"Strumica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:83\nmsgid \"Studeničani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:84\nmsgid \"Tearce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:85\nmsgid \"Tetovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:86\nmsgid \"Centar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:87\nmsgid \"Centar-Župa\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:88\nmsgid \"Čair\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:89\nmsgid \"Čaška\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:90\nmsgid \"Češinovo-Obleševo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:91\nmsgid \"Čučer-Sandevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:92\nmsgid \"Štip\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:93\nmsgid \"Šuto Orizari\"\nmsgstr \"\"\n\n#: mk/models.py:11\nmsgid \"Macedonian identity card number\"\nmsgstr \"\"\n\n#: mk/models.py:25\nmsgid \"A Macedonian municipality (2 character code)\"\nmsgstr \"\"\n\n#: mk/models.py:35\nmsgid \"Unique master citizen number (13 digits)\"\nmsgstr \"\"\n\n#: mx/forms.py:67\nmsgid \"Enter a valid zip code in the format XXXXX.\"\nmsgstr \"\"\n\n#: mx/forms.py:110\nmsgid \"Enter a valid RFC.\"\nmsgstr \"\"\n\n#: mx/forms.py:111\nmsgid \"Invalid checksum for RFC.\"\nmsgstr \"\"\n\n#: mx/forms.py:191\nmsgid \"Enter a valid CURP.\"\nmsgstr \"\"\n\n#: mx/forms.py:192\nmsgid \"Invalid checksum for CURP.\"\nmsgstr \"\"\n\n#: mx/models.py:14\nmsgid \"Mexico state (three uppercase letters)\"\nmsgstr \"\"\n\n#: mx/models.py:27\nmsgid \"Mexico zip code\"\nmsgstr \"\"\n\n#: mx/models.py:44\nmsgid \"Mexican RFC\"\nmsgstr \"\"\n\n#: mx/models.py:61\nmsgid \"Mexican CURP\"\nmsgstr \"\"\n\n#: mx/mx_states.py:14\nmsgid \"Aguascalientes\"\nmsgstr \"\"\n\n#: mx/mx_states.py:15\nmsgid \"Baja California\"\nmsgstr \"\"\n\n#: mx/mx_states.py:16\nmsgid \"Baja California Sur\"\nmsgstr \"\"\n\n#: mx/mx_states.py:17\nmsgid \"Campeche\"\nmsgstr \"\"\n\n#: mx/mx_states.py:18\nmsgid \"Chihuahua\"\nmsgstr \"\"\n\n#: mx/mx_states.py:19\nmsgid \"Chiapas\"\nmsgstr \"\"\n\n#: mx/mx_states.py:20\nmsgid \"Coahuila\"\nmsgstr \"\"\n\n#: mx/mx_states.py:21\nmsgid \"Colima\"\nmsgstr \"\"\n\n#: mx/mx_states.py:22\nmsgid \"Distrito Federal\"\nmsgstr \"\"\n\n#: mx/mx_states.py:23\nmsgid \"Durango\"\nmsgstr \"دورانجو\"\n\n#: mx/mx_states.py:24\nmsgid \"Guerrero\"\nmsgstr \"\"\n\n#: mx/mx_states.py:25\nmsgid \"Guanajuato\"\nmsgstr \"\"\n\n#: mx/mx_states.py:26\nmsgid \"Hidalgo\"\nmsgstr \"\"\n\n#: mx/mx_states.py:27\nmsgid \"Jalisco\"\nmsgstr \"\"\n\n#: mx/mx_states.py:28\nmsgid \"Estado de México\"\nmsgstr \"ولاية مكسيكو\"\n\n#: mx/mx_states.py:29\nmsgid \"Michoacán\"\nmsgstr \"ميتشواكان\"\n\n#: mx/mx_states.py:30\nmsgid \"Morelos\"\nmsgstr \"موريلوس\"\n\n#: mx/mx_states.py:31\nmsgid \"Nayarit\"\nmsgstr \"ناياريت\"\n\n#: mx/mx_states.py:32\nmsgid \"Nuevo León\"\nmsgstr \"نويفو ليون\"\n\n#: mx/mx_states.py:33\nmsgid \"Oaxaca\"\nmsgstr \"اواكساكا\"\n\n#: mx/mx_states.py:34\nmsgid \"Puebla\"\nmsgstr \"بويبلا\"\n\n#: mx/mx_states.py:35\nmsgid \"Querétaro\"\nmsgstr \"كويريتارو\"\n\n#: mx/mx_states.py:36\nmsgid \"Quintana Roo\"\nmsgstr \"كينتانا رو\"\n\n#: mx/mx_states.py:37\nmsgid \"Sinaloa\"\nmsgstr \"\"\n\n#: mx/mx_states.py:38\nmsgid \"San Luis Potosí\"\nmsgstr \"\"\n\n#: mx/mx_states.py:39\nmsgid \"Sonora\"\nmsgstr \"سونورا\"\n\n#: mx/mx_states.py:40\nmsgid \"Tabasco\"\nmsgstr \"تاباسكو\"\n\n#: mx/mx_states.py:41\nmsgid \"Tamaulipas\"\nmsgstr \"تاماوليباس\"\n\n#: mx/mx_states.py:42\nmsgid \"Tlaxcala\"\nmsgstr \"تلاكسكالا\"\n\n#: mx/mx_states.py:43\nmsgid \"Veracruz\"\nmsgstr \"\"\n\n#: mx/mx_states.py:44\nmsgid \"Yucatán\"\nmsgstr \"\"\n\n#: mx/mx_states.py:45\nmsgid \"Zacatecas\"\nmsgstr \"\"\n\n#: nl/forms.py:26\nmsgid \"Enter a valid postal code\"\nmsgstr \"أدخل رمزاً بريدياً صحيحاً.\"\n\n#: nl/forms.py:82\nmsgid \"Enter a valid SoFi number\"\nmsgstr \"أدخل رقم SoFi صحيح.\"\n\n#: nl/nl_provinces.py:4\nmsgid \"Drenthe\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:5\nmsgid \"Flevoland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:6\nmsgid \"Friesland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:7\nmsgid \"Gelderland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:8\nmsgid \"Groningen\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:10\nmsgid \"Noord-Brabant\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:11\nmsgid \"Noord-Holland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:12\nmsgid \"Overijssel\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:13\nmsgid \"Utrecht\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:14\nmsgid \"Zeeland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:15\nmsgid \"Zuid-Holland\"\nmsgstr \"\"\n\n#: no/forms.py:39\nmsgid \"Enter a valid Norwegian social security number.\"\nmsgstr \"أدخل رقم ضمان اجتماعي نرويجي صحيح.\"\n\n#: pe/forms.py:28\nmsgid \"This field requires 8 digits.\"\nmsgstr \"يتطلب هذا الحقل 8 أرقام.\"\n\n#: pe/forms.py:56\nmsgid \"This field requires 11 digits.\"\nmsgstr \"يتطلب هذا الحقل 11 أرقام.\"\n\n#: pl/forms.py:42\nmsgid \"National Identification Number consists of 11 digits.\"\nmsgstr \"يتكون رقم الهوية الوطني من 11 رقماً.\"\n\n#: pl/forms.py:43\nmsgid \"Wrong checksum for the National Identification Number.\"\nmsgstr \"تدقيق مجموع خاطئ لرقم الهوية الوطنية.\"\n\n#: pl/forms.py:79\nmsgid \"National ID Card Number consists of 3 letters and 6 digits.\"\nmsgstr \"\"\n\n#: pl/forms.py:80\nmsgid \"Wrong checksum for the National ID Card Number.\"\nmsgstr \"\"\n\n#: pl/forms.py:131\nmsgid \"\"\n\"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or \"\n\"XXXXXXXXXX.\"\nmsgstr \"\"\n\n#: pl/forms.py:132\nmsgid \"Wrong checksum for the Tax Number (NIP).\"\nmsgstr \"تدقيق مجموع خاطئ لرقم الضريبة (NIP).\"\n\n#: pl/forms.py:171\nmsgid \"National Business Register Number (REGON) consists of 9 or 14 digits.\"\nmsgstr \"رقم السجل التجاري الوطني (REGON) يتكون من 9 أو 14 رقم.\"\n\n#: pl/forms.py:172\nmsgid \"Wrong checksum for the National Business Register Number (REGON).\"\nmsgstr \"تدقيق مجموع خاطئ لرقم السجل التجاري الوطني (REGON).\"\n\n#: pl/forms.py:212\nmsgid \"Enter a postal code in the format XX-XXX.\"\nmsgstr \"أدخل رمزاً بريدياً بالنسق XX-XXX.\"\n\n#: pl/pl_voivodeships.py:8\nmsgid \"Lower Silesia\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:9\nmsgid \"Kuyavia-Pomerania\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:10\nmsgid \"Lublin\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:11\nmsgid \"Lubusz\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:12\nmsgid \"Lodz\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:13\nmsgid \"Lesser Poland\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:14\nmsgid \"Masovia\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:15\nmsgid \"Opole\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:16\nmsgid \"Subcarpatia\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:17\nmsgid \"Podlasie\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:18\nmsgid \"Pomerania\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:19\nmsgid \"Silesia\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:20\nmsgid \"Swietokrzyskie\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:21\nmsgid \"Warmia-Masuria\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:22\nmsgid \"Greater Poland\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:23\nmsgid \"West Pomerania\"\nmsgstr \"\"\n\n#: pt/forms.py:19\nmsgid \"Enter a zip code in the format XXXX-XXX.\"\nmsgstr \"أدخل رمزاً بريدياً بالنسق XXXX-XXX.\"\n\n#: pt/forms.py:39\nmsgid \"Phone numbers must have 9 digits, or start by + or 00.\"\nmsgstr \"يجب أن تحتوي أرقام الهواتف 9 أرقام، أو أن تبدأ بعلامة + أو صفرين.\"\n\n#: ro/forms.py:22\nmsgid \"Enter a valid CIF.\"\nmsgstr \"أدخل قيمة CIF صحيحة.\"\n\n#: ro/forms.py:59\nmsgid \"Enter a valid CNP.\"\nmsgstr \"أدخل قيمة CNP صحيحة.\"\n\n#: ro/forms.py:143\nmsgid \"Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format\"\nmsgstr \"أدخل رمز IBAN صحيحاً بالنسق ROXX-XXXX-XXXX-XXXX-XXXX-XXXX\"\n\n#: ro/forms.py:175\nmsgid \"Phone numbers must be in XXXX-XXXXXX format.\"\nmsgstr \"أرقام الهاتف يجب أن تكون بالنسق XXXX-XXXXXX.\"\n\n#: ro/forms.py:200\nmsgid \"Enter a valid postal code in the format XXXXXX\"\nmsgstr \"أدخل رمزاً بريدياً صحيحاً بالنسق XXXXXX\"\n\n#: ru/forms.py:37\nmsgid \"Enter a postal code in the format XXXXXX.\"\nmsgstr \"\"\n\n#: ru/forms.py:50\nmsgid \"Enter a passport number in the format XXXX XXXXXX.\"\nmsgstr \"\"\n\n#: ru/forms.py:63\nmsgid \"Enter a passport number in the format XX XXXXXXX.\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:10\nmsgid \"Central Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:11\nmsgid \"South Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:12\nmsgid \"North-West Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:13\nmsgid \"Far-East Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:14\nmsgid \"Siberian Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:15\nmsgid \"Ural Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:16\nmsgid \"Privolzhsky Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:17\nmsgid \"North-Caucasian Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:21\nmsgid \"Moskva\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:22\nmsgid \"Saint-Peterburg\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:23\nmsgid \"Moskovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:24\nmsgid \"Adygeya, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:25\nmsgid \"Bashkortostan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:26\nmsgid \"Buryatia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:27\nmsgid \"Altay, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:28\nmsgid \"Dagestan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:29\nmsgid \"Ingushskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:30\nmsgid \"Kabardino-Balkarskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:31\nmsgid \"Kalmykia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:32\nmsgid \"Karachaevo-Cherkesskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:33\nmsgid \"Karelia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:34\nmsgid \"Komi, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:35\nmsgid \"Mariy Ehl, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:36\nmsgid \"Mordovia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:37\nmsgid \"Sakha, Respublika (Yakutiya)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:38\nmsgid \"Severnaya Osetia, Respublika (Alania)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:39\nmsgid \"Tatarstan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:40\nmsgid \"Tyva, Respublika (Tuva)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:41\nmsgid \"Udmurtskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:42\nmsgid \"Khakassiya, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:43\nmsgid \"Chechenskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:44\nmsgid \"Chuvashskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:45\nmsgid \"Altayskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:46\nmsgid \"Zabaykalskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:47\nmsgid \"Kamchatskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:48\nmsgid \"Krasnodarskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:49\nmsgid \"Krasnoyarskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:50\nmsgid \"Permskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:51\nmsgid \"Primorskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:52\nmsgid \"Stavropol'siyy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:53\nmsgid \"Khabarovskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:54\nmsgid \"Amurskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:55\nmsgid \"Arkhangel'skaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:56\nmsgid \"Astrakhanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:57\nmsgid \"Belgorodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:58\nmsgid \"Bryanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:59\nmsgid \"Vladimirskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:60\nmsgid \"Volgogradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:61\nmsgid \"Vologodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:62\nmsgid \"Voronezhskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:63\nmsgid \"Ivanovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:64\nmsgid \"Irkutskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:65\nmsgid \"Kaliningradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:66\nmsgid \"Kaluzhskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:67\nmsgid \"Kemerovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:68\nmsgid \"Kirovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:69\nmsgid \"Kostromskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:70\nmsgid \"Kurganskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:71\nmsgid \"Kurskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:72\nmsgid \"Leningradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:73\nmsgid \"Lipeckaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:74\nmsgid \"Magadanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:75\nmsgid \"Murmanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:76\nmsgid \"Nizhegorodskaja oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:77\nmsgid \"Novgorodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:78\nmsgid \"Novosibirskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:79\nmsgid \"Omskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:80\nmsgid \"Orenburgskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:81\nmsgid \"Orlovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:82\nmsgid \"Penzenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:83\nmsgid \"Pskovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:84\nmsgid \"Rostovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:85\nmsgid \"Rjazanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:86\nmsgid \"Samarskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:87\nmsgid \"Saratovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:88\nmsgid \"Sakhalinskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:89\nmsgid \"Sverdlovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:90\nmsgid \"Smolenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:91\nmsgid \"Tambovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:92\nmsgid \"Tverskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:93\nmsgid \"Tomskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:94\nmsgid \"Tul'skaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:95\nmsgid \"Tyumenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:96\nmsgid \"Ul'ianovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:97\nmsgid \"Chelyabinskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:98\nmsgid \"Yaroslavskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:99\nmsgid \"Evreyskaya avtonomnaja oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:100\nmsgid \"Neneckiy autonomnyy okrug\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:101\nmsgid \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:102\nmsgid \"Chukotskiy avtonomnyy okrug\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:103\nmsgid \"Yamalo-Neneckiy avtonomnyy okrug\"\nmsgstr \"\"\n\n#: se/forms.py:54\nmsgid \"Enter a valid Swedish organisation number.\"\nmsgstr \"أدخل رقم تنظيم سويدي صحيح.\"\n\n#: se/forms.py:111\nmsgid \"Enter a valid Swedish personal identity number.\"\nmsgstr \"أدخل رقم مُعرّف شخصي سويدي صحيح.\"\n\n#: se/forms.py:112\nmsgid \"Co-ordination numbers are not allowed.\"\nmsgstr \"أرقام Co-ordination غير مسموح بها.\"\n\n#: se/forms.py:154\nmsgid \"Enter a Swedish postal code in the format XXXXX.\"\nmsgstr \"أدخل رمز بريدي سويدي بالنسبق XXXXX.\"\n\n#: se/se_counties.py:16\nmsgid \"Stockholm\"\nmsgstr \"ستوكهولم\"\n\n#: se/se_counties.py:17\nmsgid \"Västerbotten\"\nmsgstr \"\"\n\n#: se/se_counties.py:18\nmsgid \"Norrbotten\"\nmsgstr \"\"\n\n#: se/se_counties.py:19\nmsgid \"Uppsala\"\nmsgstr \"\"\n\n#: se/se_counties.py:20\nmsgid \"Södermanland\"\nmsgstr \"\"\n\n#: se/se_counties.py:21\nmsgid \"Östergötland\"\nmsgstr \"\"\n\n#: se/se_counties.py:22\nmsgid \"Jönköping\"\nmsgstr \"\"\n\n#: se/se_counties.py:23\nmsgid \"Kronoberg\"\nmsgstr \"\"\n\n#: se/se_counties.py:24\nmsgid \"Kalmar\"\nmsgstr \"\"\n\n#: se/se_counties.py:25\nmsgid \"Gotland\"\nmsgstr \"\"\n\n#: se/se_counties.py:26\nmsgid \"Blekinge\"\nmsgstr \"\"\n\n#: se/se_counties.py:27\nmsgid \"Skåne\"\nmsgstr \"\"\n\n#: se/se_counties.py:28\nmsgid \"Halland\"\nmsgstr \"\"\n\n#: se/se_counties.py:29\nmsgid \"Västra Götaland\"\nmsgstr \"\"\n\n#: se/se_counties.py:30\nmsgid \"Värmland\"\nmsgstr \"\"\n\n#: se/se_counties.py:31\nmsgid \"Örebro\"\nmsgstr \"\"\n\n#: se/se_counties.py:32\nmsgid \"Västmanland\"\nmsgstr \"\"\n\n#: se/se_counties.py:33\nmsgid \"Dalarna\"\nmsgstr \"\"\n\n#: se/se_counties.py:34\nmsgid \"Gävleborg\"\nmsgstr \"\"\n\n#: se/se_counties.py:35\nmsgid \"Västernorrland\"\nmsgstr \"\"\n\n#: se/se_counties.py:36\nmsgid \"Jämtland\"\nmsgstr \"\"\n\n#: si/forms.py:25\nmsgid \"The first 7 digits of the EMSO must represent a valid past date.\"\nmsgstr \"\"\n\n#: si/forms.py:26\nmsgid \"The EMSO is not valid.\"\nmsgstr \"\"\n\n#: si/forms.py:86\nmsgid \"Enter a valid tax number in form SIXXXXXXXX\"\nmsgstr \"\"\n\n#: si/forms.py:151\nmsgid \"Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:8\nmsgid \"Banska Bystrica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:9\nmsgid \"Banska Stiavnica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:10\nmsgid \"Bardejov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:11\nmsgid \"Banovce nad Bebravou\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:12\nmsgid \"Brezno\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:13\nmsgid \"Bratislava I\"\nmsgstr \"براتيسلافا I\"\n\n#: sk/sk_districts.py:14\nmsgid \"Bratislava II\"\nmsgstr \"براتيسلافا II\"\n\n#: sk/sk_districts.py:15\nmsgid \"Bratislava III\"\nmsgstr \"براتيسلافا III\"\n\n#: sk/sk_districts.py:16\nmsgid \"Bratislava IV\"\nmsgstr \"براتيسلافا IV\"\n\n#: sk/sk_districts.py:17\nmsgid \"Bratislava V\"\nmsgstr \"براتيسلافا V\"\n\n#: sk/sk_districts.py:18\nmsgid \"Bytca\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:19\nmsgid \"Cadca\"\nmsgstr \"تشادسا\"\n\n#: sk/sk_districts.py:20\nmsgid \"Detva\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:21\nmsgid \"Dolny Kubin\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:22\nmsgid \"Dunajska Streda\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:23\nmsgid \"Galanta\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:24\nmsgid \"Gelnica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:25\nmsgid \"Hlohovec\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:26\nmsgid \"Humenne\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:27\nmsgid \"Ilava\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:28\nmsgid \"Kezmarok\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:29\nmsgid \"Komarno\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:30\nmsgid \"Kosice I\"\nmsgstr \"كوشيتسه I\"\n\n#: sk/sk_districts.py:31\nmsgid \"Kosice II\"\nmsgstr \"كوشيتسه II\"\n\n#: sk/sk_districts.py:32\nmsgid \"Kosice III\"\nmsgstr \"كوشيتسه III\"\n\n#: sk/sk_districts.py:33\nmsgid \"Kosice IV\"\nmsgstr \"كوشيتسه IV\"\n\n#: sk/sk_districts.py:34\nmsgid \"Kosice - okolie\"\nmsgstr \"كوشيتسه - أوكولي\"\n\n#: sk/sk_districts.py:35\nmsgid \"Krupina\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:36\nmsgid \"Kysucke Nove Mesto\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:37\nmsgid \"Levice\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:38\nmsgid \"Levoca\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:39\nmsgid \"Liptovsky Mikulas\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:40\nmsgid \"Lucenec\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:41\nmsgid \"Malacky\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:42\nmsgid \"Martin\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:43\nmsgid \"Medzilaborce\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:44\nmsgid \"Michalovce\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:45\nmsgid \"Myjava\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:46\nmsgid \"Namestovo\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:47\nmsgid \"Nitra\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:48\nmsgid \"Nove Mesto nad Vahom\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:49\nmsgid \"Nove Zamky\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:50\nmsgid \"Partizanske\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:51\nmsgid \"Pezinok\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:52\nmsgid \"Piestany\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:53\nmsgid \"Poltar\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:54\nmsgid \"Poprad\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:55\nmsgid \"Povazska Bystrica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:56\nmsgid \"Presov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:57\nmsgid \"Prievidza\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:58\nmsgid \"Puchov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:59\nmsgid \"Revuca\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:60\nmsgid \"Rimavska Sobota\"\nmsgstr \"ريمافسكا سوبوتا\"\n\n#: sk/sk_districts.py:61\nmsgid \"Roznava\"\nmsgstr \"روتزنافا\"\n\n#: sk/sk_districts.py:62\nmsgid \"Ruzomberok\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:63\nmsgid \"Sabinov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:64\nmsgid \"Senec\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:65\nmsgid \"Senica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:66\nmsgid \"Skalica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:67\nmsgid \"Snina\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:68\nmsgid \"Sobrance\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:69\nmsgid \"Spisska Nova Ves\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:70\nmsgid \"Stara Lubovna\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:71\nmsgid \"Stropkov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:72\nmsgid \"Svidnik\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:73\nmsgid \"Sala\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:74\nmsgid \"Topolcany\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:75\nmsgid \"Trebisov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:76\nmsgid \"Trencin\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:77\nmsgid \"Trnava\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:78\nmsgid \"Turcianske Teplice\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:79\nmsgid \"Tvrdosin\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:80\nmsgid \"Velky Krtis\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:81\nmsgid \"Vranov nad Toplou\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:82\nmsgid \"Zlate Moravce\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:83\nmsgid \"Zvolen\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:84\nmsgid \"Zarnovica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:85\nmsgid \"Ziar nad Hronom\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:86\nmsgid \"Zilina\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:8\nmsgid \"Banska Bystrica region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:9\nmsgid \"Bratislava region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:10\nmsgid \"Kosice region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:11\nmsgid \"Nitra region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:12\nmsgid \"Presov region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:13\nmsgid \"Trencin region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:14\nmsgid \"Trnava region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:15\nmsgid \"Zilina region\"\nmsgstr \"\"\n\n#: tr/forms.py:21\nmsgid \"Enter a postal code in the format XXXXX.\"\nmsgstr \"أدخل الرمز البريدي بالنسق XXXXX.\"\n\n#: tr/forms.py:42\nmsgid \"Phone numbers must be in 0XXX XXX XXXX format.\"\nmsgstr \"أرقام الهواتف يجب أن تكون بالنسق 0XXX XXX XXXX.\"\n\n#: tr/forms.py:69\nmsgid \"Enter a valid Turkish Identification number.\"\nmsgstr \"أدخل رقم هوية تركية صحيح.\"\n\n#: tr/forms.py:70\nmsgid \"Turkish Identification number must be 11 digits.\"\nmsgstr \"رقم الهوية التركي يجب أن يتكون من 11 رقماً.\"\n\n#: us/forms.py:21\nmsgid \"Enter a zip code in the format XXXXX or XXXXX-XXXX.\"\nmsgstr \"أدخل رمز zip بالنسق XXXXX أو XXXXX-XXXX.\"\n\n#: us/forms.py:59\nmsgid \"Enter a valid U.S. Social Security number in XXX-XX-XXXX format.\"\nmsgstr \"أدخل رقم ضمان اجتماعي أميركي صحيح بالنسق XXX-XX-XXXX.\"\n\n#: us/forms.py:92\nmsgid \"Enter a U.S. state or territory.\"\nmsgstr \"أدخل اسم ولاية أو إقليم أميركي.\"\n\n#: us/models.py:8\nmsgid \"U.S. state (two uppercase letters)\"\nmsgstr \"ولاية أمريكية (حرفان كبيران)\"\n\n#: us/models.py:17\nmsgid \"U.S. postal code (two uppercase letters)\"\nmsgstr \"رمز بريدي أميركي (حرفان لاتينيان كبيران)\"\n\n#: us/models.py:26\nmsgid \"Phone number\"\nmsgstr \"رقم هاتف\"\n\n#: uy/forms.py:29\nmsgid \"Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.\"\nmsgstr \"أدخل رقم CI صحيح بالنسق X.XXX.XXX-X,XXXXXXX-X أو XXXXXXXX.\"\n\n#: uy/forms.py:31\nmsgid \"Enter a valid CI number.\"\nmsgstr \"أدخل رقم CI صحيح.\"\n\n#: za/forms.py:22\nmsgid \"Enter a valid South African ID number\"\nmsgstr \"أدخل رقم هويّة جنوب إفريقيّة صحيح\"\n\n#: za/forms.py:56\nmsgid \"Enter a valid South African postal code\"\nmsgstr \"أدخل رمز بريد جنوب إفريقي صحيح\"\n\n#: za/za_provinces.py:4\nmsgid \"Eastern Cape\"\nmsgstr \"شرق كيب\"\n\n#: za/za_provinces.py:5\nmsgid \"Free State\"\nmsgstr \"\"\n\n#: za/za_provinces.py:6\nmsgid \"Gauteng\"\nmsgstr \"\"\n\n#: za/za_provinces.py:7\nmsgid \"KwaZulu-Natal\"\nmsgstr \"\"\n\n#: za/za_provinces.py:8\nmsgid \"Limpopo\"\nmsgstr \"\"\n\n#: za/za_provinces.py:9\nmsgid \"Mpumalanga\"\nmsgstr \"\"\n\n#: za/za_provinces.py:10\nmsgid \"Northern Cape\"\nmsgstr \"شمال كيب\"\n\n#: za/za_provinces.py:11\nmsgid \"North West\"\nmsgstr \"شمال شرق\"\n\n#: za/za_provinces.py:12\nmsgid \"Western Cape\"\nmsgstr \"غير كيب\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/locale/az/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Ali Ismayilov <ali@ismailov.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-10-17 09:17+0000\\n\"\n\"Last-Translator: Ali Ismayilov <ali@ismailov.info>\\n\"\n\"Language-Team: Azerbaijani (http://www.transifex.com/projects/p/django/\"\n\"language/az/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: az\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: ar/forms.py:30\nmsgid \"Enter a postal code in the format NNNN or ANNNNAAA.\"\nmsgstr \"Poçt indeksini NNNN və ya ANNNNAAA formatında daxil edin.\"\n\n#: ar/forms.py:52 br/forms.py:95 br/forms.py:134 pe/forms.py:27 pe/forms.py:55\nmsgid \"This field requires only numbers.\"\nmsgstr \"Bu sahəyə ancaq rəqəmlər yazmaq olar.\"\n\n#: ar/forms.py:53\nmsgid \"This field requires 7 or 8 digits.\"\nmsgstr \"Bu sahəyə 7 və ya 8 rəqəm yazmaq olar.\"\n\n#: ar/forms.py:82\nmsgid \"Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.\"\nmsgstr \"XX-XXXXXXXX-X və ya XXXXXXXXXXXX formatında düzgün CUIT daxil edin.\"\n\n#: ar/forms.py:83\nmsgid \"Invalid CUIT.\"\nmsgstr \"Səhv CUIT.\"\n\n#: ar/forms.py:84\nmsgid \"Invalid legal type. Type must be 27, 20, 23 or 30.\"\nmsgstr \"\"\n\n#: at/at_states.py:5\nmsgid \"Burgenland\"\nmsgstr \"Burgenland\"\n\n#: at/at_states.py:6\nmsgid \"Carinthia\"\nmsgstr \"Karintiya\"\n\n#: at/at_states.py:7\nmsgid \"Lower Austria\"\nmsgstr \"Aşağı Avstriya\"\n\n#: at/at_states.py:8\nmsgid \"Upper Austria\"\nmsgstr \"Yuxarı Avstriya\"\n\n#: at/at_states.py:9\nmsgid \"Salzburg\"\nmsgstr \"Zalsburq\"\n\n#: at/at_states.py:10\nmsgid \"Styria\"\nmsgstr \"Ştiriya\"\n\n#: at/at_states.py:11\nmsgid \"Tyrol\"\nmsgstr \"Tirol\"\n\n#: at/at_states.py:12\nmsgid \"Vorarlberg\"\nmsgstr \"Vorarlberq\"\n\n#: at/at_states.py:13\nmsgid \"Vienna\"\nmsgstr \"Vyana\"\n\n#: at/forms.py:22 ch/forms.py:22 no/forms.py:19\nmsgid \"Enter a zip code in the format XXXX.\"\nmsgstr \"XXXX formatında poçt indeksini daxil edin.\"\n\n#: at/forms.py:50\nmsgid \"Enter a valid Austrian Social Security Number in XXXX XXXXXX format.\"\nmsgstr \"\"\n\"XXXX XXXXXX formatında düzgün Avstriya Sosial Sığorta Nömrəsini daxil edin.\"\n\n#: au/forms.py:26\nmsgid \"Enter a 4 digit postcode.\"\nmsgstr \"4-rəqəmli poçt indeksini daxil edin.\"\n\n#: au/models.py:9\nmsgid \"Australian State\"\nmsgstr \"Avstraliya ştatı\"\n\n#: au/models.py:19\nmsgid \"Australian Postcode\"\nmsgstr \"Avstraliya poçt indeksi\"\n\n#: au/models.py:33\nmsgid \"Australian Phone number\"\nmsgstr \"Avstraliya telefon nömrəsi\"\n\n#: be/be_provinces.py:5\nmsgid \"Antwerp\"\nmsgstr \"Antverpen\"\n\n#: be/be_provinces.py:6\nmsgid \"Brussels\"\nmsgstr \"Brüssel\"\n\n#: be/be_provinces.py:7\nmsgid \"East Flanders\"\nmsgstr \"Şərqi Flandriya\"\n\n#: be/be_provinces.py:8\nmsgid \"Flemish Brabant\"\nmsgstr \"Flamand Brabantı\"\n\n#: be/be_provinces.py:9\nmsgid \"Hainaut\"\nmsgstr \"Hainaut\"\n\n#: be/be_provinces.py:10\nmsgid \"Liege\"\nmsgstr \"Lyej\"\n\n#: be/be_provinces.py:11 nl/nl_provinces.py:9\nmsgid \"Limburg\"\nmsgstr \"Limburq\"\n\n#: be/be_provinces.py:12\nmsgid \"Luxembourg\"\nmsgstr \"Lüksemburq\"\n\n#: be/be_provinces.py:13\nmsgid \"Namur\"\nmsgstr \"Namur\"\n\n#: be/be_provinces.py:14\nmsgid \"Walloon Brabant\"\nmsgstr \"Valon Brabantı\"\n\n#: be/be_provinces.py:15\nmsgid \"West Flanders\"\nmsgstr \"Qərbi Flandriya\"\n\n#: be/be_regions.py:5\nmsgid \"Brussels Capital Region\"\nmsgstr \"Brüssel Paytaxt Rayonu\"\n\n#: be/be_regions.py:6\nmsgid \"Flemish Region\"\nmsgstr \"Flamand regionu\"\n\n#: be/be_regions.py:7\nmsgid \"Wallonia\"\nmsgstr \"Valoniya\"\n\n#: be/forms.py:25\nmsgid \"Enter a valid postal code in the range and format 1XXX - 9XXX.\"\nmsgstr \"1XXX-9XXX diapazonu və formatında düzgün poçt indeksini daxil edin.\"\n\n#: be/forms.py:48\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\nmsgstr \"\"\n\"0x xxx xx xx, 0xx xx xx xx, 04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/\"\n\"xx.xx.xx, 0x.xxx.xx.xx, 0xx.xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx və ya \"\n\"04xxxxxxxx formatlarından birində işlək telefon nömrəsini daxil edin.\"\n\n#: br/forms.py:22\nmsgid \"Enter a zip code in the format XXXXX-XXX.\"\nmsgstr \"XXXXX-XXX formatında poçt indeksini daxil edin.\"\n\n#: br/forms.py:31\nmsgid \"Phone numbers must be in XX-XXXX-XXXX format.\"\nmsgstr \"Telefon nömrələri XX-XXXX-XXXX formatında olmalıdır.\"\n\n#: br/forms.py:58\nmsgid \"\"\n\"Select a valid brazilian state. That state is not one of the available \"\n\"states.\"\nmsgstr \"Düzgün Braziliya ştatı seçin. Bizim siyahıda belə ştat yoxdur.\"\n\n#: br/forms.py:93\nmsgid \"Invalid CPF number.\"\nmsgstr \"Səhv CPF nömrəsi.\"\n\n#: br/forms.py:94\nmsgid \"This field requires at most 11 digits or 14 characters.\"\nmsgstr \"Bura ən çoxu 11 rəqəm və ya 14 simvol yaza bilərsiniz.\"\n\n#: br/forms.py:133\nmsgid \"Invalid CNPJ number.\"\nmsgstr \"Səhv CNPJ nömrəsi.\"\n\n#: br/forms.py:135\nmsgid \"This field requires at least 14 digits\"\nmsgstr \"Bu sahəyə ən azı 14 rəqəm yazmaq lazımdır.\"\n\n#: ca/forms.py:29\nmsgid \"Enter a postal code in the format XXX XXX.\"\nmsgstr \"XXX XXX formatında poçt indeksini daxil edin.\"\n\n#: ca/forms.py:47 us/forms.py:30\nmsgid \"Phone numbers must be in XXX-XXX-XXXX format.\"\nmsgstr \"Telefon nömrəsi XXX-XXX-XXXX formatında olmalıdır.\"\n\n#: ca/forms.py:69\nmsgid \"Enter a Canadian province or territory.\"\nmsgstr \"\"\n\n#: ca/forms.py:110\nmsgid \"Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.\"\nmsgstr \"\"\n\"XXX-XXX-XXX formatında işlək Kanada Sosial Sığorta nömrəsini daxil edin.\"\n\n#: ch/ch_states.py:5\nmsgid \"Aargau\"\nmsgstr \"Aarqo\"\n\n#: ch/ch_states.py:6\nmsgid \"Appenzell Innerrhoden\"\nmsgstr \"Appensell İnneroden\"\n\n#: ch/ch_states.py:7\nmsgid \"Appenzell Ausserrhoden\"\nmsgstr \"Appensell Ossearroden\"\n\n#: ch/ch_states.py:8\nmsgid \"Basel-Stadt\"\nmsgstr \"Bazel-Ştadt\"\n\n#: ch/ch_states.py:9\nmsgid \"Basel-Land\"\nmsgstr \"Bazel-Land\"\n\n#: ch/ch_states.py:10\nmsgid \"Berne\"\nmsgstr \"Bern\"\n\n#: ch/ch_states.py:11\nmsgid \"Fribourg\"\nmsgstr \"Friburg\"\n\n#: ch/ch_states.py:12\nmsgid \"Geneva\"\nmsgstr \"Cenevrə\"\n\n#: ch/ch_states.py:13\nmsgid \"Glarus\"\nmsgstr \"Qlarus\"\n\n#: ch/ch_states.py:14\nmsgid \"Graubuenden\"\nmsgstr \"Qraubünden\"\n\n#: ch/ch_states.py:15\nmsgid \"Jura\"\nmsgstr \"Cura\"\n\n#: ch/ch_states.py:16\nmsgid \"Lucerne\"\nmsgstr \"Lusern\"\n\n#: ch/ch_states.py:17\nmsgid \"Neuchatel\"\nmsgstr \"Neuşatel\"\n\n#: ch/ch_states.py:18\nmsgid \"Nidwalden\"\nmsgstr \"Nidvalden\"\n\n#: ch/ch_states.py:19\nmsgid \"Obwalden\"\nmsgstr \"Obvalden\"\n\n#: ch/ch_states.py:20\nmsgid \"Schaffhausen\"\nmsgstr \"Şaffhauzen\"\n\n#: ch/ch_states.py:21\nmsgid \"Schwyz\"\nmsgstr \"Şvis\"\n\n#: ch/ch_states.py:22\nmsgid \"Solothurn\"\nmsgstr \"Zoloturn\"\n\n#: ch/ch_states.py:23\nmsgid \"St. Gallen\"\nmsgstr \"Sankt-Qallen\"\n\n#: ch/ch_states.py:24\nmsgid \"Thurgau\"\nmsgstr \"Turqau\"\n\n#: ch/ch_states.py:25\nmsgid \"Ticino\"\nmsgstr \"Tiçino\"\n\n#: ch/ch_states.py:26\nmsgid \"Uri\"\nmsgstr \"Uri\"\n\n#: ch/ch_states.py:27\nmsgid \"Valais\"\nmsgstr \"Vale\"\n\n#: ch/ch_states.py:28\nmsgid \"Vaud\"\nmsgstr \"Vo\"\n\n#: ch/ch_states.py:29\nmsgid \"Zug\"\nmsgstr \"Suq\"\n\n#: ch/ch_states.py:30\nmsgid \"Zurich\"\nmsgstr \"Sürix\"\n\n#: ch/forms.py:37\nmsgid \"Phone numbers must be in 0XX XXX XX XX format.\"\nmsgstr \"\"\n\n#: ch/forms.py:68\nmsgid \"\"\n\"Enter a valid Swiss identity or passport card number in X1234567<0 or \"\n\"1234567890 format.\"\nmsgstr \"\"\n\"X1234567<0 və ya 1234567890 formatında İsveçrə şəxsiyyət vəsiqəsi və ya \"\n\"pasportu kodunu daxil edin.\"\n\n#: cl/forms.py:32\nmsgid \"Enter a valid Chilean RUT.\"\nmsgstr \"Çili üçün RUT daxil edin.\"\n\n#: cl/forms.py:33\nmsgid \"Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.\"\nmsgstr \"XX.XXX.XXX-X formatında Çili üçün düzgün RUT daxil edin.\"\n\n#: cl/forms.py:34\nmsgid \"The Chilean RUT is not valid.\"\nmsgstr \"Çili üçün RUT düzgün deyil.\"\n\n#: cn/forms.py:84\nmsgid \"Enter a post code in the format XXXXXX.\"\nmsgstr \"XXXXXX formatında poçt indeksini daxil edin.\"\n\n#: cn/forms.py:105\nmsgid \"ID Card Number consists of 15 or 18 digits.\"\nmsgstr \"Şəxsiyyət vəsiqəsi kodu 15 və ya 18 rəqəmdən ibarət olmalıdır.\"\n\n#: cn/forms.py:106\nmsgid \"Invalid ID Card Number: Wrong checksum\"\nmsgstr \"\"\n\n#: cn/forms.py:107\nmsgid \"Invalid ID Card Number: Wrong birthdate\"\nmsgstr \"\"\n\n#: cn/forms.py:108\nmsgid \"Invalid ID Card Number: Wrong location code\"\nmsgstr \"\"\n\n#: cn/forms.py:193\nmsgid \"Enter a valid phone number.\"\nmsgstr \"\"\n\n#: cn/forms.py:210\nmsgid \"Enter a valid cell number.\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:8\nmsgid \"Prague\"\nmsgstr \"Praqa\"\n\n#: cz/cz_regions.py:9\nmsgid \"Central Bohemian Region\"\nmsgstr \"Mərkəzi Bohemiya vilayəti\"\n\n#: cz/cz_regions.py:10\nmsgid \"South Bohemian Region\"\nmsgstr \"Cənubi Bohemiya vilayəti\"\n\n#: cz/cz_regions.py:11\nmsgid \"Pilsen Region\"\nmsgstr \"Plsen vilayəti\"\n\n#: cz/cz_regions.py:12\nmsgid \"Carlsbad Region\"\nmsgstr \"Karlsbad vilayəti\"\n\n#: cz/cz_regions.py:13\nmsgid \"Usti Region\"\nmsgstr \"Usti vilayəti\"\n\n#: cz/cz_regions.py:14\nmsgid \"Liberec Region\"\nmsgstr \"Liberets vilayəti\"\n\n#: cz/cz_regions.py:15\nmsgid \"Hradec Region\"\nmsgstr \"Hradets vilayəti\"\n\n#: cz/cz_regions.py:16\nmsgid \"Pardubice Region\"\nmsgstr \"Pardubits vilayəti\"\n\n#: cz/cz_regions.py:17\nmsgid \"Vysocina Region\"\nmsgstr \"Vısoçina vilayəti\"\n\n#: cz/cz_regions.py:18\nmsgid \"South Moravian Region\"\nmsgstr \"Cənubi Moraviya vilayəti\"\n\n#: cz/cz_regions.py:19\nmsgid \"Olomouc Region\"\nmsgstr \"Olomouts vilayəti\"\n\n#: cz/cz_regions.py:20\nmsgid \"Zlin Region\"\nmsgstr \"Zlin vilayəti\"\n\n#: cz/cz_regions.py:21\nmsgid \"Moravian-Silesian Region\"\nmsgstr \"Moraviya-Silesiya vilayəti\"\n\n#: cz/forms.py:32 sk/forms.py:33\nmsgid \"Enter a postal code in the format XXXXX or XXX XX.\"\nmsgstr \"XXXXX və ya XXX XX formatında poçt indeksini daxil edin.\"\n\n#: cz/forms.py:52\nmsgid \"Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.\"\nmsgstr \"XXXXXX/XXXX və ya XXXXXXXXXX formatında doğum kodunu daxil edin.\"\n\n#: cz/forms.py:53\nmsgid \"Enter a valid birth number.\"\nmsgstr \"Doğum kodunu düzgün yazın.\"\n\n#: cz/forms.py:102\nmsgid \"Enter a valid IC number.\"\nmsgstr \"IC nömrəsini düzgün yazın.\"\n\n#: de/de_states.py:5\nmsgid \"Baden-Wuerttemberg\"\nmsgstr \"Baden-Vürtemberq\"\n\n#: de/de_states.py:6\nmsgid \"Bavaria\"\nmsgstr \"Bavariya\"\n\n#: de/de_states.py:7\nmsgid \"Berlin\"\nmsgstr \"Berlin\"\n\n#: de/de_states.py:8\nmsgid \"Brandenburg\"\nmsgstr \"Brandenburq\"\n\n#: de/de_states.py:9\nmsgid \"Bremen\"\nmsgstr \"Bremen\"\n\n#: de/de_states.py:10\nmsgid \"Hamburg\"\nmsgstr \"Hamburq\"\n\n#: de/de_states.py:11\nmsgid \"Hessen\"\nmsgstr \"Hessen\"\n\n#: de/de_states.py:12\nmsgid \"Mecklenburg-Western Pomerania\"\nmsgstr \"Meklenburq-Qərbi Pomeraniya\"\n\n#: de/de_states.py:13\nmsgid \"Lower Saxony\"\nmsgstr \"Aşağı Saksoniya\"\n\n#: de/de_states.py:14\nmsgid \"North Rhine-Westphalia\"\nmsgstr \"Şimali Reyn-Vestfaliya\"\n\n#: de/de_states.py:15\nmsgid \"Rhineland-Palatinate\"\nmsgstr \"Reynland-Palatinatlıq\"\n\n#: de/de_states.py:16\nmsgid \"Saarland\"\nmsgstr \"Saar\"\n\n#: de/de_states.py:17\nmsgid \"Saxony\"\nmsgstr \"Saksoniya\"\n\n#: de/de_states.py:18\nmsgid \"Saxony-Anhalt\"\nmsgstr \"Saksoniya-Anhalt\"\n\n#: de/de_states.py:19\nmsgid \"Schleswig-Holstein\"\nmsgstr \"Şlezviq-Holştayn\"\n\n#: de/de_states.py:20\nmsgid \"Thuringia\"\nmsgstr \"Turingiya\"\n\n#: de/forms.py:20 fi/forms.py:18 fr/forms.py:20\nmsgid \"Enter a zip code in the format XXXXX.\"\nmsgstr \"XXXXX formatında poçt indeksini daxil edin.\"\n\n#: de/forms.py:46\nmsgid \"\"\n\"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"format.\"\nmsgstr \"\"\n\"XXXXXXXXXXX-XXXXXXX-XXXXXXX-X formatında Almaniya şəxsiyyət vəsiqəsinin \"\n\"seriya kodunu daxil edin.\"\n\n#: es/es_provinces.py:5\nmsgid \"Araba\"\nmsgstr \"\"\n\n#: es/es_provinces.py:6\nmsgid \"Albacete\"\nmsgstr \"Albesete\"\n\n#: es/es_provinces.py:7\nmsgid \"Alacant\"\nmsgstr \"Alakant\"\n\n#: es/es_provinces.py:8\nmsgid \"Almeria\"\nmsgstr \"Almeriya\"\n\n#: es/es_provinces.py:9\nmsgid \"Avila\"\nmsgstr \"Avila\"\n\n#: es/es_provinces.py:10\nmsgid \"Badajoz\"\nmsgstr \"Badaxos\"\n\n#: es/es_provinces.py:11\nmsgid \"Illes Balears\"\nmsgstr \"Balear adaları\"\n\n#: es/es_provinces.py:12\nmsgid \"Barcelona\"\nmsgstr \"Barselona\"\n\n#: es/es_provinces.py:13\nmsgid \"Burgos\"\nmsgstr \"Burqos\"\n\n#: es/es_provinces.py:14\nmsgid \"Caceres\"\nmsgstr \"Kaseres\"\n\n#: es/es_provinces.py:15\nmsgid \"Cadiz\"\nmsgstr \"Kadis\"\n\n#: es/es_provinces.py:16\nmsgid \"Castello\"\nmsgstr \"Kastelyo\"\n\n#: es/es_provinces.py:17\nmsgid \"Ciudad Real\"\nmsgstr \"Syudad Real\"\n\n#: es/es_provinces.py:18\nmsgid \"Cordoba\"\nmsgstr \"Kordoba\"\n\n#: es/es_provinces.py:19\nmsgid \"A Coruna\"\nmsgstr \"La Korunya\"\n\n#: es/es_provinces.py:20\nmsgid \"Cuenca\"\nmsgstr \"Kuenka\"\n\n#: es/es_provinces.py:21\nmsgid \"Girona\"\nmsgstr \"Xerona\"\n\n#: es/es_provinces.py:22\nmsgid \"Granada\"\nmsgstr \"Qrenada\"\n\n#: es/es_provinces.py:23\nmsgid \"Guadalajara\"\nmsgstr \"Qvadalaxara\"\n\n#: es/es_provinces.py:24\nmsgid \"Guipuzkoa\"\nmsgstr \"Qipuskoa\"\n\n#: es/es_provinces.py:25\nmsgid \"Huelva\"\nmsgstr \"Uelva\"\n\n#: es/es_provinces.py:26\nmsgid \"Huesca\"\nmsgstr \"Ueska\"\n\n#: es/es_provinces.py:27\nmsgid \"Jaen\"\nmsgstr \"Xaen\"\n\n#: es/es_provinces.py:28\nmsgid \"Leon\"\nmsgstr \"Leon\"\n\n#: es/es_provinces.py:29\nmsgid \"Lleida\"\nmsgstr \"Lleyda\"\n\n#: es/es_provinces.py:30 es/es_regions.py:17\nmsgid \"La Rioja\"\nmsgstr \"La Rioxa\"\n\n#: es/es_provinces.py:31\nmsgid \"Lugo\"\nmsgstr \"Luqo\"\n\n#: es/es_provinces.py:32 es/es_regions.py:18\nmsgid \"Madrid\"\nmsgstr \"Madrid\"\n\n#: es/es_provinces.py:33\nmsgid \"Malaga\"\nmsgstr \"Malaqa\"\n\n#: es/es_provinces.py:34\nmsgid \"Murcia\"\nmsgstr \"Mursiya\"\n\n#: es/es_provinces.py:35\nmsgid \"Navarre\"\nmsgstr \"Navarra\"\n\n#: es/es_provinces.py:36\nmsgid \"Ourense\"\nmsgstr \"Orense\"\n\n#: es/es_provinces.py:37\nmsgid \"Asturias\"\nmsgstr \"Asturiya\"\n\n#: es/es_provinces.py:38\nmsgid \"Palencia\"\nmsgstr \"Palensiya\"\n\n#: es/es_provinces.py:39\nmsgid \"Las Palmas\"\nmsgstr \"Las-Palmas\"\n\n#: es/es_provinces.py:40\nmsgid \"Pontevedra\"\nmsgstr \"Pontevedra\"\n\n#: es/es_provinces.py:41\nmsgid \"Salamanca\"\nmsgstr \"Salamanka\"\n\n#: es/es_provinces.py:42\nmsgid \"Santa Cruz de Tenerife\"\nmsgstr \"Santa Kruz de Tenererife\"\n\n#: es/es_provinces.py:43 es/es_regions.py:11\nmsgid \"Cantabria\"\nmsgstr \"Kantabriya\"\n\n#: es/es_provinces.py:44\nmsgid \"Segovia\"\nmsgstr \"Seqoviya\"\n\n#: es/es_provinces.py:45\nmsgid \"Seville\"\nmsgstr \"Sevilya\"\n\n#: es/es_provinces.py:46\nmsgid \"Soria\"\nmsgstr \"Soriya\"\n\n#: es/es_provinces.py:47\nmsgid \"Tarragona\"\nmsgstr \"Tarragona\"\n\n#: es/es_provinces.py:48\nmsgid \"Teruel\"\nmsgstr \"Teruel\"\n\n#: es/es_provinces.py:49\nmsgid \"Toledo\"\nmsgstr \"Toledo\"\n\n#: es/es_provinces.py:50\nmsgid \"Valencia\"\nmsgstr \"Valensiya\"\n\n#: es/es_provinces.py:51\nmsgid \"Valladolid\"\nmsgstr \"Valyadolid\"\n\n#: es/es_provinces.py:52\nmsgid \"Bizkaia\"\nmsgstr \"Biskayya\"\n\n#: es/es_provinces.py:53\nmsgid \"Zamora\"\nmsgstr \"Zamora\"\n\n#: es/es_provinces.py:54\nmsgid \"Zaragoza\"\nmsgstr \"Saraqosa\"\n\n#: es/es_provinces.py:55\nmsgid \"Ceuta\"\nmsgstr \"Seuta\"\n\n#: es/es_provinces.py:56\nmsgid \"Melilla\"\nmsgstr \"Melilya\"\n\n#: es/es_regions.py:5\nmsgid \"Andalusia\"\nmsgstr \"Əndəlus\"\n\n#: es/es_regions.py:6\nmsgid \"Aragon\"\nmsgstr \"Araqon\"\n\n#: es/es_regions.py:7\nmsgid \"Principality of Asturias\"\nmsgstr \"Asturiya knyazlığı\"\n\n#: es/es_regions.py:8\nmsgid \"Balearic Islands\"\nmsgstr \"Balear adaları\"\n\n#: es/es_regions.py:9\nmsgid \"Basque Country\"\nmsgstr \"Basklar Ölkəsi\"\n\n#: es/es_regions.py:10\nmsgid \"Canary Islands\"\nmsgstr \"Kanar adaları\"\n\n#: es/es_regions.py:12\nmsgid \"Castile-La Mancha\"\nmsgstr \"Kastiliya-La-Manş\"\n\n#: es/es_regions.py:13\nmsgid \"Castile and Leon\"\nmsgstr \"Kastiliya və Leon\"\n\n#: es/es_regions.py:14\nmsgid \"Catalonia\"\nmsgstr \"Kataloniya\"\n\n#: es/es_regions.py:15\nmsgid \"Extremadura\"\nmsgstr \"Estremadura\"\n\n#: es/es_regions.py:16\nmsgid \"Galicia\"\nmsgstr \"Qalisiya\"\n\n#: es/es_regions.py:19\nmsgid \"Region of Murcia\"\nmsgstr \"Mursiya vilayəti\"\n\n#: es/es_regions.py:20\nmsgid \"Foral Community of Navarre\"\nmsgstr \"Navarra Foral Cəmiyyəti\"\n\n#: es/es_regions.py:21\nmsgid \"Valencian Community\"\nmsgstr \"Valensiya Cəmiyyəti\"\n\n#: es/forms.py:26\nmsgid \"Enter a valid postal code in the range and format 01XXX - 52XXX.\"\nmsgstr \"\"\n\"01XXX - 52XXX formatı və diapazonunda düzgün poçt indeksini daxil edin.\"\n\n#: es/forms.py:46\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or \"\n\"9XXXXXXXX.\"\nmsgstr \"\"\n\"6XXXXXXXX, 8XXXXXXXX və ya 9XXXXXXXX formatlarından birində düzgün telefon \"\n\"nömrəsini daxil edin.\"\n\n#: es/forms.py:73\nmsgid \"Please enter a valid NIF, NIE, or CIF.\"\nmsgstr \"Düzgün NIF, NIE və ya CIF daxil edin.\"\n\n#: es/forms.py:74\nmsgid \"Please enter a valid NIF or NIE.\"\nmsgstr \"Düzgün NIF və ya NIE daxil edin.\"\n\n#: es/forms.py:75\nmsgid \"Invalid checksum for NIF.\"\nmsgstr \"NIF üçün yoxlama cəmi düzgün gəlmədi.\"\n\n#: es/forms.py:76\nmsgid \"Invalid checksum for NIE.\"\nmsgstr \"NIE üçün yoxlama cəmi düzgün gəlmədi.\"\n\n#: es/forms.py:77\nmsgid \"Invalid checksum for CIF.\"\nmsgstr \"CIF üçün yoxlama cəmi düzgün gəlmədi.\"\n\n#: es/forms.py:149\nmsgid \"\"\n\"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.\"\nmsgstr \"\"\n\"XXXX-XXXX-XX-XXXXXXXXXX formatında düzgün bank hesabı kodunu daxil edin.\"\n\n#: es/forms.py:150\nmsgid \"Invalid checksum for bank account number.\"\nmsgstr \"Bank hesabı kodu üçün yoxlama cəmi düzgün gəlmədi.\"\n\n#: fi/forms.py:33\nmsgid \"Enter a valid Finnish social security number.\"\nmsgstr \"Fin sosial müdafiə kodunu daxil edin.\"\n\n#: fr/forms.py:35\nmsgid \"Phone numbers must be in 0X XX XX XX XX format.\"\nmsgstr \"Telefon nömrələri 0X XX XX XX XX formatında olmalıdır.\"\n\n#: gb/forms.py:25\nmsgid \"Enter a valid postcode.\"\nmsgstr \"Düzgün poçt indeksini daxil edin.\"\n\n#: gb/gb_regions.py:11\nmsgid \"Bedfordshire\"\nmsgstr \"Bedfordşir\"\n\n#: gb/gb_regions.py:12\nmsgid \"Buckinghamshire\"\nmsgstr \"Bakinqemşir\"\n\n#: gb/gb_regions.py:14\nmsgid \"Cheshire\"\nmsgstr \"Çeşir\"\n\n#: gb/gb_regions.py:15\nmsgid \"Cornwall and Isles of Scilly\"\nmsgstr \"Kornuoll və Silli adaları\"\n\n#: gb/gb_regions.py:16\nmsgid \"Cumbria\"\nmsgstr \"Kambriya\"\n\n#: gb/gb_regions.py:17\nmsgid \"Derbyshire\"\nmsgstr \"Derbişir\"\n\n#: gb/gb_regions.py:18\nmsgid \"Devon\"\nmsgstr \"Devon\"\n\n#: gb/gb_regions.py:19\nmsgid \"Dorset\"\nmsgstr \"Dorset\"\n\n#: gb/gb_regions.py:20\nmsgid \"Durham\"\nmsgstr \"Darem\"\n\n#: gb/gb_regions.py:21\nmsgid \"East Sussex\"\nmsgstr \"Şərqi Sasseks\"\n\n#: gb/gb_regions.py:22\nmsgid \"Essex\"\nmsgstr \"Esseks\"\n\n#: gb/gb_regions.py:23\nmsgid \"Gloucestershire\"\nmsgstr \"Qlosesterşir\"\n\n#: gb/gb_regions.py:24\nmsgid \"Greater London\"\nmsgstr \"Böyük London\"\n\n#: gb/gb_regions.py:25\nmsgid \"Greater Manchester\"\nmsgstr \"Böyük Mançester\"\n\n#: gb/gb_regions.py:26\nmsgid \"Hampshire\"\nmsgstr \"Hempşir\"\n\n#: gb/gb_regions.py:27\nmsgid \"Hertfordshire\"\nmsgstr \"Hertfordşir\"\n\n#: gb/gb_regions.py:28\nmsgid \"Kent\"\nmsgstr \"Kent\"\n\n#: gb/gb_regions.py:29\nmsgid \"Lancashire\"\nmsgstr \"Lankaşir\"\n\n#: gb/gb_regions.py:30\nmsgid \"Leicestershire\"\nmsgstr \"Lesterşir\"\n\n#: gb/gb_regions.py:31\nmsgid \"Lincolnshire\"\nmsgstr \"Linkolnşir\"\n\n#: gb/gb_regions.py:32\nmsgid \"Merseyside\"\nmsgstr \"Mersisayd\"\n\n#: gb/gb_regions.py:33\nmsgid \"Norfolk\"\nmsgstr \"Norfolk\"\n\n#: gb/gb_regions.py:34\nmsgid \"North Yorkshire\"\nmsgstr \"Şimali Yorkşir\"\n\n#: gb/gb_regions.py:35\nmsgid \"Northamptonshire\"\nmsgstr \"Northemptonşir\"\n\n#: gb/gb_regions.py:36\nmsgid \"Northumberland\"\nmsgstr \"Nortumberlend\"\n\n#: gb/gb_regions.py:37\nmsgid \"Nottinghamshire\"\nmsgstr \"Nottinqemşir\"\n\n#: gb/gb_regions.py:38\nmsgid \"Oxfordshire\"\nmsgstr \"Oksfordşir\"\n\n#: gb/gb_regions.py:39\nmsgid \"Shropshire\"\nmsgstr \"Şropşir\"\n\n#: gb/gb_regions.py:40\nmsgid \"Somerset\"\nmsgstr \"Somerset\"\n\n#: gb/gb_regions.py:41\nmsgid \"South Yorkshire\"\nmsgstr \"Cənubi Yorkşir\"\n\n#: gb/gb_regions.py:42\nmsgid \"Staffordshire\"\nmsgstr \"Staffordşir\"\n\n#: gb/gb_regions.py:43\nmsgid \"Suffolk\"\nmsgstr \"Saffolk\"\n\n#: gb/gb_regions.py:44\nmsgid \"Surrey\"\nmsgstr \"Sürrey\"\n\n#: gb/gb_regions.py:45\nmsgid \"Tyne and Wear\"\nmsgstr \"Tayn və Uir\"\n\n#: gb/gb_regions.py:46\nmsgid \"Warwickshire\"\nmsgstr \"Uoruikşir\"\n\n#: gb/gb_regions.py:47\nmsgid \"West Midlands\"\nmsgstr \"Uest-Minlends\"\n\n#: gb/gb_regions.py:48\nmsgid \"West Sussex\"\nmsgstr \"Qərbi Sasseks\"\n\n#: gb/gb_regions.py:49\nmsgid \"West Yorkshire\"\nmsgstr \"Qərbi Yorkşir\"\n\n#: gb/gb_regions.py:50\nmsgid \"Wiltshire\"\nmsgstr \"Uiltşir\"\n\n#: gb/gb_regions.py:51\nmsgid \"Worcestershire\"\nmsgstr \"Vursterşir\"\n\n#: gb/gb_regions.py:55\nmsgid \"County Antrim\"\nmsgstr \"Antrim qraflığı\"\n\n#: gb/gb_regions.py:56\nmsgid \"County Armagh\"\nmsgstr \"Arma qraflığı\"\n\n#: gb/gb_regions.py:57\nmsgid \"County Down\"\nmsgstr \"Daun qraflığı\"\n\n#: gb/gb_regions.py:58\nmsgid \"County Fermanagh\"\nmsgstr \"Fermana qraflığı\"\n\n#: gb/gb_regions.py:59\nmsgid \"County Londonderry\"\nmsgstr \"Londonderri qraflığı\"\n\n#: gb/gb_regions.py:60\nmsgid \"County Tyrone\"\nmsgstr \"Tiron qraflığı\"\n\n#: gb/gb_regions.py:64\nmsgid \"Clwyd\"\nmsgstr \"Kluid\"\n\n#: gb/gb_regions.py:65\nmsgid \"Dyfed\"\nmsgstr \"Dived\"\n\n#: gb/gb_regions.py:66\nmsgid \"Gwent\"\nmsgstr \"Quent\"\n\n#: gb/gb_regions.py:67\nmsgid \"Gwynedd\"\nmsgstr \"Quinet\"\n\n#: gb/gb_regions.py:68\nmsgid \"Mid Glamorgan\"\nmsgstr \"Mid Qlamorqan\"\n\n#: gb/gb_regions.py:69\nmsgid \"Powys\"\nmsgstr \"Pouis\"\n\n#: gb/gb_regions.py:70\nmsgid \"South Glamorgan\"\nmsgstr \"Cənubi Qlamorqan\"\n\n#: gb/gb_regions.py:71\nmsgid \"West Glamorgan\"\nmsgstr \"Qərbi Qlamorqan\"\n\n#: gb/gb_regions.py:75\nmsgid \"Borders\"\nmsgstr \"Borders\"\n\n#: gb/gb_regions.py:76\nmsgid \"Central Scotland\"\nmsgstr \"Mərkəzi Şotlandiya\"\n\n#: gb/gb_regions.py:77\nmsgid \"Dumfries and Galloway\"\nmsgstr \"Damfris və Qallouey\"\n\n#: gb/gb_regions.py:78\nmsgid \"Fife\"\nmsgstr \"Fayf\"\n\n#: gb/gb_regions.py:79\nmsgid \"Grampian\"\nmsgstr \"Qrampian\"\n\n#: gb/gb_regions.py:80\nmsgid \"Highland\"\nmsgstr \"Haylend\"\n\n#: gb/gb_regions.py:81\nmsgid \"Lothian\"\nmsgstr \"Lotian\"\n\n#: gb/gb_regions.py:82\nmsgid \"Orkney Islands\"\nmsgstr \"Orkni adaları\"\n\n#: gb/gb_regions.py:83\nmsgid \"Shetland Islands\"\nmsgstr \"Şetlend adaları\"\n\n#: gb/gb_regions.py:84\nmsgid \"Strathclyde\"\nmsgstr \"Stratklayd\"\n\n#: gb/gb_regions.py:85\nmsgid \"Tayside\"\nmsgstr \"Taysayd\"\n\n#: gb/gb_regions.py:86\nmsgid \"Western Isles\"\nmsgstr \"Qərbi adalar\"\n\n#: gb/gb_regions.py:90\nmsgid \"England\"\nmsgstr \"İngiltərə\"\n\n#: gb/gb_regions.py:91\nmsgid \"Northern Ireland\"\nmsgstr \"Şimali İrlandiya\"\n\n#: gb/gb_regions.py:92\nmsgid \"Scotland\"\nmsgstr \"Şotlandiya\"\n\n#: gb/gb_regions.py:93\nmsgid \"Wales\"\nmsgstr \"Uels\"\n\n#: hk/forms.py:37\n#, python-format\nmsgid \"Phone number should not start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:40\n#, python-format\nmsgid \"Phone number must be in one of the following formats: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:42\n#, python-format\nmsgid \"Phone number should start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hr/forms.py:76\nmsgid \"Enter a valid 13 digit JMBG\"\nmsgstr \"\"\n\n#: hr/forms.py:77\nmsgid \"Error in date segment\"\nmsgstr \"\"\n\n#: hr/forms.py:123\nmsgid \"Enter a valid 11 digit OIB\"\nmsgstr \"\"\n\n#: hr/forms.py:152 id/forms.py:112\nmsgid \"Enter a valid vehicle license plate number\"\nmsgstr \"Avtomobil qeydiyyat nömrəsini düzgün daxil edin.\"\n\n#: hr/forms.py:153\nmsgid \"Enter a valid location code\"\nmsgstr \"\"\n\n#: hr/forms.py:154\nmsgid \"Number part cannot be zero\"\nmsgstr \"\"\n\n#: hr/forms.py:190\nmsgid \"Enter a valid 5 digit postal code\"\nmsgstr \"\"\n\n#: hr/forms.py:218 id/forms.py:72 nl/forms.py:56\nmsgid \"Enter a valid phone number\"\nmsgstr \"Telefon nömrəsini düzgün daxil edin.\"\n\n#: hr/forms.py:219\nmsgid \"Enter a valid area or mobile network code\"\nmsgstr \"\"\n\n#: hr/forms.py:220\nmsgid \"The phone nubmer is too long\"\nmsgstr \"\"\n\n#: hr/forms.py:258\nmsgid \"Enter a valid 19 digit JMBAG starting with 601983\"\nmsgstr \"\"\n\n#: hr/forms.py:259\nmsgid \"Card issue number cannot be zero\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:14\nmsgid \"Grad Zagreb\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:15\nmsgid \"Bjelovarsko-bilogorska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:16\nmsgid \"Brodsko-posavska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:17\nmsgid \"Dubrovačko-neretvanska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:18\nmsgid \"Istarska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:19\nmsgid \"Karlovačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:20\nmsgid \"Koprivničko-križevačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:21\nmsgid \"Krapinsko-zagorska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:22\nmsgid \"Ličko-senjska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:23\nmsgid \"Međimurska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:24\nmsgid \"Osječko-baranjska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:25\nmsgid \"Požeško-slavonska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:26\nmsgid \"Primorsko-goranska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:27\nmsgid \"Sisačko-moslavačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:28\nmsgid \"Splitsko-dalmatinska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:29\nmsgid \"Šibensko-kninska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:30\nmsgid \"Varaždinska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:31\nmsgid \"Virovitičko-podravska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:32\nmsgid \"Vukovarsko-srijemska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:33\nmsgid \"Zadarska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:34\nmsgid \"Zagrebačka županija\"\nmsgstr \"\"\n\n#: id/forms.py:31\nmsgid \"Enter a valid post code\"\nmsgstr \"Düzgün poçt indeksini daxil edin.\"\n\n#: id/forms.py:176\nmsgid \"Enter a valid NIK/KTP number\"\nmsgstr \"NIK/KTP nömrəsini düzgün daxil edin.\"\n\n#: id/id_choices.py:15\nmsgid \"Aceh\"\nmsgstr \"Açex\"\n\n#: id/id_choices.py:16 id/id_choices.py:79\nmsgid \"Bali\"\nmsgstr \"Bali\"\n\n#: id/id_choices.py:17 id/id_choices.py:51\nmsgid \"Banten\"\nmsgstr \"Banten\"\n\n#: id/id_choices.py:18 id/id_choices.py:60\nmsgid \"Bengkulu\"\nmsgstr \"Benqkulu\"\n\n#: id/id_choices.py:19 id/id_choices.py:53\nmsgid \"Yogyakarta\"\nmsgstr \"Cokyakarta\"\n\n#: id/id_choices.py:20 id/id_choices.py:57\nmsgid \"Jakarta\"\nmsgstr \"Cakarta\"\n\n#: id/id_choices.py:21 id/id_choices.py:81\nmsgid \"Gorontalo\"\nmsgstr \"Qorontalo\"\n\n#: id/id_choices.py:22 id/id_choices.py:63\nmsgid \"Jambi\"\nmsgstr \"Cambi\"\n\n#: id/id_choices.py:23\nmsgid \"Jawa Barat\"\nmsgstr \"Qərbi Timor\"\n\n#: id/id_choices.py:24\nmsgid \"Jawa Tengah\"\nmsgstr \"Mərkəzi Cava\"\n\n#: id/id_choices.py:25\nmsgid \"Jawa Timur\"\nmsgstr \"Şərqi Cava\"\n\n#: id/id_choices.py:26 id/id_choices.py:94\nmsgid \"Kalimantan Barat\"\nmsgstr \"Qərbi Kalimantan\"\n\n#: id/id_choices.py:27 id/id_choices.py:72\nmsgid \"Kalimantan Selatan\"\nmsgstr \"Cənubi Kalimantan\"\n\n#: id/id_choices.py:28 id/id_choices.py:95\nmsgid \"Kalimantan Tengah\"\nmsgstr \"Mərkəzi Kalimantan\"\n\n#: id/id_choices.py:29 id/id_choices.py:96\nmsgid \"Kalimantan Timur\"\nmsgstr \"Şərqi Kalimantan\"\n\n#: id/id_choices.py:30\nmsgid \"Kepulauan Bangka-Belitung\"\nmsgstr \"Banqka-Belutinq adaları\"\n\n#: id/id_choices.py:31 id/id_choices.py:68\nmsgid \"Kepulauan Riau\"\nmsgstr \"Riau adaları\"\n\n#: id/id_choices.py:32 id/id_choices.py:61\nmsgid \"Lampung\"\nmsgstr \"Lampunq\"\n\n#: id/id_choices.py:33 id/id_choices.py:76\nmsgid \"Maluku\"\nmsgstr \"Molukku\"\n\n#: id/id_choices.py:34 id/id_choices.py:77\nmsgid \"Maluku Utara\"\nmsgstr \"Şimali Molukku\"\n\n#: id/id_choices.py:35\nmsgid \"Nusa Tenggara Barat\"\nmsgstr \"Qərbi Kiçik Zond adaları\"\n\n#: id/id_choices.py:36\nmsgid \"Nusa Tenggara Timur\"\nmsgstr \"Şərqi Kiçik Zond adaları\"\n\n#: id/id_choices.py:37\nmsgid \"Papua\"\nmsgstr \"Papua\"\n\n#: id/id_choices.py:38\nmsgid \"Papua Barat\"\nmsgstr \"Qərbi Papua\"\n\n#: id/id_choices.py:39 id/id_choices.py:66\nmsgid \"Riau\"\nmsgstr \"Riau\"\n\n#: id/id_choices.py:40 id/id_choices.py:74\nmsgid \"Sulawesi Barat\"\nmsgstr \"Qərbi Sulavesi\"\n\n#: id/id_choices.py:41 id/id_choices.py:75\nmsgid \"Sulawesi Selatan\"\nmsgstr \"Cənubi Sulavesi\"\n\n#: id/id_choices.py:42 id/id_choices.py:82\nmsgid \"Sulawesi Tengah\"\nmsgstr \"Mərkəzi Sulavesi\"\n\n#: id/id_choices.py:43 id/id_choices.py:85\nmsgid \"Sulawesi Tenggara\"\nmsgstr \"Cənubi-Şərqi Sulavesi\"\n\n#: id/id_choices.py:44\nmsgid \"Sulawesi Utara\"\nmsgstr \"Şimali Sulavesi\"\n\n#: id/id_choices.py:45 id/id_choices.py:58\nmsgid \"Sumatera Barat\"\nmsgstr \"Qərbi Sumatra\"\n\n#: id/id_choices.py:46 id/id_choices.py:62\nmsgid \"Sumatera Selatan\"\nmsgstr \"Cənubi Sumatra\"\n\n#: id/id_choices.py:47 id/id_choices.py:64\nmsgid \"Sumatera Utara\"\nmsgstr \"Şimali Sumatra\"\n\n#: id/id_choices.py:52\nmsgid \"Magelang\"\nmsgstr \"Magelanq\"\n\n#: id/id_choices.py:54\nmsgid \"Surakarta - Solo\"\nmsgstr \"Surakarta - Solo\"\n\n#: id/id_choices.py:55\nmsgid \"Madiun\"\nmsgstr \"Madiun\"\n\n#: id/id_choices.py:56\nmsgid \"Kediri\"\nmsgstr \"Kediri\"\n\n#: id/id_choices.py:59\nmsgid \"Tapanuli\"\nmsgstr \"Tapanuli\"\n\n#: id/id_choices.py:65\nmsgid \"Nanggroe Aceh Darussalam\"\nmsgstr \"Nanqore Açeh Darussalam\"\n\n#: id/id_choices.py:67\nmsgid \"Kepulauan Bangka Belitung\"\nmsgstr \"Kepulauan Banka Belitunq\"\n\n#: id/id_choices.py:69\nmsgid \"Corps Consulate\"\nmsgstr \"Konsulluq Korpusu\"\n\n#: id/id_choices.py:70\nmsgid \"Corps Diplomatic\"\nmsgstr \"Diplomatik Korpus\"\n\n#: id/id_choices.py:71\nmsgid \"Bandung\"\nmsgstr \"Bandunq\"\n\n#: id/id_choices.py:73\nmsgid \"Sulawesi Utara Daratan\"\nmsgstr \"Şimali Sulavesi\"\n\n#: id/id_choices.py:78\nmsgid \"NTT - Timor\"\nmsgstr \"NTT - Timor\"\n\n#: id/id_choices.py:80\nmsgid \"Sulawesi Utara Kepulauan\"\nmsgstr \"Çimali Sulavesi\"\n\n#: id/id_choices.py:83\nmsgid \"NTB - Lombok\"\nmsgstr \"NTB - Lombok\"\n\n#: id/id_choices.py:84\nmsgid \"Papua dan Papua Barat\"\nmsgstr \"Papua və Qərbi Papua\"\n\n#: id/id_choices.py:86\nmsgid \"Cirebon\"\nmsgstr \"Çirebon\"\n\n#: id/id_choices.py:87\nmsgid \"NTB - Sumbawa\"\nmsgstr \"NTB - Sumbava\"\n\n#: id/id_choices.py:88\nmsgid \"NTT - Flores\"\nmsgstr \"NTT - Flores\"\n\n#: id/id_choices.py:89\nmsgid \"NTT - Sumba\"\nmsgstr \"NTT - Sumba\"\n\n#: id/id_choices.py:90\nmsgid \"Bogor\"\nmsgstr \"Boqor\"\n\n#: id/id_choices.py:91\nmsgid \"Pekalongan\"\nmsgstr \"Pekalonqan\"\n\n#: id/id_choices.py:92\nmsgid \"Semarang\"\nmsgstr \"Semaranq\"\n\n#: id/id_choices.py:93\nmsgid \"Pati\"\nmsgstr \"Pati\"\n\n#: id/id_choices.py:97\nmsgid \"Surabaya\"\nmsgstr \"Surabaya\"\n\n#: id/id_choices.py:98\nmsgid \"Madura\"\nmsgstr \"Madura\"\n\n#: id/id_choices.py:99\nmsgid \"Malang\"\nmsgstr \"Malanq\"\n\n#: id/id_choices.py:100\nmsgid \"Jember\"\nmsgstr \"Cember\"\n\n#: id/id_choices.py:101\nmsgid \"Banyumas\"\nmsgstr \"Banyumas\"\n\n#: id/id_choices.py:102\nmsgid \"Federal Government\"\nmsgstr \"Federal hakimiyyət\"\n\n#: id/id_choices.py:103\nmsgid \"Bojonegoro\"\nmsgstr \"Boconeqoro\"\n\n#: id/id_choices.py:104\nmsgid \"Purwakarta\"\nmsgstr \"Purvakarta\"\n\n#: id/id_choices.py:105\nmsgid \"Sidoarjo\"\nmsgstr \"Sidoarco\"\n\n#: id/id_choices.py:106\nmsgid \"Garut\"\nmsgstr \"Qarut\"\n\n#: ie/ie_counties.py:8\nmsgid \"Antrim\"\nmsgstr \"Antrim\"\n\n#: ie/ie_counties.py:9\nmsgid \"Armagh\"\nmsgstr \"Arma\"\n\n#: ie/ie_counties.py:10\nmsgid \"Carlow\"\nmsgstr \"Karlou\"\n\n#: ie/ie_counties.py:11\nmsgid \"Cavan\"\nmsgstr \"Kavan\"\n\n#: ie/ie_counties.py:12\nmsgid \"Clare\"\nmsgstr \"Kler\"\n\n#: ie/ie_counties.py:13\nmsgid \"Cork\"\nmsgstr \"Kork\"\n\n#: ie/ie_counties.py:14\nmsgid \"Derry\"\nmsgstr \"Derri\"\n\n#: ie/ie_counties.py:15\nmsgid \"Donegal\"\nmsgstr \"Doneqal\"\n\n#: ie/ie_counties.py:16\nmsgid \"Down\"\nmsgstr \"Daun\"\n\n#: ie/ie_counties.py:17\nmsgid \"Dublin\"\nmsgstr \"Dublin\"\n\n#: ie/ie_counties.py:18\nmsgid \"Fermanagh\"\nmsgstr \"Fermana\"\n\n#: ie/ie_counties.py:19\nmsgid \"Galway\"\nmsgstr \"Qoluey\"\n\n#: ie/ie_counties.py:20\nmsgid \"Kerry\"\nmsgstr \"Kerri\"\n\n#: ie/ie_counties.py:21\nmsgid \"Kildare\"\nmsgstr \"Kilder\"\n\n#: ie/ie_counties.py:22\nmsgid \"Kilkenny\"\nmsgstr \"Kilkenni\"\n\n#: ie/ie_counties.py:23\nmsgid \"Laois\"\nmsgstr \"Liiş\"\n\n#: ie/ie_counties.py:24\nmsgid \"Leitrim\"\nmsgstr \"Litrim\"\n\n#: ie/ie_counties.py:25\nmsgid \"Limerick\"\nmsgstr \"Limerik\"\n\n#: ie/ie_counties.py:26\nmsgid \"Longford\"\nmsgstr \"Lonqford\"\n\n#: ie/ie_counties.py:27\nmsgid \"Louth\"\nmsgstr \"Laut\"\n\n#: ie/ie_counties.py:28\nmsgid \"Mayo\"\nmsgstr \"Meyo\"\n\n#: ie/ie_counties.py:29\nmsgid \"Meath\"\nmsgstr \"Mit\"\n\n#: ie/ie_counties.py:30\nmsgid \"Monaghan\"\nmsgstr \"Monağan\"\n\n#: ie/ie_counties.py:31\nmsgid \"Offaly\"\nmsgstr \"Offali\"\n\n#: ie/ie_counties.py:32\nmsgid \"Roscommon\"\nmsgstr \"Roskommon\"\n\n#: ie/ie_counties.py:33\nmsgid \"Sligo\"\nmsgstr \"Slayqo\"\n\n#: ie/ie_counties.py:34\nmsgid \"Tipperary\"\nmsgstr \"Tippereri\"\n\n#: ie/ie_counties.py:35\nmsgid \"Tyrone\"\nmsgstr \"Tiron\"\n\n#: ie/ie_counties.py:36\nmsgid \"Waterford\"\nmsgstr \"Uoterford\"\n\n#: ie/ie_counties.py:37\nmsgid \"Westmeath\"\nmsgstr \"Uestmit\"\n\n#: ie/ie_counties.py:38\nmsgid \"Wexford\"\nmsgstr \"Ueksford\"\n\n#: ie/ie_counties.py:39\nmsgid \"Wicklow\"\nmsgstr \"Uiklou\"\n\n#: il/forms.py:32\nmsgid \"Enter a postal code in the format XXXXX\"\nmsgstr \"XXXXX formatında poçt indeksini daxil edin.\"\n\n#: il/forms.py:51\nmsgid \"Enter a valid ID number.\"\nmsgstr \"ID kodunu düzgün daxil edin.\"\n\n#: in_/forms.py:41\nmsgid \"Enter a zip code in the format XXXXXX or XXX XXX.\"\nmsgstr \"\"\n\n#: in_/forms.py:64\nmsgid \"Enter an Indian state or territory.\"\nmsgstr \"\"\n\n#: in_/forms.py:103\nmsgid \"Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.\"\nmsgstr \"\"\n\n#: is_/forms.py:22\nmsgid \"\"\n\"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.\"\nmsgstr \"\"\n\"XXXXXX-XXXX formatında düzgün İslandiya identifikasiya kodunu daxil edin.\"\n\n#: is_/forms.py:23\nmsgid \"The Icelandic identification number is not valid.\"\nmsgstr \"Bu, düzgün İsland identifikasiya kodu deyil.\"\n\n#: it/forms.py:21\nmsgid \"Enter a valid zip code.\"\nmsgstr \"Düzgün poçt indeksini daxil edin.\"\n\n#: it/forms.py:48\nmsgid \"Enter a valid Social Security number.\"\nmsgstr \"Düzgün Sosial Müdafiə kodunu daxil edin.\"\n\n#: it/forms.py:73\nmsgid \"Enter a valid VAT number.\"\nmsgstr \"Düzgün ƏDV kodunu daxil edin.\"\n\n#: jp/forms.py:19\nmsgid \"Enter a postal code in the format XXXXXXX or XXX-XXXX.\"\nmsgstr \"Düzgün poçt indeksini XXXXXXX və ya XXX-XXXX formatında daxil edin.\"\n\n#: jp/jp_prefectures.py:4\nmsgid \"Hokkaido\"\nmsgstr \"Hokkaydo\"\n\n#: jp/jp_prefectures.py:5\nmsgid \"Aomori\"\nmsgstr \"Aomori\"\n\n#: jp/jp_prefectures.py:6\nmsgid \"Iwate\"\nmsgstr \"İvate\"\n\n#: jp/jp_prefectures.py:7\nmsgid \"Miyagi\"\nmsgstr \"Miyagi\"\n\n#: jp/jp_prefectures.py:8\nmsgid \"Akita\"\nmsgstr \"Akita\"\n\n#: jp/jp_prefectures.py:9\nmsgid \"Yamagata\"\nmsgstr \"Yamaqata\"\n\n#: jp/jp_prefectures.py:10\nmsgid \"Fukushima\"\nmsgstr \"Fukuşima\"\n\n#: jp/jp_prefectures.py:11\nmsgid \"Ibaraki\"\nmsgstr \"İbaraki\"\n\n#: jp/jp_prefectures.py:12\nmsgid \"Tochigi\"\nmsgstr \"Totiqi\"\n\n#: jp/jp_prefectures.py:13\nmsgid \"Gunma\"\nmsgstr \"Qunma\"\n\n#: jp/jp_prefectures.py:14\nmsgid \"Saitama\"\nmsgstr \"Saitama\"\n\n#: jp/jp_prefectures.py:15\nmsgid \"Chiba\"\nmsgstr \"Tiba\"\n\n#: jp/jp_prefectures.py:16\nmsgid \"Tokyo\"\nmsgstr \"Tokyo\"\n\n#: jp/jp_prefectures.py:17\nmsgid \"Kanagawa\"\nmsgstr \"Kanaqava\"\n\n#: jp/jp_prefectures.py:18\nmsgid \"Yamanashi\"\nmsgstr \"Yamanasi\"\n\n#: jp/jp_prefectures.py:19\nmsgid \"Nagano\"\nmsgstr \"Naqano\"\n\n#: jp/jp_prefectures.py:20\nmsgid \"Niigata\"\nmsgstr \"Niiqata\"\n\n#: jp/jp_prefectures.py:21\nmsgid \"Toyama\"\nmsgstr \"Toyama\"\n\n#: jp/jp_prefectures.py:22\nmsgid \"Ishikawa\"\nmsgstr \"İsikava\"\n\n#: jp/jp_prefectures.py:23\nmsgid \"Fukui\"\nmsgstr \"Fukui\"\n\n#: jp/jp_prefectures.py:24\nmsgid \"Gifu\"\nmsgstr \"Qifu\"\n\n#: jp/jp_prefectures.py:25\nmsgid \"Shizuoka\"\nmsgstr \"Sidzuka\"\n\n#: jp/jp_prefectures.py:26\nmsgid \"Aichi\"\nmsgstr \"Aiçi\"\n\n#: jp/jp_prefectures.py:27\nmsgid \"Mie\"\nmsgstr \"Mie\"\n\n#: jp/jp_prefectures.py:28\nmsgid \"Shiga\"\nmsgstr \"Siqa\"\n\n#: jp/jp_prefectures.py:29\nmsgid \"Kyoto\"\nmsgstr \"Kyoto\"\n\n#: jp/jp_prefectures.py:30\nmsgid \"Osaka\"\nmsgstr \"Osaka\"\n\n#: jp/jp_prefectures.py:31\nmsgid \"Hyogo\"\nmsgstr \"Hyoqo\"\n\n#: jp/jp_prefectures.py:32\nmsgid \"Nara\"\nmsgstr \"Nara\"\n\n#: jp/jp_prefectures.py:33\nmsgid \"Wakayama\"\nmsgstr \"Vakayama\"\n\n#: jp/jp_prefectures.py:34\nmsgid \"Tottori\"\nmsgstr \"Tottori\"\n\n#: jp/jp_prefectures.py:35\nmsgid \"Shimane\"\nmsgstr \"Simane\"\n\n#: jp/jp_prefectures.py:36\nmsgid \"Okayama\"\nmsgstr \"Okayama\"\n\n#: jp/jp_prefectures.py:37\nmsgid \"Hiroshima\"\nmsgstr \"Hirosima\"\n\n#: jp/jp_prefectures.py:38\nmsgid \"Yamaguchi\"\nmsgstr \"Yamaquti\"\n\n#: jp/jp_prefectures.py:39\nmsgid \"Tokushima\"\nmsgstr \"Tokusima\"\n\n#: jp/jp_prefectures.py:40\nmsgid \"Kagawa\"\nmsgstr \"Kaqava\"\n\n#: jp/jp_prefectures.py:41\nmsgid \"Ehime\"\nmsgstr \"Ehime\"\n\n#: jp/jp_prefectures.py:42\nmsgid \"Kochi\"\nmsgstr \"Koti\"\n\n#: jp/jp_prefectures.py:43\nmsgid \"Fukuoka\"\nmsgstr \"Fukuoka\"\n\n#: jp/jp_prefectures.py:44\nmsgid \"Saga\"\nmsgstr \"Saqa\"\n\n#: jp/jp_prefectures.py:45\nmsgid \"Nagasaki\"\nmsgstr \"Naqasaki\"\n\n#: jp/jp_prefectures.py:46\nmsgid \"Kumamoto\"\nmsgstr \"Kumamoto\"\n\n#: jp/jp_prefectures.py:47\nmsgid \"Oita\"\nmsgstr \"Oita\"\n\n#: jp/jp_prefectures.py:48\nmsgid \"Miyazaki\"\nmsgstr \"Miyadzaki\"\n\n#: jp/jp_prefectures.py:49\nmsgid \"Kagoshima\"\nmsgstr \"Kaqosima\"\n\n#: jp/jp_prefectures.py:50\nmsgid \"Okinawa\"\nmsgstr \"Okinava\"\n\n#: kw/forms.py:27\nmsgid \"Enter a valid Kuwaiti Civil ID number\"\nmsgstr \"Küveyt şəxsiyyət vəsiqəsinin seriya nömrəsini daxil edin.\"\n\n#: mk/forms.py:18\nmsgid \"\"\n\"Identity card numbers must contain either 4 to 7 digits or an uppercase \"\n\"letter and 7 digits.\"\nmsgstr \"\"\n\n#: mk/forms.py:57 si/forms.py:24\nmsgid \"This field should contain exactly 13 digits.\"\nmsgstr \"\"\n\n#: mk/forms.py:58\nmsgid \"The first 7 digits of the UMCN must represent a valid past date.\"\nmsgstr \"\"\n\n#: mk/forms.py:59\nmsgid \"The UMCN is not valid.\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:10\nmsgid \"Aerodrom\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:11\nmsgid \"Aračinovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:12\nmsgid \"Berovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:13\nmsgid \"Bitola\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:14\nmsgid \"Bogdanci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:15\nmsgid \"Bogovinje\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:16\nmsgid \"Bosilovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:17\nmsgid \"Brvenica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:18\nmsgid \"Butel\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:19\nmsgid \"Valandovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:20\nmsgid \"Vasilevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:21\nmsgid \"Vevčani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:22\nmsgid \"Veles\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:23\nmsgid \"Vinica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:24\nmsgid \"Vraneštica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:25\nmsgid \"Vrapčište\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:26\nmsgid \"Gazi Baba\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:27\nmsgid \"Gevgelija\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:28\nmsgid \"Gostivar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:29\nmsgid \"Gradsko\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:30\nmsgid \"Debar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:31\nmsgid \"Debarca\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:32\nmsgid \"Delčevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:33\nmsgid \"Demir Kapija\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:34\nmsgid \"Demir Hisar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:35\nmsgid \"Dolneni\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:36\nmsgid \"Drugovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:37\nmsgid \"Gjorče Petrov\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:38\nmsgid \"Želino\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:39\nmsgid \"Zajas\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:40\nmsgid \"Zelenikovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:41\nmsgid \"Zrnovci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:42\nmsgid \"Ilinden\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:43\nmsgid \"Jegunovce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:44\nmsgid \"Kavadarci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:45\nmsgid \"Karbinci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:46\nmsgid \"Karpoš\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:47\nmsgid \"Kisela Voda\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:48\nmsgid \"Kičevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:49\nmsgid \"Konče\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:50\nmsgid \"Koćani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:51\nmsgid \"Kratovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:52\nmsgid \"Kriva Palanka\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:53\nmsgid \"Krivogaštani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:54\nmsgid \"Kruševo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:55\nmsgid \"Kumanovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:56\nmsgid \"Lipkovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:57\nmsgid \"Lozovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:58\nmsgid \"Mavrovo i Rostuša\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:59\nmsgid \"Makedonska Kamenica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:60\nmsgid \"Makedonski Brod\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:61\nmsgid \"Mogila\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:62\nmsgid \"Negotino\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:63\nmsgid \"Novaci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:64\nmsgid \"Novo Selo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:65\nmsgid \"Oslomej\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:66\nmsgid \"Ohrid\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:67\nmsgid \"Petrovec\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:68\nmsgid \"Pehčevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:69\nmsgid \"Plasnica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:70\nmsgid \"Prilep\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:71\nmsgid \"Probištip\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:72\nmsgid \"Radoviš\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:73\nmsgid \"Rankovce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:74\nmsgid \"Resen\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:75\nmsgid \"Rosoman\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:76\nmsgid \"Saraj\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:77\nmsgid \"Sveti Nikole\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:78\nmsgid \"Sopište\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:79\nmsgid \"Star Dojran\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:80\nmsgid \"Staro Nagoričane\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:81\nmsgid \"Struga\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:82\nmsgid \"Strumica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:83\nmsgid \"Studeničani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:84\nmsgid \"Tearce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:85\nmsgid \"Tetovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:86\nmsgid \"Centar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:87\nmsgid \"Centar-Župa\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:88\nmsgid \"Čair\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:89\nmsgid \"Čaška\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:90\nmsgid \"Češinovo-Obleševo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:91\nmsgid \"Čučer-Sandevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:92\nmsgid \"Štip\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:93\nmsgid \"Šuto Orizari\"\nmsgstr \"\"\n\n#: mk/models.py:11\nmsgid \"Macedonian identity card number\"\nmsgstr \"\"\n\n#: mk/models.py:25\nmsgid \"A Macedonian municipality (2 character code)\"\nmsgstr \"\"\n\n#: mk/models.py:35\nmsgid \"Unique master citizen number (13 digits)\"\nmsgstr \"\"\n\n#: mx/forms.py:67\nmsgid \"Enter a valid zip code in the format XXXXX.\"\nmsgstr \"\"\n\n#: mx/forms.py:110\nmsgid \"Enter a valid RFC.\"\nmsgstr \"\"\n\n#: mx/forms.py:111\nmsgid \"Invalid checksum for RFC.\"\nmsgstr \"\"\n\n#: mx/forms.py:191\nmsgid \"Enter a valid CURP.\"\nmsgstr \"\"\n\n#: mx/forms.py:192\nmsgid \"Invalid checksum for CURP.\"\nmsgstr \"\"\n\n#: mx/models.py:14\nmsgid \"Mexico state (three uppercase letters)\"\nmsgstr \"\"\n\n#: mx/models.py:27\nmsgid \"Mexico zip code\"\nmsgstr \"\"\n\n#: mx/models.py:44\nmsgid \"Mexican RFC\"\nmsgstr \"\"\n\n#: mx/models.py:61\nmsgid \"Mexican CURP\"\nmsgstr \"\"\n\n#: mx/mx_states.py:14\nmsgid \"Aguascalientes\"\nmsgstr \"Aquaskalyentes\"\n\n#: mx/mx_states.py:15\nmsgid \"Baja California\"\nmsgstr \"Aşağı Kaliforniya\"\n\n#: mx/mx_states.py:16\nmsgid \"Baja California Sur\"\nmsgstr \"Cənubi Aşağı Kaliforniya\"\n\n#: mx/mx_states.py:17\nmsgid \"Campeche\"\nmsgstr \"Kampeçe\"\n\n#: mx/mx_states.py:18\nmsgid \"Chihuahua\"\nmsgstr \"Çihuahua\"\n\n#: mx/mx_states.py:19\nmsgid \"Chiapas\"\nmsgstr \"Çyapas\"\n\n#: mx/mx_states.py:20\nmsgid \"Coahuila\"\nmsgstr \"Koahuila\"\n\n#: mx/mx_states.py:21\nmsgid \"Colima\"\nmsgstr \"Kolima\"\n\n#: mx/mx_states.py:22\nmsgid \"Distrito Federal\"\nmsgstr \"Federal vilayət\"\n\n#: mx/mx_states.py:23\nmsgid \"Durango\"\nmsgstr \"Duranqo\"\n\n#: mx/mx_states.py:24\nmsgid \"Guerrero\"\nmsgstr \"Gerrero\"\n\n#: mx/mx_states.py:25\nmsgid \"Guanajuato\"\nmsgstr \"Quanahuato\"\n\n#: mx/mx_states.py:26\nmsgid \"Hidalgo\"\nmsgstr \"İdalqo\"\n\n#: mx/mx_states.py:27\nmsgid \"Jalisco\"\nmsgstr \"Xalisko\"\n\n#: mx/mx_states.py:28\nmsgid \"Estado de México\"\nmsgstr \"Mexiko\"\n\n#: mx/mx_states.py:29\nmsgid \"Michoacán\"\nmsgstr \"Miçoakan\"\n\n#: mx/mx_states.py:30\nmsgid \"Morelos\"\nmsgstr \"Morelos\"\n\n#: mx/mx_states.py:31\nmsgid \"Nayarit\"\nmsgstr \"Nayarit\"\n\n#: mx/mx_states.py:32\nmsgid \"Nuevo León\"\nmsgstr \"Nuevo-Leon\"\n\n#: mx/mx_states.py:33\nmsgid \"Oaxaca\"\nmsgstr \"Oaxaka\"\n\n#: mx/mx_states.py:34\nmsgid \"Puebla\"\nmsgstr \"Puebla\"\n\n#: mx/mx_states.py:35\nmsgid \"Querétaro\"\nmsgstr \"Keretaro\"\n\n#: mx/mx_states.py:36\nmsgid \"Quintana Roo\"\nmsgstr \"Kintana Roo\"\n\n#: mx/mx_states.py:37\nmsgid \"Sinaloa\"\nmsgstr \"Sinaloa\"\n\n#: mx/mx_states.py:38\nmsgid \"San Luis Potosí\"\nmsgstr \"San Lui Potosi\"\n\n#: mx/mx_states.py:39\nmsgid \"Sonora\"\nmsgstr \"Sonora\"\n\n#: mx/mx_states.py:40\nmsgid \"Tabasco\"\nmsgstr \"Tabasko\"\n\n#: mx/mx_states.py:41\nmsgid \"Tamaulipas\"\nmsgstr \"Tamaulipas\"\n\n#: mx/mx_states.py:42\nmsgid \"Tlaxcala\"\nmsgstr \"Tlaskala\"\n\n#: mx/mx_states.py:43\nmsgid \"Veracruz\"\nmsgstr \"Verakrus\"\n\n#: mx/mx_states.py:44\nmsgid \"Yucatán\"\nmsgstr \"Yukatan\"\n\n#: mx/mx_states.py:45\nmsgid \"Zacatecas\"\nmsgstr \"Sakatekas\"\n\n#: nl/forms.py:26\nmsgid \"Enter a valid postal code\"\nmsgstr \"Düzgün poçt indeksini daxil edin.\"\n\n#: nl/forms.py:82\nmsgid \"Enter a valid SoFi number\"\nmsgstr \"Düzgün SoFi kodunu daxil edin.\"\n\n#: nl/nl_provinces.py:4\nmsgid \"Drenthe\"\nmsgstr \"Drente\"\n\n#: nl/nl_provinces.py:5\nmsgid \"Flevoland\"\nmsgstr \"Flevoland\"\n\n#: nl/nl_provinces.py:6\nmsgid \"Friesland\"\nmsgstr \"Frisland\"\n\n#: nl/nl_provinces.py:7\nmsgid \"Gelderland\"\nmsgstr \"Qelderland\"\n\n#: nl/nl_provinces.py:8\nmsgid \"Groningen\"\nmsgstr \"Qroningen\"\n\n#: nl/nl_provinces.py:10\nmsgid \"Noord-Brabant\"\nmsgstr \"Şimali Brabant\"\n\n#: nl/nl_provinces.py:11\nmsgid \"Noord-Holland\"\nmsgstr \"Şimali Hollandiya\"\n\n#: nl/nl_provinces.py:12\nmsgid \"Overijssel\"\nmsgstr \"Overeysel\"\n\n#: nl/nl_provinces.py:13\nmsgid \"Utrecht\"\nmsgstr \"Utrext\"\n\n#: nl/nl_provinces.py:14\nmsgid \"Zeeland\"\nmsgstr \"Zellandiya\"\n\n#: nl/nl_provinces.py:15\nmsgid \"Zuid-Holland\"\nmsgstr \"Cənubi Hollandiya\"\n\n#: no/forms.py:39\nmsgid \"Enter a valid Norwegian social security number.\"\nmsgstr \"Norveç sosial müdafiə kodunu daxil edin.\"\n\n#: pe/forms.py:28\nmsgid \"This field requires 8 digits.\"\nmsgstr \"Bura 8 rəqəm yazmaq lazımdır.\"\n\n#: pe/forms.py:56\nmsgid \"This field requires 11 digits.\"\nmsgstr \"Bura 11 rəqəm yazmaq lazımdır.\"\n\n#: pl/forms.py:42\nmsgid \"National Identification Number consists of 11 digits.\"\nmsgstr \"Milli İdentifikasiya Nömrəsi 11 rəqəmdən ibarətdir.\"\n\n#: pl/forms.py:43\nmsgid \"Wrong checksum for the National Identification Number.\"\nmsgstr \"Milli İdentifikasiya Nömrəsi üçün yoxlama cəmi düzgün çıxmadı.\"\n\n#: pl/forms.py:79\nmsgid \"National ID Card Number consists of 3 letters and 6 digits.\"\nmsgstr \"\"\n\n#: pl/forms.py:80\nmsgid \"Wrong checksum for the National ID Card Number.\"\nmsgstr \"\"\n\n#: pl/forms.py:131\nmsgid \"\"\n\"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or \"\n\"XXXXXXXXXX.\"\nmsgstr \"\"\n\n#: pl/forms.py:132\nmsgid \"Wrong checksum for the Tax Number (NIP).\"\nmsgstr \"VÖEN üçün yoxlama cəmi düzgün çıxmadı.\"\n\n#: pl/forms.py:171\nmsgid \"National Business Register Number (REGON) consists of 9 or 14 digits.\"\nmsgstr \"Milli İş Qeydiyyat Nömrəsi (REGON) 9 və ya 14 rəqəmdən ibarətdir.\"\n\n#: pl/forms.py:172\nmsgid \"Wrong checksum for the National Business Register Number (REGON).\"\nmsgstr \"Milli İş Qeydiyyat Nömrəsi (REGON) üçün yoxlama cəmi düzgün çıxmadı.\"\n\n#: pl/forms.py:212\nmsgid \"Enter a postal code in the format XX-XXX.\"\nmsgstr \"XX-XXX formatında poçt indeksini daxil edin.\"\n\n#: pl/pl_voivodeships.py:8\nmsgid \"Lower Silesia\"\nmsgstr \"Aşağı Silesiya\"\n\n#: pl/pl_voivodeships.py:9\nmsgid \"Kuyavia-Pomerania\"\nmsgstr \"Kuyaviya-Pomeraniya\"\n\n#: pl/pl_voivodeships.py:10\nmsgid \"Lublin\"\nmsgstr \"Lyublyan\"\n\n#: pl/pl_voivodeships.py:11\nmsgid \"Lubusz\"\nmsgstr \"Lyubuş\"\n\n#: pl/pl_voivodeships.py:12\nmsgid \"Lodz\"\nmsgstr \"Lodz\"\n\n#: pl/pl_voivodeships.py:13\nmsgid \"Lesser Poland\"\nmsgstr \"Kiçik Polşa\"\n\n#: pl/pl_voivodeships.py:14\nmsgid \"Masovia\"\nmsgstr \"Mazoviya\"\n\n#: pl/pl_voivodeships.py:15\nmsgid \"Opole\"\nmsgstr \"Opole\"\n\n#: pl/pl_voivodeships.py:16\nmsgid \"Subcarpatia\"\nmsgstr \"Aşağı Karpat\"\n\n#: pl/pl_voivodeships.py:17\nmsgid \"Podlasie\"\nmsgstr \"Podlyasye\"\n\n#: pl/pl_voivodeships.py:18\nmsgid \"Pomerania\"\nmsgstr \"Pomeraniya\"\n\n#: pl/pl_voivodeships.py:19\nmsgid \"Silesia\"\nmsgstr \"Silesiya\"\n\n#: pl/pl_voivodeships.py:20\nmsgid \"Swietokrzyskie\"\nmsgstr \"Svyetokşiskye\"\n\n#: pl/pl_voivodeships.py:21\nmsgid \"Warmia-Masuria\"\nmsgstr \"Varmiya-Mazuriya\"\n\n#: pl/pl_voivodeships.py:22\nmsgid \"Greater Poland\"\nmsgstr \"Böyük Polşa\"\n\n#: pl/pl_voivodeships.py:23\nmsgid \"West Pomerania\"\nmsgstr \"Qərbi Pomeraniya\"\n\n#: pt/forms.py:19\nmsgid \"Enter a zip code in the format XXXX-XXX.\"\nmsgstr \"XXXX-XXX formatında poçt indeksini daxil edin.\"\n\n#: pt/forms.py:39\nmsgid \"Phone numbers must have 9 digits, or start by + or 00.\"\nmsgstr \"\"\n\"Telefon nömrələri 9 rəqəmdən ibarət olmalı, ya +, ya da 00 ilə başlamalıdır.\"\n\n#: ro/forms.py:22\nmsgid \"Enter a valid CIF.\"\nmsgstr \"Düzgün CIF kodunu daxil edin.\"\n\n#: ro/forms.py:59\nmsgid \"Enter a valid CNP.\"\nmsgstr \"Düzgün CNP kodunu daxil edin.\"\n\n#: ro/forms.py:143\nmsgid \"Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format\"\nmsgstr \"ROXX-XXXX-XXXX-XXXX-XXXX-XXXX formatında düzgün IBAN daxil edin.\"\n\n#: ro/forms.py:175\nmsgid \"Phone numbers must be in XXXX-XXXXXX format.\"\nmsgstr \"Telefon nömrələri XXXX-XXXXXX formatında olmalıdır.\"\n\n#: ro/forms.py:200\nmsgid \"Enter a valid postal code in the format XXXXXX\"\nmsgstr \"XXXXXX formatında düzgün poçt indeksini daxil edin.\"\n\n#: ru/forms.py:37\nmsgid \"Enter a postal code in the format XXXXXX.\"\nmsgstr \"\"\n\n#: ru/forms.py:50\nmsgid \"Enter a passport number in the format XXXX XXXXXX.\"\nmsgstr \"\"\n\n#: ru/forms.py:63\nmsgid \"Enter a passport number in the format XX XXXXXXX.\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:10\nmsgid \"Central Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:11\nmsgid \"South Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:12\nmsgid \"North-West Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:13\nmsgid \"Far-East Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:14\nmsgid \"Siberian Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:15\nmsgid \"Ural Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:16\nmsgid \"Privolzhsky Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:17\nmsgid \"North-Caucasian Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:21\nmsgid \"Moskva\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:22\nmsgid \"Saint-Peterburg\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:23\nmsgid \"Moskovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:24\nmsgid \"Adygeya, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:25\nmsgid \"Bashkortostan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:26\nmsgid \"Buryatia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:27\nmsgid \"Altay, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:28\nmsgid \"Dagestan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:29\nmsgid \"Ingushskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:30\nmsgid \"Kabardino-Balkarskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:31\nmsgid \"Kalmykia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:32\nmsgid \"Karachaevo-Cherkesskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:33\nmsgid \"Karelia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:34\nmsgid \"Komi, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:35\nmsgid \"Mariy Ehl, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:36\nmsgid \"Mordovia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:37\nmsgid \"Sakha, Respublika (Yakutiya)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:38\nmsgid \"Severnaya Osetia, Respublika (Alania)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:39\nmsgid \"Tatarstan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:40\nmsgid \"Tyva, Respublika (Tuva)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:41\nmsgid \"Udmurtskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:42\nmsgid \"Khakassiya, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:43\nmsgid \"Chechenskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:44\nmsgid \"Chuvashskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:45\nmsgid \"Altayskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:46\nmsgid \"Zabaykalskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:47\nmsgid \"Kamchatskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:48\nmsgid \"Krasnodarskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:49\nmsgid \"Krasnoyarskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:50\nmsgid \"Permskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:51\nmsgid \"Primorskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:52\nmsgid \"Stavropol'siyy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:53\nmsgid \"Khabarovskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:54\nmsgid \"Amurskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:55\nmsgid \"Arkhangel'skaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:56\nmsgid \"Astrakhanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:57\nmsgid \"Belgorodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:58\nmsgid \"Bryanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:59\nmsgid \"Vladimirskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:60\nmsgid \"Volgogradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:61\nmsgid \"Vologodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:62\nmsgid \"Voronezhskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:63\nmsgid \"Ivanovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:64\nmsgid \"Irkutskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:65\nmsgid \"Kaliningradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:66\nmsgid \"Kaluzhskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:67\nmsgid \"Kemerovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:68\nmsgid \"Kirovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:69\nmsgid \"Kostromskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:70\nmsgid \"Kurganskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:71\nmsgid \"Kurskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:72\nmsgid \"Leningradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:73\nmsgid \"Lipeckaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:74\nmsgid \"Magadanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:75\nmsgid \"Murmanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:76\nmsgid \"Nizhegorodskaja oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:77\nmsgid \"Novgorodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:78\nmsgid \"Novosibirskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:79\nmsgid \"Omskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:80\nmsgid \"Orenburgskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:81\nmsgid \"Orlovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:82\nmsgid \"Penzenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:83\nmsgid \"Pskovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:84\nmsgid \"Rostovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:85\nmsgid \"Rjazanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:86\nmsgid \"Samarskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:87\nmsgid \"Saratovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:88\nmsgid \"Sakhalinskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:89\nmsgid \"Sverdlovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:90\nmsgid \"Smolenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:91\nmsgid \"Tambovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:92\nmsgid \"Tverskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:93\nmsgid \"Tomskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:94\nmsgid \"Tul'skaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:95\nmsgid \"Tyumenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:96\nmsgid \"Ul'ianovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:97\nmsgid \"Chelyabinskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:98\nmsgid \"Yaroslavskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:99\nmsgid \"Evreyskaya avtonomnaja oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:100\nmsgid \"Neneckiy autonomnyy okrug\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:101\nmsgid \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:102\nmsgid \"Chukotskiy avtonomnyy okrug\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:103\nmsgid \"Yamalo-Neneckiy avtonomnyy okrug\"\nmsgstr \"\"\n\n#: se/forms.py:54\nmsgid \"Enter a valid Swedish organisation number.\"\nmsgstr \"İsveç təşkilatları üçün düzgün nömrəni daxil edin.\"\n\n#: se/forms.py:111\nmsgid \"Enter a valid Swedish personal identity number.\"\nmsgstr \"Düzgün İsveç şəxsiyyətin təsdiqi kodunu daxil edin.\"\n\n#: se/forms.py:112\nmsgid \"Co-ordination numbers are not allowed.\"\nmsgstr \"Koordinasiya nömrələri qadağandır.\"\n\n#: se/forms.py:154\nmsgid \"Enter a Swedish postal code in the format XXXXX.\"\nmsgstr \"XXXXX formatında İsveç poçt indeksini daxil edin.\"\n\n#: se/se_counties.py:16\nmsgid \"Stockholm\"\nmsgstr \"Stokholm\"\n\n#: se/se_counties.py:17\nmsgid \"Västerbotten\"\nmsgstr \"Vesterbotten\"\n\n#: se/se_counties.py:18\nmsgid \"Norrbotten\"\nmsgstr \"Norrbotten\"\n\n#: se/se_counties.py:19\nmsgid \"Uppsala\"\nmsgstr \"Uppsala\"\n\n#: se/se_counties.py:20\nmsgid \"Södermanland\"\nmsgstr \"Södermanland\"\n\n#: se/se_counties.py:21\nmsgid \"Östergötland\"\nmsgstr \"Estergötland\"\n\n#: se/se_counties.py:22\nmsgid \"Jönköping\"\nmsgstr \"Yonköpinq\"\n\n#: se/se_counties.py:23\nmsgid \"Kronoberg\"\nmsgstr \"Kronoberq\"\n\n#: se/se_counties.py:24\nmsgid \"Kalmar\"\nmsgstr \"Kalmar\"\n\n#: se/se_counties.py:25\nmsgid \"Gotland\"\nmsgstr \"Qotland\"\n\n#: se/se_counties.py:26\nmsgid \"Blekinge\"\nmsgstr \"Blekinqe\"\n\n#: se/se_counties.py:27\nmsgid \"Skåne\"\nmsgstr \"Skone\"\n\n#: se/se_counties.py:28\nmsgid \"Halland\"\nmsgstr \"Halland\"\n\n#: se/se_counties.py:29\nmsgid \"Västra Götaland\"\nmsgstr \"Vestra-Qotaland\"\n\n#: se/se_counties.py:30\nmsgid \"Värmland\"\nmsgstr \"Vermland\"\n\n#: se/se_counties.py:31\nmsgid \"Örebro\"\nmsgstr \"Erebru\"\n\n#: se/se_counties.py:32\nmsgid \"Västmanland\"\nmsgstr \"Vestmanland\"\n\n#: se/se_counties.py:33\nmsgid \"Dalarna\"\nmsgstr \"Dalarna\"\n\n#: se/se_counties.py:34\nmsgid \"Gävleborg\"\nmsgstr \"Yevleborq\"\n\n#: se/se_counties.py:35\nmsgid \"Västernorrland\"\nmsgstr \"Vesternnorrland\"\n\n#: se/se_counties.py:36\nmsgid \"Jämtland\"\nmsgstr \"Yemtland\"\n\n#: si/forms.py:25\nmsgid \"The first 7 digits of the EMSO must represent a valid past date.\"\nmsgstr \"\"\n\n#: si/forms.py:26\nmsgid \"The EMSO is not valid.\"\nmsgstr \"\"\n\n#: si/forms.py:86\nmsgid \"Enter a valid tax number in form SIXXXXXXXX\"\nmsgstr \"\"\n\n#: si/forms.py:151\nmsgid \"Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:8\nmsgid \"Banska Bystrica\"\nmsgstr \"Banska Bistirisa\"\n\n#: sk/sk_districts.py:9\nmsgid \"Banska Stiavnica\"\nmsgstr \"Banska Ştyavnisa\"\n\n#: sk/sk_districts.py:10\nmsgid \"Bardejov\"\nmsgstr \"Bardeyov\"\n\n#: sk/sk_districts.py:11\nmsgid \"Banovce nad Bebravou\"\nmsgstr \"Banovse nad Bebravou\"\n\n#: sk/sk_districts.py:12\nmsgid \"Brezno\"\nmsgstr \"Brezno\"\n\n#: sk/sk_districts.py:13\nmsgid \"Bratislava I\"\nmsgstr \"Bratislava I\"\n\n#: sk/sk_districts.py:14\nmsgid \"Bratislava II\"\nmsgstr \"Bratislava II\"\n\n#: sk/sk_districts.py:15\nmsgid \"Bratislava III\"\nmsgstr \"Bratislava III\"\n\n#: sk/sk_districts.py:16\nmsgid \"Bratislava IV\"\nmsgstr \"Bratislava IV\"\n\n#: sk/sk_districts.py:17\nmsgid \"Bratislava V\"\nmsgstr \"Bratislava V\"\n\n#: sk/sk_districts.py:18\nmsgid \"Bytca\"\nmsgstr \"Bitça\"\n\n#: sk/sk_districts.py:19\nmsgid \"Cadca\"\nmsgstr \"Çadsa\"\n\n#: sk/sk_districts.py:20\nmsgid \"Detva\"\nmsgstr \"Detva\"\n\n#: sk/sk_districts.py:21\nmsgid \"Dolny Kubin\"\nmsgstr \"Dolnı Kubin\"\n\n#: sk/sk_districts.py:22\nmsgid \"Dunajska Streda\"\nmsgstr \"Dunayska Seda\"\n\n#: sk/sk_districts.py:23\nmsgid \"Galanta\"\nmsgstr \"Qalanta\"\n\n#: sk/sk_districts.py:24\nmsgid \"Gelnica\"\nmsgstr \"Qelnisa\"\n\n#: sk/sk_districts.py:25\nmsgid \"Hlohovec\"\nmsgstr \"Hlohoves\"\n\n#: sk/sk_districts.py:26\nmsgid \"Humenne\"\nmsgstr \"Humenne\"\n\n#: sk/sk_districts.py:27\nmsgid \"Ilava\"\nmsgstr \"İlava\"\n\n#: sk/sk_districts.py:28\nmsgid \"Kezmarok\"\nmsgstr \"Kejmarok\"\n\n#: sk/sk_districts.py:29\nmsgid \"Komarno\"\nmsgstr \"Komarno\"\n\n#: sk/sk_districts.py:30\nmsgid \"Kosice I\"\nmsgstr \"Koşitse I\"\n\n#: sk/sk_districts.py:31\nmsgid \"Kosice II\"\nmsgstr \"Koşitse II\"\n\n#: sk/sk_districts.py:32\nmsgid \"Kosice III\"\nmsgstr \"Koşitse III\"\n\n#: sk/sk_districts.py:33\nmsgid \"Kosice IV\"\nmsgstr \"Koşitse IV\"\n\n#: sk/sk_districts.py:34\nmsgid \"Kosice - okolie\"\nmsgstr \"Koşitse - okolye\"\n\n#: sk/sk_districts.py:35\nmsgid \"Krupina\"\nmsgstr \"Krupina\"\n\n#: sk/sk_districts.py:36\nmsgid \"Kysucke Nove Mesto\"\nmsgstr \"Kisuske Nove Mesto\"\n\n#: sk/sk_districts.py:37\nmsgid \"Levice\"\nmsgstr \"Levitse\"\n\n#: sk/sk_districts.py:38\nmsgid \"Levoca\"\nmsgstr \"Levoça\"\n\n#: sk/sk_districts.py:39\nmsgid \"Liptovsky Mikulas\"\nmsgstr \"Liptovski Mikulas\"\n\n#: sk/sk_districts.py:40\nmsgid \"Lucenec\"\nmsgstr \"Luçenets\"\n\n#: sk/sk_districts.py:41\nmsgid \"Malacky\"\nmsgstr \"Malatski\"\n\n#: sk/sk_districts.py:42\nmsgid \"Martin\"\nmsgstr \"Martin\"\n\n#: sk/sk_districts.py:43\nmsgid \"Medzilaborce\"\nmsgstr \"Medzilabortse\"\n\n#: sk/sk_districts.py:44\nmsgid \"Michalovce\"\nmsgstr \"Mixalovtse\"\n\n#: sk/sk_districts.py:45\nmsgid \"Myjava\"\nmsgstr \"Miyava\"\n\n#: sk/sk_districts.py:46\nmsgid \"Namestovo\"\nmsgstr \"Namestovo\"\n\n#: sk/sk_districts.py:47\nmsgid \"Nitra\"\nmsgstr \"Nitra\"\n\n#: sk/sk_districts.py:48\nmsgid \"Nove Mesto nad Vahom\"\nmsgstr \"Nove Mesto nad Vahom\"\n\n#: sk/sk_districts.py:49\nmsgid \"Nove Zamky\"\nmsgstr \"Nove Zamki\"\n\n#: sk/sk_districts.py:50\nmsgid \"Partizanske\"\nmsgstr \"Partizanske\"\n\n#: sk/sk_districts.py:51\nmsgid \"Pezinok\"\nmsgstr \"Pezinok\"\n\n#: sk/sk_districts.py:52\nmsgid \"Piestany\"\nmsgstr \"Pyeştanı\"\n\n#: sk/sk_districts.py:53\nmsgid \"Poltar\"\nmsgstr \"Poltar\"\n\n#: sk/sk_districts.py:54\nmsgid \"Poprad\"\nmsgstr \"Poprad\"\n\n#: sk/sk_districts.py:55\nmsgid \"Povazska Bystrica\"\nmsgstr \"Povajska Bistrisa\"\n\n#: sk/sk_districts.py:56\nmsgid \"Presov\"\nmsgstr \"Presov\"\n\n#: sk/sk_districts.py:57\nmsgid \"Prievidza\"\nmsgstr \"Pryevidza\"\n\n#: sk/sk_districts.py:58\nmsgid \"Puchov\"\nmsgstr \"Puxov\"\n\n#: sk/sk_districts.py:59\nmsgid \"Revuca\"\nmsgstr \"Revusa\"\n\n#: sk/sk_districts.py:60\nmsgid \"Rimavska Sobota\"\nmsgstr \"Rimavska Sobota\"\n\n#: sk/sk_districts.py:61\nmsgid \"Roznava\"\nmsgstr \"Rojnyava\"\n\n#: sk/sk_districts.py:62\nmsgid \"Ruzomberok\"\nmsgstr \"Rujomberok\"\n\n#: sk/sk_districts.py:63\nmsgid \"Sabinov\"\nmsgstr \"Sabinov\"\n\n#: sk/sk_districts.py:64\nmsgid \"Senec\"\nmsgstr \"Senes\"\n\n#: sk/sk_districts.py:65\nmsgid \"Senica\"\nmsgstr \"Senisa\"\n\n#: sk/sk_districts.py:66\nmsgid \"Skalica\"\nmsgstr \"Skalisa\"\n\n#: sk/sk_districts.py:67\nmsgid \"Snina\"\nmsgstr \"Snina\"\n\n#: sk/sk_districts.py:68\nmsgid \"Sobrance\"\nmsgstr \"Sobranse\"\n\n#: sk/sk_districts.py:69\nmsgid \"Spisska Nova Ves\"\nmsgstr \"Spişka Nova Ves\"\n\n#: sk/sk_districts.py:70\nmsgid \"Stara Lubovna\"\nmsgstr \"Stara Lyubovna\"\n\n#: sk/sk_districts.py:71\nmsgid \"Stropkov\"\nmsgstr \"Stropkov\"\n\n#: sk/sk_districts.py:72\nmsgid \"Svidnik\"\nmsgstr \"Svidnik\"\n\n#: sk/sk_districts.py:73\nmsgid \"Sala\"\nmsgstr \"Sala\"\n\n#: sk/sk_districts.py:74\nmsgid \"Topolcany\"\nmsgstr \"Topolçanı\"\n\n#: sk/sk_districts.py:75\nmsgid \"Trebisov\"\nmsgstr \"Trebisov\"\n\n#: sk/sk_districts.py:76\nmsgid \"Trencin\"\nmsgstr \"Trençin\"\n\n#: sk/sk_districts.py:77\nmsgid \"Trnava\"\nmsgstr \"Trnava\"\n\n#: sk/sk_districts.py:78\nmsgid \"Turcianske Teplice\"\nmsgstr \"Turçanske Teplise\"\n\n#: sk/sk_districts.py:79\nmsgid \"Tvrdosin\"\nmsgstr \"Tvrdosin\"\n\n#: sk/sk_districts.py:80\nmsgid \"Velky Krtis\"\nmsgstr \"Velki Krtis\"\n\n#: sk/sk_districts.py:81\nmsgid \"Vranov nad Toplou\"\nmsgstr \"Vranov nad Toplou\"\n\n#: sk/sk_districts.py:82\nmsgid \"Zlate Moravce\"\nmsgstr \"Zlate Moravse\"\n\n#: sk/sk_districts.py:83\nmsgid \"Zvolen\"\nmsgstr \"Zvolen\"\n\n#: sk/sk_districts.py:84\nmsgid \"Zarnovica\"\nmsgstr \"Zarnovitsa\"\n\n#: sk/sk_districts.py:85\nmsgid \"Ziar nad Hronom\"\nmsgstr \"Jar nad Hronom\"\n\n#: sk/sk_districts.py:86\nmsgid \"Zilina\"\nmsgstr \"Jilina\"\n\n#: sk/sk_regions.py:8\nmsgid \"Banska Bystrica region\"\nmsgstr \"Banska Bistritsa vilayəti\"\n\n#: sk/sk_regions.py:9\nmsgid \"Bratislava region\"\nmsgstr \"Bratislava vilayəti\"\n\n#: sk/sk_regions.py:10\nmsgid \"Kosice region\"\nmsgstr \"Koşitse vilayəti\"\n\n#: sk/sk_regions.py:11\nmsgid \"Nitra region\"\nmsgstr \"Nitra vilayəti\"\n\n#: sk/sk_regions.py:12\nmsgid \"Presov region\"\nmsgstr \"Preşov\"\n\n#: sk/sk_regions.py:13\nmsgid \"Trencin region\"\nmsgstr \"Trençin vilayəti\"\n\n#: sk/sk_regions.py:14\nmsgid \"Trnava region\"\nmsgstr \"Trnava vilayəti\"\n\n#: sk/sk_regions.py:15\nmsgid \"Zilina region\"\nmsgstr \"Jilina vilayəti\"\n\n#: tr/forms.py:21\nmsgid \"Enter a postal code in the format XXXXX.\"\nmsgstr \"XXXXX formatında poçt indeksini daxil edin.\"\n\n#: tr/forms.py:42\nmsgid \"Phone numbers must be in 0XXX XXX XXXX format.\"\nmsgstr \"0XXX XXX XXXX formatında telefon nömrəsini daxil edin.\"\n\n#: tr/forms.py:69\nmsgid \"Enter a valid Turkish Identification number.\"\nmsgstr \"Düzgün Türkiyə identifikasiya kodunu daxil edin.\"\n\n#: tr/forms.py:70\nmsgid \"Turkish Identification number must be 11 digits.\"\nmsgstr \"Türkiyə identifikasiya kodu 11 rəqəmdən ibarətdir.\"\n\n#: us/forms.py:21\nmsgid \"Enter a zip code in the format XXXXX or XXXXX-XXXX.\"\nmsgstr \"XXXXX və ya XXXXX-XXXX formatında poçt indeksini daxil edin.\"\n\n#: us/forms.py:59\nmsgid \"Enter a valid U.S. Social Security number in XXX-XX-XXXX format.\"\nmsgstr \"XXX-XX-XXXX formatında ABŞ Sosial Müdafiyə kodunu daxil edin.\"\n\n#: us/forms.py:92\nmsgid \"Enter a U.S. state or territory.\"\nmsgstr \"ABŞ ştatı və ya ərazisini daxil edin.\"\n\n#: us/models.py:8\nmsgid \"U.S. state (two uppercase letters)\"\nmsgstr \"ABŞ ştatı (iki böyük hərf)\"\n\n#: us/models.py:17\nmsgid \"U.S. postal code (two uppercase letters)\"\nmsgstr \"ABŞ poçt indeksi (iki böyük hərf)\"\n\n#: us/models.py:26\nmsgid \"Phone number\"\nmsgstr \"Telefon nömrəsi\"\n\n#: uy/forms.py:29\nmsgid \"Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.\"\nmsgstr \"\"\n\"X.XXX.XXX-X,XXXXXXX-X və ya XXXXXXXX formatında düzgün CI kodunu daxil edin.\"\n\n#: uy/forms.py:31\nmsgid \"Enter a valid CI number.\"\nmsgstr \"CI kodunu düzgün daxil edin.\"\n\n#: za/forms.py:22\nmsgid \"Enter a valid South African ID number\"\nmsgstr \"Cənubi Afrika üçün düzgün identifikasiya kodunu daxil edin.\"\n\n#: za/forms.py:56\nmsgid \"Enter a valid South African postal code\"\nmsgstr \"Cənubi Afrika üçün düzgün poçt indeksini daxil edin.\"\n\n#: za/za_provinces.py:4\nmsgid \"Eastern Cape\"\nmsgstr \"Şərqi Keyp\"\n\n#: za/za_provinces.py:5\nmsgid \"Free State\"\nmsgstr \"Azad Ştat\"\n\n#: za/za_provinces.py:6\nmsgid \"Gauteng\"\nmsgstr \"Qautenq\"\n\n#: za/za_provinces.py:7\nmsgid \"KwaZulu-Natal\"\nmsgstr \"Kva-Zulu-Natal\"\n\n#: za/za_provinces.py:8\nmsgid \"Limpopo\"\nmsgstr \"Limpopo\"\n\n#: za/za_provinces.py:9\nmsgid \"Mpumalanga\"\nmsgstr \"Mpulamanqa\"\n\n#: za/za_provinces.py:10\nmsgid \"Northern Cape\"\nmsgstr \"Şimali Keyp\"\n\n#: za/za_provinces.py:11\nmsgid \"North West\"\nmsgstr \"Şimali-Qərb\"\n\n#: za/za_provinces.py:12\nmsgid \"Western Cape\"\nmsgstr \"Qərbi Keyp\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/locale/be/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-10-17 09:17+0000\\n\"\n\"Last-Translator: Павал Клёк <yehekim@gmail.com>\\n\"\n\"Language-Team: Belarusian (http://www.transifex.com/projects/p/django/\"\n\"language/be/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: be\\n\"\n\"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: ar/forms.py:30\nmsgid \"Enter a postal code in the format NNNN or ANNNNAAA.\"\nmsgstr \"Пазначце індэкс у выглядзе «NNNN» або «ANNNNAAA».\"\n\n#: ar/forms.py:52 br/forms.py:95 br/forms.py:134 pe/forms.py:27 pe/forms.py:55\nmsgid \"This field requires only numbers.\"\nmsgstr \"Дазваляюцца толькі лічбы.\"\n\n#: ar/forms.py:53\nmsgid \"This field requires 7 or 8 digits.\"\nmsgstr \"Поле мусіць мець 7 або 8 лічбаў.\"\n\n#: ar/forms.py:82\nmsgid \"Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.\"\nmsgstr \"Пазначце чынны CUIT у выглядзе «XX-XXXXXXXX-X» або «XXXXXXXXXXXX».\"\n\n#: ar/forms.py:83\nmsgid \"Invalid CUIT.\"\nmsgstr \"Хібны CUIT.\"\n\n#: ar/forms.py:84\nmsgid \"Invalid legal type. Type must be 27, 20, 23 or 30.\"\nmsgstr \"\"\n\n#: at/at_states.py:5\nmsgid \"Burgenland\"\nmsgstr \"Бурґенлянд\"\n\n#: at/at_states.py:6\nmsgid \"Carinthia\"\nmsgstr \"Карынція\"\n\n#: at/at_states.py:7\nmsgid \"Lower Austria\"\nmsgstr \"Ніжняя Аўстрыя\"\n\n#: at/at_states.py:8\nmsgid \"Upper Austria\"\nmsgstr \"Верхняя Аўстрыя\"\n\n#: at/at_states.py:9\nmsgid \"Salzburg\"\nmsgstr \"Зальцбурґ\"\n\n#: at/at_states.py:10\nmsgid \"Styria\"\nmsgstr \"Штырыя\"\n\n#: at/at_states.py:11\nmsgid \"Tyrol\"\nmsgstr \"Тыроль\"\n\n#: at/at_states.py:12\nmsgid \"Vorarlberg\"\nmsgstr \"Форальбэрґ\"\n\n#: at/at_states.py:13\nmsgid \"Vienna\"\nmsgstr \"Вена\"\n\n#: at/forms.py:22 ch/forms.py:22 no/forms.py:19\nmsgid \"Enter a zip code in the format XXXX.\"\nmsgstr \"Пазначце індэкс у выглядзе «XXXX».\"\n\n#: at/forms.py:50\nmsgid \"Enter a valid Austrian Social Security Number in XXXX XXXXXX format.\"\nmsgstr \"\"\n\"Пазначце нумар аўстрыйскае сацыяльнае страхоўкі ў выглядзе «XXXX XXXXXX».\"\n\n#: au/forms.py:26\nmsgid \"Enter a 4 digit postcode.\"\nmsgstr \"Пазначце індэкс (4 лічбы).\"\n\n#: au/models.py:9\nmsgid \"Australian State\"\nmsgstr \"Штат у Аўстрыі\"\n\n#: au/models.py:19\nmsgid \"Australian Postcode\"\nmsgstr \"Індэкс у Аўстрыі\"\n\n#: au/models.py:33\nmsgid \"Australian Phone number\"\nmsgstr \"Тэлефонны нумар у Аўстрыі\"\n\n#: be/be_provinces.py:5\nmsgid \"Antwerp\"\nmsgstr \"Антвэрпэн\"\n\n#: be/be_provinces.py:6\nmsgid \"Brussels\"\nmsgstr \"Брусэль\"\n\n#: be/be_provinces.py:7\nmsgid \"East Flanders\"\nmsgstr \"Усходняя Фляндрыя\"\n\n#: be/be_provinces.py:8\nmsgid \"Flemish Brabant\"\nmsgstr \"Флямандзкі Брабант\"\n\n#: be/be_provinces.py:9\nmsgid \"Hainaut\"\nmsgstr \"Эно\"\n\n#: be/be_provinces.py:10\nmsgid \"Liege\"\nmsgstr \"Ліеж\"\n\n#: be/be_provinces.py:11 nl/nl_provinces.py:9\nmsgid \"Limburg\"\nmsgstr \"Лімбурґ\"\n\n#: be/be_provinces.py:12\nmsgid \"Luxembourg\"\nmsgstr \"Люксэмбурґ\"\n\n#: be/be_provinces.py:13\nmsgid \"Namur\"\nmsgstr \"Намюр\"\n\n#: be/be_provinces.py:14\nmsgid \"Walloon Brabant\"\nmsgstr \"Валёнскі Брабант\"\n\n#: be/be_provinces.py:15\nmsgid \"West Flanders\"\nmsgstr \"Заходняя Фляндрыя\"\n\n#: be/be_regions.py:5\nmsgid \"Brussels Capital Region\"\nmsgstr \"Брусэльскі сталічны рэґіён\"\n\n#: be/be_regions.py:6\nmsgid \"Flemish Region\"\nmsgstr \"Фляндрыя\"\n\n#: be/be_regions.py:7\nmsgid \"Wallonia\"\nmsgstr \"Влёнія\"\n\n#: be/forms.py:25\nmsgid \"Enter a valid postal code in the range and format 1XXX - 9XXX.\"\nmsgstr \"Пазначце чынны індэкс у прамежку ад 1000 да 9999.\"\n\n#: be/forms.py:48\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\nmsgstr \"\"\n\"Пазначце чынны тэлефонны нумар у адным з наступных выглядаў: 0x xxx xx xx, \"\n\"0xx xx xx xx, 04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.\"\n\"xxx.xx.xx, 0xx.xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\n\n#: br/forms.py:22\nmsgid \"Enter a zip code in the format XXXXX-XXX.\"\nmsgstr \"Пазначце індэкс у выглядзе «XXXXX-XXX».\"\n\n#: br/forms.py:31\nmsgid \"Phone numbers must be in XX-XXXX-XXXX format.\"\nmsgstr \"Тэлефонныя нумары трэба пазначаць у выглядзе «XX-XXXX-XXXX».\"\n\n#: br/forms.py:58\nmsgid \"\"\n\"Select a valid brazilian state. That state is not one of the available \"\n\"states.\"\nmsgstr \"Абярыце штат у Бразыліі. Гэтага штату няма ў даступных.\"\n\n#: br/forms.py:93\nmsgid \"Invalid CPF number.\"\nmsgstr \"Хібны нумар CPF.\"\n\n#: br/forms.py:94\nmsgid \"This field requires at most 11 digits or 14 characters.\"\nmsgstr \"Трэба пазначыць ня болей за 11 лічбаў або 14 знакаў.\"\n\n#: br/forms.py:133\nmsgid \"Invalid CNPJ number.\"\nmsgstr \"Хібны нумар CNPJ.\"\n\n#: br/forms.py:135\nmsgid \"This field requires at least 14 digits\"\nmsgstr \"Трэба пазначыць прынамсі 14 лічбаў.\"\n\n#: ca/forms.py:29\nmsgid \"Enter a postal code in the format XXX XXX.\"\nmsgstr \"Пазначце індэкс у выглядзе «XXX XXX».\"\n\n#: ca/forms.py:47 us/forms.py:30\nmsgid \"Phone numbers must be in XXX-XXX-XXXX format.\"\nmsgstr \"Тэлефонныя нумары трэба пазначаць у выглядзе «XXX-XXX-XXXX».\"\n\n#: ca/forms.py:69\nmsgid \"Enter a Canadian province or territory.\"\nmsgstr \"\"\n\n#: ca/forms.py:110\nmsgid \"Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.\"\nmsgstr \"\"\n\"Пазначце нумар канадзкае сацыяльнае страхоўкі ў выглядзе «XXX-XXX-XXX».\"\n\n#: ch/ch_states.py:5\nmsgid \"Aargau\"\nmsgstr \"Аарґаў\"\n\n#: ch/ch_states.py:6\nmsgid \"Appenzell Innerrhoden\"\nmsgstr \"Апэнцэль-Інэродэн\"\n\n#: ch/ch_states.py:7\nmsgid \"Appenzell Ausserrhoden\"\nmsgstr \"Апэнцэль-Аўсэродэн\"\n\n#: ch/ch_states.py:8\nmsgid \"Basel-Stadt\"\nmsgstr \"Базэль-Штат\"\n\n#: ch/ch_states.py:9\nmsgid \"Basel-Land\"\nmsgstr \"Базэль-Ланд\"\n\n#: ch/ch_states.py:10\nmsgid \"Berne\"\nmsgstr \"Бэрн\"\n\n#: ch/ch_states.py:11\nmsgid \"Fribourg\"\nmsgstr \"Фрыбур\"\n\n#: ch/ch_states.py:12\nmsgid \"Geneva\"\nmsgstr \"Жэнэва\"\n\n#: ch/ch_states.py:13\nmsgid \"Glarus\"\nmsgstr \"Ґлярус\"\n\n#: ch/ch_states.py:14\nmsgid \"Graubuenden\"\nmsgstr \"Ґраўбюндэн\"\n\n#: ch/ch_states.py:15\nmsgid \"Jura\"\nmsgstr \"Юра\"\n\n#: ch/ch_states.py:16\nmsgid \"Lucerne\"\nmsgstr \"Люцэрн\"\n\n#: ch/ch_states.py:17\nmsgid \"Neuchatel\"\nmsgstr \"Нэўшатэль\"\n\n#: ch/ch_states.py:18\nmsgid \"Nidwalden\"\nmsgstr \"Нідвальдэн\"\n\n#: ch/ch_states.py:19\nmsgid \"Obwalden\"\nmsgstr \"Обвальдэн\"\n\n#: ch/ch_states.py:20\nmsgid \"Schaffhausen\"\nmsgstr \"Шафхаўзэн\"\n\n#: ch/ch_states.py:21\nmsgid \"Schwyz\"\nmsgstr \"Швіц\"\n\n#: ch/ch_states.py:22\nmsgid \"Solothurn\"\nmsgstr \"Залатурн\"\n\n#: ch/ch_states.py:23\nmsgid \"St. Gallen\"\nmsgstr \"Санкт-Ґален\"\n\n#: ch/ch_states.py:24\nmsgid \"Thurgau\"\nmsgstr \"Турґаў\"\n\n#: ch/ch_states.py:25\nmsgid \"Ticino\"\nmsgstr \"Тычына\"\n\n#: ch/ch_states.py:26\nmsgid \"Uri\"\nmsgstr \"Уры\"\n\n#: ch/ch_states.py:27\nmsgid \"Valais\"\nmsgstr \"Вале\"\n\n#: ch/ch_states.py:28\nmsgid \"Vaud\"\nmsgstr \"Во\"\n\n#: ch/ch_states.py:29\nmsgid \"Zug\"\nmsgstr \"Цуґ\"\n\n#: ch/ch_states.py:30\nmsgid \"Zurich\"\nmsgstr \"Цюрых\"\n\n#: ch/forms.py:37\nmsgid \"Phone numbers must be in 0XX XXX XX XX format.\"\nmsgstr \"\"\n\n#: ch/forms.py:68\nmsgid \"\"\n\"Enter a valid Swiss identity or passport card number in X1234567<0 or \"\n\"1234567890 format.\"\nmsgstr \"\"\n\"Пазначце швайцарскі нумар тоеснасьці або пашпартнае карткі ў выглядзе \"\n\"«X1234567<0» або «1234567890».\"\n\n#: cl/forms.py:32\nmsgid \"Enter a valid Chilean RUT.\"\nmsgstr \"Пазначце чылійскі нумар RUT.\"\n\n#: cl/forms.py:33\nmsgid \"Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.\"\nmsgstr \"Пазначце чылійскі нумар RUT. Выгляд: «XX.XXX.XXX-X».\"\n\n#: cl/forms.py:34\nmsgid \"The Chilean RUT is not valid.\"\nmsgstr \"Неадпаведны чылійскі RUT.\"\n\n#: cn/forms.py:84\nmsgid \"Enter a post code in the format XXXXXX.\"\nmsgstr \"Пазначце індэкс у выглядзе «XXXXXX».\"\n\n#: cn/forms.py:105\nmsgid \"ID Card Number consists of 15 or 18 digits.\"\nmsgstr \"Азначальны нумар карткі зьмяшчае 15 або 18 лічбаў.\"\n\n#: cn/forms.py:106\nmsgid \"Invalid ID Card Number: Wrong checksum\"\nmsgstr \"Хібны азначальны нумар: неадпаведная кантрольная сума\"\n\n#: cn/forms.py:107\nmsgid \"Invalid ID Card Number: Wrong birthdate\"\nmsgstr \"Хібны азначальны нумар: памылковая дата нараджэньня\"\n\n#: cn/forms.py:108\nmsgid \"Invalid ID Card Number: Wrong location code\"\nmsgstr \"Хібны азначальны нумар: памылковы код мясцовасьці\"\n\n#: cn/forms.py:193\nmsgid \"Enter a valid phone number.\"\nmsgstr \"Пазначце чынны нумар тэлефона.\"\n\n#: cn/forms.py:210\nmsgid \"Enter a valid cell number.\"\nmsgstr \"Пазначце чынны нумар сотавага.\"\n\n#: cz/cz_regions.py:8\nmsgid \"Prague\"\nmsgstr \"Праґа\"\n\n#: cz/cz_regions.py:9\nmsgid \"Central Bohemian Region\"\nmsgstr \"Цэнтральначэскі край\"\n\n#: cz/cz_regions.py:10\nmsgid \"South Bohemian Region\"\nmsgstr \"Паўднёвачэскі край\"\n\n#: cz/cz_regions.py:11\nmsgid \"Pilsen Region\"\nmsgstr \"Пльзэнскі край\"\n\n#: cz/cz_regions.py:12\nmsgid \"Carlsbad Region\"\nmsgstr \"Карлаварскі край\"\n\n#: cz/cz_regions.py:13\nmsgid \"Usti Region\"\nmsgstr \"Устэцкі край\"\n\n#: cz/cz_regions.py:14\nmsgid \"Liberec Region\"\nmsgstr \"Лібярэцкі край\"\n\n#: cz/cz_regions.py:15\nmsgid \"Hradec Region\"\nmsgstr \"Кралавеградэцкі край\"\n\n#: cz/cz_regions.py:16\nmsgid \"Pardubice Region\"\nmsgstr \"Пардубіцкі край\"\n\n#: cz/cz_regions.py:17\nmsgid \"Vysocina Region\"\nmsgstr \"Край Высачына\"\n\n#: cz/cz_regions.py:18\nmsgid \"South Moravian Region\"\nmsgstr \"Паўднёвамараўскі край\"\n\n#: cz/cz_regions.py:19\nmsgid \"Olomouc Region\"\nmsgstr \"Аламоўцкі край\"\n\n#: cz/cz_regions.py:20\nmsgid \"Zlin Region\"\nmsgstr \"Злінскі край\"\n\n#: cz/cz_regions.py:21\nmsgid \"Moravian-Silesian Region\"\nmsgstr \"Марава-сілезскі край\"\n\n#: cz/forms.py:32 sk/forms.py:33\nmsgid \"Enter a postal code in the format XXXXX or XXX XX.\"\nmsgstr \"Пазначце індэкс у выглядзе «XXXXX» або «XXX XX».\"\n\n#: cz/forms.py:52\nmsgid \"Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.\"\nmsgstr \"\"\n\"Пазначце асабісты атаясьняльны нумар у выглядзе «XXXXXX/XXXX» або \"\n\"«XXXXXXXXXX».\"\n\n#: cz/forms.py:53\nmsgid \"Enter a valid birth number.\"\nmsgstr \"Пазначце чынны асабісты атаясьняльны нумар.\"\n\n#: cz/forms.py:102\nmsgid \"Enter a valid IC number.\"\nmsgstr \"Пазначце чынны атаясьняльны нумар карткі (IC).\"\n\n#: de/de_states.py:5\nmsgid \"Baden-Wuerttemberg\"\nmsgstr \"Бадэн-Вюртэнбэрґ\"\n\n#: de/de_states.py:6\nmsgid \"Bavaria\"\nmsgstr \"Баварыя\"\n\n#: de/de_states.py:7\nmsgid \"Berlin\"\nmsgstr \"Бэрлін\"\n\n#: de/de_states.py:8\nmsgid \"Brandenburg\"\nmsgstr \"Брандэнбурґ\"\n\n#: de/de_states.py:9\nmsgid \"Bremen\"\nmsgstr \"Брэмэн\"\n\n#: de/de_states.py:10\nmsgid \"Hamburg\"\nmsgstr \"Гамбурґ\"\n\n#: de/de_states.py:11\nmsgid \"Hessen\"\nmsgstr \"Гэсэн\"\n\n#: de/de_states.py:12\nmsgid \"Mecklenburg-Western Pomerania\"\nmsgstr \"Мэкленбурґ — Пярэдняя Памэранія\"\n\n#: de/de_states.py:13\nmsgid \"Lower Saxony\"\nmsgstr \"Ніжняя Саксонія\"\n\n#: de/de_states.py:14\nmsgid \"North Rhine-Westphalia\"\nmsgstr \"Паўночны Райн — Вэстфалія\"\n\n#: de/de_states.py:15\nmsgid \"Rhineland-Palatinate\"\nmsgstr \"Райнлянд-Пфальц\"\n\n#: de/de_states.py:16\nmsgid \"Saarland\"\nmsgstr \"Заарлянд\"\n\n#: de/de_states.py:17\nmsgid \"Saxony\"\nmsgstr \"Сакоснія\"\n\n#: de/de_states.py:18\nmsgid \"Saxony-Anhalt\"\nmsgstr \"Саксонія-Ангальт\"\n\n#: de/de_states.py:19\nmsgid \"Schleswig-Holstein\"\nmsgstr \"Шлезьвіґ-Гальштайн\"\n\n#: de/de_states.py:20\nmsgid \"Thuringia\"\nmsgstr \"Турынґія\"\n\n#: de/forms.py:20 fi/forms.py:18 fr/forms.py:20\nmsgid \"Enter a zip code in the format XXXXX.\"\nmsgstr \"Пазначце індэкс у выглядзе «XXXXX».\"\n\n#: de/forms.py:46\nmsgid \"\"\n\"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"format.\"\nmsgstr \"\"\n\"Пазначце нямецкі нумар атаясьняльнае карткі ў выглядзе «XXXXXXXXXXX-XXXXXXX-\"\n\"XXXXXXX-X».\"\n\n#: es/es_provinces.py:5\nmsgid \"Araba\"\nmsgstr \"\"\n\n#: es/es_provinces.py:6\nmsgid \"Albacete\"\nmsgstr \"Альбасетэ\"\n\n#: es/es_provinces.py:7\nmsgid \"Alacant\"\nmsgstr \"Алікантэ\"\n\n#: es/es_provinces.py:8\nmsgid \"Almeria\"\nmsgstr \"Альмэрыя\"\n\n#: es/es_provinces.py:9\nmsgid \"Avila\"\nmsgstr \"Авіля\"\n\n#: es/es_provinces.py:10\nmsgid \"Badajoz\"\nmsgstr \"Бадахас\"\n\n#: es/es_provinces.py:11\nmsgid \"Illes Balears\"\nmsgstr \"Балеарскія выспы\"\n\n#: es/es_provinces.py:12\nmsgid \"Barcelona\"\nmsgstr \"Барсэлёна\"\n\n#: es/es_provinces.py:13\nmsgid \"Burgos\"\nmsgstr \"Бурґос\"\n\n#: es/es_provinces.py:14\nmsgid \"Caceres\"\nmsgstr \"Касэрэс\"\n\n#: es/es_provinces.py:15\nmsgid \"Cadiz\"\nmsgstr \"Кадыс\"\n\n#: es/es_provinces.py:16\nmsgid \"Castello\"\nmsgstr \"Кастэла\"\n\n#: es/es_provinces.py:17\nmsgid \"Ciudad Real\"\nmsgstr \"Сюдад-Рэаль\"\n\n#: es/es_provinces.py:18\nmsgid \"Cordoba\"\nmsgstr \"Кордава\"\n\n#: es/es_provinces.py:19\nmsgid \"A Coruna\"\nmsgstr \"Ля Карунья\"\n\n#: es/es_provinces.py:20\nmsgid \"Cuenca\"\nmsgstr \"Куэнка\"\n\n#: es/es_provinces.py:21\nmsgid \"Girona\"\nmsgstr \"Жырона\"\n\n#: es/es_provinces.py:22\nmsgid \"Granada\"\nmsgstr \"Ґранада\"\n\n#: es/es_provinces.py:23\nmsgid \"Guadalajara\"\nmsgstr \"Ґвадалахара\"\n\n#: es/es_provinces.py:24\nmsgid \"Guipuzkoa\"\nmsgstr \"Ґіпускоа\"\n\n#: es/es_provinces.py:25\nmsgid \"Huelva\"\nmsgstr \"Уэльва\"\n\n#: es/es_provinces.py:26\nmsgid \"Huesca\"\nmsgstr \"Уэска\"\n\n#: es/es_provinces.py:27\nmsgid \"Jaen\"\nmsgstr \"Хаэн\"\n\n#: es/es_provinces.py:28\nmsgid \"Leon\"\nmsgstr \"Леон\"\n\n#: es/es_provinces.py:29\nmsgid \"Lleida\"\nmsgstr \"Лейда\"\n\n#: es/es_provinces.py:30 es/es_regions.py:17\nmsgid \"La Rioja\"\nmsgstr \"Рыёха\"\n\n#: es/es_provinces.py:31\nmsgid \"Lugo\"\nmsgstr \"Люґа\"\n\n#: es/es_provinces.py:32 es/es_regions.py:18\nmsgid \"Madrid\"\nmsgstr \"Мадрыд\"\n\n#: es/es_provinces.py:33\nmsgid \"Malaga\"\nmsgstr \"Малаґа\"\n\n#: es/es_provinces.py:34\nmsgid \"Murcia\"\nmsgstr \"Мурсія\"\n\n#: es/es_provinces.py:35\nmsgid \"Navarre\"\nmsgstr \"Навара\"\n\n#: es/es_provinces.py:36\nmsgid \"Ourense\"\nmsgstr \"Арэнсэ\"\n\n#: es/es_provinces.py:37\nmsgid \"Asturias\"\nmsgstr \"Астурыя\"\n\n#: es/es_provinces.py:38\nmsgid \"Palencia\"\nmsgstr \"Паленсія\"\n\n#: es/es_provinces.py:39\nmsgid \"Las Palmas\"\nmsgstr \"Ляс-Пальмас\"\n\n#: es/es_provinces.py:40\nmsgid \"Pontevedra\"\nmsgstr \"Пантэвэдра\"\n\n#: es/es_provinces.py:41\nmsgid \"Salamanca\"\nmsgstr \"Саляманка\"\n\n#: es/es_provinces.py:42\nmsgid \"Santa Cruz de Tenerife\"\nmsgstr \"Санта-Крус-дэ-Тэнэрыфэ\"\n\n#: es/es_provinces.py:43 es/es_regions.py:11\nmsgid \"Cantabria\"\nmsgstr \"Кантабрыя\"\n\n#: es/es_provinces.py:44\nmsgid \"Segovia\"\nmsgstr \"Сэґовія\"\n\n#: es/es_provinces.py:45\nmsgid \"Seville\"\nmsgstr \"Сэвільля\"\n\n#: es/es_provinces.py:46\nmsgid \"Soria\"\nmsgstr \"Сорыя\"\n\n#: es/es_provinces.py:47\nmsgid \"Tarragona\"\nmsgstr \"Тараґона\"\n\n#: es/es_provinces.py:48\nmsgid \"Teruel\"\nmsgstr \"Тэруэль\"\n\n#: es/es_provinces.py:49\nmsgid \"Toledo\"\nmsgstr \"Таледа\"\n\n#: es/es_provinces.py:50\nmsgid \"Valencia\"\nmsgstr \"Валенсія\"\n\n#: es/es_provinces.py:51\nmsgid \"Valladolid\"\nmsgstr \"Вальлядалід\"\n\n#: es/es_provinces.py:52\nmsgid \"Bizkaia\"\nmsgstr \"Біская\"\n\n#: es/es_provinces.py:53\nmsgid \"Zamora\"\nmsgstr \"Самора\"\n\n#: es/es_provinces.py:54\nmsgid \"Zaragoza\"\nmsgstr \"Сараґоса\"\n\n#: es/es_provinces.py:55\nmsgid \"Ceuta\"\nmsgstr \"Сэўта\"\n\n#: es/es_provinces.py:56\nmsgid \"Melilla\"\nmsgstr \"Мэлільля\"\n\n#: es/es_regions.py:5\nmsgid \"Andalusia\"\nmsgstr \"Андалюсія\"\n\n#: es/es_regions.py:6\nmsgid \"Aragon\"\nmsgstr \"Араґон\"\n\n#: es/es_regions.py:7\nmsgid \"Principality of Asturias\"\nmsgstr \"Астурыя\"\n\n#: es/es_regions.py:8\nmsgid \"Balearic Islands\"\nmsgstr \"Балеарскія выспы\"\n\n#: es/es_regions.py:9\nmsgid \"Basque Country\"\nmsgstr \"Краіна Баскаў\"\n\n#: es/es_regions.py:10\nmsgid \"Canary Islands\"\nmsgstr \"Канарскі архіпэляґ\"\n\n#: es/es_regions.py:12\nmsgid \"Castile-La Mancha\"\nmsgstr \"Кастылія — Ля-Манча\"\n\n#: es/es_regions.py:13\nmsgid \"Castile and Leon\"\nmsgstr \"Кастылія і Леон\"\n\n#: es/es_regions.py:14\nmsgid \"Catalonia\"\nmsgstr \"Каталёнія\"\n\n#: es/es_regions.py:15\nmsgid \"Extremadura\"\nmsgstr \"Экстрэмадура\"\n\n#: es/es_regions.py:16\nmsgid \"Galicia\"\nmsgstr \"Ґалісія\"\n\n#: es/es_regions.py:19\nmsgid \"Region of Murcia\"\nmsgstr \"Мурсія\"\n\n#: es/es_regions.py:20\nmsgid \"Foral Community of Navarre\"\nmsgstr \"Навара (аўтаномная супольнасьць)\"\n\n#: es/es_regions.py:21\nmsgid \"Valencian Community\"\nmsgstr \"Валенсія (аўтаномная супольнасьць)\"\n\n#: es/forms.py:26\nmsgid \"Enter a valid postal code in the range and format 01XXX - 52XXX.\"\nmsgstr \"Пазначце чынны індэкс у прамежку ад 01000 да 52999.\"\n\n#: es/forms.py:46\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or \"\n\"9XXXXXXXX.\"\nmsgstr \"\"\n\"Пазначце чынны тэлефонны нумар у адным з выглядаў: «6XXXXXXXX», «8XXXXXXXX» \"\n\"або «9XXXXXXXX».\"\n\n#: es/forms.py:73\nmsgid \"Please enter a valid NIF, NIE, or CIF.\"\nmsgstr \"Пазначце чынны NIF, NIF або CIF.\"\n\n#: es/forms.py:74\nmsgid \"Please enter a valid NIF or NIE.\"\nmsgstr \"Пазначце чынны NIF або NIE.\"\n\n#: es/forms.py:75\nmsgid \"Invalid checksum for NIF.\"\nmsgstr \"Хібная кантрольная сума NIF,\"\n\n#: es/forms.py:76\nmsgid \"Invalid checksum for NIE.\"\nmsgstr \"Хібная кантрольная сума NIE,\"\n\n#: es/forms.py:77\nmsgid \"Invalid checksum for CIF.\"\nmsgstr \"Хібная кантрольная сума CIF,\"\n\n#: es/forms.py:149\nmsgid \"\"\n\"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.\"\nmsgstr \"\"\n\"Пазначце чынны нумар банкаўскага рахунку ў выглядзе «XXXX-XXXX-XX-\"\n\"XXXXXXXXXX».\"\n\n#: es/forms.py:150\nmsgid \"Invalid checksum for bank account number.\"\nmsgstr \"Хібная кантрольная сума нумару банкаўскага рахунку,\"\n\n#: fi/forms.py:33\nmsgid \"Enter a valid Finnish social security number.\"\nmsgstr \"Пазначце чынны нумар фінскае сацыяльнае страхоўкі.\"\n\n#: fr/forms.py:35\nmsgid \"Phone numbers must be in 0X XX XX XX XX format.\"\nmsgstr \"Тэлефонныя нумары трэба пазначаць у выглядзе «0X XX XX XX XX».\"\n\n#: gb/forms.py:25\nmsgid \"Enter a valid postcode.\"\nmsgstr \"Пазначце чынны індэкс.\"\n\n#: gb/gb_regions.py:11\nmsgid \"Bedfordshire\"\nmsgstr \"Бэдфардшыр\"\n\n#: gb/gb_regions.py:12\nmsgid \"Buckinghamshire\"\nmsgstr \"Бакінгэмшыр\"\n\n#: gb/gb_regions.py:14\nmsgid \"Cheshire\"\nmsgstr \"Чэшыр\"\n\n#: gb/gb_regions.py:15\nmsgid \"Cornwall and Isles of Scilly\"\nmsgstr \"Корнуал і Сілі\"\n\n#: gb/gb_regions.py:16\nmsgid \"Cumbria\"\nmsgstr \"Камбрыя\"\n\n#: gb/gb_regions.py:17\nmsgid \"Derbyshire\"\nmsgstr \"Дэрбішыр\"\n\n#: gb/gb_regions.py:18\nmsgid \"Devon\"\nmsgstr \"Дэван\"\n\n#: gb/gb_regions.py:19\nmsgid \"Dorset\"\nmsgstr \"Дорсэт\"\n\n#: gb/gb_regions.py:20\nmsgid \"Durham\"\nmsgstr \"Дарэм\"\n\n#: gb/gb_regions.py:21\nmsgid \"East Sussex\"\nmsgstr \"Усходні Сасэкс\"\n\n#: gb/gb_regions.py:22\nmsgid \"Essex\"\nmsgstr \"Эсэкс\"\n\n#: gb/gb_regions.py:23\nmsgid \"Gloucestershire\"\nmsgstr \"Ґлостэршыр\"\n\n#: gb/gb_regions.py:24\nmsgid \"Greater London\"\nmsgstr \"Вялікі Лёндан\"\n\n#: gb/gb_regions.py:25\nmsgid \"Greater Manchester\"\nmsgstr \"Вялікі Манчэстэр\"\n\n#: gb/gb_regions.py:26\nmsgid \"Hampshire\"\nmsgstr \"Гэмпшыр\"\n\n#: gb/gb_regions.py:27\nmsgid \"Hertfordshire\"\nmsgstr \"Гартфардшыр\"\n\n#: gb/gb_regions.py:28\nmsgid \"Kent\"\nmsgstr \"Кент\"\n\n#: gb/gb_regions.py:29\nmsgid \"Lancashire\"\nmsgstr \"Ланкашыр\"\n\n#: gb/gb_regions.py:30\nmsgid \"Leicestershire\"\nmsgstr \"Лэстэршыр\"\n\n#: gb/gb_regions.py:31\nmsgid \"Lincolnshire\"\nmsgstr \"Лінкальншыр\"\n\n#: gb/gb_regions.py:32\nmsgid \"Merseyside\"\nmsgstr \"Мэрсісайд\"\n\n#: gb/gb_regions.py:33\nmsgid \"Norfolk\"\nmsgstr \"Норфалк\"\n\n#: gb/gb_regions.py:34\nmsgid \"North Yorkshire\"\nmsgstr \"Паўночны Ёркшыр\"\n\n#: gb/gb_regions.py:35\nmsgid \"Northamptonshire\"\nmsgstr \"Нортгэмптаншыр\"\n\n#: gb/gb_regions.py:36\nmsgid \"Northumberland\"\nmsgstr \"Нартумбэрлэнд\"\n\n#: gb/gb_regions.py:37\nmsgid \"Nottinghamshire\"\nmsgstr \"Нотынгемшыр\"\n\n#: gb/gb_regions.py:38\nmsgid \"Oxfordshire\"\nmsgstr \"Оксфардшыр\"\n\n#: gb/gb_regions.py:39\nmsgid \"Shropshire\"\nmsgstr \"Шропшыр\"\n\n#: gb/gb_regions.py:40\nmsgid \"Somerset\"\nmsgstr \"Самэрсэт\"\n\n#: gb/gb_regions.py:41\nmsgid \"South Yorkshire\"\nmsgstr \"Паўднёвы Ёркшыр\"\n\n#: gb/gb_regions.py:42\nmsgid \"Staffordshire\"\nmsgstr \"Стафардшыр\"\n\n#: gb/gb_regions.py:43\nmsgid \"Suffolk\"\nmsgstr \"Сафалк\"\n\n#: gb/gb_regions.py:44\nmsgid \"Surrey\"\nmsgstr \"Сурэй\"\n\n#: gb/gb_regions.py:45\nmsgid \"Tyne and Wear\"\nmsgstr \"Тайн і Вір\"\n\n#: gb/gb_regions.py:46\nmsgid \"Warwickshire\"\nmsgstr \"Ворыкшыр\"\n\n#: gb/gb_regions.py:47\nmsgid \"West Midlands\"\nmsgstr \"Заходні Мідлэнд\"\n\n#: gb/gb_regions.py:48\nmsgid \"West Sussex\"\nmsgstr \"Заходні Сасэкс\"\n\n#: gb/gb_regions.py:49\nmsgid \"West Yorkshire\"\nmsgstr \"Заходні Ёркшыр\"\n\n#: gb/gb_regions.py:50\nmsgid \"Wiltshire\"\nmsgstr \"Ўілтшыр\"\n\n#: gb/gb_regions.py:51\nmsgid \"Worcestershire\"\nmsgstr \"Вустэршыр\"\n\n#: gb/gb_regions.py:55\nmsgid \"County Antrim\"\nmsgstr \"Антрым (ґрафства)\"\n\n#: gb/gb_regions.py:56\nmsgid \"County Armagh\"\nmsgstr \"Арма (ґрафства)\"\n\n#: gb/gb_regions.py:57\nmsgid \"County Down\"\nmsgstr \"Даўн (ґрафства)\"\n\n#: gb/gb_regions.py:58\nmsgid \"County Fermanagh\"\nmsgstr \"Фэрмана (ґрафства)\"\n\n#: gb/gb_regions.py:59\nmsgid \"County Londonderry\"\nmsgstr \"Лёндандэры (ґрафства)\"\n\n#: gb/gb_regions.py:60\nmsgid \"County Tyrone\"\nmsgstr \"Тайрон (ґрафства)\"\n\n#: gb/gb_regions.py:64\nmsgid \"Clwyd\"\nmsgstr \"Клуід\"\n\n#: gb/gb_regions.py:65\nmsgid \"Dyfed\"\nmsgstr \"Дыфэд\"\n\n#: gb/gb_regions.py:66\nmsgid \"Gwent\"\nmsgstr \"Ґвэнт\"\n\n#: gb/gb_regions.py:67\nmsgid \"Gwynedd\"\nmsgstr \"Ґвінэд\"\n\n#: gb/gb_regions.py:68\nmsgid \"Mid Glamorgan\"\nmsgstr \"Сярэдні Ґламарґан\"\n\n#: gb/gb_regions.py:69\nmsgid \"Powys\"\nmsgstr \"Повіс\"\n\n#: gb/gb_regions.py:70\nmsgid \"South Glamorgan\"\nmsgstr \"Паўднёвы Ґламарґан\"\n\n#: gb/gb_regions.py:71\nmsgid \"West Glamorgan\"\nmsgstr \"Заходні Ґламарґан\"\n\n#: gb/gb_regions.py:75\nmsgid \"Borders\"\nmsgstr \"Межы\"\n\n#: gb/gb_regions.py:76\nmsgid \"Central Scotland\"\nmsgstr \"Цэнтральная Шатляндыя\"\n\n#: gb/gb_regions.py:77\nmsgid \"Dumfries and Galloway\"\nmsgstr \"Дамфрыс і Ґалаўэй\"\n\n#: gb/gb_regions.py:78\nmsgid \"Fife\"\nmsgstr \"Файф\"\n\n#: gb/gb_regions.py:79\nmsgid \"Grampian\"\nmsgstr \"Ґрампіян\"\n\n#: gb/gb_regions.py:80\nmsgid \"Highland\"\nmsgstr \"Хайлэндс\"\n\n#: gb/gb_regions.py:81\nmsgid \"Lothian\"\nmsgstr \"Латыян\"\n\n#: gb/gb_regions.py:82\nmsgid \"Orkney Islands\"\nmsgstr \"Аркнейскія выспы\"\n\n#: gb/gb_regions.py:83\nmsgid \"Shetland Islands\"\nmsgstr \"Шэтляндзкія выспы\"\n\n#: gb/gb_regions.py:84\nmsgid \"Strathclyde\"\nmsgstr \"Стратклайд\"\n\n#: gb/gb_regions.py:85\nmsgid \"Tayside\"\nmsgstr \"Тэйсайд\"\n\n#: gb/gb_regions.py:86\nmsgid \"Western Isles\"\nmsgstr \"Заходнія выспы\"\n\n#: gb/gb_regions.py:90\nmsgid \"England\"\nmsgstr \"Анґельшчына\"\n\n#: gb/gb_regions.py:91\nmsgid \"Northern Ireland\"\nmsgstr \"Паўночная Ірляндыя\"\n\n#: gb/gb_regions.py:92\nmsgid \"Scotland\"\nmsgstr \"Шатляндыя\"\n\n#: gb/gb_regions.py:93\nmsgid \"Wales\"\nmsgstr \"Ўэйлз\"\n\n#: hk/forms.py:37\n#, python-format\nmsgid \"Phone number should not start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:40\n#, python-format\nmsgid \"Phone number must be in one of the following formats: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:42\n#, python-format\nmsgid \"Phone number should start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hr/forms.py:76\nmsgid \"Enter a valid 13 digit JMBG\"\nmsgstr \"Пазначце чынны JMBG з 13 лічбаў\"\n\n#: hr/forms.py:77\nmsgid \"Error in date segment\"\nmsgstr \"Памылка ў частцы зьвестак\"\n\n#: hr/forms.py:123\nmsgid \"Enter a valid 11 digit OIB\"\nmsgstr \"Пазначце чынны OIB з 11 лічбаў\"\n\n#: hr/forms.py:152 id/forms.py:112\nmsgid \"Enter a valid vehicle license plate number\"\nmsgstr \"Пазначце чынны нумар пасьведчаньня кіроўцы\"\n\n#: hr/forms.py:153\nmsgid \"Enter a valid location code\"\nmsgstr \"Пазначце чынны код мясцовасьці\"\n\n#: hr/forms.py:154\nmsgid \"Number part cannot be zero\"\nmsgstr \"Лічбавая частка ня можа быць нулём\"\n\n#: hr/forms.py:190\nmsgid \"Enter a valid 5 digit postal code\"\nmsgstr \"Пазначце чынны індэкс зь пяці лічбаў\"\n\n#: hr/forms.py:218 id/forms.py:72 nl/forms.py:56\nmsgid \"Enter a valid phone number\"\nmsgstr \"Пазначце чынны тэлефонны нумар\"\n\n#: hr/forms.py:219\nmsgid \"Enter a valid area or mobile network code\"\nmsgstr \"Пазначце чынны код мясцовасьці або мабільнае сеткі\"\n\n#: hr/forms.py:220\nmsgid \"The phone nubmer is too long\"\nmsgstr \"Задаўгі тэлефонны нумар\"\n\n#: hr/forms.py:258\nmsgid \"Enter a valid 19 digit JMBAG starting with 601983\"\nmsgstr \"Пазначце чынны JMBAG, які пачынаецца з «601983» і мае 19 лічбаў\"\n\n#: hr/forms.py:259\nmsgid \"Card issue number cannot be zero\"\nmsgstr \"Нумар выпуску карткі ня можа быць нулём\"\n\n#: hr/hr_choices.py:14\nmsgid \"Grad Zagreb\"\nmsgstr \"Заґрэб\"\n\n#: hr/hr_choices.py:15\nmsgid \"Bjelovarsko-bilogorska županija\"\nmsgstr \"Белаварска-Белагорская жупанія\"\n\n#: hr/hr_choices.py:16\nmsgid \"Brodsko-posavska županija\"\nmsgstr \"Бродска-Пасаўская жупанія\"\n\n#: hr/hr_choices.py:17\nmsgid \"Dubrovačko-neretvanska županija\"\nmsgstr \"Дуброўніцка-Нератванская жупанія\"\n\n#: hr/hr_choices.py:18\nmsgid \"Istarska županija\"\nmsgstr \"Істрыйская жупанія\"\n\n#: hr/hr_choices.py:19\nmsgid \"Karlovačka županija\"\nmsgstr \"Карлавацкая жупанія\"\n\n#: hr/hr_choices.py:20\nmsgid \"Koprivničko-križevačka županija\"\nmsgstr \"Капрыўніцка-Крыжавацкая жупанія\"\n\n#: hr/hr_choices.py:21\nmsgid \"Krapinsko-zagorska županija\"\nmsgstr \"Крапінска-Загорская жупанія\"\n\n#: hr/hr_choices.py:22\nmsgid \"Ličko-senjska županija\"\nmsgstr \"Ліцка-Сеньская жупанія\"\n\n#: hr/hr_choices.py:23\nmsgid \"Međimurska županija\"\nmsgstr \"Меджумурская жупанія\"\n\n#: hr/hr_choices.py:24\nmsgid \"Osječko-baranjska županija\"\nmsgstr \"Асіецка-Бараньская жупанія\"\n\n#: hr/hr_choices.py:25\nmsgid \"Požeško-slavonska županija\"\nmsgstr \"Пажэска-Славонская жупанія\"\n\n#: hr/hr_choices.py:26\nmsgid \"Primorsko-goranska županija\"\nmsgstr \"Прыморска-Ґаранская жупанія\"\n\n#: hr/hr_choices.py:27\nmsgid \"Sisačko-moslavačka županija\"\nmsgstr \"Сісацка-Маславінская жупанія\"\n\n#: hr/hr_choices.py:28\nmsgid \"Splitsko-dalmatinska županija\"\nmsgstr \"Спліцка-Далматынская жупанія\"\n\n#: hr/hr_choices.py:29\nmsgid \"Šibensko-kninska županija\"\nmsgstr \"Шыбенска-Кнінская жупанія\"\n\n#: hr/hr_choices.py:30\nmsgid \"Varaždinska županija\"\nmsgstr \"Вараждынская жупанія\"\n\n#: hr/hr_choices.py:31\nmsgid \"Virovitičko-podravska županija\"\nmsgstr \"Віравітыцка-Падраўская жупанія\"\n\n#: hr/hr_choices.py:32\nmsgid \"Vukovarsko-srijemska županija\"\nmsgstr \"Вукаварска-Срэмская жупанія\"\n\n#: hr/hr_choices.py:33\nmsgid \"Zadarska županija\"\nmsgstr \"Задарская жупанія\"\n\n#: hr/hr_choices.py:34\nmsgid \"Zagrebačka županija\"\nmsgstr \"Заґрэбская жупанія\"\n\n#: id/forms.py:31\nmsgid \"Enter a valid post code\"\nmsgstr \"Пазначце чынны індэкс\"\n\n#: id/forms.py:176\nmsgid \"Enter a valid NIK/KTP number\"\nmsgstr \"Пазначце чынны нумар NIK або KTP\"\n\n#: id/id_choices.py:15\nmsgid \"Aceh\"\nmsgstr \"Ачэх\"\n\n#: id/id_choices.py:16 id/id_choices.py:79\nmsgid \"Bali\"\nmsgstr \"Балі (выспа)\"\n\n#: id/id_choices.py:17 id/id_choices.py:51\nmsgid \"Banten\"\nmsgstr \"Бантэн\"\n\n#: id/id_choices.py:18 id/id_choices.py:60\nmsgid \"Bengkulu\"\nmsgstr \"Бэнкулу\"\n\n#: id/id_choices.py:19 id/id_choices.py:53\nmsgid \"Yogyakarta\"\nmsgstr \"Джак’якарта\"\n\n#: id/id_choices.py:20 id/id_choices.py:57\nmsgid \"Jakarta\"\nmsgstr \"Джакарта\"\n\n#: id/id_choices.py:21 id/id_choices.py:81\nmsgid \"Gorontalo\"\nmsgstr \"Ґарантала\"\n\n#: id/id_choices.py:22 id/id_choices.py:63\nmsgid \"Jambi\"\nmsgstr \"Джамбі\"\n\n#: id/id_choices.py:23\nmsgid \"Jawa Barat\"\nmsgstr \"Заходняя Ява\"\n\n#: id/id_choices.py:24\nmsgid \"Jawa Tengah\"\nmsgstr \"Цэнтральная Ява\"\n\n#: id/id_choices.py:25\nmsgid \"Jawa Timur\"\nmsgstr \"Усходняя Ява\"\n\n#: id/id_choices.py:26 id/id_choices.py:94\nmsgid \"Kalimantan Barat\"\nmsgstr \"Заходні Калімантан\"\n\n#: id/id_choices.py:27 id/id_choices.py:72\nmsgid \"Kalimantan Selatan\"\nmsgstr \"Паўднёвы Калімантан\"\n\n#: id/id_choices.py:28 id/id_choices.py:95\nmsgid \"Kalimantan Tengah\"\nmsgstr \"Цэнтральны Калімантан\"\n\n#: id/id_choices.py:29 id/id_choices.py:96\nmsgid \"Kalimantan Timur\"\nmsgstr \"Усходні Калімантан\"\n\n#: id/id_choices.py:30\nmsgid \"Kepulauan Bangka-Belitung\"\nmsgstr \"Банка-Бэлінтунґ\"\n\n#: id/id_choices.py:31 id/id_choices.py:68\nmsgid \"Kepulauan Riau\"\nmsgstr \"Выспы Рыаў\"\n\n#: id/id_choices.py:32 id/id_choices.py:61\nmsgid \"Lampung\"\nmsgstr \"Лампунґ\"\n\n#: id/id_choices.py:33 id/id_choices.py:76\nmsgid \"Maluku\"\nmsgstr \"Малуку\"\n\n#: id/id_choices.py:34 id/id_choices.py:77\nmsgid \"Maluku Utara\"\nmsgstr \"Паўночнае Малуку\"\n\n#: id/id_choices.py:35\nmsgid \"Nusa Tenggara Barat\"\nmsgstr \"Заходнія Малыя Зундзкія выспы\"\n\n#: id/id_choices.py:36\nmsgid \"Nusa Tenggara Timur\"\nmsgstr \"Усходнія Малыя Зундзкія выспы\"\n\n#: id/id_choices.py:37\nmsgid \"Papua\"\nmsgstr \"Папуа\"\n\n#: id/id_choices.py:38\nmsgid \"Papua Barat\"\nmsgstr \"Заходняе Папуа\"\n\n#: id/id_choices.py:39 id/id_choices.py:66\nmsgid \"Riau\"\nmsgstr \"Рыаў\"\n\n#: id/id_choices.py:40 id/id_choices.py:74\nmsgid \"Sulawesi Barat\"\nmsgstr \"Заходні Сулавэсі\"\n\n#: id/id_choices.py:41 id/id_choices.py:75\nmsgid \"Sulawesi Selatan\"\nmsgstr \"Паўднёвы Сулавэсі\"\n\n#: id/id_choices.py:42 id/id_choices.py:82\nmsgid \"Sulawesi Tengah\"\nmsgstr \"Цэнтральны Сулавэсі\"\n\n#: id/id_choices.py:43 id/id_choices.py:85\nmsgid \"Sulawesi Tenggara\"\nmsgstr \"Паўднёва-ўсходні Сулавэсі\"\n\n#: id/id_choices.py:44\nmsgid \"Sulawesi Utara\"\nmsgstr \"Паўночны Сулавэсі\"\n\n#: id/id_choices.py:45 id/id_choices.py:58\nmsgid \"Sumatera Barat\"\nmsgstr \"Заходняя Суматра\"\n\n#: id/id_choices.py:46 id/id_choices.py:62\nmsgid \"Sumatera Selatan\"\nmsgstr \"Паўднёвая Суматра\"\n\n#: id/id_choices.py:47 id/id_choices.py:64\nmsgid \"Sumatera Utara\"\nmsgstr \"Паўночная Суматра\"\n\n#: id/id_choices.py:52\nmsgid \"Magelang\"\nmsgstr \"Маґэланґ\"\n\n#: id/id_choices.py:54\nmsgid \"Surakarta - Solo\"\nmsgstr \"Суракарта\"\n\n#: id/id_choices.py:55\nmsgid \"Madiun\"\nmsgstr \"Мадыюн\"\n\n#: id/id_choices.py:56\nmsgid \"Kediri\"\nmsgstr \"Кедыры\"\n\n#: id/id_choices.py:59\nmsgid \"Tapanuli\"\nmsgstr \"Танапулі\"\n\n#: id/id_choices.py:65\nmsgid \"Nanggroe Aceh Darussalam\"\nmsgstr \"Ачэх\"\n\n#: id/id_choices.py:67\nmsgid \"Kepulauan Bangka Belitung\"\nmsgstr \"Банка-Бэлінтунґ\"\n\n#: id/id_choices.py:69\nmsgid \"Corps Consulate\"\nmsgstr \"Консульскі корпус\"\n\n#: id/id_choices.py:70\nmsgid \"Corps Diplomatic\"\nmsgstr \"Дыпляматычны корпус\"\n\n#: id/id_choices.py:71\nmsgid \"Bandung\"\nmsgstr \"Бандунґ\"\n\n#: id/id_choices.py:73\nmsgid \"Sulawesi Utara Daratan\"\nmsgstr \"Паўночны Сулавэсі\"\n\n#: id/id_choices.py:78\nmsgid \"NTT - Timor\"\nmsgstr \"NTT — Тымор\"\n\n#: id/id_choices.py:80\nmsgid \"Sulawesi Utara Kepulauan\"\nmsgstr \"Паўночны Сулавэсі\"\n\n#: id/id_choices.py:83\nmsgid \"NTB - Lombok\"\nmsgstr \"NTB — Ламбок\"\n\n#: id/id_choices.py:84\nmsgid \"Papua dan Papua Barat\"\nmsgstr \"Папуа ды Заходняе Папуа\"\n\n#: id/id_choices.py:86\nmsgid \"Cirebon\"\nmsgstr \"Чырабон\"\n\n#: id/id_choices.py:87\nmsgid \"NTB - Sumbawa\"\nmsgstr \"NTB — Сумбава\"\n\n#: id/id_choices.py:88\nmsgid \"NTT - Flores\"\nmsgstr \"NTT — Флорэс\"\n\n#: id/id_choices.py:89\nmsgid \"NTT - Sumba\"\nmsgstr \"NTT — Сумба\"\n\n#: id/id_choices.py:90\nmsgid \"Bogor\"\nmsgstr \"Баґор\"\n\n#: id/id_choices.py:91\nmsgid \"Pekalongan\"\nmsgstr \"Пэкалонґан\"\n\n#: id/id_choices.py:92\nmsgid \"Semarang\"\nmsgstr \"Сэмаранґ\"\n\n#: id/id_choices.py:93\nmsgid \"Pati\"\nmsgstr \"Паты\"\n\n#: id/id_choices.py:97\nmsgid \"Surabaya\"\nmsgstr \"Сурабая\"\n\n#: id/id_choices.py:98\nmsgid \"Madura\"\nmsgstr \"Мадура\"\n\n#: id/id_choices.py:99\nmsgid \"Malang\"\nmsgstr \"Маланґ\"\n\n#: id/id_choices.py:100\nmsgid \"Jember\"\nmsgstr \"Джэмбэр\"\n\n#: id/id_choices.py:101\nmsgid \"Banyumas\"\nmsgstr \"Банджумас\"\n\n#: id/id_choices.py:102\nmsgid \"Federal Government\"\nmsgstr \"Фэдэральны ўрад\"\n\n#: id/id_choices.py:103\nmsgid \"Bojonegoro\"\nmsgstr \"Боджанэґора\"\n\n#: id/id_choices.py:104\nmsgid \"Purwakarta\"\nmsgstr \"Пурвакарта\"\n\n#: id/id_choices.py:105\nmsgid \"Sidoarjo\"\nmsgstr \"Сідаарджа\"\n\n#: id/id_choices.py:106\nmsgid \"Garut\"\nmsgstr \"Ґарут\"\n\n#: ie/ie_counties.py:8\nmsgid \"Antrim\"\nmsgstr \"Антрым\"\n\n#: ie/ie_counties.py:9\nmsgid \"Armagh\"\nmsgstr \"Арма\"\n\n#: ie/ie_counties.py:10\nmsgid \"Carlow\"\nmsgstr \"Карлоў\"\n\n#: ie/ie_counties.py:11\nmsgid \"Cavan\"\nmsgstr \"Каван\"\n\n#: ie/ie_counties.py:12\nmsgid \"Clare\"\nmsgstr \"Клэр\"\n\n#: ie/ie_counties.py:13\nmsgid \"Cork\"\nmsgstr \"Корк\"\n\n#: ie/ie_counties.py:14\nmsgid \"Derry\"\nmsgstr \"Дэры\"\n\n#: ie/ie_counties.py:15\nmsgid \"Donegal\"\nmsgstr \"Даніґол\"\n\n#: ie/ie_counties.py:16\nmsgid \"Down\"\nmsgstr \"Даўн\"\n\n#: ie/ie_counties.py:17\nmsgid \"Dublin\"\nmsgstr \"Дублін\"\n\n#: ie/ie_counties.py:18\nmsgid \"Fermanagh\"\nmsgstr \"Фэрмана\"\n\n#: ie/ie_counties.py:19\nmsgid \"Galway\"\nmsgstr \"Ґалўэй\"\n\n#: ie/ie_counties.py:20\nmsgid \"Kerry\"\nmsgstr \"Кэры\"\n\n#: ie/ie_counties.py:21\nmsgid \"Kildare\"\nmsgstr \"Кілдэр\"\n\n#: ie/ie_counties.py:22\nmsgid \"Kilkenny\"\nmsgstr \"Кілкэні\"\n\n#: ie/ie_counties.py:23\nmsgid \"Laois\"\nmsgstr \"Ліш\"\n\n#: ie/ie_counties.py:24\nmsgid \"Leitrim\"\nmsgstr \"Літрым\"\n\n#: ie/ie_counties.py:25\nmsgid \"Limerick\"\nmsgstr \"Лімэрык\"\n\n#: ie/ie_counties.py:26\nmsgid \"Longford\"\nmsgstr \"Лонґфорд\"\n\n#: ie/ie_counties.py:27\nmsgid \"Louth\"\nmsgstr \"Лаўт\"\n\n#: ie/ie_counties.py:28\nmsgid \"Mayo\"\nmsgstr \"Мэё\"\n\n#: ie/ie_counties.py:29\nmsgid \"Meath\"\nmsgstr \"Міт\"\n\n#: ie/ie_counties.py:30\nmsgid \"Monaghan\"\nmsgstr \"Монаган\"\n\n#: ie/ie_counties.py:31\nmsgid \"Offaly\"\nmsgstr \"Офалі\"\n\n#: ie/ie_counties.py:32\nmsgid \"Roscommon\"\nmsgstr \"Раскоман\"\n\n#: ie/ie_counties.py:33\nmsgid \"Sligo\"\nmsgstr \"Слайґа\"\n\n#: ie/ie_counties.py:34\nmsgid \"Tipperary\"\nmsgstr \"Тыпэрэры\"\n\n#: ie/ie_counties.py:35\nmsgid \"Tyrone\"\nmsgstr \"Тырон\"\n\n#: ie/ie_counties.py:36\nmsgid \"Waterford\"\nmsgstr \"Ўотэрфорд\"\n\n#: ie/ie_counties.py:37\nmsgid \"Westmeath\"\nmsgstr \"Ўэстміт\"\n\n#: ie/ie_counties.py:38\nmsgid \"Wexford\"\nmsgstr \"Ўэксфард\"\n\n#: ie/ie_counties.py:39\nmsgid \"Wicklow\"\nmsgstr \"Ўіклаў\"\n\n#: il/forms.py:32\nmsgid \"Enter a postal code in the format XXXXX\"\nmsgstr \"Пазначце індэкс у выглядзе «XXXXX».\"\n\n#: il/forms.py:51\nmsgid \"Enter a valid ID number.\"\nmsgstr \"Пазначце чынны атаясьняльны нумар (ID).\"\n\n#: in_/forms.py:41\nmsgid \"Enter a zip code in the format XXXXXX or XXX XXX.\"\nmsgstr \"Пазначце індэкс у выглядзе «XXXXXX» або «XXX XXX».\"\n\n#: in_/forms.py:64\nmsgid \"Enter an Indian state or territory.\"\nmsgstr \"Пазначце індыйскі штат або раён.\"\n\n#: in_/forms.py:103\nmsgid \"Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.\"\nmsgstr \"\"\n\"Тэлефонныя нумары трэба пазначаць у выглядзе «02X-8X», або «03X-7X» ці \"\n\"«04X-6X».\"\n\n#: is_/forms.py:22\nmsgid \"\"\n\"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.\"\nmsgstr \"Пазначце чынны ісьляндзкі атаясьняльны нумар. Выгляд: «XXXXXX-XXXX».\"\n\n#: is_/forms.py:23\nmsgid \"The Icelandic identification number is not valid.\"\nmsgstr \"Хібны ісьляндзкі атаясьняльны нумар.\"\n\n#: it/forms.py:21\nmsgid \"Enter a valid zip code.\"\nmsgstr \"Пазначце чынны індэкс.\"\n\n#: it/forms.py:48\nmsgid \"Enter a valid Social Security number.\"\nmsgstr \"Пазначце чынны нумар сацыяльнае страхоўкі.\"\n\n#: it/forms.py:73\nmsgid \"Enter a valid VAT number.\"\nmsgstr \"Пазначце чынны нумар падаткаплатніка (VAT).\"\n\n#: jp/forms.py:19\nmsgid \"Enter a postal code in the format XXXXXXX or XXX-XXXX.\"\nmsgstr \"Пазначце індэкс у выглядзе «XXXXXXX» або «XXX-XXXX».\"\n\n#: jp/jp_prefectures.py:4\nmsgid \"Hokkaido\"\nmsgstr \"Хакайда\"\n\n#: jp/jp_prefectures.py:5\nmsgid \"Aomori\"\nmsgstr \"Ааморы\"\n\n#: jp/jp_prefectures.py:6\nmsgid \"Iwate\"\nmsgstr \"Іватэ\"\n\n#: jp/jp_prefectures.py:7\nmsgid \"Miyagi\"\nmsgstr \"Міяґі\"\n\n#: jp/jp_prefectures.py:8\nmsgid \"Akita\"\nmsgstr \"Акіта\"\n\n#: jp/jp_prefectures.py:9\nmsgid \"Yamagata\"\nmsgstr \"Ямаґата\"\n\n#: jp/jp_prefectures.py:10\nmsgid \"Fukushima\"\nmsgstr \"Фукусіма\"\n\n#: jp/jp_prefectures.py:11\nmsgid \"Ibaraki\"\nmsgstr \"Ібаракі\"\n\n#: jp/jp_prefectures.py:12\nmsgid \"Tochigi\"\nmsgstr \"Татыґі\"\n\n#: jp/jp_prefectures.py:13\nmsgid \"Gunma\"\nmsgstr \"Ґунма\"\n\n#: jp/jp_prefectures.py:14\nmsgid \"Saitama\"\nmsgstr \"Сайтама\"\n\n#: jp/jp_prefectures.py:15\nmsgid \"Chiba\"\nmsgstr \"Тыба\"\n\n#: jp/jp_prefectures.py:16\nmsgid \"Tokyo\"\nmsgstr \"Токіё\"\n\n#: jp/jp_prefectures.py:17\nmsgid \"Kanagawa\"\nmsgstr \"Канаґава\"\n\n#: jp/jp_prefectures.py:18\nmsgid \"Yamanashi\"\nmsgstr \"Яманасі\"\n\n#: jp/jp_prefectures.py:19\nmsgid \"Nagano\"\nmsgstr \"Наґана\"\n\n#: jp/jp_prefectures.py:20\nmsgid \"Niigata\"\nmsgstr \"Нііґата\"\n\n#: jp/jp_prefectures.py:21\nmsgid \"Toyama\"\nmsgstr \"Таяма\"\n\n#: jp/jp_prefectures.py:22\nmsgid \"Ishikawa\"\nmsgstr \"Ісікава\"\n\n#: jp/jp_prefectures.py:23\nmsgid \"Fukui\"\nmsgstr \"Фукуі\"\n\n#: jp/jp_prefectures.py:24\nmsgid \"Gifu\"\nmsgstr \"Ґіфу\"\n\n#: jp/jp_prefectures.py:25\nmsgid \"Shizuoka\"\nmsgstr \"Сідзуока\"\n\n#: jp/jp_prefectures.py:26\nmsgid \"Aichi\"\nmsgstr \"Айчы\"\n\n#: jp/jp_prefectures.py:27\nmsgid \"Mie\"\nmsgstr \"Міэ\"\n\n#: jp/jp_prefectures.py:28\nmsgid \"Shiga\"\nmsgstr \"Сіґа\"\n\n#: jp/jp_prefectures.py:29\nmsgid \"Kyoto\"\nmsgstr \"Кіота\"\n\n#: jp/jp_prefectures.py:30\nmsgid \"Osaka\"\nmsgstr \"Асака\"\n\n#: jp/jp_prefectures.py:31\nmsgid \"Hyogo\"\nmsgstr \"Гёґа\"\n\n#: jp/jp_prefectures.py:32\nmsgid \"Nara\"\nmsgstr \"Нара\"\n\n#: jp/jp_prefectures.py:33\nmsgid \"Wakayama\"\nmsgstr \"Вакаяма\"\n\n#: jp/jp_prefectures.py:34\nmsgid \"Tottori\"\nmsgstr \"Таторы\"\n\n#: jp/jp_prefectures.py:35\nmsgid \"Shimane\"\nmsgstr \"Сіманэ\"\n\n#: jp/jp_prefectures.py:36\nmsgid \"Okayama\"\nmsgstr \"Акаяма\"\n\n#: jp/jp_prefectures.py:37\nmsgid \"Hiroshima\"\nmsgstr \"Хірасіма\"\n\n#: jp/jp_prefectures.py:38\nmsgid \"Yamaguchi\"\nmsgstr \"Ямаґуты\"\n\n#: jp/jp_prefectures.py:39\nmsgid \"Tokushima\"\nmsgstr \"Такусіма\"\n\n#: jp/jp_prefectures.py:40\nmsgid \"Kagawa\"\nmsgstr \"Каґава\"\n\n#: jp/jp_prefectures.py:41\nmsgid \"Ehime\"\nmsgstr \"Эгімэ\"\n\n#: jp/jp_prefectures.py:42\nmsgid \"Kochi\"\nmsgstr \"Коты\"\n\n#: jp/jp_prefectures.py:43\nmsgid \"Fukuoka\"\nmsgstr \"Фукуока\"\n\n#: jp/jp_prefectures.py:44\nmsgid \"Saga\"\nmsgstr \"Саґа\"\n\n#: jp/jp_prefectures.py:45\nmsgid \"Nagasaki\"\nmsgstr \"Наґасакі\"\n\n#: jp/jp_prefectures.py:46\nmsgid \"Kumamoto\"\nmsgstr \"Кумамота\"\n\n#: jp/jp_prefectures.py:47\nmsgid \"Oita\"\nmsgstr \"Оіта\"\n\n#: jp/jp_prefectures.py:48\nmsgid \"Miyazaki\"\nmsgstr \"Міядзакі\"\n\n#: jp/jp_prefectures.py:49\nmsgid \"Kagoshima\"\nmsgstr \"Каґасіма\"\n\n#: jp/jp_prefectures.py:50\nmsgid \"Okinawa\"\nmsgstr \"Акінава\"\n\n#: kw/forms.py:27\nmsgid \"Enter a valid Kuwaiti Civil ID number\"\nmsgstr \"Пазначце чынны нумар кувэйцкага пасьведчаньня асобы\"\n\n#: mk/forms.py:18\nmsgid \"\"\n\"Identity card numbers must contain either 4 to 7 digits or an uppercase \"\n\"letter and 7 digits.\"\nmsgstr \"\"\n\"Нумар атаясьняльнае карткі мусіць зьмяшчаць або ад 4 да 7 лічбаў, або \"\n\"вялікую літару і 7 лічбаў.\"\n\n#: mk/forms.py:57 si/forms.py:24\nmsgid \"This field should contain exactly 13 digits.\"\nmsgstr \"Поле мусіць зьмяшчаць толькі 13 лічбаў.\"\n\n#: mk/forms.py:58\nmsgid \"The first 7 digits of the UMCN must represent a valid past date.\"\nmsgstr \"Першыя 7 лічбаў UMCN пазначаюць дату ў мінулым.\"\n\n#: mk/forms.py:59\nmsgid \"The UMCN is not valid.\"\nmsgstr \"Хібны UMCN.\"\n\n#: mk/mk_choices.py:10\nmsgid \"Aerodrom\"\nmsgstr \"Аэрадром\"\n\n#: mk/mk_choices.py:11\nmsgid \"Aračinovo\"\nmsgstr \"Арачынова\"\n\n#: mk/mk_choices.py:12\nmsgid \"Berovo\"\nmsgstr \"Бэрова\"\n\n#: mk/mk_choices.py:13\nmsgid \"Bitola\"\nmsgstr \"Бітола\"\n\n#: mk/mk_choices.py:14\nmsgid \"Bogdanci\"\nmsgstr \"Багданцы\"\n\n#: mk/mk_choices.py:15\nmsgid \"Bogovinje\"\nmsgstr \"Багавінье\"\n\n#: mk/mk_choices.py:16\nmsgid \"Bosilovo\"\nmsgstr \"Басілова\"\n\n#: mk/mk_choices.py:17\nmsgid \"Brvenica\"\nmsgstr \"Брвеніца\"\n\n#: mk/mk_choices.py:18\nmsgid \"Butel\"\nmsgstr \"Бутэл\"\n\n#: mk/mk_choices.py:19\nmsgid \"Valandovo\"\nmsgstr \"Валандова\"\n\n#: mk/mk_choices.py:20\nmsgid \"Vasilevo\"\nmsgstr \"Васілева\"\n\n#: mk/mk_choices.py:21\nmsgid \"Vevčani\"\nmsgstr \"Вевчані\"\n\n#: mk/mk_choices.py:22\nmsgid \"Veles\"\nmsgstr \"Велес\"\n\n#: mk/mk_choices.py:23\nmsgid \"Vinica\"\nmsgstr \"Вініца\"\n\n#: mk/mk_choices.py:24\nmsgid \"Vraneštica\"\nmsgstr \"Вранештыца\"\n\n#: mk/mk_choices.py:25\nmsgid \"Vrapčište\"\nmsgstr \"Врапчыштэ\"\n\n#: mk/mk_choices.py:26\nmsgid \"Gazi Baba\"\nmsgstr \"Газі-Баба\"\n\n#: mk/mk_choices.py:27\nmsgid \"Gevgelija\"\nmsgstr \"Гевгелія\"\n\n#: mk/mk_choices.py:28\nmsgid \"Gostivar\"\nmsgstr \"Гасьцівар\"\n\n#: mk/mk_choices.py:29\nmsgid \"Gradsko\"\nmsgstr \"Градска\"\n\n#: mk/mk_choices.py:30\nmsgid \"Debar\"\nmsgstr \"Дэбар\"\n\n#: mk/mk_choices.py:31\nmsgid \"Debarca\"\nmsgstr \"Дэбарца\"\n\n#: mk/mk_choices.py:32\nmsgid \"Delčevo\"\nmsgstr \"Дэлчэва\"\n\n#: mk/mk_choices.py:33\nmsgid \"Demir Kapija\"\nmsgstr \"Дэмір-Капія\"\n\n#: mk/mk_choices.py:34\nmsgid \"Demir Hisar\"\nmsgstr \"Дэмір-Хісар\"\n\n#: mk/mk_choices.py:35\nmsgid \"Dolneni\"\nmsgstr \"Долнені\"\n\n#: mk/mk_choices.py:36\nmsgid \"Drugovo\"\nmsgstr \"Другава\"\n\n#: mk/mk_choices.py:37\nmsgid \"Gjorče Petrov\"\nmsgstr \"Гёрчэ-Петраў\"\n\n#: mk/mk_choices.py:38\nmsgid \"Želino\"\nmsgstr \"Жэліна\"\n\n#: mk/mk_choices.py:39\nmsgid \"Zajas\"\nmsgstr \"Заяс\"\n\n#: mk/mk_choices.py:40\nmsgid \"Zelenikovo\"\nmsgstr \"Зяленікава\"\n\n#: mk/mk_choices.py:41\nmsgid \"Zrnovci\"\nmsgstr \"Зрновцы\"\n\n#: mk/mk_choices.py:42\nmsgid \"Ilinden\"\nmsgstr \"Іліндэн\"\n\n#: mk/mk_choices.py:43\nmsgid \"Jegunovce\"\nmsgstr \"Егуновцэ\"\n\n#: mk/mk_choices.py:44\nmsgid \"Kavadarci\"\nmsgstr \"Кавадарцы\"\n\n#: mk/mk_choices.py:45\nmsgid \"Karbinci\"\nmsgstr \"Карбінцы\"\n\n#: mk/mk_choices.py:46\nmsgid \"Karpoš\"\nmsgstr \"Карпош\"\n\n#: mk/mk_choices.py:47\nmsgid \"Kisela Voda\"\nmsgstr \"Кісела-Вода\"\n\n#: mk/mk_choices.py:48\nmsgid \"Kičevo\"\nmsgstr \"Кічэва\"\n\n#: mk/mk_choices.py:49\nmsgid \"Konče\"\nmsgstr \"Кончэ\"\n\n#: mk/mk_choices.py:50\nmsgid \"Koćani\"\nmsgstr \"Кочані\"\n\n#: mk/mk_choices.py:51\nmsgid \"Kratovo\"\nmsgstr \"Кратава\"\n\n#: mk/mk_choices.py:52\nmsgid \"Kriva Palanka\"\nmsgstr \"Крыва-Паланка\"\n\n#: mk/mk_choices.py:53\nmsgid \"Krivogaštani\"\nmsgstr \"Крывагаштані\"\n\n#: mk/mk_choices.py:54\nmsgid \"Kruševo\"\nmsgstr \"Крушава\"\n\n#: mk/mk_choices.py:55\nmsgid \"Kumanovo\"\nmsgstr \"Куманава\"\n\n#: mk/mk_choices.py:56\nmsgid \"Lipkovo\"\nmsgstr \"Ліпкава\"\n\n#: mk/mk_choices.py:57\nmsgid \"Lozovo\"\nmsgstr \"Лозава\"\n\n#: mk/mk_choices.py:58\nmsgid \"Mavrovo i Rostuša\"\nmsgstr \"Маўрова і Растуша\"\n\n#: mk/mk_choices.py:59\nmsgid \"Makedonska Kamenica\"\nmsgstr \"Македонска-Камэніца\"\n\n#: mk/mk_choices.py:60\nmsgid \"Makedonski Brod\"\nmsgstr \"Макэдонскі-Брод\"\n\n#: mk/mk_choices.py:61\nmsgid \"Mogila\"\nmsgstr \"Магіла\"\n\n#: mk/mk_choices.py:62\nmsgid \"Negotino\"\nmsgstr \"Неготына\"\n\n#: mk/mk_choices.py:63\nmsgid \"Novaci\"\nmsgstr \"Новацы\"\n\n#: mk/mk_choices.py:64\nmsgid \"Novo Selo\"\nmsgstr \"Нова-Села\"\n\n#: mk/mk_choices.py:65\nmsgid \"Oslomej\"\nmsgstr \"Асламэй\"\n\n#: mk/mk_choices.py:66\nmsgid \"Ohrid\"\nmsgstr \"Охрыд\"\n\n#: mk/mk_choices.py:67\nmsgid \"Petrovec\"\nmsgstr \"Петровец\"\n\n#: mk/mk_choices.py:68\nmsgid \"Pehčevo\"\nmsgstr \"Пехчава\"\n\n#: mk/mk_choices.py:69\nmsgid \"Plasnica\"\nmsgstr \"Пласьніца\"\n\n#: mk/mk_choices.py:70\nmsgid \"Prilep\"\nmsgstr \"Прылеп\"\n\n#: mk/mk_choices.py:71\nmsgid \"Probištip\"\nmsgstr \"Прабіштып\"\n\n#: mk/mk_choices.py:72\nmsgid \"Radoviš\"\nmsgstr \"Радовіш\"\n\n#: mk/mk_choices.py:73\nmsgid \"Rankovce\"\nmsgstr \"Ранкоўцэ\"\n\n#: mk/mk_choices.py:74\nmsgid \"Resen\"\nmsgstr \"Рэсен\"\n\n#: mk/mk_choices.py:75\nmsgid \"Rosoman\"\nmsgstr \"Расаман\"\n\n#: mk/mk_choices.py:76\nmsgid \"Saraj\"\nmsgstr \"Сарай\"\n\n#: mk/mk_choices.py:77\nmsgid \"Sveti Nikole\"\nmsgstr \"Сьветы-Ніколе\"\n\n#: mk/mk_choices.py:78\nmsgid \"Sopište\"\nmsgstr \"Сопіштэ\"\n\n#: mk/mk_choices.py:79\nmsgid \"Star Dojran\"\nmsgstr \"Стар-Дойран\"\n\n#: mk/mk_choices.py:80\nmsgid \"Staro Nagoričane\"\nmsgstr \"Стара-Нагарычане\"\n\n#: mk/mk_choices.py:81\nmsgid \"Struga\"\nmsgstr \"Струга\"\n\n#: mk/mk_choices.py:82\nmsgid \"Strumica\"\nmsgstr \"Струміца\"\n\n#: mk/mk_choices.py:83\nmsgid \"Studeničani\"\nmsgstr \"Студэнічані\"\n\n#: mk/mk_choices.py:84\nmsgid \"Tearce\"\nmsgstr \"Тэарце\"\n\n#: mk/mk_choices.py:85\nmsgid \"Tetovo\"\nmsgstr \"Тэтава\"\n\n#: mk/mk_choices.py:86\nmsgid \"Centar\"\nmsgstr \"Цэнтар\"\n\n#: mk/mk_choices.py:87\nmsgid \"Centar-Župa\"\nmsgstr \"Цэнтар-Жупа\"\n\n#: mk/mk_choices.py:88\nmsgid \"Čair\"\nmsgstr \"Чаір\"\n\n#: mk/mk_choices.py:89\nmsgid \"Čaška\"\nmsgstr \"Чашка\"\n\n#: mk/mk_choices.py:90\nmsgid \"Češinovo-Obleševo\"\nmsgstr \"Чэшынава-Облешэва\"\n\n#: mk/mk_choices.py:91\nmsgid \"Čučer-Sandevo\"\nmsgstr \"Чучэр-Сандэва\"\n\n#: mk/mk_choices.py:92\nmsgid \"Štip\"\nmsgstr \"Штып\"\n\n#: mk/mk_choices.py:93\nmsgid \"Šuto Orizari\"\nmsgstr \"Шута-Арызары\"\n\n#: mk/models.py:11\nmsgid \"Macedonian identity card number\"\nmsgstr \"Нумар атаясьняльнае карткі Македоніі\"\n\n#: mk/models.py:25\nmsgid \"A Macedonian municipality (2 character code)\"\nmsgstr \"Македонская акруга (дзьве літары)\"\n\n#: mk/models.py:35\nmsgid \"Unique master citizen number (13 digits)\"\nmsgstr \"Асабісты нумар грамадзяніна (13 лічбаў)\"\n\n#: mx/forms.py:67\nmsgid \"Enter a valid zip code in the format XXXXX.\"\nmsgstr \"Пазначце чынны індэкс у выглядзе «XXXXX».\"\n\n#: mx/forms.py:110\nmsgid \"Enter a valid RFC.\"\nmsgstr \"Пазначце чынны RFC.\"\n\n#: mx/forms.py:111\nmsgid \"Invalid checksum for RFC.\"\nmsgstr \"Хібная кантрольная сума RFC,\"\n\n#: mx/forms.py:191\nmsgid \"Enter a valid CURP.\"\nmsgstr \"Пазначце чынны CURP.\"\n\n#: mx/forms.py:192\nmsgid \"Invalid checksum for CURP.\"\nmsgstr \"Хібная кантрольная сума CURP,\"\n\n#: mx/models.py:14\nmsgid \"Mexico state (three uppercase letters)\"\nmsgstr \"Мэксыканскі штат (тры вялікія літары)\"\n\n#: mx/models.py:27\nmsgid \"Mexico zip code\"\nmsgstr \"Мэксыканскі паштовы код\"\n\n#: mx/models.py:44\nmsgid \"Mexican RFC\"\nmsgstr \"Мэксыканскі RFC\"\n\n#: mx/models.py:61\nmsgid \"Mexican CURP\"\nmsgstr \"Мэксыканскі CURP\"\n\n#: mx/mx_states.py:14\nmsgid \"Aguascalientes\"\nmsgstr \"Аґуаскальентас\"\n\n#: mx/mx_states.py:15\nmsgid \"Baja California\"\nmsgstr \"Ніжняя Каліфорнія\"\n\n#: mx/mx_states.py:16\nmsgid \"Baja California Sur\"\nmsgstr \"Ніжняя Паўднёвая Каліфорнія\"\n\n#: mx/mx_states.py:17\nmsgid \"Campeche\"\nmsgstr \"Кампэчэ\"\n\n#: mx/mx_states.py:18\nmsgid \"Chihuahua\"\nmsgstr \"Чыўаўа\"\n\n#: mx/mx_states.py:19\nmsgid \"Chiapas\"\nmsgstr \"Ч’япас\"\n\n#: mx/mx_states.py:20\nmsgid \"Coahuila\"\nmsgstr \"Кааўіля\"\n\n#: mx/mx_states.py:21\nmsgid \"Colima\"\nmsgstr \"Каліма\"\n\n#: mx/mx_states.py:22\nmsgid \"Distrito Federal\"\nmsgstr \"Фэдэральная акруга\"\n\n#: mx/mx_states.py:23\nmsgid \"Durango\"\nmsgstr \"Дуранґа\"\n\n#: mx/mx_states.py:24\nmsgid \"Guerrero\"\nmsgstr \"Герэра\"\n\n#: mx/mx_states.py:25\nmsgid \"Guanajuato\"\nmsgstr \"Гуанахуата\"\n\n#: mx/mx_states.py:26\nmsgid \"Hidalgo\"\nmsgstr \"Ідальґа\"\n\n#: mx/mx_states.py:27\nmsgid \"Jalisco\"\nmsgstr \"Халіска\"\n\n#: mx/mx_states.py:28\nmsgid \"Estado de México\"\nmsgstr \"Мэхіка\"\n\n#: mx/mx_states.py:29\nmsgid \"Michoacán\"\nmsgstr \"Мічаакан\"\n\n#: mx/mx_states.py:30\nmsgid \"Morelos\"\nmsgstr \"Марэляс\"\n\n#: mx/mx_states.py:31\nmsgid \"Nayarit\"\nmsgstr \"Наярыт\"\n\n#: mx/mx_states.py:32\nmsgid \"Nuevo León\"\nmsgstr \"Нуэва-Леон\"\n\n#: mx/mx_states.py:33\nmsgid \"Oaxaca\"\nmsgstr \"Аахака\"\n\n#: mx/mx_states.py:34\nmsgid \"Puebla\"\nmsgstr \"Пуэбля\"\n\n#: mx/mx_states.py:35\nmsgid \"Querétaro\"\nmsgstr \"Керэтара\"\n\n#: mx/mx_states.py:36\nmsgid \"Quintana Roo\"\nmsgstr \"Кінтана-Роо\"\n\n#: mx/mx_states.py:37\nmsgid \"Sinaloa\"\nmsgstr \"Сыналёа\"\n\n#: mx/mx_states.py:38\nmsgid \"San Luis Potosí\"\nmsgstr \"Сан-Люіс-Патосі\"\n\n#: mx/mx_states.py:39\nmsgid \"Sonora\"\nmsgstr \"Санора\"\n\n#: mx/mx_states.py:40\nmsgid \"Tabasco\"\nmsgstr \"Табаска\"\n\n#: mx/mx_states.py:41\nmsgid \"Tamaulipas\"\nmsgstr \"Тамаўліпас\"\n\n#: mx/mx_states.py:42\nmsgid \"Tlaxcala\"\nmsgstr \"Тляскаля\"\n\n#: mx/mx_states.py:43\nmsgid \"Veracruz\"\nmsgstr \"Вэракрус\"\n\n#: mx/mx_states.py:44\nmsgid \"Yucatán\"\nmsgstr \"Юкатан\"\n\n#: mx/mx_states.py:45\nmsgid \"Zacatecas\"\nmsgstr \"Сакатэкас\"\n\n#: nl/forms.py:26\nmsgid \"Enter a valid postal code\"\nmsgstr \"Пазначце чынны індэкс\"\n\n#: nl/forms.py:82\nmsgid \"Enter a valid SoFi number\"\nmsgstr \"Пазначце чынны нумар SoFi\"\n\n#: nl/nl_provinces.py:4\nmsgid \"Drenthe\"\nmsgstr \"Дрэнтэ\"\n\n#: nl/nl_provinces.py:5\nmsgid \"Flevoland\"\nmsgstr \"Флевалянд\"\n\n#: nl/nl_provinces.py:6\nmsgid \"Friesland\"\nmsgstr \"Фрысьлянд\"\n\n#: nl/nl_provinces.py:7\nmsgid \"Gelderland\"\nmsgstr \"Ґелдэрлянд\"\n\n#: nl/nl_provinces.py:8\nmsgid \"Groningen\"\nmsgstr \"Ґронінґен\"\n\n#: nl/nl_provinces.py:10\nmsgid \"Noord-Brabant\"\nmsgstr \"Паўночны Брабант\"\n\n#: nl/nl_provinces.py:11\nmsgid \"Noord-Holland\"\nmsgstr \"Паўночная Галяндыя\"\n\n#: nl/nl_provinces.py:12\nmsgid \"Overijssel\"\nmsgstr \"Авэрэйсэл\"\n\n#: nl/nl_provinces.py:13\nmsgid \"Utrecht\"\nmsgstr \"Утрэхт\"\n\n#: nl/nl_provinces.py:14\nmsgid \"Zeeland\"\nmsgstr \"Зэляндыя\"\n\n#: nl/nl_provinces.py:15\nmsgid \"Zuid-Holland\"\nmsgstr \"Паўднёвая Галяндыя\"\n\n#: no/forms.py:39\nmsgid \"Enter a valid Norwegian social security number.\"\nmsgstr \"Пазначце чынны нумар нарвэскае сацыяльнае страхоўкі.\"\n\n#: pe/forms.py:28\nmsgid \"This field requires 8 digits.\"\nmsgstr \"Поле мусіць мець 8 лічбаў.\"\n\n#: pe/forms.py:56\nmsgid \"This field requires 11 digits.\"\nmsgstr \"Поле мусіць мець 11 лічбаў.\"\n\n#: pl/forms.py:42\nmsgid \"National Identification Number consists of 11 digits.\"\nmsgstr \"Нацыянальны атаясьняльны нумар зьмяшчае 11 лічбаў.\"\n\n#: pl/forms.py:43\nmsgid \"Wrong checksum for the National Identification Number.\"\nmsgstr \"Хібная кантрольная сума нацыянальнага атаясьняльнага нумару.\"\n\n#: pl/forms.py:79\nmsgid \"National ID Card Number consists of 3 letters and 6 digits.\"\nmsgstr \"Нумар нацыянальнае атаясьняльнае карткі зьмяшчае 3 літары й 6 лічбаў.\"\n\n#: pl/forms.py:80\nmsgid \"Wrong checksum for the National ID Card Number.\"\nmsgstr \"Хібная кантрольная сума нумару нацыянальнае атаясьняльнае каркі.\"\n\n#: pl/forms.py:131\nmsgid \"\"\n\"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or \"\n\"XXXXXXXXXX.\"\nmsgstr \"\"\n\"Пазначце нумар падаткаплатніка (NIP) у выглядзе «XXX-XXX-XX-XX», «XXX-XX-XX-\"\n\"XXX» або «XXXXXXXXXX».\"\n\n#: pl/forms.py:132\nmsgid \"Wrong checksum for the Tax Number (NIP).\"\nmsgstr \"Хібная кантрольная сума нумару падаткаплатніка (NIP).\"\n\n#: pl/forms.py:171\nmsgid \"National Business Register Number (REGON) consists of 9 or 14 digits.\"\nmsgstr \"\"\n\"Нацыянальны прадпрымальніцкі рэґістрацыйны нумар (REGON) зьмяшчае 9 або 14 \"\n\"лічбаў.\"\n\n#: pl/forms.py:172\nmsgid \"Wrong checksum for the National Business Register Number (REGON).\"\nmsgstr \"\"\n\"Хібная кантрольная сума нацыянальнага прадпрымальніцкага рэґістрацыйнага \"\n\"нумару (REGON).\"\n\n#: pl/forms.py:212\nmsgid \"Enter a postal code in the format XX-XXX.\"\nmsgstr \"Пазначце індэкс у выглядзе «XX-XXX».\"\n\n#: pl/pl_voivodeships.py:8\nmsgid \"Lower Silesia\"\nmsgstr \"Ніжнясілезскае\"\n\n#: pl/pl_voivodeships.py:9\nmsgid \"Kuyavia-Pomerania\"\nmsgstr \"Куяўска-Паморскае\"\n\n#: pl/pl_voivodeships.py:10\nmsgid \"Lublin\"\nmsgstr \"Люблінскае\"\n\n#: pl/pl_voivodeships.py:11\nmsgid \"Lubusz\"\nmsgstr \"Любушскае\"\n\n#: pl/pl_voivodeships.py:12\nmsgid \"Lodz\"\nmsgstr \"Лодзінскае\"\n\n#: pl/pl_voivodeships.py:13\nmsgid \"Lesser Poland\"\nmsgstr \"Малапольскае\"\n\n#: pl/pl_voivodeships.py:14\nmsgid \"Masovia\"\nmsgstr \"Мазавецкае\"\n\n#: pl/pl_voivodeships.py:15\nmsgid \"Opole\"\nmsgstr \"Апольскае\"\n\n#: pl/pl_voivodeships.py:16\nmsgid \"Subcarpatia\"\nmsgstr \"Падкарпацкае\"\n\n#: pl/pl_voivodeships.py:17\nmsgid \"Podlasie\"\nmsgstr \"Падляскае\"\n\n#: pl/pl_voivodeships.py:18\nmsgid \"Pomerania\"\nmsgstr \"Паморскае\"\n\n#: pl/pl_voivodeships.py:19\nmsgid \"Silesia\"\nmsgstr \"Сілезскае\"\n\n#: pl/pl_voivodeships.py:20\nmsgid \"Swietokrzyskie\"\nmsgstr \"Сьвентакшыскае\"\n\n#: pl/pl_voivodeships.py:21\nmsgid \"Warmia-Masuria\"\nmsgstr \"Вармінска-Мазурскае\"\n\n#: pl/pl_voivodeships.py:22\nmsgid \"Greater Poland\"\nmsgstr \"Вялікапольскае\"\n\n#: pl/pl_voivodeships.py:23\nmsgid \"West Pomerania\"\nmsgstr \"Заходнепаморскае\"\n\n#: pt/forms.py:19\nmsgid \"Enter a zip code in the format XXXX-XXX.\"\nmsgstr \"Пазначце індэкс у выглядзе «XXXX-XXX».\"\n\n#: pt/forms.py:39\nmsgid \"Phone numbers must have 9 digits, or start by + or 00.\"\nmsgstr \"Тэлефонныя нумары мусяць мець 9 лічбаў, або пачынацца з «+» ці «00».\"\n\n#: ro/forms.py:22\nmsgid \"Enter a valid CIF.\"\nmsgstr \"Пазначце чынны CIF.\"\n\n#: ro/forms.py:59\nmsgid \"Enter a valid CNP.\"\nmsgstr \"Пазначце чынны CNP.\"\n\n#: ro/forms.py:143\nmsgid \"Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format\"\nmsgstr \"Пазначце чынны IBAN у выглядзе «ROXX-XXXX-XXXX-XXXX-XXXX-XXXX»\"\n\n#: ro/forms.py:175\nmsgid \"Phone numbers must be in XXXX-XXXXXX format.\"\nmsgstr \"Тэлефонныя нумары трэба пазначаць у выглядзе «XXXX-XXXXXX».\"\n\n#: ro/forms.py:200\nmsgid \"Enter a valid postal code in the format XXXXXX\"\nmsgstr \"Пазначце чынны індэкс у выглядзе «XXXXXX»\"\n\n#: ru/forms.py:37\nmsgid \"Enter a postal code in the format XXXXXX.\"\nmsgstr \"Пазначце індэкс у выглядзе «XXXXXX».\"\n\n#: ru/forms.py:50\nmsgid \"Enter a passport number in the format XXXX XXXXXX.\"\nmsgstr \"Пазначце нумар пашпарту ў выглядзе «XXXX XXXXXX».\"\n\n#: ru/forms.py:63\nmsgid \"Enter a passport number in the format XX XXXXXXX.\"\nmsgstr \"Пазначце нумар пашпарту ў выглядзе «XX XXXXXXX».\"\n\n#: ru/ru_regions.py:10\nmsgid \"Central Federal County\"\nmsgstr \"Цэнтральная фэдэральная акруга\"\n\n#: ru/ru_regions.py:11\nmsgid \"South Federal County\"\nmsgstr \"Паўднёвая фэдэральная акруга\"\n\n#: ru/ru_regions.py:12\nmsgid \"North-West Federal County\"\nmsgstr \"Паўночна-заходняя фэдэральная акруга\"\n\n#: ru/ru_regions.py:13\nmsgid \"Far-East Federal County\"\nmsgstr \"Далёкаўсходняя фэдэральная акруга\"\n\n#: ru/ru_regions.py:14\nmsgid \"Siberian Federal County\"\nmsgstr \"Сыбірская фэдэральная акруга\"\n\n#: ru/ru_regions.py:15\nmsgid \"Ural Federal County\"\nmsgstr \"Уральская фэдэральная акруга\"\n\n#: ru/ru_regions.py:16\nmsgid \"Privolzhsky Federal County\"\nmsgstr \"Прыволская фэдэральная акруга\"\n\n#: ru/ru_regions.py:17\nmsgid \"North-Caucasian Federal County\"\nmsgstr \"Паўночна-Каўкаская фэдэральная акруга\"\n\n#: ru/ru_regions.py:21\nmsgid \"Moskva\"\nmsgstr \"Масква\"\n\n#: ru/ru_regions.py:22\nmsgid \"Saint-Peterburg\"\nmsgstr \"Санкт-Пецярбург\"\n\n#: ru/ru_regions.py:23\nmsgid \"Moskovskaya oblast'\"\nmsgstr \"Маскоўская вобласьць\"\n\n#: ru/ru_regions.py:24\nmsgid \"Adygeya, Respublika\"\nmsgstr \"Адыгея, Рэспубліка\"\n\n#: ru/ru_regions.py:25\nmsgid \"Bashkortostan, Respublika\"\nmsgstr \"Башкартастан, Рэспубліка\"\n\n#: ru/ru_regions.py:26\nmsgid \"Buryatia, Respublika\"\nmsgstr \"Буратыя, Рэспубліка\"\n\n#: ru/ru_regions.py:27\nmsgid \"Altay, Respublika\"\nmsgstr \"Алтай, Рэспубліка\"\n\n#: ru/ru_regions.py:28\nmsgid \"Dagestan, Respublika\"\nmsgstr \"Дагестан, Рэспубліка\"\n\n#: ru/ru_regions.py:29\nmsgid \"Ingushskaya Respublika\"\nmsgstr \"Інгушэцкая Рэспубліка\"\n\n#: ru/ru_regions.py:30\nmsgid \"Kabardino-Balkarskaya Respublika\"\nmsgstr \"Кабардына-балкарская Рэспубліка\"\n\n#: ru/ru_regions.py:31\nmsgid \"Kalmykia, Respublika\"\nmsgstr \"Калмыкія, Рэспубліка\"\n\n#: ru/ru_regions.py:32\nmsgid \"Karachaevo-Cherkesskaya Respublika\"\nmsgstr \"Карачаева-Чаркеская Рэспубліка\"\n\n#: ru/ru_regions.py:33\nmsgid \"Karelia, Respublika\"\nmsgstr \"Карэлія, Рэспубліка\"\n\n#: ru/ru_regions.py:34\nmsgid \"Komi, Respublika\"\nmsgstr \"Комі, Рэспубліка\"\n\n#: ru/ru_regions.py:35\nmsgid \"Mariy Ehl, Respublika\"\nmsgstr \"Марый Эл, Рэспубліка\"\n\n#: ru/ru_regions.py:36\nmsgid \"Mordovia, Respublika\"\nmsgstr \"Мардовія, Рэспубліка\"\n\n#: ru/ru_regions.py:37\nmsgid \"Sakha, Respublika (Yakutiya)\"\nmsgstr \"Саха, Рэспубліка (Якутыя)\"\n\n#: ru/ru_regions.py:38\nmsgid \"Severnaya Osetia, Respublika (Alania)\"\nmsgstr \"Паўночная Асэтыя, Рэспубліка (Аланія)\"\n\n#: ru/ru_regions.py:39\nmsgid \"Tatarstan, Respublika\"\nmsgstr \"Татарстан, Рэспубліка\"\n\n#: ru/ru_regions.py:40\nmsgid \"Tyva, Respublika (Tuva)\"\nmsgstr \"Тыва, Рэспубліка (Тува)\"\n\n#: ru/ru_regions.py:41\nmsgid \"Udmurtskaya Respublika\"\nmsgstr \"Удмурцкая Рэспубліка\"\n\n#: ru/ru_regions.py:42\nmsgid \"Khakassiya, Respublika\"\nmsgstr \"Хакасія, Рэспубліка\"\n\n#: ru/ru_regions.py:43\nmsgid \"Chechenskaya Respublika\"\nmsgstr \"Чачэнскія Рэспубліка\"\n\n#: ru/ru_regions.py:44\nmsgid \"Chuvashskaya Respublika\"\nmsgstr \"Чуваская Рэспубліка\"\n\n#: ru/ru_regions.py:45\nmsgid \"Altayskiy Kray\"\nmsgstr \"Алтайскі край\"\n\n#: ru/ru_regions.py:46\nmsgid \"Zabaykalskiy Kray\"\nmsgstr \"Забайкальскі край\"\n\n#: ru/ru_regions.py:47\nmsgid \"Kamchatskiy Kray\"\nmsgstr \"Камчацкі край\"\n\n#: ru/ru_regions.py:48\nmsgid \"Krasnodarskiy Kray\"\nmsgstr \"Краснадарскі край\"\n\n#: ru/ru_regions.py:49\nmsgid \"Krasnoyarskiy Kray\"\nmsgstr \"Краснаярскі край\"\n\n#: ru/ru_regions.py:50\nmsgid \"Permskiy Kray\"\nmsgstr \"Пермскі край\"\n\n#: ru/ru_regions.py:51\nmsgid \"Primorskiy Kray\"\nmsgstr \"Прыморскі край\"\n\n#: ru/ru_regions.py:52\nmsgid \"Stavropol'siyy Kray\"\nmsgstr \"Стаўрапольскі край\"\n\n#: ru/ru_regions.py:53\nmsgid \"Khabarovskiy Kray\"\nmsgstr \"Хабараўскі край\"\n\n#: ru/ru_regions.py:54\nmsgid \"Amurskaya oblast'\"\nmsgstr \"Амурская вобласьць\"\n\n#: ru/ru_regions.py:55\nmsgid \"Arkhangel'skaya oblast'\"\nmsgstr \"Архангельская вобласьць\"\n\n#: ru/ru_regions.py:56\nmsgid \"Astrakhanskaya oblast'\"\nmsgstr \"Астраханская вобласьць\"\n\n#: ru/ru_regions.py:57\nmsgid \"Belgorodskaya oblast'\"\nmsgstr \"Белгародзкая вобласьць\"\n\n#: ru/ru_regions.py:58\nmsgid \"Bryanskaya oblast'\"\nmsgstr \"Бранская вобласьць\"\n\n#: ru/ru_regions.py:59\nmsgid \"Vladimirskaya oblast'\"\nmsgstr \"Уладзімерская вобласьць\"\n\n#: ru/ru_regions.py:60\nmsgid \"Volgogradskaya oblast'\"\nmsgstr \"Валгаградзкая вобласьць\"\n\n#: ru/ru_regions.py:61\nmsgid \"Vologodskaya oblast'\"\nmsgstr \"Валагодзкая вобласьць\"\n\n#: ru/ru_regions.py:62\nmsgid \"Voronezhskaya oblast'\"\nmsgstr \"Варонеская вобласьць\"\n\n#: ru/ru_regions.py:63\nmsgid \"Ivanovskaya oblast'\"\nmsgstr \"Іванаўская вобласьць\"\n\n#: ru/ru_regions.py:64\nmsgid \"Irkutskaya oblast'\"\nmsgstr \"Іркуцкая вобласьць\"\n\n#: ru/ru_regions.py:65\nmsgid \"Kaliningradskaya oblast'\"\nmsgstr \"Калінінградзкая вобласьць\"\n\n#: ru/ru_regions.py:66\nmsgid \"Kaluzhskaya oblast'\"\nmsgstr \"Калуская вобласьць\"\n\n#: ru/ru_regions.py:67\nmsgid \"Kemerovskaya oblast'\"\nmsgstr \"Кемераўская вобласьць\"\n\n#: ru/ru_regions.py:68\nmsgid \"Kirovskaya oblast'\"\nmsgstr \"Кіраўская вобласьць\"\n\n#: ru/ru_regions.py:69\nmsgid \"Kostromskaya oblast'\"\nmsgstr \"Кастрамская вобласьць\"\n\n#: ru/ru_regions.py:70\nmsgid \"Kurganskaya oblast'\"\nmsgstr \"Курганская вобласьць\"\n\n#: ru/ru_regions.py:71\nmsgid \"Kurskaya oblast'\"\nmsgstr \"Курская вобласьць\"\n\n#: ru/ru_regions.py:72\nmsgid \"Leningradskaya oblast'\"\nmsgstr \"Ленінградзкая вобласьць\"\n\n#: ru/ru_regions.py:73\nmsgid \"Lipeckaya oblast'\"\nmsgstr \"Ліпецкая вобласьць\"\n\n#: ru/ru_regions.py:74\nmsgid \"Magadanskaya oblast'\"\nmsgstr \"Магаданская вобласьць\"\n\n#: ru/ru_regions.py:75\nmsgid \"Murmanskaya oblast'\"\nmsgstr \"Мурманская вобласьць\"\n\n#: ru/ru_regions.py:76\nmsgid \"Nizhegorodskaja oblast'\"\nmsgstr \"Ніжагародзкая вобласьць\"\n\n#: ru/ru_regions.py:77\nmsgid \"Novgorodskaya oblast'\"\nmsgstr \"Наўгародзкая вобласьць\"\n\n#: ru/ru_regions.py:78\nmsgid \"Novosibirskaya oblast'\"\nmsgstr \"Новасыбірская вобласьць\"\n\n#: ru/ru_regions.py:79\nmsgid \"Omskaya oblast'\"\nmsgstr \"Омская вобласьць\"\n\n#: ru/ru_regions.py:80\nmsgid \"Orenburgskaya oblast'\"\nmsgstr \"Арэнбурская вобласьць\"\n\n#: ru/ru_regions.py:81\nmsgid \"Orlovskaya oblast'\"\nmsgstr \"Арлоўская вобласьць\"\n\n#: ru/ru_regions.py:82\nmsgid \"Penzenskaya oblast'\"\nmsgstr \"Пензенская вобласьць\"\n\n#: ru/ru_regions.py:83\nmsgid \"Pskovskaya oblast'\"\nmsgstr \"Пскоўская вобласьць\"\n\n#: ru/ru_regions.py:84\nmsgid \"Rostovskaya oblast'\"\nmsgstr \"Растоўская вобласьць\"\n\n#: ru/ru_regions.py:85\nmsgid \"Rjazanskaya oblast'\"\nmsgstr \"Разанская вобласьць\"\n\n#: ru/ru_regions.py:86\nmsgid \"Samarskaya oblast'\"\nmsgstr \"Самарская вобласьць\"\n\n#: ru/ru_regions.py:87\nmsgid \"Saratovskaya oblast'\"\nmsgstr \"Саратаўская вобласьць\"\n\n#: ru/ru_regions.py:88\nmsgid \"Sakhalinskaya oblast'\"\nmsgstr \"Сахалінская вобласьць\"\n\n#: ru/ru_regions.py:89\nmsgid \"Sverdlovskaya oblast'\"\nmsgstr \"Сьвярдлоўская вобласьць\"\n\n#: ru/ru_regions.py:90\nmsgid \"Smolenskaya oblast'\"\nmsgstr \"Смаленская вобласьць\"\n\n#: ru/ru_regions.py:91\nmsgid \"Tambovskaya oblast'\"\nmsgstr \"Тамбоўская вобласьць\"\n\n#: ru/ru_regions.py:92\nmsgid \"Tverskaya oblast'\"\nmsgstr \"Цьвярская вобласьць\"\n\n#: ru/ru_regions.py:93\nmsgid \"Tomskaya oblast'\"\nmsgstr \"Томская вобласьць\"\n\n#: ru/ru_regions.py:94\nmsgid \"Tul'skaya oblast'\"\nmsgstr \"Тульская вобласьць\"\n\n#: ru/ru_regions.py:95\nmsgid \"Tyumenskaya oblast'\"\nmsgstr \"Цюменская вобласьць\"\n\n#: ru/ru_regions.py:96\nmsgid \"Ul'ianovskaya oblast'\"\nmsgstr \"Ульянаўская вобласьць\"\n\n#: ru/ru_regions.py:97\nmsgid \"Chelyabinskaya oblast'\"\nmsgstr \"Чэлябінская вобласьць\"\n\n#: ru/ru_regions.py:98\nmsgid \"Yaroslavskaya oblast'\"\nmsgstr \"Яраслаўская вобласьць\"\n\n#: ru/ru_regions.py:99\nmsgid \"Evreyskaya avtonomnaja oblast'\"\nmsgstr \"Габрэйская аўтаномная вобласьць\"\n\n#: ru/ru_regions.py:100\nmsgid \"Neneckiy autonomnyy okrug\"\nmsgstr \"Ненецкая аўтаномная акруга\"\n\n#: ru/ru_regions.py:101\nmsgid \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\nmsgstr \"Ханты-Мансійская аўтаномная акруга — Югра\"\n\n#: ru/ru_regions.py:102\nmsgid \"Chukotskiy avtonomnyy okrug\"\nmsgstr \"Чукоцкая аўтаномная акруга\"\n\n#: ru/ru_regions.py:103\nmsgid \"Yamalo-Neneckiy avtonomnyy okrug\"\nmsgstr \"Ямала-Ненецкая аўтаномная акруга\"\n\n#: se/forms.py:54\nmsgid \"Enter a valid Swedish organisation number.\"\nmsgstr \"Пазначце чынны швэдзкі нумар таварыства.\"\n\n#: se/forms.py:111\nmsgid \"Enter a valid Swedish personal identity number.\"\nmsgstr \"Пазначце чынны швэдзкі асабісты атаясьняльны нумар.\"\n\n#: se/forms.py:112\nmsgid \"Co-ordination numbers are not allowed.\"\nmsgstr \"Каардынацыйныя нумары забараняюцца.\"\n\n#: se/forms.py:154\nmsgid \"Enter a Swedish postal code in the format XXXXX.\"\nmsgstr \"Пазначце швэдзкі індэкс у выглядзе «XXXXX».\"\n\n#: se/se_counties.py:16\nmsgid \"Stockholm\"\nmsgstr \"Стакгольм\"\n\n#: se/se_counties.py:17\nmsgid \"Västerbotten\"\nmsgstr \"Вэстэрботэн\"\n\n#: se/se_counties.py:18\nmsgid \"Norrbotten\"\nmsgstr \"Нарботэн\"\n\n#: se/se_counties.py:19\nmsgid \"Uppsala\"\nmsgstr \"Упсала\"\n\n#: se/se_counties.py:20\nmsgid \"Södermanland\"\nmsgstr \"Сёдэрманлянд\"\n\n#: se/se_counties.py:21\nmsgid \"Östergötland\"\nmsgstr \"Эстэр’ётлянд\"\n\n#: se/se_counties.py:22\nmsgid \"Jönköping\"\nmsgstr \"Ёнчэпінґ\"\n\n#: se/se_counties.py:23\nmsgid \"Kronoberg\"\nmsgstr \"Крунубэрґ\"\n\n#: se/se_counties.py:24\nmsgid \"Kalmar\"\nmsgstr \"Кальмар\"\n\n#: se/se_counties.py:25\nmsgid \"Gotland\"\nmsgstr \"Ґотлянд\"\n\n#: se/se_counties.py:26\nmsgid \"Blekinge\"\nmsgstr \"Блекінґе\"\n\n#: se/se_counties.py:27\nmsgid \"Skåne\"\nmsgstr \"Сконэ\"\n\n#: se/se_counties.py:28\nmsgid \"Halland\"\nmsgstr \"Халянд\"\n\n#: se/se_counties.py:29\nmsgid \"Västra Götaland\"\nmsgstr \"Вэстра Ёталянд\"\n\n#: se/se_counties.py:30\nmsgid \"Värmland\"\nmsgstr \"Вэрмлянд\"\n\n#: se/se_counties.py:31\nmsgid \"Örebro\"\nmsgstr \"Эрэбру\"\n\n#: se/se_counties.py:32\nmsgid \"Västmanland\"\nmsgstr \"Вэстманлянд\"\n\n#: se/se_counties.py:33\nmsgid \"Dalarna\"\nmsgstr \"Даларна\"\n\n#: se/se_counties.py:34\nmsgid \"Gävleborg\"\nmsgstr \"Еўлеборґ\"\n\n#: se/se_counties.py:35\nmsgid \"Västernorrland\"\nmsgstr \"Вэстэрнорлянд\"\n\n#: se/se_counties.py:36\nmsgid \"Jämtland\"\nmsgstr \"Емтлянд\"\n\n#: si/forms.py:25\nmsgid \"The first 7 digits of the EMSO must represent a valid past date.\"\nmsgstr \"Першыя 7 лічбаў EMSO пазначаюць дату ў мінулым.\"\n\n#: si/forms.py:26\nmsgid \"The EMSO is not valid.\"\nmsgstr \"Хібны EMSO.\"\n\n#: si/forms.py:86\nmsgid \"Enter a valid tax number in form SIXXXXXXXX\"\nmsgstr \"Пазначце чынны нумар падаткаплатніка у выглядзе «SIXXXXXXXX»\"\n\n#: si/forms.py:151\nmsgid \"Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.\"\nmsgstr \"Пазначце тэлефонны нумар у выглядзе «+386XXXXXXXX» або «0XXXXXXXX».\"\n\n#: sk/sk_districts.py:8\nmsgid \"Banska Bystrica\"\nmsgstr \"Банска Быстрыца\"\n\n#: sk/sk_districts.py:9\nmsgid \"Banska Stiavnica\"\nmsgstr \"Банска Шцьяўніца\"\n\n#: sk/sk_districts.py:10\nmsgid \"Bardejov\"\nmsgstr \"Бардзеёў\"\n\n#: sk/sk_districts.py:11\nmsgid \"Banovce nad Bebravou\"\nmsgstr \"Бановцэ-над-Бэбравоў\"\n\n#: sk/sk_districts.py:12\nmsgid \"Brezno\"\nmsgstr \"Брэзна\"\n\n#: sk/sk_districts.py:13\nmsgid \"Bratislava I\"\nmsgstr \"Браціслава I\"\n\n#: sk/sk_districts.py:14\nmsgid \"Bratislava II\"\nmsgstr \"Браціслава II\"\n\n#: sk/sk_districts.py:15\nmsgid \"Bratislava III\"\nmsgstr \"Браціслава III\"\n\n#: sk/sk_districts.py:16\nmsgid \"Bratislava IV\"\nmsgstr \"Браціслава IV\"\n\n#: sk/sk_districts.py:17\nmsgid \"Bratislava V\"\nmsgstr \"Браціслава V\"\n\n#: sk/sk_districts.py:18\nmsgid \"Bytca\"\nmsgstr \"Бітча\"\n\n#: sk/sk_districts.py:19\nmsgid \"Cadca\"\nmsgstr \"Чадца\"\n\n#: sk/sk_districts.py:20\nmsgid \"Detva\"\nmsgstr \"Дзетва\"\n\n#: sk/sk_districts.py:21\nmsgid \"Dolny Kubin\"\nmsgstr \"Долны Кубін\"\n\n#: sk/sk_districts.py:22\nmsgid \"Dunajska Streda\"\nmsgstr \"Дунайска-Стрэда\"\n\n#: sk/sk_districts.py:23\nmsgid \"Galanta\"\nmsgstr \"Ґаланта\"\n\n#: sk/sk_districts.py:24\nmsgid \"Gelnica\"\nmsgstr \"Ґелніца\"\n\n#: sk/sk_districts.py:25\nmsgid \"Hlohovec\"\nmsgstr \"Глогавец\"\n\n#: sk/sk_districts.py:26\nmsgid \"Humenne\"\nmsgstr \"Гумэннэ\"\n\n#: sk/sk_districts.py:27\nmsgid \"Ilava\"\nmsgstr \"Ілава\"\n\n#: sk/sk_districts.py:28\nmsgid \"Kezmarok\"\nmsgstr \"Кежмарак\"\n\n#: sk/sk_districts.py:29\nmsgid \"Komarno\"\nmsgstr \"Комарна\"\n\n#: sk/sk_districts.py:30\nmsgid \"Kosice I\"\nmsgstr \"Кошыцэ I\"\n\n#: sk/sk_districts.py:31\nmsgid \"Kosice II\"\nmsgstr \"Кошыцэ II\"\n\n#: sk/sk_districts.py:32\nmsgid \"Kosice III\"\nmsgstr \"Кошыцэ III\"\n\n#: sk/sk_districts.py:33\nmsgid \"Kosice IV\"\nmsgstr \"Кошыцэ IV\"\n\n#: sk/sk_districts.py:34\nmsgid \"Kosice - okolie\"\nmsgstr \"Кошыцэ — ваколіцы\"\n\n#: sk/sk_districts.py:35\nmsgid \"Krupina\"\nmsgstr \"Крупіна\"\n\n#: sk/sk_districts.py:36\nmsgid \"Kysucke Nove Mesto\"\nmsgstr \"Кісуцкэ Новэ Места\"\n\n#: sk/sk_districts.py:37\nmsgid \"Levice\"\nmsgstr \"Левіцэ\"\n\n#: sk/sk_districts.py:38\nmsgid \"Levoca\"\nmsgstr \"Левача\"\n\n#: sk/sk_districts.py:39\nmsgid \"Liptovsky Mikulas\"\nmsgstr \"Ліптаўскі Мікулаш\"\n\n#: sk/sk_districts.py:40\nmsgid \"Lucenec\"\nmsgstr \"Лучэнец\"\n\n#: sk/sk_districts.py:41\nmsgid \"Malacky\"\nmsgstr \"Малацкі\"\n\n#: sk/sk_districts.py:42\nmsgid \"Martin\"\nmsgstr \"Мартын\"\n\n#: sk/sk_districts.py:43\nmsgid \"Medzilaborce\"\nmsgstr \"Мэдзілаборцэ\"\n\n#: sk/sk_districts.py:44\nmsgid \"Michalovce\"\nmsgstr \"Міхалаўцэ\"\n\n#: sk/sk_districts.py:45\nmsgid \"Myjava\"\nmsgstr \"Міява\"\n\n#: sk/sk_districts.py:46\nmsgid \"Namestovo\"\nmsgstr \"Наместава\"\n\n#: sk/sk_districts.py:47\nmsgid \"Nitra\"\nmsgstr \"Нітра\"\n\n#: sk/sk_districts.py:48\nmsgid \"Nove Mesto nad Vahom\"\nmsgstr \"Новэ Мэста над Вагам\"\n\n#: sk/sk_districts.py:49\nmsgid \"Nove Zamky\"\nmsgstr \"Новэ Замкі\"\n\n#: sk/sk_districts.py:50\nmsgid \"Partizanske\"\nmsgstr \"Партызанскэ\"\n\n#: sk/sk_districts.py:51\nmsgid \"Pezinok\"\nmsgstr \"Пэзынак\"\n\n#: sk/sk_districts.py:52\nmsgid \"Piestany\"\nmsgstr \"П’ешцяны\"\n\n#: sk/sk_districts.py:53\nmsgid \"Poltar\"\nmsgstr \"Полтар\"\n\n#: sk/sk_districts.py:54\nmsgid \"Poprad\"\nmsgstr \"Попрад\"\n\n#: sk/sk_districts.py:55\nmsgid \"Povazska Bystrica\"\nmsgstr \"Поваска Быстрыца\"\n\n#: sk/sk_districts.py:56\nmsgid \"Presov\"\nmsgstr \"Прэшаў\"\n\n#: sk/sk_districts.py:57\nmsgid \"Prievidza\"\nmsgstr \"Прэвідза\"\n\n#: sk/sk_districts.py:58\nmsgid \"Puchov\"\nmsgstr \"Пухаў\"\n\n#: sk/sk_districts.py:59\nmsgid \"Revuca\"\nmsgstr \"Рэвуца\"\n\n#: sk/sk_districts.py:60\nmsgid \"Rimavska Sobota\"\nmsgstr \"Рымаўска Собата\"\n\n#: sk/sk_districts.py:61\nmsgid \"Roznava\"\nmsgstr \"Рожнява\"\n\n#: sk/sk_districts.py:62\nmsgid \"Ruzomberok\"\nmsgstr \"Ружамбэрак\"\n\n#: sk/sk_districts.py:63\nmsgid \"Sabinov\"\nmsgstr \"Сабінаў\"\n\n#: sk/sk_districts.py:64\nmsgid \"Senec\"\nmsgstr \"Сэнэц\"\n\n#: sk/sk_districts.py:65\nmsgid \"Senica\"\nmsgstr \"Сэніца\"\n\n#: sk/sk_districts.py:66\nmsgid \"Skalica\"\nmsgstr \"Скаліца\"\n\n#: sk/sk_districts.py:67\nmsgid \"Snina\"\nmsgstr \"Сьніна\"\n\n#: sk/sk_districts.py:68\nmsgid \"Sobrance\"\nmsgstr \"Собранцэ\"\n\n#: sk/sk_districts.py:69\nmsgid \"Spisska Nova Ves\"\nmsgstr \"Сьпіска Нова Вэс\"\n\n#: sk/sk_districts.py:70\nmsgid \"Stara Lubovna\"\nmsgstr \"Стара Любаўня\"\n\n#: sk/sk_districts.py:71\nmsgid \"Stropkov\"\nmsgstr \"Стропкаў\"\n\n#: sk/sk_districts.py:72\nmsgid \"Svidnik\"\nmsgstr \"Сьвіднік\"\n\n#: sk/sk_districts.py:73\nmsgid \"Sala\"\nmsgstr \"Шаля\"\n\n#: sk/sk_districts.py:74\nmsgid \"Topolcany\"\nmsgstr \"Топальчаны\"\n\n#: sk/sk_districts.py:75\nmsgid \"Trebisov\"\nmsgstr \"Трэбішаў\"\n\n#: sk/sk_districts.py:76\nmsgid \"Trencin\"\nmsgstr \"Трэнчын\"\n\n#: sk/sk_districts.py:77\nmsgid \"Trnava\"\nmsgstr \"Трнава\"\n\n#: sk/sk_districts.py:78\nmsgid \"Turcianske Teplice\"\nmsgstr \"Турч’янскэ Цепліцэ\"\n\n#: sk/sk_districts.py:79\nmsgid \"Tvrdosin\"\nmsgstr \"Твэрдошын\"\n\n#: sk/sk_districts.py:80\nmsgid \"Velky Krtis\"\nmsgstr \"Велькі-Кртыш\"\n\n#: sk/sk_districts.py:81\nmsgid \"Vranov nad Toplou\"\nmsgstr \"Уранаў над Топляй\"\n\n#: sk/sk_districts.py:82\nmsgid \"Zlate Moravce\"\nmsgstr \"Златэ Мораўцэ\"\n\n#: sk/sk_districts.py:83\nmsgid \"Zvolen\"\nmsgstr \"Зволен\"\n\n#: sk/sk_districts.py:84\nmsgid \"Zarnovica\"\nmsgstr \"Жарнавіца\"\n\n#: sk/sk_districts.py:85\nmsgid \"Ziar nad Hronom\"\nmsgstr \"Ж’яр над Гронам\"\n\n#: sk/sk_districts.py:86\nmsgid \"Zilina\"\nmsgstr \"Жыліна\"\n\n#: sk/sk_regions.py:8\nmsgid \"Banska Bystrica region\"\nmsgstr \"Банскабыстрыцкі край\"\n\n#: sk/sk_regions.py:9\nmsgid \"Bratislava region\"\nmsgstr \"Браціслаўскі край\"\n\n#: sk/sk_regions.py:10\nmsgid \"Kosice region\"\nmsgstr \"Кошыцкі край\"\n\n#: sk/sk_regions.py:11\nmsgid \"Nitra region\"\nmsgstr \"Нітранскі край\"\n\n#: sk/sk_regions.py:12\nmsgid \"Presov region\"\nmsgstr \"Прэшаўскі край\"\n\n#: sk/sk_regions.py:13\nmsgid \"Trencin region\"\nmsgstr \"Трэнчынскі край\"\n\n#: sk/sk_regions.py:14\nmsgid \"Trnava region\"\nmsgstr \"Трнаўскі край\"\n\n#: sk/sk_regions.py:15\nmsgid \"Zilina region\"\nmsgstr \"Жылінскі край\"\n\n#: tr/forms.py:21\nmsgid \"Enter a postal code in the format XXXXX.\"\nmsgstr \"Пазначце індэкс у выглядзе «XXXXX».\"\n\n#: tr/forms.py:42\nmsgid \"Phone numbers must be in 0XXX XXX XXXX format.\"\nmsgstr \"Тэлефонныя нумары трэба пазначаць у выглядзе «0XXX XXX XXXX».\"\n\n#: tr/forms.py:69\nmsgid \"Enter a valid Turkish Identification number.\"\nmsgstr \"Пазначце чынны турэцкі атаясьняльны нумар.\"\n\n#: tr/forms.py:70\nmsgid \"Turkish Identification number must be 11 digits.\"\nmsgstr \"Турэцкі атаясьняльны нумар зьмяшчае 11 лічбаў.\"\n\n#: us/forms.py:21\nmsgid \"Enter a zip code in the format XXXXX or XXXXX-XXXX.\"\nmsgstr \"Пазначце індэкс у выглядзе «XXXXX» або «XXXXX-XXXX».\"\n\n#: us/forms.py:59\nmsgid \"Enter a valid U.S. Social Security number in XXX-XX-XXXX format.\"\nmsgstr \"\"\n\"Пазначце чынны нумар сацыяльнае страхоўкі ў ЗША ў выглядзе «XXX-XX-XXXX».\"\n\n#: us/forms.py:92\nmsgid \"Enter a U.S. state or territory.\"\nmsgstr \"Пазначце штат або тэрыторыю ў ЗША.\"\n\n#: us/models.py:8\nmsgid \"U.S. state (two uppercase letters)\"\nmsgstr \"Штат ЗША (дзьве вялікія літары)\"\n\n#: us/models.py:17\nmsgid \"U.S. postal code (two uppercase letters)\"\nmsgstr \"Індэкс у ЗША (дзьве вялікія літары)\"\n\n#: us/models.py:26\nmsgid \"Phone number\"\nmsgstr \"Тэлефонны нумар\"\n\n#: uy/forms.py:29\nmsgid \"Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.\"\nmsgstr \"\"\n\"Пазначце чынны нумар CI у выглядзе «X.XXX.XXX-X», «XXXXXXX-X» або «XXXXXXXX».\"\n\n#: uy/forms.py:31\nmsgid \"Enter a valid CI number.\"\nmsgstr \"Пазначце чынны нумар CI.\"\n\n#: za/forms.py:22\nmsgid \"Enter a valid South African ID number\"\nmsgstr \"Пазначце чынны атаясьняльны нумар у Паўднёвай Афрыцы\"\n\n#: za/forms.py:56\nmsgid \"Enter a valid South African postal code\"\nmsgstr \"Пазначце чынны індэкс у Паўднёвай Афрыцы\"\n\n#: za/za_provinces.py:4\nmsgid \"Eastern Cape\"\nmsgstr \"Усходняя Капская правінцыя\"\n\n#: za/za_provinces.py:5\nmsgid \"Free State\"\nmsgstr \"Вольны штат\"\n\n#: za/za_provinces.py:6\nmsgid \"Gauteng\"\nmsgstr \"Ґаўтэн\"\n\n#: za/za_provinces.py:7\nmsgid \"KwaZulu-Natal\"\nmsgstr \"Квазулу-Натал\"\n\n#: za/za_provinces.py:8\nmsgid \"Limpopo\"\nmsgstr \"Лімпапо\"\n\n#: za/za_provinces.py:9\nmsgid \"Mpumalanga\"\nmsgstr \"Мпумаланга\"\n\n#: za/za_provinces.py:10\nmsgid \"Northern Cape\"\nmsgstr \"Паўночная Капская правінцыя\"\n\n#: za/za_provinces.py:11\nmsgid \"North West\"\nmsgstr \"Паўночны захад\"\n\n#: za/za_provinces.py:12\nmsgid \"Western Cape\"\nmsgstr \"Заходняя Капская правінцыя\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/locale/bg/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Boris Chervenkov <office@sentido.bg>, 2012.\n#   <grgkostadinov@gmail.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Todor Lubenov <tlubenov@gmail.com>, 2011-2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-10-17 09:16+0000\\n\"\n\"Last-Translator: Todor Lubenov <tlubenov@gmail.com>\\n\"\n\"Language-Team: Bulgarian (http://www.transifex.com/projects/p/django/\"\n\"language/bg/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: bg\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: ar/forms.py:30\nmsgid \"Enter a postal code in the format NNNN or ANNNNAAA.\"\nmsgstr \"Въведете пощенския код във формат NNNN или ANNNNAAA.\"\n\n#: ar/forms.py:52 br/forms.py:95 br/forms.py:134 pe/forms.py:27 pe/forms.py:55\nmsgid \"This field requires only numbers.\"\nmsgstr \"Това поле изисква число.\"\n\n#: ar/forms.py:53\nmsgid \"This field requires 7 or 8 digits.\"\nmsgstr \"Това поле изисква 7 или 8 цифри.\"\n\n#: ar/forms.py:82\nmsgid \"Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.\"\nmsgstr \"\"\n\"Въведете валиден номер на германска лична карта в формат XX-XXXXXXXX-X или \"\n\"XXXXXXXXXXXX.\"\n\n#: ar/forms.py:83\nmsgid \"Invalid CUIT.\"\nmsgstr \"Невалиден CUIT.\"\n\n#: ar/forms.py:84\nmsgid \"Invalid legal type. Type must be 27, 20, 23 or 30.\"\nmsgstr \"\"\n\n#: at/at_states.py:5\nmsgid \"Burgenland\"\nmsgstr \"Бургенланд\"\n\n#: at/at_states.py:6\nmsgid \"Carinthia\"\nmsgstr \"Каринтия\"\n\n#: at/at_states.py:7\nmsgid \"Lower Austria\"\nmsgstr \"Долна Австрия\"\n\n#: at/at_states.py:8\nmsgid \"Upper Austria\"\nmsgstr \"Горна Австрия\"\n\n#: at/at_states.py:9\nmsgid \"Salzburg\"\nmsgstr \"Залцбург\"\n\n#: at/at_states.py:10\nmsgid \"Styria\"\nmsgstr \"Сирия\"\n\n#: at/at_states.py:11\nmsgid \"Tyrol\"\nmsgstr \"Тирол\"\n\n#: at/at_states.py:12\nmsgid \"Vorarlberg\"\nmsgstr \"Форарлберг\"\n\n#: at/at_states.py:13\nmsgid \"Vienna\"\nmsgstr \"Виена\"\n\n#: at/forms.py:22 ch/forms.py:22 no/forms.py:19\nmsgid \"Enter a zip code in the format XXXX.\"\nmsgstr \"Въведете пощенски код в формат XXXX.\"\n\n#: at/forms.py:50\nmsgid \"Enter a valid Austrian Social Security Number in XXXX XXXXXX format.\"\nmsgstr \"\"\n\"Въведете валиден номер на социалната осигуровка австрийски в ХХХХ XXXXXX \"\n\"формат.\"\n\n#: au/forms.py:26\nmsgid \"Enter a 4 digit postcode.\"\nmsgstr \"\"\n\n#: au/models.py:9\nmsgid \"Australian State\"\nmsgstr \"\"\n\n#: au/models.py:19\nmsgid \"Australian Postcode\"\nmsgstr \"\"\n\n#: au/models.py:33\nmsgid \"Australian Phone number\"\nmsgstr \"\"\n\n#: be/be_provinces.py:5\nmsgid \"Antwerp\"\nmsgstr \"Антверпен\"\n\n#: be/be_provinces.py:6\nmsgid \"Brussels\"\nmsgstr \"Брюксел\"\n\n#: be/be_provinces.py:7\nmsgid \"East Flanders\"\nmsgstr \"Източна Фландрия\"\n\n#: be/be_provinces.py:8\nmsgid \"Flemish Brabant\"\nmsgstr \"Фламандски Брабант\"\n\n#: be/be_provinces.py:9\nmsgid \"Hainaut\"\nmsgstr \"Ено\"\n\n#: be/be_provinces.py:10\nmsgid \"Liege\"\nmsgstr \"Леге\"\n\n#: be/be_provinces.py:11 nl/nl_provinces.py:9\nmsgid \"Limburg\"\nmsgstr \"Limburg\"\n\n#: be/be_provinces.py:12\nmsgid \"Luxembourg\"\nmsgstr \"Люксембург\"\n\n#: be/be_provinces.py:13\nmsgid \"Namur\"\nmsgstr \"Намур\"\n\n#: be/be_provinces.py:14\nmsgid \"Walloon Brabant\"\nmsgstr \"Валонски Брабант\"\n\n#: be/be_provinces.py:15\nmsgid \"West Flanders\"\nmsgstr \"Западна Фландрия\"\n\n#: be/be_regions.py:5\nmsgid \"Brussels Capital Region\"\nmsgstr \"Брюксел столица\"\n\n#: be/be_regions.py:6\nmsgid \"Flemish Region\"\nmsgstr \"Фламандския регион\"\n\n#: be/be_regions.py:7\nmsgid \"Wallonia\"\nmsgstr \"Валония\"\n\n#: be/forms.py:25\nmsgid \"Enter a valid postal code in the range and format 1XXX - 9XXX.\"\nmsgstr \"Въведете валиден пощенски код в обхвата и формата 1XXX - 9XXX.\"\n\n#: be/forms.py:48\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\nmsgstr \"\"\n\"Въведете валиден телефонен номер в един от форматите 0x ххх хх хх, хх хх хх \"\n\"0xx, 04xx хх хх хх, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x . xxx.xx.\"\n\"xx, 0xx.xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx или 04xxxxxxxx.\"\n\n#: br/forms.py:22\nmsgid \"Enter a zip code in the format XXXXX-XXX.\"\nmsgstr \"Въведете пощенски код в формат XXXXX-XXX.\"\n\n#: br/forms.py:31\nmsgid \"Phone numbers must be in XX-XXXX-XXXX format.\"\nmsgstr \"Телефонните номера трябва да бъдат в формат XX-XXXX-XXXX.  \"\n\n#: br/forms.py:58\nmsgid \"\"\n\"Select a valid brazilian state. That state is not one of the available \"\n\"states.\"\nmsgstr \"Изберете валиден бразилски щат.  Този, не е един отвалидните щати.\"\n\n#: br/forms.py:93\nmsgid \"Invalid CPF number.\"\nmsgstr \"Невалиден CPF номер\"\n\n#: br/forms.py:94\nmsgid \"This field requires at most 11 digits or 14 characters.\"\nmsgstr \"Това поле изисква поне 11 цифри или 14 символа.\"\n\n#: br/forms.py:133\nmsgid \"Invalid CNPJ number.\"\nmsgstr \"Невалиден CNPJ номер\"\n\n#: br/forms.py:135\nmsgid \"This field requires at least 14 digits\"\nmsgstr \"Това поле изисква поне 14 цифри.\"\n\n#: ca/forms.py:29\nmsgid \"Enter a postal code in the format XXX XXX.\"\nmsgstr \"Въведете пощенски код в формат XXX XXХ.\"\n\n#: ca/forms.py:47 us/forms.py:30\nmsgid \"Phone numbers must be in XXX-XXX-XXXX format.\"\nmsgstr \"Телефонните номера трябва да са в XXX-XXX-XXXX формат.\"\n\n#: ca/forms.py:69\nmsgid \"Enter a Canadian province or territory.\"\nmsgstr \"\"\n\n#: ca/forms.py:110\nmsgid \"Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.\"\nmsgstr \"\"\n\"Въведете валиден номер на канадската социална осигуровка в формата XXX-XX-\"\n\"XXXX.\"\n\n#: ch/ch_states.py:5\nmsgid \"Aargau\"\nmsgstr \"Ааргау\"\n\n#: ch/ch_states.py:6\nmsgid \"Appenzell Innerrhoden\"\nmsgstr \"Appenzell Innerrhoden\"\n\n#: ch/ch_states.py:7\nmsgid \"Appenzell Ausserrhoden\"\nmsgstr \"Appenzell Ausserrhoden\"\n\n#: ch/ch_states.py:8\nmsgid \"Basel-Stadt\"\nmsgstr \"Basel-Stadt\"\n\n#: ch/ch_states.py:9\nmsgid \"Basel-Land\"\nmsgstr \"Basel-Land\"\n\n#: ch/ch_states.py:10\nmsgid \"Berne\"\nmsgstr \"Берн\"\n\n#: ch/ch_states.py:11\nmsgid \"Fribourg\"\nmsgstr \"Фрайбург\"\n\n#: ch/ch_states.py:12\nmsgid \"Geneva\"\nmsgstr \"Женева\"\n\n#: ch/ch_states.py:13\nmsgid \"Glarus\"\nmsgstr \"Гларус\"\n\n#: ch/ch_states.py:14\nmsgid \"Graubuenden\"\nmsgstr \"Graubuenden\"\n\n#: ch/ch_states.py:15\nmsgid \"Jura\"\nmsgstr \"Юра\"\n\n#: ch/ch_states.py:16\nmsgid \"Lucerne\"\nmsgstr \"Люцерна\"\n\n#: ch/ch_states.py:17\nmsgid \"Neuchatel\"\nmsgstr \"Нюшател\"\n\n#: ch/ch_states.py:18\nmsgid \"Nidwalden\"\nmsgstr \"Нидвалден\"\n\n#: ch/ch_states.py:19\nmsgid \"Obwalden\"\nmsgstr \"Obwalden\"\n\n#: ch/ch_states.py:20\nmsgid \"Schaffhausen\"\nmsgstr \"Шафхаузен\"\n\n#: ch/ch_states.py:21\nmsgid \"Schwyz\"\nmsgstr \"Швиц\"\n\n#: ch/ch_states.py:22\nmsgid \"Solothurn\"\nmsgstr \"Solothurn\"\n\n#: ch/ch_states.py:23\nmsgid \"St. Gallen\"\nmsgstr \"Санкт Гален\"\n\n#: ch/ch_states.py:24\nmsgid \"Thurgau\"\nmsgstr \"Thurgau\"\n\n#: ch/ch_states.py:25\nmsgid \"Ticino\"\nmsgstr \"Ticino\"\n\n#: ch/ch_states.py:26\nmsgid \"Uri\"\nmsgstr \"Ури\"\n\n#: ch/ch_states.py:27\nmsgid \"Valais\"\nmsgstr \"Valais\"\n\n#: ch/ch_states.py:28\nmsgid \"Vaud\"\nmsgstr \"Во\"\n\n#: ch/ch_states.py:29\nmsgid \"Zug\"\nmsgstr \"Zug\"\n\n#: ch/ch_states.py:30\nmsgid \"Zurich\"\nmsgstr \"Цюрих\"\n\n#: ch/forms.py:37\nmsgid \"Phone numbers must be in 0XX XXX XX XX format.\"\nmsgstr \"\"\n\n#: ch/forms.py:68\nmsgid \"\"\n\"Enter a valid Swiss identity or passport card number in X1234567<0 or \"\n\"1234567890 format.\"\nmsgstr \"\"\n\"Въведете валиден швейцарски индентификационен номер в X1234567<0 или \"\n\"1234567890 формат\"\n\n#: cl/forms.py:32\nmsgid \"Enter a valid Chilean RUT.\"\nmsgstr \"Въведете валиден чилийски RUT.\"\n\n#: cl/forms.py:33\nmsgid \"Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.\"\nmsgstr \"Въведете валиден чилийски RUT. Форпатът представлява ХХ ХХХ ХХХ-Х.\"\n\n#: cl/forms.py:34\nmsgid \"The Chilean RUT is not valid.\"\nmsgstr \"Чилийският RUT не е валиден.\"\n\n#: cn/forms.py:84\nmsgid \"Enter a post code in the format XXXXXX.\"\nmsgstr \"\"\n\n#: cn/forms.py:105\nmsgid \"ID Card Number consists of 15 or 18 digits.\"\nmsgstr \"\"\n\n#: cn/forms.py:106\nmsgid \"Invalid ID Card Number: Wrong checksum\"\nmsgstr \"\"\n\n#: cn/forms.py:107\nmsgid \"Invalid ID Card Number: Wrong birthdate\"\nmsgstr \"\"\n\n#: cn/forms.py:108\nmsgid \"Invalid ID Card Number: Wrong location code\"\nmsgstr \"\"\n\n#: cn/forms.py:193\nmsgid \"Enter a valid phone number.\"\nmsgstr \"\"\n\n#: cn/forms.py:210\nmsgid \"Enter a valid cell number.\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:8\nmsgid \"Prague\"\nmsgstr \"Прага\"\n\n#: cz/cz_regions.py:9\nmsgid \"Central Bohemian Region\"\nmsgstr \"Централна Бохемия\"\n\n#: cz/cz_regions.py:10\nmsgid \"South Bohemian Region\"\nmsgstr \"Южна Бохемия\"\n\n#: cz/cz_regions.py:11\nmsgid \"Pilsen Region\"\nmsgstr \"Регион Пилзен\"\n\n#: cz/cz_regions.py:12\nmsgid \"Carlsbad Region\"\nmsgstr \"Карлсбад регион\"\n\n#: cz/cz_regions.py:13\nmsgid \"Usti Region\"\nmsgstr \"Усти регион\"\n\n#: cz/cz_regions.py:14\nmsgid \"Liberec Region\"\nmsgstr \"Либерец регион\"\n\n#: cz/cz_regions.py:15\nmsgid \"Hradec Region\"\nmsgstr \"Храдец регион\"\n\n#: cz/cz_regions.py:16\nmsgid \"Pardubice Region\"\nmsgstr \"Пардубице регион\"\n\n#: cz/cz_regions.py:17\nmsgid \"Vysocina Region\"\nmsgstr \"Височински край\"\n\n#: cz/cz_regions.py:18\nmsgid \"South Moravian Region\"\nmsgstr \"Южноморавски край\"\n\n#: cz/cz_regions.py:19\nmsgid \"Olomouc Region\"\nmsgstr \"Оломоуц регион\"\n\n#: cz/cz_regions.py:20\nmsgid \"Zlin Region\"\nmsgstr \"Регион Злин\"\n\n#: cz/cz_regions.py:21\nmsgid \"Moravian-Silesian Region\"\nmsgstr \"Моравско-Силезия\"\n\n#: cz/forms.py:32 sk/forms.py:33\nmsgid \"Enter a postal code in the format XXXXX or XXX XX.\"\nmsgstr \"Въведете пощенски код в формат XXXXX или XXX XX.\"\n\n#: cz/forms.py:52\nmsgid \"Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.\"\nmsgstr \"Въведете номер на раждане във формат XXXXXX / XXXX или XXXXXXXXXX.\"\n\n#: cz/forms.py:53\nmsgid \"Enter a valid birth number.\"\nmsgstr \"Въведете валиден номер на раждане.\"\n\n#: cz/forms.py:102\nmsgid \"Enter a valid IC number.\"\nmsgstr \"Въведете валиден IC номер.\"\n\n#: de/de_states.py:5\nmsgid \"Baden-Wuerttemberg\"\nmsgstr \"Баден-Вюртемберг\"\n\n#: de/de_states.py:6\nmsgid \"Bavaria\"\nmsgstr \"Бавария\"\n\n#: de/de_states.py:7\nmsgid \"Berlin\"\nmsgstr \"Берлин\"\n\n#: de/de_states.py:8\nmsgid \"Brandenburg\"\nmsgstr \"Бранденбург\"\n\n#: de/de_states.py:9\nmsgid \"Bremen\"\nmsgstr \"Бремен\"\n\n#: de/de_states.py:10\nmsgid \"Hamburg\"\nmsgstr \"Хамбург\"\n\n#: de/de_states.py:11\nmsgid \"Hessen\"\nmsgstr \"Хесен \"\n\n#: de/de_states.py:12\nmsgid \"Mecklenburg-Western Pomerania\"\nmsgstr \"Мекленбург-Предна Померания\"\n\n#: de/de_states.py:13\nmsgid \"Lower Saxony\"\nmsgstr \"Долна Саксония \"\n\n#: de/de_states.py:14\nmsgid \"North Rhine-Westphalia\"\nmsgstr \"North Rhine-Westphalia\"\n\n#: de/de_states.py:15\nmsgid \"Rhineland-Palatinate\"\nmsgstr \"Райнланд-Пфалц\"\n\n#: de/de_states.py:16\nmsgid \"Saarland\"\nmsgstr \"Саарланд\"\n\n#: de/de_states.py:17\nmsgid \"Saxony\"\nmsgstr \"Саксония\"\n\n#: de/de_states.py:18\nmsgid \"Saxony-Anhalt\"\nmsgstr \"Саксония-Анхалт\"\n\n#: de/de_states.py:19\nmsgid \"Schleswig-Holstein\"\nmsgstr \"Шлезвиг-Холщайн\"\n\n#: de/de_states.py:20\nmsgid \"Thuringia\"\nmsgstr \"Тюрингия\"\n\n#: de/forms.py:20 fi/forms.py:18 fr/forms.py:20\nmsgid \"Enter a zip code in the format XXXXX.\"\nmsgstr \"Въведете пощенски код в формат XXXXX.\"\n\n#: de/forms.py:46\nmsgid \"\"\n\"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"format.\"\nmsgstr \"\"\n\"Въведете валиден номер на германска лична карта в формат  XXXXXXXXXXX-\"\n\"XXXXXXX-XXXXXXX-X.\"\n\n#: es/es_provinces.py:5\nmsgid \"Araba\"\nmsgstr \"\"\n\n#: es/es_provinces.py:6\nmsgid \"Albacete\"\nmsgstr \"Албасете\"\n\n#: es/es_provinces.py:7\nmsgid \"Alacant\"\nmsgstr \"Alacant\"\n\n#: es/es_provinces.py:8\nmsgid \"Almeria\"\nmsgstr \"Алмерия\"\n\n#: es/es_provinces.py:9\nmsgid \"Avila\"\nmsgstr \"Авила\"\n\n#: es/es_provinces.py:10\nmsgid \"Badajoz\"\nmsgstr \"Бадахос\"\n\n#: es/es_provinces.py:11\nmsgid \"Illes Balears\"\nmsgstr \"Балеарски острови\"\n\n#: es/es_provinces.py:12\nmsgid \"Barcelona\"\nmsgstr \"Барселона\"\n\n#: es/es_provinces.py:13\nmsgid \"Burgos\"\nmsgstr \"Бургос\"\n\n#: es/es_provinces.py:14\nmsgid \"Caceres\"\nmsgstr \"Касерес\"\n\n#: es/es_provinces.py:15\nmsgid \"Cadiz\"\nmsgstr \"Кадиз\"\n\n#: es/es_provinces.py:16\nmsgid \"Castello\"\nmsgstr \"Castello\"\n\n#: es/es_provinces.py:17\nmsgid \"Ciudad Real\"\nmsgstr \"Сиудад Реал\"\n\n#: es/es_provinces.py:18\nmsgid \"Cordoba\"\nmsgstr \"Кордоба\"\n\n#: es/es_provinces.py:19\nmsgid \"A Coruna\"\nmsgstr \"А Коруня\"\n\n#: es/es_provinces.py:20\nmsgid \"Cuenca\"\nmsgstr \"Куенка\"\n\n#: es/es_provinces.py:21\nmsgid \"Girona\"\nmsgstr \"Хирона\"\n\n#: es/es_provinces.py:22\nmsgid \"Granada\"\nmsgstr \"Гранада\"\n\n#: es/es_provinces.py:23\nmsgid \"Guadalajara\"\nmsgstr \"Гуадалахара\"\n\n#: es/es_provinces.py:24\nmsgid \"Guipuzkoa\"\nmsgstr \"Guipuzkoa\"\n\n#: es/es_provinces.py:25\nmsgid \"Huelva\"\nmsgstr \"Уелва\"\n\n#: es/es_provinces.py:26\nmsgid \"Huesca\"\nmsgstr \"Хуеска\"\n\n#: es/es_provinces.py:27\nmsgid \"Jaen\"\nmsgstr \"Хаен\"\n\n#: es/es_provinces.py:28\nmsgid \"Leon\"\nmsgstr \"Леон\"\n\n#: es/es_provinces.py:29\nmsgid \"Lleida\"\nmsgstr \"Лейда\"\n\n#: es/es_provinces.py:30 es/es_regions.py:17\nmsgid \"La Rioja\"\nmsgstr \"Ла Риоха\"\n\n#: es/es_provinces.py:31\nmsgid \"Lugo\"\nmsgstr \"Луго\"\n\n#: es/es_provinces.py:32 es/es_regions.py:18\nmsgid \"Madrid\"\nmsgstr \"Мадрид\"\n\n#: es/es_provinces.py:33\nmsgid \"Malaga\"\nmsgstr \"Малага\"\n\n#: es/es_provinces.py:34\nmsgid \"Murcia\"\nmsgstr \"Мурсия \"\n\n#: es/es_provinces.py:35\nmsgid \"Navarre\"\nmsgstr \"Навара\"\n\n#: es/es_provinces.py:36\nmsgid \"Ourense\"\nmsgstr \"Оуренсе\"\n\n#: es/es_provinces.py:37\nmsgid \"Asturias\"\nmsgstr \"Астурия\"\n\n#: es/es_provinces.py:38\nmsgid \"Palencia\"\nmsgstr \"Паленсия\"\n\n#: es/es_provinces.py:39\nmsgid \"Las Palmas\"\nmsgstr \"Лас Палмас де Гран Канария\"\n\n#: es/es_provinces.py:40\nmsgid \"Pontevedra\"\nmsgstr \"Понтеведра\"\n\n#: es/es_provinces.py:41\nmsgid \"Salamanca\"\nmsgstr \"Саламанка\"\n\n#: es/es_provinces.py:42\nmsgid \"Santa Cruz de Tenerife\"\nmsgstr \"Санта Круз де Тенерифе\"\n\n#: es/es_provinces.py:43 es/es_regions.py:11\nmsgid \"Cantabria\"\nmsgstr \"Cantabria\"\n\n#: es/es_provinces.py:44\nmsgid \"Segovia\"\nmsgstr \"Сеговия\"\n\n#: es/es_provinces.py:45\nmsgid \"Seville\"\nmsgstr \"Севиля\"\n\n#: es/es_provinces.py:46\nmsgid \"Soria\"\nmsgstr \"Сория\"\n\n#: es/es_provinces.py:47\nmsgid \"Tarragona\"\nmsgstr \"Тарагона\"\n\n#: es/es_provinces.py:48\nmsgid \"Teruel\"\nmsgstr \"Теруел\"\n\n#: es/es_provinces.py:49\nmsgid \"Toledo\"\nmsgstr \"Толедо\"\n\n#: es/es_provinces.py:50\nmsgid \"Valencia\"\nmsgstr \"Валенсия\"\n\n#: es/es_provinces.py:51\nmsgid \"Valladolid\"\nmsgstr \"Валядолид\"\n\n#: es/es_provinces.py:52\nmsgid \"Bizkaia\"\nmsgstr \"Bizkaia\"\n\n#: es/es_provinces.py:53\nmsgid \"Zamora\"\nmsgstr \"Замора\"\n\n#: es/es_provinces.py:54\nmsgid \"Zaragoza\"\nmsgstr \"Сарагоса\"\n\n#: es/es_provinces.py:55\nmsgid \"Ceuta\"\nmsgstr \"Сеута\"\n\n#: es/es_provinces.py:56\nmsgid \"Melilla\"\nmsgstr \"Мелила\"\n\n#: es/es_regions.py:5\nmsgid \"Andalusia\"\nmsgstr \"Андалусия\"\n\n#: es/es_regions.py:6\nmsgid \"Aragon\"\nmsgstr \"Арагон\"\n\n#: es/es_regions.py:7\nmsgid \"Principality of Asturias\"\nmsgstr \"Княжество Астурия\"\n\n#: es/es_regions.py:8\nmsgid \"Balearic Islands\"\nmsgstr \"Балеарските острови\"\n\n#: es/es_regions.py:9\nmsgid \"Basque Country\"\nmsgstr \"Страна на баските\"\n\n#: es/es_regions.py:10\nmsgid \"Canary Islands\"\nmsgstr \"Канарски острови\"\n\n#: es/es_regions.py:12\nmsgid \"Castile-La Mancha\"\nmsgstr \"Кастилия-Ла Манча\"\n\n#: es/es_regions.py:13\nmsgid \"Castile and Leon\"\nmsgstr \"Кастилия и Леон\"\n\n#: es/es_regions.py:14\nmsgid \"Catalonia\"\nmsgstr \"Каталония\"\n\n#: es/es_regions.py:15\nmsgid \"Extremadura\"\nmsgstr \"Extremadura\"\n\n#: es/es_regions.py:16\nmsgid \"Galicia\"\nmsgstr \"Галисия\"\n\n#: es/es_regions.py:19\nmsgid \"Region of Murcia\"\nmsgstr \"Района на Мурсия\"\n\n#: es/es_regions.py:20\nmsgid \"Foral Community of Navarre\"\nmsgstr \"Foral област Навара\"\n\n#: es/es_regions.py:21\nmsgid \"Valencian Community\"\nmsgstr \"Валенсия\"\n\n#: es/forms.py:26\nmsgid \"Enter a valid postal code in the range and format 01XXX - 52XXX.\"\nmsgstr \"Въведете валиден пощенски код в интервала 01XXX - 52XXX.\"\n\n#: es/forms.py:46\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or \"\n\"9XXXXXXXX.\"\nmsgstr \"\"\n\"Въведевалиден телефонен номер в един от форматите 6XXXXXXXX, 8XXXXXXXX или \"\n\"9XXXXXXXX.\"\n\n#: es/forms.py:73\nmsgid \"Please enter a valid NIF, NIE, or CIF.\"\nmsgstr \"Въведете валиден НИФ, НИЕ, или ЦИФ.\"\n\n#: es/forms.py:74\nmsgid \"Please enter a valid NIF or NIE.\"\nmsgstr \"Въведете валиден НИГ или НИЕ.\"\n\n#: es/forms.py:75\nmsgid \"Invalid checksum for NIF.\"\nmsgstr \"Невалидна чексума за НИФ\"\n\n#: es/forms.py:76\nmsgid \"Invalid checksum for NIE.\"\nmsgstr \"Невалидна чексума за НИЕ\"\n\n#: es/forms.py:77\nmsgid \"Invalid checksum for CIF.\"\nmsgstr \"Невалидна чексума за ЦИФ\"\n\n#: es/forms.py:149\nmsgid \"\"\n\"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.\"\nmsgstr \"\"\n\"Въведете валиден номер на банковата ви сметка във формат XXXX-XXXX-XX-\"\n\"XXXXXXXXXX.\"\n\n#: es/forms.py:150\nmsgid \"Invalid checksum for bank account number.\"\nmsgstr \"Невалидна чексума за номер на банковата сметка\"\n\n#: fi/forms.py:33\nmsgid \"Enter a valid Finnish social security number.\"\nmsgstr \"Въведете валиден финландски номер на социалната осигуровка.\"\n\n#: fr/forms.py:35\nmsgid \"Phone numbers must be in 0X XX XX XX XX format.\"\nmsgstr \"Телефонните номера трябва да са в 0X XX XX XX XX формат.\"\n\n#: gb/forms.py:25\nmsgid \"Enter a valid postcode.\"\nmsgstr \"Въведете валиден пощенски код.\"\n\n#: gb/gb_regions.py:11\nmsgid \"Bedfordshire\"\nmsgstr \"Бедфордшър\"\n\n#: gb/gb_regions.py:12\nmsgid \"Buckinghamshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:14\nmsgid \"Cheshire\"\nmsgstr \"Чешир\"\n\n#: gb/gb_regions.py:15\nmsgid \"Cornwall and Isles of Scilly\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:16\nmsgid \"Cumbria\"\nmsgstr \"Кумбрия\"\n\n#: gb/gb_regions.py:17\nmsgid \"Derbyshire\"\nmsgstr \"Дербишир\"\n\n#: gb/gb_regions.py:18\nmsgid \"Devon\"\nmsgstr \"Девон\"\n\n#: gb/gb_regions.py:19\nmsgid \"Dorset\"\nmsgstr \"Дорсет\"\n\n#: gb/gb_regions.py:20\nmsgid \"Durham\"\nmsgstr \"Дурхам\"\n\n#: gb/gb_regions.py:21\nmsgid \"East Sussex\"\nmsgstr \"Источен Съсек \"\n\n#: gb/gb_regions.py:22\nmsgid \"Essex\"\nmsgstr \"Есекс\"\n\n#: gb/gb_regions.py:23\nmsgid \"Gloucestershire\"\nmsgstr \"Глочестършир\"\n\n#: gb/gb_regions.py:24\nmsgid \"Greater London\"\nmsgstr \"Велик Лондон\"\n\n#: gb/gb_regions.py:25\nmsgid \"Greater Manchester\"\nmsgstr \"Велик Манчестер \"\n\n#: gb/gb_regions.py:26\nmsgid \"Hampshire\"\nmsgstr \"Хемпшир\"\n\n#: gb/gb_regions.py:27\nmsgid \"Hertfordshire\"\nmsgstr \"Хердфордшир\"\n\n#: gb/gb_regions.py:28\nmsgid \"Kent\"\nmsgstr \"Кент\"\n\n#: gb/gb_regions.py:29\nmsgid \"Lancashire\"\nmsgstr \"Ланкашър\"\n\n#: gb/gb_regions.py:30\nmsgid \"Leicestershire\"\nmsgstr \"Лечестършир\"\n\n#: gb/gb_regions.py:31\nmsgid \"Lincolnshire\"\nmsgstr \"Линкълншир\"\n\n#: gb/gb_regions.py:32\nmsgid \"Merseyside\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:33\nmsgid \"Norfolk\"\nmsgstr \"Норфолк\"\n\n#: gb/gb_regions.py:34\nmsgid \"North Yorkshire\"\nmsgstr \"Северен Йоркшир\"\n\n#: gb/gb_regions.py:35\nmsgid \"Northamptonshire\"\nmsgstr \"Нортхемптъншир\"\n\n#: gb/gb_regions.py:36\nmsgid \"Northumberland\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:37\nmsgid \"Nottinghamshire\"\nmsgstr \"Нотингамшир\"\n\n#: gb/gb_regions.py:38\nmsgid \"Oxfordshire\"\nmsgstr \"Оксфордшир\"\n\n#: gb/gb_regions.py:39\nmsgid \"Shropshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:40\nmsgid \"Somerset\"\nmsgstr \"Съмърсет\"\n\n#: gb/gb_regions.py:41\nmsgid \"South Yorkshire\"\nmsgstr \"Южен Йорксър\"\n\n#: gb/gb_regions.py:42\nmsgid \"Staffordshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:43\nmsgid \"Suffolk\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:44\nmsgid \"Surrey\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:45\nmsgid \"Tyne and Wear\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:46\nmsgid \"Warwickshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:47\nmsgid \"West Midlands\"\nmsgstr \"Уест Мидландс\"\n\n#: gb/gb_regions.py:48\nmsgid \"West Sussex\"\nmsgstr \"Западен Съсекс\"\n\n#: gb/gb_regions.py:49\nmsgid \"West Yorkshire\"\nmsgstr \"Западен Йоркшир\"\n\n#: gb/gb_regions.py:50\nmsgid \"Wiltshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:51\nmsgid \"Worcestershire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:55\nmsgid \"County Antrim\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:56\nmsgid \"County Armagh\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:57\nmsgid \"County Down\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:58\nmsgid \"County Fermanagh\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:59\nmsgid \"County Londonderry\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:60\nmsgid \"County Tyrone\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:64\nmsgid \"Clwyd\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:65\nmsgid \"Dyfed\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:66\nmsgid \"Gwent\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:67\nmsgid \"Gwynedd\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:68\nmsgid \"Mid Glamorgan\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:69\nmsgid \"Powys\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:70\nmsgid \"South Glamorgan\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:71\nmsgid \"West Glamorgan\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:75\nmsgid \"Borders\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:76\nmsgid \"Central Scotland\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:77\nmsgid \"Dumfries and Galloway\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:78\nmsgid \"Fife\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:79\nmsgid \"Grampian\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:80\nmsgid \"Highland\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:81\nmsgid \"Lothian\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:82\nmsgid \"Orkney Islands\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:83\nmsgid \"Shetland Islands\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:84\nmsgid \"Strathclyde\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:85\nmsgid \"Tayside\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:86\nmsgid \"Western Isles\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:90\nmsgid \"England\"\nmsgstr \"Англия\"\n\n#: gb/gb_regions.py:91\nmsgid \"Northern Ireland\"\nmsgstr \"Северна Ирландия\"\n\n#: gb/gb_regions.py:92\nmsgid \"Scotland\"\nmsgstr \"Шотландия\"\n\n#: gb/gb_regions.py:93\nmsgid \"Wales\"\nmsgstr \"Уелс\"\n\n#: hk/forms.py:37\n#, python-format\nmsgid \"Phone number should not start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:40\n#, python-format\nmsgid \"Phone number must be in one of the following formats: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:42\n#, python-format\nmsgid \"Phone number should start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hr/forms.py:76\nmsgid \"Enter a valid 13 digit JMBG\"\nmsgstr \"\"\n\n#: hr/forms.py:77\nmsgid \"Error in date segment\"\nmsgstr \"\"\n\n#: hr/forms.py:123\nmsgid \"Enter a valid 11 digit OIB\"\nmsgstr \"\"\n\n#: hr/forms.py:152 id/forms.py:112\nmsgid \"Enter a valid vehicle license plate number\"\nmsgstr \"Въведете валиден регистрационен номер на превозното средство\"\n\n#: hr/forms.py:153\nmsgid \"Enter a valid location code\"\nmsgstr \"\"\n\n#: hr/forms.py:154\nmsgid \"Number part cannot be zero\"\nmsgstr \"\"\n\n#: hr/forms.py:190\nmsgid \"Enter a valid 5 digit postal code\"\nmsgstr \"\"\n\n#: hr/forms.py:218 id/forms.py:72 nl/forms.py:56\nmsgid \"Enter a valid phone number\"\nmsgstr \"Въведете валиден телефонен номер\"\n\n#: hr/forms.py:219\nmsgid \"Enter a valid area or mobile network code\"\nmsgstr \"\"\n\n#: hr/forms.py:220\nmsgid \"The phone nubmer is too long\"\nmsgstr \"\"\n\n#: hr/forms.py:258\nmsgid \"Enter a valid 19 digit JMBAG starting with 601983\"\nmsgstr \"\"\n\n#: hr/forms.py:259\nmsgid \"Card issue number cannot be zero\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:14\nmsgid \"Grad Zagreb\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:15\nmsgid \"Bjelovarsko-bilogorska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:16\nmsgid \"Brodsko-posavska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:17\nmsgid \"Dubrovačko-neretvanska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:18\nmsgid \"Istarska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:19\nmsgid \"Karlovačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:20\nmsgid \"Koprivničko-križevačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:21\nmsgid \"Krapinsko-zagorska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:22\nmsgid \"Ličko-senjska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:23\nmsgid \"Međimurska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:24\nmsgid \"Osječko-baranjska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:25\nmsgid \"Požeško-slavonska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:26\nmsgid \"Primorsko-goranska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:27\nmsgid \"Sisačko-moslavačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:28\nmsgid \"Splitsko-dalmatinska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:29\nmsgid \"Šibensko-kninska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:30\nmsgid \"Varaždinska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:31\nmsgid \"Virovitičko-podravska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:32\nmsgid \"Vukovarsko-srijemska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:33\nmsgid \"Zadarska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:34\nmsgid \"Zagrebačka županija\"\nmsgstr \"\"\n\n#: id/forms.py:31\nmsgid \"Enter a valid post code\"\nmsgstr \"Въведете валиден пощенски код\"\n\n#: id/forms.py:176\nmsgid \"Enter a valid NIK/KTP number\"\nmsgstr \"Въведете валиден NIIK/KTP номер\"\n\n#: id/id_choices.py:15\nmsgid \"Aceh\"\nmsgstr \"Аче\"\n\n#: id/id_choices.py:16 id/id_choices.py:79\nmsgid \"Bali\"\nmsgstr \"Бали\"\n\n#: id/id_choices.py:17 id/id_choices.py:51\nmsgid \"Banten\"\nmsgstr \"Banten\"\n\n#: id/id_choices.py:18 id/id_choices.py:60\nmsgid \"Bengkulu\"\nmsgstr \"Бенгкулу\"\n\n#: id/id_choices.py:19 id/id_choices.py:53\nmsgid \"Yogyakarta\"\nmsgstr \"Yogyakarta\"\n\n#: id/id_choices.py:20 id/id_choices.py:57\nmsgid \"Jakarta\"\nmsgstr \"Джакарта\"\n\n#: id/id_choices.py:21 id/id_choices.py:81\nmsgid \"Gorontalo\"\nmsgstr \"Gorontalo\"\n\n#: id/id_choices.py:22 id/id_choices.py:63\nmsgid \"Jambi\"\nmsgstr \"Jambi\"\n\n#: id/id_choices.py:23\nmsgid \"Jawa Barat\"\nmsgstr \"Jawa Barat\"\n\n#: id/id_choices.py:24\nmsgid \"Jawa Tengah\"\nmsgstr \"Jawa Tengah\"\n\n#: id/id_choices.py:25\nmsgid \"Jawa Timur\"\nmsgstr \"Източна Ява\"\n\n#: id/id_choices.py:26 id/id_choices.py:94\nmsgid \"Kalimantan Barat\"\nmsgstr \"Калимантан Барат\"\n\n#: id/id_choices.py:27 id/id_choices.py:72\nmsgid \"Kalimantan Selatan\"\nmsgstr \"Калимантан Селатан\"\n\n#: id/id_choices.py:28 id/id_choices.py:95\nmsgid \"Kalimantan Tengah\"\nmsgstr \"Калимантан Тенга\"\n\n#: id/id_choices.py:29 id/id_choices.py:96\nmsgid \"Kalimantan Timur\"\nmsgstr \"Калимантан Тимур\"\n\n#: id/id_choices.py:30\nmsgid \"Kepulauan Bangka-Belitung\"\nmsgstr \"\"\n\n#: id/id_choices.py:31 id/id_choices.py:68\nmsgid \"Kepulauan Riau\"\nmsgstr \"\"\n\n#: id/id_choices.py:32 id/id_choices.py:61\nmsgid \"Lampung\"\nmsgstr \"Лампунг\"\n\n#: id/id_choices.py:33 id/id_choices.py:76\nmsgid \"Maluku\"\nmsgstr \"Молукски острови\"\n\n#: id/id_choices.py:34 id/id_choices.py:77\nmsgid \"Maluku Utara\"\nmsgstr \"Молуки Утара\"\n\n#: id/id_choices.py:35\nmsgid \"Nusa Tenggara Barat\"\nmsgstr \"Нуса Тенгара Барат\"\n\n#: id/id_choices.py:36\nmsgid \"Nusa Tenggara Timur\"\nmsgstr \"Нуса Тенгара Тимур\"\n\n#: id/id_choices.py:37\nmsgid \"Papua\"\nmsgstr \"Папуа\"\n\n#: id/id_choices.py:38\nmsgid \"Papua Barat\"\nmsgstr \"Папуа Barat\"\n\n#: id/id_choices.py:39 id/id_choices.py:66\nmsgid \"Riau\"\nmsgstr \"Риау\"\n\n#: id/id_choices.py:40 id/id_choices.py:74\nmsgid \"Sulawesi Barat\"\nmsgstr \"Сулавеси Барат\"\n\n#: id/id_choices.py:41 id/id_choices.py:75\nmsgid \"Sulawesi Selatan\"\nmsgstr \"Сулавеси Selatan\"\n\n#: id/id_choices.py:42 id/id_choices.py:82\nmsgid \"Sulawesi Tengah\"\nmsgstr \"Сулавеси Тенга\"\n\n#: id/id_choices.py:43 id/id_choices.py:85\nmsgid \"Sulawesi Tenggara\"\nmsgstr \"Сулавеси Тенгара\"\n\n#: id/id_choices.py:44\nmsgid \"Sulawesi Utara\"\nmsgstr \"Сулавеси Утара\"\n\n#: id/id_choices.py:45 id/id_choices.py:58\nmsgid \"Sumatera Barat\"\nmsgstr \"Суматера Барат\"\n\n#: id/id_choices.py:46 id/id_choices.py:62\nmsgid \"Sumatera Selatan\"\nmsgstr \"Суматера Селатан\"\n\n#: id/id_choices.py:47 id/id_choices.py:64\nmsgid \"Sumatera Utara\"\nmsgstr \"Суматера Утара\"\n\n#: id/id_choices.py:52\nmsgid \"Magelang\"\nmsgstr \"Магеланг\"\n\n#: id/id_choices.py:54\nmsgid \"Surakarta - Solo\"\nmsgstr \"Суракарта - Соло\"\n\n#: id/id_choices.py:55\nmsgid \"Madiun\"\nmsgstr \"Мадиун\"\n\n#: id/id_choices.py:56\nmsgid \"Kediri\"\nmsgstr \"Кедири\"\n\n#: id/id_choices.py:59\nmsgid \"Tapanuli\"\nmsgstr \"\"\n\n#: id/id_choices.py:65\nmsgid \"Nanggroe Aceh Darussalam\"\nmsgstr \"Ачех\"\n\n#: id/id_choices.py:67\nmsgid \"Kepulauan Bangka Belitung\"\nmsgstr \"\"\n\n#: id/id_choices.py:69\nmsgid \"Corps Consulate\"\nmsgstr \"\"\n\n#: id/id_choices.py:70\nmsgid \"Corps Diplomatic\"\nmsgstr \"\"\n\n#: id/id_choices.py:71\nmsgid \"Bandung\"\nmsgstr \"\"\n\n#: id/id_choices.py:73\nmsgid \"Sulawesi Utara Daratan\"\nmsgstr \"\"\n\n#: id/id_choices.py:78\nmsgid \"NTT - Timor\"\nmsgstr \"NTT - Тимор\"\n\n#: id/id_choices.py:80\nmsgid \"Sulawesi Utara Kepulauan\"\nmsgstr \"\"\n\n#: id/id_choices.py:83\nmsgid \"NTB - Lombok\"\nmsgstr \"NTB - Lombok\"\n\n#: id/id_choices.py:84\nmsgid \"Papua dan Papua Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:86\nmsgid \"Cirebon\"\nmsgstr \"\"\n\n#: id/id_choices.py:87\nmsgid \"NTB - Sumbawa\"\nmsgstr \"NTB - Sumbawa\"\n\n#: id/id_choices.py:88\nmsgid \"NTT - Flores\"\nmsgstr \"\"\n\n#: id/id_choices.py:89\nmsgid \"NTT - Sumba\"\nmsgstr \"\"\n\n#: id/id_choices.py:90\nmsgid \"Bogor\"\nmsgstr \"\"\n\n#: id/id_choices.py:91\nmsgid \"Pekalongan\"\nmsgstr \"\"\n\n#: id/id_choices.py:92\nmsgid \"Semarang\"\nmsgstr \"\"\n\n#: id/id_choices.py:93\nmsgid \"Pati\"\nmsgstr \"Пати\"\n\n#: id/id_choices.py:97\nmsgid \"Surabaya\"\nmsgstr \"\"\n\n#: id/id_choices.py:98\nmsgid \"Madura\"\nmsgstr \"Мадура\"\n\n#: id/id_choices.py:99\nmsgid \"Malang\"\nmsgstr \"Маланг\"\n\n#: id/id_choices.py:100\nmsgid \"Jember\"\nmsgstr \"Джембер\"\n\n#: id/id_choices.py:101\nmsgid \"Banyumas\"\nmsgstr \"\"\n\n#: id/id_choices.py:102\nmsgid \"Federal Government\"\nmsgstr \"Федералното правителство\"\n\n#: id/id_choices.py:103\nmsgid \"Bojonegoro\"\nmsgstr \"Bojonegoro\"\n\n#: id/id_choices.py:104\nmsgid \"Purwakarta\"\nmsgstr \"Purwakarta\"\n\n#: id/id_choices.py:105\nmsgid \"Sidoarjo\"\nmsgstr \"\"\n\n#: id/id_choices.py:106\nmsgid \"Garut\"\nmsgstr \"Гарут\"\n\n#: ie/ie_counties.py:8\nmsgid \"Antrim\"\nmsgstr \"Антрим\"\n\n#: ie/ie_counties.py:9\nmsgid \"Armagh\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:10\nmsgid \"Carlow\"\nmsgstr \"Карлоу\"\n\n#: ie/ie_counties.py:11\nmsgid \"Cavan\"\nmsgstr \"Каван\"\n\n#: ie/ie_counties.py:12\nmsgid \"Clare\"\nmsgstr \"Клеър\"\n\n#: ie/ie_counties.py:13\nmsgid \"Cork\"\nmsgstr \"Корк\"\n\n#: ie/ie_counties.py:14\nmsgid \"Derry\"\nmsgstr \"Дери\"\n\n#: ie/ie_counties.py:15\nmsgid \"Donegal\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:16\nmsgid \"Down\"\nmsgstr \"Даун\"\n\n#: ie/ie_counties.py:17\nmsgid \"Dublin\"\nmsgstr \"Дъблин\"\n\n#: ie/ie_counties.py:18\nmsgid \"Fermanagh\"\nmsgstr \"Fermanagh\"\n\n#: ie/ie_counties.py:19\nmsgid \"Galway\"\nmsgstr \"Голуей\"\n\n#: ie/ie_counties.py:20\nmsgid \"Kerry\"\nmsgstr \"Kerry\"\n\n#: ie/ie_counties.py:21\nmsgid \"Kildare\"\nmsgstr \"Kildare\"\n\n#: ie/ie_counties.py:22\nmsgid \"Kilkenny\"\nmsgstr \"Килкени\"\n\n#: ie/ie_counties.py:23\nmsgid \"Laois\"\nmsgstr \"Laois\"\n\n#: ie/ie_counties.py:24\nmsgid \"Leitrim\"\nmsgstr \"Leitrim\"\n\n#: ie/ie_counties.py:25\nmsgid \"Limerick\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:26\nmsgid \"Longford\"\nmsgstr \"Лонгфорд\"\n\n#: ie/ie_counties.py:27\nmsgid \"Louth\"\nmsgstr \"Лоут\"\n\n#: ie/ie_counties.py:28\nmsgid \"Mayo\"\nmsgstr \"Майо\"\n\n#: ie/ie_counties.py:29\nmsgid \"Meath\"\nmsgstr \"Мийт\"\n\n#: ie/ie_counties.py:30\nmsgid \"Monaghan\"\nmsgstr \"Монахан\"\n\n#: ie/ie_counties.py:31\nmsgid \"Offaly\"\nmsgstr \"Offaly\"\n\n#: ie/ie_counties.py:32\nmsgid \"Roscommon\"\nmsgstr \"Roscommon\"\n\n#: ie/ie_counties.py:33\nmsgid \"Sligo\"\nmsgstr \"Слиго\"\n\n#: ie/ie_counties.py:34\nmsgid \"Tipperary\"\nmsgstr \"Tipperary\"\n\n#: ie/ie_counties.py:35\nmsgid \"Tyrone\"\nmsgstr \"Тайрън\"\n\n#: ie/ie_counties.py:36\nmsgid \"Waterford\"\nmsgstr \"Уотърфорд\"\n\n#: ie/ie_counties.py:37\nmsgid \"Westmeath\"\nmsgstr \"Westmeath\"\n\n#: ie/ie_counties.py:38\nmsgid \"Wexford\"\nmsgstr \"Уексфорд\"\n\n#: ie/ie_counties.py:39\nmsgid \"Wicklow\"\nmsgstr \"Уиклоу\"\n\n#: il/forms.py:32\nmsgid \"Enter a postal code in the format XXXXX\"\nmsgstr \"Въведете пощенски код в формат XXXXX\"\n\n#: il/forms.py:51\nmsgid \"Enter a valid ID number.\"\nmsgstr \"Въведете валиден номер на лична карта.\"\n\n#: in_/forms.py:41\nmsgid \"Enter a zip code in the format XXXXXX or XXX XXX.\"\nmsgstr \"Въведете пощенския код във формат XXXXXX или XXX XXX.\"\n\n#: in_/forms.py:64\nmsgid \"Enter an Indian state or territory.\"\nmsgstr \"Въведете индиански щат или територия.\"\n\n#: in_/forms.py:103\nmsgid \"Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.\"\nmsgstr \"\"\n\"Телефонните номера трябва да бъде в 02X-8X или 03X-7X или 04X-6X формат.\"\n\n#: is_/forms.py:22\nmsgid \"\"\n\"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.\"\nmsgstr \"Въведете валиден исландски номер. Форматът представлява XXXXXX-XXXX.\"\n\n#: is_/forms.py:23\nmsgid \"The Icelandic identification number is not valid.\"\nmsgstr \"Исландския номер за индентификация е невлиден\"\n\n#: it/forms.py:21\nmsgid \"Enter a valid zip code.\"\nmsgstr \"Въведете валиден пощенски код.\"\n\n#: it/forms.py:48\nmsgid \"Enter a valid Social Security number.\"\nmsgstr \"Въведете валиден номер на социалната ви осигуровка.\"\n\n#: it/forms.py:73\nmsgid \"Enter a valid VAT number.\"\nmsgstr \"Въведете валиден VAT номер.\"\n\n#: jp/forms.py:19\nmsgid \"Enter a postal code in the format XXXXXXX or XXX-XXXX.\"\nmsgstr \"Въведете пощенски код в формат XXXXXXX или XXX-XXXX.\"\n\n#: jp/jp_prefectures.py:4\nmsgid \"Hokkaido\"\nmsgstr \"Хокайдо\"\n\n#: jp/jp_prefectures.py:5\nmsgid \"Aomori\"\nmsgstr \"Амори\"\n\n#: jp/jp_prefectures.py:6\nmsgid \"Iwate\"\nmsgstr \"Iwate\"\n\n#: jp/jp_prefectures.py:7\nmsgid \"Miyagi\"\nmsgstr \"Miyagi\"\n\n#: jp/jp_prefectures.py:8\nmsgid \"Akita\"\nmsgstr \"Акита\"\n\n#: jp/jp_prefectures.py:9\nmsgid \"Yamagata\"\nmsgstr \"Ямагата\"\n\n#: jp/jp_prefectures.py:10\nmsgid \"Fukushima\"\nmsgstr \"Фукушима\"\n\n#: jp/jp_prefectures.py:11\nmsgid \"Ibaraki\"\nmsgstr \"Ибараки\"\n\n#: jp/jp_prefectures.py:12\nmsgid \"Tochigi\"\nmsgstr \"Tochigi\"\n\n#: jp/jp_prefectures.py:13\nmsgid \"Gunma\"\nmsgstr \"Gunma\"\n\n#: jp/jp_prefectures.py:14\nmsgid \"Saitama\"\nmsgstr \"Сайтама\"\n\n#: jp/jp_prefectures.py:15\nmsgid \"Chiba\"\nmsgstr \"Чиба\"\n\n#: jp/jp_prefectures.py:16\nmsgid \"Tokyo\"\nmsgstr \"Токио\"\n\n#: jp/jp_prefectures.py:17\nmsgid \"Kanagawa\"\nmsgstr \"Канагава\"\n\n#: jp/jp_prefectures.py:18\nmsgid \"Yamanashi\"\nmsgstr \"Яманаши\"\n\n#: jp/jp_prefectures.py:19\nmsgid \"Nagano\"\nmsgstr \"Нагано\"\n\n#: jp/jp_prefectures.py:20\nmsgid \"Niigata\"\nmsgstr \"Ниигата\"\n\n#: jp/jp_prefectures.py:21\nmsgid \"Toyama\"\nmsgstr \"Тояма\"\n\n#: jp/jp_prefectures.py:22\nmsgid \"Ishikawa\"\nmsgstr \"Ишикава\"\n\n#: jp/jp_prefectures.py:23\nmsgid \"Fukui\"\nmsgstr \"Фукуи\"\n\n#: jp/jp_prefectures.py:24\nmsgid \"Gifu\"\nmsgstr \"Gifu\"\n\n#: jp/jp_prefectures.py:25\nmsgid \"Shizuoka\"\nmsgstr \"Шизуока\"\n\n#: jp/jp_prefectures.py:26\nmsgid \"Aichi\"\nmsgstr \"Aichi\"\n\n#: jp/jp_prefectures.py:27\nmsgid \"Mie\"\nmsgstr \"Мие\"\n\n#: jp/jp_prefectures.py:28\nmsgid \"Shiga\"\nmsgstr \"Шига\"\n\n#: jp/jp_prefectures.py:29\nmsgid \"Kyoto\"\nmsgstr \"Киато\"\n\n#: jp/jp_prefectures.py:30\nmsgid \"Osaka\"\nmsgstr \"Осака\"\n\n#: jp/jp_prefectures.py:31\nmsgid \"Hyogo\"\nmsgstr \"Хиого\"\n\n#: jp/jp_prefectures.py:32\nmsgid \"Nara\"\nmsgstr \"Нара\"\n\n#: jp/jp_prefectures.py:33\nmsgid \"Wakayama\"\nmsgstr \"Вакаяма\"\n\n#: jp/jp_prefectures.py:34\nmsgid \"Tottori\"\nmsgstr \"Tottori\"\n\n#: jp/jp_prefectures.py:35\nmsgid \"Shimane\"\nmsgstr \"Shimane\"\n\n#: jp/jp_prefectures.py:36\nmsgid \"Okayama\"\nmsgstr \"Окаяма\"\n\n#: jp/jp_prefectures.py:37\nmsgid \"Hiroshima\"\nmsgstr \"Хирошима\"\n\n#: jp/jp_prefectures.py:38\nmsgid \"Yamaguchi\"\nmsgstr \"Ямагучи\"\n\n#: jp/jp_prefectures.py:39\nmsgid \"Tokushima\"\nmsgstr \"Токушима\"\n\n#: jp/jp_prefectures.py:40\nmsgid \"Kagawa\"\nmsgstr \"Кагава\"\n\n#: jp/jp_prefectures.py:41\nmsgid \"Ehime\"\nmsgstr \"Ехиме\"\n\n#: jp/jp_prefectures.py:42\nmsgid \"Kochi\"\nmsgstr \"Кочи\"\n\n#: jp/jp_prefectures.py:43\nmsgid \"Fukuoka\"\nmsgstr \"Фукуока\"\n\n#: jp/jp_prefectures.py:44\nmsgid \"Saga\"\nmsgstr \"Сага\"\n\n#: jp/jp_prefectures.py:45\nmsgid \"Nagasaki\"\nmsgstr \"Нагазаки\"\n\n#: jp/jp_prefectures.py:46\nmsgid \"Kumamoto\"\nmsgstr \"Кумамото\"\n\n#: jp/jp_prefectures.py:47\nmsgid \"Oita\"\nmsgstr \"Оита\"\n\n#: jp/jp_prefectures.py:48\nmsgid \"Miyazaki\"\nmsgstr \"Миазаки\"\n\n#: jp/jp_prefectures.py:49\nmsgid \"Kagoshima\"\nmsgstr \"Кагошима\"\n\n#: jp/jp_prefectures.py:50\nmsgid \"Okinawa\"\nmsgstr \"Окинава\"\n\n#: kw/forms.py:27\nmsgid \"Enter a valid Kuwaiti Civil ID number\"\nmsgstr \"Въведете валиден кувейтски граждански номер\"\n\n#: mk/forms.py:18\nmsgid \"\"\n\"Identity card numbers must contain either 4 to 7 digits or an uppercase \"\n\"letter and 7 digits.\"\nmsgstr \"\"\n\n#: mk/forms.py:57 si/forms.py:24\nmsgid \"This field should contain exactly 13 digits.\"\nmsgstr \"Това поле трябва да съдържа точно 13 цифри.\"\n\n#: mk/forms.py:58\nmsgid \"The first 7 digits of the UMCN must represent a valid past date.\"\nmsgstr \"Първите 7 цифри на UMCN трябва да представлява валидна предходна дата.\"\n\n#: mk/forms.py:59\nmsgid \"The UMCN is not valid.\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:10\nmsgid \"Aerodrom\"\nmsgstr \"Аеродром\"\n\n#: mk/mk_choices.py:11\nmsgid \"Aračinovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:12\nmsgid \"Berovo\"\nmsgstr \"Берово\"\n\n#: mk/mk_choices.py:13\nmsgid \"Bitola\"\nmsgstr \"Битола\"\n\n#: mk/mk_choices.py:14\nmsgid \"Bogdanci\"\nmsgstr \"Богданци\"\n\n#: mk/mk_choices.py:15\nmsgid \"Bogovinje\"\nmsgstr \"Боговине\"\n\n#: mk/mk_choices.py:16\nmsgid \"Bosilovo\"\nmsgstr \"Босилово\"\n\n#: mk/mk_choices.py:17\nmsgid \"Brvenica\"\nmsgstr \"Брвеница\"\n\n#: mk/mk_choices.py:18\nmsgid \"Butel\"\nmsgstr \"Бутел\"\n\n#: mk/mk_choices.py:19\nmsgid \"Valandovo\"\nmsgstr \"Валандово\"\n\n#: mk/mk_choices.py:20\nmsgid \"Vasilevo\"\nmsgstr \"Василево\"\n\n#: mk/mk_choices.py:21\nmsgid \"Vevčani\"\nmsgstr \"Вевчани\"\n\n#: mk/mk_choices.py:22\nmsgid \"Veles\"\nmsgstr \"Велес\"\n\n#: mk/mk_choices.py:23\nmsgid \"Vinica\"\nmsgstr \"Виница\"\n\n#: mk/mk_choices.py:24\nmsgid \"Vraneštica\"\nmsgstr \"Вранещица\"\n\n#: mk/mk_choices.py:25\nmsgid \"Vrapčište\"\nmsgstr \"Врапчище\"\n\n#: mk/mk_choices.py:26\nmsgid \"Gazi Baba\"\nmsgstr \"Гази Баба\"\n\n#: mk/mk_choices.py:27\nmsgid \"Gevgelija\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:28\nmsgid \"Gostivar\"\nmsgstr \"Гостивар\"\n\n#: mk/mk_choices.py:29\nmsgid \"Gradsko\"\nmsgstr \"Градско\"\n\n#: mk/mk_choices.py:30\nmsgid \"Debar\"\nmsgstr \"Дебър\"\n\n#: mk/mk_choices.py:31\nmsgid \"Debarca\"\nmsgstr \"Дебарца\"\n\n#: mk/mk_choices.py:32\nmsgid \"Delčevo\"\nmsgstr \"Делчево\"\n\n#: mk/mk_choices.py:33\nmsgid \"Demir Kapija\"\nmsgstr \"Демир Капия\"\n\n#: mk/mk_choices.py:34\nmsgid \"Demir Hisar\"\nmsgstr \"Демир Хисар\"\n\n#: mk/mk_choices.py:35\nmsgid \"Dolneni\"\nmsgstr \"Долнени\"\n\n#: mk/mk_choices.py:36\nmsgid \"Drugovo\"\nmsgstr \"Другово\"\n\n#: mk/mk_choices.py:37\nmsgid \"Gjorče Petrov\"\nmsgstr \"Гьорце Петров\"\n\n#: mk/mk_choices.py:38\nmsgid \"Želino\"\nmsgstr \"Желино\"\n\n#: mk/mk_choices.py:39\nmsgid \"Zajas\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:40\nmsgid \"Zelenikovo\"\nmsgstr \"Зелениково\"\n\n#: mk/mk_choices.py:41\nmsgid \"Zrnovci\"\nmsgstr \"Зрновци\"\n\n#: mk/mk_choices.py:42\nmsgid \"Ilinden\"\nmsgstr \"Илинден\"\n\n#: mk/mk_choices.py:43\nmsgid \"Jegunovce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:44\nmsgid \"Kavadarci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:45\nmsgid \"Karbinci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:46\nmsgid \"Karpoš\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:47\nmsgid \"Kisela Voda\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:48\nmsgid \"Kičevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:49\nmsgid \"Konče\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:50\nmsgid \"Koćani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:51\nmsgid \"Kratovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:52\nmsgid \"Kriva Palanka\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:53\nmsgid \"Krivogaštani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:54\nmsgid \"Kruševo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:55\nmsgid \"Kumanovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:56\nmsgid \"Lipkovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:57\nmsgid \"Lozovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:58\nmsgid \"Mavrovo i Rostuša\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:59\nmsgid \"Makedonska Kamenica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:60\nmsgid \"Makedonski Brod\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:61\nmsgid \"Mogila\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:62\nmsgid \"Negotino\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:63\nmsgid \"Novaci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:64\nmsgid \"Novo Selo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:65\nmsgid \"Oslomej\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:66\nmsgid \"Ohrid\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:67\nmsgid \"Petrovec\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:68\nmsgid \"Pehčevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:69\nmsgid \"Plasnica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:70\nmsgid \"Prilep\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:71\nmsgid \"Probištip\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:72\nmsgid \"Radoviš\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:73\nmsgid \"Rankovce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:74\nmsgid \"Resen\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:75\nmsgid \"Rosoman\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:76\nmsgid \"Saraj\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:77\nmsgid \"Sveti Nikole\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:78\nmsgid \"Sopište\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:79\nmsgid \"Star Dojran\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:80\nmsgid \"Staro Nagoričane\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:81\nmsgid \"Struga\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:82\nmsgid \"Strumica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:83\nmsgid \"Studeničani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:84\nmsgid \"Tearce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:85\nmsgid \"Tetovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:86\nmsgid \"Centar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:87\nmsgid \"Centar-Župa\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:88\nmsgid \"Čair\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:89\nmsgid \"Čaška\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:90\nmsgid \"Češinovo-Obleševo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:91\nmsgid \"Čučer-Sandevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:92\nmsgid \"Štip\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:93\nmsgid \"Šuto Orizari\"\nmsgstr \"\"\n\n#: mk/models.py:11\nmsgid \"Macedonian identity card number\"\nmsgstr \"\"\n\n#: mk/models.py:25\nmsgid \"A Macedonian municipality (2 character code)\"\nmsgstr \"\"\n\n#: mk/models.py:35\nmsgid \"Unique master citizen number (13 digits)\"\nmsgstr \"\"\n\n#: mx/forms.py:67\nmsgid \"Enter a valid zip code in the format XXXXX.\"\nmsgstr \"Въведете валиден пощенски код във формат ХХХХХ.\"\n\n#: mx/forms.py:110\nmsgid \"Enter a valid RFC.\"\nmsgstr \"Въведете валиден RFC.\"\n\n#: mx/forms.py:111\nmsgid \"Invalid checksum for RFC.\"\nmsgstr \"\"\n\n#: mx/forms.py:191\nmsgid \"Enter a valid CURP.\"\nmsgstr \"Въведете валиден CURP.\"\n\n#: mx/forms.py:192\nmsgid \"Invalid checksum for CURP.\"\nmsgstr \"\"\n\n#: mx/models.py:14\nmsgid \"Mexico state (three uppercase letters)\"\nmsgstr \"\"\n\n#: mx/models.py:27\nmsgid \"Mexico zip code\"\nmsgstr \"Мексико пощенски код\"\n\n#: mx/models.py:44\nmsgid \"Mexican RFC\"\nmsgstr \"\"\n\n#: mx/models.py:61\nmsgid \"Mexican CURP\"\nmsgstr \"\"\n\n#: mx/mx_states.py:14\nmsgid \"Aguascalientes\"\nmsgstr \"Агуаскалиентес\"\n\n#: mx/mx_states.py:15\nmsgid \"Baja California\"\nmsgstr \"Долна Калифорния\"\n\n#: mx/mx_states.py:16\nmsgid \"Baja California Sur\"\nmsgstr \"Баха Калифорния Сур\"\n\n#: mx/mx_states.py:17\nmsgid \"Campeche\"\nmsgstr \"Кампече\"\n\n#: mx/mx_states.py:18\nmsgid \"Chihuahua\"\nmsgstr \"Чихуахуа\"\n\n#: mx/mx_states.py:19\nmsgid \"Chiapas\"\nmsgstr \"Чиапас\"\n\n#: mx/mx_states.py:20\nmsgid \"Coahuila\"\nmsgstr \"Coahuila\"\n\n#: mx/mx_states.py:21\nmsgid \"Colima\"\nmsgstr \"Colima\"\n\n#: mx/mx_states.py:22\nmsgid \"Distrito Federal\"\nmsgstr \"Distrito Federal\"\n\n#: mx/mx_states.py:23\nmsgid \"Durango\"\nmsgstr \"Durango\"\n\n#: mx/mx_states.py:24\nmsgid \"Guerrero\"\nmsgstr \"Гереро\"\n\n#: mx/mx_states.py:25\nmsgid \"Guanajuato\"\nmsgstr \"Гуанахуато\"\n\n#: mx/mx_states.py:26\nmsgid \"Hidalgo\"\nmsgstr \"Хидалго\"\n\n#: mx/mx_states.py:27\nmsgid \"Jalisco\"\nmsgstr \"Jalisco\"\n\n#: mx/mx_states.py:28\nmsgid \"Estado de México\"\nmsgstr \"Estado де Мексико\"\n\n#: mx/mx_states.py:29\nmsgid \"Michoacán\"\nmsgstr \"Мичоакан\"\n\n#: mx/mx_states.py:30\nmsgid \"Morelos\"\nmsgstr \"Morelos\"\n\n#: mx/mx_states.py:31\nmsgid \"Nayarit\"\nmsgstr \"Nayarit\"\n\n#: mx/mx_states.py:32\nmsgid \"Nuevo León\"\nmsgstr \"Нуево Леон\"\n\n#: mx/mx_states.py:33\nmsgid \"Oaxaca\"\nmsgstr \"Оаксака\"\n\n#: mx/mx_states.py:34\nmsgid \"Puebla\"\nmsgstr \"Пуебла\"\n\n#: mx/mx_states.py:35\nmsgid \"Querétaro\"\nmsgstr \"Querétaro\"\n\n#: mx/mx_states.py:36\nmsgid \"Quintana Roo\"\nmsgstr \"Кинтана Роо\"\n\n#: mx/mx_states.py:37\nmsgid \"Sinaloa\"\nmsgstr \"Синалоа\"\n\n#: mx/mx_states.py:38\nmsgid \"San Luis Potosí\"\nmsgstr \"Сан Луис Потоси\"\n\n#: mx/mx_states.py:39\nmsgid \"Sonora\"\nmsgstr \"Sonora\"\n\n#: mx/mx_states.py:40\nmsgid \"Tabasco\"\nmsgstr \"Табаско\"\n\n#: mx/mx_states.py:41\nmsgid \"Tamaulipas\"\nmsgstr \"Тамаулипас\"\n\n#: mx/mx_states.py:42\nmsgid \"Tlaxcala\"\nmsgstr \"Тласкала\"\n\n#: mx/mx_states.py:43\nmsgid \"Veracruz\"\nmsgstr \"Veracruz\"\n\n#: mx/mx_states.py:44\nmsgid \"Yucatán\"\nmsgstr \"Юкатан\"\n\n#: mx/mx_states.py:45\nmsgid \"Zacatecas\"\nmsgstr \"Закатекас\"\n\n#: nl/forms.py:26\nmsgid \"Enter a valid postal code\"\nmsgstr \"Въведете валиден пощенски код.\"\n\n#: nl/forms.py:82\nmsgid \"Enter a valid SoFi number\"\nmsgstr \"Въведете валиден SoFi номер\"\n\n#: nl/nl_provinces.py:4\nmsgid \"Drenthe\"\nmsgstr \"Дренте\"\n\n#: nl/nl_provinces.py:5\nmsgid \"Flevoland\"\nmsgstr \"Flevoland\"\n\n#: nl/nl_provinces.py:6\nmsgid \"Friesland\"\nmsgstr \"Friesland\"\n\n#: nl/nl_provinces.py:7\nmsgid \"Gelderland\"\nmsgstr \"Gelderland\"\n\n#: nl/nl_provinces.py:8\nmsgid \"Groningen\"\nmsgstr \"Грьонинген\"\n\n#: nl/nl_provinces.py:10\nmsgid \"Noord-Brabant\"\nmsgstr \"Noord-Brabant\"\n\n#: nl/nl_provinces.py:11\nmsgid \"Noord-Holland\"\nmsgstr \"Noord-Holland\"\n\n#: nl/nl_provinces.py:12\nmsgid \"Overijssel\"\nmsgstr \"Overijssel\"\n\n#: nl/nl_provinces.py:13\nmsgid \"Utrecht\"\nmsgstr \"Утрехт\"\n\n#: nl/nl_provinces.py:14\nmsgid \"Zeeland\"\nmsgstr \"Zeeland\"\n\n#: nl/nl_provinces.py:15\nmsgid \"Zuid-Holland\"\nmsgstr \"Zuid-Holland\"\n\n#: no/forms.py:39\nmsgid \"Enter a valid Norwegian social security number.\"\nmsgstr \"Въведете валиден норвежки номер на социалната осигуровка.\"\n\n#: pe/forms.py:28\nmsgid \"This field requires 8 digits.\"\nmsgstr \"Това поле изисква 8 цифри.\"\n\n#: pe/forms.py:56\nmsgid \"This field requires 11 digits.\"\nmsgstr \"Това поле изисква 11 цифри.\"\n\n#: pl/forms.py:42\nmsgid \"National Identification Number consists of 11 digits.\"\nmsgstr \"Националният индентификационен номер се състои от 11 цифри\"\n\n#: pl/forms.py:43\nmsgid \"Wrong checksum for the National Identification Number.\"\nmsgstr \"Грешна чексума за Националния индентификационен номер\"\n\n#: pl/forms.py:79\nmsgid \"National ID Card Number consists of 3 letters and 6 digits.\"\nmsgstr \"\"\n\n#: pl/forms.py:80\nmsgid \"Wrong checksum for the National ID Card Number.\"\nmsgstr \"\"\n\n#: pl/forms.py:131\nmsgid \"\"\n\"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or \"\n\"XXXXXXXXXX.\"\nmsgstr \"\"\n\"Въведете номер на данъчната сфера (NIP) във формат XXX-XXX-XX-XX, XXX-XX-XX-\"\n\"XXX или XXXXXXXXXX.\"\n\n#: pl/forms.py:132\nmsgid \"Wrong checksum for the Tax Number (NIP).\"\nmsgstr \"Грешна чексума за данъчен номер (НИП)\"\n\n#: pl/forms.py:171\nmsgid \"National Business Register Number (REGON) consists of 9 or 14 digits.\"\nmsgstr \"\"\n\"Национален търговски регистър номер (REGON) се състои от 9 или 14 цифри.\"\n\n#: pl/forms.py:172\nmsgid \"Wrong checksum for the National Business Register Number (REGON).\"\nmsgstr \"Грешна чексума за Националния Бизнес Регистрационен Номер (REGON)\"\n\n#: pl/forms.py:212\nmsgid \"Enter a postal code in the format XX-XXX.\"\nmsgstr \"Въведете пощенски код в формат XX-ХXXX.\"\n\n#: pl/pl_voivodeships.py:8\nmsgid \"Lower Silesia\"\nmsgstr \"Долна Силезия\"\n\n#: pl/pl_voivodeships.py:9\nmsgid \"Kuyavia-Pomerania\"\nmsgstr \"Kuyavia-Предна Померания\"\n\n#: pl/pl_voivodeships.py:10\nmsgid \"Lublin\"\nmsgstr \"Люблин\"\n\n#: pl/pl_voivodeships.py:11\nmsgid \"Lubusz\"\nmsgstr \"Любушко\"\n\n#: pl/pl_voivodeships.py:12\nmsgid \"Lodz\"\nmsgstr \"Лодз\"\n\n#: pl/pl_voivodeships.py:13\nmsgid \"Lesser Poland\"\nmsgstr \"Lesser Poland\"\n\n#: pl/pl_voivodeships.py:14\nmsgid \"Masovia\"\nmsgstr \"Masovia\"\n\n#: pl/pl_voivodeships.py:15\nmsgid \"Opole\"\nmsgstr \"Ополе\"\n\n#: pl/pl_voivodeships.py:16\nmsgid \"Subcarpatia\"\nmsgstr \"Subcarpatia\"\n\n#: pl/pl_voivodeships.py:17\nmsgid \"Podlasie\"\nmsgstr \"Podlasie\"\n\n#: pl/pl_voivodeships.py:18\nmsgid \"Pomerania\"\nmsgstr \"Померания\"\n\n#: pl/pl_voivodeships.py:19\nmsgid \"Silesia\"\nmsgstr \"Силезия\"\n\n#: pl/pl_voivodeships.py:20\nmsgid \"Swietokrzyskie\"\nmsgstr \"Swietokrzyskie\"\n\n#: pl/pl_voivodeships.py:21\nmsgid \"Warmia-Masuria\"\nmsgstr \"Warmia-Masuria\"\n\n#: pl/pl_voivodeships.py:22\nmsgid \"Greater Poland\"\nmsgstr \"Велика Полша\"\n\n#: pl/pl_voivodeships.py:23\nmsgid \"West Pomerania\"\nmsgstr \"Западна Померания\"\n\n#: pt/forms.py:19\nmsgid \"Enter a zip code in the format XXXX-XXX.\"\nmsgstr \"Въведете пощенски код в формат XXXX-XXX.\"\n\n#: pt/forms.py:39\nmsgid \"Phone numbers must have 9 digits, or start by + or 00.\"\nmsgstr \"Телефонните номера трябва да са 9 цифри, или започнете с + или 00.\"\n\n#: ro/forms.py:22\nmsgid \"Enter a valid CIF.\"\nmsgstr \"Въведете валиден CIF.\"\n\n#: ro/forms.py:59\nmsgid \"Enter a valid CNP.\"\nmsgstr \"Въведете валиден CNP.\"\n\n#: ro/forms.py:143\nmsgid \"Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format\"\nmsgstr \"Въведете валиден IBAN в RОXX-XXXX-XXXX-XXXX-XXXX-XXXX формат\"\n\n#: ro/forms.py:175\nmsgid \"Phone numbers must be in XXXX-XXXXXX format.\"\nmsgstr \"Телефонните номера трябва да са в XXXX-XXXXXX формат.\"\n\n#: ro/forms.py:200\nmsgid \"Enter a valid postal code in the format XXXXXX\"\nmsgstr \"Въведете валиден пощенски код в формат XXXXXX\"\n\n#: ru/forms.py:37\nmsgid \"Enter a postal code in the format XXXXXX.\"\nmsgstr \"\"\n\n#: ru/forms.py:50\nmsgid \"Enter a passport number in the format XXXX XXXXXX.\"\nmsgstr \"\"\n\n#: ru/forms.py:63\nmsgid \"Enter a passport number in the format XX XXXXXXX.\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:10\nmsgid \"Central Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:11\nmsgid \"South Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:12\nmsgid \"North-West Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:13\nmsgid \"Far-East Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:14\nmsgid \"Siberian Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:15\nmsgid \"Ural Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:16\nmsgid \"Privolzhsky Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:17\nmsgid \"North-Caucasian Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:21\nmsgid \"Moskva\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:22\nmsgid \"Saint-Peterburg\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:23\nmsgid \"Moskovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:24\nmsgid \"Adygeya, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:25\nmsgid \"Bashkortostan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:26\nmsgid \"Buryatia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:27\nmsgid \"Altay, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:28\nmsgid \"Dagestan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:29\nmsgid \"Ingushskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:30\nmsgid \"Kabardino-Balkarskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:31\nmsgid \"Kalmykia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:32\nmsgid \"Karachaevo-Cherkesskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:33\nmsgid \"Karelia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:34\nmsgid \"Komi, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:35\nmsgid \"Mariy Ehl, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:36\nmsgid \"Mordovia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:37\nmsgid \"Sakha, Respublika (Yakutiya)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:38\nmsgid \"Severnaya Osetia, Respublika (Alania)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:39\nmsgid \"Tatarstan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:40\nmsgid \"Tyva, Respublika (Tuva)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:41\nmsgid \"Udmurtskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:42\nmsgid \"Khakassiya, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:43\nmsgid \"Chechenskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:44\nmsgid \"Chuvashskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:45\nmsgid \"Altayskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:46\nmsgid \"Zabaykalskiy Kray\"\nmsgstr \"Забайкалский Край\"\n\n#: ru/ru_regions.py:47\nmsgid \"Kamchatskiy Kray\"\nmsgstr \"Камчатский Край\"\n\n#: ru/ru_regions.py:48\nmsgid \"Krasnodarskiy Kray\"\nmsgstr \"Краснодарский Край\"\n\n#: ru/ru_regions.py:49\nmsgid \"Krasnoyarskiy Kray\"\nmsgstr \"Красноярский Край\"\n\n#: ru/ru_regions.py:50\nmsgid \"Permskiy Kray\"\nmsgstr \"Пермский Край\"\n\n#: ru/ru_regions.py:51\nmsgid \"Primorskiy Kray\"\nmsgstr \"Приморский Край\"\n\n#: ru/ru_regions.py:52\nmsgid \"Stavropol'siyy Kray\"\nmsgstr \"Ставрополский Край\"\n\n#: ru/ru_regions.py:53\nmsgid \"Khabarovskiy Kray\"\nmsgstr \"Кабаровский Край\"\n\n#: ru/ru_regions.py:54\nmsgid \"Amurskaya oblast'\"\nmsgstr \"Амурска област\"\n\n#: ru/ru_regions.py:55\nmsgid \"Arkhangel'skaya oblast'\"\nmsgstr \"Архангелска област\"\n\n#: ru/ru_regions.py:56\nmsgid \"Astrakhanskaya oblast'\"\nmsgstr \"Астраханска област\"\n\n#: ru/ru_regions.py:57\nmsgid \"Belgorodskaya oblast'\"\nmsgstr \"Белгородска област\"\n\n#: ru/ru_regions.py:58\nmsgid \"Bryanskaya oblast'\"\nmsgstr \"Брянска област\"\n\n#: ru/ru_regions.py:59\nmsgid \"Vladimirskaya oblast'\"\nmsgstr \"Владимирска област\"\n\n#: ru/ru_regions.py:60\nmsgid \"Volgogradskaya oblast'\"\nmsgstr \"Волгоградска област\"\n\n#: ru/ru_regions.py:61\nmsgid \"Vologodskaya oblast'\"\nmsgstr \"Вологодска област\"\n\n#: ru/ru_regions.py:62\nmsgid \"Voronezhskaya oblast'\"\nmsgstr \"Воронежска област\"\n\n#: ru/ru_regions.py:63\nmsgid \"Ivanovskaya oblast'\"\nmsgstr \"Ивановска област\"\n\n#: ru/ru_regions.py:64\nmsgid \"Irkutskaya oblast'\"\nmsgstr \"Иркутска област\"\n\n#: ru/ru_regions.py:65\nmsgid \"Kaliningradskaya oblast'\"\nmsgstr \"Калининградска област\"\n\n#: ru/ru_regions.py:66\nmsgid \"Kaluzhskaya oblast'\"\nmsgstr \"Калужска област\"\n\n#: ru/ru_regions.py:67\nmsgid \"Kemerovskaya oblast'\"\nmsgstr \"Кемеровска област\"\n\n#: ru/ru_regions.py:68\nmsgid \"Kirovskaya oblast'\"\nmsgstr \"Кировска област\"\n\n#: ru/ru_regions.py:69\nmsgid \"Kostromskaya oblast'\"\nmsgstr \"Костромска област\"\n\n#: ru/ru_regions.py:70\nmsgid \"Kurganskaya oblast'\"\nmsgstr \"Курганска област\"\n\n#: ru/ru_regions.py:71\nmsgid \"Kurskaya oblast'\"\nmsgstr \"Курска област\"\n\n#: ru/ru_regions.py:72\nmsgid \"Leningradskaya oblast'\"\nmsgstr \"Ленинградска област\"\n\n#: ru/ru_regions.py:73\nmsgid \"Lipeckaya oblast'\"\nmsgstr \"Липечка област\"\n\n#: ru/ru_regions.py:74\nmsgid \"Magadanskaya oblast'\"\nmsgstr \"Магаданска област\"\n\n#: ru/ru_regions.py:75\nmsgid \"Murmanskaya oblast'\"\nmsgstr \"Мурманска област\"\n\n#: ru/ru_regions.py:76\nmsgid \"Nizhegorodskaja oblast'\"\nmsgstr \"Нижегородска област\"\n\n#: ru/ru_regions.py:77\nmsgid \"Novgorodskaya oblast'\"\nmsgstr \"Новгородска област\"\n\n#: ru/ru_regions.py:78\nmsgid \"Novosibirskaya oblast'\"\nmsgstr \"Новосибирска област\"\n\n#: ru/ru_regions.py:79\nmsgid \"Omskaya oblast'\"\nmsgstr \"Омска област\"\n\n#: ru/ru_regions.py:80\nmsgid \"Orenburgskaya oblast'\"\nmsgstr \"Оренбурска област\"\n\n#: ru/ru_regions.py:81\nmsgid \"Orlovskaya oblast'\"\nmsgstr \"Орловска област\"\n\n#: ru/ru_regions.py:82\nmsgid \"Penzenskaya oblast'\"\nmsgstr \"Пензенска област\"\n\n#: ru/ru_regions.py:83\nmsgid \"Pskovskaya oblast'\"\nmsgstr \"Псковска област\"\n\n#: ru/ru_regions.py:84\nmsgid \"Rostovskaya oblast'\"\nmsgstr \"Ростовска област\"\n\n#: ru/ru_regions.py:85\nmsgid \"Rjazanskaya oblast'\"\nmsgstr \"Рязанска област\"\n\n#: ru/ru_regions.py:86\nmsgid \"Samarskaya oblast'\"\nmsgstr \"Самарска област\"\n\n#: ru/ru_regions.py:87\nmsgid \"Saratovskaya oblast'\"\nmsgstr \"Саратовска област\"\n\n#: ru/ru_regions.py:88\nmsgid \"Sakhalinskaya oblast'\"\nmsgstr \"Сахалинска област\"\n\n#: ru/ru_regions.py:89\nmsgid \"Sverdlovskaya oblast'\"\nmsgstr \"Свредловска област\"\n\n#: ru/ru_regions.py:90\nmsgid \"Smolenskaya oblast'\"\nmsgstr \"Смоленска област\"\n\n#: ru/ru_regions.py:91\nmsgid \"Tambovskaya oblast'\"\nmsgstr \"Тамбовска област\"\n\n#: ru/ru_regions.py:92\nmsgid \"Tverskaya oblast'\"\nmsgstr \"Тверска област\"\n\n#: ru/ru_regions.py:93\nmsgid \"Tomskaya oblast'\"\nmsgstr \"Томска област\"\n\n#: ru/ru_regions.py:94\nmsgid \"Tul'skaya oblast'\"\nmsgstr \"Тулска област\"\n\n#: ru/ru_regions.py:95\nmsgid \"Tyumenskaya oblast'\"\nmsgstr \"Тюменска област\"\n\n#: ru/ru_regions.py:96\nmsgid \"Ul'ianovskaya oblast'\"\nmsgstr \"Уляновска област\"\n\n#: ru/ru_regions.py:97\nmsgid \"Chelyabinskaya oblast'\"\nmsgstr \"Челябинска област\"\n\n#: ru/ru_regions.py:98\nmsgid \"Yaroslavskaya oblast'\"\nmsgstr \"Ярославска област\"\n\n#: ru/ru_regions.py:99\nmsgid \"Evreyskaya avtonomnaja oblast'\"\nmsgstr \"Еврейска автономна област\"\n\n#: ru/ru_regions.py:100\nmsgid \"Neneckiy autonomnyy okrug\"\nmsgstr \"Ненечки автономен окръг\"\n\n#: ru/ru_regions.py:101\nmsgid \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:102\nmsgid \"Chukotskiy avtonomnyy okrug\"\nmsgstr \"Чукотский автономен окръг\"\n\n#: ru/ru_regions.py:103\nmsgid \"Yamalo-Neneckiy avtonomnyy okrug\"\nmsgstr \"Ямало-ненечки автономен окръг\"\n\n#: se/forms.py:54\nmsgid \"Enter a valid Swedish organisation number.\"\nmsgstr \"Въведете валиден шведски номер на организация.\"\n\n#: se/forms.py:111\nmsgid \"Enter a valid Swedish personal identity number.\"\nmsgstr \"Въведете валиден шведско ЕГН.\"\n\n#: se/forms.py:112\nmsgid \"Co-ordination numbers are not allowed.\"\nmsgstr \"Ко-ординационни номера не са позволени.\"\n\n#: se/forms.py:154\nmsgid \"Enter a Swedish postal code in the format XXXXX.\"\nmsgstr \"Въведете шведски пощенски код в формат XXXXX.\"\n\n#: se/se_counties.py:16\nmsgid \"Stockholm\"\nmsgstr \"Стокхолм\"\n\n#: se/se_counties.py:17\nmsgid \"Västerbotten\"\nmsgstr \"Västerbotten\"\n\n#: se/se_counties.py:18\nmsgid \"Norrbotten\"\nmsgstr \"Norrbotten\"\n\n#: se/se_counties.py:19\nmsgid \"Uppsala\"\nmsgstr \"Упсала\"\n\n#: se/se_counties.py:20\nmsgid \"Södermanland\"\nmsgstr \"Södermanland\"\n\n#: se/se_counties.py:21\nmsgid \"Östergötland\"\nmsgstr \"Östergötland\"\n\n#: se/se_counties.py:22\nmsgid \"Jönköping\"\nmsgstr \"Йонкьопинг\"\n\n#: se/se_counties.py:23\nmsgid \"Kronoberg\"\nmsgstr \"Kronoberg\"\n\n#: se/se_counties.py:24\nmsgid \"Kalmar\"\nmsgstr \"Kalmar\"\n\n#: se/se_counties.py:25\nmsgid \"Gotland\"\nmsgstr \"Готланд\"\n\n#: se/se_counties.py:26\nmsgid \"Blekinge\"\nmsgstr \"Блекинге\"\n\n#: se/se_counties.py:27\nmsgid \"Skåne\"\nmsgstr \"Скания\"\n\n#: se/se_counties.py:28\nmsgid \"Halland\"\nmsgstr \"Халанд\"\n\n#: se/se_counties.py:29\nmsgid \"Västra Götaland\"\nmsgstr \"Västra Götaland\"\n\n#: se/se_counties.py:30\nmsgid \"Värmland\"\nmsgstr \"Värmland\"\n\n#: se/se_counties.py:31\nmsgid \"Örebro\"\nmsgstr \"Örebro\"\n\n#: se/se_counties.py:32\nmsgid \"Västmanland\"\nmsgstr \"Västmanland\"\n\n#: se/se_counties.py:33\nmsgid \"Dalarna\"\nmsgstr \"Даларна\"\n\n#: se/se_counties.py:34\nmsgid \"Gävleborg\"\nmsgstr \"Gävleborg\"\n\n#: se/se_counties.py:35\nmsgid \"Västernorrland\"\nmsgstr \"Västernorrland\"\n\n#: se/se_counties.py:36\nmsgid \"Jämtland\"\nmsgstr \"Jämtland\"\n\n#: si/forms.py:25\nmsgid \"The first 7 digits of the EMSO must represent a valid past date.\"\nmsgstr \"Първите седем цифри на EMSO трябва да представлява валиден задна дата.\"\n\n#: si/forms.py:26\nmsgid \"The EMSO is not valid.\"\nmsgstr \"EMSO не е валиден.\"\n\n#: si/forms.py:86\nmsgid \"Enter a valid tax number in form SIXXXXXXXX\"\nmsgstr \"\"\n\n#: si/forms.py:151\nmsgid \"Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.\"\nmsgstr \"Въведете телефонния номер под формата +386XXXXXXXX или 0XXXXXXXX.\"\n\n#: sk/sk_districts.py:8\nmsgid \"Banska Bystrica\"\nmsgstr \"Банска Бистрица\"\n\n#: sk/sk_districts.py:9\nmsgid \"Banska Stiavnica\"\nmsgstr \"Банска Стиавница\"\n\n#: sk/sk_districts.py:10\nmsgid \"Bardejov\"\nmsgstr \"Bardejov\"\n\n#: sk/sk_districts.py:11\nmsgid \"Banovce nad Bebravou\"\nmsgstr \"Banovce NAD Bebravou\"\n\n#: sk/sk_districts.py:12\nmsgid \"Brezno\"\nmsgstr \"Brezno\"\n\n#: sk/sk_districts.py:13\nmsgid \"Bratislava I\"\nmsgstr \"Братислава I\"\n\n#: sk/sk_districts.py:14\nmsgid \"Bratislava II\"\nmsgstr \"Братислава II\"\n\n#: sk/sk_districts.py:15\nmsgid \"Bratislava III\"\nmsgstr \"Братислава III\"\n\n#: sk/sk_districts.py:16\nmsgid \"Bratislava IV\"\nmsgstr \"Братислава IV\"\n\n#: sk/sk_districts.py:17\nmsgid \"Bratislava V\"\nmsgstr \"Братислава V\"\n\n#: sk/sk_districts.py:18\nmsgid \"Bytca\"\nmsgstr \"Bytca\"\n\n#: sk/sk_districts.py:19\nmsgid \"Cadca\"\nmsgstr \"Čadca\"\n\n#: sk/sk_districts.py:20\nmsgid \"Detva\"\nmsgstr \"Detva\"\n\n#: sk/sk_districts.py:21\nmsgid \"Dolny Kubin\"\nmsgstr \"Долни Кубин\"\n\n#: sk/sk_districts.py:22\nmsgid \"Dunajska Streda\"\nmsgstr \"Dunajska Streda\"\n\n#: sk/sk_districts.py:23\nmsgid \"Galanta\"\nmsgstr \"Galanta\"\n\n#: sk/sk_districts.py:24\nmsgid \"Gelnica\"\nmsgstr \"Gelnica\"\n\n#: sk/sk_districts.py:25\nmsgid \"Hlohovec\"\nmsgstr \"Hlohovec\"\n\n#: sk/sk_districts.py:26\nmsgid \"Humenne\"\nmsgstr \"Humenne\"\n\n#: sk/sk_districts.py:27\nmsgid \"Ilava\"\nmsgstr \"Ilava\"\n\n#: sk/sk_districts.py:28\nmsgid \"Kezmarok\"\nmsgstr \"Kezmarok\"\n\n#: sk/sk_districts.py:29\nmsgid \"Komarno\"\nmsgstr \"Комарно\"\n\n#: sk/sk_districts.py:30\nmsgid \"Kosice I\"\nmsgstr \"Кошице I\"\n\n#: sk/sk_districts.py:31\nmsgid \"Kosice II\"\nmsgstr \"Кошице II\"\n\n#: sk/sk_districts.py:32\nmsgid \"Kosice III\"\nmsgstr \"Кошице III\"\n\n#: sk/sk_districts.py:33\nmsgid \"Kosice IV\"\nmsgstr \"Кошице IV\"\n\n#: sk/sk_districts.py:34\nmsgid \"Kosice - okolie\"\nmsgstr \"Кошице - okolie\"\n\n#: sk/sk_districts.py:35\nmsgid \"Krupina\"\nmsgstr \"Krupina\"\n\n#: sk/sk_districts.py:36\nmsgid \"Kysucke Nove Mesto\"\nmsgstr \"Нове Место Kysucke\"\n\n#: sk/sk_districts.py:37\nmsgid \"Levice\"\nmsgstr \"Levice\"\n\n#: sk/sk_districts.py:38\nmsgid \"Levoca\"\nmsgstr \"Levoca\"\n\n#: sk/sk_districts.py:39\nmsgid \"Liptovsky Mikulas\"\nmsgstr \"Липтовски Микулаш\"\n\n#: sk/sk_districts.py:40\nmsgid \"Lucenec\"\nmsgstr \"Lučenec\"\n\n#: sk/sk_districts.py:41\nmsgid \"Malacky\"\nmsgstr \"Malacky\"\n\n#: sk/sk_districts.py:42\nmsgid \"Martin\"\nmsgstr \"Мартин\"\n\n#: sk/sk_districts.py:43\nmsgid \"Medzilaborce\"\nmsgstr \"Medzilaborce\"\n\n#: sk/sk_districts.py:44\nmsgid \"Michalovce\"\nmsgstr \"Michalovce\"\n\n#: sk/sk_districts.py:45\nmsgid \"Myjava\"\nmsgstr \"Myjava\"\n\n#: sk/sk_districts.py:46\nmsgid \"Namestovo\"\nmsgstr \"Наместово\"\n\n#: sk/sk_districts.py:47\nmsgid \"Nitra\"\nmsgstr \"Нитра\"\n\n#: sk/sk_districts.py:48\nmsgid \"Nove Mesto nad Vahom\"\nmsgstr \"Нове Место NAD Vahom\"\n\n#: sk/sk_districts.py:49\nmsgid \"Nove Zamky\"\nmsgstr \"Nové Zámky\"\n\n#: sk/sk_districts.py:50\nmsgid \"Partizanske\"\nmsgstr \"Partizánske\"\n\n#: sk/sk_districts.py:51\nmsgid \"Pezinok\"\nmsgstr \"Pezinok\"\n\n#: sk/sk_districts.py:52\nmsgid \"Piestany\"\nmsgstr \"Piestany\"\n\n#: sk/sk_districts.py:53\nmsgid \"Poltar\"\nmsgstr \"Poltár\"\n\n#: sk/sk_districts.py:54\nmsgid \"Poprad\"\nmsgstr \"Попрад\"\n\n#: sk/sk_districts.py:55\nmsgid \"Povazska Bystrica\"\nmsgstr \"Povazska Бистрица\"\n\n#: sk/sk_districts.py:56\nmsgid \"Presov\"\nmsgstr \"Прешов\"\n\n#: sk/sk_districts.py:57\nmsgid \"Prievidza\"\nmsgstr \"Prievidza\"\n\n#: sk/sk_districts.py:58\nmsgid \"Puchov\"\nmsgstr \"Púchov\"\n\n#: sk/sk_districts.py:59\nmsgid \"Revuca\"\nmsgstr \"Revuca\"\n\n#: sk/sk_districts.py:60\nmsgid \"Rimavska Sobota\"\nmsgstr \"Rimavska Sobota\"\n\n#: sk/sk_districts.py:61\nmsgid \"Roznava\"\nmsgstr \"Rožňava\"\n\n#: sk/sk_districts.py:62\nmsgid \"Ruzomberok\"\nmsgstr \"Ruzomberok\"\n\n#: sk/sk_districts.py:63\nmsgid \"Sabinov\"\nmsgstr \"Събинов\"\n\n#: sk/sk_districts.py:64\nmsgid \"Senec\"\nmsgstr \"Сенец\"\n\n#: sk/sk_districts.py:65\nmsgid \"Senica\"\nmsgstr \"Senica\"\n\n#: sk/sk_districts.py:66\nmsgid \"Skalica\"\nmsgstr \"Скалица\"\n\n#: sk/sk_districts.py:67\nmsgid \"Snina\"\nmsgstr \"Snina\"\n\n#: sk/sk_districts.py:68\nmsgid \"Sobrance\"\nmsgstr \"Sobrance\"\n\n#: sk/sk_districts.py:69\nmsgid \"Spisska Nova Ves\"\nmsgstr \"Spisska Nova Ves\"\n\n#: sk/sk_districts.py:70\nmsgid \"Stara Lubovna\"\nmsgstr \"Стара Lubovna\"\n\n#: sk/sk_districts.py:71\nmsgid \"Stropkov\"\nmsgstr \"Stropkov\"\n\n#: sk/sk_districts.py:72\nmsgid \"Svidnik\"\nmsgstr \"Svidnik\"\n\n#: sk/sk_districts.py:73\nmsgid \"Sala\"\nmsgstr \"Sala\"\n\n#: sk/sk_districts.py:74\nmsgid \"Topolcany\"\nmsgstr \"Topolcany\"\n\n#: sk/sk_districts.py:75\nmsgid \"Trebisov\"\nmsgstr \"Trebišov\"\n\n#: sk/sk_districts.py:76\nmsgid \"Trencin\"\nmsgstr \"Тренчин\"\n\n#: sk/sk_districts.py:77\nmsgid \"Trnava\"\nmsgstr \"Търнава\"\n\n#: sk/sk_districts.py:78\nmsgid \"Turcianske Teplice\"\nmsgstr \"Turčianske Teplice\"\n\n#: sk/sk_districts.py:79\nmsgid \"Tvrdosin\"\nmsgstr \"Tvrdosin\"\n\n#: sk/sk_districts.py:80\nmsgid \"Velky Krtis\"\nmsgstr \"Veľký Krtíš\"\n\n#: sk/sk_districts.py:81\nmsgid \"Vranov nad Toplou\"\nmsgstr \"Вранов над Toplou\"\n\n#: sk/sk_districts.py:82\nmsgid \"Zlate Moravce\"\nmsgstr \"Zlate Moravce\"\n\n#: sk/sk_districts.py:83\nmsgid \"Zvolen\"\nmsgstr \"Зволен\"\n\n#: sk/sk_districts.py:84\nmsgid \"Zarnovica\"\nmsgstr \"Žarnovica\"\n\n#: sk/sk_districts.py:85\nmsgid \"Ziar nad Hronom\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:86\nmsgid \"Zilina\"\nmsgstr \"Жилина\"\n\n#: sk/sk_regions.py:8\nmsgid \"Banska Bystrica region\"\nmsgstr \"Банска Бистрица регион\"\n\n#: sk/sk_regions.py:9\nmsgid \"Bratislava region\"\nmsgstr \"Братислава регион\"\n\n#: sk/sk_regions.py:10\nmsgid \"Kosice region\"\nmsgstr \"Кошице регион\"\n\n#: sk/sk_regions.py:11\nmsgid \"Nitra region\"\nmsgstr \"Нитра регион\"\n\n#: sk/sk_regions.py:12\nmsgid \"Presov region\"\nmsgstr \"Прешов регион\"\n\n#: sk/sk_regions.py:13\nmsgid \"Trencin region\"\nmsgstr \"Тренчин регион\"\n\n#: sk/sk_regions.py:14\nmsgid \"Trnava region\"\nmsgstr \"Търнава регион\"\n\n#: sk/sk_regions.py:15\nmsgid \"Zilina region\"\nmsgstr \"Жилина регион\"\n\n#: tr/forms.py:21\nmsgid \"Enter a postal code in the format XXXXX.\"\nmsgstr \"Въведете пощенски код в формат XXXXX.\"\n\n#: tr/forms.py:42\nmsgid \"Phone numbers must be in 0XXX XXX XXXX format.\"\nmsgstr \"Телефонните номера трябва да са в 0XXX XXX формат XXXX.\"\n\n#: tr/forms.py:69\nmsgid \"Enter a valid Turkish Identification number.\"\nmsgstr \"Въведете валиден турски идентификационен номер.\"\n\n#: tr/forms.py:70\nmsgid \"Turkish Identification number must be 11 digits.\"\nmsgstr \"Турски Идентификационен номер трябва да бъде 11 цифри.\"\n\n#: us/forms.py:21\nmsgid \"Enter a zip code in the format XXXXX or XXXXX-XXXX.\"\nmsgstr \"Въведете zip код в формат XXXXX или XXXXX-XXXX.\"\n\n#: us/forms.py:59\nmsgid \"Enter a valid U.S. Social Security number in XXX-XX-XXXX format.\"\nmsgstr \"Въведете валиден номер на социалната осигуровка в формат XXX-XX-XXXX.\"\n\n#: us/forms.py:92\nmsgid \"Enter a U.S. state or territory.\"\nmsgstr \"Въведете американския щат или територия.\"\n\n#: us/models.py:8\nmsgid \"U.S. state (two uppercase letters)\"\nmsgstr \"американски щат (две главни букви)\"\n\n#: us/models.py:17\nmsgid \"U.S. postal code (two uppercase letters)\"\nmsgstr \"САЩ пощенски код (две главни букви)\"\n\n#: us/models.py:26\nmsgid \"Phone number\"\nmsgstr \"Телефонен номер\"\n\n#: uy/forms.py:29\nmsgid \"Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.\"\nmsgstr \"\"\n\"Въведете валиден номер CI в X.XXX.XXX-X, XXXXXXX-X или XXXXXXXX формат.\"\n\n#: uy/forms.py:31\nmsgid \"Enter a valid CI number.\"\nmsgstr \"Въведете валиден CI номер.\"\n\n#: za/forms.py:22\nmsgid \"Enter a valid South African ID number\"\nmsgstr \"Въведете валиден южно-африкански номер за индентификация\"\n\n#: za/forms.py:56\nmsgid \"Enter a valid South African postal code\"\nmsgstr \"Въведете валиден пощенски код за Южна Африка\"\n\n#: za/za_provinces.py:4\nmsgid \"Eastern Cape\"\nmsgstr \"Източен Кейп\"\n\n#: za/za_provinces.py:5\nmsgid \"Free State\"\nmsgstr \"Свободната държава\"\n\n#: za/za_provinces.py:6\nmsgid \"Gauteng\"\nmsgstr \"Гаутенг\"\n\n#: za/za_provinces.py:7\nmsgid \"KwaZulu-Natal\"\nmsgstr \"Квазулу-Натал\"\n\n#: za/za_provinces.py:8\nmsgid \"Limpopo\"\nmsgstr \"Лимпопо\"\n\n#: za/za_provinces.py:9\nmsgid \"Mpumalanga\"\nmsgstr \"Мпумаланга\"\n\n#: za/za_provinces.py:10\nmsgid \"Northern Cape\"\nmsgstr \"Northern Cape\"\n\n#: za/za_provinces.py:11\nmsgid \"North West\"\nmsgstr \"North West\"\n\n#: za/za_provinces.py:12\nmsgid \"Western Cape\"\nmsgstr \"Western Cape\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/locale/bn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Translators:\n#  <anubhab91@gmail.com>, 2013.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <rafi.tahmid@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2013-02-20 14:00+0000\\n\"\n\"Last-Translator: anubhab91 <anubhab91@gmail.com>\\n\"\n\"Language-Team: Bengali (http://www.transifex.com/projects/p/django/language/\"\n\"bn/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: bn\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: ar/forms.py:30\nmsgid \"Enter a postal code in the format NNNN or ANNNNAAA.\"\nmsgstr \"সসসস অথবা এসসসসএএএ আকারে পোস্টাল কোড লিখুন।\"\n\n#: ar/forms.py:52 br/forms.py:95 br/forms.py:134 pe/forms.py:27 pe/forms.py:55\nmsgid \"This field requires only numbers.\"\nmsgstr \"এই এলাকায় কেবল সংখ্যা দেওয়া যাবে।\"\n\n#: ar/forms.py:53\nmsgid \"This field requires 7 or 8 digits.\"\nmsgstr \"এই এলাকায় কেবল সংখ্যা দেওয়া যাবে।\"\n\n#: ar/forms.py:82\nmsgid \"Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.\"\nmsgstr \"\"\n\n#: ar/forms.py:83\nmsgid \"Invalid CUIT.\"\nmsgstr \"CUIT বৈধ নয়\"\n\n#: ar/forms.py:84\nmsgid \"Invalid legal type. Type must be 27, 20, 23 or 30.\"\nmsgstr \"\"\n\n#: at/at_states.py:5\nmsgid \"Burgenland\"\nmsgstr \"বার্গেনল্যাণ্ড\"\n\n#: at/at_states.py:6\nmsgid \"Carinthia\"\nmsgstr \"ক্যারিন্থিয়া\"\n\n#: at/at_states.py:7\nmsgid \"Lower Austria\"\nmsgstr \"নিম্ন অস্ট্রিয়া\"\n\n#: at/at_states.py:8\nmsgid \"Upper Austria\"\nmsgstr \"উচ্চ অস্ট্রিয়া\"\n\n#: at/at_states.py:9\nmsgid \"Salzburg\"\nmsgstr \"সলৎবুর্গ\"\n\n#: at/at_states.py:10\nmsgid \"Styria\"\nmsgstr \"সিরিয়া\"\n\n#: at/at_states.py:11\nmsgid \"Tyrol\"\nmsgstr \"টাইরোল\"\n\n#: at/at_states.py:12\nmsgid \"Vorarlberg\"\nmsgstr \"\"\n\n#: at/at_states.py:13\nmsgid \"Vienna\"\nmsgstr \"ভিয়েনা\"\n\n#: at/forms.py:22 ch/forms.py:22 no/forms.py:19\nmsgid \"Enter a zip code in the format XXXX.\"\nmsgstr \"নননন আকারে জীপ কোড লিখুন।\"\n\n#: at/forms.py:50\nmsgid \"Enter a valid Austrian Social Security Number in XXXX XXXXXX format.\"\nmsgstr \"\"\n\n#: au/forms.py:26\nmsgid \"Enter a 4 digit postcode.\"\nmsgstr \"\"\n\n#: au/models.py:9\nmsgid \"Australian State\"\nmsgstr \"\"\n\n#: au/models.py:19\nmsgid \"Australian Postcode\"\nmsgstr \"\"\n\n#: au/models.py:33\nmsgid \"Australian Phone number\"\nmsgstr \"\"\n\n#: be/be_provinces.py:5\nmsgid \"Antwerp\"\nmsgstr \"\"\n\n#: be/be_provinces.py:6\nmsgid \"Brussels\"\nmsgstr \"ব্রাসেলস\"\n\n#: be/be_provinces.py:7\nmsgid \"East Flanders\"\nmsgstr \"\"\n\n#: be/be_provinces.py:8\nmsgid \"Flemish Brabant\"\nmsgstr \"\"\n\n#: be/be_provinces.py:9\nmsgid \"Hainaut\"\nmsgstr \"\"\n\n#: be/be_provinces.py:10\nmsgid \"Liege\"\nmsgstr \"\"\n\n#: be/be_provinces.py:11 nl/nl_provinces.py:9\nmsgid \"Limburg\"\nmsgstr \"\"\n\n#: be/be_provinces.py:12\nmsgid \"Luxembourg\"\nmsgstr \"লুক্সেমবার্গ\"\n\n#: be/be_provinces.py:13\nmsgid \"Namur\"\nmsgstr \"\"\n\n#: be/be_provinces.py:14\nmsgid \"Walloon Brabant\"\nmsgstr \"\"\n\n#: be/be_provinces.py:15\nmsgid \"West Flanders\"\nmsgstr \"\"\n\n#: be/be_regions.py:5\nmsgid \"Brussels Capital Region\"\nmsgstr \"\"\n\n#: be/be_regions.py:6\nmsgid \"Flemish Region\"\nmsgstr \"\"\n\n#: be/be_regions.py:7\nmsgid \"Wallonia\"\nmsgstr \"\"\n\n#: be/forms.py:25\nmsgid \"Enter a valid postal code in the range and format 1XXX - 9XXX.\"\nmsgstr \"\"\n\n#: be/forms.py:48\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\nmsgstr \"\"\n\n#: br/forms.py:22\nmsgid \"Enter a zip code in the format XXXXX-XXX.\"\nmsgstr \"\"\n\n#: br/forms.py:31\nmsgid \"Phone numbers must be in XX-XXXX-XXXX format.\"\nmsgstr \"\"\n\n#: br/forms.py:58\nmsgid \"\"\n\"Select a valid brazilian state. That state is not one of the available \"\n\"states.\"\nmsgstr \"\"\n\n#: br/forms.py:93\nmsgid \"Invalid CPF number.\"\nmsgstr \"CPF নম্বর বৈধ নয়\"\n\n#: br/forms.py:94\nmsgid \"This field requires at most 11 digits or 14 characters.\"\nmsgstr \"\"\n\n#: br/forms.py:133\nmsgid \"Invalid CNPJ number.\"\nmsgstr \"CNPJ নম্বর বৈধ নয়\"\n\n#: br/forms.py:135\nmsgid \"This field requires at least 14 digits\"\nmsgstr \"এই ফিল্ডের মান কমপক্ষে ১৪ অঙ্কের হতে হবে\"\n\n#: ca/forms.py:29\nmsgid \"Enter a postal code in the format XXX XXX.\"\nmsgstr \"\"\n\n#: ca/forms.py:47 us/forms.py:30\nmsgid \"Phone numbers must be in XXX-XXX-XXXX format.\"\nmsgstr \"\"\n\n#: ca/forms.py:69\nmsgid \"Enter a Canadian province or territory.\"\nmsgstr \"\"\n\n#: ca/forms.py:110\nmsgid \"Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.\"\nmsgstr \"\"\n\n#: ch/ch_states.py:5\nmsgid \"Aargau\"\nmsgstr \"\"\n\n#: ch/ch_states.py:6\nmsgid \"Appenzell Innerrhoden\"\nmsgstr \"\"\n\n#: ch/ch_states.py:7\nmsgid \"Appenzell Ausserrhoden\"\nmsgstr \"\"\n\n#: ch/ch_states.py:8\nmsgid \"Basel-Stadt\"\nmsgstr \"\"\n\n#: ch/ch_states.py:9\nmsgid \"Basel-Land\"\nmsgstr \"\"\n\n#: ch/ch_states.py:10\nmsgid \"Berne\"\nmsgstr \"\"\n\n#: ch/ch_states.py:11\nmsgid \"Fribourg\"\nmsgstr \"\"\n\n#: ch/ch_states.py:12\nmsgid \"Geneva\"\nmsgstr \"জেনেভা\"\n\n#: ch/ch_states.py:13\nmsgid \"Glarus\"\nmsgstr \"\"\n\n#: ch/ch_states.py:14\nmsgid \"Graubuenden\"\nmsgstr \"\"\n\n#: ch/ch_states.py:15\nmsgid \"Jura\"\nmsgstr \"\"\n\n#: ch/ch_states.py:16\nmsgid \"Lucerne\"\nmsgstr \"\"\n\n#: ch/ch_states.py:17\nmsgid \"Neuchatel\"\nmsgstr \"\"\n\n#: ch/ch_states.py:18\nmsgid \"Nidwalden\"\nmsgstr \"\"\n\n#: ch/ch_states.py:19\nmsgid \"Obwalden\"\nmsgstr \"\"\n\n#: ch/ch_states.py:20\nmsgid \"Schaffhausen\"\nmsgstr \"\"\n\n#: ch/ch_states.py:21\nmsgid \"Schwyz\"\nmsgstr \"\"\n\n#: ch/ch_states.py:22\nmsgid \"Solothurn\"\nmsgstr \"\"\n\n#: ch/ch_states.py:23\nmsgid \"St. Gallen\"\nmsgstr \"\"\n\n#: ch/ch_states.py:24\nmsgid \"Thurgau\"\nmsgstr \"\"\n\n#: ch/ch_states.py:25\nmsgid \"Ticino\"\nmsgstr \"\"\n\n#: ch/ch_states.py:26\nmsgid \"Uri\"\nmsgstr \"\"\n\n#: ch/ch_states.py:27\nmsgid \"Valais\"\nmsgstr \"\"\n\n#: ch/ch_states.py:28\nmsgid \"Vaud\"\nmsgstr \"\"\n\n#: ch/ch_states.py:29\nmsgid \"Zug\"\nmsgstr \"\"\n\n#: ch/ch_states.py:30\nmsgid \"Zurich\"\nmsgstr \"জুরিখ\"\n\n#: ch/forms.py:37\nmsgid \"Phone numbers must be in 0XX XXX XX XX format.\"\nmsgstr \"\"\n\n#: ch/forms.py:68\nmsgid \"\"\n\"Enter a valid Swiss identity or passport card number in X1234567<0 or \"\n\"1234567890 format.\"\nmsgstr \"\"\n\n#: cl/forms.py:32\nmsgid \"Enter a valid Chilean RUT.\"\nmsgstr \"\"\n\n#: cl/forms.py:33\nmsgid \"Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.\"\nmsgstr \"\"\n\n#: cl/forms.py:34\nmsgid \"The Chilean RUT is not valid.\"\nmsgstr \"চিলিয়ান RUT টি বৈধ নয়\"\n\n#: cn/forms.py:84\nmsgid \"Enter a post code in the format XXXXXX.\"\nmsgstr \"\"\n\n#: cn/forms.py:105\nmsgid \"ID Card Number consists of 15 or 18 digits.\"\nmsgstr \"\"\n\n#: cn/forms.py:106\nmsgid \"Invalid ID Card Number: Wrong checksum\"\nmsgstr \"\"\n\n#: cn/forms.py:107\nmsgid \"Invalid ID Card Number: Wrong birthdate\"\nmsgstr \"\"\n\n#: cn/forms.py:108\nmsgid \"Invalid ID Card Number: Wrong location code\"\nmsgstr \"\"\n\n#: cn/forms.py:193\nmsgid \"Enter a valid phone number.\"\nmsgstr \"\"\n\n#: cn/forms.py:210\nmsgid \"Enter a valid cell number.\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:8\nmsgid \"Prague\"\nmsgstr \"প্রাগ\"\n\n#: cz/cz_regions.py:9\nmsgid \"Central Bohemian Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:10\nmsgid \"South Bohemian Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:11\nmsgid \"Pilsen Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:12\nmsgid \"Carlsbad Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:13\nmsgid \"Usti Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:14\nmsgid \"Liberec Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:15\nmsgid \"Hradec Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:16\nmsgid \"Pardubice Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:17\nmsgid \"Vysocina Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:18\nmsgid \"South Moravian Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:19\nmsgid \"Olomouc Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:20\nmsgid \"Zlin Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:21\nmsgid \"Moravian-Silesian Region\"\nmsgstr \"\"\n\n#: cz/forms.py:32 sk/forms.py:33\nmsgid \"Enter a postal code in the format XXXXX or XXX XX.\"\nmsgstr \"\"\n\n#: cz/forms.py:52\nmsgid \"Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.\"\nmsgstr \"\"\n\n#: cz/forms.py:53\nmsgid \"Enter a valid birth number.\"\nmsgstr \"\"\n\n#: cz/forms.py:102\nmsgid \"Enter a valid IC number.\"\nmsgstr \"\"\n\n#: de/de_states.py:5\nmsgid \"Baden-Wuerttemberg\"\nmsgstr \"\"\n\n#: de/de_states.py:6\nmsgid \"Bavaria\"\nmsgstr \"ব্যাভারিয়া\"\n\n#: de/de_states.py:7\nmsgid \"Berlin\"\nmsgstr \"বার্লিন\"\n\n#: de/de_states.py:8\nmsgid \"Brandenburg\"\nmsgstr \"\"\n\n#: de/de_states.py:9\nmsgid \"Bremen\"\nmsgstr \"\"\n\n#: de/de_states.py:10\nmsgid \"Hamburg\"\nmsgstr \"হামবুর্গ\"\n\n#: de/de_states.py:11\nmsgid \"Hessen\"\nmsgstr \"\"\n\n#: de/de_states.py:12\nmsgid \"Mecklenburg-Western Pomerania\"\nmsgstr \"\"\n\n#: de/de_states.py:13\nmsgid \"Lower Saxony\"\nmsgstr \"\"\n\n#: de/de_states.py:14\nmsgid \"North Rhine-Westphalia\"\nmsgstr \"\"\n\n#: de/de_states.py:15\nmsgid \"Rhineland-Palatinate\"\nmsgstr \"\"\n\n#: de/de_states.py:16\nmsgid \"Saarland\"\nmsgstr \"\"\n\n#: de/de_states.py:17\nmsgid \"Saxony\"\nmsgstr \"\"\n\n#: de/de_states.py:18\nmsgid \"Saxony-Anhalt\"\nmsgstr \"\"\n\n#: de/de_states.py:19\nmsgid \"Schleswig-Holstein\"\nmsgstr \"\"\n\n#: de/de_states.py:20\nmsgid \"Thuringia\"\nmsgstr \"\"\n\n#: de/forms.py:20 fi/forms.py:18 fr/forms.py:20\nmsgid \"Enter a zip code in the format XXXXX.\"\nmsgstr \"\"\n\n#: de/forms.py:46\nmsgid \"\"\n\"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"format.\"\nmsgstr \"\"\n\n#: es/es_provinces.py:5\nmsgid \"Araba\"\nmsgstr \"\"\n\n#: es/es_provinces.py:6\nmsgid \"Albacete\"\nmsgstr \"\"\n\n#: es/es_provinces.py:7\nmsgid \"Alacant\"\nmsgstr \"\"\n\n#: es/es_provinces.py:8\nmsgid \"Almeria\"\nmsgstr \"\"\n\n#: es/es_provinces.py:9\nmsgid \"Avila\"\nmsgstr \"\"\n\n#: es/es_provinces.py:10\nmsgid \"Badajoz\"\nmsgstr \"\"\n\n#: es/es_provinces.py:11\nmsgid \"Illes Balears\"\nmsgstr \"\"\n\n#: es/es_provinces.py:12\nmsgid \"Barcelona\"\nmsgstr \"বার্সেলোনা\"\n\n#: es/es_provinces.py:13\nmsgid \"Burgos\"\nmsgstr \"\"\n\n#: es/es_provinces.py:14\nmsgid \"Caceres\"\nmsgstr \"\"\n\n#: es/es_provinces.py:15\nmsgid \"Cadiz\"\nmsgstr \"\"\n\n#: es/es_provinces.py:16\nmsgid \"Castello\"\nmsgstr \"\"\n\n#: es/es_provinces.py:17\nmsgid \"Ciudad Real\"\nmsgstr \"\"\n\n#: es/es_provinces.py:18\nmsgid \"Cordoba\"\nmsgstr \"\"\n\n#: es/es_provinces.py:19\nmsgid \"A Coruna\"\nmsgstr \"\"\n\n#: es/es_provinces.py:20\nmsgid \"Cuenca\"\nmsgstr \"\"\n\n#: es/es_provinces.py:21\nmsgid \"Girona\"\nmsgstr \"\"\n\n#: es/es_provinces.py:22\nmsgid \"Granada\"\nmsgstr \"গ্রানাডা\"\n\n#: es/es_provinces.py:23\nmsgid \"Guadalajara\"\nmsgstr \"\"\n\n#: es/es_provinces.py:24\nmsgid \"Guipuzkoa\"\nmsgstr \"\"\n\n#: es/es_provinces.py:25\nmsgid \"Huelva\"\nmsgstr \"\"\n\n#: es/es_provinces.py:26\nmsgid \"Huesca\"\nmsgstr \"\"\n\n#: es/es_provinces.py:27\nmsgid \"Jaen\"\nmsgstr \"\"\n\n#: es/es_provinces.py:28\nmsgid \"Leon\"\nmsgstr \"\"\n\n#: es/es_provinces.py:29\nmsgid \"Lleida\"\nmsgstr \"\"\n\n#: es/es_provinces.py:30 es/es_regions.py:17\nmsgid \"La Rioja\"\nmsgstr \"\"\n\n#: es/es_provinces.py:31\nmsgid \"Lugo\"\nmsgstr \"\"\n\n#: es/es_provinces.py:32 es/es_regions.py:18\nmsgid \"Madrid\"\nmsgstr \"মাদ্রিদ\"\n\n#: es/es_provinces.py:33\nmsgid \"Malaga\"\nmsgstr \"\"\n\n#: es/es_provinces.py:34\nmsgid \"Murcia\"\nmsgstr \"\"\n\n#: es/es_provinces.py:35\nmsgid \"Navarre\"\nmsgstr \"\"\n\n#: es/es_provinces.py:36\nmsgid \"Ourense\"\nmsgstr \"\"\n\n#: es/es_provinces.py:37\nmsgid \"Asturias\"\nmsgstr \"\"\n\n#: es/es_provinces.py:38\nmsgid \"Palencia\"\nmsgstr \"\"\n\n#: es/es_provinces.py:39\nmsgid \"Las Palmas\"\nmsgstr \"\"\n\n#: es/es_provinces.py:40\nmsgid \"Pontevedra\"\nmsgstr \"\"\n\n#: es/es_provinces.py:41\nmsgid \"Salamanca\"\nmsgstr \"\"\n\n#: es/es_provinces.py:42\nmsgid \"Santa Cruz de Tenerife\"\nmsgstr \"\"\n\n#: es/es_provinces.py:43 es/es_regions.py:11\nmsgid \"Cantabria\"\nmsgstr \"\"\n\n#: es/es_provinces.py:44\nmsgid \"Segovia\"\nmsgstr \"\"\n\n#: es/es_provinces.py:45\nmsgid \"Seville\"\nmsgstr \"\"\n\n#: es/es_provinces.py:46\nmsgid \"Soria\"\nmsgstr \"\"\n\n#: es/es_provinces.py:47\nmsgid \"Tarragona\"\nmsgstr \"\"\n\n#: es/es_provinces.py:48\nmsgid \"Teruel\"\nmsgstr \"\"\n\n#: es/es_provinces.py:49\nmsgid \"Toledo\"\nmsgstr \"\"\n\n#: es/es_provinces.py:50\nmsgid \"Valencia\"\nmsgstr \"ভ্যালেন্সিয়া\"\n\n#: es/es_provinces.py:51\nmsgid \"Valladolid\"\nmsgstr \"ভ্যালাদোলিদ\"\n\n#: es/es_provinces.py:52\nmsgid \"Bizkaia\"\nmsgstr \"\"\n\n#: es/es_provinces.py:53\nmsgid \"Zamora\"\nmsgstr \"\"\n\n#: es/es_provinces.py:54\nmsgid \"Zaragoza\"\nmsgstr \"\"\n\n#: es/es_provinces.py:55\nmsgid \"Ceuta\"\nmsgstr \"\"\n\n#: es/es_provinces.py:56\nmsgid \"Melilla\"\nmsgstr \"\"\n\n#: es/es_regions.py:5\nmsgid \"Andalusia\"\nmsgstr \"আন্দালুসিয়া\"\n\n#: es/es_regions.py:6\nmsgid \"Aragon\"\nmsgstr \"\"\n\n#: es/es_regions.py:7\nmsgid \"Principality of Asturias\"\nmsgstr \"\"\n\n#: es/es_regions.py:8\nmsgid \"Balearic Islands\"\nmsgstr \"\"\n\n#: es/es_regions.py:9\nmsgid \"Basque Country\"\nmsgstr \"\"\n\n#: es/es_regions.py:10\nmsgid \"Canary Islands\"\nmsgstr \"\"\n\n#: es/es_regions.py:12\nmsgid \"Castile-La Mancha\"\nmsgstr \"\"\n\n#: es/es_regions.py:13\nmsgid \"Castile and Leon\"\nmsgstr \"\"\n\n#: es/es_regions.py:14\nmsgid \"Catalonia\"\nmsgstr \"\"\n\n#: es/es_regions.py:15\nmsgid \"Extremadura\"\nmsgstr \"\"\n\n#: es/es_regions.py:16\nmsgid \"Galicia\"\nmsgstr \"\"\n\n#: es/es_regions.py:19\nmsgid \"Region of Murcia\"\nmsgstr \"\"\n\n#: es/es_regions.py:20\nmsgid \"Foral Community of Navarre\"\nmsgstr \"\"\n\n#: es/es_regions.py:21\nmsgid \"Valencian Community\"\nmsgstr \"\"\n\n#: es/forms.py:26\nmsgid \"Enter a valid postal code in the range and format 01XXX - 52XXX.\"\nmsgstr \"\"\n\n#: es/forms.py:46\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or \"\n\"9XXXXXXXX.\"\nmsgstr \"\"\n\n#: es/forms.py:73\nmsgid \"Please enter a valid NIF, NIE, or CIF.\"\nmsgstr \" একটি বৈধ NIF, NIE অথবা CIF প্রবেশ করুন\"\n\n#: es/forms.py:74\nmsgid \"Please enter a valid NIF or NIE.\"\nmsgstr \" একটি বৈধ NIF অথবা NIE প্রবেশ করুন\"\n\n#: es/forms.py:75\nmsgid \"Invalid checksum for NIF.\"\nmsgstr \"NIF এর চেকসাম বৈধ নয়\"\n\n#: es/forms.py:76\nmsgid \"Invalid checksum for NIE.\"\nmsgstr \"NIE এর চেকসাম বৈধ নয়\"\n\n#: es/forms.py:77\nmsgid \"Invalid checksum for CIF.\"\nmsgstr \"CIF এর চেকসাম বৈধ নয়\"\n\n#: es/forms.py:149\nmsgid \"\"\n\"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.\"\nmsgstr \"\"\n\n#: es/forms.py:150\nmsgid \"Invalid checksum for bank account number.\"\nmsgstr \"ব্যাংক একাউন্ট নম্বর এর চেকসাম বৈধ নয়\"\n\n#: fi/forms.py:33\nmsgid \"Enter a valid Finnish social security number.\"\nmsgstr \" একটি বৈধ ফিনিশ সিকিউরিটি নম্বর প্রবেশ করুন\"\n\n#: fr/forms.py:35\nmsgid \"Phone numbers must be in 0X XX XX XX XX format.\"\nmsgstr \"ফোন নম্বর অবশ্যই 0X XX XX XX XX এই ধরনের হতে হবে\"\n\n#: gb/forms.py:25\nmsgid \"Enter a valid postcode.\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:11\nmsgid \"Bedfordshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:12\nmsgid \"Buckinghamshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:14\nmsgid \"Cheshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:15\nmsgid \"Cornwall and Isles of Scilly\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:16\nmsgid \"Cumbria\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:17\nmsgid \"Derbyshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:18\nmsgid \"Devon\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:19\nmsgid \"Dorset\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:20\nmsgid \"Durham\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:21\nmsgid \"East Sussex\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:22\nmsgid \"Essex\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:23\nmsgid \"Gloucestershire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:24\nmsgid \"Greater London\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:25\nmsgid \"Greater Manchester\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:26\nmsgid \"Hampshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:27\nmsgid \"Hertfordshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:28\nmsgid \"Kent\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:29\nmsgid \"Lancashire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:30\nmsgid \"Leicestershire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:31\nmsgid \"Lincolnshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:32\nmsgid \"Merseyside\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:33\nmsgid \"Norfolk\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:34\nmsgid \"North Yorkshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:35\nmsgid \"Northamptonshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:36\nmsgid \"Northumberland\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:37\nmsgid \"Nottinghamshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:38\nmsgid \"Oxfordshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:39\nmsgid \"Shropshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:40\nmsgid \"Somerset\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:41\nmsgid \"South Yorkshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:42\nmsgid \"Staffordshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:43\nmsgid \"Suffolk\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:44\nmsgid \"Surrey\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:45\nmsgid \"Tyne and Wear\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:46\nmsgid \"Warwickshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:47\nmsgid \"West Midlands\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:48\nmsgid \"West Sussex\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:49\nmsgid \"West Yorkshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:50\nmsgid \"Wiltshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:51\nmsgid \"Worcestershire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:55\nmsgid \"County Antrim\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:56\nmsgid \"County Armagh\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:57\nmsgid \"County Down\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:58\nmsgid \"County Fermanagh\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:59\nmsgid \"County Londonderry\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:60\nmsgid \"County Tyrone\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:64\nmsgid \"Clwyd\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:65\nmsgid \"Dyfed\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:66\nmsgid \"Gwent\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:67\nmsgid \"Gwynedd\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:68\nmsgid \"Mid Glamorgan\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:69\nmsgid \"Powys\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:70\nmsgid \"South Glamorgan\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:71\nmsgid \"West Glamorgan\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:75\nmsgid \"Borders\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:76\nmsgid \"Central Scotland\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:77\nmsgid \"Dumfries and Galloway\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:78\nmsgid \"Fife\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:79\nmsgid \"Grampian\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:80\nmsgid \"Highland\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:81\nmsgid \"Lothian\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:82\nmsgid \"Orkney Islands\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:83\nmsgid \"Shetland Islands\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:84\nmsgid \"Strathclyde\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:85\nmsgid \"Tayside\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:86\nmsgid \"Western Isles\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:90\nmsgid \"England\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:91\nmsgid \"Northern Ireland\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:92\nmsgid \"Scotland\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:93\nmsgid \"Wales\"\nmsgstr \"\"\n\n#: hk/forms.py:37\n#, python-format\nmsgid \"Phone number should not start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:40\n#, python-format\nmsgid \"Phone number must be in one of the following formats: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:42\n#, python-format\nmsgid \"Phone number should start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hr/forms.py:76\nmsgid \"Enter a valid 13 digit JMBG\"\nmsgstr \"\"\n\n#: hr/forms.py:77\nmsgid \"Error in date segment\"\nmsgstr \"\"\n\n#: hr/forms.py:123\nmsgid \"Enter a valid 11 digit OIB\"\nmsgstr \"\"\n\n#: hr/forms.py:152 id/forms.py:112\nmsgid \"Enter a valid vehicle license plate number\"\nmsgstr \"\"\n\n#: hr/forms.py:153\nmsgid \"Enter a valid location code\"\nmsgstr \"\"\n\n#: hr/forms.py:154\nmsgid \"Number part cannot be zero\"\nmsgstr \"\"\n\n#: hr/forms.py:190\nmsgid \"Enter a valid 5 digit postal code\"\nmsgstr \"\"\n\n#: hr/forms.py:218 id/forms.py:72 nl/forms.py:56\nmsgid \"Enter a valid phone number\"\nmsgstr \" একটি বৈধ ফোন নম্বর প্রবেশ করুন\"\n\n#: hr/forms.py:219\nmsgid \"Enter a valid area or mobile network code\"\nmsgstr \"\"\n\n#: hr/forms.py:220\nmsgid \"The phone nubmer is too long\"\nmsgstr \"\"\n\n#: hr/forms.py:258\nmsgid \"Enter a valid 19 digit JMBAG starting with 601983\"\nmsgstr \"\"\n\n#: hr/forms.py:259\nmsgid \"Card issue number cannot be zero\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:14\nmsgid \"Grad Zagreb\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:15\nmsgid \"Bjelovarsko-bilogorska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:16\nmsgid \"Brodsko-posavska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:17\nmsgid \"Dubrovačko-neretvanska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:18\nmsgid \"Istarska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:19\nmsgid \"Karlovačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:20\nmsgid \"Koprivničko-križevačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:21\nmsgid \"Krapinsko-zagorska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:22\nmsgid \"Ličko-senjska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:23\nmsgid \"Međimurska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:24\nmsgid \"Osječko-baranjska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:25\nmsgid \"Požeško-slavonska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:26\nmsgid \"Primorsko-goranska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:27\nmsgid \"Sisačko-moslavačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:28\nmsgid \"Splitsko-dalmatinska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:29\nmsgid \"Šibensko-kninska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:30\nmsgid \"Varaždinska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:31\nmsgid \"Virovitičko-podravska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:32\nmsgid \"Vukovarsko-srijemska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:33\nmsgid \"Zadarska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:34\nmsgid \"Zagrebačka županija\"\nmsgstr \"\"\n\n#: id/forms.py:31\nmsgid \"Enter a valid post code\"\nmsgstr \" একটি বৈধ প‌‌োস্ট কোড প্রবেশ করুন\"\n\n#: id/forms.py:176\nmsgid \"Enter a valid NIK/KTP number\"\nmsgstr \"\"\n\n#: id/id_choices.py:15\nmsgid \"Aceh\"\nmsgstr \"\"\n\n#: id/id_choices.py:16 id/id_choices.py:79\nmsgid \"Bali\"\nmsgstr \"বালি\"\n\n#: id/id_choices.py:17 id/id_choices.py:51\nmsgid \"Banten\"\nmsgstr \"\"\n\n#: id/id_choices.py:18 id/id_choices.py:60\nmsgid \"Bengkulu\"\nmsgstr \"\"\n\n#: id/id_choices.py:19 id/id_choices.py:53\nmsgid \"Yogyakarta\"\nmsgstr \"\"\n\n#: id/id_choices.py:20 id/id_choices.py:57\nmsgid \"Jakarta\"\nmsgstr \"জাকার্তা\"\n\n#: id/id_choices.py:21 id/id_choices.py:81\nmsgid \"Gorontalo\"\nmsgstr \"\"\n\n#: id/id_choices.py:22 id/id_choices.py:63\nmsgid \"Jambi\"\nmsgstr \"জাম্বি\"\n\n#: id/id_choices.py:23\nmsgid \"Jawa Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:24\nmsgid \"Jawa Tengah\"\nmsgstr \"\"\n\n#: id/id_choices.py:25\nmsgid \"Jawa Timur\"\nmsgstr \"\"\n\n#: id/id_choices.py:26 id/id_choices.py:94\nmsgid \"Kalimantan Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:27 id/id_choices.py:72\nmsgid \"Kalimantan Selatan\"\nmsgstr \"\"\n\n#: id/id_choices.py:28 id/id_choices.py:95\nmsgid \"Kalimantan Tengah\"\nmsgstr \"\"\n\n#: id/id_choices.py:29 id/id_choices.py:96\nmsgid \"Kalimantan Timur\"\nmsgstr \"\"\n\n#: id/id_choices.py:30\nmsgid \"Kepulauan Bangka-Belitung\"\nmsgstr \"\"\n\n#: id/id_choices.py:31 id/id_choices.py:68\nmsgid \"Kepulauan Riau\"\nmsgstr \"\"\n\n#: id/id_choices.py:32 id/id_choices.py:61\nmsgid \"Lampung\"\nmsgstr \"\"\n\n#: id/id_choices.py:33 id/id_choices.py:76\nmsgid \"Maluku\"\nmsgstr \"\"\n\n#: id/id_choices.py:34 id/id_choices.py:77\nmsgid \"Maluku Utara\"\nmsgstr \"\"\n\n#: id/id_choices.py:35\nmsgid \"Nusa Tenggara Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:36\nmsgid \"Nusa Tenggara Timur\"\nmsgstr \"\"\n\n#: id/id_choices.py:37\nmsgid \"Papua\"\nmsgstr \"পাপুয়া\"\n\n#: id/id_choices.py:38\nmsgid \"Papua Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:39 id/id_choices.py:66\nmsgid \"Riau\"\nmsgstr \"\"\n\n#: id/id_choices.py:40 id/id_choices.py:74\nmsgid \"Sulawesi Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:41 id/id_choices.py:75\nmsgid \"Sulawesi Selatan\"\nmsgstr \"\"\n\n#: id/id_choices.py:42 id/id_choices.py:82\nmsgid \"Sulawesi Tengah\"\nmsgstr \"\"\n\n#: id/id_choices.py:43 id/id_choices.py:85\nmsgid \"Sulawesi Tenggara\"\nmsgstr \"\"\n\n#: id/id_choices.py:44\nmsgid \"Sulawesi Utara\"\nmsgstr \"\"\n\n#: id/id_choices.py:45 id/id_choices.py:58\nmsgid \"Sumatera Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:46 id/id_choices.py:62\nmsgid \"Sumatera Selatan\"\nmsgstr \"\"\n\n#: id/id_choices.py:47 id/id_choices.py:64\nmsgid \"Sumatera Utara\"\nmsgstr \"\"\n\n#: id/id_choices.py:52\nmsgid \"Magelang\"\nmsgstr \"\"\n\n#: id/id_choices.py:54\nmsgid \"Surakarta - Solo\"\nmsgstr \"\"\n\n#: id/id_choices.py:55\nmsgid \"Madiun\"\nmsgstr \"\"\n\n#: id/id_choices.py:56\nmsgid \"Kediri\"\nmsgstr \"\"\n\n#: id/id_choices.py:59\nmsgid \"Tapanuli\"\nmsgstr \"\"\n\n#: id/id_choices.py:65\nmsgid \"Nanggroe Aceh Darussalam\"\nmsgstr \"\"\n\n#: id/id_choices.py:67\nmsgid \"Kepulauan Bangka Belitung\"\nmsgstr \"\"\n\n#: id/id_choices.py:69\nmsgid \"Corps Consulate\"\nmsgstr \"\"\n\n#: id/id_choices.py:70\nmsgid \"Corps Diplomatic\"\nmsgstr \"\"\n\n#: id/id_choices.py:71\nmsgid \"Bandung\"\nmsgstr \"\"\n\n#: id/id_choices.py:73\nmsgid \"Sulawesi Utara Daratan\"\nmsgstr \"\"\n\n#: id/id_choices.py:78\nmsgid \"NTT - Timor\"\nmsgstr \"\"\n\n#: id/id_choices.py:80\nmsgid \"Sulawesi Utara Kepulauan\"\nmsgstr \"\"\n\n#: id/id_choices.py:83\nmsgid \"NTB - Lombok\"\nmsgstr \"\"\n\n#: id/id_choices.py:84\nmsgid \"Papua dan Papua Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:86\nmsgid \"Cirebon\"\nmsgstr \"\"\n\n#: id/id_choices.py:87\nmsgid \"NTB - Sumbawa\"\nmsgstr \"\"\n\n#: id/id_choices.py:88\nmsgid \"NTT - Flores\"\nmsgstr \"\"\n\n#: id/id_choices.py:89\nmsgid \"NTT - Sumba\"\nmsgstr \"\"\n\n#: id/id_choices.py:90\nmsgid \"Bogor\"\nmsgstr \"\"\n\n#: id/id_choices.py:91\nmsgid \"Pekalongan\"\nmsgstr \"\"\n\n#: id/id_choices.py:92\nmsgid \"Semarang\"\nmsgstr \"\"\n\n#: id/id_choices.py:93\nmsgid \"Pati\"\nmsgstr \"\"\n\n#: id/id_choices.py:97\nmsgid \"Surabaya\"\nmsgstr \"\"\n\n#: id/id_choices.py:98\nmsgid \"Madura\"\nmsgstr \"\"\n\n#: id/id_choices.py:99\nmsgid \"Malang\"\nmsgstr \"\"\n\n#: id/id_choices.py:100\nmsgid \"Jember\"\nmsgstr \"\"\n\n#: id/id_choices.py:101\nmsgid \"Banyumas\"\nmsgstr \"\"\n\n#: id/id_choices.py:102\nmsgid \"Federal Government\"\nmsgstr \"\"\n\n#: id/id_choices.py:103\nmsgid \"Bojonegoro\"\nmsgstr \"\"\n\n#: id/id_choices.py:104\nmsgid \"Purwakarta\"\nmsgstr \"\"\n\n#: id/id_choices.py:105\nmsgid \"Sidoarjo\"\nmsgstr \"\"\n\n#: id/id_choices.py:106\nmsgid \"Garut\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:8\nmsgid \"Antrim\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:9\nmsgid \"Armagh\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:10\nmsgid \"Carlow\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:11\nmsgid \"Cavan\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:12\nmsgid \"Clare\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:13\nmsgid \"Cork\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:14\nmsgid \"Derry\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:15\nmsgid \"Donegal\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:16\nmsgid \"Down\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:17\nmsgid \"Dublin\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:18\nmsgid \"Fermanagh\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:19\nmsgid \"Galway\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:20\nmsgid \"Kerry\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:21\nmsgid \"Kildare\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:22\nmsgid \"Kilkenny\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:23\nmsgid \"Laois\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:24\nmsgid \"Leitrim\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:25\nmsgid \"Limerick\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:26\nmsgid \"Longford\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:27\nmsgid \"Louth\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:28\nmsgid \"Mayo\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:29\nmsgid \"Meath\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:30\nmsgid \"Monaghan\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:31\nmsgid \"Offaly\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:32\nmsgid \"Roscommon\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:33\nmsgid \"Sligo\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:34\nmsgid \"Tipperary\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:35\nmsgid \"Tyrone\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:36\nmsgid \"Waterford\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:37\nmsgid \"Westmeath\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:38\nmsgid \"Wexford\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:39\nmsgid \"Wicklow\"\nmsgstr \"\"\n\n#: il/forms.py:32\nmsgid \"Enter a postal code in the format XXXXX\"\nmsgstr \"\"\n\n#: il/forms.py:51\nmsgid \"Enter a valid ID number.\"\nmsgstr \"\"\n\n#: in_/forms.py:41\nmsgid \"Enter a zip code in the format XXXXXX or XXX XXX.\"\nmsgstr \"\"\n\n#: in_/forms.py:64\nmsgid \"Enter an Indian state or territory.\"\nmsgstr \"\"\n\n#: in_/forms.py:103\nmsgid \"Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.\"\nmsgstr \"\"\n\n#: is_/forms.py:22\nmsgid \"\"\n\"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.\"\nmsgstr \"\"\n\n#: is_/forms.py:23\nmsgid \"The Icelandic identification number is not valid.\"\nmsgstr \"\"\n\n#: it/forms.py:21\nmsgid \"Enter a valid zip code.\"\nmsgstr \"\"\n\n#: it/forms.py:48\nmsgid \"Enter a valid Social Security number.\"\nmsgstr \"\"\n\n#: it/forms.py:73\nmsgid \"Enter a valid VAT number.\"\nmsgstr \"\"\n\n#: jp/forms.py:19\nmsgid \"Enter a postal code in the format XXXXXXX or XXX-XXXX.\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:4\nmsgid \"Hokkaido\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:5\nmsgid \"Aomori\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:6\nmsgid \"Iwate\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:7\nmsgid \"Miyagi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:8\nmsgid \"Akita\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:9\nmsgid \"Yamagata\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:10\nmsgid \"Fukushima\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:11\nmsgid \"Ibaraki\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:12\nmsgid \"Tochigi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:13\nmsgid \"Gunma\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:14\nmsgid \"Saitama\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:15\nmsgid \"Chiba\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:16\nmsgid \"Tokyo\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:17\nmsgid \"Kanagawa\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:18\nmsgid \"Yamanashi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:19\nmsgid \"Nagano\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:20\nmsgid \"Niigata\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:21\nmsgid \"Toyama\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:22\nmsgid \"Ishikawa\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:23\nmsgid \"Fukui\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:24\nmsgid \"Gifu\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:25\nmsgid \"Shizuoka\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:26\nmsgid \"Aichi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:27\nmsgid \"Mie\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:28\nmsgid \"Shiga\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:29\nmsgid \"Kyoto\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:30\nmsgid \"Osaka\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:31\nmsgid \"Hyogo\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:32\nmsgid \"Nara\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:33\nmsgid \"Wakayama\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:34\nmsgid \"Tottori\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:35\nmsgid \"Shimane\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:36\nmsgid \"Okayama\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:37\nmsgid \"Hiroshima\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:38\nmsgid \"Yamaguchi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:39\nmsgid \"Tokushima\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:40\nmsgid \"Kagawa\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:41\nmsgid \"Ehime\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:42\nmsgid \"Kochi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:43\nmsgid \"Fukuoka\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:44\nmsgid \"Saga\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:45\nmsgid \"Nagasaki\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:46\nmsgid \"Kumamoto\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:47\nmsgid \"Oita\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:48\nmsgid \"Miyazaki\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:49\nmsgid \"Kagoshima\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:50\nmsgid \"Okinawa\"\nmsgstr \"\"\n\n#: kw/forms.py:27\nmsgid \"Enter a valid Kuwaiti Civil ID number\"\nmsgstr \"\"\n\n#: mk/forms.py:18\nmsgid \"\"\n\"Identity card numbers must contain either 4 to 7 digits or an uppercase \"\n\"letter and 7 digits.\"\nmsgstr \"\"\n\n#: mk/forms.py:57 si/forms.py:24\nmsgid \"This field should contain exactly 13 digits.\"\nmsgstr \"\"\n\n#: mk/forms.py:58\nmsgid \"The first 7 digits of the UMCN must represent a valid past date.\"\nmsgstr \"\"\n\n#: mk/forms.py:59\nmsgid \"The UMCN is not valid.\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:10\nmsgid \"Aerodrom\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:11\nmsgid \"Aračinovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:12\nmsgid \"Berovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:13\nmsgid \"Bitola\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:14\nmsgid \"Bogdanci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:15\nmsgid \"Bogovinje\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:16\nmsgid \"Bosilovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:17\nmsgid \"Brvenica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:18\nmsgid \"Butel\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:19\nmsgid \"Valandovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:20\nmsgid \"Vasilevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:21\nmsgid \"Vevčani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:22\nmsgid \"Veles\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:23\nmsgid \"Vinica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:24\nmsgid \"Vraneštica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:25\nmsgid \"Vrapčište\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:26\nmsgid \"Gazi Baba\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:27\nmsgid \"Gevgelija\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:28\nmsgid \"Gostivar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:29\nmsgid \"Gradsko\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:30\nmsgid \"Debar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:31\nmsgid \"Debarca\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:32\nmsgid \"Delčevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:33\nmsgid \"Demir Kapija\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:34\nmsgid \"Demir Hisar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:35\nmsgid \"Dolneni\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:36\nmsgid \"Drugovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:37\nmsgid \"Gjorče Petrov\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:38\nmsgid \"Želino\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:39\nmsgid \"Zajas\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:40\nmsgid \"Zelenikovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:41\nmsgid \"Zrnovci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:42\nmsgid \"Ilinden\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:43\nmsgid \"Jegunovce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:44\nmsgid \"Kavadarci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:45\nmsgid \"Karbinci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:46\nmsgid \"Karpoš\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:47\nmsgid \"Kisela Voda\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:48\nmsgid \"Kičevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:49\nmsgid \"Konče\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:50\nmsgid \"Koćani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:51\nmsgid \"Kratovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:52\nmsgid \"Kriva Palanka\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:53\nmsgid \"Krivogaštani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:54\nmsgid \"Kruševo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:55\nmsgid \"Kumanovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:56\nmsgid \"Lipkovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:57\nmsgid \"Lozovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:58\nmsgid \"Mavrovo i Rostuša\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:59\nmsgid \"Makedonska Kamenica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:60\nmsgid \"Makedonski Brod\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:61\nmsgid \"Mogila\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:62\nmsgid \"Negotino\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:63\nmsgid \"Novaci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:64\nmsgid \"Novo Selo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:65\nmsgid \"Oslomej\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:66\nmsgid \"Ohrid\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:67\nmsgid \"Petrovec\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:68\nmsgid \"Pehčevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:69\nmsgid \"Plasnica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:70\nmsgid \"Prilep\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:71\nmsgid \"Probištip\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:72\nmsgid \"Radoviš\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:73\nmsgid \"Rankovce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:74\nmsgid \"Resen\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:75\nmsgid \"Rosoman\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:76\nmsgid \"Saraj\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:77\nmsgid \"Sveti Nikole\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:78\nmsgid \"Sopište\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:79\nmsgid \"Star Dojran\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:80\nmsgid \"Staro Nagoričane\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:81\nmsgid \"Struga\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:82\nmsgid \"Strumica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:83\nmsgid \"Studeničani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:84\nmsgid \"Tearce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:85\nmsgid \"Tetovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:86\nmsgid \"Centar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:87\nmsgid \"Centar-Župa\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:88\nmsgid \"Čair\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:89\nmsgid \"Čaška\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:90\nmsgid \"Češinovo-Obleševo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:91\nmsgid \"Čučer-Sandevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:92\nmsgid \"Štip\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:93\nmsgid \"Šuto Orizari\"\nmsgstr \"\"\n\n#: mk/models.py:11\nmsgid \"Macedonian identity card number\"\nmsgstr \"\"\n\n#: mk/models.py:25\nmsgid \"A Macedonian municipality (2 character code)\"\nmsgstr \"\"\n\n#: mk/models.py:35\nmsgid \"Unique master citizen number (13 digits)\"\nmsgstr \"\"\n\n#: mx/forms.py:67\nmsgid \"Enter a valid zip code in the format XXXXX.\"\nmsgstr \"\"\n\n#: mx/forms.py:110\nmsgid \"Enter a valid RFC.\"\nmsgstr \"\"\n\n#: mx/forms.py:111\nmsgid \"Invalid checksum for RFC.\"\nmsgstr \"\"\n\n#: mx/forms.py:191\nmsgid \"Enter a valid CURP.\"\nmsgstr \"\"\n\n#: mx/forms.py:192\nmsgid \"Invalid checksum for CURP.\"\nmsgstr \"\"\n\n#: mx/models.py:14\nmsgid \"Mexico state (three uppercase letters)\"\nmsgstr \"\"\n\n#: mx/models.py:27\nmsgid \"Mexico zip code\"\nmsgstr \"\"\n\n#: mx/models.py:44\nmsgid \"Mexican RFC\"\nmsgstr \"\"\n\n#: mx/models.py:61\nmsgid \"Mexican CURP\"\nmsgstr \"\"\n\n#: mx/mx_states.py:14\nmsgid \"Aguascalientes\"\nmsgstr \"\"\n\n#: mx/mx_states.py:15\nmsgid \"Baja California\"\nmsgstr \"\"\n\n#: mx/mx_states.py:16\nmsgid \"Baja California Sur\"\nmsgstr \"\"\n\n#: mx/mx_states.py:17\nmsgid \"Campeche\"\nmsgstr \"\"\n\n#: mx/mx_states.py:18\nmsgid \"Chihuahua\"\nmsgstr \"\"\n\n#: mx/mx_states.py:19\nmsgid \"Chiapas\"\nmsgstr \"\"\n\n#: mx/mx_states.py:20\nmsgid \"Coahuila\"\nmsgstr \"\"\n\n#: mx/mx_states.py:21\nmsgid \"Colima\"\nmsgstr \"\"\n\n#: mx/mx_states.py:22\nmsgid \"Distrito Federal\"\nmsgstr \"\"\n\n#: mx/mx_states.py:23\nmsgid \"Durango\"\nmsgstr \"\"\n\n#: mx/mx_states.py:24\nmsgid \"Guerrero\"\nmsgstr \"\"\n\n#: mx/mx_states.py:25\nmsgid \"Guanajuato\"\nmsgstr \"\"\n\n#: mx/mx_states.py:26\nmsgid \"Hidalgo\"\nmsgstr \"\"\n\n#: mx/mx_states.py:27\nmsgid \"Jalisco\"\nmsgstr \"\"\n\n#: mx/mx_states.py:28\nmsgid \"Estado de México\"\nmsgstr \"\"\n\n#: mx/mx_states.py:29\nmsgid \"Michoacán\"\nmsgstr \"\"\n\n#: mx/mx_states.py:30\nmsgid \"Morelos\"\nmsgstr \"\"\n\n#: mx/mx_states.py:31\nmsgid \"Nayarit\"\nmsgstr \"\"\n\n#: mx/mx_states.py:32\nmsgid \"Nuevo León\"\nmsgstr \"\"\n\n#: mx/mx_states.py:33\nmsgid \"Oaxaca\"\nmsgstr \"\"\n\n#: mx/mx_states.py:34\nmsgid \"Puebla\"\nmsgstr \"\"\n\n#: mx/mx_states.py:35\nmsgid \"Querétaro\"\nmsgstr \"\"\n\n#: mx/mx_states.py:36\nmsgid \"Quintana Roo\"\nmsgstr \"\"\n\n#: mx/mx_states.py:37\nmsgid \"Sinaloa\"\nmsgstr \"\"\n\n#: mx/mx_states.py:38\nmsgid \"San Luis Potosí\"\nmsgstr \"\"\n\n#: mx/mx_states.py:39\nmsgid \"Sonora\"\nmsgstr \"\"\n\n#: mx/mx_states.py:40\nmsgid \"Tabasco\"\nmsgstr \"\"\n\n#: mx/mx_states.py:41\nmsgid \"Tamaulipas\"\nmsgstr \"\"\n\n#: mx/mx_states.py:42\nmsgid \"Tlaxcala\"\nmsgstr \"\"\n\n#: mx/mx_states.py:43\nmsgid \"Veracruz\"\nmsgstr \"\"\n\n#: mx/mx_states.py:44\nmsgid \"Yucatán\"\nmsgstr \"\"\n\n#: mx/mx_states.py:45\nmsgid \"Zacatecas\"\nmsgstr \"\"\n\n#: nl/forms.py:26\nmsgid \"Enter a valid postal code\"\nmsgstr \"\"\n\n#: nl/forms.py:82\nmsgid \"Enter a valid SoFi number\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:4\nmsgid \"Drenthe\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:5\nmsgid \"Flevoland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:6\nmsgid \"Friesland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:7\nmsgid \"Gelderland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:8\nmsgid \"Groningen\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:10\nmsgid \"Noord-Brabant\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:11\nmsgid \"Noord-Holland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:12\nmsgid \"Overijssel\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:13\nmsgid \"Utrecht\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:14\nmsgid \"Zeeland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:15\nmsgid \"Zuid-Holland\"\nmsgstr \"\"\n\n#: no/forms.py:39\nmsgid \"Enter a valid Norwegian social security number.\"\nmsgstr \"\"\n\n#: pe/forms.py:28\nmsgid \"This field requires 8 digits.\"\nmsgstr \"\"\n\n#: pe/forms.py:56\nmsgid \"This field requires 11 digits.\"\nmsgstr \"\"\n\n#: pl/forms.py:42\nmsgid \"National Identification Number consists of 11 digits.\"\nmsgstr \"\"\n\n#: pl/forms.py:43\nmsgid \"Wrong checksum for the National Identification Number.\"\nmsgstr \"\"\n\n#: pl/forms.py:79\nmsgid \"National ID Card Number consists of 3 letters and 6 digits.\"\nmsgstr \"\"\n\n#: pl/forms.py:80\nmsgid \"Wrong checksum for the National ID Card Number.\"\nmsgstr \"\"\n\n#: pl/forms.py:131\nmsgid \"\"\n\"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or \"\n\"XXXXXXXXXX.\"\nmsgstr \"\"\n\n#: pl/forms.py:132\nmsgid \"Wrong checksum for the Tax Number (NIP).\"\nmsgstr \"\"\n\n#: pl/forms.py:171\nmsgid \"National Business Register Number (REGON) consists of 9 or 14 digits.\"\nmsgstr \"\"\n\n#: pl/forms.py:172\nmsgid \"Wrong checksum for the National Business Register Number (REGON).\"\nmsgstr \"\"\n\n#: pl/forms.py:212\nmsgid \"Enter a postal code in the format XX-XXX.\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:8\nmsgid \"Lower Silesia\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:9\nmsgid \"Kuyavia-Pomerania\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:10\nmsgid \"Lublin\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:11\nmsgid \"Lubusz\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:12\nmsgid \"Lodz\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:13\nmsgid \"Lesser Poland\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:14\nmsgid \"Masovia\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:15\nmsgid \"Opole\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:16\nmsgid \"Subcarpatia\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:17\nmsgid \"Podlasie\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:18\nmsgid \"Pomerania\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:19\nmsgid \"Silesia\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:20\nmsgid \"Swietokrzyskie\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:21\nmsgid \"Warmia-Masuria\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:22\nmsgid \"Greater Poland\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:23\nmsgid \"West Pomerania\"\nmsgstr \"\"\n\n#: pt/forms.py:19\nmsgid \"Enter a zip code in the format XXXX-XXX.\"\nmsgstr \"\"\n\n#: pt/forms.py:39\nmsgid \"Phone numbers must have 9 digits, or start by + or 00.\"\nmsgstr \"\"\n\n#: ro/forms.py:22\nmsgid \"Enter a valid CIF.\"\nmsgstr \"\"\n\n#: ro/forms.py:59\nmsgid \"Enter a valid CNP.\"\nmsgstr \"\"\n\n#: ro/forms.py:143\nmsgid \"Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format\"\nmsgstr \"\"\n\n#: ro/forms.py:175\nmsgid \"Phone numbers must be in XXXX-XXXXXX format.\"\nmsgstr \"\"\n\n#: ro/forms.py:200\nmsgid \"Enter a valid postal code in the format XXXXXX\"\nmsgstr \"\"\n\n#: ru/forms.py:37\nmsgid \"Enter a postal code in the format XXXXXX.\"\nmsgstr \"\"\n\n#: ru/forms.py:50\nmsgid \"Enter a passport number in the format XXXX XXXXXX.\"\nmsgstr \"\"\n\n#: ru/forms.py:63\nmsgid \"Enter a passport number in the format XX XXXXXXX.\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:10\nmsgid \"Central Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:11\nmsgid \"South Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:12\nmsgid \"North-West Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:13\nmsgid \"Far-East Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:14\nmsgid \"Siberian Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:15\nmsgid \"Ural Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:16\nmsgid \"Privolzhsky Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:17\nmsgid \"North-Caucasian Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:21\nmsgid \"Moskva\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:22\nmsgid \"Saint-Peterburg\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:23\nmsgid \"Moskovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:24\nmsgid \"Adygeya, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:25\nmsgid \"Bashkortostan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:26\nmsgid \"Buryatia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:27\nmsgid \"Altay, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:28\nmsgid \"Dagestan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:29\nmsgid \"Ingushskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:30\nmsgid \"Kabardino-Balkarskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:31\nmsgid \"Kalmykia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:32\nmsgid \"Karachaevo-Cherkesskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:33\nmsgid \"Karelia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:34\nmsgid \"Komi, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:35\nmsgid \"Mariy Ehl, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:36\nmsgid \"Mordovia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:37\nmsgid \"Sakha, Respublika (Yakutiya)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:38\nmsgid \"Severnaya Osetia, Respublika (Alania)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:39\nmsgid \"Tatarstan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:40\nmsgid \"Tyva, Respublika (Tuva)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:41\nmsgid \"Udmurtskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:42\nmsgid \"Khakassiya, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:43\nmsgid \"Chechenskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:44\nmsgid \"Chuvashskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:45\nmsgid \"Altayskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:46\nmsgid \"Zabaykalskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:47\nmsgid \"Kamchatskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:48\nmsgid \"Krasnodarskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:49\nmsgid \"Krasnoyarskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:50\nmsgid \"Permskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:51\nmsgid \"Primorskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:52\nmsgid \"Stavropol'siyy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:53\nmsgid \"Khabarovskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:54\nmsgid \"Amurskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:55\nmsgid \"Arkhangel'skaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:56\nmsgid \"Astrakhanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:57\nmsgid \"Belgorodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:58\nmsgid \"Bryanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:59\nmsgid \"Vladimirskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:60\nmsgid \"Volgogradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:61\nmsgid \"Vologodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:62\nmsgid \"Voronezhskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:63\nmsgid \"Ivanovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:64\nmsgid \"Irkutskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:65\nmsgid \"Kaliningradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:66\nmsgid \"Kaluzhskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:67\nmsgid \"Kemerovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:68\nmsgid \"Kirovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:69\nmsgid \"Kostromskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:70\nmsgid \"Kurganskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:71\nmsgid \"Kurskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:72\nmsgid \"Leningradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:73\nmsgid \"Lipeckaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:74\nmsgid \"Magadanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:75\nmsgid \"Murmanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:76\nmsgid \"Nizhegorodskaja oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:77\nmsgid \"Novgorodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:78\nmsgid \"Novosibirskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:79\nmsgid \"Omskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:80\nmsgid \"Orenburgskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:81\nmsgid \"Orlovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:82\nmsgid \"Penzenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:83\nmsgid \"Pskovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:84\nmsgid \"Rostovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:85\nmsgid \"Rjazanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:86\nmsgid \"Samarskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:87\nmsgid \"Saratovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:88\nmsgid \"Sakhalinskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:89\nmsgid \"Sverdlovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:90\nmsgid \"Smolenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:91\nmsgid \"Tambovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:92\nmsgid \"Tverskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:93\nmsgid \"Tomskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:94\nmsgid \"Tul'skaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:95\nmsgid \"Tyumenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:96\nmsgid \"Ul'ianovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:97\nmsgid \"Chelyabinskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:98\nmsgid \"Yaroslavskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:99\nmsgid \"Evreyskaya avtonomnaja oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:100\nmsgid \"Neneckiy autonomnyy okrug\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:101\nmsgid \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:102\nmsgid \"Chukotskiy avtonomnyy okrug\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:103\nmsgid \"Yamalo-Neneckiy avtonomnyy okrug\"\nmsgstr \"\"\n\n#: se/forms.py:54\nmsgid \"Enter a valid Swedish organisation number.\"\nmsgstr \"\"\n\n#: se/forms.py:111\nmsgid \"Enter a valid Swedish personal identity number.\"\nmsgstr \"\"\n\n#: se/forms.py:112\nmsgid \"Co-ordination numbers are not allowed.\"\nmsgstr \"\"\n\n#: se/forms.py:154\nmsgid \"Enter a Swedish postal code in the format XXXXX.\"\nmsgstr \"\"\n\n#: se/se_counties.py:16\nmsgid \"Stockholm\"\nmsgstr \"\"\n\n#: se/se_counties.py:17\nmsgid \"Västerbotten\"\nmsgstr \"\"\n\n#: se/se_counties.py:18\nmsgid \"Norrbotten\"\nmsgstr \"\"\n\n#: se/se_counties.py:19\nmsgid \"Uppsala\"\nmsgstr \"\"\n\n#: se/se_counties.py:20\nmsgid \"Södermanland\"\nmsgstr \"\"\n\n#: se/se_counties.py:21\nmsgid \"Östergötland\"\nmsgstr \"\"\n\n#: se/se_counties.py:22\nmsgid \"Jönköping\"\nmsgstr \"\"\n\n#: se/se_counties.py:23\nmsgid \"Kronoberg\"\nmsgstr \"\"\n\n#: se/se_counties.py:24\nmsgid \"Kalmar\"\nmsgstr \"\"\n\n#: se/se_counties.py:25\nmsgid \"Gotland\"\nmsgstr \"\"\n\n#: se/se_counties.py:26\nmsgid \"Blekinge\"\nmsgstr \"\"\n\n#: se/se_counties.py:27\nmsgid \"Skåne\"\nmsgstr \"\"\n\n#: se/se_counties.py:28\nmsgid \"Halland\"\nmsgstr \"\"\n\n#: se/se_counties.py:29\nmsgid \"Västra Götaland\"\nmsgstr \"\"\n\n#: se/se_counties.py:30\nmsgid \"Värmland\"\nmsgstr \"\"\n\n#: se/se_counties.py:31\nmsgid \"Örebro\"\nmsgstr \"\"\n\n#: se/se_counties.py:32\nmsgid \"Västmanland\"\nmsgstr \"\"\n\n#: se/se_counties.py:33\nmsgid \"Dalarna\"\nmsgstr \"\"\n\n#: se/se_counties.py:34\nmsgid \"Gävleborg\"\nmsgstr \"\"\n\n#: se/se_counties.py:35\nmsgid \"Västernorrland\"\nmsgstr \"\"\n\n#: se/se_counties.py:36\nmsgid \"Jämtland\"\nmsgstr \"\"\n\n#: si/forms.py:25\nmsgid \"The first 7 digits of the EMSO must represent a valid past date.\"\nmsgstr \"\"\n\n#: si/forms.py:26\nmsgid \"The EMSO is not valid.\"\nmsgstr \"\"\n\n#: si/forms.py:86\nmsgid \"Enter a valid tax number in form SIXXXXXXXX\"\nmsgstr \"\"\n\n#: si/forms.py:151\nmsgid \"Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:8\nmsgid \"Banska Bystrica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:9\nmsgid \"Banska Stiavnica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:10\nmsgid \"Bardejov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:11\nmsgid \"Banovce nad Bebravou\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:12\nmsgid \"Brezno\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:13\nmsgid \"Bratislava I\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:14\nmsgid \"Bratislava II\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:15\nmsgid \"Bratislava III\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:16\nmsgid \"Bratislava IV\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:17\nmsgid \"Bratislava V\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:18\nmsgid \"Bytca\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:19\nmsgid \"Cadca\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:20\nmsgid \"Detva\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:21\nmsgid \"Dolny Kubin\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:22\nmsgid \"Dunajska Streda\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:23\nmsgid \"Galanta\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:24\nmsgid \"Gelnica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:25\nmsgid \"Hlohovec\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:26\nmsgid \"Humenne\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:27\nmsgid \"Ilava\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:28\nmsgid \"Kezmarok\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:29\nmsgid \"Komarno\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:30\nmsgid \"Kosice I\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:31\nmsgid \"Kosice II\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:32\nmsgid \"Kosice III\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:33\nmsgid \"Kosice IV\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:34\nmsgid \"Kosice - okolie\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:35\nmsgid \"Krupina\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:36\nmsgid \"Kysucke Nove Mesto\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:37\nmsgid \"Levice\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:38\nmsgid \"Levoca\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:39\nmsgid \"Liptovsky Mikulas\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:40\nmsgid \"Lucenec\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:41\nmsgid \"Malacky\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:42\nmsgid \"Martin\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:43\nmsgid \"Medzilaborce\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:44\nmsgid \"Michalovce\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:45\nmsgid \"Myjava\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:46\nmsgid \"Namestovo\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:47\nmsgid \"Nitra\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:48\nmsgid \"Nove Mesto nad Vahom\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:49\nmsgid \"Nove Zamky\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:50\nmsgid \"Partizanske\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:51\nmsgid \"Pezinok\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:52\nmsgid \"Piestany\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:53\nmsgid \"Poltar\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:54\nmsgid \"Poprad\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:55\nmsgid \"Povazska Bystrica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:56\nmsgid \"Presov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:57\nmsgid \"Prievidza\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:58\nmsgid \"Puchov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:59\nmsgid \"Revuca\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:60\nmsgid \"Rimavska Sobota\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:61\nmsgid \"Roznava\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:62\nmsgid \"Ruzomberok\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:63\nmsgid \"Sabinov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:64\nmsgid \"Senec\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:65\nmsgid \"Senica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:66\nmsgid \"Skalica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:67\nmsgid \"Snina\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:68\nmsgid \"Sobrance\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:69\nmsgid \"Spisska Nova Ves\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:70\nmsgid \"Stara Lubovna\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:71\nmsgid \"Stropkov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:72\nmsgid \"Svidnik\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:73\nmsgid \"Sala\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:74\nmsgid \"Topolcany\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:75\nmsgid \"Trebisov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:76\nmsgid \"Trencin\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:77\nmsgid \"Trnava\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:78\nmsgid \"Turcianske Teplice\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:79\nmsgid \"Tvrdosin\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:80\nmsgid \"Velky Krtis\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:81\nmsgid \"Vranov nad Toplou\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:82\nmsgid \"Zlate Moravce\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:83\nmsgid \"Zvolen\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:84\nmsgid \"Zarnovica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:85\nmsgid \"Ziar nad Hronom\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:86\nmsgid \"Zilina\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:8\nmsgid \"Banska Bystrica region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:9\nmsgid \"Bratislava region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:10\nmsgid \"Kosice region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:11\nmsgid \"Nitra region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:12\nmsgid \"Presov region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:13\nmsgid \"Trencin region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:14\nmsgid \"Trnava region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:15\nmsgid \"Zilina region\"\nmsgstr \"\"\n\n#: tr/forms.py:21\nmsgid \"Enter a postal code in the format XXXXX.\"\nmsgstr \"\"\n\n#: tr/forms.py:42\nmsgid \"Phone numbers must be in 0XXX XXX XXXX format.\"\nmsgstr \"\"\n\n#: tr/forms.py:69\nmsgid \"Enter a valid Turkish Identification number.\"\nmsgstr \"\"\n\n#: tr/forms.py:70\nmsgid \"Turkish Identification number must be 11 digits.\"\nmsgstr \"\"\n\n#: us/forms.py:21\nmsgid \"Enter a zip code in the format XXXXX or XXXXX-XXXX.\"\nmsgstr \"\"\n\n#: us/forms.py:59\nmsgid \"Enter a valid U.S. Social Security number in XXX-XX-XXXX format.\"\nmsgstr \"\"\n\n#: us/forms.py:92\nmsgid \"Enter a U.S. state or territory.\"\nmsgstr \"\"\n\n#: us/models.py:8\nmsgid \"U.S. state (two uppercase letters)\"\nmsgstr \"ইউ, এস, রাজ্য (দুটো আপারকেস অক্ষর)\"\n\n#: us/models.py:17\nmsgid \"U.S. postal code (two uppercase letters)\"\nmsgstr \"\"\n\n#: us/models.py:26\nmsgid \"Phone number\"\nmsgstr \"ফোন নাম্বার\"\n\n#: uy/forms.py:29\nmsgid \"Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.\"\nmsgstr \"\"\n\n#: uy/forms.py:31\nmsgid \"Enter a valid CI number.\"\nmsgstr \"\"\n\n#: za/forms.py:22\nmsgid \"Enter a valid South African ID number\"\nmsgstr \"\"\n\n#: za/forms.py:56\nmsgid \"Enter a valid South African postal code\"\nmsgstr \"\"\n\n#: za/za_provinces.py:4\nmsgid \"Eastern Cape\"\nmsgstr \"\"\n\n#: za/za_provinces.py:5\nmsgid \"Free State\"\nmsgstr \"\"\n\n#: za/za_provinces.py:6\nmsgid \"Gauteng\"\nmsgstr \"\"\n\n#: za/za_provinces.py:7\nmsgid \"KwaZulu-Natal\"\nmsgstr \"\"\n\n#: za/za_provinces.py:8\nmsgid \"Limpopo\"\nmsgstr \"\"\n\n#: za/za_provinces.py:9\nmsgid \"Mpumalanga\"\nmsgstr \"\"\n\n#: za/za_provinces.py:10\nmsgid \"Northern Cape\"\nmsgstr \"\"\n\n#: za/za_provinces.py:11\nmsgid \"North West\"\nmsgstr \"\"\n\n#: za/za_provinces.py:12\nmsgid \"Western Cape\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/locale/br/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Fulup  <fulup.jakez@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-10-17 09:17+0000\\n\"\n\"Last-Translator: Fulup <fulup.jakez@gmail.com>\\n\"\n\"Language-Team: Breton (http://www.transifex.com/projects/p/django/language/\"\n\"br/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: br\\n\"\n\"Plural-Forms: nplurals=2; plural=(n > 1);\\n\"\n\n#: ar/forms.py:30\nmsgid \"Enter a postal code in the format NNNN or ANNNNAAA.\"\nmsgstr \"\"\n\n#: ar/forms.py:52 br/forms.py:95 br/forms.py:134 pe/forms.py:27 pe/forms.py:55\nmsgid \"This field requires only numbers.\"\nmsgstr \"\"\n\n#: ar/forms.py:53\nmsgid \"This field requires 7 or 8 digits.\"\nmsgstr \"\"\n\n#: ar/forms.py:82\nmsgid \"Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.\"\nmsgstr \"\"\n\n#: ar/forms.py:83\nmsgid \"Invalid CUIT.\"\nmsgstr \"\"\n\n#: ar/forms.py:84\nmsgid \"Invalid legal type. Type must be 27, 20, 23 or 30.\"\nmsgstr \"\"\n\n#: at/at_states.py:5\nmsgid \"Burgenland\"\nmsgstr \"\"\n\n#: at/at_states.py:6\nmsgid \"Carinthia\"\nmsgstr \"\"\n\n#: at/at_states.py:7\nmsgid \"Lower Austria\"\nmsgstr \"\"\n\n#: at/at_states.py:8\nmsgid \"Upper Austria\"\nmsgstr \"\"\n\n#: at/at_states.py:9\nmsgid \"Salzburg\"\nmsgstr \"\"\n\n#: at/at_states.py:10\nmsgid \"Styria\"\nmsgstr \"\"\n\n#: at/at_states.py:11\nmsgid \"Tyrol\"\nmsgstr \"\"\n\n#: at/at_states.py:12\nmsgid \"Vorarlberg\"\nmsgstr \"\"\n\n#: at/at_states.py:13\nmsgid \"Vienna\"\nmsgstr \"Vienna\"\n\n#: at/forms.py:22 ch/forms.py:22 no/forms.py:19\nmsgid \"Enter a zip code in the format XXXX.\"\nmsgstr \"\"\n\n#: at/forms.py:50\nmsgid \"Enter a valid Austrian Social Security Number in XXXX XXXXXX format.\"\nmsgstr \"\"\n\n#: au/forms.py:26\nmsgid \"Enter a 4 digit postcode.\"\nmsgstr \"\"\n\n#: au/models.py:9\nmsgid \"Australian State\"\nmsgstr \"\"\n\n#: au/models.py:19\nmsgid \"Australian Postcode\"\nmsgstr \"\"\n\n#: au/models.py:33\nmsgid \"Australian Phone number\"\nmsgstr \"\"\n\n#: be/be_provinces.py:5\nmsgid \"Antwerp\"\nmsgstr \"\"\n\n#: be/be_provinces.py:6\nmsgid \"Brussels\"\nmsgstr \"Brusel\"\n\n#: be/be_provinces.py:7\nmsgid \"East Flanders\"\nmsgstr \"\"\n\n#: be/be_provinces.py:8\nmsgid \"Flemish Brabant\"\nmsgstr \"\"\n\n#: be/be_provinces.py:9\nmsgid \"Hainaut\"\nmsgstr \"\"\n\n#: be/be_provinces.py:10\nmsgid \"Liege\"\nmsgstr \"\"\n\n#: be/be_provinces.py:11 nl/nl_provinces.py:9\nmsgid \"Limburg\"\nmsgstr \"\"\n\n#: be/be_provinces.py:12\nmsgid \"Luxembourg\"\nmsgstr \"Luksembourg\"\n\n#: be/be_provinces.py:13\nmsgid \"Namur\"\nmsgstr \"Namur\"\n\n#: be/be_provinces.py:14\nmsgid \"Walloon Brabant\"\nmsgstr \"\"\n\n#: be/be_provinces.py:15\nmsgid \"West Flanders\"\nmsgstr \"\"\n\n#: be/be_regions.py:5\nmsgid \"Brussels Capital Region\"\nmsgstr \"\"\n\n#: be/be_regions.py:6\nmsgid \"Flemish Region\"\nmsgstr \"\"\n\n#: be/be_regions.py:7\nmsgid \"Wallonia\"\nmsgstr \"\"\n\n#: be/forms.py:25\nmsgid \"Enter a valid postal code in the range and format 1XXX - 9XXX.\"\nmsgstr \"\"\n\n#: be/forms.py:48\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\nmsgstr \"\"\n\n#: br/forms.py:22\nmsgid \"Enter a zip code in the format XXXXX-XXX.\"\nmsgstr \"\"\n\n#: br/forms.py:31\nmsgid \"Phone numbers must be in XX-XXXX-XXXX format.\"\nmsgstr \"\"\n\n#: br/forms.py:58\nmsgid \"\"\n\"Select a valid brazilian state. That state is not one of the available \"\n\"states.\"\nmsgstr \"\"\n\n#: br/forms.py:93\nmsgid \"Invalid CPF number.\"\nmsgstr \"\"\n\n#: br/forms.py:94\nmsgid \"This field requires at most 11 digits or 14 characters.\"\nmsgstr \"\"\n\n#: br/forms.py:133\nmsgid \"Invalid CNPJ number.\"\nmsgstr \"\"\n\n#: br/forms.py:135\nmsgid \"This field requires at least 14 digits\"\nmsgstr \"\"\n\n#: ca/forms.py:29\nmsgid \"Enter a postal code in the format XXX XXX.\"\nmsgstr \"\"\n\n#: ca/forms.py:47 us/forms.py:30\nmsgid \"Phone numbers must be in XXX-XXX-XXXX format.\"\nmsgstr \"\"\n\n#: ca/forms.py:69\nmsgid \"Enter a Canadian province or territory.\"\nmsgstr \"\"\n\n#: ca/forms.py:110\nmsgid \"Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.\"\nmsgstr \"\"\n\n#: ch/ch_states.py:5\nmsgid \"Aargau\"\nmsgstr \"\"\n\n#: ch/ch_states.py:6\nmsgid \"Appenzell Innerrhoden\"\nmsgstr \"\"\n\n#: ch/ch_states.py:7\nmsgid \"Appenzell Ausserrhoden\"\nmsgstr \"\"\n\n#: ch/ch_states.py:8\nmsgid \"Basel-Stadt\"\nmsgstr \"\"\n\n#: ch/ch_states.py:9\nmsgid \"Basel-Land\"\nmsgstr \"\"\n\n#: ch/ch_states.py:10\nmsgid \"Berne\"\nmsgstr \"\"\n\n#: ch/ch_states.py:11\nmsgid \"Fribourg\"\nmsgstr \"\"\n\n#: ch/ch_states.py:12\nmsgid \"Geneva\"\nmsgstr \"\"\n\n#: ch/ch_states.py:13\nmsgid \"Glarus\"\nmsgstr \"\"\n\n#: ch/ch_states.py:14\nmsgid \"Graubuenden\"\nmsgstr \"\"\n\n#: ch/ch_states.py:15\nmsgid \"Jura\"\nmsgstr \"\"\n\n#: ch/ch_states.py:16\nmsgid \"Lucerne\"\nmsgstr \"\"\n\n#: ch/ch_states.py:17\nmsgid \"Neuchatel\"\nmsgstr \"\"\n\n#: ch/ch_states.py:18\nmsgid \"Nidwalden\"\nmsgstr \"\"\n\n#: ch/ch_states.py:19\nmsgid \"Obwalden\"\nmsgstr \"\"\n\n#: ch/ch_states.py:20\nmsgid \"Schaffhausen\"\nmsgstr \"\"\n\n#: ch/ch_states.py:21\nmsgid \"Schwyz\"\nmsgstr \"\"\n\n#: ch/ch_states.py:22\nmsgid \"Solothurn\"\nmsgstr \"\"\n\n#: ch/ch_states.py:23\nmsgid \"St. Gallen\"\nmsgstr \"\"\n\n#: ch/ch_states.py:24\nmsgid \"Thurgau\"\nmsgstr \"\"\n\n#: ch/ch_states.py:25\nmsgid \"Ticino\"\nmsgstr \"\"\n\n#: ch/ch_states.py:26\nmsgid \"Uri\"\nmsgstr \"\"\n\n#: ch/ch_states.py:27\nmsgid \"Valais\"\nmsgstr \"\"\n\n#: ch/ch_states.py:28\nmsgid \"Vaud\"\nmsgstr \"\"\n\n#: ch/ch_states.py:29\nmsgid \"Zug\"\nmsgstr \"\"\n\n#: ch/ch_states.py:30\nmsgid \"Zurich\"\nmsgstr \"\"\n\n#: ch/forms.py:37\nmsgid \"Phone numbers must be in 0XX XXX XX XX format.\"\nmsgstr \"\"\n\n#: ch/forms.py:68\nmsgid \"\"\n\"Enter a valid Swiss identity or passport card number in X1234567<0 or \"\n\"1234567890 format.\"\nmsgstr \"\"\n\n#: cl/forms.py:32\nmsgid \"Enter a valid Chilean RUT.\"\nmsgstr \"\"\n\n#: cl/forms.py:33\nmsgid \"Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.\"\nmsgstr \"\"\n\n#: cl/forms.py:34\nmsgid \"The Chilean RUT is not valid.\"\nmsgstr \"\"\n\n#: cn/forms.py:84\nmsgid \"Enter a post code in the format XXXXXX.\"\nmsgstr \"\"\n\n#: cn/forms.py:105\nmsgid \"ID Card Number consists of 15 or 18 digits.\"\nmsgstr \"\"\n\n#: cn/forms.py:106\nmsgid \"Invalid ID Card Number: Wrong checksum\"\nmsgstr \"\"\n\n#: cn/forms.py:107\nmsgid \"Invalid ID Card Number: Wrong birthdate\"\nmsgstr \"\"\n\n#: cn/forms.py:108\nmsgid \"Invalid ID Card Number: Wrong location code\"\nmsgstr \"\"\n\n#: cn/forms.py:193\nmsgid \"Enter a valid phone number.\"\nmsgstr \"\"\n\n#: cn/forms.py:210\nmsgid \"Enter a valid cell number.\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:8\nmsgid \"Prague\"\nmsgstr \"Praha\"\n\n#: cz/cz_regions.py:9\nmsgid \"Central Bohemian Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:10\nmsgid \"South Bohemian Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:11\nmsgid \"Pilsen Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:12\nmsgid \"Carlsbad Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:13\nmsgid \"Usti Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:14\nmsgid \"Liberec Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:15\nmsgid \"Hradec Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:16\nmsgid \"Pardubice Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:17\nmsgid \"Vysocina Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:18\nmsgid \"South Moravian Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:19\nmsgid \"Olomouc Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:20\nmsgid \"Zlin Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:21\nmsgid \"Moravian-Silesian Region\"\nmsgstr \"\"\n\n#: cz/forms.py:32 sk/forms.py:33\nmsgid \"Enter a postal code in the format XXXXX or XXX XX.\"\nmsgstr \"\"\n\n#: cz/forms.py:52\nmsgid \"Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.\"\nmsgstr \"\"\n\n#: cz/forms.py:53\nmsgid \"Enter a valid birth number.\"\nmsgstr \"\"\n\n#: cz/forms.py:102\nmsgid \"Enter a valid IC number.\"\nmsgstr \"\"\n\n#: de/de_states.py:5\nmsgid \"Baden-Wuerttemberg\"\nmsgstr \"\"\n\n#: de/de_states.py:6\nmsgid \"Bavaria\"\nmsgstr \"Bavaria\"\n\n#: de/de_states.py:7\nmsgid \"Berlin\"\nmsgstr \"Berlin\"\n\n#: de/de_states.py:8\nmsgid \"Brandenburg\"\nmsgstr \"\"\n\n#: de/de_states.py:9\nmsgid \"Bremen\"\nmsgstr \"Bremen\"\n\n#: de/de_states.py:10\nmsgid \"Hamburg\"\nmsgstr \"\"\n\n#: de/de_states.py:11\nmsgid \"Hessen\"\nmsgstr \"\"\n\n#: de/de_states.py:12\nmsgid \"Mecklenburg-Western Pomerania\"\nmsgstr \"\"\n\n#: de/de_states.py:13\nmsgid \"Lower Saxony\"\nmsgstr \"\"\n\n#: de/de_states.py:14\nmsgid \"North Rhine-Westphalia\"\nmsgstr \"\"\n\n#: de/de_states.py:15\nmsgid \"Rhineland-Palatinate\"\nmsgstr \"\"\n\n#: de/de_states.py:16\nmsgid \"Saarland\"\nmsgstr \"Saarland\"\n\n#: de/de_states.py:17\nmsgid \"Saxony\"\nmsgstr \"\"\n\n#: de/de_states.py:18\nmsgid \"Saxony-Anhalt\"\nmsgstr \"\"\n\n#: de/de_states.py:19\nmsgid \"Schleswig-Holstein\"\nmsgstr \"\"\n\n#: de/de_states.py:20\nmsgid \"Thuringia\"\nmsgstr \"\"\n\n#: de/forms.py:20 fi/forms.py:18 fr/forms.py:20\nmsgid \"Enter a zip code in the format XXXXX.\"\nmsgstr \"\"\n\n#: de/forms.py:46\nmsgid \"\"\n\"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"format.\"\nmsgstr \"\"\n\n#: es/es_provinces.py:5\nmsgid \"Araba\"\nmsgstr \"\"\n\n#: es/es_provinces.py:6\nmsgid \"Albacete\"\nmsgstr \"\"\n\n#: es/es_provinces.py:7\nmsgid \"Alacant\"\nmsgstr \"\"\n\n#: es/es_provinces.py:8\nmsgid \"Almeria\"\nmsgstr \"\"\n\n#: es/es_provinces.py:9\nmsgid \"Avila\"\nmsgstr \"Avila\"\n\n#: es/es_provinces.py:10\nmsgid \"Badajoz\"\nmsgstr \"Badajoz\"\n\n#: es/es_provinces.py:11\nmsgid \"Illes Balears\"\nmsgstr \"Inizi Balearez\"\n\n#: es/es_provinces.py:12\nmsgid \"Barcelona\"\nmsgstr \"Barcelona\"\n\n#: es/es_provinces.py:13\nmsgid \"Burgos\"\nmsgstr \"Burgos\"\n\n#: es/es_provinces.py:14\nmsgid \"Caceres\"\nmsgstr \"Caceres\"\n\n#: es/es_provinces.py:15\nmsgid \"Cadiz\"\nmsgstr \"Cadiz\"\n\n#: es/es_provinces.py:16\nmsgid \"Castello\"\nmsgstr \"Castello\"\n\n#: es/es_provinces.py:17\nmsgid \"Ciudad Real\"\nmsgstr \"Ciudad Real\"\n\n#: es/es_provinces.py:18\nmsgid \"Cordoba\"\nmsgstr \"Cordoba\"\n\n#: es/es_provinces.py:19\nmsgid \"A Coruna\"\nmsgstr \"A Coruna\"\n\n#: es/es_provinces.py:20\nmsgid \"Cuenca\"\nmsgstr \"Cuenca\"\n\n#: es/es_provinces.py:21\nmsgid \"Girona\"\nmsgstr \"Girona\"\n\n#: es/es_provinces.py:22\nmsgid \"Granada\"\nmsgstr \"Granada\"\n\n#: es/es_provinces.py:23\nmsgid \"Guadalajara\"\nmsgstr \"Guadalajara\"\n\n#: es/es_provinces.py:24\nmsgid \"Guipuzkoa\"\nmsgstr \"Gipuzkoa\"\n\n#: es/es_provinces.py:25\nmsgid \"Huelva\"\nmsgstr \"Huelva\"\n\n#: es/es_provinces.py:26\nmsgid \"Huesca\"\nmsgstr \"Huesca\"\n\n#: es/es_provinces.py:27\nmsgid \"Jaen\"\nmsgstr \"Jaen\"\n\n#: es/es_provinces.py:28\nmsgid \"Leon\"\nmsgstr \"Leon\"\n\n#: es/es_provinces.py:29\nmsgid \"Lleida\"\nmsgstr \"Lleida\"\n\n#: es/es_provinces.py:30 es/es_regions.py:17\nmsgid \"La Rioja\"\nmsgstr \"La Rioja\"\n\n#: es/es_provinces.py:31\nmsgid \"Lugo\"\nmsgstr \"Lugo\"\n\n#: es/es_provinces.py:32 es/es_regions.py:18\nmsgid \"Madrid\"\nmsgstr \"Madrid\"\n\n#: es/es_provinces.py:33\nmsgid \"Malaga\"\nmsgstr \"Malaga\"\n\n#: es/es_provinces.py:34\nmsgid \"Murcia\"\nmsgstr \"Murcia\"\n\n#: es/es_provinces.py:35\nmsgid \"Navarre\"\nmsgstr \"Nafaroa\"\n\n#: es/es_provinces.py:36\nmsgid \"Ourense\"\nmsgstr \"Ourense\"\n\n#: es/es_provinces.py:37\nmsgid \"Asturias\"\nmsgstr \"Asturias\"\n\n#: es/es_provinces.py:38\nmsgid \"Palencia\"\nmsgstr \"Palencia\"\n\n#: es/es_provinces.py:39\nmsgid \"Las Palmas\"\nmsgstr \"Las Palmas\"\n\n#: es/es_provinces.py:40\nmsgid \"Pontevedra\"\nmsgstr \"Pontevedra\"\n\n#: es/es_provinces.py:41\nmsgid \"Salamanca\"\nmsgstr \"Salamanca\"\n\n#: es/es_provinces.py:42\nmsgid \"Santa Cruz de Tenerife\"\nmsgstr \"Santa Cruz de Tenerife\"\n\n#: es/es_provinces.py:43 es/es_regions.py:11\nmsgid \"Cantabria\"\nmsgstr \"Cantabria\"\n\n#: es/es_provinces.py:44\nmsgid \"Segovia\"\nmsgstr \"Segovia\"\n\n#: es/es_provinces.py:45\nmsgid \"Seville\"\nmsgstr \"Sevilha\"\n\n#: es/es_provinces.py:46\nmsgid \"Soria\"\nmsgstr \"Soria\"\n\n#: es/es_provinces.py:47\nmsgid \"Tarragona\"\nmsgstr \"Tarragona\"\n\n#: es/es_provinces.py:48\nmsgid \"Teruel\"\nmsgstr \"Teruel\"\n\n#: es/es_provinces.py:49\nmsgid \"Toledo\"\nmsgstr \"Toledo\"\n\n#: es/es_provinces.py:50\nmsgid \"Valencia\"\nmsgstr \"Valencia\"\n\n#: es/es_provinces.py:51\nmsgid \"Valladolid\"\nmsgstr \"Valladolid\"\n\n#: es/es_provinces.py:52\nmsgid \"Bizkaia\"\nmsgstr \"Bizkaia\"\n\n#: es/es_provinces.py:53\nmsgid \"Zamora\"\nmsgstr \"Zamora\"\n\n#: es/es_provinces.py:54\nmsgid \"Zaragoza\"\nmsgstr \"Zaragoza\"\n\n#: es/es_provinces.py:55\nmsgid \"Ceuta\"\nmsgstr \"Ceuta\"\n\n#: es/es_provinces.py:56\nmsgid \"Melilla\"\nmsgstr \"\"\n\n#: es/es_regions.py:5\nmsgid \"Andalusia\"\nmsgstr \"\"\n\n#: es/es_regions.py:6\nmsgid \"Aragon\"\nmsgstr \"\"\n\n#: es/es_regions.py:7\nmsgid \"Principality of Asturias\"\nmsgstr \"\"\n\n#: es/es_regions.py:8\nmsgid \"Balearic Islands\"\nmsgstr \"\"\n\n#: es/es_regions.py:9\nmsgid \"Basque Country\"\nmsgstr \"\"\n\n#: es/es_regions.py:10\nmsgid \"Canary Islands\"\nmsgstr \"\"\n\n#: es/es_regions.py:12\nmsgid \"Castile-La Mancha\"\nmsgstr \"\"\n\n#: es/es_regions.py:13\nmsgid \"Castile and Leon\"\nmsgstr \"\"\n\n#: es/es_regions.py:14\nmsgid \"Catalonia\"\nmsgstr \"\"\n\n#: es/es_regions.py:15\nmsgid \"Extremadura\"\nmsgstr \"\"\n\n#: es/es_regions.py:16\nmsgid \"Galicia\"\nmsgstr \"\"\n\n#: es/es_regions.py:19\nmsgid \"Region of Murcia\"\nmsgstr \"\"\n\n#: es/es_regions.py:20\nmsgid \"Foral Community of Navarre\"\nmsgstr \"\"\n\n#: es/es_regions.py:21\nmsgid \"Valencian Community\"\nmsgstr \"\"\n\n#: es/forms.py:26\nmsgid \"Enter a valid postal code in the range and format 01XXX - 52XXX.\"\nmsgstr \"\"\n\n#: es/forms.py:46\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or \"\n\"9XXXXXXXX.\"\nmsgstr \"\"\n\n#: es/forms.py:73\nmsgid \"Please enter a valid NIF, NIE, or CIF.\"\nmsgstr \"\"\n\n#: es/forms.py:74\nmsgid \"Please enter a valid NIF or NIE.\"\nmsgstr \"\"\n\n#: es/forms.py:75\nmsgid \"Invalid checksum for NIF.\"\nmsgstr \"\"\n\n#: es/forms.py:76\nmsgid \"Invalid checksum for NIE.\"\nmsgstr \"\"\n\n#: es/forms.py:77\nmsgid \"Invalid checksum for CIF.\"\nmsgstr \"\"\n\n#: es/forms.py:149\nmsgid \"\"\n\"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.\"\nmsgstr \"\"\n\n#: es/forms.py:150\nmsgid \"Invalid checksum for bank account number.\"\nmsgstr \"\"\n\n#: fi/forms.py:33\nmsgid \"Enter a valid Finnish social security number.\"\nmsgstr \"\"\n\n#: fr/forms.py:35\nmsgid \"Phone numbers must be in 0X XX XX XX XX format.\"\nmsgstr \"\"\n\n#: gb/forms.py:25\nmsgid \"Enter a valid postcode.\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:11\nmsgid \"Bedfordshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:12\nmsgid \"Buckinghamshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:14\nmsgid \"Cheshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:15\nmsgid \"Cornwall and Isles of Scilly\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:16\nmsgid \"Cumbria\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:17\nmsgid \"Derbyshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:18\nmsgid \"Devon\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:19\nmsgid \"Dorset\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:20\nmsgid \"Durham\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:21\nmsgid \"East Sussex\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:22\nmsgid \"Essex\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:23\nmsgid \"Gloucestershire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:24\nmsgid \"Greater London\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:25\nmsgid \"Greater Manchester\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:26\nmsgid \"Hampshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:27\nmsgid \"Hertfordshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:28\nmsgid \"Kent\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:29\nmsgid \"Lancashire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:30\nmsgid \"Leicestershire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:31\nmsgid \"Lincolnshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:32\nmsgid \"Merseyside\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:33\nmsgid \"Norfolk\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:34\nmsgid \"North Yorkshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:35\nmsgid \"Northamptonshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:36\nmsgid \"Northumberland\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:37\nmsgid \"Nottinghamshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:38\nmsgid \"Oxfordshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:39\nmsgid \"Shropshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:40\nmsgid \"Somerset\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:41\nmsgid \"South Yorkshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:42\nmsgid \"Staffordshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:43\nmsgid \"Suffolk\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:44\nmsgid \"Surrey\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:45\nmsgid \"Tyne and Wear\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:46\nmsgid \"Warwickshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:47\nmsgid \"West Midlands\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:48\nmsgid \"West Sussex\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:49\nmsgid \"West Yorkshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:50\nmsgid \"Wiltshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:51\nmsgid \"Worcestershire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:55\nmsgid \"County Antrim\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:56\nmsgid \"County Armagh\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:57\nmsgid \"County Down\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:58\nmsgid \"County Fermanagh\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:59\nmsgid \"County Londonderry\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:60\nmsgid \"County Tyrone\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:64\nmsgid \"Clwyd\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:65\nmsgid \"Dyfed\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:66\nmsgid \"Gwent\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:67\nmsgid \"Gwynedd\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:68\nmsgid \"Mid Glamorgan\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:69\nmsgid \"Powys\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:70\nmsgid \"South Glamorgan\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:71\nmsgid \"West Glamorgan\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:75\nmsgid \"Borders\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:76\nmsgid \"Central Scotland\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:77\nmsgid \"Dumfries and Galloway\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:78\nmsgid \"Fife\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:79\nmsgid \"Grampian\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:80\nmsgid \"Highland\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:81\nmsgid \"Lothian\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:82\nmsgid \"Orkney Islands\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:83\nmsgid \"Shetland Islands\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:84\nmsgid \"Strathclyde\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:85\nmsgid \"Tayside\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:86\nmsgid \"Western Isles\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:90\nmsgid \"England\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:91\nmsgid \"Northern Ireland\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:92\nmsgid \"Scotland\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:93\nmsgid \"Wales\"\nmsgstr \"\"\n\n#: hk/forms.py:37\n#, python-format\nmsgid \"Phone number should not start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:40\n#, python-format\nmsgid \"Phone number must be in one of the following formats: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:42\n#, python-format\nmsgid \"Phone number should start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hr/forms.py:76\nmsgid \"Enter a valid 13 digit JMBG\"\nmsgstr \"\"\n\n#: hr/forms.py:77\nmsgid \"Error in date segment\"\nmsgstr \"\"\n\n#: hr/forms.py:123\nmsgid \"Enter a valid 11 digit OIB\"\nmsgstr \"\"\n\n#: hr/forms.py:152 id/forms.py:112\nmsgid \"Enter a valid vehicle license plate number\"\nmsgstr \"\"\n\n#: hr/forms.py:153\nmsgid \"Enter a valid location code\"\nmsgstr \"\"\n\n#: hr/forms.py:154\nmsgid \"Number part cannot be zero\"\nmsgstr \"\"\n\n#: hr/forms.py:190\nmsgid \"Enter a valid 5 digit postal code\"\nmsgstr \"\"\n\n#: hr/forms.py:218 id/forms.py:72 nl/forms.py:56\nmsgid \"Enter a valid phone number\"\nmsgstr \"\"\n\n#: hr/forms.py:219\nmsgid \"Enter a valid area or mobile network code\"\nmsgstr \"\"\n\n#: hr/forms.py:220\nmsgid \"The phone nubmer is too long\"\nmsgstr \"\"\n\n#: hr/forms.py:258\nmsgid \"Enter a valid 19 digit JMBAG starting with 601983\"\nmsgstr \"\"\n\n#: hr/forms.py:259\nmsgid \"Card issue number cannot be zero\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:14\nmsgid \"Grad Zagreb\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:15\nmsgid \"Bjelovarsko-bilogorska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:16\nmsgid \"Brodsko-posavska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:17\nmsgid \"Dubrovačko-neretvanska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:18\nmsgid \"Istarska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:19\nmsgid \"Karlovačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:20\nmsgid \"Koprivničko-križevačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:21\nmsgid \"Krapinsko-zagorska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:22\nmsgid \"Ličko-senjska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:23\nmsgid \"Međimurska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:24\nmsgid \"Osječko-baranjska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:25\nmsgid \"Požeško-slavonska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:26\nmsgid \"Primorsko-goranska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:27\nmsgid \"Sisačko-moslavačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:28\nmsgid \"Splitsko-dalmatinska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:29\nmsgid \"Šibensko-kninska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:30\nmsgid \"Varaždinska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:31\nmsgid \"Virovitičko-podravska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:32\nmsgid \"Vukovarsko-srijemska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:33\nmsgid \"Zadarska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:34\nmsgid \"Zagrebačka županija\"\nmsgstr \"\"\n\n#: id/forms.py:31\nmsgid \"Enter a valid post code\"\nmsgstr \"\"\n\n#: id/forms.py:176\nmsgid \"Enter a valid NIK/KTP number\"\nmsgstr \"\"\n\n#: id/id_choices.py:15\nmsgid \"Aceh\"\nmsgstr \"\"\n\n#: id/id_choices.py:16 id/id_choices.py:79\nmsgid \"Bali\"\nmsgstr \"\"\n\n#: id/id_choices.py:17 id/id_choices.py:51\nmsgid \"Banten\"\nmsgstr \"\"\n\n#: id/id_choices.py:18 id/id_choices.py:60\nmsgid \"Bengkulu\"\nmsgstr \"\"\n\n#: id/id_choices.py:19 id/id_choices.py:53\nmsgid \"Yogyakarta\"\nmsgstr \"\"\n\n#: id/id_choices.py:20 id/id_choices.py:57\nmsgid \"Jakarta\"\nmsgstr \"\"\n\n#: id/id_choices.py:21 id/id_choices.py:81\nmsgid \"Gorontalo\"\nmsgstr \"\"\n\n#: id/id_choices.py:22 id/id_choices.py:63\nmsgid \"Jambi\"\nmsgstr \"\"\n\n#: id/id_choices.py:23\nmsgid \"Jawa Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:24\nmsgid \"Jawa Tengah\"\nmsgstr \"\"\n\n#: id/id_choices.py:25\nmsgid \"Jawa Timur\"\nmsgstr \"\"\n\n#: id/id_choices.py:26 id/id_choices.py:94\nmsgid \"Kalimantan Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:27 id/id_choices.py:72\nmsgid \"Kalimantan Selatan\"\nmsgstr \"\"\n\n#: id/id_choices.py:28 id/id_choices.py:95\nmsgid \"Kalimantan Tengah\"\nmsgstr \"\"\n\n#: id/id_choices.py:29 id/id_choices.py:96\nmsgid \"Kalimantan Timur\"\nmsgstr \"\"\n\n#: id/id_choices.py:30\nmsgid \"Kepulauan Bangka-Belitung\"\nmsgstr \"\"\n\n#: id/id_choices.py:31 id/id_choices.py:68\nmsgid \"Kepulauan Riau\"\nmsgstr \"\"\n\n#: id/id_choices.py:32 id/id_choices.py:61\nmsgid \"Lampung\"\nmsgstr \"\"\n\n#: id/id_choices.py:33 id/id_choices.py:76\nmsgid \"Maluku\"\nmsgstr \"\"\n\n#: id/id_choices.py:34 id/id_choices.py:77\nmsgid \"Maluku Utara\"\nmsgstr \"\"\n\n#: id/id_choices.py:35\nmsgid \"Nusa Tenggara Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:36\nmsgid \"Nusa Tenggara Timur\"\nmsgstr \"\"\n\n#: id/id_choices.py:37\nmsgid \"Papua\"\nmsgstr \"Papoua\"\n\n#: id/id_choices.py:38\nmsgid \"Papua Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:39 id/id_choices.py:66\nmsgid \"Riau\"\nmsgstr \"\"\n\n#: id/id_choices.py:40 id/id_choices.py:74\nmsgid \"Sulawesi Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:41 id/id_choices.py:75\nmsgid \"Sulawesi Selatan\"\nmsgstr \"\"\n\n#: id/id_choices.py:42 id/id_choices.py:82\nmsgid \"Sulawesi Tengah\"\nmsgstr \"\"\n\n#: id/id_choices.py:43 id/id_choices.py:85\nmsgid \"Sulawesi Tenggara\"\nmsgstr \"\"\n\n#: id/id_choices.py:44\nmsgid \"Sulawesi Utara\"\nmsgstr \"\"\n\n#: id/id_choices.py:45 id/id_choices.py:58\nmsgid \"Sumatera Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:46 id/id_choices.py:62\nmsgid \"Sumatera Selatan\"\nmsgstr \"\"\n\n#: id/id_choices.py:47 id/id_choices.py:64\nmsgid \"Sumatera Utara\"\nmsgstr \"\"\n\n#: id/id_choices.py:52\nmsgid \"Magelang\"\nmsgstr \"\"\n\n#: id/id_choices.py:54\nmsgid \"Surakarta - Solo\"\nmsgstr \"\"\n\n#: id/id_choices.py:55\nmsgid \"Madiun\"\nmsgstr \"\"\n\n#: id/id_choices.py:56\nmsgid \"Kediri\"\nmsgstr \"\"\n\n#: id/id_choices.py:59\nmsgid \"Tapanuli\"\nmsgstr \"\"\n\n#: id/id_choices.py:65\nmsgid \"Nanggroe Aceh Darussalam\"\nmsgstr \"\"\n\n#: id/id_choices.py:67\nmsgid \"Kepulauan Bangka Belitung\"\nmsgstr \"\"\n\n#: id/id_choices.py:69\nmsgid \"Corps Consulate\"\nmsgstr \"\"\n\n#: id/id_choices.py:70\nmsgid \"Corps Diplomatic\"\nmsgstr \"\"\n\n#: id/id_choices.py:71\nmsgid \"Bandung\"\nmsgstr \"Bandung\"\n\n#: id/id_choices.py:73\nmsgid \"Sulawesi Utara Daratan\"\nmsgstr \"\"\n\n#: id/id_choices.py:78\nmsgid \"NTT - Timor\"\nmsgstr \"\"\n\n#: id/id_choices.py:80\nmsgid \"Sulawesi Utara Kepulauan\"\nmsgstr \"\"\n\n#: id/id_choices.py:83\nmsgid \"NTB - Lombok\"\nmsgstr \"\"\n\n#: id/id_choices.py:84\nmsgid \"Papua dan Papua Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:86\nmsgid \"Cirebon\"\nmsgstr \"\"\n\n#: id/id_choices.py:87\nmsgid \"NTB - Sumbawa\"\nmsgstr \"\"\n\n#: id/id_choices.py:88\nmsgid \"NTT - Flores\"\nmsgstr \"\"\n\n#: id/id_choices.py:89\nmsgid \"NTT - Sumba\"\nmsgstr \"\"\n\n#: id/id_choices.py:90\nmsgid \"Bogor\"\nmsgstr \"Bogor\"\n\n#: id/id_choices.py:91\nmsgid \"Pekalongan\"\nmsgstr \"Pekalongan\"\n\n#: id/id_choices.py:92\nmsgid \"Semarang\"\nmsgstr \"Semarang\"\n\n#: id/id_choices.py:93\nmsgid \"Pati\"\nmsgstr \"Pati\"\n\n#: id/id_choices.py:97\nmsgid \"Surabaya\"\nmsgstr \"Surabaya\"\n\n#: id/id_choices.py:98\nmsgid \"Madura\"\nmsgstr \"Madura\"\n\n#: id/id_choices.py:99\nmsgid \"Malang\"\nmsgstr \"Malang\"\n\n#: id/id_choices.py:100\nmsgid \"Jember\"\nmsgstr \"\"\n\n#: id/id_choices.py:101\nmsgid \"Banyumas\"\nmsgstr \"\"\n\n#: id/id_choices.py:102\nmsgid \"Federal Government\"\nmsgstr \"\"\n\n#: id/id_choices.py:103\nmsgid \"Bojonegoro\"\nmsgstr \"\"\n\n#: id/id_choices.py:104\nmsgid \"Purwakarta\"\nmsgstr \"\"\n\n#: id/id_choices.py:105\nmsgid \"Sidoarjo\"\nmsgstr \"\"\n\n#: id/id_choices.py:106\nmsgid \"Garut\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:8\nmsgid \"Antrim\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:9\nmsgid \"Armagh\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:10\nmsgid \"Carlow\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:11\nmsgid \"Cavan\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:12\nmsgid \"Clare\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:13\nmsgid \"Cork\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:14\nmsgid \"Derry\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:15\nmsgid \"Donegal\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:16\nmsgid \"Down\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:17\nmsgid \"Dublin\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:18\nmsgid \"Fermanagh\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:19\nmsgid \"Galway\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:20\nmsgid \"Kerry\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:21\nmsgid \"Kildare\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:22\nmsgid \"Kilkenny\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:23\nmsgid \"Laois\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:24\nmsgid \"Leitrim\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:25\nmsgid \"Limerick\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:26\nmsgid \"Longford\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:27\nmsgid \"Louth\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:28\nmsgid \"Mayo\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:29\nmsgid \"Meath\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:30\nmsgid \"Monaghan\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:31\nmsgid \"Offaly\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:32\nmsgid \"Roscommon\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:33\nmsgid \"Sligo\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:34\nmsgid \"Tipperary\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:35\nmsgid \"Tyrone\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:36\nmsgid \"Waterford\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:37\nmsgid \"Westmeath\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:38\nmsgid \"Wexford\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:39\nmsgid \"Wicklow\"\nmsgstr \"\"\n\n#: il/forms.py:32\nmsgid \"Enter a postal code in the format XXXXX\"\nmsgstr \"\"\n\n#: il/forms.py:51\nmsgid \"Enter a valid ID number.\"\nmsgstr \"\"\n\n#: in_/forms.py:41\nmsgid \"Enter a zip code in the format XXXXXX or XXX XXX.\"\nmsgstr \"\"\n\n#: in_/forms.py:64\nmsgid \"Enter an Indian state or territory.\"\nmsgstr \"\"\n\n#: in_/forms.py:103\nmsgid \"Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.\"\nmsgstr \"\"\n\n#: is_/forms.py:22\nmsgid \"\"\n\"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.\"\nmsgstr \"\"\n\n#: is_/forms.py:23\nmsgid \"The Icelandic identification number is not valid.\"\nmsgstr \"\"\n\n#: it/forms.py:21\nmsgid \"Enter a valid zip code.\"\nmsgstr \"\"\n\n#: it/forms.py:48\nmsgid \"Enter a valid Social Security number.\"\nmsgstr \"\"\n\n#: it/forms.py:73\nmsgid \"Enter a valid VAT number.\"\nmsgstr \"\"\n\n#: jp/forms.py:19\nmsgid \"Enter a postal code in the format XXXXXXX or XXX-XXXX.\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:4\nmsgid \"Hokkaido\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:5\nmsgid \"Aomori\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:6\nmsgid \"Iwate\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:7\nmsgid \"Miyagi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:8\nmsgid \"Akita\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:9\nmsgid \"Yamagata\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:10\nmsgid \"Fukushima\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:11\nmsgid \"Ibaraki\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:12\nmsgid \"Tochigi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:13\nmsgid \"Gunma\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:14\nmsgid \"Saitama\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:15\nmsgid \"Chiba\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:16\nmsgid \"Tokyo\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:17\nmsgid \"Kanagawa\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:18\nmsgid \"Yamanashi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:19\nmsgid \"Nagano\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:20\nmsgid \"Niigata\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:21\nmsgid \"Toyama\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:22\nmsgid \"Ishikawa\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:23\nmsgid \"Fukui\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:24\nmsgid \"Gifu\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:25\nmsgid \"Shizuoka\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:26\nmsgid \"Aichi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:27\nmsgid \"Mie\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:28\nmsgid \"Shiga\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:29\nmsgid \"Kyoto\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:30\nmsgid \"Osaka\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:31\nmsgid \"Hyogo\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:32\nmsgid \"Nara\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:33\nmsgid \"Wakayama\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:34\nmsgid \"Tottori\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:35\nmsgid \"Shimane\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:36\nmsgid \"Okayama\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:37\nmsgid \"Hiroshima\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:38\nmsgid \"Yamaguchi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:39\nmsgid \"Tokushima\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:40\nmsgid \"Kagawa\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:41\nmsgid \"Ehime\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:42\nmsgid \"Kochi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:43\nmsgid \"Fukuoka\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:44\nmsgid \"Saga\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:45\nmsgid \"Nagasaki\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:46\nmsgid \"Kumamoto\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:47\nmsgid \"Oita\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:48\nmsgid \"Miyazaki\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:49\nmsgid \"Kagoshima\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:50\nmsgid \"Okinawa\"\nmsgstr \"\"\n\n#: kw/forms.py:27\nmsgid \"Enter a valid Kuwaiti Civil ID number\"\nmsgstr \"\"\n\n#: mk/forms.py:18\nmsgid \"\"\n\"Identity card numbers must contain either 4 to 7 digits or an uppercase \"\n\"letter and 7 digits.\"\nmsgstr \"\"\n\n#: mk/forms.py:57 si/forms.py:24\nmsgid \"This field should contain exactly 13 digits.\"\nmsgstr \"\"\n\n#: mk/forms.py:58\nmsgid \"The first 7 digits of the UMCN must represent a valid past date.\"\nmsgstr \"\"\n\n#: mk/forms.py:59\nmsgid \"The UMCN is not valid.\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:10\nmsgid \"Aerodrom\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:11\nmsgid \"Aračinovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:12\nmsgid \"Berovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:13\nmsgid \"Bitola\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:14\nmsgid \"Bogdanci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:15\nmsgid \"Bogovinje\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:16\nmsgid \"Bosilovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:17\nmsgid \"Brvenica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:18\nmsgid \"Butel\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:19\nmsgid \"Valandovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:20\nmsgid \"Vasilevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:21\nmsgid \"Vevčani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:22\nmsgid \"Veles\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:23\nmsgid \"Vinica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:24\nmsgid \"Vraneštica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:25\nmsgid \"Vrapčište\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:26\nmsgid \"Gazi Baba\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:27\nmsgid \"Gevgelija\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:28\nmsgid \"Gostivar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:29\nmsgid \"Gradsko\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:30\nmsgid \"Debar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:31\nmsgid \"Debarca\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:32\nmsgid \"Delčevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:33\nmsgid \"Demir Kapija\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:34\nmsgid \"Demir Hisar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:35\nmsgid \"Dolneni\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:36\nmsgid \"Drugovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:37\nmsgid \"Gjorče Petrov\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:38\nmsgid \"Želino\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:39\nmsgid \"Zajas\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:40\nmsgid \"Zelenikovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:41\nmsgid \"Zrnovci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:42\nmsgid \"Ilinden\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:43\nmsgid \"Jegunovce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:44\nmsgid \"Kavadarci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:45\nmsgid \"Karbinci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:46\nmsgid \"Karpoš\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:47\nmsgid \"Kisela Voda\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:48\nmsgid \"Kičevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:49\nmsgid \"Konče\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:50\nmsgid \"Koćani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:51\nmsgid \"Kratovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:52\nmsgid \"Kriva Palanka\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:53\nmsgid \"Krivogaštani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:54\nmsgid \"Kruševo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:55\nmsgid \"Kumanovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:56\nmsgid \"Lipkovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:57\nmsgid \"Lozovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:58\nmsgid \"Mavrovo i Rostuša\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:59\nmsgid \"Makedonska Kamenica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:60\nmsgid \"Makedonski Brod\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:61\nmsgid \"Mogila\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:62\nmsgid \"Negotino\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:63\nmsgid \"Novaci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:64\nmsgid \"Novo Selo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:65\nmsgid \"Oslomej\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:66\nmsgid \"Ohrid\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:67\nmsgid \"Petrovec\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:68\nmsgid \"Pehčevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:69\nmsgid \"Plasnica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:70\nmsgid \"Prilep\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:71\nmsgid \"Probištip\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:72\nmsgid \"Radoviš\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:73\nmsgid \"Rankovce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:74\nmsgid \"Resen\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:75\nmsgid \"Rosoman\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:76\nmsgid \"Saraj\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:77\nmsgid \"Sveti Nikole\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:78\nmsgid \"Sopište\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:79\nmsgid \"Star Dojran\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:80\nmsgid \"Staro Nagoričane\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:81\nmsgid \"Struga\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:82\nmsgid \"Strumica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:83\nmsgid \"Studeničani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:84\nmsgid \"Tearce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:85\nmsgid \"Tetovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:86\nmsgid \"Centar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:87\nmsgid \"Centar-Župa\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:88\nmsgid \"Čair\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:89\nmsgid \"Čaška\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:90\nmsgid \"Češinovo-Obleševo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:91\nmsgid \"Čučer-Sandevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:92\nmsgid \"Štip\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:93\nmsgid \"Šuto Orizari\"\nmsgstr \"\"\n\n#: mk/models.py:11\nmsgid \"Macedonian identity card number\"\nmsgstr \"\"\n\n#: mk/models.py:25\nmsgid \"A Macedonian municipality (2 character code)\"\nmsgstr \"\"\n\n#: mk/models.py:35\nmsgid \"Unique master citizen number (13 digits)\"\nmsgstr \"\"\n\n#: mx/forms.py:67\nmsgid \"Enter a valid zip code in the format XXXXX.\"\nmsgstr \"\"\n\n#: mx/forms.py:110\nmsgid \"Enter a valid RFC.\"\nmsgstr \"\"\n\n#: mx/forms.py:111\nmsgid \"Invalid checksum for RFC.\"\nmsgstr \"\"\n\n#: mx/forms.py:191\nmsgid \"Enter a valid CURP.\"\nmsgstr \"\"\n\n#: mx/forms.py:192\nmsgid \"Invalid checksum for CURP.\"\nmsgstr \"\"\n\n#: mx/models.py:14\nmsgid \"Mexico state (three uppercase letters)\"\nmsgstr \"\"\n\n#: mx/models.py:27\nmsgid \"Mexico zip code\"\nmsgstr \"\"\n\n#: mx/models.py:44\nmsgid \"Mexican RFC\"\nmsgstr \"\"\n\n#: mx/models.py:61\nmsgid \"Mexican CURP\"\nmsgstr \"\"\n\n#: mx/mx_states.py:14\nmsgid \"Aguascalientes\"\nmsgstr \"\"\n\n#: mx/mx_states.py:15\nmsgid \"Baja California\"\nmsgstr \"\"\n\n#: mx/mx_states.py:16\nmsgid \"Baja California Sur\"\nmsgstr \"\"\n\n#: mx/mx_states.py:17\nmsgid \"Campeche\"\nmsgstr \"\"\n\n#: mx/mx_states.py:18\nmsgid \"Chihuahua\"\nmsgstr \"\"\n\n#: mx/mx_states.py:19\nmsgid \"Chiapas\"\nmsgstr \"\"\n\n#: mx/mx_states.py:20\nmsgid \"Coahuila\"\nmsgstr \"\"\n\n#: mx/mx_states.py:21\nmsgid \"Colima\"\nmsgstr \"\"\n\n#: mx/mx_states.py:22\nmsgid \"Distrito Federal\"\nmsgstr \"\"\n\n#: mx/mx_states.py:23\nmsgid \"Durango\"\nmsgstr \"\"\n\n#: mx/mx_states.py:24\nmsgid \"Guerrero\"\nmsgstr \"\"\n\n#: mx/mx_states.py:25\nmsgid \"Guanajuato\"\nmsgstr \"\"\n\n#: mx/mx_states.py:26\nmsgid \"Hidalgo\"\nmsgstr \"\"\n\n#: mx/mx_states.py:27\nmsgid \"Jalisco\"\nmsgstr \"\"\n\n#: mx/mx_states.py:28\nmsgid \"Estado de México\"\nmsgstr \"\"\n\n#: mx/mx_states.py:29\nmsgid \"Michoacán\"\nmsgstr \"\"\n\n#: mx/mx_states.py:30\nmsgid \"Morelos\"\nmsgstr \"\"\n\n#: mx/mx_states.py:31\nmsgid \"Nayarit\"\nmsgstr \"\"\n\n#: mx/mx_states.py:32\nmsgid \"Nuevo León\"\nmsgstr \"\"\n\n#: mx/mx_states.py:33\nmsgid \"Oaxaca\"\nmsgstr \"\"\n\n#: mx/mx_states.py:34\nmsgid \"Puebla\"\nmsgstr \"\"\n\n#: mx/mx_states.py:35\nmsgid \"Querétaro\"\nmsgstr \"\"\n\n#: mx/mx_states.py:36\nmsgid \"Quintana Roo\"\nmsgstr \"\"\n\n#: mx/mx_states.py:37\nmsgid \"Sinaloa\"\nmsgstr \"\"\n\n#: mx/mx_states.py:38\nmsgid \"San Luis Potosí\"\nmsgstr \"\"\n\n#: mx/mx_states.py:39\nmsgid \"Sonora\"\nmsgstr \"\"\n\n#: mx/mx_states.py:40\nmsgid \"Tabasco\"\nmsgstr \"\"\n\n#: mx/mx_states.py:41\nmsgid \"Tamaulipas\"\nmsgstr \"\"\n\n#: mx/mx_states.py:42\nmsgid \"Tlaxcala\"\nmsgstr \"\"\n\n#: mx/mx_states.py:43\nmsgid \"Veracruz\"\nmsgstr \"\"\n\n#: mx/mx_states.py:44\nmsgid \"Yucatán\"\nmsgstr \"\"\n\n#: mx/mx_states.py:45\nmsgid \"Zacatecas\"\nmsgstr \"\"\n\n#: nl/forms.py:26\nmsgid \"Enter a valid postal code\"\nmsgstr \"\"\n\n#: nl/forms.py:82\nmsgid \"Enter a valid SoFi number\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:4\nmsgid \"Drenthe\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:5\nmsgid \"Flevoland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:6\nmsgid \"Friesland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:7\nmsgid \"Gelderland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:8\nmsgid \"Groningen\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:10\nmsgid \"Noord-Brabant\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:11\nmsgid \"Noord-Holland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:12\nmsgid \"Overijssel\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:13\nmsgid \"Utrecht\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:14\nmsgid \"Zeeland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:15\nmsgid \"Zuid-Holland\"\nmsgstr \"\"\n\n#: no/forms.py:39\nmsgid \"Enter a valid Norwegian social security number.\"\nmsgstr \"\"\n\n#: pe/forms.py:28\nmsgid \"This field requires 8 digits.\"\nmsgstr \"\"\n\n#: pe/forms.py:56\nmsgid \"This field requires 11 digits.\"\nmsgstr \"\"\n\n#: pl/forms.py:42\nmsgid \"National Identification Number consists of 11 digits.\"\nmsgstr \"\"\n\n#: pl/forms.py:43\nmsgid \"Wrong checksum for the National Identification Number.\"\nmsgstr \"\"\n\n#: pl/forms.py:79\nmsgid \"National ID Card Number consists of 3 letters and 6 digits.\"\nmsgstr \"\"\n\n#: pl/forms.py:80\nmsgid \"Wrong checksum for the National ID Card Number.\"\nmsgstr \"\"\n\n#: pl/forms.py:131\nmsgid \"\"\n\"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or \"\n\"XXXXXXXXXX.\"\nmsgstr \"\"\n\n#: pl/forms.py:132\nmsgid \"Wrong checksum for the Tax Number (NIP).\"\nmsgstr \"\"\n\n#: pl/forms.py:171\nmsgid \"National Business Register Number (REGON) consists of 9 or 14 digits.\"\nmsgstr \"\"\n\n#: pl/forms.py:172\nmsgid \"Wrong checksum for the National Business Register Number (REGON).\"\nmsgstr \"\"\n\n#: pl/forms.py:212\nmsgid \"Enter a postal code in the format XX-XXX.\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:8\nmsgid \"Lower Silesia\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:9\nmsgid \"Kuyavia-Pomerania\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:10\nmsgid \"Lublin\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:11\nmsgid \"Lubusz\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:12\nmsgid \"Lodz\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:13\nmsgid \"Lesser Poland\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:14\nmsgid \"Masovia\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:15\nmsgid \"Opole\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:16\nmsgid \"Subcarpatia\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:17\nmsgid \"Podlasie\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:18\nmsgid \"Pomerania\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:19\nmsgid \"Silesia\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:20\nmsgid \"Swietokrzyskie\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:21\nmsgid \"Warmia-Masuria\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:22\nmsgid \"Greater Poland\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:23\nmsgid \"West Pomerania\"\nmsgstr \"\"\n\n#: pt/forms.py:19\nmsgid \"Enter a zip code in the format XXXX-XXX.\"\nmsgstr \"\"\n\n#: pt/forms.py:39\nmsgid \"Phone numbers must have 9 digits, or start by + or 00.\"\nmsgstr \"\"\n\n#: ro/forms.py:22\nmsgid \"Enter a valid CIF.\"\nmsgstr \"\"\n\n#: ro/forms.py:59\nmsgid \"Enter a valid CNP.\"\nmsgstr \"\"\n\n#: ro/forms.py:143\nmsgid \"Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format\"\nmsgstr \"\"\n\n#: ro/forms.py:175\nmsgid \"Phone numbers must be in XXXX-XXXXXX format.\"\nmsgstr \"\"\n\n#: ro/forms.py:200\nmsgid \"Enter a valid postal code in the format XXXXXX\"\nmsgstr \"\"\n\n#: ru/forms.py:37\nmsgid \"Enter a postal code in the format XXXXXX.\"\nmsgstr \"\"\n\n#: ru/forms.py:50\nmsgid \"Enter a passport number in the format XXXX XXXXXX.\"\nmsgstr \"\"\n\n#: ru/forms.py:63\nmsgid \"Enter a passport number in the format XX XXXXXXX.\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:10\nmsgid \"Central Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:11\nmsgid \"South Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:12\nmsgid \"North-West Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:13\nmsgid \"Far-East Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:14\nmsgid \"Siberian Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:15\nmsgid \"Ural Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:16\nmsgid \"Privolzhsky Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:17\nmsgid \"North-Caucasian Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:21\nmsgid \"Moskva\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:22\nmsgid \"Saint-Peterburg\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:23\nmsgid \"Moskovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:24\nmsgid \"Adygeya, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:25\nmsgid \"Bashkortostan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:26\nmsgid \"Buryatia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:27\nmsgid \"Altay, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:28\nmsgid \"Dagestan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:29\nmsgid \"Ingushskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:30\nmsgid \"Kabardino-Balkarskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:31\nmsgid \"Kalmykia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:32\nmsgid \"Karachaevo-Cherkesskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:33\nmsgid \"Karelia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:34\nmsgid \"Komi, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:35\nmsgid \"Mariy Ehl, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:36\nmsgid \"Mordovia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:37\nmsgid \"Sakha, Respublika (Yakutiya)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:38\nmsgid \"Severnaya Osetia, Respublika (Alania)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:39\nmsgid \"Tatarstan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:40\nmsgid \"Tyva, Respublika (Tuva)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:41\nmsgid \"Udmurtskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:42\nmsgid \"Khakassiya, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:43\nmsgid \"Chechenskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:44\nmsgid \"Chuvashskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:45\nmsgid \"Altayskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:46\nmsgid \"Zabaykalskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:47\nmsgid \"Kamchatskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:48\nmsgid \"Krasnodarskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:49\nmsgid \"Krasnoyarskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:50\nmsgid \"Permskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:51\nmsgid \"Primorskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:52\nmsgid \"Stavropol'siyy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:53\nmsgid \"Khabarovskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:54\nmsgid \"Amurskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:55\nmsgid \"Arkhangel'skaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:56\nmsgid \"Astrakhanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:57\nmsgid \"Belgorodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:58\nmsgid \"Bryanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:59\nmsgid \"Vladimirskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:60\nmsgid \"Volgogradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:61\nmsgid \"Vologodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:62\nmsgid \"Voronezhskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:63\nmsgid \"Ivanovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:64\nmsgid \"Irkutskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:65\nmsgid \"Kaliningradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:66\nmsgid \"Kaluzhskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:67\nmsgid \"Kemerovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:68\nmsgid \"Kirovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:69\nmsgid \"Kostromskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:70\nmsgid \"Kurganskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:71\nmsgid \"Kurskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:72\nmsgid \"Leningradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:73\nmsgid \"Lipeckaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:74\nmsgid \"Magadanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:75\nmsgid \"Murmanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:76\nmsgid \"Nizhegorodskaja oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:77\nmsgid \"Novgorodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:78\nmsgid \"Novosibirskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:79\nmsgid \"Omskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:80\nmsgid \"Orenburgskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:81\nmsgid \"Orlovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:82\nmsgid \"Penzenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:83\nmsgid \"Pskovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:84\nmsgid \"Rostovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:85\nmsgid \"Rjazanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:86\nmsgid \"Samarskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:87\nmsgid \"Saratovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:88\nmsgid \"Sakhalinskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:89\nmsgid \"Sverdlovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:90\nmsgid \"Smolenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:91\nmsgid \"Tambovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:92\nmsgid \"Tverskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:93\nmsgid \"Tomskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:94\nmsgid \"Tul'skaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:95\nmsgid \"Tyumenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:96\nmsgid \"Ul'ianovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:97\nmsgid \"Chelyabinskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:98\nmsgid \"Yaroslavskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:99\nmsgid \"Evreyskaya avtonomnaja oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:100\nmsgid \"Neneckiy autonomnyy okrug\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:101\nmsgid \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:102\nmsgid \"Chukotskiy avtonomnyy okrug\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:103\nmsgid \"Yamalo-Neneckiy avtonomnyy okrug\"\nmsgstr \"\"\n\n#: se/forms.py:54\nmsgid \"Enter a valid Swedish organisation number.\"\nmsgstr \"\"\n\n#: se/forms.py:111\nmsgid \"Enter a valid Swedish personal identity number.\"\nmsgstr \"\"\n\n#: se/forms.py:112\nmsgid \"Co-ordination numbers are not allowed.\"\nmsgstr \"\"\n\n#: se/forms.py:154\nmsgid \"Enter a Swedish postal code in the format XXXXX.\"\nmsgstr \"\"\n\n#: se/se_counties.py:16\nmsgid \"Stockholm\"\nmsgstr \"\"\n\n#: se/se_counties.py:17\nmsgid \"Västerbotten\"\nmsgstr \"\"\n\n#: se/se_counties.py:18\nmsgid \"Norrbotten\"\nmsgstr \"\"\n\n#: se/se_counties.py:19\nmsgid \"Uppsala\"\nmsgstr \"\"\n\n#: se/se_counties.py:20\nmsgid \"Södermanland\"\nmsgstr \"\"\n\n#: se/se_counties.py:21\nmsgid \"Östergötland\"\nmsgstr \"\"\n\n#: se/se_counties.py:22\nmsgid \"Jönköping\"\nmsgstr \"\"\n\n#: se/se_counties.py:23\nmsgid \"Kronoberg\"\nmsgstr \"\"\n\n#: se/se_counties.py:24\nmsgid \"Kalmar\"\nmsgstr \"\"\n\n#: se/se_counties.py:25\nmsgid \"Gotland\"\nmsgstr \"\"\n\n#: se/se_counties.py:26\nmsgid \"Blekinge\"\nmsgstr \"\"\n\n#: se/se_counties.py:27\nmsgid \"Skåne\"\nmsgstr \"\"\n\n#: se/se_counties.py:28\nmsgid \"Halland\"\nmsgstr \"\"\n\n#: se/se_counties.py:29\nmsgid \"Västra Götaland\"\nmsgstr \"\"\n\n#: se/se_counties.py:30\nmsgid \"Värmland\"\nmsgstr \"\"\n\n#: se/se_counties.py:31\nmsgid \"Örebro\"\nmsgstr \"\"\n\n#: se/se_counties.py:32\nmsgid \"Västmanland\"\nmsgstr \"\"\n\n#: se/se_counties.py:33\nmsgid \"Dalarna\"\nmsgstr \"\"\n\n#: se/se_counties.py:34\nmsgid \"Gävleborg\"\nmsgstr \"\"\n\n#: se/se_counties.py:35\nmsgid \"Västernorrland\"\nmsgstr \"\"\n\n#: se/se_counties.py:36\nmsgid \"Jämtland\"\nmsgstr \"\"\n\n#: si/forms.py:25\nmsgid \"The first 7 digits of the EMSO must represent a valid past date.\"\nmsgstr \"\"\n\n#: si/forms.py:26\nmsgid \"The EMSO is not valid.\"\nmsgstr \"\"\n\n#: si/forms.py:86\nmsgid \"Enter a valid tax number in form SIXXXXXXXX\"\nmsgstr \"\"\n\n#: si/forms.py:151\nmsgid \"Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:8\nmsgid \"Banska Bystrica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:9\nmsgid \"Banska Stiavnica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:10\nmsgid \"Bardejov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:11\nmsgid \"Banovce nad Bebravou\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:12\nmsgid \"Brezno\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:13\nmsgid \"Bratislava I\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:14\nmsgid \"Bratislava II\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:15\nmsgid \"Bratislava III\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:16\nmsgid \"Bratislava IV\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:17\nmsgid \"Bratislava V\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:18\nmsgid \"Bytca\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:19\nmsgid \"Cadca\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:20\nmsgid \"Detva\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:21\nmsgid \"Dolny Kubin\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:22\nmsgid \"Dunajska Streda\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:23\nmsgid \"Galanta\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:24\nmsgid \"Gelnica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:25\nmsgid \"Hlohovec\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:26\nmsgid \"Humenne\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:27\nmsgid \"Ilava\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:28\nmsgid \"Kezmarok\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:29\nmsgid \"Komarno\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:30\nmsgid \"Kosice I\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:31\nmsgid \"Kosice II\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:32\nmsgid \"Kosice III\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:33\nmsgid \"Kosice IV\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:34\nmsgid \"Kosice - okolie\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:35\nmsgid \"Krupina\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:36\nmsgid \"Kysucke Nove Mesto\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:37\nmsgid \"Levice\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:38\nmsgid \"Levoca\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:39\nmsgid \"Liptovsky Mikulas\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:40\nmsgid \"Lucenec\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:41\nmsgid \"Malacky\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:42\nmsgid \"Martin\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:43\nmsgid \"Medzilaborce\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:44\nmsgid \"Michalovce\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:45\nmsgid \"Myjava\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:46\nmsgid \"Namestovo\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:47\nmsgid \"Nitra\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:48\nmsgid \"Nove Mesto nad Vahom\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:49\nmsgid \"Nove Zamky\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:50\nmsgid \"Partizanske\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:51\nmsgid \"Pezinok\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:52\nmsgid \"Piestany\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:53\nmsgid \"Poltar\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:54\nmsgid \"Poprad\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:55\nmsgid \"Povazska Bystrica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:56\nmsgid \"Presov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:57\nmsgid \"Prievidza\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:58\nmsgid \"Puchov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:59\nmsgid \"Revuca\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:60\nmsgid \"Rimavska Sobota\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:61\nmsgid \"Roznava\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:62\nmsgid \"Ruzomberok\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:63\nmsgid \"Sabinov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:64\nmsgid \"Senec\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:65\nmsgid \"Senica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:66\nmsgid \"Skalica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:67\nmsgid \"Snina\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:68\nmsgid \"Sobrance\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:69\nmsgid \"Spisska Nova Ves\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:70\nmsgid \"Stara Lubovna\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:71\nmsgid \"Stropkov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:72\nmsgid \"Svidnik\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:73\nmsgid \"Sala\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:74\nmsgid \"Topolcany\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:75\nmsgid \"Trebisov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:76\nmsgid \"Trencin\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:77\nmsgid \"Trnava\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:78\nmsgid \"Turcianske Teplice\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:79\nmsgid \"Tvrdosin\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:80\nmsgid \"Velky Krtis\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:81\nmsgid \"Vranov nad Toplou\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:82\nmsgid \"Zlate Moravce\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:83\nmsgid \"Zvolen\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:84\nmsgid \"Zarnovica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:85\nmsgid \"Ziar nad Hronom\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:86\nmsgid \"Zilina\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:8\nmsgid \"Banska Bystrica region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:9\nmsgid \"Bratislava region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:10\nmsgid \"Kosice region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:11\nmsgid \"Nitra region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:12\nmsgid \"Presov region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:13\nmsgid \"Trencin region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:14\nmsgid \"Trnava region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:15\nmsgid \"Zilina region\"\nmsgstr \"\"\n\n#: tr/forms.py:21\nmsgid \"Enter a postal code in the format XXXXX.\"\nmsgstr \"\"\n\n#: tr/forms.py:42\nmsgid \"Phone numbers must be in 0XXX XXX XXXX format.\"\nmsgstr \"\"\n\n#: tr/forms.py:69\nmsgid \"Enter a valid Turkish Identification number.\"\nmsgstr \"\"\n\n#: tr/forms.py:70\nmsgid \"Turkish Identification number must be 11 digits.\"\nmsgstr \"\"\n\n#: us/forms.py:21\nmsgid \"Enter a zip code in the format XXXXX or XXXXX-XXXX.\"\nmsgstr \"\"\n\n#: us/forms.py:59\nmsgid \"Enter a valid U.S. Social Security number in XXX-XX-XXXX format.\"\nmsgstr \"\"\n\n#: us/forms.py:92\nmsgid \"Enter a U.S. state or territory.\"\nmsgstr \"\"\n\n#: us/models.py:8\nmsgid \"U.S. state (two uppercase letters)\"\nmsgstr \"\"\n\n#: us/models.py:17\nmsgid \"U.S. postal code (two uppercase letters)\"\nmsgstr \"\"\n\n#: us/models.py:26\nmsgid \"Phone number\"\nmsgstr \"\"\n\n#: uy/forms.py:29\nmsgid \"Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.\"\nmsgstr \"\"\n\n#: uy/forms.py:31\nmsgid \"Enter a valid CI number.\"\nmsgstr \"\"\n\n#: za/forms.py:22\nmsgid \"Enter a valid South African ID number\"\nmsgstr \"\"\n\n#: za/forms.py:56\nmsgid \"Enter a valid South African postal code\"\nmsgstr \"\"\n\n#: za/za_provinces.py:4\nmsgid \"Eastern Cape\"\nmsgstr \"\"\n\n#: za/za_provinces.py:5\nmsgid \"Free State\"\nmsgstr \"\"\n\n#: za/za_provinces.py:6\nmsgid \"Gauteng\"\nmsgstr \"\"\n\n#: za/za_provinces.py:7\nmsgid \"KwaZulu-Natal\"\nmsgstr \"\"\n\n#: za/za_provinces.py:8\nmsgid \"Limpopo\"\nmsgstr \"\"\n\n#: za/za_provinces.py:9\nmsgid \"Mpumalanga\"\nmsgstr \"\"\n\n#: za/za_provinces.py:10\nmsgid \"Northern Cape\"\nmsgstr \"\"\n\n#: za/za_provinces.py:11\nmsgid \"North West\"\nmsgstr \"\"\n\n#: za/za_provinces.py:12\nmsgid \"Western Cape\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/locale/bs/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Filip Dupanović <filip.dupanovic@gmail.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-10-17 09:16+0000\\n\"\n\"Last-Translator: Filip Dupanović <filip.dupanovic@gmail.com>\\n\"\n\"Language-Team: Bosnian (http://www.transifex.com/projects/p/django/language/\"\n\"bs/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: bs\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: ar/forms.py:30\nmsgid \"Enter a postal code in the format NNNN or ANNNNAAA.\"\nmsgstr \"Unesite poštanski broj u formatu NNNN ili ANNNNAAA.\"\n\n#: ar/forms.py:52 br/forms.py:95 br/forms.py:134 pe/forms.py:27 pe/forms.py:55\nmsgid \"This field requires only numbers.\"\nmsgstr \"Ovo polje zahtjeva samo brojeve.\"\n\n#: ar/forms.py:53\nmsgid \"This field requires 7 or 8 digits.\"\nmsgstr \"Ovo polje mora da sadrži 7 ili 8 cifara.\"\n\n#: ar/forms.py:82\nmsgid \"Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.\"\nmsgstr \"Unesite ispravan CUIT u formatu XX-XXXXXXXX-X or XXXXXXXXXXXX.\"\n\n#: ar/forms.py:83\nmsgid \"Invalid CUIT.\"\nmsgstr \"Neispravan CUIT.\"\n\n#: ar/forms.py:84\nmsgid \"Invalid legal type. Type must be 27, 20, 23 or 30.\"\nmsgstr \"\"\n\n#: at/at_states.py:5\nmsgid \"Burgenland\"\nmsgstr \"Burgenland\"\n\n#: at/at_states.py:6\nmsgid \"Carinthia\"\nmsgstr \"Karintija\"\n\n#: at/at_states.py:7\nmsgid \"Lower Austria\"\nmsgstr \"Donja Austrija\"\n\n#: at/at_states.py:8\nmsgid \"Upper Austria\"\nmsgstr \"Gornja Austrija\"\n\n#: at/at_states.py:9\nmsgid \"Salzburg\"\nmsgstr \"Salcburg\"\n\n#: at/at_states.py:10\nmsgid \"Styria\"\nmsgstr \"Stirija\"\n\n#: at/at_states.py:11\nmsgid \"Tyrol\"\nmsgstr \"Tirol\"\n\n#: at/at_states.py:12\nmsgid \"Vorarlberg\"\nmsgstr \"Voralber\"\n\n#: at/at_states.py:13\nmsgid \"Vienna\"\nmsgstr \"Beč\"\n\n#: at/forms.py:22 ch/forms.py:22 no/forms.py:19\nmsgid \"Enter a zip code in the format XXXX.\"\nmsgstr \"Unesite poštanski broj u formatu XXXX.\"\n\n#: at/forms.py:50\nmsgid \"Enter a valid Austrian Social Security Number in XXXX XXXXXX format.\"\nmsgstr \"\"\n\"Unesite važeći austrijski broj socijalnog osiguranja u formatu XXXX XXXXXX.\"\n\n#: au/forms.py:26\nmsgid \"Enter a 4 digit postcode.\"\nmsgstr \"\"\n\n#: au/models.py:9\nmsgid \"Australian State\"\nmsgstr \"\"\n\n#: au/models.py:19\nmsgid \"Australian Postcode\"\nmsgstr \"\"\n\n#: au/models.py:33\nmsgid \"Australian Phone number\"\nmsgstr \"\"\n\n#: be/be_provinces.py:5\nmsgid \"Antwerp\"\nmsgstr \"Antwerpen\"\n\n#: be/be_provinces.py:6\nmsgid \"Brussels\"\nmsgstr \"Brisel\"\n\n#: be/be_provinces.py:7\nmsgid \"East Flanders\"\nmsgstr \"Istočna Flandrija\"\n\n#: be/be_provinces.py:8\nmsgid \"Flemish Brabant\"\nmsgstr \"Flamanski Brabant\"\n\n#: be/be_provinces.py:9\nmsgid \"Hainaut\"\nmsgstr \"Hainaut\"\n\n#: be/be_provinces.py:10\nmsgid \"Liege\"\nmsgstr \"Liege\"\n\n#: be/be_provinces.py:11 nl/nl_provinces.py:9\nmsgid \"Limburg\"\nmsgstr \"Limburg\"\n\n#: be/be_provinces.py:12\nmsgid \"Luxembourg\"\nmsgstr \"Luksemburg\"\n\n#: be/be_provinces.py:13\nmsgid \"Namur\"\nmsgstr \"Namur\"\n\n#: be/be_provinces.py:14\nmsgid \"Walloon Brabant\"\nmsgstr \"Valonski Brabant\"\n\n#: be/be_provinces.py:15\nmsgid \"West Flanders\"\nmsgstr \"Zapadna Flandrija\"\n\n#: be/be_regions.py:5\nmsgid \"Brussels Capital Region\"\nmsgstr \"Regija glavnoga grada Bruxellesa\"\n\n#: be/be_regions.py:6\nmsgid \"Flemish Region\"\nmsgstr \"Flamanska regija\"\n\n#: be/be_regions.py:7\nmsgid \"Wallonia\"\nmsgstr \"Valonija\"\n\n#: be/forms.py:25\nmsgid \"Enter a valid postal code in the range and format 1XXX - 9XXX.\"\nmsgstr \"Unesite ispravan poštanski broj u rasponu i formatu 1XXX-9XXX.\"\n\n#: be/forms.py:48\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\nmsgstr \"\"\n\"Unesite važeći broj telefona u jednom od formata 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx ili 04xxxxxxxx.\"\n\n#: br/forms.py:22\nmsgid \"Enter a zip code in the format XXXXX-XXX.\"\nmsgstr \"Unesite zip kod u formatu XXXXX-XXX.\"\n\n#: br/forms.py:31\nmsgid \"Phone numbers must be in XX-XXXX-XXXX format.\"\nmsgstr \"Telefonski brojevi moraju biti u XX-XXXX-XXXX formatu.\"\n\n#: br/forms.py:58\nmsgid \"\"\n\"Select a valid brazilian state. That state is not one of the available \"\n\"states.\"\nmsgstr \"Odaberite ispravnu brazilsku državu. Ta država nije među ponuđenima.\"\n\n#: br/forms.py:93\nmsgid \"Invalid CPF number.\"\nmsgstr \"Neispravan CPF broj.\"\n\n#: br/forms.py:94\nmsgid \"This field requires at most 11 digits or 14 characters.\"\nmsgstr \"Polje zahtijeva najviše 11 cifri ili 14 znamenki.\"\n\n#: br/forms.py:133\nmsgid \"Invalid CNPJ number.\"\nmsgstr \"Neispravan CNPJ broj.\"\n\n#: br/forms.py:135\nmsgid \"This field requires at least 14 digits\"\nmsgstr \"Polje zahtijeva najmanje 14 cifri.\"\n\n#: ca/forms.py:29\nmsgid \"Enter a postal code in the format XXX XXX.\"\nmsgstr \"Unesite poštanski broj u formtu XXX XXX.\"\n\n#: ca/forms.py:47 us/forms.py:30\nmsgid \"Phone numbers must be in XXX-XXX-XXXX format.\"\nmsgstr \"Broj telefona mora biti u formatu XX-XXXX-XXXX.\"\n\n#: ca/forms.py:69\nmsgid \"Enter a Canadian province or territory.\"\nmsgstr \"\"\n\n#: ca/forms.py:110\nmsgid \"Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.\"\nmsgstr \"Unesite ispravan kanadski Social Insurance broj u XXX-XXX-XXX formatu.\"\n\n#: ch/ch_states.py:5\nmsgid \"Aargau\"\nmsgstr \"Aargau\"\n\n#: ch/ch_states.py:6\nmsgid \"Appenzell Innerrhoden\"\nmsgstr \"Appenzell Innerrhoden\"\n\n#: ch/ch_states.py:7\nmsgid \"Appenzell Ausserrhoden\"\nmsgstr \"Appenzell Ausserrhoden\"\n\n#: ch/ch_states.py:8\nmsgid \"Basel-Stadt\"\nmsgstr \"Basel-grad\"\n\n#: ch/ch_states.py:9\nmsgid \"Basel-Land\"\nmsgstr \"Basel-provincija\"\n\n#: ch/ch_states.py:10\nmsgid \"Berne\"\nmsgstr \"Bern\"\n\n#: ch/ch_states.py:11\nmsgid \"Fribourg\"\nmsgstr \"Fribourg\"\n\n#: ch/ch_states.py:12\nmsgid \"Geneva\"\nmsgstr \"Ženeva\"\n\n#: ch/ch_states.py:13\nmsgid \"Glarus\"\nmsgstr \"Glarus\"\n\n#: ch/ch_states.py:14\nmsgid \"Graubuenden\"\nmsgstr \"Graubuenden\"\n\n#: ch/ch_states.py:15\nmsgid \"Jura\"\nmsgstr \"Jura\"\n\n#: ch/ch_states.py:16\nmsgid \"Lucerne\"\nmsgstr \"Lucern\"\n\n#: ch/ch_states.py:17\nmsgid \"Neuchatel\"\nmsgstr \"Neuchatel\"\n\n#: ch/ch_states.py:18\nmsgid \"Nidwalden\"\nmsgstr \"Nidwalden\"\n\n#: ch/ch_states.py:19\nmsgid \"Obwalden\"\nmsgstr \"Obwalden\"\n\n#: ch/ch_states.py:20\nmsgid \"Schaffhausen\"\nmsgstr \"Schaffhausen\"\n\n#: ch/ch_states.py:21\nmsgid \"Schwyz\"\nmsgstr \"Schwyz\"\n\n#: ch/ch_states.py:22\nmsgid \"Solothurn\"\nmsgstr \"Solothurn\"\n\n#: ch/ch_states.py:23\nmsgid \"St. Gallen\"\nmsgstr \"St. Gallen\"\n\n#: ch/ch_states.py:24\nmsgid \"Thurgau\"\nmsgstr \"Thurgau\"\n\n#: ch/ch_states.py:25\nmsgid \"Ticino\"\nmsgstr \"Ticino\"\n\n#: ch/ch_states.py:26\nmsgid \"Uri\"\nmsgstr \"Uri\"\n\n#: ch/ch_states.py:27\nmsgid \"Valais\"\nmsgstr \"Valais\"\n\n#: ch/ch_states.py:28\nmsgid \"Vaud\"\nmsgstr \"Vaud\"\n\n#: ch/ch_states.py:29\nmsgid \"Zug\"\nmsgstr \"Zug\"\n\n#: ch/ch_states.py:30\nmsgid \"Zurich\"\nmsgstr \"Zurich\"\n\n#: ch/forms.py:37\nmsgid \"Phone numbers must be in 0XX XXX XX XX format.\"\nmsgstr \"\"\n\n#: ch/forms.py:68\nmsgid \"\"\n\"Enter a valid Swiss identity or passport card number in X1234567<0 or \"\n\"1234567890 format.\"\nmsgstr \"\"\n\"Unesite ispravan broj švicarske lične karte ili pasoša u X1234567<0 ili u \"\n\"1234567890 formatu.\"\n\n#: cl/forms.py:32\nmsgid \"Enter a valid Chilean RUT.\"\nmsgstr \"Unesite ispravan čileanski RUT.\"\n\n#: cl/forms.py:33\nmsgid \"Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.\"\nmsgstr \"Unesite ispravan čileanski RUT. Format je XX.XXX.XXX-X.\"\n\n#: cl/forms.py:34\nmsgid \"The Chilean RUT is not valid.\"\nmsgstr \"Čileanski RUT nije ispravan.\"\n\n#: cn/forms.py:84\nmsgid \"Enter a post code in the format XXXXXX.\"\nmsgstr \"\"\n\n#: cn/forms.py:105\nmsgid \"ID Card Number consists of 15 or 18 digits.\"\nmsgstr \"\"\n\n#: cn/forms.py:106\nmsgid \"Invalid ID Card Number: Wrong checksum\"\nmsgstr \"\"\n\n#: cn/forms.py:107\nmsgid \"Invalid ID Card Number: Wrong birthdate\"\nmsgstr \"\"\n\n#: cn/forms.py:108\nmsgid \"Invalid ID Card Number: Wrong location code\"\nmsgstr \"\"\n\n#: cn/forms.py:193\nmsgid \"Enter a valid phone number.\"\nmsgstr \"\"\n\n#: cn/forms.py:210\nmsgid \"Enter a valid cell number.\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:8\nmsgid \"Prague\"\nmsgstr \"Prag\"\n\n#: cz/cz_regions.py:9\nmsgid \"Central Bohemian Region\"\nmsgstr \"Centralna Češka\"\n\n#: cz/cz_regions.py:10\nmsgid \"South Bohemian Region\"\nmsgstr \"Južna Češka\"\n\n#: cz/cz_regions.py:11\nmsgid \"Pilsen Region\"\nmsgstr \"Plzenjski kraj\"\n\n#: cz/cz_regions.py:12\nmsgid \"Carlsbad Region\"\nmsgstr \"Karlovarski kraj\"\n\n#: cz/cz_regions.py:13\nmsgid \"Usti Region\"\nmsgstr \"Ustečki kraj\"\n\n#: cz/cz_regions.py:14\nmsgid \"Liberec Region\"\nmsgstr \"Liberečki kraj\"\n\n#: cz/cz_regions.py:15\nmsgid \"Hradec Region\"\nmsgstr \"Kralovehradečki kraj\"\n\n#: cz/cz_regions.py:16\nmsgid \"Pardubice Region\"\nmsgstr \"Pardubički kraj\"\n\n#: cz/cz_regions.py:17\nmsgid \"Vysocina Region\"\nmsgstr \"Visočina kraj\"\n\n#: cz/cz_regions.py:18\nmsgid \"South Moravian Region\"\nmsgstr \"Južna Moravska\"\n\n#: cz/cz_regions.py:19\nmsgid \"Olomouc Region\"\nmsgstr \"Olomoučki kraj\"\n\n#: cz/cz_regions.py:20\nmsgid \"Zlin Region\"\nmsgstr \"Zlinski kraj\"\n\n#: cz/cz_regions.py:21\nmsgid \"Moravian-Silesian Region\"\nmsgstr \"Moravsko-seleški kraj\"\n\n#: cz/forms.py:32 sk/forms.py:33\nmsgid \"Enter a postal code in the format XXXXX or XXX XX.\"\nmsgstr \"Unesite poštanski broj u formatu XXXXX ili XX XX.\"\n\n#: cz/forms.py:52\nmsgid \"Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.\"\nmsgstr \"Unesite datum rođenja u formatu XXXXXX/XXXX ili XXXXXXXXXX.\"\n\n#: cz/forms.py:53\nmsgid \"Enter a valid birth number.\"\nmsgstr \"Unesite ispravan datum rođendana.\"\n\n#: cz/forms.py:102\nmsgid \"Enter a valid IC number.\"\nmsgstr \"Unsite ispravan IC broj.\"\n\n#: de/de_states.py:5\nmsgid \"Baden-Wuerttemberg\"\nmsgstr \"Baden-Wuerttemberg\"\n\n#: de/de_states.py:6\nmsgid \"Bavaria\"\nmsgstr \"Bavaria\"\n\n#: de/de_states.py:7\nmsgid \"Berlin\"\nmsgstr \"Berlin\"\n\n#: de/de_states.py:8\nmsgid \"Brandenburg\"\nmsgstr \"Brandenburg\"\n\n#: de/de_states.py:9\nmsgid \"Bremen\"\nmsgstr \"Bremen\"\n\n#: de/de_states.py:10\nmsgid \"Hamburg\"\nmsgstr \"Hamburg\"\n\n#: de/de_states.py:11\nmsgid \"Hessen\"\nmsgstr \"Hessen\"\n\n#: de/de_states.py:12\nmsgid \"Mecklenburg-Western Pomerania\"\nmsgstr \"Mecklenburg-Western Pomerania\"\n\n#: de/de_states.py:13\nmsgid \"Lower Saxony\"\nmsgstr \"Donja Saška\"\n\n#: de/de_states.py:14\nmsgid \"North Rhine-Westphalia\"\nmsgstr \"Sjeverno Porajnje-Zapadna Falačka\"\n\n#: de/de_states.py:15\nmsgid \"Rhineland-Palatinate\"\nmsgstr \"Rhineland-Palatinate\"\n\n#: de/de_states.py:16\nmsgid \"Saarland\"\nmsgstr \"Saarland\"\n\n#: de/de_states.py:17\nmsgid \"Saxony\"\nmsgstr \"Saška\"\n\n#: de/de_states.py:18\nmsgid \"Saxony-Anhalt\"\nmsgstr \"Saxony-Anhalt\"\n\n#: de/de_states.py:19\nmsgid \"Schleswig-Holstein\"\nmsgstr \"Schleswig-Holstein\"\n\n#: de/de_states.py:20\nmsgid \"Thuringia\"\nmsgstr \"Thuringia\"\n\n#: de/forms.py:20 fi/forms.py:18 fr/forms.py:20\nmsgid \"Enter a zip code in the format XXXXX.\"\nmsgstr \"Unesite poštanski broj u formatu XXXXX.\"\n\n#: de/forms.py:46\nmsgid \"\"\n\"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"format.\"\nmsgstr \"\"\n\"Unesite ispravan broj njemačke lične karte u XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"formatu.\"\n\n#: es/es_provinces.py:5\nmsgid \"Araba\"\nmsgstr \"\"\n\n#: es/es_provinces.py:6\nmsgid \"Albacete\"\nmsgstr \"Albacete\"\n\n#: es/es_provinces.py:7\nmsgid \"Alacant\"\nmsgstr \"Alacant\"\n\n#: es/es_provinces.py:8\nmsgid \"Almeria\"\nmsgstr \"Almeria\"\n\n#: es/es_provinces.py:9\nmsgid \"Avila\"\nmsgstr \"Avila\"\n\n#: es/es_provinces.py:10\nmsgid \"Badajoz\"\nmsgstr \"Badajoz\"\n\n#: es/es_provinces.py:11\nmsgid \"Illes Balears\"\nmsgstr \"Illes Balears\"\n\n#: es/es_provinces.py:12\nmsgid \"Barcelona\"\nmsgstr \"Barcelona\"\n\n#: es/es_provinces.py:13\nmsgid \"Burgos\"\nmsgstr \"Burgos\"\n\n#: es/es_provinces.py:14\nmsgid \"Caceres\"\nmsgstr \"Caceres\"\n\n#: es/es_provinces.py:15\nmsgid \"Cadiz\"\nmsgstr \"Cadiz\"\n\n#: es/es_provinces.py:16\nmsgid \"Castello\"\nmsgstr \"Castello\"\n\n#: es/es_provinces.py:17\nmsgid \"Ciudad Real\"\nmsgstr \"Ciudad Real\"\n\n#: es/es_provinces.py:18\nmsgid \"Cordoba\"\nmsgstr \"Kordoba\"\n\n#: es/es_provinces.py:19\nmsgid \"A Coruna\"\nmsgstr \"Korunja\"\n\n#: es/es_provinces.py:20\nmsgid \"Cuenca\"\nmsgstr \"Kuenka\"\n\n#: es/es_provinces.py:21\nmsgid \"Girona\"\nmsgstr \"\"\n\n#: es/es_provinces.py:22\nmsgid \"Granada\"\nmsgstr \"\"\n\n#: es/es_provinces.py:23\nmsgid \"Guadalajara\"\nmsgstr \"\"\n\n#: es/es_provinces.py:24\nmsgid \"Guipuzkoa\"\nmsgstr \"\"\n\n#: es/es_provinces.py:25\nmsgid \"Huelva\"\nmsgstr \"\"\n\n#: es/es_provinces.py:26\nmsgid \"Huesca\"\nmsgstr \"\"\n\n#: es/es_provinces.py:27\nmsgid \"Jaen\"\nmsgstr \"\"\n\n#: es/es_provinces.py:28\nmsgid \"Leon\"\nmsgstr \"\"\n\n#: es/es_provinces.py:29\nmsgid \"Lleida\"\nmsgstr \"\"\n\n#: es/es_provinces.py:30 es/es_regions.py:17\nmsgid \"La Rioja\"\nmsgstr \"\"\n\n#: es/es_provinces.py:31\nmsgid \"Lugo\"\nmsgstr \"\"\n\n#: es/es_provinces.py:32 es/es_regions.py:18\nmsgid \"Madrid\"\nmsgstr \"\"\n\n#: es/es_provinces.py:33\nmsgid \"Malaga\"\nmsgstr \"\"\n\n#: es/es_provinces.py:34\nmsgid \"Murcia\"\nmsgstr \"\"\n\n#: es/es_provinces.py:35\nmsgid \"Navarre\"\nmsgstr \"\"\n\n#: es/es_provinces.py:36\nmsgid \"Ourense\"\nmsgstr \"\"\n\n#: es/es_provinces.py:37\nmsgid \"Asturias\"\nmsgstr \"\"\n\n#: es/es_provinces.py:38\nmsgid \"Palencia\"\nmsgstr \"\"\n\n#: es/es_provinces.py:39\nmsgid \"Las Palmas\"\nmsgstr \"\"\n\n#: es/es_provinces.py:40\nmsgid \"Pontevedra\"\nmsgstr \"\"\n\n#: es/es_provinces.py:41\nmsgid \"Salamanca\"\nmsgstr \"\"\n\n#: es/es_provinces.py:42\nmsgid \"Santa Cruz de Tenerife\"\nmsgstr \"\"\n\n#: es/es_provinces.py:43 es/es_regions.py:11\nmsgid \"Cantabria\"\nmsgstr \"\"\n\n#: es/es_provinces.py:44\nmsgid \"Segovia\"\nmsgstr \"\"\n\n#: es/es_provinces.py:45\nmsgid \"Seville\"\nmsgstr \"\"\n\n#: es/es_provinces.py:46\nmsgid \"Soria\"\nmsgstr \"\"\n\n#: es/es_provinces.py:47\nmsgid \"Tarragona\"\nmsgstr \"\"\n\n#: es/es_provinces.py:48\nmsgid \"Teruel\"\nmsgstr \"\"\n\n#: es/es_provinces.py:49\nmsgid \"Toledo\"\nmsgstr \"\"\n\n#: es/es_provinces.py:50\nmsgid \"Valencia\"\nmsgstr \"\"\n\n#: es/es_provinces.py:51\nmsgid \"Valladolid\"\nmsgstr \"\"\n\n#: es/es_provinces.py:52\nmsgid \"Bizkaia\"\nmsgstr \"\"\n\n#: es/es_provinces.py:53\nmsgid \"Zamora\"\nmsgstr \"\"\n\n#: es/es_provinces.py:54\nmsgid \"Zaragoza\"\nmsgstr \"\"\n\n#: es/es_provinces.py:55\nmsgid \"Ceuta\"\nmsgstr \"\"\n\n#: es/es_provinces.py:56\nmsgid \"Melilla\"\nmsgstr \"\"\n\n#: es/es_regions.py:5\nmsgid \"Andalusia\"\nmsgstr \"\"\n\n#: es/es_regions.py:6\nmsgid \"Aragon\"\nmsgstr \"\"\n\n#: es/es_regions.py:7\nmsgid \"Principality of Asturias\"\nmsgstr \"\"\n\n#: es/es_regions.py:8\nmsgid \"Balearic Islands\"\nmsgstr \"\"\n\n#: es/es_regions.py:9\nmsgid \"Basque Country\"\nmsgstr \"\"\n\n#: es/es_regions.py:10\nmsgid \"Canary Islands\"\nmsgstr \"\"\n\n#: es/es_regions.py:12\nmsgid \"Castile-La Mancha\"\nmsgstr \"\"\n\n#: es/es_regions.py:13\nmsgid \"Castile and Leon\"\nmsgstr \"\"\n\n#: es/es_regions.py:14\nmsgid \"Catalonia\"\nmsgstr \"\"\n\n#: es/es_regions.py:15\nmsgid \"Extremadura\"\nmsgstr \"\"\n\n#: es/es_regions.py:16\nmsgid \"Galicia\"\nmsgstr \"\"\n\n#: es/es_regions.py:19\nmsgid \"Region of Murcia\"\nmsgstr \"\"\n\n#: es/es_regions.py:20\nmsgid \"Foral Community of Navarre\"\nmsgstr \"\"\n\n#: es/es_regions.py:21\nmsgid \"Valencian Community\"\nmsgstr \"\"\n\n#: es/forms.py:26\nmsgid \"Enter a valid postal code in the range and format 01XXX - 52XXX.\"\nmsgstr \"Unesite ispravan poštanski broj u nizu i formatu 01XXX - 52XXX.\"\n\n#: es/forms.py:46\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or \"\n\"9XXXXXXXX.\"\nmsgstr \"\"\n\"Unesite ispravan telefonski broj u jednom od formata 6XXXXXXXX, 8XXXXXXXX \"\n\"ili 9XXXXXXXX.\"\n\n#: es/forms.py:73\nmsgid \"Please enter a valid NIF, NIE, or CIF.\"\nmsgstr \"Unesite ispravan NIF, NIE ili CIF.\"\n\n#: es/forms.py:74\nmsgid \"Please enter a valid NIF or NIE.\"\nmsgstr \"Unesite ispravan NIF ili NIE.\"\n\n#: es/forms.py:75\nmsgid \"Invalid checksum for NIF.\"\nmsgstr \"Neispravan checksum za NIF.\"\n\n#: es/forms.py:76\nmsgid \"Invalid checksum for NIE.\"\nmsgstr \"Neispravan checksum za NIE.\"\n\n#: es/forms.py:77\nmsgid \"Invalid checksum for CIF.\"\nmsgstr \"Neispravan checksum za CIF.\"\n\n#: es/forms.py:149\nmsgid \"\"\n\"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.\"\nmsgstr \"\"\n\"Unesite isravan broj bankovnog računa u obliku XXXX-XXXX-XX-XXXXXXXXXX.\"\n\n#: es/forms.py:150\nmsgid \"Invalid checksum for bank account number.\"\nmsgstr \"Neispravan checksum za broj bankovnog računa.\"\n\n#: fi/forms.py:33\nmsgid \"Enter a valid Finnish social security number.\"\nmsgstr \"Unesite ispravni finski identifikacijski broj.\"\n\n#: fr/forms.py:35\nmsgid \"Phone numbers must be in 0X XX XX XX XX format.\"\nmsgstr \"Broj telefona mora biti u formatu 0X XX XX XX XX.\"\n\n#: gb/forms.py:25\nmsgid \"Enter a valid postcode.\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:11\nmsgid \"Bedfordshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:12\nmsgid \"Buckinghamshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:14\nmsgid \"Cheshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:15\nmsgid \"Cornwall and Isles of Scilly\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:16\nmsgid \"Cumbria\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:17\nmsgid \"Derbyshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:18\nmsgid \"Devon\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:19\nmsgid \"Dorset\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:20\nmsgid \"Durham\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:21\nmsgid \"East Sussex\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:22\nmsgid \"Essex\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:23\nmsgid \"Gloucestershire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:24\nmsgid \"Greater London\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:25\nmsgid \"Greater Manchester\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:26\nmsgid \"Hampshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:27\nmsgid \"Hertfordshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:28\nmsgid \"Kent\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:29\nmsgid \"Lancashire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:30\nmsgid \"Leicestershire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:31\nmsgid \"Lincolnshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:32\nmsgid \"Merseyside\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:33\nmsgid \"Norfolk\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:34\nmsgid \"North Yorkshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:35\nmsgid \"Northamptonshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:36\nmsgid \"Northumberland\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:37\nmsgid \"Nottinghamshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:38\nmsgid \"Oxfordshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:39\nmsgid \"Shropshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:40\nmsgid \"Somerset\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:41\nmsgid \"South Yorkshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:42\nmsgid \"Staffordshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:43\nmsgid \"Suffolk\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:44\nmsgid \"Surrey\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:45\nmsgid \"Tyne and Wear\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:46\nmsgid \"Warwickshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:47\nmsgid \"West Midlands\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:48\nmsgid \"West Sussex\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:49\nmsgid \"West Yorkshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:50\nmsgid \"Wiltshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:51\nmsgid \"Worcestershire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:55\nmsgid \"County Antrim\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:56\nmsgid \"County Armagh\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:57\nmsgid \"County Down\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:58\nmsgid \"County Fermanagh\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:59\nmsgid \"County Londonderry\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:60\nmsgid \"County Tyrone\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:64\nmsgid \"Clwyd\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:65\nmsgid \"Dyfed\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:66\nmsgid \"Gwent\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:67\nmsgid \"Gwynedd\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:68\nmsgid \"Mid Glamorgan\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:69\nmsgid \"Powys\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:70\nmsgid \"South Glamorgan\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:71\nmsgid \"West Glamorgan\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:75\nmsgid \"Borders\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:76\nmsgid \"Central Scotland\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:77\nmsgid \"Dumfries and Galloway\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:78\nmsgid \"Fife\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:79\nmsgid \"Grampian\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:80\nmsgid \"Highland\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:81\nmsgid \"Lothian\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:82\nmsgid \"Orkney Islands\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:83\nmsgid \"Shetland Islands\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:84\nmsgid \"Strathclyde\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:85\nmsgid \"Tayside\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:86\nmsgid \"Western Isles\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:90\nmsgid \"England\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:91\nmsgid \"Northern Ireland\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:92\nmsgid \"Scotland\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:93\nmsgid \"Wales\"\nmsgstr \"\"\n\n#: hk/forms.py:37\n#, python-format\nmsgid \"Phone number should not start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:40\n#, python-format\nmsgid \"Phone number must be in one of the following formats: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:42\n#, python-format\nmsgid \"Phone number should start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hr/forms.py:76\nmsgid \"Enter a valid 13 digit JMBG\"\nmsgstr \"\"\n\n#: hr/forms.py:77\nmsgid \"Error in date segment\"\nmsgstr \"\"\n\n#: hr/forms.py:123\nmsgid \"Enter a valid 11 digit OIB\"\nmsgstr \"\"\n\n#: hr/forms.py:152 id/forms.py:112\nmsgid \"Enter a valid vehicle license plate number\"\nmsgstr \"Unesite ispravan broj automobilske tablice\"\n\n#: hr/forms.py:153\nmsgid \"Enter a valid location code\"\nmsgstr \"\"\n\n#: hr/forms.py:154\nmsgid \"Number part cannot be zero\"\nmsgstr \"\"\n\n#: hr/forms.py:190\nmsgid \"Enter a valid 5 digit postal code\"\nmsgstr \"\"\n\n#: hr/forms.py:218 id/forms.py:72 nl/forms.py:56\nmsgid \"Enter a valid phone number\"\nmsgstr \"Unesite ispravan telefonski broj\"\n\n#: hr/forms.py:219\nmsgid \"Enter a valid area or mobile network code\"\nmsgstr \"\"\n\n#: hr/forms.py:220\nmsgid \"The phone nubmer is too long\"\nmsgstr \"\"\n\n#: hr/forms.py:258\nmsgid \"Enter a valid 19 digit JMBAG starting with 601983\"\nmsgstr \"\"\n\n#: hr/forms.py:259\nmsgid \"Card issue number cannot be zero\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:14\nmsgid \"Grad Zagreb\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:15\nmsgid \"Bjelovarsko-bilogorska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:16\nmsgid \"Brodsko-posavska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:17\nmsgid \"Dubrovačko-neretvanska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:18\nmsgid \"Istarska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:19\nmsgid \"Karlovačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:20\nmsgid \"Koprivničko-križevačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:21\nmsgid \"Krapinsko-zagorska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:22\nmsgid \"Ličko-senjska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:23\nmsgid \"Međimurska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:24\nmsgid \"Osječko-baranjska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:25\nmsgid \"Požeško-slavonska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:26\nmsgid \"Primorsko-goranska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:27\nmsgid \"Sisačko-moslavačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:28\nmsgid \"Splitsko-dalmatinska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:29\nmsgid \"Šibensko-kninska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:30\nmsgid \"Varaždinska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:31\nmsgid \"Virovitičko-podravska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:32\nmsgid \"Vukovarsko-srijemska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:33\nmsgid \"Zadarska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:34\nmsgid \"Zagrebačka županija\"\nmsgstr \"\"\n\n#: id/forms.py:31\nmsgid \"Enter a valid post code\"\nmsgstr \"Unesite ispravni poštansku kod\"\n\n#: id/forms.py:176\nmsgid \"Enter a valid NIK/KTP number\"\nmsgstr \"Unesite ispravan NIK/KTP broj\"\n\n#: id/id_choices.py:15\nmsgid \"Aceh\"\nmsgstr \"\"\n\n#: id/id_choices.py:16 id/id_choices.py:79\nmsgid \"Bali\"\nmsgstr \"\"\n\n#: id/id_choices.py:17 id/id_choices.py:51\nmsgid \"Banten\"\nmsgstr \"\"\n\n#: id/id_choices.py:18 id/id_choices.py:60\nmsgid \"Bengkulu\"\nmsgstr \"\"\n\n#: id/id_choices.py:19 id/id_choices.py:53\nmsgid \"Yogyakarta\"\nmsgstr \"\"\n\n#: id/id_choices.py:20 id/id_choices.py:57\nmsgid \"Jakarta\"\nmsgstr \"\"\n\n#: id/id_choices.py:21 id/id_choices.py:81\nmsgid \"Gorontalo\"\nmsgstr \"\"\n\n#: id/id_choices.py:22 id/id_choices.py:63\nmsgid \"Jambi\"\nmsgstr \"\"\n\n#: id/id_choices.py:23\nmsgid \"Jawa Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:24\nmsgid \"Jawa Tengah\"\nmsgstr \"\"\n\n#: id/id_choices.py:25\nmsgid \"Jawa Timur\"\nmsgstr \"\"\n\n#: id/id_choices.py:26 id/id_choices.py:94\nmsgid \"Kalimantan Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:27 id/id_choices.py:72\nmsgid \"Kalimantan Selatan\"\nmsgstr \"\"\n\n#: id/id_choices.py:28 id/id_choices.py:95\nmsgid \"Kalimantan Tengah\"\nmsgstr \"\"\n\n#: id/id_choices.py:29 id/id_choices.py:96\nmsgid \"Kalimantan Timur\"\nmsgstr \"\"\n\n#: id/id_choices.py:30\nmsgid \"Kepulauan Bangka-Belitung\"\nmsgstr \"\"\n\n#: id/id_choices.py:31 id/id_choices.py:68\nmsgid \"Kepulauan Riau\"\nmsgstr \"\"\n\n#: id/id_choices.py:32 id/id_choices.py:61\nmsgid \"Lampung\"\nmsgstr \"\"\n\n#: id/id_choices.py:33 id/id_choices.py:76\nmsgid \"Maluku\"\nmsgstr \"\"\n\n#: id/id_choices.py:34 id/id_choices.py:77\nmsgid \"Maluku Utara\"\nmsgstr \"\"\n\n#: id/id_choices.py:35\nmsgid \"Nusa Tenggara Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:36\nmsgid \"Nusa Tenggara Timur\"\nmsgstr \"\"\n\n#: id/id_choices.py:37\nmsgid \"Papua\"\nmsgstr \"\"\n\n#: id/id_choices.py:38\nmsgid \"Papua Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:39 id/id_choices.py:66\nmsgid \"Riau\"\nmsgstr \"\"\n\n#: id/id_choices.py:40 id/id_choices.py:74\nmsgid \"Sulawesi Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:41 id/id_choices.py:75\nmsgid \"Sulawesi Selatan\"\nmsgstr \"\"\n\n#: id/id_choices.py:42 id/id_choices.py:82\nmsgid \"Sulawesi Tengah\"\nmsgstr \"\"\n\n#: id/id_choices.py:43 id/id_choices.py:85\nmsgid \"Sulawesi Tenggara\"\nmsgstr \"\"\n\n#: id/id_choices.py:44\nmsgid \"Sulawesi Utara\"\nmsgstr \"\"\n\n#: id/id_choices.py:45 id/id_choices.py:58\nmsgid \"Sumatera Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:46 id/id_choices.py:62\nmsgid \"Sumatera Selatan\"\nmsgstr \"\"\n\n#: id/id_choices.py:47 id/id_choices.py:64\nmsgid \"Sumatera Utara\"\nmsgstr \"\"\n\n#: id/id_choices.py:52\nmsgid \"Magelang\"\nmsgstr \"\"\n\n#: id/id_choices.py:54\nmsgid \"Surakarta - Solo\"\nmsgstr \"\"\n\n#: id/id_choices.py:55\nmsgid \"Madiun\"\nmsgstr \"\"\n\n#: id/id_choices.py:56\nmsgid \"Kediri\"\nmsgstr \"\"\n\n#: id/id_choices.py:59\nmsgid \"Tapanuli\"\nmsgstr \"\"\n\n#: id/id_choices.py:65\nmsgid \"Nanggroe Aceh Darussalam\"\nmsgstr \"\"\n\n#: id/id_choices.py:67\nmsgid \"Kepulauan Bangka Belitung\"\nmsgstr \"\"\n\n#: id/id_choices.py:69\nmsgid \"Corps Consulate\"\nmsgstr \"\"\n\n#: id/id_choices.py:70\nmsgid \"Corps Diplomatic\"\nmsgstr \"\"\n\n#: id/id_choices.py:71\nmsgid \"Bandung\"\nmsgstr \"\"\n\n#: id/id_choices.py:73\nmsgid \"Sulawesi Utara Daratan\"\nmsgstr \"\"\n\n#: id/id_choices.py:78\nmsgid \"NTT - Timor\"\nmsgstr \"\"\n\n#: id/id_choices.py:80\nmsgid \"Sulawesi Utara Kepulauan\"\nmsgstr \"\"\n\n#: id/id_choices.py:83\nmsgid \"NTB - Lombok\"\nmsgstr \"\"\n\n#: id/id_choices.py:84\nmsgid \"Papua dan Papua Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:86\nmsgid \"Cirebon\"\nmsgstr \"\"\n\n#: id/id_choices.py:87\nmsgid \"NTB - Sumbawa\"\nmsgstr \"\"\n\n#: id/id_choices.py:88\nmsgid \"NTT - Flores\"\nmsgstr \"\"\n\n#: id/id_choices.py:89\nmsgid \"NTT - Sumba\"\nmsgstr \"\"\n\n#: id/id_choices.py:90\nmsgid \"Bogor\"\nmsgstr \"\"\n\n#: id/id_choices.py:91\nmsgid \"Pekalongan\"\nmsgstr \"\"\n\n#: id/id_choices.py:92\nmsgid \"Semarang\"\nmsgstr \"\"\n\n#: id/id_choices.py:93\nmsgid \"Pati\"\nmsgstr \"\"\n\n#: id/id_choices.py:97\nmsgid \"Surabaya\"\nmsgstr \"\"\n\n#: id/id_choices.py:98\nmsgid \"Madura\"\nmsgstr \"\"\n\n#: id/id_choices.py:99\nmsgid \"Malang\"\nmsgstr \"\"\n\n#: id/id_choices.py:100\nmsgid \"Jember\"\nmsgstr \"\"\n\n#: id/id_choices.py:101\nmsgid \"Banyumas\"\nmsgstr \"\"\n\n#: id/id_choices.py:102\nmsgid \"Federal Government\"\nmsgstr \"\"\n\n#: id/id_choices.py:103\nmsgid \"Bojonegoro\"\nmsgstr \"\"\n\n#: id/id_choices.py:104\nmsgid \"Purwakarta\"\nmsgstr \"\"\n\n#: id/id_choices.py:105\nmsgid \"Sidoarjo\"\nmsgstr \"\"\n\n#: id/id_choices.py:106\nmsgid \"Garut\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:8\nmsgid \"Antrim\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:9\nmsgid \"Armagh\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:10\nmsgid \"Carlow\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:11\nmsgid \"Cavan\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:12\nmsgid \"Clare\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:13\nmsgid \"Cork\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:14\nmsgid \"Derry\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:15\nmsgid \"Donegal\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:16\nmsgid \"Down\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:17\nmsgid \"Dublin\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:18\nmsgid \"Fermanagh\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:19\nmsgid \"Galway\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:20\nmsgid \"Kerry\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:21\nmsgid \"Kildare\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:22\nmsgid \"Kilkenny\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:23\nmsgid \"Laois\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:24\nmsgid \"Leitrim\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:25\nmsgid \"Limerick\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:26\nmsgid \"Longford\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:27\nmsgid \"Louth\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:28\nmsgid \"Mayo\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:29\nmsgid \"Meath\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:30\nmsgid \"Monaghan\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:31\nmsgid \"Offaly\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:32\nmsgid \"Roscommon\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:33\nmsgid \"Sligo\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:34\nmsgid \"Tipperary\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:35\nmsgid \"Tyrone\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:36\nmsgid \"Waterford\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:37\nmsgid \"Westmeath\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:38\nmsgid \"Wexford\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:39\nmsgid \"Wicklow\"\nmsgstr \"\"\n\n#: il/forms.py:32\nmsgid \"Enter a postal code in the format XXXXX\"\nmsgstr \"\"\n\n#: il/forms.py:51\nmsgid \"Enter a valid ID number.\"\nmsgstr \"\"\n\n#: in_/forms.py:41\nmsgid \"Enter a zip code in the format XXXXXX or XXX XXX.\"\nmsgstr \"\"\n\n#: in_/forms.py:64\nmsgid \"Enter an Indian state or territory.\"\nmsgstr \"\"\n\n#: in_/forms.py:103\nmsgid \"Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.\"\nmsgstr \"\"\n\n#: is_/forms.py:22\nmsgid \"\"\n\"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.\"\nmsgstr \"\"\n\"Unesite ispravan islandski identifikacijski broj. Format je XXXXXX-XXXX.\"\n\n#: is_/forms.py:23\nmsgid \"The Icelandic identification number is not valid.\"\nmsgstr \"Islanski identifikacijski broj nije ispravan.\"\n\n#: it/forms.py:21\nmsgid \"Enter a valid zip code.\"\nmsgstr \"Unesite ispravnu zip adresu.\"\n\n#: it/forms.py:48\nmsgid \"Enter a valid Social Security number.\"\nmsgstr \"Unesite ispravan Social Security broj.\"\n\n#: it/forms.py:73\nmsgid \"Enter a valid VAT number.\"\nmsgstr \"Unesite ispravan VAT broj.\"\n\n#: jp/forms.py:19\nmsgid \"Enter a postal code in the format XXXXXXX or XXX-XXXX.\"\nmsgstr \"Unesite poštanski broj u formatu XXXXXXX ili XXX-XXXX.\"\n\n#: jp/jp_prefectures.py:4\nmsgid \"Hokkaido\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:5\nmsgid \"Aomori\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:6\nmsgid \"Iwate\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:7\nmsgid \"Miyagi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:8\nmsgid \"Akita\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:9\nmsgid \"Yamagata\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:10\nmsgid \"Fukushima\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:11\nmsgid \"Ibaraki\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:12\nmsgid \"Tochigi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:13\nmsgid \"Gunma\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:14\nmsgid \"Saitama\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:15\nmsgid \"Chiba\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:16\nmsgid \"Tokyo\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:17\nmsgid \"Kanagawa\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:18\nmsgid \"Yamanashi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:19\nmsgid \"Nagano\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:20\nmsgid \"Niigata\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:21\nmsgid \"Toyama\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:22\nmsgid \"Ishikawa\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:23\nmsgid \"Fukui\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:24\nmsgid \"Gifu\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:25\nmsgid \"Shizuoka\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:26\nmsgid \"Aichi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:27\nmsgid \"Mie\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:28\nmsgid \"Shiga\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:29\nmsgid \"Kyoto\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:30\nmsgid \"Osaka\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:31\nmsgid \"Hyogo\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:32\nmsgid \"Nara\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:33\nmsgid \"Wakayama\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:34\nmsgid \"Tottori\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:35\nmsgid \"Shimane\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:36\nmsgid \"Okayama\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:37\nmsgid \"Hiroshima\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:38\nmsgid \"Yamaguchi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:39\nmsgid \"Tokushima\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:40\nmsgid \"Kagawa\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:41\nmsgid \"Ehime\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:42\nmsgid \"Kochi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:43\nmsgid \"Fukuoka\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:44\nmsgid \"Saga\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:45\nmsgid \"Nagasaki\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:46\nmsgid \"Kumamoto\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:47\nmsgid \"Oita\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:48\nmsgid \"Miyazaki\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:49\nmsgid \"Kagoshima\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:50\nmsgid \"Okinawa\"\nmsgstr \"\"\n\n#: kw/forms.py:27\nmsgid \"Enter a valid Kuwaiti Civil ID number\"\nmsgstr \"Unesite ispravan kuvajtski Civil ID broj\"\n\n#: mk/forms.py:18\nmsgid \"\"\n\"Identity card numbers must contain either 4 to 7 digits or an uppercase \"\n\"letter and 7 digits.\"\nmsgstr \"\"\n\n#: mk/forms.py:57 si/forms.py:24\nmsgid \"This field should contain exactly 13 digits.\"\nmsgstr \"\"\n\n#: mk/forms.py:58\nmsgid \"The first 7 digits of the UMCN must represent a valid past date.\"\nmsgstr \"\"\n\n#: mk/forms.py:59\nmsgid \"The UMCN is not valid.\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:10\nmsgid \"Aerodrom\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:11\nmsgid \"Aračinovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:12\nmsgid \"Berovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:13\nmsgid \"Bitola\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:14\nmsgid \"Bogdanci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:15\nmsgid \"Bogovinje\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:16\nmsgid \"Bosilovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:17\nmsgid \"Brvenica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:18\nmsgid \"Butel\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:19\nmsgid \"Valandovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:20\nmsgid \"Vasilevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:21\nmsgid \"Vevčani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:22\nmsgid \"Veles\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:23\nmsgid \"Vinica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:24\nmsgid \"Vraneštica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:25\nmsgid \"Vrapčište\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:26\nmsgid \"Gazi Baba\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:27\nmsgid \"Gevgelija\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:28\nmsgid \"Gostivar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:29\nmsgid \"Gradsko\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:30\nmsgid \"Debar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:31\nmsgid \"Debarca\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:32\nmsgid \"Delčevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:33\nmsgid \"Demir Kapija\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:34\nmsgid \"Demir Hisar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:35\nmsgid \"Dolneni\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:36\nmsgid \"Drugovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:37\nmsgid \"Gjorče Petrov\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:38\nmsgid \"Želino\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:39\nmsgid \"Zajas\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:40\nmsgid \"Zelenikovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:41\nmsgid \"Zrnovci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:42\nmsgid \"Ilinden\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:43\nmsgid \"Jegunovce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:44\nmsgid \"Kavadarci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:45\nmsgid \"Karbinci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:46\nmsgid \"Karpoš\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:47\nmsgid \"Kisela Voda\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:48\nmsgid \"Kičevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:49\nmsgid \"Konče\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:50\nmsgid \"Koćani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:51\nmsgid \"Kratovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:52\nmsgid \"Kriva Palanka\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:53\nmsgid \"Krivogaštani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:54\nmsgid \"Kruševo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:55\nmsgid \"Kumanovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:56\nmsgid \"Lipkovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:57\nmsgid \"Lozovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:58\nmsgid \"Mavrovo i Rostuša\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:59\nmsgid \"Makedonska Kamenica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:60\nmsgid \"Makedonski Brod\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:61\nmsgid \"Mogila\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:62\nmsgid \"Negotino\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:63\nmsgid \"Novaci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:64\nmsgid \"Novo Selo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:65\nmsgid \"Oslomej\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:66\nmsgid \"Ohrid\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:67\nmsgid \"Petrovec\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:68\nmsgid \"Pehčevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:69\nmsgid \"Plasnica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:70\nmsgid \"Prilep\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:71\nmsgid \"Probištip\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:72\nmsgid \"Radoviš\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:73\nmsgid \"Rankovce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:74\nmsgid \"Resen\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:75\nmsgid \"Rosoman\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:76\nmsgid \"Saraj\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:77\nmsgid \"Sveti Nikole\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:78\nmsgid \"Sopište\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:79\nmsgid \"Star Dojran\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:80\nmsgid \"Staro Nagoričane\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:81\nmsgid \"Struga\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:82\nmsgid \"Strumica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:83\nmsgid \"Studeničani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:84\nmsgid \"Tearce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:85\nmsgid \"Tetovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:86\nmsgid \"Centar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:87\nmsgid \"Centar-Župa\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:88\nmsgid \"Čair\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:89\nmsgid \"Čaška\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:90\nmsgid \"Češinovo-Obleševo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:91\nmsgid \"Čučer-Sandevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:92\nmsgid \"Štip\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:93\nmsgid \"Šuto Orizari\"\nmsgstr \"\"\n\n#: mk/models.py:11\nmsgid \"Macedonian identity card number\"\nmsgstr \"\"\n\n#: mk/models.py:25\nmsgid \"A Macedonian municipality (2 character code)\"\nmsgstr \"\"\n\n#: mk/models.py:35\nmsgid \"Unique master citizen number (13 digits)\"\nmsgstr \"\"\n\n#: mx/forms.py:67\nmsgid \"Enter a valid zip code in the format XXXXX.\"\nmsgstr \"\"\n\n#: mx/forms.py:110\nmsgid \"Enter a valid RFC.\"\nmsgstr \"\"\n\n#: mx/forms.py:111\nmsgid \"Invalid checksum for RFC.\"\nmsgstr \"\"\n\n#: mx/forms.py:191\nmsgid \"Enter a valid CURP.\"\nmsgstr \"\"\n\n#: mx/forms.py:192\nmsgid \"Invalid checksum for CURP.\"\nmsgstr \"\"\n\n#: mx/models.py:14\nmsgid \"Mexico state (three uppercase letters)\"\nmsgstr \"\"\n\n#: mx/models.py:27\nmsgid \"Mexico zip code\"\nmsgstr \"\"\n\n#: mx/models.py:44\nmsgid \"Mexican RFC\"\nmsgstr \"\"\n\n#: mx/models.py:61\nmsgid \"Mexican CURP\"\nmsgstr \"\"\n\n#: mx/mx_states.py:14\nmsgid \"Aguascalientes\"\nmsgstr \"\"\n\n#: mx/mx_states.py:15\nmsgid \"Baja California\"\nmsgstr \"\"\n\n#: mx/mx_states.py:16\nmsgid \"Baja California Sur\"\nmsgstr \"\"\n\n#: mx/mx_states.py:17\nmsgid \"Campeche\"\nmsgstr \"\"\n\n#: mx/mx_states.py:18\nmsgid \"Chihuahua\"\nmsgstr \"\"\n\n#: mx/mx_states.py:19\nmsgid \"Chiapas\"\nmsgstr \"\"\n\n#: mx/mx_states.py:20\nmsgid \"Coahuila\"\nmsgstr \"\"\n\n#: mx/mx_states.py:21\nmsgid \"Colima\"\nmsgstr \"\"\n\n#: mx/mx_states.py:22\nmsgid \"Distrito Federal\"\nmsgstr \"\"\n\n#: mx/mx_states.py:23\nmsgid \"Durango\"\nmsgstr \"\"\n\n#: mx/mx_states.py:24\nmsgid \"Guerrero\"\nmsgstr \"\"\n\n#: mx/mx_states.py:25\nmsgid \"Guanajuato\"\nmsgstr \"\"\n\n#: mx/mx_states.py:26\nmsgid \"Hidalgo\"\nmsgstr \"\"\n\n#: mx/mx_states.py:27\nmsgid \"Jalisco\"\nmsgstr \"\"\n\n#: mx/mx_states.py:28\nmsgid \"Estado de México\"\nmsgstr \"\"\n\n#: mx/mx_states.py:29\nmsgid \"Michoacán\"\nmsgstr \"\"\n\n#: mx/mx_states.py:30\nmsgid \"Morelos\"\nmsgstr \"\"\n\n#: mx/mx_states.py:31\nmsgid \"Nayarit\"\nmsgstr \"\"\n\n#: mx/mx_states.py:32\nmsgid \"Nuevo León\"\nmsgstr \"\"\n\n#: mx/mx_states.py:33\nmsgid \"Oaxaca\"\nmsgstr \"\"\n\n#: mx/mx_states.py:34\nmsgid \"Puebla\"\nmsgstr \"\"\n\n#: mx/mx_states.py:35\nmsgid \"Querétaro\"\nmsgstr \"\"\n\n#: mx/mx_states.py:36\nmsgid \"Quintana Roo\"\nmsgstr \"\"\n\n#: mx/mx_states.py:37\nmsgid \"Sinaloa\"\nmsgstr \"\"\n\n#: mx/mx_states.py:38\nmsgid \"San Luis Potosí\"\nmsgstr \"\"\n\n#: mx/mx_states.py:39\nmsgid \"Sonora\"\nmsgstr \"\"\n\n#: mx/mx_states.py:40\nmsgid \"Tabasco\"\nmsgstr \"\"\n\n#: mx/mx_states.py:41\nmsgid \"Tamaulipas\"\nmsgstr \"\"\n\n#: mx/mx_states.py:42\nmsgid \"Tlaxcala\"\nmsgstr \"\"\n\n#: mx/mx_states.py:43\nmsgid \"Veracruz\"\nmsgstr \"\"\n\n#: mx/mx_states.py:44\nmsgid \"Yucatán\"\nmsgstr \"\"\n\n#: mx/mx_states.py:45\nmsgid \"Zacatecas\"\nmsgstr \"\"\n\n#: nl/forms.py:26\nmsgid \"Enter a valid postal code\"\nmsgstr \"Unesite ispravnu poštansku adresu\"\n\n#: nl/forms.py:82\nmsgid \"Enter a valid SoFi number\"\nmsgstr \"Unesite ispravan SoFi broj\"\n\n#: nl/nl_provinces.py:4\nmsgid \"Drenthe\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:5\nmsgid \"Flevoland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:6\nmsgid \"Friesland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:7\nmsgid \"Gelderland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:8\nmsgid \"Groningen\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:10\nmsgid \"Noord-Brabant\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:11\nmsgid \"Noord-Holland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:12\nmsgid \"Overijssel\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:13\nmsgid \"Utrecht\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:14\nmsgid \"Zeeland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:15\nmsgid \"Zuid-Holland\"\nmsgstr \"\"\n\n#: no/forms.py:39\nmsgid \"Enter a valid Norwegian social security number.\"\nmsgstr \"Unesite ispravan norveški jedinstveni matični broj građana.\"\n\n#: pe/forms.py:28\nmsgid \"This field requires 8 digits.\"\nmsgstr \"Polje zahtijeva 8 cifri.\"\n\n#: pe/forms.py:56\nmsgid \"This field requires 11 digits.\"\nmsgstr \"Polje zahtijeva 11 cifri.\"\n\n#: pl/forms.py:42\nmsgid \"National Identification Number consists of 11 digits.\"\nmsgstr \"National Identification Number sastoji se od 11 cifri.\"\n\n#: pl/forms.py:43\nmsgid \"Wrong checksum for the National Identification Number.\"\nmsgstr \"Pogrešan checksum za National Identification Number.\"\n\n#: pl/forms.py:79\nmsgid \"National ID Card Number consists of 3 letters and 6 digits.\"\nmsgstr \"\"\n\n#: pl/forms.py:80\nmsgid \"Wrong checksum for the National ID Card Number.\"\nmsgstr \"\"\n\n#: pl/forms.py:131\nmsgid \"\"\n\"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or \"\n\"XXXXXXXXXX.\"\nmsgstr \"\"\n\n#: pl/forms.py:132\nmsgid \"Wrong checksum for the Tax Number (NIP).\"\nmsgstr \"Pogrešan checksum za Tax Number (NIP).\"\n\n#: pl/forms.py:171\nmsgid \"National Business Register Number (REGON) consists of 9 or 14 digits.\"\nmsgstr \"\"\n\"National Business Register Number (REGON) sastoji se od 9 ili 14 cifri.\"\n\n#: pl/forms.py:172\nmsgid \"Wrong checksum for the National Business Register Number (REGON).\"\nmsgstr \"Pogrešan checksum za National Business Register Number (REGON).\"\n\n#: pl/forms.py:212\nmsgid \"Enter a postal code in the format XX-XXX.\"\nmsgstr \"Unesite ispravnu poštansku adresu u formatu XX-XXX.\"\n\n#: pl/pl_voivodeships.py:8\nmsgid \"Lower Silesia\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:9\nmsgid \"Kuyavia-Pomerania\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:10\nmsgid \"Lublin\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:11\nmsgid \"Lubusz\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:12\nmsgid \"Lodz\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:13\nmsgid \"Lesser Poland\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:14\nmsgid \"Masovia\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:15\nmsgid \"Opole\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:16\nmsgid \"Subcarpatia\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:17\nmsgid \"Podlasie\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:18\nmsgid \"Pomerania\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:19\nmsgid \"Silesia\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:20\nmsgid \"Swietokrzyskie\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:21\nmsgid \"Warmia-Masuria\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:22\nmsgid \"Greater Poland\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:23\nmsgid \"West Pomerania\"\nmsgstr \"\"\n\n#: pt/forms.py:19\nmsgid \"Enter a zip code in the format XXXX-XXX.\"\nmsgstr \"Unesite zup kod u formatu XXXX-XXX\"\n\n#: pt/forms.py:39\nmsgid \"Phone numbers must have 9 digits, or start by + or 00.\"\nmsgstr \"Telefonski brojevi moraju imati 9 cifri, ili početi sa + ili 00.\"\n\n#: ro/forms.py:22\nmsgid \"Enter a valid CIF.\"\nmsgstr \"Unesite ispravan CIF.\"\n\n#: ro/forms.py:59\nmsgid \"Enter a valid CNP.\"\nmsgstr \"Unesite ispravan CNP.\"\n\n#: ro/forms.py:143\nmsgid \"Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format\"\nmsgstr \"Unesite ispravan IBAN ROXX-XXXX-XXXX-XXXX-XXXX-XXXX formatu\"\n\n#: ro/forms.py:175\nmsgid \"Phone numbers must be in XXXX-XXXXXX format.\"\nmsgstr \"Telefonski brojevi moraju biti u XXXX-XXXXXX formatu.\"\n\n#: ro/forms.py:200\nmsgid \"Enter a valid postal code in the format XXXXXX\"\nmsgstr \"Unesite ispravan poštanski broj u formatu XXXXXX\"\n\n#: ru/forms.py:37\nmsgid \"Enter a postal code in the format XXXXXX.\"\nmsgstr \"\"\n\n#: ru/forms.py:50\nmsgid \"Enter a passport number in the format XXXX XXXXXX.\"\nmsgstr \"\"\n\n#: ru/forms.py:63\nmsgid \"Enter a passport number in the format XX XXXXXXX.\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:10\nmsgid \"Central Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:11\nmsgid \"South Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:12\nmsgid \"North-West Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:13\nmsgid \"Far-East Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:14\nmsgid \"Siberian Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:15\nmsgid \"Ural Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:16\nmsgid \"Privolzhsky Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:17\nmsgid \"North-Caucasian Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:21\nmsgid \"Moskva\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:22\nmsgid \"Saint-Peterburg\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:23\nmsgid \"Moskovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:24\nmsgid \"Adygeya, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:25\nmsgid \"Bashkortostan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:26\nmsgid \"Buryatia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:27\nmsgid \"Altay, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:28\nmsgid \"Dagestan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:29\nmsgid \"Ingushskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:30\nmsgid \"Kabardino-Balkarskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:31\nmsgid \"Kalmykia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:32\nmsgid \"Karachaevo-Cherkesskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:33\nmsgid \"Karelia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:34\nmsgid \"Komi, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:35\nmsgid \"Mariy Ehl, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:36\nmsgid \"Mordovia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:37\nmsgid \"Sakha, Respublika (Yakutiya)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:38\nmsgid \"Severnaya Osetia, Respublika (Alania)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:39\nmsgid \"Tatarstan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:40\nmsgid \"Tyva, Respublika (Tuva)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:41\nmsgid \"Udmurtskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:42\nmsgid \"Khakassiya, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:43\nmsgid \"Chechenskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:44\nmsgid \"Chuvashskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:45\nmsgid \"Altayskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:46\nmsgid \"Zabaykalskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:47\nmsgid \"Kamchatskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:48\nmsgid \"Krasnodarskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:49\nmsgid \"Krasnoyarskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:50\nmsgid \"Permskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:51\nmsgid \"Primorskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:52\nmsgid \"Stavropol'siyy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:53\nmsgid \"Khabarovskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:54\nmsgid \"Amurskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:55\nmsgid \"Arkhangel'skaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:56\nmsgid \"Astrakhanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:57\nmsgid \"Belgorodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:58\nmsgid \"Bryanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:59\nmsgid \"Vladimirskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:60\nmsgid \"Volgogradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:61\nmsgid \"Vologodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:62\nmsgid \"Voronezhskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:63\nmsgid \"Ivanovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:64\nmsgid \"Irkutskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:65\nmsgid \"Kaliningradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:66\nmsgid \"Kaluzhskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:67\nmsgid \"Kemerovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:68\nmsgid \"Kirovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:69\nmsgid \"Kostromskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:70\nmsgid \"Kurganskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:71\nmsgid \"Kurskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:72\nmsgid \"Leningradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:73\nmsgid \"Lipeckaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:74\nmsgid \"Magadanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:75\nmsgid \"Murmanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:76\nmsgid \"Nizhegorodskaja oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:77\nmsgid \"Novgorodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:78\nmsgid \"Novosibirskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:79\nmsgid \"Omskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:80\nmsgid \"Orenburgskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:81\nmsgid \"Orlovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:82\nmsgid \"Penzenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:83\nmsgid \"Pskovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:84\nmsgid \"Rostovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:85\nmsgid \"Rjazanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:86\nmsgid \"Samarskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:87\nmsgid \"Saratovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:88\nmsgid \"Sakhalinskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:89\nmsgid \"Sverdlovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:90\nmsgid \"Smolenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:91\nmsgid \"Tambovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:92\nmsgid \"Tverskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:93\nmsgid \"Tomskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:94\nmsgid \"Tul'skaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:95\nmsgid \"Tyumenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:96\nmsgid \"Ul'ianovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:97\nmsgid \"Chelyabinskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:98\nmsgid \"Yaroslavskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:99\nmsgid \"Evreyskaya avtonomnaja oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:100\nmsgid \"Neneckiy autonomnyy okrug\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:101\nmsgid \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:102\nmsgid \"Chukotskiy avtonomnyy okrug\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:103\nmsgid \"Yamalo-Neneckiy avtonomnyy okrug\"\nmsgstr \"\"\n\n#: se/forms.py:54\nmsgid \"Enter a valid Swedish organisation number.\"\nmsgstr \"Unesite ispravan švedski organizacijski broj.\"\n\n#: se/forms.py:111\nmsgid \"Enter a valid Swedish personal identity number.\"\nmsgstr \"Unesite ispravan švedski identifikacijski broj\"\n\n#: se/forms.py:112\nmsgid \"Co-ordination numbers are not allowed.\"\nmsgstr \"Koordinatni brojevi nisu dozvoljeni.\"\n\n#: se/forms.py:154\nmsgid \"Enter a Swedish postal code in the format XXXXX.\"\nmsgstr \"Unesite švedsku poštansku adresu u formatu XXXXX.\"\n\n#: se/se_counties.py:16\nmsgid \"Stockholm\"\nmsgstr \"\"\n\n#: se/se_counties.py:17\nmsgid \"Västerbotten\"\nmsgstr \"\"\n\n#: se/se_counties.py:18\nmsgid \"Norrbotten\"\nmsgstr \"\"\n\n#: se/se_counties.py:19\nmsgid \"Uppsala\"\nmsgstr \"\"\n\n#: se/se_counties.py:20\nmsgid \"Södermanland\"\nmsgstr \"\"\n\n#: se/se_counties.py:21\nmsgid \"Östergötland\"\nmsgstr \"\"\n\n#: se/se_counties.py:22\nmsgid \"Jönköping\"\nmsgstr \"\"\n\n#: se/se_counties.py:23\nmsgid \"Kronoberg\"\nmsgstr \"\"\n\n#: se/se_counties.py:24\nmsgid \"Kalmar\"\nmsgstr \"\"\n\n#: se/se_counties.py:25\nmsgid \"Gotland\"\nmsgstr \"\"\n\n#: se/se_counties.py:26\nmsgid \"Blekinge\"\nmsgstr \"\"\n\n#: se/se_counties.py:27\nmsgid \"Skåne\"\nmsgstr \"\"\n\n#: se/se_counties.py:28\nmsgid \"Halland\"\nmsgstr \"\"\n\n#: se/se_counties.py:29\nmsgid \"Västra Götaland\"\nmsgstr \"\"\n\n#: se/se_counties.py:30\nmsgid \"Värmland\"\nmsgstr \"\"\n\n#: se/se_counties.py:31\nmsgid \"Örebro\"\nmsgstr \"\"\n\n#: se/se_counties.py:32\nmsgid \"Västmanland\"\nmsgstr \"\"\n\n#: se/se_counties.py:33\nmsgid \"Dalarna\"\nmsgstr \"\"\n\n#: se/se_counties.py:34\nmsgid \"Gävleborg\"\nmsgstr \"\"\n\n#: se/se_counties.py:35\nmsgid \"Västernorrland\"\nmsgstr \"\"\n\n#: se/se_counties.py:36\nmsgid \"Jämtland\"\nmsgstr \"\"\n\n#: si/forms.py:25\nmsgid \"The first 7 digits of the EMSO must represent a valid past date.\"\nmsgstr \"\"\n\n#: si/forms.py:26\nmsgid \"The EMSO is not valid.\"\nmsgstr \"\"\n\n#: si/forms.py:86\nmsgid \"Enter a valid tax number in form SIXXXXXXXX\"\nmsgstr \"\"\n\n#: si/forms.py:151\nmsgid \"Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:8\nmsgid \"Banska Bystrica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:9\nmsgid \"Banska Stiavnica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:10\nmsgid \"Bardejov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:11\nmsgid \"Banovce nad Bebravou\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:12\nmsgid \"Brezno\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:13\nmsgid \"Bratislava I\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:14\nmsgid \"Bratislava II\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:15\nmsgid \"Bratislava III\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:16\nmsgid \"Bratislava IV\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:17\nmsgid \"Bratislava V\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:18\nmsgid \"Bytca\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:19\nmsgid \"Cadca\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:20\nmsgid \"Detva\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:21\nmsgid \"Dolny Kubin\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:22\nmsgid \"Dunajska Streda\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:23\nmsgid \"Galanta\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:24\nmsgid \"Gelnica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:25\nmsgid \"Hlohovec\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:26\nmsgid \"Humenne\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:27\nmsgid \"Ilava\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:28\nmsgid \"Kezmarok\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:29\nmsgid \"Komarno\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:30\nmsgid \"Kosice I\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:31\nmsgid \"Kosice II\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:32\nmsgid \"Kosice III\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:33\nmsgid \"Kosice IV\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:34\nmsgid \"Kosice - okolie\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:35\nmsgid \"Krupina\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:36\nmsgid \"Kysucke Nove Mesto\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:37\nmsgid \"Levice\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:38\nmsgid \"Levoca\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:39\nmsgid \"Liptovsky Mikulas\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:40\nmsgid \"Lucenec\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:41\nmsgid \"Malacky\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:42\nmsgid \"Martin\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:43\nmsgid \"Medzilaborce\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:44\nmsgid \"Michalovce\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:45\nmsgid \"Myjava\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:46\nmsgid \"Namestovo\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:47\nmsgid \"Nitra\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:48\nmsgid \"Nove Mesto nad Vahom\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:49\nmsgid \"Nove Zamky\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:50\nmsgid \"Partizanske\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:51\nmsgid \"Pezinok\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:52\nmsgid \"Piestany\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:53\nmsgid \"Poltar\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:54\nmsgid \"Poprad\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:55\nmsgid \"Povazska Bystrica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:56\nmsgid \"Presov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:57\nmsgid \"Prievidza\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:58\nmsgid \"Puchov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:59\nmsgid \"Revuca\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:60\nmsgid \"Rimavska Sobota\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:61\nmsgid \"Roznava\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:62\nmsgid \"Ruzomberok\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:63\nmsgid \"Sabinov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:64\nmsgid \"Senec\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:65\nmsgid \"Senica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:66\nmsgid \"Skalica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:67\nmsgid \"Snina\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:68\nmsgid \"Sobrance\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:69\nmsgid \"Spisska Nova Ves\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:70\nmsgid \"Stara Lubovna\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:71\nmsgid \"Stropkov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:72\nmsgid \"Svidnik\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:73\nmsgid \"Sala\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:74\nmsgid \"Topolcany\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:75\nmsgid \"Trebisov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:76\nmsgid \"Trencin\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:77\nmsgid \"Trnava\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:78\nmsgid \"Turcianske Teplice\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:79\nmsgid \"Tvrdosin\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:80\nmsgid \"Velky Krtis\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:81\nmsgid \"Vranov nad Toplou\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:82\nmsgid \"Zlate Moravce\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:83\nmsgid \"Zvolen\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:84\nmsgid \"Zarnovica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:85\nmsgid \"Ziar nad Hronom\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:86\nmsgid \"Zilina\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:8\nmsgid \"Banska Bystrica region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:9\nmsgid \"Bratislava region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:10\nmsgid \"Kosice region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:11\nmsgid \"Nitra region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:12\nmsgid \"Presov region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:13\nmsgid \"Trencin region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:14\nmsgid \"Trnava region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:15\nmsgid \"Zilina region\"\nmsgstr \"\"\n\n#: tr/forms.py:21\nmsgid \"Enter a postal code in the format XXXXX.\"\nmsgstr \"\"\n\n#: tr/forms.py:42\nmsgid \"Phone numbers must be in 0XXX XXX XXXX format.\"\nmsgstr \"\"\n\n#: tr/forms.py:69\nmsgid \"Enter a valid Turkish Identification number.\"\nmsgstr \"\"\n\n#: tr/forms.py:70\nmsgid \"Turkish Identification number must be 11 digits.\"\nmsgstr \"\"\n\n#: us/forms.py:21\nmsgid \"Enter a zip code in the format XXXXX or XXXXX-XXXX.\"\nmsgstr \"Unesite poštansku adresu u formatu XXXXX ili XXXXX-XXXX\"\n\n#: us/forms.py:59\nmsgid \"Enter a valid U.S. Social Security number in XXX-XX-XXXX format.\"\nmsgstr \"Unesite ispravan američki Social Security broj u XXX-XX-XXXX formatu.\"\n\n#: us/forms.py:92\nmsgid \"Enter a U.S. state or territory.\"\nmsgstr \"Unesite U.S. državu ili teritorij\"\n\n#: us/models.py:8\nmsgid \"U.S. state (two uppercase letters)\"\nmsgstr \"Država u SAD (dva velika slova)\"\n\n#: us/models.py:17\nmsgid \"U.S. postal code (two uppercase letters)\"\nmsgstr \"\"\n\n#: us/models.py:26\nmsgid \"Phone number\"\nmsgstr \"Broj telefona\"\n\n#: uy/forms.py:29\nmsgid \"Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.\"\nmsgstr \"Unestie važeći CUIT u formatu XX-XXXXXXXX-X or XXXXXXXXXXXX.\"\n\n#: uy/forms.py:31\nmsgid \"Enter a valid CI number.\"\nmsgstr \"Unsite ispravan IC broj.\"\n\n#: za/forms.py:22\nmsgid \"Enter a valid South African ID number\"\nmsgstr \"Unesite ispravan južnoafrički ID broj\"\n\n#: za/forms.py:56\nmsgid \"Enter a valid South African postal code\"\nmsgstr \"Unesite ispravnu južnoafričku poštansku adresu\"\n\n#: za/za_provinces.py:4\nmsgid \"Eastern Cape\"\nmsgstr \"\"\n\n#: za/za_provinces.py:5\nmsgid \"Free State\"\nmsgstr \"\"\n\n#: za/za_provinces.py:6\nmsgid \"Gauteng\"\nmsgstr \"\"\n\n#: za/za_provinces.py:7\nmsgid \"KwaZulu-Natal\"\nmsgstr \"\"\n\n#: za/za_provinces.py:8\nmsgid \"Limpopo\"\nmsgstr \"\"\n\n#: za/za_provinces.py:9\nmsgid \"Mpumalanga\"\nmsgstr \"\"\n\n#: za/za_provinces.py:10\nmsgid \"Northern Cape\"\nmsgstr \"\"\n\n#: za/za_provinces.py:11\nmsgid \"North West\"\nmsgstr \"\"\n\n#: za/za_provinces.py:12\nmsgid \"Western Cape\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/locale/ca/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Antoni Aloy <aaloy@apsl.net>, 2012.\n# Antoni Aloy <antoni.aloy@trespams.com>, 2011.\n# Carles Barrobés <carles@barrobes.com>, 2011, 2012.\n# el_libre como el chaval <el.libre@gmail.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-10-28 11:39+0000\\n\"\n\"Last-Translator: Antoni Aloy <aaloy@apsl.net>\\n\"\n\"Language-Team: Catalan (http://www.transifex.com/projects/p/django/language/\"\n\"ca/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ca\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: ar/forms.py:30\nmsgid \"Enter a postal code in the format NNNN or ANNNNAAA.\"\nmsgstr \"Introduïu un codi postal en el format NNNN o ANNNNAAA.\"\n\n#: ar/forms.py:52 br/forms.py:95 br/forms.py:134 pe/forms.py:27 pe/forms.py:55\nmsgid \"This field requires only numbers.\"\nmsgstr \"Aquest camp precisa només números.\"\n\n#: ar/forms.py:53\nmsgid \"This field requires 7 or 8 digits.\"\nmsgstr \"Aquest camp precisa 7 o 8 dígits.\"\n\n#: ar/forms.py:82\nmsgid \"Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.\"\nmsgstr \"\"\n\"Introduïu un número CUIT vàlid en el format XX-XXXXXXXX-X o XXXXXXXXXXXX.\"\n\n#: ar/forms.py:83\nmsgid \"Invalid CUIT.\"\nmsgstr \"CUIT invàlid.\"\n\n#: ar/forms.py:84\nmsgid \"Invalid legal type. Type must be 27, 20, 23 or 30.\"\nmsgstr \"Tipus legal invàlid. Ha de ser 27, 20, 23 o 30.\"\n\n#: at/at_states.py:5\nmsgid \"Burgenland\"\nmsgstr \"Burgenland\"\n\n#: at/at_states.py:6\nmsgid \"Carinthia\"\nmsgstr \"Carinthia\"\n\n#: at/at_states.py:7\nmsgid \"Lower Austria\"\nmsgstr \"Àustria Inferior\"\n\n#: at/at_states.py:8\nmsgid \"Upper Austria\"\nmsgstr \"Àustria Superior\"\n\n#: at/at_states.py:9\nmsgid \"Salzburg\"\nmsgstr \"Salzburg\"\n\n#: at/at_states.py:10\nmsgid \"Styria\"\nmsgstr \"Styria\"\n\n#: at/at_states.py:11\nmsgid \"Tyrol\"\nmsgstr \"Tirol\"\n\n#: at/at_states.py:12\nmsgid \"Vorarlberg\"\nmsgstr \"Vorarlberg\"\n\n#: at/at_states.py:13\nmsgid \"Vienna\"\nmsgstr \"Viena\"\n\n#: at/forms.py:22 ch/forms.py:22 no/forms.py:19\nmsgid \"Enter a zip code in the format XXXX.\"\nmsgstr \"Introduïu un codi zip en el format XXXX.\"\n\n#: at/forms.py:50\nmsgid \"Enter a valid Austrian Social Security Number in XXXX XXXXXX format.\"\nmsgstr \"\"\n\"Introduïu un número vàlid de la Seguretat Social Austríaca en el format XXXX \"\n\"XXXXXX.\"\n\n#: au/forms.py:26\nmsgid \"Enter a 4 digit postcode.\"\nmsgstr \"Introdueix el codi postal de 4 digits\"\n\n#: au/models.py:9\nmsgid \"Australian State\"\nmsgstr \"Estat australià\"\n\n#: au/models.py:19\nmsgid \"Australian Postcode\"\nmsgstr \"Codo postal australià\"\n\n#: au/models.py:33\nmsgid \"Australian Phone number\"\nmsgstr \"Telèfon australià\"\n\n#: be/be_provinces.py:5\nmsgid \"Antwerp\"\nmsgstr \"Ambers\"\n\n#: be/be_provinces.py:6\nmsgid \"Brussels\"\nmsgstr \"Brussel·les\"\n\n#: be/be_provinces.py:7\nmsgid \"East Flanders\"\nmsgstr \"Flandes de l'est\"\n\n#: be/be_provinces.py:8\nmsgid \"Flemish Brabant\"\nmsgstr \"Brabant flamenc\"\n\n#: be/be_provinces.py:9\nmsgid \"Hainaut\"\nmsgstr \"Hainaut\"\n\n#: be/be_provinces.py:10\nmsgid \"Liege\"\nmsgstr \"Lieja\"\n\n#: be/be_provinces.py:11 nl/nl_provinces.py:9\nmsgid \"Limburg\"\nmsgstr \"Limburg\"\n\n#: be/be_provinces.py:12\nmsgid \"Luxembourg\"\nmsgstr \"Luxemburg\"\n\n#: be/be_provinces.py:13\nmsgid \"Namur\"\nmsgstr \"Namur\"\n\n#: be/be_provinces.py:14\nmsgid \"Walloon Brabant\"\nmsgstr \"Brabant való\"\n\n#: be/be_provinces.py:15\nmsgid \"West Flanders\"\nmsgstr \"Flandes de l'oest\"\n\n#: be/be_regions.py:5\nmsgid \"Brussels Capital Region\"\nmsgstr \"Regió capital de Brussel·les\"\n\n#: be/be_regions.py:6\nmsgid \"Flemish Region\"\nmsgstr \"Regió flamenca\"\n\n#: be/be_regions.py:7\nmsgid \"Wallonia\"\nmsgstr \"Valònia\"\n\n#: be/forms.py:25\nmsgid \"Enter a valid postal code in the range and format 1XXX - 9XXX.\"\nmsgstr \"Introduïu un codi postal vàlid en el rang i format 1XXX - 9XXX.\"\n\n#: be/forms.py:48\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\nmsgstr \"\"\n\"Introduïu un número de telèfon vàlid en un dels formats 0x xxx xx xx, 0xx xx \"\n\"xx xx, 04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.\"\n\"xx, 0xx.xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx o 04xxxxxxxx.\"\n\n#: br/forms.py:22\nmsgid \"Enter a zip code in the format XXXXX-XXX.\"\nmsgstr \"Introduïu un codi zip en el format XXXXX-XXX.\"\n\n#: br/forms.py:31\nmsgid \"Phone numbers must be in XX-XXXX-XXXX format.\"\nmsgstr \"El número de telèfon ha d'estar en el format XX-XXXX-XXXX.\"\n\n#: br/forms.py:58\nmsgid \"\"\n\"Select a valid brazilian state. That state is not one of the available \"\n\"states.\"\nmsgstr \"\"\n\"Seleccioneu un estat brasiler vàlid. Aquest estat no és un dels estats \"\n\"disponibles.\"\n\n#: br/forms.py:93\nmsgid \"Invalid CPF number.\"\nmsgstr \"Número CPF invàlid.\"\n\n#: br/forms.py:94\nmsgid \"This field requires at most 11 digits or 14 characters.\"\nmsgstr \"Aquest camp precisa com a màxim 11 dígits o 14 caràcters.\"\n\n#: br/forms.py:133\nmsgid \"Invalid CNPJ number.\"\nmsgstr \"Número CNPJ invàlid.\"\n\n#: br/forms.py:135\nmsgid \"This field requires at least 14 digits\"\nmsgstr \"Aquest camp precisa almenys 14 dígits.\"\n\n#: ca/forms.py:29\nmsgid \"Enter a postal code in the format XXX XXX.\"\nmsgstr \"Introduïu un codi postal en el format XXX XXX.\"\n\n#: ca/forms.py:47 us/forms.py:30\nmsgid \"Phone numbers must be in XXX-XXX-XXXX format.\"\nmsgstr \"Els números de telèfon han d'estar en el format XXX-XXX-XXXX.\"\n\n#: ca/forms.py:69\nmsgid \"Enter a Canadian province or territory.\"\nmsgstr \"Introdueix un territori o una província canadencs\"\n\n#: ca/forms.py:110\nmsgid \"Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.\"\nmsgstr \"\"\n\"Introduïu un número vàlid de la Seguretat Social de Canadà en el format XXX-\"\n\"XXX-XXX.\"\n\n#: ch/ch_states.py:5\nmsgid \"Aargau\"\nmsgstr \"Argau\"\n\n#: ch/ch_states.py:6\nmsgid \"Appenzell Innerrhoden\"\nmsgstr \"Appenzell Inner-Rhoden\"\n\n#: ch/ch_states.py:7\nmsgid \"Appenzell Ausserrhoden\"\nmsgstr \"Appenzell Ausser-Rhoden\"\n\n#: ch/ch_states.py:8\nmsgid \"Basel-Stadt\"\nmsgstr \"Basilea-Ciutat\"\n\n#: ch/ch_states.py:9\nmsgid \"Basel-Land\"\nmsgstr \"Basilea-Land\"\n\n#: ch/ch_states.py:10\nmsgid \"Berne\"\nmsgstr \"Berna\"\n\n#: ch/ch_states.py:11\nmsgid \"Fribourg\"\nmsgstr \"Friburg\"\n\n#: ch/ch_states.py:12\nmsgid \"Geneva\"\nmsgstr \"Ginebra\"\n\n#: ch/ch_states.py:13\nmsgid \"Glarus\"\nmsgstr \"Glarus\"\n\n#: ch/ch_states.py:14\nmsgid \"Graubuenden\"\nmsgstr \"Graubuenden\"\n\n#: ch/ch_states.py:15\nmsgid \"Jura\"\nmsgstr \"Jura\"\n\n#: ch/ch_states.py:16\nmsgid \"Lucerne\"\nmsgstr \"Lucerna\"\n\n#: ch/ch_states.py:17\nmsgid \"Neuchatel\"\nmsgstr \"Neuchatel\"\n\n#: ch/ch_states.py:18\nmsgid \"Nidwalden\"\nmsgstr \"Nidwalden\"\n\n#: ch/ch_states.py:19\nmsgid \"Obwalden\"\nmsgstr \"Obwalden\"\n\n#: ch/ch_states.py:20\nmsgid \"Schaffhausen\"\nmsgstr \"Schaffhausen\"\n\n#: ch/ch_states.py:21\nmsgid \"Schwyz\"\nmsgstr \"Schwyz\"\n\n#: ch/ch_states.py:22\nmsgid \"Solothurn\"\nmsgstr \"Solothurn\"\n\n#: ch/ch_states.py:23\nmsgid \"St. Gallen\"\nmsgstr \"St. Gallen\"\n\n#: ch/ch_states.py:24\nmsgid \"Thurgau\"\nmsgstr \"Thurgau\"\n\n#: ch/ch_states.py:25\nmsgid \"Ticino\"\nmsgstr \"Ticino\"\n\n#: ch/ch_states.py:26\nmsgid \"Uri\"\nmsgstr \"Uri\"\n\n#: ch/ch_states.py:27\nmsgid \"Valais\"\nmsgstr \"Valais\"\n\n#: ch/ch_states.py:28\nmsgid \"Vaud\"\nmsgstr \"Vaud\"\n\n#: ch/ch_states.py:29\nmsgid \"Zug\"\nmsgstr \"Zug\"\n\n#: ch/ch_states.py:30\nmsgid \"Zurich\"\nmsgstr \"Zuric\"\n\n#: ch/forms.py:37\nmsgid \"Phone numbers must be in 0XX XXX XX XX format.\"\nmsgstr \"El nombre de telèfon han de tenir el format 0XX XXX XX XX\"\n\n#: ch/forms.py:68\nmsgid \"\"\n\"Enter a valid Swiss identity or passport card number in X1234567<0 or \"\n\"1234567890 format.\"\nmsgstr \"\"\n\"Introduïu un número d'identificació o de passaport Suïssos en els formats \"\n\"1234567890 o X1234567<0.\"\n\n#: cl/forms.py:32\nmsgid \"Enter a valid Chilean RUT.\"\nmsgstr \"Introduïu un RUT Xilè vàlid.\"\n\n#: cl/forms.py:33\nmsgid \"Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.\"\nmsgstr \"Introduïu un RUT Xilè vàlid. El format és XX.XXX.XXX-X\"\n\n#: cl/forms.py:34\nmsgid \"The Chilean RUT is not valid.\"\nmsgstr \"El RUT Xilè no és vàlid.\"\n\n#: cn/forms.py:84\nmsgid \"Enter a post code in the format XXXXXX.\"\nmsgstr \"Introdueix el codi postal en format XXXXX\"\n\n#: cn/forms.py:105\nmsgid \"ID Card Number consists of 15 or 18 digits.\"\nmsgstr \"L'identificador de tarja ha de tenir 15 o 18 dígits\"\n\n#: cn/forms.py:106\nmsgid \"Invalid ID Card Number: Wrong checksum\"\nmsgstr \"Nombre de tarja invàlid: suma de comprovació incorrecta\"\n\n#: cn/forms.py:107\nmsgid \"Invalid ID Card Number: Wrong birthdate\"\nmsgstr \"Nombre de tarja invàlid: data de naixement errònia\"\n\n#: cn/forms.py:108\nmsgid \"Invalid ID Card Number: Wrong location code\"\nmsgstr \"Nombre de tarja d'identificació  invàlid: codi d'ubicació incorrecta\"\n\n#: cn/forms.py:193\nmsgid \"Enter a valid phone number.\"\nmsgstr \"Introdueix un telèfon vàlid\"\n\n#: cn/forms.py:210\nmsgid \"Enter a valid cell number.\"\nmsgstr \"Escriu un número correcte de mòbil\"\n\n#: cz/cz_regions.py:8\nmsgid \"Prague\"\nmsgstr \"Praga\"\n\n#: cz/cz_regions.py:9\nmsgid \"Central Bohemian Region\"\nmsgstr \"Regió Bohèmia Central\"\n\n#: cz/cz_regions.py:10\nmsgid \"South Bohemian Region\"\nmsgstr \"Regió Bohèmia Sur\"\n\n#: cz/cz_regions.py:11\nmsgid \"Pilsen Region\"\nmsgstr \"Regió Pilsen\"\n\n#: cz/cz_regions.py:12\nmsgid \"Carlsbad Region\"\nmsgstr \"Regió Carlsbad\"\n\n#: cz/cz_regions.py:13\nmsgid \"Usti Region\"\nmsgstr \"Regió Usti\"\n\n#: cz/cz_regions.py:14\nmsgid \"Liberec Region\"\nmsgstr \"Regió Liberec\"\n\n#: cz/cz_regions.py:15\nmsgid \"Hradec Region\"\nmsgstr \"Regió Hradec\"\n\n#: cz/cz_regions.py:16\nmsgid \"Pardubice Region\"\nmsgstr \"Regió Pardubice\"\n\n#: cz/cz_regions.py:17\nmsgid \"Vysocina Region\"\nmsgstr \"Regió Vysocina\"\n\n#: cz/cz_regions.py:18\nmsgid \"South Moravian Region\"\nmsgstr \"Regió Moràvia Sur\"\n\n#: cz/cz_regions.py:19\nmsgid \"Olomouc Region\"\nmsgstr \"Regió Olomouc\"\n\n#: cz/cz_regions.py:20\nmsgid \"Zlin Region\"\nmsgstr \"Regió Zlin\"\n\n#: cz/cz_regions.py:21\nmsgid \"Moravian-Silesian Region\"\nmsgstr \"Regió Moràvia-Silesiana\"\n\n#: cz/forms.py:32 sk/forms.py:33\nmsgid \"Enter a postal code in the format XXXXX or XXX XX.\"\nmsgstr \"Introduïu un codi postal en el format XXXXX o XXX XX.\"\n\n#: cz/forms.py:52\nmsgid \"Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.\"\nmsgstr \"\"\n\"Introduïu un número de naixement en el format XXXXXX/XXXX o XXXXXXXXXX.\"\n\n#: cz/forms.py:53\nmsgid \"Enter a valid birth number.\"\nmsgstr \"Introduïu un número de naixement vàlid.\"\n\n#: cz/forms.py:102\nmsgid \"Enter a valid IC number.\"\nmsgstr \"Introduïu un número de IC vàlid.\"\n\n#: de/de_states.py:5\nmsgid \"Baden-Wuerttemberg\"\nmsgstr \"Baden-Württemberg\"\n\n#: de/de_states.py:6\nmsgid \"Bavaria\"\nmsgstr \"Baviera\"\n\n#: de/de_states.py:7\nmsgid \"Berlin\"\nmsgstr \"Berlín\"\n\n#: de/de_states.py:8\nmsgid \"Brandenburg\"\nmsgstr \"Brandenburg\"\n\n#: de/de_states.py:9\nmsgid \"Bremen\"\nmsgstr \"Bremen\"\n\n#: de/de_states.py:10\nmsgid \"Hamburg\"\nmsgstr \"Hamburg\"\n\n#: de/de_states.py:11\nmsgid \"Hessen\"\nmsgstr \"Hessen\"\n\n#: de/de_states.py:12\nmsgid \"Mecklenburg-Western Pomerania\"\nmsgstr \"Mecklenburg-Pomerània Occidental\"\n\n#: de/de_states.py:13\nmsgid \"Lower Saxony\"\nmsgstr \"Baixa Saxònia\"\n\n#: de/de_states.py:14\nmsgid \"North Rhine-Westphalia\"\nmsgstr \"Renània del Nord-Westfàlia\"\n\n#: de/de_states.py:15\nmsgid \"Rhineland-Palatinate\"\nmsgstr \"Renània-Palatinat\"\n\n#: de/de_states.py:16\nmsgid \"Saarland\"\nmsgstr \"Saarland\"\n\n#: de/de_states.py:17\nmsgid \"Saxony\"\nmsgstr \"Saxònia\"\n\n#: de/de_states.py:18\nmsgid \"Saxony-Anhalt\"\nmsgstr \"Saxònia-Anhalt\"\n\n#: de/de_states.py:19\nmsgid \"Schleswig-Holstein\"\nmsgstr \"Slesvig-Holstein\"\n\n#: de/de_states.py:20\nmsgid \"Thuringia\"\nmsgstr \"Turíngia\"\n\n#: de/forms.py:20 fi/forms.py:18 fr/forms.py:20\nmsgid \"Enter a zip code in the format XXXXX.\"\nmsgstr \"Introduïu un codi zip en el format XXXXX.\"\n\n#: de/forms.py:46\nmsgid \"\"\n\"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"format.\"\nmsgstr \"\"\n\"Introduïu un número vàlid de tarjeta d'identificació alemanya en el format \"\n\"XXXXXXXXXXX-XXXXXXX-XXXXXXX-X.\"\n\n#: es/es_provinces.py:5\nmsgid \"Araba\"\nmsgstr \"Araba\"\n\n#: es/es_provinces.py:6\nmsgid \"Albacete\"\nmsgstr \"Albacete\"\n\n#: es/es_provinces.py:7\nmsgid \"Alacant\"\nmsgstr \"Alacant\"\n\n#: es/es_provinces.py:8\nmsgid \"Almeria\"\nmsgstr \"Almeria\"\n\n#: es/es_provinces.py:9\nmsgid \"Avila\"\nmsgstr \"Àvila\"\n\n#: es/es_provinces.py:10\nmsgid \"Badajoz\"\nmsgstr \"Badajoz\"\n\n#: es/es_provinces.py:11\nmsgid \"Illes Balears\"\nmsgstr \"Illes Balears\"\n\n#: es/es_provinces.py:12\nmsgid \"Barcelona\"\nmsgstr \"Barcelona\"\n\n#: es/es_provinces.py:13\nmsgid \"Burgos\"\nmsgstr \"Burgos\"\n\n#: es/es_provinces.py:14\nmsgid \"Caceres\"\nmsgstr \"Càceres\"\n\n#: es/es_provinces.py:15\nmsgid \"Cadiz\"\nmsgstr \"Cadis\"\n\n#: es/es_provinces.py:16\nmsgid \"Castello\"\nmsgstr \"Castelló\"\n\n#: es/es_provinces.py:17\nmsgid \"Ciudad Real\"\nmsgstr \"Ciudad Real\"\n\n#: es/es_provinces.py:18\nmsgid \"Cordoba\"\nmsgstr \"Còrdova\"\n\n#: es/es_provinces.py:19\nmsgid \"A Coruna\"\nmsgstr \"La Corunya\"\n\n#: es/es_provinces.py:20\nmsgid \"Cuenca\"\nmsgstr \"Conca\"\n\n#: es/es_provinces.py:21\nmsgid \"Girona\"\nmsgstr \"Girona\"\n\n#: es/es_provinces.py:22\nmsgid \"Granada\"\nmsgstr \"Granada\"\n\n#: es/es_provinces.py:23\nmsgid \"Guadalajara\"\nmsgstr \"Guadalajara\"\n\n#: es/es_provinces.py:24\nmsgid \"Guipuzkoa\"\nmsgstr \"Guipúscoa\"\n\n#: es/es_provinces.py:25\nmsgid \"Huelva\"\nmsgstr \"Huelva\"\n\n#: es/es_provinces.py:26\nmsgid \"Huesca\"\nmsgstr \"Osca\"\n\n#: es/es_provinces.py:27\nmsgid \"Jaen\"\nmsgstr \"Jaén\"\n\n#: es/es_provinces.py:28\nmsgid \"Leon\"\nmsgstr \"Lleó\"\n\n#: es/es_provinces.py:29\nmsgid \"Lleida\"\nmsgstr \"Lleida\"\n\n#: es/es_provinces.py:30 es/es_regions.py:17\nmsgid \"La Rioja\"\nmsgstr \"La Rioja\"\n\n#: es/es_provinces.py:31\nmsgid \"Lugo\"\nmsgstr \"Lugo\"\n\n#: es/es_provinces.py:32 es/es_regions.py:18\nmsgid \"Madrid\"\nmsgstr \"Madrid\"\n\n#: es/es_provinces.py:33\nmsgid \"Malaga\"\nmsgstr \"Màlaga\"\n\n#: es/es_provinces.py:34\nmsgid \"Murcia\"\nmsgstr \"Múrcia\"\n\n#: es/es_provinces.py:35\nmsgid \"Navarre\"\nmsgstr \"Navarra\"\n\n#: es/es_provinces.py:36\nmsgid \"Ourense\"\nmsgstr \"Ourense\"\n\n#: es/es_provinces.py:37\nmsgid \"Asturias\"\nmsgstr \"Astúries\"\n\n#: es/es_provinces.py:38\nmsgid \"Palencia\"\nmsgstr \"Palència\"\n\n#: es/es_provinces.py:39\nmsgid \"Las Palmas\"\nmsgstr \"Las Palmas\"\n\n#: es/es_provinces.py:40\nmsgid \"Pontevedra\"\nmsgstr \"Pontevedra\"\n\n#: es/es_provinces.py:41\nmsgid \"Salamanca\"\nmsgstr \"Salamanca\"\n\n#: es/es_provinces.py:42\nmsgid \"Santa Cruz de Tenerife\"\nmsgstr \"Santa Cruz de Tenerife\"\n\n#: es/es_provinces.py:43 es/es_regions.py:11\nmsgid \"Cantabria\"\nmsgstr \"Cantàbria\"\n\n#: es/es_provinces.py:44\nmsgid \"Segovia\"\nmsgstr \"Segòvia\"\n\n#: es/es_provinces.py:45\nmsgid \"Seville\"\nmsgstr \"Sevilla\"\n\n#: es/es_provinces.py:46\nmsgid \"Soria\"\nmsgstr \"Sòria\"\n\n#: es/es_provinces.py:47\nmsgid \"Tarragona\"\nmsgstr \"Tarragona\"\n\n#: es/es_provinces.py:48\nmsgid \"Teruel\"\nmsgstr \"Terol\"\n\n#: es/es_provinces.py:49\nmsgid \"Toledo\"\nmsgstr \"Toledo\"\n\n#: es/es_provinces.py:50\nmsgid \"Valencia\"\nmsgstr \"València\"\n\n#: es/es_provinces.py:51\nmsgid \"Valladolid\"\nmsgstr \"Valladolid\"\n\n#: es/es_provinces.py:52\nmsgid \"Bizkaia\"\nmsgstr \"Biscaia\"\n\n#: es/es_provinces.py:53\nmsgid \"Zamora\"\nmsgstr \"Zamora\"\n\n#: es/es_provinces.py:54\nmsgid \"Zaragoza\"\nmsgstr \"Saragossa\"\n\n#: es/es_provinces.py:55\nmsgid \"Ceuta\"\nmsgstr \"Ceuta\"\n\n#: es/es_provinces.py:56\nmsgid \"Melilla\"\nmsgstr \"Melilla\"\n\n#: es/es_regions.py:5\nmsgid \"Andalusia\"\nmsgstr \"Andalusia\"\n\n#: es/es_regions.py:6\nmsgid \"Aragon\"\nmsgstr \"Aragó\"\n\n#: es/es_regions.py:7\nmsgid \"Principality of Asturias\"\nmsgstr \"Principat d'Astúries\"\n\n#: es/es_regions.py:8\nmsgid \"Balearic Islands\"\nmsgstr \"Illes Balears\"\n\n#: es/es_regions.py:9\nmsgid \"Basque Country\"\nmsgstr \"Euskadi\"\n\n#: es/es_regions.py:10\nmsgid \"Canary Islands\"\nmsgstr \"Canàries\"\n\n#: es/es_regions.py:12\nmsgid \"Castile-La Mancha\"\nmsgstr \"Castella-La Mancha\"\n\n#: es/es_regions.py:13\nmsgid \"Castile and Leon\"\nmsgstr \"Castella i Lleó\"\n\n#: es/es_regions.py:14\nmsgid \"Catalonia\"\nmsgstr \"Catalunya\"\n\n#: es/es_regions.py:15\nmsgid \"Extremadura\"\nmsgstr \"Extremadura\"\n\n#: es/es_regions.py:16\nmsgid \"Galicia\"\nmsgstr \"Galícia\"\n\n#: es/es_regions.py:19\nmsgid \"Region of Murcia\"\nmsgstr \"Regió de Múrcia\"\n\n#: es/es_regions.py:20\nmsgid \"Foral Community of Navarre\"\nmsgstr \"Comunitat Foral de Navarra\"\n\n#: es/es_regions.py:21\nmsgid \"Valencian Community\"\nmsgstr \"Comunitat Valenciana\"\n\n#: es/forms.py:26\nmsgid \"Enter a valid postal code in the range and format 01XXX - 52XXX.\"\nmsgstr \"Introduïu un codi postal en rang i format 01XXX - 52XXX.\"\n\n#: es/forms.py:46\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or \"\n\"9XXXXXXXX.\"\nmsgstr \"\"\n\"Introduïu un número de telèfon vàlid en un dels formats 6XXXXXXXX, 8XXXXXXXX \"\n\"o 9XXXXXXXX.\"\n\n#: es/forms.py:73\nmsgid \"Please enter a valid NIF, NIE, or CIF.\"\nmsgstr \"Si us plau, introduïu un NIF, NIE o CIF vàlid.\"\n\n#: es/forms.py:74\nmsgid \"Please enter a valid NIF or NIE.\"\nmsgstr \"Si us plau, introduïu un NIF o NIE vàlid.\"\n\n#: es/forms.py:75\nmsgid \"Invalid checksum for NIF.\"\nmsgstr \"Verificació del NIF invàlida.\"\n\n#: es/forms.py:76\nmsgid \"Invalid checksum for NIE.\"\nmsgstr \"Verificació del NIE invàlida.\"\n\n#: es/forms.py:77\nmsgid \"Invalid checksum for CIF.\"\nmsgstr \"Verificació del CIF invàlida.\"\n\n#: es/forms.py:149\nmsgid \"\"\n\"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.\"\nmsgstr \"\"\n\"Introduïu un número de compte bancari vàlid en el format XXXX-XXXX-XX-\"\n\"XXXXXXXXXX.\"\n\n#: es/forms.py:150\nmsgid \"Invalid checksum for bank account number.\"\nmsgstr \"Verificació del número de compte bancari invàlida.\"\n\n#: fi/forms.py:33\nmsgid \"Enter a valid Finnish social security number.\"\nmsgstr \"Introduïu un número vàlid de la seguretat social finlandesa.\"\n\n#: fr/forms.py:35\nmsgid \"Phone numbers must be in 0X XX XX XX XX format.\"\nmsgstr \"Els números de telèfon han de estar en el format 0X XX XX XX XX.\"\n\n#: gb/forms.py:25\nmsgid \"Enter a valid postcode.\"\nmsgstr \"Introduïu un codi postal vàlid.\"\n\n#: gb/gb_regions.py:11\nmsgid \"Bedfordshire\"\nmsgstr \"Bedfordshire\"\n\n#: gb/gb_regions.py:12\nmsgid \"Buckinghamshire\"\nmsgstr \"Buckinghamshire\"\n\n#: gb/gb_regions.py:14\nmsgid \"Cheshire\"\nmsgstr \"Cheshire\"\n\n#: gb/gb_regions.py:15\nmsgid \"Cornwall and Isles of Scilly\"\nmsgstr \"Cornwall and Isles of Scilly\"\n\n#: gb/gb_regions.py:16\nmsgid \"Cumbria\"\nmsgstr \"Cumbria\"\n\n#: gb/gb_regions.py:17\nmsgid \"Derbyshire\"\nmsgstr \"Derbyshire\"\n\n#: gb/gb_regions.py:18\nmsgid \"Devon\"\nmsgstr \"Devon\"\n\n#: gb/gb_regions.py:19\nmsgid \"Dorset\"\nmsgstr \"Dorset\"\n\n#: gb/gb_regions.py:20\nmsgid \"Durham\"\nmsgstr \"Durham\"\n\n#: gb/gb_regions.py:21\nmsgid \"East Sussex\"\nmsgstr \"East Sussex\"\n\n#: gb/gb_regions.py:22\nmsgid \"Essex\"\nmsgstr \"Essex\"\n\n#: gb/gb_regions.py:23\nmsgid \"Gloucestershire\"\nmsgstr \"Gloucestershire\"\n\n#: gb/gb_regions.py:24\nmsgid \"Greater London\"\nmsgstr \"Greater London\"\n\n#: gb/gb_regions.py:25\nmsgid \"Greater Manchester\"\nmsgstr \"Greater Manchester\"\n\n#: gb/gb_regions.py:26\nmsgid \"Hampshire\"\nmsgstr \"Hampshire\"\n\n#: gb/gb_regions.py:27\nmsgid \"Hertfordshire\"\nmsgstr \"Hertfordshire\"\n\n#: gb/gb_regions.py:28\nmsgid \"Kent\"\nmsgstr \"Kent\"\n\n#: gb/gb_regions.py:29\nmsgid \"Lancashire\"\nmsgstr \"Lancashire\"\n\n#: gb/gb_regions.py:30\nmsgid \"Leicestershire\"\nmsgstr \"Leicestershire\"\n\n#: gb/gb_regions.py:31\nmsgid \"Lincolnshire\"\nmsgstr \"Lincolnshire\"\n\n#: gb/gb_regions.py:32\nmsgid \"Merseyside\"\nmsgstr \"Merseyside\"\n\n#: gb/gb_regions.py:33\nmsgid \"Norfolk\"\nmsgstr \"Norfolk\"\n\n#: gb/gb_regions.py:34\nmsgid \"North Yorkshire\"\nmsgstr \"North Yorkshire\"\n\n#: gb/gb_regions.py:35\nmsgid \"Northamptonshire\"\nmsgstr \"Northamptonshire\"\n\n#: gb/gb_regions.py:36\nmsgid \"Northumberland\"\nmsgstr \"Northumberland\"\n\n#: gb/gb_regions.py:37\nmsgid \"Nottinghamshire\"\nmsgstr \"Nottinghamshire\"\n\n#: gb/gb_regions.py:38\nmsgid \"Oxfordshire\"\nmsgstr \"Oxfordshire\"\n\n#: gb/gb_regions.py:39\nmsgid \"Shropshire\"\nmsgstr \"Shropshire\"\n\n#: gb/gb_regions.py:40\nmsgid \"Somerset\"\nmsgstr \"Somerset\"\n\n#: gb/gb_regions.py:41\nmsgid \"South Yorkshire\"\nmsgstr \"South Yorkshire\"\n\n#: gb/gb_regions.py:42\nmsgid \"Staffordshire\"\nmsgstr \"Staffordshire\"\n\n#: gb/gb_regions.py:43\nmsgid \"Suffolk\"\nmsgstr \"Suffolk\"\n\n#: gb/gb_regions.py:44\nmsgid \"Surrey\"\nmsgstr \"Surrey\"\n\n#: gb/gb_regions.py:45\nmsgid \"Tyne and Wear\"\nmsgstr \"Tyne and Wear\"\n\n#: gb/gb_regions.py:46\nmsgid \"Warwickshire\"\nmsgstr \"Warwickshire\"\n\n#: gb/gb_regions.py:47\nmsgid \"West Midlands\"\nmsgstr \"West Midlands\"\n\n#: gb/gb_regions.py:48\nmsgid \"West Sussex\"\nmsgstr \"West Sussex\"\n\n#: gb/gb_regions.py:49\nmsgid \"West Yorkshire\"\nmsgstr \"West Yorkshire\"\n\n#: gb/gb_regions.py:50\nmsgid \"Wiltshire\"\nmsgstr \"Wiltshire\"\n\n#: gb/gb_regions.py:51\nmsgid \"Worcestershire\"\nmsgstr \"Worcestershire\"\n\n#: gb/gb_regions.py:55\nmsgid \"County Antrim\"\nmsgstr \"County Antrim\"\n\n#: gb/gb_regions.py:56\nmsgid \"County Armagh\"\nmsgstr \"County Armagh\"\n\n#: gb/gb_regions.py:57\nmsgid \"County Down\"\nmsgstr \"County Down\"\n\n#: gb/gb_regions.py:58\nmsgid \"County Fermanagh\"\nmsgstr \"County Fermanagh\"\n\n#: gb/gb_regions.py:59\nmsgid \"County Londonderry\"\nmsgstr \"County Londonderry\"\n\n#: gb/gb_regions.py:60\nmsgid \"County Tyrone\"\nmsgstr \"County Tyrone\"\n\n#: gb/gb_regions.py:64\nmsgid \"Clwyd\"\nmsgstr \"Clwyd\"\n\n#: gb/gb_regions.py:65\nmsgid \"Dyfed\"\nmsgstr \"Dyfed\"\n\n#: gb/gb_regions.py:66\nmsgid \"Gwent\"\nmsgstr \"Gwent\"\n\n#: gb/gb_regions.py:67\nmsgid \"Gwynedd\"\nmsgstr \"Gwynedd\"\n\n#: gb/gb_regions.py:68\nmsgid \"Mid Glamorgan\"\nmsgstr \"Mid Glamorgan\"\n\n#: gb/gb_regions.py:69\nmsgid \"Powys\"\nmsgstr \"Powys\"\n\n#: gb/gb_regions.py:70\nmsgid \"South Glamorgan\"\nmsgstr \"Glamorgan Sud\"\n\n#: gb/gb_regions.py:71\nmsgid \"West Glamorgan\"\nmsgstr \"Glamorgan Oest\"\n\n#: gb/gb_regions.py:75\nmsgid \"Borders\"\nmsgstr \"Borders\"\n\n#: gb/gb_regions.py:76\nmsgid \"Central Scotland\"\nmsgstr \"Escòcia central\"\n\n#: gb/gb_regions.py:77\nmsgid \"Dumfries and Galloway\"\nmsgstr \"Dumfries and Galloway\"\n\n#: gb/gb_regions.py:78\nmsgid \"Fife\"\nmsgstr \"Fife\"\n\n#: gb/gb_regions.py:79\nmsgid \"Grampian\"\nmsgstr \"Grampian\"\n\n#: gb/gb_regions.py:80\nmsgid \"Highland\"\nmsgstr \"Highland\"\n\n#: gb/gb_regions.py:81\nmsgid \"Lothian\"\nmsgstr \"Lothian\"\n\n#: gb/gb_regions.py:82\nmsgid \"Orkney Islands\"\nmsgstr \"Illes Orkney\"\n\n#: gb/gb_regions.py:83\nmsgid \"Shetland Islands\"\nmsgstr \"Illes Shetland\"\n\n#: gb/gb_regions.py:84\nmsgid \"Strathclyde\"\nmsgstr \"Strathclyde\"\n\n#: gb/gb_regions.py:85\nmsgid \"Tayside\"\nmsgstr \"Tayside\"\n\n#: gb/gb_regions.py:86\nmsgid \"Western Isles\"\nmsgstr \"Illes Occidentals\"\n\n#: gb/gb_regions.py:90\nmsgid \"England\"\nmsgstr \"Anglaterra\"\n\n#: gb/gb_regions.py:91\nmsgid \"Northern Ireland\"\nmsgstr \"Irlanda del Nord\"\n\n#: gb/gb_regions.py:92\nmsgid \"Scotland\"\nmsgstr \"Escòcia\"\n\n#: gb/gb_regions.py:93\nmsgid \"Wales\"\nmsgstr \"Gal·les\"\n\n#: hk/forms.py:37\n#, python-format\nmsgid \"Phone number should not start with one of the followings: %s.\"\nmsgstr \"Els nombres de telèfon no poden començar per: %s.\"\n\n#: hk/forms.py:40\n#, python-format\nmsgid \"Phone number must be in one of the following formats: %s.\"\nmsgstr \"El nombres de telèfon han de tenir un dels següents formats: %s.\"\n\n#: hk/forms.py:42\n#, python-format\nmsgid \"Phone number should start with one of the followings: %s.\"\nmsgstr \"Els nombres de telèfon han de començar per : %s.\"\n\n#: hr/forms.py:76\nmsgid \"Enter a valid 13 digit JMBG\"\nmsgstr \"Introdueixi un codi JMBG de 13 dígits\"\n\n#: hr/forms.py:77\nmsgid \"Error in date segment\"\nmsgstr \"Error en el segment data\"\n\n#: hr/forms.py:123\nmsgid \"Enter a valid 11 digit OIB\"\nmsgstr \"Introdueixi un codi OIB d'11 dígits\"\n\n#: hr/forms.py:152 id/forms.py:112\nmsgid \"Enter a valid vehicle license plate number\"\nmsgstr \"Introduïu un número de matrícula vàlid.\"\n\n#: hr/forms.py:153\nmsgid \"Enter a valid location code\"\nmsgstr \"Escriu un codi de localització vàlid\"\n\n#: hr/forms.py:154\nmsgid \"Number part cannot be zero\"\nmsgstr \"La part d'un nombre no pot ser 0\"\n\n#: hr/forms.py:190\nmsgid \"Enter a valid 5 digit postal code\"\nmsgstr \"Escriu un codi postal de 5 xifres vàlid\"\n\n#: hr/forms.py:218 id/forms.py:72 nl/forms.py:56\nmsgid \"Enter a valid phone number\"\nmsgstr \"Introduïu un número de telèfon vàlid.\"\n\n#: hr/forms.py:219\nmsgid \"Enter a valid area or mobile network code\"\nmsgstr \"Escriu un codi d'àrea o prefix mòbil correcte\"\n\n#: hr/forms.py:220\nmsgid \"The phone nubmer is too long\"\nmsgstr \"El número de telèfon és massa llarg\"\n\n#: hr/forms.py:258\nmsgid \"Enter a valid 19 digit JMBAG starting with 601983\"\nmsgstr \"Introdueix un codi JMBAG vàlid de 19 dígits que comenci per 601983\"\n\n#: hr/forms.py:259\nmsgid \"Card issue number cannot be zero\"\nmsgstr \"El nombre d'expedició de la tarja no pot ser zero\"\n\n#: hr/hr_choices.py:14\nmsgid \"Grad Zagreb\"\nmsgstr \"Grad Zagreb\"\n\n#: hr/hr_choices.py:15\nmsgid \"Bjelovarsko-bilogorska županija\"\nmsgstr \"Bjelovarsko-bilogorska županija\"\n\n#: hr/hr_choices.py:16\nmsgid \"Brodsko-posavska županija\"\nmsgstr \"Brodsko-posavska županija\"\n\n#: hr/hr_choices.py:17\nmsgid \"Dubrovačko-neretvanska županija\"\nmsgstr \"Dubrovačko-neretvanska županija\"\n\n#: hr/hr_choices.py:18\nmsgid \"Istarska županija\"\nmsgstr \"Istarska županija\"\n\n#: hr/hr_choices.py:19\nmsgid \"Karlovačka županija\"\nmsgstr \"Karlovačka županija\"\n\n#: hr/hr_choices.py:20\nmsgid \"Koprivničko-križevačka županija\"\nmsgstr \"Koprivničko-križevačka županija\"\n\n#: hr/hr_choices.py:21\nmsgid \"Krapinsko-zagorska županija\"\nmsgstr \"Koprivnica-Krizevci\"\n\n#: hr/hr_choices.py:22\nmsgid \"Ličko-senjska županija\"\nmsgstr \"Ličko-senjska županija\"\n\n#: hr/hr_choices.py:23\nmsgid \"Međimurska županija\"\nmsgstr \"Međimurska županija\"\n\n#: hr/hr_choices.py:24\nmsgid \"Osječko-baranjska županija\"\nmsgstr \"Osječko-baranjska županija\"\n\n#: hr/hr_choices.py:25\nmsgid \"Požeško-slavonska županija\"\nmsgstr \"Požeško-slavonska županija\"\n\n#: hr/hr_choices.py:26\nmsgid \"Primorsko-goranska županija\"\nmsgstr \"Primorsko-goranska županija\"\n\n#: hr/hr_choices.py:27\nmsgid \"Sisačko-moslavačka županija\"\nmsgstr \"Sisačko-moslavačka županija\"\n\n#: hr/hr_choices.py:28\nmsgid \"Splitsko-dalmatinska županija\"\nmsgstr \"Splitsko-dalmatinska županija\"\n\n#: hr/hr_choices.py:29\nmsgid \"Šibensko-kninska županija\"\nmsgstr \"Šibensko-kninska županija\"\n\n#: hr/hr_choices.py:30\nmsgid \"Varaždinska županija\"\nmsgstr \"Varaždinska županija\"\n\n#: hr/hr_choices.py:31\nmsgid \"Virovitičko-podravska županija\"\nmsgstr \"Virovitičko-podravska županija\"\n\n#: hr/hr_choices.py:32\nmsgid \"Vukovarsko-srijemska županija\"\nmsgstr \"Vukovarsko-srijemska županija\"\n\n#: hr/hr_choices.py:33\nmsgid \"Zadarska županija\"\nmsgstr \"Zadarska županija\"\n\n#: hr/hr_choices.py:34\nmsgid \"Zagrebačka županija\"\nmsgstr \"Zagrebačka županija\"\n\n#: id/forms.py:31\nmsgid \"Enter a valid post code\"\nmsgstr \"Introduïu un codi postal vàlid.\"\n\n#: id/forms.py:176\nmsgid \"Enter a valid NIK/KTP number\"\nmsgstr \"Introduïu un número NIK/KTP vàlid.\"\n\n#: id/id_choices.py:15\nmsgid \"Aceh\"\nmsgstr \"Aceh\"\n\n#: id/id_choices.py:16 id/id_choices.py:79\nmsgid \"Bali\"\nmsgstr \"Bali\"\n\n#: id/id_choices.py:17 id/id_choices.py:51\nmsgid \"Banten\"\nmsgstr \"Banten\"\n\n#: id/id_choices.py:18 id/id_choices.py:60\nmsgid \"Bengkulu\"\nmsgstr \"Bengkulu\"\n\n#: id/id_choices.py:19 id/id_choices.py:53\nmsgid \"Yogyakarta\"\nmsgstr \"Yogyakarta\"\n\n#: id/id_choices.py:20 id/id_choices.py:57\nmsgid \"Jakarta\"\nmsgstr \"Jakarta\"\n\n#: id/id_choices.py:21 id/id_choices.py:81\nmsgid \"Gorontalo\"\nmsgstr \"Gorontalo\"\n\n#: id/id_choices.py:22 id/id_choices.py:63\nmsgid \"Jambi\"\nmsgstr \"Jambi\"\n\n#: id/id_choices.py:23\nmsgid \"Jawa Barat\"\nmsgstr \"Jawa Barat\"\n\n#: id/id_choices.py:24\nmsgid \"Jawa Tengah\"\nmsgstr \"Jawa Tengah\"\n\n#: id/id_choices.py:25\nmsgid \"Jawa Timur\"\nmsgstr \"Jawa Timur\"\n\n#: id/id_choices.py:26 id/id_choices.py:94\nmsgid \"Kalimantan Barat\"\nmsgstr \"Kalimantan Barat\"\n\n#: id/id_choices.py:27 id/id_choices.py:72\nmsgid \"Kalimantan Selatan\"\nmsgstr \"Kalimantan Selatan\"\n\n#: id/id_choices.py:28 id/id_choices.py:95\nmsgid \"Kalimantan Tengah\"\nmsgstr \"Kalimantan Tengah\"\n\n#: id/id_choices.py:29 id/id_choices.py:96\nmsgid \"Kalimantan Timur\"\nmsgstr \"Kalimantan Timur\"\n\n#: id/id_choices.py:30\nmsgid \"Kepulauan Bangka-Belitung\"\nmsgstr \"Kepulauan Bangka-Belitung\"\n\n#: id/id_choices.py:31 id/id_choices.py:68\nmsgid \"Kepulauan Riau\"\nmsgstr \"Kepulauan Riau\"\n\n#: id/id_choices.py:32 id/id_choices.py:61\nmsgid \"Lampung\"\nmsgstr \"Lampung\"\n\n#: id/id_choices.py:33 id/id_choices.py:76\nmsgid \"Maluku\"\nmsgstr \"Maluku\"\n\n#: id/id_choices.py:34 id/id_choices.py:77\nmsgid \"Maluku Utara\"\nmsgstr \"Maluku Utara\"\n\n#: id/id_choices.py:35\nmsgid \"Nusa Tenggara Barat\"\nmsgstr \"Nusa Tenggara Barat\"\n\n#: id/id_choices.py:36\nmsgid \"Nusa Tenggara Timur\"\nmsgstr \"Nusa Tenggara Timur\"\n\n#: id/id_choices.py:37\nmsgid \"Papua\"\nmsgstr \"Papua\"\n\n#: id/id_choices.py:38\nmsgid \"Papua Barat\"\nmsgstr \"Papua Barat\"\n\n#: id/id_choices.py:39 id/id_choices.py:66\nmsgid \"Riau\"\nmsgstr \"Riau\"\n\n#: id/id_choices.py:40 id/id_choices.py:74\nmsgid \"Sulawesi Barat\"\nmsgstr \"Sulawesi Barat\"\n\n#: id/id_choices.py:41 id/id_choices.py:75\nmsgid \"Sulawesi Selatan\"\nmsgstr \"Sulawesi Selatan\"\n\n#: id/id_choices.py:42 id/id_choices.py:82\nmsgid \"Sulawesi Tengah\"\nmsgstr \"Sulawesi Tengah\"\n\n#: id/id_choices.py:43 id/id_choices.py:85\nmsgid \"Sulawesi Tenggara\"\nmsgstr \"Sulawesi Tenggara\"\n\n#: id/id_choices.py:44\nmsgid \"Sulawesi Utara\"\nmsgstr \"Sulawesi Utara\"\n\n#: id/id_choices.py:45 id/id_choices.py:58\nmsgid \"Sumatera Barat\"\nmsgstr \"Sumatera Barat\"\n\n#: id/id_choices.py:46 id/id_choices.py:62\nmsgid \"Sumatera Selatan\"\nmsgstr \"Sumatera Selatan\"\n\n#: id/id_choices.py:47 id/id_choices.py:64\nmsgid \"Sumatera Utara\"\nmsgstr \"Sumatera Utara\"\n\n#: id/id_choices.py:52\nmsgid \"Magelang\"\nmsgstr \"Magelang\"\n\n#: id/id_choices.py:54\nmsgid \"Surakarta - Solo\"\nmsgstr \"Surakarta - Solo\"\n\n#: id/id_choices.py:55\nmsgid \"Madiun\"\nmsgstr \"Madiun\"\n\n#: id/id_choices.py:56\nmsgid \"Kediri\"\nmsgstr \"Kediri\"\n\n#: id/id_choices.py:59\nmsgid \"Tapanuli\"\nmsgstr \"Tapanuli\"\n\n#: id/id_choices.py:65\nmsgid \"Nanggroe Aceh Darussalam\"\nmsgstr \"Nanggroe Aceh Darussalam\"\n\n#: id/id_choices.py:67\nmsgid \"Kepulauan Bangka Belitung\"\nmsgstr \"Kepulauan Bangka Belitung\"\n\n#: id/id_choices.py:69\nmsgid \"Corps Consulate\"\nmsgstr \"Corps Consulate\"\n\n#: id/id_choices.py:70\nmsgid \"Corps Diplomatic\"\nmsgstr \"Corps Diplomatic\"\n\n#: id/id_choices.py:71\nmsgid \"Bandung\"\nmsgstr \"Bandung\"\n\n#: id/id_choices.py:73\nmsgid \"Sulawesi Utara Daratan\"\nmsgstr \"Sulawesi Utara Daratan\"\n\n#: id/id_choices.py:78\nmsgid \"NTT - Timor\"\nmsgstr \"NTT - Timor\"\n\n#: id/id_choices.py:80\nmsgid \"Sulawesi Utara Kepulauan\"\nmsgstr \"Sulawesi Utara Kepulauan\"\n\n#: id/id_choices.py:83\nmsgid \"NTB - Lombok\"\nmsgstr \"NTB - Lombok\"\n\n#: id/id_choices.py:84\nmsgid \"Papua dan Papua Barat\"\nmsgstr \"Papua dan Papua Barat\"\n\n#: id/id_choices.py:86\nmsgid \"Cirebon\"\nmsgstr \"Cirebon\"\n\n#: id/id_choices.py:87\nmsgid \"NTB - Sumbawa\"\nmsgstr \"NTB - Sumbawa\"\n\n#: id/id_choices.py:88\nmsgid \"NTT - Flores\"\nmsgstr \"NTT - Flores\"\n\n#: id/id_choices.py:89\nmsgid \"NTT - Sumba\"\nmsgstr \"NTT - Sumba\"\n\n#: id/id_choices.py:90\nmsgid \"Bogor\"\nmsgstr \"Bogor\"\n\n#: id/id_choices.py:91\nmsgid \"Pekalongan\"\nmsgstr \"Pekalongan\"\n\n#: id/id_choices.py:92\nmsgid \"Semarang\"\nmsgstr \"Semarang\"\n\n#: id/id_choices.py:93\nmsgid \"Pati\"\nmsgstr \"Pati\"\n\n#: id/id_choices.py:97\nmsgid \"Surabaya\"\nmsgstr \"Surabaya\"\n\n#: id/id_choices.py:98\nmsgid \"Madura\"\nmsgstr \"Madura\"\n\n#: id/id_choices.py:99\nmsgid \"Malang\"\nmsgstr \"Malang\"\n\n#: id/id_choices.py:100\nmsgid \"Jember\"\nmsgstr \"Jember\"\n\n#: id/id_choices.py:101\nmsgid \"Banyumas\"\nmsgstr \"Banyumas\"\n\n#: id/id_choices.py:102\nmsgid \"Federal Government\"\nmsgstr \"Govern Federal\"\n\n#: id/id_choices.py:103\nmsgid \"Bojonegoro\"\nmsgstr \"Bojonegoro\"\n\n#: id/id_choices.py:104\nmsgid \"Purwakarta\"\nmsgstr \"Purwakarta\"\n\n#: id/id_choices.py:105\nmsgid \"Sidoarjo\"\nmsgstr \"Sidoarjo\"\n\n#: id/id_choices.py:106\nmsgid \"Garut\"\nmsgstr \"Garut\"\n\n#: ie/ie_counties.py:8\nmsgid \"Antrim\"\nmsgstr \"Antrim\"\n\n#: ie/ie_counties.py:9\nmsgid \"Armagh\"\nmsgstr \"Armagh\"\n\n#: ie/ie_counties.py:10\nmsgid \"Carlow\"\nmsgstr \"Carlow\"\n\n#: ie/ie_counties.py:11\nmsgid \"Cavan\"\nmsgstr \"Cavan\"\n\n#: ie/ie_counties.py:12\nmsgid \"Clare\"\nmsgstr \"Clare\"\n\n#: ie/ie_counties.py:13\nmsgid \"Cork\"\nmsgstr \"Cork\"\n\n#: ie/ie_counties.py:14\nmsgid \"Derry\"\nmsgstr \"Derry\"\n\n#: ie/ie_counties.py:15\nmsgid \"Donegal\"\nmsgstr \"Donegal\"\n\n#: ie/ie_counties.py:16\nmsgid \"Down\"\nmsgstr \"Down\"\n\n#: ie/ie_counties.py:17\nmsgid \"Dublin\"\nmsgstr \"Dublin\"\n\n#: ie/ie_counties.py:18\nmsgid \"Fermanagh\"\nmsgstr \"Fermanagh\"\n\n#: ie/ie_counties.py:19\nmsgid \"Galway\"\nmsgstr \"Galway\"\n\n#: ie/ie_counties.py:20\nmsgid \"Kerry\"\nmsgstr \"Kerry\"\n\n#: ie/ie_counties.py:21\nmsgid \"Kildare\"\nmsgstr \"Kildare\"\n\n#: ie/ie_counties.py:22\nmsgid \"Kilkenny\"\nmsgstr \"Kilkenny\"\n\n#: ie/ie_counties.py:23\nmsgid \"Laois\"\nmsgstr \"Laois\"\n\n#: ie/ie_counties.py:24\nmsgid \"Leitrim\"\nmsgstr \"Leitrim\"\n\n#: ie/ie_counties.py:25\nmsgid \"Limerick\"\nmsgstr \"Limerick\"\n\n#: ie/ie_counties.py:26\nmsgid \"Longford\"\nmsgstr \"Longford\"\n\n#: ie/ie_counties.py:27\nmsgid \"Louth\"\nmsgstr \"Louth\"\n\n#: ie/ie_counties.py:28\nmsgid \"Mayo\"\nmsgstr \"Mayo\"\n\n#: ie/ie_counties.py:29\nmsgid \"Meath\"\nmsgstr \"Meath\"\n\n#: ie/ie_counties.py:30\nmsgid \"Monaghan\"\nmsgstr \"Monaghan\"\n\n#: ie/ie_counties.py:31\nmsgid \"Offaly\"\nmsgstr \"Offaly\"\n\n#: ie/ie_counties.py:32\nmsgid \"Roscommon\"\nmsgstr \"Roscommon\"\n\n#: ie/ie_counties.py:33\nmsgid \"Sligo\"\nmsgstr \"Sligo\"\n\n#: ie/ie_counties.py:34\nmsgid \"Tipperary\"\nmsgstr \"Tipperary\"\n\n#: ie/ie_counties.py:35\nmsgid \"Tyrone\"\nmsgstr \"Tyrone\"\n\n#: ie/ie_counties.py:36\nmsgid \"Waterford\"\nmsgstr \"Waterford\"\n\n#: ie/ie_counties.py:37\nmsgid \"Westmeath\"\nmsgstr \"Westmeath\"\n\n#: ie/ie_counties.py:38\nmsgid \"Wexford\"\nmsgstr \"Wexford\"\n\n#: ie/ie_counties.py:39\nmsgid \"Wicklow\"\nmsgstr \"Wicklow\"\n\n#: il/forms.py:32\nmsgid \"Enter a postal code in the format XXXXX\"\nmsgstr \"Introduïu un codi postal amb el format XXXXX\"\n\n#: il/forms.py:51\nmsgid \"Enter a valid ID number.\"\nmsgstr \"Introduïu un número de ID vàlid.\"\n\n#: in_/forms.py:41\nmsgid \"Enter a zip code in the format XXXXXX or XXX XXX.\"\nmsgstr \"Escriu un codi postal en format XXXXXX o XXX XXX\"\n\n#: in_/forms.py:64\nmsgid \"Enter an Indian state or territory.\"\nmsgstr \"Introdueix un estat o territori de l'India\"\n\n#: in_/forms.py:103\nmsgid \"Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.\"\nmsgstr \"Els números de telèfon han de tenir el format 02X-8X, 03X-7X o 04X-6X.\"\n\n#: is_/forms.py:22\nmsgid \"\"\n\"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.\"\nmsgstr \"\"\n\"Introduïu un número vàlid d'identificació d'Islàndia. El format és XXXXXX-\"\n\"XXXX.\"\n\n#: is_/forms.py:23\nmsgid \"The Icelandic identification number is not valid.\"\nmsgstr \"El número d'identificació d'Islàndia no és vàlid.\"\n\n#: it/forms.py:21\nmsgid \"Enter a valid zip code.\"\nmsgstr \"Introduïu un codi zip vàlid.\"\n\n#: it/forms.py:48\nmsgid \"Enter a valid Social Security number.\"\nmsgstr \"Introduïu un número valid de la Seguretat Social.\"\n\n#: it/forms.py:73\nmsgid \"Enter a valid VAT number.\"\nmsgstr \"Introduïu un número d'IVA (VAT) vàlid.\"\n\n#: jp/forms.py:19\nmsgid \"Enter a postal code in the format XXXXXXX or XXX-XXXX.\"\nmsgstr \"Introduïu un codi postal en el format XXXXXXX o XX-XXXX.\"\n\n#: jp/jp_prefectures.py:4\nmsgid \"Hokkaido\"\nmsgstr \"Hokkaido\"\n\n#: jp/jp_prefectures.py:5\nmsgid \"Aomori\"\nmsgstr \"Aomori\"\n\n#: jp/jp_prefectures.py:6\nmsgid \"Iwate\"\nmsgstr \"Iwate\"\n\n#: jp/jp_prefectures.py:7\nmsgid \"Miyagi\"\nmsgstr \"Miyagi\"\n\n#: jp/jp_prefectures.py:8\nmsgid \"Akita\"\nmsgstr \"Akita\"\n\n#: jp/jp_prefectures.py:9\nmsgid \"Yamagata\"\nmsgstr \"Yamagata\"\n\n#: jp/jp_prefectures.py:10\nmsgid \"Fukushima\"\nmsgstr \"Fukushima\"\n\n#: jp/jp_prefectures.py:11\nmsgid \"Ibaraki\"\nmsgstr \"Ibaraki\"\n\n#: jp/jp_prefectures.py:12\nmsgid \"Tochigi\"\nmsgstr \"Tochigi\"\n\n#: jp/jp_prefectures.py:13\nmsgid \"Gunma\"\nmsgstr \"Gunma\"\n\n#: jp/jp_prefectures.py:14\nmsgid \"Saitama\"\nmsgstr \"Saitama\"\n\n#: jp/jp_prefectures.py:15\nmsgid \"Chiba\"\nmsgstr \"Chiba\"\n\n#: jp/jp_prefectures.py:16\nmsgid \"Tokyo\"\nmsgstr \"Tokyo\"\n\n#: jp/jp_prefectures.py:17\nmsgid \"Kanagawa\"\nmsgstr \"Kanagawa\"\n\n#: jp/jp_prefectures.py:18\nmsgid \"Yamanashi\"\nmsgstr \"Yamanashi\"\n\n#: jp/jp_prefectures.py:19\nmsgid \"Nagano\"\nmsgstr \"Nagano\"\n\n#: jp/jp_prefectures.py:20\nmsgid \"Niigata\"\nmsgstr \"Niigata\"\n\n#: jp/jp_prefectures.py:21\nmsgid \"Toyama\"\nmsgstr \"Toyama\"\n\n#: jp/jp_prefectures.py:22\nmsgid \"Ishikawa\"\nmsgstr \"Ishikawa\"\n\n#: jp/jp_prefectures.py:23\nmsgid \"Fukui\"\nmsgstr \"Fukui\"\n\n#: jp/jp_prefectures.py:24\nmsgid \"Gifu\"\nmsgstr \"Gifu\"\n\n#: jp/jp_prefectures.py:25\nmsgid \"Shizuoka\"\nmsgstr \"Shizuoka\"\n\n#: jp/jp_prefectures.py:26\nmsgid \"Aichi\"\nmsgstr \"Aichi\"\n\n#: jp/jp_prefectures.py:27\nmsgid \"Mie\"\nmsgstr \"Mie\"\n\n#: jp/jp_prefectures.py:28\nmsgid \"Shiga\"\nmsgstr \"Shiga\"\n\n#: jp/jp_prefectures.py:29\nmsgid \"Kyoto\"\nmsgstr \"Kyoto\"\n\n#: jp/jp_prefectures.py:30\nmsgid \"Osaka\"\nmsgstr \"Osaka\"\n\n#: jp/jp_prefectures.py:31\nmsgid \"Hyogo\"\nmsgstr \"Hyogo\"\n\n#: jp/jp_prefectures.py:32\nmsgid \"Nara\"\nmsgstr \"Nara\"\n\n#: jp/jp_prefectures.py:33\nmsgid \"Wakayama\"\nmsgstr \"Wakayama\"\n\n#: jp/jp_prefectures.py:34\nmsgid \"Tottori\"\nmsgstr \"Tottori\"\n\n#: jp/jp_prefectures.py:35\nmsgid \"Shimane\"\nmsgstr \"Shimane\"\n\n#: jp/jp_prefectures.py:36\nmsgid \"Okayama\"\nmsgstr \"Okayama\"\n\n#: jp/jp_prefectures.py:37\nmsgid \"Hiroshima\"\nmsgstr \"Hiroshima\"\n\n#: jp/jp_prefectures.py:38\nmsgid \"Yamaguchi\"\nmsgstr \"Yamaguchi\"\n\n#: jp/jp_prefectures.py:39\nmsgid \"Tokushima\"\nmsgstr \"Tokushima\"\n\n#: jp/jp_prefectures.py:40\nmsgid \"Kagawa\"\nmsgstr \"Kagawa\"\n\n#: jp/jp_prefectures.py:41\nmsgid \"Ehime\"\nmsgstr \"Ehime\"\n\n#: jp/jp_prefectures.py:42\nmsgid \"Kochi\"\nmsgstr \"Kochi\"\n\n#: jp/jp_prefectures.py:43\nmsgid \"Fukuoka\"\nmsgstr \"Fukuoka\"\n\n#: jp/jp_prefectures.py:44\nmsgid \"Saga\"\nmsgstr \"Saga\"\n\n#: jp/jp_prefectures.py:45\nmsgid \"Nagasaki\"\nmsgstr \"Nagasaki\"\n\n#: jp/jp_prefectures.py:46\nmsgid \"Kumamoto\"\nmsgstr \"Kumamoto\"\n\n#: jp/jp_prefectures.py:47\nmsgid \"Oita\"\nmsgstr \"Oita\"\n\n#: jp/jp_prefectures.py:48\nmsgid \"Miyazaki\"\nmsgstr \"Miyazaki\"\n\n#: jp/jp_prefectures.py:49\nmsgid \"Kagoshima\"\nmsgstr \"Kagoshima\"\n\n#: jp/jp_prefectures.py:50\nmsgid \"Okinawa\"\nmsgstr \"Okinawa\"\n\n#: kw/forms.py:27\nmsgid \"Enter a valid Kuwaiti Civil ID number\"\nmsgstr \"Introduïu un número d'Identitat Kuwaitià vàlid\"\n\n#: mk/forms.py:18\nmsgid \"\"\n\"Identity card numbers must contain either 4 to 7 digits or an uppercase \"\n\"letter and 7 digits.\"\nmsgstr \"\"\n\"Les targes d'identitat han de tenir 4 o 7 dígits o una lletra majúscula i 7 \"\n\"dígits.\"\n\n#: mk/forms.py:57 si/forms.py:24\nmsgid \"This field should contain exactly 13 digits.\"\nmsgstr \"Aquest camp ha de tenir exactament 13 dígits.\"\n\n#: mk/forms.py:58\nmsgid \"The first 7 digits of the UMCN must represent a valid past date.\"\nmsgstr \"\"\n\"Els 7 primers dígits de l'UMCM han de representar una data passada vàlida\"\n\n#: mk/forms.py:59\nmsgid \"The UMCN is not valid.\"\nmsgstr \"El UMCN no es vàlid\"\n\n#: mk/mk_choices.py:10\nmsgid \"Aerodrom\"\nmsgstr \"Aerodrom\"\n\n#: mk/mk_choices.py:11\nmsgid \"Aračinovo\"\nmsgstr \"Aračinovo\"\n\n#: mk/mk_choices.py:12\nmsgid \"Berovo\"\nmsgstr \"Berovo\"\n\n#: mk/mk_choices.py:13\nmsgid \"Bitola\"\nmsgstr \"Bitola\"\n\n#: mk/mk_choices.py:14\nmsgid \"Bogdanci\"\nmsgstr \"Bogdanci\"\n\n#: mk/mk_choices.py:15\nmsgid \"Bogovinje\"\nmsgstr \"Bogovinje\"\n\n#: mk/mk_choices.py:16\nmsgid \"Bosilovo\"\nmsgstr \"Bosilovo\"\n\n#: mk/mk_choices.py:17\nmsgid \"Brvenica\"\nmsgstr \"Brvenica\"\n\n#: mk/mk_choices.py:18\nmsgid \"Butel\"\nmsgstr \"Butel\"\n\n#: mk/mk_choices.py:19\nmsgid \"Valandovo\"\nmsgstr \"Valandovo\"\n\n#: mk/mk_choices.py:20\nmsgid \"Vasilevo\"\nmsgstr \"Vasileva\"\n\n#: mk/mk_choices.py:21\nmsgid \"Vevčani\"\nmsgstr \"Vevcani\"\n\n#: mk/mk_choices.py:22\nmsgid \"Veles\"\nmsgstr \"Veles\"\n\n#: mk/mk_choices.py:23\nmsgid \"Vinica\"\nmsgstr \"Vinica\"\n\n#: mk/mk_choices.py:24\nmsgid \"Vraneštica\"\nmsgstr \"Vraneštica\"\n\n#: mk/mk_choices.py:25\nmsgid \"Vrapčište\"\nmsgstr \"Vrapčište\"\n\n#: mk/mk_choices.py:26\nmsgid \"Gazi Baba\"\nmsgstr \"Gazi Baba\"\n\n#: mk/mk_choices.py:27\nmsgid \"Gevgelija\"\nmsgstr \"Gevgelija\"\n\n#: mk/mk_choices.py:28\nmsgid \"Gostivar\"\nmsgstr \"Gostivar\"\n\n#: mk/mk_choices.py:29\nmsgid \"Gradsko\"\nmsgstr \"Gradsko\"\n\n#: mk/mk_choices.py:30\nmsgid \"Debar\"\nmsgstr \"Debar\"\n\n#: mk/mk_choices.py:31\nmsgid \"Debarca\"\nmsgstr \"Debarca\"\n\n#: mk/mk_choices.py:32\nmsgid \"Delčevo\"\nmsgstr \"Delčevo\"\n\n#: mk/mk_choices.py:33\nmsgid \"Demir Kapija\"\nmsgstr \"Demir Kapija\"\n\n#: mk/mk_choices.py:34\nmsgid \"Demir Hisar\"\nmsgstr \"Demir Hisar\"\n\n#: mk/mk_choices.py:35\nmsgid \"Dolneni\"\nmsgstr \"Dolneni\"\n\n#: mk/mk_choices.py:36\nmsgid \"Drugovo\"\nmsgstr \"Drugovo\"\n\n#: mk/mk_choices.py:37\nmsgid \"Gjorče Petrov\"\nmsgstr \"Gjorče Petrov\"\n\n#: mk/mk_choices.py:38\nmsgid \"Želino\"\nmsgstr \"Želino\"\n\n#: mk/mk_choices.py:39\nmsgid \"Zajas\"\nmsgstr \"Zajas\"\n\n#: mk/mk_choices.py:40\nmsgid \"Zelenikovo\"\nmsgstr \"Zelenikovo\"\n\n#: mk/mk_choices.py:41\nmsgid \"Zrnovci\"\nmsgstr \"Zrnovci\"\n\n#: mk/mk_choices.py:42\nmsgid \"Ilinden\"\nmsgstr \"Ilinden\"\n\n#: mk/mk_choices.py:43\nmsgid \"Jegunovce\"\nmsgstr \"Jegunovce\"\n\n#: mk/mk_choices.py:44\nmsgid \"Kavadarci\"\nmsgstr \"Kavadarci\"\n\n#: mk/mk_choices.py:45\nmsgid \"Karbinci\"\nmsgstr \"Karbinci\"\n\n#: mk/mk_choices.py:46\nmsgid \"Karpoš\"\nmsgstr \"Karpoš\"\n\n#: mk/mk_choices.py:47\nmsgid \"Kisela Voda\"\nmsgstr \"Kisela Voda\"\n\n#: mk/mk_choices.py:48\nmsgid \"Kičevo\"\nmsgstr \"Kičevo\"\n\n#: mk/mk_choices.py:49\nmsgid \"Konče\"\nmsgstr \"Konče\"\n\n#: mk/mk_choices.py:50\nmsgid \"Koćani\"\nmsgstr \"Koćani\"\n\n#: mk/mk_choices.py:51\nmsgid \"Kratovo\"\nmsgstr \"Kratovo\"\n\n#: mk/mk_choices.py:52\nmsgid \"Kriva Palanka\"\nmsgstr \"Kriva Palanka\"\n\n#: mk/mk_choices.py:53\nmsgid \"Krivogaštani\"\nmsgstr \"Krivogaštani\"\n\n#: mk/mk_choices.py:54\nmsgid \"Kruševo\"\nmsgstr \"Kruševo\"\n\n#: mk/mk_choices.py:55\nmsgid \"Kumanovo\"\nmsgstr \"Kumanovo\"\n\n#: mk/mk_choices.py:56\nmsgid \"Lipkovo\"\nmsgstr \"Lipkovo\"\n\n#: mk/mk_choices.py:57\nmsgid \"Lozovo\"\nmsgstr \"Lozovo\"\n\n#: mk/mk_choices.py:58\nmsgid \"Mavrovo i Rostuša\"\nmsgstr \"Mavrovo i Rostuša\"\n\n#: mk/mk_choices.py:59\nmsgid \"Makedonska Kamenica\"\nmsgstr \"Makedonska Kamenica\"\n\n#: mk/mk_choices.py:60\nmsgid \"Makedonski Brod\"\nmsgstr \"Makedonski Brod\"\n\n#: mk/mk_choices.py:61\nmsgid \"Mogila\"\nmsgstr \"Mogila\"\n\n#: mk/mk_choices.py:62\nmsgid \"Negotino\"\nmsgstr \"Negotino\"\n\n#: mk/mk_choices.py:63\nmsgid \"Novaci\"\nmsgstr \"Novaci\"\n\n#: mk/mk_choices.py:64\nmsgid \"Novo Selo\"\nmsgstr \"Novo Selo\"\n\n#: mk/mk_choices.py:65\nmsgid \"Oslomej\"\nmsgstr \"Oslomej\"\n\n#: mk/mk_choices.py:66\nmsgid \"Ohrid\"\nmsgstr \"Ohrid\"\n\n#: mk/mk_choices.py:67\nmsgid \"Petrovec\"\nmsgstr \"Petrovec\"\n\n#: mk/mk_choices.py:68\nmsgid \"Pehčevo\"\nmsgstr \"Pehčevo\"\n\n#: mk/mk_choices.py:69\nmsgid \"Plasnica\"\nmsgstr \"Plasnica\"\n\n#: mk/mk_choices.py:70\nmsgid \"Prilep\"\nmsgstr \"Prilep\"\n\n#: mk/mk_choices.py:71\nmsgid \"Probištip\"\nmsgstr \"Probištip\"\n\n#: mk/mk_choices.py:72\nmsgid \"Radoviš\"\nmsgstr \"Radoviš\"\n\n#: mk/mk_choices.py:73\nmsgid \"Rankovce\"\nmsgstr \"Rankovce\"\n\n#: mk/mk_choices.py:74\nmsgid \"Resen\"\nmsgstr \"Resen\"\n\n#: mk/mk_choices.py:75\nmsgid \"Rosoman\"\nmsgstr \"Vraneštica\"\n\n#: mk/mk_choices.py:76\nmsgid \"Saraj\"\nmsgstr \"Saraj\"\n\n#: mk/mk_choices.py:77\nmsgid \"Sveti Nikole\"\nmsgstr \"Sveti Nikole\"\n\n#: mk/mk_choices.py:78\nmsgid \"Sopište\"\nmsgstr \"Sopište\"\n\n#: mk/mk_choices.py:79\nmsgid \"Star Dojran\"\nmsgstr \"Star Dojran\"\n\n#: mk/mk_choices.py:80\nmsgid \"Staro Nagoričane\"\nmsgstr \"Staro Nagoričane\"\n\n#: mk/mk_choices.py:81\nmsgid \"Struga\"\nmsgstr \"Struga\"\n\n#: mk/mk_choices.py:82\nmsgid \"Strumica\"\nmsgstr \"Strumica\"\n\n#: mk/mk_choices.py:83\nmsgid \"Studeničani\"\nmsgstr \"Studeničani\"\n\n#: mk/mk_choices.py:84\nmsgid \"Tearce\"\nmsgstr \"Tearce\"\n\n#: mk/mk_choices.py:85\nmsgid \"Tetovo\"\nmsgstr \"Tetovo\"\n\n#: mk/mk_choices.py:86\nmsgid \"Centar\"\nmsgstr \"Centar\"\n\n#: mk/mk_choices.py:87\nmsgid \"Centar-Župa\"\nmsgstr \"Centar-Župa\"\n\n#: mk/mk_choices.py:88\nmsgid \"Čair\"\nmsgstr \"Cair\"\n\n#: mk/mk_choices.py:89\nmsgid \"Čaška\"\nmsgstr \"Čaška\"\n\n#: mk/mk_choices.py:90\nmsgid \"Češinovo-Obleševo\"\nmsgstr \"Češinovo-Obleševo\"\n\n#: mk/mk_choices.py:91\nmsgid \"Čučer-Sandevo\"\nmsgstr \"Čučer-Sandevo\"\n\n#: mk/mk_choices.py:92\nmsgid \"Štip\"\nmsgstr \"Štip\"\n\n#: mk/mk_choices.py:93\nmsgid \"Šuto Orizari\"\nmsgstr \"Šuto Orizari\"\n\n#: mk/models.py:11\nmsgid \"Macedonian identity card number\"\nmsgstr \"Tajra d'identificació macedònia\"\n\n#: mk/models.py:25\nmsgid \"A Macedonian municipality (2 character code)\"\nmsgstr \"Un municipi de Macedònia (2 codi de caràcters)\"\n\n#: mk/models.py:35\nmsgid \"Unique master citizen number (13 digits)\"\nmsgstr \"Identificació de ciutadà (13 dígits)\"\n\n#: mx/forms.py:67\nmsgid \"Enter a valid zip code in the format XXXXX.\"\nmsgstr \"Entreu un codi postal vàlid amb el format XXXXX.\"\n\n#: mx/forms.py:110\nmsgid \"Enter a valid RFC.\"\nmsgstr \"Entreu un RFC vàlid.\"\n\n#: mx/forms.py:111\nmsgid \"Invalid checksum for RFC.\"\nmsgstr \"Suma de verificació invàlida per RFC.\"\n\n#: mx/forms.py:191\nmsgid \"Enter a valid CURP.\"\nmsgstr \"Entreu un CURP vàlid.\"\n\n#: mx/forms.py:192\nmsgid \"Invalid checksum for CURP.\"\nmsgstr \"Suma de verificació invàlida per CURP.\"\n\n#: mx/models.py:14\nmsgid \"Mexico state (three uppercase letters)\"\nmsgstr \"Estat mexicà (tres lletres majúscules)\"\n\n#: mx/models.py:27\nmsgid \"Mexico zip code\"\nmsgstr \"Codi postal mexicà\"\n\n#: mx/models.py:44\nmsgid \"Mexican RFC\"\nmsgstr \"RFC mexicà\"\n\n#: mx/models.py:61\nmsgid \"Mexican CURP\"\nmsgstr \"CURP mexicà\"\n\n#: mx/mx_states.py:14\nmsgid \"Aguascalientes\"\nmsgstr \"Aguascalientes\"\n\n#: mx/mx_states.py:15\nmsgid \"Baja California\"\nmsgstr \"Baixa Califòrnia\"\n\n#: mx/mx_states.py:16\nmsgid \"Baja California Sur\"\nmsgstr \"Baixa Califòrnia Sud\"\n\n#: mx/mx_states.py:17\nmsgid \"Campeche\"\nmsgstr \"Campeche\"\n\n#: mx/mx_states.py:18\nmsgid \"Chihuahua\"\nmsgstr \"Chihuahua\"\n\n#: mx/mx_states.py:19\nmsgid \"Chiapas\"\nmsgstr \"Chiapas\"\n\n#: mx/mx_states.py:20\nmsgid \"Coahuila\"\nmsgstr \"Coahuila\"\n\n#: mx/mx_states.py:21\nmsgid \"Colima\"\nmsgstr \"Colima\"\n\n#: mx/mx_states.py:22\nmsgid \"Distrito Federal\"\nmsgstr \"Districte Federal\"\n\n#: mx/mx_states.py:23\nmsgid \"Durango\"\nmsgstr \"Durango\"\n\n#: mx/mx_states.py:24\nmsgid \"Guerrero\"\nmsgstr \"Guerrero\"\n\n#: mx/mx_states.py:25\nmsgid \"Guanajuato\"\nmsgstr \"Guanajuato\"\n\n#: mx/mx_states.py:26\nmsgid \"Hidalgo\"\nmsgstr \"Hidalgo\"\n\n#: mx/mx_states.py:27\nmsgid \"Jalisco\"\nmsgstr \"Jalisco\"\n\n#: mx/mx_states.py:28\nmsgid \"Estado de México\"\nmsgstr \"Estat de Mèxic\"\n\n#: mx/mx_states.py:29\nmsgid \"Michoacán\"\nmsgstr \"Michoacán\"\n\n#: mx/mx_states.py:30\nmsgid \"Morelos\"\nmsgstr \"Morelos\"\n\n#: mx/mx_states.py:31\nmsgid \"Nayarit\"\nmsgstr \"Nayarit\"\n\n#: mx/mx_states.py:32\nmsgid \"Nuevo León\"\nmsgstr \"Nuevo León\"\n\n#: mx/mx_states.py:33\nmsgid \"Oaxaca\"\nmsgstr \"Oaxaca\"\n\n#: mx/mx_states.py:34\nmsgid \"Puebla\"\nmsgstr \"Puebla\"\n\n#: mx/mx_states.py:35\nmsgid \"Querétaro\"\nmsgstr \"Querétaro\"\n\n#: mx/mx_states.py:36\nmsgid \"Quintana Roo\"\nmsgstr \"Quintana Roo\"\n\n#: mx/mx_states.py:37\nmsgid \"Sinaloa\"\nmsgstr \"Sinaloa\"\n\n#: mx/mx_states.py:38\nmsgid \"San Luis Potosí\"\nmsgstr \"San Luis Potosí\"\n\n#: mx/mx_states.py:39\nmsgid \"Sonora\"\nmsgstr \"Sonora\"\n\n#: mx/mx_states.py:40\nmsgid \"Tabasco\"\nmsgstr \"Tabasco\"\n\n#: mx/mx_states.py:41\nmsgid \"Tamaulipas\"\nmsgstr \"Tamaulipas\"\n\n#: mx/mx_states.py:42\nmsgid \"Tlaxcala\"\nmsgstr \"Tlaxcala\"\n\n#: mx/mx_states.py:43\nmsgid \"Veracruz\"\nmsgstr \"Veracruz\"\n\n#: mx/mx_states.py:44\nmsgid \"Yucatán\"\nmsgstr \"Yucatán\"\n\n#: mx/mx_states.py:45\nmsgid \"Zacatecas\"\nmsgstr \"Zacatecas\"\n\n#: nl/forms.py:26\nmsgid \"Enter a valid postal code\"\nmsgstr \"Introduïu un codi postal vàlid.\"\n\n#: nl/forms.py:82\nmsgid \"Enter a valid SoFi number\"\nmsgstr \"Introduïu un número SoFi vàlid.\"\n\n#: nl/nl_provinces.py:4\nmsgid \"Drenthe\"\nmsgstr \"Drenthe\"\n\n#: nl/nl_provinces.py:5\nmsgid \"Flevoland\"\nmsgstr \"Flevoland\"\n\n#: nl/nl_provinces.py:6\nmsgid \"Friesland\"\nmsgstr \"Friesland\"\n\n#: nl/nl_provinces.py:7\nmsgid \"Gelderland\"\nmsgstr \"Gelderland\"\n\n#: nl/nl_provinces.py:8\nmsgid \"Groningen\"\nmsgstr \"Groningen\"\n\n#: nl/nl_provinces.py:10\nmsgid \"Noord-Brabant\"\nmsgstr \"Noord-Brabant\"\n\n#: nl/nl_provinces.py:11\nmsgid \"Noord-Holland\"\nmsgstr \"Noord-Holland\"\n\n#: nl/nl_provinces.py:12\nmsgid \"Overijssel\"\nmsgstr \"Overijssel\"\n\n#: nl/nl_provinces.py:13\nmsgid \"Utrecht\"\nmsgstr \"Utrecht\"\n\n#: nl/nl_provinces.py:14\nmsgid \"Zeeland\"\nmsgstr \"Zeeland\"\n\n#: nl/nl_provinces.py:15\nmsgid \"Zuid-Holland\"\nmsgstr \"Zuid-Holland\"\n\n#: no/forms.py:39\nmsgid \"Enter a valid Norwegian social security number.\"\nmsgstr \"Introduïu un número de la seguretat social Noruega vàlid.\"\n\n#: pe/forms.py:28\nmsgid \"This field requires 8 digits.\"\nmsgstr \"Aquest camp precisa 8 dígits.\"\n\n#: pe/forms.py:56\nmsgid \"This field requires 11 digits.\"\nmsgstr \"Aquest camp precisa 11 dígits.\"\n\n#: pl/forms.py:42\nmsgid \"National Identification Number consists of 11 digits.\"\nmsgstr \"El número d'identidicació nacional està compost de 11 digits.\"\n\n#: pl/forms.py:43\nmsgid \"Wrong checksum for the National Identification Number.\"\nmsgstr \"Verificació del número d'identificació nacional invàlida.\"\n\n#: pl/forms.py:79\nmsgid \"National ID Card Number consists of 3 letters and 6 digits.\"\nmsgstr \"\"\n\"El nombre de la tarja d'identificació nacional consisteix en 3 lletres i 6 \"\n\"dígits\"\n\n#: pl/forms.py:80\nmsgid \"Wrong checksum for the National ID Card Number.\"\nmsgstr \"Suma de comprovació incorrecta pel nombre d'identificació nacional\"\n\n#: pl/forms.py:131\nmsgid \"\"\n\"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or \"\n\"XXXXXXXXXX.\"\nmsgstr \"\"\n\"Entreu un número tributari (NIP) en el format XXX-XXX-XX-XX, XXX-XX-XX-XXX o \"\n\"XXXXXXXXXX.\"\n\n#: pl/forms.py:132\nmsgid \"Wrong checksum for the Tax Number (NIP).\"\nmsgstr \"Verificació del número tributari (NIP) invàlida.\"\n\n#: pl/forms.py:171\nmsgid \"National Business Register Number (REGON) consists of 9 or 14 digits.\"\nmsgstr \"\"\n\"El número nacional de registre de negocis (REGON) està compost de 9 o 14 \"\n\"dígits.\"\n\n#: pl/forms.py:172\nmsgid \"Wrong checksum for the National Business Register Number (REGON).\"\nmsgstr \"Verificació del número nacional de registre de negocis invàlida.\"\n\n#: pl/forms.py:212\nmsgid \"Enter a postal code in the format XX-XXX.\"\nmsgstr \"Introduïu un codi postal en el format XX-XXX.\"\n\n#: pl/pl_voivodeships.py:8\nmsgid \"Lower Silesia\"\nmsgstr \"Baixa Silèsia\"\n\n#: pl/pl_voivodeships.py:9\nmsgid \"Kuyavia-Pomerania\"\nmsgstr \"Kuyavia-Pomerania\"\n\n#: pl/pl_voivodeships.py:10\nmsgid \"Lublin\"\nmsgstr \"Lublin\"\n\n#: pl/pl_voivodeships.py:11\nmsgid \"Lubusz\"\nmsgstr \"Lubusz\"\n\n#: pl/pl_voivodeships.py:12\nmsgid \"Lodz\"\nmsgstr \"Lodz\"\n\n#: pl/pl_voivodeships.py:13\nmsgid \"Lesser Poland\"\nmsgstr \"Polònia Menor\"\n\n#: pl/pl_voivodeships.py:14\nmsgid \"Masovia\"\nmsgstr \"Masovia\"\n\n#: pl/pl_voivodeships.py:15\nmsgid \"Opole\"\nmsgstr \"Opole\"\n\n#: pl/pl_voivodeships.py:16\nmsgid \"Subcarpatia\"\nmsgstr \"Subcarpatia\"\n\n#: pl/pl_voivodeships.py:17\nmsgid \"Podlasie\"\nmsgstr \"Podlasie\"\n\n#: pl/pl_voivodeships.py:18\nmsgid \"Pomerania\"\nmsgstr \"Pomerània\"\n\n#: pl/pl_voivodeships.py:19\nmsgid \"Silesia\"\nmsgstr \"Silèsia\"\n\n#: pl/pl_voivodeships.py:20\nmsgid \"Swietokrzyskie\"\nmsgstr \"Swietokrzyskie\"\n\n#: pl/pl_voivodeships.py:21\nmsgid \"Warmia-Masuria\"\nmsgstr \"Warmia-Masuria\"\n\n#: pl/pl_voivodeships.py:22\nmsgid \"Greater Poland\"\nmsgstr \"Polònia Major\"\n\n#: pl/pl_voivodeships.py:23\nmsgid \"West Pomerania\"\nmsgstr \"Pomerània Oest\"\n\n#: pt/forms.py:19\nmsgid \"Enter a zip code in the format XXXX-XXX.\"\nmsgstr \"Introduïu un codi postal en el format XXXX-XXX.\"\n\n#: pt/forms.py:39\nmsgid \"Phone numbers must have 9 digits, or start by + or 00.\"\nmsgstr \"Els números de telèfon han de tenir 9 dígits, o començar per + o 00.\"\n\n#: ro/forms.py:22\nmsgid \"Enter a valid CIF.\"\nmsgstr \"Introduïu un CIF vàlid.\"\n\n#: ro/forms.py:59\nmsgid \"Enter a valid CNP.\"\nmsgstr \"Introduïu un CNP vàlid.\"\n\n#: ro/forms.py:143\nmsgid \"Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format\"\nmsgstr \"Introduïu un IBAN vàlid en el format ROXX-XXXX-XXXX-XXXX-XXXX-XXXX.\"\n\n#: ro/forms.py:175\nmsgid \"Phone numbers must be in XXXX-XXXXXX format.\"\nmsgstr \"El número de telèfon ha d'estar en el format XXXX-XXXXXX.\"\n\n#: ro/forms.py:200\nmsgid \"Enter a valid postal code in the format XXXXXX\"\nmsgstr \"Introduïu un codi postal vàlid en el format XXXXXX.\"\n\n#: ru/forms.py:37\nmsgid \"Enter a postal code in the format XXXXXX.\"\nmsgstr \"Introdueixi un codi posta en format XXXXXX.\"\n\n#: ru/forms.py:50\nmsgid \"Enter a passport number in the format XXXX XXXXXX.\"\nmsgstr \"Introdueixi un número de passaport en format XXXX XXXXXX.\"\n\n#: ru/forms.py:63\nmsgid \"Enter a passport number in the format XX XXXXXXX.\"\nmsgstr \"Introdueixi un número de passaport en format XX XXXXXXX.\"\n\n#: ru/ru_regions.py:10\nmsgid \"Central Federal County\"\nmsgstr \"Central Federal County\"\n\n#: ru/ru_regions.py:11\nmsgid \"South Federal County\"\nmsgstr \"South Federal County\"\n\n#: ru/ru_regions.py:12\nmsgid \"North-West Federal County\"\nmsgstr \"North-West Federal County\"\n\n#: ru/ru_regions.py:13\nmsgid \"Far-East Federal County\"\nmsgstr \"Far-East Federal County\"\n\n#: ru/ru_regions.py:14\nmsgid \"Siberian Federal County\"\nmsgstr \"Siberian Federal County\"\n\n#: ru/ru_regions.py:15\nmsgid \"Ural Federal County\"\nmsgstr \"Ural Federal del Comtat\"\n\n#: ru/ru_regions.py:16\nmsgid \"Privolzhsky Federal County\"\nmsgstr \"Privolzhsky Federal del Comtat\"\n\n#: ru/ru_regions.py:17\nmsgid \"North-Caucasian Federal County\"\nmsgstr \"North-Caucasian Federal County\"\n\n#: ru/ru_regions.py:21\nmsgid \"Moskva\"\nmsgstr \"Moskva\"\n\n#: ru/ru_regions.py:22\nmsgid \"Saint-Peterburg\"\nmsgstr \"Saint-Peterburg\"\n\n#: ru/ru_regions.py:23\nmsgid \"Moskovskaya oblast'\"\nmsgstr \"Moskovskaya Oblast '\"\n\n#: ru/ru_regions.py:24\nmsgid \"Adygeya, Respublika\"\nmsgstr \"Adygeya, Respublika\"\n\n#: ru/ru_regions.py:25\nmsgid \"Bashkortostan, Respublika\"\nmsgstr \"Bashkortostan, Respublika\"\n\n#: ru/ru_regions.py:26\nmsgid \"Buryatia, Respublika\"\nmsgstr \"Buryatia, Respublika\"\n\n#: ru/ru_regions.py:27\nmsgid \"Altay, Respublika\"\nmsgstr \"Altay, Respublika\"\n\n#: ru/ru_regions.py:28\nmsgid \"Dagestan, Respublika\"\nmsgstr \"Dagestan, Respublika\"\n\n#: ru/ru_regions.py:29\nmsgid \"Ingushskaya Respublika\"\nmsgstr \"Ingushskaya Respublika\"\n\n#: ru/ru_regions.py:30\nmsgid \"Kabardino-Balkarskaya Respublika\"\nmsgstr \"Kabardino-Balkarskaya Respublika\"\n\n#: ru/ru_regions.py:31\nmsgid \"Kalmykia, Respublika\"\nmsgstr \"Kalmykia, Respublika\"\n\n#: ru/ru_regions.py:32\nmsgid \"Karachaevo-Cherkesskaya Respublika\"\nmsgstr \"Karachaevo-Cherkesskaya Respublika\"\n\n#: ru/ru_regions.py:33\nmsgid \"Karelia, Respublika\"\nmsgstr \"Karelia, Respublika\"\n\n#: ru/ru_regions.py:34\nmsgid \"Komi, Respublika\"\nmsgstr \"Komi, Respublika\"\n\n#: ru/ru_regions.py:35\nmsgid \"Mariy Ehl, Respublika\"\nmsgstr \"Mariy Ehl, Respublika\"\n\n#: ru/ru_regions.py:36\nmsgid \"Mordovia, Respublika\"\nmsgstr \"Mordovia, Respublika\"\n\n#: ru/ru_regions.py:37\nmsgid \"Sakha, Respublika (Yakutiya)\"\nmsgstr \"Sakha, Respublika (Yakutiya)\"\n\n#: ru/ru_regions.py:38\nmsgid \"Severnaya Osetia, Respublika (Alania)\"\nmsgstr \"Severnaya Osetia, Respublika (Alania)\"\n\n#: ru/ru_regions.py:39\nmsgid \"Tatarstan, Respublika\"\nmsgstr \"Tatarstan, Respublika\"\n\n#: ru/ru_regions.py:40\nmsgid \"Tyva, Respublika (Tuva)\"\nmsgstr \"Tyva, Respublika (Tuva)\"\n\n#: ru/ru_regions.py:41\nmsgid \"Udmurtskaya Respublika\"\nmsgstr \"Udmurtskaya Respublika\"\n\n#: ru/ru_regions.py:42\nmsgid \"Khakassiya, Respublika\"\nmsgstr \"Khakassiya, Respublika\"\n\n#: ru/ru_regions.py:43\nmsgid \"Chechenskaya Respublika\"\nmsgstr \"Chechenskaya Respublika\"\n\n#: ru/ru_regions.py:44\nmsgid \"Chuvashskaya Respublika\"\nmsgstr \"Chuvashskaya Respublika\"\n\n#: ru/ru_regions.py:45\nmsgid \"Altayskiy Kray\"\nmsgstr \"Altayskiy Kray\"\n\n#: ru/ru_regions.py:46\nmsgid \"Zabaykalskiy Kray\"\nmsgstr \"Zabaykalskiy Kray\"\n\n#: ru/ru_regions.py:47\nmsgid \"Kamchatskiy Kray\"\nmsgstr \"Kamchatskiy Kray\"\n\n#: ru/ru_regions.py:48\nmsgid \"Krasnodarskiy Kray\"\nmsgstr \"Krasnodarskiy Kray\"\n\n#: ru/ru_regions.py:49\nmsgid \"Krasnoyarskiy Kray\"\nmsgstr \"Krasnoyarskiy Kray\"\n\n#: ru/ru_regions.py:50\nmsgid \"Permskiy Kray\"\nmsgstr \"Permskiy Kray\"\n\n#: ru/ru_regions.py:51\nmsgid \"Primorskiy Kray\"\nmsgstr \"Primorskiy Kray\"\n\n#: ru/ru_regions.py:52\nmsgid \"Stavropol'siyy Kray\"\nmsgstr \"Stavropol'siyy Kray\"\n\n#: ru/ru_regions.py:53\nmsgid \"Khabarovskiy Kray\"\nmsgstr \"Khabarovskiy Kray\"\n\n#: ru/ru_regions.py:54\nmsgid \"Amurskaya oblast'\"\nmsgstr \"Amurskaya oblast'\"\n\n#: ru/ru_regions.py:55\nmsgid \"Arkhangel'skaya oblast'\"\nmsgstr \"Arkhangel'skaya oblast'\"\n\n#: ru/ru_regions.py:56\nmsgid \"Astrakhanskaya oblast'\"\nmsgstr \"Astrakhanskaya oblast'\"\n\n#: ru/ru_regions.py:57\nmsgid \"Belgorodskaya oblast'\"\nmsgstr \"Belgorodskaya oblast'\"\n\n#: ru/ru_regions.py:58\nmsgid \"Bryanskaya oblast'\"\nmsgstr \"Bryanskaya oblast'\"\n\n#: ru/ru_regions.py:59\nmsgid \"Vladimirskaya oblast'\"\nmsgstr \"Vladimirskaya oblast'\"\n\n#: ru/ru_regions.py:60\nmsgid \"Volgogradskaya oblast'\"\nmsgstr \"Volgogradskaya oblast'\"\n\n#: ru/ru_regions.py:61\nmsgid \"Vologodskaya oblast'\"\nmsgstr \"Vologodskaya oblast'\"\n\n#: ru/ru_regions.py:62\nmsgid \"Voronezhskaya oblast'\"\nmsgstr \"Voronezhskaya oblast'\"\n\n#: ru/ru_regions.py:63\nmsgid \"Ivanovskaya oblast'\"\nmsgstr \"Ivanovskaya oblast'\"\n\n#: ru/ru_regions.py:64\nmsgid \"Irkutskaya oblast'\"\nmsgstr \"Irkutskaya oblast'\"\n\n#: ru/ru_regions.py:65\nmsgid \"Kaliningradskaya oblast'\"\nmsgstr \"Kaliningradskaya oblast'\"\n\n#: ru/ru_regions.py:66\nmsgid \"Kaluzhskaya oblast'\"\nmsgstr \"Kaluzhskaya oblast'\"\n\n#: ru/ru_regions.py:67\nmsgid \"Kemerovskaya oblast'\"\nmsgstr \"Kemerovskaya oblast'\"\n\n#: ru/ru_regions.py:68\nmsgid \"Kirovskaya oblast'\"\nmsgstr \"Kirovskaya oblast'\"\n\n#: ru/ru_regions.py:69\nmsgid \"Kostromskaya oblast'\"\nmsgstr \"Kostromskaya oblast'\"\n\n#: ru/ru_regions.py:70\nmsgid \"Kurganskaya oblast'\"\nmsgstr \"Kurganskaya oblast'\"\n\n#: ru/ru_regions.py:71\nmsgid \"Kurskaya oblast'\"\nmsgstr \"Kurskaya oblast'\"\n\n#: ru/ru_regions.py:72\nmsgid \"Leningradskaya oblast'\"\nmsgstr \"Leningradskaya oblast'\"\n\n#: ru/ru_regions.py:73\nmsgid \"Lipeckaya oblast'\"\nmsgstr \"Lipeckaya oblast'\"\n\n#: ru/ru_regions.py:74\nmsgid \"Magadanskaya oblast'\"\nmsgstr \"Magadanskaya oblast'\"\n\n#: ru/ru_regions.py:75\nmsgid \"Murmanskaya oblast'\"\nmsgstr \"Murmanskaya oblast'\"\n\n#: ru/ru_regions.py:76\nmsgid \"Nizhegorodskaja oblast'\"\nmsgstr \"Nizhegorodskaja oblast '\"\n\n#: ru/ru_regions.py:77\nmsgid \"Novgorodskaya oblast'\"\nmsgstr \"Novgorodskaya oblast'\"\n\n#: ru/ru_regions.py:78\nmsgid \"Novosibirskaya oblast'\"\nmsgstr \"Novosibirskaya oblast'\"\n\n#: ru/ru_regions.py:79\nmsgid \"Omskaya oblast'\"\nmsgstr \"Omskaya oblast'\"\n\n#: ru/ru_regions.py:80\nmsgid \"Orenburgskaya oblast'\"\nmsgstr \"Orenburgskaya oblast'\"\n\n#: ru/ru_regions.py:81\nmsgid \"Orlovskaya oblast'\"\nmsgstr \"Orlovskaya oblast '\"\n\n#: ru/ru_regions.py:82\nmsgid \"Penzenskaya oblast'\"\nmsgstr \"Penzenskaya oblast '\"\n\n#: ru/ru_regions.py:83\nmsgid \"Pskovskaya oblast'\"\nmsgstr \"Pskovskaya oblast'\"\n\n#: ru/ru_regions.py:84\nmsgid \"Rostovskaya oblast'\"\nmsgstr \"Rostovskaya oblast'\"\n\n#: ru/ru_regions.py:85\nmsgid \"Rjazanskaya oblast'\"\nmsgstr \"Rjazanskaya oblast'\"\n\n#: ru/ru_regions.py:86\nmsgid \"Samarskaya oblast'\"\nmsgstr \"Samarskaya oblast'\"\n\n#: ru/ru_regions.py:87\nmsgid \"Saratovskaya oblast'\"\nmsgstr \"Saratovskaya oblast'\"\n\n#: ru/ru_regions.py:88\nmsgid \"Sakhalinskaya oblast'\"\nmsgstr \"Sakhalinskaya oblast'\"\n\n#: ru/ru_regions.py:89\nmsgid \"Sverdlovskaya oblast'\"\nmsgstr \"Sverdlovskaya oblast'\"\n\n#: ru/ru_regions.py:90\nmsgid \"Smolenskaya oblast'\"\nmsgstr \"Smolenskaya oblast'\"\n\n#: ru/ru_regions.py:91\nmsgid \"Tambovskaya oblast'\"\nmsgstr \"Tambovskaya oblast'\"\n\n#: ru/ru_regions.py:92\nmsgid \"Tverskaya oblast'\"\nmsgstr \"Tverskaya oblast'\"\n\n#: ru/ru_regions.py:93\nmsgid \"Tomskaya oblast'\"\nmsgstr \"Tomskaya oblast '\"\n\n#: ru/ru_regions.py:94\nmsgid \"Tul'skaya oblast'\"\nmsgstr \"Tul'skaya oblast '\"\n\n#: ru/ru_regions.py:95\nmsgid \"Tyumenskaya oblast'\"\nmsgstr \"Tyumenskaya oblast '\"\n\n#: ru/ru_regions.py:96\nmsgid \"Ul'ianovskaya oblast'\"\nmsgstr \"Ul'ianovskaya oblast '\"\n\n#: ru/ru_regions.py:97\nmsgid \"Chelyabinskaya oblast'\"\nmsgstr \"Chelyabinskaya oblast '\"\n\n#: ru/ru_regions.py:98\nmsgid \"Yaroslavskaya oblast'\"\nmsgstr \"Yaroslavl Oblast '\"\n\n#: ru/ru_regions.py:99\nmsgid \"Evreyskaya avtonomnaja oblast'\"\nmsgstr \"Evreyskaya avtonomnaja oblast '\"\n\n#: ru/ru_regions.py:100\nmsgid \"Neneckiy autonomnyy okrug\"\nmsgstr \"Neneckiy autonomnyy okrug\"\n\n#: ru/ru_regions.py:101\nmsgid \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\nmsgstr \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\n\n#: ru/ru_regions.py:102\nmsgid \"Chukotskiy avtonomnyy okrug\"\nmsgstr \"Chukotskiy avtonomnyy okrug\"\n\n#: ru/ru_regions.py:103\nmsgid \"Yamalo-Neneckiy avtonomnyy okrug\"\nmsgstr \"Yamalo-Neneckiy avtonomnyy okrug\"\n\n#: se/forms.py:54\nmsgid \"Enter a valid Swedish organisation number.\"\nmsgstr \"Introduïu un número d'organització Sueca vàlid.\"\n\n#: se/forms.py:111\nmsgid \"Enter a valid Swedish personal identity number.\"\nmsgstr \"Introduïu un número d'identitat personal suec vàlid.\"\n\n#: se/forms.py:112\nmsgid \"Co-ordination numbers are not allowed.\"\nmsgstr \"No es permeten números de coordinació.\"\n\n#: se/forms.py:154\nmsgid \"Enter a Swedish postal code in the format XXXXX.\"\nmsgstr \"Introduïu un codi postal suec en el format XXXXX.\"\n\n#: se/se_counties.py:16\nmsgid \"Stockholm\"\nmsgstr \"Estocolm\"\n\n#: se/se_counties.py:17\nmsgid \"Västerbotten\"\nmsgstr \"Västerbotten\"\n\n#: se/se_counties.py:18\nmsgid \"Norrbotten\"\nmsgstr \"Norrbotten\"\n\n#: se/se_counties.py:19\nmsgid \"Uppsala\"\nmsgstr \"Uppsala\"\n\n#: se/se_counties.py:20\nmsgid \"Södermanland\"\nmsgstr \"Södermanland\"\n\n#: se/se_counties.py:21\nmsgid \"Östergötland\"\nmsgstr \"Östergötland\"\n\n#: se/se_counties.py:22\nmsgid \"Jönköping\"\nmsgstr \"Jönköping\"\n\n#: se/se_counties.py:23\nmsgid \"Kronoberg\"\nmsgstr \"Kronoberg\"\n\n#: se/se_counties.py:24\nmsgid \"Kalmar\"\nmsgstr \"Kalmar\"\n\n#: se/se_counties.py:25\nmsgid \"Gotland\"\nmsgstr \"Gotland\"\n\n#: se/se_counties.py:26\nmsgid \"Blekinge\"\nmsgstr \"Blekinge\"\n\n#: se/se_counties.py:27\nmsgid \"Skåne\"\nmsgstr \"Skåne\"\n\n#: se/se_counties.py:28\nmsgid \"Halland\"\nmsgstr \"Halland\"\n\n#: se/se_counties.py:29\nmsgid \"Västra Götaland\"\nmsgstr \"Västra Götaland\"\n\n#: se/se_counties.py:30\nmsgid \"Värmland\"\nmsgstr \"Värmland\"\n\n#: se/se_counties.py:31\nmsgid \"Örebro\"\nmsgstr \"Örebro\"\n\n#: se/se_counties.py:32\nmsgid \"Västmanland\"\nmsgstr \"Västmanland\"\n\n#: se/se_counties.py:33\nmsgid \"Dalarna\"\nmsgstr \"Dalarna\"\n\n#: se/se_counties.py:34\nmsgid \"Gävleborg\"\nmsgstr \"Gävleborg\"\n\n#: se/se_counties.py:35\nmsgid \"Västernorrland\"\nmsgstr \"Västernorrland\"\n\n#: se/se_counties.py:36\nmsgid \"Jämtland\"\nmsgstr \"Jämtland\"\n\n#: si/forms.py:25\nmsgid \"The first 7 digits of the EMSO must represent a valid past date.\"\nmsgstr \"\"\n\"Els 7 primers dígits de l'EMSO han de representar una data vàlida en el \"\n\"passat.\"\n\n#: si/forms.py:26\nmsgid \"The EMSO is not valid.\"\nmsgstr \"L'EMSO no és vàlid.\"\n\n#: si/forms.py:86\nmsgid \"Enter a valid tax number in form SIXXXXXXXX\"\nmsgstr \"Entreu un número vàlid per a impostos en el format SIXXXXXXXX\"\n\n#: si/forms.py:151\nmsgid \"Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.\"\nmsgstr \"Entreu un número de telèfon en el format +386XXXXXXXX o 0XXXXXXXX.\"\n\n#: sk/sk_districts.py:8\nmsgid \"Banska Bystrica\"\nmsgstr \"Banska Bystrica\"\n\n#: sk/sk_districts.py:9\nmsgid \"Banska Stiavnica\"\nmsgstr \"Banska Stiavnica\"\n\n#: sk/sk_districts.py:10\nmsgid \"Bardejov\"\nmsgstr \"Bardejov\"\n\n#: sk/sk_districts.py:11\nmsgid \"Banovce nad Bebravou\"\nmsgstr \"Banovce nad Bebravou\"\n\n#: sk/sk_districts.py:12\nmsgid \"Brezno\"\nmsgstr \"Brezno\"\n\n#: sk/sk_districts.py:13\nmsgid \"Bratislava I\"\nmsgstr \"Bratislava I\"\n\n#: sk/sk_districts.py:14\nmsgid \"Bratislava II\"\nmsgstr \"Bratislava II\"\n\n#: sk/sk_districts.py:15\nmsgid \"Bratislava III\"\nmsgstr \"Bratislava III\"\n\n#: sk/sk_districts.py:16\nmsgid \"Bratislava IV\"\nmsgstr \"Bratislava IV\"\n\n#: sk/sk_districts.py:17\nmsgid \"Bratislava V\"\nmsgstr \"Bratislava V\"\n\n#: sk/sk_districts.py:18\nmsgid \"Bytca\"\nmsgstr \"Bytca\"\n\n#: sk/sk_districts.py:19\nmsgid \"Cadca\"\nmsgstr \"Cadca\"\n\n#: sk/sk_districts.py:20\nmsgid \"Detva\"\nmsgstr \"Detva\"\n\n#: sk/sk_districts.py:21\nmsgid \"Dolny Kubin\"\nmsgstr \"Dolny Kubin\"\n\n#: sk/sk_districts.py:22\nmsgid \"Dunajska Streda\"\nmsgstr \"Dunajska Streda\"\n\n#: sk/sk_districts.py:23\nmsgid \"Galanta\"\nmsgstr \"Galanta\"\n\n#: sk/sk_districts.py:24\nmsgid \"Gelnica\"\nmsgstr \"Gelnica\"\n\n#: sk/sk_districts.py:25\nmsgid \"Hlohovec\"\nmsgstr \"Hlohovec\"\n\n#: sk/sk_districts.py:26\nmsgid \"Humenne\"\nmsgstr \"Humenne\"\n\n#: sk/sk_districts.py:27\nmsgid \"Ilava\"\nmsgstr \"Ilava\"\n\n#: sk/sk_districts.py:28\nmsgid \"Kezmarok\"\nmsgstr \"Kezmarok\"\n\n#: sk/sk_districts.py:29\nmsgid \"Komarno\"\nmsgstr \"Komarno\"\n\n#: sk/sk_districts.py:30\nmsgid \"Kosice I\"\nmsgstr \"Kosice I\"\n\n#: sk/sk_districts.py:31\nmsgid \"Kosice II\"\nmsgstr \"Kosice II\"\n\n#: sk/sk_districts.py:32\nmsgid \"Kosice III\"\nmsgstr \"Kosice III\"\n\n#: sk/sk_districts.py:33\nmsgid \"Kosice IV\"\nmsgstr \"Kosice IV\"\n\n#: sk/sk_districts.py:34\nmsgid \"Kosice - okolie\"\nmsgstr \"Kosice - okolie\"\n\n#: sk/sk_districts.py:35\nmsgid \"Krupina\"\nmsgstr \"Krupina\"\n\n#: sk/sk_districts.py:36\nmsgid \"Kysucke Nove Mesto\"\nmsgstr \"Kysucke Nove Mesto\"\n\n#: sk/sk_districts.py:37\nmsgid \"Levice\"\nmsgstr \"Levice\"\n\n#: sk/sk_districts.py:38\nmsgid \"Levoca\"\nmsgstr \"Levoca\"\n\n#: sk/sk_districts.py:39\nmsgid \"Liptovsky Mikulas\"\nmsgstr \"Liptovsky Mikulas\"\n\n#: sk/sk_districts.py:40\nmsgid \"Lucenec\"\nmsgstr \"Lucenec\"\n\n#: sk/sk_districts.py:41\nmsgid \"Malacky\"\nmsgstr \"Malacky\"\n\n#: sk/sk_districts.py:42\nmsgid \"Martin\"\nmsgstr \"Martin\"\n\n#: sk/sk_districts.py:43\nmsgid \"Medzilaborce\"\nmsgstr \"Medzilaborce\"\n\n#: sk/sk_districts.py:44\nmsgid \"Michalovce\"\nmsgstr \"Michalovce\"\n\n#: sk/sk_districts.py:45\nmsgid \"Myjava\"\nmsgstr \"Myjava\"\n\n#: sk/sk_districts.py:46\nmsgid \"Namestovo\"\nmsgstr \"Namestovo\"\n\n#: sk/sk_districts.py:47\nmsgid \"Nitra\"\nmsgstr \"Nitra\"\n\n#: sk/sk_districts.py:48\nmsgid \"Nove Mesto nad Vahom\"\nmsgstr \"Nove Mesto nad Vahom\"\n\n#: sk/sk_districts.py:49\nmsgid \"Nove Zamky\"\nmsgstr \"Nove Zamky\"\n\n#: sk/sk_districts.py:50\nmsgid \"Partizanske\"\nmsgstr \"Partizanske\"\n\n#: sk/sk_districts.py:51\nmsgid \"Pezinok\"\nmsgstr \"Pezinok\"\n\n#: sk/sk_districts.py:52\nmsgid \"Piestany\"\nmsgstr \"Piestany\"\n\n#: sk/sk_districts.py:53\nmsgid \"Poltar\"\nmsgstr \"Poltar\"\n\n#: sk/sk_districts.py:54\nmsgid \"Poprad\"\nmsgstr \"Poprad\"\n\n#: sk/sk_districts.py:55\nmsgid \"Povazska Bystrica\"\nmsgstr \"Povazska Bystrica\"\n\n#: sk/sk_districts.py:56\nmsgid \"Presov\"\nmsgstr \"Presov\"\n\n#: sk/sk_districts.py:57\nmsgid \"Prievidza\"\nmsgstr \"Prievidza\"\n\n#: sk/sk_districts.py:58\nmsgid \"Puchov\"\nmsgstr \"Puchov\"\n\n#: sk/sk_districts.py:59\nmsgid \"Revuca\"\nmsgstr \"Revuca\"\n\n#: sk/sk_districts.py:60\nmsgid \"Rimavska Sobota\"\nmsgstr \"Rimavska Sobota\"\n\n#: sk/sk_districts.py:61\nmsgid \"Roznava\"\nmsgstr \"Roznava\"\n\n#: sk/sk_districts.py:62\nmsgid \"Ruzomberok\"\nmsgstr \"Ruzomberok\"\n\n#: sk/sk_districts.py:63\nmsgid \"Sabinov\"\nmsgstr \"Sabinov\"\n\n#: sk/sk_districts.py:64\nmsgid \"Senec\"\nmsgstr \"Senec\"\n\n#: sk/sk_districts.py:65\nmsgid \"Senica\"\nmsgstr \"Senica\"\n\n#: sk/sk_districts.py:66\nmsgid \"Skalica\"\nmsgstr \"Skalica\"\n\n#: sk/sk_districts.py:67\nmsgid \"Snina\"\nmsgstr \"Snina\"\n\n#: sk/sk_districts.py:68\nmsgid \"Sobrance\"\nmsgstr \"Sobrance\"\n\n#: sk/sk_districts.py:69\nmsgid \"Spisska Nova Ves\"\nmsgstr \"Spisska Nova Ves\"\n\n#: sk/sk_districts.py:70\nmsgid \"Stara Lubovna\"\nmsgstr \"Stara Lubovna\"\n\n#: sk/sk_districts.py:71\nmsgid \"Stropkov\"\nmsgstr \"Stropkov\"\n\n#: sk/sk_districts.py:72\nmsgid \"Svidnik\"\nmsgstr \"Svidnik\"\n\n#: sk/sk_districts.py:73\nmsgid \"Sala\"\nmsgstr \"Sala\"\n\n#: sk/sk_districts.py:74\nmsgid \"Topolcany\"\nmsgstr \"Topolcany\"\n\n#: sk/sk_districts.py:75\nmsgid \"Trebisov\"\nmsgstr \"Trebisov\"\n\n#: sk/sk_districts.py:76\nmsgid \"Trencin\"\nmsgstr \"Trencin\"\n\n#: sk/sk_districts.py:77\nmsgid \"Trnava\"\nmsgstr \"Trnava\"\n\n#: sk/sk_districts.py:78\nmsgid \"Turcianske Teplice\"\nmsgstr \"Turcianske Teplice\"\n\n#: sk/sk_districts.py:79\nmsgid \"Tvrdosin\"\nmsgstr \"Tvrdosin\"\n\n#: sk/sk_districts.py:80\nmsgid \"Velky Krtis\"\nmsgstr \"Velky Krtis\"\n\n#: sk/sk_districts.py:81\nmsgid \"Vranov nad Toplou\"\nmsgstr \"Vranov nad Toplou\"\n\n#: sk/sk_districts.py:82\nmsgid \"Zlate Moravce\"\nmsgstr \"Zlate Moravce\"\n\n#: sk/sk_districts.py:83\nmsgid \"Zvolen\"\nmsgstr \"Zvolen\"\n\n#: sk/sk_districts.py:84\nmsgid \"Zarnovica\"\nmsgstr \"Zarnovica\"\n\n#: sk/sk_districts.py:85\nmsgid \"Ziar nad Hronom\"\nmsgstr \"Ziar nad Hronom\"\n\n#: sk/sk_districts.py:86\nmsgid \"Zilina\"\nmsgstr \"Zilina\"\n\n#: sk/sk_regions.py:8\nmsgid \"Banska Bystrica region\"\nmsgstr \"Regió de Banska Bystrica\"\n\n#: sk/sk_regions.py:9\nmsgid \"Bratislava region\"\nmsgstr \"Regió de Bratislava\"\n\n#: sk/sk_regions.py:10\nmsgid \"Kosice region\"\nmsgstr \"Regió de Kosice\"\n\n#: sk/sk_regions.py:11\nmsgid \"Nitra region\"\nmsgstr \"Regió de Nitra\"\n\n#: sk/sk_regions.py:12\nmsgid \"Presov region\"\nmsgstr \"Regió de Presov\"\n\n#: sk/sk_regions.py:13\nmsgid \"Trencin region\"\nmsgstr \"Regió de Trencin\"\n\n#: sk/sk_regions.py:14\nmsgid \"Trnava region\"\nmsgstr \"Regió de Trnava\"\n\n#: sk/sk_regions.py:15\nmsgid \"Zilina region\"\nmsgstr \"Regió de Zilina\"\n\n#: tr/forms.py:21\nmsgid \"Enter a postal code in the format XXXXX.\"\nmsgstr \"Introduïu un codi postal amb el format XXXXX.\"\n\n#: tr/forms.py:42\nmsgid \"Phone numbers must be in 0XXX XXX XXXX format.\"\nmsgstr \"Els números de telèfon han de tenir el format 0XXX XXX XXXX.\"\n\n#: tr/forms.py:69\nmsgid \"Enter a valid Turkish Identification number.\"\nmsgstr \"Introduïu un número d'identificació turc vàlid.\"\n\n#: tr/forms.py:70\nmsgid \"Turkish Identification number must be 11 digits.\"\nmsgstr \"Els números d'identificació turcs han de tenir 11 dígits.\"\n\n#: us/forms.py:21\nmsgid \"Enter a zip code in the format XXXXX or XXXXX-XXXX.\"\nmsgstr \"Introduïu un codi postal en el format XXXXX o XXXXX-XXXX.\"\n\n#: us/forms.py:59\nmsgid \"Enter a valid U.S. Social Security number in XXX-XX-XXXX format.\"\nmsgstr \"\"\n\"Introduïu un número vàlid de la Seguretat Social dels E.U.A. en el format \"\n\"XXX-XX-XXXX.\"\n\n#: us/forms.py:92\nmsgid \"Enter a U.S. state or territory.\"\nmsgstr \"Introduïu un estat o territori dels E.U.A.\"\n\n#: us/models.py:8\nmsgid \"U.S. state (two uppercase letters)\"\nmsgstr \"Estat dels E.U.A. (dues lletres majúscules)\"\n\n#: us/models.py:17\nmsgid \"U.S. postal code (two uppercase letters)\"\nmsgstr \"Codi postal dels EUA (dues lletres majúscules)\"\n\n#: us/models.py:26\nmsgid \"Phone number\"\nmsgstr \"Número de telèfon\"\n\n#: uy/forms.py:29\nmsgid \"Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.\"\nmsgstr \"\"\n\"Introduïu un número CI vàlid en el format X.XXX.XXX-X,XXXXXXX-X o XXXXXXXX.\"\n\n#: uy/forms.py:31\nmsgid \"Enter a valid CI number.\"\nmsgstr \"Introduïu un número CI vàlid.\"\n\n#: za/forms.py:22\nmsgid \"Enter a valid South African ID number\"\nmsgstr \"Introduïu un número d'Identitat Sud Africà vàlid\"\n\n#: za/forms.py:56\nmsgid \"Enter a valid South African postal code\"\nmsgstr \"Introduïu un codi postal Sud Africà vàlid.\"\n\n#: za/za_provinces.py:4\nmsgid \"Eastern Cape\"\nmsgstr \"Cap Oriental\"\n\n#: za/za_provinces.py:5\nmsgid \"Free State\"\nmsgstr \"Estat lliure\"\n\n#: za/za_provinces.py:6\nmsgid \"Gauteng\"\nmsgstr \"Gauteng\"\n\n#: za/za_provinces.py:7\nmsgid \"KwaZulu-Natal\"\nmsgstr \"KwaZulu-Natal\"\n\n#: za/za_provinces.py:8\nmsgid \"Limpopo\"\nmsgstr \"Limpopo\"\n\n#: za/za_provinces.py:9\nmsgid \"Mpumalanga\"\nmsgstr \"Mpumalanga\"\n\n#: za/za_provinces.py:10\nmsgid \"Northern Cape\"\nmsgstr \"Cap Nord\"\n\n#: za/za_provinces.py:11\nmsgid \"North West\"\nmsgstr \"Cap Oest\"\n\n#: za/za_provinces.py:12\nmsgid \"Western Cape\"\nmsgstr \"Cap Occidental\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/locale/cs/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Jirka Vejrazka <Jirka.Vejrazka@gmail.com>, 2011.\n# Vlada Macek <macek@sandbox.cz>, 2011-2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-10-21 19:20+0000\\n\"\n\"Last-Translator: Vlada Macek <macek@sandbox.cz>\\n\"\n\"Language-Team: Czech (http://www.transifex.com/projects/p/django/language/\"\n\"cs/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: cs\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\\n\"\n\n#: ar/forms.py:30\nmsgid \"Enter a postal code in the format NNNN or ANNNNAAA.\"\nmsgstr \"Zadejte poštovní směrovací číslo ve tvaru NNNN nebo ANNNNAAA.\"\n\n#: ar/forms.py:52 br/forms.py:95 br/forms.py:134 pe/forms.py:27 pe/forms.py:55\nmsgid \"This field requires only numbers.\"\nmsgstr \"Pole smí obsahovat pouze číslice.\"\n\n#: ar/forms.py:53\nmsgid \"This field requires 7 or 8 digits.\"\nmsgstr \"Pole smí obsahovat jen 7 nebo 8 číslic.\"\n\n#: ar/forms.py:82\nmsgid \"Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.\"\nmsgstr \"\"\n\"Zadejte platné identifikační číslo CUIT ve tvaru XX-XXXXXXXX-X nebo \"\n\"XXXXXXXXXXXX\"\n\n#: ar/forms.py:83\nmsgid \"Invalid CUIT.\"\nmsgstr \"Neplatné CUIT\"\n\n#: ar/forms.py:84\nmsgid \"Invalid legal type. Type must be 27, 20, 23 or 30.\"\nmsgstr \"Neplatná hodnota. Typ musí být 27, 20, 23 nebo 30.\"\n\n#: at/at_states.py:5\nmsgid \"Burgenland\"\nmsgstr \"Hradsko\"\n\n#: at/at_states.py:6\nmsgid \"Carinthia\"\nmsgstr \"Korutany\"\n\n#: at/at_states.py:7\nmsgid \"Lower Austria\"\nmsgstr \"Dolní Rakousko\"\n\n#: at/at_states.py:8\nmsgid \"Upper Austria\"\nmsgstr \"Horní Rakousko\"\n\n#: at/at_states.py:9\nmsgid \"Salzburg\"\nmsgstr \"Salcbursko\"\n\n#: at/at_states.py:10\nmsgid \"Styria\"\nmsgstr \"Štýrsko\"\n\n#: at/at_states.py:11\nmsgid \"Tyrol\"\nmsgstr \"Tyrolsko\"\n\n#: at/at_states.py:12\nmsgid \"Vorarlberg\"\nmsgstr \"Vorarlbersko\"\n\n#: at/at_states.py:13\nmsgid \"Vienna\"\nmsgstr \"Vídeň\"\n\n#: at/forms.py:22 ch/forms.py:22 no/forms.py:19\nmsgid \"Enter a zip code in the format XXXX.\"\nmsgstr \"Zadejte poštovní směrovací číslo ve tvaru XXXX.\"\n\n#: at/forms.py:50\nmsgid \"Enter a valid Austrian Social Security Number in XXXX XXXXXX format.\"\nmsgstr \"Zadejte platné rodné číslo (ASSN) ve tvaru XXXX XXXXXX.\"\n\n#: au/forms.py:26\nmsgid \"Enter a 4 digit postcode.\"\nmsgstr \"Zadejte čtyřmístné poštovní číslo.\"\n\n#: au/models.py:9\nmsgid \"Australian State\"\nmsgstr \"Australský stát\"\n\n#: au/models.py:19\nmsgid \"Australian Postcode\"\nmsgstr \"Australské poštovní číslo\"\n\n#: au/models.py:33\nmsgid \"Australian Phone number\"\nmsgstr \"Australské telefonní číslo\"\n\n#: be/be_provinces.py:5\nmsgid \"Antwerp\"\nmsgstr \"Antverpy\"\n\n#: be/be_provinces.py:6\nmsgid \"Brussels\"\nmsgstr \"Brusel\"\n\n#: be/be_provinces.py:7\nmsgid \"East Flanders\"\nmsgstr \"Východní Flandry\"\n\n#: be/be_provinces.py:8\nmsgid \"Flemish Brabant\"\nmsgstr \"Vlámský Brabant\"\n\n#: be/be_provinces.py:9\nmsgid \"Hainaut\"\nmsgstr \"Henegavsko\"\n\n#: be/be_provinces.py:10\nmsgid \"Liege\"\nmsgstr \"Lutych\"\n\n#: be/be_provinces.py:11 nl/nl_provinces.py:9\nmsgid \"Limburg\"\nmsgstr \"Limburk\"\n\n#: be/be_provinces.py:12\nmsgid \"Luxembourg\"\nmsgstr \"Lucembursko\"\n\n#: be/be_provinces.py:13\nmsgid \"Namur\"\nmsgstr \"Namur\"\n\n#: be/be_provinces.py:14\nmsgid \"Walloon Brabant\"\nmsgstr \"Valonský Brabant\"\n\n#: be/be_provinces.py:15\nmsgid \"West Flanders\"\nmsgstr \"Západní Flandry\"\n\n#: be/be_regions.py:5\nmsgid \"Brussels Capital Region\"\nmsgstr \"Brusel-hlavní město\"\n\n#: be/be_regions.py:6\nmsgid \"Flemish Region\"\nmsgstr \"Vlámský region\"\n\n#: be/be_regions.py:7\nmsgid \"Wallonia\"\nmsgstr \"Valonsko\"\n\n#: be/forms.py:25\nmsgid \"Enter a valid postal code in the range and format 1XXX - 9XXX.\"\nmsgstr \"Vložte platné poštovní směrovací číslo v rozsahu a tvaru 1XXX - 9XXX.\"\n\n#: be/forms.py:48\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\nmsgstr \"\"\n\"Vložte platné telefonní číslo v jednom z tvarů 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\n\n#: br/forms.py:22\nmsgid \"Enter a zip code in the format XXXXX-XXX.\"\nmsgstr \"Zadejte poštovní směrovací číslo ve tvaru XXXXXX-XXX.\"\n\n#: br/forms.py:31\nmsgid \"Phone numbers must be in XX-XXXX-XXXX format.\"\nmsgstr \"Telefonní číslo smí být pouze ve tvaru XX-XXXX-XXXX.\"\n\n#: br/forms.py:58\nmsgid \"\"\n\"Select a valid brazilian state. That state is not one of the available \"\n\"states.\"\nmsgstr \"Neplatný brazilský stát. Vyberte jeden z nabízených států.\"\n\n#: br/forms.py:93\nmsgid \"Invalid CPF number.\"\nmsgstr \"Neplatné číslo CPF.\"\n\n#: br/forms.py:94\nmsgid \"This field requires at most 11 digits or 14 characters.\"\nmsgstr \"Pole smí obsahovat nejvýše 11 číslic nebo 14 znaků.\"\n\n#: br/forms.py:133\nmsgid \"Invalid CNPJ number.\"\nmsgstr \"Neplatné číslo CNPJ.\"\n\n#: br/forms.py:135\nmsgid \"This field requires at least 14 digits\"\nmsgstr \"Pole smí obsahovat nejméně 14 číslic.\"\n\n#: ca/forms.py:29\nmsgid \"Enter a postal code in the format XXX XXX.\"\nmsgstr \"Zadejte poštovní směrovací číslo ve tvaru XXX XXX.\"\n\n#: ca/forms.py:47 us/forms.py:30\nmsgid \"Phone numbers must be in XXX-XXX-XXXX format.\"\nmsgstr \"Telefonní číslo musí být ve tvaru XXX-XXX-XXXX.\"\n\n#: ca/forms.py:69\nmsgid \"Enter a Canadian province or territory.\"\nmsgstr \"Zadejte kanadskou provincii nebo teritorium.\"\n\n#: ca/forms.py:110\nmsgid \"Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.\"\nmsgstr \"\"\n\"Zadejte platné kanadské číslo soc. pojištění (SID) ve tvaru XXX-XXX-XXX.\"\n\n#: ch/ch_states.py:5\nmsgid \"Aargau\"\nmsgstr \"Aargau\"\n\n#: ch/ch_states.py:6\nmsgid \"Appenzell Innerrhoden\"\nmsgstr \"Appenzell Innerrhoden\"\n\n#: ch/ch_states.py:7\nmsgid \"Appenzell Ausserrhoden\"\nmsgstr \"Appenzell Ausserrhoden\"\n\n#: ch/ch_states.py:8\nmsgid \"Basel-Stadt\"\nmsgstr \"Basilej-město\"\n\n#: ch/ch_states.py:9\nmsgid \"Basel-Land\"\nmsgstr \"Basilej-venkov\"\n\n#: ch/ch_states.py:10\nmsgid \"Berne\"\nmsgstr \"Bern\"\n\n#: ch/ch_states.py:11\nmsgid \"Fribourg\"\nmsgstr \"Fribourg\"\n\n#: ch/ch_states.py:12\nmsgid \"Geneva\"\nmsgstr \"Ženeva\"\n\n#: ch/ch_states.py:13\nmsgid \"Glarus\"\nmsgstr \"Glarus\"\n\n#: ch/ch_states.py:14\nmsgid \"Graubuenden\"\nmsgstr \"Graubünden\"\n\n#: ch/ch_states.py:15\nmsgid \"Jura\"\nmsgstr \"Jura\"\n\n#: ch/ch_states.py:16\nmsgid \"Lucerne\"\nmsgstr \"Lucern\"\n\n#: ch/ch_states.py:17\nmsgid \"Neuchatel\"\nmsgstr \"Neuchâtel\"\n\n#: ch/ch_states.py:18\nmsgid \"Nidwalden\"\nmsgstr \"Nidwalden\"\n\n#: ch/ch_states.py:19\nmsgid \"Obwalden\"\nmsgstr \"Obwalden\"\n\n#: ch/ch_states.py:20\nmsgid \"Schaffhausen\"\nmsgstr \"Schaffhausen\"\n\n#: ch/ch_states.py:21\nmsgid \"Schwyz\"\nmsgstr \"Schwyz\"\n\n#: ch/ch_states.py:22\nmsgid \"Solothurn\"\nmsgstr \"Solothurn\"\n\n#: ch/ch_states.py:23\nmsgid \"St. Gallen\"\nmsgstr \"St. Gallen\"\n\n#: ch/ch_states.py:24\nmsgid \"Thurgau\"\nmsgstr \"Thurgau\"\n\n#: ch/ch_states.py:25\nmsgid \"Ticino\"\nmsgstr \"Ticino\"\n\n#: ch/ch_states.py:26\nmsgid \"Uri\"\nmsgstr \"Uri\"\n\n#: ch/ch_states.py:27\nmsgid \"Valais\"\nmsgstr \"Valais\"\n\n#: ch/ch_states.py:28\nmsgid \"Vaud\"\nmsgstr \"Vaud\"\n\n#: ch/ch_states.py:29\nmsgid \"Zug\"\nmsgstr \"Zug\"\n\n#: ch/ch_states.py:30\nmsgid \"Zurich\"\nmsgstr \"Curych\"\n\n#: ch/forms.py:37\nmsgid \"Phone numbers must be in 0XX XXX XX XX format.\"\nmsgstr \"Telefonní čísla musejí být ve tvaru 0XX XXX XX XX.\"\n\n#: ch/forms.py:68\nmsgid \"\"\n\"Enter a valid Swiss identity or passport card number in X1234567<0 or \"\n\"1234567890 format.\"\nmsgstr \"\"\n\"Zadejte platné švýcarské identifikační číslo nebo číslo cestovního pasu ve \"\n\"tvaru X1234567<0 nebo 1234567890.\"\n\n#: cl/forms.py:32\nmsgid \"Enter a valid Chilean RUT.\"\nmsgstr \"Zadejte platné chilské RUT.\"\n\n#: cl/forms.py:33\nmsgid \"Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.\"\nmsgstr \"Zadejte platné chilské RUT ve tvaru XX.XXX.XXX-X.\"\n\n#: cl/forms.py:34\nmsgid \"The Chilean RUT is not valid.\"\nmsgstr \"Neplatné RUT.\"\n\n#: cn/forms.py:84\nmsgid \"Enter a post code in the format XXXXXX.\"\nmsgstr \"Zadejte poštovní číslo ve tvaru XXXXXX.\"\n\n#: cn/forms.py:105\nmsgid \"ID Card Number consists of 15 or 18 digits.\"\nmsgstr \"Číslo identifikačního průkazu má 15 nebo 18 číslic.\"\n\n#: cn/forms.py:106\nmsgid \"Invalid ID Card Number: Wrong checksum\"\nmsgstr \"Neplatné číslo identifikačního průkazu: Špatný kontrolní součet\"\n\n#: cn/forms.py:107\nmsgid \"Invalid ID Card Number: Wrong birthdate\"\nmsgstr \"Neplatné číslo identifikačního průkazu: Špatné datum narození\"\n\n#: cn/forms.py:108\nmsgid \"Invalid ID Card Number: Wrong location code\"\nmsgstr \"Neplatné číslo identifikačního průkazu: Špatný kód oblasti\"\n\n#: cn/forms.py:193\nmsgid \"Enter a valid phone number.\"\nmsgstr \"Zadejte platné telefonní číslo.\"\n\n#: cn/forms.py:210\nmsgid \"Enter a valid cell number.\"\nmsgstr \"Zadejte platné číslo buňky.\"\n\n#: cz/cz_regions.py:8\nmsgid \"Prague\"\nmsgstr \"Praha\"\n\n#: cz/cz_regions.py:9\nmsgid \"Central Bohemian Region\"\nmsgstr \"Středočeský kraj\"\n\n#: cz/cz_regions.py:10\nmsgid \"South Bohemian Region\"\nmsgstr \"Jihočeský kraj\"\n\n#: cz/cz_regions.py:11\nmsgid \"Pilsen Region\"\nmsgstr \"Plzeňský kraj\"\n\n#: cz/cz_regions.py:12\nmsgid \"Carlsbad Region\"\nmsgstr \"Karlovarský kraj\"\n\n#: cz/cz_regions.py:13\nmsgid \"Usti Region\"\nmsgstr \"Ústecký kraj\"\n\n#: cz/cz_regions.py:14\nmsgid \"Liberec Region\"\nmsgstr \"Liberecký kraj\"\n\n#: cz/cz_regions.py:15\nmsgid \"Hradec Region\"\nmsgstr \"Královéhradecký kraj\"\n\n#: cz/cz_regions.py:16\nmsgid \"Pardubice Region\"\nmsgstr \"Pardubický kraj\"\n\n#: cz/cz_regions.py:17\nmsgid \"Vysocina Region\"\nmsgstr \"Vysočina\"\n\n#: cz/cz_regions.py:18\nmsgid \"South Moravian Region\"\nmsgstr \"Jihomoravský kraj\"\n\n#: cz/cz_regions.py:19\nmsgid \"Olomouc Region\"\nmsgstr \"Olomoucký kraj\"\n\n#: cz/cz_regions.py:20\nmsgid \"Zlin Region\"\nmsgstr \"Zlínský kraj\"\n\n#: cz/cz_regions.py:21\nmsgid \"Moravian-Silesian Region\"\nmsgstr \"Moravskoslezský kraj\"\n\n#: cz/forms.py:32 sk/forms.py:33\nmsgid \"Enter a postal code in the format XXXXX or XXX XX.\"\nmsgstr \"Zadejte poštovní směrovací číslo ve tvaru XXXXX nebo XXX XX.\"\n\n#: cz/forms.py:52\nmsgid \"Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.\"\nmsgstr \"Zadejte rodné číslo ve tvaru XXXXXX/XXXX nebo XXXXXXXXXX.\"\n\n#: cz/forms.py:53\nmsgid \"Enter a valid birth number.\"\nmsgstr \"Zadejte platné rodné číslo.\"\n\n#: cz/forms.py:102\nmsgid \"Enter a valid IC number.\"\nmsgstr \"Zadejte platné IČ.\"\n\n#: de/de_states.py:5\nmsgid \"Baden-Wuerttemberg\"\nmsgstr \"Bádensko-Württembersko\"\n\n#: de/de_states.py:6\nmsgid \"Bavaria\"\nmsgstr \"Bavorsko\"\n\n#: de/de_states.py:7\nmsgid \"Berlin\"\nmsgstr \"Berlín\"\n\n#: de/de_states.py:8\nmsgid \"Brandenburg\"\nmsgstr \"Braniborsko\"\n\n#: de/de_states.py:9\nmsgid \"Bremen\"\nmsgstr \"Brémy\"\n\n#: de/de_states.py:10\nmsgid \"Hamburg\"\nmsgstr \"Hamburk\"\n\n#: de/de_states.py:11\nmsgid \"Hessen\"\nmsgstr \"Hesensko\"\n\n#: de/de_states.py:12\nmsgid \"Mecklenburg-Western Pomerania\"\nmsgstr \"Meklenbursko-Přední Pomořansko\"\n\n#: de/de_states.py:13\nmsgid \"Lower Saxony\"\nmsgstr \"Dolní Sasko\"\n\n#: de/de_states.py:14\nmsgid \"North Rhine-Westphalia\"\nmsgstr \"Severní Porýní-Vestfálsko\"\n\n#: de/de_states.py:15\nmsgid \"Rhineland-Palatinate\"\nmsgstr \"Porýní-Falc\"\n\n#: de/de_states.py:16\nmsgid \"Saarland\"\nmsgstr \"Sársko\"\n\n#: de/de_states.py:17\nmsgid \"Saxony\"\nmsgstr \"Sasko\"\n\n#: de/de_states.py:18\nmsgid \"Saxony-Anhalt\"\nmsgstr \"Sasko-Anhaltsko\"\n\n#: de/de_states.py:19\nmsgid \"Schleswig-Holstein\"\nmsgstr \"Šlesvicko-Holštýnsko\"\n\n#: de/de_states.py:20\nmsgid \"Thuringia\"\nmsgstr \"Durynsko\"\n\n#: de/forms.py:20 fi/forms.py:18 fr/forms.py:20\nmsgid \"Enter a zip code in the format XXXXX.\"\nmsgstr \"Zadejte poštovní směrovací číslo ve tvaru XXXXX.\"\n\n#: de/forms.py:46\nmsgid \"\"\n\"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"format.\"\nmsgstr \"\"\n\"Zadejte platné německé identifikační číslo ve tvaru XXXXXXXXXXX-XXXXXXX-\"\n\"XXXXXXX-X.\"\n\n#: es/es_provinces.py:5\nmsgid \"Araba\"\nmsgstr \"Araba\"\n\n#: es/es_provinces.py:6\nmsgid \"Albacete\"\nmsgstr \"Albacete\"\n\n#: es/es_provinces.py:7\nmsgid \"Alacant\"\nmsgstr \"Alacant\"\n\n#: es/es_provinces.py:8\nmsgid \"Almeria\"\nmsgstr \"Almería\"\n\n#: es/es_provinces.py:9\nmsgid \"Avila\"\nmsgstr \"Ávila\"\n\n#: es/es_provinces.py:10\nmsgid \"Badajoz\"\nmsgstr \"Badajoz\"\n\n#: es/es_provinces.py:11\nmsgid \"Illes Balears\"\nmsgstr \"Baleáry\"\n\n#: es/es_provinces.py:12\nmsgid \"Barcelona\"\nmsgstr \"Barcelona\"\n\n#: es/es_provinces.py:13\nmsgid \"Burgos\"\nmsgstr \"Burgos\"\n\n#: es/es_provinces.py:14\nmsgid \"Caceres\"\nmsgstr \"Caceres\"\n\n#: es/es_provinces.py:15\nmsgid \"Cadiz\"\nmsgstr \"Cádiz\"\n\n#: es/es_provinces.py:16\nmsgid \"Castello\"\nmsgstr \"Castellón\"\n\n#: es/es_provinces.py:17\nmsgid \"Ciudad Real\"\nmsgstr \"Ciudad Real\"\n\n#: es/es_provinces.py:18\nmsgid \"Cordoba\"\nmsgstr \"Córdoba\"\n\n#: es/es_provinces.py:19\nmsgid \"A Coruna\"\nmsgstr \"A Coruña\"\n\n#: es/es_provinces.py:20\nmsgid \"Cuenca\"\nmsgstr \"Cuenca\"\n\n#: es/es_provinces.py:21\nmsgid \"Girona\"\nmsgstr \"Girona\"\n\n#: es/es_provinces.py:22\nmsgid \"Granada\"\nmsgstr \"Granada\"\n\n#: es/es_provinces.py:23\nmsgid \"Guadalajara\"\nmsgstr \"Guadalajara\"\n\n#: es/es_provinces.py:24\nmsgid \"Guipuzkoa\"\nmsgstr \"Guipúzcoa\"\n\n#: es/es_provinces.py:25\nmsgid \"Huelva\"\nmsgstr \"Huelva\"\n\n#: es/es_provinces.py:26\nmsgid \"Huesca\"\nmsgstr \"Huesca\"\n\n#: es/es_provinces.py:27\nmsgid \"Jaen\"\nmsgstr \"Jaén\"\n\n#: es/es_provinces.py:28\nmsgid \"Leon\"\nmsgstr \"León\"\n\n#: es/es_provinces.py:29\nmsgid \"Lleida\"\nmsgstr \"Lérida\"\n\n#: es/es_provinces.py:30 es/es_regions.py:17\nmsgid \"La Rioja\"\nmsgstr \"La Rioja\"\n\n#: es/es_provinces.py:31\nmsgid \"Lugo\"\nmsgstr \"Lugo\"\n\n#: es/es_provinces.py:32 es/es_regions.py:18\nmsgid \"Madrid\"\nmsgstr \"Madrid\"\n\n#: es/es_provinces.py:33\nmsgid \"Malaga\"\nmsgstr \"Málaga\"\n\n#: es/es_provinces.py:34\nmsgid \"Murcia\"\nmsgstr \"Murcie\"\n\n#: es/es_provinces.py:35\nmsgid \"Navarre\"\nmsgstr \"Navarra\"\n\n#: es/es_provinces.py:36\nmsgid \"Ourense\"\nmsgstr \"Orense\"\n\n#: es/es_provinces.py:37\nmsgid \"Asturias\"\nmsgstr \"Asturie\"\n\n#: es/es_provinces.py:38\nmsgid \"Palencia\"\nmsgstr \"Palencia\"\n\n#: es/es_provinces.py:39\nmsgid \"Las Palmas\"\nmsgstr \"Las Palmas\"\n\n#: es/es_provinces.py:40\nmsgid \"Pontevedra\"\nmsgstr \"Pontevedra\"\n\n#: es/es_provinces.py:41\nmsgid \"Salamanca\"\nmsgstr \"Salamanca\"\n\n#: es/es_provinces.py:42\nmsgid \"Santa Cruz de Tenerife\"\nmsgstr \"Santa Cruz de Tenerife\"\n\n#: es/es_provinces.py:43 es/es_regions.py:11\nmsgid \"Cantabria\"\nmsgstr \"Kantábrie\"\n\n#: es/es_provinces.py:44\nmsgid \"Segovia\"\nmsgstr \"Segovia\"\n\n#: es/es_provinces.py:45\nmsgid \"Seville\"\nmsgstr \"Sevilla\"\n\n#: es/es_provinces.py:46\nmsgid \"Soria\"\nmsgstr \"Soria\"\n\n#: es/es_provinces.py:47\nmsgid \"Tarragona\"\nmsgstr \"Tarragona\"\n\n#: es/es_provinces.py:48\nmsgid \"Teruel\"\nmsgstr \"Teruel\"\n\n#: es/es_provinces.py:49\nmsgid \"Toledo\"\nmsgstr \"Toledo\"\n\n#: es/es_provinces.py:50\nmsgid \"Valencia\"\nmsgstr \"Valencie\"\n\n#: es/es_provinces.py:51\nmsgid \"Valladolid\"\nmsgstr \"Valladolid\"\n\n#: es/es_provinces.py:52\nmsgid \"Bizkaia\"\nmsgstr \"Biskajsko\"\n\n#: es/es_provinces.py:53\nmsgid \"Zamora\"\nmsgstr \"Zamora\"\n\n#: es/es_provinces.py:54\nmsgid \"Zaragoza\"\nmsgstr \"Zaragoza\"\n\n#: es/es_provinces.py:55\nmsgid \"Ceuta\"\nmsgstr \"Ceuta\"\n\n#: es/es_provinces.py:56\nmsgid \"Melilla\"\nmsgstr \"Melilla\"\n\n#: es/es_regions.py:5\nmsgid \"Andalusia\"\nmsgstr \"Andalusie\"\n\n#: es/es_regions.py:6\nmsgid \"Aragon\"\nmsgstr \"Aragonie\"\n\n#: es/es_regions.py:7\nmsgid \"Principality of Asturias\"\nmsgstr \"Asturské knížectví\"\n\n#: es/es_regions.py:8\nmsgid \"Balearic Islands\"\nmsgstr \"Baleáry\"\n\n#: es/es_regions.py:9\nmsgid \"Basque Country\"\nmsgstr \"Baskicko\"\n\n#: es/es_regions.py:10\nmsgid \"Canary Islands\"\nmsgstr \"Kanárské ostrovy\"\n\n#: es/es_regions.py:12\nmsgid \"Castile-La Mancha\"\nmsgstr \"Kastilie-La Mancha\"\n\n#: es/es_regions.py:13\nmsgid \"Castile and Leon\"\nmsgstr \"Kastilie a León\"\n\n#: es/es_regions.py:14\nmsgid \"Catalonia\"\nmsgstr \"Katalánsko\"\n\n#: es/es_regions.py:15\nmsgid \"Extremadura\"\nmsgstr \"Extremadura\"\n\n#: es/es_regions.py:16\nmsgid \"Galicia\"\nmsgstr \"Galicie\"\n\n#: es/es_regions.py:19\nmsgid \"Region of Murcia\"\nmsgstr \"Murcie\"\n\n#: es/es_regions.py:20\nmsgid \"Foral Community of Navarre\"\nmsgstr \"Navarra\"\n\n#: es/es_regions.py:21\nmsgid \"Valencian Community\"\nmsgstr \"Valencie\"\n\n#: es/forms.py:26\nmsgid \"Enter a valid postal code in the range and format 01XXX - 52XXX.\"\nmsgstr \"Zadejte platné poštovní směrovací číslo ve tvaru 01XXX - 52XXX.\"\n\n#: es/forms.py:46\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or \"\n\"9XXXXXXXX.\"\nmsgstr \"\"\n\"Zadejte platné telefonní číslo v jednom ze tvarů 6XXXXXXXX, 8XXXXXXXX nebo \"\n\"9XXXXXXXX.\"\n\n#: es/forms.py:73\nmsgid \"Please enter a valid NIF, NIE, or CIF.\"\nmsgstr \"Zadejte platné hodnoty NIF, NIE nebo CIF.\"\n\n#: es/forms.py:74\nmsgid \"Please enter a valid NIF or NIE.\"\nmsgstr \"Zadejte platné hodnoty NIF nebo NIE.\"\n\n#: es/forms.py:75\nmsgid \"Invalid checksum for NIF.\"\nmsgstr \"Neplatný kontrolní součet pro NIF.\"\n\n#: es/forms.py:76\nmsgid \"Invalid checksum for NIE.\"\nmsgstr \"Neplatný kontrolní součet pro NIE.\"\n\n#: es/forms.py:77\nmsgid \"Invalid checksum for CIF.\"\nmsgstr \"Neplatný kontrolní součet pro CIF.\"\n\n#: es/forms.py:149\nmsgid \"\"\n\"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.\"\nmsgstr \"Zadejte platné číslo bankovního účtu ve tvaru XXXX-XXXX-XX-XXXXXXXXXX.\"\n\n#: es/forms.py:150\nmsgid \"Invalid checksum for bank account number.\"\nmsgstr \"Neplatný kontrolní součet pro číslo bankovního účtu.\"\n\n#: fi/forms.py:33\nmsgid \"Enter a valid Finnish social security number.\"\nmsgstr \"Zadejte platné finské rodné číslo.\"\n\n#: fr/forms.py:35\nmsgid \"Phone numbers must be in 0X XX XX XX XX format.\"\nmsgstr \"Telefonní číslo musí být ve tvaru 0X XX XX XX XX.\"\n\n#: gb/forms.py:25\nmsgid \"Enter a valid postcode.\"\nmsgstr \"Zadejte platné poštovní směrovací číslo.\"\n\n#: gb/gb_regions.py:11\nmsgid \"Bedfordshire\"\nmsgstr \"Bedfordshire\"\n\n#: gb/gb_regions.py:12\nmsgid \"Buckinghamshire\"\nmsgstr \"Buckinghamshire\"\n\n#: gb/gb_regions.py:14\nmsgid \"Cheshire\"\nmsgstr \"Cheshire\"\n\n#: gb/gb_regions.py:15\nmsgid \"Cornwall and Isles of Scilly\"\nmsgstr \"Cornwall\"\n\n#: gb/gb_regions.py:16\nmsgid \"Cumbria\"\nmsgstr \"Cumbria\"\n\n#: gb/gb_regions.py:17\nmsgid \"Derbyshire\"\nmsgstr \"Derbyshire\"\n\n#: gb/gb_regions.py:18\nmsgid \"Devon\"\nmsgstr \"Devon\"\n\n#: gb/gb_regions.py:19\nmsgid \"Dorset\"\nmsgstr \"Dorset\"\n\n#: gb/gb_regions.py:20\nmsgid \"Durham\"\nmsgstr \"Durham\"\n\n#: gb/gb_regions.py:21\nmsgid \"East Sussex\"\nmsgstr \"East Sussex\"\n\n#: gb/gb_regions.py:22\nmsgid \"Essex\"\nmsgstr \"Essex\"\n\n#: gb/gb_regions.py:23\nmsgid \"Gloucestershire\"\nmsgstr \"Gloucestershire\"\n\n#: gb/gb_regions.py:24\nmsgid \"Greater London\"\nmsgstr \"Velký Londýn\"\n\n#: gb/gb_regions.py:25\nmsgid \"Greater Manchester\"\nmsgstr \"Velký Manchester\"\n\n#: gb/gb_regions.py:26\nmsgid \"Hampshire\"\nmsgstr \"Hampshire\"\n\n#: gb/gb_regions.py:27\nmsgid \"Hertfordshire\"\nmsgstr \"Hertfordshire\"\n\n#: gb/gb_regions.py:28\nmsgid \"Kent\"\nmsgstr \"Kent\"\n\n#: gb/gb_regions.py:29\nmsgid \"Lancashire\"\nmsgstr \"Lancashire\"\n\n#: gb/gb_regions.py:30\nmsgid \"Leicestershire\"\nmsgstr \"Leicestershire\"\n\n#: gb/gb_regions.py:31\nmsgid \"Lincolnshire\"\nmsgstr \"Lincolnshire\"\n\n#: gb/gb_regions.py:32\nmsgid \"Merseyside\"\nmsgstr \"Merseyside\"\n\n#: gb/gb_regions.py:33\nmsgid \"Norfolk\"\nmsgstr \"Norfolk\"\n\n#: gb/gb_regions.py:34\nmsgid \"North Yorkshire\"\nmsgstr \"North Yorkshire\"\n\n#: gb/gb_regions.py:35\nmsgid \"Northamptonshire\"\nmsgstr \"Northamptonshire\"\n\n#: gb/gb_regions.py:36\nmsgid \"Northumberland\"\nmsgstr \"Northumberland\"\n\n#: gb/gb_regions.py:37\nmsgid \"Nottinghamshire\"\nmsgstr \"Nottinghamshire\"\n\n#: gb/gb_regions.py:38\nmsgid \"Oxfordshire\"\nmsgstr \"Oxfordshire\"\n\n#: gb/gb_regions.py:39\nmsgid \"Shropshire\"\nmsgstr \"Shropshire\"\n\n#: gb/gb_regions.py:40\nmsgid \"Somerset\"\nmsgstr \"Somerset\"\n\n#: gb/gb_regions.py:41\nmsgid \"South Yorkshire\"\nmsgstr \"South Yorkshire\"\n\n#: gb/gb_regions.py:42\nmsgid \"Staffordshire\"\nmsgstr \"Staffordshire\"\n\n#: gb/gb_regions.py:43\nmsgid \"Suffolk\"\nmsgstr \"Suffolk\"\n\n#: gb/gb_regions.py:44\nmsgid \"Surrey\"\nmsgstr \"Surrey\"\n\n#: gb/gb_regions.py:45\nmsgid \"Tyne and Wear\"\nmsgstr \"Tyne a Wear\"\n\n#: gb/gb_regions.py:46\nmsgid \"Warwickshire\"\nmsgstr \"Warwickshire\"\n\n#: gb/gb_regions.py:47\nmsgid \"West Midlands\"\nmsgstr \"West Midlands\"\n\n#: gb/gb_regions.py:48\nmsgid \"West Sussex\"\nmsgstr \"West Sussex\"\n\n#: gb/gb_regions.py:49\nmsgid \"West Yorkshire\"\nmsgstr \"West Yorkshire\"\n\n#: gb/gb_regions.py:50\nmsgid \"Wiltshire\"\nmsgstr \"Wiltshire\"\n\n#: gb/gb_regions.py:51\nmsgid \"Worcestershire\"\nmsgstr \"Worcestershire\"\n\n#: gb/gb_regions.py:55\nmsgid \"County Antrim\"\nmsgstr \"County Antrim\"\n\n#: gb/gb_regions.py:56\nmsgid \"County Armagh\"\nmsgstr \"County Armagh\"\n\n#: gb/gb_regions.py:57\nmsgid \"County Down\"\nmsgstr \"County Down\"\n\n#: gb/gb_regions.py:58\nmsgid \"County Fermanagh\"\nmsgstr \"County Fermanagh\"\n\n#: gb/gb_regions.py:59\nmsgid \"County Londonderry\"\nmsgstr \"County Londonderry\"\n\n#: gb/gb_regions.py:60\nmsgid \"County Tyrone\"\nmsgstr \"County Tyrone\"\n\n#: gb/gb_regions.py:64\nmsgid \"Clwyd\"\nmsgstr \"Clwyd\"\n\n#: gb/gb_regions.py:65\nmsgid \"Dyfed\"\nmsgstr \"Dyfed\"\n\n#: gb/gb_regions.py:66\nmsgid \"Gwent\"\nmsgstr \"Gwent\"\n\n#: gb/gb_regions.py:67\nmsgid \"Gwynedd\"\nmsgstr \"Gwynedd\"\n\n#: gb/gb_regions.py:68\nmsgid \"Mid Glamorgan\"\nmsgstr \"Mid Glamorgan\"\n\n#: gb/gb_regions.py:69\nmsgid \"Powys\"\nmsgstr \"Powys\"\n\n#: gb/gb_regions.py:70\nmsgid \"South Glamorgan\"\nmsgstr \"South Glamorgan\"\n\n#: gb/gb_regions.py:71\nmsgid \"West Glamorgan\"\nmsgstr \"West Glamorgan\"\n\n#: gb/gb_regions.py:75\nmsgid \"Borders\"\nmsgstr \"Borders\"\n\n#: gb/gb_regions.py:76\nmsgid \"Central Scotland\"\nmsgstr \"Střední Skotsko\"\n\n#: gb/gb_regions.py:77\nmsgid \"Dumfries and Galloway\"\nmsgstr \"Dumfries a Galloway\"\n\n#: gb/gb_regions.py:78\nmsgid \"Fife\"\nmsgstr \"Fife\"\n\n#: gb/gb_regions.py:79\nmsgid \"Grampian\"\nmsgstr \"Grampian\"\n\n#: gb/gb_regions.py:80\nmsgid \"Highland\"\nmsgstr \"Highland\"\n\n#: gb/gb_regions.py:81\nmsgid \"Lothian\"\nmsgstr \"Lothian\"\n\n#: gb/gb_regions.py:82\nmsgid \"Orkney Islands\"\nmsgstr \"Orkneje\"\n\n#: gb/gb_regions.py:83\nmsgid \"Shetland Islands\"\nmsgstr \"Shetlandy\"\n\n#: gb/gb_regions.py:84\nmsgid \"Strathclyde\"\nmsgstr \"Strathclyde\"\n\n#: gb/gb_regions.py:85\nmsgid \"Tayside\"\nmsgstr \"Tayside\"\n\n#: gb/gb_regions.py:86\nmsgid \"Western Isles\"\nmsgstr \"Západní ostrovy\"\n\n#: gb/gb_regions.py:90\nmsgid \"England\"\nmsgstr \"Anglie\"\n\n#: gb/gb_regions.py:91\nmsgid \"Northern Ireland\"\nmsgstr \"Severní Irsko\"\n\n#: gb/gb_regions.py:92\nmsgid \"Scotland\"\nmsgstr \"Skotsko\"\n\n#: gb/gb_regions.py:93\nmsgid \"Wales\"\nmsgstr \"Wales\"\n\n#: hk/forms.py:37\n#, python-format\nmsgid \"Phone number should not start with one of the followings: %s.\"\nmsgstr \"Telefonní čísla by neměla začínat jedním z následujícího: %s\"\n\n#: hk/forms.py:40\n#, python-format\nmsgid \"Phone number must be in one of the following formats: %s.\"\nmsgstr \"Telefonní číslo musí být v jednom z následujících tvarů: %s\"\n\n#: hk/forms.py:42\n#, python-format\nmsgid \"Phone number should start with one of the followings: %s.\"\nmsgstr \"Telefonní číslo musí začínat jedním z následujícího: %s\"\n\n#: hr/forms.py:76\nmsgid \"Enter a valid 13 digit JMBG\"\nmsgstr \"Zadejte platné JMBG o 13 číslicích.\"\n\n#: hr/forms.py:77\nmsgid \"Error in date segment\"\nmsgstr \"Chybný segment data\"\n\n#: hr/forms.py:123\nmsgid \"Enter a valid 11 digit OIB\"\nmsgstr \"Zadejte jedenáctimístné číslo OIB\"\n\n#: hr/forms.py:152 id/forms.py:112\nmsgid \"Enter a valid vehicle license plate number\"\nmsgstr \"Vložte platné číslo poznávací značky vozu\"\n\n#: hr/forms.py:153\nmsgid \"Enter a valid location code\"\nmsgstr \"Zadejte platný kód oblasti\"\n\n#: hr/forms.py:154\nmsgid \"Number part cannot be zero\"\nmsgstr \"Číselná část nesmí být nulová.\"\n\n#: hr/forms.py:190\nmsgid \"Enter a valid 5 digit postal code\"\nmsgstr \"Zadejte platné pětimístné poštovní směrovací číslo.\"\n\n#: hr/forms.py:218 id/forms.py:72 nl/forms.py:56\nmsgid \"Enter a valid phone number\"\nmsgstr \"Zadejte platné telefonní číslo\"\n\n#: hr/forms.py:219\nmsgid \"Enter a valid area or mobile network code\"\nmsgstr \"Zadejte platnou oblast nebo kód mobilní sítě.\"\n\n#: hr/forms.py:220\nmsgid \"The phone nubmer is too long\"\nmsgstr \"Telefonní číslo je příliš dlouhé.\"\n\n#: hr/forms.py:258\nmsgid \"Enter a valid 19 digit JMBAG starting with 601983\"\nmsgstr \"Zadejte platné 19imístné JMBAG začínající na 601983.\"\n\n#: hr/forms.py:259\nmsgid \"Card issue number cannot be zero\"\nmsgstr \"Číslo vydání karty nemůže být nula\"\n\n#: hr/hr_choices.py:14\nmsgid \"Grad Zagreb\"\nmsgstr \"Grad Zagreb\"\n\n#: hr/hr_choices.py:15\nmsgid \"Bjelovarsko-bilogorska županija\"\nmsgstr \"Bjelovarsko-bilogorská župa\"\n\n#: hr/hr_choices.py:16\nmsgid \"Brodsko-posavska županija\"\nmsgstr \"Brodsko-posávská župa\"\n\n#: hr/hr_choices.py:17\nmsgid \"Dubrovačko-neretvanska županija\"\nmsgstr \"Dubrovnicko-neretvanská župa\"\n\n#: hr/hr_choices.py:18\nmsgid \"Istarska županija\"\nmsgstr \"Istrijská župa\"\n\n#: hr/hr_choices.py:19\nmsgid \"Karlovačka županija\"\nmsgstr \"Karlovacká župa\"\n\n#: hr/hr_choices.py:20\nmsgid \"Koprivničko-križevačka županija\"\nmsgstr \"Koprivnicko-križevecká župa\"\n\n#: hr/hr_choices.py:21\nmsgid \"Krapinsko-zagorska županija\"\nmsgstr \"Krapinsko-zagorská župa\"\n\n#: hr/hr_choices.py:22\nmsgid \"Ličko-senjska županija\"\nmsgstr \"Licko-senjská župa\"\n\n#: hr/hr_choices.py:23\nmsgid \"Međimurska županija\"\nmsgstr \"Mezimuřská župa\"\n\n#: hr/hr_choices.py:24\nmsgid \"Osječko-baranjska županija\"\nmsgstr \"Osijecko-baranjská župa\"\n\n#: hr/hr_choices.py:25\nmsgid \"Požeško-slavonska županija\"\nmsgstr \"Požežsko-slavonská župa\"\n\n#: hr/hr_choices.py:26\nmsgid \"Primorsko-goranska županija\"\nmsgstr \"Přímořsko-gorskokotarská župa\"\n\n#: hr/hr_choices.py:27\nmsgid \"Sisačko-moslavačka županija\"\nmsgstr \"Sisacko-moslavinská župa\"\n\n#: hr/hr_choices.py:28\nmsgid \"Splitsko-dalmatinska županija\"\nmsgstr \"Splitsko-dalmatská župa\"\n\n#: hr/hr_choices.py:29\nmsgid \"Šibensko-kninska županija\"\nmsgstr \"Šibenicko-kninská župa\"\n\n#: hr/hr_choices.py:30\nmsgid \"Varaždinska županija\"\nmsgstr \"Varaždinská župa\"\n\n#: hr/hr_choices.py:31\nmsgid \"Virovitičko-podravska županija\"\nmsgstr \"Viroviticko-podrávská župa\"\n\n#: hr/hr_choices.py:32\nmsgid \"Vukovarsko-srijemska županija\"\nmsgstr \"Vukovarsko-sremská župa\"\n\n#: hr/hr_choices.py:33\nmsgid \"Zadarska županija\"\nmsgstr \"Zadarská župa\"\n\n#: hr/hr_choices.py:34\nmsgid \"Zagrebačka županija\"\nmsgstr \"Záhřebská župa\"\n\n#: id/forms.py:31\nmsgid \"Enter a valid post code\"\nmsgstr \"Zadejte platné poštovní směrovací číslo.\"\n\n#: id/forms.py:176\nmsgid \"Enter a valid NIK/KTP number\"\nmsgstr \"Vložte platné číslo NIK/KTP\"\n\n#: id/id_choices.py:15\nmsgid \"Aceh\"\nmsgstr \"Aceh\"\n\n#: id/id_choices.py:16 id/id_choices.py:79\nmsgid \"Bali\"\nmsgstr \"Bali\"\n\n#: id/id_choices.py:17 id/id_choices.py:51\nmsgid \"Banten\"\nmsgstr \"Banten\"\n\n#: id/id_choices.py:18 id/id_choices.py:60\nmsgid \"Bengkulu\"\nmsgstr \"Bengkulu\"\n\n#: id/id_choices.py:19 id/id_choices.py:53\nmsgid \"Yogyakarta\"\nmsgstr \"Yogyakarta\"\n\n#: id/id_choices.py:20 id/id_choices.py:57\nmsgid \"Jakarta\"\nmsgstr \"Jakarta\"\n\n#: id/id_choices.py:21 id/id_choices.py:81\nmsgid \"Gorontalo\"\nmsgstr \"Gorontalo\"\n\n#: id/id_choices.py:22 id/id_choices.py:63\nmsgid \"Jambi\"\nmsgstr \"Jambi\"\n\n#: id/id_choices.py:23\nmsgid \"Jawa Barat\"\nmsgstr \"Jawa Barat\"\n\n#: id/id_choices.py:24\nmsgid \"Jawa Tengah\"\nmsgstr \"Jawa Tengah\"\n\n#: id/id_choices.py:25\nmsgid \"Jawa Timur\"\nmsgstr \"Jawa Timur\"\n\n#: id/id_choices.py:26 id/id_choices.py:94\nmsgid \"Kalimantan Barat\"\nmsgstr \"Kalimantan Barat\"\n\n#: id/id_choices.py:27 id/id_choices.py:72\nmsgid \"Kalimantan Selatan\"\nmsgstr \"Kalimantan Selatan\"\n\n#: id/id_choices.py:28 id/id_choices.py:95\nmsgid \"Kalimantan Tengah\"\nmsgstr \"Kalimantan Tengah\"\n\n#: id/id_choices.py:29 id/id_choices.py:96\nmsgid \"Kalimantan Timur\"\nmsgstr \"Kalimantan Timur\"\n\n#: id/id_choices.py:30\nmsgid \"Kepulauan Bangka-Belitung\"\nmsgstr \"Kepulauan Bangka-Belitung\"\n\n#: id/id_choices.py:31 id/id_choices.py:68\nmsgid \"Kepulauan Riau\"\nmsgstr \"Kepulauan Riau\"\n\n#: id/id_choices.py:32 id/id_choices.py:61\nmsgid \"Lampung\"\nmsgstr \"Lampung\"\n\n#: id/id_choices.py:33 id/id_choices.py:76\nmsgid \"Maluku\"\nmsgstr \"Maluku\"\n\n#: id/id_choices.py:34 id/id_choices.py:77\nmsgid \"Maluku Utara\"\nmsgstr \"Maluku Utara\"\n\n#: id/id_choices.py:35\nmsgid \"Nusa Tenggara Barat\"\nmsgstr \"Nusa Tenggara Barat\"\n\n#: id/id_choices.py:36\nmsgid \"Nusa Tenggara Timur\"\nmsgstr \"Nusa Tenggara Timur\"\n\n#: id/id_choices.py:37\nmsgid \"Papua\"\nmsgstr \"Papua\"\n\n#: id/id_choices.py:38\nmsgid \"Papua Barat\"\nmsgstr \"Papua Barat\"\n\n#: id/id_choices.py:39 id/id_choices.py:66\nmsgid \"Riau\"\nmsgstr \"Riau\"\n\n#: id/id_choices.py:40 id/id_choices.py:74\nmsgid \"Sulawesi Barat\"\nmsgstr \"Sulawesi Barat\"\n\n#: id/id_choices.py:41 id/id_choices.py:75\nmsgid \"Sulawesi Selatan\"\nmsgstr \"Sulawesi Selatan\"\n\n#: id/id_choices.py:42 id/id_choices.py:82\nmsgid \"Sulawesi Tengah\"\nmsgstr \"Sulawesi Tengah\"\n\n#: id/id_choices.py:43 id/id_choices.py:85\nmsgid \"Sulawesi Tenggara\"\nmsgstr \"Sulawesi Tenggara\"\n\n#: id/id_choices.py:44\nmsgid \"Sulawesi Utara\"\nmsgstr \"Sulawesi Utara\"\n\n#: id/id_choices.py:45 id/id_choices.py:58\nmsgid \"Sumatera Barat\"\nmsgstr \"Sumatera Barat\"\n\n#: id/id_choices.py:46 id/id_choices.py:62\nmsgid \"Sumatera Selatan\"\nmsgstr \"Sumatera Selatan\"\n\n#: id/id_choices.py:47 id/id_choices.py:64\nmsgid \"Sumatera Utara\"\nmsgstr \"Sumatera Utara\"\n\n#: id/id_choices.py:52\nmsgid \"Magelang\"\nmsgstr \"Magelang\"\n\n#: id/id_choices.py:54\nmsgid \"Surakarta - Solo\"\nmsgstr \"Surakarta - Solo\"\n\n#: id/id_choices.py:55\nmsgid \"Madiun\"\nmsgstr \"Madiun\"\n\n#: id/id_choices.py:56\nmsgid \"Kediri\"\nmsgstr \"Kediri\"\n\n#: id/id_choices.py:59\nmsgid \"Tapanuli\"\nmsgstr \"Tapanuli\"\n\n#: id/id_choices.py:65\nmsgid \"Nanggroe Aceh Darussalam\"\nmsgstr \"Nanggroe Aceh Darussalam\"\n\n#: id/id_choices.py:67\nmsgid \"Kepulauan Bangka Belitung\"\nmsgstr \"Kepulauan Bangka Belitung\"\n\n#: id/id_choices.py:69\nmsgid \"Corps Consulate\"\nmsgstr \"Corps Consulate\"\n\n#: id/id_choices.py:70\nmsgid \"Corps Diplomatic\"\nmsgstr \"Corps Diplomatic\"\n\n#: id/id_choices.py:71\nmsgid \"Bandung\"\nmsgstr \"Bandung\"\n\n#: id/id_choices.py:73\nmsgid \"Sulawesi Utara Daratan\"\nmsgstr \"Sulawesi Utara Daratan\"\n\n#: id/id_choices.py:78\nmsgid \"NTT - Timor\"\nmsgstr \"NTT - Timor\"\n\n#: id/id_choices.py:80\nmsgid \"Sulawesi Utara Kepulauan\"\nmsgstr \"Sulawesi Utara Kepulauan\"\n\n#: id/id_choices.py:83\nmsgid \"NTB - Lombok\"\nmsgstr \"NTB - Lombok\"\n\n#: id/id_choices.py:84\nmsgid \"Papua dan Papua Barat\"\nmsgstr \"Papua dan Papua Barat\"\n\n#: id/id_choices.py:86\nmsgid \"Cirebon\"\nmsgstr \"Cirebon\"\n\n#: id/id_choices.py:87\nmsgid \"NTB - Sumbawa\"\nmsgstr \"NTB - Sumbawa\"\n\n#: id/id_choices.py:88\nmsgid \"NTT - Flores\"\nmsgstr \"NTT - Flores\"\n\n#: id/id_choices.py:89\nmsgid \"NTT - Sumba\"\nmsgstr \"NTT - Sumba\"\n\n#: id/id_choices.py:90\nmsgid \"Bogor\"\nmsgstr \"Bogor\"\n\n#: id/id_choices.py:91\nmsgid \"Pekalongan\"\nmsgstr \"Pekalongan\"\n\n#: id/id_choices.py:92\nmsgid \"Semarang\"\nmsgstr \"Semarang\"\n\n#: id/id_choices.py:93\nmsgid \"Pati\"\nmsgstr \"Pati\"\n\n#: id/id_choices.py:97\nmsgid \"Surabaya\"\nmsgstr \"Surabaya\"\n\n#: id/id_choices.py:98\nmsgid \"Madura\"\nmsgstr \"Madura\"\n\n#: id/id_choices.py:99\nmsgid \"Malang\"\nmsgstr \"Malang\"\n\n#: id/id_choices.py:100\nmsgid \"Jember\"\nmsgstr \"Jember\"\n\n#: id/id_choices.py:101\nmsgid \"Banyumas\"\nmsgstr \"Banyumas\"\n\n#: id/id_choices.py:102\nmsgid \"Federal Government\"\nmsgstr \"Federální vláda\"\n\n#: id/id_choices.py:103\nmsgid \"Bojonegoro\"\nmsgstr \"Bojonegoro\"\n\n#: id/id_choices.py:104\nmsgid \"Purwakarta\"\nmsgstr \"Purwakarta\"\n\n#: id/id_choices.py:105\nmsgid \"Sidoarjo\"\nmsgstr \"Sidoarjo\"\n\n#: id/id_choices.py:106\nmsgid \"Garut\"\nmsgstr \"Garut\"\n\n#: ie/ie_counties.py:8\nmsgid \"Antrim\"\nmsgstr \"Antrim\"\n\n#: ie/ie_counties.py:9\nmsgid \"Armagh\"\nmsgstr \"Armagh\"\n\n#: ie/ie_counties.py:10\nmsgid \"Carlow\"\nmsgstr \"Carlow\"\n\n#: ie/ie_counties.py:11\nmsgid \"Cavan\"\nmsgstr \"Cavan\"\n\n#: ie/ie_counties.py:12\nmsgid \"Clare\"\nmsgstr \"Clare\"\n\n#: ie/ie_counties.py:13\nmsgid \"Cork\"\nmsgstr \"Cork\"\n\n#: ie/ie_counties.py:14\nmsgid \"Derry\"\nmsgstr \"Derry\"\n\n#: ie/ie_counties.py:15\nmsgid \"Donegal\"\nmsgstr \"Donegal\"\n\n#: ie/ie_counties.py:16\nmsgid \"Down\"\nmsgstr \"Down\"\n\n#: ie/ie_counties.py:17\nmsgid \"Dublin\"\nmsgstr \"Dublin\"\n\n#: ie/ie_counties.py:18\nmsgid \"Fermanagh\"\nmsgstr \"Fermanagh\"\n\n#: ie/ie_counties.py:19\nmsgid \"Galway\"\nmsgstr \"Galway\"\n\n#: ie/ie_counties.py:20\nmsgid \"Kerry\"\nmsgstr \"Kerry\"\n\n#: ie/ie_counties.py:21\nmsgid \"Kildare\"\nmsgstr \"Kildare\"\n\n#: ie/ie_counties.py:22\nmsgid \"Kilkenny\"\nmsgstr \"Kilkenny\"\n\n#: ie/ie_counties.py:23\nmsgid \"Laois\"\nmsgstr \"Laois\"\n\n#: ie/ie_counties.py:24\nmsgid \"Leitrim\"\nmsgstr \"Leitrim\"\n\n#: ie/ie_counties.py:25\nmsgid \"Limerick\"\nmsgstr \"Limerick\"\n\n#: ie/ie_counties.py:26\nmsgid \"Longford\"\nmsgstr \"Longford\"\n\n#: ie/ie_counties.py:27\nmsgid \"Louth\"\nmsgstr \"Louth\"\n\n#: ie/ie_counties.py:28\nmsgid \"Mayo\"\nmsgstr \"Mayo\"\n\n#: ie/ie_counties.py:29\nmsgid \"Meath\"\nmsgstr \"Meath\"\n\n#: ie/ie_counties.py:30\nmsgid \"Monaghan\"\nmsgstr \"Monaghan\"\n\n#: ie/ie_counties.py:31\nmsgid \"Offaly\"\nmsgstr \"Offaly\"\n\n#: ie/ie_counties.py:32\nmsgid \"Roscommon\"\nmsgstr \"Roscommon\"\n\n#: ie/ie_counties.py:33\nmsgid \"Sligo\"\nmsgstr \"Sligo\"\n\n#: ie/ie_counties.py:34\nmsgid \"Tipperary\"\nmsgstr \"Tipperary\"\n\n#: ie/ie_counties.py:35\nmsgid \"Tyrone\"\nmsgstr \"Tyrone\"\n\n#: ie/ie_counties.py:36\nmsgid \"Waterford\"\nmsgstr \"Waterford\"\n\n#: ie/ie_counties.py:37\nmsgid \"Westmeath\"\nmsgstr \"Westmeath\"\n\n#: ie/ie_counties.py:38\nmsgid \"Wexford\"\nmsgstr \"Wexford\"\n\n#: ie/ie_counties.py:39\nmsgid \"Wicklow\"\nmsgstr \"Wicklow\"\n\n#: il/forms.py:32\nmsgid \"Enter a postal code in the format XXXXX\"\nmsgstr \"Zadejte poštovní směrovací číslo ve tvaru XXXXX\"\n\n#: il/forms.py:51\nmsgid \"Enter a valid ID number.\"\nmsgstr \"Vložte platné číslo ID\"\n\n#: in_/forms.py:41\nmsgid \"Enter a zip code in the format XXXXXX or XXX XXX.\"\nmsgstr \"Zadejte kód ZIP ve tvaru XXXXXX nebo XXX XXX.\"\n\n#: in_/forms.py:64\nmsgid \"Enter an Indian state or territory.\"\nmsgstr \"Zadejte indický stát nebo teritorium.\"\n\n#: in_/forms.py:103\nmsgid \"Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.\"\nmsgstr \"Telefonní čísla musí být ve tvaru 02X-8X, 03X-7X nebo 04X-6X.\"\n\n#: is_/forms.py:22\nmsgid \"\"\n\"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.\"\nmsgstr \"Zadejte platné islandské identifikační číslo ve tvaru XXXXXX-XXXX.\"\n\n#: is_/forms.py:23\nmsgid \"The Icelandic identification number is not valid.\"\nmsgstr \"Neplatné islandské identifikační číslo.\"\n\n#: it/forms.py:21\nmsgid \"Enter a valid zip code.\"\nmsgstr \"Zadejte platné poštovní směrovací číslo.\"\n\n#: it/forms.py:48\nmsgid \"Enter a valid Social Security number.\"\nmsgstr \"Zadejte platné číslo SSN.\"\n\n#: it/forms.py:73\nmsgid \"Enter a valid VAT number.\"\nmsgstr \"Zadejte platné daňové identifikační číslo.\"\n\n#: jp/forms.py:19\nmsgid \"Enter a postal code in the format XXXXXXX or XXX-XXXX.\"\nmsgstr \"Zadejte poštovní směrovací číslo ve tvaru XXXXXXX nebo XXX-XXXX.\"\n\n#: jp/jp_prefectures.py:4\nmsgid \"Hokkaido\"\nmsgstr \"Hokkaidó\"\n\n#: jp/jp_prefectures.py:5\nmsgid \"Aomori\"\nmsgstr \"Aomori\"\n\n#: jp/jp_prefectures.py:6\nmsgid \"Iwate\"\nmsgstr \"Iwate\"\n\n#: jp/jp_prefectures.py:7\nmsgid \"Miyagi\"\nmsgstr \"Mijagi\"\n\n#: jp/jp_prefectures.py:8\nmsgid \"Akita\"\nmsgstr \"Akita\"\n\n#: jp/jp_prefectures.py:9\nmsgid \"Yamagata\"\nmsgstr \"Jamagata\"\n\n#: jp/jp_prefectures.py:10\nmsgid \"Fukushima\"\nmsgstr \"Fukušima\"\n\n#: jp/jp_prefectures.py:11\nmsgid \"Ibaraki\"\nmsgstr \"Ibaraki\"\n\n#: jp/jp_prefectures.py:12\nmsgid \"Tochigi\"\nmsgstr \"Točigi\"\n\n#: jp/jp_prefectures.py:13\nmsgid \"Gunma\"\nmsgstr \"Gunma\"\n\n#: jp/jp_prefectures.py:14\nmsgid \"Saitama\"\nmsgstr \"Saitama\"\n\n#: jp/jp_prefectures.py:15\nmsgid \"Chiba\"\nmsgstr \"Čiba\"\n\n#: jp/jp_prefectures.py:16\nmsgid \"Tokyo\"\nmsgstr \"Tokio\"\n\n#: jp/jp_prefectures.py:17\nmsgid \"Kanagawa\"\nmsgstr \"Kanagawa\"\n\n#: jp/jp_prefectures.py:18\nmsgid \"Yamanashi\"\nmsgstr \"Jamanaši\"\n\n#: jp/jp_prefectures.py:19\nmsgid \"Nagano\"\nmsgstr \"Nagano\"\n\n#: jp/jp_prefectures.py:20\nmsgid \"Niigata\"\nmsgstr \"Niigata\"\n\n#: jp/jp_prefectures.py:21\nmsgid \"Toyama\"\nmsgstr \"Tojama\"\n\n#: jp/jp_prefectures.py:22\nmsgid \"Ishikawa\"\nmsgstr \"Išikawa\"\n\n#: jp/jp_prefectures.py:23\nmsgid \"Fukui\"\nmsgstr \"Fukui\"\n\n#: jp/jp_prefectures.py:24\nmsgid \"Gifu\"\nmsgstr \"Gifu\"\n\n#: jp/jp_prefectures.py:25\nmsgid \"Shizuoka\"\nmsgstr \"Šizuoka\"\n\n#: jp/jp_prefectures.py:26\nmsgid \"Aichi\"\nmsgstr \"Aiči\"\n\n#: jp/jp_prefectures.py:27\nmsgid \"Mie\"\nmsgstr \"Mie\"\n\n#: jp/jp_prefectures.py:28\nmsgid \"Shiga\"\nmsgstr \"Šiga\"\n\n#: jp/jp_prefectures.py:29\nmsgid \"Kyoto\"\nmsgstr \"Kjóto\"\n\n#: jp/jp_prefectures.py:30\nmsgid \"Osaka\"\nmsgstr \"Ósaka\"\n\n#: jp/jp_prefectures.py:31\nmsgid \"Hyogo\"\nmsgstr \"Hjógo\"\n\n#: jp/jp_prefectures.py:32\nmsgid \"Nara\"\nmsgstr \"Nara\"\n\n#: jp/jp_prefectures.py:33\nmsgid \"Wakayama\"\nmsgstr \"Wakajama\"\n\n#: jp/jp_prefectures.py:34\nmsgid \"Tottori\"\nmsgstr \"Tottori\"\n\n#: jp/jp_prefectures.py:35\nmsgid \"Shimane\"\nmsgstr \"Šimane\"\n\n#: jp/jp_prefectures.py:36\nmsgid \"Okayama\"\nmsgstr \"Okajama\"\n\n#: jp/jp_prefectures.py:37\nmsgid \"Hiroshima\"\nmsgstr \"Hirošima\"\n\n#: jp/jp_prefectures.py:38\nmsgid \"Yamaguchi\"\nmsgstr \"Jamaguči\"\n\n#: jp/jp_prefectures.py:39\nmsgid \"Tokushima\"\nmsgstr \"Tokušima\"\n\n#: jp/jp_prefectures.py:40\nmsgid \"Kagawa\"\nmsgstr \"Kagawa\"\n\n#: jp/jp_prefectures.py:41\nmsgid \"Ehime\"\nmsgstr \"Ehime\"\n\n#: jp/jp_prefectures.py:42\nmsgid \"Kochi\"\nmsgstr \"Kóči\"\n\n#: jp/jp_prefectures.py:43\nmsgid \"Fukuoka\"\nmsgstr \"Fukuoka\"\n\n#: jp/jp_prefectures.py:44\nmsgid \"Saga\"\nmsgstr \"Saga\"\n\n#: jp/jp_prefectures.py:45\nmsgid \"Nagasaki\"\nmsgstr \"Nagasaki\"\n\n#: jp/jp_prefectures.py:46\nmsgid \"Kumamoto\"\nmsgstr \"Kumamoto\"\n\n#: jp/jp_prefectures.py:47\nmsgid \"Oita\"\nmsgstr \"Óita\"\n\n#: jp/jp_prefectures.py:48\nmsgid \"Miyazaki\"\nmsgstr \"Mijazaki\"\n\n#: jp/jp_prefectures.py:49\nmsgid \"Kagoshima\"\nmsgstr \"Kagošima\"\n\n#: jp/jp_prefectures.py:50\nmsgid \"Okinawa\"\nmsgstr \"Okinawa\"\n\n#: kw/forms.py:27\nmsgid \"Enter a valid Kuwaiti Civil ID number\"\nmsgstr \"Vložte platné kuvajtské občanské identifikační číslo\"\n\n#: mk/forms.py:18\nmsgid \"\"\n\"Identity card numbers must contain either 4 to 7 digits or an uppercase \"\n\"letter and 7 digits.\"\nmsgstr \"\"\n\"Číslo identifikačního průkazu musí buď obsahovat 4 či 7 číslic nebo z velké \"\n\"písmo a 7 číslic.\"\n\n#: mk/forms.py:57 si/forms.py:24\nmsgid \"This field should contain exactly 13 digits.\"\nmsgstr \"Toto pole by mělo obsahovat přesně 13 číslic.\"\n\n#: mk/forms.py:58\nmsgid \"The first 7 digits of the UMCN must represent a valid past date.\"\nmsgstr \"Prvních 7 číslic UMCN musí být platné uplynulé datum.\"\n\n#: mk/forms.py:59\nmsgid \"The UMCN is not valid.\"\nmsgstr \"UMCN je neplatné.\"\n\n#: mk/mk_choices.py:10\nmsgid \"Aerodrom\"\nmsgstr \"Aerodrom\"\n\n#: mk/mk_choices.py:11\nmsgid \"Aračinovo\"\nmsgstr \"Aračinovo\"\n\n#: mk/mk_choices.py:12\nmsgid \"Berovo\"\nmsgstr \"Berovo\"\n\n#: mk/mk_choices.py:13\nmsgid \"Bitola\"\nmsgstr \"Bitola\"\n\n#: mk/mk_choices.py:14\nmsgid \"Bogdanci\"\nmsgstr \"Bogdanci\"\n\n#: mk/mk_choices.py:15\nmsgid \"Bogovinje\"\nmsgstr \"Bogovinje\"\n\n#: mk/mk_choices.py:16\nmsgid \"Bosilovo\"\nmsgstr \"Bosilovo\"\n\n#: mk/mk_choices.py:17\nmsgid \"Brvenica\"\nmsgstr \"Brvenica\"\n\n#: mk/mk_choices.py:18\nmsgid \"Butel\"\nmsgstr \"Butel\"\n\n#: mk/mk_choices.py:19\nmsgid \"Valandovo\"\nmsgstr \"Valandovo\"\n\n#: mk/mk_choices.py:20\nmsgid \"Vasilevo\"\nmsgstr \"Vasilevo\"\n\n#: mk/mk_choices.py:21\nmsgid \"Vevčani\"\nmsgstr \"Vevčani\"\n\n#: mk/mk_choices.py:22\nmsgid \"Veles\"\nmsgstr \"Veles\"\n\n#: mk/mk_choices.py:23\nmsgid \"Vinica\"\nmsgstr \"Vinica\"\n\n#: mk/mk_choices.py:24\nmsgid \"Vraneštica\"\nmsgstr \"Vraneštica\"\n\n#: mk/mk_choices.py:25\nmsgid \"Vrapčište\"\nmsgstr \"Vrapčište\"\n\n#: mk/mk_choices.py:26\nmsgid \"Gazi Baba\"\nmsgstr \"Gazi Baba\"\n\n#: mk/mk_choices.py:27\nmsgid \"Gevgelija\"\nmsgstr \"Gevgelija\"\n\n#: mk/mk_choices.py:28\nmsgid \"Gostivar\"\nmsgstr \"Gostivar\"\n\n#: mk/mk_choices.py:29\nmsgid \"Gradsko\"\nmsgstr \"Gradsko\"\n\n#: mk/mk_choices.py:30\nmsgid \"Debar\"\nmsgstr \"Debar\"\n\n#: mk/mk_choices.py:31\nmsgid \"Debarca\"\nmsgstr \"Debarca\"\n\n#: mk/mk_choices.py:32\nmsgid \"Delčevo\"\nmsgstr \"Delčevo\"\n\n#: mk/mk_choices.py:33\nmsgid \"Demir Kapija\"\nmsgstr \"Demir Kapija\"\n\n#: mk/mk_choices.py:34\nmsgid \"Demir Hisar\"\nmsgstr \"Demir Hisar\"\n\n#: mk/mk_choices.py:35\nmsgid \"Dolneni\"\nmsgstr \"Dolneni\"\n\n#: mk/mk_choices.py:36\nmsgid \"Drugovo\"\nmsgstr \"Drugovo\"\n\n#: mk/mk_choices.py:37\nmsgid \"Gjorče Petrov\"\nmsgstr \"Gjorče Petrov\"\n\n#: mk/mk_choices.py:38\nmsgid \"Želino\"\nmsgstr \"Želino\"\n\n#: mk/mk_choices.py:39\nmsgid \"Zajas\"\nmsgstr \"Zajas\"\n\n#: mk/mk_choices.py:40\nmsgid \"Zelenikovo\"\nmsgstr \"Zelenikovo\"\n\n#: mk/mk_choices.py:41\nmsgid \"Zrnovci\"\nmsgstr \"Zrnovci\"\n\n#: mk/mk_choices.py:42\nmsgid \"Ilinden\"\nmsgstr \"Ilinden\"\n\n#: mk/mk_choices.py:43\nmsgid \"Jegunovce\"\nmsgstr \"Jegunovce\"\n\n#: mk/mk_choices.py:44\nmsgid \"Kavadarci\"\nmsgstr \"Kavadarci\"\n\n#: mk/mk_choices.py:45\nmsgid \"Karbinci\"\nmsgstr \"Karbinci\"\n\n#: mk/mk_choices.py:46\nmsgid \"Karpoš\"\nmsgstr \"Karpoš\"\n\n#: mk/mk_choices.py:47\nmsgid \"Kisela Voda\"\nmsgstr \"Kisela Voda\"\n\n#: mk/mk_choices.py:48\nmsgid \"Kičevo\"\nmsgstr \"Kičevo\"\n\n#: mk/mk_choices.py:49\nmsgid \"Konče\"\nmsgstr \"Konče\"\n\n#: mk/mk_choices.py:50\nmsgid \"Koćani\"\nmsgstr \"Koćani\"\n\n#: mk/mk_choices.py:51\nmsgid \"Kratovo\"\nmsgstr \"Kratovo\"\n\n#: mk/mk_choices.py:52\nmsgid \"Kriva Palanka\"\nmsgstr \"Kriva Palanka\"\n\n#: mk/mk_choices.py:53\nmsgid \"Krivogaštani\"\nmsgstr \"Krivogaštani\"\n\n#: mk/mk_choices.py:54\nmsgid \"Kruševo\"\nmsgstr \"Kruševo\"\n\n#: mk/mk_choices.py:55\nmsgid \"Kumanovo\"\nmsgstr \"Kumanovo\"\n\n#: mk/mk_choices.py:56\nmsgid \"Lipkovo\"\nmsgstr \"Lipkovo\"\n\n#: mk/mk_choices.py:57\nmsgid \"Lozovo\"\nmsgstr \"Lozovo\"\n\n#: mk/mk_choices.py:58\nmsgid \"Mavrovo i Rostuša\"\nmsgstr \"Mavrovo a Rostuša\"\n\n#: mk/mk_choices.py:59\nmsgid \"Makedonska Kamenica\"\nmsgstr \"Makedonska Kamenica\"\n\n#: mk/mk_choices.py:60\nmsgid \"Makedonski Brod\"\nmsgstr \"Makedonski Brod\"\n\n#: mk/mk_choices.py:61\nmsgid \"Mogila\"\nmsgstr \"Mogila\"\n\n#: mk/mk_choices.py:62\nmsgid \"Negotino\"\nmsgstr \"Negotino\"\n\n#: mk/mk_choices.py:63\nmsgid \"Novaci\"\nmsgstr \"Novaci\"\n\n#: mk/mk_choices.py:64\nmsgid \"Novo Selo\"\nmsgstr \"Novo Selo\"\n\n#: mk/mk_choices.py:65\nmsgid \"Oslomej\"\nmsgstr \"Oslomej\"\n\n#: mk/mk_choices.py:66\nmsgid \"Ohrid\"\nmsgstr \"Ohrid\"\n\n#: mk/mk_choices.py:67\nmsgid \"Petrovec\"\nmsgstr \"Petrovec\"\n\n#: mk/mk_choices.py:68\nmsgid \"Pehčevo\"\nmsgstr \"Pehčevo\"\n\n#: mk/mk_choices.py:69\nmsgid \"Plasnica\"\nmsgstr \"Plasnica\"\n\n#: mk/mk_choices.py:70\nmsgid \"Prilep\"\nmsgstr \"Prilep\"\n\n#: mk/mk_choices.py:71\nmsgid \"Probištip\"\nmsgstr \"Probištip\"\n\n#: mk/mk_choices.py:72\nmsgid \"Radoviš\"\nmsgstr \"Radoviš\"\n\n#: mk/mk_choices.py:73\nmsgid \"Rankovce\"\nmsgstr \"Rankovce\"\n\n#: mk/mk_choices.py:74\nmsgid \"Resen\"\nmsgstr \"Resen\"\n\n#: mk/mk_choices.py:75\nmsgid \"Rosoman\"\nmsgstr \"Rosoman\"\n\n#: mk/mk_choices.py:76\nmsgid \"Saraj\"\nmsgstr \"Saraj\"\n\n#: mk/mk_choices.py:77\nmsgid \"Sveti Nikole\"\nmsgstr \"Sveti Nikole\"\n\n#: mk/mk_choices.py:78\nmsgid \"Sopište\"\nmsgstr \"Sopište\"\n\n#: mk/mk_choices.py:79\nmsgid \"Star Dojran\"\nmsgstr \"Star Dojran\"\n\n#: mk/mk_choices.py:80\nmsgid \"Staro Nagoričane\"\nmsgstr \"Staro Nagoričane\"\n\n#: mk/mk_choices.py:81\nmsgid \"Struga\"\nmsgstr \"Struga\"\n\n#: mk/mk_choices.py:82\nmsgid \"Strumica\"\nmsgstr \"Strumica\"\n\n#: mk/mk_choices.py:83\nmsgid \"Studeničani\"\nmsgstr \"Studeničani\"\n\n#: mk/mk_choices.py:84\nmsgid \"Tearce\"\nmsgstr \"Tearce\"\n\n#: mk/mk_choices.py:85\nmsgid \"Tetovo\"\nmsgstr \"Tetovo\"\n\n#: mk/mk_choices.py:86\nmsgid \"Centar\"\nmsgstr \"Centar\"\n\n#: mk/mk_choices.py:87\nmsgid \"Centar-Župa\"\nmsgstr \"Centar-Župa\"\n\n#: mk/mk_choices.py:88\nmsgid \"Čair\"\nmsgstr \"Čair\"\n\n#: mk/mk_choices.py:89\nmsgid \"Čaška\"\nmsgstr \"Čaška\"\n\n#: mk/mk_choices.py:90\nmsgid \"Češinovo-Obleševo\"\nmsgstr \"Češinovo-Obleševo\"\n\n#: mk/mk_choices.py:91\nmsgid \"Čučer-Sandevo\"\nmsgstr \"Čučer-Sandevo\"\n\n#: mk/mk_choices.py:92\nmsgid \"Štip\"\nmsgstr \"Štip\"\n\n#: mk/mk_choices.py:93\nmsgid \"Šuto Orizari\"\nmsgstr \"Šuto Orizari\"\n\n#: mk/models.py:11\nmsgid \"Macedonian identity card number\"\nmsgstr \"Číslo makedonského identifikačního průkazu\"\n\n#: mk/models.py:25\nmsgid \"A Macedonian municipality (2 character code)\"\nmsgstr \"Makedonská obec (dvoupísmenný kód)\"\n\n#: mk/models.py:35\nmsgid \"Unique master citizen number (13 digits)\"\nmsgstr \"Rodné číslo (13 číslic)\"\n\n#: mx/forms.py:67\nmsgid \"Enter a valid zip code in the format XXXXX.\"\nmsgstr \"Zadejte platné PSČ ve tvaru XXXXX.\"\n\n#: mx/forms.py:110\nmsgid \"Enter a valid RFC.\"\nmsgstr \"Zadejte platné RFC.\"\n\n#: mx/forms.py:111\nmsgid \"Invalid checksum for RFC.\"\nmsgstr \"Neplatný kontrolní součet RFC.\"\n\n#: mx/forms.py:191\nmsgid \"Enter a valid CURP.\"\nmsgstr \"Zadejte platný CURP.\"\n\n#: mx/forms.py:192\nmsgid \"Invalid checksum for CURP.\"\nmsgstr \"Neplatný kontrolní součet CURP.\"\n\n#: mx/models.py:14\nmsgid \"Mexico state (three uppercase letters)\"\nmsgstr \"Mexický stát (tři velká písmena)\"\n\n#: mx/models.py:27\nmsgid \"Mexico zip code\"\nmsgstr \"Mexické PSČ\"\n\n#: mx/models.py:44\nmsgid \"Mexican RFC\"\nmsgstr \"Mexické RFC\"\n\n#: mx/models.py:61\nmsgid \"Mexican CURP\"\nmsgstr \"Mexický CURP\"\n\n#: mx/mx_states.py:14\nmsgid \"Aguascalientes\"\nmsgstr \"Aguascalientes\"\n\n#: mx/mx_states.py:15\nmsgid \"Baja California\"\nmsgstr \"Baja California\"\n\n#: mx/mx_states.py:16\nmsgid \"Baja California Sur\"\nmsgstr \"Baja California Sur\"\n\n#: mx/mx_states.py:17\nmsgid \"Campeche\"\nmsgstr \"Campeche\"\n\n#: mx/mx_states.py:18\nmsgid \"Chihuahua\"\nmsgstr \"Chihuahua\"\n\n#: mx/mx_states.py:19\nmsgid \"Chiapas\"\nmsgstr \"Chiapas\"\n\n#: mx/mx_states.py:20\nmsgid \"Coahuila\"\nmsgstr \"Coahuila\"\n\n#: mx/mx_states.py:21\nmsgid \"Colima\"\nmsgstr \"Colima\"\n\n#: mx/mx_states.py:22\nmsgid \"Distrito Federal\"\nmsgstr \"Distrito Federal\"\n\n#: mx/mx_states.py:23\nmsgid \"Durango\"\nmsgstr \"Durango\"\n\n#: mx/mx_states.py:24\nmsgid \"Guerrero\"\nmsgstr \"Guerrero\"\n\n#: mx/mx_states.py:25\nmsgid \"Guanajuato\"\nmsgstr \"Guanajuato\"\n\n#: mx/mx_states.py:26\nmsgid \"Hidalgo\"\nmsgstr \"Hidalgo\"\n\n#: mx/mx_states.py:27\nmsgid \"Jalisco\"\nmsgstr \"Jalisco\"\n\n#: mx/mx_states.py:28\nmsgid \"Estado de México\"\nmsgstr \"México\"\n\n#: mx/mx_states.py:29\nmsgid \"Michoacán\"\nmsgstr \"Michoacán\"\n\n#: mx/mx_states.py:30\nmsgid \"Morelos\"\nmsgstr \"Morelos\"\n\n#: mx/mx_states.py:31\nmsgid \"Nayarit\"\nmsgstr \"Nayarit\"\n\n#: mx/mx_states.py:32\nmsgid \"Nuevo León\"\nmsgstr \"Nuevo León\"\n\n#: mx/mx_states.py:33\nmsgid \"Oaxaca\"\nmsgstr \"Oaxaca\"\n\n#: mx/mx_states.py:34\nmsgid \"Puebla\"\nmsgstr \"Puebla\"\n\n#: mx/mx_states.py:35\nmsgid \"Querétaro\"\nmsgstr \"Querétaro\"\n\n#: mx/mx_states.py:36\nmsgid \"Quintana Roo\"\nmsgstr \"Quintana Roo\"\n\n#: mx/mx_states.py:37\nmsgid \"Sinaloa\"\nmsgstr \"Sinaloa\"\n\n#: mx/mx_states.py:38\nmsgid \"San Luis Potosí\"\nmsgstr \"San Luis Potosí\"\n\n#: mx/mx_states.py:39\nmsgid \"Sonora\"\nmsgstr \"Sonora\"\n\n#: mx/mx_states.py:40\nmsgid \"Tabasco\"\nmsgstr \"Tabasco\"\n\n#: mx/mx_states.py:41\nmsgid \"Tamaulipas\"\nmsgstr \"Tamaulipas\"\n\n#: mx/mx_states.py:42\nmsgid \"Tlaxcala\"\nmsgstr \"Tlaxcala\"\n\n#: mx/mx_states.py:43\nmsgid \"Veracruz\"\nmsgstr \"Veracruz\"\n\n#: mx/mx_states.py:44\nmsgid \"Yucatán\"\nmsgstr \"Yucatán\"\n\n#: mx/mx_states.py:45\nmsgid \"Zacatecas\"\nmsgstr \"Zacatecas\"\n\n#: nl/forms.py:26\nmsgid \"Enter a valid postal code\"\nmsgstr \"Zadejte platné poštovní směrovací číslo\"\n\n#: nl/forms.py:82\nmsgid \"Enter a valid SoFi number\"\nmsgstr \"Zadejte platné číslo SoFi\"\n\n#: nl/nl_provinces.py:4\nmsgid \"Drenthe\"\nmsgstr \"Drenthe\"\n\n#: nl/nl_provinces.py:5\nmsgid \"Flevoland\"\nmsgstr \"Flevoland\"\n\n#: nl/nl_provinces.py:6\nmsgid \"Friesland\"\nmsgstr \"Friesland\"\n\n#: nl/nl_provinces.py:7\nmsgid \"Gelderland\"\nmsgstr \"Gelderland\"\n\n#: nl/nl_provinces.py:8\nmsgid \"Groningen\"\nmsgstr \"Groningen\"\n\n#: nl/nl_provinces.py:10\nmsgid \"Noord-Brabant\"\nmsgstr \"Severní Brabantsko\"\n\n#: nl/nl_provinces.py:11\nmsgid \"Noord-Holland\"\nmsgstr \"Severní Holandsko\"\n\n#: nl/nl_provinces.py:12\nmsgid \"Overijssel\"\nmsgstr \"Overijssel\"\n\n#: nl/nl_provinces.py:13\nmsgid \"Utrecht\"\nmsgstr \"Utrecht\"\n\n#: nl/nl_provinces.py:14\nmsgid \"Zeeland\"\nmsgstr \"Zeeland\"\n\n#: nl/nl_provinces.py:15\nmsgid \"Zuid-Holland\"\nmsgstr \"Jižní Holandsko\"\n\n#: no/forms.py:39\nmsgid \"Enter a valid Norwegian social security number.\"\nmsgstr \"Zadejte platné norské číslo sociálního pojištěni (SSN).\"\n\n#: pe/forms.py:28\nmsgid \"This field requires 8 digits.\"\nmsgstr \"Pole musí obsahovat 8 číslic.\"\n\n#: pe/forms.py:56\nmsgid \"This field requires 11 digits.\"\nmsgstr \"Pole musí obsahovat 11 číslic.\"\n\n#: pl/forms.py:42\nmsgid \"National Identification Number consists of 11 digits.\"\nmsgstr \"Národní identifikační číslo obsahuje 11 číslic.\"\n\n#: pl/forms.py:43\nmsgid \"Wrong checksum for the National Identification Number.\"\nmsgstr \"Neplatný kontrolní součet pro Národní identifikační číslo.\"\n\n#: pl/forms.py:79\nmsgid \"National ID Card Number consists of 3 letters and 6 digits.\"\nmsgstr \"Číslo národního identifikačního průkazu (3 písmena a 6 číslic)\"\n\n#: pl/forms.py:80\nmsgid \"Wrong checksum for the National ID Card Number.\"\nmsgstr \"Špatný kontrolní součet čísla národního identifikačního průkazu.\"\n\n#: pl/forms.py:131\nmsgid \"\"\n\"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or \"\n\"XXXXXXXXXX.\"\nmsgstr \"\"\n\"Zadejte pole daňového čísla (NIP) ve tvaru XXX-XXX-XX-XX, XXX-XX-XX-XXX nebo \"\n\"XXXXXXXXXX.\"\n\n#: pl/forms.py:132\nmsgid \"Wrong checksum for the Tax Number (NIP).\"\nmsgstr \"Neplatný kontrolní součet pro daňové identifikační číslo.\"\n\n#: pl/forms.py:171\nmsgid \"National Business Register Number (REGON) consists of 9 or 14 digits.\"\nmsgstr \"Identifikační číslo podnikatele (REGON) obsahuje 9 až 14 číslic.\"\n\n#: pl/forms.py:172\nmsgid \"Wrong checksum for the National Business Register Number (REGON).\"\nmsgstr \"Neplatný kontrolní součet pro identifikační číslo podnikatele (REGON).\"\n\n#: pl/forms.py:212\nmsgid \"Enter a postal code in the format XX-XXX.\"\nmsgstr \"Zadejte poštovní směrovací číslo ve tvaru XX-XXX.\"\n\n#: pl/pl_voivodeships.py:8\nmsgid \"Lower Silesia\"\nmsgstr \"Dolnoslezské vojvodství\"\n\n#: pl/pl_voivodeships.py:9\nmsgid \"Kuyavia-Pomerania\"\nmsgstr \"Kujavsko-pomořské vojvodství\"\n\n#: pl/pl_voivodeships.py:10\nmsgid \"Lublin\"\nmsgstr \"Lublinské vojvodství\"\n\n#: pl/pl_voivodeships.py:11\nmsgid \"Lubusz\"\nmsgstr \"Lubušské vojvodství\"\n\n#: pl/pl_voivodeships.py:12\nmsgid \"Lodz\"\nmsgstr \"Lodžské vojvodství\"\n\n#: pl/pl_voivodeships.py:13\nmsgid \"Lesser Poland\"\nmsgstr \"Malopolské vojvodství\"\n\n#: pl/pl_voivodeships.py:14\nmsgid \"Masovia\"\nmsgstr \"Mazovské vojvodství\"\n\n#: pl/pl_voivodeships.py:15\nmsgid \"Opole\"\nmsgstr \"Opolské vojvodství\"\n\n#: pl/pl_voivodeships.py:16\nmsgid \"Subcarpatia\"\nmsgstr \"Podkarpatské vojvodství\"\n\n#: pl/pl_voivodeships.py:17\nmsgid \"Podlasie\"\nmsgstr \"Podleské vojvodství\"\n\n#: pl/pl_voivodeships.py:18\nmsgid \"Pomerania\"\nmsgstr \"Pomořské vojvodství\"\n\n#: pl/pl_voivodeships.py:19\nmsgid \"Silesia\"\nmsgstr \"Slezské vojvodství\"\n\n#: pl/pl_voivodeships.py:20\nmsgid \"Swietokrzyskie\"\nmsgstr \"Svatokřížské vojvodství\"\n\n#: pl/pl_voivodeships.py:21\nmsgid \"Warmia-Masuria\"\nmsgstr \"Varmijsko-mazurské vojvodství\"\n\n#: pl/pl_voivodeships.py:22\nmsgid \"Greater Poland\"\nmsgstr \"Velkopolské vojvodství\"\n\n#: pl/pl_voivodeships.py:23\nmsgid \"West Pomerania\"\nmsgstr \"Západopomořanské vojvodství\"\n\n#: pt/forms.py:19\nmsgid \"Enter a zip code in the format XXXX-XXX.\"\nmsgstr \"Zadejte poštovní směrovací číslo ve tvaru XXXX-XXX.\"\n\n#: pt/forms.py:39\nmsgid \"Phone numbers must have 9 digits, or start by + or 00.\"\nmsgstr \"Telefonní číslo musí mít 9 číslo nebo začínat + či 00.\"\n\n#: ro/forms.py:22\nmsgid \"Enter a valid CIF.\"\nmsgstr \"Zadejte platné CIF.\"\n\n#: ro/forms.py:59\nmsgid \"Enter a valid CNP.\"\nmsgstr \"Zadejte platné CNP.\"\n\n#: ro/forms.py:143\nmsgid \"Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format\"\nmsgstr \"Zadejte platné IBAN ve tvaru ROXX-XXXX-XXXX-XXXX-XXXX-XXXX.\"\n\n#: ro/forms.py:175\nmsgid \"Phone numbers must be in XXXX-XXXXXX format.\"\nmsgstr \"Telefonní číslo musí být ve tvaru XXXX-XXXXXX.\"\n\n#: ro/forms.py:200\nmsgid \"Enter a valid postal code in the format XXXXXX\"\nmsgstr \"Zadejte platné poštovní směrovací číslo ve tvaru XXXXXX.\"\n\n#: ru/forms.py:37\nmsgid \"Enter a postal code in the format XXXXXX.\"\nmsgstr \"Zadejte poštovní směrovací číslo ve tvaru XXXXXX.\"\n\n#: ru/forms.py:50\nmsgid \"Enter a passport number in the format XXXX XXXXXX.\"\nmsgstr \"Zadejte číslo pasu ve tvaru XXXX XXXXXX.\"\n\n#: ru/forms.py:63\nmsgid \"Enter a passport number in the format XX XXXXXXX.\"\nmsgstr \"Zadejte číslo pasu ve tvaru XX XXXXXXX.\"\n\n#: ru/ru_regions.py:10\nmsgid \"Central Federal County\"\nmsgstr \"Centrální federální okruh\"\n\n#: ru/ru_regions.py:11\nmsgid \"South Federal County\"\nmsgstr \"Jižní federální okruh\"\n\n#: ru/ru_regions.py:12\nmsgid \"North-West Federal County\"\nmsgstr \"Severozápadní federální okruh\"\n\n#: ru/ru_regions.py:13\nmsgid \"Far-East Federal County\"\nmsgstr \"Dálněvýchodní federální okruh\"\n\n#: ru/ru_regions.py:14\nmsgid \"Siberian Federal County\"\nmsgstr \"Sibiřský federální okruh\"\n\n#: ru/ru_regions.py:15\nmsgid \"Ural Federal County\"\nmsgstr \"Uralský federální okruh\"\n\n#: ru/ru_regions.py:16\nmsgid \"Privolzhsky Federal County\"\nmsgstr \"Povolžský federální okruh\"\n\n#: ru/ru_regions.py:17\nmsgid \"North-Caucasian Federal County\"\nmsgstr \"Severokavkazský federální okruh\"\n\n#: ru/ru_regions.py:21\nmsgid \"Moskva\"\nmsgstr \"Moskva\"\n\n#: ru/ru_regions.py:22\nmsgid \"Saint-Peterburg\"\nmsgstr \"Petrohrad\"\n\n#: ru/ru_regions.py:23\nmsgid \"Moskovskaya oblast'\"\nmsgstr \"Moskevská oblast\"\n\n#: ru/ru_regions.py:24\nmsgid \"Adygeya, Respublika\"\nmsgstr \"Adygejsko\"\n\n#: ru/ru_regions.py:25\nmsgid \"Bashkortostan, Respublika\"\nmsgstr \"Baškortostán\"\n\n#: ru/ru_regions.py:26\nmsgid \"Buryatia, Respublika\"\nmsgstr \"Burjatsko\"\n\n#: ru/ru_regions.py:27\nmsgid \"Altay, Respublika\"\nmsgstr \"Republika Altaj\"\n\n#: ru/ru_regions.py:28\nmsgid \"Dagestan, Respublika\"\nmsgstr \"Dagestán\"\n\n#: ru/ru_regions.py:29\nmsgid \"Ingushskaya Respublika\"\nmsgstr \"Ingušsko\"\n\n#: ru/ru_regions.py:30\nmsgid \"Kabardino-Balkarskaya Respublika\"\nmsgstr \"Kabardsko-Balkarsko\"\n\n#: ru/ru_regions.py:31\nmsgid \"Kalmykia, Respublika\"\nmsgstr \"Kalmycko\"\n\n#: ru/ru_regions.py:32\nmsgid \"Karachaevo-Cherkesskaya Respublika\"\nmsgstr \"Karačajevsko-Čerkesko\"\n\n#: ru/ru_regions.py:33\nmsgid \"Karelia, Respublika\"\nmsgstr \"Republika Karélie\"\n\n#: ru/ru_regions.py:34\nmsgid \"Komi, Respublika\"\nmsgstr \"Komi\"\n\n#: ru/ru_regions.py:35\nmsgid \"Mariy Ehl, Respublika\"\nmsgstr \"Marij El\"\n\n#: ru/ru_regions.py:36\nmsgid \"Mordovia, Respublika\"\nmsgstr \"Mordvinsko\"\n\n#: ru/ru_regions.py:37\nmsgid \"Sakha, Respublika (Yakutiya)\"\nmsgstr \"Sacha\"\n\n#: ru/ru_regions.py:38\nmsgid \"Severnaya Osetia, Respublika (Alania)\"\nmsgstr \"Severní Osetie (Alanie)\"\n\n#: ru/ru_regions.py:39\nmsgid \"Tatarstan, Respublika\"\nmsgstr \"Tatarstán\"\n\n#: ru/ru_regions.py:40\nmsgid \"Tyva, Respublika (Tuva)\"\nmsgstr \"Tuva\"\n\n#: ru/ru_regions.py:41\nmsgid \"Udmurtskaya Respublika\"\nmsgstr \"Udmurtsko\"\n\n#: ru/ru_regions.py:42\nmsgid \"Khakassiya, Respublika\"\nmsgstr \"Chakasie\"\n\n#: ru/ru_regions.py:43\nmsgid \"Chechenskaya Respublika\"\nmsgstr \"Čečensko\"\n\n#: ru/ru_regions.py:44\nmsgid \"Chuvashskaya Respublika\"\nmsgstr \"Čuvašsko\"\n\n#: ru/ru_regions.py:45\nmsgid \"Altayskiy Kray\"\nmsgstr \"Altajský kraj\"\n\n#: ru/ru_regions.py:46\nmsgid \"Zabaykalskiy Kray\"\nmsgstr \"Zabajkalský kraj\"\n\n#: ru/ru_regions.py:47\nmsgid \"Kamchatskiy Kray\"\nmsgstr \"Kamčatský kraj\"\n\n#: ru/ru_regions.py:48\nmsgid \"Krasnodarskiy Kray\"\nmsgstr \"Krasnodarský kraj\"\n\n#: ru/ru_regions.py:49\nmsgid \"Krasnoyarskiy Kray\"\nmsgstr \"Krasnojarský kraj\"\n\n#: ru/ru_regions.py:50\nmsgid \"Permskiy Kray\"\nmsgstr \"Permský kraj\"\n\n#: ru/ru_regions.py:51\nmsgid \"Primorskiy Kray\"\nmsgstr \"Přímořský kraj\"\n\n#: ru/ru_regions.py:52\nmsgid \"Stavropol'siyy Kray\"\nmsgstr \"Stavropolský kraj\"\n\n#: ru/ru_regions.py:53\nmsgid \"Khabarovskiy Kray\"\nmsgstr \"Chabarovský kraj\"\n\n#: ru/ru_regions.py:54\nmsgid \"Amurskaya oblast'\"\nmsgstr \"Amurská oblast\"\n\n#: ru/ru_regions.py:55\nmsgid \"Arkhangel'skaya oblast'\"\nmsgstr \"Archangelská oblast\"\n\n#: ru/ru_regions.py:56\nmsgid \"Astrakhanskaya oblast'\"\nmsgstr \"Astrachaňská oblast\"\n\n#: ru/ru_regions.py:57\nmsgid \"Belgorodskaya oblast'\"\nmsgstr \"Belgorodská oblast\"\n\n#: ru/ru_regions.py:58\nmsgid \"Bryanskaya oblast'\"\nmsgstr \"Brjanská oblast\"\n\n#: ru/ru_regions.py:59\nmsgid \"Vladimirskaya oblast'\"\nmsgstr \"Vladimirská oblast\"\n\n#: ru/ru_regions.py:60\nmsgid \"Volgogradskaya oblast'\"\nmsgstr \"Volgogradská oblast\"\n\n#: ru/ru_regions.py:61\nmsgid \"Vologodskaya oblast'\"\nmsgstr \"Vologdská oblast\"\n\n#: ru/ru_regions.py:62\nmsgid \"Voronezhskaya oblast'\"\nmsgstr \"Voroněžská oblast\"\n\n#: ru/ru_regions.py:63\nmsgid \"Ivanovskaya oblast'\"\nmsgstr \"Ivanovská oblast\"\n\n#: ru/ru_regions.py:64\nmsgid \"Irkutskaya oblast'\"\nmsgstr \"Irkutská oblast\"\n\n#: ru/ru_regions.py:65\nmsgid \"Kaliningradskaya oblast'\"\nmsgstr \"Kaliningradská oblast\"\n\n#: ru/ru_regions.py:66\nmsgid \"Kaluzhskaya oblast'\"\nmsgstr \"Kalužská oblast\"\n\n#: ru/ru_regions.py:67\nmsgid \"Kemerovskaya oblast'\"\nmsgstr \"Kemerovská oblast\"\n\n#: ru/ru_regions.py:68\nmsgid \"Kirovskaya oblast'\"\nmsgstr \"Kirovská oblast\"\n\n#: ru/ru_regions.py:69\nmsgid \"Kostromskaya oblast'\"\nmsgstr \"Kostromská oblast\"\n\n#: ru/ru_regions.py:70\nmsgid \"Kurganskaya oblast'\"\nmsgstr \"Kurganská oblast\"\n\n#: ru/ru_regions.py:71\nmsgid \"Kurskaya oblast'\"\nmsgstr \"Kurská oblast\"\n\n#: ru/ru_regions.py:72\nmsgid \"Leningradskaya oblast'\"\nmsgstr \"Leningradská oblast\"\n\n#: ru/ru_regions.py:73\nmsgid \"Lipeckaya oblast'\"\nmsgstr \"Lipecká oblast\"\n\n#: ru/ru_regions.py:74\nmsgid \"Magadanskaya oblast'\"\nmsgstr \"Magadanská oblast\"\n\n#: ru/ru_regions.py:75\nmsgid \"Murmanskaya oblast'\"\nmsgstr \"Murmanská oblast\"\n\n#: ru/ru_regions.py:76\nmsgid \"Nizhegorodskaja oblast'\"\nmsgstr \"Nižněnovgorodská oblast\"\n\n#: ru/ru_regions.py:77\nmsgid \"Novgorodskaya oblast'\"\nmsgstr \"Novgorodská oblast\"\n\n#: ru/ru_regions.py:78\nmsgid \"Novosibirskaya oblast'\"\nmsgstr \"Novosibirská oblast\"\n\n#: ru/ru_regions.py:79\nmsgid \"Omskaya oblast'\"\nmsgstr \"Omská oblast\"\n\n#: ru/ru_regions.py:80\nmsgid \"Orenburgskaya oblast'\"\nmsgstr \"Orenburská oblast\"\n\n#: ru/ru_regions.py:81\nmsgid \"Orlovskaya oblast'\"\nmsgstr \"Orelská oblast\"\n\n#: ru/ru_regions.py:82\nmsgid \"Penzenskaya oblast'\"\nmsgstr \"Penzenská oblast\"\n\n#: ru/ru_regions.py:83\nmsgid \"Pskovskaya oblast'\"\nmsgstr \"Pskovská oblast\"\n\n#: ru/ru_regions.py:84\nmsgid \"Rostovskaya oblast'\"\nmsgstr \"Rostovská oblast\"\n\n#: ru/ru_regions.py:85\nmsgid \"Rjazanskaya oblast'\"\nmsgstr \"Rjazaňská oblast\"\n\n#: ru/ru_regions.py:86\nmsgid \"Samarskaya oblast'\"\nmsgstr \"Sachalinská oblast\"\n\n#: ru/ru_regions.py:87\nmsgid \"Saratovskaya oblast'\"\nmsgstr \"Saratovská oblast\"\n\n#: ru/ru_regions.py:88\nmsgid \"Sakhalinskaya oblast'\"\nmsgstr \"Sachalinská oblast\"\n\n#: ru/ru_regions.py:89\nmsgid \"Sverdlovskaya oblast'\"\nmsgstr \"Sverdlovská oblast\"\n\n#: ru/ru_regions.py:90\nmsgid \"Smolenskaya oblast'\"\nmsgstr \"Smolenská oblast\"\n\n#: ru/ru_regions.py:91\nmsgid \"Tambovskaya oblast'\"\nmsgstr \"Tambovská oblast\"\n\n#: ru/ru_regions.py:92\nmsgid \"Tverskaya oblast'\"\nmsgstr \"Tverská oblast\"\n\n#: ru/ru_regions.py:93\nmsgid \"Tomskaya oblast'\"\nmsgstr \"Tomská oblast\"\n\n#: ru/ru_regions.py:94\nmsgid \"Tul'skaya oblast'\"\nmsgstr \"Tomská oblast\"\n\n#: ru/ru_regions.py:95\nmsgid \"Tyumenskaya oblast'\"\nmsgstr \"Ťumenská oblast\"\n\n#: ru/ru_regions.py:96\nmsgid \"Ul'ianovskaya oblast'\"\nmsgstr \"Uljanovská oblast\"\n\n#: ru/ru_regions.py:97\nmsgid \"Chelyabinskaya oblast'\"\nmsgstr \"Čeljabinská oblast\"\n\n#: ru/ru_regions.py:98\nmsgid \"Yaroslavskaya oblast'\"\nmsgstr \"Jaroslavská oblast\"\n\n#: ru/ru_regions.py:99\nmsgid \"Evreyskaya avtonomnaja oblast'\"\nmsgstr \"Židovská autonomní oblast\"\n\n#: ru/ru_regions.py:100\nmsgid \"Neneckiy autonomnyy okrug\"\nmsgstr \"Něnecký autonomní okruh\"\n\n#: ru/ru_regions.py:101\nmsgid \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\nmsgstr \"Chantymansijský autonomní okruh - Jugra\"\n\n#: ru/ru_regions.py:102\nmsgid \"Chukotskiy avtonomnyy okrug\"\nmsgstr \"Čukotský autonomní okruh\"\n\n#: ru/ru_regions.py:103\nmsgid \"Yamalo-Neneckiy avtonomnyy okrug\"\nmsgstr \"Jamalskoněnecký autonomní okruh\"\n\n#: se/forms.py:54\nmsgid \"Enter a valid Swedish organisation number.\"\nmsgstr \"Vložte platné číslo švédské organizace.\"\n\n#: se/forms.py:111\nmsgid \"Enter a valid Swedish personal identity number.\"\nmsgstr \"Vložte platné švédské osobní identifikační číslo.\"\n\n#: se/forms.py:112\nmsgid \"Co-ordination numbers are not allowed.\"\nmsgstr \"Koordinační čísla nejsou povolena.\"\n\n#: se/forms.py:154\nmsgid \"Enter a Swedish postal code in the format XXXXX.\"\nmsgstr \"Vložte švédské poštovní směrovací číslo ve tvaru XXXXX.\"\n\n#: se/se_counties.py:16\nmsgid \"Stockholm\"\nmsgstr \"Stockholm\"\n\n#: se/se_counties.py:17\nmsgid \"Västerbotten\"\nmsgstr \"Västerbotten\"\n\n#: se/se_counties.py:18\nmsgid \"Norrbotten\"\nmsgstr \"Norrbotten\"\n\n#: se/se_counties.py:19\nmsgid \"Uppsala\"\nmsgstr \"Uppsala\"\n\n#: se/se_counties.py:20\nmsgid \"Södermanland\"\nmsgstr \"Södermanland\"\n\n#: se/se_counties.py:21\nmsgid \"Östergötland\"\nmsgstr \"Östergötland\"\n\n#: se/se_counties.py:22\nmsgid \"Jönköping\"\nmsgstr \"Jönköping\"\n\n#: se/se_counties.py:23\nmsgid \"Kronoberg\"\nmsgstr \"Kronoberg\"\n\n#: se/se_counties.py:24\nmsgid \"Kalmar\"\nmsgstr \"Kalmar\"\n\n#: se/se_counties.py:25\nmsgid \"Gotland\"\nmsgstr \"Gotland\"\n\n#: se/se_counties.py:26\nmsgid \"Blekinge\"\nmsgstr \"Blekinge\"\n\n#: se/se_counties.py:27\nmsgid \"Skåne\"\nmsgstr \"Skåne\"\n\n#: se/se_counties.py:28\nmsgid \"Halland\"\nmsgstr \"Halland\"\n\n#: se/se_counties.py:29\nmsgid \"Västra Götaland\"\nmsgstr \"Västra Götaland\"\n\n#: se/se_counties.py:30\nmsgid \"Värmland\"\nmsgstr \"Värmland\"\n\n#: se/se_counties.py:31\nmsgid \"Örebro\"\nmsgstr \"Örebro\"\n\n#: se/se_counties.py:32\nmsgid \"Västmanland\"\nmsgstr \"Västmanland\"\n\n#: se/se_counties.py:33\nmsgid \"Dalarna\"\nmsgstr \"Dalarna\"\n\n#: se/se_counties.py:34\nmsgid \"Gävleborg\"\nmsgstr \"Gävleborg\"\n\n#: se/se_counties.py:35\nmsgid \"Västernorrland\"\nmsgstr \"Västernorrland\"\n\n#: se/se_counties.py:36\nmsgid \"Jämtland\"\nmsgstr \"Jämtland\"\n\n#: si/forms.py:25\nmsgid \"The first 7 digits of the EMSO must represent a valid past date.\"\nmsgstr \"Prvních 7 číslic EMSO musí představovat datum uplynulého dne.\"\n\n#: si/forms.py:26\nmsgid \"The EMSO is not valid.\"\nmsgstr \"EMSO je neplatné.\"\n\n#: si/forms.py:86\nmsgid \"Enter a valid tax number in form SIXXXXXXXX\"\nmsgstr \"Zadejte platné daňové číslo ve tvaru SIXXXXXXXX.\"\n\n#: si/forms.py:151\nmsgid \"Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.\"\nmsgstr \"Zadejte telefonní číslo ve tvaru +386XXXXXXXX nebo 0XXXXXXXX.\"\n\n#: sk/sk_districts.py:8\nmsgid \"Banska Bystrica\"\nmsgstr \"Banská Bystrica\"\n\n#: sk/sk_districts.py:9\nmsgid \"Banska Stiavnica\"\nmsgstr \"Banská Štiavnica\"\n\n#: sk/sk_districts.py:10\nmsgid \"Bardejov\"\nmsgstr \"Bardejov\"\n\n#: sk/sk_districts.py:11\nmsgid \"Banovce nad Bebravou\"\nmsgstr \"Bánovce nad Bebravou\"\n\n#: sk/sk_districts.py:12\nmsgid \"Brezno\"\nmsgstr \"Brezno\"\n\n#: sk/sk_districts.py:13\nmsgid \"Bratislava I\"\nmsgstr \"Bratislava I\"\n\n#: sk/sk_districts.py:14\nmsgid \"Bratislava II\"\nmsgstr \"Bratislava II\"\n\n#: sk/sk_districts.py:15\nmsgid \"Bratislava III\"\nmsgstr \"Bratislava III\"\n\n#: sk/sk_districts.py:16\nmsgid \"Bratislava IV\"\nmsgstr \"Bratislava IV\"\n\n#: sk/sk_districts.py:17\nmsgid \"Bratislava V\"\nmsgstr \"Bratislava V\"\n\n#: sk/sk_districts.py:18\nmsgid \"Bytca\"\nmsgstr \"Bytča\"\n\n#: sk/sk_districts.py:19\nmsgid \"Cadca\"\nmsgstr \"Čadca\"\n\n#: sk/sk_districts.py:20\nmsgid \"Detva\"\nmsgstr \"Detva\"\n\n#: sk/sk_districts.py:21\nmsgid \"Dolny Kubin\"\nmsgstr \"Dolný Kubín\"\n\n#: sk/sk_districts.py:22\nmsgid \"Dunajska Streda\"\nmsgstr \"Dunajská Streda\"\n\n#: sk/sk_districts.py:23\nmsgid \"Galanta\"\nmsgstr \"Galanta\"\n\n#: sk/sk_districts.py:24\nmsgid \"Gelnica\"\nmsgstr \"Gelnica\"\n\n#: sk/sk_districts.py:25\nmsgid \"Hlohovec\"\nmsgstr \"Hlohovec\"\n\n#: sk/sk_districts.py:26\nmsgid \"Humenne\"\nmsgstr \"Humenné\"\n\n#: sk/sk_districts.py:27\nmsgid \"Ilava\"\nmsgstr \"Ilava\"\n\n#: sk/sk_districts.py:28\nmsgid \"Kezmarok\"\nmsgstr \"Kežmarok\"\n\n#: sk/sk_districts.py:29\nmsgid \"Komarno\"\nmsgstr \"Komárno\"\n\n#: sk/sk_districts.py:30\nmsgid \"Kosice I\"\nmsgstr \"Košice I\"\n\n#: sk/sk_districts.py:31\nmsgid \"Kosice II\"\nmsgstr \"Košice II\"\n\n#: sk/sk_districts.py:32\nmsgid \"Kosice III\"\nmsgstr \"Košice III\"\n\n#: sk/sk_districts.py:33\nmsgid \"Kosice IV\"\nmsgstr \"Košice IV\"\n\n#: sk/sk_districts.py:34\nmsgid \"Kosice - okolie\"\nmsgstr \"Košice-okolie\"\n\n#: sk/sk_districts.py:35\nmsgid \"Krupina\"\nmsgstr \"Krupina\"\n\n#: sk/sk_districts.py:36\nmsgid \"Kysucke Nove Mesto\"\nmsgstr \"Kysucké Nové Mesto\"\n\n#: sk/sk_districts.py:37\nmsgid \"Levice\"\nmsgstr \"Levice\"\n\n#: sk/sk_districts.py:38\nmsgid \"Levoca\"\nmsgstr \"Levoča\"\n\n#: sk/sk_districts.py:39\nmsgid \"Liptovsky Mikulas\"\nmsgstr \"Liptovský Mikuláš\"\n\n#: sk/sk_districts.py:40\nmsgid \"Lucenec\"\nmsgstr \"Lučenec\"\n\n#: sk/sk_districts.py:41\nmsgid \"Malacky\"\nmsgstr \"Malacky\"\n\n#: sk/sk_districts.py:42\nmsgid \"Martin\"\nmsgstr \"Martin\"\n\n#: sk/sk_districts.py:43\nmsgid \"Medzilaborce\"\nmsgstr \"Medzilaborce\"\n\n#: sk/sk_districts.py:44\nmsgid \"Michalovce\"\nmsgstr \"Michalovce\"\n\n#: sk/sk_districts.py:45\nmsgid \"Myjava\"\nmsgstr \"Myjava\"\n\n#: sk/sk_districts.py:46\nmsgid \"Namestovo\"\nmsgstr \"Námestovo\"\n\n#: sk/sk_districts.py:47\nmsgid \"Nitra\"\nmsgstr \"Nitra\"\n\n#: sk/sk_districts.py:48\nmsgid \"Nove Mesto nad Vahom\"\nmsgstr \"Nové Mesto nad Váhom\"\n\n#: sk/sk_districts.py:49\nmsgid \"Nove Zamky\"\nmsgstr \"Nové Zámky\"\n\n#: sk/sk_districts.py:50\nmsgid \"Partizanske\"\nmsgstr \"Partizánske\"\n\n#: sk/sk_districts.py:51\nmsgid \"Pezinok\"\nmsgstr \"Pezinok\"\n\n#: sk/sk_districts.py:52\nmsgid \"Piestany\"\nmsgstr \"Piešťany\"\n\n#: sk/sk_districts.py:53\nmsgid \"Poltar\"\nmsgstr \"Poltár\"\n\n#: sk/sk_districts.py:54\nmsgid \"Poprad\"\nmsgstr \"Poprad\"\n\n#: sk/sk_districts.py:55\nmsgid \"Povazska Bystrica\"\nmsgstr \"Považská Bystrica\"\n\n#: sk/sk_districts.py:56\nmsgid \"Presov\"\nmsgstr \"Prešov\"\n\n#: sk/sk_districts.py:57\nmsgid \"Prievidza\"\nmsgstr \"Prievidza\"\n\n#: sk/sk_districts.py:58\nmsgid \"Puchov\"\nmsgstr \"Púchov\"\n\n#: sk/sk_districts.py:59\nmsgid \"Revuca\"\nmsgstr \"Revúca\"\n\n#: sk/sk_districts.py:60\nmsgid \"Rimavska Sobota\"\nmsgstr \"Rimavská Sobota\"\n\n#: sk/sk_districts.py:61\nmsgid \"Roznava\"\nmsgstr \"Rožňava\"\n\n#: sk/sk_districts.py:62\nmsgid \"Ruzomberok\"\nmsgstr \"Ružomberok\"\n\n#: sk/sk_districts.py:63\nmsgid \"Sabinov\"\nmsgstr \"Sabinov\"\n\n#: sk/sk_districts.py:64\nmsgid \"Senec\"\nmsgstr \"Senec\"\n\n#: sk/sk_districts.py:65\nmsgid \"Senica\"\nmsgstr \"Senica\"\n\n#: sk/sk_districts.py:66\nmsgid \"Skalica\"\nmsgstr \"Skalica\"\n\n#: sk/sk_districts.py:67\nmsgid \"Snina\"\nmsgstr \"Snina\"\n\n#: sk/sk_districts.py:68\nmsgid \"Sobrance\"\nmsgstr \"Sobrance\"\n\n#: sk/sk_districts.py:69\nmsgid \"Spisska Nova Ves\"\nmsgstr \"Spišská Nová Ves\"\n\n#: sk/sk_districts.py:70\nmsgid \"Stara Lubovna\"\nmsgstr \"Stará Ľubovňa\"\n\n#: sk/sk_districts.py:71\nmsgid \"Stropkov\"\nmsgstr \"Stropkov\"\n\n#: sk/sk_districts.py:72\nmsgid \"Svidnik\"\nmsgstr \"Svidník\"\n\n#: sk/sk_districts.py:73\nmsgid \"Sala\"\nmsgstr \"Šaľa\"\n\n#: sk/sk_districts.py:74\nmsgid \"Topolcany\"\nmsgstr \"Topoľčany\"\n\n#: sk/sk_districts.py:75\nmsgid \"Trebisov\"\nmsgstr \"Trebišov\"\n\n#: sk/sk_districts.py:76\nmsgid \"Trencin\"\nmsgstr \"Trenčín\"\n\n#: sk/sk_districts.py:77\nmsgid \"Trnava\"\nmsgstr \"Trnava\"\n\n#: sk/sk_districts.py:78\nmsgid \"Turcianske Teplice\"\nmsgstr \"Turčianske Teplice\"\n\n#: sk/sk_districts.py:79\nmsgid \"Tvrdosin\"\nmsgstr \"Tvrdošín\"\n\n#: sk/sk_districts.py:80\nmsgid \"Velky Krtis\"\nmsgstr \"Veľký Krtíš\"\n\n#: sk/sk_districts.py:81\nmsgid \"Vranov nad Toplou\"\nmsgstr \"Vranov nad Topľou\"\n\n#: sk/sk_districts.py:82\nmsgid \"Zlate Moravce\"\nmsgstr \"Zlaté Moravce\"\n\n#: sk/sk_districts.py:83\nmsgid \"Zvolen\"\nmsgstr \"Zvolen\"\n\n#: sk/sk_districts.py:84\nmsgid \"Zarnovica\"\nmsgstr \"Žarnovica\"\n\n#: sk/sk_districts.py:85\nmsgid \"Ziar nad Hronom\"\nmsgstr \"Žiar nad Hronom\"\n\n#: sk/sk_districts.py:86\nmsgid \"Zilina\"\nmsgstr \"Žilina\"\n\n#: sk/sk_regions.py:8\nmsgid \"Banska Bystrica region\"\nmsgstr \"Banskobystrický kraj\"\n\n#: sk/sk_regions.py:9\nmsgid \"Bratislava region\"\nmsgstr \"Bratislavský kraj\"\n\n#: sk/sk_regions.py:10\nmsgid \"Kosice region\"\nmsgstr \"Košický kraj\"\n\n#: sk/sk_regions.py:11\nmsgid \"Nitra region\"\nmsgstr \"Nitranský kraj\"\n\n#: sk/sk_regions.py:12\nmsgid \"Presov region\"\nmsgstr \"Prešovský kraj\"\n\n#: sk/sk_regions.py:13\nmsgid \"Trencin region\"\nmsgstr \"Trenčínský kraj\"\n\n#: sk/sk_regions.py:14\nmsgid \"Trnava region\"\nmsgstr \"Trnavský kraj\"\n\n#: sk/sk_regions.py:15\nmsgid \"Zilina region\"\nmsgstr \"Žilinský kraj\"\n\n#: tr/forms.py:21\nmsgid \"Enter a postal code in the format XXXXX.\"\nmsgstr \"Zadejte poštovní směrovací číslo ve tvaru XXXXX.\"\n\n#: tr/forms.py:42\nmsgid \"Phone numbers must be in 0XXX XXX XXXX format.\"\nmsgstr \"Telefonní čísla musí být ve tvaru 0XXX XXX XXXX.\"\n\n#: tr/forms.py:69\nmsgid \"Enter a valid Turkish Identification number.\"\nmsgstr \"Vložte platné Turecké Identifikační číslo.\"\n\n#: tr/forms.py:70\nmsgid \"Turkish Identification number must be 11 digits.\"\nmsgstr \"Turecké Identifikační číslo musí obsahovat 11 číslic.\"\n\n#: us/forms.py:21\nmsgid \"Enter a zip code in the format XXXXX or XXXXX-XXXX.\"\nmsgstr \"Zadejte poštovní směrovací číslo ve tvaru XXXXX nebo XXXXX-XXXX.\"\n\n#: us/forms.py:59\nmsgid \"Enter a valid U.S. Social Security number in XXX-XX-XXXX format.\"\nmsgstr \"Zadejte platné osobní číslo (U.S. SSN) ve tvaru XXX-XX-XXXX.\"\n\n#: us/forms.py:92\nmsgid \"Enter a U.S. state or territory.\"\nmsgstr \"Vložte stát USA nebo teritorium.\"\n\n#: us/models.py:8\nmsgid \"U.S. state (two uppercase letters)\"\nmsgstr \"Stát v USA (dvě velká písmena)\"\n\n#: us/models.py:17\nmsgid \"U.S. postal code (two uppercase letters)\"\nmsgstr \"Poštovní směrovací číslo v USA (dvě velká písmena)\"\n\n#: us/models.py:26\nmsgid \"Phone number\"\nmsgstr \"Telefonní číslo\"\n\n#: uy/forms.py:29\nmsgid \"Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.\"\nmsgstr \"Vložte platné číslo CI ve tvaru X.XXX.XXX-X,XXXXXXX-X nebo XXXXXXXX.\"\n\n#: uy/forms.py:31\nmsgid \"Enter a valid CI number.\"\nmsgstr \"Vložte platné číslo CI.\"\n\n#: za/forms.py:22\nmsgid \"Enter a valid South African ID number\"\nmsgstr \"Zadejte platné jihoafrické identifikační číslo\"\n\n#: za/forms.py:56\nmsgid \"Enter a valid South African postal code\"\nmsgstr \"Zadejte platné jihoafrické poštovní směrovací číslo\"\n\n#: za/za_provinces.py:4\nmsgid \"Eastern Cape\"\nmsgstr \"Východní Kapsko\"\n\n#: za/za_provinces.py:5\nmsgid \"Free State\"\nmsgstr \"Svobodný stát\"\n\n#: za/za_provinces.py:6\nmsgid \"Gauteng\"\nmsgstr \"Gauteng\"\n\n#: za/za_provinces.py:7\nmsgid \"KwaZulu-Natal\"\nmsgstr \"KwaZulu-Natal\"\n\n#: za/za_provinces.py:8\nmsgid \"Limpopo\"\nmsgstr \"Limpopo\"\n\n#: za/za_provinces.py:9\nmsgid \"Mpumalanga\"\nmsgstr \"Mpumalanga\"\n\n#: za/za_provinces.py:10\nmsgid \"Northern Cape\"\nmsgstr \"Severní Kapsko\"\n\n#: za/za_provinces.py:11\nmsgid \"North West\"\nmsgstr \"Severozápadní provincie\"\n\n#: za/za_provinces.py:12\nmsgid \"Western Cape\"\nmsgstr \"Západní Kapsko\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/locale/da/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Christian Joergensen <christian@gmta.info>, 2012.\n# Erik Wognsen <r4mses@gmail.com>, 2012-2013.\n# Finn Gruwier <finn@gruwier.dk>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <kristian@oellegaard.com>, 2012.\n# Kristian Øllegaard <kristian@oellegaard.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2013-01-13 04:55+0000\\n\"\n\"Last-Translator: Erik Wognsen <r4mses@gmail.com>\\n\"\n\"Language-Team: Danish (http://www.transifex.com/projects/p/django/language/\"\n\"da/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: da\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: ar/forms.py:30\nmsgid \"Enter a postal code in the format NNNN or ANNNNAAA.\"\nmsgstr \"Indtast et postnummer i formatet NNNN eller ANNNNAAA.\"\n\n#: ar/forms.py:52 br/forms.py:95 br/forms.py:134 pe/forms.py:27 pe/forms.py:55\nmsgid \"This field requires only numbers.\"\nmsgstr \"I dette felt skal kun indtastes cifre.\"\n\n#: ar/forms.py:53\nmsgid \"This field requires 7 or 8 digits.\"\nmsgstr \"Dette felt kræver 7 eller 8 cifre.\"\n\n#: ar/forms.py:82\nmsgid \"Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.\"\nmsgstr \"Indtast en gyldig CUIT i format XX-XXXXXXXX-X eller XXXXXXXXXXXX.\"\n\n#: ar/forms.py:83\nmsgid \"Invalid CUIT.\"\nmsgstr \"Ugyldig CUIT.\"\n\n#: ar/forms.py:84\nmsgid \"Invalid legal type. Type must be 27, 20, 23 or 30.\"\nmsgstr \"Ugyldig juridisk type. Typen skal være 27, 20, 23 eller 30.\"\n\n#: at/at_states.py:5\nmsgid \"Burgenland\"\nmsgstr \"Burgenland\"\n\n#: at/at_states.py:6\nmsgid \"Carinthia\"\nmsgstr \"Carinthia\"\n\n#: at/at_states.py:7\nmsgid \"Lower Austria\"\nmsgstr \"Lower Austria\"\n\n#: at/at_states.py:8\nmsgid \"Upper Austria\"\nmsgstr \"Upper Austria\"\n\n#: at/at_states.py:9\nmsgid \"Salzburg\"\nmsgstr \"Salzburg\"\n\n#: at/at_states.py:10\nmsgid \"Styria\"\nmsgstr \"Styria\"\n\n#: at/at_states.py:11\nmsgid \"Tyrol\"\nmsgstr \"Tyrol\"\n\n#: at/at_states.py:12\nmsgid \"Vorarlberg\"\nmsgstr \"Vorarlberg\"\n\n#: at/at_states.py:13\nmsgid \"Vienna\"\nmsgstr \"Vienna\"\n\n#: at/forms.py:22 ch/forms.py:22 no/forms.py:19\nmsgid \"Enter a zip code in the format XXXX.\"\nmsgstr \"Indtast et postnummer i formatet XXXX.\"\n\n#: at/forms.py:50\nmsgid \"Enter a valid Austrian Social Security Number in XXXX XXXXXX format.\"\nmsgstr \"Indtast et gyldigt østrigsk sygesikringsnummer i format XXXX XXXXXX.\"\n\n#: au/forms.py:26\nmsgid \"Enter a 4 digit postcode.\"\nmsgstr \"Indtast et firecifret postnummer.\"\n\n#: au/models.py:9\nmsgid \"Australian State\"\nmsgstr \"Australsk stat\"\n\n#: au/models.py:19\nmsgid \"Australian Postcode\"\nmsgstr \"Australsk postnummer\"\n\n#: au/models.py:33\nmsgid \"Australian Phone number\"\nmsgstr \"Australsk telefonnummer\"\n\n#: be/be_provinces.py:5\nmsgid \"Antwerp\"\nmsgstr \"Antwerpen\"\n\n#: be/be_provinces.py:6\nmsgid \"Brussels\"\nmsgstr \"Bruxelles\"\n\n#: be/be_provinces.py:7\nmsgid \"East Flanders\"\nmsgstr \"Østflandern\"\n\n#: be/be_provinces.py:8\nmsgid \"Flemish Brabant\"\nmsgstr \"Flamsk Brabant\"\n\n#: be/be_provinces.py:9\nmsgid \"Hainaut\"\nmsgstr \"Hainaut\"\n\n#: be/be_provinces.py:10\nmsgid \"Liege\"\nmsgstr \"Liege\"\n\n#: be/be_provinces.py:11 nl/nl_provinces.py:9\nmsgid \"Limburg\"\nmsgstr \"Limburg\"\n\n#: be/be_provinces.py:12\nmsgid \"Luxembourg\"\nmsgstr \"Luxembourg\"\n\n#: be/be_provinces.py:13\nmsgid \"Namur\"\nmsgstr \"Namur\"\n\n#: be/be_provinces.py:14\nmsgid \"Walloon Brabant\"\nmsgstr \"Vallonsk Brabant\"\n\n#: be/be_provinces.py:15\nmsgid \"West Flanders\"\nmsgstr \"Vestflandern\"\n\n#: be/be_regions.py:5\nmsgid \"Brussels Capital Region\"\nmsgstr \"Hovedstadsregionen Bruxelles\"\n\n#: be/be_regions.py:6\nmsgid \"Flemish Region\"\nmsgstr \"Flamske region\"\n\n#: be/be_regions.py:7\nmsgid \"Wallonia\"\nmsgstr \"Vallonien\"\n\n#: be/forms.py:25\nmsgid \"Enter a valid postal code in the range and format 1XXX - 9XXX.\"\nmsgstr \"Indtast et gyldigt postnummer i område og format 1XXX - 9xxx.\"\n\n#: be/forms.py:48\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\nmsgstr \"\"\n\"Indtast et gyldigt telefonnummer i et af formaterne 0x xxx xx xx, 0xx xx xx \"\n\"xx, 04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x . xxx.xx.\"\n\"xx, 0xx.xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx eller 04xxxxxxxx.\"\n\n#: br/forms.py:22\nmsgid \"Enter a zip code in the format XXXXX-XXX.\"\nmsgstr \"Indtast et postnummer i formatet XXXXX-XXX.\"\n\n#: br/forms.py:31\nmsgid \"Phone numbers must be in XX-XXXX-XXXX format.\"\nmsgstr \"Telefonnumre skal være i formatet XX-XXXX-XXXX.\"\n\n#: br/forms.py:58\nmsgid \"\"\n\"Select a valid brazilian state. That state is not one of the available \"\n\"states.\"\nmsgstr \"Vælg en gyldig brasiliansk provins. Denne provins er ikke gyldig.\"\n\n#: br/forms.py:93\nmsgid \"Invalid CPF number.\"\nmsgstr \"Ugyldigt CPF-nummer.\"\n\n#: br/forms.py:94\nmsgid \"This field requires at most 11 digits or 14 characters.\"\nmsgstr \"Dette felt kræver mindst 11 og højst 14 tegn.\"\n\n#: br/forms.py:133\nmsgid \"Invalid CNPJ number.\"\nmsgstr \"Ugyldigt CNPJ-nummer.\"\n\n#: br/forms.py:135\nmsgid \"This field requires at least 14 digits\"\nmsgstr \"dette felt kræver mindst 14 cifre.\"\n\n#: ca/forms.py:29\nmsgid \"Enter a postal code in the format XXX XXX.\"\nmsgstr \"Indtast et postnummer i formatet XXX XXX.\"\n\n#: ca/forms.py:47 us/forms.py:30\nmsgid \"Phone numbers must be in XXX-XXX-XXXX format.\"\nmsgstr \"Telefonnumre skal være i formatet XXX-XXX-XXXX.\"\n\n#: ca/forms.py:69\nmsgid \"Enter a Canadian province or territory.\"\nmsgstr \"Indtast en canadisk provins eller territorium.\"\n\n#: ca/forms.py:110\nmsgid \"Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.\"\nmsgstr \"Indtast et gyldigt canadisk sygesikringsnummer i formatet XXX-XXX-XXX.\"\n\n#: ch/ch_states.py:5\nmsgid \"Aargau\"\nmsgstr \"Aargau\"\n\n#: ch/ch_states.py:6\nmsgid \"Appenzell Innerrhoden\"\nmsgstr \"Appenzell Innerrhoden\"\n\n#: ch/ch_states.py:7\nmsgid \"Appenzell Ausserrhoden\"\nmsgstr \"Appenzell Ausserrhoden\"\n\n#: ch/ch_states.py:8\nmsgid \"Basel-Stadt\"\nmsgstr \"Basel-Stadt\"\n\n#: ch/ch_states.py:9\nmsgid \"Basel-Land\"\nmsgstr \"Basel-Land\"\n\n#: ch/ch_states.py:10\nmsgid \"Berne\"\nmsgstr \"Berne\"\n\n#: ch/ch_states.py:11\nmsgid \"Fribourg\"\nmsgstr \"Fribourg\"\n\n#: ch/ch_states.py:12\nmsgid \"Geneva\"\nmsgstr \"Geneva\"\n\n#: ch/ch_states.py:13\nmsgid \"Glarus\"\nmsgstr \"Glarus\"\n\n#: ch/ch_states.py:14\nmsgid \"Graubuenden\"\nmsgstr \"Graubuenden\"\n\n#: ch/ch_states.py:15\nmsgid \"Jura\"\nmsgstr \"Jura\"\n\n#: ch/ch_states.py:16\nmsgid \"Lucerne\"\nmsgstr \"Lucerne\"\n\n#: ch/ch_states.py:17\nmsgid \"Neuchatel\"\nmsgstr \"Neuchatel\"\n\n#: ch/ch_states.py:18\nmsgid \"Nidwalden\"\nmsgstr \"Nidwalden\"\n\n#: ch/ch_states.py:19\nmsgid \"Obwalden\"\nmsgstr \"Obwalden\"\n\n#: ch/ch_states.py:20\nmsgid \"Schaffhausen\"\nmsgstr \"Schaffhausen\"\n\n#: ch/ch_states.py:21\nmsgid \"Schwyz\"\nmsgstr \"Schwyz\"\n\n#: ch/ch_states.py:22\nmsgid \"Solothurn\"\nmsgstr \"Solothurn\"\n\n#: ch/ch_states.py:23\nmsgid \"St. Gallen\"\nmsgstr \"St. Gallen\"\n\n#: ch/ch_states.py:24\nmsgid \"Thurgau\"\nmsgstr \"Thurgau\"\n\n#: ch/ch_states.py:25\nmsgid \"Ticino\"\nmsgstr \"Ticino\"\n\n#: ch/ch_states.py:26\nmsgid \"Uri\"\nmsgstr \"Uri\"\n\n#: ch/ch_states.py:27\nmsgid \"Valais\"\nmsgstr \"Valais\"\n\n#: ch/ch_states.py:28\nmsgid \"Vaud\"\nmsgstr \"Vaud\"\n\n#: ch/ch_states.py:29\nmsgid \"Zug\"\nmsgstr \"Zug\"\n\n#: ch/ch_states.py:30\nmsgid \"Zurich\"\nmsgstr \"Zurich\"\n\n#: ch/forms.py:37\nmsgid \"Phone numbers must be in 0XX XXX XX XX format.\"\nmsgstr \"Telefonnumre skal være i formatet 0XX XXX XX XX.\"\n\n#: ch/forms.py:68\nmsgid \"\"\n\"Enter a valid Swiss identity or passport card number in X1234567<0 or \"\n\"1234567890 format.\"\nmsgstr \"\"\n\"Indtast et svejtsisk identitets- eller pasnr. i format X1234567<0 eller \"\n\"1234567890.\"\n\n#: cl/forms.py:32\nmsgid \"Enter a valid Chilean RUT.\"\nmsgstr \"Indtast en gyldig chilensk RUT\"\n\n#: cl/forms.py:33\nmsgid \"Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.\"\nmsgstr \"Indtast en gyldig chilensk RUT. Formatet er XX.XXX.XXX-X.\"\n\n#: cl/forms.py:34\nmsgid \"The Chilean RUT is not valid.\"\nmsgstr \"Den chilenske RUT er ugyldig.\"\n\n#: cn/forms.py:84\nmsgid \"Enter a post code in the format XXXXXX.\"\nmsgstr \"Indtast et postnummer i formatet XXXXXX.\"\n\n#: cn/forms.py:105\nmsgid \"ID Card Number consists of 15 or 18 digits.\"\nmsgstr \"ID-kortnummer består af 15 eller 18 cifre.\"\n\n#: cn/forms.py:106\nmsgid \"Invalid ID Card Number: Wrong checksum\"\nmsgstr \"Ugyldigt ID-kortnummer: Forkert kontrolsum\"\n\n#: cn/forms.py:107\nmsgid \"Invalid ID Card Number: Wrong birthdate\"\nmsgstr \"Ugyldigt ID-kortnummer: Forkert fødselsdato\"\n\n#: cn/forms.py:108\nmsgid \"Invalid ID Card Number: Wrong location code\"\nmsgstr \"Ugyldigt ID-kortnummer: Forkert lokationskode\"\n\n#: cn/forms.py:193\nmsgid \"Enter a valid phone number.\"\nmsgstr \"Indtast et gyldigt telefonnummer.\"\n\n#: cn/forms.py:210\nmsgid \"Enter a valid cell number.\"\nmsgstr \"Indtast et gyldigt mobilnummer\"\n\n#: cz/cz_regions.py:8\nmsgid \"Prague\"\nmsgstr \"Prag\"\n\n#: cz/cz_regions.py:9\nmsgid \"Central Bohemian Region\"\nmsgstr \"Centrale Böhmen\"\n\n#: cz/cz_regions.py:10\nmsgid \"South Bohemian Region\"\nmsgstr \"Sydlige Böhmen\"\n\n#: cz/cz_regions.py:11\nmsgid \"Pilsen Region\"\nmsgstr \"Pilsen-regionen\"\n\n#: cz/cz_regions.py:12\nmsgid \"Carlsbad Region\"\nmsgstr \"Carlsbad-regionen\"\n\n#: cz/cz_regions.py:13\nmsgid \"Usti Region\"\nmsgstr \"Usti-regionen\"\n\n#: cz/cz_regions.py:14\nmsgid \"Liberec Region\"\nmsgstr \"Liberec-regionen\"\n\n#: cz/cz_regions.py:15\nmsgid \"Hradec Region\"\nmsgstr \"Hradec-regionen\"\n\n#: cz/cz_regions.py:16\nmsgid \"Pardubice Region\"\nmsgstr \"Pardubice-region\"\n\n#: cz/cz_regions.py:17\nmsgid \"Vysocina Region\"\nmsgstr \"Vysocina region\"\n\n#: cz/cz_regions.py:18\nmsgid \"South Moravian Region\"\nmsgstr \"Sydmoravien\"\n\n#: cz/cz_regions.py:19\nmsgid \"Olomouc Region\"\nmsgstr \"Olomuc-regionen\"\n\n#: cz/cz_regions.py:20\nmsgid \"Zlin Region\"\nmsgstr \"Zlin-regionen\"\n\n#: cz/cz_regions.py:21\nmsgid \"Moravian-Silesian Region\"\nmsgstr \"Moravien-Silesien\"\n\n#: cz/forms.py:32 sk/forms.py:33\nmsgid \"Enter a postal code in the format XXXXX or XXX XX.\"\nmsgstr \"Indtast et postnr. i format XXXXX eller XXX XX.\"\n\n#: cz/forms.py:52\nmsgid \"Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.\"\nmsgstr \"Indtast et fødselsnr. i formatet XXXXXX/XXXX or XXXXXXXXXX.\"\n\n#: cz/forms.py:53\nmsgid \"Enter a valid birth number.\"\nmsgstr \"Indtast et gyldigt fødselsnummer.\"\n\n#: cz/forms.py:102\nmsgid \"Enter a valid IC number.\"\nmsgstr \"Indtast et IC-nummer.\"\n\n#: de/de_states.py:5\nmsgid \"Baden-Wuerttemberg\"\nmsgstr \"Baden-Wuerttemberg\"\n\n#: de/de_states.py:6\nmsgid \"Bavaria\"\nmsgstr \"Bavaria\"\n\n#: de/de_states.py:7\nmsgid \"Berlin\"\nmsgstr \"Berlin\"\n\n#: de/de_states.py:8\nmsgid \"Brandenburg\"\nmsgstr \"Brandenburg\"\n\n#: de/de_states.py:9\nmsgid \"Bremen\"\nmsgstr \"Bremen\"\n\n#: de/de_states.py:10\nmsgid \"Hamburg\"\nmsgstr \"Hamburg\"\n\n#: de/de_states.py:11\nmsgid \"Hessen\"\nmsgstr \"Hessen\"\n\n#: de/de_states.py:12\nmsgid \"Mecklenburg-Western Pomerania\"\nmsgstr \"Mecklenburg-Western Pomerania\"\n\n#: de/de_states.py:13\nmsgid \"Lower Saxony\"\nmsgstr \"Lower Saxony\"\n\n#: de/de_states.py:14\nmsgid \"North Rhine-Westphalia\"\nmsgstr \"North Rhine-Westphalia\"\n\n#: de/de_states.py:15\nmsgid \"Rhineland-Palatinate\"\nmsgstr \"Rhineland-Palatinate\"\n\n#: de/de_states.py:16\nmsgid \"Saarland\"\nmsgstr \"Saarland\"\n\n#: de/de_states.py:17\nmsgid \"Saxony\"\nmsgstr \"Saxony\"\n\n#: de/de_states.py:18\nmsgid \"Saxony-Anhalt\"\nmsgstr \"Saxony-Anhalt\"\n\n#: de/de_states.py:19\nmsgid \"Schleswig-Holstein\"\nmsgstr \"Schleswig-Holstein\"\n\n#: de/de_states.py:20\nmsgid \"Thuringia\"\nmsgstr \"Thuringia\"\n\n#: de/forms.py:20 fi/forms.py:18 fr/forms.py:20\nmsgid \"Enter a zip code in the format XXXXX.\"\nmsgstr \"Indtast et postnummer i formatet XXXXX\"\n\n#: de/forms.py:46\nmsgid \"\"\n\"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"format.\"\nmsgstr \"\"\n\"Indtast et tysk identiteskortsnr. i formatet XXXXXXXXXXX-XXXXXXX-XXXXXXX-X.\"\n\n#: es/es_provinces.py:5\nmsgid \"Araba\"\nmsgstr \"Araba\"\n\n#: es/es_provinces.py:6\nmsgid \"Albacete\"\nmsgstr \"Albacete\"\n\n#: es/es_provinces.py:7\nmsgid \"Alacant\"\nmsgstr \"Alacant\"\n\n#: es/es_provinces.py:8\nmsgid \"Almeria\"\nmsgstr \"Almeria\"\n\n#: es/es_provinces.py:9\nmsgid \"Avila\"\nmsgstr \"Avila\"\n\n#: es/es_provinces.py:10\nmsgid \"Badajoz\"\nmsgstr \"Badajoz\"\n\n#: es/es_provinces.py:11\nmsgid \"Illes Balears\"\nmsgstr \"Illes Balears\"\n\n#: es/es_provinces.py:12\nmsgid \"Barcelona\"\nmsgstr \"Barcelona\"\n\n#: es/es_provinces.py:13\nmsgid \"Burgos\"\nmsgstr \"Burgos\"\n\n#: es/es_provinces.py:14\nmsgid \"Caceres\"\nmsgstr \"Caceres\"\n\n#: es/es_provinces.py:15\nmsgid \"Cadiz\"\nmsgstr \"Cadiz\"\n\n#: es/es_provinces.py:16\nmsgid \"Castello\"\nmsgstr \"Castello\"\n\n#: es/es_provinces.py:17\nmsgid \"Ciudad Real\"\nmsgstr \"Ciudad Real\"\n\n#: es/es_provinces.py:18\nmsgid \"Cordoba\"\nmsgstr \"Cordoba\"\n\n#: es/es_provinces.py:19\nmsgid \"A Coruna\"\nmsgstr \"A Coruna\"\n\n#: es/es_provinces.py:20\nmsgid \"Cuenca\"\nmsgstr \"Cuenca\"\n\n#: es/es_provinces.py:21\nmsgid \"Girona\"\nmsgstr \"Girona\"\n\n#: es/es_provinces.py:22\nmsgid \"Granada\"\nmsgstr \"Granada\"\n\n#: es/es_provinces.py:23\nmsgid \"Guadalajara\"\nmsgstr \"Guadalajara\"\n\n#: es/es_provinces.py:24\nmsgid \"Guipuzkoa\"\nmsgstr \"Guipuzkoa\"\n\n#: es/es_provinces.py:25\nmsgid \"Huelva\"\nmsgstr \"Huelva\"\n\n#: es/es_provinces.py:26\nmsgid \"Huesca\"\nmsgstr \"Huesca\"\n\n#: es/es_provinces.py:27\nmsgid \"Jaen\"\nmsgstr \"Jaen\"\n\n#: es/es_provinces.py:28\nmsgid \"Leon\"\nmsgstr \"Leon\"\n\n#: es/es_provinces.py:29\nmsgid \"Lleida\"\nmsgstr \"Lleida\"\n\n#: es/es_provinces.py:30 es/es_regions.py:17\nmsgid \"La Rioja\"\nmsgstr \"La Rioja\"\n\n#: es/es_provinces.py:31\nmsgid \"Lugo\"\nmsgstr \"Lugo\"\n\n#: es/es_provinces.py:32 es/es_regions.py:18\nmsgid \"Madrid\"\nmsgstr \"Madrid\"\n\n#: es/es_provinces.py:33\nmsgid \"Malaga\"\nmsgstr \"Malaga\"\n\n#: es/es_provinces.py:34\nmsgid \"Murcia\"\nmsgstr \"Murcia\"\n\n#: es/es_provinces.py:35\nmsgid \"Navarre\"\nmsgstr \"Navarre\"\n\n#: es/es_provinces.py:36\nmsgid \"Ourense\"\nmsgstr \"Ourense\"\n\n#: es/es_provinces.py:37\nmsgid \"Asturias\"\nmsgstr \"Asturias\"\n\n#: es/es_provinces.py:38\nmsgid \"Palencia\"\nmsgstr \"Palencia\"\n\n#: es/es_provinces.py:39\nmsgid \"Las Palmas\"\nmsgstr \"Las Palmas\"\n\n#: es/es_provinces.py:40\nmsgid \"Pontevedra\"\nmsgstr \"Pontevedra\"\n\n#: es/es_provinces.py:41\nmsgid \"Salamanca\"\nmsgstr \"Salamanca\"\n\n#: es/es_provinces.py:42\nmsgid \"Santa Cruz de Tenerife\"\nmsgstr \"Santa Cruz de Tenerife\"\n\n#: es/es_provinces.py:43 es/es_regions.py:11\nmsgid \"Cantabria\"\nmsgstr \"Cantabria\"\n\n#: es/es_provinces.py:44\nmsgid \"Segovia\"\nmsgstr \"Segovia\"\n\n#: es/es_provinces.py:45\nmsgid \"Seville\"\nmsgstr \"Seville\"\n\n#: es/es_provinces.py:46\nmsgid \"Soria\"\nmsgstr \"Soria\"\n\n#: es/es_provinces.py:47\nmsgid \"Tarragona\"\nmsgstr \"Tarragona\"\n\n#: es/es_provinces.py:48\nmsgid \"Teruel\"\nmsgstr \"Teruel\"\n\n#: es/es_provinces.py:49\nmsgid \"Toledo\"\nmsgstr \"Toledo\"\n\n#: es/es_provinces.py:50\nmsgid \"Valencia\"\nmsgstr \"Valencia\"\n\n#: es/es_provinces.py:51\nmsgid \"Valladolid\"\nmsgstr \"Valladolid\"\n\n#: es/es_provinces.py:52\nmsgid \"Bizkaia\"\nmsgstr \"Bizkaia\"\n\n#: es/es_provinces.py:53\nmsgid \"Zamora\"\nmsgstr \"Zamora\"\n\n#: es/es_provinces.py:54\nmsgid \"Zaragoza\"\nmsgstr \"Zaragoza\"\n\n#: es/es_provinces.py:55\nmsgid \"Ceuta\"\nmsgstr \"Ceuta\"\n\n#: es/es_provinces.py:56\nmsgid \"Melilla\"\nmsgstr \"Melilla\"\n\n#: es/es_regions.py:5\nmsgid \"Andalusia\"\nmsgstr \"Andalusia\"\n\n#: es/es_regions.py:6\nmsgid \"Aragon\"\nmsgstr \"Aragon\"\n\n#: es/es_regions.py:7\nmsgid \"Principality of Asturias\"\nmsgstr \"Principality of Asturias\"\n\n#: es/es_regions.py:8\nmsgid \"Balearic Islands\"\nmsgstr \"Balearic Islands\"\n\n#: es/es_regions.py:9\nmsgid \"Basque Country\"\nmsgstr \"Basque Country\"\n\n#: es/es_regions.py:10\nmsgid \"Canary Islands\"\nmsgstr \"Canary Islands\"\n\n#: es/es_regions.py:12\nmsgid \"Castile-La Mancha\"\nmsgstr \"Castile-La Mancha\"\n\n#: es/es_regions.py:13\nmsgid \"Castile and Leon\"\nmsgstr \"Castile and Leon\"\n\n#: es/es_regions.py:14\nmsgid \"Catalonia\"\nmsgstr \"Catalonia\"\n\n#: es/es_regions.py:15\nmsgid \"Extremadura\"\nmsgstr \"Extremadura\"\n\n#: es/es_regions.py:16\nmsgid \"Galicia\"\nmsgstr \"Galicia\"\n\n#: es/es_regions.py:19\nmsgid \"Region of Murcia\"\nmsgstr \"Region of Murcia\"\n\n#: es/es_regions.py:20\nmsgid \"Foral Community of Navarre\"\nmsgstr \"Foral Community of Navarre\"\n\n#: es/es_regions.py:21\nmsgid \"Valencian Community\"\nmsgstr \"Valencian Community\"\n\n#: es/forms.py:26\nmsgid \"Enter a valid postal code in the range and format 01XXX - 52XXX.\"\nmsgstr \"Indtast et gyldigt postnr. i området 01XXX - 52XXX.\"\n\n#: es/forms.py:46\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or \"\n\"9XXXXXXXX.\"\nmsgstr \"\"\n\"Indtast et gyldigt telefonnr. i et af disse formater: 6XXXXXXXX, 8XXXXXXXX, \"\n\"9XXXXXXXX.\"\n\n#: es/forms.py:73\nmsgid \"Please enter a valid NIF, NIE, or CIF.\"\nmsgstr \"Indtast venligst gyldig NIF, NIE eller CIF.\"\n\n#: es/forms.py:74\nmsgid \"Please enter a valid NIF or NIE.\"\nmsgstr \"Indtast venligst gyldig NIF eller NIE.\"\n\n#: es/forms.py:75\nmsgid \"Invalid checksum for NIF.\"\nmsgstr \"Ugyldig kontrolsum for NIF.\"\n\n#: es/forms.py:76\nmsgid \"Invalid checksum for NIE.\"\nmsgstr \"Ugyldig kontrolsum for NIE.\"\n\n#: es/forms.py:77\nmsgid \"Invalid checksum for CIF.\"\nmsgstr \"Ugyldig kontrolsum for CIF.\"\n\n#: es/forms.py:149\nmsgid \"\"\n\"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.\"\nmsgstr \"\"\n\"Indtast venligst et gyldigt bankkontonr. i formatet XXX-XXXX-XX-XXXXXXXXXX.\"\n\n#: es/forms.py:150\nmsgid \"Invalid checksum for bank account number.\"\nmsgstr \"Ugyldig kontrolsum for bankkontonr.\"\n\n#: fi/forms.py:33\nmsgid \"Enter a valid Finnish social security number.\"\nmsgstr \"Indtast et gyldigt finsk sygesikringsnummer.\"\n\n#: fr/forms.py:35\nmsgid \"Phone numbers must be in 0X XX XX XX XX format.\"\nmsgstr \"Telefonnumre skal være i formatet 0X XX XX XX XX.\"\n\n#: gb/forms.py:25\nmsgid \"Enter a valid postcode.\"\nmsgstr \"Indtast et gyldigt postnummer.\"\n\n#: gb/gb_regions.py:11\nmsgid \"Bedfordshire\"\nmsgstr \"Bedfordshire\"\n\n#: gb/gb_regions.py:12\nmsgid \"Buckinghamshire\"\nmsgstr \"Buckinghamshire\"\n\n#: gb/gb_regions.py:14\nmsgid \"Cheshire\"\nmsgstr \"Cheshire\"\n\n#: gb/gb_regions.py:15\nmsgid \"Cornwall and Isles of Scilly\"\nmsgstr \"Cornwall and Isles of Scilly\"\n\n#: gb/gb_regions.py:16\nmsgid \"Cumbria\"\nmsgstr \"Cumbria\"\n\n#: gb/gb_regions.py:17\nmsgid \"Derbyshire\"\nmsgstr \"Derbyshire\"\n\n#: gb/gb_regions.py:18\nmsgid \"Devon\"\nmsgstr \"Devon\"\n\n#: gb/gb_regions.py:19\nmsgid \"Dorset\"\nmsgstr \"Dorset\"\n\n#: gb/gb_regions.py:20\nmsgid \"Durham\"\nmsgstr \"Durham\"\n\n#: gb/gb_regions.py:21\nmsgid \"East Sussex\"\nmsgstr \"East Sussex\"\n\n#: gb/gb_regions.py:22\nmsgid \"Essex\"\nmsgstr \"Essex\"\n\n#: gb/gb_regions.py:23\nmsgid \"Gloucestershire\"\nmsgstr \"Gloucestershire\"\n\n#: gb/gb_regions.py:24\nmsgid \"Greater London\"\nmsgstr \"Greater London\"\n\n#: gb/gb_regions.py:25\nmsgid \"Greater Manchester\"\nmsgstr \"Greater Manchester\"\n\n#: gb/gb_regions.py:26\nmsgid \"Hampshire\"\nmsgstr \"Hampshire\"\n\n#: gb/gb_regions.py:27\nmsgid \"Hertfordshire\"\nmsgstr \"Hertfordshire\"\n\n#: gb/gb_regions.py:28\nmsgid \"Kent\"\nmsgstr \"Kent\"\n\n#: gb/gb_regions.py:29\nmsgid \"Lancashire\"\nmsgstr \"Lancashire\"\n\n#: gb/gb_regions.py:30\nmsgid \"Leicestershire\"\nmsgstr \"Leicestershire\"\n\n#: gb/gb_regions.py:31\nmsgid \"Lincolnshire\"\nmsgstr \"Lincolnshire\"\n\n#: gb/gb_regions.py:32\nmsgid \"Merseyside\"\nmsgstr \"Merseyside\"\n\n#: gb/gb_regions.py:33\nmsgid \"Norfolk\"\nmsgstr \"Norfolk\"\n\n#: gb/gb_regions.py:34\nmsgid \"North Yorkshire\"\nmsgstr \"North Yorkshire\"\n\n#: gb/gb_regions.py:35\nmsgid \"Northamptonshire\"\nmsgstr \"Northamptonshire\"\n\n#: gb/gb_regions.py:36\nmsgid \"Northumberland\"\nmsgstr \"Northumberland\"\n\n#: gb/gb_regions.py:37\nmsgid \"Nottinghamshire\"\nmsgstr \"Nottinghamshire\"\n\n#: gb/gb_regions.py:38\nmsgid \"Oxfordshire\"\nmsgstr \"Oxfordshire\"\n\n#: gb/gb_regions.py:39\nmsgid \"Shropshire\"\nmsgstr \"Shropshire\"\n\n#: gb/gb_regions.py:40\nmsgid \"Somerset\"\nmsgstr \"Somerset\"\n\n#: gb/gb_regions.py:41\nmsgid \"South Yorkshire\"\nmsgstr \"South Yorkshire\"\n\n#: gb/gb_regions.py:42\nmsgid \"Staffordshire\"\nmsgstr \"Staffordshire\"\n\n#: gb/gb_regions.py:43\nmsgid \"Suffolk\"\nmsgstr \"Suffolk\"\n\n#: gb/gb_regions.py:44\nmsgid \"Surrey\"\nmsgstr \"Surrey\"\n\n#: gb/gb_regions.py:45\nmsgid \"Tyne and Wear\"\nmsgstr \"Tyne and Wear\"\n\n#: gb/gb_regions.py:46\nmsgid \"Warwickshire\"\nmsgstr \"Warwickshire\"\n\n#: gb/gb_regions.py:47\nmsgid \"West Midlands\"\nmsgstr \"West Midlands\"\n\n#: gb/gb_regions.py:48\nmsgid \"West Sussex\"\nmsgstr \"West Sussex\"\n\n#: gb/gb_regions.py:49\nmsgid \"West Yorkshire\"\nmsgstr \"West Yorkshire\"\n\n#: gb/gb_regions.py:50\nmsgid \"Wiltshire\"\nmsgstr \"Wiltshire\"\n\n#: gb/gb_regions.py:51\nmsgid \"Worcestershire\"\nmsgstr \"Worcestershire\"\n\n#: gb/gb_regions.py:55\nmsgid \"County Antrim\"\nmsgstr \"County Antrim\"\n\n#: gb/gb_regions.py:56\nmsgid \"County Armagh\"\nmsgstr \"County Armagh\"\n\n#: gb/gb_regions.py:57\nmsgid \"County Down\"\nmsgstr \"County Down\"\n\n#: gb/gb_regions.py:58\nmsgid \"County Fermanagh\"\nmsgstr \"County Fermanagh\"\n\n#: gb/gb_regions.py:59\nmsgid \"County Londonderry\"\nmsgstr \"County Londonderry\"\n\n#: gb/gb_regions.py:60\nmsgid \"County Tyrone\"\nmsgstr \"County Tyrone\"\n\n#: gb/gb_regions.py:64\nmsgid \"Clwyd\"\nmsgstr \"Clwyd\"\n\n#: gb/gb_regions.py:65\nmsgid \"Dyfed\"\nmsgstr \"Dyfed\"\n\n#: gb/gb_regions.py:66\nmsgid \"Gwent\"\nmsgstr \"Gwent\"\n\n#: gb/gb_regions.py:67\nmsgid \"Gwynedd\"\nmsgstr \"Gwynedd\"\n\n#: gb/gb_regions.py:68\nmsgid \"Mid Glamorgan\"\nmsgstr \"Mid Glamorgan\"\n\n#: gb/gb_regions.py:69\nmsgid \"Powys\"\nmsgstr \"Powys\"\n\n#: gb/gb_regions.py:70\nmsgid \"South Glamorgan\"\nmsgstr \"South Glamorgan\"\n\n#: gb/gb_regions.py:71\nmsgid \"West Glamorgan\"\nmsgstr \"West Glamorgan\"\n\n#: gb/gb_regions.py:75\nmsgid \"Borders\"\nmsgstr \"Borders\"\n\n#: gb/gb_regions.py:76\nmsgid \"Central Scotland\"\nmsgstr \"Central Scotland\"\n\n#: gb/gb_regions.py:77\nmsgid \"Dumfries and Galloway\"\nmsgstr \"Dumfries and Galloway\"\n\n#: gb/gb_regions.py:78\nmsgid \"Fife\"\nmsgstr \"Fife\"\n\n#: gb/gb_regions.py:79\nmsgid \"Grampian\"\nmsgstr \"Grampian\"\n\n#: gb/gb_regions.py:80\nmsgid \"Highland\"\nmsgstr \"Highland\"\n\n#: gb/gb_regions.py:81\nmsgid \"Lothian\"\nmsgstr \"Lothian\"\n\n#: gb/gb_regions.py:82\nmsgid \"Orkney Islands\"\nmsgstr \"Orkney Islands\"\n\n#: gb/gb_regions.py:83\nmsgid \"Shetland Islands\"\nmsgstr \"Shetland Islands\"\n\n#: gb/gb_regions.py:84\nmsgid \"Strathclyde\"\nmsgstr \"Strathclyde\"\n\n#: gb/gb_regions.py:85\nmsgid \"Tayside\"\nmsgstr \"Tayside\"\n\n#: gb/gb_regions.py:86\nmsgid \"Western Isles\"\nmsgstr \"Western Isles\"\n\n#: gb/gb_regions.py:90\nmsgid \"England\"\nmsgstr \"England\"\n\n#: gb/gb_regions.py:91\nmsgid \"Northern Ireland\"\nmsgstr \"Northern Ireland\"\n\n#: gb/gb_regions.py:92\nmsgid \"Scotland\"\nmsgstr \"Scotland\"\n\n#: gb/gb_regions.py:93\nmsgid \"Wales\"\nmsgstr \"Walisisk\"\n\n#: hk/forms.py:37\n#, python-format\nmsgid \"Phone number should not start with one of the followings: %s.\"\nmsgstr \"Telefonnummeret må ikke starte med et af følgende: %s.\"\n\n#: hk/forms.py:40\n#, python-format\nmsgid \"Phone number must be in one of the following formats: %s.\"\nmsgstr \"Telefonnummeret skal være i et af følgende formater: %s.\"\n\n#: hk/forms.py:42\n#, python-format\nmsgid \"Phone number should start with one of the followings: %s.\"\nmsgstr \"Telefonnummeret skal starte med et af følgende: %s.\"\n\n#: hr/forms.py:76\nmsgid \"Enter a valid 13 digit JMBG\"\nmsgstr \"Indtast et gyldigt 13-cifret JMBG\"\n\n#: hr/forms.py:77\nmsgid \"Error in date segment\"\nmsgstr \"Fejl i dato-segment\"\n\n#: hr/forms.py:123\nmsgid \"Enter a valid 11 digit OIB\"\nmsgstr \"Indtast et gyldigt 11-cifret OIB\"\n\n#: hr/forms.py:152 id/forms.py:112\nmsgid \"Enter a valid vehicle license plate number\"\nmsgstr \"Indtast et gyldigt bilnummer\"\n\n#: hr/forms.py:153\nmsgid \"Enter a valid location code\"\nmsgstr \"Indtast en gyldig lokationskode\"\n\n#: hr/forms.py:154\nmsgid \"Number part cannot be zero\"\nmsgstr \"Tal-delen kan ikke være nul\"\n\n#: hr/forms.py:190\nmsgid \"Enter a valid 5 digit postal code\"\nmsgstr \"Indtast et gyldigt femcifret postnummer\"\n\n#: hr/forms.py:218 id/forms.py:72 nl/forms.py:56\nmsgid \"Enter a valid phone number\"\nmsgstr \"Indtast et gyldigt telefonnummer\"\n\n#: hr/forms.py:219\nmsgid \"Enter a valid area or mobile network code\"\nmsgstr \"Indtast en gyldig område- eller mobilnetværkskode\"\n\n#: hr/forms.py:220\nmsgid \"The phone nubmer is too long\"\nmsgstr \"Telefonnummeret er for langt\"\n\n#: hr/forms.py:258\nmsgid \"Enter a valid 19 digit JMBAG starting with 601983\"\nmsgstr \"Indtast et gyldigt 19-cifret JMBAG startende med 601983\"\n\n#: hr/forms.py:259\nmsgid \"Card issue number cannot be zero\"\nmsgstr \"Kortudgivelsesnummer kan ikke være nul\"\n\n#: hr/hr_choices.py:14\nmsgid \"Grad Zagreb\"\nmsgstr \"Grad Zagreb\"\n\n#: hr/hr_choices.py:15\nmsgid \"Bjelovarsko-bilogorska županija\"\nmsgstr \"Bjelovarsko-bilogorska županija\"\n\n#: hr/hr_choices.py:16\nmsgid \"Brodsko-posavska županija\"\nmsgstr \"Brodsko-posavska županija\"\n\n#: hr/hr_choices.py:17\nmsgid \"Dubrovačko-neretvanska županija\"\nmsgstr \"Dubrovačko-neretvanska županija\"\n\n#: hr/hr_choices.py:18\nmsgid \"Istarska županija\"\nmsgstr \"Istarska županija\"\n\n#: hr/hr_choices.py:19\nmsgid \"Karlovačka županija\"\nmsgstr \"Karlovačka županija\"\n\n#: hr/hr_choices.py:20\nmsgid \"Koprivničko-križevačka županija\"\nmsgstr \"Koprivničko-križevačka županija\"\n\n#: hr/hr_choices.py:21\nmsgid \"Krapinsko-zagorska županija\"\nmsgstr \"Krapinsko-zagorska županija\"\n\n#: hr/hr_choices.py:22\nmsgid \"Ličko-senjska županija\"\nmsgstr \"Ličko-senjska županija\"\n\n#: hr/hr_choices.py:23\nmsgid \"Međimurska županija\"\nmsgstr \"Međimurska županija\"\n\n#: hr/hr_choices.py:24\nmsgid \"Osječko-baranjska županija\"\nmsgstr \"Osječko-baranjska županija\"\n\n#: hr/hr_choices.py:25\nmsgid \"Požeško-slavonska županija\"\nmsgstr \"Požeško-slavonska županija\"\n\n#: hr/hr_choices.py:26\nmsgid \"Primorsko-goranska županija\"\nmsgstr \"Primorsko-goranska županija\"\n\n#: hr/hr_choices.py:27\nmsgid \"Sisačko-moslavačka županija\"\nmsgstr \"Sisačko-moslavačka županija\"\n\n#: hr/hr_choices.py:28\nmsgid \"Splitsko-dalmatinska županija\"\nmsgstr \"Splitsko-dalmatinska županija\"\n\n#: hr/hr_choices.py:29\nmsgid \"Šibensko-kninska županija\"\nmsgstr \"Šibensko-kninska županija\"\n\n#: hr/hr_choices.py:30\nmsgid \"Varaždinska županija\"\nmsgstr \"Varaždinska županija\"\n\n#: hr/hr_choices.py:31\nmsgid \"Virovitičko-podravska županija\"\nmsgstr \"Virovitičko-podravska županija\"\n\n#: hr/hr_choices.py:32\nmsgid \"Vukovarsko-srijemska županija\"\nmsgstr \"Vukovarsko-srijemska županija\"\n\n#: hr/hr_choices.py:33\nmsgid \"Zadarska županija\"\nmsgstr \"Zadarska županija\"\n\n#: hr/hr_choices.py:34\nmsgid \"Zagrebačka županija\"\nmsgstr \"Zagrebačka županija\"\n\n#: id/forms.py:31\nmsgid \"Enter a valid post code\"\nmsgstr \"Indtast et gyldigt postnummer\"\n\n#: id/forms.py:176\nmsgid \"Enter a valid NIK/KTP number\"\nmsgstr \"Indtast et gyldigt NIK/KTP-nummer.\"\n\n#: id/id_choices.py:15\nmsgid \"Aceh\"\nmsgstr \"Aceh\"\n\n#: id/id_choices.py:16 id/id_choices.py:79\nmsgid \"Bali\"\nmsgstr \"Bali\"\n\n#: id/id_choices.py:17 id/id_choices.py:51\nmsgid \"Banten\"\nmsgstr \"Banten\"\n\n#: id/id_choices.py:18 id/id_choices.py:60\nmsgid \"Bengkulu\"\nmsgstr \"Bengkulu\"\n\n#: id/id_choices.py:19 id/id_choices.py:53\nmsgid \"Yogyakarta\"\nmsgstr \"Yogyakarta\"\n\n#: id/id_choices.py:20 id/id_choices.py:57\nmsgid \"Jakarta\"\nmsgstr \"Jakarta\"\n\n#: id/id_choices.py:21 id/id_choices.py:81\nmsgid \"Gorontalo\"\nmsgstr \"Gorontalo\"\n\n#: id/id_choices.py:22 id/id_choices.py:63\nmsgid \"Jambi\"\nmsgstr \"Jambi\"\n\n#: id/id_choices.py:23\nmsgid \"Jawa Barat\"\nmsgstr \"Jawa Barat\"\n\n#: id/id_choices.py:24\nmsgid \"Jawa Tengah\"\nmsgstr \"Jawa Tengah\"\n\n#: id/id_choices.py:25\nmsgid \"Jawa Timur\"\nmsgstr \"Jawa Timur\"\n\n#: id/id_choices.py:26 id/id_choices.py:94\nmsgid \"Kalimantan Barat\"\nmsgstr \"Kalimantan Barat\"\n\n#: id/id_choices.py:27 id/id_choices.py:72\nmsgid \"Kalimantan Selatan\"\nmsgstr \"Kalimantan Selatan\"\n\n#: id/id_choices.py:28 id/id_choices.py:95\nmsgid \"Kalimantan Tengah\"\nmsgstr \"Kalimantan Tengah\"\n\n#: id/id_choices.py:29 id/id_choices.py:96\nmsgid \"Kalimantan Timur\"\nmsgstr \"Kalimantan Timur\"\n\n#: id/id_choices.py:30\nmsgid \"Kepulauan Bangka-Belitung\"\nmsgstr \"Kepulauan Bangka-Belitung\"\n\n#: id/id_choices.py:31 id/id_choices.py:68\nmsgid \"Kepulauan Riau\"\nmsgstr \"Kepulauan Riau\"\n\n#: id/id_choices.py:32 id/id_choices.py:61\nmsgid \"Lampung\"\nmsgstr \"Lampung\"\n\n#: id/id_choices.py:33 id/id_choices.py:76\nmsgid \"Maluku\"\nmsgstr \"Maluku\"\n\n#: id/id_choices.py:34 id/id_choices.py:77\nmsgid \"Maluku Utara\"\nmsgstr \"Maluku Utara\"\n\n#: id/id_choices.py:35\nmsgid \"Nusa Tenggara Barat\"\nmsgstr \"Nusa Tenggara Barat\"\n\n#: id/id_choices.py:36\nmsgid \"Nusa Tenggara Timur\"\nmsgstr \"Nusa Tenggara Timur\"\n\n#: id/id_choices.py:37\nmsgid \"Papua\"\nmsgstr \"Papua\"\n\n#: id/id_choices.py:38\nmsgid \"Papua Barat\"\nmsgstr \"Papua Barat\"\n\n#: id/id_choices.py:39 id/id_choices.py:66\nmsgid \"Riau\"\nmsgstr \"Riau\"\n\n#: id/id_choices.py:40 id/id_choices.py:74\nmsgid \"Sulawesi Barat\"\nmsgstr \"Sulawesi Barat\"\n\n#: id/id_choices.py:41 id/id_choices.py:75\nmsgid \"Sulawesi Selatan\"\nmsgstr \"Sulawesi Selatan\"\n\n#: id/id_choices.py:42 id/id_choices.py:82\nmsgid \"Sulawesi Tengah\"\nmsgstr \"Sulawesi Tengah\"\n\n#: id/id_choices.py:43 id/id_choices.py:85\nmsgid \"Sulawesi Tenggara\"\nmsgstr \"Sulawesi Tenggara\"\n\n#: id/id_choices.py:44\nmsgid \"Sulawesi Utara\"\nmsgstr \"Sulawesi Utara\"\n\n#: id/id_choices.py:45 id/id_choices.py:58\nmsgid \"Sumatera Barat\"\nmsgstr \"Sumatera Barat\"\n\n#: id/id_choices.py:46 id/id_choices.py:62\nmsgid \"Sumatera Selatan\"\nmsgstr \"Sumatera Selatan\"\n\n#: id/id_choices.py:47 id/id_choices.py:64\nmsgid \"Sumatera Utara\"\nmsgstr \"Sumatera Utara\"\n\n#: id/id_choices.py:52\nmsgid \"Magelang\"\nmsgstr \"Magelang\"\n\n#: id/id_choices.py:54\nmsgid \"Surakarta - Solo\"\nmsgstr \"Surakarta - Solo\"\n\n#: id/id_choices.py:55\nmsgid \"Madiun\"\nmsgstr \"Madiun\"\n\n#: id/id_choices.py:56\nmsgid \"Kediri\"\nmsgstr \"Kediri\"\n\n#: id/id_choices.py:59\nmsgid \"Tapanuli\"\nmsgstr \"Tapanuli\"\n\n#: id/id_choices.py:65\nmsgid \"Nanggroe Aceh Darussalam\"\nmsgstr \"Nanggroe Aceh Darussalam\"\n\n#: id/id_choices.py:67\nmsgid \"Kepulauan Bangka Belitung\"\nmsgstr \"Kepulauan Bangka Belitung\"\n\n#: id/id_choices.py:69\nmsgid \"Corps Consulate\"\nmsgstr \"Corps Consulate\"\n\n#: id/id_choices.py:70\nmsgid \"Corps Diplomatic\"\nmsgstr \"Corps Diplomatic\"\n\n#: id/id_choices.py:71\nmsgid \"Bandung\"\nmsgstr \"Bandung\"\n\n#: id/id_choices.py:73\nmsgid \"Sulawesi Utara Daratan\"\nmsgstr \"Sulawesi Utara Daratan\"\n\n#: id/id_choices.py:78\nmsgid \"NTT - Timor\"\nmsgstr \"NTT - Timor\"\n\n#: id/id_choices.py:80\nmsgid \"Sulawesi Utara Kepulauan\"\nmsgstr \"Sulawesi Utara Kepulauan\"\n\n#: id/id_choices.py:83\nmsgid \"NTB - Lombok\"\nmsgstr \"NTB - Lombok\"\n\n#: id/id_choices.py:84\nmsgid \"Papua dan Papua Barat\"\nmsgstr \"Papua dan Papua Barat\"\n\n#: id/id_choices.py:86\nmsgid \"Cirebon\"\nmsgstr \"Cirebon\"\n\n#: id/id_choices.py:87\nmsgid \"NTB - Sumbawa\"\nmsgstr \"NTB - Sumbawa\"\n\n#: id/id_choices.py:88\nmsgid \"NTT - Flores\"\nmsgstr \"NTT - Flores\"\n\n#: id/id_choices.py:89\nmsgid \"NTT - Sumba\"\nmsgstr \"NTT - Sumba\"\n\n#: id/id_choices.py:90\nmsgid \"Bogor\"\nmsgstr \"Bogor\"\n\n#: id/id_choices.py:91\nmsgid \"Pekalongan\"\nmsgstr \"Pekalongan\"\n\n#: id/id_choices.py:92\nmsgid \"Semarang\"\nmsgstr \"Semarang\"\n\n#: id/id_choices.py:93\nmsgid \"Pati\"\nmsgstr \"Pati\"\n\n#: id/id_choices.py:97\nmsgid \"Surabaya\"\nmsgstr \"Surabaya\"\n\n#: id/id_choices.py:98\nmsgid \"Madura\"\nmsgstr \"Madura\"\n\n#: id/id_choices.py:99\nmsgid \"Malang\"\nmsgstr \"Malang\"\n\n#: id/id_choices.py:100\nmsgid \"Jember\"\nmsgstr \"Jember\"\n\n#: id/id_choices.py:101\nmsgid \"Banyumas\"\nmsgstr \"Banyumas\"\n\n#: id/id_choices.py:102\nmsgid \"Federal Government\"\nmsgstr \"Federal Government\"\n\n#: id/id_choices.py:103\nmsgid \"Bojonegoro\"\nmsgstr \"Bojonegoro\"\n\n#: id/id_choices.py:104\nmsgid \"Purwakarta\"\nmsgstr \"Purwakarta\"\n\n#: id/id_choices.py:105\nmsgid \"Sidoarjo\"\nmsgstr \"Sidoarjo\"\n\n#: id/id_choices.py:106\nmsgid \"Garut\"\nmsgstr \"Garut\"\n\n#: ie/ie_counties.py:8\nmsgid \"Antrim\"\nmsgstr \"Antrim\"\n\n#: ie/ie_counties.py:9\nmsgid \"Armagh\"\nmsgstr \"Armagh\"\n\n#: ie/ie_counties.py:10\nmsgid \"Carlow\"\nmsgstr \"Carlow\"\n\n#: ie/ie_counties.py:11\nmsgid \"Cavan\"\nmsgstr \"Cavan\"\n\n#: ie/ie_counties.py:12\nmsgid \"Clare\"\nmsgstr \"Clare\"\n\n#: ie/ie_counties.py:13\nmsgid \"Cork\"\nmsgstr \"Cork\"\n\n#: ie/ie_counties.py:14\nmsgid \"Derry\"\nmsgstr \"Derry\"\n\n#: ie/ie_counties.py:15\nmsgid \"Donegal\"\nmsgstr \"Donegal\"\n\n#: ie/ie_counties.py:16\nmsgid \"Down\"\nmsgstr \"Down\"\n\n#: ie/ie_counties.py:17\nmsgid \"Dublin\"\nmsgstr \"Dublin\"\n\n#: ie/ie_counties.py:18\nmsgid \"Fermanagh\"\nmsgstr \"Fermanagh\"\n\n#: ie/ie_counties.py:19\nmsgid \"Galway\"\nmsgstr \"Galway\"\n\n#: ie/ie_counties.py:20\nmsgid \"Kerry\"\nmsgstr \"Kerry\"\n\n#: ie/ie_counties.py:21\nmsgid \"Kildare\"\nmsgstr \"Kildare\"\n\n#: ie/ie_counties.py:22\nmsgid \"Kilkenny\"\nmsgstr \"Kilkenny\"\n\n#: ie/ie_counties.py:23\nmsgid \"Laois\"\nmsgstr \"Laois\"\n\n#: ie/ie_counties.py:24\nmsgid \"Leitrim\"\nmsgstr \"Leitrim\"\n\n#: ie/ie_counties.py:25\nmsgid \"Limerick\"\nmsgstr \"Limerick\"\n\n#: ie/ie_counties.py:26\nmsgid \"Longford\"\nmsgstr \"Longford\"\n\n#: ie/ie_counties.py:27\nmsgid \"Louth\"\nmsgstr \"Louth\"\n\n#: ie/ie_counties.py:28\nmsgid \"Mayo\"\nmsgstr \"Mayo\"\n\n#: ie/ie_counties.py:29\nmsgid \"Meath\"\nmsgstr \"Meath\"\n\n#: ie/ie_counties.py:30\nmsgid \"Monaghan\"\nmsgstr \"Monaghan\"\n\n#: ie/ie_counties.py:31\nmsgid \"Offaly\"\nmsgstr \"Offaly\"\n\n#: ie/ie_counties.py:32\nmsgid \"Roscommon\"\nmsgstr \"Roscommon\"\n\n#: ie/ie_counties.py:33\nmsgid \"Sligo\"\nmsgstr \"Shigo\"\n\n#: ie/ie_counties.py:34\nmsgid \"Tipperary\"\nmsgstr \"Tipperary\"\n\n#: ie/ie_counties.py:35\nmsgid \"Tyrone\"\nmsgstr \"Tyrol\"\n\n#: ie/ie_counties.py:36\nmsgid \"Waterford\"\nmsgstr \"Waterford\"\n\n#: ie/ie_counties.py:37\nmsgid \"Westmeath\"\nmsgstr \"Westmeath\"\n\n#: ie/ie_counties.py:38\nmsgid \"Wexford\"\nmsgstr \"Wexford\"\n\n#: ie/ie_counties.py:39\nmsgid \"Wicklow\"\nmsgstr \"Wicklow\"\n\n#: il/forms.py:32\nmsgid \"Enter a postal code in the format XXXXX\"\nmsgstr \"Indtast et postnummer i formatet XXXXX\"\n\n#: il/forms.py:51\nmsgid \"Enter a valid ID number.\"\nmsgstr \"Indtast et gyldigt ID-nummer.\"\n\n#: in_/forms.py:41\nmsgid \"Enter a zip code in the format XXXXXX or XXX XXX.\"\nmsgstr \"Indtast et postnummer i formatet XXXXXX eller XXX XXX.\"\n\n#: in_/forms.py:64\nmsgid \"Enter an Indian state or territory.\"\nmsgstr \"Indtast en indisk stat eller territorie.\"\n\n#: in_/forms.py:103\nmsgid \"Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.\"\nmsgstr \"Telefonnumre skal være angivet i 02X-8x, 03X-7X eller 04X-6X format.\"\n\n#: is_/forms.py:22\nmsgid \"\"\n\"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.\"\nmsgstr \"\"\n\"Indtast et gyldigt islandsk identifikationsnr. Formatet er XXXXXX-XXXX.\"\n\n#: is_/forms.py:23\nmsgid \"The Icelandic identification number is not valid.\"\nmsgstr \"Det islandske identifikationsnummer er ikke gyldigt.\"\n\n#: it/forms.py:21\nmsgid \"Enter a valid zip code.\"\nmsgstr \"Indtast et gyldigt postnummer.\"\n\n#: it/forms.py:48\nmsgid \"Enter a valid Social Security number.\"\nmsgstr \"Indtast et gyldigt sygesikringsnummer.\"\n\n#: it/forms.py:73\nmsgid \"Enter a valid VAT number.\"\nmsgstr \"Indtast et gyldigt momsnummer.\"\n\n#: jp/forms.py:19\nmsgid \"Enter a postal code in the format XXXXXXX or XXX-XXXX.\"\nmsgstr \"Indtast et gyldigt postnr. i formatet XXXXXXX eller XXX-XXXX.\"\n\n#: jp/jp_prefectures.py:4\nmsgid \"Hokkaido\"\nmsgstr \"Hokkaido\"\n\n#: jp/jp_prefectures.py:5\nmsgid \"Aomori\"\nmsgstr \"Aomori\"\n\n#: jp/jp_prefectures.py:6\nmsgid \"Iwate\"\nmsgstr \"Iwate\"\n\n#: jp/jp_prefectures.py:7\nmsgid \"Miyagi\"\nmsgstr \"Miyagi\"\n\n#: jp/jp_prefectures.py:8\nmsgid \"Akita\"\nmsgstr \"Akita\"\n\n#: jp/jp_prefectures.py:9\nmsgid \"Yamagata\"\nmsgstr \"Yamagata\"\n\n#: jp/jp_prefectures.py:10\nmsgid \"Fukushima\"\nmsgstr \"Fukushima\"\n\n#: jp/jp_prefectures.py:11\nmsgid \"Ibaraki\"\nmsgstr \"Ibaraki\"\n\n#: jp/jp_prefectures.py:12\nmsgid \"Tochigi\"\nmsgstr \"Tochigi\"\n\n#: jp/jp_prefectures.py:13\nmsgid \"Gunma\"\nmsgstr \"Gunma\"\n\n#: jp/jp_prefectures.py:14\nmsgid \"Saitama\"\nmsgstr \"Saitama\"\n\n#: jp/jp_prefectures.py:15\nmsgid \"Chiba\"\nmsgstr \"Chiba\"\n\n#: jp/jp_prefectures.py:16\nmsgid \"Tokyo\"\nmsgstr \"Tokyo\"\n\n#: jp/jp_prefectures.py:17\nmsgid \"Kanagawa\"\nmsgstr \"Kanagawa\"\n\n#: jp/jp_prefectures.py:18\nmsgid \"Yamanashi\"\nmsgstr \"Yamanashi\"\n\n#: jp/jp_prefectures.py:19\nmsgid \"Nagano\"\nmsgstr \"Nagano\"\n\n#: jp/jp_prefectures.py:20\nmsgid \"Niigata\"\nmsgstr \"Niigata\"\n\n#: jp/jp_prefectures.py:21\nmsgid \"Toyama\"\nmsgstr \"Toyama\"\n\n#: jp/jp_prefectures.py:22\nmsgid \"Ishikawa\"\nmsgstr \"Ishikawa\"\n\n#: jp/jp_prefectures.py:23\nmsgid \"Fukui\"\nmsgstr \"Fukui\"\n\n#: jp/jp_prefectures.py:24\nmsgid \"Gifu\"\nmsgstr \"Gifu\"\n\n#: jp/jp_prefectures.py:25\nmsgid \"Shizuoka\"\nmsgstr \"Shizuoka\"\n\n#: jp/jp_prefectures.py:26\nmsgid \"Aichi\"\nmsgstr \"Aichi\"\n\n#: jp/jp_prefectures.py:27\nmsgid \"Mie\"\nmsgstr \"Mie\"\n\n#: jp/jp_prefectures.py:28\nmsgid \"Shiga\"\nmsgstr \"Shiga\"\n\n#: jp/jp_prefectures.py:29\nmsgid \"Kyoto\"\nmsgstr \"Kyoto\"\n\n#: jp/jp_prefectures.py:30\nmsgid \"Osaka\"\nmsgstr \"Osaka\"\n\n#: jp/jp_prefectures.py:31\nmsgid \"Hyogo\"\nmsgstr \"Hyogo\"\n\n#: jp/jp_prefectures.py:32\nmsgid \"Nara\"\nmsgstr \"Nara\"\n\n#: jp/jp_prefectures.py:33\nmsgid \"Wakayama\"\nmsgstr \"Wakayama\"\n\n#: jp/jp_prefectures.py:34\nmsgid \"Tottori\"\nmsgstr \"Tottori\"\n\n#: jp/jp_prefectures.py:35\nmsgid \"Shimane\"\nmsgstr \"Shimane\"\n\n#: jp/jp_prefectures.py:36\nmsgid \"Okayama\"\nmsgstr \"Okayama\"\n\n#: jp/jp_prefectures.py:37\nmsgid \"Hiroshima\"\nmsgstr \"Hiroshima\"\n\n#: jp/jp_prefectures.py:38\nmsgid \"Yamaguchi\"\nmsgstr \"Yamaguchi\"\n\n#: jp/jp_prefectures.py:39\nmsgid \"Tokushima\"\nmsgstr \"Tokushima\"\n\n#: jp/jp_prefectures.py:40\nmsgid \"Kagawa\"\nmsgstr \"Kagawa\"\n\n#: jp/jp_prefectures.py:41\nmsgid \"Ehime\"\nmsgstr \"Ehime\"\n\n#: jp/jp_prefectures.py:42\nmsgid \"Kochi\"\nmsgstr \"Kochi\"\n\n#: jp/jp_prefectures.py:43\nmsgid \"Fukuoka\"\nmsgstr \"Fukuoka\"\n\n#: jp/jp_prefectures.py:44\nmsgid \"Saga\"\nmsgstr \"Saga\"\n\n#: jp/jp_prefectures.py:45\nmsgid \"Nagasaki\"\nmsgstr \"Nagasaki\"\n\n#: jp/jp_prefectures.py:46\nmsgid \"Kumamoto\"\nmsgstr \"Kumamoto\"\n\n#: jp/jp_prefectures.py:47\nmsgid \"Oita\"\nmsgstr \"Oita\"\n\n#: jp/jp_prefectures.py:48\nmsgid \"Miyazaki\"\nmsgstr \"Miyazaki\"\n\n#: jp/jp_prefectures.py:49\nmsgid \"Kagoshima\"\nmsgstr \"Kagoshima\"\n\n#: jp/jp_prefectures.py:50\nmsgid \"Okinawa\"\nmsgstr \"Okinawa\"\n\n#: kw/forms.py:27\nmsgid \"Enter a valid Kuwaiti Civil ID number\"\nmsgstr \"Indtast et gyldigt kuwaitisk personnummer.\"\n\n#: mk/forms.py:18\nmsgid \"\"\n\"Identity card numbers must contain either 4 to 7 digits or an uppercase \"\n\"letter and 7 digits.\"\nmsgstr \"\"\n\"Identitetskortnummer skal indeholde enten mellem fire og syv cifre eller et \"\n\"stort bogstav og syv cifre\"\n\n#: mk/forms.py:57 si/forms.py:24\nmsgid \"This field should contain exactly 13 digits.\"\nmsgstr \"Dette felt burde indeholde præcis 13 cifre.\"\n\n#: mk/forms.py:58\nmsgid \"The first 7 digits of the UMCN must represent a valid past date.\"\nmsgstr \"\"\n\"De første syv cifre af UMCN'en skal repræsentere en gyldig dato i fortiden.\"\n\n#: mk/forms.py:59\nmsgid \"The UMCN is not valid.\"\nmsgstr \"UMCN'en er ikke gyldig.\"\n\n#: mk/mk_choices.py:10\nmsgid \"Aerodrom\"\nmsgstr \"Aerodrom\"\n\n#: mk/mk_choices.py:11\nmsgid \"Aračinovo\"\nmsgstr \"Aračinovo\"\n\n#: mk/mk_choices.py:12\nmsgid \"Berovo\"\nmsgstr \"Berovo\"\n\n#: mk/mk_choices.py:13\nmsgid \"Bitola\"\nmsgstr \"Bitola\"\n\n#: mk/mk_choices.py:14\nmsgid \"Bogdanci\"\nmsgstr \"Bogdanci\"\n\n#: mk/mk_choices.py:15\nmsgid \"Bogovinje\"\nmsgstr \"Bogovinje\"\n\n#: mk/mk_choices.py:16\nmsgid \"Bosilovo\"\nmsgstr \"Bosilovo\"\n\n#: mk/mk_choices.py:17\nmsgid \"Brvenica\"\nmsgstr \"Brvenica\"\n\n#: mk/mk_choices.py:18\nmsgid \"Butel\"\nmsgstr \"Butel\"\n\n#: mk/mk_choices.py:19\nmsgid \"Valandovo\"\nmsgstr \"Valandovo\"\n\n#: mk/mk_choices.py:20\nmsgid \"Vasilevo\"\nmsgstr \"Vasilevo\"\n\n#: mk/mk_choices.py:21\nmsgid \"Vevčani\"\nmsgstr \"Vevčani\"\n\n#: mk/mk_choices.py:22\nmsgid \"Veles\"\nmsgstr \"Veles\"\n\n#: mk/mk_choices.py:23\nmsgid \"Vinica\"\nmsgstr \"Vinica\"\n\n#: mk/mk_choices.py:24\nmsgid \"Vraneštica\"\nmsgstr \"Vraneštica\"\n\n#: mk/mk_choices.py:25\nmsgid \"Vrapčište\"\nmsgstr \"Vrapčište\"\n\n#: mk/mk_choices.py:26\nmsgid \"Gazi Baba\"\nmsgstr \"Gazi Baba\"\n\n#: mk/mk_choices.py:27\nmsgid \"Gevgelija\"\nmsgstr \"Gevgelija\"\n\n#: mk/mk_choices.py:28\nmsgid \"Gostivar\"\nmsgstr \"Gostivar\"\n\n#: mk/mk_choices.py:29\nmsgid \"Gradsko\"\nmsgstr \"Gradsko\"\n\n#: mk/mk_choices.py:30\nmsgid \"Debar\"\nmsgstr \"Debar\"\n\n#: mk/mk_choices.py:31\nmsgid \"Debarca\"\nmsgstr \"Debarca\"\n\n#: mk/mk_choices.py:32\nmsgid \"Delčevo\"\nmsgstr \"Delčevo\"\n\n#: mk/mk_choices.py:33\nmsgid \"Demir Kapija\"\nmsgstr \"Demir Kapija\"\n\n#: mk/mk_choices.py:34\nmsgid \"Demir Hisar\"\nmsgstr \"Demir Hisar\"\n\n#: mk/mk_choices.py:35\nmsgid \"Dolneni\"\nmsgstr \"Dolneni\"\n\n#: mk/mk_choices.py:36\nmsgid \"Drugovo\"\nmsgstr \"Drugovo\"\n\n#: mk/mk_choices.py:37\nmsgid \"Gjorče Petrov\"\nmsgstr \"Gjorče Petrov\"\n\n#: mk/mk_choices.py:38\nmsgid \"Želino\"\nmsgstr \"Želino\"\n\n#: mk/mk_choices.py:39\nmsgid \"Zajas\"\nmsgstr \"Zajas\"\n\n#: mk/mk_choices.py:40\nmsgid \"Zelenikovo\"\nmsgstr \"Zelenikovo\"\n\n#: mk/mk_choices.py:41\nmsgid \"Zrnovci\"\nmsgstr \"Zrnovci\"\n\n#: mk/mk_choices.py:42\nmsgid \"Ilinden\"\nmsgstr \"Ilinden\"\n\n#: mk/mk_choices.py:43\nmsgid \"Jegunovce\"\nmsgstr \"Jegunovce\"\n\n#: mk/mk_choices.py:44\nmsgid \"Kavadarci\"\nmsgstr \"Kavadarci\"\n\n#: mk/mk_choices.py:45\nmsgid \"Karbinci\"\nmsgstr \"Karbinci\"\n\n#: mk/mk_choices.py:46\nmsgid \"Karpoš\"\nmsgstr \"Karpoš\"\n\n#: mk/mk_choices.py:47\nmsgid \"Kisela Voda\"\nmsgstr \"Kisela Voda\"\n\n#: mk/mk_choices.py:48\nmsgid \"Kičevo\"\nmsgstr \"Kičevo\"\n\n#: mk/mk_choices.py:49\nmsgid \"Konče\"\nmsgstr \"Konče\"\n\n#: mk/mk_choices.py:50\nmsgid \"Koćani\"\nmsgstr \"Koćani\"\n\n#: mk/mk_choices.py:51\nmsgid \"Kratovo\"\nmsgstr \"Kratovo\"\n\n#: mk/mk_choices.py:52\nmsgid \"Kriva Palanka\"\nmsgstr \"Kriva Palanka\"\n\n#: mk/mk_choices.py:53\nmsgid \"Krivogaštani\"\nmsgstr \"Krivogaštani\"\n\n#: mk/mk_choices.py:54\nmsgid \"Kruševo\"\nmsgstr \"Kruševo\"\n\n#: mk/mk_choices.py:55\nmsgid \"Kumanovo\"\nmsgstr \"Kumanovo\"\n\n#: mk/mk_choices.py:56\nmsgid \"Lipkovo\"\nmsgstr \"Lipkovo\"\n\n#: mk/mk_choices.py:57\nmsgid \"Lozovo\"\nmsgstr \"Lozovo\"\n\n#: mk/mk_choices.py:58\nmsgid \"Mavrovo i Rostuša\"\nmsgstr \"Mavrovo i Rostuša\"\n\n#: mk/mk_choices.py:59\nmsgid \"Makedonska Kamenica\"\nmsgstr \"Makedonska Kamenica\"\n\n#: mk/mk_choices.py:60\nmsgid \"Makedonski Brod\"\nmsgstr \"Makedonski Brod\"\n\n#: mk/mk_choices.py:61\nmsgid \"Mogila\"\nmsgstr \"Mogila\"\n\n#: mk/mk_choices.py:62\nmsgid \"Negotino\"\nmsgstr \"Negotino\"\n\n#: mk/mk_choices.py:63\nmsgid \"Novaci\"\nmsgstr \"Novaci\"\n\n#: mk/mk_choices.py:64\nmsgid \"Novo Selo\"\nmsgstr \"Novo Selo\"\n\n#: mk/mk_choices.py:65\nmsgid \"Oslomej\"\nmsgstr \"Oslomej\"\n\n#: mk/mk_choices.py:66\nmsgid \"Ohrid\"\nmsgstr \"Ohrid\"\n\n#: mk/mk_choices.py:67\nmsgid \"Petrovec\"\nmsgstr \"Petrovec\"\n\n#: mk/mk_choices.py:68\nmsgid \"Pehčevo\"\nmsgstr \"Pehčevo\"\n\n#: mk/mk_choices.py:69\nmsgid \"Plasnica\"\nmsgstr \"Plasnica\"\n\n#: mk/mk_choices.py:70\nmsgid \"Prilep\"\nmsgstr \"Prilep\"\n\n#: mk/mk_choices.py:71\nmsgid \"Probištip\"\nmsgstr \"Probištip\"\n\n#: mk/mk_choices.py:72\nmsgid \"Radoviš\"\nmsgstr \"Radoviš\"\n\n#: mk/mk_choices.py:73\nmsgid \"Rankovce\"\nmsgstr \"Rankovce\"\n\n#: mk/mk_choices.py:74\nmsgid \"Resen\"\nmsgstr \"Resen\"\n\n#: mk/mk_choices.py:75\nmsgid \"Rosoman\"\nmsgstr \"Rosoman\"\n\n#: mk/mk_choices.py:76\nmsgid \"Saraj\"\nmsgstr \"Saraj\"\n\n#: mk/mk_choices.py:77\nmsgid \"Sveti Nikole\"\nmsgstr \"Sveti Nikole\"\n\n#: mk/mk_choices.py:78\nmsgid \"Sopište\"\nmsgstr \"Sopište\"\n\n#: mk/mk_choices.py:79\nmsgid \"Star Dojran\"\nmsgstr \"Star Dojran\"\n\n#: mk/mk_choices.py:80\nmsgid \"Staro Nagoričane\"\nmsgstr \"Staro Nagoričane\"\n\n#: mk/mk_choices.py:81\nmsgid \"Struga\"\nmsgstr \"Struga\"\n\n#: mk/mk_choices.py:82\nmsgid \"Strumica\"\nmsgstr \"Strumica\"\n\n#: mk/mk_choices.py:83\nmsgid \"Studeničani\"\nmsgstr \"Studeničani\"\n\n#: mk/mk_choices.py:84\nmsgid \"Tearce\"\nmsgstr \"Tearce\"\n\n#: mk/mk_choices.py:85\nmsgid \"Tetovo\"\nmsgstr \"Tetovo\"\n\n#: mk/mk_choices.py:86\nmsgid \"Centar\"\nmsgstr \"Centar\"\n\n#: mk/mk_choices.py:87\nmsgid \"Centar-Župa\"\nmsgstr \"Centar-Župa\"\n\n#: mk/mk_choices.py:88\nmsgid \"Čair\"\nmsgstr \"Čair\"\n\n#: mk/mk_choices.py:89\nmsgid \"Čaška\"\nmsgstr \"Čaška\"\n\n#: mk/mk_choices.py:90\nmsgid \"Češinovo-Obleševo\"\nmsgstr \"Češinovo-Obleševo\"\n\n#: mk/mk_choices.py:91\nmsgid \"Čučer-Sandevo\"\nmsgstr \"Čučer-Sandevo\"\n\n#: mk/mk_choices.py:92\nmsgid \"Štip\"\nmsgstr \"Štip\"\n\n#: mk/mk_choices.py:93\nmsgid \"Šuto Orizari\"\nmsgstr \"Šuto Orizari\"\n\n#: mk/models.py:11\nmsgid \"Macedonian identity card number\"\nmsgstr \"Makedonsk identitetskort-nummer\"\n\n#: mk/models.py:25\nmsgid \"A Macedonian municipality (2 character code)\"\nmsgstr \"En makedonsk kommune (2 bogstaver)\"\n\n#: mk/models.py:35\nmsgid \"Unique master citizen number (13 digits)\"\nmsgstr \"Unikt hovedborgernummer (13 tal)\"\n\n#: mx/forms.py:67\nmsgid \"Enter a valid zip code in the format XXXXX.\"\nmsgstr \"Indtast et gyldigt postnummer angivet i formatet XXXXX.\"\n\n#: mx/forms.py:110\nmsgid \"Enter a valid RFC.\"\nmsgstr \"Indtast en gyldig RFC.\"\n\n#: mx/forms.py:111\nmsgid \"Invalid checksum for RFC.\"\nmsgstr \"Ugyldig kontrolsum for RFC.\"\n\n#: mx/forms.py:191\nmsgid \"Enter a valid CURP.\"\nmsgstr \"Indtast en gyldig CURP.\"\n\n#: mx/forms.py:192\nmsgid \"Invalid checksum for CURP.\"\nmsgstr \"Ugyldig kontrolsum for CURP.\"\n\n#: mx/models.py:14\nmsgid \"Mexico state (three uppercase letters)\"\nmsgstr \"Mexikansk stat (3 store bogstaver)\"\n\n#: mx/models.py:27\nmsgid \"Mexico zip code\"\nmsgstr \"Mexikansk postnummer.\"\n\n#: mx/models.py:44\nmsgid \"Mexican RFC\"\nmsgstr \"Mexikansk RFC\"\n\n#: mx/models.py:61\nmsgid \"Mexican CURP\"\nmsgstr \"Mexikansk CURP\"\n\n#: mx/mx_states.py:14\nmsgid \"Aguascalientes\"\nmsgstr \"Aguascalientes\"\n\n#: mx/mx_states.py:15\nmsgid \"Baja California\"\nmsgstr \"Baja California\"\n\n#: mx/mx_states.py:16\nmsgid \"Baja California Sur\"\nmsgstr \"Baja California Sur\"\n\n#: mx/mx_states.py:17\nmsgid \"Campeche\"\nmsgstr \"Campeche\"\n\n#: mx/mx_states.py:18\nmsgid \"Chihuahua\"\nmsgstr \"Chihuahua\"\n\n#: mx/mx_states.py:19\nmsgid \"Chiapas\"\nmsgstr \"Chiapas\"\n\n#: mx/mx_states.py:20\nmsgid \"Coahuila\"\nmsgstr \"Coahuila\"\n\n#: mx/mx_states.py:21\nmsgid \"Colima\"\nmsgstr \"Colima\"\n\n#: mx/mx_states.py:22\nmsgid \"Distrito Federal\"\nmsgstr \"Distrito Federal\"\n\n#: mx/mx_states.py:23\nmsgid \"Durango\"\nmsgstr \"Durango\"\n\n#: mx/mx_states.py:24\nmsgid \"Guerrero\"\nmsgstr \"Guerrero\"\n\n#: mx/mx_states.py:25\nmsgid \"Guanajuato\"\nmsgstr \"Guanajuato\"\n\n#: mx/mx_states.py:26\nmsgid \"Hidalgo\"\nmsgstr \"Hidalgo\"\n\n#: mx/mx_states.py:27\nmsgid \"Jalisco\"\nmsgstr \"Jalisco\"\n\n#: mx/mx_states.py:28\nmsgid \"Estado de México\"\nmsgstr \"Estado de México\"\n\n#: mx/mx_states.py:29\nmsgid \"Michoacán\"\nmsgstr \"Michoacán\"\n\n#: mx/mx_states.py:30\nmsgid \"Morelos\"\nmsgstr \"Morelos\"\n\n#: mx/mx_states.py:31\nmsgid \"Nayarit\"\nmsgstr \"Nayarit\"\n\n#: mx/mx_states.py:32\nmsgid \"Nuevo León\"\nmsgstr \"Nuevo León\"\n\n#: mx/mx_states.py:33\nmsgid \"Oaxaca\"\nmsgstr \"Oaxaca\"\n\n#: mx/mx_states.py:34\nmsgid \"Puebla\"\nmsgstr \"Puebla\"\n\n#: mx/mx_states.py:35\nmsgid \"Querétaro\"\nmsgstr \"Querétaro\"\n\n#: mx/mx_states.py:36\nmsgid \"Quintana Roo\"\nmsgstr \"Quintana Roo\"\n\n#: mx/mx_states.py:37\nmsgid \"Sinaloa\"\nmsgstr \"Sinaloa\"\n\n#: mx/mx_states.py:38\nmsgid \"San Luis Potosí\"\nmsgstr \"San Luis Potosí\"\n\n#: mx/mx_states.py:39\nmsgid \"Sonora\"\nmsgstr \"Sonora\"\n\n#: mx/mx_states.py:40\nmsgid \"Tabasco\"\nmsgstr \"Tabasco\"\n\n#: mx/mx_states.py:41\nmsgid \"Tamaulipas\"\nmsgstr \"Tamaulipas\"\n\n#: mx/mx_states.py:42\nmsgid \"Tlaxcala\"\nmsgstr \"Tlaxcala\"\n\n#: mx/mx_states.py:43\nmsgid \"Veracruz\"\nmsgstr \"Veracruz\"\n\n#: mx/mx_states.py:44\nmsgid \"Yucatán\"\nmsgstr \"Yucatán\"\n\n#: mx/mx_states.py:45\nmsgid \"Zacatecas\"\nmsgstr \"Zacatecas\"\n\n#: nl/forms.py:26\nmsgid \"Enter a valid postal code\"\nmsgstr \"Indtast et gyldigt postnummer\"\n\n#: nl/forms.py:82\nmsgid \"Enter a valid SoFi number\"\nmsgstr \"Indtast et gyldigt SoFi-nummer\"\n\n#: nl/nl_provinces.py:4\nmsgid \"Drenthe\"\nmsgstr \"Drenthe\"\n\n#: nl/nl_provinces.py:5\nmsgid \"Flevoland\"\nmsgstr \"Flevoland\"\n\n#: nl/nl_provinces.py:6\nmsgid \"Friesland\"\nmsgstr \"Friesland\"\n\n#: nl/nl_provinces.py:7\nmsgid \"Gelderland\"\nmsgstr \"Gelderland\"\n\n#: nl/nl_provinces.py:8\nmsgid \"Groningen\"\nmsgstr \"Groningen\"\n\n#: nl/nl_provinces.py:10\nmsgid \"Noord-Brabant\"\nmsgstr \"Noord-Brabant\"\n\n#: nl/nl_provinces.py:11\nmsgid \"Noord-Holland\"\nmsgstr \"Noord-Holland\"\n\n#: nl/nl_provinces.py:12\nmsgid \"Overijssel\"\nmsgstr \"Overijssel\"\n\n#: nl/nl_provinces.py:13\nmsgid \"Utrecht\"\nmsgstr \"Utrecht\"\n\n#: nl/nl_provinces.py:14\nmsgid \"Zeeland\"\nmsgstr \"Zeeland\"\n\n#: nl/nl_provinces.py:15\nmsgid \"Zuid-Holland\"\nmsgstr \"Zuid-Holland\"\n\n#: no/forms.py:39\nmsgid \"Enter a valid Norwegian social security number.\"\nmsgstr \"Indtast et gyldigt norsk sygesikringsnummer.\"\n\n#: pe/forms.py:28\nmsgid \"This field requires 8 digits.\"\nmsgstr \"Dette felt kræver 8 cifre.\"\n\n#: pe/forms.py:56\nmsgid \"This field requires 11 digits.\"\nmsgstr \"Dette felt kræver 11 cifre.\"\n\n#: pl/forms.py:42\nmsgid \"National Identification Number consists of 11 digits.\"\nmsgstr \"Nationale identifikationsnumre kræver 11 cifre.\"\n\n#: pl/forms.py:43\nmsgid \"Wrong checksum for the National Identification Number.\"\nmsgstr \"Forkert kontrolsum for nationalt identifikationsnummer.\"\n\n#: pl/forms.py:79\nmsgid \"National ID Card Number consists of 3 letters and 6 digits.\"\nmsgstr \"Nationalt ID-kortnummer består af 3 bostaver og 6 tal\"\n\n#: pl/forms.py:80\nmsgid \"Wrong checksum for the National ID Card Number.\"\nmsgstr \"Forkert kontrolsum for det nationale ID-kortnummer.\"\n\n#: pl/forms.py:131\nmsgid \"\"\n\"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or \"\n\"XXXXXXXXXX.\"\nmsgstr \"\"\n\"Indtast et momsregistreringsnummer felt (NIP) angivet i formatet XXX-XXX-XX-\"\n\"XX, XXX-XX-XX-XXX eller XXXXXXXXXX.\"\n\n#: pl/forms.py:132\nmsgid \"Wrong checksum for the Tax Number (NIP).\"\nmsgstr \"Forkert kontrolsum for NIP. \"\n\n#: pl/forms.py:171\nmsgid \"National Business Register Number (REGON) consists of 9 or 14 digits.\"\nmsgstr \"National Business Register Number (REGON) består af 9 eller 14 cifre.\"\n\n#: pl/forms.py:172\nmsgid \"Wrong checksum for the National Business Register Number (REGON).\"\nmsgstr \"Forkert kontrolsum for REGON-nr.\"\n\n#: pl/forms.py:212\nmsgid \"Enter a postal code in the format XX-XXX.\"\nmsgstr \"Indtast et postnummer i formatet XX-XXX.\"\n\n#: pl/pl_voivodeships.py:8\nmsgid \"Lower Silesia\"\nmsgstr \"Lower Silesia\"\n\n#: pl/pl_voivodeships.py:9\nmsgid \"Kuyavia-Pomerania\"\nmsgstr \"Kuyavia-Pomerania\"\n\n#: pl/pl_voivodeships.py:10\nmsgid \"Lublin\"\nmsgstr \"Lublin\"\n\n#: pl/pl_voivodeships.py:11\nmsgid \"Lubusz\"\nmsgstr \"Lubusz\"\n\n#: pl/pl_voivodeships.py:12\nmsgid \"Lodz\"\nmsgstr \"Lodz\"\n\n#: pl/pl_voivodeships.py:13\nmsgid \"Lesser Poland\"\nmsgstr \"Lesser Poland\"\n\n#: pl/pl_voivodeships.py:14\nmsgid \"Masovia\"\nmsgstr \"Masovia\"\n\n#: pl/pl_voivodeships.py:15\nmsgid \"Opole\"\nmsgstr \"Opole\"\n\n#: pl/pl_voivodeships.py:16\nmsgid \"Subcarpatia\"\nmsgstr \"Subcarpatia\"\n\n#: pl/pl_voivodeships.py:17\nmsgid \"Podlasie\"\nmsgstr \"Podlasie\"\n\n#: pl/pl_voivodeships.py:18\nmsgid \"Pomerania\"\nmsgstr \"Pomerania\"\n\n#: pl/pl_voivodeships.py:19\nmsgid \"Silesia\"\nmsgstr \"Silesia\"\n\n#: pl/pl_voivodeships.py:20\nmsgid \"Swietokrzyskie\"\nmsgstr \"Swietokrzyskie\"\n\n#: pl/pl_voivodeships.py:21\nmsgid \"Warmia-Masuria\"\nmsgstr \"Warmia-Masuria\"\n\n#: pl/pl_voivodeships.py:22\nmsgid \"Greater Poland\"\nmsgstr \"Greater Poland\"\n\n#: pl/pl_voivodeships.py:23\nmsgid \"West Pomerania\"\nmsgstr \"West Pomerania\"\n\n#: pt/forms.py:19\nmsgid \"Enter a zip code in the format XXXX-XXX.\"\nmsgstr \"Indtast et postnummer i formatet XXXX-XXX.\"\n\n#: pt/forms.py:39\nmsgid \"Phone numbers must have 9 digits, or start by + or 00.\"\nmsgstr \"Telefonnumre skal have 9 cifre, eller starte med + eller 00.\"\n\n#: ro/forms.py:22\nmsgid \"Enter a valid CIF.\"\nmsgstr \"Indtast et gyldigt CIF.\"\n\n#: ro/forms.py:59\nmsgid \"Enter a valid CNP.\"\nmsgstr \"Indtast et gyldigt CNP.\"\n\n#: ro/forms.py:143\nmsgid \"Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format\"\nmsgstr \"Indtast et gyldigt IBAN i formatet ROXX-XXXX-XXXX-XXXX-XXXX-XXXX.\"\n\n#: ro/forms.py:175\nmsgid \"Phone numbers must be in XXXX-XXXXXX format.\"\nmsgstr \"Telefinnumre skal være i formatet XXXX-XXXXXX.\"\n\n#: ro/forms.py:200\nmsgid \"Enter a valid postal code in the format XXXXXX\"\nmsgstr \"Indtast et gyldigt postnummer i formatet XXXXXX\"\n\n#: ru/forms.py:37\nmsgid \"Enter a postal code in the format XXXXXX.\"\nmsgstr \"Indtast et postnummer med formatet XXXXXX.\"\n\n#: ru/forms.py:50\nmsgid \"Enter a passport number in the format XXXX XXXXXX.\"\nmsgstr \"Indtast pasnummer i formatet XXXX XXXXXX.\"\n\n#: ru/forms.py:63\nmsgid \"Enter a passport number in the format XX XXXXXXX.\"\nmsgstr \"Indtast pasnummer i formatet XX XXXXXXX.\"\n\n#: ru/ru_regions.py:10\nmsgid \"Central Federal County\"\nmsgstr \"Central Federal County\"\n\n#: ru/ru_regions.py:11\nmsgid \"South Federal County\"\nmsgstr \"South Federal County\"\n\n#: ru/ru_regions.py:12\nmsgid \"North-West Federal County\"\nmsgstr \"North-West Federal County\"\n\n#: ru/ru_regions.py:13\nmsgid \"Far-East Federal County\"\nmsgstr \"Far-East Federal County\"\n\n#: ru/ru_regions.py:14\nmsgid \"Siberian Federal County\"\nmsgstr \"Siberian Federal County\"\n\n#: ru/ru_regions.py:15\nmsgid \"Ural Federal County\"\nmsgstr \"Ural Federal County\"\n\n#: ru/ru_regions.py:16\nmsgid \"Privolzhsky Federal County\"\nmsgstr \"Privolzhsky Federal County\"\n\n#: ru/ru_regions.py:17\nmsgid \"North-Caucasian Federal County\"\nmsgstr \"North-Caucasian Federal County\"\n\n#: ru/ru_regions.py:21\nmsgid \"Moskva\"\nmsgstr \"Moskva\"\n\n#: ru/ru_regions.py:22\nmsgid \"Saint-Peterburg\"\nmsgstr \"Skt. Petersborg\"\n\n#: ru/ru_regions.py:23\nmsgid \"Moskovskaya oblast'\"\nmsgstr \"Moskovskaya oblast'\"\n\n#: ru/ru_regions.py:24\nmsgid \"Adygeya, Respublika\"\nmsgstr \"Adygeya, Respublika\"\n\n#: ru/ru_regions.py:25\nmsgid \"Bashkortostan, Respublika\"\nmsgstr \"Bashkortostan, Respublika\"\n\n#: ru/ru_regions.py:26\nmsgid \"Buryatia, Respublika\"\nmsgstr \"Buryatia, Respublika\"\n\n#: ru/ru_regions.py:27\nmsgid \"Altay, Respublika\"\nmsgstr \"Altay, Respublika\"\n\n#: ru/ru_regions.py:28\nmsgid \"Dagestan, Respublika\"\nmsgstr \"Dagestan, Respublika\"\n\n#: ru/ru_regions.py:29\nmsgid \"Ingushskaya Respublika\"\nmsgstr \"Ingushskaya Respublika\"\n\n#: ru/ru_regions.py:30\nmsgid \"Kabardino-Balkarskaya Respublika\"\nmsgstr \"Kabardino-Balkarskaya Respublika\"\n\n#: ru/ru_regions.py:31\nmsgid \"Kalmykia, Respublika\"\nmsgstr \"Kalmykia, Respublika\"\n\n#: ru/ru_regions.py:32\nmsgid \"Karachaevo-Cherkesskaya Respublika\"\nmsgstr \"Karachaevo-Cherkesskaya Respublika\"\n\n#: ru/ru_regions.py:33\nmsgid \"Karelia, Respublika\"\nmsgstr \"Karelia, Respublika\"\n\n#: ru/ru_regions.py:34\nmsgid \"Komi, Respublika\"\nmsgstr \"Komi, Respublika\"\n\n#: ru/ru_regions.py:35\nmsgid \"Mariy Ehl, Respublika\"\nmsgstr \"Mariy Ehl, Respublika\"\n\n#: ru/ru_regions.py:36\nmsgid \"Mordovia, Respublika\"\nmsgstr \"Mordovia, Respublika\"\n\n#: ru/ru_regions.py:37\nmsgid \"Sakha, Respublika (Yakutiya)\"\nmsgstr \"Sakha, Respublika (Yakutiya)\"\n\n#: ru/ru_regions.py:38\nmsgid \"Severnaya Osetia, Respublika (Alania)\"\nmsgstr \"Severnaya Osetia, Respublika (Alania)\"\n\n#: ru/ru_regions.py:39\nmsgid \"Tatarstan, Respublika\"\nmsgstr \"Tatarstan, Respublika\"\n\n#: ru/ru_regions.py:40\nmsgid \"Tyva, Respublika (Tuva)\"\nmsgstr \"Tyva, Respublika (Tuva)\"\n\n#: ru/ru_regions.py:41\nmsgid \"Udmurtskaya Respublika\"\nmsgstr \"Udmurtskaya Respublika\"\n\n#: ru/ru_regions.py:42\nmsgid \"Khakassiya, Respublika\"\nmsgstr \"Khakassiya, Respublika\"\n\n#: ru/ru_regions.py:43\nmsgid \"Chechenskaya Respublika\"\nmsgstr \"Chechenskaya Respublika\"\n\n#: ru/ru_regions.py:44\nmsgid \"Chuvashskaya Respublika\"\nmsgstr \"Chuvashskaya Respublika\"\n\n#: ru/ru_regions.py:45\nmsgid \"Altayskiy Kray\"\nmsgstr \"Altayskiy Kray\"\n\n#: ru/ru_regions.py:46\nmsgid \"Zabaykalskiy Kray\"\nmsgstr \"Zabaykalskiy Kray\"\n\n#: ru/ru_regions.py:47\nmsgid \"Kamchatskiy Kray\"\nmsgstr \"Kamchatskiy Kray\"\n\n#: ru/ru_regions.py:48\nmsgid \"Krasnodarskiy Kray\"\nmsgstr \"Krasnodarskiy Kray\"\n\n#: ru/ru_regions.py:49\nmsgid \"Krasnoyarskiy Kray\"\nmsgstr \"Krasnoyarskiy Kray\"\n\n#: ru/ru_regions.py:50\nmsgid \"Permskiy Kray\"\nmsgstr \"Permskiy Kray\"\n\n#: ru/ru_regions.py:51\nmsgid \"Primorskiy Kray\"\nmsgstr \"Primorskiy Kray\"\n\n#: ru/ru_regions.py:52\nmsgid \"Stavropol'siyy Kray\"\nmsgstr \"Stavropol'siyy Kray\"\n\n#: ru/ru_regions.py:53\nmsgid \"Khabarovskiy Kray\"\nmsgstr \"Khabarovskiy Kray\"\n\n#: ru/ru_regions.py:54\nmsgid \"Amurskaya oblast'\"\nmsgstr \"Amurskaya oblast'\"\n\n#: ru/ru_regions.py:55\nmsgid \"Arkhangel'skaya oblast'\"\nmsgstr \"Arkhangel'skaya oblast'\"\n\n#: ru/ru_regions.py:56\nmsgid \"Astrakhanskaya oblast'\"\nmsgstr \"Astrakhanskaya oblast'\"\n\n#: ru/ru_regions.py:57\nmsgid \"Belgorodskaya oblast'\"\nmsgstr \"Belgorodskaya oblast'\"\n\n#: ru/ru_regions.py:58\nmsgid \"Bryanskaya oblast'\"\nmsgstr \"Bryanskaya oblast'\"\n\n#: ru/ru_regions.py:59\nmsgid \"Vladimirskaya oblast'\"\nmsgstr \"Vladimirskaya oblast'\"\n\n#: ru/ru_regions.py:60\nmsgid \"Volgogradskaya oblast'\"\nmsgstr \"Volgogradskaya oblast'\"\n\n#: ru/ru_regions.py:61\nmsgid \"Vologodskaya oblast'\"\nmsgstr \"Vologodskaya oblast'\"\n\n#: ru/ru_regions.py:62\nmsgid \"Voronezhskaya oblast'\"\nmsgstr \"Voronezhskaya oblast'\"\n\n#: ru/ru_regions.py:63\nmsgid \"Ivanovskaya oblast'\"\nmsgstr \"Ivanovskaya oblast'\"\n\n#: ru/ru_regions.py:64\nmsgid \"Irkutskaya oblast'\"\nmsgstr \"Irkutskaya oblast'\"\n\n#: ru/ru_regions.py:65\nmsgid \"Kaliningradskaya oblast'\"\nmsgstr \"Kaliningradskaya oblast'\"\n\n#: ru/ru_regions.py:66\nmsgid \"Kaluzhskaya oblast'\"\nmsgstr \"Kaluzhskaya oblast'\"\n\n#: ru/ru_regions.py:67\nmsgid \"Kemerovskaya oblast'\"\nmsgstr \"Kemerovskaya oblast'\"\n\n#: ru/ru_regions.py:68\nmsgid \"Kirovskaya oblast'\"\nmsgstr \"Kirovskaya oblast'\"\n\n#: ru/ru_regions.py:69\nmsgid \"Kostromskaya oblast'\"\nmsgstr \"Kostromskaya oblast'\"\n\n#: ru/ru_regions.py:70\nmsgid \"Kurganskaya oblast'\"\nmsgstr \"Kurganskaya oblast'\"\n\n#: ru/ru_regions.py:71\nmsgid \"Kurskaya oblast'\"\nmsgstr \"Kurskaya oblast'\"\n\n#: ru/ru_regions.py:72\nmsgid \"Leningradskaya oblast'\"\nmsgstr \"Leningradskaya oblast'\"\n\n#: ru/ru_regions.py:73\nmsgid \"Lipeckaya oblast'\"\nmsgstr \"Lipeckaya oblast'\"\n\n#: ru/ru_regions.py:74\nmsgid \"Magadanskaya oblast'\"\nmsgstr \"Magadanskaya oblast'\"\n\n#: ru/ru_regions.py:75\nmsgid \"Murmanskaya oblast'\"\nmsgstr \"Murmanskaya oblast'\"\n\n#: ru/ru_regions.py:76\nmsgid \"Nizhegorodskaja oblast'\"\nmsgstr \"Nizhegorodskaja oblast'\"\n\n#: ru/ru_regions.py:77\nmsgid \"Novgorodskaya oblast'\"\nmsgstr \"Novgorodskaya oblast'\"\n\n#: ru/ru_regions.py:78\nmsgid \"Novosibirskaya oblast'\"\nmsgstr \"Novosibirskaya oblast'\"\n\n#: ru/ru_regions.py:79\nmsgid \"Omskaya oblast'\"\nmsgstr \"Omskaya oblast'\"\n\n#: ru/ru_regions.py:80\nmsgid \"Orenburgskaya oblast'\"\nmsgstr \"Orenburgskaya oblast'\"\n\n#: ru/ru_regions.py:81\nmsgid \"Orlovskaya oblast'\"\nmsgstr \"Orlovskaya oblast'\"\n\n#: ru/ru_regions.py:82\nmsgid \"Penzenskaya oblast'\"\nmsgstr \"Penzenskaya oblast'\"\n\n#: ru/ru_regions.py:83\nmsgid \"Pskovskaya oblast'\"\nmsgstr \"Pskovskaya oblast'\"\n\n#: ru/ru_regions.py:84\nmsgid \"Rostovskaya oblast'\"\nmsgstr \"Rostovskaya oblast'\"\n\n#: ru/ru_regions.py:85\nmsgid \"Rjazanskaya oblast'\"\nmsgstr \"Rjazanskaya oblast'\"\n\n#: ru/ru_regions.py:86\nmsgid \"Samarskaya oblast'\"\nmsgstr \"Samarskaya oblast'\"\n\n#: ru/ru_regions.py:87\nmsgid \"Saratovskaya oblast'\"\nmsgstr \"Saratovskaya oblast'\"\n\n#: ru/ru_regions.py:88\nmsgid \"Sakhalinskaya oblast'\"\nmsgstr \"Sakhalinskaya oblast'\"\n\n#: ru/ru_regions.py:89\nmsgid \"Sverdlovskaya oblast'\"\nmsgstr \"Sverdlovskaya oblast'\"\n\n#: ru/ru_regions.py:90\nmsgid \"Smolenskaya oblast'\"\nmsgstr \"Smolenskaya oblast'\"\n\n#: ru/ru_regions.py:91\nmsgid \"Tambovskaya oblast'\"\nmsgstr \"Tambovskaya oblast'\"\n\n#: ru/ru_regions.py:92\nmsgid \"Tverskaya oblast'\"\nmsgstr \"Tverskaya oblast'\"\n\n#: ru/ru_regions.py:93\nmsgid \"Tomskaya oblast'\"\nmsgstr \"Tomskaya oblast'\"\n\n#: ru/ru_regions.py:94\nmsgid \"Tul'skaya oblast'\"\nmsgstr \"Tul'skaya oblast'\"\n\n#: ru/ru_regions.py:95\nmsgid \"Tyumenskaya oblast'\"\nmsgstr \"Tyumenskaya oblast'\"\n\n#: ru/ru_regions.py:96\nmsgid \"Ul'ianovskaya oblast'\"\nmsgstr \"Ul'ianovskaya oblast'\"\n\n#: ru/ru_regions.py:97\nmsgid \"Chelyabinskaya oblast'\"\nmsgstr \"Chelyabinskaya oblast'\"\n\n#: ru/ru_regions.py:98\nmsgid \"Yaroslavskaya oblast'\"\nmsgstr \"Yaroslavskaya oblast'\"\n\n#: ru/ru_regions.py:99\nmsgid \"Evreyskaya avtonomnaja oblast'\"\nmsgstr \"Evreyskaya avtonomnaja oblast'\"\n\n#: ru/ru_regions.py:100\nmsgid \"Neneckiy autonomnyy okrug\"\nmsgstr \"Neneckiy autonomnyy okrug\"\n\n#: ru/ru_regions.py:101\nmsgid \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\nmsgstr \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\n\n#: ru/ru_regions.py:102\nmsgid \"Chukotskiy avtonomnyy okrug\"\nmsgstr \"Chukotskiy avtonomnyy okrug\"\n\n#: ru/ru_regions.py:103\nmsgid \"Yamalo-Neneckiy avtonomnyy okrug\"\nmsgstr \"Yamalo-Neneckiy avtonomnyy okrug\"\n\n#: se/forms.py:54\nmsgid \"Enter a valid Swedish organisation number.\"\nmsgstr \"Indtast et gyldigt svensk organisationsnummer.\"\n\n#: se/forms.py:111\nmsgid \"Enter a valid Swedish personal identity number.\"\nmsgstr \"Indtast et gyldigt svensk personnummer.\"\n\n#: se/forms.py:112\nmsgid \"Co-ordination numbers are not allowed.\"\nmsgstr \"Koordinationsnumre er ikke tilladt.\"\n\n#: se/forms.py:154\nmsgid \"Enter a Swedish postal code in the format XXXXX.\"\nmsgstr \"Indtast et svensk postnummer i formatet XXXXX.\"\n\n#: se/se_counties.py:16\nmsgid \"Stockholm\"\nmsgstr \"Stockholm\"\n\n#: se/se_counties.py:17\nmsgid \"Västerbotten\"\nmsgstr \"Västerbotten\"\n\n#: se/se_counties.py:18\nmsgid \"Norrbotten\"\nmsgstr \"Norrbotten\"\n\n#: se/se_counties.py:19\nmsgid \"Uppsala\"\nmsgstr \"Uppsala\"\n\n#: se/se_counties.py:20\nmsgid \"Södermanland\"\nmsgstr \"Södermanland\"\n\n#: se/se_counties.py:21\nmsgid \"Östergötland\"\nmsgstr \"Östergötland\"\n\n#: se/se_counties.py:22\nmsgid \"Jönköping\"\nmsgstr \"Jönköping\"\n\n#: se/se_counties.py:23\nmsgid \"Kronoberg\"\nmsgstr \"Kronoberg\"\n\n#: se/se_counties.py:24\nmsgid \"Kalmar\"\nmsgstr \"Kalmar\"\n\n#: se/se_counties.py:25\nmsgid \"Gotland\"\nmsgstr \"Gotland\"\n\n#: se/se_counties.py:26\nmsgid \"Blekinge\"\nmsgstr \"Blekinge\"\n\n#: se/se_counties.py:27\nmsgid \"Skåne\"\nmsgstr \"Skåne\"\n\n#: se/se_counties.py:28\nmsgid \"Halland\"\nmsgstr \"Halland\"\n\n#: se/se_counties.py:29\nmsgid \"Västra Götaland\"\nmsgstr \"Västra Götaland\"\n\n#: se/se_counties.py:30\nmsgid \"Värmland\"\nmsgstr \"Värmland\"\n\n#: se/se_counties.py:31\nmsgid \"Örebro\"\nmsgstr \"Örebro\"\n\n#: se/se_counties.py:32\nmsgid \"Västmanland\"\nmsgstr \"Västmanland\"\n\n#: se/se_counties.py:33\nmsgid \"Dalarna\"\nmsgstr \"Dalarna\"\n\n#: se/se_counties.py:34\nmsgid \"Gävleborg\"\nmsgstr \"Gävleborg\"\n\n#: se/se_counties.py:35\nmsgid \"Västernorrland\"\nmsgstr \"Västernorrland\"\n\n#: se/se_counties.py:36\nmsgid \"Jämtland\"\nmsgstr \"Jämtland\"\n\n#: si/forms.py:25\nmsgid \"The first 7 digits of the EMSO must represent a valid past date.\"\nmsgstr \"\"\n\"De første 7 cifre i EMSOen skal representere en gyldig dato i fortiden.\"\n\n#: si/forms.py:26\nmsgid \"The EMSO is not valid.\"\nmsgstr \"Denne EMSO er ugyldig.\"\n\n#: si/forms.py:86\nmsgid \"Enter a valid tax number in form SIXXXXXXXX\"\nmsgstr \"\"\n\"Indtast et gyldigt momsregistreringsnummer angivet i formatet SIXXXXXXXX\"\n\n#: si/forms.py:151\nmsgid \"Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.\"\nmsgstr \"\"\n\"Indtast telefonnummer angivet i formatet +386 XXXXXXXX eller 0XXXXXXXX.\"\n\n#: sk/sk_districts.py:8\nmsgid \"Banska Bystrica\"\nmsgstr \"Banska Bystrica\"\n\n#: sk/sk_districts.py:9\nmsgid \"Banska Stiavnica\"\nmsgstr \"Banska Stiavnica\"\n\n#: sk/sk_districts.py:10\nmsgid \"Bardejov\"\nmsgstr \"Bardejov\"\n\n#: sk/sk_districts.py:11\nmsgid \"Banovce nad Bebravou\"\nmsgstr \"Banovce nad Bebravou\"\n\n#: sk/sk_districts.py:12\nmsgid \"Brezno\"\nmsgstr \"Brezno\"\n\n#: sk/sk_districts.py:13\nmsgid \"Bratislava I\"\nmsgstr \"Bratislava I\"\n\n#: sk/sk_districts.py:14\nmsgid \"Bratislava II\"\nmsgstr \"Bratislava II\"\n\n#: sk/sk_districts.py:15\nmsgid \"Bratislava III\"\nmsgstr \"Bratislava III\"\n\n#: sk/sk_districts.py:16\nmsgid \"Bratislava IV\"\nmsgstr \"Bratislava IV\"\n\n#: sk/sk_districts.py:17\nmsgid \"Bratislava V\"\nmsgstr \"Bratislava V\"\n\n#: sk/sk_districts.py:18\nmsgid \"Bytca\"\nmsgstr \"Bytca\"\n\n#: sk/sk_districts.py:19\nmsgid \"Cadca\"\nmsgstr \"Cadca\"\n\n#: sk/sk_districts.py:20\nmsgid \"Detva\"\nmsgstr \"Detva\"\n\n#: sk/sk_districts.py:21\nmsgid \"Dolny Kubin\"\nmsgstr \"Dolny Kubin\"\n\n#: sk/sk_districts.py:22\nmsgid \"Dunajska Streda\"\nmsgstr \"Dunajska Streda\"\n\n#: sk/sk_districts.py:23\nmsgid \"Galanta\"\nmsgstr \"Galanta\"\n\n#: sk/sk_districts.py:24\nmsgid \"Gelnica\"\nmsgstr \"Gelnica\"\n\n#: sk/sk_districts.py:25\nmsgid \"Hlohovec\"\nmsgstr \"Hlohovec\"\n\n#: sk/sk_districts.py:26\nmsgid \"Humenne\"\nmsgstr \"Humenne\"\n\n#: sk/sk_districts.py:27\nmsgid \"Ilava\"\nmsgstr \"Ilava\"\n\n#: sk/sk_districts.py:28\nmsgid \"Kezmarok\"\nmsgstr \"Kezmarok\"\n\n#: sk/sk_districts.py:29\nmsgid \"Komarno\"\nmsgstr \"Komarno\"\n\n#: sk/sk_districts.py:30\nmsgid \"Kosice I\"\nmsgstr \"Kosice I\"\n\n#: sk/sk_districts.py:31\nmsgid \"Kosice II\"\nmsgstr \"Kosice II\"\n\n#: sk/sk_districts.py:32\nmsgid \"Kosice III\"\nmsgstr \"Kosice III\"\n\n#: sk/sk_districts.py:33\nmsgid \"Kosice IV\"\nmsgstr \"Kosice IV\"\n\n#: sk/sk_districts.py:34\nmsgid \"Kosice - okolie\"\nmsgstr \"Kosice - okolie\"\n\n#: sk/sk_districts.py:35\nmsgid \"Krupina\"\nmsgstr \"Krupina\"\n\n#: sk/sk_districts.py:36\nmsgid \"Kysucke Nove Mesto\"\nmsgstr \"Kysucke Nove Mesto\"\n\n#: sk/sk_districts.py:37\nmsgid \"Levice\"\nmsgstr \"Levice\"\n\n#: sk/sk_districts.py:38\nmsgid \"Levoca\"\nmsgstr \"Levoca\"\n\n#: sk/sk_districts.py:39\nmsgid \"Liptovsky Mikulas\"\nmsgstr \"Liptovsky Mikulas\"\n\n#: sk/sk_districts.py:40\nmsgid \"Lucenec\"\nmsgstr \"Lucenec\"\n\n#: sk/sk_districts.py:41\nmsgid \"Malacky\"\nmsgstr \"Malacky\"\n\n#: sk/sk_districts.py:42\nmsgid \"Martin\"\nmsgstr \"Martin\"\n\n#: sk/sk_districts.py:43\nmsgid \"Medzilaborce\"\nmsgstr \"Medzilaborce\"\n\n#: sk/sk_districts.py:44\nmsgid \"Michalovce\"\nmsgstr \"Michalovce\"\n\n#: sk/sk_districts.py:45\nmsgid \"Myjava\"\nmsgstr \"Myjava\"\n\n#: sk/sk_districts.py:46\nmsgid \"Namestovo\"\nmsgstr \"Namestovo\"\n\n#: sk/sk_districts.py:47\nmsgid \"Nitra\"\nmsgstr \"Nitra\"\n\n#: sk/sk_districts.py:48\nmsgid \"Nove Mesto nad Vahom\"\nmsgstr \"Nove Mesto nad Vahom\"\n\n#: sk/sk_districts.py:49\nmsgid \"Nove Zamky\"\nmsgstr \"Nove Zamky\"\n\n#: sk/sk_districts.py:50\nmsgid \"Partizanske\"\nmsgstr \"Partizanske\"\n\n#: sk/sk_districts.py:51\nmsgid \"Pezinok\"\nmsgstr \"Pezinok\"\n\n#: sk/sk_districts.py:52\nmsgid \"Piestany\"\nmsgstr \"Piestany\"\n\n#: sk/sk_districts.py:53\nmsgid \"Poltar\"\nmsgstr \"Poltar\"\n\n#: sk/sk_districts.py:54\nmsgid \"Poprad\"\nmsgstr \"Poprad\"\n\n#: sk/sk_districts.py:55\nmsgid \"Povazska Bystrica\"\nmsgstr \"Povazska Bystrica\"\n\n#: sk/sk_districts.py:56\nmsgid \"Presov\"\nmsgstr \"Presov\"\n\n#: sk/sk_districts.py:57\nmsgid \"Prievidza\"\nmsgstr \"Prievidza\"\n\n#: sk/sk_districts.py:58\nmsgid \"Puchov\"\nmsgstr \"Puchov\"\n\n#: sk/sk_districts.py:59\nmsgid \"Revuca\"\nmsgstr \"Revuca\"\n\n#: sk/sk_districts.py:60\nmsgid \"Rimavska Sobota\"\nmsgstr \"Rimavska Sobota\"\n\n#: sk/sk_districts.py:61\nmsgid \"Roznava\"\nmsgstr \"Roznava\"\n\n#: sk/sk_districts.py:62\nmsgid \"Ruzomberok\"\nmsgstr \"Ruzomberok\"\n\n#: sk/sk_districts.py:63\nmsgid \"Sabinov\"\nmsgstr \"nov\"\n\n#: sk/sk_districts.py:64\nmsgid \"Senec\"\nmsgstr \"Senec\"\n\n#: sk/sk_districts.py:65\nmsgid \"Senica\"\nmsgstr \"Senica\"\n\n#: sk/sk_districts.py:66\nmsgid \"Skalica\"\nmsgstr \"Skalica\"\n\n#: sk/sk_districts.py:67\nmsgid \"Snina\"\nmsgstr \"Snina\"\n\n#: sk/sk_districts.py:68\nmsgid \"Sobrance\"\nmsgstr \"Sobrance\"\n\n#: sk/sk_districts.py:69\nmsgid \"Spisska Nova Ves\"\nmsgstr \"Spisska Nova Ves\"\n\n#: sk/sk_districts.py:70\nmsgid \"Stara Lubovna\"\nmsgstr \"Stara Lubovna\"\n\n#: sk/sk_districts.py:71\nmsgid \"Stropkov\"\nmsgstr \"Stropkov\"\n\n#: sk/sk_districts.py:72\nmsgid \"Svidnik\"\nmsgstr \"Svidnik\"\n\n#: sk/sk_districts.py:73\nmsgid \"Sala\"\nmsgstr \"Slovakisk\"\n\n#: sk/sk_districts.py:74\nmsgid \"Topolcany\"\nmsgstr \"Topolcany\"\n\n#: sk/sk_districts.py:75\nmsgid \"Trebisov\"\nmsgstr \"Trebisov\"\n\n#: sk/sk_districts.py:76\nmsgid \"Trencin\"\nmsgstr \"Fransk\"\n\n#: sk/sk_districts.py:77\nmsgid \"Trnava\"\nmsgstr \"Trnava\"\n\n#: sk/sk_districts.py:78\nmsgid \"Turcianske Teplice\"\nmsgstr \"Turcianske Teplice\"\n\n#: sk/sk_districts.py:79\nmsgid \"Tvrdosin\"\nmsgstr \"Tvrdosin\"\n\n#: sk/sk_districts.py:80\nmsgid \"Velky Krtis\"\nmsgstr \"Velky Krtis\"\n\n#: sk/sk_districts.py:81\nmsgid \"Vranov nad Toplou\"\nmsgstr \"Vranov nad Toplou\"\n\n#: sk/sk_districts.py:82\nmsgid \"Zlate Moravce\"\nmsgstr \"Zlate Moravce\"\n\n#: sk/sk_districts.py:83\nmsgid \"Zvolen\"\nmsgstr \"Zvolen\"\n\n#: sk/sk_districts.py:84\nmsgid \"Zarnovica\"\nmsgstr \"Zarnovica\"\n\n#: sk/sk_districts.py:85\nmsgid \"Ziar nad Hronom\"\nmsgstr \"Ziar nad Hronom\"\n\n#: sk/sk_districts.py:86\nmsgid \"Zilina\"\nmsgstr \"Zilina\"\n\n#: sk/sk_regions.py:8\nmsgid \"Banska Bystrica region\"\nmsgstr \"Banska Bystrica region\"\n\n#: sk/sk_regions.py:9\nmsgid \"Bratislava region\"\nmsgstr \"Bratislava region\"\n\n#: sk/sk_regions.py:10\nmsgid \"Kosice region\"\nmsgstr \"Kosice region\"\n\n#: sk/sk_regions.py:11\nmsgid \"Nitra region\"\nmsgstr \"Nitra region\"\n\n#: sk/sk_regions.py:12\nmsgid \"Presov region\"\nmsgstr \"Presov region\"\n\n#: sk/sk_regions.py:13\nmsgid \"Trencin region\"\nmsgstr \"Trencin region\"\n\n#: sk/sk_regions.py:14\nmsgid \"Trnava region\"\nmsgstr \"Trnava region\"\n\n#: sk/sk_regions.py:15\nmsgid \"Zilina region\"\nmsgstr \"Zilina region\"\n\n#: tr/forms.py:21\nmsgid \"Enter a postal code in the format XXXXX.\"\nmsgstr \"Indtast et postnummer i formatet XXXXX.\"\n\n#: tr/forms.py:42\nmsgid \"Phone numbers must be in 0XXX XXX XXXX format.\"\nmsgstr \"Telefonnumre skal være i formatet 0XXX XXX XXXX.\"\n\n#: tr/forms.py:69\nmsgid \"Enter a valid Turkish Identification number.\"\nmsgstr \"Indtast et gyldigt tyrkisk identifikationsnummer.\"\n\n#: tr/forms.py:70\nmsgid \"Turkish Identification number must be 11 digits.\"\nmsgstr \"Tyrkisk Identifikationsnummer skal være 11 cifre.\"\n\n#: us/forms.py:21\nmsgid \"Enter a zip code in the format XXXXX or XXXXX-XXXX.\"\nmsgstr \"Indtast et postnr. i format XXXXX eller XXXXX-XXXX.\"\n\n#: us/forms.py:59\nmsgid \"Enter a valid U.S. Social Security number in XXX-XX-XXXX format.\"\nmsgstr \"Indtast et gyldigt U. S sygesikringsnummer i format XXX-XX-XXXX.\"\n\n#: us/forms.py:92\nmsgid \"Enter a U.S. state or territory.\"\nmsgstr \"Indtast en amerikansk stat.\"\n\n#: us/models.py:8\nmsgid \"U.S. state (two uppercase letters)\"\nmsgstr \"Stat (i USA, to store bogstaver)\"\n\n#: us/models.py:17\nmsgid \"U.S. postal code (two uppercase letters)\"\nmsgstr \"USA-postnummer (to store bogstaver)\"\n\n#: us/models.py:26\nmsgid \"Phone number\"\nmsgstr \"Telefonnummer\"\n\n#: uy/forms.py:29\nmsgid \"Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.\"\nmsgstr \"\"\n\"Indtast et gyldigt CI-nummer i formatet X.XXX.XXX-X,XXXXXXX-X eller XXXXXXXX.\"\n\n#: uy/forms.py:31\nmsgid \"Enter a valid CI number.\"\nmsgstr \"Indtast et gyldigt CI-nummer.\"\n\n#: za/forms.py:22\nmsgid \"Enter a valid South African ID number\"\nmsgstr \"Indtast et gyldigt sydafrikansk sygesikringsnummer.\"\n\n#: za/forms.py:56\nmsgid \"Enter a valid South African postal code\"\nmsgstr \"Indtast et gyldigt sydafrikansk postnummer.\"\n\n#: za/za_provinces.py:4\nmsgid \"Eastern Cape\"\nmsgstr \"Eastern Cape\"\n\n#: za/za_provinces.py:5\nmsgid \"Free State\"\nmsgstr \"Free State\"\n\n#: za/za_provinces.py:6\nmsgid \"Gauteng\"\nmsgstr \"Gauteng\"\n\n#: za/za_provinces.py:7\nmsgid \"KwaZulu-Natal\"\nmsgstr \"KwaZulu-Natal\"\n\n#: za/za_provinces.py:8\nmsgid \"Limpopo\"\nmsgstr \"Limpopo\"\n\n#: za/za_provinces.py:9\nmsgid \"Mpumalanga\"\nmsgstr \"Mpumalanga\"\n\n#: za/za_provinces.py:10\nmsgid \"Northern Cape\"\nmsgstr \"Northern Cape\"\n\n#: za/za_provinces.py:11\nmsgid \"North West\"\nmsgstr \"North West\"\n\n#: za/za_provinces.py:12\nmsgid \"Western Cape\"\nmsgstr \"Western Cape\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/locale/de/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011-2012.\n# Mark Raddatz <mraddatz@gmail.com>, 2011.\n#   <mraddatz@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-10-20 20:21+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: German (http://www.transifex.com/projects/p/django/language/\"\n\"de/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: de\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: ar/forms.py:30\nmsgid \"Enter a postal code in the format NNNN or ANNNNAAA.\"\nmsgstr \"Bitte eine gültige Postleitzahl im Format NNNN oder ANNNNAAA eingeben.\"\n\n#: ar/forms.py:52 br/forms.py:95 br/forms.py:134 pe/forms.py:27 pe/forms.py:55\nmsgid \"This field requires only numbers.\"\nmsgstr \"Dieses Feld darf nur Ziffern enthalten.\"\n\n#: ar/forms.py:53\nmsgid \"This field requires 7 or 8 digits.\"\nmsgstr \"Dieses Feld benötigt 7 oder 8 Ziffern.\"\n\n#: ar/forms.py:82\nmsgid \"Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.\"\nmsgstr \"\"\n\"Bitte eine gültige CUIT im Format XX-XXXXXXXX-X oder XXXXXXXXXXXX eingeben.\"\n\n#: ar/forms.py:83\nmsgid \"Invalid CUIT.\"\nmsgstr \"Ungültige CUIT.\"\n\n#: ar/forms.py:84\nmsgid \"Invalid legal type. Type must be 27, 20, 23 or 30.\"\nmsgstr \"Ungültiger Rechtstyp. Typ muss 27, 20, 23 oder 30 sein.\"\n\n#: at/at_states.py:5\nmsgid \"Burgenland\"\nmsgstr \"Burgenland\"\n\n#: at/at_states.py:6\nmsgid \"Carinthia\"\nmsgstr \"Kärnten\"\n\n#: at/at_states.py:7\nmsgid \"Lower Austria\"\nmsgstr \"Niederösterreich\"\n\n#: at/at_states.py:8\nmsgid \"Upper Austria\"\nmsgstr \"Oberösterreich\"\n\n#: at/at_states.py:9\nmsgid \"Salzburg\"\nmsgstr \"Salzburg\"\n\n#: at/at_states.py:10\nmsgid \"Styria\"\nmsgstr \"Steiermark\"\n\n#: at/at_states.py:11\nmsgid \"Tyrol\"\nmsgstr \"Tirol\"\n\n#: at/at_states.py:12\nmsgid \"Vorarlberg\"\nmsgstr \"Vorarlberg\"\n\n#: at/at_states.py:13\nmsgid \"Vienna\"\nmsgstr \"Wien\"\n\n#: at/forms.py:22 ch/forms.py:22 no/forms.py:19\nmsgid \"Enter a zip code in the format XXXX.\"\nmsgstr \"Bitte eine gültige Postleitzahl im Format XXXX eingeben.\"\n\n#: at/forms.py:50\nmsgid \"Enter a valid Austrian Social Security Number in XXXX XXXXXX format.\"\nmsgstr \"\"\n\"Bitte eine gültige österreichische Sozialversicherungsnummer im Format XXXX \"\n\"XXXXXX eingeben.\"\n\n#: au/forms.py:26\nmsgid \"Enter a 4 digit postcode.\"\nmsgstr \"Bitte eine 4-stellig Postleitzahl eingeben.\"\n\n#: au/models.py:9\nmsgid \"Australian State\"\nmsgstr \"Australischer Bundesstaat\"\n\n#: au/models.py:19\nmsgid \"Australian Postcode\"\nmsgstr \"Australisch Postleitzahl\"\n\n#: au/models.py:33\nmsgid \"Australian Phone number\"\nmsgstr \"Australisch Telefonnummer\"\n\n#: be/be_provinces.py:5\nmsgid \"Antwerp\"\nmsgstr \"Antwerpen\"\n\n#: be/be_provinces.py:6\nmsgid \"Brussels\"\nmsgstr \"Brüssel\"\n\n#: be/be_provinces.py:7\nmsgid \"East Flanders\"\nmsgstr \"Ostflandern\"\n\n#: be/be_provinces.py:8\nmsgid \"Flemish Brabant\"\nmsgstr \"Flämisch-Brabant\"\n\n#: be/be_provinces.py:9\nmsgid \"Hainaut\"\nmsgstr \"Hennegau\"\n\n#: be/be_provinces.py:10\nmsgid \"Liege\"\nmsgstr \"Lüttich\"\n\n#: be/be_provinces.py:11 nl/nl_provinces.py:9\nmsgid \"Limburg\"\nmsgstr \"Limburg\"\n\n#: be/be_provinces.py:12\nmsgid \"Luxembourg\"\nmsgstr \"Luxemburg\"\n\n#: be/be_provinces.py:13\nmsgid \"Namur\"\nmsgstr \"Namür\"\n\n#: be/be_provinces.py:14\nmsgid \"Walloon Brabant\"\nmsgstr \"Wallonisch-Brabant\"\n\n#: be/be_provinces.py:15\nmsgid \"West Flanders\"\nmsgstr \"Westflandern\"\n\n#: be/be_regions.py:5\nmsgid \"Brussels Capital Region\"\nmsgstr \"Region Brüssel-Hauptstadt\"\n\n#: be/be_regions.py:6\nmsgid \"Flemish Region\"\nmsgstr \"Flandern\"\n\n#: be/be_regions.py:7\nmsgid \"Wallonia\"\nmsgstr \"Wallonie\"\n\n#: be/forms.py:25\nmsgid \"Enter a valid postal code in the range and format 1XXX - 9XXX.\"\nmsgstr \"Bitte eine gültige Postleitzahl im Format 1XXX bis 9XXX eingeben.\"\n\n#: be/forms.py:48\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\nmsgstr \"\"\n\"Bitte eine gültige Telefonnummer in einem der folgenden Formate eingeben 0x \"\n\"xxx xx xx, 0xx xx xx xx, 04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.\"\n\"xx.xx, 0x.xxx.xx.xx, 0xx.xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx \"\n\"eingeben.\"\n\n#: br/forms.py:22\nmsgid \"Enter a zip code in the format XXXXX-XXX.\"\nmsgstr \"Bitte eine gültige Postleitzahl im Format XXXXX-XXX eingeben.\"\n\n#: br/forms.py:31\nmsgid \"Phone numbers must be in XX-XXXX-XXXX format.\"\nmsgstr \"Telefonnummern müssen das Format XX-XXXX-XXXX haben.\"\n\n#: br/forms.py:58\nmsgid \"\"\n\"Select a valid brazilian state. That state is not one of the available \"\n\"states.\"\nmsgstr \"Bitte einen gültigen brasilianischen Bundesstaat auswählen.\"\n\n#: br/forms.py:93\nmsgid \"Invalid CPF number.\"\nmsgstr \"Ungültige CPF-Nummer.\"\n\n#: br/forms.py:94\nmsgid \"This field requires at most 11 digits or 14 characters.\"\nmsgstr \"Dieses Feld benötigt mindestens 11 Ziffern oder 14 Zeichen.\"\n\n#: br/forms.py:133\nmsgid \"Invalid CNPJ number.\"\nmsgstr \"Ungültige CNPJ-Nummer.\"\n\n#: br/forms.py:135\nmsgid \"This field requires at least 14 digits\"\nmsgstr \"Dieses Feld benötigt mindestens 14 Ziffern\"\n\n#: ca/forms.py:29\nmsgid \"Enter a postal code in the format XXX XXX.\"\nmsgstr \"Bitte eine gültige Postleitzahl im Format XXX XXX eingeben.\"\n\n#: ca/forms.py:47 us/forms.py:30\nmsgid \"Phone numbers must be in XXX-XXX-XXXX format.\"\nmsgstr \"Telefonnummern müssen das Format XXX-XXX-XXXX haben.\"\n\n#: ca/forms.py:69\nmsgid \"Enter a Canadian province or territory.\"\nmsgstr \"Bitte eine Kanadische Provinz oder Territorium eingeben.\"\n\n#: ca/forms.py:110\nmsgid \"Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.\"\nmsgstr \"\"\n\"Bitte eine gültige kanadische Sozialversicherungsnummer im Format XXX-XXX-\"\n\"XXX eingeben.\"\n\n#: ch/ch_states.py:5\nmsgid \"Aargau\"\nmsgstr \"Aargau\"\n\n#: ch/ch_states.py:6\nmsgid \"Appenzell Innerrhoden\"\nmsgstr \"Appenzell Innerrhoden\"\n\n#: ch/ch_states.py:7\nmsgid \"Appenzell Ausserrhoden\"\nmsgstr \"Appenzell Ausserrhoden\"\n\n#: ch/ch_states.py:8\nmsgid \"Basel-Stadt\"\nmsgstr \"Basel-Stadt\"\n\n#: ch/ch_states.py:9\nmsgid \"Basel-Land\"\nmsgstr \"Basel-Land\"\n\n#: ch/ch_states.py:10\nmsgid \"Berne\"\nmsgstr \"Bern\"\n\n#: ch/ch_states.py:11\nmsgid \"Fribourg\"\nmsgstr \"Freiburg\"\n\n#: ch/ch_states.py:12\nmsgid \"Geneva\"\nmsgstr \"Genf\"\n\n#: ch/ch_states.py:13\nmsgid \"Glarus\"\nmsgstr \"Glarus\"\n\n#: ch/ch_states.py:14\nmsgid \"Graubuenden\"\nmsgstr \"Graubünden\"\n\n#: ch/ch_states.py:15\nmsgid \"Jura\"\nmsgstr \"Jura\"\n\n#: ch/ch_states.py:16\nmsgid \"Lucerne\"\nmsgstr \"Luzern\"\n\n#: ch/ch_states.py:17\nmsgid \"Neuchatel\"\nmsgstr \"Neuchatel\"\n\n#: ch/ch_states.py:18\nmsgid \"Nidwalden\"\nmsgstr \"Nidwalden\"\n\n#: ch/ch_states.py:19\nmsgid \"Obwalden\"\nmsgstr \"Obwalden\"\n\n#: ch/ch_states.py:20\nmsgid \"Schaffhausen\"\nmsgstr \"Schaffhausen\"\n\n#: ch/ch_states.py:21\nmsgid \"Schwyz\"\nmsgstr \"Schwyz\"\n\n#: ch/ch_states.py:22\nmsgid \"Solothurn\"\nmsgstr \"Solothurn\"\n\n#: ch/ch_states.py:23\nmsgid \"St. Gallen\"\nmsgstr \"St. Gallen\"\n\n#: ch/ch_states.py:24\nmsgid \"Thurgau\"\nmsgstr \"Thurgau\"\n\n#: ch/ch_states.py:25\nmsgid \"Ticino\"\nmsgstr \"Ticino\"\n\n#: ch/ch_states.py:26\nmsgid \"Uri\"\nmsgstr \"Uri\"\n\n#: ch/ch_states.py:27\nmsgid \"Valais\"\nmsgstr \"Valais\"\n\n#: ch/ch_states.py:28\nmsgid \"Vaud\"\nmsgstr \"Vaud\"\n\n#: ch/ch_states.py:29\nmsgid \"Zug\"\nmsgstr \"Zug\"\n\n#: ch/ch_states.py:30\nmsgid \"Zurich\"\nmsgstr \"Zürich\"\n\n#: ch/forms.py:37\nmsgid \"Phone numbers must be in 0XX XXX XX XX format.\"\nmsgstr \"Telefonnummern müssen im 0XX XXX XX XX Format sein.\"\n\n#: ch/forms.py:68\nmsgid \"\"\n\"Enter a valid Swiss identity or passport card number in X1234567<0 or \"\n\"1234567890 format.\"\nmsgstr \"\"\n\"Bitte eine gültige Schweizer Identifikations- oder Reisepassnummer im \"\n\"FormatX1234567<0 oder 1234567890 eingeben.\"\n\n#: cl/forms.py:32\nmsgid \"Enter a valid Chilean RUT.\"\nmsgstr \"Bitte eine gültige chilenische RUT eingeben.\"\n\n#: cl/forms.py:33\nmsgid \"Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.\"\nmsgstr \"Bitte eine chilenische RUT im Format XX.XXX.XXX-X eingeben.\"\n\n#: cl/forms.py:34\nmsgid \"The Chilean RUT is not valid.\"\nmsgstr \"Diese chilenische RUT ist ungültig.\"\n\n#: cn/forms.py:84\nmsgid \"Enter a post code in the format XXXXXX.\"\nmsgstr \"Bitte eine Postleitzahl im Format XXXXXX eingeben.\"\n\n#: cn/forms.py:105\nmsgid \"ID Card Number consists of 15 or 18 digits.\"\nmsgstr \"Die Ausweisnummer besteht aus 15 oder 18 Ziffern.\"\n\n#: cn/forms.py:106\nmsgid \"Invalid ID Card Number: Wrong checksum\"\nmsgstr \"Ungültige Ausweisnummer: Falsche Prüfsumme\"\n\n#: cn/forms.py:107\nmsgid \"Invalid ID Card Number: Wrong birthdate\"\nmsgstr \"Ungültige Ausweisnummer: Falsches Geburtsdatum\"\n\n#: cn/forms.py:108\nmsgid \"Invalid ID Card Number: Wrong location code\"\nmsgstr \"Ungültige Ausweisnummer: Falsche Ortskennzahl\"\n\n#: cn/forms.py:193\nmsgid \"Enter a valid phone number.\"\nmsgstr \"Bitte eine gültige Telefonnummer eingeben.\"\n\n#: cn/forms.py:210\nmsgid \"Enter a valid cell number.\"\nmsgstr \"Bitte eine gültige Handynummer eingeben.\"\n\n#: cz/cz_regions.py:8\nmsgid \"Prague\"\nmsgstr \"Prag\"\n\n#: cz/cz_regions.py:9\nmsgid \"Central Bohemian Region\"\nmsgstr \"Mittelböhmische Region\"\n\n#: cz/cz_regions.py:10\nmsgid \"South Bohemian Region\"\nmsgstr \"Südböhmische Region\"\n\n#: cz/cz_regions.py:11\nmsgid \"Pilsen Region\"\nmsgstr \"Region Pilsen\"\n\n#: cz/cz_regions.py:12\nmsgid \"Carlsbad Region\"\nmsgstr \"Region Karlsbad\"\n\n#: cz/cz_regions.py:13\nmsgid \"Usti Region\"\nmsgstr \"Region Ústí\"\n\n#: cz/cz_regions.py:14\nmsgid \"Liberec Region\"\nmsgstr \"Region Liberec\"\n\n#: cz/cz_regions.py:15\nmsgid \"Hradec Region\"\nmsgstr \"Region Königgrätz\"\n\n#: cz/cz_regions.py:16\nmsgid \"Pardubice Region\"\nmsgstr \"Region Pardubice\"\n\n#: cz/cz_regions.py:17\nmsgid \"Vysocina Region\"\nmsgstr \"Region Vysočina\"\n\n#: cz/cz_regions.py:18\nmsgid \"South Moravian Region\"\nmsgstr \"Südmährische Region\"\n\n#: cz/cz_regions.py:19\nmsgid \"Olomouc Region\"\nmsgstr \"Region Olmütz\"\n\n#: cz/cz_regions.py:20\nmsgid \"Zlin Region\"\nmsgstr \"Region Zlín\"\n\n#: cz/cz_regions.py:21\nmsgid \"Moravian-Silesian Region\"\nmsgstr \"Mährisch-Schlesische Region\"\n\n#: cz/forms.py:32 sk/forms.py:33\nmsgid \"Enter a postal code in the format XXXXX or XXX XX.\"\nmsgstr \"Bitte eine gültige Postleitzahl im Format XXXXX oder XXX XX eingeben.\"\n\n#: cz/forms.py:52\nmsgid \"Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.\"\nmsgstr \"\"\n\"Bitte eine Geburtsnummer im Format XXXXXX/XXXX oder XXXXXXXXXX eingeben.\"\n\n#: cz/forms.py:53\nmsgid \"Enter a valid birth number.\"\nmsgstr \"Bitte eine gültige Geburtsnummer eingeben.\"\n\n#: cz/forms.py:102\nmsgid \"Enter a valid IC number.\"\nmsgstr \"Bitte eine gültige IC-Nummer eingeben.\"\n\n#: de/de_states.py:5\nmsgid \"Baden-Wuerttemberg\"\nmsgstr \"Baden-Württemberg\"\n\n#: de/de_states.py:6\nmsgid \"Bavaria\"\nmsgstr \"Bayern\"\n\n#: de/de_states.py:7\nmsgid \"Berlin\"\nmsgstr \"Berlin\"\n\n#: de/de_states.py:8\nmsgid \"Brandenburg\"\nmsgstr \"Brandenburg\"\n\n#: de/de_states.py:9\nmsgid \"Bremen\"\nmsgstr \"Bremen\"\n\n#: de/de_states.py:10\nmsgid \"Hamburg\"\nmsgstr \"Hamburg\"\n\n#: de/de_states.py:11\nmsgid \"Hessen\"\nmsgstr \"Hessen\"\n\n#: de/de_states.py:12\nmsgid \"Mecklenburg-Western Pomerania\"\nmsgstr \"Mecklenburg-Vorpommern\"\n\n#: de/de_states.py:13\nmsgid \"Lower Saxony\"\nmsgstr \"Niedersachsen\"\n\n#: de/de_states.py:14\nmsgid \"North Rhine-Westphalia\"\nmsgstr \"Nordrhein-Westfalen\"\n\n#: de/de_states.py:15\nmsgid \"Rhineland-Palatinate\"\nmsgstr \"Rheinland-Pfalz\"\n\n#: de/de_states.py:16\nmsgid \"Saarland\"\nmsgstr \"Saarland\"\n\n#: de/de_states.py:17\nmsgid \"Saxony\"\nmsgstr \"Sachsen\"\n\n#: de/de_states.py:18\nmsgid \"Saxony-Anhalt\"\nmsgstr \"Sachsen-Anhalt\"\n\n#: de/de_states.py:19\nmsgid \"Schleswig-Holstein\"\nmsgstr \"Schleswig-Holstein\"\n\n#: de/de_states.py:20\nmsgid \"Thuringia\"\nmsgstr \"Thüringen\"\n\n#: de/forms.py:20 fi/forms.py:18 fr/forms.py:20\nmsgid \"Enter a zip code in the format XXXXX.\"\nmsgstr \"Bitte eine gültige Postleitzahl im Format XXXXX eingeben.\"\n\n#: de/forms.py:46\nmsgid \"\"\n\"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"format.\"\nmsgstr \"\"\n\"Bitte eine gültige deutsche Personalausweisnummer im Format XXXXXXXXXXX-\"\n\"XXXXXXX-XXXXXXX-X eingeben.\"\n\n#: es/es_provinces.py:5\nmsgid \"Araba\"\nmsgstr \"Araba\"\n\n#: es/es_provinces.py:6\nmsgid \"Albacete\"\nmsgstr \"Albacete\"\n\n#: es/es_provinces.py:7\nmsgid \"Alacant\"\nmsgstr \"Alacant\"\n\n#: es/es_provinces.py:8\nmsgid \"Almeria\"\nmsgstr \"Almería\"\n\n#: es/es_provinces.py:9\nmsgid \"Avila\"\nmsgstr \"Ávila\"\n\n#: es/es_provinces.py:10\nmsgid \"Badajoz\"\nmsgstr \"Badajoz\"\n\n#: es/es_provinces.py:11\nmsgid \"Illes Balears\"\nmsgstr \"Balearische Inseln\"\n\n#: es/es_provinces.py:12\nmsgid \"Barcelona\"\nmsgstr \"Barcelona\"\n\n#: es/es_provinces.py:13\nmsgid \"Burgos\"\nmsgstr \"Burgos\"\n\n#: es/es_provinces.py:14\nmsgid \"Caceres\"\nmsgstr \"Cáceres\"\n\n#: es/es_provinces.py:15\nmsgid \"Cadiz\"\nmsgstr \"Cádiz\"\n\n#: es/es_provinces.py:16\nmsgid \"Castello\"\nmsgstr \"Castello\"\n\n#: es/es_provinces.py:17\nmsgid \"Ciudad Real\"\nmsgstr \"Ciudad Real\"\n\n#: es/es_provinces.py:18\nmsgid \"Cordoba\"\nmsgstr \"Córdoba\"\n\n#: es/es_provinces.py:19\nmsgid \"A Coruna\"\nmsgstr \"A Coruña\"\n\n#: es/es_provinces.py:20\nmsgid \"Cuenca\"\nmsgstr \"Cuenca\"\n\n#: es/es_provinces.py:21\nmsgid \"Girona\"\nmsgstr \"Girona\"\n\n#: es/es_provinces.py:22\nmsgid \"Granada\"\nmsgstr \"Granada\"\n\n#: es/es_provinces.py:23\nmsgid \"Guadalajara\"\nmsgstr \"Guadalajara\"\n\n#: es/es_provinces.py:24\nmsgid \"Guipuzkoa\"\nmsgstr \"Guipuzkoa\"\n\n#: es/es_provinces.py:25\nmsgid \"Huelva\"\nmsgstr \"Huelva\"\n\n#: es/es_provinces.py:26\nmsgid \"Huesca\"\nmsgstr \"Huesca\"\n\n#: es/es_provinces.py:27\nmsgid \"Jaen\"\nmsgstr \"Jaén\"\n\n#: es/es_provinces.py:28\nmsgid \"Leon\"\nmsgstr \"León\"\n\n#: es/es_provinces.py:29\nmsgid \"Lleida\"\nmsgstr \"Lleida\"\n\n#: es/es_provinces.py:30 es/es_regions.py:17\nmsgid \"La Rioja\"\nmsgstr \"La Rioja\"\n\n#: es/es_provinces.py:31\nmsgid \"Lugo\"\nmsgstr \"Lugo\"\n\n#: es/es_provinces.py:32 es/es_regions.py:18\nmsgid \"Madrid\"\nmsgstr \"Madrid\"\n\n#: es/es_provinces.py:33\nmsgid \"Malaga\"\nmsgstr \"Málaga\"\n\n#: es/es_provinces.py:34\nmsgid \"Murcia\"\nmsgstr \"Murcia\"\n\n#: es/es_provinces.py:35\nmsgid \"Navarre\"\nmsgstr \"Navarre\"\n\n#: es/es_provinces.py:36\nmsgid \"Ourense\"\nmsgstr \"Ourense\"\n\n#: es/es_provinces.py:37\nmsgid \"Asturias\"\nmsgstr \"Asturien\"\n\n#: es/es_provinces.py:38\nmsgid \"Palencia\"\nmsgstr \"Palencia\"\n\n#: es/es_provinces.py:39\nmsgid \"Las Palmas\"\nmsgstr \"Las Palmas\"\n\n#: es/es_provinces.py:40\nmsgid \"Pontevedra\"\nmsgstr \"Pontevedra\"\n\n#: es/es_provinces.py:41\nmsgid \"Salamanca\"\nmsgstr \"Salamanca\"\n\n#: es/es_provinces.py:42\nmsgid \"Santa Cruz de Tenerife\"\nmsgstr \"Santa Cruz de Tenerife\"\n\n#: es/es_provinces.py:43 es/es_regions.py:11\nmsgid \"Cantabria\"\nmsgstr \"Kantabrien\"\n\n#: es/es_provinces.py:44\nmsgid \"Segovia\"\nmsgstr \"Segovia\"\n\n#: es/es_provinces.py:45\nmsgid \"Seville\"\nmsgstr \"Sevilla\"\n\n#: es/es_provinces.py:46\nmsgid \"Soria\"\nmsgstr \"Soria\"\n\n#: es/es_provinces.py:47\nmsgid \"Tarragona\"\nmsgstr \"Tarragona\"\n\n#: es/es_provinces.py:48\nmsgid \"Teruel\"\nmsgstr \"Teruel\"\n\n#: es/es_provinces.py:49\nmsgid \"Toledo\"\nmsgstr \"Toledo\"\n\n#: es/es_provinces.py:50\nmsgid \"Valencia\"\nmsgstr \"Valencia\"\n\n#: es/es_provinces.py:51\nmsgid \"Valladolid\"\nmsgstr \"Valladolid\"\n\n#: es/es_provinces.py:52\nmsgid \"Bizkaia\"\nmsgstr \"Bizkaia\"\n\n#: es/es_provinces.py:53\nmsgid \"Zamora\"\nmsgstr \"Zamora\"\n\n#: es/es_provinces.py:54\nmsgid \"Zaragoza\"\nmsgstr \"Zaragoza\"\n\n#: es/es_provinces.py:55\nmsgid \"Ceuta\"\nmsgstr \"Ceuta\"\n\n#: es/es_provinces.py:56\nmsgid \"Melilla\"\nmsgstr \"Melilla\"\n\n#: es/es_regions.py:5\nmsgid \"Andalusia\"\nmsgstr \"Andalusien\"\n\n#: es/es_regions.py:6\nmsgid \"Aragon\"\nmsgstr \"Aragonien\"\n\n#: es/es_regions.py:7\nmsgid \"Principality of Asturias\"\nmsgstr \"Fürstentum Asturien\"\n\n#: es/es_regions.py:8\nmsgid \"Balearic Islands\"\nmsgstr \"Balearische Inseln\"\n\n#: es/es_regions.py:9\nmsgid \"Basque Country\"\nmsgstr \"Baskenland\"\n\n#: es/es_regions.py:10\nmsgid \"Canary Islands\"\nmsgstr \"Kanarische Inseln\"\n\n#: es/es_regions.py:12\nmsgid \"Castile-La Mancha\"\nmsgstr \"Kastilien-La Mancha\"\n\n#: es/es_regions.py:13\nmsgid \"Castile and Leon\"\nmsgstr \"Kastilien-León\"\n\n#: es/es_regions.py:14\nmsgid \"Catalonia\"\nmsgstr \"Katalonien\"\n\n#: es/es_regions.py:15\nmsgid \"Extremadura\"\nmsgstr \"Extremadura\"\n\n#: es/es_regions.py:16\nmsgid \"Galicia\"\nmsgstr \"Galicien\"\n\n#: es/es_regions.py:19\nmsgid \"Region of Murcia\"\nmsgstr \"Murcia\"\n\n#: es/es_regions.py:20\nmsgid \"Foral Community of Navarre\"\nmsgstr \"Foralgemeinschaft Navarra\"\n\n#: es/es_regions.py:21\nmsgid \"Valencian Community\"\nmsgstr \"Valencia\"\n\n#: es/forms.py:26\nmsgid \"Enter a valid postal code in the range and format 01XXX - 52XXX.\"\nmsgstr \"Bitte eine gültige Postleitzahl im Format 01XXX bis 52XXX eingeben.\"\n\n#: es/forms.py:46\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or \"\n\"9XXXXXXXX.\"\nmsgstr \"\"\n\"Bitte eine gültige Telefonnummer in einem der folgenden Formate eingeben \"\n\"6XXXXXXXX, 8XXXXXXXX oder 9XXXXXXXX.\"\n\n#: es/forms.py:73\nmsgid \"Please enter a valid NIF, NIE, or CIF.\"\nmsgstr \"Bitte eine gültige NIF, NIE oder CIF eingeben.\"\n\n#: es/forms.py:74\nmsgid \"Please enter a valid NIF or NIE.\"\nmsgstr \"Bitte eine gültige NIF oder NIE eingeben.\"\n\n#: es/forms.py:75\nmsgid \"Invalid checksum for NIF.\"\nmsgstr \"Ungültige Prüfsumme für NIF.\"\n\n#: es/forms.py:76\nmsgid \"Invalid checksum for NIE.\"\nmsgstr \"Ungültige Prüfsumme für NIE.\"\n\n#: es/forms.py:77\nmsgid \"Invalid checksum for CIF.\"\nmsgstr \"Ungültige Prüfsumme für CIF.\"\n\n#: es/forms.py:149\nmsgid \"\"\n\"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.\"\nmsgstr \"\"\n\"Bitte eine gültige Kontonummer im Format XXXX-XXXX-XX-XXXXXXXXXX eingeben.\"\n\n#: es/forms.py:150\nmsgid \"Invalid checksum for bank account number.\"\nmsgstr \"Ungültige Prüfsumme für Kontonummer.\"\n\n#: fi/forms.py:33\nmsgid \"Enter a valid Finnish social security number.\"\nmsgstr \"Bitte eine gültige finnische Sozialversicherungsnummer eingeben.\"\n\n#: fr/forms.py:35\nmsgid \"Phone numbers must be in 0X XX XX XX XX format.\"\nmsgstr \"Telefonnummern müssen das Format 0X XX XX XX XX haben.\"\n\n#: gb/forms.py:25\nmsgid \"Enter a valid postcode.\"\nmsgstr \"Bitte eine gültige Postleitzahl eingeben.\"\n\n#: gb/gb_regions.py:11\nmsgid \"Bedfordshire\"\nmsgstr \"Bedfordshire\"\n\n#: gb/gb_regions.py:12\nmsgid \"Buckinghamshire\"\nmsgstr \"Buckinghamshire\"\n\n#: gb/gb_regions.py:14\nmsgid \"Cheshire\"\nmsgstr \"Cheshire\"\n\n#: gb/gb_regions.py:15\nmsgid \"Cornwall and Isles of Scilly\"\nmsgstr \"Cornwall and Isles of Scilly\"\n\n#: gb/gb_regions.py:16\nmsgid \"Cumbria\"\nmsgstr \"Cumbria\"\n\n#: gb/gb_regions.py:17\nmsgid \"Derbyshire\"\nmsgstr \"Derbyshire\"\n\n#: gb/gb_regions.py:18\nmsgid \"Devon\"\nmsgstr \"Devon\"\n\n#: gb/gb_regions.py:19\nmsgid \"Dorset\"\nmsgstr \"Dorset\"\n\n#: gb/gb_regions.py:20\nmsgid \"Durham\"\nmsgstr \"Durham\"\n\n#: gb/gb_regions.py:21\nmsgid \"East Sussex\"\nmsgstr \"East Sussex\"\n\n#: gb/gb_regions.py:22\nmsgid \"Essex\"\nmsgstr \"Essex\"\n\n#: gb/gb_regions.py:23\nmsgid \"Gloucestershire\"\nmsgstr \"Gloucestershire\"\n\n#: gb/gb_regions.py:24\nmsgid \"Greater London\"\nmsgstr \"Greater London\"\n\n#: gb/gb_regions.py:25\nmsgid \"Greater Manchester\"\nmsgstr \"Greater Manchester\"\n\n#: gb/gb_regions.py:26\nmsgid \"Hampshire\"\nmsgstr \"Hampshire\"\n\n#: gb/gb_regions.py:27\nmsgid \"Hertfordshire\"\nmsgstr \"Hertfordshire\"\n\n#: gb/gb_regions.py:28\nmsgid \"Kent\"\nmsgstr \"Kent\"\n\n#: gb/gb_regions.py:29\nmsgid \"Lancashire\"\nmsgstr \"Lancashire\"\n\n#: gb/gb_regions.py:30\nmsgid \"Leicestershire\"\nmsgstr \"Leicestershire\"\n\n#: gb/gb_regions.py:31\nmsgid \"Lincolnshire\"\nmsgstr \"Lincolnshire\"\n\n#: gb/gb_regions.py:32\nmsgid \"Merseyside\"\nmsgstr \"Merseyside\"\n\n#: gb/gb_regions.py:33\nmsgid \"Norfolk\"\nmsgstr \"Norfolk\"\n\n#: gb/gb_regions.py:34\nmsgid \"North Yorkshire\"\nmsgstr \"North Yorkshire\"\n\n#: gb/gb_regions.py:35\nmsgid \"Northamptonshire\"\nmsgstr \"Northamptonshire\"\n\n#: gb/gb_regions.py:36\nmsgid \"Northumberland\"\nmsgstr \"Northumberland\"\n\n#: gb/gb_regions.py:37\nmsgid \"Nottinghamshire\"\nmsgstr \"Nottinghamshire\"\n\n#: gb/gb_regions.py:38\nmsgid \"Oxfordshire\"\nmsgstr \"Oxfordshire\"\n\n#: gb/gb_regions.py:39\nmsgid \"Shropshire\"\nmsgstr \"Shropshire\"\n\n#: gb/gb_regions.py:40\nmsgid \"Somerset\"\nmsgstr \"Somerset\"\n\n#: gb/gb_regions.py:41\nmsgid \"South Yorkshire\"\nmsgstr \"South Yorkshire\"\n\n#: gb/gb_regions.py:42\nmsgid \"Staffordshire\"\nmsgstr \"Staffordshire\"\n\n#: gb/gb_regions.py:43\nmsgid \"Suffolk\"\nmsgstr \"Suffolk\"\n\n#: gb/gb_regions.py:44\nmsgid \"Surrey\"\nmsgstr \"Surrey\"\n\n#: gb/gb_regions.py:45\nmsgid \"Tyne and Wear\"\nmsgstr \"Tyne and Wear\"\n\n#: gb/gb_regions.py:46\nmsgid \"Warwickshire\"\nmsgstr \"Warwickshire\"\n\n#: gb/gb_regions.py:47\nmsgid \"West Midlands\"\nmsgstr \"West Midlands\"\n\n#: gb/gb_regions.py:48\nmsgid \"West Sussex\"\nmsgstr \"West Sussex\"\n\n#: gb/gb_regions.py:49\nmsgid \"West Yorkshire\"\nmsgstr \"West Yorkshire\"\n\n#: gb/gb_regions.py:50\nmsgid \"Wiltshire\"\nmsgstr \"Wiltshire\"\n\n#: gb/gb_regions.py:51\nmsgid \"Worcestershire\"\nmsgstr \"Worcestershire\"\n\n#: gb/gb_regions.py:55\nmsgid \"County Antrim\"\nmsgstr \"County Antrim\"\n\n#: gb/gb_regions.py:56\nmsgid \"County Armagh\"\nmsgstr \"County Armagh\"\n\n#: gb/gb_regions.py:57\nmsgid \"County Down\"\nmsgstr \"County Down\"\n\n#: gb/gb_regions.py:58\nmsgid \"County Fermanagh\"\nmsgstr \"County Fermanagh\"\n\n#: gb/gb_regions.py:59\nmsgid \"County Londonderry\"\nmsgstr \"County Londonderry\"\n\n#: gb/gb_regions.py:60\nmsgid \"County Tyrone\"\nmsgstr \"County Tyrone\"\n\n#: gb/gb_regions.py:64\nmsgid \"Clwyd\"\nmsgstr \"Clwyd\"\n\n#: gb/gb_regions.py:65\nmsgid \"Dyfed\"\nmsgstr \"Dyfed\"\n\n#: gb/gb_regions.py:66\nmsgid \"Gwent\"\nmsgstr \"Gwent\"\n\n#: gb/gb_regions.py:67\nmsgid \"Gwynedd\"\nmsgstr \"Gwynedd\"\n\n#: gb/gb_regions.py:68\nmsgid \"Mid Glamorgan\"\nmsgstr \"Mid Glamorgan\"\n\n#: gb/gb_regions.py:69\nmsgid \"Powys\"\nmsgstr \"Powys\"\n\n#: gb/gb_regions.py:70\nmsgid \"South Glamorgan\"\nmsgstr \"South Glamorgan\"\n\n#: gb/gb_regions.py:71\nmsgid \"West Glamorgan\"\nmsgstr \"West Glamorgan\"\n\n#: gb/gb_regions.py:75\nmsgid \"Borders\"\nmsgstr \"Borders\"\n\n#: gb/gb_regions.py:76\nmsgid \"Central Scotland\"\nmsgstr \"Central Scotland\"\n\n#: gb/gb_regions.py:77\nmsgid \"Dumfries and Galloway\"\nmsgstr \"Dumfries and Galloway\"\n\n#: gb/gb_regions.py:78\nmsgid \"Fife\"\nmsgstr \"Fife\"\n\n#: gb/gb_regions.py:79\nmsgid \"Grampian\"\nmsgstr \"Grampian\"\n\n#: gb/gb_regions.py:80\nmsgid \"Highland\"\nmsgstr \"Highland\"\n\n#: gb/gb_regions.py:81\nmsgid \"Lothian\"\nmsgstr \"Lothian\"\n\n#: gb/gb_regions.py:82\nmsgid \"Orkney Islands\"\nmsgstr \"Orkney Islands\"\n\n#: gb/gb_regions.py:83\nmsgid \"Shetland Islands\"\nmsgstr \"Shetland Islands\"\n\n#: gb/gb_regions.py:84\nmsgid \"Strathclyde\"\nmsgstr \"Strathclyde\"\n\n#: gb/gb_regions.py:85\nmsgid \"Tayside\"\nmsgstr \"Tayside\"\n\n#: gb/gb_regions.py:86\nmsgid \"Western Isles\"\nmsgstr \"Western Isles\"\n\n#: gb/gb_regions.py:90\nmsgid \"England\"\nmsgstr \"England\"\n\n#: gb/gb_regions.py:91\nmsgid \"Northern Ireland\"\nmsgstr \"Nordirland\"\n\n#: gb/gb_regions.py:92\nmsgid \"Scotland\"\nmsgstr \"Schottland\"\n\n#: gb/gb_regions.py:93\nmsgid \"Wales\"\nmsgstr \"Wales\"\n\n#: hk/forms.py:37\n#, python-format\nmsgid \"Phone number should not start with one of the followings: %s.\"\nmsgstr \"Telefonnummern sollten nicht mit folgenden Zeichen beginnen: %s.\"\n\n#: hk/forms.py:40\n#, python-format\nmsgid \"Phone number must be in one of the following formats: %s.\"\nmsgstr \"Telefonnummern müssen eines der folgenden Formate haben: %s.\"\n\n#: hk/forms.py:42\n#, python-format\nmsgid \"Phone number should start with one of the followings: %s.\"\nmsgstr \"Telefonnummern sollten mit folgenden Zeichen beginnen: %s.\"\n\n#: hr/forms.py:76\nmsgid \"Enter a valid 13 digit JMBG\"\nmsgstr \"Bitte eine gültige 13-stellige JMBG eingeben\"\n\n#: hr/forms.py:77\nmsgid \"Error in date segment\"\nmsgstr \"Fehler im Datums-Segment\"\n\n#: hr/forms.py:123\nmsgid \"Enter a valid 11 digit OIB\"\nmsgstr \"Bitte eine gültige 11-stellige OIB eingeben\"\n\n#: hr/forms.py:152 id/forms.py:112\nmsgid \"Enter a valid vehicle license plate number\"\nmsgstr \"Bitte eine gültige Nummernschildnummer eingeben\"\n\n#: hr/forms.py:153\nmsgid \"Enter a valid location code\"\nmsgstr \"Bitte eine gültige Ortskennzahl eingeben\"\n\n#: hr/forms.py:154\nmsgid \"Number part cannot be zero\"\nmsgstr \"Der Nummernteil darf nicht Null sein\"\n\n#: hr/forms.py:190\nmsgid \"Enter a valid 5 digit postal code\"\nmsgstr \"Bitte eine gültige 5-stellige Postleitzahl eingeben\"\n\n#: hr/forms.py:218 id/forms.py:72 nl/forms.py:56\nmsgid \"Enter a valid phone number\"\nmsgstr \"Bitte eine gültige Telefonnummer eingeben\"\n\n#: hr/forms.py:219\nmsgid \"Enter a valid area or mobile network code\"\nmsgstr \"Geben Sie eine gültige Bereichs- oder Mobilfunknetz-Vorwahl ein\"\n\n#: hr/forms.py:220\nmsgid \"The phone nubmer is too long\"\nmsgstr \"Die Telefonnummer ist zu lang\"\n\n#: hr/forms.py:258\nmsgid \"Enter a valid 19 digit JMBAG starting with 601983\"\nmsgstr \"Geben Sie eine gültige 19-stellige JMBAG beginnend mit 601983 ein\"\n\n#: hr/forms.py:259\nmsgid \"Card issue number cannot be zero\"\nmsgstr \"Die Ausstellungsnummer der Karte darf nicht Null sein\"\n\n#: hr/hr_choices.py:14\nmsgid \"Grad Zagreb\"\nmsgstr \"Stadt Zagreb\"\n\n#: hr/hr_choices.py:15\nmsgid \"Bjelovarsko-bilogorska županija\"\nmsgstr \"Gespanschaft Bjelovar-Bilogora\"\n\n#: hr/hr_choices.py:16\nmsgid \"Brodsko-posavska županija\"\nmsgstr \"Gespanschaft Brod-Posavina\"\n\n#: hr/hr_choices.py:17\nmsgid \"Dubrovačko-neretvanska županija\"\nmsgstr \"Gespanschaft Dubrovnik-Neretva\"\n\n#: hr/hr_choices.py:18\nmsgid \"Istarska županija\"\nmsgstr \"Gespanschaft Istrien\"\n\n#: hr/hr_choices.py:19\nmsgid \"Karlovačka županija\"\nmsgstr \"Gespanschaft Karlovac\"\n\n#: hr/hr_choices.py:20\nmsgid \"Koprivničko-križevačka županija\"\nmsgstr \"Gespanschaft Koprivnica-Križevci\"\n\n#: hr/hr_choices.py:21\nmsgid \"Krapinsko-zagorska županija\"\nmsgstr \"Gespanschaft Krapina-Zagorje\"\n\n#: hr/hr_choices.py:22\nmsgid \"Ličko-senjska županija\"\nmsgstr \"Gespanschaft Lika-Senj\"\n\n#: hr/hr_choices.py:23\nmsgid \"Međimurska županija\"\nmsgstr \"Gespanschaft Međimurje\"\n\n#: hr/hr_choices.py:24\nmsgid \"Osječko-baranjska županija\"\nmsgstr \"Gespanschaft Osijek-Baranja\"\n\n#: hr/hr_choices.py:25\nmsgid \"Požeško-slavonska županija\"\nmsgstr \"Gespanschaft Požega-Slawonien\"\n\n#: hr/hr_choices.py:26\nmsgid \"Primorsko-goranska županija\"\nmsgstr \"Gespanschaft Primorje-Gorski kotar\"\n\n#: hr/hr_choices.py:27\nmsgid \"Sisačko-moslavačka županija\"\nmsgstr \"Gespanschaft Sisak-Moslavina\"\n\n#: hr/hr_choices.py:28\nmsgid \"Splitsko-dalmatinska županija\"\nmsgstr \"Gespanschaft Split-Dalmatien\"\n\n#: hr/hr_choices.py:29\nmsgid \"Šibensko-kninska županija\"\nmsgstr \"Gespanschaft Šibenik-Knin\"\n\n#: hr/hr_choices.py:30\nmsgid \"Varaždinska županija\"\nmsgstr \"Gespanschaft Varaždin\"\n\n#: hr/hr_choices.py:31\nmsgid \"Virovitičko-podravska županija\"\nmsgstr \"Gespanschaft Virovitica-Podravina\"\n\n#: hr/hr_choices.py:32\nmsgid \"Vukovarsko-srijemska županija\"\nmsgstr \"Gespanschaft Vukovar-Syrmien\"\n\n#: hr/hr_choices.py:33\nmsgid \"Zadarska županija\"\nmsgstr \"Gespanschaft Zadar\"\n\n#: hr/hr_choices.py:34\nmsgid \"Zagrebačka županija\"\nmsgstr \"Gespanschaft Zagreb\"\n\n#: id/forms.py:31\nmsgid \"Enter a valid post code\"\nmsgstr \"Bitte eine gültige Postleitzahl eingeben\"\n\n#: id/forms.py:176\nmsgid \"Enter a valid NIK/KTP number\"\nmsgstr \"Bitte eine gültige NIK/KTP-Nummer eingeben.\"\n\n#: id/id_choices.py:15\nmsgid \"Aceh\"\nmsgstr \"Aceh\"\n\n#: id/id_choices.py:16 id/id_choices.py:79\nmsgid \"Bali\"\nmsgstr \"Bali\"\n\n#: id/id_choices.py:17 id/id_choices.py:51\nmsgid \"Banten\"\nmsgstr \"Banten\"\n\n#: id/id_choices.py:18 id/id_choices.py:60\nmsgid \"Bengkulu\"\nmsgstr \"Bengkulu\"\n\n#: id/id_choices.py:19 id/id_choices.py:53\nmsgid \"Yogyakarta\"\nmsgstr \"Yogyakarta\"\n\n#: id/id_choices.py:20 id/id_choices.py:57\nmsgid \"Jakarta\"\nmsgstr \"Jakarta\"\n\n#: id/id_choices.py:21 id/id_choices.py:81\nmsgid \"Gorontalo\"\nmsgstr \"Gorontalo\"\n\n#: id/id_choices.py:22 id/id_choices.py:63\nmsgid \"Jambi\"\nmsgstr \"Jambi\"\n\n#: id/id_choices.py:23\nmsgid \"Jawa Barat\"\nmsgstr \"Jawa Barat\"\n\n#: id/id_choices.py:24\nmsgid \"Jawa Tengah\"\nmsgstr \"Jawa Tengah\"\n\n#: id/id_choices.py:25\nmsgid \"Jawa Timur\"\nmsgstr \"Jawa Timur\"\n\n#: id/id_choices.py:26 id/id_choices.py:94\nmsgid \"Kalimantan Barat\"\nmsgstr \"Kalimantan Barat\"\n\n#: id/id_choices.py:27 id/id_choices.py:72\nmsgid \"Kalimantan Selatan\"\nmsgstr \"Kalimantan Selatan\"\n\n#: id/id_choices.py:28 id/id_choices.py:95\nmsgid \"Kalimantan Tengah\"\nmsgstr \"Kalimantan Tengah\"\n\n#: id/id_choices.py:29 id/id_choices.py:96\nmsgid \"Kalimantan Timur\"\nmsgstr \"Kalimantan Timur\"\n\n#: id/id_choices.py:30\nmsgid \"Kepulauan Bangka-Belitung\"\nmsgstr \"Kepulauan Bangka-Belitung\"\n\n#: id/id_choices.py:31 id/id_choices.py:68\nmsgid \"Kepulauan Riau\"\nmsgstr \"Kepulauan Riau\"\n\n#: id/id_choices.py:32 id/id_choices.py:61\nmsgid \"Lampung\"\nmsgstr \"Lampung\"\n\n#: id/id_choices.py:33 id/id_choices.py:76\nmsgid \"Maluku\"\nmsgstr \"Maluku\"\n\n#: id/id_choices.py:34 id/id_choices.py:77\nmsgid \"Maluku Utara\"\nmsgstr \"Maluku Utara\"\n\n#: id/id_choices.py:35\nmsgid \"Nusa Tenggara Barat\"\nmsgstr \"Nusa Tenggara Barat\"\n\n#: id/id_choices.py:36\nmsgid \"Nusa Tenggara Timur\"\nmsgstr \"Nusa Tenggara Timur\"\n\n#: id/id_choices.py:37\nmsgid \"Papua\"\nmsgstr \"Papua\"\n\n#: id/id_choices.py:38\nmsgid \"Papua Barat\"\nmsgstr \"Papua Barat\"\n\n#: id/id_choices.py:39 id/id_choices.py:66\nmsgid \"Riau\"\nmsgstr \"Riau\"\n\n#: id/id_choices.py:40 id/id_choices.py:74\nmsgid \"Sulawesi Barat\"\nmsgstr \"Sulawesi Barat\"\n\n#: id/id_choices.py:41 id/id_choices.py:75\nmsgid \"Sulawesi Selatan\"\nmsgstr \"Sulawesi Selatan\"\n\n#: id/id_choices.py:42 id/id_choices.py:82\nmsgid \"Sulawesi Tengah\"\nmsgstr \"Sulawesi Tengah\"\n\n#: id/id_choices.py:43 id/id_choices.py:85\nmsgid \"Sulawesi Tenggara\"\nmsgstr \"Sulawesi Tenggara\"\n\n#: id/id_choices.py:44\nmsgid \"Sulawesi Utara\"\nmsgstr \"Sulawesi Utara\"\n\n#: id/id_choices.py:45 id/id_choices.py:58\nmsgid \"Sumatera Barat\"\nmsgstr \"Sumatera Barat\"\n\n#: id/id_choices.py:46 id/id_choices.py:62\nmsgid \"Sumatera Selatan\"\nmsgstr \"Sumatera Selatan\"\n\n#: id/id_choices.py:47 id/id_choices.py:64\nmsgid \"Sumatera Utara\"\nmsgstr \"Sumatera Utara\"\n\n#: id/id_choices.py:52\nmsgid \"Magelang\"\nmsgstr \"Magelang\"\n\n#: id/id_choices.py:54\nmsgid \"Surakarta - Solo\"\nmsgstr \"Surakarta - Solo\"\n\n#: id/id_choices.py:55\nmsgid \"Madiun\"\nmsgstr \"Madiun\"\n\n#: id/id_choices.py:56\nmsgid \"Kediri\"\nmsgstr \"Kediri\"\n\n#: id/id_choices.py:59\nmsgid \"Tapanuli\"\nmsgstr \"Tapanuli\"\n\n#: id/id_choices.py:65\nmsgid \"Nanggroe Aceh Darussalam\"\nmsgstr \"Nanggroe Aceh Darussalam\"\n\n#: id/id_choices.py:67\nmsgid \"Kepulauan Bangka Belitung\"\nmsgstr \"Kepulauan Bangka Belitung\"\n\n#: id/id_choices.py:69\nmsgid \"Corps Consulate\"\nmsgstr \"Corps Diplomatic\"\n\n#: id/id_choices.py:70\nmsgid \"Corps Diplomatic\"\nmsgstr \"Corps Diplomatic\"\n\n#: id/id_choices.py:71\nmsgid \"Bandung\"\nmsgstr \"Bandung\"\n\n#: id/id_choices.py:73\nmsgid \"Sulawesi Utara Daratan\"\nmsgstr \"Sulawesi Utara Daratan\"\n\n#: id/id_choices.py:78\nmsgid \"NTT - Timor\"\nmsgstr \"NTT - Timor\"\n\n#: id/id_choices.py:80\nmsgid \"Sulawesi Utara Kepulauan\"\nmsgstr \"Sulawesi Utara Kepulauan\"\n\n#: id/id_choices.py:83\nmsgid \"NTB - Lombok\"\nmsgstr \"NTB - Lombok\"\n\n#: id/id_choices.py:84\nmsgid \"Papua dan Papua Barat\"\nmsgstr \"Papua dan Papua Barat\"\n\n#: id/id_choices.py:86\nmsgid \"Cirebon\"\nmsgstr \"Cirebon\"\n\n#: id/id_choices.py:87\nmsgid \"NTB - Sumbawa\"\nmsgstr \"NTB - Sumbawa\"\n\n#: id/id_choices.py:88\nmsgid \"NTT - Flores\"\nmsgstr \"NTT - Flores\"\n\n#: id/id_choices.py:89\nmsgid \"NTT - Sumba\"\nmsgstr \"NTT - Sumba\"\n\n#: id/id_choices.py:90\nmsgid \"Bogor\"\nmsgstr \"Bogor\"\n\n#: id/id_choices.py:91\nmsgid \"Pekalongan\"\nmsgstr \"Pekalongan\"\n\n#: id/id_choices.py:92\nmsgid \"Semarang\"\nmsgstr \"Semarang\"\n\n#: id/id_choices.py:93\nmsgid \"Pati\"\nmsgstr \"Pati\"\n\n#: id/id_choices.py:97\nmsgid \"Surabaya\"\nmsgstr \"Surabaya\"\n\n#: id/id_choices.py:98\nmsgid \"Madura\"\nmsgstr \"Madura\"\n\n#: id/id_choices.py:99\nmsgid \"Malang\"\nmsgstr \"Malang\"\n\n#: id/id_choices.py:100\nmsgid \"Jember\"\nmsgstr \"Jember\"\n\n#: id/id_choices.py:101\nmsgid \"Banyumas\"\nmsgstr \"Banyumas\"\n\n#: id/id_choices.py:102\nmsgid \"Federal Government\"\nmsgstr \"Bundesregierung\"\n\n#: id/id_choices.py:103\nmsgid \"Bojonegoro\"\nmsgstr \"Bojonegoro\"\n\n#: id/id_choices.py:104\nmsgid \"Purwakarta\"\nmsgstr \"Purwakarta\"\n\n#: id/id_choices.py:105\nmsgid \"Sidoarjo\"\nmsgstr \"Sidoarjo\"\n\n#: id/id_choices.py:106\nmsgid \"Garut\"\nmsgstr \"Garut\"\n\n#: ie/ie_counties.py:8\nmsgid \"Antrim\"\nmsgstr \"Antrim\"\n\n#: ie/ie_counties.py:9\nmsgid \"Armagh\"\nmsgstr \"Armagh\"\n\n#: ie/ie_counties.py:10\nmsgid \"Carlow\"\nmsgstr \"Carlow\"\n\n#: ie/ie_counties.py:11\nmsgid \"Cavan\"\nmsgstr \"Cavan\"\n\n#: ie/ie_counties.py:12\nmsgid \"Clare\"\nmsgstr \"Clare\"\n\n#: ie/ie_counties.py:13\nmsgid \"Cork\"\nmsgstr \"Cork\"\n\n#: ie/ie_counties.py:14\nmsgid \"Derry\"\nmsgstr \"Derry\"\n\n#: ie/ie_counties.py:15\nmsgid \"Donegal\"\nmsgstr \"Donegal\"\n\n#: ie/ie_counties.py:16\nmsgid \"Down\"\nmsgstr \"Down\"\n\n#: ie/ie_counties.py:17\nmsgid \"Dublin\"\nmsgstr \"Dublin\"\n\n#: ie/ie_counties.py:18\nmsgid \"Fermanagh\"\nmsgstr \"Fermanagh\"\n\n#: ie/ie_counties.py:19\nmsgid \"Galway\"\nmsgstr \"Galway\"\n\n#: ie/ie_counties.py:20\nmsgid \"Kerry\"\nmsgstr \"Kerry\"\n\n#: ie/ie_counties.py:21\nmsgid \"Kildare\"\nmsgstr \"Kildare\"\n\n#: ie/ie_counties.py:22\nmsgid \"Kilkenny\"\nmsgstr \"Kilkenny\"\n\n#: ie/ie_counties.py:23\nmsgid \"Laois\"\nmsgstr \"Laois\"\n\n#: ie/ie_counties.py:24\nmsgid \"Leitrim\"\nmsgstr \"Leitrim\"\n\n#: ie/ie_counties.py:25\nmsgid \"Limerick\"\nmsgstr \"Limerick\"\n\n#: ie/ie_counties.py:26\nmsgid \"Longford\"\nmsgstr \"Longford\"\n\n#: ie/ie_counties.py:27\nmsgid \"Louth\"\nmsgstr \"Louth\"\n\n#: ie/ie_counties.py:28\nmsgid \"Mayo\"\nmsgstr \"Mayo\"\n\n#: ie/ie_counties.py:29\nmsgid \"Meath\"\nmsgstr \"Meath\"\n\n#: ie/ie_counties.py:30\nmsgid \"Monaghan\"\nmsgstr \"Monaghan\"\n\n#: ie/ie_counties.py:31\nmsgid \"Offaly\"\nmsgstr \"Offaly\"\n\n#: ie/ie_counties.py:32\nmsgid \"Roscommon\"\nmsgstr \"Roscommon\"\n\n#: ie/ie_counties.py:33\nmsgid \"Sligo\"\nmsgstr \"Sligo\"\n\n#: ie/ie_counties.py:34\nmsgid \"Tipperary\"\nmsgstr \"Tipperary\"\n\n#: ie/ie_counties.py:35\nmsgid \"Tyrone\"\nmsgstr \"Tyrone\"\n\n#: ie/ie_counties.py:36\nmsgid \"Waterford\"\nmsgstr \"Waterford\"\n\n#: ie/ie_counties.py:37\nmsgid \"Westmeath\"\nmsgstr \"Westmeath\"\n\n#: ie/ie_counties.py:38\nmsgid \"Wexford\"\nmsgstr \"Wexford\"\n\n#: ie/ie_counties.py:39\nmsgid \"Wicklow\"\nmsgstr \"Wicklow\"\n\n#: il/forms.py:32\nmsgid \"Enter a postal code in the format XXXXX\"\nmsgstr \"Bitte eine gültige Postleitzahl im Format XXXXX eingeben.\"\n\n#: il/forms.py:51\nmsgid \"Enter a valid ID number.\"\nmsgstr \"Bitte eine gültige Ausweisnummer eingeben.\"\n\n#: in_/forms.py:41\nmsgid \"Enter a zip code in the format XXXXXX or XXX XXX.\"\nmsgstr \"\"\n\"Bitte eine gültige Postleitzahl im Format XXXXXX oder XXX XXX eingeben.\"\n\n#: in_/forms.py:64\nmsgid \"Enter an Indian state or territory.\"\nmsgstr \"Geben Sie einen indischen Bundesstaat oder Territorium ein.\"\n\n#: in_/forms.py:103\nmsgid \"Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.\"\nmsgstr \"Telefonnummern müssen im Format 02X-8X, 03X-7X oder 04X-6X sein.\"\n\n#: is_/forms.py:22\nmsgid \"\"\n\"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.\"\nmsgstr \"\"\n\"Bitte eine gültige isländische Identifikationsnummer im Format XXXXXX-XXXX \"\n\"eingeben.\"\n\n#: is_/forms.py:23\nmsgid \"The Icelandic identification number is not valid.\"\nmsgstr \"Die isländische Identifikationsnummer ist nicht gültig.\"\n\n#: it/forms.py:21\nmsgid \"Enter a valid zip code.\"\nmsgstr \"Bitte eine gültige Postleitzahl eingeben.\"\n\n#: it/forms.py:48\nmsgid \"Enter a valid Social Security number.\"\nmsgstr \"Bitte eine gültige Sozialversicherungsnummer eingeben.\"\n\n#: it/forms.py:73\nmsgid \"Enter a valid VAT number.\"\nmsgstr \"Bitte eine gültige Umsatzsteuernummer eingeben.\"\n\n#: jp/forms.py:19\nmsgid \"Enter a postal code in the format XXXXXXX or XXX-XXXX.\"\nmsgstr \"\"\n\"Bitte eine gültige Postleitzahl im Format XXXXXXX oder XXX-XXXX eingeben.\"\n\n#: jp/jp_prefectures.py:4\nmsgid \"Hokkaido\"\nmsgstr \"Hokkaidō\"\n\n#: jp/jp_prefectures.py:5\nmsgid \"Aomori\"\nmsgstr \"Aomori\"\n\n#: jp/jp_prefectures.py:6\nmsgid \"Iwate\"\nmsgstr \"Iwate\"\n\n#: jp/jp_prefectures.py:7\nmsgid \"Miyagi\"\nmsgstr \"Miyagi\"\n\n#: jp/jp_prefectures.py:8\nmsgid \"Akita\"\nmsgstr \"Akita\"\n\n#: jp/jp_prefectures.py:9\nmsgid \"Yamagata\"\nmsgstr \"Yamagata\"\n\n#: jp/jp_prefectures.py:10\nmsgid \"Fukushima\"\nmsgstr \"Fukushima\"\n\n#: jp/jp_prefectures.py:11\nmsgid \"Ibaraki\"\nmsgstr \"Ibaraki\"\n\n#: jp/jp_prefectures.py:12\nmsgid \"Tochigi\"\nmsgstr \"Tochigi\"\n\n#: jp/jp_prefectures.py:13\nmsgid \"Gunma\"\nmsgstr \"Gunma\"\n\n#: jp/jp_prefectures.py:14\nmsgid \"Saitama\"\nmsgstr \"Saitama\"\n\n#: jp/jp_prefectures.py:15\nmsgid \"Chiba\"\nmsgstr \"Chiba\"\n\n#: jp/jp_prefectures.py:16\nmsgid \"Tokyo\"\nmsgstr \"Tokio\"\n\n#: jp/jp_prefectures.py:17\nmsgid \"Kanagawa\"\nmsgstr \"Kanagawa\"\n\n#: jp/jp_prefectures.py:18\nmsgid \"Yamanashi\"\nmsgstr \"Yamanashi\"\n\n#: jp/jp_prefectures.py:19\nmsgid \"Nagano\"\nmsgstr \"Nagano\"\n\n#: jp/jp_prefectures.py:20\nmsgid \"Niigata\"\nmsgstr \"Niigata\"\n\n#: jp/jp_prefectures.py:21\nmsgid \"Toyama\"\nmsgstr \"Toyama\"\n\n#: jp/jp_prefectures.py:22\nmsgid \"Ishikawa\"\nmsgstr \"Ishikawa\"\n\n#: jp/jp_prefectures.py:23\nmsgid \"Fukui\"\nmsgstr \"Fukui\"\n\n#: jp/jp_prefectures.py:24\nmsgid \"Gifu\"\nmsgstr \"Gifu\"\n\n#: jp/jp_prefectures.py:25\nmsgid \"Shizuoka\"\nmsgstr \"Shizuoka\"\n\n#: jp/jp_prefectures.py:26\nmsgid \"Aichi\"\nmsgstr \"Aichi\"\n\n#: jp/jp_prefectures.py:27\nmsgid \"Mie\"\nmsgstr \"Mie\"\n\n#: jp/jp_prefectures.py:28\nmsgid \"Shiga\"\nmsgstr \"Shiga\"\n\n#: jp/jp_prefectures.py:29\nmsgid \"Kyoto\"\nmsgstr \"Kyōto\"\n\n#: jp/jp_prefectures.py:30\nmsgid \"Osaka\"\nmsgstr \"Ōsaka\"\n\n#: jp/jp_prefectures.py:31\nmsgid \"Hyogo\"\nmsgstr \"Hyōgo\"\n\n#: jp/jp_prefectures.py:32\nmsgid \"Nara\"\nmsgstr \"Nara\"\n\n#: jp/jp_prefectures.py:33\nmsgid \"Wakayama\"\nmsgstr \"Wakayama\"\n\n#: jp/jp_prefectures.py:34\nmsgid \"Tottori\"\nmsgstr \"Tottori\"\n\n#: jp/jp_prefectures.py:35\nmsgid \"Shimane\"\nmsgstr \"Shimane\"\n\n#: jp/jp_prefectures.py:36\nmsgid \"Okayama\"\nmsgstr \"Okayama\"\n\n#: jp/jp_prefectures.py:37\nmsgid \"Hiroshima\"\nmsgstr \"Hiroshima\"\n\n#: jp/jp_prefectures.py:38\nmsgid \"Yamaguchi\"\nmsgstr \"Yamaguchi\"\n\n#: jp/jp_prefectures.py:39\nmsgid \"Tokushima\"\nmsgstr \"Tokushima\"\n\n#: jp/jp_prefectures.py:40\nmsgid \"Kagawa\"\nmsgstr \"Kagawa\"\n\n#: jp/jp_prefectures.py:41\nmsgid \"Ehime\"\nmsgstr \"Ehime\"\n\n#: jp/jp_prefectures.py:42\nmsgid \"Kochi\"\nmsgstr \"Kochi\"\n\n#: jp/jp_prefectures.py:43\nmsgid \"Fukuoka\"\nmsgstr \"Fukuoka\"\n\n#: jp/jp_prefectures.py:44\nmsgid \"Saga\"\nmsgstr \"Saga\"\n\n#: jp/jp_prefectures.py:45\nmsgid \"Nagasaki\"\nmsgstr \"Nagasaki\"\n\n#: jp/jp_prefectures.py:46\nmsgid \"Kumamoto\"\nmsgstr \"Kumamoto\"\n\n#: jp/jp_prefectures.py:47\nmsgid \"Oita\"\nmsgstr \"Ōita\"\n\n#: jp/jp_prefectures.py:48\nmsgid \"Miyazaki\"\nmsgstr \"Miyazaki\"\n\n#: jp/jp_prefectures.py:49\nmsgid \"Kagoshima\"\nmsgstr \"Kagoshima\"\n\n#: jp/jp_prefectures.py:50\nmsgid \"Okinawa\"\nmsgstr \"Okinawa\"\n\n#: kw/forms.py:27\nmsgid \"Enter a valid Kuwaiti Civil ID number\"\nmsgstr \"Bitte eine gültige Kuwaitische Identifikationsnummer eingeben\"\n\n#: mk/forms.py:18\nmsgid \"\"\n\"Identity card numbers must contain either 4 to 7 digits or an uppercase \"\n\"letter and 7 digits.\"\nmsgstr \"\"\n\"Ausweisnummern muss entweder 4 bis 7 Ziffern oder einen Großbuchstaben und 7 \"\n\"Ziffern enthalten.\"\n\n#: mk/forms.py:57 si/forms.py:24\nmsgid \"This field should contain exactly 13 digits.\"\nmsgstr \"Dieses Feld sollte genau 13 Ziffern enthalten.\"\n\n#: mk/forms.py:58\nmsgid \"The first 7 digits of the UMCN must represent a valid past date.\"\nmsgstr \"\"\n\"Die ersten 7 Ziffern der UMCN müssen ein gültiges Datum in der Vergangenheit \"\n\"darstellen.\"\n\n#: mk/forms.py:59\nmsgid \"The UMCN is not valid.\"\nmsgstr \"Die UMCN ist nicht gültig.\"\n\n#: mk/mk_choices.py:10\nmsgid \"Aerodrom\"\nmsgstr \"Aerodrom\"\n\n#: mk/mk_choices.py:11\nmsgid \"Aračinovo\"\nmsgstr \"Aračinovo\"\n\n#: mk/mk_choices.py:12\nmsgid \"Berovo\"\nmsgstr \"Berovo\"\n\n#: mk/mk_choices.py:13\nmsgid \"Bitola\"\nmsgstr \"Bitola\"\n\n#: mk/mk_choices.py:14\nmsgid \"Bogdanci\"\nmsgstr \"Bogdanci\"\n\n#: mk/mk_choices.py:15\nmsgid \"Bogovinje\"\nmsgstr \"Bogovinje\"\n\n#: mk/mk_choices.py:16\nmsgid \"Bosilovo\"\nmsgstr \"Bosilovo\"\n\n#: mk/mk_choices.py:17\nmsgid \"Brvenica\"\nmsgstr \"Brvenica\"\n\n#: mk/mk_choices.py:18\nmsgid \"Butel\"\nmsgstr \"Butel\"\n\n#: mk/mk_choices.py:19\nmsgid \"Valandovo\"\nmsgstr \"Valandovo\"\n\n#: mk/mk_choices.py:20\nmsgid \"Vasilevo\"\nmsgstr \"Vasilevo\"\n\n#: mk/mk_choices.py:21\nmsgid \"Vevčani\"\nmsgstr \"Vevčani\"\n\n#: mk/mk_choices.py:22\nmsgid \"Veles\"\nmsgstr \"Veles\"\n\n#: mk/mk_choices.py:23\nmsgid \"Vinica\"\nmsgstr \"Vinica\"\n\n#: mk/mk_choices.py:24\nmsgid \"Vraneštica\"\nmsgstr \"Vraneštica\"\n\n#: mk/mk_choices.py:25\nmsgid \"Vrapčište\"\nmsgstr \"Vrapčište\"\n\n#: mk/mk_choices.py:26\nmsgid \"Gazi Baba\"\nmsgstr \"Gazi Baba\"\n\n#: mk/mk_choices.py:27\nmsgid \"Gevgelija\"\nmsgstr \"Gevgelija\"\n\n#: mk/mk_choices.py:28\nmsgid \"Gostivar\"\nmsgstr \"Gostivar\"\n\n#: mk/mk_choices.py:29\nmsgid \"Gradsko\"\nmsgstr \"Gradsko\"\n\n#: mk/mk_choices.py:30\nmsgid \"Debar\"\nmsgstr \"Debar\"\n\n#: mk/mk_choices.py:31\nmsgid \"Debarca\"\nmsgstr \"Debarca\"\n\n#: mk/mk_choices.py:32\nmsgid \"Delčevo\"\nmsgstr \"Delčevo\"\n\n#: mk/mk_choices.py:33\nmsgid \"Demir Kapija\"\nmsgstr \"Demir Kapija\"\n\n#: mk/mk_choices.py:34\nmsgid \"Demir Hisar\"\nmsgstr \"Demir Hisar\"\n\n#: mk/mk_choices.py:35\nmsgid \"Dolneni\"\nmsgstr \"Dolneni\"\n\n#: mk/mk_choices.py:36\nmsgid \"Drugovo\"\nmsgstr \"Drugovo\"\n\n#: mk/mk_choices.py:37\nmsgid \"Gjorče Petrov\"\nmsgstr \"Gjorče Petrov\"\n\n#: mk/mk_choices.py:38\nmsgid \"Želino\"\nmsgstr \"Želino\"\n\n#: mk/mk_choices.py:39\nmsgid \"Zajas\"\nmsgstr \"Zajas\"\n\n#: mk/mk_choices.py:40\nmsgid \"Zelenikovo\"\nmsgstr \"Zelenikovo\"\n\n#: mk/mk_choices.py:41\nmsgid \"Zrnovci\"\nmsgstr \"Zrnovci\"\n\n#: mk/mk_choices.py:42\nmsgid \"Ilinden\"\nmsgstr \"Ilinden\"\n\n#: mk/mk_choices.py:43\nmsgid \"Jegunovce\"\nmsgstr \"Jegunovce\"\n\n#: mk/mk_choices.py:44\nmsgid \"Kavadarci\"\nmsgstr \"Kavadarci\"\n\n#: mk/mk_choices.py:45\nmsgid \"Karbinci\"\nmsgstr \"Karbinci\"\n\n#: mk/mk_choices.py:46\nmsgid \"Karpoš\"\nmsgstr \"Karpoš\"\n\n#: mk/mk_choices.py:47\nmsgid \"Kisela Voda\"\nmsgstr \"Kisela Voda\"\n\n#: mk/mk_choices.py:48\nmsgid \"Kičevo\"\nmsgstr \"Kičevo\"\n\n#: mk/mk_choices.py:49\nmsgid \"Konče\"\nmsgstr \"Konče\"\n\n#: mk/mk_choices.py:50\nmsgid \"Koćani\"\nmsgstr \"Koćani\"\n\n#: mk/mk_choices.py:51\nmsgid \"Kratovo\"\nmsgstr \"Kratovo\"\n\n#: mk/mk_choices.py:52\nmsgid \"Kriva Palanka\"\nmsgstr \"Kriva Palanka\"\n\n#: mk/mk_choices.py:53\nmsgid \"Krivogaštani\"\nmsgstr \"Krivogaštani\"\n\n#: mk/mk_choices.py:54\nmsgid \"Kruševo\"\nmsgstr \"Kruševo\"\n\n#: mk/mk_choices.py:55\nmsgid \"Kumanovo\"\nmsgstr \"Kumanovo\"\n\n#: mk/mk_choices.py:56\nmsgid \"Lipkovo\"\nmsgstr \"Lipkovo\"\n\n#: mk/mk_choices.py:57\nmsgid \"Lozovo\"\nmsgstr \"Lozovo\"\n\n#: mk/mk_choices.py:58\nmsgid \"Mavrovo i Rostuša\"\nmsgstr \"Mavrovo und Rostuša\"\n\n#: mk/mk_choices.py:59\nmsgid \"Makedonska Kamenica\"\nmsgstr \"Makedonska Kamenica\"\n\n#: mk/mk_choices.py:60\nmsgid \"Makedonski Brod\"\nmsgstr \"Makedonski Brod\"\n\n#: mk/mk_choices.py:61\nmsgid \"Mogila\"\nmsgstr \"Mogila\"\n\n#: mk/mk_choices.py:62\nmsgid \"Negotino\"\nmsgstr \"Negotino\"\n\n#: mk/mk_choices.py:63\nmsgid \"Novaci\"\nmsgstr \"Novaci\"\n\n#: mk/mk_choices.py:64\nmsgid \"Novo Selo\"\nmsgstr \"Novo Selo\"\n\n#: mk/mk_choices.py:65\nmsgid \"Oslomej\"\nmsgstr \"Oslomej\"\n\n#: mk/mk_choices.py:66\nmsgid \"Ohrid\"\nmsgstr \"Ohrid\"\n\n#: mk/mk_choices.py:67\nmsgid \"Petrovec\"\nmsgstr \"Petrovec\"\n\n#: mk/mk_choices.py:68\nmsgid \"Pehčevo\"\nmsgstr \"Pehčevo\"\n\n#: mk/mk_choices.py:69\nmsgid \"Plasnica\"\nmsgstr \"Plasnica\"\n\n#: mk/mk_choices.py:70\nmsgid \"Prilep\"\nmsgstr \"Prilep\"\n\n#: mk/mk_choices.py:71\nmsgid \"Probištip\"\nmsgstr \"Probištip\"\n\n#: mk/mk_choices.py:72\nmsgid \"Radoviš\"\nmsgstr \"Radoviš\"\n\n#: mk/mk_choices.py:73\nmsgid \"Rankovce\"\nmsgstr \"Rankovce\"\n\n#: mk/mk_choices.py:74\nmsgid \"Resen\"\nmsgstr \"Resen\"\n\n#: mk/mk_choices.py:75\nmsgid \"Rosoman\"\nmsgstr \"Rosoman\"\n\n#: mk/mk_choices.py:76\nmsgid \"Saraj\"\nmsgstr \"Saraj\"\n\n#: mk/mk_choices.py:77\nmsgid \"Sveti Nikole\"\nmsgstr \"Sveti Nikole\"\n\n#: mk/mk_choices.py:78\nmsgid \"Sopište\"\nmsgstr \"Sopište\"\n\n#: mk/mk_choices.py:79\nmsgid \"Star Dojran\"\nmsgstr \"Star Dojran\"\n\n#: mk/mk_choices.py:80\nmsgid \"Staro Nagoričane\"\nmsgstr \"Staro Nagoričane\"\n\n#: mk/mk_choices.py:81\nmsgid \"Struga\"\nmsgstr \"Struga\"\n\n#: mk/mk_choices.py:82\nmsgid \"Strumica\"\nmsgstr \"Strumica\"\n\n#: mk/mk_choices.py:83\nmsgid \"Studeničani\"\nmsgstr \"Studeničani\"\n\n#: mk/mk_choices.py:84\nmsgid \"Tearce\"\nmsgstr \"Tearce\"\n\n#: mk/mk_choices.py:85\nmsgid \"Tetovo\"\nmsgstr \"Tetovo\"\n\n#: mk/mk_choices.py:86\nmsgid \"Centar\"\nmsgstr \"Centar\"\n\n#: mk/mk_choices.py:87\nmsgid \"Centar-Župa\"\nmsgstr \"Centar Župa\"\n\n#: mk/mk_choices.py:88\nmsgid \"Čair\"\nmsgstr \"Čair\"\n\n#: mk/mk_choices.py:89\nmsgid \"Čaška\"\nmsgstr \"Čaška\"\n\n#: mk/mk_choices.py:90\nmsgid \"Češinovo-Obleševo\"\nmsgstr \"Češinovo-Obleševo\"\n\n#: mk/mk_choices.py:91\nmsgid \"Čučer-Sandevo\"\nmsgstr \"Čučer-Sandevo\"\n\n#: mk/mk_choices.py:92\nmsgid \"Štip\"\nmsgstr \"Štip\"\n\n#: mk/mk_choices.py:93\nmsgid \"Šuto Orizari\"\nmsgstr \"Šuto Orizari\"\n\n#: mk/models.py:11\nmsgid \"Macedonian identity card number\"\nmsgstr \"Mazedonische Ausweisnummer\"\n\n#: mk/models.py:25\nmsgid \"A Macedonian municipality (2 character code)\"\nmsgstr \"Eine mazedonischen Gemeinde (2 Zeichen-Code)\"\n\n#: mk/models.py:35\nmsgid \"Unique master citizen number (13 digits)\"\nmsgstr \"Eindeutige Bürger-Nummer (13 Ziffern)\"\n\n#: mx/forms.py:67\nmsgid \"Enter a valid zip code in the format XXXXX.\"\nmsgstr \"Bitte eine gültige Postleitzahl im Format XXXXX eingeben.\"\n\n#: mx/forms.py:110\nmsgid \"Enter a valid RFC.\"\nmsgstr \"Bitte gültige RFC eingeben.\"\n\n#: mx/forms.py:111\nmsgid \"Invalid checksum for RFC.\"\nmsgstr \"Ungültige Prüfsumme für RFC-Nummer.\"\n\n#: mx/forms.py:191\nmsgid \"Enter a valid CURP.\"\nmsgstr \"Bitte gültige CURP eingeben.\"\n\n#: mx/forms.py:192\nmsgid \"Invalid checksum for CURP.\"\nmsgstr \"Ungültige Prüfsumme für CURP eingegeben.\"\n\n#: mx/models.py:14\nmsgid \"Mexico state (three uppercase letters)\"\nmsgstr \"Mexikanischer Bundesstaat (dreistellige Abkürzung)\"\n\n#: mx/models.py:27\nmsgid \"Mexico zip code\"\nmsgstr \"Mexikanische Postleitzahl\"\n\n#: mx/models.py:44\nmsgid \"Mexican RFC\"\nmsgstr \"Mexikanische RFC\"\n\n#: mx/models.py:61\nmsgid \"Mexican CURP\"\nmsgstr \"Mexikanische CURP\"\n\n#: mx/mx_states.py:14\nmsgid \"Aguascalientes\"\nmsgstr \"Aguascalientes\"\n\n#: mx/mx_states.py:15\nmsgid \"Baja California\"\nmsgstr \"Baja California\"\n\n#: mx/mx_states.py:16\nmsgid \"Baja California Sur\"\nmsgstr \"Baja California Sur\"\n\n#: mx/mx_states.py:17\nmsgid \"Campeche\"\nmsgstr \"Campeche\"\n\n#: mx/mx_states.py:18\nmsgid \"Chihuahua\"\nmsgstr \"Chihuahua\"\n\n#: mx/mx_states.py:19\nmsgid \"Chiapas\"\nmsgstr \"Chiapas\"\n\n#: mx/mx_states.py:20\nmsgid \"Coahuila\"\nmsgstr \"Coahuila\"\n\n#: mx/mx_states.py:21\nmsgid \"Colima\"\nmsgstr \"Colima\"\n\n#: mx/mx_states.py:22\nmsgid \"Distrito Federal\"\nmsgstr \"Distrito Federal\"\n\n#: mx/mx_states.py:23\nmsgid \"Durango\"\nmsgstr \"Durango\"\n\n#: mx/mx_states.py:24\nmsgid \"Guerrero\"\nmsgstr \"Guerrero\"\n\n#: mx/mx_states.py:25\nmsgid \"Guanajuato\"\nmsgstr \"Guanajuato\"\n\n#: mx/mx_states.py:26\nmsgid \"Hidalgo\"\nmsgstr \"Hidalgo\"\n\n#: mx/mx_states.py:27\nmsgid \"Jalisco\"\nmsgstr \"Jalisco\"\n\n#: mx/mx_states.py:28\nmsgid \"Estado de México\"\nmsgstr \"Estado de México\"\n\n#: mx/mx_states.py:29\nmsgid \"Michoacán\"\nmsgstr \"Michoacán\"\n\n#: mx/mx_states.py:30\nmsgid \"Morelos\"\nmsgstr \"Morelos\"\n\n#: mx/mx_states.py:31\nmsgid \"Nayarit\"\nmsgstr \"Nayarit\"\n\n#: mx/mx_states.py:32\nmsgid \"Nuevo León\"\nmsgstr \"Nuevo León\"\n\n#: mx/mx_states.py:33\nmsgid \"Oaxaca\"\nmsgstr \"Oaxaca\"\n\n#: mx/mx_states.py:34\nmsgid \"Puebla\"\nmsgstr \"Puebla\"\n\n#: mx/mx_states.py:35\nmsgid \"Querétaro\"\nmsgstr \"Querétaro\"\n\n#: mx/mx_states.py:36\nmsgid \"Quintana Roo\"\nmsgstr \"Quintana Roo\"\n\n#: mx/mx_states.py:37\nmsgid \"Sinaloa\"\nmsgstr \"Sinaloa\"\n\n#: mx/mx_states.py:38\nmsgid \"San Luis Potosí\"\nmsgstr \"San Luis Potosí\"\n\n#: mx/mx_states.py:39\nmsgid \"Sonora\"\nmsgstr \"Sonora\"\n\n#: mx/mx_states.py:40\nmsgid \"Tabasco\"\nmsgstr \"Tabasco\"\n\n#: mx/mx_states.py:41\nmsgid \"Tamaulipas\"\nmsgstr \"Tamaulipas\"\n\n#: mx/mx_states.py:42\nmsgid \"Tlaxcala\"\nmsgstr \"Tlaxcala\"\n\n#: mx/mx_states.py:43\nmsgid \"Veracruz\"\nmsgstr \"Veracruz\"\n\n#: mx/mx_states.py:44\nmsgid \"Yucatán\"\nmsgstr \"Yucatán\"\n\n#: mx/mx_states.py:45\nmsgid \"Zacatecas\"\nmsgstr \"Zacatecas\"\n\n#: nl/forms.py:26\nmsgid \"Enter a valid postal code\"\nmsgstr \"Bitte eine gültige Postleitzahl eingeben\"\n\n#: nl/forms.py:82\nmsgid \"Enter a valid SoFi number\"\nmsgstr \"Bitte eine gültige SoFi-Nummer eingeben\"\n\n#: nl/nl_provinces.py:4\nmsgid \"Drenthe\"\nmsgstr \"Drente\"\n\n#: nl/nl_provinces.py:5\nmsgid \"Flevoland\"\nmsgstr \"Flevoland\"\n\n#: nl/nl_provinces.py:6\nmsgid \"Friesland\"\nmsgstr \"Friesland\"\n\n#: nl/nl_provinces.py:7\nmsgid \"Gelderland\"\nmsgstr \"Gelderland\"\n\n#: nl/nl_provinces.py:8\nmsgid \"Groningen\"\nmsgstr \"Groningen\"\n\n#: nl/nl_provinces.py:10\nmsgid \"Noord-Brabant\"\nmsgstr \"Nordbrabant\"\n\n#: nl/nl_provinces.py:11\nmsgid \"Noord-Holland\"\nmsgstr \"Nordholland\"\n\n#: nl/nl_provinces.py:12\nmsgid \"Overijssel\"\nmsgstr \"Overijssel\"\n\n#: nl/nl_provinces.py:13\nmsgid \"Utrecht\"\nmsgstr \"Utrecht\"\n\n#: nl/nl_provinces.py:14\nmsgid \"Zeeland\"\nmsgstr \"Zeeland\"\n\n#: nl/nl_provinces.py:15\nmsgid \"Zuid-Holland\"\nmsgstr \"Südholland\"\n\n#: no/forms.py:39\nmsgid \"Enter a valid Norwegian social security number.\"\nmsgstr \"Bitte eine gültige norwegische Sozialversicherungsnummer eingeben.\"\n\n#: pe/forms.py:28\nmsgid \"This field requires 8 digits.\"\nmsgstr \"Dieses Feld benötigt 8 Zeichen.\"\n\n#: pe/forms.py:56\nmsgid \"This field requires 11 digits.\"\nmsgstr \"Dieses Feld benötigt 11 Zeichen.\"\n\n#: pl/forms.py:42\nmsgid \"National Identification Number consists of 11 digits.\"\nmsgstr \"Nationale Identifikationsnummer besteht aus 11 Ziffern.\"\n\n#: pl/forms.py:43\nmsgid \"Wrong checksum for the National Identification Number.\"\nmsgstr \"Falsche Prüfsumme für die nationale Identifikationsnummer.\"\n\n#: pl/forms.py:79\nmsgid \"National ID Card Number consists of 3 letters and 6 digits.\"\nmsgstr \"Die nationale Ausweisnummer  besteht aus 3 Buchstaben und 6 Ziffern.\"\n\n#: pl/forms.py:80\nmsgid \"Wrong checksum for the National ID Card Number.\"\nmsgstr \"Falsche Prüfsumme für die nationale Ausweisnummer.\"\n\n#: pl/forms.py:131\nmsgid \"\"\n\"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or \"\n\"XXXXXXXXXX.\"\nmsgstr \"\"\n\"Bitte eine Steuernummer (NIP) im Format XXX-XXX-XX-XX, XXX-XX-XX-XXX oder \"\n\"XXXXXXXXXX eingeben.\"\n\n#: pl/forms.py:132\nmsgid \"Wrong checksum for the Tax Number (NIP).\"\nmsgstr \"Falsche Prüfsumme für die Steuernummer (NIP).\"\n\n#: pl/forms.py:171\nmsgid \"National Business Register Number (REGON) consists of 9 or 14 digits.\"\nmsgstr \"\"\n\"Nationale Geschäftsregistrierungsnummer (REGON) besteht aus 9 oder 14 \"\n\"Zeichen.\"\n\n#: pl/forms.py:172\nmsgid \"Wrong checksum for the National Business Register Number (REGON).\"\nmsgstr \"\"\n\"Falsche Prüfsumme für die nationale Geschäftsregistrierungsnummer (REGON).\"\n\n#: pl/forms.py:212\nmsgid \"Enter a postal code in the format XX-XXX.\"\nmsgstr \"Bitte eine gültige Postleitzahl im Format XX-XXX eingeben.\"\n\n#: pl/pl_voivodeships.py:8\nmsgid \"Lower Silesia\"\nmsgstr \"Niederschlesien\"\n\n#: pl/pl_voivodeships.py:9\nmsgid \"Kuyavia-Pomerania\"\nmsgstr \"Kujawien-Pommern\"\n\n#: pl/pl_voivodeships.py:10\nmsgid \"Lublin\"\nmsgstr \"Lublin\"\n\n#: pl/pl_voivodeships.py:11\nmsgid \"Lubusz\"\nmsgstr \"Land Lebus\"\n\n#: pl/pl_voivodeships.py:12\nmsgid \"Lodz\"\nmsgstr \"Łódź\"\n\n#: pl/pl_voivodeships.py:13\nmsgid \"Lesser Poland\"\nmsgstr \"Kleinpolen\"\n\n#: pl/pl_voivodeships.py:14\nmsgid \"Masovia\"\nmsgstr \"Masowien\"\n\n#: pl/pl_voivodeships.py:15\nmsgid \"Opole\"\nmsgstr \"Oppeln\"\n\n#: pl/pl_voivodeships.py:16\nmsgid \"Subcarpatia\"\nmsgstr \"Karpatenvorland\"\n\n#: pl/pl_voivodeships.py:17\nmsgid \"Podlasie\"\nmsgstr \"Podlasie\"\n\n#: pl/pl_voivodeships.py:18\nmsgid \"Pomerania\"\nmsgstr \"Pommern\"\n\n#: pl/pl_voivodeships.py:19\nmsgid \"Silesia\"\nmsgstr \"Schlesien\"\n\n#: pl/pl_voivodeships.py:20\nmsgid \"Swietokrzyskie\"\nmsgstr \"Heiligkreuz\"\n\n#: pl/pl_voivodeships.py:21\nmsgid \"Warmia-Masuria\"\nmsgstr \"Ermland-Masuren\"\n\n#: pl/pl_voivodeships.py:22\nmsgid \"Greater Poland\"\nmsgstr \"Großpolen\"\n\n#: pl/pl_voivodeships.py:23\nmsgid \"West Pomerania\"\nmsgstr \"Vorpommern\"\n\n#: pt/forms.py:19\nmsgid \"Enter a zip code in the format XXXX-XXX.\"\nmsgstr \"Bitte eine gültige Postleitzahl im Format XXXX-XXX eingeben.\"\n\n#: pt/forms.py:39\nmsgid \"Phone numbers must have 9 digits, or start by + or 00.\"\nmsgstr \"\"\n\"Telefonnummern müssen aus 9 Ziffern bestehen, oder mit + oder 00 beginnen.\"\n\n#: ro/forms.py:22\nmsgid \"Enter a valid CIF.\"\nmsgstr \"Bitte eine gültige CIF eingeben.\"\n\n#: ro/forms.py:59\nmsgid \"Enter a valid CNP.\"\nmsgstr \"Bitte eine gültige CNP eingeben.\"\n\n#: ro/forms.py:143\nmsgid \"Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format\"\nmsgstr \"\"\n\"Bitte eine gültige IBAN im Format ROXX-XXXX-XXXX-XXXX-XXXX-XXXX eingeben.\"\n\n#: ro/forms.py:175\nmsgid \"Phone numbers must be in XXXX-XXXXXX format.\"\nmsgstr \"Telefonnummern müssen das Format XXXX-XXXXXX haben.\"\n\n#: ro/forms.py:200\nmsgid \"Enter a valid postal code in the format XXXXXX\"\nmsgstr \"Bitte eine gültige Postleitzahl im Format XXXXXX eingeben\"\n\n#: ru/forms.py:37\nmsgid \"Enter a postal code in the format XXXXXX.\"\nmsgstr \"Bitte eine Postleitzahl im Format XXXXXX eingeben.\"\n\n#: ru/forms.py:50\nmsgid \"Enter a passport number in the format XXXX XXXXXX.\"\nmsgstr \"Bitte eine Reisepassnummer im Format XXXX XXXXXX eingeben.\"\n\n#: ru/forms.py:63\nmsgid \"Enter a passport number in the format XX XXXXXXX.\"\nmsgstr \"Bitte eine Reisepassnummer im Format XX XXXXXXX eingeben.\"\n\n#: ru/ru_regions.py:10\nmsgid \"Central Federal County\"\nmsgstr \"Föderationskreis Zentralrussland\"\n\n#: ru/ru_regions.py:11\nmsgid \"South Federal County\"\nmsgstr \"Föderationskreis Südrussland\"\n\n#: ru/ru_regions.py:12\nmsgid \"North-West Federal County\"\nmsgstr \"Föderationskreis Nordwestrussland\"\n\n#: ru/ru_regions.py:13\nmsgid \"Far-East Federal County\"\nmsgstr \"Föderationskreis Ferner Osten\"\n\n#: ru/ru_regions.py:14\nmsgid \"Siberian Federal County\"\nmsgstr \"Föderationskreis Sibirien\"\n\n#: ru/ru_regions.py:15\nmsgid \"Ural Federal County\"\nmsgstr \"Föderationskreis Ural\"\n\n#: ru/ru_regions.py:16\nmsgid \"Privolzhsky Federal County\"\nmsgstr \"Föderationskreis Wolga\"\n\n#: ru/ru_regions.py:17\nmsgid \"North-Caucasian Federal County\"\nmsgstr \"Föderationskreis Nordkaukasus\"\n\n#: ru/ru_regions.py:21\nmsgid \"Moskva\"\nmsgstr \"Moskau\"\n\n#: ru/ru_regions.py:22\nmsgid \"Saint-Peterburg\"\nmsgstr \"Sankt Petersburg\"\n\n#: ru/ru_regions.py:23\nmsgid \"Moskovskaya oblast'\"\nmsgstr \"Oblast Moskau\"\n\n#: ru/ru_regions.py:24\nmsgid \"Adygeya, Respublika\"\nmsgstr \"Republik Adygeja\"\n\n#: ru/ru_regions.py:25\nmsgid \"Bashkortostan, Respublika\"\nmsgstr \"Republik Baschkortostan\"\n\n#: ru/ru_regions.py:26\nmsgid \"Buryatia, Respublika\"\nmsgstr \"Republik Burjatien\"\n\n#: ru/ru_regions.py:27\nmsgid \"Altay, Respublika\"\nmsgstr \"Republik Altai\"\n\n#: ru/ru_regions.py:28\nmsgid \"Dagestan, Respublika\"\nmsgstr \"Republik Dagestan\"\n\n#: ru/ru_regions.py:29\nmsgid \"Ingushskaya Respublika\"\nmsgstr \"Republik Inguschetien\"\n\n#: ru/ru_regions.py:30\nmsgid \"Kabardino-Balkarskaya Respublika\"\nmsgstr \"Kabardino-Balkarische Republik\"\n\n#: ru/ru_regions.py:31\nmsgid \"Kalmykia, Respublika\"\nmsgstr \"Republik Kalmückien\"\n\n#: ru/ru_regions.py:32\nmsgid \"Karachaevo-Cherkesskaya Respublika\"\nmsgstr \"Karatschai-Tscherkessische Republik\"\n\n#: ru/ru_regions.py:33\nmsgid \"Karelia, Respublika\"\nmsgstr \"Republik Karelien\"\n\n#: ru/ru_regions.py:34\nmsgid \"Komi, Respublika\"\nmsgstr \"Republik Komi\"\n\n#: ru/ru_regions.py:35\nmsgid \"Mariy Ehl, Respublika\"\nmsgstr \"Republik Mari El\"\n\n#: ru/ru_regions.py:36\nmsgid \"Mordovia, Respublika\"\nmsgstr \"Republik Mordwinien\"\n\n#: ru/ru_regions.py:37\nmsgid \"Sakha, Respublika (Yakutiya)\"\nmsgstr \"Republik Sacha (Jakutien)\"\n\n#: ru/ru_regions.py:38\nmsgid \"Severnaya Osetia, Respublika (Alania)\"\nmsgstr \"Republik Nordossetien-Alanien\"\n\n#: ru/ru_regions.py:39\nmsgid \"Tatarstan, Respublika\"\nmsgstr \"Republik Tatarstan\"\n\n#: ru/ru_regions.py:40\nmsgid \"Tyva, Respublika (Tuva)\"\nmsgstr \"Republik Tuwa\"\n\n#: ru/ru_regions.py:41\nmsgid \"Udmurtskaya Respublika\"\nmsgstr \"Udmurtische Republik\"\n\n#: ru/ru_regions.py:42\nmsgid \"Khakassiya, Respublika\"\nmsgstr \"Republik Chakassien\"\n\n#: ru/ru_regions.py:43\nmsgid \"Chechenskaya Respublika\"\nmsgstr \"Tschetschenische Republik\"\n\n#: ru/ru_regions.py:44\nmsgid \"Chuvashskaya Respublika\"\nmsgstr \"Tschuwaschische Republik\"\n\n#: ru/ru_regions.py:45\nmsgid \"Altayskiy Kray\"\nmsgstr \"Region Altai\"\n\n#: ru/ru_regions.py:46\nmsgid \"Zabaykalskiy Kray\"\nmsgstr \"Region Transbaikalien\"\n\n#: ru/ru_regions.py:47\nmsgid \"Kamchatskiy Kray\"\nmsgstr \"Region Kamtschatka\"\n\n#: ru/ru_regions.py:48\nmsgid \"Krasnodarskiy Kray\"\nmsgstr \"Region Krasnodar\"\n\n#: ru/ru_regions.py:49\nmsgid \"Krasnoyarskiy Kray\"\nmsgstr \"Region Krasnojarsk\"\n\n#: ru/ru_regions.py:50\nmsgid \"Permskiy Kray\"\nmsgstr \"Region Perm\"\n\n#: ru/ru_regions.py:51\nmsgid \"Primorskiy Kray\"\nmsgstr \"Region Primorje\"\n\n#: ru/ru_regions.py:52\nmsgid \"Stavropol'siyy Kray\"\nmsgstr \"Region Stawropol\"\n\n#: ru/ru_regions.py:53\nmsgid \"Khabarovskiy Kray\"\nmsgstr \"Region Chabarowsk\"\n\n#: ru/ru_regions.py:54\nmsgid \"Amurskaya oblast'\"\nmsgstr \"Oblast Amur\"\n\n#: ru/ru_regions.py:55\nmsgid \"Arkhangel'skaya oblast'\"\nmsgstr \"Oblast Archangelsk\"\n\n#: ru/ru_regions.py:56\nmsgid \"Astrakhanskaya oblast'\"\nmsgstr \"Oblast Astrachan\"\n\n#: ru/ru_regions.py:57\nmsgid \"Belgorodskaya oblast'\"\nmsgstr \"Oblast Belgorod\"\n\n#: ru/ru_regions.py:58\nmsgid \"Bryanskaya oblast'\"\nmsgstr \"Oblast Brjansk\"\n\n#: ru/ru_regions.py:59\nmsgid \"Vladimirskaya oblast'\"\nmsgstr \"Oblast Wladimir\"\n\n#: ru/ru_regions.py:60\nmsgid \"Volgogradskaya oblast'\"\nmsgstr \"Volgogradskaya Oblast '\"\n\n#: ru/ru_regions.py:61\nmsgid \"Vologodskaya oblast'\"\nmsgstr \"Oblast Wolgograd\"\n\n#: ru/ru_regions.py:62\nmsgid \"Voronezhskaya oblast'\"\nmsgstr \"Oblast Woronesch\"\n\n#: ru/ru_regions.py:63\nmsgid \"Ivanovskaya oblast'\"\nmsgstr \"Oblast Iwanowo\"\n\n#: ru/ru_regions.py:64\nmsgid \"Irkutskaya oblast'\"\nmsgstr \"Oblast Irkutsk\"\n\n#: ru/ru_regions.py:65\nmsgid \"Kaliningradskaya oblast'\"\nmsgstr \"Oblast Kaliningrad\"\n\n#: ru/ru_regions.py:66\nmsgid \"Kaluzhskaya oblast'\"\nmsgstr \"Oblast Kaluga\"\n\n#: ru/ru_regions.py:67\nmsgid \"Kemerovskaya oblast'\"\nmsgstr \"Oblast Kemerowo\"\n\n#: ru/ru_regions.py:68\nmsgid \"Kirovskaya oblast'\"\nmsgstr \"Oblast Kirow\"\n\n#: ru/ru_regions.py:69\nmsgid \"Kostromskaya oblast'\"\nmsgstr \"Oblast Kostroma\"\n\n#: ru/ru_regions.py:70\nmsgid \"Kurganskaya oblast'\"\nmsgstr \"Oblast Kurgan\"\n\n#: ru/ru_regions.py:71\nmsgid \"Kurskaya oblast'\"\nmsgstr \"Oblast Kursk\"\n\n#: ru/ru_regions.py:72\nmsgid \"Leningradskaya oblast'\"\nmsgstr \"Oblast Leningrad\"\n\n#: ru/ru_regions.py:73\nmsgid \"Lipeckaya oblast'\"\nmsgstr \"Oblast Lipezk\"\n\n#: ru/ru_regions.py:74\nmsgid \"Magadanskaya oblast'\"\nmsgstr \"Oblast Magadan\"\n\n#: ru/ru_regions.py:75\nmsgid \"Murmanskaya oblast'\"\nmsgstr \"Oblast Murmansk\"\n\n#: ru/ru_regions.py:76\nmsgid \"Nizhegorodskaja oblast'\"\nmsgstr \"Oblast Nischni Nowgorod\"\n\n#: ru/ru_regions.py:77\nmsgid \"Novgorodskaya oblast'\"\nmsgstr \"Oblast Nowgorod\"\n\n#: ru/ru_regions.py:78\nmsgid \"Novosibirskaya oblast'\"\nmsgstr \"Oblast Nowosibirsk\"\n\n#: ru/ru_regions.py:79\nmsgid \"Omskaya oblast'\"\nmsgstr \"Oblast Omsk\"\n\n#: ru/ru_regions.py:80\nmsgid \"Orenburgskaya oblast'\"\nmsgstr \"Oblast Orenburg\"\n\n#: ru/ru_regions.py:81\nmsgid \"Orlovskaya oblast'\"\nmsgstr \"Oblast Orjol\"\n\n#: ru/ru_regions.py:82\nmsgid \"Penzenskaya oblast'\"\nmsgstr \"Oblast Pensa\"\n\n#: ru/ru_regions.py:83\nmsgid \"Pskovskaya oblast'\"\nmsgstr \"Oblast Pskow\"\n\n#: ru/ru_regions.py:84\nmsgid \"Rostovskaya oblast'\"\nmsgstr \"Oblast Rostow\"\n\n#: ru/ru_regions.py:85\nmsgid \"Rjazanskaya oblast'\"\nmsgstr \"Oblast Rjasan\"\n\n#: ru/ru_regions.py:86\nmsgid \"Samarskaya oblast'\"\nmsgstr \"Oblast Samara\"\n\n#: ru/ru_regions.py:87\nmsgid \"Saratovskaya oblast'\"\nmsgstr \"Oblast Saratow\"\n\n#: ru/ru_regions.py:88\nmsgid \"Sakhalinskaya oblast'\"\nmsgstr \"Oblast Sachalin\"\n\n#: ru/ru_regions.py:89\nmsgid \"Sverdlovskaya oblast'\"\nmsgstr \"Oblast Swerdlowsk\"\n\n#: ru/ru_regions.py:90\nmsgid \"Smolenskaya oblast'\"\nmsgstr \"Oblast Smolensk\"\n\n#: ru/ru_regions.py:91\nmsgid \"Tambovskaya oblast'\"\nmsgstr \"Oblast Tambow\"\n\n#: ru/ru_regions.py:92\nmsgid \"Tverskaya oblast'\"\nmsgstr \"Oblast Twer\"\n\n#: ru/ru_regions.py:93\nmsgid \"Tomskaya oblast'\"\nmsgstr \"Oblast Tomsk\"\n\n#: ru/ru_regions.py:94\nmsgid \"Tul'skaya oblast'\"\nmsgstr \"Oblast Tula\"\n\n#: ru/ru_regions.py:95\nmsgid \"Tyumenskaya oblast'\"\nmsgstr \"Oblast Tjumen\"\n\n#: ru/ru_regions.py:96\nmsgid \"Ul'ianovskaya oblast'\"\nmsgstr \"Oblast Uljanowsk\"\n\n#: ru/ru_regions.py:97\nmsgid \"Chelyabinskaya oblast'\"\nmsgstr \"Oblast Tscheljabinsk\"\n\n#: ru/ru_regions.py:98\nmsgid \"Yaroslavskaya oblast'\"\nmsgstr \"Oblast Jaroslawl\"\n\n#: ru/ru_regions.py:99\nmsgid \"Evreyskaya avtonomnaja oblast'\"\nmsgstr \"Jüdische Autonome Oblast\"\n\n#: ru/ru_regions.py:100\nmsgid \"Neneckiy autonomnyy okrug\"\nmsgstr \"Autonomer Kreis der Nenzen\"\n\n#: ru/ru_regions.py:101\nmsgid \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\nmsgstr \"Autonomer Kreis der Chanten und Mansen - Jugra\"\n\n#: ru/ru_regions.py:102\nmsgid \"Chukotskiy avtonomnyy okrug\"\nmsgstr \"Autonomer Kreis der Tschuktschen\"\n\n#: ru/ru_regions.py:103\nmsgid \"Yamalo-Neneckiy avtonomnyy okrug\"\nmsgstr \"Autonomer Kreis der Jamal-Nenzen\"\n\n#: se/forms.py:54\nmsgid \"Enter a valid Swedish organisation number.\"\nmsgstr \"Bitte eine gültige Schwedische Organisationsnummer eingeben.\"\n\n#: se/forms.py:111\nmsgid \"Enter a valid Swedish personal identity number.\"\nmsgstr \"Bitte eine gültige schwedische Personenidentifikationsnummer eingeben.\"\n\n#: se/forms.py:112\nmsgid \"Co-ordination numbers are not allowed.\"\nmsgstr \"Ordnungsnummern sind nicht erlaubt.\"\n\n#: se/forms.py:154\nmsgid \"Enter a Swedish postal code in the format XXXXX.\"\nmsgstr \"Bitte eine gültige schwedische Postleitzahl im Format XXXXX eingeben.\"\n\n#: se/se_counties.py:16\nmsgid \"Stockholm\"\nmsgstr \"Stockholm\"\n\n#: se/se_counties.py:17\nmsgid \"Västerbotten\"\nmsgstr \"Västerbotten\"\n\n#: se/se_counties.py:18\nmsgid \"Norrbotten\"\nmsgstr \"Norrbotten\"\n\n#: se/se_counties.py:19\nmsgid \"Uppsala\"\nmsgstr \"Uppsala\"\n\n#: se/se_counties.py:20\nmsgid \"Södermanland\"\nmsgstr \"Södermanland\"\n\n#: se/se_counties.py:21\nmsgid \"Östergötland\"\nmsgstr \"Östergötland\"\n\n#: se/se_counties.py:22\nmsgid \"Jönköping\"\nmsgstr \"Jönköping\"\n\n#: se/se_counties.py:23\nmsgid \"Kronoberg\"\nmsgstr \"Kronoberg\"\n\n#: se/se_counties.py:24\nmsgid \"Kalmar\"\nmsgstr \"Kalmar\"\n\n#: se/se_counties.py:25\nmsgid \"Gotland\"\nmsgstr \"Gotland\"\n\n#: se/se_counties.py:26\nmsgid \"Blekinge\"\nmsgstr \"Blekinge\"\n\n#: se/se_counties.py:27\nmsgid \"Skåne\"\nmsgstr \"Skåne\"\n\n#: se/se_counties.py:28\nmsgid \"Halland\"\nmsgstr \"Halland\"\n\n#: se/se_counties.py:29\nmsgid \"Västra Götaland\"\nmsgstr \"Västra Götaland\"\n\n#: se/se_counties.py:30\nmsgid \"Värmland\"\nmsgstr \"Värmland\"\n\n#: se/se_counties.py:31\nmsgid \"Örebro\"\nmsgstr \"Örebro\"\n\n#: se/se_counties.py:32\nmsgid \"Västmanland\"\nmsgstr \"Västmanland\"\n\n#: se/se_counties.py:33\nmsgid \"Dalarna\"\nmsgstr \"Dalarna\"\n\n#: se/se_counties.py:34\nmsgid \"Gävleborg\"\nmsgstr \"Gävleborg\"\n\n#: se/se_counties.py:35\nmsgid \"Västernorrland\"\nmsgstr \"Västernorrland\"\n\n#: se/se_counties.py:36\nmsgid \"Jämtland\"\nmsgstr \"Jämtland\"\n\n#: si/forms.py:25\nmsgid \"The first 7 digits of the EMSO must represent a valid past date.\"\nmsgstr \"\"\n\"Die ersten 7 Stellen der EMSO Ziffer muss einem vergangenen Datum \"\n\"entsprichen. \"\n\n#: si/forms.py:26\nmsgid \"The EMSO is not valid.\"\nmsgstr \"EMSO ungültig.\"\n\n#: si/forms.py:86\nmsgid \"Enter a valid tax number in form SIXXXXXXXX\"\nmsgstr \"Bitte eine gültige Steuernummer im Format SIXXXXXXXX eingeben\"\n\n#: si/forms.py:151\nmsgid \"Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.\"\nmsgstr \"Bitte eine Telefonnummer im Format +386XXXXXXXX or 0XXXXXXXX eingeben.\"\n\n#: sk/sk_districts.py:8\nmsgid \"Banska Bystrica\"\nmsgstr \"Banská Bystrica\"\n\n#: sk/sk_districts.py:9\nmsgid \"Banska Stiavnica\"\nmsgstr \"Banská Štiavnica\"\n\n#: sk/sk_districts.py:10\nmsgid \"Bardejov\"\nmsgstr \"Bardejov\"\n\n#: sk/sk_districts.py:11\nmsgid \"Banovce nad Bebravou\"\nmsgstr \"Bánovce nad Bebravou\"\n\n#: sk/sk_districts.py:12\nmsgid \"Brezno\"\nmsgstr \"Brezno\"\n\n#: sk/sk_districts.py:13\nmsgid \"Bratislava I\"\nmsgstr \"Bratislava I\"\n\n#: sk/sk_districts.py:14\nmsgid \"Bratislava II\"\nmsgstr \"Bratislava II\"\n\n#: sk/sk_districts.py:15\nmsgid \"Bratislava III\"\nmsgstr \"Bratislava III\"\n\n#: sk/sk_districts.py:16\nmsgid \"Bratislava IV\"\nmsgstr \"Bratislava IV\"\n\n#: sk/sk_districts.py:17\nmsgid \"Bratislava V\"\nmsgstr \"Bratislava V\"\n\n#: sk/sk_districts.py:18\nmsgid \"Bytca\"\nmsgstr \"Bytča\"\n\n#: sk/sk_districts.py:19\nmsgid \"Cadca\"\nmsgstr \"Čadca\"\n\n#: sk/sk_districts.py:20\nmsgid \"Detva\"\nmsgstr \"Detva\"\n\n#: sk/sk_districts.py:21\nmsgid \"Dolny Kubin\"\nmsgstr \"Dolný Kubín\"\n\n#: sk/sk_districts.py:22\nmsgid \"Dunajska Streda\"\nmsgstr \"Dunajská Streda\"\n\n#: sk/sk_districts.py:23\nmsgid \"Galanta\"\nmsgstr \"Galanta\"\n\n#: sk/sk_districts.py:24\nmsgid \"Gelnica\"\nmsgstr \"Gelnica\"\n\n#: sk/sk_districts.py:25\nmsgid \"Hlohovec\"\nmsgstr \"Hlohovec\"\n\n#: sk/sk_districts.py:26\nmsgid \"Humenne\"\nmsgstr \"Humenné\"\n\n#: sk/sk_districts.py:27\nmsgid \"Ilava\"\nmsgstr \"Ilava\"\n\n#: sk/sk_districts.py:28\nmsgid \"Kezmarok\"\nmsgstr \"Kežmarok\"\n\n#: sk/sk_districts.py:29\nmsgid \"Komarno\"\nmsgstr \"Komarno\"\n\n#: sk/sk_districts.py:30\nmsgid \"Kosice I\"\nmsgstr \"Kosice I\"\n\n#: sk/sk_districts.py:31\nmsgid \"Kosice II\"\nmsgstr \"Kosice II\"\n\n#: sk/sk_districts.py:32\nmsgid \"Kosice III\"\nmsgstr \"Kosice III\"\n\n#: sk/sk_districts.py:33\nmsgid \"Kosice IV\"\nmsgstr \"Kosice IV\"\n\n#: sk/sk_districts.py:34\nmsgid \"Kosice - okolie\"\nmsgstr \"Kosice - okolie\"\n\n#: sk/sk_districts.py:35\nmsgid \"Krupina\"\nmsgstr \"Krupina\"\n\n#: sk/sk_districts.py:36\nmsgid \"Kysucke Nove Mesto\"\nmsgstr \"Kysucké Nové Mesto\"\n\n#: sk/sk_districts.py:37\nmsgid \"Levice\"\nmsgstr \"Levice\"\n\n#: sk/sk_districts.py:38\nmsgid \"Levoca\"\nmsgstr \"Levoča\"\n\n#: sk/sk_districts.py:39\nmsgid \"Liptovsky Mikulas\"\nmsgstr \"Liptovský Mikuláš\"\n\n#: sk/sk_districts.py:40\nmsgid \"Lucenec\"\nmsgstr \"Lučenec\"\n\n#: sk/sk_districts.py:41\nmsgid \"Malacky\"\nmsgstr \"Malacky\"\n\n#: sk/sk_districts.py:42\nmsgid \"Martin\"\nmsgstr \"Martin\"\n\n#: sk/sk_districts.py:43\nmsgid \"Medzilaborce\"\nmsgstr \"Medzilaborce\"\n\n#: sk/sk_districts.py:44\nmsgid \"Michalovce\"\nmsgstr \"Michalovce\"\n\n#: sk/sk_districts.py:45\nmsgid \"Myjava\"\nmsgstr \"Myjava\"\n\n#: sk/sk_districts.py:46\nmsgid \"Namestovo\"\nmsgstr \"Námestovo\"\n\n#: sk/sk_districts.py:47\nmsgid \"Nitra\"\nmsgstr \"Nitra\"\n\n#: sk/sk_districts.py:48\nmsgid \"Nove Mesto nad Vahom\"\nmsgstr \"Nové Mesto nad Váhom\"\n\n#: sk/sk_districts.py:49\nmsgid \"Nove Zamky\"\nmsgstr \"Nové Zámky\"\n\n#: sk/sk_districts.py:50\nmsgid \"Partizanske\"\nmsgstr \"Partizánske\"\n\n#: sk/sk_districts.py:51\nmsgid \"Pezinok\"\nmsgstr \"Pezinok\"\n\n#: sk/sk_districts.py:52\nmsgid \"Piestany\"\nmsgstr \"Piešťany\"\n\n#: sk/sk_districts.py:53\nmsgid \"Poltar\"\nmsgstr \"Poltár\"\n\n#: sk/sk_districts.py:54\nmsgid \"Poprad\"\nmsgstr \"Poprad\"\n\n#: sk/sk_districts.py:55\nmsgid \"Povazska Bystrica\"\nmsgstr \"Považská Bystrica\"\n\n#: sk/sk_districts.py:56\nmsgid \"Presov\"\nmsgstr \"Prešov\"\n\n#: sk/sk_districts.py:57\nmsgid \"Prievidza\"\nmsgstr \"Prievidza\"\n\n#: sk/sk_districts.py:58\nmsgid \"Puchov\"\nmsgstr \"Púchov\"\n\n#: sk/sk_districts.py:59\nmsgid \"Revuca\"\nmsgstr \"Revúca\"\n\n#: sk/sk_districts.py:60\nmsgid \"Rimavska Sobota\"\nmsgstr \"Rimavska Sobota\"\n\n#: sk/sk_districts.py:61\nmsgid \"Roznava\"\nmsgstr \"Rožňava\"\n\n#: sk/sk_districts.py:62\nmsgid \"Ruzomberok\"\nmsgstr \"Ružomberok\"\n\n#: sk/sk_districts.py:63\nmsgid \"Sabinov\"\nmsgstr \"Sabinov\"\n\n#: sk/sk_districts.py:64\nmsgid \"Senec\"\nmsgstr \"Senec\"\n\n#: sk/sk_districts.py:65\nmsgid \"Senica\"\nmsgstr \"Senica\"\n\n#: sk/sk_districts.py:66\nmsgid \"Skalica\"\nmsgstr \"Skalica\"\n\n#: sk/sk_districts.py:67\nmsgid \"Snina\"\nmsgstr \"Snina\"\n\n#: sk/sk_districts.py:68\nmsgid \"Sobrance\"\nmsgstr \"Sobrance\"\n\n#: sk/sk_districts.py:69\nmsgid \"Spisska Nova Ves\"\nmsgstr \"Spišská Nová Ves\"\n\n#: sk/sk_districts.py:70\nmsgid \"Stara Lubovna\"\nmsgstr \"Stará Ľubovňa\"\n\n#: sk/sk_districts.py:71\nmsgid \"Stropkov\"\nmsgstr \"Stropkov\"\n\n#: sk/sk_districts.py:72\nmsgid \"Svidnik\"\nmsgstr \"Svidník\"\n\n#: sk/sk_districts.py:73\nmsgid \"Sala\"\nmsgstr \"Sala\"\n\n#: sk/sk_districts.py:74\nmsgid \"Topolcany\"\nmsgstr \"Topoľčany\"\n\n#: sk/sk_districts.py:75\nmsgid \"Trebisov\"\nmsgstr \"Trebišov\"\n\n#: sk/sk_districts.py:76\nmsgid \"Trencin\"\nmsgstr \"Trenčín\"\n\n#: sk/sk_districts.py:77\nmsgid \"Trnava\"\nmsgstr \"Trnava\"\n\n#: sk/sk_districts.py:78\nmsgid \"Turcianske Teplice\"\nmsgstr \"Turčianske Teplice\"\n\n#: sk/sk_districts.py:79\nmsgid \"Tvrdosin\"\nmsgstr \"Tvrdošín\"\n\n#: sk/sk_districts.py:80\nmsgid \"Velky Krtis\"\nmsgstr \"Veľký Krtíš\"\n\n#: sk/sk_districts.py:81\nmsgid \"Vranov nad Toplou\"\nmsgstr \"Vranov nad Topľou\"\n\n#: sk/sk_districts.py:82\nmsgid \"Zlate Moravce\"\nmsgstr \"Zlate Moravce\"\n\n#: sk/sk_districts.py:83\nmsgid \"Zvolen\"\nmsgstr \"Zvolen\"\n\n#: sk/sk_districts.py:84\nmsgid \"Zarnovica\"\nmsgstr \"Žarnovica\"\n\n#: sk/sk_districts.py:85\nmsgid \"Ziar nad Hronom\"\nmsgstr \"Žiar nad Hronom\"\n\n#: sk/sk_districts.py:86\nmsgid \"Zilina\"\nmsgstr \"Žilina\"\n\n#: sk/sk_regions.py:8\nmsgid \"Banska Bystrica region\"\nmsgstr \"Banská Bystrica Region\"\n\n#: sk/sk_regions.py:9\nmsgid \"Bratislava region\"\nmsgstr \"Bratislavský kraj\"\n\n#: sk/sk_regions.py:10\nmsgid \"Kosice region\"\nmsgstr \"Kosice\"\n\n#: sk/sk_regions.py:11\nmsgid \"Nitra region\"\nmsgstr \"Nitra\"\n\n#: sk/sk_regions.py:12\nmsgid \"Presov region\"\nmsgstr \"Prešov\"\n\n#: sk/sk_regions.py:13\nmsgid \"Trencin region\"\nmsgstr \"Trenčín\"\n\n#: sk/sk_regions.py:14\nmsgid \"Trnava region\"\nmsgstr \"Trnava\"\n\n#: sk/sk_regions.py:15\nmsgid \"Zilina region\"\nmsgstr \"Žilina\"\n\n#: tr/forms.py:21\nmsgid \"Enter a postal code in the format XXXXX.\"\nmsgstr \"Geben Sie eine Postleitzahl im Format XXXXX ein.\"\n\n#: tr/forms.py:42\nmsgid \"Phone numbers must be in 0XXX XXX XXXX format.\"\nmsgstr \"Telefonnummern müssen im Format 0XXX XXX XXXX sein.\"\n\n#: tr/forms.py:69\nmsgid \"Enter a valid Turkish Identification number.\"\nmsgstr \"Geben Sie eine valide Türkische Identifikationsnummer ein.\"\n\n#: tr/forms.py:70\nmsgid \"Turkish Identification number must be 11 digits.\"\nmsgstr \"Türkische Identifikationsnummern benötigen 11 Zeichen.\"\n\n#: us/forms.py:21\nmsgid \"Enter a zip code in the format XXXXX or XXXXX-XXXX.\"\nmsgstr \"\"\n\"Bitte eine gültige Postleitzahl im Format XXXXX oder XXXXX-XXXX eingeben.\"\n\n#: us/forms.py:59\nmsgid \"Enter a valid U.S. Social Security number in XXX-XX-XXXX format.\"\nmsgstr \"\"\n\"Bitte eine gültige US-amerikanische Sozialversicherungsnummer im Format XXX-\"\n\"XX-XXXX eingeben.\"\n\n#: us/forms.py:92\nmsgid \"Enter a U.S. state or territory.\"\nmsgstr \"Geben Sie einen US-Bundesstaat oder Territorium ein.\"\n\n#: us/models.py:8\nmsgid \"U.S. state (two uppercase letters)\"\nmsgstr \"U.S.-Bundesstaat (zwei Großbuchstaben)\"\n\n#: us/models.py:17\nmsgid \"U.S. postal code (two uppercase letters)\"\nmsgstr \"US-Postleitzahl (zwei Großbuchstaben)\"\n\n#: us/models.py:26\nmsgid \"Phone number\"\nmsgstr \"Telefonnummer\"\n\n#: uy/forms.py:29\nmsgid \"Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.\"\nmsgstr \"\"\n\"Bitte eine gültige CI im Format X.XXX.XXX-X,XXXXXXX-X oder XXXXXXXX eingeben.\"\n\n#: uy/forms.py:31\nmsgid \"Enter a valid CI number.\"\nmsgstr \"Bitte eine gültige CI-Nummer eingeben.\"\n\n#: za/forms.py:22\nmsgid \"Enter a valid South African ID number\"\nmsgstr \"Bitte eine gültige südafrikanische Identifikationsnummer eingeben\"\n\n#: za/forms.py:56\nmsgid \"Enter a valid South African postal code\"\nmsgstr \"Bitte eine gültige südafrikanische Postleitzahl eingeben\"\n\n#: za/za_provinces.py:4\nmsgid \"Eastern Cape\"\nmsgstr \"Ostkap\"\n\n#: za/za_provinces.py:5\nmsgid \"Free State\"\nmsgstr \"Freistaat\"\n\n#: za/za_provinces.py:6\nmsgid \"Gauteng\"\nmsgstr \"Gauteng\"\n\n#: za/za_provinces.py:7\nmsgid \"KwaZulu-Natal\"\nmsgstr \"KwaZulu-Natal\"\n\n#: za/za_provinces.py:8\nmsgid \"Limpopo\"\nmsgstr \"Limpopo\"\n\n#: za/za_provinces.py:9\nmsgid \"Mpumalanga\"\nmsgstr \"Mpumalanga\"\n\n#: za/za_provinces.py:10\nmsgid \"Northern Cape\"\nmsgstr \"Nordkap\"\n\n#: za/za_provinces.py:11\nmsgid \"North West\"\nmsgstr \"Nordwest\"\n\n#: za/za_provinces.py:12\nmsgid \"Western Cape\"\nmsgstr \"Westkap\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/locale/el/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Dimitris Glezos <glezos@indifex.com>, 2011, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Yorgos Pagles <y.pagles@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-10-17 09:16+0000\\n\"\n\"Last-Translator: Dimitris Glezos <glezos@transifex.com>\\n\"\n\"Language-Team: Greek (http://www.transifex.com/projects/p/django/language/\"\n\"el/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: el\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: ar/forms.py:30\nmsgid \"Enter a postal code in the format NNNN or ANNNNAAA.\"\nmsgstr \"Εισαγάγετε έναν ταχυδρομικό κώδικα σε μορφή NNNN ή ANNNNAAA.\"\n\n#: ar/forms.py:52 br/forms.py:95 br/forms.py:134 pe/forms.py:27 pe/forms.py:55\nmsgid \"This field requires only numbers.\"\nmsgstr \"Αυτό το πεδίο απαιτεί μόνο αριθμούς.\"\n\n#: ar/forms.py:53\nmsgid \"This field requires 7 or 8 digits.\"\nmsgstr \"Αυτό το πεδίο απαιτεί 7 ή 8 ψηφία.\"\n\n#: ar/forms.py:82\nmsgid \"Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.\"\nmsgstr \"Εισάγετε έγκυρο CUIT στη μορφή ΧΧ-XXXXXXXX-X ή XXXXXXXXXXXX.\"\n\n#: ar/forms.py:83\nmsgid \"Invalid CUIT.\"\nmsgstr \"Λανθασμένο CUIT.\"\n\n#: ar/forms.py:84\nmsgid \"Invalid legal type. Type must be 27, 20, 23 or 30.\"\nmsgstr \"\"\n\n#: at/at_states.py:5\nmsgid \"Burgenland\"\nmsgstr \"Μπούργκενλαντ\"\n\n#: at/at_states.py:6\nmsgid \"Carinthia\"\nmsgstr \"Καρινθία\"\n\n#: at/at_states.py:7\nmsgid \"Lower Austria\"\nmsgstr \"Κάτω Αυστρία\"\n\n#: at/at_states.py:8\nmsgid \"Upper Austria\"\nmsgstr \"Άνω Αυστρία\"\n\n#: at/at_states.py:9\nmsgid \"Salzburg\"\nmsgstr \"Σάλτσμπουργκ\"\n\n#: at/at_states.py:10\nmsgid \"Styria\"\nmsgstr \"Στυρία\"\n\n#: at/at_states.py:11\nmsgid \"Tyrol\"\nmsgstr \"Τυρόλο\"\n\n#: at/at_states.py:12\nmsgid \"Vorarlberg\"\nmsgstr \"Vorarlberg\"\n\n#: at/at_states.py:13\nmsgid \"Vienna\"\nmsgstr \"Βιέννη\"\n\n#: at/forms.py:22 ch/forms.py:22 no/forms.py:19\nmsgid \"Enter a zip code in the format XXXX.\"\nmsgstr \"Πληκτρολογήστε έναν ταχυδρομικό κωδικό στο ΧΧΧΧ μορφή.\"\n\n#: at/forms.py:50\nmsgid \"Enter a valid Austrian Social Security Number in XXXX XXXXXX format.\"\nmsgstr \"\"\n\"Εισάγετε έναν έγκυρθ αυστριακό Αριθμό Κοινωνικής Ασφάλισης στη μορφή XXXX \"\n\"XXXXXX.\"\n\n#: au/forms.py:26\nmsgid \"Enter a 4 digit postcode.\"\nmsgstr \"Εισάγετε έναν 4ψήφιο κωδικό θέσης.\"\n\n#: au/models.py:9\nmsgid \"Australian State\"\nmsgstr \"\"\n\n#: au/models.py:19\nmsgid \"Australian Postcode\"\nmsgstr \"\"\n\n#: au/models.py:33\nmsgid \"Australian Phone number\"\nmsgstr \"\"\n\n#: be/be_provinces.py:5\nmsgid \"Antwerp\"\nmsgstr \"Αμβέρσα\"\n\n#: be/be_provinces.py:6\nmsgid \"Brussels\"\nmsgstr \"Βρυξέλλες\"\n\n#: be/be_provinces.py:7\nmsgid \"East Flanders\"\nmsgstr \"Ανατολική Φλάνδρα\"\n\n#: be/be_provinces.py:8\nmsgid \"Flemish Brabant\"\nmsgstr \"Φλαμανδική Μπραμπάντ\"\n\n#: be/be_provinces.py:9\nmsgid \"Hainaut\"\nmsgstr \"Hainaut\"\n\n#: be/be_provinces.py:10\nmsgid \"Liege\"\nmsgstr \"Λιέγη\"\n\n#: be/be_provinces.py:11 nl/nl_provinces.py:9\nmsgid \"Limburg\"\nmsgstr \"Limburg\"\n\n#: be/be_provinces.py:12\nmsgid \"Luxembourg\"\nmsgstr \"Λουξεμβούργο\"\n\n#: be/be_provinces.py:13\nmsgid \"Namur\"\nmsgstr \"Namur\"\n\n#: be/be_provinces.py:14\nmsgid \"Walloon Brabant\"\nmsgstr \"Ουαλονική/Βαλλονική Μπραμπάντ\"\n\n#: be/be_provinces.py:15\nmsgid \"West Flanders\"\nmsgstr \"Δυτική Φλάνδρα\"\n\n#: be/be_regions.py:5\nmsgid \"Brussels Capital Region\"\nmsgstr \"Περιφέρεια Βρυξελλών Capital\"\n\n#: be/be_regions.py:6\nmsgid \"Flemish Region\"\nmsgstr \"Περιφέρεια της Φλάνδρας\"\n\n#: be/be_regions.py:7\nmsgid \"Wallonia\"\nmsgstr \"Βαλλονία - γαλλόφωνο Βέλγιο\"\n\n#: be/forms.py:25\nmsgid \"Enter a valid postal code in the range and format 1XXX - 9XXX.\"\nmsgstr \"\"\n\"Εισάγετε έναν έγκυρο ταχυδρομικό κώδικα με εύρος και μορφή 1xxx - 9XXX.\"\n\n#: be/forms.py:48\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\nmsgstr \"\"\n\"Εισάγετε έναν έγκυρο αριθμό τηλεφώνου σε μία από τις μορφές 0x xxx xx xx, \"\n\"0xx xx xx xx, 04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.\"\n\"xxx.xx.xx, 0xx.xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\n\n#: br/forms.py:22\nmsgid \"Enter a zip code in the format XXXXX-XXX.\"\nmsgstr \"Πληκτρολογήστε έναν ταχυδρομικό κώδικα σε μορφή ΧΧΧΧΧ-XXX.\"\n\n#: br/forms.py:31\nmsgid \"Phone numbers must be in XX-XXXX-XXXX format.\"\nmsgstr \"Οι αριθμοί τηλεφώνου πρέπει να έχουν μορφή XX-XXXX-XXXX.\"\n\n#: br/forms.py:58\nmsgid \"\"\n\"Select a valid brazilian state. That state is not one of the available \"\n\"states.\"\nmsgstr \"\"\n\"Επιλέξτε μια έγκυρη βραζιλιάνικη πριφέρεια. Το όνομα της περιφέρειας αυτής \"\n\"δεν είναι έγκυρο.\"\n\n#: br/forms.py:93\nmsgid \"Invalid CPF number.\"\nmsgstr \"Ο αριθμός CPF δεν είναι έγκυρος.\"\n\n#: br/forms.py:94\nmsgid \"This field requires at most 11 digits or 14 characters.\"\nmsgstr \"Αυτό το πεδίο απαιτεί το πολύ 11 ψηφία ή 14 χαρακτήρες.\"\n\n#: br/forms.py:133\nmsgid \"Invalid CNPJ number.\"\nmsgstr \"Ο αριθμός CNPJ δεν είναι έγκυρος.\"\n\n#: br/forms.py:135\nmsgid \"This field requires at least 14 digits\"\nmsgstr \"Αυτό το πεδίο απαιτεί τουλάχιστον 14 ψηφία\"\n\n#: ca/forms.py:29\nmsgid \"Enter a postal code in the format XXX XXX.\"\nmsgstr \"Εισαγάγετε έναν ταχυδρομικό κώδικα με τη μορφή ΧΧΧ ΧΧΧ.\"\n\n#: ca/forms.py:47 us/forms.py:30\nmsgid \"Phone numbers must be in XXX-XXX-XXXX format.\"\nmsgstr \"Οι αριθμοί τηλεφώνου πρέπει να έχουν μορφή ΧΧΧ-ΧΧΧΧ.\"\n\n#: ca/forms.py:69\nmsgid \"Enter a Canadian province or territory.\"\nmsgstr \"\"\n\n#: ca/forms.py:110\nmsgid \"Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.\"\nmsgstr \"\"\n\"Εισάγετε έναν έγκυρο καναδικό αριθμό κοινωνικής ασφάλισης στη μορφή ΧΧΧ-ΧΧΧ.\"\n\n#: ch/ch_states.py:5\nmsgid \"Aargau\"\nmsgstr \"Aargau\"\n\n#: ch/ch_states.py:6\nmsgid \"Appenzell Innerrhoden\"\nmsgstr \"Appenzell Innerrhoden\"\n\n#: ch/ch_states.py:7\nmsgid \"Appenzell Ausserrhoden\"\nmsgstr \"Appenzell Ausserrhoden\"\n\n#: ch/ch_states.py:8\nmsgid \"Basel-Stadt\"\nmsgstr \"Basel-Stadt\"\n\n#: ch/ch_states.py:9\nmsgid \"Basel-Land\"\nmsgstr \"Basel-Land\"\n\n#: ch/ch_states.py:10\nmsgid \"Berne\"\nmsgstr \"Βέρνη\"\n\n#: ch/ch_states.py:11\nmsgid \"Fribourg\"\nmsgstr \"Φράιμπουργκ\"\n\n#: ch/ch_states.py:12\nmsgid \"Geneva\"\nmsgstr \"Γενεύη\"\n\n#: ch/ch_states.py:13\nmsgid \"Glarus\"\nmsgstr \"Glarus\"\n\n#: ch/ch_states.py:14\nmsgid \"Graubuenden\"\nmsgstr \"Graubuenden\"\n\n#: ch/ch_states.py:15\nmsgid \"Jura\"\nmsgstr \"Jura\"\n\n#: ch/ch_states.py:16\nmsgid \"Lucerne\"\nmsgstr \"Λουκέρνη\"\n\n#: ch/ch_states.py:17\nmsgid \"Neuchatel\"\nmsgstr \"Neuchatel\"\n\n#: ch/ch_states.py:18\nmsgid \"Nidwalden\"\nmsgstr \"Nidwalden\"\n\n#: ch/ch_states.py:19\nmsgid \"Obwalden\"\nmsgstr \"Obwalden\"\n\n#: ch/ch_states.py:20\nmsgid \"Schaffhausen\"\nmsgstr \"Schaffhausen\"\n\n#: ch/ch_states.py:21\nmsgid \"Schwyz\"\nmsgstr \"Schwyz\"\n\n#: ch/ch_states.py:22\nmsgid \"Solothurn\"\nmsgstr \"Solothurn\"\n\n#: ch/ch_states.py:23\nmsgid \"St. Gallen\"\nmsgstr \"Σεντ Γκάλεν\"\n\n#: ch/ch_states.py:24\nmsgid \"Thurgau\"\nmsgstr \"Thurgau\"\n\n#: ch/ch_states.py:25\nmsgid \"Ticino\"\nmsgstr \"Ticino\"\n\n#: ch/ch_states.py:26\nmsgid \"Uri\"\nmsgstr \"Uri\"\n\n#: ch/ch_states.py:27\nmsgid \"Valais\"\nmsgstr \"Valais\"\n\n#: ch/ch_states.py:28\nmsgid \"Vaud\"\nmsgstr \"Vaud\"\n\n#: ch/ch_states.py:29\nmsgid \"Zug\"\nmsgstr \"Zug\"\n\n#: ch/ch_states.py:30\nmsgid \"Zurich\"\nmsgstr \"Ζυρίχη\"\n\n#: ch/forms.py:37\nmsgid \"Phone numbers must be in 0XX XXX XX XX format.\"\nmsgstr \"\"\n\n#: ch/forms.py:68\nmsgid \"\"\n\"Enter a valid Swiss identity or passport card number in X1234567<0 or \"\n\"1234567890 format.\"\nmsgstr \"\"\n\"Εισάγετε έναν έγκυρο αριθμό ελβετικής ταυτότητας ή διαβατηρίου με μορφή \"\n\"X1234567<0 ή 1234567890.\"\n\n#: cl/forms.py:32\nmsgid \"Enter a valid Chilean RUT.\"\nmsgstr \"Εισάγετε ένα έγκυρο αριθμό RUT Χιλής.\"\n\n#: cl/forms.py:33\nmsgid \"Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.\"\nmsgstr \"Εισάγετε ένα έγκυρο αριθμό RUT Χιλής. Η μορφή του είναι XX.XXX.XXX-X.\"\n\n#: cl/forms.py:34\nmsgid \"The Chilean RUT is not valid.\"\nmsgstr \"Αυτός ο αριθμός RUT Χιλής δεν είναι έγκυρος. \"\n\n#: cn/forms.py:84\nmsgid \"Enter a post code in the format XXXXXX.\"\nmsgstr \"\"\n\n#: cn/forms.py:105\nmsgid \"ID Card Number consists of 15 or 18 digits.\"\nmsgstr \"\"\n\n#: cn/forms.py:106\nmsgid \"Invalid ID Card Number: Wrong checksum\"\nmsgstr \"\"\n\n#: cn/forms.py:107\nmsgid \"Invalid ID Card Number: Wrong birthdate\"\nmsgstr \"\"\n\n#: cn/forms.py:108\nmsgid \"Invalid ID Card Number: Wrong location code\"\nmsgstr \"\"\n\n#: cn/forms.py:193\nmsgid \"Enter a valid phone number.\"\nmsgstr \"\"\n\n#: cn/forms.py:210\nmsgid \"Enter a valid cell number.\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:8\nmsgid \"Prague\"\nmsgstr \"Πράγα\"\n\n#: cz/cz_regions.py:9\nmsgid \"Central Bohemian Region\"\nmsgstr \"Κεντρική Περιφέρεια Βοημίας\"\n\n#: cz/cz_regions.py:10\nmsgid \"South Bohemian Region\"\nmsgstr \"Περιφέρεια Νοτίου Βοημίας\"\n\n#: cz/cz_regions.py:11\nmsgid \"Pilsen Region\"\nmsgstr \"Περιφέρεια Pilsen\"\n\n#: cz/cz_regions.py:12\nmsgid \"Carlsbad Region\"\nmsgstr \"Περιφέρεια Carlsbad\"\n\n#: cz/cz_regions.py:13\nmsgid \"Usti Region\"\nmsgstr \"Περιφέρεια Usti\"\n\n#: cz/cz_regions.py:14\nmsgid \"Liberec Region\"\nmsgstr \"Περιφέρεια Liberec\"\n\n#: cz/cz_regions.py:15\nmsgid \"Hradec Region\"\nmsgstr \"Περιφέρεια Χράντεκ\"\n\n#: cz/cz_regions.py:16\nmsgid \"Pardubice Region\"\nmsgstr \"Περιφέρεια Pardubice\"\n\n#: cz/cz_regions.py:17\nmsgid \"Vysocina Region\"\nmsgstr \"Περιφέρεια Vysocina\"\n\n#: cz/cz_regions.py:18\nmsgid \"South Moravian Region\"\nmsgstr \"Περιφέρεια Νότιας Μοραβίας\"\n\n#: cz/cz_regions.py:19\nmsgid \"Olomouc Region\"\nmsgstr \"Περιφέρεια Olomouc\"\n\n#: cz/cz_regions.py:20\nmsgid \"Zlin Region\"\nmsgstr \"Περιφέρεια Zlin\"\n\n#: cz/cz_regions.py:21\nmsgid \"Moravian-Silesian Region\"\nmsgstr \"Περιφέρεια Μοραβίας-Σιλεσίας\"\n\n#: cz/forms.py:32 sk/forms.py:33\nmsgid \"Enter a postal code in the format XXXXX or XXX XX.\"\nmsgstr \"Εισαγάγετε έναν ταχυδρομικό κώδικα σε μορφή XXXXX ή XXX XX.\"\n\n#: cz/forms.py:52\nmsgid \"Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.\"\nmsgstr \"\"\n\"Πληκτρολογήστε έναν αριθμό γέννησης με τη μορφή XXXXXX / XXXX ή XXXXXXXXXX.\"\n\n#: cz/forms.py:53\nmsgid \"Enter a valid birth number.\"\nmsgstr \"Πληκτρολογήστε έναν έγκυρο αριθμό γέννησης.\"\n\n#: cz/forms.py:102\nmsgid \"Enter a valid IC number.\"\nmsgstr \"Πληκτρολογήστε έναν έγκυρο αριθμό IC.\"\n\n#: de/de_states.py:5\nmsgid \"Baden-Wuerttemberg\"\nmsgstr \"Baden-Wuerttemberg\"\n\n#: de/de_states.py:6\nmsgid \"Bavaria\"\nmsgstr \"Βαυαρία\"\n\n#: de/de_states.py:7\nmsgid \"Berlin\"\nmsgstr \"Βερολίνο\"\n\n#: de/de_states.py:8\nmsgid \"Brandenburg\"\nmsgstr \"Βραδεμβούργο\"\n\n#: de/de_states.py:9\nmsgid \"Bremen\"\nmsgstr \"Βρέμη\"\n\n#: de/de_states.py:10\nmsgid \"Hamburg\"\nmsgstr \"Αμβούργο\"\n\n#: de/de_states.py:11\nmsgid \"Hessen\"\nmsgstr \"Έσσεν\"\n\n#: de/de_states.py:12\nmsgid \"Mecklenburg-Western Pomerania\"\nmsgstr \"Μεκλεμβούργο-Δυτική Προπομερανία\"\n\n#: de/de_states.py:13\nmsgid \"Lower Saxony\"\nmsgstr \"Κάτω Σαξονία\"\n\n#: de/de_states.py:14\nmsgid \"North Rhine-Westphalia\"\nmsgstr \"Βόρεια Ρηνανία-Βεστφαλία\"\n\n#: de/de_states.py:15\nmsgid \"Rhineland-Palatinate\"\nmsgstr \"Ρηνανία-Παλατινάτο\"\n\n#: de/de_states.py:16\nmsgid \"Saarland\"\nmsgstr \"Σάαρλαντ\"\n\n#: de/de_states.py:17\nmsgid \"Saxony\"\nmsgstr \"Σαξωνία\"\n\n#: de/de_states.py:18\nmsgid \"Saxony-Anhalt\"\nmsgstr \"Σαξονία-Άνχαλτ\"\n\n#: de/de_states.py:19\nmsgid \"Schleswig-Holstein\"\nmsgstr \"Schleswig-Holstein\"\n\n#: de/de_states.py:20\nmsgid \"Thuringia\"\nmsgstr \"Θουριγγία\"\n\n#: de/forms.py:20 fi/forms.py:18 fr/forms.py:20\nmsgid \"Enter a zip code in the format XXXXX.\"\nmsgstr \"Πληκτρολογήστε έναν ταχυδρομικό κωδικό στο XXXXX σχήμα.\"\n\n#: de/forms.py:46\nmsgid \"\"\n\"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"format.\"\nmsgstr \"\"\n\"Πληκτρολογήστε έναν έγκυρο γερμανικό αριθμό ταυτότητας με μορφή XXXXXXXXXXX-\"\n\"XXXXXXX-XXXXXXX-X.\"\n\n#: es/es_provinces.py:5\nmsgid \"Araba\"\nmsgstr \"\"\n\n#: es/es_provinces.py:6\nmsgid \"Albacete\"\nmsgstr \"Αλμπαθέτε\"\n\n#: es/es_provinces.py:7\nmsgid \"Alacant\"\nmsgstr \"Alacant\"\n\n#: es/es_provinces.py:8\nmsgid \"Almeria\"\nmsgstr \"Αλμερία\"\n\n#: es/es_provinces.py:9\nmsgid \"Avila\"\nmsgstr \"Avila\"\n\n#: es/es_provinces.py:10\nmsgid \"Badajoz\"\nmsgstr \"Badajoz\"\n\n#: es/es_provinces.py:11\nmsgid \"Illes Balears\"\nmsgstr \"Βαλεαρίδες Νήσοι\"\n\n#: es/es_provinces.py:12\nmsgid \"Barcelona\"\nmsgstr \"Βαρκελώνη\"\n\n#: es/es_provinces.py:13\nmsgid \"Burgos\"\nmsgstr \"Burgos\"\n\n#: es/es_provinces.py:14\nmsgid \"Caceres\"\nmsgstr \"Caceres\"\n\n#: es/es_provinces.py:15\nmsgid \"Cadiz\"\nmsgstr \"Καντίζ\"\n\n#: es/es_provinces.py:16\nmsgid \"Castello\"\nmsgstr \"Castello\"\n\n#: es/es_provinces.py:17\nmsgid \"Ciudad Real\"\nmsgstr \"Ciudad Real\"\n\n#: es/es_provinces.py:18\nmsgid \"Cordoba\"\nmsgstr \"Κόρδοβα\"\n\n#: es/es_provinces.py:19\nmsgid \"A Coruna\"\nmsgstr \"A Coruna\"\n\n#: es/es_provinces.py:20\nmsgid \"Cuenca\"\nmsgstr \"Cuenca\"\n\n#: es/es_provinces.py:21\nmsgid \"Girona\"\nmsgstr \"Girona\"\n\n#: es/es_provinces.py:22\nmsgid \"Granada\"\nmsgstr \"Γρανάδα\"\n\n#: es/es_provinces.py:23\nmsgid \"Guadalajara\"\nmsgstr \"Γκουανταλαχάρα\"\n\n#: es/es_provinces.py:24\nmsgid \"Guipuzkoa\"\nmsgstr \"Guipuzkoa\"\n\n#: es/es_provinces.py:25\nmsgid \"Huelva\"\nmsgstr \"Ουέλβα\"\n\n#: es/es_provinces.py:26\nmsgid \"Huesca\"\nmsgstr \"Huesca\"\n\n#: es/es_provinces.py:27\nmsgid \"Jaen\"\nmsgstr \"Jaen\"\n\n#: es/es_provinces.py:28\nmsgid \"Leon\"\nmsgstr \"Leon\"\n\n#: es/es_provinces.py:29\nmsgid \"Lleida\"\nmsgstr \"Lleida\"\n\n#: es/es_provinces.py:30 es/es_regions.py:17\nmsgid \"La Rioja\"\nmsgstr \"La Rioja\"\n\n#: es/es_provinces.py:31\nmsgid \"Lugo\"\nmsgstr \"Lugo\"\n\n#: es/es_provinces.py:32 es/es_regions.py:18\nmsgid \"Madrid\"\nmsgstr \"Μαδρίτη\"\n\n#: es/es_provinces.py:33\nmsgid \"Malaga\"\nmsgstr \"Μάλαγα\"\n\n#: es/es_provinces.py:34\nmsgid \"Murcia\"\nmsgstr \"Μούρθια\"\n\n#: es/es_provinces.py:35\nmsgid \"Navarre\"\nmsgstr \"Ναβάρα\"\n\n#: es/es_provinces.py:36\nmsgid \"Ourense\"\nmsgstr \"Ουρένσε\"\n\n#: es/es_provinces.py:37\nmsgid \"Asturias\"\nmsgstr \"Αστούριας\"\n\n#: es/es_provinces.py:38\nmsgid \"Palencia\"\nmsgstr \"Palencia\"\n\n#: es/es_provinces.py:39\nmsgid \"Las Palmas\"\nmsgstr \"Λας Πάλμας\"\n\n#: es/es_provinces.py:40\nmsgid \"Pontevedra\"\nmsgstr \"Pontevedra\"\n\n#: es/es_provinces.py:41\nmsgid \"Salamanca\"\nmsgstr \"Σαλαμάνκα\"\n\n#: es/es_provinces.py:42\nmsgid \"Santa Cruz de Tenerife\"\nmsgstr \"Σάντα Κρούζ Τενερίφης\"\n\n#: es/es_provinces.py:43 es/es_regions.py:11\nmsgid \"Cantabria\"\nmsgstr \"Cantabria\"\n\n#: es/es_provinces.py:44\nmsgid \"Segovia\"\nmsgstr \"Segovia\"\n\n#: es/es_provinces.py:45\nmsgid \"Seville\"\nmsgstr \"Σεβίλλη\"\n\n#: es/es_provinces.py:46\nmsgid \"Soria\"\nmsgstr \"Σόρια\"\n\n#: es/es_provinces.py:47\nmsgid \"Tarragona\"\nmsgstr \"Ταραχόνα\"\n\n#: es/es_provinces.py:48\nmsgid \"Teruel\"\nmsgstr \"Teruel\"\n\n#: es/es_provinces.py:49\nmsgid \"Toledo\"\nmsgstr \"Τολέδο\"\n\n#: es/es_provinces.py:50\nmsgid \"Valencia\"\nmsgstr \"Βαλένθια\"\n\n#: es/es_provinces.py:51\nmsgid \"Valladolid\"\nmsgstr \"Βαγιαδολίδ\"\n\n#: es/es_provinces.py:52\nmsgid \"Bizkaia\"\nmsgstr \"Βισκάια\"\n\n#: es/es_provinces.py:53\nmsgid \"Zamora\"\nmsgstr \"Ζαμόρα\"\n\n#: es/es_provinces.py:54\nmsgid \"Zaragoza\"\nmsgstr \"Σαραγόσα\"\n\n#: es/es_provinces.py:55\nmsgid \"Ceuta\"\nmsgstr \"Θέουτα\"\n\n#: es/es_provinces.py:56\nmsgid \"Melilla\"\nmsgstr \"Μελίλια\"\n\n#: es/es_regions.py:5\nmsgid \"Andalusia\"\nmsgstr \"Ανδαλουσία\"\n\n#: es/es_regions.py:6\nmsgid \"Aragon\"\nmsgstr \"Aragon\"\n\n#: es/es_regions.py:7\nmsgid \"Principality of Asturias\"\nmsgstr \"Πριγκιπάτο της Αστούριας\"\n\n#: es/es_regions.py:8\nmsgid \"Balearic Islands\"\nmsgstr \"Βαλεαρίδες Νήσοι\"\n\n#: es/es_regions.py:9\nmsgid \"Basque Country\"\nmsgstr \"Χώρα των Βάσκων\"\n\n#: es/es_regions.py:10\nmsgid \"Canary Islands\"\nmsgstr \"Κανάριοι Νήσοι\"\n\n#: es/es_regions.py:12\nmsgid \"Castile-La Mancha\"\nmsgstr \"Castilla-La Mancha\"\n\n#: es/es_regions.py:13\nmsgid \"Castile and Leon\"\nmsgstr \"Καστίλλη και Λεόν\"\n\n#: es/es_regions.py:14\nmsgid \"Catalonia\"\nmsgstr \"Καταλονία\"\n\n#: es/es_regions.py:15\nmsgid \"Extremadura\"\nmsgstr \"Εξτρεμαδούρα\"\n\n#: es/es_regions.py:16\nmsgid \"Galicia\"\nmsgstr \"Γαλικία\"\n\n#: es/es_regions.py:19\nmsgid \"Region of Murcia\"\nmsgstr \"Περιφέρεια της Μούρθια\"\n\n#: es/es_regions.py:20\nmsgid \"Foral Community of Navarre\"\nmsgstr \"Κοινότητας Foral της Ναβάρρας\"\n\n#: es/es_regions.py:21\nmsgid \"Valencian Community\"\nmsgstr \"Κοινότητα της Βαλένθια\"\n\n#: es/forms.py:26\nmsgid \"Enter a valid postal code in the range and format 01XXX - 52XXX.\"\nmsgstr \"\"\n\"Εισάγετε έναν έγκυρο ταχυδρομικό κώδικα με εύρος και μορφή 01XXX  - 52XXX.\"\n\n#: es/forms.py:46\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or \"\n\"9XXXXXXXX.\"\nmsgstr \"\"\n\"Πληκτρολογήστε έναν έγκυρο αριθμό τηλεφώνου μία από τις μορφές 6XXXXXXXX, \"\n\"8XXXXXXXX ή 9XXXXXXXX.\"\n\n#: es/forms.py:73\nmsgid \"Please enter a valid NIF, NIE, or CIF.\"\nmsgstr \"Παρακαλώ εισάγετε έναν έγκυρο αριθμό NIF, ΝΙΕ ή CIF.\"\n\n#: es/forms.py:74\nmsgid \"Please enter a valid NIF or NIE.\"\nmsgstr \"Παρακαλώ εισάγετε έναν έγκυρο αριθμό NIF ή ΝΙΕ.\"\n\n#: es/forms.py:75\nmsgid \"Invalid checksum for NIF.\"\nmsgstr \"Ο αριθμός NIF δεν επαληθεύεται.\"\n\n#: es/forms.py:76\nmsgid \"Invalid checksum for NIE.\"\nmsgstr \"Ο αριθμός NIE δεν επαληθεύεται.\"\n\n#: es/forms.py:77\nmsgid \"Invalid checksum for CIF.\"\nmsgstr \"Ο αριθμός CIF δεν επαληθεύεται.\"\n\n#: es/forms.py:149\nmsgid \"\"\n\"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.\"\nmsgstr \"\"\n\"Πρακαλούμε εισάγετε έναν έγκυρο αριθμό τραπεζικού λογαριασμού σε μορφή ΧΧΧΧ-\"\n\"ΧΧΧΧ-ΧΧ-XXXXXXXXXX.\"\n\n#: es/forms.py:150\nmsgid \"Invalid checksum for bank account number.\"\nmsgstr \"Ο αριθμός τραπεζικού λογαριασμού δεν επαληθεύεται.\"\n\n#: fi/forms.py:33\nmsgid \"Enter a valid Finnish social security number.\"\nmsgstr \"Εισάγετε έναν έγκυρο φινλανδικό αριθμό μητρώου κοινωνικής ασφάλισης.\"\n\n#: fr/forms.py:35\nmsgid \"Phone numbers must be in 0X XX XX XX XX format.\"\nmsgstr \"Οι αριθμοί τηλεφώνου πρέπει να είναι σε μορφή 0X XX XX XX XX.\"\n\n#: gb/forms.py:25\nmsgid \"Enter a valid postcode.\"\nmsgstr \"Εισάγετε ένα έγκυρο ταχυδρομικό κώδικα.\"\n\n#: gb/gb_regions.py:11\nmsgid \"Bedfordshire\"\nmsgstr \"Μπεντφορντσάιρ\"\n\n#: gb/gb_regions.py:12\nmsgid \"Buckinghamshire\"\nmsgstr \"Μπακινγκχαμσάιρ\"\n\n#: gb/gb_regions.py:14\nmsgid \"Cheshire\"\nmsgstr \"Cheshire\"\n\n#: gb/gb_regions.py:15\nmsgid \"Cornwall and Isles of Scilly\"\nmsgstr \"Κορνουάλη και νήσοι Scilly\"\n\n#: gb/gb_regions.py:16\nmsgid \"Cumbria\"\nmsgstr \"Cumbria\"\n\n#: gb/gb_regions.py:17\nmsgid \"Derbyshire\"\nmsgstr \"Ντερμπυσάιρ\"\n\n#: gb/gb_regions.py:18\nmsgid \"Devon\"\nmsgstr \"Ντέβον\"\n\n#: gb/gb_regions.py:19\nmsgid \"Dorset\"\nmsgstr \"Ντόρσετ\"\n\n#: gb/gb_regions.py:20\nmsgid \"Durham\"\nmsgstr \"Ντάρχαμ\"\n\n#: gb/gb_regions.py:21\nmsgid \"East Sussex\"\nmsgstr \"Ανατολικό Σάσεξ\"\n\n#: gb/gb_regions.py:22\nmsgid \"Essex\"\nmsgstr \"Έσσεξ\"\n\n#: gb/gb_regions.py:23\nmsgid \"Gloucestershire\"\nmsgstr \"Gloucestershire\"\n\n#: gb/gb_regions.py:24\nmsgid \"Greater London\"\nmsgstr \"Ευρύτερο Λονδίνο\"\n\n#: gb/gb_regions.py:25\nmsgid \"Greater Manchester\"\nmsgstr \"Ευρύτερο Μάντσεστερ\"\n\n#: gb/gb_regions.py:26\nmsgid \"Hampshire\"\nmsgstr \"Χάμπσάιρ\"\n\n#: gb/gb_regions.py:27\nmsgid \"Hertfordshire\"\nmsgstr \"Χαρτφορντσάιρ\"\n\n#: gb/gb_regions.py:28\nmsgid \"Kent\"\nmsgstr \"Κέντ\"\n\n#: gb/gb_regions.py:29\nmsgid \"Lancashire\"\nmsgstr \"Lancashire\"\n\n#: gb/gb_regions.py:30\nmsgid \"Leicestershire\"\nmsgstr \"Leicestershire\"\n\n#: gb/gb_regions.py:31\nmsgid \"Lincolnshire\"\nmsgstr \"Lincolnshire\"\n\n#: gb/gb_regions.py:32\nmsgid \"Merseyside\"\nmsgstr \"Μερσερσάιντ\"\n\n#: gb/gb_regions.py:33\nmsgid \"Norfolk\"\nmsgstr \"Νόρφολκ\"\n\n#: gb/gb_regions.py:34\nmsgid \"North Yorkshire\"\nmsgstr \"Βόρειο Γιόρκσαϊρ\"\n\n#: gb/gb_regions.py:35\nmsgid \"Northamptonshire\"\nmsgstr \"Νόρθχαμπτονσαϊρ\"\n\n#: gb/gb_regions.py:36\nmsgid \"Northumberland\"\nmsgstr \"Northumberland\"\n\n#: gb/gb_regions.py:37\nmsgid \"Nottinghamshire\"\nmsgstr \"Νότιγχαμσαϊρ\"\n\n#: gb/gb_regions.py:38\nmsgid \"Oxfordshire\"\nmsgstr \"Όξφορντσαϊρ\"\n\n#: gb/gb_regions.py:39\nmsgid \"Shropshire\"\nmsgstr \"Shropshire\"\n\n#: gb/gb_regions.py:40\nmsgid \"Somerset\"\nmsgstr \"Σόμερσετ\"\n\n#: gb/gb_regions.py:41\nmsgid \"South Yorkshire\"\nmsgstr \"Νότιο Γιόρκσαϊρ\"\n\n#: gb/gb_regions.py:42\nmsgid \"Staffordshire\"\nmsgstr \"Στάφορντσαϊρ\"\n\n#: gb/gb_regions.py:43\nmsgid \"Suffolk\"\nmsgstr \"Σάφολκ\"\n\n#: gb/gb_regions.py:44\nmsgid \"Surrey\"\nmsgstr \"Σάρεϊ\"\n\n#: gb/gb_regions.py:45\nmsgid \"Tyne and Wear\"\nmsgstr \"Tyne and Wear\"\n\n#: gb/gb_regions.py:46\nmsgid \"Warwickshire\"\nmsgstr \"Γουόργουικσαϊρ\"\n\n#: gb/gb_regions.py:47\nmsgid \"West Midlands\"\nmsgstr \"West Midlands\"\n\n#: gb/gb_regions.py:48\nmsgid \"West Sussex\"\nmsgstr \"Δυτικό Σάσεξ\"\n\n#: gb/gb_regions.py:49\nmsgid \"West Yorkshire\"\nmsgstr \"Δυτικό Γιόρκσαϊρ\"\n\n#: gb/gb_regions.py:50\nmsgid \"Wiltshire\"\nmsgstr \"Wiltshire\"\n\n#: gb/gb_regions.py:51\nmsgid \"Worcestershire\"\nmsgstr \"Worcestershire\"\n\n#: gb/gb_regions.py:55\nmsgid \"County Antrim\"\nmsgstr \"Επαρχία Antrim\"\n\n#: gb/gb_regions.py:56\nmsgid \"County Armagh\"\nmsgstr \"Επαρχία Armagh\"\n\n#: gb/gb_regions.py:57\nmsgid \"County Down\"\nmsgstr \"Επαρχία Down\"\n\n#: gb/gb_regions.py:58\nmsgid \"County Fermanagh\"\nmsgstr \"Επαρχία Fermanagh\"\n\n#: gb/gb_regions.py:59\nmsgid \"County Londonderry\"\nmsgstr \"County Londonderry\"\n\n#: gb/gb_regions.py:60\nmsgid \"County Tyrone\"\nmsgstr \"County Tyrone\"\n\n#: gb/gb_regions.py:64\nmsgid \"Clwyd\"\nmsgstr \"Clwyd\"\n\n#: gb/gb_regions.py:65\nmsgid \"Dyfed\"\nmsgstr \"Dyfed\"\n\n#: gb/gb_regions.py:66\nmsgid \"Gwent\"\nmsgstr \"Gwent\"\n\n#: gb/gb_regions.py:67\nmsgid \"Gwynedd\"\nmsgstr \"Gwynedd\"\n\n#: gb/gb_regions.py:68\nmsgid \"Mid Glamorgan\"\nmsgstr \"Κεντρικό Γκλαμόργκαν\"\n\n#: gb/gb_regions.py:69\nmsgid \"Powys\"\nmsgstr \"Powys\"\n\n#: gb/gb_regions.py:70\nmsgid \"South Glamorgan\"\nmsgstr \"Νότιο Γκλαμόργκαν\"\n\n#: gb/gb_regions.py:71\nmsgid \"West Glamorgan\"\nmsgstr \"Δυτικό Γκλαμόργκαν\"\n\n#: gb/gb_regions.py:75\nmsgid \"Borders\"\nmsgstr \"Μπόρντερς\"\n\n#: gb/gb_regions.py:76\nmsgid \"Central Scotland\"\nmsgstr \"Κεντρική Σκωτία\"\n\n#: gb/gb_regions.py:77\nmsgid \"Dumfries and Galloway\"\nmsgstr \"Ντάμφρις και Γκάλοουέι\"\n\n#: gb/gb_regions.py:78\nmsgid \"Fife\"\nmsgstr \"Φλογέρα\"\n\n#: gb/gb_regions.py:79\nmsgid \"Grampian\"\nmsgstr \"Grampian\"\n\n#: gb/gb_regions.py:80\nmsgid \"Highland\"\nmsgstr \"Χάιλαντ\"\n\n#: gb/gb_regions.py:81\nmsgid \"Lothian\"\nmsgstr \"Lothian\"\n\n#: gb/gb_regions.py:82\nmsgid \"Orkney Islands\"\nmsgstr \"Orkney Islands\"\n\n#: gb/gb_regions.py:83\nmsgid \"Shetland Islands\"\nmsgstr \"Shetland Islands\"\n\n#: gb/gb_regions.py:84\nmsgid \"Strathclyde\"\nmsgstr \"Strathclyde\"\n\n#: gb/gb_regions.py:85\nmsgid \"Tayside\"\nmsgstr \"Tayside\"\n\n#: gb/gb_regions.py:86\nmsgid \"Western Isles\"\nmsgstr \"Western Isles\"\n\n#: gb/gb_regions.py:90\nmsgid \"England\"\nmsgstr \"Αγγλία\"\n\n#: gb/gb_regions.py:91\nmsgid \"Northern Ireland\"\nmsgstr \"Βόρεια Ιρλανδία\"\n\n#: gb/gb_regions.py:92\nmsgid \"Scotland\"\nmsgstr \"Σκωτία\"\n\n#: gb/gb_regions.py:93\nmsgid \"Wales\"\nmsgstr \"Ουαλία\"\n\n#: hk/forms.py:37\n#, python-format\nmsgid \"Phone number should not start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:40\n#, python-format\nmsgid \"Phone number must be in one of the following formats: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:42\n#, python-format\nmsgid \"Phone number should start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hr/forms.py:76\nmsgid \"Enter a valid 13 digit JMBG\"\nmsgstr \"\"\n\n#: hr/forms.py:77\nmsgid \"Error in date segment\"\nmsgstr \"\"\n\n#: hr/forms.py:123\nmsgid \"Enter a valid 11 digit OIB\"\nmsgstr \"\"\n\n#: hr/forms.py:152 id/forms.py:112\nmsgid \"Enter a valid vehicle license plate number\"\nmsgstr \"Εισάγετε έναν έγυρο αριθμό πινακίδας οχήματος.\"\n\n#: hr/forms.py:153\nmsgid \"Enter a valid location code\"\nmsgstr \"\"\n\n#: hr/forms.py:154\nmsgid \"Number part cannot be zero\"\nmsgstr \"\"\n\n#: hr/forms.py:190\nmsgid \"Enter a valid 5 digit postal code\"\nmsgstr \"\"\n\n#: hr/forms.py:218 id/forms.py:72 nl/forms.py:56\nmsgid \"Enter a valid phone number\"\nmsgstr \"Εισάγετε έναν έγκυρο αριθμό τηλεφώνου\"\n\n#: hr/forms.py:219\nmsgid \"Enter a valid area or mobile network code\"\nmsgstr \"\"\n\n#: hr/forms.py:220\nmsgid \"The phone nubmer is too long\"\nmsgstr \"\"\n\n#: hr/forms.py:258\nmsgid \"Enter a valid 19 digit JMBAG starting with 601983\"\nmsgstr \"\"\n\n#: hr/forms.py:259\nmsgid \"Card issue number cannot be zero\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:14\nmsgid \"Grad Zagreb\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:15\nmsgid \"Bjelovarsko-bilogorska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:16\nmsgid \"Brodsko-posavska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:17\nmsgid \"Dubrovačko-neretvanska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:18\nmsgid \"Istarska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:19\nmsgid \"Karlovačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:20\nmsgid \"Koprivničko-križevačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:21\nmsgid \"Krapinsko-zagorska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:22\nmsgid \"Ličko-senjska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:23\nmsgid \"Međimurska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:24\nmsgid \"Osječko-baranjska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:25\nmsgid \"Požeško-slavonska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:26\nmsgid \"Primorsko-goranska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:27\nmsgid \"Sisačko-moslavačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:28\nmsgid \"Splitsko-dalmatinska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:29\nmsgid \"Šibensko-kninska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:30\nmsgid \"Varaždinska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:31\nmsgid \"Virovitičko-podravska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:32\nmsgid \"Vukovarsko-srijemska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:33\nmsgid \"Zadarska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:34\nmsgid \"Zagrebačka županija\"\nmsgstr \"\"\n\n#: id/forms.py:31\nmsgid \"Enter a valid post code\"\nmsgstr \"Εισάγετε έναν έγκυρο ταχυδρομικό κώδικα\"\n\n#: id/forms.py:176\nmsgid \"Enter a valid NIK/KTP number\"\nmsgstr \"Εισάγετε έναν έγκυρο αριθμό ΝΙΚ/KTP\"\n\n#: id/id_choices.py:15\nmsgid \"Aceh\"\nmsgstr \"Ατσέ\"\n\n#: id/id_choices.py:16 id/id_choices.py:79\nmsgid \"Bali\"\nmsgstr \"Μπαλί\"\n\n#: id/id_choices.py:17 id/id_choices.py:51\nmsgid \"Banten\"\nmsgstr \"Banten\"\n\n#: id/id_choices.py:18 id/id_choices.py:60\nmsgid \"Bengkulu\"\nmsgstr \"Μπενγκουλού\"\n\n#: id/id_choices.py:19 id/id_choices.py:53\nmsgid \"Yogyakarta\"\nmsgstr \"Yogyakarta\"\n\n#: id/id_choices.py:20 id/id_choices.py:57\nmsgid \"Jakarta\"\nmsgstr \"Τζακάρτα\"\n\n#: id/id_choices.py:21 id/id_choices.py:81\nmsgid \"Gorontalo\"\nmsgstr \"Γκοροντάλο\"\n\n#: id/id_choices.py:22 id/id_choices.py:63\nmsgid \"Jambi\"\nmsgstr \"Jambi\"\n\n#: id/id_choices.py:23\nmsgid \"Jawa Barat\"\nmsgstr \"Jawa Barat\"\n\n#: id/id_choices.py:24\nmsgid \"Jawa Tengah\"\nmsgstr \"Jawa Tengah\"\n\n#: id/id_choices.py:25\nmsgid \"Jawa Timur\"\nmsgstr \"Jawa Timur\"\n\n#: id/id_choices.py:26 id/id_choices.py:94\nmsgid \"Kalimantan Barat\"\nmsgstr \"Kalimantan Barat\"\n\n#: id/id_choices.py:27 id/id_choices.py:72\nmsgid \"Kalimantan Selatan\"\nmsgstr \"Kalimantan Selatan\"\n\n#: id/id_choices.py:28 id/id_choices.py:95\nmsgid \"Kalimantan Tengah\"\nmsgstr \"Kalimantan Tengah\"\n\n#: id/id_choices.py:29 id/id_choices.py:96\nmsgid \"Kalimantan Timur\"\nmsgstr \"Kalimantan Timur\"\n\n#: id/id_choices.py:30\nmsgid \"Kepulauan Bangka-Belitung\"\nmsgstr \"Kepulauan Bangka-Belitung\"\n\n#: id/id_choices.py:31 id/id_choices.py:68\nmsgid \"Kepulauan Riau\"\nmsgstr \"Kepulauan Riau\"\n\n#: id/id_choices.py:32 id/id_choices.py:61\nmsgid \"Lampung\"\nmsgstr \"Lampung\"\n\n#: id/id_choices.py:33 id/id_choices.py:76\nmsgid \"Maluku\"\nmsgstr \"Μαλούκου\"\n\n#: id/id_choices.py:34 id/id_choices.py:77\nmsgid \"Maluku Utara\"\nmsgstr \"Maluku Utara\"\n\n#: id/id_choices.py:35\nmsgid \"Nusa Tenggara Barat\"\nmsgstr \"Nusa Tenggara Barat\"\n\n#: id/id_choices.py:36\nmsgid \"Nusa Tenggara Timur\"\nmsgstr \"Nusa Tenggara Timur\"\n\n#: id/id_choices.py:37\nmsgid \"Papua\"\nmsgstr \"Παπούα\"\n\n#: id/id_choices.py:38\nmsgid \"Papua Barat\"\nmsgstr \"Παπούα Barat\"\n\n#: id/id_choices.py:39 id/id_choices.py:66\nmsgid \"Riau\"\nmsgstr \"Riau\"\n\n#: id/id_choices.py:40 id/id_choices.py:74\nmsgid \"Sulawesi Barat\"\nmsgstr \"Sulawesi Barat\"\n\n#: id/id_choices.py:41 id/id_choices.py:75\nmsgid \"Sulawesi Selatan\"\nmsgstr \"Sulawesi Selatan\"\n\n#: id/id_choices.py:42 id/id_choices.py:82\nmsgid \"Sulawesi Tengah\"\nmsgstr \"Sulawesi Tengah\"\n\n#: id/id_choices.py:43 id/id_choices.py:85\nmsgid \"Sulawesi Tenggara\"\nmsgstr \"Sulawesi Tenggara\"\n\n#: id/id_choices.py:44\nmsgid \"Sulawesi Utara\"\nmsgstr \"Sulawesi Utara\"\n\n#: id/id_choices.py:45 id/id_choices.py:58\nmsgid \"Sumatera Barat\"\nmsgstr \"Sumatera Barat\"\n\n#: id/id_choices.py:46 id/id_choices.py:62\nmsgid \"Sumatera Selatan\"\nmsgstr \"Sumatera Selatan\"\n\n#: id/id_choices.py:47 id/id_choices.py:64\nmsgid \"Sumatera Utara\"\nmsgstr \"Sumatera Utara\"\n\n#: id/id_choices.py:52\nmsgid \"Magelang\"\nmsgstr \"Magelang\"\n\n#: id/id_choices.py:54\nmsgid \"Surakarta - Solo\"\nmsgstr \"Surakarta - Solo\"\n\n#: id/id_choices.py:55\nmsgid \"Madiun\"\nmsgstr \"Madiun\"\n\n#: id/id_choices.py:56\nmsgid \"Kediri\"\nmsgstr \"Kediri\"\n\n#: id/id_choices.py:59\nmsgid \"Tapanuli\"\nmsgstr \"Tapanuli\"\n\n#: id/id_choices.py:65\nmsgid \"Nanggroe Aceh Darussalam\"\nmsgstr \"Nanggroe Aceh Darussalam\"\n\n#: id/id_choices.py:67\nmsgid \"Kepulauan Bangka Belitung\"\nmsgstr \"Kepulauan Bangka Belitung\"\n\n#: id/id_choices.py:69\nmsgid \"Corps Consulate\"\nmsgstr \"Σώμα Προξενείων\"\n\n#: id/id_choices.py:70\nmsgid \"Corps Diplomatic\"\nmsgstr \"Διπλωματικό Σώμα\"\n\n#: id/id_choices.py:71\nmsgid \"Bandung\"\nmsgstr \"Bandung\"\n\n#: id/id_choices.py:73\nmsgid \"Sulawesi Utara Daratan\"\nmsgstr \"Sulawesi Daratan Utara\"\n\n#: id/id_choices.py:78\nmsgid \"NTT - Timor\"\nmsgstr \"NTT - Timor\"\n\n#: id/id_choices.py:80\nmsgid \"Sulawesi Utara Kepulauan\"\nmsgstr \"Sulawesi Kepulauan Utara\"\n\n#: id/id_choices.py:83\nmsgid \"NTB - Lombok\"\nmsgstr \"NTB - Lombok\"\n\n#: id/id_choices.py:84\nmsgid \"Papua dan Papua Barat\"\nmsgstr \"Papua dan Papua Barat\"\n\n#: id/id_choices.py:86\nmsgid \"Cirebon\"\nmsgstr \"Cirebon\"\n\n#: id/id_choices.py:87\nmsgid \"NTB - Sumbawa\"\nmsgstr \"NTB - Sumbawa\"\n\n#: id/id_choices.py:88\nmsgid \"NTT - Flores\"\nmsgstr \"NTT - Flores\"\n\n#: id/id_choices.py:89\nmsgid \"NTT - Sumba\"\nmsgstr \"NTT - Sumba\"\n\n#: id/id_choices.py:90\nmsgid \"Bogor\"\nmsgstr \"Bogor\"\n\n#: id/id_choices.py:91\nmsgid \"Pekalongan\"\nmsgstr \"Pekalongan\"\n\n#: id/id_choices.py:92\nmsgid \"Semarang\"\nmsgstr \"Semarang\"\n\n#: id/id_choices.py:93\nmsgid \"Pati\"\nmsgstr \"Pati\"\n\n#: id/id_choices.py:97\nmsgid \"Surabaya\"\nmsgstr \"Σουραμπάγια\"\n\n#: id/id_choices.py:98\nmsgid \"Madura\"\nmsgstr \"Madura\"\n\n#: id/id_choices.py:99\nmsgid \"Malang\"\nmsgstr \"Malang\"\n\n#: id/id_choices.py:100\nmsgid \"Jember\"\nmsgstr \"Jember\"\n\n#: id/id_choices.py:101\nmsgid \"Banyumas\"\nmsgstr \"Banyumas\"\n\n#: id/id_choices.py:102\nmsgid \"Federal Government\"\nmsgstr \"Ομοσπονδιακή κυβέρνηση\"\n\n#: id/id_choices.py:103\nmsgid \"Bojonegoro\"\nmsgstr \"Bojonegoro\"\n\n#: id/id_choices.py:104\nmsgid \"Purwakarta\"\nmsgstr \"Purwakarta\"\n\n#: id/id_choices.py:105\nmsgid \"Sidoarjo\"\nmsgstr \"Sidoarjo\"\n\n#: id/id_choices.py:106\nmsgid \"Garut\"\nmsgstr \"Garut\"\n\n#: ie/ie_counties.py:8\nmsgid \"Antrim\"\nmsgstr \"Antrim\"\n\n#: ie/ie_counties.py:9\nmsgid \"Armagh\"\nmsgstr \"Armagh\"\n\n#: ie/ie_counties.py:10\nmsgid \"Carlow\"\nmsgstr \"Carlow\"\n\n#: ie/ie_counties.py:11\nmsgid \"Cavan\"\nmsgstr \"Cavan\"\n\n#: ie/ie_counties.py:12\nmsgid \"Clare\"\nmsgstr \"Clare\"\n\n#: ie/ie_counties.py:13\nmsgid \"Cork\"\nmsgstr \"Cork\"\n\n#: ie/ie_counties.py:14\nmsgid \"Derry\"\nmsgstr \"Derry\"\n\n#: ie/ie_counties.py:15\nmsgid \"Donegal\"\nmsgstr \"Donegal\"\n\n#: ie/ie_counties.py:16\nmsgid \"Down\"\nmsgstr \"Down\"\n\n#: ie/ie_counties.py:17\nmsgid \"Dublin\"\nmsgstr \"Δουβλίνο\"\n\n#: ie/ie_counties.py:18\nmsgid \"Fermanagh\"\nmsgstr \"Fermanagh\"\n\n#: ie/ie_counties.py:19\nmsgid \"Galway\"\nmsgstr \"Galway\"\n\n#: ie/ie_counties.py:20\nmsgid \"Kerry\"\nmsgstr \"Kerry\"\n\n#: ie/ie_counties.py:21\nmsgid \"Kildare\"\nmsgstr \"Kildare\"\n\n#: ie/ie_counties.py:22\nmsgid \"Kilkenny\"\nmsgstr \"Kilkenny\"\n\n#: ie/ie_counties.py:23\nmsgid \"Laois\"\nmsgstr \"Laois\"\n\n#: ie/ie_counties.py:24\nmsgid \"Leitrim\"\nmsgstr \"Leitrim\"\n\n#: ie/ie_counties.py:25\nmsgid \"Limerick\"\nmsgstr \"Limerick\"\n\n#: ie/ie_counties.py:26\nmsgid \"Longford\"\nmsgstr \"Λόνγκφορντ\"\n\n#: ie/ie_counties.py:27\nmsgid \"Louth\"\nmsgstr \"Louth\"\n\n#: ie/ie_counties.py:28\nmsgid \"Mayo\"\nmsgstr \"Mayo\"\n\n#: ie/ie_counties.py:29\nmsgid \"Meath\"\nmsgstr \"Meath\"\n\n#: ie/ie_counties.py:30\nmsgid \"Monaghan\"\nmsgstr \"Monaghan\"\n\n#: ie/ie_counties.py:31\nmsgid \"Offaly\"\nmsgstr \"Offaly\"\n\n#: ie/ie_counties.py:32\nmsgid \"Roscommon\"\nmsgstr \"Roscommon\"\n\n#: ie/ie_counties.py:33\nmsgid \"Sligo\"\nmsgstr \"Sligo\"\n\n#: ie/ie_counties.py:34\nmsgid \"Tipperary\"\nmsgstr \"Tipperary\"\n\n#: ie/ie_counties.py:35\nmsgid \"Tyrone\"\nmsgstr \"Tyrone\"\n\n#: ie/ie_counties.py:36\nmsgid \"Waterford\"\nmsgstr \"Waterford\"\n\n#: ie/ie_counties.py:37\nmsgid \"Westmeath\"\nmsgstr \"Westmeath\"\n\n#: ie/ie_counties.py:38\nmsgid \"Wexford\"\nmsgstr \"Wexford\"\n\n#: ie/ie_counties.py:39\nmsgid \"Wicklow\"\nmsgstr \"Wicklow\"\n\n#: il/forms.py:32\nmsgid \"Enter a postal code in the format XXXXX\"\nmsgstr \"Εισαγάγετε έναν ταχυδρομικό κώδικα σε μορφή XXXXX\"\n\n#: il/forms.py:51\nmsgid \"Enter a valid ID number.\"\nmsgstr \"Πληκτρολογήστε έναν έγκυρο αριθμό ταυτότητας.\"\n\n#: in_/forms.py:41\nmsgid \"Enter a zip code in the format XXXXXX or XXX XXX.\"\nmsgstr \"\"\n\n#: in_/forms.py:64\nmsgid \"Enter an Indian state or territory.\"\nmsgstr \"\"\n\n#: in_/forms.py:103\nmsgid \"Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.\"\nmsgstr \"\"\n\n#: is_/forms.py:22\nmsgid \"\"\n\"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.\"\nmsgstr \"\"\n\"Εισάγετε έναν έγκυρο αριθμό ισλανδικής ταυτότητας. Η μορφή είναι XXXXXX-ΧΧΧΧ.\"\n\n#: is_/forms.py:23\nmsgid \"The Icelandic identification number is not valid.\"\nmsgstr \"Μη έγκυρος αριθμός ισλανδικής ταυτότητας. \"\n\n#: it/forms.py:21\nmsgid \"Enter a valid zip code.\"\nmsgstr \"Εισάγετε έναν έγκυρο ταχυδρομικό κώδικα.\"\n\n#: it/forms.py:48\nmsgid \"Enter a valid Social Security number.\"\nmsgstr \"Πληκτρολογήστε έναν έγκυρο αριθμό Κοινωνικής Ασφάλισης.\"\n\n#: it/forms.py:73\nmsgid \"Enter a valid VAT number.\"\nmsgstr \"Πληκτρολογήστε έναν έγκυρο αριθμό ΦΠΑ.\"\n\n#: jp/forms.py:19\nmsgid \"Enter a postal code in the format XXXXXXX or XXX-XXXX.\"\nmsgstr \"Εισαγάγετε έναν ταχυδρομικό κώδικα σε μορφή XXXXXXX ή XXX-XXXX.\"\n\n#: jp/jp_prefectures.py:4\nmsgid \"Hokkaido\"\nmsgstr \"Hokkaido\"\n\n#: jp/jp_prefectures.py:5\nmsgid \"Aomori\"\nmsgstr \"Αομόρι\"\n\n#: jp/jp_prefectures.py:6\nmsgid \"Iwate\"\nmsgstr \"Iwate\"\n\n#: jp/jp_prefectures.py:7\nmsgid \"Miyagi\"\nmsgstr \"Miyagi\"\n\n#: jp/jp_prefectures.py:8\nmsgid \"Akita\"\nmsgstr \"Ακίτα\"\n\n#: jp/jp_prefectures.py:9\nmsgid \"Yamagata\"\nmsgstr \"Γιαμαγκάτα\"\n\n#: jp/jp_prefectures.py:10\nmsgid \"Fukushima\"\nmsgstr \"Φουκουσίμα\"\n\n#: jp/jp_prefectures.py:11\nmsgid \"Ibaraki\"\nmsgstr \"Ibaraki\"\n\n#: jp/jp_prefectures.py:12\nmsgid \"Tochigi\"\nmsgstr \"Tochigi\"\n\n#: jp/jp_prefectures.py:13\nmsgid \"Gunma\"\nmsgstr \"Gunma\"\n\n#: jp/jp_prefectures.py:14\nmsgid \"Saitama\"\nmsgstr \"Σαϊτάμα\"\n\n#: jp/jp_prefectures.py:15\nmsgid \"Chiba\"\nmsgstr \"Τσίμπα\"\n\n#: jp/jp_prefectures.py:16\nmsgid \"Tokyo\"\nmsgstr \"Τόκιο\"\n\n#: jp/jp_prefectures.py:17\nmsgid \"Kanagawa\"\nmsgstr \"Kanagawa\"\n\n#: jp/jp_prefectures.py:18\nmsgid \"Yamanashi\"\nmsgstr \"Γιαμανάσι\"\n\n#: jp/jp_prefectures.py:19\nmsgid \"Nagano\"\nmsgstr \"Ναγκάνο\"\n\n#: jp/jp_prefectures.py:20\nmsgid \"Niigata\"\nmsgstr \"Νιιγκάτα\"\n\n#: jp/jp_prefectures.py:21\nmsgid \"Toyama\"\nmsgstr \"Τογιάμα\"\n\n#: jp/jp_prefectures.py:22\nmsgid \"Ishikawa\"\nmsgstr \"Ισικάουα\"\n\n#: jp/jp_prefectures.py:23\nmsgid \"Fukui\"\nmsgstr \"Φουκούι\"\n\n#: jp/jp_prefectures.py:24\nmsgid \"Gifu\"\nmsgstr \"Gifu\"\n\n#: jp/jp_prefectures.py:25\nmsgid \"Shizuoka\"\nmsgstr \"Σιζουόκα\"\n\n#: jp/jp_prefectures.py:26\nmsgid \"Aichi\"\nmsgstr \"Aichi\"\n\n#: jp/jp_prefectures.py:27\nmsgid \"Mie\"\nmsgstr \"Mie\"\n\n#: jp/jp_prefectures.py:28\nmsgid \"Shiga\"\nmsgstr \"Shiga\"\n\n#: jp/jp_prefectures.py:29\nmsgid \"Kyoto\"\nmsgstr \"Κιότο\"\n\n#: jp/jp_prefectures.py:30\nmsgid \"Osaka\"\nmsgstr \"Οσάκα\"\n\n#: jp/jp_prefectures.py:31\nmsgid \"Hyogo\"\nmsgstr \"Hyogo\"\n\n#: jp/jp_prefectures.py:32\nmsgid \"Nara\"\nmsgstr \"Nara\"\n\n#: jp/jp_prefectures.py:33\nmsgid \"Wakayama\"\nmsgstr \"Wakayama\"\n\n#: jp/jp_prefectures.py:34\nmsgid \"Tottori\"\nmsgstr \"Tottori\"\n\n#: jp/jp_prefectures.py:35\nmsgid \"Shimane\"\nmsgstr \"Shimane\"\n\n#: jp/jp_prefectures.py:36\nmsgid \"Okayama\"\nmsgstr \"Okayama\"\n\n#: jp/jp_prefectures.py:37\nmsgid \"Hiroshima\"\nmsgstr \"Χιροσίμα\"\n\n#: jp/jp_prefectures.py:38\nmsgid \"Yamaguchi\"\nmsgstr \"Γιαμαγκούτσι\"\n\n#: jp/jp_prefectures.py:39\nmsgid \"Tokushima\"\nmsgstr \"Tokushima\"\n\n#: jp/jp_prefectures.py:40\nmsgid \"Kagawa\"\nmsgstr \"Kagawa\"\n\n#: jp/jp_prefectures.py:41\nmsgid \"Ehime\"\nmsgstr \"Ehime\"\n\n#: jp/jp_prefectures.py:42\nmsgid \"Kochi\"\nmsgstr \"Κότσι\"\n\n#: jp/jp_prefectures.py:43\nmsgid \"Fukuoka\"\nmsgstr \"Φουκουόκα\"\n\n#: jp/jp_prefectures.py:44\nmsgid \"Saga\"\nmsgstr \"Saga\"\n\n#: jp/jp_prefectures.py:45\nmsgid \"Nagasaki\"\nmsgstr \"Ναγκασάκι\"\n\n#: jp/jp_prefectures.py:46\nmsgid \"Kumamoto\"\nmsgstr \"Κουμαμότο\"\n\n#: jp/jp_prefectures.py:47\nmsgid \"Oita\"\nmsgstr \"Οϊτά\"\n\n#: jp/jp_prefectures.py:48\nmsgid \"Miyazaki\"\nmsgstr \"Μιγιαζάκι\"\n\n#: jp/jp_prefectures.py:49\nmsgid \"Kagoshima\"\nmsgstr \"Καγκοσίμα\"\n\n#: jp/jp_prefectures.py:50\nmsgid \"Okinawa\"\nmsgstr \"Οκινάουα\"\n\n#: kw/forms.py:27\nmsgid \"Enter a valid Kuwaiti Civil ID number\"\nmsgstr \"Εισάγετε έναν έγκυρο αριθμό ταυτότητας Κουβέιτ.\"\n\n#: mk/forms.py:18\nmsgid \"\"\n\"Identity card numbers must contain either 4 to 7 digits or an uppercase \"\n\"letter and 7 digits.\"\nmsgstr \"\"\n\n#: mk/forms.py:57 si/forms.py:24\nmsgid \"This field should contain exactly 13 digits.\"\nmsgstr \"\"\n\n#: mk/forms.py:58\nmsgid \"The first 7 digits of the UMCN must represent a valid past date.\"\nmsgstr \"\"\n\n#: mk/forms.py:59\nmsgid \"The UMCN is not valid.\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:10\nmsgid \"Aerodrom\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:11\nmsgid \"Aračinovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:12\nmsgid \"Berovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:13\nmsgid \"Bitola\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:14\nmsgid \"Bogdanci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:15\nmsgid \"Bogovinje\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:16\nmsgid \"Bosilovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:17\nmsgid \"Brvenica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:18\nmsgid \"Butel\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:19\nmsgid \"Valandovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:20\nmsgid \"Vasilevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:21\nmsgid \"Vevčani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:22\nmsgid \"Veles\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:23\nmsgid \"Vinica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:24\nmsgid \"Vraneštica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:25\nmsgid \"Vrapčište\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:26\nmsgid \"Gazi Baba\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:27\nmsgid \"Gevgelija\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:28\nmsgid \"Gostivar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:29\nmsgid \"Gradsko\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:30\nmsgid \"Debar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:31\nmsgid \"Debarca\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:32\nmsgid \"Delčevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:33\nmsgid \"Demir Kapija\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:34\nmsgid \"Demir Hisar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:35\nmsgid \"Dolneni\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:36\nmsgid \"Drugovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:37\nmsgid \"Gjorče Petrov\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:38\nmsgid \"Želino\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:39\nmsgid \"Zajas\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:40\nmsgid \"Zelenikovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:41\nmsgid \"Zrnovci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:42\nmsgid \"Ilinden\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:43\nmsgid \"Jegunovce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:44\nmsgid \"Kavadarci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:45\nmsgid \"Karbinci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:46\nmsgid \"Karpoš\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:47\nmsgid \"Kisela Voda\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:48\nmsgid \"Kičevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:49\nmsgid \"Konče\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:50\nmsgid \"Koćani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:51\nmsgid \"Kratovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:52\nmsgid \"Kriva Palanka\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:53\nmsgid \"Krivogaštani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:54\nmsgid \"Kruševo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:55\nmsgid \"Kumanovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:56\nmsgid \"Lipkovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:57\nmsgid \"Lozovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:58\nmsgid \"Mavrovo i Rostuša\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:59\nmsgid \"Makedonska Kamenica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:60\nmsgid \"Makedonski Brod\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:61\nmsgid \"Mogila\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:62\nmsgid \"Negotino\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:63\nmsgid \"Novaci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:64\nmsgid \"Novo Selo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:65\nmsgid \"Oslomej\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:66\nmsgid \"Ohrid\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:67\nmsgid \"Petrovec\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:68\nmsgid \"Pehčevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:69\nmsgid \"Plasnica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:70\nmsgid \"Prilep\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:71\nmsgid \"Probištip\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:72\nmsgid \"Radoviš\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:73\nmsgid \"Rankovce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:74\nmsgid \"Resen\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:75\nmsgid \"Rosoman\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:76\nmsgid \"Saraj\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:77\nmsgid \"Sveti Nikole\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:78\nmsgid \"Sopište\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:79\nmsgid \"Star Dojran\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:80\nmsgid \"Staro Nagoričane\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:81\nmsgid \"Struga\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:82\nmsgid \"Strumica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:83\nmsgid \"Studeničani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:84\nmsgid \"Tearce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:85\nmsgid \"Tetovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:86\nmsgid \"Centar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:87\nmsgid \"Centar-Župa\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:88\nmsgid \"Čair\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:89\nmsgid \"Čaška\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:90\nmsgid \"Češinovo-Obleševo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:91\nmsgid \"Čučer-Sandevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:92\nmsgid \"Štip\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:93\nmsgid \"Šuto Orizari\"\nmsgstr \"\"\n\n#: mk/models.py:11\nmsgid \"Macedonian identity card number\"\nmsgstr \"\"\n\n#: mk/models.py:25\nmsgid \"A Macedonian municipality (2 character code)\"\nmsgstr \"\"\n\n#: mk/models.py:35\nmsgid \"Unique master citizen number (13 digits)\"\nmsgstr \"\"\n\n#: mx/forms.py:67\nmsgid \"Enter a valid zip code in the format XXXXX.\"\nmsgstr \"\"\n\n#: mx/forms.py:110\nmsgid \"Enter a valid RFC.\"\nmsgstr \"\"\n\n#: mx/forms.py:111\nmsgid \"Invalid checksum for RFC.\"\nmsgstr \"\"\n\n#: mx/forms.py:191\nmsgid \"Enter a valid CURP.\"\nmsgstr \"\"\n\n#: mx/forms.py:192\nmsgid \"Invalid checksum for CURP.\"\nmsgstr \"\"\n\n#: mx/models.py:14\nmsgid \"Mexico state (three uppercase letters)\"\nmsgstr \"\"\n\n#: mx/models.py:27\nmsgid \"Mexico zip code\"\nmsgstr \"\"\n\n#: mx/models.py:44\nmsgid \"Mexican RFC\"\nmsgstr \"\"\n\n#: mx/models.py:61\nmsgid \"Mexican CURP\"\nmsgstr \"\"\n\n#: mx/mx_states.py:14\nmsgid \"Aguascalientes\"\nmsgstr \"Aguascalientes\"\n\n#: mx/mx_states.py:15\nmsgid \"Baja California\"\nmsgstr \"Baja California\"\n\n#: mx/mx_states.py:16\nmsgid \"Baja California Sur\"\nmsgstr \"Baja California Sur\"\n\n#: mx/mx_states.py:17\nmsgid \"Campeche\"\nmsgstr \"Campeche\"\n\n#: mx/mx_states.py:18\nmsgid \"Chihuahua\"\nmsgstr \"Τσιουάουα\"\n\n#: mx/mx_states.py:19\nmsgid \"Chiapas\"\nmsgstr \"Chiapas\"\n\n#: mx/mx_states.py:20\nmsgid \"Coahuila\"\nmsgstr \"Coahuila\"\n\n#: mx/mx_states.py:21\nmsgid \"Colima\"\nmsgstr \"Colima\"\n\n#: mx/mx_states.py:22\nmsgid \"Distrito Federal\"\nmsgstr \"Distrito Federal\"\n\n#: mx/mx_states.py:23\nmsgid \"Durango\"\nmsgstr \"Durango\"\n\n#: mx/mx_states.py:24\nmsgid \"Guerrero\"\nmsgstr \"Guerrero\"\n\n#: mx/mx_states.py:25\nmsgid \"Guanajuato\"\nmsgstr \"Guanajuato\"\n\n#: mx/mx_states.py:26\nmsgid \"Hidalgo\"\nmsgstr \"Hidalgo\"\n\n#: mx/mx_states.py:27\nmsgid \"Jalisco\"\nmsgstr \"Jalisco\"\n\n#: mx/mx_states.py:28\nmsgid \"Estado de México\"\nmsgstr \"Estado de México\"\n\n#: mx/mx_states.py:29\nmsgid \"Michoacán\"\nmsgstr \"Michoacán\"\n\n#: mx/mx_states.py:30\nmsgid \"Morelos\"\nmsgstr \"Morelos\"\n\n#: mx/mx_states.py:31\nmsgid \"Nayarit\"\nmsgstr \"Nayarit\"\n\n#: mx/mx_states.py:32\nmsgid \"Nuevo León\"\nmsgstr \"Nuevo León\"\n\n#: mx/mx_states.py:33\nmsgid \"Oaxaca\"\nmsgstr \"Oaxaca\"\n\n#: mx/mx_states.py:34\nmsgid \"Puebla\"\nmsgstr \"Puebla\"\n\n#: mx/mx_states.py:35\nmsgid \"Querétaro\"\nmsgstr \"Querétaro\"\n\n#: mx/mx_states.py:36\nmsgid \"Quintana Roo\"\nmsgstr \"Quintana Roo\"\n\n#: mx/mx_states.py:37\nmsgid \"Sinaloa\"\nmsgstr \"Sinaloa\"\n\n#: mx/mx_states.py:38\nmsgid \"San Luis Potosí\"\nmsgstr \"San Luis Potosí\"\n\n#: mx/mx_states.py:39\nmsgid \"Sonora\"\nmsgstr \"Sonora\"\n\n#: mx/mx_states.py:40\nmsgid \"Tabasco\"\nmsgstr \"Tabasco\"\n\n#: mx/mx_states.py:41\nmsgid \"Tamaulipas\"\nmsgstr \"Tamaulipas\"\n\n#: mx/mx_states.py:42\nmsgid \"Tlaxcala\"\nmsgstr \"Tlaxcala\"\n\n#: mx/mx_states.py:43\nmsgid \"Veracruz\"\nmsgstr \"Veracruz\"\n\n#: mx/mx_states.py:44\nmsgid \"Yucatán\"\nmsgstr \"Yucatán\"\n\n#: mx/mx_states.py:45\nmsgid \"Zacatecas\"\nmsgstr \"Zacatecas\"\n\n#: nl/forms.py:26\nmsgid \"Enter a valid postal code\"\nmsgstr \"Εισάγετε έναν έγκυρο ταχυδρομικό κώδικα\"\n\n#: nl/forms.py:82\nmsgid \"Enter a valid SoFi number\"\nmsgstr \"Πληκτρολογήστε έναν έγκυρο αριθμό SoFi\"\n\n#: nl/nl_provinces.py:4\nmsgid \"Drenthe\"\nmsgstr \"Ντρέντε\"\n\n#: nl/nl_provinces.py:5\nmsgid \"Flevoland\"\nmsgstr \"Flevoland\"\n\n#: nl/nl_provinces.py:6\nmsgid \"Friesland\"\nmsgstr \"Friesland\"\n\n#: nl/nl_provinces.py:7\nmsgid \"Gelderland\"\nmsgstr \"Gelderland\"\n\n#: nl/nl_provinces.py:8\nmsgid \"Groningen\"\nmsgstr \"Γκρόνινγκεν\"\n\n#: nl/nl_provinces.py:10\nmsgid \"Noord-Brabant\"\nmsgstr \"Noord-Brabant\"\n\n#: nl/nl_provinces.py:11\nmsgid \"Noord-Holland\"\nmsgstr \"Noord-Holland\"\n\n#: nl/nl_provinces.py:12\nmsgid \"Overijssel\"\nmsgstr \"Overijssel\"\n\n#: nl/nl_provinces.py:13\nmsgid \"Utrecht\"\nmsgstr \"Ουτρέχτη\"\n\n#: nl/nl_provinces.py:14\nmsgid \"Zeeland\"\nmsgstr \"Zeeland\"\n\n#: nl/nl_provinces.py:15\nmsgid \"Zuid-Holland\"\nmsgstr \"Zuid-Holland\"\n\n#: no/forms.py:39\nmsgid \"Enter a valid Norwegian social security number.\"\nmsgstr \"Εισάγετε έναν έγκυρο νορβηγικό αριθμό μητρώου κοινωνικής ασφάλισης.\"\n\n#: pe/forms.py:28\nmsgid \"This field requires 8 digits.\"\nmsgstr \"Αυτό το πεδίο απαιτεί 8 ψηφία.\"\n\n#: pe/forms.py:56\nmsgid \"This field requires 11 digits.\"\nmsgstr \"Αυτό το πεδίο απαιτεί 11 ψηφία.\"\n\n#: pl/forms.py:42\nmsgid \"National Identification Number consists of 11 digits.\"\nmsgstr \"Ο Αριθμός Ταυτότητας αποτελείται από 11 ψηφία.\"\n\n#: pl/forms.py:43\nmsgid \"Wrong checksum for the National Identification Number.\"\nmsgstr \"Ο Αριθμός Ταυτότητας δεν επαληθεύεται\"\n\n#: pl/forms.py:79\nmsgid \"National ID Card Number consists of 3 letters and 6 digits.\"\nmsgstr \"\"\n\n#: pl/forms.py:80\nmsgid \"Wrong checksum for the National ID Card Number.\"\nmsgstr \"\"\n\n#: pl/forms.py:131\nmsgid \"\"\n\"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or \"\n\"XXXXXXXXXX.\"\nmsgstr \"\"\n\n#: pl/forms.py:132\nmsgid \"Wrong checksum for the Tax Number (NIP).\"\nmsgstr \"Ο αριθμό φορολογικού μητρώου (ΑΦΜ) δεν επαληθεύεται.\"\n\n#: pl/forms.py:171\nmsgid \"National Business Register Number (REGON) consists of 9 or 14 digits.\"\nmsgstr \"\"\n\"Ο Αριθμός Εθνικού Μητρώου Επιχειρήσεων (REGON) αποτελείται από 9 ή 14 ψηφία.\"\n\n#: pl/forms.py:172\nmsgid \"Wrong checksum for the National Business Register Number (REGON).\"\nmsgstr \"Ο Αριθμός Εθνικού Μητρώου Επιχειρήσεων (REGON) δεν επαληθεύεται.\"\n\n#: pl/forms.py:212\nmsgid \"Enter a postal code in the format XX-XXX.\"\nmsgstr \"Εισαγάγετε έναν ταχυδρομικό κώδικα με τη μορφή XX-XXX.\"\n\n#: pl/pl_voivodeships.py:8\nmsgid \"Lower Silesia\"\nmsgstr \"Κάτω Σιλεσία\"\n\n#: pl/pl_voivodeships.py:9\nmsgid \"Kuyavia-Pomerania\"\nmsgstr \"Kuyavia-Πομερανίας\"\n\n#: pl/pl_voivodeships.py:10\nmsgid \"Lublin\"\nmsgstr \"Lublin\"\n\n#: pl/pl_voivodeships.py:11\nmsgid \"Lubusz\"\nmsgstr \"Lubusz\"\n\n#: pl/pl_voivodeships.py:12\nmsgid \"Lodz\"\nmsgstr \"Lodz\"\n\n#: pl/pl_voivodeships.py:13\nmsgid \"Lesser Poland\"\nmsgstr \"Lesser Poland\"\n\n#: pl/pl_voivodeships.py:14\nmsgid \"Masovia\"\nmsgstr \"Masovia\"\n\n#: pl/pl_voivodeships.py:15\nmsgid \"Opole\"\nmsgstr \"Opole\"\n\n#: pl/pl_voivodeships.py:16\nmsgid \"Subcarpatia\"\nmsgstr \"Subcarpatia\"\n\n#: pl/pl_voivodeships.py:17\nmsgid \"Podlasie\"\nmsgstr \"Podlasie\"\n\n#: pl/pl_voivodeships.py:18\nmsgid \"Pomerania\"\nmsgstr \"Πομερανία\"\n\n#: pl/pl_voivodeships.py:19\nmsgid \"Silesia\"\nmsgstr \"Silesia\"\n\n#: pl/pl_voivodeships.py:20\nmsgid \"Swietokrzyskie\"\nmsgstr \"Swietokrzyskie\"\n\n#: pl/pl_voivodeships.py:21\nmsgid \"Warmia-Masuria\"\nmsgstr \"Warmia-Masuria\"\n\n#: pl/pl_voivodeships.py:22\nmsgid \"Greater Poland\"\nmsgstr \"Greater Poland\"\n\n#: pl/pl_voivodeships.py:23\nmsgid \"West Pomerania\"\nmsgstr \"Δυτική Πομερανία\"\n\n#: pt/forms.py:19\nmsgid \"Enter a zip code in the format XXXX-XXX.\"\nmsgstr \"Πληκτρολογήστε έναν ταχυδρομικό κώδικα σε μορφή ΧΧΧΧ-ΧΧΧ.\"\n\n#: pt/forms.py:39\nmsgid \"Phone numbers must have 9 digits, or start by + or 00.\"\nmsgstr \"Οι αριθμοί τηλεφώνου πρέπει να έχουν 9 ψηφία, ή να αρχίζουν με + ή 00.\"\n\n#: ro/forms.py:22\nmsgid \"Enter a valid CIF.\"\nmsgstr \"Εισάγετε έναν έγκυρο αριθμό CIF.\"\n\n#: ro/forms.py:59\nmsgid \"Enter a valid CNP.\"\nmsgstr \"Εισάγετε έναν έγκυρο αριθμό CNP.\"\n\n#: ro/forms.py:143\nmsgid \"Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format\"\nmsgstr \"\"\n\"Εισάγετε έναν έγκυρο αριθμό IBAN με μορφή ROXX-XXXX-XXXX-XXXX-XXXX-XXXX\"\n\n#: ro/forms.py:175\nmsgid \"Phone numbers must be in XXXX-XXXXXX format.\"\nmsgstr \"Οι αριθμοί τηλεφώνου πρέπει να έχουν μορφή XXXX-XXXXXX.\"\n\n#: ro/forms.py:200\nmsgid \"Enter a valid postal code in the format XXXXXX\"\nmsgstr \"Εισάγετε έναν έγκυρο ταχυδρομικό κώδικα με τη μορφή XXXXXX\"\n\n#: ru/forms.py:37\nmsgid \"Enter a postal code in the format XXXXXX.\"\nmsgstr \"\"\n\n#: ru/forms.py:50\nmsgid \"Enter a passport number in the format XXXX XXXXXX.\"\nmsgstr \"\"\n\n#: ru/forms.py:63\nmsgid \"Enter a passport number in the format XX XXXXXXX.\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:10\nmsgid \"Central Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:11\nmsgid \"South Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:12\nmsgid \"North-West Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:13\nmsgid \"Far-East Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:14\nmsgid \"Siberian Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:15\nmsgid \"Ural Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:16\nmsgid \"Privolzhsky Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:17\nmsgid \"North-Caucasian Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:21\nmsgid \"Moskva\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:22\nmsgid \"Saint-Peterburg\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:23\nmsgid \"Moskovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:24\nmsgid \"Adygeya, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:25\nmsgid \"Bashkortostan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:26\nmsgid \"Buryatia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:27\nmsgid \"Altay, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:28\nmsgid \"Dagestan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:29\nmsgid \"Ingushskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:30\nmsgid \"Kabardino-Balkarskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:31\nmsgid \"Kalmykia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:32\nmsgid \"Karachaevo-Cherkesskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:33\nmsgid \"Karelia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:34\nmsgid \"Komi, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:35\nmsgid \"Mariy Ehl, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:36\nmsgid \"Mordovia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:37\nmsgid \"Sakha, Respublika (Yakutiya)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:38\nmsgid \"Severnaya Osetia, Respublika (Alania)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:39\nmsgid \"Tatarstan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:40\nmsgid \"Tyva, Respublika (Tuva)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:41\nmsgid \"Udmurtskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:42\nmsgid \"Khakassiya, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:43\nmsgid \"Chechenskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:44\nmsgid \"Chuvashskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:45\nmsgid \"Altayskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:46\nmsgid \"Zabaykalskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:47\nmsgid \"Kamchatskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:48\nmsgid \"Krasnodarskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:49\nmsgid \"Krasnoyarskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:50\nmsgid \"Permskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:51\nmsgid \"Primorskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:52\nmsgid \"Stavropol'siyy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:53\nmsgid \"Khabarovskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:54\nmsgid \"Amurskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:55\nmsgid \"Arkhangel'skaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:56\nmsgid \"Astrakhanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:57\nmsgid \"Belgorodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:58\nmsgid \"Bryanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:59\nmsgid \"Vladimirskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:60\nmsgid \"Volgogradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:61\nmsgid \"Vologodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:62\nmsgid \"Voronezhskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:63\nmsgid \"Ivanovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:64\nmsgid \"Irkutskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:65\nmsgid \"Kaliningradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:66\nmsgid \"Kaluzhskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:67\nmsgid \"Kemerovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:68\nmsgid \"Kirovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:69\nmsgid \"Kostromskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:70\nmsgid \"Kurganskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:71\nmsgid \"Kurskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:72\nmsgid \"Leningradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:73\nmsgid \"Lipeckaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:74\nmsgid \"Magadanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:75\nmsgid \"Murmanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:76\nmsgid \"Nizhegorodskaja oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:77\nmsgid \"Novgorodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:78\nmsgid \"Novosibirskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:79\nmsgid \"Omskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:80\nmsgid \"Orenburgskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:81\nmsgid \"Orlovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:82\nmsgid \"Penzenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:83\nmsgid \"Pskovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:84\nmsgid \"Rostovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:85\nmsgid \"Rjazanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:86\nmsgid \"Samarskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:87\nmsgid \"Saratovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:88\nmsgid \"Sakhalinskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:89\nmsgid \"Sverdlovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:90\nmsgid \"Smolenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:91\nmsgid \"Tambovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:92\nmsgid \"Tverskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:93\nmsgid \"Tomskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:94\nmsgid \"Tul'skaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:95\nmsgid \"Tyumenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:96\nmsgid \"Ul'ianovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:97\nmsgid \"Chelyabinskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:98\nmsgid \"Yaroslavskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:99\nmsgid \"Evreyskaya avtonomnaja oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:100\nmsgid \"Neneckiy autonomnyy okrug\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:101\nmsgid \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:102\nmsgid \"Chukotskiy avtonomnyy okrug\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:103\nmsgid \"Yamalo-Neneckiy avtonomnyy okrug\"\nmsgstr \"\"\n\n#: se/forms.py:54\nmsgid \"Enter a valid Swedish organisation number.\"\nmsgstr \"Εισάγετε έγκυρο αριθμό Σουηδικής οργάνωσης.\"\n\n#: se/forms.py:111\nmsgid \"Enter a valid Swedish personal identity number.\"\nmsgstr \"Εισάγετε έναν έγκυρο Σουηδικό αριθμό ταυτότητας.\"\n\n#: se/forms.py:112\nmsgid \"Co-ordination numbers are not allowed.\"\nmsgstr \"Δεν επιτρέπονται αριθμοί συντονισμού (coordination numbers)\"\n\n#: se/forms.py:154\nmsgid \"Enter a Swedish postal code in the format XXXXX.\"\nmsgstr \"Εισάγετε ένα σουηδικό ταχυδρομικό κώδικα στην μορφή XXXXX.\"\n\n#: se/se_counties.py:16\nmsgid \"Stockholm\"\nmsgstr \"Στοκχόλμη\"\n\n#: se/se_counties.py:17\nmsgid \"Västerbotten\"\nmsgstr \"Västerbotten\"\n\n#: se/se_counties.py:18\nmsgid \"Norrbotten\"\nmsgstr \"Norrbotten\"\n\n#: se/se_counties.py:19\nmsgid \"Uppsala\"\nmsgstr \"Ουψάλα\"\n\n#: se/se_counties.py:20\nmsgid \"Södermanland\"\nmsgstr \"Södermanland\"\n\n#: se/se_counties.py:21\nmsgid \"Östergötland\"\nmsgstr \"Östergötland\"\n\n#: se/se_counties.py:22\nmsgid \"Jönköping\"\nmsgstr \"Jönköping\"\n\n#: se/se_counties.py:23\nmsgid \"Kronoberg\"\nmsgstr \"Kronoberg\"\n\n#: se/se_counties.py:24\nmsgid \"Kalmar\"\nmsgstr \"Kalmar\"\n\n#: se/se_counties.py:25\nmsgid \"Gotland\"\nmsgstr \"Gotland\"\n\n#: se/se_counties.py:26\nmsgid \"Blekinge\"\nmsgstr \"Blekinge\"\n\n#: se/se_counties.py:27\nmsgid \"Skåne\"\nmsgstr \"Skåne\"\n\n#: se/se_counties.py:28\nmsgid \"Halland\"\nmsgstr \"Halland\"\n\n#: se/se_counties.py:29\nmsgid \"Västra Götaland\"\nmsgstr \"Västra Götaland\"\n\n#: se/se_counties.py:30\nmsgid \"Värmland\"\nmsgstr \"Värmland\"\n\n#: se/se_counties.py:31\nmsgid \"Örebro\"\nmsgstr \"Örebro\"\n\n#: se/se_counties.py:32\nmsgid \"Västmanland\"\nmsgstr \"Västmanland\"\n\n#: se/se_counties.py:33\nmsgid \"Dalarna\"\nmsgstr \"Dalarna\"\n\n#: se/se_counties.py:34\nmsgid \"Gävleborg\"\nmsgstr \"Gävleborg\"\n\n#: se/se_counties.py:35\nmsgid \"Västernorrland\"\nmsgstr \"Västernorrland\"\n\n#: se/se_counties.py:36\nmsgid \"Jämtland\"\nmsgstr \"Jämtland\"\n\n#: si/forms.py:25\nmsgid \"The first 7 digits of the EMSO must represent a valid past date.\"\nmsgstr \"\"\n\n#: si/forms.py:26\nmsgid \"The EMSO is not valid.\"\nmsgstr \"\"\n\n#: si/forms.py:86\nmsgid \"Enter a valid tax number in form SIXXXXXXXX\"\nmsgstr \"\"\n\n#: si/forms.py:151\nmsgid \"Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:8\nmsgid \"Banska Bystrica\"\nmsgstr \"Banska Bystrica\"\n\n#: sk/sk_districts.py:9\nmsgid \"Banska Stiavnica\"\nmsgstr \"Banska Stiavnica\"\n\n#: sk/sk_districts.py:10\nmsgid \"Bardejov\"\nmsgstr \"Bardejov\"\n\n#: sk/sk_districts.py:11\nmsgid \"Banovce nad Bebravou\"\nmsgstr \"Bánovce nad Bebravou\"\n\n#: sk/sk_districts.py:12\nmsgid \"Brezno\"\nmsgstr \"Brezno\"\n\n#: sk/sk_districts.py:13\nmsgid \"Bratislava I\"\nmsgstr \"Μπρατισλάβα Ι\"\n\n#: sk/sk_districts.py:14\nmsgid \"Bratislava II\"\nmsgstr \"Μπρατισλάβα ΙΙ\"\n\n#: sk/sk_districts.py:15\nmsgid \"Bratislava III\"\nmsgstr \"Μπρατισλάβα ΙΙΙ\"\n\n#: sk/sk_districts.py:16\nmsgid \"Bratislava IV\"\nmsgstr \"Μπρατισλάβα IV\"\n\n#: sk/sk_districts.py:17\nmsgid \"Bratislava V\"\nmsgstr \"Μπρατισλάβα V\"\n\n#: sk/sk_districts.py:18\nmsgid \"Bytca\"\nmsgstr \"Bytca\"\n\n#: sk/sk_districts.py:19\nmsgid \"Cadca\"\nmsgstr \"Cadca\"\n\n#: sk/sk_districts.py:20\nmsgid \"Detva\"\nmsgstr \"Detva\"\n\n#: sk/sk_districts.py:21\nmsgid \"Dolny Kubin\"\nmsgstr \"Dolny Kubin\"\n\n#: sk/sk_districts.py:22\nmsgid \"Dunajska Streda\"\nmsgstr \"Dunajska Streda\"\n\n#: sk/sk_districts.py:23\nmsgid \"Galanta\"\nmsgstr \"Galanta\"\n\n#: sk/sk_districts.py:24\nmsgid \"Gelnica\"\nmsgstr \"Γιέλνιτσα\"\n\n#: sk/sk_districts.py:25\nmsgid \"Hlohovec\"\nmsgstr \"Hlohovec\"\n\n#: sk/sk_districts.py:26\nmsgid \"Humenne\"\nmsgstr \"Humenne\"\n\n#: sk/sk_districts.py:27\nmsgid \"Ilava\"\nmsgstr \"Ilava\"\n\n#: sk/sk_districts.py:28\nmsgid \"Kezmarok\"\nmsgstr \"Kezmarok\"\n\n#: sk/sk_districts.py:29\nmsgid \"Komarno\"\nmsgstr \"Komarno\"\n\n#: sk/sk_districts.py:30\nmsgid \"Kosice I\"\nmsgstr \"Κόσιτσε Ι\"\n\n#: sk/sk_districts.py:31\nmsgid \"Kosice II\"\nmsgstr \"Κόσιτσε ΙΙ\"\n\n#: sk/sk_districts.py:32\nmsgid \"Kosice III\"\nmsgstr \"Κόσιτσε ΙΙΙ\"\n\n#: sk/sk_districts.py:33\nmsgid \"Kosice IV\"\nmsgstr \"Κόσιτσε IV\"\n\n#: sk/sk_districts.py:34\nmsgid \"Kosice - okolie\"\nmsgstr \"Κόσιτσε - okolie\"\n\n#: sk/sk_districts.py:35\nmsgid \"Krupina\"\nmsgstr \"Krupina\"\n\n#: sk/sk_districts.py:36\nmsgid \"Kysucke Nove Mesto\"\nmsgstr \"Kysucke Nove Mesto\"\n\n#: sk/sk_districts.py:37\nmsgid \"Levice\"\nmsgstr \"Levice\"\n\n#: sk/sk_districts.py:38\nmsgid \"Levoca\"\nmsgstr \"Levoca\"\n\n#: sk/sk_districts.py:39\nmsgid \"Liptovsky Mikulas\"\nmsgstr \"Liptovsky Mikulas\"\n\n#: sk/sk_districts.py:40\nmsgid \"Lucenec\"\nmsgstr \"Lucenec\"\n\n#: sk/sk_districts.py:41\nmsgid \"Malacky\"\nmsgstr \"Malacky\"\n\n#: sk/sk_districts.py:42\nmsgid \"Martin\"\nmsgstr \"Martin\"\n\n#: sk/sk_districts.py:43\nmsgid \"Medzilaborce\"\nmsgstr \"Medzilaborce\"\n\n#: sk/sk_districts.py:44\nmsgid \"Michalovce\"\nmsgstr \"Michalovce\"\n\n#: sk/sk_districts.py:45\nmsgid \"Myjava\"\nmsgstr \"Myjava\"\n\n#: sk/sk_districts.py:46\nmsgid \"Namestovo\"\nmsgstr \"Námestovo\"\n\n#: sk/sk_districts.py:47\nmsgid \"Nitra\"\nmsgstr \"Nitra\"\n\n#: sk/sk_districts.py:48\nmsgid \"Nove Mesto nad Vahom\"\nmsgstr \"Nove Mesto nad Váhom\"\n\n#: sk/sk_districts.py:49\nmsgid \"Nove Zamky\"\nmsgstr \"Nove Zamky\"\n\n#: sk/sk_districts.py:50\nmsgid \"Partizanske\"\nmsgstr \"Partizanske\"\n\n#: sk/sk_districts.py:51\nmsgid \"Pezinok\"\nmsgstr \"Pezinok\"\n\n#: sk/sk_districts.py:52\nmsgid \"Piestany\"\nmsgstr \"Piestany\"\n\n#: sk/sk_districts.py:53\nmsgid \"Poltar\"\nmsgstr \"Poltar\"\n\n#: sk/sk_districts.py:54\nmsgid \"Poprad\"\nmsgstr \"Poprad\"\n\n#: sk/sk_districts.py:55\nmsgid \"Povazska Bystrica\"\nmsgstr \"Povazska Bystrica\"\n\n#: sk/sk_districts.py:56\nmsgid \"Presov\"\nmsgstr \"Presov\"\n\n#: sk/sk_districts.py:57\nmsgid \"Prievidza\"\nmsgstr \"Prievidza\"\n\n#: sk/sk_districts.py:58\nmsgid \"Puchov\"\nmsgstr \"Puchov\"\n\n#: sk/sk_districts.py:59\nmsgid \"Revuca\"\nmsgstr \"Revuca\"\n\n#: sk/sk_districts.py:60\nmsgid \"Rimavska Sobota\"\nmsgstr \"Rimavska Sobota\"\n\n#: sk/sk_districts.py:61\nmsgid \"Roznava\"\nmsgstr \"Rožňava\"\n\n#: sk/sk_districts.py:62\nmsgid \"Ruzomberok\"\nmsgstr \"Ruzomberok\"\n\n#: sk/sk_districts.py:63\nmsgid \"Sabinov\"\nmsgstr \"Sabinov\"\n\n#: sk/sk_districts.py:64\nmsgid \"Senec\"\nmsgstr \"Senec\"\n\n#: sk/sk_districts.py:65\nmsgid \"Senica\"\nmsgstr \"Senica\"\n\n#: sk/sk_districts.py:66\nmsgid \"Skalica\"\nmsgstr \"Skalica\"\n\n#: sk/sk_districts.py:67\nmsgid \"Snina\"\nmsgstr \"Snina\"\n\n#: sk/sk_districts.py:68\nmsgid \"Sobrance\"\nmsgstr \"Sobrance\"\n\n#: sk/sk_districts.py:69\nmsgid \"Spisska Nova Ves\"\nmsgstr \"Spisska Nova Ves\"\n\n#: sk/sk_districts.py:70\nmsgid \"Stara Lubovna\"\nmsgstr \"Stara Lubovna\"\n\n#: sk/sk_districts.py:71\nmsgid \"Stropkov\"\nmsgstr \"Στρόπκοβ\"\n\n#: sk/sk_districts.py:72\nmsgid \"Svidnik\"\nmsgstr \"Svidnik\"\n\n#: sk/sk_districts.py:73\nmsgid \"Sala\"\nmsgstr \"Sala\"\n\n#: sk/sk_districts.py:74\nmsgid \"Topolcany\"\nmsgstr \"Topolcany\"\n\n#: sk/sk_districts.py:75\nmsgid \"Trebisov\"\nmsgstr \"Trebisov\"\n\n#: sk/sk_districts.py:76\nmsgid \"Trencin\"\nmsgstr \"Trencin\"\n\n#: sk/sk_districts.py:77\nmsgid \"Trnava\"\nmsgstr \"Trnava\"\n\n#: sk/sk_districts.py:78\nmsgid \"Turcianske Teplice\"\nmsgstr \"Turcianske Teplice\"\n\n#: sk/sk_districts.py:79\nmsgid \"Tvrdosin\"\nmsgstr \"Tvrdosin\"\n\n#: sk/sk_districts.py:80\nmsgid \"Velky Krtis\"\nmsgstr \"Velky Krtis\"\n\n#: sk/sk_districts.py:81\nmsgid \"Vranov nad Toplou\"\nmsgstr \"Vranov nad Toplou\"\n\n#: sk/sk_districts.py:82\nmsgid \"Zlate Moravce\"\nmsgstr \"Zlate Moravce\"\n\n#: sk/sk_districts.py:83\nmsgid \"Zvolen\"\nmsgstr \"Zvolen\"\n\n#: sk/sk_districts.py:84\nmsgid \"Zarnovica\"\nmsgstr \"Zarnovica\"\n\n#: sk/sk_districts.py:85\nmsgid \"Ziar nad Hronom\"\nmsgstr \"Ziar nad Hronom\"\n\n#: sk/sk_districts.py:86\nmsgid \"Zilina\"\nmsgstr \"Zilina\"\n\n#: sk/sk_regions.py:8\nmsgid \"Banska Bystrica region\"\nmsgstr \"Περιφέρεια Banska Bystrica\"\n\n#: sk/sk_regions.py:9\nmsgid \"Bratislava region\"\nmsgstr \"Περιφέρεια Μπρατισλάβας\"\n\n#: sk/sk_regions.py:10\nmsgid \"Kosice region\"\nmsgstr \"Περιφέρεια Κόσιτσε\"\n\n#: sk/sk_regions.py:11\nmsgid \"Nitra region\"\nmsgstr \"Περιφέρεια Nitra\"\n\n#: sk/sk_regions.py:12\nmsgid \"Presov region\"\nmsgstr \"Περιφέρεια Presov\"\n\n#: sk/sk_regions.py:13\nmsgid \"Trencin region\"\nmsgstr \"Περιφέρεια Trencin\"\n\n#: sk/sk_regions.py:14\nmsgid \"Trnava region\"\nmsgstr \"Περιφέρεια Trnava\"\n\n#: sk/sk_regions.py:15\nmsgid \"Zilina region\"\nmsgstr \"Περιφέρεια της Ζίλινα\"\n\n#: tr/forms.py:21\nmsgid \"Enter a postal code in the format XXXXX.\"\nmsgstr \"Εισαγάγετε έναν ταχυδρομικό κώδικα στη μορφή XXXXX.\"\n\n#: tr/forms.py:42\nmsgid \"Phone numbers must be in 0XXX XXX XXXX format.\"\nmsgstr \"Οι αριθμοί τηλεφώνου πρέπει να είναι στη μορφή 0XXX ΧΧΧ ΧΧΧΧ.\"\n\n#: tr/forms.py:69\nmsgid \"Enter a valid Turkish Identification number.\"\nmsgstr \"Εισάγετε ένα έγκυρο τουρκικό αριθμός ταυτότητας.\"\n\n#: tr/forms.py:70\nmsgid \"Turkish Identification number must be 11 digits.\"\nmsgstr \"Ο Τουρκικός αριθμός ταυτότητας είναι 11 ψηφία.\"\n\n#: us/forms.py:21\nmsgid \"Enter a zip code in the format XXXXX or XXXXX-XXXX.\"\nmsgstr \"Πληκτρολογήστε έναν ταχυδρομικό κώδικα σε μορφή XXXXX ή XXXXX-XXXX.\"\n\n#: us/forms.py:59\nmsgid \"Enter a valid U.S. Social Security number in XXX-XX-XXXX format.\"\nmsgstr \"\"\n\"Εισάγετε έναν έγκυρο αριθμό Κοινωνικής Ασφάλισης Η.Π.Α με μορφή XXX-XX-XXXX.\"\n\n#: us/forms.py:92\nmsgid \"Enter a U.S. state or territory.\"\nmsgstr \"Εισάγετε μια πολιτεία των Η.Π.Α. ή επικράτεια.\"\n\n#: us/models.py:8\nmsgid \"U.S. state (two uppercase letters)\"\nmsgstr \"Πολιτεία ΗΠΑ. (δύο κεφαλαία γράμματα)\"\n\n#: us/models.py:17\nmsgid \"U.S. postal code (two uppercase letters)\"\nmsgstr \"Ταχυδρομικός κώδικας Η.Π.Α. (δύο κεφαλαία γράμματα)\"\n\n#: us/models.py:26\nmsgid \"Phone number\"\nmsgstr \"Αριθμός τηλεφώνου\"\n\n#: uy/forms.py:29\nmsgid \"Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.\"\nmsgstr \"\"\n\"Πληκτρολογήστε έναν έγκυρο αριθμό CI σε μορφή X.XXX.XXX-X, XXXXXXX-X ή \"\n\"XXXXXXXX.\"\n\n#: uy/forms.py:31\nmsgid \"Enter a valid CI number.\"\nmsgstr \"Πληκτρολογήστε έναν έγκυρο αριθμό CI.\"\n\n#: za/forms.py:22\nmsgid \"Enter a valid South African ID number\"\nmsgstr \"Εισάγετε έναν έγκυρο αριθμό ταυτότητας Νοτίου Αφρικής.\"\n\n#: za/forms.py:56\nmsgid \"Enter a valid South African postal code\"\nmsgstr \"Εισάγετε έναν έγκυρο ταχυδρομικό κώδικα Νοτίου Αφρικής.\"\n\n#: za/za_provinces.py:4\nmsgid \"Eastern Cape\"\nmsgstr \"Ανατολικό Ακρωτήρι\"\n\n#: za/za_provinces.py:5\nmsgid \"Free State\"\nmsgstr \"Free State\"\n\n#: za/za_provinces.py:6\nmsgid \"Gauteng\"\nmsgstr \"Gauteng\"\n\n#: za/za_provinces.py:7\nmsgid \"KwaZulu-Natal\"\nmsgstr \"KwaZulu-Natal\"\n\n#: za/za_provinces.py:8\nmsgid \"Limpopo\"\nmsgstr \"Limpopo\"\n\n#: za/za_provinces.py:9\nmsgid \"Mpumalanga\"\nmsgstr \"Mpumalanga\"\n\n#: za/za_provinces.py:10\nmsgid \"Northern Cape\"\nmsgstr \"Βόρειο Ακρωτήριο\"\n\n#: za/za_provinces.py:11\nmsgid \"North West\"\nmsgstr \"Βορειοδυτική\"\n\n#: za/za_provinces.py:12\nmsgid \"Western Cape\"\nmsgstr \"Δυτικό Ακρωτήριο\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/locale/en/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-10-17 09:16+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: English <en@li.org>\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: en\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: ar/forms.py:30\nmsgid \"Enter a postal code in the format NNNN or ANNNNAAA.\"\nmsgstr \"Enter a postal code in the format NNNN or ANNNNAAA.\"\n\n#: ar/forms.py:52 br/forms.py:95 br/forms.py:134 pe/forms.py:27 pe/forms.py:55\nmsgid \"This field requires only numbers.\"\nmsgstr \"This field requires only numbers.\"\n\n#: ar/forms.py:53\nmsgid \"This field requires 7 or 8 digits.\"\nmsgstr \"This field requires 7 or 8 digits.\"\n\n#: ar/forms.py:82\nmsgid \"Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.\"\nmsgstr \"Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.\"\n\n#: ar/forms.py:83\nmsgid \"Invalid CUIT.\"\nmsgstr \"Invalid CUIT.\"\n\n#: ar/forms.py:84\nmsgid \"Invalid legal type. Type must be 27, 20, 23 or 30.\"\nmsgstr \"Invalid legal type. Type must be 27, 20, 23 or 30.\"\n\n#: at/at_states.py:5\nmsgid \"Burgenland\"\nmsgstr \"Burgenland\"\n\n#: at/at_states.py:6\nmsgid \"Carinthia\"\nmsgstr \"Carinthia\"\n\n#: at/at_states.py:7\nmsgid \"Lower Austria\"\nmsgstr \"Lower Austria\"\n\n#: at/at_states.py:8\nmsgid \"Upper Austria\"\nmsgstr \"Upper Austria\"\n\n#: at/at_states.py:9\nmsgid \"Salzburg\"\nmsgstr \"Salzburg\"\n\n#: at/at_states.py:10\nmsgid \"Styria\"\nmsgstr \"Styria\"\n\n#: at/at_states.py:11\nmsgid \"Tyrol\"\nmsgstr \"Tyrol\"\n\n#: at/at_states.py:12\nmsgid \"Vorarlberg\"\nmsgstr \"Vorarlberg\"\n\n#: at/at_states.py:13\nmsgid \"Vienna\"\nmsgstr \"Vienna\"\n\n#: at/forms.py:22 ch/forms.py:22 no/forms.py:19\nmsgid \"Enter a zip code in the format XXXX.\"\nmsgstr \"Enter a zip code in the format XXXX.\"\n\n#: at/forms.py:50\nmsgid \"Enter a valid Austrian Social Security Number in XXXX XXXXXX format.\"\nmsgstr \"Enter a valid Austrian Social Security Number in XXXX XXXXXX format.\"\n\n#: au/forms.py:26\nmsgid \"Enter a 4 digit postcode.\"\nmsgstr \"Enter a 4 digit postcode.\"\n\n#: au/models.py:9\nmsgid \"Australian State\"\nmsgstr \"Australian State\"\n\n#: au/models.py:19\nmsgid \"Australian Postcode\"\nmsgstr \"Australian Postcode\"\n\n#: au/models.py:33\nmsgid \"Australian Phone number\"\nmsgstr \"Australian Phone number\"\n\n#: be/be_provinces.py:5\nmsgid \"Antwerp\"\nmsgstr \"Antwerp\"\n\n#: be/be_provinces.py:6\nmsgid \"Brussels\"\nmsgstr \"Brussels\"\n\n#: be/be_provinces.py:7\nmsgid \"East Flanders\"\nmsgstr \"East Flanders\"\n\n#: be/be_provinces.py:8\nmsgid \"Flemish Brabant\"\nmsgstr \"Flemish Brabant\"\n\n#: be/be_provinces.py:9\nmsgid \"Hainaut\"\nmsgstr \"Hainaut\"\n\n#: be/be_provinces.py:10\nmsgid \"Liege\"\nmsgstr \"Liege\"\n\n#: be/be_provinces.py:11 nl/nl_provinces.py:9\nmsgid \"Limburg\"\nmsgstr \"Limburg\"\n\n#: be/be_provinces.py:12\nmsgid \"Luxembourg\"\nmsgstr \"Luxembourg\"\n\n#: be/be_provinces.py:13\nmsgid \"Namur\"\nmsgstr \"Namur\"\n\n#: be/be_provinces.py:14\nmsgid \"Walloon Brabant\"\nmsgstr \"Walloon Brabant\"\n\n#: be/be_provinces.py:15\nmsgid \"West Flanders\"\nmsgstr \"West Flanders\"\n\n#: be/be_regions.py:5\nmsgid \"Brussels Capital Region\"\nmsgstr \"Brussels Capital Region\"\n\n#: be/be_regions.py:6\nmsgid \"Flemish Region\"\nmsgstr \"Flemish Region\"\n\n#: be/be_regions.py:7\nmsgid \"Wallonia\"\nmsgstr \"Wallonia\"\n\n#: be/forms.py:25\nmsgid \"Enter a valid postal code in the range and format 1XXX - 9XXX.\"\nmsgstr \"Enter a valid postal code in the range and format 1XXX - 9XXX.\"\n\n#: be/forms.py:48\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\nmsgstr \"\"\n\"Enter a valid phone number in one of the formats 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\n\n#: br/forms.py:22\nmsgid \"Enter a zip code in the format XXXXX-XXX.\"\nmsgstr \"Enter a zip code in the format XXXXX-XXX.\"\n\n#: br/forms.py:31\nmsgid \"Phone numbers must be in XX-XXXX-XXXX format.\"\nmsgstr \"Phone numbers must be in XX-XXXX-XXXX format.\"\n\n#: br/forms.py:58\nmsgid \"\"\n\"Select a valid brazilian state. That state is not one of the available \"\n\"states.\"\nmsgstr \"\"\n\"Select a valid brazilian state. That state is not one of the available \"\n\"states.\"\n\n#: br/forms.py:93\nmsgid \"Invalid CPF number.\"\nmsgstr \"Invalid CPF number.\"\n\n#: br/forms.py:94\nmsgid \"This field requires at most 11 digits or 14 characters.\"\nmsgstr \"This field requires at most 11 digits or 14 characters.\"\n\n#: br/forms.py:133\nmsgid \"Invalid CNPJ number.\"\nmsgstr \"Invalid CNPJ number.\"\n\n#: br/forms.py:135\nmsgid \"This field requires at least 14 digits\"\nmsgstr \"This field requires at least 14 digits\"\n\n#: ca/forms.py:29\nmsgid \"Enter a postal code in the format XXX XXX.\"\nmsgstr \"Enter a postal code in the format XXX XXX.\"\n\n#: ca/forms.py:47 us/forms.py:30\nmsgid \"Phone numbers must be in XXX-XXX-XXXX format.\"\nmsgstr \"Phone numbers must be in XXX-XXX-XXXX format.\"\n\n#: ca/forms.py:69\nmsgid \"Enter a Canadian province or territory.\"\nmsgstr \"Enter a Canadian province or territory.\"\n\n#: ca/forms.py:110\nmsgid \"Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.\"\nmsgstr \"Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.\"\n\n#: ch/ch_states.py:5\nmsgid \"Aargau\"\nmsgstr \"Aargau\"\n\n#: ch/ch_states.py:6\nmsgid \"Appenzell Innerrhoden\"\nmsgstr \"Appenzell Innerrhoden\"\n\n#: ch/ch_states.py:7\nmsgid \"Appenzell Ausserrhoden\"\nmsgstr \"Appenzell Ausserrhoden\"\n\n#: ch/ch_states.py:8\nmsgid \"Basel-Stadt\"\nmsgstr \"Basel-Stadt\"\n\n#: ch/ch_states.py:9\nmsgid \"Basel-Land\"\nmsgstr \"Basel-Land\"\n\n#: ch/ch_states.py:10\nmsgid \"Berne\"\nmsgstr \"Berne\"\n\n#: ch/ch_states.py:11\nmsgid \"Fribourg\"\nmsgstr \"Fribourg\"\n\n#: ch/ch_states.py:12\nmsgid \"Geneva\"\nmsgstr \"Geneva\"\n\n#: ch/ch_states.py:13\nmsgid \"Glarus\"\nmsgstr \"Glarus\"\n\n#: ch/ch_states.py:14\nmsgid \"Graubuenden\"\nmsgstr \"Graubuenden\"\n\n#: ch/ch_states.py:15\nmsgid \"Jura\"\nmsgstr \"Jura\"\n\n#: ch/ch_states.py:16\nmsgid \"Lucerne\"\nmsgstr \"Lucerne\"\n\n#: ch/ch_states.py:17\nmsgid \"Neuchatel\"\nmsgstr \"Neuchatel\"\n\n#: ch/ch_states.py:18\nmsgid \"Nidwalden\"\nmsgstr \"Nidwalden\"\n\n#: ch/ch_states.py:19\nmsgid \"Obwalden\"\nmsgstr \"Obwalden\"\n\n#: ch/ch_states.py:20\nmsgid \"Schaffhausen\"\nmsgstr \"Schaffhausen\"\n\n#: ch/ch_states.py:21\nmsgid \"Schwyz\"\nmsgstr \"Schwyz\"\n\n#: ch/ch_states.py:22\nmsgid \"Solothurn\"\nmsgstr \"Solothurn\"\n\n#: ch/ch_states.py:23\nmsgid \"St. Gallen\"\nmsgstr \"St. Gallen\"\n\n#: ch/ch_states.py:24\nmsgid \"Thurgau\"\nmsgstr \"Thurgau\"\n\n#: ch/ch_states.py:25\nmsgid \"Ticino\"\nmsgstr \"Ticino\"\n\n#: ch/ch_states.py:26\nmsgid \"Uri\"\nmsgstr \"Uri\"\n\n#: ch/ch_states.py:27\nmsgid \"Valais\"\nmsgstr \"Valais\"\n\n#: ch/ch_states.py:28\nmsgid \"Vaud\"\nmsgstr \"Vaud\"\n\n#: ch/ch_states.py:29\nmsgid \"Zug\"\nmsgstr \"Zug\"\n\n#: ch/ch_states.py:30\nmsgid \"Zurich\"\nmsgstr \"Zurich\"\n\n#: ch/forms.py:37\nmsgid \"Phone numbers must be in 0XX XXX XX XX format.\"\nmsgstr \"Phone numbers must be in 0XX XXX XX XX format.\"\n\n#: ch/forms.py:68\nmsgid \"\"\n\"Enter a valid Swiss identity or passport card number in X1234567<0 or \"\n\"1234567890 format.\"\nmsgstr \"\"\n\"Enter a valid Swiss identity or passport card number in X1234567<0 or \"\n\"1234567890 format.\"\n\n#: cl/forms.py:32\nmsgid \"Enter a valid Chilean RUT.\"\nmsgstr \"Enter a valid Chilean RUT.\"\n\n#: cl/forms.py:33\nmsgid \"Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.\"\nmsgstr \"Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.\"\n\n#: cl/forms.py:34\nmsgid \"The Chilean RUT is not valid.\"\nmsgstr \"The Chilean RUT is not valid.\"\n\n#: cn/forms.py:84\nmsgid \"Enter a post code in the format XXXXXX.\"\nmsgstr \"Enter a post code in the format XXXXXX.\"\n\n#: cn/forms.py:105\nmsgid \"ID Card Number consists of 15 or 18 digits.\"\nmsgstr \"ID Card Number consists of 15 or 18 digits.\"\n\n#: cn/forms.py:106\nmsgid \"Invalid ID Card Number: Wrong checksum\"\nmsgstr \"Invalid ID Card Number: Wrong checksum\"\n\n#: cn/forms.py:107\nmsgid \"Invalid ID Card Number: Wrong birthdate\"\nmsgstr \"Invalid ID Card Number: Wrong birthdate\"\n\n#: cn/forms.py:108\nmsgid \"Invalid ID Card Number: Wrong location code\"\nmsgstr \"Invalid ID Card Number: Wrong location code\"\n\n#: cn/forms.py:193\nmsgid \"Enter a valid phone number.\"\nmsgstr \"Enter a valid phone number.\"\n\n#: cn/forms.py:210\nmsgid \"Enter a valid cell number.\"\nmsgstr \"Enter a valid cell number.\"\n\n#: cz/cz_regions.py:8\nmsgid \"Prague\"\nmsgstr \"Prague\"\n\n#: cz/cz_regions.py:9\nmsgid \"Central Bohemian Region\"\nmsgstr \"Central Bohemian Region\"\n\n#: cz/cz_regions.py:10\nmsgid \"South Bohemian Region\"\nmsgstr \"South Bohemian Region\"\n\n#: cz/cz_regions.py:11\nmsgid \"Pilsen Region\"\nmsgstr \"Pilsen Region\"\n\n#: cz/cz_regions.py:12\nmsgid \"Carlsbad Region\"\nmsgstr \"Carlsbad Region\"\n\n#: cz/cz_regions.py:13\nmsgid \"Usti Region\"\nmsgstr \"Usti Region\"\n\n#: cz/cz_regions.py:14\nmsgid \"Liberec Region\"\nmsgstr \"Liberec Region\"\n\n#: cz/cz_regions.py:15\nmsgid \"Hradec Region\"\nmsgstr \"Hradec Region\"\n\n#: cz/cz_regions.py:16\nmsgid \"Pardubice Region\"\nmsgstr \"Pardubice Region\"\n\n#: cz/cz_regions.py:17\nmsgid \"Vysocina Region\"\nmsgstr \"Vysocina Region\"\n\n#: cz/cz_regions.py:18\nmsgid \"South Moravian Region\"\nmsgstr \"South Moravian Region\"\n\n#: cz/cz_regions.py:19\nmsgid \"Olomouc Region\"\nmsgstr \"Olomouc Region\"\n\n#: cz/cz_regions.py:20\nmsgid \"Zlin Region\"\nmsgstr \"Zlin Region\"\n\n#: cz/cz_regions.py:21\nmsgid \"Moravian-Silesian Region\"\nmsgstr \"Moravian-Silesian Region\"\n\n#: cz/forms.py:32 sk/forms.py:33\nmsgid \"Enter a postal code in the format XXXXX or XXX XX.\"\nmsgstr \"Enter a postal code in the format XXXXX or XXX XX.\"\n\n#: cz/forms.py:52\nmsgid \"Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.\"\nmsgstr \"Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.\"\n\n#: cz/forms.py:53\nmsgid \"Enter a valid birth number.\"\nmsgstr \"Enter a valid birth number.\"\n\n#: cz/forms.py:102\nmsgid \"Enter a valid IC number.\"\nmsgstr \"Enter a valid IC number.\"\n\n#: de/de_states.py:5\nmsgid \"Baden-Wuerttemberg\"\nmsgstr \"Baden-Wuerttemberg\"\n\n#: de/de_states.py:6\nmsgid \"Bavaria\"\nmsgstr \"Bavaria\"\n\n#: de/de_states.py:7\nmsgid \"Berlin\"\nmsgstr \"Berlin\"\n\n#: de/de_states.py:8\nmsgid \"Brandenburg\"\nmsgstr \"Brandenburg\"\n\n#: de/de_states.py:9\nmsgid \"Bremen\"\nmsgstr \"Bremen\"\n\n#: de/de_states.py:10\nmsgid \"Hamburg\"\nmsgstr \"Hamburg\"\n\n#: de/de_states.py:11\nmsgid \"Hessen\"\nmsgstr \"Hessen\"\n\n#: de/de_states.py:12\nmsgid \"Mecklenburg-Western Pomerania\"\nmsgstr \"Mecklenburg-Western Pomerania\"\n\n#: de/de_states.py:13\nmsgid \"Lower Saxony\"\nmsgstr \"Lower Saxony\"\n\n#: de/de_states.py:14\nmsgid \"North Rhine-Westphalia\"\nmsgstr \"North Rhine-Westphalia\"\n\n#: de/de_states.py:15\nmsgid \"Rhineland-Palatinate\"\nmsgstr \"Rhineland-Palatinate\"\n\n#: de/de_states.py:16\nmsgid \"Saarland\"\nmsgstr \"Saarland\"\n\n#: de/de_states.py:17\nmsgid \"Saxony\"\nmsgstr \"Saxony\"\n\n#: de/de_states.py:18\nmsgid \"Saxony-Anhalt\"\nmsgstr \"Saxony-Anhalt\"\n\n#: de/de_states.py:19\nmsgid \"Schleswig-Holstein\"\nmsgstr \"Schleswig-Holstein\"\n\n#: de/de_states.py:20\nmsgid \"Thuringia\"\nmsgstr \"Thuringia\"\n\n#: de/forms.py:20 fi/forms.py:18 fr/forms.py:20\nmsgid \"Enter a zip code in the format XXXXX.\"\nmsgstr \"Enter a zip code in the format XXXXX.\"\n\n#: de/forms.py:46\nmsgid \"\"\n\"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"format.\"\nmsgstr \"\"\n\"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"format.\"\n\n#: es/es_provinces.py:5\nmsgid \"Araba\"\nmsgstr \"Araba\"\n\n#: es/es_provinces.py:6\nmsgid \"Albacete\"\nmsgstr \"Albacete\"\n\n#: es/es_provinces.py:7\nmsgid \"Alacant\"\nmsgstr \"Alacant\"\n\n#: es/es_provinces.py:8\nmsgid \"Almeria\"\nmsgstr \"Almeria\"\n\n#: es/es_provinces.py:9\nmsgid \"Avila\"\nmsgstr \"Avila\"\n\n#: es/es_provinces.py:10\nmsgid \"Badajoz\"\nmsgstr \"Badajoz\"\n\n#: es/es_provinces.py:11\nmsgid \"Illes Balears\"\nmsgstr \"Illes Balears\"\n\n#: es/es_provinces.py:12\nmsgid \"Barcelona\"\nmsgstr \"Barcelona\"\n\n#: es/es_provinces.py:13\nmsgid \"Burgos\"\nmsgstr \"Burgos\"\n\n#: es/es_provinces.py:14\nmsgid \"Caceres\"\nmsgstr \"Caceres\"\n\n#: es/es_provinces.py:15\nmsgid \"Cadiz\"\nmsgstr \"Cadiz\"\n\n#: es/es_provinces.py:16\nmsgid \"Castello\"\nmsgstr \"Castello\"\n\n#: es/es_provinces.py:17\nmsgid \"Ciudad Real\"\nmsgstr \"Ciudad Real\"\n\n#: es/es_provinces.py:18\nmsgid \"Cordoba\"\nmsgstr \"Cordoba\"\n\n#: es/es_provinces.py:19\nmsgid \"A Coruna\"\nmsgstr \"A Coruna\"\n\n#: es/es_provinces.py:20\nmsgid \"Cuenca\"\nmsgstr \"Cuenca\"\n\n#: es/es_provinces.py:21\nmsgid \"Girona\"\nmsgstr \"Girona\"\n\n#: es/es_provinces.py:22\nmsgid \"Granada\"\nmsgstr \"Granada\"\n\n#: es/es_provinces.py:23\nmsgid \"Guadalajara\"\nmsgstr \"Guadalajara\"\n\n#: es/es_provinces.py:24\nmsgid \"Guipuzkoa\"\nmsgstr \"Guipuzkoa\"\n\n#: es/es_provinces.py:25\nmsgid \"Huelva\"\nmsgstr \"Huelva\"\n\n#: es/es_provinces.py:26\nmsgid \"Huesca\"\nmsgstr \"Huesca\"\n\n#: es/es_provinces.py:27\nmsgid \"Jaen\"\nmsgstr \"Jaen\"\n\n#: es/es_provinces.py:28\nmsgid \"Leon\"\nmsgstr \"Leon\"\n\n#: es/es_provinces.py:29\nmsgid \"Lleida\"\nmsgstr \"Lleida\"\n\n#: es/es_provinces.py:30 es/es_regions.py:17\nmsgid \"La Rioja\"\nmsgstr \"La Rioja\"\n\n#: es/es_provinces.py:31\nmsgid \"Lugo\"\nmsgstr \"Lugo\"\n\n#: es/es_provinces.py:32 es/es_regions.py:18\nmsgid \"Madrid\"\nmsgstr \"Madrid\"\n\n#: es/es_provinces.py:33\nmsgid \"Malaga\"\nmsgstr \"Malaga\"\n\n#: es/es_provinces.py:34\nmsgid \"Murcia\"\nmsgstr \"Murcia\"\n\n#: es/es_provinces.py:35\nmsgid \"Navarre\"\nmsgstr \"Navarre\"\n\n#: es/es_provinces.py:36\nmsgid \"Ourense\"\nmsgstr \"Ourense\"\n\n#: es/es_provinces.py:37\nmsgid \"Asturias\"\nmsgstr \"Asturias\"\n\n#: es/es_provinces.py:38\nmsgid \"Palencia\"\nmsgstr \"Palencia\"\n\n#: es/es_provinces.py:39\nmsgid \"Las Palmas\"\nmsgstr \"Las Palmas\"\n\n#: es/es_provinces.py:40\nmsgid \"Pontevedra\"\nmsgstr \"Pontevedra\"\n\n#: es/es_provinces.py:41\nmsgid \"Salamanca\"\nmsgstr \"Salamanca\"\n\n#: es/es_provinces.py:42\nmsgid \"Santa Cruz de Tenerife\"\nmsgstr \"Santa Cruz de Tenerife\"\n\n#: es/es_provinces.py:43 es/es_regions.py:11\nmsgid \"Cantabria\"\nmsgstr \"Cantabria\"\n\n#: es/es_provinces.py:44\nmsgid \"Segovia\"\nmsgstr \"Segovia\"\n\n#: es/es_provinces.py:45\nmsgid \"Seville\"\nmsgstr \"Seville\"\n\n#: es/es_provinces.py:46\nmsgid \"Soria\"\nmsgstr \"Soria\"\n\n#: es/es_provinces.py:47\nmsgid \"Tarragona\"\nmsgstr \"Tarragona\"\n\n#: es/es_provinces.py:48\nmsgid \"Teruel\"\nmsgstr \"Teruel\"\n\n#: es/es_provinces.py:49\nmsgid \"Toledo\"\nmsgstr \"Toledo\"\n\n#: es/es_provinces.py:50\nmsgid \"Valencia\"\nmsgstr \"Valencia\"\n\n#: es/es_provinces.py:51\nmsgid \"Valladolid\"\nmsgstr \"Valladolid\"\n\n#: es/es_provinces.py:52\nmsgid \"Bizkaia\"\nmsgstr \"Bizkaia\"\n\n#: es/es_provinces.py:53\nmsgid \"Zamora\"\nmsgstr \"Zamora\"\n\n#: es/es_provinces.py:54\nmsgid \"Zaragoza\"\nmsgstr \"Zaragoza\"\n\n#: es/es_provinces.py:55\nmsgid \"Ceuta\"\nmsgstr \"Ceuta\"\n\n#: es/es_provinces.py:56\nmsgid \"Melilla\"\nmsgstr \"Melilla\"\n\n#: es/es_regions.py:5\nmsgid \"Andalusia\"\nmsgstr \"Andalusia\"\n\n#: es/es_regions.py:6\nmsgid \"Aragon\"\nmsgstr \"Aragon\"\n\n#: es/es_regions.py:7\nmsgid \"Principality of Asturias\"\nmsgstr \"Principality of Asturias\"\n\n#: es/es_regions.py:8\nmsgid \"Balearic Islands\"\nmsgstr \"Balearic Islands\"\n\n#: es/es_regions.py:9\nmsgid \"Basque Country\"\nmsgstr \"Basque Country\"\n\n#: es/es_regions.py:10\nmsgid \"Canary Islands\"\nmsgstr \"Canary Islands\"\n\n#: es/es_regions.py:12\nmsgid \"Castile-La Mancha\"\nmsgstr \"Castile-La Mancha\"\n\n#: es/es_regions.py:13\nmsgid \"Castile and Leon\"\nmsgstr \"Castile and Leon\"\n\n#: es/es_regions.py:14\nmsgid \"Catalonia\"\nmsgstr \"Catalonia\"\n\n#: es/es_regions.py:15\nmsgid \"Extremadura\"\nmsgstr \"Extremadura\"\n\n#: es/es_regions.py:16\nmsgid \"Galicia\"\nmsgstr \"Galicia\"\n\n#: es/es_regions.py:19\nmsgid \"Region of Murcia\"\nmsgstr \"Region of Murcia\"\n\n#: es/es_regions.py:20\nmsgid \"Foral Community of Navarre\"\nmsgstr \"Foral Community of Navarre\"\n\n#: es/es_regions.py:21\nmsgid \"Valencian Community\"\nmsgstr \"Valencian Community\"\n\n#: es/forms.py:26\nmsgid \"Enter a valid postal code in the range and format 01XXX - 52XXX.\"\nmsgstr \"Enter a valid postal code in the range and format 01XXX - 52XXX.\"\n\n#: es/forms.py:46\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or \"\n\"9XXXXXXXX.\"\nmsgstr \"\"\n\"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or \"\n\"9XXXXXXXX.\"\n\n#: es/forms.py:73\nmsgid \"Please enter a valid NIF, NIE, or CIF.\"\nmsgstr \"Please enter a valid NIF, NIE, or CIF.\"\n\n#: es/forms.py:74\nmsgid \"Please enter a valid NIF or NIE.\"\nmsgstr \"Please enter a valid NIF or NIE.\"\n\n#: es/forms.py:75\nmsgid \"Invalid checksum for NIF.\"\nmsgstr \"Invalid checksum for NIF.\"\n\n#: es/forms.py:76\nmsgid \"Invalid checksum for NIE.\"\nmsgstr \"Invalid checksum for NIE.\"\n\n#: es/forms.py:77\nmsgid \"Invalid checksum for CIF.\"\nmsgstr \"Invalid checksum for CIF.\"\n\n#: es/forms.py:149\nmsgid \"\"\n\"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.\"\nmsgstr \"\"\n\"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.\"\n\n#: es/forms.py:150\nmsgid \"Invalid checksum for bank account number.\"\nmsgstr \"Invalid checksum for bank account number.\"\n\n#: fi/forms.py:33\nmsgid \"Enter a valid Finnish social security number.\"\nmsgstr \"Enter a valid Finnish social security number.\"\n\n#: fr/forms.py:35\nmsgid \"Phone numbers must be in 0X XX XX XX XX format.\"\nmsgstr \"Phone numbers must be in 0X XX XX XX XX format.\"\n\n#: gb/forms.py:25\nmsgid \"Enter a valid postcode.\"\nmsgstr \"Enter a valid postcode.\"\n\n#: gb/gb_regions.py:11\nmsgid \"Bedfordshire\"\nmsgstr \"Bedfordshire\"\n\n#: gb/gb_regions.py:12\nmsgid \"Buckinghamshire\"\nmsgstr \"Buckinghamshire\"\n\n#: gb/gb_regions.py:14\nmsgid \"Cheshire\"\nmsgstr \"Cheshire\"\n\n#: gb/gb_regions.py:15\nmsgid \"Cornwall and Isles of Scilly\"\nmsgstr \"Cornwall and Isles of Scilly\"\n\n#: gb/gb_regions.py:16\nmsgid \"Cumbria\"\nmsgstr \"Cumbria\"\n\n#: gb/gb_regions.py:17\nmsgid \"Derbyshire\"\nmsgstr \"Derbyshire\"\n\n#: gb/gb_regions.py:18\nmsgid \"Devon\"\nmsgstr \"Devon\"\n\n#: gb/gb_regions.py:19\nmsgid \"Dorset\"\nmsgstr \"Dorset\"\n\n#: gb/gb_regions.py:20\nmsgid \"Durham\"\nmsgstr \"Durham\"\n\n#: gb/gb_regions.py:21\nmsgid \"East Sussex\"\nmsgstr \"East Sussex\"\n\n#: gb/gb_regions.py:22\nmsgid \"Essex\"\nmsgstr \"Essex\"\n\n#: gb/gb_regions.py:23\nmsgid \"Gloucestershire\"\nmsgstr \"Gloucestershire\"\n\n#: gb/gb_regions.py:24\nmsgid \"Greater London\"\nmsgstr \"Greater London\"\n\n#: gb/gb_regions.py:25\nmsgid \"Greater Manchester\"\nmsgstr \"Greater Manchester\"\n\n#: gb/gb_regions.py:26\nmsgid \"Hampshire\"\nmsgstr \"Hampshire\"\n\n#: gb/gb_regions.py:27\nmsgid \"Hertfordshire\"\nmsgstr \"Hertfordshire\"\n\n#: gb/gb_regions.py:28\nmsgid \"Kent\"\nmsgstr \"Kent\"\n\n#: gb/gb_regions.py:29\nmsgid \"Lancashire\"\nmsgstr \"Lancashire\"\n\n#: gb/gb_regions.py:30\nmsgid \"Leicestershire\"\nmsgstr \"Leicestershire\"\n\n#: gb/gb_regions.py:31\nmsgid \"Lincolnshire\"\nmsgstr \"Lincolnshire\"\n\n#: gb/gb_regions.py:32\nmsgid \"Merseyside\"\nmsgstr \"Merseyside\"\n\n#: gb/gb_regions.py:33\nmsgid \"Norfolk\"\nmsgstr \"Norfolk\"\n\n#: gb/gb_regions.py:34\nmsgid \"North Yorkshire\"\nmsgstr \"North Yorkshire\"\n\n#: gb/gb_regions.py:35\nmsgid \"Northamptonshire\"\nmsgstr \"Northamptonshire\"\n\n#: gb/gb_regions.py:36\nmsgid \"Northumberland\"\nmsgstr \"Northumberland\"\n\n#: gb/gb_regions.py:37\nmsgid \"Nottinghamshire\"\nmsgstr \"Nottinghamshire\"\n\n#: gb/gb_regions.py:38\nmsgid \"Oxfordshire\"\nmsgstr \"Oxfordshire\"\n\n#: gb/gb_regions.py:39\nmsgid \"Shropshire\"\nmsgstr \"Shropshire\"\n\n#: gb/gb_regions.py:40\nmsgid \"Somerset\"\nmsgstr \"Somerset\"\n\n#: gb/gb_regions.py:41\nmsgid \"South Yorkshire\"\nmsgstr \"South Yorkshire\"\n\n#: gb/gb_regions.py:42\nmsgid \"Staffordshire\"\nmsgstr \"Staffordshire\"\n\n#: gb/gb_regions.py:43\nmsgid \"Suffolk\"\nmsgstr \"Suffolk\"\n\n#: gb/gb_regions.py:44\nmsgid \"Surrey\"\nmsgstr \"Surrey\"\n\n#: gb/gb_regions.py:45\nmsgid \"Tyne and Wear\"\nmsgstr \"Tyne and Wear\"\n\n#: gb/gb_regions.py:46\nmsgid \"Warwickshire\"\nmsgstr \"Warwickshire\"\n\n#: gb/gb_regions.py:47\nmsgid \"West Midlands\"\nmsgstr \"West Midlands\"\n\n#: gb/gb_regions.py:48\nmsgid \"West Sussex\"\nmsgstr \"West Sussex\"\n\n#: gb/gb_regions.py:49\nmsgid \"West Yorkshire\"\nmsgstr \"West Yorkshire\"\n\n#: gb/gb_regions.py:50\nmsgid \"Wiltshire\"\nmsgstr \"Wiltshire\"\n\n#: gb/gb_regions.py:51\nmsgid \"Worcestershire\"\nmsgstr \"Worcestershire\"\n\n#: gb/gb_regions.py:55\nmsgid \"County Antrim\"\nmsgstr \"County Antrim\"\n\n#: gb/gb_regions.py:56\nmsgid \"County Armagh\"\nmsgstr \"County Armagh\"\n\n#: gb/gb_regions.py:57\nmsgid \"County Down\"\nmsgstr \"County Down\"\n\n#: gb/gb_regions.py:58\nmsgid \"County Fermanagh\"\nmsgstr \"County Fermanagh\"\n\n#: gb/gb_regions.py:59\nmsgid \"County Londonderry\"\nmsgstr \"County Londonderry\"\n\n#: gb/gb_regions.py:60\nmsgid \"County Tyrone\"\nmsgstr \"County Tyrone\"\n\n#: gb/gb_regions.py:64\nmsgid \"Clwyd\"\nmsgstr \"Clwyd\"\n\n#: gb/gb_regions.py:65\nmsgid \"Dyfed\"\nmsgstr \"Dyfed\"\n\n#: gb/gb_regions.py:66\nmsgid \"Gwent\"\nmsgstr \"Gwent\"\n\n#: gb/gb_regions.py:67\nmsgid \"Gwynedd\"\nmsgstr \"Gwynedd\"\n\n#: gb/gb_regions.py:68\nmsgid \"Mid Glamorgan\"\nmsgstr \"Mid Glamorgan\"\n\n#: gb/gb_regions.py:69\nmsgid \"Powys\"\nmsgstr \"Powys\"\n\n#: gb/gb_regions.py:70\nmsgid \"South Glamorgan\"\nmsgstr \"South Glamorgan\"\n\n#: gb/gb_regions.py:71\nmsgid \"West Glamorgan\"\nmsgstr \"West Glamorgan\"\n\n#: gb/gb_regions.py:75\nmsgid \"Borders\"\nmsgstr \"Borders\"\n\n#: gb/gb_regions.py:76\nmsgid \"Central Scotland\"\nmsgstr \"Central Scotland\"\n\n#: gb/gb_regions.py:77\nmsgid \"Dumfries and Galloway\"\nmsgstr \"Dumfries and Galloway\"\n\n#: gb/gb_regions.py:78\nmsgid \"Fife\"\nmsgstr \"Fife\"\n\n#: gb/gb_regions.py:79\nmsgid \"Grampian\"\nmsgstr \"Grampian\"\n\n#: gb/gb_regions.py:80\nmsgid \"Highland\"\nmsgstr \"Highland\"\n\n#: gb/gb_regions.py:81\nmsgid \"Lothian\"\nmsgstr \"Lothian\"\n\n#: gb/gb_regions.py:82\nmsgid \"Orkney Islands\"\nmsgstr \"Orkney Islands\"\n\n#: gb/gb_regions.py:83\nmsgid \"Shetland Islands\"\nmsgstr \"Shetland Islands\"\n\n#: gb/gb_regions.py:84\nmsgid \"Strathclyde\"\nmsgstr \"Strathclyde\"\n\n#: gb/gb_regions.py:85\nmsgid \"Tayside\"\nmsgstr \"Tayside\"\n\n#: gb/gb_regions.py:86\nmsgid \"Western Isles\"\nmsgstr \"Western Isles\"\n\n#: gb/gb_regions.py:90\nmsgid \"England\"\nmsgstr \"England\"\n\n#: gb/gb_regions.py:91\nmsgid \"Northern Ireland\"\nmsgstr \"Northern Ireland\"\n\n#: gb/gb_regions.py:92\nmsgid \"Scotland\"\nmsgstr \"Scotland\"\n\n#: gb/gb_regions.py:93\nmsgid \"Wales\"\nmsgstr \"Wales\"\n\n#: hk/forms.py:37\n#, python-format\nmsgid \"Phone number should not start with one of the followings: %s.\"\nmsgstr \"Phone number should not start with one of the followings: %s.\"\n\n#: hk/forms.py:40\n#, python-format\nmsgid \"Phone number must be in one of the following formats: %s.\"\nmsgstr \"Phone number must be in one of the following formats: %s.\"\n\n#: hk/forms.py:42\n#, python-format\nmsgid \"Phone number should start with one of the followings: %s.\"\nmsgstr \"Phone number should start with one of the followings: %s.\"\n\n#: hr/forms.py:76\nmsgid \"Enter a valid 13 digit JMBG\"\nmsgstr \"Enter a valid 13 digit JMBG\"\n\n#: hr/forms.py:77\nmsgid \"Error in date segment\"\nmsgstr \"Error in date segment\"\n\n#: hr/forms.py:123\nmsgid \"Enter a valid 11 digit OIB\"\nmsgstr \"Enter a valid 11 digit OIB\"\n\n#: hr/forms.py:152 id/forms.py:112\nmsgid \"Enter a valid vehicle license plate number\"\nmsgstr \"Enter a valid vehicle license plate number\"\n\n#: hr/forms.py:153\nmsgid \"Enter a valid location code\"\nmsgstr \"Enter a valid location code\"\n\n#: hr/forms.py:154\nmsgid \"Number part cannot be zero\"\nmsgstr \"Number part cannot be zero\"\n\n#: hr/forms.py:190\nmsgid \"Enter a valid 5 digit postal code\"\nmsgstr \"Enter a valid 5 digit postal code\"\n\n#: hr/forms.py:218 id/forms.py:72 nl/forms.py:56\nmsgid \"Enter a valid phone number\"\nmsgstr \"Enter a valid phone number\"\n\n#: hr/forms.py:219\nmsgid \"Enter a valid area or mobile network code\"\nmsgstr \"Enter a valid area or mobile network code\"\n\n#: hr/forms.py:220\nmsgid \"The phone nubmer is too long\"\nmsgstr \"The phone nubmer is too long\"\n\n#: hr/forms.py:258\nmsgid \"Enter a valid 19 digit JMBAG starting with 601983\"\nmsgstr \"Enter a valid 19 digit JMBAG starting with 601983\"\n\n#: hr/forms.py:259\nmsgid \"Card issue number cannot be zero\"\nmsgstr \"Card issue number cannot be zero\"\n\n#: hr/hr_choices.py:14\nmsgid \"Grad Zagreb\"\nmsgstr \"Grad Zagreb\"\n\n#: hr/hr_choices.py:15\nmsgid \"Bjelovarsko-bilogorska županija\"\nmsgstr \"Bjelovarsko-bilogorska županija\"\n\n#: hr/hr_choices.py:16\nmsgid \"Brodsko-posavska županija\"\nmsgstr \"Brodsko-posavska županija\"\n\n#: hr/hr_choices.py:17\nmsgid \"Dubrovačko-neretvanska županija\"\nmsgstr \"Dubrovačko-neretvanska županija\"\n\n#: hr/hr_choices.py:18\nmsgid \"Istarska županija\"\nmsgstr \"Istarska županija\"\n\n#: hr/hr_choices.py:19\nmsgid \"Karlovačka županija\"\nmsgstr \"Karlovačka županija\"\n\n#: hr/hr_choices.py:20\nmsgid \"Koprivničko-križevačka županija\"\nmsgstr \"Koprivničko-križevačka županija\"\n\n#: hr/hr_choices.py:21\nmsgid \"Krapinsko-zagorska županija\"\nmsgstr \"Krapinsko-zagorska županija\"\n\n#: hr/hr_choices.py:22\nmsgid \"Ličko-senjska županija\"\nmsgstr \"Ličko-senjska županija\"\n\n#: hr/hr_choices.py:23\nmsgid \"Međimurska županija\"\nmsgstr \"Međimurska županija\"\n\n#: hr/hr_choices.py:24\nmsgid \"Osječko-baranjska županija\"\nmsgstr \"Osječko-baranjska županija\"\n\n#: hr/hr_choices.py:25\nmsgid \"Požeško-slavonska županija\"\nmsgstr \"Požeško-slavonska županija\"\n\n#: hr/hr_choices.py:26\nmsgid \"Primorsko-goranska županija\"\nmsgstr \"Primorsko-goranska županija\"\n\n#: hr/hr_choices.py:27\nmsgid \"Sisačko-moslavačka županija\"\nmsgstr \"Sisačko-moslavačka županija\"\n\n#: hr/hr_choices.py:28\nmsgid \"Splitsko-dalmatinska županija\"\nmsgstr \"Splitsko-dalmatinska županija\"\n\n#: hr/hr_choices.py:29\nmsgid \"Šibensko-kninska županija\"\nmsgstr \"Šibensko-kninska županija\"\n\n#: hr/hr_choices.py:30\nmsgid \"Varaždinska županija\"\nmsgstr \"Varaždinska županija\"\n\n#: hr/hr_choices.py:31\nmsgid \"Virovitičko-podravska županija\"\nmsgstr \"Virovitičko-podravska županija\"\n\n#: hr/hr_choices.py:32\nmsgid \"Vukovarsko-srijemska županija\"\nmsgstr \"Vukovarsko-srijemska županija\"\n\n#: hr/hr_choices.py:33\nmsgid \"Zadarska županija\"\nmsgstr \"Zadarska županija\"\n\n#: hr/hr_choices.py:34\nmsgid \"Zagrebačka županija\"\nmsgstr \"Zagrebačka županija\"\n\n#: id/forms.py:31\nmsgid \"Enter a valid post code\"\nmsgstr \"Enter a valid post code\"\n\n#: id/forms.py:176\nmsgid \"Enter a valid NIK/KTP number\"\nmsgstr \"Enter a valid NIK/KTP number\"\n\n#: id/id_choices.py:15\nmsgid \"Aceh\"\nmsgstr \"Aceh\"\n\n#: id/id_choices.py:16 id/id_choices.py:79\nmsgid \"Bali\"\nmsgstr \"Bali\"\n\n#: id/id_choices.py:17 id/id_choices.py:51\nmsgid \"Banten\"\nmsgstr \"Banten\"\n\n#: id/id_choices.py:18 id/id_choices.py:60\nmsgid \"Bengkulu\"\nmsgstr \"Bengkulu\"\n\n#: id/id_choices.py:19 id/id_choices.py:53\nmsgid \"Yogyakarta\"\nmsgstr \"Yogyakarta\"\n\n#: id/id_choices.py:20 id/id_choices.py:57\nmsgid \"Jakarta\"\nmsgstr \"Jakarta\"\n\n#: id/id_choices.py:21 id/id_choices.py:81\nmsgid \"Gorontalo\"\nmsgstr \"Gorontalo\"\n\n#: id/id_choices.py:22 id/id_choices.py:63\nmsgid \"Jambi\"\nmsgstr \"Jambi\"\n\n#: id/id_choices.py:23\nmsgid \"Jawa Barat\"\nmsgstr \"Jawa Barat\"\n\n#: id/id_choices.py:24\nmsgid \"Jawa Tengah\"\nmsgstr \"Jawa Tengah\"\n\n#: id/id_choices.py:25\nmsgid \"Jawa Timur\"\nmsgstr \"Jawa Timur\"\n\n#: id/id_choices.py:26 id/id_choices.py:94\nmsgid \"Kalimantan Barat\"\nmsgstr \"Kalimantan Barat\"\n\n#: id/id_choices.py:27 id/id_choices.py:72\nmsgid \"Kalimantan Selatan\"\nmsgstr \"Kalimantan Selatan\"\n\n#: id/id_choices.py:28 id/id_choices.py:95\nmsgid \"Kalimantan Tengah\"\nmsgstr \"Kalimantan Tengah\"\n\n#: id/id_choices.py:29 id/id_choices.py:96\nmsgid \"Kalimantan Timur\"\nmsgstr \"Kalimantan Timur\"\n\n#: id/id_choices.py:30\nmsgid \"Kepulauan Bangka-Belitung\"\nmsgstr \"Kepulauan Bangka-Belitung\"\n\n#: id/id_choices.py:31 id/id_choices.py:68\nmsgid \"Kepulauan Riau\"\nmsgstr \"Kepulauan Riau\"\n\n#: id/id_choices.py:32 id/id_choices.py:61\nmsgid \"Lampung\"\nmsgstr \"Lampung\"\n\n#: id/id_choices.py:33 id/id_choices.py:76\nmsgid \"Maluku\"\nmsgstr \"Maluku\"\n\n#: id/id_choices.py:34 id/id_choices.py:77\nmsgid \"Maluku Utara\"\nmsgstr \"Maluku Utara\"\n\n#: id/id_choices.py:35\nmsgid \"Nusa Tenggara Barat\"\nmsgstr \"Nusa Tenggara Barat\"\n\n#: id/id_choices.py:36\nmsgid \"Nusa Tenggara Timur\"\nmsgstr \"Nusa Tenggara Timur\"\n\n#: id/id_choices.py:37\nmsgid \"Papua\"\nmsgstr \"Papua\"\n\n#: id/id_choices.py:38\nmsgid \"Papua Barat\"\nmsgstr \"Papua Barat\"\n\n#: id/id_choices.py:39 id/id_choices.py:66\nmsgid \"Riau\"\nmsgstr \"Riau\"\n\n#: id/id_choices.py:40 id/id_choices.py:74\nmsgid \"Sulawesi Barat\"\nmsgstr \"Sulawesi Barat\"\n\n#: id/id_choices.py:41 id/id_choices.py:75\nmsgid \"Sulawesi Selatan\"\nmsgstr \"Sulawesi Selatan\"\n\n#: id/id_choices.py:42 id/id_choices.py:82\nmsgid \"Sulawesi Tengah\"\nmsgstr \"Sulawesi Tengah\"\n\n#: id/id_choices.py:43 id/id_choices.py:85\nmsgid \"Sulawesi Tenggara\"\nmsgstr \"Sulawesi Tenggara\"\n\n#: id/id_choices.py:44\nmsgid \"Sulawesi Utara\"\nmsgstr \"Sulawesi Utara\"\n\n#: id/id_choices.py:45 id/id_choices.py:58\nmsgid \"Sumatera Barat\"\nmsgstr \"Sumatera Barat\"\n\n#: id/id_choices.py:46 id/id_choices.py:62\nmsgid \"Sumatera Selatan\"\nmsgstr \"Sumatera Selatan\"\n\n#: id/id_choices.py:47 id/id_choices.py:64\nmsgid \"Sumatera Utara\"\nmsgstr \"Sumatera Utara\"\n\n#: id/id_choices.py:52\nmsgid \"Magelang\"\nmsgstr \"Magelang\"\n\n#: id/id_choices.py:54\nmsgid \"Surakarta - Solo\"\nmsgstr \"Surakarta - Solo\"\n\n#: id/id_choices.py:55\nmsgid \"Madiun\"\nmsgstr \"Madiun\"\n\n#: id/id_choices.py:56\nmsgid \"Kediri\"\nmsgstr \"Kediri\"\n\n#: id/id_choices.py:59\nmsgid \"Tapanuli\"\nmsgstr \"Tapanuli\"\n\n#: id/id_choices.py:65\nmsgid \"Nanggroe Aceh Darussalam\"\nmsgstr \"Nanggroe Aceh Darussalam\"\n\n#: id/id_choices.py:67\nmsgid \"Kepulauan Bangka Belitung\"\nmsgstr \"Kepulauan Bangka Belitung\"\n\n#: id/id_choices.py:69\nmsgid \"Corps Consulate\"\nmsgstr \"Corps Consulate\"\n\n#: id/id_choices.py:70\nmsgid \"Corps Diplomatic\"\nmsgstr \"Corps Diplomatic\"\n\n#: id/id_choices.py:71\nmsgid \"Bandung\"\nmsgstr \"Bandung\"\n\n#: id/id_choices.py:73\nmsgid \"Sulawesi Utara Daratan\"\nmsgstr \"Sulawesi Utara Daratan\"\n\n#: id/id_choices.py:78\nmsgid \"NTT - Timor\"\nmsgstr \"NTT - Timor\"\n\n#: id/id_choices.py:80\nmsgid \"Sulawesi Utara Kepulauan\"\nmsgstr \"Sulawesi Utara Kepulauan\"\n\n#: id/id_choices.py:83\nmsgid \"NTB - Lombok\"\nmsgstr \"NTB - Lombok\"\n\n#: id/id_choices.py:84\nmsgid \"Papua dan Papua Barat\"\nmsgstr \"Papua dan Papua Barat\"\n\n#: id/id_choices.py:86\nmsgid \"Cirebon\"\nmsgstr \"Cirebon\"\n\n#: id/id_choices.py:87\nmsgid \"NTB - Sumbawa\"\nmsgstr \"NTB - Sumbawa\"\n\n#: id/id_choices.py:88\nmsgid \"NTT - Flores\"\nmsgstr \"NTT - Flores\"\n\n#: id/id_choices.py:89\nmsgid \"NTT - Sumba\"\nmsgstr \"NTT - Sumba\"\n\n#: id/id_choices.py:90\nmsgid \"Bogor\"\nmsgstr \"Bogor\"\n\n#: id/id_choices.py:91\nmsgid \"Pekalongan\"\nmsgstr \"Pekalongan\"\n\n#: id/id_choices.py:92\nmsgid \"Semarang\"\nmsgstr \"Semarang\"\n\n#: id/id_choices.py:93\nmsgid \"Pati\"\nmsgstr \"Pati\"\n\n#: id/id_choices.py:97\nmsgid \"Surabaya\"\nmsgstr \"Surabaya\"\n\n#: id/id_choices.py:98\nmsgid \"Madura\"\nmsgstr \"Madura\"\n\n#: id/id_choices.py:99\nmsgid \"Malang\"\nmsgstr \"Malang\"\n\n#: id/id_choices.py:100\nmsgid \"Jember\"\nmsgstr \"Jember\"\n\n#: id/id_choices.py:101\nmsgid \"Banyumas\"\nmsgstr \"Banyumas\"\n\n#: id/id_choices.py:102\nmsgid \"Federal Government\"\nmsgstr \"Federal Government\"\n\n#: id/id_choices.py:103\nmsgid \"Bojonegoro\"\nmsgstr \"Bojonegoro\"\n\n#: id/id_choices.py:104\nmsgid \"Purwakarta\"\nmsgstr \"Purwakarta\"\n\n#: id/id_choices.py:105\nmsgid \"Sidoarjo\"\nmsgstr \"Sidoarjo\"\n\n#: id/id_choices.py:106\nmsgid \"Garut\"\nmsgstr \"Garut\"\n\n#: ie/ie_counties.py:8\nmsgid \"Antrim\"\nmsgstr \"Antrim\"\n\n#: ie/ie_counties.py:9\nmsgid \"Armagh\"\nmsgstr \"Armagh\"\n\n#: ie/ie_counties.py:10\nmsgid \"Carlow\"\nmsgstr \"Carlow\"\n\n#: ie/ie_counties.py:11\nmsgid \"Cavan\"\nmsgstr \"Cavan\"\n\n#: ie/ie_counties.py:12\nmsgid \"Clare\"\nmsgstr \"Clare\"\n\n#: ie/ie_counties.py:13\nmsgid \"Cork\"\nmsgstr \"Cork\"\n\n#: ie/ie_counties.py:14\nmsgid \"Derry\"\nmsgstr \"Derry\"\n\n#: ie/ie_counties.py:15\nmsgid \"Donegal\"\nmsgstr \"Donegal\"\n\n#: ie/ie_counties.py:16\nmsgid \"Down\"\nmsgstr \"Down\"\n\n#: ie/ie_counties.py:17\nmsgid \"Dublin\"\nmsgstr \"Dublin\"\n\n#: ie/ie_counties.py:18\nmsgid \"Fermanagh\"\nmsgstr \"Fermanagh\"\n\n#: ie/ie_counties.py:19\nmsgid \"Galway\"\nmsgstr \"Galway\"\n\n#: ie/ie_counties.py:20\nmsgid \"Kerry\"\nmsgstr \"Kerry\"\n\n#: ie/ie_counties.py:21\nmsgid \"Kildare\"\nmsgstr \"Kildare\"\n\n#: ie/ie_counties.py:22\nmsgid \"Kilkenny\"\nmsgstr \"Kilkenny\"\n\n#: ie/ie_counties.py:23\nmsgid \"Laois\"\nmsgstr \"Laois\"\n\n#: ie/ie_counties.py:24\nmsgid \"Leitrim\"\nmsgstr \"Leitrim\"\n\n#: ie/ie_counties.py:25\nmsgid \"Limerick\"\nmsgstr \"Limerick\"\n\n#: ie/ie_counties.py:26\nmsgid \"Longford\"\nmsgstr \"Longford\"\n\n#: ie/ie_counties.py:27\nmsgid \"Louth\"\nmsgstr \"Louth\"\n\n#: ie/ie_counties.py:28\nmsgid \"Mayo\"\nmsgstr \"Mayo\"\n\n#: ie/ie_counties.py:29\nmsgid \"Meath\"\nmsgstr \"Meath\"\n\n#: ie/ie_counties.py:30\nmsgid \"Monaghan\"\nmsgstr \"Monaghan\"\n\n#: ie/ie_counties.py:31\nmsgid \"Offaly\"\nmsgstr \"Offaly\"\n\n#: ie/ie_counties.py:32\nmsgid \"Roscommon\"\nmsgstr \"Roscommon\"\n\n#: ie/ie_counties.py:33\nmsgid \"Sligo\"\nmsgstr \"Sligo\"\n\n#: ie/ie_counties.py:34\nmsgid \"Tipperary\"\nmsgstr \"Tipperary\"\n\n#: ie/ie_counties.py:35\nmsgid \"Tyrone\"\nmsgstr \"Tyrone\"\n\n#: ie/ie_counties.py:36\nmsgid \"Waterford\"\nmsgstr \"Waterford\"\n\n#: ie/ie_counties.py:37\nmsgid \"Westmeath\"\nmsgstr \"Westmeath\"\n\n#: ie/ie_counties.py:38\nmsgid \"Wexford\"\nmsgstr \"Wexford\"\n\n#: ie/ie_counties.py:39\nmsgid \"Wicklow\"\nmsgstr \"Wicklow\"\n\n#: il/forms.py:32\nmsgid \"Enter a postal code in the format XXXXX\"\nmsgstr \"Enter a postal code in the format XXXXX\"\n\n#: il/forms.py:51\nmsgid \"Enter a valid ID number.\"\nmsgstr \"Enter a valid ID number.\"\n\n#: in_/forms.py:41\nmsgid \"Enter a zip code in the format XXXXXX or XXX XXX.\"\nmsgstr \"Enter a zip code in the format XXXXXX or XXX XXX.\"\n\n#: in_/forms.py:64\nmsgid \"Enter an Indian state or territory.\"\nmsgstr \"Enter an Indian state or territory.\"\n\n#: in_/forms.py:103\nmsgid \"Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.\"\nmsgstr \"Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.\"\n\n#: is_/forms.py:22\nmsgid \"\"\n\"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.\"\nmsgstr \"\"\n\"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.\"\n\n#: is_/forms.py:23\nmsgid \"The Icelandic identification number is not valid.\"\nmsgstr \"The Icelandic identification number is not valid.\"\n\n#: it/forms.py:21\nmsgid \"Enter a valid zip code.\"\nmsgstr \"Enter a valid zip code.\"\n\n#: it/forms.py:48\nmsgid \"Enter a valid Social Security number.\"\nmsgstr \"Enter a valid Social Security number.\"\n\n#: it/forms.py:73\nmsgid \"Enter a valid VAT number.\"\nmsgstr \"Enter a valid VAT number.\"\n\n#: jp/forms.py:19\nmsgid \"Enter a postal code in the format XXXXXXX or XXX-XXXX.\"\nmsgstr \"Enter a postal code in the format XXXXXXX or XXX-XXXX.\"\n\n#: jp/jp_prefectures.py:4\nmsgid \"Hokkaido\"\nmsgstr \"Hokkaido\"\n\n#: jp/jp_prefectures.py:5\nmsgid \"Aomori\"\nmsgstr \"Aomori\"\n\n#: jp/jp_prefectures.py:6\nmsgid \"Iwate\"\nmsgstr \"Iwate\"\n\n#: jp/jp_prefectures.py:7\nmsgid \"Miyagi\"\nmsgstr \"Miyagi\"\n\n#: jp/jp_prefectures.py:8\nmsgid \"Akita\"\nmsgstr \"Akita\"\n\n#: jp/jp_prefectures.py:9\nmsgid \"Yamagata\"\nmsgstr \"Yamagata\"\n\n#: jp/jp_prefectures.py:10\nmsgid \"Fukushima\"\nmsgstr \"Fukushima\"\n\n#: jp/jp_prefectures.py:11\nmsgid \"Ibaraki\"\nmsgstr \"Ibaraki\"\n\n#: jp/jp_prefectures.py:12\nmsgid \"Tochigi\"\nmsgstr \"Tochigi\"\n\n#: jp/jp_prefectures.py:13\nmsgid \"Gunma\"\nmsgstr \"Gunma\"\n\n#: jp/jp_prefectures.py:14\nmsgid \"Saitama\"\nmsgstr \"Saitama\"\n\n#: jp/jp_prefectures.py:15\nmsgid \"Chiba\"\nmsgstr \"Chiba\"\n\n#: jp/jp_prefectures.py:16\nmsgid \"Tokyo\"\nmsgstr \"Tokyo\"\n\n#: jp/jp_prefectures.py:17\nmsgid \"Kanagawa\"\nmsgstr \"Kanagawa\"\n\n#: jp/jp_prefectures.py:18\nmsgid \"Yamanashi\"\nmsgstr \"Yamanashi\"\n\n#: jp/jp_prefectures.py:19\nmsgid \"Nagano\"\nmsgstr \"Nagano\"\n\n#: jp/jp_prefectures.py:20\nmsgid \"Niigata\"\nmsgstr \"Niigata\"\n\n#: jp/jp_prefectures.py:21\nmsgid \"Toyama\"\nmsgstr \"Toyama\"\n\n#: jp/jp_prefectures.py:22\nmsgid \"Ishikawa\"\nmsgstr \"Ishikawa\"\n\n#: jp/jp_prefectures.py:23\nmsgid \"Fukui\"\nmsgstr \"Fukui\"\n\n#: jp/jp_prefectures.py:24\nmsgid \"Gifu\"\nmsgstr \"Gifu\"\n\n#: jp/jp_prefectures.py:25\nmsgid \"Shizuoka\"\nmsgstr \"Shizuoka\"\n\n#: jp/jp_prefectures.py:26\nmsgid \"Aichi\"\nmsgstr \"Aichi\"\n\n#: jp/jp_prefectures.py:27\nmsgid \"Mie\"\nmsgstr \"Mie\"\n\n#: jp/jp_prefectures.py:28\nmsgid \"Shiga\"\nmsgstr \"Shiga\"\n\n#: jp/jp_prefectures.py:29\nmsgid \"Kyoto\"\nmsgstr \"Kyoto\"\n\n#: jp/jp_prefectures.py:30\nmsgid \"Osaka\"\nmsgstr \"Osaka\"\n\n#: jp/jp_prefectures.py:31\nmsgid \"Hyogo\"\nmsgstr \"Hyogo\"\n\n#: jp/jp_prefectures.py:32\nmsgid \"Nara\"\nmsgstr \"Nara\"\n\n#: jp/jp_prefectures.py:33\nmsgid \"Wakayama\"\nmsgstr \"Wakayama\"\n\n#: jp/jp_prefectures.py:34\nmsgid \"Tottori\"\nmsgstr \"Tottori\"\n\n#: jp/jp_prefectures.py:35\nmsgid \"Shimane\"\nmsgstr \"Shimane\"\n\n#: jp/jp_prefectures.py:36\nmsgid \"Okayama\"\nmsgstr \"Okayama\"\n\n#: jp/jp_prefectures.py:37\nmsgid \"Hiroshima\"\nmsgstr \"Hiroshima\"\n\n#: jp/jp_prefectures.py:38\nmsgid \"Yamaguchi\"\nmsgstr \"Yamaguchi\"\n\n#: jp/jp_prefectures.py:39\nmsgid \"Tokushima\"\nmsgstr \"Tokushima\"\n\n#: jp/jp_prefectures.py:40\nmsgid \"Kagawa\"\nmsgstr \"Kagawa\"\n\n#: jp/jp_prefectures.py:41\nmsgid \"Ehime\"\nmsgstr \"Ehime\"\n\n#: jp/jp_prefectures.py:42\nmsgid \"Kochi\"\nmsgstr \"Kochi\"\n\n#: jp/jp_prefectures.py:43\nmsgid \"Fukuoka\"\nmsgstr \"Fukuoka\"\n\n#: jp/jp_prefectures.py:44\nmsgid \"Saga\"\nmsgstr \"Saga\"\n\n#: jp/jp_prefectures.py:45\nmsgid \"Nagasaki\"\nmsgstr \"Nagasaki\"\n\n#: jp/jp_prefectures.py:46\nmsgid \"Kumamoto\"\nmsgstr \"Kumamoto\"\n\n#: jp/jp_prefectures.py:47\nmsgid \"Oita\"\nmsgstr \"Oita\"\n\n#: jp/jp_prefectures.py:48\nmsgid \"Miyazaki\"\nmsgstr \"Miyazaki\"\n\n#: jp/jp_prefectures.py:49\nmsgid \"Kagoshima\"\nmsgstr \"Kagoshima\"\n\n#: jp/jp_prefectures.py:50\nmsgid \"Okinawa\"\nmsgstr \"Okinawa\"\n\n#: kw/forms.py:27\nmsgid \"Enter a valid Kuwaiti Civil ID number\"\nmsgstr \"Enter a valid Kuwaiti Civil ID number\"\n\n#: mk/forms.py:18\nmsgid \"\"\n\"Identity card numbers must contain either 4 to 7 digits or an uppercase \"\n\"letter and 7 digits.\"\nmsgstr \"\"\n\"Identity card numbers must contain either 4 to 7 digits or an uppercase \"\n\"letter and 7 digits.\"\n\n#: mk/forms.py:57 si/forms.py:24\nmsgid \"This field should contain exactly 13 digits.\"\nmsgstr \"This field should contain exactly 13 digits.\"\n\n#: mk/forms.py:58\nmsgid \"The first 7 digits of the UMCN must represent a valid past date.\"\nmsgstr \"The first 7 digits of the UMCN must represent a valid past date.\"\n\n#: mk/forms.py:59\nmsgid \"The UMCN is not valid.\"\nmsgstr \"The UMCN is not valid.\"\n\n#: mk/mk_choices.py:10\nmsgid \"Aerodrom\"\nmsgstr \"Aerodrom\"\n\n#: mk/mk_choices.py:11\nmsgid \"Aračinovo\"\nmsgstr \"Aračinovo\"\n\n#: mk/mk_choices.py:12\nmsgid \"Berovo\"\nmsgstr \"Berovo\"\n\n#: mk/mk_choices.py:13\nmsgid \"Bitola\"\nmsgstr \"Bitola\"\n\n#: mk/mk_choices.py:14\nmsgid \"Bogdanci\"\nmsgstr \"Bogdanci\"\n\n#: mk/mk_choices.py:15\nmsgid \"Bogovinje\"\nmsgstr \"Bogovinje\"\n\n#: mk/mk_choices.py:16\nmsgid \"Bosilovo\"\nmsgstr \"Bosilovo\"\n\n#: mk/mk_choices.py:17\nmsgid \"Brvenica\"\nmsgstr \"Brvenica\"\n\n#: mk/mk_choices.py:18\nmsgid \"Butel\"\nmsgstr \"Butel\"\n\n#: mk/mk_choices.py:19\nmsgid \"Valandovo\"\nmsgstr \"Valandovo\"\n\n#: mk/mk_choices.py:20\nmsgid \"Vasilevo\"\nmsgstr \"Vasilevo\"\n\n#: mk/mk_choices.py:21\nmsgid \"Vevčani\"\nmsgstr \"Vevčani\"\n\n#: mk/mk_choices.py:22\nmsgid \"Veles\"\nmsgstr \"Veles\"\n\n#: mk/mk_choices.py:23\nmsgid \"Vinica\"\nmsgstr \"Vinica\"\n\n#: mk/mk_choices.py:24\nmsgid \"Vraneštica\"\nmsgstr \"Vraneštica\"\n\n#: mk/mk_choices.py:25\nmsgid \"Vrapčište\"\nmsgstr \"Vrapčište\"\n\n#: mk/mk_choices.py:26\nmsgid \"Gazi Baba\"\nmsgstr \"Gazi Baba\"\n\n#: mk/mk_choices.py:27\nmsgid \"Gevgelija\"\nmsgstr \"Gevgelija\"\n\n#: mk/mk_choices.py:28\nmsgid \"Gostivar\"\nmsgstr \"Gostivar\"\n\n#: mk/mk_choices.py:29\nmsgid \"Gradsko\"\nmsgstr \"Gradsko\"\n\n#: mk/mk_choices.py:30\nmsgid \"Debar\"\nmsgstr \"Debar\"\n\n#: mk/mk_choices.py:31\nmsgid \"Debarca\"\nmsgstr \"Debarca\"\n\n#: mk/mk_choices.py:32\nmsgid \"Delčevo\"\nmsgstr \"Delčevo\"\n\n#: mk/mk_choices.py:33\nmsgid \"Demir Kapija\"\nmsgstr \"Demir Kapija\"\n\n#: mk/mk_choices.py:34\nmsgid \"Demir Hisar\"\nmsgstr \"Demir Hisar\"\n\n#: mk/mk_choices.py:35\nmsgid \"Dolneni\"\nmsgstr \"Dolneni\"\n\n#: mk/mk_choices.py:36\nmsgid \"Drugovo\"\nmsgstr \"Drugovo\"\n\n#: mk/mk_choices.py:37\nmsgid \"Gjorče Petrov\"\nmsgstr \"Gjorče Petrov\"\n\n#: mk/mk_choices.py:38\nmsgid \"Želino\"\nmsgstr \"Želino\"\n\n#: mk/mk_choices.py:39\nmsgid \"Zajas\"\nmsgstr \"Zajas\"\n\n#: mk/mk_choices.py:40\nmsgid \"Zelenikovo\"\nmsgstr \"Zelenikovo\"\n\n#: mk/mk_choices.py:41\nmsgid \"Zrnovci\"\nmsgstr \"Zrnovci\"\n\n#: mk/mk_choices.py:42\nmsgid \"Ilinden\"\nmsgstr \"Ilinden\"\n\n#: mk/mk_choices.py:43\nmsgid \"Jegunovce\"\nmsgstr \"Jegunovce\"\n\n#: mk/mk_choices.py:44\nmsgid \"Kavadarci\"\nmsgstr \"Kavadarci\"\n\n#: mk/mk_choices.py:45\nmsgid \"Karbinci\"\nmsgstr \"Karbinci\"\n\n#: mk/mk_choices.py:46\nmsgid \"Karpoš\"\nmsgstr \"Karpoš\"\n\n#: mk/mk_choices.py:47\nmsgid \"Kisela Voda\"\nmsgstr \"Kisela Voda\"\n\n#: mk/mk_choices.py:48\nmsgid \"Kičevo\"\nmsgstr \"Kičevo\"\n\n#: mk/mk_choices.py:49\nmsgid \"Konče\"\nmsgstr \"Konče\"\n\n#: mk/mk_choices.py:50\nmsgid \"Koćani\"\nmsgstr \"Koćani\"\n\n#: mk/mk_choices.py:51\nmsgid \"Kratovo\"\nmsgstr \"Kratovo\"\n\n#: mk/mk_choices.py:52\nmsgid \"Kriva Palanka\"\nmsgstr \"Kriva Palanka\"\n\n#: mk/mk_choices.py:53\nmsgid \"Krivogaštani\"\nmsgstr \"Krivogaštani\"\n\n#: mk/mk_choices.py:54\nmsgid \"Kruševo\"\nmsgstr \"Kruševo\"\n\n#: mk/mk_choices.py:55\nmsgid \"Kumanovo\"\nmsgstr \"Kumanovo\"\n\n#: mk/mk_choices.py:56\nmsgid \"Lipkovo\"\nmsgstr \"Lipkovo\"\n\n#: mk/mk_choices.py:57\nmsgid \"Lozovo\"\nmsgstr \"Lozovo\"\n\n#: mk/mk_choices.py:58\nmsgid \"Mavrovo i Rostuša\"\nmsgstr \"Mavrovo i Rostuša\"\n\n#: mk/mk_choices.py:59\nmsgid \"Makedonska Kamenica\"\nmsgstr \"Makedonska Kamenica\"\n\n#: mk/mk_choices.py:60\nmsgid \"Makedonski Brod\"\nmsgstr \"Makedonski Brod\"\n\n#: mk/mk_choices.py:61\nmsgid \"Mogila\"\nmsgstr \"Mogila\"\n\n#: mk/mk_choices.py:62\nmsgid \"Negotino\"\nmsgstr \"Negotino\"\n\n#: mk/mk_choices.py:63\nmsgid \"Novaci\"\nmsgstr \"Novaci\"\n\n#: mk/mk_choices.py:64\nmsgid \"Novo Selo\"\nmsgstr \"Novo Selo\"\n\n#: mk/mk_choices.py:65\nmsgid \"Oslomej\"\nmsgstr \"Oslomej\"\n\n#: mk/mk_choices.py:66\nmsgid \"Ohrid\"\nmsgstr \"Ohrid\"\n\n#: mk/mk_choices.py:67\nmsgid \"Petrovec\"\nmsgstr \"Petrovec\"\n\n#: mk/mk_choices.py:68\nmsgid \"Pehčevo\"\nmsgstr \"Pehčevo\"\n\n#: mk/mk_choices.py:69\nmsgid \"Plasnica\"\nmsgstr \"Plasnica\"\n\n#: mk/mk_choices.py:70\nmsgid \"Prilep\"\nmsgstr \"Prilep\"\n\n#: mk/mk_choices.py:71\nmsgid \"Probištip\"\nmsgstr \"Probištip\"\n\n#: mk/mk_choices.py:72\nmsgid \"Radoviš\"\nmsgstr \"Radoviš\"\n\n#: mk/mk_choices.py:73\nmsgid \"Rankovce\"\nmsgstr \"Rankovce\"\n\n#: mk/mk_choices.py:74\nmsgid \"Resen\"\nmsgstr \"Resen\"\n\n#: mk/mk_choices.py:75\nmsgid \"Rosoman\"\nmsgstr \"Rosoman\"\n\n#: mk/mk_choices.py:76\nmsgid \"Saraj\"\nmsgstr \"Saraj\"\n\n#: mk/mk_choices.py:77\nmsgid \"Sveti Nikole\"\nmsgstr \"Sveti Nikole\"\n\n#: mk/mk_choices.py:78\nmsgid \"Sopište\"\nmsgstr \"Sopište\"\n\n#: mk/mk_choices.py:79\nmsgid \"Star Dojran\"\nmsgstr \"Star Dojran\"\n\n#: mk/mk_choices.py:80\nmsgid \"Staro Nagoričane\"\nmsgstr \"Staro Nagoričane\"\n\n#: mk/mk_choices.py:81\nmsgid \"Struga\"\nmsgstr \"Struga\"\n\n#: mk/mk_choices.py:82\nmsgid \"Strumica\"\nmsgstr \"Strumica\"\n\n#: mk/mk_choices.py:83\nmsgid \"Studeničani\"\nmsgstr \"Studeničani\"\n\n#: mk/mk_choices.py:84\nmsgid \"Tearce\"\nmsgstr \"Tearce\"\n\n#: mk/mk_choices.py:85\nmsgid \"Tetovo\"\nmsgstr \"Tetovo\"\n\n#: mk/mk_choices.py:86\nmsgid \"Centar\"\nmsgstr \"Centar\"\n\n#: mk/mk_choices.py:87\nmsgid \"Centar-Župa\"\nmsgstr \"Centar-Župa\"\n\n#: mk/mk_choices.py:88\nmsgid \"Čair\"\nmsgstr \"Čair\"\n\n#: mk/mk_choices.py:89\nmsgid \"Čaška\"\nmsgstr \"Čaška\"\n\n#: mk/mk_choices.py:90\nmsgid \"Češinovo-Obleševo\"\nmsgstr \"Češinovo-Obleševo\"\n\n#: mk/mk_choices.py:91\nmsgid \"Čučer-Sandevo\"\nmsgstr \"Čučer-Sandevo\"\n\n#: mk/mk_choices.py:92\nmsgid \"Štip\"\nmsgstr \"Štip\"\n\n#: mk/mk_choices.py:93\nmsgid \"Šuto Orizari\"\nmsgstr \"Šuto Orizari\"\n\n#: mk/models.py:11\nmsgid \"Macedonian identity card number\"\nmsgstr \"Macedonian identity card number\"\n\n#: mk/models.py:25\nmsgid \"A Macedonian municipality (2 character code)\"\nmsgstr \"A Macedonian municipality (2 character code)\"\n\n#: mk/models.py:35\nmsgid \"Unique master citizen number (13 digits)\"\nmsgstr \"Unique master citizen number (13 digits)\"\n\n#: mx/forms.py:67\nmsgid \"Enter a valid zip code in the format XXXXX.\"\nmsgstr \"Enter a valid zip code in the format XXXXX.\"\n\n#: mx/forms.py:110\nmsgid \"Enter a valid RFC.\"\nmsgstr \"Enter a valid RFC.\"\n\n#: mx/forms.py:111\nmsgid \"Invalid checksum for RFC.\"\nmsgstr \"Invalid checksum for RFC.\"\n\n#: mx/forms.py:191\nmsgid \"Enter a valid CURP.\"\nmsgstr \"Enter a valid CURP.\"\n\n#: mx/forms.py:192\nmsgid \"Invalid checksum for CURP.\"\nmsgstr \"Invalid checksum for CURP.\"\n\n#: mx/models.py:14\nmsgid \"Mexico state (three uppercase letters)\"\nmsgstr \"Mexico state (three uppercase letters)\"\n\n#: mx/models.py:27\nmsgid \"Mexico zip code\"\nmsgstr \"Mexico zip code\"\n\n#: mx/models.py:44\nmsgid \"Mexican RFC\"\nmsgstr \"Mexican RFC\"\n\n#: mx/models.py:61\nmsgid \"Mexican CURP\"\nmsgstr \"Mexican CURP\"\n\n#: mx/mx_states.py:14\nmsgid \"Aguascalientes\"\nmsgstr \"Aguascalientes\"\n\n#: mx/mx_states.py:15\nmsgid \"Baja California\"\nmsgstr \"Baja California\"\n\n#: mx/mx_states.py:16\nmsgid \"Baja California Sur\"\nmsgstr \"Baja California Sur\"\n\n#: mx/mx_states.py:17\nmsgid \"Campeche\"\nmsgstr \"Campeche\"\n\n#: mx/mx_states.py:18\nmsgid \"Chihuahua\"\nmsgstr \"Chihuahua\"\n\n#: mx/mx_states.py:19\nmsgid \"Chiapas\"\nmsgstr \"Chiapas\"\n\n#: mx/mx_states.py:20\nmsgid \"Coahuila\"\nmsgstr \"Coahuila\"\n\n#: mx/mx_states.py:21\nmsgid \"Colima\"\nmsgstr \"Colima\"\n\n#: mx/mx_states.py:22\nmsgid \"Distrito Federal\"\nmsgstr \"Distrito Federal\"\n\n#: mx/mx_states.py:23\nmsgid \"Durango\"\nmsgstr \"Durango\"\n\n#: mx/mx_states.py:24\nmsgid \"Guerrero\"\nmsgstr \"Guerrero\"\n\n#: mx/mx_states.py:25\nmsgid \"Guanajuato\"\nmsgstr \"Guanajuato\"\n\n#: mx/mx_states.py:26\nmsgid \"Hidalgo\"\nmsgstr \"Hidalgo\"\n\n#: mx/mx_states.py:27\nmsgid \"Jalisco\"\nmsgstr \"Jalisco\"\n\n#: mx/mx_states.py:28\nmsgid \"Estado de México\"\nmsgstr \"Estado de México\"\n\n#: mx/mx_states.py:29\nmsgid \"Michoacán\"\nmsgstr \"Michoacán\"\n\n#: mx/mx_states.py:30\nmsgid \"Morelos\"\nmsgstr \"Morelos\"\n\n#: mx/mx_states.py:31\nmsgid \"Nayarit\"\nmsgstr \"Nayarit\"\n\n#: mx/mx_states.py:32\nmsgid \"Nuevo León\"\nmsgstr \"Nuevo León\"\n\n#: mx/mx_states.py:33\nmsgid \"Oaxaca\"\nmsgstr \"Oaxaca\"\n\n#: mx/mx_states.py:34\nmsgid \"Puebla\"\nmsgstr \"Puebla\"\n\n#: mx/mx_states.py:35\nmsgid \"Querétaro\"\nmsgstr \"Querétaro\"\n\n#: mx/mx_states.py:36\nmsgid \"Quintana Roo\"\nmsgstr \"Quintana Roo\"\n\n#: mx/mx_states.py:37\nmsgid \"Sinaloa\"\nmsgstr \"Sinaloa\"\n\n#: mx/mx_states.py:38\nmsgid \"San Luis Potosí\"\nmsgstr \"San Luis Potosí\"\n\n#: mx/mx_states.py:39\nmsgid \"Sonora\"\nmsgstr \"Sonora\"\n\n#: mx/mx_states.py:40\nmsgid \"Tabasco\"\nmsgstr \"Tabasco\"\n\n#: mx/mx_states.py:41\nmsgid \"Tamaulipas\"\nmsgstr \"Tamaulipas\"\n\n#: mx/mx_states.py:42\nmsgid \"Tlaxcala\"\nmsgstr \"Tlaxcala\"\n\n#: mx/mx_states.py:43\nmsgid \"Veracruz\"\nmsgstr \"Veracruz\"\n\n#: mx/mx_states.py:44\nmsgid \"Yucatán\"\nmsgstr \"Yucatán\"\n\n#: mx/mx_states.py:45\nmsgid \"Zacatecas\"\nmsgstr \"Zacatecas\"\n\n#: nl/forms.py:26\nmsgid \"Enter a valid postal code\"\nmsgstr \"Enter a valid postal code\"\n\n#: nl/forms.py:82\nmsgid \"Enter a valid SoFi number\"\nmsgstr \"Enter a valid SoFi number\"\n\n#: nl/nl_provinces.py:4\nmsgid \"Drenthe\"\nmsgstr \"Drenthe\"\n\n#: nl/nl_provinces.py:5\nmsgid \"Flevoland\"\nmsgstr \"Flevoland\"\n\n#: nl/nl_provinces.py:6\nmsgid \"Friesland\"\nmsgstr \"Friesland\"\n\n#: nl/nl_provinces.py:7\nmsgid \"Gelderland\"\nmsgstr \"Gelderland\"\n\n#: nl/nl_provinces.py:8\nmsgid \"Groningen\"\nmsgstr \"Groningen\"\n\n#: nl/nl_provinces.py:10\nmsgid \"Noord-Brabant\"\nmsgstr \"Noord-Brabant\"\n\n#: nl/nl_provinces.py:11\nmsgid \"Noord-Holland\"\nmsgstr \"Noord-Holland\"\n\n#: nl/nl_provinces.py:12\nmsgid \"Overijssel\"\nmsgstr \"Overijssel\"\n\n#: nl/nl_provinces.py:13\nmsgid \"Utrecht\"\nmsgstr \"Utrecht\"\n\n#: nl/nl_provinces.py:14\nmsgid \"Zeeland\"\nmsgstr \"Zeeland\"\n\n#: nl/nl_provinces.py:15\nmsgid \"Zuid-Holland\"\nmsgstr \"Zuid-Holland\"\n\n#: no/forms.py:39\nmsgid \"Enter a valid Norwegian social security number.\"\nmsgstr \"Enter a valid Norwegian social security number.\"\n\n#: pe/forms.py:28\nmsgid \"This field requires 8 digits.\"\nmsgstr \"This field requires 8 digits.\"\n\n#: pe/forms.py:56\nmsgid \"This field requires 11 digits.\"\nmsgstr \"This field requires 11 digits.\"\n\n#: pl/forms.py:42\nmsgid \"National Identification Number consists of 11 digits.\"\nmsgstr \"National Identification Number consists of 11 digits.\"\n\n#: pl/forms.py:43\nmsgid \"Wrong checksum for the National Identification Number.\"\nmsgstr \"Wrong checksum for the National Identification Number.\"\n\n#: pl/forms.py:79\nmsgid \"National ID Card Number consists of 3 letters and 6 digits.\"\nmsgstr \"National ID Card Number consists of 3 letters and 6 digits.\"\n\n#: pl/forms.py:80\nmsgid \"Wrong checksum for the National ID Card Number.\"\nmsgstr \"Wrong checksum for the National ID Card Number.\"\n\n#: pl/forms.py:131\nmsgid \"\"\n\"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or \"\n\"XXXXXXXXXX.\"\nmsgstr \"\"\n\"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or \"\n\"XXXXXXXXXX.\"\n\n#: pl/forms.py:132\nmsgid \"Wrong checksum for the Tax Number (NIP).\"\nmsgstr \"Wrong checksum for the Tax Number (NIP).\"\n\n#: pl/forms.py:171\nmsgid \"National Business Register Number (REGON) consists of 9 or 14 digits.\"\nmsgstr \"National Business Register Number (REGON) consists of 9 or 14 digits.\"\n\n#: pl/forms.py:172\nmsgid \"Wrong checksum for the National Business Register Number (REGON).\"\nmsgstr \"Wrong checksum for the National Business Register Number (REGON).\"\n\n#: pl/forms.py:212\nmsgid \"Enter a postal code in the format XX-XXX.\"\nmsgstr \"Enter a postal code in the format XX-XXX.\"\n\n#: pl/pl_voivodeships.py:8\nmsgid \"Lower Silesia\"\nmsgstr \"Lower Silesia\"\n\n#: pl/pl_voivodeships.py:9\nmsgid \"Kuyavia-Pomerania\"\nmsgstr \"Kuyavia-Pomerania\"\n\n#: pl/pl_voivodeships.py:10\nmsgid \"Lublin\"\nmsgstr \"Lublin\"\n\n#: pl/pl_voivodeships.py:11\nmsgid \"Lubusz\"\nmsgstr \"Lubusz\"\n\n#: pl/pl_voivodeships.py:12\nmsgid \"Lodz\"\nmsgstr \"Lodz\"\n\n#: pl/pl_voivodeships.py:13\nmsgid \"Lesser Poland\"\nmsgstr \"Lesser Poland\"\n\n#: pl/pl_voivodeships.py:14\nmsgid \"Masovia\"\nmsgstr \"Masovia\"\n\n#: pl/pl_voivodeships.py:15\nmsgid \"Opole\"\nmsgstr \"Opole\"\n\n#: pl/pl_voivodeships.py:16\nmsgid \"Subcarpatia\"\nmsgstr \"Subcarpatia\"\n\n#: pl/pl_voivodeships.py:17\nmsgid \"Podlasie\"\nmsgstr \"Podlasie\"\n\n#: pl/pl_voivodeships.py:18\nmsgid \"Pomerania\"\nmsgstr \"Pomerania\"\n\n#: pl/pl_voivodeships.py:19\nmsgid \"Silesia\"\nmsgstr \"Silesia\"\n\n#: pl/pl_voivodeships.py:20\nmsgid \"Swietokrzyskie\"\nmsgstr \"Swietokrzyskie\"\n\n#: pl/pl_voivodeships.py:21\nmsgid \"Warmia-Masuria\"\nmsgstr \"Warmia-Masuria\"\n\n#: pl/pl_voivodeships.py:22\nmsgid \"Greater Poland\"\nmsgstr \"Greater Poland\"\n\n#: pl/pl_voivodeships.py:23\nmsgid \"West Pomerania\"\nmsgstr \"West Pomerania\"\n\n#: pt/forms.py:19\nmsgid \"Enter a zip code in the format XXXX-XXX.\"\nmsgstr \"Enter a zip code in the format XXXX-XXX.\"\n\n#: pt/forms.py:39\nmsgid \"Phone numbers must have 9 digits, or start by + or 00.\"\nmsgstr \"Phone numbers must have 9 digits, or start by + or 00.\"\n\n#: ro/forms.py:22\nmsgid \"Enter a valid CIF.\"\nmsgstr \"Enter a valid CIF.\"\n\n#: ro/forms.py:59\nmsgid \"Enter a valid CNP.\"\nmsgstr \"Enter a valid CNP.\"\n\n#: ro/forms.py:143\nmsgid \"Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format\"\nmsgstr \"Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format\"\n\n#: ro/forms.py:175\nmsgid \"Phone numbers must be in XXXX-XXXXXX format.\"\nmsgstr \"Phone numbers must be in XXXX-XXXXXX format.\"\n\n#: ro/forms.py:200\nmsgid \"Enter a valid postal code in the format XXXXXX\"\nmsgstr \"Enter a valid postal code in the format XXXXXX\"\n\n#: ru/forms.py:37\nmsgid \"Enter a postal code in the format XXXXXX.\"\nmsgstr \"Enter a postal code in the format XXXXXX.\"\n\n#: ru/forms.py:50\nmsgid \"Enter a passport number in the format XXXX XXXXXX.\"\nmsgstr \"Enter a passport number in the format XXXX XXXXXX.\"\n\n#: ru/forms.py:63\nmsgid \"Enter a passport number in the format XX XXXXXXX.\"\nmsgstr \"Enter a passport number in the format XX XXXXXXX.\"\n\n#: ru/ru_regions.py:10\nmsgid \"Central Federal County\"\nmsgstr \"Central Federal County\"\n\n#: ru/ru_regions.py:11\nmsgid \"South Federal County\"\nmsgstr \"South Federal County\"\n\n#: ru/ru_regions.py:12\nmsgid \"North-West Federal County\"\nmsgstr \"North-West Federal County\"\n\n#: ru/ru_regions.py:13\nmsgid \"Far-East Federal County\"\nmsgstr \"Far-East Federal County\"\n\n#: ru/ru_regions.py:14\nmsgid \"Siberian Federal County\"\nmsgstr \"Siberian Federal County\"\n\n#: ru/ru_regions.py:15\nmsgid \"Ural Federal County\"\nmsgstr \"Ural Federal County\"\n\n#: ru/ru_regions.py:16\nmsgid \"Privolzhsky Federal County\"\nmsgstr \"Privolzhsky Federal County\"\n\n#: ru/ru_regions.py:17\nmsgid \"North-Caucasian Federal County\"\nmsgstr \"North-Caucasian Federal County\"\n\n#: ru/ru_regions.py:21\nmsgid \"Moskva\"\nmsgstr \"Moskva\"\n\n#: ru/ru_regions.py:22\nmsgid \"Saint-Peterburg\"\nmsgstr \"Saint-Peterburg\"\n\n#: ru/ru_regions.py:23\nmsgid \"Moskovskaya oblast'\"\nmsgstr \"Moskovskaya oblast'\"\n\n#: ru/ru_regions.py:24\nmsgid \"Adygeya, Respublika\"\nmsgstr \"Adygeya, Respublika\"\n\n#: ru/ru_regions.py:25\nmsgid \"Bashkortostan, Respublika\"\nmsgstr \"Bashkortostan, Respublika\"\n\n#: ru/ru_regions.py:26\nmsgid \"Buryatia, Respublika\"\nmsgstr \"Buryatia, Respublika\"\n\n#: ru/ru_regions.py:27\nmsgid \"Altay, Respublika\"\nmsgstr \"Altay, Respublika\"\n\n#: ru/ru_regions.py:28\nmsgid \"Dagestan, Respublika\"\nmsgstr \"Dagestan, Respublika\"\n\n#: ru/ru_regions.py:29\nmsgid \"Ingushskaya Respublika\"\nmsgstr \"Ingushskaya Respublika\"\n\n#: ru/ru_regions.py:30\nmsgid \"Kabardino-Balkarskaya Respublika\"\nmsgstr \"Kabardino-Balkarskaya Respublika\"\n\n#: ru/ru_regions.py:31\nmsgid \"Kalmykia, Respublika\"\nmsgstr \"Kalmykia, Respublika\"\n\n#: ru/ru_regions.py:32\nmsgid \"Karachaevo-Cherkesskaya Respublika\"\nmsgstr \"Karachaevo-Cherkesskaya Respublika\"\n\n#: ru/ru_regions.py:33\nmsgid \"Karelia, Respublika\"\nmsgstr \"Karelia, Respublika\"\n\n#: ru/ru_regions.py:34\nmsgid \"Komi, Respublika\"\nmsgstr \"Komi, Respublika\"\n\n#: ru/ru_regions.py:35\nmsgid \"Mariy Ehl, Respublika\"\nmsgstr \"Mariy Ehl, Respublika\"\n\n#: ru/ru_regions.py:36\nmsgid \"Mordovia, Respublika\"\nmsgstr \"Mordovia, Respublika\"\n\n#: ru/ru_regions.py:37\nmsgid \"Sakha, Respublika (Yakutiya)\"\nmsgstr \"Sakha, Respublika (Yakutiya)\"\n\n#: ru/ru_regions.py:38\nmsgid \"Severnaya Osetia, Respublika (Alania)\"\nmsgstr \"Severnaya Osetia, Respublika (Alania)\"\n\n#: ru/ru_regions.py:39\nmsgid \"Tatarstan, Respublika\"\nmsgstr \"Tatarstan, Respublika\"\n\n#: ru/ru_regions.py:40\nmsgid \"Tyva, Respublika (Tuva)\"\nmsgstr \"Tyva, Respublika (Tuva)\"\n\n#: ru/ru_regions.py:41\nmsgid \"Udmurtskaya Respublika\"\nmsgstr \"Udmurtskaya Respublika\"\n\n#: ru/ru_regions.py:42\nmsgid \"Khakassiya, Respublika\"\nmsgstr \"Khakassiya, Respublika\"\n\n#: ru/ru_regions.py:43\nmsgid \"Chechenskaya Respublika\"\nmsgstr \"Chechenskaya Respublika\"\n\n#: ru/ru_regions.py:44\nmsgid \"Chuvashskaya Respublika\"\nmsgstr \"Chuvashskaya Respublika\"\n\n#: ru/ru_regions.py:45\nmsgid \"Altayskiy Kray\"\nmsgstr \"Altayskiy Kray\"\n\n#: ru/ru_regions.py:46\nmsgid \"Zabaykalskiy Kray\"\nmsgstr \"Zabaykalskiy Kray\"\n\n#: ru/ru_regions.py:47\nmsgid \"Kamchatskiy Kray\"\nmsgstr \"Kamchatskiy Kray\"\n\n#: ru/ru_regions.py:48\nmsgid \"Krasnodarskiy Kray\"\nmsgstr \"Krasnodarskiy Kray\"\n\n#: ru/ru_regions.py:49\nmsgid \"Krasnoyarskiy Kray\"\nmsgstr \"Krasnoyarskiy Kray\"\n\n#: ru/ru_regions.py:50\nmsgid \"Permskiy Kray\"\nmsgstr \"Permskiy Kray\"\n\n#: ru/ru_regions.py:51\nmsgid \"Primorskiy Kray\"\nmsgstr \"Primorskiy Kray\"\n\n#: ru/ru_regions.py:52\nmsgid \"Stavropol'siyy Kray\"\nmsgstr \"Stavropol'siyy Kray\"\n\n#: ru/ru_regions.py:53\nmsgid \"Khabarovskiy Kray\"\nmsgstr \"Khabarovskiy Kray\"\n\n#: ru/ru_regions.py:54\nmsgid \"Amurskaya oblast'\"\nmsgstr \"Amurskaya oblast'\"\n\n#: ru/ru_regions.py:55\nmsgid \"Arkhangel'skaya oblast'\"\nmsgstr \"Arkhangel'skaya oblast'\"\n\n#: ru/ru_regions.py:56\nmsgid \"Astrakhanskaya oblast'\"\nmsgstr \"Astrakhanskaya oblast'\"\n\n#: ru/ru_regions.py:57\nmsgid \"Belgorodskaya oblast'\"\nmsgstr \"Belgorodskaya oblast'\"\n\n#: ru/ru_regions.py:58\nmsgid \"Bryanskaya oblast'\"\nmsgstr \"Bryanskaya oblast'\"\n\n#: ru/ru_regions.py:59\nmsgid \"Vladimirskaya oblast'\"\nmsgstr \"Vladimirskaya oblast'\"\n\n#: ru/ru_regions.py:60\nmsgid \"Volgogradskaya oblast'\"\nmsgstr \"Volgogradskaya oblast'\"\n\n#: ru/ru_regions.py:61\nmsgid \"Vologodskaya oblast'\"\nmsgstr \"Vologodskaya oblast'\"\n\n#: ru/ru_regions.py:62\nmsgid \"Voronezhskaya oblast'\"\nmsgstr \"Voronezhskaya oblast'\"\n\n#: ru/ru_regions.py:63\nmsgid \"Ivanovskaya oblast'\"\nmsgstr \"Ivanovskaya oblast'\"\n\n#: ru/ru_regions.py:64\nmsgid \"Irkutskaya oblast'\"\nmsgstr \"Irkutskaya oblast'\"\n\n#: ru/ru_regions.py:65\nmsgid \"Kaliningradskaya oblast'\"\nmsgstr \"Kaliningradskaya oblast'\"\n\n#: ru/ru_regions.py:66\nmsgid \"Kaluzhskaya oblast'\"\nmsgstr \"Kaluzhskaya oblast'\"\n\n#: ru/ru_regions.py:67\nmsgid \"Kemerovskaya oblast'\"\nmsgstr \"Kemerovskaya oblast'\"\n\n#: ru/ru_regions.py:68\nmsgid \"Kirovskaya oblast'\"\nmsgstr \"Kirovskaya oblast'\"\n\n#: ru/ru_regions.py:69\nmsgid \"Kostromskaya oblast'\"\nmsgstr \"Kostromskaya oblast'\"\n\n#: ru/ru_regions.py:70\nmsgid \"Kurganskaya oblast'\"\nmsgstr \"Kurganskaya oblast'\"\n\n#: ru/ru_regions.py:71\nmsgid \"Kurskaya oblast'\"\nmsgstr \"Kurskaya oblast'\"\n\n#: ru/ru_regions.py:72\nmsgid \"Leningradskaya oblast'\"\nmsgstr \"Leningradskaya oblast'\"\n\n#: ru/ru_regions.py:73\nmsgid \"Lipeckaya oblast'\"\nmsgstr \"Lipeckaya oblast'\"\n\n#: ru/ru_regions.py:74\nmsgid \"Magadanskaya oblast'\"\nmsgstr \"Magadanskaya oblast'\"\n\n#: ru/ru_regions.py:75\nmsgid \"Murmanskaya oblast'\"\nmsgstr \"Murmanskaya oblast'\"\n\n#: ru/ru_regions.py:76\nmsgid \"Nizhegorodskaja oblast'\"\nmsgstr \"Nizhegorodskaja oblast'\"\n\n#: ru/ru_regions.py:77\nmsgid \"Novgorodskaya oblast'\"\nmsgstr \"Novgorodskaya oblast'\"\n\n#: ru/ru_regions.py:78\nmsgid \"Novosibirskaya oblast'\"\nmsgstr \"Novosibirskaya oblast'\"\n\n#: ru/ru_regions.py:79\nmsgid \"Omskaya oblast'\"\nmsgstr \"Omskaya oblast'\"\n\n#: ru/ru_regions.py:80\nmsgid \"Orenburgskaya oblast'\"\nmsgstr \"Orenburgskaya oblast'\"\n\n#: ru/ru_regions.py:81\nmsgid \"Orlovskaya oblast'\"\nmsgstr \"Orlovskaya oblast'\"\n\n#: ru/ru_regions.py:82\nmsgid \"Penzenskaya oblast'\"\nmsgstr \"Penzenskaya oblast'\"\n\n#: ru/ru_regions.py:83\nmsgid \"Pskovskaya oblast'\"\nmsgstr \"Pskovskaya oblast'\"\n\n#: ru/ru_regions.py:84\nmsgid \"Rostovskaya oblast'\"\nmsgstr \"Rostovskaya oblast'\"\n\n#: ru/ru_regions.py:85\nmsgid \"Rjazanskaya oblast'\"\nmsgstr \"Rjazanskaya oblast'\"\n\n#: ru/ru_regions.py:86\nmsgid \"Samarskaya oblast'\"\nmsgstr \"Samarskaya oblast'\"\n\n#: ru/ru_regions.py:87\nmsgid \"Saratovskaya oblast'\"\nmsgstr \"Saratovskaya oblast'\"\n\n#: ru/ru_regions.py:88\nmsgid \"Sakhalinskaya oblast'\"\nmsgstr \"Sakhalinskaya oblast'\"\n\n#: ru/ru_regions.py:89\nmsgid \"Sverdlovskaya oblast'\"\nmsgstr \"Sverdlovskaya oblast'\"\n\n#: ru/ru_regions.py:90\nmsgid \"Smolenskaya oblast'\"\nmsgstr \"Smolenskaya oblast'\"\n\n#: ru/ru_regions.py:91\nmsgid \"Tambovskaya oblast'\"\nmsgstr \"Tambovskaya oblast'\"\n\n#: ru/ru_regions.py:92\nmsgid \"Tverskaya oblast'\"\nmsgstr \"Tverskaya oblast'\"\n\n#: ru/ru_regions.py:93\nmsgid \"Tomskaya oblast'\"\nmsgstr \"Tomskaya oblast'\"\n\n#: ru/ru_regions.py:94\nmsgid \"Tul'skaya oblast'\"\nmsgstr \"Tul'skaya oblast'\"\n\n#: ru/ru_regions.py:95\nmsgid \"Tyumenskaya oblast'\"\nmsgstr \"Tyumenskaya oblast'\"\n\n#: ru/ru_regions.py:96\nmsgid \"Ul'ianovskaya oblast'\"\nmsgstr \"Ul'ianovskaya oblast'\"\n\n#: ru/ru_regions.py:97\nmsgid \"Chelyabinskaya oblast'\"\nmsgstr \"Chelyabinskaya oblast'\"\n\n#: ru/ru_regions.py:98\nmsgid \"Yaroslavskaya oblast'\"\nmsgstr \"Yaroslavskaya oblast'\"\n\n#: ru/ru_regions.py:99\nmsgid \"Evreyskaya avtonomnaja oblast'\"\nmsgstr \"Evreyskaya avtonomnaja oblast'\"\n\n#: ru/ru_regions.py:100\nmsgid \"Neneckiy autonomnyy okrug\"\nmsgstr \"Neneckiy autonomnyy okrug\"\n\n#: ru/ru_regions.py:101\nmsgid \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\nmsgstr \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\n\n#: ru/ru_regions.py:102\nmsgid \"Chukotskiy avtonomnyy okrug\"\nmsgstr \"Chukotskiy avtonomnyy okrug\"\n\n#: ru/ru_regions.py:103\nmsgid \"Yamalo-Neneckiy avtonomnyy okrug\"\nmsgstr \"Yamalo-Neneckiy avtonomnyy okrug\"\n\n#: se/forms.py:54\nmsgid \"Enter a valid Swedish organisation number.\"\nmsgstr \"Enter a valid Swedish organisation number.\"\n\n#: se/forms.py:111\nmsgid \"Enter a valid Swedish personal identity number.\"\nmsgstr \"Enter a valid Swedish personal identity number.\"\n\n#: se/forms.py:112\nmsgid \"Co-ordination numbers are not allowed.\"\nmsgstr \"Co-ordination numbers are not allowed.\"\n\n#: se/forms.py:154\nmsgid \"Enter a Swedish postal code in the format XXXXX.\"\nmsgstr \"Enter a Swedish postal code in the format XXXXX.\"\n\n#: se/se_counties.py:16\nmsgid \"Stockholm\"\nmsgstr \"Stockholm\"\n\n#: se/se_counties.py:17\nmsgid \"Västerbotten\"\nmsgstr \"Västerbotten\"\n\n#: se/se_counties.py:18\nmsgid \"Norrbotten\"\nmsgstr \"Norrbotten\"\n\n#: se/se_counties.py:19\nmsgid \"Uppsala\"\nmsgstr \"Uppsala\"\n\n#: se/se_counties.py:20\nmsgid \"Södermanland\"\nmsgstr \"Södermanland\"\n\n#: se/se_counties.py:21\nmsgid \"Östergötland\"\nmsgstr \"Östergötland\"\n\n#: se/se_counties.py:22\nmsgid \"Jönköping\"\nmsgstr \"Jönköping\"\n\n#: se/se_counties.py:23\nmsgid \"Kronoberg\"\nmsgstr \"Kronoberg\"\n\n#: se/se_counties.py:24\nmsgid \"Kalmar\"\nmsgstr \"Kalmar\"\n\n#: se/se_counties.py:25\nmsgid \"Gotland\"\nmsgstr \"Gotland\"\n\n#: se/se_counties.py:26\nmsgid \"Blekinge\"\nmsgstr \"Blekinge\"\n\n#: se/se_counties.py:27\nmsgid \"Skåne\"\nmsgstr \"Skåne\"\n\n#: se/se_counties.py:28\nmsgid \"Halland\"\nmsgstr \"Halland\"\n\n#: se/se_counties.py:29\nmsgid \"Västra Götaland\"\nmsgstr \"Västra Götaland\"\n\n#: se/se_counties.py:30\nmsgid \"Värmland\"\nmsgstr \"Värmland\"\n\n#: se/se_counties.py:31\nmsgid \"Örebro\"\nmsgstr \"Örebro\"\n\n#: se/se_counties.py:32\nmsgid \"Västmanland\"\nmsgstr \"Västmanland\"\n\n#: se/se_counties.py:33\nmsgid \"Dalarna\"\nmsgstr \"Dalarna\"\n\n#: se/se_counties.py:34\nmsgid \"Gävleborg\"\nmsgstr \"Gävleborg\"\n\n#: se/se_counties.py:35\nmsgid \"Västernorrland\"\nmsgstr \"Västernorrland\"\n\n#: se/se_counties.py:36\nmsgid \"Jämtland\"\nmsgstr \"Jämtland\"\n\n#: si/forms.py:25\nmsgid \"The first 7 digits of the EMSO must represent a valid past date.\"\nmsgstr \"The first 7 digits of the EMSO must represent a valid past date.\"\n\n#: si/forms.py:26\nmsgid \"The EMSO is not valid.\"\nmsgstr \"The EMSO is not valid.\"\n\n#: si/forms.py:86\nmsgid \"Enter a valid tax number in form SIXXXXXXXX\"\nmsgstr \"Enter a valid tax number in form SIXXXXXXXX\"\n\n#: si/forms.py:151\nmsgid \"Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.\"\nmsgstr \"Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.\"\n\n#: sk/sk_districts.py:8\nmsgid \"Banska Bystrica\"\nmsgstr \"Banska Bystrica\"\n\n#: sk/sk_districts.py:9\nmsgid \"Banska Stiavnica\"\nmsgstr \"Banska Stiavnica\"\n\n#: sk/sk_districts.py:10\nmsgid \"Bardejov\"\nmsgstr \"Bardejov\"\n\n#: sk/sk_districts.py:11\nmsgid \"Banovce nad Bebravou\"\nmsgstr \"Banovce nad Bebravou\"\n\n#: sk/sk_districts.py:12\nmsgid \"Brezno\"\nmsgstr \"Brezno\"\n\n#: sk/sk_districts.py:13\nmsgid \"Bratislava I\"\nmsgstr \"Bratislava I\"\n\n#: sk/sk_districts.py:14\nmsgid \"Bratislava II\"\nmsgstr \"Bratislava II\"\n\n#: sk/sk_districts.py:15\nmsgid \"Bratislava III\"\nmsgstr \"Bratislava III\"\n\n#: sk/sk_districts.py:16\nmsgid \"Bratislava IV\"\nmsgstr \"Bratislava IV\"\n\n#: sk/sk_districts.py:17\nmsgid \"Bratislava V\"\nmsgstr \"Bratislava V\"\n\n#: sk/sk_districts.py:18\nmsgid \"Bytca\"\nmsgstr \"Bytca\"\n\n#: sk/sk_districts.py:19\nmsgid \"Cadca\"\nmsgstr \"Cadca\"\n\n#: sk/sk_districts.py:20\nmsgid \"Detva\"\nmsgstr \"Detva\"\n\n#: sk/sk_districts.py:21\nmsgid \"Dolny Kubin\"\nmsgstr \"Dolny Kubin\"\n\n#: sk/sk_districts.py:22\nmsgid \"Dunajska Streda\"\nmsgstr \"Dunajska Streda\"\n\n#: sk/sk_districts.py:23\nmsgid \"Galanta\"\nmsgstr \"Galanta\"\n\n#: sk/sk_districts.py:24\nmsgid \"Gelnica\"\nmsgstr \"Gelnica\"\n\n#: sk/sk_districts.py:25\nmsgid \"Hlohovec\"\nmsgstr \"Hlohovec\"\n\n#: sk/sk_districts.py:26\nmsgid \"Humenne\"\nmsgstr \"Humenne\"\n\n#: sk/sk_districts.py:27\nmsgid \"Ilava\"\nmsgstr \"Ilava\"\n\n#: sk/sk_districts.py:28\nmsgid \"Kezmarok\"\nmsgstr \"Kezmarok\"\n\n#: sk/sk_districts.py:29\nmsgid \"Komarno\"\nmsgstr \"Komarno\"\n\n#: sk/sk_districts.py:30\nmsgid \"Kosice I\"\nmsgstr \"Kosice I\"\n\n#: sk/sk_districts.py:31\nmsgid \"Kosice II\"\nmsgstr \"Kosice II\"\n\n#: sk/sk_districts.py:32\nmsgid \"Kosice III\"\nmsgstr \"Kosice III\"\n\n#: sk/sk_districts.py:33\nmsgid \"Kosice IV\"\nmsgstr \"Kosice IV\"\n\n#: sk/sk_districts.py:34\nmsgid \"Kosice - okolie\"\nmsgstr \"Kosice - okolie\"\n\n#: sk/sk_districts.py:35\nmsgid \"Krupina\"\nmsgstr \"Krupina\"\n\n#: sk/sk_districts.py:36\nmsgid \"Kysucke Nove Mesto\"\nmsgstr \"Kysucke Nove Mesto\"\n\n#: sk/sk_districts.py:37\nmsgid \"Levice\"\nmsgstr \"Levice\"\n\n#: sk/sk_districts.py:38\nmsgid \"Levoca\"\nmsgstr \"Levoca\"\n\n#: sk/sk_districts.py:39\nmsgid \"Liptovsky Mikulas\"\nmsgstr \"Liptovsky Mikulas\"\n\n#: sk/sk_districts.py:40\nmsgid \"Lucenec\"\nmsgstr \"Lucenec\"\n\n#: sk/sk_districts.py:41\nmsgid \"Malacky\"\nmsgstr \"Malacky\"\n\n#: sk/sk_districts.py:42\nmsgid \"Martin\"\nmsgstr \"Martin\"\n\n#: sk/sk_districts.py:43\nmsgid \"Medzilaborce\"\nmsgstr \"Medzilaborce\"\n\n#: sk/sk_districts.py:44\nmsgid \"Michalovce\"\nmsgstr \"Michalovce\"\n\n#: sk/sk_districts.py:45\nmsgid \"Myjava\"\nmsgstr \"Myjava\"\n\n#: sk/sk_districts.py:46\nmsgid \"Namestovo\"\nmsgstr \"Namestovo\"\n\n#: sk/sk_districts.py:47\nmsgid \"Nitra\"\nmsgstr \"Nitra\"\n\n#: sk/sk_districts.py:48\nmsgid \"Nove Mesto nad Vahom\"\nmsgstr \"Nove Mesto nad Vahom\"\n\n#: sk/sk_districts.py:49\nmsgid \"Nove Zamky\"\nmsgstr \"Nove Zamky\"\n\n#: sk/sk_districts.py:50\nmsgid \"Partizanske\"\nmsgstr \"Partizanske\"\n\n#: sk/sk_districts.py:51\nmsgid \"Pezinok\"\nmsgstr \"Pezinok\"\n\n#: sk/sk_districts.py:52\nmsgid \"Piestany\"\nmsgstr \"Piestany\"\n\n#: sk/sk_districts.py:53\nmsgid \"Poltar\"\nmsgstr \"Poltar\"\n\n#: sk/sk_districts.py:54\nmsgid \"Poprad\"\nmsgstr \"Poprad\"\n\n#: sk/sk_districts.py:55\nmsgid \"Povazska Bystrica\"\nmsgstr \"Povazska Bystrica\"\n\n#: sk/sk_districts.py:56\nmsgid \"Presov\"\nmsgstr \"Presov\"\n\n#: sk/sk_districts.py:57\nmsgid \"Prievidza\"\nmsgstr \"Prievidza\"\n\n#: sk/sk_districts.py:58\nmsgid \"Puchov\"\nmsgstr \"Puchov\"\n\n#: sk/sk_districts.py:59\nmsgid \"Revuca\"\nmsgstr \"Revuca\"\n\n#: sk/sk_districts.py:60\nmsgid \"Rimavska Sobota\"\nmsgstr \"Rimavska Sobota\"\n\n#: sk/sk_districts.py:61\nmsgid \"Roznava\"\nmsgstr \"Roznava\"\n\n#: sk/sk_districts.py:62\nmsgid \"Ruzomberok\"\nmsgstr \"Ruzomberok\"\n\n#: sk/sk_districts.py:63\nmsgid \"Sabinov\"\nmsgstr \"Sabinov\"\n\n#: sk/sk_districts.py:64\nmsgid \"Senec\"\nmsgstr \"Senec\"\n\n#: sk/sk_districts.py:65\nmsgid \"Senica\"\nmsgstr \"Senica\"\n\n#: sk/sk_districts.py:66\nmsgid \"Skalica\"\nmsgstr \"Skalica\"\n\n#: sk/sk_districts.py:67\nmsgid \"Snina\"\nmsgstr \"Snina\"\n\n#: sk/sk_districts.py:68\nmsgid \"Sobrance\"\nmsgstr \"Sobrance\"\n\n#: sk/sk_districts.py:69\nmsgid \"Spisska Nova Ves\"\nmsgstr \"Spisska Nova Ves\"\n\n#: sk/sk_districts.py:70\nmsgid \"Stara Lubovna\"\nmsgstr \"Stara Lubovna\"\n\n#: sk/sk_districts.py:71\nmsgid \"Stropkov\"\nmsgstr \"Stropkov\"\n\n#: sk/sk_districts.py:72\nmsgid \"Svidnik\"\nmsgstr \"Svidnik\"\n\n#: sk/sk_districts.py:73\nmsgid \"Sala\"\nmsgstr \"Sala\"\n\n#: sk/sk_districts.py:74\nmsgid \"Topolcany\"\nmsgstr \"Topolcany\"\n\n#: sk/sk_districts.py:75\nmsgid \"Trebisov\"\nmsgstr \"Trebisov\"\n\n#: sk/sk_districts.py:76\nmsgid \"Trencin\"\nmsgstr \"Trencin\"\n\n#: sk/sk_districts.py:77\nmsgid \"Trnava\"\nmsgstr \"Trnava\"\n\n#: sk/sk_districts.py:78\nmsgid \"Turcianske Teplice\"\nmsgstr \"Turcianske Teplice\"\n\n#: sk/sk_districts.py:79\nmsgid \"Tvrdosin\"\nmsgstr \"Tvrdosin\"\n\n#: sk/sk_districts.py:80\nmsgid \"Velky Krtis\"\nmsgstr \"Velky Krtis\"\n\n#: sk/sk_districts.py:81\nmsgid \"Vranov nad Toplou\"\nmsgstr \"Vranov nad Toplou\"\n\n#: sk/sk_districts.py:82\nmsgid \"Zlate Moravce\"\nmsgstr \"Zlate Moravce\"\n\n#: sk/sk_districts.py:83\nmsgid \"Zvolen\"\nmsgstr \"Zvolen\"\n\n#: sk/sk_districts.py:84\nmsgid \"Zarnovica\"\nmsgstr \"Zarnovica\"\n\n#: sk/sk_districts.py:85\nmsgid \"Ziar nad Hronom\"\nmsgstr \"Ziar nad Hronom\"\n\n#: sk/sk_districts.py:86\nmsgid \"Zilina\"\nmsgstr \"Zilina\"\n\n#: sk/sk_regions.py:8\nmsgid \"Banska Bystrica region\"\nmsgstr \"Banska Bystrica region\"\n\n#: sk/sk_regions.py:9\nmsgid \"Bratislava region\"\nmsgstr \"Bratislava region\"\n\n#: sk/sk_regions.py:10\nmsgid \"Kosice region\"\nmsgstr \"Kosice region\"\n\n#: sk/sk_regions.py:11\nmsgid \"Nitra region\"\nmsgstr \"Nitra region\"\n\n#: sk/sk_regions.py:12\nmsgid \"Presov region\"\nmsgstr \"Presov region\"\n\n#: sk/sk_regions.py:13\nmsgid \"Trencin region\"\nmsgstr \"Trencin region\"\n\n#: sk/sk_regions.py:14\nmsgid \"Trnava region\"\nmsgstr \"Trnava region\"\n\n#: sk/sk_regions.py:15\nmsgid \"Zilina region\"\nmsgstr \"Zilina region\"\n\n#: tr/forms.py:21\nmsgid \"Enter a postal code in the format XXXXX.\"\nmsgstr \"Enter a postal code in the format XXXXX.\"\n\n#: tr/forms.py:42\nmsgid \"Phone numbers must be in 0XXX XXX XXXX format.\"\nmsgstr \"Phone numbers must be in 0XXX XXX XXXX format.\"\n\n#: tr/forms.py:69\nmsgid \"Enter a valid Turkish Identification number.\"\nmsgstr \"Enter a valid Turkish Identification number.\"\n\n#: tr/forms.py:70\nmsgid \"Turkish Identification number must be 11 digits.\"\nmsgstr \"Turkish Identification number must be 11 digits.\"\n\n#: us/forms.py:21\nmsgid \"Enter a zip code in the format XXXXX or XXXXX-XXXX.\"\nmsgstr \"Enter a zip code in the format XXXXX or XXXXX-XXXX.\"\n\n#: us/forms.py:59\nmsgid \"Enter a valid U.S. Social Security number in XXX-XX-XXXX format.\"\nmsgstr \"Enter a valid U.S. Social Security number in XXX-XX-XXXX format.\"\n\n#: us/forms.py:92\nmsgid \"Enter a U.S. state or territory.\"\nmsgstr \"Enter a U.S. state or territory.\"\n\n#: us/models.py:8\nmsgid \"U.S. state (two uppercase letters)\"\nmsgstr \"U.S. state (two uppercase letters)\"\n\n#: us/models.py:17\nmsgid \"U.S. postal code (two uppercase letters)\"\nmsgstr \"U.S. postal code (two uppercase letters)\"\n\n#: us/models.py:26\nmsgid \"Phone number\"\nmsgstr \"Phone number\"\n\n#: uy/forms.py:29\nmsgid \"Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.\"\nmsgstr \"Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.\"\n\n#: uy/forms.py:31\nmsgid \"Enter a valid CI number.\"\nmsgstr \"Enter a valid CI number.\"\n\n#: za/forms.py:22\nmsgid \"Enter a valid South African ID number\"\nmsgstr \"Enter a valid South African ID number\"\n\n#: za/forms.py:56\nmsgid \"Enter a valid South African postal code\"\nmsgstr \"Enter a valid South African postal code\"\n\n#: za/za_provinces.py:4\nmsgid \"Eastern Cape\"\nmsgstr \"Eastern Cape\"\n\n#: za/za_provinces.py:5\nmsgid \"Free State\"\nmsgstr \"Free State\"\n\n#: za/za_provinces.py:6\nmsgid \"Gauteng\"\nmsgstr \"Gauteng\"\n\n#: za/za_provinces.py:7\nmsgid \"KwaZulu-Natal\"\nmsgstr \"KwaZulu-Natal\"\n\n#: za/za_provinces.py:8\nmsgid \"Limpopo\"\nmsgstr \"Limpopo\"\n\n#: za/za_provinces.py:9\nmsgid \"Mpumalanga\"\nmsgstr \"Mpumalanga\"\n\n#: za/za_provinces.py:10\nmsgid \"Northern Cape\"\nmsgstr \"Northern Cape\"\n\n#: za/za_provinces.py:11\nmsgid \"North West\"\nmsgstr \"North West\"\n\n#: za/za_provinces.py:12\nmsgid \"Western Cape\"\nmsgstr \"Western Cape\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/locale/en_GB/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Ross Poulton <ross@rossp.org>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-10-17 09:17+0000\\n\"\n\"Last-Translator: Ross Poulton <ross@rossp.org>\\n\"\n\"Language-Team: English (United Kingdom) (http://www.transifex.com/projects/p/\"\n\"django/language/en_GB/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: en_GB\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: ar/forms.py:30\nmsgid \"Enter a postal code in the format NNNN or ANNNNAAA.\"\nmsgstr \"Enter a postal code in the format NNNN or ANNNNAAA.\"\n\n#: ar/forms.py:52 br/forms.py:95 br/forms.py:134 pe/forms.py:27 pe/forms.py:55\nmsgid \"This field requires only numbers.\"\nmsgstr \"This field requires only numbers.\"\n\n#: ar/forms.py:53\nmsgid \"This field requires 7 or 8 digits.\"\nmsgstr \"This field requires 7 or 8 digits.\"\n\n#: ar/forms.py:82\nmsgid \"Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.\"\nmsgstr \"Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.\"\n\n#: ar/forms.py:83\nmsgid \"Invalid CUIT.\"\nmsgstr \"Invalid CUIT.\"\n\n#: ar/forms.py:84\nmsgid \"Invalid legal type. Type must be 27, 20, 23 or 30.\"\nmsgstr \"\"\n\n#: at/at_states.py:5\nmsgid \"Burgenland\"\nmsgstr \"Burgenland\"\n\n#: at/at_states.py:6\nmsgid \"Carinthia\"\nmsgstr \"Carinthia\"\n\n#: at/at_states.py:7\nmsgid \"Lower Austria\"\nmsgstr \"Lower Austria\"\n\n#: at/at_states.py:8\nmsgid \"Upper Austria\"\nmsgstr \"Upper Austria\"\n\n#: at/at_states.py:9\nmsgid \"Salzburg\"\nmsgstr \"Salzburg\"\n\n#: at/at_states.py:10\nmsgid \"Styria\"\nmsgstr \"Styria\"\n\n#: at/at_states.py:11\nmsgid \"Tyrol\"\nmsgstr \"Tyrol\"\n\n#: at/at_states.py:12\nmsgid \"Vorarlberg\"\nmsgstr \"Vorarlberg\"\n\n#: at/at_states.py:13\nmsgid \"Vienna\"\nmsgstr \"Vienna\"\n\n#: at/forms.py:22 ch/forms.py:22 no/forms.py:19\nmsgid \"Enter a zip code in the format XXXX.\"\nmsgstr \"Enter a zip code in the format XXXX.\"\n\n#: at/forms.py:50\nmsgid \"Enter a valid Austrian Social Security Number in XXXX XXXXXX format.\"\nmsgstr \"Enter a valid Austrian Social Security Number in XXXX XXXXXX format.\"\n\n#: au/forms.py:26\nmsgid \"Enter a 4 digit postcode.\"\nmsgstr \"Enter a 4 digit postcode.\"\n\n#: au/models.py:9\nmsgid \"Australian State\"\nmsgstr \"Australian State\"\n\n#: au/models.py:19\nmsgid \"Australian Postcode\"\nmsgstr \"Australian Postcode\"\n\n#: au/models.py:33\nmsgid \"Australian Phone number\"\nmsgstr \"Australian Phone number\"\n\n#: be/be_provinces.py:5\nmsgid \"Antwerp\"\nmsgstr \"Antwerp\"\n\n#: be/be_provinces.py:6\nmsgid \"Brussels\"\nmsgstr \"Brussels\"\n\n#: be/be_provinces.py:7\nmsgid \"East Flanders\"\nmsgstr \"East Flanders\"\n\n#: be/be_provinces.py:8\nmsgid \"Flemish Brabant\"\nmsgstr \"Flemish Brabant\"\n\n#: be/be_provinces.py:9\nmsgid \"Hainaut\"\nmsgstr \"Hainaut\"\n\n#: be/be_provinces.py:10\nmsgid \"Liege\"\nmsgstr \"Liege\"\n\n#: be/be_provinces.py:11 nl/nl_provinces.py:9\nmsgid \"Limburg\"\nmsgstr \"Limburg\"\n\n#: be/be_provinces.py:12\nmsgid \"Luxembourg\"\nmsgstr \"Luxembourg\"\n\n#: be/be_provinces.py:13\nmsgid \"Namur\"\nmsgstr \"Namur\"\n\n#: be/be_provinces.py:14\nmsgid \"Walloon Brabant\"\nmsgstr \"Walloon Brabant\"\n\n#: be/be_provinces.py:15\nmsgid \"West Flanders\"\nmsgstr \"West Flanders\"\n\n#: be/be_regions.py:5\nmsgid \"Brussels Capital Region\"\nmsgstr \"Brussels Capital Region\"\n\n#: be/be_regions.py:6\nmsgid \"Flemish Region\"\nmsgstr \"Flemish Region\"\n\n#: be/be_regions.py:7\nmsgid \"Wallonia\"\nmsgstr \"Wallonia\"\n\n#: be/forms.py:25\nmsgid \"Enter a valid postal code in the range and format 1XXX - 9XXX.\"\nmsgstr \"Enter a valid postal code in the range and format 1XXX - 9XXX.\"\n\n#: be/forms.py:48\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\nmsgstr \"\"\n\"Enter a valid phone number in one of the formats 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\n\n#: br/forms.py:22\nmsgid \"Enter a zip code in the format XXXXX-XXX.\"\nmsgstr \"Enter a zip code in the format XXXXX-XXX.\"\n\n#: br/forms.py:31\nmsgid \"Phone numbers must be in XX-XXXX-XXXX format.\"\nmsgstr \"Phone numbers must be in XX-XXXX-XXXX format.\"\n\n#: br/forms.py:58\nmsgid \"\"\n\"Select a valid brazilian state. That state is not one of the available \"\n\"states.\"\nmsgstr \"\"\n\"Select a valid brazilian state. That state is not one of the available \"\n\"states.\"\n\n#: br/forms.py:93\nmsgid \"Invalid CPF number.\"\nmsgstr \"Invalid CPF number.\"\n\n#: br/forms.py:94\nmsgid \"This field requires at most 11 digits or 14 characters.\"\nmsgstr \"This field requires at most 11 digits or 14 characters.\"\n\n#: br/forms.py:133\nmsgid \"Invalid CNPJ number.\"\nmsgstr \"Invalid CNPJ number.\"\n\n#: br/forms.py:135\nmsgid \"This field requires at least 14 digits\"\nmsgstr \"This field requires at least 14 digits\"\n\n#: ca/forms.py:29\nmsgid \"Enter a postal code in the format XXX XXX.\"\nmsgstr \"Enter a postal code in the format XXX XXX.\"\n\n#: ca/forms.py:47 us/forms.py:30\nmsgid \"Phone numbers must be in XXX-XXX-XXXX format.\"\nmsgstr \"Phone numbers must be in XXX-XXX-XXXX format.\"\n\n#: ca/forms.py:69\nmsgid \"Enter a Canadian province or territory.\"\nmsgstr \"\"\n\n#: ca/forms.py:110\nmsgid \"Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.\"\nmsgstr \"Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.\"\n\n#: ch/ch_states.py:5\nmsgid \"Aargau\"\nmsgstr \"Aargau\"\n\n#: ch/ch_states.py:6\nmsgid \"Appenzell Innerrhoden\"\nmsgstr \"Appenzell Innerrhoden\"\n\n#: ch/ch_states.py:7\nmsgid \"Appenzell Ausserrhoden\"\nmsgstr \"Appenzell Ausserrhoden\"\n\n#: ch/ch_states.py:8\nmsgid \"Basel-Stadt\"\nmsgstr \"Basel-Stadt\"\n\n#: ch/ch_states.py:9\nmsgid \"Basel-Land\"\nmsgstr \"Basel-Land\"\n\n#: ch/ch_states.py:10\nmsgid \"Berne\"\nmsgstr \"Berne\"\n\n#: ch/ch_states.py:11\nmsgid \"Fribourg\"\nmsgstr \"Fribourg\"\n\n#: ch/ch_states.py:12\nmsgid \"Geneva\"\nmsgstr \"Geneva\"\n\n#: ch/ch_states.py:13\nmsgid \"Glarus\"\nmsgstr \"Glarus\"\n\n#: ch/ch_states.py:14\nmsgid \"Graubuenden\"\nmsgstr \"Graubuenden\"\n\n#: ch/ch_states.py:15\nmsgid \"Jura\"\nmsgstr \"Jura\"\n\n#: ch/ch_states.py:16\nmsgid \"Lucerne\"\nmsgstr \"Lucerne\"\n\n#: ch/ch_states.py:17\nmsgid \"Neuchatel\"\nmsgstr \"Neuchatel\"\n\n#: ch/ch_states.py:18\nmsgid \"Nidwalden\"\nmsgstr \"Nidwalden\"\n\n#: ch/ch_states.py:19\nmsgid \"Obwalden\"\nmsgstr \"Obwalden\"\n\n#: ch/ch_states.py:20\nmsgid \"Schaffhausen\"\nmsgstr \"Schaffhausen\"\n\n#: ch/ch_states.py:21\nmsgid \"Schwyz\"\nmsgstr \"Schwyz\"\n\n#: ch/ch_states.py:22\nmsgid \"Solothurn\"\nmsgstr \"Solothurn\"\n\n#: ch/ch_states.py:23\nmsgid \"St. Gallen\"\nmsgstr \"St. Gallen\"\n\n#: ch/ch_states.py:24\nmsgid \"Thurgau\"\nmsgstr \"Thurgau\"\n\n#: ch/ch_states.py:25\nmsgid \"Ticino\"\nmsgstr \"Ticino\"\n\n#: ch/ch_states.py:26\nmsgid \"Uri\"\nmsgstr \"Uri\"\n\n#: ch/ch_states.py:27\nmsgid \"Valais\"\nmsgstr \"Valais\"\n\n#: ch/ch_states.py:28\nmsgid \"Vaud\"\nmsgstr \"Vaud\"\n\n#: ch/ch_states.py:29\nmsgid \"Zug\"\nmsgstr \"Zug\"\n\n#: ch/ch_states.py:30\nmsgid \"Zurich\"\nmsgstr \"Zurich\"\n\n#: ch/forms.py:37\nmsgid \"Phone numbers must be in 0XX XXX XX XX format.\"\nmsgstr \"\"\n\n#: ch/forms.py:68\nmsgid \"\"\n\"Enter a valid Swiss identity or passport card number in X1234567<0 or \"\n\"1234567890 format.\"\nmsgstr \"\"\n\"Enter a valid Swiss identity or passport card number in X1234567<0 or \"\n\"1234567890 format.\"\n\n#: cl/forms.py:32\nmsgid \"Enter a valid Chilean RUT.\"\nmsgstr \"Enter a valid Chilean RUT.\"\n\n#: cl/forms.py:33\nmsgid \"Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.\"\nmsgstr \"Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.\"\n\n#: cl/forms.py:34\nmsgid \"The Chilean RUT is not valid.\"\nmsgstr \"The Chilean RUT is not valid.\"\n\n#: cn/forms.py:84\nmsgid \"Enter a post code in the format XXXXXX.\"\nmsgstr \"Enter a post code in the format XXXXXX.\"\n\n#: cn/forms.py:105\nmsgid \"ID Card Number consists of 15 or 18 digits.\"\nmsgstr \"ID Card Number consists of 15 or 18 digits.\"\n\n#: cn/forms.py:106\nmsgid \"Invalid ID Card Number: Wrong checksum\"\nmsgstr \"Invalid ID Card Number: Wrong checksum\"\n\n#: cn/forms.py:107\nmsgid \"Invalid ID Card Number: Wrong birthdate\"\nmsgstr \"Invalid ID Card Number: Wrong birthdate\"\n\n#: cn/forms.py:108\nmsgid \"Invalid ID Card Number: Wrong location code\"\nmsgstr \"Invalid ID Card Number: Wrong location code\"\n\n#: cn/forms.py:193\nmsgid \"Enter a valid phone number.\"\nmsgstr \"Enter a valid phone number.\"\n\n#: cn/forms.py:210\nmsgid \"Enter a valid cell number.\"\nmsgstr \"Enter a valid cell number.\"\n\n#: cz/cz_regions.py:8\nmsgid \"Prague\"\nmsgstr \"Prague\"\n\n#: cz/cz_regions.py:9\nmsgid \"Central Bohemian Region\"\nmsgstr \"Central Bohemian Region\"\n\n#: cz/cz_regions.py:10\nmsgid \"South Bohemian Region\"\nmsgstr \"South Bohemian Region\"\n\n#: cz/cz_regions.py:11\nmsgid \"Pilsen Region\"\nmsgstr \"Pilsen Region\"\n\n#: cz/cz_regions.py:12\nmsgid \"Carlsbad Region\"\nmsgstr \"Carlsbad Region\"\n\n#: cz/cz_regions.py:13\nmsgid \"Usti Region\"\nmsgstr \"Usti Region\"\n\n#: cz/cz_regions.py:14\nmsgid \"Liberec Region\"\nmsgstr \"Liberec Region\"\n\n#: cz/cz_regions.py:15\nmsgid \"Hradec Region\"\nmsgstr \"Hradec Region\"\n\n#: cz/cz_regions.py:16\nmsgid \"Pardubice Region\"\nmsgstr \"Pardubice Region\"\n\n#: cz/cz_regions.py:17\nmsgid \"Vysocina Region\"\nmsgstr \"Vysocina Region\"\n\n#: cz/cz_regions.py:18\nmsgid \"South Moravian Region\"\nmsgstr \"South Moravian Region\"\n\n#: cz/cz_regions.py:19\nmsgid \"Olomouc Region\"\nmsgstr \"Olomouc Region\"\n\n#: cz/cz_regions.py:20\nmsgid \"Zlin Region\"\nmsgstr \"Zlin Region\"\n\n#: cz/cz_regions.py:21\nmsgid \"Moravian-Silesian Region\"\nmsgstr \"Moravian-Silesian Region\"\n\n#: cz/forms.py:32 sk/forms.py:33\nmsgid \"Enter a postal code in the format XXXXX or XXX XX.\"\nmsgstr \"Enter a postal code in the format XXXXX or XXX XX.\"\n\n#: cz/forms.py:52\nmsgid \"Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.\"\nmsgstr \"Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.\"\n\n#: cz/forms.py:53\nmsgid \"Enter a valid birth number.\"\nmsgstr \"Enter a valid birth number.\"\n\n#: cz/forms.py:102\nmsgid \"Enter a valid IC number.\"\nmsgstr \"Enter a valid IC number.\"\n\n#: de/de_states.py:5\nmsgid \"Baden-Wuerttemberg\"\nmsgstr \"Baden-Wuerttemberg\"\n\n#: de/de_states.py:6\nmsgid \"Bavaria\"\nmsgstr \"Bavaria\"\n\n#: de/de_states.py:7\nmsgid \"Berlin\"\nmsgstr \"Berlin\"\n\n#: de/de_states.py:8\nmsgid \"Brandenburg\"\nmsgstr \"Brandenburg\"\n\n#: de/de_states.py:9\nmsgid \"Bremen\"\nmsgstr \"Bremen\"\n\n#: de/de_states.py:10\nmsgid \"Hamburg\"\nmsgstr \"Hamburg\"\n\n#: de/de_states.py:11\nmsgid \"Hessen\"\nmsgstr \"Hessen\"\n\n#: de/de_states.py:12\nmsgid \"Mecklenburg-Western Pomerania\"\nmsgstr \"Mecklenburg-Western Pomerania\"\n\n#: de/de_states.py:13\nmsgid \"Lower Saxony\"\nmsgstr \"Lower Saxony\"\n\n#: de/de_states.py:14\nmsgid \"North Rhine-Westphalia\"\nmsgstr \"North Rhine-Westphalia\"\n\n#: de/de_states.py:15\nmsgid \"Rhineland-Palatinate\"\nmsgstr \"Rhineland-Palatinate\"\n\n#: de/de_states.py:16\nmsgid \"Saarland\"\nmsgstr \"Saarland\"\n\n#: de/de_states.py:17\nmsgid \"Saxony\"\nmsgstr \"Saxony\"\n\n#: de/de_states.py:18\nmsgid \"Saxony-Anhalt\"\nmsgstr \"Saxony-Anhalt\"\n\n#: de/de_states.py:19\nmsgid \"Schleswig-Holstein\"\nmsgstr \"Schleswig-Holstein\"\n\n#: de/de_states.py:20\nmsgid \"Thuringia\"\nmsgstr \"Thuringia\"\n\n#: de/forms.py:20 fi/forms.py:18 fr/forms.py:20\nmsgid \"Enter a zip code in the format XXXXX.\"\nmsgstr \"Enter a zip code in the format XXXXX.\"\n\n#: de/forms.py:46\nmsgid \"\"\n\"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"format.\"\nmsgstr \"\"\n\"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"format.\"\n\n#: es/es_provinces.py:5\nmsgid \"Araba\"\nmsgstr \"\"\n\n#: es/es_provinces.py:6\nmsgid \"Albacete\"\nmsgstr \"Albacete\"\n\n#: es/es_provinces.py:7\nmsgid \"Alacant\"\nmsgstr \"Alacant\"\n\n#: es/es_provinces.py:8\nmsgid \"Almeria\"\nmsgstr \"Almeria\"\n\n#: es/es_provinces.py:9\nmsgid \"Avila\"\nmsgstr \"Avila\"\n\n#: es/es_provinces.py:10\nmsgid \"Badajoz\"\nmsgstr \"Badajoz\"\n\n#: es/es_provinces.py:11\nmsgid \"Illes Balears\"\nmsgstr \"Illes Balears\"\n\n#: es/es_provinces.py:12\nmsgid \"Barcelona\"\nmsgstr \"Barcelona\"\n\n#: es/es_provinces.py:13\nmsgid \"Burgos\"\nmsgstr \"Burgos\"\n\n#: es/es_provinces.py:14\nmsgid \"Caceres\"\nmsgstr \"Caceres\"\n\n#: es/es_provinces.py:15\nmsgid \"Cadiz\"\nmsgstr \"Cadiz\"\n\n#: es/es_provinces.py:16\nmsgid \"Castello\"\nmsgstr \"Castello\"\n\n#: es/es_provinces.py:17\nmsgid \"Ciudad Real\"\nmsgstr \"Ciudad Real\"\n\n#: es/es_provinces.py:18\nmsgid \"Cordoba\"\nmsgstr \"Cordoba\"\n\n#: es/es_provinces.py:19\nmsgid \"A Coruna\"\nmsgstr \"A Coruna\"\n\n#: es/es_provinces.py:20\nmsgid \"Cuenca\"\nmsgstr \"Cuenca\"\n\n#: es/es_provinces.py:21\nmsgid \"Girona\"\nmsgstr \"Girona\"\n\n#: es/es_provinces.py:22\nmsgid \"Granada\"\nmsgstr \"Granada\"\n\n#: es/es_provinces.py:23\nmsgid \"Guadalajara\"\nmsgstr \"Guadalajara\"\n\n#: es/es_provinces.py:24\nmsgid \"Guipuzkoa\"\nmsgstr \"Guipuzkoa\"\n\n#: es/es_provinces.py:25\nmsgid \"Huelva\"\nmsgstr \"Huelva\"\n\n#: es/es_provinces.py:26\nmsgid \"Huesca\"\nmsgstr \"Huesca\"\n\n#: es/es_provinces.py:27\nmsgid \"Jaen\"\nmsgstr \"Jaen\"\n\n#: es/es_provinces.py:28\nmsgid \"Leon\"\nmsgstr \"Leon\"\n\n#: es/es_provinces.py:29\nmsgid \"Lleida\"\nmsgstr \"Lleida\"\n\n#: es/es_provinces.py:30 es/es_regions.py:17\nmsgid \"La Rioja\"\nmsgstr \"La Rioja\"\n\n#: es/es_provinces.py:31\nmsgid \"Lugo\"\nmsgstr \"Lugo\"\n\n#: es/es_provinces.py:32 es/es_regions.py:18\nmsgid \"Madrid\"\nmsgstr \"Madrid\"\n\n#: es/es_provinces.py:33\nmsgid \"Malaga\"\nmsgstr \"Malaga\"\n\n#: es/es_provinces.py:34\nmsgid \"Murcia\"\nmsgstr \"Murcia\"\n\n#: es/es_provinces.py:35\nmsgid \"Navarre\"\nmsgstr \"Navarre\"\n\n#: es/es_provinces.py:36\nmsgid \"Ourense\"\nmsgstr \"Ourense\"\n\n#: es/es_provinces.py:37\nmsgid \"Asturias\"\nmsgstr \"Asturias\"\n\n#: es/es_provinces.py:38\nmsgid \"Palencia\"\nmsgstr \"Palencia\"\n\n#: es/es_provinces.py:39\nmsgid \"Las Palmas\"\nmsgstr \"Las Palmas\"\n\n#: es/es_provinces.py:40\nmsgid \"Pontevedra\"\nmsgstr \"Pontevedra\"\n\n#: es/es_provinces.py:41\nmsgid \"Salamanca\"\nmsgstr \"Salamanca\"\n\n#: es/es_provinces.py:42\nmsgid \"Santa Cruz de Tenerife\"\nmsgstr \"Santa Cruz de Tenerife\"\n\n#: es/es_provinces.py:43 es/es_regions.py:11\nmsgid \"Cantabria\"\nmsgstr \"Cantabria\"\n\n#: es/es_provinces.py:44\nmsgid \"Segovia\"\nmsgstr \"Segovia\"\n\n#: es/es_provinces.py:45\nmsgid \"Seville\"\nmsgstr \"Seville\"\n\n#: es/es_provinces.py:46\nmsgid \"Soria\"\nmsgstr \"Soria\"\n\n#: es/es_provinces.py:47\nmsgid \"Tarragona\"\nmsgstr \"Tarragona\"\n\n#: es/es_provinces.py:48\nmsgid \"Teruel\"\nmsgstr \"Teruel\"\n\n#: es/es_provinces.py:49\nmsgid \"Toledo\"\nmsgstr \"Toledo\"\n\n#: es/es_provinces.py:50\nmsgid \"Valencia\"\nmsgstr \"Valencia\"\n\n#: es/es_provinces.py:51\nmsgid \"Valladolid\"\nmsgstr \"Valladolid\"\n\n#: es/es_provinces.py:52\nmsgid \"Bizkaia\"\nmsgstr \"Bizkaia\"\n\n#: es/es_provinces.py:53\nmsgid \"Zamora\"\nmsgstr \"Zamora\"\n\n#: es/es_provinces.py:54\nmsgid \"Zaragoza\"\nmsgstr \"Zaragoza\"\n\n#: es/es_provinces.py:55\nmsgid \"Ceuta\"\nmsgstr \"Ceuta\"\n\n#: es/es_provinces.py:56\nmsgid \"Melilla\"\nmsgstr \"Melilla\"\n\n#: es/es_regions.py:5\nmsgid \"Andalusia\"\nmsgstr \"Andalusia\"\n\n#: es/es_regions.py:6\nmsgid \"Aragon\"\nmsgstr \"Aragon\"\n\n#: es/es_regions.py:7\nmsgid \"Principality of Asturias\"\nmsgstr \"Principality of Asturias\"\n\n#: es/es_regions.py:8\nmsgid \"Balearic Islands\"\nmsgstr \"Balearic Islands\"\n\n#: es/es_regions.py:9\nmsgid \"Basque Country\"\nmsgstr \"Basque Country\"\n\n#: es/es_regions.py:10\nmsgid \"Canary Islands\"\nmsgstr \"Canary Islands\"\n\n#: es/es_regions.py:12\nmsgid \"Castile-La Mancha\"\nmsgstr \"Castile-La Mancha\"\n\n#: es/es_regions.py:13\nmsgid \"Castile and Leon\"\nmsgstr \"Castile and Leon\"\n\n#: es/es_regions.py:14\nmsgid \"Catalonia\"\nmsgstr \"Catalonia\"\n\n#: es/es_regions.py:15\nmsgid \"Extremadura\"\nmsgstr \"Extremadura\"\n\n#: es/es_regions.py:16\nmsgid \"Galicia\"\nmsgstr \"Galicia\"\n\n#: es/es_regions.py:19\nmsgid \"Region of Murcia\"\nmsgstr \"Region of Murcia\"\n\n#: es/es_regions.py:20\nmsgid \"Foral Community of Navarre\"\nmsgstr \"Foral Community of Navarre\"\n\n#: es/es_regions.py:21\nmsgid \"Valencian Community\"\nmsgstr \"Valencian Community\"\n\n#: es/forms.py:26\nmsgid \"Enter a valid postal code in the range and format 01XXX - 52XXX.\"\nmsgstr \"Enter a valid postal code in the range and format 01XXX - 52XXX.\"\n\n#: es/forms.py:46\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or \"\n\"9XXXXXXXX.\"\nmsgstr \"\"\n\"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or \"\n\"9XXXXXXXX.\"\n\n#: es/forms.py:73\nmsgid \"Please enter a valid NIF, NIE, or CIF.\"\nmsgstr \"Please enter a valid NIF, NIE, or CIF.\"\n\n#: es/forms.py:74\nmsgid \"Please enter a valid NIF or NIE.\"\nmsgstr \"Please enter a valid NIF or NIE.\"\n\n#: es/forms.py:75\nmsgid \"Invalid checksum for NIF.\"\nmsgstr \"Invalid checksum for NIF.\"\n\n#: es/forms.py:76\nmsgid \"Invalid checksum for NIE.\"\nmsgstr \"Invalid checksum for NIE.\"\n\n#: es/forms.py:77\nmsgid \"Invalid checksum for CIF.\"\nmsgstr \"Invalid checksum for CIF.\"\n\n#: es/forms.py:149\nmsgid \"\"\n\"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.\"\nmsgstr \"\"\n\"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.\"\n\n#: es/forms.py:150\nmsgid \"Invalid checksum for bank account number.\"\nmsgstr \"Invalid checksum for bank account number.\"\n\n#: fi/forms.py:33\nmsgid \"Enter a valid Finnish social security number.\"\nmsgstr \"Enter a valid Finnish social security number.\"\n\n#: fr/forms.py:35\nmsgid \"Phone numbers must be in 0X XX XX XX XX format.\"\nmsgstr \"Phone numbers must be in 0X XX XX XX XX format.\"\n\n#: gb/forms.py:25\nmsgid \"Enter a valid postcode.\"\nmsgstr \"Enter a valid postcode.\"\n\n#: gb/gb_regions.py:11\nmsgid \"Bedfordshire\"\nmsgstr \"Bedfordshire\"\n\n#: gb/gb_regions.py:12\nmsgid \"Buckinghamshire\"\nmsgstr \"Buckinghamshire\"\n\n#: gb/gb_regions.py:14\nmsgid \"Cheshire\"\nmsgstr \"Cheshire\"\n\n#: gb/gb_regions.py:15\nmsgid \"Cornwall and Isles of Scilly\"\nmsgstr \"Cornwall and Isles of Scilly\"\n\n#: gb/gb_regions.py:16\nmsgid \"Cumbria\"\nmsgstr \"Cumbria\"\n\n#: gb/gb_regions.py:17\nmsgid \"Derbyshire\"\nmsgstr \"Derbyshire\"\n\n#: gb/gb_regions.py:18\nmsgid \"Devon\"\nmsgstr \"Devon\"\n\n#: gb/gb_regions.py:19\nmsgid \"Dorset\"\nmsgstr \"Dorset\"\n\n#: gb/gb_regions.py:20\nmsgid \"Durham\"\nmsgstr \"Durham\"\n\n#: gb/gb_regions.py:21\nmsgid \"East Sussex\"\nmsgstr \"East Sussex\"\n\n#: gb/gb_regions.py:22\nmsgid \"Essex\"\nmsgstr \"Essex\"\n\n#: gb/gb_regions.py:23\nmsgid \"Gloucestershire\"\nmsgstr \"Gloucestershire\"\n\n#: gb/gb_regions.py:24\nmsgid \"Greater London\"\nmsgstr \"Greater London\"\n\n#: gb/gb_regions.py:25\nmsgid \"Greater Manchester\"\nmsgstr \"Greater Manchester\"\n\n#: gb/gb_regions.py:26\nmsgid \"Hampshire\"\nmsgstr \"Hampshire\"\n\n#: gb/gb_regions.py:27\nmsgid \"Hertfordshire\"\nmsgstr \"Hertfordshire\"\n\n#: gb/gb_regions.py:28\nmsgid \"Kent\"\nmsgstr \"Kent\"\n\n#: gb/gb_regions.py:29\nmsgid \"Lancashire\"\nmsgstr \"Lancashire\"\n\n#: gb/gb_regions.py:30\nmsgid \"Leicestershire\"\nmsgstr \"Leicestershire\"\n\n#: gb/gb_regions.py:31\nmsgid \"Lincolnshire\"\nmsgstr \"Lincolnshire\"\n\n#: gb/gb_regions.py:32\nmsgid \"Merseyside\"\nmsgstr \"Merseyside\"\n\n#: gb/gb_regions.py:33\nmsgid \"Norfolk\"\nmsgstr \"Norfolk\"\n\n#: gb/gb_regions.py:34\nmsgid \"North Yorkshire\"\nmsgstr \"North Yorkshire\"\n\n#: gb/gb_regions.py:35\nmsgid \"Northamptonshire\"\nmsgstr \"Northamptonshire\"\n\n#: gb/gb_regions.py:36\nmsgid \"Northumberland\"\nmsgstr \"Northumberland\"\n\n#: gb/gb_regions.py:37\nmsgid \"Nottinghamshire\"\nmsgstr \"Nottinghamshire\"\n\n#: gb/gb_regions.py:38\nmsgid \"Oxfordshire\"\nmsgstr \"Oxfordshire\"\n\n#: gb/gb_regions.py:39\nmsgid \"Shropshire\"\nmsgstr \"Shropshire\"\n\n#: gb/gb_regions.py:40\nmsgid \"Somerset\"\nmsgstr \"Somerset\"\n\n#: gb/gb_regions.py:41\nmsgid \"South Yorkshire\"\nmsgstr \"South Yorkshire\"\n\n#: gb/gb_regions.py:42\nmsgid \"Staffordshire\"\nmsgstr \"Staffordshire\"\n\n#: gb/gb_regions.py:43\nmsgid \"Suffolk\"\nmsgstr \"Suffolk\"\n\n#: gb/gb_regions.py:44\nmsgid \"Surrey\"\nmsgstr \"Surrey\"\n\n#: gb/gb_regions.py:45\nmsgid \"Tyne and Wear\"\nmsgstr \"Tyne and Wear\"\n\n#: gb/gb_regions.py:46\nmsgid \"Warwickshire\"\nmsgstr \"Warwickshire\"\n\n#: gb/gb_regions.py:47\nmsgid \"West Midlands\"\nmsgstr \"West Midlands\"\n\n#: gb/gb_regions.py:48\nmsgid \"West Sussex\"\nmsgstr \"West Sussex\"\n\n#: gb/gb_regions.py:49\nmsgid \"West Yorkshire\"\nmsgstr \"West Yorkshire\"\n\n#: gb/gb_regions.py:50\nmsgid \"Wiltshire\"\nmsgstr \"Wiltshire\"\n\n#: gb/gb_regions.py:51\nmsgid \"Worcestershire\"\nmsgstr \"Worcestershire\"\n\n#: gb/gb_regions.py:55\nmsgid \"County Antrim\"\nmsgstr \"County Antrim\"\n\n#: gb/gb_regions.py:56\nmsgid \"County Armagh\"\nmsgstr \"County Armagh\"\n\n#: gb/gb_regions.py:57\nmsgid \"County Down\"\nmsgstr \"County Down\"\n\n#: gb/gb_regions.py:58\nmsgid \"County Fermanagh\"\nmsgstr \"County Fermanagh\"\n\n#: gb/gb_regions.py:59\nmsgid \"County Londonderry\"\nmsgstr \"County Londonderry\"\n\n#: gb/gb_regions.py:60\nmsgid \"County Tyrone\"\nmsgstr \"County Tyrone\"\n\n#: gb/gb_regions.py:64\nmsgid \"Clwyd\"\nmsgstr \"Clwyd\"\n\n#: gb/gb_regions.py:65\nmsgid \"Dyfed\"\nmsgstr \"Dyfed\"\n\n#: gb/gb_regions.py:66\nmsgid \"Gwent\"\nmsgstr \"Gwent\"\n\n#: gb/gb_regions.py:67\nmsgid \"Gwynedd\"\nmsgstr \"Gwynedd\"\n\n#: gb/gb_regions.py:68\nmsgid \"Mid Glamorgan\"\nmsgstr \"Mid Glamorgan\"\n\n#: gb/gb_regions.py:69\nmsgid \"Powys\"\nmsgstr \"Powys\"\n\n#: gb/gb_regions.py:70\nmsgid \"South Glamorgan\"\nmsgstr \"South Glamorgan\"\n\n#: gb/gb_regions.py:71\nmsgid \"West Glamorgan\"\nmsgstr \"West Glamorgan\"\n\n#: gb/gb_regions.py:75\nmsgid \"Borders\"\nmsgstr \"Borders\"\n\n#: gb/gb_regions.py:76\nmsgid \"Central Scotland\"\nmsgstr \"Central Scotland\"\n\n#: gb/gb_regions.py:77\nmsgid \"Dumfries and Galloway\"\nmsgstr \"Dumfries and Galloway\"\n\n#: gb/gb_regions.py:78\nmsgid \"Fife\"\nmsgstr \"Fife\"\n\n#: gb/gb_regions.py:79\nmsgid \"Grampian\"\nmsgstr \"Grampian\"\n\n#: gb/gb_regions.py:80\nmsgid \"Highland\"\nmsgstr \"Highland\"\n\n#: gb/gb_regions.py:81\nmsgid \"Lothian\"\nmsgstr \"Lothian\"\n\n#: gb/gb_regions.py:82\nmsgid \"Orkney Islands\"\nmsgstr \"Orkney Islands\"\n\n#: gb/gb_regions.py:83\nmsgid \"Shetland Islands\"\nmsgstr \"Shetland Islands\"\n\n#: gb/gb_regions.py:84\nmsgid \"Strathclyde\"\nmsgstr \"Strathclyde\"\n\n#: gb/gb_regions.py:85\nmsgid \"Tayside\"\nmsgstr \"Tayside\"\n\n#: gb/gb_regions.py:86\nmsgid \"Western Isles\"\nmsgstr \"Western Isles\"\n\n#: gb/gb_regions.py:90\nmsgid \"England\"\nmsgstr \"England\"\n\n#: gb/gb_regions.py:91\nmsgid \"Northern Ireland\"\nmsgstr \"Northern Ireland\"\n\n#: gb/gb_regions.py:92\nmsgid \"Scotland\"\nmsgstr \"Scotland\"\n\n#: gb/gb_regions.py:93\nmsgid \"Wales\"\nmsgstr \"Wales\"\n\n#: hk/forms.py:37\n#, python-format\nmsgid \"Phone number should not start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:40\n#, python-format\nmsgid \"Phone number must be in one of the following formats: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:42\n#, python-format\nmsgid \"Phone number should start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hr/forms.py:76\nmsgid \"Enter a valid 13 digit JMBG\"\nmsgstr \"Enter a valid 13 digit JMBG\"\n\n#: hr/forms.py:77\nmsgid \"Error in date segment\"\nmsgstr \"Error in date segment\"\n\n#: hr/forms.py:123\nmsgid \"Enter a valid 11 digit OIB\"\nmsgstr \"Enter a valid 11 digit OIB\"\n\n#: hr/forms.py:152 id/forms.py:112\nmsgid \"Enter a valid vehicle license plate number\"\nmsgstr \"Enter a valid vehicle license plate number\"\n\n#: hr/forms.py:153\nmsgid \"Enter a valid location code\"\nmsgstr \"Enter a valid location code\"\n\n#: hr/forms.py:154\nmsgid \"Number part cannot be zero\"\nmsgstr \"Number part cannot be zero\"\n\n#: hr/forms.py:190\nmsgid \"Enter a valid 5 digit postal code\"\nmsgstr \"Enter a valid 5 digit postal code\"\n\n#: hr/forms.py:218 id/forms.py:72 nl/forms.py:56\nmsgid \"Enter a valid phone number\"\nmsgstr \"Enter a valid phone number\"\n\n#: hr/forms.py:219\nmsgid \"Enter a valid area or mobile network code\"\nmsgstr \"Enter a valid area or mobile network code\"\n\n#: hr/forms.py:220\nmsgid \"The phone nubmer is too long\"\nmsgstr \"The phone number is too long\"\n\n#: hr/forms.py:258\nmsgid \"Enter a valid 19 digit JMBAG starting with 601983\"\nmsgstr \"Enter a valid 19 digit JMBAG starting with 601983\"\n\n#: hr/forms.py:259\nmsgid \"Card issue number cannot be zero\"\nmsgstr \"Card issue number cannot be zero\"\n\n#: hr/hr_choices.py:14\nmsgid \"Grad Zagreb\"\nmsgstr \"Grad Zagreb\"\n\n#: hr/hr_choices.py:15\nmsgid \"Bjelovarsko-bilogorska županija\"\nmsgstr \"Bjelovarsko-bilogorska županija\"\n\n#: hr/hr_choices.py:16\nmsgid \"Brodsko-posavska županija\"\nmsgstr \"Brodsko-posavska županija\"\n\n#: hr/hr_choices.py:17\nmsgid \"Dubrovačko-neretvanska županija\"\nmsgstr \"Dubrovačko-neretvanska županija\"\n\n#: hr/hr_choices.py:18\nmsgid \"Istarska županija\"\nmsgstr \"Istarska županija\"\n\n#: hr/hr_choices.py:19\nmsgid \"Karlovačka županija\"\nmsgstr \"Karlovačka županija\"\n\n#: hr/hr_choices.py:20\nmsgid \"Koprivničko-križevačka županija\"\nmsgstr \"Koprivničko-križevačka županija\"\n\n#: hr/hr_choices.py:21\nmsgid \"Krapinsko-zagorska županija\"\nmsgstr \"Krapinsko-zagorska županija\"\n\n#: hr/hr_choices.py:22\nmsgid \"Ličko-senjska županija\"\nmsgstr \"Ličko-senjska županija\"\n\n#: hr/hr_choices.py:23\nmsgid \"Međimurska županija\"\nmsgstr \"Međimurska županija\"\n\n#: hr/hr_choices.py:24\nmsgid \"Osječko-baranjska županija\"\nmsgstr \"Osječko-baranjska županija\"\n\n#: hr/hr_choices.py:25\nmsgid \"Požeško-slavonska županija\"\nmsgstr \"Požeško-slavonska županija\"\n\n#: hr/hr_choices.py:26\nmsgid \"Primorsko-goranska županija\"\nmsgstr \"Primorsko-goranska županija\"\n\n#: hr/hr_choices.py:27\nmsgid \"Sisačko-moslavačka županija\"\nmsgstr \"Sisačko-moslavačka županija\"\n\n#: hr/hr_choices.py:28\nmsgid \"Splitsko-dalmatinska županija\"\nmsgstr \"Splitsko-dalmatinska županija\"\n\n#: hr/hr_choices.py:29\nmsgid \"Šibensko-kninska županija\"\nmsgstr \"Šibensko-kninska županija\"\n\n#: hr/hr_choices.py:30\nmsgid \"Varaždinska županija\"\nmsgstr \"Varaždinska županija\"\n\n#: hr/hr_choices.py:31\nmsgid \"Virovitičko-podravska županija\"\nmsgstr \"Virovitičko-podravska županija\"\n\n#: hr/hr_choices.py:32\nmsgid \"Vukovarsko-srijemska županija\"\nmsgstr \"Vukovarsko-srijemska županija\"\n\n#: hr/hr_choices.py:33\nmsgid \"Zadarska županija\"\nmsgstr \"Zadarska županija\"\n\n#: hr/hr_choices.py:34\nmsgid \"Zagrebačka županija\"\nmsgstr \"Zagrebačka županija\"\n\n#: id/forms.py:31\nmsgid \"Enter a valid post code\"\nmsgstr \"Enter a valid post code\"\n\n#: id/forms.py:176\nmsgid \"Enter a valid NIK/KTP number\"\nmsgstr \"Enter a valid NIK/KTP number\"\n\n#: id/id_choices.py:15\nmsgid \"Aceh\"\nmsgstr \"Aceh\"\n\n#: id/id_choices.py:16 id/id_choices.py:79\nmsgid \"Bali\"\nmsgstr \"Bali\"\n\n#: id/id_choices.py:17 id/id_choices.py:51\nmsgid \"Banten\"\nmsgstr \"Banten\"\n\n#: id/id_choices.py:18 id/id_choices.py:60\nmsgid \"Bengkulu\"\nmsgstr \"Bengkulu\"\n\n#: id/id_choices.py:19 id/id_choices.py:53\nmsgid \"Yogyakarta\"\nmsgstr \"Yogyakarta\"\n\n#: id/id_choices.py:20 id/id_choices.py:57\nmsgid \"Jakarta\"\nmsgstr \"Jakarta\"\n\n#: id/id_choices.py:21 id/id_choices.py:81\nmsgid \"Gorontalo\"\nmsgstr \"Gorontalo\"\n\n#: id/id_choices.py:22 id/id_choices.py:63\nmsgid \"Jambi\"\nmsgstr \"Jambi\"\n\n#: id/id_choices.py:23\nmsgid \"Jawa Barat\"\nmsgstr \"Jawa Barat\"\n\n#: id/id_choices.py:24\nmsgid \"Jawa Tengah\"\nmsgstr \"Jawa Tengah\"\n\n#: id/id_choices.py:25\nmsgid \"Jawa Timur\"\nmsgstr \"Jawa Timur\"\n\n#: id/id_choices.py:26 id/id_choices.py:94\nmsgid \"Kalimantan Barat\"\nmsgstr \"Kalimantan Barat\"\n\n#: id/id_choices.py:27 id/id_choices.py:72\nmsgid \"Kalimantan Selatan\"\nmsgstr \"Kalimantan Selatan\"\n\n#: id/id_choices.py:28 id/id_choices.py:95\nmsgid \"Kalimantan Tengah\"\nmsgstr \"Kalimantan Tengah\"\n\n#: id/id_choices.py:29 id/id_choices.py:96\nmsgid \"Kalimantan Timur\"\nmsgstr \"Kalimantan Timur\"\n\n#: id/id_choices.py:30\nmsgid \"Kepulauan Bangka-Belitung\"\nmsgstr \"Kepulauan Bangka-Belitung\"\n\n#: id/id_choices.py:31 id/id_choices.py:68\nmsgid \"Kepulauan Riau\"\nmsgstr \"Kepulauan Riau\"\n\n#: id/id_choices.py:32 id/id_choices.py:61\nmsgid \"Lampung\"\nmsgstr \"Lampung\"\n\n#: id/id_choices.py:33 id/id_choices.py:76\nmsgid \"Maluku\"\nmsgstr \"Maluku\"\n\n#: id/id_choices.py:34 id/id_choices.py:77\nmsgid \"Maluku Utara\"\nmsgstr \"Maluku Utara\"\n\n#: id/id_choices.py:35\nmsgid \"Nusa Tenggara Barat\"\nmsgstr \"Nusa Tenggara Barat\"\n\n#: id/id_choices.py:36\nmsgid \"Nusa Tenggara Timur\"\nmsgstr \"Nusa Tenggara Timur\"\n\n#: id/id_choices.py:37\nmsgid \"Papua\"\nmsgstr \"Papua\"\n\n#: id/id_choices.py:38\nmsgid \"Papua Barat\"\nmsgstr \"Papua Barat\"\n\n#: id/id_choices.py:39 id/id_choices.py:66\nmsgid \"Riau\"\nmsgstr \"Riau\"\n\n#: id/id_choices.py:40 id/id_choices.py:74\nmsgid \"Sulawesi Barat\"\nmsgstr \"Sulawesi Barat\"\n\n#: id/id_choices.py:41 id/id_choices.py:75\nmsgid \"Sulawesi Selatan\"\nmsgstr \"Sulawesi Selatan\"\n\n#: id/id_choices.py:42 id/id_choices.py:82\nmsgid \"Sulawesi Tengah\"\nmsgstr \"Sulawesi Tengah\"\n\n#: id/id_choices.py:43 id/id_choices.py:85\nmsgid \"Sulawesi Tenggara\"\nmsgstr \"Sulawesi Tenggara\"\n\n#: id/id_choices.py:44\nmsgid \"Sulawesi Utara\"\nmsgstr \"Sulawesi Utara\"\n\n#: id/id_choices.py:45 id/id_choices.py:58\nmsgid \"Sumatera Barat\"\nmsgstr \"Sumatera Barat\"\n\n#: id/id_choices.py:46 id/id_choices.py:62\nmsgid \"Sumatera Selatan\"\nmsgstr \"Sumatera Selatan\"\n\n#: id/id_choices.py:47 id/id_choices.py:64\nmsgid \"Sumatera Utara\"\nmsgstr \"Sumatera Utara\"\n\n#: id/id_choices.py:52\nmsgid \"Magelang\"\nmsgstr \"Magelang\"\n\n#: id/id_choices.py:54\nmsgid \"Surakarta - Solo\"\nmsgstr \"Surakarta - Solo\"\n\n#: id/id_choices.py:55\nmsgid \"Madiun\"\nmsgstr \"Madiun\"\n\n#: id/id_choices.py:56\nmsgid \"Kediri\"\nmsgstr \"Kediri\"\n\n#: id/id_choices.py:59\nmsgid \"Tapanuli\"\nmsgstr \"Tapanuli\"\n\n#: id/id_choices.py:65\nmsgid \"Nanggroe Aceh Darussalam\"\nmsgstr \"Nanggroe Aceh Darussalam\"\n\n#: id/id_choices.py:67\nmsgid \"Kepulauan Bangka Belitung\"\nmsgstr \"Kepulauan Bangka Belitung\"\n\n#: id/id_choices.py:69\nmsgid \"Corps Consulate\"\nmsgstr \"Corps Consulate\"\n\n#: id/id_choices.py:70\nmsgid \"Corps Diplomatic\"\nmsgstr \"Corps Diplomatic\"\n\n#: id/id_choices.py:71\nmsgid \"Bandung\"\nmsgstr \"Bandung\"\n\n#: id/id_choices.py:73\nmsgid \"Sulawesi Utara Daratan\"\nmsgstr \"Sulawesi Utara Daratan\"\n\n#: id/id_choices.py:78\nmsgid \"NTT - Timor\"\nmsgstr \"NTT - Timor\"\n\n#: id/id_choices.py:80\nmsgid \"Sulawesi Utara Kepulauan\"\nmsgstr \"Sulawesi Utara Kepulauan\"\n\n#: id/id_choices.py:83\nmsgid \"NTB - Lombok\"\nmsgstr \"NTB - Lombok\"\n\n#: id/id_choices.py:84\nmsgid \"Papua dan Papua Barat\"\nmsgstr \"Papua dan Papua Barat\"\n\n#: id/id_choices.py:86\nmsgid \"Cirebon\"\nmsgstr \"Cirebon\"\n\n#: id/id_choices.py:87\nmsgid \"NTB - Sumbawa\"\nmsgstr \"NTB - Sumbawa\"\n\n#: id/id_choices.py:88\nmsgid \"NTT - Flores\"\nmsgstr \"NTT - Flores\"\n\n#: id/id_choices.py:89\nmsgid \"NTT - Sumba\"\nmsgstr \"NTT - Sumba\"\n\n#: id/id_choices.py:90\nmsgid \"Bogor\"\nmsgstr \"Bogor\"\n\n#: id/id_choices.py:91\nmsgid \"Pekalongan\"\nmsgstr \"Pekalongan\"\n\n#: id/id_choices.py:92\nmsgid \"Semarang\"\nmsgstr \"Semarang\"\n\n#: id/id_choices.py:93\nmsgid \"Pati\"\nmsgstr \"Pati\"\n\n#: id/id_choices.py:97\nmsgid \"Surabaya\"\nmsgstr \"Surabaya\"\n\n#: id/id_choices.py:98\nmsgid \"Madura\"\nmsgstr \"Madura\"\n\n#: id/id_choices.py:99\nmsgid \"Malang\"\nmsgstr \"Malang\"\n\n#: id/id_choices.py:100\nmsgid \"Jember\"\nmsgstr \"Jember\"\n\n#: id/id_choices.py:101\nmsgid \"Banyumas\"\nmsgstr \"Banyumas\"\n\n#: id/id_choices.py:102\nmsgid \"Federal Government\"\nmsgstr \"Federal Government\"\n\n#: id/id_choices.py:103\nmsgid \"Bojonegoro\"\nmsgstr \"Bojonegoro\"\n\n#: id/id_choices.py:104\nmsgid \"Purwakarta\"\nmsgstr \"Purwakarta\"\n\n#: id/id_choices.py:105\nmsgid \"Sidoarjo\"\nmsgstr \"Sidoarjo\"\n\n#: id/id_choices.py:106\nmsgid \"Garut\"\nmsgstr \"Garut\"\n\n#: ie/ie_counties.py:8\nmsgid \"Antrim\"\nmsgstr \"Antrim\"\n\n#: ie/ie_counties.py:9\nmsgid \"Armagh\"\nmsgstr \"Armagh\"\n\n#: ie/ie_counties.py:10\nmsgid \"Carlow\"\nmsgstr \"Carlow\"\n\n#: ie/ie_counties.py:11\nmsgid \"Cavan\"\nmsgstr \"Cavan\"\n\n#: ie/ie_counties.py:12\nmsgid \"Clare\"\nmsgstr \"Clare\"\n\n#: ie/ie_counties.py:13\nmsgid \"Cork\"\nmsgstr \"Cork\"\n\n#: ie/ie_counties.py:14\nmsgid \"Derry\"\nmsgstr \"Derry\"\n\n#: ie/ie_counties.py:15\nmsgid \"Donegal\"\nmsgstr \"Donegal\"\n\n#: ie/ie_counties.py:16\nmsgid \"Down\"\nmsgstr \"Down\"\n\n#: ie/ie_counties.py:17\nmsgid \"Dublin\"\nmsgstr \"Dublin\"\n\n#: ie/ie_counties.py:18\nmsgid \"Fermanagh\"\nmsgstr \"Fermanagh\"\n\n#: ie/ie_counties.py:19\nmsgid \"Galway\"\nmsgstr \"Galway\"\n\n#: ie/ie_counties.py:20\nmsgid \"Kerry\"\nmsgstr \"Kerry\"\n\n#: ie/ie_counties.py:21\nmsgid \"Kildare\"\nmsgstr \"Kildare\"\n\n#: ie/ie_counties.py:22\nmsgid \"Kilkenny\"\nmsgstr \"Kilkenny\"\n\n#: ie/ie_counties.py:23\nmsgid \"Laois\"\nmsgstr \"Laois\"\n\n#: ie/ie_counties.py:24\nmsgid \"Leitrim\"\nmsgstr \"Leitrim\"\n\n#: ie/ie_counties.py:25\nmsgid \"Limerick\"\nmsgstr \"Limerick\"\n\n#: ie/ie_counties.py:26\nmsgid \"Longford\"\nmsgstr \"Longford\"\n\n#: ie/ie_counties.py:27\nmsgid \"Louth\"\nmsgstr \"Louth\"\n\n#: ie/ie_counties.py:28\nmsgid \"Mayo\"\nmsgstr \"Mayo\"\n\n#: ie/ie_counties.py:29\nmsgid \"Meath\"\nmsgstr \"Meath\"\n\n#: ie/ie_counties.py:30\nmsgid \"Monaghan\"\nmsgstr \"Monaghan\"\n\n#: ie/ie_counties.py:31\nmsgid \"Offaly\"\nmsgstr \"Offaly\"\n\n#: ie/ie_counties.py:32\nmsgid \"Roscommon\"\nmsgstr \"Roscommon\"\n\n#: ie/ie_counties.py:33\nmsgid \"Sligo\"\nmsgstr \"Sligo\"\n\n#: ie/ie_counties.py:34\nmsgid \"Tipperary\"\nmsgstr \"Tipperary\"\n\n#: ie/ie_counties.py:35\nmsgid \"Tyrone\"\nmsgstr \"Tyrone\"\n\n#: ie/ie_counties.py:36\nmsgid \"Waterford\"\nmsgstr \"Waterford\"\n\n#: ie/ie_counties.py:37\nmsgid \"Westmeath\"\nmsgstr \"Westmeath\"\n\n#: ie/ie_counties.py:38\nmsgid \"Wexford\"\nmsgstr \"Wexford\"\n\n#: ie/ie_counties.py:39\nmsgid \"Wicklow\"\nmsgstr \"Wicklow\"\n\n#: il/forms.py:32\nmsgid \"Enter a postal code in the format XXXXX\"\nmsgstr \"Enter a postal code in the format XXXXX\"\n\n#: il/forms.py:51\nmsgid \"Enter a valid ID number.\"\nmsgstr \"Enter a valid ID number.\"\n\n#: in_/forms.py:41\nmsgid \"Enter a zip code in the format XXXXXX or XXX XXX.\"\nmsgstr \"Enter a zip code in the format XXXXXX or XXX XXX.\"\n\n#: in_/forms.py:64\nmsgid \"Enter an Indian state or territory.\"\nmsgstr \"Enter an Indian state or territory.\"\n\n#: in_/forms.py:103\nmsgid \"Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.\"\nmsgstr \"Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.\"\n\n#: is_/forms.py:22\nmsgid \"\"\n\"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.\"\nmsgstr \"\"\n\"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.\"\n\n#: is_/forms.py:23\nmsgid \"The Icelandic identification number is not valid.\"\nmsgstr \"The Icelandic identification number is not valid.\"\n\n#: it/forms.py:21\nmsgid \"Enter a valid zip code.\"\nmsgstr \"Enter a valid zip code.\"\n\n#: it/forms.py:48\nmsgid \"Enter a valid Social Security number.\"\nmsgstr \"Enter a valid Social Security number.\"\n\n#: it/forms.py:73\nmsgid \"Enter a valid VAT number.\"\nmsgstr \"Enter a valid VAT number.\"\n\n#: jp/forms.py:19\nmsgid \"Enter a postal code in the format XXXXXXX or XXX-XXXX.\"\nmsgstr \"Enter a postal code in the format XXXXXXX or XXX-XXXX.\"\n\n#: jp/jp_prefectures.py:4\nmsgid \"Hokkaido\"\nmsgstr \"Hokkaido\"\n\n#: jp/jp_prefectures.py:5\nmsgid \"Aomori\"\nmsgstr \"Aomori\"\n\n#: jp/jp_prefectures.py:6\nmsgid \"Iwate\"\nmsgstr \"Iwate\"\n\n#: jp/jp_prefectures.py:7\nmsgid \"Miyagi\"\nmsgstr \"Miyagi\"\n\n#: jp/jp_prefectures.py:8\nmsgid \"Akita\"\nmsgstr \"Akita\"\n\n#: jp/jp_prefectures.py:9\nmsgid \"Yamagata\"\nmsgstr \"Yamagata\"\n\n#: jp/jp_prefectures.py:10\nmsgid \"Fukushima\"\nmsgstr \"Fukushima\"\n\n#: jp/jp_prefectures.py:11\nmsgid \"Ibaraki\"\nmsgstr \"Ibaraki\"\n\n#: jp/jp_prefectures.py:12\nmsgid \"Tochigi\"\nmsgstr \"Tochigi\"\n\n#: jp/jp_prefectures.py:13\nmsgid \"Gunma\"\nmsgstr \"Gunma\"\n\n#: jp/jp_prefectures.py:14\nmsgid \"Saitama\"\nmsgstr \"Saitama\"\n\n#: jp/jp_prefectures.py:15\nmsgid \"Chiba\"\nmsgstr \"Chiba\"\n\n#: jp/jp_prefectures.py:16\nmsgid \"Tokyo\"\nmsgstr \"Tokyo\"\n\n#: jp/jp_prefectures.py:17\nmsgid \"Kanagawa\"\nmsgstr \"Kanagawa\"\n\n#: jp/jp_prefectures.py:18\nmsgid \"Yamanashi\"\nmsgstr \"Yamanashi\"\n\n#: jp/jp_prefectures.py:19\nmsgid \"Nagano\"\nmsgstr \"Nagano\"\n\n#: jp/jp_prefectures.py:20\nmsgid \"Niigata\"\nmsgstr \"Niigata\"\n\n#: jp/jp_prefectures.py:21\nmsgid \"Toyama\"\nmsgstr \"Toyama\"\n\n#: jp/jp_prefectures.py:22\nmsgid \"Ishikawa\"\nmsgstr \"Ishikawa\"\n\n#: jp/jp_prefectures.py:23\nmsgid \"Fukui\"\nmsgstr \"Fukui\"\n\n#: jp/jp_prefectures.py:24\nmsgid \"Gifu\"\nmsgstr \"Gifu\"\n\n#: jp/jp_prefectures.py:25\nmsgid \"Shizuoka\"\nmsgstr \"Shizuoka\"\n\n#: jp/jp_prefectures.py:26\nmsgid \"Aichi\"\nmsgstr \"Aichi\"\n\n#: jp/jp_prefectures.py:27\nmsgid \"Mie\"\nmsgstr \"Mie\"\n\n#: jp/jp_prefectures.py:28\nmsgid \"Shiga\"\nmsgstr \"Shiga\"\n\n#: jp/jp_prefectures.py:29\nmsgid \"Kyoto\"\nmsgstr \"Kyoto\"\n\n#: jp/jp_prefectures.py:30\nmsgid \"Osaka\"\nmsgstr \"Osaka\"\n\n#: jp/jp_prefectures.py:31\nmsgid \"Hyogo\"\nmsgstr \"Hyogo\"\n\n#: jp/jp_prefectures.py:32\nmsgid \"Nara\"\nmsgstr \"Nara\"\n\n#: jp/jp_prefectures.py:33\nmsgid \"Wakayama\"\nmsgstr \"Wakayama\"\n\n#: jp/jp_prefectures.py:34\nmsgid \"Tottori\"\nmsgstr \"Tottori\"\n\n#: jp/jp_prefectures.py:35\nmsgid \"Shimane\"\nmsgstr \"Shimane\"\n\n#: jp/jp_prefectures.py:36\nmsgid \"Okayama\"\nmsgstr \"Okayama\"\n\n#: jp/jp_prefectures.py:37\nmsgid \"Hiroshima\"\nmsgstr \"Hiroshima\"\n\n#: jp/jp_prefectures.py:38\nmsgid \"Yamaguchi\"\nmsgstr \"Yamaguchi\"\n\n#: jp/jp_prefectures.py:39\nmsgid \"Tokushima\"\nmsgstr \"Tokushima\"\n\n#: jp/jp_prefectures.py:40\nmsgid \"Kagawa\"\nmsgstr \"Kagawa\"\n\n#: jp/jp_prefectures.py:41\nmsgid \"Ehime\"\nmsgstr \"Ehime\"\n\n#: jp/jp_prefectures.py:42\nmsgid \"Kochi\"\nmsgstr \"Kochi\"\n\n#: jp/jp_prefectures.py:43\nmsgid \"Fukuoka\"\nmsgstr \"Fukuoka\"\n\n#: jp/jp_prefectures.py:44\nmsgid \"Saga\"\nmsgstr \"Saga\"\n\n#: jp/jp_prefectures.py:45\nmsgid \"Nagasaki\"\nmsgstr \"Nagasaki\"\n\n#: jp/jp_prefectures.py:46\nmsgid \"Kumamoto\"\nmsgstr \"Kumamoto\"\n\n#: jp/jp_prefectures.py:47\nmsgid \"Oita\"\nmsgstr \"Oita\"\n\n#: jp/jp_prefectures.py:48\nmsgid \"Miyazaki\"\nmsgstr \"Miyazaki\"\n\n#: jp/jp_prefectures.py:49\nmsgid \"Kagoshima\"\nmsgstr \"Kagoshima\"\n\n#: jp/jp_prefectures.py:50\nmsgid \"Okinawa\"\nmsgstr \"Okinawa\"\n\n#: kw/forms.py:27\nmsgid \"Enter a valid Kuwaiti Civil ID number\"\nmsgstr \"Enter a valid Kuwaiti Civil ID number\"\n\n#: mk/forms.py:18\nmsgid \"\"\n\"Identity card numbers must contain either 4 to 7 digits or an uppercase \"\n\"letter and 7 digits.\"\nmsgstr \"\"\n\"Identity card numbers must contain either 4 to 7 digits or an uppercase \"\n\"letter and 7 digits.\"\n\n#: mk/forms.py:57 si/forms.py:24\nmsgid \"This field should contain exactly 13 digits.\"\nmsgstr \"This field should contain exactly 13 digits.\"\n\n#: mk/forms.py:58\nmsgid \"The first 7 digits of the UMCN must represent a valid past date.\"\nmsgstr \"The first 7 digits of the UMCN must represent a valid past date.\"\n\n#: mk/forms.py:59\nmsgid \"The UMCN is not valid.\"\nmsgstr \"The UMCN is not valid.\"\n\n#: mk/mk_choices.py:10\nmsgid \"Aerodrom\"\nmsgstr \"Aerodrom\"\n\n#: mk/mk_choices.py:11\nmsgid \"Aračinovo\"\nmsgstr \"Aračinovo\"\n\n#: mk/mk_choices.py:12\nmsgid \"Berovo\"\nmsgstr \"Berovo\"\n\n#: mk/mk_choices.py:13\nmsgid \"Bitola\"\nmsgstr \"Bitola\"\n\n#: mk/mk_choices.py:14\nmsgid \"Bogdanci\"\nmsgstr \"Bogdanci\"\n\n#: mk/mk_choices.py:15\nmsgid \"Bogovinje\"\nmsgstr \"Bogovinje\"\n\n#: mk/mk_choices.py:16\nmsgid \"Bosilovo\"\nmsgstr \"Bosilovo\"\n\n#: mk/mk_choices.py:17\nmsgid \"Brvenica\"\nmsgstr \"Brvenica\"\n\n#: mk/mk_choices.py:18\nmsgid \"Butel\"\nmsgstr \"Butel\"\n\n#: mk/mk_choices.py:19\nmsgid \"Valandovo\"\nmsgstr \"Valandovo\"\n\n#: mk/mk_choices.py:20\nmsgid \"Vasilevo\"\nmsgstr \"Vasilevo\"\n\n#: mk/mk_choices.py:21\nmsgid \"Vevčani\"\nmsgstr \"Vevčani\"\n\n#: mk/mk_choices.py:22\nmsgid \"Veles\"\nmsgstr \"Veles\"\n\n#: mk/mk_choices.py:23\nmsgid \"Vinica\"\nmsgstr \"Vinica\"\n\n#: mk/mk_choices.py:24\nmsgid \"Vraneštica\"\nmsgstr \"Vraneštica\"\n\n#: mk/mk_choices.py:25\nmsgid \"Vrapčište\"\nmsgstr \"Vrapčište\"\n\n#: mk/mk_choices.py:26\nmsgid \"Gazi Baba\"\nmsgstr \"Gazi Baba\"\n\n#: mk/mk_choices.py:27\nmsgid \"Gevgelija\"\nmsgstr \"Gevgelija\"\n\n#: mk/mk_choices.py:28\nmsgid \"Gostivar\"\nmsgstr \"Gostivar\"\n\n#: mk/mk_choices.py:29\nmsgid \"Gradsko\"\nmsgstr \"Gradsko\"\n\n#: mk/mk_choices.py:30\nmsgid \"Debar\"\nmsgstr \"Debar\"\n\n#: mk/mk_choices.py:31\nmsgid \"Debarca\"\nmsgstr \"Debarca\"\n\n#: mk/mk_choices.py:32\nmsgid \"Delčevo\"\nmsgstr \"Delčevo\"\n\n#: mk/mk_choices.py:33\nmsgid \"Demir Kapija\"\nmsgstr \"Demir Kapija\"\n\n#: mk/mk_choices.py:34\nmsgid \"Demir Hisar\"\nmsgstr \"Demir Hisar\"\n\n#: mk/mk_choices.py:35\nmsgid \"Dolneni\"\nmsgstr \"Dolneni\"\n\n#: mk/mk_choices.py:36\nmsgid \"Drugovo\"\nmsgstr \"Drugovo\"\n\n#: mk/mk_choices.py:37\nmsgid \"Gjorče Petrov\"\nmsgstr \"Gjorče Petrov\"\n\n#: mk/mk_choices.py:38\nmsgid \"Želino\"\nmsgstr \"Želino\"\n\n#: mk/mk_choices.py:39\nmsgid \"Zajas\"\nmsgstr \"Zajas\"\n\n#: mk/mk_choices.py:40\nmsgid \"Zelenikovo\"\nmsgstr \"Zelenikovo\"\n\n#: mk/mk_choices.py:41\nmsgid \"Zrnovci\"\nmsgstr \"Zrnovci\"\n\n#: mk/mk_choices.py:42\nmsgid \"Ilinden\"\nmsgstr \"Ilinden\"\n\n#: mk/mk_choices.py:43\nmsgid \"Jegunovce\"\nmsgstr \"Jegunovce\"\n\n#: mk/mk_choices.py:44\nmsgid \"Kavadarci\"\nmsgstr \"Kavadarci\"\n\n#: mk/mk_choices.py:45\nmsgid \"Karbinci\"\nmsgstr \"Karbinci\"\n\n#: mk/mk_choices.py:46\nmsgid \"Karpoš\"\nmsgstr \"Karpoš\"\n\n#: mk/mk_choices.py:47\nmsgid \"Kisela Voda\"\nmsgstr \"Kisela Voda\"\n\n#: mk/mk_choices.py:48\nmsgid \"Kičevo\"\nmsgstr \"Kičevo\"\n\n#: mk/mk_choices.py:49\nmsgid \"Konče\"\nmsgstr \"Konče\"\n\n#: mk/mk_choices.py:50\nmsgid \"Koćani\"\nmsgstr \"Koćani\"\n\n#: mk/mk_choices.py:51\nmsgid \"Kratovo\"\nmsgstr \"Kratovo\"\n\n#: mk/mk_choices.py:52\nmsgid \"Kriva Palanka\"\nmsgstr \"Kriva Palanka\"\n\n#: mk/mk_choices.py:53\nmsgid \"Krivogaštani\"\nmsgstr \"Krivogaštani\"\n\n#: mk/mk_choices.py:54\nmsgid \"Kruševo\"\nmsgstr \"Kruševo\"\n\n#: mk/mk_choices.py:55\nmsgid \"Kumanovo\"\nmsgstr \"Kumanovo\"\n\n#: mk/mk_choices.py:56\nmsgid \"Lipkovo\"\nmsgstr \"Lipkovo\"\n\n#: mk/mk_choices.py:57\nmsgid \"Lozovo\"\nmsgstr \"Lozovo\"\n\n#: mk/mk_choices.py:58\nmsgid \"Mavrovo i Rostuša\"\nmsgstr \"Mavrovo i Rostuša\"\n\n#: mk/mk_choices.py:59\nmsgid \"Makedonska Kamenica\"\nmsgstr \"Makedonska Kamenica\"\n\n#: mk/mk_choices.py:60\nmsgid \"Makedonski Brod\"\nmsgstr \"Makedonski Brod\"\n\n#: mk/mk_choices.py:61\nmsgid \"Mogila\"\nmsgstr \"Mogila\"\n\n#: mk/mk_choices.py:62\nmsgid \"Negotino\"\nmsgstr \"Negotino\"\n\n#: mk/mk_choices.py:63\nmsgid \"Novaci\"\nmsgstr \"Novaci\"\n\n#: mk/mk_choices.py:64\nmsgid \"Novo Selo\"\nmsgstr \"Novo Selo\"\n\n#: mk/mk_choices.py:65\nmsgid \"Oslomej\"\nmsgstr \"Oslomej\"\n\n#: mk/mk_choices.py:66\nmsgid \"Ohrid\"\nmsgstr \"Ohrid\"\n\n#: mk/mk_choices.py:67\nmsgid \"Petrovec\"\nmsgstr \"Petrovec\"\n\n#: mk/mk_choices.py:68\nmsgid \"Pehčevo\"\nmsgstr \"Pehčevo\"\n\n#: mk/mk_choices.py:69\nmsgid \"Plasnica\"\nmsgstr \"Plasnica\"\n\n#: mk/mk_choices.py:70\nmsgid \"Prilep\"\nmsgstr \"Prilep\"\n\n#: mk/mk_choices.py:71\nmsgid \"Probištip\"\nmsgstr \"Probištip\"\n\n#: mk/mk_choices.py:72\nmsgid \"Radoviš\"\nmsgstr \"Radoviš\"\n\n#: mk/mk_choices.py:73\nmsgid \"Rankovce\"\nmsgstr \"Rankovce\"\n\n#: mk/mk_choices.py:74\nmsgid \"Resen\"\nmsgstr \"Resen\"\n\n#: mk/mk_choices.py:75\nmsgid \"Rosoman\"\nmsgstr \"Rosoman\"\n\n#: mk/mk_choices.py:76\nmsgid \"Saraj\"\nmsgstr \"Saraj\"\n\n#: mk/mk_choices.py:77\nmsgid \"Sveti Nikole\"\nmsgstr \"Sveti Nikole\"\n\n#: mk/mk_choices.py:78\nmsgid \"Sopište\"\nmsgstr \"Sopište\"\n\n#: mk/mk_choices.py:79\nmsgid \"Star Dojran\"\nmsgstr \"Star Dojran\"\n\n#: mk/mk_choices.py:80\nmsgid \"Staro Nagoričane\"\nmsgstr \"Staro Nagoričane\"\n\n#: mk/mk_choices.py:81\nmsgid \"Struga\"\nmsgstr \"Struga\"\n\n#: mk/mk_choices.py:82\nmsgid \"Strumica\"\nmsgstr \"Strumica\"\n\n#: mk/mk_choices.py:83\nmsgid \"Studeničani\"\nmsgstr \"Studeničani\"\n\n#: mk/mk_choices.py:84\nmsgid \"Tearce\"\nmsgstr \"Tearce\"\n\n#: mk/mk_choices.py:85\nmsgid \"Tetovo\"\nmsgstr \"Tetovo\"\n\n#: mk/mk_choices.py:86\nmsgid \"Centar\"\nmsgstr \"Centar\"\n\n#: mk/mk_choices.py:87\nmsgid \"Centar-Župa\"\nmsgstr \"Centar-Župa\"\n\n#: mk/mk_choices.py:88\nmsgid \"Čair\"\nmsgstr \"Čair\"\n\n#: mk/mk_choices.py:89\nmsgid \"Čaška\"\nmsgstr \"Čaška\"\n\n#: mk/mk_choices.py:90\nmsgid \"Češinovo-Obleševo\"\nmsgstr \"Češinovo-Obleševo\"\n\n#: mk/mk_choices.py:91\nmsgid \"Čučer-Sandevo\"\nmsgstr \"Čučer-Sandevo\"\n\n#: mk/mk_choices.py:92\nmsgid \"Štip\"\nmsgstr \"Štip\"\n\n#: mk/mk_choices.py:93\nmsgid \"Šuto Orizari\"\nmsgstr \"Šuto Orizari\"\n\n#: mk/models.py:11\nmsgid \"Macedonian identity card number\"\nmsgstr \"Macedonian identity card number\"\n\n#: mk/models.py:25\nmsgid \"A Macedonian municipality (2 character code)\"\nmsgstr \"A Macedonian municipality (2 character code)\"\n\n#: mk/models.py:35\nmsgid \"Unique master citizen number (13 digits)\"\nmsgstr \"Unique master citizen number (13 digits)\"\n\n#: mx/forms.py:67\nmsgid \"Enter a valid zip code in the format XXXXX.\"\nmsgstr \"Enter a valid zip code in the format XXXXX.\"\n\n#: mx/forms.py:110\nmsgid \"Enter a valid RFC.\"\nmsgstr \"Enter a valid RFC.\"\n\n#: mx/forms.py:111\nmsgid \"Invalid checksum for RFC.\"\nmsgstr \"Invalid checksum for RFC.\"\n\n#: mx/forms.py:191\nmsgid \"Enter a valid CURP.\"\nmsgstr \"Enter a valid CURP.\"\n\n#: mx/forms.py:192\nmsgid \"Invalid checksum for CURP.\"\nmsgstr \"Invalid checksum for CURP.\"\n\n#: mx/models.py:14\nmsgid \"Mexico state (three uppercase letters)\"\nmsgstr \"Mexico state (three uppercase letters)\"\n\n#: mx/models.py:27\nmsgid \"Mexico zip code\"\nmsgstr \"Mexico zip code\"\n\n#: mx/models.py:44\nmsgid \"Mexican RFC\"\nmsgstr \"Mexican RFC\"\n\n#: mx/models.py:61\nmsgid \"Mexican CURP\"\nmsgstr \"Mexican CURP\"\n\n#: mx/mx_states.py:14\nmsgid \"Aguascalientes\"\nmsgstr \"Aguascalientes\"\n\n#: mx/mx_states.py:15\nmsgid \"Baja California\"\nmsgstr \"Baja California\"\n\n#: mx/mx_states.py:16\nmsgid \"Baja California Sur\"\nmsgstr \"Baja California Sur\"\n\n#: mx/mx_states.py:17\nmsgid \"Campeche\"\nmsgstr \"Campeche\"\n\n#: mx/mx_states.py:18\nmsgid \"Chihuahua\"\nmsgstr \"Chihuahua\"\n\n#: mx/mx_states.py:19\nmsgid \"Chiapas\"\nmsgstr \"Chiapas\"\n\n#: mx/mx_states.py:20\nmsgid \"Coahuila\"\nmsgstr \"Coahuila\"\n\n#: mx/mx_states.py:21\nmsgid \"Colima\"\nmsgstr \"Colima\"\n\n#: mx/mx_states.py:22\nmsgid \"Distrito Federal\"\nmsgstr \"Distrito Federal\"\n\n#: mx/mx_states.py:23\nmsgid \"Durango\"\nmsgstr \"Durango\"\n\n#: mx/mx_states.py:24\nmsgid \"Guerrero\"\nmsgstr \"Guerrero\"\n\n#: mx/mx_states.py:25\nmsgid \"Guanajuato\"\nmsgstr \"Guanajuato\"\n\n#: mx/mx_states.py:26\nmsgid \"Hidalgo\"\nmsgstr \"Hidalgo\"\n\n#: mx/mx_states.py:27\nmsgid \"Jalisco\"\nmsgstr \"Jalisco\"\n\n#: mx/mx_states.py:28\nmsgid \"Estado de México\"\nmsgstr \"Estado de México\"\n\n#: mx/mx_states.py:29\nmsgid \"Michoacán\"\nmsgstr \"Michoacán\"\n\n#: mx/mx_states.py:30\nmsgid \"Morelos\"\nmsgstr \"Morelos\"\n\n#: mx/mx_states.py:31\nmsgid \"Nayarit\"\nmsgstr \"Nayarit\"\n\n#: mx/mx_states.py:32\nmsgid \"Nuevo León\"\nmsgstr \"Nuevo León\"\n\n#: mx/mx_states.py:33\nmsgid \"Oaxaca\"\nmsgstr \"Oaxaca\"\n\n#: mx/mx_states.py:34\nmsgid \"Puebla\"\nmsgstr \"Puebla\"\n\n#: mx/mx_states.py:35\nmsgid \"Querétaro\"\nmsgstr \"Querétaro\"\n\n#: mx/mx_states.py:36\nmsgid \"Quintana Roo\"\nmsgstr \"Quintana Roo\"\n\n#: mx/mx_states.py:37\nmsgid \"Sinaloa\"\nmsgstr \"Sinaloa\"\n\n#: mx/mx_states.py:38\nmsgid \"San Luis Potosí\"\nmsgstr \"San Luis Potosí\"\n\n#: mx/mx_states.py:39\nmsgid \"Sonora\"\nmsgstr \"Sonora\"\n\n#: mx/mx_states.py:40\nmsgid \"Tabasco\"\nmsgstr \"Tabasco\"\n\n#: mx/mx_states.py:41\nmsgid \"Tamaulipas\"\nmsgstr \"Tamaulipas\"\n\n#: mx/mx_states.py:42\nmsgid \"Tlaxcala\"\nmsgstr \"Tlaxcala\"\n\n#: mx/mx_states.py:43\nmsgid \"Veracruz\"\nmsgstr \"Veracruz\"\n\n#: mx/mx_states.py:44\nmsgid \"Yucatán\"\nmsgstr \"Yucatán\"\n\n#: mx/mx_states.py:45\nmsgid \"Zacatecas\"\nmsgstr \"Zacatecas\"\n\n#: nl/forms.py:26\nmsgid \"Enter a valid postal code\"\nmsgstr \"Enter a valid postal code\"\n\n#: nl/forms.py:82\nmsgid \"Enter a valid SoFi number\"\nmsgstr \"Enter a valid SoFi number\"\n\n#: nl/nl_provinces.py:4\nmsgid \"Drenthe\"\nmsgstr \"Drenthe\"\n\n#: nl/nl_provinces.py:5\nmsgid \"Flevoland\"\nmsgstr \"Flevoland\"\n\n#: nl/nl_provinces.py:6\nmsgid \"Friesland\"\nmsgstr \"Friesland\"\n\n#: nl/nl_provinces.py:7\nmsgid \"Gelderland\"\nmsgstr \"Gelderland\"\n\n#: nl/nl_provinces.py:8\nmsgid \"Groningen\"\nmsgstr \"Groningen\"\n\n#: nl/nl_provinces.py:10\nmsgid \"Noord-Brabant\"\nmsgstr \"Noord-Brabant\"\n\n#: nl/nl_provinces.py:11\nmsgid \"Noord-Holland\"\nmsgstr \"Noord-Holland\"\n\n#: nl/nl_provinces.py:12\nmsgid \"Overijssel\"\nmsgstr \"Overijssel\"\n\n#: nl/nl_provinces.py:13\nmsgid \"Utrecht\"\nmsgstr \"Utrecht\"\n\n#: nl/nl_provinces.py:14\nmsgid \"Zeeland\"\nmsgstr \"Zeeland\"\n\n#: nl/nl_provinces.py:15\nmsgid \"Zuid-Holland\"\nmsgstr \"Zuid-Holland\"\n\n#: no/forms.py:39\nmsgid \"Enter a valid Norwegian social security number.\"\nmsgstr \"Enter a valid Norwegian social security number.\"\n\n#: pe/forms.py:28\nmsgid \"This field requires 8 digits.\"\nmsgstr \"This field requires 8 digits.\"\n\n#: pe/forms.py:56\nmsgid \"This field requires 11 digits.\"\nmsgstr \"This field requires 11 digits.\"\n\n#: pl/forms.py:42\nmsgid \"National Identification Number consists of 11 digits.\"\nmsgstr \"National Identification Number consists of 11 digits.\"\n\n#: pl/forms.py:43\nmsgid \"Wrong checksum for the National Identification Number.\"\nmsgstr \"Wrong checksum for the National Identification Number.\"\n\n#: pl/forms.py:79\nmsgid \"National ID Card Number consists of 3 letters and 6 digits.\"\nmsgstr \"National ID Card Number consists of 3 letters and 6 digits.\"\n\n#: pl/forms.py:80\nmsgid \"Wrong checksum for the National ID Card Number.\"\nmsgstr \"Wrong checksum for the National ID Card Number.\"\n\n#: pl/forms.py:131\nmsgid \"\"\n\"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or \"\n\"XXXXXXXXXX.\"\nmsgstr \"\"\n\"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or \"\n\"XXXXXXXXXX.\"\n\n#: pl/forms.py:132\nmsgid \"Wrong checksum for the Tax Number (NIP).\"\nmsgstr \"Wrong checksum for the Tax Number (NIP).\"\n\n#: pl/forms.py:171\nmsgid \"National Business Register Number (REGON) consists of 9 or 14 digits.\"\nmsgstr \"National Business Register Number (REGON) consists of 9 or 14 digits.\"\n\n#: pl/forms.py:172\nmsgid \"Wrong checksum for the National Business Register Number (REGON).\"\nmsgstr \"Wrong checksum for the National Business Register Number (REGON).\"\n\n#: pl/forms.py:212\nmsgid \"Enter a postal code in the format XX-XXX.\"\nmsgstr \"Enter a postal code in the format XX-XXX.\"\n\n#: pl/pl_voivodeships.py:8\nmsgid \"Lower Silesia\"\nmsgstr \"Lower Silesia\"\n\n#: pl/pl_voivodeships.py:9\nmsgid \"Kuyavia-Pomerania\"\nmsgstr \"Kuyavia-Pomerania\"\n\n#: pl/pl_voivodeships.py:10\nmsgid \"Lublin\"\nmsgstr \"Lublin\"\n\n#: pl/pl_voivodeships.py:11\nmsgid \"Lubusz\"\nmsgstr \"Lubusz\"\n\n#: pl/pl_voivodeships.py:12\nmsgid \"Lodz\"\nmsgstr \"Lodz\"\n\n#: pl/pl_voivodeships.py:13\nmsgid \"Lesser Poland\"\nmsgstr \"Lesser Poland\"\n\n#: pl/pl_voivodeships.py:14\nmsgid \"Masovia\"\nmsgstr \"Masovia\"\n\n#: pl/pl_voivodeships.py:15\nmsgid \"Opole\"\nmsgstr \"Opole\"\n\n#: pl/pl_voivodeships.py:16\nmsgid \"Subcarpatia\"\nmsgstr \"Subcarpatia\"\n\n#: pl/pl_voivodeships.py:17\nmsgid \"Podlasie\"\nmsgstr \"Podlasie\"\n\n#: pl/pl_voivodeships.py:18\nmsgid \"Pomerania\"\nmsgstr \"Pomerania\"\n\n#: pl/pl_voivodeships.py:19\nmsgid \"Silesia\"\nmsgstr \"Silesia\"\n\n#: pl/pl_voivodeships.py:20\nmsgid \"Swietokrzyskie\"\nmsgstr \"Swietokrzyskie\"\n\n#: pl/pl_voivodeships.py:21\nmsgid \"Warmia-Masuria\"\nmsgstr \"Warmia-Masuria\"\n\n#: pl/pl_voivodeships.py:22\nmsgid \"Greater Poland\"\nmsgstr \"Greater Poland\"\n\n#: pl/pl_voivodeships.py:23\nmsgid \"West Pomerania\"\nmsgstr \"West Pomerania\"\n\n#: pt/forms.py:19\nmsgid \"Enter a zip code in the format XXXX-XXX.\"\nmsgstr \"Enter a zip code in the format XXXX-XXX.\"\n\n#: pt/forms.py:39\nmsgid \"Phone numbers must have 9 digits, or start by + or 00.\"\nmsgstr \"Phone numbers must have 9 digits, or start by + or 00.\"\n\n#: ro/forms.py:22\nmsgid \"Enter a valid CIF.\"\nmsgstr \"Enter a valid CIF.\"\n\n#: ro/forms.py:59\nmsgid \"Enter a valid CNP.\"\nmsgstr \"Enter a valid CNP.\"\n\n#: ro/forms.py:143\nmsgid \"Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format\"\nmsgstr \"Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format\"\n\n#: ro/forms.py:175\nmsgid \"Phone numbers must be in XXXX-XXXXXX format.\"\nmsgstr \"Phone numbers must be in XXXX-XXXXXX format.\"\n\n#: ro/forms.py:200\nmsgid \"Enter a valid postal code in the format XXXXXX\"\nmsgstr \"Enter a valid postal code in the format XXXXXX\"\n\n#: ru/forms.py:37\nmsgid \"Enter a postal code in the format XXXXXX.\"\nmsgstr \"Enter a postal code in the format XXXXXX.\"\n\n#: ru/forms.py:50\nmsgid \"Enter a passport number in the format XXXX XXXXXX.\"\nmsgstr \"Enter a passport number in the format XXXX XXXXXX.\"\n\n#: ru/forms.py:63\nmsgid \"Enter a passport number in the format XX XXXXXXX.\"\nmsgstr \"Enter a passport number in the format XX XXXXXXX.\"\n\n#: ru/ru_regions.py:10\nmsgid \"Central Federal County\"\nmsgstr \"Central Federal County\"\n\n#: ru/ru_regions.py:11\nmsgid \"South Federal County\"\nmsgstr \"South Federal County\"\n\n#: ru/ru_regions.py:12\nmsgid \"North-West Federal County\"\nmsgstr \"North-West Federal County\"\n\n#: ru/ru_regions.py:13\nmsgid \"Far-East Federal County\"\nmsgstr \"Far-East Federal County\"\n\n#: ru/ru_regions.py:14\nmsgid \"Siberian Federal County\"\nmsgstr \"Siberian Federal County\"\n\n#: ru/ru_regions.py:15\nmsgid \"Ural Federal County\"\nmsgstr \"Ural Federal County\"\n\n#: ru/ru_regions.py:16\nmsgid \"Privolzhsky Federal County\"\nmsgstr \"Privolzhsky Federal County\"\n\n#: ru/ru_regions.py:17\nmsgid \"North-Caucasian Federal County\"\nmsgstr \"North-Caucasian Federal County\"\n\n#: ru/ru_regions.py:21\nmsgid \"Moskva\"\nmsgstr \"Moskva\"\n\n#: ru/ru_regions.py:22\nmsgid \"Saint-Peterburg\"\nmsgstr \"Saint-Peterburg\"\n\n#: ru/ru_regions.py:23\nmsgid \"Moskovskaya oblast'\"\nmsgstr \"Moskovskaya oblast'\"\n\n#: ru/ru_regions.py:24\nmsgid \"Adygeya, Respublika\"\nmsgstr \"Adygeya, Respublika\"\n\n#: ru/ru_regions.py:25\nmsgid \"Bashkortostan, Respublika\"\nmsgstr \"Bashkortostan, Respublika\"\n\n#: ru/ru_regions.py:26\nmsgid \"Buryatia, Respublika\"\nmsgstr \"Buryatia, Respublika\"\n\n#: ru/ru_regions.py:27\nmsgid \"Altay, Respublika\"\nmsgstr \"Altay, Respublika\"\n\n#: ru/ru_regions.py:28\nmsgid \"Dagestan, Respublika\"\nmsgstr \"Dagestan, Respublika\"\n\n#: ru/ru_regions.py:29\nmsgid \"Ingushskaya Respublika\"\nmsgstr \"Ingushskaya Respublika\"\n\n#: ru/ru_regions.py:30\nmsgid \"Kabardino-Balkarskaya Respublika\"\nmsgstr \"Kabardino-Balkarskaya Respublika\"\n\n#: ru/ru_regions.py:31\nmsgid \"Kalmykia, Respublika\"\nmsgstr \"Kalmykia, Respublika\"\n\n#: ru/ru_regions.py:32\nmsgid \"Karachaevo-Cherkesskaya Respublika\"\nmsgstr \"Karachaevo-Cherkesskaya Respublika\"\n\n#: ru/ru_regions.py:33\nmsgid \"Karelia, Respublika\"\nmsgstr \"Karelia, Respublika\"\n\n#: ru/ru_regions.py:34\nmsgid \"Komi, Respublika\"\nmsgstr \"Komi, Respublika\"\n\n#: ru/ru_regions.py:35\nmsgid \"Mariy Ehl, Respublika\"\nmsgstr \"Mariy Ehl, Respublika\"\n\n#: ru/ru_regions.py:36\nmsgid \"Mordovia, Respublika\"\nmsgstr \"Mordovia, Respublika\"\n\n#: ru/ru_regions.py:37\nmsgid \"Sakha, Respublika (Yakutiya)\"\nmsgstr \"Sakha, Respublika (Yakutiya)\"\n\n#: ru/ru_regions.py:38\nmsgid \"Severnaya Osetia, Respublika (Alania)\"\nmsgstr \"Severnaya Osetia, Respublika (Alania)\"\n\n#: ru/ru_regions.py:39\nmsgid \"Tatarstan, Respublika\"\nmsgstr \"Tatarstan, Respublika\"\n\n#: ru/ru_regions.py:40\nmsgid \"Tyva, Respublika (Tuva)\"\nmsgstr \"Tyva, Respublika (Tuva)\"\n\n#: ru/ru_regions.py:41\nmsgid \"Udmurtskaya Respublika\"\nmsgstr \"Udmurtskaya Respublika\"\n\n#: ru/ru_regions.py:42\nmsgid \"Khakassiya, Respublika\"\nmsgstr \"Khakassiya, Respublika\"\n\n#: ru/ru_regions.py:43\nmsgid \"Chechenskaya Respublika\"\nmsgstr \"Chechenskaya Respublika\"\n\n#: ru/ru_regions.py:44\nmsgid \"Chuvashskaya Respublika\"\nmsgstr \"Chuvashskaya Respublika\"\n\n#: ru/ru_regions.py:45\nmsgid \"Altayskiy Kray\"\nmsgstr \"Altayskiy Kray\"\n\n#: ru/ru_regions.py:46\nmsgid \"Zabaykalskiy Kray\"\nmsgstr \"Zabaykalskiy Kray\"\n\n#: ru/ru_regions.py:47\nmsgid \"Kamchatskiy Kray\"\nmsgstr \"Kamchatskiy Kray\"\n\n#: ru/ru_regions.py:48\nmsgid \"Krasnodarskiy Kray\"\nmsgstr \"Krasnodarskiy Kray\"\n\n#: ru/ru_regions.py:49\nmsgid \"Krasnoyarskiy Kray\"\nmsgstr \"Krasnoyarskiy Kray\"\n\n#: ru/ru_regions.py:50\nmsgid \"Permskiy Kray\"\nmsgstr \"Permskiy Kray\"\n\n#: ru/ru_regions.py:51\nmsgid \"Primorskiy Kray\"\nmsgstr \"Primorskiy Kray\"\n\n#: ru/ru_regions.py:52\nmsgid \"Stavropol'siyy Kray\"\nmsgstr \"Stavropol'siyy Kray\"\n\n#: ru/ru_regions.py:53\nmsgid \"Khabarovskiy Kray\"\nmsgstr \"Khabarovskiy Kray\"\n\n#: ru/ru_regions.py:54\nmsgid \"Amurskaya oblast'\"\nmsgstr \"Amurskaya oblast'\"\n\n#: ru/ru_regions.py:55\nmsgid \"Arkhangel'skaya oblast'\"\nmsgstr \"Arkhangel'skaya oblast'\"\n\n#: ru/ru_regions.py:56\nmsgid \"Astrakhanskaya oblast'\"\nmsgstr \"Astrakhanskaya oblast'\"\n\n#: ru/ru_regions.py:57\nmsgid \"Belgorodskaya oblast'\"\nmsgstr \"Belgorodskaya oblast'\"\n\n#: ru/ru_regions.py:58\nmsgid \"Bryanskaya oblast'\"\nmsgstr \"Bryanskaya oblast'\"\n\n#: ru/ru_regions.py:59\nmsgid \"Vladimirskaya oblast'\"\nmsgstr \"Vladimirskaya oblast'\"\n\n#: ru/ru_regions.py:60\nmsgid \"Volgogradskaya oblast'\"\nmsgstr \"Volgogradskaya oblast'\"\n\n#: ru/ru_regions.py:61\nmsgid \"Vologodskaya oblast'\"\nmsgstr \"Vologodskaya oblast'\"\n\n#: ru/ru_regions.py:62\nmsgid \"Voronezhskaya oblast'\"\nmsgstr \"Voronezhskaya oblast'\"\n\n#: ru/ru_regions.py:63\nmsgid \"Ivanovskaya oblast'\"\nmsgstr \"Ivanovskaya oblast'\"\n\n#: ru/ru_regions.py:64\nmsgid \"Irkutskaya oblast'\"\nmsgstr \"Irkutskaya oblast'\"\n\n#: ru/ru_regions.py:65\nmsgid \"Kaliningradskaya oblast'\"\nmsgstr \"Kaliningradskaya oblast'\"\n\n#: ru/ru_regions.py:66\nmsgid \"Kaluzhskaya oblast'\"\nmsgstr \"Kaluzhskaya oblast'\"\n\n#: ru/ru_regions.py:67\nmsgid \"Kemerovskaya oblast'\"\nmsgstr \"Kemerovskaya oblast'\"\n\n#: ru/ru_regions.py:68\nmsgid \"Kirovskaya oblast'\"\nmsgstr \"Kirovskaya oblast'\"\n\n#: ru/ru_regions.py:69\nmsgid \"Kostromskaya oblast'\"\nmsgstr \"Kostromskaya oblast'\"\n\n#: ru/ru_regions.py:70\nmsgid \"Kurganskaya oblast'\"\nmsgstr \"Kurganskaya oblast'\"\n\n#: ru/ru_regions.py:71\nmsgid \"Kurskaya oblast'\"\nmsgstr \"Kurskaya oblast'\"\n\n#: ru/ru_regions.py:72\nmsgid \"Leningradskaya oblast'\"\nmsgstr \"Leningradskaya oblast'\"\n\n#: ru/ru_regions.py:73\nmsgid \"Lipeckaya oblast'\"\nmsgstr \"Lipeckaya oblast'\"\n\n#: ru/ru_regions.py:74\nmsgid \"Magadanskaya oblast'\"\nmsgstr \"Magadanskaya oblast'\"\n\n#: ru/ru_regions.py:75\nmsgid \"Murmanskaya oblast'\"\nmsgstr \"Murmanskaya oblast'\"\n\n#: ru/ru_regions.py:76\nmsgid \"Nizhegorodskaja oblast'\"\nmsgstr \"Nizhegorodskaja oblast'\"\n\n#: ru/ru_regions.py:77\nmsgid \"Novgorodskaya oblast'\"\nmsgstr \"Novgorodskaya oblast'\"\n\n#: ru/ru_regions.py:78\nmsgid \"Novosibirskaya oblast'\"\nmsgstr \"Novosibirskaya oblast'\"\n\n#: ru/ru_regions.py:79\nmsgid \"Omskaya oblast'\"\nmsgstr \"Omskaya oblast'\"\n\n#: ru/ru_regions.py:80\nmsgid \"Orenburgskaya oblast'\"\nmsgstr \"Orenburgskaya oblast'\"\n\n#: ru/ru_regions.py:81\nmsgid \"Orlovskaya oblast'\"\nmsgstr \"Orlovskaya oblast'\"\n\n#: ru/ru_regions.py:82\nmsgid \"Penzenskaya oblast'\"\nmsgstr \"Penzenskaya oblast'\"\n\n#: ru/ru_regions.py:83\nmsgid \"Pskovskaya oblast'\"\nmsgstr \"Pskovskaya oblast'\"\n\n#: ru/ru_regions.py:84\nmsgid \"Rostovskaya oblast'\"\nmsgstr \"Rostovskaya oblast'\"\n\n#: ru/ru_regions.py:85\nmsgid \"Rjazanskaya oblast'\"\nmsgstr \"Rjazanskaya oblast'\"\n\n#: ru/ru_regions.py:86\nmsgid \"Samarskaya oblast'\"\nmsgstr \"Samarskaya oblast'\"\n\n#: ru/ru_regions.py:87\nmsgid \"Saratovskaya oblast'\"\nmsgstr \"Saratovskaya oblast'\"\n\n#: ru/ru_regions.py:88\nmsgid \"Sakhalinskaya oblast'\"\nmsgstr \"Sakhalinskaya oblast'\"\n\n#: ru/ru_regions.py:89\nmsgid \"Sverdlovskaya oblast'\"\nmsgstr \"Sverdlovskaya oblast'\"\n\n#: ru/ru_regions.py:90\nmsgid \"Smolenskaya oblast'\"\nmsgstr \"Smolenskaya oblast'\"\n\n#: ru/ru_regions.py:91\nmsgid \"Tambovskaya oblast'\"\nmsgstr \"Tambovskaya oblast'\"\n\n#: ru/ru_regions.py:92\nmsgid \"Tverskaya oblast'\"\nmsgstr \"Tverskaya oblast'\"\n\n#: ru/ru_regions.py:93\nmsgid \"Tomskaya oblast'\"\nmsgstr \"Tomskaya oblast'\"\n\n#: ru/ru_regions.py:94\nmsgid \"Tul'skaya oblast'\"\nmsgstr \"Tul'skaya oblast'\"\n\n#: ru/ru_regions.py:95\nmsgid \"Tyumenskaya oblast'\"\nmsgstr \"Tyumenskaya oblast'\"\n\n#: ru/ru_regions.py:96\nmsgid \"Ul'ianovskaya oblast'\"\nmsgstr \"Ul'ianovskaya oblast'\"\n\n#: ru/ru_regions.py:97\nmsgid \"Chelyabinskaya oblast'\"\nmsgstr \"Chelyabinskaya oblast'\"\n\n#: ru/ru_regions.py:98\nmsgid \"Yaroslavskaya oblast'\"\nmsgstr \"Yaroslavskaya oblast'\"\n\n#: ru/ru_regions.py:99\nmsgid \"Evreyskaya avtonomnaja oblast'\"\nmsgstr \"Evreyskaya avtonomnaja oblast'\"\n\n#: ru/ru_regions.py:100\nmsgid \"Neneckiy autonomnyy okrug\"\nmsgstr \"Neneckiy autonomnyy okrug\"\n\n#: ru/ru_regions.py:101\nmsgid \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\nmsgstr \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\n\n#: ru/ru_regions.py:102\nmsgid \"Chukotskiy avtonomnyy okrug\"\nmsgstr \"Chukotskiy avtonomnyy okrug\"\n\n#: ru/ru_regions.py:103\nmsgid \"Yamalo-Neneckiy avtonomnyy okrug\"\nmsgstr \"Yamalo-Neneckiy avtonomnyy okrug\"\n\n#: se/forms.py:54\nmsgid \"Enter a valid Swedish organisation number.\"\nmsgstr \"Enter a valid Swedish organisation number.\"\n\n#: se/forms.py:111\nmsgid \"Enter a valid Swedish personal identity number.\"\nmsgstr \"Enter a valid Swedish personal identity number.\"\n\n#: se/forms.py:112\nmsgid \"Co-ordination numbers are not allowed.\"\nmsgstr \"Co-ordination numbers are not allowed.\"\n\n#: se/forms.py:154\nmsgid \"Enter a Swedish postal code in the format XXXXX.\"\nmsgstr \"Enter a Swedish postal code in the format XXXXX.\"\n\n#: se/se_counties.py:16\nmsgid \"Stockholm\"\nmsgstr \"Stockholm\"\n\n#: se/se_counties.py:17\nmsgid \"Västerbotten\"\nmsgstr \"Västerbotten\"\n\n#: se/se_counties.py:18\nmsgid \"Norrbotten\"\nmsgstr \"Norrbotten\"\n\n#: se/se_counties.py:19\nmsgid \"Uppsala\"\nmsgstr \"Uppsala\"\n\n#: se/se_counties.py:20\nmsgid \"Södermanland\"\nmsgstr \"Södermanland\"\n\n#: se/se_counties.py:21\nmsgid \"Östergötland\"\nmsgstr \"Östergötland\"\n\n#: se/se_counties.py:22\nmsgid \"Jönköping\"\nmsgstr \"Jönköping\"\n\n#: se/se_counties.py:23\nmsgid \"Kronoberg\"\nmsgstr \"Kronoberg\"\n\n#: se/se_counties.py:24\nmsgid \"Kalmar\"\nmsgstr \"Kalmar\"\n\n#: se/se_counties.py:25\nmsgid \"Gotland\"\nmsgstr \"Gotland\"\n\n#: se/se_counties.py:26\nmsgid \"Blekinge\"\nmsgstr \"Blekinge\"\n\n#: se/se_counties.py:27\nmsgid \"Skåne\"\nmsgstr \"Skåne\"\n\n#: se/se_counties.py:28\nmsgid \"Halland\"\nmsgstr \"Halland\"\n\n#: se/se_counties.py:29\nmsgid \"Västra Götaland\"\nmsgstr \"Västra Götaland\"\n\n#: se/se_counties.py:30\nmsgid \"Värmland\"\nmsgstr \"Värmland\"\n\n#: se/se_counties.py:31\nmsgid \"Örebro\"\nmsgstr \"Örebro\"\n\n#: se/se_counties.py:32\nmsgid \"Västmanland\"\nmsgstr \"Västmanland\"\n\n#: se/se_counties.py:33\nmsgid \"Dalarna\"\nmsgstr \"Dalarna\"\n\n#: se/se_counties.py:34\nmsgid \"Gävleborg\"\nmsgstr \"Gävleborg\"\n\n#: se/se_counties.py:35\nmsgid \"Västernorrland\"\nmsgstr \"Västernorrland\"\n\n#: se/se_counties.py:36\nmsgid \"Jämtland\"\nmsgstr \"Jämtland\"\n\n#: si/forms.py:25\nmsgid \"The first 7 digits of the EMSO must represent a valid past date.\"\nmsgstr \"The first 7 digits of the EMSO must represent a valid past date.\"\n\n#: si/forms.py:26\nmsgid \"The EMSO is not valid.\"\nmsgstr \"The EMSO is not valid.\"\n\n#: si/forms.py:86\nmsgid \"Enter a valid tax number in form SIXXXXXXXX\"\nmsgstr \"Enter a valid tax number in form SIXXXXXXXX\"\n\n#: si/forms.py:151\nmsgid \"Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.\"\nmsgstr \"Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.\"\n\n#: sk/sk_districts.py:8\nmsgid \"Banska Bystrica\"\nmsgstr \"Banska Bystrica\"\n\n#: sk/sk_districts.py:9\nmsgid \"Banska Stiavnica\"\nmsgstr \"Banska Stiavnica\"\n\n#: sk/sk_districts.py:10\nmsgid \"Bardejov\"\nmsgstr \"Bardejov\"\n\n#: sk/sk_districts.py:11\nmsgid \"Banovce nad Bebravou\"\nmsgstr \"Banovce nad Bebravou\"\n\n#: sk/sk_districts.py:12\nmsgid \"Brezno\"\nmsgstr \"Brezno\"\n\n#: sk/sk_districts.py:13\nmsgid \"Bratislava I\"\nmsgstr \"Bratislava I\"\n\n#: sk/sk_districts.py:14\nmsgid \"Bratislava II\"\nmsgstr \"Bratislava II\"\n\n#: sk/sk_districts.py:15\nmsgid \"Bratislava III\"\nmsgstr \"Bratislava III\"\n\n#: sk/sk_districts.py:16\nmsgid \"Bratislava IV\"\nmsgstr \"Bratislava IV\"\n\n#: sk/sk_districts.py:17\nmsgid \"Bratislava V\"\nmsgstr \"Bratislava V\"\n\n#: sk/sk_districts.py:18\nmsgid \"Bytca\"\nmsgstr \"Bytca\"\n\n#: sk/sk_districts.py:19\nmsgid \"Cadca\"\nmsgstr \"Cadca\"\n\n#: sk/sk_districts.py:20\nmsgid \"Detva\"\nmsgstr \"Detva\"\n\n#: sk/sk_districts.py:21\nmsgid \"Dolny Kubin\"\nmsgstr \"Dolny Kubin\"\n\n#: sk/sk_districts.py:22\nmsgid \"Dunajska Streda\"\nmsgstr \"Dunajska Streda\"\n\n#: sk/sk_districts.py:23\nmsgid \"Galanta\"\nmsgstr \"Galanta\"\n\n#: sk/sk_districts.py:24\nmsgid \"Gelnica\"\nmsgstr \"Gelnica\"\n\n#: sk/sk_districts.py:25\nmsgid \"Hlohovec\"\nmsgstr \"Hlohovec\"\n\n#: sk/sk_districts.py:26\nmsgid \"Humenne\"\nmsgstr \"Humenne\"\n\n#: sk/sk_districts.py:27\nmsgid \"Ilava\"\nmsgstr \"Ilava\"\n\n#: sk/sk_districts.py:28\nmsgid \"Kezmarok\"\nmsgstr \"Kezmarok\"\n\n#: sk/sk_districts.py:29\nmsgid \"Komarno\"\nmsgstr \"Komarno\"\n\n#: sk/sk_districts.py:30\nmsgid \"Kosice I\"\nmsgstr \"Kosice I\"\n\n#: sk/sk_districts.py:31\nmsgid \"Kosice II\"\nmsgstr \"Kosice II\"\n\n#: sk/sk_districts.py:32\nmsgid \"Kosice III\"\nmsgstr \"Kosice III\"\n\n#: sk/sk_districts.py:33\nmsgid \"Kosice IV\"\nmsgstr \"Kosice IV\"\n\n#: sk/sk_districts.py:34\nmsgid \"Kosice - okolie\"\nmsgstr \"Kosice - okolie\"\n\n#: sk/sk_districts.py:35\nmsgid \"Krupina\"\nmsgstr \"Krupina\"\n\n#: sk/sk_districts.py:36\nmsgid \"Kysucke Nove Mesto\"\nmsgstr \"Kysucke Nove Mesto\"\n\n#: sk/sk_districts.py:37\nmsgid \"Levice\"\nmsgstr \"Levice\"\n\n#: sk/sk_districts.py:38\nmsgid \"Levoca\"\nmsgstr \"Levoca\"\n\n#: sk/sk_districts.py:39\nmsgid \"Liptovsky Mikulas\"\nmsgstr \"Liptovsky Mikulas\"\n\n#: sk/sk_districts.py:40\nmsgid \"Lucenec\"\nmsgstr \"Lucenec\"\n\n#: sk/sk_districts.py:41\nmsgid \"Malacky\"\nmsgstr \"Malacky\"\n\n#: sk/sk_districts.py:42\nmsgid \"Martin\"\nmsgstr \"Martin\"\n\n#: sk/sk_districts.py:43\nmsgid \"Medzilaborce\"\nmsgstr \"Medzilaborce\"\n\n#: sk/sk_districts.py:44\nmsgid \"Michalovce\"\nmsgstr \"Michalovce\"\n\n#: sk/sk_districts.py:45\nmsgid \"Myjava\"\nmsgstr \"Myjava\"\n\n#: sk/sk_districts.py:46\nmsgid \"Namestovo\"\nmsgstr \"Namestovo\"\n\n#: sk/sk_districts.py:47\nmsgid \"Nitra\"\nmsgstr \"Nitra\"\n\n#: sk/sk_districts.py:48\nmsgid \"Nove Mesto nad Vahom\"\nmsgstr \"Nove Mesto nad Vahom\"\n\n#: sk/sk_districts.py:49\nmsgid \"Nove Zamky\"\nmsgstr \"Nove Zamky\"\n\n#: sk/sk_districts.py:50\nmsgid \"Partizanske\"\nmsgstr \"Partizanske\"\n\n#: sk/sk_districts.py:51\nmsgid \"Pezinok\"\nmsgstr \"Pezinok\"\n\n#: sk/sk_districts.py:52\nmsgid \"Piestany\"\nmsgstr \"Piestany\"\n\n#: sk/sk_districts.py:53\nmsgid \"Poltar\"\nmsgstr \"Poltar\"\n\n#: sk/sk_districts.py:54\nmsgid \"Poprad\"\nmsgstr \"Poprad\"\n\n#: sk/sk_districts.py:55\nmsgid \"Povazska Bystrica\"\nmsgstr \"Povazska Bystrica\"\n\n#: sk/sk_districts.py:56\nmsgid \"Presov\"\nmsgstr \"Presov\"\n\n#: sk/sk_districts.py:57\nmsgid \"Prievidza\"\nmsgstr \"Prievidza\"\n\n#: sk/sk_districts.py:58\nmsgid \"Puchov\"\nmsgstr \"Puchov\"\n\n#: sk/sk_districts.py:59\nmsgid \"Revuca\"\nmsgstr \"Revuca\"\n\n#: sk/sk_districts.py:60\nmsgid \"Rimavska Sobota\"\nmsgstr \"Rimavska Sobota\"\n\n#: sk/sk_districts.py:61\nmsgid \"Roznava\"\nmsgstr \"Roznava\"\n\n#: sk/sk_districts.py:62\nmsgid \"Ruzomberok\"\nmsgstr \"Ruzomberok\"\n\n#: sk/sk_districts.py:63\nmsgid \"Sabinov\"\nmsgstr \"Sabinov\"\n\n#: sk/sk_districts.py:64\nmsgid \"Senec\"\nmsgstr \"Senec\"\n\n#: sk/sk_districts.py:65\nmsgid \"Senica\"\nmsgstr \"Senica\"\n\n#: sk/sk_districts.py:66\nmsgid \"Skalica\"\nmsgstr \"Skalica\"\n\n#: sk/sk_districts.py:67\nmsgid \"Snina\"\nmsgstr \"Snina\"\n\n#: sk/sk_districts.py:68\nmsgid \"Sobrance\"\nmsgstr \"Sobrance\"\n\n#: sk/sk_districts.py:69\nmsgid \"Spisska Nova Ves\"\nmsgstr \"Spisska Nova Ves\"\n\n#: sk/sk_districts.py:70\nmsgid \"Stara Lubovna\"\nmsgstr \"Stara Lubovna\"\n\n#: sk/sk_districts.py:71\nmsgid \"Stropkov\"\nmsgstr \"Stropkov\"\n\n#: sk/sk_districts.py:72\nmsgid \"Svidnik\"\nmsgstr \"Svidnik\"\n\n#: sk/sk_districts.py:73\nmsgid \"Sala\"\nmsgstr \"Sala\"\n\n#: sk/sk_districts.py:74\nmsgid \"Topolcany\"\nmsgstr \"Topolcany\"\n\n#: sk/sk_districts.py:75\nmsgid \"Trebisov\"\nmsgstr \"Trebisov\"\n\n#: sk/sk_districts.py:76\nmsgid \"Trencin\"\nmsgstr \"Trencin\"\n\n#: sk/sk_districts.py:77\nmsgid \"Trnava\"\nmsgstr \"Trnava\"\n\n#: sk/sk_districts.py:78\nmsgid \"Turcianske Teplice\"\nmsgstr \"Turcianske Teplice\"\n\n#: sk/sk_districts.py:79\nmsgid \"Tvrdosin\"\nmsgstr \"Tvrdosin\"\n\n#: sk/sk_districts.py:80\nmsgid \"Velky Krtis\"\nmsgstr \"Velky Krtis\"\n\n#: sk/sk_districts.py:81\nmsgid \"Vranov nad Toplou\"\nmsgstr \"Vranov nad Toplou\"\n\n#: sk/sk_districts.py:82\nmsgid \"Zlate Moravce\"\nmsgstr \"Zlate Moravce\"\n\n#: sk/sk_districts.py:83\nmsgid \"Zvolen\"\nmsgstr \"Zvolen\"\n\n#: sk/sk_districts.py:84\nmsgid \"Zarnovica\"\nmsgstr \"Zarnovica\"\n\n#: sk/sk_districts.py:85\nmsgid \"Ziar nad Hronom\"\nmsgstr \"Ziar nad Hronom\"\n\n#: sk/sk_districts.py:86\nmsgid \"Zilina\"\nmsgstr \"Zilina\"\n\n#: sk/sk_regions.py:8\nmsgid \"Banska Bystrica region\"\nmsgstr \"Banska Bystrica region\"\n\n#: sk/sk_regions.py:9\nmsgid \"Bratislava region\"\nmsgstr \"Bratislava region\"\n\n#: sk/sk_regions.py:10\nmsgid \"Kosice region\"\nmsgstr \"Kosice region\"\n\n#: sk/sk_regions.py:11\nmsgid \"Nitra region\"\nmsgstr \"Nitra region\"\n\n#: sk/sk_regions.py:12\nmsgid \"Presov region\"\nmsgstr \"Presov region\"\n\n#: sk/sk_regions.py:13\nmsgid \"Trencin region\"\nmsgstr \"Trencin region\"\n\n#: sk/sk_regions.py:14\nmsgid \"Trnava region\"\nmsgstr \"Trnava region\"\n\n#: sk/sk_regions.py:15\nmsgid \"Zilina region\"\nmsgstr \"Zilina region\"\n\n#: tr/forms.py:21\nmsgid \"Enter a postal code in the format XXXXX.\"\nmsgstr \"Enter a postal code in the format XXXXX.\"\n\n#: tr/forms.py:42\nmsgid \"Phone numbers must be in 0XXX XXX XXXX format.\"\nmsgstr \"Phone numbers must be in 0XXX XXX XXXX format.\"\n\n#: tr/forms.py:69\nmsgid \"Enter a valid Turkish Identification number.\"\nmsgstr \"Enter a valid Turkish Identification number.\"\n\n#: tr/forms.py:70\nmsgid \"Turkish Identification number must be 11 digits.\"\nmsgstr \"Turkish Identification number must be 11 digits.\"\n\n#: us/forms.py:21\nmsgid \"Enter a zip code in the format XXXXX or XXXXX-XXXX.\"\nmsgstr \"Enter a zip code in the format XXXXX or XXXXX-XXXX.\"\n\n#: us/forms.py:59\nmsgid \"Enter a valid U.S. Social Security number in XXX-XX-XXXX format.\"\nmsgstr \"Enter a valid U.S. Social Security number in XXX-XX-XXXX format.\"\n\n#: us/forms.py:92\nmsgid \"Enter a U.S. state or territory.\"\nmsgstr \"Enter a U.S. state or territory.\"\n\n#: us/models.py:8\nmsgid \"U.S. state (two uppercase letters)\"\nmsgstr \"U.S. state (two uppercase letters)\"\n\n#: us/models.py:17\nmsgid \"U.S. postal code (two uppercase letters)\"\nmsgstr \"U.S. postal code (two uppercase letters)\"\n\n#: us/models.py:26\nmsgid \"Phone number\"\nmsgstr \"Phone number\"\n\n#: uy/forms.py:29\nmsgid \"Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.\"\nmsgstr \"Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.\"\n\n#: uy/forms.py:31\nmsgid \"Enter a valid CI number.\"\nmsgstr \"Enter a valid CI number.\"\n\n#: za/forms.py:22\nmsgid \"Enter a valid South African ID number\"\nmsgstr \"Enter a valid South African ID number\"\n\n#: za/forms.py:56\nmsgid \"Enter a valid South African postal code\"\nmsgstr \"Enter a valid South African postal code\"\n\n#: za/za_provinces.py:4\nmsgid \"Eastern Cape\"\nmsgstr \"Eastern Cape\"\n\n#: za/za_provinces.py:5\nmsgid \"Free State\"\nmsgstr \"Free State\"\n\n#: za/za_provinces.py:6\nmsgid \"Gauteng\"\nmsgstr \"Gauteng\"\n\n#: za/za_provinces.py:7\nmsgid \"KwaZulu-Natal\"\nmsgstr \"KwaZulu-Natal\"\n\n#: za/za_provinces.py:8\nmsgid \"Limpopo\"\nmsgstr \"Limpopo\"\n\n#: za/za_provinces.py:9\nmsgid \"Mpumalanga\"\nmsgstr \"Mpumalanga\"\n\n#: za/za_provinces.py:10\nmsgid \"Northern Cape\"\nmsgstr \"Northern Cape\"\n\n#: za/za_provinces.py:11\nmsgid \"North West\"\nmsgstr \"North West\"\n\n#: za/za_provinces.py:12\nmsgid \"Western Cape\"\nmsgstr \"Western Cape\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/locale/eo/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Baptiste  <baptiste+transifex@darthenay.fr>, 2012.\n# Jaffa McNeill <jaffa.mcneill@gmail.com>, 2012.\n#   <kristjan.schmidt@googlemail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-10-17 09:17+0000\\n\"\n\"Last-Translator: Baptiste <baptiste+transifex@darthenay.fr>\\n\"\n\"Language-Team: Esperanto (http://www.transifex.com/projects/p/django/\"\n\"language/eo/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: eo\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: ar/forms.py:30\nmsgid \"Enter a postal code in the format NNNN or ANNNNAAA.\"\nmsgstr \"Enigu poŝtan kodon en la formato NNNN aŭ ANNNNAAA.\"\n\n#: ar/forms.py:52 br/forms.py:95 br/forms.py:134 pe/forms.py:27 pe/forms.py:55\nmsgid \"This field requires only numbers.\"\nmsgstr \"Ĉi tiu kampo bezonas sole nombrojn.\"\n\n#: ar/forms.py:53\nmsgid \"This field requires 7 or 8 digits.\"\nmsgstr \"Ĉi tiu kampo bezonas 7 aŭ 8 ciferoj.\"\n\n#: ar/forms.py:82\nmsgid \"Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.\"\nmsgstr \"Enigu validan CUIT en XX-XXXXXXXX-X aŭ XXXXXXXXXXXX formato.\"\n\n#: ar/forms.py:83\nmsgid \"Invalid CUIT.\"\nmsgstr \"Malvalida CUIT.\"\n\n#: ar/forms.py:84\nmsgid \"Invalid legal type. Type must be 27, 20, 23 or 30.\"\nmsgstr \"\"\n\n#: at/at_states.py:5\nmsgid \"Burgenland\"\nmsgstr \"Burgenlando\"\n\n#: at/at_states.py:6\nmsgid \"Carinthia\"\nmsgstr \"Karintio\"\n\n#: at/at_states.py:7\nmsgid \"Lower Austria\"\nmsgstr \"Malsupra Aŭstrujo\"\n\n#: at/at_states.py:8\nmsgid \"Upper Austria\"\nmsgstr \"Supra Aŭstrujo\"\n\n#: at/at_states.py:9\nmsgid \"Salzburg\"\nmsgstr \"Salcburgo\"\n\n#: at/at_states.py:10\nmsgid \"Styria\"\nmsgstr \"Stirio\"\n\n#: at/at_states.py:11\nmsgid \"Tyrol\"\nmsgstr \"Tirolo\"\n\n#: at/at_states.py:12\nmsgid \"Vorarlberg\"\nmsgstr \"Vorarlbergo\"\n\n#: at/at_states.py:13\nmsgid \"Vienna\"\nmsgstr \"Vieno\"\n\n#: at/forms.py:22 ch/forms.py:22 no/forms.py:19\nmsgid \"Enter a zip code in the format XXXX.\"\nmsgstr \"Enigu poŝtan kodon en la formato XXXX\"\n\n#: at/forms.py:50\nmsgid \"Enter a valid Austrian Social Security Number in XXXX XXXXXX format.\"\nmsgstr \"Enigu validan Aŭstran Socialasekuran numeron en XXXX XXXXXX formato.\"\n\n#: au/forms.py:26\nmsgid \"Enter a 4 digit postcode.\"\nmsgstr \"Enigu 4 ciferon postkodon.\"\n\n#: au/models.py:9\nmsgid \"Australian State\"\nmsgstr \"Aŭstralia ŝtato\"\n\n#: au/models.py:19\nmsgid \"Australian Postcode\"\nmsgstr \"Aŭstralia Posta Kodo\"\n\n#: au/models.py:33\nmsgid \"Australian Phone number\"\nmsgstr \"Aŭstralia Telefonnumero\"\n\n#: be/be_provinces.py:5\nmsgid \"Antwerp\"\nmsgstr \"Antverpeno\"\n\n#: be/be_provinces.py:6\nmsgid \"Brussels\"\nmsgstr \"Bruselo\"\n\n#: be/be_provinces.py:7\nmsgid \"East Flanders\"\nmsgstr \"Orienta Flandrio\"\n\n#: be/be_provinces.py:8\nmsgid \"Flemish Brabant\"\nmsgstr \"Flandra Brabanto\"\n\n#: be/be_provinces.py:9\nmsgid \"Hainaut\"\nmsgstr \"Henegovio\"\n\n#: be/be_provinces.py:10\nmsgid \"Liege\"\nmsgstr \"Lieĝo\"\n\n#: be/be_provinces.py:11 nl/nl_provinces.py:9\nmsgid \"Limburg\"\nmsgstr \"Limburgo\"\n\n#: be/be_provinces.py:12\nmsgid \"Luxembourg\"\nmsgstr \"Luksemburgio\"\n\n#: be/be_provinces.py:13\nmsgid \"Namur\"\nmsgstr \"Namuro\"\n\n#: be/be_provinces.py:14\nmsgid \"Walloon Brabant\"\nmsgstr \"Valona Brabanto\"\n\n#: be/be_provinces.py:15\nmsgid \"West Flanders\"\nmsgstr \"Okcidenta Flandrio\"\n\n#: be/be_regions.py:5\nmsgid \"Brussels Capital Region\"\nmsgstr \"Bruselo Ĉefurbo Regiono\"\n\n#: be/be_regions.py:6\nmsgid \"Flemish Region\"\nmsgstr \"Flandra Regiono\"\n\n#: be/be_regions.py:7\nmsgid \"Wallonia\"\nmsgstr \"Valonio\"\n\n#: be/forms.py:25\nmsgid \"Enter a valid postal code in the range and format 1XXX - 9XXX.\"\nmsgstr \"Enigu validan poŝtan kodon en la variado kaj formato 1XXX - 9XXX.\"\n\n#: be/forms.py:48\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\nmsgstr \"\"\n\"Enigu validan telefonnumeron en unu el la formatoj 0x xxx xx xx, 0xx xx xx \"\n\"xx, 04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, \"\n\"0xx.xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\n\n#: br/forms.py:22\nmsgid \"Enter a zip code in the format XXXXX-XXX.\"\nmsgstr \"Enigu poŝtan kodon en la formato XXXXX-XXX\"\n\n#: br/forms.py:31\nmsgid \"Phone numbers must be in XX-XXXX-XXXX format.\"\nmsgstr \"Telefonnumeroj devas esti en la formato XX-XXXX-XXXX.\"\n\n#: br/forms.py:58\nmsgid \"\"\n\"Select a valid brazilian state. That state is not one of the available \"\n\"states.\"\nmsgstr \"\"\n\"Elektu validan brazilan staton. Kiu stato ne estas unu el la haveblaj statoj.\"\n\n#: br/forms.py:93\nmsgid \"Invalid CPF number.\"\nmsgstr \"Nevalida CPF numero\"\n\n#: br/forms.py:94\nmsgid \"This field requires at most 11 digits or 14 characters.\"\nmsgstr \"Ĉi tiu kampo bezonas maksimume 11 ciferojn aŭ 14 karakterojn.\"\n\n#: br/forms.py:133\nmsgid \"Invalid CNPJ number.\"\nmsgstr \"Nevalida CNPJ numero.\"\n\n#: br/forms.py:135\nmsgid \"This field requires at least 14 digits\"\nmsgstr \"Ĉi tiu kampo bezonas almenaŭ 14 ciferojn\"\n\n#: ca/forms.py:29\nmsgid \"Enter a postal code in the format XXX XXX.\"\nmsgstr \"Enigu poŝtan kodon en la formato XXX XXX\"\n\n#: ca/forms.py:47 us/forms.py:30\nmsgid \"Phone numbers must be in XXX-XXX-XXXX format.\"\nmsgstr \"Telefonnumeroj devus esti formate kiel XXX-XXX-XXXX.\"\n\n#: ca/forms.py:69\nmsgid \"Enter a Canadian province or territory.\"\nmsgstr \"\"\n\n#: ca/forms.py:110\nmsgid \"Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.\"\nmsgstr \"Enigu validan Kanadan Socian Asekuron nombron en XXX-XXX-XXX formato.\"\n\n#: ch/ch_states.py:5\nmsgid \"Aargau\"\nmsgstr \"Argovio\"\n\n#: ch/ch_states.py:6\nmsgid \"Appenzell Innerrhoden\"\nmsgstr \"Apencelo Interna\"\n\n#: ch/ch_states.py:7\nmsgid \"Appenzell Ausserrhoden\"\nmsgstr \"Apencelo Ekstera\"\n\n#: ch/ch_states.py:8\nmsgid \"Basel-Stadt\"\nmsgstr \"Bazelo-Stado\"\n\n#: ch/ch_states.py:9\nmsgid \"Basel-Land\"\nmsgstr \"Bazelo-Lando\"\n\n#: ch/ch_states.py:10\nmsgid \"Berne\"\nmsgstr \"Berno\"\n\n#: ch/ch_states.py:11\nmsgid \"Fribourg\"\nmsgstr \"Friburgo\"\n\n#: ch/ch_states.py:12\nmsgid \"Geneva\"\nmsgstr \"Ĝenevo\"\n\n#: ch/ch_states.py:13\nmsgid \"Glarus\"\nmsgstr \"Glaruso\"\n\n#: ch/ch_states.py:14\nmsgid \"Graubuenden\"\nmsgstr \"Graŭbendeno\"\n\n#: ch/ch_states.py:15\nmsgid \"Jura\"\nmsgstr \"Juro\"\n\n#: ch/ch_states.py:16\nmsgid \"Lucerne\"\nmsgstr \"Lucerno\"\n\n#: ch/ch_states.py:17\nmsgid \"Neuchatel\"\nmsgstr \"Neuŝatelo\"\n\n#: ch/ch_states.py:18\nmsgid \"Nidwalden\"\nmsgstr \"Nidvaldo\"\n\n#: ch/ch_states.py:19\nmsgid \"Obwalden\"\nmsgstr \"Obvaldo\"\n\n#: ch/ch_states.py:20\nmsgid \"Schaffhausen\"\nmsgstr \"Ŝafhaŭzo\"\n\n#: ch/ch_states.py:21\nmsgid \"Schwyz\"\nmsgstr \"Ŝvico\"\n\n#: ch/ch_states.py:22\nmsgid \"Solothurn\"\nmsgstr \"Soloturno\"\n\n#: ch/ch_states.py:23\nmsgid \"St. Gallen\"\nmsgstr \"Sankt-Galo\"\n\n#: ch/ch_states.py:24\nmsgid \"Thurgau\"\nmsgstr \"Turgovio\"\n\n#: ch/ch_states.py:25\nmsgid \"Ticino\"\nmsgstr \"Tiĉino\"\n\n#: ch/ch_states.py:26\nmsgid \"Uri\"\nmsgstr \"Urio\"\n\n#: ch/ch_states.py:27\nmsgid \"Valais\"\nmsgstr \"Valezo\"\n\n#: ch/ch_states.py:28\nmsgid \"Vaud\"\nmsgstr \"Vaŭdo\"\n\n#: ch/ch_states.py:29\nmsgid \"Zug\"\nmsgstr \"Zugo\"\n\n#: ch/ch_states.py:30\nmsgid \"Zurich\"\nmsgstr \"Zuriko\"\n\n#: ch/forms.py:37\nmsgid \"Phone numbers must be in 0XX XXX XX XX format.\"\nmsgstr \"\"\n\n#: ch/forms.py:68\nmsgid \"\"\n\"Enter a valid Swiss identity or passport card number in X1234567<0 or \"\n\"1234567890 format.\"\nmsgstr \"\"\n\"Enigu validan Svisan identecon aŭ pasporton karton nombro laŭ formato \"\n\"X1234567<0 aŭ 1234567890.\"\n\n#: cl/forms.py:32\nmsgid \"Enter a valid Chilean RUT.\"\nmsgstr \"Enigu validan Ĉilian RUT.\"\n\n#: cl/forms.py:33\nmsgid \"Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.\"\nmsgstr \"Enigu validan Ĉilian RUT. La formato estas XX.XXX.XXX-X.\"\n\n#: cl/forms.py:34\nmsgid \"The Chilean RUT is not valid.\"\nmsgstr \"La Ĉilia RUT ne estas valida.\"\n\n#: cn/forms.py:84\nmsgid \"Enter a post code in the format XXXXXX.\"\nmsgstr \"Enigu postan kodon laŭformate XXXXXX.\"\n\n#: cn/forms.py:105\nmsgid \"ID Card Number consists of 15 or 18 digits.\"\nmsgstr \"Identiga Karta Nombro konsistas el 15 aŭ 18 ciferoj.\"\n\n#: cn/forms.py:106\nmsgid \"Invalid ID Card Number: Wrong checksum\"\nmsgstr \"Nevalida Identiga Karta Nombro: Malĝusta kontrolsumo\"\n\n#: cn/forms.py:107\nmsgid \"Invalid ID Card Number: Wrong birthdate\"\nmsgstr \"Nevalida Identiga Karta Nombro: Malĝusta naskiĝodato\"\n\n#: cn/forms.py:108\nmsgid \"Invalid ID Card Number: Wrong location code\"\nmsgstr \"Nevalida Identiga Karta Nombro: Malĝusta loka kodo\"\n\n#: cn/forms.py:193\nmsgid \"Enter a valid phone number.\"\nmsgstr \"Enigu validan Telefonnumeron\"\n\n#: cn/forms.py:210\nmsgid \"Enter a valid cell number.\"\nmsgstr \"Enigu validan poŝtelefonnumeron\"\n\n#: cz/cz_regions.py:8\nmsgid \"Prague\"\nmsgstr \"Prago\"\n\n#: cz/cz_regions.py:9\nmsgid \"Central Bohemian Region\"\nmsgstr \"Mezbohemia regiono\"\n\n#: cz/cz_regions.py:10\nmsgid \"South Bohemian Region\"\nmsgstr \"Sudbohemia regiono\"\n\n#: cz/cz_regions.py:11\nmsgid \"Pilsen Region\"\nmsgstr \"Regiono Pilseno\"\n\n#: cz/cz_regions.py:12\nmsgid \"Carlsbad Region\"\nmsgstr \"Regiono Karlsbado\"\n\n#: cz/cz_regions.py:13\nmsgid \"Usti Region\"\nmsgstr \"Regiono Ustio\"\n\n#: cz/cz_regions.py:14\nmsgid \"Liberec Region\"\nmsgstr \"Regiono Liberec\"\n\n#: cz/cz_regions.py:15\nmsgid \"Hradec Region\"\nmsgstr \"Regiono Hradeco\"\n\n#: cz/cz_regions.py:16\nmsgid \"Pardubice Region\"\nmsgstr \"Pardubico regiono\"\n\n#: cz/cz_regions.py:17\nmsgid \"Vysocina Region\"\nmsgstr \"Regiono Vysočina\"\n\n#: cz/cz_regions.py:18\nmsgid \"South Moravian Region\"\nmsgstr \"Sudmoravia regiono\"\n\n#: cz/cz_regions.py:19\nmsgid \"Olomouc Region\"\nmsgstr \"Olomouc-regiono\"\n\n#: cz/cz_regions.py:20\nmsgid \"Zlin Region\"\nmsgstr \"Regiono Zlín\"\n\n#: cz/cz_regions.py:21\nmsgid \"Moravian-Silesian Region\"\nmsgstr \"Moraviasilezia regiono\"\n\n#: cz/forms.py:32 sk/forms.py:33\nmsgid \"Enter a postal code in the format XXXXX or XXX XX.\"\nmsgstr \"Enigu poŝtan kodon laŭ la formato XXXXX aŭ XXX XX.\"\n\n#: cz/forms.py:52\nmsgid \"Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.\"\nmsgstr \"Enigu naskiĝon nombron laŭ la formato  XXXXXX/XXXX aŭ XXXXXXXXXX.\"\n\n#: cz/forms.py:53\nmsgid \"Enter a valid birth number.\"\nmsgstr \"Enigu validan naskiĝon nombron.\"\n\n#: cz/forms.py:102\nmsgid \"Enter a valid IC number.\"\nmsgstr \"Enigu validan IC nombron.\"\n\n#: de/de_states.py:5\nmsgid \"Baden-Wuerttemberg\"\nmsgstr \"Baden-Virtembergo\"\n\n#: de/de_states.py:6\nmsgid \"Bavaria\"\nmsgstr \"Bavario\"\n\n#: de/de_states.py:7\nmsgid \"Berlin\"\nmsgstr \"Berlino\"\n\n#: de/de_states.py:8\nmsgid \"Brandenburg\"\nmsgstr \"Brandenburgo\"\n\n#: de/de_states.py:9\nmsgid \"Bremen\"\nmsgstr \"Bremeno\"\n\n#: de/de_states.py:10\nmsgid \"Hamburg\"\nmsgstr \"Hamburgo\"\n\n#: de/de_states.py:11\nmsgid \"Hessen\"\nmsgstr \"Hesio\"\n\n#: de/de_states.py:12\nmsgid \"Mecklenburg-Western Pomerania\"\nmsgstr \"Meklenburg-okcidenta Pomerio\"\n\n#: de/de_states.py:13\nmsgid \"Lower Saxony\"\nmsgstr \"Malsupra Saksio\"\n\n#: de/de_states.py:14\nmsgid \"North Rhine-Westphalia\"\nmsgstr \"Nordrejn-Vestfalio\"\n\n#: de/de_states.py:15\nmsgid \"Rhineland-Palatinate\"\nmsgstr \"Rejnlando-Palatino\"\n\n#: de/de_states.py:16\nmsgid \"Saarland\"\nmsgstr \"Sarlando\"\n\n#: de/de_states.py:17\nmsgid \"Saxony\"\nmsgstr \"Saksio\"\n\n#: de/de_states.py:18\nmsgid \"Saxony-Anhalt\"\nmsgstr \"Saksio-Anhalto\"\n\n#: de/de_states.py:19\nmsgid \"Schleswig-Holstein\"\nmsgstr \"Ŝlesvigo-Holstinio\"\n\n#: de/de_states.py:20\nmsgid \"Thuringia\"\nmsgstr \"Turingio\"\n\n#: de/forms.py:20 fi/forms.py:18 fr/forms.py:20\nmsgid \"Enter a zip code in the format XXXXX.\"\nmsgstr \"Enigu poŝtan kodon laŭformate XXXXX.\"\n\n#: de/forms.py:46\nmsgid \"\"\n\"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"format.\"\nmsgstr \"\"\n\"Enigu validan Germanan identigan karton nombron laŭformate  XXXXXXXXXXX-\"\n\"XXXXXXX-XXXXXXX-X.\"\n\n#: es/es_provinces.py:5\nmsgid \"Araba\"\nmsgstr \"\"\n\n#: es/es_provinces.py:6\nmsgid \"Albacete\"\nmsgstr \"Albaketo\"\n\n#: es/es_provinces.py:7\nmsgid \"Alacant\"\nmsgstr \"Alikanto\"\n\n#: es/es_provinces.py:8\nmsgid \"Almeria\"\nmsgstr \"Almerio\"\n\n#: es/es_provinces.py:9\nmsgid \"Avila\"\nmsgstr \"Avilo \"\n\n#: es/es_provinces.py:10\nmsgid \"Badajoz\"\nmsgstr \"Badaĥozo\"\n\n#: es/es_provinces.py:11\nmsgid \"Illes Balears\"\nmsgstr \"Balearoj\"\n\n#: es/es_provinces.py:12\nmsgid \"Barcelona\"\nmsgstr \"Barcelono \"\n\n#: es/es_provinces.py:13\nmsgid \"Burgos\"\nmsgstr \"Burgoso\"\n\n#: es/es_provinces.py:14\nmsgid \"Caceres\"\nmsgstr \"Cakereso\"\n\n#: es/es_provinces.py:15\nmsgid \"Cadiz\"\nmsgstr \"Kadizo\"\n\n#: es/es_provinces.py:16\nmsgid \"Castello\"\nmsgstr \"Kastelo\"\n\n#: es/es_provinces.py:17\nmsgid \"Ciudad Real\"\nmsgstr \"Kjudad Realo\"\n\n#: es/es_provinces.py:18\nmsgid \"Cordoba\"\nmsgstr \"Kordoba\"\n\n#: es/es_provinces.py:19\nmsgid \"A Coruna\"\nmsgstr \"Korunjo\"\n\n#: es/es_provinces.py:20\nmsgid \"Cuenca\"\nmsgstr \"Kuenco\"\n\n#: es/es_provinces.py:21\nmsgid \"Girona\"\nmsgstr \"Ĝirono\"\n\n#: es/es_provinces.py:22\nmsgid \"Granada\"\nmsgstr \"Granado\"\n\n#: es/es_provinces.py:23\nmsgid \"Guadalajara\"\nmsgstr \"Gvadalaharo\"\n\n#: es/es_provinces.py:24\nmsgid \"Guipuzkoa\"\nmsgstr \"Gipuzkoa\"\n\n#: es/es_provinces.py:25\nmsgid \"Huelva\"\nmsgstr \"Onubo\"\n\n#: es/es_provinces.py:26\nmsgid \"Huesca\"\nmsgstr \"Uesko\"\n\n#: es/es_provinces.py:27\nmsgid \"Jaen\"\nmsgstr \"Ĥaeno\"\n\n#: es/es_provinces.py:28\nmsgid \"Leon\"\nmsgstr \"Leono\"\n\n#: es/es_provinces.py:29\nmsgid \"Lleida\"\nmsgstr \"Ilerdo\"\n\n#: es/es_provinces.py:30 es/es_regions.py:17\nmsgid \"La Rioja\"\nmsgstr \"Rioĥo\"\n\n#: es/es_provinces.py:31\nmsgid \"Lugo\"\nmsgstr \"Lugo\"\n\n#: es/es_provinces.py:32 es/es_regions.py:18\nmsgid \"Madrid\"\nmsgstr \"Madrido\"\n\n#: es/es_provinces.py:33\nmsgid \"Malaga\"\nmsgstr \"Malago\"\n\n#: es/es_provinces.py:34\nmsgid \"Murcia\"\nmsgstr \"Murcio\"\n\n#: es/es_provinces.py:35\nmsgid \"Navarre\"\nmsgstr \"Navaro\"\n\n#: es/es_provinces.py:36\nmsgid \"Ourense\"\nmsgstr \"Orenso\"\n\n#: es/es_provinces.py:37\nmsgid \"Asturias\"\nmsgstr \"Asturio\"\n\n#: es/es_provinces.py:38\nmsgid \"Palencia\"\nmsgstr \"Palencio\"\n\n#: es/es_provinces.py:39\nmsgid \"Las Palmas\"\nmsgstr \"Las Palmaso\"\n\n#: es/es_provinces.py:40\nmsgid \"Pontevedra\"\nmsgstr \"Pontevedro\"\n\n#: es/es_provinces.py:41\nmsgid \"Salamanca\"\nmsgstr \"Salamanco\"\n\n#: es/es_provinces.py:42\nmsgid \"Santa Cruz de Tenerife\"\nmsgstr \"Sant-Kruzo de Tenerifo\"\n\n#: es/es_provinces.py:43 es/es_regions.py:11\nmsgid \"Cantabria\"\nmsgstr \"Kantabrio\"\n\n#: es/es_provinces.py:44\nmsgid \"Segovia\"\nmsgstr \"Segovio\"\n\n#: es/es_provinces.py:45\nmsgid \"Seville\"\nmsgstr \"Sevilo\"\n\n#: es/es_provinces.py:46\nmsgid \"Soria\"\nmsgstr \"Sorio\"\n\n#: es/es_provinces.py:47\nmsgid \"Tarragona\"\nmsgstr \"Taragono\"\n\n#: es/es_provinces.py:48\nmsgid \"Teruel\"\nmsgstr \"Teruelo\"\n\n#: es/es_provinces.py:49\nmsgid \"Toledo\"\nmsgstr \"Toledo\"\n\n#: es/es_provinces.py:50\nmsgid \"Valencia\"\nmsgstr \"Valencio\"\n\n#: es/es_provinces.py:51\nmsgid \"Valladolid\"\nmsgstr \"Valadolido\"\n\n#: es/es_provinces.py:52\nmsgid \"Bizkaia\"\nmsgstr \"Biskajo\"\n\n#: es/es_provinces.py:53\nmsgid \"Zamora\"\nmsgstr \"Zamoro\"\n\n#: es/es_provinces.py:54\nmsgid \"Zaragoza\"\nmsgstr \"Zaragozo\"\n\n#: es/es_provinces.py:55\nmsgid \"Ceuta\"\nmsgstr \"Ceŭto\"\n\n#: es/es_provinces.py:56\nmsgid \"Melilla\"\nmsgstr \"Melilo\"\n\n#: es/es_regions.py:5\nmsgid \"Andalusia\"\nmsgstr \"Andaluzio\"\n\n#: es/es_regions.py:6\nmsgid \"Aragon\"\nmsgstr \"Aragono\"\n\n#: es/es_regions.py:7\nmsgid \"Principality of Asturias\"\nmsgstr \"Princlando de Asturio\"\n\n#: es/es_regions.py:8\nmsgid \"Balearic Islands\"\nmsgstr \"La Balearoj\"\n\n#: es/es_regions.py:9\nmsgid \"Basque Country\"\nmsgstr \"Eŭskio\"\n\n#: es/es_regions.py:10\nmsgid \"Canary Islands\"\nmsgstr \"La Kanaraj insuloj\"\n\n#: es/es_regions.py:12\nmsgid \"Castile-La Mancha\"\nmsgstr \"Kastilio-Manĉo\"\n\n#: es/es_regions.py:13\nmsgid \"Castile and Leon\"\nmsgstr \"Kastilio kaj leon\"\n\n#: es/es_regions.py:14\nmsgid \"Catalonia\"\nmsgstr \"Katalunio\"\n\n#: es/es_regions.py:15\nmsgid \"Extremadura\"\nmsgstr \"Ekstremaduro\"\n\n#: es/es_regions.py:16\nmsgid \"Galicia\"\nmsgstr \"Galegio\"\n\n#: es/es_regions.py:19\nmsgid \"Region of Murcia\"\nmsgstr \"Regiono de Murcio\"\n\n#: es/es_regions.py:20\nmsgid \"Foral Community of Navarre\"\nmsgstr \"Luita Komunuma de Navaro\"\n\n#: es/es_regions.py:21\nmsgid \"Valencian Community\"\nmsgstr \"Valencia komunumo\"\n\n#: es/forms.py:26\nmsgid \"Enter a valid postal code in the range and format 01XXX - 52XXX.\"\nmsgstr \"Enigu validan poŝtan kodon en la gamo kaj formato 01XXX - 52XXX.\"\n\n#: es/forms.py:46\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or \"\n\"9XXXXXXXX.\"\nmsgstr \"\"\n\"Enigu validan telefonnumeron laŭformate 6XXXXXXXX, 8XXXXXXXX aŭ 9XXXXXXXX.\"\n\n#: es/forms.py:73\nmsgid \"Please enter a valid NIF, NIE, or CIF.\"\nmsgstr \"Bonvolu enigu validan NIF, NIE, aŭ CIF.\"\n\n#: es/forms.py:74\nmsgid \"Please enter a valid NIF or NIE.\"\nmsgstr \"Bonvolu enigu validan NIF aŭ NIE.\"\n\n#: es/forms.py:75\nmsgid \"Invalid checksum for NIF.\"\nmsgstr \"Nevalida kontrolsumo por NIF.\"\n\n#: es/forms.py:76\nmsgid \"Invalid checksum for NIE.\"\nmsgstr \"Nevalida kontrolsumo por NIE.\"\n\n#: es/forms.py:77\nmsgid \"Invalid checksum for CIF.\"\nmsgstr \"Nevalida kontrolsumo por CIF.\"\n\n#: es/forms.py:149\nmsgid \"\"\n\"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.\"\nmsgstr \"\"\n\"Bonvolu enigu validan bankokonton nombron laŭformate  XXXX-XXXX-XX-\"\n\"XXXXXXXXXX.\"\n\n#: es/forms.py:150\nmsgid \"Invalid checksum for bank account number.\"\nmsgstr \"Nevalida kontrolsumo por bankokonto nombro.\"\n\n#: fi/forms.py:33\nmsgid \"Enter a valid Finnish social security number.\"\nmsgstr \"Enigu validan Finnan socialasekuran numeron.\"\n\n#: fr/forms.py:35\nmsgid \"Phone numbers must be in 0X XX XX XX XX format.\"\nmsgstr \"Telefonnumeroj devus esti formate 0X XX XX XX XX.\"\n\n#: gb/forms.py:25\nmsgid \"Enter a valid postcode.\"\nmsgstr \"Enigu validan poŝtan kodon.\"\n\n#: gb/gb_regions.py:11\nmsgid \"Bedfordshire\"\nmsgstr \"Bedfordŝiro\"\n\n#: gb/gb_regions.py:12\nmsgid \"Buckinghamshire\"\nmsgstr \"Bukinghamŝiro\"\n\n#: gb/gb_regions.py:14\nmsgid \"Cheshire\"\nmsgstr \"Ĉeŝiro\"\n\n#: gb/gb_regions.py:15\nmsgid \"Cornwall and Isles of Scilly\"\nmsgstr \"Kornvalo kaj Insuloj de Silio\"\n\n#: gb/gb_regions.py:16\nmsgid \"Cumbria\"\nmsgstr \"Kumbrio\"\n\n#: gb/gb_regions.py:17\nmsgid \"Derbyshire\"\nmsgstr \"Derbiŝiro\"\n\n#: gb/gb_regions.py:18\nmsgid \"Devon\"\nmsgstr \"Devono\"\n\n#: gb/gb_regions.py:19\nmsgid \"Dorset\"\nmsgstr \"Dorseto\"\n\n#: gb/gb_regions.py:20\nmsgid \"Durham\"\nmsgstr \"Durhamo\"\n\n#: gb/gb_regions.py:21\nmsgid \"East Sussex\"\nmsgstr \"Orienta Susekso\"\n\n#: gb/gb_regions.py:22\nmsgid \"Essex\"\nmsgstr \"Esekso\"\n\n#: gb/gb_regions.py:23\nmsgid \"Gloucestershire\"\nmsgstr \"Glosterŝiro\"\n\n#: gb/gb_regions.py:24\nmsgid \"Greater London\"\nmsgstr \"Granda Londono\"\n\n#: gb/gb_regions.py:25\nmsgid \"Greater Manchester\"\nmsgstr \"Granda Manĉestro\"\n\n#: gb/gb_regions.py:26\nmsgid \"Hampshire\"\nmsgstr \"Hampŝiro\"\n\n#: gb/gb_regions.py:27\nmsgid \"Hertfordshire\"\nmsgstr \"Hertfordŝiro\"\n\n#: gb/gb_regions.py:28\nmsgid \"Kent\"\nmsgstr \"Kento\"\n\n#: gb/gb_regions.py:29\nmsgid \"Lancashire\"\nmsgstr \"Lankaŝiro\"\n\n#: gb/gb_regions.py:30\nmsgid \"Leicestershire\"\nmsgstr \"Lesterŝiro\"\n\n#: gb/gb_regions.py:31\nmsgid \"Lincolnshire\"\nmsgstr \"Linconŝiro\"\n\n#: gb/gb_regions.py:32\nmsgid \"Merseyside\"\nmsgstr \"Mersiflanko\"\n\n#: gb/gb_regions.py:33\nmsgid \"Norfolk\"\nmsgstr \"Norfoko\"\n\n#: gb/gb_regions.py:34\nmsgid \"North Yorkshire\"\nmsgstr \"Norda Jorkŝiro\"\n\n#: gb/gb_regions.py:35\nmsgid \"Northamptonshire\"\nmsgstr \"Nordhamptonŝiro\"\n\n#: gb/gb_regions.py:36\nmsgid \"Northumberland\"\nmsgstr \"Nordhumberlando\"\n\n#: gb/gb_regions.py:37\nmsgid \"Nottinghamshire\"\nmsgstr \"Notinghamŝiro\"\n\n#: gb/gb_regions.py:38\nmsgid \"Oxfordshire\"\nmsgstr \"Oksfordŝiro\"\n\n#: gb/gb_regions.py:39\nmsgid \"Shropshire\"\nmsgstr \"Ŝropŝiro\"\n\n#: gb/gb_regions.py:40\nmsgid \"Somerset\"\nmsgstr \"Somerseto\"\n\n#: gb/gb_regions.py:41\nmsgid \"South Yorkshire\"\nmsgstr \"Suda Jorkŝiro\"\n\n#: gb/gb_regions.py:42\nmsgid \"Staffordshire\"\nmsgstr \"Stafordŝiro\"\n\n#: gb/gb_regions.py:43\nmsgid \"Suffolk\"\nmsgstr \"Sufoko\"\n\n#: gb/gb_regions.py:44\nmsgid \"Surrey\"\nmsgstr \"Surejo\"\n\n#: gb/gb_regions.py:45\nmsgid \"Tyne and Wear\"\nmsgstr \"Tijno kaj Viero\"\n\n#: gb/gb_regions.py:46\nmsgid \"Warwickshire\"\nmsgstr \"Varvikŝiro\"\n\n#: gb/gb_regions.py:47\nmsgid \"West Midlands\"\nmsgstr \"Okcidenta Mezlando\"\n\n#: gb/gb_regions.py:48\nmsgid \"West Sussex\"\nmsgstr \"Okcidenta Susekso\"\n\n#: gb/gb_regions.py:49\nmsgid \"West Yorkshire\"\nmsgstr \"Okcidenta Jorkŝiro\"\n\n#: gb/gb_regions.py:50\nmsgid \"Wiltshire\"\nmsgstr \"Viltŝiro\"\n\n#: gb/gb_regions.py:51\nmsgid \"Worcestershire\"\nmsgstr \"Vorĉesterŝiro\"\n\n#: gb/gb_regions.py:55\nmsgid \"County Antrim\"\nmsgstr \"Distrikto Antrimo\"\n\n#: gb/gb_regions.py:56\nmsgid \"County Armagh\"\nmsgstr \"Distrikto Armao\"\n\n#: gb/gb_regions.py:57\nmsgid \"County Down\"\nmsgstr \"Distrikto Doŭno\"\n\n#: gb/gb_regions.py:58\nmsgid \"County Fermanagh\"\nmsgstr \"Distrikto Fermano\"\n\n#: gb/gb_regions.py:59\nmsgid \"County Londonderry\"\nmsgstr \"Distrikto Londonderio\"\n\n#: gb/gb_regions.py:60\nmsgid \"County Tyrone\"\nmsgstr \"Distrikto Tirono\"\n\n#: gb/gb_regions.py:64\nmsgid \"Clwyd\"\nmsgstr \"Clujido\"\n\n#: gb/gb_regions.py:65\nmsgid \"Dyfed\"\nmsgstr \"Difedo\"\n\n#: gb/gb_regions.py:66\nmsgid \"Gwent\"\nmsgstr \"Gŭento\"\n\n#: gb/gb_regions.py:67\nmsgid \"Gwynedd\"\nmsgstr \"Gŭinedo\"\n\n#: gb/gb_regions.py:68\nmsgid \"Mid Glamorgan\"\nmsgstr \"Meza Glamorgano\"\n\n#: gb/gb_regions.py:69\nmsgid \"Powys\"\nmsgstr \"Poŭiso\"\n\n#: gb/gb_regions.py:70\nmsgid \"South Glamorgan\"\nmsgstr \"Suda Glamorgano\"\n\n#: gb/gb_regions.py:71\nmsgid \"West Glamorgan\"\nmsgstr \"Okcidenta Glamorgano\"\n\n#: gb/gb_regions.py:75\nmsgid \"Borders\"\nmsgstr \"Landlimoj\"\n\n#: gb/gb_regions.py:76\nmsgid \"Central Scotland\"\nmsgstr \"Meza Skotlando\"\n\n#: gb/gb_regions.py:77\nmsgid \"Dumfries and Galloway\"\nmsgstr \"Dumfrizo kaj Galovajo\"\n\n#: gb/gb_regions.py:78\nmsgid \"Fife\"\nmsgstr \"Fifo\"\n\n#: gb/gb_regions.py:79\nmsgid \"Grampian\"\nmsgstr \"Grampiano\"\n\n#: gb/gb_regions.py:80\nmsgid \"Highland\"\nmsgstr \"Altlando\"\n\n#: gb/gb_regions.py:81\nmsgid \"Lothian\"\nmsgstr \"Lotiano\"\n\n#: gb/gb_regions.py:82\nmsgid \"Orkney Islands\"\nmsgstr \"Orknija Insuloj\"\n\n#: gb/gb_regions.py:83\nmsgid \"Shetland Islands\"\nmsgstr \"Ŝetlando Insuloj\"\n\n#: gb/gb_regions.py:84\nmsgid \"Strathclyde\"\nmsgstr \"Stratklido\"\n\n#: gb/gb_regions.py:85\nmsgid \"Tayside\"\nmsgstr \"Tajflanko\"\n\n#: gb/gb_regions.py:86\nmsgid \"Western Isles\"\nmsgstr \"Okcidenta Insuloj\"\n\n#: gb/gb_regions.py:90\nmsgid \"England\"\nmsgstr \"Anglujo\"\n\n#: gb/gb_regions.py:91\nmsgid \"Northern Ireland\"\nmsgstr \"Norda Irlando\"\n\n#: gb/gb_regions.py:92\nmsgid \"Scotland\"\nmsgstr \"Skotlando\"\n\n#: gb/gb_regions.py:93\nmsgid \"Wales\"\nmsgstr \"Kimrio\"\n\n#: hk/forms.py:37\n#, python-format\nmsgid \"Phone number should not start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:40\n#, python-format\nmsgid \"Phone number must be in one of the following formats: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:42\n#, python-format\nmsgid \"Phone number should start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hr/forms.py:76\nmsgid \"Enter a valid 13 digit JMBG\"\nmsgstr \"Enigu validan 13 cifero JMBG\"\n\n#: hr/forms.py:77\nmsgid \"Error in date segment\"\nmsgstr \"Eraro en dato segmento\"\n\n#: hr/forms.py:123\nmsgid \"Enter a valid 11 digit OIB\"\nmsgstr \"Enigu validan 11 cifero OIB\"\n\n#: hr/forms.py:152 id/forms.py:112\nmsgid \"Enter a valid vehicle license plate number\"\nmsgstr \"Enigu validan veturilon licencplaton nombron\"\n\n#: hr/forms.py:153\nmsgid \"Enter a valid location code\"\nmsgstr \"Enigu validan lokan kodon\"\n\n#: hr/forms.py:154\nmsgid \"Number part cannot be zero\"\nmsgstr \"Nombra parto ne povas esti nulo\"\n\n#: hr/forms.py:190\nmsgid \"Enter a valid 5 digit postal code\"\nmsgstr \"Enigu validan 5 cifero postan kodon\"\n\n#: hr/forms.py:218 id/forms.py:72 nl/forms.py:56\nmsgid \"Enter a valid phone number\"\nmsgstr \"Enigu validan telefonnumeron\"\n\n#: hr/forms.py:219\nmsgid \"Enter a valid area or mobile network code\"\nmsgstr \"Eniri validan lokan aŭ moveblan retan kodo\"\n\n#: hr/forms.py:220\nmsgid \"The phone nubmer is too long\"\nmsgstr \"La telefonnumero estas tro longa\"\n\n#: hr/forms.py:258\nmsgid \"Enter a valid 19 digit JMBAG starting with 601983\"\nmsgstr \"Eniri validan 19 ciferan JMBAG komence 601983\"\n\n#: hr/forms.py:259\nmsgid \"Card issue number cannot be zero\"\nmsgstr \"Karta eldona nombro ne povas est nulo\"\n\n#: hr/hr_choices.py:14\nmsgid \"Grad Zagreb\"\nmsgstr \"Grad Zagrebo\"\n\n#: hr/hr_choices.py:15\nmsgid \"Bjelovarsko-bilogorska županija\"\nmsgstr \"Bjelovar-Bilogora Distrikto\"\n\n#: hr/hr_choices.py:16\nmsgid \"Brodsko-posavska županija\"\nmsgstr \"Brod-Posavina Distrikto\"\n\n#: hr/hr_choices.py:17\nmsgid \"Dubrovačko-neretvanska županija\"\nmsgstr \"Dubrovnik-Neretva Distrikto\"\n\n#: hr/hr_choices.py:18\nmsgid \"Istarska županija\"\nmsgstr \"Istria Distrikto\"\n\n#: hr/hr_choices.py:19\nmsgid \"Karlovačka županija\"\nmsgstr \"Karlovaka Distrikto\"\n\n#: hr/hr_choices.py:20\nmsgid \"Koprivničko-križevačka županija\"\nmsgstr \"Koprivnica-Krizevcia Distrikto\"\n\n#: hr/hr_choices.py:21\nmsgid \"Krapinsko-zagorska županija\"\nmsgstr \"Krapinska Zagorska Distrikto\"\n\n#: hr/hr_choices.py:22\nmsgid \"Ličko-senjska županija\"\nmsgstr \"Lika Senjska Distrikto\"\n\n#: hr/hr_choices.py:23\nmsgid \"Međimurska županija\"\nmsgstr \"Međimurska Distrikto\"\n\n#: hr/hr_choices.py:24\nmsgid \"Osječko-baranjska županija\"\nmsgstr \"Osijek-Baranja distrikto\"\n\n#: hr/hr_choices.py:25\nmsgid \"Požeško-slavonska županija\"\nmsgstr \"Pozega-Slavonia Distrikto\"\n\n#: hr/hr_choices.py:26\nmsgid \"Primorsko-goranska županija\"\nmsgstr \"Primorsko-Goranska Distrikto\"\n\n#: hr/hr_choices.py:27\nmsgid \"Sisačko-moslavačka županija\"\nmsgstr \"Sisako-Moslavaka Distrikto\"\n\n#: hr/hr_choices.py:28\nmsgid \"Splitsko-dalmatinska županija\"\nmsgstr \"Split-Dalmatio Distrikto\"\n\n#: hr/hr_choices.py:29\nmsgid \"Šibensko-kninska županija\"\nmsgstr \"Ŝibenik-Knin Distrikto\"\n\n#: hr/hr_choices.py:30\nmsgid \"Varaždinska županija\"\nmsgstr \"Varazdin Distrikto\"\n\n#: hr/hr_choices.py:31\nmsgid \"Virovitičko-podravska županija\"\nmsgstr \"Virovitica-Podravina Distrikto\"\n\n#: hr/hr_choices.py:32\nmsgid \"Vukovarsko-srijemska županija\"\nmsgstr \"Vukovar Srem Distrikto\"\n\n#: hr/hr_choices.py:33\nmsgid \"Zadarska županija\"\nmsgstr \"Zadarska Distrikto\"\n\n#: hr/hr_choices.py:34\nmsgid \"Zagrebačka županija\"\nmsgstr \"Zagrebačka Distrikto\"\n\n#: id/forms.py:31\nmsgid \"Enter a valid post code\"\nmsgstr \"Enigu validan poŝtkodon\"\n\n#: id/forms.py:176\nmsgid \"Enter a valid NIK/KTP number\"\nmsgstr \"Enigu validan NIK/KTP nombron\"\n\n#: id/id_choices.py:15\nmsgid \"Aceh\"\nmsgstr \"Aceho\"\n\n#: id/id_choices.py:16 id/id_choices.py:79\nmsgid \"Bali\"\nmsgstr \"Balio\"\n\n#: id/id_choices.py:17 id/id_choices.py:51\nmsgid \"Banten\"\nmsgstr \"Bantamo\"\n\n#: id/id_choices.py:18 id/id_choices.py:60\nmsgid \"Bengkulu\"\nmsgstr \"Bengkulo\"\n\n#: id/id_choices.py:19 id/id_choices.py:53\nmsgid \"Yogyakarta\"\nmsgstr \"Jogjakarto\"\n\n#: id/id_choices.py:20 id/id_choices.py:57\nmsgid \"Jakarta\"\nmsgstr \"Ĝakarto\"\n\n#: id/id_choices.py:21 id/id_choices.py:81\nmsgid \"Gorontalo\"\nmsgstr \"Gorontalo\"\n\n#: id/id_choices.py:22 id/id_choices.py:63\nmsgid \"Jambi\"\nmsgstr \"Ĝambio\"\n\n#: id/id_choices.py:23\nmsgid \"Jawa Barat\"\nmsgstr \"Okcidenta Javo\"\n\n#: id/id_choices.py:24\nmsgid \"Jawa Tengah\"\nmsgstr \"Centra Javo\"\n\n#: id/id_choices.py:25\nmsgid \"Jawa Timur\"\nmsgstr \"Orienta Javo\"\n\n#: id/id_choices.py:26 id/id_choices.py:94\nmsgid \"Kalimantan Barat\"\nmsgstr \"Okcidenta Kalimantano\"\n\n#: id/id_choices.py:27 id/id_choices.py:72\nmsgid \"Kalimantan Selatan\"\nmsgstr \"Suda Kalimantano\"\n\n#: id/id_choices.py:28 id/id_choices.py:95\nmsgid \"Kalimantan Tengah\"\nmsgstr \"Centra Kalimantano\"\n\n#: id/id_choices.py:29 id/id_choices.py:96\nmsgid \"Kalimantan Timur\"\nmsgstr \"Orienta Kalimantano\"\n\n#: id/id_choices.py:30\nmsgid \"Kepulauan Bangka-Belitung\"\nmsgstr \"Bangka-Belitung Insuloj\"\n\n#: id/id_choices.py:31 id/id_choices.py:68\nmsgid \"Kepulauan Riau\"\nmsgstr \"Riau Insuloj\"\n\n#: id/id_choices.py:32 id/id_choices.py:61\nmsgid \"Lampung\"\nmsgstr \"Lampungo\"\n\n#: id/id_choices.py:33 id/id_choices.py:76\nmsgid \"Maluku\"\nmsgstr \"Moluko\"\n\n#: id/id_choices.py:34 id/id_choices.py:77\nmsgid \"Maluku Utara\"\nmsgstr \"Norda Maluko\"\n\n#: id/id_choices.py:35\nmsgid \"Nusa Tenggara Barat\"\nmsgstr \"Okcidenta Nusa Tengaro\"\n\n#: id/id_choices.py:36\nmsgid \"Nusa Tenggara Timur\"\nmsgstr \"Orienta Nusa Tengaro\"\n\n#: id/id_choices.py:37\nmsgid \"Papua\"\nmsgstr \"Papuo\"\n\n#: id/id_choices.py:38\nmsgid \"Papua Barat\"\nmsgstr \"Papuo-Barato\"\n\n#: id/id_choices.py:39 id/id_choices.py:66\nmsgid \"Riau\"\nmsgstr \"Riao\"\n\n#: id/id_choices.py:40 id/id_choices.py:74\nmsgid \"Sulawesi Barat\"\nmsgstr \"Okcidenta Sulaveso\"\n\n#: id/id_choices.py:41 id/id_choices.py:75\nmsgid \"Sulawesi Selatan\"\nmsgstr \"Suda Sulaveso\"\n\n#: id/id_choices.py:42 id/id_choices.py:82\nmsgid \"Sulawesi Tengah\"\nmsgstr \"Centra Sulaveso\"\n\n#: id/id_choices.py:43 id/id_choices.py:85\nmsgid \"Sulawesi Tenggara\"\nmsgstr \"Suda Orienta Sulaveso\"\n\n#: id/id_choices.py:44\nmsgid \"Sulawesi Utara\"\nmsgstr \"Norda Sulaveso\"\n\n#: id/id_choices.py:45 id/id_choices.py:58\nmsgid \"Sumatera Barat\"\nmsgstr \"Okcidenta Sumatro\"\n\n#: id/id_choices.py:46 id/id_choices.py:62\nmsgid \"Sumatera Selatan\"\nmsgstr \"Suda Sumatro\"\n\n#: id/id_choices.py:47 id/id_choices.py:64\nmsgid \"Sumatera Utara\"\nmsgstr \"Norda Sumatro\"\n\n#: id/id_choices.py:52\nmsgid \"Magelang\"\nmsgstr \"Magelango\"\n\n#: id/id_choices.py:54\nmsgid \"Surakarta - Solo\"\nmsgstr \"Surakarto\"\n\n#: id/id_choices.py:55\nmsgid \"Madiun\"\nmsgstr \"Madjuno\"\n\n#: id/id_choices.py:56\nmsgid \"Kediri\"\nmsgstr \"Kedirio\"\n\n#: id/id_choices.py:59\nmsgid \"Tapanuli\"\nmsgstr \"Tapanulo\"\n\n#: id/id_choices.py:65\nmsgid \"Nanggroe Aceh Darussalam\"\nmsgstr \"Aĉeho\"\n\n#: id/id_choices.py:67\nmsgid \"Kepulauan Bangka Belitung\"\nmsgstr \"Bangka-Belitung Insuloj\"\n\n#: id/id_choices.py:69\nmsgid \"Corps Consulate\"\nmsgstr \"Konsulejo\"\n\n#: id/id_choices.py:70\nmsgid \"Corps Diplomatic\"\nmsgstr \"Diplomatiaj gildoj\"\n\n#: id/id_choices.py:71\nmsgid \"Bandung\"\nmsgstr \"Bandungo\"\n\n#: id/id_choices.py:73\nmsgid \"Sulawesi Utara Daratan\"\nmsgstr \"Norda Sulaveso\"\n\n#: id/id_choices.py:78\nmsgid \"NTT - Timor\"\nmsgstr \"NTT - Timoro\"\n\n#: id/id_choices.py:80\nmsgid \"Sulawesi Utara Kepulauan\"\nmsgstr \"Norda Sulavesa Insuloj\"\n\n#: id/id_choices.py:83\nmsgid \"NTB - Lombok\"\nmsgstr \"NTB - Lomboko\"\n\n#: id/id_choices.py:84\nmsgid \"Papua dan Papua Barat\"\nmsgstr \"Papuo-Barato\"\n\n#: id/id_choices.py:86\nmsgid \"Cirebon\"\nmsgstr \"Norda Sulaveso\"\n\n#: id/id_choices.py:87\nmsgid \"NTB - Sumbawa\"\nmsgstr \"NTB - Sumbavo\"\n\n#: id/id_choices.py:88\nmsgid \"NTT - Flores\"\nmsgstr \"NTT - Flores\"\n\n#: id/id_choices.py:89\nmsgid \"NTT - Sumba\"\nmsgstr \"NTT - Sumbao\"\n\n#: id/id_choices.py:90\nmsgid \"Bogor\"\nmsgstr \"Bogoro\"\n\n#: id/id_choices.py:91\nmsgid \"Pekalongan\"\nmsgstr \"Pekalongano\"\n\n#: id/id_choices.py:92\nmsgid \"Semarang\"\nmsgstr \"Semarango\"\n\n#: id/id_choices.py:93\nmsgid \"Pati\"\nmsgstr \"Patio\"\n\n#: id/id_choices.py:97\nmsgid \"Surabaya\"\nmsgstr \"Surabajo\"\n\n#: id/id_choices.py:98\nmsgid \"Madura\"\nmsgstr \"Maduro\"\n\n#: id/id_choices.py:99\nmsgid \"Malang\"\nmsgstr \"Malango\"\n\n#: id/id_choices.py:100\nmsgid \"Jember\"\nmsgstr \"Jembero\"\n\n#: id/id_choices.py:101\nmsgid \"Banyumas\"\nmsgstr \"Banjumaso\"\n\n#: id/id_choices.py:102\nmsgid \"Federal Government\"\nmsgstr \"Federacia registaro\"\n\n#: id/id_choices.py:103\nmsgid \"Bojonegoro\"\nmsgstr \"Bojonegoro\"\n\n#: id/id_choices.py:104\nmsgid \"Purwakarta\"\nmsgstr \"Puruakarto\"\n\n#: id/id_choices.py:105\nmsgid \"Sidoarjo\"\nmsgstr \"Sidoarjo\"\n\n#: id/id_choices.py:106\nmsgid \"Garut\"\nmsgstr \"Garuto\"\n\n#: ie/ie_counties.py:8\nmsgid \"Antrim\"\nmsgstr \"Antrimo\"\n\n#: ie/ie_counties.py:9\nmsgid \"Armagh\"\nmsgstr \"Armaho\"\n\n#: ie/ie_counties.py:10\nmsgid \"Carlow\"\nmsgstr \"Karlo\"\n\n#: ie/ie_counties.py:11\nmsgid \"Cavan\"\nmsgstr \"Kavano\"\n\n#: ie/ie_counties.py:12\nmsgid \"Clare\"\nmsgstr \"Klaro\"\n\n#: ie/ie_counties.py:13\nmsgid \"Cork\"\nmsgstr \"Korko\"\n\n#: ie/ie_counties.py:14\nmsgid \"Derry\"\nmsgstr \"Derio\"\n\n#: ie/ie_counties.py:15\nmsgid \"Donegal\"\nmsgstr \"Donegalo\"\n\n#: ie/ie_counties.py:16\nmsgid \"Down\"\nmsgstr \"Doaŭno\"\n\n#: ie/ie_counties.py:17\nmsgid \"Dublin\"\nmsgstr \"Dublino\"\n\n#: ie/ie_counties.py:18\nmsgid \"Fermanagh\"\nmsgstr \"Fermano\"\n\n#: ie/ie_counties.py:19\nmsgid \"Galway\"\nmsgstr \"Galvao\"\n\n#: ie/ie_counties.py:20\nmsgid \"Kerry\"\nmsgstr \"Kerio\"\n\n#: ie/ie_counties.py:21\nmsgid \"Kildare\"\nmsgstr \"Kildaro\"\n\n#: ie/ie_counties.py:22\nmsgid \"Kilkenny\"\nmsgstr \"Kilkenio\"\n\n#: ie/ie_counties.py:23\nmsgid \"Laois\"\nmsgstr \"Laoiso\"\n\n#: ie/ie_counties.py:24\nmsgid \"Leitrim\"\nmsgstr \"Letrimo\"\n\n#: ie/ie_counties.py:25\nmsgid \"Limerick\"\nmsgstr \"Limeriko\"\n\n#: ie/ie_counties.py:26\nmsgid \"Longford\"\nmsgstr \"Longfordo\"\n\n#: ie/ie_counties.py:27\nmsgid \"Louth\"\nmsgstr \"Louto\"\n\n#: ie/ie_counties.py:28\nmsgid \"Mayo\"\nmsgstr \"Majo\"\n\n#: ie/ie_counties.py:29\nmsgid \"Meath\"\nmsgstr \"Meato\"\n\n#: ie/ie_counties.py:30\nmsgid \"Monaghan\"\nmsgstr \"Monahano\"\n\n#: ie/ie_counties.py:31\nmsgid \"Offaly\"\nmsgstr \"Ofalio\"\n\n#: ie/ie_counties.py:32\nmsgid \"Roscommon\"\nmsgstr \"Roskomono\"\n\n#: ie/ie_counties.py:33\nmsgid \"Sligo\"\nmsgstr \"Sligo\"\n\n#: ie/ie_counties.py:34\nmsgid \"Tipperary\"\nmsgstr \"Tiperaro\"\n\n#: ie/ie_counties.py:35\nmsgid \"Tyrone\"\nmsgstr \"Tirono\"\n\n#: ie/ie_counties.py:36\nmsgid \"Waterford\"\nmsgstr \"Vaterfordo\"\n\n#: ie/ie_counties.py:37\nmsgid \"Westmeath\"\nmsgstr \"Vestmeato\"\n\n#: ie/ie_counties.py:38\nmsgid \"Wexford\"\nmsgstr \"Veksfordo\"\n\n#: ie/ie_counties.py:39\nmsgid \"Wicklow\"\nmsgstr \"Viklovo\"\n\n#: il/forms.py:32\nmsgid \"Enter a postal code in the format XXXXX\"\nmsgstr \"Enigu poŝtan kodon laŭformate XXXXX\"\n\n#: il/forms.py:51\nmsgid \"Enter a valid ID number.\"\nmsgstr \"Enigu validan identan nombron.\"\n\n#: in_/forms.py:41\nmsgid \"Enter a zip code in the format XXXXXX or XXX XXX.\"\nmsgstr \"Enigu poŝtan kodon laŭformate XXXXXX aŭ XXX XXX.\"\n\n#: in_/forms.py:64\nmsgid \"Enter an Indian state or territory.\"\nmsgstr \"Enigu Baratan staton aŭ teritorion.\"\n\n#: in_/forms.py:103\nmsgid \"Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.\"\nmsgstr \"Telefonnumeroj devus esti formate laŭ 02X-8X aŭ 03X-7X aŭ 04X-6X\"\n\n#: is_/forms.py:22\nmsgid \"\"\n\"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.\"\nmsgstr \"Enigu validan Islandan identigan nombron laŭformate XXXXXX-XXXX.\"\n\n#: is_/forms.py:23\nmsgid \"The Icelandic identification number is not valid.\"\nmsgstr \"La Icelandic identiga nombro ne estas valida.\"\n\n#: it/forms.py:21\nmsgid \"Enter a valid zip code.\"\nmsgstr \"Enigu validan poŝtan kodon.\"\n\n#: it/forms.py:48\nmsgid \"Enter a valid Social Security number.\"\nmsgstr \"Enigu validan Socialasekuran numeron.\"\n\n#: it/forms.py:73\nmsgid \"Enter a valid VAT number.\"\nmsgstr \"Enigu validann AVI nombro.\"\n\n#: jp/forms.py:19\nmsgid \"Enter a postal code in the format XXXXXXX or XXX-XXXX.\"\nmsgstr \"Enigu poŝtan kodon laŭformate XXXXXXX aŭ XXX-XXXX.\"\n\n#: jp/jp_prefectures.py:4\nmsgid \"Hokkaido\"\nmsgstr \"Hokajdo\"\n\n#: jp/jp_prefectures.py:5\nmsgid \"Aomori\"\nmsgstr \"Aomoro\"\n\n#: jp/jp_prefectures.py:6\nmsgid \"Iwate\"\nmsgstr \"Iŭato\"\n\n#: jp/jp_prefectures.py:7\nmsgid \"Miyagi\"\nmsgstr \"Mijago\"\n\n#: jp/jp_prefectures.py:8\nmsgid \"Akita\"\nmsgstr \"Akito\"\n\n#: jp/jp_prefectures.py:9\nmsgid \"Yamagata\"\nmsgstr \"Yamagato\"\n\n#: jp/jp_prefectures.py:10\nmsgid \"Fukushima\"\nmsgstr \"Fukuŝimo\"\n\n#: jp/jp_prefectures.py:11\nmsgid \"Ibaraki\"\nmsgstr \"Ibarako\"\n\n#: jp/jp_prefectures.py:12\nmsgid \"Tochigi\"\nmsgstr \"Toĉigo\"\n\n#: jp/jp_prefectures.py:13\nmsgid \"Gunma\"\nmsgstr \"Gunmao\"\n\n#: jp/jp_prefectures.py:14\nmsgid \"Saitama\"\nmsgstr \"Saitamo\"\n\n#: jp/jp_prefectures.py:15\nmsgid \"Chiba\"\nmsgstr \"Ĉibo\"\n\n#: jp/jp_prefectures.py:16\nmsgid \"Tokyo\"\nmsgstr \"Tokio\"\n\n#: jp/jp_prefectures.py:17\nmsgid \"Kanagawa\"\nmsgstr \"Kanagaŭo\"\n\n#: jp/jp_prefectures.py:18\nmsgid \"Yamanashi\"\nmsgstr \"Jamanaŝio\"\n\n#: jp/jp_prefectures.py:19\nmsgid \"Nagano\"\nmsgstr \"Nagano\"\n\n#: jp/jp_prefectures.py:20\nmsgid \"Niigata\"\nmsgstr \"Nijgato\"\n\n#: jp/jp_prefectures.py:21\nmsgid \"Toyama\"\nmsgstr \"Tojamo\"\n\n#: jp/jp_prefectures.py:22\nmsgid \"Ishikawa\"\nmsgstr \"Iŝikaŭo\"\n\n#: jp/jp_prefectures.py:23\nmsgid \"Fukui\"\nmsgstr \"Fukuo\"\n\n#: jp/jp_prefectures.py:24\nmsgid \"Gifu\"\nmsgstr \"Gifuo\"\n\n#: jp/jp_prefectures.py:25\nmsgid \"Shizuoka\"\nmsgstr \"Ŝizuoko\"\n\n#: jp/jp_prefectures.py:26\nmsgid \"Aichi\"\nmsgstr \"Aiĉio\"\n\n#: jp/jp_prefectures.py:27\nmsgid \"Mie\"\nmsgstr \"Mie-prefektejo\"\n\n#: jp/jp_prefectures.py:28\nmsgid \"Shiga\"\nmsgstr \"Ŝigao\"\n\n#: jp/jp_prefectures.py:29\nmsgid \"Kyoto\"\nmsgstr \"Kioto\"\n\n#: jp/jp_prefectures.py:30\nmsgid \"Osaka\"\nmsgstr \"Osako\"\n\n#: jp/jp_prefectures.py:31\nmsgid \"Hyogo\"\nmsgstr \"Hjogo\"\n\n#: jp/jp_prefectures.py:32\nmsgid \"Nara\"\nmsgstr \"Narao\"\n\n#: jp/jp_prefectures.py:33\nmsgid \"Wakayama\"\nmsgstr \"Ŭakajamo\"\n\n#: jp/jp_prefectures.py:34\nmsgid \"Tottori\"\nmsgstr \"Totorio\"\n\n#: jp/jp_prefectures.py:35\nmsgid \"Shimane\"\nmsgstr \"Ŝimano\"\n\n#: jp/jp_prefectures.py:36\nmsgid \"Okayama\"\nmsgstr \"Okajamo\"\n\n#: jp/jp_prefectures.py:37\nmsgid \"Hiroshima\"\nmsgstr \"Hiroŝimo\"\n\n#: jp/jp_prefectures.py:38\nmsgid \"Yamaguchi\"\nmsgstr \"Jamaguĉo\"\n\n#: jp/jp_prefectures.py:39\nmsgid \"Tokushima\"\nmsgstr \"Tokuŝimo\"\n\n#: jp/jp_prefectures.py:40\nmsgid \"Kagawa\"\nmsgstr \"Kagaŭo\"\n\n#: jp/jp_prefectures.py:41\nmsgid \"Ehime\"\nmsgstr \"Ehimo\"\n\n#: jp/jp_prefectures.py:42\nmsgid \"Kochi\"\nmsgstr \"Koĉio\"\n\n#: jp/jp_prefectures.py:43\nmsgid \"Fukuoka\"\nmsgstr \"Fukuoko\"\n\n#: jp/jp_prefectures.py:44\nmsgid \"Saga\"\nmsgstr \"Sagao\"\n\n#: jp/jp_prefectures.py:45\nmsgid \"Nagasaki\"\nmsgstr \"Nagasako\"\n\n#: jp/jp_prefectures.py:46\nmsgid \"Kumamoto\"\nmsgstr \"Kumamoto\"\n\n#: jp/jp_prefectures.py:47\nmsgid \"Oita\"\nmsgstr \"Oita prefektejo\"\n\n#: jp/jp_prefectures.py:48\nmsgid \"Miyazaki\"\nmsgstr \"Mijazako\"\n\n#: jp/jp_prefectures.py:49\nmsgid \"Kagoshima\"\nmsgstr \"Kagoshimo\"\n\n#: jp/jp_prefectures.py:50\nmsgid \"Okinawa\"\nmsgstr \"Okinavo\"\n\n#: kw/forms.py:27\nmsgid \"Enter a valid Kuwaiti Civil ID number\"\nmsgstr \"Enigu validan Kuvajtan Civilan Identigan Kartan nombron\"\n\n#: mk/forms.py:18\nmsgid \"\"\n\"Identity card numbers must contain either 4 to 7 digits or an uppercase \"\n\"letter and 7 digits.\"\nmsgstr \"\"\n\"Identiga karta nombroj devus enhavi aŭ 4 - 7 ciferoj aŭ majuskla letero kaj \"\n\"7 ciferoj.\"\n\n#: mk/forms.py:57 si/forms.py:24\nmsgid \"This field should contain exactly 13 digits.\"\nmsgstr \"Ĉi tiu kampo enhavus ĝuste 13 ciferojn.\"\n\n#: mk/forms.py:58\nmsgid \"The first 7 digits of the UMCN must represent a valid past date.\"\nmsgstr \"\"\n\"La unuaj 7 ciferoj de la UMCN devus reprezenti validan pasintecon daton.\"\n\n#: mk/forms.py:59\nmsgid \"The UMCN is not valid.\"\nmsgstr \"La UMCN ne estas valida.\"\n\n#: mk/mk_choices.py:10\nmsgid \"Aerodrom\"\nmsgstr \"Aerodromo\"\n\n#: mk/mk_choices.py:11\nmsgid \"Aračinovo\"\nmsgstr \"Aračinovo\"\n\n#: mk/mk_choices.py:12\nmsgid \"Berovo\"\nmsgstr \"Berovo\"\n\n#: mk/mk_choices.py:13\nmsgid \"Bitola\"\nmsgstr \"Bitolao\"\n\n#: mk/mk_choices.py:14\nmsgid \"Bogdanci\"\nmsgstr \"Bogdancio\"\n\n#: mk/mk_choices.py:15\nmsgid \"Bogovinje\"\nmsgstr \"Bogovinjeo\"\n\n#: mk/mk_choices.py:16\nmsgid \"Bosilovo\"\nmsgstr \"Bosilovo\"\n\n#: mk/mk_choices.py:17\nmsgid \"Brvenica\"\nmsgstr \"Brvenicao\"\n\n#: mk/mk_choices.py:18\nmsgid \"Butel\"\nmsgstr \"Butelo\"\n\n#: mk/mk_choices.py:19\nmsgid \"Valandovo\"\nmsgstr \"Valandovo\"\n\n#: mk/mk_choices.py:20\nmsgid \"Vasilevo\"\nmsgstr \"Vasilevo\"\n\n#: mk/mk_choices.py:21\nmsgid \"Vevčani\"\nmsgstr \"Vevčanio\"\n\n#: mk/mk_choices.py:22\nmsgid \"Veles\"\nmsgstr \"Veleso\"\n\n#: mk/mk_choices.py:23\nmsgid \"Vinica\"\nmsgstr \"Vinicao\"\n\n#: mk/mk_choices.py:24\nmsgid \"Vraneštica\"\nmsgstr \"Vranešticao\"\n\n#: mk/mk_choices.py:25\nmsgid \"Vrapčište\"\nmsgstr \"Vrapčišteo\"\n\n#: mk/mk_choices.py:26\nmsgid \"Gazi Baba\"\nmsgstr \"Gazi Babao\"\n\n#: mk/mk_choices.py:27\nmsgid \"Gevgelija\"\nmsgstr \"Gevgelijao\"\n\n#: mk/mk_choices.py:28\nmsgid \"Gostivar\"\nmsgstr \"Gostivaro\"\n\n#: mk/mk_choices.py:29\nmsgid \"Gradsko\"\nmsgstr \"Gradsko\"\n\n#: mk/mk_choices.py:30\nmsgid \"Debar\"\nmsgstr \"Debaro\"\n\n#: mk/mk_choices.py:31\nmsgid \"Debarca\"\nmsgstr \"Debarcao\"\n\n#: mk/mk_choices.py:32\nmsgid \"Delčevo\"\nmsgstr \"Delčevo\"\n\n#: mk/mk_choices.py:33\nmsgid \"Demir Kapija\"\nmsgstr \"Demir Kapijao\"\n\n#: mk/mk_choices.py:34\nmsgid \"Demir Hisar\"\nmsgstr \"Demir Hisaro\"\n\n#: mk/mk_choices.py:35\nmsgid \"Dolneni\"\nmsgstr \"Dolnenio\"\n\n#: mk/mk_choices.py:36\nmsgid \"Drugovo\"\nmsgstr \"Drugovo\"\n\n#: mk/mk_choices.py:37\nmsgid \"Gjorče Petrov\"\nmsgstr \"Gjorče Petrovo\"\n\n#: mk/mk_choices.py:38\nmsgid \"Želino\"\nmsgstr \"Zelino\"\n\n#: mk/mk_choices.py:39\nmsgid \"Zajas\"\nmsgstr \"Zajaso\"\n\n#: mk/mk_choices.py:40\nmsgid \"Zelenikovo\"\nmsgstr \"Zelenikovo\"\n\n#: mk/mk_choices.py:41\nmsgid \"Zrnovci\"\nmsgstr \"Zrnovcio\"\n\n#: mk/mk_choices.py:42\nmsgid \"Ilinden\"\nmsgstr \"Ilindeno\"\n\n#: mk/mk_choices.py:43\nmsgid \"Jegunovce\"\nmsgstr \"Jegunovco\"\n\n#: mk/mk_choices.py:44\nmsgid \"Kavadarci\"\nmsgstr \"Kavadarcio\"\n\n#: mk/mk_choices.py:45\nmsgid \"Karbinci\"\nmsgstr \"Karbincio\"\n\n#: mk/mk_choices.py:46\nmsgid \"Karpoš\"\nmsgstr \"Karpošo\"\n\n#: mk/mk_choices.py:47\nmsgid \"Kisela Voda\"\nmsgstr \"Kisela Vodao\"\n\n#: mk/mk_choices.py:48\nmsgid \"Kičevo\"\nmsgstr \"Kičevo\"\n\n#: mk/mk_choices.py:49\nmsgid \"Konče\"\nmsgstr \"Končeo\"\n\n#: mk/mk_choices.py:50\nmsgid \"Koćani\"\nmsgstr \"Koćanio\"\n\n#: mk/mk_choices.py:51\nmsgid \"Kratovo\"\nmsgstr \"Kratovo\"\n\n#: mk/mk_choices.py:52\nmsgid \"Kriva Palanka\"\nmsgstr \"Kriva Palankao\"\n\n#: mk/mk_choices.py:53\nmsgid \"Krivogaštani\"\nmsgstr \"Krivogaštanio\"\n\n#: mk/mk_choices.py:54\nmsgid \"Kruševo\"\nmsgstr \"Kruševo\"\n\n#: mk/mk_choices.py:55\nmsgid \"Kumanovo\"\nmsgstr \"Kumanovo\"\n\n#: mk/mk_choices.py:56\nmsgid \"Lipkovo\"\nmsgstr \"Lipkovo\"\n\n#: mk/mk_choices.py:57\nmsgid \"Lozovo\"\nmsgstr \"Lozovo\"\n\n#: mk/mk_choices.py:58\nmsgid \"Mavrovo i Rostuša\"\nmsgstr \"Mavrovo kaj Rostušao\"\n\n#: mk/mk_choices.py:59\nmsgid \"Makedonska Kamenica\"\nmsgstr \"Makedonska Kamenicao\"\n\n#: mk/mk_choices.py:60\nmsgid \"Makedonski Brod\"\nmsgstr \"Makedonski Brodo\"\n\n#: mk/mk_choices.py:61\nmsgid \"Mogila\"\nmsgstr \"Mogilao\"\n\n#: mk/mk_choices.py:62\nmsgid \"Negotino\"\nmsgstr \"Negotino\"\n\n#: mk/mk_choices.py:63\nmsgid \"Novaci\"\nmsgstr \"Novacio\"\n\n#: mk/mk_choices.py:64\nmsgid \"Novo Selo\"\nmsgstr \"Novo Selo\"\n\n#: mk/mk_choices.py:65\nmsgid \"Oslomej\"\nmsgstr \"Oslomejo\"\n\n#: mk/mk_choices.py:66\nmsgid \"Ohrid\"\nmsgstr \"Oĥrido\"\n\n#: mk/mk_choices.py:67\nmsgid \"Petrovec\"\nmsgstr \"Petroveco\"\n\n#: mk/mk_choices.py:68\nmsgid \"Pehčevo\"\nmsgstr \"Pečevo\"\n\n#: mk/mk_choices.py:69\nmsgid \"Plasnica\"\nmsgstr \"Plasnicao\"\n\n#: mk/mk_choices.py:70\nmsgid \"Prilep\"\nmsgstr \"Prilepo\"\n\n#: mk/mk_choices.py:71\nmsgid \"Probištip\"\nmsgstr \"Probištipo\"\n\n#: mk/mk_choices.py:72\nmsgid \"Radoviš\"\nmsgstr \"Radovišo\"\n\n#: mk/mk_choices.py:73\nmsgid \"Rankovce\"\nmsgstr \"Rankovceo\"\n\n#: mk/mk_choices.py:74\nmsgid \"Resen\"\nmsgstr \"Reseno\"\n\n#: mk/mk_choices.py:75\nmsgid \"Rosoman\"\nmsgstr \"Rosomano\"\n\n#: mk/mk_choices.py:76\nmsgid \"Saraj\"\nmsgstr \"Sarajo\"\n\n#: mk/mk_choices.py:77\nmsgid \"Sveti Nikole\"\nmsgstr \"Sveti Nikolo\"\n\n#: mk/mk_choices.py:78\nmsgid \"Sopište\"\nmsgstr \"Sopišteo\"\n\n#: mk/mk_choices.py:79\nmsgid \"Star Dojran\"\nmsgstr \"Star Dojrano\"\n\n#: mk/mk_choices.py:80\nmsgid \"Staro Nagoričane\"\nmsgstr \"Staro Nagoričaneo\"\n\n#: mk/mk_choices.py:81\nmsgid \"Struga\"\nmsgstr \"Strugao\"\n\n#: mk/mk_choices.py:82\nmsgid \"Strumica\"\nmsgstr \"Strumicao\"\n\n#: mk/mk_choices.py:83\nmsgid \"Studeničani\"\nmsgstr \"Studeničanio\"\n\n#: mk/mk_choices.py:84\nmsgid \"Tearce\"\nmsgstr \"Tearceo\"\n\n#: mk/mk_choices.py:85\nmsgid \"Tetovo\"\nmsgstr \"Tetovo\"\n\n#: mk/mk_choices.py:86\nmsgid \"Centar\"\nmsgstr \"Centaro\"\n\n#: mk/mk_choices.py:87\nmsgid \"Centar-Župa\"\nmsgstr \"Centar-Zupao\"\n\n#: mk/mk_choices.py:88\nmsgid \"Čair\"\nmsgstr \"Čairo\"\n\n#: mk/mk_choices.py:89\nmsgid \"Čaška\"\nmsgstr \"Čaškao\"\n\n#: mk/mk_choices.py:90\nmsgid \"Češinovo-Obleševo\"\nmsgstr \"Češinovo-Obleševo\"\n\n#: mk/mk_choices.py:91\nmsgid \"Čučer-Sandevo\"\nmsgstr \"Čučer-Sandevo\"\n\n#: mk/mk_choices.py:92\nmsgid \"Štip\"\nmsgstr \"Štipo\"\n\n#: mk/mk_choices.py:93\nmsgid \"Šuto Orizari\"\nmsgstr \"Šuto Orizario\"\n\n#: mk/models.py:11\nmsgid \"Macedonian identity card number\"\nmsgstr \"Macedonia identiga karta nombro\"\n\n#: mk/models.py:25\nmsgid \"A Macedonian municipality (2 character code)\"\nmsgstr \"Macedonia urbo (2 karaktero kodo)\"\n\n#: mk/models.py:35\nmsgid \"Unique master citizen number (13 digits)\"\nmsgstr \"Unika mastra civitana nombro (13 ciferoj)\"\n\n#: mx/forms.py:67\nmsgid \"Enter a valid zip code in the format XXXXX.\"\nmsgstr \"Enigu validan poŝtan kodon laŭformate XXXXX.\"\n\n#: mx/forms.py:110\nmsgid \"Enter a valid RFC.\"\nmsgstr \"Enigu validan RFC.\"\n\n#: mx/forms.py:111\nmsgid \"Invalid checksum for RFC.\"\nmsgstr \"Nevalida kontrolsumo por RFC.\"\n\n#: mx/forms.py:191\nmsgid \"Enter a valid CURP.\"\nmsgstr \"Enigu validan CURP.\"\n\n#: mx/forms.py:192\nmsgid \"Invalid checksum for CURP.\"\nmsgstr \"Nevalida kontrolsumo por CURP.\"\n\n#: mx/models.py:14\nmsgid \"Mexico state (three uppercase letters)\"\nmsgstr \"Meksika stato (tri majusklaj leteroj)\"\n\n#: mx/models.py:27\nmsgid \"Mexico zip code\"\nmsgstr \"Meksika poŝta kodo\"\n\n#: mx/models.py:44\nmsgid \"Mexican RFC\"\nmsgstr \"Meksika RFC\"\n\n#: mx/models.py:61\nmsgid \"Mexican CURP\"\nmsgstr \"Meksika CURP\"\n\n#: mx/mx_states.py:14\nmsgid \"Aguascalientes\"\nmsgstr \"Aguascaliento\"\n\n#: mx/mx_states.py:15\nmsgid \"Baja California\"\nmsgstr \"Basa Kalifornio\"\n\n#: mx/mx_states.py:16\nmsgid \"Baja California Sur\"\nmsgstr \"Basa Kalifornio Suro\"\n\n#: mx/mx_states.py:17\nmsgid \"Campeche\"\nmsgstr \"Campeĉeo\"\n\n#: mx/mx_states.py:18\nmsgid \"Chihuahua\"\nmsgstr \"Ĉihuahuao\"\n\n#: mx/mx_states.py:19\nmsgid \"Chiapas\"\nmsgstr \"Ĉiapaso\"\n\n#: mx/mx_states.py:20\nmsgid \"Coahuila\"\nmsgstr \"Koahuilo\"\n\n#: mx/mx_states.py:21\nmsgid \"Colima\"\nmsgstr \"Kolimo\"\n\n#: mx/mx_states.py:22\nmsgid \"Distrito Federal\"\nmsgstr \"Federacia Distrikto\"\n\n#: mx/mx_states.py:23\nmsgid \"Durango\"\nmsgstr \"Durango\"\n\n#: mx/mx_states.py:24\nmsgid \"Guerrero\"\nmsgstr \"Guerero\"\n\n#: mx/mx_states.py:25\nmsgid \"Guanajuato\"\nmsgstr \"Guanajuato\"\n\n#: mx/mx_states.py:26\nmsgid \"Hidalgo\"\nmsgstr \"Hidalgo\"\n\n#: mx/mx_states.py:27\nmsgid \"Jalisco\"\nmsgstr \"Jalisco\"\n\n#: mx/mx_states.py:28\nmsgid \"Estado de México\"\nmsgstr \"Ŝtato de Méksiko\"\n\n#: mx/mx_states.py:29\nmsgid \"Michoacán\"\nmsgstr \"Miĥoakáno\"\n\n#: mx/mx_states.py:30\nmsgid \"Morelos\"\nmsgstr \"Moreloso\"\n\n#: mx/mx_states.py:31\nmsgid \"Nayarit\"\nmsgstr \"Najarito\"\n\n#: mx/mx_states.py:32\nmsgid \"Nuevo León\"\nmsgstr \"Nuevo Leono\"\n\n#: mx/mx_states.py:33\nmsgid \"Oaxaca\"\nmsgstr \"Oaksako\"\n\n#: mx/mx_states.py:34\nmsgid \"Puebla\"\nmsgstr \"Pueblo\"\n\n#: mx/mx_states.py:35\nmsgid \"Querétaro\"\nmsgstr \"Kueretaro\"\n\n#: mx/mx_states.py:36\nmsgid \"Quintana Roo\"\nmsgstr \"Kvintana Roo\"\n\n#: mx/mx_states.py:37\nmsgid \"Sinaloa\"\nmsgstr \"Sinalo\"\n\n#: mx/mx_states.py:38\nmsgid \"San Luis Potosí\"\nmsgstr \"Sankta Luiz Potosio\"\n\n#: mx/mx_states.py:39\nmsgid \"Sonora\"\nmsgstr \"Sonorao\"\n\n#: mx/mx_states.py:40\nmsgid \"Tabasco\"\nmsgstr \"Tabasko\"\n\n#: mx/mx_states.py:41\nmsgid \"Tamaulipas\"\nmsgstr \"Tamaŭlipaso\"\n\n#: mx/mx_states.py:42\nmsgid \"Tlaxcala\"\nmsgstr \"Tlakskalao\"\n\n#: mx/mx_states.py:43\nmsgid \"Veracruz\"\nmsgstr \"Verakruzo\"\n\n#: mx/mx_states.py:44\nmsgid \"Yucatán\"\nmsgstr \"Jukatanio\"\n\n#: mx/mx_states.py:45\nmsgid \"Zacatecas\"\nmsgstr \"Zakatecaso\"\n\n#: nl/forms.py:26\nmsgid \"Enter a valid postal code\"\nmsgstr \"Enigu validan poŝtan kodon.\"\n\n#: nl/forms.py:82\nmsgid \"Enter a valid SoFi number\"\nmsgstr \"Enigu validan SoFi nombron.\"\n\n#: nl/nl_provinces.py:4\nmsgid \"Drenthe\"\nmsgstr \"Drento\"\n\n#: nl/nl_provinces.py:5\nmsgid \"Flevoland\"\nmsgstr \"Flevolando\"\n\n#: nl/nl_provinces.py:6\nmsgid \"Friesland\"\nmsgstr \"Frislando\"\n\n#: nl/nl_provinces.py:7\nmsgid \"Gelderland\"\nmsgstr \"Gelderlando\"\n\n#: nl/nl_provinces.py:8\nmsgid \"Groningen\"\nmsgstr \"Groningeno\"\n\n#: nl/nl_provinces.py:10\nmsgid \"Noord-Brabant\"\nmsgstr \"Norda Brabanto\"\n\n#: nl/nl_provinces.py:11\nmsgid \"Noord-Holland\"\nmsgstr \"Norda Holando\"\n\n#: nl/nl_provinces.py:12\nmsgid \"Overijssel\"\nmsgstr \"Overijselo\"\n\n#: nl/nl_provinces.py:13\nmsgid \"Utrecht\"\nmsgstr \"Utrekto\"\n\n#: nl/nl_provinces.py:14\nmsgid \"Zeeland\"\nmsgstr \"Zelando\"\n\n#: nl/nl_provinces.py:15\nmsgid \"Zuid-Holland\"\nmsgstr \"Suda Holando\"\n\n#: no/forms.py:39\nmsgid \"Enter a valid Norwegian social security number.\"\nmsgstr \"Enigu validan Norvegan socialasekuran numeron.\"\n\n#: pe/forms.py:28\nmsgid \"This field requires 8 digits.\"\nmsgstr \"Ĉi tiu kampo bezonas 8 ciferojn.\"\n\n#: pe/forms.py:56\nmsgid \"This field requires 11 digits.\"\nmsgstr \"Ĉi tiu kampo bezonas 11 ciferojn.\"\n\n#: pl/forms.py:42\nmsgid \"National Identification Number consists of 11 digits.\"\nmsgstr \"Nacia Identiga Nombro konsistas el 11 ciferoj.\"\n\n#: pl/forms.py:43\nmsgid \"Wrong checksum for the National Identification Number.\"\nmsgstr \"Malĝusta kontrolsumo por la Nacia Identiga Nombro.\"\n\n#: pl/forms.py:79\nmsgid \"National ID Card Number consists of 3 letters and 6 digits.\"\nmsgstr \"Nacia Identiga Karta Nombro konsistas el 3 leteroj kaj 6 ciferoj.\"\n\n#: pl/forms.py:80\nmsgid \"Wrong checksum for the National ID Card Number.\"\nmsgstr \"Malĝusta kontrolsumo por la Nacia Identiga Karta Nombro\"\n\n#: pl/forms.py:131\nmsgid \"\"\n\"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or \"\n\"XXXXXXXXXX.\"\nmsgstr \"\"\n\"Entajpu imposta numero en kampo (NIP) kun la formato XXX-XXX-XX-XX, XXX-XX-\"\n\"XX-XXX aŭ XXXXXXXXXX.\"\n\n#: pl/forms.py:132\nmsgid \"Wrong checksum for the Tax Number (NIP).\"\nmsgstr \"Malĝusta kontrolsumo por la imposta nombro (NIP).\"\n\n#: pl/forms.py:171\nmsgid \"National Business Register Number (REGON) consists of 9 or 14 digits.\"\nmsgstr \"Nacia Komerca Registra Nombro (REGON) konsistas el 9 aŭ 14 ciferoj.\"\n\n#: pl/forms.py:172\nmsgid \"Wrong checksum for the National Business Register Number (REGON).\"\nmsgstr \"Malĝusta kontrolsumo por la Komerca Registra Nombro (REGON).\"\n\n#: pl/forms.py:212\nmsgid \"Enter a postal code in the format XX-XXX.\"\nmsgstr \"Enigu poŝtan kodon laŭformate XX-XXX.\"\n\n#: pl/pl_voivodeships.py:8\nmsgid \"Lower Silesia\"\nmsgstr \"Malsupra Silezio\"\n\n#: pl/pl_voivodeships.py:9\nmsgid \"Kuyavia-Pomerania\"\nmsgstr \"Kujavia-Pomerio\"\n\n#: pl/pl_voivodeships.py:10\nmsgid \"Lublin\"\nmsgstr \"Lublino\"\n\n#: pl/pl_voivodeships.py:11\nmsgid \"Lubusz\"\nmsgstr \"Lubuŝo\"\n\n#: pl/pl_voivodeships.py:12\nmsgid \"Lodz\"\nmsgstr \"Lodzo\"\n\n#: pl/pl_voivodeships.py:13\nmsgid \"Lesser Poland\"\nmsgstr \"Pli malgranda Pollando\"\n\n#: pl/pl_voivodeships.py:14\nmsgid \"Masovia\"\nmsgstr \"Masovio\"\n\n#: pl/pl_voivodeships.py:15\nmsgid \"Opole\"\nmsgstr \"Opolo\"\n\n#: pl/pl_voivodeships.py:16\nmsgid \"Subcarpatia\"\nmsgstr \"Subkarpatio\"\n\n#: pl/pl_voivodeships.py:17\nmsgid \"Podlasie\"\nmsgstr \"Podlaĥio\"\n\n#: pl/pl_voivodeships.py:18\nmsgid \"Pomerania\"\nmsgstr \"Pomerio\"\n\n#: pl/pl_voivodeships.py:19\nmsgid \"Silesia\"\nmsgstr \"Silezio\"\n\n#: pl/pl_voivodeships.py:20\nmsgid \"Swietokrzyskie\"\nmsgstr \"Sŭietokrziskio\"\n\n#: pl/pl_voivodeships.py:21\nmsgid \"Warmia-Masuria\"\nmsgstr \"Varmia-Masurio\"\n\n#: pl/pl_voivodeships.py:22\nmsgid \"Greater Poland\"\nmsgstr \"Granda Pollando\"\n\n#: pl/pl_voivodeships.py:23\nmsgid \"West Pomerania\"\nmsgstr \"Okcidenta Pomerio\"\n\n#: pt/forms.py:19\nmsgid \"Enter a zip code in the format XXXX-XXX.\"\nmsgstr \"Enigu poŝtan kodon laŭformate XXXX-XXX.\"\n\n#: pt/forms.py:39\nmsgid \"Phone numbers must have 9 digits, or start by + or 00.\"\nmsgstr \"Telefonnumeroj devas havi 9 ciferoj, aŭ komenco de + aŭ 00.\"\n\n#: ro/forms.py:22\nmsgid \"Enter a valid CIF.\"\nmsgstr \"Enigu validan CIF.\"\n\n#: ro/forms.py:59\nmsgid \"Enter a valid CNP.\"\nmsgstr \"Enigu validan CNP.\"\n\n#: ro/forms.py:143\nmsgid \"Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format\"\nmsgstr \"Enigu validan IBAN laŭformate ROXX-XXXX-XXXX-XXXX-XXXX-XXXX.\"\n\n#: ro/forms.py:175\nmsgid \"Phone numbers must be in XXXX-XXXXXX format.\"\nmsgstr \"Telefonnumeroj devas esti laŭformate XXXX-XXXXXX.\"\n\n#: ro/forms.py:200\nmsgid \"Enter a valid postal code in the format XXXXXX\"\nmsgstr \"Enigu validan poŝtan kodon laŭformate XXXXXX.\"\n\n#: ru/forms.py:37\nmsgid \"Enter a postal code in the format XXXXXX.\"\nmsgstr \"Enigu poŝtan kodon laŭformate XXXXXX.\"\n\n#: ru/forms.py:50\nmsgid \"Enter a passport number in the format XXXX XXXXXX.\"\nmsgstr \"Enigu pasportan nombron laŭformate XXXX XXXXXX.\"\n\n#: ru/forms.py:63\nmsgid \"Enter a passport number in the format XX XXXXXXX.\"\nmsgstr \"Enigu pasportan nombron laŭformate XX XXXXXXX.\"\n\n#: ru/ru_regions.py:10\nmsgid \"Central Federal County\"\nmsgstr \"Centra Federacia Distrikto\"\n\n#: ru/ru_regions.py:11\nmsgid \"South Federal County\"\nmsgstr \"Suda Federacia Distrikto\"\n\n#: ru/ru_regions.py:12\nmsgid \"North-West Federal County\"\nmsgstr \"Norda-Okcidenta  Federacia Distrikto\"\n\n#: ru/ru_regions.py:13\nmsgid \"Far-East Federal County\"\nmsgstr \"Fora-Orienta  Federacia Distrikto\"\n\n#: ru/ru_regions.py:14\nmsgid \"Siberian Federal County\"\nmsgstr \"Siberia Federacia Distrikto\"\n\n#: ru/ru_regions.py:15\nmsgid \"Ural Federal County\"\nmsgstr \"Urals Federacia Distrikto\"\n\n#: ru/ru_regions.py:16\nmsgid \"Privolzhsky Federal County\"\nmsgstr \"Privolzskio Federacia Distrikto\"\n\n#: ru/ru_regions.py:17\nmsgid \"North-Caucasian Federal County\"\nmsgstr \"Norda Kaŭkasina Federacia Distrikto\"\n\n#: ru/ru_regions.py:21\nmsgid \"Moskva\"\nmsgstr \"Moskvo\"\n\n#: ru/ru_regions.py:22\nmsgid \"Saint-Peterburg\"\nmsgstr \"Sankt-Peterburgo\"\n\n#: ru/ru_regions.py:23\nmsgid \"Moskovskaya oblast'\"\nmsgstr \"Moskva provinco\"\n\n#: ru/ru_regions.py:24\nmsgid \"Adygeya, Respublika\"\nmsgstr \"Respubliko de Adigeo\"\n\n#: ru/ru_regions.py:25\nmsgid \"Bashkortostan, Respublika\"\nmsgstr \"Respubliko de Baŝkirio\"\n\n#: ru/ru_regions.py:26\nmsgid \"Buryatia, Respublika\"\nmsgstr \"Respubliko de Burjatio\"\n\n#: ru/ru_regions.py:27\nmsgid \"Altay, Respublika\"\nmsgstr \"Respubliko de Altaio\"\n\n#: ru/ru_regions.py:28\nmsgid \"Dagestan, Respublika\"\nmsgstr \"Respubliko de Dagestano\"\n\n#: ru/ru_regions.py:29\nmsgid \"Ingushskaya Respublika\"\nmsgstr \"Respubliko de Inguŝskajo\"\n\n#: ru/ru_regions.py:30\nmsgid \"Kabardino-Balkarskaya Respublika\"\nmsgstr \"Respubliko de Kabardio-Balkario\"\n\n#: ru/ru_regions.py:31\nmsgid \"Kalmykia, Respublika\"\nmsgstr \"Respubliko de Kalmukio\"\n\n#: ru/ru_regions.py:32\nmsgid \"Karachaevo-Cherkesskaya Respublika\"\nmsgstr \"Respubliko de Karaĉajio-Ĉerkesio\"\n\n#: ru/ru_regions.py:33\nmsgid \"Karelia, Respublika\"\nmsgstr \"Respubliko de Karelio\"\n\n#: ru/ru_regions.py:34\nmsgid \"Komi, Respublika\"\nmsgstr \"Respubliko de Komio\"\n\n#: ru/ru_regions.py:35\nmsgid \"Mariy Ehl, Respublika\"\nmsgstr \"Respubliko de Mari Elo\"\n\n#: ru/ru_regions.py:36\nmsgid \"Mordovia, Respublika\"\nmsgstr \"Respubliko de Mordvio\"\n\n#: ru/ru_regions.py:37\nmsgid \"Sakha, Respublika (Yakutiya)\"\nmsgstr \"Respubliko de Saka (Jakutijo)\"\n\n#: ru/ru_regions.py:38\nmsgid \"Severnaya Osetia, Respublika (Alania)\"\nmsgstr \"Respubliko de Severnaja Osetio (Alanio)\"\n\n#: ru/ru_regions.py:39\nmsgid \"Tatarstan, Respublika\"\nmsgstr \"Respubliko de Tatarstano\"\n\n#: ru/ru_regions.py:40\nmsgid \"Tyva, Respublika (Tuva)\"\nmsgstr \"Respubliko de Tijvao (Tuvao)\"\n\n#: ru/ru_regions.py:41\nmsgid \"Udmurtskaya Respublika\"\nmsgstr \"Respubliko de Udmurtskajao\"\n\n#: ru/ru_regions.py:42\nmsgid \"Khakassiya, Respublika\"\nmsgstr \"Respubliko de Kakasijao\"\n\n#: ru/ru_regions.py:43\nmsgid \"Chechenskaya Respublika\"\nmsgstr \"Ĉeĉenskaja Respubliko\"\n\n#: ru/ru_regions.py:44\nmsgid \"Chuvashskaya Respublika\"\nmsgstr \"Ĉuvaŝskaya Respubliko\"\n\n#: ru/ru_regions.py:45\nmsgid \"Altayskiy Kray\"\nmsgstr \"Altajskia Federacio\"\n\n#: ru/ru_regions.py:46\nmsgid \"Zabaykalskiy Kray\"\nmsgstr \"Zabajkalski Federacio\"\n\n#: ru/ru_regions.py:47\nmsgid \"Kamchatskiy Kray\"\nmsgstr \"Kamĉatski Federacio\"\n\n#: ru/ru_regions.py:48\nmsgid \"Krasnodarskiy Kray\"\nmsgstr \"Krasnodarski Federacio\"\n\n#: ru/ru_regions.py:49\nmsgid \"Krasnoyarskiy Kray\"\nmsgstr \"Krasnojarski Federacio\"\n\n#: ru/ru_regions.py:50\nmsgid \"Permskiy Kray\"\nmsgstr \"Permski Federacio\"\n\n#: ru/ru_regions.py:51\nmsgid \"Primorskiy Kray\"\nmsgstr \"Primorski Federacio\"\n\n#: ru/ru_regions.py:52\nmsgid \"Stavropol'siyy Kray\"\nmsgstr \"Stavropolsij Federacio\"\n\n#: ru/ru_regions.py:53\nmsgid \"Khabarovskiy Kray\"\nmsgstr \"Kabarovski Federacio\"\n\n#: ru/ru_regions.py:54\nmsgid \"Amurskaya oblast'\"\nmsgstr \"Amurskaja Provinco\"\n\n#: ru/ru_regions.py:55\nmsgid \"Arkhangel'skaya oblast'\"\nmsgstr \"Arkangelskaja Provinco\"\n\n#: ru/ru_regions.py:56\nmsgid \"Astrakhanskaya oblast'\"\nmsgstr \"Astrakanskaja Provinco\"\n\n#: ru/ru_regions.py:57\nmsgid \"Belgorodskaya oblast'\"\nmsgstr \"Belgorodskaja Provinco\"\n\n#: ru/ru_regions.py:58\nmsgid \"Bryanskaya oblast'\"\nmsgstr \"Brijanskaja Provinco\"\n\n#: ru/ru_regions.py:59\nmsgid \"Vladimirskaya oblast'\"\nmsgstr \"Vladimirskaja Provinco\"\n\n#: ru/ru_regions.py:60\nmsgid \"Volgogradskaya oblast'\"\nmsgstr \"Volgogrodskaja Provinco\"\n\n#: ru/ru_regions.py:61\nmsgid \"Vologodskaya oblast'\"\nmsgstr \"Vologodskaja Provinco\"\n\n#: ru/ru_regions.py:62\nmsgid \"Voronezhskaya oblast'\"\nmsgstr \"Voronezskaja Provinco\"\n\n#: ru/ru_regions.py:63\nmsgid \"Ivanovskaya oblast'\"\nmsgstr \"Ivanovskaja Provinco\"\n\n#: ru/ru_regions.py:64\nmsgid \"Irkutskaya oblast'\"\nmsgstr \"Irkutskaja Provinco\"\n\n#: ru/ru_regions.py:65\nmsgid \"Kaliningradskaya oblast'\"\nmsgstr \"Kaliningradskaja Provinco\"\n\n#: ru/ru_regions.py:66\nmsgid \"Kaluzhskaya oblast'\"\nmsgstr \"Kaluzskaja Provinco\"\n\n#: ru/ru_regions.py:67\nmsgid \"Kemerovskaya oblast'\"\nmsgstr \"Kemerovskaja Provinco\"\n\n#: ru/ru_regions.py:68\nmsgid \"Kirovskaya oblast'\"\nmsgstr \"Kirovskaja Provinco\"\n\n#: ru/ru_regions.py:69\nmsgid \"Kostromskaya oblast'\"\nmsgstr \"Kostromskaja Provinco\"\n\n#: ru/ru_regions.py:70\nmsgid \"Kurganskaya oblast'\"\nmsgstr \"Kurganskaja Provinco\"\n\n#: ru/ru_regions.py:71\nmsgid \"Kurskaya oblast'\"\nmsgstr \"Kurskaja Provinco\"\n\n#: ru/ru_regions.py:72\nmsgid \"Leningradskaya oblast'\"\nmsgstr \"Leningradskaja Provinco\"\n\n#: ru/ru_regions.py:73\nmsgid \"Lipeckaya oblast'\"\nmsgstr \"Lipekaja Provinco\"\n\n#: ru/ru_regions.py:74\nmsgid \"Magadanskaya oblast'\"\nmsgstr \"Magadanskaja Provinco\"\n\n#: ru/ru_regions.py:75\nmsgid \"Murmanskaya oblast'\"\nmsgstr \"Murmanskaja Provinco\"\n\n#: ru/ru_regions.py:76\nmsgid \"Nizhegorodskaja oblast'\"\nmsgstr \"Nizhegorodskaja Provinco\"\n\n#: ru/ru_regions.py:77\nmsgid \"Novgorodskaya oblast'\"\nmsgstr \"Novgorodskaja Provinco\"\n\n#: ru/ru_regions.py:78\nmsgid \"Novosibirskaya oblast'\"\nmsgstr \"Novosibirskaja Provinco\"\n\n#: ru/ru_regions.py:79\nmsgid \"Omskaya oblast'\"\nmsgstr \"Omskaja Provinco\"\n\n#: ru/ru_regions.py:80\nmsgid \"Orenburgskaya oblast'\"\nmsgstr \"Orenburgskaja Provinco\"\n\n#: ru/ru_regions.py:81\nmsgid \"Orlovskaya oblast'\"\nmsgstr \"Orlovskaja Provinco\"\n\n#: ru/ru_regions.py:82\nmsgid \"Penzenskaya oblast'\"\nmsgstr \"Penzenskaja Provinco\"\n\n#: ru/ru_regions.py:83\nmsgid \"Pskovskaya oblast'\"\nmsgstr \"Skovskaja Provinco\"\n\n#: ru/ru_regions.py:84\nmsgid \"Rostovskaya oblast'\"\nmsgstr \"Rostovskaj Provinco\"\n\n#: ru/ru_regions.py:85\nmsgid \"Rjazanskaya oblast'\"\nmsgstr \"Rjazanskaja Provinco\"\n\n#: ru/ru_regions.py:86\nmsgid \"Samarskaya oblast'\"\nmsgstr \"Samarskaja Provinco\"\n\n#: ru/ru_regions.py:87\nmsgid \"Saratovskaya oblast'\"\nmsgstr \"Saratovskaja Provinco\"\n\n#: ru/ru_regions.py:88\nmsgid \"Sakhalinskaya oblast'\"\nmsgstr \"Sakhalinskaja Provinco\"\n\n#: ru/ru_regions.py:89\nmsgid \"Sverdlovskaya oblast'\"\nmsgstr \"Sverdlovskaja Provinco\"\n\n#: ru/ru_regions.py:90\nmsgid \"Smolenskaya oblast'\"\nmsgstr \"Smolenskaja Provinco\"\n\n#: ru/ru_regions.py:91\nmsgid \"Tambovskaya oblast'\"\nmsgstr \"Tambovskaja Provinco\"\n\n#: ru/ru_regions.py:92\nmsgid \"Tverskaya oblast'\"\nmsgstr \"Tverskaja Provinco\"\n\n#: ru/ru_regions.py:93\nmsgid \"Tomskaya oblast'\"\nmsgstr \"Tomskaja Provinco\"\n\n#: ru/ru_regions.py:94\nmsgid \"Tul'skaya oblast'\"\nmsgstr \"Tulskaja Provinco\"\n\n#: ru/ru_regions.py:95\nmsgid \"Tyumenskaya oblast'\"\nmsgstr \"Tjumenskaja Provinco\"\n\n#: ru/ru_regions.py:96\nmsgid \"Ul'ianovskaya oblast'\"\nmsgstr \"Ulianovskaja Provinco\"\n\n#: ru/ru_regions.py:97\nmsgid \"Chelyabinskaya oblast'\"\nmsgstr \"Ĉeljabinskaja Provinco\"\n\n#: ru/ru_regions.py:98\nmsgid \"Yaroslavskaya oblast'\"\nmsgstr \"Jaroslavskaja Provinco\"\n\n#: ru/ru_regions.py:99\nmsgid \"Evreyskaya avtonomnaja oblast'\"\nmsgstr \"Evrejskaja Aŭtonoma Provinco\"\n\n#: ru/ru_regions.py:100\nmsgid \"Neneckiy autonomnyy okrug\"\nmsgstr \"Nenekija Aŭtonoma Areo\"\n\n#: ru/ru_regions.py:101\nmsgid \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\nmsgstr \"Ĥanti-Mansa Aŭtonoma Areo - Yugra\"\n\n#: ru/ru_regions.py:102\nmsgid \"Chukotskiy avtonomnyy okrug\"\nmsgstr \"Ĉukotka Aŭtonoma Areo\"\n\n#: ru/ru_regions.py:103\nmsgid \"Yamalo-Neneckiy avtonomnyy okrug\"\nmsgstr \"Jamalo-Nenekija Aŭtonoma Areo\"\n\n#: se/forms.py:54\nmsgid \"Enter a valid Swedish organisation number.\"\nmsgstr \"Enigu validan Svedan organizaĵon nombron.\"\n\n#: se/forms.py:111\nmsgid \"Enter a valid Swedish personal identity number.\"\nmsgstr \"Enigu validan Svedan propran identecon nombron.\"\n\n#: se/forms.py:112\nmsgid \"Co-ordination numbers are not allowed.\"\nmsgstr \"Kunordigado nombroj ne permesita.\"\n\n#: se/forms.py:154\nmsgid \"Enter a Swedish postal code in the format XXXXX.\"\nmsgstr \"Enigu validan Svedan poŝtan kodon laŭformate XXXXX.\"\n\n#: se/se_counties.py:16\nmsgid \"Stockholm\"\nmsgstr \"Stokholmo\"\n\n#: se/se_counties.py:17\nmsgid \"Västerbotten\"\nmsgstr \"Vasterboteno\"\n\n#: se/se_counties.py:18\nmsgid \"Norrbotten\"\nmsgstr \"Norboteno\"\n\n#: se/se_counties.py:19\nmsgid \"Uppsala\"\nmsgstr \"Upsalo\"\n\n#: se/se_counties.py:20\nmsgid \"Södermanland\"\nmsgstr \"Sodermanlando\"\n\n#: se/se_counties.py:21\nmsgid \"Östergötland\"\nmsgstr \"Ostrogotio\"\n\n#: se/se_counties.py:22\nmsgid \"Jönköping\"\nmsgstr \"Jonkopingo\"\n\n#: se/se_counties.py:23\nmsgid \"Kronoberg\"\nmsgstr \"Kronobergo\"\n\n#: se/se_counties.py:24\nmsgid \"Kalmar\"\nmsgstr \"Kalmaro\"\n\n#: se/se_counties.py:25\nmsgid \"Gotland\"\nmsgstr \"Gotlando\"\n\n#: se/se_counties.py:26\nmsgid \"Blekinge\"\nmsgstr \"Blekingo\"\n\n#: se/se_counties.py:27\nmsgid \"Skåne\"\nmsgstr \"Skaneo\"\n\n#: se/se_counties.py:28\nmsgid \"Halland\"\nmsgstr \"Halando\"\n\n#: se/se_counties.py:29\nmsgid \"Västra Götaland\"\nmsgstr \"Vastra Gotalando\"\n\n#: se/se_counties.py:30\nmsgid \"Värmland\"\nmsgstr \"Varmlando\"\n\n#: se/se_counties.py:31\nmsgid \"Örebro\"\nmsgstr \"Orebro\"\n\n#: se/se_counties.py:32\nmsgid \"Västmanland\"\nmsgstr \"Vastmanlando\"\n\n#: se/se_counties.py:33\nmsgid \"Dalarna\"\nmsgstr \"Dalarnao\"\n\n#: se/se_counties.py:34\nmsgid \"Gävleborg\"\nmsgstr \"Gavelborgo\"\n\n#: se/se_counties.py:35\nmsgid \"Västernorrland\"\nmsgstr \"Vasternorlando\"\n\n#: se/se_counties.py:36\nmsgid \"Jämtland\"\nmsgstr \"Jamtlando\"\n\n#: si/forms.py:25\nmsgid \"The first 7 digits of the EMSO must represent a valid past date.\"\nmsgstr \"\"\n\"La unuaj 7 ciferoj de la EMSO devas reprezenti validan pasintecon daton.\"\n\n#: si/forms.py:26\nmsgid \"The EMSO is not valid.\"\nmsgstr \"La EMSO ne estas valida.\"\n\n#: si/forms.py:86\nmsgid \"Enter a valid tax number in form SIXXXXXXXX\"\nmsgstr \"Enigu validan imposton nombron laŭformate SIXXXXXXXX\"\n\n#: si/forms.py:151\nmsgid \"Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.\"\nmsgstr \"Enigu telefonnumeron laŭformate +386XXXXXXXX aŭ 0XXXXXXXX.\"\n\n#: sk/sk_districts.py:8\nmsgid \"Banska Bystrica\"\nmsgstr \"Banska Bijstricao\"\n\n#: sk/sk_districts.py:9\nmsgid \"Banska Stiavnica\"\nmsgstr \"Banska Stiavnicao\"\n\n#: sk/sk_districts.py:10\nmsgid \"Bardejov\"\nmsgstr \"Bardejovo\"\n\n#: sk/sk_districts.py:11\nmsgid \"Banovce nad Bebravou\"\nmsgstr \"Banovce nad Bebravo\"\n\n#: sk/sk_districts.py:12\nmsgid \"Brezno\"\nmsgstr \"Brezno\"\n\n#: sk/sk_districts.py:13\nmsgid \"Bratislava I\"\nmsgstr \"Bratislavo 1\"\n\n#: sk/sk_districts.py:14\nmsgid \"Bratislava II\"\nmsgstr \"Bratislavo 2\"\n\n#: sk/sk_districts.py:15\nmsgid \"Bratislava III\"\nmsgstr \"Bratislavo 3\"\n\n#: sk/sk_districts.py:16\nmsgid \"Bratislava IV\"\nmsgstr \"Bratislavo 4\"\n\n#: sk/sk_districts.py:17\nmsgid \"Bratislava V\"\nmsgstr \"Bratislavo 5\"\n\n#: sk/sk_districts.py:18\nmsgid \"Bytca\"\nmsgstr \"Bijtĉao\"\n\n#: sk/sk_districts.py:19\nmsgid \"Cadca\"\nmsgstr \"Cadĉao\"\n\n#: sk/sk_districts.py:20\nmsgid \"Detva\"\nmsgstr \"Detvao\"\n\n#: sk/sk_districts.py:21\nmsgid \"Dolny Kubin\"\nmsgstr \"Dolni Kubino\"\n\n#: sk/sk_districts.py:22\nmsgid \"Dunajska Streda\"\nmsgstr \"Dunajska Stredao\"\n\n#: sk/sk_districts.py:23\nmsgid \"Galanta\"\nmsgstr \"Galantao\"\n\n#: sk/sk_districts.py:24\nmsgid \"Gelnica\"\nmsgstr \"Gelnicao\"\n\n#: sk/sk_districts.py:25\nmsgid \"Hlohovec\"\nmsgstr \"Ĥohoveco\"\n\n#: sk/sk_districts.py:26\nmsgid \"Humenne\"\nmsgstr \"Humeno\"\n\n#: sk/sk_districts.py:27\nmsgid \"Ilava\"\nmsgstr \"Ilavao\"\n\n#: sk/sk_districts.py:28\nmsgid \"Kezmarok\"\nmsgstr \"Kezmaroko\"\n\n#: sk/sk_districts.py:29\nmsgid \"Komarno\"\nmsgstr \"Komarno\"\n\n#: sk/sk_districts.py:30\nmsgid \"Kosice I\"\nmsgstr \"Kosiĉeo 1\"\n\n#: sk/sk_districts.py:31\nmsgid \"Kosice II\"\nmsgstr \"Kosiĉeo 2\"\n\n#: sk/sk_districts.py:32\nmsgid \"Kosice III\"\nmsgstr \"Kosiĉeo 3\"\n\n#: sk/sk_districts.py:33\nmsgid \"Kosice IV\"\nmsgstr \"Kosiĉeo 4\"\n\n#: sk/sk_districts.py:34\nmsgid \"Kosice - okolie\"\nmsgstr \"Kosiĉeo - okolio\"\n\n#: sk/sk_districts.py:35\nmsgid \"Krupina\"\nmsgstr \"Krupino\"\n\n#: sk/sk_districts.py:36\nmsgid \"Kysucke Nove Mesto\"\nmsgstr \"Kjsuka Nova Mesto\"\n\n#: sk/sk_districts.py:37\nmsgid \"Levice\"\nmsgstr \"Levico\"\n\n#: sk/sk_districts.py:38\nmsgid \"Levoca\"\nmsgstr \"Levoco\"\n\n#: sk/sk_districts.py:39\nmsgid \"Liptovsky Mikulas\"\nmsgstr \"Liptovskij Mikulaso\"\n\n#: sk/sk_districts.py:40\nmsgid \"Lucenec\"\nmsgstr \"Luceneco\"\n\n#: sk/sk_districts.py:41\nmsgid \"Malacky\"\nmsgstr \"Malakijo\"\n\n#: sk/sk_districts.py:42\nmsgid \"Martin\"\nmsgstr \"Martino\"\n\n#: sk/sk_districts.py:43\nmsgid \"Medzilaborce\"\nmsgstr \"Medzilaborco\"\n\n#: sk/sk_districts.py:44\nmsgid \"Michalovce\"\nmsgstr \"Miĉalovco\"\n\n#: sk/sk_districts.py:45\nmsgid \"Myjava\"\nmsgstr \"Mijavo\"\n\n#: sk/sk_districts.py:46\nmsgid \"Namestovo\"\nmsgstr \"Namestovo\"\n\n#: sk/sk_districts.py:47\nmsgid \"Nitra\"\nmsgstr \"Nitrao\"\n\n#: sk/sk_districts.py:48\nmsgid \"Nove Mesto nad Vahom\"\nmsgstr \"Nova Mesto nad Vahomo\"\n\n#: sk/sk_districts.py:49\nmsgid \"Nove Zamky\"\nmsgstr \"Nova Zamkijo\"\n\n#: sk/sk_districts.py:50\nmsgid \"Partizanske\"\nmsgstr \"Partizansko\"\n\n#: sk/sk_districts.py:51\nmsgid \"Pezinok\"\nmsgstr \"Pezinoko\"\n\n#: sk/sk_districts.py:52\nmsgid \"Piestany\"\nmsgstr \"Pistanio\"\n\n#: sk/sk_districts.py:53\nmsgid \"Poltar\"\nmsgstr \"Poltaro\"\n\n#: sk/sk_districts.py:54\nmsgid \"Poprad\"\nmsgstr \"Poprad\"\n\n#: sk/sk_districts.py:55\nmsgid \"Povazska Bystrica\"\nmsgstr \"Povazska Bijstriko\"\n\n#: sk/sk_districts.py:56\nmsgid \"Presov\"\nmsgstr \"Presovo\"\n\n#: sk/sk_districts.py:57\nmsgid \"Prievidza\"\nmsgstr \"Prievidzao\"\n\n#: sk/sk_districts.py:58\nmsgid \"Puchov\"\nmsgstr \"Puĉovo\"\n\n#: sk/sk_districts.py:59\nmsgid \"Revuca\"\nmsgstr \"Revuko\"\n\n#: sk/sk_districts.py:60\nmsgid \"Rimavska Sobota\"\nmsgstr \"Rimavska Sobotao\"\n\n#: sk/sk_districts.py:61\nmsgid \"Roznava\"\nmsgstr \"Roznavao\"\n\n#: sk/sk_districts.py:62\nmsgid \"Ruzomberok\"\nmsgstr \"Ruzomberoko\"\n\n#: sk/sk_districts.py:63\nmsgid \"Sabinov\"\nmsgstr \"Sabinovo\"\n\n#: sk/sk_districts.py:64\nmsgid \"Senec\"\nmsgstr \"Seneco\"\n\n#: sk/sk_districts.py:65\nmsgid \"Senica\"\nmsgstr \"Senicao\"\n\n#: sk/sk_districts.py:66\nmsgid \"Skalica\"\nmsgstr \"Skalicao\"\n\n#: sk/sk_districts.py:67\nmsgid \"Snina\"\nmsgstr \"Sninao\"\n\n#: sk/sk_districts.py:68\nmsgid \"Sobrance\"\nmsgstr \"Sobranzo\"\n\n#: sk/sk_districts.py:69\nmsgid \"Spisska Nova Ves\"\nmsgstr \"Spiska Nova Vezo\"\n\n#: sk/sk_districts.py:70\nmsgid \"Stara Lubovna\"\nmsgstr \"Stara Lubovnao\"\n\n#: sk/sk_districts.py:71\nmsgid \"Stropkov\"\nmsgstr \"Stropkovo\"\n\n#: sk/sk_districts.py:72\nmsgid \"Svidnik\"\nmsgstr \"Svidniko\"\n\n#: sk/sk_districts.py:73\nmsgid \"Sala\"\nmsgstr \"Salao\"\n\n#: sk/sk_districts.py:74\nmsgid \"Topolcany\"\nmsgstr \"Topolĉanio\"\n\n#: sk/sk_districts.py:75\nmsgid \"Trebisov\"\nmsgstr \"Trebiŝovo\"\n\n#: sk/sk_districts.py:76\nmsgid \"Trencin\"\nmsgstr \"Trenĉino\"\n\n#: sk/sk_districts.py:77\nmsgid \"Trnava\"\nmsgstr \"Trinavo\"\n\n#: sk/sk_districts.py:78\nmsgid \"Turcianske Teplice\"\nmsgstr \"Turcianska Teplico\"\n\n#: sk/sk_districts.py:79\nmsgid \"Tvrdosin\"\nmsgstr \"Tvrdoŝino\"\n\n#: sk/sk_districts.py:80\nmsgid \"Velky Krtis\"\nmsgstr \"Velkij Krtiso\"\n\n#: sk/sk_districts.py:81\nmsgid \"Vranov nad Toplou\"\nmsgstr \"Vranov nad Toplo\"\n\n#: sk/sk_districts.py:82\nmsgid \"Zlate Moravce\"\nmsgstr \"Zlata Moravco\"\n\n#: sk/sk_districts.py:83\nmsgid \"Zvolen\"\nmsgstr \"Zvoleno\"\n\n#: sk/sk_districts.py:84\nmsgid \"Zarnovica\"\nmsgstr \"Zarnovico\"\n\n#: sk/sk_districts.py:85\nmsgid \"Ziar nad Hronom\"\nmsgstr \"Ziar nad Hronomo\"\n\n#: sk/sk_districts.py:86\nmsgid \"Zilina\"\nmsgstr \"Zilino\"\n\n#: sk/sk_regions.py:8\nmsgid \"Banska Bystrica region\"\nmsgstr \"Regiono Banska Bijstrico\"\n\n#: sk/sk_regions.py:9\nmsgid \"Bratislava region\"\nmsgstr \"Regiono Bratislavo\"\n\n#: sk/sk_regions.py:10\nmsgid \"Kosice region\"\nmsgstr \"Regiono Kosico\"\n\n#: sk/sk_regions.py:11\nmsgid \"Nitra region\"\nmsgstr \"Regiono Nitrao\"\n\n#: sk/sk_regions.py:12\nmsgid \"Presov region\"\nmsgstr \"Regiono Presovo\"\n\n#: sk/sk_regions.py:13\nmsgid \"Trencin region\"\nmsgstr \"Regiono Trencino\"\n\n#: sk/sk_regions.py:14\nmsgid \"Trnava region\"\nmsgstr \"Regiono Tirnavo\"\n\n#: sk/sk_regions.py:15\nmsgid \"Zilina region\"\nmsgstr \"Regiono Zilino\"\n\n#: tr/forms.py:21\nmsgid \"Enter a postal code in the format XXXXX.\"\nmsgstr \"Enigu poŝtan kodon laŭformate XXXXX.\"\n\n#: tr/forms.py:42\nmsgid \"Phone numbers must be in 0XXX XXX XXXX format.\"\nmsgstr \"Telefonnumeroj dev esti en laŭformate 0XXX XXX XXXX.\"\n\n#: tr/forms.py:69\nmsgid \"Enter a valid Turkish Identification number.\"\nmsgstr \"Enigu validan Turkan Identigon nombron.\"\n\n#: tr/forms.py:70\nmsgid \"Turkish Identification number must be 11 digits.\"\nmsgstr \"Turka Identigo nombro dev esti 11 ciferoj.\"\n\n#: us/forms.py:21\nmsgid \"Enter a zip code in the format XXXXX or XXXXX-XXXX.\"\nmsgstr \"Enigu poŝtan kodon laŭformate XXXXX aŭ XXXXX-XXXX.\"\n\n#: us/forms.py:59\nmsgid \"Enter a valid U.S. Social Security number in XXX-XX-XXXX format.\"\nmsgstr \"Enigu validan usonan Socialasekuran numeron formate kiel XXX-XX-XXXX.\"\n\n#: us/forms.py:92\nmsgid \"Enter a U.S. state or territory.\"\nmsgstr \"Enigu usonan staton aŭ teritorion.\"\n\n#: us/models.py:8\nmsgid \"U.S. state (two uppercase letters)\"\nmsgstr \"Usonan stato (du majusklaj leteroj)\"\n\n#: us/models.py:17\nmsgid \"U.S. postal code (two uppercase letters)\"\nmsgstr \"Usonan poŝta kodo (du majusklaj leteroj)\"\n\n#: us/models.py:26\nmsgid \"Phone number\"\nmsgstr \"Telefonnumero\"\n\n#: uy/forms.py:29\nmsgid \"Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.\"\nmsgstr \"Enigu validan CI numbron laŭformate X.XXX.XXX-X,XXXXXXX-X aŭ XXXXXXXX.\"\n\n#: uy/forms.py:31\nmsgid \"Enter a valid CI number.\"\nmsgstr \"Enigu validan CI numbron.\"\n\n#: za/forms.py:22\nmsgid \"Enter a valid South African ID number\"\nmsgstr \"Eniri validan Sudafrikan identigan kartan nombron\"\n\n#: za/forms.py:56\nmsgid \"Enter a valid South African postal code\"\nmsgstr \"Eniri validan Sudafrikan identigan poŝtan kodon\"\n\n#: za/za_provinces.py:4\nmsgid \"Eastern Cape\"\nmsgstr \"Orienta Kabo\"\n\n#: za/za_provinces.py:5\nmsgid \"Free State\"\nmsgstr \"Liberŝtato\"\n\n#: za/za_provinces.py:6\nmsgid \"Gauteng\"\nmsgstr \"Gaŭtengo\"\n\n#: za/za_provinces.py:7\nmsgid \"KwaZulu-Natal\"\nmsgstr \"Kvazulu-Natalo\"\n\n#: za/za_provinces.py:8\nmsgid \"Limpopo\"\nmsgstr \"Limpopo\"\n\n#: za/za_provinces.py:9\nmsgid \"Mpumalanga\"\nmsgstr \"Mpumalango\"\n\n#: za/za_provinces.py:10\nmsgid \"Northern Cape\"\nmsgstr \"Norda Kabo\"\n\n#: za/za_provinces.py:11\nmsgid \"North West\"\nmsgstr \"Norda Okcidento\"\n\n#: za/za_provinces.py:12\nmsgid \"Western Cape\"\nmsgstr \"Okcidenta Kabo\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/locale/es/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Abraham Estrada <abraham.estrada@gmail.com>, 2011.\n# Antoni Aloy <aaloy@apsl.net>, 2012.\n# Antoni Aloy <antoni.aloy@trespams.com>, 2011, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Juan Antonio Infantes Díaz <ersame@gmail.com>, 2011.\n# Leonardo J. Caballero G. <leonardocaballero@gmail.com>, 2011.\n# Marc Garcia <garcia.marc@gmail.com>, 2011.\n#   <serra.guillem@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-10-28 11:23+0000\\n\"\n\"Last-Translator: Antoni Aloy <aaloy@apsl.net>\\n\"\n\"Language-Team: Spanish (http://www.transifex.com/projects/p/django/language/\"\n\"es/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: es\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: ar/forms.py:30\nmsgid \"Enter a postal code in the format NNNN or ANNNNAAA.\"\nmsgstr \"Introduzca un código postal en el formato NNNN or ANNNNAAA.\"\n\n#: ar/forms.py:52 br/forms.py:95 br/forms.py:134 pe/forms.py:27 pe/forms.py:55\nmsgid \"This field requires only numbers.\"\nmsgstr \"Este campo sólo acepta números.\"\n\n#: ar/forms.py:53\nmsgid \"This field requires 7 or 8 digits.\"\nmsgstr \"Este campo necesita 7 u 8 dígitos.\"\n\n#: ar/forms.py:82\nmsgid \"Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.\"\nmsgstr \"Introduzca un CUIT válido en el formato XX-XXXXXXXX-X o XXXXXXXXXXXX.\"\n\n#: ar/forms.py:83\nmsgid \"Invalid CUIT.\"\nmsgstr \"CUIT inválido.\"\n\n#: ar/forms.py:84\nmsgid \"Invalid legal type. Type must be 27, 20, 23 or 30.\"\nmsgstr \"Tipo legal no válido. El tipo debe ser 27, 20, 23 o 30.\"\n\n#: at/at_states.py:5\nmsgid \"Burgenland\"\nmsgstr \"Burgenland\"\n\n#: at/at_states.py:6\nmsgid \"Carinthia\"\nmsgstr \"Carinthia\"\n\n#: at/at_states.py:7\nmsgid \"Lower Austria\"\nmsgstr \"Australia Baja\"\n\n#: at/at_states.py:8\nmsgid \"Upper Austria\"\nmsgstr \"Australia Alta\"\n\n#: at/at_states.py:9\nmsgid \"Salzburg\"\nmsgstr \"Salzburg\"\n\n#: at/at_states.py:10\nmsgid \"Styria\"\nmsgstr \"Styria\"\n\n#: at/at_states.py:11\nmsgid \"Tyrol\"\nmsgstr \"Tyrol\"\n\n#: at/at_states.py:12\nmsgid \"Vorarlberg\"\nmsgstr \"Vorarlberg\"\n\n#: at/at_states.py:13\nmsgid \"Vienna\"\nmsgstr \"Viena\"\n\n#: at/forms.py:22 ch/forms.py:22 no/forms.py:19\nmsgid \"Enter a zip code in the format XXXX.\"\nmsgstr \"Introduzca un código postal en el formato XXXX.\"\n\n#: at/forms.py:50\nmsgid \"Enter a valid Austrian Social Security Number in XXXX XXXXXX format.\"\nmsgstr \"\"\n\"Introduzca un número de la Seguridad Social Austriaca válido en el formato \"\n\"XXXX XXXXXX.\"\n\n#: au/forms.py:26\nmsgid \"Enter a 4 digit postcode.\"\nmsgstr \"Introducir 4 dígitos del un código postal.\"\n\n#: au/models.py:9\nmsgid \"Australian State\"\nmsgstr \"Estado australiano\"\n\n#: au/models.py:19\nmsgid \"Australian Postcode\"\nmsgstr \"Código postal de Australia\"\n\n#: au/models.py:33\nmsgid \"Australian Phone number\"\nmsgstr \"Número de teléfono de Australia\"\n\n#: be/be_provinces.py:5\nmsgid \"Antwerp\"\nmsgstr \"Antwerp\"\n\n#: be/be_provinces.py:6\nmsgid \"Brussels\"\nmsgstr \"Bruselas\"\n\n#: be/be_provinces.py:7\nmsgid \"East Flanders\"\nmsgstr \"Flandes Oriental\"\n\n#: be/be_provinces.py:8\nmsgid \"Flemish Brabant\"\nmsgstr \"Flemish Brabant\"\n\n#: be/be_provinces.py:9\nmsgid \"Hainaut\"\nmsgstr \"Hainaut\"\n\n#: be/be_provinces.py:10\nmsgid \"Liege\"\nmsgstr \"Liege\"\n\n#: be/be_provinces.py:11 nl/nl_provinces.py:9\nmsgid \"Limburg\"\nmsgstr \"Limburg\"\n\n#: be/be_provinces.py:12\nmsgid \"Luxembourg\"\nmsgstr \"Luxemburgo\"\n\n#: be/be_provinces.py:13\nmsgid \"Namur\"\nmsgstr \"Namur\"\n\n#: be/be_provinces.py:14\nmsgid \"Walloon Brabant\"\nmsgstr \"Walloon Brabant\"\n\n#: be/be_provinces.py:15\nmsgid \"West Flanders\"\nmsgstr \"Flandes Occidental\"\n\n#: be/be_regions.py:5\nmsgid \"Brussels Capital Region\"\nmsgstr \"Región de Bruselas Capital\"\n\n#: be/be_regions.py:6\nmsgid \"Flemish Region\"\nmsgstr \"Región Flamenca\"\n\n#: be/be_regions.py:7\nmsgid \"Wallonia\"\nmsgstr \"Wallonia\"\n\n#: be/forms.py:25\nmsgid \"Enter a valid postal code in the range and format 1XXX - 9XXX.\"\nmsgstr \"Introduzca un código postal en el rango y formato 01XXX - 52XXX.\"\n\n#: be/forms.py:48\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\nmsgstr \"\"\n\"Introduzca un número de teléfono válido según los siguientes formatos: 0x \"\n\"xxx xx xx, 0xx xx xx xx, 04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.\"\n\"xx.xx, 0x.xxx.xx.xx, 0xx.xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\n\n#: br/forms.py:22\nmsgid \"Enter a zip code in the format XXXXX-XXX.\"\nmsgstr \"Introduzca un código postal en el formato XXXX-XXXX.\"\n\n#: br/forms.py:31\nmsgid \"Phone numbers must be in XX-XXXX-XXXX format.\"\nmsgstr \"Los números de teléfono deben tener el formato XXX-XXX-XXXX.\"\n\n#: br/forms.py:58\nmsgid \"\"\n\"Select a valid brazilian state. That state is not one of the available \"\n\"states.\"\nmsgstr \"\"\n\"Seleccione un estado brasileño válido. Este estado no es uno de los estados \"\n\"disponibles.\"\n\n#: br/forms.py:93\nmsgid \"Invalid CPF number.\"\nmsgstr \"Número CPF inválido.\"\n\n#: br/forms.py:94\nmsgid \"This field requires at most 11 digits or 14 characters.\"\nmsgstr \"Este campo necesita un máximo de 11 dígitos o 14 caracteres.\"\n\n#: br/forms.py:133\nmsgid \"Invalid CNPJ number.\"\nmsgstr \"Número CNPJ inválido.\"\n\n#: br/forms.py:135\nmsgid \"This field requires at least 14 digits\"\nmsgstr \"Este campo necesita 14 dígitos como mínimo\"\n\n#: ca/forms.py:29\nmsgid \"Enter a postal code in the format XXX XXX.\"\nmsgstr \"Introduzca un código postal en el formato XXX XXX.\"\n\n#: ca/forms.py:47 us/forms.py:30\nmsgid \"Phone numbers must be in XXX-XXX-XXXX format.\"\nmsgstr \"Los números de teléfono deben tener el formato XXX-XXX-XXXX.\"\n\n#: ca/forms.py:69\nmsgid \"Enter a Canadian province or territory.\"\nmsgstr \"Introduce una provincia o territorio canadiense\"\n\n#: ca/forms.py:110\nmsgid \"Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.\"\nmsgstr \"\"\n\"Introduzca un Número del Seguro Social de Canadá válido en el formato XXX-\"\n\"XXX-XXX.\"\n\n#: ch/ch_states.py:5\nmsgid \"Aargau\"\nmsgstr \"Aargau\"\n\n#: ch/ch_states.py:6\nmsgid \"Appenzell Innerrhoden\"\nmsgstr \"Appenzell Innerrhoden\"\n\n#: ch/ch_states.py:7\nmsgid \"Appenzell Ausserrhoden\"\nmsgstr \"Appenzell Ausserrhoden\"\n\n#: ch/ch_states.py:8\nmsgid \"Basel-Stadt\"\nmsgstr \"Basel-Stadt\"\n\n#: ch/ch_states.py:9\nmsgid \"Basel-Land\"\nmsgstr \"Basel-Land\"\n\n#: ch/ch_states.py:10\nmsgid \"Berne\"\nmsgstr \"Berne\"\n\n#: ch/ch_states.py:11\nmsgid \"Fribourg\"\nmsgstr \"Fribourg\"\n\n#: ch/ch_states.py:12\nmsgid \"Geneva\"\nmsgstr \"Geneva\"\n\n#: ch/ch_states.py:13\nmsgid \"Glarus\"\nmsgstr \"Glarus\"\n\n#: ch/ch_states.py:14\nmsgid \"Graubuenden\"\nmsgstr \"Graubuenden\"\n\n#: ch/ch_states.py:15\nmsgid \"Jura\"\nmsgstr \"Jura\"\n\n#: ch/ch_states.py:16\nmsgid \"Lucerne\"\nmsgstr \"Lucerne\"\n\n#: ch/ch_states.py:17\nmsgid \"Neuchatel\"\nmsgstr \"Neuchatel\"\n\n#: ch/ch_states.py:18\nmsgid \"Nidwalden\"\nmsgstr \"Nidwalden\"\n\n#: ch/ch_states.py:19\nmsgid \"Obwalden\"\nmsgstr \"Obwalden\"\n\n#: ch/ch_states.py:20\nmsgid \"Schaffhausen\"\nmsgstr \"Schaffhausen\"\n\n#: ch/ch_states.py:21\nmsgid \"Schwyz\"\nmsgstr \"Schwyz\"\n\n#: ch/ch_states.py:22\nmsgid \"Solothurn\"\nmsgstr \"Solothurn\"\n\n#: ch/ch_states.py:23\nmsgid \"St. Gallen\"\nmsgstr \"St. Gallen\"\n\n#: ch/ch_states.py:24\nmsgid \"Thurgau\"\nmsgstr \"Thurgau\"\n\n#: ch/ch_states.py:25\nmsgid \"Ticino\"\nmsgstr \"Ticino\"\n\n#: ch/ch_states.py:26\nmsgid \"Uri\"\nmsgstr \"Uri\"\n\n#: ch/ch_states.py:27\nmsgid \"Valais\"\nmsgstr \"Valais\"\n\n#: ch/ch_states.py:28\nmsgid \"Vaud\"\nmsgstr \"Vaud\"\n\n#: ch/ch_states.py:29\nmsgid \"Zug\"\nmsgstr \"Zug\"\n\n#: ch/ch_states.py:30\nmsgid \"Zurich\"\nmsgstr \"Zurich\"\n\n#: ch/forms.py:37\nmsgid \"Phone numbers must be in 0XX XXX XX XX format.\"\nmsgstr \"Los números de teléfono deben tener el formato 0XX XXX XX XX\"\n\n#: ch/forms.py:68\nmsgid \"\"\n\"Enter a valid Swiss identity or passport card number in X1234567<0 or \"\n\"1234567890 format.\"\nmsgstr \"\"\n\"Introduzca un número de identificación o pasaporte suizos válidos en el \"\n\"formato X1234567<0 o 1234567890.\"\n\n#: cl/forms.py:32\nmsgid \"Enter a valid Chilean RUT.\"\nmsgstr \"Introduzca un RUT chileno válido.\"\n\n#: cl/forms.py:33\nmsgid \"Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.\"\nmsgstr \"Introduzca un RUT chileno válido. El formato es XX.XXX.XXX-X.\"\n\n#: cl/forms.py:34\nmsgid \"The Chilean RUT is not valid.\"\nmsgstr \"El RUT chileno no es válido.\"\n\n#: cn/forms.py:84\nmsgid \"Enter a post code in the format XXXXXX.\"\nmsgstr \"Introduzca un código postal en el formato XXXXXX.\"\n\n#: cn/forms.py:105\nmsgid \"ID Card Number consists of 15 or 18 digits.\"\nmsgstr \"\"\n\"Identificación de número de tarjetas que se compone de 15 o 18 dígitos.\"\n\n#: cn/forms.py:106\nmsgid \"Invalid ID Card Number: Wrong checksum\"\nmsgstr \"\"\n\"Inválido número de Identificación digital: suma de comprobación incorrecta\"\n\n#: cn/forms.py:107\nmsgid \"Invalid ID Card Number: Wrong birthdate\"\nmsgstr \"\"\n\"Inválido número de Identificación digital: fecha de nacimiento incorrecta\"\n\n#: cn/forms.py:108\nmsgid \"Invalid ID Card Number: Wrong location code\"\nmsgstr \"Inválido número de Identificación digital: Código de Ubicación errónea\"\n\n#: cn/forms.py:193\nmsgid \"Enter a valid phone number.\"\nmsgstr \"Introduzca un número de teléfono válido.\"\n\n#: cn/forms.py:210\nmsgid \"Enter a valid cell number.\"\nmsgstr \"Introduzca un número celular/movil válido.\"\n\n#: cz/cz_regions.py:8\nmsgid \"Prague\"\nmsgstr \"Praga\"\n\n#: cz/cz_regions.py:9\nmsgid \"Central Bohemian Region\"\nmsgstr \"Región Bohemia Central\"\n\n#: cz/cz_regions.py:10\nmsgid \"South Bohemian Region\"\nmsgstr \"Región Bohemia Sur\"\n\n#: cz/cz_regions.py:11\nmsgid \"Pilsen Region\"\nmsgstr \"Región Pilsen\"\n\n#: cz/cz_regions.py:12\nmsgid \"Carlsbad Region\"\nmsgstr \"Región Carlsbad\"\n\n#: cz/cz_regions.py:13\nmsgid \"Usti Region\"\nmsgstr \"Región Usti\"\n\n#: cz/cz_regions.py:14\nmsgid \"Liberec Region\"\nmsgstr \"Región Liberec\"\n\n#: cz/cz_regions.py:15\nmsgid \"Hradec Region\"\nmsgstr \"Región Hradec\"\n\n#: cz/cz_regions.py:16\nmsgid \"Pardubice Region\"\nmsgstr \"Región Pardubice\"\n\n#: cz/cz_regions.py:17\nmsgid \"Vysocina Region\"\nmsgstr \"Región Vysocina\"\n\n#: cz/cz_regions.py:18\nmsgid \"South Moravian Region\"\nmsgstr \"Región Moravia Sur\"\n\n#: cz/cz_regions.py:19\nmsgid \"Olomouc Region\"\nmsgstr \"Región Olomouc\"\n\n#: cz/cz_regions.py:20\nmsgid \"Zlin Region\"\nmsgstr \"Región Zlin\"\n\n#: cz/cz_regions.py:21\nmsgid \"Moravian-Silesian Region\"\nmsgstr \"Región Moravia-Silesiana\"\n\n#: cz/forms.py:32 sk/forms.py:33\nmsgid \"Enter a postal code in the format XXXXX or XXX XX.\"\nmsgstr \"Introduzca un código postal en el formato XXXXX o XXX XX.\"\n\n#: cz/forms.py:52\nmsgid \"Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.\"\nmsgstr \"\"\n\"Introduzca un número de nacimiento en el formato XXXXXX/XXXX o XXXXXXXXXX.\"\n\n#: cz/forms.py:53\nmsgid \"Enter a valid birth number.\"\nmsgstr \"Introduzca un número de nacimiento válido.\"\n\n#: cz/forms.py:102\nmsgid \"Enter a valid IC number.\"\nmsgstr \"Introduzca un número IC válido.\"\n\n#: de/de_states.py:5\nmsgid \"Baden-Wuerttemberg\"\nmsgstr \"Baden-Wuerttemberg\"\n\n#: de/de_states.py:6\nmsgid \"Bavaria\"\nmsgstr \"Bavaria\"\n\n#: de/de_states.py:7\nmsgid \"Berlin\"\nmsgstr \"Berlín\"\n\n#: de/de_states.py:8\nmsgid \"Brandenburg\"\nmsgstr \"Brandenburg\"\n\n#: de/de_states.py:9\nmsgid \"Bremen\"\nmsgstr \"Bremen\"\n\n#: de/de_states.py:10\nmsgid \"Hamburg\"\nmsgstr \"Hamburgo\"\n\n#: de/de_states.py:11\nmsgid \"Hessen\"\nmsgstr \"Hessen\"\n\n#: de/de_states.py:12\nmsgid \"Mecklenburg-Western Pomerania\"\nmsgstr \"Mecklenburg-Western Pomerania\"\n\n#: de/de_states.py:13\nmsgid \"Lower Saxony\"\nmsgstr \"Lower Saxony\"\n\n#: de/de_states.py:14\nmsgid \"North Rhine-Westphalia\"\nmsgstr \"North Rhine-Westphalia\"\n\n#: de/de_states.py:15\nmsgid \"Rhineland-Palatinate\"\nmsgstr \"Rhineland-Palatinate\"\n\n#: de/de_states.py:16\nmsgid \"Saarland\"\nmsgstr \"Saarland\"\n\n#: de/de_states.py:17\nmsgid \"Saxony\"\nmsgstr \"Saxony\"\n\n#: de/de_states.py:18\nmsgid \"Saxony-Anhalt\"\nmsgstr \"Saxony-Anhalt\"\n\n#: de/de_states.py:19\nmsgid \"Schleswig-Holstein\"\nmsgstr \"Schleswig-Holstein\"\n\n#: de/de_states.py:20\nmsgid \"Thuringia\"\nmsgstr \"Thuringia\"\n\n#: de/forms.py:20 fi/forms.py:18 fr/forms.py:20\nmsgid \"Enter a zip code in the format XXXXX.\"\nmsgstr \"Introduzca un código postal en el formato XXXXX.\"\n\n#: de/forms.py:46\nmsgid \"\"\n\"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"format.\"\nmsgstr \"\"\n\"Introduzca un número de tarjeta de identidad de Alemania válida en el \"\n\"formato XXXXXXXXXXX-XXXXXXX-XXXXXXX-X.\"\n\n#: es/es_provinces.py:5\nmsgid \"Araba\"\nmsgstr \"Araba\"\n\n#: es/es_provinces.py:6\nmsgid \"Albacete\"\nmsgstr \"Albacete\"\n\n#: es/es_provinces.py:7\nmsgid \"Alacant\"\nmsgstr \"Alicante\"\n\n#: es/es_provinces.py:8\nmsgid \"Almeria\"\nmsgstr \"Almería\"\n\n#: es/es_provinces.py:9\nmsgid \"Avila\"\nmsgstr \"Ávila\"\n\n#: es/es_provinces.py:10\nmsgid \"Badajoz\"\nmsgstr \"Badajoz\"\n\n#: es/es_provinces.py:11\nmsgid \"Illes Balears\"\nmsgstr \"Islas Baleares\"\n\n#: es/es_provinces.py:12\nmsgid \"Barcelona\"\nmsgstr \"Barcelona\"\n\n#: es/es_provinces.py:13\nmsgid \"Burgos\"\nmsgstr \"Burgos\"\n\n#: es/es_provinces.py:14\nmsgid \"Caceres\"\nmsgstr \"Cáceres\"\n\n#: es/es_provinces.py:15\nmsgid \"Cadiz\"\nmsgstr \"Cádiz\"\n\n#: es/es_provinces.py:16\nmsgid \"Castello\"\nmsgstr \"Castellón\"\n\n#: es/es_provinces.py:17\nmsgid \"Ciudad Real\"\nmsgstr \"Ciudad Real\"\n\n#: es/es_provinces.py:18\nmsgid \"Cordoba\"\nmsgstr \"Córdoba\"\n\n#: es/es_provinces.py:19\nmsgid \"A Coruna\"\nmsgstr \"La Coruña\"\n\n#: es/es_provinces.py:20\nmsgid \"Cuenca\"\nmsgstr \"Cuenca\"\n\n#: es/es_provinces.py:21\nmsgid \"Girona\"\nmsgstr \"Gerona\"\n\n#: es/es_provinces.py:22\nmsgid \"Granada\"\nmsgstr \"Granada\"\n\n#: es/es_provinces.py:23\nmsgid \"Guadalajara\"\nmsgstr \"Guadalajara\"\n\n#: es/es_provinces.py:24\nmsgid \"Guipuzkoa\"\nmsgstr \"Guipúzcoa\"\n\n#: es/es_provinces.py:25\nmsgid \"Huelva\"\nmsgstr \"Huelva\"\n\n#: es/es_provinces.py:26\nmsgid \"Huesca\"\nmsgstr \"Huesca\"\n\n#: es/es_provinces.py:27\nmsgid \"Jaen\"\nmsgstr \"Jaén\"\n\n#: es/es_provinces.py:28\nmsgid \"Leon\"\nmsgstr \"León\"\n\n#: es/es_provinces.py:29\nmsgid \"Lleida\"\nmsgstr \"Lérida\"\n\n#: es/es_provinces.py:30 es/es_regions.py:17\nmsgid \"La Rioja\"\nmsgstr \"La Rioja\"\n\n#: es/es_provinces.py:31\nmsgid \"Lugo\"\nmsgstr \"Lugo\"\n\n#: es/es_provinces.py:32 es/es_regions.py:18\nmsgid \"Madrid\"\nmsgstr \"Madrid\"\n\n#: es/es_provinces.py:33\nmsgid \"Malaga\"\nmsgstr \"Málaga\"\n\n#: es/es_provinces.py:34\nmsgid \"Murcia\"\nmsgstr \"Murcia\"\n\n#: es/es_provinces.py:35\nmsgid \"Navarre\"\nmsgstr \"Navarra\"\n\n#: es/es_provinces.py:36\nmsgid \"Ourense\"\nmsgstr \"Orense\"\n\n#: es/es_provinces.py:37\nmsgid \"Asturias\"\nmsgstr \"Asturias\"\n\n#: es/es_provinces.py:38\nmsgid \"Palencia\"\nmsgstr \"Palencia\"\n\n#: es/es_provinces.py:39\nmsgid \"Las Palmas\"\nmsgstr \"Las Palmas\"\n\n#: es/es_provinces.py:40\nmsgid \"Pontevedra\"\nmsgstr \"Pontevedra\"\n\n#: es/es_provinces.py:41\nmsgid \"Salamanca\"\nmsgstr \"Salamanca\"\n\n#: es/es_provinces.py:42\nmsgid \"Santa Cruz de Tenerife\"\nmsgstr \"Santa Cruz de Tenerife\"\n\n#: es/es_provinces.py:43 es/es_regions.py:11\nmsgid \"Cantabria\"\nmsgstr \"Cantabria\"\n\n#: es/es_provinces.py:44\nmsgid \"Segovia\"\nmsgstr \"Segovia\"\n\n#: es/es_provinces.py:45\nmsgid \"Seville\"\nmsgstr \"Sevilla\"\n\n#: es/es_provinces.py:46\nmsgid \"Soria\"\nmsgstr \"Soria\"\n\n#: es/es_provinces.py:47\nmsgid \"Tarragona\"\nmsgstr \"Tarragona\"\n\n#: es/es_provinces.py:48\nmsgid \"Teruel\"\nmsgstr \"Teruel\"\n\n#: es/es_provinces.py:49\nmsgid \"Toledo\"\nmsgstr \"Toledo\"\n\n#: es/es_provinces.py:50\nmsgid \"Valencia\"\nmsgstr \"Valencia\"\n\n#: es/es_provinces.py:51\nmsgid \"Valladolid\"\nmsgstr \"Valladolid\"\n\n#: es/es_provinces.py:52\nmsgid \"Bizkaia\"\nmsgstr \"Vizcaya\"\n\n#: es/es_provinces.py:53\nmsgid \"Zamora\"\nmsgstr \"Zamora\"\n\n#: es/es_provinces.py:54\nmsgid \"Zaragoza\"\nmsgstr \"Zaragoza\"\n\n#: es/es_provinces.py:55\nmsgid \"Ceuta\"\nmsgstr \"Ceuta\"\n\n#: es/es_provinces.py:56\nmsgid \"Melilla\"\nmsgstr \"Melilla\"\n\n#: es/es_regions.py:5\nmsgid \"Andalusia\"\nmsgstr \"Andalucía\"\n\n#: es/es_regions.py:6\nmsgid \"Aragon\"\nmsgstr \"Aragón\"\n\n#: es/es_regions.py:7\nmsgid \"Principality of Asturias\"\nmsgstr \"Principado de Asturias\"\n\n#: es/es_regions.py:8\nmsgid \"Balearic Islands\"\nmsgstr \"Islas Baleares\"\n\n#: es/es_regions.py:9\nmsgid \"Basque Country\"\nmsgstr \"País Vasco\"\n\n#: es/es_regions.py:10\nmsgid \"Canary Islands\"\nmsgstr \"Canarias\"\n\n#: es/es_regions.py:12\nmsgid \"Castile-La Mancha\"\nmsgstr \"Castilla-La Mancha\"\n\n#: es/es_regions.py:13\nmsgid \"Castile and Leon\"\nmsgstr \"Castilla y León\"\n\n#: es/es_regions.py:14\nmsgid \"Catalonia\"\nmsgstr \"Cataluña\"\n\n#: es/es_regions.py:15\nmsgid \"Extremadura\"\nmsgstr \"Extremadura\"\n\n#: es/es_regions.py:16\nmsgid \"Galicia\"\nmsgstr \"Galicia\"\n\n#: es/es_regions.py:19\nmsgid \"Region of Murcia\"\nmsgstr \"Región de Murcia\"\n\n#: es/es_regions.py:20\nmsgid \"Foral Community of Navarre\"\nmsgstr \"Comunidad Foral de Navarra\"\n\n#: es/es_regions.py:21\nmsgid \"Valencian Community\"\nmsgstr \"Comunidad Valenciana\"\n\n#: es/forms.py:26\nmsgid \"Enter a valid postal code in the range and format 01XXX - 52XXX.\"\nmsgstr \"Introduzca un código postal en el rango y formato 01XXX - 52XXX.\"\n\n#: es/forms.py:46\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or \"\n\"9XXXXXXXX.\"\nmsgstr \"\"\n\"Introduzca un número de teléfono válido en el formato 6XXXXXXXX, 8XXXXXXXX o \"\n\"9XXXXXXXX.\"\n\n#: es/forms.py:73\nmsgid \"Please enter a valid NIF, NIE, or CIF.\"\nmsgstr \"Por favor introduzca un NIF, NIE o CIF válido.\"\n\n#: es/forms.py:74\nmsgid \"Please enter a valid NIF or NIE.\"\nmsgstr \"Por favor, introduzca un NIF o NIE válido.\"\n\n#: es/forms.py:75\nmsgid \"Invalid checksum for NIF.\"\nmsgstr \"El NIF es incorrecto.\"\n\n#: es/forms.py:76\nmsgid \"Invalid checksum for NIE.\"\nmsgstr \"El NIE es incorrecto.\"\n\n#: es/forms.py:77\nmsgid \"Invalid checksum for CIF.\"\nmsgstr \"El CIF es incorrecto.\"\n\n#: es/forms.py:149\nmsgid \"\"\n\"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.\"\nmsgstr \"\"\n\"Introduzca un número de cuenta bancaria en el formato XXXX-XXXX-XX-\"\n\"XXXXXXXXXX.\"\n\n#: es/forms.py:150\nmsgid \"Invalid checksum for bank account number.\"\nmsgstr \"El número de cuenta bancaria es incorrecto.\"\n\n#: fi/forms.py:33\nmsgid \"Enter a valid Finnish social security number.\"\nmsgstr \"Introduzca un número de seguro social finlandés válido.\"\n\n#: fr/forms.py:35\nmsgid \"Phone numbers must be in 0X XX XX XX XX format.\"\nmsgstr \"Los números de teléfono deben tener el formato 0X XX XX XX XX.\"\n\n#: gb/forms.py:25\nmsgid \"Enter a valid postcode.\"\nmsgstr \"Introduzca un código postal válido.\"\n\n#: gb/gb_regions.py:11\nmsgid \"Bedfordshire\"\nmsgstr \"Bedfordshire\"\n\n#: gb/gb_regions.py:12\nmsgid \"Buckinghamshire\"\nmsgstr \"Buckinghamshire\"\n\n#: gb/gb_regions.py:14\nmsgid \"Cheshire\"\nmsgstr \"Cheshire\"\n\n#: gb/gb_regions.py:15\nmsgid \"Cornwall and Isles of Scilly\"\nmsgstr \"Cornwall e Islas de Scilly\"\n\n#: gb/gb_regions.py:16\nmsgid \"Cumbria\"\nmsgstr \"Cumbria\"\n\n#: gb/gb_regions.py:17\nmsgid \"Derbyshire\"\nmsgstr \"Derbyshire\"\n\n#: gb/gb_regions.py:18\nmsgid \"Devon\"\nmsgstr \"Devon\"\n\n#: gb/gb_regions.py:19\nmsgid \"Dorset\"\nmsgstr \"Dorset\"\n\n#: gb/gb_regions.py:20\nmsgid \"Durham\"\nmsgstr \"Durham\"\n\n#: gb/gb_regions.py:21\nmsgid \"East Sussex\"\nmsgstr \"East Sussex\"\n\n#: gb/gb_regions.py:22\nmsgid \"Essex\"\nmsgstr \"Essex\"\n\n#: gb/gb_regions.py:23\nmsgid \"Gloucestershire\"\nmsgstr \"Gloucestershire\"\n\n#: gb/gb_regions.py:24\nmsgid \"Greater London\"\nmsgstr \"Londres (área metropolitana)\"\n\n#: gb/gb_regions.py:25\nmsgid \"Greater Manchester\"\nmsgstr \"Manchester (área metropolitana)\"\n\n#: gb/gb_regions.py:26\nmsgid \"Hampshire\"\nmsgstr \"Hampshire\"\n\n#: gb/gb_regions.py:27\nmsgid \"Hertfordshire\"\nmsgstr \"Hertfordshire\"\n\n#: gb/gb_regions.py:28\nmsgid \"Kent\"\nmsgstr \"Kent\"\n\n#: gb/gb_regions.py:29\nmsgid \"Lancashire\"\nmsgstr \"Lancashire\"\n\n#: gb/gb_regions.py:30\nmsgid \"Leicestershire\"\nmsgstr \"Leicestershire\"\n\n#: gb/gb_regions.py:31\nmsgid \"Lincolnshire\"\nmsgstr \"Lincolnshire\"\n\n#: gb/gb_regions.py:32\nmsgid \"Merseyside\"\nmsgstr \"Merseyside\"\n\n#: gb/gb_regions.py:33\nmsgid \"Norfolk\"\nmsgstr \"Norfolk\"\n\n#: gb/gb_regions.py:34\nmsgid \"North Yorkshire\"\nmsgstr \"North Yorkshire\"\n\n#: gb/gb_regions.py:35\nmsgid \"Northamptonshire\"\nmsgstr \"Northamptonshire\"\n\n#: gb/gb_regions.py:36\nmsgid \"Northumberland\"\nmsgstr \"Northumberland\"\n\n#: gb/gb_regions.py:37\nmsgid \"Nottinghamshire\"\nmsgstr \"Nottinghamshire\"\n\n#: gb/gb_regions.py:38\nmsgid \"Oxfordshire\"\nmsgstr \"Oxfordshire\"\n\n#: gb/gb_regions.py:39\nmsgid \"Shropshire\"\nmsgstr \"Shropshire\"\n\n#: gb/gb_regions.py:40\nmsgid \"Somerset\"\nmsgstr \"Somerset\"\n\n#: gb/gb_regions.py:41\nmsgid \"South Yorkshire\"\nmsgstr \"South Yorkshire\"\n\n#: gb/gb_regions.py:42\nmsgid \"Staffordshire\"\nmsgstr \"Staffordshire\"\n\n#: gb/gb_regions.py:43\nmsgid \"Suffolk\"\nmsgstr \"Suffolk\"\n\n#: gb/gb_regions.py:44\nmsgid \"Surrey\"\nmsgstr \"Surrey\"\n\n#: gb/gb_regions.py:45\nmsgid \"Tyne and Wear\"\nmsgstr \"Tyne y Wear\"\n\n#: gb/gb_regions.py:46\nmsgid \"Warwickshire\"\nmsgstr \"Warwickshire\"\n\n#: gb/gb_regions.py:47\nmsgid \"West Midlands\"\nmsgstr \"West Midlands\"\n\n#: gb/gb_regions.py:48\nmsgid \"West Sussex\"\nmsgstr \"West Sussex\"\n\n#: gb/gb_regions.py:49\nmsgid \"West Yorkshire\"\nmsgstr \"West Yorkshire\"\n\n#: gb/gb_regions.py:50\nmsgid \"Wiltshire\"\nmsgstr \"Wiltshire\"\n\n#: gb/gb_regions.py:51\nmsgid \"Worcestershire\"\nmsgstr \"Worcestershire\"\n\n#: gb/gb_regions.py:55\nmsgid \"County Antrim\"\nmsgstr \"Condado de Antrim\"\n\n#: gb/gb_regions.py:56\nmsgid \"County Armagh\"\nmsgstr \"Condado de Armagh\"\n\n#: gb/gb_regions.py:57\nmsgid \"County Down\"\nmsgstr \"Condado de Down\"\n\n#: gb/gb_regions.py:58\nmsgid \"County Fermanagh\"\nmsgstr \"Condado de Fermanagh\"\n\n#: gb/gb_regions.py:59\nmsgid \"County Londonderry\"\nmsgstr \"Condado de Londonderry\"\n\n#: gb/gb_regions.py:60\nmsgid \"County Tyrone\"\nmsgstr \"Condado de Tyrone\"\n\n#: gb/gb_regions.py:64\nmsgid \"Clwyd\"\nmsgstr \"Clwyd\"\n\n#: gb/gb_regions.py:65\nmsgid \"Dyfed\"\nmsgstr \"Dyfed\"\n\n#: gb/gb_regions.py:66\nmsgid \"Gwent\"\nmsgstr \"Gwent\"\n\n#: gb/gb_regions.py:67\nmsgid \"Gwynedd\"\nmsgstr \"Gwynedd\"\n\n#: gb/gb_regions.py:68\nmsgid \"Mid Glamorgan\"\nmsgstr \"Mid Glamorgan\"\n\n#: gb/gb_regions.py:69\nmsgid \"Powys\"\nmsgstr \"Powys\"\n\n#: gb/gb_regions.py:70\nmsgid \"South Glamorgan\"\nmsgstr \"South Glamorgan\"\n\n#: gb/gb_regions.py:71\nmsgid \"West Glamorgan\"\nmsgstr \"West Glamorgan\"\n\n#: gb/gb_regions.py:75\nmsgid \"Borders\"\nmsgstr \"Borders\"\n\n#: gb/gb_regions.py:76\nmsgid \"Central Scotland\"\nmsgstr \"Central Scotland\"\n\n#: gb/gb_regions.py:77\nmsgid \"Dumfries and Galloway\"\nmsgstr \"Dumfries y Galloway\"\n\n#: gb/gb_regions.py:78\nmsgid \"Fife\"\nmsgstr \"Fife\"\n\n#: gb/gb_regions.py:79\nmsgid \"Grampian\"\nmsgstr \"Grampian\"\n\n#: gb/gb_regions.py:80\nmsgid \"Highland\"\nmsgstr \"Highland\"\n\n#: gb/gb_regions.py:81\nmsgid \"Lothian\"\nmsgstr \"Lothian\"\n\n#: gb/gb_regions.py:82\nmsgid \"Orkney Islands\"\nmsgstr \"Orkney Islands\"\n\n#: gb/gb_regions.py:83\nmsgid \"Shetland Islands\"\nmsgstr \"Shetland Islands\"\n\n#: gb/gb_regions.py:84\nmsgid \"Strathclyde\"\nmsgstr \"Strathclyde\"\n\n#: gb/gb_regions.py:85\nmsgid \"Tayside\"\nmsgstr \"Tayside\"\n\n#: gb/gb_regions.py:86\nmsgid \"Western Isles\"\nmsgstr \"Western Isles\"\n\n#: gb/gb_regions.py:90\nmsgid \"England\"\nmsgstr \"Inglaterra\"\n\n#: gb/gb_regions.py:91\nmsgid \"Northern Ireland\"\nmsgstr \"Irlanda del Norte\"\n\n#: gb/gb_regions.py:92\nmsgid \"Scotland\"\nmsgstr \"Escocia\"\n\n#: gb/gb_regions.py:93\nmsgid \"Wales\"\nmsgstr \"Gales\"\n\n#: hk/forms.py:37\n#, python-format\nmsgid \"Phone number should not start with one of the followings: %s.\"\nmsgstr \"\"\n\"Un número de teléfono no puede empezar por ninguno de los siguientes: %s\"\n\n#: hk/forms.py:40\n#, python-format\nmsgid \"Phone number must be in one of the following formats: %s.\"\nmsgstr \"Un número de teléfono debe tener uno de los siguientes formatos: %s.\"\n\n#: hk/forms.py:42\n#, python-format\nmsgid \"Phone number should start with one of the followings: %s.\"\nmsgstr \"Un número de teléfono debe empezar por uno de los siguientes: %s\"\n\n#: hr/forms.py:76\nmsgid \"Enter a valid 13 digit JMBG\"\nmsgstr \"Escriba un JMBG valido de 13 dígitos\"\n\n#: hr/forms.py:77\nmsgid \"Error in date segment\"\nmsgstr \"Error en el segmento de la fecha\"\n\n#: hr/forms.py:123\nmsgid \"Enter a valid 11 digit OIB\"\nmsgstr \"Escriba un OIB valido de 11 dígitos\"\n\n#: hr/forms.py:152 id/forms.py:112\nmsgid \"Enter a valid vehicle license plate number\"\nmsgstr \"Introduzca un número de placa vehicular válido\"\n\n#: hr/forms.py:153\nmsgid \"Enter a valid location code\"\nmsgstr \"Introduzca un código de ubicación válido\"\n\n#: hr/forms.py:154\nmsgid \"Number part cannot be zero\"\nmsgstr \"Parte del número no puede ser cero\"\n\n#: hr/forms.py:190\nmsgid \"Enter a valid 5 digit postal code\"\nmsgstr \"Introduzca un código postal válido de 5 dígitos\"\n\n#: hr/forms.py:218 id/forms.py:72 nl/forms.py:56\nmsgid \"Enter a valid phone number\"\nmsgstr \"Introduzca un número de teléfono válido\"\n\n#: hr/forms.py:219\nmsgid \"Enter a valid area or mobile network code\"\nmsgstr \"Ingrese en un área válida o código de red móvil\"\n\n#: hr/forms.py:220\nmsgid \"The phone nubmer is too long\"\nmsgstr \"El número teléfono es demasiado largo\"\n\n#: hr/forms.py:258\nmsgid \"Enter a valid 19 digit JMBAG starting with 601983\"\nmsgstr \"Escriba un JMBAG de 19 dígitos iniciando con 601983\"\n\n#: hr/forms.py:259\nmsgid \"Card issue number cannot be zero\"\nmsgstr \"El número de expedición de la tarjeta no puede ser cero\"\n\n#: hr/hr_choices.py:14\nmsgid \"Grad Zagreb\"\nmsgstr \"Grad Zagreb\"\n\n#: hr/hr_choices.py:15\nmsgid \"Bjelovarsko-bilogorska županija\"\nmsgstr \"Bjelovarsko-bilogorska županija\"\n\n#: hr/hr_choices.py:16\nmsgid \"Brodsko-posavska županija\"\nmsgstr \"Brodsko-posavska županija\"\n\n#: hr/hr_choices.py:17\nmsgid \"Dubrovačko-neretvanska županija\"\nmsgstr \"Dubrovačko-neretvanska županija\"\n\n#: hr/hr_choices.py:18\nmsgid \"Istarska županija\"\nmsgstr \"Istarska županija\"\n\n#: hr/hr_choices.py:19\nmsgid \"Karlovačka županija\"\nmsgstr \"Karlovačka županija\"\n\n#: hr/hr_choices.py:20\nmsgid \"Koprivničko-križevačka županija\"\nmsgstr \"Koprivničko-križevačka županija\"\n\n#: hr/hr_choices.py:21\nmsgid \"Krapinsko-zagorska županija\"\nmsgstr \"Krapinsko-Zagorska županija\"\n\n#: hr/hr_choices.py:22\nmsgid \"Ličko-senjska županija\"\nmsgstr \"Ličko-senjska županija\"\n\n#: hr/hr_choices.py:23\nmsgid \"Međimurska županija\"\nmsgstr \"Međimurska županija\"\n\n#: hr/hr_choices.py:24\nmsgid \"Osječko-baranjska županija\"\nmsgstr \"Osjecko-baranjska županija\"\n\n#: hr/hr_choices.py:25\nmsgid \"Požeško-slavonska županija\"\nmsgstr \"Požeško-slavonska županija\"\n\n#: hr/hr_choices.py:26\nmsgid \"Primorsko-goranska županija\"\nmsgstr \"Primorsko-Goranska županija\"\n\n#: hr/hr_choices.py:27\nmsgid \"Sisačko-moslavačka županija\"\nmsgstr \"Sisačko-Moslavačka županija\"\n\n#: hr/hr_choices.py:28\nmsgid \"Splitsko-dalmatinska županija\"\nmsgstr \"Splitsko-Dalmatinska županija\"\n\n#: hr/hr_choices.py:29\nmsgid \"Šibensko-kninska županija\"\nmsgstr \"Šibensko-Kninska županija\"\n\n#: hr/hr_choices.py:30\nmsgid \"Varaždinska županija\"\nmsgstr \"Varaždinska županija\"\n\n#: hr/hr_choices.py:31\nmsgid \"Virovitičko-podravska županija\"\nmsgstr \"Viroviticko-Podravska županija\"\n\n#: hr/hr_choices.py:32\nmsgid \"Vukovarsko-srijemska županija\"\nmsgstr \"Vukovarsko-srijemska županija\"\n\n#: hr/hr_choices.py:33\nmsgid \"Zadarska županija\"\nmsgstr \"Zadarska županija\"\n\n#: hr/hr_choices.py:34\nmsgid \"Zagrebačka županija\"\nmsgstr \"Zagrebačka županija\"\n\n#: id/forms.py:31\nmsgid \"Enter a valid post code\"\nmsgstr \"Introduzca un código postal válido\"\n\n#: id/forms.py:176\nmsgid \"Enter a valid NIK/KTP number\"\nmsgstr \"Introduzca un número NIK/KTP válido.\"\n\n#: id/id_choices.py:15\nmsgid \"Aceh\"\nmsgstr \"Aceh\"\n\n#: id/id_choices.py:16 id/id_choices.py:79\nmsgid \"Bali\"\nmsgstr \"Bali\"\n\n#: id/id_choices.py:17 id/id_choices.py:51\nmsgid \"Banten\"\nmsgstr \"Banten\"\n\n#: id/id_choices.py:18 id/id_choices.py:60\nmsgid \"Bengkulu\"\nmsgstr \"Bengkulu\"\n\n#: id/id_choices.py:19 id/id_choices.py:53\nmsgid \"Yogyakarta\"\nmsgstr \"Yogyakarta\"\n\n#: id/id_choices.py:20 id/id_choices.py:57\nmsgid \"Jakarta\"\nmsgstr \"Jacarta\"\n\n#: id/id_choices.py:21 id/id_choices.py:81\nmsgid \"Gorontalo\"\nmsgstr \"Gorontalo\"\n\n#: id/id_choices.py:22 id/id_choices.py:63\nmsgid \"Jambi\"\nmsgstr \"Jambi\"\n\n#: id/id_choices.py:23\nmsgid \"Jawa Barat\"\nmsgstr \"Jawa Barat\"\n\n#: id/id_choices.py:24\nmsgid \"Jawa Tengah\"\nmsgstr \"Jawa Tengah\"\n\n#: id/id_choices.py:25\nmsgid \"Jawa Timur\"\nmsgstr \"Jawa Timur\"\n\n#: id/id_choices.py:26 id/id_choices.py:94\nmsgid \"Kalimantan Barat\"\nmsgstr \"Kalimantan Barat\"\n\n#: id/id_choices.py:27 id/id_choices.py:72\nmsgid \"Kalimantan Selatan\"\nmsgstr \"Kalimantan Selatan\"\n\n#: id/id_choices.py:28 id/id_choices.py:95\nmsgid \"Kalimantan Tengah\"\nmsgstr \"Kalimantan Tengah\"\n\n#: id/id_choices.py:29 id/id_choices.py:96\nmsgid \"Kalimantan Timur\"\nmsgstr \"Kalimantan Timur\"\n\n#: id/id_choices.py:30\nmsgid \"Kepulauan Bangka-Belitung\"\nmsgstr \"Kepulauan Bangka-Belitung\"\n\n#: id/id_choices.py:31 id/id_choices.py:68\nmsgid \"Kepulauan Riau\"\nmsgstr \"Kepulauan Riau\"\n\n#: id/id_choices.py:32 id/id_choices.py:61\nmsgid \"Lampung\"\nmsgstr \"Lampung\"\n\n#: id/id_choices.py:33 id/id_choices.py:76\nmsgid \"Maluku\"\nmsgstr \"Maluku\"\n\n#: id/id_choices.py:34 id/id_choices.py:77\nmsgid \"Maluku Utara\"\nmsgstr \"Maluku Utara\"\n\n#: id/id_choices.py:35\nmsgid \"Nusa Tenggara Barat\"\nmsgstr \"Nusa Tenggara Barat\"\n\n#: id/id_choices.py:36\nmsgid \"Nusa Tenggara Timur\"\nmsgstr \"Nusa Tenggara Timur\"\n\n#: id/id_choices.py:37\nmsgid \"Papua\"\nmsgstr \"Papua\"\n\n#: id/id_choices.py:38\nmsgid \"Papua Barat\"\nmsgstr \"Papua Barat\"\n\n#: id/id_choices.py:39 id/id_choices.py:66\nmsgid \"Riau\"\nmsgstr \"Riau\"\n\n#: id/id_choices.py:40 id/id_choices.py:74\nmsgid \"Sulawesi Barat\"\nmsgstr \"Sulawesi Barat\"\n\n#: id/id_choices.py:41 id/id_choices.py:75\nmsgid \"Sulawesi Selatan\"\nmsgstr \"Sulawesi Selatan\"\n\n#: id/id_choices.py:42 id/id_choices.py:82\nmsgid \"Sulawesi Tengah\"\nmsgstr \"Sulawesi Tengah\"\n\n#: id/id_choices.py:43 id/id_choices.py:85\nmsgid \"Sulawesi Tenggara\"\nmsgstr \"Sulawesi Tenggara\"\n\n#: id/id_choices.py:44\nmsgid \"Sulawesi Utara\"\nmsgstr \"Sulawesi Utara\"\n\n#: id/id_choices.py:45 id/id_choices.py:58\nmsgid \"Sumatera Barat\"\nmsgstr \"Sumatera Barat\"\n\n#: id/id_choices.py:46 id/id_choices.py:62\nmsgid \"Sumatera Selatan\"\nmsgstr \"Sumatera Selatan\"\n\n#: id/id_choices.py:47 id/id_choices.py:64\nmsgid \"Sumatera Utara\"\nmsgstr \"Sumatera Utara\"\n\n#: id/id_choices.py:52\nmsgid \"Magelang\"\nmsgstr \"Magelang\"\n\n#: id/id_choices.py:54\nmsgid \"Surakarta - Solo\"\nmsgstr \"Surakarta - Solo\"\n\n#: id/id_choices.py:55\nmsgid \"Madiun\"\nmsgstr \"Madiun\"\n\n#: id/id_choices.py:56\nmsgid \"Kediri\"\nmsgstr \"Kediri\"\n\n#: id/id_choices.py:59\nmsgid \"Tapanuli\"\nmsgstr \"Tapanuli\"\n\n#: id/id_choices.py:65\nmsgid \"Nanggroe Aceh Darussalam\"\nmsgstr \"Nanggroe Aceh Darussalam\"\n\n#: id/id_choices.py:67\nmsgid \"Kepulauan Bangka Belitung\"\nmsgstr \"Kepulauan Bangka Belitung\"\n\n#: id/id_choices.py:69\nmsgid \"Corps Consulate\"\nmsgstr \"Corps Consulate\"\n\n#: id/id_choices.py:70\nmsgid \"Corps Diplomatic\"\nmsgstr \"Corps Diplomatic\"\n\n#: id/id_choices.py:71\nmsgid \"Bandung\"\nmsgstr \"Bandung\"\n\n#: id/id_choices.py:73\nmsgid \"Sulawesi Utara Daratan\"\nmsgstr \"Sulawesi Utara Daratan\"\n\n#: id/id_choices.py:78\nmsgid \"NTT - Timor\"\nmsgstr \"NTT - Timor\"\n\n#: id/id_choices.py:80\nmsgid \"Sulawesi Utara Kepulauan\"\nmsgstr \"Sulawesi Utara Kepulauan\"\n\n#: id/id_choices.py:83\nmsgid \"NTB - Lombok\"\nmsgstr \"NTB - Lombok\"\n\n#: id/id_choices.py:84\nmsgid \"Papua dan Papua Barat\"\nmsgstr \"Papua dan Papua Barat\"\n\n#: id/id_choices.py:86\nmsgid \"Cirebon\"\nmsgstr \"Cirebon\"\n\n#: id/id_choices.py:87\nmsgid \"NTB - Sumbawa\"\nmsgstr \"NTB - Sumbawa\"\n\n#: id/id_choices.py:88\nmsgid \"NTT - Flores\"\nmsgstr \"NTT - Flores\"\n\n#: id/id_choices.py:89\nmsgid \"NTT - Sumba\"\nmsgstr \"NTT - Sumba\"\n\n#: id/id_choices.py:90\nmsgid \"Bogor\"\nmsgstr \"Bogor\"\n\n#: id/id_choices.py:91\nmsgid \"Pekalongan\"\nmsgstr \"Pekalongan\"\n\n#: id/id_choices.py:92\nmsgid \"Semarang\"\nmsgstr \"Semarang\"\n\n#: id/id_choices.py:93\nmsgid \"Pati\"\nmsgstr \"Pati\"\n\n#: id/id_choices.py:97\nmsgid \"Surabaya\"\nmsgstr \"Surabaya\"\n\n#: id/id_choices.py:98\nmsgid \"Madura\"\nmsgstr \"Madura\"\n\n#: id/id_choices.py:99\nmsgid \"Malang\"\nmsgstr \"Malang\"\n\n#: id/id_choices.py:100\nmsgid \"Jember\"\nmsgstr \"Jember\"\n\n#: id/id_choices.py:101\nmsgid \"Banyumas\"\nmsgstr \"Banyumas\"\n\n#: id/id_choices.py:102\nmsgid \"Federal Government\"\nmsgstr \"Gobierno Federal\"\n\n#: id/id_choices.py:103\nmsgid \"Bojonegoro\"\nmsgstr \"Bojonegoro\"\n\n#: id/id_choices.py:104\nmsgid \"Purwakarta\"\nmsgstr \"Purwakarta\"\n\n#: id/id_choices.py:105\nmsgid \"Sidoarjo\"\nmsgstr \"Sidoarjo\"\n\n#: id/id_choices.py:106\nmsgid \"Garut\"\nmsgstr \"Garut\"\n\n#: ie/ie_counties.py:8\nmsgid \"Antrim\"\nmsgstr \"Antrim\"\n\n#: ie/ie_counties.py:9\nmsgid \"Armagh\"\nmsgstr \"Armagh\"\n\n#: ie/ie_counties.py:10\nmsgid \"Carlow\"\nmsgstr \"Carlow\"\n\n#: ie/ie_counties.py:11\nmsgid \"Cavan\"\nmsgstr \"Cavan\"\n\n#: ie/ie_counties.py:12\nmsgid \"Clare\"\nmsgstr \"Clare\"\n\n#: ie/ie_counties.py:13\nmsgid \"Cork\"\nmsgstr \"Cork\"\n\n#: ie/ie_counties.py:14\nmsgid \"Derry\"\nmsgstr \"Derry\"\n\n#: ie/ie_counties.py:15\nmsgid \"Donegal\"\nmsgstr \"Donegal\"\n\n#: ie/ie_counties.py:16\nmsgid \"Down\"\nmsgstr \"Down\"\n\n#: ie/ie_counties.py:17\nmsgid \"Dublin\"\nmsgstr \"Dublin\"\n\n#: ie/ie_counties.py:18\nmsgid \"Fermanagh\"\nmsgstr \"de Fermanagh\"\n\n#: ie/ie_counties.py:19\nmsgid \"Galway\"\nmsgstr \"Galway\"\n\n#: ie/ie_counties.py:20\nmsgid \"Kerry\"\nmsgstr \"Kerry\"\n\n#: ie/ie_counties.py:21\nmsgid \"Kildare\"\nmsgstr \"Kildare\"\n\n#: ie/ie_counties.py:22\nmsgid \"Kilkenny\"\nmsgstr \"Kilkenny\"\n\n#: ie/ie_counties.py:23\nmsgid \"Laois\"\nmsgstr \"Laois\"\n\n#: ie/ie_counties.py:24\nmsgid \"Leitrim\"\nmsgstr \"Leitrim\"\n\n#: ie/ie_counties.py:25\nmsgid \"Limerick\"\nmsgstr \"Limerick\"\n\n#: ie/ie_counties.py:26\nmsgid \"Longford\"\nmsgstr \"Longford\"\n\n#: ie/ie_counties.py:27\nmsgid \"Louth\"\nmsgstr \"sesión\"\n\n#: ie/ie_counties.py:28\nmsgid \"Mayo\"\nmsgstr \"Mayo\"\n\n#: ie/ie_counties.py:29\nmsgid \"Meath\"\nmsgstr \"Meath\"\n\n#: ie/ie_counties.py:30\nmsgid \"Monaghan\"\nmsgstr \"Monaghan\"\n\n#: ie/ie_counties.py:31\nmsgid \"Offaly\"\nmsgstr \"Offaly\"\n\n#: ie/ie_counties.py:32\nmsgid \"Roscommon\"\nmsgstr \"Roscommon\"\n\n#: ie/ie_counties.py:33\nmsgid \"Sligo\"\nmsgstr \"Sligo\"\n\n#: ie/ie_counties.py:34\nmsgid \"Tipperary\"\nmsgstr \"Tipperary\"\n\n#: ie/ie_counties.py:35\nmsgid \"Tyrone\"\nmsgstr \"Tyrone\"\n\n#: ie/ie_counties.py:36\nmsgid \"Waterford\"\nmsgstr \"Waterford\"\n\n#: ie/ie_counties.py:37\nmsgid \"Westmeath\"\nmsgstr \"Westmeath\"\n\n#: ie/ie_counties.py:38\nmsgid \"Wexford\"\nmsgstr \"Wexford\"\n\n#: ie/ie_counties.py:39\nmsgid \"Wicklow\"\nmsgstr \"Wicklow\"\n\n#: il/forms.py:32\nmsgid \"Enter a postal code in the format XXXXX\"\nmsgstr \"Introduzca un código postal en el formato XXXXX\"\n\n#: il/forms.py:51\nmsgid \"Enter a valid ID number.\"\nmsgstr \"Introduzca un número de identificación válido.\"\n\n#: in_/forms.py:41\nmsgid \"Enter a zip code in the format XXXXXX or XXX XXX.\"\nmsgstr \"Introduzca un código postal en el formato XXXXXX o XXX XXX.\"\n\n#: in_/forms.py:64\nmsgid \"Enter an Indian state or territory.\"\nmsgstr \"Ingrese un estado o territorio indio.\"\n\n#: in_/forms.py:103\nmsgid \"Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.\"\nmsgstr \"Los números de teléfono deben empezar por 2X-8X o 03X-7X o 04X-6X.\"\n\n#: is_/forms.py:22\nmsgid \"\"\n\"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.\"\nmsgstr \"\"\n\"Introduzca un número de identificación de Islandia válido. El formato es \"\n\"XXXXXX-XXXX.\"\n\n#: is_/forms.py:23\nmsgid \"The Icelandic identification number is not valid.\"\nmsgstr \"El número de identificación de Islandia no es válido.\"\n\n#: it/forms.py:21\nmsgid \"Enter a valid zip code.\"\nmsgstr \"Introduzca un código postal válido.\"\n\n#: it/forms.py:48\nmsgid \"Enter a valid Social Security number.\"\nmsgstr \"Introduzca un número de Seguro Social válido.\"\n\n#: it/forms.py:73\nmsgid \"Enter a valid VAT number.\"\nmsgstr \"Introduzca un número VAT válido.\"\n\n#: jp/forms.py:19\nmsgid \"Enter a postal code in the format XXXXXXX or XXX-XXXX.\"\nmsgstr \"Introduzca un código postal en el formato XXXXX o XXXX-XXXX.\"\n\n#: jp/jp_prefectures.py:4\nmsgid \"Hokkaido\"\nmsgstr \"Hokkaido\"\n\n#: jp/jp_prefectures.py:5\nmsgid \"Aomori\"\nmsgstr \"Aomori\"\n\n#: jp/jp_prefectures.py:6\nmsgid \"Iwate\"\nmsgstr \"Iwate\"\n\n#: jp/jp_prefectures.py:7\nmsgid \"Miyagi\"\nmsgstr \"Miyagi\"\n\n#: jp/jp_prefectures.py:8\nmsgid \"Akita\"\nmsgstr \"Akita\"\n\n#: jp/jp_prefectures.py:9\nmsgid \"Yamagata\"\nmsgstr \"Yamagata\"\n\n#: jp/jp_prefectures.py:10\nmsgid \"Fukushima\"\nmsgstr \"Fukushima\"\n\n#: jp/jp_prefectures.py:11\nmsgid \"Ibaraki\"\nmsgstr \"Ibaraki\"\n\n#: jp/jp_prefectures.py:12\nmsgid \"Tochigi\"\nmsgstr \"Tochigi\"\n\n#: jp/jp_prefectures.py:13\nmsgid \"Gunma\"\nmsgstr \"Gunma\"\n\n#: jp/jp_prefectures.py:14\nmsgid \"Saitama\"\nmsgstr \"Saitama\"\n\n#: jp/jp_prefectures.py:15\nmsgid \"Chiba\"\nmsgstr \"Chiba\"\n\n#: jp/jp_prefectures.py:16\nmsgid \"Tokyo\"\nmsgstr \"Tokyo\"\n\n#: jp/jp_prefectures.py:17\nmsgid \"Kanagawa\"\nmsgstr \"Kanagawa\"\n\n#: jp/jp_prefectures.py:18\nmsgid \"Yamanashi\"\nmsgstr \"Yamanashi\"\n\n#: jp/jp_prefectures.py:19\nmsgid \"Nagano\"\nmsgstr \"Nagano\"\n\n#: jp/jp_prefectures.py:20\nmsgid \"Niigata\"\nmsgstr \"Niigata\"\n\n#: jp/jp_prefectures.py:21\nmsgid \"Toyama\"\nmsgstr \"Toyama\"\n\n#: jp/jp_prefectures.py:22\nmsgid \"Ishikawa\"\nmsgstr \"Ishikawa\"\n\n#: jp/jp_prefectures.py:23\nmsgid \"Fukui\"\nmsgstr \"Fukui\"\n\n#: jp/jp_prefectures.py:24\nmsgid \"Gifu\"\nmsgstr \"Gifu\"\n\n#: jp/jp_prefectures.py:25\nmsgid \"Shizuoka\"\nmsgstr \"Shizuoka\"\n\n#: jp/jp_prefectures.py:26\nmsgid \"Aichi\"\nmsgstr \"Aichi\"\n\n#: jp/jp_prefectures.py:27\nmsgid \"Mie\"\nmsgstr \"Mie\"\n\n#: jp/jp_prefectures.py:28\nmsgid \"Shiga\"\nmsgstr \"Shiga\"\n\n#: jp/jp_prefectures.py:29\nmsgid \"Kyoto\"\nmsgstr \"Kyoto\"\n\n#: jp/jp_prefectures.py:30\nmsgid \"Osaka\"\nmsgstr \"Osaka\"\n\n#: jp/jp_prefectures.py:31\nmsgid \"Hyogo\"\nmsgstr \"Hyogo\"\n\n#: jp/jp_prefectures.py:32\nmsgid \"Nara\"\nmsgstr \"Nara\"\n\n#: jp/jp_prefectures.py:33\nmsgid \"Wakayama\"\nmsgstr \"Wakayama\"\n\n#: jp/jp_prefectures.py:34\nmsgid \"Tottori\"\nmsgstr \"Tottori\"\n\n#: jp/jp_prefectures.py:35\nmsgid \"Shimane\"\nmsgstr \"Shimane\"\n\n#: jp/jp_prefectures.py:36\nmsgid \"Okayama\"\nmsgstr \"Okayama\"\n\n#: jp/jp_prefectures.py:37\nmsgid \"Hiroshima\"\nmsgstr \"Hiroshima\"\n\n#: jp/jp_prefectures.py:38\nmsgid \"Yamaguchi\"\nmsgstr \"Yamaguchi\"\n\n#: jp/jp_prefectures.py:39\nmsgid \"Tokushima\"\nmsgstr \"Tokushima\"\n\n#: jp/jp_prefectures.py:40\nmsgid \"Kagawa\"\nmsgstr \"Kagawa\"\n\n#: jp/jp_prefectures.py:41\nmsgid \"Ehime\"\nmsgstr \"Ehime\"\n\n#: jp/jp_prefectures.py:42\nmsgid \"Kochi\"\nmsgstr \"Kochi\"\n\n#: jp/jp_prefectures.py:43\nmsgid \"Fukuoka\"\nmsgstr \"Fukuoka\"\n\n#: jp/jp_prefectures.py:44\nmsgid \"Saga\"\nmsgstr \"Saga\"\n\n#: jp/jp_prefectures.py:45\nmsgid \"Nagasaki\"\nmsgstr \"Nagasaki\"\n\n#: jp/jp_prefectures.py:46\nmsgid \"Kumamoto\"\nmsgstr \"Kumamoto\"\n\n#: jp/jp_prefectures.py:47\nmsgid \"Oita\"\nmsgstr \"Oita\"\n\n#: jp/jp_prefectures.py:48\nmsgid \"Miyazaki\"\nmsgstr \"Miyazaki\"\n\n#: jp/jp_prefectures.py:49\nmsgid \"Kagoshima\"\nmsgstr \"Kagoshima\"\n\n#: jp/jp_prefectures.py:50\nmsgid \"Okinawa\"\nmsgstr \"Okinawa\"\n\n#: kw/forms.py:27\nmsgid \"Enter a valid Kuwaiti Civil ID number\"\nmsgstr \"Introduzca un ID Civil kuwaití válido\"\n\n#: mk/forms.py:18\nmsgid \"\"\n\"Identity card numbers must contain either 4 to 7 digits or an uppercase \"\n\"letter and 7 digits.\"\nmsgstr \"\"\n\"Números de cédula de identidad debe contener 4 a 7 dígitos o una letra \"\n\"mayúscula y 7 dígitos.\"\n\n#: mk/forms.py:57 si/forms.py:24\nmsgid \"This field should contain exactly 13 digits.\"\nmsgstr \"Este campo debe contener exactamente 13 dígitos.\"\n\n#: mk/forms.py:58\nmsgid \"The first 7 digits of the UMCN must represent a valid past date.\"\nmsgstr \"\"\n\"Los 7 primeros dígitos de la UMCN debe representar una fecha válida pasado.\"\n\n#: mk/forms.py:59\nmsgid \"The UMCN is not valid.\"\nmsgstr \"El UMCN no es válido.\"\n\n#: mk/mk_choices.py:10\nmsgid \"Aerodrom\"\nmsgstr \"Aerodrom\"\n\n#: mk/mk_choices.py:11\nmsgid \"Aračinovo\"\nmsgstr \"Aracinovo\"\n\n#: mk/mk_choices.py:12\nmsgid \"Berovo\"\nmsgstr \"Berovo\"\n\n#: mk/mk_choices.py:13\nmsgid \"Bitola\"\nmsgstr \"Bitola\"\n\n#: mk/mk_choices.py:14\nmsgid \"Bogdanci\"\nmsgstr \"Bogdanci\"\n\n#: mk/mk_choices.py:15\nmsgid \"Bogovinje\"\nmsgstr \"Bogovinje\"\n\n#: mk/mk_choices.py:16\nmsgid \"Bosilovo\"\nmsgstr \"Bosilovo\"\n\n#: mk/mk_choices.py:17\nmsgid \"Brvenica\"\nmsgstr \"Brvenica\"\n\n#: mk/mk_choices.py:18\nmsgid \"Butel\"\nmsgstr \"Butel\"\n\n#: mk/mk_choices.py:19\nmsgid \"Valandovo\"\nmsgstr \"Valandovo\"\n\n#: mk/mk_choices.py:20\nmsgid \"Vasilevo\"\nmsgstr \"Vasilevo\"\n\n#: mk/mk_choices.py:21\nmsgid \"Vevčani\"\nmsgstr \"Vevcani\"\n\n#: mk/mk_choices.py:22\nmsgid \"Veles\"\nmsgstr \"Veles\"\n\n#: mk/mk_choices.py:23\nmsgid \"Vinica\"\nmsgstr \"Vinica\"\n\n#: mk/mk_choices.py:24\nmsgid \"Vraneštica\"\nmsgstr \"Vraneštica\"\n\n#: mk/mk_choices.py:25\nmsgid \"Vrapčište\"\nmsgstr \"Vrapčište\"\n\n#: mk/mk_choices.py:26\nmsgid \"Gazi Baba\"\nmsgstr \"Gazi Baba\"\n\n#: mk/mk_choices.py:27\nmsgid \"Gevgelija\"\nmsgstr \"Gevgelija\"\n\n#: mk/mk_choices.py:28\nmsgid \"Gostivar\"\nmsgstr \"Gostivar\"\n\n#: mk/mk_choices.py:29\nmsgid \"Gradsko\"\nmsgstr \"Gradsko\"\n\n#: mk/mk_choices.py:30\nmsgid \"Debar\"\nmsgstr \"Excluir\"\n\n#: mk/mk_choices.py:31\nmsgid \"Debarca\"\nmsgstr \"Debarca\"\n\n#: mk/mk_choices.py:32\nmsgid \"Delčevo\"\nmsgstr \"Delcevo\"\n\n#: mk/mk_choices.py:33\nmsgid \"Demir Kapija\"\nmsgstr \"Demir Kapija\"\n\n#: mk/mk_choices.py:34\nmsgid \"Demir Hisar\"\nmsgstr \"Demir Hisar\"\n\n#: mk/mk_choices.py:35\nmsgid \"Dolneni\"\nmsgstr \"Dolneni\"\n\n#: mk/mk_choices.py:36\nmsgid \"Drugovo\"\nmsgstr \"Drugovo\"\n\n#: mk/mk_choices.py:37\nmsgid \"Gjorče Petrov\"\nmsgstr \"Gjorce Petrov\"\n\n#: mk/mk_choices.py:38\nmsgid \"Želino\"\nmsgstr \"Zelino\"\n\n#: mk/mk_choices.py:39\nmsgid \"Zajas\"\nmsgstr \"Zajas\"\n\n#: mk/mk_choices.py:40\nmsgid \"Zelenikovo\"\nmsgstr \"Zelenikovo\"\n\n#: mk/mk_choices.py:41\nmsgid \"Zrnovci\"\nmsgstr \"Zrnovci\"\n\n#: mk/mk_choices.py:42\nmsgid \"Ilinden\"\nmsgstr \"Ilinden\"\n\n#: mk/mk_choices.py:43\nmsgid \"Jegunovce\"\nmsgstr \"Jegunovce\"\n\n#: mk/mk_choices.py:44\nmsgid \"Kavadarci\"\nmsgstr \"Kavadarci\"\n\n#: mk/mk_choices.py:45\nmsgid \"Karbinci\"\nmsgstr \"Karbinci\"\n\n#: mk/mk_choices.py:46\nmsgid \"Karpoš\"\nmsgstr \"Karpos\"\n\n#: mk/mk_choices.py:47\nmsgid \"Kisela Voda\"\nmsgstr \"Kisela Voda\"\n\n#: mk/mk_choices.py:48\nmsgid \"Kičevo\"\nmsgstr \"Kičevo\"\n\n#: mk/mk_choices.py:49\nmsgid \"Konče\"\nmsgstr \"Konče\"\n\n#: mk/mk_choices.py:50\nmsgid \"Koćani\"\nmsgstr \"Kocani\"\n\n#: mk/mk_choices.py:51\nmsgid \"Kratovo\"\nmsgstr \"Kratovo\"\n\n#: mk/mk_choices.py:52\nmsgid \"Kriva Palanka\"\nmsgstr \"Kriva Palanka\"\n\n#: mk/mk_choices.py:53\nmsgid \"Krivogaštani\"\nmsgstr \"Krivogaštani\"\n\n#: mk/mk_choices.py:54\nmsgid \"Kruševo\"\nmsgstr \"Krusevo\"\n\n#: mk/mk_choices.py:55\nmsgid \"Kumanovo\"\nmsgstr \"Kumanovo\"\n\n#: mk/mk_choices.py:56\nmsgid \"Lipkovo\"\nmsgstr \"Lipkovo\"\n\n#: mk/mk_choices.py:57\nmsgid \"Lozovo\"\nmsgstr \"Lozovo\"\n\n#: mk/mk_choices.py:58\nmsgid \"Mavrovo i Rostuša\"\nmsgstr \"Mavrovo i Rostuša\"\n\n#: mk/mk_choices.py:59\nmsgid \"Makedonska Kamenica\"\nmsgstr \"Makedonska Kamenica\"\n\n#: mk/mk_choices.py:60\nmsgid \"Makedonski Brod\"\nmsgstr \"Makedonski Brod\"\n\n#: mk/mk_choices.py:61\nmsgid \"Mogila\"\nmsgstr \"Mogila\"\n\n#: mk/mk_choices.py:62\nmsgid \"Negotino\"\nmsgstr \"Negotino\"\n\n#: mk/mk_choices.py:63\nmsgid \"Novaci\"\nmsgstr \"Novaci\"\n\n#: mk/mk_choices.py:64\nmsgid \"Novo Selo\"\nmsgstr \"Novo Selo\"\n\n#: mk/mk_choices.py:65\nmsgid \"Oslomej\"\nmsgstr \"Oslomej\"\n\n#: mk/mk_choices.py:66\nmsgid \"Ohrid\"\nmsgstr \"Ohrid\"\n\n#: mk/mk_choices.py:67\nmsgid \"Petrovec\"\nmsgstr \"Petrovec\"\n\n#: mk/mk_choices.py:68\nmsgid \"Pehčevo\"\nmsgstr \"Pehcevo\"\n\n#: mk/mk_choices.py:69\nmsgid \"Plasnica\"\nmsgstr \"Plasnica\"\n\n#: mk/mk_choices.py:70\nmsgid \"Prilep\"\nmsgstr \"Prilep\"\n\n#: mk/mk_choices.py:71\nmsgid \"Probištip\"\nmsgstr \"Probištip\"\n\n#: mk/mk_choices.py:72\nmsgid \"Radoviš\"\nmsgstr \"Radoviš\"\n\n#: mk/mk_choices.py:73\nmsgid \"Rankovce\"\nmsgstr \"Rankovce\"\n\n#: mk/mk_choices.py:74\nmsgid \"Resen\"\nmsgstr \"Resen\"\n\n#: mk/mk_choices.py:75\nmsgid \"Rosoman\"\nmsgstr \"Rosoman\"\n\n#: mk/mk_choices.py:76\nmsgid \"Saraj\"\nmsgstr \"Saraj\"\n\n#: mk/mk_choices.py:77\nmsgid \"Sveti Nikole\"\nmsgstr \"Sveti Nikole\"\n\n#: mk/mk_choices.py:78\nmsgid \"Sopište\"\nmsgstr \"Sopište\"\n\n#: mk/mk_choices.py:79\nmsgid \"Star Dojran\"\nmsgstr \"Star Dojran\"\n\n#: mk/mk_choices.py:80\nmsgid \"Staro Nagoričane\"\nmsgstr \"Staro Nagoricane\"\n\n#: mk/mk_choices.py:81\nmsgid \"Struga\"\nmsgstr \"Struga\"\n\n#: mk/mk_choices.py:82\nmsgid \"Strumica\"\nmsgstr \"Strumica\"\n\n#: mk/mk_choices.py:83\nmsgid \"Studeničani\"\nmsgstr \"Studeničani\"\n\n#: mk/mk_choices.py:84\nmsgid \"Tearce\"\nmsgstr \"Tearce\"\n\n#: mk/mk_choices.py:85\nmsgid \"Tetovo\"\nmsgstr \"Tetovo\"\n\n#: mk/mk_choices.py:86\nmsgid \"Centar\"\nmsgstr \"Centar\"\n\n#: mk/mk_choices.py:87\nmsgid \"Centar-Župa\"\nmsgstr \"-Centar Župa\"\n\n#: mk/mk_choices.py:88\nmsgid \"Čair\"\nmsgstr \"Cair\"\n\n#: mk/mk_choices.py:89\nmsgid \"Čaška\"\nmsgstr \"Caska\"\n\n#: mk/mk_choices.py:90\nmsgid \"Češinovo-Obleševo\"\nmsgstr \"Češinovo-Obleševo\"\n\n#: mk/mk_choices.py:91\nmsgid \"Čučer-Sandevo\"\nmsgstr \"Cucer-Sandevo\"\n\n#: mk/mk_choices.py:92\nmsgid \"Štip\"\nmsgstr \"Štip\"\n\n#: mk/mk_choices.py:93\nmsgid \"Šuto Orizari\"\nmsgstr \"Suto Orizari\"\n\n#: mk/models.py:11\nmsgid \"Macedonian identity card number\"\nmsgstr \"Número de la tarjeta de identidad macedonia \"\n\n#: mk/models.py:25\nmsgid \"A Macedonian municipality (2 character code)\"\nmsgstr \"Un municipio de Macedonia (2 código de caracteres)\"\n\n#: mk/models.py:35\nmsgid \"Unique master citizen number (13 digits)\"\nmsgstr \"Número maestro único de ciudadanos (13 dígitos)\"\n\n#: mx/forms.py:67\nmsgid \"Enter a valid zip code in the format XXXXX.\"\nmsgstr \"Entre un código zip válido en el formato XXXXX.\"\n\n#: mx/forms.py:110\nmsgid \"Enter a valid RFC.\"\nmsgstr \"Entre un RFC válido.\"\n\n#: mx/forms.py:111\nmsgid \"Invalid checksum for RFC.\"\nmsgstr \"Suma de verificación incorrecta.\"\n\n#: mx/forms.py:191\nmsgid \"Enter a valid CURP.\"\nmsgstr \"Entre un CURP válido.\"\n\n#: mx/forms.py:192\nmsgid \"Invalid checksum for CURP.\"\nmsgstr \"Suma de verificación de CURP inválida.\"\n\n#: mx/models.py:14\nmsgid \"Mexico state (three uppercase letters)\"\nmsgstr \"Estado de México (tres letras mayúsculas)\"\n\n#: mx/models.py:27\nmsgid \"Mexico zip code\"\nmsgstr \"Código zip de México\"\n\n#: mx/models.py:44\nmsgid \"Mexican RFC\"\nmsgstr \"RFC de México\"\n\n#: mx/models.py:61\nmsgid \"Mexican CURP\"\nmsgstr \"CURP de México\"\n\n#: mx/mx_states.py:14\nmsgid \"Aguascalientes\"\nmsgstr \"Aguascalientes\"\n\n#: mx/mx_states.py:15\nmsgid \"Baja California\"\nmsgstr \"Baja California\"\n\n#: mx/mx_states.py:16\nmsgid \"Baja California Sur\"\nmsgstr \"Baja California Sur\"\n\n#: mx/mx_states.py:17\nmsgid \"Campeche\"\nmsgstr \"Campeche\"\n\n#: mx/mx_states.py:18\nmsgid \"Chihuahua\"\nmsgstr \"Chihuahua\"\n\n#: mx/mx_states.py:19\nmsgid \"Chiapas\"\nmsgstr \"Chiapas\"\n\n#: mx/mx_states.py:20\nmsgid \"Coahuila\"\nmsgstr \"Coahuila\"\n\n#: mx/mx_states.py:21\nmsgid \"Colima\"\nmsgstr \"Colima\"\n\n#: mx/mx_states.py:22\nmsgid \"Distrito Federal\"\nmsgstr \"Distrito Federal\"\n\n#: mx/mx_states.py:23\nmsgid \"Durango\"\nmsgstr \"Durango\"\n\n#: mx/mx_states.py:24\nmsgid \"Guerrero\"\nmsgstr \"Guerrero\"\n\n#: mx/mx_states.py:25\nmsgid \"Guanajuato\"\nmsgstr \"Guanajuato\"\n\n#: mx/mx_states.py:26\nmsgid \"Hidalgo\"\nmsgstr \"Hidalgo\"\n\n#: mx/mx_states.py:27\nmsgid \"Jalisco\"\nmsgstr \"Jalisco\"\n\n#: mx/mx_states.py:28\nmsgid \"Estado de México\"\nmsgstr \"Estado de México\"\n\n#: mx/mx_states.py:29\nmsgid \"Michoacán\"\nmsgstr \"Michoacán\"\n\n#: mx/mx_states.py:30\nmsgid \"Morelos\"\nmsgstr \"Morelos\"\n\n#: mx/mx_states.py:31\nmsgid \"Nayarit\"\nmsgstr \"Nayarit\"\n\n#: mx/mx_states.py:32\nmsgid \"Nuevo León\"\nmsgstr \"Nuevo León\"\n\n#: mx/mx_states.py:33\nmsgid \"Oaxaca\"\nmsgstr \"Oaxaca\"\n\n#: mx/mx_states.py:34\nmsgid \"Puebla\"\nmsgstr \"Puebla\"\n\n#: mx/mx_states.py:35\nmsgid \"Querétaro\"\nmsgstr \"Querétaro\"\n\n#: mx/mx_states.py:36\nmsgid \"Quintana Roo\"\nmsgstr \"Quintana Roo\"\n\n#: mx/mx_states.py:37\nmsgid \"Sinaloa\"\nmsgstr \"Sinaloa\"\n\n#: mx/mx_states.py:38\nmsgid \"San Luis Potosí\"\nmsgstr \"San Luis Potosí\"\n\n#: mx/mx_states.py:39\nmsgid \"Sonora\"\nmsgstr \"Sonora\"\n\n#: mx/mx_states.py:40\nmsgid \"Tabasco\"\nmsgstr \"Tabasco\"\n\n#: mx/mx_states.py:41\nmsgid \"Tamaulipas\"\nmsgstr \"Tamaulipas\"\n\n#: mx/mx_states.py:42\nmsgid \"Tlaxcala\"\nmsgstr \"Tlaxcala\"\n\n#: mx/mx_states.py:43\nmsgid \"Veracruz\"\nmsgstr \"Veracruz\"\n\n#: mx/mx_states.py:44\nmsgid \"Yucatán\"\nmsgstr \"Yucatán\"\n\n#: mx/mx_states.py:45\nmsgid \"Zacatecas\"\nmsgstr \"Zacatecas\"\n\n#: nl/forms.py:26\nmsgid \"Enter a valid postal code\"\nmsgstr \"Introduzca un código postal válido\"\n\n#: nl/forms.py:82\nmsgid \"Enter a valid SoFi number\"\nmsgstr \"Introduzca un número SoFi válido\"\n\n#: nl/nl_provinces.py:4\nmsgid \"Drenthe\"\nmsgstr \"Drenthe\"\n\n#: nl/nl_provinces.py:5\nmsgid \"Flevoland\"\nmsgstr \"Flevoland\"\n\n#: nl/nl_provinces.py:6\nmsgid \"Friesland\"\nmsgstr \"Friesland\"\n\n#: nl/nl_provinces.py:7\nmsgid \"Gelderland\"\nmsgstr \"Gelderland\"\n\n#: nl/nl_provinces.py:8\nmsgid \"Groningen\"\nmsgstr \"Groningen\"\n\n#: nl/nl_provinces.py:10\nmsgid \"Noord-Brabant\"\nmsgstr \"Noord-Brabant\"\n\n#: nl/nl_provinces.py:11\nmsgid \"Noord-Holland\"\nmsgstr \"Noord-Holland\"\n\n#: nl/nl_provinces.py:12\nmsgid \"Overijssel\"\nmsgstr \"Overijssel\"\n\n#: nl/nl_provinces.py:13\nmsgid \"Utrecht\"\nmsgstr \"Utrecht\"\n\n#: nl/nl_provinces.py:14\nmsgid \"Zeeland\"\nmsgstr \"Zeeland\"\n\n#: nl/nl_provinces.py:15\nmsgid \"Zuid-Holland\"\nmsgstr \"Zuid-Holland\"\n\n#: no/forms.py:39\nmsgid \"Enter a valid Norwegian social security number.\"\nmsgstr \"Introduzca un número de seguro social de Noruega válido.\"\n\n#: pe/forms.py:28\nmsgid \"This field requires 8 digits.\"\nmsgstr \"Este campo necesita 8 dígitos.\"\n\n#: pe/forms.py:56\nmsgid \"This field requires 11 digits.\"\nmsgstr \"Este campo necesita 11 dígitos.\"\n\n#: pl/forms.py:42\nmsgid \"National Identification Number consists of 11 digits.\"\nmsgstr \"Número de Identificación Nacional consiste en 11 dígitos\"\n\n#: pl/forms.py:43\nmsgid \"Wrong checksum for the National Identification Number.\"\nmsgstr \"El Número de Identificación Nacional es incorrecto.\"\n\n#: pl/forms.py:79\nmsgid \"National ID Card Number consists of 3 letters and 6 digits.\"\nmsgstr \"\"\n\"Número de Tarjeta Identificador del Documento Nacional de Identidad que se \"\n\"compone de 3 letras y 6 dígitos.\"\n\n#: pl/forms.py:80\nmsgid \"Wrong checksum for the National ID Card Number.\"\nmsgstr \"\"\n\"Suma de comprobación incorrecta para el número de tarjetas de identificación \"\n\"nacional.\"\n\n#: pl/forms.py:131\nmsgid \"\"\n\"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or \"\n\"XXXXXXXXXX.\"\nmsgstr \"\"\n\"Entre un campo de identificación fiscal con el formato  XXX-XXX-XX-XX, XXX-\"\n\"XX-XX-XXX o XXXXXXXXXX.\"\n\n#: pl/forms.py:132\nmsgid \"Wrong checksum for the Tax Number (NIP).\"\nmsgstr \"El Número de Identificación Tributaria (NIP) es incorrecto.\"\n\n#: pl/forms.py:171\nmsgid \"National Business Register Number (REGON) consists of 9 or 14 digits.\"\nmsgstr \"\"\n\"El Número Nacional de Registro de Negocios (REGON) consiste en 9 o 14 \"\n\"dígitos.\"\n\n#: pl/forms.py:172\nmsgid \"Wrong checksum for the National Business Register Number (REGON).\"\nmsgstr \"El Número Nacional de Registro de Negocios (REGON) es incorrecto.\"\n\n#: pl/forms.py:212\nmsgid \"Enter a postal code in the format XX-XXX.\"\nmsgstr \"Introduzca un código postal en el formato XX-XXX.\"\n\n#: pl/pl_voivodeships.py:8\nmsgid \"Lower Silesia\"\nmsgstr \"Lower Silesia\"\n\n#: pl/pl_voivodeships.py:9\nmsgid \"Kuyavia-Pomerania\"\nmsgstr \"Kuyavia-Pomerania\"\n\n#: pl/pl_voivodeships.py:10\nmsgid \"Lublin\"\nmsgstr \"Lublin\"\n\n#: pl/pl_voivodeships.py:11\nmsgid \"Lubusz\"\nmsgstr \"Lubusz\"\n\n#: pl/pl_voivodeships.py:12\nmsgid \"Lodz\"\nmsgstr \"Lodz\"\n\n#: pl/pl_voivodeships.py:13\nmsgid \"Lesser Poland\"\nmsgstr \"Lesser Poland\"\n\n#: pl/pl_voivodeships.py:14\nmsgid \"Masovia\"\nmsgstr \"Masovia\"\n\n#: pl/pl_voivodeships.py:15\nmsgid \"Opole\"\nmsgstr \"Opole\"\n\n#: pl/pl_voivodeships.py:16\nmsgid \"Subcarpatia\"\nmsgstr \"Subcarpatia\"\n\n#: pl/pl_voivodeships.py:17\nmsgid \"Podlasie\"\nmsgstr \"Podlasie\"\n\n#: pl/pl_voivodeships.py:18\nmsgid \"Pomerania\"\nmsgstr \"Pomerania\"\n\n#: pl/pl_voivodeships.py:19\nmsgid \"Silesia\"\nmsgstr \"Silesia\"\n\n#: pl/pl_voivodeships.py:20\nmsgid \"Swietokrzyskie\"\nmsgstr \"Swietokrzyskie\"\n\n#: pl/pl_voivodeships.py:21\nmsgid \"Warmia-Masuria\"\nmsgstr \"Warmia-Masuria\"\n\n#: pl/pl_voivodeships.py:22\nmsgid \"Greater Poland\"\nmsgstr \"Greater Poland\"\n\n#: pl/pl_voivodeships.py:23\nmsgid \"West Pomerania\"\nmsgstr \"West Pomerania\"\n\n#: pt/forms.py:19\nmsgid \"Enter a zip code in the format XXXX-XXX.\"\nmsgstr \"Introduzca un código postal en el formato XXXX-XXX.\"\n\n#: pt/forms.py:39\nmsgid \"Phone numbers must have 9 digits, or start by + or 00.\"\nmsgstr \"Los números de teléfono deben ser de 9 dígitos, o comenzar con + o 00.\"\n\n#: ro/forms.py:22\nmsgid \"Enter a valid CIF.\"\nmsgstr \"Introduzca un CIF válido.\"\n\n#: ro/forms.py:59\nmsgid \"Enter a valid CNP.\"\nmsgstr \"Introduzca un CNP válido.\"\n\n#: ro/forms.py:143\nmsgid \"Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format\"\nmsgstr \"Introduzca un IBAN válido en el formato ROXX-XXXX-XXXX-XXXX-XXXX-XXXX.\"\n\n#: ro/forms.py:175\nmsgid \"Phone numbers must be in XXXX-XXXXXX format.\"\nmsgstr \"Los números de teléfono deben tener el formato XXXX-XXXXXX.\"\n\n#: ro/forms.py:200\nmsgid \"Enter a valid postal code in the format XXXXXX\"\nmsgstr \"Introduzca un código postal válido en el formato XXXXXX\"\n\n#: ru/forms.py:37\nmsgid \"Enter a postal code in the format XXXXXX.\"\nmsgstr \"Introduzca un código postal en el formato XXXXXX.\"\n\n#: ru/forms.py:50\nmsgid \"Enter a passport number in the format XXXX XXXXXX.\"\nmsgstr \"Introduzca un número de pasaporte en el formato XXXX XXXXXX.\"\n\n#: ru/forms.py:63\nmsgid \"Enter a passport number in the format XX XXXXXXX.\"\nmsgstr \"Introduzca un número de pasaporte en el formato XX XXXXXXX.\"\n\n#: ru/ru_regions.py:10\nmsgid \"Central Federal County\"\nmsgstr \"Condado Federal Central \"\n\n#: ru/ru_regions.py:11\nmsgid \"South Federal County\"\nmsgstr \"Condado Federal del Sur\"\n\n#: ru/ru_regions.py:12\nmsgid \"North-West Federal County\"\nmsgstr \"Condado Federal del Norte-Oeste\"\n\n#: ru/ru_regions.py:13\nmsgid \"Far-East Federal County\"\nmsgstr \"Condado Federal del Extremo Oriente\"\n\n#: ru/ru_regions.py:14\nmsgid \"Siberian Federal County\"\nmsgstr \"Condado Federal de Siberia\"\n\n#: ru/ru_regions.py:15\nmsgid \"Ural Federal County\"\nmsgstr \"Condado Federal de Ural\"\n\n#: ru/ru_regions.py:16\nmsgid \"Privolzhsky Federal County\"\nmsgstr \"Condado Federal de Privolzhsky\"\n\n#: ru/ru_regions.py:17\nmsgid \"North-Caucasian Federal County\"\nmsgstr \"Condado Federal del Norte del Cáucaso\"\n\n#: ru/ru_regions.py:21\nmsgid \"Moskva\"\nmsgstr \"Moskva\"\n\n#: ru/ru_regions.py:22\nmsgid \"Saint-Peterburg\"\nmsgstr \"Saint-Peterburg\"\n\n#: ru/ru_regions.py:23\nmsgid \"Moskovskaya oblast'\"\nmsgstr \"Moskovskaya Oblast '\"\n\n#: ru/ru_regions.py:24\nmsgid \"Adygeya, Respublika\"\nmsgstr \"Adigueya, Respublika\"\n\n#: ru/ru_regions.py:25\nmsgid \"Bashkortostan, Respublika\"\nmsgstr \"Bashkortostán, Respublika\"\n\n#: ru/ru_regions.py:26\nmsgid \"Buryatia, Respublika\"\nmsgstr \"Buriatia, Respublika\"\n\n#: ru/ru_regions.py:27\nmsgid \"Altay, Respublika\"\nmsgstr \"Altay, Respublika\"\n\n#: ru/ru_regions.py:28\nmsgid \"Dagestan, Respublika\"\nmsgstr \"Daguestán, Respublika\"\n\n#: ru/ru_regions.py:29\nmsgid \"Ingushskaya Respublika\"\nmsgstr \"Ingushskaya Respublika\"\n\n#: ru/ru_regions.py:30\nmsgid \"Kabardino-Balkarskaya Respublika\"\nmsgstr \"Kabardino-Balkarskaya Respublika\"\n\n#: ru/ru_regions.py:31\nmsgid \"Kalmykia, Respublika\"\nmsgstr \"Kalmykia, Respublika\"\n\n#: ru/ru_regions.py:32\nmsgid \"Karachaevo-Cherkesskaya Respublika\"\nmsgstr \"Karachaevo-Cherkesskaya Respublika\"\n\n#: ru/ru_regions.py:33\nmsgid \"Karelia, Respublika\"\nmsgstr \"Karelia, Respublika\"\n\n#: ru/ru_regions.py:34\nmsgid \"Komi, Respublika\"\nmsgstr \"Komi, Respublika\"\n\n#: ru/ru_regions.py:35\nmsgid \"Mariy Ehl, Respublika\"\nmsgstr \"Mariy Ehl, Respublika\"\n\n#: ru/ru_regions.py:36\nmsgid \"Mordovia, Respublika\"\nmsgstr \"Mordovia, Respublika\"\n\n#: ru/ru_regions.py:37\nmsgid \"Sakha, Respublika (Yakutiya)\"\nmsgstr \"Saja, Respublika (Yakutia)\"\n\n#: ru/ru_regions.py:38\nmsgid \"Severnaya Osetia, Respublika (Alania)\"\nmsgstr \"Severnaya Osetia, Respublika (Alania)\"\n\n#: ru/ru_regions.py:39\nmsgid \"Tatarstan, Respublika\"\nmsgstr \"Tatarstán, Respublika\"\n\n#: ru/ru_regions.py:40\nmsgid \"Tyva, Respublika (Tuva)\"\nmsgstr \"Tyva, Respublika (Tuva)\"\n\n#: ru/ru_regions.py:41\nmsgid \"Udmurtskaya Respublika\"\nmsgstr \"Udmurtskaya Respublika\"\n\n#: ru/ru_regions.py:42\nmsgid \"Khakassiya, Respublika\"\nmsgstr \"Khakassiya, Respublika\"\n\n#: ru/ru_regions.py:43\nmsgid \"Chechenskaya Respublika\"\nmsgstr \"Chechenskaya Respublika\"\n\n#: ru/ru_regions.py:44\nmsgid \"Chuvashskaya Respublika\"\nmsgstr \"Chuvashskaya Respublika\"\n\n#: ru/ru_regions.py:45\nmsgid \"Altayskiy Kray\"\nmsgstr \"Altayskiy Kray\"\n\n#: ru/ru_regions.py:46\nmsgid \"Zabaykalskiy Kray\"\nmsgstr \"Zabaykalskiy Kray\"\n\n#: ru/ru_regions.py:47\nmsgid \"Kamchatskiy Kray\"\nmsgstr \"Kamchatskiy Kray\"\n\n#: ru/ru_regions.py:48\nmsgid \"Krasnodarskiy Kray\"\nmsgstr \"Krasnodarskiy Kray\"\n\n#: ru/ru_regions.py:49\nmsgid \"Krasnoyarskiy Kray\"\nmsgstr \"Krasnoyarskiy Kray\"\n\n#: ru/ru_regions.py:50\nmsgid \"Permskiy Kray\"\nmsgstr \"Permskiy Kray\"\n\n#: ru/ru_regions.py:51\nmsgid \"Primorskiy Kray\"\nmsgstr \"Primorskiy Kray\"\n\n#: ru/ru_regions.py:52\nmsgid \"Stavropol'siyy Kray\"\nmsgstr \"Stavropol'siyy Kray\"\n\n#: ru/ru_regions.py:53\nmsgid \"Khabarovskiy Kray\"\nmsgstr \"Khabarovskiy Kray\"\n\n#: ru/ru_regions.py:54\nmsgid \"Amurskaya oblast'\"\nmsgstr \"Amurskaya Oblast '\"\n\n#: ru/ru_regions.py:55\nmsgid \"Arkhangel'skaya oblast'\"\nmsgstr \"Arkhangel'skaya Oblast '\"\n\n#: ru/ru_regions.py:56\nmsgid \"Astrakhanskaya oblast'\"\nmsgstr \"Astrakhanskaya oblast '\"\n\n#: ru/ru_regions.py:57\nmsgid \"Belgorodskaya oblast'\"\nmsgstr \"Belgorodskaya Oblast '\"\n\n#: ru/ru_regions.py:58\nmsgid \"Bryanskaya oblast'\"\nmsgstr \"Bryanskaya oblast '\"\n\n#: ru/ru_regions.py:59\nmsgid \"Vladimirskaya oblast'\"\nmsgstr \"Vladimirskaya Oblast '\"\n\n#: ru/ru_regions.py:60\nmsgid \"Volgogradskaya oblast'\"\nmsgstr \"Volgogradskaya oblast '\"\n\n#: ru/ru_regions.py:61\nmsgid \"Vologodskaya oblast'\"\nmsgstr \"Vologodskaya oblast '\"\n\n#: ru/ru_regions.py:62\nmsgid \"Voronezhskaya oblast'\"\nmsgstr \"Voronezhskaya oblast '\"\n\n#: ru/ru_regions.py:63\nmsgid \"Ivanovskaya oblast'\"\nmsgstr \"Ivanovskaya Oblast '\"\n\n#: ru/ru_regions.py:64\nmsgid \"Irkutskaya oblast'\"\nmsgstr \"Irkutskaya Oblast '\"\n\n#: ru/ru_regions.py:65\nmsgid \"Kaliningradskaya oblast'\"\nmsgstr \"Kaliningradskaya Oblast '\"\n\n#: ru/ru_regions.py:66\nmsgid \"Kaluzhskaya oblast'\"\nmsgstr \"Kaluga Oblast '\"\n\n#: ru/ru_regions.py:67\nmsgid \"Kemerovskaya oblast'\"\nmsgstr \"Kemerovskaya Oblast '\"\n\n#: ru/ru_regions.py:68\nmsgid \"Kirovskaya oblast'\"\nmsgstr \"Kirovskaya Oblast '\"\n\n#: ru/ru_regions.py:69\nmsgid \"Kostromskaya oblast'\"\nmsgstr \"Kostromskaya Oblast '\"\n\n#: ru/ru_regions.py:70\nmsgid \"Kurganskaya oblast'\"\nmsgstr \"Kurganskaya oblast'\"\n\n#: ru/ru_regions.py:71\nmsgid \"Kurskaya oblast'\"\nmsgstr \"Kurskaya Oblast '\"\n\n#: ru/ru_regions.py:72\nmsgid \"Leningradskaya oblast'\"\nmsgstr \"Leningradskaya Oblast '\"\n\n#: ru/ru_regions.py:73\nmsgid \"Lipeckaya oblast'\"\nmsgstr \"Lipeckaya Oblast '\"\n\n#: ru/ru_regions.py:74\nmsgid \"Magadanskaya oblast'\"\nmsgstr \"Magadanskaya oblast '\"\n\n#: ru/ru_regions.py:75\nmsgid \"Murmanskaya oblast'\"\nmsgstr \"Murmanskaya oblast '\"\n\n#: ru/ru_regions.py:76\nmsgid \"Nizhegorodskaja oblast'\"\nmsgstr \"Nizhegorodskaja Oblast '\"\n\n#: ru/ru_regions.py:77\nmsgid \"Novgorodskaya oblast'\"\nmsgstr \"Novgorodskaya oblast '\"\n\n#: ru/ru_regions.py:78\nmsgid \"Novosibirskaya oblast'\"\nmsgstr \"Novosibirskaya oblast '\"\n\n#: ru/ru_regions.py:79\nmsgid \"Omskaya oblast'\"\nmsgstr \"Omskaya Oblast '\"\n\n#: ru/ru_regions.py:80\nmsgid \"Orenburgskaya oblast'\"\nmsgstr \"Orenburgskaya oblast '\"\n\n#: ru/ru_regions.py:81\nmsgid \"Orlovskaya oblast'\"\nmsgstr \"Orlovskaya oblast '\"\n\n#: ru/ru_regions.py:82\nmsgid \"Penzenskaya oblast'\"\nmsgstr \"Penzenskaya oblast '\"\n\n#: ru/ru_regions.py:83\nmsgid \"Pskovskaya oblast'\"\nmsgstr \"Pskovskaya oblast '\"\n\n#: ru/ru_regions.py:84\nmsgid \"Rostovskaya oblast'\"\nmsgstr \"Rostovskaya Oblast '\"\n\n#: ru/ru_regions.py:85\nmsgid \"Rjazanskaya oblast'\"\nmsgstr \"Rjazanskaya Oblast '\"\n\n#: ru/ru_regions.py:86\nmsgid \"Samarskaya oblast'\"\nmsgstr \"Samarskaya Oblast '\"\n\n#: ru/ru_regions.py:87\nmsgid \"Saratovskaya oblast'\"\nmsgstr \"Saratovskaya Oblast '\"\n\n#: ru/ru_regions.py:88\nmsgid \"Sakhalinskaya oblast'\"\nmsgstr \"Sakhalinskaya oblast '\"\n\n#: ru/ru_regions.py:89\nmsgid \"Sverdlovskaya oblast'\"\nmsgstr \"Sverdlovsk \\\"\"\n\n#: ru/ru_regions.py:90\nmsgid \"Smolenskaya oblast'\"\nmsgstr \"Smolensk '\"\n\n#: ru/ru_regions.py:91\nmsgid \"Tambovskaya oblast'\"\nmsgstr \"Tambovskaya oblast '\"\n\n#: ru/ru_regions.py:92\nmsgid \"Tverskaya oblast'\"\nmsgstr \"Tverskaya Oblast '\"\n\n#: ru/ru_regions.py:93\nmsgid \"Tomskaya oblast'\"\nmsgstr \"Tomskaya oblast '\"\n\n#: ru/ru_regions.py:94\nmsgid \"Tul'skaya oblast'\"\nmsgstr \"Tul'skaya oblast '\"\n\n#: ru/ru_regions.py:95\nmsgid \"Tyumenskaya oblast'\"\nmsgstr \"Tyumenskaya oblast '\"\n\n#: ru/ru_regions.py:96\nmsgid \"Ul'ianovskaya oblast'\"\nmsgstr \"Ul'ianovskaya Oblast '\"\n\n#: ru/ru_regions.py:97\nmsgid \"Chelyabinskaya oblast'\"\nmsgstr \"Chelyabinskaya Oblast '\"\n\n#: ru/ru_regions.py:98\nmsgid \"Yaroslavskaya oblast'\"\nmsgstr \"Yaroslavskaya Oblast '\"\n\n#: ru/ru_regions.py:99\nmsgid \"Evreyskaya avtonomnaja oblast'\"\nmsgstr \"Evreyskaya avtonomnaja Oblast '\"\n\n#: ru/ru_regions.py:100\nmsgid \"Neneckiy autonomnyy okrug\"\nmsgstr \"Neneckiy autonomnyy okrug\"\n\n#: ru/ru_regions.py:101\nmsgid \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\nmsgstr \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\n\n#: ru/ru_regions.py:102\nmsgid \"Chukotskiy avtonomnyy okrug\"\nmsgstr \"Chukotskiy avtonomnyy okrug\"\n\n#: ru/ru_regions.py:103\nmsgid \"Yamalo-Neneckiy avtonomnyy okrug\"\nmsgstr \"Yamalo-Neneckiy avtonomnyy okrug\"\n\n#: se/forms.py:54\nmsgid \"Enter a valid Swedish organisation number.\"\nmsgstr \"Introduzca un número de organización sueca válido.\"\n\n#: se/forms.py:111\nmsgid \"Enter a valid Swedish personal identity number.\"\nmsgstr \"Introduzca un número de identidad personal sueco válido.\"\n\n#: se/forms.py:112\nmsgid \"Co-ordination numbers are not allowed.\"\nmsgstr \"No se admiten número de Co-ordinación.\"\n\n#: se/forms.py:154\nmsgid \"Enter a Swedish postal code in the format XXXXX.\"\nmsgstr \"Introduzca un código postal en el formato XXXXX.\"\n\n#: se/se_counties.py:16\nmsgid \"Stockholm\"\nmsgstr \"Estocolmo\"\n\n#: se/se_counties.py:17\nmsgid \"Västerbotten\"\nmsgstr \"Västerbotten\"\n\n#: se/se_counties.py:18\nmsgid \"Norrbotten\"\nmsgstr \"Norrbotten\"\n\n#: se/se_counties.py:19\nmsgid \"Uppsala\"\nmsgstr \"Uppsala\"\n\n#: se/se_counties.py:20\nmsgid \"Södermanland\"\nmsgstr \"Södermanland\"\n\n#: se/se_counties.py:21\nmsgid \"Östergötland\"\nmsgstr \"Östergötland\"\n\n#: se/se_counties.py:22\nmsgid \"Jönköping\"\nmsgstr \"Jönköping\"\n\n#: se/se_counties.py:23\nmsgid \"Kronoberg\"\nmsgstr \"Kronoberg\"\n\n#: se/se_counties.py:24\nmsgid \"Kalmar\"\nmsgstr \"Kalmar\"\n\n#: se/se_counties.py:25\nmsgid \"Gotland\"\nmsgstr \"Gotland\"\n\n#: se/se_counties.py:26\nmsgid \"Blekinge\"\nmsgstr \"Blekinge\"\n\n#: se/se_counties.py:27\nmsgid \"Skåne\"\nmsgstr \"Skåne\"\n\n#: se/se_counties.py:28\nmsgid \"Halland\"\nmsgstr \"Halland\"\n\n#: se/se_counties.py:29\nmsgid \"Västra Götaland\"\nmsgstr \"Västra Götaland\"\n\n#: se/se_counties.py:30\nmsgid \"Värmland\"\nmsgstr \"Värmland\"\n\n#: se/se_counties.py:31\nmsgid \"Örebro\"\nmsgstr \"Örebro\"\n\n#: se/se_counties.py:32\nmsgid \"Västmanland\"\nmsgstr \"Västmanland\"\n\n#: se/se_counties.py:33\nmsgid \"Dalarna\"\nmsgstr \"Dalarna\"\n\n#: se/se_counties.py:34\nmsgid \"Gävleborg\"\nmsgstr \"Gävleborg\"\n\n#: se/se_counties.py:35\nmsgid \"Västernorrland\"\nmsgstr \"Västernorrland\"\n\n#: se/se_counties.py:36\nmsgid \"Jämtland\"\nmsgstr \"Jämtland\"\n\n#: si/forms.py:25\nmsgid \"The first 7 digits of the EMSO must represent a valid past date.\"\nmsgstr \"Los primeros 7 dígitos del EMSO deben representar un fecha válida.\"\n\n#: si/forms.py:26\nmsgid \"The EMSO is not valid.\"\nmsgstr \"El EMSO no es válido.\"\n\n#: si/forms.py:86\nmsgid \"Enter a valid tax number in form SIXXXXXXXX\"\nmsgstr \"Entre un número de identificación fiscal de la forma SIXXXXXXXX\"\n\n#: si/forms.py:151\nmsgid \"Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.\"\nmsgstr \"Entre un número de teléfonocon la forma  +386XXXXXXXX o 0XXXXXXXX.\"\n\n#: sk/sk_districts.py:8\nmsgid \"Banska Bystrica\"\nmsgstr \"Región de Bystrica\"\n\n#: sk/sk_districts.py:9\nmsgid \"Banska Stiavnica\"\nmsgstr \"Región de Banska Stiavnica\"\n\n#: sk/sk_districts.py:10\nmsgid \"Bardejov\"\nmsgstr \"Región de Bardejov\"\n\n#: sk/sk_districts.py:11\nmsgid \"Banovce nad Bebravou\"\nmsgstr \"Región de Banovce nad Bebravou\"\n\n#: sk/sk_districts.py:12\nmsgid \"Brezno\"\nmsgstr \"Región de Brezno\"\n\n#: sk/sk_districts.py:13\nmsgid \"Bratislava I\"\nmsgstr \"Región de Bratislava I\"\n\n#: sk/sk_districts.py:14\nmsgid \"Bratislava II\"\nmsgstr \"Región de Bratislava II\"\n\n#: sk/sk_districts.py:15\nmsgid \"Bratislava III\"\nmsgstr \"Región de Bratislava III\"\n\n#: sk/sk_districts.py:16\nmsgid \"Bratislava IV\"\nmsgstr \"Región de Bratislava IV\"\n\n#: sk/sk_districts.py:17\nmsgid \"Bratislava V\"\nmsgstr \"Región de Bratislava V\"\n\n#: sk/sk_districts.py:18\nmsgid \"Bytca\"\nmsgstr \"Región de Bytca\"\n\n#: sk/sk_districts.py:19\nmsgid \"Cadca\"\nmsgstr \"Región de Cadca\"\n\n#: sk/sk_districts.py:20\nmsgid \"Detva\"\nmsgstr \"Región de Detva\"\n\n#: sk/sk_districts.py:21\nmsgid \"Dolny Kubin\"\nmsgstr \"Región de Dolny Kubin\"\n\n#: sk/sk_districts.py:22\nmsgid \"Dunajska Streda\"\nmsgstr \"Región de Dunajska Streda\"\n\n#: sk/sk_districts.py:23\nmsgid \"Galanta\"\nmsgstr \"Galanta\"\n\n#: sk/sk_districts.py:24\nmsgid \"Gelnica\"\nmsgstr \"Gelnica\"\n\n#: sk/sk_districts.py:25\nmsgid \"Hlohovec\"\nmsgstr \"Hlohovec\"\n\n#: sk/sk_districts.py:26\nmsgid \"Humenne\"\nmsgstr \"Humenne\"\n\n#: sk/sk_districts.py:27\nmsgid \"Ilava\"\nmsgstr \"Ilava\"\n\n#: sk/sk_districts.py:28\nmsgid \"Kezmarok\"\nmsgstr \"Kezmarok\"\n\n#: sk/sk_districts.py:29\nmsgid \"Komarno\"\nmsgstr \"Komarno\"\n\n#: sk/sk_districts.py:30\nmsgid \"Kosice I\"\nmsgstr \"Kosice I\"\n\n#: sk/sk_districts.py:31\nmsgid \"Kosice II\"\nmsgstr \"Kosice II\"\n\n#: sk/sk_districts.py:32\nmsgid \"Kosice III\"\nmsgstr \"Kosice III\"\n\n#: sk/sk_districts.py:33\nmsgid \"Kosice IV\"\nmsgstr \"Kosice IV\"\n\n#: sk/sk_districts.py:34\nmsgid \"Kosice - okolie\"\nmsgstr \"Kosice - okolie\"\n\n#: sk/sk_districts.py:35\nmsgid \"Krupina\"\nmsgstr \"Krupina\"\n\n#: sk/sk_districts.py:36\nmsgid \"Kysucke Nove Mesto\"\nmsgstr \"Kysucke Nove Mesto\"\n\n#: sk/sk_districts.py:37\nmsgid \"Levice\"\nmsgstr \"Levice\"\n\n#: sk/sk_districts.py:38\nmsgid \"Levoca\"\nmsgstr \"Levoca\"\n\n#: sk/sk_districts.py:39\nmsgid \"Liptovsky Mikulas\"\nmsgstr \"Liptovsky Mikulas\"\n\n#: sk/sk_districts.py:40\nmsgid \"Lucenec\"\nmsgstr \"Lucenec\"\n\n#: sk/sk_districts.py:41\nmsgid \"Malacky\"\nmsgstr \"Malacky\"\n\n#: sk/sk_districts.py:42\nmsgid \"Martin\"\nmsgstr \"Martin\"\n\n#: sk/sk_districts.py:43\nmsgid \"Medzilaborce\"\nmsgstr \"Medzilaborce\"\n\n#: sk/sk_districts.py:44\nmsgid \"Michalovce\"\nmsgstr \"Michalovce\"\n\n#: sk/sk_districts.py:45\nmsgid \"Myjava\"\nmsgstr \"Myjava\"\n\n#: sk/sk_districts.py:46\nmsgid \"Namestovo\"\nmsgstr \"Namestovo\"\n\n#: sk/sk_districts.py:47\nmsgid \"Nitra\"\nmsgstr \"Nitra\"\n\n#: sk/sk_districts.py:48\nmsgid \"Nove Mesto nad Vahom\"\nmsgstr \"Nove Mesto nad Vahom\"\n\n#: sk/sk_districts.py:49\nmsgid \"Nove Zamky\"\nmsgstr \"Nove Zamky\"\n\n#: sk/sk_districts.py:50\nmsgid \"Partizanske\"\nmsgstr \"Partizanske\"\n\n#: sk/sk_districts.py:51\nmsgid \"Pezinok\"\nmsgstr \"Pezinok\"\n\n#: sk/sk_districts.py:52\nmsgid \"Piestany\"\nmsgstr \"Piestany\"\n\n#: sk/sk_districts.py:53\nmsgid \"Poltar\"\nmsgstr \"Poltar\"\n\n#: sk/sk_districts.py:54\nmsgid \"Poprad\"\nmsgstr \"Poprad\"\n\n#: sk/sk_districts.py:55\nmsgid \"Povazska Bystrica\"\nmsgstr \"Povazska Bystrica\"\n\n#: sk/sk_districts.py:56\nmsgid \"Presov\"\nmsgstr \"Presov\"\n\n#: sk/sk_districts.py:57\nmsgid \"Prievidza\"\nmsgstr \"Prievidza\"\n\n#: sk/sk_districts.py:58\nmsgid \"Puchov\"\nmsgstr \"Puchov\"\n\n#: sk/sk_districts.py:59\nmsgid \"Revuca\"\nmsgstr \"Revuca\"\n\n#: sk/sk_districts.py:60\nmsgid \"Rimavska Sobota\"\nmsgstr \"Rimavska Sobota\"\n\n#: sk/sk_districts.py:61\nmsgid \"Roznava\"\nmsgstr \"Roznava\"\n\n#: sk/sk_districts.py:62\nmsgid \"Ruzomberok\"\nmsgstr \"Ruzomberok\"\n\n#: sk/sk_districts.py:63\nmsgid \"Sabinov\"\nmsgstr \"Sabinov\"\n\n#: sk/sk_districts.py:64\nmsgid \"Senec\"\nmsgstr \"Senec\"\n\n#: sk/sk_districts.py:65\nmsgid \"Senica\"\nmsgstr \"Senica\"\n\n#: sk/sk_districts.py:66\nmsgid \"Skalica\"\nmsgstr \"Skalica\"\n\n#: sk/sk_districts.py:67\nmsgid \"Snina\"\nmsgstr \"Snina\"\n\n#: sk/sk_districts.py:68\nmsgid \"Sobrance\"\nmsgstr \"Sobrance\"\n\n#: sk/sk_districts.py:69\nmsgid \"Spisska Nova Ves\"\nmsgstr \"Spisska Nova Ves\"\n\n#: sk/sk_districts.py:70\nmsgid \"Stara Lubovna\"\nmsgstr \"Stara Lubovna\"\n\n#: sk/sk_districts.py:71\nmsgid \"Stropkov\"\nmsgstr \"Stropkov\"\n\n#: sk/sk_districts.py:72\nmsgid \"Svidnik\"\nmsgstr \"Svidnik\"\n\n#: sk/sk_districts.py:73\nmsgid \"Sala\"\nmsgstr \"Sala\"\n\n#: sk/sk_districts.py:74\nmsgid \"Topolcany\"\nmsgstr \"Topolcany\"\n\n#: sk/sk_districts.py:75\nmsgid \"Trebisov\"\nmsgstr \"Trebisov\"\n\n#: sk/sk_districts.py:76\nmsgid \"Trencin\"\nmsgstr \"Trencin\"\n\n#: sk/sk_districts.py:77\nmsgid \"Trnava\"\nmsgstr \"Trnava\"\n\n#: sk/sk_districts.py:78\nmsgid \"Turcianske Teplice\"\nmsgstr \"Turcianske Teplice\"\n\n#: sk/sk_districts.py:79\nmsgid \"Tvrdosin\"\nmsgstr \"Tvrdosin\"\n\n#: sk/sk_districts.py:80\nmsgid \"Velky Krtis\"\nmsgstr \"Velky Krtis\"\n\n#: sk/sk_districts.py:81\nmsgid \"Vranov nad Toplou\"\nmsgstr \"Vranov nad Toplou\"\n\n#: sk/sk_districts.py:82\nmsgid \"Zlate Moravce\"\nmsgstr \"Zlate Moravce\"\n\n#: sk/sk_districts.py:83\nmsgid \"Zvolen\"\nmsgstr \"Zvolen\"\n\n#: sk/sk_districts.py:84\nmsgid \"Zarnovica\"\nmsgstr \"Zarnovica\"\n\n#: sk/sk_districts.py:85\nmsgid \"Ziar nad Hronom\"\nmsgstr \"Ziar nad Hronom\"\n\n#: sk/sk_districts.py:86\nmsgid \"Zilina\"\nmsgstr \"Zilina\"\n\n#: sk/sk_regions.py:8\nmsgid \"Banska Bystrica region\"\nmsgstr \"Región de Banska Bystrica\"\n\n#: sk/sk_regions.py:9\nmsgid \"Bratislava region\"\nmsgstr \"Región de Bratislava\"\n\n#: sk/sk_regions.py:10\nmsgid \"Kosice region\"\nmsgstr \"Región de Kosice\"\n\n#: sk/sk_regions.py:11\nmsgid \"Nitra region\"\nmsgstr \"Región de Nitra\"\n\n#: sk/sk_regions.py:12\nmsgid \"Presov region\"\nmsgstr \"Región de Presov\"\n\n#: sk/sk_regions.py:13\nmsgid \"Trencin region\"\nmsgstr \"Región de Trencin\"\n\n#: sk/sk_regions.py:14\nmsgid \"Trnava region\"\nmsgstr \"Región de Trnava\"\n\n#: sk/sk_regions.py:15\nmsgid \"Zilina region\"\nmsgstr \"Región de Zilina\"\n\n#: tr/forms.py:21\nmsgid \"Enter a postal code in the format XXXXX.\"\nmsgstr \"Introduzca un código postal en el formato XXXXX\"\n\n#: tr/forms.py:42\nmsgid \"Phone numbers must be in 0XXX XXX XXXX format.\"\nmsgstr \"Los número de teléfono deben tener en el formato 0XXX XXX XXXX.\"\n\n#: tr/forms.py:69\nmsgid \"Enter a valid Turkish Identification number.\"\nmsgstr \"Introduzca un número de identificador turco válido.\"\n\n#: tr/forms.py:70\nmsgid \"Turkish Identification number must be 11 digits.\"\nmsgstr \"El número de identificación turco debe contener 11 dígitos.\"\n\n#: us/forms.py:21\nmsgid \"Enter a zip code in the format XXXXX or XXXXX-XXXX.\"\nmsgstr \"Introduzca un código postal en el formato XXXXX o XXXX-XXXX.\"\n\n#: us/forms.py:59\nmsgid \"Enter a valid U.S. Social Security number in XXX-XX-XXXX format.\"\nmsgstr \"\"\n\"Introduzca un Número Seguro Social de EEUU válido en el formato XXX-XX-XXXX\"\n\n#: us/forms.py:92\nmsgid \"Enter a U.S. state or territory.\"\nmsgstr \"Introduzca un estado o territorio de los EEUU.\"\n\n#: us/models.py:8\nmsgid \"U.S. state (two uppercase letters)\"\nmsgstr \"Estado de los EEUU (dos letras mayúsculas)\"\n\n#: us/models.py:17\nmsgid \"U.S. postal code (two uppercase letters)\"\nmsgstr \"Código postal de EE.UU. (dos letras mayúsculas)\"\n\n#: us/models.py:26\nmsgid \"Phone number\"\nmsgstr \"Número de teléfono\"\n\n#: uy/forms.py:29\nmsgid \"Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.\"\nmsgstr \"\"\n\"Introduzca un número de CI válido en el formato X.XXX.XXX-X,XXXXXXX-X o \"\n\"XXXXXXXX.\"\n\n#: uy/forms.py:31\nmsgid \"Enter a valid CI number.\"\nmsgstr \"Introduzca un número CI válido.\"\n\n#: za/forms.py:22\nmsgid \"Enter a valid South African ID number\"\nmsgstr \"Introduzca un ID surafricano válido\"\n\n#: za/forms.py:56\nmsgid \"Enter a valid South African postal code\"\nmsgstr \"Introduzca un código postal surafricano válido\"\n\n#: za/za_provinces.py:4\nmsgid \"Eastern Cape\"\nmsgstr \"Eastern Cape\"\n\n#: za/za_provinces.py:5\nmsgid \"Free State\"\nmsgstr \"Free State\"\n\n#: za/za_provinces.py:6\nmsgid \"Gauteng\"\nmsgstr \"Gauteng\"\n\n#: za/za_provinces.py:7\nmsgid \"KwaZulu-Natal\"\nmsgstr \"KwaZulu-Natal\"\n\n#: za/za_provinces.py:8\nmsgid \"Limpopo\"\nmsgstr \"Limpopo\"\n\n#: za/za_provinces.py:9\nmsgid \"Mpumalanga\"\nmsgstr \"Mpumalanga\"\n\n#: za/za_provinces.py:10\nmsgid \"Northern Cape\"\nmsgstr \"Northern Cape\"\n\n#: za/za_provinces.py:11\nmsgid \"North West\"\nmsgstr \"North West\"\n\n#: za/za_provinces.py:12\nmsgid \"Western Cape\"\nmsgstr \"Western Cape\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/locale/es_AR/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Ramiro Morales <cramm0@gmail.com>, 2011-2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-11-18 13:47+0000\\n\"\n\"Last-Translator: Ramiro Morales <cramm0@gmail.com>\\n\"\n\"Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/\"\n\"django/language/es_AR/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: es_AR\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: ar/forms.py:30\nmsgid \"Enter a postal code in the format NNNN or ANNNNAAA.\"\nmsgstr \"Introduzca un código postal en formato NNNN o ANNNNAAA.\"\n\n#: ar/forms.py:52 br/forms.py:95 br/forms.py:134 pe/forms.py:27 pe/forms.py:55\nmsgid \"This field requires only numbers.\"\nmsgstr \"Este campo sólo permite valores numéricos.\"\n\n#: ar/forms.py:53\nmsgid \"This field requires 7 or 8 digits.\"\nmsgstr \"Este campo requiere 7 u 8 dígitos.\"\n\n#: ar/forms.py:82\nmsgid \"Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.\"\nmsgstr \"Introduzca un CUIT válido en formato XX-XXXXXXXX-X o XXXXXXXXXXX.\"\n\n#: ar/forms.py:83\nmsgid \"Invalid CUIT.\"\nmsgstr \"CUIT inválido.\"\n\n#: ar/forms.py:84\nmsgid \"Invalid legal type. Type must be 27, 20, 23 or 30.\"\nmsgstr \"Tipo legal inválido. El tipo debe ser 27, 20, 23 o 30.\"\n\n#: at/at_states.py:5\nmsgid \"Burgenland\"\nmsgstr \"Burgenland\"\n\n#: at/at_states.py:6\nmsgid \"Carinthia\"\nmsgstr \"Carintia\"\n\n#: at/at_states.py:7\nmsgid \"Lower Austria\"\nmsgstr \"Baja Austria\"\n\n#: at/at_states.py:8\nmsgid \"Upper Austria\"\nmsgstr \"Alta Austria\"\n\n#: at/at_states.py:9\nmsgid \"Salzburg\"\nmsgstr \"Salzburgo\"\n\n#: at/at_states.py:10\nmsgid \"Styria\"\nmsgstr \"Estiria\"\n\n#: at/at_states.py:11\nmsgid \"Tyrol\"\nmsgstr \"Tirol\"\n\n#: at/at_states.py:12\nmsgid \"Vorarlberg\"\nmsgstr \"Vorarlberg\"\n\n#: at/at_states.py:13\nmsgid \"Vienna\"\nmsgstr \"Viena\"\n\n#: at/forms.py:22 ch/forms.py:22 no/forms.py:19\nmsgid \"Enter a zip code in the format XXXX.\"\nmsgstr \"Introduzca un zip code en formato XXXX.\"\n\n#: at/forms.py:50\nmsgid \"Enter a valid Austrian Social Security Number in XXXX XXXXXX format.\"\nmsgstr \"\"\n\"Introduzca un Número de Seguridad Social austríaco válido en formato XXXX \"\n\"XXXXXX.\"\n\n#: au/forms.py:26\nmsgid \"Enter a 4 digit postcode.\"\nmsgstr \"Introduzca un código postal de 4 dígitos.\"\n\n#: au/models.py:9\nmsgid \"Australian State\"\nmsgstr \"Estado australiano\"\n\n#: au/models.py:19\nmsgid \"Australian Postcode\"\nmsgstr \"Código postal de Australia\"\n\n#: au/models.py:33\nmsgid \"Australian Phone number\"\nmsgstr \"Número de teléfono de Australia\"\n\n#: be/be_provinces.py:5\nmsgid \"Antwerp\"\nmsgstr \"Amberes\"\n\n#: be/be_provinces.py:6\nmsgid \"Brussels\"\nmsgstr \"Bruselas\"\n\n#: be/be_provinces.py:7\nmsgid \"East Flanders\"\nmsgstr \"Flandes Oriental\"\n\n#: be/be_provinces.py:8\nmsgid \"Flemish Brabant\"\nmsgstr \"Brabante Flamenco\"\n\n#: be/be_provinces.py:9\nmsgid \"Hainaut\"\nmsgstr \"Henao\"\n\n#: be/be_provinces.py:10\nmsgid \"Liege\"\nmsgstr \"Lieja\"\n\n#: be/be_provinces.py:11 nl/nl_provinces.py:9\nmsgid \"Limburg\"\nmsgstr \"Limburgo\"\n\n#: be/be_provinces.py:12\nmsgid \"Luxembourg\"\nmsgstr \"Luxemburgo\"\n\n#: be/be_provinces.py:13\nmsgid \"Namur\"\nmsgstr \"Namur\"\n\n#: be/be_provinces.py:14\nmsgid \"Walloon Brabant\"\nmsgstr \"Brabante Valón\"\n\n#: be/be_provinces.py:15\nmsgid \"West Flanders\"\nmsgstr \"Flandes Occidental\"\n\n#: be/be_regions.py:5\nmsgid \"Brussels Capital Region\"\nmsgstr \"Región de Bruselas-Capital\"\n\n#: be/be_regions.py:6\nmsgid \"Flemish Region\"\nmsgstr \"Región Flamenca\"\n\n#: be/be_regions.py:7\nmsgid \"Wallonia\"\nmsgstr \"Valonia\"\n\n#: be/forms.py:25\nmsgid \"Enter a valid postal code in the range and format 1XXX - 9XXX.\"\nmsgstr \"\"\n\"Introduzca un código postal válido con el rango y el formato 1XXX - 9XXX.\"\n\n#: be/forms.py:48\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\nmsgstr \"\"\n\"Introduzca un número telefónico en uno de los formatos 0x xxx xx xx, 0xx xx \"\n\"xx xx, 04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.\"\n\"xx, 0xx.xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx ó 04xxxxxxxx.\"\n\n#: br/forms.py:22\nmsgid \"Enter a zip code in the format XXXXX-XXX.\"\nmsgstr \"Introduzca un zip code en formato XXXXX-XXX.\"\n\n#: br/forms.py:31\nmsgid \"Phone numbers must be in XX-XXXX-XXXX format.\"\nmsgstr \"Los números telefónicos deben respetar el formato XX-XXXX-XXXX.\"\n\n#: br/forms.py:58\nmsgid \"\"\n\"Select a valid brazilian state. That state is not one of the available \"\n\"states.\"\nmsgstr \"\"\n\"Seleccione un estado Brasileño válido. Ese estado no es uno de los estados \"\n\"disponibles.\"\n\n#: br/forms.py:93\nmsgid \"Invalid CPF number.\"\nmsgstr \"Número CPF inválido.\"\n\n#: br/forms.py:94\nmsgid \"This field requires at most 11 digits or 14 characters.\"\nmsgstr \"Este campo requiere como máximo 11 dígitos o 14 caracteres.\"\n\n#: br/forms.py:133\nmsgid \"Invalid CNPJ number.\"\nmsgstr \"Número CNPJ inválido.\"\n\n#: br/forms.py:135\nmsgid \"This field requires at least 14 digits\"\nmsgstr \"Este campo requiere al menos 14 dígitos.\"\n\n#: ca/forms.py:29\nmsgid \"Enter a postal code in the format XXX XXX.\"\nmsgstr \"Introduzca un código postal en formato XXX XXX.\"\n\n#: ca/forms.py:47 us/forms.py:30\nmsgid \"Phone numbers must be in XXX-XXX-XXXX format.\"\nmsgstr \"Los números telefónicos deben respetar el formato XXX-XXX-XXXX.\"\n\n#: ca/forms.py:69\nmsgid \"Enter a Canadian province or territory.\"\nmsgstr \"Introduzca una provincia o territorio canadiense.\"\n\n#: ca/forms.py:110\nmsgid \"Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.\"\nmsgstr \"\"\n\"Introduzca un Número de Seguridad Social Canadiense válido en formato XXX-\"\n\"XXX-XXX.\"\n\n#: ch/ch_states.py:5\nmsgid \"Aargau\"\nmsgstr \"Aargau\"\n\n#: ch/ch_states.py:6\nmsgid \"Appenzell Innerrhoden\"\nmsgstr \"Appenzell Innerrhoden\"\n\n#: ch/ch_states.py:7\nmsgid \"Appenzell Ausserrhoden\"\nmsgstr \"Appenzell Ausserrhoden\"\n\n#: ch/ch_states.py:8\nmsgid \"Basel-Stadt\"\nmsgstr \"Basel-Stadt\"\n\n#: ch/ch_states.py:9\nmsgid \"Basel-Land\"\nmsgstr \"Basel-Land\"\n\n#: ch/ch_states.py:10\nmsgid \"Berne\"\nmsgstr \"Berne\"\n\n#: ch/ch_states.py:11\nmsgid \"Fribourg\"\nmsgstr \"Fribourg\"\n\n#: ch/ch_states.py:12\nmsgid \"Geneva\"\nmsgstr \"Geneva\"\n\n#: ch/ch_states.py:13\nmsgid \"Glarus\"\nmsgstr \"Glarus\"\n\n#: ch/ch_states.py:14\nmsgid \"Graubuenden\"\nmsgstr \"Graubuenden\"\n\n#: ch/ch_states.py:15\nmsgid \"Jura\"\nmsgstr \"Jura\"\n\n#: ch/ch_states.py:16\nmsgid \"Lucerne\"\nmsgstr \"Lucerne\"\n\n#: ch/ch_states.py:17\nmsgid \"Neuchatel\"\nmsgstr \"Neuchatel\"\n\n#: ch/ch_states.py:18\nmsgid \"Nidwalden\"\nmsgstr \"Nidwalden\"\n\n#: ch/ch_states.py:19\nmsgid \"Obwalden\"\nmsgstr \"Obwalden\"\n\n#: ch/ch_states.py:20\nmsgid \"Schaffhausen\"\nmsgstr \"Schaffhausen\"\n\n#: ch/ch_states.py:21\nmsgid \"Schwyz\"\nmsgstr \"Schwyz\"\n\n#: ch/ch_states.py:22\nmsgid \"Solothurn\"\nmsgstr \"Solothurn\"\n\n#: ch/ch_states.py:23\nmsgid \"St. Gallen\"\nmsgstr \"St. Gallen\"\n\n#: ch/ch_states.py:24\nmsgid \"Thurgau\"\nmsgstr \"Thurgau\"\n\n#: ch/ch_states.py:25\nmsgid \"Ticino\"\nmsgstr \"Ticino\"\n\n#: ch/ch_states.py:26\nmsgid \"Uri\"\nmsgstr \"Uri\"\n\n#: ch/ch_states.py:27\nmsgid \"Valais\"\nmsgstr \"Valais\"\n\n#: ch/ch_states.py:28\nmsgid \"Vaud\"\nmsgstr \"Vaud\"\n\n#: ch/ch_states.py:29\nmsgid \"Zug\"\nmsgstr \"Zug\"\n\n#: ch/ch_states.py:30\nmsgid \"Zurich\"\nmsgstr \"Zurich\"\n\n#: ch/forms.py:37\nmsgid \"Phone numbers must be in 0XX XXX XX XX format.\"\nmsgstr \"Los números telefónicosdeben tener el formato 0XX XXX XX XX.\"\n\n#: ch/forms.py:68\nmsgid \"\"\n\"Enter a valid Swiss identity or passport card number in X1234567<0 or \"\n\"1234567890 format.\"\nmsgstr \"\"\n\"Introduzca un número válido de tarjeta de identidad o pasaporte Suizos en \"\n\"formato X1234567<0 o 1234567890.\"\n\n#: cl/forms.py:32\nmsgid \"Enter a valid Chilean RUT.\"\nmsgstr \"Introduzca un RUT chileno válido.\"\n\n#: cl/forms.py:33\nmsgid \"Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.\"\nmsgstr \"Introduzca un RUT chileno válido. EL formato es XX.XXX.XXX-X.\"\n\n#: cl/forms.py:34\nmsgid \"The Chilean RUT is not valid.\"\nmsgstr \"El RUT chileno no es válido.\"\n\n#: cn/forms.py:84\nmsgid \"Enter a post code in the format XXXXXX.\"\nmsgstr \"Introduzca un código postal en el formato XXXXXX.\"\n\n#: cn/forms.py:105\nmsgid \"ID Card Number consists of 15 or 18 digits.\"\nmsgstr \"\"\n\"Identificación de número de tarjetas que se compone de 15 o 18 dígitos.\"\n\n#: cn/forms.py:106\nmsgid \"Invalid ID Card Number: Wrong checksum\"\nmsgstr \"\"\n\"número de Identificación digital inválido: Suma de comprobación incorrecta\"\n\n#: cn/forms.py:107\nmsgid \"Invalid ID Card Number: Wrong birthdate\"\nmsgstr \"\"\n\"Número de Identificación digital inválido: Fecha de nacimiento incorrecta\"\n\n#: cn/forms.py:108\nmsgid \"Invalid ID Card Number: Wrong location code\"\nmsgstr \"Número de Identificación digital inválido: Código de Ubicación errónea\"\n\n#: cn/forms.py:193\nmsgid \"Enter a valid phone number.\"\nmsgstr \"Introduzca un número de teléfono válido.\"\n\n#: cn/forms.py:210\nmsgid \"Enter a valid cell number.\"\nmsgstr \"Introduzca un número celular/movil válido.\"\n\n#: cz/cz_regions.py:8\nmsgid \"Prague\"\nmsgstr \"Praga\"\n\n#: cz/cz_regions.py:9\nmsgid \"Central Bohemian Region\"\nmsgstr \"región Bohemia Central\"\n\n#: cz/cz_regions.py:10\nmsgid \"South Bohemian Region\"\nmsgstr \"región Bohemia Meridional\"\n\n#: cz/cz_regions.py:11\nmsgid \"Pilsen Region\"\nmsgstr \"región Pilsen\"\n\n#: cz/cz_regions.py:12\nmsgid \"Carlsbad Region\"\nmsgstr \"región Karlovy Vary\"\n\n#: cz/cz_regions.py:13\nmsgid \"Usti Region\"\nmsgstr \"región Ústí nad Labem\"\n\n#: cz/cz_regions.py:14\nmsgid \"Liberec Region\"\nmsgstr \"región Liberec\"\n\n#: cz/cz_regions.py:15\nmsgid \"Hradec Region\"\nmsgstr \"región Hradec Králové\"\n\n#: cz/cz_regions.py:16\nmsgid \"Pardubice Region\"\nmsgstr \"región Pardubice\"\n\n#: cz/cz_regions.py:17\nmsgid \"Vysocina Region\"\nmsgstr \"región Vysočina\"\n\n#: cz/cz_regions.py:18\nmsgid \"South Moravian Region\"\nmsgstr \"región Moravia Meridional\"\n\n#: cz/cz_regions.py:19\nmsgid \"Olomouc Region\"\nmsgstr \"región Olomouc\"\n\n#: cz/cz_regions.py:20\nmsgid \"Zlin Region\"\nmsgstr \"región Zlín\"\n\n#: cz/cz_regions.py:21\nmsgid \"Moravian-Silesian Region\"\nmsgstr \"región Moravia-Silesia\"\n\n#: cz/forms.py:32 sk/forms.py:33\nmsgid \"Enter a postal code in the format XXXXX or XXX XX.\"\nmsgstr \"Introduzca un código postal en formato XXXXX o XXX XX.\"\n\n#: cz/forms.py:52\nmsgid \"Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.\"\nmsgstr \"\"\n\"Introduzca un número de nacimiento en formato XXXXXX/XXXX o XXXXXXXXXX.\"\n\n#: cz/forms.py:53\nmsgid \"Enter a valid birth number.\"\nmsgstr \"Introduzca un número de nacimiento válido.\"\n\n#: cz/forms.py:102\nmsgid \"Enter a valid IC number.\"\nmsgstr \"Introduzca un número IC válido.\"\n\n#: de/de_states.py:5\nmsgid \"Baden-Wuerttemberg\"\nmsgstr \"Baden-Wuerttemberg\"\n\n#: de/de_states.py:6\nmsgid \"Bavaria\"\nmsgstr \"Bavaria\"\n\n#: de/de_states.py:7\nmsgid \"Berlin\"\nmsgstr \"Berlín\"\n\n#: de/de_states.py:8\nmsgid \"Brandenburg\"\nmsgstr \"Brandenburgo\"\n\n#: de/de_states.py:9\nmsgid \"Bremen\"\nmsgstr \"Bremen\"\n\n#: de/de_states.py:10\nmsgid \"Hamburg\"\nmsgstr \"Hamburg\"\n\n#: de/de_states.py:11\nmsgid \"Hessen\"\nmsgstr \"Hessen\"\n\n#: de/de_states.py:12\nmsgid \"Mecklenburg-Western Pomerania\"\nmsgstr \"Mecklenburg-Western Pomerania\"\n\n#: de/de_states.py:13\nmsgid \"Lower Saxony\"\nmsgstr \"Lower Saxony\"\n\n#: de/de_states.py:14\nmsgid \"North Rhine-Westphalia\"\nmsgstr \"Renania septentrional-Westfalia\"\n\n#: de/de_states.py:15\nmsgid \"Rhineland-Palatinate\"\nmsgstr \"Rhineland-Palatinate\"\n\n#: de/de_states.py:16\nmsgid \"Saarland\"\nmsgstr \"Saarland\"\n\n#: de/de_states.py:17\nmsgid \"Saxony\"\nmsgstr \"Saxony\"\n\n#: de/de_states.py:18\nmsgid \"Saxony-Anhalt\"\nmsgstr \"Saxony-Anhalt\"\n\n#: de/de_states.py:19\nmsgid \"Schleswig-Holstein\"\nmsgstr \"Schleswig-Holstein\"\n\n#: de/de_states.py:20\nmsgid \"Thuringia\"\nmsgstr \"Thuringia\"\n\n#: de/forms.py:20 fi/forms.py:18 fr/forms.py:20\nmsgid \"Enter a zip code in the format XXXXX.\"\nmsgstr \"Introduzca un zip code en formato XXXXX.\"\n\n#: de/forms.py:46\nmsgid \"\"\n\"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"format.\"\nmsgstr \"\"\n\"Introduzca un número de tarjeta de identidad alemán válido en formato \"\n\"XXXXXXXXXXX-XXXXXXX-XXXXXXX-X.\"\n\n#: es/es_provinces.py:5\nmsgid \"Araba\"\nmsgstr \"Álava\"\n\n#: es/es_provinces.py:6\nmsgid \"Albacete\"\nmsgstr \"Albacete\"\n\n#: es/es_provinces.py:7\nmsgid \"Alacant\"\nmsgstr \"Alicante\"\n\n#: es/es_provinces.py:8\nmsgid \"Almeria\"\nmsgstr \"Almería\"\n\n#: es/es_provinces.py:9\nmsgid \"Avila\"\nmsgstr \"Ávila\"\n\n#: es/es_provinces.py:10\nmsgid \"Badajoz\"\nmsgstr \"Badajoz\"\n\n#: es/es_provinces.py:11\nmsgid \"Illes Balears\"\nmsgstr \"Islas Baleares\"\n\n#: es/es_provinces.py:12\nmsgid \"Barcelona\"\nmsgstr \"Barcelona\"\n\n#: es/es_provinces.py:13\nmsgid \"Burgos\"\nmsgstr \"Burgos\"\n\n#: es/es_provinces.py:14\nmsgid \"Caceres\"\nmsgstr \"Cáceres\"\n\n#: es/es_provinces.py:15\nmsgid \"Cadiz\"\nmsgstr \"Cádiz\"\n\n#: es/es_provinces.py:16\nmsgid \"Castello\"\nmsgstr \"Castellón\"\n\n#: es/es_provinces.py:17\nmsgid \"Ciudad Real\"\nmsgstr \"Ciudad Real\"\n\n#: es/es_provinces.py:18\nmsgid \"Cordoba\"\nmsgstr \"Córdoba\"\n\n#: es/es_provinces.py:19\nmsgid \"A Coruna\"\nmsgstr \"La Coruña\"\n\n#: es/es_provinces.py:20\nmsgid \"Cuenca\"\nmsgstr \"Cuenca\"\n\n#: es/es_provinces.py:21\nmsgid \"Girona\"\nmsgstr \"Gerona\"\n\n#: es/es_provinces.py:22\nmsgid \"Granada\"\nmsgstr \"Granada\"\n\n#: es/es_provinces.py:23\nmsgid \"Guadalajara\"\nmsgstr \"Guadalajara\"\n\n#: es/es_provinces.py:24\nmsgid \"Guipuzkoa\"\nmsgstr \"Guipúzcoa\"\n\n#: es/es_provinces.py:25\nmsgid \"Huelva\"\nmsgstr \"Huelva\"\n\n#: es/es_provinces.py:26\nmsgid \"Huesca\"\nmsgstr \"Huesca\"\n\n#: es/es_provinces.py:27\nmsgid \"Jaen\"\nmsgstr \"Jaén\"\n\n#: es/es_provinces.py:28\nmsgid \"Leon\"\nmsgstr \"León\"\n\n#: es/es_provinces.py:29\nmsgid \"Lleida\"\nmsgstr \"Lérida\"\n\n#: es/es_provinces.py:30 es/es_regions.py:17\nmsgid \"La Rioja\"\nmsgstr \"La Rioja\"\n\n#: es/es_provinces.py:31\nmsgid \"Lugo\"\nmsgstr \"Lugo\"\n\n#: es/es_provinces.py:32 es/es_regions.py:18\nmsgid \"Madrid\"\nmsgstr \"Madrid\"\n\n#: es/es_provinces.py:33\nmsgid \"Malaga\"\nmsgstr \"Málaga\"\n\n#: es/es_provinces.py:34\nmsgid \"Murcia\"\nmsgstr \"Murcia\"\n\n#: es/es_provinces.py:35\nmsgid \"Navarre\"\nmsgstr \"Navarra\"\n\n#: es/es_provinces.py:36\nmsgid \"Ourense\"\nmsgstr \"Orense\"\n\n#: es/es_provinces.py:37\nmsgid \"Asturias\"\nmsgstr \"Asturias\"\n\n#: es/es_provinces.py:38\nmsgid \"Palencia\"\nmsgstr \"Palencia\"\n\n#: es/es_provinces.py:39\nmsgid \"Las Palmas\"\nmsgstr \"Las Palmas\"\n\n#: es/es_provinces.py:40\nmsgid \"Pontevedra\"\nmsgstr \"Pontevedra\"\n\n#: es/es_provinces.py:41\nmsgid \"Salamanca\"\nmsgstr \"Salamanca\"\n\n#: es/es_provinces.py:42\nmsgid \"Santa Cruz de Tenerife\"\nmsgstr \"Santa Cruz de Tenerife\"\n\n#: es/es_provinces.py:43 es/es_regions.py:11\nmsgid \"Cantabria\"\nmsgstr \"Cantabria\"\n\n#: es/es_provinces.py:44\nmsgid \"Segovia\"\nmsgstr \"Segovia\"\n\n#: es/es_provinces.py:45\nmsgid \"Seville\"\nmsgstr \"Sevilla\"\n\n#: es/es_provinces.py:46\nmsgid \"Soria\"\nmsgstr \"Soria\"\n\n#: es/es_provinces.py:47\nmsgid \"Tarragona\"\nmsgstr \"Tarragona\"\n\n#: es/es_provinces.py:48\nmsgid \"Teruel\"\nmsgstr \"Teruel\"\n\n#: es/es_provinces.py:49\nmsgid \"Toledo\"\nmsgstr \"Toledo\"\n\n#: es/es_provinces.py:50\nmsgid \"Valencia\"\nmsgstr \"Valencia\"\n\n#: es/es_provinces.py:51\nmsgid \"Valladolid\"\nmsgstr \"Valladolid\"\n\n#: es/es_provinces.py:52\nmsgid \"Bizkaia\"\nmsgstr \"Vizcaya\"\n\n#: es/es_provinces.py:53\nmsgid \"Zamora\"\nmsgstr \"Zamora\"\n\n#: es/es_provinces.py:54\nmsgid \"Zaragoza\"\nmsgstr \"Zaragoza\"\n\n#: es/es_provinces.py:55\nmsgid \"Ceuta\"\nmsgstr \"Ceuta\"\n\n#: es/es_provinces.py:56\nmsgid \"Melilla\"\nmsgstr \"Melilla\"\n\n#: es/es_regions.py:5\nmsgid \"Andalusia\"\nmsgstr \"Andalucía\"\n\n#: es/es_regions.py:6\nmsgid \"Aragon\"\nmsgstr \"Aragón\"\n\n#: es/es_regions.py:7\nmsgid \"Principality of Asturias\"\nmsgstr \"Principado de Asturias\"\n\n#: es/es_regions.py:8\nmsgid \"Balearic Islands\"\nmsgstr \"Islas Baleares\"\n\n#: es/es_regions.py:9\nmsgid \"Basque Country\"\nmsgstr \"País Vasco\"\n\n#: es/es_regions.py:10\nmsgid \"Canary Islands\"\nmsgstr \"Islas Canarias\"\n\n#: es/es_regions.py:12\nmsgid \"Castile-La Mancha\"\nmsgstr \"Castilla-La Mancha\"\n\n#: es/es_regions.py:13\nmsgid \"Castile and Leon\"\nmsgstr \"Castilla y León\"\n\n#: es/es_regions.py:14\nmsgid \"Catalonia\"\nmsgstr \"Cataluña\"\n\n#: es/es_regions.py:15\nmsgid \"Extremadura\"\nmsgstr \"Extremadura\"\n\n#: es/es_regions.py:16\nmsgid \"Galicia\"\nmsgstr \"Galicia\"\n\n#: es/es_regions.py:19\nmsgid \"Region of Murcia\"\nmsgstr \"Región de Murcia\"\n\n#: es/es_regions.py:20\nmsgid \"Foral Community of Navarre\"\nmsgstr \"Comunidad Foral de Navarra\"\n\n#: es/es_regions.py:21\nmsgid \"Valencian Community\"\nmsgstr \"Comunidad Valenciana\"\n\n#: es/forms.py:26\nmsgid \"Enter a valid postal code in the range and format 01XXX - 52XXX.\"\nmsgstr \"\"\n\"Introduzca un código postal en el siguiente rango y con el siguiente \"\n\"formato: 01XXX - 52XXX.\"\n\n#: es/forms.py:46\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or \"\n\"9XXXXXXXX.\"\nmsgstr \"\"\n\"Introduzca un número telefónico en uno de los siguientes formatos: \"\n\"6XXXXXXXX, 8XXXXXXXX o 9XXXXXXXX.\"\n\n#: es/forms.py:73\nmsgid \"Please enter a valid NIF, NIE, or CIF.\"\nmsgstr \"Por favor introduzca un NIF, NIE o CIF válidos.\"\n\n#: es/forms.py:74\nmsgid \"Please enter a valid NIF or NIE.\"\nmsgstr \"Por favor, introduzca un NIF o CIE válidos.\"\n\n#: es/forms.py:75\nmsgid \"Invalid checksum for NIF.\"\nmsgstr \"Código de verificación de NIF inválido.\"\n\n#: es/forms.py:76\nmsgid \"Invalid checksum for NIE.\"\nmsgstr \"Código de verificación de NIE inválido.\"\n\n#: es/forms.py:77\nmsgid \"Invalid checksum for CIF.\"\nmsgstr \"Código de verificación de CIF inválido.\"\n\n#: es/forms.py:149\nmsgid \"\"\n\"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.\"\nmsgstr \"\"\n\"Por favor introduzca un número de cuenta bancaria válido en formato XXXX-\"\n\"XXXX-XX-XXXXXXXXXX.\"\n\n#: es/forms.py:150\nmsgid \"Invalid checksum for bank account number.\"\nmsgstr \"Código de verificación de número de cuenta bancaria inválido.\"\n\n#: fi/forms.py:33\nmsgid \"Enter a valid Finnish social security number.\"\nmsgstr \"Introduzca un número de seguridad social finlandés válido.\"\n\n#: fr/forms.py:35\nmsgid \"Phone numbers must be in 0X XX XX XX XX format.\"\nmsgstr \"Los números telefónicos deben respetar el formato 0X XX XX XX XX.\"\n\n#: gb/forms.py:25\nmsgid \"Enter a valid postcode.\"\nmsgstr \"Introduzca un postcode válido.\"\n\n#: gb/gb_regions.py:11\nmsgid \"Bedfordshire\"\nmsgstr \"Bedfordshire\"\n\n#: gb/gb_regions.py:12\nmsgid \"Buckinghamshire\"\nmsgstr \"Buckinghamshire\"\n\n#: gb/gb_regions.py:14\nmsgid \"Cheshire\"\nmsgstr \"Cheshire\"\n\n#: gb/gb_regions.py:15\nmsgid \"Cornwall and Isles of Scilly\"\nmsgstr \"Cornwall e Islas de Scilly\"\n\n#: gb/gb_regions.py:16\nmsgid \"Cumbria\"\nmsgstr \"Cumbria\"\n\n#: gb/gb_regions.py:17\nmsgid \"Derbyshire\"\nmsgstr \"Derbyshire\"\n\n#: gb/gb_regions.py:18\nmsgid \"Devon\"\nmsgstr \"Devon\"\n\n#: gb/gb_regions.py:19\nmsgid \"Dorset\"\nmsgstr \"Dorset\"\n\n#: gb/gb_regions.py:20\nmsgid \"Durham\"\nmsgstr \"Durham\"\n\n#: gb/gb_regions.py:21\nmsgid \"East Sussex\"\nmsgstr \"East Sussex\"\n\n#: gb/gb_regions.py:22\nmsgid \"Essex\"\nmsgstr \"Essex\"\n\n#: gb/gb_regions.py:23\nmsgid \"Gloucestershire\"\nmsgstr \"Gloucestershire\"\n\n#: gb/gb_regions.py:24\nmsgid \"Greater London\"\nmsgstr \"Greater London\"\n\n#: gb/gb_regions.py:25\nmsgid \"Greater Manchester\"\nmsgstr \"Greater Manchester\"\n\n#: gb/gb_regions.py:26\nmsgid \"Hampshire\"\nmsgstr \"Hampshire\"\n\n#: gb/gb_regions.py:27\nmsgid \"Hertfordshire\"\nmsgstr \"Hertfordshire\"\n\n#: gb/gb_regions.py:28\nmsgid \"Kent\"\nmsgstr \"Kent\"\n\n#: gb/gb_regions.py:29\nmsgid \"Lancashire\"\nmsgstr \"Lancashire\"\n\n#: gb/gb_regions.py:30\nmsgid \"Leicestershire\"\nmsgstr \"Leicestershire\"\n\n#: gb/gb_regions.py:31\nmsgid \"Lincolnshire\"\nmsgstr \"Lincolnshire\"\n\n#: gb/gb_regions.py:32\nmsgid \"Merseyside\"\nmsgstr \"Merseyside\"\n\n#: gb/gb_regions.py:33\nmsgid \"Norfolk\"\nmsgstr \"Norfolk\"\n\n#: gb/gb_regions.py:34\nmsgid \"North Yorkshire\"\nmsgstr \"North Yorkshire\"\n\n#: gb/gb_regions.py:35\nmsgid \"Northamptonshire\"\nmsgstr \"Northamptonshire\"\n\n#: gb/gb_regions.py:36\nmsgid \"Northumberland\"\nmsgstr \"Northumberland\"\n\n#: gb/gb_regions.py:37\nmsgid \"Nottinghamshire\"\nmsgstr \"Nottinghamshire\"\n\n#: gb/gb_regions.py:38\nmsgid \"Oxfordshire\"\nmsgstr \"Oxfordshire\"\n\n#: gb/gb_regions.py:39\nmsgid \"Shropshire\"\nmsgstr \"Shropshire\"\n\n#: gb/gb_regions.py:40\nmsgid \"Somerset\"\nmsgstr \"Somerset\"\n\n#: gb/gb_regions.py:41\nmsgid \"South Yorkshire\"\nmsgstr \"South Yorkshire\"\n\n#: gb/gb_regions.py:42\nmsgid \"Staffordshire\"\nmsgstr \"Staffordshire\"\n\n#: gb/gb_regions.py:43\nmsgid \"Suffolk\"\nmsgstr \"Suffolk\"\n\n#: gb/gb_regions.py:44\nmsgid \"Surrey\"\nmsgstr \"Surrey\"\n\n#: gb/gb_regions.py:45\nmsgid \"Tyne and Wear\"\nmsgstr \"Tyne and Wear\"\n\n#: gb/gb_regions.py:46\nmsgid \"Warwickshire\"\nmsgstr \"Warwickshire\"\n\n#: gb/gb_regions.py:47\nmsgid \"West Midlands\"\nmsgstr \"West Midlands\"\n\n#: gb/gb_regions.py:48\nmsgid \"West Sussex\"\nmsgstr \"West Sussex\"\n\n#: gb/gb_regions.py:49\nmsgid \"West Yorkshire\"\nmsgstr \"West Yorkshire\"\n\n#: gb/gb_regions.py:50\nmsgid \"Wiltshire\"\nmsgstr \"Wiltshire\"\n\n#: gb/gb_regions.py:51\nmsgid \"Worcestershire\"\nmsgstr \"Worcestershire\"\n\n#: gb/gb_regions.py:55\nmsgid \"County Antrim\"\nmsgstr \"County Antrim\"\n\n#: gb/gb_regions.py:56\nmsgid \"County Armagh\"\nmsgstr \"County Armagh\"\n\n#: gb/gb_regions.py:57\nmsgid \"County Down\"\nmsgstr \"County Down\"\n\n#: gb/gb_regions.py:58\nmsgid \"County Fermanagh\"\nmsgstr \"County Fermarmagh\"\n\n#: gb/gb_regions.py:59\nmsgid \"County Londonderry\"\nmsgstr \"County Londonderry\"\n\n#: gb/gb_regions.py:60\nmsgid \"County Tyrone\"\nmsgstr \"County Tyrone\"\n\n#: gb/gb_regions.py:64\nmsgid \"Clwyd\"\nmsgstr \"Clwyd\"\n\n#: gb/gb_regions.py:65\nmsgid \"Dyfed\"\nmsgstr \"Dyfed\"\n\n#: gb/gb_regions.py:66\nmsgid \"Gwent\"\nmsgstr \"Gwent\"\n\n#: gb/gb_regions.py:67\nmsgid \"Gwynedd\"\nmsgstr \"Gwynedd\"\n\n#: gb/gb_regions.py:68\nmsgid \"Mid Glamorgan\"\nmsgstr \"Mid Glamorgan\"\n\n#: gb/gb_regions.py:69\nmsgid \"Powys\"\nmsgstr \"Powys\"\n\n#: gb/gb_regions.py:70\nmsgid \"South Glamorgan\"\nmsgstr \"South Glamorgan\"\n\n#: gb/gb_regions.py:71\nmsgid \"West Glamorgan\"\nmsgstr \"West Glamorgan\"\n\n#: gb/gb_regions.py:75\nmsgid \"Borders\"\nmsgstr \"Borders\"\n\n#: gb/gb_regions.py:76\nmsgid \"Central Scotland\"\nmsgstr \"Escocia Central\"\n\n#: gb/gb_regions.py:77\nmsgid \"Dumfries and Galloway\"\nmsgstr \"Dumfries and Galloway\"\n\n#: gb/gb_regions.py:78\nmsgid \"Fife\"\nmsgstr \"Fife\"\n\n#: gb/gb_regions.py:79\nmsgid \"Grampian\"\nmsgstr \"Grampian\"\n\n#: gb/gb_regions.py:80\nmsgid \"Highland\"\nmsgstr \"Highland\"\n\n#: gb/gb_regions.py:81\nmsgid \"Lothian\"\nmsgstr \"Lothian\"\n\n#: gb/gb_regions.py:82\nmsgid \"Orkney Islands\"\nmsgstr \"Orkney Islands\"\n\n#: gb/gb_regions.py:83\nmsgid \"Shetland Islands\"\nmsgstr \"Shetland Islands\"\n\n#: gb/gb_regions.py:84\nmsgid \"Strathclyde\"\nmsgstr \"Strathclyde\"\n\n#: gb/gb_regions.py:85\nmsgid \"Tayside\"\nmsgstr \"Tayside\"\n\n#: gb/gb_regions.py:86\nmsgid \"Western Isles\"\nmsgstr \"Western Isles\"\n\n#: gb/gb_regions.py:90\nmsgid \"England\"\nmsgstr \"Inglaterra\"\n\n#: gb/gb_regions.py:91\nmsgid \"Northern Ireland\"\nmsgstr \"Irlanda del Norte\"\n\n#: gb/gb_regions.py:92\nmsgid \"Scotland\"\nmsgstr \"Escocia\"\n\n#: gb/gb_regions.py:93\nmsgid \"Wales\"\nmsgstr \"Gales\"\n\n#: hk/forms.py:37\n#, python-format\nmsgid \"Phone number should not start with one of the followings: %s.\"\nmsgstr \"\"\n\"Los números telefónicos no deben comenzar con ninguno de los siguientes \"\n\"prefijos: %s.\"\n\n#: hk/forms.py:40\n#, python-format\nmsgid \"Phone number must be in one of the following formats: %s.\"\nmsgstr \"\"\n\"Los números telefónicos deben tener uno de los siguientes formatos: %s.\"\n\n#: hk/forms.py:42\n#, python-format\nmsgid \"Phone number should start with one of the followings: %s.\"\nmsgstr \"\"\n\"Los números telefónicos deben comenzar con ninguno de los siguientes \"\n\"prefijos: %s.\"\n\n#: hr/forms.py:76\nmsgid \"Enter a valid 13 digit JMBG\"\nmsgstr \"Introduzca un JMBG de 13 dígitos valido\"\n\n#: hr/forms.py:77\nmsgid \"Error in date segment\"\nmsgstr \"Error en el segmento de la fecha\"\n\n#: hr/forms.py:123\nmsgid \"Enter a valid 11 digit OIB\"\nmsgstr \"Introduzca un OIB de 11 dígitos válido\"\n\n#: hr/forms.py:152 id/forms.py:112\nmsgid \"Enter a valid vehicle license plate number\"\nmsgstr \"Introduzca un número de placa de licencia de vehículo válido.\"\n\n#: hr/forms.py:153\nmsgid \"Enter a valid location code\"\nmsgstr \"Introduzca un código de ubicación válido\"\n\n#: hr/forms.py:154\nmsgid \"Number part cannot be zero\"\nmsgstr \"Parte del número no puede ser cero\"\n\n#: hr/forms.py:190\nmsgid \"Enter a valid 5 digit postal code\"\nmsgstr \"Introduzca un código postal de 5 dígitos válido\"\n\n#: hr/forms.py:218 id/forms.py:72 nl/forms.py:56\nmsgid \"Enter a valid phone number\"\nmsgstr \"Introduzca un número telefónico válido.\"\n\n#: hr/forms.py:219\nmsgid \"Enter a valid area or mobile network code\"\nmsgstr \"Introduzca un área o código de red móvil válidos\"\n\n#: hr/forms.py:220\nmsgid \"The phone nubmer is too long\"\nmsgstr \"El número teléfono es demasiado largo\"\n\n#: hr/forms.py:258\nmsgid \"Enter a valid 19 digit JMBAG starting with 601983\"\nmsgstr \"Introduzca un JMBAG de 19 dígitos iniciando con 601983\"\n\n#: hr/forms.py:259\nmsgid \"Card issue number cannot be zero\"\nmsgstr \"El número de emisión de la tarjeta no puede ser cero\"\n\n#: hr/hr_choices.py:14\nmsgid \"Grad Zagreb\"\nmsgstr \"Grad Zagreb\"\n\n#: hr/hr_choices.py:15\nmsgid \"Bjelovarsko-bilogorska županija\"\nmsgstr \"Bjelovarsko-bilogorska županija\"\n\n#: hr/hr_choices.py:16\nmsgid \"Brodsko-posavska županija\"\nmsgstr \"Brodsko-posavska županija\"\n\n#: hr/hr_choices.py:17\nmsgid \"Dubrovačko-neretvanska županija\"\nmsgstr \"Dubrovačko-neretvanska županija\"\n\n#: hr/hr_choices.py:18\nmsgid \"Istarska županija\"\nmsgstr \"Istarska županija\"\n\n#: hr/hr_choices.py:19\nmsgid \"Karlovačka županija\"\nmsgstr \"Karlovačka županija\"\n\n#: hr/hr_choices.py:20\nmsgid \"Koprivničko-križevačka županija\"\nmsgstr \"Koprivničko-križevačka županija\"\n\n#: hr/hr_choices.py:21\nmsgid \"Krapinsko-zagorska županija\"\nmsgstr \"Krapinsko-Zagorska županija\"\n\n#: hr/hr_choices.py:22\nmsgid \"Ličko-senjska županija\"\nmsgstr \"Ličko-senjska županija\"\n\n#: hr/hr_choices.py:23\nmsgid \"Međimurska županija\"\nmsgstr \"Međimurska županija\"\n\n#: hr/hr_choices.py:24\nmsgid \"Osječko-baranjska županija\"\nmsgstr \"Osjecko-baranjska županija\"\n\n#: hr/hr_choices.py:25\nmsgid \"Požeško-slavonska županija\"\nmsgstr \"Požeško-slavonska županija\"\n\n#: hr/hr_choices.py:26\nmsgid \"Primorsko-goranska županija\"\nmsgstr \"Primorsko-Goranska županija\"\n\n#: hr/hr_choices.py:27\nmsgid \"Sisačko-moslavačka županija\"\nmsgstr \"Sisačko-Moslavačka županija\"\n\n#: hr/hr_choices.py:28\nmsgid \"Splitsko-dalmatinska županija\"\nmsgstr \"Splitsko-Dalmatinska županija\"\n\n#: hr/hr_choices.py:29\nmsgid \"Šibensko-kninska županija\"\nmsgstr \"Šibensko-Kninska županija\"\n\n#: hr/hr_choices.py:30\nmsgid \"Varaždinska županija\"\nmsgstr \"Varaždinska županija\"\n\n#: hr/hr_choices.py:31\nmsgid \"Virovitičko-podravska županija\"\nmsgstr \"Viroviticko-Podravska županija\"\n\n#: hr/hr_choices.py:32\nmsgid \"Vukovarsko-srijemska županija\"\nmsgstr \"Vukovarsko-srijemska županija\"\n\n#: hr/hr_choices.py:33\nmsgid \"Zadarska županija\"\nmsgstr \"Zadarska županija\"\n\n#: hr/hr_choices.py:34\nmsgid \"Zagrebačka županija\"\nmsgstr \"Zagrebačka županija\"\n\n#: id/forms.py:31\nmsgid \"Enter a valid post code\"\nmsgstr \"Introduzca un código postal válido.\"\n\n#: id/forms.py:176\nmsgid \"Enter a valid NIK/KTP number\"\nmsgstr \"Introduzca un número NIK/KTP válido.\"\n\n#: id/id_choices.py:15\nmsgid \"Aceh\"\nmsgstr \"Aceh\"\n\n#: id/id_choices.py:16 id/id_choices.py:79\nmsgid \"Bali\"\nmsgstr \"Bali\"\n\n#: id/id_choices.py:17 id/id_choices.py:51\nmsgid \"Banten\"\nmsgstr \"Banten\"\n\n#: id/id_choices.py:18 id/id_choices.py:60\nmsgid \"Bengkulu\"\nmsgstr \"Bengkulu\"\n\n#: id/id_choices.py:19 id/id_choices.py:53\nmsgid \"Yogyakarta\"\nmsgstr \"Yogyakarta\"\n\n#: id/id_choices.py:20 id/id_choices.py:57\nmsgid \"Jakarta\"\nmsgstr \"Jakarta\"\n\n#: id/id_choices.py:21 id/id_choices.py:81\nmsgid \"Gorontalo\"\nmsgstr \"Gorontalo\"\n\n#: id/id_choices.py:22 id/id_choices.py:63\nmsgid \"Jambi\"\nmsgstr \"Jambi\"\n\n#: id/id_choices.py:23\nmsgid \"Jawa Barat\"\nmsgstr \"Java Barat\"\n\n#: id/id_choices.py:24\nmsgid \"Jawa Tengah\"\nmsgstr \"Java Central\"\n\n#: id/id_choices.py:25\nmsgid \"Jawa Timur\"\nmsgstr \"Java Oriental\"\n\n#: id/id_choices.py:26 id/id_choices.py:94\nmsgid \"Kalimantan Barat\"\nmsgstr \"Kalimantan Occidental\"\n\n#: id/id_choices.py:27 id/id_choices.py:72\nmsgid \"Kalimantan Selatan\"\nmsgstr \"Kalimantan Meridional\"\n\n#: id/id_choices.py:28 id/id_choices.py:95\nmsgid \"Kalimantan Tengah\"\nmsgstr \"Kalimantan Central\"\n\n#: id/id_choices.py:29 id/id_choices.py:96\nmsgid \"Kalimantan Timur\"\nmsgstr \"Kalimantan Oriental\"\n\n#: id/id_choices.py:30\nmsgid \"Kepulauan Bangka-Belitung\"\nmsgstr \"Kepulauan Bangka-Belitung\"\n\n#: id/id_choices.py:31 id/id_choices.py:68\nmsgid \"Kepulauan Riau\"\nmsgstr \"Islas Riau\"\n\n#: id/id_choices.py:32 id/id_choices.py:61\nmsgid \"Lampung\"\nmsgstr \"Lampung\"\n\n#: id/id_choices.py:33 id/id_choices.py:76\nmsgid \"Maluku\"\nmsgstr \"Molucas\"\n\n#: id/id_choices.py:34 id/id_choices.py:77\nmsgid \"Maluku Utara\"\nmsgstr \"Molucas Septentrional\"\n\n#: id/id_choices.py:35\nmsgid \"Nusa Tenggara Barat\"\nmsgstr \"Nusatenggara Occidental\"\n\n#: id/id_choices.py:36\nmsgid \"Nusa Tenggara Timur\"\nmsgstr \"Nusatenggara Oriental\"\n\n#: id/id_choices.py:37\nmsgid \"Papua\"\nmsgstr \"Papúa\"\n\n#: id/id_choices.py:38\nmsgid \"Papua Barat\"\nmsgstr \"Provincia de Papúa Occidental\"\n\n#: id/id_choices.py:39 id/id_choices.py:66\nmsgid \"Riau\"\nmsgstr \"Riau\"\n\n#: id/id_choices.py:40 id/id_choices.py:74\nmsgid \"Sulawesi Barat\"\nmsgstr \"Célebes Occidental\"\n\n#: id/id_choices.py:41 id/id_choices.py:75\nmsgid \"Sulawesi Selatan\"\nmsgstr \"Célebes Meridional\"\n\n#: id/id_choices.py:42 id/id_choices.py:82\nmsgid \"Sulawesi Tengah\"\nmsgstr \"Célebes Central\"\n\n#: id/id_choices.py:43 id/id_choices.py:85\nmsgid \"Sulawesi Tenggara\"\nmsgstr \"Célebes Suroriental\"\n\n#: id/id_choices.py:44\nmsgid \"Sulawesi Utara\"\nmsgstr \"Molucas Septentrional\"\n\n#: id/id_choices.py:45 id/id_choices.py:58\nmsgid \"Sumatera Barat\"\nmsgstr \"Sumatra Occidental\"\n\n#: id/id_choices.py:46 id/id_choices.py:62\nmsgid \"Sumatera Selatan\"\nmsgstr \"Sumatra Meridional\"\n\n#: id/id_choices.py:47 id/id_choices.py:64\nmsgid \"Sumatera Utara\"\nmsgstr \"Sumatra Septentrional\"\n\n#: id/id_choices.py:52\nmsgid \"Magelang\"\nmsgstr \"Magelang\"\n\n#: id/id_choices.py:54\nmsgid \"Surakarta - Solo\"\nmsgstr \"Surakarta - Solo\"\n\n#: id/id_choices.py:55\nmsgid \"Madiun\"\nmsgstr \"Madiun\"\n\n#: id/id_choices.py:56\nmsgid \"Kediri\"\nmsgstr \"Kediri\"\n\n#: id/id_choices.py:59\nmsgid \"Tapanuli\"\nmsgstr \"Tapanuli\"\n\n#: id/id_choices.py:65\nmsgid \"Nanggroe Aceh Darussalam\"\nmsgstr \"Aceh\"\n\n#: id/id_choices.py:67\nmsgid \"Kepulauan Bangka Belitung\"\nmsgstr \"Kepulauan Bangka Belitung\"\n\n#: id/id_choices.py:69\nmsgid \"Corps Consulate\"\nmsgstr \"Corps Consulate\"\n\n#: id/id_choices.py:70\nmsgid \"Corps Diplomatic\"\nmsgstr \"Corps Diplomatic\"\n\n#: id/id_choices.py:71\nmsgid \"Bandung\"\nmsgstr \"Bandung\"\n\n#: id/id_choices.py:73\nmsgid \"Sulawesi Utara Daratan\"\nmsgstr \"Sulawesi Utara Daratan\"\n\n#: id/id_choices.py:78\nmsgid \"NTT - Timor\"\nmsgstr \"NTT - Timor\"\n\n#: id/id_choices.py:80\nmsgid \"Sulawesi Utara Kepulauan\"\nmsgstr \"Sulawesi Utara Kepulauan\"\n\n#: id/id_choices.py:83\nmsgid \"NTB - Lombok\"\nmsgstr \"NTB - Lombok\"\n\n#: id/id_choices.py:84\nmsgid \"Papua dan Papua Barat\"\nmsgstr \"Papua dan Papua Barat\"\n\n#: id/id_choices.py:86\nmsgid \"Cirebon\"\nmsgstr \"Cirebon\"\n\n#: id/id_choices.py:87\nmsgid \"NTB - Sumbawa\"\nmsgstr \"NTB - Sumbawa\"\n\n#: id/id_choices.py:88\nmsgid \"NTT - Flores\"\nmsgstr \"NTT - Flores\"\n\n#: id/id_choices.py:89\nmsgid \"NTT - Sumba\"\nmsgstr \"NTT - Sumba\"\n\n#: id/id_choices.py:90\nmsgid \"Bogor\"\nmsgstr \"Bogor\"\n\n#: id/id_choices.py:91\nmsgid \"Pekalongan\"\nmsgstr \"Pekalongan\"\n\n#: id/id_choices.py:92\nmsgid \"Semarang\"\nmsgstr \"Semarang\"\n\n#: id/id_choices.py:93\nmsgid \"Pati\"\nmsgstr \"Pati\"\n\n#: id/id_choices.py:97\nmsgid \"Surabaya\"\nmsgstr \"Surabaya\"\n\n#: id/id_choices.py:98\nmsgid \"Madura\"\nmsgstr \"Madura\"\n\n#: id/id_choices.py:99\nmsgid \"Malang\"\nmsgstr \"Malang\"\n\n#: id/id_choices.py:100\nmsgid \"Jember\"\nmsgstr \"Jember\"\n\n#: id/id_choices.py:101\nmsgid \"Banyumas\"\nmsgstr \"Banyumas\"\n\n#: id/id_choices.py:102\nmsgid \"Federal Government\"\nmsgstr \"Federal Government\"\n\n#: id/id_choices.py:103\nmsgid \"Bojonegoro\"\nmsgstr \"Bojonegoro\"\n\n#: id/id_choices.py:104\nmsgid \"Purwakarta\"\nmsgstr \"Purwakarta\"\n\n#: id/id_choices.py:105\nmsgid \"Sidoarjo\"\nmsgstr \"Sidoarjo\"\n\n#: id/id_choices.py:106\nmsgid \"Garut\"\nmsgstr \"Garut\"\n\n#: ie/ie_counties.py:8\nmsgid \"Antrim\"\nmsgstr \"Antrim\"\n\n#: ie/ie_counties.py:9\nmsgid \"Armagh\"\nmsgstr \"Armagh\"\n\n#: ie/ie_counties.py:10\nmsgid \"Carlow\"\nmsgstr \"Carlow\"\n\n#: ie/ie_counties.py:11\nmsgid \"Cavan\"\nmsgstr \"Cavan\"\n\n#: ie/ie_counties.py:12\nmsgid \"Clare\"\nmsgstr \"Clare\"\n\n#: ie/ie_counties.py:13\nmsgid \"Cork\"\nmsgstr \"Cork\"\n\n#: ie/ie_counties.py:14\nmsgid \"Derry\"\nmsgstr \"Derry\"\n\n#: ie/ie_counties.py:15\nmsgid \"Donegal\"\nmsgstr \"Donegal\"\n\n#: ie/ie_counties.py:16\nmsgid \"Down\"\nmsgstr \"Down\"\n\n#: ie/ie_counties.py:17\nmsgid \"Dublin\"\nmsgstr \"Dublin\"\n\n#: ie/ie_counties.py:18\nmsgid \"Fermanagh\"\nmsgstr \"Fermanagh\"\n\n#: ie/ie_counties.py:19\nmsgid \"Galway\"\nmsgstr \"Galway\"\n\n#: ie/ie_counties.py:20\nmsgid \"Kerry\"\nmsgstr \"Kerry\"\n\n#: ie/ie_counties.py:21\nmsgid \"Kildare\"\nmsgstr \"Kildare\"\n\n#: ie/ie_counties.py:22\nmsgid \"Kilkenny\"\nmsgstr \"Kilkenny\"\n\n#: ie/ie_counties.py:23\nmsgid \"Laois\"\nmsgstr \"Laois\"\n\n#: ie/ie_counties.py:24\nmsgid \"Leitrim\"\nmsgstr \"Leitrim\"\n\n#: ie/ie_counties.py:25\nmsgid \"Limerick\"\nmsgstr \"Limerick\"\n\n#: ie/ie_counties.py:26\nmsgid \"Longford\"\nmsgstr \"Longford\"\n\n#: ie/ie_counties.py:27\nmsgid \"Louth\"\nmsgstr \"Louth\"\n\n#: ie/ie_counties.py:28\nmsgid \"Mayo\"\nmsgstr \"Mayo\"\n\n#: ie/ie_counties.py:29\nmsgid \"Meath\"\nmsgstr \"Meath\"\n\n#: ie/ie_counties.py:30\nmsgid \"Monaghan\"\nmsgstr \"Monaghan\"\n\n#: ie/ie_counties.py:31\nmsgid \"Offaly\"\nmsgstr \"Offaly\"\n\n#: ie/ie_counties.py:32\nmsgid \"Roscommon\"\nmsgstr \"Roscommon\"\n\n#: ie/ie_counties.py:33\nmsgid \"Sligo\"\nmsgstr \"Sligo\"\n\n#: ie/ie_counties.py:34\nmsgid \"Tipperary\"\nmsgstr \"Tipperary\"\n\n#: ie/ie_counties.py:35\nmsgid \"Tyrone\"\nmsgstr \"Tyrone\"\n\n#: ie/ie_counties.py:36\nmsgid \"Waterford\"\nmsgstr \"Waterford\"\n\n#: ie/ie_counties.py:37\nmsgid \"Westmeath\"\nmsgstr \"Westmeath\"\n\n#: ie/ie_counties.py:38\nmsgid \"Wexford\"\nmsgstr \"Wexford\"\n\n#: ie/ie_counties.py:39\nmsgid \"Wicklow\"\nmsgstr \"Wicklow\"\n\n#: il/forms.py:32\nmsgid \"Enter a postal code in the format XXXXX\"\nmsgstr \"Introduzca un código postal en el formato XXXXX.\"\n\n#: il/forms.py:51\nmsgid \"Enter a valid ID number.\"\nmsgstr \"Introduzca número ID válido.\"\n\n#: in_/forms.py:41\nmsgid \"Enter a zip code in the format XXXXXX or XXX XXX.\"\nmsgstr \"Introduzca un código postal en el formato XXXXXX o XXX XXX.\"\n\n#: in_/forms.py:64\nmsgid \"Enter an Indian state or territory.\"\nmsgstr \"Introduzca un estado o territorio indio.\"\n\n#: in_/forms.py:103\nmsgid \"Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.\"\nmsgstr \"Los números de teléfono deben empezar por 2X-8X o 03X-7X o 04X-6X.\"\n\n#: is_/forms.py:22\nmsgid \"\"\n\"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.\"\nmsgstr \"\"\n\"Introduzca un número de identificación islandés válido. El formato es XXXXXX-\"\n\"XXXX.\"\n\n#: is_/forms.py:23\nmsgid \"The Icelandic identification number is not valid.\"\nmsgstr \"El número de identificación islandés no es válido.\"\n\n#: it/forms.py:21\nmsgid \"Enter a valid zip code.\"\nmsgstr \"Introduzca un zip code válido.\"\n\n#: it/forms.py:48\nmsgid \"Enter a valid Social Security number.\"\nmsgstr \"Introduzca un número de Seguridad Social válido.\"\n\n#: it/forms.py:73\nmsgid \"Enter a valid VAT number.\"\nmsgstr \"Introduzca un número VAT válido.\"\n\n#: jp/forms.py:19\nmsgid \"Enter a postal code in the format XXXXXXX or XXX-XXXX.\"\nmsgstr \"Introduzca un código postal en formato XXXXXX o XXX-XXXX.\"\n\n#: jp/jp_prefectures.py:4\nmsgid \"Hokkaido\"\nmsgstr \"Hokkaido\"\n\n#: jp/jp_prefectures.py:5\nmsgid \"Aomori\"\nmsgstr \"Aomori\"\n\n#: jp/jp_prefectures.py:6\nmsgid \"Iwate\"\nmsgstr \"Iwate\"\n\n#: jp/jp_prefectures.py:7\nmsgid \"Miyagi\"\nmsgstr \"Miyagi\"\n\n#: jp/jp_prefectures.py:8\nmsgid \"Akita\"\nmsgstr \"Akita\"\n\n#: jp/jp_prefectures.py:9\nmsgid \"Yamagata\"\nmsgstr \"Yamagata\"\n\n#: jp/jp_prefectures.py:10\nmsgid \"Fukushima\"\nmsgstr \"Fukushima\"\n\n#: jp/jp_prefectures.py:11\nmsgid \"Ibaraki\"\nmsgstr \"Ibaraki\"\n\n#: jp/jp_prefectures.py:12\nmsgid \"Tochigi\"\nmsgstr \"Tochigi\"\n\n#: jp/jp_prefectures.py:13\nmsgid \"Gunma\"\nmsgstr \"Gunma\"\n\n#: jp/jp_prefectures.py:14\nmsgid \"Saitama\"\nmsgstr \"Saitama\"\n\n#: jp/jp_prefectures.py:15\nmsgid \"Chiba\"\nmsgstr \"Chiba\"\n\n#: jp/jp_prefectures.py:16\nmsgid \"Tokyo\"\nmsgstr \"Tokio\"\n\n#: jp/jp_prefectures.py:17\nmsgid \"Kanagawa\"\nmsgstr \"Kanagawa\"\n\n#: jp/jp_prefectures.py:18\nmsgid \"Yamanashi\"\nmsgstr \"Yamanashi\"\n\n#: jp/jp_prefectures.py:19\nmsgid \"Nagano\"\nmsgstr \"Nagano\"\n\n#: jp/jp_prefectures.py:20\nmsgid \"Niigata\"\nmsgstr \"Niigata\"\n\n#: jp/jp_prefectures.py:21\nmsgid \"Toyama\"\nmsgstr \"Toyama\"\n\n#: jp/jp_prefectures.py:22\nmsgid \"Ishikawa\"\nmsgstr \"Ishikawa\"\n\n#: jp/jp_prefectures.py:23\nmsgid \"Fukui\"\nmsgstr \"Fukui\"\n\n#: jp/jp_prefectures.py:24\nmsgid \"Gifu\"\nmsgstr \"Gifu\"\n\n#: jp/jp_prefectures.py:25\nmsgid \"Shizuoka\"\nmsgstr \"Shizuoka\"\n\n#: jp/jp_prefectures.py:26\nmsgid \"Aichi\"\nmsgstr \"Aichi\"\n\n#: jp/jp_prefectures.py:27\nmsgid \"Mie\"\nmsgstr \"Mie\"\n\n#: jp/jp_prefectures.py:28\nmsgid \"Shiga\"\nmsgstr \"Shiga\"\n\n#: jp/jp_prefectures.py:29\nmsgid \"Kyoto\"\nmsgstr \"Kyoto\"\n\n#: jp/jp_prefectures.py:30\nmsgid \"Osaka\"\nmsgstr \"Osaka\"\n\n#: jp/jp_prefectures.py:31\nmsgid \"Hyogo\"\nmsgstr \"Hyogo\"\n\n#: jp/jp_prefectures.py:32\nmsgid \"Nara\"\nmsgstr \"Nara\"\n\n#: jp/jp_prefectures.py:33\nmsgid \"Wakayama\"\nmsgstr \"Wakayama\"\n\n#: jp/jp_prefectures.py:34\nmsgid \"Tottori\"\nmsgstr \"Tottori\"\n\n#: jp/jp_prefectures.py:35\nmsgid \"Shimane\"\nmsgstr \"Shimane\"\n\n#: jp/jp_prefectures.py:36\nmsgid \"Okayama\"\nmsgstr \"Okayama\"\n\n#: jp/jp_prefectures.py:37\nmsgid \"Hiroshima\"\nmsgstr \"Hiroshima\"\n\n#: jp/jp_prefectures.py:38\nmsgid \"Yamaguchi\"\nmsgstr \"Yamaguchi\"\n\n#: jp/jp_prefectures.py:39\nmsgid \"Tokushima\"\nmsgstr \"Tokushima\"\n\n#: jp/jp_prefectures.py:40\nmsgid \"Kagawa\"\nmsgstr \"Kagawa\"\n\n#: jp/jp_prefectures.py:41\nmsgid \"Ehime\"\nmsgstr \"Ehime\"\n\n#: jp/jp_prefectures.py:42\nmsgid \"Kochi\"\nmsgstr \"Kochi\"\n\n#: jp/jp_prefectures.py:43\nmsgid \"Fukuoka\"\nmsgstr \"Fukuoka\"\n\n#: jp/jp_prefectures.py:44\nmsgid \"Saga\"\nmsgstr \"Saga\"\n\n#: jp/jp_prefectures.py:45\nmsgid \"Nagasaki\"\nmsgstr \"Nagasaki\"\n\n#: jp/jp_prefectures.py:46\nmsgid \"Kumamoto\"\nmsgstr \"Kumamoto\"\n\n#: jp/jp_prefectures.py:47\nmsgid \"Oita\"\nmsgstr \"Oita\"\n\n#: jp/jp_prefectures.py:48\nmsgid \"Miyazaki\"\nmsgstr \"Miyazaki\"\n\n#: jp/jp_prefectures.py:49\nmsgid \"Kagoshima\"\nmsgstr \"Kagoshima\"\n\n#: jp/jp_prefectures.py:50\nmsgid \"Okinawa\"\nmsgstr \"Okinawa\"\n\n#: kw/forms.py:27\nmsgid \"Enter a valid Kuwaiti Civil ID number\"\nmsgstr \"Introduzca un número de ID civil kuwaití válido.\"\n\n#: mk/forms.py:18\nmsgid \"\"\n\"Identity card numbers must contain either 4 to 7 digits or an uppercase \"\n\"letter and 7 digits.\"\nmsgstr \"\"\n\"Números de cédula de identidad debe contener 4 a 7 dígitos o una letra \"\n\"mayúscula y 7 dígitos.\"\n\n#: mk/forms.py:57 si/forms.py:24\nmsgid \"This field should contain exactly 13 digits.\"\nmsgstr \"Este campo debe contener exactamente 13 dígitos.\"\n\n#: mk/forms.py:58\nmsgid \"The first 7 digits of the UMCN must represent a valid past date.\"\nmsgstr \"\"\n\"Los 7 primeros dígitos de la UMCN deben representar una fecha válida pasado.\"\n\n#: mk/forms.py:59\nmsgid \"The UMCN is not valid.\"\nmsgstr \"El UMCN no es válido.\"\n\n#: mk/mk_choices.py:10\nmsgid \"Aerodrom\"\nmsgstr \"Aerodrom\"\n\n#: mk/mk_choices.py:11\nmsgid \"Aračinovo\"\nmsgstr \"Aracinovo\"\n\n#: mk/mk_choices.py:12\nmsgid \"Berovo\"\nmsgstr \"Berovo\"\n\n#: mk/mk_choices.py:13\nmsgid \"Bitola\"\nmsgstr \"Bitola\"\n\n#: mk/mk_choices.py:14\nmsgid \"Bogdanci\"\nmsgstr \"Bogdanci\"\n\n#: mk/mk_choices.py:15\nmsgid \"Bogovinje\"\nmsgstr \"Bogovinje\"\n\n#: mk/mk_choices.py:16\nmsgid \"Bosilovo\"\nmsgstr \"Bosilovo\"\n\n#: mk/mk_choices.py:17\nmsgid \"Brvenica\"\nmsgstr \"Brvenica\"\n\n#: mk/mk_choices.py:18\nmsgid \"Butel\"\nmsgstr \"Butel\"\n\n#: mk/mk_choices.py:19\nmsgid \"Valandovo\"\nmsgstr \"Valandovo\"\n\n#: mk/mk_choices.py:20\nmsgid \"Vasilevo\"\nmsgstr \"Vasilevo\"\n\n#: mk/mk_choices.py:21\nmsgid \"Vevčani\"\nmsgstr \"Vevcani\"\n\n#: mk/mk_choices.py:22\nmsgid \"Veles\"\nmsgstr \"Veles\"\n\n#: mk/mk_choices.py:23\nmsgid \"Vinica\"\nmsgstr \"Vinica\"\n\n#: mk/mk_choices.py:24\nmsgid \"Vraneštica\"\nmsgstr \"Vraneštica\"\n\n#: mk/mk_choices.py:25\nmsgid \"Vrapčište\"\nmsgstr \"Vrapčište\"\n\n#: mk/mk_choices.py:26\nmsgid \"Gazi Baba\"\nmsgstr \"Gazi Baba\"\n\n#: mk/mk_choices.py:27\nmsgid \"Gevgelija\"\nmsgstr \"Gevgelija\"\n\n#: mk/mk_choices.py:28\nmsgid \"Gostivar\"\nmsgstr \"Gostivar\"\n\n#: mk/mk_choices.py:29\nmsgid \"Gradsko\"\nmsgstr \"Gradsko\"\n\n#: mk/mk_choices.py:30\nmsgid \"Debar\"\nmsgstr \"Excluir\"\n\n#: mk/mk_choices.py:31\nmsgid \"Debarca\"\nmsgstr \"Debarca\"\n\n#: mk/mk_choices.py:32\nmsgid \"Delčevo\"\nmsgstr \"Delcevo\"\n\n#: mk/mk_choices.py:33\nmsgid \"Demir Kapija\"\nmsgstr \"Demir Kapija\"\n\n#: mk/mk_choices.py:34\nmsgid \"Demir Hisar\"\nmsgstr \"Demir Hisar\"\n\n#: mk/mk_choices.py:35\nmsgid \"Dolneni\"\nmsgstr \"Dolneni\"\n\n#: mk/mk_choices.py:36\nmsgid \"Drugovo\"\nmsgstr \"Drugovo\"\n\n#: mk/mk_choices.py:37\nmsgid \"Gjorče Petrov\"\nmsgstr \"Gjorce Petrov\"\n\n#: mk/mk_choices.py:38\nmsgid \"Želino\"\nmsgstr \"Zelino\"\n\n#: mk/mk_choices.py:39\nmsgid \"Zajas\"\nmsgstr \"Zajas\"\n\n#: mk/mk_choices.py:40\nmsgid \"Zelenikovo\"\nmsgstr \"Zelenikovo\"\n\n#: mk/mk_choices.py:41\nmsgid \"Zrnovci\"\nmsgstr \"Zrnovci\"\n\n#: mk/mk_choices.py:42\nmsgid \"Ilinden\"\nmsgstr \"Ilinden\"\n\n#: mk/mk_choices.py:43\nmsgid \"Jegunovce\"\nmsgstr \"Jegunovce\"\n\n#: mk/mk_choices.py:44\nmsgid \"Kavadarci\"\nmsgstr \"Kavadarci\"\n\n#: mk/mk_choices.py:45\nmsgid \"Karbinci\"\nmsgstr \"Karbinci\"\n\n#: mk/mk_choices.py:46\nmsgid \"Karpoš\"\nmsgstr \"Karpos\"\n\n#: mk/mk_choices.py:47\nmsgid \"Kisela Voda\"\nmsgstr \"Kisela Voda\"\n\n#: mk/mk_choices.py:48\nmsgid \"Kičevo\"\nmsgstr \"Kičevo\"\n\n#: mk/mk_choices.py:49\nmsgid \"Konče\"\nmsgstr \"Konče\"\n\n#: mk/mk_choices.py:50\nmsgid \"Koćani\"\nmsgstr \"Kocani\"\n\n#: mk/mk_choices.py:51\nmsgid \"Kratovo\"\nmsgstr \"Kratovo\"\n\n#: mk/mk_choices.py:52\nmsgid \"Kriva Palanka\"\nmsgstr \"Kriva Palanka\"\n\n#: mk/mk_choices.py:53\nmsgid \"Krivogaštani\"\nmsgstr \"Krivogaštani\"\n\n#: mk/mk_choices.py:54\nmsgid \"Kruševo\"\nmsgstr \"Krusevo\"\n\n#: mk/mk_choices.py:55\nmsgid \"Kumanovo\"\nmsgstr \"Kumanovo\"\n\n#: mk/mk_choices.py:56\nmsgid \"Lipkovo\"\nmsgstr \"Lipkovo\"\n\n#: mk/mk_choices.py:57\nmsgid \"Lozovo\"\nmsgstr \"Lozovo\"\n\n#: mk/mk_choices.py:58\nmsgid \"Mavrovo i Rostuša\"\nmsgstr \"Mavrovo i Rostuša\"\n\n#: mk/mk_choices.py:59\nmsgid \"Makedonska Kamenica\"\nmsgstr \"Makedonska Kamenica\"\n\n#: mk/mk_choices.py:60\nmsgid \"Makedonski Brod\"\nmsgstr \"Makedonski Brod\"\n\n#: mk/mk_choices.py:61\nmsgid \"Mogila\"\nmsgstr \"Mogila\"\n\n#: mk/mk_choices.py:62\nmsgid \"Negotino\"\nmsgstr \"Negotino\"\n\n#: mk/mk_choices.py:63\nmsgid \"Novaci\"\nmsgstr \"Novaci\"\n\n#: mk/mk_choices.py:64\nmsgid \"Novo Selo\"\nmsgstr \"Novo Selo\"\n\n#: mk/mk_choices.py:65\nmsgid \"Oslomej\"\nmsgstr \"Oslomej\"\n\n#: mk/mk_choices.py:66\nmsgid \"Ohrid\"\nmsgstr \"Ohrid\"\n\n#: mk/mk_choices.py:67\nmsgid \"Petrovec\"\nmsgstr \"Petrovec\"\n\n#: mk/mk_choices.py:68\nmsgid \"Pehčevo\"\nmsgstr \"Pehcevo\"\n\n#: mk/mk_choices.py:69\nmsgid \"Plasnica\"\nmsgstr \"Plasnica\"\n\n#: mk/mk_choices.py:70\nmsgid \"Prilep\"\nmsgstr \"Prilep\"\n\n#: mk/mk_choices.py:71\nmsgid \"Probištip\"\nmsgstr \"Probištip\"\n\n#: mk/mk_choices.py:72\nmsgid \"Radoviš\"\nmsgstr \"Radoviš\"\n\n#: mk/mk_choices.py:73\nmsgid \"Rankovce\"\nmsgstr \"Rankovce\"\n\n#: mk/mk_choices.py:74\nmsgid \"Resen\"\nmsgstr \"Resen\"\n\n#: mk/mk_choices.py:75\nmsgid \"Rosoman\"\nmsgstr \"Rosoman\"\n\n#: mk/mk_choices.py:76\nmsgid \"Saraj\"\nmsgstr \"Saraj\"\n\n#: mk/mk_choices.py:77\nmsgid \"Sveti Nikole\"\nmsgstr \"Sveti Nikole\"\n\n#: mk/mk_choices.py:78\nmsgid \"Sopište\"\nmsgstr \"Sopište\"\n\n#: mk/mk_choices.py:79\nmsgid \"Star Dojran\"\nmsgstr \"Star Dojran\"\n\n#: mk/mk_choices.py:80\nmsgid \"Staro Nagoričane\"\nmsgstr \"Staro Nagoricane\"\n\n#: mk/mk_choices.py:81\nmsgid \"Struga\"\nmsgstr \"Struga\"\n\n#: mk/mk_choices.py:82\nmsgid \"Strumica\"\nmsgstr \"Strumica\"\n\n#: mk/mk_choices.py:83\nmsgid \"Studeničani\"\nmsgstr \"Studeničani\"\n\n#: mk/mk_choices.py:84\nmsgid \"Tearce\"\nmsgstr \"Tearce\"\n\n#: mk/mk_choices.py:85\nmsgid \"Tetovo\"\nmsgstr \"Tetovo\"\n\n#: mk/mk_choices.py:86\nmsgid \"Centar\"\nmsgstr \"Centar\"\n\n#: mk/mk_choices.py:87\nmsgid \"Centar-Župa\"\nmsgstr \"-Centar Župa\"\n\n#: mk/mk_choices.py:88\nmsgid \"Čair\"\nmsgstr \"Cair\"\n\n#: mk/mk_choices.py:89\nmsgid \"Čaška\"\nmsgstr \"Caska\"\n\n#: mk/mk_choices.py:90\nmsgid \"Češinovo-Obleševo\"\nmsgstr \"Češinovo-Obleševo\"\n\n#: mk/mk_choices.py:91\nmsgid \"Čučer-Sandevo\"\nmsgstr \"Cucer-Sandevo\"\n\n#: mk/mk_choices.py:92\nmsgid \"Štip\"\nmsgstr \"Štip\"\n\n#: mk/mk_choices.py:93\nmsgid \"Šuto Orizari\"\nmsgstr \"Suto Orizari\"\n\n#: mk/models.py:11\nmsgid \"Macedonian identity card number\"\nmsgstr \"Número de la tarjeta de identidad macedonia \"\n\n#: mk/models.py:25\nmsgid \"A Macedonian municipality (2 character code)\"\nmsgstr \"Un municipio de Macedonia (2 código de caracteres)\"\n\n#: mk/models.py:35\nmsgid \"Unique master citizen number (13 digits)\"\nmsgstr \"Número maestro único de ciudadanos (13 dígitos)\"\n\n#: mx/forms.py:67\nmsgid \"Enter a valid zip code in the format XXXXX.\"\nmsgstr \"Entre un código zip válido en el formato XXXXX.\"\n\n#: mx/forms.py:110\nmsgid \"Enter a valid RFC.\"\nmsgstr \"Entre un RFC válido.\"\n\n#: mx/forms.py:111\nmsgid \"Invalid checksum for RFC.\"\nmsgstr \"Suma de verificación incorrecta.\"\n\n#: mx/forms.py:191\nmsgid \"Enter a valid CURP.\"\nmsgstr \"Entre un CURP válido.\"\n\n#: mx/forms.py:192\nmsgid \"Invalid checksum for CURP.\"\nmsgstr \"Suma de verificación de CURP inválida.\"\n\n#: mx/models.py:14\nmsgid \"Mexico state (three uppercase letters)\"\nmsgstr \"Estado de México (tres letras mayúsculas)\"\n\n#: mx/models.py:27\nmsgid \"Mexico zip code\"\nmsgstr \"Código zip de México\"\n\n#: mx/models.py:44\nmsgid \"Mexican RFC\"\nmsgstr \"RFC de México\"\n\n#: mx/models.py:61\nmsgid \"Mexican CURP\"\nmsgstr \"CURP de México\"\n\n#: mx/mx_states.py:14\nmsgid \"Aguascalientes\"\nmsgstr \"Aguascalientes\"\n\n#: mx/mx_states.py:15\nmsgid \"Baja California\"\nmsgstr \"Baja California\"\n\n#: mx/mx_states.py:16\nmsgid \"Baja California Sur\"\nmsgstr \"Baja California Sur\"\n\n#: mx/mx_states.py:17\nmsgid \"Campeche\"\nmsgstr \"Campeche\"\n\n#: mx/mx_states.py:18\nmsgid \"Chihuahua\"\nmsgstr \"Chihuahua\"\n\n#: mx/mx_states.py:19\nmsgid \"Chiapas\"\nmsgstr \"Chiapas\"\n\n#: mx/mx_states.py:20\nmsgid \"Coahuila\"\nmsgstr \"Coahuila\"\n\n#: mx/mx_states.py:21\nmsgid \"Colima\"\nmsgstr \"Colima\"\n\n#: mx/mx_states.py:22\nmsgid \"Distrito Federal\"\nmsgstr \"Distrito Federal\"\n\n#: mx/mx_states.py:23\nmsgid \"Durango\"\nmsgstr \"Durango\"\n\n#: mx/mx_states.py:24\nmsgid \"Guerrero\"\nmsgstr \"Guerrero\"\n\n#: mx/mx_states.py:25\nmsgid \"Guanajuato\"\nmsgstr \"Guanajuato\"\n\n#: mx/mx_states.py:26\nmsgid \"Hidalgo\"\nmsgstr \"Hidalgo\"\n\n#: mx/mx_states.py:27\nmsgid \"Jalisco\"\nmsgstr \"Jalisco\"\n\n#: mx/mx_states.py:28\nmsgid \"Estado de México\"\nmsgstr \"Estado de México\"\n\n#: mx/mx_states.py:29\nmsgid \"Michoacán\"\nmsgstr \"Michoacán\"\n\n#: mx/mx_states.py:30\nmsgid \"Morelos\"\nmsgstr \"Morelos\"\n\n#: mx/mx_states.py:31\nmsgid \"Nayarit\"\nmsgstr \"Nayarit\"\n\n#: mx/mx_states.py:32\nmsgid \"Nuevo León\"\nmsgstr \"Nuevo León\"\n\n#: mx/mx_states.py:33\nmsgid \"Oaxaca\"\nmsgstr \"Oaxaca\"\n\n#: mx/mx_states.py:34\nmsgid \"Puebla\"\nmsgstr \"Puebla\"\n\n#: mx/mx_states.py:35\nmsgid \"Querétaro\"\nmsgstr \"Querétaro\"\n\n#: mx/mx_states.py:36\nmsgid \"Quintana Roo\"\nmsgstr \"Quintana Roo\"\n\n#: mx/mx_states.py:37\nmsgid \"Sinaloa\"\nmsgstr \"Sinaloa\"\n\n#: mx/mx_states.py:38\nmsgid \"San Luis Potosí\"\nmsgstr \"San Luis Potosí\"\n\n#: mx/mx_states.py:39\nmsgid \"Sonora\"\nmsgstr \"Sonora\"\n\n#: mx/mx_states.py:40\nmsgid \"Tabasco\"\nmsgstr \"Tabasco\"\n\n#: mx/mx_states.py:41\nmsgid \"Tamaulipas\"\nmsgstr \"Tamaulipas\"\n\n#: mx/mx_states.py:42\nmsgid \"Tlaxcala\"\nmsgstr \"Tlaxcala\"\n\n#: mx/mx_states.py:43\nmsgid \"Veracruz\"\nmsgstr \"Veracruz\"\n\n#: mx/mx_states.py:44\nmsgid \"Yucatán\"\nmsgstr \"Yucatán\"\n\n#: mx/mx_states.py:45\nmsgid \"Zacatecas\"\nmsgstr \"Zacatecas\"\n\n#: nl/forms.py:26\nmsgid \"Enter a valid postal code\"\nmsgstr \"Introduzca un código postal válido.\"\n\n#: nl/forms.py:82\nmsgid \"Enter a valid SoFi number\"\nmsgstr \"Introduzca un número SoFi válido.\"\n\n#: nl/nl_provinces.py:4\nmsgid \"Drenthe\"\nmsgstr \"Drente\"\n\n#: nl/nl_provinces.py:5\nmsgid \"Flevoland\"\nmsgstr \"Flevolanda\"\n\n#: nl/nl_provinces.py:6\nmsgid \"Friesland\"\nmsgstr \"Frisia\"\n\n#: nl/nl_provinces.py:7\nmsgid \"Gelderland\"\nmsgstr \"Güeldres\"\n\n#: nl/nl_provinces.py:8\nmsgid \"Groningen\"\nmsgstr \"Groninga\"\n\n#: nl/nl_provinces.py:10\nmsgid \"Noord-Brabant\"\nmsgstr \"Brabante Septentrional\"\n\n#: nl/nl_provinces.py:11\nmsgid \"Noord-Holland\"\nmsgstr \"Holanda Septentrional\"\n\n#: nl/nl_provinces.py:12\nmsgid \"Overijssel\"\nmsgstr \"Overijssel\"\n\n#: nl/nl_provinces.py:13\nmsgid \"Utrecht\"\nmsgstr \"Utrecht\"\n\n#: nl/nl_provinces.py:14\nmsgid \"Zeeland\"\nmsgstr \"Zelanda\"\n\n#: nl/nl_provinces.py:15\nmsgid \"Zuid-Holland\"\nmsgstr \"Holanda Meridional\"\n\n#: no/forms.py:39\nmsgid \"Enter a valid Norwegian social security number.\"\nmsgstr \"Introduzca un número de seguridad social Noruego válido.\"\n\n#: pe/forms.py:28\nmsgid \"This field requires 8 digits.\"\nmsgstr \"Este campo requiere 8 dígitos.\"\n\n#: pe/forms.py:56\nmsgid \"This field requires 11 digits.\"\nmsgstr \"Este campo requiere 11 dígitos.\"\n\n#: pl/forms.py:42\nmsgid \"National Identification Number consists of 11 digits.\"\nmsgstr \"Los Números Nacionales de Identificación constan de 11 dígitos.\"\n\n#: pl/forms.py:43\nmsgid \"Wrong checksum for the National Identification Number.\"\nmsgstr \"Código de verificación de Número Nacional de Identificación inválido.\"\n\n#: pl/forms.py:79\nmsgid \"National ID Card Number consists of 3 letters and 6 digits.\"\nmsgstr \"\"\n\"Número de Tarjeta Identificador del Documento Nacional de Identidad que se \"\n\"compone de 3 letras y 6 dígitos.\"\n\n#: pl/forms.py:80\nmsgid \"Wrong checksum for the National ID Card Number.\"\nmsgstr \"\"\n\"Suma de comprobación incorrecta para el número de tarjetas de identificación \"\n\"nacional.\"\n\n#: pl/forms.py:131\nmsgid \"\"\n\"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or \"\n\"XXXXXXXXXX.\"\nmsgstr \"\"\n\"Entre un campo de identificación fiscal con el formato  XXX-XXX-XX-XX, XXX-\"\n\"XX-XX-XXX o XXXXXXXXXX.\"\n\n#: pl/forms.py:132\nmsgid \"Wrong checksum for the Tax Number (NIP).\"\nmsgstr \"Código de verificación de Número Impositivo (NIP) inválido.\"\n\n#: pl/forms.py:171\nmsgid \"National Business Register Number (REGON) consists of 9 or 14 digits.\"\nmsgstr \"\"\n\"Los Números Nacionales de Registro de Negocios (REGON) constan de 9 o 14 \"\n\"dígitos.\"\n\n#: pl/forms.py:172\nmsgid \"Wrong checksum for the National Business Register Number (REGON).\"\nmsgstr \"\"\n\"Código de verificación de Número Nacional de Registro de Negocios (REGON) \"\n\"inválido.\"\n\n#: pl/forms.py:212\nmsgid \"Enter a postal code in the format XX-XXX.\"\nmsgstr \"Introduzca un código postal en formato XX-XXX.\"\n\n#: pl/pl_voivodeships.py:8\nmsgid \"Lower Silesia\"\nmsgstr \"Baja Silesia\"\n\n#: pl/pl_voivodeships.py:9\nmsgid \"Kuyavia-Pomerania\"\nmsgstr \"Cuyavia y Pomerania\"\n\n#: pl/pl_voivodeships.py:10\nmsgid \"Lublin\"\nmsgstr \"Lublin\"\n\n#: pl/pl_voivodeships.py:11\nmsgid \"Lubusz\"\nmsgstr \"Lubus\"\n\n#: pl/pl_voivodeships.py:12\nmsgid \"Lodz\"\nmsgstr \"Lodz\"\n\n#: pl/pl_voivodeships.py:13\nmsgid \"Lesser Poland\"\nmsgstr \"Pequeña Polonia\"\n\n#: pl/pl_voivodeships.py:14\nmsgid \"Masovia\"\nmsgstr \"Masovia\"\n\n#: pl/pl_voivodeships.py:15\nmsgid \"Opole\"\nmsgstr \"Opole\"\n\n#: pl/pl_voivodeships.py:16\nmsgid \"Subcarpatia\"\nmsgstr \"Subcarpacia\"\n\n#: pl/pl_voivodeships.py:17\nmsgid \"Podlasie\"\nmsgstr \"Podlaquia\"\n\n#: pl/pl_voivodeships.py:18\nmsgid \"Pomerania\"\nmsgstr \"Pomerania\"\n\n#: pl/pl_voivodeships.py:19\nmsgid \"Silesia\"\nmsgstr \"Silesia\"\n\n#: pl/pl_voivodeships.py:20\nmsgid \"Swietokrzyskie\"\nmsgstr \"Swietokrzyskie\"\n\n#: pl/pl_voivodeships.py:21\nmsgid \"Warmia-Masuria\"\nmsgstr \"Varmia y Masuria\"\n\n#: pl/pl_voivodeships.py:22\nmsgid \"Greater Poland\"\nmsgstr \"Gran Polonia\"\n\n#: pl/pl_voivodeships.py:23\nmsgid \"West Pomerania\"\nmsgstr \"Pomerania Occidental\"\n\n#: pt/forms.py:19\nmsgid \"Enter a zip code in the format XXXX-XXX.\"\nmsgstr \"Introduzca un zip code en formato XXXX-XXX.\"\n\n#: pt/forms.py:39\nmsgid \"Phone numbers must have 9 digits, or start by + or 00.\"\nmsgstr \"Los números telefónicos deben ser de 9 dígitos o comenzar con + o 00.\"\n\n#: ro/forms.py:22\nmsgid \"Enter a valid CIF.\"\nmsgstr \"Introduzca un CIF válido.\"\n\n#: ro/forms.py:59\nmsgid \"Enter a valid CNP.\"\nmsgstr \"Introduzca un CNP válido.\"\n\n#: ro/forms.py:143\nmsgid \"Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format\"\nmsgstr \"Introduzca un IBAN válido en formato ROXX-XXXX-XXXX-XXXX-XXXX-XXXX\"\n\n#: ro/forms.py:175\nmsgid \"Phone numbers must be in XXXX-XXXXXX format.\"\nmsgstr \"Los números telefónicos deben respetar el formato XXXX-XXXXXX.\"\n\n#: ro/forms.py:200\nmsgid \"Enter a valid postal code in the format XXXXXX\"\nmsgstr \"Introduzca un código postal válido en formato XXXXXX\"\n\n#: ru/forms.py:37\nmsgid \"Enter a postal code in the format XXXXXX.\"\nmsgstr \"Introduzca un código postal en el formato XXXXXX.\"\n\n#: ru/forms.py:50\nmsgid \"Enter a passport number in the format XXXX XXXXXX.\"\nmsgstr \"Introduzca un número de pasaporte en el formato XXXX XXXXXX.\"\n\n#: ru/forms.py:63\nmsgid \"Enter a passport number in the format XX XXXXXXX.\"\nmsgstr \"Introduzca un número de pasaporte en el formato XX XXXXXXX.\"\n\n#: ru/ru_regions.py:10\nmsgid \"Central Federal County\"\nmsgstr \"Condado Federal Central \"\n\n#: ru/ru_regions.py:11\nmsgid \"South Federal County\"\nmsgstr \"Condado Federal del Sur\"\n\n#: ru/ru_regions.py:12\nmsgid \"North-West Federal County\"\nmsgstr \"Condado Federal del Norte-Oeste\"\n\n#: ru/ru_regions.py:13\nmsgid \"Far-East Federal County\"\nmsgstr \"Condado Federal del Extremo Oriente\"\n\n#: ru/ru_regions.py:14\nmsgid \"Siberian Federal County\"\nmsgstr \"Condado Federal de Siberia\"\n\n#: ru/ru_regions.py:15\nmsgid \"Ural Federal County\"\nmsgstr \"Condado Federal de Ural\"\n\n#: ru/ru_regions.py:16\nmsgid \"Privolzhsky Federal County\"\nmsgstr \"Condado Federal de Privolzhsky\"\n\n#: ru/ru_regions.py:17\nmsgid \"North-Caucasian Federal County\"\nmsgstr \"Condado Federal del Norte del Cáucaso\"\n\n#: ru/ru_regions.py:21\nmsgid \"Moskva\"\nmsgstr \"Moskva\"\n\n#: ru/ru_regions.py:22\nmsgid \"Saint-Peterburg\"\nmsgstr \"Saint-Peterburg\"\n\n#: ru/ru_regions.py:23\nmsgid \"Moskovskaya oblast'\"\nmsgstr \"Moskovskaya Oblast '\"\n\n#: ru/ru_regions.py:24\nmsgid \"Adygeya, Respublika\"\nmsgstr \"Adigueya, Respublika\"\n\n#: ru/ru_regions.py:25\nmsgid \"Bashkortostan, Respublika\"\nmsgstr \"Bashkortostán, Respublika\"\n\n#: ru/ru_regions.py:26\nmsgid \"Buryatia, Respublika\"\nmsgstr \"Buriatia, Respublika\"\n\n#: ru/ru_regions.py:27\nmsgid \"Altay, Respublika\"\nmsgstr \"Altay, Respublika\"\n\n#: ru/ru_regions.py:28\nmsgid \"Dagestan, Respublika\"\nmsgstr \"Daguestán, Respublika\"\n\n#: ru/ru_regions.py:29\nmsgid \"Ingushskaya Respublika\"\nmsgstr \"Ingushskaya Respublika\"\n\n#: ru/ru_regions.py:30\nmsgid \"Kabardino-Balkarskaya Respublika\"\nmsgstr \"Kabardino-Balkarskaya Respublika\"\n\n#: ru/ru_regions.py:31\nmsgid \"Kalmykia, Respublika\"\nmsgstr \"Kalmykia, Respublika\"\n\n#: ru/ru_regions.py:32\nmsgid \"Karachaevo-Cherkesskaya Respublika\"\nmsgstr \"Karachaevo-Cherkesskaya Respublika\"\n\n#: ru/ru_regions.py:33\nmsgid \"Karelia, Respublika\"\nmsgstr \"Karelia, Respublika\"\n\n#: ru/ru_regions.py:34\nmsgid \"Komi, Respublika\"\nmsgstr \"Komi, Respublika\"\n\n#: ru/ru_regions.py:35\nmsgid \"Mariy Ehl, Respublika\"\nmsgstr \"Mariy Ehl, Respublika\"\n\n#: ru/ru_regions.py:36\nmsgid \"Mordovia, Respublika\"\nmsgstr \"Mordovia, Respublika\"\n\n#: ru/ru_regions.py:37\nmsgid \"Sakha, Respublika (Yakutiya)\"\nmsgstr \"Saja, Respublika (Yakutia)\"\n\n#: ru/ru_regions.py:38\nmsgid \"Severnaya Osetia, Respublika (Alania)\"\nmsgstr \"Severnaya Osetia, Respublika (Alania)\"\n\n#: ru/ru_regions.py:39\nmsgid \"Tatarstan, Respublika\"\nmsgstr \"Tatarstán, Respublika\"\n\n#: ru/ru_regions.py:40\nmsgid \"Tyva, Respublika (Tuva)\"\nmsgstr \"Tyva, Respublika (Tuva)\"\n\n#: ru/ru_regions.py:41\nmsgid \"Udmurtskaya Respublika\"\nmsgstr \"Udmurtskaya Respublika\"\n\n#: ru/ru_regions.py:42\nmsgid \"Khakassiya, Respublika\"\nmsgstr \"Khakassiya, Respublika\"\n\n#: ru/ru_regions.py:43\nmsgid \"Chechenskaya Respublika\"\nmsgstr \"Chechenskaya Respublika\"\n\n#: ru/ru_regions.py:44\nmsgid \"Chuvashskaya Respublika\"\nmsgstr \"Chuvashskaya Respublika\"\n\n#: ru/ru_regions.py:45\nmsgid \"Altayskiy Kray\"\nmsgstr \"Altayskiy Kray\"\n\n#: ru/ru_regions.py:46\nmsgid \"Zabaykalskiy Kray\"\nmsgstr \"Zabaykalskiy Kray\"\n\n#: ru/ru_regions.py:47\nmsgid \"Kamchatskiy Kray\"\nmsgstr \"Kamchatskiy Kray\"\n\n#: ru/ru_regions.py:48\nmsgid \"Krasnodarskiy Kray\"\nmsgstr \"Krasnodarskiy Kray\"\n\n#: ru/ru_regions.py:49\nmsgid \"Krasnoyarskiy Kray\"\nmsgstr \"Krasnoyarskiy Kray\"\n\n#: ru/ru_regions.py:50\nmsgid \"Permskiy Kray\"\nmsgstr \"Permskiy Kray\"\n\n#: ru/ru_regions.py:51\nmsgid \"Primorskiy Kray\"\nmsgstr \"Primorskiy Kray\"\n\n#: ru/ru_regions.py:52\nmsgid \"Stavropol'siyy Kray\"\nmsgstr \"Stavropol'siyy Kray\"\n\n#: ru/ru_regions.py:53\nmsgid \"Khabarovskiy Kray\"\nmsgstr \"Khabarovskiy Kray\"\n\n#: ru/ru_regions.py:54\nmsgid \"Amurskaya oblast'\"\nmsgstr \"Amurskaya Oblast '\"\n\n#: ru/ru_regions.py:55\nmsgid \"Arkhangel'skaya oblast'\"\nmsgstr \"Arkhangel'skaya Oblast '\"\n\n#: ru/ru_regions.py:56\nmsgid \"Astrakhanskaya oblast'\"\nmsgstr \"Astrakhanskaya oblast '\"\n\n#: ru/ru_regions.py:57\nmsgid \"Belgorodskaya oblast'\"\nmsgstr \"Belgorodskaya Oblast '\"\n\n#: ru/ru_regions.py:58\nmsgid \"Bryanskaya oblast'\"\nmsgstr \"Bryanskaya oblast '\"\n\n#: ru/ru_regions.py:59\nmsgid \"Vladimirskaya oblast'\"\nmsgstr \"Vladimirskaya Oblast '\"\n\n#: ru/ru_regions.py:60\nmsgid \"Volgogradskaya oblast'\"\nmsgstr \"Volgogradskaya oblast '\"\n\n#: ru/ru_regions.py:61\nmsgid \"Vologodskaya oblast'\"\nmsgstr \"Vologodskaya oblast '\"\n\n#: ru/ru_regions.py:62\nmsgid \"Voronezhskaya oblast'\"\nmsgstr \"Voronezhskaya oblast '\"\n\n#: ru/ru_regions.py:63\nmsgid \"Ivanovskaya oblast'\"\nmsgstr \"Ivanovskaya Oblast '\"\n\n#: ru/ru_regions.py:64\nmsgid \"Irkutskaya oblast'\"\nmsgstr \"Irkutskaya Oblast '\"\n\n#: ru/ru_regions.py:65\nmsgid \"Kaliningradskaya oblast'\"\nmsgstr \"Kaliningradskaya Oblast '\"\n\n#: ru/ru_regions.py:66\nmsgid \"Kaluzhskaya oblast'\"\nmsgstr \"Kaluga Oblast '\"\n\n#: ru/ru_regions.py:67\nmsgid \"Kemerovskaya oblast'\"\nmsgstr \"Kemerovskaya Oblast '\"\n\n#: ru/ru_regions.py:68\nmsgid \"Kirovskaya oblast'\"\nmsgstr \"Kirovskaya Oblast '\"\n\n#: ru/ru_regions.py:69\nmsgid \"Kostromskaya oblast'\"\nmsgstr \"Kostromskaya Oblast '\"\n\n#: ru/ru_regions.py:70\nmsgid \"Kurganskaya oblast'\"\nmsgstr \"Kurganskaya oblast'\"\n\n#: ru/ru_regions.py:71\nmsgid \"Kurskaya oblast'\"\nmsgstr \"Kurskaya Oblast '\"\n\n#: ru/ru_regions.py:72\nmsgid \"Leningradskaya oblast'\"\nmsgstr \"Leningradskaya Oblast '\"\n\n#: ru/ru_regions.py:73\nmsgid \"Lipeckaya oblast'\"\nmsgstr \"Lipeckaya Oblast '\"\n\n#: ru/ru_regions.py:74\nmsgid \"Magadanskaya oblast'\"\nmsgstr \"Magadanskaya oblast '\"\n\n#: ru/ru_regions.py:75\nmsgid \"Murmanskaya oblast'\"\nmsgstr \"Murmanskaya oblast '\"\n\n#: ru/ru_regions.py:76\nmsgid \"Nizhegorodskaja oblast'\"\nmsgstr \"Nizhegorodskaja Oblast '\"\n\n#: ru/ru_regions.py:77\nmsgid \"Novgorodskaya oblast'\"\nmsgstr \"Novgorodskaya oblast '\"\n\n#: ru/ru_regions.py:78\nmsgid \"Novosibirskaya oblast'\"\nmsgstr \"Novosibirskaya oblast '\"\n\n#: ru/ru_regions.py:79\nmsgid \"Omskaya oblast'\"\nmsgstr \"Omskaya Oblast '\"\n\n#: ru/ru_regions.py:80\nmsgid \"Orenburgskaya oblast'\"\nmsgstr \"Orenburgskaya oblast '\"\n\n#: ru/ru_regions.py:81\nmsgid \"Orlovskaya oblast'\"\nmsgstr \"Orlovskaya oblast '\"\n\n#: ru/ru_regions.py:82\nmsgid \"Penzenskaya oblast'\"\nmsgstr \"Penzenskaya oblast '\"\n\n#: ru/ru_regions.py:83\nmsgid \"Pskovskaya oblast'\"\nmsgstr \"Pskovskaya oblast '\"\n\n#: ru/ru_regions.py:84\nmsgid \"Rostovskaya oblast'\"\nmsgstr \"Rostovskaya Oblast '\"\n\n#: ru/ru_regions.py:85\nmsgid \"Rjazanskaya oblast'\"\nmsgstr \"Rjazanskaya Oblast '\"\n\n#: ru/ru_regions.py:86\nmsgid \"Samarskaya oblast'\"\nmsgstr \"Samarskaya Oblast '\"\n\n#: ru/ru_regions.py:87\nmsgid \"Saratovskaya oblast'\"\nmsgstr \"Saratovskaya Oblast '\"\n\n#: ru/ru_regions.py:88\nmsgid \"Sakhalinskaya oblast'\"\nmsgstr \"Sakhalinskaya oblast '\"\n\n#: ru/ru_regions.py:89\nmsgid \"Sverdlovskaya oblast'\"\nmsgstr \"Sverdlovsk \\\"\"\n\n#: ru/ru_regions.py:90\nmsgid \"Smolenskaya oblast'\"\nmsgstr \"Smolensk '\"\n\n#: ru/ru_regions.py:91\nmsgid \"Tambovskaya oblast'\"\nmsgstr \"Tambovskaya oblast '\"\n\n#: ru/ru_regions.py:92\nmsgid \"Tverskaya oblast'\"\nmsgstr \"Tverskaya Oblast '\"\n\n#: ru/ru_regions.py:93\nmsgid \"Tomskaya oblast'\"\nmsgstr \"Tomskaya oblast '\"\n\n#: ru/ru_regions.py:94\nmsgid \"Tul'skaya oblast'\"\nmsgstr \"Tul'skaya oblast '\"\n\n#: ru/ru_regions.py:95\nmsgid \"Tyumenskaya oblast'\"\nmsgstr \"Tyumenskaya oblast '\"\n\n#: ru/ru_regions.py:96\nmsgid \"Ul'ianovskaya oblast'\"\nmsgstr \"Ul'ianovskaya Oblast '\"\n\n#: ru/ru_regions.py:97\nmsgid \"Chelyabinskaya oblast'\"\nmsgstr \"Chelyabinskaya Oblast '\"\n\n#: ru/ru_regions.py:98\nmsgid \"Yaroslavskaya oblast'\"\nmsgstr \"Yaroslavskaya Oblast '\"\n\n#: ru/ru_regions.py:99\nmsgid \"Evreyskaya avtonomnaja oblast'\"\nmsgstr \"Evreyskaya avtonomnaja Oblast '\"\n\n#: ru/ru_regions.py:100\nmsgid \"Neneckiy autonomnyy okrug\"\nmsgstr \"Neneckiy autonomnyy okrug\"\n\n#: ru/ru_regions.py:101\nmsgid \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\nmsgstr \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\n\n#: ru/ru_regions.py:102\nmsgid \"Chukotskiy avtonomnyy okrug\"\nmsgstr \"Chukotskiy avtonomnyy okrug\"\n\n#: ru/ru_regions.py:103\nmsgid \"Yamalo-Neneckiy avtonomnyy okrug\"\nmsgstr \"Yamalo-Neneckiy avtonomnyy okrug\"\n\n#: se/forms.py:54\nmsgid \"Enter a valid Swedish organisation number.\"\nmsgstr \"Introduzca un número de organización sueco válido.\"\n\n#: se/forms.py:111\nmsgid \"Enter a valid Swedish personal identity number.\"\nmsgstr \"Introduzca un número de identidad personal sueco válido.\"\n\n#: se/forms.py:112\nmsgid \"Co-ordination numbers are not allowed.\"\nmsgstr \"No se admiten números de co-ordinación\"\n\n#: se/forms.py:154\nmsgid \"Enter a Swedish postal code in the format XXXXX.\"\nmsgstr \"Introduzca un código postal sueco en formato XXXXX.\"\n\n#: se/se_counties.py:16\nmsgid \"Stockholm\"\nmsgstr \"Estocolmo\"\n\n#: se/se_counties.py:17\nmsgid \"Västerbotten\"\nmsgstr \"Västerbotten\"\n\n#: se/se_counties.py:18\nmsgid \"Norrbotten\"\nmsgstr \"Norrbotten\"\n\n#: se/se_counties.py:19\nmsgid \"Uppsala\"\nmsgstr \"Uppsala\"\n\n#: se/se_counties.py:20\nmsgid \"Södermanland\"\nmsgstr \"Södermanland\"\n\n#: se/se_counties.py:21\nmsgid \"Östergötland\"\nmsgstr \"Östergrötland\"\n\n#: se/se_counties.py:22\nmsgid \"Jönköping\"\nmsgstr \"Jönköping\"\n\n#: se/se_counties.py:23\nmsgid \"Kronoberg\"\nmsgstr \"Kronoberg\"\n\n#: se/se_counties.py:24\nmsgid \"Kalmar\"\nmsgstr \"Kalmar\"\n\n#: se/se_counties.py:25\nmsgid \"Gotland\"\nmsgstr \"Gotland\"\n\n#: se/se_counties.py:26\nmsgid \"Blekinge\"\nmsgstr \"Blekinge\"\n\n#: se/se_counties.py:27\nmsgid \"Skåne\"\nmsgstr \"Escania\"\n\n#: se/se_counties.py:28\nmsgid \"Halland\"\nmsgstr \"Halland\"\n\n#: se/se_counties.py:29\nmsgid \"Västra Götaland\"\nmsgstr \"Västra Götaland\"\n\n#: se/se_counties.py:30\nmsgid \"Värmland\"\nmsgstr \"Värmland\"\n\n#: se/se_counties.py:31\nmsgid \"Örebro\"\nmsgstr \"Örebro\"\n\n#: se/se_counties.py:32\nmsgid \"Västmanland\"\nmsgstr \"Västmanland\"\n\n#: se/se_counties.py:33\nmsgid \"Dalarna\"\nmsgstr \"Dalarna\"\n\n#: se/se_counties.py:34\nmsgid \"Gävleborg\"\nmsgstr \"Gävleborg\"\n\n#: se/se_counties.py:35\nmsgid \"Västernorrland\"\nmsgstr \"Västernorrland\"\n\n#: se/se_counties.py:36\nmsgid \"Jämtland\"\nmsgstr \"Jämtland\"\n\n#: si/forms.py:25\nmsgid \"The first 7 digits of the EMSO must represent a valid past date.\"\nmsgstr \"Los primeros 7 dígitos del EMSO deben representar un fecha válida.\"\n\n#: si/forms.py:26\nmsgid \"The EMSO is not valid.\"\nmsgstr \"El EMSO no es válido.\"\n\n#: si/forms.py:86\nmsgid \"Enter a valid tax number in form SIXXXXXXXX\"\nmsgstr \"Entre un número de identificación fiscal de la forma SIXXXXXXXX\"\n\n#: si/forms.py:151\nmsgid \"Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.\"\nmsgstr \"Entre un número de teléfonocon la forma  +386XXXXXXXX o 0XXXXXXXX.\"\n\n#: sk/sk_districts.py:8\nmsgid \"Banska Bystrica\"\nmsgstr \"Banska Bystrica\"\n\n#: sk/sk_districts.py:9\nmsgid \"Banska Stiavnica\"\nmsgstr \"Banska Stiavnica\"\n\n#: sk/sk_districts.py:10\nmsgid \"Bardejov\"\nmsgstr \"Bardejov\"\n\n#: sk/sk_districts.py:11\nmsgid \"Banovce nad Bebravou\"\nmsgstr \"Banovce nad Bebravou\"\n\n#: sk/sk_districts.py:12\nmsgid \"Brezno\"\nmsgstr \"Brezno\"\n\n#: sk/sk_districts.py:13\nmsgid \"Bratislava I\"\nmsgstr \"Bratislava I\"\n\n#: sk/sk_districts.py:14\nmsgid \"Bratislava II\"\nmsgstr \"Bratislava II\"\n\n#: sk/sk_districts.py:15\nmsgid \"Bratislava III\"\nmsgstr \"Bratislava III\"\n\n#: sk/sk_districts.py:16\nmsgid \"Bratislava IV\"\nmsgstr \"Bratislava IV\"\n\n#: sk/sk_districts.py:17\nmsgid \"Bratislava V\"\nmsgstr \"Bratislava V\"\n\n#: sk/sk_districts.py:18\nmsgid \"Bytca\"\nmsgstr \"Bytca\"\n\n#: sk/sk_districts.py:19\nmsgid \"Cadca\"\nmsgstr \"Cadca\"\n\n#: sk/sk_districts.py:20\nmsgid \"Detva\"\nmsgstr \"Detva\"\n\n#: sk/sk_districts.py:21\nmsgid \"Dolny Kubin\"\nmsgstr \"Dolny Kubin\"\n\n#: sk/sk_districts.py:22\nmsgid \"Dunajska Streda\"\nmsgstr \"Dunajska Streda\"\n\n#: sk/sk_districts.py:23\nmsgid \"Galanta\"\nmsgstr \"Galanta\"\n\n#: sk/sk_districts.py:24\nmsgid \"Gelnica\"\nmsgstr \"Gelnica\"\n\n#: sk/sk_districts.py:25\nmsgid \"Hlohovec\"\nmsgstr \"Hlohovec\"\n\n#: sk/sk_districts.py:26\nmsgid \"Humenne\"\nmsgstr \"Humenne\"\n\n#: sk/sk_districts.py:27\nmsgid \"Ilava\"\nmsgstr \"Ilava\"\n\n#: sk/sk_districts.py:28\nmsgid \"Kezmarok\"\nmsgstr \"Kezmarok\"\n\n#: sk/sk_districts.py:29\nmsgid \"Komarno\"\nmsgstr \"Komarno\"\n\n#: sk/sk_districts.py:30\nmsgid \"Kosice I\"\nmsgstr \"Kosice I\"\n\n#: sk/sk_districts.py:31\nmsgid \"Kosice II\"\nmsgstr \"Kosice II\"\n\n#: sk/sk_districts.py:32\nmsgid \"Kosice III\"\nmsgstr \"Kosice III\"\n\n#: sk/sk_districts.py:33\nmsgid \"Kosice IV\"\nmsgstr \"Kosice IV\"\n\n#: sk/sk_districts.py:34\nmsgid \"Kosice - okolie\"\nmsgstr \"Kosice - okolie\"\n\n#: sk/sk_districts.py:35\nmsgid \"Krupina\"\nmsgstr \"Krupina\"\n\n#: sk/sk_districts.py:36\nmsgid \"Kysucke Nove Mesto\"\nmsgstr \"Kysucke Nove Mesto\"\n\n#: sk/sk_districts.py:37\nmsgid \"Levice\"\nmsgstr \"Levice\"\n\n#: sk/sk_districts.py:38\nmsgid \"Levoca\"\nmsgstr \"Levoca\"\n\n#: sk/sk_districts.py:39\nmsgid \"Liptovsky Mikulas\"\nmsgstr \"Liptovsky Mikulas\"\n\n#: sk/sk_districts.py:40\nmsgid \"Lucenec\"\nmsgstr \"Lucenec\"\n\n#: sk/sk_districts.py:41\nmsgid \"Malacky\"\nmsgstr \"Malacky\"\n\n#: sk/sk_districts.py:42\nmsgid \"Martin\"\nmsgstr \"Martin\"\n\n#: sk/sk_districts.py:43\nmsgid \"Medzilaborce\"\nmsgstr \"Medzilaborce\"\n\n#: sk/sk_districts.py:44\nmsgid \"Michalovce\"\nmsgstr \"Michalovce\"\n\n#: sk/sk_districts.py:45\nmsgid \"Myjava\"\nmsgstr \"Myjava\"\n\n#: sk/sk_districts.py:46\nmsgid \"Namestovo\"\nmsgstr \"Namestovo\"\n\n#: sk/sk_districts.py:47\nmsgid \"Nitra\"\nmsgstr \"Nitra\"\n\n#: sk/sk_districts.py:48\nmsgid \"Nove Mesto nad Vahom\"\nmsgstr \"Nove Mesto nad Vahom\"\n\n#: sk/sk_districts.py:49\nmsgid \"Nove Zamky\"\nmsgstr \"Nove Zamky\"\n\n#: sk/sk_districts.py:50\nmsgid \"Partizanske\"\nmsgstr \"Partizanske\"\n\n#: sk/sk_districts.py:51\nmsgid \"Pezinok\"\nmsgstr \"Pezinok\"\n\n#: sk/sk_districts.py:52\nmsgid \"Piestany\"\nmsgstr \"Piestany\"\n\n#: sk/sk_districts.py:53\nmsgid \"Poltar\"\nmsgstr \"Poltar\"\n\n#: sk/sk_districts.py:54\nmsgid \"Poprad\"\nmsgstr \"Poprad\"\n\n#: sk/sk_districts.py:55\nmsgid \"Povazska Bystrica\"\nmsgstr \"Povazska Bystrica\"\n\n#: sk/sk_districts.py:56\nmsgid \"Presov\"\nmsgstr \"Presov\"\n\n#: sk/sk_districts.py:57\nmsgid \"Prievidza\"\nmsgstr \"Prievidza\"\n\n#: sk/sk_districts.py:58\nmsgid \"Puchov\"\nmsgstr \"Puchov\"\n\n#: sk/sk_districts.py:59\nmsgid \"Revuca\"\nmsgstr \"Revuca\"\n\n#: sk/sk_districts.py:60\nmsgid \"Rimavska Sobota\"\nmsgstr \"Rimavska Sobota\"\n\n#: sk/sk_districts.py:61\nmsgid \"Roznava\"\nmsgstr \"Roznava\"\n\n#: sk/sk_districts.py:62\nmsgid \"Ruzomberok\"\nmsgstr \"Ruzomberok\"\n\n#: sk/sk_districts.py:63\nmsgid \"Sabinov\"\nmsgstr \"Sabinov\"\n\n#: sk/sk_districts.py:64\nmsgid \"Senec\"\nmsgstr \"Senec\"\n\n#: sk/sk_districts.py:65\nmsgid \"Senica\"\nmsgstr \"Senica\"\n\n#: sk/sk_districts.py:66\nmsgid \"Skalica\"\nmsgstr \"Skalica\"\n\n#: sk/sk_districts.py:67\nmsgid \"Snina\"\nmsgstr \"Snina\"\n\n#: sk/sk_districts.py:68\nmsgid \"Sobrance\"\nmsgstr \"Sobrance\"\n\n#: sk/sk_districts.py:69\nmsgid \"Spisska Nova Ves\"\nmsgstr \"Spisska Nova Ves\"\n\n#: sk/sk_districts.py:70\nmsgid \"Stara Lubovna\"\nmsgstr \"Stara Lubovna\"\n\n#: sk/sk_districts.py:71\nmsgid \"Stropkov\"\nmsgstr \"Stropkov\"\n\n#: sk/sk_districts.py:72\nmsgid \"Svidnik\"\nmsgstr \"Svidnik\"\n\n#: sk/sk_districts.py:73\nmsgid \"Sala\"\nmsgstr \"Sala\"\n\n#: sk/sk_districts.py:74\nmsgid \"Topolcany\"\nmsgstr \"Topolcany\"\n\n#: sk/sk_districts.py:75\nmsgid \"Trebisov\"\nmsgstr \"Trebisov\"\n\n#: sk/sk_districts.py:76\nmsgid \"Trencin\"\nmsgstr \"Trencin\"\n\n#: sk/sk_districts.py:77\nmsgid \"Trnava\"\nmsgstr \"Trnava\"\n\n#: sk/sk_districts.py:78\nmsgid \"Turcianske Teplice\"\nmsgstr \"Turcianske Teplice\"\n\n#: sk/sk_districts.py:79\nmsgid \"Tvrdosin\"\nmsgstr \"Tvrdosin\"\n\n#: sk/sk_districts.py:80\nmsgid \"Velky Krtis\"\nmsgstr \"Velky Krtis\"\n\n#: sk/sk_districts.py:81\nmsgid \"Vranov nad Toplou\"\nmsgstr \"Vranov nad Toplou\"\n\n#: sk/sk_districts.py:82\nmsgid \"Zlate Moravce\"\nmsgstr \"Zlate Moravce\"\n\n#: sk/sk_districts.py:83\nmsgid \"Zvolen\"\nmsgstr \"Zvolen\"\n\n#: sk/sk_districts.py:84\nmsgid \"Zarnovica\"\nmsgstr \"Zarnovica\"\n\n#: sk/sk_districts.py:85\nmsgid \"Ziar nad Hronom\"\nmsgstr \"Ziar nad Hronom\"\n\n#: sk/sk_districts.py:86\nmsgid \"Zilina\"\nmsgstr \"Zilina\"\n\n#: sk/sk_regions.py:8\nmsgid \"Banska Bystrica region\"\nmsgstr \"región Banska Bystrica\"\n\n#: sk/sk_regions.py:9\nmsgid \"Bratislava region\"\nmsgstr \"región Bratislava\"\n\n#: sk/sk_regions.py:10\nmsgid \"Kosice region\"\nmsgstr \"región Kosice\"\n\n#: sk/sk_regions.py:11\nmsgid \"Nitra region\"\nmsgstr \"región Nitra\"\n\n#: sk/sk_regions.py:12\nmsgid \"Presov region\"\nmsgstr \"región Presov\"\n\n#: sk/sk_regions.py:13\nmsgid \"Trencin region\"\nmsgstr \"región Trencin\"\n\n#: sk/sk_regions.py:14\nmsgid \"Trnava region\"\nmsgstr \"región Trnava\"\n\n#: sk/sk_regions.py:15\nmsgid \"Zilina region\"\nmsgstr \"región Zilina\"\n\n#: tr/forms.py:21\nmsgid \"Enter a postal code in the format XXXXX.\"\nmsgstr \"Introduzca un código postal en el formato XXXXX.\"\n\n#: tr/forms.py:42\nmsgid \"Phone numbers must be in 0XXX XXX XXXX format.\"\nmsgstr \"Los números telefónicos deben tener el formato 0XXX XXX XXXX.\"\n\n#: tr/forms.py:69\nmsgid \"Enter a valid Turkish Identification number.\"\nmsgstr \"Introduzca número de identificación turco válido.\"\n\n#: tr/forms.py:70\nmsgid \"Turkish Identification number must be 11 digits.\"\nmsgstr \"Los números de identificación turcos deben consistir de 11 dígitos.\"\n\n#: us/forms.py:21\nmsgid \"Enter a zip code in the format XXXXX or XXXXX-XXXX.\"\nmsgstr \"Introduzca un zip code en el formato XXXXX o XXXXX-XXXX.\"\n\n#: us/forms.py:59\nmsgid \"Enter a valid U.S. Social Security number in XXX-XX-XXXX format.\"\nmsgstr \"Introduzca un Número de Seguridad Social en formato XXX-XX-XXXX.\"\n\n#: us/forms.py:92\nmsgid \"Enter a U.S. state or territory.\"\nmsgstr \"Introduzca un estado de EE.UU. o un territorio.\"\n\n#: us/models.py:8\nmsgid \"U.S. state (two uppercase letters)\"\nmsgstr \"Estado de los EE.UU. (dos letras mayúsculas)\"\n\n#: us/models.py:17\nmsgid \"U.S. postal code (two uppercase letters)\"\nmsgstr \"Código postal de EE.UU. (dos letras en mayúscula)\"\n\n#: us/models.py:26\nmsgid \"Phone number\"\nmsgstr \"Número de teléfono\"\n\n#: uy/forms.py:29\nmsgid \"Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.\"\nmsgstr \"\"\n\"Introduzca un número CI válido en formato X.XXX.XXX-X,XXXXXXX-X o XXXXXXXX.\"\n\n#: uy/forms.py:31\nmsgid \"Enter a valid CI number.\"\nmsgstr \"Introduzca un número CI válido.\"\n\n#: za/forms.py:22\nmsgid \"Enter a valid South African ID number\"\nmsgstr \"Introduzca un número de ID de Sudáfrica válido.\"\n\n#: za/forms.py:56\nmsgid \"Enter a valid South African postal code\"\nmsgstr \"Introduzca un código postal de Sudáfrica válido.\"\n\n#: za/za_provinces.py:4\nmsgid \"Eastern Cape\"\nmsgstr \"Eastern Cape\"\n\n#: za/za_provinces.py:5\nmsgid \"Free State\"\nmsgstr \"Free State\"\n\n#: za/za_provinces.py:6\nmsgid \"Gauteng\"\nmsgstr \"Gauteng\"\n\n#: za/za_provinces.py:7\nmsgid \"KwaZulu-Natal\"\nmsgstr \"KwaZulu-Natal\"\n\n#: za/za_provinces.py:8\nmsgid \"Limpopo\"\nmsgstr \"Limpopo\"\n\n#: za/za_provinces.py:9\nmsgid \"Mpumalanga\"\nmsgstr \"Mpumalanga\"\n\n#: za/za_provinces.py:10\nmsgid \"Northern Cape\"\nmsgstr \"Northern Cape\"\n\n#: za/za_provinces.py:11\nmsgid \"North West\"\nmsgstr \"North West\"\n\n#: za/za_provinces.py:12\nmsgid \"Western Cape\"\nmsgstr \"Western Cape\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/locale/es_MX/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Abraham Estrada <abraham.estrada@gmail.com>, 2011, 2012.\n# msmtotti <figo10mexico@gmail.com>, 2011.\n# zodman <zodman@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-10-17 09:17+0000\\n\"\n\"Last-Translator: Abraham Estrada <abraham.estrada@gmail.com>\\n\"\n\"Language-Team: Spanish (Mexico) (http://www.transifex.com/projects/p/django/\"\n\"language/es_MX/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: es_MX\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: ar/forms.py:30\nmsgid \"Enter a postal code in the format NNNN or ANNNNAAA.\"\nmsgstr \"Introduzca un código postal en el formato NNNN o ANNNNAAA.\"\n\n#: ar/forms.py:52 br/forms.py:95 br/forms.py:134 pe/forms.py:27 pe/forms.py:55\nmsgid \"This field requires only numbers.\"\nmsgstr \"Este campo requiere sólo números.\"\n\n#: ar/forms.py:53\nmsgid \"This field requires 7 or 8 digits.\"\nmsgstr \"Este campo requiere 7 u 8 dígitos.\"\n\n#: ar/forms.py:82\nmsgid \"Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.\"\nmsgstr \"Ingrese un CUIT válido en el formato  XX-XXXXXXXX-X o XXXXXXXXXXXX.\"\n\n#: ar/forms.py:83\nmsgid \"Invalid CUIT.\"\nmsgstr \"CUIT inválido.\"\n\n#: ar/forms.py:84\nmsgid \"Invalid legal type. Type must be 27, 20, 23 or 30.\"\nmsgstr \"\"\n\n#: at/at_states.py:5\nmsgid \"Burgenland\"\nmsgstr \"Burgenland\"\n\n#: at/at_states.py:6\nmsgid \"Carinthia\"\nmsgstr \"Carintia\"\n\n#: at/at_states.py:7\nmsgid \"Lower Austria\"\nmsgstr \"Baja Austria\"\n\n#: at/at_states.py:8\nmsgid \"Upper Austria\"\nmsgstr \"Alta Austria\"\n\n#: at/at_states.py:9\nmsgid \"Salzburg\"\nmsgstr \"Salzburgo\"\n\n#: at/at_states.py:10\nmsgid \"Styria\"\nmsgstr \"Estiria\"\n\n#: at/at_states.py:11\nmsgid \"Tyrol\"\nmsgstr \"Tirol\"\n\n#: at/at_states.py:12\nmsgid \"Vorarlberg\"\nmsgstr \"Vorarlberg\"\n\n#: at/at_states.py:13\nmsgid \"Vienna\"\nmsgstr \"Viena\"\n\n#: at/forms.py:22 ch/forms.py:22 no/forms.py:19\nmsgid \"Enter a zip code in the format XXXX.\"\nmsgstr \"Introduzca un código postal en el formato XXXX.\"\n\n#: at/forms.py:50\nmsgid \"Enter a valid Austrian Social Security Number in XXXX XXXXXX format.\"\nmsgstr \"\"\n\"Introduzca un número de Seguro Social de Austria en el formato XXXX XXXXXX.\"\n\n#: au/forms.py:26\nmsgid \"Enter a 4 digit postcode.\"\nmsgstr \"Introduzca un código postal de 4 dígitos.\"\n\n#: au/models.py:9\nmsgid \"Australian State\"\nmsgstr \"Estado australiano\"\n\n#: au/models.py:19\nmsgid \"Australian Postcode\"\nmsgstr \"Código postal australiano\"\n\n#: au/models.py:33\nmsgid \"Australian Phone number\"\nmsgstr \"Número telefónico australiano\"\n\n#: be/be_provinces.py:5\nmsgid \"Antwerp\"\nmsgstr \"Amberes\"\n\n#: be/be_provinces.py:6\nmsgid \"Brussels\"\nmsgstr \"Bruselas\"\n\n#: be/be_provinces.py:7\nmsgid \"East Flanders\"\nmsgstr \"Flanders del este\"\n\n#: be/be_provinces.py:8\nmsgid \"Flemish Brabant\"\nmsgstr \"Brabante Flamenc\"\n\n#: be/be_provinces.py:9\nmsgid \"Hainaut\"\nmsgstr \"Hainaut\"\n\n#: be/be_provinces.py:10\nmsgid \"Liege\"\nmsgstr \"Liege\"\n\n#: be/be_provinces.py:11 nl/nl_provinces.py:9\nmsgid \"Limburg\"\nmsgstr \"Limburgo\"\n\n#: be/be_provinces.py:12\nmsgid \"Luxembourg\"\nmsgstr \"Luxemburgo\"\n\n#: be/be_provinces.py:13\nmsgid \"Namur\"\nmsgstr \"Namur\"\n\n#: be/be_provinces.py:14\nmsgid \"Walloon Brabant\"\nmsgstr \"Walloon Brabant\"\n\n#: be/be_provinces.py:15\nmsgid \"West Flanders\"\nmsgstr \"Flandes Occidental\"\n\n#: be/be_regions.py:5\nmsgid \"Brussels Capital Region\"\nmsgstr \"Región de Bruselas Capital\"\n\n#: be/be_regions.py:6\nmsgid \"Flemish Region\"\nmsgstr \"Región Flamenca\"\n\n#: be/be_regions.py:7\nmsgid \"Wallonia\"\nmsgstr \"Wallonia\"\n\n#: be/forms.py:25\nmsgid \"Enter a valid postal code in the range and format 1XXX - 9XXX.\"\nmsgstr \"Introduzca un código postal válido en el formato 1XXX - 9XXX.\"\n\n#: be/forms.py:48\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\nmsgstr \"\"\n\"Introduzca un número de teléfono válido en uno de los formatos xx xx xxx 0x, \"\n\"xx xx xx 0xx, 04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x . \"\n\"xxx.xx.xx, 0xx.xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx o 04xxxxxxxx.\"\n\n#: br/forms.py:22\nmsgid \"Enter a zip code in the format XXXXX-XXX.\"\nmsgstr \"Introduzca un código postal en el formato XXXXX-XXX.\"\n\n#: br/forms.py:31\nmsgid \"Phone numbers must be in XX-XXXX-XXXX format.\"\nmsgstr \"Los números de teléfono debe estar en formato XX-XXXX-XXXX.\"\n\n#: br/forms.py:58\nmsgid \"\"\n\"Select a valid brazilian state. That state is not one of the available \"\n\"states.\"\nmsgstr \"\"\n\"Seleccione un estado brasileño válido. Ese estado no es uno de los estados \"\n\"disponibles.\"\n\n#: br/forms.py:93\nmsgid \"Invalid CPF number.\"\nmsgstr \"Número CPF inválido\"\n\n#: br/forms.py:94\nmsgid \"This field requires at most 11 digits or 14 characters.\"\nmsgstr \"Este campo requiere un máximo de 11 dígitos o caracteres 14.\"\n\n#: br/forms.py:133\nmsgid \"Invalid CNPJ number.\"\nmsgstr \"Número CNPJ inválido\"\n\n#: br/forms.py:135\nmsgid \"This field requires at least 14 digits\"\nmsgstr \"Este campo requiere un mínimo de 14 dígitos\"\n\n#: ca/forms.py:29\nmsgid \"Enter a postal code in the format XXX XXX.\"\nmsgstr \"Introduzca un código postal en el formato XXX XXX.\"\n\n#: ca/forms.py:47 us/forms.py:30\nmsgid \"Phone numbers must be in XXX-XXX-XXXX format.\"\nmsgstr \"Números de teléfono deben estar en el formato XXX-XXX-XXXX.\"\n\n#: ca/forms.py:69\nmsgid \"Enter a Canadian province or territory.\"\nmsgstr \"\"\n\n#: ca/forms.py:110\nmsgid \"Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.\"\nmsgstr \"\"\n\"Introduzca un número de Seguro Social de Canadá en formato XXX-XXX-XXX.\"\n\n#: ch/ch_states.py:5\nmsgid \"Aargau\"\nmsgstr \"Argovia\"\n\n#: ch/ch_states.py:6\nmsgid \"Appenzell Innerrhoden\"\nmsgstr \"Appenzell Innerrhoden\"\n\n#: ch/ch_states.py:7\nmsgid \"Appenzell Ausserrhoden\"\nmsgstr \"Appenzell Ausserrhoden\"\n\n#: ch/ch_states.py:8\nmsgid \"Basel-Stadt\"\nmsgstr \"Basel-Stadt\"\n\n#: ch/ch_states.py:9\nmsgid \"Basel-Land\"\nmsgstr \"Basel-Land\"\n\n#: ch/ch_states.py:10\nmsgid \"Berne\"\nmsgstr \"Berna\"\n\n#: ch/ch_states.py:11\nmsgid \"Fribourg\"\nmsgstr \"Friburgo\"\n\n#: ch/ch_states.py:12\nmsgid \"Geneva\"\nmsgstr \"Ginebra\"\n\n#: ch/ch_states.py:13\nmsgid \"Glarus\"\nmsgstr \"Cantón de Glarus\"\n\n#: ch/ch_states.py:14\nmsgid \"Graubuenden\"\nmsgstr \"Graubuenden\"\n\n#: ch/ch_states.py:15\nmsgid \"Jura\"\nmsgstr \"Jura\"\n\n#: ch/ch_states.py:16\nmsgid \"Lucerne\"\nmsgstr \"Lucerne\"\n\n#: ch/ch_states.py:17\nmsgid \"Neuchatel\"\nmsgstr \"Neuchatel\"\n\n#: ch/ch_states.py:18\nmsgid \"Nidwalden\"\nmsgstr \"Nidwalden\"\n\n#: ch/ch_states.py:19\nmsgid \"Obwalden\"\nmsgstr \"Obwalden\"\n\n#: ch/ch_states.py:20\nmsgid \"Schaffhausen\"\nmsgstr \"Schaffhausen\"\n\n#: ch/ch_states.py:21\nmsgid \"Schwyz\"\nmsgstr \"Schwyz\"\n\n#: ch/ch_states.py:22\nmsgid \"Solothurn\"\nmsgstr \"Solothurn\"\n\n#: ch/ch_states.py:23\nmsgid \"St. Gallen\"\nmsgstr \"St. Gallen\"\n\n#: ch/ch_states.py:24\nmsgid \"Thurgau\"\nmsgstr \"Thurgau\"\n\n#: ch/ch_states.py:25\nmsgid \"Ticino\"\nmsgstr \"Cantón del Tesino\"\n\n#: ch/ch_states.py:26\nmsgid \"Uri\"\nmsgstr \"Uri\"\n\n#: ch/ch_states.py:27\nmsgid \"Valais\"\nmsgstr \"Cantón del Valais\"\n\n#: ch/ch_states.py:28\nmsgid \"Vaud\"\nmsgstr \"República y cantón de Vaud\"\n\n#: ch/ch_states.py:29\nmsgid \"Zug\"\nmsgstr \"Zug\"\n\n#: ch/ch_states.py:30\nmsgid \"Zurich\"\nmsgstr \"Zúrich\"\n\n#: ch/forms.py:37\nmsgid \"Phone numbers must be in 0XX XXX XX XX format.\"\nmsgstr \"\"\n\n#: ch/forms.py:68\nmsgid \"\"\n\"Enter a valid Swiss identity or passport card number in X1234567<0 or \"\n\"1234567890 format.\"\nmsgstr \"\"\n\"Introduzca una identidad Suiza válida o número de pasaporte en el formato \"\n\"X1234567<0 ó 1234567890.\"\n\n#: cl/forms.py:32\nmsgid \"Enter a valid Chilean RUT.\"\nmsgstr \"Introduzca un RUT chileno válido.\"\n\n#: cl/forms.py:33\nmsgid \"Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.\"\nmsgstr \"Introduzca un RUT chileno válido. El formato es XX.XXX.XXX-X.\"\n\n#: cl/forms.py:34\nmsgid \"The Chilean RUT is not valid.\"\nmsgstr \"El RUT chileno no es válido.\"\n\n#: cn/forms.py:84\nmsgid \"Enter a post code in the format XXXXXX.\"\nmsgstr \"Introduzca un código postal en el formato de XXXXXX.\"\n\n#: cn/forms.py:105\nmsgid \"ID Card Number consists of 15 or 18 digits.\"\nmsgstr \"El número de tarjeta de identificación consta de 15 o 18 dígitos.\"\n\n#: cn/forms.py:106\nmsgid \"Invalid ID Card Number: Wrong checksum\"\nmsgstr \"Número de Tarjeta de Identificación Inválido: Comprobación incorrecta\"\n\n#: cn/forms.py:107\nmsgid \"Invalid ID Card Number: Wrong birthdate\"\nmsgstr \"Número de Tarjeta de Identificación Inválido: Fecha incorrecta\"\n\n#: cn/forms.py:108\nmsgid \"Invalid ID Card Number: Wrong location code\"\nmsgstr \"\"\n\"Número de Tarjeta de Identificación Inválido: Código de ubicación incorrecto\"\n\n#: cn/forms.py:193\nmsgid \"Enter a valid phone number.\"\nmsgstr \"Introduzca un número de teléfono válido.\"\n\n#: cn/forms.py:210\nmsgid \"Enter a valid cell number.\"\nmsgstr \"Introduzca un número de teléfono celular válido.\"\n\n#: cz/cz_regions.py:8\nmsgid \"Prague\"\nmsgstr \"Praga\"\n\n#: cz/cz_regions.py:9\nmsgid \"Central Bohemian Region\"\nmsgstr \"Región de Bohemia Central\"\n\n#: cz/cz_regions.py:10\nmsgid \"South Bohemian Region\"\nmsgstr \"Región de Bohemia del Sur\"\n\n#: cz/cz_regions.py:11\nmsgid \"Pilsen Region\"\nmsgstr \"Región de Pilsen\"\n\n#: cz/cz_regions.py:12\nmsgid \"Carlsbad Region\"\nmsgstr \"Región de Carlsbad\"\n\n#: cz/cz_regions.py:13\nmsgid \"Usti Region\"\nmsgstr \"Región de Ústí nad Labem\"\n\n#: cz/cz_regions.py:14\nmsgid \"Liberec Region\"\nmsgstr \"Región de Liberec\"\n\n#: cz/cz_regions.py:15\nmsgid \"Hradec Region\"\nmsgstr \"Región de Hradec Králové\"\n\n#: cz/cz_regions.py:16\nmsgid \"Pardubice Region\"\nmsgstr \"Región de Pardubice\"\n\n#: cz/cz_regions.py:17\nmsgid \"Vysocina Region\"\nmsgstr \"Región de Vysocina\"\n\n#: cz/cz_regions.py:18\nmsgid \"South Moravian Region\"\nmsgstr \"Región Moravia del Sur\"\n\n#: cz/cz_regions.py:19\nmsgid \"Olomouc Region\"\nmsgstr \"Región de Olomouc\"\n\n#: cz/cz_regions.py:20\nmsgid \"Zlin Region\"\nmsgstr \"Región de Zlín\"\n\n#: cz/cz_regions.py:21\nmsgid \"Moravian-Silesian Region\"\nmsgstr \"Región de Moravia-Silesia\"\n\n#: cz/forms.py:32 sk/forms.py:33\nmsgid \"Enter a postal code in the format XXXXX or XXX XX.\"\nmsgstr \"Introduzca un código postal en el formato XXXXX o XX XXX.\"\n\n#: cz/forms.py:52\nmsgid \"Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.\"\nmsgstr \"\"\n\"Introduzca una fecha de nacimiento en el formato XXXXXX / XXXX o XXXXXXXXXX.\"\n\n#: cz/forms.py:53\nmsgid \"Enter a valid birth number.\"\nmsgstr \"Introduzca una fecha de nacimiento válida.\"\n\n#: cz/forms.py:102\nmsgid \"Enter a valid IC number.\"\nmsgstr \"Introduzca un número IC válido.\"\n\n#: de/de_states.py:5\nmsgid \"Baden-Wuerttemberg\"\nmsgstr \"Baden-Wurtemberg\"\n\n#: de/de_states.py:6\nmsgid \"Bavaria\"\nmsgstr \"Bavaria\"\n\n#: de/de_states.py:7\nmsgid \"Berlin\"\nmsgstr \"Berlín\"\n\n#: de/de_states.py:8\nmsgid \"Brandenburg\"\nmsgstr \"Brandeburgo\"\n\n#: de/de_states.py:9\nmsgid \"Bremen\"\nmsgstr \"Bremen\"\n\n#: de/de_states.py:10\nmsgid \"Hamburg\"\nmsgstr \"Hamburgo\"\n\n#: de/de_states.py:11\nmsgid \"Hessen\"\nmsgstr \"Hesse\"\n\n#: de/de_states.py:12\nmsgid \"Mecklenburg-Western Pomerania\"\nmsgstr \"Mecklemburgo-Pomerania Occidental\"\n\n#: de/de_states.py:13\nmsgid \"Lower Saxony\"\nmsgstr \"Baja Sajonia \"\n\n#: de/de_states.py:14\nmsgid \"North Rhine-Westphalia\"\nmsgstr \"North Rhine-Westphalia\"\n\n#: de/de_states.py:15\nmsgid \"Rhineland-Palatinate\"\nmsgstr \"Rhineland-Palatinate\"\n\n#: de/de_states.py:16\nmsgid \"Saarland\"\nmsgstr \"Saarland\"\n\n#: de/de_states.py:17\nmsgid \"Saxony\"\nmsgstr \"Sajonia\"\n\n#: de/de_states.py:18\nmsgid \"Saxony-Anhalt\"\nmsgstr \"Sajonia-Anhalt\"\n\n#: de/de_states.py:19\nmsgid \"Schleswig-Holstein\"\nmsgstr \"Schleswig-Holstein\"\n\n#: de/de_states.py:20\nmsgid \"Thuringia\"\nmsgstr \"Thuringia\"\n\n#: de/forms.py:20 fi/forms.py:18 fr/forms.py:20\nmsgid \"Enter a zip code in the format XXXXX.\"\nmsgstr \"Introduzca el código postal en el formato XXXXX.\"\n\n#: de/forms.py:46\nmsgid \"\"\n\"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"format.\"\nmsgstr \"\"\n\"Introduzca un número válido de tarjeta de identidad alemana en formato \"\n\"XXXXXXXXXXX-XXXXXXX-XXXXXXX-X.\"\n\n#: es/es_provinces.py:5\nmsgid \"Araba\"\nmsgstr \"\"\n\n#: es/es_provinces.py:6\nmsgid \"Albacete\"\nmsgstr \"Albacete\"\n\n#: es/es_provinces.py:7\nmsgid \"Alacant\"\nmsgstr \"Alicante\"\n\n#: es/es_provinces.py:8\nmsgid \"Almeria\"\nmsgstr \"Almería\"\n\n#: es/es_provinces.py:9\nmsgid \"Avila\"\nmsgstr \"Avila\"\n\n#: es/es_provinces.py:10\nmsgid \"Badajoz\"\nmsgstr \"Badajoz\"\n\n#: es/es_provinces.py:11\nmsgid \"Illes Balears\"\nmsgstr \"Islas Baleares\"\n\n#: es/es_provinces.py:12\nmsgid \"Barcelona\"\nmsgstr \"Barcelona\"\n\n#: es/es_provinces.py:13\nmsgid \"Burgos\"\nmsgstr \"Burgos\"\n\n#: es/es_provinces.py:14\nmsgid \"Caceres\"\nmsgstr \"Cáceres\"\n\n#: es/es_provinces.py:15\nmsgid \"Cadiz\"\nmsgstr \"Cádiz\"\n\n#: es/es_provinces.py:16\nmsgid \"Castello\"\nmsgstr \"Castellon\"\n\n#: es/es_provinces.py:17\nmsgid \"Ciudad Real\"\nmsgstr \"Ciudad Real\"\n\n#: es/es_provinces.py:18\nmsgid \"Cordoba\"\nmsgstr \"Córdoba\"\n\n#: es/es_provinces.py:19\nmsgid \"A Coruna\"\nmsgstr \"La Coruña\"\n\n#: es/es_provinces.py:20\nmsgid \"Cuenca\"\nmsgstr \"Cuenca\"\n\n#: es/es_provinces.py:21\nmsgid \"Girona\"\nmsgstr \"Gerona\"\n\n#: es/es_provinces.py:22\nmsgid \"Granada\"\nmsgstr \"Granada\"\n\n#: es/es_provinces.py:23\nmsgid \"Guadalajara\"\nmsgstr \"Guadalajara\"\n\n#: es/es_provinces.py:24\nmsgid \"Guipuzkoa\"\nmsgstr \"Guipúzcoa\"\n\n#: es/es_provinces.py:25\nmsgid \"Huelva\"\nmsgstr \"Huelva\"\n\n#: es/es_provinces.py:26\nmsgid \"Huesca\"\nmsgstr \"Huesca\"\n\n#: es/es_provinces.py:27\nmsgid \"Jaen\"\nmsgstr \"Jaén\"\n\n#: es/es_provinces.py:28\nmsgid \"Leon\"\nmsgstr \"León\"\n\n#: es/es_provinces.py:29\nmsgid \"Lleida\"\nmsgstr \"Lérida\"\n\n#: es/es_provinces.py:30 es/es_regions.py:17\nmsgid \"La Rioja\"\nmsgstr \"La Rioja\"\n\n#: es/es_provinces.py:31\nmsgid \"Lugo\"\nmsgstr \"Lugo\"\n\n#: es/es_provinces.py:32 es/es_regions.py:18\nmsgid \"Madrid\"\nmsgstr \"Madrid\"\n\n#: es/es_provinces.py:33\nmsgid \"Malaga\"\nmsgstr \"Málaga\"\n\n#: es/es_provinces.py:34\nmsgid \"Murcia\"\nmsgstr \"Murcia\"\n\n#: es/es_provinces.py:35\nmsgid \"Navarre\"\nmsgstr \"Navarra\"\n\n#: es/es_provinces.py:36\nmsgid \"Ourense\"\nmsgstr \"Orense\"\n\n#: es/es_provinces.py:37\nmsgid \"Asturias\"\nmsgstr \"Asturias\"\n\n#: es/es_provinces.py:38\nmsgid \"Palencia\"\nmsgstr \"Palencia\"\n\n#: es/es_provinces.py:39\nmsgid \"Las Palmas\"\nmsgstr \"Las Palmas\"\n\n#: es/es_provinces.py:40\nmsgid \"Pontevedra\"\nmsgstr \"Pontevedra\"\n\n#: es/es_provinces.py:41\nmsgid \"Salamanca\"\nmsgstr \"Salamanca\"\n\n#: es/es_provinces.py:42\nmsgid \"Santa Cruz de Tenerife\"\nmsgstr \"Santa Cruz de Tenerife\"\n\n#: es/es_provinces.py:43 es/es_regions.py:11\nmsgid \"Cantabria\"\nmsgstr \"Cantabria\"\n\n#: es/es_provinces.py:44\nmsgid \"Segovia\"\nmsgstr \"Segovia\"\n\n#: es/es_provinces.py:45\nmsgid \"Seville\"\nmsgstr \"Sevilla\"\n\n#: es/es_provinces.py:46\nmsgid \"Soria\"\nmsgstr \"Soria\"\n\n#: es/es_provinces.py:47\nmsgid \"Tarragona\"\nmsgstr \"Tarragona\"\n\n#: es/es_provinces.py:48\nmsgid \"Teruel\"\nmsgstr \"Teruel\"\n\n#: es/es_provinces.py:49\nmsgid \"Toledo\"\nmsgstr \"Toledo\"\n\n#: es/es_provinces.py:50\nmsgid \"Valencia\"\nmsgstr \"Valencia\"\n\n#: es/es_provinces.py:51\nmsgid \"Valladolid\"\nmsgstr \"Valladolid\"\n\n#: es/es_provinces.py:52\nmsgid \"Bizkaia\"\nmsgstr \"Vizcaya\"\n\n#: es/es_provinces.py:53\nmsgid \"Zamora\"\nmsgstr \"Zamora\"\n\n#: es/es_provinces.py:54\nmsgid \"Zaragoza\"\nmsgstr \"Zaragoza\"\n\n#: es/es_provinces.py:55\nmsgid \"Ceuta\"\nmsgstr \"Ceuta\"\n\n#: es/es_provinces.py:56\nmsgid \"Melilla\"\nmsgstr \"Melilla\"\n\n#: es/es_regions.py:5\nmsgid \"Andalusia\"\nmsgstr \"Andalucía\"\n\n#: es/es_regions.py:6\nmsgid \"Aragon\"\nmsgstr \"Aragón\"\n\n#: es/es_regions.py:7\nmsgid \"Principality of Asturias\"\nmsgstr \"Principado de Asturias\"\n\n#: es/es_regions.py:8\nmsgid \"Balearic Islands\"\nmsgstr \"Islas Baleares\"\n\n#: es/es_regions.py:9\nmsgid \"Basque Country\"\nmsgstr \"País Vasco\"\n\n#: es/es_regions.py:10\nmsgid \"Canary Islands\"\nmsgstr \"Islas Canarias\"\n\n#: es/es_regions.py:12\nmsgid \"Castile-La Mancha\"\nmsgstr \"Castilla y La Mancha\"\n\n#: es/es_regions.py:13\nmsgid \"Castile and Leon\"\nmsgstr \"Castilla y León\"\n\n#: es/es_regions.py:14\nmsgid \"Catalonia\"\nmsgstr \"Cataluña\"\n\n#: es/es_regions.py:15\nmsgid \"Extremadura\"\nmsgstr \"Extremadura\"\n\n#: es/es_regions.py:16\nmsgid \"Galicia\"\nmsgstr \"Galicia\"\n\n#: es/es_regions.py:19\nmsgid \"Region of Murcia\"\nmsgstr \"Región de Murcia\"\n\n#: es/es_regions.py:20\nmsgid \"Foral Community of Navarre\"\nmsgstr \"Comunidad Foral de Navarra\"\n\n#: es/es_regions.py:21\nmsgid \"Valencian Community\"\nmsgstr \"Comunidad Valenciana\"\n\n#: es/forms.py:26\nmsgid \"Enter a valid postal code in the range and format 01XXX - 52XXX.\"\nmsgstr \"Introduzca un código postal válido en el formato 01XXX al 52XXX.\"\n\n#: es/forms.py:46\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or \"\n\"9XXXXXXXX.\"\nmsgstr \"\"\n\"Introduzca un número de teléfono válido en uno de los formatos 6XXXXXXXX, \"\n\"8XXXXXXXX o 9XXXXXXXX.\"\n\n#: es/forms.py:73\nmsgid \"Please enter a valid NIF, NIE, or CIF.\"\nmsgstr \"Por favor introduzca una NIF, NIE o CIF válida.\"\n\n#: es/forms.py:74\nmsgid \"Please enter a valid NIF or NIE.\"\nmsgstr \"Por favor introduzca una NIF o NIE válida.\"\n\n#: es/forms.py:75\nmsgid \"Invalid checksum for NIF.\"\nmsgstr \"El NIF es incorrecto.\"\n\n#: es/forms.py:76\nmsgid \"Invalid checksum for NIE.\"\nmsgstr \"El NIE es incorrecto.\"\n\n#: es/forms.py:77\nmsgid \"Invalid checksum for CIF.\"\nmsgstr \"El CIF es incorrecto.\"\n\n#: es/forms.py:149\nmsgid \"\"\n\"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.\"\nmsgstr \"\"\n\"Por favor, introduzca un número de cuenta bancaria válida en el formato XXXX-\"\n\"XXXX-XX-XXXXXXXXXX.\"\n\n#: es/forms.py:150\nmsgid \"Invalid checksum for bank account number.\"\nmsgstr \"Suma de chequeo inválido para el número de banco.\"\n\n#: fi/forms.py:33\nmsgid \"Enter a valid Finnish social security number.\"\nmsgstr \"Introduzca un número válido de seguridad social finlandés.\"\n\n#: fr/forms.py:35\nmsgid \"Phone numbers must be in 0X XX XX XX XX format.\"\nmsgstr \"El número de teléfono debe estar en el formato 0X XX XX XX XX.\"\n\n#: gb/forms.py:25\nmsgid \"Enter a valid postcode.\"\nmsgstr \"Introduzca un código postal válido.\"\n\n#: gb/gb_regions.py:11\nmsgid \"Bedfordshire\"\nmsgstr \"Bedfordshire\"\n\n#: gb/gb_regions.py:12\nmsgid \"Buckinghamshire\"\nmsgstr \"Buckinghamshire\"\n\n#: gb/gb_regions.py:14\nmsgid \"Cheshire\"\nmsgstr \"Cheshire\"\n\n#: gb/gb_regions.py:15\nmsgid \"Cornwall and Isles of Scilly\"\nmsgstr \"Cornwall e Islas de Scilly\"\n\n#: gb/gb_regions.py:16\nmsgid \"Cumbria\"\nmsgstr \"Cumbria\"\n\n#: gb/gb_regions.py:17\nmsgid \"Derbyshire\"\nmsgstr \"Derbyshire\"\n\n#: gb/gb_regions.py:18\nmsgid \"Devon\"\nmsgstr \"Devon\"\n\n#: gb/gb_regions.py:19\nmsgid \"Dorset\"\nmsgstr \"Dorset\"\n\n#: gb/gb_regions.py:20\nmsgid \"Durham\"\nmsgstr \"Durham\"\n\n#: gb/gb_regions.py:21\nmsgid \"East Sussex\"\nmsgstr \"East Sussex\"\n\n#: gb/gb_regions.py:22\nmsgid \"Essex\"\nmsgstr \"Essex\"\n\n#: gb/gb_regions.py:23\nmsgid \"Gloucestershire\"\nmsgstr \"Gloucestershire\"\n\n#: gb/gb_regions.py:24\nmsgid \"Greater London\"\nmsgstr \"Greater London\"\n\n#: gb/gb_regions.py:25\nmsgid \"Greater Manchester\"\nmsgstr \"Greater Manchester\"\n\n#: gb/gb_regions.py:26\nmsgid \"Hampshire\"\nmsgstr \"Hampshire\"\n\n#: gb/gb_regions.py:27\nmsgid \"Hertfordshire\"\nmsgstr \"Hertfordshire\"\n\n#: gb/gb_regions.py:28\nmsgid \"Kent\"\nmsgstr \"Kent\"\n\n#: gb/gb_regions.py:29\nmsgid \"Lancashire\"\nmsgstr \"Lancashire\"\n\n#: gb/gb_regions.py:30\nmsgid \"Leicestershire\"\nmsgstr \"Leicestershire\"\n\n#: gb/gb_regions.py:31\nmsgid \"Lincolnshire\"\nmsgstr \"Lincolnshire\"\n\n#: gb/gb_regions.py:32\nmsgid \"Merseyside\"\nmsgstr \"Merseyside\"\n\n#: gb/gb_regions.py:33\nmsgid \"Norfolk\"\nmsgstr \"Norfolk\"\n\n#: gb/gb_regions.py:34\nmsgid \"North Yorkshire\"\nmsgstr \"Yorkshire del Norte\"\n\n#: gb/gb_regions.py:35\nmsgid \"Northamptonshire\"\nmsgstr \"Northamptonshire\"\n\n#: gb/gb_regions.py:36\nmsgid \"Northumberland\"\nmsgstr \"Northumberland\"\n\n#: gb/gb_regions.py:37\nmsgid \"Nottinghamshire\"\nmsgstr \"Nottinghamshire\"\n\n#: gb/gb_regions.py:38\nmsgid \"Oxfordshire\"\nmsgstr \"Oxfordshire\"\n\n#: gb/gb_regions.py:39\nmsgid \"Shropshire\"\nmsgstr \"Shropshire\"\n\n#: gb/gb_regions.py:40\nmsgid \"Somerset\"\nmsgstr \"Somerset\"\n\n#: gb/gb_regions.py:41\nmsgid \"South Yorkshire\"\nmsgstr \"Yorkshire del Sur\"\n\n#: gb/gb_regions.py:42\nmsgid \"Staffordshire\"\nmsgstr \"Staffordshire\"\n\n#: gb/gb_regions.py:43\nmsgid \"Suffolk\"\nmsgstr \"Suffolk\"\n\n#: gb/gb_regions.py:44\nmsgid \"Surrey\"\nmsgstr \"Surrey\"\n\n#: gb/gb_regions.py:45\nmsgid \"Tyne and Wear\"\nmsgstr \"Tyne y Wear\"\n\n#: gb/gb_regions.py:46\nmsgid \"Warwickshire\"\nmsgstr \"Warwickshire\"\n\n#: gb/gb_regions.py:47\nmsgid \"West Midlands\"\nmsgstr \"West Midlands\"\n\n#: gb/gb_regions.py:48\nmsgid \"West Sussex\"\nmsgstr \"Sussex Occidental\"\n\n#: gb/gb_regions.py:49\nmsgid \"West Yorkshire\"\nmsgstr \"Yorkshire Occidental\"\n\n#: gb/gb_regions.py:50\nmsgid \"Wiltshire\"\nmsgstr \"Wiltshire\"\n\n#: gb/gb_regions.py:51\nmsgid \"Worcestershire\"\nmsgstr \"Worcestershire\"\n\n#: gb/gb_regions.py:55\nmsgid \"County Antrim\"\nmsgstr \"Condado de Antrim\"\n\n#: gb/gb_regions.py:56\nmsgid \"County Armagh\"\nmsgstr \"Condado de Armagh\"\n\n#: gb/gb_regions.py:57\nmsgid \"County Down\"\nmsgstr \"Condado de Down\"\n\n#: gb/gb_regions.py:58\nmsgid \"County Fermanagh\"\nmsgstr \"Condado de Fermanagh\"\n\n#: gb/gb_regions.py:59\nmsgid \"County Londonderry\"\nmsgstr \"Condado de Londonderry\"\n\n#: gb/gb_regions.py:60\nmsgid \"County Tyrone\"\nmsgstr \"Condado de Tyrone\"\n\n#: gb/gb_regions.py:64\nmsgid \"Clwyd\"\nmsgstr \"Clwyd\"\n\n#: gb/gb_regions.py:65\nmsgid \"Dyfed\"\nmsgstr \"Dyfed\"\n\n#: gb/gb_regions.py:66\nmsgid \"Gwent\"\nmsgstr \"Gwent\"\n\n#: gb/gb_regions.py:67\nmsgid \"Gwynedd\"\nmsgstr \"Gwynedd\"\n\n#: gb/gb_regions.py:68\nmsgid \"Mid Glamorgan\"\nmsgstr \"Mid Glamorgan\"\n\n#: gb/gb_regions.py:69\nmsgid \"Powys\"\nmsgstr \"Powys\"\n\n#: gb/gb_regions.py:70\nmsgid \"South Glamorgan\"\nmsgstr \"Glamorgan del Sur\"\n\n#: gb/gb_regions.py:71\nmsgid \"West Glamorgan\"\nmsgstr \"Glamorgan Occidental\"\n\n#: gb/gb_regions.py:75\nmsgid \"Borders\"\nmsgstr \"Borders\"\n\n#: gb/gb_regions.py:76\nmsgid \"Central Scotland\"\nmsgstr \"Escocia Central\"\n\n#: gb/gb_regions.py:77\nmsgid \"Dumfries and Galloway\"\nmsgstr \"Dumfries y Galloway\"\n\n#: gb/gb_regions.py:78\nmsgid \"Fife\"\nmsgstr \"Fife\"\n\n#: gb/gb_regions.py:79\nmsgid \"Grampian\"\nmsgstr \"Grampian\"\n\n#: gb/gb_regions.py:80\nmsgid \"Highland\"\nmsgstr \"Highland\"\n\n#: gb/gb_regions.py:81\nmsgid \"Lothian\"\nmsgstr \"Lothian\"\n\n#: gb/gb_regions.py:82\nmsgid \"Orkney Islands\"\nmsgstr \"Islas Orcadas\"\n\n#: gb/gb_regions.py:83\nmsgid \"Shetland Islands\"\nmsgstr \"Islas Shetland\"\n\n#: gb/gb_regions.py:84\nmsgid \"Strathclyde\"\nmsgstr \"Strathclyde\"\n\n#: gb/gb_regions.py:85\nmsgid \"Tayside\"\nmsgstr \"Tayside\"\n\n#: gb/gb_regions.py:86\nmsgid \"Western Isles\"\nmsgstr \"Islas Occidentales\"\n\n#: gb/gb_regions.py:90\nmsgid \"England\"\nmsgstr \"Inglaterra\"\n\n#: gb/gb_regions.py:91\nmsgid \"Northern Ireland\"\nmsgstr \"Irlanda del Norte\"\n\n#: gb/gb_regions.py:92\nmsgid \"Scotland\"\nmsgstr \"Escocia\"\n\n#: gb/gb_regions.py:93\nmsgid \"Wales\"\nmsgstr \"País de Gales\"\n\n#: hk/forms.py:37\n#, python-format\nmsgid \"Phone number should not start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:40\n#, python-format\nmsgid \"Phone number must be in one of the following formats: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:42\n#, python-format\nmsgid \"Phone number should start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hr/forms.py:76\nmsgid \"Enter a valid 13 digit JMBG\"\nmsgstr \"Introduzca un JMBG válido de 13 dígitos.\"\n\n#: hr/forms.py:77\nmsgid \"Error in date segment\"\nmsgstr \"Error en el segmento de la fecha\"\n\n#: hr/forms.py:123\nmsgid \"Enter a valid 11 digit OIB\"\nmsgstr \"Introduzca un OIB de 11 dígitos\"\n\n#: hr/forms.py:152 id/forms.py:112\nmsgid \"Enter a valid vehicle license plate number\"\nmsgstr \"Introduzca una matrícula de vehículo válida.\"\n\n#: hr/forms.py:153\nmsgid \"Enter a valid location code\"\nmsgstr \"Introduzca un código de ubicación válido\"\n\n#: hr/forms.py:154\nmsgid \"Number part cannot be zero\"\nmsgstr \"El número de pieza no puede ser cero\"\n\n#: hr/forms.py:190\nmsgid \"Enter a valid 5 digit postal code\"\nmsgstr \"Introduzca un código postal válido de 5 dígitos\"\n\n#: hr/forms.py:218 id/forms.py:72 nl/forms.py:56\nmsgid \"Enter a valid phone number\"\nmsgstr \"Introduzca un número de teléfono válido\"\n\n#: hr/forms.py:219\nmsgid \"Enter a valid area or mobile network code\"\nmsgstr \"Introduzca una área válida o código de red móvil\"\n\n#: hr/forms.py:220\nmsgid \"The phone nubmer is too long\"\nmsgstr \"El número de teléfono es demasiado largo.\"\n\n#: hr/forms.py:258\nmsgid \"Enter a valid 19 digit JMBAG starting with 601983\"\nmsgstr \"Introduzca un JMBAG válido de 19 dígitos iniciando con 601983\"\n\n#: hr/forms.py:259\nmsgid \"Card issue number cannot be zero\"\nmsgstr \"Número de expedición de la tarjeta no puede ser cero\"\n\n#: hr/hr_choices.py:14\nmsgid \"Grad Zagreb\"\nmsgstr \"Grad Zagreb\"\n\n#: hr/hr_choices.py:15\nmsgid \"Bjelovarsko-bilogorska županija\"\nmsgstr \"Bjelovarsko-bilogorska županija\"\n\n#: hr/hr_choices.py:16\nmsgid \"Brodsko-posavska županija\"\nmsgstr \"Brodsko-posavska županija\"\n\n#: hr/hr_choices.py:17\nmsgid \"Dubrovačko-neretvanska županija\"\nmsgstr \"Dubrovačko-neretvanska županija\"\n\n#: hr/hr_choices.py:18\nmsgid \"Istarska županija\"\nmsgstr \"Istarska županija\"\n\n#: hr/hr_choices.py:19\nmsgid \"Karlovačka županija\"\nmsgstr \"Karlovačka županija\"\n\n#: hr/hr_choices.py:20\nmsgid \"Koprivničko-križevačka županija\"\nmsgstr \"Koprivničko-križevačka županija\"\n\n#: hr/hr_choices.py:21\nmsgid \"Krapinsko-zagorska županija\"\nmsgstr \"Krapinsko-zagorska županija\"\n\n#: hr/hr_choices.py:22\nmsgid \"Ličko-senjska županija\"\nmsgstr \"Ličko-senjska županija\"\n\n#: hr/hr_choices.py:23\nmsgid \"Međimurska županija\"\nmsgstr \"Međimurska županija\"\n\n#: hr/hr_choices.py:24\nmsgid \"Osječko-baranjska županija\"\nmsgstr \"Osječko-baranjska županija\"\n\n#: hr/hr_choices.py:25\nmsgid \"Požeško-slavonska županija\"\nmsgstr \"Požeško-slavonska županija\"\n\n#: hr/hr_choices.py:26\nmsgid \"Primorsko-goranska županija\"\nmsgstr \"Primorsko-goranska županija\"\n\n#: hr/hr_choices.py:27\nmsgid \"Sisačko-moslavačka županija\"\nmsgstr \"Sisačko-moslavačka županija\"\n\n#: hr/hr_choices.py:28\nmsgid \"Splitsko-dalmatinska županija\"\nmsgstr \"Splitsko-dalmatinska županija\"\n\n#: hr/hr_choices.py:29\nmsgid \"Šibensko-kninska županija\"\nmsgstr \"Šibensko-kninska županija\"\n\n#: hr/hr_choices.py:30\nmsgid \"Varaždinska županija\"\nmsgstr \"Varaždinska županija\"\n\n#: hr/hr_choices.py:31\nmsgid \"Virovitičko-podravska županija\"\nmsgstr \"Virovitičko-podravska županija\"\n\n#: hr/hr_choices.py:32\nmsgid \"Vukovarsko-srijemska županija\"\nmsgstr \"Vukovarsko-srijemska županija\"\n\n#: hr/hr_choices.py:33\nmsgid \"Zadarska županija\"\nmsgstr \"Zadarska županija\"\n\n#: hr/hr_choices.py:34\nmsgid \"Zagrebačka županija\"\nmsgstr \"Zagrebačka županija\"\n\n#: id/forms.py:31\nmsgid \"Enter a valid post code\"\nmsgstr \"Introduzca un código postal válido\"\n\n#: id/forms.py:176\nmsgid \"Enter a valid NIK/KTP number\"\nmsgstr \"Introduzca un NIK/KTP número.\"\n\n#: id/id_choices.py:15\nmsgid \"Aceh\"\nmsgstr \"Aceh\"\n\n#: id/id_choices.py:16 id/id_choices.py:79\nmsgid \"Bali\"\nmsgstr \"Bali\"\n\n#: id/id_choices.py:17 id/id_choices.py:51\nmsgid \"Banten\"\nmsgstr \"Banten\"\n\n#: id/id_choices.py:18 id/id_choices.py:60\nmsgid \"Bengkulu\"\nmsgstr \"Bengkulu\"\n\n#: id/id_choices.py:19 id/id_choices.py:53\nmsgid \"Yogyakarta\"\nmsgstr \"Yogyakarta\"\n\n#: id/id_choices.py:20 id/id_choices.py:57\nmsgid \"Jakarta\"\nmsgstr \"Jakarta\"\n\n#: id/id_choices.py:21 id/id_choices.py:81\nmsgid \"Gorontalo\"\nmsgstr \"Gorontalo\"\n\n#: id/id_choices.py:22 id/id_choices.py:63\nmsgid \"Jambi\"\nmsgstr \"Jambi\"\n\n#: id/id_choices.py:23\nmsgid \"Jawa Barat\"\nmsgstr \"Jawa Barat\"\n\n#: id/id_choices.py:24\nmsgid \"Jawa Tengah\"\nmsgstr \"Jawa Tengah\"\n\n#: id/id_choices.py:25\nmsgid \"Jawa Timur\"\nmsgstr \"Jawa Timur\"\n\n#: id/id_choices.py:26 id/id_choices.py:94\nmsgid \"Kalimantan Barat\"\nmsgstr \"Kalimantan Barat\"\n\n#: id/id_choices.py:27 id/id_choices.py:72\nmsgid \"Kalimantan Selatan\"\nmsgstr \"Kalimantan Selatan\"\n\n#: id/id_choices.py:28 id/id_choices.py:95\nmsgid \"Kalimantan Tengah\"\nmsgstr \"Kalimantan Tengah\"\n\n#: id/id_choices.py:29 id/id_choices.py:96\nmsgid \"Kalimantan Timur\"\nmsgstr \"Kalimantan Timur\"\n\n#: id/id_choices.py:30\nmsgid \"Kepulauan Bangka-Belitung\"\nmsgstr \"Kepulauan Bangka-Belitung\"\n\n#: id/id_choices.py:31 id/id_choices.py:68\nmsgid \"Kepulauan Riau\"\nmsgstr \"Kepulauan Riau\"\n\n#: id/id_choices.py:32 id/id_choices.py:61\nmsgid \"Lampung\"\nmsgstr \"Lampung\"\n\n#: id/id_choices.py:33 id/id_choices.py:76\nmsgid \"Maluku\"\nmsgstr \"Maluku\"\n\n#: id/id_choices.py:34 id/id_choices.py:77\nmsgid \"Maluku Utara\"\nmsgstr \"Maluku Utara\"\n\n#: id/id_choices.py:35\nmsgid \"Nusa Tenggara Barat\"\nmsgstr \"Nusa Tenggara Barat\"\n\n#: id/id_choices.py:36\nmsgid \"Nusa Tenggara Timur\"\nmsgstr \"Nusa Tenggara Timur\"\n\n#: id/id_choices.py:37\nmsgid \"Papua\"\nmsgstr \"Papua\"\n\n#: id/id_choices.py:38\nmsgid \"Papua Barat\"\nmsgstr \"Papua Barat\"\n\n#: id/id_choices.py:39 id/id_choices.py:66\nmsgid \"Riau\"\nmsgstr \"Riau\"\n\n#: id/id_choices.py:40 id/id_choices.py:74\nmsgid \"Sulawesi Barat\"\nmsgstr \"Sulawesi Barat\"\n\n#: id/id_choices.py:41 id/id_choices.py:75\nmsgid \"Sulawesi Selatan\"\nmsgstr \"Sulawesi Selatan\"\n\n#: id/id_choices.py:42 id/id_choices.py:82\nmsgid \"Sulawesi Tengah\"\nmsgstr \"Sulawesi Tengah\"\n\n#: id/id_choices.py:43 id/id_choices.py:85\nmsgid \"Sulawesi Tenggara\"\nmsgstr \"Sulawesi Tenggara\"\n\n#: id/id_choices.py:44\nmsgid \"Sulawesi Utara\"\nmsgstr \"Sulawesi Utara\"\n\n#: id/id_choices.py:45 id/id_choices.py:58\nmsgid \"Sumatera Barat\"\nmsgstr \"Sumatera Barat\"\n\n#: id/id_choices.py:46 id/id_choices.py:62\nmsgid \"Sumatera Selatan\"\nmsgstr \"Sumatera Selatan\"\n\n#: id/id_choices.py:47 id/id_choices.py:64\nmsgid \"Sumatera Utara\"\nmsgstr \"Sumatera Utara\"\n\n#: id/id_choices.py:52\nmsgid \"Magelang\"\nmsgstr \"Magelang\"\n\n#: id/id_choices.py:54\nmsgid \"Surakarta - Solo\"\nmsgstr \"Surakarta - Solo\"\n\n#: id/id_choices.py:55\nmsgid \"Madiun\"\nmsgstr \"Madiun\"\n\n#: id/id_choices.py:56\nmsgid \"Kediri\"\nmsgstr \"Kediri\"\n\n#: id/id_choices.py:59\nmsgid \"Tapanuli\"\nmsgstr \"Tapanuli\"\n\n#: id/id_choices.py:65\nmsgid \"Nanggroe Aceh Darussalam\"\nmsgstr \"Nanggroe Aceh Darussalam\"\n\n#: id/id_choices.py:67\nmsgid \"Kepulauan Bangka Belitung\"\nmsgstr \"Kepulauan Bangka Belitung\"\n\n#: id/id_choices.py:69\nmsgid \"Corps Consulate\"\nmsgstr \"Corps Consulate\"\n\n#: id/id_choices.py:70\nmsgid \"Corps Diplomatic\"\nmsgstr \"Corps Diplomatic\"\n\n#: id/id_choices.py:71\nmsgid \"Bandung\"\nmsgstr \"Bandung\"\n\n#: id/id_choices.py:73\nmsgid \"Sulawesi Utara Daratan\"\nmsgstr \"Sulawesi Utara Daratan\"\n\n#: id/id_choices.py:78\nmsgid \"NTT - Timor\"\nmsgstr \"NTT - Timor\"\n\n#: id/id_choices.py:80\nmsgid \"Sulawesi Utara Kepulauan\"\nmsgstr \"Sulawesi Utara Kepulauan\"\n\n#: id/id_choices.py:83\nmsgid \"NTB - Lombok\"\nmsgstr \"NTB - Lombok\"\n\n#: id/id_choices.py:84\nmsgid \"Papua dan Papua Barat\"\nmsgstr \"Papua dan Papua Barat\"\n\n#: id/id_choices.py:86\nmsgid \"Cirebon\"\nmsgstr \"Cirebon\"\n\n#: id/id_choices.py:87\nmsgid \"NTB - Sumbawa\"\nmsgstr \"NTB - Sumbawa\"\n\n#: id/id_choices.py:88\nmsgid \"NTT - Flores\"\nmsgstr \"NTT - Flores\"\n\n#: id/id_choices.py:89\nmsgid \"NTT - Sumba\"\nmsgstr \"NTT - Sumba\"\n\n#: id/id_choices.py:90\nmsgid \"Bogor\"\nmsgstr \"Bogor\"\n\n#: id/id_choices.py:91\nmsgid \"Pekalongan\"\nmsgstr \"Pekalongan\"\n\n#: id/id_choices.py:92\nmsgid \"Semarang\"\nmsgstr \"Semarang\"\n\n#: id/id_choices.py:93\nmsgid \"Pati\"\nmsgstr \"Pati\"\n\n#: id/id_choices.py:97\nmsgid \"Surabaya\"\nmsgstr \"Surabaya\"\n\n#: id/id_choices.py:98\nmsgid \"Madura\"\nmsgstr \"Madura\"\n\n#: id/id_choices.py:99\nmsgid \"Malang\"\nmsgstr \"Malang\"\n\n#: id/id_choices.py:100\nmsgid \"Jember\"\nmsgstr \"Jember\"\n\n#: id/id_choices.py:101\nmsgid \"Banyumas\"\nmsgstr \"Banyumas\"\n\n#: id/id_choices.py:102\nmsgid \"Federal Government\"\nmsgstr \"Gobierno Federal\"\n\n#: id/id_choices.py:103\nmsgid \"Bojonegoro\"\nmsgstr \"Bojonegoro\"\n\n#: id/id_choices.py:104\nmsgid \"Purwakarta\"\nmsgstr \"Purwakarta\"\n\n#: id/id_choices.py:105\nmsgid \"Sidoarjo\"\nmsgstr \"Sidoarjo\"\n\n#: id/id_choices.py:106\nmsgid \"Garut\"\nmsgstr \"Garut\"\n\n#: ie/ie_counties.py:8\nmsgid \"Antrim\"\nmsgstr \"Antrim\"\n\n#: ie/ie_counties.py:9\nmsgid \"Armagh\"\nmsgstr \"Armagh\"\n\n#: ie/ie_counties.py:10\nmsgid \"Carlow\"\nmsgstr \"Carlow\"\n\n#: ie/ie_counties.py:11\nmsgid \"Cavan\"\nmsgstr \"Cavan\"\n\n#: ie/ie_counties.py:12\nmsgid \"Clare\"\nmsgstr \"Clare\"\n\n#: ie/ie_counties.py:13\nmsgid \"Cork\"\nmsgstr \"Cork\"\n\n#: ie/ie_counties.py:14\nmsgid \"Derry\"\nmsgstr \"Derry\"\n\n#: ie/ie_counties.py:15\nmsgid \"Donegal\"\nmsgstr \"Donegal\"\n\n#: ie/ie_counties.py:16\nmsgid \"Down\"\nmsgstr \"Down\"\n\n#: ie/ie_counties.py:17\nmsgid \"Dublin\"\nmsgstr \"Dublin\"\n\n#: ie/ie_counties.py:18\nmsgid \"Fermanagh\"\nmsgstr \"Fermanagh\"\n\n#: ie/ie_counties.py:19\nmsgid \"Galway\"\nmsgstr \"Galway\"\n\n#: ie/ie_counties.py:20\nmsgid \"Kerry\"\nmsgstr \"Kerry\"\n\n#: ie/ie_counties.py:21\nmsgid \"Kildare\"\nmsgstr \"Kildare\"\n\n#: ie/ie_counties.py:22\nmsgid \"Kilkenny\"\nmsgstr \"Kilkenny\"\n\n#: ie/ie_counties.py:23\nmsgid \"Laois\"\nmsgstr \"Laois\"\n\n#: ie/ie_counties.py:24\nmsgid \"Leitrim\"\nmsgstr \"Leitrim\"\n\n#: ie/ie_counties.py:25\nmsgid \"Limerick\"\nmsgstr \"Limerick\"\n\n#: ie/ie_counties.py:26\nmsgid \"Longford\"\nmsgstr \"Longford\"\n\n#: ie/ie_counties.py:27\nmsgid \"Louth\"\nmsgstr \"Louth\"\n\n#: ie/ie_counties.py:28\nmsgid \"Mayo\"\nmsgstr \"Mayo\"\n\n#: ie/ie_counties.py:29\nmsgid \"Meath\"\nmsgstr \"Meath\"\n\n#: ie/ie_counties.py:30\nmsgid \"Monaghan\"\nmsgstr \"Monaghan\"\n\n#: ie/ie_counties.py:31\nmsgid \"Offaly\"\nmsgstr \"Offaly\"\n\n#: ie/ie_counties.py:32\nmsgid \"Roscommon\"\nmsgstr \"Roscommon\"\n\n#: ie/ie_counties.py:33\nmsgid \"Sligo\"\nmsgstr \"Sligo\"\n\n#: ie/ie_counties.py:34\nmsgid \"Tipperary\"\nmsgstr \"Tipperary\"\n\n#: ie/ie_counties.py:35\nmsgid \"Tyrone\"\nmsgstr \"Tyrone\"\n\n#: ie/ie_counties.py:36\nmsgid \"Waterford\"\nmsgstr \"Waterford\"\n\n#: ie/ie_counties.py:37\nmsgid \"Westmeath\"\nmsgstr \"Westmeath\"\n\n#: ie/ie_counties.py:38\nmsgid \"Wexford\"\nmsgstr \"Wexford\"\n\n#: ie/ie_counties.py:39\nmsgid \"Wicklow\"\nmsgstr \"Wicklow\"\n\n#: il/forms.py:32\nmsgid \"Enter a postal code in the format XXXXX\"\nmsgstr \"Introduzca un código postal en el formato XXXXX\"\n\n#: il/forms.py:51\nmsgid \"Enter a valid ID number.\"\nmsgstr \"Introduzca un número de identificación válido.\"\n\n#: in_/forms.py:41\nmsgid \"Enter a zip code in the format XXXXXX or XXX XXX.\"\nmsgstr \"Introduzca un código postal en el formato XXXXXX o XXX XXX.\"\n\n#: in_/forms.py:64\nmsgid \"Enter an Indian state or territory.\"\nmsgstr \"Introduzca en un estado o territorio Indú.\"\n\n#: in_/forms.py:103\nmsgid \"Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.\"\nmsgstr \"\"\n\"Los números de teléfono deben estar en el formato 02X-8X o 03X-7X o 04X-6X.\"\n\n#: is_/forms.py:22\nmsgid \"\"\n\"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.\"\nmsgstr \"\"\n\"Introduzca un número válido de identificación islandesa. El formato es \"\n\"XXXXXX-XXXX.\"\n\n#: is_/forms.py:23\nmsgid \"The Icelandic identification number is not valid.\"\nmsgstr \"El número de identificación islandesa no es válido.\"\n\n#: it/forms.py:21\nmsgid \"Enter a valid zip code.\"\nmsgstr \"Introduzca un código postal válido.\"\n\n#: it/forms.py:48\nmsgid \"Enter a valid Social Security number.\"\nmsgstr \"Introduzca un número de Seguro Social.\"\n\n#: it/forms.py:73\nmsgid \"Enter a valid VAT number.\"\nmsgstr \"Introduzca un número VAT válido.\"\n\n#: jp/forms.py:19\nmsgid \"Enter a postal code in the format XXXXXXX or XXX-XXXX.\"\nmsgstr \"Introduzca un código postal en el formato XXXXXXX o XXX-XXXX.\"\n\n#: jp/jp_prefectures.py:4\nmsgid \"Hokkaido\"\nmsgstr \"Hokkaido\"\n\n#: jp/jp_prefectures.py:5\nmsgid \"Aomori\"\nmsgstr \"Aomori\"\n\n#: jp/jp_prefectures.py:6\nmsgid \"Iwate\"\nmsgstr \"Iwate\"\n\n#: jp/jp_prefectures.py:7\nmsgid \"Miyagi\"\nmsgstr \"Miyagi\"\n\n#: jp/jp_prefectures.py:8\nmsgid \"Akita\"\nmsgstr \"Akita\"\n\n#: jp/jp_prefectures.py:9\nmsgid \"Yamagata\"\nmsgstr \"Yamagata\"\n\n#: jp/jp_prefectures.py:10\nmsgid \"Fukushima\"\nmsgstr \"Fukushima\"\n\n#: jp/jp_prefectures.py:11\nmsgid \"Ibaraki\"\nmsgstr \"Ibaraki\"\n\n#: jp/jp_prefectures.py:12\nmsgid \"Tochigi\"\nmsgstr \"Tochigi\"\n\n#: jp/jp_prefectures.py:13\nmsgid \"Gunma\"\nmsgstr \"Gunma\"\n\n#: jp/jp_prefectures.py:14\nmsgid \"Saitama\"\nmsgstr \"Saitama\"\n\n#: jp/jp_prefectures.py:15\nmsgid \"Chiba\"\nmsgstr \"Chiba\"\n\n#: jp/jp_prefectures.py:16\nmsgid \"Tokyo\"\nmsgstr \"Tokyo\"\n\n#: jp/jp_prefectures.py:17\nmsgid \"Kanagawa\"\nmsgstr \"Kanagawa\"\n\n#: jp/jp_prefectures.py:18\nmsgid \"Yamanashi\"\nmsgstr \"Yamanashi\"\n\n#: jp/jp_prefectures.py:19\nmsgid \"Nagano\"\nmsgstr \"Nagano\"\n\n#: jp/jp_prefectures.py:20\nmsgid \"Niigata\"\nmsgstr \"Niigata\"\n\n#: jp/jp_prefectures.py:21\nmsgid \"Toyama\"\nmsgstr \"Toyama\"\n\n#: jp/jp_prefectures.py:22\nmsgid \"Ishikawa\"\nmsgstr \"Ishikawa\"\n\n#: jp/jp_prefectures.py:23\nmsgid \"Fukui\"\nmsgstr \"Fukui\"\n\n#: jp/jp_prefectures.py:24\nmsgid \"Gifu\"\nmsgstr \"Gifu\"\n\n#: jp/jp_prefectures.py:25\nmsgid \"Shizuoka\"\nmsgstr \"Shizuoka\"\n\n#: jp/jp_prefectures.py:26\nmsgid \"Aichi\"\nmsgstr \"Aichi\"\n\n#: jp/jp_prefectures.py:27\nmsgid \"Mie\"\nmsgstr \"Mie\"\n\n#: jp/jp_prefectures.py:28\nmsgid \"Shiga\"\nmsgstr \"Shiga\"\n\n#: jp/jp_prefectures.py:29\nmsgid \"Kyoto\"\nmsgstr \"Kyoto\"\n\n#: jp/jp_prefectures.py:30\nmsgid \"Osaka\"\nmsgstr \"Osaka\"\n\n#: jp/jp_prefectures.py:31\nmsgid \"Hyogo\"\nmsgstr \"Hyogo\"\n\n#: jp/jp_prefectures.py:32\nmsgid \"Nara\"\nmsgstr \"Nara\"\n\n#: jp/jp_prefectures.py:33\nmsgid \"Wakayama\"\nmsgstr \"Wakayama\"\n\n#: jp/jp_prefectures.py:34\nmsgid \"Tottori\"\nmsgstr \"Tottori\"\n\n#: jp/jp_prefectures.py:35\nmsgid \"Shimane\"\nmsgstr \"Shimane\"\n\n#: jp/jp_prefectures.py:36\nmsgid \"Okayama\"\nmsgstr \"Okayama\"\n\n#: jp/jp_prefectures.py:37\nmsgid \"Hiroshima\"\nmsgstr \"Hiroshima\"\n\n#: jp/jp_prefectures.py:38\nmsgid \"Yamaguchi\"\nmsgstr \"Yamaguchi\"\n\n#: jp/jp_prefectures.py:39\nmsgid \"Tokushima\"\nmsgstr \"Tokushima\"\n\n#: jp/jp_prefectures.py:40\nmsgid \"Kagawa\"\nmsgstr \"Kagawa\"\n\n#: jp/jp_prefectures.py:41\nmsgid \"Ehime\"\nmsgstr \"Ehime\"\n\n#: jp/jp_prefectures.py:42\nmsgid \"Kochi\"\nmsgstr \"Kochi\"\n\n#: jp/jp_prefectures.py:43\nmsgid \"Fukuoka\"\nmsgstr \"Fukuoka\"\n\n#: jp/jp_prefectures.py:44\nmsgid \"Saga\"\nmsgstr \"Saga\"\n\n#: jp/jp_prefectures.py:45\nmsgid \"Nagasaki\"\nmsgstr \"Nagasaki\"\n\n#: jp/jp_prefectures.py:46\nmsgid \"Kumamoto\"\nmsgstr \"Kumamoto\"\n\n#: jp/jp_prefectures.py:47\nmsgid \"Oita\"\nmsgstr \"Oita\"\n\n#: jp/jp_prefectures.py:48\nmsgid \"Miyazaki\"\nmsgstr \"Miyazaki\"\n\n#: jp/jp_prefectures.py:49\nmsgid \"Kagoshima\"\nmsgstr \"Kagoshima\"\n\n#: jp/jp_prefectures.py:50\nmsgid \"Okinawa\"\nmsgstr \"Okinawa\"\n\n#: kw/forms.py:27\nmsgid \"Enter a valid Kuwaiti Civil ID number\"\nmsgstr \"Introduzca un número de identificación civil kuwaití\"\n\n#: mk/forms.py:18\nmsgid \"\"\n\"Identity card numbers must contain either 4 to 7 digits or an uppercase \"\n\"letter and 7 digits.\"\nmsgstr \"\"\n\"Los números de la tarjeta de identidad deben contener de 4 a 7 dígitos o una \"\n\"letra mayúscula y dígitos 7.\"\n\n#: mk/forms.py:57 si/forms.py:24\nmsgid \"This field should contain exactly 13 digits.\"\nmsgstr \"Este campo debe contener exactamente 13 dígitos.\"\n\n#: mk/forms.py:58\nmsgid \"The first 7 digits of the UMCN must represent a valid past date.\"\nmsgstr \"\"\n\"Los 7 primeros dígitos de la UMCN deben representar una fecha pasada válida.\"\n\n#: mk/forms.py:59\nmsgid \"The UMCN is not valid.\"\nmsgstr \"El UMCN no es válido.\"\n\n#: mk/mk_choices.py:10\nmsgid \"Aerodrom\"\nmsgstr \"Aerodrom\"\n\n#: mk/mk_choices.py:11\nmsgid \"Aračinovo\"\nmsgstr \"Aračinovo\"\n\n#: mk/mk_choices.py:12\nmsgid \"Berovo\"\nmsgstr \"Berovo\"\n\n#: mk/mk_choices.py:13\nmsgid \"Bitola\"\nmsgstr \"Bitola\"\n\n#: mk/mk_choices.py:14\nmsgid \"Bogdanci\"\nmsgstr \"Bogdanci\"\n\n#: mk/mk_choices.py:15\nmsgid \"Bogovinje\"\nmsgstr \"Bogovinje\"\n\n#: mk/mk_choices.py:16\nmsgid \"Bosilovo\"\nmsgstr \"Bosilovo\"\n\n#: mk/mk_choices.py:17\nmsgid \"Brvenica\"\nmsgstr \"Brvenica\"\n\n#: mk/mk_choices.py:18\nmsgid \"Butel\"\nmsgstr \"Butel\"\n\n#: mk/mk_choices.py:19\nmsgid \"Valandovo\"\nmsgstr \"Valandovo\"\n\n#: mk/mk_choices.py:20\nmsgid \"Vasilevo\"\nmsgstr \"Vasilevo\"\n\n#: mk/mk_choices.py:21\nmsgid \"Vevčani\"\nmsgstr \"Vevčani\"\n\n#: mk/mk_choices.py:22\nmsgid \"Veles\"\nmsgstr \"Veles\"\n\n#: mk/mk_choices.py:23\nmsgid \"Vinica\"\nmsgstr \"Vinica\"\n\n#: mk/mk_choices.py:24\nmsgid \"Vraneštica\"\nmsgstr \"Vraneštica\"\n\n#: mk/mk_choices.py:25\nmsgid \"Vrapčište\"\nmsgstr \"Vrapčište\"\n\n#: mk/mk_choices.py:26\nmsgid \"Gazi Baba\"\nmsgstr \"Gazi Baba\"\n\n#: mk/mk_choices.py:27\nmsgid \"Gevgelija\"\nmsgstr \"Gevgelija\"\n\n#: mk/mk_choices.py:28\nmsgid \"Gostivar\"\nmsgstr \"Gostivar\"\n\n#: mk/mk_choices.py:29\nmsgid \"Gradsko\"\nmsgstr \"Gradsko\"\n\n#: mk/mk_choices.py:30\nmsgid \"Debar\"\nmsgstr \"Debar\"\n\n#: mk/mk_choices.py:31\nmsgid \"Debarca\"\nmsgstr \"Debarca\"\n\n#: mk/mk_choices.py:32\nmsgid \"Delčevo\"\nmsgstr \"Delčevo\"\n\n#: mk/mk_choices.py:33\nmsgid \"Demir Kapija\"\nmsgstr \"Demir Kapija\"\n\n#: mk/mk_choices.py:34\nmsgid \"Demir Hisar\"\nmsgstr \"Demir Hisar\"\n\n#: mk/mk_choices.py:35\nmsgid \"Dolneni\"\nmsgstr \"Dolneni\"\n\n#: mk/mk_choices.py:36\nmsgid \"Drugovo\"\nmsgstr \"Drugovo\"\n\n#: mk/mk_choices.py:37\nmsgid \"Gjorče Petrov\"\nmsgstr \"Gjorče Petrov\"\n\n#: mk/mk_choices.py:38\nmsgid \"Želino\"\nmsgstr \"Želino\"\n\n#: mk/mk_choices.py:39\nmsgid \"Zajas\"\nmsgstr \"Zajas\"\n\n#: mk/mk_choices.py:40\nmsgid \"Zelenikovo\"\nmsgstr \"Zelenikovo\"\n\n#: mk/mk_choices.py:41\nmsgid \"Zrnovci\"\nmsgstr \"Zrnovci\"\n\n#: mk/mk_choices.py:42\nmsgid \"Ilinden\"\nmsgstr \"Ilinden\"\n\n#: mk/mk_choices.py:43\nmsgid \"Jegunovce\"\nmsgstr \"Jegunovce\"\n\n#: mk/mk_choices.py:44\nmsgid \"Kavadarci\"\nmsgstr \"Kavadarci\"\n\n#: mk/mk_choices.py:45\nmsgid \"Karbinci\"\nmsgstr \"Karbinci\"\n\n#: mk/mk_choices.py:46\nmsgid \"Karpoš\"\nmsgstr \"Karpoš\"\n\n#: mk/mk_choices.py:47\nmsgid \"Kisela Voda\"\nmsgstr \"Kisela Voda\"\n\n#: mk/mk_choices.py:48\nmsgid \"Kičevo\"\nmsgstr \"Kičevo\"\n\n#: mk/mk_choices.py:49\nmsgid \"Konče\"\nmsgstr \"Konče\"\n\n#: mk/mk_choices.py:50\nmsgid \"Koćani\"\nmsgstr \"Koćani\"\n\n#: mk/mk_choices.py:51\nmsgid \"Kratovo\"\nmsgstr \"Kratovo\"\n\n#: mk/mk_choices.py:52\nmsgid \"Kriva Palanka\"\nmsgstr \"Kriva Palanka\"\n\n#: mk/mk_choices.py:53\nmsgid \"Krivogaštani\"\nmsgstr \"Krivogaštani\"\n\n#: mk/mk_choices.py:54\nmsgid \"Kruševo\"\nmsgstr \"Kruševo\"\n\n#: mk/mk_choices.py:55\nmsgid \"Kumanovo\"\nmsgstr \"Kumanovo\"\n\n#: mk/mk_choices.py:56\nmsgid \"Lipkovo\"\nmsgstr \"Lipkovo\"\n\n#: mk/mk_choices.py:57\nmsgid \"Lozovo\"\nmsgstr \"Lozovo\"\n\n#: mk/mk_choices.py:58\nmsgid \"Mavrovo i Rostuša\"\nmsgstr \"Mavrovo i Rostuša\"\n\n#: mk/mk_choices.py:59\nmsgid \"Makedonska Kamenica\"\nmsgstr \"Makedonska Kamenica\"\n\n#: mk/mk_choices.py:60\nmsgid \"Makedonski Brod\"\nmsgstr \"Makedonski Brod\"\n\n#: mk/mk_choices.py:61\nmsgid \"Mogila\"\nmsgstr \"Mogila\"\n\n#: mk/mk_choices.py:62\nmsgid \"Negotino\"\nmsgstr \"Negotino\"\n\n#: mk/mk_choices.py:63\nmsgid \"Novaci\"\nmsgstr \"Novaci\"\n\n#: mk/mk_choices.py:64\nmsgid \"Novo Selo\"\nmsgstr \"Novo Selo\"\n\n#: mk/mk_choices.py:65\nmsgid \"Oslomej\"\nmsgstr \"Oslomej\"\n\n#: mk/mk_choices.py:66\nmsgid \"Ohrid\"\nmsgstr \"Ohrid\"\n\n#: mk/mk_choices.py:67\nmsgid \"Petrovec\"\nmsgstr \"Petrovec\"\n\n#: mk/mk_choices.py:68\nmsgid \"Pehčevo\"\nmsgstr \"Pehčevo\"\n\n#: mk/mk_choices.py:69\nmsgid \"Plasnica\"\nmsgstr \"Plasnica\"\n\n#: mk/mk_choices.py:70\nmsgid \"Prilep\"\nmsgstr \"Prilep\"\n\n#: mk/mk_choices.py:71\nmsgid \"Probištip\"\nmsgstr \"Probištip\"\n\n#: mk/mk_choices.py:72\nmsgid \"Radoviš\"\nmsgstr \"Radoviš\"\n\n#: mk/mk_choices.py:73\nmsgid \"Rankovce\"\nmsgstr \"Rankovce\"\n\n#: mk/mk_choices.py:74\nmsgid \"Resen\"\nmsgstr \"Resen\"\n\n#: mk/mk_choices.py:75\nmsgid \"Rosoman\"\nmsgstr \"Rosoman\"\n\n#: mk/mk_choices.py:76\nmsgid \"Saraj\"\nmsgstr \"Saraj\"\n\n#: mk/mk_choices.py:77\nmsgid \"Sveti Nikole\"\nmsgstr \"Sveti Nikole\"\n\n#: mk/mk_choices.py:78\nmsgid \"Sopište\"\nmsgstr \"Sopište\"\n\n#: mk/mk_choices.py:79\nmsgid \"Star Dojran\"\nmsgstr \"Star Dojran\"\n\n#: mk/mk_choices.py:80\nmsgid \"Staro Nagoričane\"\nmsgstr \"Staro Nagoričane\"\n\n#: mk/mk_choices.py:81\nmsgid \"Struga\"\nmsgstr \"Struga\"\n\n#: mk/mk_choices.py:82\nmsgid \"Strumica\"\nmsgstr \"Strumica\"\n\n#: mk/mk_choices.py:83\nmsgid \"Studeničani\"\nmsgstr \"Studeničani\"\n\n#: mk/mk_choices.py:84\nmsgid \"Tearce\"\nmsgstr \"Tearce\"\n\n#: mk/mk_choices.py:85\nmsgid \"Tetovo\"\nmsgstr \"Tetovo\"\n\n#: mk/mk_choices.py:86\nmsgid \"Centar\"\nmsgstr \"Centar\"\n\n#: mk/mk_choices.py:87\nmsgid \"Centar-Župa\"\nmsgstr \"Centar-Župa\"\n\n#: mk/mk_choices.py:88\nmsgid \"Čair\"\nmsgstr \"Čair\"\n\n#: mk/mk_choices.py:89\nmsgid \"Čaška\"\nmsgstr \"Čaška\"\n\n#: mk/mk_choices.py:90\nmsgid \"Češinovo-Obleševo\"\nmsgstr \"Češinovo-Obleševo\"\n\n#: mk/mk_choices.py:91\nmsgid \"Čučer-Sandevo\"\nmsgstr \"Čučer-Sandevo\"\n\n#: mk/mk_choices.py:92\nmsgid \"Štip\"\nmsgstr \"Štip\"\n\n#: mk/mk_choices.py:93\nmsgid \"Šuto Orizari\"\nmsgstr \"Šuto Orizari\"\n\n#: mk/models.py:11\nmsgid \"Macedonian identity card number\"\nmsgstr \"Número de tarjeta de identidad de Macedonia\"\n\n#: mk/models.py:25\nmsgid \"A Macedonian municipality (2 character code)\"\nmsgstr \"Un municipio de Macedonia (Código de 2 caracteres)\"\n\n#: mk/models.py:35\nmsgid \"Unique master citizen number (13 digits)\"\nmsgstr \"Cédula maestra única de ciudadanía número (13 dígitos)\"\n\n#: mx/forms.py:67\nmsgid \"Enter a valid zip code in the format XXXXX.\"\nmsgstr \"Introduzca un código postal válido en el formato de XXXXX.\"\n\n#: mx/forms.py:110\nmsgid \"Enter a valid RFC.\"\nmsgstr \"Ingresa un RFC válido.\"\n\n#: mx/forms.py:111\nmsgid \"Invalid checksum for RFC.\"\nmsgstr \"RFC inválido.\"\n\n#: mx/forms.py:191\nmsgid \"Enter a valid CURP.\"\nmsgstr \"Ingresa una CURP válida.\"\n\n#: mx/forms.py:192\nmsgid \"Invalid checksum for CURP.\"\nmsgstr \"CURP inválido.\"\n\n#: mx/models.py:14\nmsgid \"Mexico state (three uppercase letters)\"\nmsgstr \"Estado de México (tres letras mayúsculas)\"\n\n#: mx/models.py:27\nmsgid \"Mexico zip code\"\nmsgstr \"Código postal mexicano\"\n\n#: mx/models.py:44\nmsgid \"Mexican RFC\"\nmsgstr \"RFC mexicano\"\n\n#: mx/models.py:61\nmsgid \"Mexican CURP\"\nmsgstr \"CURP mexicano\"\n\n#: mx/mx_states.py:14\nmsgid \"Aguascalientes\"\nmsgstr \"Aguascalientes\"\n\n#: mx/mx_states.py:15\nmsgid \"Baja California\"\nmsgstr \"Baja California\"\n\n#: mx/mx_states.py:16\nmsgid \"Baja California Sur\"\nmsgstr \"Baja California Sur\"\n\n#: mx/mx_states.py:17\nmsgid \"Campeche\"\nmsgstr \"Campeche\"\n\n#: mx/mx_states.py:18\nmsgid \"Chihuahua\"\nmsgstr \"Chihuahua\"\n\n#: mx/mx_states.py:19\nmsgid \"Chiapas\"\nmsgstr \"Chiapas\"\n\n#: mx/mx_states.py:20\nmsgid \"Coahuila\"\nmsgstr \"Coahuila\"\n\n#: mx/mx_states.py:21\nmsgid \"Colima\"\nmsgstr \"Colima\"\n\n#: mx/mx_states.py:22\nmsgid \"Distrito Federal\"\nmsgstr \"Distrito Federal\"\n\n#: mx/mx_states.py:23\nmsgid \"Durango\"\nmsgstr \"Durango\"\n\n#: mx/mx_states.py:24\nmsgid \"Guerrero\"\nmsgstr \"Guerrero\"\n\n#: mx/mx_states.py:25\nmsgid \"Guanajuato\"\nmsgstr \"Guanajuato\"\n\n#: mx/mx_states.py:26\nmsgid \"Hidalgo\"\nmsgstr \"Hidalgo\"\n\n#: mx/mx_states.py:27\nmsgid \"Jalisco\"\nmsgstr \"Jalisco\"\n\n#: mx/mx_states.py:28\nmsgid \"Estado de México\"\nmsgstr \"Estado de México\"\n\n#: mx/mx_states.py:29\nmsgid \"Michoacán\"\nmsgstr \"Michoacán\"\n\n#: mx/mx_states.py:30\nmsgid \"Morelos\"\nmsgstr \"Morelos\"\n\n#: mx/mx_states.py:31\nmsgid \"Nayarit\"\nmsgstr \"Nayarit\"\n\n#: mx/mx_states.py:32\nmsgid \"Nuevo León\"\nmsgstr \"Nuevo León\"\n\n#: mx/mx_states.py:33\nmsgid \"Oaxaca\"\nmsgstr \"Oaxaca\"\n\n#: mx/mx_states.py:34\nmsgid \"Puebla\"\nmsgstr \"Puebla\"\n\n#: mx/mx_states.py:35\nmsgid \"Querétaro\"\nmsgstr \"Querétaro\"\n\n#: mx/mx_states.py:36\nmsgid \"Quintana Roo\"\nmsgstr \"Quintana Roo\"\n\n#: mx/mx_states.py:37\nmsgid \"Sinaloa\"\nmsgstr \"Sinaloa\"\n\n#: mx/mx_states.py:38\nmsgid \"San Luis Potosí\"\nmsgstr \"San Luis Potosí\"\n\n#: mx/mx_states.py:39\nmsgid \"Sonora\"\nmsgstr \"Sonora\"\n\n#: mx/mx_states.py:40\nmsgid \"Tabasco\"\nmsgstr \"Tabasco\"\n\n#: mx/mx_states.py:41\nmsgid \"Tamaulipas\"\nmsgstr \"Tamaulipas\"\n\n#: mx/mx_states.py:42\nmsgid \"Tlaxcala\"\nmsgstr \"Tlaxcala\"\n\n#: mx/mx_states.py:43\nmsgid \"Veracruz\"\nmsgstr \"Veracruz\"\n\n#: mx/mx_states.py:44\nmsgid \"Yucatán\"\nmsgstr \"Yucatán\"\n\n#: mx/mx_states.py:45\nmsgid \"Zacatecas\"\nmsgstr \"Zacatecas\"\n\n#: nl/forms.py:26\nmsgid \"Enter a valid postal code\"\nmsgstr \"Introduzca un código postal válido\"\n\n#: nl/forms.py:82\nmsgid \"Enter a valid SoFi number\"\nmsgstr \"Introduzca un número SoFi válido\"\n\n#: nl/nl_provinces.py:4\nmsgid \"Drenthe\"\nmsgstr \"Drenthe\"\n\n#: nl/nl_provinces.py:5\nmsgid \"Flevoland\"\nmsgstr \"Flevoland\"\n\n#: nl/nl_provinces.py:6\nmsgid \"Friesland\"\nmsgstr \"Friesland\"\n\n#: nl/nl_provinces.py:7\nmsgid \"Gelderland\"\nmsgstr \"Gelderland\"\n\n#: nl/nl_provinces.py:8\nmsgid \"Groningen\"\nmsgstr \"Groningen\"\n\n#: nl/nl_provinces.py:10\nmsgid \"Noord-Brabant\"\nmsgstr \"Noord-Brabant\"\n\n#: nl/nl_provinces.py:11\nmsgid \"Noord-Holland\"\nmsgstr \"Noord-Holland\"\n\n#: nl/nl_provinces.py:12\nmsgid \"Overijssel\"\nmsgstr \"Overijssel\"\n\n#: nl/nl_provinces.py:13\nmsgid \"Utrecht\"\nmsgstr \"Utrecht\"\n\n#: nl/nl_provinces.py:14\nmsgid \"Zeeland\"\nmsgstr \"Zeeland\"\n\n#: nl/nl_provinces.py:15\nmsgid \"Zuid-Holland\"\nmsgstr \"Zuid-Holland\"\n\n#: no/forms.py:39\nmsgid \"Enter a valid Norwegian social security number.\"\nmsgstr \"Introduzca un número válido de la seguridad social noruego.\"\n\n#: pe/forms.py:28\nmsgid \"This field requires 8 digits.\"\nmsgstr \"Este campo requiere de 8 dígitos.\"\n\n#: pe/forms.py:56\nmsgid \"This field requires 11 digits.\"\nmsgstr \"Este campo requiere de 11 dígitos.\"\n\n#: pl/forms.py:42\nmsgid \"National Identification Number consists of 11 digits.\"\nmsgstr \"Número de Identidad Nacional se compone de 11 dígitos.\"\n\n#: pl/forms.py:43\nmsgid \"Wrong checksum for the National Identification Number.\"\nmsgstr \"El Número de Identificación Nacional es incorrecto.\"\n\n#: pl/forms.py:79\nmsgid \"National ID Card Number consists of 3 letters and 6 digits.\"\nmsgstr \"\"\n\"El número de tarjeta de identificación nacional se compone de 3 letras y \"\n\"dígitos 6.\"\n\n#: pl/forms.py:80\nmsgid \"Wrong checksum for the National ID Card Number.\"\nmsgstr \"El número de tarjeta de identificación nacional es inválido.\"\n\n#: pl/forms.py:131\nmsgid \"\"\n\"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or \"\n\"XXXXXXXXXX.\"\nmsgstr \"\"\n\"Introduzca un campo de número de identificación fiscal (NIP) en el formato \"\n\"XXX-XXX-XX-XX, XXX-XX-XX-XXX o XXXXXXXXXX.\"\n\n#: pl/forms.py:132\nmsgid \"Wrong checksum for the Tax Number (NIP).\"\nmsgstr \"El Número de Identificación Tributaria (NIP) es incorrecto.\"\n\n#: pl/forms.py:171\nmsgid \"National Business Register Number (REGON) consists of 9 or 14 digits.\"\nmsgstr \"\"\n\"El Número Nacional de Registro de Negocios (REGON) consiste en 9 o 14 \"\n\"dígitos.\"\n\n#: pl/forms.py:172\nmsgid \"Wrong checksum for the National Business Register Number (REGON).\"\nmsgstr \"El Número Nacional de Registro de Negocios (REGON) es incorrecto.\"\n\n#: pl/forms.py:212\nmsgid \"Enter a postal code in the format XX-XXX.\"\nmsgstr \"Introduzca un código postal en el formato XX-XXX.\"\n\n#: pl/pl_voivodeships.py:8\nmsgid \"Lower Silesia\"\nmsgstr \"Baja Silesia\"\n\n#: pl/pl_voivodeships.py:9\nmsgid \"Kuyavia-Pomerania\"\nmsgstr \"Kuyavia-Pomerania\"\n\n#: pl/pl_voivodeships.py:10\nmsgid \"Lublin\"\nmsgstr \"Lublin\"\n\n#: pl/pl_voivodeships.py:11\nmsgid \"Lubusz\"\nmsgstr \"Lubusz\"\n\n#: pl/pl_voivodeships.py:12\nmsgid \"Lodz\"\nmsgstr \"Lodz\"\n\n#: pl/pl_voivodeships.py:13\nmsgid \"Lesser Poland\"\nmsgstr \"Lesser Poland\"\n\n#: pl/pl_voivodeships.py:14\nmsgid \"Masovia\"\nmsgstr \"Masovia\"\n\n#: pl/pl_voivodeships.py:15\nmsgid \"Opole\"\nmsgstr \"Opole\"\n\n#: pl/pl_voivodeships.py:16\nmsgid \"Subcarpatia\"\nmsgstr \"Subcarpatia\"\n\n#: pl/pl_voivodeships.py:17\nmsgid \"Podlasie\"\nmsgstr \"Podlasie\"\n\n#: pl/pl_voivodeships.py:18\nmsgid \"Pomerania\"\nmsgstr \"Pomerania\"\n\n#: pl/pl_voivodeships.py:19\nmsgid \"Silesia\"\nmsgstr \"Silesia\"\n\n#: pl/pl_voivodeships.py:20\nmsgid \"Swietokrzyskie\"\nmsgstr \"Swietokrzyskie\"\n\n#: pl/pl_voivodeships.py:21\nmsgid \"Warmia-Masuria\"\nmsgstr \"Warmia-Masuria\"\n\n#: pl/pl_voivodeships.py:22\nmsgid \"Greater Poland\"\nmsgstr \"Greater Poland\"\n\n#: pl/pl_voivodeships.py:23\nmsgid \"West Pomerania\"\nmsgstr \"Pomerania Occidental\"\n\n#: pt/forms.py:19\nmsgid \"Enter a zip code in the format XXXX-XXX.\"\nmsgstr \"Introduzca un código postal en el formato XXXX-XXX.\"\n\n#: pt/forms.py:39\nmsgid \"Phone numbers must have 9 digits, or start by + or 00.\"\nmsgstr \"Los número de teléfono debe tener 9 dígitos, o empezar con + ó 00.\"\n\n#: ro/forms.py:22\nmsgid \"Enter a valid CIF.\"\nmsgstr \"Introduzca un CIF válido.\"\n\n#: ro/forms.py:59\nmsgid \"Enter a valid CNP.\"\nmsgstr \"Introduzca un CNP válido.\"\n\n#: ro/forms.py:143\nmsgid \"Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format\"\nmsgstr \"\"\n\"Introduzca un código IBAN válido en el formato ROXX-XXXX-XXXX-XXXX-XXXX-XXXX.\"\n\n#: ro/forms.py:175\nmsgid \"Phone numbers must be in XXXX-XXXXXX format.\"\nmsgstr \"Los números de teléfono debe estar en formato XXXX-XXXXXX.\"\n\n#: ro/forms.py:200\nmsgid \"Enter a valid postal code in the format XXXXXX\"\nmsgstr \"Introduzca un código postal válido en el formato XXXXXX\"\n\n#: ru/forms.py:37\nmsgid \"Enter a postal code in the format XXXXXX.\"\nmsgstr \"Introduzca un código postal en el formato XXXXXX.\"\n\n#: ru/forms.py:50\nmsgid \"Enter a passport number in the format XXXX XXXXXX.\"\nmsgstr \"Introduzca un número de pasaporte en el formato XXXX XXXXXX.\"\n\n#: ru/forms.py:63\nmsgid \"Enter a passport number in the format XX XXXXXXX.\"\nmsgstr \"Introduzca un número de pasaporte en el formato XX XXXXXXX.\"\n\n#: ru/ru_regions.py:10\nmsgid \"Central Federal County\"\nmsgstr \"Condado Federal Central\"\n\n#: ru/ru_regions.py:11\nmsgid \"South Federal County\"\nmsgstr \"Condado Federal Sur\"\n\n#: ru/ru_regions.py:12\nmsgid \"North-West Federal County\"\nmsgstr \"Condado Federal Noroeste\"\n\n#: ru/ru_regions.py:13\nmsgid \"Far-East Federal County\"\nmsgstr \"Condado Federal de Lejano Oriente\"\n\n#: ru/ru_regions.py:14\nmsgid \"Siberian Federal County\"\nmsgstr \"Condado Federal Siberio\"\n\n#: ru/ru_regions.py:15\nmsgid \"Ural Federal County\"\nmsgstr \"Condado Federal Ural\"\n\n#: ru/ru_regions.py:16\nmsgid \"Privolzhsky Federal County\"\nmsgstr \"Privolzhsky Condado Federal\"\n\n#: ru/ru_regions.py:17\nmsgid \"North-Caucasian Federal County\"\nmsgstr \"North-Caucasian Condado Federal\"\n\n#: ru/ru_regions.py:21\nmsgid \"Moskva\"\nmsgstr \"Moskva\"\n\n#: ru/ru_regions.py:22\nmsgid \"Saint-Peterburg\"\nmsgstr \"San Petersburgo\"\n\n#: ru/ru_regions.py:23\nmsgid \"Moskovskaya oblast'\"\nmsgstr \"Moskovskaya oblast'\"\n\n#: ru/ru_regions.py:24\nmsgid \"Adygeya, Respublika\"\nmsgstr \"Adygeya, Respublika\"\n\n#: ru/ru_regions.py:25\nmsgid \"Bashkortostan, Respublika\"\nmsgstr \"Bashkortostan, Respublika\"\n\n#: ru/ru_regions.py:26\nmsgid \"Buryatia, Respublika\"\nmsgstr \"Buryatia, Respublika\"\n\n#: ru/ru_regions.py:27\nmsgid \"Altay, Respublika\"\nmsgstr \"Altay, Respublika\"\n\n#: ru/ru_regions.py:28\nmsgid \"Dagestan, Respublika\"\nmsgstr \"Dagestan, Respublika\"\n\n#: ru/ru_regions.py:29\nmsgid \"Ingushskaya Respublika\"\nmsgstr \"Ingushskaya Respublika\"\n\n#: ru/ru_regions.py:30\nmsgid \"Kabardino-Balkarskaya Respublika\"\nmsgstr \"Kabardino-Balkarskaya Respublika\"\n\n#: ru/ru_regions.py:31\nmsgid \"Kalmykia, Respublika\"\nmsgstr \"Kalmykia, Respublika\"\n\n#: ru/ru_regions.py:32\nmsgid \"Karachaevo-Cherkesskaya Respublika\"\nmsgstr \"Karachaevo-Cherkesskaya Respublika\"\n\n#: ru/ru_regions.py:33\nmsgid \"Karelia, Respublika\"\nmsgstr \"Karelia, Respublika\"\n\n#: ru/ru_regions.py:34\nmsgid \"Komi, Respublika\"\nmsgstr \"Komi, Respublika\"\n\n#: ru/ru_regions.py:35\nmsgid \"Mariy Ehl, Respublika\"\nmsgstr \"Mariy Ehl, Respublika\"\n\n#: ru/ru_regions.py:36\nmsgid \"Mordovia, Respublika\"\nmsgstr \"Mordovia, Respublika\"\n\n#: ru/ru_regions.py:37\nmsgid \"Sakha, Respublika (Yakutiya)\"\nmsgstr \"Sakha, Respublika (Yakutiya)\"\n\n#: ru/ru_regions.py:38\nmsgid \"Severnaya Osetia, Respublika (Alania)\"\nmsgstr \"Severnaya Osetia, Respublika (Alania)\"\n\n#: ru/ru_regions.py:39\nmsgid \"Tatarstan, Respublika\"\nmsgstr \"Tatarstan, Respublika\"\n\n#: ru/ru_regions.py:40\nmsgid \"Tyva, Respublika (Tuva)\"\nmsgstr \"Tyva, Respublika (Tuva)\"\n\n#: ru/ru_regions.py:41\nmsgid \"Udmurtskaya Respublika\"\nmsgstr \"Udmurtskaya Respublika\"\n\n#: ru/ru_regions.py:42\nmsgid \"Khakassiya, Respublika\"\nmsgstr \"Khakassiya, Respublika\"\n\n#: ru/ru_regions.py:43\nmsgid \"Chechenskaya Respublika\"\nmsgstr \"Chechenskaya Respublika\"\n\n#: ru/ru_regions.py:44\nmsgid \"Chuvashskaya Respublika\"\nmsgstr \"Chuvashskaya Respublika\"\n\n#: ru/ru_regions.py:45\nmsgid \"Altayskiy Kray\"\nmsgstr \"Altayskiy Kray\"\n\n#: ru/ru_regions.py:46\nmsgid \"Zabaykalskiy Kray\"\nmsgstr \"Zabaykalskiy Kray\"\n\n#: ru/ru_regions.py:47\nmsgid \"Kamchatskiy Kray\"\nmsgstr \"Kamchatskiy Kray\"\n\n#: ru/ru_regions.py:48\nmsgid \"Krasnodarskiy Kray\"\nmsgstr \"Krasnodarskiy Kray\"\n\n#: ru/ru_regions.py:49\nmsgid \"Krasnoyarskiy Kray\"\nmsgstr \"Krasnoyarskiy Kray\"\n\n#: ru/ru_regions.py:50\nmsgid \"Permskiy Kray\"\nmsgstr \"Permskiy Kray\"\n\n#: ru/ru_regions.py:51\nmsgid \"Primorskiy Kray\"\nmsgstr \"Primorskiy Kray\"\n\n#: ru/ru_regions.py:52\nmsgid \"Stavropol'siyy Kray\"\nmsgstr \"Stavropol'siyy Kray\"\n\n#: ru/ru_regions.py:53\nmsgid \"Khabarovskiy Kray\"\nmsgstr \"Khabarovskiy Kray\"\n\n#: ru/ru_regions.py:54\nmsgid \"Amurskaya oblast'\"\nmsgstr \"Amurskaya oblast'\"\n\n#: ru/ru_regions.py:55\nmsgid \"Arkhangel'skaya oblast'\"\nmsgstr \"Arkhangel'skaya oblast'\"\n\n#: ru/ru_regions.py:56\nmsgid \"Astrakhanskaya oblast'\"\nmsgstr \"Astrakhanskaya oblast'\"\n\n#: ru/ru_regions.py:57\nmsgid \"Belgorodskaya oblast'\"\nmsgstr \"Belgorodskaya oblast'\"\n\n#: ru/ru_regions.py:58\nmsgid \"Bryanskaya oblast'\"\nmsgstr \"Bryanskaya oblast'\"\n\n#: ru/ru_regions.py:59\nmsgid \"Vladimirskaya oblast'\"\nmsgstr \"Vladimirskaya oblast'\"\n\n#: ru/ru_regions.py:60\nmsgid \"Volgogradskaya oblast'\"\nmsgstr \"Volgogradskaya oblast'\"\n\n#: ru/ru_regions.py:61\nmsgid \"Vologodskaya oblast'\"\nmsgstr \"Vologodskaya oblast'\"\n\n#: ru/ru_regions.py:62\nmsgid \"Voronezhskaya oblast'\"\nmsgstr \"Voronezhskaya oblast'\"\n\n#: ru/ru_regions.py:63\nmsgid \"Ivanovskaya oblast'\"\nmsgstr \"Ivanovskaya oblast'\"\n\n#: ru/ru_regions.py:64\nmsgid \"Irkutskaya oblast'\"\nmsgstr \"Irkutskaya oblast'\"\n\n#: ru/ru_regions.py:65\nmsgid \"Kaliningradskaya oblast'\"\nmsgstr \"Kaliningradskaya oblast'\"\n\n#: ru/ru_regions.py:66\nmsgid \"Kaluzhskaya oblast'\"\nmsgstr \"Kaluzhskaya oblast'\"\n\n#: ru/ru_regions.py:67\nmsgid \"Kemerovskaya oblast'\"\nmsgstr \"Kemerovskaya oblast'\"\n\n#: ru/ru_regions.py:68\nmsgid \"Kirovskaya oblast'\"\nmsgstr \"Kirovskaya oblast'\"\n\n#: ru/ru_regions.py:69\nmsgid \"Kostromskaya oblast'\"\nmsgstr \"Kostromskaya oblast'\"\n\n#: ru/ru_regions.py:70\nmsgid \"Kurganskaya oblast'\"\nmsgstr \"Kurganskaya oblast'\"\n\n#: ru/ru_regions.py:71\nmsgid \"Kurskaya oblast'\"\nmsgstr \"Kurskaya oblast'\"\n\n#: ru/ru_regions.py:72\nmsgid \"Leningradskaya oblast'\"\nmsgstr \"Leningradskaya oblast'\"\n\n#: ru/ru_regions.py:73\nmsgid \"Lipeckaya oblast'\"\nmsgstr \"Lipeckaya oblast'\"\n\n#: ru/ru_regions.py:74\nmsgid \"Magadanskaya oblast'\"\nmsgstr \"Magadanskaya oblast'\"\n\n#: ru/ru_regions.py:75\nmsgid \"Murmanskaya oblast'\"\nmsgstr \"Murmanskaya oblast'\"\n\n#: ru/ru_regions.py:76\nmsgid \"Nizhegorodskaja oblast'\"\nmsgstr \"Nizhegorodskaja oblast'\"\n\n#: ru/ru_regions.py:77\nmsgid \"Novgorodskaya oblast'\"\nmsgstr \"Novgorodskaya oblast'\"\n\n#: ru/ru_regions.py:78\nmsgid \"Novosibirskaya oblast'\"\nmsgstr \"Novosibirskaya oblast'\"\n\n#: ru/ru_regions.py:79\nmsgid \"Omskaya oblast'\"\nmsgstr \"Omskaya oblast'\"\n\n#: ru/ru_regions.py:80\nmsgid \"Orenburgskaya oblast'\"\nmsgstr \"Orenburgskaya oblast'\"\n\n#: ru/ru_regions.py:81\nmsgid \"Orlovskaya oblast'\"\nmsgstr \"Orlovskaya oblast'\"\n\n#: ru/ru_regions.py:82\nmsgid \"Penzenskaya oblast'\"\nmsgstr \"Penzenskaya oblast'\"\n\n#: ru/ru_regions.py:83\nmsgid \"Pskovskaya oblast'\"\nmsgstr \"Pskovskaya oblast'\"\n\n#: ru/ru_regions.py:84\nmsgid \"Rostovskaya oblast'\"\nmsgstr \"Rostovskaya oblast'\"\n\n#: ru/ru_regions.py:85\nmsgid \"Rjazanskaya oblast'\"\nmsgstr \"Rjazanskaya oblast'\"\n\n#: ru/ru_regions.py:86\nmsgid \"Samarskaya oblast'\"\nmsgstr \"Samarskaya oblast'\"\n\n#: ru/ru_regions.py:87\nmsgid \"Saratovskaya oblast'\"\nmsgstr \"Saratovskaya oblast'\"\n\n#: ru/ru_regions.py:88\nmsgid \"Sakhalinskaya oblast'\"\nmsgstr \"Sakhalinskaya oblast'\"\n\n#: ru/ru_regions.py:89\nmsgid \"Sverdlovskaya oblast'\"\nmsgstr \"Sverdlovskaya oblast'\"\n\n#: ru/ru_regions.py:90\nmsgid \"Smolenskaya oblast'\"\nmsgstr \"Smolenskaya oblast'\"\n\n#: ru/ru_regions.py:91\nmsgid \"Tambovskaya oblast'\"\nmsgstr \"Tambovskaya oblast'\"\n\n#: ru/ru_regions.py:92\nmsgid \"Tverskaya oblast'\"\nmsgstr \"Tverskaya oblast'\"\n\n#: ru/ru_regions.py:93\nmsgid \"Tomskaya oblast'\"\nmsgstr \"Tomskaya oblast'\"\n\n#: ru/ru_regions.py:94\nmsgid \"Tul'skaya oblast'\"\nmsgstr \"Tul'skaya oblast'\"\n\n#: ru/ru_regions.py:95\nmsgid \"Tyumenskaya oblast'\"\nmsgstr \"Tyumenskaya oblast'\"\n\n#: ru/ru_regions.py:96\nmsgid \"Ul'ianovskaya oblast'\"\nmsgstr \"Ul'ianovskaya oblast'\"\n\n#: ru/ru_regions.py:97\nmsgid \"Chelyabinskaya oblast'\"\nmsgstr \"Chelyabinskaya oblast'\"\n\n#: ru/ru_regions.py:98\nmsgid \"Yaroslavskaya oblast'\"\nmsgstr \"Yaroslavskaya oblast'\"\n\n#: ru/ru_regions.py:99\nmsgid \"Evreyskaya avtonomnaja oblast'\"\nmsgstr \"Evreyskaya avtonomnaja oblast'\"\n\n#: ru/ru_regions.py:100\nmsgid \"Neneckiy autonomnyy okrug\"\nmsgstr \"Neneckiy autonomnyy okrug\"\n\n#: ru/ru_regions.py:101\nmsgid \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\nmsgstr \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\n\n#: ru/ru_regions.py:102\nmsgid \"Chukotskiy avtonomnyy okrug\"\nmsgstr \"Chukotskiy avtonomnyy okrug\"\n\n#: ru/ru_regions.py:103\nmsgid \"Yamalo-Neneckiy avtonomnyy okrug\"\nmsgstr \"Yamalo-Neneckiy avtonomnyy okrug\"\n\n#: se/forms.py:54\nmsgid \"Enter a valid Swedish organisation number.\"\nmsgstr \"Introduzca un número válido de organización sueca.\"\n\n#: se/forms.py:111\nmsgid \"Enter a valid Swedish personal identity number.\"\nmsgstr \"Introduzca un número válido de identidad personal sueco.\"\n\n#: se/forms.py:112\nmsgid \"Co-ordination numbers are not allowed.\"\nmsgstr \"Los números de coordinación no se admiten.\"\n\n#: se/forms.py:154\nmsgid \"Enter a Swedish postal code in the format XXXXX.\"\nmsgstr \"Introduzca un código postal sueco en el formato XXXXX.\"\n\n#: se/se_counties.py:16\nmsgid \"Stockholm\"\nmsgstr \"Estocolmo\"\n\n#: se/se_counties.py:17\nmsgid \"Västerbotten\"\nmsgstr \"Västerbotten\"\n\n#: se/se_counties.py:18\nmsgid \"Norrbotten\"\nmsgstr \"Norrbotten\"\n\n#: se/se_counties.py:19\nmsgid \"Uppsala\"\nmsgstr \"Uppsala\"\n\n#: se/se_counties.py:20\nmsgid \"Södermanland\"\nmsgstr \"Södermanland\"\n\n#: se/se_counties.py:21\nmsgid \"Östergötland\"\nmsgstr \"Östergötland\"\n\n#: se/se_counties.py:22\nmsgid \"Jönköping\"\nmsgstr \"Jönköping\"\n\n#: se/se_counties.py:23\nmsgid \"Kronoberg\"\nmsgstr \"Kronoberg\"\n\n#: se/se_counties.py:24\nmsgid \"Kalmar\"\nmsgstr \"Kalmar\"\n\n#: se/se_counties.py:25\nmsgid \"Gotland\"\nmsgstr \"Gotland\"\n\n#: se/se_counties.py:26\nmsgid \"Blekinge\"\nmsgstr \"Blekinge\"\n\n#: se/se_counties.py:27\nmsgid \"Skåne\"\nmsgstr \"Skåne\"\n\n#: se/se_counties.py:28\nmsgid \"Halland\"\nmsgstr \"Halland\"\n\n#: se/se_counties.py:29\nmsgid \"Västra Götaland\"\nmsgstr \"Västra Götaland\"\n\n#: se/se_counties.py:30\nmsgid \"Värmland\"\nmsgstr \"Värmland\"\n\n#: se/se_counties.py:31\nmsgid \"Örebro\"\nmsgstr \"Örebro\"\n\n#: se/se_counties.py:32\nmsgid \"Västmanland\"\nmsgstr \"Västmanland\"\n\n#: se/se_counties.py:33\nmsgid \"Dalarna\"\nmsgstr \"Dalarna\"\n\n#: se/se_counties.py:34\nmsgid \"Gävleborg\"\nmsgstr \"Gävleborg\"\n\n#: se/se_counties.py:35\nmsgid \"Västernorrland\"\nmsgstr \"Västernorrland\"\n\n#: se/se_counties.py:36\nmsgid \"Jämtland\"\nmsgstr \"Jämtland\"\n\n#: si/forms.py:25\nmsgid \"The first 7 digits of the EMSO must represent a valid past date.\"\nmsgstr \"\"\n\"Los 7 primeros dígitos del EMSO deben representar una fecha pasada válida.\"\n\n#: si/forms.py:26\nmsgid \"The EMSO is not valid.\"\nmsgstr \"El EMSO no es válido.\"\n\n#: si/forms.py:86\nmsgid \"Enter a valid tax number in form SIXXXXXXXX\"\nmsgstr \"\"\n\"Introduzca un número de identificación fiscal válida en forma SIXXXXXXXX\"\n\n#: si/forms.py:151\nmsgid \"Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.\"\nmsgstr \"\"\n\"Introduzca el número de teléfono en el formato +386 XXXXXXXX o 0XXXXXXXX.\"\n\n#: sk/sk_districts.py:8\nmsgid \"Banska Bystrica\"\nmsgstr \"Región de Bystrica\"\n\n#: sk/sk_districts.py:9\nmsgid \"Banska Stiavnica\"\nmsgstr \"Región de Banska Stiavnica\"\n\n#: sk/sk_districts.py:10\nmsgid \"Bardejov\"\nmsgstr \"Región de Bardejov\"\n\n#: sk/sk_districts.py:11\nmsgid \"Banovce nad Bebravou\"\nmsgstr \"Región de Banovce nad Bebravou\"\n\n#: sk/sk_districts.py:12\nmsgid \"Brezno\"\nmsgstr \"Región de Brezno\"\n\n#: sk/sk_districts.py:13\nmsgid \"Bratislava I\"\nmsgstr \"Región de Bratislava I\"\n\n#: sk/sk_districts.py:14\nmsgid \"Bratislava II\"\nmsgstr \"Región de Bratislava II\"\n\n#: sk/sk_districts.py:15\nmsgid \"Bratislava III\"\nmsgstr \"Región de Bratislava III\"\n\n#: sk/sk_districts.py:16\nmsgid \"Bratislava IV\"\nmsgstr \"Región de Bratislava IV\"\n\n#: sk/sk_districts.py:17\nmsgid \"Bratislava V\"\nmsgstr \"Región de Bratislava V\"\n\n#: sk/sk_districts.py:18\nmsgid \"Bytca\"\nmsgstr \"Región de Bytca\"\n\n#: sk/sk_districts.py:19\nmsgid \"Cadca\"\nmsgstr \"Cadca\"\n\n#: sk/sk_districts.py:20\nmsgid \"Detva\"\nmsgstr \"Región de Detva\"\n\n#: sk/sk_districts.py:21\nmsgid \"Dolny Kubin\"\nmsgstr \"Región de Dolny Kubin\"\n\n#: sk/sk_districts.py:22\nmsgid \"Dunajska Streda\"\nmsgstr \"Región de Dunajska Streda\"\n\n#: sk/sk_districts.py:23\nmsgid \"Galanta\"\nmsgstr \"Galanta\"\n\n#: sk/sk_districts.py:24\nmsgid \"Gelnica\"\nmsgstr \"Gelnica\"\n\n#: sk/sk_districts.py:25\nmsgid \"Hlohovec\"\nmsgstr \"Hlohovec\"\n\n#: sk/sk_districts.py:26\nmsgid \"Humenne\"\nmsgstr \"Humenne\"\n\n#: sk/sk_districts.py:27\nmsgid \"Ilava\"\nmsgstr \"Ilava\"\n\n#: sk/sk_districts.py:28\nmsgid \"Kezmarok\"\nmsgstr \"Kezmarok\"\n\n#: sk/sk_districts.py:29\nmsgid \"Komarno\"\nmsgstr \"Komarno\"\n\n#: sk/sk_districts.py:30\nmsgid \"Kosice I\"\nmsgstr \"Kosice I\"\n\n#: sk/sk_districts.py:31\nmsgid \"Kosice II\"\nmsgstr \"Kosice II\"\n\n#: sk/sk_districts.py:32\nmsgid \"Kosice III\"\nmsgstr \"Kosice III\"\n\n#: sk/sk_districts.py:33\nmsgid \"Kosice IV\"\nmsgstr \"Kosice IV\"\n\n#: sk/sk_districts.py:34\nmsgid \"Kosice - okolie\"\nmsgstr \"Kosice - okolie\"\n\n#: sk/sk_districts.py:35\nmsgid \"Krupina\"\nmsgstr \"Krupina\"\n\n#: sk/sk_districts.py:36\nmsgid \"Kysucke Nove Mesto\"\nmsgstr \"Kysucke Nove Mesto\"\n\n#: sk/sk_districts.py:37\nmsgid \"Levice\"\nmsgstr \"Levice\"\n\n#: sk/sk_districts.py:38\nmsgid \"Levoca\"\nmsgstr \"Levoca\"\n\n#: sk/sk_districts.py:39\nmsgid \"Liptovsky Mikulas\"\nmsgstr \"Liptovsky Mikulas\"\n\n#: sk/sk_districts.py:40\nmsgid \"Lucenec\"\nmsgstr \"Lucenec\"\n\n#: sk/sk_districts.py:41\nmsgid \"Malacky\"\nmsgstr \"Malacky\"\n\n#: sk/sk_districts.py:42\nmsgid \"Martin\"\nmsgstr \"Martin\"\n\n#: sk/sk_districts.py:43\nmsgid \"Medzilaborce\"\nmsgstr \"Medzilaborce\"\n\n#: sk/sk_districts.py:44\nmsgid \"Michalovce\"\nmsgstr \"Michalovce\"\n\n#: sk/sk_districts.py:45\nmsgid \"Myjava\"\nmsgstr \"Myjava\"\n\n#: sk/sk_districts.py:46\nmsgid \"Namestovo\"\nmsgstr \"Namestovo\"\n\n#: sk/sk_districts.py:47\nmsgid \"Nitra\"\nmsgstr \"Nitra\"\n\n#: sk/sk_districts.py:48\nmsgid \"Nove Mesto nad Vahom\"\nmsgstr \"Nove Mesto nad Vahom\"\n\n#: sk/sk_districts.py:49\nmsgid \"Nove Zamky\"\nmsgstr \"Nove Zamky\"\n\n#: sk/sk_districts.py:50\nmsgid \"Partizanske\"\nmsgstr \"Partizanske\"\n\n#: sk/sk_districts.py:51\nmsgid \"Pezinok\"\nmsgstr \"Pezinok\"\n\n#: sk/sk_districts.py:52\nmsgid \"Piestany\"\nmsgstr \"Piestany\"\n\n#: sk/sk_districts.py:53\nmsgid \"Poltar\"\nmsgstr \"Poltar\"\n\n#: sk/sk_districts.py:54\nmsgid \"Poprad\"\nmsgstr \"Poprad\"\n\n#: sk/sk_districts.py:55\nmsgid \"Povazska Bystrica\"\nmsgstr \"Povazska Bystrica\"\n\n#: sk/sk_districts.py:56\nmsgid \"Presov\"\nmsgstr \"Presov\"\n\n#: sk/sk_districts.py:57\nmsgid \"Prievidza\"\nmsgstr \"Prievidza\"\n\n#: sk/sk_districts.py:58\nmsgid \"Puchov\"\nmsgstr \"Puchov\"\n\n#: sk/sk_districts.py:59\nmsgid \"Revuca\"\nmsgstr \"Revuca\"\n\n#: sk/sk_districts.py:60\nmsgid \"Rimavska Sobota\"\nmsgstr \"Rimavska Sobota\"\n\n#: sk/sk_districts.py:61\nmsgid \"Roznava\"\nmsgstr \"Roznava\"\n\n#: sk/sk_districts.py:62\nmsgid \"Ruzomberok\"\nmsgstr \"Ruzomberok\"\n\n#: sk/sk_districts.py:63\nmsgid \"Sabinov\"\nmsgstr \"Sabinov\"\n\n#: sk/sk_districts.py:64\nmsgid \"Senec\"\nmsgstr \"Senec\"\n\n#: sk/sk_districts.py:65\nmsgid \"Senica\"\nmsgstr \"Senica\"\n\n#: sk/sk_districts.py:66\nmsgid \"Skalica\"\nmsgstr \"Skalica\"\n\n#: sk/sk_districts.py:67\nmsgid \"Snina\"\nmsgstr \"Snina\"\n\n#: sk/sk_districts.py:68\nmsgid \"Sobrance\"\nmsgstr \"Sobrance\"\n\n#: sk/sk_districts.py:69\nmsgid \"Spisska Nova Ves\"\nmsgstr \"Spisska Nova Ves\"\n\n#: sk/sk_districts.py:70\nmsgid \"Stara Lubovna\"\nmsgstr \"Stara Lubovna\"\n\n#: sk/sk_districts.py:71\nmsgid \"Stropkov\"\nmsgstr \"Stropkov\"\n\n#: sk/sk_districts.py:72\nmsgid \"Svidnik\"\nmsgstr \"Svidnik\"\n\n#: sk/sk_districts.py:73\nmsgid \"Sala\"\nmsgstr \"Sala\"\n\n#: sk/sk_districts.py:74\nmsgid \"Topolcany\"\nmsgstr \"Topolcany\"\n\n#: sk/sk_districts.py:75\nmsgid \"Trebisov\"\nmsgstr \"Trebisov\"\n\n#: sk/sk_districts.py:76\nmsgid \"Trencin\"\nmsgstr \"Trencin\"\n\n#: sk/sk_districts.py:77\nmsgid \"Trnava\"\nmsgstr \"Trnava\"\n\n#: sk/sk_districts.py:78\nmsgid \"Turcianske Teplice\"\nmsgstr \"Turcianske Teplice\"\n\n#: sk/sk_districts.py:79\nmsgid \"Tvrdosin\"\nmsgstr \"Tvrdosin\"\n\n#: sk/sk_districts.py:80\nmsgid \"Velky Krtis\"\nmsgstr \"Velky Krtis\"\n\n#: sk/sk_districts.py:81\nmsgid \"Vranov nad Toplou\"\nmsgstr \"Vranov nad Toplou\"\n\n#: sk/sk_districts.py:82\nmsgid \"Zlate Moravce\"\nmsgstr \"Zlate Moravce\"\n\n#: sk/sk_districts.py:83\nmsgid \"Zvolen\"\nmsgstr \"Zvolen\"\n\n#: sk/sk_districts.py:84\nmsgid \"Zarnovica\"\nmsgstr \"Zarnovica\"\n\n#: sk/sk_districts.py:85\nmsgid \"Ziar nad Hronom\"\nmsgstr \"Ziar nad Hronom\"\n\n#: sk/sk_districts.py:86\nmsgid \"Zilina\"\nmsgstr \"Zilina\"\n\n#: sk/sk_regions.py:8\nmsgid \"Banska Bystrica region\"\nmsgstr \"Región de Banska Bystrica\"\n\n#: sk/sk_regions.py:9\nmsgid \"Bratislava region\"\nmsgstr \"Región de Bratislava\"\n\n#: sk/sk_regions.py:10\nmsgid \"Kosice region\"\nmsgstr \"Región de Kosice\"\n\n#: sk/sk_regions.py:11\nmsgid \"Nitra region\"\nmsgstr \"Región de Nitra\"\n\n#: sk/sk_regions.py:12\nmsgid \"Presov region\"\nmsgstr \"Región de Presov\"\n\n#: sk/sk_regions.py:13\nmsgid \"Trencin region\"\nmsgstr \"Región de Trencin\"\n\n#: sk/sk_regions.py:14\nmsgid \"Trnava region\"\nmsgstr \"Región de Trnava\"\n\n#: sk/sk_regions.py:15\nmsgid \"Zilina region\"\nmsgstr \"Región de Zilina\"\n\n#: tr/forms.py:21\nmsgid \"Enter a postal code in the format XXXXX.\"\nmsgstr \"Introduzca un código postal en el formato XXXXX.\"\n\n#: tr/forms.py:42\nmsgid \"Phone numbers must be in 0XXX XXX XXXX format.\"\nmsgstr \"Los números de teléfono deben estar en el formato 0XXX XXX XXXX.\"\n\n#: tr/forms.py:69\nmsgid \"Enter a valid Turkish Identification number.\"\nmsgstr \"Introduzca un número de identificación turco válido.\"\n\n#: tr/forms.py:70\nmsgid \"Turkish Identification number must be 11 digits.\"\nmsgstr \"El número de identificación turco debe ser de 11 dígitos.\"\n\n#: us/forms.py:21\nmsgid \"Enter a zip code in the format XXXXX or XXXXX-XXXX.\"\nmsgstr \"Introduzca un código postal en el formato XXXXX o XXXXX XXXX.\"\n\n#: us/forms.py:59\nmsgid \"Enter a valid U.S. Social Security number in XXX-XX-XXXX format.\"\nmsgstr \"\"\n\"Introduzca un número de Seguro Social de los EE.UU. en formato XXX-XX-XXXX.\"\n\n#: us/forms.py:92\nmsgid \"Enter a U.S. state or territory.\"\nmsgstr \"Ingresar un estado de EE.UU. o territorio.\"\n\n#: us/models.py:8\nmsgid \"U.S. state (two uppercase letters)\"\nmsgstr \"Estado de EE.UU. (dos letras mayúsculas)\"\n\n#: us/models.py:17\nmsgid \"U.S. postal code (two uppercase letters)\"\nmsgstr \"EE.UU. código postal (dos letras mayúsculas)\"\n\n#: us/models.py:26\nmsgid \"Phone number\"\nmsgstr \"Número de teléfono\"\n\n#: uy/forms.py:29\nmsgid \"Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.\"\nmsgstr \"\"\n\"Introduzca un número válido de CI en formato X.XXX.XXX-X,XXXXXXX-X ó \"\n\"XXXXXXXX.\"\n\n#: uy/forms.py:31\nmsgid \"Enter a valid CI number.\"\nmsgstr \"Introduzca un número CI válido.\"\n\n#: za/forms.py:22\nmsgid \"Enter a valid South African ID number\"\nmsgstr \"Introduzca un número de identificación de Sudáfrica válido\"\n\n#: za/forms.py:56\nmsgid \"Enter a valid South African postal code\"\nmsgstr \"Introduzca un código postal de Sudáfrica válido\"\n\n#: za/za_provinces.py:4\nmsgid \"Eastern Cape\"\nmsgstr \"Provincia Oriental del Cabo\"\n\n#: za/za_provinces.py:5\nmsgid \"Free State\"\nmsgstr \"Estado Libre\"\n\n#: za/za_provinces.py:6\nmsgid \"Gauteng\"\nmsgstr \"Gauteng\"\n\n#: za/za_provinces.py:7\nmsgid \"KwaZulu-Natal\"\nmsgstr \"KwaZulu-Natal\"\n\n#: za/za_provinces.py:8\nmsgid \"Limpopo\"\nmsgstr \"La Provincia de Limpopo\"\n\n#: za/za_provinces.py:9\nmsgid \"Mpumalanga\"\nmsgstr \"Mpumalanga\"\n\n#: za/za_provinces.py:10\nmsgid \"Northern Cape\"\nmsgstr \"Provincia Septentrional del Cabo\"\n\n#: za/za_provinces.py:11\nmsgid \"North West\"\nmsgstr \"Noroeste\"\n\n#: za/za_provinces.py:12\nmsgid \"Western Cape\"\nmsgstr \"Occidental del Cabo\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/locale/et/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# madisvain <madisvain@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-10-17 09:16+0000\\n\"\n\"Last-Translator: madisvain <madisvain@gmail.com>\\n\"\n\"Language-Team: Estonian (http://www.transifex.com/projects/p/django/language/\"\n\"et/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: et\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: ar/forms.py:30\nmsgid \"Enter a postal code in the format NNNN or ANNNNAAA.\"\nmsgstr \"Sisesta postiindeks kujul NNNN või ANNNNAAA.\"\n\n#: ar/forms.py:52 br/forms.py:95 br/forms.py:134 pe/forms.py:27 pe/forms.py:55\nmsgid \"This field requires only numbers.\"\nmsgstr \"See väli peab koosnema ainult numbritest.\"\n\n#: ar/forms.py:53\nmsgid \"This field requires 7 or 8 digits.\"\nmsgstr \"Siin väljal peab olema kas 7 või 8 numbrit.\"\n\n#: ar/forms.py:82\nmsgid \"Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.\"\nmsgstr \"Sisesta korrektne CUIT kujul XX-XXXXXXXX-X or XXXXXXXXXXXX.\"\n\n#: ar/forms.py:83\nmsgid \"Invalid CUIT.\"\nmsgstr \"Vale CUIT.\"\n\n#: ar/forms.py:84\nmsgid \"Invalid legal type. Type must be 27, 20, 23 or 30.\"\nmsgstr \"\"\n\n#: at/at_states.py:5\nmsgid \"Burgenland\"\nmsgstr \"Burgenland\"\n\n#: at/at_states.py:6\nmsgid \"Carinthia\"\nmsgstr \"Kärnten\"\n\n#: at/at_states.py:7\nmsgid \"Lower Austria\"\nmsgstr \"Alam-Austria\"\n\n#: at/at_states.py:8\nmsgid \"Upper Austria\"\nmsgstr \"Ülem-Austria\"\n\n#: at/at_states.py:9\nmsgid \"Salzburg\"\nmsgstr \"Salzburg\"\n\n#: at/at_states.py:10\nmsgid \"Styria\"\nmsgstr \"Steiermark\"\n\n#: at/at_states.py:11\nmsgid \"Tyrol\"\nmsgstr \"Tirool\"\n\n#: at/at_states.py:12\nmsgid \"Vorarlberg\"\nmsgstr \"Vorarlberg\"\n\n#: at/at_states.py:13\nmsgid \"Vienna\"\nmsgstr \"Viin\"\n\n#: at/forms.py:22 ch/forms.py:22 no/forms.py:19\nmsgid \"Enter a zip code in the format XXXX.\"\nmsgstr \"Sisesta postiindeks kujul XXXX.\"\n\n#: at/forms.py:50\nmsgid \"Enter a valid Austrian Social Security Number in XXXX XXXXXX format.\"\nmsgstr \"Sisesta kehtiv Austria sotsiaalkindlustusnumber formaadis XXX-XX-XXXX.\"\n\n#: au/forms.py:26\nmsgid \"Enter a 4 digit postcode.\"\nmsgstr \"\"\n\n#: au/models.py:9\nmsgid \"Australian State\"\nmsgstr \"\"\n\n#: au/models.py:19\nmsgid \"Australian Postcode\"\nmsgstr \"\"\n\n#: au/models.py:33\nmsgid \"Australian Phone number\"\nmsgstr \"\"\n\n#: be/be_provinces.py:5\nmsgid \"Antwerp\"\nmsgstr \"\"\n\n#: be/be_provinces.py:6\nmsgid \"Brussels\"\nmsgstr \"\"\n\n#: be/be_provinces.py:7\nmsgid \"East Flanders\"\nmsgstr \"\"\n\n#: be/be_provinces.py:8\nmsgid \"Flemish Brabant\"\nmsgstr \"\"\n\n#: be/be_provinces.py:9\nmsgid \"Hainaut\"\nmsgstr \"\"\n\n#: be/be_provinces.py:10\nmsgid \"Liege\"\nmsgstr \"\"\n\n#: be/be_provinces.py:11 nl/nl_provinces.py:9\nmsgid \"Limburg\"\nmsgstr \"Limburgi provints\"\n\n#: be/be_provinces.py:12\nmsgid \"Luxembourg\"\nmsgstr \"Luksenburg\"\n\n#: be/be_provinces.py:13\nmsgid \"Namur\"\nmsgstr \"\"\n\n#: be/be_provinces.py:14\nmsgid \"Walloon Brabant\"\nmsgstr \"\"\n\n#: be/be_provinces.py:15\nmsgid \"West Flanders\"\nmsgstr \"\"\n\n#: be/be_regions.py:5\nmsgid \"Brussels Capital Region\"\nmsgstr \"\"\n\n#: be/be_regions.py:6\nmsgid \"Flemish Region\"\nmsgstr \"\"\n\n#: be/be_regions.py:7\nmsgid \"Wallonia\"\nmsgstr \"\"\n\n#: be/forms.py:25\nmsgid \"Enter a valid postal code in the range and format 1XXX - 9XXX.\"\nmsgstr \"Sisestage kehtiv postiindeks vahemikus ja formaadis 1XXX - 9XXX.\"\n\n#: be/forms.py:48\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\nmsgstr \"\"\n\"Sisestage kehtiv telefoninumber ühes järgnevatest formaatidest 0x xxx xx xx, \"\n\"0XX xx xx xx, 04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x . \"\n\"xxx.xx.xx, 0xx.xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx või 04xxxxxxxx.\"\n\n#: br/forms.py:22\nmsgid \"Enter a zip code in the format XXXXX-XXX.\"\nmsgstr \"Sisesta postiindeks kujul XXXXX-XXX.\"\n\n#: br/forms.py:31\nmsgid \"Phone numbers must be in XX-XXXX-XXXX format.\"\nmsgstr \"Telefoninumbrid peavad olema kujul XX-XXXX-XXXX.\"\n\n#: br/forms.py:58\nmsgid \"\"\n\"Select a valid brazilian state. That state is not one of the available \"\n\"states.\"\nmsgstr \"Vali korrektne Brasiilia osariik. Valitud osariik ei ole korrektne.\"\n\n#: br/forms.py:93\nmsgid \"Invalid CPF number.\"\nmsgstr \"Mittekorrektne CPF number.\"\n\n#: br/forms.py:94\nmsgid \"This field requires at most 11 digits or 14 characters.\"\nmsgstr \"See väli võib olla maksimaalselt 11 või 14 sümbolit.\"\n\n#: br/forms.py:133\nmsgid \"Invalid CNPJ number.\"\nmsgstr \"Mittekorrektne CNPJ number.\"\n\n#: br/forms.py:135\nmsgid \"This field requires at least 14 digits\"\nmsgstr \"See väli peab olema vähemalt 14-kohaline arv.\"\n\n#: ca/forms.py:29\nmsgid \"Enter a postal code in the format XXX XXX.\"\nmsgstr \"Sisesta postiindeks kujul XXX XXX.\"\n\n#: ca/forms.py:47 us/forms.py:30\nmsgid \"Phone numbers must be in XXX-XXX-XXXX format.\"\nmsgstr \"Telefoninumbrid peavad olema XXX-XXX-XXX formaadis.\"\n\n#: ca/forms.py:69\nmsgid \"Enter a Canadian province or territory.\"\nmsgstr \"\"\n\n#: ca/forms.py:110\nmsgid \"Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.\"\nmsgstr \"Sisesta korrektne Kanada sotsiaalturvatunnus formaadis XXX-XXX-XXXX.\"\n\n#: ch/ch_states.py:5\nmsgid \"Aargau\"\nmsgstr \"Aargau\"\n\n#: ch/ch_states.py:6\nmsgid \"Appenzell Innerrhoden\"\nmsgstr \"Appenzell Innerrhoden\"\n\n#: ch/ch_states.py:7\nmsgid \"Appenzell Ausserrhoden\"\nmsgstr \"Appenzell Ausserrhoden\"\n\n#: ch/ch_states.py:8\nmsgid \"Basel-Stadt\"\nmsgstr \"Basel-Stadt\"\n\n#: ch/ch_states.py:9\nmsgid \"Basel-Land\"\nmsgstr \"Basel-Land\"\n\n#: ch/ch_states.py:10\nmsgid \"Berne\"\nmsgstr \"Berne\"\n\n#: ch/ch_states.py:11\nmsgid \"Fribourg\"\nmsgstr \"Fribourg\"\n\n#: ch/ch_states.py:12\nmsgid \"Geneva\"\nmsgstr \"Geneva\"\n\n#: ch/ch_states.py:13\nmsgid \"Glarus\"\nmsgstr \"Glarus\"\n\n#: ch/ch_states.py:14\nmsgid \"Graubuenden\"\nmsgstr \"Graubuenden\"\n\n#: ch/ch_states.py:15\nmsgid \"Jura\"\nmsgstr \"Jura\"\n\n#: ch/ch_states.py:16\nmsgid \"Lucerne\"\nmsgstr \"Lucerne\"\n\n#: ch/ch_states.py:17\nmsgid \"Neuchatel\"\nmsgstr \"Neuchatel\"\n\n#: ch/ch_states.py:18\nmsgid \"Nidwalden\"\nmsgstr \"Nidwalden\"\n\n#: ch/ch_states.py:19\nmsgid \"Obwalden\"\nmsgstr \"Obwalden\"\n\n#: ch/ch_states.py:20\nmsgid \"Schaffhausen\"\nmsgstr \"Schaffhausen\"\n\n#: ch/ch_states.py:21\nmsgid \"Schwyz\"\nmsgstr \"Schwyz\"\n\n#: ch/ch_states.py:22\nmsgid \"Solothurn\"\nmsgstr \"Solothurn\"\n\n#: ch/ch_states.py:23\nmsgid \"St. Gallen\"\nmsgstr \"St. Gallen\"\n\n#: ch/ch_states.py:24\nmsgid \"Thurgau\"\nmsgstr \"Thurgau\"\n\n#: ch/ch_states.py:25\nmsgid \"Ticino\"\nmsgstr \"Ticino\"\n\n#: ch/ch_states.py:26\nmsgid \"Uri\"\nmsgstr \"Uri\"\n\n#: ch/ch_states.py:27\nmsgid \"Valais\"\nmsgstr \"Valais\"\n\n#: ch/ch_states.py:28\nmsgid \"Vaud\"\nmsgstr \"Vaud\"\n\n#: ch/ch_states.py:29\nmsgid \"Zug\"\nmsgstr \"Zug\"\n\n#: ch/ch_states.py:30\nmsgid \"Zurich\"\nmsgstr \"Zurich\"\n\n#: ch/forms.py:37\nmsgid \"Phone numbers must be in 0XX XXX XX XX format.\"\nmsgstr \"\"\n\n#: ch/forms.py:68\nmsgid \"\"\n\"Enter a valid Swiss identity or passport card number in X1234567<0 or \"\n\"1234567890 format.\"\nmsgstr \"\"\n\"Sisesta kehtiv Šveitsi isiku- või passinumber kujul X1234567<0 või \"\n\"1234567890.\"\n\n#: cl/forms.py:32\nmsgid \"Enter a valid Chilean RUT.\"\nmsgstr \"Sisesta korrektne Tšiili RUT.\"\n\n#: cl/forms.py:33\nmsgid \"Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.\"\nmsgstr \"Sisesta korrektne Tšiili RUT formaadis XX.XXX.XXX-X.\"\n\n#: cl/forms.py:34\nmsgid \"The Chilean RUT is not valid.\"\nmsgstr \"Tšiili RUT on ebakorrektne.\"\n\n#: cn/forms.py:84\nmsgid \"Enter a post code in the format XXXXXX.\"\nmsgstr \"\"\n\n#: cn/forms.py:105\nmsgid \"ID Card Number consists of 15 or 18 digits.\"\nmsgstr \"\"\n\n#: cn/forms.py:106\nmsgid \"Invalid ID Card Number: Wrong checksum\"\nmsgstr \"\"\n\n#: cn/forms.py:107\nmsgid \"Invalid ID Card Number: Wrong birthdate\"\nmsgstr \"\"\n\n#: cn/forms.py:108\nmsgid \"Invalid ID Card Number: Wrong location code\"\nmsgstr \"\"\n\n#: cn/forms.py:193\nmsgid \"Enter a valid phone number.\"\nmsgstr \"\"\n\n#: cn/forms.py:210\nmsgid \"Enter a valid cell number.\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:8\nmsgid \"Prague\"\nmsgstr \"Praha\"\n\n#: cz/cz_regions.py:9\nmsgid \"Central Bohemian Region\"\nmsgstr \"Kesk-Boheemia regioon\"\n\n#: cz/cz_regions.py:10\nmsgid \"South Bohemian Region\"\nmsgstr \"Lõuna-Boheemia regioon\"\n\n#: cz/cz_regions.py:11\nmsgid \"Pilsen Region\"\nmsgstr \"Pilseni regioon\"\n\n#: cz/cz_regions.py:12\nmsgid \"Carlsbad Region\"\nmsgstr \"Carlsbadi regioon\"\n\n#: cz/cz_regions.py:13\nmsgid \"Usti Region\"\nmsgstr \"Usti regioon\"\n\n#: cz/cz_regions.py:14\nmsgid \"Liberec Region\"\nmsgstr \"Libereci regioon\"\n\n#: cz/cz_regions.py:15\nmsgid \"Hradec Region\"\nmsgstr \"Hradeci regioon\"\n\n#: cz/cz_regions.py:16\nmsgid \"Pardubice Region\"\nmsgstr \"Pardubice regioon\"\n\n#: cz/cz_regions.py:17\nmsgid \"Vysocina Region\"\nmsgstr \"Vysocina regioon\"\n\n#: cz/cz_regions.py:18\nmsgid \"South Moravian Region\"\nmsgstr \"Lõuna-Moraavia regioon\"\n\n#: cz/cz_regions.py:19\nmsgid \"Olomouc Region\"\nmsgstr \"Olomouci regioon\"\n\n#: cz/cz_regions.py:20\nmsgid \"Zlin Region\"\nmsgstr \"Zlini regioon\"\n\n#: cz/cz_regions.py:21\nmsgid \"Moravian-Silesian Region\"\nmsgstr \"Moraavia-Sileesia regioon\"\n\n#: cz/forms.py:32 sk/forms.py:33\nmsgid \"Enter a postal code in the format XXXXX or XXX XX.\"\nmsgstr \"Sisesta postiindeks kujul XXXXX või XXX XX.\"\n\n#: cz/forms.py:52\nmsgid \"Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.\"\nmsgstr \"Sisesta sünninumber formaadis XXXXXX/XXXX või XXXXXXXXXX\"\n\n#: cz/forms.py:53\nmsgid \"Enter a valid birth number.\"\nmsgstr \"Sisesta sobiv sünninumber.\"\n\n#: cz/forms.py:102\nmsgid \"Enter a valid IC number.\"\nmsgstr \"Sisesta ID kaardi number.\"\n\n#: de/de_states.py:5\nmsgid \"Baden-Wuerttemberg\"\nmsgstr \"Baden-Württemberg\"\n\n#: de/de_states.py:6\nmsgid \"Bavaria\"\nmsgstr \"Baieri\"\n\n#: de/de_states.py:7\nmsgid \"Berlin\"\nmsgstr \"Berliin\"\n\n#: de/de_states.py:8\nmsgid \"Brandenburg\"\nmsgstr \"Brandenburg\"\n\n#: de/de_states.py:9\nmsgid \"Bremen\"\nmsgstr \"Bremen\"\n\n#: de/de_states.py:10\nmsgid \"Hamburg\"\nmsgstr \"Hamburg\"\n\n#: de/de_states.py:11\nmsgid \"Hessen\"\nmsgstr \"Hessen\"\n\n#: de/de_states.py:12\nmsgid \"Mecklenburg-Western Pomerania\"\nmsgstr \"Mecklenburg-Vorpommern\"\n\n#: de/de_states.py:13\nmsgid \"Lower Saxony\"\nmsgstr \"Alam-Saksi\"\n\n#: de/de_states.py:14\nmsgid \"North Rhine-Westphalia\"\nmsgstr \"Nordrhein-Westfalen\"\n\n#: de/de_states.py:15\nmsgid \"Rhineland-Palatinate\"\nmsgstr \"Rheinland-Pfalz\"\n\n#: de/de_states.py:16\nmsgid \"Saarland\"\nmsgstr \"Saarimaa\"\n\n#: de/de_states.py:17\nmsgid \"Saxony\"\nmsgstr \"Saksimaa\"\n\n#: de/de_states.py:18\nmsgid \"Saxony-Anhalt\"\nmsgstr \"Saksi-Anhalt\"\n\n#: de/de_states.py:19\nmsgid \"Schleswig-Holstein\"\nmsgstr \"Schleswig-Holstein\"\n\n#: de/de_states.py:20\nmsgid \"Thuringia\"\nmsgstr \"Tüüringi\"\n\n#: de/forms.py:20 fi/forms.py:18 fr/forms.py:20\nmsgid \"Enter a zip code in the format XXXXX.\"\nmsgstr \"Sisesta postiindeks kujul XXXXX.\"\n\n#: de/forms.py:46\nmsgid \"\"\n\"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"format.\"\nmsgstr \"\"\n\"Sisesta kehtiv Saksamaa ID-kaardi number kujul XXXXXXXXXXX-XXXXXXX-XXXXXXX-X.\"\n\n#: es/es_provinces.py:5\nmsgid \"Araba\"\nmsgstr \"\"\n\n#: es/es_provinces.py:6\nmsgid \"Albacete\"\nmsgstr \"Albacete\"\n\n#: es/es_provinces.py:7\nmsgid \"Alacant\"\nmsgstr \"Alicante\"\n\n#: es/es_provinces.py:8\nmsgid \"Almeria\"\nmsgstr \"Almería\"\n\n#: es/es_provinces.py:9\nmsgid \"Avila\"\nmsgstr \"Ávila\"\n\n#: es/es_provinces.py:10\nmsgid \"Badajoz\"\nmsgstr \"Badajoz\"\n\n#: es/es_provinces.py:11\nmsgid \"Illes Balears\"\nmsgstr \"Baleaarid\"\n\n#: es/es_provinces.py:12\nmsgid \"Barcelona\"\nmsgstr \"Barcelona\"\n\n#: es/es_provinces.py:13\nmsgid \"Burgos\"\nmsgstr \"Burgos\"\n\n#: es/es_provinces.py:14\nmsgid \"Caceres\"\nmsgstr \"Cáceres\"\n\n#: es/es_provinces.py:15\nmsgid \"Cadiz\"\nmsgstr \"Cádiz\"\n\n#: es/es_provinces.py:16\nmsgid \"Castello\"\nmsgstr \"Castellón\"\n\n#: es/es_provinces.py:17\nmsgid \"Ciudad Real\"\nmsgstr \"Ciudad Real\"\n\n#: es/es_provinces.py:18\nmsgid \"Cordoba\"\nmsgstr \"Córdoba\"\n\n#: es/es_provinces.py:19\nmsgid \"A Coruna\"\nmsgstr \"A Coruna\"\n\n#: es/es_provinces.py:20\nmsgid \"Cuenca\"\nmsgstr \"Cuenca\"\n\n#: es/es_provinces.py:21\nmsgid \"Girona\"\nmsgstr \"Girona\"\n\n#: es/es_provinces.py:22\nmsgid \"Granada\"\nmsgstr \"Granada\"\n\n#: es/es_provinces.py:23\nmsgid \"Guadalajara\"\nmsgstr \"Guadalajara\"\n\n#: es/es_provinces.py:24\nmsgid \"Guipuzkoa\"\nmsgstr \"Guipúzcoa\"\n\n#: es/es_provinces.py:25\nmsgid \"Huelva\"\nmsgstr \"Huelva\"\n\n#: es/es_provinces.py:26\nmsgid \"Huesca\"\nmsgstr \"Huesca\"\n\n#: es/es_provinces.py:27\nmsgid \"Jaen\"\nmsgstr \"Jaén\"\n\n#: es/es_provinces.py:28\nmsgid \"Leon\"\nmsgstr \"León\"\n\n#: es/es_provinces.py:29\nmsgid \"Lleida\"\nmsgstr \"Lleida\"\n\n#: es/es_provinces.py:30 es/es_regions.py:17\nmsgid \"La Rioja\"\nmsgstr \"La Rioja\"\n\n#: es/es_provinces.py:31\nmsgid \"Lugo\"\nmsgstr \"Lugo\"\n\n#: es/es_provinces.py:32 es/es_regions.py:18\nmsgid \"Madrid\"\nmsgstr \"Madrid\"\n\n#: es/es_provinces.py:33\nmsgid \"Malaga\"\nmsgstr \"Málaga\"\n\n#: es/es_provinces.py:34\nmsgid \"Murcia\"\nmsgstr \"Murcia\"\n\n#: es/es_provinces.py:35\nmsgid \"Navarre\"\nmsgstr \"Navarra\"\n\n#: es/es_provinces.py:36\nmsgid \"Ourense\"\nmsgstr \"Orense\"\n\n#: es/es_provinces.py:37\nmsgid \"Asturias\"\nmsgstr \"Astuuria\"\n\n#: es/es_provinces.py:38\nmsgid \"Palencia\"\nmsgstr \"Palencia\"\n\n#: es/es_provinces.py:39\nmsgid \"Las Palmas\"\nmsgstr \"Las Palmas\"\n\n#: es/es_provinces.py:40\nmsgid \"Pontevedra\"\nmsgstr \"Pontevedra\"\n\n#: es/es_provinces.py:41\nmsgid \"Salamanca\"\nmsgstr \"Salamanca\"\n\n#: es/es_provinces.py:42\nmsgid \"Santa Cruz de Tenerife\"\nmsgstr \"Tenerife\"\n\n#: es/es_provinces.py:43 es/es_regions.py:11\nmsgid \"Cantabria\"\nmsgstr \"Cantabria\"\n\n#: es/es_provinces.py:44\nmsgid \"Segovia\"\nmsgstr \"Segovia\"\n\n#: es/es_provinces.py:45\nmsgid \"Seville\"\nmsgstr \"Sevilla\"\n\n#: es/es_provinces.py:46\nmsgid \"Soria\"\nmsgstr \"Soria\"\n\n#: es/es_provinces.py:47\nmsgid \"Tarragona\"\nmsgstr \"Tarragona\"\n\n#: es/es_provinces.py:48\nmsgid \"Teruel\"\nmsgstr \"Teruel\"\n\n#: es/es_provinces.py:49\nmsgid \"Toledo\"\nmsgstr \"Toledo\"\n\n#: es/es_provinces.py:50\nmsgid \"Valencia\"\nmsgstr \"Valencia\"\n\n#: es/es_provinces.py:51\nmsgid \"Valladolid\"\nmsgstr \"Valladolid\"\n\n#: es/es_provinces.py:52\nmsgid \"Bizkaia\"\nmsgstr \"Vizcaya\"\n\n#: es/es_provinces.py:53\nmsgid \"Zamora\"\nmsgstr \"Zamora\"\n\n#: es/es_provinces.py:54\nmsgid \"Zaragoza\"\nmsgstr \"Zaragoza\"\n\n#: es/es_provinces.py:55\nmsgid \"Ceuta\"\nmsgstr \"Ceuta\"\n\n#: es/es_provinces.py:56\nmsgid \"Melilla\"\nmsgstr \"Melilla\"\n\n#: es/es_regions.py:5\nmsgid \"Andalusia\"\nmsgstr \"Andaluusia\"\n\n#: es/es_regions.py:6\nmsgid \"Aragon\"\nmsgstr \"Aragón\"\n\n#: es/es_regions.py:7\nmsgid \"Principality of Asturias\"\nmsgstr \"Astuuria\"\n\n#: es/es_regions.py:8\nmsgid \"Balearic Islands\"\nmsgstr \"Baleaarid\"\n\n#: es/es_regions.py:9\nmsgid \"Basque Country\"\nmsgstr \"Baskimaa\"\n\n#: es/es_regions.py:10\nmsgid \"Canary Islands\"\nmsgstr \"Kanaari saared\"\n\n#: es/es_regions.py:12\nmsgid \"Castile-La Mancha\"\nmsgstr \"Castilla-La Mancha\"\n\n#: es/es_regions.py:13\nmsgid \"Castile and Leon\"\nmsgstr \"Castilla-León\"\n\n#: es/es_regions.py:14\nmsgid \"Catalonia\"\nmsgstr \"Kataloonia\"\n\n#: es/es_regions.py:15\nmsgid \"Extremadura\"\nmsgstr \"Extremadura\"\n\n#: es/es_regions.py:16\nmsgid \"Galicia\"\nmsgstr \"Galicia\"\n\n#: es/es_regions.py:19\nmsgid \"Region of Murcia\"\nmsgstr \"Murcia\"\n\n#: es/es_regions.py:20\nmsgid \"Foral Community of Navarre\"\nmsgstr \"Navarra\"\n\n#: es/es_regions.py:21\nmsgid \"Valencian Community\"\nmsgstr \"Valencia\"\n\n#: es/forms.py:26\nmsgid \"Enter a valid postal code in the range and format 01XXX - 52XXX.\"\nmsgstr \"Sisesta korrektne postiindeks vahemikus 01XXX - 52XXX.\"\n\n#: es/forms.py:46\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or \"\n\"9XXXXXXXX.\"\nmsgstr \"\"\n\"Sisesta korrektne telefoninumber, mis on formaadis 6XXXXXXXX, 8XXXXXXXX või \"\n\"9XXXXXXXX.\"\n\n#: es/forms.py:73\nmsgid \"Please enter a valid NIF, NIE, or CIF.\"\nmsgstr \"Palun sisesta korrektne NIF, NIE või CIF.\"\n\n#: es/forms.py:74\nmsgid \"Please enter a valid NIF or NIE.\"\nmsgstr \"Palun sisesta korrektne NIF või NIE.\"\n\n#: es/forms.py:75\nmsgid \"Invalid checksum for NIF.\"\nmsgstr \"Vale NIF-i kontrollsumma.\"\n\n#: es/forms.py:76\nmsgid \"Invalid checksum for NIE.\"\nmsgstr \"Vale NIE kontrollsumma.\"\n\n#: es/forms.py:77\nmsgid \"Invalid checksum for CIF.\"\nmsgstr \"Vale CIF-i kontrollsumma.\"\n\n#: es/forms.py:149\nmsgid \"\"\n\"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.\"\nmsgstr \"Palun sisesta korrektne kontonumber formaadis XXXX-XXXX-XX-XXXXXXXXXX.\"\n\n#: es/forms.py:150\nmsgid \"Invalid checksum for bank account number.\"\nmsgstr \"Pangakonto numbri kontrollsumma on vale.\"\n\n#: fi/forms.py:33\nmsgid \"Enter a valid Finnish social security number.\"\nmsgstr \"Sisesta korrektne Soome sotsiaalturvatunnus.\"\n\n#: fr/forms.py:35\nmsgid \"Phone numbers must be in 0X XX XX XX XX format.\"\nmsgstr \"Telefoninumbrid peavad olema 0X XX XX XX XX formaadis.\"\n\n#: gb/forms.py:25\nmsgid \"Enter a valid postcode.\"\nmsgstr \"Sisesta kehtiv postiindeks.\"\n\n#: gb/gb_regions.py:11\nmsgid \"Bedfordshire\"\nmsgstr \"Bedfordshire\"\n\n#: gb/gb_regions.py:12\nmsgid \"Buckinghamshire\"\nmsgstr \"Buckinghamshire\"\n\n#: gb/gb_regions.py:14\nmsgid \"Cheshire\"\nmsgstr \"Cheshire\"\n\n#: gb/gb_regions.py:15\nmsgid \"Cornwall and Isles of Scilly\"\nmsgstr \"Cornwall and Isles of Scilly\"\n\n#: gb/gb_regions.py:16\nmsgid \"Cumbria\"\nmsgstr \"Cumbria\"\n\n#: gb/gb_regions.py:17\nmsgid \"Derbyshire\"\nmsgstr \"Derbyshire\"\n\n#: gb/gb_regions.py:18\nmsgid \"Devon\"\nmsgstr \"Devon\"\n\n#: gb/gb_regions.py:19\nmsgid \"Dorset\"\nmsgstr \"Dorset\"\n\n#: gb/gb_regions.py:20\nmsgid \"Durham\"\nmsgstr \"Durham\"\n\n#: gb/gb_regions.py:21\nmsgid \"East Sussex\"\nmsgstr \"East Sussex\"\n\n#: gb/gb_regions.py:22\nmsgid \"Essex\"\nmsgstr \"Essex\"\n\n#: gb/gb_regions.py:23\nmsgid \"Gloucestershire\"\nmsgstr \"Gloucestershire\"\n\n#: gb/gb_regions.py:24\nmsgid \"Greater London\"\nmsgstr \"Suur-London\"\n\n#: gb/gb_regions.py:25\nmsgid \"Greater Manchester\"\nmsgstr \"Suur-Manchester\"\n\n#: gb/gb_regions.py:26\nmsgid \"Hampshire\"\nmsgstr \"Hampshire\"\n\n#: gb/gb_regions.py:27\nmsgid \"Hertfordshire\"\nmsgstr \"Hertfordshire\"\n\n#: gb/gb_regions.py:28\nmsgid \"Kent\"\nmsgstr \"Kent\"\n\n#: gb/gb_regions.py:29\nmsgid \"Lancashire\"\nmsgstr \"Lancashire\"\n\n#: gb/gb_regions.py:30\nmsgid \"Leicestershire\"\nmsgstr \"Leicestershire\"\n\n#: gb/gb_regions.py:31\nmsgid \"Lincolnshire\"\nmsgstr \"Lincolnshire\"\n\n#: gb/gb_regions.py:32\nmsgid \"Merseyside\"\nmsgstr \"Merseyside\"\n\n#: gb/gb_regions.py:33\nmsgid \"Norfolk\"\nmsgstr \"Norfolk\"\n\n#: gb/gb_regions.py:34\nmsgid \"North Yorkshire\"\nmsgstr \"North Yorkshire\"\n\n#: gb/gb_regions.py:35\nmsgid \"Northamptonshire\"\nmsgstr \"Northamptonshire\"\n\n#: gb/gb_regions.py:36\nmsgid \"Northumberland\"\nmsgstr \"Northumberland\"\n\n#: gb/gb_regions.py:37\nmsgid \"Nottinghamshire\"\nmsgstr \"Nottinghamshire\"\n\n#: gb/gb_regions.py:38\nmsgid \"Oxfordshire\"\nmsgstr \"Oxfordshire\"\n\n#: gb/gb_regions.py:39\nmsgid \"Shropshire\"\nmsgstr \"Shropshire\"\n\n#: gb/gb_regions.py:40\nmsgid \"Somerset\"\nmsgstr \"Somerset\"\n\n#: gb/gb_regions.py:41\nmsgid \"South Yorkshire\"\nmsgstr \"Lõuna-Yorkshire\"\n\n#: gb/gb_regions.py:42\nmsgid \"Staffordshire\"\nmsgstr \"Staffordshire\"\n\n#: gb/gb_regions.py:43\nmsgid \"Suffolk\"\nmsgstr \"Suffolk\"\n\n#: gb/gb_regions.py:44\nmsgid \"Surrey\"\nmsgstr \"Surrey\"\n\n#: gb/gb_regions.py:45\nmsgid \"Tyne and Wear\"\nmsgstr \"Tyne ja Wear\"\n\n#: gb/gb_regions.py:46\nmsgid \"Warwickshire\"\nmsgstr \"Warwickshire\"\n\n#: gb/gb_regions.py:47\nmsgid \"West Midlands\"\nmsgstr \"West Midlands\"\n\n#: gb/gb_regions.py:48\nmsgid \"West Sussex\"\nmsgstr \"Lääne-Sussex\"\n\n#: gb/gb_regions.py:49\nmsgid \"West Yorkshire\"\nmsgstr \"Lääne-Yorkshire\"\n\n#: gb/gb_regions.py:50\nmsgid \"Wiltshire\"\nmsgstr \"Wiltshire\"\n\n#: gb/gb_regions.py:51\nmsgid \"Worcestershire\"\nmsgstr \"Worcestershire\"\n\n#: gb/gb_regions.py:55\nmsgid \"County Antrim\"\nmsgstr \"County Antrim\"\n\n#: gb/gb_regions.py:56\nmsgid \"County Armagh\"\nmsgstr \"County Armagh\"\n\n#: gb/gb_regions.py:57\nmsgid \"County Down\"\nmsgstr \"County Down\"\n\n#: gb/gb_regions.py:58\nmsgid \"County Fermanagh\"\nmsgstr \"County Fermanagh\"\n\n#: gb/gb_regions.py:59\nmsgid \"County Londonderry\"\nmsgstr \"County Londonderry\"\n\n#: gb/gb_regions.py:60\nmsgid \"County Tyrone\"\nmsgstr \"County Tyrone\"\n\n#: gb/gb_regions.py:64\nmsgid \"Clwyd\"\nmsgstr \"Clwyd\"\n\n#: gb/gb_regions.py:65\nmsgid \"Dyfed\"\nmsgstr \"Dyfed\"\n\n#: gb/gb_regions.py:66\nmsgid \"Gwent\"\nmsgstr \"Gwent\"\n\n#: gb/gb_regions.py:67\nmsgid \"Gwynedd\"\nmsgstr \"Gwynedd\"\n\n#: gb/gb_regions.py:68\nmsgid \"Mid Glamorgan\"\nmsgstr \"Mid Glamorgan\"\n\n#: gb/gb_regions.py:69\nmsgid \"Powys\"\nmsgstr \"Powys\"\n\n#: gb/gb_regions.py:70\nmsgid \"South Glamorgan\"\nmsgstr \"South Glamorgan\"\n\n#: gb/gb_regions.py:71\nmsgid \"West Glamorgan\"\nmsgstr \"Lääne-Glamorgan\"\n\n#: gb/gb_regions.py:75\nmsgid \"Borders\"\nmsgstr \"Piirid\"\n\n#: gb/gb_regions.py:76\nmsgid \"Central Scotland\"\nmsgstr \"Kesk-Šotimaa\"\n\n#: gb/gb_regions.py:77\nmsgid \"Dumfries and Galloway\"\nmsgstr \"Dumfries and Galloway\"\n\n#: gb/gb_regions.py:78\nmsgid \"Fife\"\nmsgstr \"Fife\"\n\n#: gb/gb_regions.py:79\nmsgid \"Grampian\"\nmsgstr \"Grampian\"\n\n#: gb/gb_regions.py:80\nmsgid \"Highland\"\nmsgstr \"Highland\"\n\n#: gb/gb_regions.py:81\nmsgid \"Lothian\"\nmsgstr \"Lothian\"\n\n#: gb/gb_regions.py:82\nmsgid \"Orkney Islands\"\nmsgstr \"Orkney saared\"\n\n#: gb/gb_regions.py:83\nmsgid \"Shetland Islands\"\nmsgstr \"Shetlandi saared\"\n\n#: gb/gb_regions.py:84\nmsgid \"Strathclyde\"\nmsgstr \"Strathclyde\"\n\n#: gb/gb_regions.py:85\nmsgid \"Tayside\"\nmsgstr \"Tayside\"\n\n#: gb/gb_regions.py:86\nmsgid \"Western Isles\"\nmsgstr \"Western Isles\"\n\n#: gb/gb_regions.py:90\nmsgid \"England\"\nmsgstr \"Inglismaa\"\n\n#: gb/gb_regions.py:91\nmsgid \"Northern Ireland\"\nmsgstr \"Põhja-Iirimaa\"\n\n#: gb/gb_regions.py:92\nmsgid \"Scotland\"\nmsgstr \"Šotimaa\"\n\n#: gb/gb_regions.py:93\nmsgid \"Wales\"\nmsgstr \"Wales\"\n\n#: hk/forms.py:37\n#, python-format\nmsgid \"Phone number should not start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:40\n#, python-format\nmsgid \"Phone number must be in one of the following formats: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:42\n#, python-format\nmsgid \"Phone number should start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hr/forms.py:76\nmsgid \"Enter a valid 13 digit JMBG\"\nmsgstr \"\"\n\n#: hr/forms.py:77\nmsgid \"Error in date segment\"\nmsgstr \"\"\n\n#: hr/forms.py:123\nmsgid \"Enter a valid 11 digit OIB\"\nmsgstr \"\"\n\n#: hr/forms.py:152 id/forms.py:112\nmsgid \"Enter a valid vehicle license plate number\"\nmsgstr \"Sisestage kehtiv sõiduki numbrimärk\"\n\n#: hr/forms.py:153\nmsgid \"Enter a valid location code\"\nmsgstr \"\"\n\n#: hr/forms.py:154\nmsgid \"Number part cannot be zero\"\nmsgstr \"\"\n\n#: hr/forms.py:190\nmsgid \"Enter a valid 5 digit postal code\"\nmsgstr \"\"\n\n#: hr/forms.py:218 id/forms.py:72 nl/forms.py:56\nmsgid \"Enter a valid phone number\"\nmsgstr \"Sisesta kehtiv telefoninumber\"\n\n#: hr/forms.py:219\nmsgid \"Enter a valid area or mobile network code\"\nmsgstr \"\"\n\n#: hr/forms.py:220\nmsgid \"The phone nubmer is too long\"\nmsgstr \"\"\n\n#: hr/forms.py:258\nmsgid \"Enter a valid 19 digit JMBAG starting with 601983\"\nmsgstr \"\"\n\n#: hr/forms.py:259\nmsgid \"Card issue number cannot be zero\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:14\nmsgid \"Grad Zagreb\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:15\nmsgid \"Bjelovarsko-bilogorska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:16\nmsgid \"Brodsko-posavska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:17\nmsgid \"Dubrovačko-neretvanska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:18\nmsgid \"Istarska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:19\nmsgid \"Karlovačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:20\nmsgid \"Koprivničko-križevačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:21\nmsgid \"Krapinsko-zagorska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:22\nmsgid \"Ličko-senjska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:23\nmsgid \"Međimurska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:24\nmsgid \"Osječko-baranjska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:25\nmsgid \"Požeško-slavonska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:26\nmsgid \"Primorsko-goranska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:27\nmsgid \"Sisačko-moslavačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:28\nmsgid \"Splitsko-dalmatinska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:29\nmsgid \"Šibensko-kninska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:30\nmsgid \"Varaždinska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:31\nmsgid \"Virovitičko-podravska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:32\nmsgid \"Vukovarsko-srijemska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:33\nmsgid \"Zadarska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:34\nmsgid \"Zagrebačka županija\"\nmsgstr \"\"\n\n#: id/forms.py:31\nmsgid \"Enter a valid post code\"\nmsgstr \"Sisestage kehtiv postiindeks\"\n\n#: id/forms.py:176\nmsgid \"Enter a valid NIK/KTP number\"\nmsgstr \"Sisestage kehtiv NIK / KTP number\"\n\n#: id/id_choices.py:15\nmsgid \"Aceh\"\nmsgstr \"\"\n\n#: id/id_choices.py:16 id/id_choices.py:79\nmsgid \"Bali\"\nmsgstr \"Bali\"\n\n#: id/id_choices.py:17 id/id_choices.py:51\nmsgid \"Banten\"\nmsgstr \"\"\n\n#: id/id_choices.py:18 id/id_choices.py:60\nmsgid \"Bengkulu\"\nmsgstr \"\"\n\n#: id/id_choices.py:19 id/id_choices.py:53\nmsgid \"Yogyakarta\"\nmsgstr \"\"\n\n#: id/id_choices.py:20 id/id_choices.py:57\nmsgid \"Jakarta\"\nmsgstr \"\"\n\n#: id/id_choices.py:21 id/id_choices.py:81\nmsgid \"Gorontalo\"\nmsgstr \"\"\n\n#: id/id_choices.py:22 id/id_choices.py:63\nmsgid \"Jambi\"\nmsgstr \"\"\n\n#: id/id_choices.py:23\nmsgid \"Jawa Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:24\nmsgid \"Jawa Tengah\"\nmsgstr \"\"\n\n#: id/id_choices.py:25\nmsgid \"Jawa Timur\"\nmsgstr \"\"\n\n#: id/id_choices.py:26 id/id_choices.py:94\nmsgid \"Kalimantan Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:27 id/id_choices.py:72\nmsgid \"Kalimantan Selatan\"\nmsgstr \"\"\n\n#: id/id_choices.py:28 id/id_choices.py:95\nmsgid \"Kalimantan Tengah\"\nmsgstr \"\"\n\n#: id/id_choices.py:29 id/id_choices.py:96\nmsgid \"Kalimantan Timur\"\nmsgstr \"\"\n\n#: id/id_choices.py:30\nmsgid \"Kepulauan Bangka-Belitung\"\nmsgstr \"\"\n\n#: id/id_choices.py:31 id/id_choices.py:68\nmsgid \"Kepulauan Riau\"\nmsgstr \"\"\n\n#: id/id_choices.py:32 id/id_choices.py:61\nmsgid \"Lampung\"\nmsgstr \"\"\n\n#: id/id_choices.py:33 id/id_choices.py:76\nmsgid \"Maluku\"\nmsgstr \"\"\n\n#: id/id_choices.py:34 id/id_choices.py:77\nmsgid \"Maluku Utara\"\nmsgstr \"\"\n\n#: id/id_choices.py:35\nmsgid \"Nusa Tenggara Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:36\nmsgid \"Nusa Tenggara Timur\"\nmsgstr \"\"\n\n#: id/id_choices.py:37\nmsgid \"Papua\"\nmsgstr \"\"\n\n#: id/id_choices.py:38\nmsgid \"Papua Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:39 id/id_choices.py:66\nmsgid \"Riau\"\nmsgstr \"\"\n\n#: id/id_choices.py:40 id/id_choices.py:74\nmsgid \"Sulawesi Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:41 id/id_choices.py:75\nmsgid \"Sulawesi Selatan\"\nmsgstr \"\"\n\n#: id/id_choices.py:42 id/id_choices.py:82\nmsgid \"Sulawesi Tengah\"\nmsgstr \"\"\n\n#: id/id_choices.py:43 id/id_choices.py:85\nmsgid \"Sulawesi Tenggara\"\nmsgstr \"\"\n\n#: id/id_choices.py:44\nmsgid \"Sulawesi Utara\"\nmsgstr \"\"\n\n#: id/id_choices.py:45 id/id_choices.py:58\nmsgid \"Sumatera Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:46 id/id_choices.py:62\nmsgid \"Sumatera Selatan\"\nmsgstr \"\"\n\n#: id/id_choices.py:47 id/id_choices.py:64\nmsgid \"Sumatera Utara\"\nmsgstr \"\"\n\n#: id/id_choices.py:52\nmsgid \"Magelang\"\nmsgstr \"\"\n\n#: id/id_choices.py:54\nmsgid \"Surakarta - Solo\"\nmsgstr \"\"\n\n#: id/id_choices.py:55\nmsgid \"Madiun\"\nmsgstr \"\"\n\n#: id/id_choices.py:56\nmsgid \"Kediri\"\nmsgstr \"\"\n\n#: id/id_choices.py:59\nmsgid \"Tapanuli\"\nmsgstr \"\"\n\n#: id/id_choices.py:65\nmsgid \"Nanggroe Aceh Darussalam\"\nmsgstr \"\"\n\n#: id/id_choices.py:67\nmsgid \"Kepulauan Bangka Belitung\"\nmsgstr \"\"\n\n#: id/id_choices.py:69\nmsgid \"Corps Consulate\"\nmsgstr \"\"\n\n#: id/id_choices.py:70\nmsgid \"Corps Diplomatic\"\nmsgstr \"\"\n\n#: id/id_choices.py:71\nmsgid \"Bandung\"\nmsgstr \"\"\n\n#: id/id_choices.py:73\nmsgid \"Sulawesi Utara Daratan\"\nmsgstr \"\"\n\n#: id/id_choices.py:78\nmsgid \"NTT - Timor\"\nmsgstr \"\"\n\n#: id/id_choices.py:80\nmsgid \"Sulawesi Utara Kepulauan\"\nmsgstr \"\"\n\n#: id/id_choices.py:83\nmsgid \"NTB - Lombok\"\nmsgstr \"\"\n\n#: id/id_choices.py:84\nmsgid \"Papua dan Papua Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:86\nmsgid \"Cirebon\"\nmsgstr \"\"\n\n#: id/id_choices.py:87\nmsgid \"NTB - Sumbawa\"\nmsgstr \"\"\n\n#: id/id_choices.py:88\nmsgid \"NTT - Flores\"\nmsgstr \"\"\n\n#: id/id_choices.py:89\nmsgid \"NTT - Sumba\"\nmsgstr \"\"\n\n#: id/id_choices.py:90\nmsgid \"Bogor\"\nmsgstr \"\"\n\n#: id/id_choices.py:91\nmsgid \"Pekalongan\"\nmsgstr \"\"\n\n#: id/id_choices.py:92\nmsgid \"Semarang\"\nmsgstr \"\"\n\n#: id/id_choices.py:93\nmsgid \"Pati\"\nmsgstr \"\"\n\n#: id/id_choices.py:97\nmsgid \"Surabaya\"\nmsgstr \"\"\n\n#: id/id_choices.py:98\nmsgid \"Madura\"\nmsgstr \"\"\n\n#: id/id_choices.py:99\nmsgid \"Malang\"\nmsgstr \"\"\n\n#: id/id_choices.py:100\nmsgid \"Jember\"\nmsgstr \"\"\n\n#: id/id_choices.py:101\nmsgid \"Banyumas\"\nmsgstr \"\"\n\n#: id/id_choices.py:102\nmsgid \"Federal Government\"\nmsgstr \"\"\n\n#: id/id_choices.py:103\nmsgid \"Bojonegoro\"\nmsgstr \"\"\n\n#: id/id_choices.py:104\nmsgid \"Purwakarta\"\nmsgstr \"\"\n\n#: id/id_choices.py:105\nmsgid \"Sidoarjo\"\nmsgstr \"\"\n\n#: id/id_choices.py:106\nmsgid \"Garut\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:8\nmsgid \"Antrim\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:9\nmsgid \"Armagh\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:10\nmsgid \"Carlow\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:11\nmsgid \"Cavan\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:12\nmsgid \"Clare\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:13\nmsgid \"Cork\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:14\nmsgid \"Derry\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:15\nmsgid \"Donegal\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:16\nmsgid \"Down\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:17\nmsgid \"Dublin\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:18\nmsgid \"Fermanagh\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:19\nmsgid \"Galway\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:20\nmsgid \"Kerry\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:21\nmsgid \"Kildare\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:22\nmsgid \"Kilkenny\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:23\nmsgid \"Laois\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:24\nmsgid \"Leitrim\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:25\nmsgid \"Limerick\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:26\nmsgid \"Longford\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:27\nmsgid \"Louth\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:28\nmsgid \"Mayo\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:29\nmsgid \"Meath\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:30\nmsgid \"Monaghan\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:31\nmsgid \"Offaly\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:32\nmsgid \"Roscommon\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:33\nmsgid \"Sligo\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:34\nmsgid \"Tipperary\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:35\nmsgid \"Tyrone\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:36\nmsgid \"Waterford\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:37\nmsgid \"Westmeath\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:38\nmsgid \"Wexford\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:39\nmsgid \"Wicklow\"\nmsgstr \"\"\n\n#: il/forms.py:32\nmsgid \"Enter a postal code in the format XXXXX\"\nmsgstr \"\"\n\n#: il/forms.py:51\nmsgid \"Enter a valid ID number.\"\nmsgstr \"\"\n\n#: in_/forms.py:41\nmsgid \"Enter a zip code in the format XXXXXX or XXX XXX.\"\nmsgstr \"\"\n\n#: in_/forms.py:64\nmsgid \"Enter an Indian state or territory.\"\nmsgstr \"\"\n\n#: in_/forms.py:103\nmsgid \"Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.\"\nmsgstr \"\"\n\n#: is_/forms.py:22\nmsgid \"\"\n\"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.\"\nmsgstr \"Sisesta kehtiv Islandi isikukood formaadis XXXXXX-XXXX.\"\n\n#: is_/forms.py:23\nmsgid \"The Icelandic identification number is not valid.\"\nmsgstr \"Islandi isikukood ei ole korrektne.\"\n\n#: it/forms.py:21\nmsgid \"Enter a valid zip code.\"\nmsgstr \"Sisesta korrektne postiindeks.\"\n\n#: it/forms.py:48\nmsgid \"Enter a valid Social Security number.\"\nmsgstr \"Sisesta korrektne sotsiaalturvatunnus.\"\n\n#: it/forms.py:73\nmsgid \"Enter a valid VAT number.\"\nmsgstr \"Sisesta korrektne käibemaksukohuslase kood.\"\n\n#: jp/forms.py:19\nmsgid \"Enter a postal code in the format XXXXXXX or XXX-XXXX.\"\nmsgstr \"Sisesta postiindeks kujul XXXXXXX või XXX-XXXX.\"\n\n#: jp/jp_prefectures.py:4\nmsgid \"Hokkaido\"\nmsgstr \"Hokkaido\"\n\n#: jp/jp_prefectures.py:5\nmsgid \"Aomori\"\nmsgstr \"Aomori\"\n\n#: jp/jp_prefectures.py:6\nmsgid \"Iwate\"\nmsgstr \"Iwate\"\n\n#: jp/jp_prefectures.py:7\nmsgid \"Miyagi\"\nmsgstr \"Miyagi\"\n\n#: jp/jp_prefectures.py:8\nmsgid \"Akita\"\nmsgstr \"Akita\"\n\n#: jp/jp_prefectures.py:9\nmsgid \"Yamagata\"\nmsgstr \"Yamagata\"\n\n#: jp/jp_prefectures.py:10\nmsgid \"Fukushima\"\nmsgstr \"Fukushima\"\n\n#: jp/jp_prefectures.py:11\nmsgid \"Ibaraki\"\nmsgstr \"Ibaraki\"\n\n#: jp/jp_prefectures.py:12\nmsgid \"Tochigi\"\nmsgstr \"Tochigi\"\n\n#: jp/jp_prefectures.py:13\nmsgid \"Gunma\"\nmsgstr \"Gunma\"\n\n#: jp/jp_prefectures.py:14\nmsgid \"Saitama\"\nmsgstr \"Saitama\"\n\n#: jp/jp_prefectures.py:15\nmsgid \"Chiba\"\nmsgstr \"Chiba\"\n\n#: jp/jp_prefectures.py:16\nmsgid \"Tokyo\"\nmsgstr \"Tokyo\"\n\n#: jp/jp_prefectures.py:17\nmsgid \"Kanagawa\"\nmsgstr \"Kanagawa\"\n\n#: jp/jp_prefectures.py:18\nmsgid \"Yamanashi\"\nmsgstr \"Yamanashi\"\n\n#: jp/jp_prefectures.py:19\nmsgid \"Nagano\"\nmsgstr \"Nagano\"\n\n#: jp/jp_prefectures.py:20\nmsgid \"Niigata\"\nmsgstr \"Niigata\"\n\n#: jp/jp_prefectures.py:21\nmsgid \"Toyama\"\nmsgstr \"Toyama\"\n\n#: jp/jp_prefectures.py:22\nmsgid \"Ishikawa\"\nmsgstr \"Ishikawa\"\n\n#: jp/jp_prefectures.py:23\nmsgid \"Fukui\"\nmsgstr \"Fukui\"\n\n#: jp/jp_prefectures.py:24\nmsgid \"Gifu\"\nmsgstr \"Gifu\"\n\n#: jp/jp_prefectures.py:25\nmsgid \"Shizuoka\"\nmsgstr \"Shizuoka\"\n\n#: jp/jp_prefectures.py:26\nmsgid \"Aichi\"\nmsgstr \"Aichi\"\n\n#: jp/jp_prefectures.py:27\nmsgid \"Mie\"\nmsgstr \"Mie\"\n\n#: jp/jp_prefectures.py:28\nmsgid \"Shiga\"\nmsgstr \"Shiga\"\n\n#: jp/jp_prefectures.py:29\nmsgid \"Kyoto\"\nmsgstr \"Kyoto\"\n\n#: jp/jp_prefectures.py:30\nmsgid \"Osaka\"\nmsgstr \"Osaka\"\n\n#: jp/jp_prefectures.py:31\nmsgid \"Hyogo\"\nmsgstr \"Hyogo\"\n\n#: jp/jp_prefectures.py:32\nmsgid \"Nara\"\nmsgstr \"Nara\"\n\n#: jp/jp_prefectures.py:33\nmsgid \"Wakayama\"\nmsgstr \"Wakayama\"\n\n#: jp/jp_prefectures.py:34\nmsgid \"Tottori\"\nmsgstr \"Tottori\"\n\n#: jp/jp_prefectures.py:35\nmsgid \"Shimane\"\nmsgstr \"Shimane\"\n\n#: jp/jp_prefectures.py:36\nmsgid \"Okayama\"\nmsgstr \"Okayama\"\n\n#: jp/jp_prefectures.py:37\nmsgid \"Hiroshima\"\nmsgstr \"Hiroshima\"\n\n#: jp/jp_prefectures.py:38\nmsgid \"Yamaguchi\"\nmsgstr \"Yamaguchi\"\n\n#: jp/jp_prefectures.py:39\nmsgid \"Tokushima\"\nmsgstr \"Tokushima\"\n\n#: jp/jp_prefectures.py:40\nmsgid \"Kagawa\"\nmsgstr \"Kagawa\"\n\n#: jp/jp_prefectures.py:41\nmsgid \"Ehime\"\nmsgstr \"Ehime\"\n\n#: jp/jp_prefectures.py:42\nmsgid \"Kochi\"\nmsgstr \"Kochi\"\n\n#: jp/jp_prefectures.py:43\nmsgid \"Fukuoka\"\nmsgstr \"Fukuoka\"\n\n#: jp/jp_prefectures.py:44\nmsgid \"Saga\"\nmsgstr \"Saga\"\n\n#: jp/jp_prefectures.py:45\nmsgid \"Nagasaki\"\nmsgstr \"Nagasaki\"\n\n#: jp/jp_prefectures.py:46\nmsgid \"Kumamoto\"\nmsgstr \"Kumamoto\"\n\n#: jp/jp_prefectures.py:47\nmsgid \"Oita\"\nmsgstr \"Oita\"\n\n#: jp/jp_prefectures.py:48\nmsgid \"Miyazaki\"\nmsgstr \"Miyazaki\"\n\n#: jp/jp_prefectures.py:49\nmsgid \"Kagoshima\"\nmsgstr \"Kagoshima\"\n\n#: jp/jp_prefectures.py:50\nmsgid \"Okinawa\"\nmsgstr \"Okinawa\"\n\n#: kw/forms.py:27\nmsgid \"Enter a valid Kuwaiti Civil ID number\"\nmsgstr \"\"\n\n#: mk/forms.py:18\nmsgid \"\"\n\"Identity card numbers must contain either 4 to 7 digits or an uppercase \"\n\"letter and 7 digits.\"\nmsgstr \"\"\n\n#: mk/forms.py:57 si/forms.py:24\nmsgid \"This field should contain exactly 13 digits.\"\nmsgstr \"\"\n\n#: mk/forms.py:58\nmsgid \"The first 7 digits of the UMCN must represent a valid past date.\"\nmsgstr \"\"\n\n#: mk/forms.py:59\nmsgid \"The UMCN is not valid.\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:10\nmsgid \"Aerodrom\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:11\nmsgid \"Aračinovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:12\nmsgid \"Berovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:13\nmsgid \"Bitola\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:14\nmsgid \"Bogdanci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:15\nmsgid \"Bogovinje\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:16\nmsgid \"Bosilovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:17\nmsgid \"Brvenica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:18\nmsgid \"Butel\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:19\nmsgid \"Valandovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:20\nmsgid \"Vasilevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:21\nmsgid \"Vevčani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:22\nmsgid \"Veles\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:23\nmsgid \"Vinica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:24\nmsgid \"Vraneštica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:25\nmsgid \"Vrapčište\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:26\nmsgid \"Gazi Baba\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:27\nmsgid \"Gevgelija\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:28\nmsgid \"Gostivar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:29\nmsgid \"Gradsko\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:30\nmsgid \"Debar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:31\nmsgid \"Debarca\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:32\nmsgid \"Delčevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:33\nmsgid \"Demir Kapija\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:34\nmsgid \"Demir Hisar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:35\nmsgid \"Dolneni\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:36\nmsgid \"Drugovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:37\nmsgid \"Gjorče Petrov\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:38\nmsgid \"Želino\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:39\nmsgid \"Zajas\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:40\nmsgid \"Zelenikovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:41\nmsgid \"Zrnovci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:42\nmsgid \"Ilinden\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:43\nmsgid \"Jegunovce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:44\nmsgid \"Kavadarci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:45\nmsgid \"Karbinci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:46\nmsgid \"Karpoš\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:47\nmsgid \"Kisela Voda\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:48\nmsgid \"Kičevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:49\nmsgid \"Konče\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:50\nmsgid \"Koćani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:51\nmsgid \"Kratovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:52\nmsgid \"Kriva Palanka\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:53\nmsgid \"Krivogaštani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:54\nmsgid \"Kruševo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:55\nmsgid \"Kumanovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:56\nmsgid \"Lipkovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:57\nmsgid \"Lozovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:58\nmsgid \"Mavrovo i Rostuša\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:59\nmsgid \"Makedonska Kamenica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:60\nmsgid \"Makedonski Brod\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:61\nmsgid \"Mogila\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:62\nmsgid \"Negotino\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:63\nmsgid \"Novaci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:64\nmsgid \"Novo Selo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:65\nmsgid \"Oslomej\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:66\nmsgid \"Ohrid\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:67\nmsgid \"Petrovec\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:68\nmsgid \"Pehčevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:69\nmsgid \"Plasnica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:70\nmsgid \"Prilep\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:71\nmsgid \"Probištip\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:72\nmsgid \"Radoviš\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:73\nmsgid \"Rankovce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:74\nmsgid \"Resen\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:75\nmsgid \"Rosoman\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:76\nmsgid \"Saraj\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:77\nmsgid \"Sveti Nikole\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:78\nmsgid \"Sopište\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:79\nmsgid \"Star Dojran\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:80\nmsgid \"Staro Nagoričane\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:81\nmsgid \"Struga\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:82\nmsgid \"Strumica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:83\nmsgid \"Studeničani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:84\nmsgid \"Tearce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:85\nmsgid \"Tetovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:86\nmsgid \"Centar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:87\nmsgid \"Centar-Župa\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:88\nmsgid \"Čair\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:89\nmsgid \"Čaška\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:90\nmsgid \"Češinovo-Obleševo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:91\nmsgid \"Čučer-Sandevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:92\nmsgid \"Štip\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:93\nmsgid \"Šuto Orizari\"\nmsgstr \"\"\n\n#: mk/models.py:11\nmsgid \"Macedonian identity card number\"\nmsgstr \"\"\n\n#: mk/models.py:25\nmsgid \"A Macedonian municipality (2 character code)\"\nmsgstr \"\"\n\n#: mk/models.py:35\nmsgid \"Unique master citizen number (13 digits)\"\nmsgstr \"\"\n\n#: mx/forms.py:67\nmsgid \"Enter a valid zip code in the format XXXXX.\"\nmsgstr \"\"\n\n#: mx/forms.py:110\nmsgid \"Enter a valid RFC.\"\nmsgstr \"\"\n\n#: mx/forms.py:111\nmsgid \"Invalid checksum for RFC.\"\nmsgstr \"\"\n\n#: mx/forms.py:191\nmsgid \"Enter a valid CURP.\"\nmsgstr \"\"\n\n#: mx/forms.py:192\nmsgid \"Invalid checksum for CURP.\"\nmsgstr \"\"\n\n#: mx/models.py:14\nmsgid \"Mexico state (three uppercase letters)\"\nmsgstr \"\"\n\n#: mx/models.py:27\nmsgid \"Mexico zip code\"\nmsgstr \"\"\n\n#: mx/models.py:44\nmsgid \"Mexican RFC\"\nmsgstr \"\"\n\n#: mx/models.py:61\nmsgid \"Mexican CURP\"\nmsgstr \"\"\n\n#: mx/mx_states.py:14\nmsgid \"Aguascalientes\"\nmsgstr \"Aguascalientes\"\n\n#: mx/mx_states.py:15\nmsgid \"Baja California\"\nmsgstr \"Baja California\"\n\n#: mx/mx_states.py:16\nmsgid \"Baja California Sur\"\nmsgstr \"Baja California Sur\"\n\n#: mx/mx_states.py:17\nmsgid \"Campeche\"\nmsgstr \"Campeche\"\n\n#: mx/mx_states.py:18\nmsgid \"Chihuahua\"\nmsgstr \"Chihuahua\"\n\n#: mx/mx_states.py:19\nmsgid \"Chiapas\"\nmsgstr \"Chiapas\"\n\n#: mx/mx_states.py:20\nmsgid \"Coahuila\"\nmsgstr \"Coahuila\"\n\n#: mx/mx_states.py:21\nmsgid \"Colima\"\nmsgstr \"Colima\"\n\n#: mx/mx_states.py:22\nmsgid \"Distrito Federal\"\nmsgstr \"Distrito Federal\"\n\n#: mx/mx_states.py:23\nmsgid \"Durango\"\nmsgstr \"Durango\"\n\n#: mx/mx_states.py:24\nmsgid \"Guerrero\"\nmsgstr \"Guerrero\"\n\n#: mx/mx_states.py:25\nmsgid \"Guanajuato\"\nmsgstr \"Guanajuato\"\n\n#: mx/mx_states.py:26\nmsgid \"Hidalgo\"\nmsgstr \"Hidalgo\"\n\n#: mx/mx_states.py:27\nmsgid \"Jalisco\"\nmsgstr \"Jalisco\"\n\n#: mx/mx_states.py:28\nmsgid \"Estado de México\"\nmsgstr \"Estado de México\"\n\n#: mx/mx_states.py:29\nmsgid \"Michoacán\"\nmsgstr \"Michoacán\"\n\n#: mx/mx_states.py:30\nmsgid \"Morelos\"\nmsgstr \"Morelos\"\n\n#: mx/mx_states.py:31\nmsgid \"Nayarit\"\nmsgstr \"Nayarit\"\n\n#: mx/mx_states.py:32\nmsgid \"Nuevo León\"\nmsgstr \"Nuevo León\"\n\n#: mx/mx_states.py:33\nmsgid \"Oaxaca\"\nmsgstr \"Oaxaca\"\n\n#: mx/mx_states.py:34\nmsgid \"Puebla\"\nmsgstr \"Puebla\"\n\n#: mx/mx_states.py:35\nmsgid \"Querétaro\"\nmsgstr \"Querétaro\"\n\n#: mx/mx_states.py:36\nmsgid \"Quintana Roo\"\nmsgstr \"Quintana Roo\"\n\n#: mx/mx_states.py:37\nmsgid \"Sinaloa\"\nmsgstr \"Sinaloa\"\n\n#: mx/mx_states.py:38\nmsgid \"San Luis Potosí\"\nmsgstr \"San Luis Potosí\"\n\n#: mx/mx_states.py:39\nmsgid \"Sonora\"\nmsgstr \"Sonora\"\n\n#: mx/mx_states.py:40\nmsgid \"Tabasco\"\nmsgstr \"Tabasco\"\n\n#: mx/mx_states.py:41\nmsgid \"Tamaulipas\"\nmsgstr \"Tamaulipas\"\n\n#: mx/mx_states.py:42\nmsgid \"Tlaxcala\"\nmsgstr \"Tlaxcala\"\n\n#: mx/mx_states.py:43\nmsgid \"Veracruz\"\nmsgstr \"Veracruz\"\n\n#: mx/mx_states.py:44\nmsgid \"Yucatán\"\nmsgstr \"Yucatán\"\n\n#: mx/mx_states.py:45\nmsgid \"Zacatecas\"\nmsgstr \"Zacatecas\"\n\n#: nl/forms.py:26\nmsgid \"Enter a valid postal code\"\nmsgstr \"Sisesta kehtiv postiindeks\"\n\n#: nl/forms.py:82\nmsgid \"Enter a valid SoFi number\"\nmsgstr \"Sisesta kehtiv SoFi number\"\n\n#: nl/nl_provinces.py:4\nmsgid \"Drenthe\"\nmsgstr \"Drenthe\"\n\n#: nl/nl_provinces.py:5\nmsgid \"Flevoland\"\nmsgstr \"Flevoland\"\n\n#: nl/nl_provinces.py:6\nmsgid \"Friesland\"\nmsgstr \"Friisimaa\"\n\n#: nl/nl_provinces.py:7\nmsgid \"Gelderland\"\nmsgstr \"Gelderland\"\n\n#: nl/nl_provinces.py:8\nmsgid \"Groningen\"\nmsgstr \"Groningeni provints\"\n\n#: nl/nl_provinces.py:10\nmsgid \"Noord-Brabant\"\nmsgstr \"Põhja-Brabant\"\n\n#: nl/nl_provinces.py:11\nmsgid \"Noord-Holland\"\nmsgstr \"Põhja-Holland\"\n\n#: nl/nl_provinces.py:12\nmsgid \"Overijssel\"\nmsgstr \"Overijssel\"\n\n#: nl/nl_provinces.py:13\nmsgid \"Utrecht\"\nmsgstr \"Utrechti provints\"\n\n#: nl/nl_provinces.py:14\nmsgid \"Zeeland\"\nmsgstr \"Zeeland\"\n\n#: nl/nl_provinces.py:15\nmsgid \"Zuid-Holland\"\nmsgstr \"Lõuna-Holland\"\n\n#: no/forms.py:39\nmsgid \"Enter a valid Norwegian social security number.\"\nmsgstr \"Sisesta kehtiv Norra sotsiaalturvatunnus.\"\n\n#: pe/forms.py:28\nmsgid \"This field requires 8 digits.\"\nmsgstr \"Sellel väljal peab olema 8 numbrit.\"\n\n#: pe/forms.py:56\nmsgid \"This field requires 11 digits.\"\nmsgstr \"Sellel väljal peab olema 11 numbrit.\"\n\n#: pl/forms.py:42\nmsgid \"National Identification Number consists of 11 digits.\"\nmsgstr \"Riiklik isikukood koosneb 11 numbrist.\"\n\n#: pl/forms.py:43\nmsgid \"Wrong checksum for the National Identification Number.\"\nmsgstr \"Isikukoodil on vale kontrollsumma.\"\n\n#: pl/forms.py:79\nmsgid \"National ID Card Number consists of 3 letters and 6 digits.\"\nmsgstr \"\"\n\n#: pl/forms.py:80\nmsgid \"Wrong checksum for the National ID Card Number.\"\nmsgstr \"\"\n\n#: pl/forms.py:131\nmsgid \"\"\n\"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or \"\n\"XXXXXXXXXX.\"\nmsgstr \"\"\n\n#: pl/forms.py:132\nmsgid \"Wrong checksum for the Tax Number (NIP).\"\nmsgstr \"Maksukohustusnumbril (NIP) on vale kontrollsumma.\"\n\n#: pl/forms.py:171\nmsgid \"National Business Register Number (REGON) consists of 9 or 14 digits.\"\nmsgstr \"Riikliku Äriregistri Number (REGON) koosneb 9 või 14 numbrist.\"\n\n#: pl/forms.py:172\nmsgid \"Wrong checksum for the National Business Register Number (REGON).\"\nmsgstr \"Riiklikul Äriregistri Numbri (REGON) kontrollsumma on vale.\"\n\n#: pl/forms.py:212\nmsgid \"Enter a postal code in the format XX-XXX.\"\nmsgstr \"Sisesta postiindeks kujul XX-XXX.\"\n\n#: pl/pl_voivodeships.py:8\nmsgid \"Lower Silesia\"\nmsgstr \"Alam-Sileesia\"\n\n#: pl/pl_voivodeships.py:9\nmsgid \"Kuyavia-Pomerania\"\nmsgstr \"Kujawy-Pomorze\"\n\n#: pl/pl_voivodeships.py:10\nmsgid \"Lublin\"\nmsgstr \"Lublin\"\n\n#: pl/pl_voivodeships.py:11\nmsgid \"Lubusz\"\nmsgstr \"Lubusz\"\n\n#: pl/pl_voivodeships.py:12\nmsgid \"Lodz\"\nmsgstr \"Łódź\"\n\n#: pl/pl_voivodeships.py:13\nmsgid \"Lesser Poland\"\nmsgstr \"Väike-Poola\"\n\n#: pl/pl_voivodeships.py:14\nmsgid \"Masovia\"\nmsgstr \"Masoovia\"\n\n#: pl/pl_voivodeships.py:15\nmsgid \"Opole\"\nmsgstr \"Opole\"\n\n#: pl/pl_voivodeships.py:16\nmsgid \"Subcarpatia\"\nmsgstr \"Podkarpacie\"\n\n#: pl/pl_voivodeships.py:17\nmsgid \"Podlasie\"\nmsgstr \"Podlaasia\"\n\n#: pl/pl_voivodeships.py:18\nmsgid \"Pomerania\"\nmsgstr \"Pomorze\"\n\n#: pl/pl_voivodeships.py:19\nmsgid \"Silesia\"\nmsgstr \"Sileesia\"\n\n#: pl/pl_voivodeships.py:20\nmsgid \"Swietokrzyskie\"\nmsgstr \"Święty Krzyżi\"\n\n#: pl/pl_voivodeships.py:21\nmsgid \"Warmia-Masuria\"\nmsgstr \"Warmia-Masuuria\"\n\n#: pl/pl_voivodeships.py:22\nmsgid \"Greater Poland\"\nmsgstr \"Suur-Poola\"\n\n#: pl/pl_voivodeships.py:23\nmsgid \"West Pomerania\"\nmsgstr \"Lääne-Pomorze\"\n\n#: pt/forms.py:19\nmsgid \"Enter a zip code in the format XXXX-XXX.\"\nmsgstr \"\"\n\n#: pt/forms.py:39\nmsgid \"Phone numbers must have 9 digits, or start by + or 00.\"\nmsgstr \"\"\n\n#: ro/forms.py:22\nmsgid \"Enter a valid CIF.\"\nmsgstr \"Sisestage korrektne CIF.\"\n\n#: ro/forms.py:59\nmsgid \"Enter a valid CNP.\"\nmsgstr \"Sisestage korrektne CNP.\"\n\n#: ro/forms.py:143\nmsgid \"Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format\"\nmsgstr \"Sisesta korrektne IBAN kujul ROXX-XXXX-XXXX-XXXX-XXXX-XXXX\"\n\n#: ro/forms.py:175\nmsgid \"Phone numbers must be in XXXX-XXXXXX format.\"\nmsgstr \"Telefoninumbrid peavad olema kujul XXXX-XXXXXX\"\n\n#: ro/forms.py:200\nmsgid \"Enter a valid postal code in the format XXXXXX\"\nmsgstr \"Sisesta postiindeks kujul XXXXXX\"\n\n#: ru/forms.py:37\nmsgid \"Enter a postal code in the format XXXXXX.\"\nmsgstr \"\"\n\n#: ru/forms.py:50\nmsgid \"Enter a passport number in the format XXXX XXXXXX.\"\nmsgstr \"\"\n\n#: ru/forms.py:63\nmsgid \"Enter a passport number in the format XX XXXXXXX.\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:10\nmsgid \"Central Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:11\nmsgid \"South Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:12\nmsgid \"North-West Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:13\nmsgid \"Far-East Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:14\nmsgid \"Siberian Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:15\nmsgid \"Ural Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:16\nmsgid \"Privolzhsky Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:17\nmsgid \"North-Caucasian Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:21\nmsgid \"Moskva\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:22\nmsgid \"Saint-Peterburg\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:23\nmsgid \"Moskovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:24\nmsgid \"Adygeya, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:25\nmsgid \"Bashkortostan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:26\nmsgid \"Buryatia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:27\nmsgid \"Altay, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:28\nmsgid \"Dagestan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:29\nmsgid \"Ingushskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:30\nmsgid \"Kabardino-Balkarskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:31\nmsgid \"Kalmykia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:32\nmsgid \"Karachaevo-Cherkesskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:33\nmsgid \"Karelia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:34\nmsgid \"Komi, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:35\nmsgid \"Mariy Ehl, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:36\nmsgid \"Mordovia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:37\nmsgid \"Sakha, Respublika (Yakutiya)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:38\nmsgid \"Severnaya Osetia, Respublika (Alania)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:39\nmsgid \"Tatarstan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:40\nmsgid \"Tyva, Respublika (Tuva)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:41\nmsgid \"Udmurtskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:42\nmsgid \"Khakassiya, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:43\nmsgid \"Chechenskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:44\nmsgid \"Chuvashskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:45\nmsgid \"Altayskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:46\nmsgid \"Zabaykalskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:47\nmsgid \"Kamchatskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:48\nmsgid \"Krasnodarskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:49\nmsgid \"Krasnoyarskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:50\nmsgid \"Permskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:51\nmsgid \"Primorskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:52\nmsgid \"Stavropol'siyy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:53\nmsgid \"Khabarovskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:54\nmsgid \"Amurskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:55\nmsgid \"Arkhangel'skaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:56\nmsgid \"Astrakhanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:57\nmsgid \"Belgorodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:58\nmsgid \"Bryanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:59\nmsgid \"Vladimirskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:60\nmsgid \"Volgogradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:61\nmsgid \"Vologodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:62\nmsgid \"Voronezhskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:63\nmsgid \"Ivanovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:64\nmsgid \"Irkutskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:65\nmsgid \"Kaliningradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:66\nmsgid \"Kaluzhskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:67\nmsgid \"Kemerovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:68\nmsgid \"Kirovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:69\nmsgid \"Kostromskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:70\nmsgid \"Kurganskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:71\nmsgid \"Kurskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:72\nmsgid \"Leningradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:73\nmsgid \"Lipeckaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:74\nmsgid \"Magadanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:75\nmsgid \"Murmanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:76\nmsgid \"Nizhegorodskaja oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:77\nmsgid \"Novgorodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:78\nmsgid \"Novosibirskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:79\nmsgid \"Omskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:80\nmsgid \"Orenburgskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:81\nmsgid \"Orlovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:82\nmsgid \"Penzenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:83\nmsgid \"Pskovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:84\nmsgid \"Rostovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:85\nmsgid \"Rjazanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:86\nmsgid \"Samarskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:87\nmsgid \"Saratovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:88\nmsgid \"Sakhalinskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:89\nmsgid \"Sverdlovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:90\nmsgid \"Smolenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:91\nmsgid \"Tambovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:92\nmsgid \"Tverskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:93\nmsgid \"Tomskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:94\nmsgid \"Tul'skaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:95\nmsgid \"Tyumenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:96\nmsgid \"Ul'ianovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:97\nmsgid \"Chelyabinskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:98\nmsgid \"Yaroslavskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:99\nmsgid \"Evreyskaya avtonomnaja oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:100\nmsgid \"Neneckiy autonomnyy okrug\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:101\nmsgid \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:102\nmsgid \"Chukotskiy avtonomnyy okrug\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:103\nmsgid \"Yamalo-Neneckiy avtonomnyy okrug\"\nmsgstr \"\"\n\n#: se/forms.py:54\nmsgid \"Enter a valid Swedish organisation number.\"\nmsgstr \"\"\n\n#: se/forms.py:111\nmsgid \"Enter a valid Swedish personal identity number.\"\nmsgstr \"\"\n\n#: se/forms.py:112\nmsgid \"Co-ordination numbers are not allowed.\"\nmsgstr \"\"\n\n#: se/forms.py:154\nmsgid \"Enter a Swedish postal code in the format XXXXX.\"\nmsgstr \"\"\n\n#: se/se_counties.py:16\nmsgid \"Stockholm\"\nmsgstr \"\"\n\n#: se/se_counties.py:17\nmsgid \"Västerbotten\"\nmsgstr \"\"\n\n#: se/se_counties.py:18\nmsgid \"Norrbotten\"\nmsgstr \"\"\n\n#: se/se_counties.py:19\nmsgid \"Uppsala\"\nmsgstr \"\"\n\n#: se/se_counties.py:20\nmsgid \"Södermanland\"\nmsgstr \"\"\n\n#: se/se_counties.py:21\nmsgid \"Östergötland\"\nmsgstr \"\"\n\n#: se/se_counties.py:22\nmsgid \"Jönköping\"\nmsgstr \"\"\n\n#: se/se_counties.py:23\nmsgid \"Kronoberg\"\nmsgstr \"\"\n\n#: se/se_counties.py:24\nmsgid \"Kalmar\"\nmsgstr \"\"\n\n#: se/se_counties.py:25\nmsgid \"Gotland\"\nmsgstr \"\"\n\n#: se/se_counties.py:26\nmsgid \"Blekinge\"\nmsgstr \"\"\n\n#: se/se_counties.py:27\nmsgid \"Skåne\"\nmsgstr \"\"\n\n#: se/se_counties.py:28\nmsgid \"Halland\"\nmsgstr \"\"\n\n#: se/se_counties.py:29\nmsgid \"Västra Götaland\"\nmsgstr \"\"\n\n#: se/se_counties.py:30\nmsgid \"Värmland\"\nmsgstr \"\"\n\n#: se/se_counties.py:31\nmsgid \"Örebro\"\nmsgstr \"\"\n\n#: se/se_counties.py:32\nmsgid \"Västmanland\"\nmsgstr \"\"\n\n#: se/se_counties.py:33\nmsgid \"Dalarna\"\nmsgstr \"\"\n\n#: se/se_counties.py:34\nmsgid \"Gävleborg\"\nmsgstr \"\"\n\n#: se/se_counties.py:35\nmsgid \"Västernorrland\"\nmsgstr \"\"\n\n#: se/se_counties.py:36\nmsgid \"Jämtland\"\nmsgstr \"\"\n\n#: si/forms.py:25\nmsgid \"The first 7 digits of the EMSO must represent a valid past date.\"\nmsgstr \"\"\n\n#: si/forms.py:26\nmsgid \"The EMSO is not valid.\"\nmsgstr \"\"\n\n#: si/forms.py:86\nmsgid \"Enter a valid tax number in form SIXXXXXXXX\"\nmsgstr \"\"\n\n#: si/forms.py:151\nmsgid \"Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:8\nmsgid \"Banska Bystrica\"\nmsgstr \"Banska Bystrica\"\n\n#: sk/sk_districts.py:9\nmsgid \"Banska Stiavnica\"\nmsgstr \"Banska Stiavnica\"\n\n#: sk/sk_districts.py:10\nmsgid \"Bardejov\"\nmsgstr \"Bardejov\"\n\n#: sk/sk_districts.py:11\nmsgid \"Banovce nad Bebravou\"\nmsgstr \"Banovce nad Bebravou\"\n\n#: sk/sk_districts.py:12\nmsgid \"Brezno\"\nmsgstr \"Brezno\"\n\n#: sk/sk_districts.py:13\nmsgid \"Bratislava I\"\nmsgstr \"Bratislava I\"\n\n#: sk/sk_districts.py:14\nmsgid \"Bratislava II\"\nmsgstr \"Bratislava II\"\n\n#: sk/sk_districts.py:15\nmsgid \"Bratislava III\"\nmsgstr \"Bratislava III\"\n\n#: sk/sk_districts.py:16\nmsgid \"Bratislava IV\"\nmsgstr \"Bratislava IV\"\n\n#: sk/sk_districts.py:17\nmsgid \"Bratislava V\"\nmsgstr \"Bratislava V\"\n\n#: sk/sk_districts.py:18\nmsgid \"Bytca\"\nmsgstr \"Bytca\"\n\n#: sk/sk_districts.py:19\nmsgid \"Cadca\"\nmsgstr \"Cadca\"\n\n#: sk/sk_districts.py:20\nmsgid \"Detva\"\nmsgstr \"Detva\"\n\n#: sk/sk_districts.py:21\nmsgid \"Dolny Kubin\"\nmsgstr \"Dolny Kubin\"\n\n#: sk/sk_districts.py:22\nmsgid \"Dunajska Streda\"\nmsgstr \"Dunajska Streda\"\n\n#: sk/sk_districts.py:23\nmsgid \"Galanta\"\nmsgstr \"Galanta\"\n\n#: sk/sk_districts.py:24\nmsgid \"Gelnica\"\nmsgstr \"Gelnica\"\n\n#: sk/sk_districts.py:25\nmsgid \"Hlohovec\"\nmsgstr \"Hlohovec\"\n\n#: sk/sk_districts.py:26\nmsgid \"Humenne\"\nmsgstr \"Humenne\"\n\n#: sk/sk_districts.py:27\nmsgid \"Ilava\"\nmsgstr \"Ilava\"\n\n#: sk/sk_districts.py:28\nmsgid \"Kezmarok\"\nmsgstr \"Kezmarok\"\n\n#: sk/sk_districts.py:29\nmsgid \"Komarno\"\nmsgstr \"Komarno\"\n\n#: sk/sk_districts.py:30\nmsgid \"Kosice I\"\nmsgstr \"Kosice I\"\n\n#: sk/sk_districts.py:31\nmsgid \"Kosice II\"\nmsgstr \"Kosice II\"\n\n#: sk/sk_districts.py:32\nmsgid \"Kosice III\"\nmsgstr \"Kosice III\"\n\n#: sk/sk_districts.py:33\nmsgid \"Kosice IV\"\nmsgstr \"Kosice IV\"\n\n#: sk/sk_districts.py:34\nmsgid \"Kosice - okolie\"\nmsgstr \"Kosice - okolie\"\n\n#: sk/sk_districts.py:35\nmsgid \"Krupina\"\nmsgstr \"Krupina\"\n\n#: sk/sk_districts.py:36\nmsgid \"Kysucke Nove Mesto\"\nmsgstr \"Kysucke Nove Mesto\"\n\n#: sk/sk_districts.py:37\nmsgid \"Levice\"\nmsgstr \"Levice\"\n\n#: sk/sk_districts.py:38\nmsgid \"Levoca\"\nmsgstr \"Levoca\"\n\n#: sk/sk_districts.py:39\nmsgid \"Liptovsky Mikulas\"\nmsgstr \"Liptovsky Mikulas\"\n\n#: sk/sk_districts.py:40\nmsgid \"Lucenec\"\nmsgstr \"Lucenec\"\n\n#: sk/sk_districts.py:41\nmsgid \"Malacky\"\nmsgstr \"Malacky\"\n\n#: sk/sk_districts.py:42\nmsgid \"Martin\"\nmsgstr \"Martin\"\n\n#: sk/sk_districts.py:43\nmsgid \"Medzilaborce\"\nmsgstr \"Medzilaborce\"\n\n#: sk/sk_districts.py:44\nmsgid \"Michalovce\"\nmsgstr \"Michalovce\"\n\n#: sk/sk_districts.py:45\nmsgid \"Myjava\"\nmsgstr \"Myjava\"\n\n#: sk/sk_districts.py:46\nmsgid \"Namestovo\"\nmsgstr \"Namestovo\"\n\n#: sk/sk_districts.py:47\nmsgid \"Nitra\"\nmsgstr \"Nitra\"\n\n#: sk/sk_districts.py:48\nmsgid \"Nove Mesto nad Vahom\"\nmsgstr \"Nove Mesto nad Vahom\"\n\n#: sk/sk_districts.py:49\nmsgid \"Nove Zamky\"\nmsgstr \"Nove Zamky\"\n\n#: sk/sk_districts.py:50\nmsgid \"Partizanske\"\nmsgstr \"Partizanske\"\n\n#: sk/sk_districts.py:51\nmsgid \"Pezinok\"\nmsgstr \"Pezinok\"\n\n#: sk/sk_districts.py:52\nmsgid \"Piestany\"\nmsgstr \"Piestany\"\n\n#: sk/sk_districts.py:53\nmsgid \"Poltar\"\nmsgstr \"Poltar\"\n\n#: sk/sk_districts.py:54\nmsgid \"Poprad\"\nmsgstr \"Poprad\"\n\n#: sk/sk_districts.py:55\nmsgid \"Povazska Bystrica\"\nmsgstr \"Povazska Bystrica\"\n\n#: sk/sk_districts.py:56\nmsgid \"Presov\"\nmsgstr \"Presov\"\n\n#: sk/sk_districts.py:57\nmsgid \"Prievidza\"\nmsgstr \"Prievidza\"\n\n#: sk/sk_districts.py:58\nmsgid \"Puchov\"\nmsgstr \"Puchov\"\n\n#: sk/sk_districts.py:59\nmsgid \"Revuca\"\nmsgstr \"Revuca\"\n\n#: sk/sk_districts.py:60\nmsgid \"Rimavska Sobota\"\nmsgstr \"Rimavska Sobota\"\n\n#: sk/sk_districts.py:61\nmsgid \"Roznava\"\nmsgstr \"Roznava\"\n\n#: sk/sk_districts.py:62\nmsgid \"Ruzomberok\"\nmsgstr \"Ruzomberok\"\n\n#: sk/sk_districts.py:63\nmsgid \"Sabinov\"\nmsgstr \"Sabinov\"\n\n#: sk/sk_districts.py:64\nmsgid \"Senec\"\nmsgstr \"Senec\"\n\n#: sk/sk_districts.py:65\nmsgid \"Senica\"\nmsgstr \"Senica\"\n\n#: sk/sk_districts.py:66\nmsgid \"Skalica\"\nmsgstr \"Skalica\"\n\n#: sk/sk_districts.py:67\nmsgid \"Snina\"\nmsgstr \"Snina\"\n\n#: sk/sk_districts.py:68\nmsgid \"Sobrance\"\nmsgstr \"Sobrance\"\n\n#: sk/sk_districts.py:69\nmsgid \"Spisska Nova Ves\"\nmsgstr \"Spisska Nova Ves\"\n\n#: sk/sk_districts.py:70\nmsgid \"Stara Lubovna\"\nmsgstr \"Stara Lubovna\"\n\n#: sk/sk_districts.py:71\nmsgid \"Stropkov\"\nmsgstr \"Stropkov\"\n\n#: sk/sk_districts.py:72\nmsgid \"Svidnik\"\nmsgstr \"Svidnik\"\n\n#: sk/sk_districts.py:73\nmsgid \"Sala\"\nmsgstr \"Sala\"\n\n#: sk/sk_districts.py:74\nmsgid \"Topolcany\"\nmsgstr \"Topolcany\"\n\n#: sk/sk_districts.py:75\nmsgid \"Trebisov\"\nmsgstr \"Trebisov\"\n\n#: sk/sk_districts.py:76\nmsgid \"Trencin\"\nmsgstr \"Trencin\"\n\n#: sk/sk_districts.py:77\nmsgid \"Trnava\"\nmsgstr \"Trnava\"\n\n#: sk/sk_districts.py:78\nmsgid \"Turcianske Teplice\"\nmsgstr \"Turcianske Teplice\"\n\n#: sk/sk_districts.py:79\nmsgid \"Tvrdosin\"\nmsgstr \"Tvrdosin\"\n\n#: sk/sk_districts.py:80\nmsgid \"Velky Krtis\"\nmsgstr \"Velky Krtis\"\n\n#: sk/sk_districts.py:81\nmsgid \"Vranov nad Toplou\"\nmsgstr \"Vranov nad Toplou\"\n\n#: sk/sk_districts.py:82\nmsgid \"Zlate Moravce\"\nmsgstr \"Zlate Moravce\"\n\n#: sk/sk_districts.py:83\nmsgid \"Zvolen\"\nmsgstr \"Zvolen\"\n\n#: sk/sk_districts.py:84\nmsgid \"Zarnovica\"\nmsgstr \"Zarnovica\"\n\n#: sk/sk_districts.py:85\nmsgid \"Ziar nad Hronom\"\nmsgstr \"Ziar nad Hronom\"\n\n#: sk/sk_districts.py:86\nmsgid \"Zilina\"\nmsgstr \"Zilina\"\n\n#: sk/sk_regions.py:8\nmsgid \"Banska Bystrica region\"\nmsgstr \"Banská Bystrica regioon\"\n\n#: sk/sk_regions.py:9\nmsgid \"Bratislava region\"\nmsgstr \"Bratislava regioon\"\n\n#: sk/sk_regions.py:10\nmsgid \"Kosice region\"\nmsgstr \"Košice regioon\"\n\n#: sk/sk_regions.py:11\nmsgid \"Nitra region\"\nmsgstr \"Nitra regioon\"\n\n#: sk/sk_regions.py:12\nmsgid \"Presov region\"\nmsgstr \"Prešovi regioon\"\n\n#: sk/sk_regions.py:13\nmsgid \"Trencin region\"\nmsgstr \"Trenšíni regioon\"\n\n#: sk/sk_regions.py:14\nmsgid \"Trnava region\"\nmsgstr \"Trnava regioon\"\n\n#: sk/sk_regions.py:15\nmsgid \"Zilina region\"\nmsgstr \"Žilina regioon\"\n\n#: tr/forms.py:21\nmsgid \"Enter a postal code in the format XXXXX.\"\nmsgstr \"Sisestage postiindeks XXXXX formaadis.\"\n\n#: tr/forms.py:42\nmsgid \"Phone numbers must be in 0XXX XXX XXXX format.\"\nmsgstr \"Telefoninumbrid peavad olema 0XXX XXX XXXX formaadis.\"\n\n#: tr/forms.py:69\nmsgid \"Enter a valid Turkish Identification number.\"\nmsgstr \"Sisestage kehtiv Türgi identifitseerimisnumber.\"\n\n#: tr/forms.py:70\nmsgid \"Turkish Identification number must be 11 digits.\"\nmsgstr \"Türgi Identifitseerimisnumber peab olema 11 numbrit.\"\n\n#: us/forms.py:21\nmsgid \"Enter a zip code in the format XXXXX or XXXXX-XXXX.\"\nmsgstr \"Sisesta postiindeks kujul XXXXX või XXXXX-XXXX.\"\n\n#: us/forms.py:59\nmsgid \"Enter a valid U.S. Social Security number in XXX-XX-XXXX format.\"\nmsgstr \"Sisesta kehtiv U.S. Social Security number formaadis XXX-XX-XXXX.\"\n\n#: us/forms.py:92\nmsgid \"Enter a U.S. state or territory.\"\nmsgstr \"Sisestage USA osariik või piirkond.\"\n\n#: us/models.py:8\nmsgid \"U.S. state (two uppercase letters)\"\nmsgstr \"U.S.A. osariik (kaks suurt tähte)\"\n\n#: us/models.py:17\nmsgid \"U.S. postal code (two uppercase letters)\"\nmsgstr \"USA postiindeks (kaks suurtähte)\"\n\n#: us/models.py:26\nmsgid \"Phone number\"\nmsgstr \"Telefoninumber\"\n\n#: uy/forms.py:29\nmsgid \"Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.\"\nmsgstr \"\"\n\"Sisestage kehtiv CI number X.XXX.XXX-X, XXXXXXX-X või XXXXXXXX formaadis.\"\n\n#: uy/forms.py:31\nmsgid \"Enter a valid CI number.\"\nmsgstr \"Sisestage kehtiv CI number.\"\n\n#: za/forms.py:22\nmsgid \"Enter a valid South African ID number\"\nmsgstr \"Sisesta kehtiv Lõuna-Aafrika ID-number\"\n\n#: za/forms.py:56\nmsgid \"Enter a valid South African postal code\"\nmsgstr \"Sisesta kehtiv Lõuna-Aafrika postiindeks\"\n\n#: za/za_provinces.py:4\nmsgid \"Eastern Cape\"\nmsgstr \"Eastern Cape\"\n\n#: za/za_provinces.py:5\nmsgid \"Free State\"\nmsgstr \"Free State\"\n\n#: za/za_provinces.py:6\nmsgid \"Gauteng\"\nmsgstr \"Gauteng\"\n\n#: za/za_provinces.py:7\nmsgid \"KwaZulu-Natal\"\nmsgstr \"KwaZulu-Natal\"\n\n#: za/za_provinces.py:8\nmsgid \"Limpopo\"\nmsgstr \"Limpopo\"\n\n#: za/za_provinces.py:9\nmsgid \"Mpumalanga\"\nmsgstr \"Mpumalanga\"\n\n#: za/za_provinces.py:10\nmsgid \"Northern Cape\"\nmsgstr \"Northern Cape\"\n\n#: za/za_provinces.py:11\nmsgid \"North West\"\nmsgstr \"North West\"\n\n#: za/za_provinces.py:12\nmsgid \"Western Cape\"\nmsgstr \"Western Cape\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/locale/eu/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Aitzol Naberan <anaberan@codesyntax.com>, 2012-2013.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2013-01-06 18:02+0000\\n\"\n\"Last-Translator: Aitzol Naberan <anaberan@codesyntax.com>\\n\"\n\"Language-Team: Basque (http://www.transifex.com/projects/p/django/language/\"\n\"eu/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: eu\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: ar/forms.py:30\nmsgid \"Enter a postal code in the format NNNN or ANNNNAAA.\"\nmsgstr \"NNNN edo ANNNNAAA formatoan idatzi posta kode bat.\"\n\n#: ar/forms.py:52 br/forms.py:95 br/forms.py:134 pe/forms.py:27 pe/forms.py:55\nmsgid \"This field requires only numbers.\"\nmsgstr \"Eremu honek zenbakiak bakarrik behar ditu.\"\n\n#: ar/forms.py:53\nmsgid \"This field requires 7 or 8 digits.\"\nmsgstr \"Eremu honek 7 edo 8 digito behar ditu.\"\n\n#: ar/forms.py:82\nmsgid \"Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.\"\nmsgstr \"CUIT zuzena idatzi XX-XXXXXXXX-X edo XXXXXXXXXXXX formatoan.\"\n\n#: ar/forms.py:83\nmsgid \"Invalid CUIT.\"\nmsgstr \"CUIT okerra.\"\n\n#: ar/forms.py:84\nmsgid \"Invalid legal type. Type must be 27, 20, 23 or 30.\"\nmsgstr \"\"\n\n#: at/at_states.py:5\nmsgid \"Burgenland\"\nmsgstr \"Burgenland\"\n\n#: at/at_states.py:6\nmsgid \"Carinthia\"\nmsgstr \"Carinthia\"\n\n#: at/at_states.py:7\nmsgid \"Lower Austria\"\nmsgstr \"Behe Australia\"\n\n#: at/at_states.py:8\nmsgid \"Upper Austria\"\nmsgstr \"Goi Australia\"\n\n#: at/at_states.py:9\nmsgid \"Salzburg\"\nmsgstr \"Salzburg\"\n\n#: at/at_states.py:10\nmsgid \"Styria\"\nmsgstr \"Styria\"\n\n#: at/at_states.py:11\nmsgid \"Tyrol\"\nmsgstr \"Tyrol\"\n\n#: at/at_states.py:12\nmsgid \"Vorarlberg\"\nmsgstr \"Vorarlberg\"\n\n#: at/at_states.py:13\nmsgid \"Vienna\"\nmsgstr \"Vienna\"\n\n#: at/forms.py:22 ch/forms.py:22 no/forms.py:19\nmsgid \"Enter a zip code in the format XXXX.\"\nmsgstr \"zip kodea XXXX formatoan idatzi.\"\n\n#: at/forms.py:50\nmsgid \"Enter a valid Austrian Social Security Number in XXXX XXXXXX format.\"\nmsgstr \"\"\n\"Australiako Gizarte Segurantza kode zuzena sartu XXXX XXXXXX formatuan.\"\n\n#: au/forms.py:26\nmsgid \"Enter a 4 digit postcode.\"\nmsgstr \"Sartu 4 digituko posta kodea\"\n\n#: au/models.py:9\nmsgid \"Australian State\"\nmsgstr \"Australian State\"\n\n#: au/models.py:19\nmsgid \"Australian Postcode\"\nmsgstr \"Australiar postakodea\"\n\n#: au/models.py:33\nmsgid \"Australian Phone number\"\nmsgstr \"Australiar telefono zenbakia\"\n\n#: be/be_provinces.py:5\nmsgid \"Antwerp\"\nmsgstr \"Antwerp\"\n\n#: be/be_provinces.py:6\nmsgid \"Brussels\"\nmsgstr \"Brussels\"\n\n#: be/be_provinces.py:7\nmsgid \"East Flanders\"\nmsgstr \"East Flanders\"\n\n#: be/be_provinces.py:8\nmsgid \"Flemish Brabant\"\nmsgstr \"Flemish Brabant\"\n\n#: be/be_provinces.py:9\nmsgid \"Hainaut\"\nmsgstr \"Hainaut\"\n\n#: be/be_provinces.py:10\nmsgid \"Liege\"\nmsgstr \"Liege\"\n\n#: be/be_provinces.py:11 nl/nl_provinces.py:9\nmsgid \"Limburg\"\nmsgstr \"Limburg\"\n\n#: be/be_provinces.py:12\nmsgid \"Luxembourg\"\nmsgstr \"Luxembourg\"\n\n#: be/be_provinces.py:13\nmsgid \"Namur\"\nmsgstr \"Namur\"\n\n#: be/be_provinces.py:14\nmsgid \"Walloon Brabant\"\nmsgstr \"Walloon Brabant\"\n\n#: be/be_provinces.py:15\nmsgid \"West Flanders\"\nmsgstr \"West Flanders\"\n\n#: be/be_regions.py:5\nmsgid \"Brussels Capital Region\"\nmsgstr \"Brussels Capital Region\"\n\n#: be/be_regions.py:6\nmsgid \"Flemish Region\"\nmsgstr \"Flemish Region\"\n\n#: be/be_regions.py:7\nmsgid \"Wallonia\"\nmsgstr \"Wallonia\"\n\n#: be/forms.py:25\nmsgid \"Enter a valid postal code in the range and format 1XXX - 9XXX.\"\nmsgstr \"Sartu 1XXX - 9XXX tartean dagoen posta kode zuzen bat.\"\n\n#: be/forms.py:48\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\nmsgstr \"\"\n\"Onartutako  telefono zenbaki formatuak 0x xxx xx xx, 0xx xx xx xx, 04xx xx \"\n\"xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.xx.xx.\"\n\"xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\n\n#: br/forms.py:22\nmsgid \"Enter a zip code in the format XXXXX-XXX.\"\nmsgstr \"XXXXX-XXX formatoan zip kodea idatzi.\"\n\n#: br/forms.py:31\nmsgid \"Phone numbers must be in XX-XXXX-XXXX format.\"\nmsgstr \"Telefono zenbakiak XX-XXXX-XXXX formatoa behar dute.\"\n\n#: br/forms.py:58\nmsgid \"\"\n\"Select a valid brazilian state. That state is not one of the available \"\n\"states.\"\nmsgstr \"Brasilgo estatu zuzen bat aukeratu. Hori ez dago aukeran.\"\n\n#: br/forms.py:93\nmsgid \"Invalid CPF number.\"\nmsgstr \"CPF zenbaki okerra.\"\n\n#: br/forms.py:94\nmsgid \"This field requires at most 11 digits or 14 characters.\"\nmsgstr \"Eremu honek gehienez 11 digito edo 14 karaktere behar ditu.\"\n\n#: br/forms.py:133\nmsgid \"Invalid CNPJ number.\"\nmsgstr \"CNPJ zenbaki okerra.\"\n\n#: br/forms.py:135\nmsgid \"This field requires at least 14 digits\"\nmsgstr \"Eremu honek 14 digito behar ditu gutxienez\"\n\n#: ca/forms.py:29\nmsgid \"Enter a postal code in the format XXX XXX.\"\nmsgstr \"Posta kodea idatzi XXX XXX formatoan.\"\n\n#: ca/forms.py:47 us/forms.py:30\nmsgid \"Phone numbers must be in XXX-XXX-XXXX format.\"\nmsgstr \"Telefono zenbakiak XXX-XXX-XXXX formatuan egon behar dira.\"\n\n#: ca/forms.py:69\nmsgid \"Enter a Canadian province or territory.\"\nmsgstr \"Enter a Canadian province or territory.\"\n\n#: ca/forms.py:110\nmsgid \"Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.\"\nmsgstr \"\"\n\"Sartu Kanadako segurtasun sozialeko zenbaki zuzen bat XXX-XXX-XXX formatoan.\"\n\n#: ch/ch_states.py:5\nmsgid \"Aargau\"\nmsgstr \"Aargau\"\n\n#: ch/ch_states.py:6\nmsgid \"Appenzell Innerrhoden\"\nmsgstr \"Appenzell Innerrhoden\"\n\n#: ch/ch_states.py:7\nmsgid \"Appenzell Ausserrhoden\"\nmsgstr \"Appenzell Ausserrhoden\"\n\n#: ch/ch_states.py:8\nmsgid \"Basel-Stadt\"\nmsgstr \"Basel-Stadt\"\n\n#: ch/ch_states.py:9\nmsgid \"Basel-Land\"\nmsgstr \"Basel-Land\"\n\n#: ch/ch_states.py:10\nmsgid \"Berne\"\nmsgstr \"Berne\"\n\n#: ch/ch_states.py:11\nmsgid \"Fribourg\"\nmsgstr \"Fribourg\"\n\n#: ch/ch_states.py:12\nmsgid \"Geneva\"\nmsgstr \"Geneva\"\n\n#: ch/ch_states.py:13\nmsgid \"Glarus\"\nmsgstr \"Glarus\"\n\n#: ch/ch_states.py:14\nmsgid \"Graubuenden\"\nmsgstr \"Graubuenden\"\n\n#: ch/ch_states.py:15\nmsgid \"Jura\"\nmsgstr \"Jura\"\n\n#: ch/ch_states.py:16\nmsgid \"Lucerne\"\nmsgstr \"Lucerne\"\n\n#: ch/ch_states.py:17\nmsgid \"Neuchatel\"\nmsgstr \"Neuchatel\"\n\n#: ch/ch_states.py:18\nmsgid \"Nidwalden\"\nmsgstr \"Nidwalden\"\n\n#: ch/ch_states.py:19\nmsgid \"Obwalden\"\nmsgstr \"Obwalden\"\n\n#: ch/ch_states.py:20\nmsgid \"Schaffhausen\"\nmsgstr \"Schaffhausen\"\n\n#: ch/ch_states.py:21\nmsgid \"Schwyz\"\nmsgstr \"Schwyz\"\n\n#: ch/ch_states.py:22\nmsgid \"Solothurn\"\nmsgstr \"Solothurn\"\n\n#: ch/ch_states.py:23\nmsgid \"St. Gallen\"\nmsgstr \"St. Gallen\"\n\n#: ch/ch_states.py:24\nmsgid \"Thurgau\"\nmsgstr \"Thurgau\"\n\n#: ch/ch_states.py:25\nmsgid \"Ticino\"\nmsgstr \"Ticino\"\n\n#: ch/ch_states.py:26\nmsgid \"Uri\"\nmsgstr \"Uri\"\n\n#: ch/ch_states.py:27\nmsgid \"Valais\"\nmsgstr \"Valais\"\n\n#: ch/ch_states.py:28\nmsgid \"Vaud\"\nmsgstr \"Vaud\"\n\n#: ch/ch_states.py:29\nmsgid \"Zug\"\nmsgstr \"Zug\"\n\n#: ch/ch_states.py:30\nmsgid \"Zurich\"\nmsgstr \"Zurich\"\n\n#: ch/forms.py:37\nmsgid \"Phone numbers must be in 0XX XXX XX XX format.\"\nmsgstr \"Telefono zenbakiak 0XX XXX XX XX formatuan egon behar dira.\"\n\n#: ch/forms.py:68\nmsgid \"\"\n\"Enter a valid Swiss identity or passport card number in X1234567<0 or \"\n\"1234567890 format.\"\nmsgstr \"\"\n\"Saru Suitzako Nortasun agiri edo pasaporte zenbaki zuzen bat X1234567<0 edo \"\n\"1234567890 formatuan.\"\n\n#: cl/forms.py:32\nmsgid \"Enter a valid Chilean RUT.\"\nmsgstr \"Txileko RUT zuzen bat sartu\"\n\n#: cl/forms.py:33\nmsgid \"Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.\"\nmsgstr \"Txileko RUT zuzen bat sartu. Formatoa: XX.XXX.XXX.X.\"\n\n#: cl/forms.py:34\nmsgid \"The Chilean RUT is not valid.\"\nmsgstr \"Txileko RUTa ez da baliozkoa\"\n\n#: cn/forms.py:84\nmsgid \"Enter a post code in the format XXXXXX.\"\nmsgstr \"Sartu posta kodea XXXXXX formatuan.\"\n\n#: cn/forms.py:105\nmsgid \"ID Card Number consists of 15 or 18 digits.\"\nmsgstr \"ID Txartel Zenbakiak 15 edo 18 digitu dauzka.\"\n\n#: cn/forms.py:106\nmsgid \"Invalid ID Card Number: Wrong checksum\"\nmsgstr \"ID Txartel Zenbaki okerra: konprobazio batura ez da zuzena\"\n\n#: cn/forms.py:107\nmsgid \"Invalid ID Card Number: Wrong birthdate\"\nmsgstr \"ID Txartel Zenbaki okerra: jaiotza data ez da zuzena\"\n\n#: cn/forms.py:108\nmsgid \"Invalid ID Card Number: Wrong location code\"\nmsgstr \"ID Txartel Zenbaki okerra: kokalekua ez da zuzena\"\n\n#: cn/forms.py:193\nmsgid \"Enter a valid phone number.\"\nmsgstr \"Sartu telefono zenbaki zuzen bat.\"\n\n#: cn/forms.py:210\nmsgid \"Enter a valid cell number.\"\nmsgstr \"Saru mugikor zenbaki zuzen bat.\"\n\n#: cz/cz_regions.py:8\nmsgid \"Prague\"\nmsgstr \"Prague\"\n\n#: cz/cz_regions.py:9\nmsgid \"Central Bohemian Region\"\nmsgstr \"Central Bohemian Region\"\n\n#: cz/cz_regions.py:10\nmsgid \"South Bohemian Region\"\nmsgstr \"South Bohemian Region\"\n\n#: cz/cz_regions.py:11\nmsgid \"Pilsen Region\"\nmsgstr \"Pilsen Region\"\n\n#: cz/cz_regions.py:12\nmsgid \"Carlsbad Region\"\nmsgstr \"Carlsbad Region\"\n\n#: cz/cz_regions.py:13\nmsgid \"Usti Region\"\nmsgstr \"Usti Region\"\n\n#: cz/cz_regions.py:14\nmsgid \"Liberec Region\"\nmsgstr \"Liberec Region\"\n\n#: cz/cz_regions.py:15\nmsgid \"Hradec Region\"\nmsgstr \"Hradec Region\"\n\n#: cz/cz_regions.py:16\nmsgid \"Pardubice Region\"\nmsgstr \"Pardubice Region\"\n\n#: cz/cz_regions.py:17\nmsgid \"Vysocina Region\"\nmsgstr \"Vysocina Region\"\n\n#: cz/cz_regions.py:18\nmsgid \"South Moravian Region\"\nmsgstr \"South Moravian Region\"\n\n#: cz/cz_regions.py:19\nmsgid \"Olomouc Region\"\nmsgstr \"Olomouc Region\"\n\n#: cz/cz_regions.py:20\nmsgid \"Zlin Region\"\nmsgstr \"Zlin Region\"\n\n#: cz/cz_regions.py:21\nmsgid \"Moravian-Silesian Region\"\nmsgstr \"Moravian-Silesian Region\"\n\n#: cz/forms.py:32 sk/forms.py:33\nmsgid \"Enter a postal code in the format XXXXX or XXX XX.\"\nmsgstr \"Sartu XXXXX edo XXX XX formatuko posta kode zuzena.\"\n\n#: cz/forms.py:52\nmsgid \"Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.\"\nmsgstr \"Saru jaiotza zenbakia XXXXXX/XXXX edo XXXXXXXXXX formatuan\"\n\n#: cz/forms.py:53\nmsgid \"Enter a valid birth number.\"\nmsgstr \"Urtebetetze zenbaki okerra\"\n\n#: cz/forms.py:102\nmsgid \"Enter a valid IC number.\"\nmsgstr \"Sartu IC zenbaki zuzena.\"\n\n#: de/de_states.py:5\nmsgid \"Baden-Wuerttemberg\"\nmsgstr \"Baden-Wuerttemberg\"\n\n#: de/de_states.py:6\nmsgid \"Bavaria\"\nmsgstr \"Bavaria\"\n\n#: de/de_states.py:7\nmsgid \"Berlin\"\nmsgstr \"Berlin\"\n\n#: de/de_states.py:8\nmsgid \"Brandenburg\"\nmsgstr \"Brandenburg\"\n\n#: de/de_states.py:9\nmsgid \"Bremen\"\nmsgstr \"Bremen\"\n\n#: de/de_states.py:10\nmsgid \"Hamburg\"\nmsgstr \"Hamburg\"\n\n#: de/de_states.py:11\nmsgid \"Hessen\"\nmsgstr \"Hessen\"\n\n#: de/de_states.py:12\nmsgid \"Mecklenburg-Western Pomerania\"\nmsgstr \"Mecklenburg-Western Pomerania\"\n\n#: de/de_states.py:13\nmsgid \"Lower Saxony\"\nmsgstr \"Lower Saxony\"\n\n#: de/de_states.py:14\nmsgid \"North Rhine-Westphalia\"\nmsgstr \"North Rhine-Westphalia\"\n\n#: de/de_states.py:15\nmsgid \"Rhineland-Palatinate\"\nmsgstr \"Rhineland-Palatinate\"\n\n#: de/de_states.py:16\nmsgid \"Saarland\"\nmsgstr \"Saarland\"\n\n#: de/de_states.py:17\nmsgid \"Saxony\"\nmsgstr \"Saxony\"\n\n#: de/de_states.py:18\nmsgid \"Saxony-Anhalt\"\nmsgstr \"Saxony-Anhalt\"\n\n#: de/de_states.py:19\nmsgid \"Schleswig-Holstein\"\nmsgstr \"Schleswig-Holstein\"\n\n#: de/de_states.py:20\nmsgid \"Thuringia\"\nmsgstr \"Thuringia\"\n\n#: de/forms.py:20 fi/forms.py:18 fr/forms.py:20\nmsgid \"Enter a zip code in the format XXXXX.\"\nmsgstr \"Sartu zip kodea XXXXX formatoan\"\n\n#: de/forms.py:46\nmsgid \"\"\n\"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"format.\"\nmsgstr \"\"\n\"Sartu Alemaniako Nortasun agiri zenbaki zuzena XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"formatuan.\"\n\n#: es/es_provinces.py:5\nmsgid \"Araba\"\nmsgstr \"Araba\"\n\n#: es/es_provinces.py:6\nmsgid \"Albacete\"\nmsgstr \"Albazete\"\n\n#: es/es_provinces.py:7\nmsgid \"Alacant\"\nmsgstr \"Alacant\"\n\n#: es/es_provinces.py:8\nmsgid \"Almeria\"\nmsgstr \"Almeria\"\n\n#: es/es_provinces.py:9\nmsgid \"Avila\"\nmsgstr \"Ávila\"\n\n#: es/es_provinces.py:10\nmsgid \"Badajoz\"\nmsgstr \"Badajoz\"\n\n#: es/es_provinces.py:11\nmsgid \"Illes Balears\"\nmsgstr \"Illes Balears\"\n\n#: es/es_provinces.py:12\nmsgid \"Barcelona\"\nmsgstr \"Bartzelona\"\n\n#: es/es_provinces.py:13\nmsgid \"Burgos\"\nmsgstr \"Burgos\"\n\n#: es/es_provinces.py:14\nmsgid \"Caceres\"\nmsgstr \"Caceres\"\n\n#: es/es_provinces.py:15\nmsgid \"Cadiz\"\nmsgstr \"Cadiz\"\n\n#: es/es_provinces.py:16\nmsgid \"Castello\"\nmsgstr \"Castello\"\n\n#: es/es_provinces.py:17\nmsgid \"Ciudad Real\"\nmsgstr \"Ciudad Real\"\n\n#: es/es_provinces.py:18\nmsgid \"Cordoba\"\nmsgstr \"Cordoba\"\n\n#: es/es_provinces.py:19\nmsgid \"A Coruna\"\nmsgstr \"A Coruna\"\n\n#: es/es_provinces.py:20\nmsgid \"Cuenca\"\nmsgstr \"Cuenca\"\n\n#: es/es_provinces.py:21\nmsgid \"Girona\"\nmsgstr \"Girona\"\n\n#: es/es_provinces.py:22\nmsgid \"Granada\"\nmsgstr \"Granada\"\n\n#: es/es_provinces.py:23\nmsgid \"Guadalajara\"\nmsgstr \"Guadalajara\"\n\n#: es/es_provinces.py:24\nmsgid \"Guipuzkoa\"\nmsgstr \"Gupuzkoa\"\n\n#: es/es_provinces.py:25\nmsgid \"Huelva\"\nmsgstr \"Huelva\"\n\n#: es/es_provinces.py:26\nmsgid \"Huesca\"\nmsgstr \"Huesca\"\n\n#: es/es_provinces.py:27\nmsgid \"Jaen\"\nmsgstr \"Jaen\"\n\n#: es/es_provinces.py:28\nmsgid \"Leon\"\nmsgstr \"Leon\"\n\n#: es/es_provinces.py:29\nmsgid \"Lleida\"\nmsgstr \"Lleida\"\n\n#: es/es_provinces.py:30 es/es_regions.py:17\nmsgid \"La Rioja\"\nmsgstr \"Errioxa\"\n\n#: es/es_provinces.py:31\nmsgid \"Lugo\"\nmsgstr \"Lugo\"\n\n#: es/es_provinces.py:32 es/es_regions.py:18\nmsgid \"Madrid\"\nmsgstr \"Madrid\"\n\n#: es/es_provinces.py:33\nmsgid \"Malaga\"\nmsgstr \"Malaga\"\n\n#: es/es_provinces.py:34\nmsgid \"Murcia\"\nmsgstr \"Murtzia\"\n\n#: es/es_provinces.py:35\nmsgid \"Navarre\"\nmsgstr \"Nafarroa\"\n\n#: es/es_provinces.py:36\nmsgid \"Ourense\"\nmsgstr \"Ourense\"\n\n#: es/es_provinces.py:37\nmsgid \"Asturias\"\nmsgstr \"Asturias\"\n\n#: es/es_provinces.py:38\nmsgid \"Palencia\"\nmsgstr \"Palentzia\"\n\n#: es/es_provinces.py:39\nmsgid \"Las Palmas\"\nmsgstr \"Las Palmas\"\n\n#: es/es_provinces.py:40\nmsgid \"Pontevedra\"\nmsgstr \"Pontevedra\"\n\n#: es/es_provinces.py:41\nmsgid \"Salamanca\"\nmsgstr \"Salamanca\"\n\n#: es/es_provinces.py:42\nmsgid \"Santa Cruz de Tenerife\"\nmsgstr \"Santa Cruz de Tenerife\"\n\n#: es/es_provinces.py:43 es/es_regions.py:11\nmsgid \"Cantabria\"\nmsgstr \"Cantabria\"\n\n#: es/es_provinces.py:44\nmsgid \"Segovia\"\nmsgstr \"Segovia\"\n\n#: es/es_provinces.py:45\nmsgid \"Seville\"\nmsgstr \"Sevila\"\n\n#: es/es_provinces.py:46\nmsgid \"Soria\"\nmsgstr \"Soria\"\n\n#: es/es_provinces.py:47\nmsgid \"Tarragona\"\nmsgstr \"Tarragona\"\n\n#: es/es_provinces.py:48\nmsgid \"Teruel\"\nmsgstr \"Teruel\"\n\n#: es/es_provinces.py:49\nmsgid \"Toledo\"\nmsgstr \"Toledo\"\n\n#: es/es_provinces.py:50\nmsgid \"Valencia\"\nmsgstr \"Valencia\"\n\n#: es/es_provinces.py:51\nmsgid \"Valladolid\"\nmsgstr \"Valladolid\"\n\n#: es/es_provinces.py:52\nmsgid \"Bizkaia\"\nmsgstr \"Bizkaia\"\n\n#: es/es_provinces.py:53\nmsgid \"Zamora\"\nmsgstr \"Zamora\"\n\n#: es/es_provinces.py:54\nmsgid \"Zaragoza\"\nmsgstr \"Zaragoza\"\n\n#: es/es_provinces.py:55\nmsgid \"Ceuta\"\nmsgstr \"Ceuta\"\n\n#: es/es_provinces.py:56\nmsgid \"Melilla\"\nmsgstr \"Melilla\"\n\n#: es/es_regions.py:5\nmsgid \"Andalusia\"\nmsgstr \"Andaluzia\"\n\n#: es/es_regions.py:6\nmsgid \"Aragon\"\nmsgstr \"Aragoi\"\n\n#: es/es_regions.py:7\nmsgid \"Principality of Asturias\"\nmsgstr \"Asturiaseko printzipadoa\"\n\n#: es/es_regions.py:8\nmsgid \"Balearic Islands\"\nmsgstr \"Balear uharteak\"\n\n#: es/es_regions.py:9\nmsgid \"Basque Country\"\nmsgstr \"Euskal Herria\"\n\n#: es/es_regions.py:10\nmsgid \"Canary Islands\"\nmsgstr \"Canaria uharteak\"\n\n#: es/es_regions.py:12\nmsgid \"Castile-La Mancha\"\nmsgstr \"La Mancha-Gaztela\"\n\n#: es/es_regions.py:13\nmsgid \"Castile and Leon\"\nmsgstr \"Gaztela eta Leon\"\n\n#: es/es_regions.py:14\nmsgid \"Catalonia\"\nmsgstr \"Katalunia\"\n\n#: es/es_regions.py:15\nmsgid \"Extremadura\"\nmsgstr \"Extremadura\"\n\n#: es/es_regions.py:16\nmsgid \"Galicia\"\nmsgstr \"Galizia\"\n\n#: es/es_regions.py:19\nmsgid \"Region of Murcia\"\nmsgstr \"Murtzia\"\n\n#: es/es_regions.py:20\nmsgid \"Foral Community of Navarre\"\nmsgstr \"Nafarroako komunitate forala\"\n\n#: es/es_regions.py:21\nmsgid \"Valencian Community\"\nmsgstr \"Valenciako komunitatea\"\n\n#: es/forms.py:26\nmsgid \"Enter a valid postal code in the range and format 01XXX - 52XXX.\"\nmsgstr \"Kode postal bat idatzi hurrengo formato eta tartearekin: 01XXX - 52XXX\"\n\n#: es/forms.py:46\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or \"\n\"9XXXXXXXX.\"\nmsgstr \"\"\n\"Telefono zenbaki bat idatzi hurrengo formato batekin: 6XXXXXXXX, 8XXXXXXXX \"\n\"edo 9XXXXXXXX\"\n\n#: es/forms.py:73\nmsgid \"Please enter a valid NIF, NIE, or CIF.\"\nmsgstr \"Idatzi NIF,NIE edo CIF zuzena.\"\n\n#: es/forms.py:74\nmsgid \"Please enter a valid NIF or NIE.\"\nmsgstr \"Idatzi NIF edo NIE zuzena.\"\n\n#: es/forms.py:75\nmsgid \"Invalid checksum for NIF.\"\nmsgstr \"NIF kontrol kode okerra.\"\n\n#: es/forms.py:76\nmsgid \"Invalid checksum for NIE.\"\nmsgstr \"NIE kontrol kode okerra.\"\n\n#: es/forms.py:77\nmsgid \"Invalid checksum for CIF.\"\nmsgstr \"CIF kontrol kode okerra.\"\n\n#: es/forms.py:149\nmsgid \"\"\n\"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.\"\nmsgstr \"\"\n\"Mesedez idatzi banku kontu zenbaki zuzena XXXX-XXXX-XX-XXXXXXXXXX \"\n\"formatoarekin.\"\n\n#: es/forms.py:150\nmsgid \"Invalid checksum for bank account number.\"\nmsgstr \"Banku kontu zenbakian kontrol digito okerra.\"\n\n#: fi/forms.py:33\nmsgid \"Enter a valid Finnish social security number.\"\nmsgstr \"Sartu Finlandialko Gizarte segurantza zenbaki zuzena\"\n\n#: fr/forms.py:35\nmsgid \"Phone numbers must be in 0X XX XX XX XX format.\"\nmsgstr \"Telefono zenabkiak 0X XX XX XX XX formatuan egon behar dira.\"\n\n#: gb/forms.py:25\nmsgid \"Enter a valid postcode.\"\nmsgstr \"Sartu posta kokde zuzen bat\"\n\n#: gb/gb_regions.py:11\nmsgid \"Bedfordshire\"\nmsgstr \"Bedfordshire\"\n\n#: gb/gb_regions.py:12\nmsgid \"Buckinghamshire\"\nmsgstr \"Buckinghamshire\"\n\n#: gb/gb_regions.py:14\nmsgid \"Cheshire\"\nmsgstr \"Cheshire\"\n\n#: gb/gb_regions.py:15\nmsgid \"Cornwall and Isles of Scilly\"\nmsgstr \"Cornwall and Isles of Scilly\"\n\n#: gb/gb_regions.py:16\nmsgid \"Cumbria\"\nmsgstr \"Cumbria\"\n\n#: gb/gb_regions.py:17\nmsgid \"Derbyshire\"\nmsgstr \"Derbyshire\"\n\n#: gb/gb_regions.py:18\nmsgid \"Devon\"\nmsgstr \"Devon\"\n\n#: gb/gb_regions.py:19\nmsgid \"Dorset\"\nmsgstr \"Dorset\"\n\n#: gb/gb_regions.py:20\nmsgid \"Durham\"\nmsgstr \"Durham\"\n\n#: gb/gb_regions.py:21\nmsgid \"East Sussex\"\nmsgstr \"East Sussex\"\n\n#: gb/gb_regions.py:22\nmsgid \"Essex\"\nmsgstr \"Essex\"\n\n#: gb/gb_regions.py:23\nmsgid \"Gloucestershire\"\nmsgstr \"Gloucestershire\"\n\n#: gb/gb_regions.py:24\nmsgid \"Greater London\"\nmsgstr \"Greater London\"\n\n#: gb/gb_regions.py:25\nmsgid \"Greater Manchester\"\nmsgstr \"Greater Manchester\"\n\n#: gb/gb_regions.py:26\nmsgid \"Hampshire\"\nmsgstr \"Hampshire\"\n\n#: gb/gb_regions.py:27\nmsgid \"Hertfordshire\"\nmsgstr \"Hertfordshire\"\n\n#: gb/gb_regions.py:28\nmsgid \"Kent\"\nmsgstr \"Kent\"\n\n#: gb/gb_regions.py:29\nmsgid \"Lancashire\"\nmsgstr \"Lancashire\"\n\n#: gb/gb_regions.py:30\nmsgid \"Leicestershire\"\nmsgstr \"Leicestershire\"\n\n#: gb/gb_regions.py:31\nmsgid \"Lincolnshire\"\nmsgstr \"Lincolnshire\"\n\n#: gb/gb_regions.py:32\nmsgid \"Merseyside\"\nmsgstr \"Merseyside\"\n\n#: gb/gb_regions.py:33\nmsgid \"Norfolk\"\nmsgstr \"Norfolk\"\n\n#: gb/gb_regions.py:34\nmsgid \"North Yorkshire\"\nmsgstr \"North Yorkshire\"\n\n#: gb/gb_regions.py:35\nmsgid \"Northamptonshire\"\nmsgstr \"Northamptonshire\"\n\n#: gb/gb_regions.py:36\nmsgid \"Northumberland\"\nmsgstr \"Northumberland\"\n\n#: gb/gb_regions.py:37\nmsgid \"Nottinghamshire\"\nmsgstr \"Nottinghamshire\"\n\n#: gb/gb_regions.py:38\nmsgid \"Oxfordshire\"\nmsgstr \"Oxfordshire\"\n\n#: gb/gb_regions.py:39\nmsgid \"Shropshire\"\nmsgstr \"Shropshire\"\n\n#: gb/gb_regions.py:40\nmsgid \"Somerset\"\nmsgstr \"Somerset\"\n\n#: gb/gb_regions.py:41\nmsgid \"South Yorkshire\"\nmsgstr \"South Yorkshire\"\n\n#: gb/gb_regions.py:42\nmsgid \"Staffordshire\"\nmsgstr \"Staffordshire\"\n\n#: gb/gb_regions.py:43\nmsgid \"Suffolk\"\nmsgstr \"Suffolk\"\n\n#: gb/gb_regions.py:44\nmsgid \"Surrey\"\nmsgstr \"Surrey\"\n\n#: gb/gb_regions.py:45\nmsgid \"Tyne and Wear\"\nmsgstr \"Tyne and Wear\"\n\n#: gb/gb_regions.py:46\nmsgid \"Warwickshire\"\nmsgstr \"Warwickshire\"\n\n#: gb/gb_regions.py:47\nmsgid \"West Midlands\"\nmsgstr \"West Midlands\"\n\n#: gb/gb_regions.py:48\nmsgid \"West Sussex\"\nmsgstr \"West Sussex\"\n\n#: gb/gb_regions.py:49\nmsgid \"West Yorkshire\"\nmsgstr \"West Yorkshire\"\n\n#: gb/gb_regions.py:50\nmsgid \"Wiltshire\"\nmsgstr \"Wiltshire\"\n\n#: gb/gb_regions.py:51\nmsgid \"Worcestershire\"\nmsgstr \"Worcestershire\"\n\n#: gb/gb_regions.py:55\nmsgid \"County Antrim\"\nmsgstr \"County Antrim\"\n\n#: gb/gb_regions.py:56\nmsgid \"County Armagh\"\nmsgstr \"County Armagh\"\n\n#: gb/gb_regions.py:57\nmsgid \"County Down\"\nmsgstr \"County Down\"\n\n#: gb/gb_regions.py:58\nmsgid \"County Fermanagh\"\nmsgstr \"County Fermanagh\"\n\n#: gb/gb_regions.py:59\nmsgid \"County Londonderry\"\nmsgstr \"County Londonderry\"\n\n#: gb/gb_regions.py:60\nmsgid \"County Tyrone\"\nmsgstr \"County Tyrone\"\n\n#: gb/gb_regions.py:64\nmsgid \"Clwyd\"\nmsgstr \"Clwyd\"\n\n#: gb/gb_regions.py:65\nmsgid \"Dyfed\"\nmsgstr \"Dyfed\"\n\n#: gb/gb_regions.py:66\nmsgid \"Gwent\"\nmsgstr \"Gwent\"\n\n#: gb/gb_regions.py:67\nmsgid \"Gwynedd\"\nmsgstr \"Gwynedd\"\n\n#: gb/gb_regions.py:68\nmsgid \"Mid Glamorgan\"\nmsgstr \"Mid Glamorgan\"\n\n#: gb/gb_regions.py:69\nmsgid \"Powys\"\nmsgstr \"Powys\"\n\n#: gb/gb_regions.py:70\nmsgid \"South Glamorgan\"\nmsgstr \"South Glamorgan\"\n\n#: gb/gb_regions.py:71\nmsgid \"West Glamorgan\"\nmsgstr \"West Glamorgan\"\n\n#: gb/gb_regions.py:75\nmsgid \"Borders\"\nmsgstr \"Borders\"\n\n#: gb/gb_regions.py:76\nmsgid \"Central Scotland\"\nmsgstr \"Central Scotland\"\n\n#: gb/gb_regions.py:77\nmsgid \"Dumfries and Galloway\"\nmsgstr \"Dumfries and Galloway\"\n\n#: gb/gb_regions.py:78\nmsgid \"Fife\"\nmsgstr \"Fife\"\n\n#: gb/gb_regions.py:79\nmsgid \"Grampian\"\nmsgstr \"Grampian\"\n\n#: gb/gb_regions.py:80\nmsgid \"Highland\"\nmsgstr \"Highland\"\n\n#: gb/gb_regions.py:81\nmsgid \"Lothian\"\nmsgstr \"Lothian\"\n\n#: gb/gb_regions.py:82\nmsgid \"Orkney Islands\"\nmsgstr \"Orkney Islands\"\n\n#: gb/gb_regions.py:83\nmsgid \"Shetland Islands\"\nmsgstr \"Shetland Islands\"\n\n#: gb/gb_regions.py:84\nmsgid \"Strathclyde\"\nmsgstr \"Strathclyde\"\n\n#: gb/gb_regions.py:85\nmsgid \"Tayside\"\nmsgstr \"Tayside\"\n\n#: gb/gb_regions.py:86\nmsgid \"Western Isles\"\nmsgstr \"Western Isles\"\n\n#: gb/gb_regions.py:90\nmsgid \"England\"\nmsgstr \"England\"\n\n#: gb/gb_regions.py:91\nmsgid \"Northern Ireland\"\nmsgstr \"Northern Ireland\"\n\n#: gb/gb_regions.py:92\nmsgid \"Scotland\"\nmsgstr \"Scotland\"\n\n#: gb/gb_regions.py:93\nmsgid \"Wales\"\nmsgstr \"Wales\"\n\n#: hk/forms.py:37\n#, python-format\nmsgid \"Phone number should not start with one of the followings: %s.\"\nmsgstr \"Telefono zenbakiak ezin dira hauetako batez hasi: %s.\"\n\n#: hk/forms.py:40\n#, python-format\nmsgid \"Phone number must be in one of the following formats: %s.\"\nmsgstr \"Telefono zenbakiaren formatua hauetako bat izan behar da:%s.\"\n\n#: hk/forms.py:42\n#, python-format\nmsgid \"Phone number should start with one of the followings: %s.\"\nmsgstr \"Telefono zenbakiak hauetako batez hasi behar dira: %s.\"\n\n#: hr/forms.py:76\nmsgid \"Enter a valid 13 digit JMBG\"\nmsgstr \"Sartu 13 digituko JMBG zuzena\"\n\n#: hr/forms.py:77\nmsgid \"Error in date segment\"\nmsgstr \"Errorea data atalean\"\n\n#: hr/forms.py:123\nmsgid \"Enter a valid 11 digit OIB\"\nmsgstr \"Sartu 11 digituko OIB zuzena\"\n\n#: hr/forms.py:152 id/forms.py:112\nmsgid \"Enter a valid vehicle license plate number\"\nmsgstr \"Sartu ibilgailu matrikula zenbaki zuzena\"\n\n#: hr/forms.py:153\nmsgid \"Enter a valid location code\"\nmsgstr \"Sartu kokaleku kode zuzena\"\n\n#: hr/forms.py:154\nmsgid \"Number part cannot be zero\"\nmsgstr \"Zenbaki atala ezin da zero izan\"\n\n#: hr/forms.py:190\nmsgid \"Enter a valid 5 digit postal code\"\nmsgstr \"Sartu 5 digituko posta kode zuzena\"\n\n#: hr/forms.py:218 id/forms.py:72 nl/forms.py:56\nmsgid \"Enter a valid phone number\"\nmsgstr \"Sartu telefono zenbaki zuzen bat\"\n\n#: hr/forms.py:219\nmsgid \"Enter a valid area or mobile network code\"\nmsgstr \"Sartu ingurune edo sare mugikor kode zuzena\"\n\n#: hr/forms.py:220\nmsgid \"The phone nubmer is too long\"\nmsgstr \"Telefono zenbakia luzeegia da\"\n\n#: hr/forms.py:258\nmsgid \"Enter a valid 19 digit JMBAG starting with 601983\"\nmsgstr \"Satu 601983 hasten den 19 digituko JMBAG zuzena\"\n\n#: hr/forms.py:259\nmsgid \"Card issue number cannot be zero\"\nmsgstr \"Card issue zenbakia ezin da zero izan\"\n\n#: hr/hr_choices.py:14\nmsgid \"Grad Zagreb\"\nmsgstr \"Grad Zagreb\"\n\n#: hr/hr_choices.py:15\nmsgid \"Bjelovarsko-bilogorska županija\"\nmsgstr \"Bjelovarsko-bilogorska županija\"\n\n#: hr/hr_choices.py:16\nmsgid \"Brodsko-posavska županija\"\nmsgstr \"Brodsko-posavska županija\"\n\n#: hr/hr_choices.py:17\nmsgid \"Dubrovačko-neretvanska županija\"\nmsgstr \"Dubrovačko-neretvanska županija\"\n\n#: hr/hr_choices.py:18\nmsgid \"Istarska županija\"\nmsgstr \"Istarska županija\"\n\n#: hr/hr_choices.py:19\nmsgid \"Karlovačka županija\"\nmsgstr \"Karlovačka županija\"\n\n#: hr/hr_choices.py:20\nmsgid \"Koprivničko-križevačka županija\"\nmsgstr \"Koprivničko-križevačka županija\"\n\n#: hr/hr_choices.py:21\nmsgid \"Krapinsko-zagorska županija\"\nmsgstr \"Krapinsko-zagorska županija\"\n\n#: hr/hr_choices.py:22\nmsgid \"Ličko-senjska županija\"\nmsgstr \"Ličko-senjska županija\"\n\n#: hr/hr_choices.py:23\nmsgid \"Međimurska županija\"\nmsgstr \"Međimurska županija\"\n\n#: hr/hr_choices.py:24\nmsgid \"Osječko-baranjska županija\"\nmsgstr \"Osječko-baranjska županija\"\n\n#: hr/hr_choices.py:25\nmsgid \"Požeško-slavonska županija\"\nmsgstr \"Požeško-slavonska županija\"\n\n#: hr/hr_choices.py:26\nmsgid \"Primorsko-goranska županija\"\nmsgstr \"Primorsko-goranska županija\"\n\n#: hr/hr_choices.py:27\nmsgid \"Sisačko-moslavačka županija\"\nmsgstr \"Sisačko-moslavačka županija\"\n\n#: hr/hr_choices.py:28\nmsgid \"Splitsko-dalmatinska županija\"\nmsgstr \"Splitsko-dalmatinska županija\"\n\n#: hr/hr_choices.py:29\nmsgid \"Šibensko-kninska županija\"\nmsgstr \"Šibensko-kninska županija\"\n\n#: hr/hr_choices.py:30\nmsgid \"Varaždinska županija\"\nmsgstr \"Varaždinska županija\"\n\n#: hr/hr_choices.py:31\nmsgid \"Virovitičko-podravska županija\"\nmsgstr \"Virovitičko-podravska županija\"\n\n#: hr/hr_choices.py:32\nmsgid \"Vukovarsko-srijemska županija\"\nmsgstr \"Vukovarsko-srijemska županija\"\n\n#: hr/hr_choices.py:33\nmsgid \"Zadarska županija\"\nmsgstr \"Zadarska županija\"\n\n#: hr/hr_choices.py:34\nmsgid \"Zagrebačka županija\"\nmsgstr \"Zagrebačka županija\"\n\n#: id/forms.py:31\nmsgid \"Enter a valid post code\"\nmsgstr \"Sartu posta kode zuzen bat\"\n\n#: id/forms.py:176\nmsgid \"Enter a valid NIK/KTP number\"\nmsgstr \"Sartu NIK/KTP zenbaki zuzena\"\n\n#: id/id_choices.py:15\nmsgid \"Aceh\"\nmsgstr \"Aceh\"\n\n#: id/id_choices.py:16 id/id_choices.py:79\nmsgid \"Bali\"\nmsgstr \"Bali\"\n\n#: id/id_choices.py:17 id/id_choices.py:51\nmsgid \"Banten\"\nmsgstr \"Banten\"\n\n#: id/id_choices.py:18 id/id_choices.py:60\nmsgid \"Bengkulu\"\nmsgstr \"Bengkulu\"\n\n#: id/id_choices.py:19 id/id_choices.py:53\nmsgid \"Yogyakarta\"\nmsgstr \"Yogyakarta\"\n\n#: id/id_choices.py:20 id/id_choices.py:57\nmsgid \"Jakarta\"\nmsgstr \"Jakarta\"\n\n#: id/id_choices.py:21 id/id_choices.py:81\nmsgid \"Gorontalo\"\nmsgstr \"Gorontalo\"\n\n#: id/id_choices.py:22 id/id_choices.py:63\nmsgid \"Jambi\"\nmsgstr \"Jambi\"\n\n#: id/id_choices.py:23\nmsgid \"Jawa Barat\"\nmsgstr \"Jawa Barat\"\n\n#: id/id_choices.py:24\nmsgid \"Jawa Tengah\"\nmsgstr \"Jawa Tengah\"\n\n#: id/id_choices.py:25\nmsgid \"Jawa Timur\"\nmsgstr \"Jawa Timur\"\n\n#: id/id_choices.py:26 id/id_choices.py:94\nmsgid \"Kalimantan Barat\"\nmsgstr \"Kalimantan Barat\"\n\n#: id/id_choices.py:27 id/id_choices.py:72\nmsgid \"Kalimantan Selatan\"\nmsgstr \"Kalimantan Selatan\"\n\n#: id/id_choices.py:28 id/id_choices.py:95\nmsgid \"Kalimantan Tengah\"\nmsgstr \"Kalimantan Tengah\"\n\n#: id/id_choices.py:29 id/id_choices.py:96\nmsgid \"Kalimantan Timur\"\nmsgstr \"Kalimantan Timur\"\n\n#: id/id_choices.py:30\nmsgid \"Kepulauan Bangka-Belitung\"\nmsgstr \"Kepulauan Bangka-Belitung\"\n\n#: id/id_choices.py:31 id/id_choices.py:68\nmsgid \"Kepulauan Riau\"\nmsgstr \"Kepulauan Riau\"\n\n#: id/id_choices.py:32 id/id_choices.py:61\nmsgid \"Lampung\"\nmsgstr \"Lampung\"\n\n#: id/id_choices.py:33 id/id_choices.py:76\nmsgid \"Maluku\"\nmsgstr \"Maluku\"\n\n#: id/id_choices.py:34 id/id_choices.py:77\nmsgid \"Maluku Utara\"\nmsgstr \"Maluku Utara\"\n\n#: id/id_choices.py:35\nmsgid \"Nusa Tenggara Barat\"\nmsgstr \"Nusa Tenggara Barat\"\n\n#: id/id_choices.py:36\nmsgid \"Nusa Tenggara Timur\"\nmsgstr \"Nusa Tenggara Timur\"\n\n#: id/id_choices.py:37\nmsgid \"Papua\"\nmsgstr \"Papua\"\n\n#: id/id_choices.py:38\nmsgid \"Papua Barat\"\nmsgstr \"Papua Barat\"\n\n#: id/id_choices.py:39 id/id_choices.py:66\nmsgid \"Riau\"\nmsgstr \"Riau\"\n\n#: id/id_choices.py:40 id/id_choices.py:74\nmsgid \"Sulawesi Barat\"\nmsgstr \"Sulawesi Barat\"\n\n#: id/id_choices.py:41 id/id_choices.py:75\nmsgid \"Sulawesi Selatan\"\nmsgstr \"Sulawesi Selatan\"\n\n#: id/id_choices.py:42 id/id_choices.py:82\nmsgid \"Sulawesi Tengah\"\nmsgstr \"Sulawesi Tengah\"\n\n#: id/id_choices.py:43 id/id_choices.py:85\nmsgid \"Sulawesi Tenggara\"\nmsgstr \"Sulawesi Tenggara\"\n\n#: id/id_choices.py:44\nmsgid \"Sulawesi Utara\"\nmsgstr \"Sulawesi Utara\"\n\n#: id/id_choices.py:45 id/id_choices.py:58\nmsgid \"Sumatera Barat\"\nmsgstr \"Sumatera Barat\"\n\n#: id/id_choices.py:46 id/id_choices.py:62\nmsgid \"Sumatera Selatan\"\nmsgstr \"Sumatera Selatan\"\n\n#: id/id_choices.py:47 id/id_choices.py:64\nmsgid \"Sumatera Utara\"\nmsgstr \"Sumatera Utara\"\n\n#: id/id_choices.py:52\nmsgid \"Magelang\"\nmsgstr \"Magelang\"\n\n#: id/id_choices.py:54\nmsgid \"Surakarta - Solo\"\nmsgstr \"Surakarta - Solo\"\n\n#: id/id_choices.py:55\nmsgid \"Madiun\"\nmsgstr \"Madiun\"\n\n#: id/id_choices.py:56\nmsgid \"Kediri\"\nmsgstr \"Kediri\"\n\n#: id/id_choices.py:59\nmsgid \"Tapanuli\"\nmsgstr \"Tapanuli\"\n\n#: id/id_choices.py:65\nmsgid \"Nanggroe Aceh Darussalam\"\nmsgstr \"Nanggroe Aceh Darussalam\"\n\n#: id/id_choices.py:67\nmsgid \"Kepulauan Bangka Belitung\"\nmsgstr \"Kepulauan Bangka Belitung\"\n\n#: id/id_choices.py:69\nmsgid \"Corps Consulate\"\nmsgstr \"Corps Consulate\"\n\n#: id/id_choices.py:70\nmsgid \"Corps Diplomatic\"\nmsgstr \"Corps Diplomatic\"\n\n#: id/id_choices.py:71\nmsgid \"Bandung\"\nmsgstr \"Bandung\"\n\n#: id/id_choices.py:73\nmsgid \"Sulawesi Utara Daratan\"\nmsgstr \"Sulawesi Utara Daratan\"\n\n#: id/id_choices.py:78\nmsgid \"NTT - Timor\"\nmsgstr \"NTT - Timor\"\n\n#: id/id_choices.py:80\nmsgid \"Sulawesi Utara Kepulauan\"\nmsgstr \"Sulawesi Utara Kepulauan\"\n\n#: id/id_choices.py:83\nmsgid \"NTB - Lombok\"\nmsgstr \"NTB - Lombok\"\n\n#: id/id_choices.py:84\nmsgid \"Papua dan Papua Barat\"\nmsgstr \"Papua dan Papua Barat\"\n\n#: id/id_choices.py:86\nmsgid \"Cirebon\"\nmsgstr \"Cirebon\"\n\n#: id/id_choices.py:87\nmsgid \"NTB - Sumbawa\"\nmsgstr \"NTB - Sumbawa\"\n\n#: id/id_choices.py:88\nmsgid \"NTT - Flores\"\nmsgstr \"NTT - Flores\"\n\n#: id/id_choices.py:89\nmsgid \"NTT - Sumba\"\nmsgstr \"NTT - Sumba\"\n\n#: id/id_choices.py:90\nmsgid \"Bogor\"\nmsgstr \"Bogor\"\n\n#: id/id_choices.py:91\nmsgid \"Pekalongan\"\nmsgstr \"Pekalongan\"\n\n#: id/id_choices.py:92\nmsgid \"Semarang\"\nmsgstr \"Semarang\"\n\n#: id/id_choices.py:93\nmsgid \"Pati\"\nmsgstr \"Pati\"\n\n#: id/id_choices.py:97\nmsgid \"Surabaya\"\nmsgstr \"Surabaya\"\n\n#: id/id_choices.py:98\nmsgid \"Madura\"\nmsgstr \"Madura\"\n\n#: id/id_choices.py:99\nmsgid \"Malang\"\nmsgstr \"Malang\"\n\n#: id/id_choices.py:100\nmsgid \"Jember\"\nmsgstr \"Jember\"\n\n#: id/id_choices.py:101\nmsgid \"Banyumas\"\nmsgstr \"Banyumas\"\n\n#: id/id_choices.py:102\nmsgid \"Federal Government\"\nmsgstr \"Federal Government\"\n\n#: id/id_choices.py:103\nmsgid \"Bojonegoro\"\nmsgstr \"Bojonegoro\"\n\n#: id/id_choices.py:104\nmsgid \"Purwakarta\"\nmsgstr \"Purwakarta\"\n\n#: id/id_choices.py:105\nmsgid \"Sidoarjo\"\nmsgstr \"Sidoarjo\"\n\n#: id/id_choices.py:106\nmsgid \"Garut\"\nmsgstr \"Garut\"\n\n#: ie/ie_counties.py:8\nmsgid \"Antrim\"\nmsgstr \"Antrim\"\n\n#: ie/ie_counties.py:9\nmsgid \"Armagh\"\nmsgstr \"Armagh\"\n\n#: ie/ie_counties.py:10\nmsgid \"Carlow\"\nmsgstr \"Carlow\"\n\n#: ie/ie_counties.py:11\nmsgid \"Cavan\"\nmsgstr \"Cavan\"\n\n#: ie/ie_counties.py:12\nmsgid \"Clare\"\nmsgstr \"Clare\"\n\n#: ie/ie_counties.py:13\nmsgid \"Cork\"\nmsgstr \"Cork\"\n\n#: ie/ie_counties.py:14\nmsgid \"Derry\"\nmsgstr \"Derry\"\n\n#: ie/ie_counties.py:15\nmsgid \"Donegal\"\nmsgstr \"Donegal\"\n\n#: ie/ie_counties.py:16\nmsgid \"Down\"\nmsgstr \"Down\"\n\n#: ie/ie_counties.py:17\nmsgid \"Dublin\"\nmsgstr \"Dublin\"\n\n#: ie/ie_counties.py:18\nmsgid \"Fermanagh\"\nmsgstr \"Fermanagh\"\n\n#: ie/ie_counties.py:19\nmsgid \"Galway\"\nmsgstr \"Galway\"\n\n#: ie/ie_counties.py:20\nmsgid \"Kerry\"\nmsgstr \"Kerry\"\n\n#: ie/ie_counties.py:21\nmsgid \"Kildare\"\nmsgstr \"Kildare\"\n\n#: ie/ie_counties.py:22\nmsgid \"Kilkenny\"\nmsgstr \"Kilkenny\"\n\n#: ie/ie_counties.py:23\nmsgid \"Laois\"\nmsgstr \"Laois\"\n\n#: ie/ie_counties.py:24\nmsgid \"Leitrim\"\nmsgstr \"Leitrim\"\n\n#: ie/ie_counties.py:25\nmsgid \"Limerick\"\nmsgstr \"Limerick\"\n\n#: ie/ie_counties.py:26\nmsgid \"Longford\"\nmsgstr \"Longford\"\n\n#: ie/ie_counties.py:27\nmsgid \"Louth\"\nmsgstr \"Louth\"\n\n#: ie/ie_counties.py:28\nmsgid \"Mayo\"\nmsgstr \"Mayo\"\n\n#: ie/ie_counties.py:29\nmsgid \"Meath\"\nmsgstr \"Meath\"\n\n#: ie/ie_counties.py:30\nmsgid \"Monaghan\"\nmsgstr \"Monaghan\"\n\n#: ie/ie_counties.py:31\nmsgid \"Offaly\"\nmsgstr \"Offaly\"\n\n#: ie/ie_counties.py:32\nmsgid \"Roscommon\"\nmsgstr \"Roscommon\"\n\n#: ie/ie_counties.py:33\nmsgid \"Sligo\"\nmsgstr \"Sligo\"\n\n#: ie/ie_counties.py:34\nmsgid \"Tipperary\"\nmsgstr \"Tipperary\"\n\n#: ie/ie_counties.py:35\nmsgid \"Tyrone\"\nmsgstr \"Tyrone\"\n\n#: ie/ie_counties.py:36\nmsgid \"Waterford\"\nmsgstr \"Waterford\"\n\n#: ie/ie_counties.py:37\nmsgid \"Westmeath\"\nmsgstr \"Westmeath\"\n\n#: ie/ie_counties.py:38\nmsgid \"Wexford\"\nmsgstr \"Wexford\"\n\n#: ie/ie_counties.py:39\nmsgid \"Wicklow\"\nmsgstr \"Wicklow\"\n\n#: il/forms.py:32\nmsgid \"Enter a postal code in the format XXXXX\"\nmsgstr \"Sartu posta kode zuzena XXXXXX  formatuan\"\n\n#: il/forms.py:51\nmsgid \"Enter a valid ID number.\"\nmsgstr \"Sartu ID zenbaki zuzena\"\n\n#: in_/forms.py:41\nmsgid \"Enter a zip code in the format XXXXXX or XXX XXX.\"\nmsgstr \"Sartu zip kode zuzena XXXXXX edo XXX XXX formatuan.\"\n\n#: in_/forms.py:64\nmsgid \"Enter an Indian state or territory.\"\nmsgstr \"Sartu Indiako estatu edo lurraldea.\"\n\n#: in_/forms.py:103\nmsgid \"Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.\"\nmsgstr \"no zenbakiak 02X-8X edo 03X-7X edo 04X-6X formatuan egon behar dira.\"\n\n#: is_/forms.py:22\nmsgid \"\"\n\"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.\"\nmsgstr \"Sartu Islandiako identifikazio zenbaki zuzena. Fomatua XXXXXX-XXXX da.\"\n\n#: is_/forms.py:23\nmsgid \"The Icelandic identification number is not valid.\"\nmsgstr \"Islandiako identifikazio zenbakia ez da zuzena.\"\n\n#: it/forms.py:21\nmsgid \"Enter a valid zip code.\"\nmsgstr \"Sartu posta kode zuzena\"\n\n#: it/forms.py:48\nmsgid \"Enter a valid Social Security number.\"\nmsgstr \"Gizarte Segurantza zenbaki zuzena.\"\n\n#: it/forms.py:73\nmsgid \"Enter a valid VAT number.\"\nmsgstr \"Sartu VAT zenbaki zuzena.\"\n\n#: jp/forms.py:19\nmsgid \"Enter a postal code in the format XXXXXXX or XXX-XXXX.\"\nmsgstr \"Sartu posta kode zuzena XXXXXXX edo XXX-XXXX formatuan.\"\n\n#: jp/jp_prefectures.py:4\nmsgid \"Hokkaido\"\nmsgstr \"Hokkaido\"\n\n#: jp/jp_prefectures.py:5\nmsgid \"Aomori\"\nmsgstr \"Aomori\"\n\n#: jp/jp_prefectures.py:6\nmsgid \"Iwate\"\nmsgstr \"Iwate\"\n\n#: jp/jp_prefectures.py:7\nmsgid \"Miyagi\"\nmsgstr \"Miyagi\"\n\n#: jp/jp_prefectures.py:8\nmsgid \"Akita\"\nmsgstr \"Akita\"\n\n#: jp/jp_prefectures.py:9\nmsgid \"Yamagata\"\nmsgstr \"Yamagata\"\n\n#: jp/jp_prefectures.py:10\nmsgid \"Fukushima\"\nmsgstr \"Fukushima\"\n\n#: jp/jp_prefectures.py:11\nmsgid \"Ibaraki\"\nmsgstr \"Ibaraki\"\n\n#: jp/jp_prefectures.py:12\nmsgid \"Tochigi\"\nmsgstr \"Tochigi\"\n\n#: jp/jp_prefectures.py:13\nmsgid \"Gunma\"\nmsgstr \"Gunma\"\n\n#: jp/jp_prefectures.py:14\nmsgid \"Saitama\"\nmsgstr \"Saitama\"\n\n#: jp/jp_prefectures.py:15\nmsgid \"Chiba\"\nmsgstr \"Chiba\"\n\n#: jp/jp_prefectures.py:16\nmsgid \"Tokyo\"\nmsgstr \"Tokyo\"\n\n#: jp/jp_prefectures.py:17\nmsgid \"Kanagawa\"\nmsgstr \"Kanagawa\"\n\n#: jp/jp_prefectures.py:18\nmsgid \"Yamanashi\"\nmsgstr \"Yamanashi\"\n\n#: jp/jp_prefectures.py:19\nmsgid \"Nagano\"\nmsgstr \"Nagano\"\n\n#: jp/jp_prefectures.py:20\nmsgid \"Niigata\"\nmsgstr \"Niigata\"\n\n#: jp/jp_prefectures.py:21\nmsgid \"Toyama\"\nmsgstr \"Toyama\"\n\n#: jp/jp_prefectures.py:22\nmsgid \"Ishikawa\"\nmsgstr \"Ishikawa\"\n\n#: jp/jp_prefectures.py:23\nmsgid \"Fukui\"\nmsgstr \"Fukui\"\n\n#: jp/jp_prefectures.py:24\nmsgid \"Gifu\"\nmsgstr \"Gifu\"\n\n#: jp/jp_prefectures.py:25\nmsgid \"Shizuoka\"\nmsgstr \"Shizuoka\"\n\n#: jp/jp_prefectures.py:26\nmsgid \"Aichi\"\nmsgstr \"Aichi\"\n\n#: jp/jp_prefectures.py:27\nmsgid \"Mie\"\nmsgstr \"Mie\"\n\n#: jp/jp_prefectures.py:28\nmsgid \"Shiga\"\nmsgstr \"Shiga\"\n\n#: jp/jp_prefectures.py:29\nmsgid \"Kyoto\"\nmsgstr \"Kyoto\"\n\n#: jp/jp_prefectures.py:30\nmsgid \"Osaka\"\nmsgstr \"Osaka\"\n\n#: jp/jp_prefectures.py:31\nmsgid \"Hyogo\"\nmsgstr \"Hyogo\"\n\n#: jp/jp_prefectures.py:32\nmsgid \"Nara\"\nmsgstr \"Nara\"\n\n#: jp/jp_prefectures.py:33\nmsgid \"Wakayama\"\nmsgstr \"Wakayama\"\n\n#: jp/jp_prefectures.py:34\nmsgid \"Tottori\"\nmsgstr \"Tottori\"\n\n#: jp/jp_prefectures.py:35\nmsgid \"Shimane\"\nmsgstr \"Shimane\"\n\n#: jp/jp_prefectures.py:36\nmsgid \"Okayama\"\nmsgstr \"Okayama\"\n\n#: jp/jp_prefectures.py:37\nmsgid \"Hiroshima\"\nmsgstr \"Hiroshima\"\n\n#: jp/jp_prefectures.py:38\nmsgid \"Yamaguchi\"\nmsgstr \"Yamaguchi\"\n\n#: jp/jp_prefectures.py:39\nmsgid \"Tokushima\"\nmsgstr \"Tokushima\"\n\n#: jp/jp_prefectures.py:40\nmsgid \"Kagawa\"\nmsgstr \"Kagawa\"\n\n#: jp/jp_prefectures.py:41\nmsgid \"Ehime\"\nmsgstr \"Ehime\"\n\n#: jp/jp_prefectures.py:42\nmsgid \"Kochi\"\nmsgstr \"Kochi\"\n\n#: jp/jp_prefectures.py:43\nmsgid \"Fukuoka\"\nmsgstr \"Fukuoka\"\n\n#: jp/jp_prefectures.py:44\nmsgid \"Saga\"\nmsgstr \"Saga\"\n\n#: jp/jp_prefectures.py:45\nmsgid \"Nagasaki\"\nmsgstr \"Nagasaki\"\n\n#: jp/jp_prefectures.py:46\nmsgid \"Kumamoto\"\nmsgstr \"Kumamoto\"\n\n#: jp/jp_prefectures.py:47\nmsgid \"Oita\"\nmsgstr \"Oita\"\n\n#: jp/jp_prefectures.py:48\nmsgid \"Miyazaki\"\nmsgstr \"Miyazaki\"\n\n#: jp/jp_prefectures.py:49\nmsgid \"Kagoshima\"\nmsgstr \"Kagoshima\"\n\n#: jp/jp_prefectures.py:50\nmsgid \"Okinawa\"\nmsgstr \"Okinawa\"\n\n#: kw/forms.py:27\nmsgid \"Enter a valid Kuwaiti Civil ID number\"\nmsgstr \"Sartu Kuwaiteko Civil ID zenbaki zuzena\"\n\n#: mk/forms.py:18\nmsgid \"\"\n\"Identity card numbers must contain either 4 to 7 digits or an uppercase \"\n\"letter and 7 digits.\"\nmsgstr \"\"\n\"Identifikazio txartel zenbakiek 4 edo 7 digitu izan ditzazkete, edo \"\n\"maiuskula bat eta 7 digitu.\"\n\n#: mk/forms.py:57 si/forms.py:24\nmsgid \"This field should contain exactly 13 digits.\"\nmsgstr \"Eremu honek zehazki 13 digitu izan behar ditu.\"\n\n#: mk/forms.py:58\nmsgid \"The first 7 digits of the UMCN must represent a valid past date.\"\nmsgstr \"\"\n\"UMCNaren lehen 7 digituek iraganeko data zuzen bat adierazi behar dute.\"\n\n#: mk/forms.py:59\nmsgid \"The UMCN is not valid.\"\nmsgstr \"UMCN ez da zuzena.\"\n\n#: mk/mk_choices.py:10\nmsgid \"Aerodrom\"\nmsgstr \"Aerodrom\"\n\n#: mk/mk_choices.py:11\nmsgid \"Aračinovo\"\nmsgstr \"Aračinovo\"\n\n#: mk/mk_choices.py:12\nmsgid \"Berovo\"\nmsgstr \"Berovo\"\n\n#: mk/mk_choices.py:13\nmsgid \"Bitola\"\nmsgstr \"Bitola\"\n\n#: mk/mk_choices.py:14\nmsgid \"Bogdanci\"\nmsgstr \"Bogdanci\"\n\n#: mk/mk_choices.py:15\nmsgid \"Bogovinje\"\nmsgstr \"Bogovinje\"\n\n#: mk/mk_choices.py:16\nmsgid \"Bosilovo\"\nmsgstr \"Bosilovo\"\n\n#: mk/mk_choices.py:17\nmsgid \"Brvenica\"\nmsgstr \"Brvenica\"\n\n#: mk/mk_choices.py:18\nmsgid \"Butel\"\nmsgstr \"Butel\"\n\n#: mk/mk_choices.py:19\nmsgid \"Valandovo\"\nmsgstr \"Valandovo\"\n\n#: mk/mk_choices.py:20\nmsgid \"Vasilevo\"\nmsgstr \"Vasilevo\"\n\n#: mk/mk_choices.py:21\nmsgid \"Vevčani\"\nmsgstr \"Vevčani\"\n\n#: mk/mk_choices.py:22\nmsgid \"Veles\"\nmsgstr \"Veles\"\n\n#: mk/mk_choices.py:23\nmsgid \"Vinica\"\nmsgstr \"Vinica\"\n\n#: mk/mk_choices.py:24\nmsgid \"Vraneštica\"\nmsgstr \"Vraneštica\"\n\n#: mk/mk_choices.py:25\nmsgid \"Vrapčište\"\nmsgstr \"Vrapčište\"\n\n#: mk/mk_choices.py:26\nmsgid \"Gazi Baba\"\nmsgstr \"Gazi Baba\"\n\n#: mk/mk_choices.py:27\nmsgid \"Gevgelija\"\nmsgstr \"Gevgelija\"\n\n#: mk/mk_choices.py:28\nmsgid \"Gostivar\"\nmsgstr \"Gostivar\"\n\n#: mk/mk_choices.py:29\nmsgid \"Gradsko\"\nmsgstr \"Gradsko\"\n\n#: mk/mk_choices.py:30\nmsgid \"Debar\"\nmsgstr \"Debar\"\n\n#: mk/mk_choices.py:31\nmsgid \"Debarca\"\nmsgstr \"Debarca\"\n\n#: mk/mk_choices.py:32\nmsgid \"Delčevo\"\nmsgstr \"Delčevo\"\n\n#: mk/mk_choices.py:33\nmsgid \"Demir Kapija\"\nmsgstr \"Demir Kapija\"\n\n#: mk/mk_choices.py:34\nmsgid \"Demir Hisar\"\nmsgstr \"Demir Hisar\"\n\n#: mk/mk_choices.py:35\nmsgid \"Dolneni\"\nmsgstr \"Dolneni\"\n\n#: mk/mk_choices.py:36\nmsgid \"Drugovo\"\nmsgstr \"Drugovo\"\n\n#: mk/mk_choices.py:37\nmsgid \"Gjorče Petrov\"\nmsgstr \"Gjorče Petrov\"\n\n#: mk/mk_choices.py:38\nmsgid \"Želino\"\nmsgstr \"Želino\"\n\n#: mk/mk_choices.py:39\nmsgid \"Zajas\"\nmsgstr \"Zajas\"\n\n#: mk/mk_choices.py:40\nmsgid \"Zelenikovo\"\nmsgstr \"Zelenikovo\"\n\n#: mk/mk_choices.py:41\nmsgid \"Zrnovci\"\nmsgstr \"Zrnovci\"\n\n#: mk/mk_choices.py:42\nmsgid \"Ilinden\"\nmsgstr \"Ilinden\"\n\n#: mk/mk_choices.py:43\nmsgid \"Jegunovce\"\nmsgstr \"Jegunovce\"\n\n#: mk/mk_choices.py:44\nmsgid \"Kavadarci\"\nmsgstr \"Kavadarci\"\n\n#: mk/mk_choices.py:45\nmsgid \"Karbinci\"\nmsgstr \"Karbinci\"\n\n#: mk/mk_choices.py:46\nmsgid \"Karpoš\"\nmsgstr \"Karpoš\"\n\n#: mk/mk_choices.py:47\nmsgid \"Kisela Voda\"\nmsgstr \"Kisela Voda\"\n\n#: mk/mk_choices.py:48\nmsgid \"Kičevo\"\nmsgstr \"Kičevo\"\n\n#: mk/mk_choices.py:49\nmsgid \"Konče\"\nmsgstr \"Konče\"\n\n#: mk/mk_choices.py:50\nmsgid \"Koćani\"\nmsgstr \"Koćani\"\n\n#: mk/mk_choices.py:51\nmsgid \"Kratovo\"\nmsgstr \"Kratovo\"\n\n#: mk/mk_choices.py:52\nmsgid \"Kriva Palanka\"\nmsgstr \"Kriva Palanka\"\n\n#: mk/mk_choices.py:53\nmsgid \"Krivogaštani\"\nmsgstr \"Krivogaštani\"\n\n#: mk/mk_choices.py:54\nmsgid \"Kruševo\"\nmsgstr \"Kruševo\"\n\n#: mk/mk_choices.py:55\nmsgid \"Kumanovo\"\nmsgstr \"Kumanovo\"\n\n#: mk/mk_choices.py:56\nmsgid \"Lipkovo\"\nmsgstr \"Lipkovo\"\n\n#: mk/mk_choices.py:57\nmsgid \"Lozovo\"\nmsgstr \"Lozovo\"\n\n#: mk/mk_choices.py:58\nmsgid \"Mavrovo i Rostuša\"\nmsgstr \"Mavrovo i Rostuša\"\n\n#: mk/mk_choices.py:59\nmsgid \"Makedonska Kamenica\"\nmsgstr \"Makedonska Kamenica\"\n\n#: mk/mk_choices.py:60\nmsgid \"Makedonski Brod\"\nmsgstr \"Makedonski Brod\"\n\n#: mk/mk_choices.py:61\nmsgid \"Mogila\"\nmsgstr \"Mogila\"\n\n#: mk/mk_choices.py:62\nmsgid \"Negotino\"\nmsgstr \"Negotino\"\n\n#: mk/mk_choices.py:63\nmsgid \"Novaci\"\nmsgstr \"Novaci\"\n\n#: mk/mk_choices.py:64\nmsgid \"Novo Selo\"\nmsgstr \"Novo Selo\"\n\n#: mk/mk_choices.py:65\nmsgid \"Oslomej\"\nmsgstr \"Oslomej\"\n\n#: mk/mk_choices.py:66\nmsgid \"Ohrid\"\nmsgstr \"Ohrid\"\n\n#: mk/mk_choices.py:67\nmsgid \"Petrovec\"\nmsgstr \"Petrovec\"\n\n#: mk/mk_choices.py:68\nmsgid \"Pehčevo\"\nmsgstr \"Pehčevo\"\n\n#: mk/mk_choices.py:69\nmsgid \"Plasnica\"\nmsgstr \"Plasnica\"\n\n#: mk/mk_choices.py:70\nmsgid \"Prilep\"\nmsgstr \"Prilep\"\n\n#: mk/mk_choices.py:71\nmsgid \"Probištip\"\nmsgstr \"Probištip\"\n\n#: mk/mk_choices.py:72\nmsgid \"Radoviš\"\nmsgstr \"Radoviš\"\n\n#: mk/mk_choices.py:73\nmsgid \"Rankovce\"\nmsgstr \"Rankovce\"\n\n#: mk/mk_choices.py:74\nmsgid \"Resen\"\nmsgstr \"Resen\"\n\n#: mk/mk_choices.py:75\nmsgid \"Rosoman\"\nmsgstr \"Rosoman\"\n\n#: mk/mk_choices.py:76\nmsgid \"Saraj\"\nmsgstr \"Saraj\"\n\n#: mk/mk_choices.py:77\nmsgid \"Sveti Nikole\"\nmsgstr \"Sveti Nikole\"\n\n#: mk/mk_choices.py:78\nmsgid \"Sopište\"\nmsgstr \"Sopište\"\n\n#: mk/mk_choices.py:79\nmsgid \"Star Dojran\"\nmsgstr \"Star Dojran\"\n\n#: mk/mk_choices.py:80\nmsgid \"Staro Nagoričane\"\nmsgstr \"Staro Nagoričane\"\n\n#: mk/mk_choices.py:81\nmsgid \"Struga\"\nmsgstr \"Struga\"\n\n#: mk/mk_choices.py:82\nmsgid \"Strumica\"\nmsgstr \"Strumica\"\n\n#: mk/mk_choices.py:83\nmsgid \"Studeničani\"\nmsgstr \"Studeničani\"\n\n#: mk/mk_choices.py:84\nmsgid \"Tearce\"\nmsgstr \"Tearce\"\n\n#: mk/mk_choices.py:85\nmsgid \"Tetovo\"\nmsgstr \"Tetovo\"\n\n#: mk/mk_choices.py:86\nmsgid \"Centar\"\nmsgstr \"Centar\"\n\n#: mk/mk_choices.py:87\nmsgid \"Centar-Župa\"\nmsgstr \"Centar-Župa\"\n\n#: mk/mk_choices.py:88\nmsgid \"Čair\"\nmsgstr \"Čair\"\n\n#: mk/mk_choices.py:89\nmsgid \"Čaška\"\nmsgstr \"Čaška\"\n\n#: mk/mk_choices.py:90\nmsgid \"Češinovo-Obleševo\"\nmsgstr \"Češinovo-Obleševo\"\n\n#: mk/mk_choices.py:91\nmsgid \"Čučer-Sandevo\"\nmsgstr \"Čučer-Sandevo\"\n\n#: mk/mk_choices.py:92\nmsgid \"Štip\"\nmsgstr \"Štip\"\n\n#: mk/mk_choices.py:93\nmsgid \"Šuto Orizari\"\nmsgstr \"Šuto Orizari\"\n\n#: mk/models.py:11\nmsgid \"Macedonian identity card number\"\nmsgstr \"Mazedoniako identifikazio txartel zenbakia\"\n\n#: mk/models.py:25\nmsgid \"A Macedonian municipality (2 character code)\"\nmsgstr \"Mazedoniako herria (2 karaktereko kodea)\"\n\n#: mk/models.py:35\nmsgid \"Unique master citizen number (13 digits)\"\nmsgstr \"Hiritar zenbaki nagusi bakarra (13 digitu)\"\n\n#: mx/forms.py:67\nmsgid \"Enter a valid zip code in the format XXXXX.\"\nmsgstr \"Sartu zip kode zuzena XXXXX formatuan.\"\n\n#: mx/forms.py:110\nmsgid \"Enter a valid RFC.\"\nmsgstr \"Sartu RFC zuzena.\"\n\n#: mx/forms.py:111\nmsgid \"Invalid checksum for RFC.\"\nmsgstr \"RFCaren konprobazio batura okerra.\"\n\n#: mx/forms.py:191\nmsgid \"Enter a valid CURP.\"\nmsgstr \"Sartu CURP zuzena.\"\n\n#: mx/forms.py:192\nmsgid \"Invalid checksum for CURP.\"\nmsgstr \"CURParen konprobazio batura okerra.\"\n\n#: mx/models.py:14\nmsgid \"Mexico state (three uppercase letters)\"\nmsgstr \"Mexikar estatua (hiru letra maiuskula)\"\n\n#: mx/models.py:27\nmsgid \"Mexico zip code\"\nmsgstr \"Mexikar zip kodea\"\n\n#: mx/models.py:44\nmsgid \"Mexican RFC\"\nmsgstr \"Mexikar RFCa\"\n\n#: mx/models.py:61\nmsgid \"Mexican CURP\"\nmsgstr \"Mexikar CURPa\"\n\n#: mx/mx_states.py:14\nmsgid \"Aguascalientes\"\nmsgstr \"Aguascalientes\"\n\n#: mx/mx_states.py:15\nmsgid \"Baja California\"\nmsgstr \"Baja California\"\n\n#: mx/mx_states.py:16\nmsgid \"Baja California Sur\"\nmsgstr \"Baja California Sur\"\n\n#: mx/mx_states.py:17\nmsgid \"Campeche\"\nmsgstr \"Campeche\"\n\n#: mx/mx_states.py:18\nmsgid \"Chihuahua\"\nmsgstr \"Chihuahua\"\n\n#: mx/mx_states.py:19\nmsgid \"Chiapas\"\nmsgstr \"Chiapas\"\n\n#: mx/mx_states.py:20\nmsgid \"Coahuila\"\nmsgstr \"Coahuila\"\n\n#: mx/mx_states.py:21\nmsgid \"Colima\"\nmsgstr \"Colima\"\n\n#: mx/mx_states.py:22\nmsgid \"Distrito Federal\"\nmsgstr \"Distrito Federal\"\n\n#: mx/mx_states.py:23\nmsgid \"Durango\"\nmsgstr \"Durango\"\n\n#: mx/mx_states.py:24\nmsgid \"Guerrero\"\nmsgstr \"Guerrero\"\n\n#: mx/mx_states.py:25\nmsgid \"Guanajuato\"\nmsgstr \"Guanajuato\"\n\n#: mx/mx_states.py:26\nmsgid \"Hidalgo\"\nmsgstr \"Hidalgo\"\n\n#: mx/mx_states.py:27\nmsgid \"Jalisco\"\nmsgstr \"Jalisco\"\n\n#: mx/mx_states.py:28\nmsgid \"Estado de México\"\nmsgstr \"Estado de México\"\n\n#: mx/mx_states.py:29\nmsgid \"Michoacán\"\nmsgstr \"Michoacán\"\n\n#: mx/mx_states.py:30\nmsgid \"Morelos\"\nmsgstr \"Morelos\"\n\n#: mx/mx_states.py:31\nmsgid \"Nayarit\"\nmsgstr \"Nayarit\"\n\n#: mx/mx_states.py:32\nmsgid \"Nuevo León\"\nmsgstr \"Nuevo León\"\n\n#: mx/mx_states.py:33\nmsgid \"Oaxaca\"\nmsgstr \"Oaxaca\"\n\n#: mx/mx_states.py:34\nmsgid \"Puebla\"\nmsgstr \"Puebla\"\n\n#: mx/mx_states.py:35\nmsgid \"Querétaro\"\nmsgstr \"Querétaro\"\n\n#: mx/mx_states.py:36\nmsgid \"Quintana Roo\"\nmsgstr \"Quintana Roo\"\n\n#: mx/mx_states.py:37\nmsgid \"Sinaloa\"\nmsgstr \"Sinaloa\"\n\n#: mx/mx_states.py:38\nmsgid \"San Luis Potosí\"\nmsgstr \"San Luis Potosí\"\n\n#: mx/mx_states.py:39\nmsgid \"Sonora\"\nmsgstr \"Sonora\"\n\n#: mx/mx_states.py:40\nmsgid \"Tabasco\"\nmsgstr \"Tabasco\"\n\n#: mx/mx_states.py:41\nmsgid \"Tamaulipas\"\nmsgstr \"Tamaulipas\"\n\n#: mx/mx_states.py:42\nmsgid \"Tlaxcala\"\nmsgstr \"Tlaxcala\"\n\n#: mx/mx_states.py:43\nmsgid \"Veracruz\"\nmsgstr \"Veracruz\"\n\n#: mx/mx_states.py:44\nmsgid \"Yucatán\"\nmsgstr \"Yucatán\"\n\n#: mx/mx_states.py:45\nmsgid \"Zacatecas\"\nmsgstr \"Zacatecas\"\n\n#: nl/forms.py:26\nmsgid \"Enter a valid postal code\"\nmsgstr \"Posta kode zuzena sartu\"\n\n#: nl/forms.py:82\nmsgid \"Enter a valid SoFi number\"\nmsgstr \"Sartu SoFi zenbaki zuzena\"\n\n#: nl/nl_provinces.py:4\nmsgid \"Drenthe\"\nmsgstr \"Drenthe\"\n\n#: nl/nl_provinces.py:5\nmsgid \"Flevoland\"\nmsgstr \"Flevoland\"\n\n#: nl/nl_provinces.py:6\nmsgid \"Friesland\"\nmsgstr \"Friesland\"\n\n#: nl/nl_provinces.py:7\nmsgid \"Gelderland\"\nmsgstr \"Gelderland\"\n\n#: nl/nl_provinces.py:8\nmsgid \"Groningen\"\nmsgstr \"Groningen\"\n\n#: nl/nl_provinces.py:10\nmsgid \"Noord-Brabant\"\nmsgstr \"Noord-Brabant\"\n\n#: nl/nl_provinces.py:11\nmsgid \"Noord-Holland\"\nmsgstr \"Noord-Holland\"\n\n#: nl/nl_provinces.py:12\nmsgid \"Overijssel\"\nmsgstr \"Overijssel\"\n\n#: nl/nl_provinces.py:13\nmsgid \"Utrecht\"\nmsgstr \"Utrecht\"\n\n#: nl/nl_provinces.py:14\nmsgid \"Zeeland\"\nmsgstr \"Zeeland\"\n\n#: nl/nl_provinces.py:15\nmsgid \"Zuid-Holland\"\nmsgstr \"Zuid-Holland\"\n\n#: no/forms.py:39\nmsgid \"Enter a valid Norwegian social security number.\"\nmsgstr \"Sartu Norbegiako Gizarte Segurantze zenbaki zuzena.\"\n\n#: pe/forms.py:28\nmsgid \"This field requires 8 digits.\"\nmsgstr \"Eremu honek 8 digitu behar ditu\"\n\n#: pe/forms.py:56\nmsgid \"This field requires 11 digits.\"\nmsgstr \"Eremu honek 11 digitu behar ditu\"\n\n#: pl/forms.py:42\nmsgid \"National Identification Number consists of 11 digits.\"\nmsgstr \"Identifikaizio Zenbaki Nazionalak 11 digitu dauzka.\"\n\n#: pl/forms.py:43\nmsgid \"Wrong checksum for the National Identification Number.\"\nmsgstr \"Identifikazio Zenbaki Nazionalaren konprobazio batura okerra.\"\n\n#: pl/forms.py:79\nmsgid \"National ID Card Number consists of 3 letters and 6 digits.\"\nmsgstr \"Nazio ID Txartel Zenbakiak 3 letra eta 6 digitu dauzka.\"\n\n#: pl/forms.py:80\nmsgid \"Wrong checksum for the National ID Card Number.\"\nmsgstr \"Nazio ID Txartel Zenbakiaren konprobazio batura okerra.\"\n\n#: pl/forms.py:131\nmsgid \"\"\n\"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or \"\n\"XXXXXXXXXX.\"\nmsgstr \"\"\n\"Sartu zerga zenbaki (NIP) zuzena XXX-XXX-XX-XX, XXX-XX-XX-XXX edo XXXXXXXXXX \"\n\"formatuan.\"\n\n#: pl/forms.py:132\nmsgid \"Wrong checksum for the Tax Number (NIP).\"\nmsgstr \"Tax Number (NIP)ren konprobazio zenbaki okerra.\"\n\n#: pl/forms.py:171\nmsgid \"National Business Register Number (REGON) consists of 9 or 14 digits.\"\nmsgstr \"\"\n\"National Business Register Number (REGON) 9 - 14 zenbakiz osatuta dago.\"\n\n#: pl/forms.py:172\nmsgid \"Wrong checksum for the National Business Register Number (REGON).\"\nmsgstr \"\"\n\"Konprobazio batura okerra National Buseness Register Number (REGON) \"\n\"zenbakirako.\"\n\n#: pl/forms.py:212\nmsgid \"Enter a postal code in the format XX-XXX.\"\nmsgstr \"Sartu posta kode zuzena XX-XXX formatuan.\"\n\n#: pl/pl_voivodeships.py:8\nmsgid \"Lower Silesia\"\nmsgstr \"Lower Silesia\"\n\n#: pl/pl_voivodeships.py:9\nmsgid \"Kuyavia-Pomerania\"\nmsgstr \"Kuyavia-Pomerania\"\n\n#: pl/pl_voivodeships.py:10\nmsgid \"Lublin\"\nmsgstr \"Lublin\"\n\n#: pl/pl_voivodeships.py:11\nmsgid \"Lubusz\"\nmsgstr \"Lubusz\"\n\n#: pl/pl_voivodeships.py:12\nmsgid \"Lodz\"\nmsgstr \"Lodz\"\n\n#: pl/pl_voivodeships.py:13\nmsgid \"Lesser Poland\"\nmsgstr \"Lesser Poland\"\n\n#: pl/pl_voivodeships.py:14\nmsgid \"Masovia\"\nmsgstr \"Masovia\"\n\n#: pl/pl_voivodeships.py:15\nmsgid \"Opole\"\nmsgstr \"Opole\"\n\n#: pl/pl_voivodeships.py:16\nmsgid \"Subcarpatia\"\nmsgstr \"Subcarpatia\"\n\n#: pl/pl_voivodeships.py:17\nmsgid \"Podlasie\"\nmsgstr \"Podlasie\"\n\n#: pl/pl_voivodeships.py:18\nmsgid \"Pomerania\"\nmsgstr \"Pomerania\"\n\n#: pl/pl_voivodeships.py:19\nmsgid \"Silesia\"\nmsgstr \"Silesia\"\n\n#: pl/pl_voivodeships.py:20\nmsgid \"Swietokrzyskie\"\nmsgstr \"Swietokrzyskie\"\n\n#: pl/pl_voivodeships.py:21\nmsgid \"Warmia-Masuria\"\nmsgstr \"Warmia-Masuria\"\n\n#: pl/pl_voivodeships.py:22\nmsgid \"Greater Poland\"\nmsgstr \"Greater Poland\"\n\n#: pl/pl_voivodeships.py:23\nmsgid \"West Pomerania\"\nmsgstr \"West Pomerania\"\n\n#: pt/forms.py:19\nmsgid \"Enter a zip code in the format XXXX-XXX.\"\nmsgstr \"Sartu zip kode zuzena XXXX-XXX formatuan.\"\n\n#: pt/forms.py:39\nmsgid \"Phone numbers must have 9 digits, or start by + or 00.\"\nmsgstr \"Telefono zenbakiek 9 digito izan behar dute, edo + edo 00 hasi.\"\n\n#: ro/forms.py:22\nmsgid \"Enter a valid CIF.\"\nmsgstr \"Sartu CIF zuzena.\"\n\n#: ro/forms.py:59\nmsgid \"Enter a valid CNP.\"\nmsgstr \"Sartu CNP zuzena.\"\n\n#: ro/forms.py:143\nmsgid \"Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format\"\nmsgstr \"Sartu IBAN zuzena ROXX-XXXX-XXXX-XXXX-XXXX-XXXX formatuan.\"\n\n#: ro/forms.py:175\nmsgid \"Phone numbers must be in XXXX-XXXXXX format.\"\nmsgstr \"Telefono zenbakiak XXXX-XXXXXX formatuan egon behar dira.\"\n\n#: ro/forms.py:200\nmsgid \"Enter a valid postal code in the format XXXXXX\"\nmsgstr \"Sartu baleko posta kodea XXXXXX formatuan\"\n\n#: ru/forms.py:37\nmsgid \"Enter a postal code in the format XXXXXX.\"\nmsgstr \"Sartu posta kode zuzena XXXXXX formatuan.\"\n\n#: ru/forms.py:50\nmsgid \"Enter a passport number in the format XXXX XXXXXX.\"\nmsgstr \"Sartu pasaporte zenbakia XXXX XXXXXX formatuan.\"\n\n#: ru/forms.py:63\nmsgid \"Enter a passport number in the format XX XXXXXXX.\"\nmsgstr \"Sartu pasaporte zenbakia XX XXXXXXX formatuan.\"\n\n#: ru/ru_regions.py:10\nmsgid \"Central Federal County\"\nmsgstr \"Central Federal County\"\n\n#: ru/ru_regions.py:11\nmsgid \"South Federal County\"\nmsgstr \"South Federal County\"\n\n#: ru/ru_regions.py:12\nmsgid \"North-West Federal County\"\nmsgstr \"North-West Federal County\"\n\n#: ru/ru_regions.py:13\nmsgid \"Far-East Federal County\"\nmsgstr \"Far-East Federal County\"\n\n#: ru/ru_regions.py:14\nmsgid \"Siberian Federal County\"\nmsgstr \"Siberian Federal County\"\n\n#: ru/ru_regions.py:15\nmsgid \"Ural Federal County\"\nmsgstr \"Ural Federal County\"\n\n#: ru/ru_regions.py:16\nmsgid \"Privolzhsky Federal County\"\nmsgstr \"Privolzhsky Federal County\"\n\n#: ru/ru_regions.py:17\nmsgid \"North-Caucasian Federal County\"\nmsgstr \"North-Caucasian Federal County\"\n\n#: ru/ru_regions.py:21\nmsgid \"Moskva\"\nmsgstr \"Moskva\"\n\n#: ru/ru_regions.py:22\nmsgid \"Saint-Peterburg\"\nmsgstr \"Saint-Peterburg\"\n\n#: ru/ru_regions.py:23\nmsgid \"Moskovskaya oblast'\"\nmsgstr \"Moskovskaya oblast'\"\n\n#: ru/ru_regions.py:24\nmsgid \"Adygeya, Respublika\"\nmsgstr \"Adygeya, Respublika\"\n\n#: ru/ru_regions.py:25\nmsgid \"Bashkortostan, Respublika\"\nmsgstr \"Bashkortostan, Respublika\"\n\n#: ru/ru_regions.py:26\nmsgid \"Buryatia, Respublika\"\nmsgstr \"Buryatia, Respublika\"\n\n#: ru/ru_regions.py:27\nmsgid \"Altay, Respublika\"\nmsgstr \"Altay, Respublika\"\n\n#: ru/ru_regions.py:28\nmsgid \"Dagestan, Respublika\"\nmsgstr \"Dagestan, Respublika\"\n\n#: ru/ru_regions.py:29\nmsgid \"Ingushskaya Respublika\"\nmsgstr \"Ingushskaya Respublika\"\n\n#: ru/ru_regions.py:30\nmsgid \"Kabardino-Balkarskaya Respublika\"\nmsgstr \"Kabardino-Balkarskaya Respublika\"\n\n#: ru/ru_regions.py:31\nmsgid \"Kalmykia, Respublika\"\nmsgstr \"Kalmykia, Respublika\"\n\n#: ru/ru_regions.py:32\nmsgid \"Karachaevo-Cherkesskaya Respublika\"\nmsgstr \"Karachaevo-Cherkesskaya Respublika\"\n\n#: ru/ru_regions.py:33\nmsgid \"Karelia, Respublika\"\nmsgstr \"Karelia, Respublika\"\n\n#: ru/ru_regions.py:34\nmsgid \"Komi, Respublika\"\nmsgstr \"Komi, Respublika\"\n\n#: ru/ru_regions.py:35\nmsgid \"Mariy Ehl, Respublika\"\nmsgstr \"Mariy Ehl, Respublika\"\n\n#: ru/ru_regions.py:36\nmsgid \"Mordovia, Respublika\"\nmsgstr \"Mordovia, Respublika\"\n\n#: ru/ru_regions.py:37\nmsgid \"Sakha, Respublika (Yakutiya)\"\nmsgstr \"Sakha, Respublika (Yakutiya)\"\n\n#: ru/ru_regions.py:38\nmsgid \"Severnaya Osetia, Respublika (Alania)\"\nmsgstr \"Severnaya Osetia, Respublika (Alania)\"\n\n#: ru/ru_regions.py:39\nmsgid \"Tatarstan, Respublika\"\nmsgstr \"Tatarstan, Respublika\"\n\n#: ru/ru_regions.py:40\nmsgid \"Tyva, Respublika (Tuva)\"\nmsgstr \"Tyva, Respublika (Tuva)\"\n\n#: ru/ru_regions.py:41\nmsgid \"Udmurtskaya Respublika\"\nmsgstr \"Udmurtskaya Respublika\"\n\n#: ru/ru_regions.py:42\nmsgid \"Khakassiya, Respublika\"\nmsgstr \"Khakassiya, Respublika\"\n\n#: ru/ru_regions.py:43\nmsgid \"Chechenskaya Respublika\"\nmsgstr \"Chechenskaya Respublika\"\n\n#: ru/ru_regions.py:44\nmsgid \"Chuvashskaya Respublika\"\nmsgstr \"Chuvashskaya Respublika\"\n\n#: ru/ru_regions.py:45\nmsgid \"Altayskiy Kray\"\nmsgstr \"Altayskiy Kray\"\n\n#: ru/ru_regions.py:46\nmsgid \"Zabaykalskiy Kray\"\nmsgstr \"Zabaykalskiy Kray\"\n\n#: ru/ru_regions.py:47\nmsgid \"Kamchatskiy Kray\"\nmsgstr \"Kamchatskiy Kray\"\n\n#: ru/ru_regions.py:48\nmsgid \"Krasnodarskiy Kray\"\nmsgstr \"Krasnodarskiy Kray\"\n\n#: ru/ru_regions.py:49\nmsgid \"Krasnoyarskiy Kray\"\nmsgstr \"Krasnoyarskiy Kray\"\n\n#: ru/ru_regions.py:50\nmsgid \"Permskiy Kray\"\nmsgstr \"Permskiy Kray\"\n\n#: ru/ru_regions.py:51\nmsgid \"Primorskiy Kray\"\nmsgstr \"Primorskiy Kray\"\n\n#: ru/ru_regions.py:52\nmsgid \"Stavropol'siyy Kray\"\nmsgstr \"Stavropol'siyy Kray\"\n\n#: ru/ru_regions.py:53\nmsgid \"Khabarovskiy Kray\"\nmsgstr \"Khabarovskiy Kray\"\n\n#: ru/ru_regions.py:54\nmsgid \"Amurskaya oblast'\"\nmsgstr \"Amurskaya oblast'\"\n\n#: ru/ru_regions.py:55\nmsgid \"Arkhangel'skaya oblast'\"\nmsgstr \"Arkhangel'skaya oblast'\"\n\n#: ru/ru_regions.py:56\nmsgid \"Astrakhanskaya oblast'\"\nmsgstr \"Astrakhanskaya oblast'\"\n\n#: ru/ru_regions.py:57\nmsgid \"Belgorodskaya oblast'\"\nmsgstr \"Belgorodskaya oblast'\"\n\n#: ru/ru_regions.py:58\nmsgid \"Bryanskaya oblast'\"\nmsgstr \"Bryanskaya oblast'\"\n\n#: ru/ru_regions.py:59\nmsgid \"Vladimirskaya oblast'\"\nmsgstr \"Vladimirskaya oblast'\"\n\n#: ru/ru_regions.py:60\nmsgid \"Volgogradskaya oblast'\"\nmsgstr \"Volgogradskaya oblast'\"\n\n#: ru/ru_regions.py:61\nmsgid \"Vologodskaya oblast'\"\nmsgstr \"Vologodskaya oblast'\"\n\n#: ru/ru_regions.py:62\nmsgid \"Voronezhskaya oblast'\"\nmsgstr \"Voronezhskaya oblast'\"\n\n#: ru/ru_regions.py:63\nmsgid \"Ivanovskaya oblast'\"\nmsgstr \"Ivanovskaya oblast'\"\n\n#: ru/ru_regions.py:64\nmsgid \"Irkutskaya oblast'\"\nmsgstr \"Irkutskaya oblast'\"\n\n#: ru/ru_regions.py:65\nmsgid \"Kaliningradskaya oblast'\"\nmsgstr \"Kaliningradskaya oblast'\"\n\n#: ru/ru_regions.py:66\nmsgid \"Kaluzhskaya oblast'\"\nmsgstr \"Kaluzhskaya oblast'\"\n\n#: ru/ru_regions.py:67\nmsgid \"Kemerovskaya oblast'\"\nmsgstr \"Kemerovskaya oblast'\"\n\n#: ru/ru_regions.py:68\nmsgid \"Kirovskaya oblast'\"\nmsgstr \"Kirovskaya oblast'\"\n\n#: ru/ru_regions.py:69\nmsgid \"Kostromskaya oblast'\"\nmsgstr \"Kostromskaya oblast'\"\n\n#: ru/ru_regions.py:70\nmsgid \"Kurganskaya oblast'\"\nmsgstr \"Kurganskaya oblast'\"\n\n#: ru/ru_regions.py:71\nmsgid \"Kurskaya oblast'\"\nmsgstr \"Kurskaya oblast'\"\n\n#: ru/ru_regions.py:72\nmsgid \"Leningradskaya oblast'\"\nmsgstr \"Leningradskaya oblast'\"\n\n#: ru/ru_regions.py:73\nmsgid \"Lipeckaya oblast'\"\nmsgstr \"Lipeckaya oblast'\"\n\n#: ru/ru_regions.py:74\nmsgid \"Magadanskaya oblast'\"\nmsgstr \"Magadanskaya oblast'\"\n\n#: ru/ru_regions.py:75\nmsgid \"Murmanskaya oblast'\"\nmsgstr \"Murmanskaya oblast'\"\n\n#: ru/ru_regions.py:76\nmsgid \"Nizhegorodskaja oblast'\"\nmsgstr \"Nizhegorodskaja oblast'\"\n\n#: ru/ru_regions.py:77\nmsgid \"Novgorodskaya oblast'\"\nmsgstr \"Novgorodskaya oblast'\"\n\n#: ru/ru_regions.py:78\nmsgid \"Novosibirskaya oblast'\"\nmsgstr \"Novosibirskaya oblast'\"\n\n#: ru/ru_regions.py:79\nmsgid \"Omskaya oblast'\"\nmsgstr \"Omskaya oblast'\"\n\n#: ru/ru_regions.py:80\nmsgid \"Orenburgskaya oblast'\"\nmsgstr \"Orenburgskaya oblast'\"\n\n#: ru/ru_regions.py:81\nmsgid \"Orlovskaya oblast'\"\nmsgstr \"Orlovskaya oblast'\"\n\n#: ru/ru_regions.py:82\nmsgid \"Penzenskaya oblast'\"\nmsgstr \"Penzenskaya oblast'\"\n\n#: ru/ru_regions.py:83\nmsgid \"Pskovskaya oblast'\"\nmsgstr \"Pskovskaya oblast'\"\n\n#: ru/ru_regions.py:84\nmsgid \"Rostovskaya oblast'\"\nmsgstr \"Rostovskaya oblast'\"\n\n#: ru/ru_regions.py:85\nmsgid \"Rjazanskaya oblast'\"\nmsgstr \"Rjazanskaya oblast'\"\n\n#: ru/ru_regions.py:86\nmsgid \"Samarskaya oblast'\"\nmsgstr \"Samarskaya oblast'\"\n\n#: ru/ru_regions.py:87\nmsgid \"Saratovskaya oblast'\"\nmsgstr \"Saratovskaya oblast'\"\n\n#: ru/ru_regions.py:88\nmsgid \"Sakhalinskaya oblast'\"\nmsgstr \"Sakhalinskaya oblast'\"\n\n#: ru/ru_regions.py:89\nmsgid \"Sverdlovskaya oblast'\"\nmsgstr \"Sverdlovskaya oblast'\"\n\n#: ru/ru_regions.py:90\nmsgid \"Smolenskaya oblast'\"\nmsgstr \"Smolenskaya oblast'\"\n\n#: ru/ru_regions.py:91\nmsgid \"Tambovskaya oblast'\"\nmsgstr \"Tambovskaya oblast'\"\n\n#: ru/ru_regions.py:92\nmsgid \"Tverskaya oblast'\"\nmsgstr \"Tverskaya oblast'\"\n\n#: ru/ru_regions.py:93\nmsgid \"Tomskaya oblast'\"\nmsgstr \"Tomskaya oblast'\"\n\n#: ru/ru_regions.py:94\nmsgid \"Tul'skaya oblast'\"\nmsgstr \"Tul'skaya oblast'\"\n\n#: ru/ru_regions.py:95\nmsgid \"Tyumenskaya oblast'\"\nmsgstr \"Tyumenskaya oblast'\"\n\n#: ru/ru_regions.py:96\nmsgid \"Ul'ianovskaya oblast'\"\nmsgstr \"Ul'ianovskaya oblast'\"\n\n#: ru/ru_regions.py:97\nmsgid \"Chelyabinskaya oblast'\"\nmsgstr \"Chelyabinskaya oblast'\"\n\n#: ru/ru_regions.py:98\nmsgid \"Yaroslavskaya oblast'\"\nmsgstr \"Yaroslavskaya oblast'\"\n\n#: ru/ru_regions.py:99\nmsgid \"Evreyskaya avtonomnaja oblast'\"\nmsgstr \"Evreyskaya avtonomnaja oblast'\"\n\n#: ru/ru_regions.py:100\nmsgid \"Neneckiy autonomnyy okrug\"\nmsgstr \"Neneckiy autonomnyy okrug\"\n\n#: ru/ru_regions.py:101\nmsgid \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\nmsgstr \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\n\n#: ru/ru_regions.py:102\nmsgid \"Chukotskiy avtonomnyy okrug\"\nmsgstr \"Chukotskiy avtonomnyy okrug\"\n\n#: ru/ru_regions.py:103\nmsgid \"Yamalo-Neneckiy avtonomnyy okrug\"\nmsgstr \"Yamalo-Neneckiy avtonomnyy okrug\"\n\n#: se/forms.py:54\nmsgid \"Enter a valid Swedish organisation number.\"\nmsgstr \"Sartu Suediako erakunde zenbaki zuzena.\"\n\n#: se/forms.py:111\nmsgid \"Enter a valid Swedish personal identity number.\"\nmsgstr \"Sartu Suediako identifikazio zenbaki pertsonala.\"\n\n#: se/forms.py:112\nmsgid \"Co-ordination numbers are not allowed.\"\nmsgstr \"Ko-ordenazio zenbakiak ez daude baimenduta.\"\n\n#: se/forms.py:154\nmsgid \"Enter a Swedish postal code in the format XXXXX.\"\nmsgstr \"Sartu Suediako posta kode zuzena XXXXX formatuan.\"\n\n#: se/se_counties.py:16\nmsgid \"Stockholm\"\nmsgstr \"Stockholm\"\n\n#: se/se_counties.py:17\nmsgid \"Västerbotten\"\nmsgstr \"Västerbotten\"\n\n#: se/se_counties.py:18\nmsgid \"Norrbotten\"\nmsgstr \"Norrbotten\"\n\n#: se/se_counties.py:19\nmsgid \"Uppsala\"\nmsgstr \"Uppsala\"\n\n#: se/se_counties.py:20\nmsgid \"Södermanland\"\nmsgstr \"Södermanland\"\n\n#: se/se_counties.py:21\nmsgid \"Östergötland\"\nmsgstr \"Östergötland\"\n\n#: se/se_counties.py:22\nmsgid \"Jönköping\"\nmsgstr \"Jönköping\"\n\n#: se/se_counties.py:23\nmsgid \"Kronoberg\"\nmsgstr \"Kronoberg\"\n\n#: se/se_counties.py:24\nmsgid \"Kalmar\"\nmsgstr \"Kalmar\"\n\n#: se/se_counties.py:25\nmsgid \"Gotland\"\nmsgstr \"Gotland\"\n\n#: se/se_counties.py:26\nmsgid \"Blekinge\"\nmsgstr \"Blekinge\"\n\n#: se/se_counties.py:27\nmsgid \"Skåne\"\nmsgstr \"Skåne\"\n\n#: se/se_counties.py:28\nmsgid \"Halland\"\nmsgstr \"Halland\"\n\n#: se/se_counties.py:29\nmsgid \"Västra Götaland\"\nmsgstr \"Västra Götaland\"\n\n#: se/se_counties.py:30\nmsgid \"Värmland\"\nmsgstr \"Värmland\"\n\n#: se/se_counties.py:31\nmsgid \"Örebro\"\nmsgstr \"Örebro\"\n\n#: se/se_counties.py:32\nmsgid \"Västmanland\"\nmsgstr \"Västmanland\"\n\n#: se/se_counties.py:33\nmsgid \"Dalarna\"\nmsgstr \"Dalarna\"\n\n#: se/se_counties.py:34\nmsgid \"Gävleborg\"\nmsgstr \"Gävleborg\"\n\n#: se/se_counties.py:35\nmsgid \"Västernorrland\"\nmsgstr \"Västernorrland\"\n\n#: se/se_counties.py:36\nmsgid \"Jämtland\"\nmsgstr \"Jämtland\"\n\n#: si/forms.py:25\nmsgid \"The first 7 digits of the EMSO must represent a valid past date.\"\nmsgstr \"\"\n\"EMSOaren lehen 7 digituek iraganeko data zuzen bat adierazi behar dute.\"\n\n#: si/forms.py:26\nmsgid \"The EMSO is not valid.\"\nmsgstr \"EMSO ez da zuzena.\"\n\n#: si/forms.py:86\nmsgid \"Enter a valid tax number in form SIXXXXXXXX\"\nmsgstr \"Sartu zerga zenbaki zuzena SIXXXXXXXX formatuan\"\n\n#: si/forms.py:151\nmsgid \"Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.\"\nmsgstr \"Sartu telefono zenbakia +386XXXXXXXX edo 0XXXXXXXX formatuan.\"\n\n#: sk/sk_districts.py:8\nmsgid \"Banska Bystrica\"\nmsgstr \"Banska Bystrica\"\n\n#: sk/sk_districts.py:9\nmsgid \"Banska Stiavnica\"\nmsgstr \"Banska Stiavnica\"\n\n#: sk/sk_districts.py:10\nmsgid \"Bardejov\"\nmsgstr \"Bardejov\"\n\n#: sk/sk_districts.py:11\nmsgid \"Banovce nad Bebravou\"\nmsgstr \"Banovce nad Bebravou\"\n\n#: sk/sk_districts.py:12\nmsgid \"Brezno\"\nmsgstr \"Brezno\"\n\n#: sk/sk_districts.py:13\nmsgid \"Bratislava I\"\nmsgstr \"Bratislava I\"\n\n#: sk/sk_districts.py:14\nmsgid \"Bratislava II\"\nmsgstr \"Bratislava II\"\n\n#: sk/sk_districts.py:15\nmsgid \"Bratislava III\"\nmsgstr \"Bratislava III\"\n\n#: sk/sk_districts.py:16\nmsgid \"Bratislava IV\"\nmsgstr \"Bratislava IV\"\n\n#: sk/sk_districts.py:17\nmsgid \"Bratislava V\"\nmsgstr \"Bratislava V\"\n\n#: sk/sk_districts.py:18\nmsgid \"Bytca\"\nmsgstr \"Bytca\"\n\n#: sk/sk_districts.py:19\nmsgid \"Cadca\"\nmsgstr \"Cadca\"\n\n#: sk/sk_districts.py:20\nmsgid \"Detva\"\nmsgstr \"Detva\"\n\n#: sk/sk_districts.py:21\nmsgid \"Dolny Kubin\"\nmsgstr \"Dolny Kubin\"\n\n#: sk/sk_districts.py:22\nmsgid \"Dunajska Streda\"\nmsgstr \"Dunajska Streda\"\n\n#: sk/sk_districts.py:23\nmsgid \"Galanta\"\nmsgstr \"Galanta\"\n\n#: sk/sk_districts.py:24\nmsgid \"Gelnica\"\nmsgstr \"Gelnica\"\n\n#: sk/sk_districts.py:25\nmsgid \"Hlohovec\"\nmsgstr \"Hlohovec\"\n\n#: sk/sk_districts.py:26\nmsgid \"Humenne\"\nmsgstr \"Humenne\"\n\n#: sk/sk_districts.py:27\nmsgid \"Ilava\"\nmsgstr \"Ilava\"\n\n#: sk/sk_districts.py:28\nmsgid \"Kezmarok\"\nmsgstr \"Kezmarok\"\n\n#: sk/sk_districts.py:29\nmsgid \"Komarno\"\nmsgstr \"Komarno\"\n\n#: sk/sk_districts.py:30\nmsgid \"Kosice I\"\nmsgstr \"Kosice I\"\n\n#: sk/sk_districts.py:31\nmsgid \"Kosice II\"\nmsgstr \"Kosice II\"\n\n#: sk/sk_districts.py:32\nmsgid \"Kosice III\"\nmsgstr \"Kosice III\"\n\n#: sk/sk_districts.py:33\nmsgid \"Kosice IV\"\nmsgstr \"Kosice IV\"\n\n#: sk/sk_districts.py:34\nmsgid \"Kosice - okolie\"\nmsgstr \"Kosice - okolie\"\n\n#: sk/sk_districts.py:35\nmsgid \"Krupina\"\nmsgstr \"Krupina\"\n\n#: sk/sk_districts.py:36\nmsgid \"Kysucke Nove Mesto\"\nmsgstr \"Kysucke Nove Mesto\"\n\n#: sk/sk_districts.py:37\nmsgid \"Levice\"\nmsgstr \"Levice\"\n\n#: sk/sk_districts.py:38\nmsgid \"Levoca\"\nmsgstr \"Levoca\"\n\n#: sk/sk_districts.py:39\nmsgid \"Liptovsky Mikulas\"\nmsgstr \"Liptovsky Mikulas\"\n\n#: sk/sk_districts.py:40\nmsgid \"Lucenec\"\nmsgstr \"Lucenec\"\n\n#: sk/sk_districts.py:41\nmsgid \"Malacky\"\nmsgstr \"Malacky\"\n\n#: sk/sk_districts.py:42\nmsgid \"Martin\"\nmsgstr \"Martin\"\n\n#: sk/sk_districts.py:43\nmsgid \"Medzilaborce\"\nmsgstr \"Medzilaborce\"\n\n#: sk/sk_districts.py:44\nmsgid \"Michalovce\"\nmsgstr \"Michalovce\"\n\n#: sk/sk_districts.py:45\nmsgid \"Myjava\"\nmsgstr \"Myjava\"\n\n#: sk/sk_districts.py:46\nmsgid \"Namestovo\"\nmsgstr \"Namestovo\"\n\n#: sk/sk_districts.py:47\nmsgid \"Nitra\"\nmsgstr \"Nitra\"\n\n#: sk/sk_districts.py:48\nmsgid \"Nove Mesto nad Vahom\"\nmsgstr \"Nove Mesto nad Vahom\"\n\n#: sk/sk_districts.py:49\nmsgid \"Nove Zamky\"\nmsgstr \"Nove Zamky\"\n\n#: sk/sk_districts.py:50\nmsgid \"Partizanske\"\nmsgstr \"Partizanske\"\n\n#: sk/sk_districts.py:51\nmsgid \"Pezinok\"\nmsgstr \"Pezinok\"\n\n#: sk/sk_districts.py:52\nmsgid \"Piestany\"\nmsgstr \"Piestany\"\n\n#: sk/sk_districts.py:53\nmsgid \"Poltar\"\nmsgstr \"Poltar\"\n\n#: sk/sk_districts.py:54\nmsgid \"Poprad\"\nmsgstr \"Poprad\"\n\n#: sk/sk_districts.py:55\nmsgid \"Povazska Bystrica\"\nmsgstr \"Povazska Bystrica\"\n\n#: sk/sk_districts.py:56\nmsgid \"Presov\"\nmsgstr \"Presov\"\n\n#: sk/sk_districts.py:57\nmsgid \"Prievidza\"\nmsgstr \"Prievidza\"\n\n#: sk/sk_districts.py:58\nmsgid \"Puchov\"\nmsgstr \"Puchov\"\n\n#: sk/sk_districts.py:59\nmsgid \"Revuca\"\nmsgstr \"Revuca\"\n\n#: sk/sk_districts.py:60\nmsgid \"Rimavska Sobota\"\nmsgstr \"Rimavska Sobota\"\n\n#: sk/sk_districts.py:61\nmsgid \"Roznava\"\nmsgstr \"Roznava\"\n\n#: sk/sk_districts.py:62\nmsgid \"Ruzomberok\"\nmsgstr \"Ruzomberok\"\n\n#: sk/sk_districts.py:63\nmsgid \"Sabinov\"\nmsgstr \"Sabinov\"\n\n#: sk/sk_districts.py:64\nmsgid \"Senec\"\nmsgstr \"Senec\"\n\n#: sk/sk_districts.py:65\nmsgid \"Senica\"\nmsgstr \"Senica\"\n\n#: sk/sk_districts.py:66\nmsgid \"Skalica\"\nmsgstr \"Skalica\"\n\n#: sk/sk_districts.py:67\nmsgid \"Snina\"\nmsgstr \"Snina\"\n\n#: sk/sk_districts.py:68\nmsgid \"Sobrance\"\nmsgstr \"Sobrance\"\n\n#: sk/sk_districts.py:69\nmsgid \"Spisska Nova Ves\"\nmsgstr \"Spisska Nova Ves\"\n\n#: sk/sk_districts.py:70\nmsgid \"Stara Lubovna\"\nmsgstr \"Stara Lubovna\"\n\n#: sk/sk_districts.py:71\nmsgid \"Stropkov\"\nmsgstr \"Stropkov\"\n\n#: sk/sk_districts.py:72\nmsgid \"Svidnik\"\nmsgstr \"Svidnik\"\n\n#: sk/sk_districts.py:73\nmsgid \"Sala\"\nmsgstr \"Sala\"\n\n#: sk/sk_districts.py:74\nmsgid \"Topolcany\"\nmsgstr \"Topolcany\"\n\n#: sk/sk_districts.py:75\nmsgid \"Trebisov\"\nmsgstr \"Trebisov\"\n\n#: sk/sk_districts.py:76\nmsgid \"Trencin\"\nmsgstr \"Trencin\"\n\n#: sk/sk_districts.py:77\nmsgid \"Trnava\"\nmsgstr \"Trnava\"\n\n#: sk/sk_districts.py:78\nmsgid \"Turcianske Teplice\"\nmsgstr \"Turcianske Teplice\"\n\n#: sk/sk_districts.py:79\nmsgid \"Tvrdosin\"\nmsgstr \"Tvrdosin\"\n\n#: sk/sk_districts.py:80\nmsgid \"Velky Krtis\"\nmsgstr \"Velky Krtis\"\n\n#: sk/sk_districts.py:81\nmsgid \"Vranov nad Toplou\"\nmsgstr \"Vranov nad Toplou\"\n\n#: sk/sk_districts.py:82\nmsgid \"Zlate Moravce\"\nmsgstr \"Zlate Moravce\"\n\n#: sk/sk_districts.py:83\nmsgid \"Zvolen\"\nmsgstr \"Zvolen\"\n\n#: sk/sk_districts.py:84\nmsgid \"Zarnovica\"\nmsgstr \"Zarnovica\"\n\n#: sk/sk_districts.py:85\nmsgid \"Ziar nad Hronom\"\nmsgstr \"Ziar nad Hronom\"\n\n#: sk/sk_districts.py:86\nmsgid \"Zilina\"\nmsgstr \"Zilina\"\n\n#: sk/sk_regions.py:8\nmsgid \"Banska Bystrica region\"\nmsgstr \"Banska Bystrica region\"\n\n#: sk/sk_regions.py:9\nmsgid \"Bratislava region\"\nmsgstr \"Bratislava region\"\n\n#: sk/sk_regions.py:10\nmsgid \"Kosice region\"\nmsgstr \"Kosice region\"\n\n#: sk/sk_regions.py:11\nmsgid \"Nitra region\"\nmsgstr \"Nitra region\"\n\n#: sk/sk_regions.py:12\nmsgid \"Presov region\"\nmsgstr \"Presov region\"\n\n#: sk/sk_regions.py:13\nmsgid \"Trencin region\"\nmsgstr \"Trencin region\"\n\n#: sk/sk_regions.py:14\nmsgid \"Trnava region\"\nmsgstr \"Trnava region\"\n\n#: sk/sk_regions.py:15\nmsgid \"Zilina region\"\nmsgstr \"Zilina region\"\n\n#: tr/forms.py:21\nmsgid \"Enter a postal code in the format XXXXX.\"\nmsgstr \"Sartu posta kode zuzena XXXXX formatuan.\"\n\n#: tr/forms.py:42\nmsgid \"Phone numbers must be in 0XXX XXX XXXX format.\"\nmsgstr \"Telefono zenbakiak 0XXX XXX XXXX formatuan egon behar dira.\"\n\n#: tr/forms.py:69\nmsgid \"Enter a valid Turkish Identification number.\"\nmsgstr \"Sartu Turkiako Identifikazio zenbaki zuzena.\"\n\n#: tr/forms.py:70\nmsgid \"Turkish Identification number must be 11 digits.\"\nmsgstr \"Turkiako Identifikazio zenbakiak 11 digitu dauzka.\"\n\n#: us/forms.py:21\nmsgid \"Enter a zip code in the format XXXXX or XXXXX-XXXX.\"\nmsgstr \"Sartu posta kode zuzena XXXXX edo XXXXX-XXXX formatuan.\"\n\n#: us/forms.py:59\nmsgid \"Enter a valid U.S. Social Security number in XXX-XX-XXXX format.\"\nmsgstr \"Sartu EEBBtako Gizarte Segurantza zenbakia XXX-XX-XXXX formatuan.\"\n\n#: us/forms.py:92\nmsgid \"Enter a U.S. state or territory.\"\nmsgstr \"Sartu EEBB estatu edo lurralde bat.\"\n\n#: us/models.py:8\nmsgid \"U.S. state (two uppercase letters)\"\nmsgstr \"AEB estatua (bi letra maiuskula)\"\n\n#: us/models.py:17\nmsgid \"U.S. postal code (two uppercase letters)\"\nmsgstr \"EEBB posta kodea (bi letra maiuskula)\"\n\n#: us/models.py:26\nmsgid \"Phone number\"\nmsgstr \"Telefono zenbakia\"\n\n#: uy/forms.py:29\nmsgid \"Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.\"\nmsgstr \"Sartu CI zenbaki zuzena X.XXX.XXX-X,XXXXXXX-X edo XXXXXXXX formatuan.\"\n\n#: uy/forms.py:31\nmsgid \"Enter a valid CI number.\"\nmsgstr \"Sartu CI zenbaki zuzena.\"\n\n#: za/forms.py:22\nmsgid \"Enter a valid South African ID number\"\nmsgstr \"Sartu Hego Afrikako ID zenbaki zuzena\"\n\n#: za/forms.py:56\nmsgid \"Enter a valid South African postal code\"\nmsgstr \"Sartu Hego Afrikako posta kode zuzena\"\n\n#: za/za_provinces.py:4\nmsgid \"Eastern Cape\"\nmsgstr \"Eastern Cape\"\n\n#: za/za_provinces.py:5\nmsgid \"Free State\"\nmsgstr \"Free State\"\n\n#: za/za_provinces.py:6\nmsgid \"Gauteng\"\nmsgstr \"Gauteng\"\n\n#: za/za_provinces.py:7\nmsgid \"KwaZulu-Natal\"\nmsgstr \"KwaZulu-Natal\"\n\n#: za/za_provinces.py:8\nmsgid \"Limpopo\"\nmsgstr \"Limpopo\"\n\n#: za/za_provinces.py:9\nmsgid \"Mpumalanga\"\nmsgstr \"Mpumalanga\"\n\n#: za/za_provinces.py:10\nmsgid \"Northern Cape\"\nmsgstr \"Northern Cape\"\n\n#: za/za_provinces.py:11\nmsgid \"North West\"\nmsgstr \"North West\"\n\n#: za/za_provinces.py:12\nmsgid \"Western Cape\"\nmsgstr \"Western Cape\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/locale/fa/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Ali Nikneshan <ali@nikneshan.com>, 2011, 2012.\n# iman darabi <iman.darabi@gmail.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-10-17 09:16+0000\\n\"\n\"Last-Translator: Ali Nikneshan <ali@nikneshan.com>\\n\"\n\"Language-Team: Persian (http://www.transifex.com/projects/p/django/language/\"\n\"fa/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: fa\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: ar/forms.py:30\nmsgid \"Enter a postal code in the format NNNN or ANNNNAAA.\"\nmsgstr \"کد پستی را به شکل NNNN یا ANNNNAAA وارد کنید.\"\n\n#: ar/forms.py:52 br/forms.py:95 br/forms.py:134 pe/forms.py:27 pe/forms.py:55\nmsgid \"This field requires only numbers.\"\nmsgstr \"در این فیلد فقط عدد می‌توانید وارد کنید.\"\n\n#: ar/forms.py:53\nmsgid \"This field requires 7 or 8 digits.\"\nmsgstr \"این فیلد ۷ یا ۸ رقم لازم دارد.\"\n\n#: ar/forms.py:82\nmsgid \"Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.\"\nmsgstr \"یک مقدار  CUITمعتبر به فرم XX-XXXXXXXX-X یا XXXXXXXXXXXX وارد کنید.\"\n\n#: ar/forms.py:83\nmsgid \"Invalid CUIT.\"\nmsgstr \"نامعتبر CUIT.\"\n\n#: ar/forms.py:84\nmsgid \"Invalid legal type. Type must be 27, 20, 23 or 30.\"\nmsgstr \"\"\n\n#: at/at_states.py:5\nmsgid \"Burgenland\"\nmsgstr \"بورگن لاند\"\n\n#: at/at_states.py:6\nmsgid \"Carinthia\"\nmsgstr \"کرنتن\"\n\n#: at/at_states.py:7\nmsgid \"Lower Austria\"\nmsgstr \"اتریش سفلا\"\n\n#: at/at_states.py:8\nmsgid \"Upper Austria\"\nmsgstr \"اتریش بالا\"\n\n#: at/at_states.py:9\nmsgid \"Salzburg\"\nmsgstr \"سالزبورگ\"\n\n#: at/at_states.py:10\nmsgid \"Styria\"\nmsgstr \"Styria\"\n\n#: at/at_states.py:11\nmsgid \"Tyrol\"\nmsgstr \"Tyrol\"\n\n#: at/at_states.py:12\nmsgid \"Vorarlberg\"\nmsgstr \"فورآلبرگ\"\n\n#: at/at_states.py:13\nmsgid \"Vienna\"\nmsgstr \"وین\"\n\n#: at/forms.py:22 ch/forms.py:22 no/forms.py:19\nmsgid \"Enter a zip code in the format XXXX.\"\nmsgstr \"کد پستی صحیح را به شکل XXXX وارد کنید.\"\n\n#: at/forms.py:50\nmsgid \"Enter a valid Austrian Social Security Number in XXXX XXXXXX format.\"\nmsgstr \"شماره معتبر اتريشي تامين اجتماعي را به فرمت xxxxx xxxxxx وارد نماييد\"\n\n#: au/forms.py:26\nmsgid \"Enter a 4 digit postcode.\"\nmsgstr \"\"\n\n#: au/models.py:9\nmsgid \"Australian State\"\nmsgstr \"\"\n\n#: au/models.py:19\nmsgid \"Australian Postcode\"\nmsgstr \"\"\n\n#: au/models.py:33\nmsgid \"Australian Phone number\"\nmsgstr \"\"\n\n#: be/be_provinces.py:5\nmsgid \"Antwerp\"\nmsgstr \"آنتورپ\"\n\n#: be/be_provinces.py:6\nmsgid \"Brussels\"\nmsgstr \"بروکسل\"\n\n#: be/be_provinces.py:7\nmsgid \"East Flanders\"\nmsgstr \"فلاندر شرق\"\n\n#: be/be_provinces.py:8\nmsgid \"Flemish Brabant\"\nmsgstr \"اهل فلاندرز Brabant\"\n\n#: be/be_provinces.py:9\nmsgid \"Hainaut\"\nmsgstr \"Hainaut\"\n\n#: be/be_provinces.py:10\nmsgid \"Liege\"\nmsgstr \"صاحب تیول\"\n\n#: be/be_provinces.py:11 nl/nl_provinces.py:9\nmsgid \"Limburg\"\nmsgstr \"Limburg\"\n\n#: be/be_provinces.py:12\nmsgid \"Luxembourg\"\nmsgstr \"لوکزامبورگ\"\n\n#: be/be_provinces.py:13\nmsgid \"Namur\"\nmsgstr \"Namur\"\n\n#: be/be_provinces.py:14\nmsgid \"Walloon Brabant\"\nmsgstr \"والونی Brabant\"\n\n#: be/be_provinces.py:15\nmsgid \"West Flanders\"\nmsgstr \"فلاندر غرب\"\n\n#: be/be_regions.py:5\nmsgid \"Brussels Capital Region\"\nmsgstr \"منطقه بروکسل پایتخت\"\n\n#: be/be_regions.py:6\nmsgid \"Flemish Region\"\nmsgstr \"اهل فلاندرز منطقه\"\n\n#: be/be_regions.py:7\nmsgid \"Wallonia\"\nmsgstr \"Wallonia\"\n\n#: be/forms.py:25\nmsgid \"Enter a valid postal code in the range and format 1XXX - 9XXX.\"\nmsgstr \"کد پستی معتبر در محدوده و قالب 1XXX - 9XXX را وارد کنید.\"\n\n#: be/forms.py:48\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\nmsgstr \"\"\n\"شماره تلفن معتبر در یکی از فرمت های 0x XXX XX XX XX XX XX 0xx، 04xx XX XX \"\n\"XX، 0x/xxx.xx.xx، 0xx/xx.xx.xx، 04xx/xx.xx.xx، 0x را وارد کنید xxx.xx.xx، \"\n\"0xx.xx.xx.xx، 04xx.xx.xx.xx، 0xxxxxxxx یا 04xxxxxxxx.\"\n\n#: br/forms.py:22\nmsgid \"Enter a zip code in the format XXXXX-XXX.\"\nmsgstr \"کد پستی را به شکل XXXXX-XXX وارد کنید.\"\n\n#: br/forms.py:31\nmsgid \"Phone numbers must be in XX-XXXX-XXXX format.\"\nmsgstr \"شماره تلفنها باید به شکل XX-XXXX-XXXX باشند.\"\n\n#: br/forms.py:58\nmsgid \"\"\n\"Select a valid brazilian state. That state is not one of the available \"\n\"states.\"\nmsgstr \"\"\n\" یک استان برزیل معتبر را انتخاب کنید. این استان یکی از استان های موجود نمی \"\n\"باشد.\"\n\n#: br/forms.py:93\nmsgid \"Invalid CPF number.\"\nmsgstr \"شماره نامعتبر CPF.\"\n\n#: br/forms.py:94\nmsgid \"This field requires at most 11 digits or 14 characters.\"\nmsgstr \"طول این فیلد حداقل ۱۱ شماره و حداکثر ۱۴ حرف می باشد.\"\n\n#: br/forms.py:133\nmsgid \"Invalid CNPJ number.\"\nmsgstr \"شماره نامعتبر CNPJ.\"\n\n#: br/forms.py:135\nmsgid \"This field requires at least 14 digits\"\nmsgstr \"فیلد حداقل باید ۱۴ شماره باشد\"\n\n#: ca/forms.py:29\nmsgid \"Enter a postal code in the format XXX XXX.\"\nmsgstr \"کد پستس را به شکل XXX·XXX. وارد کنید.\"\n\n#: ca/forms.py:47 us/forms.py:30\nmsgid \"Phone numbers must be in XXX-XXX-XXXX format.\"\nmsgstr \"\"\n\n#: ca/forms.py:69\nmsgid \"Enter a Canadian province or territory.\"\nmsgstr \"\"\n\n#: ca/forms.py:110\nmsgid \"Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.\"\nmsgstr \" شماره بیمه اجتماعی معتبر کانادا در قالب XXX-XXX-XXX را وارد کنید.\"\n\n#: ch/ch_states.py:5\nmsgid \"Aargau\"\nmsgstr \"Aargau\"\n\n#: ch/ch_states.py:6\nmsgid \"Appenzell Innerrhoden\"\nmsgstr \"Appenzell Innerrhoden\"\n\n#: ch/ch_states.py:7\nmsgid \"Appenzell Ausserrhoden\"\nmsgstr \"Appenzell Ausserrhoden\"\n\n#: ch/ch_states.py:8\nmsgid \"Basel-Stadt\"\nmsgstr \"Basel-Stadt\"\n\n#: ch/ch_states.py:9\nmsgid \"Basel-Land\"\nmsgstr \"Basel-Land\"\n\n#: ch/ch_states.py:10\nmsgid \"Berne\"\nmsgstr \"برن\"\n\n#: ch/ch_states.py:11\nmsgid \"Fribourg\"\nmsgstr \"Fribourg\"\n\n#: ch/ch_states.py:12\nmsgid \"Geneva\"\nmsgstr \"ژنو\"\n\n#: ch/ch_states.py:13\nmsgid \"Glarus\"\nmsgstr \"Glarus\"\n\n#: ch/ch_states.py:14\nmsgid \"Graubuenden\"\nmsgstr \"Graubuenden\"\n\n#: ch/ch_states.py:15\nmsgid \"Jura\"\nmsgstr \"Jura\"\n\n#: ch/ch_states.py:16\nmsgid \"Lucerne\"\nmsgstr \"Lucerne\"\n\n#: ch/ch_states.py:17\nmsgid \"Neuchatel\"\nmsgstr \"Neuchatel\"\n\n#: ch/ch_states.py:18\nmsgid \"Nidwalden\"\nmsgstr \"Nidwalden\"\n\n#: ch/ch_states.py:19\nmsgid \"Obwalden\"\nmsgstr \"Obwalden\"\n\n#: ch/ch_states.py:20\nmsgid \"Schaffhausen\"\nmsgstr \"Schaffhausen\"\n\n#: ch/ch_states.py:21\nmsgid \"Schwyz\"\nmsgstr \"Schwyz\"\n\n#: ch/ch_states.py:22\nmsgid \"Solothurn\"\nmsgstr \"Solothurn\"\n\n#: ch/ch_states.py:23\nmsgid \"St. Gallen\"\nmsgstr \"خیابان Gallen\"\n\n#: ch/ch_states.py:24\nmsgid \"Thurgau\"\nmsgstr \"Thurgau\"\n\n#: ch/ch_states.py:25\nmsgid \"Ticino\"\nmsgstr \"Ticino\"\n\n#: ch/ch_states.py:26\nmsgid \"Uri\"\nmsgstr \"Uri\"\n\n#: ch/ch_states.py:27\nmsgid \"Valais\"\nmsgstr \"Valais\"\n\n#: ch/ch_states.py:28\nmsgid \"Vaud\"\nmsgstr \"Vaud\"\n\n#: ch/ch_states.py:29\nmsgid \"Zug\"\nmsgstr \"Zug\"\n\n#: ch/ch_states.py:30\nmsgid \"Zurich\"\nmsgstr \"زوریخ\"\n\n#: ch/forms.py:37\nmsgid \"Phone numbers must be in 0XX XXX XX XX format.\"\nmsgstr \"\"\n\n#: ch/forms.py:68\nmsgid \"\"\n\"Enter a valid Swiss identity or passport card number in X1234567<0 or \"\n\"1234567890 format.\"\nmsgstr \"\"\n\"هویت معتبر سوئیس و یا شماره کارت گذرنامه در X1234567 &lt;0 و یا فرمت \"\n\"1234567890 را وارد کنید.\"\n\n#: cl/forms.py:32\nmsgid \"Enter a valid Chilean RUT.\"\nmsgstr \"RUT شیلی معتبر را وارد کنید.\"\n\n#: cl/forms.py:33\nmsgid \"Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.\"\nmsgstr \"RUT شیلی معتبر را وارد کنید. فرمت XX.XXX.XXX-X است.\"\n\n#: cl/forms.py:34\nmsgid \"The Chilean RUT is not valid.\"\nmsgstr \"RUT شیلی معتبر نیست.\"\n\n#: cn/forms.py:84\nmsgid \"Enter a post code in the format XXXXXX.\"\nmsgstr \"\"\n\n#: cn/forms.py:105\nmsgid \"ID Card Number consists of 15 or 18 digits.\"\nmsgstr \"\"\n\n#: cn/forms.py:106\nmsgid \"Invalid ID Card Number: Wrong checksum\"\nmsgstr \"\"\n\n#: cn/forms.py:107\nmsgid \"Invalid ID Card Number: Wrong birthdate\"\nmsgstr \"\"\n\n#: cn/forms.py:108\nmsgid \"Invalid ID Card Number: Wrong location code\"\nmsgstr \"\"\n\n#: cn/forms.py:193\nmsgid \"Enter a valid phone number.\"\nmsgstr \"\"\n\n#: cn/forms.py:210\nmsgid \"Enter a valid cell number.\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:8\nmsgid \"Prague\"\nmsgstr \"پراگ\"\n\n#: cz/cz_regions.py:9\nmsgid \"Central Bohemian Region\"\nmsgstr \"منطقه مرکزی Bohemian\"\n\n#: cz/cz_regions.py:10\nmsgid \"South Bohemian Region\"\nmsgstr \"منطقه Bohemian جنوبی\"\n\n#: cz/cz_regions.py:11\nmsgid \"Pilsen Region\"\nmsgstr \"منطقه Pilsen \"\n\n#: cz/cz_regions.py:12\nmsgid \"Carlsbad Region\"\nmsgstr \"Carlsbad Region\"\n\n#: cz/cz_regions.py:13\nmsgid \"Usti Region\"\nmsgstr \"Usti Region\"\n\n#: cz/cz_regions.py:14\nmsgid \"Liberec Region\"\nmsgstr \"Liberec Region\"\n\n#: cz/cz_regions.py:15\nmsgid \"Hradec Region\"\nmsgstr \"Hradec Region\"\n\n#: cz/cz_regions.py:16\nmsgid \"Pardubice Region\"\nmsgstr \"Pardubice Region\"\n\n#: cz/cz_regions.py:17\nmsgid \"Vysocina Region\"\nmsgstr \"Vysocina Region\"\n\n#: cz/cz_regions.py:18\nmsgid \"South Moravian Region\"\nmsgstr \"South Moravian Region\"\n\n#: cz/cz_regions.py:19\nmsgid \"Olomouc Region\"\nmsgstr \"Olomouc Region\"\n\n#: cz/cz_regions.py:20\nmsgid \"Zlin Region\"\nmsgstr \"Zlin Region\"\n\n#: cz/cz_regions.py:21\nmsgid \"Moravian-Silesian Region\"\nmsgstr \"Moravian-Silesian Region\"\n\n#: cz/forms.py:32 sk/forms.py:33\nmsgid \"Enter a postal code in the format XXXXX or XXX XX.\"\nmsgstr \"کد پستی در XXXXX فرمت یا XX XXX را وارد کنید.\"\n\n#: cz/forms.py:52\nmsgid \"Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.\"\nmsgstr \"شماره تولد در فرمت XXXXXX / XXXX و یا XXXXXXXXXX را وارد کنید.\"\n\n#: cz/forms.py:53\nmsgid \"Enter a valid birth number.\"\nmsgstr \"شماره تولد معتبر را وارد کنید.\"\n\n#: cz/forms.py:102\nmsgid \"Enter a valid IC number.\"\nmsgstr \"شمارع IC معتبر را وارد کنید.\"\n\n#: de/de_states.py:5\nmsgid \"Baden-Wuerttemberg\"\nmsgstr \"Baden-Wuerttemberg\"\n\n#: de/de_states.py:6\nmsgid \"Bavaria\"\nmsgstr \"بایرن\"\n\n#: de/de_states.py:7\nmsgid \"Berlin\"\nmsgstr \"برلین\"\n\n#: de/de_states.py:8\nmsgid \"Brandenburg\"\nmsgstr \"براندنبورگ\"\n\n#: de/de_states.py:9\nmsgid \"Bremen\"\nmsgstr \"برمن\"\n\n#: de/de_states.py:10\nmsgid \"Hamburg\"\nmsgstr \"هامبورگ\"\n\n#: de/de_states.py:11\nmsgid \"Hessen\"\nmsgstr \"Hessen\"\n\n#: de/de_states.py:12\nmsgid \"Mecklenburg-Western Pomerania\"\nmsgstr \"مکلنبورگ فورپومرن\"\n\n#: de/de_states.py:13\nmsgid \"Lower Saxony\"\nmsgstr \"نیدرزاکسن\"\n\n#: de/de_states.py:14\nmsgid \"North Rhine-Westphalia\"\nmsgstr \"ایالت نوردراین وستفالن\"\n\n#: de/de_states.py:15\nmsgid \"Rhineland-Palatinate\"\nmsgstr \"راین لند، کنت نشین\"\n\n#: de/de_states.py:16\nmsgid \"Saarland\"\nmsgstr \"Saarland\"\n\n#: de/de_states.py:17\nmsgid \"Saxony\"\nmsgstr \"ساکسونی\"\n\n#: de/de_states.py:18\nmsgid \"Saxony-Anhalt\"\nmsgstr \"زاکسن آنهالت\"\n\n#: de/de_states.py:19\nmsgid \"Schleswig-Holstein\"\nmsgstr \"Schleswig هولشتاین\"\n\n#: de/de_states.py:20\nmsgid \"Thuringia\"\nmsgstr \"تورینگن\"\n\n#: de/forms.py:20 fi/forms.py:18 fr/forms.py:20\nmsgid \"Enter a zip code in the format XXXXX.\"\nmsgstr \"کد پستی را به شکل XXXXX وارد کنید.\"\n\n#: de/forms.py:46\nmsgid \"\"\n\"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"format.\"\nmsgstr \"\"\n\"شماره کارت هویت معتبر آلمانی در XXXXXXXXXXX-XXXXXXX XXXXXXX-X قالب را وارد \"\n\"کنید.\"\n\n#: es/es_provinces.py:5\nmsgid \"Araba\"\nmsgstr \"\"\n\n#: es/es_provinces.py:6\nmsgid \"Albacete\"\nmsgstr \"Albacete\"\n\n#: es/es_provinces.py:7\nmsgid \"Alacant\"\nmsgstr \"\"\n\n#: es/es_provinces.py:8\nmsgid \"Almeria\"\nmsgstr \"\"\n\n#: es/es_provinces.py:9\nmsgid \"Avila\"\nmsgstr \"\"\n\n#: es/es_provinces.py:10\nmsgid \"Badajoz\"\nmsgstr \"\"\n\n#: es/es_provinces.py:11\nmsgid \"Illes Balears\"\nmsgstr \"\"\n\n#: es/es_provinces.py:12\nmsgid \"Barcelona\"\nmsgstr \"\"\n\n#: es/es_provinces.py:13\nmsgid \"Burgos\"\nmsgstr \"\"\n\n#: es/es_provinces.py:14\nmsgid \"Caceres\"\nmsgstr \"\"\n\n#: es/es_provinces.py:15\nmsgid \"Cadiz\"\nmsgstr \"\"\n\n#: es/es_provinces.py:16\nmsgid \"Castello\"\nmsgstr \"\"\n\n#: es/es_provinces.py:17\nmsgid \"Ciudad Real\"\nmsgstr \"\"\n\n#: es/es_provinces.py:18\nmsgid \"Cordoba\"\nmsgstr \"\"\n\n#: es/es_provinces.py:19\nmsgid \"A Coruna\"\nmsgstr \"\"\n\n#: es/es_provinces.py:20\nmsgid \"Cuenca\"\nmsgstr \"\"\n\n#: es/es_provinces.py:21\nmsgid \"Girona\"\nmsgstr \"\"\n\n#: es/es_provinces.py:22\nmsgid \"Granada\"\nmsgstr \"\"\n\n#: es/es_provinces.py:23\nmsgid \"Guadalajara\"\nmsgstr \"\"\n\n#: es/es_provinces.py:24\nmsgid \"Guipuzkoa\"\nmsgstr \"\"\n\n#: es/es_provinces.py:25\nmsgid \"Huelva\"\nmsgstr \"\"\n\n#: es/es_provinces.py:26\nmsgid \"Huesca\"\nmsgstr \"\"\n\n#: es/es_provinces.py:27\nmsgid \"Jaen\"\nmsgstr \"\"\n\n#: es/es_provinces.py:28\nmsgid \"Leon\"\nmsgstr \"\"\n\n#: es/es_provinces.py:29\nmsgid \"Lleida\"\nmsgstr \"\"\n\n#: es/es_provinces.py:30 es/es_regions.py:17\nmsgid \"La Rioja\"\nmsgstr \"\"\n\n#: es/es_provinces.py:31\nmsgid \"Lugo\"\nmsgstr \"\"\n\n#: es/es_provinces.py:32 es/es_regions.py:18\nmsgid \"Madrid\"\nmsgstr \"\"\n\n#: es/es_provinces.py:33\nmsgid \"Malaga\"\nmsgstr \"\"\n\n#: es/es_provinces.py:34\nmsgid \"Murcia\"\nmsgstr \"\"\n\n#: es/es_provinces.py:35\nmsgid \"Navarre\"\nmsgstr \"\"\n\n#: es/es_provinces.py:36\nmsgid \"Ourense\"\nmsgstr \"\"\n\n#: es/es_provinces.py:37\nmsgid \"Asturias\"\nmsgstr \"\"\n\n#: es/es_provinces.py:38\nmsgid \"Palencia\"\nmsgstr \"\"\n\n#: es/es_provinces.py:39\nmsgid \"Las Palmas\"\nmsgstr \"\"\n\n#: es/es_provinces.py:40\nmsgid \"Pontevedra\"\nmsgstr \"\"\n\n#: es/es_provinces.py:41\nmsgid \"Salamanca\"\nmsgstr \"\"\n\n#: es/es_provinces.py:42\nmsgid \"Santa Cruz de Tenerife\"\nmsgstr \"\"\n\n#: es/es_provinces.py:43 es/es_regions.py:11\nmsgid \"Cantabria\"\nmsgstr \"\"\n\n#: es/es_provinces.py:44\nmsgid \"Segovia\"\nmsgstr \"\"\n\n#: es/es_provinces.py:45\nmsgid \"Seville\"\nmsgstr \"\"\n\n#: es/es_provinces.py:46\nmsgid \"Soria\"\nmsgstr \"\"\n\n#: es/es_provinces.py:47\nmsgid \"Tarragona\"\nmsgstr \"\"\n\n#: es/es_provinces.py:48\nmsgid \"Teruel\"\nmsgstr \"\"\n\n#: es/es_provinces.py:49\nmsgid \"Toledo\"\nmsgstr \"\"\n\n#: es/es_provinces.py:50\nmsgid \"Valencia\"\nmsgstr \"\"\n\n#: es/es_provinces.py:51\nmsgid \"Valladolid\"\nmsgstr \"\"\n\n#: es/es_provinces.py:52\nmsgid \"Bizkaia\"\nmsgstr \"\"\n\n#: es/es_provinces.py:53\nmsgid \"Zamora\"\nmsgstr \"\"\n\n#: es/es_provinces.py:54\nmsgid \"Zaragoza\"\nmsgstr \"\"\n\n#: es/es_provinces.py:55\nmsgid \"Ceuta\"\nmsgstr \"\"\n\n#: es/es_provinces.py:56\nmsgid \"Melilla\"\nmsgstr \"\"\n\n#: es/es_regions.py:5\nmsgid \"Andalusia\"\nmsgstr \"\"\n\n#: es/es_regions.py:6\nmsgid \"Aragon\"\nmsgstr \"\"\n\n#: es/es_regions.py:7\nmsgid \"Principality of Asturias\"\nmsgstr \"\"\n\n#: es/es_regions.py:8\nmsgid \"Balearic Islands\"\nmsgstr \"\"\n\n#: es/es_regions.py:9\nmsgid \"Basque Country\"\nmsgstr \"\"\n\n#: es/es_regions.py:10\nmsgid \"Canary Islands\"\nmsgstr \"\"\n\n#: es/es_regions.py:12\nmsgid \"Castile-La Mancha\"\nmsgstr \"\"\n\n#: es/es_regions.py:13\nmsgid \"Castile and Leon\"\nmsgstr \"\"\n\n#: es/es_regions.py:14\nmsgid \"Catalonia\"\nmsgstr \"\"\n\n#: es/es_regions.py:15\nmsgid \"Extremadura\"\nmsgstr \"\"\n\n#: es/es_regions.py:16\nmsgid \"Galicia\"\nmsgstr \"\"\n\n#: es/es_regions.py:19\nmsgid \"Region of Murcia\"\nmsgstr \"\"\n\n#: es/es_regions.py:20\nmsgid \"Foral Community of Navarre\"\nmsgstr \"\"\n\n#: es/es_regions.py:21\nmsgid \"Valencian Community\"\nmsgstr \"\"\n\n#: es/forms.py:26\nmsgid \"Enter a valid postal code in the range and format 01XXX - 52XXX.\"\nmsgstr \"\"\n\n#: es/forms.py:46\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or \"\n\"9XXXXXXXX.\"\nmsgstr \"\"\n\n#: es/forms.py:73\nmsgid \"Please enter a valid NIF, NIE, or CIF.\"\nmsgstr \"\"\n\n#: es/forms.py:74\nmsgid \"Please enter a valid NIF or NIE.\"\nmsgstr \"\"\n\n#: es/forms.py:75\nmsgid \"Invalid checksum for NIF.\"\nmsgstr \"\"\n\n#: es/forms.py:76\nmsgid \"Invalid checksum for NIE.\"\nmsgstr \"\"\n\n#: es/forms.py:77\nmsgid \"Invalid checksum for CIF.\"\nmsgstr \"\"\n\n#: es/forms.py:149\nmsgid \"\"\n\"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.\"\nmsgstr \"\"\n\n#: es/forms.py:150\nmsgid \"Invalid checksum for bank account number.\"\nmsgstr \"\"\n\n#: fi/forms.py:33\nmsgid \"Enter a valid Finnish social security number.\"\nmsgstr \"\"\n\n#: fr/forms.py:35\nmsgid \"Phone numbers must be in 0X XX XX XX XX format.\"\nmsgstr \"\"\n\n#: gb/forms.py:25\nmsgid \"Enter a valid postcode.\"\nmsgstr \"یک کد پستی وارد کنید.\"\n\n#: gb/gb_regions.py:11\nmsgid \"Bedfordshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:12\nmsgid \"Buckinghamshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:14\nmsgid \"Cheshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:15\nmsgid \"Cornwall and Isles of Scilly\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:16\nmsgid \"Cumbria\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:17\nmsgid \"Derbyshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:18\nmsgid \"Devon\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:19\nmsgid \"Dorset\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:20\nmsgid \"Durham\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:21\nmsgid \"East Sussex\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:22\nmsgid \"Essex\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:23\nmsgid \"Gloucestershire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:24\nmsgid \"Greater London\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:25\nmsgid \"Greater Manchester\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:26\nmsgid \"Hampshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:27\nmsgid \"Hertfordshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:28\nmsgid \"Kent\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:29\nmsgid \"Lancashire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:30\nmsgid \"Leicestershire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:31\nmsgid \"Lincolnshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:32\nmsgid \"Merseyside\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:33\nmsgid \"Norfolk\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:34\nmsgid \"North Yorkshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:35\nmsgid \"Northamptonshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:36\nmsgid \"Northumberland\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:37\nmsgid \"Nottinghamshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:38\nmsgid \"Oxfordshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:39\nmsgid \"Shropshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:40\nmsgid \"Somerset\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:41\nmsgid \"South Yorkshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:42\nmsgid \"Staffordshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:43\nmsgid \"Suffolk\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:44\nmsgid \"Surrey\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:45\nmsgid \"Tyne and Wear\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:46\nmsgid \"Warwickshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:47\nmsgid \"West Midlands\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:48\nmsgid \"West Sussex\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:49\nmsgid \"West Yorkshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:50\nmsgid \"Wiltshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:51\nmsgid \"Worcestershire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:55\nmsgid \"County Antrim\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:56\nmsgid \"County Armagh\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:57\nmsgid \"County Down\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:58\nmsgid \"County Fermanagh\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:59\nmsgid \"County Londonderry\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:60\nmsgid \"County Tyrone\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:64\nmsgid \"Clwyd\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:65\nmsgid \"Dyfed\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:66\nmsgid \"Gwent\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:67\nmsgid \"Gwynedd\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:68\nmsgid \"Mid Glamorgan\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:69\nmsgid \"Powys\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:70\nmsgid \"South Glamorgan\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:71\nmsgid \"West Glamorgan\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:75\nmsgid \"Borders\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:76\nmsgid \"Central Scotland\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:77\nmsgid \"Dumfries and Galloway\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:78\nmsgid \"Fife\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:79\nmsgid \"Grampian\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:80\nmsgid \"Highland\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:81\nmsgid \"Lothian\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:82\nmsgid \"Orkney Islands\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:83\nmsgid \"Shetland Islands\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:84\nmsgid \"Strathclyde\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:85\nmsgid \"Tayside\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:86\nmsgid \"Western Isles\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:90\nmsgid \"England\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:91\nmsgid \"Northern Ireland\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:92\nmsgid \"Scotland\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:93\nmsgid \"Wales\"\nmsgstr \"\"\n\n#: hk/forms.py:37\n#, python-format\nmsgid \"Phone number should not start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:40\n#, python-format\nmsgid \"Phone number must be in one of the following formats: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:42\n#, python-format\nmsgid \"Phone number should start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hr/forms.py:76\nmsgid \"Enter a valid 13 digit JMBG\"\nmsgstr \"\"\n\n#: hr/forms.py:77\nmsgid \"Error in date segment\"\nmsgstr \"\"\n\n#: hr/forms.py:123\nmsgid \"Enter a valid 11 digit OIB\"\nmsgstr \"\"\n\n#: hr/forms.py:152 id/forms.py:112\nmsgid \"Enter a valid vehicle license plate number\"\nmsgstr \"\"\n\n#: hr/forms.py:153\nmsgid \"Enter a valid location code\"\nmsgstr \"\"\n\n#: hr/forms.py:154\nmsgid \"Number part cannot be zero\"\nmsgstr \"\"\n\n#: hr/forms.py:190\nmsgid \"Enter a valid 5 digit postal code\"\nmsgstr \"\"\n\n#: hr/forms.py:218 id/forms.py:72 nl/forms.py:56\nmsgid \"Enter a valid phone number\"\nmsgstr \"یک شماره تلفن معتبر وارد کنید.\"\n\n#: hr/forms.py:219\nmsgid \"Enter a valid area or mobile network code\"\nmsgstr \"\"\n\n#: hr/forms.py:220\nmsgid \"The phone nubmer is too long\"\nmsgstr \"\"\n\n#: hr/forms.py:258\nmsgid \"Enter a valid 19 digit JMBAG starting with 601983\"\nmsgstr \"\"\n\n#: hr/forms.py:259\nmsgid \"Card issue number cannot be zero\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:14\nmsgid \"Grad Zagreb\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:15\nmsgid \"Bjelovarsko-bilogorska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:16\nmsgid \"Brodsko-posavska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:17\nmsgid \"Dubrovačko-neretvanska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:18\nmsgid \"Istarska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:19\nmsgid \"Karlovačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:20\nmsgid \"Koprivničko-križevačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:21\nmsgid \"Krapinsko-zagorska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:22\nmsgid \"Ličko-senjska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:23\nmsgid \"Međimurska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:24\nmsgid \"Osječko-baranjska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:25\nmsgid \"Požeško-slavonska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:26\nmsgid \"Primorsko-goranska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:27\nmsgid \"Sisačko-moslavačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:28\nmsgid \"Splitsko-dalmatinska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:29\nmsgid \"Šibensko-kninska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:30\nmsgid \"Varaždinska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:31\nmsgid \"Virovitičko-podravska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:32\nmsgid \"Vukovarsko-srijemska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:33\nmsgid \"Zadarska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:34\nmsgid \"Zagrebačka županija\"\nmsgstr \"\"\n\n#: id/forms.py:31\nmsgid \"Enter a valid post code\"\nmsgstr \"\"\n\n#: id/forms.py:176\nmsgid \"Enter a valid NIK/KTP number\"\nmsgstr \"\"\n\n#: id/id_choices.py:15\nmsgid \"Aceh\"\nmsgstr \"\"\n\n#: id/id_choices.py:16 id/id_choices.py:79\nmsgid \"Bali\"\nmsgstr \"\"\n\n#: id/id_choices.py:17 id/id_choices.py:51\nmsgid \"Banten\"\nmsgstr \"\"\n\n#: id/id_choices.py:18 id/id_choices.py:60\nmsgid \"Bengkulu\"\nmsgstr \"\"\n\n#: id/id_choices.py:19 id/id_choices.py:53\nmsgid \"Yogyakarta\"\nmsgstr \"\"\n\n#: id/id_choices.py:20 id/id_choices.py:57\nmsgid \"Jakarta\"\nmsgstr \"\"\n\n#: id/id_choices.py:21 id/id_choices.py:81\nmsgid \"Gorontalo\"\nmsgstr \"\"\n\n#: id/id_choices.py:22 id/id_choices.py:63\nmsgid \"Jambi\"\nmsgstr \"\"\n\n#: id/id_choices.py:23\nmsgid \"Jawa Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:24\nmsgid \"Jawa Tengah\"\nmsgstr \"\"\n\n#: id/id_choices.py:25\nmsgid \"Jawa Timur\"\nmsgstr \"\"\n\n#: id/id_choices.py:26 id/id_choices.py:94\nmsgid \"Kalimantan Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:27 id/id_choices.py:72\nmsgid \"Kalimantan Selatan\"\nmsgstr \"\"\n\n#: id/id_choices.py:28 id/id_choices.py:95\nmsgid \"Kalimantan Tengah\"\nmsgstr \"\"\n\n#: id/id_choices.py:29 id/id_choices.py:96\nmsgid \"Kalimantan Timur\"\nmsgstr \"\"\n\n#: id/id_choices.py:30\nmsgid \"Kepulauan Bangka-Belitung\"\nmsgstr \"\"\n\n#: id/id_choices.py:31 id/id_choices.py:68\nmsgid \"Kepulauan Riau\"\nmsgstr \"\"\n\n#: id/id_choices.py:32 id/id_choices.py:61\nmsgid \"Lampung\"\nmsgstr \"\"\n\n#: id/id_choices.py:33 id/id_choices.py:76\nmsgid \"Maluku\"\nmsgstr \"\"\n\n#: id/id_choices.py:34 id/id_choices.py:77\nmsgid \"Maluku Utara\"\nmsgstr \"\"\n\n#: id/id_choices.py:35\nmsgid \"Nusa Tenggara Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:36\nmsgid \"Nusa Tenggara Timur\"\nmsgstr \"\"\n\n#: id/id_choices.py:37\nmsgid \"Papua\"\nmsgstr \"\"\n\n#: id/id_choices.py:38\nmsgid \"Papua Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:39 id/id_choices.py:66\nmsgid \"Riau\"\nmsgstr \"\"\n\n#: id/id_choices.py:40 id/id_choices.py:74\nmsgid \"Sulawesi Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:41 id/id_choices.py:75\nmsgid \"Sulawesi Selatan\"\nmsgstr \"\"\n\n#: id/id_choices.py:42 id/id_choices.py:82\nmsgid \"Sulawesi Tengah\"\nmsgstr \"\"\n\n#: id/id_choices.py:43 id/id_choices.py:85\nmsgid \"Sulawesi Tenggara\"\nmsgstr \"\"\n\n#: id/id_choices.py:44\nmsgid \"Sulawesi Utara\"\nmsgstr \"\"\n\n#: id/id_choices.py:45 id/id_choices.py:58\nmsgid \"Sumatera Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:46 id/id_choices.py:62\nmsgid \"Sumatera Selatan\"\nmsgstr \"\"\n\n#: id/id_choices.py:47 id/id_choices.py:64\nmsgid \"Sumatera Utara\"\nmsgstr \"\"\n\n#: id/id_choices.py:52\nmsgid \"Magelang\"\nmsgstr \"\"\n\n#: id/id_choices.py:54\nmsgid \"Surakarta - Solo\"\nmsgstr \"\"\n\n#: id/id_choices.py:55\nmsgid \"Madiun\"\nmsgstr \"\"\n\n#: id/id_choices.py:56\nmsgid \"Kediri\"\nmsgstr \"\"\n\n#: id/id_choices.py:59\nmsgid \"Tapanuli\"\nmsgstr \"\"\n\n#: id/id_choices.py:65\nmsgid \"Nanggroe Aceh Darussalam\"\nmsgstr \"\"\n\n#: id/id_choices.py:67\nmsgid \"Kepulauan Bangka Belitung\"\nmsgstr \"\"\n\n#: id/id_choices.py:69\nmsgid \"Corps Consulate\"\nmsgstr \"\"\n\n#: id/id_choices.py:70\nmsgid \"Corps Diplomatic\"\nmsgstr \"\"\n\n#: id/id_choices.py:71\nmsgid \"Bandung\"\nmsgstr \"\"\n\n#: id/id_choices.py:73\nmsgid \"Sulawesi Utara Daratan\"\nmsgstr \"\"\n\n#: id/id_choices.py:78\nmsgid \"NTT - Timor\"\nmsgstr \"\"\n\n#: id/id_choices.py:80\nmsgid \"Sulawesi Utara Kepulauan\"\nmsgstr \"\"\n\n#: id/id_choices.py:83\nmsgid \"NTB - Lombok\"\nmsgstr \"\"\n\n#: id/id_choices.py:84\nmsgid \"Papua dan Papua Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:86\nmsgid \"Cirebon\"\nmsgstr \"\"\n\n#: id/id_choices.py:87\nmsgid \"NTB - Sumbawa\"\nmsgstr \"\"\n\n#: id/id_choices.py:88\nmsgid \"NTT - Flores\"\nmsgstr \"\"\n\n#: id/id_choices.py:89\nmsgid \"NTT - Sumba\"\nmsgstr \"\"\n\n#: id/id_choices.py:90\nmsgid \"Bogor\"\nmsgstr \"\"\n\n#: id/id_choices.py:91\nmsgid \"Pekalongan\"\nmsgstr \"\"\n\n#: id/id_choices.py:92\nmsgid \"Semarang\"\nmsgstr \"\"\n\n#: id/id_choices.py:93\nmsgid \"Pati\"\nmsgstr \"\"\n\n#: id/id_choices.py:97\nmsgid \"Surabaya\"\nmsgstr \"\"\n\n#: id/id_choices.py:98\nmsgid \"Madura\"\nmsgstr \"\"\n\n#: id/id_choices.py:99\nmsgid \"Malang\"\nmsgstr \"\"\n\n#: id/id_choices.py:100\nmsgid \"Jember\"\nmsgstr \"\"\n\n#: id/id_choices.py:101\nmsgid \"Banyumas\"\nmsgstr \"\"\n\n#: id/id_choices.py:102\nmsgid \"Federal Government\"\nmsgstr \"\"\n\n#: id/id_choices.py:103\nmsgid \"Bojonegoro\"\nmsgstr \"\"\n\n#: id/id_choices.py:104\nmsgid \"Purwakarta\"\nmsgstr \"\"\n\n#: id/id_choices.py:105\nmsgid \"Sidoarjo\"\nmsgstr \"\"\n\n#: id/id_choices.py:106\nmsgid \"Garut\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:8\nmsgid \"Antrim\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:9\nmsgid \"Armagh\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:10\nmsgid \"Carlow\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:11\nmsgid \"Cavan\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:12\nmsgid \"Clare\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:13\nmsgid \"Cork\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:14\nmsgid \"Derry\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:15\nmsgid \"Donegal\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:16\nmsgid \"Down\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:17\nmsgid \"Dublin\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:18\nmsgid \"Fermanagh\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:19\nmsgid \"Galway\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:20\nmsgid \"Kerry\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:21\nmsgid \"Kildare\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:22\nmsgid \"Kilkenny\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:23\nmsgid \"Laois\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:24\nmsgid \"Leitrim\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:25\nmsgid \"Limerick\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:26\nmsgid \"Longford\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:27\nmsgid \"Louth\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:28\nmsgid \"Mayo\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:29\nmsgid \"Meath\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:30\nmsgid \"Monaghan\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:31\nmsgid \"Offaly\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:32\nmsgid \"Roscommon\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:33\nmsgid \"Sligo\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:34\nmsgid \"Tipperary\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:35\nmsgid \"Tyrone\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:36\nmsgid \"Waterford\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:37\nmsgid \"Westmeath\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:38\nmsgid \"Wexford\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:39\nmsgid \"Wicklow\"\nmsgstr \"\"\n\n#: il/forms.py:32\nmsgid \"Enter a postal code in the format XXXXX\"\nmsgstr \"\"\n\n#: il/forms.py:51\nmsgid \"Enter a valid ID number.\"\nmsgstr \"\"\n\n#: in_/forms.py:41\nmsgid \"Enter a zip code in the format XXXXXX or XXX XXX.\"\nmsgstr \"\"\n\n#: in_/forms.py:64\nmsgid \"Enter an Indian state or territory.\"\nmsgstr \"\"\n\n#: in_/forms.py:103\nmsgid \"Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.\"\nmsgstr \"\"\n\n#: is_/forms.py:22\nmsgid \"\"\n\"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.\"\nmsgstr \"\"\n\n#: is_/forms.py:23\nmsgid \"The Icelandic identification number is not valid.\"\nmsgstr \"\"\n\n#: it/forms.py:21\nmsgid \"Enter a valid zip code.\"\nmsgstr \"\"\n\n#: it/forms.py:48\nmsgid \"Enter a valid Social Security number.\"\nmsgstr \"\"\n\n#: it/forms.py:73\nmsgid \"Enter a valid VAT number.\"\nmsgstr \"\"\n\n#: jp/forms.py:19\nmsgid \"Enter a postal code in the format XXXXXXX or XXX-XXXX.\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:4\nmsgid \"Hokkaido\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:5\nmsgid \"Aomori\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:6\nmsgid \"Iwate\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:7\nmsgid \"Miyagi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:8\nmsgid \"Akita\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:9\nmsgid \"Yamagata\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:10\nmsgid \"Fukushima\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:11\nmsgid \"Ibaraki\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:12\nmsgid \"Tochigi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:13\nmsgid \"Gunma\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:14\nmsgid \"Saitama\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:15\nmsgid \"Chiba\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:16\nmsgid \"Tokyo\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:17\nmsgid \"Kanagawa\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:18\nmsgid \"Yamanashi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:19\nmsgid \"Nagano\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:20\nmsgid \"Niigata\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:21\nmsgid \"Toyama\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:22\nmsgid \"Ishikawa\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:23\nmsgid \"Fukui\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:24\nmsgid \"Gifu\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:25\nmsgid \"Shizuoka\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:26\nmsgid \"Aichi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:27\nmsgid \"Mie\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:28\nmsgid \"Shiga\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:29\nmsgid \"Kyoto\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:30\nmsgid \"Osaka\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:31\nmsgid \"Hyogo\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:32\nmsgid \"Nara\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:33\nmsgid \"Wakayama\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:34\nmsgid \"Tottori\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:35\nmsgid \"Shimane\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:36\nmsgid \"Okayama\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:37\nmsgid \"Hiroshima\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:38\nmsgid \"Yamaguchi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:39\nmsgid \"Tokushima\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:40\nmsgid \"Kagawa\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:41\nmsgid \"Ehime\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:42\nmsgid \"Kochi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:43\nmsgid \"Fukuoka\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:44\nmsgid \"Saga\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:45\nmsgid \"Nagasaki\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:46\nmsgid \"Kumamoto\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:47\nmsgid \"Oita\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:48\nmsgid \"Miyazaki\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:49\nmsgid \"Kagoshima\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:50\nmsgid \"Okinawa\"\nmsgstr \"\"\n\n#: kw/forms.py:27\nmsgid \"Enter a valid Kuwaiti Civil ID number\"\nmsgstr \"\"\n\n#: mk/forms.py:18\nmsgid \"\"\n\"Identity card numbers must contain either 4 to 7 digits or an uppercase \"\n\"letter and 7 digits.\"\nmsgstr \"\"\n\n#: mk/forms.py:57 si/forms.py:24\nmsgid \"This field should contain exactly 13 digits.\"\nmsgstr \"\"\n\n#: mk/forms.py:58\nmsgid \"The first 7 digits of the UMCN must represent a valid past date.\"\nmsgstr \"\"\n\n#: mk/forms.py:59\nmsgid \"The UMCN is not valid.\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:10\nmsgid \"Aerodrom\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:11\nmsgid \"Aračinovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:12\nmsgid \"Berovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:13\nmsgid \"Bitola\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:14\nmsgid \"Bogdanci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:15\nmsgid \"Bogovinje\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:16\nmsgid \"Bosilovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:17\nmsgid \"Brvenica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:18\nmsgid \"Butel\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:19\nmsgid \"Valandovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:20\nmsgid \"Vasilevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:21\nmsgid \"Vevčani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:22\nmsgid \"Veles\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:23\nmsgid \"Vinica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:24\nmsgid \"Vraneštica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:25\nmsgid \"Vrapčište\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:26\nmsgid \"Gazi Baba\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:27\nmsgid \"Gevgelija\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:28\nmsgid \"Gostivar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:29\nmsgid \"Gradsko\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:30\nmsgid \"Debar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:31\nmsgid \"Debarca\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:32\nmsgid \"Delčevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:33\nmsgid \"Demir Kapija\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:34\nmsgid \"Demir Hisar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:35\nmsgid \"Dolneni\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:36\nmsgid \"Drugovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:37\nmsgid \"Gjorče Petrov\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:38\nmsgid \"Želino\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:39\nmsgid \"Zajas\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:40\nmsgid \"Zelenikovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:41\nmsgid \"Zrnovci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:42\nmsgid \"Ilinden\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:43\nmsgid \"Jegunovce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:44\nmsgid \"Kavadarci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:45\nmsgid \"Karbinci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:46\nmsgid \"Karpoš\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:47\nmsgid \"Kisela Voda\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:48\nmsgid \"Kičevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:49\nmsgid \"Konče\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:50\nmsgid \"Koćani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:51\nmsgid \"Kratovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:52\nmsgid \"Kriva Palanka\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:53\nmsgid \"Krivogaštani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:54\nmsgid \"Kruševo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:55\nmsgid \"Kumanovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:56\nmsgid \"Lipkovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:57\nmsgid \"Lozovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:58\nmsgid \"Mavrovo i Rostuša\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:59\nmsgid \"Makedonska Kamenica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:60\nmsgid \"Makedonski Brod\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:61\nmsgid \"Mogila\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:62\nmsgid \"Negotino\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:63\nmsgid \"Novaci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:64\nmsgid \"Novo Selo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:65\nmsgid \"Oslomej\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:66\nmsgid \"Ohrid\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:67\nmsgid \"Petrovec\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:68\nmsgid \"Pehčevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:69\nmsgid \"Plasnica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:70\nmsgid \"Prilep\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:71\nmsgid \"Probištip\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:72\nmsgid \"Radoviš\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:73\nmsgid \"Rankovce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:74\nmsgid \"Resen\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:75\nmsgid \"Rosoman\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:76\nmsgid \"Saraj\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:77\nmsgid \"Sveti Nikole\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:78\nmsgid \"Sopište\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:79\nmsgid \"Star Dojran\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:80\nmsgid \"Staro Nagoričane\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:81\nmsgid \"Struga\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:82\nmsgid \"Strumica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:83\nmsgid \"Studeničani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:84\nmsgid \"Tearce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:85\nmsgid \"Tetovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:86\nmsgid \"Centar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:87\nmsgid \"Centar-Župa\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:88\nmsgid \"Čair\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:89\nmsgid \"Čaška\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:90\nmsgid \"Češinovo-Obleševo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:91\nmsgid \"Čučer-Sandevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:92\nmsgid \"Štip\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:93\nmsgid \"Šuto Orizari\"\nmsgstr \"\"\n\n#: mk/models.py:11\nmsgid \"Macedonian identity card number\"\nmsgstr \"\"\n\n#: mk/models.py:25\nmsgid \"A Macedonian municipality (2 character code)\"\nmsgstr \"\"\n\n#: mk/models.py:35\nmsgid \"Unique master citizen number (13 digits)\"\nmsgstr \"\"\n\n#: mx/forms.py:67\nmsgid \"Enter a valid zip code in the format XXXXX.\"\nmsgstr \"\"\n\n#: mx/forms.py:110\nmsgid \"Enter a valid RFC.\"\nmsgstr \"\"\n\n#: mx/forms.py:111\nmsgid \"Invalid checksum for RFC.\"\nmsgstr \"\"\n\n#: mx/forms.py:191\nmsgid \"Enter a valid CURP.\"\nmsgstr \"\"\n\n#: mx/forms.py:192\nmsgid \"Invalid checksum for CURP.\"\nmsgstr \"\"\n\n#: mx/models.py:14\nmsgid \"Mexico state (three uppercase letters)\"\nmsgstr \"\"\n\n#: mx/models.py:27\nmsgid \"Mexico zip code\"\nmsgstr \"\"\n\n#: mx/models.py:44\nmsgid \"Mexican RFC\"\nmsgstr \"\"\n\n#: mx/models.py:61\nmsgid \"Mexican CURP\"\nmsgstr \"\"\n\n#: mx/mx_states.py:14\nmsgid \"Aguascalientes\"\nmsgstr \"\"\n\n#: mx/mx_states.py:15\nmsgid \"Baja California\"\nmsgstr \"\"\n\n#: mx/mx_states.py:16\nmsgid \"Baja California Sur\"\nmsgstr \"\"\n\n#: mx/mx_states.py:17\nmsgid \"Campeche\"\nmsgstr \"\"\n\n#: mx/mx_states.py:18\nmsgid \"Chihuahua\"\nmsgstr \"\"\n\n#: mx/mx_states.py:19\nmsgid \"Chiapas\"\nmsgstr \"\"\n\n#: mx/mx_states.py:20\nmsgid \"Coahuila\"\nmsgstr \"\"\n\n#: mx/mx_states.py:21\nmsgid \"Colima\"\nmsgstr \"\"\n\n#: mx/mx_states.py:22\nmsgid \"Distrito Federal\"\nmsgstr \"\"\n\n#: mx/mx_states.py:23\nmsgid \"Durango\"\nmsgstr \"\"\n\n#: mx/mx_states.py:24\nmsgid \"Guerrero\"\nmsgstr \"\"\n\n#: mx/mx_states.py:25\nmsgid \"Guanajuato\"\nmsgstr \"\"\n\n#: mx/mx_states.py:26\nmsgid \"Hidalgo\"\nmsgstr \"\"\n\n#: mx/mx_states.py:27\nmsgid \"Jalisco\"\nmsgstr \"\"\n\n#: mx/mx_states.py:28\nmsgid \"Estado de México\"\nmsgstr \"\"\n\n#: mx/mx_states.py:29\nmsgid \"Michoacán\"\nmsgstr \"\"\n\n#: mx/mx_states.py:30\nmsgid \"Morelos\"\nmsgstr \"\"\n\n#: mx/mx_states.py:31\nmsgid \"Nayarit\"\nmsgstr \"\"\n\n#: mx/mx_states.py:32\nmsgid \"Nuevo León\"\nmsgstr \"\"\n\n#: mx/mx_states.py:33\nmsgid \"Oaxaca\"\nmsgstr \"\"\n\n#: mx/mx_states.py:34\nmsgid \"Puebla\"\nmsgstr \"\"\n\n#: mx/mx_states.py:35\nmsgid \"Querétaro\"\nmsgstr \"\"\n\n#: mx/mx_states.py:36\nmsgid \"Quintana Roo\"\nmsgstr \"\"\n\n#: mx/mx_states.py:37\nmsgid \"Sinaloa\"\nmsgstr \"\"\n\n#: mx/mx_states.py:38\nmsgid \"San Luis Potosí\"\nmsgstr \"\"\n\n#: mx/mx_states.py:39\nmsgid \"Sonora\"\nmsgstr \"\"\n\n#: mx/mx_states.py:40\nmsgid \"Tabasco\"\nmsgstr \"\"\n\n#: mx/mx_states.py:41\nmsgid \"Tamaulipas\"\nmsgstr \"\"\n\n#: mx/mx_states.py:42\nmsgid \"Tlaxcala\"\nmsgstr \"\"\n\n#: mx/mx_states.py:43\nmsgid \"Veracruz\"\nmsgstr \"\"\n\n#: mx/mx_states.py:44\nmsgid \"Yucatán\"\nmsgstr \"\"\n\n#: mx/mx_states.py:45\nmsgid \"Zacatecas\"\nmsgstr \"\"\n\n#: nl/forms.py:26\nmsgid \"Enter a valid postal code\"\nmsgstr \"\"\n\n#: nl/forms.py:82\nmsgid \"Enter a valid SoFi number\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:4\nmsgid \"Drenthe\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:5\nmsgid \"Flevoland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:6\nmsgid \"Friesland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:7\nmsgid \"Gelderland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:8\nmsgid \"Groningen\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:10\nmsgid \"Noord-Brabant\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:11\nmsgid \"Noord-Holland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:12\nmsgid \"Overijssel\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:13\nmsgid \"Utrecht\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:14\nmsgid \"Zeeland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:15\nmsgid \"Zuid-Holland\"\nmsgstr \"\"\n\n#: no/forms.py:39\nmsgid \"Enter a valid Norwegian social security number.\"\nmsgstr \"\"\n\n#: pe/forms.py:28\nmsgid \"This field requires 8 digits.\"\nmsgstr \"این فیلد، ۸ رقم لازم دارد.\"\n\n#: pe/forms.py:56\nmsgid \"This field requires 11 digits.\"\nmsgstr \"این فیلد ۱۱ رقم لازم دارد.\"\n\n#: pl/forms.py:42\nmsgid \"National Identification Number consists of 11 digits.\"\nmsgstr \"\"\n\n#: pl/forms.py:43\nmsgid \"Wrong checksum for the National Identification Number.\"\nmsgstr \"\"\n\n#: pl/forms.py:79\nmsgid \"National ID Card Number consists of 3 letters and 6 digits.\"\nmsgstr \"\"\n\n#: pl/forms.py:80\nmsgid \"Wrong checksum for the National ID Card Number.\"\nmsgstr \"\"\n\n#: pl/forms.py:131\nmsgid \"\"\n\"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or \"\n\"XXXXXXXXXX.\"\nmsgstr \"\"\n\n#: pl/forms.py:132\nmsgid \"Wrong checksum for the Tax Number (NIP).\"\nmsgstr \"\"\n\n#: pl/forms.py:171\nmsgid \"National Business Register Number (REGON) consists of 9 or 14 digits.\"\nmsgstr \"\"\n\n#: pl/forms.py:172\nmsgid \"Wrong checksum for the National Business Register Number (REGON).\"\nmsgstr \"\"\n\n#: pl/forms.py:212\nmsgid \"Enter a postal code in the format XX-XXX.\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:8\nmsgid \"Lower Silesia\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:9\nmsgid \"Kuyavia-Pomerania\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:10\nmsgid \"Lublin\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:11\nmsgid \"Lubusz\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:12\nmsgid \"Lodz\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:13\nmsgid \"Lesser Poland\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:14\nmsgid \"Masovia\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:15\nmsgid \"Opole\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:16\nmsgid \"Subcarpatia\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:17\nmsgid \"Podlasie\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:18\nmsgid \"Pomerania\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:19\nmsgid \"Silesia\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:20\nmsgid \"Swietokrzyskie\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:21\nmsgid \"Warmia-Masuria\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:22\nmsgid \"Greater Poland\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:23\nmsgid \"West Pomerania\"\nmsgstr \"\"\n\n#: pt/forms.py:19\nmsgid \"Enter a zip code in the format XXXX-XXX.\"\nmsgstr \"\"\n\n#: pt/forms.py:39\nmsgid \"Phone numbers must have 9 digits, or start by + or 00.\"\nmsgstr \"\"\n\n#: ro/forms.py:22\nmsgid \"Enter a valid CIF.\"\nmsgstr \"\"\n\n#: ro/forms.py:59\nmsgid \"Enter a valid CNP.\"\nmsgstr \"\"\n\n#: ro/forms.py:143\nmsgid \"Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format\"\nmsgstr \"\"\n\n#: ro/forms.py:175\nmsgid \"Phone numbers must be in XXXX-XXXXXX format.\"\nmsgstr \"\"\n\n#: ro/forms.py:200\nmsgid \"Enter a valid postal code in the format XXXXXX\"\nmsgstr \"\"\n\n#: ru/forms.py:37\nmsgid \"Enter a postal code in the format XXXXXX.\"\nmsgstr \"\"\n\n#: ru/forms.py:50\nmsgid \"Enter a passport number in the format XXXX XXXXXX.\"\nmsgstr \"\"\n\n#: ru/forms.py:63\nmsgid \"Enter a passport number in the format XX XXXXXXX.\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:10\nmsgid \"Central Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:11\nmsgid \"South Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:12\nmsgid \"North-West Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:13\nmsgid \"Far-East Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:14\nmsgid \"Siberian Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:15\nmsgid \"Ural Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:16\nmsgid \"Privolzhsky Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:17\nmsgid \"North-Caucasian Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:21\nmsgid \"Moskva\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:22\nmsgid \"Saint-Peterburg\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:23\nmsgid \"Moskovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:24\nmsgid \"Adygeya, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:25\nmsgid \"Bashkortostan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:26\nmsgid \"Buryatia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:27\nmsgid \"Altay, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:28\nmsgid \"Dagestan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:29\nmsgid \"Ingushskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:30\nmsgid \"Kabardino-Balkarskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:31\nmsgid \"Kalmykia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:32\nmsgid \"Karachaevo-Cherkesskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:33\nmsgid \"Karelia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:34\nmsgid \"Komi, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:35\nmsgid \"Mariy Ehl, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:36\nmsgid \"Mordovia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:37\nmsgid \"Sakha, Respublika (Yakutiya)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:38\nmsgid \"Severnaya Osetia, Respublika (Alania)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:39\nmsgid \"Tatarstan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:40\nmsgid \"Tyva, Respublika (Tuva)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:41\nmsgid \"Udmurtskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:42\nmsgid \"Khakassiya, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:43\nmsgid \"Chechenskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:44\nmsgid \"Chuvashskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:45\nmsgid \"Altayskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:46\nmsgid \"Zabaykalskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:47\nmsgid \"Kamchatskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:48\nmsgid \"Krasnodarskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:49\nmsgid \"Krasnoyarskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:50\nmsgid \"Permskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:51\nmsgid \"Primorskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:52\nmsgid \"Stavropol'siyy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:53\nmsgid \"Khabarovskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:54\nmsgid \"Amurskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:55\nmsgid \"Arkhangel'skaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:56\nmsgid \"Astrakhanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:57\nmsgid \"Belgorodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:58\nmsgid \"Bryanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:59\nmsgid \"Vladimirskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:60\nmsgid \"Volgogradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:61\nmsgid \"Vologodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:62\nmsgid \"Voronezhskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:63\nmsgid \"Ivanovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:64\nmsgid \"Irkutskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:65\nmsgid \"Kaliningradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:66\nmsgid \"Kaluzhskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:67\nmsgid \"Kemerovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:68\nmsgid \"Kirovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:69\nmsgid \"Kostromskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:70\nmsgid \"Kurganskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:71\nmsgid \"Kurskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:72\nmsgid \"Leningradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:73\nmsgid \"Lipeckaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:74\nmsgid \"Magadanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:75\nmsgid \"Murmanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:76\nmsgid \"Nizhegorodskaja oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:77\nmsgid \"Novgorodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:78\nmsgid \"Novosibirskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:79\nmsgid \"Omskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:80\nmsgid \"Orenburgskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:81\nmsgid \"Orlovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:82\nmsgid \"Penzenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:83\nmsgid \"Pskovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:84\nmsgid \"Rostovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:85\nmsgid \"Rjazanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:86\nmsgid \"Samarskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:87\nmsgid \"Saratovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:88\nmsgid \"Sakhalinskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:89\nmsgid \"Sverdlovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:90\nmsgid \"Smolenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:91\nmsgid \"Tambovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:92\nmsgid \"Tverskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:93\nmsgid \"Tomskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:94\nmsgid \"Tul'skaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:95\nmsgid \"Tyumenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:96\nmsgid \"Ul'ianovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:97\nmsgid \"Chelyabinskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:98\nmsgid \"Yaroslavskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:99\nmsgid \"Evreyskaya avtonomnaja oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:100\nmsgid \"Neneckiy autonomnyy okrug\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:101\nmsgid \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:102\nmsgid \"Chukotskiy avtonomnyy okrug\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:103\nmsgid \"Yamalo-Neneckiy avtonomnyy okrug\"\nmsgstr \"\"\n\n#: se/forms.py:54\nmsgid \"Enter a valid Swedish organisation number.\"\nmsgstr \"\"\n\n#: se/forms.py:111\nmsgid \"Enter a valid Swedish personal identity number.\"\nmsgstr \"\"\n\n#: se/forms.py:112\nmsgid \"Co-ordination numbers are not allowed.\"\nmsgstr \"\"\n\n#: se/forms.py:154\nmsgid \"Enter a Swedish postal code in the format XXXXX.\"\nmsgstr \"\"\n\n#: se/se_counties.py:16\nmsgid \"Stockholm\"\nmsgstr \"\"\n\n#: se/se_counties.py:17\nmsgid \"Västerbotten\"\nmsgstr \"\"\n\n#: se/se_counties.py:18\nmsgid \"Norrbotten\"\nmsgstr \"\"\n\n#: se/se_counties.py:19\nmsgid \"Uppsala\"\nmsgstr \"\"\n\n#: se/se_counties.py:20\nmsgid \"Södermanland\"\nmsgstr \"\"\n\n#: se/se_counties.py:21\nmsgid \"Östergötland\"\nmsgstr \"\"\n\n#: se/se_counties.py:22\nmsgid \"Jönköping\"\nmsgstr \"\"\n\n#: se/se_counties.py:23\nmsgid \"Kronoberg\"\nmsgstr \"\"\n\n#: se/se_counties.py:24\nmsgid \"Kalmar\"\nmsgstr \"\"\n\n#: se/se_counties.py:25\nmsgid \"Gotland\"\nmsgstr \"\"\n\n#: se/se_counties.py:26\nmsgid \"Blekinge\"\nmsgstr \"\"\n\n#: se/se_counties.py:27\nmsgid \"Skåne\"\nmsgstr \"\"\n\n#: se/se_counties.py:28\nmsgid \"Halland\"\nmsgstr \"\"\n\n#: se/se_counties.py:29\nmsgid \"Västra Götaland\"\nmsgstr \"\"\n\n#: se/se_counties.py:30\nmsgid \"Värmland\"\nmsgstr \"\"\n\n#: se/se_counties.py:31\nmsgid \"Örebro\"\nmsgstr \"\"\n\n#: se/se_counties.py:32\nmsgid \"Västmanland\"\nmsgstr \"\"\n\n#: se/se_counties.py:33\nmsgid \"Dalarna\"\nmsgstr \"\"\n\n#: se/se_counties.py:34\nmsgid \"Gävleborg\"\nmsgstr \"\"\n\n#: se/se_counties.py:35\nmsgid \"Västernorrland\"\nmsgstr \"\"\n\n#: se/se_counties.py:36\nmsgid \"Jämtland\"\nmsgstr \"\"\n\n#: si/forms.py:25\nmsgid \"The first 7 digits of the EMSO must represent a valid past date.\"\nmsgstr \"\"\n\n#: si/forms.py:26\nmsgid \"The EMSO is not valid.\"\nmsgstr \"\"\n\n#: si/forms.py:86\nmsgid \"Enter a valid tax number in form SIXXXXXXXX\"\nmsgstr \"\"\n\n#: si/forms.py:151\nmsgid \"Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:8\nmsgid \"Banska Bystrica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:9\nmsgid \"Banska Stiavnica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:10\nmsgid \"Bardejov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:11\nmsgid \"Banovce nad Bebravou\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:12\nmsgid \"Brezno\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:13\nmsgid \"Bratislava I\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:14\nmsgid \"Bratislava II\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:15\nmsgid \"Bratislava III\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:16\nmsgid \"Bratislava IV\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:17\nmsgid \"Bratislava V\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:18\nmsgid \"Bytca\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:19\nmsgid \"Cadca\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:20\nmsgid \"Detva\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:21\nmsgid \"Dolny Kubin\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:22\nmsgid \"Dunajska Streda\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:23\nmsgid \"Galanta\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:24\nmsgid \"Gelnica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:25\nmsgid \"Hlohovec\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:26\nmsgid \"Humenne\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:27\nmsgid \"Ilava\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:28\nmsgid \"Kezmarok\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:29\nmsgid \"Komarno\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:30\nmsgid \"Kosice I\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:31\nmsgid \"Kosice II\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:32\nmsgid \"Kosice III\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:33\nmsgid \"Kosice IV\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:34\nmsgid \"Kosice - okolie\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:35\nmsgid \"Krupina\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:36\nmsgid \"Kysucke Nove Mesto\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:37\nmsgid \"Levice\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:38\nmsgid \"Levoca\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:39\nmsgid \"Liptovsky Mikulas\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:40\nmsgid \"Lucenec\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:41\nmsgid \"Malacky\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:42\nmsgid \"Martin\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:43\nmsgid \"Medzilaborce\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:44\nmsgid \"Michalovce\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:45\nmsgid \"Myjava\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:46\nmsgid \"Namestovo\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:47\nmsgid \"Nitra\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:48\nmsgid \"Nove Mesto nad Vahom\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:49\nmsgid \"Nove Zamky\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:50\nmsgid \"Partizanske\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:51\nmsgid \"Pezinok\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:52\nmsgid \"Piestany\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:53\nmsgid \"Poltar\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:54\nmsgid \"Poprad\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:55\nmsgid \"Povazska Bystrica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:56\nmsgid \"Presov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:57\nmsgid \"Prievidza\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:58\nmsgid \"Puchov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:59\nmsgid \"Revuca\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:60\nmsgid \"Rimavska Sobota\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:61\nmsgid \"Roznava\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:62\nmsgid \"Ruzomberok\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:63\nmsgid \"Sabinov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:64\nmsgid \"Senec\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:65\nmsgid \"Senica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:66\nmsgid \"Skalica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:67\nmsgid \"Snina\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:68\nmsgid \"Sobrance\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:69\nmsgid \"Spisska Nova Ves\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:70\nmsgid \"Stara Lubovna\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:71\nmsgid \"Stropkov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:72\nmsgid \"Svidnik\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:73\nmsgid \"Sala\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:74\nmsgid \"Topolcany\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:75\nmsgid \"Trebisov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:76\nmsgid \"Trencin\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:77\nmsgid \"Trnava\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:78\nmsgid \"Turcianske Teplice\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:79\nmsgid \"Tvrdosin\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:80\nmsgid \"Velky Krtis\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:81\nmsgid \"Vranov nad Toplou\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:82\nmsgid \"Zlate Moravce\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:83\nmsgid \"Zvolen\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:84\nmsgid \"Zarnovica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:85\nmsgid \"Ziar nad Hronom\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:86\nmsgid \"Zilina\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:8\nmsgid \"Banska Bystrica region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:9\nmsgid \"Bratislava region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:10\nmsgid \"Kosice region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:11\nmsgid \"Nitra region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:12\nmsgid \"Presov region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:13\nmsgid \"Trencin region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:14\nmsgid \"Trnava region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:15\nmsgid \"Zilina region\"\nmsgstr \"\"\n\n#: tr/forms.py:21\nmsgid \"Enter a postal code in the format XXXXX.\"\nmsgstr \"\"\n\n#: tr/forms.py:42\nmsgid \"Phone numbers must be in 0XXX XXX XXXX format.\"\nmsgstr \"\"\n\n#: tr/forms.py:69\nmsgid \"Enter a valid Turkish Identification number.\"\nmsgstr \"\"\n\n#: tr/forms.py:70\nmsgid \"Turkish Identification number must be 11 digits.\"\nmsgstr \"\"\n\n#: us/forms.py:21\nmsgid \"Enter a zip code in the format XXXXX or XXXXX-XXXX.\"\nmsgstr \"\"\n\n#: us/forms.py:59\nmsgid \"Enter a valid U.S. Social Security number in XXX-XX-XXXX format.\"\nmsgstr \"\"\n\n#: us/forms.py:92\nmsgid \"Enter a U.S. state or territory.\"\nmsgstr \"\"\n\n#: us/models.py:8\nmsgid \"U.S. state (two uppercase letters)\"\nmsgstr \"ایالت آمریکا(دو حرف بزرگ)\"\n\n#: us/models.py:17\nmsgid \"U.S. postal code (two uppercase letters)\"\nmsgstr \"\"\n\n#: us/models.py:26\nmsgid \"Phone number\"\nmsgstr \"شماره تلفن\"\n\n#: uy/forms.py:29\nmsgid \"Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.\"\nmsgstr \"\"\n\n#: uy/forms.py:31\nmsgid \"Enter a valid CI number.\"\nmsgstr \"\"\n\n#: za/forms.py:22\nmsgid \"Enter a valid South African ID number\"\nmsgstr \"\"\n\n#: za/forms.py:56\nmsgid \"Enter a valid South African postal code\"\nmsgstr \"\"\n\n#: za/za_provinces.py:4\nmsgid \"Eastern Cape\"\nmsgstr \"\"\n\n#: za/za_provinces.py:5\nmsgid \"Free State\"\nmsgstr \"\"\n\n#: za/za_provinces.py:6\nmsgid \"Gauteng\"\nmsgstr \"\"\n\n#: za/za_provinces.py:7\nmsgid \"KwaZulu-Natal\"\nmsgstr \"\"\n\n#: za/za_provinces.py:8\nmsgid \"Limpopo\"\nmsgstr \"\"\n\n#: za/za_provinces.py:9\nmsgid \"Mpumalanga\"\nmsgstr \"\"\n\n#: za/za_provinces.py:10\nmsgid \"Northern Cape\"\nmsgstr \"\"\n\n#: za/za_provinces.py:11\nmsgid \"North West\"\nmsgstr \"\"\n\n#: za/za_provinces.py:12\nmsgid \"Western Cape\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/locale/fi/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Antti Kaihola <akaihol+transifex@ambitone.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-10-17 09:16+0000\\n\"\n\"Last-Translator: Antti Kaihola <akaihol+transifex@ambitone.com>\\n\"\n\"Language-Team: Finnish (http://www.transifex.com/projects/p/django/language/\"\n\"fi/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: fi\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: ar/forms.py:30\nmsgid \"Enter a postal code in the format NNNN or ANNNNAAA.\"\nmsgstr \"Syötä postinumero muodossa NNNN tai ANNNNAAA.\"\n\n#: ar/forms.py:52 br/forms.py:95 br/forms.py:134 pe/forms.py:27 pe/forms.py:55\nmsgid \"This field requires only numbers.\"\nmsgstr \"Tähän kenttään kelpaavat vain numerot.\"\n\n#: ar/forms.py:53\nmsgid \"This field requires 7 or 8 digits.\"\nmsgstr \"Tähän kenttään vaaditaan 7 tai 8 numeroa.\"\n\n#: ar/forms.py:82\nmsgid \"Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.\"\nmsgstr \"Syötä oikea CUIT joko XX-XXXXXXXX-X tai XXXXXXXXXXXX -muodossa.\"\n\n#: ar/forms.py:83\nmsgid \"Invalid CUIT.\"\nmsgstr \"Virheellinen CUIT.\"\n\n#: ar/forms.py:84\nmsgid \"Invalid legal type. Type must be 27, 20, 23 or 30.\"\nmsgstr \"\"\n\n#: at/at_states.py:5\nmsgid \"Burgenland\"\nmsgstr \"Burgenland\"\n\n#: at/at_states.py:6\nmsgid \"Carinthia\"\nmsgstr \"Kärnten\"\n\n#: at/at_states.py:7\nmsgid \"Lower Austria\"\nmsgstr \"Ala-Itävalta\"\n\n#: at/at_states.py:8\nmsgid \"Upper Austria\"\nmsgstr \"Ylä-Itävalta\"\n\n#: at/at_states.py:9\nmsgid \"Salzburg\"\nmsgstr \"Salzburg\"\n\n#: at/at_states.py:10\nmsgid \"Styria\"\nmsgstr \"Steiermark\"\n\n#: at/at_states.py:11\nmsgid \"Tyrol\"\nmsgstr \"Tiroli\"\n\n#: at/at_states.py:12\nmsgid \"Vorarlberg\"\nmsgstr \"Vorarlberg\"\n\n#: at/at_states.py:13\nmsgid \"Vienna\"\nmsgstr \"Wien\"\n\n#: at/forms.py:22 ch/forms.py:22 no/forms.py:19\nmsgid \"Enter a zip code in the format XXXX.\"\nmsgstr \"Syötä postinumero muodossa XXXX.\"\n\n#: at/forms.py:50\nmsgid \"Enter a valid Austrian Social Security Number in XXXX XXXXXX format.\"\nmsgstr \"Syötä oikea itävaltalainen henkilötunnus muodossa XXXX XXXXXX.\"\n\n#: au/forms.py:26\nmsgid \"Enter a 4 digit postcode.\"\nmsgstr \"Anna nelinumeroinen postinumero.\"\n\n#: au/models.py:9\nmsgid \"Australian State\"\nmsgstr \"Australian osavaltio\"\n\n#: au/models.py:19\nmsgid \"Australian Postcode\"\nmsgstr \"australialainen postinumero\"\n\n#: au/models.py:33\nmsgid \"Australian Phone number\"\nmsgstr \"australialainen puhelinnumero\"\n\n#: be/be_provinces.py:5\nmsgid \"Antwerp\"\nmsgstr \"Antwerpen\"\n\n#: be/be_provinces.py:6\nmsgid \"Brussels\"\nmsgstr \"Bryssel\"\n\n#: be/be_provinces.py:7\nmsgid \"East Flanders\"\nmsgstr \"Itä-Flanderi\"\n\n#: be/be_provinces.py:8\nmsgid \"Flemish Brabant\"\nmsgstr \"Flaamilainen Brabant\"\n\n#: be/be_provinces.py:9\nmsgid \"Hainaut\"\nmsgstr \"Hainaut\"\n\n#: be/be_provinces.py:10\nmsgid \"Liege\"\nmsgstr \"Liege\"\n\n#: be/be_provinces.py:11 nl/nl_provinces.py:9\nmsgid \"Limburg\"\nmsgstr \"Limburg\"\n\n#: be/be_provinces.py:12\nmsgid \"Luxembourg\"\nmsgstr \"Luxemburg\"\n\n#: be/be_provinces.py:13\nmsgid \"Namur\"\nmsgstr \"Namur\"\n\n#: be/be_provinces.py:14\nmsgid \"Walloon Brabant\"\nmsgstr \"Vallonian Brabant\"\n\n#: be/be_provinces.py:15\nmsgid \"West Flanders\"\nmsgstr \"Länsi-Flanderi\"\n\n#: be/be_regions.py:5\nmsgid \"Brussels Capital Region\"\nmsgstr \"Brysselin metropolialue\"\n\n#: be/be_regions.py:6\nmsgid \"Flemish Region\"\nmsgstr \"flaamilainen alue\"\n\n#: be/be_regions.py:7\nmsgid \"Wallonia\"\nmsgstr \"Vallonia\"\n\n#: be/forms.py:25\nmsgid \"Enter a valid postal code in the range and format 1XXX - 9XXX.\"\nmsgstr \"Syötä postinumero muodossa ja välillä 1XXX–9XXX.\"\n\n#: be/forms.py:48\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\nmsgstr \"\"\n\"Syötä puhelinnumero muodossa 0x xxx xx xx, 0xx xx xx xx, 04xx xx xx xx, 0x/\"\n\"xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.xx.xx.xx, 04xx.xx.\"\n\"xx.xx, 0xxxxxxxx tai 04xxxxxxxx.\"\n\n#: br/forms.py:22\nmsgid \"Enter a zip code in the format XXXXX-XXX.\"\nmsgstr \"Syötä postinumero muodossa XXXXX-XXX.\"\n\n#: br/forms.py:31\nmsgid \"Phone numbers must be in XX-XXXX-XXXX format.\"\nmsgstr \"Puhelinnumeron tulee olla muodossa XX-XXXX-XXXX.\"\n\n#: br/forms.py:58\nmsgid \"\"\n\"Select a valid brazilian state. That state is not one of the available \"\n\"states.\"\nmsgstr \"\"\n\"Valitse oikea brasilialainen osavaltio. Valitsemasi osavaltio ei ole yksi \"\n\"sallituista osavaltiosta.\"\n\n#: br/forms.py:93\nmsgid \"Invalid CPF number.\"\nmsgstr \"Virheellinen CPF-numero.\"\n\n#: br/forms.py:94\nmsgid \"This field requires at most 11 digits or 14 characters.\"\nmsgstr \"Tämä kenttä vaatii vähintään 11 ja enintään 14 merkkiä.\"\n\n#: br/forms.py:133\nmsgid \"Invalid CNPJ number.\"\nmsgstr \"Virheellinen CNPJ-numero.\"\n\n#: br/forms.py:135\nmsgid \"This field requires at least 14 digits\"\nmsgstr \"Tähän kenttään vaaditaan ainakin 14 numeroa.\"\n\n#: ca/forms.py:29\nmsgid \"Enter a postal code in the format XXX XXX.\"\nmsgstr \"Syötä postinumero muodossa XXX XXX.\"\n\n#: ca/forms.py:47 us/forms.py:30\nmsgid \"Phone numbers must be in XXX-XXX-XXXX format.\"\nmsgstr \"Phone numbers must be in XXX-XXX-XXXX format.\"\n\n#: ca/forms.py:69\nmsgid \"Enter a Canadian province or territory.\"\nmsgstr \"\"\n\n#: ca/forms.py:110\nmsgid \"Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.\"\nmsgstr \"Syötä oikea kanadalainen henkilötunnus muodossa XXX-XXX-XXX.\"\n\n#: ch/ch_states.py:5\nmsgid \"Aargau\"\nmsgstr \"Aargau\"\n\n#: ch/ch_states.py:6\nmsgid \"Appenzell Innerrhoden\"\nmsgstr \"Appenzell Innerrhoden\"\n\n#: ch/ch_states.py:7\nmsgid \"Appenzell Ausserrhoden\"\nmsgstr \"Appenzell Ausserrhoden\"\n\n#: ch/ch_states.py:8\nmsgid \"Basel-Stadt\"\nmsgstr \"Basel-Stadt\"\n\n#: ch/ch_states.py:9\nmsgid \"Basel-Land\"\nmsgstr \"Basel-Land\"\n\n#: ch/ch_states.py:10\nmsgid \"Berne\"\nmsgstr \"Berne\"\n\n#: ch/ch_states.py:11\nmsgid \"Fribourg\"\nmsgstr \"Fribourg\"\n\n#: ch/ch_states.py:12\nmsgid \"Geneva\"\nmsgstr \"Geneva\"\n\n#: ch/ch_states.py:13\nmsgid \"Glarus\"\nmsgstr \"Glarus\"\n\n#: ch/ch_states.py:14\nmsgid \"Graubuenden\"\nmsgstr \"Graubuenden\"\n\n#: ch/ch_states.py:15\nmsgid \"Jura\"\nmsgstr \"Jura\"\n\n#: ch/ch_states.py:16\nmsgid \"Lucerne\"\nmsgstr \"Lucerne\"\n\n#: ch/ch_states.py:17\nmsgid \"Neuchatel\"\nmsgstr \"Neuchatel\"\n\n#: ch/ch_states.py:18\nmsgid \"Nidwalden\"\nmsgstr \"Nidwalden\"\n\n#: ch/ch_states.py:19\nmsgid \"Obwalden\"\nmsgstr \"Obwalden\"\n\n#: ch/ch_states.py:20\nmsgid \"Schaffhausen\"\nmsgstr \"Schaffhausen\"\n\n#: ch/ch_states.py:21\nmsgid \"Schwyz\"\nmsgstr \"Schwyz\"\n\n#: ch/ch_states.py:22\nmsgid \"Solothurn\"\nmsgstr \"Solothurn\"\n\n#: ch/ch_states.py:23\nmsgid \"St. Gallen\"\nmsgstr \"St. Gallen\"\n\n#: ch/ch_states.py:24\nmsgid \"Thurgau\"\nmsgstr \"Thurgau\"\n\n#: ch/ch_states.py:25\nmsgid \"Ticino\"\nmsgstr \"Ticino\"\n\n#: ch/ch_states.py:26\nmsgid \"Uri\"\nmsgstr \"Uri\"\n\n#: ch/ch_states.py:27\nmsgid \"Valais\"\nmsgstr \"Valais\"\n\n#: ch/ch_states.py:28\nmsgid \"Vaud\"\nmsgstr \"Vaud\"\n\n#: ch/ch_states.py:29\nmsgid \"Zug\"\nmsgstr \"Zug\"\n\n#: ch/ch_states.py:30\nmsgid \"Zurich\"\nmsgstr \"Zurich\"\n\n#: ch/forms.py:37\nmsgid \"Phone numbers must be in 0XX XXX XX XX format.\"\nmsgstr \"\"\n\n#: ch/forms.py:68\nmsgid \"\"\n\"Enter a valid Swiss identity or passport card number in X1234567<0 or \"\n\"1234567890 format.\"\nmsgstr \"\"\n\"Enter a valid Swiss identity or passport card number in X1234567<0 or \"\n\"1234567890 format.\"\n\n#: cl/forms.py:32\nmsgid \"Enter a valid Chilean RUT.\"\nmsgstr \"Syötä oikea chileläinen RUT\"\n\n#: cl/forms.py:33\nmsgid \"Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.\"\nmsgstr \"Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.\"\n\n#: cl/forms.py:34\nmsgid \"The Chilean RUT is not valid.\"\nmsgstr \"The Chilean RUT is not valid.\"\n\n#: cn/forms.py:84\nmsgid \"Enter a post code in the format XXXXXX.\"\nmsgstr \"Syötä postinumero muodossa XXXXXX.\"\n\n#: cn/forms.py:105\nmsgid \"ID Card Number consists of 15 or 18 digits.\"\nmsgstr \"Henkilökortin tunnisteessa on 15 tai 18 numeroa.\"\n\n#: cn/forms.py:106\nmsgid \"Invalid ID Card Number: Wrong checksum\"\nmsgstr \"Virheellinen henkilökortin numero: väärä tarkistussumma\"\n\n#: cn/forms.py:107\nmsgid \"Invalid ID Card Number: Wrong birthdate\"\nmsgstr \"Virheellinen henkilökortin numero: virheellinen syntymäaika\"\n\n#: cn/forms.py:108\nmsgid \"Invalid ID Card Number: Wrong location code\"\nmsgstr \"Virheellinen henkilökortin numero: virheellinen sijaintikoodi\"\n\n#: cn/forms.py:193\nmsgid \"Enter a valid phone number.\"\nmsgstr \"Anna voimassa oleva puhelinnumero.\"\n\n#: cn/forms.py:210\nmsgid \"Enter a valid cell number.\"\nmsgstr \"Anna voimassa oleva matkapuhelinnumero.\"\n\n#: cz/cz_regions.py:8\nmsgid \"Prague\"\nmsgstr \"Praha\"\n\n#: cz/cz_regions.py:9\nmsgid \"Central Bohemian Region\"\nmsgstr \"Central Bohemian Region\"\n\n#: cz/cz_regions.py:10\nmsgid \"South Bohemian Region\"\nmsgstr \"South Bohemian Region\"\n\n#: cz/cz_regions.py:11\nmsgid \"Pilsen Region\"\nmsgstr \"Pilsen Region\"\n\n#: cz/cz_regions.py:12\nmsgid \"Carlsbad Region\"\nmsgstr \"Carlsbad Region\"\n\n#: cz/cz_regions.py:13\nmsgid \"Usti Region\"\nmsgstr \"Usti Region\"\n\n#: cz/cz_regions.py:14\nmsgid \"Liberec Region\"\nmsgstr \"Liberec Region\"\n\n#: cz/cz_regions.py:15\nmsgid \"Hradec Region\"\nmsgstr \"Hradec Region\"\n\n#: cz/cz_regions.py:16\nmsgid \"Pardubice Region\"\nmsgstr \"Pardubice Region\"\n\n#: cz/cz_regions.py:17\nmsgid \"Vysocina Region\"\nmsgstr \"Vysocina Region\"\n\n#: cz/cz_regions.py:18\nmsgid \"South Moravian Region\"\nmsgstr \"South Moravian Region\"\n\n#: cz/cz_regions.py:19\nmsgid \"Olomouc Region\"\nmsgstr \"Olomouc Region\"\n\n#: cz/cz_regions.py:20\nmsgid \"Zlin Region\"\nmsgstr \"Zilin region\"\n\n#: cz/cz_regions.py:21\nmsgid \"Moravian-Silesian Region\"\nmsgstr \"Moravian-Silesian Region\"\n\n#: cz/forms.py:32 sk/forms.py:33\nmsgid \"Enter a postal code in the format XXXXX or XXX XX.\"\nmsgstr \"Syötä postinumero muodossa XXXXX tai XXX XX.\"\n\n#: cz/forms.py:52\nmsgid \"Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.\"\nmsgstr \"Syötä henkilötunnus muodossa XXXXXX/XXXX tai XXXXXXXXXX.\"\n\n#: cz/forms.py:53\nmsgid \"Enter a valid birth number.\"\nmsgstr \"Syötä oikea henkilötunnus.\"\n\n#: cz/forms.py:102\nmsgid \"Enter a valid IC number.\"\nmsgstr \"Syötä oikea IC-tunnus.\"\n\n#: de/de_states.py:5\nmsgid \"Baden-Wuerttemberg\"\nmsgstr \"Baden-Wuerttemberg\"\n\n#: de/de_states.py:6\nmsgid \"Bavaria\"\nmsgstr \"Bavaria\"\n\n#: de/de_states.py:7\nmsgid \"Berlin\"\nmsgstr \"Berlin\"\n\n#: de/de_states.py:8\nmsgid \"Brandenburg\"\nmsgstr \"Brandenburg\"\n\n#: de/de_states.py:9\nmsgid \"Bremen\"\nmsgstr \"Bremen\"\n\n#: de/de_states.py:10\nmsgid \"Hamburg\"\nmsgstr \"Hamburg\"\n\n#: de/de_states.py:11\nmsgid \"Hessen\"\nmsgstr \"Hessen\"\n\n#: de/de_states.py:12\nmsgid \"Mecklenburg-Western Pomerania\"\nmsgstr \"Mecklenburg-Western Pomerania\"\n\n#: de/de_states.py:13\nmsgid \"Lower Saxony\"\nmsgstr \"Lower Saxony\"\n\n#: de/de_states.py:14\nmsgid \"North Rhine-Westphalia\"\nmsgstr \"North Rhine-Westphalia\"\n\n#: de/de_states.py:15\nmsgid \"Rhineland-Palatinate\"\nmsgstr \"Rhineland-Palatinate\"\n\n#: de/de_states.py:16\nmsgid \"Saarland\"\nmsgstr \"Saarland\"\n\n#: de/de_states.py:17\nmsgid \"Saxony\"\nmsgstr \"Saxony\"\n\n#: de/de_states.py:18\nmsgid \"Saxony-Anhalt\"\nmsgstr \"Saxony-Anhalt\"\n\n#: de/de_states.py:19\nmsgid \"Schleswig-Holstein\"\nmsgstr \"Schleswig-Holstein\"\n\n#: de/de_states.py:20\nmsgid \"Thuringia\"\nmsgstr \"Thuringia\"\n\n#: de/forms.py:20 fi/forms.py:18 fr/forms.py:20\nmsgid \"Enter a zip code in the format XXXXX.\"\nmsgstr \"Syötä postinumero muodossa XXXXX.\"\n\n#: de/forms.py:46\nmsgid \"\"\n\"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"format.\"\nmsgstr \"\"\n\"Syötä oikea saksalainen henkilötunnus muodossa XXXXXXXXXXX-XXXXXXX-XXXXXXX-X.\"\n\n#: es/es_provinces.py:5\nmsgid \"Araba\"\nmsgstr \"\"\n\n#: es/es_provinces.py:6\nmsgid \"Albacete\"\nmsgstr \"Albacete\"\n\n#: es/es_provinces.py:7\nmsgid \"Alacant\"\nmsgstr \"Alicante\"\n\n#: es/es_provinces.py:8\nmsgid \"Almeria\"\nmsgstr \"Almería\"\n\n#: es/es_provinces.py:9\nmsgid \"Avila\"\nmsgstr \"Ávila\"\n\n#: es/es_provinces.py:10\nmsgid \"Badajoz\"\nmsgstr \"Badajoz\"\n\n#: es/es_provinces.py:11\nmsgid \"Illes Balears\"\nmsgstr \"Baleaarit\"\n\n#: es/es_provinces.py:12\nmsgid \"Barcelona\"\nmsgstr \"Barcelona\"\n\n#: es/es_provinces.py:13\nmsgid \"Burgos\"\nmsgstr \"Burgos\"\n\n#: es/es_provinces.py:14\nmsgid \"Caceres\"\nmsgstr \"Cáceres\"\n\n#: es/es_provinces.py:15\nmsgid \"Cadiz\"\nmsgstr \"Cádiz\"\n\n#: es/es_provinces.py:16\nmsgid \"Castello\"\nmsgstr \"Castellón\"\n\n#: es/es_provinces.py:17\nmsgid \"Ciudad Real\"\nmsgstr \"Ciudad Real\"\n\n#: es/es_provinces.py:18\nmsgid \"Cordoba\"\nmsgstr \"Córdoba\"\n\n#: es/es_provinces.py:19\nmsgid \"A Coruna\"\nmsgstr \"A Coruña\"\n\n#: es/es_provinces.py:20\nmsgid \"Cuenca\"\nmsgstr \"Cuenca\"\n\n#: es/es_provinces.py:21\nmsgid \"Girona\"\nmsgstr \"Girona\"\n\n#: es/es_provinces.py:22\nmsgid \"Granada\"\nmsgstr \"Granada\"\n\n#: es/es_provinces.py:23\nmsgid \"Guadalajara\"\nmsgstr \"Guadalajara\"\n\n#: es/es_provinces.py:24\nmsgid \"Guipuzkoa\"\nmsgstr \"Guipúzcoa\"\n\n#: es/es_provinces.py:25\nmsgid \"Huelva\"\nmsgstr \"Huelva\"\n\n#: es/es_provinces.py:26\nmsgid \"Huesca\"\nmsgstr \"Huesca\"\n\n#: es/es_provinces.py:27\nmsgid \"Jaen\"\nmsgstr \"Jaén\"\n\n#: es/es_provinces.py:28\nmsgid \"Leon\"\nmsgstr \"León\"\n\n#: es/es_provinces.py:29\nmsgid \"Lleida\"\nmsgstr \"Lleida\"\n\n#: es/es_provinces.py:30 es/es_regions.py:17\nmsgid \"La Rioja\"\nmsgstr \"La Rioja\"\n\n#: es/es_provinces.py:31\nmsgid \"Lugo\"\nmsgstr \"Lugo\"\n\n#: es/es_provinces.py:32 es/es_regions.py:18\nmsgid \"Madrid\"\nmsgstr \"Madrid\"\n\n#: es/es_provinces.py:33\nmsgid \"Malaga\"\nmsgstr \"Málaga\"\n\n#: es/es_provinces.py:34\nmsgid \"Murcia\"\nmsgstr \"Murcia\"\n\n#: es/es_provinces.py:35\nmsgid \"Navarre\"\nmsgstr \"Navarra\"\n\n#: es/es_provinces.py:36\nmsgid \"Ourense\"\nmsgstr \"Ourense\"\n\n#: es/es_provinces.py:37\nmsgid \"Asturias\"\nmsgstr \"Asturia\"\n\n#: es/es_provinces.py:38\nmsgid \"Palencia\"\nmsgstr \"Palencia\"\n\n#: es/es_provinces.py:39\nmsgid \"Las Palmas\"\nmsgstr \"Las Palmas\"\n\n#: es/es_provinces.py:40\nmsgid \"Pontevedra\"\nmsgstr \"Pontevedra\"\n\n#: es/es_provinces.py:41\nmsgid \"Salamanca\"\nmsgstr \"Salamanca\"\n\n#: es/es_provinces.py:42\nmsgid \"Santa Cruz de Tenerife\"\nmsgstr \"Santa Cruz de Tenerife\"\n\n#: es/es_provinces.py:43 es/es_regions.py:11\nmsgid \"Cantabria\"\nmsgstr \"Cantabria\"\n\n#: es/es_provinces.py:44\nmsgid \"Segovia\"\nmsgstr \"Segovia\"\n\n#: es/es_provinces.py:45\nmsgid \"Seville\"\nmsgstr \"Seville\"\n\n#: es/es_provinces.py:46\nmsgid \"Soria\"\nmsgstr \"Soria\"\n\n#: es/es_provinces.py:47\nmsgid \"Tarragona\"\nmsgstr \"Tarragona\"\n\n#: es/es_provinces.py:48\nmsgid \"Teruel\"\nmsgstr \"Teruel\"\n\n#: es/es_provinces.py:49\nmsgid \"Toledo\"\nmsgstr \"Toledo\"\n\n#: es/es_provinces.py:50\nmsgid \"Valencia\"\nmsgstr \"Valencia\"\n\n#: es/es_provinces.py:51\nmsgid \"Valladolid\"\nmsgstr \"Valladolid\"\n\n#: es/es_provinces.py:52\nmsgid \"Bizkaia\"\nmsgstr \"Vizcaya\"\n\n#: es/es_provinces.py:53\nmsgid \"Zamora\"\nmsgstr \"Zamora\"\n\n#: es/es_provinces.py:54\nmsgid \"Zaragoza\"\nmsgstr \"Zaragoza\"\n\n#: es/es_provinces.py:55\nmsgid \"Ceuta\"\nmsgstr \"Ceuta\"\n\n#: es/es_provinces.py:56\nmsgid \"Melilla\"\nmsgstr \"Melilla\"\n\n#: es/es_regions.py:5\nmsgid \"Andalusia\"\nmsgstr \"Andalusia\"\n\n#: es/es_regions.py:6\nmsgid \"Aragon\"\nmsgstr \"Aragonia\"\n\n#: es/es_regions.py:7\nmsgid \"Principality of Asturias\"\nmsgstr \"Asturian ruhtinaskunta\"\n\n#: es/es_regions.py:8\nmsgid \"Balearic Islands\"\nmsgstr \"Baleaarit\"\n\n#: es/es_regions.py:9\nmsgid \"Basque Country\"\nmsgstr \"Baskimaa\"\n\n#: es/es_regions.py:10\nmsgid \"Canary Islands\"\nmsgstr \"Kanariansaaret\"\n\n#: es/es_regions.py:12\nmsgid \"Castile-La Mancha\"\nmsgstr \"Kastilia-La Mancha\"\n\n#: es/es_regions.py:13\nmsgid \"Castile and Leon\"\nmsgstr \"Kastilia ja León\"\n\n#: es/es_regions.py:14\nmsgid \"Catalonia\"\nmsgstr \"Katalonia\"\n\n#: es/es_regions.py:15\nmsgid \"Extremadura\"\nmsgstr \"Extremadura\"\n\n#: es/es_regions.py:16\nmsgid \"Galicia\"\nmsgstr \"Galicia\"\n\n#: es/es_regions.py:19\nmsgid \"Region of Murcia\"\nmsgstr \"Murcia\"\n\n#: es/es_regions.py:20\nmsgid \"Foral Community of Navarre\"\nmsgstr \"Navarra\"\n\n#: es/es_regions.py:21\nmsgid \"Valencian Community\"\nmsgstr \"Valencia\"\n\n#: es/forms.py:26\nmsgid \"Enter a valid postal code in the range and format 01XXX - 52XXX.\"\nmsgstr \"Syötä oikea postinumero väliltä ja muodossa 01XXX-52XXX.\"\n\n#: es/forms.py:46\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or \"\n\"9XXXXXXXX.\"\nmsgstr \"\"\n\"Syötä oikea puhelinnumero muodoissa 6XXXXXXXX, 8XXXXXXXX tai 9XXXXXXXX.\"\n\n#: es/forms.py:73\nmsgid \"Please enter a valid NIF, NIE, or CIF.\"\nmsgstr \"Syötä oikea NIF, NIE tai CIF.\"\n\n#: es/forms.py:74\nmsgid \"Please enter a valid NIF or NIE.\"\nmsgstr \"Syötä oikea NIF tai NIE.\"\n\n#: es/forms.py:75\nmsgid \"Invalid checksum for NIF.\"\nmsgstr \"Väärä tarkistusnumero NIF:lle.\"\n\n#: es/forms.py:76\nmsgid \"Invalid checksum for NIE.\"\nmsgstr \"Väärä tarkistusnumero NIE:lle.\"\n\n#: es/forms.py:77\nmsgid \"Invalid checksum for CIF.\"\nmsgstr \"Väärä tarkistusnumero CIF:lle.\"\n\n#: es/forms.py:149\nmsgid \"\"\n\"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.\"\nmsgstr \"Syötä oikea pankin tilinumero muodossa XXXX-XXXX-XX-XXXXXXXXXX.\"\n\n#: es/forms.py:150\nmsgid \"Invalid checksum for bank account number.\"\nmsgstr \"Väärä tarkistusnumero pankin tilinumerolle.\"\n\n#: fi/forms.py:33\nmsgid \"Enter a valid Finnish social security number.\"\nmsgstr \"Syötä oikea suomalainen henkilötunnus.\"\n\n#: fr/forms.py:35\nmsgid \"Phone numbers must be in 0X XX XX XX XX format.\"\nmsgstr \"Puhelinnumeroiden on ontava muodossa 0X XX XX XX XX.\"\n\n#: gb/forms.py:25\nmsgid \"Enter a valid postcode.\"\nmsgstr \"Syötä oikea postinumero.\"\n\n#: gb/gb_regions.py:11\nmsgid \"Bedfordshire\"\nmsgstr \"Bedfordshire\"\n\n#: gb/gb_regions.py:12\nmsgid \"Buckinghamshire\"\nmsgstr \"Buckinghamshire\"\n\n#: gb/gb_regions.py:14\nmsgid \"Cheshire\"\nmsgstr \"Cheshire\"\n\n#: gb/gb_regions.py:15\nmsgid \"Cornwall and Isles of Scilly\"\nmsgstr \"Cornwall and Isles of Scilly\"\n\n#: gb/gb_regions.py:16\nmsgid \"Cumbria\"\nmsgstr \"Cumbria\"\n\n#: gb/gb_regions.py:17\nmsgid \"Derbyshire\"\nmsgstr \"Derbyshire\"\n\n#: gb/gb_regions.py:18\nmsgid \"Devon\"\nmsgstr \"Devon\"\n\n#: gb/gb_regions.py:19\nmsgid \"Dorset\"\nmsgstr \"Dorset\"\n\n#: gb/gb_regions.py:20\nmsgid \"Durham\"\nmsgstr \"Durham\"\n\n#: gb/gb_regions.py:21\nmsgid \"East Sussex\"\nmsgstr \"East Sussex\"\n\n#: gb/gb_regions.py:22\nmsgid \"Essex\"\nmsgstr \"Essex\"\n\n#: gb/gb_regions.py:23\nmsgid \"Gloucestershire\"\nmsgstr \"Gloucestershire\"\n\n#: gb/gb_regions.py:24\nmsgid \"Greater London\"\nmsgstr \"Greater London\"\n\n#: gb/gb_regions.py:25\nmsgid \"Greater Manchester\"\nmsgstr \"Greater Manchester\"\n\n#: gb/gb_regions.py:26\nmsgid \"Hampshire\"\nmsgstr \"Hampshire\"\n\n#: gb/gb_regions.py:27\nmsgid \"Hertfordshire\"\nmsgstr \"Hertfordshire\"\n\n#: gb/gb_regions.py:28\nmsgid \"Kent\"\nmsgstr \"Kent\"\n\n#: gb/gb_regions.py:29\nmsgid \"Lancashire\"\nmsgstr \"Lancashire\"\n\n#: gb/gb_regions.py:30\nmsgid \"Leicestershire\"\nmsgstr \"Leicestershire\"\n\n#: gb/gb_regions.py:31\nmsgid \"Lincolnshire\"\nmsgstr \"Lincolnshire\"\n\n#: gb/gb_regions.py:32\nmsgid \"Merseyside\"\nmsgstr \"Merseyside\"\n\n#: gb/gb_regions.py:33\nmsgid \"Norfolk\"\nmsgstr \"Norfolk\"\n\n#: gb/gb_regions.py:34\nmsgid \"North Yorkshire\"\nmsgstr \"North Yorkshire\"\n\n#: gb/gb_regions.py:35\nmsgid \"Northamptonshire\"\nmsgstr \"Northamptonshire\"\n\n#: gb/gb_regions.py:36\nmsgid \"Northumberland\"\nmsgstr \"Northumberland\"\n\n#: gb/gb_regions.py:37\nmsgid \"Nottinghamshire\"\nmsgstr \"Nottinghamshire\"\n\n#: gb/gb_regions.py:38\nmsgid \"Oxfordshire\"\nmsgstr \"Oxfordshire\"\n\n#: gb/gb_regions.py:39\nmsgid \"Shropshire\"\nmsgstr \"Shropshire\"\n\n#: gb/gb_regions.py:40\nmsgid \"Somerset\"\nmsgstr \"Somerset\"\n\n#: gb/gb_regions.py:41\nmsgid \"South Yorkshire\"\nmsgstr \"South Yorkshire\"\n\n#: gb/gb_regions.py:42\nmsgid \"Staffordshire\"\nmsgstr \"Staffordshire\"\n\n#: gb/gb_regions.py:43\nmsgid \"Suffolk\"\nmsgstr \"Suffolk\"\n\n#: gb/gb_regions.py:44\nmsgid \"Surrey\"\nmsgstr \"Surrey\"\n\n#: gb/gb_regions.py:45\nmsgid \"Tyne and Wear\"\nmsgstr \"Tyne and Wear\"\n\n#: gb/gb_regions.py:46\nmsgid \"Warwickshire\"\nmsgstr \"Warwickshire\"\n\n#: gb/gb_regions.py:47\nmsgid \"West Midlands\"\nmsgstr \"West Midlands\"\n\n#: gb/gb_regions.py:48\nmsgid \"West Sussex\"\nmsgstr \"West Sussex\"\n\n#: gb/gb_regions.py:49\nmsgid \"West Yorkshire\"\nmsgstr \"West Yorkshire\"\n\n#: gb/gb_regions.py:50\nmsgid \"Wiltshire\"\nmsgstr \"Wiltshire\"\n\n#: gb/gb_regions.py:51\nmsgid \"Worcestershire\"\nmsgstr \"Worcestershire\"\n\n#: gb/gb_regions.py:55\nmsgid \"County Antrim\"\nmsgstr \"County Antrim\"\n\n#: gb/gb_regions.py:56\nmsgid \"County Armagh\"\nmsgstr \"County Armagh\"\n\n#: gb/gb_regions.py:57\nmsgid \"County Down\"\nmsgstr \"County Down\"\n\n#: gb/gb_regions.py:58\nmsgid \"County Fermanagh\"\nmsgstr \"County Fermanagh\"\n\n#: gb/gb_regions.py:59\nmsgid \"County Londonderry\"\nmsgstr \"County Londonderry\"\n\n#: gb/gb_regions.py:60\nmsgid \"County Tyrone\"\nmsgstr \"County Tyrone\"\n\n#: gb/gb_regions.py:64\nmsgid \"Clwyd\"\nmsgstr \"Clwyd\"\n\n#: gb/gb_regions.py:65\nmsgid \"Dyfed\"\nmsgstr \"Dyfed\"\n\n#: gb/gb_regions.py:66\nmsgid \"Gwent\"\nmsgstr \"Gwent\"\n\n#: gb/gb_regions.py:67\nmsgid \"Gwynedd\"\nmsgstr \"Gwynedd\"\n\n#: gb/gb_regions.py:68\nmsgid \"Mid Glamorgan\"\nmsgstr \"Mid Glamorgan\"\n\n#: gb/gb_regions.py:69\nmsgid \"Powys\"\nmsgstr \"Powys\"\n\n#: gb/gb_regions.py:70\nmsgid \"South Glamorgan\"\nmsgstr \"South Glamorgan\"\n\n#: gb/gb_regions.py:71\nmsgid \"West Glamorgan\"\nmsgstr \"West Glamorgan\"\n\n#: gb/gb_regions.py:75\nmsgid \"Borders\"\nmsgstr \"Borders\"\n\n#: gb/gb_regions.py:76\nmsgid \"Central Scotland\"\nmsgstr \"Central Scotland\"\n\n#: gb/gb_regions.py:77\nmsgid \"Dumfries and Galloway\"\nmsgstr \"Dumfries and Galloway\"\n\n#: gb/gb_regions.py:78\nmsgid \"Fife\"\nmsgstr \"Fife\"\n\n#: gb/gb_regions.py:79\nmsgid \"Grampian\"\nmsgstr \"Grampian\"\n\n#: gb/gb_regions.py:80\nmsgid \"Highland\"\nmsgstr \"Highland\"\n\n#: gb/gb_regions.py:81\nmsgid \"Lothian\"\nmsgstr \"Lothian\"\n\n#: gb/gb_regions.py:82\nmsgid \"Orkney Islands\"\nmsgstr \"Orkney Islands\"\n\n#: gb/gb_regions.py:83\nmsgid \"Shetland Islands\"\nmsgstr \"Shetland Islands\"\n\n#: gb/gb_regions.py:84\nmsgid \"Strathclyde\"\nmsgstr \"Strathclyde\"\n\n#: gb/gb_regions.py:85\nmsgid \"Tayside\"\nmsgstr \"Tayside\"\n\n#: gb/gb_regions.py:86\nmsgid \"Western Isles\"\nmsgstr \"Western Isles\"\n\n#: gb/gb_regions.py:90\nmsgid \"England\"\nmsgstr \"England\"\n\n#: gb/gb_regions.py:91\nmsgid \"Northern Ireland\"\nmsgstr \"Northern Ireland\"\n\n#: gb/gb_regions.py:92\nmsgid \"Scotland\"\nmsgstr \"Scotland\"\n\n#: gb/gb_regions.py:93\nmsgid \"Wales\"\nmsgstr \"Scotland\"\n\n#: hk/forms.py:37\n#, python-format\nmsgid \"Phone number should not start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:40\n#, python-format\nmsgid \"Phone number must be in one of the following formats: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:42\n#, python-format\nmsgid \"Phone number should start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hr/forms.py:76\nmsgid \"Enter a valid 13 digit JMBG\"\nmsgstr \"Anna kelvollinen 13-numeroinen JMBG\"\n\n#: hr/forms.py:77\nmsgid \"Error in date segment\"\nmsgstr \"Virhe päivämääräosassa\"\n\n#: hr/forms.py:123\nmsgid \"Enter a valid 11 digit OIB\"\nmsgstr \"Anna kelvollinen 11-numeroinen OIB\"\n\n#: hr/forms.py:152 id/forms.py:112\nmsgid \"Enter a valid vehicle license plate number\"\nmsgstr \"Syötä oikea rekisterikilpi\"\n\n#: hr/forms.py:153\nmsgid \"Enter a valid location code\"\nmsgstr \"Anna kelvollinen sijaintikoodi\"\n\n#: hr/forms.py:154\nmsgid \"Number part cannot be zero\"\nmsgstr \"Numero-osa ei voi olla nolla\"\n\n#: hr/forms.py:190\nmsgid \"Enter a valid 5 digit postal code\"\nmsgstr \"Anna kelvollinen 5-numeroinen postinumero\"\n\n#: hr/forms.py:218 id/forms.py:72 nl/forms.py:56\nmsgid \"Enter a valid phone number\"\nmsgstr \"Syötä oikea puhelinnumero\"\n\n#: hr/forms.py:219\nmsgid \"Enter a valid area or mobile network code\"\nmsgstr \"Anna oikea suunta- tai matkaviestinverkon numero\"\n\n#: hr/forms.py:220\nmsgid \"The phone nubmer is too long\"\nmsgstr \"Puhelinnumero on liian pitkä\"\n\n#: hr/forms.py:258\nmsgid \"Enter a valid 19 digit JMBAG starting with 601983\"\nmsgstr \"Anna kelvollinen 19-numeroinen ja 601983-alkuinen JMBAG\"\n\n#: hr/forms.py:259\nmsgid \"Card issue number cannot be zero\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:14\nmsgid \"Grad Zagreb\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:15\nmsgid \"Bjelovarsko-bilogorska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:16\nmsgid \"Brodsko-posavska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:17\nmsgid \"Dubrovačko-neretvanska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:18\nmsgid \"Istarska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:19\nmsgid \"Karlovačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:20\nmsgid \"Koprivničko-križevačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:21\nmsgid \"Krapinsko-zagorska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:22\nmsgid \"Ličko-senjska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:23\nmsgid \"Međimurska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:24\nmsgid \"Osječko-baranjska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:25\nmsgid \"Požeško-slavonska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:26\nmsgid \"Primorsko-goranska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:27\nmsgid \"Sisačko-moslavačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:28\nmsgid \"Splitsko-dalmatinska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:29\nmsgid \"Šibensko-kninska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:30\nmsgid \"Varaždinska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:31\nmsgid \"Virovitičko-podravska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:32\nmsgid \"Vukovarsko-srijemska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:33\nmsgid \"Zadarska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:34\nmsgid \"Zagrebačka županija\"\nmsgstr \"\"\n\n#: id/forms.py:31\nmsgid \"Enter a valid post code\"\nmsgstr \"Syötä oikea postinumero\"\n\n#: id/forms.py:176\nmsgid \"Enter a valid NIK/KTP number\"\nmsgstr \"Syötä oikea NIK/KTP numero\"\n\n#: id/id_choices.py:15\nmsgid \"Aceh\"\nmsgstr \"Aceh\"\n\n#: id/id_choices.py:16 id/id_choices.py:79\nmsgid \"Bali\"\nmsgstr \"Bali\"\n\n#: id/id_choices.py:17 id/id_choices.py:51\nmsgid \"Banten\"\nmsgstr \"Banten\"\n\n#: id/id_choices.py:18 id/id_choices.py:60\nmsgid \"Bengkulu\"\nmsgstr \"Bengkulu\"\n\n#: id/id_choices.py:19 id/id_choices.py:53\nmsgid \"Yogyakarta\"\nmsgstr \"Yogyakarta\"\n\n#: id/id_choices.py:20 id/id_choices.py:57\nmsgid \"Jakarta\"\nmsgstr \"Jakarta\"\n\n#: id/id_choices.py:21 id/id_choices.py:81\nmsgid \"Gorontalo\"\nmsgstr \"Gorontalo\"\n\n#: id/id_choices.py:22 id/id_choices.py:63\nmsgid \"Jambi\"\nmsgstr \"Jambi\"\n\n#: id/id_choices.py:23\nmsgid \"Jawa Barat\"\nmsgstr \"Jawa Barat\"\n\n#: id/id_choices.py:24\nmsgid \"Jawa Tengah\"\nmsgstr \"Jawa Tengah\"\n\n#: id/id_choices.py:25\nmsgid \"Jawa Timur\"\nmsgstr \"Jawa Timur\"\n\n#: id/id_choices.py:26 id/id_choices.py:94\nmsgid \"Kalimantan Barat\"\nmsgstr \"Kalimantan Barat\"\n\n#: id/id_choices.py:27 id/id_choices.py:72\nmsgid \"Kalimantan Selatan\"\nmsgstr \"Kalimantan Selatan\"\n\n#: id/id_choices.py:28 id/id_choices.py:95\nmsgid \"Kalimantan Tengah\"\nmsgstr \"Kalimantan Tengah\"\n\n#: id/id_choices.py:29 id/id_choices.py:96\nmsgid \"Kalimantan Timur\"\nmsgstr \"Kalimantan Timur\"\n\n#: id/id_choices.py:30\nmsgid \"Kepulauan Bangka-Belitung\"\nmsgstr \"Kepulauan Bangka-Belitung\"\n\n#: id/id_choices.py:31 id/id_choices.py:68\nmsgid \"Kepulauan Riau\"\nmsgstr \"Kepulauan Riau\"\n\n#: id/id_choices.py:32 id/id_choices.py:61\nmsgid \"Lampung\"\nmsgstr \"Lampung\"\n\n#: id/id_choices.py:33 id/id_choices.py:76\nmsgid \"Maluku\"\nmsgstr \"Maluku\"\n\n#: id/id_choices.py:34 id/id_choices.py:77\nmsgid \"Maluku Utara\"\nmsgstr \"Maluku Utara\"\n\n#: id/id_choices.py:35\nmsgid \"Nusa Tenggara Barat\"\nmsgstr \"Nusa Tenggara Barat\"\n\n#: id/id_choices.py:36\nmsgid \"Nusa Tenggara Timur\"\nmsgstr \"Nusa Tenggara Timur\"\n\n#: id/id_choices.py:37\nmsgid \"Papua\"\nmsgstr \"Papua\"\n\n#: id/id_choices.py:38\nmsgid \"Papua Barat\"\nmsgstr \"Papua Barat\"\n\n#: id/id_choices.py:39 id/id_choices.py:66\nmsgid \"Riau\"\nmsgstr \"Riau\"\n\n#: id/id_choices.py:40 id/id_choices.py:74\nmsgid \"Sulawesi Barat\"\nmsgstr \"Sulawesi Barat\"\n\n#: id/id_choices.py:41 id/id_choices.py:75\nmsgid \"Sulawesi Selatan\"\nmsgstr \"Sulawesi Selatan\"\n\n#: id/id_choices.py:42 id/id_choices.py:82\nmsgid \"Sulawesi Tengah\"\nmsgstr \"Sulawesi Tengah\"\n\n#: id/id_choices.py:43 id/id_choices.py:85\nmsgid \"Sulawesi Tenggara\"\nmsgstr \"Sulawesi Tenggara\"\n\n#: id/id_choices.py:44\nmsgid \"Sulawesi Utara\"\nmsgstr \"Sulawesi Utara\"\n\n#: id/id_choices.py:45 id/id_choices.py:58\nmsgid \"Sumatera Barat\"\nmsgstr \"Sumatera Barat\"\n\n#: id/id_choices.py:46 id/id_choices.py:62\nmsgid \"Sumatera Selatan\"\nmsgstr \"Sumatera Selatan\"\n\n#: id/id_choices.py:47 id/id_choices.py:64\nmsgid \"Sumatera Utara\"\nmsgstr \"Sumatera Utara\"\n\n#: id/id_choices.py:52\nmsgid \"Magelang\"\nmsgstr \"Magelang\"\n\n#: id/id_choices.py:54\nmsgid \"Surakarta - Solo\"\nmsgstr \"Surakarta - Solo\"\n\n#: id/id_choices.py:55\nmsgid \"Madiun\"\nmsgstr \"Madiun\"\n\n#: id/id_choices.py:56\nmsgid \"Kediri\"\nmsgstr \"Kediri\"\n\n#: id/id_choices.py:59\nmsgid \"Tapanuli\"\nmsgstr \"Tapanuli\"\n\n#: id/id_choices.py:65\nmsgid \"Nanggroe Aceh Darussalam\"\nmsgstr \"Nanggroe Aceh Darussalam\"\n\n#: id/id_choices.py:67\nmsgid \"Kepulauan Bangka Belitung\"\nmsgstr \"Kepulauan Bangka Belitung\"\n\n#: id/id_choices.py:69\nmsgid \"Corps Consulate\"\nmsgstr \"Corps Consulate\"\n\n#: id/id_choices.py:70\nmsgid \"Corps Diplomatic\"\nmsgstr \"Corps Diplomatic\"\n\n#: id/id_choices.py:71\nmsgid \"Bandung\"\nmsgstr \"Bandung\"\n\n#: id/id_choices.py:73\nmsgid \"Sulawesi Utara Daratan\"\nmsgstr \"Sulawesi Utara Daratan\"\n\n#: id/id_choices.py:78\nmsgid \"NTT - Timor\"\nmsgstr \"NTT - Timor\"\n\n#: id/id_choices.py:80\nmsgid \"Sulawesi Utara Kepulauan\"\nmsgstr \"Sulawesi Utara Kepulauan\"\n\n#: id/id_choices.py:83\nmsgid \"NTB - Lombok\"\nmsgstr \"NTB - Lombok\"\n\n#: id/id_choices.py:84\nmsgid \"Papua dan Papua Barat\"\nmsgstr \"Papua dan Papua Barat\"\n\n#: id/id_choices.py:86\nmsgid \"Cirebon\"\nmsgstr \"Cirebon\"\n\n#: id/id_choices.py:87\nmsgid \"NTB - Sumbawa\"\nmsgstr \"NTB - Sumbawa\"\n\n#: id/id_choices.py:88\nmsgid \"NTT - Flores\"\nmsgstr \"NTT - Flores\"\n\n#: id/id_choices.py:89\nmsgid \"NTT - Sumba\"\nmsgstr \"NTT - Sumba\"\n\n#: id/id_choices.py:90\nmsgid \"Bogor\"\nmsgstr \"Bogor\"\n\n#: id/id_choices.py:91\nmsgid \"Pekalongan\"\nmsgstr \"Pekalongan\"\n\n#: id/id_choices.py:92\nmsgid \"Semarang\"\nmsgstr \"Semarang\"\n\n#: id/id_choices.py:93\nmsgid \"Pati\"\nmsgstr \"Pati\"\n\n#: id/id_choices.py:97\nmsgid \"Surabaya\"\nmsgstr \"Surabaya\"\n\n#: id/id_choices.py:98\nmsgid \"Madura\"\nmsgstr \"Madura\"\n\n#: id/id_choices.py:99\nmsgid \"Malang\"\nmsgstr \"Malang\"\n\n#: id/id_choices.py:100\nmsgid \"Jember\"\nmsgstr \"Jember\"\n\n#: id/id_choices.py:101\nmsgid \"Banyumas\"\nmsgstr \"Banyumas\"\n\n#: id/id_choices.py:102\nmsgid \"Federal Government\"\nmsgstr \"Federal Government\"\n\n#: id/id_choices.py:103\nmsgid \"Bojonegoro\"\nmsgstr \"Bojonegoro\"\n\n#: id/id_choices.py:104\nmsgid \"Purwakarta\"\nmsgstr \"Purwakarta\"\n\n#: id/id_choices.py:105\nmsgid \"Sidoarjo\"\nmsgstr \"Sidoarjo\"\n\n#: id/id_choices.py:106\nmsgid \"Garut\"\nmsgstr \"Garut\"\n\n#: ie/ie_counties.py:8\nmsgid \"Antrim\"\nmsgstr \"Antrim\"\n\n#: ie/ie_counties.py:9\nmsgid \"Armagh\"\nmsgstr \"Armagh\"\n\n#: ie/ie_counties.py:10\nmsgid \"Carlow\"\nmsgstr \"Carlow\"\n\n#: ie/ie_counties.py:11\nmsgid \"Cavan\"\nmsgstr \"Cavan\"\n\n#: ie/ie_counties.py:12\nmsgid \"Clare\"\nmsgstr \"Clare\"\n\n#: ie/ie_counties.py:13\nmsgid \"Cork\"\nmsgstr \"Cork\"\n\n#: ie/ie_counties.py:14\nmsgid \"Derry\"\nmsgstr \"Derry\"\n\n#: ie/ie_counties.py:15\nmsgid \"Donegal\"\nmsgstr \"Donegal\"\n\n#: ie/ie_counties.py:16\nmsgid \"Down\"\nmsgstr \"Down\"\n\n#: ie/ie_counties.py:17\nmsgid \"Dublin\"\nmsgstr \"Dublin\"\n\n#: ie/ie_counties.py:18\nmsgid \"Fermanagh\"\nmsgstr \"Fermanagh\"\n\n#: ie/ie_counties.py:19\nmsgid \"Galway\"\nmsgstr \"Galway\"\n\n#: ie/ie_counties.py:20\nmsgid \"Kerry\"\nmsgstr \"Kerry\"\n\n#: ie/ie_counties.py:21\nmsgid \"Kildare\"\nmsgstr \"Kildare\"\n\n#: ie/ie_counties.py:22\nmsgid \"Kilkenny\"\nmsgstr \"Kilkenny\"\n\n#: ie/ie_counties.py:23\nmsgid \"Laois\"\nmsgstr \"Laois\"\n\n#: ie/ie_counties.py:24\nmsgid \"Leitrim\"\nmsgstr \"Leitrim\"\n\n#: ie/ie_counties.py:25\nmsgid \"Limerick\"\nmsgstr \"Limerick\"\n\n#: ie/ie_counties.py:26\nmsgid \"Longford\"\nmsgstr \"Longford\"\n\n#: ie/ie_counties.py:27\nmsgid \"Louth\"\nmsgstr \"Louth\"\n\n#: ie/ie_counties.py:28\nmsgid \"Mayo\"\nmsgstr \"Mayo\"\n\n#: ie/ie_counties.py:29\nmsgid \"Meath\"\nmsgstr \"Meath\"\n\n#: ie/ie_counties.py:30\nmsgid \"Monaghan\"\nmsgstr \"Monaghan\"\n\n#: ie/ie_counties.py:31\nmsgid \"Offaly\"\nmsgstr \"Offaly\"\n\n#: ie/ie_counties.py:32\nmsgid \"Roscommon\"\nmsgstr \"Roscommon\"\n\n#: ie/ie_counties.py:33\nmsgid \"Sligo\"\nmsgstr \"Sligo\"\n\n#: ie/ie_counties.py:34\nmsgid \"Tipperary\"\nmsgstr \"Tipperary\"\n\n#: ie/ie_counties.py:35\nmsgid \"Tyrone\"\nmsgstr \"Tyrone\"\n\n#: ie/ie_counties.py:36\nmsgid \"Waterford\"\nmsgstr \"Waterford\"\n\n#: ie/ie_counties.py:37\nmsgid \"Westmeath\"\nmsgstr \"Westmeath\"\n\n#: ie/ie_counties.py:38\nmsgid \"Wexford\"\nmsgstr \"Wexford\"\n\n#: ie/ie_counties.py:39\nmsgid \"Wicklow\"\nmsgstr \"Wicklow\"\n\n#: il/forms.py:32\nmsgid \"Enter a postal code in the format XXXXX\"\nmsgstr \"Syötä postinumero muodossa XXXXX\"\n\n#: il/forms.py:51\nmsgid \"Enter a valid ID number.\"\nmsgstr \"Syötä oikea henkilötunnus.\"\n\n#: in_/forms.py:41\nmsgid \"Enter a zip code in the format XXXXXX or XXX XXX.\"\nmsgstr \"Syötä postinumero muodossa XXXXXX tai XXX XXX.\"\n\n#: in_/forms.py:64\nmsgid \"Enter an Indian state or territory.\"\nmsgstr \"Anna Intian osavaltio tai territorio.\"\n\n#: in_/forms.py:103\nmsgid \"Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.\"\nmsgstr \"\"\n\n#: is_/forms.py:22\nmsgid \"\"\n\"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.\"\nmsgstr \"Syötä oikea islantilainen henkilötunnus muodossa XXXXXX-XXXX.\"\n\n#: is_/forms.py:23\nmsgid \"The Icelandic identification number is not valid.\"\nmsgstr \"Islantilainen henkilötunnus on virheellinen.\"\n\n#: it/forms.py:21\nmsgid \"Enter a valid zip code.\"\nmsgstr \"Syötä oikea postinumero.\"\n\n#: it/forms.py:48\nmsgid \"Enter a valid Social Security number.\"\nmsgstr \"Syötä oikea henkilötunnus.\"\n\n#: it/forms.py:73\nmsgid \"Enter a valid VAT number.\"\nmsgstr \"Syötä oikea ALV-tunnus.\"\n\n#: jp/forms.py:19\nmsgid \"Enter a postal code in the format XXXXXXX or XXX-XXXX.\"\nmsgstr \"Syötä postinumero muodossa XXXXXXX tai XXX-XXXX.\"\n\n#: jp/jp_prefectures.py:4\nmsgid \"Hokkaido\"\nmsgstr \"Hokkaido\"\n\n#: jp/jp_prefectures.py:5\nmsgid \"Aomori\"\nmsgstr \"Aomori\"\n\n#: jp/jp_prefectures.py:6\nmsgid \"Iwate\"\nmsgstr \"Iwate\"\n\n#: jp/jp_prefectures.py:7\nmsgid \"Miyagi\"\nmsgstr \"Miyagi\"\n\n#: jp/jp_prefectures.py:8\nmsgid \"Akita\"\nmsgstr \"Akita\"\n\n#: jp/jp_prefectures.py:9\nmsgid \"Yamagata\"\nmsgstr \"Yamagata\"\n\n#: jp/jp_prefectures.py:10\nmsgid \"Fukushima\"\nmsgstr \"Fukushima\"\n\n#: jp/jp_prefectures.py:11\nmsgid \"Ibaraki\"\nmsgstr \"Ibaraki\"\n\n#: jp/jp_prefectures.py:12\nmsgid \"Tochigi\"\nmsgstr \"Tochigi\"\n\n#: jp/jp_prefectures.py:13\nmsgid \"Gunma\"\nmsgstr \"Gunma\"\n\n#: jp/jp_prefectures.py:14\nmsgid \"Saitama\"\nmsgstr \"Saitama\"\n\n#: jp/jp_prefectures.py:15\nmsgid \"Chiba\"\nmsgstr \"Chiba\"\n\n#: jp/jp_prefectures.py:16\nmsgid \"Tokyo\"\nmsgstr \"Tokio\"\n\n#: jp/jp_prefectures.py:17\nmsgid \"Kanagawa\"\nmsgstr \"Kanagawa\"\n\n#: jp/jp_prefectures.py:18\nmsgid \"Yamanashi\"\nmsgstr \"Yamanashi\"\n\n#: jp/jp_prefectures.py:19\nmsgid \"Nagano\"\nmsgstr \"Nagano\"\n\n#: jp/jp_prefectures.py:20\nmsgid \"Niigata\"\nmsgstr \"Niigata\"\n\n#: jp/jp_prefectures.py:21\nmsgid \"Toyama\"\nmsgstr \"Toyama\"\n\n#: jp/jp_prefectures.py:22\nmsgid \"Ishikawa\"\nmsgstr \"Ishikawa\"\n\n#: jp/jp_prefectures.py:23\nmsgid \"Fukui\"\nmsgstr \"Fukui\"\n\n#: jp/jp_prefectures.py:24\nmsgid \"Gifu\"\nmsgstr \"Gifu\"\n\n#: jp/jp_prefectures.py:25\nmsgid \"Shizuoka\"\nmsgstr \"Shizuoka\"\n\n#: jp/jp_prefectures.py:26\nmsgid \"Aichi\"\nmsgstr \"Aichi\"\n\n#: jp/jp_prefectures.py:27\nmsgid \"Mie\"\nmsgstr \"Mie\"\n\n#: jp/jp_prefectures.py:28\nmsgid \"Shiga\"\nmsgstr \"Shiga\"\n\n#: jp/jp_prefectures.py:29\nmsgid \"Kyoto\"\nmsgstr \"Kioto\"\n\n#: jp/jp_prefectures.py:30\nmsgid \"Osaka\"\nmsgstr \"Osaka\"\n\n#: jp/jp_prefectures.py:31\nmsgid \"Hyogo\"\nmsgstr \"Hyogo\"\n\n#: jp/jp_prefectures.py:32\nmsgid \"Nara\"\nmsgstr \"Nara\"\n\n#: jp/jp_prefectures.py:33\nmsgid \"Wakayama\"\nmsgstr \"Wakayama\"\n\n#: jp/jp_prefectures.py:34\nmsgid \"Tottori\"\nmsgstr \"Tottori\"\n\n#: jp/jp_prefectures.py:35\nmsgid \"Shimane\"\nmsgstr \"Shimane\"\n\n#: jp/jp_prefectures.py:36\nmsgid \"Okayama\"\nmsgstr \"Okayama\"\n\n#: jp/jp_prefectures.py:37\nmsgid \"Hiroshima\"\nmsgstr \"Hiroshima\"\n\n#: jp/jp_prefectures.py:38\nmsgid \"Yamaguchi\"\nmsgstr \"Yamaguchi\"\n\n#: jp/jp_prefectures.py:39\nmsgid \"Tokushima\"\nmsgstr \"Tokushima\"\n\n#: jp/jp_prefectures.py:40\nmsgid \"Kagawa\"\nmsgstr \"Kagawa\"\n\n#: jp/jp_prefectures.py:41\nmsgid \"Ehime\"\nmsgstr \"Ehime\"\n\n#: jp/jp_prefectures.py:42\nmsgid \"Kochi\"\nmsgstr \"Kochi\"\n\n#: jp/jp_prefectures.py:43\nmsgid \"Fukuoka\"\nmsgstr \"Fukuoka\"\n\n#: jp/jp_prefectures.py:44\nmsgid \"Saga\"\nmsgstr \"Saga\"\n\n#: jp/jp_prefectures.py:45\nmsgid \"Nagasaki\"\nmsgstr \"Nagasaki\"\n\n#: jp/jp_prefectures.py:46\nmsgid \"Kumamoto\"\nmsgstr \"Kumamoto\"\n\n#: jp/jp_prefectures.py:47\nmsgid \"Oita\"\nmsgstr \"Oita\"\n\n#: jp/jp_prefectures.py:48\nmsgid \"Miyazaki\"\nmsgstr \"Miyazaki\"\n\n#: jp/jp_prefectures.py:49\nmsgid \"Kagoshima\"\nmsgstr \"Kagoshima\"\n\n#: jp/jp_prefectures.py:50\nmsgid \"Okinawa\"\nmsgstr \"Okinawa\"\n\n#: kw/forms.py:27\nmsgid \"Enter a valid Kuwaiti Civil ID number\"\nmsgstr \"Syötä oikea kuwaitilainen henkilötunnus\"\n\n#: mk/forms.py:18\nmsgid \"\"\n\"Identity card numbers must contain either 4 to 7 digits or an uppercase \"\n\"letter and 7 digits.\"\nmsgstr \"\"\n\"Henkilökortin tunnisteessa on oltava 4 tai 7 numeroa tai iso kirjain ja 7 \"\n\"numeroa.\"\n\n#: mk/forms.py:57 si/forms.py:24\nmsgid \"This field should contain exactly 13 digits.\"\nmsgstr \"Tässä kentässä pitää olla tasan 13 numeroa.\"\n\n#: mk/forms.py:58\nmsgid \"The first 7 digits of the UMCN must represent a valid past date.\"\nmsgstr \"UMCN:n ensimmäisten 7 numeron tulee vastata kelvollista päivämäärää.\"\n\n#: mk/forms.py:59\nmsgid \"The UMCN is not valid.\"\nmsgstr \"UMCN ei kelpaa.\"\n\n#: mk/mk_choices.py:10\nmsgid \"Aerodrom\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:11\nmsgid \"Aračinovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:12\nmsgid \"Berovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:13\nmsgid \"Bitola\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:14\nmsgid \"Bogdanci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:15\nmsgid \"Bogovinje\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:16\nmsgid \"Bosilovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:17\nmsgid \"Brvenica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:18\nmsgid \"Butel\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:19\nmsgid \"Valandovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:20\nmsgid \"Vasilevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:21\nmsgid \"Vevčani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:22\nmsgid \"Veles\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:23\nmsgid \"Vinica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:24\nmsgid \"Vraneštica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:25\nmsgid \"Vrapčište\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:26\nmsgid \"Gazi Baba\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:27\nmsgid \"Gevgelija\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:28\nmsgid \"Gostivar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:29\nmsgid \"Gradsko\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:30\nmsgid \"Debar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:31\nmsgid \"Debarca\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:32\nmsgid \"Delčevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:33\nmsgid \"Demir Kapija\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:34\nmsgid \"Demir Hisar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:35\nmsgid \"Dolneni\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:36\nmsgid \"Drugovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:37\nmsgid \"Gjorče Petrov\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:38\nmsgid \"Želino\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:39\nmsgid \"Zajas\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:40\nmsgid \"Zelenikovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:41\nmsgid \"Zrnovci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:42\nmsgid \"Ilinden\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:43\nmsgid \"Jegunovce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:44\nmsgid \"Kavadarci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:45\nmsgid \"Karbinci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:46\nmsgid \"Karpoš\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:47\nmsgid \"Kisela Voda\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:48\nmsgid \"Kičevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:49\nmsgid \"Konče\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:50\nmsgid \"Koćani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:51\nmsgid \"Kratovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:52\nmsgid \"Kriva Palanka\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:53\nmsgid \"Krivogaštani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:54\nmsgid \"Kruševo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:55\nmsgid \"Kumanovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:56\nmsgid \"Lipkovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:57\nmsgid \"Lozovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:58\nmsgid \"Mavrovo i Rostuša\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:59\nmsgid \"Makedonska Kamenica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:60\nmsgid \"Makedonski Brod\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:61\nmsgid \"Mogila\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:62\nmsgid \"Negotino\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:63\nmsgid \"Novaci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:64\nmsgid \"Novo Selo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:65\nmsgid \"Oslomej\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:66\nmsgid \"Ohrid\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:67\nmsgid \"Petrovec\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:68\nmsgid \"Pehčevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:69\nmsgid \"Plasnica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:70\nmsgid \"Prilep\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:71\nmsgid \"Probištip\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:72\nmsgid \"Radoviš\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:73\nmsgid \"Rankovce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:74\nmsgid \"Resen\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:75\nmsgid \"Rosoman\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:76\nmsgid \"Saraj\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:77\nmsgid \"Sveti Nikole\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:78\nmsgid \"Sopište\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:79\nmsgid \"Star Dojran\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:80\nmsgid \"Staro Nagoričane\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:81\nmsgid \"Struga\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:82\nmsgid \"Strumica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:83\nmsgid \"Studeničani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:84\nmsgid \"Tearce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:85\nmsgid \"Tetovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:86\nmsgid \"Centar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:87\nmsgid \"Centar-Župa\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:88\nmsgid \"Čair\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:89\nmsgid \"Čaška\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:90\nmsgid \"Češinovo-Obleševo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:91\nmsgid \"Čučer-Sandevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:92\nmsgid \"Štip\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:93\nmsgid \"Šuto Orizari\"\nmsgstr \"\"\n\n#: mk/models.py:11\nmsgid \"Macedonian identity card number\"\nmsgstr \"\"\n\n#: mk/models.py:25\nmsgid \"A Macedonian municipality (2 character code)\"\nmsgstr \"\"\n\n#: mk/models.py:35\nmsgid \"Unique master citizen number (13 digits)\"\nmsgstr \"\"\n\n#: mx/forms.py:67\nmsgid \"Enter a valid zip code in the format XXXXX.\"\nmsgstr \"\"\n\n#: mx/forms.py:110\nmsgid \"Enter a valid RFC.\"\nmsgstr \"\"\n\n#: mx/forms.py:111\nmsgid \"Invalid checksum for RFC.\"\nmsgstr \"\"\n\n#: mx/forms.py:191\nmsgid \"Enter a valid CURP.\"\nmsgstr \"\"\n\n#: mx/forms.py:192\nmsgid \"Invalid checksum for CURP.\"\nmsgstr \"\"\n\n#: mx/models.py:14\nmsgid \"Mexico state (three uppercase letters)\"\nmsgstr \"\"\n\n#: mx/models.py:27\nmsgid \"Mexico zip code\"\nmsgstr \"\"\n\n#: mx/models.py:44\nmsgid \"Mexican RFC\"\nmsgstr \"\"\n\n#: mx/models.py:61\nmsgid \"Mexican CURP\"\nmsgstr \"\"\n\n#: mx/mx_states.py:14\nmsgid \"Aguascalientes\"\nmsgstr \"Aguascalientes\"\n\n#: mx/mx_states.py:15\nmsgid \"Baja California\"\nmsgstr \"Baja California\"\n\n#: mx/mx_states.py:16\nmsgid \"Baja California Sur\"\nmsgstr \"Baja California Sur\"\n\n#: mx/mx_states.py:17\nmsgid \"Campeche\"\nmsgstr \"Campeche\"\n\n#: mx/mx_states.py:18\nmsgid \"Chihuahua\"\nmsgstr \"Chihuahua\"\n\n#: mx/mx_states.py:19\nmsgid \"Chiapas\"\nmsgstr \"Chiapas\"\n\n#: mx/mx_states.py:20\nmsgid \"Coahuila\"\nmsgstr \"Coahuila\"\n\n#: mx/mx_states.py:21\nmsgid \"Colima\"\nmsgstr \"Colima\"\n\n#: mx/mx_states.py:22\nmsgid \"Distrito Federal\"\nmsgstr \"Distrito Federal\"\n\n#: mx/mx_states.py:23\nmsgid \"Durango\"\nmsgstr \"Durango\"\n\n#: mx/mx_states.py:24\nmsgid \"Guerrero\"\nmsgstr \"Guerrero\"\n\n#: mx/mx_states.py:25\nmsgid \"Guanajuato\"\nmsgstr \"Guanajuato\"\n\n#: mx/mx_states.py:26\nmsgid \"Hidalgo\"\nmsgstr \"Hidalgo\"\n\n#: mx/mx_states.py:27\nmsgid \"Jalisco\"\nmsgstr \"Jalisco\"\n\n#: mx/mx_states.py:28\nmsgid \"Estado de México\"\nmsgstr \"Estado de México\"\n\n#: mx/mx_states.py:29\nmsgid \"Michoacán\"\nmsgstr \"Michoacán\"\n\n#: mx/mx_states.py:30\nmsgid \"Morelos\"\nmsgstr \"Morelos\"\n\n#: mx/mx_states.py:31\nmsgid \"Nayarit\"\nmsgstr \"Nayarit\"\n\n#: mx/mx_states.py:32\nmsgid \"Nuevo León\"\nmsgstr \"Nuevo León\"\n\n#: mx/mx_states.py:33\nmsgid \"Oaxaca\"\nmsgstr \"Oaxaca\"\n\n#: mx/mx_states.py:34\nmsgid \"Puebla\"\nmsgstr \"Puebla\"\n\n#: mx/mx_states.py:35\nmsgid \"Querétaro\"\nmsgstr \"Querétaro\"\n\n#: mx/mx_states.py:36\nmsgid \"Quintana Roo\"\nmsgstr \"Quintana Roo\"\n\n#: mx/mx_states.py:37\nmsgid \"Sinaloa\"\nmsgstr \"Sinaloa\"\n\n#: mx/mx_states.py:38\nmsgid \"San Luis Potosí\"\nmsgstr \"San Luis Potosí\"\n\n#: mx/mx_states.py:39\nmsgid \"Sonora\"\nmsgstr \"Sonora\"\n\n#: mx/mx_states.py:40\nmsgid \"Tabasco\"\nmsgstr \"Tabasco\"\n\n#: mx/mx_states.py:41\nmsgid \"Tamaulipas\"\nmsgstr \"Tamaulipas\"\n\n#: mx/mx_states.py:42\nmsgid \"Tlaxcala\"\nmsgstr \"Tlaxcala\"\n\n#: mx/mx_states.py:43\nmsgid \"Veracruz\"\nmsgstr \"Veracruz\"\n\n#: mx/mx_states.py:44\nmsgid \"Yucatán\"\nmsgstr \"Yucatán\"\n\n#: mx/mx_states.py:45\nmsgid \"Zacatecas\"\nmsgstr \"Zacatecas\"\n\n#: nl/forms.py:26\nmsgid \"Enter a valid postal code\"\nmsgstr \"Syötä oikea postinumero\"\n\n#: nl/forms.py:82\nmsgid \"Enter a valid SoFi number\"\nmsgstr \"Syötä ikea SoFi-numero\"\n\n#: nl/nl_provinces.py:4\nmsgid \"Drenthe\"\nmsgstr \"Drenthe\"\n\n#: nl/nl_provinces.py:5\nmsgid \"Flevoland\"\nmsgstr \"Flevoland\"\n\n#: nl/nl_provinces.py:6\nmsgid \"Friesland\"\nmsgstr \"Friesland\"\n\n#: nl/nl_provinces.py:7\nmsgid \"Gelderland\"\nmsgstr \"Gelderland\"\n\n#: nl/nl_provinces.py:8\nmsgid \"Groningen\"\nmsgstr \"Groningen\"\n\n#: nl/nl_provinces.py:10\nmsgid \"Noord-Brabant\"\nmsgstr \"Noord-Brabant\"\n\n#: nl/nl_provinces.py:11\nmsgid \"Noord-Holland\"\nmsgstr \"Noord-Holland\"\n\n#: nl/nl_provinces.py:12\nmsgid \"Overijssel\"\nmsgstr \"Overijssel\"\n\n#: nl/nl_provinces.py:13\nmsgid \"Utrecht\"\nmsgstr \"Utrecht\"\n\n#: nl/nl_provinces.py:14\nmsgid \"Zeeland\"\nmsgstr \"Zeeland\"\n\n#: nl/nl_provinces.py:15\nmsgid \"Zuid-Holland\"\nmsgstr \"Zuid-Holland\"\n\n#: no/forms.py:39\nmsgid \"Enter a valid Norwegian social security number.\"\nmsgstr \"Syötä oikea norjalainen henkilötunnus.\"\n\n#: pe/forms.py:28\nmsgid \"This field requires 8 digits.\"\nmsgstr \"Tähän kenttään vaaditaan 8 numeroa.\"\n\n#: pe/forms.py:56\nmsgid \"This field requires 11 digits.\"\nmsgstr \"Tähän kenttään vaaditaan 11 numeroa.\"\n\n#: pl/forms.py:42\nmsgid \"National Identification Number consists of 11 digits.\"\nmsgstr \"Henkilötunnus koostuu 11 numerosta.\"\n\n#: pl/forms.py:43\nmsgid \"Wrong checksum for the National Identification Number.\"\nmsgstr \"Virheellinen tarkistusnumero henkilötunnukselle.\"\n\n#: pl/forms.py:79\nmsgid \"National ID Card Number consists of 3 letters and 6 digits.\"\nmsgstr \"\"\n\n#: pl/forms.py:80\nmsgid \"Wrong checksum for the National ID Card Number.\"\nmsgstr \"\"\n\n#: pl/forms.py:131\nmsgid \"\"\n\"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or \"\n\"XXXXXXXXXX.\"\nmsgstr \"\"\n\n#: pl/forms.py:132\nmsgid \"Wrong checksum for the Tax Number (NIP).\"\nmsgstr \"Väärä tarkistusnumero veronumerolle (NIP).\"\n\n#: pl/forms.py:171\nmsgid \"National Business Register Number (REGON) consists of 9 or 14 digits.\"\nmsgstr \"National Business Register -numerossa (REGON) on 9 tai 14 numeroa.\"\n\n#: pl/forms.py:172\nmsgid \"Wrong checksum for the National Business Register Number (REGON).\"\nmsgstr \"Wrong checksum for the National Business Register Number (REGON).\"\n\n#: pl/forms.py:212\nmsgid \"Enter a postal code in the format XX-XXX.\"\nmsgstr \"Syötä postinumero muodossa XX-XXX.\"\n\n#: pl/pl_voivodeships.py:8\nmsgid \"Lower Silesia\"\nmsgstr \"Lower Silesia\"\n\n#: pl/pl_voivodeships.py:9\nmsgid \"Kuyavia-Pomerania\"\nmsgstr \"Kuyavia-Pomerania\"\n\n#: pl/pl_voivodeships.py:10\nmsgid \"Lublin\"\nmsgstr \"Lublin\"\n\n#: pl/pl_voivodeships.py:11\nmsgid \"Lubusz\"\nmsgstr \"Lubusz\"\n\n#: pl/pl_voivodeships.py:12\nmsgid \"Lodz\"\nmsgstr \"Lodz\"\n\n#: pl/pl_voivodeships.py:13\nmsgid \"Lesser Poland\"\nmsgstr \"Lesser Poland\"\n\n#: pl/pl_voivodeships.py:14\nmsgid \"Masovia\"\nmsgstr \"Masovia\"\n\n#: pl/pl_voivodeships.py:15\nmsgid \"Opole\"\nmsgstr \"Opole\"\n\n#: pl/pl_voivodeships.py:16\nmsgid \"Subcarpatia\"\nmsgstr \"Subcarpatia\"\n\n#: pl/pl_voivodeships.py:17\nmsgid \"Podlasie\"\nmsgstr \"Podlasie\"\n\n#: pl/pl_voivodeships.py:18\nmsgid \"Pomerania\"\nmsgstr \"Pomerania\"\n\n#: pl/pl_voivodeships.py:19\nmsgid \"Silesia\"\nmsgstr \"Silesia\"\n\n#: pl/pl_voivodeships.py:20\nmsgid \"Swietokrzyskie\"\nmsgstr \"Swietokrzyskie\"\n\n#: pl/pl_voivodeships.py:21\nmsgid \"Warmia-Masuria\"\nmsgstr \"Warmia-Masuria\"\n\n#: pl/pl_voivodeships.py:22\nmsgid \"Greater Poland\"\nmsgstr \"Greater Poland\"\n\n#: pl/pl_voivodeships.py:23\nmsgid \"West Pomerania\"\nmsgstr \"West Pomerania\"\n\n#: pt/forms.py:19\nmsgid \"Enter a zip code in the format XXXX-XXX.\"\nmsgstr \"Syötä postinumero muodossa XXXX-XXX.\"\n\n#: pt/forms.py:39\nmsgid \"Phone numbers must have 9 digits, or start by + or 00.\"\nmsgstr \"\"\n\"Puhelinnumeroissa tulee olla 9 numeroa tai niiden kuuluu alkaa +:lla tai  00:\"\n\"lla.\"\n\n#: ro/forms.py:22\nmsgid \"Enter a valid CIF.\"\nmsgstr \"Syötä oikea CIF.\"\n\n#: ro/forms.py:59\nmsgid \"Enter a valid CNP.\"\nmsgstr \"Syötä oikea CNP.\"\n\n#: ro/forms.py:143\nmsgid \"Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format\"\nmsgstr \"Syötä oikea IBAN muodossa ROXX-XXXX-XXXX-XXXX-XXXX-XXXX\"\n\n#: ro/forms.py:175\nmsgid \"Phone numbers must be in XXXX-XXXXXX format.\"\nmsgstr \"Puhelinnumeron tulee olla muodossa XXXX-XXXXXX.\"\n\n#: ro/forms.py:200\nmsgid \"Enter a valid postal code in the format XXXXXX\"\nmsgstr \"Syötä postinumero muodossa XXXXXX.\"\n\n#: ru/forms.py:37\nmsgid \"Enter a postal code in the format XXXXXX.\"\nmsgstr \"\"\n\n#: ru/forms.py:50\nmsgid \"Enter a passport number in the format XXXX XXXXXX.\"\nmsgstr \"\"\n\n#: ru/forms.py:63\nmsgid \"Enter a passport number in the format XX XXXXXXX.\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:10\nmsgid \"Central Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:11\nmsgid \"South Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:12\nmsgid \"North-West Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:13\nmsgid \"Far-East Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:14\nmsgid \"Siberian Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:15\nmsgid \"Ural Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:16\nmsgid \"Privolzhsky Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:17\nmsgid \"North-Caucasian Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:21\nmsgid \"Moskva\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:22\nmsgid \"Saint-Peterburg\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:23\nmsgid \"Moskovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:24\nmsgid \"Adygeya, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:25\nmsgid \"Bashkortostan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:26\nmsgid \"Buryatia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:27\nmsgid \"Altay, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:28\nmsgid \"Dagestan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:29\nmsgid \"Ingushskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:30\nmsgid \"Kabardino-Balkarskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:31\nmsgid \"Kalmykia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:32\nmsgid \"Karachaevo-Cherkesskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:33\nmsgid \"Karelia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:34\nmsgid \"Komi, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:35\nmsgid \"Mariy Ehl, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:36\nmsgid \"Mordovia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:37\nmsgid \"Sakha, Respublika (Yakutiya)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:38\nmsgid \"Severnaya Osetia, Respublika (Alania)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:39\nmsgid \"Tatarstan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:40\nmsgid \"Tyva, Respublika (Tuva)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:41\nmsgid \"Udmurtskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:42\nmsgid \"Khakassiya, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:43\nmsgid \"Chechenskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:44\nmsgid \"Chuvashskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:45\nmsgid \"Altayskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:46\nmsgid \"Zabaykalskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:47\nmsgid \"Kamchatskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:48\nmsgid \"Krasnodarskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:49\nmsgid \"Krasnoyarskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:50\nmsgid \"Permskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:51\nmsgid \"Primorskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:52\nmsgid \"Stavropol'siyy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:53\nmsgid \"Khabarovskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:54\nmsgid \"Amurskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:55\nmsgid \"Arkhangel'skaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:56\nmsgid \"Astrakhanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:57\nmsgid \"Belgorodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:58\nmsgid \"Bryanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:59\nmsgid \"Vladimirskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:60\nmsgid \"Volgogradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:61\nmsgid \"Vologodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:62\nmsgid \"Voronezhskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:63\nmsgid \"Ivanovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:64\nmsgid \"Irkutskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:65\nmsgid \"Kaliningradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:66\nmsgid \"Kaluzhskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:67\nmsgid \"Kemerovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:68\nmsgid \"Kirovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:69\nmsgid \"Kostromskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:70\nmsgid \"Kurganskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:71\nmsgid \"Kurskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:72\nmsgid \"Leningradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:73\nmsgid \"Lipeckaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:74\nmsgid \"Magadanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:75\nmsgid \"Murmanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:76\nmsgid \"Nizhegorodskaja oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:77\nmsgid \"Novgorodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:78\nmsgid \"Novosibirskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:79\nmsgid \"Omskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:80\nmsgid \"Orenburgskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:81\nmsgid \"Orlovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:82\nmsgid \"Penzenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:83\nmsgid \"Pskovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:84\nmsgid \"Rostovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:85\nmsgid \"Rjazanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:86\nmsgid \"Samarskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:87\nmsgid \"Saratovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:88\nmsgid \"Sakhalinskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:89\nmsgid \"Sverdlovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:90\nmsgid \"Smolenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:91\nmsgid \"Tambovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:92\nmsgid \"Tverskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:93\nmsgid \"Tomskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:94\nmsgid \"Tul'skaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:95\nmsgid \"Tyumenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:96\nmsgid \"Ul'ianovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:97\nmsgid \"Chelyabinskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:98\nmsgid \"Yaroslavskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:99\nmsgid \"Evreyskaya avtonomnaja oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:100\nmsgid \"Neneckiy autonomnyy okrug\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:101\nmsgid \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:102\nmsgid \"Chukotskiy avtonomnyy okrug\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:103\nmsgid \"Yamalo-Neneckiy avtonomnyy okrug\"\nmsgstr \"\"\n\n#: se/forms.py:54\nmsgid \"Enter a valid Swedish organisation number.\"\nmsgstr \"Syötä oikea ruotsalainen yritystunnus.\"\n\n#: se/forms.py:111\nmsgid \"Enter a valid Swedish personal identity number.\"\nmsgstr \"Syötä oikea ruotsalainen henkilötunnus.\"\n\n#: se/forms.py:112\nmsgid \"Co-ordination numbers are not allowed.\"\nmsgstr \"Co-ordination numbers are not allowed.\"\n\n#: se/forms.py:154\nmsgid \"Enter a Swedish postal code in the format XXXXX.\"\nmsgstr \"Syötä ruotsalainen postinumero muodossa XXXXX.\"\n\n#: se/se_counties.py:16\nmsgid \"Stockholm\"\nmsgstr \"Tukholma\"\n\n#: se/se_counties.py:17\nmsgid \"Västerbotten\"\nmsgstr \"Västerbotten\"\n\n#: se/se_counties.py:18\nmsgid \"Norrbotten\"\nmsgstr \"Norrbotten\"\n\n#: se/se_counties.py:19\nmsgid \"Uppsala\"\nmsgstr \"Uppsala\"\n\n#: se/se_counties.py:20\nmsgid \"Södermanland\"\nmsgstr \"Södermanland\"\n\n#: se/se_counties.py:21\nmsgid \"Östergötland\"\nmsgstr \"Östergötland\"\n\n#: se/se_counties.py:22\nmsgid \"Jönköping\"\nmsgstr \"Jönköping\"\n\n#: se/se_counties.py:23\nmsgid \"Kronoberg\"\nmsgstr \"Kronoberg\"\n\n#: se/se_counties.py:24\nmsgid \"Kalmar\"\nmsgstr \"Kalmar\"\n\n#: se/se_counties.py:25\nmsgid \"Gotland\"\nmsgstr \"Gotland\"\n\n#: se/se_counties.py:26\nmsgid \"Blekinge\"\nmsgstr \"Blekinge\"\n\n#: se/se_counties.py:27\nmsgid \"Skåne\"\nmsgstr \"Skåne\"\n\n#: se/se_counties.py:28\nmsgid \"Halland\"\nmsgstr \"Halland\"\n\n#: se/se_counties.py:29\nmsgid \"Västra Götaland\"\nmsgstr \"Västra Götaland\"\n\n#: se/se_counties.py:30\nmsgid \"Värmland\"\nmsgstr \"Värmland\"\n\n#: se/se_counties.py:31\nmsgid \"Örebro\"\nmsgstr \"Örebro\"\n\n#: se/se_counties.py:32\nmsgid \"Västmanland\"\nmsgstr \"Västmanland\"\n\n#: se/se_counties.py:33\nmsgid \"Dalarna\"\nmsgstr \"Dalarna\"\n\n#: se/se_counties.py:34\nmsgid \"Gävleborg\"\nmsgstr \"Gävleborg\"\n\n#: se/se_counties.py:35\nmsgid \"Västernorrland\"\nmsgstr \"Västernorrland\"\n\n#: se/se_counties.py:36\nmsgid \"Jämtland\"\nmsgstr \"Jämtland\"\n\n#: si/forms.py:25\nmsgid \"The first 7 digits of the EMSO must represent a valid past date.\"\nmsgstr \"\"\n\n#: si/forms.py:26\nmsgid \"The EMSO is not valid.\"\nmsgstr \"\"\n\n#: si/forms.py:86\nmsgid \"Enter a valid tax number in form SIXXXXXXXX\"\nmsgstr \"\"\n\n#: si/forms.py:151\nmsgid \"Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:8\nmsgid \"Banska Bystrica\"\nmsgstr \"Banska Bystrica\"\n\n#: sk/sk_districts.py:9\nmsgid \"Banska Stiavnica\"\nmsgstr \"Banska Stiavnica\"\n\n#: sk/sk_districts.py:10\nmsgid \"Bardejov\"\nmsgstr \"Bardejov\"\n\n#: sk/sk_districts.py:11\nmsgid \"Banovce nad Bebravou\"\nmsgstr \"Banovce nad Bebravou\"\n\n#: sk/sk_districts.py:12\nmsgid \"Brezno\"\nmsgstr \"Brezno\"\n\n#: sk/sk_districts.py:13\nmsgid \"Bratislava I\"\nmsgstr \"Bratislava I\"\n\n#: sk/sk_districts.py:14\nmsgid \"Bratislava II\"\nmsgstr \"Bratislava II\"\n\n#: sk/sk_districts.py:15\nmsgid \"Bratislava III\"\nmsgstr \"Bratislava III\"\n\n#: sk/sk_districts.py:16\nmsgid \"Bratislava IV\"\nmsgstr \"Bratislava IV\"\n\n#: sk/sk_districts.py:17\nmsgid \"Bratislava V\"\nmsgstr \"Bratislava V\"\n\n#: sk/sk_districts.py:18\nmsgid \"Bytca\"\nmsgstr \"Bytca\"\n\n#: sk/sk_districts.py:19\nmsgid \"Cadca\"\nmsgstr \"Cadca\"\n\n#: sk/sk_districts.py:20\nmsgid \"Detva\"\nmsgstr \"Detva\"\n\n#: sk/sk_districts.py:21\nmsgid \"Dolny Kubin\"\nmsgstr \"Dolny Kubin\"\n\n#: sk/sk_districts.py:22\nmsgid \"Dunajska Streda\"\nmsgstr \"Dunajska Streda\"\n\n#: sk/sk_districts.py:23\nmsgid \"Galanta\"\nmsgstr \"Galanta\"\n\n#: sk/sk_districts.py:24\nmsgid \"Gelnica\"\nmsgstr \"Gelnica\"\n\n#: sk/sk_districts.py:25\nmsgid \"Hlohovec\"\nmsgstr \"Hlohovec\"\n\n#: sk/sk_districts.py:26\nmsgid \"Humenne\"\nmsgstr \"Humenne\"\n\n#: sk/sk_districts.py:27\nmsgid \"Ilava\"\nmsgstr \"Ilava\"\n\n#: sk/sk_districts.py:28\nmsgid \"Kezmarok\"\nmsgstr \"Kezmarok\"\n\n#: sk/sk_districts.py:29\nmsgid \"Komarno\"\nmsgstr \"Komarno\"\n\n#: sk/sk_districts.py:30\nmsgid \"Kosice I\"\nmsgstr \"Kosice I\"\n\n#: sk/sk_districts.py:31\nmsgid \"Kosice II\"\nmsgstr \"Kosice II\"\n\n#: sk/sk_districts.py:32\nmsgid \"Kosice III\"\nmsgstr \"Kosice III\"\n\n#: sk/sk_districts.py:33\nmsgid \"Kosice IV\"\nmsgstr \"Kosice IV\"\n\n#: sk/sk_districts.py:34\nmsgid \"Kosice - okolie\"\nmsgstr \"Kosice - okolie\"\n\n#: sk/sk_districts.py:35\nmsgid \"Krupina\"\nmsgstr \"Krupina\"\n\n#: sk/sk_districts.py:36\nmsgid \"Kysucke Nove Mesto\"\nmsgstr \"Kysucke Nove Mesto\"\n\n#: sk/sk_districts.py:37\nmsgid \"Levice\"\nmsgstr \"Levice\"\n\n#: sk/sk_districts.py:38\nmsgid \"Levoca\"\nmsgstr \"Levoca\"\n\n#: sk/sk_districts.py:39\nmsgid \"Liptovsky Mikulas\"\nmsgstr \"Liptovsky Mikulas\"\n\n#: sk/sk_districts.py:40\nmsgid \"Lucenec\"\nmsgstr \"Lucenec\"\n\n#: sk/sk_districts.py:41\nmsgid \"Malacky\"\nmsgstr \"Malacky\"\n\n#: sk/sk_districts.py:42\nmsgid \"Martin\"\nmsgstr \"Martin\"\n\n#: sk/sk_districts.py:43\nmsgid \"Medzilaborce\"\nmsgstr \"Medzilaborce\"\n\n#: sk/sk_districts.py:44\nmsgid \"Michalovce\"\nmsgstr \"Michalovce\"\n\n#: sk/sk_districts.py:45\nmsgid \"Myjava\"\nmsgstr \"Myjava\"\n\n#: sk/sk_districts.py:46\nmsgid \"Namestovo\"\nmsgstr \"Namestovo\"\n\n#: sk/sk_districts.py:47\nmsgid \"Nitra\"\nmsgstr \"Nitra\"\n\n#: sk/sk_districts.py:48\nmsgid \"Nove Mesto nad Vahom\"\nmsgstr \"Nove Mesto nad Vahom\"\n\n#: sk/sk_districts.py:49\nmsgid \"Nove Zamky\"\nmsgstr \"Nove Zamky\"\n\n#: sk/sk_districts.py:50\nmsgid \"Partizanske\"\nmsgstr \"Partizanske\"\n\n#: sk/sk_districts.py:51\nmsgid \"Pezinok\"\nmsgstr \"Pezinok\"\n\n#: sk/sk_districts.py:52\nmsgid \"Piestany\"\nmsgstr \"Piestany\"\n\n#: sk/sk_districts.py:53\nmsgid \"Poltar\"\nmsgstr \"Poltar\"\n\n#: sk/sk_districts.py:54\nmsgid \"Poprad\"\nmsgstr \"Poprad\"\n\n#: sk/sk_districts.py:55\nmsgid \"Povazska Bystrica\"\nmsgstr \"Povazska Bystrica\"\n\n#: sk/sk_districts.py:56\nmsgid \"Presov\"\nmsgstr \"Presov\"\n\n#: sk/sk_districts.py:57\nmsgid \"Prievidza\"\nmsgstr \"Prievidza\"\n\n#: sk/sk_districts.py:58\nmsgid \"Puchov\"\nmsgstr \"Puchov\"\n\n#: sk/sk_districts.py:59\nmsgid \"Revuca\"\nmsgstr \"Revuca\"\n\n#: sk/sk_districts.py:60\nmsgid \"Rimavska Sobota\"\nmsgstr \"Rimavska Sobota\"\n\n#: sk/sk_districts.py:61\nmsgid \"Roznava\"\nmsgstr \"Roznava\"\n\n#: sk/sk_districts.py:62\nmsgid \"Ruzomberok\"\nmsgstr \"Ruzomberok\"\n\n#: sk/sk_districts.py:63\nmsgid \"Sabinov\"\nmsgstr \"Sabinov\"\n\n#: sk/sk_districts.py:64\nmsgid \"Senec\"\nmsgstr \"Senec\"\n\n#: sk/sk_districts.py:65\nmsgid \"Senica\"\nmsgstr \"Senica\"\n\n#: sk/sk_districts.py:66\nmsgid \"Skalica\"\nmsgstr \"Skalica\"\n\n#: sk/sk_districts.py:67\nmsgid \"Snina\"\nmsgstr \"Snina\"\n\n#: sk/sk_districts.py:68\nmsgid \"Sobrance\"\nmsgstr \"Sobrance\"\n\n#: sk/sk_districts.py:69\nmsgid \"Spisska Nova Ves\"\nmsgstr \"Spisska Nova Ves\"\n\n#: sk/sk_districts.py:70\nmsgid \"Stara Lubovna\"\nmsgstr \"Stara Lubovna\"\n\n#: sk/sk_districts.py:71\nmsgid \"Stropkov\"\nmsgstr \"Stropkov\"\n\n#: sk/sk_districts.py:72\nmsgid \"Svidnik\"\nmsgstr \"Svidnik\"\n\n#: sk/sk_districts.py:73\nmsgid \"Sala\"\nmsgstr \"Sala\"\n\n#: sk/sk_districts.py:74\nmsgid \"Topolcany\"\nmsgstr \"Topolcany\"\n\n#: sk/sk_districts.py:75\nmsgid \"Trebisov\"\nmsgstr \"Trebisov\"\n\n#: sk/sk_districts.py:76\nmsgid \"Trencin\"\nmsgstr \"Trencin\"\n\n#: sk/sk_districts.py:77\nmsgid \"Trnava\"\nmsgstr \"Trnava\"\n\n#: sk/sk_districts.py:78\nmsgid \"Turcianske Teplice\"\nmsgstr \"Turcianske Teplice\"\n\n#: sk/sk_districts.py:79\nmsgid \"Tvrdosin\"\nmsgstr \"Tvrdosin\"\n\n#: sk/sk_districts.py:80\nmsgid \"Velky Krtis\"\nmsgstr \"Velky Krtis\"\n\n#: sk/sk_districts.py:81\nmsgid \"Vranov nad Toplou\"\nmsgstr \"Vranov nad Toplou\"\n\n#: sk/sk_districts.py:82\nmsgid \"Zlate Moravce\"\nmsgstr \"Zlate Moravce\"\n\n#: sk/sk_districts.py:83\nmsgid \"Zvolen\"\nmsgstr \"Zvolen\"\n\n#: sk/sk_districts.py:84\nmsgid \"Zarnovica\"\nmsgstr \"Zarnovica\"\n\n#: sk/sk_districts.py:85\nmsgid \"Ziar nad Hronom\"\nmsgstr \"Ziar nad Hronom\"\n\n#: sk/sk_districts.py:86\nmsgid \"Zilina\"\nmsgstr \"Zilina\"\n\n#: sk/sk_regions.py:8\nmsgid \"Banska Bystrica region\"\nmsgstr \"Banská Bystrican alue\"\n\n#: sk/sk_regions.py:9\nmsgid \"Bratislava region\"\nmsgstr \"Bratislavan alue\"\n\n#: sk/sk_regions.py:10\nmsgid \"Kosice region\"\nmsgstr \"Košicen alue\"\n\n#: sk/sk_regions.py:11\nmsgid \"Nitra region\"\nmsgstr \"Nitran alue\"\n\n#: sk/sk_regions.py:12\nmsgid \"Presov region\"\nmsgstr \"Prešovin alue\"\n\n#: sk/sk_regions.py:13\nmsgid \"Trencin region\"\nmsgstr \"Trenčínin alue\"\n\n#: sk/sk_regions.py:14\nmsgid \"Trnava region\"\nmsgstr \"Trnava region\"\n\n#: sk/sk_regions.py:15\nmsgid \"Zilina region\"\nmsgstr \"Zilina region\"\n\n#: tr/forms.py:21\nmsgid \"Enter a postal code in the format XXXXX.\"\nmsgstr \"Syötä postinumero muodossa XXXXX.\"\n\n#: tr/forms.py:42\nmsgid \"Phone numbers must be in 0XXX XXX XXXX format.\"\nmsgstr \"Puhelinnumeroiden pitää olla muodossa 0XXX XXX XXXX.\"\n\n#: tr/forms.py:69\nmsgid \"Enter a valid Turkish Identification number.\"\nmsgstr \"Syötä oikea turkkilainen henkilötunnus.\"\n\n#: tr/forms.py:70\nmsgid \"Turkish Identification number must be 11 digits.\"\nmsgstr \"Turkkilaisessa henkilötunnuksessa pitää olla 11 numeroa.\"\n\n#: us/forms.py:21\nmsgid \"Enter a zip code in the format XXXXX or XXXXX-XXXX.\"\nmsgstr \"Enter a zip code in the format XXXXX or XXXXX-XXXX.\"\n\n#: us/forms.py:59\nmsgid \"Enter a valid U.S. Social Security number in XXX-XX-XXXX format.\"\nmsgstr \"Enter a valid U.S. Social Security number in XXX-XX-XXXX format.\"\n\n#: us/forms.py:92\nmsgid \"Enter a U.S. state or territory.\"\nmsgstr \"Enter a U.S. state or territory.\"\n\n#: us/models.py:8\nmsgid \"U.S. state (two uppercase letters)\"\nmsgstr \"USA:n osavaltio (suuraakkosin, kaksi kirjainta)\"\n\n#: us/models.py:17\nmsgid \"U.S. postal code (two uppercase letters)\"\nmsgstr \"USA:n postikoodi (kaksi isoa kirjainta)\"\n\n#: us/models.py:26\nmsgid \"Phone number\"\nmsgstr \"Puhelinnumero\"\n\n#: uy/forms.py:29\nmsgid \"Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.\"\nmsgstr \"Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.\"\n\n#: uy/forms.py:31\nmsgid \"Enter a valid CI number.\"\nmsgstr \"Enter a valid CI number.\"\n\n#: za/forms.py:22\nmsgid \"Enter a valid South African ID number\"\nmsgstr \"Enter a valid South African ID number\"\n\n#: za/forms.py:56\nmsgid \"Enter a valid South African postal code\"\nmsgstr \"Enter a valid South African postal code\"\n\n#: za/za_provinces.py:4\nmsgid \"Eastern Cape\"\nmsgstr \"Eastern Cape\"\n\n#: za/za_provinces.py:5\nmsgid \"Free State\"\nmsgstr \"Free State\"\n\n#: za/za_provinces.py:6\nmsgid \"Gauteng\"\nmsgstr \"Gauteng\"\n\n#: za/za_provinces.py:7\nmsgid \"KwaZulu-Natal\"\nmsgstr \"KwaZulu-Natal\"\n\n#: za/za_provinces.py:8\nmsgid \"Limpopo\"\nmsgstr \"Limpopo\"\n\n#: za/za_provinces.py:9\nmsgid \"Mpumalanga\"\nmsgstr \"Mpumalanga\"\n\n#: za/za_provinces.py:10\nmsgid \"Northern Cape\"\nmsgstr \"Northern Cape\"\n\n#: za/za_provinces.py:11\nmsgid \"North West\"\nmsgstr \"North West\"\n\n#: za/za_provinces.py:12\nmsgid \"Western Cape\"\nmsgstr \"Western Cape\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/locale/fr/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <claude@2xlibre.net>, 2011-2012.\n# Claude Paroz <claude@2xlibre.net>, 2011.\n# claudep <claude@2xlibre.net>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-10-17 09:31+0000\\n\"\n\"Last-Translator: claudep <claude@2xlibre.net>\\n\"\n\"Language-Team: French (http://www.transifex.com/projects/p/django/language/\"\n\"fr/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: fr\\n\"\n\"Plural-Forms: nplurals=2; plural=(n > 1);\\n\"\n\n#: ar/forms.py:30\nmsgid \"Enter a postal code in the format NNNN or ANNNNAAA.\"\nmsgstr \"Saisissez un code postal au format NNNN ou ANNNNAAA.\"\n\n#: ar/forms.py:52 br/forms.py:95 br/forms.py:134 pe/forms.py:27 pe/forms.py:55\nmsgid \"This field requires only numbers.\"\nmsgstr \"Ce champ ne doit contenir que des nombres.\"\n\n#: ar/forms.py:53\nmsgid \"This field requires 7 or 8 digits.\"\nmsgstr \"Ce champ requiert 7 ou 8 chiffres.\"\n\n#: ar/forms.py:82\nmsgid \"Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.\"\nmsgstr \"Saisissez un numéro CUIT au format XX-XXXXXXXX-X ou XXXXXXXXXXXX.\"\n\n#: ar/forms.py:83\nmsgid \"Invalid CUIT.\"\nmsgstr \"CUIT non valide.\"\n\n#: ar/forms.py:84\nmsgid \"Invalid legal type. Type must be 27, 20, 23 or 30.\"\nmsgstr \"Type légal non valable. Le type doit être 27, 20, 23 ou 30.\"\n\n#: at/at_states.py:5\nmsgid \"Burgenland\"\nmsgstr \"Burgenland\"\n\n#: at/at_states.py:6\nmsgid \"Carinthia\"\nmsgstr \"Carinthie\"\n\n#: at/at_states.py:7\nmsgid \"Lower Austria\"\nmsgstr \"Basse-Autriche\"\n\n#: at/at_states.py:8\nmsgid \"Upper Austria\"\nmsgstr \"Haute-Autriche\"\n\n#: at/at_states.py:9\nmsgid \"Salzburg\"\nmsgstr \"Salzburg\"\n\n#: at/at_states.py:10\nmsgid \"Styria\"\nmsgstr \"Styrie\"\n\n#: at/at_states.py:11\nmsgid \"Tyrol\"\nmsgstr \"Tyrol\"\n\n#: at/at_states.py:12\nmsgid \"Vorarlberg\"\nmsgstr \"Vorarlberg\"\n\n#: at/at_states.py:13\nmsgid \"Vienna\"\nmsgstr \"Vienne\"\n\n#: at/forms.py:22 ch/forms.py:22 no/forms.py:19\nmsgid \"Enter a zip code in the format XXXX.\"\nmsgstr \"Saisissez un code postal norvégien au format XXXX.\"\n\n#: at/forms.py:50\nmsgid \"Enter a valid Austrian Social Security Number in XXXX XXXXXX format.\"\nmsgstr \"\"\n\"Saisissez un numéro de sécurité sociale autrichien valide au format XXXX \"\n\"XXXXXX.\"\n\n#: au/forms.py:26\nmsgid \"Enter a 4 digit postcode.\"\nmsgstr \"Saisissez un code postal à 4 chiffres.\"\n\n#: au/models.py:9\nmsgid \"Australian State\"\nmsgstr \"État australien\"\n\n#: au/models.py:19\nmsgid \"Australian Postcode\"\nmsgstr \"Code postal australien\"\n\n#: au/models.py:33\nmsgid \"Australian Phone number\"\nmsgstr \"Numéro de téléphone australien\"\n\n#: be/be_provinces.py:5\nmsgid \"Antwerp\"\nmsgstr \"Anvers\"\n\n#: be/be_provinces.py:6\nmsgid \"Brussels\"\nmsgstr \"Bruxelles\"\n\n#: be/be_provinces.py:7\nmsgid \"East Flanders\"\nmsgstr \"Flandre Orientale\"\n\n#: be/be_provinces.py:8\nmsgid \"Flemish Brabant\"\nmsgstr \"Brabant flamand\"\n\n#: be/be_provinces.py:9\nmsgid \"Hainaut\"\nmsgstr \"Hainaut\"\n\n#: be/be_provinces.py:10\nmsgid \"Liege\"\nmsgstr \"Liège\"\n\n#: be/be_provinces.py:11 nl/nl_provinces.py:9\nmsgid \"Limburg\"\nmsgstr \"Limbourg\"\n\n#: be/be_provinces.py:12\nmsgid \"Luxembourg\"\nmsgstr \"Luxembourg\"\n\n#: be/be_provinces.py:13\nmsgid \"Namur\"\nmsgstr \"Namur\"\n\n#: be/be_provinces.py:14\nmsgid \"Walloon Brabant\"\nmsgstr \"Brabant wallon\"\n\n#: be/be_provinces.py:15\nmsgid \"West Flanders\"\nmsgstr \"Flandre Occidentale\"\n\n#: be/be_regions.py:5\nmsgid \"Brussels Capital Region\"\nmsgstr \"Région de Bruxelles-Capitale\"\n\n#: be/be_regions.py:6\nmsgid \"Flemish Region\"\nmsgstr \"Région flamande\"\n\n#: be/be_regions.py:7\nmsgid \"Wallonia\"\nmsgstr \"Wallonie\"\n\n#: be/forms.py:25\nmsgid \"Enter a valid postal code in the range and format 1XXX - 9XXX.\"\nmsgstr \"\"\n\"Saisissez un code postal valide au format et dans l'intervalle 1XXX-9XXX.\"\n\n#: be/forms.py:48\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\nmsgstr \"\"\n\"Saisissez un numéro de téléphone valide dans l'un des formats 0x xxx xx xx, \"\n\"0xx xx xx xx, 04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.\"\n\"xxx.xx.xx, 0xx.xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx ou 04xxxxxxxx.\"\n\n#: br/forms.py:22\nmsgid \"Enter a zip code in the format XXXXX-XXX.\"\nmsgstr \"Saisissez un code postal brésilien au format XXXXX-XXX.\"\n\n#: br/forms.py:31\nmsgid \"Phone numbers must be in XX-XXXX-XXXX format.\"\nmsgstr \"Les numéros de téléphone doivent être au format XX-XXXX-XXXX.\"\n\n#: br/forms.py:58\nmsgid \"\"\n\"Select a valid brazilian state. That state is not one of the available \"\n\"states.\"\nmsgstr \"\"\n\"Sélectionnez un état brésilien valide. Cet état ne fait pas partie de ceux \"\n\"disponibles.\"\n\n#: br/forms.py:93\nmsgid \"Invalid CPF number.\"\nmsgstr \"Numéro CPF non valide.\"\n\n#: br/forms.py:94\nmsgid \"This field requires at most 11 digits or 14 characters.\"\nmsgstr \"Ce champ requiert au plus 11 chiffres ou 14 caractères.\"\n\n#: br/forms.py:133\nmsgid \"Invalid CNPJ number.\"\nmsgstr \"Numéro CNPJ non valide.\"\n\n#: br/forms.py:135\nmsgid \"This field requires at least 14 digits\"\nmsgstr \"Ce champ requiert au minimum 14 chiffres\"\n\n#: ca/forms.py:29\nmsgid \"Enter a postal code in the format XXX XXX.\"\nmsgstr \"Saisissez un code postal au format XXX XXX.\"\n\n#: ca/forms.py:47 us/forms.py:30\nmsgid \"Phone numbers must be in XXX-XXX-XXXX format.\"\nmsgstr \"Les numéros de téléphone doivent être au format XXX-XXX-XXXX.\"\n\n#: ca/forms.py:69\nmsgid \"Enter a Canadian province or territory.\"\nmsgstr \"Saisissez une province ou un territoire canadien.\"\n\n#: ca/forms.py:110\nmsgid \"Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.\"\nmsgstr \"\"\n\"Saisissez un numéro de sécurité sociale canadien au format XXX-XXX-XXX.\"\n\n#: ch/ch_states.py:5\nmsgid \"Aargau\"\nmsgstr \"Argovie\"\n\n#: ch/ch_states.py:6\nmsgid \"Appenzell Innerrhoden\"\nmsgstr \"Appenzell Rhodes-Intérieures\"\n\n#: ch/ch_states.py:7\nmsgid \"Appenzell Ausserrhoden\"\nmsgstr \"Appenzell Rhodes-Extérieures\"\n\n#: ch/ch_states.py:8\nmsgid \"Basel-Stadt\"\nmsgstr \"Bâle-Ville\"\n\n#: ch/ch_states.py:9\nmsgid \"Basel-Land\"\nmsgstr \"Bâle-Campagne\"\n\n#: ch/ch_states.py:10\nmsgid \"Berne\"\nmsgstr \"Berne\"\n\n#: ch/ch_states.py:11\nmsgid \"Fribourg\"\nmsgstr \"Fribourg\"\n\n#: ch/ch_states.py:12\nmsgid \"Geneva\"\nmsgstr \"Genève\"\n\n#: ch/ch_states.py:13\nmsgid \"Glarus\"\nmsgstr \"Glaris\"\n\n#: ch/ch_states.py:14\nmsgid \"Graubuenden\"\nmsgstr \"Grisons\"\n\n#: ch/ch_states.py:15\nmsgid \"Jura\"\nmsgstr \"Jura\"\n\n#: ch/ch_states.py:16\nmsgid \"Lucerne\"\nmsgstr \"Lucerne\"\n\n#: ch/ch_states.py:17\nmsgid \"Neuchatel\"\nmsgstr \"Neuchâtel\"\n\n#: ch/ch_states.py:18\nmsgid \"Nidwalden\"\nmsgstr \"Nidwald\"\n\n#: ch/ch_states.py:19\nmsgid \"Obwalden\"\nmsgstr \"Obwald\"\n\n#: ch/ch_states.py:20\nmsgid \"Schaffhausen\"\nmsgstr \"Schaffhouse\"\n\n#: ch/ch_states.py:21\nmsgid \"Schwyz\"\nmsgstr \"Schwyz\"\n\n#: ch/ch_states.py:22\nmsgid \"Solothurn\"\nmsgstr \"Soleure\"\n\n#: ch/ch_states.py:23\nmsgid \"St. Gallen\"\nmsgstr \"Saint Gall\"\n\n#: ch/ch_states.py:24\nmsgid \"Thurgau\"\nmsgstr \"Thurgovie\"\n\n#: ch/ch_states.py:25\nmsgid \"Ticino\"\nmsgstr \"Tessin\"\n\n#: ch/ch_states.py:26\nmsgid \"Uri\"\nmsgstr \"Uri\"\n\n#: ch/ch_states.py:27\nmsgid \"Valais\"\nmsgstr \"Valais\"\n\n#: ch/ch_states.py:28\nmsgid \"Vaud\"\nmsgstr \"Vaud\"\n\n#: ch/ch_states.py:29\nmsgid \"Zug\"\nmsgstr \"Zoug\"\n\n#: ch/ch_states.py:30\nmsgid \"Zurich\"\nmsgstr \"Zurich\"\n\n#: ch/forms.py:37\nmsgid \"Phone numbers must be in 0XX XXX XX XX format.\"\nmsgstr \"Les numéros de téléphone doivent être au format 0XX XXX XX XX.\"\n\n#: ch/forms.py:68\nmsgid \"\"\n\"Enter a valid Swiss identity or passport card number in X1234567<0 or \"\n\"1234567890 format.\"\nmsgstr \"\"\n\"Saisissez un numéro de passeport ou de carte d'identité suisse valide au \"\n\"format X1234567<0 ou 1234567890.\"\n\n#: cl/forms.py:32\nmsgid \"Enter a valid Chilean RUT.\"\nmsgstr \"Saisissez un RUT chilien valide.\"\n\n#: cl/forms.py:33\nmsgid \"Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.\"\nmsgstr \"Saisissez un RUT chilien valide au format XX.XXX.XXX-X.\"\n\n#: cl/forms.py:34\nmsgid \"The Chilean RUT is not valid.\"\nmsgstr \"Ce RUT chilien est non valide.\"\n\n#: cn/forms.py:84\nmsgid \"Enter a post code in the format XXXXXX.\"\nmsgstr \"Saisissez un code postal au format XXXXXX.\"\n\n#: cn/forms.py:105\nmsgid \"ID Card Number consists of 15 or 18 digits.\"\nmsgstr \"Le numéro de carte d'identité consiste en 15 ou 18 chiffres.\"\n\n#: cn/forms.py:106\nmsgid \"Invalid ID Card Number: Wrong checksum\"\nmsgstr \"Numéro de carte d'identité non valide : mauvaise somme de contrôle\"\n\n#: cn/forms.py:107\nmsgid \"Invalid ID Card Number: Wrong birthdate\"\nmsgstr \"Numéro de carte d'identité non valide : mauvaise date de naissance\"\n\n#: cn/forms.py:108\nmsgid \"Invalid ID Card Number: Wrong location code\"\nmsgstr \"Numéro de carte d'identité non valide : mauvais code d'emplacement\"\n\n#: cn/forms.py:193\nmsgid \"Enter a valid phone number.\"\nmsgstr \"Saisissez un numéro de téléphone valide.\"\n\n#: cn/forms.py:210\nmsgid \"Enter a valid cell number.\"\nmsgstr \"Saisissez un numéro de portable valide.\"\n\n#: cz/cz_regions.py:8\nmsgid \"Prague\"\nmsgstr \"Prague\"\n\n#: cz/cz_regions.py:9\nmsgid \"Central Bohemian Region\"\nmsgstr \"Bohême du Centre\"\n\n#: cz/cz_regions.py:10\nmsgid \"South Bohemian Region\"\nmsgstr \"Bohême du Sud\"\n\n#: cz/cz_regions.py:11\nmsgid \"Pilsen Region\"\nmsgstr \"Pilsen\"\n\n#: cz/cz_regions.py:12\nmsgid \"Carlsbad Region\"\nmsgstr \"Carlsbad\"\n\n#: cz/cz_regions.py:13\nmsgid \"Usti Region\"\nmsgstr \"Usti\"\n\n#: cz/cz_regions.py:14\nmsgid \"Liberec Region\"\nmsgstr \"Liberec\"\n\n#: cz/cz_regions.py:15\nmsgid \"Hradec Region\"\nmsgstr \"Hradec\"\n\n#: cz/cz_regions.py:16\nmsgid \"Pardubice Region\"\nmsgstr \"Pardubice\"\n\n#: cz/cz_regions.py:17\nmsgid \"Vysocina Region\"\nmsgstr \"Vysocina\"\n\n#: cz/cz_regions.py:18\nmsgid \"South Moravian Region\"\nmsgstr \"Moravie du Sud\"\n\n#: cz/cz_regions.py:19\nmsgid \"Olomouc Region\"\nmsgstr \"Olomouc\"\n\n#: cz/cz_regions.py:20\nmsgid \"Zlin Region\"\nmsgstr \"Zlin\"\n\n#: cz/cz_regions.py:21\nmsgid \"Moravian-Silesian Region\"\nmsgstr \"Moravie-Silésie\"\n\n#: cz/forms.py:32 sk/forms.py:33\nmsgid \"Enter a postal code in the format XXXXX or XXX XX.\"\nmsgstr \"Saisissez un code postal au format XXXXX ou XXX XX.\"\n\n#: cz/forms.py:52\nmsgid \"Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.\"\nmsgstr \"Saisissez une date de naissance au format XXXXXX/XXXX ou XXXXXXXXXX.\"\n\n#: cz/forms.py:53\nmsgid \"Enter a valid birth number.\"\nmsgstr \"Saisissez une date de naissance valide.\"\n\n#: cz/forms.py:102\nmsgid \"Enter a valid IC number.\"\nmsgstr \"Saisissez un numéro IC valide.\"\n\n#: de/de_states.py:5\nmsgid \"Baden-Wuerttemberg\"\nmsgstr \"Bade-Wurtemberg\"\n\n#: de/de_states.py:6\nmsgid \"Bavaria\"\nmsgstr \"Bavière\"\n\n#: de/de_states.py:7\nmsgid \"Berlin\"\nmsgstr \"Berlin\"\n\n#: de/de_states.py:8\nmsgid \"Brandenburg\"\nmsgstr \"Brandebourg\"\n\n#: de/de_states.py:9\nmsgid \"Bremen\"\nmsgstr \"Brême\"\n\n#: de/de_states.py:10\nmsgid \"Hamburg\"\nmsgstr \"Hambourg\"\n\n#: de/de_states.py:11\nmsgid \"Hessen\"\nmsgstr \"Hess\"\n\n#: de/de_states.py:12\nmsgid \"Mecklenburg-Western Pomerania\"\nmsgstr \"Mecklembourg-Poméranie occidentale\"\n\n#: de/de_states.py:13\nmsgid \"Lower Saxony\"\nmsgstr \"Basse Saxe\"\n\n#: de/de_states.py:14\nmsgid \"North Rhine-Westphalia\"\nmsgstr \"Rhénanie-du-Nord-Westphalie\"\n\n#: de/de_states.py:15\nmsgid \"Rhineland-Palatinate\"\nmsgstr \"Rhénanie-Palatinat\"\n\n#: de/de_states.py:16\nmsgid \"Saarland\"\nmsgstr \"Sarre\"\n\n#: de/de_states.py:17\nmsgid \"Saxony\"\nmsgstr \"Saxe\"\n\n#: de/de_states.py:18\nmsgid \"Saxony-Anhalt\"\nmsgstr \"Saxe-Anhalt\"\n\n#: de/de_states.py:19\nmsgid \"Schleswig-Holstein\"\nmsgstr \"Schleswig-Holstein\"\n\n#: de/de_states.py:20\nmsgid \"Thuringia\"\nmsgstr \"Thuringe\"\n\n#: de/forms.py:20 fi/forms.py:18 fr/forms.py:20\nmsgid \"Enter a zip code in the format XXXXX.\"\nmsgstr \"Saisissez un code postal au format XXXXX.\"\n\n#: de/forms.py:46\nmsgid \"\"\n\"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"format.\"\nmsgstr \"\"\n\"Saisissez un numéro de carte d'identité allemande au format XXXXXXXXXXX-\"\n\"XXXXXXX-XXXXXXX-X.\"\n\n#: es/es_provinces.py:5\nmsgid \"Araba\"\nmsgstr \"Araba\"\n\n#: es/es_provinces.py:6\nmsgid \"Albacete\"\nmsgstr \"Albacete\"\n\n#: es/es_provinces.py:7\nmsgid \"Alacant\"\nmsgstr \"Alicante\"\n\n#: es/es_provinces.py:8\nmsgid \"Almeria\"\nmsgstr \"Almería\"\n\n#: es/es_provinces.py:9\nmsgid \"Avila\"\nmsgstr \"Ávila\"\n\n#: es/es_provinces.py:10\nmsgid \"Badajoz\"\nmsgstr \"Badajoz\"\n\n#: es/es_provinces.py:11\nmsgid \"Illes Balears\"\nmsgstr \"Îles Baléares\"\n\n#: es/es_provinces.py:12\nmsgid \"Barcelona\"\nmsgstr \"Barcelone\"\n\n#: es/es_provinces.py:13\nmsgid \"Burgos\"\nmsgstr \"Burgos\"\n\n#: es/es_provinces.py:14\nmsgid \"Caceres\"\nmsgstr \"Cáceres\"\n\n#: es/es_provinces.py:15\nmsgid \"Cadiz\"\nmsgstr \"Cadix\"\n\n#: es/es_provinces.py:16\nmsgid \"Castello\"\nmsgstr \"Castellón\"\n\n#: es/es_provinces.py:17\nmsgid \"Ciudad Real\"\nmsgstr \"Ciudad Real\"\n\n#: es/es_provinces.py:18\nmsgid \"Cordoba\"\nmsgstr \"Córdoba\"\n\n#: es/es_provinces.py:19\nmsgid \"A Coruna\"\nmsgstr \"La Corogne\"\n\n#: es/es_provinces.py:20\nmsgid \"Cuenca\"\nmsgstr \"Cuenca\"\n\n#: es/es_provinces.py:21\nmsgid \"Girona\"\nmsgstr \"Gérone\"\n\n#: es/es_provinces.py:22\nmsgid \"Granada\"\nmsgstr \"Grenade\"\n\n#: es/es_provinces.py:23\nmsgid \"Guadalajara\"\nmsgstr \"Guadalajara\"\n\n#: es/es_provinces.py:24\nmsgid \"Guipuzkoa\"\nmsgstr \"Guipúzcoa\"\n\n#: es/es_provinces.py:25\nmsgid \"Huelva\"\nmsgstr \"Huelva\"\n\n#: es/es_provinces.py:26\nmsgid \"Huesca\"\nmsgstr \"Huesca\"\n\n#: es/es_provinces.py:27\nmsgid \"Jaen\"\nmsgstr \"Jaén\"\n\n#: es/es_provinces.py:28\nmsgid \"Leon\"\nmsgstr \"León\"\n\n#: es/es_provinces.py:29\nmsgid \"Lleida\"\nmsgstr \"Lérida\"\n\n#: es/es_provinces.py:30 es/es_regions.py:17\nmsgid \"La Rioja\"\nmsgstr \"La Rioja\"\n\n#: es/es_provinces.py:31\nmsgid \"Lugo\"\nmsgstr \"Lugo\"\n\n#: es/es_provinces.py:32 es/es_regions.py:18\nmsgid \"Madrid\"\nmsgstr \"Madrid\"\n\n#: es/es_provinces.py:33\nmsgid \"Malaga\"\nmsgstr \"Málaga\"\n\n#: es/es_provinces.py:34\nmsgid \"Murcia\"\nmsgstr \"Murcie\"\n\n#: es/es_provinces.py:35\nmsgid \"Navarre\"\nmsgstr \"Navarre\"\n\n#: es/es_provinces.py:36\nmsgid \"Ourense\"\nmsgstr \"Orense\"\n\n#: es/es_provinces.py:37\nmsgid \"Asturias\"\nmsgstr \"Asturias\"\n\n#: es/es_provinces.py:38\nmsgid \"Palencia\"\nmsgstr \"Palencia\"\n\n#: es/es_provinces.py:39\nmsgid \"Las Palmas\"\nmsgstr \"Las Palmas\"\n\n#: es/es_provinces.py:40\nmsgid \"Pontevedra\"\nmsgstr \"Pontevedra\"\n\n#: es/es_provinces.py:41\nmsgid \"Salamanca\"\nmsgstr \"Salamanca\"\n\n#: es/es_provinces.py:42\nmsgid \"Santa Cruz de Tenerife\"\nmsgstr \"Santa Cruz de Ténérife\"\n\n#: es/es_provinces.py:43 es/es_regions.py:11\nmsgid \"Cantabria\"\nmsgstr \"Cantabrie\"\n\n#: es/es_provinces.py:44\nmsgid \"Segovia\"\nmsgstr \"Ségovie\"\n\n#: es/es_provinces.py:45\nmsgid \"Seville\"\nmsgstr \"Séville\"\n\n#: es/es_provinces.py:46\nmsgid \"Soria\"\nmsgstr \"Soria\"\n\n#: es/es_provinces.py:47\nmsgid \"Tarragona\"\nmsgstr \"Tarragone\"\n\n#: es/es_provinces.py:48\nmsgid \"Teruel\"\nmsgstr \"Teruel\"\n\n#: es/es_provinces.py:49\nmsgid \"Toledo\"\nmsgstr \"Toledo\"\n\n#: es/es_provinces.py:50\nmsgid \"Valencia\"\nmsgstr \"Valence\"\n\n#: es/es_provinces.py:51\nmsgid \"Valladolid\"\nmsgstr \"Valladolid\"\n\n#: es/es_provinces.py:52\nmsgid \"Bizkaia\"\nmsgstr \"Biscaye\"\n\n#: es/es_provinces.py:53\nmsgid \"Zamora\"\nmsgstr \"Zamora\"\n\n#: es/es_provinces.py:54\nmsgid \"Zaragoza\"\nmsgstr \"Saragosse\"\n\n#: es/es_provinces.py:55\nmsgid \"Ceuta\"\nmsgstr \"Ceuta\"\n\n#: es/es_provinces.py:56\nmsgid \"Melilla\"\nmsgstr \"Melilla\"\n\n#: es/es_regions.py:5\nmsgid \"Andalusia\"\nmsgstr \"Andalousie\"\n\n#: es/es_regions.py:6\nmsgid \"Aragon\"\nmsgstr \"Aragon\"\n\n#: es/es_regions.py:7\nmsgid \"Principality of Asturias\"\nmsgstr \"Principauté des Asturies\"\n\n#: es/es_regions.py:8\nmsgid \"Balearic Islands\"\nmsgstr \"Îles Baléares\"\n\n#: es/es_regions.py:9\nmsgid \"Basque Country\"\nmsgstr \"Pays basque\"\n\n#: es/es_regions.py:10\nmsgid \"Canary Islands\"\nmsgstr \"Îles Canaries\"\n\n#: es/es_regions.py:12\nmsgid \"Castile-La Mancha\"\nmsgstr \"Castille-La Manche\"\n\n#: es/es_regions.py:13\nmsgid \"Castile and Leon\"\nmsgstr \"Castille-et-León\"\n\n#: es/es_regions.py:14\nmsgid \"Catalonia\"\nmsgstr \"Catalogne\"\n\n#: es/es_regions.py:15\nmsgid \"Extremadura\"\nmsgstr \"Estrémadure\"\n\n#: es/es_regions.py:16\nmsgid \"Galicia\"\nmsgstr \"Galice\"\n\n#: es/es_regions.py:19\nmsgid \"Region of Murcia\"\nmsgstr \"Murcie\"\n\n#: es/es_regions.py:20\nmsgid \"Foral Community of Navarre\"\nmsgstr \"Navarre\"\n\n#: es/es_regions.py:21\nmsgid \"Valencian Community\"\nmsgstr \"Communauté valencienne\"\n\n#: es/forms.py:26\nmsgid \"Enter a valid postal code in the range and format 01XXX - 52XXX.\"\nmsgstr \"Saisissez un code postal dans l'intervalle et au format 01XXX - 52XXX.\"\n\n#: es/forms.py:46\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or \"\n\"9XXXXXXXX.\"\nmsgstr \"\"\n\"Saisissez un numéro de téléphone au format 6XXXXXXXX, 8XXXXXXXX ou 9XXXXXXXX.\"\n\n#: es/forms.py:73\nmsgid \"Please enter a valid NIF, NIE, or CIF.\"\nmsgstr \"Saisissez une adresse NIF, NIE ou CIF valide.\"\n\n#: es/forms.py:74\nmsgid \"Please enter a valid NIF or NIE.\"\nmsgstr \"Saisissez un NIF ou NIE valide.\"\n\n#: es/forms.py:75\nmsgid \"Invalid checksum for NIF.\"\nmsgstr \"Mauvais checksum pour NIF.\"\n\n#: es/forms.py:76\nmsgid \"Invalid checksum for NIE.\"\nmsgstr \"Mauvais checksum pour NIE.\"\n\n#: es/forms.py:77\nmsgid \"Invalid checksum for CIF.\"\nmsgstr \"Mauvais checksum pour CIF.\"\n\n#: es/forms.py:149\nmsgid \"\"\n\"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.\"\nmsgstr \"\"\n\"Saisissez un numéro de compte bancaire valide au format XXXXX-XXXX-XX-\"\n\"XXXXXXXXXX.\"\n\n#: es/forms.py:150\nmsgid \"Invalid checksum for bank account number.\"\nmsgstr \"Somme de contrôle non valide pour le numéro de compte bancaire.\"\n\n#: fi/forms.py:33\nmsgid \"Enter a valid Finnish social security number.\"\nmsgstr \"Saisissez un numéro de sécurité sociale finlandais.\"\n\n#: fr/forms.py:35\nmsgid \"Phone numbers must be in 0X XX XX XX XX format.\"\nmsgstr \"Les numéros de téléphone doivent être au format 0X XX XX XX XX.\"\n\n#: gb/forms.py:25\nmsgid \"Enter a valid postcode.\"\nmsgstr \"Saisissez un code postal valide.\"\n\n#: gb/gb_regions.py:11\nmsgid \"Bedfordshire\"\nmsgstr \"Bedfordshire\"\n\n#: gb/gb_regions.py:12\nmsgid \"Buckinghamshire\"\nmsgstr \"Buckinghamshire\"\n\n#: gb/gb_regions.py:14\nmsgid \"Cheshire\"\nmsgstr \"Cheshire\"\n\n#: gb/gb_regions.py:15\nmsgid \"Cornwall and Isles of Scilly\"\nmsgstr \"Cornouailles et les îles Scilly\"\n\n#: gb/gb_regions.py:16\nmsgid \"Cumbria\"\nmsgstr \"Cumbrie\"\n\n#: gb/gb_regions.py:17\nmsgid \"Derbyshire\"\nmsgstr \"Derbyshire\"\n\n#: gb/gb_regions.py:18\nmsgid \"Devon\"\nmsgstr \"Devon\"\n\n#: gb/gb_regions.py:19\nmsgid \"Dorset\"\nmsgstr \"Dorset\"\n\n#: gb/gb_regions.py:20\nmsgid \"Durham\"\nmsgstr \"Durham\"\n\n#: gb/gb_regions.py:21\nmsgid \"East Sussex\"\nmsgstr \"Sussex de l'Est\"\n\n#: gb/gb_regions.py:22\nmsgid \"Essex\"\nmsgstr \"Essex\"\n\n#: gb/gb_regions.py:23\nmsgid \"Gloucestershire\"\nmsgstr \"Gloucestershire\"\n\n#: gb/gb_regions.py:24\nmsgid \"Greater London\"\nmsgstr \"Grand Londres\"\n\n#: gb/gb_regions.py:25\nmsgid \"Greater Manchester\"\nmsgstr \"Grand Manchester\"\n\n#: gb/gb_regions.py:26\nmsgid \"Hampshire\"\nmsgstr \"Hampshire\"\n\n#: gb/gb_regions.py:27\nmsgid \"Hertfordshire\"\nmsgstr \"Hertfordshire\"\n\n#: gb/gb_regions.py:28\nmsgid \"Kent\"\nmsgstr \"Kent\"\n\n#: gb/gb_regions.py:29\nmsgid \"Lancashire\"\nmsgstr \"Lancastre\"\n\n#: gb/gb_regions.py:30\nmsgid \"Leicestershire\"\nmsgstr \"Leicestershire\"\n\n#: gb/gb_regions.py:31\nmsgid \"Lincolnshire\"\nmsgstr \"Lincolnshire\"\n\n#: gb/gb_regions.py:32\nmsgid \"Merseyside\"\nmsgstr \"Merseyside\"\n\n#: gb/gb_regions.py:33\nmsgid \"Norfolk\"\nmsgstr \"Norfolk\"\n\n#: gb/gb_regions.py:34\nmsgid \"North Yorkshire\"\nmsgstr \"Yorkshire du Nord\"\n\n#: gb/gb_regions.py:35\nmsgid \"Northamptonshire\"\nmsgstr \"Northamptonshire\"\n\n#: gb/gb_regions.py:36\nmsgid \"Northumberland\"\nmsgstr \"Northumberland\"\n\n#: gb/gb_regions.py:37\nmsgid \"Nottinghamshire\"\nmsgstr \"Nottinghamshire\"\n\n#: gb/gb_regions.py:38\nmsgid \"Oxfordshire\"\nmsgstr \"Oxfordshire\"\n\n#: gb/gb_regions.py:39\nmsgid \"Shropshire\"\nmsgstr \"Shropshire\"\n\n#: gb/gb_regions.py:40\nmsgid \"Somerset\"\nmsgstr \"Somerset\"\n\n#: gb/gb_regions.py:41\nmsgid \"South Yorkshire\"\nmsgstr \"Yorkshire du Su\"\n\n#: gb/gb_regions.py:42\nmsgid \"Staffordshire\"\nmsgstr \"Staffordshire\"\n\n#: gb/gb_regions.py:43\nmsgid \"Suffolk\"\nmsgstr \"Suffolk\"\n\n#: gb/gb_regions.py:44\nmsgid \"Surrey\"\nmsgstr \"Surrey\"\n\n#: gb/gb_regions.py:45\nmsgid \"Tyne and Wear\"\nmsgstr \"Tyne et Wear\"\n\n#: gb/gb_regions.py:46\nmsgid \"Warwickshire\"\nmsgstr \"Warwickshire\"\n\n#: gb/gb_regions.py:47\nmsgid \"West Midlands\"\nmsgstr \"Midlands de l'Ouest\"\n\n#: gb/gb_regions.py:48\nmsgid \"West Sussex\"\nmsgstr \"Sussex de l'Ouest\"\n\n#: gb/gb_regions.py:49\nmsgid \"West Yorkshire\"\nmsgstr \"Yorkshire de l'Ouest\"\n\n#: gb/gb_regions.py:50\nmsgid \"Wiltshire\"\nmsgstr \"Wiltshire\"\n\n#: gb/gb_regions.py:51\nmsgid \"Worcestershire\"\nmsgstr \"Worcestershire\"\n\n#: gb/gb_regions.py:55\nmsgid \"County Antrim\"\nmsgstr \"Comté d'Antrim\"\n\n#: gb/gb_regions.py:56\nmsgid \"County Armagh\"\nmsgstr \"Comté d'Armagh\"\n\n#: gb/gb_regions.py:57\nmsgid \"County Down\"\nmsgstr \"Comté de Down\"\n\n#: gb/gb_regions.py:58\nmsgid \"County Fermanagh\"\nmsgstr \"Comté de Fermanagh\"\n\n#: gb/gb_regions.py:59\nmsgid \"County Londonderry\"\nmsgstr \"Comté de Londonderry\"\n\n#: gb/gb_regions.py:60\nmsgid \"County Tyrone\"\nmsgstr \"Comté de Tyrone\"\n\n#: gb/gb_regions.py:64\nmsgid \"Clwyd\"\nmsgstr \"Clwyd\"\n\n#: gb/gb_regions.py:65\nmsgid \"Dyfed\"\nmsgstr \"Dyfed\"\n\n#: gb/gb_regions.py:66\nmsgid \"Gwent\"\nmsgstr \"Gwent\"\n\n#: gb/gb_regions.py:67\nmsgid \"Gwynedd\"\nmsgstr \"Gwynedd\"\n\n#: gb/gb_regions.py:68\nmsgid \"Mid Glamorgan\"\nmsgstr \"Mid·Glamorgan\"\n\n#: gb/gb_regions.py:69\nmsgid \"Powys\"\nmsgstr \"Powys\"\n\n#: gb/gb_regions.py:70\nmsgid \"South Glamorgan\"\nmsgstr \"South Glamorgan\"\n\n#: gb/gb_regions.py:71\nmsgid \"West Glamorgan\"\nmsgstr \"West Glamorgan\"\n\n#: gb/gb_regions.py:75\nmsgid \"Borders\"\nmsgstr \"Borders\"\n\n#: gb/gb_regions.py:76\nmsgid \"Central Scotland\"\nmsgstr \"Écosse centrale\"\n\n#: gb/gb_regions.py:77\nmsgid \"Dumfries and Galloway\"\nmsgstr \"Dumfries and Galloway\"\n\n#: gb/gb_regions.py:78\nmsgid \"Fife\"\nmsgstr \"Fife\"\n\n#: gb/gb_regions.py:79\nmsgid \"Grampian\"\nmsgstr \"Grampian\"\n\n#: gb/gb_regions.py:80\nmsgid \"Highland\"\nmsgstr \"Highland\"\n\n#: gb/gb_regions.py:81\nmsgid \"Lothian\"\nmsgstr \"Lothian\"\n\n#: gb/gb_regions.py:82\nmsgid \"Orkney Islands\"\nmsgstr \"Orcades\"\n\n#: gb/gb_regions.py:83\nmsgid \"Shetland Islands\"\nmsgstr \"Îles Shetland\"\n\n#: gb/gb_regions.py:84\nmsgid \"Strathclyde\"\nmsgstr \"Strathclyde\"\n\n#: gb/gb_regions.py:85\nmsgid \"Tayside\"\nmsgstr \"Tayside\"\n\n#: gb/gb_regions.py:86\nmsgid \"Western Isles\"\nmsgstr \"Hébrides extérieures\"\n\n#: gb/gb_regions.py:90\nmsgid \"England\"\nmsgstr \"Angleterre\"\n\n#: gb/gb_regions.py:91\nmsgid \"Northern Ireland\"\nmsgstr \"Irlande du Nord\"\n\n#: gb/gb_regions.py:92\nmsgid \"Scotland\"\nmsgstr \"Écosse\"\n\n#: gb/gb_regions.py:93\nmsgid \"Wales\"\nmsgstr \"Pays de Galles\"\n\n#: hk/forms.py:37\n#, python-format\nmsgid \"Phone number should not start with one of the followings: %s.\"\nmsgstr \"\"\n\"Le numéro de téléphone ne doit pas commencer par l'un des nombres suivants : \"\n\"%s.\"\n\n#: hk/forms.py:40\n#, python-format\nmsgid \"Phone number must be in one of the following formats: %s.\"\nmsgstr \"\"\n\"Le numéro de téléphone doit correspondre à l'un des formats suivants : %s.\"\n\n#: hk/forms.py:42\n#, python-format\nmsgid \"Phone number should start with one of the followings: %s.\"\nmsgstr \"\"\n\"Le numéro de téléphone doit commencer par l'un des chiffres suivants : %s.\"\n\n#: hr/forms.py:76\nmsgid \"Enter a valid 13 digit JMBG\"\nmsgstr \"Saisissez un JMBG à 13 chiffres valide\"\n\n#: hr/forms.py:77\nmsgid \"Error in date segment\"\nmsgstr \"Erreur dans le segmenet de date\"\n\n#: hr/forms.py:123\nmsgid \"Enter a valid 11 digit OIB\"\nmsgstr \"Saisissez un OIB à 11 chiffres valide\"\n\n#: hr/forms.py:152 id/forms.py:112\nmsgid \"Enter a valid vehicle license plate number\"\nmsgstr \"Saisissez un numéro de plaque d'immatriculation valide\"\n\n#: hr/forms.py:153\nmsgid \"Enter a valid location code\"\nmsgstr \"Saisissez un code d'emplacement valide\"\n\n#: hr/forms.py:154\nmsgid \"Number part cannot be zero\"\nmsgstr \"La partie nombre ne peut pas être à zéro\"\n\n#: hr/forms.py:190\nmsgid \"Enter a valid 5 digit postal code\"\nmsgstr \"Saisissez un code postal à 5 chiffres valide\"\n\n#: hr/forms.py:218 id/forms.py:72 nl/forms.py:56\nmsgid \"Enter a valid phone number\"\nmsgstr \"Saisissez un numéro de téléphone valide\"\n\n#: hr/forms.py:219\nmsgid \"Enter a valid area or mobile network code\"\nmsgstr \"Saisissez un code de zone ou de réseau mobile valide\"\n\n#: hr/forms.py:220\nmsgid \"The phone nubmer is too long\"\nmsgstr \"Le numéro de téléphone est trop long\"\n\n#: hr/forms.py:258\nmsgid \"Enter a valid 19 digit JMBAG starting with 601983\"\nmsgstr \"Saisissez un JMBAG à 19 chiffres valide, en commençant par 601983\"\n\n#: hr/forms.py:259\nmsgid \"Card issue number cannot be zero\"\nmsgstr \"Le numéro de délivrance de la carte ne peut pas être à zéro\"\n\n#: hr/hr_choices.py:14\nmsgid \"Grad Zagreb\"\nmsgstr \"Ville de Zagreb\"\n\n#: hr/hr_choices.py:15\nmsgid \"Bjelovarsko-bilogorska županija\"\nmsgstr \"Comitat de Bjelovar-Bilogora\"\n\n#: hr/hr_choices.py:16\nmsgid \"Brodsko-posavska županija\"\nmsgstr \"Comitat de Brod-Posavina\"\n\n#: hr/hr_choices.py:17\nmsgid \"Dubrovačko-neretvanska županija\"\nmsgstr \"Comitat de Dubrovnik-Neretva\"\n\n#: hr/hr_choices.py:18\nmsgid \"Istarska županija\"\nmsgstr \"Comitat d'Istrie\"\n\n#: hr/hr_choices.py:19\nmsgid \"Karlovačka županija\"\nmsgstr \"Comitat de Karlovac\"\n\n#: hr/hr_choices.py:20\nmsgid \"Koprivničko-križevačka županija\"\nmsgstr \"Comitat de Koprivnica-Križevci\"\n\n#: hr/hr_choices.py:21\nmsgid \"Krapinsko-zagorska županija\"\nmsgstr \"Comitat de Krapina-Zagorje\"\n\n#: hr/hr_choices.py:22\nmsgid \"Ličko-senjska županija\"\nmsgstr \"Comitat de Lika-Senj\"\n\n#: hr/hr_choices.py:23\nmsgid \"Međimurska županija\"\nmsgstr \"Comitat de Međimurje\"\n\n#: hr/hr_choices.py:24\nmsgid \"Osječko-baranjska županija\"\nmsgstr \"Comitat d'Osijek-Baranja\"\n\n#: hr/hr_choices.py:25\nmsgid \"Požeško-slavonska županija\"\nmsgstr \"Comitat de Požega-Slavonie\"\n\n#: hr/hr_choices.py:26\nmsgid \"Primorsko-goranska županija\"\nmsgstr \"Comitat de Primorje-Gorski Kotar\"\n\n#: hr/hr_choices.py:27\nmsgid \"Sisačko-moslavačka županija\"\nmsgstr \"Comitat de Sisak-Moslavina\"\n\n#: hr/hr_choices.py:28\nmsgid \"Splitsko-dalmatinska županija\"\nmsgstr \"Comitat de Split-Dalmatie\"\n\n#: hr/hr_choices.py:29\nmsgid \"Šibensko-kninska županija\"\nmsgstr \"Comitat de Šibenik-Knin\"\n\n#: hr/hr_choices.py:30\nmsgid \"Varaždinska županija\"\nmsgstr \"Comitat de Varaždin\"\n\n#: hr/hr_choices.py:31\nmsgid \"Virovitičko-podravska županija\"\nmsgstr \"Comitat de Virovitica-Podravina\"\n\n#: hr/hr_choices.py:32\nmsgid \"Vukovarsko-srijemska županija\"\nmsgstr \"Comitat de Vukovar-Syrmie\"\n\n#: hr/hr_choices.py:33\nmsgid \"Zadarska županija\"\nmsgstr \"Comitat de Zadar\"\n\n#: hr/hr_choices.py:34\nmsgid \"Zagrebačka županija\"\nmsgstr \"Comitat de Zagreb\"\n\n#: id/forms.py:31\nmsgid \"Enter a valid post code\"\nmsgstr \"Saisissez un code postal valide\"\n\n#: id/forms.py:176\nmsgid \"Enter a valid NIK/KTP number\"\nmsgstr \"Saisissez un numéro NIK/KTP valide\"\n\n#: id/id_choices.py:15\nmsgid \"Aceh\"\nmsgstr \"Aceh\"\n\n#: id/id_choices.py:16 id/id_choices.py:79\nmsgid \"Bali\"\nmsgstr \"Bali\"\n\n#: id/id_choices.py:17 id/id_choices.py:51\nmsgid \"Banten\"\nmsgstr \"Banten\"\n\n#: id/id_choices.py:18 id/id_choices.py:60\nmsgid \"Bengkulu\"\nmsgstr \"Bengkulu\"\n\n#: id/id_choices.py:19 id/id_choices.py:53\nmsgid \"Yogyakarta\"\nmsgstr \"Yogyakarta\"\n\n#: id/id_choices.py:20 id/id_choices.py:57\nmsgid \"Jakarta\"\nmsgstr \"Jakarta\"\n\n#: id/id_choices.py:21 id/id_choices.py:81\nmsgid \"Gorontalo\"\nmsgstr \"Gorontalo\"\n\n#: id/id_choices.py:22 id/id_choices.py:63\nmsgid \"Jambi\"\nmsgstr \"Jambi\"\n\n#: id/id_choices.py:23\nmsgid \"Jawa Barat\"\nmsgstr \"Java occidental\"\n\n#: id/id_choices.py:24\nmsgid \"Jawa Tengah\"\nmsgstr \"Java central\"\n\n#: id/id_choices.py:25\nmsgid \"Jawa Timur\"\nmsgstr \"Java oriental\"\n\n#: id/id_choices.py:26 id/id_choices.py:94\nmsgid \"Kalimantan Barat\"\nmsgstr \"Kalimantan occidental\"\n\n#: id/id_choices.py:27 id/id_choices.py:72\nmsgid \"Kalimantan Selatan\"\nmsgstr \"Kalimantan du sud\"\n\n#: id/id_choices.py:28 id/id_choices.py:95\nmsgid \"Kalimantan Tengah\"\nmsgstr \"Kalimantan central\"\n\n#: id/id_choices.py:29 id/id_choices.py:96\nmsgid \"Kalimantan Timur\"\nmsgstr \"Kalimantan oriental\"\n\n#: id/id_choices.py:30\nmsgid \"Kepulauan Bangka-Belitung\"\nmsgstr \"Île Bangka-Belitung\"\n\n#: id/id_choices.py:31 id/id_choices.py:68\nmsgid \"Kepulauan Riau\"\nmsgstr \"Île Riau\"\n\n#: id/id_choices.py:32 id/id_choices.py:61\nmsgid \"Lampung\"\nmsgstr \"Lampung\"\n\n#: id/id_choices.py:33 id/id_choices.py:76\nmsgid \"Maluku\"\nmsgstr \"Moluques\"\n\n#: id/id_choices.py:34 id/id_choices.py:77\nmsgid \"Maluku Utara\"\nmsgstr \"Moluques du nord\"\n\n#: id/id_choices.py:35\nmsgid \"Nusa Tenggara Barat\"\nmsgstr \"Nusa Tenggara occidental\"\n\n#: id/id_choices.py:36\nmsgid \"Nusa Tenggara Timur\"\nmsgstr \"Nusa Tenggara oriental\"\n\n#: id/id_choices.py:37\nmsgid \"Papua\"\nmsgstr \"Papouasie\"\n\n#: id/id_choices.py:38\nmsgid \"Papua Barat\"\nmsgstr \"Papouasie occidentale\"\n\n#: id/id_choices.py:39 id/id_choices.py:66\nmsgid \"Riau\"\nmsgstr \"Riau\"\n\n#: id/id_choices.py:40 id/id_choices.py:74\nmsgid \"Sulawesi Barat\"\nmsgstr \"Sulawesi occidental\"\n\n#: id/id_choices.py:41 id/id_choices.py:75\nmsgid \"Sulawesi Selatan\"\nmsgstr \"Sulawesi du Sud\"\n\n#: id/id_choices.py:42 id/id_choices.py:82\nmsgid \"Sulawesi Tengah\"\nmsgstr \"Sulawesi central\"\n\n#: id/id_choices.py:43 id/id_choices.py:85\nmsgid \"Sulawesi Tenggara\"\nmsgstr \"Sulawesi du Sud-Est\"\n\n#: id/id_choices.py:44\nmsgid \"Sulawesi Utara\"\nmsgstr \"Sulawesi du Nord\"\n\n#: id/id_choices.py:45 id/id_choices.py:58\nmsgid \"Sumatera Barat\"\nmsgstr \"Sumaratera occidental\"\n\n#: id/id_choices.py:46 id/id_choices.py:62\nmsgid \"Sumatera Selatan\"\nmsgstr \"Sumatera du Sud\"\n\n#: id/id_choices.py:47 id/id_choices.py:64\nmsgid \"Sumatera Utara\"\nmsgstr \"Sumatera du Nord\"\n\n#: id/id_choices.py:52\nmsgid \"Magelang\"\nmsgstr \"Megelang\"\n\n#: id/id_choices.py:54\nmsgid \"Surakarta - Solo\"\nmsgstr \"Surakarta - Solo\"\n\n#: id/id_choices.py:55\nmsgid \"Madiun\"\nmsgstr \"Madiun\"\n\n#: id/id_choices.py:56\nmsgid \"Kediri\"\nmsgstr \"Kediri\"\n\n#: id/id_choices.py:59\nmsgid \"Tapanuli\"\nmsgstr \"Tapanuli\"\n\n#: id/id_choices.py:65\nmsgid \"Nanggroe Aceh Darussalam\"\nmsgstr \"Nanggroe Aceh Darussalam\"\n\n#: id/id_choices.py:67\nmsgid \"Kepulauan Bangka Belitung\"\nmsgstr \"Kepulauan Bangka Belitung\"\n\n#: id/id_choices.py:69\nmsgid \"Corps Consulate\"\nmsgstr \"Corps consulaire\"\n\n#: id/id_choices.py:70\nmsgid \"Corps Diplomatic\"\nmsgstr \"Corps diplomatique\"\n\n#: id/id_choices.py:71\nmsgid \"Bandung\"\nmsgstr \"Bandung\"\n\n#: id/id_choices.py:73\nmsgid \"Sulawesi Utara Daratan\"\nmsgstr \"Sulawesi du Nord\"\n\n#: id/id_choices.py:78\nmsgid \"NTT - Timor\"\nmsgstr \"NTT - Timor\"\n\n#: id/id_choices.py:80\nmsgid \"Sulawesi Utara Kepulauan\"\nmsgstr \"Îles de Sulawesi du Nord\"\n\n#: id/id_choices.py:83\nmsgid \"NTB - Lombok\"\nmsgstr \"NTB - Lombok\"\n\n#: id/id_choices.py:84\nmsgid \"Papua dan Papua Barat\"\nmsgstr \"Papua dan Papua Barat\"\n\n#: id/id_choices.py:86\nmsgid \"Cirebon\"\nmsgstr \"Cirebon\"\n\n#: id/id_choices.py:87\nmsgid \"NTB - Sumbawa\"\nmsgstr \"NTB - Sumbawa\"\n\n#: id/id_choices.py:88\nmsgid \"NTT - Flores\"\nmsgstr \"NTT - Florès\"\n\n#: id/id_choices.py:89\nmsgid \"NTT - Sumba\"\nmsgstr \"NTT - Sumba\"\n\n#: id/id_choices.py:90\nmsgid \"Bogor\"\nmsgstr \"Bogor\"\n\n#: id/id_choices.py:91\nmsgid \"Pekalongan\"\nmsgstr \"Pekalongan\"\n\n#: id/id_choices.py:92\nmsgid \"Semarang\"\nmsgstr \"Semarang\"\n\n#: id/id_choices.py:93\nmsgid \"Pati\"\nmsgstr \"Pati\"\n\n#: id/id_choices.py:97\nmsgid \"Surabaya\"\nmsgstr \"Surabaya\"\n\n#: id/id_choices.py:98\nmsgid \"Madura\"\nmsgstr \"Madura\"\n\n#: id/id_choices.py:99\nmsgid \"Malang\"\nmsgstr \"Malang\"\n\n#: id/id_choices.py:100\nmsgid \"Jember\"\nmsgstr \"Jember\"\n\n#: id/id_choices.py:101\nmsgid \"Banyumas\"\nmsgstr \"Banyumas\"\n\n#: id/id_choices.py:102\nmsgid \"Federal Government\"\nmsgstr \"Gouvernement fédéral\"\n\n#: id/id_choices.py:103\nmsgid \"Bojonegoro\"\nmsgstr \"Bojonegoro\"\n\n#: id/id_choices.py:104\nmsgid \"Purwakarta\"\nmsgstr \"Purwakarta\"\n\n#: id/id_choices.py:105\nmsgid \"Sidoarjo\"\nmsgstr \"Sidoarjo\"\n\n#: id/id_choices.py:106\nmsgid \"Garut\"\nmsgstr \"Garut\"\n\n#: ie/ie_counties.py:8\nmsgid \"Antrim\"\nmsgstr \"Antrim\"\n\n#: ie/ie_counties.py:9\nmsgid \"Armagh\"\nmsgstr \"Armagh\"\n\n#: ie/ie_counties.py:10\nmsgid \"Carlow\"\nmsgstr \"Carlow\"\n\n#: ie/ie_counties.py:11\nmsgid \"Cavan\"\nmsgstr \"Cavan\"\n\n#: ie/ie_counties.py:12\nmsgid \"Clare\"\nmsgstr \"Clare\"\n\n#: ie/ie_counties.py:13\nmsgid \"Cork\"\nmsgstr \"Cork\"\n\n#: ie/ie_counties.py:14\nmsgid \"Derry\"\nmsgstr \"Derry\"\n\n#: ie/ie_counties.py:15\nmsgid \"Donegal\"\nmsgstr \"Donegal\"\n\n#: ie/ie_counties.py:16\nmsgid \"Down\"\nmsgstr \"Down\"\n\n#: ie/ie_counties.py:17\nmsgid \"Dublin\"\nmsgstr \"Dublin\"\n\n#: ie/ie_counties.py:18\nmsgid \"Fermanagh\"\nmsgstr \"Fermanagh\"\n\n#: ie/ie_counties.py:19\nmsgid \"Galway\"\nmsgstr \"Galway\"\n\n#: ie/ie_counties.py:20\nmsgid \"Kerry\"\nmsgstr \"Kerry\"\n\n#: ie/ie_counties.py:21\nmsgid \"Kildare\"\nmsgstr \"Kildare\"\n\n#: ie/ie_counties.py:22\nmsgid \"Kilkenny\"\nmsgstr \"Kilkenny\"\n\n#: ie/ie_counties.py:23\nmsgid \"Laois\"\nmsgstr \"Laois\"\n\n#: ie/ie_counties.py:24\nmsgid \"Leitrim\"\nmsgstr \"Leitrim\"\n\n#: ie/ie_counties.py:25\nmsgid \"Limerick\"\nmsgstr \"Limerick\"\n\n#: ie/ie_counties.py:26\nmsgid \"Longford\"\nmsgstr \"Longford\"\n\n#: ie/ie_counties.py:27\nmsgid \"Louth\"\nmsgstr \"Louth\"\n\n#: ie/ie_counties.py:28\nmsgid \"Mayo\"\nmsgstr \"Mayo\"\n\n#: ie/ie_counties.py:29\nmsgid \"Meath\"\nmsgstr \"Meath\"\n\n#: ie/ie_counties.py:30\nmsgid \"Monaghan\"\nmsgstr \"Monaghan\"\n\n#: ie/ie_counties.py:31\nmsgid \"Offaly\"\nmsgstr \"Offaly\"\n\n#: ie/ie_counties.py:32\nmsgid \"Roscommon\"\nmsgstr \"Roscommon\"\n\n#: ie/ie_counties.py:33\nmsgid \"Sligo\"\nmsgstr \"Sligo\"\n\n#: ie/ie_counties.py:34\nmsgid \"Tipperary\"\nmsgstr \"Tipperary\"\n\n#: ie/ie_counties.py:35\nmsgid \"Tyrone\"\nmsgstr \"Tyrone\"\n\n#: ie/ie_counties.py:36\nmsgid \"Waterford\"\nmsgstr \"Waterford\"\n\n#: ie/ie_counties.py:37\nmsgid \"Westmeath\"\nmsgstr \"Westmeath\"\n\n#: ie/ie_counties.py:38\nmsgid \"Wexford\"\nmsgstr \"Wexford\"\n\n#: ie/ie_counties.py:39\nmsgid \"Wicklow\"\nmsgstr \"Wicklow\"\n\n#: il/forms.py:32\nmsgid \"Enter a postal code in the format XXXXX\"\nmsgstr \"Saisissez un code postal au format XXXXX\"\n\n#: il/forms.py:51\nmsgid \"Enter a valid ID number.\"\nmsgstr \"Saisissez un numéro d'identification valide.\"\n\n#: in_/forms.py:41\nmsgid \"Enter a zip code in the format XXXXXX or XXX XXX.\"\nmsgstr \"Saisisset un code postal au format XXXXXX ou XXX XXX.\"\n\n#: in_/forms.py:64\nmsgid \"Enter an Indian state or territory.\"\nmsgstr \"Saisissez un état ou un territoire indien.\"\n\n#: in_/forms.py:103\nmsgid \"Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.\"\nmsgstr \"\"\n\"Les numéros de téléphone doivent être au format 02X-8X, 03X-7X ou 04X-6X.\"\n\n#: is_/forms.py:22\nmsgid \"\"\n\"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.\"\nmsgstr \"Saisissez un code postal islandais valide au format XXXXXX-XXXX.\"\n\n#: is_/forms.py:23\nmsgid \"The Icelandic identification number is not valid.\"\nmsgstr \"Le numéro d'identification islandais est non valide.\"\n\n#: it/forms.py:21\nmsgid \"Enter a valid zip code.\"\nmsgstr \"Saisissez un code postal valide.\"\n\n#: it/forms.py:48\nmsgid \"Enter a valid Social Security number.\"\nmsgstr \"Saisissez un numéro valide de Sécurité Sociale.\"\n\n#: it/forms.py:73\nmsgid \"Enter a valid VAT number.\"\nmsgstr \"Saisissez un numéro de TVA valide.\"\n\n#: jp/forms.py:19\nmsgid \"Enter a postal code in the format XXXXXXX or XXX-XXXX.\"\nmsgstr \"Saisissez un code postal japonais au format XXXXXXX ou XXX-XXXX.\"\n\n#: jp/jp_prefectures.py:4\nmsgid \"Hokkaido\"\nmsgstr \"Hokkaidō\"\n\n#: jp/jp_prefectures.py:5\nmsgid \"Aomori\"\nmsgstr \"Aomori\"\n\n#: jp/jp_prefectures.py:6\nmsgid \"Iwate\"\nmsgstr \"Iwate\"\n\n#: jp/jp_prefectures.py:7\nmsgid \"Miyagi\"\nmsgstr \"Miyagi\"\n\n#: jp/jp_prefectures.py:8\nmsgid \"Akita\"\nmsgstr \"Akita\"\n\n#: jp/jp_prefectures.py:9\nmsgid \"Yamagata\"\nmsgstr \"Yamagata\"\n\n#: jp/jp_prefectures.py:10\nmsgid \"Fukushima\"\nmsgstr \"Fukushima\"\n\n#: jp/jp_prefectures.py:11\nmsgid \"Ibaraki\"\nmsgstr \"Ibaraki\"\n\n#: jp/jp_prefectures.py:12\nmsgid \"Tochigi\"\nmsgstr \"Tochigi\"\n\n#: jp/jp_prefectures.py:13\nmsgid \"Gunma\"\nmsgstr \"Gunma\"\n\n#: jp/jp_prefectures.py:14\nmsgid \"Saitama\"\nmsgstr \"Saitama\"\n\n#: jp/jp_prefectures.py:15\nmsgid \"Chiba\"\nmsgstr \"Chiba\"\n\n#: jp/jp_prefectures.py:16\nmsgid \"Tokyo\"\nmsgstr \"Tokyo\"\n\n#: jp/jp_prefectures.py:17\nmsgid \"Kanagawa\"\nmsgstr \"Kanagawa\"\n\n#: jp/jp_prefectures.py:18\nmsgid \"Yamanashi\"\nmsgstr \"Yamanashi\"\n\n#: jp/jp_prefectures.py:19\nmsgid \"Nagano\"\nmsgstr \"Nagano\"\n\n#: jp/jp_prefectures.py:20\nmsgid \"Niigata\"\nmsgstr \"Niigata\"\n\n#: jp/jp_prefectures.py:21\nmsgid \"Toyama\"\nmsgstr \"Toyama\"\n\n#: jp/jp_prefectures.py:22\nmsgid \"Ishikawa\"\nmsgstr \"Ishikawa\"\n\n#: jp/jp_prefectures.py:23\nmsgid \"Fukui\"\nmsgstr \"Fukui\"\n\n#: jp/jp_prefectures.py:24\nmsgid \"Gifu\"\nmsgstr \"Gifu\"\n\n#: jp/jp_prefectures.py:25\nmsgid \"Shizuoka\"\nmsgstr \"Shizuoka\"\n\n#: jp/jp_prefectures.py:26\nmsgid \"Aichi\"\nmsgstr \"Aichi\"\n\n#: jp/jp_prefectures.py:27\nmsgid \"Mie\"\nmsgstr \"Mie\"\n\n#: jp/jp_prefectures.py:28\nmsgid \"Shiga\"\nmsgstr \"Shiga\"\n\n#: jp/jp_prefectures.py:29\nmsgid \"Kyoto\"\nmsgstr \"Kyōto\"\n\n#: jp/jp_prefectures.py:30\nmsgid \"Osaka\"\nmsgstr \"Osaka\"\n\n#: jp/jp_prefectures.py:31\nmsgid \"Hyogo\"\nmsgstr \"Hyōgo\"\n\n#: jp/jp_prefectures.py:32\nmsgid \"Nara\"\nmsgstr \"Nara\"\n\n#: jp/jp_prefectures.py:33\nmsgid \"Wakayama\"\nmsgstr \"Wakayama\"\n\n#: jp/jp_prefectures.py:34\nmsgid \"Tottori\"\nmsgstr \"Tottori\"\n\n#: jp/jp_prefectures.py:35\nmsgid \"Shimane\"\nmsgstr \"Shimane\"\n\n#: jp/jp_prefectures.py:36\nmsgid \"Okayama\"\nmsgstr \"Okayama\"\n\n#: jp/jp_prefectures.py:37\nmsgid \"Hiroshima\"\nmsgstr \"Hiroshima\"\n\n#: jp/jp_prefectures.py:38\nmsgid \"Yamaguchi\"\nmsgstr \"Yamaguchi\"\n\n#: jp/jp_prefectures.py:39\nmsgid \"Tokushima\"\nmsgstr \"Tokushima\"\n\n#: jp/jp_prefectures.py:40\nmsgid \"Kagawa\"\nmsgstr \"Kagawa\"\n\n#: jp/jp_prefectures.py:41\nmsgid \"Ehime\"\nmsgstr \"Ehime\"\n\n#: jp/jp_prefectures.py:42\nmsgid \"Kochi\"\nmsgstr \"Kochi\"\n\n#: jp/jp_prefectures.py:43\nmsgid \"Fukuoka\"\nmsgstr \"Fukuoka\"\n\n#: jp/jp_prefectures.py:44\nmsgid \"Saga\"\nmsgstr \"Saga\"\n\n#: jp/jp_prefectures.py:45\nmsgid \"Nagasaki\"\nmsgstr \"Nagasaki\"\n\n#: jp/jp_prefectures.py:46\nmsgid \"Kumamoto\"\nmsgstr \"Kumamoto\"\n\n#: jp/jp_prefectures.py:47\nmsgid \"Oita\"\nmsgstr \"Ōita\"\n\n#: jp/jp_prefectures.py:48\nmsgid \"Miyazaki\"\nmsgstr \"Miyazaki\"\n\n#: jp/jp_prefectures.py:49\nmsgid \"Kagoshima\"\nmsgstr \"Kagoshima\"\n\n#: jp/jp_prefectures.py:50\nmsgid \"Okinawa\"\nmsgstr \"Okinawa\"\n\n#: kw/forms.py:27\nmsgid \"Enter a valid Kuwaiti Civil ID number\"\nmsgstr \"Saisissez un numéro d'identification civil koweïtien valide\"\n\n#: mk/forms.py:18\nmsgid \"\"\n\"Identity card numbers must contain either 4 to 7 digits or an uppercase \"\n\"letter and 7 digits.\"\nmsgstr \"\"\n\"Les numéros de cartes d'identité doivent contenir soit 4 ou 7 chiffres, soit \"\n\"une lettre majuscule et 7 chiffres.\"\n\n#: mk/forms.py:57 si/forms.py:24\nmsgid \"This field should contain exactly 13 digits.\"\nmsgstr \"Ce champ doit contenir exactement 13 chiffres.\"\n\n#: mk/forms.py:58\nmsgid \"The first 7 digits of the UMCN must represent a valid past date.\"\nmsgstr \"\"\n\"Les 7 premiers chiffres de l'UMCN doivent constituer un date passée valide.\"\n\n#: mk/forms.py:59\nmsgid \"The UMCN is not valid.\"\nmsgstr \"L'UMCN n'est pas valide.\"\n\n#: mk/mk_choices.py:10\nmsgid \"Aerodrom\"\nmsgstr \"Aerodrom\"\n\n#: mk/mk_choices.py:11\nmsgid \"Aračinovo\"\nmsgstr \"Aračinovo\"\n\n#: mk/mk_choices.py:12\nmsgid \"Berovo\"\nmsgstr \"Berovo\"\n\n#: mk/mk_choices.py:13\nmsgid \"Bitola\"\nmsgstr \"Bitola\"\n\n#: mk/mk_choices.py:14\nmsgid \"Bogdanci\"\nmsgstr \"Bogdanci\"\n\n#: mk/mk_choices.py:15\nmsgid \"Bogovinje\"\nmsgstr \"Bogovinje\"\n\n#: mk/mk_choices.py:16\nmsgid \"Bosilovo\"\nmsgstr \"Bosilovo\"\n\n#: mk/mk_choices.py:17\nmsgid \"Brvenica\"\nmsgstr \"Brvenica\"\n\n#: mk/mk_choices.py:18\nmsgid \"Butel\"\nmsgstr \"Butel\"\n\n#: mk/mk_choices.py:19\nmsgid \"Valandovo\"\nmsgstr \"Valandovo\"\n\n#: mk/mk_choices.py:20\nmsgid \"Vasilevo\"\nmsgstr \"Vasilevo\"\n\n#: mk/mk_choices.py:21\nmsgid \"Vevčani\"\nmsgstr \"Vevčani\"\n\n#: mk/mk_choices.py:22\nmsgid \"Veles\"\nmsgstr \"Veles\"\n\n#: mk/mk_choices.py:23\nmsgid \"Vinica\"\nmsgstr \"Vinica\"\n\n#: mk/mk_choices.py:24\nmsgid \"Vraneštica\"\nmsgstr \"Vraneštica\"\n\n#: mk/mk_choices.py:25\nmsgid \"Vrapčište\"\nmsgstr \"Vrapčište\"\n\n#: mk/mk_choices.py:26\nmsgid \"Gazi Baba\"\nmsgstr \"Gazi Baba\"\n\n#: mk/mk_choices.py:27\nmsgid \"Gevgelija\"\nmsgstr \"Gevgelija\"\n\n#: mk/mk_choices.py:28\nmsgid \"Gostivar\"\nmsgstr \"Gostivar\"\n\n#: mk/mk_choices.py:29\nmsgid \"Gradsko\"\nmsgstr \"Gradsko\"\n\n#: mk/mk_choices.py:30\nmsgid \"Debar\"\nmsgstr \"Debar\"\n\n#: mk/mk_choices.py:31\nmsgid \"Debarca\"\nmsgstr \"Debarca\"\n\n#: mk/mk_choices.py:32\nmsgid \"Delčevo\"\nmsgstr \"Delčevo\"\n\n#: mk/mk_choices.py:33\nmsgid \"Demir Kapija\"\nmsgstr \"Demir Kapija\"\n\n#: mk/mk_choices.py:34\nmsgid \"Demir Hisar\"\nmsgstr \"Demir Hisar\"\n\n#: mk/mk_choices.py:35\nmsgid \"Dolneni\"\nmsgstr \"Dolneni\"\n\n#: mk/mk_choices.py:36\nmsgid \"Drugovo\"\nmsgstr \"Drugovo\"\n\n#: mk/mk_choices.py:37\nmsgid \"Gjorče Petrov\"\nmsgstr \"Gjorče Petrov\"\n\n#: mk/mk_choices.py:38\nmsgid \"Želino\"\nmsgstr \"Želino\"\n\n#: mk/mk_choices.py:39\nmsgid \"Zajas\"\nmsgstr \"Zajas\"\n\n#: mk/mk_choices.py:40\nmsgid \"Zelenikovo\"\nmsgstr \"Zelenikovo\"\n\n#: mk/mk_choices.py:41\nmsgid \"Zrnovci\"\nmsgstr \"Zrnovci\"\n\n#: mk/mk_choices.py:42\nmsgid \"Ilinden\"\nmsgstr \"Ilinden\"\n\n#: mk/mk_choices.py:43\nmsgid \"Jegunovce\"\nmsgstr \"Jegunovce\"\n\n#: mk/mk_choices.py:44\nmsgid \"Kavadarci\"\nmsgstr \"Kavadarci\"\n\n#: mk/mk_choices.py:45\nmsgid \"Karbinci\"\nmsgstr \"Karbinci\"\n\n#: mk/mk_choices.py:46\nmsgid \"Karpoš\"\nmsgstr \"Karpoš\"\n\n#: mk/mk_choices.py:47\nmsgid \"Kisela Voda\"\nmsgstr \"Kisela Voda\"\n\n#: mk/mk_choices.py:48\nmsgid \"Kičevo\"\nmsgstr \"Kičevo\"\n\n#: mk/mk_choices.py:49\nmsgid \"Konče\"\nmsgstr \"Konče\"\n\n#: mk/mk_choices.py:50\nmsgid \"Koćani\"\nmsgstr \"Koćani\"\n\n#: mk/mk_choices.py:51\nmsgid \"Kratovo\"\nmsgstr \"Kratovo\"\n\n#: mk/mk_choices.py:52\nmsgid \"Kriva Palanka\"\nmsgstr \"Kriva Palanka\"\n\n#: mk/mk_choices.py:53\nmsgid \"Krivogaštani\"\nmsgstr \"Krivogaštani\"\n\n#: mk/mk_choices.py:54\nmsgid \"Kruševo\"\nmsgstr \"Kruševo\"\n\n#: mk/mk_choices.py:55\nmsgid \"Kumanovo\"\nmsgstr \"Kumanovo\"\n\n#: mk/mk_choices.py:56\nmsgid \"Lipkovo\"\nmsgstr \"Lipkovo\"\n\n#: mk/mk_choices.py:57\nmsgid \"Lozovo\"\nmsgstr \"Lozovo\"\n\n#: mk/mk_choices.py:58\nmsgid \"Mavrovo i Rostuša\"\nmsgstr \"Mavrovo i Rostuša\"\n\n#: mk/mk_choices.py:59\nmsgid \"Makedonska Kamenica\"\nmsgstr \"Makedonska Kamenica\"\n\n#: mk/mk_choices.py:60\nmsgid \"Makedonski Brod\"\nmsgstr \"Makedonski Brod\"\n\n#: mk/mk_choices.py:61\nmsgid \"Mogila\"\nmsgstr \"Mogila\"\n\n#: mk/mk_choices.py:62\nmsgid \"Negotino\"\nmsgstr \"Negotino\"\n\n#: mk/mk_choices.py:63\nmsgid \"Novaci\"\nmsgstr \"Novaci\"\n\n#: mk/mk_choices.py:64\nmsgid \"Novo Selo\"\nmsgstr \"Novo Selo\"\n\n#: mk/mk_choices.py:65\nmsgid \"Oslomej\"\nmsgstr \"Oslomej\"\n\n#: mk/mk_choices.py:66\nmsgid \"Ohrid\"\nmsgstr \"Ohrid\"\n\n#: mk/mk_choices.py:67\nmsgid \"Petrovec\"\nmsgstr \"Petrovec\"\n\n#: mk/mk_choices.py:68\nmsgid \"Pehčevo\"\nmsgstr \"Pehčevo\"\n\n#: mk/mk_choices.py:69\nmsgid \"Plasnica\"\nmsgstr \"Plasnica\"\n\n#: mk/mk_choices.py:70\nmsgid \"Prilep\"\nmsgstr \"Prilep\"\n\n#: mk/mk_choices.py:71\nmsgid \"Probištip\"\nmsgstr \"Probištip\"\n\n#: mk/mk_choices.py:72\nmsgid \"Radoviš\"\nmsgstr \"Radoviš\"\n\n#: mk/mk_choices.py:73\nmsgid \"Rankovce\"\nmsgstr \"Rankovce\"\n\n#: mk/mk_choices.py:74\nmsgid \"Resen\"\nmsgstr \"Resen\"\n\n#: mk/mk_choices.py:75\nmsgid \"Rosoman\"\nmsgstr \"Rosoman\"\n\n#: mk/mk_choices.py:76\nmsgid \"Saraj\"\nmsgstr \"Saraj\"\n\n#: mk/mk_choices.py:77\nmsgid \"Sveti Nikole\"\nmsgstr \"Sveti Nikole\"\n\n#: mk/mk_choices.py:78\nmsgid \"Sopište\"\nmsgstr \"Sopište\"\n\n#: mk/mk_choices.py:79\nmsgid \"Star Dojran\"\nmsgstr \"Star Dojran\"\n\n#: mk/mk_choices.py:80\nmsgid \"Staro Nagoričane\"\nmsgstr \"Staro Nagoričane\"\n\n#: mk/mk_choices.py:81\nmsgid \"Struga\"\nmsgstr \"Struga\"\n\n#: mk/mk_choices.py:82\nmsgid \"Strumica\"\nmsgstr \"Strumica\"\n\n#: mk/mk_choices.py:83\nmsgid \"Studeničani\"\nmsgstr \"Studeničani\"\n\n#: mk/mk_choices.py:84\nmsgid \"Tearce\"\nmsgstr \"Tearce\"\n\n#: mk/mk_choices.py:85\nmsgid \"Tetovo\"\nmsgstr \"Tetovo\"\n\n#: mk/mk_choices.py:86\nmsgid \"Centar\"\nmsgstr \"Centar\"\n\n#: mk/mk_choices.py:87\nmsgid \"Centar-Župa\"\nmsgstr \"Centar-Župa\"\n\n#: mk/mk_choices.py:88\nmsgid \"Čair\"\nmsgstr \"Čair\"\n\n#: mk/mk_choices.py:89\nmsgid \"Čaška\"\nmsgstr \"Čaška\"\n\n#: mk/mk_choices.py:90\nmsgid \"Češinovo-Obleševo\"\nmsgstr \"Češinovo-Obleševo\"\n\n#: mk/mk_choices.py:91\nmsgid \"Čučer-Sandevo\"\nmsgstr \"Čučer-Sandevo\"\n\n#: mk/mk_choices.py:92\nmsgid \"Štip\"\nmsgstr \"Štip\"\n\n#: mk/mk_choices.py:93\nmsgid \"Šuto Orizari\"\nmsgstr \"Šuto Orizari\"\n\n#: mk/models.py:11\nmsgid \"Macedonian identity card number\"\nmsgstr \"Numéro de carte d'identité de Macédoine\"\n\n#: mk/models.py:25\nmsgid \"A Macedonian municipality (2 character code)\"\nmsgstr \"Une ville de Macédoine (code à 2 caractères)\"\n\n#: mk/models.py:35\nmsgid \"Unique master citizen number (13 digits)\"\nmsgstr \"Numéro de citoyen unique (13 chiffres)\"\n\n#: mx/forms.py:67\nmsgid \"Enter a valid zip code in the format XXXXX.\"\nmsgstr \"Saisissez un code postal valide au format XXXXX.\"\n\n#: mx/forms.py:110\nmsgid \"Enter a valid RFC.\"\nmsgstr \"Saisissez un RFC valide.\"\n\n#: mx/forms.py:111\nmsgid \"Invalid checksum for RFC.\"\nmsgstr \"Somme de contrôle incorrecte pour le RFC.\"\n\n#: mx/forms.py:191\nmsgid \"Enter a valid CURP.\"\nmsgstr \"Saisissez un CURP valide.\"\n\n#: mx/forms.py:192\nmsgid \"Invalid checksum for CURP.\"\nmsgstr \"Somme de contrôle incorrecte pour le CURP.\"\n\n#: mx/models.py:14\nmsgid \"Mexico state (three uppercase letters)\"\nmsgstr \"État mexicain (trois lettres majuscules)\"\n\n#: mx/models.py:27\nmsgid \"Mexico zip code\"\nmsgstr \"Code postal mexicain\"\n\n#: mx/models.py:44\nmsgid \"Mexican RFC\"\nmsgstr \"Numéro RFC mexicain\"\n\n#: mx/models.py:61\nmsgid \"Mexican CURP\"\nmsgstr \"Numéro CURP mexicain\"\n\n#: mx/mx_states.py:14\nmsgid \"Aguascalientes\"\nmsgstr \"Aguascalientes\"\n\n#: mx/mx_states.py:15\nmsgid \"Baja California\"\nmsgstr \"Baja California\"\n\n#: mx/mx_states.py:16\nmsgid \"Baja California Sur\"\nmsgstr \"Baja California Sur\"\n\n#: mx/mx_states.py:17\nmsgid \"Campeche\"\nmsgstr \"Campeche\"\n\n#: mx/mx_states.py:18\nmsgid \"Chihuahua\"\nmsgstr \"Chihuahua\"\n\n#: mx/mx_states.py:19\nmsgid \"Chiapas\"\nmsgstr \"Chiapas\"\n\n#: mx/mx_states.py:20\nmsgid \"Coahuila\"\nmsgstr \"Coahuila\"\n\n#: mx/mx_states.py:21\nmsgid \"Colima\"\nmsgstr \"Colima\"\n\n#: mx/mx_states.py:22\nmsgid \"Distrito Federal\"\nmsgstr \"District fédéral\"\n\n#: mx/mx_states.py:23\nmsgid \"Durango\"\nmsgstr \"Durango\"\n\n#: mx/mx_states.py:24\nmsgid \"Guerrero\"\nmsgstr \"Guerrero\"\n\n#: mx/mx_states.py:25\nmsgid \"Guanajuato\"\nmsgstr \"Guanajuato\"\n\n#: mx/mx_states.py:26\nmsgid \"Hidalgo\"\nmsgstr \"Hidalgo\"\n\n#: mx/mx_states.py:27\nmsgid \"Jalisco\"\nmsgstr \"Jalisco\"\n\n#: mx/mx_states.py:28\nmsgid \"Estado de México\"\nmsgstr \"État de Mexico\"\n\n#: mx/mx_states.py:29\nmsgid \"Michoacán\"\nmsgstr \"Michoacán\"\n\n#: mx/mx_states.py:30\nmsgid \"Morelos\"\nmsgstr \"Morelos\"\n\n#: mx/mx_states.py:31\nmsgid \"Nayarit\"\nmsgstr \"Nayarit\"\n\n#: mx/mx_states.py:32\nmsgid \"Nuevo León\"\nmsgstr \"Nuevo León\"\n\n#: mx/mx_states.py:33\nmsgid \"Oaxaca\"\nmsgstr \"Oaxaca\"\n\n#: mx/mx_states.py:34\nmsgid \"Puebla\"\nmsgstr \"Puebla\"\n\n#: mx/mx_states.py:35\nmsgid \"Querétaro\"\nmsgstr \"Querétaro\"\n\n#: mx/mx_states.py:36\nmsgid \"Quintana Roo\"\nmsgstr \"Quintana Roo\"\n\n#: mx/mx_states.py:37\nmsgid \"Sinaloa\"\nmsgstr \"Sinaloa\"\n\n#: mx/mx_states.py:38\nmsgid \"San Luis Potosí\"\nmsgstr \"San Luis Potosí\"\n\n#: mx/mx_states.py:39\nmsgid \"Sonora\"\nmsgstr \"Sonora\"\n\n#: mx/mx_states.py:40\nmsgid \"Tabasco\"\nmsgstr \"Tabasco\"\n\n#: mx/mx_states.py:41\nmsgid \"Tamaulipas\"\nmsgstr \"Tamaulipas\"\n\n#: mx/mx_states.py:42\nmsgid \"Tlaxcala\"\nmsgstr \"Tlaxcala\"\n\n#: mx/mx_states.py:43\nmsgid \"Veracruz\"\nmsgstr \"Veracruz\"\n\n#: mx/mx_states.py:44\nmsgid \"Yucatán\"\nmsgstr \"Yucatán\"\n\n#: mx/mx_states.py:45\nmsgid \"Zacatecas\"\nmsgstr \"Zacatecas\"\n\n#: nl/forms.py:26\nmsgid \"Enter a valid postal code\"\nmsgstr \"Saisissez un code postal valide.\"\n\n#: nl/forms.py:82\nmsgid \"Enter a valid SoFi number\"\nmsgstr \"Saisissez un numéro SoFi valide.\"\n\n#: nl/nl_provinces.py:4\nmsgid \"Drenthe\"\nmsgstr \"Drenthe\"\n\n#: nl/nl_provinces.py:5\nmsgid \"Flevoland\"\nmsgstr \"Flevoland\"\n\n#: nl/nl_provinces.py:6\nmsgid \"Friesland\"\nmsgstr \"Frise\"\n\n#: nl/nl_provinces.py:7\nmsgid \"Gelderland\"\nmsgstr \"Gueldre\"\n\n#: nl/nl_provinces.py:8\nmsgid \"Groningen\"\nmsgstr \"Groningue\"\n\n#: nl/nl_provinces.py:10\nmsgid \"Noord-Brabant\"\nmsgstr \"Brabant-du-Nord\"\n\n#: nl/nl_provinces.py:11\nmsgid \"Noord-Holland\"\nmsgstr \"Hollande-du-Nord\"\n\n#: nl/nl_provinces.py:12\nmsgid \"Overijssel\"\nmsgstr \"Overĳssel\"\n\n#: nl/nl_provinces.py:13\nmsgid \"Utrecht\"\nmsgstr \"Utrecht\"\n\n#: nl/nl_provinces.py:14\nmsgid \"Zeeland\"\nmsgstr \"Zeeland\"\n\n#: nl/nl_provinces.py:15\nmsgid \"Zuid-Holland\"\nmsgstr \"Hollande-Méridionale\"\n\n#: no/forms.py:39\nmsgid \"Enter a valid Norwegian social security number.\"\nmsgstr \"Saisissez un numéro de sécurité sociale norvégien valide.\"\n\n#: pe/forms.py:28\nmsgid \"This field requires 8 digits.\"\nmsgstr \"Ce champ requiert 8 chiffres.\"\n\n#: pe/forms.py:56\nmsgid \"This field requires 11 digits.\"\nmsgstr \"Ce champ requiert 11 chiffres.\"\n\n#: pl/forms.py:42\nmsgid \"National Identification Number consists of 11 digits.\"\nmsgstr \"Le numéro national d'identification (NIN) comporte 11 chiffres.\"\n\n#: pl/forms.py:43\nmsgid \"Wrong checksum for the National Identification Number.\"\nmsgstr \"Somme de contrôle non valide pour le numéro d'identification national.\"\n\n#: pl/forms.py:79\nmsgid \"National ID Card Number consists of 3 letters and 6 digits.\"\nmsgstr \"\"\n\"Le numéro de carte d'identité nationale consiste en 3 lettres et 6 chiffres.\"\n\n#: pl/forms.py:80\nmsgid \"Wrong checksum for the National ID Card Number.\"\nmsgstr \"Mauvaise somme de contrôle du numéro de carte d'identité nationale.\"\n\n#: pl/forms.py:131\nmsgid \"\"\n\"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or \"\n\"XXXXXXXXXX.\"\nmsgstr \"\"\n\"Saisissez un code NIP (impôts) au format XXX-XXX-XX-XX, XXX-XX-XX-XXX ou \"\n\"XXXXXXXXXX.\"\n\n#: pl/forms.py:132\nmsgid \"Wrong checksum for the Tax Number (NIP).\"\nmsgstr \"Somme de contrôle non valide du numéro de taxe (NIP).\"\n\n#: pl/forms.py:171\nmsgid \"National Business Register Number (REGON) consists of 9 or 14 digits.\"\nmsgstr \"\"\n\"Le numéro de registre du commerce national (REGON) comporte 9 ou 14 chiffres.\"\n\n#: pl/forms.py:172\nmsgid \"Wrong checksum for the National Business Register Number (REGON).\"\nmsgstr \"\"\n\"Somme de contrôle non valide pour le numéro de registre du commerce national \"\n\"(REGON).\"\n\n#: pl/forms.py:212\nmsgid \"Enter a postal code in the format XX-XXX.\"\nmsgstr \"Saisissez un code postal au format XX-XXX.\"\n\n#: pl/pl_voivodeships.py:8\nmsgid \"Lower Silesia\"\nmsgstr \"Basse-Silésie\"\n\n#: pl/pl_voivodeships.py:9\nmsgid \"Kuyavia-Pomerania\"\nmsgstr \"Cujavie-Poméranie\"\n\n#: pl/pl_voivodeships.py:10\nmsgid \"Lublin\"\nmsgstr \"Lublin\"\n\n#: pl/pl_voivodeships.py:11\nmsgid \"Lubusz\"\nmsgstr \"Lubusz\"\n\n#: pl/pl_voivodeships.py:12\nmsgid \"Lodz\"\nmsgstr \"Łódź\"\n\n#: pl/pl_voivodeships.py:13\nmsgid \"Lesser Poland\"\nmsgstr \"Petite-Pologne\"\n\n#: pl/pl_voivodeships.py:14\nmsgid \"Masovia\"\nmsgstr \"Mazovie \"\n\n#: pl/pl_voivodeships.py:15\nmsgid \"Opole\"\nmsgstr \"Opole\"\n\n#: pl/pl_voivodeships.py:16\nmsgid \"Subcarpatia\"\nmsgstr \"Basses-Carpates\"\n\n#: pl/pl_voivodeships.py:17\nmsgid \"Podlasie\"\nmsgstr \"Podlachie\"\n\n#: pl/pl_voivodeships.py:18\nmsgid \"Pomerania\"\nmsgstr \"Poméranie\"\n\n#: pl/pl_voivodeships.py:19\nmsgid \"Silesia\"\nmsgstr \"Silésie\"\n\n#: pl/pl_voivodeships.py:20\nmsgid \"Swietokrzyskie\"\nmsgstr \"Swietokrzyskie\"\n\n#: pl/pl_voivodeships.py:21\nmsgid \"Warmia-Masuria\"\nmsgstr \"Varmie-Mazurie\"\n\n#: pl/pl_voivodeships.py:22\nmsgid \"Greater Poland\"\nmsgstr \"Grande-Pologne\"\n\n#: pl/pl_voivodeships.py:23\nmsgid \"West Pomerania\"\nmsgstr \"Poméranie Occidentale\"\n\n#: pt/forms.py:19\nmsgid \"Enter a zip code in the format XXXX-XXX.\"\nmsgstr \"Saisissez un code postal au format XXXX-XXX.\"\n\n#: pt/forms.py:39\nmsgid \"Phone numbers must have 9 digits, or start by + or 00.\"\nmsgstr \"\"\n\"Les numéros de téléphone doivent comporter 9 chiffres, ou débuter par un + \"\n\"ou 00.\"\n\n#: ro/forms.py:22\nmsgid \"Enter a valid CIF.\"\nmsgstr \"Saisissez une CIF valide.\"\n\n#: ro/forms.py:59\nmsgid \"Enter a valid CNP.\"\nmsgstr \"Saisissez une CNP valide.\"\n\n#: ro/forms.py:143\nmsgid \"Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format\"\nmsgstr \"Saisissez un IBAN valide au format ROXX-XXXX-XXXX-XXXX-XXXX-XXXX.\"\n\n#: ro/forms.py:175\nmsgid \"Phone numbers must be in XXXX-XXXXXX format.\"\nmsgstr \"Les numéros de téléphone doivent être au format XXXX-XXXXXX.\"\n\n#: ro/forms.py:200\nmsgid \"Enter a valid postal code in the format XXXXXX\"\nmsgstr \"Saisissez un code postal valide au format XXXXXX\"\n\n#: ru/forms.py:37\nmsgid \"Enter a postal code in the format XXXXXX.\"\nmsgstr \"Saisissez un code postal au format XXXXXX.\"\n\n#: ru/forms.py:50\nmsgid \"Enter a passport number in the format XXXX XXXXXX.\"\nmsgstr \"Saisissez un numéro de passeport au format XXXX XXXXXX.\"\n\n#: ru/forms.py:63\nmsgid \"Enter a passport number in the format XX XXXXXXX.\"\nmsgstr \"Saisissez un numéro de passeport au format XX XXXXXXX.\"\n\n#: ru/ru_regions.py:10\nmsgid \"Central Federal County\"\nmsgstr \"District fédéral central\"\n\n#: ru/ru_regions.py:11\nmsgid \"South Federal County\"\nmsgstr \"District fédéral du Sud\"\n\n#: ru/ru_regions.py:12\nmsgid \"North-West Federal County\"\nmsgstr \"District fédéral du Nord-Ouest\"\n\n#: ru/ru_regions.py:13\nmsgid \"Far-East Federal County\"\nmsgstr \"District fédéral extrême-oriental\"\n\n#: ru/ru_regions.py:14\nmsgid \"Siberian Federal County\"\nmsgstr \"District fédéral sibérien\"\n\n#: ru/ru_regions.py:15\nmsgid \"Ural Federal County\"\nmsgstr \"District fédéral de l'Oural\"\n\n#: ru/ru_regions.py:16\nmsgid \"Privolzhsky Federal County\"\nmsgstr \"District fédéral de la Volga\"\n\n#: ru/ru_regions.py:17\nmsgid \"North-Caucasian Federal County\"\nmsgstr \"District fédéral du Nord-Caucase\"\n\n#: ru/ru_regions.py:21\nmsgid \"Moskva\"\nmsgstr \"Moscou\"\n\n#: ru/ru_regions.py:22\nmsgid \"Saint-Peterburg\"\nmsgstr \"Saint-Pétersbourg\"\n\n#: ru/ru_regions.py:23\nmsgid \"Moskovskaya oblast'\"\nmsgstr \"Moscou, Oblast de\"\n\n#: ru/ru_regions.py:24\nmsgid \"Adygeya, Respublika\"\nmsgstr \"Adyguée, République d’\"\n\n#: ru/ru_regions.py:25\nmsgid \"Bashkortostan, Respublika\"\nmsgstr \"Bachkirie, République de\"\n\n#: ru/ru_regions.py:26\nmsgid \"Buryatia, Respublika\"\nmsgstr \"Bouriatie, République de\"\n\n#: ru/ru_regions.py:27\nmsgid \"Altay, Respublika\"\nmsgstr \"Altaï, République de l'\"\n\n#: ru/ru_regions.py:28\nmsgid \"Dagestan, Respublika\"\nmsgstr \"Daguestan, République du\"\n\n#: ru/ru_regions.py:29\nmsgid \"Ingushskaya Respublika\"\nmsgstr \"Ingouchie, République d'\"\n\n#: ru/ru_regions.py:30\nmsgid \"Kabardino-Balkarskaya Respublika\"\nmsgstr \"Kabardino-Balkarie, République de\"\n\n#: ru/ru_regions.py:31\nmsgid \"Kalmykia, Respublika\"\nmsgstr \"Kalmoukie, République de\"\n\n#: ru/ru_regions.py:32\nmsgid \"Karachaevo-Cherkesskaya Respublika\"\nmsgstr \"Karatchaïévo-Tcherkessie, République de\"\n\n#: ru/ru_regions.py:33\nmsgid \"Karelia, Respublika\"\nmsgstr \"Carélie, République de\"\n\n#: ru/ru_regions.py:34\nmsgid \"Komi, Respublika\"\nmsgstr \"Komis, Répiblique des\"\n\n#: ru/ru_regions.py:35\nmsgid \"Mariy Ehl, Respublika\"\nmsgstr \"Maris, République des\"\n\n#: ru/ru_regions.py:36\nmsgid \"Mordovia, Respublika\"\nmsgstr \"Mordovie, République de\"\n\n#: ru/ru_regions.py:37\nmsgid \"Sakha, Respublika (Yakutiya)\"\nmsgstr \"Sakha, République de (Iakoutie)\"\n\n#: ru/ru_regions.py:38\nmsgid \"Severnaya Osetia, Respublika (Alania)\"\nmsgstr \"Ossétie-du-Nord-Alanie, République d’\"\n\n#: ru/ru_regions.py:39\nmsgid \"Tatarstan, Respublika\"\nmsgstr \"Tatarstan, République du\"\n\n#: ru/ru_regions.py:40\nmsgid \"Tyva, Respublika (Tuva)\"\nmsgstr \"Touva, République de\"\n\n#: ru/ru_regions.py:41\nmsgid \"Udmurtskaya Respublika\"\nmsgstr \"Oudmourtie, République d’\"\n\n#: ru/ru_regions.py:42\nmsgid \"Khakassiya, Respublika\"\nmsgstr \"Khakassia, République de\"\n\n#: ru/ru_regions.py:43\nmsgid \"Chechenskaya Respublika\"\nmsgstr \"Tchétchénie, République de\"\n\n#: ru/ru_regions.py:44\nmsgid \"Chuvashskaya Respublika\"\nmsgstr \"Tchouvachie, République de\"\n\n#: ru/ru_regions.py:45\nmsgid \"Altayskiy Kray\"\nmsgstr \"Altaï, Kraï de l’\"\n\n#: ru/ru_regions.py:46\nmsgid \"Zabaykalskiy Kray\"\nmsgstr \"Transbaïkalie, Kraï de\"\n\n#: ru/ru_regions.py:47\nmsgid \"Kamchatskiy Kray\"\nmsgstr \"Kamtchatka, Kraï du\"\n\n#: ru/ru_regions.py:48\nmsgid \"Krasnodarskiy Kray\"\nmsgstr \"Krasnodar, Kraï de\"\n\n#: ru/ru_regions.py:49\nmsgid \"Krasnoyarskiy Kray\"\nmsgstr \"Krasnoïarsk, Kraï de\"\n\n#: ru/ru_regions.py:50\nmsgid \"Permskiy Kray\"\nmsgstr \"Perm, Kraï de\"\n\n#: ru/ru_regions.py:51\nmsgid \"Primorskiy Kray\"\nmsgstr \"Primorie, Kraï du\"\n\n#: ru/ru_regions.py:52\nmsgid \"Stavropol'siyy Kray\"\nmsgstr \"Stavropol, Kraï de\"\n\n#: ru/ru_regions.py:53\nmsgid \"Khabarovskiy Kray\"\nmsgstr \"Khabarovsk, Kraï de\"\n\n#: ru/ru_regions.py:54\nmsgid \"Amurskaya oblast'\"\nmsgstr \"Amour, Oblast d’\"\n\n#: ru/ru_regions.py:55\nmsgid \"Arkhangel'skaya oblast'\"\nmsgstr \"Arkhangelsk, Oblast d’\"\n\n#: ru/ru_regions.py:56\nmsgid \"Astrakhanskaya oblast'\"\nmsgstr \"Astrakhan, Oblast d‘\"\n\n#: ru/ru_regions.py:57\nmsgid \"Belgorodskaya oblast'\"\nmsgstr \"Belgorod, Oblast de\"\n\n#: ru/ru_regions.py:58\nmsgid \"Bryanskaya oblast'\"\nmsgstr \"Briansk, Oblast de\"\n\n#: ru/ru_regions.py:59\nmsgid \"Vladimirskaya oblast'\"\nmsgstr \"Vladimir, Oblast de\"\n\n#: ru/ru_regions.py:60\nmsgid \"Volgogradskaya oblast'\"\nmsgstr \"Volgograd, Oblast de\"\n\n#: ru/ru_regions.py:61\nmsgid \"Vologodskaya oblast'\"\nmsgstr \"Vologda, Oblast de\"\n\n#: ru/ru_regions.py:62\nmsgid \"Voronezhskaya oblast'\"\nmsgstr \"Voronej, Oblast de\"\n\n#: ru/ru_regions.py:63\nmsgid \"Ivanovskaya oblast'\"\nmsgstr \"Ivanovo, Oblast d’\"\n\n#: ru/ru_regions.py:64\nmsgid \"Irkutskaya oblast'\"\nmsgstr \"Irkoutsk, Oblast d'\"\n\n#: ru/ru_regions.py:65\nmsgid \"Kaliningradskaya oblast'\"\nmsgstr \"Kaliningrad, Oblast de \"\n\n#: ru/ru_regions.py:66\nmsgid \"Kaluzhskaya oblast'\"\nmsgstr \"Kalouga, Oblast de\"\n\n#: ru/ru_regions.py:67\nmsgid \"Kemerovskaya oblast'\"\nmsgstr \"Kemerovo, Oblast de\"\n\n#: ru/ru_regions.py:68\nmsgid \"Kirovskaya oblast'\"\nmsgstr \"Kirov, Oblast de\"\n\n#: ru/ru_regions.py:69\nmsgid \"Kostromskaya oblast'\"\nmsgstr \"Kostroma, Oblast de\"\n\n#: ru/ru_regions.py:70\nmsgid \"Kurganskaya oblast'\"\nmsgstr \"Kourgan, Oblast de\"\n\n#: ru/ru_regions.py:71\nmsgid \"Kurskaya oblast'\"\nmsgstr \"Koursk, Oblast de\"\n\n#: ru/ru_regions.py:72\nmsgid \"Leningradskaya oblast'\"\nmsgstr \"Léningrad, Oblast de\"\n\n#: ru/ru_regions.py:73\nmsgid \"Lipeckaya oblast'\"\nmsgstr \"Lipetsk, Oblast de\"\n\n#: ru/ru_regions.py:74\nmsgid \"Magadanskaya oblast'\"\nmsgstr \"Magadan, Oblast de\"\n\n#: ru/ru_regions.py:75\nmsgid \"Murmanskaya oblast'\"\nmsgstr \"Mourmansk, Oblast de\"\n\n#: ru/ru_regions.py:76\nmsgid \"Nizhegorodskaja oblast'\"\nmsgstr \"Nijni Novgorod, Oblast de\"\n\n#: ru/ru_regions.py:77\nmsgid \"Novgorodskaya oblast'\"\nmsgstr \"Novgorod, Oblast de\"\n\n#: ru/ru_regions.py:78\nmsgid \"Novosibirskaya oblast'\"\nmsgstr \"Novossibirsk, Oblast de\"\n\n#: ru/ru_regions.py:79\nmsgid \"Omskaya oblast'\"\nmsgstr \"Omsk, Oblast d'\"\n\n#: ru/ru_regions.py:80\nmsgid \"Orenburgskaya oblast'\"\nmsgstr \"Orenbourg, Oblast d’\"\n\n#: ru/ru_regions.py:81\nmsgid \"Orlovskaya oblast'\"\nmsgstr \"Orel, Oblast d'\"\n\n#: ru/ru_regions.py:82\nmsgid \"Penzenskaya oblast'\"\nmsgstr \"Penza, Oblast de\"\n\n#: ru/ru_regions.py:83\nmsgid \"Pskovskaya oblast'\"\nmsgstr \"Pskov, Oblast de\"\n\n#: ru/ru_regions.py:84\nmsgid \"Rostovskaya oblast'\"\nmsgstr \"Rostov, Oblast de\"\n\n#: ru/ru_regions.py:85\nmsgid \"Rjazanskaya oblast'\"\nmsgstr \"Riazan, Oblast de\"\n\n#: ru/ru_regions.py:86\nmsgid \"Samarskaya oblast'\"\nmsgstr \"Samara, Oblast de\"\n\n#: ru/ru_regions.py:87\nmsgid \"Saratovskaya oblast'\"\nmsgstr \"Saratov, Oblast de\"\n\n#: ru/ru_regions.py:88\nmsgid \"Sakhalinskaya oblast'\"\nmsgstr \"Sakhaline, Oblast de\"\n\n#: ru/ru_regions.py:89\nmsgid \"Sverdlovskaya oblast'\"\nmsgstr \"Sverdlovsk, Oblast de\"\n\n#: ru/ru_regions.py:90\nmsgid \"Smolenskaya oblast'\"\nmsgstr \"Smolensk, Oblast de\"\n\n#: ru/ru_regions.py:91\nmsgid \"Tambovskaya oblast'\"\nmsgstr \"Tambov, Oblast de\"\n\n#: ru/ru_regions.py:92\nmsgid \"Tverskaya oblast'\"\nmsgstr \"Tver, Oblast de\"\n\n#: ru/ru_regions.py:93\nmsgid \"Tomskaya oblast'\"\nmsgstr \"Tomsk, Oblast de\"\n\n#: ru/ru_regions.py:94\nmsgid \"Tul'skaya oblast'\"\nmsgstr \"Toula, Oblast de\"\n\n#: ru/ru_regions.py:95\nmsgid \"Tyumenskaya oblast'\"\nmsgstr \"Tioumen, Oblast de\"\n\n#: ru/ru_regions.py:96\nmsgid \"Ul'ianovskaya oblast'\"\nmsgstr \"Oulianovsk, Oblast d’\"\n\n#: ru/ru_regions.py:97\nmsgid \"Chelyabinskaya oblast'\"\nmsgstr \"Tcheliabinsk, Oblast de\"\n\n#: ru/ru_regions.py:98\nmsgid \"Yaroslavskaya oblast'\"\nmsgstr \"Iaroslavl, Oblast de\"\n\n#: ru/ru_regions.py:99\nmsgid \"Evreyskaya avtonomnaja oblast'\"\nmsgstr \"Oblast autonome juif\"\n\n#: ru/ru_regions.py:100\nmsgid \"Neneckiy autonomnyy okrug\"\nmsgstr \"Nénétsie, District autonome de\"\n\n#: ru/ru_regions.py:101\nmsgid \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\nmsgstr \"Khantys-Mansis, District autonome des\"\n\n#: ru/ru_regions.py:102\nmsgid \"Chukotskiy avtonomnyy okrug\"\nmsgstr \"Tchoukotka, District autonome de\"\n\n#: ru/ru_regions.py:103\nmsgid \"Yamalo-Neneckiy avtonomnyy okrug\"\nmsgstr \"Iamalo-Nénétsie, District autonome de\"\n\n#: se/forms.py:54\nmsgid \"Enter a valid Swedish organisation number.\"\nmsgstr \"Saisissez un numéro d'organisation suédois valide.\"\n\n#: se/forms.py:111\nmsgid \"Enter a valid Swedish personal identity number.\"\nmsgstr \"Saisissez un numéro d'identité personnelle suédois valide.\"\n\n#: se/forms.py:112\nmsgid \"Co-ordination numbers are not allowed.\"\nmsgstr \"Le nombres de co-ordination ne sont pas autorisés.\"\n\n#: se/forms.py:154\nmsgid \"Enter a Swedish postal code in the format XXXXX.\"\nmsgstr \"Saisissez un code postal suédois au format XXXXX.\"\n\n#: se/se_counties.py:16\nmsgid \"Stockholm\"\nmsgstr \"Stockholm\"\n\n#: se/se_counties.py:17\nmsgid \"Västerbotten\"\nmsgstr \"Västerbotten\"\n\n#: se/se_counties.py:18\nmsgid \"Norrbotten\"\nmsgstr \"Norrbotten\"\n\n#: se/se_counties.py:19\nmsgid \"Uppsala\"\nmsgstr \"Uppsala\"\n\n#: se/se_counties.py:20\nmsgid \"Södermanland\"\nmsgstr \"Södermanland\"\n\n#: se/se_counties.py:21\nmsgid \"Östergötland\"\nmsgstr \"Östergötland\"\n\n#: se/se_counties.py:22\nmsgid \"Jönköping\"\nmsgstr \"Jönköping\"\n\n#: se/se_counties.py:23\nmsgid \"Kronoberg\"\nmsgstr \"Kronoberg\"\n\n#: se/se_counties.py:24\nmsgid \"Kalmar\"\nmsgstr \"Kalmar\"\n\n#: se/se_counties.py:25\nmsgid \"Gotland\"\nmsgstr \"Gotland\"\n\n#: se/se_counties.py:26\nmsgid \"Blekinge\"\nmsgstr \"Blekinge\"\n\n#: se/se_counties.py:27\nmsgid \"Skåne\"\nmsgstr \"Skåne\"\n\n#: se/se_counties.py:28\nmsgid \"Halland\"\nmsgstr \"Halland\"\n\n#: se/se_counties.py:29\nmsgid \"Västra Götaland\"\nmsgstr \"Västra Götaland\"\n\n#: se/se_counties.py:30\nmsgid \"Värmland\"\nmsgstr \"Värmland\"\n\n#: se/se_counties.py:31\nmsgid \"Örebro\"\nmsgstr \"Örebro\"\n\n#: se/se_counties.py:32\nmsgid \"Västmanland\"\nmsgstr \"Västmanland\"\n\n#: se/se_counties.py:33\nmsgid \"Dalarna\"\nmsgstr \"Dalarna\"\n\n#: se/se_counties.py:34\nmsgid \"Gävleborg\"\nmsgstr \"Gävleborg\"\n\n#: se/se_counties.py:35\nmsgid \"Västernorrland\"\nmsgstr \"Västernorrland\"\n\n#: se/se_counties.py:36\nmsgid \"Jämtland\"\nmsgstr \"Jämtland\"\n\n#: si/forms.py:25\nmsgid \"The first 7 digits of the EMSO must represent a valid past date.\"\nmsgstr \"\"\n\"Les 7 premiers chiffres du EMSO doivent correspondre à une date valide dans \"\n\"le passé.\"\n\n#: si/forms.py:26\nmsgid \"The EMSO is not valid.\"\nmsgstr \"Le EMSO n'est pas valide.\"\n\n#: si/forms.py:86\nmsgid \"Enter a valid tax number in form SIXXXXXXXX\"\nmsgstr \"Saisissez un code fiscal valide au format SIXXXXXXXX\"\n\n#: si/forms.py:151\nmsgid \"Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.\"\nmsgstr \"Saisissez un numéro de téléphone au format +386XXXXXXXX ou 0XXXXXXXX.\"\n\n#: sk/sk_districts.py:8\nmsgid \"Banska Bystrica\"\nmsgstr \"Banská Bystrica\"\n\n#: sk/sk_districts.py:9\nmsgid \"Banska Stiavnica\"\nmsgstr \"Banská Štiavnica\"\n\n#: sk/sk_districts.py:10\nmsgid \"Bardejov\"\nmsgstr \"Bardejov\"\n\n#: sk/sk_districts.py:11\nmsgid \"Banovce nad Bebravou\"\nmsgstr \"Bánovce nad Bebravou\"\n\n#: sk/sk_districts.py:12\nmsgid \"Brezno\"\nmsgstr \"Brezno\"\n\n#: sk/sk_districts.py:13\nmsgid \"Bratislava I\"\nmsgstr \"Bratislava I\"\n\n#: sk/sk_districts.py:14\nmsgid \"Bratislava II\"\nmsgstr \"Bratislava II\"\n\n#: sk/sk_districts.py:15\nmsgid \"Bratislava III\"\nmsgstr \"Bratislava III\"\n\n#: sk/sk_districts.py:16\nmsgid \"Bratislava IV\"\nmsgstr \"Bratislava IV\"\n\n#: sk/sk_districts.py:17\nmsgid \"Bratislava V\"\nmsgstr \"Bratislava V\"\n\n#: sk/sk_districts.py:18\nmsgid \"Bytca\"\nmsgstr \"Bytča\"\n\n#: sk/sk_districts.py:19\nmsgid \"Cadca\"\nmsgstr \"Čadca\"\n\n#: sk/sk_districts.py:20\nmsgid \"Detva\"\nmsgstr \"Detva\"\n\n#: sk/sk_districts.py:21\nmsgid \"Dolny Kubin\"\nmsgstr \"Dolný Kubín\"\n\n#: sk/sk_districts.py:22\nmsgid \"Dunajska Streda\"\nmsgstr \"Dunajská Streda\"\n\n#: sk/sk_districts.py:23\nmsgid \"Galanta\"\nmsgstr \"Galanta\"\n\n#: sk/sk_districts.py:24\nmsgid \"Gelnica\"\nmsgstr \"Gelnica\"\n\n#: sk/sk_districts.py:25\nmsgid \"Hlohovec\"\nmsgstr \"Hlohovec\"\n\n#: sk/sk_districts.py:26\nmsgid \"Humenne\"\nmsgstr \"Humenné\"\n\n#: sk/sk_districts.py:27\nmsgid \"Ilava\"\nmsgstr \"Ilava\"\n\n#: sk/sk_districts.py:28\nmsgid \"Kezmarok\"\nmsgstr \"Kežmarok\"\n\n#: sk/sk_districts.py:29\nmsgid \"Komarno\"\nmsgstr \"Komárno\"\n\n#: sk/sk_districts.py:30\nmsgid \"Kosice I\"\nmsgstr \"Košice I\"\n\n#: sk/sk_districts.py:31\nmsgid \"Kosice II\"\nmsgstr \"Košice·II\"\n\n#: sk/sk_districts.py:32\nmsgid \"Kosice III\"\nmsgstr \"Košice III\"\n\n#: sk/sk_districts.py:33\nmsgid \"Kosice IV\"\nmsgstr \"Košice·IV\"\n\n#: sk/sk_districts.py:34\nmsgid \"Kosice - okolie\"\nmsgstr \"Košice–okolie\"\n\n#: sk/sk_districts.py:35\nmsgid \"Krupina\"\nmsgstr \"Krupina\"\n\n#: sk/sk_districts.py:36\nmsgid \"Kysucke Nove Mesto\"\nmsgstr \"Kysucké Nové Mesto\"\n\n#: sk/sk_districts.py:37\nmsgid \"Levice\"\nmsgstr \"Levice\"\n\n#: sk/sk_districts.py:38\nmsgid \"Levoca\"\nmsgstr \"Levoča\"\n\n#: sk/sk_districts.py:39\nmsgid \"Liptovsky Mikulas\"\nmsgstr \"Liptovský Mikuláš\"\n\n#: sk/sk_districts.py:40\nmsgid \"Lucenec\"\nmsgstr \"Lučenec\"\n\n#: sk/sk_districts.py:41\nmsgid \"Malacky\"\nmsgstr \"Malacky\"\n\n#: sk/sk_districts.py:42\nmsgid \"Martin\"\nmsgstr \"Martin\"\n\n#: sk/sk_districts.py:43\nmsgid \"Medzilaborce\"\nmsgstr \"Medzilaborce\"\n\n#: sk/sk_districts.py:44\nmsgid \"Michalovce\"\nmsgstr \"Michalovce\"\n\n#: sk/sk_districts.py:45\nmsgid \"Myjava\"\nmsgstr \"Myjava\"\n\n#: sk/sk_districts.py:46\nmsgid \"Namestovo\"\nmsgstr \"Námestovo\"\n\n#: sk/sk_districts.py:47\nmsgid \"Nitra\"\nmsgstr \"Nitra\"\n\n#: sk/sk_districts.py:48\nmsgid \"Nove Mesto nad Vahom\"\nmsgstr \"Nové Mesto nad Váhom\"\n\n#: sk/sk_districts.py:49\nmsgid \"Nove Zamky\"\nmsgstr \"Nové Zámky\"\n\n#: sk/sk_districts.py:50\nmsgid \"Partizanske\"\nmsgstr \"Partizánske\"\n\n#: sk/sk_districts.py:51\nmsgid \"Pezinok\"\nmsgstr \"Pezinok\"\n\n#: sk/sk_districts.py:52\nmsgid \"Piestany\"\nmsgstr \"Piešťany\"\n\n#: sk/sk_districts.py:53\nmsgid \"Poltar\"\nmsgstr \"Poltár\"\n\n#: sk/sk_districts.py:54\nmsgid \"Poprad\"\nmsgstr \"Poprad\"\n\n#: sk/sk_districts.py:55\nmsgid \"Povazska Bystrica\"\nmsgstr \"Považská Bystrica\"\n\n#: sk/sk_districts.py:56\nmsgid \"Presov\"\nmsgstr \"Prešov\"\n\n#: sk/sk_districts.py:57\nmsgid \"Prievidza\"\nmsgstr \"Prievidza\"\n\n#: sk/sk_districts.py:58\nmsgid \"Puchov\"\nmsgstr \"Púchov\"\n\n#: sk/sk_districts.py:59\nmsgid \"Revuca\"\nmsgstr \"Revúca\"\n\n#: sk/sk_districts.py:60\nmsgid \"Rimavska Sobota\"\nmsgstr \"Rimavská Sobota\"\n\n#: sk/sk_districts.py:61\nmsgid \"Roznava\"\nmsgstr \"Rožňava\"\n\n#: sk/sk_districts.py:62\nmsgid \"Ruzomberok\"\nmsgstr \"Ružomberok\"\n\n#: sk/sk_districts.py:63\nmsgid \"Sabinov\"\nmsgstr \"Sabinov\"\n\n#: sk/sk_districts.py:64\nmsgid \"Senec\"\nmsgstr \"Senec\"\n\n#: sk/sk_districts.py:65\nmsgid \"Senica\"\nmsgstr \"Senica\"\n\n#: sk/sk_districts.py:66\nmsgid \"Skalica\"\nmsgstr \"Skalica\"\n\n#: sk/sk_districts.py:67\nmsgid \"Snina\"\nmsgstr \"Snina\"\n\n#: sk/sk_districts.py:68\nmsgid \"Sobrance\"\nmsgstr \"Sobrance\"\n\n#: sk/sk_districts.py:69\nmsgid \"Spisska Nova Ves\"\nmsgstr \"Spišská Nová Ves\"\n\n#: sk/sk_districts.py:70\nmsgid \"Stara Lubovna\"\nmsgstr \"Stará Ľubovňa\"\n\n#: sk/sk_districts.py:71\nmsgid \"Stropkov\"\nmsgstr \"Stropkov\"\n\n#: sk/sk_districts.py:72\nmsgid \"Svidnik\"\nmsgstr \"Svidník\"\n\n#: sk/sk_districts.py:73\nmsgid \"Sala\"\nmsgstr \"Šaľa\"\n\n#: sk/sk_districts.py:74\nmsgid \"Topolcany\"\nmsgstr \"Topoľčany\"\n\n#: sk/sk_districts.py:75\nmsgid \"Trebisov\"\nmsgstr \"Trebišov\"\n\n#: sk/sk_districts.py:76\nmsgid \"Trencin\"\nmsgstr \"Trenčín\"\n\n#: sk/sk_districts.py:77\nmsgid \"Trnava\"\nmsgstr \"Trnava\"\n\n#: sk/sk_districts.py:78\nmsgid \"Turcianske Teplice\"\nmsgstr \"Turčianske Teplice\"\n\n#: sk/sk_districts.py:79\nmsgid \"Tvrdosin\"\nmsgstr \"Tvrdošín\"\n\n#: sk/sk_districts.py:80\nmsgid \"Velky Krtis\"\nmsgstr \"Veľký Krtíš\"\n\n#: sk/sk_districts.py:81\nmsgid \"Vranov nad Toplou\"\nmsgstr \"Vranov nad Topľou\"\n\n#: sk/sk_districts.py:82\nmsgid \"Zlate Moravce\"\nmsgstr \"Zlaté Moravce\"\n\n#: sk/sk_districts.py:83\nmsgid \"Zvolen\"\nmsgstr \"Zvolen\"\n\n#: sk/sk_districts.py:84\nmsgid \"Zarnovica\"\nmsgstr \"Žarnovica\"\n\n#: sk/sk_districts.py:85\nmsgid \"Ziar nad Hronom\"\nmsgstr \"Žiar nad Hronom\"\n\n#: sk/sk_districts.py:86\nmsgid \"Zilina\"\nmsgstr \"Žilina\"\n\n#: sk/sk_regions.py:8\nmsgid \"Banska Bystrica region\"\nmsgstr \"Région de Banská Bystrica\"\n\n#: sk/sk_regions.py:9\nmsgid \"Bratislava region\"\nmsgstr \"Région de Bratislava\"\n\n#: sk/sk_regions.py:10\nmsgid \"Kosice region\"\nmsgstr \"Région de Košice\"\n\n#: sk/sk_regions.py:11\nmsgid \"Nitra region\"\nmsgstr \"Nitra\"\n\n#: sk/sk_regions.py:12\nmsgid \"Presov region\"\nmsgstr \"Prešov\"\n\n#: sk/sk_regions.py:13\nmsgid \"Trencin region\"\nmsgstr \"Trenčín\"\n\n#: sk/sk_regions.py:14\nmsgid \"Trnava region\"\nmsgstr \"Trnava\"\n\n#: sk/sk_regions.py:15\nmsgid \"Zilina region\"\nmsgstr \"Žilina\"\n\n#: tr/forms.py:21\nmsgid \"Enter a postal code in the format XXXXX.\"\nmsgstr \"Saisissez un code postal au format XXXXX.\"\n\n#: tr/forms.py:42\nmsgid \"Phone numbers must be in 0XXX XXX XXXX format.\"\nmsgstr \"Les numéros de téléphone doivent correspondre au format 0XXX XXX XXXX.\"\n\n#: tr/forms.py:69\nmsgid \"Enter a valid Turkish Identification number.\"\nmsgstr \"Saisissez un numéro d'identification turc valide.\"\n\n#: tr/forms.py:70\nmsgid \"Turkish Identification number must be 11 digits.\"\nmsgstr \"Les numéros d'identification turcs sont formés de 11 chiffres.\"\n\n#: us/forms.py:21\nmsgid \"Enter a zip code in the format XXXXX or XXXXX-XXXX.\"\nmsgstr \"Saisissez un code postal américain au format XXXXX ou XXXXX-XXXX.\"\n\n#: us/forms.py:59\nmsgid \"Enter a valid U.S. Social Security number in XXX-XX-XXXX format.\"\nmsgstr \"\"\n\"Saisissez un numéro de sécurité sociale américain au format XXX-XX-XXXX.\"\n\n#: us/forms.py:92\nmsgid \"Enter a U.S. state or territory.\"\nmsgstr \"Saisissez un état ou un territoire américain.\"\n\n#: us/models.py:8\nmsgid \"U.S. state (two uppercase letters)\"\nmsgstr \"État Américain (deux lettres majuscules)\"\n\n#: us/models.py:17\nmsgid \"U.S. postal code (two uppercase letters)\"\nmsgstr \"Code postal des États-Unis (deux lettres majuscules)\"\n\n#: us/models.py:26\nmsgid \"Phone number\"\nmsgstr \"Numéro de téléphone\"\n\n#: uy/forms.py:29\nmsgid \"Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.\"\nmsgstr \"\"\n\"Saisissez un numéro de CI valide au format X.XXX.XXX-X,XXXXXXX-X ou XXXXXXXX.\"\n\n#: uy/forms.py:31\nmsgid \"Enter a valid CI number.\"\nmsgstr \"Saisissez un numéro CI valide.\"\n\n#: za/forms.py:22\nmsgid \"Enter a valid South African ID number\"\nmsgstr \"Saisissez un numéro d'identification sud-africain valide.\"\n\n#: za/forms.py:56\nmsgid \"Enter a valid South African postal code\"\nmsgstr \"Saisissez un code postal sud-africain valide.\"\n\n#: za/za_provinces.py:4\nmsgid \"Eastern Cape\"\nmsgstr \"Cap-Oriental\"\n\n#: za/za_provinces.py:5\nmsgid \"Free State\"\nmsgstr \"État-Libre\"\n\n#: za/za_provinces.py:6\nmsgid \"Gauteng\"\nmsgstr \"Gauteng\"\n\n#: za/za_provinces.py:7\nmsgid \"KwaZulu-Natal\"\nmsgstr \"KwaZulu-Natal\"\n\n#: za/za_provinces.py:8\nmsgid \"Limpopo\"\nmsgstr \"Limpopo\"\n\n#: za/za_provinces.py:9\nmsgid \"Mpumalanga\"\nmsgstr \"Mpumalanga\"\n\n#: za/za_provinces.py:10\nmsgid \"Northern Cape\"\nmsgstr \"Cap-du-Nord\"\n\n#: za/za_provinces.py:11\nmsgid \"North West\"\nmsgstr \"Nord-Ouest\"\n\n#: za/za_provinces.py:12\nmsgid \"Western Cape\"\nmsgstr \"Cap-Occidental\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/locale/fy_NL/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:41+0100\\n\"\n\"PO-Revision-Date: 2011-03-15 15:41+0000\\n\"\n\"Last-Translator: Django team\\n\"\n\"Language-Team: English <en@li.org>\\n\"\n\"Language: fy_NL\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1)\\n\"\n\n#: ar/forms.py:30\nmsgid \"Enter a postal code in the format NNNN or ANNNNAAA.\"\nmsgstr \"\"\n\n#: ar/forms.py:52 br/forms.py:95 br/forms.py:134 pe/forms.py:27 pe/forms.py:55\nmsgid \"This field requires only numbers.\"\nmsgstr \"\"\n\n#: ar/forms.py:53\nmsgid \"This field requires 7 or 8 digits.\"\nmsgstr \"\"\n\n#: ar/forms.py:82\nmsgid \"Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.\"\nmsgstr \"\"\n\n#: ar/forms.py:83\nmsgid \"Invalid CUIT.\"\nmsgstr \"\"\n\n#: at/at_states.py:5\nmsgid \"Burgenland\"\nmsgstr \"\"\n\n#: at/at_states.py:6\nmsgid \"Carinthia\"\nmsgstr \"\"\n\n#: at/at_states.py:7\nmsgid \"Lower Austria\"\nmsgstr \"\"\n\n#: at/at_states.py:8\nmsgid \"Upper Austria\"\nmsgstr \"\"\n\n#: at/at_states.py:9\nmsgid \"Salzburg\"\nmsgstr \"\"\n\n#: at/at_states.py:10\nmsgid \"Styria\"\nmsgstr \"\"\n\n#: at/at_states.py:11\nmsgid \"Tyrol\"\nmsgstr \"\"\n\n#: at/at_states.py:12\nmsgid \"Vorarlberg\"\nmsgstr \"\"\n\n#: at/at_states.py:13\nmsgid \"Vienna\"\nmsgstr \"\"\n\n#: at/forms.py:22 ch/forms.py:22 no/forms.py:19\nmsgid \"Enter a zip code in the format XXXX.\"\nmsgstr \"\"\n\n#: at/forms.py:50\nmsgid \"Enter a valid Austrian Social Security Number in XXXX XXXXXX format.\"\nmsgstr \"\"\n\n#: au/forms.py:26\nmsgid \"Enter a 4 digit postcode.\"\nmsgstr \"\"\n\n#: au/models.py:9\nmsgid \"Australian State\"\nmsgstr \"\"\n\n#: au/models.py:19\nmsgid \"Australian Postcode\"\nmsgstr \"\"\n\n#: au/models.py:33\nmsgid \"Australian Phone number\"\nmsgstr \"\"\n\n#: be/be_provinces.py:5\nmsgid \"Antwerp\"\nmsgstr \"\"\n\n#: be/be_provinces.py:6\nmsgid \"Brussels\"\nmsgstr \"\"\n\n#: be/be_provinces.py:7\nmsgid \"East Flanders\"\nmsgstr \"\"\n\n#: be/be_provinces.py:8\nmsgid \"Flemish Brabant\"\nmsgstr \"\"\n\n#: be/be_provinces.py:9\nmsgid \"Hainaut\"\nmsgstr \"\"\n\n#: be/be_provinces.py:10\nmsgid \"Liege\"\nmsgstr \"\"\n\n#: be/be_provinces.py:11 nl/nl_provinces.py:9\nmsgid \"Limburg\"\nmsgstr \"\"\n\n#: be/be_provinces.py:12\nmsgid \"Luxembourg\"\nmsgstr \"\"\n\n#: be/be_provinces.py:13\nmsgid \"Namur\"\nmsgstr \"\"\n\n#: be/be_provinces.py:14\nmsgid \"Walloon Brabant\"\nmsgstr \"\"\n\n#: be/be_provinces.py:15\nmsgid \"West Flanders\"\nmsgstr \"\"\n\n#: be/be_regions.py:5\nmsgid \"Brussels Capital Region\"\nmsgstr \"\"\n\n#: be/be_regions.py:6\nmsgid \"Flemish Region\"\nmsgstr \"\"\n\n#: be/be_regions.py:7\nmsgid \"Wallonia\"\nmsgstr \"\"\n\n#: be/forms.py:25\nmsgid \"Enter a valid postal code in the range and format 1XXX - 9XXX.\"\nmsgstr \"\"\n\n#: be/forms.py:48\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\nmsgstr \"\"\n\n#: br/forms.py:22\nmsgid \"Enter a zip code in the format XXXXX-XXX.\"\nmsgstr \"\"\n\n#: br/forms.py:31\nmsgid \"Phone numbers must be in XX-XXXX-XXXX format.\"\nmsgstr \"\"\n\n#: br/forms.py:58\nmsgid \"\"\n\"Select a valid brazilian state. That state is not one of the available \"\n\"states.\"\nmsgstr \"\"\n\n#: br/forms.py:93\nmsgid \"Invalid CPF number.\"\nmsgstr \"\"\n\n#: br/forms.py:94\nmsgid \"This field requires at most 11 digits or 14 characters.\"\nmsgstr \"\"\n\n#: br/forms.py:133\nmsgid \"Invalid CNPJ number.\"\nmsgstr \"\"\n\n#: br/forms.py:135\nmsgid \"This field requires at least 14 digits\"\nmsgstr \"\"\n\n#: ca/forms.py:29\nmsgid \"Enter a postal code in the format XXX XXX.\"\nmsgstr \"\"\n\n#: ca/forms.py:110\nmsgid \"Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.\"\nmsgstr \"\"\n\n#: ch/ch_states.py:5\nmsgid \"Aargau\"\nmsgstr \"\"\n\n#: ch/ch_states.py:6\nmsgid \"Appenzell Innerrhoden\"\nmsgstr \"\"\n\n#: ch/ch_states.py:7\nmsgid \"Appenzell Ausserrhoden\"\nmsgstr \"\"\n\n#: ch/ch_states.py:8\nmsgid \"Basel-Stadt\"\nmsgstr \"\"\n\n#: ch/ch_states.py:9\nmsgid \"Basel-Land\"\nmsgstr \"\"\n\n#: ch/ch_states.py:10\nmsgid \"Berne\"\nmsgstr \"\"\n\n#: ch/ch_states.py:11\nmsgid \"Fribourg\"\nmsgstr \"\"\n\n#: ch/ch_states.py:12\nmsgid \"Geneva\"\nmsgstr \"\"\n\n#: ch/ch_states.py:13\nmsgid \"Glarus\"\nmsgstr \"\"\n\n#: ch/ch_states.py:14\nmsgid \"Graubuenden\"\nmsgstr \"\"\n\n#: ch/ch_states.py:15\nmsgid \"Jura\"\nmsgstr \"\"\n\n#: ch/ch_states.py:16\nmsgid \"Lucerne\"\nmsgstr \"\"\n\n#: ch/ch_states.py:17\nmsgid \"Neuchatel\"\nmsgstr \"\"\n\n#: ch/ch_states.py:18\nmsgid \"Nidwalden\"\nmsgstr \"\"\n\n#: ch/ch_states.py:19\nmsgid \"Obwalden\"\nmsgstr \"\"\n\n#: ch/ch_states.py:20\nmsgid \"Schaffhausen\"\nmsgstr \"\"\n\n#: ch/ch_states.py:21\nmsgid \"Schwyz\"\nmsgstr \"\"\n\n#: ch/ch_states.py:22\nmsgid \"Solothurn\"\nmsgstr \"\"\n\n#: ch/ch_states.py:23\nmsgid \"St. Gallen\"\nmsgstr \"\"\n\n#: ch/ch_states.py:24\nmsgid \"Thurgau\"\nmsgstr \"\"\n\n#: ch/ch_states.py:25\nmsgid \"Ticino\"\nmsgstr \"\"\n\n#: ch/ch_states.py:26\nmsgid \"Uri\"\nmsgstr \"\"\n\n#: ch/ch_states.py:27\nmsgid \"Valais\"\nmsgstr \"\"\n\n#: ch/ch_states.py:28\nmsgid \"Vaud\"\nmsgstr \"\"\n\n#: ch/ch_states.py:29\nmsgid \"Zug\"\nmsgstr \"\"\n\n#: ch/ch_states.py:30\nmsgid \"Zurich\"\nmsgstr \"\"\n\n#: ch/forms.py:68\nmsgid \"\"\n\"Enter a valid Swiss identity or passport card number in X1234567<0 or \"\n\"1234567890 format.\"\nmsgstr \"\"\n\n#: cl/forms.py:32\nmsgid \"Enter a valid Chilean RUT.\"\nmsgstr \"\"\n\n#: cl/forms.py:33\nmsgid \"Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.\"\nmsgstr \"\"\n\n#: cl/forms.py:34\nmsgid \"The Chilean RUT is not valid.\"\nmsgstr \"\"\n\n#: cn/forms.py:84\nmsgid \"Enter a post code in the format XXXXXX.\"\nmsgstr \"\"\n\n#: cn/forms.py:105\nmsgid \"ID Card Number consists of 15 or 18 digits.\"\nmsgstr \"\"\n\n#: cn/forms.py:106\nmsgid \"Invalid ID Card Number: Wrong checksum\"\nmsgstr \"\"\n\n#: cn/forms.py:107\nmsgid \"Invalid ID Card Number: Wrong birthdate\"\nmsgstr \"\"\n\n#: cn/forms.py:108\nmsgid \"Invalid ID Card Number: Wrong location code\"\nmsgstr \"\"\n\n#: cn/forms.py:193\nmsgid \"Enter a valid phone number.\"\nmsgstr \"\"\n\n#: cn/forms.py:210\nmsgid \"Enter a valid cell number.\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:8\nmsgid \"Prague\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:9\nmsgid \"Central Bohemian Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:10\nmsgid \"South Bohemian Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:11\nmsgid \"Pilsen Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:12\nmsgid \"Carlsbad Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:13\nmsgid \"Usti Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:14\nmsgid \"Liberec Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:15\nmsgid \"Hradec Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:16\nmsgid \"Pardubice Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:17\nmsgid \"Vysocina Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:18\nmsgid \"South Moravian Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:19\nmsgid \"Olomouc Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:20\nmsgid \"Zlin Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:21\nmsgid \"Moravian-Silesian Region\"\nmsgstr \"\"\n\n#: cz/forms.py:32 sk/forms.py:33\nmsgid \"Enter a postal code in the format XXXXX or XXX XX.\"\nmsgstr \"\"\n\n#: cz/forms.py:52\nmsgid \"Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.\"\nmsgstr \"\"\n\n#: cz/forms.py:53\nmsgid \"Invalid optional parameter Gender, valid values are 'f' and 'm'\"\nmsgstr \"\"\n\n#: cz/forms.py:54\nmsgid \"Enter a valid birth number.\"\nmsgstr \"\"\n\n#: cz/forms.py:115\nmsgid \"Enter a valid IC number.\"\nmsgstr \"\"\n\n#: de/de_states.py:5\nmsgid \"Baden-Wuerttemberg\"\nmsgstr \"\"\n\n#: de/de_states.py:6\nmsgid \"Bavaria\"\nmsgstr \"\"\n\n#: de/de_states.py:7\nmsgid \"Berlin\"\nmsgstr \"\"\n\n#: de/de_states.py:8\nmsgid \"Brandenburg\"\nmsgstr \"\"\n\n#: de/de_states.py:9\nmsgid \"Bremen\"\nmsgstr \"\"\n\n#: de/de_states.py:10\nmsgid \"Hamburg\"\nmsgstr \"\"\n\n#: de/de_states.py:11\nmsgid \"Hessen\"\nmsgstr \"\"\n\n#: de/de_states.py:12\nmsgid \"Mecklenburg-Western Pomerania\"\nmsgstr \"\"\n\n#: de/de_states.py:13\nmsgid \"Lower Saxony\"\nmsgstr \"\"\n\n#: de/de_states.py:14\nmsgid \"North Rhine-Westphalia\"\nmsgstr \"\"\n\n#: de/de_states.py:15\nmsgid \"Rhineland-Palatinate\"\nmsgstr \"\"\n\n#: de/de_states.py:16\nmsgid \"Saarland\"\nmsgstr \"\"\n\n#: de/de_states.py:17\nmsgid \"Saxony\"\nmsgstr \"\"\n\n#: de/de_states.py:18\nmsgid \"Saxony-Anhalt\"\nmsgstr \"\"\n\n#: de/de_states.py:19\nmsgid \"Schleswig-Holstein\"\nmsgstr \"\"\n\n#: de/de_states.py:20\nmsgid \"Thuringia\"\nmsgstr \"\"\n\n#: de/forms.py:20 fi/forms.py:18 fr/forms.py:20\nmsgid \"Enter a zip code in the format XXXXX.\"\nmsgstr \"\"\n\n#: de/forms.py:46\nmsgid \"\"\n\"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"format.\"\nmsgstr \"\"\n\n#: es/es_provinces.py:5\nmsgid \"Arava\"\nmsgstr \"\"\n\n#: es/es_provinces.py:6\nmsgid \"Albacete\"\nmsgstr \"\"\n\n#: es/es_provinces.py:7\nmsgid \"Alacant\"\nmsgstr \"\"\n\n#: es/es_provinces.py:8\nmsgid \"Almeria\"\nmsgstr \"\"\n\n#: es/es_provinces.py:9\nmsgid \"Avila\"\nmsgstr \"\"\n\n#: es/es_provinces.py:10\nmsgid \"Badajoz\"\nmsgstr \"\"\n\n#: es/es_provinces.py:11\nmsgid \"Illes Balears\"\nmsgstr \"\"\n\n#: es/es_provinces.py:12\nmsgid \"Barcelona\"\nmsgstr \"\"\n\n#: es/es_provinces.py:13\nmsgid \"Burgos\"\nmsgstr \"\"\n\n#: es/es_provinces.py:14\nmsgid \"Caceres\"\nmsgstr \"\"\n\n#: es/es_provinces.py:15\nmsgid \"Cadiz\"\nmsgstr \"\"\n\n#: es/es_provinces.py:16\nmsgid \"Castello\"\nmsgstr \"\"\n\n#: es/es_provinces.py:17\nmsgid \"Ciudad Real\"\nmsgstr \"\"\n\n#: es/es_provinces.py:18\nmsgid \"Cordoba\"\nmsgstr \"\"\n\n#: es/es_provinces.py:19\nmsgid \"A Coruna\"\nmsgstr \"\"\n\n#: es/es_provinces.py:20\nmsgid \"Cuenca\"\nmsgstr \"\"\n\n#: es/es_provinces.py:21\nmsgid \"Girona\"\nmsgstr \"\"\n\n#: es/es_provinces.py:22\nmsgid \"Granada\"\nmsgstr \"\"\n\n#: es/es_provinces.py:23\nmsgid \"Guadalajara\"\nmsgstr \"\"\n\n#: es/es_provinces.py:24\nmsgid \"Guipuzkoa\"\nmsgstr \"\"\n\n#: es/es_provinces.py:25\nmsgid \"Huelva\"\nmsgstr \"\"\n\n#: es/es_provinces.py:26\nmsgid \"Huesca\"\nmsgstr \"\"\n\n#: es/es_provinces.py:27\nmsgid \"Jaen\"\nmsgstr \"\"\n\n#: es/es_provinces.py:28\nmsgid \"Leon\"\nmsgstr \"\"\n\n#: es/es_provinces.py:29\nmsgid \"Lleida\"\nmsgstr \"\"\n\n#: es/es_provinces.py:30 es/es_regions.py:17\nmsgid \"La Rioja\"\nmsgstr \"\"\n\n#: es/es_provinces.py:31\nmsgid \"Lugo\"\nmsgstr \"\"\n\n#: es/es_provinces.py:32 es/es_regions.py:18\nmsgid \"Madrid\"\nmsgstr \"\"\n\n#: es/es_provinces.py:33\nmsgid \"Malaga\"\nmsgstr \"\"\n\n#: es/es_provinces.py:34\nmsgid \"Murcia\"\nmsgstr \"\"\n\n#: es/es_provinces.py:35\nmsgid \"Navarre\"\nmsgstr \"\"\n\n#: es/es_provinces.py:36\nmsgid \"Ourense\"\nmsgstr \"\"\n\n#: es/es_provinces.py:37\nmsgid \"Asturias\"\nmsgstr \"\"\n\n#: es/es_provinces.py:38\nmsgid \"Palencia\"\nmsgstr \"\"\n\n#: es/es_provinces.py:39\nmsgid \"Las Palmas\"\nmsgstr \"\"\n\n#: es/es_provinces.py:40\nmsgid \"Pontevedra\"\nmsgstr \"\"\n\n#: es/es_provinces.py:41\nmsgid \"Salamanca\"\nmsgstr \"\"\n\n#: es/es_provinces.py:42\nmsgid \"Santa Cruz de Tenerife\"\nmsgstr \"\"\n\n#: es/es_provinces.py:43 es/es_regions.py:11\nmsgid \"Cantabria\"\nmsgstr \"\"\n\n#: es/es_provinces.py:44\nmsgid \"Segovia\"\nmsgstr \"\"\n\n#: es/es_provinces.py:45\nmsgid \"Seville\"\nmsgstr \"\"\n\n#: es/es_provinces.py:46\nmsgid \"Soria\"\nmsgstr \"\"\n\n#: es/es_provinces.py:47\nmsgid \"Tarragona\"\nmsgstr \"\"\n\n#: es/es_provinces.py:48\nmsgid \"Teruel\"\nmsgstr \"\"\n\n#: es/es_provinces.py:49\nmsgid \"Toledo\"\nmsgstr \"\"\n\n#: es/es_provinces.py:50\nmsgid \"Valencia\"\nmsgstr \"\"\n\n#: es/es_provinces.py:51\nmsgid \"Valladolid\"\nmsgstr \"\"\n\n#: es/es_provinces.py:52\nmsgid \"Bizkaia\"\nmsgstr \"\"\n\n#: es/es_provinces.py:53\nmsgid \"Zamora\"\nmsgstr \"\"\n\n#: es/es_provinces.py:54\nmsgid \"Zaragoza\"\nmsgstr \"\"\n\n#: es/es_provinces.py:55\nmsgid \"Ceuta\"\nmsgstr \"\"\n\n#: es/es_provinces.py:56\nmsgid \"Melilla\"\nmsgstr \"\"\n\n#: es/es_regions.py:5\nmsgid \"Andalusia\"\nmsgstr \"\"\n\n#: es/es_regions.py:6\nmsgid \"Aragon\"\nmsgstr \"\"\n\n#: es/es_regions.py:7\nmsgid \"Principality of Asturias\"\nmsgstr \"\"\n\n#: es/es_regions.py:8\nmsgid \"Balearic Islands\"\nmsgstr \"\"\n\n#: es/es_regions.py:9\nmsgid \"Basque Country\"\nmsgstr \"\"\n\n#: es/es_regions.py:10\nmsgid \"Canary Islands\"\nmsgstr \"\"\n\n#: es/es_regions.py:12\nmsgid \"Castile-La Mancha\"\nmsgstr \"\"\n\n#: es/es_regions.py:13\nmsgid \"Castile and Leon\"\nmsgstr \"\"\n\n#: es/es_regions.py:14\nmsgid \"Catalonia\"\nmsgstr \"\"\n\n#: es/es_regions.py:15\nmsgid \"Extremadura\"\nmsgstr \"\"\n\n#: es/es_regions.py:16\nmsgid \"Galicia\"\nmsgstr \"\"\n\n#: es/es_regions.py:19\nmsgid \"Region of Murcia\"\nmsgstr \"\"\n\n#: es/es_regions.py:20\nmsgid \"Foral Community of Navarre\"\nmsgstr \"\"\n\n#: es/es_regions.py:21\nmsgid \"Valencian Community\"\nmsgstr \"\"\n\n#: es/forms.py:26\nmsgid \"Enter a valid postal code in the range and format 01XXX - 52XXX.\"\nmsgstr \"\"\n\n#: es/forms.py:46\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or \"\n\"9XXXXXXXX.\"\nmsgstr \"\"\n\n#: es/forms.py:73\nmsgid \"Please enter a valid NIF, NIE, or CIF.\"\nmsgstr \"\"\n\n#: es/forms.py:74\nmsgid \"Please enter a valid NIF or NIE.\"\nmsgstr \"\"\n\n#: es/forms.py:75\nmsgid \"Invalid checksum for NIF.\"\nmsgstr \"\"\n\n#: es/forms.py:76\nmsgid \"Invalid checksum for NIE.\"\nmsgstr \"\"\n\n#: es/forms.py:77\nmsgid \"Invalid checksum for CIF.\"\nmsgstr \"\"\n\n#: es/forms.py:149\nmsgid \"\"\n\"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.\"\nmsgstr \"\"\n\n#: es/forms.py:150\nmsgid \"Invalid checksum for bank account number.\"\nmsgstr \"\"\n\n#: fi/forms.py:33\nmsgid \"Enter a valid Finnish social security number.\"\nmsgstr \"\"\n\n#: fr/forms.py:35\nmsgid \"Phone numbers must be in 0X XX XX XX XX format.\"\nmsgstr \"\"\n\n#: gb/forms.py:25\nmsgid \"Enter a valid postcode.\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:11\nmsgid \"Bedfordshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:12\nmsgid \"Buckinghamshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:14\nmsgid \"Cheshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:15\nmsgid \"Cornwall and Isles of Scilly\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:16\nmsgid \"Cumbria\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:17\nmsgid \"Derbyshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:18\nmsgid \"Devon\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:19\nmsgid \"Dorset\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:20\nmsgid \"Durham\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:21\nmsgid \"East Sussex\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:22\nmsgid \"Essex\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:23\nmsgid \"Gloucestershire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:24\nmsgid \"Greater London\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:25\nmsgid \"Greater Manchester\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:26\nmsgid \"Hampshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:27\nmsgid \"Hertfordshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:28\nmsgid \"Kent\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:29\nmsgid \"Lancashire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:30\nmsgid \"Leicestershire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:31\nmsgid \"Lincolnshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:32\nmsgid \"Merseyside\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:33\nmsgid \"Norfolk\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:34\nmsgid \"North Yorkshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:35\nmsgid \"Northamptonshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:36\nmsgid \"Northumberland\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:37\nmsgid \"Nottinghamshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:38\nmsgid \"Oxfordshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:39\nmsgid \"Shropshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:40\nmsgid \"Somerset\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:41\nmsgid \"South Yorkshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:42\nmsgid \"Staffordshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:43\nmsgid \"Suffolk\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:44\nmsgid \"Surrey\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:45\nmsgid \"Tyne and Wear\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:46\nmsgid \"Warwickshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:47\nmsgid \"West Midlands\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:48\nmsgid \"West Sussex\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:49\nmsgid \"West Yorkshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:50\nmsgid \"Wiltshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:51\nmsgid \"Worcestershire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:55\nmsgid \"County Antrim\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:56\nmsgid \"County Armagh\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:57\nmsgid \"County Down\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:58\nmsgid \"County Fermanagh\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:59\nmsgid \"County Londonderry\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:60\nmsgid \"County Tyrone\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:64\nmsgid \"Clwyd\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:65\nmsgid \"Dyfed\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:66\nmsgid \"Gwent\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:67\nmsgid \"Gwynedd\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:68\nmsgid \"Mid Glamorgan\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:69\nmsgid \"Powys\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:70\nmsgid \"South Glamorgan\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:71\nmsgid \"West Glamorgan\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:75\nmsgid \"Borders\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:76\nmsgid \"Central Scotland\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:77\nmsgid \"Dumfries and Galloway\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:78\nmsgid \"Fife\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:79\nmsgid \"Grampian\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:80\nmsgid \"Highland\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:81\nmsgid \"Lothian\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:82\nmsgid \"Orkney Islands\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:83\nmsgid \"Shetland Islands\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:84\nmsgid \"Strathclyde\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:85\nmsgid \"Tayside\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:86\nmsgid \"Western Isles\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:90\nmsgid \"England\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:91\nmsgid \"Northern Ireland\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:92\nmsgid \"Scotland\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:93\nmsgid \"Wales\"\nmsgstr \"\"\n\n#: hr/forms.py:75\nmsgid \"Enter a valid 13 digit JMBG\"\nmsgstr \"\"\n\n#: hr/forms.py:76\nmsgid \"Error in date segment\"\nmsgstr \"\"\n\n#: hr/forms.py:123\nmsgid \"Enter a valid 11 digit OIB\"\nmsgstr \"\"\n\n#: hr/forms.py:152 id/forms.py:112\nmsgid \"Enter a valid vehicle license plate number\"\nmsgstr \"\"\n\n#: hr/forms.py:153\nmsgid \"Enter a valid location code\"\nmsgstr \"\"\n\n#: hr/forms.py:154\nmsgid \"Number part cannot be zero\"\nmsgstr \"\"\n\n#: hr/forms.py:190\nmsgid \"Enter a valid 5 digit postal code\"\nmsgstr \"\"\n\n#: hr/forms.py:218 id/forms.py:72 nl/forms.py:56\nmsgid \"Enter a valid phone number\"\nmsgstr \"\"\n\n#: hr/forms.py:219\nmsgid \"Enter a valid area or mobile network code\"\nmsgstr \"\"\n\n#: hr/forms.py:220\nmsgid \"The phone nubmer is too long\"\nmsgstr \"\"\n\n#: hr/forms.py:258\nmsgid \"Enter a valid 19 digit JMBAG starting with 601983\"\nmsgstr \"\"\n\n#: hr/forms.py:259\nmsgid \"Card issue number cannot be zero\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:12\nmsgid \"Grad Zagreb\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:13\nmsgid \"Bjelovarsko-bilogorska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:14\nmsgid \"Brodsko-posavska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:15\nmsgid \"Dubrovačko-neretvanska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:16\nmsgid \"Istarska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:17\nmsgid \"Karlovačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:18\nmsgid \"Koprivničko-križevačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:19\nmsgid \"Krapinsko-zagorska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:20\nmsgid \"Ličko-senjska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:21\nmsgid \"Međimurska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:22\nmsgid \"Osječko-baranjska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:23\nmsgid \"Požeško-slavonska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:24\nmsgid \"Primorsko-goranska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:25\nmsgid \"Sisačko-moslavačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:26\nmsgid \"Splitsko-dalmatinska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:27\nmsgid \"Šibensko-kninska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:28\nmsgid \"Varaždinska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:29\nmsgid \"Virovitičko-podravska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:30\nmsgid \"Vukovarsko-srijemska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:31\nmsgid \"Zadarska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:32\nmsgid \"Zagrebačka županija\"\nmsgstr \"\"\n\n#: id/forms.py:31\nmsgid \"Enter a valid post code\"\nmsgstr \"\"\n\n#: id/forms.py:176\nmsgid \"Enter a valid NIK/KTP number\"\nmsgstr \"\"\n\n#: id/id_choices.py:15\nmsgid \"Aceh\"\nmsgstr \"\"\n\n#: id/id_choices.py:16 id/id_choices.py:79\nmsgid \"Bali\"\nmsgstr \"\"\n\n#: id/id_choices.py:17 id/id_choices.py:51\nmsgid \"Banten\"\nmsgstr \"\"\n\n#: id/id_choices.py:18 id/id_choices.py:60\nmsgid \"Bengkulu\"\nmsgstr \"\"\n\n#: id/id_choices.py:19 id/id_choices.py:53\nmsgid \"Yogyakarta\"\nmsgstr \"\"\n\n#: id/id_choices.py:20 id/id_choices.py:57\nmsgid \"Jakarta\"\nmsgstr \"\"\n\n#: id/id_choices.py:21 id/id_choices.py:81\nmsgid \"Gorontalo\"\nmsgstr \"\"\n\n#: id/id_choices.py:22 id/id_choices.py:63\nmsgid \"Jambi\"\nmsgstr \"\"\n\n#: id/id_choices.py:23\nmsgid \"Jawa Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:24\nmsgid \"Jawa Tengah\"\nmsgstr \"\"\n\n#: id/id_choices.py:25\nmsgid \"Jawa Timur\"\nmsgstr \"\"\n\n#: id/id_choices.py:26 id/id_choices.py:94\nmsgid \"Kalimantan Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:27 id/id_choices.py:72\nmsgid \"Kalimantan Selatan\"\nmsgstr \"\"\n\n#: id/id_choices.py:28 id/id_choices.py:95\nmsgid \"Kalimantan Tengah\"\nmsgstr \"\"\n\n#: id/id_choices.py:29 id/id_choices.py:96\nmsgid \"Kalimantan Timur\"\nmsgstr \"\"\n\n#: id/id_choices.py:30\nmsgid \"Kepulauan Bangka-Belitung\"\nmsgstr \"\"\n\n#: id/id_choices.py:31 id/id_choices.py:68\nmsgid \"Kepulauan Riau\"\nmsgstr \"\"\n\n#: id/id_choices.py:32 id/id_choices.py:61\nmsgid \"Lampung\"\nmsgstr \"\"\n\n#: id/id_choices.py:33 id/id_choices.py:76\nmsgid \"Maluku\"\nmsgstr \"\"\n\n#: id/id_choices.py:34 id/id_choices.py:77\nmsgid \"Maluku Utara\"\nmsgstr \"\"\n\n#: id/id_choices.py:35\nmsgid \"Nusa Tenggara Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:36\nmsgid \"Nusa Tenggara Timur\"\nmsgstr \"\"\n\n#: id/id_choices.py:37\nmsgid \"Papua\"\nmsgstr \"\"\n\n#: id/id_choices.py:38\nmsgid \"Papua Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:39 id/id_choices.py:66\nmsgid \"Riau\"\nmsgstr \"\"\n\n#: id/id_choices.py:40 id/id_choices.py:74\nmsgid \"Sulawesi Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:41 id/id_choices.py:75\nmsgid \"Sulawesi Selatan\"\nmsgstr \"\"\n\n#: id/id_choices.py:42 id/id_choices.py:82\nmsgid \"Sulawesi Tengah\"\nmsgstr \"\"\n\n#: id/id_choices.py:43 id/id_choices.py:85\nmsgid \"Sulawesi Tenggara\"\nmsgstr \"\"\n\n#: id/id_choices.py:44\nmsgid \"Sulawesi Utara\"\nmsgstr \"\"\n\n#: id/id_choices.py:45 id/id_choices.py:58\nmsgid \"Sumatera Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:46 id/id_choices.py:62\nmsgid \"Sumatera Selatan\"\nmsgstr \"\"\n\n#: id/id_choices.py:47 id/id_choices.py:64\nmsgid \"Sumatera Utara\"\nmsgstr \"\"\n\n#: id/id_choices.py:52\nmsgid \"Magelang\"\nmsgstr \"\"\n\n#: id/id_choices.py:54\nmsgid \"Surakarta - Solo\"\nmsgstr \"\"\n\n#: id/id_choices.py:55\nmsgid \"Madiun\"\nmsgstr \"\"\n\n#: id/id_choices.py:56\nmsgid \"Kediri\"\nmsgstr \"\"\n\n#: id/id_choices.py:59\nmsgid \"Tapanuli\"\nmsgstr \"\"\n\n#: id/id_choices.py:65\nmsgid \"Nanggroe Aceh Darussalam\"\nmsgstr \"\"\n\n#: id/id_choices.py:67\nmsgid \"Kepulauan Bangka Belitung\"\nmsgstr \"\"\n\n#: id/id_choices.py:69\nmsgid \"Corps Consulate\"\nmsgstr \"\"\n\n#: id/id_choices.py:70\nmsgid \"Corps Diplomatic\"\nmsgstr \"\"\n\n#: id/id_choices.py:71\nmsgid \"Bandung\"\nmsgstr \"\"\n\n#: id/id_choices.py:73\nmsgid \"Sulawesi Utara Daratan\"\nmsgstr \"\"\n\n#: id/id_choices.py:78\nmsgid \"NTT - Timor\"\nmsgstr \"\"\n\n#: id/id_choices.py:80\nmsgid \"Sulawesi Utara Kepulauan\"\nmsgstr \"\"\n\n#: id/id_choices.py:83\nmsgid \"NTB - Lombok\"\nmsgstr \"\"\n\n#: id/id_choices.py:84\nmsgid \"Papua dan Papua Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:86\nmsgid \"Cirebon\"\nmsgstr \"\"\n\n#: id/id_choices.py:87\nmsgid \"NTB - Sumbawa\"\nmsgstr \"\"\n\n#: id/id_choices.py:88\nmsgid \"NTT - Flores\"\nmsgstr \"\"\n\n#: id/id_choices.py:89\nmsgid \"NTT - Sumba\"\nmsgstr \"\"\n\n#: id/id_choices.py:90\nmsgid \"Bogor\"\nmsgstr \"\"\n\n#: id/id_choices.py:91\nmsgid \"Pekalongan\"\nmsgstr \"\"\n\n#: id/id_choices.py:92\nmsgid \"Semarang\"\nmsgstr \"\"\n\n#: id/id_choices.py:93\nmsgid \"Pati\"\nmsgstr \"\"\n\n#: id/id_choices.py:97\nmsgid \"Surabaya\"\nmsgstr \"\"\n\n#: id/id_choices.py:98\nmsgid \"Madura\"\nmsgstr \"\"\n\n#: id/id_choices.py:99\nmsgid \"Malang\"\nmsgstr \"\"\n\n#: id/id_choices.py:100\nmsgid \"Jember\"\nmsgstr \"\"\n\n#: id/id_choices.py:101\nmsgid \"Banyumas\"\nmsgstr \"\"\n\n#: id/id_choices.py:102\nmsgid \"Federal Government\"\nmsgstr \"\"\n\n#: id/id_choices.py:103\nmsgid \"Bojonegoro\"\nmsgstr \"\"\n\n#: id/id_choices.py:104\nmsgid \"Purwakarta\"\nmsgstr \"\"\n\n#: id/id_choices.py:105\nmsgid \"Sidoarjo\"\nmsgstr \"\"\n\n#: id/id_choices.py:106\nmsgid \"Garut\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:8\nmsgid \"Antrim\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:9\nmsgid \"Armagh\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:10\nmsgid \"Carlow\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:11\nmsgid \"Cavan\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:12\nmsgid \"Clare\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:13\nmsgid \"Cork\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:14\nmsgid \"Derry\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:15\nmsgid \"Donegal\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:16\nmsgid \"Down\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:17\nmsgid \"Dublin\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:18\nmsgid \"Fermanagh\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:19\nmsgid \"Galway\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:20\nmsgid \"Kerry\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:21\nmsgid \"Kildare\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:22\nmsgid \"Kilkenny\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:23\nmsgid \"Laois\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:24\nmsgid \"Leitrim\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:25\nmsgid \"Limerick\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:26\nmsgid \"Longford\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:27\nmsgid \"Louth\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:28\nmsgid \"Mayo\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:29\nmsgid \"Meath\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:30\nmsgid \"Monaghan\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:31\nmsgid \"Offaly\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:32\nmsgid \"Roscommon\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:33\nmsgid \"Sligo\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:34\nmsgid \"Tipperary\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:35\nmsgid \"Tyrone\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:36\nmsgid \"Waterford\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:37\nmsgid \"Westmeath\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:38\nmsgid \"Wexford\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:39\nmsgid \"Wicklow\"\nmsgstr \"\"\n\n#: il/forms.py:31\nmsgid \"Enter a postal code in the format XXXXX\"\nmsgstr \"\"\n\n#: il/forms.py:50\nmsgid \"Enter a valid ID number.\"\nmsgstr \"\"\n\n#: in_/forms.py:41\nmsgid \"Enter a zip code in the format XXXXXX or XXX XXX.\"\nmsgstr \"\"\n\n#: in_/forms.py:64\nmsgid \"Enter an Indian state or territory.\"\nmsgstr \"\"\n\n#: in_/forms.py:103\nmsgid \"Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.\"\nmsgstr \"\"\n\n#: is_/forms.py:22\nmsgid \"\"\n\"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.\"\nmsgstr \"\"\n\n#: is_/forms.py:23\nmsgid \"The Icelandic identification number is not valid.\"\nmsgstr \"\"\n\n#: it/forms.py:21\nmsgid \"Enter a valid zip code.\"\nmsgstr \"\"\n\n#: it/forms.py:48\nmsgid \"Enter a valid Social Security number.\"\nmsgstr \"\"\n\n#: it/forms.py:73\nmsgid \"Enter a valid VAT number.\"\nmsgstr \"\"\n\n#: jp/forms.py:19\nmsgid \"Enter a postal code in the format XXXXXXX or XXX-XXXX.\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:4\nmsgid \"Hokkaido\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:5\nmsgid \"Aomori\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:6\nmsgid \"Iwate\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:7\nmsgid \"Miyagi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:8\nmsgid \"Akita\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:9\nmsgid \"Yamagata\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:10\nmsgid \"Fukushima\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:11\nmsgid \"Ibaraki\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:12\nmsgid \"Tochigi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:13\nmsgid \"Gunma\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:14\nmsgid \"Saitama\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:15\nmsgid \"Chiba\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:16\nmsgid \"Tokyo\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:17\nmsgid \"Kanagawa\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:18\nmsgid \"Yamanashi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:19\nmsgid \"Nagano\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:20\nmsgid \"Niigata\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:21\nmsgid \"Toyama\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:22\nmsgid \"Ishikawa\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:23\nmsgid \"Fukui\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:24\nmsgid \"Gifu\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:25\nmsgid \"Shizuoka\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:26\nmsgid \"Aichi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:27\nmsgid \"Mie\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:28\nmsgid \"Shiga\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:29\nmsgid \"Kyoto\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:30\nmsgid \"Osaka\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:31\nmsgid \"Hyogo\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:32\nmsgid \"Nara\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:33\nmsgid \"Wakayama\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:34\nmsgid \"Tottori\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:35\nmsgid \"Shimane\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:36\nmsgid \"Okayama\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:37\nmsgid \"Hiroshima\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:38\nmsgid \"Yamaguchi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:39\nmsgid \"Tokushima\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:40\nmsgid \"Kagawa\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:41\nmsgid \"Ehime\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:42\nmsgid \"Kochi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:43\nmsgid \"Fukuoka\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:44\nmsgid \"Saga\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:45\nmsgid \"Nagasaki\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:46\nmsgid \"Kumamoto\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:47\nmsgid \"Oita\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:48\nmsgid \"Miyazaki\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:49\nmsgid \"Kagoshima\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:50\nmsgid \"Okinawa\"\nmsgstr \"\"\n\n#: kw/forms.py:25\nmsgid \"Enter a valid Kuwaiti Civil ID number\"\nmsgstr \"\"\n\n#: mk/forms.py:18\nmsgid \"\"\n\"Identity card numbers must contain either 4 to 7 digits or an uppercase \"\n\"letter and 7 digits.\"\nmsgstr \"\"\n\n#: mk/forms.py:57 si/forms.py:24\nmsgid \"This field should contain exactly 13 digits.\"\nmsgstr \"\"\n\n#: mk/forms.py:58\nmsgid \"The first 7 digits of the UMCN must represent a valid past date.\"\nmsgstr \"\"\n\n#: mk/forms.py:59\nmsgid \"The UMCN is not valid.\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:8\nmsgid \"Aerodrom\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:9\nmsgid \"Aračinovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:10\nmsgid \"Berovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:11\nmsgid \"Bitola\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:12\nmsgid \"Bogdanci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:13\nmsgid \"Bogovinje\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:14\nmsgid \"Bosilovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:15\nmsgid \"Brvenica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:16\nmsgid \"Butel\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:17\nmsgid \"Valandovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:18\nmsgid \"Vasilevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:19\nmsgid \"Vevčani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:20\nmsgid \"Veles\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:21\nmsgid \"Vinica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:22\nmsgid \"Vraneštica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:23\nmsgid \"Vrapčište\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:24\nmsgid \"Gazi Baba\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:25\nmsgid \"Gevgelija\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:26\nmsgid \"Gostivar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:27\nmsgid \"Gradsko\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:28\nmsgid \"Debar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:29\nmsgid \"Debarca\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:30\nmsgid \"Delčevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:31\nmsgid \"Demir Kapija\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:32\nmsgid \"Demir Hisar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:33\nmsgid \"Dolneni\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:34\nmsgid \"Drugovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:35\nmsgid \"Gjorče Petrov\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:36\nmsgid \"Želino\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:37\nmsgid \"Zajas\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:38\nmsgid \"Zelenikovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:39\nmsgid \"Zrnovci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:40\nmsgid \"Ilinden\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:41\nmsgid \"Jegunovce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:42\nmsgid \"Kavadarci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:43\nmsgid \"Karbinci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:44\nmsgid \"Karpoš\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:45\nmsgid \"Kisela Voda\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:46\nmsgid \"Kičevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:47\nmsgid \"Konče\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:48\nmsgid \"Koćani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:49\nmsgid \"Kratovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:50\nmsgid \"Kriva Palanka\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:51\nmsgid \"Krivogaštani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:52\nmsgid \"Kruševo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:53\nmsgid \"Kumanovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:54\nmsgid \"Lipkovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:55\nmsgid \"Lozovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:56\nmsgid \"Mavrovo i Rostuša\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:57\nmsgid \"Makedonska Kamenica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:58\nmsgid \"Makedonski Brod\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:59\nmsgid \"Mogila\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:60\nmsgid \"Negotino\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:61\nmsgid \"Novaci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:62\nmsgid \"Novo Selo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:63\nmsgid \"Oslomej\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:64\nmsgid \"Ohrid\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:65\nmsgid \"Petrovec\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:66\nmsgid \"Pehčevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:67\nmsgid \"Plasnica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:68\nmsgid \"Prilep\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:69\nmsgid \"Probištip\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:70\nmsgid \"Radoviš\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:71\nmsgid \"Rankovce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:72\nmsgid \"Resen\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:73\nmsgid \"Rosoman\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:74\nmsgid \"Saraj\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:75\nmsgid \"Sveti Nikole\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:76\nmsgid \"Sopište\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:77\nmsgid \"Star Dojran\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:78\nmsgid \"Staro Nagoričane\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:79\nmsgid \"Struga\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:80\nmsgid \"Strumica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:81\nmsgid \"Studeničani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:82\nmsgid \"Tearce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:83\nmsgid \"Tetovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:84\nmsgid \"Centar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:85\nmsgid \"Centar-Župa\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:86\nmsgid \"Čair\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:87\nmsgid \"Čaška\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:88\nmsgid \"Češinovo-Obleševo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:89\nmsgid \"Čučer-Sandevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:90\nmsgid \"Štip\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:91\nmsgid \"Šuto Orizari\"\nmsgstr \"\"\n\n#: mk/models.py:11\nmsgid \"Macedonian identity card number\"\nmsgstr \"\"\n\n#: mk/models.py:25\nmsgid \"A Macedonian municipality (2 character code)\"\nmsgstr \"\"\n\n#: mk/models.py:35\nmsgid \"Unique master citizen number (13 digits)\"\nmsgstr \"\"\n\n#: mx/forms.py:65\nmsgid \"Enter a valid zip code in the format XXXXX.\"\nmsgstr \"\"\n\n#: mx/forms.py:108\nmsgid \"Enter a valid RFC.\"\nmsgstr \"\"\n\n#: mx/forms.py:109\nmsgid \"Invalid checksum for RFC.\"\nmsgstr \"\"\n\n#: mx/forms.py:189\nmsgid \"Enter a valid CURP.\"\nmsgstr \"\"\n\n#: mx/forms.py:190\nmsgid \"Invalid checksum for CURP.\"\nmsgstr \"\"\n\n#: mx/models.py:14\nmsgid \"Mexico state (three uppercase letters)\"\nmsgstr \"\"\n\n#: mx/models.py:27\nmsgid \"Mexico zip code\"\nmsgstr \"\"\n\n#: mx/models.py:44\nmsgid \"Mexican RFC\"\nmsgstr \"\"\n\n#: mx/models.py:61\nmsgid \"Mexican CURP\"\nmsgstr \"\"\n\n#: mx/mx_states.py:13\nmsgid \"Aguascalientes\"\nmsgstr \"\"\n\n#: mx/mx_states.py:14\nmsgid \"Baja California\"\nmsgstr \"\"\n\n#: mx/mx_states.py:15\nmsgid \"Baja California Sur\"\nmsgstr \"\"\n\n#: mx/mx_states.py:16\nmsgid \"Campeche\"\nmsgstr \"\"\n\n#: mx/mx_states.py:17\nmsgid \"Chihuahua\"\nmsgstr \"\"\n\n#: mx/mx_states.py:18\nmsgid \"Chiapas\"\nmsgstr \"\"\n\n#: mx/mx_states.py:19\nmsgid \"Coahuila\"\nmsgstr \"\"\n\n#: mx/mx_states.py:20\nmsgid \"Colima\"\nmsgstr \"\"\n\n#: mx/mx_states.py:21\nmsgid \"Distrito Federal\"\nmsgstr \"\"\n\n#: mx/mx_states.py:22\nmsgid \"Durango\"\nmsgstr \"\"\n\n#: mx/mx_states.py:23\nmsgid \"Guerrero\"\nmsgstr \"\"\n\n#: mx/mx_states.py:24\nmsgid \"Guanajuato\"\nmsgstr \"\"\n\n#: mx/mx_states.py:25\nmsgid \"Hidalgo\"\nmsgstr \"\"\n\n#: mx/mx_states.py:26\nmsgid \"Jalisco\"\nmsgstr \"\"\n\n#: mx/mx_states.py:27\nmsgid \"Estado de México\"\nmsgstr \"\"\n\n#: mx/mx_states.py:28\nmsgid \"Michoacán\"\nmsgstr \"\"\n\n#: mx/mx_states.py:29\nmsgid \"Morelos\"\nmsgstr \"\"\n\n#: mx/mx_states.py:30\nmsgid \"Nayarit\"\nmsgstr \"\"\n\n#: mx/mx_states.py:31\nmsgid \"Nuevo León\"\nmsgstr \"\"\n\n#: mx/mx_states.py:32\nmsgid \"Oaxaca\"\nmsgstr \"\"\n\n#: mx/mx_states.py:33\nmsgid \"Puebla\"\nmsgstr \"\"\n\n#: mx/mx_states.py:34\nmsgid \"Querétaro\"\nmsgstr \"\"\n\n#: mx/mx_states.py:35\nmsgid \"Quintana Roo\"\nmsgstr \"\"\n\n#: mx/mx_states.py:36\nmsgid \"Sinaloa\"\nmsgstr \"\"\n\n#: mx/mx_states.py:37\nmsgid \"San Luis Potosí\"\nmsgstr \"\"\n\n#: mx/mx_states.py:38\nmsgid \"Sonora\"\nmsgstr \"\"\n\n#: mx/mx_states.py:39\nmsgid \"Tabasco\"\nmsgstr \"\"\n\n#: mx/mx_states.py:40\nmsgid \"Tamaulipas\"\nmsgstr \"\"\n\n#: mx/mx_states.py:41\nmsgid \"Tlaxcala\"\nmsgstr \"\"\n\n#: mx/mx_states.py:42\nmsgid \"Veracruz\"\nmsgstr \"\"\n\n#: mx/mx_states.py:43\nmsgid \"Yucatán\"\nmsgstr \"\"\n\n#: mx/mx_states.py:44\nmsgid \"Zacatecas\"\nmsgstr \"\"\n\n#: nl/forms.py:26\nmsgid \"Enter a valid postal code\"\nmsgstr \"\"\n\n#: nl/forms.py:82\nmsgid \"Enter a valid SoFi number\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:4\nmsgid \"Drenthe\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:5\nmsgid \"Flevoland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:6\nmsgid \"Friesland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:7\nmsgid \"Gelderland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:8\nmsgid \"Groningen\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:10\nmsgid \"Noord-Brabant\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:11\nmsgid \"Noord-Holland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:12\nmsgid \"Overijssel\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:13\nmsgid \"Utrecht\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:14\nmsgid \"Zeeland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:15\nmsgid \"Zuid-Holland\"\nmsgstr \"\"\n\n#: no/forms.py:39\nmsgid \"Enter a valid Norwegian social security number.\"\nmsgstr \"\"\n\n#: pe/forms.py:28\nmsgid \"This field requires 8 digits.\"\nmsgstr \"\"\n\n#: pe/forms.py:56\nmsgid \"This field requires 11 digits.\"\nmsgstr \"\"\n\n#: pl/forms.py:42\nmsgid \"National Identification Number consists of 11 digits.\"\nmsgstr \"\"\n\n#: pl/forms.py:43\nmsgid \"Wrong checksum for the National Identification Number.\"\nmsgstr \"\"\n\n#: pl/forms.py:79\nmsgid \"National ID Card Number consists of 3 letters and 6 digits.\"\nmsgstr \"\"\n\n#: pl/forms.py:80\nmsgid \"Wrong checksum for the National ID Card Number.\"\nmsgstr \"\"\n\n#: pl/forms.py:131\nmsgid \"\"\n\"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or \"\n\"XXXXXXXXXX.\"\nmsgstr \"\"\n\n#: pl/forms.py:132\nmsgid \"Wrong checksum for the Tax Number (NIP).\"\nmsgstr \"\"\n\n#: pl/forms.py:171\nmsgid \"National Business Register Number (REGON) consists of 9 or 14 digits.\"\nmsgstr \"\"\n\n#: pl/forms.py:172\nmsgid \"Wrong checksum for the National Business Register Number (REGON).\"\nmsgstr \"\"\n\n#: pl/forms.py:212\nmsgid \"Enter a postal code in the format XX-XXX.\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:8\nmsgid \"Lower Silesia\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:9\nmsgid \"Kuyavia-Pomerania\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:10\nmsgid \"Lublin\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:11\nmsgid \"Lubusz\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:12\nmsgid \"Lodz\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:13\nmsgid \"Lesser Poland\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:14\nmsgid \"Masovia\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:15\nmsgid \"Opole\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:16\nmsgid \"Subcarpatia\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:17\nmsgid \"Podlasie\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:18\nmsgid \"Pomerania\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:19\nmsgid \"Silesia\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:20\nmsgid \"Swietokrzyskie\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:21\nmsgid \"Warmia-Masuria\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:22\nmsgid \"Greater Poland\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:23\nmsgid \"West Pomerania\"\nmsgstr \"\"\n\n#: pt/forms.py:17\nmsgid \"Enter a zip code in the format XXXX-XXX.\"\nmsgstr \"\"\n\n#: pt/forms.py:37\nmsgid \"Phone numbers must have 9 digits, or start by + or 00.\"\nmsgstr \"\"\n\n#: ro/forms.py:20\nmsgid \"Enter a valid CIF.\"\nmsgstr \"\"\n\n#: ro/forms.py:57\nmsgid \"Enter a valid CNP.\"\nmsgstr \"\"\n\n#: ro/forms.py:142\nmsgid \"Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format\"\nmsgstr \"\"\n\n#: ro/forms.py:174\nmsgid \"Phone numbers must be in XXXX-XXXXXX format.\"\nmsgstr \"\"\n\n#: ro/forms.py:199\nmsgid \"Enter a valid postal code in the format XXXXXX\"\nmsgstr \"\"\n\n#: ru/forms.py:37\nmsgid \"Enter a postal code in the format XXXXXX.\"\nmsgstr \"\"\n\n#: ru/forms.py:50\nmsgid \"Enter a passport number in the format XXXX XXXXXX.\"\nmsgstr \"\"\n\n#: ru/forms.py:63\nmsgid \"Enter a passport number in the format XX XXXXXXX.\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:10\nmsgid \"Central Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:11\nmsgid \"South Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:12\nmsgid \"North-West Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:13\nmsgid \"Far-East Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:14\nmsgid \"Siberian Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:15\nmsgid \"Ural Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:16\nmsgid \"Privolzhsky Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:17\nmsgid \"North-Caucasian Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:21\nmsgid \"Moskva\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:22\nmsgid \"Saint-Peterburg\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:23\nmsgid \"Moskovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:24\nmsgid \"Adygeya, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:25\nmsgid \"Bashkortostan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:26\nmsgid \"Buryatia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:27\nmsgid \"Altay, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:28\nmsgid \"Dagestan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:29\nmsgid \"Ingushskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:30\nmsgid \"Kabardino-Balkarskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:31\nmsgid \"Kalmykia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:32\nmsgid \"Karachaevo-Cherkesskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:33\nmsgid \"Karelia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:34\nmsgid \"Komi, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:35\nmsgid \"Mariy Ehl, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:36\nmsgid \"Mordovia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:37\nmsgid \"Sakha, Respublika (Yakutiya)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:38\nmsgid \"Severnaya Osetia, Respublika (Alania)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:39\nmsgid \"Tatarstan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:40\nmsgid \"Tyva, Respublika (Tuva)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:41\nmsgid \"Udmurtskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:42\nmsgid \"Khakassiya, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:43\nmsgid \"Chechenskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:44\nmsgid \"Chuvashskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:45\nmsgid \"Altayskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:46\nmsgid \"Zabaykalskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:47\nmsgid \"Kamchatskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:48\nmsgid \"Krasnodarskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:49\nmsgid \"Krasnoyarskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:50\nmsgid \"Permskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:51\nmsgid \"Primorskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:52\nmsgid \"Stavropol'siyy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:53\nmsgid \"Khabarovskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:54\nmsgid \"Amurskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:55\nmsgid \"Arkhangel'skaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:56\nmsgid \"Astrakhanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:57\nmsgid \"Belgorodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:58\nmsgid \"Bryanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:59\nmsgid \"Vladimirskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:60\nmsgid \"Volgogradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:61\nmsgid \"Vologodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:62\nmsgid \"Voronezhskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:63\nmsgid \"Ivanovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:64\nmsgid \"Irkutskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:65\nmsgid \"Kaliningradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:66\nmsgid \"Kaluzhskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:67\nmsgid \"Kemerovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:68\nmsgid \"Kirovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:69\nmsgid \"Kostromskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:70\nmsgid \"Kurganskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:71\nmsgid \"Kurskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:72\nmsgid \"Leningradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:73\nmsgid \"Lipeckaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:74\nmsgid \"Magadanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:75\nmsgid \"Murmanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:76\nmsgid \"Nizhegorodskaja oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:77\nmsgid \"Novgorodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:78\nmsgid \"Novosibirskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:79\nmsgid \"Omskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:80\nmsgid \"Orenburgskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:81\nmsgid \"Orlovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:82\nmsgid \"Penzenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:83\nmsgid \"Pskovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:84\nmsgid \"Rostovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:85\nmsgid \"Rjazanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:86\nmsgid \"Samarskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:87\nmsgid \"Saratovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:88\nmsgid \"Sakhalinskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:89\nmsgid \"Sverdlovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:90\nmsgid \"Smolenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:91\nmsgid \"Tambovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:92\nmsgid \"Tverskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:93\nmsgid \"Tomskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:94\nmsgid \"Tul'skaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:95\nmsgid \"Tyumenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:96\nmsgid \"Ul'ianovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:97\nmsgid \"Chelyabinskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:98\nmsgid \"Yaroslavskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:99\nmsgid \"Evreyskaya avtonomnaja oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:100\nmsgid \"Neneckiy autonomnyy okrug\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:101\nmsgid \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:102\nmsgid \"Chukotskiy avtonomnyy okrug\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:103\nmsgid \"Yamalo-Neneckiy avtonomnyy okrug\"\nmsgstr \"\"\n\n#: se/forms.py:54\nmsgid \"Enter a valid Swedish organisation number.\"\nmsgstr \"\"\n\n#: se/forms.py:111\nmsgid \"Enter a valid Swedish personal identity number.\"\nmsgstr \"\"\n\n#: se/forms.py:112\nmsgid \"Co-ordination numbers are not allowed.\"\nmsgstr \"\"\n\n#: se/forms.py:154\nmsgid \"Enter a Swedish postal code in the format XXXXX.\"\nmsgstr \"\"\n\n#: se/se_counties.py:15\nmsgid \"Stockholm\"\nmsgstr \"\"\n\n#: se/se_counties.py:16\nmsgid \"Västerbotten\"\nmsgstr \"\"\n\n#: se/se_counties.py:17\nmsgid \"Norrbotten\"\nmsgstr \"\"\n\n#: se/se_counties.py:18\nmsgid \"Uppsala\"\nmsgstr \"\"\n\n#: se/se_counties.py:19\nmsgid \"Södermanland\"\nmsgstr \"\"\n\n#: se/se_counties.py:20\nmsgid \"Östergötland\"\nmsgstr \"\"\n\n#: se/se_counties.py:21\nmsgid \"Jönköping\"\nmsgstr \"\"\n\n#: se/se_counties.py:22\nmsgid \"Kronoberg\"\nmsgstr \"\"\n\n#: se/se_counties.py:23\nmsgid \"Kalmar\"\nmsgstr \"\"\n\n#: se/se_counties.py:24\nmsgid \"Gotland\"\nmsgstr \"\"\n\n#: se/se_counties.py:25\nmsgid \"Blekinge\"\nmsgstr \"\"\n\n#: se/se_counties.py:26\nmsgid \"Skåne\"\nmsgstr \"\"\n\n#: se/se_counties.py:27\nmsgid \"Halland\"\nmsgstr \"\"\n\n#: se/se_counties.py:28\nmsgid \"Västra Götaland\"\nmsgstr \"\"\n\n#: se/se_counties.py:29\nmsgid \"Värmland\"\nmsgstr \"\"\n\n#: se/se_counties.py:30\nmsgid \"Örebro\"\nmsgstr \"\"\n\n#: se/se_counties.py:31\nmsgid \"Västmanland\"\nmsgstr \"\"\n\n#: se/se_counties.py:32\nmsgid \"Dalarna\"\nmsgstr \"\"\n\n#: se/se_counties.py:33\nmsgid \"Gävleborg\"\nmsgstr \"\"\n\n#: se/se_counties.py:34\nmsgid \"Västernorrland\"\nmsgstr \"\"\n\n#: se/se_counties.py:35\nmsgid \"Jämtland\"\nmsgstr \"\"\n\n#: si/forms.py:25\nmsgid \"The first 7 digits of the EMSO must represent a valid past date.\"\nmsgstr \"\"\n\n#: si/forms.py:26\nmsgid \"The EMSO is not valid.\"\nmsgstr \"\"\n\n#: si/forms.py:86\nmsgid \"Enter a valid tax number in form SIXXXXXXXX\"\nmsgstr \"\"\n\n#: si/forms.py:151\nmsgid \"Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:8\nmsgid \"Banska Bystrica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:9\nmsgid \"Banska Stiavnica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:10\nmsgid \"Bardejov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:11\nmsgid \"Banovce nad Bebravou\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:12\nmsgid \"Brezno\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:13\nmsgid \"Bratislava I\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:14\nmsgid \"Bratislava II\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:15\nmsgid \"Bratislava III\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:16\nmsgid \"Bratislava IV\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:17\nmsgid \"Bratislava V\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:18\nmsgid \"Bytca\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:19\nmsgid \"Cadca\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:20\nmsgid \"Detva\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:21\nmsgid \"Dolny Kubin\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:22\nmsgid \"Dunajska Streda\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:23\nmsgid \"Galanta\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:24\nmsgid \"Gelnica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:25\nmsgid \"Hlohovec\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:26\nmsgid \"Humenne\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:27\nmsgid \"Ilava\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:28\nmsgid \"Kezmarok\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:29\nmsgid \"Komarno\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:30\nmsgid \"Kosice I\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:31\nmsgid \"Kosice II\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:32\nmsgid \"Kosice III\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:33\nmsgid \"Kosice IV\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:34\nmsgid \"Kosice - okolie\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:35\nmsgid \"Krupina\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:36\nmsgid \"Kysucke Nove Mesto\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:37\nmsgid \"Levice\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:38\nmsgid \"Levoca\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:39\nmsgid \"Liptovsky Mikulas\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:40\nmsgid \"Lucenec\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:41\nmsgid \"Malacky\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:42\nmsgid \"Martin\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:43\nmsgid \"Medzilaborce\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:44\nmsgid \"Michalovce\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:45\nmsgid \"Myjava\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:46\nmsgid \"Namestovo\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:47\nmsgid \"Nitra\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:48\nmsgid \"Nove Mesto nad Vahom\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:49\nmsgid \"Nove Zamky\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:50\nmsgid \"Partizanske\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:51\nmsgid \"Pezinok\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:52\nmsgid \"Piestany\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:53\nmsgid \"Poltar\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:54\nmsgid \"Poprad\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:55\nmsgid \"Povazska Bystrica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:56\nmsgid \"Presov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:57\nmsgid \"Prievidza\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:58\nmsgid \"Puchov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:59\nmsgid \"Revuca\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:60\nmsgid \"Rimavska Sobota\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:61\nmsgid \"Roznava\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:62\nmsgid \"Ruzomberok\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:63\nmsgid \"Sabinov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:64\nmsgid \"Senec\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:65\nmsgid \"Senica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:66\nmsgid \"Skalica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:67\nmsgid \"Snina\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:68\nmsgid \"Sobrance\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:69\nmsgid \"Spisska Nova Ves\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:70\nmsgid \"Stara Lubovna\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:71\nmsgid \"Stropkov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:72\nmsgid \"Svidnik\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:73\nmsgid \"Sala\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:74\nmsgid \"Topolcany\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:75\nmsgid \"Trebisov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:76\nmsgid \"Trencin\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:77\nmsgid \"Trnava\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:78\nmsgid \"Turcianske Teplice\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:79\nmsgid \"Tvrdosin\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:80\nmsgid \"Velky Krtis\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:81\nmsgid \"Vranov nad Toplou\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:82\nmsgid \"Zlate Moravce\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:83\nmsgid \"Zvolen\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:84\nmsgid \"Zarnovica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:85\nmsgid \"Ziar nad Hronom\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:86\nmsgid \"Zilina\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:8\nmsgid \"Banska Bystrica region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:9\nmsgid \"Bratislava region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:10\nmsgid \"Kosice region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:11\nmsgid \"Nitra region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:12\nmsgid \"Presov region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:13\nmsgid \"Trencin region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:14\nmsgid \"Trnava region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:15\nmsgid \"Zilina region\"\nmsgstr \"\"\n\n#: tr/forms.py:21\nmsgid \"Enter a postal code in the format XXXXX.\"\nmsgstr \"\"\n\n#: tr/forms.py:42\nmsgid \"Phone numbers must be in 0XXX XXX XXXX format.\"\nmsgstr \"\"\n\n#: tr/forms.py:69\nmsgid \"Enter a valid Turkish Identification number.\"\nmsgstr \"\"\n\n#: tr/forms.py:70\nmsgid \"Turkish Identification number must be 11 digits.\"\nmsgstr \"\"\n\n#: us/forms.py:21\nmsgid \"Enter a zip code in the format XXXXX or XXXXX-XXXX.\"\nmsgstr \"\"\n\n#: us/forms.py:30\nmsgid \"Phone numbers must be in XXX-XXX-XXXX format.\"\nmsgstr \"\"\n\n#: us/forms.py:59\nmsgid \"Enter a valid U.S. Social Security number in XXX-XX-XXXX format.\"\nmsgstr \"\"\n\n#: us/forms.py:92\nmsgid \"Enter a U.S. state or territory.\"\nmsgstr \"\"\n\n#: us/models.py:8\nmsgid \"U.S. state (two uppercase letters)\"\nmsgstr \"\"\n\n#: us/models.py:17\nmsgid \"U.S. postal code (two uppercase letters)\"\nmsgstr \"\"\n\n#: us/models.py:26\nmsgid \"Phone number\"\nmsgstr \"\"\n\n#: uy/forms.py:29\nmsgid \"Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.\"\nmsgstr \"\"\n\n#: uy/forms.py:31\nmsgid \"Enter a valid CI number.\"\nmsgstr \"\"\n\n#: za/forms.py:21\nmsgid \"Enter a valid South African ID number\"\nmsgstr \"\"\n\n#: za/forms.py:55\nmsgid \"Enter a valid South African postal code\"\nmsgstr \"\"\n\n#: za/za_provinces.py:4\nmsgid \"Eastern Cape\"\nmsgstr \"\"\n\n#: za/za_provinces.py:5\nmsgid \"Free State\"\nmsgstr \"\"\n\n#: za/za_provinces.py:6\nmsgid \"Gauteng\"\nmsgstr \"\"\n\n#: za/za_provinces.py:7\nmsgid \"KwaZulu-Natal\"\nmsgstr \"\"\n\n#: za/za_provinces.py:8\nmsgid \"Limpopo\"\nmsgstr \"\"\n\n#: za/za_provinces.py:9\nmsgid \"Mpumalanga\"\nmsgstr \"\"\n\n#: za/za_provinces.py:10\nmsgid \"Northern Cape\"\nmsgstr \"\"\n\n#: za/za_provinces.py:11\nmsgid \"North West\"\nmsgstr \"\"\n\n#: za/za_provinces.py:12\nmsgid \"Western Cape\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/locale/ga/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Michael Thornhill <michael@maithu.com>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-10-17 09:16+0000\\n\"\n\"Last-Translator: Michael Thornhill <michael@maithu.com>\\n\"\n\"Language-Team: Irish (http://www.transifex.com/projects/p/django/language/\"\n\"ga/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ga\\n\"\n\"Plural-Forms: nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : \"\n\"4);\\n\"\n\n#: ar/forms.py:30\nmsgid \"Enter a postal code in the format NNNN or ANNNNAAA.\"\nmsgstr \"Cuir isteach cód póstal ins an formáid NNNN nó ANNNNAAA\"\n\n#: ar/forms.py:52 br/forms.py:95 br/forms.py:134 pe/forms.py:27 pe/forms.py:55\nmsgid \"This field requires only numbers.\"\nmsgstr \"Teastaíonn an réimse seo uimhreacha amháin.\"\n\n#: ar/forms.py:53\nmsgid \"This field requires 7 or 8 digits.\"\nmsgstr \"Teastaíonn an réimse seo 7 nó 8 digite.\"\n\n#: ar/forms.py:82\nmsgid \"Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.\"\nmsgstr \"Cuir isteach CUIT bailí i formáid XX-XXXXXXXX-X nó XXXXXXXXXXXX.\"\n\n#: ar/forms.py:83\nmsgid \"Invalid CUIT.\"\nmsgstr \"CUIT neamhbailí\"\n\n#: ar/forms.py:84\nmsgid \"Invalid legal type. Type must be 27, 20, 23 or 30.\"\nmsgstr \"\"\n\n#: at/at_states.py:5\nmsgid \"Burgenland\"\nmsgstr \"Burgenland\"\n\n#: at/at_states.py:6\nmsgid \"Carinthia\"\nmsgstr \"Carinthia\"\n\n#: at/at_states.py:7\nmsgid \"Lower Austria\"\nmsgstr \"An Ostair íochtarach\"\n\n#: at/at_states.py:8\nmsgid \"Upper Austria\"\nmsgstr \"An Ostair uachtarach\"\n\n#: at/at_states.py:9\nmsgid \"Salzburg\"\nmsgstr \"Salzburg\"\n\n#: at/at_states.py:10\nmsgid \"Styria\"\nmsgstr \"Styria\"\n\n#: at/at_states.py:11\nmsgid \"Tyrol\"\nmsgstr \"Tyrol\"\n\n#: at/at_states.py:12\nmsgid \"Vorarlberg\"\nmsgstr \"Tyrol\"\n\n#: at/at_states.py:13\nmsgid \"Vienna\"\nmsgstr \"Vín\"\n\n#: at/forms.py:22 ch/forms.py:22 no/forms.py:19\nmsgid \"Enter a zip code in the format XXXX.\"\nmsgstr \"Cuir isteach cód zip ins an formáid XXXX.\"\n\n#: at/forms.py:50\nmsgid \"Enter a valid Austrian Social Security Number in XXXX XXXXXX format.\"\nmsgstr \"\"\n\"Iontráil uimhir Ostaire Slándáil Shóisialta bailí i bhformáid XXXX XXXXXX.\"\n\n#: au/forms.py:26\nmsgid \"Enter a 4 digit postcode.\"\nmsgstr \"Iontráil postchód4 dhigit.\"\n\n#: au/models.py:9\nmsgid \"Australian State\"\nmsgstr \"Stát na hAstráile\"\n\n#: au/models.py:19\nmsgid \"Australian Postcode\"\nmsgstr \"Postchód Astráil\"\n\n#: au/models.py:33\nmsgid \"Australian Phone number\"\nmsgstr \"Uimhir telefón Astráil\"\n\n#: be/be_provinces.py:5\nmsgid \"Antwerp\"\nmsgstr \"Antwerp\"\n\n#: be/be_provinces.py:6\nmsgid \"Brussels\"\nmsgstr \"An Bhruiséil\"\n\n#: be/be_provinces.py:7\nmsgid \"East Flanders\"\nmsgstr \"Flóndras Oirthear\"\n\n#: be/be_provinces.py:8\nmsgid \"Flemish Brabant\"\nmsgstr \"Brabant Pléimeannach\"\n\n#: be/be_provinces.py:9\nmsgid \"Hainaut\"\nmsgstr \"Hainaut\"\n\n#: be/be_provinces.py:10\nmsgid \"Liege\"\nmsgstr \"Liege\"\n\n#: be/be_provinces.py:11 nl/nl_provinces.py:9\nmsgid \"Limburg\"\nmsgstr \"Limburg\"\n\n#: be/be_provinces.py:12\nmsgid \"Luxembourg\"\nmsgstr \"Lucsamburg\"\n\n#: be/be_provinces.py:13\nmsgid \"Namur\"\nmsgstr \"Namur\"\n\n#: be/be_provinces.py:14\nmsgid \"Walloon Brabant\"\nmsgstr \"Walloon Brabant\"\n\n#: be/be_provinces.py:15\nmsgid \"West Flanders\"\nmsgstr \"West Flanders\"\n\n#: be/be_regions.py:5\nmsgid \"Brussels Capital Region\"\nmsgstr \"Caipitil Réigiún na Bhruiséil\"\n\n#: be/be_regions.py:6\nmsgid \"Flemish Region\"\nmsgstr \"Réigiún Pléimeannach\"\n\n#: be/be_regions.py:7\nmsgid \"Wallonia\"\nmsgstr \"Wallonia\"\n\n#: be/forms.py:25\nmsgid \"Enter a valid postal code in the range and format 1XXX - 9XXX.\"\nmsgstr \"Cuir isteach cód poist bailí sa raon agus formáid 1XXX - 9XXX.\"\n\n#: be/forms.py:48\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\nmsgstr \"\"\n\"Cuir isteach uimhir theileafóin bailí i gceann de na formáidí 0x xxx xx xx, \"\n\"0xx xx xx xx, 04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.\"\n\"xxx.xx.xx, 0xx.xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx nó 04xxxxxxxx.\"\n\n#: br/forms.py:22\nmsgid \"Enter a zip code in the format XXXXX-XXX.\"\nmsgstr \"Iontráil zip-cód i bhformáid XXXXX-XXX.\"\n\n#: br/forms.py:31\nmsgid \"Phone numbers must be in XX-XXXX-XXXX format.\"\nmsgstr \"Ní mór Uimhreacha teileafóin a chur i XX-XXXX-XXXX format.\"\n\n#: br/forms.py:58\nmsgid \"\"\n\"Select a valid brazilian state. That state is not one of the available \"\n\"states.\"\nmsgstr \"\"\n\"Roghnaigh stát na Brasaíle bailí. Ní thugann an Stát sin ar cheann de na \"\n\"stáit atá ar fáil.\"\n\n#: br/forms.py:93\nmsgid \"Invalid CPF number.\"\nmsgstr \"Uimhir CPF neamhbhailí.\"\n\n#: br/forms.py:94\nmsgid \"This field requires at most 11 digits or 14 characters.\"\nmsgstr \"\"\n\"Éilíonn an réimse seo ag an chuid is mó dhigit 11 nó 14 de charachtair.\"\n\n#: br/forms.py:133\nmsgid \"Invalid CNPJ number.\"\nmsgstr \"Neamhbhailí CNPJ uimhir.\"\n\n#: br/forms.py:135\nmsgid \"This field requires at least 14 digits\"\nmsgstr \"Éilíonn an réimse seo ar a laghad 14 digití\"\n\n#: ca/forms.py:29\nmsgid \"Enter a postal code in the format XXX XXX.\"\nmsgstr \"Iontráil cód poist i bhformáid XXX XXX.\"\n\n#: ca/forms.py:47 us/forms.py:30\nmsgid \"Phone numbers must be in XXX-XXX-XXXX format.\"\nmsgstr \"Ní mór uimhreacha teileafóin a chur i format XXX-XXX-XXXX.\"\n\n#: ca/forms.py:69\nmsgid \"Enter a Canadian province or territory.\"\nmsgstr \"\"\n\n#: ca/forms.py:110\nmsgid \"Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.\"\nmsgstr \"\"\n\"Iontráil uimhir Cheanada Árachais Shóisialaigh bailí i bhformáid XXX-XXX-XXX.\"\n\n#: ch/ch_states.py:5\nmsgid \"Aargau\"\nmsgstr \"Aargau\"\n\n#: ch/ch_states.py:6\nmsgid \"Appenzell Innerrhoden\"\nmsgstr \"Appenzell Innerrhoden\"\n\n#: ch/ch_states.py:7\nmsgid \"Appenzell Ausserrhoden\"\nmsgstr \"Appenzell Ausserrhoden\"\n\n#: ch/ch_states.py:8\nmsgid \"Basel-Stadt\"\nmsgstr \"Basel-Stadt\"\n\n#: ch/ch_states.py:9\nmsgid \"Basel-Land\"\nmsgstr \"Basel-Talún\"\n\n#: ch/ch_states.py:10\nmsgid \"Berne\"\nmsgstr \"Berne\"\n\n#: ch/ch_states.py:11\nmsgid \"Fribourg\"\nmsgstr \"Fribourg\"\n\n#: ch/ch_states.py:12\nmsgid \"Geneva\"\nmsgstr \"An Ghinéiv\"\n\n#: ch/ch_states.py:13\nmsgid \"Glarus\"\nmsgstr \"Glarus\"\n\n#: ch/ch_states.py:14\nmsgid \"Graubuenden\"\nmsgstr \"Graubuenden\"\n\n#: ch/ch_states.py:15\nmsgid \"Jura\"\nmsgstr \"Jura\"\n\n#: ch/ch_states.py:16\nmsgid \"Lucerne\"\nmsgstr \"Lucerne\"\n\n#: ch/ch_states.py:17\nmsgid \"Neuchatel\"\nmsgstr \"Neuchatel\"\n\n#: ch/ch_states.py:18\nmsgid \"Nidwalden\"\nmsgstr \"Nidwalden\"\n\n#: ch/ch_states.py:19\nmsgid \"Obwalden\"\nmsgstr \"Obwalden\"\n\n#: ch/ch_states.py:20\nmsgid \"Schaffhausen\"\nmsgstr \"Schaffhausen\"\n\n#: ch/ch_states.py:21\nmsgid \"Schwyz\"\nmsgstr \"Schwyz\"\n\n#: ch/ch_states.py:22\nmsgid \"Solothurn\"\nmsgstr \"Solothurn\"\n\n#: ch/ch_states.py:23\nmsgid \"St. Gallen\"\nmsgstr \"St Gallen\"\n\n#: ch/ch_states.py:24\nmsgid \"Thurgau\"\nmsgstr \"Thurgau\"\n\n#: ch/ch_states.py:25\nmsgid \"Ticino\"\nmsgstr \"Ticino\"\n\n#: ch/ch_states.py:26\nmsgid \"Uri\"\nmsgstr \"Uri\"\n\n#: ch/ch_states.py:27\nmsgid \"Valais\"\nmsgstr \"Valais\"\n\n#: ch/ch_states.py:28\nmsgid \"Vaud\"\nmsgstr \"Vaud\"\n\n#: ch/ch_states.py:29\nmsgid \"Zug\"\nmsgstr \"Zug\"\n\n#: ch/ch_states.py:30\nmsgid \"Zurich\"\nmsgstr \"Zürich\"\n\n#: ch/forms.py:37\nmsgid \"Phone numbers must be in 0XX XXX XX XX format.\"\nmsgstr \"\"\n\n#: ch/forms.py:68\nmsgid \"\"\n\"Enter a valid Swiss identity or passport card number in X1234567<0 or \"\n\"1234567890 format.\"\nmsgstr \"\"\n\"Iontráil aitheantais hEilvéise bailí nó uimhir pas cárta i bhformáid \"\n\"X1234567<0 nó 1234567890.\"\n\n#: cl/forms.py:32\nmsgid \"Enter a valid Chilean RUT.\"\nmsgstr \"Iontráil RUT Chilean bailí.\"\n\n#: cl/forms.py:33\nmsgid \"Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.\"\nmsgstr \"Iontráil RUT bailí Chilean. Is é an fhormáid XX.XXX.XXX-X.\"\n\n#: cl/forms.py:34\nmsgid \"The Chilean RUT is not valid.\"\nmsgstr \"Níl an RUT Chilean bailí.\"\n\n#: cn/forms.py:84\nmsgid \"Enter a post code in the format XXXXXX.\"\nmsgstr \"Iontráil postchód i bhformáid XXXXXX.\"\n\n#: cn/forms.py:105\nmsgid \"ID Card Number consists of 15 or 18 digits.\"\nmsgstr \"Uimhir Aitheantais Carta comhdhéanta de 15 nó 18 digití.\"\n\n#: cn/forms.py:106\nmsgid \"Invalid ID Card Number: Wrong checksum\"\nmsgstr \"Uimhir Aitheantais Carta neamhbhailí: checksum mícheart \"\n\n#: cn/forms.py:107\nmsgid \"Invalid ID Card Number: Wrong birthdate\"\nmsgstr \"Carta ID neamhbhailí: breith lá mícheart \"\n\n#: cn/forms.py:108\nmsgid \"Invalid ID Card Number: Wrong location code\"\nmsgstr \"Carta ID neamhbhailí: cód na háite mícheart \"\n\n#: cn/forms.py:193\nmsgid \"Enter a valid phone number.\"\nmsgstr \"Iontráil uimhir theileafóin bailí\"\n\n#: cn/forms.py:210\nmsgid \"Enter a valid cell number.\"\nmsgstr \"Cuir isteach uimhir fón bailí.\"\n\n#: cz/cz_regions.py:8\nmsgid \"Prague\"\nmsgstr \"Prague\"\n\n#: cz/cz_regions.py:9\nmsgid \"Central Bohemian Region\"\nmsgstr \"Réigiún Central Bohemian\"\n\n#: cz/cz_regions.py:10\nmsgid \"South Bohemian Region\"\nmsgstr \"Réigiún Bohemian Theas\"\n\n#: cz/cz_regions.py:11\nmsgid \"Pilsen Region\"\nmsgstr \"Pilsen Réigiún\"\n\n#: cz/cz_regions.py:12\nmsgid \"Carlsbad Region\"\nmsgstr \"Carlsbad Réigiún\"\n\n#: cz/cz_regions.py:13\nmsgid \"Usti Region\"\nmsgstr \"Usti Réigiún\"\n\n#: cz/cz_regions.py:14\nmsgid \"Liberec Region\"\nmsgstr \"Liberec Réigiún\"\n\n#: cz/cz_regions.py:15\nmsgid \"Hradec Region\"\nmsgstr \"Hradec Réigiún\"\n\n#: cz/cz_regions.py:16\nmsgid \"Pardubice Region\"\nmsgstr \"Pardubice Réigiún\"\n\n#: cz/cz_regions.py:17\nmsgid \"Vysocina Region\"\nmsgstr \"Vysocina Réigiún\"\n\n#: cz/cz_regions.py:18\nmsgid \"South Moravian Region\"\nmsgstr \"Réigiún Moravian Theas\"\n\n#: cz/cz_regions.py:19\nmsgid \"Olomouc Region\"\nmsgstr \"Réigiún Olomouc\"\n\n#: cz/cz_regions.py:20\nmsgid \"Zlin Region\"\nmsgstr \"Réigiún Zlin\"\n\n#: cz/cz_regions.py:21\nmsgid \"Moravian-Silesian Region\"\nmsgstr \"Réigiún Moravian-Silesian\"\n\n#: cz/forms.py:32 sk/forms.py:33\nmsgid \"Enter a postal code in the format XXXXX or XXX XX.\"\nmsgstr \"Iontráil cód poist i bhformáid XXXXX nó XXX XX.\"\n\n#: cz/forms.py:52\nmsgid \"Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.\"\nmsgstr \"Iontráil uimhir breithe i bhformáid XXXXXX/XXXX nó XXXXXXXXXX.\"\n\n#: cz/forms.py:53\nmsgid \"Enter a valid birth number.\"\nmsgstr \"Cuir isteach uimhir breithe bailí.\"\n\n#: cz/forms.py:102\nmsgid \"Enter a valid IC number.\"\nmsgstr \"Cuir isteach uimhir IC bailí.\"\n\n#: de/de_states.py:5\nmsgid \"Baden-Wuerttemberg\"\nmsgstr \"Baden-Wuerttemberg\"\n\n#: de/de_states.py:6\nmsgid \"Bavaria\"\nmsgstr \"An Bhaváir\"\n\n#: de/de_states.py:7\nmsgid \"Berlin\"\nmsgstr \"Beirlín\"\n\n#: de/de_states.py:8\nmsgid \"Brandenburg\"\nmsgstr \"Brandenburg\"\n\n#: de/de_states.py:9\nmsgid \"Bremen\"\nmsgstr \"Bremen\"\n\n#: de/de_states.py:10\nmsgid \"Hamburg\"\nmsgstr \"Hamburg\"\n\n#: de/de_states.py:11\nmsgid \"Hessen\"\nmsgstr \"Hessen\"\n\n#: de/de_states.py:12\nmsgid \"Mecklenburg-Western Pomerania\"\nmsgstr \"Mecklenburg-Pomerania Thiar\"\n\n#: de/de_states.py:13\nmsgid \"Lower Saxony\"\nmsgstr \"An tSacsain Íochtair\"\n\n#: de/de_states.py:14\nmsgid \"North Rhine-Westphalia\"\nmsgstr \"Réin Thuaidh-Westphalia\"\n\n#: de/de_states.py:15\nmsgid \"Rhineland-Palatinate\"\nmsgstr \"Dúiche na Réine-Palatinate\"\n\n#: de/de_states.py:16\nmsgid \"Saarland\"\nmsgstr \"Saarland\"\n\n#: de/de_states.py:17\nmsgid \"Saxony\"\nmsgstr \"An tSacsain\"\n\n#: de/de_states.py:18\nmsgid \"Saxony-Anhalt\"\nmsgstr \"An tSacsain-Anhalt\"\n\n#: de/de_states.py:19\nmsgid \"Schleswig-Holstein\"\nmsgstr \"Schleswig-Holstein\"\n\n#: de/de_states.py:20\nmsgid \"Thuringia\"\nmsgstr \"Thuringia\"\n\n#: de/forms.py:20 fi/forms.py:18 fr/forms.py:20\nmsgid \"Enter a zip code in the format XXXXX.\"\nmsgstr \"Iontráil zip-cód i bhformáid XXXXX.\"\n\n#: de/forms.py:46\nmsgid \"\"\n\"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"format.\"\nmsgstr \"\"\n\"Iontráil uimhir cárta aitheantais na Gearmáine bailí i bhformáid XXXXXXXXXXX-\"\n\"XXXXXXX-XXXXXXX-X.\"\n\n#: es/es_provinces.py:5\nmsgid \"Araba\"\nmsgstr \"\"\n\n#: es/es_provinces.py:6\nmsgid \"Albacete\"\nmsgstr \"Albacete\"\n\n#: es/es_provinces.py:7\nmsgid \"Alacant\"\nmsgstr \"Alacant\"\n\n#: es/es_provinces.py:8\nmsgid \"Almeria\"\nmsgstr \"Almeria\"\n\n#: es/es_provinces.py:9\nmsgid \"Avila\"\nmsgstr \"Ávila\"\n\n#: es/es_provinces.py:10\nmsgid \"Badajoz\"\nmsgstr \"Badajoz\"\n\n#: es/es_provinces.py:11\nmsgid \"Illes Balears\"\nmsgstr \"Illes Balears\"\n\n#: es/es_provinces.py:12\nmsgid \"Barcelona\"\nmsgstr \"Barcelona\"\n\n#: es/es_provinces.py:13\nmsgid \"Burgos\"\nmsgstr \"Burgos\"\n\n#: es/es_provinces.py:14\nmsgid \"Caceres\"\nmsgstr \"Cáceres\"\n\n#: es/es_provinces.py:15\nmsgid \"Cadiz\"\nmsgstr \"Cádiz\"\n\n#: es/es_provinces.py:16\nmsgid \"Castello\"\nmsgstr \"Castello\"\n\n#: es/es_provinces.py:17\nmsgid \"Ciudad Real\"\nmsgstr \"Ciudad Real\"\n\n#: es/es_provinces.py:18\nmsgid \"Cordoba\"\nmsgstr \"Cordoba\"\n\n#: es/es_provinces.py:19\nmsgid \"A Coruna\"\nmsgstr \"A Coruña\"\n\n#: es/es_provinces.py:20\nmsgid \"Cuenca\"\nmsgstr \"Cuenca\"\n\n#: es/es_provinces.py:21\nmsgid \"Girona\"\nmsgstr \"Girona\"\n\n#: es/es_provinces.py:22\nmsgid \"Granada\"\nmsgstr \"Granada\"\n\n#: es/es_provinces.py:23\nmsgid \"Guadalajara\"\nmsgstr \"Guadalajara\"\n\n#: es/es_provinces.py:24\nmsgid \"Guipuzkoa\"\nmsgstr \"Guipuzkoa\"\n\n#: es/es_provinces.py:25\nmsgid \"Huelva\"\nmsgstr \"Huelva\"\n\n#: es/es_provinces.py:26\nmsgid \"Huesca\"\nmsgstr \"Huesca\"\n\n#: es/es_provinces.py:27\nmsgid \"Jaen\"\nmsgstr \"Jaen\"\n\n#: es/es_provinces.py:28\nmsgid \"Leon\"\nmsgstr \"Leon\"\n\n#: es/es_provinces.py:29\nmsgid \"Lleida\"\nmsgstr \"Lleida\"\n\n#: es/es_provinces.py:30 es/es_regions.py:17\nmsgid \"La Rioja\"\nmsgstr \"La Rioja\"\n\n#: es/es_provinces.py:31\nmsgid \"Lugo\"\nmsgstr \"Lugo\"\n\n#: es/es_provinces.py:32 es/es_regions.py:18\nmsgid \"Madrid\"\nmsgstr \"Maidrid\"\n\n#: es/es_provinces.py:33\nmsgid \"Malaga\"\nmsgstr \"Málaga\"\n\n#: es/es_provinces.py:34\nmsgid \"Murcia\"\nmsgstr \"Murcia\"\n\n#: es/es_provinces.py:35\nmsgid \"Navarre\"\nmsgstr \"Navarre\"\n\n#: es/es_provinces.py:36\nmsgid \"Ourense\"\nmsgstr \"Ourense\"\n\n#: es/es_provinces.py:37\nmsgid \"Asturias\"\nmsgstr \"Asturias\"\n\n#: es/es_provinces.py:38\nmsgid \"Palencia\"\nmsgstr \"Palencia\"\n\n#: es/es_provinces.py:39\nmsgid \"Las Palmas\"\nmsgstr \"Las Palmas\"\n\n#: es/es_provinces.py:40\nmsgid \"Pontevedra\"\nmsgstr \"Pontevedra\"\n\n#: es/es_provinces.py:41\nmsgid \"Salamanca\"\nmsgstr \"Salamanca\"\n\n#: es/es_provinces.py:42\nmsgid \"Santa Cruz de Tenerife\"\nmsgstr \"Santa Cruz de Tenerife\"\n\n#: es/es_provinces.py:43 es/es_regions.py:11\nmsgid \"Cantabria\"\nmsgstr \"Cantabria\"\n\n#: es/es_provinces.py:44\nmsgid \"Segovia\"\nmsgstr \"Segovia\"\n\n#: es/es_provinces.py:45\nmsgid \"Seville\"\nmsgstr \"Sevilla\"\n\n#: es/es_provinces.py:46\nmsgid \"Soria\"\nmsgstr \"Soria\"\n\n#: es/es_provinces.py:47\nmsgid \"Tarragona\"\nmsgstr \"Tarragona\"\n\n#: es/es_provinces.py:48\nmsgid \"Teruel\"\nmsgstr \"Teruel\"\n\n#: es/es_provinces.py:49\nmsgid \"Toledo\"\nmsgstr \"Toledo\"\n\n#: es/es_provinces.py:50\nmsgid \"Valencia\"\nmsgstr \"Valencia\"\n\n#: es/es_provinces.py:51\nmsgid \"Valladolid\"\nmsgstr \"Valladolid\"\n\n#: es/es_provinces.py:52\nmsgid \"Bizkaia\"\nmsgstr \"Bizkaia\"\n\n#: es/es_provinces.py:53\nmsgid \"Zamora\"\nmsgstr \"Zamora\"\n\n#: es/es_provinces.py:54\nmsgid \"Zaragoza\"\nmsgstr \"Zaragoza\"\n\n#: es/es_provinces.py:55\nmsgid \"Ceuta\"\nmsgstr \"Ceuta\"\n\n#: es/es_provinces.py:56\nmsgid \"Melilla\"\nmsgstr \"Melilla\"\n\n#: es/es_regions.py:5\nmsgid \"Andalusia\"\nmsgstr \"Andalusia\"\n\n#: es/es_regions.py:6\nmsgid \"Aragon\"\nmsgstr \"Aragon\"\n\n#: es/es_regions.py:7\nmsgid \"Principality of Asturias\"\nmsgstr \"Phrionsacht Asturias\"\n\n#: es/es_regions.py:8\nmsgid \"Balearic Islands\"\nmsgstr \"Na hOileáin Bhailéaracha\"\n\n#: es/es_regions.py:9\nmsgid \"Basque Country\"\nmsgstr \"Tír na mBascach\"\n\n#: es/es_regions.py:10\nmsgid \"Canary Islands\"\nmsgstr \"Na hOileáin Chanáracha\"\n\n#: es/es_regions.py:12\nmsgid \"Castile-La Mancha\"\nmsgstr \"Castilla-La Mancha\"\n\n#: es/es_regions.py:13\nmsgid \"Castile and Leon\"\nmsgstr \"Castilla agus Leon\"\n\n#: es/es_regions.py:14\nmsgid \"Catalonia\"\nmsgstr \"An Chatalóin\"\n\n#: es/es_regions.py:15\nmsgid \"Extremadura\"\nmsgstr \"Extremadura\"\n\n#: es/es_regions.py:16\nmsgid \"Galicia\"\nmsgstr \"Galicia\"\n\n#: es/es_regions.py:19\nmsgid \"Region of Murcia\"\nmsgstr \"Réigiún de Murcia\"\n\n#: es/es_regions.py:20\nmsgid \"Foral Community of Navarre\"\nmsgstr \"Chomhphobail Foral de Navarre\"\n\n#: es/es_regions.py:21\nmsgid \"Valencian Community\"\nmsgstr \"Valencian Community\"\n\n#: es/forms.py:26\nmsgid \"Enter a valid postal code in the range and format 01XXX - 52XXX.\"\nmsgstr \"Iontráil cód poist bailí i raon agus formáid 01XXX - 52XXX.\"\n\n#: es/forms.py:46\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or \"\n\"9XXXXXXXX.\"\nmsgstr \"\"\n\"Iontráil uimhir theileafóin bailí i gceann de na formáidí 6XXXXXXXX, \"\n\"8XXXXXXXX nó 9XXXXXXXX.\"\n\n#: es/forms.py:73\nmsgid \"Please enter a valid NIF, NIE, or CIF.\"\nmsgstr \"Cuir isteach NIF bailí, NIE, nó CIF.\"\n\n#: es/forms.py:74\nmsgid \"Please enter a valid NIF or NIE.\"\nmsgstr \"Cuir isteach NIF bailí nó NIE.\"\n\n#: es/forms.py:75\nmsgid \"Invalid checksum for NIF.\"\nmsgstr \"Sheiceála neamhbhailí do NIF.\"\n\n#: es/forms.py:76\nmsgid \"Invalid checksum for NIE.\"\nmsgstr \"Sheiceála neamhbhailí do NIE.\"\n\n#: es/forms.py:77\nmsgid \"Invalid checksum for CIF.\"\nmsgstr \"Sheiceála neamhbhailí do CIF.\"\n\n#: es/forms.py:149\nmsgid \"\"\n\"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.\"\nmsgstr \"\"\n\"Cuir isteach uimhir chuntais bainc bailí i bhformáid XXXX-XXXX-XX-XXXXXXXXXX.\"\n\n#: es/forms.py:150\nmsgid \"Invalid checksum for bank account number.\"\nmsgstr \"Sheiceála neamhbhailí do uimhir cuntas bainc.\"\n\n#: fi/forms.py:33\nmsgid \"Enter a valid Finnish social security number.\"\nmsgstr \"Cuir isteach uimhir Fionlainne slándála sóisialta bailí.\"\n\n#: fr/forms.py:35\nmsgid \"Phone numbers must be in 0X XX XX XX XX format.\"\nmsgstr \"Ní mór Uimhreacha teileafóin a chur i bhformáid 0X XX XX XX XX.\"\n\n#: gb/forms.py:25\nmsgid \"Enter a valid postcode.\"\nmsgstr \"Iontráil postchód bailí.\"\n\n#: gb/gb_regions.py:11\nmsgid \"Bedfordshire\"\nmsgstr \"Bedfordshire\"\n\n#: gb/gb_regions.py:12\nmsgid \"Buckinghamshire\"\nmsgstr \"Buckinghamshire\"\n\n#: gb/gb_regions.py:14\nmsgid \"Cheshire\"\nmsgstr \"Cheshire\"\n\n#: gb/gb_regions.py:15\nmsgid \"Cornwall and Isles of Scilly\"\nmsgstr \"Corn na Breataine agus na Oileáin Scilly\"\n\n#: gb/gb_regions.py:16\nmsgid \"Cumbria\"\nmsgstr \"Cumbria\"\n\n#: gb/gb_regions.py:17\nmsgid \"Derbyshire\"\nmsgstr \"Derbyshire\"\n\n#: gb/gb_regions.py:18\nmsgid \"Devon\"\nmsgstr \"Devon\"\n\n#: gb/gb_regions.py:19\nmsgid \"Dorset\"\nmsgstr \"Dorset\"\n\n#: gb/gb_regions.py:20\nmsgid \"Durham\"\nmsgstr \"Durham\"\n\n#: gb/gb_regions.py:21\nmsgid \"East Sussex\"\nmsgstr \"East Sussex\"\n\n#: gb/gb_regions.py:22\nmsgid \"Essex\"\nmsgstr \"Essex\"\n\n#: gb/gb_regions.py:23\nmsgid \"Gloucestershire\"\nmsgstr \"Gloucestershire\"\n\n#: gb/gb_regions.py:24\nmsgid \"Greater London\"\nmsgstr \"Greater London\"\n\n#: gb/gb_regions.py:25\nmsgid \"Greater Manchester\"\nmsgstr \"Greater Manchester\"\n\n#: gb/gb_regions.py:26\nmsgid \"Hampshire\"\nmsgstr \"Hampshire\"\n\n#: gb/gb_regions.py:27\nmsgid \"Hertfordshire\"\nmsgstr \"Hertfordshire\"\n\n#: gb/gb_regions.py:28\nmsgid \"Kent\"\nmsgstr \"Kent\"\n\n#: gb/gb_regions.py:29\nmsgid \"Lancashire\"\nmsgstr \"Lancashire\"\n\n#: gb/gb_regions.py:30\nmsgid \"Leicestershire\"\nmsgstr \"Leicestershire\"\n\n#: gb/gb_regions.py:31\nmsgid \"Lincolnshire\"\nmsgstr \"Lincolnshire\"\n\n#: gb/gb_regions.py:32\nmsgid \"Merseyside\"\nmsgstr \"Merseyside\"\n\n#: gb/gb_regions.py:33\nmsgid \"Norfolk\"\nmsgstr \"Norfolk\"\n\n#: gb/gb_regions.py:34\nmsgid \"North Yorkshire\"\nmsgstr \"North Yorkshire\"\n\n#: gb/gb_regions.py:35\nmsgid \"Northamptonshire\"\nmsgstr \"Northamptonshire\"\n\n#: gb/gb_regions.py:36\nmsgid \"Northumberland\"\nmsgstr \"Northumberland\"\n\n#: gb/gb_regions.py:37\nmsgid \"Nottinghamshire\"\nmsgstr \"Nottinghamshire\"\n\n#: gb/gb_regions.py:38\nmsgid \"Oxfordshire\"\nmsgstr \"Oxfordshire\"\n\n#: gb/gb_regions.py:39\nmsgid \"Shropshire\"\nmsgstr \"Shropshire\"\n\n#: gb/gb_regions.py:40\nmsgid \"Somerset\"\nmsgstr \"Somerset\"\n\n#: gb/gb_regions.py:41\nmsgid \"South Yorkshire\"\nmsgstr \"South Yorkshire\"\n\n#: gb/gb_regions.py:42\nmsgid \"Staffordshire\"\nmsgstr \"Staffordshire\"\n\n#: gb/gb_regions.py:43\nmsgid \"Suffolk\"\nmsgstr \"Suffolk\"\n\n#: gb/gb_regions.py:44\nmsgid \"Surrey\"\nmsgstr \"Surrey\"\n\n#: gb/gb_regions.py:45\nmsgid \"Tyne and Wear\"\nmsgstr \"Tyne and Wear\"\n\n#: gb/gb_regions.py:46\nmsgid \"Warwickshire\"\nmsgstr \"Warwickshire\"\n\n#: gb/gb_regions.py:47\nmsgid \"West Midlands\"\nmsgstr \"West Midlands\"\n\n#: gb/gb_regions.py:48\nmsgid \"West Sussex\"\nmsgstr \"West Sussex\"\n\n#: gb/gb_regions.py:49\nmsgid \"West Yorkshire\"\nmsgstr \"West Yorkshire\"\n\n#: gb/gb_regions.py:50\nmsgid \"Wiltshire\"\nmsgstr \"Wiltshire\"\n\n#: gb/gb_regions.py:51\nmsgid \"Worcestershire\"\nmsgstr \"Worcestershire\"\n\n#: gb/gb_regions.py:55\nmsgid \"County Antrim\"\nmsgstr \"Contae Aontroma\"\n\n#: gb/gb_regions.py:56\nmsgid \"County Armagh\"\nmsgstr \"Contae Ard Mhacha\"\n\n#: gb/gb_regions.py:57\nmsgid \"County Down\"\nmsgstr \"Contae an Dúin\"\n\n#: gb/gb_regions.py:58\nmsgid \"County Fermanagh\"\nmsgstr \"Contae Fhear Manach\"\n\n#: gb/gb_regions.py:59\nmsgid \"County Londonderry\"\nmsgstr \"Contae Dhoire\"\n\n#: gb/gb_regions.py:60\nmsgid \"County Tyrone\"\nmsgstr \"Contae Thír Eoghain\"\n\n#: gb/gb_regions.py:64\nmsgid \"Clwyd\"\nmsgstr \"Clwyd\"\n\n#: gb/gb_regions.py:65\nmsgid \"Dyfed\"\nmsgstr \"Dyfed\"\n\n#: gb/gb_regions.py:66\nmsgid \"Gwent\"\nmsgstr \"Gwent\"\n\n#: gb/gb_regions.py:67\nmsgid \"Gwynedd\"\nmsgstr \"Gwynedd\"\n\n#: gb/gb_regions.py:68\nmsgid \"Mid Glamorgan\"\nmsgstr \"Mid Glamorgan\"\n\n#: gb/gb_regions.py:69\nmsgid \"Powys\"\nmsgstr \"Powys\"\n\n#: gb/gb_regions.py:70\nmsgid \"South Glamorgan\"\nmsgstr \"South Glamorgan\"\n\n#: gb/gb_regions.py:71\nmsgid \"West Glamorgan\"\nmsgstr \"West Glamorgan\"\n\n#: gb/gb_regions.py:75\nmsgid \"Borders\"\nmsgstr \"Borders\"\n\n#: gb/gb_regions.py:76\nmsgid \"Central Scotland\"\nmsgstr \"Central Albain\"\n\n#: gb/gb_regions.py:77\nmsgid \"Dumfries and Galloway\"\nmsgstr \"Dumfries agus Galloway\"\n\n#: gb/gb_regions.py:78\nmsgid \"Fife\"\nmsgstr \"Fife\"\n\n#: gb/gb_regions.py:79\nmsgid \"Grampian\"\nmsgstr \"Grampian\"\n\n#: gb/gb_regions.py:80\nmsgid \"Highland\"\nmsgstr \"Highland\"\n\n#: gb/gb_regions.py:81\nmsgid \"Lothian\"\nmsgstr \"Lothian\"\n\n#: gb/gb_regions.py:82\nmsgid \"Orkney Islands\"\nmsgstr \"na hOiléain Orkney\"\n\n#: gb/gb_regions.py:83\nmsgid \"Shetland Islands\"\nmsgstr \"na hOiléain Shetland\"\n\n#: gb/gb_regions.py:84\nmsgid \"Strathclyde\"\nmsgstr \"Strathclyde\"\n\n#: gb/gb_regions.py:85\nmsgid \"Tayside\"\nmsgstr \"Tayside\"\n\n#: gb/gb_regions.py:86\nmsgid \"Western Isles\"\nmsgstr \"Oileáin Iarthair\"\n\n#: gb/gb_regions.py:90\nmsgid \"England\"\nmsgstr \"Sasana\"\n\n#: gb/gb_regions.py:91\nmsgid \"Northern Ireland\"\nmsgstr \"Tuaisceart Éireann\"\n\n#: gb/gb_regions.py:92\nmsgid \"Scotland\"\nmsgstr \"Albain\"\n\n#: gb/gb_regions.py:93\nmsgid \"Wales\"\nmsgstr \"An Bhreatain Bheag\"\n\n#: hk/forms.py:37\n#, python-format\nmsgid \"Phone number should not start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:40\n#, python-format\nmsgid \"Phone number must be in one of the following formats: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:42\n#, python-format\nmsgid \"Phone number should start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hr/forms.py:76\nmsgid \"Enter a valid 13 digit JMBG\"\nmsgstr \"Iontráil JMBG 13 digit bailí\"\n\n#: hr/forms.py:77\nmsgid \"Error in date segment\"\nmsgstr \"Earráid sa deighleog dáta\"\n\n#: hr/forms.py:123\nmsgid \"Enter a valid 11 digit OIB\"\nmsgstr \"Iontráil OIB 11 dhigit bailí \"\n\n#: hr/forms.py:152 id/forms.py:112\nmsgid \"Enter a valid vehicle license plate number\"\nmsgstr \"Cuir isteach uimhir feithicle bailí pláta cheadúnas\"\n\n#: hr/forms.py:153\nmsgid \"Enter a valid location code\"\nmsgstr \"Iontráil cód suoímh bailí\"\n\n#: hr/forms.py:154\nmsgid \"Number part cannot be zero\"\nmsgstr \"Ní féidir an uimhir a bheith nialas\"\n\n#: hr/forms.py:190\nmsgid \"Enter a valid 5 digit postal code\"\nmsgstr \"Iontráil postcód 5 dhigit bailí\"\n\n#: hr/forms.py:218 id/forms.py:72 nl/forms.py:56\nmsgid \"Enter a valid phone number\"\nmsgstr \"Iontráil uimhir theileafóin bailí\"\n\n#: hr/forms.py:219\nmsgid \"Enter a valid area or mobile network code\"\nmsgstr \"Cuir isteach limistéar bailí nó cód líonra soghluaiste\"\n\n#: hr/forms.py:220\nmsgid \"The phone nubmer is too long\"\nmsgstr \"Tá uimhir an fón ró-fhada\"\n\n#: hr/forms.py:258\nmsgid \"Enter a valid 19 digit JMBAG starting with 601983\"\nmsgstr \"Iontráil JMBAG 19 dhigit bailí ag tosú le 601983\"\n\n#: hr/forms.py:259\nmsgid \"Card issue number cannot be zero\"\nmsgstr \"Ní féidir uimhir eisiúna cárta a bheith nialas\"\n\n#: hr/hr_choices.py:14\nmsgid \"Grad Zagreb\"\nmsgstr \"Grad Zagreb\"\n\n#: hr/hr_choices.py:15\nmsgid \"Bjelovarsko-bilogorska županija\"\nmsgstr \"Bjelovarsko-bilogorska županija\"\n\n#: hr/hr_choices.py:16\nmsgid \"Brodsko-posavska županija\"\nmsgstr \"Brodsko-posavska županija\"\n\n#: hr/hr_choices.py:17\nmsgid \"Dubrovačko-neretvanska županija\"\nmsgstr \"Dubrovačko-neretvanska županija\"\n\n#: hr/hr_choices.py:18\nmsgid \"Istarska županija\"\nmsgstr \"Istarska županija\"\n\n#: hr/hr_choices.py:19\nmsgid \"Karlovačka županija\"\nmsgstr \"Karlovačka županija\"\n\n#: hr/hr_choices.py:20\nmsgid \"Koprivničko-križevačka županija\"\nmsgstr \"Koprivničko-križevačka županija\"\n\n#: hr/hr_choices.py:21\nmsgid \"Krapinsko-zagorska županija\"\nmsgstr \"Krapinsko-zagorska županija\"\n\n#: hr/hr_choices.py:22\nmsgid \"Ličko-senjska županija\"\nmsgstr \"Ličko-senjska županija\"\n\n#: hr/hr_choices.py:23\nmsgid \"Međimurska županija\"\nmsgstr \"Međimurska županija\"\n\n#: hr/hr_choices.py:24\nmsgid \"Osječko-baranjska županija\"\nmsgstr \"Osječko-baranjska županija\"\n\n#: hr/hr_choices.py:25\nmsgid \"Požeško-slavonska županija\"\nmsgstr \"Požeško-slavonska županija\"\n\n#: hr/hr_choices.py:26\nmsgid \"Primorsko-goranska županija\"\nmsgstr \"Primorsko-goranska županija\"\n\n#: hr/hr_choices.py:27\nmsgid \"Sisačko-moslavačka županija\"\nmsgstr \"Sisačko-moslavačka županija\"\n\n#: hr/hr_choices.py:28\nmsgid \"Splitsko-dalmatinska županija\"\nmsgstr \"Splitsko-dalmatinska županija\"\n\n#: hr/hr_choices.py:29\nmsgid \"Šibensko-kninska županija\"\nmsgstr \"Šibensko-kninska županija\"\n\n#: hr/hr_choices.py:30\nmsgid \"Varaždinska županija\"\nmsgstr \"Varaždinska županija\"\n\n#: hr/hr_choices.py:31\nmsgid \"Virovitičko-podravska županija\"\nmsgstr \"Virovitičko-podravska županija\"\n\n#: hr/hr_choices.py:32\nmsgid \"Vukovarsko-srijemska županija\"\nmsgstr \"Vukovarsko-srijemska županija\"\n\n#: hr/hr_choices.py:33\nmsgid \"Zadarska županija\"\nmsgstr \"Zadarska županija\"\n\n#: hr/hr_choices.py:34\nmsgid \"Zagrebačka županija\"\nmsgstr \"Zagrebačka županija\"\n\n#: id/forms.py:31\nmsgid \"Enter a valid post code\"\nmsgstr \"Iontráil cód poist bailí\"\n\n#: id/forms.py:176\nmsgid \"Enter a valid NIK/KTP number\"\nmsgstr \"Cuir isteach uimhir NIK/KTP bailí\"\n\n#: id/id_choices.py:15\nmsgid \"Aceh\"\nmsgstr \"Aceh\"\n\n#: id/id_choices.py:16 id/id_choices.py:79\nmsgid \"Bali\"\nmsgstr \"Bali\"\n\n#: id/id_choices.py:17 id/id_choices.py:51\nmsgid \"Banten\"\nmsgstr \"Banten\"\n\n#: id/id_choices.py:18 id/id_choices.py:60\nmsgid \"Bengkulu\"\nmsgstr \"Bengkulu\"\n\n#: id/id_choices.py:19 id/id_choices.py:53\nmsgid \"Yogyakarta\"\nmsgstr \"Yogyakarta\"\n\n#: id/id_choices.py:20 id/id_choices.py:57\nmsgid \"Jakarta\"\nmsgstr \"Jakarta\"\n\n#: id/id_choices.py:21 id/id_choices.py:81\nmsgid \"Gorontalo\"\nmsgstr \"Gorontalo\"\n\n#: id/id_choices.py:22 id/id_choices.py:63\nmsgid \"Jambi\"\nmsgstr \"Jambi\"\n\n#: id/id_choices.py:23\nmsgid \"Jawa Barat\"\nmsgstr \"Jawa Barat\"\n\n#: id/id_choices.py:24\nmsgid \"Jawa Tengah\"\nmsgstr \"Jawa Tengah\"\n\n#: id/id_choices.py:25\nmsgid \"Jawa Timur\"\nmsgstr \"Jawa Timur\"\n\n#: id/id_choices.py:26 id/id_choices.py:94\nmsgid \"Kalimantan Barat\"\nmsgstr \"Kalimantan Barat\"\n\n#: id/id_choices.py:27 id/id_choices.py:72\nmsgid \"Kalimantan Selatan\"\nmsgstr \"Kalimantan Selatan\"\n\n#: id/id_choices.py:28 id/id_choices.py:95\nmsgid \"Kalimantan Tengah\"\nmsgstr \"Kalimantan Tengah\"\n\n#: id/id_choices.py:29 id/id_choices.py:96\nmsgid \"Kalimantan Timur\"\nmsgstr \"Kalimantan Timur\"\n\n#: id/id_choices.py:30\nmsgid \"Kepulauan Bangka-Belitung\"\nmsgstr \"Kepulauan Bangka-Belitung\"\n\n#: id/id_choices.py:31 id/id_choices.py:68\nmsgid \"Kepulauan Riau\"\nmsgstr \"Kepulauan Riau\"\n\n#: id/id_choices.py:32 id/id_choices.py:61\nmsgid \"Lampung\"\nmsgstr \"Lampung\"\n\n#: id/id_choices.py:33 id/id_choices.py:76\nmsgid \"Maluku\"\nmsgstr \"Maluku\"\n\n#: id/id_choices.py:34 id/id_choices.py:77\nmsgid \"Maluku Utara\"\nmsgstr \"Maluku Utara\"\n\n#: id/id_choices.py:35\nmsgid \"Nusa Tenggara Barat\"\nmsgstr \"Nusa Tenggara Barat\"\n\n#: id/id_choices.py:36\nmsgid \"Nusa Tenggara Timur\"\nmsgstr \"Nusa Tenggara Timur\"\n\n#: id/id_choices.py:37\nmsgid \"Papua\"\nmsgstr \"Papua\"\n\n#: id/id_choices.py:38\nmsgid \"Papua Barat\"\nmsgstr \"Papua Barat\"\n\n#: id/id_choices.py:39 id/id_choices.py:66\nmsgid \"Riau\"\nmsgstr \"Riau\"\n\n#: id/id_choices.py:40 id/id_choices.py:74\nmsgid \"Sulawesi Barat\"\nmsgstr \"Sulawesi Barat\"\n\n#: id/id_choices.py:41 id/id_choices.py:75\nmsgid \"Sulawesi Selatan\"\nmsgstr \"Sulawesi Selatan\"\n\n#: id/id_choices.py:42 id/id_choices.py:82\nmsgid \"Sulawesi Tengah\"\nmsgstr \"Sulawesi Tengah\"\n\n#: id/id_choices.py:43 id/id_choices.py:85\nmsgid \"Sulawesi Tenggara\"\nmsgstr \"Sulawesi Tenggara\"\n\n#: id/id_choices.py:44\nmsgid \"Sulawesi Utara\"\nmsgstr \"Sulawesi Utara\"\n\n#: id/id_choices.py:45 id/id_choices.py:58\nmsgid \"Sumatera Barat\"\nmsgstr \"Sumatera Barat\"\n\n#: id/id_choices.py:46 id/id_choices.py:62\nmsgid \"Sumatera Selatan\"\nmsgstr \"Sumatera Selatan\"\n\n#: id/id_choices.py:47 id/id_choices.py:64\nmsgid \"Sumatera Utara\"\nmsgstr \"Sumatera Utara\"\n\n#: id/id_choices.py:52\nmsgid \"Magelang\"\nmsgstr \"Magelang\"\n\n#: id/id_choices.py:54\nmsgid \"Surakarta - Solo\"\nmsgstr \"Surakarta - Solo\"\n\n#: id/id_choices.py:55\nmsgid \"Madiun\"\nmsgstr \"Madiun\"\n\n#: id/id_choices.py:56\nmsgid \"Kediri\"\nmsgstr \"Kediri\"\n\n#: id/id_choices.py:59\nmsgid \"Tapanuli\"\nmsgstr \"Tapanuli\"\n\n#: id/id_choices.py:65\nmsgid \"Nanggroe Aceh Darussalam\"\nmsgstr \"Nanggroe Aceh Darussalam\"\n\n#: id/id_choices.py:67\nmsgid \"Kepulauan Bangka Belitung\"\nmsgstr \"Kepulauan Bangka Belitung\"\n\n#: id/id_choices.py:69\nmsgid \"Corps Consulate\"\nmsgstr \"Cór gconsalacht\"\n\n#: id/id_choices.py:70\nmsgid \"Corps Diplomatic\"\nmsgstr \"Cór Taidhleoireachta\"\n\n#: id/id_choices.py:71\nmsgid \"Bandung\"\nmsgstr \"Bandung\"\n\n#: id/id_choices.py:73\nmsgid \"Sulawesi Utara Daratan\"\nmsgstr \"Sulawesi Utara Daratan\"\n\n#: id/id_choices.py:78\nmsgid \"NTT - Timor\"\nmsgstr \"NTT - Timor\"\n\n#: id/id_choices.py:80\nmsgid \"Sulawesi Utara Kepulauan\"\nmsgstr \"Sulawesi Utara Kepulauan\"\n\n#: id/id_choices.py:83\nmsgid \"NTB - Lombok\"\nmsgstr \"NTB - Lombok\"\n\n#: id/id_choices.py:84\nmsgid \"Papua dan Papua Barat\"\nmsgstr \"Papua dan Papua Barat\"\n\n#: id/id_choices.py:86\nmsgid \"Cirebon\"\nmsgstr \"Cirebon\"\n\n#: id/id_choices.py:87\nmsgid \"NTB - Sumbawa\"\nmsgstr \"NTB - Sumbawa\"\n\n#: id/id_choices.py:88\nmsgid \"NTT - Flores\"\nmsgstr \"NTT - Flores\"\n\n#: id/id_choices.py:89\nmsgid \"NTT - Sumba\"\nmsgstr \"NTT - Sumba\"\n\n#: id/id_choices.py:90\nmsgid \"Bogor\"\nmsgstr \"Bogor\"\n\n#: id/id_choices.py:91\nmsgid \"Pekalongan\"\nmsgstr \"Pekalongan\"\n\n#: id/id_choices.py:92\nmsgid \"Semarang\"\nmsgstr \"Semarang\"\n\n#: id/id_choices.py:93\nmsgid \"Pati\"\nmsgstr \"Pati\"\n\n#: id/id_choices.py:97\nmsgid \"Surabaya\"\nmsgstr \"Surabaya\"\n\n#: id/id_choices.py:98\nmsgid \"Madura\"\nmsgstr \"Madura\"\n\n#: id/id_choices.py:99\nmsgid \"Malang\"\nmsgstr \"Malang\"\n\n#: id/id_choices.py:100\nmsgid \"Jember\"\nmsgstr \"Jember\"\n\n#: id/id_choices.py:101\nmsgid \"Banyumas\"\nmsgstr \"Banyumas\"\n\n#: id/id_choices.py:102\nmsgid \"Federal Government\"\nmsgstr \"Rialtas Feidearálach\"\n\n#: id/id_choices.py:103\nmsgid \"Bojonegoro\"\nmsgstr \"Bojonegoro\"\n\n#: id/id_choices.py:104\nmsgid \"Purwakarta\"\nmsgstr \"Purwakarta\"\n\n#: id/id_choices.py:105\nmsgid \"Sidoarjo\"\nmsgstr \"Sidoarjo\"\n\n#: id/id_choices.py:106\nmsgid \"Garut\"\nmsgstr \"Garut\"\n\n#: ie/ie_counties.py:8\nmsgid \"Antrim\"\nmsgstr \"Aontroim\"\n\n#: ie/ie_counties.py:9\nmsgid \"Armagh\"\nmsgstr \"Ard Mhacha\"\n\n#: ie/ie_counties.py:10\nmsgid \"Carlow\"\nmsgstr \"Ceatharlach\"\n\n#: ie/ie_counties.py:11\nmsgid \"Cavan\"\nmsgstr \"An Cabhan\"\n\n#: ie/ie_counties.py:12\nmsgid \"Clare\"\nmsgstr \"An Clar\"\n\n#: ie/ie_counties.py:13\nmsgid \"Cork\"\nmsgstr \"Corcaigh\"\n\n#: ie/ie_counties.py:14\nmsgid \"Derry\"\nmsgstr \"Doire\"\n\n#: ie/ie_counties.py:15\nmsgid \"Donegal\"\nmsgstr \"Dún na nGall\"\n\n#: ie/ie_counties.py:16\nmsgid \"Down\"\nmsgstr \"an Dún\"\n\n#: ie/ie_counties.py:17\nmsgid \"Dublin\"\nmsgstr \"Baile Atha Cliath\"\n\n#: ie/ie_counties.py:18\nmsgid \"Fermanagh\"\nmsgstr \"Fear Manach\"\n\n#: ie/ie_counties.py:19\nmsgid \"Galway\"\nmsgstr \"Gaillimh\"\n\n#: ie/ie_counties.py:20\nmsgid \"Kerry\"\nmsgstr \"Chiarrai\"\n\n#: ie/ie_counties.py:21\nmsgid \"Kildare\"\nmsgstr \"Cill Dara\"\n\n#: ie/ie_counties.py:22\nmsgid \"Kilkenny\"\nmsgstr \"Cill Chainnigh\"\n\n#: ie/ie_counties.py:23\nmsgid \"Laois\"\nmsgstr \"Laoise\"\n\n#: ie/ie_counties.py:24\nmsgid \"Leitrim\"\nmsgstr \"Liatroim\"\n\n#: ie/ie_counties.py:25\nmsgid \"Limerick\"\nmsgstr \"Luimneach\"\n\n#: ie/ie_counties.py:26\nmsgid \"Longford\"\nmsgstr \"An Longfort\"\n\n#: ie/ie_counties.py:27\nmsgid \"Louth\"\nmsgstr \"Lú\"\n\n#: ie/ie_counties.py:28\nmsgid \"Mayo\"\nmsgstr \"Mhaigh Eo\"\n\n#: ie/ie_counties.py:29\nmsgid \"Meath\"\nmsgstr \"an Mhí\"\n\n#: ie/ie_counties.py:30\nmsgid \"Monaghan\"\nmsgstr \"Muineachán\"\n\n#: ie/ie_counties.py:31\nmsgid \"Offaly\"\nmsgstr \"Uíbh Fhailí\"\n\n#: ie/ie_counties.py:32\nmsgid \"Roscommon\"\nmsgstr \"Ros Comain\"\n\n#: ie/ie_counties.py:33\nmsgid \"Sligo\"\nmsgstr \"Sligeach\"\n\n#: ie/ie_counties.py:34\nmsgid \"Tipperary\"\nmsgstr \"Tiobraid Arann\"\n\n#: ie/ie_counties.py:35\nmsgid \"Tyrone\"\nmsgstr \"Tír Eoghain\"\n\n#: ie/ie_counties.py:36\nmsgid \"Waterford\"\nmsgstr \"Port Láirge\"\n\n#: ie/ie_counties.py:37\nmsgid \"Westmeath\"\nmsgstr \"Na hIarmhí\"\n\n#: ie/ie_counties.py:38\nmsgid \"Wexford\"\nmsgstr \"Loch Garman\"\n\n#: ie/ie_counties.py:39\nmsgid \"Wicklow\"\nmsgstr \"Cill Mhantáin\"\n\n#: il/forms.py:32\nmsgid \"Enter a postal code in the format XXXXX\"\nmsgstr \"Cuir isteach cód poist san fhormáid XXXXX\"\n\n#: il/forms.py:51\nmsgid \"Enter a valid ID number.\"\nmsgstr \"Cuir isteach uimhir aitheantais bailí.\"\n\n#: in_/forms.py:41\nmsgid \"Enter a zip code in the format XXXXXX or XXX XXX.\"\nmsgstr \"Cuir isteach cód zip san fhormáid XXXXXX nó XXX XXX.\"\n\n#: in_/forms.py:64\nmsgid \"Enter an Indian state or territory.\"\nmsgstr \"Cuir isteach an stát Indiach nó gcríoch.\"\n\n#: in_/forms.py:103\nmsgid \"Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.\"\nmsgstr \"\"\n\"Ní mór uimhreacha gutháin a bheith i bhformáid 02X-8x nó 03X-7x nó 04X-6x.\"\n\n#: is_/forms.py:22\nmsgid \"\"\n\"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.\"\nmsgstr \"\"\n\"Cuir isteach uimhir aitheantais bailí hÍoslainne. Is é an fhormáid XXXXXX-\"\n\"XXXX.\"\n\n#: is_/forms.py:23\nmsgid \"The Icelandic identification number is not valid.\"\nmsgstr \"Níl an uimhir aitheantais hÍoslainne bailí.\"\n\n#: it/forms.py:21\nmsgid \"Enter a valid zip code.\"\nmsgstr \"Iontráil zip-cód bailí.\"\n\n#: it/forms.py:48\nmsgid \"Enter a valid Social Security number.\"\nmsgstr \"Iontráil uimhir Slándáil Shóisialta bailí.\"\n\n#: it/forms.py:73\nmsgid \"Enter a valid VAT number.\"\nmsgstr \"Iontráil uimhir CBL bailí.\"\n\n#: jp/forms.py:19\nmsgid \"Enter a postal code in the format XXXXXXX or XXX-XXXX.\"\nmsgstr \"Iontráil cód poist i bhformáid XXXXXXX nó XXX-XXXX.\"\n\n#: jp/jp_prefectures.py:4\nmsgid \"Hokkaido\"\nmsgstr \"Hokkaido\"\n\n#: jp/jp_prefectures.py:5\nmsgid \"Aomori\"\nmsgstr \"Aomori\"\n\n#: jp/jp_prefectures.py:6\nmsgid \"Iwate\"\nmsgstr \"Iwate\"\n\n#: jp/jp_prefectures.py:7\nmsgid \"Miyagi\"\nmsgstr \"Miyagi\"\n\n#: jp/jp_prefectures.py:8\nmsgid \"Akita\"\nmsgstr \"Akita\"\n\n#: jp/jp_prefectures.py:9\nmsgid \"Yamagata\"\nmsgstr \"Yamagata\"\n\n#: jp/jp_prefectures.py:10\nmsgid \"Fukushima\"\nmsgstr \"Fukushima\"\n\n#: jp/jp_prefectures.py:11\nmsgid \"Ibaraki\"\nmsgstr \"Ibaraki\"\n\n#: jp/jp_prefectures.py:12\nmsgid \"Tochigi\"\nmsgstr \"Tochigi\"\n\n#: jp/jp_prefectures.py:13\nmsgid \"Gunma\"\nmsgstr \"Gunma\"\n\n#: jp/jp_prefectures.py:14\nmsgid \"Saitama\"\nmsgstr \"Saitama\"\n\n#: jp/jp_prefectures.py:15\nmsgid \"Chiba\"\nmsgstr \"Chiba\"\n\n#: jp/jp_prefectures.py:16\nmsgid \"Tokyo\"\nmsgstr \"Tóiceo\"\n\n#: jp/jp_prefectures.py:17\nmsgid \"Kanagawa\"\nmsgstr \"Kanagawa\"\n\n#: jp/jp_prefectures.py:18\nmsgid \"Yamanashi\"\nmsgstr \"Yamanashi\"\n\n#: jp/jp_prefectures.py:19\nmsgid \"Nagano\"\nmsgstr \"Nagano\"\n\n#: jp/jp_prefectures.py:20\nmsgid \"Niigata\"\nmsgstr \"Niigata\"\n\n#: jp/jp_prefectures.py:21\nmsgid \"Toyama\"\nmsgstr \"Toyama\"\n\n#: jp/jp_prefectures.py:22\nmsgid \"Ishikawa\"\nmsgstr \"Ishikawa\"\n\n#: jp/jp_prefectures.py:23\nmsgid \"Fukui\"\nmsgstr \"Fukui\"\n\n#: jp/jp_prefectures.py:24\nmsgid \"Gifu\"\nmsgstr \"Gifu\"\n\n#: jp/jp_prefectures.py:25\nmsgid \"Shizuoka\"\nmsgstr \"Shizuoka\"\n\n#: jp/jp_prefectures.py:26\nmsgid \"Aichi\"\nmsgstr \"Aichi\"\n\n#: jp/jp_prefectures.py:27\nmsgid \"Mie\"\nmsgstr \"Mie\"\n\n#: jp/jp_prefectures.py:28\nmsgid \"Shiga\"\nmsgstr \"Shiga\"\n\n#: jp/jp_prefectures.py:29\nmsgid \"Kyoto\"\nmsgstr \"Kyoto\"\n\n#: jp/jp_prefectures.py:30\nmsgid \"Osaka\"\nmsgstr \"Osaka\"\n\n#: jp/jp_prefectures.py:31\nmsgid \"Hyogo\"\nmsgstr \"Hyogo\"\n\n#: jp/jp_prefectures.py:32\nmsgid \"Nara\"\nmsgstr \"Nara\"\n\n#: jp/jp_prefectures.py:33\nmsgid \"Wakayama\"\nmsgstr \"Wakayama\"\n\n#: jp/jp_prefectures.py:34\nmsgid \"Tottori\"\nmsgstr \"Tottori\"\n\n#: jp/jp_prefectures.py:35\nmsgid \"Shimane\"\nmsgstr \"Shimane\"\n\n#: jp/jp_prefectures.py:36\nmsgid \"Okayama\"\nmsgstr \"Okayama\"\n\n#: jp/jp_prefectures.py:37\nmsgid \"Hiroshima\"\nmsgstr \"Hiroshima\"\n\n#: jp/jp_prefectures.py:38\nmsgid \"Yamaguchi\"\nmsgstr \"Yamaguchi\"\n\n#: jp/jp_prefectures.py:39\nmsgid \"Tokushima\"\nmsgstr \"Tokushima\"\n\n#: jp/jp_prefectures.py:40\nmsgid \"Kagawa\"\nmsgstr \"Kagawa\"\n\n#: jp/jp_prefectures.py:41\nmsgid \"Ehime\"\nmsgstr \"Ehime\"\n\n#: jp/jp_prefectures.py:42\nmsgid \"Kochi\"\nmsgstr \"Kochi\"\n\n#: jp/jp_prefectures.py:43\nmsgid \"Fukuoka\"\nmsgstr \"Fukuoka\"\n\n#: jp/jp_prefectures.py:44\nmsgid \"Saga\"\nmsgstr \"Saga\"\n\n#: jp/jp_prefectures.py:45\nmsgid \"Nagasaki\"\nmsgstr \"Nagasaki\"\n\n#: jp/jp_prefectures.py:46\nmsgid \"Kumamoto\"\nmsgstr \"Kumamoto\"\n\n#: jp/jp_prefectures.py:47\nmsgid \"Oita\"\nmsgstr \"Oita\"\n\n#: jp/jp_prefectures.py:48\nmsgid \"Miyazaki\"\nmsgstr \"Miyazaki\"\n\n#: jp/jp_prefectures.py:49\nmsgid \"Kagoshima\"\nmsgstr \"Kagoshima\"\n\n#: jp/jp_prefectures.py:50\nmsgid \"Okinawa\"\nmsgstr \"Okinawa\"\n\n#: kw/forms.py:27\nmsgid \"Enter a valid Kuwaiti Civil ID number\"\nmsgstr \"Iontráil uimhir ID Sibhialta Kuwati bailí\"\n\n#: mk/forms.py:18\nmsgid \"\"\n\"Identity card numbers must contain either 4 to 7 digits or an uppercase \"\n\"letter and 7 digits.\"\nmsgstr \"\"\n\"Ní mór uimhreacha cártaí aitheantais go bhfuil ceachtar 4 go 7 dhigit nó \"\n\"litir chás uachtair agus 7 digití.\"\n\n#: mk/forms.py:57 si/forms.py:24\nmsgid \"This field should contain exactly 13 digits.\"\nmsgstr \"Ba chóir go bhfuil an réimse seo go díreach 13 digití.\"\n\n#: mk/forms.py:58\nmsgid \"The first 7 digits of the UMCN must represent a valid past date.\"\nmsgstr \"\"\n\"Ní mór don chéad 7 dhigit de na UMCN ionadaíocht a dhéanamh ar dháta bailí \"\n\"anuas.\"\n\n#: mk/forms.py:59\nmsgid \"The UMCN is not valid.\"\nmsgstr \"Níl an UMCN bailí.\"\n\n#: mk/mk_choices.py:10\nmsgid \"Aerodrom\"\nmsgstr \"Aerodrom\"\n\n#: mk/mk_choices.py:11\nmsgid \"Aračinovo\"\nmsgstr \"Aračinovo\"\n\n#: mk/mk_choices.py:12\nmsgid \"Berovo\"\nmsgstr \"Berovo\"\n\n#: mk/mk_choices.py:13\nmsgid \"Bitola\"\nmsgstr \"Bitola\"\n\n#: mk/mk_choices.py:14\nmsgid \"Bogdanci\"\nmsgstr \"Bogdanci\"\n\n#: mk/mk_choices.py:15\nmsgid \"Bogovinje\"\nmsgstr \"Bogovinje\"\n\n#: mk/mk_choices.py:16\nmsgid \"Bosilovo\"\nmsgstr \"Bosilovo\"\n\n#: mk/mk_choices.py:17\nmsgid \"Brvenica\"\nmsgstr \"Brvenica\"\n\n#: mk/mk_choices.py:18\nmsgid \"Butel\"\nmsgstr \"Butel\"\n\n#: mk/mk_choices.py:19\nmsgid \"Valandovo\"\nmsgstr \"Valandovo\"\n\n#: mk/mk_choices.py:20\nmsgid \"Vasilevo\"\nmsgstr \"Vasilevo\"\n\n#: mk/mk_choices.py:21\nmsgid \"Vevčani\"\nmsgstr \"Vevčani\"\n\n#: mk/mk_choices.py:22\nmsgid \"Veles\"\nmsgstr \"Veles\"\n\n#: mk/mk_choices.py:23\nmsgid \"Vinica\"\nmsgstr \"Vinica\"\n\n#: mk/mk_choices.py:24\nmsgid \"Vraneštica\"\nmsgstr \"Vraneštica\"\n\n#: mk/mk_choices.py:25\nmsgid \"Vrapčište\"\nmsgstr \"Vrapčište\"\n\n#: mk/mk_choices.py:26\nmsgid \"Gazi Baba\"\nmsgstr \"Gazi Baba\"\n\n#: mk/mk_choices.py:27\nmsgid \"Gevgelija\"\nmsgstr \"Gevgelija\"\n\n#: mk/mk_choices.py:28\nmsgid \"Gostivar\"\nmsgstr \"Gostivar\"\n\n#: mk/mk_choices.py:29\nmsgid \"Gradsko\"\nmsgstr \"Gradsko\"\n\n#: mk/mk_choices.py:30\nmsgid \"Debar\"\nmsgstr \"Debar\"\n\n#: mk/mk_choices.py:31\nmsgid \"Debarca\"\nmsgstr \"Debarca\"\n\n#: mk/mk_choices.py:32\nmsgid \"Delčevo\"\nmsgstr \"Delčevo\"\n\n#: mk/mk_choices.py:33\nmsgid \"Demir Kapija\"\nmsgstr \"Demir Kapija\"\n\n#: mk/mk_choices.py:34\nmsgid \"Demir Hisar\"\nmsgstr \"Demir Hisar\"\n\n#: mk/mk_choices.py:35\nmsgid \"Dolneni\"\nmsgstr \"Dolneni\"\n\n#: mk/mk_choices.py:36\nmsgid \"Drugovo\"\nmsgstr \"Drugovo\"\n\n#: mk/mk_choices.py:37\nmsgid \"Gjorče Petrov\"\nmsgstr \"Gjorče Petrov\"\n\n#: mk/mk_choices.py:38\nmsgid \"Želino\"\nmsgstr \"Želino\"\n\n#: mk/mk_choices.py:39\nmsgid \"Zajas\"\nmsgstr \"Zajas\"\n\n#: mk/mk_choices.py:40\nmsgid \"Zelenikovo\"\nmsgstr \"Zelenikovo\"\n\n#: mk/mk_choices.py:41\nmsgid \"Zrnovci\"\nmsgstr \"Zrnovci\"\n\n#: mk/mk_choices.py:42\nmsgid \"Ilinden\"\nmsgstr \"Ilinden\"\n\n#: mk/mk_choices.py:43\nmsgid \"Jegunovce\"\nmsgstr \"Jegunovce\"\n\n#: mk/mk_choices.py:44\nmsgid \"Kavadarci\"\nmsgstr \"Kavadarci\"\n\n#: mk/mk_choices.py:45\nmsgid \"Karbinci\"\nmsgstr \"Karbinci\"\n\n#: mk/mk_choices.py:46\nmsgid \"Karpoš\"\nmsgstr \"Karpoš\"\n\n#: mk/mk_choices.py:47\nmsgid \"Kisela Voda\"\nmsgstr \"Kisela Voda\"\n\n#: mk/mk_choices.py:48\nmsgid \"Kičevo\"\nmsgstr \"Kičevo\"\n\n#: mk/mk_choices.py:49\nmsgid \"Konče\"\nmsgstr \"Konče\"\n\n#: mk/mk_choices.py:50\nmsgid \"Koćani\"\nmsgstr \"Koćani\"\n\n#: mk/mk_choices.py:51\nmsgid \"Kratovo\"\nmsgstr \"Kratovo\"\n\n#: mk/mk_choices.py:52\nmsgid \"Kriva Palanka\"\nmsgstr \"Kriva Palanka\"\n\n#: mk/mk_choices.py:53\nmsgid \"Krivogaštani\"\nmsgstr \"Krivogaštani\"\n\n#: mk/mk_choices.py:54\nmsgid \"Kruševo\"\nmsgstr \"Kruševo\"\n\n#: mk/mk_choices.py:55\nmsgid \"Kumanovo\"\nmsgstr \"Kumanovo\"\n\n#: mk/mk_choices.py:56\nmsgid \"Lipkovo\"\nmsgstr \"Lipkovo\"\n\n#: mk/mk_choices.py:57\nmsgid \"Lozovo\"\nmsgstr \"Lozovo\"\n\n#: mk/mk_choices.py:58\nmsgid \"Mavrovo i Rostuša\"\nmsgstr \"Mavrovo i Rostuša\"\n\n#: mk/mk_choices.py:59\nmsgid \"Makedonska Kamenica\"\nmsgstr \"Makedonska Kamenica\"\n\n#: mk/mk_choices.py:60\nmsgid \"Makedonski Brod\"\nmsgstr \"Makedonski Brod\"\n\n#: mk/mk_choices.py:61\nmsgid \"Mogila\"\nmsgstr \"Mogila\"\n\n#: mk/mk_choices.py:62\nmsgid \"Negotino\"\nmsgstr \"Negotino\"\n\n#: mk/mk_choices.py:63\nmsgid \"Novaci\"\nmsgstr \"Novaci\"\n\n#: mk/mk_choices.py:64\nmsgid \"Novo Selo\"\nmsgstr \"Novo Selo\"\n\n#: mk/mk_choices.py:65\nmsgid \"Oslomej\"\nmsgstr \"Oslomej\"\n\n#: mk/mk_choices.py:66\nmsgid \"Ohrid\"\nmsgstr \"Ohrid\"\n\n#: mk/mk_choices.py:67\nmsgid \"Petrovec\"\nmsgstr \"Petrovec\"\n\n#: mk/mk_choices.py:68\nmsgid \"Pehčevo\"\nmsgstr \"Pehčevo\"\n\n#: mk/mk_choices.py:69\nmsgid \"Plasnica\"\nmsgstr \"Plasnica\"\n\n#: mk/mk_choices.py:70\nmsgid \"Prilep\"\nmsgstr \"Prilep\"\n\n#: mk/mk_choices.py:71\nmsgid \"Probištip\"\nmsgstr \"Probištip\"\n\n#: mk/mk_choices.py:72\nmsgid \"Radoviš\"\nmsgstr \"Radoviš\"\n\n#: mk/mk_choices.py:73\nmsgid \"Rankovce\"\nmsgstr \"Rankovce\"\n\n#: mk/mk_choices.py:74\nmsgid \"Resen\"\nmsgstr \"Resen\"\n\n#: mk/mk_choices.py:75\nmsgid \"Rosoman\"\nmsgstr \"Rosoman\"\n\n#: mk/mk_choices.py:76\nmsgid \"Saraj\"\nmsgstr \"Saraj\"\n\n#: mk/mk_choices.py:77\nmsgid \"Sveti Nikole\"\nmsgstr \"Sveti Nikole\"\n\n#: mk/mk_choices.py:78\nmsgid \"Sopište\"\nmsgstr \"Sopište\"\n\n#: mk/mk_choices.py:79\nmsgid \"Star Dojran\"\nmsgstr \"Star Dojran\"\n\n#: mk/mk_choices.py:80\nmsgid \"Staro Nagoričane\"\nmsgstr \"Staro Nagoričane\"\n\n#: mk/mk_choices.py:81\nmsgid \"Struga\"\nmsgstr \"Struga\"\n\n#: mk/mk_choices.py:82\nmsgid \"Strumica\"\nmsgstr \"Strumica\"\n\n#: mk/mk_choices.py:83\nmsgid \"Studeničani\"\nmsgstr \"Studeničani\"\n\n#: mk/mk_choices.py:84\nmsgid \"Tearce\"\nmsgstr \"Tearce\"\n\n#: mk/mk_choices.py:85\nmsgid \"Tetovo\"\nmsgstr \"Tetovo\"\n\n#: mk/mk_choices.py:86\nmsgid \"Centar\"\nmsgstr \"Centar\"\n\n#: mk/mk_choices.py:87\nmsgid \"Centar-Župa\"\nmsgstr \"Centar-Župa\"\n\n#: mk/mk_choices.py:88\nmsgid \"Čair\"\nmsgstr \"Čair\"\n\n#: mk/mk_choices.py:89\nmsgid \"Čaška\"\nmsgstr \"Čaška\"\n\n#: mk/mk_choices.py:90\nmsgid \"Češinovo-Obleševo\"\nmsgstr \"Češinovo-Obleševo\"\n\n#: mk/mk_choices.py:91\nmsgid \"Čučer-Sandevo\"\nmsgstr \"Čučer-Sandevo\"\n\n#: mk/mk_choices.py:92\nmsgid \"Štip\"\nmsgstr \"Štip\"\n\n#: mk/mk_choices.py:93\nmsgid \"Šuto Orizari\"\nmsgstr \"Šuto Orizari\"\n\n#: mk/models.py:11\nmsgid \"Macedonian identity card number\"\nmsgstr \"Cárta uimhir aitheantais Macadóinis\"\n\n#: mk/models.py:25\nmsgid \"A Macedonian municipality (2 character code)\"\nmsgstr \"A bhardas Macadóinis (2 cód carachtar)\"\n\n#: mk/models.py:35\nmsgid \"Unique master citizen number (13 digits)\"\nmsgstr \"Líon saoránach uathúil máistir (13 dhigit)\"\n\n#: mx/forms.py:67\nmsgid \"Enter a valid zip code in the format XXXXX.\"\nmsgstr \"Cuir isteach cód zip bailí sa XXXXX bhformáid.\"\n\n#: mx/forms.py:110\nmsgid \"Enter a valid RFC.\"\nmsgstr \"Iontráil RFC bailí.\"\n\n#: mx/forms.py:111\nmsgid \"Invalid checksum for RFC.\"\nmsgstr \"Sheiceála neamhbhailí do RFC.\"\n\n#: mx/forms.py:191\nmsgid \"Enter a valid CURP.\"\nmsgstr \"Iontráil CURP bailí.\"\n\n#: mx/forms.py:192\nmsgid \"Invalid checksum for CURP.\"\nmsgstr \"Neamhbhailí sheiceála do CURP.\"\n\n#: mx/models.py:14\nmsgid \"Mexico state (three uppercase letters)\"\nmsgstr \"Meicsiceo stáit (trí litreacha cás uachtair)\"\n\n#: mx/models.py:27\nmsgid \"Mexico zip code\"\nmsgstr \"Cód zip Meicsiceo\"\n\n#: mx/models.py:44\nmsgid \"Mexican RFC\"\nmsgstr \"Mheicsiceo RFC\"\n\n#: mx/models.py:61\nmsgid \"Mexican CURP\"\nmsgstr \"Mheicsiceo CURP\"\n\n#: mx/mx_states.py:14\nmsgid \"Aguascalientes\"\nmsgstr \"Aguascalientes\"\n\n#: mx/mx_states.py:15\nmsgid \"Baja California\"\nmsgstr \"Baja California\"\n\n#: mx/mx_states.py:16\nmsgid \"Baja California Sur\"\nmsgstr \"Baja California an Ridire\"\n\n#: mx/mx_states.py:17\nmsgid \"Campeche\"\nmsgstr \"Campeche\"\n\n#: mx/mx_states.py:18\nmsgid \"Chihuahua\"\nmsgstr \"Chihuahua\"\n\n#: mx/mx_states.py:19\nmsgid \"Chiapas\"\nmsgstr \"Chiapas\"\n\n#: mx/mx_states.py:20\nmsgid \"Coahuila\"\nmsgstr \"Coahuila\"\n\n#: mx/mx_states.py:21\nmsgid \"Colima\"\nmsgstr \"Colima\"\n\n#: mx/mx_states.py:22\nmsgid \"Distrito Federal\"\nmsgstr \"Distrito Feidearálach\"\n\n#: mx/mx_states.py:23\nmsgid \"Durango\"\nmsgstr \"Durango\"\n\n#: mx/mx_states.py:24\nmsgid \"Guerrero\"\nmsgstr \"Guerrero\"\n\n#: mx/mx_states.py:25\nmsgid \"Guanajuato\"\nmsgstr \"Guanajuato\"\n\n#: mx/mx_states.py:26\nmsgid \"Hidalgo\"\nmsgstr \"Hidalgo\"\n\n#: mx/mx_states.py:27\nmsgid \"Jalisco\"\nmsgstr \"Jalisco\"\n\n#: mx/mx_states.py:28\nmsgid \"Estado de México\"\nmsgstr \"Estado de México\"\n\n#: mx/mx_states.py:29\nmsgid \"Michoacán\"\nmsgstr \"Michoacán\"\n\n#: mx/mx_states.py:30\nmsgid \"Morelos\"\nmsgstr \"Morelos\"\n\n#: mx/mx_states.py:31\nmsgid \"Nayarit\"\nmsgstr \"Nayarit\"\n\n#: mx/mx_states.py:32\nmsgid \"Nuevo León\"\nmsgstr \"Nuevo León\"\n\n#: mx/mx_states.py:33\nmsgid \"Oaxaca\"\nmsgstr \"Oaxaca\"\n\n#: mx/mx_states.py:34\nmsgid \"Puebla\"\nmsgstr \"Puebla\"\n\n#: mx/mx_states.py:35\nmsgid \"Querétaro\"\nmsgstr \"Querétaro\"\n\n#: mx/mx_states.py:36\nmsgid \"Quintana Roo\"\nmsgstr \"Quintana Rubha\"\n\n#: mx/mx_states.py:37\nmsgid \"Sinaloa\"\nmsgstr \"Sinaloa\"\n\n#: mx/mx_states.py:38\nmsgid \"San Luis Potosí\"\nmsgstr \"San Luis Potosí\"\n\n#: mx/mx_states.py:39\nmsgid \"Sonora\"\nmsgstr \"Sonora\"\n\n#: mx/mx_states.py:40\nmsgid \"Tabasco\"\nmsgstr \"Tabasco\"\n\n#: mx/mx_states.py:41\nmsgid \"Tamaulipas\"\nmsgstr \"Tamaulipas\"\n\n#: mx/mx_states.py:42\nmsgid \"Tlaxcala\"\nmsgstr \"Tlaxcala\"\n\n#: mx/mx_states.py:43\nmsgid \"Veracruz\"\nmsgstr \"Veracruz\"\n\n#: mx/mx_states.py:44\nmsgid \"Yucatán\"\nmsgstr \"Yucatán\"\n\n#: mx/mx_states.py:45\nmsgid \"Zacatecas\"\nmsgstr \"Zacatecas\"\n\n#: nl/forms.py:26\nmsgid \"Enter a valid postal code\"\nmsgstr \"Iontráil cód poist bailí\"\n\n#: nl/forms.py:82\nmsgid \"Enter a valid SoFi number\"\nmsgstr \"Iontráil uimhir SoFi bailí\"\n\n#: nl/nl_provinces.py:4\nmsgid \"Drenthe\"\nmsgstr \"Drenthe\"\n\n#: nl/nl_provinces.py:5\nmsgid \"Flevoland\"\nmsgstr \"Flevoland\"\n\n#: nl/nl_provinces.py:6\nmsgid \"Friesland\"\nmsgstr \"Friesland\"\n\n#: nl/nl_provinces.py:7\nmsgid \"Gelderland\"\nmsgstr \"Gelderland\"\n\n#: nl/nl_provinces.py:8\nmsgid \"Groningen\"\nmsgstr \"Groningen\"\n\n#: nl/nl_provinces.py:10\nmsgid \"Noord-Brabant\"\nmsgstr \"Noord-Brabant\"\n\n#: nl/nl_provinces.py:11\nmsgid \"Noord-Holland\"\nmsgstr \"Noord-Holland\"\n\n#: nl/nl_provinces.py:12\nmsgid \"Overijssel\"\nmsgstr \"Overijssel\"\n\n#: nl/nl_provinces.py:13\nmsgid \"Utrecht\"\nmsgstr \"Utrecht\"\n\n#: nl/nl_provinces.py:14\nmsgid \"Zeeland\"\nmsgstr \"Zeeland\"\n\n#: nl/nl_provinces.py:15\nmsgid \"Zuid-Holland\"\nmsgstr \"Zuid-Holland\"\n\n#: no/forms.py:39\nmsgid \"Enter a valid Norwegian social security number.\"\nmsgstr \"Cuir isteach uimhir leasa na hIorua sóisialta bailí.\"\n\n#: pe/forms.py:28\nmsgid \"This field requires 8 digits.\"\nmsgstr \"Éilíonn an réimse 8 digití.\"\n\n#: pe/forms.py:56\nmsgid \"This field requires 11 digits.\"\nmsgstr \"Éilíonn an réimse seo 11 digití.\"\n\n#: pl/forms.py:42\nmsgid \"National Identification Number consists of 11 digits.\"\nmsgstr \"Náisiúnta Uimhir Aitheantais comhdhéanta de 11 digití.\"\n\n#: pl/forms.py:43\nmsgid \"Wrong checksum for the National Identification Number.\"\nmsgstr \"Sheiceála mícheart ar an Uimhir Aitheantais Náisiúnta.\"\n\n#: pl/forms.py:79\nmsgid \"National ID Card Number consists of 3 letters and 6 digits.\"\nmsgstr \"\"\n\"Is éard atá Náisiúnta Uimhir an Chárta Aitheantais de 3 litreacha agus \"\n\"digití 6.\"\n\n#: pl/forms.py:80\nmsgid \"Wrong checksum for the National ID Card Number.\"\nmsgstr \"Sheiceála mícheart le haghaidh an Chárta ID Náisiúnta.\"\n\n#: pl/forms.py:131\nmsgid \"\"\n\"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or \"\n\"XXXXXXXXXX.\"\nmsgstr \"\"\n\"Cuir isteach ar réimse uimhir cánach (NIP) i bhformáid XXX-XXX-XX-XX, XXX-\"\n\"XXX-XX XX-nó XXXXXXXXXX.\"\n\n#: pl/forms.py:132\nmsgid \"Wrong checksum for the Tax Number (NIP).\"\nmsgstr \"Sheiceála mícheart ar an Uimhir Cánach (NIP).\"\n\n#: pl/forms.py:171\nmsgid \"National Business Register Number (REGON) consists of 9 or 14 digits.\"\nmsgstr \"Uimhir Náisiúnta Clár Gnó (REGON) comhdhéanta de 9 nó 14 digití.\"\n\n#: pl/forms.py:172\nmsgid \"Wrong checksum for the National Business Register Number (REGON).\"\nmsgstr \"Sheiceála Mícheart do Uimhir Ghnó Clár Náisiúnta (REGON).\"\n\n#: pl/forms.py:212\nmsgid \"Enter a postal code in the format XX-XXX.\"\nmsgstr \"Iontráil cód poist i bhformáid XX-XXX.\"\n\n#: pl/pl_voivodeships.py:8\nmsgid \"Lower Silesia\"\nmsgstr \"Silesia Íochtarach\"\n\n#: pl/pl_voivodeships.py:9\nmsgid \"Kuyavia-Pomerania\"\nmsgstr \"Kuyavia-Pomerania\"\n\n#: pl/pl_voivodeships.py:10\nmsgid \"Lublin\"\nmsgstr \"Lublin\"\n\n#: pl/pl_voivodeships.py:11\nmsgid \"Lubusz\"\nmsgstr \"Lubusz\"\n\n#: pl/pl_voivodeships.py:12\nmsgid \"Lodz\"\nmsgstr \"Lodz\"\n\n#: pl/pl_voivodeships.py:13\nmsgid \"Lesser Poland\"\nmsgstr \"An Pholainn lú \"\n\n#: pl/pl_voivodeships.py:14\nmsgid \"Masovia\"\nmsgstr \"Masovia\"\n\n#: pl/pl_voivodeships.py:15\nmsgid \"Opole\"\nmsgstr \"Opole\"\n\n#: pl/pl_voivodeships.py:16\nmsgid \"Subcarpatia\"\nmsgstr \"Subcarpatia\"\n\n#: pl/pl_voivodeships.py:17\nmsgid \"Podlasie\"\nmsgstr \"Podlasie\"\n\n#: pl/pl_voivodeships.py:18\nmsgid \"Pomerania\"\nmsgstr \"Pomerania\"\n\n#: pl/pl_voivodeships.py:19\nmsgid \"Silesia\"\nmsgstr \"Silesia\"\n\n#: pl/pl_voivodeships.py:20\nmsgid \"Swietokrzyskie\"\nmsgstr \"Swietokrzyskie\"\n\n#: pl/pl_voivodeships.py:21\nmsgid \"Warmia-Masuria\"\nmsgstr \"Warmia-Masuria\"\n\n#: pl/pl_voivodeships.py:22\nmsgid \"Greater Poland\"\nmsgstr \"An Pholainn Mór\"\n\n#: pl/pl_voivodeships.py:23\nmsgid \"West Pomerania\"\nmsgstr \"Pomerania Thiar\"\n\n#: pt/forms.py:19\nmsgid \"Enter a zip code in the format XXXX-XXX.\"\nmsgstr \"Iontráil zip-cód i bhformáid XXXX-XXX.\"\n\n#: pt/forms.py:39\nmsgid \"Phone numbers must have 9 digits, or start by + or 00.\"\nmsgstr \"Ní mór líon Fón tá 9 dhigit, nó tús le + nó 00.\"\n\n#: ro/forms.py:22\nmsgid \"Enter a valid CIF.\"\nmsgstr \"Iontráil CIF bailí.\"\n\n#: ro/forms.py:59\nmsgid \"Enter a valid CNP.\"\nmsgstr \"Iontráil CNP bailí.\"\n\n#: ro/forms.py:143\nmsgid \"Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format\"\nmsgstr \"Iontráil IBAN bailí i bhformáid ROXX-XXXX-XXXX-XXXX-XXXX-XXXX\"\n\n#: ro/forms.py:175\nmsgid \"Phone numbers must be in XXXX-XXXXXX format.\"\nmsgstr \"Ní mór uimhreacha teileafóin a chur i bhformáid XXXX-XXXXXX.\"\n\n#: ro/forms.py:200\nmsgid \"Enter a valid postal code in the format XXXXXX\"\nmsgstr \"Iontráil cód poist bailí i bhformáid XXXXXX\"\n\n#: ru/forms.py:37\nmsgid \"Enter a postal code in the format XXXXXX.\"\nmsgstr \"Cuir isteach postcód san fhormáid XXXXXX.\"\n\n#: ru/forms.py:50\nmsgid \"Enter a passport number in the format XXXX XXXXXX.\"\nmsgstr \"Iontráil uimhir phas san fhormáid XXXX XXXXXX.\"\n\n#: ru/forms.py:63\nmsgid \"Enter a passport number in the format XX XXXXXXX.\"\nmsgstr \"Iontráil uimhir phas san fhormáid XX XXXXXXX.\"\n\n#: ru/ru_regions.py:10\nmsgid \"Central Federal County\"\nmsgstr \"Contae Feidearálach Lár\"\n\n#: ru/ru_regions.py:11\nmsgid \"South Federal County\"\nmsgstr \"Contae Feidearálach Deisceart\"\n\n#: ru/ru_regions.py:12\nmsgid \"North-West Federal County\"\nmsgstr \"Contae Feidearálach Iar-Tuaisceart\"\n\n#: ru/ru_regions.py:13\nmsgid \"Far-East Federal County\"\nmsgstr \"Contae Feidearálach Fada Oirthear\"\n\n#: ru/ru_regions.py:14\nmsgid \"Siberian Federal County\"\nmsgstr \"Contae Feidearálach Siberian\"\n\n#: ru/ru_regions.py:15\nmsgid \"Ural Federal County\"\nmsgstr \"Contae Feidearálach Ural\"\n\n#: ru/ru_regions.py:16\nmsgid \"Privolzhsky Federal County\"\nmsgstr \"Contae Feidearálach Privolzhsky\"\n\n#: ru/ru_regions.py:17\nmsgid \"North-Caucasian Federal County\"\nmsgstr \"Contae Feidearálach North-Caucasian\"\n\n#: ru/ru_regions.py:21\nmsgid \"Moskva\"\nmsgstr \"Moskva\"\n\n#: ru/ru_regions.py:22\nmsgid \"Saint-Peterburg\"\nmsgstr \"Saint-Peterburg\"\n\n#: ru/ru_regions.py:23\nmsgid \"Moskovskaya oblast'\"\nmsgstr \"Moskovskaya oblast'\"\n\n#: ru/ru_regions.py:24\nmsgid \"Adygeya, Respublika\"\nmsgstr \"Adygeya, Respublika\"\n\n#: ru/ru_regions.py:25\nmsgid \"Bashkortostan, Respublika\"\nmsgstr \"Bashkortostan, Respublika\"\n\n#: ru/ru_regions.py:26\nmsgid \"Buryatia, Respublika\"\nmsgstr \"Buryatia, Respublika\"\n\n#: ru/ru_regions.py:27\nmsgid \"Altay, Respublika\"\nmsgstr \"Altay, Respublika\"\n\n#: ru/ru_regions.py:28\nmsgid \"Dagestan, Respublika\"\nmsgstr \"Dagestan, Respublika\"\n\n#: ru/ru_regions.py:29\nmsgid \"Ingushskaya Respublika\"\nmsgstr \"Ingushskaya Respublika\"\n\n#: ru/ru_regions.py:30\nmsgid \"Kabardino-Balkarskaya Respublika\"\nmsgstr \"Kabardino-Balkarskaya Respublika\"\n\n#: ru/ru_regions.py:31\nmsgid \"Kalmykia, Respublika\"\nmsgstr \"Kalmykia, Respublika\"\n\n#: ru/ru_regions.py:32\nmsgid \"Karachaevo-Cherkesskaya Respublika\"\nmsgstr \"Karachaevo-Cherkesskaya Respublika\"\n\n#: ru/ru_regions.py:33\nmsgid \"Karelia, Respublika\"\nmsgstr \"Karelia, Respublika\"\n\n#: ru/ru_regions.py:34\nmsgid \"Komi, Respublika\"\nmsgstr \"Komi, Respublika\"\n\n#: ru/ru_regions.py:35\nmsgid \"Mariy Ehl, Respublika\"\nmsgstr \"Mariy Ehl, Respublika\"\n\n#: ru/ru_regions.py:36\nmsgid \"Mordovia, Respublika\"\nmsgstr \"Mordovia, Respublika\"\n\n#: ru/ru_regions.py:37\nmsgid \"Sakha, Respublika (Yakutiya)\"\nmsgstr \"Sakha, Respublika (Yakutiya)\"\n\n#: ru/ru_regions.py:38\nmsgid \"Severnaya Osetia, Respublika (Alania)\"\nmsgstr \"Severnaya Osetia, Respublika (Alania)\"\n\n#: ru/ru_regions.py:39\nmsgid \"Tatarstan, Respublika\"\nmsgstr \"Tatarstan, Respublika\"\n\n#: ru/ru_regions.py:40\nmsgid \"Tyva, Respublika (Tuva)\"\nmsgstr \"Tyva, Respublika (Tuva)\"\n\n#: ru/ru_regions.py:41\nmsgid \"Udmurtskaya Respublika\"\nmsgstr \"Udmurtskaya Respublika\"\n\n#: ru/ru_regions.py:42\nmsgid \"Khakassiya, Respublika\"\nmsgstr \"Khakassiya, Respublika\"\n\n#: ru/ru_regions.py:43\nmsgid \"Chechenskaya Respublika\"\nmsgstr \"Chechenskaya Respublika\"\n\n#: ru/ru_regions.py:44\nmsgid \"Chuvashskaya Respublika\"\nmsgstr \"Chuvashskaya Respublika\"\n\n#: ru/ru_regions.py:45\nmsgid \"Altayskiy Kray\"\nmsgstr \"Altayskiy Kray\"\n\n#: ru/ru_regions.py:46\nmsgid \"Zabaykalskiy Kray\"\nmsgstr \"Zabaykalskiy Kray\"\n\n#: ru/ru_regions.py:47\nmsgid \"Kamchatskiy Kray\"\nmsgstr \"Kamchatskiy Kray\"\n\n#: ru/ru_regions.py:48\nmsgid \"Krasnodarskiy Kray\"\nmsgstr \"Krasnodarskiy Kray\"\n\n#: ru/ru_regions.py:49\nmsgid \"Krasnoyarskiy Kray\"\nmsgstr \"Krasnoyarskiy Kray\"\n\n#: ru/ru_regions.py:50\nmsgid \"Permskiy Kray\"\nmsgstr \"Permskiy Kray\"\n\n#: ru/ru_regions.py:51\nmsgid \"Primorskiy Kray\"\nmsgstr \"Primorskiy Kray\"\n\n#: ru/ru_regions.py:52\nmsgid \"Stavropol'siyy Kray\"\nmsgstr \"Stavropol'siyy Kray\"\n\n#: ru/ru_regions.py:53\nmsgid \"Khabarovskiy Kray\"\nmsgstr \"Khabarovskiy Kray\"\n\n#: ru/ru_regions.py:54\nmsgid \"Amurskaya oblast'\"\nmsgstr \"Amurskaya oblast'\"\n\n#: ru/ru_regions.py:55\nmsgid \"Arkhangel'skaya oblast'\"\nmsgstr \"Arkhangel'skaya oblast'\"\n\n#: ru/ru_regions.py:56\nmsgid \"Astrakhanskaya oblast'\"\nmsgstr \"Astrakhanskaya oblast'\"\n\n#: ru/ru_regions.py:57\nmsgid \"Belgorodskaya oblast'\"\nmsgstr \"Belgorodskaya oblast'\"\n\n#: ru/ru_regions.py:58\nmsgid \"Bryanskaya oblast'\"\nmsgstr \"Bryanskaya oblast'\"\n\n#: ru/ru_regions.py:59\nmsgid \"Vladimirskaya oblast'\"\nmsgstr \"Vladimirskaya oblast'\"\n\n#: ru/ru_regions.py:60\nmsgid \"Volgogradskaya oblast'\"\nmsgstr \"Volgogradskaya oblast'\"\n\n#: ru/ru_regions.py:61\nmsgid \"Vologodskaya oblast'\"\nmsgstr \"Vologodskaya oblast'\"\n\n#: ru/ru_regions.py:62\nmsgid \"Voronezhskaya oblast'\"\nmsgstr \"Voronezhskaya oblast'\"\n\n#: ru/ru_regions.py:63\nmsgid \"Ivanovskaya oblast'\"\nmsgstr \"Ivanovskaya oblast'\"\n\n#: ru/ru_regions.py:64\nmsgid \"Irkutskaya oblast'\"\nmsgstr \"Irkutskaya oblast'\"\n\n#: ru/ru_regions.py:65\nmsgid \"Kaliningradskaya oblast'\"\nmsgstr \"Kaliningradskaya oblast'\"\n\n#: ru/ru_regions.py:66\nmsgid \"Kaluzhskaya oblast'\"\nmsgstr \"Kaluzhskaya oblast'\"\n\n#: ru/ru_regions.py:67\nmsgid \"Kemerovskaya oblast'\"\nmsgstr \"Kemerovskaya oblast'\"\n\n#: ru/ru_regions.py:68\nmsgid \"Kirovskaya oblast'\"\nmsgstr \"Kirovskaya oblast'\"\n\n#: ru/ru_regions.py:69\nmsgid \"Kostromskaya oblast'\"\nmsgstr \"Kostromskaya oblast'\"\n\n#: ru/ru_regions.py:70\nmsgid \"Kurganskaya oblast'\"\nmsgstr \"Kurganskaya oblast'\"\n\n#: ru/ru_regions.py:71\nmsgid \"Kurskaya oblast'\"\nmsgstr \"Kurskaya oblast'\"\n\n#: ru/ru_regions.py:72\nmsgid \"Leningradskaya oblast'\"\nmsgstr \"Leningradskaya oblast'\"\n\n#: ru/ru_regions.py:73\nmsgid \"Lipeckaya oblast'\"\nmsgstr \"Lipeckaya oblast'\"\n\n#: ru/ru_regions.py:74\nmsgid \"Magadanskaya oblast'\"\nmsgstr \"Magadanskaya oblast'\"\n\n#: ru/ru_regions.py:75\nmsgid \"Murmanskaya oblast'\"\nmsgstr \"Murmanskaya oblast'\"\n\n#: ru/ru_regions.py:76\nmsgid \"Nizhegorodskaja oblast'\"\nmsgstr \"Nizhegorodskaja oblast'\"\n\n#: ru/ru_regions.py:77\nmsgid \"Novgorodskaya oblast'\"\nmsgstr \"Novgorodskaya oblast'\"\n\n#: ru/ru_regions.py:78\nmsgid \"Novosibirskaya oblast'\"\nmsgstr \"Novosibirskaya oblast'\"\n\n#: ru/ru_regions.py:79\nmsgid \"Omskaya oblast'\"\nmsgstr \"Omskaya oblast'\"\n\n#: ru/ru_regions.py:80\nmsgid \"Orenburgskaya oblast'\"\nmsgstr \"Orenburgskaya oblast'\"\n\n#: ru/ru_regions.py:81\nmsgid \"Orlovskaya oblast'\"\nmsgstr \"Orlovskaya oblast'\"\n\n#: ru/ru_regions.py:82\nmsgid \"Penzenskaya oblast'\"\nmsgstr \"Penzenskaya oblast'\"\n\n#: ru/ru_regions.py:83\nmsgid \"Pskovskaya oblast'\"\nmsgstr \"Pskovskaya oblast'\"\n\n#: ru/ru_regions.py:84\nmsgid \"Rostovskaya oblast'\"\nmsgstr \"Rostovskaya oblast'\"\n\n#: ru/ru_regions.py:85\nmsgid \"Rjazanskaya oblast'\"\nmsgstr \"Rjazanskaya oblast'\"\n\n#: ru/ru_regions.py:86\nmsgid \"Samarskaya oblast'\"\nmsgstr \"Samarskaya oblast'\"\n\n#: ru/ru_regions.py:87\nmsgid \"Saratovskaya oblast'\"\nmsgstr \"Saratovskaya oblast'\"\n\n#: ru/ru_regions.py:88\nmsgid \"Sakhalinskaya oblast'\"\nmsgstr \"Sakhalinskaya oblast'\"\n\n#: ru/ru_regions.py:89\nmsgid \"Sverdlovskaya oblast'\"\nmsgstr \"Sverdlovskaya oblast'\"\n\n#: ru/ru_regions.py:90\nmsgid \"Smolenskaya oblast'\"\nmsgstr \"Smolenskaya oblast'\"\n\n#: ru/ru_regions.py:91\nmsgid \"Tambovskaya oblast'\"\nmsgstr \"Tambovskaya oblast'\"\n\n#: ru/ru_regions.py:92\nmsgid \"Tverskaya oblast'\"\nmsgstr \"Tverskaya oblast'\"\n\n#: ru/ru_regions.py:93\nmsgid \"Tomskaya oblast'\"\nmsgstr \"Tomskaya oblast'\"\n\n#: ru/ru_regions.py:94\nmsgid \"Tul'skaya oblast'\"\nmsgstr \"Tul'skaya oblast'\"\n\n#: ru/ru_regions.py:95\nmsgid \"Tyumenskaya oblast'\"\nmsgstr \"Tyumenskaya oblast'\"\n\n#: ru/ru_regions.py:96\nmsgid \"Ul'ianovskaya oblast'\"\nmsgstr \"Ul'ianovskaya oblast'\"\n\n#: ru/ru_regions.py:97\nmsgid \"Chelyabinskaya oblast'\"\nmsgstr \"Chelyabinskaya oblast'\"\n\n#: ru/ru_regions.py:98\nmsgid \"Yaroslavskaya oblast'\"\nmsgstr \"Yaroslavskaya oblast'\"\n\n#: ru/ru_regions.py:99\nmsgid \"Evreyskaya avtonomnaja oblast'\"\nmsgstr \"Evreyskaya avtonomnaja oblast'\"\n\n#: ru/ru_regions.py:100\nmsgid \"Neneckiy autonomnyy okrug\"\nmsgstr \"Neneckiy autonomnyy okrug\"\n\n#: ru/ru_regions.py:101\nmsgid \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\nmsgstr \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\n\n#: ru/ru_regions.py:102\nmsgid \"Chukotskiy avtonomnyy okrug\"\nmsgstr \"Chukotskiy avtonomnyy okrug\"\n\n#: ru/ru_regions.py:103\nmsgid \"Yamalo-Neneckiy avtonomnyy okrug\"\nmsgstr \"Yamalo-Neneckiy avtonomnyy okrug\"\n\n#: se/forms.py:54\nmsgid \"Enter a valid Swedish organisation number.\"\nmsgstr \"Cuir isteach uimhir eagraíochta bailí Sualainnis.\"\n\n#: se/forms.py:111\nmsgid \"Enter a valid Swedish personal identity number.\"\nmsgstr \"Iontráil uimhir aitheantais bailí Sualainnis pearsanta.\"\n\n#: se/forms.py:112\nmsgid \"Co-ordination numbers are not allowed.\"\nmsgstr \"Ní líon Comhordaithe Co-cheadaítear.\"\n\n#: se/forms.py:154\nmsgid \"Enter a Swedish postal code in the format XXXXX.\"\nmsgstr \"Iontráil cód poist na Sualainne i bhformáid XXXXX.\"\n\n#: se/se_counties.py:16\nmsgid \"Stockholm\"\nmsgstr \"Stócólm\"\n\n#: se/se_counties.py:17\nmsgid \"Västerbotten\"\nmsgstr \"Västerbotten\"\n\n#: se/se_counties.py:18\nmsgid \"Norrbotten\"\nmsgstr \"Norrbotten\"\n\n#: se/se_counties.py:19\nmsgid \"Uppsala\"\nmsgstr \"Uppsala\"\n\n#: se/se_counties.py:20\nmsgid \"Södermanland\"\nmsgstr \"Södermanland\"\n\n#: se/se_counties.py:21\nmsgid \"Östergötland\"\nmsgstr \"Östergötland\"\n\n#: se/se_counties.py:22\nmsgid \"Jönköping\"\nmsgstr \"Jönköping\"\n\n#: se/se_counties.py:23\nmsgid \"Kronoberg\"\nmsgstr \"Kronoberg\"\n\n#: se/se_counties.py:24\nmsgid \"Kalmar\"\nmsgstr \"Kalmar\"\n\n#: se/se_counties.py:25\nmsgid \"Gotland\"\nmsgstr \"Gotland\"\n\n#: se/se_counties.py:26\nmsgid \"Blekinge\"\nmsgstr \"Blekinge\"\n\n#: se/se_counties.py:27\nmsgid \"Skåne\"\nmsgstr \"Skåne\"\n\n#: se/se_counties.py:28\nmsgid \"Halland\"\nmsgstr \"Halland\"\n\n#: se/se_counties.py:29\nmsgid \"Västra Götaland\"\nmsgstr \"Västra Götaland\"\n\n#: se/se_counties.py:30\nmsgid \"Värmland\"\nmsgstr \"Värmland\"\n\n#: se/se_counties.py:31\nmsgid \"Örebro\"\nmsgstr \"Örebro\"\n\n#: se/se_counties.py:32\nmsgid \"Västmanland\"\nmsgstr \"Västmanland\"\n\n#: se/se_counties.py:33\nmsgid \"Dalarna\"\nmsgstr \"Dalarna\"\n\n#: se/se_counties.py:34\nmsgid \"Gävleborg\"\nmsgstr \"Gävleborg\"\n\n#: se/se_counties.py:35\nmsgid \"Västernorrland\"\nmsgstr \"Västernorrland\"\n\n#: se/se_counties.py:36\nmsgid \"Jämtland\"\nmsgstr \"Jämtland\"\n\n#: si/forms.py:25\nmsgid \"The first 7 digits of the EMSO must represent a valid past date.\"\nmsgstr \"\"\n\"Ní mór don chéad 7 dhigit de na EMSO ionadaíocht a dhéanamh ar dháta bailí \"\n\"anuas.\"\n\n#: si/forms.py:26\nmsgid \"The EMSO is not valid.\"\nmsgstr \"Níl an EMSO bailí.\"\n\n#: si/forms.py:86\nmsgid \"Enter a valid tax number in form SIXXXXXXXX\"\nmsgstr \"Iontráil uimhir cánach bailí i bhfoirm SIXXXXXXXX\"\n\n#: si/forms.py:151\nmsgid \"Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.\"\nmsgstr \"Cuir isteach uimhir theileafóin i bhfoirm 386 XXXXXXXX nó 0XXXXXXXX.\"\n\n#: sk/sk_districts.py:8\nmsgid \"Banska Bystrica\"\nmsgstr \"Banska Bystrica\"\n\n#: sk/sk_districts.py:9\nmsgid \"Banska Stiavnica\"\nmsgstr \"Banska Stiavnica\"\n\n#: sk/sk_districts.py:10\nmsgid \"Bardejov\"\nmsgstr \"Bardejov\"\n\n#: sk/sk_districts.py:11\nmsgid \"Banovce nad Bebravou\"\nmsgstr \"Banovce nad Bebravou\"\n\n#: sk/sk_districts.py:12\nmsgid \"Brezno\"\nmsgstr \"Brezno\"\n\n#: sk/sk_districts.py:13\nmsgid \"Bratislava I\"\nmsgstr \"An Bhratasláiv I\"\n\n#: sk/sk_districts.py:14\nmsgid \"Bratislava II\"\nmsgstr \"An Bhratasláiv II\"\n\n#: sk/sk_districts.py:15\nmsgid \"Bratislava III\"\nmsgstr \"An Bhratasláiv III\"\n\n#: sk/sk_districts.py:16\nmsgid \"Bratislava IV\"\nmsgstr \"An Bhratasláiv IV\"\n\n#: sk/sk_districts.py:17\nmsgid \"Bratislava V\"\nmsgstr \"An Bhratasláiv V\"\n\n#: sk/sk_districts.py:18\nmsgid \"Bytca\"\nmsgstr \"Bytca\"\n\n#: sk/sk_districts.py:19\nmsgid \"Cadca\"\nmsgstr \"Cadca\"\n\n#: sk/sk_districts.py:20\nmsgid \"Detva\"\nmsgstr \"Detva\"\n\n#: sk/sk_districts.py:21\nmsgid \"Dolny Kubin\"\nmsgstr \"Dolny Kubin\"\n\n#: sk/sk_districts.py:22\nmsgid \"Dunajska Streda\"\nmsgstr \"Dunajska Streda\"\n\n#: sk/sk_districts.py:23\nmsgid \"Galanta\"\nmsgstr \"Galanta\"\n\n#: sk/sk_districts.py:24\nmsgid \"Gelnica\"\nmsgstr \"Gelnica\"\n\n#: sk/sk_districts.py:25\nmsgid \"Hlohovec\"\nmsgstr \"Hlohovec\"\n\n#: sk/sk_districts.py:26\nmsgid \"Humenne\"\nmsgstr \"Humenne\"\n\n#: sk/sk_districts.py:27\nmsgid \"Ilava\"\nmsgstr \"Ilava\"\n\n#: sk/sk_districts.py:28\nmsgid \"Kezmarok\"\nmsgstr \"Kezmarok\"\n\n#: sk/sk_districts.py:29\nmsgid \"Komarno\"\nmsgstr \"Komarno\"\n\n#: sk/sk_districts.py:30\nmsgid \"Kosice I\"\nmsgstr \"Kosice I\"\n\n#: sk/sk_districts.py:31\nmsgid \"Kosice II\"\nmsgstr \"Kosice II\"\n\n#: sk/sk_districts.py:32\nmsgid \"Kosice III\"\nmsgstr \"Kosice III\"\n\n#: sk/sk_districts.py:33\nmsgid \"Kosice IV\"\nmsgstr \"Kosice IV\"\n\n#: sk/sk_districts.py:34\nmsgid \"Kosice - okolie\"\nmsgstr \"Kosice - okolie\"\n\n#: sk/sk_districts.py:35\nmsgid \"Krupina\"\nmsgstr \"Krupina\"\n\n#: sk/sk_districts.py:36\nmsgid \"Kysucke Nove Mesto\"\nmsgstr \"Kysucke Nove mesto\"\n\n#: sk/sk_districts.py:37\nmsgid \"Levice\"\nmsgstr \"Levice\"\n\n#: sk/sk_districts.py:38\nmsgid \"Levoca\"\nmsgstr \"Levoca\"\n\n#: sk/sk_districts.py:39\nmsgid \"Liptovsky Mikulas\"\nmsgstr \"Liptovsky Mikulas\"\n\n#: sk/sk_districts.py:40\nmsgid \"Lucenec\"\nmsgstr \"Lucenec\"\n\n#: sk/sk_districts.py:41\nmsgid \"Malacky\"\nmsgstr \"Malacky\"\n\n#: sk/sk_districts.py:42\nmsgid \"Martin\"\nmsgstr \"Martin\"\n\n#: sk/sk_districts.py:43\nmsgid \"Medzilaborce\"\nmsgstr \"Medzilaborce\"\n\n#: sk/sk_districts.py:44\nmsgid \"Michalovce\"\nmsgstr \"Michalovce\"\n\n#: sk/sk_districts.py:45\nmsgid \"Myjava\"\nmsgstr \"Myjava\"\n\n#: sk/sk_districts.py:46\nmsgid \"Namestovo\"\nmsgstr \"Namestovo\"\n\n#: sk/sk_districts.py:47\nmsgid \"Nitra\"\nmsgstr \"Nitra\"\n\n#: sk/sk_districts.py:48\nmsgid \"Nove Mesto nad Vahom\"\nmsgstr \"Nove mesto nad Vahom\"\n\n#: sk/sk_districts.py:49\nmsgid \"Nove Zamky\"\nmsgstr \"Nove Zamky\"\n\n#: sk/sk_districts.py:50\nmsgid \"Partizanske\"\nmsgstr \"Partizanske\"\n\n#: sk/sk_districts.py:51\nmsgid \"Pezinok\"\nmsgstr \"Pezinok\"\n\n#: sk/sk_districts.py:52\nmsgid \"Piestany\"\nmsgstr \"Piestany\"\n\n#: sk/sk_districts.py:53\nmsgid \"Poltar\"\nmsgstr \"Poltar\"\n\n#: sk/sk_districts.py:54\nmsgid \"Poprad\"\nmsgstr \"Poprad\"\n\n#: sk/sk_districts.py:55\nmsgid \"Povazska Bystrica\"\nmsgstr \"Povazska Bystrica\"\n\n#: sk/sk_districts.py:56\nmsgid \"Presov\"\nmsgstr \"Presov\"\n\n#: sk/sk_districts.py:57\nmsgid \"Prievidza\"\nmsgstr \"Prievidza\"\n\n#: sk/sk_districts.py:58\nmsgid \"Puchov\"\nmsgstr \"Puchov\"\n\n#: sk/sk_districts.py:59\nmsgid \"Revuca\"\nmsgstr \"Revuca\"\n\n#: sk/sk_districts.py:60\nmsgid \"Rimavska Sobota\"\nmsgstr \"Rimavska Sobota\"\n\n#: sk/sk_districts.py:61\nmsgid \"Roznava\"\nmsgstr \"Roznava\"\n\n#: sk/sk_districts.py:62\nmsgid \"Ruzomberok\"\nmsgstr \"Ruzomberok\"\n\n#: sk/sk_districts.py:63\nmsgid \"Sabinov\"\nmsgstr \"Sabinov\"\n\n#: sk/sk_districts.py:64\nmsgid \"Senec\"\nmsgstr \"Senec\"\n\n#: sk/sk_districts.py:65\nmsgid \"Senica\"\nmsgstr \"Senica\"\n\n#: sk/sk_districts.py:66\nmsgid \"Skalica\"\nmsgstr \"Skalica\"\n\n#: sk/sk_districts.py:67\nmsgid \"Snina\"\nmsgstr \"Snina\"\n\n#: sk/sk_districts.py:68\nmsgid \"Sobrance\"\nmsgstr \"Sobrance\"\n\n#: sk/sk_districts.py:69\nmsgid \"Spisska Nova Ves\"\nmsgstr \"Spisska Nova Ves\"\n\n#: sk/sk_districts.py:70\nmsgid \"Stara Lubovna\"\nmsgstr \"Stara Lubovna\"\n\n#: sk/sk_districts.py:71\nmsgid \"Stropkov\"\nmsgstr \"Stropkov\"\n\n#: sk/sk_districts.py:72\nmsgid \"Svidnik\"\nmsgstr \"Svidnik\"\n\n#: sk/sk_districts.py:73\nmsgid \"Sala\"\nmsgstr \"Sala\"\n\n#: sk/sk_districts.py:74\nmsgid \"Topolcany\"\nmsgstr \"Topolcany\"\n\n#: sk/sk_districts.py:75\nmsgid \"Trebisov\"\nmsgstr \"Trebisov\"\n\n#: sk/sk_districts.py:76\nmsgid \"Trencin\"\nmsgstr \"Trencin\"\n\n#: sk/sk_districts.py:77\nmsgid \"Trnava\"\nmsgstr \"Trnava\"\n\n#: sk/sk_districts.py:78\nmsgid \"Turcianske Teplice\"\nmsgstr \"Turcianske Teplice\"\n\n#: sk/sk_districts.py:79\nmsgid \"Tvrdosin\"\nmsgstr \"Tvrdosin\"\n\n#: sk/sk_districts.py:80\nmsgid \"Velky Krtis\"\nmsgstr \"Velky Krtis\"\n\n#: sk/sk_districts.py:81\nmsgid \"Vranov nad Toplou\"\nmsgstr \"Vranov nad Toplou\"\n\n#: sk/sk_districts.py:82\nmsgid \"Zlate Moravce\"\nmsgstr \"Zlate Moravce\"\n\n#: sk/sk_districts.py:83\nmsgid \"Zvolen\"\nmsgstr \"Zvolen\"\n\n#: sk/sk_districts.py:84\nmsgid \"Zarnovica\"\nmsgstr \"Zarnovica\"\n\n#: sk/sk_districts.py:85\nmsgid \"Ziar nad Hronom\"\nmsgstr \"Ziar nad Hronom\"\n\n#: sk/sk_districts.py:86\nmsgid \"Zilina\"\nmsgstr \"Zilina\"\n\n#: sk/sk_regions.py:8\nmsgid \"Banska Bystrica region\"\nmsgstr \"Banska Bystrica réigiún\"\n\n#: sk/sk_regions.py:9\nmsgid \"Bratislava region\"\nmsgstr \"An Bhratasláiv réigiún\"\n\n#: sk/sk_regions.py:10\nmsgid \"Kosice region\"\nmsgstr \"Kosice réigiún\"\n\n#: sk/sk_regions.py:11\nmsgid \"Nitra region\"\nmsgstr \"Nitra réigiún\"\n\n#: sk/sk_regions.py:12\nmsgid \"Presov region\"\nmsgstr \"Presov réigiún\"\n\n#: sk/sk_regions.py:13\nmsgid \"Trencin region\"\nmsgstr \"Trencin réigiún\"\n\n#: sk/sk_regions.py:14\nmsgid \"Trnava region\"\nmsgstr \"Trnava réigiún\"\n\n#: sk/sk_regions.py:15\nmsgid \"Zilina region\"\nmsgstr \"Zilina réigiún\"\n\n#: tr/forms.py:21\nmsgid \"Enter a postal code in the format XXXXX.\"\nmsgstr \"Cuir isteach cód poist san fhormáid XXXXX.\"\n\n#: tr/forms.py:42\nmsgid \"Phone numbers must be in 0XXX XXX XXXX format.\"\nmsgstr \"Ní mór líon Fón a bheith i bhformáid 0XXX XXX XXXX.\"\n\n#: tr/forms.py:69\nmsgid \"Enter a valid Turkish Identification number.\"\nmsgstr \"Iontráil uimhir aitheantais bailí Tuircis.\"\n\n#: tr/forms.py:70\nmsgid \"Turkish Identification number must be 11 digits.\"\nmsgstr \"Ní mór a aithint Tuircis uimhir 11 digití.\"\n\n#: us/forms.py:21\nmsgid \"Enter a zip code in the format XXXXX or XXXXX-XXXX.\"\nmsgstr \"Iontráil zip-cód i bhformáid XXXXX nó XXXXX-XXXX.\"\n\n#: us/forms.py:59\nmsgid \"Enter a valid U.S. Social Security number in XXX-XX-XXXX format.\"\nmsgstr \"Iontráil uimhir Slándáil Shóisialta US bailí i bhformáid XXX-XX-XXXX.\"\n\n#: us/forms.py:92\nmsgid \"Enter a U.S. state or territory.\"\nmsgstr \"Iontráil US stát nó i gcríoch.\"\n\n#: us/models.py:8\nmsgid \"U.S. state (two uppercase letters)\"\nmsgstr \"U.S. stát (dhá litreacha móra)\"\n\n#: us/models.py:17\nmsgid \"U.S. postal code (two uppercase letters)\"\nmsgstr \"US cód poist (dhá litreacha móra)\"\n\n#: us/models.py:26\nmsgid \"Phone number\"\nmsgstr \"Uimhir telefón\"\n\n#: uy/forms.py:29\nmsgid \"Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.\"\nmsgstr \"\"\n\"Iontráil CI bailí a roinnt i X.XXX.XXX-X, XXXXXXX-X nó XXXXXXXX formáid.\"\n\n#: uy/forms.py:31\nmsgid \"Enter a valid CI number.\"\nmsgstr \"Cuir isteach uimhir IC bailí.\"\n\n#: za/forms.py:22\nmsgid \"Enter a valid South African ID number\"\nmsgstr \"Iontráil uimhir ID hAfraice Theas bailí\"\n\n#: za/forms.py:56\nmsgid \"Enter a valid South African postal code\"\nmsgstr \"Iontráil cód poist na hAfraice Theas bailí\"\n\n#: za/za_provinces.py:4\nmsgid \"Eastern Cape\"\nmsgstr \"Eastern Cape\"\n\n#: za/za_provinces.py:5\nmsgid \"Free State\"\nmsgstr \"Saorstát\"\n\n#: za/za_provinces.py:6\nmsgid \"Gauteng\"\nmsgstr \"Gauteng\"\n\n#: za/za_provinces.py:7\nmsgid \"KwaZulu-Natal\"\nmsgstr \"KwaZulu-Natal\"\n\n#: za/za_provinces.py:8\nmsgid \"Limpopo\"\nmsgstr \"Limpopo\"\n\n#: za/za_provinces.py:9\nmsgid \"Mpumalanga\"\nmsgstr \"Mpumalanga\"\n\n#: za/za_provinces.py:10\nmsgid \"Northern Cape\"\nmsgstr \"Northern Cape\"\n\n#: za/za_provinces.py:11\nmsgid \"North West\"\nmsgstr \"Iarthuaisceart\"\n\n#: za/za_provinces.py:12\nmsgid \"Western Cape\"\nmsgstr \"Western Cape\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/locale/gl/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# fasouto <fsoutomoure@gmail.com>, 2011.\n#   <fonzzo@gmail.com>, 2013.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Leandro Regueiro <leandro.regueiro@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2013-01-08 13:06+0000\\n\"\n\"Last-Translator: fonso <fonzzo@gmail.com>\\n\"\n\"Language-Team: Galician (http://www.transifex.com/projects/p/django/language/\"\n\"gl/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: gl\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: ar/forms.py:30\nmsgid \"Enter a postal code in the format NNNN or ANNNNAAA.\"\nmsgstr \"Insira un código postal no formato NNNN ou ANNNNAAA.\"\n\n#: ar/forms.py:52 br/forms.py:95 br/forms.py:134 pe/forms.py:27 pe/forms.py:55\nmsgid \"This field requires only numbers.\"\nmsgstr \"Este campo soamente admite números.\"\n\n#: ar/forms.py:53\nmsgid \"This field requires 7 or 8 digits.\"\nmsgstr \"Este campo require 7 ou 8 díxitos.\"\n\n#: ar/forms.py:82\nmsgid \"Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.\"\nmsgstr \"Insira un CUITválido en formato XX-XXXXXXXX-X ou XXXXXXXXXXXX.\"\n\n#: ar/forms.py:83\nmsgid \"Invalid CUIT.\"\nmsgstr \"CUIT non válido.\"\n\n#: ar/forms.py:84\nmsgid \"Invalid legal type. Type must be 27, 20, 23 or 30.\"\nmsgstr \"Tipo legal non válido. O tipo debe ser 27, 20, 23 ou 30.\"\n\n#: at/at_states.py:5\nmsgid \"Burgenland\"\nmsgstr \"Burgenland\"\n\n#: at/at_states.py:6\nmsgid \"Carinthia\"\nmsgstr \"Carintia\"\n\n#: at/at_states.py:7\nmsgid \"Lower Austria\"\nmsgstr \"Baixa Austria\"\n\n#: at/at_states.py:8\nmsgid \"Upper Austria\"\nmsgstr \"Alta Austria\"\n\n#: at/at_states.py:9\nmsgid \"Salzburg\"\nmsgstr \"Salzburgo\"\n\n#: at/at_states.py:10\nmsgid \"Styria\"\nmsgstr \"Estiria\"\n\n#: at/at_states.py:11\nmsgid \"Tyrol\"\nmsgstr \"Tirol\"\n\n#: at/at_states.py:12\nmsgid \"Vorarlberg\"\nmsgstr \"Vorarlberg\"\n\n#: at/at_states.py:13\nmsgid \"Vienna\"\nmsgstr \"Viena\"\n\n#: at/forms.py:22 ch/forms.py:22 no/forms.py:19\nmsgid \"Enter a zip code in the format XXXX.\"\nmsgstr \"Insira un código posttal no formato XXXX.\"\n\n#: at/forms.py:50\nmsgid \"Enter a valid Austrian Social Security Number in XXXX XXXXXX format.\"\nmsgstr \"Insira un código postal Austríaco no formato XXXX XXXXXX.\"\n\n#: au/forms.py:26\nmsgid \"Enter a 4 digit postcode.\"\nmsgstr \"Insira un código postal de 4 díxitos.\"\n\n#: au/models.py:9\nmsgid \"Australian State\"\nmsgstr \"Estado australiano\"\n\n#: au/models.py:19\nmsgid \"Australian Postcode\"\nmsgstr \"Código postal australiano\"\n\n#: au/models.py:33\nmsgid \"Australian Phone number\"\nmsgstr \"Número de teléfono australiano\"\n\n#: be/be_provinces.py:5\nmsgid \"Antwerp\"\nmsgstr \"Antuerpen\"\n\n#: be/be_provinces.py:6\nmsgid \"Brussels\"\nmsgstr \"Bruxelas\"\n\n#: be/be_provinces.py:7\nmsgid \"East Flanders\"\nmsgstr \"Flandres oriental\"\n\n#: be/be_provinces.py:8\nmsgid \"Flemish Brabant\"\nmsgstr \"Brabante Flamengo\"\n\n#: be/be_provinces.py:9\nmsgid \"Hainaut\"\nmsgstr \"Hainaut\"\n\n#: be/be_provinces.py:10\nmsgid \"Liege\"\nmsgstr \"Liège\"\n\n#: be/be_provinces.py:11 nl/nl_provinces.py:9\nmsgid \"Limburg\"\nmsgstr \"Limburgo\"\n\n#: be/be_provinces.py:12\nmsgid \"Luxembourg\"\nmsgstr \"Luxemburgo\"\n\n#: be/be_provinces.py:13\nmsgid \"Namur\"\nmsgstr \"Namur\"\n\n#: be/be_provinces.py:14\nmsgid \"Walloon Brabant\"\nmsgstr \"Brabante Valón\"\n\n#: be/be_provinces.py:15\nmsgid \"West Flanders\"\nmsgstr \"Flandres occidental\"\n\n#: be/be_regions.py:5\nmsgid \"Brussels Capital Region\"\nmsgstr \"Rexión de Bruxelas Capital\"\n\n#: be/be_regions.py:6\nmsgid \"Flemish Region\"\nmsgstr \"Rexión de Flandres\"\n\n#: be/be_regions.py:7\nmsgid \"Wallonia\"\nmsgstr \"Valonia\"\n\n#: be/forms.py:25\nmsgid \"Enter a valid postal code in the range and format 1XXX - 9XXX.\"\nmsgstr \"Insira un código postal no rango e formato 1XXX  - 9XXX.\"\n\n#: be/forms.py:48\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\nmsgstr \"\"\n\"Insira un número de teléfono válido nun dos formatos 0x xxx xx xx, 0xx xx xx \"\n\"xx, 04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, \"\n\"0xx.xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx ou 04xxxxxxxx. \"\n\n#: br/forms.py:22\nmsgid \"Enter a zip code in the format XXXXX-XXX.\"\nmsgstr \"Insira un código postal no formato XXXXX-XXX.\"\n\n#: br/forms.py:31\nmsgid \"Phone numbers must be in XX-XXXX-XXXX format.\"\nmsgstr \"Os números de teléfono deben estar no formato XX-XXXX-XXXX.\"\n\n#: br/forms.py:58\nmsgid \"\"\n\"Select a valid brazilian state. That state is not one of the available \"\n\"states.\"\nmsgstr \"\"\n\"Seleccione un estado de Brasil válido. Este estado non é un dos estados \"\n\"dispoñíbeis.\"\n\n#: br/forms.py:93\nmsgid \"Invalid CPF number.\"\nmsgstr \"Número de CPF non válido.\"\n\n#: br/forms.py:94\nmsgid \"This field requires at most 11 digits or 14 characters.\"\nmsgstr \"Este campo acepta como máximo 11 díxitos ou 14 caracteres.\"\n\n#: br/forms.py:133\nmsgid \"Invalid CNPJ number.\"\nmsgstr \"Número de CNPJ non válido\"\n\n#: br/forms.py:135\nmsgid \"This field requires at least 14 digits\"\nmsgstr \"Este campo require polo menos 14 díxitos.\"\n\n#: ca/forms.py:29\nmsgid \"Enter a postal code in the format XXX XXX.\"\nmsgstr \"Insira un código postal no formato XXX XXX.\"\n\n#: ca/forms.py:47 us/forms.py:30\nmsgid \"Phone numbers must be in XXX-XXX-XXXX format.\"\nmsgstr \"Os números de teléfono deben ter o formato XXX-XXX-XXXX.\"\n\n#: ca/forms.py:69\nmsgid \"Enter a Canadian province or territory.\"\nmsgstr \"Introduza unha provincia ou territorio canadense.\"\n\n#: ca/forms.py:110\nmsgid \"Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.\"\nmsgstr \"\"\n\"Insira un número válido do Seguro Social Canadense en formato XXX-XXX-XXX.\"\n\n#: ch/ch_states.py:5\nmsgid \"Aargau\"\nmsgstr \"Argovia\"\n\n#: ch/ch_states.py:6\nmsgid \"Appenzell Innerrhoden\"\nmsgstr \"Appenzell Interior\"\n\n#: ch/ch_states.py:7\nmsgid \"Appenzell Ausserrhoden\"\nmsgstr \"Appenzell Exterior\"\n\n#: ch/ch_states.py:8\nmsgid \"Basel-Stadt\"\nmsgstr \"Basilea-Cidade\"\n\n#: ch/ch_states.py:9\nmsgid \"Basel-Land\"\nmsgstr \"Basilea-Campo\"\n\n#: ch/ch_states.py:10\nmsgid \"Berne\"\nmsgstr \"Berna\"\n\n#: ch/ch_states.py:11\nmsgid \"Fribourg\"\nmsgstr \"Friburgo\"\n\n#: ch/ch_states.py:12\nmsgid \"Geneva\"\nmsgstr \"Xenebra\"\n\n#: ch/ch_states.py:13\nmsgid \"Glarus\"\nmsgstr \"Glarus\"\n\n#: ch/ch_states.py:14\nmsgid \"Graubuenden\"\nmsgstr \"Grisóns\"\n\n#: ch/ch_states.py:15\nmsgid \"Jura\"\nmsgstr \"Xura\"\n\n#: ch/ch_states.py:16\nmsgid \"Lucerne\"\nmsgstr \"Lucerna\"\n\n#: ch/ch_states.py:17\nmsgid \"Neuchatel\"\nmsgstr \"Neuchatel\"\n\n#: ch/ch_states.py:18\nmsgid \"Nidwalden\"\nmsgstr \"Nidwald\"\n\n#: ch/ch_states.py:19\nmsgid \"Obwalden\"\nmsgstr \"Obwald\"\n\n#: ch/ch_states.py:20\nmsgid \"Schaffhausen\"\nmsgstr \"Schaffhausen\"\n\n#: ch/ch_states.py:21\nmsgid \"Schwyz\"\nmsgstr \"Schwyz\"\n\n#: ch/ch_states.py:22\nmsgid \"Solothurn\"\nmsgstr \"Soleura\"\n\n#: ch/ch_states.py:23\nmsgid \"St. Gallen\"\nmsgstr \"San Galo\"\n\n#: ch/ch_states.py:24\nmsgid \"Thurgau\"\nmsgstr \"Turgovia\"\n\n#: ch/ch_states.py:25\nmsgid \"Ticino\"\nmsgstr \"Tesino\"\n\n#: ch/ch_states.py:26\nmsgid \"Uri\"\nmsgstr \"Uri\"\n\n#: ch/ch_states.py:27\nmsgid \"Valais\"\nmsgstr \"Valais\"\n\n#: ch/ch_states.py:28\nmsgid \"Vaud\"\nmsgstr \"Vaud\"\n\n#: ch/ch_states.py:29\nmsgid \"Zug\"\nmsgstr \"Zug\"\n\n#: ch/ch_states.py:30\nmsgid \"Zurich\"\nmsgstr \"Zurich\"\n\n#: ch/forms.py:37\nmsgid \"Phone numbers must be in 0XX XXX XX XX format.\"\nmsgstr \"Os números de teléfono deben estar no formato 0XX XXX XX XX.\"\n\n#: ch/forms.py:68\nmsgid \"\"\n\"Enter a valid Swiss identity or passport card number in X1234567<0 or \"\n\"1234567890 format.\"\nmsgstr \"\"\n\"Insira un número válido de tarxeta de identidade ou pasaporte no formato \"\n\"X1234567<0 ou 1234567890.\"\n\n#: cl/forms.py:32\nmsgid \"Enter a valid Chilean RUT.\"\nmsgstr \"Insira un RUT chileno válido.\"\n\n#: cl/forms.py:33\nmsgid \"Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.\"\nmsgstr \"Insira un RUT chileno válido. O formato é XX.XXX.XXX-X.\"\n\n#: cl/forms.py:34\nmsgid \"The Chilean RUT is not valid.\"\nmsgstr \"O RUT chileno non é válido.\"\n\n#: cn/forms.py:84\nmsgid \"Enter a post code in the format XXXXXX.\"\nmsgstr \"Insira un código postal no formato XXXXXX.\"\n\n#: cn/forms.py:105\nmsgid \"ID Card Number consists of 15 or 18 digits.\"\nmsgstr \"O número de tarxeta de identidade consiste de 15 ou 18 díxitos.\"\n\n#: cn/forms.py:106\nmsgid \"Invalid ID Card Number: Wrong checksum\"\nmsgstr \"\"\n\"Número de tarxeta de identidade non válido: suma de comprobación errónea\"\n\n#: cn/forms.py:107\nmsgid \"Invalid ID Card Number: Wrong birthdate\"\nmsgstr \"Número de tarxeta de identidade non válido: data de nacemento errónea\"\n\n#: cn/forms.py:108\nmsgid \"Invalid ID Card Number: Wrong location code\"\nmsgstr \"\"\n\"Número de tarxeta de identidade non válido: código de ubicación erróneo\"\n\n#: cn/forms.py:193\nmsgid \"Enter a valid phone number.\"\nmsgstr \"Insira un número de teléfono válido.\"\n\n#: cn/forms.py:210\nmsgid \"Enter a valid cell number.\"\nmsgstr \"Insira un número de teléfono móbil válido.\"\n\n#: cz/cz_regions.py:8\nmsgid \"Prague\"\nmsgstr \"Praga\"\n\n#: cz/cz_regions.py:9\nmsgid \"Central Bohemian Region\"\nmsgstr \"Rexión de Bohemia Central\"\n\n#: cz/cz_regions.py:10\nmsgid \"South Bohemian Region\"\nmsgstr \"Rexión de Bohemia do Sur\"\n\n#: cz/cz_regions.py:11\nmsgid \"Pilsen Region\"\nmsgstr \"Rexión Pilsen\"\n\n#: cz/cz_regions.py:12\nmsgid \"Carlsbad Region\"\nmsgstr \"Rexión Carlsbad\"\n\n#: cz/cz_regions.py:13\nmsgid \"Usti Region\"\nmsgstr \"Rexión Usti\"\n\n#: cz/cz_regions.py:14\nmsgid \"Liberec Region\"\nmsgstr \"Rexión Liberec\"\n\n#: cz/cz_regions.py:15\nmsgid \"Hradec Region\"\nmsgstr \"Rexión Hradec\"\n\n#: cz/cz_regions.py:16\nmsgid \"Pardubice Region\"\nmsgstr \"Rexión Pardubice\"\n\n#: cz/cz_regions.py:17\nmsgid \"Vysocina Region\"\nmsgstr \"Rexión Vysocina\"\n\n#: cz/cz_regions.py:18\nmsgid \"South Moravian Region\"\nmsgstr \"Rexión Moravia do sur\"\n\n#: cz/cz_regions.py:19\nmsgid \"Olomouc Region\"\nmsgstr \"Rexión Olomouc\"\n\n#: cz/cz_regions.py:20\nmsgid \"Zlin Region\"\nmsgstr \"Rexión Zlin\"\n\n#: cz/cz_regions.py:21\nmsgid \"Moravian-Silesian Region\"\nmsgstr \"Rexión de Moravia-Silesia\"\n\n#: cz/forms.py:32 sk/forms.py:33\nmsgid \"Enter a postal code in the format XXXXX or XXX XX.\"\nmsgstr \"Insira un código postal no formato XXXXX ou XXX XX.\"\n\n#: cz/forms.py:52\nmsgid \"Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.\"\nmsgstr \"Insira un número de nacemenento en formato XXXXXX/XXXX ou XXXXXXXXXX.\"\n\n#: cz/forms.py:53\nmsgid \"Enter a valid birth number.\"\nmsgstr \"Insira un número de nacemento válido.\"\n\n#: cz/forms.py:102\nmsgid \"Enter a valid IC number.\"\nmsgstr \"Insira un número IC válido.\"\n\n#: de/de_states.py:5\nmsgid \"Baden-Wuerttemberg\"\nmsgstr \"Baden-Württemberg\"\n\n#: de/de_states.py:6\nmsgid \"Bavaria\"\nmsgstr \"Baviera\"\n\n#: de/de_states.py:7\nmsgid \"Berlin\"\nmsgstr \"Berlín\"\n\n#: de/de_states.py:8\nmsgid \"Brandenburg\"\nmsgstr \"Brandemburgo\"\n\n#: de/de_states.py:9\nmsgid \"Bremen\"\nmsgstr \"Bremen\"\n\n#: de/de_states.py:10\nmsgid \"Hamburg\"\nmsgstr \"Hamburgo\"\n\n#: de/de_states.py:11\nmsgid \"Hessen\"\nmsgstr \"Hesse\"\n\n#: de/de_states.py:12\nmsgid \"Mecklenburg-Western Pomerania\"\nmsgstr \"Mecklemburgo-Pomerania Occidental\"\n\n#: de/de_states.py:13\nmsgid \"Lower Saxony\"\nmsgstr \"Baixa Saxonia\"\n\n#: de/de_states.py:14\nmsgid \"North Rhine-Westphalia\"\nmsgstr \"Renania do Norte-Westfalia\"\n\n#: de/de_states.py:15\nmsgid \"Rhineland-Palatinate\"\nmsgstr \"Renania-Palatinado\"\n\n#: de/de_states.py:16\nmsgid \"Saarland\"\nmsgstr \"Sarre\"\n\n#: de/de_states.py:17\nmsgid \"Saxony\"\nmsgstr \"Saxonia\"\n\n#: de/de_states.py:18\nmsgid \"Saxony-Anhalt\"\nmsgstr \"Saxonia-Anhalt\"\n\n#: de/de_states.py:19\nmsgid \"Schleswig-Holstein\"\nmsgstr \"Schleswig-Holstein\"\n\n#: de/de_states.py:20\nmsgid \"Thuringia\"\nmsgstr \"Turinxia\"\n\n#: de/forms.py:20 fi/forms.py:18 fr/forms.py:20\nmsgid \"Enter a zip code in the format XXXXX.\"\nmsgstr \"Insira un código postal no formato XXXXX\"\n\n#: de/forms.py:46\nmsgid \"\"\n\"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"format.\"\nmsgstr \"\"\n\"Insira un número válido de tarxeta de identidade alemá no formato \"\n\"XXXXXXXXXXX-XXXXXXX-XXXXXXX-X.\"\n\n#: es/es_provinces.py:5\nmsgid \"Araba\"\nmsgstr \"Áraba\"\n\n#: es/es_provinces.py:6\nmsgid \"Albacete\"\nmsgstr \"Albacete\"\n\n#: es/es_provinces.py:7\nmsgid \"Alacant\"\nmsgstr \"Alicante\"\n\n#: es/es_provinces.py:8\nmsgid \"Almeria\"\nmsgstr \"Almería\"\n\n#: es/es_provinces.py:9\nmsgid \"Avila\"\nmsgstr \"Ávila\"\n\n#: es/es_provinces.py:10\nmsgid \"Badajoz\"\nmsgstr \"Badaxoz\"\n\n#: es/es_provinces.py:11\nmsgid \"Illes Balears\"\nmsgstr \"Illas Baleares\"\n\n#: es/es_provinces.py:12\nmsgid \"Barcelona\"\nmsgstr \"Barcelona\"\n\n#: es/es_provinces.py:13\nmsgid \"Burgos\"\nmsgstr \"Burgos\"\n\n#: es/es_provinces.py:14\nmsgid \"Caceres\"\nmsgstr \"Cáceres\"\n\n#: es/es_provinces.py:15\nmsgid \"Cadiz\"\nmsgstr \"Cádiz\"\n\n#: es/es_provinces.py:16\nmsgid \"Castello\"\nmsgstr \"Castellón\"\n\n#: es/es_provinces.py:17\nmsgid \"Ciudad Real\"\nmsgstr \"Cidade Real\"\n\n#: es/es_provinces.py:18\nmsgid \"Cordoba\"\nmsgstr \"Córdoba\"\n\n#: es/es_provinces.py:19\nmsgid \"A Coruna\"\nmsgstr \"A Coruña\"\n\n#: es/es_provinces.py:20\nmsgid \"Cuenca\"\nmsgstr \"Cuenca\"\n\n#: es/es_provinces.py:21\nmsgid \"Girona\"\nmsgstr \"Xirona\"\n\n#: es/es_provinces.py:22\nmsgid \"Granada\"\nmsgstr \"Granada\"\n\n#: es/es_provinces.py:23\nmsgid \"Guadalajara\"\nmsgstr \"Guadalaxara\"\n\n#: es/es_provinces.py:24\nmsgid \"Guipuzkoa\"\nmsgstr \"Guipúscoa\"\n\n#: es/es_provinces.py:25\nmsgid \"Huelva\"\nmsgstr \"Huelva\"\n\n#: es/es_provinces.py:26\nmsgid \"Huesca\"\nmsgstr \"Huesca\"\n\n#: es/es_provinces.py:27\nmsgid \"Jaen\"\nmsgstr \"Jaén\"\n\n#: es/es_provinces.py:28\nmsgid \"Leon\"\nmsgstr \"León\"\n\n#: es/es_provinces.py:29\nmsgid \"Lleida\"\nmsgstr \"Lleida\"\n\n#: es/es_provinces.py:30 es/es_regions.py:17\nmsgid \"La Rioja\"\nmsgstr \"A Rioxa\"\n\n#: es/es_provinces.py:31\nmsgid \"Lugo\"\nmsgstr \"Lugo\"\n\n#: es/es_provinces.py:32 es/es_regions.py:18\nmsgid \"Madrid\"\nmsgstr \"Madrid\"\n\n#: es/es_provinces.py:33\nmsgid \"Malaga\"\nmsgstr \"Málaga\"\n\n#: es/es_provinces.py:34\nmsgid \"Murcia\"\nmsgstr \"Murcia\"\n\n#: es/es_provinces.py:35\nmsgid \"Navarre\"\nmsgstr \"Navarra\"\n\n#: es/es_provinces.py:36\nmsgid \"Ourense\"\nmsgstr \"Ourense\"\n\n#: es/es_provinces.py:37\nmsgid \"Asturias\"\nmsgstr \"Asturias\"\n\n#: es/es_provinces.py:38\nmsgid \"Palencia\"\nmsgstr \"Palencia\"\n\n#: es/es_provinces.py:39\nmsgid \"Las Palmas\"\nmsgstr \"As Palmas\"\n\n#: es/es_provinces.py:40\nmsgid \"Pontevedra\"\nmsgstr \"Pontevedra\"\n\n#: es/es_provinces.py:41\nmsgid \"Salamanca\"\nmsgstr \"Salamanca\"\n\n#: es/es_provinces.py:42\nmsgid \"Santa Cruz de Tenerife\"\nmsgstr \"Santa Cruz de Tenerife\"\n\n#: es/es_provinces.py:43 es/es_regions.py:11\nmsgid \"Cantabria\"\nmsgstr \"Cantabria\"\n\n#: es/es_provinces.py:44\nmsgid \"Segovia\"\nmsgstr \"Segovia\"\n\n#: es/es_provinces.py:45\nmsgid \"Seville\"\nmsgstr \"Sevilla\"\n\n#: es/es_provinces.py:46\nmsgid \"Soria\"\nmsgstr \"Soria\"\n\n#: es/es_provinces.py:47\nmsgid \"Tarragona\"\nmsgstr \"Tarragona\"\n\n#: es/es_provinces.py:48\nmsgid \"Teruel\"\nmsgstr \"Teruel\"\n\n#: es/es_provinces.py:49\nmsgid \"Toledo\"\nmsgstr \"Toledo\"\n\n#: es/es_provinces.py:50\nmsgid \"Valencia\"\nmsgstr \"Valencia\"\n\n#: es/es_provinces.py:51\nmsgid \"Valladolid\"\nmsgstr \"Valladolid\"\n\n#: es/es_provinces.py:52\nmsgid \"Bizkaia\"\nmsgstr \"Biscaia\"\n\n#: es/es_provinces.py:53\nmsgid \"Zamora\"\nmsgstr \"Zamora\"\n\n#: es/es_provinces.py:54\nmsgid \"Zaragoza\"\nmsgstr \"Zaragoza\"\n\n#: es/es_provinces.py:55\nmsgid \"Ceuta\"\nmsgstr \"Ceuta\"\n\n#: es/es_provinces.py:56\nmsgid \"Melilla\"\nmsgstr \"Melilla\"\n\n#: es/es_regions.py:5\nmsgid \"Andalusia\"\nmsgstr \"Andalucía\"\n\n#: es/es_regions.py:6\nmsgid \"Aragon\"\nmsgstr \"Aragón\"\n\n#: es/es_regions.py:7\nmsgid \"Principality of Asturias\"\nmsgstr \"Principado de Asturias\"\n\n#: es/es_regions.py:8\nmsgid \"Balearic Islands\"\nmsgstr \"Illas Baleares\"\n\n#: es/es_regions.py:9\nmsgid \"Basque Country\"\nmsgstr \"País Vasco\"\n\n#: es/es_regions.py:10\nmsgid \"Canary Islands\"\nmsgstr \"Illas Canarias\"\n\n#: es/es_regions.py:12\nmsgid \"Castile-La Mancha\"\nmsgstr \"Castela-A Mancha\"\n\n#: es/es_regions.py:13\nmsgid \"Castile and Leon\"\nmsgstr \"Castela e León\"\n\n#: es/es_regions.py:14\nmsgid \"Catalonia\"\nmsgstr \"Cataluña\"\n\n#: es/es_regions.py:15\nmsgid \"Extremadura\"\nmsgstr \"Extremadura\"\n\n#: es/es_regions.py:16\nmsgid \"Galicia\"\nmsgstr \"Galicia\"\n\n#: es/es_regions.py:19\nmsgid \"Region of Murcia\"\nmsgstr \"Murcia\"\n\n#: es/es_regions.py:20\nmsgid \"Foral Community of Navarre\"\nmsgstr \"Comunidade Foral de Navarra\"\n\n#: es/es_regions.py:21\nmsgid \"Valencian Community\"\nmsgstr \"Comunidade Valenciana\"\n\n#: es/forms.py:26\nmsgid \"Enter a valid postal code in the range and format 01XXX - 52XXX.\"\nmsgstr \"Insira un código postal válido no rango e format 01XXX - 52XXX.\"\n\n#: es/forms.py:46\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or \"\n\"9XXXXXXXX.\"\nmsgstr \"\"\n\"Insira un número de teléfono válido nun dos formatos 6XXXXXXXX, 8XXXXXXXX ou \"\n\"9XXXXXXXX.\"\n\n#: es/forms.py:73\nmsgid \"Please enter a valid NIF, NIE, or CIF.\"\nmsgstr \"Introduza un NIF, NIE ou CIF válido.\"\n\n#: es/forms.py:74\nmsgid \"Please enter a valid NIF or NIE.\"\nmsgstr \"Insira un NIF ou NIE válido.\"\n\n#: es/forms.py:75\nmsgid \"Invalid checksum for NIF.\"\nmsgstr \"A suma de verificación do NIF é incorrecta.\"\n\n#: es/forms.py:76\nmsgid \"Invalid checksum for NIE.\"\nmsgstr \"A suma de verificación do NIE é incorrecta.\"\n\n#: es/forms.py:77\nmsgid \"Invalid checksum for CIF.\"\nmsgstr \"A suma de verificación do CIF é incorrecta.\"\n\n#: es/forms.py:149\nmsgid \"\"\n\"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.\"\nmsgstr \"\"\n\"Por favor, insira un número de conta bancaria válido en formato XXXX-XXXX-XX-\"\n\"XXXXXXXXXX.\"\n\n#: es/forms.py:150\nmsgid \"Invalid checksum for bank account number.\"\nmsgstr \"Suma de comprobación do número de conta bancaria non válida.\"\n\n#: fi/forms.py:33\nmsgid \"Enter a valid Finnish social security number.\"\nmsgstr \"Insira un número válido de tarxeta da seguridade social finlandesa.\"\n\n#: fr/forms.py:35\nmsgid \"Phone numbers must be in 0X XX XX XX XX format.\"\nmsgstr \"Os números de teléfono deben estar no formato 0X XX XX XX XX.\"\n\n#: gb/forms.py:25\nmsgid \"Enter a valid postcode.\"\nmsgstr \"Insira un código postal válido.\"\n\n#: gb/gb_regions.py:11\nmsgid \"Bedfordshire\"\nmsgstr \"Bedfordshire\"\n\n#: gb/gb_regions.py:12\nmsgid \"Buckinghamshire\"\nmsgstr \"Buckinghamshire\"\n\n#: gb/gb_regions.py:14\nmsgid \"Cheshire\"\nmsgstr \"Cheshire\"\n\n#: gb/gb_regions.py:15\nmsgid \"Cornwall and Isles of Scilly\"\nmsgstr \"Cornualles e Illas Sorlingas\"\n\n#: gb/gb_regions.py:16\nmsgid \"Cumbria\"\nmsgstr \"Cumbria\"\n\n#: gb/gb_regions.py:17\nmsgid \"Derbyshire\"\nmsgstr \"Derbyshire\"\n\n#: gb/gb_regions.py:18\nmsgid \"Devon\"\nmsgstr \"Devon\"\n\n#: gb/gb_regions.py:19\nmsgid \"Dorset\"\nmsgstr \"Dorset\"\n\n#: gb/gb_regions.py:20\nmsgid \"Durham\"\nmsgstr \"Durham\"\n\n#: gb/gb_regions.py:21\nmsgid \"East Sussex\"\nmsgstr \"East Sussex\"\n\n#: gb/gb_regions.py:22\nmsgid \"Essex\"\nmsgstr \"Essex\"\n\n#: gb/gb_regions.py:23\nmsgid \"Gloucestershire\"\nmsgstr \"Gloucestershire\"\n\n#: gb/gb_regions.py:24\nmsgid \"Greater London\"\nmsgstr \"Gran Londres\"\n\n#: gb/gb_regions.py:25\nmsgid \"Greater Manchester\"\nmsgstr \"Gran Manchester\"\n\n#: gb/gb_regions.py:26\nmsgid \"Hampshire\"\nmsgstr \"Hampshire\"\n\n#: gb/gb_regions.py:27\nmsgid \"Hertfordshire\"\nmsgstr \"Hertfordshire\"\n\n#: gb/gb_regions.py:28\nmsgid \"Kent\"\nmsgstr \"Kent\"\n\n#: gb/gb_regions.py:29\nmsgid \"Lancashire\"\nmsgstr \"Lancashire\"\n\n#: gb/gb_regions.py:30\nmsgid \"Leicestershire\"\nmsgstr \"Leicestershire\"\n\n#: gb/gb_regions.py:31\nmsgid \"Lincolnshire\"\nmsgstr \"Lincolnshire\"\n\n#: gb/gb_regions.py:32\nmsgid \"Merseyside\"\nmsgstr \"Merseyside\"\n\n#: gb/gb_regions.py:33\nmsgid \"Norfolk\"\nmsgstr \"Norfolk\"\n\n#: gb/gb_regions.py:34\nmsgid \"North Yorkshire\"\nmsgstr \"North Yorkshire\"\n\n#: gb/gb_regions.py:35\nmsgid \"Northamptonshire\"\nmsgstr \"Northamptonshire\"\n\n#: gb/gb_regions.py:36\nmsgid \"Northumberland\"\nmsgstr \"Northumberland\"\n\n#: gb/gb_regions.py:37\nmsgid \"Nottinghamshire\"\nmsgstr \"Nottinghamshire\"\n\n#: gb/gb_regions.py:38\nmsgid \"Oxfordshire\"\nmsgstr \"Oxfordshire\"\n\n#: gb/gb_regions.py:39\nmsgid \"Shropshire\"\nmsgstr \"Shropshire\"\n\n#: gb/gb_regions.py:40\nmsgid \"Somerset\"\nmsgstr \"Somerset\"\n\n#: gb/gb_regions.py:41\nmsgid \"South Yorkshire\"\nmsgstr \"South Yorkshire\"\n\n#: gb/gb_regions.py:42\nmsgid \"Staffordshire\"\nmsgstr \"Staffordshire\"\n\n#: gb/gb_regions.py:43\nmsgid \"Suffolk\"\nmsgstr \"Suffolk\"\n\n#: gb/gb_regions.py:44\nmsgid \"Surrey\"\nmsgstr \"Surrey\"\n\n#: gb/gb_regions.py:45\nmsgid \"Tyne and Wear\"\nmsgstr \"Tyne and Wear\"\n\n#: gb/gb_regions.py:46\nmsgid \"Warwickshire\"\nmsgstr \"Warwickshire\"\n\n#: gb/gb_regions.py:47\nmsgid \"West Midlands\"\nmsgstr \"Midlands do Oeste\"\n\n#: gb/gb_regions.py:48\nmsgid \"West Sussex\"\nmsgstr \"West Sussex\"\n\n#: gb/gb_regions.py:49\nmsgid \"West Yorkshire\"\nmsgstr \"West Yorkshire\"\n\n#: gb/gb_regions.py:50\nmsgid \"Wiltshire\"\nmsgstr \"Wiltshire\"\n\n#: gb/gb_regions.py:51\nmsgid \"Worcestershire\"\nmsgstr \"Worcestershire\"\n\n#: gb/gb_regions.py:55\nmsgid \"County Antrim\"\nmsgstr \"Condado de Antrim\"\n\n#: gb/gb_regions.py:56\nmsgid \"County Armagh\"\nmsgstr \"Condado de Armagh\"\n\n#: gb/gb_regions.py:57\nmsgid \"County Down\"\nmsgstr \"Condado de Down\"\n\n#: gb/gb_regions.py:58\nmsgid \"County Fermanagh\"\nmsgstr \"Condado de Fermanagh\"\n\n#: gb/gb_regions.py:59\nmsgid \"County Londonderry\"\nmsgstr \"Condado de Londonderry\"\n\n#: gb/gb_regions.py:60\nmsgid \"County Tyrone\"\nmsgstr \"Condado de Tyrone\"\n\n#: gb/gb_regions.py:64\nmsgid \"Clwyd\"\nmsgstr \"Clwyd\"\n\n#: gb/gb_regions.py:65\nmsgid \"Dyfed\"\nmsgstr \"Dyfed\"\n\n#: gb/gb_regions.py:66\nmsgid \"Gwent\"\nmsgstr \"Gwent\"\n\n#: gb/gb_regions.py:67\nmsgid \"Gwynedd\"\nmsgstr \"Gwynedd\"\n\n#: gb/gb_regions.py:68\nmsgid \"Mid Glamorgan\"\nmsgstr \"Mid Glamorgan\"\n\n#: gb/gb_regions.py:69\nmsgid \"Powys\"\nmsgstr \"Powys\"\n\n#: gb/gb_regions.py:70\nmsgid \"South Glamorgan\"\nmsgstr \"South Glamorgan\"\n\n#: gb/gb_regions.py:71\nmsgid \"West Glamorgan\"\nmsgstr \"West Glamorgan\"\n\n#: gb/gb_regions.py:75\nmsgid \"Borders\"\nmsgstr \"Borders\"\n\n#: gb/gb_regions.py:76\nmsgid \"Central Scotland\"\nmsgstr \"Escocia central\"\n\n#: gb/gb_regions.py:77\nmsgid \"Dumfries and Galloway\"\nmsgstr \"Dumfries and Galloway\"\n\n#: gb/gb_regions.py:78\nmsgid \"Fife\"\nmsgstr \"Fife\"\n\n#: gb/gb_regions.py:79\nmsgid \"Grampian\"\nmsgstr \"Grampian\"\n\n#: gb/gb_regions.py:80\nmsgid \"Highland\"\nmsgstr \"Highland\"\n\n#: gb/gb_regions.py:81\nmsgid \"Lothian\"\nmsgstr \"Lothian\"\n\n#: gb/gb_regions.py:82\nmsgid \"Orkney Islands\"\nmsgstr \"Illas Órcadas\"\n\n#: gb/gb_regions.py:83\nmsgid \"Shetland Islands\"\nmsgstr \"Illas Shetland\"\n\n#: gb/gb_regions.py:84\nmsgid \"Strathclyde\"\nmsgstr \"Strathclyde\"\n\n#: gb/gb_regions.py:85\nmsgid \"Tayside\"\nmsgstr \"Tayside\"\n\n#: gb/gb_regions.py:86\nmsgid \"Western Isles\"\nmsgstr \"Illas occidentais\"\n\n#: gb/gb_regions.py:90\nmsgid \"England\"\nmsgstr \"Inglaterra\"\n\n#: gb/gb_regions.py:91\nmsgid \"Northern Ireland\"\nmsgstr \"Irlanda do norte\"\n\n#: gb/gb_regions.py:92\nmsgid \"Scotland\"\nmsgstr \"Escocia\"\n\n#: gb/gb_regions.py:93\nmsgid \"Wales\"\nmsgstr \"País de Gales\"\n\n#: hk/forms.py:37\n#, python-format\nmsgid \"Phone number should not start with one of the followings: %s.\"\nmsgstr \"O número de teléfono non debería comezar cun dos seguintes: %s.\"\n\n#: hk/forms.py:40\n#, python-format\nmsgid \"Phone number must be in one of the following formats: %s.\"\nmsgstr \"O número de teléfono debe estar nun dos seguintes formatos: %s.\"\n\n#: hk/forms.py:42\n#, python-format\nmsgid \"Phone number should start with one of the followings: %s.\"\nmsgstr \"O número de teléfono debería comezar cun dos seguintes: %s.\"\n\n#: hr/forms.py:76\nmsgid \"Enter a valid 13 digit JMBG\"\nmsgstr \"Insira un JMBG de 13 díxitos válido.\"\n\n#: hr/forms.py:77\nmsgid \"Error in date segment\"\nmsgstr \"Erro no segmento de idade\"\n\n#: hr/forms.py:123\nmsgid \"Enter a valid 11 digit OIB\"\nmsgstr \"Insira un OIB de 11 díxitos válido\"\n\n#: hr/forms.py:152 id/forms.py:112\nmsgid \"Enter a valid vehicle license plate number\"\nmsgstr \"Insira un número de matrícula de vehículo válido.\"\n\n#: hr/forms.py:153\nmsgid \"Enter a valid location code\"\nmsgstr \"Insira un código de ubicación válido\"\n\n#: hr/forms.py:154\nmsgid \"Number part cannot be zero\"\nmsgstr \"A parte númerica non pode ser cero\"\n\n#: hr/forms.py:190\nmsgid \"Enter a valid 5 digit postal code\"\nmsgstr \"Insira un código postal de 5 díxitos válido\"\n\n#: hr/forms.py:218 id/forms.py:72 nl/forms.py:56\nmsgid \"Enter a valid phone number\"\nmsgstr \"Insira un número de teléfono válido.\"\n\n#: hr/forms.py:219\nmsgid \"Enter a valid area or mobile network code\"\nmsgstr \"Insira un código de área ou rede móbil válido.\"\n\n#: hr/forms.py:220\nmsgid \"The phone nubmer is too long\"\nmsgstr \"O número telefónico é demasiado longo\"\n\n#: hr/forms.py:258\nmsgid \"Enter a valid 19 digit JMBAG starting with 601983\"\nmsgstr \"Insira un JMBAG de 19 díxitos válido que empece por 601983\"\n\n#: hr/forms.py:259\nmsgid \"Card issue number cannot be zero\"\nmsgstr \"O número de emisión da tarxeta non pode ser cero\"\n\n#: hr/hr_choices.py:14\nmsgid \"Grad Zagreb\"\nmsgstr \"Cidade de Zagreb\"\n\n#: hr/hr_choices.py:15\nmsgid \"Bjelovarsko-bilogorska županija\"\nmsgstr \"Condado de Bjelovar-Bilogora\"\n\n#: hr/hr_choices.py:16\nmsgid \"Brodsko-posavska županija\"\nmsgstr \"Condado de Brod-Posavina\"\n\n#: hr/hr_choices.py:17\nmsgid \"Dubrovačko-neretvanska županija\"\nmsgstr \"Condado de Dubrovnik-Neretva\"\n\n#: hr/hr_choices.py:18\nmsgid \"Istarska županija\"\nmsgstr \"Condado de Istria\"\n\n#: hr/hr_choices.py:19\nmsgid \"Karlovačka županija\"\nmsgstr \"Condado de Karlovac\"\n\n#: hr/hr_choices.py:20\nmsgid \"Koprivničko-križevačka županija\"\nmsgstr \"Condado de Koprivnica-Križevci\"\n\n#: hr/hr_choices.py:21\nmsgid \"Krapinsko-zagorska županija\"\nmsgstr \"Condado de Krapina-Zagorje\"\n\n#: hr/hr_choices.py:22\nmsgid \"Ličko-senjska županija\"\nmsgstr \"Condado de Lika-Senj\"\n\n#: hr/hr_choices.py:23\nmsgid \"Međimurska županija\"\nmsgstr \"Condado de Međimurje\"\n\n#: hr/hr_choices.py:24\nmsgid \"Osječko-baranjska županija\"\nmsgstr \"Condado de Osijek-Baranja\"\n\n#: hr/hr_choices.py:25\nmsgid \"Požeško-slavonska županija\"\nmsgstr \"Condado de Požega-Eslavonia\"\n\n#: hr/hr_choices.py:26\nmsgid \"Primorsko-goranska županija\"\nmsgstr \"Condado de Primorje-Gorski Kotar\"\n\n#: hr/hr_choices.py:27\nmsgid \"Sisačko-moslavačka županija\"\nmsgstr \"Condado de Sisak-Moslavina\"\n\n#: hr/hr_choices.py:28\nmsgid \"Splitsko-dalmatinska županija\"\nmsgstr \"Condado de Split-Dalmacia\"\n\n#: hr/hr_choices.py:29\nmsgid \"Šibensko-kninska županija\"\nmsgstr \"Condado de Šibenik-Knin\"\n\n#: hr/hr_choices.py:30\nmsgid \"Varaždinska županija\"\nmsgstr \"Condado de Varaždin\"\n\n#: hr/hr_choices.py:31\nmsgid \"Virovitičko-podravska županija\"\nmsgstr \"Condado de Virovitica-Podravina\"\n\n#: hr/hr_choices.py:32\nmsgid \"Vukovarsko-srijemska županija\"\nmsgstr \"Condado de Vukovar-Srijem\"\n\n#: hr/hr_choices.py:33\nmsgid \"Zadarska županija\"\nmsgstr \"Condado de Zadar\"\n\n#: hr/hr_choices.py:34\nmsgid \"Zagrebačka županija\"\nmsgstr \"Condado de Zagreb\"\n\n#: id/forms.py:31\nmsgid \"Enter a valid post code\"\nmsgstr \"Insira un código postal válido.\"\n\n#: id/forms.py:176\nmsgid \"Enter a valid NIK/KTP number\"\nmsgstr \"Insira un número NIK/KTP válido.\"\n\n#: id/id_choices.py:15\nmsgid \"Aceh\"\nmsgstr \"Aceh\"\n\n#: id/id_choices.py:16 id/id_choices.py:79\nmsgid \"Bali\"\nmsgstr \"Bali\"\n\n#: id/id_choices.py:17 id/id_choices.py:51\nmsgid \"Banten\"\nmsgstr \"Banten\"\n\n#: id/id_choices.py:18 id/id_choices.py:60\nmsgid \"Bengkulu\"\nmsgstr \"Bengkulu\"\n\n#: id/id_choices.py:19 id/id_choices.py:53\nmsgid \"Yogyakarta\"\nmsgstr \"Yogyakarta\"\n\n#: id/id_choices.py:20 id/id_choices.py:57\nmsgid \"Jakarta\"\nmsgstr \"Iacarta\"\n\n#: id/id_choices.py:21 id/id_choices.py:81\nmsgid \"Gorontalo\"\nmsgstr \"Gorontalo\"\n\n#: id/id_choices.py:22 id/id_choices.py:63\nmsgid \"Jambi\"\nmsgstr \"Jambi\"\n\n#: id/id_choices.py:23\nmsgid \"Jawa Barat\"\nmsgstr \"Xava Occidental\"\n\n#: id/id_choices.py:24\nmsgid \"Jawa Tengah\"\nmsgstr \"Xava Central\"\n\n#: id/id_choices.py:25\nmsgid \"Jawa Timur\"\nmsgstr \"Xava Oriental\"\n\n#: id/id_choices.py:26 id/id_choices.py:94\nmsgid \"Kalimantan Barat\"\nmsgstr \"Kalimantan Occidental\"\n\n#: id/id_choices.py:27 id/id_choices.py:72\nmsgid \"Kalimantan Selatan\"\nmsgstr \"Kalimantan Meridional\"\n\n#: id/id_choices.py:28 id/id_choices.py:95\nmsgid \"Kalimantan Tengah\"\nmsgstr \"Kalimantan Central\"\n\n#: id/id_choices.py:29 id/id_choices.py:96\nmsgid \"Kalimantan Timur\"\nmsgstr \"Kalimantan Oriental\"\n\n#: id/id_choices.py:30\nmsgid \"Kepulauan Bangka-Belitung\"\nmsgstr \"Illas Bangka-Belitung\"\n\n#: id/id_choices.py:31 id/id_choices.py:68\nmsgid \"Kepulauan Riau\"\nmsgstr \"Illas Riau\"\n\n#: id/id_choices.py:32 id/id_choices.py:61\nmsgid \"Lampung\"\nmsgstr \"Lampung\"\n\n#: id/id_choices.py:33 id/id_choices.py:76\nmsgid \"Maluku\"\nmsgstr \"Molucas\"\n\n#: id/id_choices.py:34 id/id_choices.py:77\nmsgid \"Maluku Utara\"\nmsgstr \"Malucas Setentrional\"\n\n#: id/id_choices.py:35\nmsgid \"Nusa Tenggara Barat\"\nmsgstr \"Nusatenggara Occidental\"\n\n#: id/id_choices.py:36\nmsgid \"Nusa Tenggara Timur\"\nmsgstr \"Nusatenggara Oriental\"\n\n#: id/id_choices.py:37\nmsgid \"Papua\"\nmsgstr \"Papúa\"\n\n#: id/id_choices.py:38\nmsgid \"Papua Barat\"\nmsgstr \"Papúa Occidental\"\n\n#: id/id_choices.py:39 id/id_choices.py:66\nmsgid \"Riau\"\nmsgstr \"Riau\"\n\n#: id/id_choices.py:40 id/id_choices.py:74\nmsgid \"Sulawesi Barat\"\nmsgstr \"Célebes Occidental\"\n\n#: id/id_choices.py:41 id/id_choices.py:75\nmsgid \"Sulawesi Selatan\"\nmsgstr \"Célebes Meridional\"\n\n#: id/id_choices.py:42 id/id_choices.py:82\nmsgid \"Sulawesi Tengah\"\nmsgstr \"Célebes Central\"\n\n#: id/id_choices.py:43 id/id_choices.py:85\nmsgid \"Sulawesi Tenggara\"\nmsgstr \"Célebes Suroriental\"\n\n#: id/id_choices.py:44\nmsgid \"Sulawesi Utara\"\nmsgstr \"Célebes Setentrional\"\n\n#: id/id_choices.py:45 id/id_choices.py:58\nmsgid \"Sumatera Barat\"\nmsgstr \"Sumatra Occidental\"\n\n#: id/id_choices.py:46 id/id_choices.py:62\nmsgid \"Sumatera Selatan\"\nmsgstr \"Sumatra Meridional\"\n\n#: id/id_choices.py:47 id/id_choices.py:64\nmsgid \"Sumatera Utara\"\nmsgstr \"Sumatra Setentrional\"\n\n#: id/id_choices.py:52\nmsgid \"Magelang\"\nmsgstr \"Magelang\"\n\n#: id/id_choices.py:54\nmsgid \"Surakarta - Solo\"\nmsgstr \"Surakarta - Solo\"\n\n#: id/id_choices.py:55\nmsgid \"Madiun\"\nmsgstr \"Madiun\"\n\n#: id/id_choices.py:56\nmsgid \"Kediri\"\nmsgstr \"Kediri\"\n\n#: id/id_choices.py:59\nmsgid \"Tapanuli\"\nmsgstr \"Tapanuli\"\n\n#: id/id_choices.py:65\nmsgid \"Nanggroe Aceh Darussalam\"\nmsgstr \"Nanggroe Aceh Darussalam\"\n\n#: id/id_choices.py:67\nmsgid \"Kepulauan Bangka Belitung\"\nmsgstr \"Arquipélago Bangka Belitung\"\n\n#: id/id_choices.py:69\nmsgid \"Corps Consulate\"\nmsgstr \"Corpo consular\"\n\n#: id/id_choices.py:70\nmsgid \"Corps Diplomatic\"\nmsgstr \"Corpo diplomático\"\n\n#: id/id_choices.py:71\nmsgid \"Bandung\"\nmsgstr \"Bandung\"\n\n#: id/id_choices.py:73\nmsgid \"Sulawesi Utara Daratan\"\nmsgstr \"Sulawesi Utara Daratan\"\n\n#: id/id_choices.py:78\nmsgid \"NTT - Timor\"\nmsgstr \"NTT - Timor\"\n\n#: id/id_choices.py:80\nmsgid \"Sulawesi Utara Kepulauan\"\nmsgstr \"Sumatra Setentrional Arquipélago\"\n\n#: id/id_choices.py:83\nmsgid \"NTB - Lombok\"\nmsgstr \"NTB - Lombok\"\n\n#: id/id_choices.py:84\nmsgid \"Papua dan Papua Barat\"\nmsgstr \"Papúa e Papúa Occidental\"\n\n#: id/id_choices.py:86\nmsgid \"Cirebon\"\nmsgstr \"Cirebon\"\n\n#: id/id_choices.py:87\nmsgid \"NTB - Sumbawa\"\nmsgstr \"NTB - Sumbawa\"\n\n#: id/id_choices.py:88\nmsgid \"NTT - Flores\"\nmsgstr \"NTT - Flores\"\n\n#: id/id_choices.py:89\nmsgid \"NTT - Sumba\"\nmsgstr \"NTT - Sumba\"\n\n#: id/id_choices.py:90\nmsgid \"Bogor\"\nmsgstr \"Bogor\"\n\n#: id/id_choices.py:91\nmsgid \"Pekalongan\"\nmsgstr \"Pekalongan\"\n\n#: id/id_choices.py:92\nmsgid \"Semarang\"\nmsgstr \"Semarang\"\n\n#: id/id_choices.py:93\nmsgid \"Pati\"\nmsgstr \"Pati\"\n\n#: id/id_choices.py:97\nmsgid \"Surabaya\"\nmsgstr \"Surabaya\"\n\n#: id/id_choices.py:98\nmsgid \"Madura\"\nmsgstr \"Madura\"\n\n#: id/id_choices.py:99\nmsgid \"Malang\"\nmsgstr \"Malang\"\n\n#: id/id_choices.py:100\nmsgid \"Jember\"\nmsgstr \"Jember\"\n\n#: id/id_choices.py:101\nmsgid \"Banyumas\"\nmsgstr \"Banyumas\"\n\n#: id/id_choices.py:102\nmsgid \"Federal Government\"\nmsgstr \"Goberno federal\"\n\n#: id/id_choices.py:103\nmsgid \"Bojonegoro\"\nmsgstr \"Bojonegoro\"\n\n#: id/id_choices.py:104\nmsgid \"Purwakarta\"\nmsgstr \"Purwakarta\"\n\n#: id/id_choices.py:105\nmsgid \"Sidoarjo\"\nmsgstr \"Sidoarjo\"\n\n#: id/id_choices.py:106\nmsgid \"Garut\"\nmsgstr \"Garut\"\n\n#: ie/ie_counties.py:8\nmsgid \"Antrim\"\nmsgstr \"Antrim\"\n\n#: ie/ie_counties.py:9\nmsgid \"Armagh\"\nmsgstr \"Armagh\"\n\n#: ie/ie_counties.py:10\nmsgid \"Carlow\"\nmsgstr \"Carlow\"\n\n#: ie/ie_counties.py:11\nmsgid \"Cavan\"\nmsgstr \"Cavan\"\n\n#: ie/ie_counties.py:12\nmsgid \"Clare\"\nmsgstr \"Clare\"\n\n#: ie/ie_counties.py:13\nmsgid \"Cork\"\nmsgstr \"Cork\"\n\n#: ie/ie_counties.py:14\nmsgid \"Derry\"\nmsgstr \"Derry\"\n\n#: ie/ie_counties.py:15\nmsgid \"Donegal\"\nmsgstr \"Donegal\"\n\n#: ie/ie_counties.py:16\nmsgid \"Down\"\nmsgstr \"Down\"\n\n#: ie/ie_counties.py:17\nmsgid \"Dublin\"\nmsgstr \"Dublín\"\n\n#: ie/ie_counties.py:18\nmsgid \"Fermanagh\"\nmsgstr \"Fermanagh\"\n\n#: ie/ie_counties.py:19\nmsgid \"Galway\"\nmsgstr \"Galway\"\n\n#: ie/ie_counties.py:20\nmsgid \"Kerry\"\nmsgstr \"Kerry\"\n\n#: ie/ie_counties.py:21\nmsgid \"Kildare\"\nmsgstr \"Kildare\"\n\n#: ie/ie_counties.py:22\nmsgid \"Kilkenny\"\nmsgstr \"Kilkenny\"\n\n#: ie/ie_counties.py:23\nmsgid \"Laois\"\nmsgstr \"Laois\"\n\n#: ie/ie_counties.py:24\nmsgid \"Leitrim\"\nmsgstr \"Leitrim\"\n\n#: ie/ie_counties.py:25\nmsgid \"Limerick\"\nmsgstr \"Limerick\"\n\n#: ie/ie_counties.py:26\nmsgid \"Longford\"\nmsgstr \"Longford\"\n\n#: ie/ie_counties.py:27\nmsgid \"Louth\"\nmsgstr \"Louth\"\n\n#: ie/ie_counties.py:28\nmsgid \"Mayo\"\nmsgstr \"Mayo\"\n\n#: ie/ie_counties.py:29\nmsgid \"Meath\"\nmsgstr \"Meath\"\n\n#: ie/ie_counties.py:30\nmsgid \"Monaghan\"\nmsgstr \"Monaghan\"\n\n#: ie/ie_counties.py:31\nmsgid \"Offaly\"\nmsgstr \"Offaly\"\n\n#: ie/ie_counties.py:32\nmsgid \"Roscommon\"\nmsgstr \"Roscommon\"\n\n#: ie/ie_counties.py:33\nmsgid \"Sligo\"\nmsgstr \"Sligo\"\n\n#: ie/ie_counties.py:34\nmsgid \"Tipperary\"\nmsgstr \"Tipperary\"\n\n#: ie/ie_counties.py:35\nmsgid \"Tyrone\"\nmsgstr \"Tyrone\"\n\n#: ie/ie_counties.py:36\nmsgid \"Waterford\"\nmsgstr \"Waterford\"\n\n#: ie/ie_counties.py:37\nmsgid \"Westmeath\"\nmsgstr \"Westmeath\"\n\n#: ie/ie_counties.py:38\nmsgid \"Wexford\"\nmsgstr \"Wexford\"\n\n#: ie/ie_counties.py:39\nmsgid \"Wicklow\"\nmsgstr \"Wicklow\"\n\n#: il/forms.py:32\nmsgid \"Enter a postal code in the format XXXXX\"\nmsgstr \"Insira un código postal no formato XXXXX\"\n\n#: il/forms.py:51\nmsgid \"Enter a valid ID number.\"\nmsgstr \"Introduza un número de ID válido.\"\n\n#: in_/forms.py:41\nmsgid \"Enter a zip code in the format XXXXXX or XXX XXX.\"\nmsgstr \"Insira un código postal co formato XXXXXX ou XXX XXX.\"\n\n#: in_/forms.py:64\nmsgid \"Enter an Indian state or territory.\"\nmsgstr \"Insira un estado ou territorio da India.\"\n\n#: in_/forms.py:103\nmsgid \"Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.\"\nmsgstr \"Os números de teléfono debe estar no formato 02X-8, 03X-7X ou 04X-6X.\"\n\n#: is_/forms.py:22\nmsgid \"\"\n\"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.\"\nmsgstr \"\"\n\"Insira un número de identificación islandés válido. O formato é XXXXXX-XXXX.\"\n\n#: is_/forms.py:23\nmsgid \"The Icelandic identification number is not valid.\"\nmsgstr \"O número de identificación islandés non é válido.\"\n\n#: it/forms.py:21\nmsgid \"Enter a valid zip code.\"\nmsgstr \"Insira un código postal válido.\"\n\n#: it/forms.py:48\nmsgid \"Enter a valid Social Security number.\"\nmsgstr \"Insira un número da seguridade social válido.\"\n\n#: it/forms.py:73\nmsgid \"Enter a valid VAT number.\"\nmsgstr \"Insira un número de IVE válido.\"\n\n#: jp/forms.py:19\nmsgid \"Enter a postal code in the format XXXXXXX or XXX-XXXX.\"\nmsgstr \"Insira un código postal no formato XXXXXXX ou XXX-XXXX.\"\n\n#: jp/jp_prefectures.py:4\nmsgid \"Hokkaido\"\nmsgstr \"Hokkaidō\"\n\n#: jp/jp_prefectures.py:5\nmsgid \"Aomori\"\nmsgstr \"Aomori\"\n\n#: jp/jp_prefectures.py:6\nmsgid \"Iwate\"\nmsgstr \"Iwate\"\n\n#: jp/jp_prefectures.py:7\nmsgid \"Miyagi\"\nmsgstr \"Miyagi\"\n\n#: jp/jp_prefectures.py:8\nmsgid \"Akita\"\nmsgstr \"Akita\"\n\n#: jp/jp_prefectures.py:9\nmsgid \"Yamagata\"\nmsgstr \"Yamagata\"\n\n#: jp/jp_prefectures.py:10\nmsgid \"Fukushima\"\nmsgstr \"Fukushima\"\n\n#: jp/jp_prefectures.py:11\nmsgid \"Ibaraki\"\nmsgstr \"Ibaraki\"\n\n#: jp/jp_prefectures.py:12\nmsgid \"Tochigi\"\nmsgstr \"Tochigi\"\n\n#: jp/jp_prefectures.py:13\nmsgid \"Gunma\"\nmsgstr \"Gunma\"\n\n#: jp/jp_prefectures.py:14\nmsgid \"Saitama\"\nmsgstr \"Saitama\"\n\n#: jp/jp_prefectures.py:15\nmsgid \"Chiba\"\nmsgstr \"Chiba\"\n\n#: jp/jp_prefectures.py:16\nmsgid \"Tokyo\"\nmsgstr \"Toquio\"\n\n#: jp/jp_prefectures.py:17\nmsgid \"Kanagawa\"\nmsgstr \"Kanagawa\"\n\n#: jp/jp_prefectures.py:18\nmsgid \"Yamanashi\"\nmsgstr \"Yamanashi\"\n\n#: jp/jp_prefectures.py:19\nmsgid \"Nagano\"\nmsgstr \"Nagano\"\n\n#: jp/jp_prefectures.py:20\nmsgid \"Niigata\"\nmsgstr \"Niigata\"\n\n#: jp/jp_prefectures.py:21\nmsgid \"Toyama\"\nmsgstr \"Toyama\"\n\n#: jp/jp_prefectures.py:22\nmsgid \"Ishikawa\"\nmsgstr \"Ishikawa\"\n\n#: jp/jp_prefectures.py:23\nmsgid \"Fukui\"\nmsgstr \"Fukui\"\n\n#: jp/jp_prefectures.py:24\nmsgid \"Gifu\"\nmsgstr \"Gifu\"\n\n#: jp/jp_prefectures.py:25\nmsgid \"Shizuoka\"\nmsgstr \"Shizuoka\"\n\n#: jp/jp_prefectures.py:26\nmsgid \"Aichi\"\nmsgstr \"Aichi\"\n\n#: jp/jp_prefectures.py:27\nmsgid \"Mie\"\nmsgstr \"Mie\"\n\n#: jp/jp_prefectures.py:28\nmsgid \"Shiga\"\nmsgstr \"Shiga\"\n\n#: jp/jp_prefectures.py:29\nmsgid \"Kyoto\"\nmsgstr \"Kioto\"\n\n#: jp/jp_prefectures.py:30\nmsgid \"Osaka\"\nmsgstr \"Osaka\"\n\n#: jp/jp_prefectures.py:31\nmsgid \"Hyogo\"\nmsgstr \"Hyōgo\"\n\n#: jp/jp_prefectures.py:32\nmsgid \"Nara\"\nmsgstr \"Nara\"\n\n#: jp/jp_prefectures.py:33\nmsgid \"Wakayama\"\nmsgstr \"Wakayama\"\n\n#: jp/jp_prefectures.py:34\nmsgid \"Tottori\"\nmsgstr \"Tottori\"\n\n#: jp/jp_prefectures.py:35\nmsgid \"Shimane\"\nmsgstr \"Shimane\"\n\n#: jp/jp_prefectures.py:36\nmsgid \"Okayama\"\nmsgstr \"Okayama\"\n\n#: jp/jp_prefectures.py:37\nmsgid \"Hiroshima\"\nmsgstr \"Hiroshima\"\n\n#: jp/jp_prefectures.py:38\nmsgid \"Yamaguchi\"\nmsgstr \"Yamaguchi\"\n\n#: jp/jp_prefectures.py:39\nmsgid \"Tokushima\"\nmsgstr \"Tokushima\"\n\n#: jp/jp_prefectures.py:40\nmsgid \"Kagawa\"\nmsgstr \"Kagawa\"\n\n#: jp/jp_prefectures.py:41\nmsgid \"Ehime\"\nmsgstr \"Ehime\"\n\n#: jp/jp_prefectures.py:42\nmsgid \"Kochi\"\nmsgstr \"Kōchi\"\n\n#: jp/jp_prefectures.py:43\nmsgid \"Fukuoka\"\nmsgstr \"Fukuoka\"\n\n#: jp/jp_prefectures.py:44\nmsgid \"Saga\"\nmsgstr \"Saga\"\n\n#: jp/jp_prefectures.py:45\nmsgid \"Nagasaki\"\nmsgstr \"Nagasaki\"\n\n#: jp/jp_prefectures.py:46\nmsgid \"Kumamoto\"\nmsgstr \"Kumamoto\"\n\n#: jp/jp_prefectures.py:47\nmsgid \"Oita\"\nmsgstr \"Ōita\"\n\n#: jp/jp_prefectures.py:48\nmsgid \"Miyazaki\"\nmsgstr \"Miyazaki\"\n\n#: jp/jp_prefectures.py:49\nmsgid \"Kagoshima\"\nmsgstr \"Kagoshima\"\n\n#: jp/jp_prefectures.py:50\nmsgid \"Okinawa\"\nmsgstr \"Okinawa\"\n\n#: kw/forms.py:27\nmsgid \"Enter a valid Kuwaiti Civil ID number\"\nmsgstr \"Insira un número de Identidade Civil kuwaití válido\"\n\n#: mk/forms.py:18\nmsgid \"\"\n\"Identity card numbers must contain either 4 to 7 digits or an uppercase \"\n\"letter and 7 digits.\"\nmsgstr \"\"\n\"Os números de tarxetas de identidade deben conter ou ben de 4 a 7 díxitos ou \"\n\"ben unha letra maiúscula e 7 díxitos.\"\n\n#: mk/forms.py:57 si/forms.py:24\nmsgid \"This field should contain exactly 13 digits.\"\nmsgstr \"Este campo debe conter exactamente 13 díxitos.\"\n\n#: mk/forms.py:58\nmsgid \"The first 7 digits of the UMCN must represent a valid past date.\"\nmsgstr \"\"\n\"Os 7 primeiros díxitos do UMCN deben representar unha data pasada válida.\"\n\n#: mk/forms.py:59\nmsgid \"The UMCN is not valid.\"\nmsgstr \"O UMCN non é válido.\"\n\n#: mk/mk_choices.py:10\nmsgid \"Aerodrom\"\nmsgstr \"Aerodrom\"\n\n#: mk/mk_choices.py:11\nmsgid \"Aračinovo\"\nmsgstr \"Aračinovo\"\n\n#: mk/mk_choices.py:12\nmsgid \"Berovo\"\nmsgstr \"Berovo\"\n\n#: mk/mk_choices.py:13\nmsgid \"Bitola\"\nmsgstr \"Bitola\"\n\n#: mk/mk_choices.py:14\nmsgid \"Bogdanci\"\nmsgstr \"Bogdanci\"\n\n#: mk/mk_choices.py:15\nmsgid \"Bogovinje\"\nmsgstr \"Bogovinje\"\n\n#: mk/mk_choices.py:16\nmsgid \"Bosilovo\"\nmsgstr \"Bosilovo\"\n\n#: mk/mk_choices.py:17\nmsgid \"Brvenica\"\nmsgstr \"Brvenica\"\n\n#: mk/mk_choices.py:18\nmsgid \"Butel\"\nmsgstr \"Butel\"\n\n#: mk/mk_choices.py:19\nmsgid \"Valandovo\"\nmsgstr \"Valandovo\"\n\n#: mk/mk_choices.py:20\nmsgid \"Vasilevo\"\nmsgstr \"Vasilevo\"\n\n#: mk/mk_choices.py:21\nmsgid \"Vevčani\"\nmsgstr \"Vevčani\"\n\n#: mk/mk_choices.py:22\nmsgid \"Veles\"\nmsgstr \"Veles\"\n\n#: mk/mk_choices.py:23\nmsgid \"Vinica\"\nmsgstr \"Vinica\"\n\n#: mk/mk_choices.py:24\nmsgid \"Vraneštica\"\nmsgstr \"Vraneštica\"\n\n#: mk/mk_choices.py:25\nmsgid \"Vrapčište\"\nmsgstr \"Vrapčište\"\n\n#: mk/mk_choices.py:26\nmsgid \"Gazi Baba\"\nmsgstr \"Gazi Baba\"\n\n#: mk/mk_choices.py:27\nmsgid \"Gevgelija\"\nmsgstr \"Gevgelija\"\n\n#: mk/mk_choices.py:28\nmsgid \"Gostivar\"\nmsgstr \"Gostivar\"\n\n#: mk/mk_choices.py:29\nmsgid \"Gradsko\"\nmsgstr \"Gradsko\"\n\n#: mk/mk_choices.py:30\nmsgid \"Debar\"\nmsgstr \"Debar\"\n\n#: mk/mk_choices.py:31\nmsgid \"Debarca\"\nmsgstr \"Debarca\"\n\n#: mk/mk_choices.py:32\nmsgid \"Delčevo\"\nmsgstr \"Delčevo\"\n\n#: mk/mk_choices.py:33\nmsgid \"Demir Kapija\"\nmsgstr \"Demir Kapija\"\n\n#: mk/mk_choices.py:34\nmsgid \"Demir Hisar\"\nmsgstr \"Demir Hisar\"\n\n#: mk/mk_choices.py:35\nmsgid \"Dolneni\"\nmsgstr \"Dolneni\"\n\n#: mk/mk_choices.py:36\nmsgid \"Drugovo\"\nmsgstr \"Drugovo\"\n\n#: mk/mk_choices.py:37\nmsgid \"Gjorče Petrov\"\nmsgstr \"Gjorce Petrov\"\n\n#: mk/mk_choices.py:38\nmsgid \"Želino\"\nmsgstr \"Želino\"\n\n#: mk/mk_choices.py:39\nmsgid \"Zajas\"\nmsgstr \"Zajas\"\n\n#: mk/mk_choices.py:40\nmsgid \"Zelenikovo\"\nmsgstr \"Zelenikovo\"\n\n#: mk/mk_choices.py:41\nmsgid \"Zrnovci\"\nmsgstr \"Zrnovci\"\n\n#: mk/mk_choices.py:42\nmsgid \"Ilinden\"\nmsgstr \"Ilinden\"\n\n#: mk/mk_choices.py:43\nmsgid \"Jegunovce\"\nmsgstr \"Jegunovce\"\n\n#: mk/mk_choices.py:44\nmsgid \"Kavadarci\"\nmsgstr \"Kavadarci\"\n\n#: mk/mk_choices.py:45\nmsgid \"Karbinci\"\nmsgstr \"Karbinci\"\n\n#: mk/mk_choices.py:46\nmsgid \"Karpoš\"\nmsgstr \"Karpoš\"\n\n#: mk/mk_choices.py:47\nmsgid \"Kisela Voda\"\nmsgstr \"Kisela Voda\"\n\n#: mk/mk_choices.py:48\nmsgid \"Kičevo\"\nmsgstr \"Kičevo\"\n\n#: mk/mk_choices.py:49\nmsgid \"Konče\"\nmsgstr \"Konče\"\n\n#: mk/mk_choices.py:50\nmsgid \"Koćani\"\nmsgstr \"Koćani\"\n\n#: mk/mk_choices.py:51\nmsgid \"Kratovo\"\nmsgstr \"Kratovo\"\n\n#: mk/mk_choices.py:52\nmsgid \"Kriva Palanka\"\nmsgstr \"Kriva Palanka\"\n\n#: mk/mk_choices.py:53\nmsgid \"Krivogaštani\"\nmsgstr \"Krivogaštani\"\n\n#: mk/mk_choices.py:54\nmsgid \"Kruševo\"\nmsgstr \"Kruševo\"\n\n#: mk/mk_choices.py:55\nmsgid \"Kumanovo\"\nmsgstr \"Kumanovo\"\n\n#: mk/mk_choices.py:56\nmsgid \"Lipkovo\"\nmsgstr \"Lipkovo\"\n\n#: mk/mk_choices.py:57\nmsgid \"Lozovo\"\nmsgstr \"Lozovo\"\n\n#: mk/mk_choices.py:58\nmsgid \"Mavrovo i Rostuša\"\nmsgstr \"Mavrovo i Rostuša\"\n\n#: mk/mk_choices.py:59\nmsgid \"Makedonska Kamenica\"\nmsgstr \"Makedonska Kamenica\"\n\n#: mk/mk_choices.py:60\nmsgid \"Makedonski Brod\"\nmsgstr \"Makedonski Brod\"\n\n#: mk/mk_choices.py:61\nmsgid \"Mogila\"\nmsgstr \"Mogila\"\n\n#: mk/mk_choices.py:62\nmsgid \"Negotino\"\nmsgstr \"Negotino\"\n\n#: mk/mk_choices.py:63\nmsgid \"Novaci\"\nmsgstr \"Novaci\"\n\n#: mk/mk_choices.py:64\nmsgid \"Novo Selo\"\nmsgstr \"Novo Selo\"\n\n#: mk/mk_choices.py:65\nmsgid \"Oslomej\"\nmsgstr \"Oslomej\"\n\n#: mk/mk_choices.py:66\nmsgid \"Ohrid\"\nmsgstr \"Ohrid\"\n\n#: mk/mk_choices.py:67\nmsgid \"Petrovec\"\nmsgstr \"Petrovec\"\n\n#: mk/mk_choices.py:68\nmsgid \"Pehčevo\"\nmsgstr \"Pehčevo\"\n\n#: mk/mk_choices.py:69\nmsgid \"Plasnica\"\nmsgstr \"Plasnica\"\n\n#: mk/mk_choices.py:70\nmsgid \"Prilep\"\nmsgstr \"Prilep\"\n\n#: mk/mk_choices.py:71\nmsgid \"Probištip\"\nmsgstr \"Probištip\"\n\n#: mk/mk_choices.py:72\nmsgid \"Radoviš\"\nmsgstr \"Radoviš\"\n\n#: mk/mk_choices.py:73\nmsgid \"Rankovce\"\nmsgstr \"Rankovce\"\n\n#: mk/mk_choices.py:74\nmsgid \"Resen\"\nmsgstr \"Resen\"\n\n#: mk/mk_choices.py:75\nmsgid \"Rosoman\"\nmsgstr \"Rosoman\"\n\n#: mk/mk_choices.py:76\nmsgid \"Saraj\"\nmsgstr \"Saraj\"\n\n#: mk/mk_choices.py:77\nmsgid \"Sveti Nikole\"\nmsgstr \"Sveti Nikole\"\n\n#: mk/mk_choices.py:78\nmsgid \"Sopište\"\nmsgstr \"Sopište\"\n\n#: mk/mk_choices.py:79\nmsgid \"Star Dojran\"\nmsgstr \"Star Dojran\"\n\n#: mk/mk_choices.py:80\nmsgid \"Staro Nagoričane\"\nmsgstr \"Staro Nagoričane\"\n\n#: mk/mk_choices.py:81\nmsgid \"Struga\"\nmsgstr \"Struga\"\n\n#: mk/mk_choices.py:82\nmsgid \"Strumica\"\nmsgstr \"Strumica\"\n\n#: mk/mk_choices.py:83\nmsgid \"Studeničani\"\nmsgstr \"Studeničani\"\n\n#: mk/mk_choices.py:84\nmsgid \"Tearce\"\nmsgstr \"Tearce\"\n\n#: mk/mk_choices.py:85\nmsgid \"Tetovo\"\nmsgstr \"Tetovo\"\n\n#: mk/mk_choices.py:86\nmsgid \"Centar\"\nmsgstr \"Centar\"\n\n#: mk/mk_choices.py:87\nmsgid \"Centar-Župa\"\nmsgstr \"Centar-Župa\"\n\n#: mk/mk_choices.py:88\nmsgid \"Čair\"\nmsgstr \"Čair\"\n\n#: mk/mk_choices.py:89\nmsgid \"Čaška\"\nmsgstr \"Čaška\"\n\n#: mk/mk_choices.py:90\nmsgid \"Češinovo-Obleševo\"\nmsgstr \"Češinovo-Obleševo\"\n\n#: mk/mk_choices.py:91\nmsgid \"Čučer-Sandevo\"\nmsgstr \"Češinovo-Obleševo\"\n\n#: mk/mk_choices.py:92\nmsgid \"Štip\"\nmsgstr \"Štip\"\n\n#: mk/mk_choices.py:93\nmsgid \"Šuto Orizari\"\nmsgstr \"Šuto Orizari\"\n\n#: mk/models.py:11\nmsgid \"Macedonian identity card number\"\nmsgstr \"Número de tarxeta de identidade macedonia\"\n\n#: mk/models.py:25\nmsgid \"A Macedonian municipality (2 character code)\"\nmsgstr \"Un municipio macedonio (código de 2 caracteres)\"\n\n#: mk/models.py:35\nmsgid \"Unique master citizen number (13 digits)\"\nmsgstr \"Número de cidadán único (13 díxitos)\"\n\n#: mx/forms.py:67\nmsgid \"Enter a valid zip code in the format XXXXX.\"\nmsgstr \"Insira un código postal válido no formato XXXXX.\"\n\n#: mx/forms.py:110\nmsgid \"Enter a valid RFC.\"\nmsgstr \"Insira un RFC válido.\"\n\n#: mx/forms.py:111\nmsgid \"Invalid checksum for RFC.\"\nmsgstr \"Suma de comprobación de RFC non válida.\"\n\n#: mx/forms.py:191\nmsgid \"Enter a valid CURP.\"\nmsgstr \"Insira un CURP válido.\"\n\n#: mx/forms.py:192\nmsgid \"Invalid checksum for CURP.\"\nmsgstr \"Suma de comprobación do CURP non válida.\"\n\n#: mx/models.py:14\nmsgid \"Mexico state (three uppercase letters)\"\nmsgstr \"Estado mexicano (tres letras maiúsculas)\"\n\n#: mx/models.py:27\nmsgid \"Mexico zip code\"\nmsgstr \"Código postal de México\"\n\n#: mx/models.py:44\nmsgid \"Mexican RFC\"\nmsgstr \"RFC mexicano\"\n\n#: mx/models.py:61\nmsgid \"Mexican CURP\"\nmsgstr \"CURP mexicano\"\n\n#: mx/mx_states.py:14\nmsgid \"Aguascalientes\"\nmsgstr \"Aguascalientes\"\n\n#: mx/mx_states.py:15\nmsgid \"Baja California\"\nmsgstr \"Baixa California\"\n\n#: mx/mx_states.py:16\nmsgid \"Baja California Sur\"\nmsgstr \"Baixa California Sur\"\n\n#: mx/mx_states.py:17\nmsgid \"Campeche\"\nmsgstr \"Campeche\"\n\n#: mx/mx_states.py:18\nmsgid \"Chihuahua\"\nmsgstr \"Chihuahua\"\n\n#: mx/mx_states.py:19\nmsgid \"Chiapas\"\nmsgstr \"Chiapas\"\n\n#: mx/mx_states.py:20\nmsgid \"Coahuila\"\nmsgstr \"Coahuila\"\n\n#: mx/mx_states.py:21\nmsgid \"Colima\"\nmsgstr \"Colima\"\n\n#: mx/mx_states.py:22\nmsgid \"Distrito Federal\"\nmsgstr \"Distrito Federal\"\n\n#: mx/mx_states.py:23\nmsgid \"Durango\"\nmsgstr \"Durango\"\n\n#: mx/mx_states.py:24\nmsgid \"Guerrero\"\nmsgstr \"Guerrero\"\n\n#: mx/mx_states.py:25\nmsgid \"Guanajuato\"\nmsgstr \"Guanajuato\"\n\n#: mx/mx_states.py:26\nmsgid \"Hidalgo\"\nmsgstr \"Hidalgo\"\n\n#: mx/mx_states.py:27\nmsgid \"Jalisco\"\nmsgstr \"Jalisco\"\n\n#: mx/mx_states.py:28\nmsgid \"Estado de México\"\nmsgstr \"Estado de México\"\n\n#: mx/mx_states.py:29\nmsgid \"Michoacán\"\nmsgstr \"Michoacán\"\n\n#: mx/mx_states.py:30\nmsgid \"Morelos\"\nmsgstr \"Morelos\"\n\n#: mx/mx_states.py:31\nmsgid \"Nayarit\"\nmsgstr \"Nayarit\"\n\n#: mx/mx_states.py:32\nmsgid \"Nuevo León\"\nmsgstr \"Nuevo León\"\n\n#: mx/mx_states.py:33\nmsgid \"Oaxaca\"\nmsgstr \"Oaxaca\"\n\n#: mx/mx_states.py:34\nmsgid \"Puebla\"\nmsgstr \"Puebla\"\n\n#: mx/mx_states.py:35\nmsgid \"Querétaro\"\nmsgstr \"Querétaro\"\n\n#: mx/mx_states.py:36\nmsgid \"Quintana Roo\"\nmsgstr \"Quintana Roo\"\n\n#: mx/mx_states.py:37\nmsgid \"Sinaloa\"\nmsgstr \"Sinaloa\"\n\n#: mx/mx_states.py:38\nmsgid \"San Luis Potosí\"\nmsgstr \"San Luis Potosí\"\n\n#: mx/mx_states.py:39\nmsgid \"Sonora\"\nmsgstr \"Sonora\"\n\n#: mx/mx_states.py:40\nmsgid \"Tabasco\"\nmsgstr \"Tabasco\"\n\n#: mx/mx_states.py:41\nmsgid \"Tamaulipas\"\nmsgstr \"Tamaulipas\"\n\n#: mx/mx_states.py:42\nmsgid \"Tlaxcala\"\nmsgstr \"Tlaxcala\"\n\n#: mx/mx_states.py:43\nmsgid \"Veracruz\"\nmsgstr \"Veracruz\"\n\n#: mx/mx_states.py:44\nmsgid \"Yucatán\"\nmsgstr \"Iucatán\"\n\n#: mx/mx_states.py:45\nmsgid \"Zacatecas\"\nmsgstr \"Zacatecas\"\n\n#: nl/forms.py:26\nmsgid \"Enter a valid postal code\"\nmsgstr \"Insira un código postal válido\"\n\n#: nl/forms.py:82\nmsgid \"Enter a valid SoFi number\"\nmsgstr \"Insira un número SoFi válido\"\n\n#: nl/nl_provinces.py:4\nmsgid \"Drenthe\"\nmsgstr \"Drenthe\"\n\n#: nl/nl_provinces.py:5\nmsgid \"Flevoland\"\nmsgstr \"Flevoland\"\n\n#: nl/nl_provinces.py:6\nmsgid \"Friesland\"\nmsgstr \"Frisia\"\n\n#: nl/nl_provinces.py:7\nmsgid \"Gelderland\"\nmsgstr \"Gueldria\"\n\n#: nl/nl_provinces.py:8\nmsgid \"Groningen\"\nmsgstr \"Groninga\"\n\n#: nl/nl_provinces.py:10\nmsgid \"Noord-Brabant\"\nmsgstr \"Brabante do Norte\"\n\n#: nl/nl_provinces.py:11\nmsgid \"Noord-Holland\"\nmsgstr \"Holanda Setentrional\"\n\n#: nl/nl_provinces.py:12\nmsgid \"Overijssel\"\nmsgstr \"Overijssel\"\n\n#: nl/nl_provinces.py:13\nmsgid \"Utrecht\"\nmsgstr \"Utrecht\"\n\n#: nl/nl_provinces.py:14\nmsgid \"Zeeland\"\nmsgstr \"Celandia\"\n\n#: nl/nl_provinces.py:15\nmsgid \"Zuid-Holland\"\nmsgstr \"Holanda Meridional\"\n\n#: no/forms.py:39\nmsgid \"Enter a valid Norwegian social security number.\"\nmsgstr \"Insira un número válida da seguridade social norueguesa.\"\n\n#: pe/forms.py:28\nmsgid \"This field requires 8 digits.\"\nmsgstr \"Este campo require 8 díxitos.\"\n\n#: pe/forms.py:56\nmsgid \"This field requires 11 digits.\"\nmsgstr \"Este campo require 11 díxitos.\"\n\n#: pl/forms.py:42\nmsgid \"National Identification Number consists of 11 digits.\"\nmsgstr \"O Número de identificación nacional consiste en 11 díxitos.\"\n\n#: pl/forms.py:43\nmsgid \"Wrong checksum for the National Identification Number.\"\nmsgstr \"\"\n\"A suma de verificación do Número de identificación nacional é incorrecta.\"\n\n#: pl/forms.py:79\nmsgid \"National ID Card Number consists of 3 letters and 6 digits.\"\nmsgstr \"\"\n\"O Número da Tarxeta Nacional de Identidade consiste de 3 letras e 6 díxitos.\"\n\n#: pl/forms.py:80\nmsgid \"Wrong checksum for the National ID Card Number.\"\nmsgstr \"\"\n\"Número de comprobación non válido para o Número da Tarxeta Nacional de \"\n\"Identidade.\"\n\n#: pl/forms.py:131\nmsgid \"\"\n\"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or \"\n\"XXXXXXXXXX.\"\nmsgstr \"\"\n\"Insira un campo de número fiscal (NIP) no formato  XXX-XXX-XX-XX, XXX-XX-XX-\"\n\"XXX ou XXXXXXXXXX.\"\n\n#: pl/forms.py:132\nmsgid \"Wrong checksum for the Tax Number (NIP).\"\nmsgstr \"Suma de comprobación non válida para o número fiscal (NIP).\"\n\n#: pl/forms.py:171\nmsgid \"National Business Register Number (REGON) consists of 9 or 14 digits.\"\nmsgstr \"\"\n\"O Número Nacional de Rexistro de Negocios (REGON) consiste de 9 ou 14 \"\n\"díxitos.\"\n\n#: pl/forms.py:172\nmsgid \"Wrong checksum for the National Business Register Number (REGON).\"\nmsgstr \"\"\n\"Suma de comprobación non válida para o Número Nacional de Rexistro de \"\n\"Negocios (REGON).\"\n\n#: pl/forms.py:212\nmsgid \"Enter a postal code in the format XX-XXX.\"\nmsgstr \"Insira un código postal no formato XX-XXX.\"\n\n#: pl/pl_voivodeships.py:8\nmsgid \"Lower Silesia\"\nmsgstr \"Baixa silesia\"\n\n#: pl/pl_voivodeships.py:9\nmsgid \"Kuyavia-Pomerania\"\nmsgstr \"Cuiavia-Pomerania\"\n\n#: pl/pl_voivodeships.py:10\nmsgid \"Lublin\"\nmsgstr \"Lublin\"\n\n#: pl/pl_voivodeships.py:11\nmsgid \"Lubusz\"\nmsgstr \"Lubusz\"\n\n#: pl/pl_voivodeships.py:12\nmsgid \"Lodz\"\nmsgstr \"Lodz\"\n\n#: pl/pl_voivodeships.py:13\nmsgid \"Lesser Poland\"\nmsgstr \"Baixa Polonia\"\n\n#: pl/pl_voivodeships.py:14\nmsgid \"Masovia\"\nmsgstr \"Masovia\"\n\n#: pl/pl_voivodeships.py:15\nmsgid \"Opole\"\nmsgstr \"Opole\"\n\n#: pl/pl_voivodeships.py:16\nmsgid \"Subcarpatia\"\nmsgstr \"Subcarpatia\"\n\n#: pl/pl_voivodeships.py:17\nmsgid \"Podlasie\"\nmsgstr \"Podlaskie\"\n\n#: pl/pl_voivodeships.py:18\nmsgid \"Pomerania\"\nmsgstr \"Pomerania\"\n\n#: pl/pl_voivodeships.py:19\nmsgid \"Silesia\"\nmsgstr \"Silesia\"\n\n#: pl/pl_voivodeships.py:20\nmsgid \"Swietokrzyskie\"\nmsgstr \"Swietokrzyskie\"\n\n#: pl/pl_voivodeships.py:21\nmsgid \"Warmia-Masuria\"\nmsgstr \"Varmia e Masuria\"\n\n#: pl/pl_voivodeships.py:22\nmsgid \"Greater Poland\"\nmsgstr \"Gran polonia\"\n\n#: pl/pl_voivodeships.py:23\nmsgid \"West Pomerania\"\nmsgstr \"Pomerania occidental\"\n\n#: pt/forms.py:19\nmsgid \"Enter a zip code in the format XXXX-XXX.\"\nmsgstr \"Insira un código postal no formato XXXX-XXX.\"\n\n#: pt/forms.py:39\nmsgid \"Phone numbers must have 9 digits, or start by + or 00.\"\nmsgstr \"Os números de teléfono deben ter 9 díxitos, ou comezar por + ou 00.\"\n\n#: ro/forms.py:22\nmsgid \"Enter a valid CIF.\"\nmsgstr \"Introduza un CIF válido.\"\n\n#: ro/forms.py:59\nmsgid \"Enter a valid CNP.\"\nmsgstr \"Introduza un CNP válido.\"\n\n#: ro/forms.py:143\nmsgid \"Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format\"\nmsgstr \"Insira un IBAN válido co formato ROXX-XXXX-XXXX-XXXX-XXXX-XXXX.\"\n\n#: ro/forms.py:175\nmsgid \"Phone numbers must be in XXXX-XXXXXX format.\"\nmsgstr \"Os números de teléfono debe estar no formato XXXX-XXXXXX.\"\n\n#: ro/forms.py:200\nmsgid \"Enter a valid postal code in the format XXXXXX\"\nmsgstr \"Insira un código postal no formato XXXXXX\"\n\n#: ru/forms.py:37\nmsgid \"Enter a postal code in the format XXXXXX.\"\nmsgstr \"Insira un código postal no formato XXXXXX.\"\n\n#: ru/forms.py:50\nmsgid \"Enter a passport number in the format XXXX XXXXXX.\"\nmsgstr \"Insira un número de pasaporte no formato XXXX XXXXXX.\"\n\n#: ru/forms.py:63\nmsgid \"Enter a passport number in the format XX XXXXXXX.\"\nmsgstr \"Insira un número de pasaporte no formato XXXX XXXXXX.\"\n\n#: ru/ru_regions.py:10\nmsgid \"Central Federal County\"\nmsgstr \"Distrito Federal Central\"\n\n#: ru/ru_regions.py:11\nmsgid \"South Federal County\"\nmsgstr \"Distrito Federal Meridional\"\n\n#: ru/ru_regions.py:12\nmsgid \"North-West Federal County\"\nmsgstr \"Distrito Federal Noroccidental\"\n\n#: ru/ru_regions.py:13\nmsgid \"Far-East Federal County\"\nmsgstr \"Distrito Federal do Extremo Oriente\"\n\n#: ru/ru_regions.py:14\nmsgid \"Siberian Federal County\"\nmsgstr \"Distrito Federal de Siberia\"\n\n#: ru/ru_regions.py:15\nmsgid \"Ural Federal County\"\nmsgstr \"Distrito Federal dos Urais\"\n\n#: ru/ru_regions.py:16\nmsgid \"Privolzhsky Federal County\"\nmsgstr \"Distrito Federal do Volga\"\n\n#: ru/ru_regions.py:17\nmsgid \"North-Caucasian Federal County\"\nmsgstr \"Distrito Federal Norcaucásico\"\n\n#: ru/ru_regions.py:21\nmsgid \"Moskva\"\nmsgstr \"Moscova\"\n\n#: ru/ru_regions.py:22\nmsgid \"Saint-Peterburg\"\nmsgstr \"San Petersburgo\"\n\n#: ru/ru_regions.py:23\nmsgid \"Moskovskaya oblast'\"\nmsgstr \"Óblast de Moscova\"\n\n#: ru/ru_regions.py:24\nmsgid \"Adygeya, Respublika\"\nmsgstr \"República de Adiguesia\"\n\n#: ru/ru_regions.py:25\nmsgid \"Bashkortostan, Respublika\"\nmsgstr \"República de Baiskiria\"\n\n#: ru/ru_regions.py:26\nmsgid \"Buryatia, Respublika\"\nmsgstr \"República de Buriatia\"\n\n#: ru/ru_regions.py:27\nmsgid \"Altay, Respublika\"\nmsgstr \"República de Altai\"\n\n#: ru/ru_regions.py:28\nmsgid \"Dagestan, Respublika\"\nmsgstr \"República de Daguestán\"\n\n#: ru/ru_regions.py:29\nmsgid \"Ingushskaya Respublika\"\nmsgstr \"República de Ingushskaya\"\n\n#: ru/ru_regions.py:30\nmsgid \"Kabardino-Balkarskaya Respublika\"\nmsgstr \"República de Kabardino-Balkaria\"\n\n#: ru/ru_regions.py:31\nmsgid \"Kalmykia, Respublika\"\nmsgstr \"República de Kalmykia\"\n\n#: ru/ru_regions.py:32\nmsgid \"Karachaevo-Cherkesskaya Respublika\"\nmsgstr \"República de Karachay-Cherkessia\"\n\n#: ru/ru_regions.py:33\nmsgid \"Karelia, Respublika\"\nmsgstr \"República de Carelia\"\n\n#: ru/ru_regions.py:34\nmsgid \"Komi, Respublika\"\nmsgstr \"República de Komi\"\n\n#: ru/ru_regions.py:35\nmsgid \"Mariy Ehl, Respublika\"\nmsgstr \"República de Mari El\"\n\n#: ru/ru_regions.py:36\nmsgid \"Mordovia, Respublika\"\nmsgstr \"República de Mordovia\"\n\n#: ru/ru_regions.py:37\nmsgid \"Sakha, Respublika (Yakutiya)\"\nmsgstr \"República de Sakha (Yakutiya)\"\n\n#: ru/ru_regions.py:38\nmsgid \"Severnaya Osetia, Respublika (Alania)\"\nmsgstr \"República de Osetia do Norte-Alania\"\n\n#: ru/ru_regions.py:39\nmsgid \"Tatarstan, Respublika\"\nmsgstr \"República de Tartaristán\"\n\n#: ru/ru_regions.py:40\nmsgid \"Tyva, Respublika (Tuva)\"\nmsgstr \"República de Tuva\"\n\n#: ru/ru_regions.py:41\nmsgid \"Udmurtskaya Respublika\"\nmsgstr \"República de Udmurtia\"\n\n#: ru/ru_regions.py:42\nmsgid \"Khakassiya, Respublika\"\nmsgstr \"República de Khakassia\"\n\n#: ru/ru_regions.py:43\nmsgid \"Chechenskaya Respublika\"\nmsgstr \"República de Chechenia\"\n\n#: ru/ru_regions.py:44\nmsgid \"Chuvashskaya Respublika\"\nmsgstr \"República de Chuvashia\"\n\n#: ru/ru_regions.py:45\nmsgid \"Altayskiy Kray\"\nmsgstr \"Krai de Altai\"\n\n#: ru/ru_regions.py:46\nmsgid \"Zabaykalskiy Kray\"\nmsgstr \"Krai de Zabaykalsky\"\n\n#: ru/ru_regions.py:47\nmsgid \"Kamchatskiy Kray\"\nmsgstr \"Krai de Kamchatka\"\n\n#: ru/ru_regions.py:48\nmsgid \"Krasnodarskiy Kray\"\nmsgstr \"Krai de Krasnodar\"\n\n#: ru/ru_regions.py:49\nmsgid \"Krasnoyarskiy Kray\"\nmsgstr \"Krai de Krasnodar\"\n\n#: ru/ru_regions.py:50\nmsgid \"Permskiy Kray\"\nmsgstr \"Krai de Perm\"\n\n#: ru/ru_regions.py:51\nmsgid \"Primorskiy Kray\"\nmsgstr \"Krai Marítimo\"\n\n#: ru/ru_regions.py:52\nmsgid \"Stavropol'siyy Kray\"\nmsgstr \"Krai de Stavropol\"\n\n#: ru/ru_regions.py:53\nmsgid \"Khabarovskiy Kray\"\nmsgstr \"Krai de Khabarovsk\"\n\n#: ru/ru_regions.py:54\nmsgid \"Amurskaya oblast'\"\nmsgstr \"Óblast Amur\"\n\n#: ru/ru_regions.py:55\nmsgid \"Arkhangel'skaya oblast'\"\nmsgstr \"Óblast de Arkhangelsk\"\n\n#: ru/ru_regions.py:56\nmsgid \"Astrakhanskaya oblast'\"\nmsgstr \"Krai de Astracán\"\n\n#: ru/ru_regions.py:57\nmsgid \"Belgorodskaya oblast'\"\nmsgstr \"Óblast de Belgorod Oblast\"\n\n#: ru/ru_regions.py:58\nmsgid \"Bryanskaya oblast'\"\nmsgstr \"Óblast de Bryansk\"\n\n#: ru/ru_regions.py:59\nmsgid \"Vladimirskaya oblast'\"\nmsgstr \"Óblast de Vladimir\"\n\n#: ru/ru_regions.py:60\nmsgid \"Volgogradskaya oblast'\"\nmsgstr \"Óblast de Volgogrado\"\n\n#: ru/ru_regions.py:61\nmsgid \"Vologodskaya oblast'\"\nmsgstr \"Óblast de Vólogda\"\n\n#: ru/ru_regions.py:62\nmsgid \"Voronezhskaya oblast'\"\nmsgstr \"Óblast de Vorónezh\"\n\n#: ru/ru_regions.py:63\nmsgid \"Ivanovskaya oblast'\"\nmsgstr \"Óblast de Ivánovo\"\n\n#: ru/ru_regions.py:64\nmsgid \"Irkutskaya oblast'\"\nmsgstr \"Óblast de Irkutsk\"\n\n#: ru/ru_regions.py:65\nmsgid \"Kaliningradskaya oblast'\"\nmsgstr \"Óblast de Kaliningrado\"\n\n#: ru/ru_regions.py:66\nmsgid \"Kaluzhskaya oblast'\"\nmsgstr \"Óblast de Kaluga\"\n\n#: ru/ru_regions.py:67\nmsgid \"Kemerovskaya oblast'\"\nmsgstr \"Óblast de Kémerovo\"\n\n#: ru/ru_regions.py:68\nmsgid \"Kirovskaya oblast'\"\nmsgstr \"Óblast de Kírov\"\n\n#: ru/ru_regions.py:69\nmsgid \"Kostromskaya oblast'\"\nmsgstr \"Óblast de Kostromá\"\n\n#: ru/ru_regions.py:70\nmsgid \"Kurganskaya oblast'\"\nmsgstr \"Óblast de Kurgán\"\n\n#: ru/ru_regions.py:71\nmsgid \"Kurskaya oblast'\"\nmsgstr \"Óblast de Kursk\"\n\n#: ru/ru_regions.py:72\nmsgid \"Leningradskaya oblast'\"\nmsgstr \"Óblast de Leningrado\"\n\n#: ru/ru_regions.py:73\nmsgid \"Lipeckaya oblast'\"\nmsgstr \"Óblast de Lipetsk\"\n\n#: ru/ru_regions.py:74\nmsgid \"Magadanskaya oblast'\"\nmsgstr \"Óblast de Magadán\"\n\n#: ru/ru_regions.py:75\nmsgid \"Murmanskaya oblast'\"\nmsgstr \"Óblast de Múrmansk\"\n\n#: ru/ru_regions.py:76\nmsgid \"Nizhegorodskaja oblast'\"\nmsgstr \"Óblast de Nizhni Nóvgorod\"\n\n#: ru/ru_regions.py:77\nmsgid \"Novgorodskaya oblast'\"\nmsgstr \"Óblast de Nóvgorod\"\n\n#: ru/ru_regions.py:78\nmsgid \"Novosibirskaya oblast'\"\nmsgstr \"Óblast de Novosibirsk\"\n\n#: ru/ru_regions.py:79\nmsgid \"Omskaya oblast'\"\nmsgstr \"Óblast de Omsk\"\n\n#: ru/ru_regions.py:80\nmsgid \"Orenburgskaya oblast'\"\nmsgstr \"Óblast de Oremburgo\"\n\n#: ru/ru_regions.py:81\nmsgid \"Orlovskaya oblast'\"\nmsgstr \"Óblast de Oriol\"\n\n#: ru/ru_regions.py:82\nmsgid \"Penzenskaya oblast'\"\nmsgstr \"Óblast de Penza\"\n\n#: ru/ru_regions.py:83\nmsgid \"Pskovskaya oblast'\"\nmsgstr \"Óblast de Pskov\"\n\n#: ru/ru_regions.py:84\nmsgid \"Rostovskaya oblast'\"\nmsgstr \"Óblast de Rostov\"\n\n#: ru/ru_regions.py:85\nmsgid \"Rjazanskaya oblast'\"\nmsgstr \"Óblast de Riazán\"\n\n#: ru/ru_regions.py:86\nmsgid \"Samarskaya oblast'\"\nmsgstr \"Óblast de Samara\"\n\n#: ru/ru_regions.py:87\nmsgid \"Saratovskaya oblast'\"\nmsgstr \"Óblast de Sarátov\"\n\n#: ru/ru_regions.py:88\nmsgid \"Sakhalinskaya oblast'\"\nmsgstr \"Óblast de Sakhalin\"\n\n#: ru/ru_regions.py:89\nmsgid \"Sverdlovskaya oblast'\"\nmsgstr \"Óblast de Sverdlovsk\"\n\n#: ru/ru_regions.py:90\nmsgid \"Smolenskaya oblast'\"\nmsgstr \"Óblast de Smolensk\"\n\n#: ru/ru_regions.py:91\nmsgid \"Tambovskaya oblast'\"\nmsgstr \"Óblast de Tambov\"\n\n#: ru/ru_regions.py:92\nmsgid \"Tverskaya oblast'\"\nmsgstr \"Óblast de Tver\"\n\n#: ru/ru_regions.py:93\nmsgid \"Tomskaya oblast'\"\nmsgstr \"Óblast de Tomsk\"\n\n#: ru/ru_regions.py:94\nmsgid \"Tul'skaya oblast'\"\nmsgstr \"Óblast de Tula\"\n\n#: ru/ru_regions.py:95\nmsgid \"Tyumenskaya oblast'\"\nmsgstr \"Óblast de Tyumen\"\n\n#: ru/ru_regions.py:96\nmsgid \"Ul'ianovskaya oblast'\"\nmsgstr \"Óblast de Ulyanovsk\"\n\n#: ru/ru_regions.py:97\nmsgid \"Chelyabinskaya oblast'\"\nmsgstr \"Óblast de Chelyabinsk\"\n\n#: ru/ru_regions.py:98\nmsgid \"Yaroslavskaya oblast'\"\nmsgstr \"Óblast de Yaroslavl\"\n\n#: ru/ru_regions.py:99\nmsgid \"Evreyskaya avtonomnaja oblast'\"\nmsgstr \"Óblast Autónomo Hebreo\"\n\n#: ru/ru_regions.py:100\nmsgid \"Neneckiy autonomnyy okrug\"\nmsgstr \"Nenetsia\"\n\n#: ru/ru_regions.py:101\nmsgid \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\nmsgstr \"Khanty-Mansi\"\n\n#: ru/ru_regions.py:102\nmsgid \"Chukotskiy avtonomnyy okrug\"\nmsgstr \"Chukotka\"\n\n#: ru/ru_regions.py:103\nmsgid \"Yamalo-Neneckiy avtonomnyy okrug\"\nmsgstr \"Iamalia-Nenetsia\"\n\n#: se/forms.py:54\nmsgid \"Enter a valid Swedish organisation number.\"\nmsgstr \"Insira un número de organización sueco válido.\"\n\n#: se/forms.py:111\nmsgid \"Enter a valid Swedish personal identity number.\"\nmsgstr \"Insira un número de identidade persoal sueco válido.\"\n\n#: se/forms.py:112\nmsgid \"Co-ordination numbers are not allowed.\"\nmsgstr \"Os números de coordinación non están permitidos.\"\n\n#: se/forms.py:154\nmsgid \"Enter a Swedish postal code in the format XXXXX.\"\nmsgstr \"Insira un código postal Sueco no formato XXXXX-XXX.\"\n\n#: se/se_counties.py:16\nmsgid \"Stockholm\"\nmsgstr \"Estocolmo\"\n\n#: se/se_counties.py:17\nmsgid \"Västerbotten\"\nmsgstr \"Västerbotten\"\n\n#: se/se_counties.py:18\nmsgid \"Norrbotten\"\nmsgstr \"Norrbotten\"\n\n#: se/se_counties.py:19\nmsgid \"Uppsala\"\nmsgstr \"Uppsala\"\n\n#: se/se_counties.py:20\nmsgid \"Södermanland\"\nmsgstr \"Södermanland\"\n\n#: se/se_counties.py:21\nmsgid \"Östergötland\"\nmsgstr \"Östergötland\"\n\n#: se/se_counties.py:22\nmsgid \"Jönköping\"\nmsgstr \"Jönköping\"\n\n#: se/se_counties.py:23\nmsgid \"Kronoberg\"\nmsgstr \"Kronoberg\"\n\n#: se/se_counties.py:24\nmsgid \"Kalmar\"\nmsgstr \"Kalmar\"\n\n#: se/se_counties.py:25\nmsgid \"Gotland\"\nmsgstr \"Gotland\"\n\n#: se/se_counties.py:26\nmsgid \"Blekinge\"\nmsgstr \"Blekinge\"\n\n#: se/se_counties.py:27\nmsgid \"Skåne\"\nmsgstr \"Escania\"\n\n#: se/se_counties.py:28\nmsgid \"Halland\"\nmsgstr \"Halland\"\n\n#: se/se_counties.py:29\nmsgid \"Västra Götaland\"\nmsgstr \"Västra Götaland\"\n\n#: se/se_counties.py:30\nmsgid \"Värmland\"\nmsgstr \"Värmland\"\n\n#: se/se_counties.py:31\nmsgid \"Örebro\"\nmsgstr \"Örebro\"\n\n#: se/se_counties.py:32\nmsgid \"Västmanland\"\nmsgstr \"Västmanland\"\n\n#: se/se_counties.py:33\nmsgid \"Dalarna\"\nmsgstr \"Dalarna\"\n\n#: se/se_counties.py:34\nmsgid \"Gävleborg\"\nmsgstr \"Gävleborg\"\n\n#: se/se_counties.py:35\nmsgid \"Västernorrland\"\nmsgstr \"Västernorrland\"\n\n#: se/se_counties.py:36\nmsgid \"Jämtland\"\nmsgstr \"Jämtland\"\n\n#: si/forms.py:25\nmsgid \"The first 7 digits of the EMSO must represent a valid past date.\"\nmsgstr \"\"\n\"Os primeiros 7 díxitos do EMSO deben representar unha data pasada válida.\"\n\n#: si/forms.py:26\nmsgid \"The EMSO is not valid.\"\nmsgstr \"O EMSO non é válido.\"\n\n#: si/forms.py:86\nmsgid \"Enter a valid tax number in form SIXXXXXXXX\"\nmsgstr \"Introduza un número fiscal válido na forma SIXXXXXXXX\"\n\n#: si/forms.py:151\nmsgid \"Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.\"\nmsgstr \"Insira un número de teléfono na forma +386XXXXXXXX ou 0XXXXXXXX.\"\n\n#: sk/sk_districts.py:8\nmsgid \"Banska Bystrica\"\nmsgstr \"Banska Bystrica\"\n\n#: sk/sk_districts.py:9\nmsgid \"Banska Stiavnica\"\nmsgstr \"Banska Stiavnica\"\n\n#: sk/sk_districts.py:10\nmsgid \"Bardejov\"\nmsgstr \"Bardejov\"\n\n#: sk/sk_districts.py:11\nmsgid \"Banovce nad Bebravou\"\nmsgstr \"Banovce nad Bebravou\"\n\n#: sk/sk_districts.py:12\nmsgid \"Brezno\"\nmsgstr \"Brezno\"\n\n#: sk/sk_districts.py:13\nmsgid \"Bratislava I\"\nmsgstr \"Bratislava I\"\n\n#: sk/sk_districts.py:14\nmsgid \"Bratislava II\"\nmsgstr \"Bratislava II\"\n\n#: sk/sk_districts.py:15\nmsgid \"Bratislava III\"\nmsgstr \"Bratislava III\"\n\n#: sk/sk_districts.py:16\nmsgid \"Bratislava IV\"\nmsgstr \"Bratislava IV\"\n\n#: sk/sk_districts.py:17\nmsgid \"Bratislava V\"\nmsgstr \"Bratislava V\"\n\n#: sk/sk_districts.py:18\nmsgid \"Bytca\"\nmsgstr \"Bytca\"\n\n#: sk/sk_districts.py:19\nmsgid \"Cadca\"\nmsgstr \"Cadca\"\n\n#: sk/sk_districts.py:20\nmsgid \"Detva\"\nmsgstr \"Detva\"\n\n#: sk/sk_districts.py:21\nmsgid \"Dolny Kubin\"\nmsgstr \"Dolny Kubin\"\n\n#: sk/sk_districts.py:22\nmsgid \"Dunajska Streda\"\nmsgstr \"Dunajska Streda\"\n\n#: sk/sk_districts.py:23\nmsgid \"Galanta\"\nmsgstr \"Galanta\"\n\n#: sk/sk_districts.py:24\nmsgid \"Gelnica\"\nmsgstr \"Gelnica\"\n\n#: sk/sk_districts.py:25\nmsgid \"Hlohovec\"\nmsgstr \"Hlohovec\"\n\n#: sk/sk_districts.py:26\nmsgid \"Humenne\"\nmsgstr \"Humenne\"\n\n#: sk/sk_districts.py:27\nmsgid \"Ilava\"\nmsgstr \"Ilava\"\n\n#: sk/sk_districts.py:28\nmsgid \"Kezmarok\"\nmsgstr \"Kezmarok\"\n\n#: sk/sk_districts.py:29\nmsgid \"Komarno\"\nmsgstr \"Komarno\"\n\n#: sk/sk_districts.py:30\nmsgid \"Kosice I\"\nmsgstr \"Kosice I\"\n\n#: sk/sk_districts.py:31\nmsgid \"Kosice II\"\nmsgstr \"Kosice II\"\n\n#: sk/sk_districts.py:32\nmsgid \"Kosice III\"\nmsgstr \"Kosice III\"\n\n#: sk/sk_districts.py:33\nmsgid \"Kosice IV\"\nmsgstr \"Kosice IV\"\n\n#: sk/sk_districts.py:34\nmsgid \"Kosice - okolie\"\nmsgstr \"Kosice - okolie\"\n\n#: sk/sk_districts.py:35\nmsgid \"Krupina\"\nmsgstr \"Krupina\"\n\n#: sk/sk_districts.py:36\nmsgid \"Kysucke Nove Mesto\"\nmsgstr \"Kysucke Nove Mesto\"\n\n#: sk/sk_districts.py:37\nmsgid \"Levice\"\nmsgstr \"Levice\"\n\n#: sk/sk_districts.py:38\nmsgid \"Levoca\"\nmsgstr \"Levoca\"\n\n#: sk/sk_districts.py:39\nmsgid \"Liptovsky Mikulas\"\nmsgstr \"Liptovsky Mikulas\"\n\n#: sk/sk_districts.py:40\nmsgid \"Lucenec\"\nmsgstr \"Lucenec\"\n\n#: sk/sk_districts.py:41\nmsgid \"Malacky\"\nmsgstr \"Malacky\"\n\n#: sk/sk_districts.py:42\nmsgid \"Martin\"\nmsgstr \"Martin\"\n\n#: sk/sk_districts.py:43\nmsgid \"Medzilaborce\"\nmsgstr \"Medzilaborce\"\n\n#: sk/sk_districts.py:44\nmsgid \"Michalovce\"\nmsgstr \"Michalovce\"\n\n#: sk/sk_districts.py:45\nmsgid \"Myjava\"\nmsgstr \"Myjava\"\n\n#: sk/sk_districts.py:46\nmsgid \"Namestovo\"\nmsgstr \"Namestovo\"\n\n#: sk/sk_districts.py:47\nmsgid \"Nitra\"\nmsgstr \"Nitra\"\n\n#: sk/sk_districts.py:48\nmsgid \"Nove Mesto nad Vahom\"\nmsgstr \"Nove Mesto nad Vahom\"\n\n#: sk/sk_districts.py:49\nmsgid \"Nove Zamky\"\nmsgstr \"Nove Zamky\"\n\n#: sk/sk_districts.py:50\nmsgid \"Partizanske\"\nmsgstr \"Partizanske\"\n\n#: sk/sk_districts.py:51\nmsgid \"Pezinok\"\nmsgstr \"Pezinok\"\n\n#: sk/sk_districts.py:52\nmsgid \"Piestany\"\nmsgstr \"Piestany\"\n\n#: sk/sk_districts.py:53\nmsgid \"Poltar\"\nmsgstr \"Poltar\"\n\n#: sk/sk_districts.py:54\nmsgid \"Poprad\"\nmsgstr \"Poprad\"\n\n#: sk/sk_districts.py:55\nmsgid \"Povazska Bystrica\"\nmsgstr \"Povazska Bystrica\"\n\n#: sk/sk_districts.py:56\nmsgid \"Presov\"\nmsgstr \"Presov\"\n\n#: sk/sk_districts.py:57\nmsgid \"Prievidza\"\nmsgstr \"Prievidza\"\n\n#: sk/sk_districts.py:58\nmsgid \"Puchov\"\nmsgstr \"Puchov\"\n\n#: sk/sk_districts.py:59\nmsgid \"Revuca\"\nmsgstr \"Revuca\"\n\n#: sk/sk_districts.py:60\nmsgid \"Rimavska Sobota\"\nmsgstr \"Rimavska Sobota\"\n\n#: sk/sk_districts.py:61\nmsgid \"Roznava\"\nmsgstr \"Roznava\"\n\n#: sk/sk_districts.py:62\nmsgid \"Ruzomberok\"\nmsgstr \"Ruzomberok\"\n\n#: sk/sk_districts.py:63\nmsgid \"Sabinov\"\nmsgstr \"Sabinov\"\n\n#: sk/sk_districts.py:64\nmsgid \"Senec\"\nmsgstr \"Senec\"\n\n#: sk/sk_districts.py:65\nmsgid \"Senica\"\nmsgstr \"Senica\"\n\n#: sk/sk_districts.py:66\nmsgid \"Skalica\"\nmsgstr \"Skalica\"\n\n#: sk/sk_districts.py:67\nmsgid \"Snina\"\nmsgstr \"Snina\"\n\n#: sk/sk_districts.py:68\nmsgid \"Sobrance\"\nmsgstr \"Sobrance\"\n\n#: sk/sk_districts.py:69\nmsgid \"Spisska Nova Ves\"\nmsgstr \"Spisska Nova Ves\"\n\n#: sk/sk_districts.py:70\nmsgid \"Stara Lubovna\"\nmsgstr \"Stara Lubovna\"\n\n#: sk/sk_districts.py:71\nmsgid \"Stropkov\"\nmsgstr \"Stropkov\"\n\n#: sk/sk_districts.py:72\nmsgid \"Svidnik\"\nmsgstr \"Svidnik\"\n\n#: sk/sk_districts.py:73\nmsgid \"Sala\"\nmsgstr \"Sala\"\n\n#: sk/sk_districts.py:74\nmsgid \"Topolcany\"\nmsgstr \"Topolcany\"\n\n#: sk/sk_districts.py:75\nmsgid \"Trebisov\"\nmsgstr \"Trebisov\"\n\n#: sk/sk_districts.py:76\nmsgid \"Trencin\"\nmsgstr \"Trencin\"\n\n#: sk/sk_districts.py:77\nmsgid \"Trnava\"\nmsgstr \"Trnava\"\n\n#: sk/sk_districts.py:78\nmsgid \"Turcianske Teplice\"\nmsgstr \"Turcianske Teplice\"\n\n#: sk/sk_districts.py:79\nmsgid \"Tvrdosin\"\nmsgstr \"Tvrdosin\"\n\n#: sk/sk_districts.py:80\nmsgid \"Velky Krtis\"\nmsgstr \"Velky Krtis\"\n\n#: sk/sk_districts.py:81\nmsgid \"Vranov nad Toplou\"\nmsgstr \"Vranov nad Toplou\"\n\n#: sk/sk_districts.py:82\nmsgid \"Zlate Moravce\"\nmsgstr \"Zlate Moravce\"\n\n#: sk/sk_districts.py:83\nmsgid \"Zvolen\"\nmsgstr \"Zvolen\"\n\n#: sk/sk_districts.py:84\nmsgid \"Zarnovica\"\nmsgstr \"Zarnovica\"\n\n#: sk/sk_districts.py:85\nmsgid \"Ziar nad Hronom\"\nmsgstr \"Ziar nad Hronom\"\n\n#: sk/sk_districts.py:86\nmsgid \"Zilina\"\nmsgstr \"Zilina\"\n\n#: sk/sk_regions.py:8\nmsgid \"Banska Bystrica region\"\nmsgstr \"Rexión de Banská Bystrica\"\n\n#: sk/sk_regions.py:9\nmsgid \"Bratislava region\"\nmsgstr \"Rexión de Bratislava\"\n\n#: sk/sk_regions.py:10\nmsgid \"Kosice region\"\nmsgstr \"Rexión de Košice\"\n\n#: sk/sk_regions.py:11\nmsgid \"Nitra region\"\nmsgstr \"Rexión de Nitra\"\n\n#: sk/sk_regions.py:12\nmsgid \"Presov region\"\nmsgstr \"Rexión de Prešov\"\n\n#: sk/sk_regions.py:13\nmsgid \"Trencin region\"\nmsgstr \"Rexión de Trenčín\"\n\n#: sk/sk_regions.py:14\nmsgid \"Trnava region\"\nmsgstr \"Rexión de Trnava\"\n\n#: sk/sk_regions.py:15\nmsgid \"Zilina region\"\nmsgstr \"Rexión de Žilina\"\n\n#: tr/forms.py:21\nmsgid \"Enter a postal code in the format XXXXX.\"\nmsgstr \"Insira un código postal válido no formato XXXXX.\"\n\n#: tr/forms.py:42\nmsgid \"Phone numbers must be in 0XXX XXX XXXX format.\"\nmsgstr \"Os números de teléfono deben ter o formato 0XXX XXX XXXX.\"\n\n#: tr/forms.py:69\nmsgid \"Enter a valid Turkish Identification number.\"\nmsgstr \"Introduza un número de identificación turco válido.\"\n\n#: tr/forms.py:70\nmsgid \"Turkish Identification number must be 11 digits.\"\nmsgstr \"O número de identificación turco debe ter 11 díxitos.\"\n\n#: us/forms.py:21\nmsgid \"Enter a zip code in the format XXXXX or XXXXX-XXXX.\"\nmsgstr \"Insira un código postal no formato XXXXX ou XXXXX-XXXX.\"\n\n#: us/forms.py:59\nmsgid \"Enter a valid U.S. Social Security number in XXX-XX-XXXX format.\"\nmsgstr \"\"\n\"Insira un número válido da seguridade social dos Estados Unidos no formato \"\n\"XXX-XX-XXXX.\"\n\n#: us/forms.py:92\nmsgid \"Enter a U.S. state or territory.\"\nmsgstr \"Insira un estado ou territorio dos Estados Unidos.\"\n\n#: us/models.py:8\nmsgid \"U.S. state (two uppercase letters)\"\nmsgstr \"Estado dos Estados Unidos (dúas letras maiúsculas)\"\n\n#: us/models.py:17\nmsgid \"U.S. postal code (two uppercase letters)\"\nmsgstr \"Código postal dos Estados Únidos (dúas letras maiúsculas)\"\n\n#: us/models.py:26\nmsgid \"Phone number\"\nmsgstr \"Número de teléfono\"\n\n#: uy/forms.py:29\nmsgid \"Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.\"\nmsgstr \"\"\n\"Introduza un número CI válido con formato X.XXX.XXX-X,XXXXXXX-X ou XXXXXXXX.\"\n\n#: uy/forms.py:31\nmsgid \"Enter a valid CI number.\"\nmsgstr \"Introduza un número CI válido.\"\n\n#: za/forms.py:22\nmsgid \"Enter a valid South African ID number\"\nmsgstr \"Introduza un número de ID sudafricano válido\"\n\n#: za/forms.py:56\nmsgid \"Enter a valid South African postal code\"\nmsgstr \"Insira un código postal Sudáfricano válido\"\n\n#: za/za_provinces.py:4\nmsgid \"Eastern Cape\"\nmsgstr \"Eastern Cape\"\n\n#: za/za_provinces.py:5\nmsgid \"Free State\"\nmsgstr \"Estado libre\"\n\n#: za/za_provinces.py:6\nmsgid \"Gauteng\"\nmsgstr \"Gauteng\"\n\n#: za/za_provinces.py:7\nmsgid \"KwaZulu-Natal\"\nmsgstr \"KwaZulu-Natal\"\n\n#: za/za_provinces.py:8\nmsgid \"Limpopo\"\nmsgstr \"Limpopo\"\n\n#: za/za_provinces.py:9\nmsgid \"Mpumalanga\"\nmsgstr \"Mpumalanga\"\n\n#: za/za_provinces.py:10\nmsgid \"Northern Cape\"\nmsgstr \"Northern Cape\"\n\n#: za/za_provinces.py:11\nmsgid \"North West\"\nmsgstr \"North West\"\n\n#: za/za_provinces.py:12\nmsgid \"Western Cape\"\nmsgstr \"Western Cape\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/locale/he/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Alex Gaynor <alex.gaynor@gmail.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Meir Kriheli <mkriheli@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-10-25 01:40+0000\\n\"\n\"Last-Translator: Meir Kriheli <mkriheli@gmail.com>\\n\"\n\"Language-Team: Hebrew (http://www.transifex.com/projects/p/django/language/\"\n\"he/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: he\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: ar/forms.py:30\nmsgid \"Enter a postal code in the format NNNN or ANNNNAAA.\"\nmsgstr \"יש להזין קוד דואר בתבנית NNNN או ANNNNAAA.\"\n\n#: ar/forms.py:52 br/forms.py:95 br/forms.py:134 pe/forms.py:27 pe/forms.py:55\nmsgid \"This field requires only numbers.\"\nmsgstr \"יש להזין רק ספרות בשדה זה.\"\n\n#: ar/forms.py:53\nmsgid \"This field requires 7 or 8 digits.\"\nmsgstr \"שדה זה דורש 7 או 8 ספרות.\"\n\n#: ar/forms.py:82\nmsgid \"Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.\"\nmsgstr \"יש להזין מספר CUIT חוקי בתבנית XX-XXXXXXXX-X או XXXXXXXXXXXX.\"\n\n#: ar/forms.py:83\nmsgid \"Invalid CUIT.\"\nmsgstr \"CUIT שגוי\"\n\n#: ar/forms.py:84\nmsgid \"Invalid legal type. Type must be 27, 20, 23 or 30.\"\nmsgstr \"סוג משפטי לא חוקי. חייב להיות 27, 20, 23 או 30.\"\n\n#: at/at_states.py:5\nmsgid \"Burgenland\"\nmsgstr \"\\tבורגנלנד\"\n\n#: at/at_states.py:6\nmsgid \"Carinthia\"\nmsgstr \"קרינתיה\"\n\n#: at/at_states.py:7\nmsgid \"Lower Austria\"\nmsgstr \"אוסטריה התחתונה\"\n\n#: at/at_states.py:8\nmsgid \"Upper Austria\"\nmsgstr \"אוסטריה עילית\"\n\n#: at/at_states.py:9\nmsgid \"Salzburg\"\nmsgstr \"זלצבורג\"\n\n#: at/at_states.py:10\nmsgid \"Styria\"\nmsgstr \"שטיריה\"\n\n#: at/at_states.py:11\nmsgid \"Tyrol\"\nmsgstr \"טירול\"\n\n#: at/at_states.py:12\nmsgid \"Vorarlberg\"\nmsgstr \"פורארלברג\"\n\n#: at/at_states.py:13\nmsgid \"Vienna\"\nmsgstr \"וינה\"\n\n#: at/forms.py:22 ch/forms.py:22 no/forms.py:19\nmsgid \"Enter a zip code in the format XXXX.\"\nmsgstr \"יש להזין מיקוד בתבנית XXXX.\"\n\n#: at/forms.py:50\nmsgid \"Enter a valid Austrian Social Security Number in XXXX XXXXXX format.\"\nmsgstr \"יש להזין מספר ביטוח לאומי אוסטרלי חוקי בתבנית XXXX XXXXXX.\"\n\n#: au/forms.py:26\nmsgid \"Enter a 4 digit postcode.\"\nmsgstr \"נא להזין מיקוד בן 4 ספרות.\"\n\n#: au/models.py:9\nmsgid \"Australian State\"\nmsgstr \"מדינה אוסטרלית\"\n\n#: au/models.py:19\nmsgid \"Australian Postcode\"\nmsgstr \"מיקוד אוסטרלי\"\n\n#: au/models.py:33\nmsgid \"Australian Phone number\"\nmsgstr \"מספר טלפון אוסטרלי\"\n\n#: be/be_provinces.py:5\nmsgid \"Antwerp\"\nmsgstr \"אנטוורפן\"\n\n#: be/be_provinces.py:6\nmsgid \"Brussels\"\nmsgstr \"בריסל\"\n\n#: be/be_provinces.py:7\nmsgid \"East Flanders\"\nmsgstr \"מזרח פלנדריה\"\n\n#: be/be_provinces.py:8\nmsgid \"Flemish Brabant\"\nmsgstr \"ברבנט הפלמית\"\n\n#: be/be_provinces.py:9\nmsgid \"Hainaut\"\nmsgstr \"היינאוט\"\n\n#: be/be_provinces.py:10\nmsgid \"Liege\"\nmsgstr \"לייז'\"\n\n#: be/be_provinces.py:11 nl/nl_provinces.py:9\nmsgid \"Limburg\"\nmsgstr \"לימבורג\"\n\n#: be/be_provinces.py:12\nmsgid \"Luxembourg\"\nmsgstr \"לוקסמבורג\"\n\n#: be/be_provinces.py:13\nmsgid \"Namur\"\nmsgstr \"נאמור\"\n\n#: be/be_provinces.py:14\nmsgid \"Walloon Brabant\"\nmsgstr \"ברבנט הוולונית\"\n\n#: be/be_provinces.py:15\nmsgid \"West Flanders\"\nmsgstr \"פלנדריה המערבית\"\n\n#: be/be_regions.py:5\nmsgid \"Brussels Capital Region\"\nmsgstr \"מחוז בריסל\"\n\n#: be/be_regions.py:6\nmsgid \"Flemish Region\"\nmsgstr \"אזור פלמי\"\n\n#: be/be_regions.py:7\nmsgid \"Wallonia\"\nmsgstr \"ולוניה\"\n\n#: be/forms.py:25\nmsgid \"Enter a valid postal code in the range and format 1XXX - 9XXX.\"\nmsgstr \"נא להזין מיקוד חוקי בטווח ובתבנית 1XXX - 9XXX.\"\n\n#: be/forms.py:48\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\nmsgstr \"\"\n\"יש להזין מספר טלפון חוקי באחד מהפורמטים 0x xxx xx xx, 0xx xx xx xx, 04xx xx \"\n\"xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.xx.xx.\"\n\"xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\n\n#: br/forms.py:22\nmsgid \"Enter a zip code in the format XXXXX-XXX.\"\nmsgstr \"יש להזין מיקוד בתבנית XXXXX-XXX.\"\n\n#: br/forms.py:31\nmsgid \"Phone numbers must be in XX-XXXX-XXXX format.\"\nmsgstr \"מספרי טלפון חייבים להיות בתבנית XX-XXXX-XXXX.\"\n\n#: br/forms.py:58\nmsgid \"\"\n\"Select a valid brazilian state. That state is not one of the available \"\n\"states.\"\nmsgstr \"נא לבחור מדינה ברזילאית חוקית. מדינה זו אינה אחת מהמדינות האפשריות.\"\n\n#: br/forms.py:93\nmsgid \"Invalid CPF number.\"\nmsgstr \"מספר CPF לא חוקי\"\n\n#: br/forms.py:94\nmsgid \"This field requires at most 11 digits or 14 characters.\"\nmsgstr \"שדה זה דורש 11 או 14 ספרות לכל היותר.\"\n\n#: br/forms.py:133\nmsgid \"Invalid CNPJ number.\"\nmsgstr \"מספר CNPJ לא חוקי\"\n\n#: br/forms.py:135\nmsgid \"This field requires at least 14 digits\"\nmsgstr \"שדה זה דורש לפחות 14 ספרות.\"\n\n#: ca/forms.py:29\nmsgid \"Enter a postal code in the format XXX XXX.\"\nmsgstr \"יש להזין מיקוד בתבנית XXX XXX.\"\n\n#: ca/forms.py:47 us/forms.py:30\nmsgid \"Phone numbers must be in XXX-XXX-XXXX format.\"\nmsgstr \"מספרי טלפון חייבים להיות בתבנית XXX-XXX-XXXX.\"\n\n#: ca/forms.py:69\nmsgid \"Enter a Canadian province or territory.\"\nmsgstr \"נא להזין מחוז או טריטוריה קנדיים.\"\n\n#: ca/forms.py:110\nmsgid \"Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.\"\nmsgstr \"יש להזין מספר ביטוח לאומי קנדי חוקי בתבנית XXX-XXX-XXXX.\"\n\n#: ch/ch_states.py:5\nmsgid \"Aargau\"\nmsgstr \"ארגאו\"\n\n#: ch/ch_states.py:6\nmsgid \"Appenzell Innerrhoden\"\nmsgstr \"אפנצל אינר־רודן\"\n\n#: ch/ch_states.py:7\nmsgid \"Appenzell Ausserrhoden\"\nmsgstr \"אפנצל אוסר־רודן\"\n\n#: ch/ch_states.py:8\nmsgid \"Basel-Stadt\"\nmsgstr \"באזל־שטאדט\"\n\n#: ch/ch_states.py:9\nmsgid \"Basel-Land\"\nmsgstr \"באזל־לנדשאפט\"\n\n#: ch/ch_states.py:10\nmsgid \"Berne\"\nmsgstr \"ברן\"\n\n#: ch/ch_states.py:11\nmsgid \"Fribourg\"\nmsgstr \"פריבור\"\n\n#: ch/ch_states.py:12\nmsgid \"Geneva\"\nmsgstr \"ג'נבה\"\n\n#: ch/ch_states.py:13\nmsgid \"Glarus\"\nmsgstr \"גלרוס\"\n\n#: ch/ch_states.py:14\nmsgid \"Graubuenden\"\nmsgstr \"גראובינדן\"\n\n#: ch/ch_states.py:15\nmsgid \"Jura\"\nmsgstr \"ז'ורה\"\n\n#: ch/ch_states.py:16\nmsgid \"Lucerne\"\nmsgstr \"לוצרן\"\n\n#: ch/ch_states.py:17\nmsgid \"Neuchatel\"\nmsgstr \"נשאטל\"\n\n#: ch/ch_states.py:18\nmsgid \"Nidwalden\"\nmsgstr \"נידוולדן\"\n\n#: ch/ch_states.py:19\nmsgid \"Obwalden\"\nmsgstr \"אובוולדן\"\n\n#: ch/ch_states.py:20\nmsgid \"Schaffhausen\"\nmsgstr \"שפהאוזן\"\n\n#: ch/ch_states.py:21\nmsgid \"Schwyz\"\nmsgstr \"שוויץ\"\n\n#: ch/ch_states.py:22\nmsgid \"Solothurn\"\nmsgstr \"זולותורן\"\n\n#: ch/ch_states.py:23\nmsgid \"St. Gallen\"\nmsgstr \"סנט גלן\"\n\n#: ch/ch_states.py:24\nmsgid \"Thurgau\"\nmsgstr \"Thurgau\"\n\n#: ch/ch_states.py:25\nmsgid \"Ticino\"\nmsgstr \"טיצ'ינו\"\n\n#: ch/ch_states.py:26\nmsgid \"Uri\"\nmsgstr \"אורי\"\n\n#: ch/ch_states.py:27\nmsgid \"Valais\"\nmsgstr \"ואלה\"\n\n#: ch/ch_states.py:28\nmsgid \"Vaud\"\nmsgstr \"וו\"\n\n#: ch/ch_states.py:29\nmsgid \"Zug\"\nmsgstr \"צוג\"\n\n#: ch/ch_states.py:30\nmsgid \"Zurich\"\nmsgstr \"ציריך\"\n\n#: ch/forms.py:37\nmsgid \"Phone numbers must be in 0XX XXX XX XX format.\"\nmsgstr \"מספרי טלפון חייבים להיות בתבנית 0XX XXX XX XX.\"\n\n#: ch/forms.py:68\nmsgid \"\"\n\"Enter a valid Swiss identity or passport card number in X1234567<0 or \"\n\"1234567890 format.\"\nmsgstr \"יש להזין מספר זיהוי או דרכון שוויצרי בתבנית X1234567<0 או 1234567890.\"\n\n#: cl/forms.py:32\nmsgid \"Enter a valid Chilean RUT.\"\nmsgstr \"יש להזין RUT צ'יליאני חוקי.\"\n\n#: cl/forms.py:33\nmsgid \"Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.\"\nmsgstr \"יש להזין RUT צ'יליאני חוקי. התבנית היא XX.XXX.XXX-X.\"\n\n#: cl/forms.py:34\nmsgid \"The Chilean RUT is not valid.\"\nmsgstr \"שדה RUT צ'יליאני אינו חוקי.\"\n\n#: cn/forms.py:84\nmsgid \"Enter a post code in the format XXXXXX.\"\nmsgstr \"נא להזין מיקוד בתבנית XXXXXX.\"\n\n#: cn/forms.py:105\nmsgid \"ID Card Number consists of 15 or 18 digits.\"\nmsgstr \"מספר כרטיס זיהוי המורכב מ-15 או 18 ספרות.\"\n\n#: cn/forms.py:106\nmsgid \"Invalid ID Card Number: Wrong checksum\"\nmsgstr \"מספר כרטיס זיהוי לא חוקי: סיכום ביקורת שגוי\"\n\n#: cn/forms.py:107\nmsgid \"Invalid ID Card Number: Wrong birthdate\"\nmsgstr \"מספר כרטיס זיהוי לא חוקי: תאריך לידה שגוי\"\n\n#: cn/forms.py:108\nmsgid \"Invalid ID Card Number: Wrong location code\"\nmsgstr \"מספר כרטיס זיהוי לא חוקי: קוד מיקום שגוי\"\n\n#: cn/forms.py:193\nmsgid \"Enter a valid phone number.\"\nmsgstr \"נא להזין מספר טלפון חוקי.\"\n\n#: cn/forms.py:210\nmsgid \"Enter a valid cell number.\"\nmsgstr \"נא להזין מספר סלולרי חוקי.\"\n\n#: cz/cz_regions.py:8\nmsgid \"Prague\"\nmsgstr \"פראג\"\n\n#: cz/cz_regions.py:9\nmsgid \"Central Bohemian Region\"\nmsgstr \"מרכז בוהמיה\"\n\n#: cz/cz_regions.py:10\nmsgid \"South Bohemian Region\"\nmsgstr \"דרום בוהמיה\"\n\n#: cz/cz_regions.py:11\nmsgid \"Pilsen Region\"\nmsgstr \"מחוז פילזן\"\n\n#: cz/cz_regions.py:12\nmsgid \"Carlsbad Region\"\nmsgstr \"מחוז או איזור קרלסבד\"\n\n#: cz/cz_regions.py:13\nmsgid \"Usti Region\"\nmsgstr \"מחוז אוסטי\"\n\n#: cz/cz_regions.py:14\nmsgid \"Liberec Region\"\nmsgstr \"מחוז ליברץ\"\n\n#: cz/cz_regions.py:15\nmsgid \"Hradec Region\"\nmsgstr \"מחוז חרדץ\"\n\n#: cz/cz_regions.py:16\nmsgid \"Pardubice Region\"\nmsgstr \"מחוז פרדוביצה\"\n\n#: cz/cz_regions.py:17\nmsgid \"Vysocina Region\"\nmsgstr \"מחוז ויסוצ'ינה\"\n\n#: cz/cz_regions.py:18\nmsgid \"South Moravian Region\"\nmsgstr \"דרום מורביה\"\n\n#: cz/cz_regions.py:19\nmsgid \"Olomouc Region\"\nmsgstr \"מחוז או איזור אולומוק\"\n\n#: cz/cz_regions.py:20\nmsgid \"Zlin Region\"\nmsgstr \"מחוז זלין\"\n\n#: cz/cz_regions.py:21\nmsgid \"Moravian-Silesian Region\"\nmsgstr \"איזור מורביה – שלזיה\"\n\n#: cz/forms.py:32 sk/forms.py:33\nmsgid \"Enter a postal code in the format XXXXX or XXX XX.\"\nmsgstr \"יש להזין קוד דואר בתבנית XXXXX או XXX XX.\"\n\n#: cz/forms.py:52\nmsgid \"Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.\"\nmsgstr \"הזן מספר לידה בתבנית XXXXXX/XXXX או XXXXXXXXXX.\"\n\n#: cz/forms.py:53\nmsgid \"Enter a valid birth number.\"\nmsgstr \"הזן מספר לידה חוקי.\"\n\n#: cz/forms.py:102\nmsgid \"Enter a valid IC number.\"\nmsgstr \"הזן מספר IC חוקי.\"\n\n#: de/de_states.py:5\nmsgid \"Baden-Wuerttemberg\"\nmsgstr \"באדן־וירטמברג\"\n\n#: de/de_states.py:6\nmsgid \"Bavaria\"\nmsgstr \"באווריה\"\n\n#: de/de_states.py:7\nmsgid \"Berlin\"\nmsgstr \"ברלין\"\n\n#: de/de_states.py:8\nmsgid \"Brandenburg\"\nmsgstr \"ברנדנבורג\"\n\n#: de/de_states.py:9\nmsgid \"Bremen\"\nmsgstr \"ברמן\"\n\n#: de/de_states.py:10\nmsgid \"Hamburg\"\nmsgstr \"המבורג\"\n\n#: de/de_states.py:11\nmsgid \"Hessen\"\nmsgstr \"הסה\"\n\n#: de/de_states.py:12\nmsgid \"Mecklenburg-Western Pomerania\"\nmsgstr \"מקלנבורג-מערב פומרניה\"\n\n#: de/de_states.py:13\nmsgid \"Lower Saxony\"\nmsgstr \"סקסוניה התחתונה\"\n\n#: de/de_states.py:14\nmsgid \"North Rhine-Westphalia\"\nmsgstr \"נורדריין־וסטפאליה\"\n\n#: de/de_states.py:15\nmsgid \"Rhineland-Palatinate\"\nmsgstr \"ריינלנד־פאלץ\"\n\n#: de/de_states.py:16\nmsgid \"Saarland\"\nmsgstr \"חבל הסאר\"\n\n#: de/de_states.py:17\nmsgid \"Saxony\"\nmsgstr \"סקסוניה\"\n\n#: de/de_states.py:18\nmsgid \"Saxony-Anhalt\"\nmsgstr \"סקסוניה־אנהלט\"\n\n#: de/de_states.py:19\nmsgid \"Schleswig-Holstein\"\nmsgstr \"שלזוויג־הולשטיין\"\n\n#: de/de_states.py:20\nmsgid \"Thuringia\"\nmsgstr \"תורינגיה\"\n\n#: de/forms.py:20 fi/forms.py:18 fr/forms.py:20\nmsgid \"Enter a zip code in the format XXXXX.\"\nmsgstr \"יש להזין מיקוד בתבנית XXXXX.\"\n\n#: de/forms.py:46\nmsgid \"\"\n\"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"format.\"\nmsgstr \"יש להזין מספר זיהוי גרמני חוקי בתבנית XXXXXXXXXXX-XXXXXXX-XXXXXXX-X.\"\n\n#: es/es_provinces.py:5\nmsgid \"Araba\"\nmsgstr \"אלבה\"\n\n#: es/es_provinces.py:6\nmsgid \"Albacete\"\nmsgstr \"אלבסטה\"\n\n#: es/es_provinces.py:7\nmsgid \"Alacant\"\nmsgstr \"אלאקאנט\"\n\n#: es/es_provinces.py:8\nmsgid \"Almeria\"\nmsgstr \"אלמריה\"\n\n#: es/es_provinces.py:9\nmsgid \"Avila\"\nmsgstr \"אווילה\"\n\n#: es/es_provinces.py:10\nmsgid \"Badajoz\"\nmsgstr \"באדאג'וז\"\n\n#: es/es_provinces.py:11\nmsgid \"Illes Balears\"\nmsgstr \"האיים הבלאריים\"\n\n#: es/es_provinces.py:12\nmsgid \"Barcelona\"\nmsgstr \"ברצלונה\"\n\n#: es/es_provinces.py:13\nmsgid \"Burgos\"\nmsgstr \"בורגוס\"\n\n#: es/es_provinces.py:14\nmsgid \"Caceres\"\nmsgstr \"קסרס\"\n\n#: es/es_provinces.py:15\nmsgid \"Cadiz\"\nmsgstr \"קדיס\"\n\n#: es/es_provinces.py:16\nmsgid \"Castello\"\nmsgstr \"קסטלו\"\n\n#: es/es_provinces.py:17\nmsgid \"Ciudad Real\"\nmsgstr \"העיר הקולוניאלית\"\n\n#: es/es_provinces.py:18\nmsgid \"Cordoba\"\nmsgstr \"קורדובה\"\n\n#: es/es_provinces.py:19\nmsgid \"A Coruna\"\nmsgstr \"א קורוניה\"\n\n#: es/es_provinces.py:20\nmsgid \"Cuenca\"\nmsgstr \"קואנקה\"\n\n#: es/es_provinces.py:21\nmsgid \"Girona\"\nmsgstr \"ז'ירונה\"\n\n#: es/es_provinces.py:22\nmsgid \"Granada\"\nmsgstr \"גרנדה\"\n\n#: es/es_provinces.py:23\nmsgid \"Guadalajara\"\nmsgstr \"גוודלחרה\"\n\n#: es/es_provinces.py:24\nmsgid \"Guipuzkoa\"\nmsgstr \"גוויפוזקואה\"\n\n#: es/es_provinces.py:25\nmsgid \"Huelva\"\nmsgstr \"אואלבה\"\n\n#: es/es_provinces.py:26\nmsgid \"Huesca\"\nmsgstr \"אואסקה\"\n\n#: es/es_provinces.py:27\nmsgid \"Jaen\"\nmsgstr \"חאאן\"\n\n#: es/es_provinces.py:28\nmsgid \"Leon\"\nmsgstr \"לאון\"\n\n#: es/es_provinces.py:29\nmsgid \"Lleida\"\nmsgstr \"ליידה\"\n\n#: es/es_provinces.py:30 es/es_regions.py:17\nmsgid \"La Rioja\"\nmsgstr \"לה ריוחה\"\n\n#: es/es_provinces.py:31\nmsgid \"Lugo\"\nmsgstr \"לוגו\"\n\n#: es/es_provinces.py:32 es/es_regions.py:18\nmsgid \"Madrid\"\nmsgstr \"מדריד\"\n\n#: es/es_provinces.py:33\nmsgid \"Malaga\"\nmsgstr \"מאלאגה\"\n\n#: es/es_provinces.py:34\nmsgid \"Murcia\"\nmsgstr \"מורסיה\"\n\n#: es/es_provinces.py:35\nmsgid \"Navarre\"\nmsgstr \"נווארה\"\n\n#: es/es_provinces.py:36\nmsgid \"Ourense\"\nmsgstr \"אוורנס\"\n\n#: es/es_provinces.py:37\nmsgid \"Asturias\"\nmsgstr \"אסטוריאס\"\n\n#: es/es_provinces.py:38\nmsgid \"Palencia\"\nmsgstr \"פלנסיה\"\n\n#: es/es_provinces.py:39\nmsgid \"Las Palmas\"\nmsgstr \"לאס פאלמס\"\n\n#: es/es_provinces.py:40\nmsgid \"Pontevedra\"\nmsgstr \"פונטוורדה\"\n\n#: es/es_provinces.py:41\nmsgid \"Salamanca\"\nmsgstr \"סלמנקה\"\n\n#: es/es_provinces.py:42\nmsgid \"Santa Cruz de Tenerife\"\nmsgstr \"סנטה קרוז דה טנריף\"\n\n#: es/es_provinces.py:43 es/es_regions.py:11\nmsgid \"Cantabria\"\nmsgstr \"קנטבריה\"\n\n#: es/es_provinces.py:44\nmsgid \"Segovia\"\nmsgstr \"סגוביה\"\n\n#: es/es_provinces.py:45\nmsgid \"Seville\"\nmsgstr \"סביליה\"\n\n#: es/es_provinces.py:46\nmsgid \"Soria\"\nmsgstr \"סוריה\"\n\n#: es/es_provinces.py:47\nmsgid \"Tarragona\"\nmsgstr \"טרגונה\"\n\n#: es/es_provinces.py:48\nmsgid \"Teruel\"\nmsgstr \"טרואל\"\n\n#: es/es_provinces.py:49\nmsgid \"Toledo\"\nmsgstr \"טולדו\"\n\n#: es/es_provinces.py:50\nmsgid \"Valencia\"\nmsgstr \"ולנסיה\"\n\n#: es/es_provinces.py:51\nmsgid \"Valladolid\"\nmsgstr \"ויאדוליד\"\n\n#: es/es_provinces.py:52\nmsgid \"Bizkaia\"\nmsgstr \"ביסקאיה\"\n\n#: es/es_provinces.py:53\nmsgid \"Zamora\"\nmsgstr \"סמורה\"\n\n#: es/es_provinces.py:54\nmsgid \"Zaragoza\"\nmsgstr \"סראגוסה\"\n\n#: es/es_provinces.py:55\nmsgid \"Ceuta\"\nmsgstr \"סאוטה\"\n\n#: es/es_provinces.py:56\nmsgid \"Melilla\"\nmsgstr \"מלייה\"\n\n#: es/es_regions.py:5\nmsgid \"Andalusia\"\nmsgstr \"אנדלוסיה\"\n\n#: es/es_regions.py:6\nmsgid \"Aragon\"\nmsgstr \"אראגון\"\n\n#: es/es_regions.py:7\nmsgid \"Principality of Asturias\"\nmsgstr \"נסיכות אסטוריאס\"\n\n#: es/es_regions.py:8\nmsgid \"Balearic Islands\"\nmsgstr \"האיים הבלאריים\"\n\n#: es/es_regions.py:9\nmsgid \"Basque Country\"\nmsgstr \"חבל הבסקים\"\n\n#: es/es_regions.py:10\nmsgid \"Canary Islands\"\nmsgstr \"האיים הקנריים\"\n\n#: es/es_regions.py:12\nmsgid \"Castile-La Mancha\"\nmsgstr \"קסטיליה-לה מנצ'ה\"\n\n#: es/es_regions.py:13\nmsgid \"Castile and Leon\"\nmsgstr \"קסטיליה ולאון\"\n\n#: es/es_regions.py:14\nmsgid \"Catalonia\"\nmsgstr \"קאטלוניה\"\n\n#: es/es_regions.py:15\nmsgid \"Extremadura\"\nmsgstr \"אקסטרמדורה\"\n\n#: es/es_regions.py:16\nmsgid \"Galicia\"\nmsgstr \"גאליציה\"\n\n#: es/es_regions.py:19\nmsgid \"Region of Murcia\"\nmsgstr \"אזור מורסיה\"\n\n#: es/es_regions.py:20\nmsgid \"Foral Community of Navarre\"\nmsgstr \"הקהילה האוטונומית של נווארה\"\n\n#: es/es_regions.py:21\nmsgid \"Valencian Community\"\nmsgstr \"קהילת ולנסיה\"\n\n#: es/forms.py:26\nmsgid \"Enter a valid postal code in the range and format 01XXX - 52XXX.\"\nmsgstr \"נא להזין מיקוד חוקי בתחום ובתבנית 01XXX - 52XXX.\"\n\n#: es/forms.py:46\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or \"\n\"9XXXXXXXX.\"\nmsgstr \"\"\n\"נא להזין מספר טלפון חוקי באחת מהתבניות 6XXXXXXXX, 8XXXXXXXX  או 9XXXXXXXX.\"\n\n#: es/forms.py:73\nmsgid \"Please enter a valid NIF, NIE, or CIF.\"\nmsgstr \"נא להזין NIF, NIE, או CIF חוקי.\"\n\n#: es/forms.py:74\nmsgid \"Please enter a valid NIF or NIE.\"\nmsgstr \"נא להזין NIF או NIE חוקי.\"\n\n#: es/forms.py:75\nmsgid \"Invalid checksum for NIF.\"\nmsgstr \"סיכום ביקורת שגוי עבור NIF.\"\n\n#: es/forms.py:76\nmsgid \"Invalid checksum for NIE.\"\nmsgstr \"סיכום ביקורת שגוי עבור NIE.\"\n\n#: es/forms.py:77\nmsgid \"Invalid checksum for CIF.\"\nmsgstr \"סיכום ביקורת שגוי עבור CIF.\"\n\n#: es/forms.py:149\nmsgid \"\"\n\"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.\"\nmsgstr \"נא להזין מספר חשבון בנק חוקי בתבנית XXXX-XXXX-XX-XXXXXXXXXX.\"\n\n#: es/forms.py:150\nmsgid \"Invalid checksum for bank account number.\"\nmsgstr \"סיכום ביקורת שגוי עבור מספר חשבון בנק.\"\n\n#: fi/forms.py:33\nmsgid \"Enter a valid Finnish social security number.\"\nmsgstr \"יש להזין מספר ביטוח לאומי פיני חוקי.\"\n\n#: fr/forms.py:35\nmsgid \"Phone numbers must be in 0X XX XX XX XX format.\"\nmsgstr \"מספרי טלפון חייבים  להיות בתבנית 0X XX XX XX XX.\"\n\n#: gb/forms.py:25\nmsgid \"Enter a valid postcode.\"\nmsgstr \"יש להזין מיקוד חוקי.\"\n\n#: gb/gb_regions.py:11\nmsgid \"Bedfordshire\"\nmsgstr \" בדפורשייר\"\n\n#: gb/gb_regions.py:12\nmsgid \"Buckinghamshire\"\nmsgstr \"באקינגהמשייר\"\n\n#: gb/gb_regions.py:14\nmsgid \"Cheshire\"\nmsgstr \" צ'שייר\"\n\n#: gb/gb_regions.py:15\nmsgid \"Cornwall and Isles of Scilly\"\nmsgstr \"קורנוול ואיי סילי\"\n\n#: gb/gb_regions.py:16\nmsgid \"Cumbria\"\nmsgstr \" קאמבריה\"\n\n#: gb/gb_regions.py:17\nmsgid \"Derbyshire\"\nmsgstr \"דרבישייר\"\n\n#: gb/gb_regions.py:18\nmsgid \"Devon\"\nmsgstr \" דבון\"\n\n#: gb/gb_regions.py:19\nmsgid \"Dorset\"\nmsgstr \"דורסט\"\n\n#: gb/gb_regions.py:20\nmsgid \"Durham\"\nmsgstr \"דרהאם\"\n\n#: gb/gb_regions.py:21\nmsgid \"East Sussex\"\nmsgstr \"מזרח אסקס\"\n\n#: gb/gb_regions.py:22\nmsgid \"Essex\"\nmsgstr \"אסקס\"\n\n#: gb/gb_regions.py:23\nmsgid \"Gloucestershire\"\nmsgstr \"גלוסטרשייר\"\n\n#: gb/gb_regions.py:24\nmsgid \"Greater London\"\nmsgstr \"לונדון רבתי\"\n\n#: gb/gb_regions.py:25\nmsgid \"Greater Manchester\"\nmsgstr \"מנצ'סטר רבתי\"\n\n#: gb/gb_regions.py:26\nmsgid \"Hampshire\"\nmsgstr \"המפשייר\"\n\n#: gb/gb_regions.py:27\nmsgid \"Hertfordshire\"\nmsgstr \"הארטפורדשייר\"\n\n#: gb/gb_regions.py:28\nmsgid \"Kent\"\nmsgstr \"קנט\"\n\n#: gb/gb_regions.py:29\nmsgid \"Lancashire\"\nmsgstr \"לנקשייר\"\n\n#: gb/gb_regions.py:30\nmsgid \"Leicestershire\"\nmsgstr \"ליסטרשייר\"\n\n#: gb/gb_regions.py:31\nmsgid \"Lincolnshire\"\nmsgstr \" לינקולנשייר\"\n\n#: gb/gb_regions.py:32\nmsgid \"Merseyside\"\nmsgstr \"מרסיסייד\"\n\n#: gb/gb_regions.py:33\nmsgid \"Norfolk\"\nmsgstr \"נורפולק\"\n\n#: gb/gb_regions.py:34\nmsgid \"North Yorkshire\"\nmsgstr \"צפון יורקשייר\"\n\n#: gb/gb_regions.py:35\nmsgid \"Northamptonshire\"\nmsgstr \"נורת'המפטונשייר\"\n\n#: gb/gb_regions.py:36\nmsgid \"Northumberland\"\nmsgstr \"נורת'אמברלנד\"\n\n#: gb/gb_regions.py:37\nmsgid \"Nottinghamshire\"\nmsgstr \"נוטינגהאמשייר\"\n\n#: gb/gb_regions.py:38\nmsgid \"Oxfordshire\"\nmsgstr \"אוקספורדשייר\"\n\n#: gb/gb_regions.py:39\nmsgid \"Shropshire\"\nmsgstr \"שרופשייר\"\n\n#: gb/gb_regions.py:40\nmsgid \"Somerset\"\nmsgstr \"סומרסט\"\n\n#: gb/gb_regions.py:41\nmsgid \"South Yorkshire\"\nmsgstr \"דרום יורקשייר\"\n\n#: gb/gb_regions.py:42\nmsgid \"Staffordshire\"\nmsgstr \"סטאפורדשייר\"\n\n#: gb/gb_regions.py:43\nmsgid \"Suffolk\"\nmsgstr \" סאפוק\"\n\n#: gb/gb_regions.py:44\nmsgid \"Surrey\"\nmsgstr \"סוריי\"\n\n#: gb/gb_regions.py:45\nmsgid \"Tyne and Wear\"\nmsgstr \"טיין ו־וויר\"\n\n#: gb/gb_regions.py:46\nmsgid \"Warwickshire\"\nmsgstr \" וורוויקשייר\"\n\n#: gb/gb_regions.py:47\nmsgid \"West Midlands\"\nmsgstr \"מערב המידלנדס\"\n\n#: gb/gb_regions.py:48\nmsgid \"West Sussex\"\nmsgstr \"מערב סאסקס\"\n\n#: gb/gb_regions.py:49\nmsgid \"West Yorkshire\"\nmsgstr \"מערב יורקשייר\"\n\n#: gb/gb_regions.py:50\nmsgid \"Wiltshire\"\nmsgstr \" ווילטשייר\"\n\n#: gb/gb_regions.py:51\nmsgid \"Worcestershire\"\nmsgstr \" ווסטרשייר\"\n\n#: gb/gb_regions.py:55\nmsgid \"County Antrim\"\nmsgstr \"מחוז אנטרים\"\n\n#: gb/gb_regions.py:56\nmsgid \"County Armagh\"\nmsgstr \"ארמה\"\n\n#: gb/gb_regions.py:57\nmsgid \"County Down\"\nmsgstr \"מחוז דאון\"\n\n#: gb/gb_regions.py:58\nmsgid \"County Fermanagh\"\nmsgstr \"מחוז פרמאנה\"\n\n#: gb/gb_regions.py:59\nmsgid \"County Londonderry\"\nmsgstr \"מחוז לונדונברי\"\n\n#: gb/gb_regions.py:60\nmsgid \"County Tyrone\"\nmsgstr \"מחוז טיירון\"\n\n#: gb/gb_regions.py:64\nmsgid \"Clwyd\"\nmsgstr \"קלוויד\"\n\n#: gb/gb_regions.py:65\nmsgid \"Dyfed\"\nmsgstr \"דייפד\"\n\n#: gb/gb_regions.py:66\nmsgid \"Gwent\"\nmsgstr \"גוונט\"\n\n#: gb/gb_regions.py:67\nmsgid \"Gwynedd\"\nmsgstr \"גווינד\"\n\n#: gb/gb_regions.py:68\nmsgid \"Mid Glamorgan\"\nmsgstr \"מרכז גלמורגן\"\n\n#: gb/gb_regions.py:69\nmsgid \"Powys\"\nmsgstr \"ַפואיס\"\n\n#: gb/gb_regions.py:70\nmsgid \"South Glamorgan\"\nmsgstr \"דרום גלמורגן\"\n\n#: gb/gb_regions.py:71\nmsgid \"West Glamorgan\"\nmsgstr \"מערב גלמורגן\"\n\n#: gb/gb_regions.py:75\nmsgid \"Borders\"\nmsgstr \"גבולות\"\n\n#: gb/gb_regions.py:76\nmsgid \"Central Scotland\"\nmsgstr \"מרכז סקוטלנד\"\n\n#: gb/gb_regions.py:77\nmsgid \"Dumfries and Galloway\"\nmsgstr \"דמפרייס וגאלוויי\"\n\n#: gb/gb_regions.py:78\nmsgid \"Fife\"\nmsgstr \"פייף\"\n\n#: gb/gb_regions.py:79\nmsgid \"Grampian\"\nmsgstr \" גרמפיאן\"\n\n#: gb/gb_regions.py:80\nmsgid \"Highland\"\nmsgstr \"רמה\"\n\n#: gb/gb_regions.py:81\nmsgid \"Lothian\"\nmsgstr \"לודיאן\"\n\n#: gb/gb_regions.py:82\nmsgid \"Orkney Islands\"\nmsgstr \"איי אורקיי\"\n\n#: gb/gb_regions.py:83\nmsgid \"Shetland Islands\"\nmsgstr \"איי שטלנד\"\n\n#: gb/gb_regions.py:84\nmsgid \"Strathclyde\"\nmsgstr \"סטראת'קלייד\"\n\n#: gb/gb_regions.py:85\nmsgid \"Tayside\"\nmsgstr \"טייסייד\"\n\n#: gb/gb_regions.py:86\nmsgid \"Western Isles\"\nmsgstr \"האיים המערביים\"\n\n#: gb/gb_regions.py:90\nmsgid \"England\"\nmsgstr \"אנגליה\"\n\n#: gb/gb_regions.py:91\nmsgid \"Northern Ireland\"\nmsgstr \"צפון אירלנד\"\n\n#: gb/gb_regions.py:92\nmsgid \"Scotland\"\nmsgstr \"סקוטלנד\"\n\n#: gb/gb_regions.py:93\nmsgid \"Wales\"\nmsgstr \"וויילס\"\n\n#: hk/forms.py:37\n#, python-format\nmsgid \"Phone number should not start with one of the followings: %s.\"\nmsgstr \"מספר טלפון לא צריך להתחיל עם אחת מהבאות: %s.\"\n\n#: hk/forms.py:40\n#, python-format\nmsgid \"Phone number must be in one of the following formats: %s.\"\nmsgstr \"מספר הטלפון חייב להיות באחת מהתבניות הבאות: %s.\"\n\n#: hk/forms.py:42\n#, python-format\nmsgid \"Phone number should start with one of the followings: %s.\"\nmsgstr \"מספר טלפון צריך להתחיל עם אחת מהבאות: %s.\"\n\n#: hr/forms.py:76\nmsgid \"Enter a valid 13 digit JMBG\"\nmsgstr \"נא להזין JMBG חוקי בן 13 ספרות\"\n\n#: hr/forms.py:77\nmsgid \"Error in date segment\"\nmsgstr \"שגיאה במקטע תאריך\"\n\n#: hr/forms.py:123\nmsgid \"Enter a valid 11 digit OIB\"\nmsgstr \"נא להזין OIB חוקי בן 11 ספרות\"\n\n#: hr/forms.py:152 id/forms.py:112\nmsgid \"Enter a valid vehicle license plate number\"\nmsgstr \"יש להזין מספר רישוי רכב חוקי\"\n\n#: hr/forms.py:153\nmsgid \"Enter a valid location code\"\nmsgstr \"נא להזין קוד מיקום חוקי\"\n\n#: hr/forms.py:154\nmsgid \"Number part cannot be zero\"\nmsgstr \"מקטע המספר אינו יכול להיות אפס\"\n\n#: hr/forms.py:190\nmsgid \"Enter a valid 5 digit postal code\"\nmsgstr \"נא להזין מיקוד חוקי בן 5 ספרות\"\n\n#: hr/forms.py:218 id/forms.py:72 nl/forms.py:56\nmsgid \"Enter a valid phone number\"\nmsgstr \"יש להזין מספר טלפון חוקי\"\n\n#: hr/forms.py:219\nmsgid \"Enter a valid area or mobile network code\"\nmsgstr \"נא להזין קידומת איזור או רשת סלולרית חוקית\"\n\n#: hr/forms.py:220\nmsgid \"The phone nubmer is too long\"\nmsgstr \"מספר הטלפון ארוך מדי\"\n\n#: hr/forms.py:258\nmsgid \"Enter a valid 19 digit JMBAG starting with 601983\"\nmsgstr \"נא להזין JMBAG חוקי בן 19 ספרות המתחיל ב-601983\"\n\n#: hr/forms.py:259\nmsgid \"Card issue number cannot be zero\"\nmsgstr \"מספר הנפקת כרטיס אינו יכול להיות אפס\"\n\n#: hr/hr_choices.py:14\nmsgid \"Grad Zagreb\"\nmsgstr \"זאגרב\"\n\n#: hr/hr_choices.py:15\nmsgid \"Bjelovarsko-bilogorska županija\"\nmsgstr \"מחוז ביילובר-בילוגורה\"\n\n#: hr/hr_choices.py:16\nmsgid \"Brodsko-posavska županija\"\nmsgstr \"מחוז רודסקו-פוסבסקה\"\n\n#: hr/hr_choices.py:17\nmsgid \"Dubrovačko-neretvanska županija\"\nmsgstr \"מחוז דוברובניק-נרטב\"\n\n#: hr/hr_choices.py:18\nmsgid \"Istarska županija\"\nmsgstr \"מחוז  איסטריה\"\n\n#: hr/hr_choices.py:19\nmsgid \"Karlovačka županija\"\nmsgstr \"מחוז קארלובץ'\"\n\n#: hr/hr_choices.py:20\nmsgid \"Koprivničko-križevačka županija\"\nmsgstr \"מחוז קופריבניקו-קריזבאקה\"\n\n#: hr/hr_choices.py:21\nmsgid \"Krapinsko-zagorska županija\"\nmsgstr \"מחוז קרפינה-זגוריה\"\n\n#: hr/hr_choices.py:22\nmsgid \"Ličko-senjska županija\"\nmsgstr \"מחוז ליקו-סנג'סקה\"\n\n#: hr/hr_choices.py:23\nmsgid \"Međimurska županija\"\nmsgstr \"מחוז Međimurska\"\n\n#: hr/hr_choices.py:24\nmsgid \"Osječko-baranjska županija\"\nmsgstr \"מחוז אוסייק-ברניה\"\n\n#: hr/hr_choices.py:25\nmsgid \"Požeško-slavonska županija\"\nmsgstr \"מחוז פוזסקו-סלבונסקה\"\n\n#: hr/hr_choices.py:26\nmsgid \"Primorsko-goranska županija\"\nmsgstr \"מחוז פרימורסקו-גוראנסקה\"\n\n#: hr/hr_choices.py:27\nmsgid \"Sisačko-moslavačka županija\"\nmsgstr \"מחוז סיסאק-מוסלבינה\"\n\n#: hr/hr_choices.py:28\nmsgid \"Splitsko-dalmatinska županija\"\nmsgstr \"מחוז ספליצקו-דאלמאטינסקה\"\n\n#: hr/hr_choices.py:29\nmsgid \"Šibensko-kninska županija\"\nmsgstr \"מחוז סיבנבקו-קנינסקה\"\n\n#: hr/hr_choices.py:30\nmsgid \"Varaždinska županija\"\nmsgstr \"מחוז ואראז'דין\"\n\n#: hr/hr_choices.py:31\nmsgid \"Virovitičko-podravska županija\"\nmsgstr \"מחוז ירוביטיקו-פודרבסקה\"\n\n#: hr/hr_choices.py:32\nmsgid \"Vukovarsko-srijemska županija\"\nmsgstr \"מחוז וקוברסקו-סריימסקה\"\n\n#: hr/hr_choices.py:33\nmsgid \"Zadarska županija\"\nmsgstr \"מחוז זאדארסקה\"\n\n#: hr/hr_choices.py:34\nmsgid \"Zagrebačka županija\"\nmsgstr \"מחוז זאגרב\"\n\n#: id/forms.py:31\nmsgid \"Enter a valid post code\"\nmsgstr \"יש להזין מיקוד חוקי.\"\n\n#: id/forms.py:176\nmsgid \"Enter a valid NIK/KTP number\"\nmsgstr \"הזן מספר NIK/KTP חוקי.\"\n\n#: id/id_choices.py:15\nmsgid \"Aceh\"\nmsgstr \"אצ 'ה\"\n\n#: id/id_choices.py:16 id/id_choices.py:79\nmsgid \"Bali\"\nmsgstr \"באלי\"\n\n#: id/id_choices.py:17 id/id_choices.py:51\nmsgid \"Banten\"\nmsgstr \"בנטן\"\n\n#: id/id_choices.py:18 id/id_choices.py:60\nmsgid \"Bengkulu\"\nmsgstr \"בנגולו\"\n\n#: id/id_choices.py:19 id/id_choices.py:53\nmsgid \"Yogyakarta\"\nmsgstr \"ג'וקיירטה\"\n\n#: id/id_choices.py:20 id/id_choices.py:57\nmsgid \"Jakarta\"\nmsgstr \"ג'קרטה\"\n\n#: id/id_choices.py:21 id/id_choices.py:81\nmsgid \"Gorontalo\"\nmsgstr \"גורנטלו\"\n\n#: id/id_choices.py:22 id/id_choices.py:63\nmsgid \"Jambi\"\nmsgstr \"ג'מבי\"\n\n#: id/id_choices.py:23\nmsgid \"Jawa Barat\"\nmsgstr \"ג'אווה מערב\"\n\n#: id/id_choices.py:24\nmsgid \"Jawa Tengah\"\nmsgstr \"ג'אווה מרכז\"\n\n#: id/id_choices.py:25\nmsgid \"Jawa Timur\"\nmsgstr \"ג'אווה מזרח\"\n\n#: id/id_choices.py:26 id/id_choices.py:94\nmsgid \"Kalimantan Barat\"\nmsgstr \"בורנאו מערב\"\n\n#: id/id_choices.py:27 id/id_choices.py:72\nmsgid \"Kalimantan Selatan\"\nmsgstr \"בורנאו דרום\"\n\n#: id/id_choices.py:28 id/id_choices.py:95\nmsgid \"Kalimantan Tengah\"\nmsgstr \"בורנאו מרכז\"\n\n#: id/id_choices.py:29 id/id_choices.py:96\nmsgid \"Kalimantan Timur\"\nmsgstr \"בורנאו מזרח\"\n\n#: id/id_choices.py:30\nmsgid \"Kepulauan Bangka-Belitung\"\nmsgstr \"איי בנגקה בליטונג\"\n\n#: id/id_choices.py:31 id/id_choices.py:68\nmsgid \"Kepulauan Riau\"\nmsgstr \"איי ריאאו\"\n\n#: id/id_choices.py:32 id/id_choices.py:61\nmsgid \"Lampung\"\nmsgstr \"למפונג\"\n\n#: id/id_choices.py:33 id/id_choices.py:76\nmsgid \"Maluku\"\nmsgstr \"מאלוקו\"\n\n#: id/id_choices.py:34 id/id_choices.py:77\nmsgid \"Maluku Utara\"\nmsgstr \"מאלוקו צפון\"\n\n#: id/id_choices.py:35\nmsgid \"Nusa Tenggara Barat\"\nmsgstr \"איי סונדה הקטנים - מערב\"\n\n#: id/id_choices.py:36\nmsgid \"Nusa Tenggara Timur\"\nmsgstr \"איי סונדה הקטנים - מזרח\"\n\n#: id/id_choices.py:37\nmsgid \"Papua\"\nmsgstr \"פפוא\"\n\n#: id/id_choices.py:38\nmsgid \"Papua Barat\"\nmsgstr \"פפוא מערב\"\n\n#: id/id_choices.py:39 id/id_choices.py:66\nmsgid \"Riau\"\nmsgstr \"ריאאו\"\n\n#: id/id_choices.py:40 id/id_choices.py:74\nmsgid \"Sulawesi Barat\"\nmsgstr \"סולבסי מערב\"\n\n#: id/id_choices.py:41 id/id_choices.py:75\nmsgid \"Sulawesi Selatan\"\nmsgstr \"סולבסי דרום\"\n\n#: id/id_choices.py:42 id/id_choices.py:82\nmsgid \"Sulawesi Tengah\"\nmsgstr \"סולבסי מרכז\"\n\n#: id/id_choices.py:43 id/id_choices.py:85\nmsgid \"Sulawesi Tenggara\"\nmsgstr \"סולבסי דרום־מזרח\"\n\n#: id/id_choices.py:44\nmsgid \"Sulawesi Utara\"\nmsgstr \"סולבסי צפון\"\n\n#: id/id_choices.py:45 id/id_choices.py:58\nmsgid \"Sumatera Barat\"\nmsgstr \"סומטרה מערב\"\n\n#: id/id_choices.py:46 id/id_choices.py:62\nmsgid \"Sumatera Selatan\"\nmsgstr \"סומטרה דרום\"\n\n#: id/id_choices.py:47 id/id_choices.py:64\nmsgid \"Sumatera Utara\"\nmsgstr \"סומטרה צפון\"\n\n#: id/id_choices.py:52\nmsgid \"Magelang\"\nmsgstr \"מאגלנג\"\n\n#: id/id_choices.py:54\nmsgid \"Surakarta - Solo\"\nmsgstr \"סורקרטה - סולו\"\n\n#: id/id_choices.py:55\nmsgid \"Madiun\"\nmsgstr \"מדיון\"\n\n#: id/id_choices.py:56\nmsgid \"Kediri\"\nmsgstr \"קדירי\"\n\n#: id/id_choices.py:59\nmsgid \"Tapanuli\"\nmsgstr \"טפנולי\"\n\n#: id/id_choices.py:65\nmsgid \"Nanggroe Aceh Darussalam\"\nmsgstr \"נגרוא אסה דרוסלם\"\n\n#: id/id_choices.py:67\nmsgid \"Kepulauan Bangka Belitung\"\nmsgstr \"בנגה-מליטנג\"\n\n#: id/id_choices.py:69\nmsgid \"Corps Consulate\"\nmsgstr \"קונסוליות\"\n\n#: id/id_choices.py:70\nmsgid \"Corps Diplomatic\"\nmsgstr \"שגרירויות\"\n\n#: id/id_choices.py:71\nmsgid \"Bandung\"\nmsgstr \"בנדונג\"\n\n#: id/id_choices.py:73\nmsgid \"Sulawesi Utara Daratan\"\nmsgstr \"סולאוסי צפון\"\n\n#: id/id_choices.py:78\nmsgid \"NTT - Timor\"\nmsgstr \"NTT - טימור\"\n\n#: id/id_choices.py:80\nmsgid \"Sulawesi Utara Kepulauan\"\nmsgstr \"איי סולבסי צפון\"\n\n#: id/id_choices.py:83\nmsgid \"NTB - Lombok\"\nmsgstr \"NTB - לומבוק\"\n\n#: id/id_choices.py:84\nmsgid \"Papua dan Papua Barat\"\nmsgstr \"פאפו ופאפו מערב\"\n\n#: id/id_choices.py:86\nmsgid \"Cirebon\"\nmsgstr \"סיירבון\"\n\n#: id/id_choices.py:87\nmsgid \"NTB - Sumbawa\"\nmsgstr \"NTB - סומבאווה\"\n\n#: id/id_choices.py:88\nmsgid \"NTT - Flores\"\nmsgstr \"NTT - פלורס\"\n\n#: id/id_choices.py:89\nmsgid \"NTT - Sumba\"\nmsgstr \"NTT - סומבה\"\n\n#: id/id_choices.py:90\nmsgid \"Bogor\"\nmsgstr \"בוגור\"\n\n#: id/id_choices.py:91\nmsgid \"Pekalongan\"\nmsgstr \"פקלונגאן\"\n\n#: id/id_choices.py:92\nmsgid \"Semarang\"\nmsgstr \"סמרנג\"\n\n#: id/id_choices.py:93\nmsgid \"Pati\"\nmsgstr \"פאטי\"\n\n#: id/id_choices.py:97\nmsgid \"Surabaya\"\nmsgstr \"סורביה\"\n\n#: id/id_choices.py:98\nmsgid \"Madura\"\nmsgstr \"מדורה\"\n\n#: id/id_choices.py:99\nmsgid \"Malang\"\nmsgstr \"מאלאנג\"\n\n#: id/id_choices.py:100\nmsgid \"Jember\"\nmsgstr \"ג'מבר\"\n\n#: id/id_choices.py:101\nmsgid \"Banyumas\"\nmsgstr \"בניומס\"\n\n#: id/id_choices.py:102\nmsgid \"Federal Government\"\nmsgstr \"ממשל פדרלי\"\n\n#: id/id_choices.py:103\nmsgid \"Bojonegoro\"\nmsgstr \"בוג'ונגורו\"\n\n#: id/id_choices.py:104\nmsgid \"Purwakarta\"\nmsgstr \"פורקוורטה\"\n\n#: id/id_choices.py:105\nmsgid \"Sidoarjo\"\nmsgstr \"סידוארג'ו\"\n\n#: id/id_choices.py:106\nmsgid \"Garut\"\nmsgstr \"גארוט\"\n\n#: ie/ie_counties.py:8\nmsgid \"Antrim\"\nmsgstr \"אנטרים\"\n\n#: ie/ie_counties.py:9\nmsgid \"Armagh\"\nmsgstr \"ארמאה\"\n\n#: ie/ie_counties.py:10\nmsgid \"Carlow\"\nmsgstr \"קארלאו\"\n\n#: ie/ie_counties.py:11\nmsgid \"Cavan\"\nmsgstr \"קאוובן\"\n\n#: ie/ie_counties.py:12\nmsgid \"Clare\"\nmsgstr \"קלייר\"\n\n#: ie/ie_counties.py:13\nmsgid \"Cork\"\nmsgstr \"קורק\"\n\n#: ie/ie_counties.py:14\nmsgid \"Derry\"\nmsgstr \"דרי\"\n\n#: ie/ie_counties.py:15\nmsgid \"Donegal\"\nmsgstr \"דונגאל\"\n\n#: ie/ie_counties.py:16\nmsgid \"Down\"\nmsgstr \"דאון\"\n\n#: ie/ie_counties.py:17\nmsgid \"Dublin\"\nmsgstr \"דבלין\"\n\n#: ie/ie_counties.py:18\nmsgid \"Fermanagh\"\nmsgstr \"פרמנה\"\n\n#: ie/ie_counties.py:19\nmsgid \"Galway\"\nmsgstr \"גולוויי\"\n\n#: ie/ie_counties.py:20\nmsgid \"Kerry\"\nmsgstr \"קרי\"\n\n#: ie/ie_counties.py:21\nmsgid \"Kildare\"\nmsgstr \"קילדאר\"\n\n#: ie/ie_counties.py:22\nmsgid \"Kilkenny\"\nmsgstr \"קילקני\"\n\n#: ie/ie_counties.py:23\nmsgid \"Laois\"\nmsgstr \"ליש\"\n\n#: ie/ie_counties.py:24\nmsgid \"Leitrim\"\nmsgstr \"לייטרים\"\n\n#: ie/ie_counties.py:25\nmsgid \"Limerick\"\nmsgstr \"לימריק\"\n\n#: ie/ie_counties.py:26\nmsgid \"Longford\"\nmsgstr \"לונגפורד\"\n\n#: ie/ie_counties.py:27\nmsgid \"Louth\"\nmsgstr \"לאות'\"\n\n#: ie/ie_counties.py:28\nmsgid \"Mayo\"\nmsgstr \"מאיו\"\n\n#: ie/ie_counties.py:29\nmsgid \"Meath\"\nmsgstr \"מית'\"\n\n#: ie/ie_counties.py:30\nmsgid \"Monaghan\"\nmsgstr \"מונהאן\"\n\n#: ie/ie_counties.py:31\nmsgid \"Offaly\"\nmsgstr \"אופלי\"\n\n#: ie/ie_counties.py:32\nmsgid \"Roscommon\"\nmsgstr \"רוסקומון\"\n\n#: ie/ie_counties.py:33\nmsgid \"Sligo\"\nmsgstr \"סלייגו\"\n\n#: ie/ie_counties.py:34\nmsgid \"Tipperary\"\nmsgstr \"טיפררי\"\n\n#: ie/ie_counties.py:35\nmsgid \"Tyrone\"\nmsgstr \"טיירון\"\n\n#: ie/ie_counties.py:36\nmsgid \"Waterford\"\nmsgstr \"ווטפורד\"\n\n#: ie/ie_counties.py:37\nmsgid \"Westmeath\"\nmsgstr \"וסטמית'\"\n\n#: ie/ie_counties.py:38\nmsgid \"Wexford\"\nmsgstr \"וקספורד\"\n\n#: ie/ie_counties.py:39\nmsgid \"Wicklow\"\nmsgstr \"ויקלו\"\n\n#: il/forms.py:32\nmsgid \"Enter a postal code in the format XXXXX\"\nmsgstr \"נא להזין מיקוד בתבנית XXXXX\"\n\n#: il/forms.py:51\nmsgid \"Enter a valid ID number.\"\nmsgstr \"יש להזין מספר זיהות תקף.\"\n\n#: in_/forms.py:41\nmsgid \"Enter a zip code in the format XXXXXX or XXX XXX.\"\nmsgstr \"נא להזין מיקוד בתבנית XXXXXX או XXX XXX.\"\n\n#: in_/forms.py:64\nmsgid \"Enter an Indian state or territory.\"\nmsgstr \"נא להזין מדינה או טריטוריה הודית.\"\n\n#: in_/forms.py:103\nmsgid \"Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.\"\nmsgstr \"מספרי טלפון חייבים להיות בתבנית 02X-8X או 03X-7X או 04X-6X.\"\n\n#: is_/forms.py:22\nmsgid \"\"\n\"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.\"\nmsgstr \"יש להזין מספר זיהוי איסלנדי חוקי. התבנית היא XXXXXX-XXXX.\"\n\n#: is_/forms.py:23\nmsgid \"The Icelandic identification number is not valid.\"\nmsgstr \"מספר הזיהוי האיסלנדי אינו חוקי\"\n\n#: it/forms.py:21\nmsgid \"Enter a valid zip code.\"\nmsgstr \"יש להזין מיקוד חוקי.\"\n\n#: it/forms.py:48\nmsgid \"Enter a valid Social Security number.\"\nmsgstr \"יש להזין מספר ביטוח לאומי חוקי.\"\n\n#: it/forms.py:73\nmsgid \"Enter a valid VAT number.\"\nmsgstr \"יש להזין מספר מע\\\"מ חוקי\"\n\n#: jp/forms.py:19\nmsgid \"Enter a postal code in the format XXXXXXX or XXX-XXXX.\"\nmsgstr \"יש להזין קוד דואר בתבנית XXXXXXX או XXX-XXXX.\"\n\n#: jp/jp_prefectures.py:4\nmsgid \"Hokkaido\"\nmsgstr \"הוקאידו\"\n\n#: jp/jp_prefectures.py:5\nmsgid \"Aomori\"\nmsgstr \"אאומורי\"\n\n#: jp/jp_prefectures.py:6\nmsgid \"Iwate\"\nmsgstr \"Iwate\"\n\n#: jp/jp_prefectures.py:7\nmsgid \"Miyagi\"\nmsgstr \"מיאגי\"\n\n#: jp/jp_prefectures.py:8\nmsgid \"Akita\"\nmsgstr \"אקיטה\"\n\n#: jp/jp_prefectures.py:9\nmsgid \"Yamagata\"\nmsgstr \"יאמאגטה\"\n\n#: jp/jp_prefectures.py:10\nmsgid \"Fukushima\"\nmsgstr \"פוקושימה\"\n\n#: jp/jp_prefectures.py:11\nmsgid \"Ibaraki\"\nmsgstr \"איברקי\"\n\n#: jp/jp_prefectures.py:12\nmsgid \"Tochigi\"\nmsgstr \"טושיגי\"\n\n#: jp/jp_prefectures.py:13\nmsgid \"Gunma\"\nmsgstr \"גונמה\"\n\n#: jp/jp_prefectures.py:14\nmsgid \"Saitama\"\nmsgstr \"סאיטאמה\"\n\n#: jp/jp_prefectures.py:15\nmsgid \"Chiba\"\nmsgstr \"צ'יבה\"\n\n#: jp/jp_prefectures.py:16\nmsgid \"Tokyo\"\nmsgstr \"טוקיו\"\n\n#: jp/jp_prefectures.py:17\nmsgid \"Kanagawa\"\nmsgstr \"קאנגאווה\"\n\n#: jp/jp_prefectures.py:18\nmsgid \"Yamanashi\"\nmsgstr \"יאמאנשי\"\n\n#: jp/jp_prefectures.py:19\nmsgid \"Nagano\"\nmsgstr \"נאגאנו\"\n\n#: jp/jp_prefectures.py:20\nmsgid \"Niigata\"\nmsgstr \"נייגטה\"\n\n#: jp/jp_prefectures.py:21\nmsgid \"Toyama\"\nmsgstr \"טויאמה\"\n\n#: jp/jp_prefectures.py:22\nmsgid \"Ishikawa\"\nmsgstr \"אישיקאוואה\"\n\n#: jp/jp_prefectures.py:23\nmsgid \"Fukui\"\nmsgstr \"פוקוי\"\n\n#: jp/jp_prefectures.py:24\nmsgid \"Gifu\"\nmsgstr \"גיפו\"\n\n#: jp/jp_prefectures.py:25\nmsgid \"Shizuoka\"\nmsgstr \"שיזואוקה\"\n\n#: jp/jp_prefectures.py:26\nmsgid \"Aichi\"\nmsgstr \"אייצ'י\"\n\n#: jp/jp_prefectures.py:27\nmsgid \"Mie\"\nmsgstr \"מיי\"\n\n#: jp/jp_prefectures.py:28\nmsgid \"Shiga\"\nmsgstr \"שיגה\"\n\n#: jp/jp_prefectures.py:29\nmsgid \"Kyoto\"\nmsgstr \"קיוטו\"\n\n#: jp/jp_prefectures.py:30\nmsgid \"Osaka\"\nmsgstr \"אוסקה\"\n\n#: jp/jp_prefectures.py:31\nmsgid \"Hyogo\"\nmsgstr \"הייוגו\"\n\n#: jp/jp_prefectures.py:32\nmsgid \"Nara\"\nmsgstr \"נארה\"\n\n#: jp/jp_prefectures.py:33\nmsgid \"Wakayama\"\nmsgstr \"ווקאייאמה\"\n\n#: jp/jp_prefectures.py:34\nmsgid \"Tottori\"\nmsgstr \"טוטורי\"\n\n#: jp/jp_prefectures.py:35\nmsgid \"Shimane\"\nmsgstr \"Shimane\"\n\n#: jp/jp_prefectures.py:36\nmsgid \"Okayama\"\nmsgstr \"אוקייאמה\"\n\n#: jp/jp_prefectures.py:37\nmsgid \"Hiroshima\"\nmsgstr \"הירושימה\"\n\n#: jp/jp_prefectures.py:38\nmsgid \"Yamaguchi\"\nmsgstr \"יאמאגוצ'י\"\n\n#: jp/jp_prefectures.py:39\nmsgid \"Tokushima\"\nmsgstr \"טוקושימה\"\n\n#: jp/jp_prefectures.py:40\nmsgid \"Kagawa\"\nmsgstr \"קאגאווה\"\n\n#: jp/jp_prefectures.py:41\nmsgid \"Ehime\"\nmsgstr \"Ehime\"\n\n#: jp/jp_prefectures.py:42\nmsgid \"Kochi\"\nmsgstr \"קוצ'י\"\n\n#: jp/jp_prefectures.py:43\nmsgid \"Fukuoka\"\nmsgstr \"פוקוקה\"\n\n#: jp/jp_prefectures.py:44\nmsgid \"Saga\"\nmsgstr \"סגה\"\n\n#: jp/jp_prefectures.py:45\nmsgid \"Nagasaki\"\nmsgstr \"נגסקי\"\n\n#: jp/jp_prefectures.py:46\nmsgid \"Kumamoto\"\nmsgstr \"קומאמוטו\"\n\n#: jp/jp_prefectures.py:47\nmsgid \"Oita\"\nmsgstr \"אויטה\"\n\n#: jp/jp_prefectures.py:48\nmsgid \"Miyazaki\"\nmsgstr \"מיאזאקי\"\n\n#: jp/jp_prefectures.py:49\nmsgid \"Kagoshima\"\nmsgstr \"קגושימה\"\n\n#: jp/jp_prefectures.py:50\nmsgid \"Okinawa\"\nmsgstr \"אוקינאווה\"\n\n#: kw/forms.py:27\nmsgid \"Enter a valid Kuwaiti Civil ID number\"\nmsgstr \"נא להזין מספר זיהוי כוויתי חוקי\"\n\n#: mk/forms.py:18\nmsgid \"\"\n\"Identity card numbers must contain either 4 to 7 digits or an uppercase \"\n\"letter and 7 digits.\"\nmsgstr \"מספרי תעודות זהות חייבים להכיל 4-7 ספרות או אות גדולה ו-7 ספרות.\"\n\n#: mk/forms.py:57 si/forms.py:24\nmsgid \"This field should contain exactly 13 digits.\"\nmsgstr \"שדה זה צריך להכיל 13 ספרות בדיוק.\"\n\n#: mk/forms.py:58\nmsgid \"The first 7 digits of the UMCN must represent a valid past date.\"\nmsgstr \"7 הספרות הראשונות של UMCN חייבות לייצג תאריך חוקי בעבר.\"\n\n#: mk/forms.py:59\nmsgid \"The UMCN is not valid.\"\nmsgstr \"ה-UMCN אינו חוקי.\"\n\n#: mk/mk_choices.py:10\nmsgid \"Aerodrom\"\nmsgstr \"אארודרום\"\n\n#: mk/mk_choices.py:11\nmsgid \"Aračinovo\"\nmsgstr \"אראצ'ינובו\"\n\n#: mk/mk_choices.py:12\nmsgid \"Berovo\"\nmsgstr \"ברובו\"\n\n#: mk/mk_choices.py:13\nmsgid \"Bitola\"\nmsgstr \"ביטולה\"\n\n#: mk/mk_choices.py:14\nmsgid \"Bogdanci\"\nmsgstr \"בוגדאנצ'י\"\n\n#: mk/mk_choices.py:15\nmsgid \"Bogovinje\"\nmsgstr \"בוגוביניה\"\n\n#: mk/mk_choices.py:16\nmsgid \"Bosilovo\"\nmsgstr \"בוסילובו\"\n\n#: mk/mk_choices.py:17\nmsgid \"Brvenica\"\nmsgstr \"ברבניצה\"\n\n#: mk/mk_choices.py:18\nmsgid \"Butel\"\nmsgstr \"בוטל\"\n\n#: mk/mk_choices.py:19\nmsgid \"Valandovo\"\nmsgstr \"ולנדובו\"\n\n#: mk/mk_choices.py:20\nmsgid \"Vasilevo\"\nmsgstr \"ואסילבו\"\n\n#: mk/mk_choices.py:21\nmsgid \"Vevčani\"\nmsgstr \"ובקאני\"\n\n#: mk/mk_choices.py:22\nmsgid \"Veles\"\nmsgstr \"ולס\"\n\n#: mk/mk_choices.py:23\nmsgid \"Vinica\"\nmsgstr \"ויניצה\"\n\n#: mk/mk_choices.py:24\nmsgid \"Vraneštica\"\nmsgstr \"ברנשטיצה\"\n\n#: mk/mk_choices.py:25\nmsgid \"Vrapčište\"\nmsgstr \"ורפצ'ישטה\"\n\n#: mk/mk_choices.py:26\nmsgid \"Gazi Baba\"\nmsgstr \"גזי באבא\"\n\n#: mk/mk_choices.py:27\nmsgid \"Gevgelija\"\nmsgstr \"גבגליה\"\n\n#: mk/mk_choices.py:28\nmsgid \"Gostivar\"\nmsgstr \"גוסטיבר\"\n\n#: mk/mk_choices.py:29\nmsgid \"Gradsko\"\nmsgstr \"גרדסקו\"\n\n#: mk/mk_choices.py:30\nmsgid \"Debar\"\nmsgstr \"דבר\"\n\n#: mk/mk_choices.py:31\nmsgid \"Debarca\"\nmsgstr \"דברצה\"\n\n#: mk/mk_choices.py:32\nmsgid \"Delčevo\"\nmsgstr \"דלצ'בו\"\n\n#: mk/mk_choices.py:33\nmsgid \"Demir Kapija\"\nmsgstr \"דמיר קאפייה\"\n\n#: mk/mk_choices.py:34\nmsgid \"Demir Hisar\"\nmsgstr \"דמיר חיסר\"\n\n#: mk/mk_choices.py:35\nmsgid \"Dolneni\"\nmsgstr \"דולנני\"\n\n#: mk/mk_choices.py:36\nmsgid \"Drugovo\"\nmsgstr \"דרוגובו\"\n\n#: mk/mk_choices.py:37\nmsgid \"Gjorče Petrov\"\nmsgstr \"גורצ'ה פטרוב\"\n\n#: mk/mk_choices.py:38\nmsgid \"Želino\"\nmsgstr \"ז'לינו\"\n\n#: mk/mk_choices.py:39\nmsgid \"Zajas\"\nmsgstr \"זאיאץ\"\n\n#: mk/mk_choices.py:40\nmsgid \"Zelenikovo\"\nmsgstr \"זלניקובו\"\n\n#: mk/mk_choices.py:41\nmsgid \"Zrnovci\"\nmsgstr \"זרנובצי\"\n\n#: mk/mk_choices.py:42\nmsgid \"Ilinden\"\nmsgstr \"אילינדן\"\n\n#: mk/mk_choices.py:43\nmsgid \"Jegunovce\"\nmsgstr \"יגונובצה\"\n\n#: mk/mk_choices.py:44\nmsgid \"Kavadarci\"\nmsgstr \"קבדרצי\"\n\n#: mk/mk_choices.py:45\nmsgid \"Karbinci\"\nmsgstr \"קארבינצי\"\n\n#: mk/mk_choices.py:46\nmsgid \"Karpoš\"\nmsgstr \"קרפוש\"\n\n#: mk/mk_choices.py:47\nmsgid \"Kisela Voda\"\nmsgstr \"קיסלה וודה\"\n\n#: mk/mk_choices.py:48\nmsgid \"Kičevo\"\nmsgstr \"קיצ'בו\"\n\n#: mk/mk_choices.py:49\nmsgid \"Konče\"\nmsgstr \"קונצ'ה\"\n\n#: mk/mk_choices.py:50\nmsgid \"Koćani\"\nmsgstr \"קוצ'אני\"\n\n#: mk/mk_choices.py:51\nmsgid \"Kratovo\"\nmsgstr \"קרטובו\"\n\n#: mk/mk_choices.py:52\nmsgid \"Kriva Palanka\"\nmsgstr \"קריבה פלנקה\"\n\n#: mk/mk_choices.py:53\nmsgid \"Krivogaštani\"\nmsgstr \"קריבוגאשטני\"\n\n#: mk/mk_choices.py:54\nmsgid \"Kruševo\"\nmsgstr \"קרושבו\"\n\n#: mk/mk_choices.py:55\nmsgid \"Kumanovo\"\nmsgstr \"קומנובו\"\n\n#: mk/mk_choices.py:56\nmsgid \"Lipkovo\"\nmsgstr \"ליפקובו\"\n\n#: mk/mk_choices.py:57\nmsgid \"Lozovo\"\nmsgstr \"לוזובו\"\n\n#: mk/mk_choices.py:58\nmsgid \"Mavrovo i Rostuša\"\nmsgstr \"מברובו ורוסטושה\"\n\n#: mk/mk_choices.py:59\nmsgid \"Makedonska Kamenica\"\nmsgstr \"מקדונסקה קמניצה\"\n\n#: mk/mk_choices.py:60\nmsgid \"Makedonski Brod\"\nmsgstr \"מקדונסקי ברוד\"\n\n#: mk/mk_choices.py:61\nmsgid \"Mogila\"\nmsgstr \"מוגילה\"\n\n#: mk/mk_choices.py:62\nmsgid \"Negotino\"\nmsgstr \"נגוטינו\"\n\n#: mk/mk_choices.py:63\nmsgid \"Novaci\"\nmsgstr \"נובצי\"\n\n#: mk/mk_choices.py:64\nmsgid \"Novo Selo\"\nmsgstr \"נובו סלו\"\n\n#: mk/mk_choices.py:65\nmsgid \"Oslomej\"\nmsgstr \"אוסלומאי\"\n\n#: mk/mk_choices.py:66\nmsgid \"Ohrid\"\nmsgstr \"אוחריד\"\n\n#: mk/mk_choices.py:67\nmsgid \"Petrovec\"\nmsgstr \"פטרובץ\"\n\n#: mk/mk_choices.py:68\nmsgid \"Pehčevo\"\nmsgstr \"פחצ'בו\"\n\n#: mk/mk_choices.py:69\nmsgid \"Plasnica\"\nmsgstr \"פלסניצה\"\n\n#: mk/mk_choices.py:70\nmsgid \"Prilep\"\nmsgstr \"פרילפ\"\n\n#: mk/mk_choices.py:71\nmsgid \"Probištip\"\nmsgstr \"פרובישטיף\"\n\n#: mk/mk_choices.py:72\nmsgid \"Radoviš\"\nmsgstr \"ראדוביש\"\n\n#: mk/mk_choices.py:73\nmsgid \"Rankovce\"\nmsgstr \"רנקובצה\"\n\n#: mk/mk_choices.py:74\nmsgid \"Resen\"\nmsgstr \"רסן\"\n\n#: mk/mk_choices.py:75\nmsgid \"Rosoman\"\nmsgstr \"רוסומן\"\n\n#: mk/mk_choices.py:76\nmsgid \"Saraj\"\nmsgstr \"סארה\"\n\n#: mk/mk_choices.py:77\nmsgid \"Sveti Nikole\"\nmsgstr \"סבטי ניקולה\"\n\n#: mk/mk_choices.py:78\nmsgid \"Sopište\"\nmsgstr \"סופישטה\"\n\n#: mk/mk_choices.py:79\nmsgid \"Star Dojran\"\nmsgstr \"סטאר דוריאן\"\n\n#: mk/mk_choices.py:80\nmsgid \"Staro Nagoričane\"\nmsgstr \"סטארו נגוריצ'נה\"\n\n#: mk/mk_choices.py:81\nmsgid \"Struga\"\nmsgstr \"סטרוגה\"\n\n#: mk/mk_choices.py:82\nmsgid \"Strumica\"\nmsgstr \"סטרומיצה\"\n\n#: mk/mk_choices.py:83\nmsgid \"Studeničani\"\nmsgstr \"סטודנצ'אני\"\n\n#: mk/mk_choices.py:84\nmsgid \"Tearce\"\nmsgstr \"טארצה\"\n\n#: mk/mk_choices.py:85\nmsgid \"Tetovo\"\nmsgstr \"טטובו\"\n\n#: mk/mk_choices.py:86\nmsgid \"Centar\"\nmsgstr \"צנטאר\"\n\n#: mk/mk_choices.py:87\nmsgid \"Centar-Župa\"\nmsgstr \"צנטאר ז'ופה\"\n\n#: mk/mk_choices.py:88\nmsgid \"Čair\"\nmsgstr \"צ'איר\"\n\n#: mk/mk_choices.py:89\nmsgid \"Čaška\"\nmsgstr \"צ'שקה\"\n\n#: mk/mk_choices.py:90\nmsgid \"Češinovo-Obleševo\"\nmsgstr \"צ'שינובו-אובלשבו\"\n\n#: mk/mk_choices.py:91\nmsgid \"Čučer-Sandevo\"\nmsgstr \"צ'וצ'ר-סנדבו\"\n\n#: mk/mk_choices.py:92\nmsgid \"Štip\"\nmsgstr \"שטיפ\"\n\n#: mk/mk_choices.py:93\nmsgid \"Šuto Orizari\"\nmsgstr \"שוטו אוריזרי\"\n\n#: mk/models.py:11\nmsgid \"Macedonian identity card number\"\nmsgstr \"מספר כרטיס זיהוי מקדוני\"\n\n#: mk/models.py:25\nmsgid \"A Macedonian municipality (2 character code)\"\nmsgstr \"רשות מקומית מקדונית (קוד בן 2 תווים)\"\n\n#: mk/models.py:35\nmsgid \"Unique master citizen number (13 digits)\"\nmsgstr \"מספר אזרח master ייחודי (13 ספרות)\"\n\n#: mx/forms.py:67\nmsgid \"Enter a valid zip code in the format XXXXX.\"\nmsgstr \"נא להזין מיקוד חוקי בתבנית XXXXX.\"\n\n#: mx/forms.py:110\nmsgid \"Enter a valid RFC.\"\nmsgstr \"נא להזין RFC חוקי.\"\n\n#: mx/forms.py:111\nmsgid \"Invalid checksum for RFC.\"\nmsgstr \"סיכום ביקורת לא חוקי עבור RFC.\"\n\n#: mx/forms.py:191\nmsgid \"Enter a valid CURP.\"\nmsgstr \"נא להזין CURP חוקי.\"\n\n#: mx/forms.py:192\nmsgid \"Invalid checksum for CURP.\"\nmsgstr \"סיכום ביקורת לא חוקי  עבור CURP.\"\n\n#: mx/models.py:14\nmsgid \"Mexico state (three uppercase letters)\"\nmsgstr \"מדינה במקסיקו  (שלוש אותיות רישיות)\"\n\n#: mx/models.py:27\nmsgid \"Mexico zip code\"\nmsgstr \"מיקוד מקסיקו\"\n\n#: mx/models.py:44\nmsgid \"Mexican RFC\"\nmsgstr \"RFC מקסיקני\"\n\n#: mx/models.py:61\nmsgid \"Mexican CURP\"\nmsgstr \"CURP מקסיקני\"\n\n#: mx/mx_states.py:14\nmsgid \"Aguascalientes\"\nmsgstr \"אגואסקליינטס\"\n\n#: mx/mx_states.py:15\nmsgid \"Baja California\"\nmsgstr \"באחה קליפורניה\"\n\n#: mx/mx_states.py:16\nmsgid \"Baja California Sur\"\nmsgstr \"באחה קליפורניה הדרומית\"\n\n#: mx/mx_states.py:17\nmsgid \"Campeche\"\nmsgstr \"קמפצ'ה\"\n\n#: mx/mx_states.py:18\nmsgid \"Chihuahua\"\nmsgstr \"צ'יוואוה\"\n\n#: mx/mx_states.py:19\nmsgid \"Chiapas\"\nmsgstr \"צ'יאפס\"\n\n#: mx/mx_states.py:20\nmsgid \"Coahuila\"\nmsgstr \"קואהווילה\"\n\n#: mx/mx_states.py:21\nmsgid \"Colima\"\nmsgstr \"קולימה\"\n\n#: mx/mx_states.py:22\nmsgid \"Distrito Federal\"\nmsgstr \"מחוז פדרלי\"\n\n#: mx/mx_states.py:23\nmsgid \"Durango\"\nmsgstr \"דוראנגו\"\n\n#: mx/mx_states.py:24\nmsgid \"Guerrero\"\nmsgstr \"גררו\"\n\n#: mx/mx_states.py:25\nmsgid \"Guanajuato\"\nmsgstr \"גואנחואטו\"\n\n#: mx/mx_states.py:26\nmsgid \"Hidalgo\"\nmsgstr \"אידלגו\"\n\n#: mx/mx_states.py:27\nmsgid \"Jalisco\"\nmsgstr \"חליסקו\"\n\n#: mx/mx_states.py:28\nmsgid \"Estado de México\"\nmsgstr \"אסטאדו דה מקסיקו\"\n\n#: mx/mx_states.py:29\nmsgid \"Michoacán\"\nmsgstr \"מיצ'ואקן\"\n\n#: mx/mx_states.py:30\nmsgid \"Morelos\"\nmsgstr \"מורלוס\"\n\n#: mx/mx_states.py:31\nmsgid \"Nayarit\"\nmsgstr \"נייארית\"\n\n#: mx/mx_states.py:32\nmsgid \"Nuevo León\"\nmsgstr \"נואבו ליאון\"\n\n#: mx/mx_states.py:33\nmsgid \"Oaxaca\"\nmsgstr \"אואסקה\"\n\n#: mx/mx_states.py:34\nmsgid \"Puebla\"\nmsgstr \"פואבלה\"\n\n#: mx/mx_states.py:35\nmsgid \"Querétaro\"\nmsgstr \"קוורטארו\"\n\n#: mx/mx_states.py:36\nmsgid \"Quintana Roo\"\nmsgstr \"קינטאנה רו\"\n\n#: mx/mx_states.py:37\nmsgid \"Sinaloa\"\nmsgstr \"סינאלוה\"\n\n#: mx/mx_states.py:38\nmsgid \"San Luis Potosí\"\nmsgstr \"סאן לואי פוטוסי\"\n\n#: mx/mx_states.py:39\nmsgid \"Sonora\"\nmsgstr \"סונורה\"\n\n#: mx/mx_states.py:40\nmsgid \"Tabasco\"\nmsgstr \"טבסקו\"\n\n#: mx/mx_states.py:41\nmsgid \"Tamaulipas\"\nmsgstr \"טמפוליפס\"\n\n#: mx/mx_states.py:42\nmsgid \"Tlaxcala\"\nmsgstr \"טלקסקאלה\"\n\n#: mx/mx_states.py:43\nmsgid \"Veracruz\"\nmsgstr \"ורקרוז\"\n\n#: mx/mx_states.py:44\nmsgid \"Yucatán\"\nmsgstr \"יוקטן\"\n\n#: mx/mx_states.py:45\nmsgid \"Zacatecas\"\nmsgstr \"זאקאטקס\"\n\n#: nl/forms.py:26\nmsgid \"Enter a valid postal code\"\nmsgstr \"יש להזין מיקוד חוקי.\"\n\n#: nl/forms.py:82\nmsgid \"Enter a valid SoFi number\"\nmsgstr \"יש להזין מספר SoFi חוקי\"\n\n#: nl/nl_provinces.py:4\nmsgid \"Drenthe\"\nmsgstr \"דרנתה\"\n\n#: nl/nl_provinces.py:5\nmsgid \"Flevoland\"\nmsgstr \"פלבולנד\"\n\n#: nl/nl_provinces.py:6\nmsgid \"Friesland\"\nmsgstr \"פריזלנד\"\n\n#: nl/nl_provinces.py:7\nmsgid \"Gelderland\"\nmsgstr \"חלדרלנד\"\n\n#: nl/nl_provinces.py:8\nmsgid \"Groningen\"\nmsgstr \"חרונינגן\"\n\n#: nl/nl_provinces.py:10\nmsgid \"Noord-Brabant\"\nmsgstr \"צפון בראבנט\"\n\n#: nl/nl_provinces.py:11\nmsgid \"Noord-Holland\"\nmsgstr \"צפון הולנד\"\n\n#: nl/nl_provinces.py:12\nmsgid \"Overijssel\"\nmsgstr \"אובראיסל\"\n\n#: nl/nl_provinces.py:13\nmsgid \"Utrecht\"\nmsgstr \"אוטרכט\"\n\n#: nl/nl_provinces.py:14\nmsgid \"Zeeland\"\nmsgstr \"זילנד\"\n\n#: nl/nl_provinces.py:15\nmsgid \"Zuid-Holland\"\nmsgstr \"דרום הולנד\"\n\n#: no/forms.py:39\nmsgid \"Enter a valid Norwegian social security number.\"\nmsgstr \"יש להזין מספר ביטוח לאומי נורבגי חוקי.\"\n\n#: pe/forms.py:28\nmsgid \"This field requires 8 digits.\"\nmsgstr \"שדה זה דורש 8 ספרות.\"\n\n#: pe/forms.py:56\nmsgid \"This field requires 11 digits.\"\nmsgstr \"שדה זה דורש 11 ספרות.\"\n\n#: pl/forms.py:42\nmsgid \"National Identification Number consists of 11 digits.\"\nmsgstr \"מספר זיהוי לאומי מורכב מ-11 ספרות\"\n\n#: pl/forms.py:43\nmsgid \"Wrong checksum for the National Identification Number.\"\nmsgstr \"סכום ביקורת שגוי עבור מספר הזיהוי הלאומי\"\n\n#: pl/forms.py:79\nmsgid \"National ID Card Number consists of 3 letters and 6 digits.\"\nmsgstr \"מספר כרטיס זיהוי לאומי מורכב נ-3 אותיות ו-6 ספרות.\"\n\n#: pl/forms.py:80\nmsgid \"Wrong checksum for the National ID Card Number.\"\nmsgstr \"סיכום ביקורת שגוי למספר כרטיס זיהוי לאומי\"\n\n#: pl/forms.py:131\nmsgid \"\"\n\"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or \"\n\"XXXXXXXXXX.\"\nmsgstr \"\"\n\"נא להזין שדה מספר מס (NIP) בתבנית XXX-XXX-XX-XX‏, XXX-XX-XX-XXX או XXXXXXXXXX.\"\n\n#: pl/forms.py:132\nmsgid \"Wrong checksum for the Tax Number (NIP).\"\nmsgstr \"סיכום ביקורת שגוי עבור מספר מס (NIP).\"\n\n#: pl/forms.py:171\nmsgid \"National Business Register Number (REGON) consists of 9 or 14 digits.\"\nmsgstr \"מספר רשומת בית עסק ארצי(REGON) מכיל או תשע או ארבע עשרה ספרות.\"\n\n#: pl/forms.py:172\nmsgid \"Wrong checksum for the National Business Register Number (REGON).\"\nmsgstr \"סיכום שגוי National Business Register Number (REGON).\"\n\n#: pl/forms.py:212\nmsgid \"Enter a postal code in the format XX-XXX.\"\nmsgstr \"נא להזין מיקוד בתבנית XX-XXX.\"\n\n#: pl/pl_voivodeships.py:8\nmsgid \"Lower Silesia\"\nmsgstr \"סילסיה התחתונה\"\n\n#: pl/pl_voivodeships.py:9\nmsgid \"Kuyavia-Pomerania\"\nmsgstr \"קויאבויה - פומרניה\"\n\n#: pl/pl_voivodeships.py:10\nmsgid \"Lublin\"\nmsgstr \"לובלין\"\n\n#: pl/pl_voivodeships.py:11\nmsgid \"Lubusz\"\nmsgstr \"לובוש\"\n\n#: pl/pl_voivodeships.py:12\nmsgid \"Lodz\"\nmsgstr \"לודז'\"\n\n#: pl/pl_voivodeships.py:13\nmsgid \"Lesser Poland\"\nmsgstr \"פולין זוטא\"\n\n#: pl/pl_voivodeships.py:14\nmsgid \"Masovia\"\nmsgstr \"מזוביה\"\n\n#: pl/pl_voivodeships.py:15\nmsgid \"Opole\"\nmsgstr \"אופולה\"\n\n#: pl/pl_voivodeships.py:16\nmsgid \"Subcarpatia\"\nmsgstr \"תת קרפטיה\"\n\n#: pl/pl_voivodeships.py:17\nmsgid \"Podlasie\"\nmsgstr \"פודלסיה\"\n\n#: pl/pl_voivodeships.py:18\nmsgid \"Pomerania\"\nmsgstr \"פומרניה\"\n\n#: pl/pl_voivodeships.py:19\nmsgid \"Silesia\"\nmsgstr \"סילסיה\"\n\n#: pl/pl_voivodeships.py:20\nmsgid \"Swietokrzyskie\"\nmsgstr \"סבייטוקזי'סקי\"\n\n#: pl/pl_voivodeships.py:21\nmsgid \"Warmia-Masuria\"\nmsgstr \"וורמיה- מזוריה\"\n\n#: pl/pl_voivodeships.py:22\nmsgid \"Greater Poland\"\nmsgstr \"פולין רבתי\"\n\n#: pl/pl_voivodeships.py:23\nmsgid \"West Pomerania\"\nmsgstr \"מערב פומרניה\"\n\n#: pt/forms.py:19\nmsgid \"Enter a zip code in the format XXXX-XXX.\"\nmsgstr \"יש להזין מיקוד בתבנית XXXX-XXX.\"\n\n#: pt/forms.py:39\nmsgid \"Phone numbers must have 9 digits, or start by + or 00.\"\nmsgstr \"מספרי טלפון חייבים להכיל 9 ספרות, או להתחיל ב + או 00.\"\n\n#: ro/forms.py:22\nmsgid \"Enter a valid CIF.\"\nmsgstr \"יש להזין CIF חוקי.\"\n\n#: ro/forms.py:59\nmsgid \"Enter a valid CNP.\"\nmsgstr \"יש להזין CNP חוקי.\"\n\n#: ro/forms.py:143\nmsgid \"Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format\"\nmsgstr \"יש להזין מספר IBAN חוקי בתבנית ROXX-XXXX-XXXX-XXXX-XXXX-XXXX\"\n\n#: ro/forms.py:175\nmsgid \"Phone numbers must be in XXXX-XXXXXX format.\"\nmsgstr \"מספרי טלפון חייבים להיות בתבנית XXXX-XXXXXX.\"\n\n#: ro/forms.py:200\nmsgid \"Enter a valid postal code in the format XXXXXX\"\nmsgstr \"נא להזין מיקוד חוקי בתבנית XXXXXX\"\n\n#: ru/forms.py:37\nmsgid \"Enter a postal code in the format XXXXXX.\"\nmsgstr \"נא להזין מיקוד בתבנית XXXXXX.\"\n\n#: ru/forms.py:50\nmsgid \"Enter a passport number in the format XXXX XXXXXX.\"\nmsgstr \"נא להזין מספר דרכון בתבנית XXXX XXXXXX.\"\n\n#: ru/forms.py:63\nmsgid \"Enter a passport number in the format XX XXXXXXX.\"\nmsgstr \"נא להזין מספר דרכון בתבנית XX XXXXXXX.\"\n\n#: ru/ru_regions.py:10\nmsgid \"Central Federal County\"\nmsgstr \"מחוז פדרלי מרכז\"\n\n#: ru/ru_regions.py:11\nmsgid \"South Federal County\"\nmsgstr \"מחוז פדרלי דרום\"\n\n#: ru/ru_regions.py:12\nmsgid \"North-West Federal County\"\nmsgstr \"מחוז פדרלי צפון-מערב\"\n\n#: ru/ru_regions.py:13\nmsgid \"Far-East Federal County\"\nmsgstr \"מחוז פדרלי מזרח-רחוק\"\n\n#: ru/ru_regions.py:14\nmsgid \"Siberian Federal County\"\nmsgstr \"מחוז פדרלי סיביר\"\n\n#: ru/ru_regions.py:15\nmsgid \"Ural Federal County\"\nmsgstr \"מחוז פדרלי אוראל\"\n\n#: ru/ru_regions.py:16\nmsgid \"Privolzhsky Federal County\"\nmsgstr \"מחוז פדרלי Privolzhsky\"\n\n#: ru/ru_regions.py:17\nmsgid \"North-Caucasian Federal County\"\nmsgstr \"מחוז פדרלי צפון-קווקז\"\n\n#: ru/ru_regions.py:21\nmsgid \"Moskva\"\nmsgstr \"מוסקבה\"\n\n#: ru/ru_regions.py:22\nmsgid \"Saint-Peterburg\"\nmsgstr \"סנקט פטרבורג\"\n\n#: ru/ru_regions.py:23\nmsgid \"Moskovskaya oblast'\"\nmsgstr \"מחוז מוסקבה\"\n\n#: ru/ru_regions.py:24\nmsgid \"Adygeya, Respublika\"\nmsgstr \"אדיגאיה, רפובליקה\"\n\n#: ru/ru_regions.py:25\nmsgid \"Bashkortostan, Respublika\"\nmsgstr \"בשקורטוסטן, רפובליקה\"\n\n#: ru/ru_regions.py:26\nmsgid \"Buryatia, Respublika\"\nmsgstr \"בוריאטיה, רפובליקה\"\n\n#: ru/ru_regions.py:27\nmsgid \"Altay, Respublika\"\nmsgstr \"אלטאי, רפובליקה\"\n\n#: ru/ru_regions.py:28\nmsgid \"Dagestan, Respublika\"\nmsgstr \"דאגסטן, רפובליקה\"\n\n#: ru/ru_regions.py:29\nmsgid \"Ingushskaya Respublika\"\nmsgstr \"אינגושסקיה, רפובליקה\"\n\n#: ru/ru_regions.py:30\nmsgid \"Kabardino-Balkarskaya Respublika\"\nmsgstr \"קברדינו-באלקארסקאיה, רפובליקה\"\n\n#: ru/ru_regions.py:31\nmsgid \"Kalmykia, Respublika\"\nmsgstr \"קלמיקיה, רפובליקה\"\n\n#: ru/ru_regions.py:32\nmsgid \"Karachaevo-Cherkesskaya Respublika\"\nmsgstr \"קאראצ'אי-צ'רקסיה, רפובליקה\"\n\n#: ru/ru_regions.py:33\nmsgid \"Karelia, Respublika\"\nmsgstr \"קרליה, רפובליקה\"\n\n#: ru/ru_regions.py:34\nmsgid \"Komi, Respublika\"\nmsgstr \"קומי, רפובליקה\"\n\n#: ru/ru_regions.py:35\nmsgid \"Mariy Ehl, Respublika\"\nmsgstr \"מארי אל, רפובליקה\"\n\n#: ru/ru_regions.py:36\nmsgid \"Mordovia, Respublika\"\nmsgstr \"מורדוביה, רפובליקה\"\n\n#: ru/ru_regions.py:37\nmsgid \"Sakha, Respublika (Yakutiya)\"\nmsgstr \"סאחה, רפובליקה (יאקוטיה)\"\n\n#: ru/ru_regions.py:38\nmsgid \"Severnaya Osetia, Respublika (Alania)\"\nmsgstr \"סברניה אוסטיה, רפובליקה (אלניה)\"\n\n#: ru/ru_regions.py:39\nmsgid \"Tatarstan, Respublika\"\nmsgstr \"טטרסטן, רפובליקה\"\n\n#: ru/ru_regions.py:40\nmsgid \"Tyva, Respublika (Tuva)\"\nmsgstr \"טיבה, רפובליקה (טובה)\"\n\n#: ru/ru_regions.py:41\nmsgid \"Udmurtskaya Respublika\"\nmsgstr \"אודמורטיה, רפובליקה\"\n\n#: ru/ru_regions.py:42\nmsgid \"Khakassiya, Respublika\"\nmsgstr \"חקסיה, רפובליקה\"\n\n#: ru/ru_regions.py:43\nmsgid \"Chechenskaya Respublika\"\nmsgstr \"צ'צ'ניה, רפובליקה\"\n\n#: ru/ru_regions.py:44\nmsgid \"Chuvashskaya Respublika\"\nmsgstr \"צ'ובאשסקאיה, רפובליקה\"\n\n#: ru/ru_regions.py:45\nmsgid \"Altayskiy Kray\"\nmsgstr \"מחוז אלטאי\"\n\n#: ru/ru_regions.py:46\nmsgid \"Zabaykalskiy Kray\"\nmsgstr \"מחוז עבר הבאיקל\"\n\n#: ru/ru_regions.py:47\nmsgid \"Kamchatskiy Kray\"\nmsgstr \"מחוז קמצ'טקה\"\n\n#: ru/ru_regions.py:48\nmsgid \"Krasnodarskiy Kray\"\nmsgstr \"מחוז קרסנודאר\"\n\n#: ru/ru_regions.py:49\nmsgid \"Krasnoyarskiy Kray\"\nmsgstr \"מחוז קרסנויארסק\"\n\n#: ru/ru_regions.py:50\nmsgid \"Permskiy Kray\"\nmsgstr \"מחוז פרם\"\n\n#: ru/ru_regions.py:51\nmsgid \"Primorskiy Kray\"\nmsgstr \"מחוז פרימוריה\"\n\n#: ru/ru_regions.py:52\nmsgid \"Stavropol'siyy Kray\"\nmsgstr \"מחוז סטברופול\"\n\n#: ru/ru_regions.py:53\nmsgid \"Khabarovskiy Kray\"\nmsgstr \"מחוז חברובסק\"\n\n#: ru/ru_regions.py:54\nmsgid \"Amurskaya oblast'\"\nmsgstr \"מחוז אמורסקאיה\"\n\n#: ru/ru_regions.py:55\nmsgid \"Arkhangel'skaya oblast'\"\nmsgstr \"מחוז ארחנגלסקאיה\"\n\n#: ru/ru_regions.py:56\nmsgid \"Astrakhanskaya oblast'\"\nmsgstr \"מחוז אסטראחנסקאיה\"\n\n#: ru/ru_regions.py:57\nmsgid \"Belgorodskaya oblast'\"\nmsgstr \"מחוז בלגורודסקאיה\"\n\n#: ru/ru_regions.py:58\nmsgid \"Bryanskaya oblast'\"\nmsgstr \"מחוז בריאנסקאיה\"\n\n#: ru/ru_regions.py:59\nmsgid \"Vladimirskaya oblast'\"\nmsgstr \"מחוז וולאדימירסקאיה\"\n\n#: ru/ru_regions.py:60\nmsgid \"Volgogradskaya oblast'\"\nmsgstr \"מחוז וולגוגראדסקאיה\"\n\n#: ru/ru_regions.py:61\nmsgid \"Vologodskaya oblast'\"\nmsgstr \"מחוז וולגודאסקאיה\"\n\n#: ru/ru_regions.py:62\nmsgid \"Voronezhskaya oblast'\"\nmsgstr \"מחוז וורונזסקאיה\"\n\n#: ru/ru_regions.py:63\nmsgid \"Ivanovskaya oblast'\"\nmsgstr \"מחוז איוונובסקאיה\"\n\n#: ru/ru_regions.py:64\nmsgid \"Irkutskaya oblast'\"\nmsgstr \"מחוז אירקוטסקאיה\"\n\n#: ru/ru_regions.py:65\nmsgid \"Kaliningradskaya oblast'\"\nmsgstr \"מחוז קלינינגראדסקאיה\"\n\n#: ru/ru_regions.py:66\nmsgid \"Kaluzhskaya oblast'\"\nmsgstr \"מחוז קאלוז'סקאיה\"\n\n#: ru/ru_regions.py:67\nmsgid \"Kemerovskaya oblast'\"\nmsgstr \"מחוז קמרובסקאיה\"\n\n#: ru/ru_regions.py:68\nmsgid \"Kirovskaya oblast'\"\nmsgstr \"מחוז קירובסקאיה\"\n\n#: ru/ru_regions.py:69\nmsgid \"Kostromskaya oblast'\"\nmsgstr \"מחוז קוסטרומסקאיה\"\n\n#: ru/ru_regions.py:70\nmsgid \"Kurganskaya oblast'\"\nmsgstr \"מחוז קורגאנסקאיה\"\n\n#: ru/ru_regions.py:71\nmsgid \"Kurskaya oblast'\"\nmsgstr \"מחוז קורסקאיה\"\n\n#: ru/ru_regions.py:72\nmsgid \"Leningradskaya oblast'\"\nmsgstr \"מחוז לנינגראדסקאיה\"\n\n#: ru/ru_regions.py:73\nmsgid \"Lipeckaya oblast'\"\nmsgstr \"מחוז ליפצק\"\n\n#: ru/ru_regions.py:74\nmsgid \"Magadanskaya oblast'\"\nmsgstr \"מחוז מאגאדאנסקאיה\"\n\n#: ru/ru_regions.py:75\nmsgid \"Murmanskaya oblast'\"\nmsgstr \"מחוז מורמאנסקאיה\"\n\n#: ru/ru_regions.py:76\nmsgid \"Nizhegorodskaja oblast'\"\nmsgstr \"מחוז ניז'ני נובגורוד\"\n\n#: ru/ru_regions.py:77\nmsgid \"Novgorodskaya oblast'\"\nmsgstr \"מחוז נובגוראודסקאיה\"\n\n#: ru/ru_regions.py:78\nmsgid \"Novosibirskaya oblast'\"\nmsgstr \"מחוז נובוסיבריסקאיה\"\n\n#: ru/ru_regions.py:79\nmsgid \"Omskaya oblast'\"\nmsgstr \"מחוז אומסקאיה\"\n\n#: ru/ru_regions.py:80\nmsgid \"Orenburgskaya oblast'\"\nmsgstr \"מחוז אורנבורגסקאיה\"\n\n#: ru/ru_regions.py:81\nmsgid \"Orlovskaya oblast'\"\nmsgstr \"מחוז אורלובסקאיה\"\n\n#: ru/ru_regions.py:82\nmsgid \"Penzenskaya oblast'\"\nmsgstr \"מחוז פנצנסקאיה\"\n\n#: ru/ru_regions.py:83\nmsgid \"Pskovskaya oblast'\"\nmsgstr \"מחוז פסקובסקאיה\"\n\n#: ru/ru_regions.py:84\nmsgid \"Rostovskaya oblast'\"\nmsgstr \"מחוז רוסטובסקאיה\"\n\n#: ru/ru_regions.py:85\nmsgid \"Rjazanskaya oblast'\"\nmsgstr \"מחוז ריאזאן\"\n\n#: ru/ru_regions.py:86\nmsgid \"Samarskaya oblast'\"\nmsgstr \"מחוז סאמארסקאיה\"\n\n#: ru/ru_regions.py:87\nmsgid \"Saratovskaya oblast'\"\nmsgstr \"מחוז סרטובסקאיה\"\n\n#: ru/ru_regions.py:88\nmsgid \"Sakhalinskaya oblast'\"\nmsgstr \"מחוז שאקהלינסקאיה\"\n\n#: ru/ru_regions.py:89\nmsgid \"Sverdlovskaya oblast'\"\nmsgstr \"מחוז סוורדלוואסקאיה\"\n\n#: ru/ru_regions.py:90\nmsgid \"Smolenskaya oblast'\"\nmsgstr \"מחוז סמולנסקאיה\"\n\n#: ru/ru_regions.py:91\nmsgid \"Tambovskaya oblast'\"\nmsgstr \"מחוז טאמבוסקאיה\"\n\n#: ru/ru_regions.py:92\nmsgid \"Tverskaya oblast'\"\nmsgstr \"מחוז טוורסקאיה\"\n\n#: ru/ru_regions.py:93\nmsgid \"Tomskaya oblast'\"\nmsgstr \"מחוז טומסקאיה\"\n\n#: ru/ru_regions.py:94\nmsgid \"Tul'skaya oblast'\"\nmsgstr \"מחוז טולסקאיה\"\n\n#: ru/ru_regions.py:95\nmsgid \"Tyumenskaya oblast'\"\nmsgstr \"מחוז טיומנסקאיה\"\n\n#: ru/ru_regions.py:96\nmsgid \"Ul'ianovskaya oblast'\"\nmsgstr \"מחוז אולייאנובסק\"\n\n#: ru/ru_regions.py:97\nmsgid \"Chelyabinskaya oblast'\"\nmsgstr \"מחוז צ'ליאבינסקאיה\"\n\n#: ru/ru_regions.py:98\nmsgid \"Yaroslavskaya oblast'\"\nmsgstr \"מחוז יארוסלאווסקאיה\"\n\n#: ru/ru_regions.py:99\nmsgid \"Evreyskaya avtonomnaja oblast'\"\nmsgstr \"המחוז היהודי האוטונומי\"\n\n#: ru/ru_regions.py:100\nmsgid \"Neneckiy autonomnyy okrug\"\nmsgstr \"המחוז האוטונומי של הניינץ\"\n\n#: ru/ru_regions.py:101\nmsgid \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\nmsgstr \"המחוז האוטונומי חנטי ומנסי - אוגרה\"\n\n#: ru/ru_regions.py:102\nmsgid \"Chukotskiy avtonomnyy okrug\"\nmsgstr \"המחוז האוטונומי צ'וקוטקה\"\n\n#: ru/ru_regions.py:103\nmsgid \"Yamalo-Neneckiy avtonomnyy okrug\"\nmsgstr \"המחוז האוטונומי של ימלו-ננץ\"\n\n#: se/forms.py:54\nmsgid \"Enter a valid Swedish organisation number.\"\nmsgstr \"הזן מספר ארגון שוודי חוקי.\"\n\n#: se/forms.py:111\nmsgid \"Enter a valid Swedish personal identity number.\"\nmsgstr \"יש להזין מספר זיהוי אישי שוודי חוקי.\"\n\n#: se/forms.py:112\nmsgid \"Co-ordination numbers are not allowed.\"\nmsgstr \"מספרי שיתוף פעולה אינם מותרים בשימוש\"\n\n#: se/forms.py:154\nmsgid \"Enter a Swedish postal code in the format XXXXX.\"\nmsgstr \"נא להזין מיקוד שוודי בתבנית XXXXX.\"\n\n#: se/se_counties.py:16\nmsgid \"Stockholm\"\nmsgstr \"סטוקהולם\"\n\n#: se/se_counties.py:17\nmsgid \"Västerbotten\"\nmsgstr \"וסטרבוטן\"\n\n#: se/se_counties.py:18\nmsgid \"Norrbotten\"\nmsgstr \"נורבוטן\"\n\n#: se/se_counties.py:19\nmsgid \"Uppsala\"\nmsgstr \"אופסלה\"\n\n#: se/se_counties.py:20\nmsgid \"Södermanland\"\nmsgstr \"סדרמאנלנד\"\n\n#: se/se_counties.py:21\nmsgid \"Östergötland\"\nmsgstr \"אסטריֶטלנד\"\n\n#: se/se_counties.py:22\nmsgid \"Jönköping\"\nmsgstr \"ינשפין\"\n\n#: se/se_counties.py:23\nmsgid \"Kronoberg\"\nmsgstr \"קרונוברג\"\n\n#: se/se_counties.py:24\nmsgid \"Kalmar\"\nmsgstr \"קאלמאר\"\n\n#: se/se_counties.py:25\nmsgid \"Gotland\"\nmsgstr \"גוטלנד\"\n\n#: se/se_counties.py:26\nmsgid \"Blekinge\"\nmsgstr \"בלשיניה\"\n\n#: se/se_counties.py:27\nmsgid \"Skåne\"\nmsgstr \"סקונה\"\n\n#: se/se_counties.py:28\nmsgid \"Halland\"\nmsgstr \"הלנד\"\n\n#: se/se_counties.py:29\nmsgid \"Västra Götaland\"\nmsgstr \"יטאלנד המערבית\"\n\n#: se/se_counties.py:30\nmsgid \"Värmland\"\nmsgstr \"ורמלנד\"\n\n#: se/se_counties.py:31\nmsgid \"Örebro\"\nmsgstr \"ארברו\"\n\n#: se/se_counties.py:32\nmsgid \"Västmanland\"\nmsgstr \"וסטמנלנד\"\n\n#: se/se_counties.py:33\nmsgid \"Dalarna\"\nmsgstr \"דלארנה\"\n\n#: se/se_counties.py:34\nmsgid \"Gävleborg\"\nmsgstr \"יבלבורג\"\n\n#: se/se_counties.py:35\nmsgid \"Västernorrland\"\nmsgstr \"וסטרנורלנד\"\n\n#: se/se_counties.py:36\nmsgid \"Jämtland\"\nmsgstr \"ימטלנד\"\n\n#: si/forms.py:25\nmsgid \"The first 7 digits of the EMSO must represent a valid past date.\"\nmsgstr \"7 הספרות הראשונות של EMSO חייבות לייצג תאריך חוקי בעבר.\"\n\n#: si/forms.py:26\nmsgid \"The EMSO is not valid.\"\nmsgstr \"EMSO אינו חוקי.\"\n\n#: si/forms.py:86\nmsgid \"Enter a valid tax number in form SIXXXXXXXX\"\nmsgstr \"נא להזין מספר מס חוקי בצורת SIXXXXXXXX\"\n\n#: si/forms.py:151\nmsgid \"Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.\"\nmsgstr \"נא להזין מספר טלפון בתבנית ‎+386XXXXXXXX או 0XXXXXXXX.\"\n\n#: sk/sk_districts.py:8\nmsgid \"Banska Bystrica\"\nmsgstr \" בנסקה ביסטריצה\"\n\n#: sk/sk_districts.py:9\nmsgid \"Banska Stiavnica\"\nmsgstr \"בנסקה שטיאבניצה\"\n\n#: sk/sk_districts.py:10\nmsgid \"Bardejov\"\nmsgstr \"ברדיוב\"\n\n#: sk/sk_districts.py:11\nmsgid \"Banovce nad Bebravou\"\nmsgstr \"בנובץ ע\\\"מ בברבו\"\n\n#: sk/sk_districts.py:12\nmsgid \"Brezno\"\nmsgstr \"ברזנו\"\n\n#: sk/sk_districts.py:13\nmsgid \"Bratislava I\"\nmsgstr \"ברטיסלאבה 1\"\n\n#: sk/sk_districts.py:14\nmsgid \"Bratislava II\"\nmsgstr \"ברטיסלאבה 2\"\n\n#: sk/sk_districts.py:15\nmsgid \"Bratislava III\"\nmsgstr \"ברטיסלאבה 3\"\n\n#: sk/sk_districts.py:16\nmsgid \"Bratislava IV\"\nmsgstr \"ברטיסלאבה 4\"\n\n#: sk/sk_districts.py:17\nmsgid \"Bratislava V\"\nmsgstr \"ברטיסלאבה 5\"\n\n#: sk/sk_districts.py:18\nmsgid \"Bytca\"\nmsgstr \"ביטצ'ה\"\n\n#: sk/sk_districts.py:19\nmsgid \"Cadca\"\nmsgstr \"צ'דקה\"\n\n#: sk/sk_districts.py:20\nmsgid \"Detva\"\nmsgstr \"דטבה\"\n\n#: sk/sk_districts.py:21\nmsgid \"Dolny Kubin\"\nmsgstr \"דולני קובין\"\n\n#: sk/sk_districts.py:22\nmsgid \"Dunajska Streda\"\nmsgstr \"דונאייסקה סטרדה\"\n\n#: sk/sk_districts.py:23\nmsgid \"Galanta\"\nmsgstr \"גלנטה\"\n\n#: sk/sk_districts.py:24\nmsgid \"Gelnica\"\nmsgstr \"גלניקה\"\n\n#: sk/sk_districts.py:25\nmsgid \"Hlohovec\"\nmsgstr \"הלוהובץ\"\n\n#: sk/sk_districts.py:26\nmsgid \"Humenne\"\nmsgstr \"הומנה\"\n\n#: sk/sk_districts.py:27\nmsgid \"Ilava\"\nmsgstr \"אילבה\"\n\n#: sk/sk_districts.py:28\nmsgid \"Kezmarok\"\nmsgstr \"קזמרוק\"\n\n#: sk/sk_districts.py:29\nmsgid \"Komarno\"\nmsgstr \"קומרנו\"\n\n#: sk/sk_districts.py:30\nmsgid \"Kosice I\"\nmsgstr \"קושיצה 1\"\n\n#: sk/sk_districts.py:31\nmsgid \"Kosice II\"\nmsgstr \"קושיצה 2\"\n\n#: sk/sk_districts.py:32\nmsgid \"Kosice III\"\nmsgstr \"קושיצה 3\"\n\n#: sk/sk_districts.py:33\nmsgid \"Kosice IV\"\nmsgstr \"קושיצה 4\"\n\n#: sk/sk_districts.py:34\nmsgid \"Kosice - okolie\"\nmsgstr \"קושיצ'ה - אוקולי\"\n\n#: sk/sk_districts.py:35\nmsgid \"Krupina\"\nmsgstr \"קרופינה\"\n\n#: sk/sk_districts.py:36\nmsgid \"Kysucke Nove Mesto\"\nmsgstr \"קיוסקה נובה מסטו\"\n\n#: sk/sk_districts.py:37\nmsgid \"Levice\"\nmsgstr \"לביצה\"\n\n#: sk/sk_districts.py:38\nmsgid \"Levoca\"\nmsgstr \"לבוצ'ה\"\n\n#: sk/sk_districts.py:39\nmsgid \"Liptovsky Mikulas\"\nmsgstr \"ליפטובסקי מיקולס\"\n\n#: sk/sk_districts.py:40\nmsgid \"Lucenec\"\nmsgstr \"לוצ'נץ'\"\n\n#: sk/sk_districts.py:41\nmsgid \"Malacky\"\nmsgstr \"מאלאקי\"\n\n#: sk/sk_districts.py:42\nmsgid \"Martin\"\nmsgstr \"מרטין\"\n\n#: sk/sk_districts.py:43\nmsgid \"Medzilaborce\"\nmsgstr \"מדזילבורצה\"\n\n#: sk/sk_districts.py:44\nmsgid \"Michalovce\"\nmsgstr \"מיחלובצה\"\n\n#: sk/sk_districts.py:45\nmsgid \"Myjava\"\nmsgstr \"מיאווה\"\n\n#: sk/sk_districts.py:46\nmsgid \"Namestovo\"\nmsgstr \"נמסטובו\"\n\n#: sk/sk_districts.py:47\nmsgid \"Nitra\"\nmsgstr \"ניטרה\"\n\n#: sk/sk_districts.py:48\nmsgid \"Nove Mesto nad Vahom\"\nmsgstr \"נובה מסטו ע\\\"נ וה\"\n\n#: sk/sk_districts.py:49\nmsgid \"Nove Zamky\"\nmsgstr \"נווי־זאמקי\"\n\n#: sk/sk_districts.py:50\nmsgid \"Partizanske\"\nmsgstr \"פרטיזנסקה\"\n\n#: sk/sk_districts.py:51\nmsgid \"Pezinok\"\nmsgstr \"פזינוק\"\n\n#: sk/sk_districts.py:52\nmsgid \"Piestany\"\nmsgstr \"פיאסטאני\"\n\n#: sk/sk_districts.py:53\nmsgid \"Poltar\"\nmsgstr \"פולטר\"\n\n#: sk/sk_districts.py:54\nmsgid \"Poprad\"\nmsgstr \"פופרד\"\n\n#: sk/sk_districts.py:55\nmsgid \"Povazska Bystrica\"\nmsgstr \"פובסקה ביסטריצ'ה\"\n\n#: sk/sk_districts.py:56\nmsgid \"Presov\"\nmsgstr \"פרשוב\"\n\n#: sk/sk_districts.py:57\nmsgid \"Prievidza\"\nmsgstr \"פרבידזה\"\n\n#: sk/sk_districts.py:58\nmsgid \"Puchov\"\nmsgstr \"פוצ'וב\"\n\n#: sk/sk_districts.py:59\nmsgid \"Revuca\"\nmsgstr \"ריץ\"\n\n#: sk/sk_districts.py:60\nmsgid \"Rimavska Sobota\"\nmsgstr \"רימובסקה סובוטה\"\n\n#: sk/sk_districts.py:61\nmsgid \"Roznava\"\nmsgstr \"רוזנבה\"\n\n#: sk/sk_districts.py:62\nmsgid \"Ruzomberok\"\nmsgstr \"רוזומברוק\"\n\n#: sk/sk_districts.py:63\nmsgid \"Sabinov\"\nmsgstr \"סבינוב\"\n\n#: sk/sk_districts.py:64\nmsgid \"Senec\"\nmsgstr \"סנץ\"\n\n#: sk/sk_districts.py:65\nmsgid \"Senica\"\nmsgstr \"סניצ'ה\"\n\n#: sk/sk_districts.py:66\nmsgid \"Skalica\"\nmsgstr \"סקליצ'ה\"\n\n#: sk/sk_districts.py:67\nmsgid \"Snina\"\nmsgstr \"סנינה\"\n\n#: sk/sk_districts.py:68\nmsgid \"Sobrance\"\nmsgstr \"סוברנס\"\n\n#: sk/sk_districts.py:69\nmsgid \"Spisska Nova Ves\"\nmsgstr \"ספישסקה נובה וס\"\n\n#: sk/sk_districts.py:70\nmsgid \"Stara Lubovna\"\nmsgstr \"סטרה לובובנה\"\n\n#: sk/sk_districts.py:71\nmsgid \"Stropkov\"\nmsgstr \"סרטופקוב\"\n\n#: sk/sk_districts.py:72\nmsgid \"Svidnik\"\nmsgstr \"סבידניק\"\n\n#: sk/sk_districts.py:73\nmsgid \"Sala\"\nmsgstr \"סאלה\"\n\n#: sk/sk_districts.py:74\nmsgid \"Topolcany\"\nmsgstr \"טופולצ'ני\"\n\n#: sk/sk_districts.py:75\nmsgid \"Trebisov\"\nmsgstr \"טרביסוב\"\n\n#: sk/sk_districts.py:76\nmsgid \"Trencin\"\nmsgstr \"טרנצ'ין\"\n\n#: sk/sk_districts.py:77\nmsgid \"Trnava\"\nmsgstr \"טרנאוה\"\n\n#: sk/sk_districts.py:78\nmsgid \"Turcianske Teplice\"\nmsgstr \"טורצינסק טפליץ\"\n\n#: sk/sk_districts.py:79\nmsgid \"Tvrdosin\"\nmsgstr \"טברודוסין\"\n\n#: sk/sk_districts.py:80\nmsgid \"Velky Krtis\"\nmsgstr \"ולקי קריץ\"\n\n#: sk/sk_districts.py:81\nmsgid \"Vranov nad Toplou\"\nmsgstr \"טרנוב ע\\\"נ טופולו\"\n\n#: sk/sk_districts.py:82\nmsgid \"Zlate Moravce\"\nmsgstr \"זלטה מורבצה\"\n\n#: sk/sk_districts.py:83\nmsgid \"Zvolen\"\nmsgstr \"זבולן\"\n\n#: sk/sk_districts.py:84\nmsgid \"Zarnovica\"\nmsgstr \"זרנוביקה\"\n\n#: sk/sk_districts.py:85\nmsgid \"Ziar nad Hronom\"\nmsgstr \"ז'יר ע\\\"נ הרון\"\n\n#: sk/sk_districts.py:86\nmsgid \"Zilina\"\nmsgstr \"ז'ילינה\"\n\n#: sk/sk_regions.py:8\nmsgid \"Banska Bystrica region\"\nmsgstr \"מחוז בטנסקה ביסטריקה\"\n\n#: sk/sk_regions.py:9\nmsgid \"Bratislava region\"\nmsgstr \"מחוז ברטיסלבה\"\n\n#: sk/sk_regions.py:10\nmsgid \"Kosice region\"\nmsgstr \"מחוז קושיצ'ה\"\n\n#: sk/sk_regions.py:11\nmsgid \"Nitra region\"\nmsgstr \"מחוז ניטרה\"\n\n#: sk/sk_regions.py:12\nmsgid \"Presov region\"\nmsgstr \"מחוז פראסוב\"\n\n#: sk/sk_regions.py:13\nmsgid \"Trencin region\"\nmsgstr \"מחוז טראנצין\"\n\n#: sk/sk_regions.py:14\nmsgid \"Trnava region\"\nmsgstr \"מחוז טרנאוה\"\n\n#: sk/sk_regions.py:15\nmsgid \"Zilina region\"\nmsgstr \"מחוז ז'ילינה\"\n\n#: tr/forms.py:21\nmsgid \"Enter a postal code in the format XXXXX.\"\nmsgstr \"נא להזין מיקוד בתבנית XXXXX.\"\n\n#: tr/forms.py:42\nmsgid \"Phone numbers must be in 0XXX XXX XXXX format.\"\nmsgstr \"מספרי טלפון חייבים להיות בפורמט 0XXX XXX XXXX.\"\n\n#: tr/forms.py:69\nmsgid \"Enter a valid Turkish Identification number.\"\nmsgstr \"יש להזין מספר זיהות טורקי תקף.\"\n\n#: tr/forms.py:70\nmsgid \"Turkish Identification number must be 11 digits.\"\nmsgstr \"מספר זיהות טורקי חייב להיות 11 מספרים.\"\n\n#: us/forms.py:21\nmsgid \"Enter a zip code in the format XXXXX or XXXXX-XXXX.\"\nmsgstr \"יש להזין מיקוד חוקי בתבנית XXXXX או XXXXX-XXXX.\"\n\n#: us/forms.py:59\nmsgid \"Enter a valid U.S. Social Security number in XXX-XX-XXXX format.\"\nmsgstr \"יש להזין מספר ביטוח לאומי אמריקאי בתבנית XXX-XX-XXXX.\"\n\n#: us/forms.py:92\nmsgid \"Enter a U.S. state or territory.\"\nmsgstr \"יש להזין מדינה או טריטרויה בארה\\\"ב\"\n\n#: us/models.py:8\nmsgid \"U.S. state (two uppercase letters)\"\nmsgstr \"מדינה בארה\\\"ב (שתי אותיות גדולות)\"\n\n#: us/models.py:17\nmsgid \"U.S. postal code (two uppercase letters)\"\nmsgstr \"מיקוד US (שתי אותיות גדולות)\"\n\n#: us/models.py:26\nmsgid \"Phone number\"\nmsgstr \"מספר טלפון\"\n\n#: uy/forms.py:29\nmsgid \"Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.\"\nmsgstr \"יש להזין מספר CI חוקי בתבנית X.XXX.XXX-X,XXXXXXX-X או XXXXXXXX.\"\n\n#: uy/forms.py:31\nmsgid \"Enter a valid CI number.\"\nmsgstr \"יש להזין מספר CI חוקי.\"\n\n#: za/forms.py:22\nmsgid \"Enter a valid South African ID number\"\nmsgstr \"נא להזין מספר זיהוי דרום אפריקאי חוקי\"\n\n#: za/forms.py:56\nmsgid \"Enter a valid South African postal code\"\nmsgstr \"נא להזין מיקוד דרום אפריקאי חוקי\"\n\n#: za/za_provinces.py:4\nmsgid \"Eastern Cape\"\nmsgstr \"הכף המזרחי\"\n\n#: za/za_provinces.py:5\nmsgid \"Free State\"\nmsgstr \"המדינה החופשית\"\n\n#: za/za_provinces.py:6\nmsgid \"Gauteng\"\nmsgstr \"גאוטנג\"\n\n#: za/za_provinces.py:7\nmsgid \"KwaZulu-Natal\"\nmsgstr \"קווזולו־נאטאל\"\n\n#: za/za_provinces.py:8\nmsgid \"Limpopo\"\nmsgstr \"לימפופו\"\n\n#: za/za_provinces.py:9\nmsgid \"Mpumalanga\"\nmsgstr \"מפומלנגה\"\n\n#: za/za_provinces.py:10\nmsgid \"Northern Cape\"\nmsgstr \"כף צפוני\"\n\n#: za/za_provinces.py:11\nmsgid \"North West\"\nmsgstr \"דרום מערב\"\n\n#: za/za_provinces.py:12\nmsgid \"Western Cape\"\nmsgstr \"כף מערבי\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/locale/hi/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <alok.kumar@gmail.com>, 2013.\n# chandankumar(ciypro) <chandankumar.093047@gmail.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Sandeep Satavlekar <sandysat@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2013-01-06 13:43+0000\\n\"\n\"Last-Translator: alkuma <alok.kumar@gmail.com>\\n\"\n\"Language-Team: Hindi (http://www.transifex.com/projects/p/django/language/\"\n\"hi/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: hi\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: ar/forms.py:30\nmsgid \"Enter a postal code in the format NNNN or ANNNNAAA.\"\nmsgstr \"डाक संहिता को NNNN अथवा ANNNNAAA के प्रतिरूप में दर्ज करें ।\"\n\n#: ar/forms.py:52 br/forms.py:95 br/forms.py:134 pe/forms.py:27 pe/forms.py:55\nmsgid \"This field requires only numbers.\"\nmsgstr \"इस क्षेत्र में संख्या भरें ।\"\n\n#: ar/forms.py:53\nmsgid \"This field requires 7 or 8 digits.\"\nmsgstr \"इस क्षेत्र में 7 अथवा 8 अंक दर्ज करें ।\"\n\n#: ar/forms.py:82\nmsgid \"Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.\"\nmsgstr \"मान्य CUIT XX-XXXXXXXX-X अथवा XXXXXXXXXXXX प्रतिरूप में गर्ज करें ।\"\n\n#: ar/forms.py:83\nmsgid \"Invalid CUIT.\"\nmsgstr \"अमान्य CUIT\"\n\n#: ar/forms.py:84\nmsgid \"Invalid legal type. Type must be 27, 20, 23 or 30.\"\nmsgstr \" अवैध क़ानूनी प्रकार। प्रकार 27, 20, 23 या 30 होना चाहिए।\"\n\n#: at/at_states.py:5\nmsgid \"Burgenland\"\nmsgstr \"बर्गनलान्ड\"\n\n#: at/at_states.py:6\nmsgid \"Carinthia\"\nmsgstr \"कारिन्थिया\"\n\n#: at/at_states.py:7\nmsgid \"Lower Austria\"\nmsgstr \"निम्न आस्ट्रिया\"\n\n#: at/at_states.py:8\nmsgid \"Upper Austria\"\nmsgstr \"ऊपरी आस्ट्रिया\"\n\n#: at/at_states.py:9\nmsgid \"Salzburg\"\nmsgstr \"साल्जबर्ग\"\n\n#: at/at_states.py:10\nmsgid \"Styria\"\nmsgstr \"स्टीरिया\"\n\n#: at/at_states.py:11\nmsgid \"Tyrol\"\nmsgstr \"टैराल\"\n\n#: at/at_states.py:12\nmsgid \"Vorarlberg\"\nmsgstr \"वोरार्लबर्ग\"\n\n#: at/at_states.py:13\nmsgid \"Vienna\"\nmsgstr \"वियेन्ना\"\n\n#: at/forms.py:22 ch/forms.py:22 no/forms.py:19\nmsgid \"Enter a zip code in the format XXXX.\"\nmsgstr \"डाक संहिता को XXXX के प्रतिरूप में दर्ज करें ।\"\n\n#: at/forms.py:50\nmsgid \"Enter a valid Austrian Social Security Number in XXXX XXXXXX format.\"\nmsgstr \"मान्य आस्ट्रियन सोशल सेक्यूरिटी अंक को XXXX XXXXXX प्रतिरूप में भरें\"\n\n#: au/forms.py:26\nmsgid \"Enter a 4 digit postcode.\"\nmsgstr \"4 अंकों का पिन कोड दर्ज करें.\"\n\n#: au/models.py:9\nmsgid \"Australian State\"\nmsgstr \"ऑस्ट्रेलियाई राज्य\"\n\n#: au/models.py:19\nmsgid \"Australian Postcode\"\nmsgstr \"ऑस्ट्रेलियाई पोस्टकोड\"\n\n#: au/models.py:33\nmsgid \"Australian Phone number\"\nmsgstr \"ऑस्ट्रेलियाई टेलिफोन नम्बर\"\n\n#: be/be_provinces.py:5\nmsgid \"Antwerp\"\nmsgstr \"एंटवर्प\"\n\n#: be/be_provinces.py:6\nmsgid \"Brussels\"\nmsgstr \"ब्रसेल्स\"\n\n#: be/be_provinces.py:7\nmsgid \"East Flanders\"\nmsgstr \"पूरब फ़्लैंडर्स\"\n\n#: be/be_provinces.py:8\nmsgid \"Flemish Brabant\"\nmsgstr \"फ़्लेमिश ब्राबांट\"\n\n#: be/be_provinces.py:9\nmsgid \"Hainaut\"\nmsgstr \"हैनॉट\"\n\n#: be/be_provinces.py:10\nmsgid \"Liege\"\nmsgstr \"लीग\"\n\n#: be/be_provinces.py:11 nl/nl_provinces.py:9\nmsgid \"Limburg\"\nmsgstr \"लिम्बर्ग\"\n\n#: be/be_provinces.py:12\nmsgid \"Luxembourg\"\nmsgstr \"लक्ज़मबर्ग\"\n\n#: be/be_provinces.py:13\nmsgid \"Namur\"\nmsgstr \"नामुर\"\n\n#: be/be_provinces.py:14\nmsgid \"Walloon Brabant\"\nmsgstr \"वालून ब्राबांट\"\n\n#: be/be_provinces.py:15\nmsgid \"West Flanders\"\nmsgstr \"पश्चिम फ़्लैंडर्स\"\n\n#: be/be_regions.py:5\nmsgid \"Brussels Capital Region\"\nmsgstr \"ब्रुसेल्स राजधानी क्षेत्र\"\n\n#: be/be_regions.py:6\nmsgid \"Flemish Region\"\nmsgstr \"फ्लेमिश क्षेत्र\"\n\n#: be/be_regions.py:7\nmsgid \"Wallonia\"\nmsgstr \"वालोनिया\"\n\n#: be/forms.py:25\nmsgid \"Enter a valid postal code in the range and format 1XXX - 9XXX.\"\nmsgstr \"1XXX - 9XXX सीमा और प्रारूप  में एक वैध डाक कोड दर्ज करें.\"\n\n#: be/forms.py:48\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\nmsgstr \"\"\n\"इन में से एक स्वरूपों में एक वैध फ़ोन नंबर दर्ज करें 0x xxx xx xx, 0xx xx xx xx, 04xx xx \"\n\"xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.xx.xx.\"\n\"xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxxमें एक वैध फ़ोन नंबर दर्ज करें.\"\n\n#: br/forms.py:22\nmsgid \"Enter a zip code in the format XXXXX-XXX.\"\nmsgstr \"डाक संहिता को XXXXX-XXX के प्रतिरूप में दर्ज करें ।\"\n\n#: br/forms.py:31\nmsgid \"Phone numbers must be in XX-XXXX-XXXX format.\"\nmsgstr \"टेलिफ़ोन संख्या XX-XXXX-XXXX प्रतिरूप में होनी चाहिए ।\"\n\n#: br/forms.py:58\nmsgid \"\"\n\"Select a valid brazilian state. That state is not one of the available \"\n\"states.\"\nmsgstr \"मान्य ब्रजिलियन राज्य चुनिए । यह राज्य उपस्थित राज्यों में नहीं है ।\"\n\n#: br/forms.py:93\nmsgid \"Invalid CPF number.\"\nmsgstr \"अमान्य CPF संख्या ।\"\n\n#: br/forms.py:94\nmsgid \"This field requires at most 11 digits or 14 characters.\"\nmsgstr \"इस क्षेत्र में 11 अथवा 14 अक्षर भरें ।\"\n\n#: br/forms.py:133\nmsgid \"Invalid CNPJ number.\"\nmsgstr \"अमान्य CNPJ संख्या ।\"\n\n#: br/forms.py:135\nmsgid \"This field requires at least 14 digits\"\nmsgstr \"इस क्षेत्र में कम से कम 14 अंक भरें\"\n\n#: ca/forms.py:29\nmsgid \"Enter a postal code in the format XXX XXX.\"\nmsgstr \"डाक संहिता के XXX XXX प्रतिरूप में भरें ।\"\n\n#: ca/forms.py:47 us/forms.py:30\nmsgid \"Phone numbers must be in XXX-XXX-XXXX format.\"\nmsgstr \"टेलिफोन संख्या को -XXX XXX -XXXX- प्रतिरूप में भरें ।\"\n\n#: ca/forms.py:69\nmsgid \"Enter a Canadian province or territory.\"\nmsgstr \"कनाडा का कोई प्रांत या प्रदेश प्रविष्ट करें।\"\n\n#: ca/forms.py:110\nmsgid \"Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.\"\nmsgstr \"मान्य कनेडियन सोशल सेक्यूरिटी संख्या को XXX-XXX-XXX प्रतिरूप में भरें ।\"\n\n#: ch/ch_states.py:5\nmsgid \"Aargau\"\nmsgstr \"आरगाव\"\n\n#: ch/ch_states.py:6\nmsgid \"Appenzell Innerrhoden\"\nmsgstr \"अप्पेनजेल इन्नरहोडन\"\n\n#: ch/ch_states.py:7\nmsgid \"Appenzell Ausserrhoden\"\nmsgstr \"अप्पेनजेल ओसरहोडन\"\n\n#: ch/ch_states.py:8\nmsgid \"Basel-Stadt\"\nmsgstr \"बासेल-सटाड्ट\"\n\n#: ch/ch_states.py:9\nmsgid \"Basel-Land\"\nmsgstr \"बासेल-लान्ड\"\n\n#: ch/ch_states.py:10\nmsgid \"Berne\"\nmsgstr \"बर्न\"\n\n#: ch/ch_states.py:11\nmsgid \"Fribourg\"\nmsgstr \"फ्रीबोर्ग\"\n\n#: ch/ch_states.py:12\nmsgid \"Geneva\"\nmsgstr \"जेनीवा\"\n\n#: ch/ch_states.py:13\nmsgid \"Glarus\"\nmsgstr \"ग्लारस\"\n\n#: ch/ch_states.py:14\nmsgid \"Graubuenden\"\nmsgstr \"ग्राबुएन्डन\"\n\n#: ch/ch_states.py:15\nmsgid \"Jura\"\nmsgstr \"जुरा\"\n\n#: ch/ch_states.py:16\nmsgid \"Lucerne\"\nmsgstr \"लुसेर्न\"\n\n#: ch/ch_states.py:17\nmsgid \"Neuchatel\"\nmsgstr \"न्यूकाटेल\"\n\n#: ch/ch_states.py:18\nmsgid \"Nidwalden\"\nmsgstr \"निड्वाल्ढेन\"\n\n#: ch/ch_states.py:19\nmsgid \"Obwalden\"\nmsgstr \"ओब्वालडेन\"\n\n#: ch/ch_states.py:20\nmsgid \"Schaffhausen\"\nmsgstr \"षाफहौसेन\"\n\n#: ch/ch_states.py:21\nmsgid \"Schwyz\"\nmsgstr \"ष्विज\"\n\n#: ch/ch_states.py:22\nmsgid \"Solothurn\"\nmsgstr \"सोलोथर्न\"\n\n#: ch/ch_states.py:23\nmsgid \"St. Gallen\"\nmsgstr \"सन्त.गालेन\"\n\n#: ch/ch_states.py:24\nmsgid \"Thurgau\"\nmsgstr \"थुर्गाव\"\n\n#: ch/ch_states.py:25\nmsgid \"Ticino\"\nmsgstr \"टिचिनो\"\n\n#: ch/ch_states.py:26\nmsgid \"Uri\"\nmsgstr \"उरी\"\n\n#: ch/ch_states.py:27\nmsgid \"Valais\"\nmsgstr \"वलैस\"\n\n#: ch/ch_states.py:28\nmsgid \"Vaud\"\nmsgstr \"वौड\"\n\n#: ch/ch_states.py:29\nmsgid \"Zug\"\nmsgstr \"जुग\"\n\n#: ch/ch_states.py:30\nmsgid \"Zurich\"\nmsgstr \"जूरिच\"\n\n#: ch/forms.py:37\nmsgid \"Phone numbers must be in 0XX XXX XX XX format.\"\nmsgstr \"दूरभाषों का प्रारूप 0XX XXX XX XX होना चाहिए।\"\n\n#: ch/forms.py:68\nmsgid \"\"\n\"Enter a valid Swiss identity or passport card number in X1234567<0 or \"\n\"1234567890 format.\"\nmsgstr \"\"\n\"मान्य स्विस्स पहचान अथवा पास्सपोर्ट संख्या को X1234567<0 अथवा 1234567890 प्रतिरूप में \"\n\"भरें ।\"\n\n#: cl/forms.py:32\nmsgid \"Enter a valid Chilean RUT.\"\nmsgstr \"मान्य चिली कि RUT भरें ।\"\n\n#: cl/forms.py:33\nmsgid \"Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.\"\nmsgstr \"मान्य चिली कि RUT भरें । XX.XXX.XXX-X प्रतिरूप में भरें ।\"\n\n#: cl/forms.py:34\nmsgid \"The Chilean RUT is not valid.\"\nmsgstr \"यह चिली का RUT अमान्य है ।\"\n\n#: cn/forms.py:84\nmsgid \"Enter a post code in the format XXXXXX.\"\nmsgstr \"डाक संहिता को XXXXXX प्रतिरूप में भरें ।\"\n\n#: cn/forms.py:105\nmsgid \"ID Card Number consists of 15 or 18 digits.\"\nmsgstr \"आईडी कार्ड नंबर 15 या 18 अंकों के होते हैं.\"\n\n#: cn/forms.py:106\nmsgid \"Invalid ID Card Number: Wrong checksum\"\nmsgstr \"अवैध आईडी कार्ड नंबर:गलत जाँचयोग\"\n\n#: cn/forms.py:107\nmsgid \"Invalid ID Card Number: Wrong birthdate\"\nmsgstr \"अवैध आईडी कार्ड नंबर: गलत जन्मतिथि\"\n\n#: cn/forms.py:108\nmsgid \"Invalid ID Card Number: Wrong location code\"\nmsgstr \"अवैध आईडी कार्ड संख्या: गलत स्थान कोड\"\n\n#: cn/forms.py:193\nmsgid \"Enter a valid phone number.\"\nmsgstr \"वैध फ़ोन नंबर दर्ज करें.\"\n\n#: cn/forms.py:210\nmsgid \"Enter a valid cell number.\"\nmsgstr \"एक वैध सेल नंबर दर्ज करें.\"\n\n#: cz/cz_regions.py:8\nmsgid \"Prague\"\nmsgstr \"प्राग\"\n\n#: cz/cz_regions.py:9\nmsgid \"Central Bohemian Region\"\nmsgstr \"मध्य बोहेनिया क्षेत्र\"\n\n#: cz/cz_regions.py:10\nmsgid \"South Bohemian Region\"\nmsgstr \"दक्षिण बोहेनिया क्षेत्र\"\n\n#: cz/cz_regions.py:11\nmsgid \"Pilsen Region\"\nmsgstr \"प्लज़ेन क्षेत्र\"\n\n#: cz/cz_regions.py:12\nmsgid \"Carlsbad Region\"\nmsgstr \"Carlsbad क्षेत्र\"\n\n#: cz/cz_regions.py:13\nmsgid \"Usti Region\"\nmsgstr \"Usti क्षेत्र\"\n\n#: cz/cz_regions.py:14\nmsgid \"Liberec Region\"\nmsgstr \"Liberec क्षेत्र\"\n\n#: cz/cz_regions.py:15\nmsgid \"Hradec Region\"\nmsgstr \"Hradec क्षेत्र\"\n\n#: cz/cz_regions.py:16\nmsgid \"Pardubice Region\"\nmsgstr \"Pardubice क्षेत्र\"\n\n#: cz/cz_regions.py:17\nmsgid \"Vysocina Region\"\nmsgstr \"Vysocina क्षेत्र\"\n\n#: cz/cz_regions.py:18\nmsgid \"South Moravian Region\"\nmsgstr \"दक्षिण मोरावियन क्षेत्र\"\n\n#: cz/cz_regions.py:19\nmsgid \"Olomouc Region\"\nmsgstr \"ओलोोमोक क्षेत्र\"\n\n#: cz/cz_regions.py:20\nmsgid \"Zlin Region\"\nmsgstr \"Zlin क्षेत्र\"\n\n#: cz/cz_regions.py:21\nmsgid \"Moravian-Silesian Region\"\nmsgstr \"मोरावियन-सिलेसियन क्षेत्र\"\n\n#: cz/forms.py:32 sk/forms.py:33\nmsgid \"Enter a postal code in the format XXXXX or XXX XX.\"\nmsgstr \"डाक संहिता को XXXXX अथवा XXX XX प्रतिरूप में भरें ।\"\n\n#: cz/forms.py:52\nmsgid \"Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.\"\nmsgstr \"XXXXXX/XXXXयाXXXXXXXXXX प्रारूप में जन्म संख्या दर्ज करें.\"\n\n#: cz/forms.py:53\nmsgid \"Enter a valid birth number.\"\nmsgstr \"वैध जन्म संख्या दर्ज करें.\"\n\n#: cz/forms.py:102\nmsgid \"Enter a valid IC number.\"\nmsgstr \"वैध आईसी संख्या दर्ज करें.\"\n\n#: de/de_states.py:5\nmsgid \"Baden-Wuerttemberg\"\nmsgstr \"बाडेन-वुएर्टेम्बर्ग\"\n\n#: de/de_states.py:6\nmsgid \"Bavaria\"\nmsgstr \"बवारिया\"\n\n#: de/de_states.py:7\nmsgid \"Berlin\"\nmsgstr \"बर्लिन\"\n\n#: de/de_states.py:8\nmsgid \"Brandenburg\"\nmsgstr \"ब्रान्डेनबर्ग\"\n\n#: de/de_states.py:9\nmsgid \"Bremen\"\nmsgstr \"ब्रेमेन\"\n\n#: de/de_states.py:10\nmsgid \"Hamburg\"\nmsgstr \"हाम्बर्ग\"\n\n#: de/de_states.py:11\nmsgid \"Hessen\"\nmsgstr \"हेस्सेन\"\n\n#: de/de_states.py:12\nmsgid \"Mecklenburg-Western Pomerania\"\nmsgstr \"मेकलेनबर्ग\"\n\n#: de/de_states.py:13\nmsgid \"Lower Saxony\"\nmsgstr \"लोअर साक्सोनी\"\n\n#: de/de_states.py:14\nmsgid \"North Rhine-Westphalia\"\nmsgstr \"उत्तरी रैन-वेस्टफालिया\"\n\n#: de/de_states.py:15\nmsgid \"Rhineland-Palatinate\"\nmsgstr \"रैनलान्ड-पलाटिनेट\"\n\n#: de/de_states.py:16\nmsgid \"Saarland\"\nmsgstr \"सारलान्ड\"\n\n#: de/de_states.py:17\nmsgid \"Saxony\"\nmsgstr \"साक्सोनी\"\n\n#: de/de_states.py:18\nmsgid \"Saxony-Anhalt\"\nmsgstr \"साक्सोनी-अन्हाल्ट\"\n\n#: de/de_states.py:19\nmsgid \"Schleswig-Holstein\"\nmsgstr \"ष्लेस्विग-होल्स्टैन\"\n\n#: de/de_states.py:20\nmsgid \"Thuringia\"\nmsgstr \"थुरिन्गिया\"\n\n#: de/forms.py:20 fi/forms.py:18 fr/forms.py:20\nmsgid \"Enter a zip code in the format XXXXX.\"\nmsgstr \"डाक संहिता को XXXXX प्रतिरूप में भरें ।\"\n\n#: de/forms.py:46\nmsgid \"\"\n\"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"format.\"\nmsgstr \"\"\n\"मान्य जर्मन पहचान पत्र संख्या को XXXXXXXXXXX-XXXXXXX-XXXXXXX-X प्ततिरूप में भरें ।\"\n\n#: es/es_provinces.py:5\nmsgid \"Araba\"\nmsgstr \"अरबा\"\n\n#: es/es_provinces.py:6\nmsgid \"Albacete\"\nmsgstr \"अल्बासेट\"\n\n#: es/es_provinces.py:7\nmsgid \"Alacant\"\nmsgstr \"अलाकान्ट\"\n\n#: es/es_provinces.py:8\nmsgid \"Almeria\"\nmsgstr \"अल्मेरिया\"\n\n#: es/es_provinces.py:9\nmsgid \"Avila\"\nmsgstr \"अविला\"\n\n#: es/es_provinces.py:10\nmsgid \"Badajoz\"\nmsgstr \"बडाजोज\"\n\n#: es/es_provinces.py:11\nmsgid \"Illes Balears\"\nmsgstr \"इल्लेस बालियर्स\"\n\n#: es/es_provinces.py:12\nmsgid \"Barcelona\"\nmsgstr \"बार्सिलोना\"\n\n#: es/es_provinces.py:13\nmsgid \"Burgos\"\nmsgstr \"बर्गोस\"\n\n#: es/es_provinces.py:14\nmsgid \"Caceres\"\nmsgstr \"कासेरेस\"\n\n#: es/es_provinces.py:15\nmsgid \"Cadiz\"\nmsgstr \"काडीज\"\n\n#: es/es_provinces.py:16\nmsgid \"Castello\"\nmsgstr \"कास्टेल्लो\"\n\n#: es/es_provinces.py:17\nmsgid \"Ciudad Real\"\nmsgstr \"स्यूडाड रियल\"\n\n#: es/es_provinces.py:18\nmsgid \"Cordoba\"\nmsgstr \"कोर्डोबा\"\n\n#: es/es_provinces.py:19\nmsgid \"A Coruna\"\nmsgstr \"आ कोरुन्या\"\n\n#: es/es_provinces.py:20\nmsgid \"Cuenca\"\nmsgstr \"कुएन्का\"\n\n#: es/es_provinces.py:21\nmsgid \"Girona\"\nmsgstr \"गिरोना\"\n\n#: es/es_provinces.py:22\nmsgid \"Granada\"\nmsgstr \"ग्रनडा\"\n\n#: es/es_provinces.py:23\nmsgid \"Guadalajara\"\nmsgstr \"गुवाडलाजारा\"\n\n#: es/es_provinces.py:24\nmsgid \"Guipuzkoa\"\nmsgstr \"गुविपुज्कोवा\"\n\n#: es/es_provinces.py:25\nmsgid \"Huelva\"\nmsgstr \"हुएल्का\"\n\n#: es/es_provinces.py:26\nmsgid \"Huesca\"\nmsgstr \"हुएस्का\"\n\n#: es/es_provinces.py:27\nmsgid \"Jaen\"\nmsgstr \"जैन\"\n\n#: es/es_provinces.py:28\nmsgid \"Leon\"\nmsgstr \"लियोन\"\n\n#: es/es_provinces.py:29\nmsgid \"Lleida\"\nmsgstr \"ल्लैडा\"\n\n#: es/es_provinces.py:30 es/es_regions.py:17\nmsgid \"La Rioja\"\nmsgstr \"ला रियोजा\"\n\n#: es/es_provinces.py:31\nmsgid \"Lugo\"\nmsgstr \"लुगो\"\n\n#: es/es_provinces.py:32 es/es_regions.py:18\nmsgid \"Madrid\"\nmsgstr \"माड्रिड\"\n\n#: es/es_provinces.py:33\nmsgid \"Malaga\"\nmsgstr \"मलगा\"\n\n#: es/es_provinces.py:34\nmsgid \"Murcia\"\nmsgstr \"मुर्किया\"\n\n#: es/es_provinces.py:35\nmsgid \"Navarre\"\nmsgstr \"नवारे\"\n\n#: es/es_provinces.py:36\nmsgid \"Ourense\"\nmsgstr \"अवर्सेन्स\"\n\n#: es/es_provinces.py:37\nmsgid \"Asturias\"\nmsgstr \"अस्टुरियास\"\n\n#: es/es_provinces.py:38\nmsgid \"Palencia\"\nmsgstr \"पलेन्शिया\"\n\n#: es/es_provinces.py:39\nmsgid \"Las Palmas\"\nmsgstr \"ला पामास\"\n\n#: es/es_provinces.py:40\nmsgid \"Pontevedra\"\nmsgstr \"पोन्टेवेड्रा\"\n\n#: es/es_provinces.py:41\nmsgid \"Salamanca\"\nmsgstr \"सलामन्का\"\n\n#: es/es_provinces.py:42\nmsgid \"Santa Cruz de Tenerife\"\nmsgstr \"सान्टा क्रूज द टेनेरिफे\"\n\n#: es/es_provinces.py:43 es/es_regions.py:11\nmsgid \"Cantabria\"\nmsgstr \"कन्टाब्रिया\"\n\n#: es/es_provinces.py:44\nmsgid \"Segovia\"\nmsgstr \"सेजोविया\"\n\n#: es/es_provinces.py:45\nmsgid \"Seville\"\nmsgstr \"सेविल्ला\"\n\n#: es/es_provinces.py:46\nmsgid \"Soria\"\nmsgstr \"सोरिया\"\n\n#: es/es_provinces.py:47\nmsgid \"Tarragona\"\nmsgstr \"तारागोना\"\n\n#: es/es_provinces.py:48\nmsgid \"Teruel\"\nmsgstr \"तेरुवेल\"\n\n#: es/es_provinces.py:49\nmsgid \"Toledo\"\nmsgstr \"टोलिडो\"\n\n#: es/es_provinces.py:50\nmsgid \"Valencia\"\nmsgstr \"वलेन्शिया\"\n\n#: es/es_provinces.py:51\nmsgid \"Valladolid\"\nmsgstr \"वलाडोयिड\"\n\n#: es/es_provinces.py:52\nmsgid \"Bizkaia\"\nmsgstr \"बिजकाया\"\n\n#: es/es_provinces.py:53\nmsgid \"Zamora\"\nmsgstr \"जमोरा\"\n\n#: es/es_provinces.py:54\nmsgid \"Zaragoza\"\nmsgstr \"जारागोस्सा\"\n\n#: es/es_provinces.py:55\nmsgid \"Ceuta\"\nmsgstr \"क्यूटा\"\n\n#: es/es_provinces.py:56\nmsgid \"Melilla\"\nmsgstr \"मेलिल्ला\"\n\n#: es/es_regions.py:5\nmsgid \"Andalusia\"\nmsgstr \"अन्डालुसिया\"\n\n#: es/es_regions.py:6\nmsgid \"Aragon\"\nmsgstr \"आरगोन\"\n\n#: es/es_regions.py:7\nmsgid \"Principality of Asturias\"\nmsgstr \"प्रिनसिपालिटी आफ अस्टुरियास\"\n\n#: es/es_regions.py:8\nmsgid \"Balearic Islands\"\nmsgstr \"बलीयरिक द्वीप\"\n\n#: es/es_regions.py:9\nmsgid \"Basque Country\"\nmsgstr \"बास्क देश\"\n\n#: es/es_regions.py:10\nmsgid \"Canary Islands\"\nmsgstr \"कनरी द्वीप\"\n\n#: es/es_regions.py:12\nmsgid \"Castile-La Mancha\"\nmsgstr \"कास्टील-ला मान्का\"\n\n#: es/es_regions.py:13\nmsgid \"Castile and Leon\"\nmsgstr \"कास्टील ओर लियोन\"\n\n#: es/es_regions.py:14\nmsgid \"Catalonia\"\nmsgstr \"कटलोनिया\"\n\n#: es/es_regions.py:15\nmsgid \"Extremadura\"\nmsgstr \"एक्स्ट्रीमदूरा\"\n\n#: es/es_regions.py:16\nmsgid \"Galicia\"\nmsgstr \"गलीशिया\"\n\n#: es/es_regions.py:19\nmsgid \"Region of Murcia\"\nmsgstr \"मुर्किया प्रान्त\"\n\n#: es/es_regions.py:20\nmsgid \"Foral Community of Navarre\"\nmsgstr \"नवारे की फोरल समाज\"\n\n#: es/es_regions.py:21\nmsgid \"Valencian Community\"\nmsgstr \"वलेन्शियन समाज\"\n\n#: es/forms.py:26\nmsgid \"Enter a valid postal code in the range and format 01XXX - 52XXX.\"\nmsgstr \"मान्य डाक संहिता को 01XXX - 52XXX के श्रेणी और प्ततिरूप में भरें ।\"\n\n#: es/forms.py:46\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or \"\n\"9XXXXXXXX.\"\nmsgstr \"\"\n\"मान्य टेलिफोन संख्या को किसी एक प्रतिरूप में भरें : 6XXXXXXXX, 8XXXXXXXX अथवा \"\n\"9XXXXXXXX ।\"\n\n#: es/forms.py:73\nmsgid \"Please enter a valid NIF, NIE, or CIF.\"\nmsgstr \"कृपया मान्य NIF, NIE अथवा CIF भरें ।\"\n\n#: es/forms.py:74\nmsgid \"Please enter a valid NIF or NIE.\"\nmsgstr \"कृपया मान्य NIF अथवा NIE भरें ।\"\n\n#: es/forms.py:75\nmsgid \"Invalid checksum for NIF.\"\nmsgstr \"NIF के लिए अमान्य जाँच योग ।\"\n\n#: es/forms.py:76\nmsgid \"Invalid checksum for NIE.\"\nmsgstr \"NIE के लिए अमान्य जाँच योग ।\"\n\n#: es/forms.py:77\nmsgid \"Invalid checksum for CIF.\"\nmsgstr \"CIF के लिए अमान्य जाँच योग ।\"\n\n#: es/forms.py:149\nmsgid \"\"\n\"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.\"\nmsgstr \"कृपया मान्य बैंक खाता संख्या को XXXX-XXXX-XX-XXXXXXXXXX प्रतिरूप में भरें ।\"\n\n#: es/forms.py:150\nmsgid \"Invalid checksum for bank account number.\"\nmsgstr \"बैंक खाता संख्या के लिए अमान्य जाँच योग ।\"\n\n#: fi/forms.py:33\nmsgid \"Enter a valid Finnish social security number.\"\nmsgstr \"मान्य फिन्निश सोशल सेक्यूरिटी संख्या भरें ।\"\n\n#: fr/forms.py:35\nmsgid \"Phone numbers must be in 0X XX XX XX XX format.\"\nmsgstr \"फोन नंबर 0x XX XX XX XX प्रारूप में होना चाहिए है.\"\n\n#: gb/forms.py:25\nmsgid \"Enter a valid postcode.\"\nmsgstr \"मान्य डाक संहिता भरें ।\"\n\n#: gb/gb_regions.py:11\nmsgid \"Bedfordshire\"\nmsgstr \"बेडफार्डशायर\"\n\n#: gb/gb_regions.py:12\nmsgid \"Buckinghamshire\"\nmsgstr \"बकहिन्गमशायर\"\n\n#: gb/gb_regions.py:14\nmsgid \"Cheshire\"\nmsgstr \"चेशायर\"\n\n#: gb/gb_regions.py:15\nmsgid \"Cornwall and Isles of Scilly\"\nmsgstr \"कार्नवाल और सिसिली द्वीप\"\n\n#: gb/gb_regions.py:16\nmsgid \"Cumbria\"\nmsgstr \"क्मब्रिया\"\n\n#: gb/gb_regions.py:17\nmsgid \"Derbyshire\"\nmsgstr \"डेर्बीशायर\"\n\n#: gb/gb_regions.py:18\nmsgid \"Devon\"\nmsgstr \"डेवोन\"\n\n#: gb/gb_regions.py:19\nmsgid \"Dorset\"\nmsgstr \"डोर्सेट\"\n\n#: gb/gb_regions.py:20\nmsgid \"Durham\"\nmsgstr \"डर्हम\"\n\n#: gb/gb_regions.py:21\nmsgid \"East Sussex\"\nmsgstr \"पूर्वी सस्सेक्स\"\n\n#: gb/gb_regions.py:22\nmsgid \"Essex\"\nmsgstr \"एस्सेक्स\"\n\n#: gb/gb_regions.py:23\nmsgid \"Gloucestershire\"\nmsgstr \"ग्लौसेस्टरशायर\"\n\n#: gb/gb_regions.py:24\nmsgid \"Greater London\"\nmsgstr \"ग्रेटर लन्डन\"\n\n#: gb/gb_regions.py:25\nmsgid \"Greater Manchester\"\nmsgstr \"ग्रेटर मानचेस्टर\"\n\n#: gb/gb_regions.py:26\nmsgid \"Hampshire\"\nmsgstr \"हाम्पशायर\"\n\n#: gb/gb_regions.py:27\nmsgid \"Hertfordshire\"\nmsgstr \"हर्टफार्डशायर\"\n\n#: gb/gb_regions.py:28\nmsgid \"Kent\"\nmsgstr \"केन्ट\"\n\n#: gb/gb_regions.py:29\nmsgid \"Lancashire\"\nmsgstr \"लान्काशायर\"\n\n#: gb/gb_regions.py:30\nmsgid \"Leicestershire\"\nmsgstr \"लेसेस्टशायर\"\n\n#: gb/gb_regions.py:31\nmsgid \"Lincolnshire\"\nmsgstr \"लिन्कनशायर\"\n\n#: gb/gb_regions.py:32\nmsgid \"Merseyside\"\nmsgstr \"मेर्सीसैड\"\n\n#: gb/gb_regions.py:33\nmsgid \"Norfolk\"\nmsgstr \"नोर्फोक\"\n\n#: gb/gb_regions.py:34\nmsgid \"North Yorkshire\"\nmsgstr \"उत्तरी यार्कशायर\"\n\n#: gb/gb_regions.py:35\nmsgid \"Northamptonshire\"\nmsgstr \"नार्थाम्पटनशायर\"\n\n#: gb/gb_regions.py:36\nmsgid \"Northumberland\"\nmsgstr \"नार्थम्बरलान्ड\"\n\n#: gb/gb_regions.py:37\nmsgid \"Nottinghamshire\"\nmsgstr \"नाटिन्गहमशायर\"\n\n#: gb/gb_regions.py:38\nmsgid \"Oxfordshire\"\nmsgstr \"आक्सफर्डशायर\"\n\n#: gb/gb_regions.py:39\nmsgid \"Shropshire\"\nmsgstr \"श्रापशायर\"\n\n#: gb/gb_regions.py:40\nmsgid \"Somerset\"\nmsgstr \"सोमर्सेट\"\n\n#: gb/gb_regions.py:41\nmsgid \"South Yorkshire\"\nmsgstr \"दक्षिणी यार्कशायर\"\n\n#: gb/gb_regions.py:42\nmsgid \"Staffordshire\"\nmsgstr \"स्टाफोर्डशायर\"\n\n#: gb/gb_regions.py:43\nmsgid \"Suffolk\"\nmsgstr \"सफ्फोक\"\n\n#: gb/gb_regions.py:44\nmsgid \"Surrey\"\nmsgstr \"सर्रे\"\n\n#: gb/gb_regions.py:45\nmsgid \"Tyne and Wear\"\nmsgstr \"टैन और वेर\"\n\n#: gb/gb_regions.py:46\nmsgid \"Warwickshire\"\nmsgstr \"वार्विकशायर\"\n\n#: gb/gb_regions.py:47\nmsgid \"West Midlands\"\nmsgstr \"पश्चिमी मिडलान्ड\"\n\n#: gb/gb_regions.py:48\nmsgid \"West Sussex\"\nmsgstr \"पश्चिमी ससेक्स\"\n\n#: gb/gb_regions.py:49\nmsgid \"West Yorkshire\"\nmsgstr \"पश्चिमी यार्कशायर\"\n\n#: gb/gb_regions.py:50\nmsgid \"Wiltshire\"\nmsgstr \"विल्टशायर\"\n\n#: gb/gb_regions.py:51\nmsgid \"Worcestershire\"\nmsgstr \"वर्सेस्टशायर\"\n\n#: gb/gb_regions.py:55\nmsgid \"County Antrim\"\nmsgstr \"कौन्टी आन्ट्रिम\"\n\n#: gb/gb_regions.py:56\nmsgid \"County Armagh\"\nmsgstr \"कौन्टी आर्माघ\"\n\n#: gb/gb_regions.py:57\nmsgid \"County Down\"\nmsgstr \"कौन्टी डौन\"\n\n#: gb/gb_regions.py:58\nmsgid \"County Fermanagh\"\nmsgstr \"कौन्टी फर्मानाघ\"\n\n#: gb/gb_regions.py:59\nmsgid \"County Londonderry\"\nmsgstr \"कौन्टी लन्डनडेर्री\"\n\n#: gb/gb_regions.py:60\nmsgid \"County Tyrone\"\nmsgstr \"कौन्टी टैरोन\"\n\n#: gb/gb_regions.py:64\nmsgid \"Clwyd\"\nmsgstr \"लिविड\"\n\n#: gb/gb_regions.py:65\nmsgid \"Dyfed\"\nmsgstr \"डैफेड\"\n\n#: gb/gb_regions.py:66\nmsgid \"Gwent\"\nmsgstr \"ग्वेन्ट\"\n\n#: gb/gb_regions.py:67\nmsgid \"Gwynedd\"\nmsgstr \"ग्वैनीड\"\n\n#: gb/gb_regions.py:68\nmsgid \"Mid Glamorgan\"\nmsgstr \"मिड ग्लामोर्गान\"\n\n#: gb/gb_regions.py:69\nmsgid \"Powys\"\nmsgstr \"पोवीस\"\n\n#: gb/gb_regions.py:70\nmsgid \"South Glamorgan\"\nmsgstr \"दक्षिणी ग्लामोर्गान\"\n\n#: gb/gb_regions.py:71\nmsgid \"West Glamorgan\"\nmsgstr \"पश्चिमी ग्लामोर्गान\"\n\n#: gb/gb_regions.py:75\nmsgid \"Borders\"\nmsgstr \"बोर्डार्स\"\n\n#: gb/gb_regions.py:76\nmsgid \"Central Scotland\"\nmsgstr \"सेंट्रल स्काटलान्ड\"\n\n#: gb/gb_regions.py:77\nmsgid \"Dumfries and Galloway\"\nmsgstr \"डमफ्रैस और गालोवे\"\n\n#: gb/gb_regions.py:78\nmsgid \"Fife\"\nmsgstr \"फिफे\"\n\n#: gb/gb_regions.py:79\nmsgid \"Grampian\"\nmsgstr \"ग्राम्पियेन\"\n\n#: gb/gb_regions.py:80\nmsgid \"Highland\"\nmsgstr \"हैलान्ड\"\n\n#: gb/gb_regions.py:81\nmsgid \"Lothian\"\nmsgstr \"लोथियन\"\n\n#: gb/gb_regions.py:82\nmsgid \"Orkney Islands\"\nmsgstr \"ओर्कनी द्वीप\"\n\n#: gb/gb_regions.py:83\nmsgid \"Shetland Islands\"\nmsgstr \"शेटलान्ड द्वीप\"\n\n#: gb/gb_regions.py:84\nmsgid \"Strathclyde\"\nmsgstr \"स्ट्राथक्लैड\"\n\n#: gb/gb_regions.py:85\nmsgid \"Tayside\"\nmsgstr \"टेसैड\"\n\n#: gb/gb_regions.py:86\nmsgid \"Western Isles\"\nmsgstr \"पश्चिमी आय्लस\"\n\n#: gb/gb_regions.py:90\nmsgid \"England\"\nmsgstr \"इन्गलान्ड\"\n\n#: gb/gb_regions.py:91\nmsgid \"Northern Ireland\"\nmsgstr \"उत्तरी आयरलान्ड\"\n\n#: gb/gb_regions.py:92\nmsgid \"Scotland\"\nmsgstr \"स्काटलान्ड\"\n\n#: gb/gb_regions.py:93\nmsgid \"Wales\"\nmsgstr \"वेल्स\"\n\n#: hk/forms.py:37\n#, python-format\nmsgid \"Phone number should not start with one of the followings: %s.\"\nmsgstr \"दूरभाष इनमें से किसी से शुरू नहीं हो सकता - %s।\"\n\n#: hk/forms.py:40\n#, python-format\nmsgid \"Phone number must be in one of the following formats: %s.\"\nmsgstr \"दूरभाष इनमें से किसी एक प्रारूप में होना चाहिए - %s।\"\n\n#: hk/forms.py:42\n#, python-format\nmsgid \"Phone number should start with one of the followings: %s.\"\nmsgstr \"दूरभाष इनमें से किसी एक से शुरू होना चाहिए - %s।\"\n\n#: hr/forms.py:76\nmsgid \"Enter a valid 13 digit JMBG\"\nmsgstr \"वैध 13 अंक JMBG दर्ज करें\"\n\n#: hr/forms.py:77\nmsgid \"Error in date segment\"\nmsgstr \"तारीख खंड में त्रुटि\"\n\n#: hr/forms.py:123\nmsgid \"Enter a valid 11 digit OIB\"\nmsgstr \"वैध 11 अंकीय OIB दर्ज करें\"\n\n#: hr/forms.py:152 id/forms.py:112\nmsgid \"Enter a valid vehicle license plate number\"\nmsgstr \"वैध वाहन के लाइसेंस प्लेट संख्या दर्ज करें\"\n\n#: hr/forms.py:153\nmsgid \"Enter a valid location code\"\nmsgstr \"वैध स्थान कोड दर्ज करें\"\n\n#: hr/forms.py:154\nmsgid \"Number part cannot be zero\"\nmsgstr \"संख्या हिस्सा शून्य नहीं हो सकते है \"\n\n#: hr/forms.py:190\nmsgid \"Enter a valid 5 digit postal code\"\nmsgstr \"वैध 5 अंक का डाक कोड दर्ज करें\"\n\n#: hr/forms.py:218 id/forms.py:72 nl/forms.py:56\nmsgid \"Enter a valid phone number\"\nmsgstr \"मान्य टेलिफोन संख्या भरें\"\n\n#: hr/forms.py:219\nmsgid \"Enter a valid area or mobile network code\"\nmsgstr \"मान्य क्षेत्र या मोबाइल नेटवर्क कोड दर्ज करें\"\n\n#: hr/forms.py:220\nmsgid \"The phone nubmer is too long\"\nmsgstr \"फोन नंबर बहुत लंबा है\"\n\n#: hr/forms.py:258\nmsgid \"Enter a valid 19 digit JMBAG starting with 601983\"\nmsgstr \"मान्य 19 अंकीय JMBAG जो 601,983 के साथ शुरू हो दर्ज करें\"\n\n#: hr/forms.py:259\nmsgid \"Card issue number cannot be zero\"\nmsgstr \"कार्ड जारी संख्या शून्य नहीं हो सकते है\"\n\n#: hr/hr_choices.py:14\nmsgid \"Grad Zagreb\"\nmsgstr \"ग्रद ज़ाग्रेब\"\n\n#: hr/hr_choices.py:15\nmsgid \"Bjelovarsko-bilogorska županija\"\nmsgstr \"ब्जेलोवार्सको-बिलोगोर्सका जुपानिजा \"\n\n#: hr/hr_choices.py:16\nmsgid \"Brodsko-posavska županija\"\nmsgstr \"ब्रोद्सको-पोसव्सका जुपानिजा\"\n\n#: hr/hr_choices.py:17\nmsgid \"Dubrovačko-neretvanska županija\"\nmsgstr \"दुब्रोवाच्को-नेरेत्वन्सका जुपानिजा\"\n\n#: hr/hr_choices.py:18\nmsgid \"Istarska županija\"\nmsgstr \"इस्तार्सका जुपानिजा\"\n\n#: hr/hr_choices.py:19\nmsgid \"Karlovačka županija\"\nmsgstr \"कर्लोवाच्का जुपानिजा\"\n\n#: hr/hr_choices.py:20\nmsgid \"Koprivničko-križevačka županija\"\nmsgstr \"कोप्रिव्निच्को-क्रिज़ेवाच्का जुपानिजा\"\n\n#: hr/hr_choices.py:21\nmsgid \"Krapinsko-zagorska županija\"\nmsgstr \"क्रपिन्सको-ज़गोर्सका जुपानिजा\"\n\n#: hr/hr_choices.py:22\nmsgid \"Ličko-senjska županija\"\nmsgstr \"लिच्को-सेंज्सका जुपानिजा\"\n\n#: hr/hr_choices.py:23\nmsgid \"Međimurska županija\"\nmsgstr \"मेदिमुर्सका जुपानिजा\"\n\n#: hr/hr_choices.py:24\nmsgid \"Osječko-baranjska županija\"\nmsgstr \"ओस्जेच्को-बरंज्सका जुपानिजा\"\n\n#: hr/hr_choices.py:25\nmsgid \"Požeško-slavonska županija\"\nmsgstr \"पोज़ेसको-स्लावोंसका जुपानिजा\"\n\n#: hr/hr_choices.py:26\nmsgid \"Primorsko-goranska županija\"\nmsgstr \"प्रिमोर्सको-गोरंसका जुपानिजा \"\n\n#: hr/hr_choices.py:27\nmsgid \"Sisačko-moslavačka županija\"\nmsgstr \"सिसच्को-मोस्लावाच्का जुपानिजा\"\n\n#: hr/hr_choices.py:28\nmsgid \"Splitsko-dalmatinska županija\"\nmsgstr \"स्प्लित्सको-दल्मातिन्सका जुपानिजा\"\n\n#: hr/hr_choices.py:29\nmsgid \"Šibensko-kninska županija\"\nmsgstr \"सिबेंसको-क्निन्सका जुपानिजा\"\n\n#: hr/hr_choices.py:30\nmsgid \"Varaždinska županija\"\nmsgstr \"वरज्दिन्सका जुपानिजा\"\n\n#: hr/hr_choices.py:31\nmsgid \"Virovitičko-podravska županija\"\nmsgstr \"विरोवितिच्को-पोद्रव्सका जुपानिजा\"\n\n#: hr/hr_choices.py:32\nmsgid \"Vukovarsko-srijemska županija\"\nmsgstr \"वुकोवार्सको-सृजेम्सका जुपानिजा \"\n\n#: hr/hr_choices.py:33\nmsgid \"Zadarska županija\"\nmsgstr \"ज़दार्सका जुपानिजा\"\n\n#: hr/hr_choices.py:34\nmsgid \"Zagrebačka županija\"\nmsgstr \"ज़ग्रेबच्का जुपानिजा\"\n\n#: id/forms.py:31\nmsgid \"Enter a valid post code\"\nmsgstr \"मान्य डाक कोड दर्ज करें\"\n\n#: id/forms.py:176\nmsgid \"Enter a valid NIK/KTP number\"\nmsgstr \"वैध निक/KTP संख्या दर्ज करें\"\n\n#: id/id_choices.py:15\nmsgid \"Aceh\"\nmsgstr \"आचे\"\n\n#: id/id_choices.py:16 id/id_choices.py:79\nmsgid \"Bali\"\nmsgstr \"बाली\"\n\n#: id/id_choices.py:17 id/id_choices.py:51\nmsgid \"Banten\"\nmsgstr \"बेंटन\"\n\n#: id/id_choices.py:18 id/id_choices.py:60\nmsgid \"Bengkulu\"\nmsgstr \"बेंग्कुलु\"\n\n#: id/id_choices.py:19 id/id_choices.py:53\nmsgid \"Yogyakarta\"\nmsgstr \"योग्याकार्ता\"\n\n#: id/id_choices.py:20 id/id_choices.py:57\nmsgid \"Jakarta\"\nmsgstr \"जकार्ता\"\n\n#: id/id_choices.py:21 id/id_choices.py:81\nmsgid \"Gorontalo\"\nmsgstr \"गोरोंटलो\"\n\n#: id/id_choices.py:22 id/id_choices.py:63\nmsgid \"Jambi\"\nmsgstr \"जाम्बी \"\n\n#: id/id_choices.py:23\nmsgid \"Jawa Barat\"\nmsgstr \"जावा बारत\"\n\n#: id/id_choices.py:24\nmsgid \"Jawa Tengah\"\nmsgstr \"जावा तेंगाह\"\n\n#: id/id_choices.py:25\nmsgid \"Jawa Timur\"\nmsgstr \"जावा तिमुर\"\n\n#: id/id_choices.py:26 id/id_choices.py:94\nmsgid \"Kalimantan Barat\"\nmsgstr \"कालीमंतन बैरेट\"\n\n#: id/id_choices.py:27 id/id_choices.py:72\nmsgid \"Kalimantan Selatan\"\nmsgstr \"कालीमंतन सेलातान\"\n\n#: id/id_choices.py:28 id/id_choices.py:95\nmsgid \"Kalimantan Tengah\"\nmsgstr \"कालीमंतन तेंगाह \"\n\n#: id/id_choices.py:29 id/id_choices.py:96\nmsgid \"Kalimantan Timur\"\nmsgstr \"कालीमंतन तिमुर \"\n\n#: id/id_choices.py:30\nmsgid \"Kepulauan Bangka-Belitung\"\nmsgstr \"केपुलौँ बंगका-बेलितुंग \"\n\n#: id/id_choices.py:31 id/id_choices.py:68\nmsgid \"Kepulauan Riau\"\nmsgstr \"केपुलौँ  इऔ  \"\n\n#: id/id_choices.py:32 id/id_choices.py:61\nmsgid \"Lampung\"\nmsgstr \"लम्पुंग\"\n\n#: id/id_choices.py:33 id/id_choices.py:76\nmsgid \"Maluku\"\nmsgstr \"मालुकु  \"\n\n#: id/id_choices.py:34 id/id_choices.py:77\nmsgid \"Maluku Utara\"\nmsgstr \"मालुकु उतरा \"\n\n#: id/id_choices.py:35\nmsgid \"Nusa Tenggara Barat\"\nmsgstr \"नुसा तेंग्गारा बारात \"\n\n#: id/id_choices.py:36\nmsgid \"Nusa Tenggara Timur\"\nmsgstr \"नुसा तेंग्गारा तिमुर \"\n\n#: id/id_choices.py:37\nmsgid \"Papua\"\nmsgstr \"पापुआ \"\n\n#: id/id_choices.py:38\nmsgid \"Papua Barat\"\nmsgstr \"पापुआ बारात \"\n\n#: id/id_choices.py:39 id/id_choices.py:66\nmsgid \"Riau\"\nmsgstr \" इऔ\"\n\n#: id/id_choices.py:40 id/id_choices.py:74\nmsgid \"Sulawesi Barat\"\nmsgstr \"सुलावेसी बारात \"\n\n#: id/id_choices.py:41 id/id_choices.py:75\nmsgid \"Sulawesi Selatan\"\nmsgstr \"सुलावेसी सलतन \"\n\n#: id/id_choices.py:42 id/id_choices.py:82\nmsgid \"Sulawesi Tengah\"\nmsgstr \"सुलावेसी तेंगाह \"\n\n#: id/id_choices.py:43 id/id_choices.py:85\nmsgid \"Sulawesi Tenggara\"\nmsgstr \"सुलावेसी तेंग्गारा \"\n\n#: id/id_choices.py:44\nmsgid \"Sulawesi Utara\"\nmsgstr \"सुलावेसी उतरा \"\n\n#: id/id_choices.py:45 id/id_choices.py:58\nmsgid \"Sumatera Barat\"\nmsgstr \"सुमतेरा बारात \"\n\n#: id/id_choices.py:46 id/id_choices.py:62\nmsgid \"Sumatera Selatan\"\nmsgstr \"सुमतेरा सलतन \"\n\n#: id/id_choices.py:47 id/id_choices.py:64\nmsgid \"Sumatera Utara\"\nmsgstr \"सुमतेरा उतरा \"\n\n#: id/id_choices.py:52\nmsgid \"Magelang\"\nmsgstr \"मगेलंग \"\n\n#: id/id_choices.py:54\nmsgid \"Surakarta - Solo\"\nmsgstr \"सुरकर्ता-सोलो \"\n\n#: id/id_choices.py:55\nmsgid \"Madiun\"\nmsgstr \"मदिउन\"\n\n#: id/id_choices.py:56\nmsgid \"Kediri\"\nmsgstr \"केदिरी \"\n\n#: id/id_choices.py:59\nmsgid \"Tapanuli\"\nmsgstr \"तपनुली \"\n\n#: id/id_choices.py:65\nmsgid \"Nanggroe Aceh Darussalam\"\nmsgstr \"नंग्ग्रोए असह दारुस्सलाम \"\n\n#: id/id_choices.py:67\nmsgid \"Kepulauan Bangka Belitung\"\nmsgstr \"केपुलौँ बंगका बेलितुंग \"\n\n#: id/id_choices.py:69\nmsgid \"Corps Consulate\"\nmsgstr \"वाहिनी दूतावास\"\n\n#: id/id_choices.py:70\nmsgid \"Corps Diplomatic\"\nmsgstr \"राजनयिक कोर\"\n\n#: id/id_choices.py:71\nmsgid \"Bandung\"\nmsgstr \"बैंडुंग\"\n\n#: id/id_choices.py:73\nmsgid \"Sulawesi Utara Daratan\"\nmsgstr \"सुलावेसी उतरा दरतन \"\n\n#: id/id_choices.py:78\nmsgid \"NTT - Timor\"\nmsgstr \"NTT - तिमोर\"\n\n#: id/id_choices.py:80\nmsgid \"Sulawesi Utara Kepulauan\"\nmsgstr \"सुलावेसी उतरा केपुलौँ \"\n\n#: id/id_choices.py:83\nmsgid \"NTB - Lombok\"\nmsgstr \"NTB -लोम्बोक \"\n\n#: id/id_choices.py:84\nmsgid \"Papua dan Papua Barat\"\nmsgstr \"पापुआ दान पापुआ बारात \"\n\n#: id/id_choices.py:86\nmsgid \"Cirebon\"\nmsgstr \"सिरेबों \"\n\n#: id/id_choices.py:87\nmsgid \"NTB - Sumbawa\"\nmsgstr \"NTB - सुम्बावा\"\n\n#: id/id_choices.py:88\nmsgid \"NTT - Flores\"\nmsgstr \"NTT - फ्लोरेस\"\n\n#: id/id_choices.py:89\nmsgid \"NTT - Sumba\"\nmsgstr \"NTT-सुम्बा \"\n\n#: id/id_choices.py:90\nmsgid \"Bogor\"\nmsgstr \"बोगोर\"\n\n#: id/id_choices.py:91\nmsgid \"Pekalongan\"\nmsgstr \"पेकलोंगन \"\n\n#: id/id_choices.py:92\nmsgid \"Semarang\"\nmsgstr \"सेमारंग \"\n\n#: id/id_choices.py:93\nmsgid \"Pati\"\nmsgstr \"पति\"\n\n#: id/id_choices.py:97\nmsgid \"Surabaya\"\nmsgstr \"सुराबाया \"\n\n#: id/id_choices.py:98\nmsgid \"Madura\"\nmsgstr \"मदुरा \"\n\n#: id/id_choices.py:99\nmsgid \"Malang\"\nmsgstr \"मलंग \"\n\n#: id/id_choices.py:100\nmsgid \"Jember\"\nmsgstr \"जेम्बेर \"\n\n#: id/id_choices.py:101\nmsgid \"Banyumas\"\nmsgstr \"बन्युमस \"\n\n#: id/id_choices.py:102\nmsgid \"Federal Government\"\nmsgstr \"संघीय सरकार\"\n\n#: id/id_choices.py:103\nmsgid \"Bojonegoro\"\nmsgstr \"बोजोनेगोरो \"\n\n#: id/id_choices.py:104\nmsgid \"Purwakarta\"\nmsgstr \"पुर्वाकर्ता \"\n\n#: id/id_choices.py:105\nmsgid \"Sidoarjo\"\nmsgstr \"सिदोअर्जो \"\n\n#: id/id_choices.py:106\nmsgid \"Garut\"\nmsgstr \"गृत \"\n\n#: ie/ie_counties.py:8\nmsgid \"Antrim\"\nmsgstr \"आन्ट्रिम\"\n\n#: ie/ie_counties.py:9\nmsgid \"Armagh\"\nmsgstr \"आर्माघ\"\n\n#: ie/ie_counties.py:10\nmsgid \"Carlow\"\nmsgstr \"कार्लो\"\n\n#: ie/ie_counties.py:11\nmsgid \"Cavan\"\nmsgstr \"कैवन\"\n\n#: ie/ie_counties.py:12\nmsgid \"Clare\"\nmsgstr \"क्लेयर\"\n\n#: ie/ie_counties.py:13\nmsgid \"Cork\"\nmsgstr \"कॉर्क\"\n\n#: ie/ie_counties.py:14\nmsgid \"Derry\"\nmsgstr \"डेरी\"\n\n#: ie/ie_counties.py:15\nmsgid \"Donegal\"\nmsgstr \"डोनेगल\"\n\n#: ie/ie_counties.py:16\nmsgid \"Down\"\nmsgstr \"नीचे\"\n\n#: ie/ie_counties.py:17\nmsgid \"Dublin\"\nmsgstr \"डबलिन\"\n\n#: ie/ie_counties.py:18\nmsgid \"Fermanagh\"\nmsgstr \"फर्मानाघ\"\n\n#: ie/ie_counties.py:19\nmsgid \"Galway\"\nmsgstr \"गैल्वे\"\n\n#: ie/ie_counties.py:20\nmsgid \"Kerry\"\nmsgstr \"केरी\"\n\n#: ie/ie_counties.py:21\nmsgid \"Kildare\"\nmsgstr \"किल्दारे \"\n\n#: ie/ie_counties.py:22\nmsgid \"Kilkenny\"\nmsgstr \"किल्केंन्य\"\n\n#: ie/ie_counties.py:23\nmsgid \"Laois\"\nmsgstr \"लोइस \"\n\n#: ie/ie_counties.py:24\nmsgid \"Leitrim\"\nmsgstr \"लेइत्रिम \"\n\n#: ie/ie_counties.py:25\nmsgid \"Limerick\"\nmsgstr \"लिमेरिच्क \"\n\n#: ie/ie_counties.py:26\nmsgid \"Longford\"\nmsgstr \"लोंग्फोर्ड \"\n\n#: ie/ie_counties.py:27\nmsgid \"Louth\"\nmsgstr \"लौट \"\n\n#: ie/ie_counties.py:28\nmsgid \"Mayo\"\nmsgstr \"मैयो\"\n\n#: ie/ie_counties.py:29\nmsgid \"Meath\"\nmsgstr \"माथ \"\n\n#: ie/ie_counties.py:30\nmsgid \"Monaghan\"\nmsgstr \"मोनाघन \"\n\n#: ie/ie_counties.py:31\nmsgid \"Offaly\"\nmsgstr \"ओफ्फली \"\n\n#: ie/ie_counties.py:32\nmsgid \"Roscommon\"\nmsgstr \"रोस्कोम्मों \"\n\n#: ie/ie_counties.py:33\nmsgid \"Sligo\"\nmsgstr \"स्लीगो \"\n\n#: ie/ie_counties.py:34\nmsgid \"Tipperary\"\nmsgstr \"टिप्पेरारी \"\n\n#: ie/ie_counties.py:35\nmsgid \"Tyrone\"\nmsgstr \"टैरोन\"\n\n#: ie/ie_counties.py:36\nmsgid \"Waterford\"\nmsgstr \"वातेर्फोर्ड \"\n\n#: ie/ie_counties.py:37\nmsgid \"Westmeath\"\nmsgstr \"वेस्त्माथ \"\n\n#: ie/ie_counties.py:38\nmsgid \"Wexford\"\nmsgstr \"वेक्सफोर्ड \"\n\n#: ie/ie_counties.py:39\nmsgid \"Wicklow\"\nmsgstr \"विच्क्लो \"\n\n#: il/forms.py:32\nmsgid \"Enter a postal code in the format XXXXX\"\nmsgstr \"डाक संहिता को XXX XX प्रतिरूप में भरें\"\n\n#: il/forms.py:51\nmsgid \"Enter a valid ID number.\"\nmsgstr \" वैध आइ.डि संख्या भरें.\"\n\n#: in_/forms.py:41\nmsgid \"Enter a zip code in the format XXXXXX or XXX XXX.\"\nmsgstr \"डाक संहिता को XXXXXX या XXX XXXके प्रतिरूप में दर्ज करें ।\"\n\n#: in_/forms.py:64\nmsgid \"Enter an Indian state or territory.\"\nmsgstr \"भारतीय राज्य या क्षेत्र दर्ज करें.\"\n\n#: in_/forms.py:103\nmsgid \"Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.\"\nmsgstr \"फोन नंबर  02X-8X या 03X-7X या 04X-6Xप्रारूप में होना चाहिए है.\"\n\n#: is_/forms.py:22\nmsgid \"\"\n\"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.\"\nmsgstr \"मान्य आइस्लान्डिक पहचान संख्या भरें । उसका प्रतिरूप XXXXXX-XXXX है ।\"\n\n#: is_/forms.py:23\nmsgid \"The Icelandic identification number is not valid.\"\nmsgstr \"यह आइस्लान्डिक पहचान संख्या अमान्य है ।\"\n\n#: it/forms.py:21\nmsgid \"Enter a valid zip code.\"\nmsgstr \"मान्य डाक संहिता भरें ।\"\n\n#: it/forms.py:48\nmsgid \"Enter a valid Social Security number.\"\nmsgstr \"मान्य सोशल सेक्यूरिटी संख्या भरें ।\"\n\n#: it/forms.py:73\nmsgid \"Enter a valid VAT number.\"\nmsgstr \"मान्य VAT संख्या भरें ।\"\n\n#: jp/forms.py:19\nmsgid \"Enter a postal code in the format XXXXXXX or XXX-XXXX.\"\nmsgstr \"डाक संहिता को XXXXXXX or XXX-XXXX प्रतिरूप में भरें ।\"\n\n#: jp/jp_prefectures.py:4\nmsgid \"Hokkaido\"\nmsgstr \"होक्कायिडो\"\n\n#: jp/jp_prefectures.py:5\nmsgid \"Aomori\"\nmsgstr \"औमोरी\"\n\n#: jp/jp_prefectures.py:6\nmsgid \"Iwate\"\nmsgstr \"इवाटे\"\n\n#: jp/jp_prefectures.py:7\nmsgid \"Miyagi\"\nmsgstr \"मियागी\"\n\n#: jp/jp_prefectures.py:8\nmsgid \"Akita\"\nmsgstr \"अकीटा\"\n\n#: jp/jp_prefectures.py:9\nmsgid \"Yamagata\"\nmsgstr \"यमागाटा\"\n\n#: jp/jp_prefectures.py:10\nmsgid \"Fukushima\"\nmsgstr \"फुकुशीमा\"\n\n#: jp/jp_prefectures.py:11\nmsgid \"Ibaraki\"\nmsgstr \"इबाराकी\"\n\n#: jp/jp_prefectures.py:12\nmsgid \"Tochigi\"\nmsgstr \"तोचिगी\"\n\n#: jp/jp_prefectures.py:13\nmsgid \"Gunma\"\nmsgstr \"गन्मा\"\n\n#: jp/jp_prefectures.py:14\nmsgid \"Saitama\"\nmsgstr \"सैतामा\"\n\n#: jp/jp_prefectures.py:15\nmsgid \"Chiba\"\nmsgstr \"चीबा\"\n\n#: jp/jp_prefectures.py:16\nmsgid \"Tokyo\"\nmsgstr \"टोकियो\"\n\n#: jp/jp_prefectures.py:17\nmsgid \"Kanagawa\"\nmsgstr \"कनगावा\"\n\n#: jp/jp_prefectures.py:18\nmsgid \"Yamanashi\"\nmsgstr \"यमनाशी\"\n\n#: jp/jp_prefectures.py:19\nmsgid \"Nagano\"\nmsgstr \"नगानो\"\n\n#: jp/jp_prefectures.py:20\nmsgid \"Niigata\"\nmsgstr \"नीगाटा\"\n\n#: jp/jp_prefectures.py:21\nmsgid \"Toyama\"\nmsgstr \"तोयामा\"\n\n#: jp/jp_prefectures.py:22\nmsgid \"Ishikawa\"\nmsgstr \"इशीकावा\"\n\n#: jp/jp_prefectures.py:23\nmsgid \"Fukui\"\nmsgstr \"फुकुयी\"\n\n#: jp/jp_prefectures.py:24\nmsgid \"Gifu\"\nmsgstr \"गिफू\"\n\n#: jp/jp_prefectures.py:25\nmsgid \"Shizuoka\"\nmsgstr \"शिजुकोवा\"\n\n#: jp/jp_prefectures.py:26\nmsgid \"Aichi\"\nmsgstr \"ऐची\"\n\n#: jp/jp_prefectures.py:27\nmsgid \"Mie\"\nmsgstr \"मी\"\n\n#: jp/jp_prefectures.py:28\nmsgid \"Shiga\"\nmsgstr \"शिगा\"\n\n#: jp/jp_prefectures.py:29\nmsgid \"Kyoto\"\nmsgstr \"क्योटो\"\n\n#: jp/jp_prefectures.py:30\nmsgid \"Osaka\"\nmsgstr \"ओसाका\"\n\n#: jp/jp_prefectures.py:31\nmsgid \"Hyogo\"\nmsgstr \"ह्योगो\"\n\n#: jp/jp_prefectures.py:32\nmsgid \"Nara\"\nmsgstr \"नारा\"\n\n#: jp/jp_prefectures.py:33\nmsgid \"Wakayama\"\nmsgstr \"वकायामा\"\n\n#: jp/jp_prefectures.py:34\nmsgid \"Tottori\"\nmsgstr \"टोत्तोरी\"\n\n#: jp/jp_prefectures.py:35\nmsgid \"Shimane\"\nmsgstr \"शिमाने\"\n\n#: jp/jp_prefectures.py:36\nmsgid \"Okayama\"\nmsgstr \"ओकयामा\"\n\n#: jp/jp_prefectures.py:37\nmsgid \"Hiroshima\"\nmsgstr \"हिरोशीमा\"\n\n#: jp/jp_prefectures.py:38\nmsgid \"Yamaguchi\"\nmsgstr \"यामागुची\"\n\n#: jp/jp_prefectures.py:39\nmsgid \"Tokushima\"\nmsgstr \"टोकुशीमा\"\n\n#: jp/jp_prefectures.py:40\nmsgid \"Kagawa\"\nmsgstr \"कगावा\"\n\n#: jp/jp_prefectures.py:41\nmsgid \"Ehime\"\nmsgstr \"एहीमे\"\n\n#: jp/jp_prefectures.py:42\nmsgid \"Kochi\"\nmsgstr \"कोची\"\n\n#: jp/jp_prefectures.py:43\nmsgid \"Fukuoka\"\nmsgstr \"फुकुवोका\"\n\n#: jp/jp_prefectures.py:44\nmsgid \"Saga\"\nmsgstr \"सागा\"\n\n#: jp/jp_prefectures.py:45\nmsgid \"Nagasaki\"\nmsgstr \"नागासाकी\"\n\n#: jp/jp_prefectures.py:46\nmsgid \"Kumamoto\"\nmsgstr \"कुमामोटो\"\n\n#: jp/jp_prefectures.py:47\nmsgid \"Oita\"\nmsgstr \"ओइटा\"\n\n#: jp/jp_prefectures.py:48\nmsgid \"Miyazaki\"\nmsgstr \"मियाजाकी\"\n\n#: jp/jp_prefectures.py:49\nmsgid \"Kagoshima\"\nmsgstr \"कागोशीमा\"\n\n#: jp/jp_prefectures.py:50\nmsgid \"Okinawa\"\nmsgstr \"ओकिनावा\"\n\n#: kw/forms.py:27\nmsgid \"Enter a valid Kuwaiti Civil ID number\"\nmsgstr \"मान्य कुवैती नागरिक ID संख्या दर्ज करें\"\n\n#: mk/forms.py:18\nmsgid \"\"\n\"Identity card numbers must contain either 4 to 7 digits or an uppercase \"\n\"letter and 7 digits.\"\nmsgstr \"\"\n\"पहचान कार्ड नंबर या तो 4 से 7 अंक या एक अपरकेस अक्षर और 7 अंको  का होना चाहिए.\"\n\n#: mk/forms.py:57 si/forms.py:24\nmsgid \"This field should contain exactly 13 digits.\"\nmsgstr \"इस क्षेत्र में वास्तव में 13 अंक होने चाहिए.\"\n\n#: mk/forms.py:58\nmsgid \"The first 7 digits of the UMCN must represent a valid past date.\"\nmsgstr \"UMCN के पहले 7 अंकों एक मान्य पिछले तारीख का प्रतिनिधित्व करना चाहिए.\"\n\n#: mk/forms.py:59\nmsgid \"The UMCN is not valid.\"\nmsgstr \"UMCN मान्य नहीं है.\"\n\n#: mk/mk_choices.py:10\nmsgid \"Aerodrom\"\nmsgstr \"एरोड्रोम\"\n\n#: mk/mk_choices.py:11\nmsgid \"Aračinovo\"\nmsgstr \"अरसिनोवो  \"\n\n#: mk/mk_choices.py:12\nmsgid \"Berovo\"\nmsgstr \"बेरोवो \"\n\n#: mk/mk_choices.py:13\nmsgid \"Bitola\"\nmsgstr \"बितोला \"\n\n#: mk/mk_choices.py:14\nmsgid \"Bogdanci\"\nmsgstr \"बोग्दंची \"\n\n#: mk/mk_choices.py:15\nmsgid \"Bogovinje\"\nmsgstr \"बोगोविन्जे \"\n\n#: mk/mk_choices.py:16\nmsgid \"Bosilovo\"\nmsgstr \"बोसिलोवो \"\n\n#: mk/mk_choices.py:17\nmsgid \"Brvenica\"\nmsgstr \"ब्र्वेनिचा \"\n\n#: mk/mk_choices.py:18\nmsgid \"Butel\"\nmsgstr \"बुटेल \"\n\n#: mk/mk_choices.py:19\nmsgid \"Valandovo\"\nmsgstr \"वलान्दोवो \"\n\n#: mk/mk_choices.py:20\nmsgid \"Vasilevo\"\nmsgstr \"वसिलेवो \"\n\n#: mk/mk_choices.py:21\nmsgid \"Vevčani\"\nmsgstr \"वेव्कानी \"\n\n#: mk/mk_choices.py:22\nmsgid \"Veles\"\nmsgstr \"वेल्स \"\n\n#: mk/mk_choices.py:23\nmsgid \"Vinica\"\nmsgstr \"विनिचा \"\n\n#: mk/mk_choices.py:24\nmsgid \"Vraneštica\"\nmsgstr \"व्रनेस्तिचा  \"\n\n#: mk/mk_choices.py:25\nmsgid \"Vrapčište\"\nmsgstr \"व्रप्सिस्ते \"\n\n#: mk/mk_choices.py:26\nmsgid \"Gazi Baba\"\nmsgstr \"गाजी बाबा \"\n\n#: mk/mk_choices.py:27\nmsgid \"Gevgelija\"\nmsgstr \"गेव्गेलिजा \"\n\n#: mk/mk_choices.py:28\nmsgid \"Gostivar\"\nmsgstr \"गोस्तिवर \"\n\n#: mk/mk_choices.py:29\nmsgid \"Gradsko\"\nmsgstr \"ग्राद्सको \"\n\n#: mk/mk_choices.py:30\nmsgid \"Debar\"\nmsgstr \"देबर \"\n\n#: mk/mk_choices.py:31\nmsgid \"Debarca\"\nmsgstr \"देबर्चा \"\n\n#: mk/mk_choices.py:32\nmsgid \"Delčevo\"\nmsgstr \"देल्सवो \"\n\n#: mk/mk_choices.py:33\nmsgid \"Demir Kapija\"\nmsgstr \"देमिर कपिजा  \"\n\n#: mk/mk_choices.py:34\nmsgid \"Demir Hisar\"\nmsgstr \"देमिर हिसार \"\n\n#: mk/mk_choices.py:35\nmsgid \"Dolneni\"\nmsgstr \"दोल्नेनी \"\n\n#: mk/mk_choices.py:36\nmsgid \"Drugovo\"\nmsgstr \"दृगोवो \"\n\n#: mk/mk_choices.py:37\nmsgid \"Gjorče Petrov\"\nmsgstr \"ग्जोर्चे पेत्रोव \"\n\n#: mk/mk_choices.py:38\nmsgid \"Želino\"\nmsgstr \"ज़ेलिनो \"\n\n#: mk/mk_choices.py:39\nmsgid \"Zajas\"\nmsgstr \"ज़जास  \"\n\n#: mk/mk_choices.py:40\nmsgid \"Zelenikovo\"\nmsgstr \"ज़ेलेनिकोवो \"\n\n#: mk/mk_choices.py:41\nmsgid \"Zrnovci\"\nmsgstr \"ज्र्नोव्ची \"\n\n#: mk/mk_choices.py:42\nmsgid \"Ilinden\"\nmsgstr \"इलिंदें \"\n\n#: mk/mk_choices.py:43\nmsgid \"Jegunovce\"\nmsgstr \"जेगुनोव्स \"\n\n#: mk/mk_choices.py:44\nmsgid \"Kavadarci\"\nmsgstr \"कवदर्ची \"\n\n#: mk/mk_choices.py:45\nmsgid \"Karbinci\"\nmsgstr \"कर्बिंची \"\n\n#: mk/mk_choices.py:46\nmsgid \"Karpoš\"\nmsgstr \"कर्पोस \"\n\n#: mk/mk_choices.py:47\nmsgid \"Kisela Voda\"\nmsgstr \"किसेला वोडा \"\n\n#: mk/mk_choices.py:48\nmsgid \"Kičevo\"\nmsgstr \"किसवो \"\n\n#: mk/mk_choices.py:49\nmsgid \"Konče\"\nmsgstr \" कोंचे \"\n\n#: mk/mk_choices.py:50\nmsgid \"Koćani\"\nmsgstr \"कोकानी \"\n\n#: mk/mk_choices.py:51\nmsgid \"Kratovo\"\nmsgstr \"क्रतोवो \"\n\n#: mk/mk_choices.py:52\nmsgid \"Kriva Palanka\"\nmsgstr \"करिव पलंका \"\n\n#: mk/mk_choices.py:53\nmsgid \"Krivogaštani\"\nmsgstr \"क्रिवोगास्तानी \"\n\n#: mk/mk_choices.py:54\nmsgid \"Kruševo\"\nmsgstr \"कृसेवो \"\n\n#: mk/mk_choices.py:55\nmsgid \"Kumanovo\"\nmsgstr \"कुमनोवो \"\n\n#: mk/mk_choices.py:56\nmsgid \"Lipkovo\"\nmsgstr \"लिप्कोवो \"\n\n#: mk/mk_choices.py:57\nmsgid \"Lozovo\"\nmsgstr \"लोज़ोवो \"\n\n#: mk/mk_choices.py:58\nmsgid \"Mavrovo i Rostuša\"\nmsgstr \"मव्रोवो  इ  रोस्तुसा \"\n\n#: mk/mk_choices.py:59\nmsgid \"Makedonska Kamenica\"\nmsgstr \"मकेदोंसका कामेनीका  \"\n\n#: mk/mk_choices.py:60\nmsgid \"Makedonski Brod\"\nmsgstr \"मकेदोंसकी ब्रोड \"\n\n#: mk/mk_choices.py:61\nmsgid \"Mogila\"\nmsgstr \"मोगिला \"\n\n#: mk/mk_choices.py:62\nmsgid \"Negotino\"\nmsgstr \"नेगोतिनो \"\n\n#: mk/mk_choices.py:63\nmsgid \"Novaci\"\nmsgstr \"नोवाची \"\n\n#: mk/mk_choices.py:64\nmsgid \"Novo Selo\"\nmsgstr \"नोवो सेलो \"\n\n#: mk/mk_choices.py:65\nmsgid \"Oslomej\"\nmsgstr \"ओस्लोमेज \"\n\n#: mk/mk_choices.py:66\nmsgid \"Ohrid\"\nmsgstr \"ओहरिड\"\n\n#: mk/mk_choices.py:67\nmsgid \"Petrovec\"\nmsgstr \"पेट्रोवेक \"\n\n#: mk/mk_choices.py:68\nmsgid \"Pehčevo\"\nmsgstr \"पह्सवो \"\n\n#: mk/mk_choices.py:69\nmsgid \"Plasnica\"\nmsgstr \"प्लास्निचा \"\n\n#: mk/mk_choices.py:70\nmsgid \"Prilep\"\nmsgstr \"प्रिलेप \"\n\n#: mk/mk_choices.py:71\nmsgid \"Probištip\"\nmsgstr \"प्रोबिस्तिप \"\n\n#: mk/mk_choices.py:72\nmsgid \"Radoviš\"\nmsgstr \"रादोविस \"\n\n#: mk/mk_choices.py:73\nmsgid \"Rankovce\"\nmsgstr \"रंकोव्स \"\n\n#: mk/mk_choices.py:74\nmsgid \"Resen\"\nmsgstr \"रेसें \"\n\n#: mk/mk_choices.py:75\nmsgid \"Rosoman\"\nmsgstr \"रोसोमन \"\n\n#: mk/mk_choices.py:76\nmsgid \"Saraj\"\nmsgstr \"सरज  \"\n\n#: mk/mk_choices.py:77\nmsgid \"Sveti Nikole\"\nmsgstr \"स्वेती निकोले \"\n\n#: mk/mk_choices.py:78\nmsgid \"Sopište\"\nmsgstr \"सोपिस्ते \"\n\n#: mk/mk_choices.py:79\nmsgid \"Star Dojran\"\nmsgstr \"स्टार दोज्रण \"\n\n#: mk/mk_choices.py:80\nmsgid \"Staro Nagoričane\"\nmsgstr \"स्तरों नागोरिकाने \"\n\n#: mk/mk_choices.py:81\nmsgid \"Struga\"\nmsgstr \"स्त्रुगा \"\n\n#: mk/mk_choices.py:82\nmsgid \"Strumica\"\nmsgstr \"स्त्रुमिचा \"\n\n#: mk/mk_choices.py:83\nmsgid \"Studeničani\"\nmsgstr \"स्तुदेनिकानी \"\n\n#: mk/mk_choices.py:84\nmsgid \"Tearce\"\nmsgstr \"टारस \"\n\n#: mk/mk_choices.py:85\nmsgid \"Tetovo\"\nmsgstr \"तेतोवो \"\n\n#: mk/mk_choices.py:86\nmsgid \"Centar\"\nmsgstr \"सेंटर \"\n\n#: mk/mk_choices.py:87\nmsgid \"Centar-Župa\"\nmsgstr \"सेंटर-जुप \"\n\n#: mk/mk_choices.py:88\nmsgid \"Čair\"\nmsgstr \"सैर \"\n\n#: mk/mk_choices.py:89\nmsgid \"Čaška\"\nmsgstr \"केसका\"\n\n#: mk/mk_choices.py:90\nmsgid \"Češinovo-Obleševo\"\nmsgstr \"ससिनोवो-ओब्लेसेवो \"\n\n#: mk/mk_choices.py:91\nmsgid \"Čučer-Sandevo\"\nmsgstr \"कसर-संदेवो \"\n\n#: mk/mk_choices.py:92\nmsgid \"Štip\"\nmsgstr \"स्टिप \"\n\n#: mk/mk_choices.py:93\nmsgid \"Šuto Orizari\"\nmsgstr \"सुतो ओरिज़री \"\n\n#: mk/models.py:11\nmsgid \"Macedonian identity card number\"\nmsgstr \"मैसेडोनिया पहचान कार्ड संख्या\"\n\n#: mk/models.py:25\nmsgid \"A Macedonian municipality (2 character code)\"\nmsgstr \"मैसेडोनिया नगर पालिका (2 वर्ण कोड)\"\n\n#: mk/models.py:35\nmsgid \"Unique master citizen number (13 digits)\"\nmsgstr \"अनोखी मास्टर नागरिक संख्या (13 अंक)\"\n\n#: mx/forms.py:67\nmsgid \"Enter a valid zip code in the format XXXXX.\"\nmsgstr \"प्रारूप XXXXX में एक मान्य ज़िप कोड दर्ज करें.\"\n\n#: mx/forms.py:110\nmsgid \"Enter a valid RFC.\"\nmsgstr \"मान्य RFC दर्ज करें.\"\n\n#: mx/forms.py:111\nmsgid \"Invalid checksum for RFC.\"\nmsgstr \"RFC के लिए अमान्य जाँचयोग.\"\n\n#: mx/forms.py:191\nmsgid \"Enter a valid CURP.\"\nmsgstr \"मान्य CURP दर्ज करें.\"\n\n#: mx/forms.py:192\nmsgid \"Invalid checksum for CURP.\"\nmsgstr \"CURP के लिए अमान्य जाँचयोग.\"\n\n#: mx/models.py:14\nmsgid \"Mexico state (three uppercase letters)\"\nmsgstr \"मेक्सिको राज्य (तीन बड़े अक्षरों)\"\n\n#: mx/models.py:27\nmsgid \"Mexico zip code\"\nmsgstr \"मेक्सिको ज़िप कोड\"\n\n#: mx/models.py:44\nmsgid \"Mexican RFC\"\nmsgstr \"मेक्सिकन RFC\"\n\n#: mx/models.py:61\nmsgid \"Mexican CURP\"\nmsgstr \"मेक्सिकन CURP\"\n\n#: mx/mx_states.py:14\nmsgid \"Aguascalientes\"\nmsgstr \"अगुवास्कालियेन्टेस\"\n\n#: mx/mx_states.py:15\nmsgid \"Baja California\"\nmsgstr \"बाहा कालिफोर्निया\"\n\n#: mx/mx_states.py:16\nmsgid \"Baja California Sur\"\nmsgstr \"बाहा कालिफोर्निया सर\"\n\n#: mx/mx_states.py:17\nmsgid \"Campeche\"\nmsgstr \"कम्पीची\"\n\n#: mx/mx_states.py:18\nmsgid \"Chihuahua\"\nmsgstr \"चिहुआहुआ\"\n\n#: mx/mx_states.py:19\nmsgid \"Chiapas\"\nmsgstr \"चियापास\"\n\n#: mx/mx_states.py:20\nmsgid \"Coahuila\"\nmsgstr \"कोहुइला\"\n\n#: mx/mx_states.py:21\nmsgid \"Colima\"\nmsgstr \"कोलिमा\"\n\n#: mx/mx_states.py:22\nmsgid \"Distrito Federal\"\nmsgstr \"डिस्ट्रिटो फेड्रल\"\n\n#: mx/mx_states.py:23\nmsgid \"Durango\"\nmsgstr \"डुरान्गो\"\n\n#: mx/mx_states.py:24\nmsgid \"Guerrero\"\nmsgstr \"गुवेरेर्रो\"\n\n#: mx/mx_states.py:25\nmsgid \"Guanajuato\"\nmsgstr \"गुवानाजुवाटो\"\n\n#: mx/mx_states.py:26\nmsgid \"Hidalgo\"\nmsgstr \"हिडाल्गो\"\n\n#: mx/mx_states.py:27\nmsgid \"Jalisco\"\nmsgstr \"जलिस्को\"\n\n#: mx/mx_states.py:28\nmsgid \"Estado de México\"\nmsgstr \"एस्टादो द मेक्सिको\"\n\n#: mx/mx_states.py:29\nmsgid \"Michoacán\"\nmsgstr \"मिचोवाकान\"\n\n#: mx/mx_states.py:30\nmsgid \"Morelos\"\nmsgstr \"मोरेलोस\"\n\n#: mx/mx_states.py:31\nmsgid \"Nayarit\"\nmsgstr \"नायारिट\"\n\n#: mx/mx_states.py:32\nmsgid \"Nuevo León\"\nmsgstr \"नुवेवो लियोन\"\n\n#: mx/mx_states.py:33\nmsgid \"Oaxaca\"\nmsgstr \"ओक्साका\"\n\n#: mx/mx_states.py:34\nmsgid \"Puebla\"\nmsgstr \"पुवेब्ला\"\n\n#: mx/mx_states.py:35\nmsgid \"Querétaro\"\nmsgstr \"क्वेरेतारो\"\n\n#: mx/mx_states.py:36\nmsgid \"Quintana Roo\"\nmsgstr \"क्विन्ताना रू\"\n\n#: mx/mx_states.py:37\nmsgid \"Sinaloa\"\nmsgstr \"सिनालोवा\"\n\n#: mx/mx_states.py:38\nmsgid \"San Luis Potosí\"\nmsgstr \"सेन लुविस पोटोसि\"\n\n#: mx/mx_states.py:39\nmsgid \"Sonora\"\nmsgstr \"सोनोरा\"\n\n#: mx/mx_states.py:40\nmsgid \"Tabasco\"\nmsgstr \"टबास्को\"\n\n#: mx/mx_states.py:41\nmsgid \"Tamaulipas\"\nmsgstr \"टमौलिपास\"\n\n#: mx/mx_states.py:42\nmsgid \"Tlaxcala\"\nmsgstr \"लाक्सकाला\"\n\n#: mx/mx_states.py:43\nmsgid \"Veracruz\"\nmsgstr \"वेराक्रूज\"\n\n#: mx/mx_states.py:44\nmsgid \"Yucatán\"\nmsgstr \"युकाटान\"\n\n#: mx/mx_states.py:45\nmsgid \"Zacatecas\"\nmsgstr \"जकाटेकास\"\n\n#: nl/forms.py:26\nmsgid \"Enter a valid postal code\"\nmsgstr \"मान्य डाक संहिता भरें\"\n\n#: nl/forms.py:82\nmsgid \"Enter a valid SoFi number\"\nmsgstr \"मान्य SoFi संख्या भरें\"\n\n#: nl/nl_provinces.py:4\nmsgid \"Drenthe\"\nmsgstr \"ड्रेनथ\"\n\n#: nl/nl_provinces.py:5\nmsgid \"Flevoland\"\nmsgstr \"फ्लेवोलान्ड\"\n\n#: nl/nl_provinces.py:6\nmsgid \"Friesland\"\nmsgstr \"फ्रैस्लान्ड\"\n\n#: nl/nl_provinces.py:7\nmsgid \"Gelderland\"\nmsgstr \"जेल्डेर्लान्ड\"\n\n#: nl/nl_provinces.py:8\nmsgid \"Groningen\"\nmsgstr \"ग्रोनिजेन\"\n\n#: nl/nl_provinces.py:10\nmsgid \"Noord-Brabant\"\nmsgstr \"नूर्ड-ब्राबान्ट\"\n\n#: nl/nl_provinces.py:11\nmsgid \"Noord-Holland\"\nmsgstr \"नूर्ड-हालान्ड\"\n\n#: nl/nl_provinces.py:12\nmsgid \"Overijssel\"\nmsgstr \"ओवरिस्सेल\"\n\n#: nl/nl_provinces.py:13\nmsgid \"Utrecht\"\nmsgstr \"उट्रेक्क\"\n\n#: nl/nl_provinces.py:14\nmsgid \"Zeeland\"\nmsgstr \"जीलान्ड\"\n\n#: nl/nl_provinces.py:15\nmsgid \"Zuid-Holland\"\nmsgstr \"ज्वीड-हालान्ड\"\n\n#: no/forms.py:39\nmsgid \"Enter a valid Norwegian social security number.\"\nmsgstr \"मान्य नोर्वेजी सोशल सेक्यौरिटी संख्या भरें ।\"\n\n#: pe/forms.py:28\nmsgid \"This field requires 8 digits.\"\nmsgstr \"इस क्षेत्र में 8 अंक भरें ।\"\n\n#: pe/forms.py:56\nmsgid \"This field requires 11 digits.\"\nmsgstr \"इस क्षेंत्र में 11 अंक भरें ।\"\n\n#: pl/forms.py:42\nmsgid \"National Identification Number consists of 11 digits.\"\nmsgstr \"राष्ट्रीय पहचान संख्या में 11 अंक भरें ।\"\n\n#: pl/forms.py:43\nmsgid \"Wrong checksum for the National Identification Number.\"\nmsgstr \"राष्ट्रीय पहचान संख्या में गलत जाँच योग ।\"\n\n#: pl/forms.py:79\nmsgid \"National ID Card Number consists of 3 letters and 6 digits.\"\nmsgstr \"राष्ट्रीय आईडी कार्ड संख्या 3 अक्षरों और 6 अंकों के होते हैं.\"\n\n#: pl/forms.py:80\nmsgid \"Wrong checksum for the National ID Card Number.\"\nmsgstr \"राष्ट्रीय आईडी कार्ड संख्या के लिए गलत जाँचयोग.\"\n\n#: pl/forms.py:131\nmsgid \"\"\n\"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or \"\n\"XXXXXXXXXX.\"\nmsgstr \"\"\n\"कर संख्या क्षेत्र (NIP) को XXX-XXX-XX-XX, XXX-XX-XX-XXX अथवा   XXXXXXXXXX प्रतोरूप \"\n\"में भरें.\"\n\n#: pl/forms.py:132\nmsgid \"Wrong checksum for the Tax Number (NIP).\"\nmsgstr \"कर संख्या के लिए गलत जाँच योग ।\"\n\n#: pl/forms.py:171\nmsgid \"National Business Register Number (REGON) consists of 9 or 14 digits.\"\nmsgstr \"राष्ट्रीय व्यापार पंजीकरण संख्या (REGON) 9 या 14 अंक के होते हैं.\"\n\n#: pl/forms.py:172\nmsgid \"Wrong checksum for the National Business Register Number (REGON).\"\nmsgstr \"राष्ट्रीय व्यापार रजिस्टर संख्या (REGON) के लिए गलत चेकसम.\"\n\n#: pl/forms.py:212\nmsgid \"Enter a postal code in the format XX-XXX.\"\nmsgstr \"डाक संहिता को XX-XXX प्रतिरूप में भरें ।\"\n\n#: pl/pl_voivodeships.py:8\nmsgid \"Lower Silesia\"\nmsgstr \"लोवर सिलेसिया\"\n\n#: pl/pl_voivodeships.py:9\nmsgid \"Kuyavia-Pomerania\"\nmsgstr \"कुयाविया-पोमेरानिया\"\n\n#: pl/pl_voivodeships.py:10\nmsgid \"Lublin\"\nmsgstr \"लब्लिन\"\n\n#: pl/pl_voivodeships.py:11\nmsgid \"Lubusz\"\nmsgstr \"लुबुस्ज\"\n\n#: pl/pl_voivodeships.py:12\nmsgid \"Lodz\"\nmsgstr \"लोड्ज\"\n\n#: pl/pl_voivodeships.py:13\nmsgid \"Lesser Poland\"\nmsgstr \"लेस्सर पोलान्ड\"\n\n#: pl/pl_voivodeships.py:14\nmsgid \"Masovia\"\nmsgstr \"मसोविया\"\n\n#: pl/pl_voivodeships.py:15\nmsgid \"Opole\"\nmsgstr \"ओपोल\"\n\n#: pl/pl_voivodeships.py:16\nmsgid \"Subcarpatia\"\nmsgstr \"सबकारपेथिया\"\n\n#: pl/pl_voivodeships.py:17\nmsgid \"Podlasie\"\nmsgstr \"पोदलासी\"\n\n#: pl/pl_voivodeships.py:18\nmsgid \"Pomerania\"\nmsgstr \"पोमेरानिया\"\n\n#: pl/pl_voivodeships.py:19\nmsgid \"Silesia\"\nmsgstr \"सिलेसिया\"\n\n#: pl/pl_voivodeships.py:20\nmsgid \"Swietokrzyskie\"\nmsgstr \"स्विटोक्रिस्की\"\n\n#: pl/pl_voivodeships.py:21\nmsgid \"Warmia-Masuria\"\nmsgstr \"वार्मिया-मासुरिया\"\n\n#: pl/pl_voivodeships.py:22\nmsgid \"Greater Poland\"\nmsgstr \"ग्रेटर पोलान्ड\"\n\n#: pl/pl_voivodeships.py:23\nmsgid \"West Pomerania\"\nmsgstr \"पश्चिम पोमेरानिया\"\n\n#: pt/forms.py:19\nmsgid \"Enter a zip code in the format XXXX-XXX.\"\nmsgstr \"XXXX-XXX प्रारूप में ज़िप कोड दर्ज करें.\"\n\n#: pt/forms.py:39\nmsgid \"Phone numbers must have 9 digits, or start by + or 00.\"\nmsgstr \"फ़ोन नंबर 9 अंक के होते है, या + या 00 से शुरू करते हैं.\"\n\n#: ro/forms.py:22\nmsgid \"Enter a valid CIF.\"\nmsgstr \"मान्य CIF भरें ।\"\n\n#: ro/forms.py:59\nmsgid \"Enter a valid CNP.\"\nmsgstr \"मान्य CNP भरें ।\"\n\n#: ro/forms.py:143\nmsgid \"Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format\"\nmsgstr \"मान्य IBAN को ROXX-XXXX-XXXX-XXXX-XXXX-XXXX प्रतिरूप में भरें ।\"\n\n#: ro/forms.py:175\nmsgid \"Phone numbers must be in XXXX-XXXXXX format.\"\nmsgstr \"टेलिफोन संख्या को XXXX-XXXXXX प्रतिरूप में भरें ।\"\n\n#: ro/forms.py:200\nmsgid \"Enter a valid postal code in the format XXXXXX\"\nmsgstr \"मान्य डाक संहिता को XXXXXX प्रतिरूप में भरें ।\"\n\n#: ru/forms.py:37\nmsgid \"Enter a postal code in the format XXXXXX.\"\nmsgstr \"XXXXXX प्रारूप में डाक कोड दर्ज करें.\"\n\n#: ru/forms.py:50\nmsgid \"Enter a passport number in the format XXXX XXXXXX.\"\nmsgstr \"XXXX XXXXXX प्रारूप में पासपोर्ट संख्या दर्ज करें.\"\n\n#: ru/forms.py:63\nmsgid \"Enter a passport number in the format XX XXXXXXX.\"\nmsgstr \"XX xxxxxxx प्रारूप में पासपोर्ट संख्या दर्ज करें.\"\n\n#: ru/ru_regions.py:10\nmsgid \"Central Federal County\"\nmsgstr \"केन्द्रीय संघीय काउंटी\"\n\n#: ru/ru_regions.py:11\nmsgid \"South Federal County\"\nmsgstr \"दक्षिण संघीय काउंटी\"\n\n#: ru/ru_regions.py:12\nmsgid \"North-West Federal County\"\nmsgstr \"उत्तर-पश्चिम संघीय काउंटी\"\n\n#: ru/ru_regions.py:13\nmsgid \"Far-East Federal County\"\nmsgstr \"सुदूर-पूर्व संघीय काउंटी\"\n\n#: ru/ru_regions.py:14\nmsgid \"Siberian Federal County\"\nmsgstr \"साइबेरियाई संघीय काउंटी\"\n\n#: ru/ru_regions.py:15\nmsgid \"Ural Federal County\"\nmsgstr \"यूराल संघीय काउंटी\"\n\n#: ru/ru_regions.py:16\nmsgid \"Privolzhsky Federal County\"\nmsgstr \"प्रिवोल्जह्स्क्य संघीय काउंटी\"\n\n#: ru/ru_regions.py:17\nmsgid \"North-Caucasian Federal County\"\nmsgstr \"उत्तर-कोकेशियान संघीय काउंटी\"\n\n#: ru/ru_regions.py:21\nmsgid \"Moskva\"\nmsgstr \"मॉस्क्वा\"\n\n#: ru/ru_regions.py:22\nmsgid \"Saint-Peterburg\"\nmsgstr \"सेंट-पीटर्सबर्ग\"\n\n#: ru/ru_regions.py:23\nmsgid \"Moskovskaya oblast'\"\nmsgstr \"मोस्कोव्स्काया ओब्लास्ट\"\n\n#: ru/ru_regions.py:24\nmsgid \"Adygeya, Respublika\"\nmsgstr \"अद्य्गेया, रेस्पुब्लिका \"\n\n#: ru/ru_regions.py:25\nmsgid \"Bashkortostan, Respublika\"\nmsgstr \"बश्कोर्तोस्तान, रेस्पुब्लिका \"\n\n#: ru/ru_regions.py:26\nmsgid \"Buryatia, Respublika\"\nmsgstr \" बुर्यटिया, रेस्पुब्लिका \"\n\n#: ru/ru_regions.py:27\nmsgid \"Altay, Respublika\"\nmsgstr \"अल्ती, रेस्पुब्लिका \"\n\n#: ru/ru_regions.py:28\nmsgid \"Dagestan, Respublika\"\nmsgstr \"दागेस्तान, रेस्पुब्लिका \"\n\n#: ru/ru_regions.py:29\nmsgid \"Ingushskaya Respublika\"\nmsgstr \"इन्गुश्स्काया  रेस्पुब्लिका \"\n\n#: ru/ru_regions.py:30\nmsgid \"Kabardino-Balkarskaya Respublika\"\nmsgstr \"कबर्दिनो-बल्कार्स्काया  रेस्पुब्लिका \"\n\n#: ru/ru_regions.py:31\nmsgid \"Kalmykia, Respublika\"\nmsgstr \"कल्म्य्किया , रेस्पुब्लिका \"\n\n#: ru/ru_regions.py:32\nmsgid \"Karachaevo-Cherkesskaya Respublika\"\nmsgstr \"कराचेवो-चेर्केस्स्काया रेस्पुब्लिका \"\n\n#: ru/ru_regions.py:33\nmsgid \"Karelia, Respublika\"\nmsgstr \"करेलिया, रेस्पुब्लिका \"\n\n#: ru/ru_regions.py:34\nmsgid \"Komi, Respublika\"\nmsgstr \"कोमी, रेस्पुब्लिका \"\n\n#: ru/ru_regions.py:35\nmsgid \"Mariy Ehl, Respublika\"\nmsgstr \"मरीय एहल , रेस्पुब्लिका \"\n\n#: ru/ru_regions.py:36\nmsgid \"Mordovia, Respublika\"\nmsgstr \"मोर्दोविया, रेस्पुब्लिका \"\n\n#: ru/ru_regions.py:37\nmsgid \"Sakha, Respublika (Yakutiya)\"\nmsgstr \"सखा, रेस्पुब्लिका (याकुतिया )\"\n\n#: ru/ru_regions.py:38\nmsgid \"Severnaya Osetia, Respublika (Alania)\"\nmsgstr \"सेवेर्नाया ओसेटिया, रेस्पुब्लिका (अलानिया)\"\n\n#: ru/ru_regions.py:39\nmsgid \"Tatarstan, Respublika\"\nmsgstr \"तातार्स्तान, रेस्पुब्लिका \"\n\n#: ru/ru_regions.py:40\nmsgid \"Tyva, Respublika (Tuva)\"\nmsgstr \"त्य्वा, रेस्पुब्लिका (तुवा)\"\n\n#: ru/ru_regions.py:41\nmsgid \"Udmurtskaya Respublika\"\nmsgstr \"उद्मुर्त्स्काया रेस्पुब्लिका \"\n\n#: ru/ru_regions.py:42\nmsgid \"Khakassiya, Respublika\"\nmsgstr \"खाकस्सिया, रेस्पुब्लिका \"\n\n#: ru/ru_regions.py:43\nmsgid \"Chechenskaya Respublika\"\nmsgstr \"चेचेंस्काया रेस्पुब्लिका\"\n\n#: ru/ru_regions.py:44\nmsgid \"Chuvashskaya Respublika\"\nmsgstr \"चुवाश्स्काया रेस्पुब्लिका \"\n\n#: ru/ru_regions.py:45\nmsgid \"Altayskiy Kray\"\nmsgstr \"अल्ताय्स्कीय क्रय  \"\n\n#: ru/ru_regions.py:46\nmsgid \"Zabaykalskiy Kray\"\nmsgstr \"ज़बय्कल्स्कीय  क्रय \"\n\n#: ru/ru_regions.py:47\nmsgid \"Kamchatskiy Kray\"\nmsgstr \"कम्चात्स्कीय  क्रय \"\n\n#: ru/ru_regions.py:48\nmsgid \"Krasnodarskiy Kray\"\nmsgstr \"क्रस्नोदार्स्कीय  क्रय \"\n\n#: ru/ru_regions.py:49\nmsgid \"Krasnoyarskiy Kray\"\nmsgstr \"क्रस्नोयार्स्कीय  क्रय \"\n\n#: ru/ru_regions.py:50\nmsgid \"Permskiy Kray\"\nmsgstr \"पेर्म्स्कीय  क्रय \"\n\n#: ru/ru_regions.py:51\nmsgid \"Primorskiy Kray\"\nmsgstr \"प्रिमोर्स्कीय  क्रय \"\n\n#: ru/ru_regions.py:52\nmsgid \"Stavropol'siyy Kray\"\nmsgstr \"स्टाव्रोपोल'सिय्य  क्रय \"\n\n#: ru/ru_regions.py:53\nmsgid \"Khabarovskiy Kray\"\nmsgstr \"खबरोव्स्कीय  क्रय \"\n\n#: ru/ru_regions.py:54\nmsgid \"Amurskaya oblast'\"\nmsgstr \"अमुर्स्काया ओब्लास्ट' \"\n\n#: ru/ru_regions.py:55\nmsgid \"Arkhangel'skaya oblast'\"\nmsgstr \"अर्खंगेल'स्काय  ओब्लास्ट'\"\n\n#: ru/ru_regions.py:56\nmsgid \"Astrakhanskaya oblast'\"\nmsgstr \"अस्त्रखान्स्काया  ओब्लास्ट'\"\n\n#: ru/ru_regions.py:57\nmsgid \"Belgorodskaya oblast'\"\nmsgstr \"बेल्गोरोद्स्काया ओब्लास्ट'\"\n\n#: ru/ru_regions.py:58\nmsgid \"Bryanskaya oblast'\"\nmsgstr \"ब्र्यांस्काया ओब्लास्ट '\"\n\n#: ru/ru_regions.py:59\nmsgid \"Vladimirskaya oblast'\"\nmsgstr \"व्लादिमिर्स्काया ओब्लास्ट'\"\n\n#: ru/ru_regions.py:60\nmsgid \"Volgogradskaya oblast'\"\nmsgstr \"वोल्गोग्रद्स्काया ओब्लास्ट'\"\n\n#: ru/ru_regions.py:61\nmsgid \"Vologodskaya oblast'\"\nmsgstr \"वोलोगोद्स्काया ओब्लास्ट'\"\n\n#: ru/ru_regions.py:62\nmsgid \"Voronezhskaya oblast'\"\nmsgstr \"वोरोनेज्ह्स्काया ओब्लास्ट'\"\n\n#: ru/ru_regions.py:63\nmsgid \"Ivanovskaya oblast'\"\nmsgstr \"इवानोव्स्काया ओब्लास्ट'\"\n\n#: ru/ru_regions.py:64\nmsgid \"Irkutskaya oblast'\"\nmsgstr \"इर्कुत्स्काया ओब्लास्ट'\"\n\n#: ru/ru_regions.py:65\nmsgid \"Kaliningradskaya oblast'\"\nmsgstr \"कलिनिन्ग्रद्स्काया ओब्लास्ट'\"\n\n#: ru/ru_regions.py:66\nmsgid \"Kaluzhskaya oblast'\"\nmsgstr \"कलुज्ह्स्काया ओब्लास्ट'\"\n\n#: ru/ru_regions.py:67\nmsgid \"Kemerovskaya oblast'\"\nmsgstr \"केमेरोव्स्काया ओब्लास्ट'\"\n\n#: ru/ru_regions.py:68\nmsgid \"Kirovskaya oblast'\"\nmsgstr \"किरोव्स्काया ओब्लास्ट'\"\n\n#: ru/ru_regions.py:69\nmsgid \"Kostromskaya oblast'\"\nmsgstr \"कोस्त्रोम्स्काया ओब्लास्ट'\"\n\n#: ru/ru_regions.py:70\nmsgid \"Kurganskaya oblast'\"\nmsgstr \"कुर्गंस्काया ओब्लास्ट '\"\n\n#: ru/ru_regions.py:71\nmsgid \"Kurskaya oblast'\"\nmsgstr \"कुर्स्काया ओब्लास्ट'\"\n\n#: ru/ru_regions.py:72\nmsgid \"Leningradskaya oblast'\"\nmsgstr \"लेनिन्ग्रद्स्काया ओब्लास्ट'\"\n\n#: ru/ru_regions.py:73\nmsgid \"Lipeckaya oblast'\"\nmsgstr \"लिपेच्काया ओब्लास्ट'\"\n\n#: ru/ru_regions.py:74\nmsgid \"Magadanskaya oblast'\"\nmsgstr \"मगदंस्काया ओब्लास्ट'\"\n\n#: ru/ru_regions.py:75\nmsgid \"Murmanskaya oblast'\"\nmsgstr \"मुर्मंस्काया ओब्लास्ट '\"\n\n#: ru/ru_regions.py:76\nmsgid \"Nizhegorodskaja oblast'\"\nmsgstr \"निज्हेगोरोद्स्काजा ओब्लास्ट'\"\n\n#: ru/ru_regions.py:77\nmsgid \"Novgorodskaya oblast'\"\nmsgstr \"नोव्गोरोद्स्काया ओब्लास्ट'\"\n\n#: ru/ru_regions.py:78\nmsgid \"Novosibirskaya oblast'\"\nmsgstr \"नोवोसिबिर्स्काया ओब्लास्ट '\"\n\n#: ru/ru_regions.py:79\nmsgid \"Omskaya oblast'\"\nmsgstr \"ओम्स्काया ओब्लास्ट'\"\n\n#: ru/ru_regions.py:80\nmsgid \"Orenburgskaya oblast'\"\nmsgstr \"ओरेंबुर्ग्स्काया ओब्लास्ट'\"\n\n#: ru/ru_regions.py:81\nmsgid \"Orlovskaya oblast'\"\nmsgstr \"ओर्लोव्स्काया ओब्लास्ट'\"\n\n#: ru/ru_regions.py:82\nmsgid \"Penzenskaya oblast'\"\nmsgstr \"पेंज़ेन्स्काया ओब्लास्ट'\"\n\n#: ru/ru_regions.py:83\nmsgid \"Pskovskaya oblast'\"\nmsgstr \"प्स्कोव्स्काया ओब्लास्ट'\"\n\n#: ru/ru_regions.py:84\nmsgid \"Rostovskaya oblast'\"\nmsgstr \"रोस्तोव्स्काया ओब्लास्ट'\"\n\n#: ru/ru_regions.py:85\nmsgid \"Rjazanskaya oblast'\"\nmsgstr \"र्जज़न्स्काया ओब्लास्ट'\"\n\n#: ru/ru_regions.py:86\nmsgid \"Samarskaya oblast'\"\nmsgstr \"समर्स्काया ओब्लास्ट'\"\n\n#: ru/ru_regions.py:87\nmsgid \"Saratovskaya oblast'\"\nmsgstr \"सरतोव्स्काया ओब्लास्ट'\"\n\n#: ru/ru_regions.py:88\nmsgid \"Sakhalinskaya oblast'\"\nmsgstr \"सखालिंस्काया ओब्लास्ट'\"\n\n#: ru/ru_regions.py:89\nmsgid \"Sverdlovskaya oblast'\"\nmsgstr \"स्वेर्द्लोव्स्काया ओब्लास्ट'\"\n\n#: ru/ru_regions.py:90\nmsgid \"Smolenskaya oblast'\"\nmsgstr \"स्मोलेंस्काया ओब्लास्ट'\"\n\n#: ru/ru_regions.py:91\nmsgid \"Tambovskaya oblast'\"\nmsgstr \"तम्बोव्स्काया ओब्लास्ट'\"\n\n#: ru/ru_regions.py:92\nmsgid \"Tverskaya oblast'\"\nmsgstr \"त्वेर्स्काया ओब्लास्ट'\"\n\n#: ru/ru_regions.py:93\nmsgid \"Tomskaya oblast'\"\nmsgstr \"तोम्स्काया ओब्लास्ट'\"\n\n#: ru/ru_regions.py:94\nmsgid \"Tul'skaya oblast'\"\nmsgstr \"टूल'स्काय  ओब्लास्ट'\"\n\n#: ru/ru_regions.py:95\nmsgid \"Tyumenskaya oblast'\"\nmsgstr \"त्युमेंस्काया ओब्लास्ट'\"\n\n#: ru/ru_regions.py:96\nmsgid \"Ul'ianovskaya oblast'\"\nmsgstr \"उल'इअनोव्स्कय  ओब्लास्ट '\"\n\n#: ru/ru_regions.py:97\nmsgid \"Chelyabinskaya oblast'\"\nmsgstr \"चेल्याबिन्स्काया ओब्लास्ट'\"\n\n#: ru/ru_regions.py:98\nmsgid \"Yaroslavskaya oblast'\"\nmsgstr \"यारोस्लाव्स्काया ओब्लास्ट'\"\n\n#: ru/ru_regions.py:99\nmsgid \"Evreyskaya avtonomnaja oblast'\"\nmsgstr \"एव्रेय्स्काया अव्तोनोम्नाजा  ओब्लास्ट'\"\n\n#: ru/ru_regions.py:100\nmsgid \"Neneckiy autonomnyy okrug\"\nmsgstr \"नेनेच्कीय औतोनोम्न्य्य ओकृग \"\n\n#: ru/ru_regions.py:101\nmsgid \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\nmsgstr \"खांटी-मंसिय्स्कीय अव्तोनोम्न्य्य ओकृग - युगरा \"\n\n#: ru/ru_regions.py:102\nmsgid \"Chukotskiy avtonomnyy okrug\"\nmsgstr \"चुकोत्स्कीय अव्तोनोम्न्य्य ओकृग \"\n\n#: ru/ru_regions.py:103\nmsgid \"Yamalo-Neneckiy avtonomnyy okrug\"\nmsgstr \"यमलो-नेनेच्कीय  अव्तोनोम्न्य्य ओकृग \"\n\n#: se/forms.py:54\nmsgid \"Enter a valid Swedish organisation number.\"\nmsgstr \"मान्य स्वीडिश संगठन संख्या दर्ज करें.\"\n\n#: se/forms.py:111\nmsgid \"Enter a valid Swedish personal identity number.\"\nmsgstr \"मान्य स्वीडिश व्यक्तिगत पहचान संख्या दर्ज करें.\"\n\n#: se/forms.py:112\nmsgid \"Co-ordination numbers are not allowed.\"\nmsgstr \"समन्वय नंबर स्वीकार्य नहीं हैं.\"\n\n#: se/forms.py:154\nmsgid \"Enter a Swedish postal code in the format XXXXX.\"\nmsgstr \"XXXXX प्रारूप में स्वीडिश डाक कोड दर्ज करें.\"\n\n#: se/se_counties.py:16\nmsgid \"Stockholm\"\nmsgstr \"स्टॉकहॉम\"\n\n#: se/se_counties.py:17\nmsgid \"Västerbotten\"\nmsgstr \"वास्तेबोतेन \"\n\n#: se/se_counties.py:18\nmsgid \"Norrbotten\"\nmsgstr \"नारबोटेन \"\n\n#: se/se_counties.py:19\nmsgid \"Uppsala\"\nmsgstr \"उपासला\"\n\n#: se/se_counties.py:20\nmsgid \"Södermanland\"\nmsgstr \"सोदेरमानलैंड \"\n\n#: se/se_counties.py:21\nmsgid \"Östergötland\"\nmsgstr \"ओस्टेरगोटलैंड \"\n\n#: se/se_counties.py:22\nmsgid \"Jönköping\"\nmsgstr \"जोंकोपिंग\"\n\n#: se/se_counties.py:23\nmsgid \"Kronoberg\"\nmsgstr \"क्रोनोबर्ग \"\n\n#: se/se_counties.py:24\nmsgid \"Kalmar\"\nmsgstr \"कालमार\"\n\n#: se/se_counties.py:25\nmsgid \"Gotland\"\nmsgstr \"गोटलैंड \"\n\n#: se/se_counties.py:26\nmsgid \"Blekinge\"\nmsgstr \"ब्लेकिंगे \"\n\n#: se/se_counties.py:27\nmsgid \"Skåne\"\nmsgstr \"स्काने \"\n\n#: se/se_counties.py:28\nmsgid \"Halland\"\nmsgstr \"हालैंड \"\n\n#: se/se_counties.py:29\nmsgid \"Västra Götaland\"\nmsgstr \"वस्त्रा गाटलैंड \"\n\n#: se/se_counties.py:30\nmsgid \"Värmland\"\nmsgstr \"वार्मलैंड \"\n\n#: se/se_counties.py:31\nmsgid \"Örebro\"\nmsgstr \"ओरेब्रो\"\n\n#: se/se_counties.py:32\nmsgid \"Västmanland\"\nmsgstr \"वास्टमैनलैंड  \"\n\n#: se/se_counties.py:33\nmsgid \"Dalarna\"\nmsgstr \"डालार्ना \"\n\n#: se/se_counties.py:34\nmsgid \"Gävleborg\"\nmsgstr \"गावलेबार्ग \"\n\n#: se/se_counties.py:35\nmsgid \"Västernorrland\"\nmsgstr \"वास्तरनारलैंड \"\n\n#: se/se_counties.py:36\nmsgid \"Jämtland\"\nmsgstr \"जामलैंड \"\n\n#: si/forms.py:25\nmsgid \"The first 7 digits of the EMSO must represent a valid past date.\"\nmsgstr \"EMSO के पहले 7 अंकों एक मान्य पिछले तारीख का प्रतिनिधित्व करना चाहिए.\"\n\n#: si/forms.py:26\nmsgid \"The EMSO is not valid.\"\nmsgstr \"EMSO मान्य नहीं है.\"\n\n#: si/forms.py:86\nmsgid \"Enter a valid tax number in form SIXXXXXXXX\"\nmsgstr \"प्रपत्र SIXXXXXXXX में एक मान्य टैक्स संख्या दर्ज करें\"\n\n#: si/forms.py:151\nmsgid \"Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.\"\nmsgstr \"प्रपत्र 386 XXXXXXXX या 0XXXXXXXX में फोन नंबर दर्ज करें.\"\n\n#: sk/sk_districts.py:8\nmsgid \"Banska Bystrica\"\nmsgstr \"बान्का बिस्ट्रिका\"\n\n#: sk/sk_districts.py:9\nmsgid \"Banska Stiavnica\"\nmsgstr \"बान्का स्टियानिका\"\n\n#: sk/sk_districts.py:10\nmsgid \"Bardejov\"\nmsgstr \"बार्डेजोव\"\n\n#: sk/sk_districts.py:11\nmsgid \"Banovce nad Bebravou\"\nmsgstr \"बनोव्स नाड बेब्राव\"\n\n#: sk/sk_districts.py:12\nmsgid \"Brezno\"\nmsgstr \"ब्रेजनोव\"\n\n#: sk/sk_districts.py:13\nmsgid \"Bratislava I\"\nmsgstr \"ब्राटिस्लावा 1\"\n\n#: sk/sk_districts.py:14\nmsgid \"Bratislava II\"\nmsgstr \"ब्राटिस्लावा 2\"\n\n#: sk/sk_districts.py:15\nmsgid \"Bratislava III\"\nmsgstr \"ब्राटिस्लावा 3\"\n\n#: sk/sk_districts.py:16\nmsgid \"Bratislava IV\"\nmsgstr \"ब्राटिस्लावा 4\"\n\n#: sk/sk_districts.py:17\nmsgid \"Bratislava V\"\nmsgstr \"ब्राटिस्लावा 5\"\n\n#: sk/sk_districts.py:18\nmsgid \"Bytca\"\nmsgstr \"बैट्चा\"\n\n#: sk/sk_districts.py:19\nmsgid \"Cadca\"\nmsgstr \"काड्का\"\n\n#: sk/sk_districts.py:20\nmsgid \"Detva\"\nmsgstr \"डेत्वा\"\n\n#: sk/sk_districts.py:21\nmsgid \"Dolny Kubin\"\nmsgstr \"डोल्नी कुबिन\"\n\n#: sk/sk_districts.py:22\nmsgid \"Dunajska Streda\"\nmsgstr \"डुनास्का स्ट्रेडा\"\n\n#: sk/sk_districts.py:23\nmsgid \"Galanta\"\nmsgstr \"गलान्टा\"\n\n#: sk/sk_districts.py:24\nmsgid \"Gelnica\"\nmsgstr \"गेल्निका\"\n\n#: sk/sk_districts.py:25\nmsgid \"Hlohovec\"\nmsgstr \"लोहोवेक\"\n\n#: sk/sk_districts.py:26\nmsgid \"Humenne\"\nmsgstr \"हुमेन्न\"\n\n#: sk/sk_districts.py:27\nmsgid \"Ilava\"\nmsgstr \"ल्लावा\"\n\n#: sk/sk_districts.py:28\nmsgid \"Kezmarok\"\nmsgstr \"केजमारोक\"\n\n#: sk/sk_districts.py:29\nmsgid \"Komarno\"\nmsgstr \"कोमार्नो\"\n\n#: sk/sk_districts.py:30\nmsgid \"Kosice I\"\nmsgstr \"कोसिस 1\"\n\n#: sk/sk_districts.py:31\nmsgid \"Kosice II\"\nmsgstr \"कोसिस 2\"\n\n#: sk/sk_districts.py:32\nmsgid \"Kosice III\"\nmsgstr \"कोसिस 3\"\n\n#: sk/sk_districts.py:33\nmsgid \"Kosice IV\"\nmsgstr \"कोसिस 4\"\n\n#: sk/sk_districts.py:34\nmsgid \"Kosice - okolie\"\nmsgstr \"कोसिस - ओकोली\"\n\n#: sk/sk_districts.py:35\nmsgid \"Krupina\"\nmsgstr \"क्रूपिना\"\n\n#: sk/sk_districts.py:36\nmsgid \"Kysucke Nove Mesto\"\nmsgstr \"क्यसुके नोवे मेस्तो\"\n\n#: sk/sk_districts.py:37\nmsgid \"Levice\"\nmsgstr \"लेविस\"\n\n#: sk/sk_districts.py:38\nmsgid \"Levoca\"\nmsgstr \"लेवोका\"\n\n#: sk/sk_districts.py:39\nmsgid \"Liptovsky Mikulas\"\nmsgstr \"लिप्टोस्की मिकुलास\"\n\n#: sk/sk_districts.py:40\nmsgid \"Lucenec\"\nmsgstr \"लुसेनेक\"\n\n#: sk/sk_districts.py:41\nmsgid \"Malacky\"\nmsgstr \"मलाकी\"\n\n#: sk/sk_districts.py:42\nmsgid \"Martin\"\nmsgstr \"मार्टिन\"\n\n#: sk/sk_districts.py:43\nmsgid \"Medzilaborce\"\nmsgstr \"मेड्जिलाबोर्स\"\n\n#: sk/sk_districts.py:44\nmsgid \"Michalovce\"\nmsgstr \"मिकालोव्स\"\n\n#: sk/sk_districts.py:45\nmsgid \"Myjava\"\nmsgstr \"मैजावा\"\n\n#: sk/sk_districts.py:46\nmsgid \"Namestovo\"\nmsgstr \"नमस्तोवो\"\n\n#: sk/sk_districts.py:47\nmsgid \"Nitra\"\nmsgstr \"निट्रा\"\n\n#: sk/sk_districts.py:48\nmsgid \"Nove Mesto nad Vahom\"\nmsgstr \"नोवे मेस्टो नाड वाहोम\"\n\n#: sk/sk_districts.py:49\nmsgid \"Nove Zamky\"\nmsgstr \"नोवे जाम्की\"\n\n#: sk/sk_districts.py:50\nmsgid \"Partizanske\"\nmsgstr \"पार्तिजास्के\"\n\n#: sk/sk_districts.py:51\nmsgid \"Pezinok\"\nmsgstr \"पेजिनोक\"\n\n#: sk/sk_districts.py:52\nmsgid \"Piestany\"\nmsgstr \"पियेस्तानी\"\n\n#: sk/sk_districts.py:53\nmsgid \"Poltar\"\nmsgstr \"पोल्टार\"\n\n#: sk/sk_districts.py:54\nmsgid \"Poprad\"\nmsgstr \"पोप्राड\"\n\n#: sk/sk_districts.py:55\nmsgid \"Povazska Bystrica\"\nmsgstr \"पोवास्का बैस्ट्रिका\"\n\n#: sk/sk_districts.py:56\nmsgid \"Presov\"\nmsgstr \"प्रेसोव\"\n\n#: sk/sk_districts.py:57\nmsgid \"Prievidza\"\nmsgstr \"प्रियेविसा\"\n\n#: sk/sk_districts.py:58\nmsgid \"Puchov\"\nmsgstr \"पुकाव\"\n\n#: sk/sk_districts.py:59\nmsgid \"Revuca\"\nmsgstr \"रेवुका\"\n\n#: sk/sk_districts.py:60\nmsgid \"Rimavska Sobota\"\nmsgstr \"रिमास्का सोबोटा\"\n\n#: sk/sk_districts.py:61\nmsgid \"Roznava\"\nmsgstr \"रोजोनावा\"\n\n#: sk/sk_districts.py:62\nmsgid \"Ruzomberok\"\nmsgstr \"रुजोम्बेरोक\"\n\n#: sk/sk_districts.py:63\nmsgid \"Sabinov\"\nmsgstr \"सबिनोव\"\n\n#: sk/sk_districts.py:64\nmsgid \"Senec\"\nmsgstr \"सेनेक\"\n\n#: sk/sk_districts.py:65\nmsgid \"Senica\"\nmsgstr \"सेनिका\"\n\n#: sk/sk_districts.py:66\nmsgid \"Skalica\"\nmsgstr \"स्कालिका\"\n\n#: sk/sk_districts.py:67\nmsgid \"Snina\"\nmsgstr \"स्नीना\"\n\n#: sk/sk_districts.py:68\nmsgid \"Sobrance\"\nmsgstr \"सोब्रानस\"\n\n#: sk/sk_districts.py:69\nmsgid \"Spisska Nova Ves\"\nmsgstr \"स्पिस्का नोवा वेस\"\n\n#: sk/sk_districts.py:70\nmsgid \"Stara Lubovna\"\nmsgstr \"स्टारा लुब्नोवा\"\n\n#: sk/sk_districts.py:71\nmsgid \"Stropkov\"\nmsgstr \"स्ट्रोकोव\"\n\n#: sk/sk_districts.py:72\nmsgid \"Svidnik\"\nmsgstr \"स्विड्निक\"\n\n#: sk/sk_districts.py:73\nmsgid \"Sala\"\nmsgstr \"साला\"\n\n#: sk/sk_districts.py:74\nmsgid \"Topolcany\"\nmsgstr \"टोपोल्कानी\"\n\n#: sk/sk_districts.py:75\nmsgid \"Trebisov\"\nmsgstr \"ट्रेबिसोव\"\n\n#: sk/sk_districts.py:76\nmsgid \"Trencin\"\nmsgstr \"ट्रेन्किन\"\n\n#: sk/sk_districts.py:77\nmsgid \"Trnava\"\nmsgstr \"ट्रनावा\"\n\n#: sk/sk_districts.py:78\nmsgid \"Turcianske Teplice\"\nmsgstr \"टुर्षियान्के टेप्लिस\"\n\n#: sk/sk_districts.py:79\nmsgid \"Tvrdosin\"\nmsgstr \"दोसिन\"\n\n#: sk/sk_districts.py:80\nmsgid \"Velky Krtis\"\nmsgstr \"वेलकी रिटिस\"\n\n#: sk/sk_districts.py:81\nmsgid \"Vranov nad Toplou\"\nmsgstr \"रानोव नाड टोप्लोव\"\n\n#: sk/sk_districts.py:82\nmsgid \"Zlate Moravce\"\nmsgstr \"लाटे मोरास\"\n\n#: sk/sk_districts.py:83\nmsgid \"Zvolen\"\nmsgstr \"वोलेन\"\n\n#: sk/sk_districts.py:84\nmsgid \"Zarnovica\"\nmsgstr \"जार्नोडिका\"\n\n#: sk/sk_districts.py:85\nmsgid \"Ziar nad Hronom\"\nmsgstr \"जियर नाड रोनोम\"\n\n#: sk/sk_districts.py:86\nmsgid \"Zilina\"\nmsgstr \"जिलिना\"\n\n#: sk/sk_regions.py:8\nmsgid \"Banska Bystrica region\"\nmsgstr \"बान्का बिस्ट्रिका प्रान्त\"\n\n#: sk/sk_regions.py:9\nmsgid \"Bratislava region\"\nmsgstr \"ब्राटिस्लावा प्रान्त\"\n\n#: sk/sk_regions.py:10\nmsgid \"Kosice region\"\nmsgstr \"कोसिस प्रान्त\"\n\n#: sk/sk_regions.py:11\nmsgid \"Nitra region\"\nmsgstr \"निट्रा प्रान्त\"\n\n#: sk/sk_regions.py:12\nmsgid \"Presov region\"\nmsgstr \"प्रेसोव प्रान्त\"\n\n#: sk/sk_regions.py:13\nmsgid \"Trencin region\"\nmsgstr \"ट्रेन्किन प्रान्त\"\n\n#: sk/sk_regions.py:14\nmsgid \"Trnava region\"\nmsgstr \"नावा प्रान्त\"\n\n#: sk/sk_regions.py:15\nmsgid \"Zilina region\"\nmsgstr \"जिलिना प्रान्त\"\n\n#: tr/forms.py:21\nmsgid \"Enter a postal code in the format XXXXX.\"\nmsgstr \"डाक संहिता को XXX XX प्रतिरूप में भरें.\"\n\n#: tr/forms.py:42\nmsgid \"Phone numbers must be in 0XXX XXX XXXX format.\"\nmsgstr \"टेलिफोन संख्या को 0XXX XXX XXXX- प्रतिरूप में भरें ।\"\n\n#: tr/forms.py:69\nmsgid \"Enter a valid Turkish Identification number.\"\nmsgstr \"मान्य तुर्की पहचान संख्या दर्ज करें.\"\n\n#: tr/forms.py:70\nmsgid \"Turkish Identification number must be 11 digits.\"\nmsgstr \"तुर्की पहचान संख्या 11 अंकों का होना चाहिए.\"\n\n#: us/forms.py:21\nmsgid \"Enter a zip code in the format XXXXX or XXXXX-XXXX.\"\nmsgstr \"डाक संहिता को XXXXX अथवा XXXXX-XXXX प्रतिरूप में भरें ।\"\n\n#: us/forms.py:59\nmsgid \"Enter a valid U.S. Social Security number in XXX-XX-XXXX format.\"\nmsgstr \"मान्य U.S सोशल सेक्यूरिटी संख्या को XXX-XX-XXXX प्रतिरूप में भरें ।\"\n\n#: us/forms.py:92\nmsgid \"Enter a U.S. state or territory.\"\nmsgstr \"एक अमेरिकी राज्य या क्षेत्र दर्ज करें.\"\n\n#: us/models.py:8\nmsgid \"U.S. state (two uppercase letters)\"\nmsgstr \"अमेरिकी राज्य (दो अपरकेस अक्षर)\"\n\n#: us/models.py:17\nmsgid \"U.S. postal code (two uppercase letters)\"\nmsgstr \"अमेरिकी डाक कोड (दो बड़े अक्षरों)\"\n\n#: us/models.py:26\nmsgid \"Phone number\"\nmsgstr \"टेलिफोन संख्या\"\n\n#: uy/forms.py:29\nmsgid \"Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.\"\nmsgstr \"X.XXX.XXX - X, xxxxxxx - X या XXXXXXXX प्रारूप में मान्य सीआई संख्या दर्ज करें.\"\n\n#: uy/forms.py:31\nmsgid \"Enter a valid CI number.\"\nmsgstr \"वैध आईसी संख्या दर्ज करें.\"\n\n#: za/forms.py:22\nmsgid \"Enter a valid South African ID number\"\nmsgstr \"मान्य दक्षिणि आफ्रिकी आइ.डि संख्या भरें\"\n\n#: za/forms.py:56\nmsgid \"Enter a valid South African postal code\"\nmsgstr \"मान्य दक्षिणि आफ्रिकी डाक संहिता संख्या भरें\"\n\n#: za/za_provinces.py:4\nmsgid \"Eastern Cape\"\nmsgstr \"पूर्वी केप\"\n\n#: za/za_provinces.py:5\nmsgid \"Free State\"\nmsgstr \"फ्री स्टेट\"\n\n#: za/za_provinces.py:6\nmsgid \"Gauteng\"\nmsgstr \"गौटेन्ग\"\n\n#: za/za_provinces.py:7\nmsgid \"KwaZulu-Natal\"\nmsgstr \"क्वाजूलू-नटाल\"\n\n#: za/za_provinces.py:8\nmsgid \"Limpopo\"\nmsgstr \"लिम्पोपो\"\n\n#: za/za_provinces.py:9\nmsgid \"Mpumalanga\"\nmsgstr \"पुमलान्गा\"\n\n#: za/za_provinces.py:10\nmsgid \"Northern Cape\"\nmsgstr \"उत्तरी केप\"\n\n#: za/za_provinces.py:11\nmsgid \"North West\"\nmsgstr \"उत्तर पूर्व\"\n\n#: za/za_provinces.py:12\nmsgid \"Western Cape\"\nmsgstr \"पश्चिमी केप\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/locale/hr/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# aljosa <aljosa.mohorovic@gmail.com>, 2011.\n#   <aljosa.mohorovic@gmail.com>, 2012-2013.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2013-01-14 18:45+0000\\n\"\n\"Last-Translator: aljosa <aljosa.mohorovic@gmail.com>\\n\"\n\"Language-Team: Croatian (http://www.transifex.com/projects/p/django/language/\"\n\"hr/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: hr\\n\"\n\"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\\n\"\n\n#: ar/forms.py:30\nmsgid \"Enter a postal code in the format NNNN or ANNNNAAA.\"\nmsgstr \"Unesite ispravan poštanski broj formata NNNN ili ANNNNAAA.\"\n\n#: ar/forms.py:52 br/forms.py:95 br/forms.py:134 pe/forms.py:27 pe/forms.py:55\nmsgid \"This field requires only numbers.\"\nmsgstr \"Ovo polje zahtjeva samo brojeve.\"\n\n#: ar/forms.py:53\nmsgid \"This field requires 7 or 8 digits.\"\nmsgstr \"Ovo polje zahtjeva 7 ili 8 numeričkih znakova.\"\n\n#: ar/forms.py:82\nmsgid \"Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.\"\nmsgstr \"Unesite ispravan CUIT formata XX-XXXXXXXX-X ili XXXXXXXXXXXX.\"\n\n#: ar/forms.py:83\nmsgid \"Invalid CUIT.\"\nmsgstr \"Neispravan CUIT.\"\n\n#: ar/forms.py:84\nmsgid \"Invalid legal type. Type must be 27, 20, 23 or 30.\"\nmsgstr \"\"\n\n#: at/at_states.py:5\nmsgid \"Burgenland\"\nmsgstr \"Burgenland\"\n\n#: at/at_states.py:6\nmsgid \"Carinthia\"\nmsgstr \"Carinthia\"\n\n#: at/at_states.py:7\nmsgid \"Lower Austria\"\nmsgstr \"Donja Austrija\"\n\n#: at/at_states.py:8\nmsgid \"Upper Austria\"\nmsgstr \"Gornja Austrija\"\n\n#: at/at_states.py:9\nmsgid \"Salzburg\"\nmsgstr \"Salzburg\"\n\n#: at/at_states.py:10\nmsgid \"Styria\"\nmsgstr \"Štajerska\"\n\n#: at/at_states.py:11\nmsgid \"Tyrol\"\nmsgstr \"Tirol\"\n\n#: at/at_states.py:12\nmsgid \"Vorarlberg\"\nmsgstr \"Vorarlberg\"\n\n#: at/at_states.py:13\nmsgid \"Vienna\"\nmsgstr \"Beč\"\n\n#: at/forms.py:22 ch/forms.py:22 no/forms.py:19\nmsgid \"Enter a zip code in the format XXXX.\"\nmsgstr \"Unesite zip kod formata XXXX.\"\n\n#: at/forms.py:50\nmsgid \"Enter a valid Austrian Social Security Number in XXXX XXXXXX format.\"\nmsgstr \"\"\n\"Unesite ispravan broj socijalnog osiguranja Austrije formata XXXX XXXXXX.\"\n\n#: au/forms.py:26\nmsgid \"Enter a 4 digit postcode.\"\nmsgstr \"Unesite 4 znamenkasti poštanski broj.\"\n\n#: au/models.py:9\nmsgid \"Australian State\"\nmsgstr \"Australska država\"\n\n#: au/models.py:19\nmsgid \"Australian Postcode\"\nmsgstr \"Australski poštanski broj\"\n\n#: au/models.py:33\nmsgid \"Australian Phone number\"\nmsgstr \"Australski telefonski broj\"\n\n#: be/be_provinces.py:5\nmsgid \"Antwerp\"\nmsgstr \"Antwerpen\"\n\n#: be/be_provinces.py:6\nmsgid \"Brussels\"\nmsgstr \"Brisel\"\n\n#: be/be_provinces.py:7\nmsgid \"East Flanders\"\nmsgstr \"Istočna Flandrija\"\n\n#: be/be_provinces.py:8\nmsgid \"Flemish Brabant\"\nmsgstr \"Flamanski Brabant\"\n\n#: be/be_provinces.py:9\nmsgid \"Hainaut\"\nmsgstr \"Hainaut\"\n\n#: be/be_provinces.py:10\nmsgid \"Liege\"\nmsgstr \"Liege\"\n\n#: be/be_provinces.py:11 nl/nl_provinces.py:9\nmsgid \"Limburg\"\nmsgstr \"Limburg\"\n\n#: be/be_provinces.py:12\nmsgid \"Luxembourg\"\nmsgstr \"Luksemburg\"\n\n#: be/be_provinces.py:13\nmsgid \"Namur\"\nmsgstr \"Namur\"\n\n#: be/be_provinces.py:14\nmsgid \"Walloon Brabant\"\nmsgstr \"Valonski Brabant\"\n\n#: be/be_provinces.py:15\nmsgid \"West Flanders\"\nmsgstr \"Zapadna Flandrija\"\n\n#: be/be_regions.py:5\nmsgid \"Brussels Capital Region\"\nmsgstr \"Brussels Capital Region\"\n\n#: be/be_regions.py:6\nmsgid \"Flemish Region\"\nmsgstr \"Flamanska regija\"\n\n#: be/be_regions.py:7\nmsgid \"Wallonia\"\nmsgstr \"Valonija\"\n\n#: be/forms.py:25\nmsgid \"Enter a valid postal code in the range and format 1XXX - 9XXX.\"\nmsgstr \"Unesite važeći poštanski broj u rasponu i formatu 1xxx - 9XXX.\"\n\n#: be/forms.py:48\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\nmsgstr \"\"\n\"Unesite valjani broj telefona u jednom od formata 0x xxx xx xx, xx xx xx \"\n\"0xx, 04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x . xxx.xx.\"\n\"xx, 0xx.xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx ili 04xxxxxxxx.\"\n\n#: br/forms.py:22\nmsgid \"Enter a zip code in the format XXXXX-XXX.\"\nmsgstr \"Unesite zip kod formata XXXXX-XXX.\"\n\n#: br/forms.py:31\nmsgid \"Phone numbers must be in XX-XXXX-XXXX format.\"\nmsgstr \"Telefonski brojevi moraju biti formata XX-XXXX-XXXX.\"\n\n#: br/forms.py:58\nmsgid \"\"\n\"Select a valid brazilian state. That state is not one of the available \"\n\"states.\"\nmsgstr \"\"\n\"Izaberite ispravnu brazilsku državu. Država nije jedna od dostupnih država.\"\n\n#: br/forms.py:93\nmsgid \"Invalid CPF number.\"\nmsgstr \"Neispravan CPF broj.\"\n\n#: br/forms.py:94\nmsgid \"This field requires at most 11 digits or 14 characters.\"\nmsgstr \"Ovo polje zahtjeva najviše 11 numeričkih znakova ili 14 slova.\"\n\n#: br/forms.py:133\nmsgid \"Invalid CNPJ number.\"\nmsgstr \"Neispravan CNPJ broj.\"\n\n#: br/forms.py:135\nmsgid \"This field requires at least 14 digits\"\nmsgstr \"Ovo polje zahtjeva bar 14 numeričkih znakova\"\n\n#: ca/forms.py:29\nmsgid \"Enter a postal code in the format XXX XXX.\"\nmsgstr \"Unesite poštanski broj formata XXX XXX.\"\n\n#: ca/forms.py:47 us/forms.py:30\nmsgid \"Phone numbers must be in XXX-XXX-XXXX format.\"\nmsgstr \"Telefonski brojevi moraju biti u XXX-XXX-XXXX formatu.\"\n\n#: ca/forms.py:69\nmsgid \"Enter a Canadian province or territory.\"\nmsgstr \"\"\n\n#: ca/forms.py:110\nmsgid \"Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.\"\nmsgstr \"\"\n\"Unesite valjani kanadski broj socijalnog osiguranja formata XXX-XXX-XXX.\"\n\n#: ch/ch_states.py:5\nmsgid \"Aargau\"\nmsgstr \"Aargau\"\n\n#: ch/ch_states.py:6\nmsgid \"Appenzell Innerrhoden\"\nmsgstr \"Appenzell Innerrhoden\"\n\n#: ch/ch_states.py:7\nmsgid \"Appenzell Ausserrhoden\"\nmsgstr \"Appenzell Ausserrhoden\"\n\n#: ch/ch_states.py:8\nmsgid \"Basel-Stadt\"\nmsgstr \"Basel-Stadt\"\n\n#: ch/ch_states.py:9\nmsgid \"Basel-Land\"\nmsgstr \"Basel-Land\"\n\n#: ch/ch_states.py:10\nmsgid \"Berne\"\nmsgstr \"Berne\"\n\n#: ch/ch_states.py:11\nmsgid \"Fribourg\"\nmsgstr \"Fribourg\"\n\n#: ch/ch_states.py:12\nmsgid \"Geneva\"\nmsgstr \"Ženeva\"\n\n#: ch/ch_states.py:13\nmsgid \"Glarus\"\nmsgstr \"Glarus\"\n\n#: ch/ch_states.py:14\nmsgid \"Graubuenden\"\nmsgstr \"Graubuenden\"\n\n#: ch/ch_states.py:15\nmsgid \"Jura\"\nmsgstr \"Jura\"\n\n#: ch/ch_states.py:16\nmsgid \"Lucerne\"\nmsgstr \"Lucerne\"\n\n#: ch/ch_states.py:17\nmsgid \"Neuchatel\"\nmsgstr \"Neuchatel\"\n\n#: ch/ch_states.py:18\nmsgid \"Nidwalden\"\nmsgstr \"Nidwalden\"\n\n#: ch/ch_states.py:19\nmsgid \"Obwalden\"\nmsgstr \"Obwalden\"\n\n#: ch/ch_states.py:20\nmsgid \"Schaffhausen\"\nmsgstr \"Schaffhausen\"\n\n#: ch/ch_states.py:21\nmsgid \"Schwyz\"\nmsgstr \"Schwyz\"\n\n#: ch/ch_states.py:22\nmsgid \"Solothurn\"\nmsgstr \"Solothurn\"\n\n#: ch/ch_states.py:23\nmsgid \"St. Gallen\"\nmsgstr \"St. Gallen\"\n\n#: ch/ch_states.py:24\nmsgid \"Thurgau\"\nmsgstr \"Thurgau\"\n\n#: ch/ch_states.py:25\nmsgid \"Ticino\"\nmsgstr \"Ticino\"\n\n#: ch/ch_states.py:26\nmsgid \"Uri\"\nmsgstr \"Uri\"\n\n#: ch/ch_states.py:27\nmsgid \"Valais\"\nmsgstr \"Valais\"\n\n#: ch/ch_states.py:28\nmsgid \"Vaud\"\nmsgstr \"Vaud\"\n\n#: ch/ch_states.py:29\nmsgid \"Zug\"\nmsgstr \"Zug\"\n\n#: ch/ch_states.py:30\nmsgid \"Zurich\"\nmsgstr \"Zurich\"\n\n#: ch/forms.py:37\nmsgid \"Phone numbers must be in 0XX XXX XX XX format.\"\nmsgstr \"\"\n\n#: ch/forms.py:68\nmsgid \"\"\n\"Enter a valid Swiss identity or passport card number in X1234567<0 or \"\n\"1234567890 format.\"\nmsgstr \"\"\n\"Unesite ispravan švicarski identifikacijski broj ili broj putovnice formata \"\n\"X1234567<0 ili 1234567890\"\n\n#: cl/forms.py:32\nmsgid \"Enter a valid Chilean RUT.\"\nmsgstr \"Unesite ispravan čileanski RUT\"\n\n#: cl/forms.py:33\nmsgid \"Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.\"\nmsgstr \"Unesite ispravan čileanski RUT formata XX.XXX.XXX-X.\"\n\n#: cl/forms.py:34\nmsgid \"The Chilean RUT is not valid.\"\nmsgstr \"Čileanski RUT nije ispravan.\"\n\n#: cn/forms.py:84\nmsgid \"Enter a post code in the format XXXXXX.\"\nmsgstr \"Unesite poštanski kod u obliku XXXXXX.\"\n\n#: cn/forms.py:105\nmsgid \"ID Card Number consists of 15 or 18 digits.\"\nmsgstr \"Broj osobne iskaznice sastoji se od 15 ili 18 znamenki.\"\n\n#: cn/forms.py:106\nmsgid \"Invalid ID Card Number: Wrong checksum\"\nmsgstr \"Neispravan broj osobne iskaznice: Pogrešan checksum\"\n\n#: cn/forms.py:107\nmsgid \"Invalid ID Card Number: Wrong birthdate\"\nmsgstr \"Neispravan broj osobne iskaznice: Pogrešan datum rođenja\"\n\n#: cn/forms.py:108\nmsgid \"Invalid ID Card Number: Wrong location code\"\nmsgstr \"Neispravan broj osobne iskaznice: Pogrešan kod lokacije\"\n\n#: cn/forms.py:193\nmsgid \"Enter a valid phone number.\"\nmsgstr \"Unesite valjani telefonski broj.\"\n\n#: cn/forms.py:210\nmsgid \"Enter a valid cell number.\"\nmsgstr \"Unesite valjani broj mobitela.\"\n\n#: cz/cz_regions.py:8\nmsgid \"Prague\"\nmsgstr \"Prag\"\n\n#: cz/cz_regions.py:9\nmsgid \"Central Bohemian Region\"\nmsgstr \"Središnja Češka\"\n\n#: cz/cz_regions.py:10\nmsgid \"South Bohemian Region\"\nmsgstr \"Južna Češka\"\n\n#: cz/cz_regions.py:11\nmsgid \"Pilsen Region\"\nmsgstr \"Plzeňski kraj\"\n\n#: cz/cz_regions.py:12\nmsgid \"Carlsbad Region\"\nmsgstr \"Karlovarski kraj\"\n\n#: cz/cz_regions.py:13\nmsgid \"Usti Region\"\nmsgstr \"Ústečki kraj\"\n\n#: cz/cz_regions.py:14\nmsgid \"Liberec Region\"\nmsgstr \"Liberečki kraj\"\n\n#: cz/cz_regions.py:15\nmsgid \"Hradec Region\"\nmsgstr \"Královéhradečki kraj\"\n\n#: cz/cz_regions.py:16\nmsgid \"Pardubice Region\"\nmsgstr \"Pardubički kraj\"\n\n#: cz/cz_regions.py:17\nmsgid \"Vysocina Region\"\nmsgstr \"Vysočina\"\n\n#: cz/cz_regions.py:18\nmsgid \"South Moravian Region\"\nmsgstr \"Južna Moravska\"\n\n#: cz/cz_regions.py:19\nmsgid \"Olomouc Region\"\nmsgstr \"Olomoučki kraj\"\n\n#: cz/cz_regions.py:20\nmsgid \"Zlin Region\"\nmsgstr \"Zlínski kraj\"\n\n#: cz/cz_regions.py:21\nmsgid \"Moravian-Silesian Region\"\nmsgstr \"Moravsko-šleski kraj\"\n\n#: cz/forms.py:32 sk/forms.py:33\nmsgid \"Enter a postal code in the format XXXXX or XXX XX.\"\nmsgstr \"Unesi ispravan poštanski broj formata XXXXX ili XXX XX.\"\n\n#: cz/forms.py:52\nmsgid \"Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.\"\nmsgstr \"Unesite datum rođenja formata XXXXXX/XXXX ili XXXXXXXXXX.\"\n\n#: cz/forms.py:53\nmsgid \"Enter a valid birth number.\"\nmsgstr \"Unesite ispravan datum rodenja.\"\n\n#: cz/forms.py:102\nmsgid \"Enter a valid IC number.\"\nmsgstr \"Unesite ispravan IC broj.\"\n\n#: de/de_states.py:5\nmsgid \"Baden-Wuerttemberg\"\nmsgstr \"Baden-Wuerttemberg\"\n\n#: de/de_states.py:6\nmsgid \"Bavaria\"\nmsgstr \"Bavaria\"\n\n#: de/de_states.py:7\nmsgid \"Berlin\"\nmsgstr \"Berlin\"\n\n#: de/de_states.py:8\nmsgid \"Brandenburg\"\nmsgstr \"Brandenburg\"\n\n#: de/de_states.py:9\nmsgid \"Bremen\"\nmsgstr \"Bremen\"\n\n#: de/de_states.py:10\nmsgid \"Hamburg\"\nmsgstr \"Hamburg\"\n\n#: de/de_states.py:11\nmsgid \"Hessen\"\nmsgstr \"Hessen\"\n\n#: de/de_states.py:12\nmsgid \"Mecklenburg-Western Pomerania\"\nmsgstr \"Mecklenburg-Western Pomerania\"\n\n#: de/de_states.py:13\nmsgid \"Lower Saxony\"\nmsgstr \"Donja Saska\"\n\n#: de/de_states.py:14\nmsgid \"North Rhine-Westphalia\"\nmsgstr \"Sjeverno Porajnje-Zapadna Falačka\"\n\n#: de/de_states.py:15\nmsgid \"Rhineland-Palatinate\"\nmsgstr \"Rhineland-Palatinate\"\n\n#: de/de_states.py:16\nmsgid \"Saarland\"\nmsgstr \"Saarland\"\n\n#: de/de_states.py:17\nmsgid \"Saxony\"\nmsgstr \"Saska\"\n\n#: de/de_states.py:18\nmsgid \"Saxony-Anhalt\"\nmsgstr \"Saxony-Anhalt\"\n\n#: de/de_states.py:19\nmsgid \"Schleswig-Holstein\"\nmsgstr \"Schleswig-Holstein\"\n\n#: de/de_states.py:20\nmsgid \"Thuringia\"\nmsgstr \"Thuringia\"\n\n#: de/forms.py:20 fi/forms.py:18 fr/forms.py:20\nmsgid \"Enter a zip code in the format XXXXX.\"\nmsgstr \"Unesite zip kod formata XXXXX.\"\n\n#: de/forms.py:46\nmsgid \"\"\n\"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"format.\"\nmsgstr \"\"\n\"Unesite broj njemačke identifikacijske kartice formata XXXXXXXXXXX-XXXXXXX-\"\n\"XXXXXXX-X.\"\n\n#: es/es_provinces.py:5\nmsgid \"Araba\"\nmsgstr \"\"\n\n#: es/es_provinces.py:6\nmsgid \"Albacete\"\nmsgstr \"Albacete\"\n\n#: es/es_provinces.py:7\nmsgid \"Alacant\"\nmsgstr \"Alacant\"\n\n#: es/es_provinces.py:8\nmsgid \"Almeria\"\nmsgstr \"Almeria\"\n\n#: es/es_provinces.py:9\nmsgid \"Avila\"\nmsgstr \"Avila\"\n\n#: es/es_provinces.py:10\nmsgid \"Badajoz\"\nmsgstr \"Badajoz\"\n\n#: es/es_provinces.py:11\nmsgid \"Illes Balears\"\nmsgstr \"Illes Balears\"\n\n#: es/es_provinces.py:12\nmsgid \"Barcelona\"\nmsgstr \"Barcelona\"\n\n#: es/es_provinces.py:13\nmsgid \"Burgos\"\nmsgstr \"Burgos\"\n\n#: es/es_provinces.py:14\nmsgid \"Caceres\"\nmsgstr \"Caceres\"\n\n#: es/es_provinces.py:15\nmsgid \"Cadiz\"\nmsgstr \"Cadiz\"\n\n#: es/es_provinces.py:16\nmsgid \"Castello\"\nmsgstr \"Castello\"\n\n#: es/es_provinces.py:17\nmsgid \"Ciudad Real\"\nmsgstr \"Ciudad Real\"\n\n#: es/es_provinces.py:18\nmsgid \"Cordoba\"\nmsgstr \"Cordoba\"\n\n#: es/es_provinces.py:19\nmsgid \"A Coruna\"\nmsgstr \"A Coruna\"\n\n#: es/es_provinces.py:20\nmsgid \"Cuenca\"\nmsgstr \"Cuenca\"\n\n#: es/es_provinces.py:21\nmsgid \"Girona\"\nmsgstr \"Girona\"\n\n#: es/es_provinces.py:22\nmsgid \"Granada\"\nmsgstr \"Granada\"\n\n#: es/es_provinces.py:23\nmsgid \"Guadalajara\"\nmsgstr \"Guadalajara\"\n\n#: es/es_provinces.py:24\nmsgid \"Guipuzkoa\"\nmsgstr \"Guipuzkoa\"\n\n#: es/es_provinces.py:25\nmsgid \"Huelva\"\nmsgstr \"Huelva\"\n\n#: es/es_provinces.py:26\nmsgid \"Huesca\"\nmsgstr \"Huesca\"\n\n#: es/es_provinces.py:27\nmsgid \"Jaen\"\nmsgstr \"Jaen\"\n\n#: es/es_provinces.py:28\nmsgid \"Leon\"\nmsgstr \"Leon\"\n\n#: es/es_provinces.py:29\nmsgid \"Lleida\"\nmsgstr \"Lleida\"\n\n#: es/es_provinces.py:30 es/es_regions.py:17\nmsgid \"La Rioja\"\nmsgstr \"La Rioja\"\n\n#: es/es_provinces.py:31\nmsgid \"Lugo\"\nmsgstr \"Lugo\"\n\n#: es/es_provinces.py:32 es/es_regions.py:18\nmsgid \"Madrid\"\nmsgstr \"Madrid\"\n\n#: es/es_provinces.py:33\nmsgid \"Malaga\"\nmsgstr \"Malaga\"\n\n#: es/es_provinces.py:34\nmsgid \"Murcia\"\nmsgstr \"Murcia\"\n\n#: es/es_provinces.py:35\nmsgid \"Navarre\"\nmsgstr \"Navarre\"\n\n#: es/es_provinces.py:36\nmsgid \"Ourense\"\nmsgstr \"Ourense\"\n\n#: es/es_provinces.py:37\nmsgid \"Asturias\"\nmsgstr \"Asturias\"\n\n#: es/es_provinces.py:38\nmsgid \"Palencia\"\nmsgstr \"Palencia\"\n\n#: es/es_provinces.py:39\nmsgid \"Las Palmas\"\nmsgstr \"Las Palmas\"\n\n#: es/es_provinces.py:40\nmsgid \"Pontevedra\"\nmsgstr \"Pontevedra\"\n\n#: es/es_provinces.py:41\nmsgid \"Salamanca\"\nmsgstr \"Salamanca\"\n\n#: es/es_provinces.py:42\nmsgid \"Santa Cruz de Tenerife\"\nmsgstr \"Santa Cruz de Tenerife\"\n\n#: es/es_provinces.py:43 es/es_regions.py:11\nmsgid \"Cantabria\"\nmsgstr \"Cantabria\"\n\n#: es/es_provinces.py:44\nmsgid \"Segovia\"\nmsgstr \"Segovia\"\n\n#: es/es_provinces.py:45\nmsgid \"Seville\"\nmsgstr \"Seville\"\n\n#: es/es_provinces.py:46\nmsgid \"Soria\"\nmsgstr \"Soria\"\n\n#: es/es_provinces.py:47\nmsgid \"Tarragona\"\nmsgstr \"Tarragona\"\n\n#: es/es_provinces.py:48\nmsgid \"Teruel\"\nmsgstr \"Teruel\"\n\n#: es/es_provinces.py:49\nmsgid \"Toledo\"\nmsgstr \"Toledo\"\n\n#: es/es_provinces.py:50\nmsgid \"Valencia\"\nmsgstr \"Valencia\"\n\n#: es/es_provinces.py:51\nmsgid \"Valladolid\"\nmsgstr \"Valladolid\"\n\n#: es/es_provinces.py:52\nmsgid \"Bizkaia\"\nmsgstr \"Bizkaia\"\n\n#: es/es_provinces.py:53\nmsgid \"Zamora\"\nmsgstr \"Zamora\"\n\n#: es/es_provinces.py:54\nmsgid \"Zaragoza\"\nmsgstr \"Zaragoza\"\n\n#: es/es_provinces.py:55\nmsgid \"Ceuta\"\nmsgstr \"Ceuta\"\n\n#: es/es_provinces.py:56\nmsgid \"Melilla\"\nmsgstr \"Melilla\"\n\n#: es/es_regions.py:5\nmsgid \"Andalusia\"\nmsgstr \"Andalusia\"\n\n#: es/es_regions.py:6\nmsgid \"Aragon\"\nmsgstr \"Aragon\"\n\n#: es/es_regions.py:7\nmsgid \"Principality of Asturias\"\nmsgstr \"Kneževina Asturija\"\n\n#: es/es_regions.py:8\nmsgid \"Balearic Islands\"\nmsgstr \"Balearsko otočje\"\n\n#: es/es_regions.py:9\nmsgid \"Basque Country\"\nmsgstr \"Baskija\"\n\n#: es/es_regions.py:10\nmsgid \"Canary Islands\"\nmsgstr \"Kanarski Otoci\"\n\n#: es/es_regions.py:12\nmsgid \"Castile-La Mancha\"\nmsgstr \"Kastilja-La Mancha\"\n\n#: es/es_regions.py:13\nmsgid \"Castile and Leon\"\nmsgstr \"Kastilja i Leon\"\n\n#: es/es_regions.py:14\nmsgid \"Catalonia\"\nmsgstr \"Katalonija\"\n\n#: es/es_regions.py:15\nmsgid \"Extremadura\"\nmsgstr \"Extremadura\"\n\n#: es/es_regions.py:16\nmsgid \"Galicia\"\nmsgstr \"Galicia\"\n\n#: es/es_regions.py:19\nmsgid \"Region of Murcia\"\nmsgstr \"Regija Murcia\"\n\n#: es/es_regions.py:20\nmsgid \"Foral Community of Navarre\"\nmsgstr \"Foral Community of Navarre\"\n\n#: es/es_regions.py:21\nmsgid \"Valencian Community\"\nmsgstr \"Valencian Community\"\n\n#: es/forms.py:26\nmsgid \"Enter a valid postal code in the range and format 01XXX - 52XXX.\"\nmsgstr \"Unesite ispravan poštanski broj u rasponu i formatu od 01XXX - 52XXX.\"\n\n#: es/forms.py:46\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or \"\n\"9XXXXXXXX.\"\nmsgstr \"\"\n\"Unesite ispravan broj telefona u jednom od formata 6XXXXXXXX, 8XXXXXXXX ili \"\n\"9XXXXXXXX.\"\n\n#: es/forms.py:73\nmsgid \"Please enter a valid NIF, NIE, or CIF.\"\nmsgstr \"Unesite ispravan NIF, NIE ili CIF.\"\n\n#: es/forms.py:74\nmsgid \"Please enter a valid NIF or NIE.\"\nmsgstr \"Molim unesite ispravan NIF ili NIE.\"\n\n#: es/forms.py:75\nmsgid \"Invalid checksum for NIF.\"\nmsgstr \"Neispravan checksum za NIF\"\n\n#: es/forms.py:76\nmsgid \"Invalid checksum for NIE.\"\nmsgstr \"Neispravan checksum za NIF\"\n\n#: es/forms.py:77\nmsgid \"Invalid checksum for CIF.\"\nmsgstr \"Neispravan checksum za CIF.\"\n\n#: es/forms.py:149\nmsgid \"\"\n\"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.\"\nmsgstr \"\"\n\"Molim unesite ispravan broj bankovnog računa formata XXXX-XXXX-XX-XXXXXXXXXX.\"\n\n#: es/forms.py:150\nmsgid \"Invalid checksum for bank account number.\"\nmsgstr \"Neispravan checksum za broj bankovnog računa.\"\n\n#: fi/forms.py:33\nmsgid \"Enter a valid Finnish social security number.\"\nmsgstr \"Unesite ispravan broj finskog socijalnog osiguranja.\"\n\n#: fr/forms.py:35\nmsgid \"Phone numbers must be in 0X XX XX XX XX format.\"\nmsgstr \"Telefonski brojevi moraju biti formata 0X XX XX XX XX.\"\n\n#: gb/forms.py:25\nmsgid \"Enter a valid postcode.\"\nmsgstr \"Unesite ispravan poštanski broj.\"\n\n#: gb/gb_regions.py:11\nmsgid \"Bedfordshire\"\nmsgstr \"Bedfordshire\"\n\n#: gb/gb_regions.py:12\nmsgid \"Buckinghamshire\"\nmsgstr \"Buckinghamshire\"\n\n#: gb/gb_regions.py:14\nmsgid \"Cheshire\"\nmsgstr \"Cheshire\"\n\n#: gb/gb_regions.py:15\nmsgid \"Cornwall and Isles of Scilly\"\nmsgstr \"Cornwall i Otoci Scilly\"\n\n#: gb/gb_regions.py:16\nmsgid \"Cumbria\"\nmsgstr \"Cumbria\"\n\n#: gb/gb_regions.py:17\nmsgid \"Derbyshire\"\nmsgstr \"Derbyshire\"\n\n#: gb/gb_regions.py:18\nmsgid \"Devon\"\nmsgstr \"Devon\"\n\n#: gb/gb_regions.py:19\nmsgid \"Dorset\"\nmsgstr \"Dorset\"\n\n#: gb/gb_regions.py:20\nmsgid \"Durham\"\nmsgstr \"Durham\"\n\n#: gb/gb_regions.py:21\nmsgid \"East Sussex\"\nmsgstr \"East Sussex\"\n\n#: gb/gb_regions.py:22\nmsgid \"Essex\"\nmsgstr \"Essex\"\n\n#: gb/gb_regions.py:23\nmsgid \"Gloucestershire\"\nmsgstr \"Gloucestershire\"\n\n#: gb/gb_regions.py:24\nmsgid \"Greater London\"\nmsgstr \"Greater London\"\n\n#: gb/gb_regions.py:25\nmsgid \"Greater Manchester\"\nmsgstr \"Greater Manchester\"\n\n#: gb/gb_regions.py:26\nmsgid \"Hampshire\"\nmsgstr \"Hampshire\"\n\n#: gb/gb_regions.py:27\nmsgid \"Hertfordshire\"\nmsgstr \"Hertfordshire\"\n\n#: gb/gb_regions.py:28\nmsgid \"Kent\"\nmsgstr \"Kent\"\n\n#: gb/gb_regions.py:29\nmsgid \"Lancashire\"\nmsgstr \"Lancashire\"\n\n#: gb/gb_regions.py:30\nmsgid \"Leicestershire\"\nmsgstr \"Leicestershire\"\n\n#: gb/gb_regions.py:31\nmsgid \"Lincolnshire\"\nmsgstr \"Lincolnshire\"\n\n#: gb/gb_regions.py:32\nmsgid \"Merseyside\"\nmsgstr \"Merseyside\"\n\n#: gb/gb_regions.py:33\nmsgid \"Norfolk\"\nmsgstr \"Norfolk\"\n\n#: gb/gb_regions.py:34\nmsgid \"North Yorkshire\"\nmsgstr \"North Yorkshire\"\n\n#: gb/gb_regions.py:35\nmsgid \"Northamptonshire\"\nmsgstr \"Northamptonshire\"\n\n#: gb/gb_regions.py:36\nmsgid \"Northumberland\"\nmsgstr \"Northumberland\"\n\n#: gb/gb_regions.py:37\nmsgid \"Nottinghamshire\"\nmsgstr \"Nottinghamshire\"\n\n#: gb/gb_regions.py:38\nmsgid \"Oxfordshire\"\nmsgstr \"Oxfordshire\"\n\n#: gb/gb_regions.py:39\nmsgid \"Shropshire\"\nmsgstr \"Shropshire\"\n\n#: gb/gb_regions.py:40\nmsgid \"Somerset\"\nmsgstr \"Somerset\"\n\n#: gb/gb_regions.py:41\nmsgid \"South Yorkshire\"\nmsgstr \"South Yorkshire\"\n\n#: gb/gb_regions.py:42\nmsgid \"Staffordshire\"\nmsgstr \"Staffordshire\"\n\n#: gb/gb_regions.py:43\nmsgid \"Suffolk\"\nmsgstr \"Suffolk\"\n\n#: gb/gb_regions.py:44\nmsgid \"Surrey\"\nmsgstr \"Surrey\"\n\n#: gb/gb_regions.py:45\nmsgid \"Tyne and Wear\"\nmsgstr \"Tyne and Wear\"\n\n#: gb/gb_regions.py:46\nmsgid \"Warwickshire\"\nmsgstr \"Warwickshire\"\n\n#: gb/gb_regions.py:47\nmsgid \"West Midlands\"\nmsgstr \"West Midlands\"\n\n#: gb/gb_regions.py:48\nmsgid \"West Sussex\"\nmsgstr \"West Sussex\"\n\n#: gb/gb_regions.py:49\nmsgid \"West Yorkshire\"\nmsgstr \"West Yorkshire\"\n\n#: gb/gb_regions.py:50\nmsgid \"Wiltshire\"\nmsgstr \"Wiltshire\"\n\n#: gb/gb_regions.py:51\nmsgid \"Worcestershire\"\nmsgstr \"Worcestershire\"\n\n#: gb/gb_regions.py:55\nmsgid \"County Antrim\"\nmsgstr \"Županija Antrim\"\n\n#: gb/gb_regions.py:56\nmsgid \"County Armagh\"\nmsgstr \"Županija Armagh\"\n\n#: gb/gb_regions.py:57\nmsgid \"County Down\"\nmsgstr \"Županija Down\"\n\n#: gb/gb_regions.py:58\nmsgid \"County Fermanagh\"\nmsgstr \"Županija Fermanagh\"\n\n#: gb/gb_regions.py:59\nmsgid \"County Londonderry\"\nmsgstr \"Županija Londonderry\"\n\n#: gb/gb_regions.py:60\nmsgid \"County Tyrone\"\nmsgstr \"Županija Tyrone\"\n\n#: gb/gb_regions.py:64\nmsgid \"Clwyd\"\nmsgstr \"Clwyd\"\n\n#: gb/gb_regions.py:65\nmsgid \"Dyfed\"\nmsgstr \"Dyfed\"\n\n#: gb/gb_regions.py:66\nmsgid \"Gwent\"\nmsgstr \"Gwent\"\n\n#: gb/gb_regions.py:67\nmsgid \"Gwynedd\"\nmsgstr \"Gwynedd\"\n\n#: gb/gb_regions.py:68\nmsgid \"Mid Glamorgan\"\nmsgstr \"Mid Glamorgan\"\n\n#: gb/gb_regions.py:69\nmsgid \"Powys\"\nmsgstr \"Powys\"\n\n#: gb/gb_regions.py:70\nmsgid \"South Glamorgan\"\nmsgstr \"Južni Glamorgan\"\n\n#: gb/gb_regions.py:71\nmsgid \"West Glamorgan\"\nmsgstr \"Zapadni Glamorgan\"\n\n#: gb/gb_regions.py:75\nmsgid \"Borders\"\nmsgstr \"Borders\"\n\n#: gb/gb_regions.py:76\nmsgid \"Central Scotland\"\nmsgstr \"Centralna Škotska\"\n\n#: gb/gb_regions.py:77\nmsgid \"Dumfries and Galloway\"\nmsgstr \"Dumfries and Galloway\"\n\n#: gb/gb_regions.py:78\nmsgid \"Fife\"\nmsgstr \"Fife\"\n\n#: gb/gb_regions.py:79\nmsgid \"Grampian\"\nmsgstr \"Grampian\"\n\n#: gb/gb_regions.py:80\nmsgid \"Highland\"\nmsgstr \"Highland\"\n\n#: gb/gb_regions.py:81\nmsgid \"Lothian\"\nmsgstr \"Lothian\"\n\n#: gb/gb_regions.py:82\nmsgid \"Orkney Islands\"\nmsgstr \"Orkney Islands\"\n\n#: gb/gb_regions.py:83\nmsgid \"Shetland Islands\"\nmsgstr \"Shetland Islands\"\n\n#: gb/gb_regions.py:84\nmsgid \"Strathclyde\"\nmsgstr \"Strathclyde\"\n\n#: gb/gb_regions.py:85\nmsgid \"Tayside\"\nmsgstr \"Tayside\"\n\n#: gb/gb_regions.py:86\nmsgid \"Western Isles\"\nmsgstr \"Zapadno Otočje\"\n\n#: gb/gb_regions.py:90\nmsgid \"England\"\nmsgstr \"Engleska\"\n\n#: gb/gb_regions.py:91\nmsgid \"Northern Ireland\"\nmsgstr \"Sjeverna irska\"\n\n#: gb/gb_regions.py:92\nmsgid \"Scotland\"\nmsgstr \"Škotska\"\n\n#: gb/gb_regions.py:93\nmsgid \"Wales\"\nmsgstr \"Wales\"\n\n#: hk/forms.py:37\n#, python-format\nmsgid \"Phone number should not start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:40\n#, python-format\nmsgid \"Phone number must be in one of the following formats: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:42\n#, python-format\nmsgid \"Phone number should start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hr/forms.py:76\nmsgid \"Enter a valid 13 digit JMBG\"\nmsgstr \"Unesite valjani JMBG sa 13 znamenka\"\n\n#: hr/forms.py:77\nmsgid \"Error in date segment\"\nmsgstr \"Pogreška u dijelu datuma\"\n\n#: hr/forms.py:123\nmsgid \"Enter a valid 11 digit OIB\"\nmsgstr \"Unesite valjani 11 znamenkasti OIB\"\n\n#: hr/forms.py:152 id/forms.py:112\nmsgid \"Enter a valid vehicle license plate number\"\nmsgstr \"Unesite ispravanu registraciju za vozilo\"\n\n#: hr/forms.py:153\nmsgid \"Enter a valid location code\"\nmsgstr \"Unesite valjani kod lokacije\"\n\n#: hr/forms.py:154\nmsgid \"Number part cannot be zero\"\nmsgstr \"Dio broja ne može biti nula\"\n\n#: hr/forms.py:190\nmsgid \"Enter a valid 5 digit postal code\"\nmsgstr \"Unesite valjani 5 znamenkasti poštanski broj\"\n\n#: hr/forms.py:218 id/forms.py:72 nl/forms.py:56\nmsgid \"Enter a valid phone number\"\nmsgstr \"Unesite ispravan telefonski broj\"\n\n#: hr/forms.py:219\nmsgid \"Enter a valid area or mobile network code\"\nmsgstr \"Unesite valjani fiksni ili mobilni kod mreže\"\n\n#: hr/forms.py:220\nmsgid \"The phone nubmer is too long\"\nmsgstr \"Telefonski broj je predugačak\"\n\n#: hr/forms.py:258\nmsgid \"Enter a valid 19 digit JMBAG starting with 601983\"\nmsgstr \"Unesite valjani 19 znamenkasti JMBAG počevši od 601983\"\n\n#: hr/forms.py:259\nmsgid \"Card issue number cannot be zero\"\nmsgstr \"Broj izdanja kartice ne može biti nula\"\n\n#: hr/hr_choices.py:14\nmsgid \"Grad Zagreb\"\nmsgstr \"Grad Zagreb\"\n\n#: hr/hr_choices.py:15\nmsgid \"Bjelovarsko-bilogorska županija\"\nmsgstr \"Bjelovarsko-bilogorska županija\"\n\n#: hr/hr_choices.py:16\nmsgid \"Brodsko-posavska županija\"\nmsgstr \"Brodsko-posavska županija\"\n\n#: hr/hr_choices.py:17\nmsgid \"Dubrovačko-neretvanska županija\"\nmsgstr \"Dubrovačko-neretvanska županija\"\n\n#: hr/hr_choices.py:18\nmsgid \"Istarska županija\"\nmsgstr \"Istarska županija\"\n\n#: hr/hr_choices.py:19\nmsgid \"Karlovačka županija\"\nmsgstr \"Karlovačka županija\"\n\n#: hr/hr_choices.py:20\nmsgid \"Koprivničko-križevačka županija\"\nmsgstr \"Koprivničko-križevačka županija\"\n\n#: hr/hr_choices.py:21\nmsgid \"Krapinsko-zagorska županija\"\nmsgstr \"Krapinsko-zagorska županija\"\n\n#: hr/hr_choices.py:22\nmsgid \"Ličko-senjska županija\"\nmsgstr \"Ličko-senjska županija\"\n\n#: hr/hr_choices.py:23\nmsgid \"Međimurska županija\"\nmsgstr \"Međimurska županija\"\n\n#: hr/hr_choices.py:24\nmsgid \"Osječko-baranjska županija\"\nmsgstr \"Osječko-baranjska županija\"\n\n#: hr/hr_choices.py:25\nmsgid \"Požeško-slavonska županija\"\nmsgstr \"Požeško-slavonska županija\"\n\n#: hr/hr_choices.py:26\nmsgid \"Primorsko-goranska županija\"\nmsgstr \"Primorsko-goranska županija\"\n\n#: hr/hr_choices.py:27\nmsgid \"Sisačko-moslavačka županija\"\nmsgstr \"Sisačko-moslavačka županija\"\n\n#: hr/hr_choices.py:28\nmsgid \"Splitsko-dalmatinska županija\"\nmsgstr \"Splitsko-dalmatinska županija\"\n\n#: hr/hr_choices.py:29\nmsgid \"Šibensko-kninska županija\"\nmsgstr \"Šibensko-kninska županija\"\n\n#: hr/hr_choices.py:30\nmsgid \"Varaždinska županija\"\nmsgstr \"Varaždinska županija\"\n\n#: hr/hr_choices.py:31\nmsgid \"Virovitičko-podravska županija\"\nmsgstr \"Virovitičko-podravska županija\"\n\n#: hr/hr_choices.py:32\nmsgid \"Vukovarsko-srijemska županija\"\nmsgstr \"Vukovarsko-srijemska županija\"\n\n#: hr/hr_choices.py:33\nmsgid \"Zadarska županija\"\nmsgstr \"Zadarska županija\"\n\n#: hr/hr_choices.py:34\nmsgid \"Zagrebačka županija\"\nmsgstr \"Zagrebačka županija\"\n\n#: id/forms.py:31\nmsgid \"Enter a valid post code\"\nmsgstr \"Unesite ispravan poštanski broj\"\n\n#: id/forms.py:176\nmsgid \"Enter a valid NIK/KTP number\"\nmsgstr \"Unesite ispravan NIK/KTP broj.\"\n\n#: id/id_choices.py:15\nmsgid \"Aceh\"\nmsgstr \"Aceh\"\n\n#: id/id_choices.py:16 id/id_choices.py:79\nmsgid \"Bali\"\nmsgstr \"Bali\"\n\n#: id/id_choices.py:17 id/id_choices.py:51\nmsgid \"Banten\"\nmsgstr \"Banten\"\n\n#: id/id_choices.py:18 id/id_choices.py:60\nmsgid \"Bengkulu\"\nmsgstr \"Bengkulu\"\n\n#: id/id_choices.py:19 id/id_choices.py:53\nmsgid \"Yogyakarta\"\nmsgstr \"Yogyakarta\"\n\n#: id/id_choices.py:20 id/id_choices.py:57\nmsgid \"Jakarta\"\nmsgstr \"Džakarta\"\n\n#: id/id_choices.py:21 id/id_choices.py:81\nmsgid \"Gorontalo\"\nmsgstr \"Gorontalo\"\n\n#: id/id_choices.py:22 id/id_choices.py:63\nmsgid \"Jambi\"\nmsgstr \"Jambi\"\n\n#: id/id_choices.py:23\nmsgid \"Jawa Barat\"\nmsgstr \"Jawa Barat\"\n\n#: id/id_choices.py:24\nmsgid \"Jawa Tengah\"\nmsgstr \"Jawa Tengah\"\n\n#: id/id_choices.py:25\nmsgid \"Jawa Timur\"\nmsgstr \"Jawa Timur\"\n\n#: id/id_choices.py:26 id/id_choices.py:94\nmsgid \"Kalimantan Barat\"\nmsgstr \"Kalimantan Barat\"\n\n#: id/id_choices.py:27 id/id_choices.py:72\nmsgid \"Kalimantan Selatan\"\nmsgstr \"Kalimantan Selatan\"\n\n#: id/id_choices.py:28 id/id_choices.py:95\nmsgid \"Kalimantan Tengah\"\nmsgstr \"Kalimantan Tengah\"\n\n#: id/id_choices.py:29 id/id_choices.py:96\nmsgid \"Kalimantan Timur\"\nmsgstr \"Kalimantan Timur\"\n\n#: id/id_choices.py:30\nmsgid \"Kepulauan Bangka-Belitung\"\nmsgstr \"Kepulauan Bangka-Belitung\"\n\n#: id/id_choices.py:31 id/id_choices.py:68\nmsgid \"Kepulauan Riau\"\nmsgstr \"Kepulauan Riau\"\n\n#: id/id_choices.py:32 id/id_choices.py:61\nmsgid \"Lampung\"\nmsgstr \"Lampung\"\n\n#: id/id_choices.py:33 id/id_choices.py:76\nmsgid \"Maluku\"\nmsgstr \"Maluku\"\n\n#: id/id_choices.py:34 id/id_choices.py:77\nmsgid \"Maluku Utara\"\nmsgstr \"Maluku Utara\"\n\n#: id/id_choices.py:35\nmsgid \"Nusa Tenggara Barat\"\nmsgstr \"Nusa Tenggara Barat\"\n\n#: id/id_choices.py:36\nmsgid \"Nusa Tenggara Timur\"\nmsgstr \"Nusa Tenggara Timur\"\n\n#: id/id_choices.py:37\nmsgid \"Papua\"\nmsgstr \"Papua\"\n\n#: id/id_choices.py:38\nmsgid \"Papua Barat\"\nmsgstr \"Papua Barat\"\n\n#: id/id_choices.py:39 id/id_choices.py:66\nmsgid \"Riau\"\nmsgstr \"Riau\"\n\n#: id/id_choices.py:40 id/id_choices.py:74\nmsgid \"Sulawesi Barat\"\nmsgstr \"Sulawesi Barat\"\n\n#: id/id_choices.py:41 id/id_choices.py:75\nmsgid \"Sulawesi Selatan\"\nmsgstr \"Sulawesi Selatan\"\n\n#: id/id_choices.py:42 id/id_choices.py:82\nmsgid \"Sulawesi Tengah\"\nmsgstr \"Sulawesi Tengah\"\n\n#: id/id_choices.py:43 id/id_choices.py:85\nmsgid \"Sulawesi Tenggara\"\nmsgstr \"Sulawesi Tenggara\"\n\n#: id/id_choices.py:44\nmsgid \"Sulawesi Utara\"\nmsgstr \"Sulawesi Utara\"\n\n#: id/id_choices.py:45 id/id_choices.py:58\nmsgid \"Sumatera Barat\"\nmsgstr \"Sumatera Barat\"\n\n#: id/id_choices.py:46 id/id_choices.py:62\nmsgid \"Sumatera Selatan\"\nmsgstr \"Sumatera Selatan\"\n\n#: id/id_choices.py:47 id/id_choices.py:64\nmsgid \"Sumatera Utara\"\nmsgstr \"Sumatera Utara\"\n\n#: id/id_choices.py:52\nmsgid \"Magelang\"\nmsgstr \"Magelang\"\n\n#: id/id_choices.py:54\nmsgid \"Surakarta - Solo\"\nmsgstr \"Surakarta - Solo\"\n\n#: id/id_choices.py:55\nmsgid \"Madiun\"\nmsgstr \"Madiun\"\n\n#: id/id_choices.py:56\nmsgid \"Kediri\"\nmsgstr \"Kediri\"\n\n#: id/id_choices.py:59\nmsgid \"Tapanuli\"\nmsgstr \"Tapanuli\"\n\n#: id/id_choices.py:65\nmsgid \"Nanggroe Aceh Darussalam\"\nmsgstr \"Nanggroe Aceh Darussalam\"\n\n#: id/id_choices.py:67\nmsgid \"Kepulauan Bangka Belitung\"\nmsgstr \"Kepulauan Bangka Belitung\"\n\n#: id/id_choices.py:69\nmsgid \"Corps Consulate\"\nmsgstr \"Corps Consulate\"\n\n#: id/id_choices.py:70\nmsgid \"Corps Diplomatic\"\nmsgstr \"Corps Diplomatic\"\n\n#: id/id_choices.py:71\nmsgid \"Bandung\"\nmsgstr \"Bandung\"\n\n#: id/id_choices.py:73\nmsgid \"Sulawesi Utara Daratan\"\nmsgstr \"Sulawesi Utara Daratan\"\n\n#: id/id_choices.py:78\nmsgid \"NTT - Timor\"\nmsgstr \"NTT - Timor\"\n\n#: id/id_choices.py:80\nmsgid \"Sulawesi Utara Kepulauan\"\nmsgstr \"Sulawesi Utara Kepulauan\"\n\n#: id/id_choices.py:83\nmsgid \"NTB - Lombok\"\nmsgstr \"NTB - Lombok\"\n\n#: id/id_choices.py:84\nmsgid \"Papua dan Papua Barat\"\nmsgstr \"Papua dan Papua Barat\"\n\n#: id/id_choices.py:86\nmsgid \"Cirebon\"\nmsgstr \"Cirebon\"\n\n#: id/id_choices.py:87\nmsgid \"NTB - Sumbawa\"\nmsgstr \"NTB - Sumbawa\"\n\n#: id/id_choices.py:88\nmsgid \"NTT - Flores\"\nmsgstr \"NTT - Flores\"\n\n#: id/id_choices.py:89\nmsgid \"NTT - Sumba\"\nmsgstr \"NTT - Sumba\"\n\n#: id/id_choices.py:90\nmsgid \"Bogor\"\nmsgstr \"Bogor\"\n\n#: id/id_choices.py:91\nmsgid \"Pekalongan\"\nmsgstr \"Pekalongan\"\n\n#: id/id_choices.py:92\nmsgid \"Semarang\"\nmsgstr \"Semarang\"\n\n#: id/id_choices.py:93\nmsgid \"Pati\"\nmsgstr \"Pati\"\n\n#: id/id_choices.py:97\nmsgid \"Surabaya\"\nmsgstr \"Surabaya\"\n\n#: id/id_choices.py:98\nmsgid \"Madura\"\nmsgstr \"Madura\"\n\n#: id/id_choices.py:99\nmsgid \"Malang\"\nmsgstr \"Malang\"\n\n#: id/id_choices.py:100\nmsgid \"Jember\"\nmsgstr \"Jember\"\n\n#: id/id_choices.py:101\nmsgid \"Banyumas\"\nmsgstr \"Banyumas\"\n\n#: id/id_choices.py:102\nmsgid \"Federal Government\"\nmsgstr \"Federalna vlada\"\n\n#: id/id_choices.py:103\nmsgid \"Bojonegoro\"\nmsgstr \"Bojonegoro\"\n\n#: id/id_choices.py:104\nmsgid \"Purwakarta\"\nmsgstr \"Purwakarta\"\n\n#: id/id_choices.py:105\nmsgid \"Sidoarjo\"\nmsgstr \"Sidoarjo\"\n\n#: id/id_choices.py:106\nmsgid \"Garut\"\nmsgstr \"Garut\"\n\n#: ie/ie_counties.py:8\nmsgid \"Antrim\"\nmsgstr \"Antrim\"\n\n#: ie/ie_counties.py:9\nmsgid \"Armagh\"\nmsgstr \"Armagh\"\n\n#: ie/ie_counties.py:10\nmsgid \"Carlow\"\nmsgstr \"Carlow\"\n\n#: ie/ie_counties.py:11\nmsgid \"Cavan\"\nmsgstr \"Cavan\"\n\n#: ie/ie_counties.py:12\nmsgid \"Clare\"\nmsgstr \"Clare\"\n\n#: ie/ie_counties.py:13\nmsgid \"Cork\"\nmsgstr \"Cork\"\n\n#: ie/ie_counties.py:14\nmsgid \"Derry\"\nmsgstr \"Derry\"\n\n#: ie/ie_counties.py:15\nmsgid \"Donegal\"\nmsgstr \"Donegal\"\n\n#: ie/ie_counties.py:16\nmsgid \"Down\"\nmsgstr \"Down\"\n\n#: ie/ie_counties.py:17\nmsgid \"Dublin\"\nmsgstr \"Dublin\"\n\n#: ie/ie_counties.py:18\nmsgid \"Fermanagh\"\nmsgstr \"Fermanagh\"\n\n#: ie/ie_counties.py:19\nmsgid \"Galway\"\nmsgstr \"Galway\"\n\n#: ie/ie_counties.py:20\nmsgid \"Kerry\"\nmsgstr \"Kerry\"\n\n#: ie/ie_counties.py:21\nmsgid \"Kildare\"\nmsgstr \"Kildare\"\n\n#: ie/ie_counties.py:22\nmsgid \"Kilkenny\"\nmsgstr \"Kilkenny\"\n\n#: ie/ie_counties.py:23\nmsgid \"Laois\"\nmsgstr \"Laois\"\n\n#: ie/ie_counties.py:24\nmsgid \"Leitrim\"\nmsgstr \"Leitrim\"\n\n#: ie/ie_counties.py:25\nmsgid \"Limerick\"\nmsgstr \"Limerick\"\n\n#: ie/ie_counties.py:26\nmsgid \"Longford\"\nmsgstr \"Longford\"\n\n#: ie/ie_counties.py:27\nmsgid \"Louth\"\nmsgstr \"Louth\"\n\n#: ie/ie_counties.py:28\nmsgid \"Mayo\"\nmsgstr \"Mayo\"\n\n#: ie/ie_counties.py:29\nmsgid \"Meath\"\nmsgstr \"Meath\"\n\n#: ie/ie_counties.py:30\nmsgid \"Monaghan\"\nmsgstr \"Monaghan\"\n\n#: ie/ie_counties.py:31\nmsgid \"Offaly\"\nmsgstr \"Offaly\"\n\n#: ie/ie_counties.py:32\nmsgid \"Roscommon\"\nmsgstr \"Roscommon\"\n\n#: ie/ie_counties.py:33\nmsgid \"Sligo\"\nmsgstr \"Sligo\"\n\n#: ie/ie_counties.py:34\nmsgid \"Tipperary\"\nmsgstr \"Tipperary\"\n\n#: ie/ie_counties.py:35\nmsgid \"Tyrone\"\nmsgstr \"Tyrone\"\n\n#: ie/ie_counties.py:36\nmsgid \"Waterford\"\nmsgstr \"Waterford\"\n\n#: ie/ie_counties.py:37\nmsgid \"Westmeath\"\nmsgstr \"Westmeath\"\n\n#: ie/ie_counties.py:38\nmsgid \"Wexford\"\nmsgstr \"Wexford\"\n\n#: ie/ie_counties.py:39\nmsgid \"Wicklow\"\nmsgstr \"Wexford\"\n\n#: il/forms.py:32\nmsgid \"Enter a postal code in the format XXXXX\"\nmsgstr \"Unesite poštanski broj u formatu XXXXX\"\n\n#: il/forms.py:51\nmsgid \"Enter a valid ID number.\"\nmsgstr \"Unesite valjani ID broj.\"\n\n#: in_/forms.py:41\nmsgid \"Enter a zip code in the format XXXXXX or XXX XXX.\"\nmsgstr \"Unesite poštanski broj formata XXXXXX u ili XXX XXX.\"\n\n#: in_/forms.py:64\nmsgid \"Enter an Indian state or territory.\"\nmsgstr \"Unesite indijsku državu ili teritorij.\"\n\n#: in_/forms.py:103\nmsgid \"Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.\"\nmsgstr \"\"\n\n#: is_/forms.py:22\nmsgid \"\"\n\"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.\"\nmsgstr \"Unesite ispravan islandski identifikacijski broj formata XXXXXX-XXXX.\"\n\n#: is_/forms.py:23\nmsgid \"The Icelandic identification number is not valid.\"\nmsgstr \"Islandski identifikacijski broj nije ispravan.\"\n\n#: it/forms.py:21\nmsgid \"Enter a valid zip code.\"\nmsgstr \"Unesite ispravan zip kod.\"\n\n#: it/forms.py:48\nmsgid \"Enter a valid Social Security number.\"\nmsgstr \"Unesite ispravan broj socijalnog osiguranja.\"\n\n#: it/forms.py:73\nmsgid \"Enter a valid VAT number.\"\nmsgstr \"Unesite ispravan VAT broj.\"\n\n#: jp/forms.py:19\nmsgid \"Enter a postal code in the format XXXXXXX or XXX-XXXX.\"\nmsgstr \"Unesite poštanski broj formata XXXXXXX or XXX-XXXX.\"\n\n#: jp/jp_prefectures.py:4\nmsgid \"Hokkaido\"\nmsgstr \"Hokkaido\"\n\n#: jp/jp_prefectures.py:5\nmsgid \"Aomori\"\nmsgstr \"Aomori\"\n\n#: jp/jp_prefectures.py:6\nmsgid \"Iwate\"\nmsgstr \"Iwate\"\n\n#: jp/jp_prefectures.py:7\nmsgid \"Miyagi\"\nmsgstr \"Miyagi\"\n\n#: jp/jp_prefectures.py:8\nmsgid \"Akita\"\nmsgstr \"Akita\"\n\n#: jp/jp_prefectures.py:9\nmsgid \"Yamagata\"\nmsgstr \"Yamagata\"\n\n#: jp/jp_prefectures.py:10\nmsgid \"Fukushima\"\nmsgstr \"Fukushima\"\n\n#: jp/jp_prefectures.py:11\nmsgid \"Ibaraki\"\nmsgstr \"Ibaraki\"\n\n#: jp/jp_prefectures.py:12\nmsgid \"Tochigi\"\nmsgstr \"Tochigi\"\n\n#: jp/jp_prefectures.py:13\nmsgid \"Gunma\"\nmsgstr \"Gunma\"\n\n#: jp/jp_prefectures.py:14\nmsgid \"Saitama\"\nmsgstr \"Saitama\"\n\n#: jp/jp_prefectures.py:15\nmsgid \"Chiba\"\nmsgstr \"Chiba\"\n\n#: jp/jp_prefectures.py:16\nmsgid \"Tokyo\"\nmsgstr \"Tokio\"\n\n#: jp/jp_prefectures.py:17\nmsgid \"Kanagawa\"\nmsgstr \"Kanagawa\"\n\n#: jp/jp_prefectures.py:18\nmsgid \"Yamanashi\"\nmsgstr \"Yamanashi\"\n\n#: jp/jp_prefectures.py:19\nmsgid \"Nagano\"\nmsgstr \"Nagano\"\n\n#: jp/jp_prefectures.py:20\nmsgid \"Niigata\"\nmsgstr \"Niigata\"\n\n#: jp/jp_prefectures.py:21\nmsgid \"Toyama\"\nmsgstr \"Toyama\"\n\n#: jp/jp_prefectures.py:22\nmsgid \"Ishikawa\"\nmsgstr \"Ishikawa\"\n\n#: jp/jp_prefectures.py:23\nmsgid \"Fukui\"\nmsgstr \"Fukui\"\n\n#: jp/jp_prefectures.py:24\nmsgid \"Gifu\"\nmsgstr \"Gifu\"\n\n#: jp/jp_prefectures.py:25\nmsgid \"Shizuoka\"\nmsgstr \"Shizuoka\"\n\n#: jp/jp_prefectures.py:26\nmsgid \"Aichi\"\nmsgstr \"Aichi\"\n\n#: jp/jp_prefectures.py:27\nmsgid \"Mie\"\nmsgstr \"Mie\"\n\n#: jp/jp_prefectures.py:28\nmsgid \"Shiga\"\nmsgstr \"Shiga\"\n\n#: jp/jp_prefectures.py:29\nmsgid \"Kyoto\"\nmsgstr \"Kyoto\"\n\n#: jp/jp_prefectures.py:30\nmsgid \"Osaka\"\nmsgstr \"Osaka\"\n\n#: jp/jp_prefectures.py:31\nmsgid \"Hyogo\"\nmsgstr \"Hyogo\"\n\n#: jp/jp_prefectures.py:32\nmsgid \"Nara\"\nmsgstr \"Nara\"\n\n#: jp/jp_prefectures.py:33\nmsgid \"Wakayama\"\nmsgstr \"Wakayama\"\n\n#: jp/jp_prefectures.py:34\nmsgid \"Tottori\"\nmsgstr \"Tottori\"\n\n#: jp/jp_prefectures.py:35\nmsgid \"Shimane\"\nmsgstr \"Shimane\"\n\n#: jp/jp_prefectures.py:36\nmsgid \"Okayama\"\nmsgstr \"Okayama\"\n\n#: jp/jp_prefectures.py:37\nmsgid \"Hiroshima\"\nmsgstr \"Hiroshima\"\n\n#: jp/jp_prefectures.py:38\nmsgid \"Yamaguchi\"\nmsgstr \"Yamaguchi\"\n\n#: jp/jp_prefectures.py:39\nmsgid \"Tokushima\"\nmsgstr \"Tokushima\"\n\n#: jp/jp_prefectures.py:40\nmsgid \"Kagawa\"\nmsgstr \"Kagawa\"\n\n#: jp/jp_prefectures.py:41\nmsgid \"Ehime\"\nmsgstr \"Ehime\"\n\n#: jp/jp_prefectures.py:42\nmsgid \"Kochi\"\nmsgstr \"Kochi\"\n\n#: jp/jp_prefectures.py:43\nmsgid \"Fukuoka\"\nmsgstr \"Fukuoka\"\n\n#: jp/jp_prefectures.py:44\nmsgid \"Saga\"\nmsgstr \"Saga\"\n\n#: jp/jp_prefectures.py:45\nmsgid \"Nagasaki\"\nmsgstr \"Nagasaki\"\n\n#: jp/jp_prefectures.py:46\nmsgid \"Kumamoto\"\nmsgstr \"Kumamoto\"\n\n#: jp/jp_prefectures.py:47\nmsgid \"Oita\"\nmsgstr \"Oita\"\n\n#: jp/jp_prefectures.py:48\nmsgid \"Miyazaki\"\nmsgstr \"Miyazaki\"\n\n#: jp/jp_prefectures.py:49\nmsgid \"Kagoshima\"\nmsgstr \"Kagoshima\"\n\n#: jp/jp_prefectures.py:50\nmsgid \"Okinawa\"\nmsgstr \"Okinawa\"\n\n#: kw/forms.py:27\nmsgid \"Enter a valid Kuwaiti Civil ID number\"\nmsgstr \"Unesi ispravan kuvajtski Civil ID broj.\"\n\n#: mk/forms.py:18\nmsgid \"\"\n\"Identity card numbers must contain either 4 to 7 digits or an uppercase \"\n\"letter and 7 digits.\"\nmsgstr \"\"\n\"Broj osobne iskaznice mora sadržavati od 4 do 7 znamenki ili veliko slovo i \"\n\"7 znamenaka.\"\n\n#: mk/forms.py:57 si/forms.py:24\nmsgid \"This field should contain exactly 13 digits.\"\nmsgstr \"Ovo polje treba sadržavati točno 13 znamenki.\"\n\n#: mk/forms.py:58\nmsgid \"The first 7 digits of the UMCN must represent a valid past date.\"\nmsgstr \"Prvih sedam UMCN znamenka mora predstavljati valjani prošli datum.\"\n\n#: mk/forms.py:59\nmsgid \"The UMCN is not valid.\"\nmsgstr \"UMCN ne vrijedi.\"\n\n#: mk/mk_choices.py:10\nmsgid \"Aerodrom\"\nmsgstr \"Aerodrom\"\n\n#: mk/mk_choices.py:11\nmsgid \"Aračinovo\"\nmsgstr \"Aračinovo\"\n\n#: mk/mk_choices.py:12\nmsgid \"Berovo\"\nmsgstr \"Berovo\"\n\n#: mk/mk_choices.py:13\nmsgid \"Bitola\"\nmsgstr \"Bitola\"\n\n#: mk/mk_choices.py:14\nmsgid \"Bogdanci\"\nmsgstr \"Bogdanci\"\n\n#: mk/mk_choices.py:15\nmsgid \"Bogovinje\"\nmsgstr \"Bogovinje\"\n\n#: mk/mk_choices.py:16\nmsgid \"Bosilovo\"\nmsgstr \"Bosilovo\"\n\n#: mk/mk_choices.py:17\nmsgid \"Brvenica\"\nmsgstr \"Brvenica\"\n\n#: mk/mk_choices.py:18\nmsgid \"Butel\"\nmsgstr \"Butel\"\n\n#: mk/mk_choices.py:19\nmsgid \"Valandovo\"\nmsgstr \"Valandovo\"\n\n#: mk/mk_choices.py:20\nmsgid \"Vasilevo\"\nmsgstr \"Vasilevo\"\n\n#: mk/mk_choices.py:21\nmsgid \"Vevčani\"\nmsgstr \"Vevčani\"\n\n#: mk/mk_choices.py:22\nmsgid \"Veles\"\nmsgstr \"Veles\"\n\n#: mk/mk_choices.py:23\nmsgid \"Vinica\"\nmsgstr \"Vinica\"\n\n#: mk/mk_choices.py:24\nmsgid \"Vraneštica\"\nmsgstr \"Vraneštica\"\n\n#: mk/mk_choices.py:25\nmsgid \"Vrapčište\"\nmsgstr \"Vrapčište\"\n\n#: mk/mk_choices.py:26\nmsgid \"Gazi Baba\"\nmsgstr \"Gazi Baba\"\n\n#: mk/mk_choices.py:27\nmsgid \"Gevgelija\"\nmsgstr \"Gevgelija\"\n\n#: mk/mk_choices.py:28\nmsgid \"Gostivar\"\nmsgstr \"Gostivar\"\n\n#: mk/mk_choices.py:29\nmsgid \"Gradsko\"\nmsgstr \"Gradsko\"\n\n#: mk/mk_choices.py:30\nmsgid \"Debar\"\nmsgstr \"Debar\"\n\n#: mk/mk_choices.py:31\nmsgid \"Debarca\"\nmsgstr \"Debarca\"\n\n#: mk/mk_choices.py:32\nmsgid \"Delčevo\"\nmsgstr \"Delčevo\"\n\n#: mk/mk_choices.py:33\nmsgid \"Demir Kapija\"\nmsgstr \"Demir Kapija\"\n\n#: mk/mk_choices.py:34\nmsgid \"Demir Hisar\"\nmsgstr \"Demir Hisar\"\n\n#: mk/mk_choices.py:35\nmsgid \"Dolneni\"\nmsgstr \"Dolneni\"\n\n#: mk/mk_choices.py:36\nmsgid \"Drugovo\"\nmsgstr \"Drugovo\"\n\n#: mk/mk_choices.py:37\nmsgid \"Gjorče Petrov\"\nmsgstr \"Gjorče Petrov\"\n\n#: mk/mk_choices.py:38\nmsgid \"Želino\"\nmsgstr \"Želino\"\n\n#: mk/mk_choices.py:39\nmsgid \"Zajas\"\nmsgstr \"Zajas\"\n\n#: mk/mk_choices.py:40\nmsgid \"Zelenikovo\"\nmsgstr \"Zelenikovo\"\n\n#: mk/mk_choices.py:41\nmsgid \"Zrnovci\"\nmsgstr \"Zrnovci\"\n\n#: mk/mk_choices.py:42\nmsgid \"Ilinden\"\nmsgstr \"Ilinden\"\n\n#: mk/mk_choices.py:43\nmsgid \"Jegunovce\"\nmsgstr \"Jegunovce\"\n\n#: mk/mk_choices.py:44\nmsgid \"Kavadarci\"\nmsgstr \"Kavadarci\"\n\n#: mk/mk_choices.py:45\nmsgid \"Karbinci\"\nmsgstr \"Karbinci\"\n\n#: mk/mk_choices.py:46\nmsgid \"Karpoš\"\nmsgstr \"Karpoš\"\n\n#: mk/mk_choices.py:47\nmsgid \"Kisela Voda\"\nmsgstr \"Kisela Voda\"\n\n#: mk/mk_choices.py:48\nmsgid \"Kičevo\"\nmsgstr \"Kičevo\"\n\n#: mk/mk_choices.py:49\nmsgid \"Konče\"\nmsgstr \"Konče\"\n\n#: mk/mk_choices.py:50\nmsgid \"Koćani\"\nmsgstr \"Koćani\"\n\n#: mk/mk_choices.py:51\nmsgid \"Kratovo\"\nmsgstr \"Kratovo\"\n\n#: mk/mk_choices.py:52\nmsgid \"Kriva Palanka\"\nmsgstr \"Kriva Palanka\"\n\n#: mk/mk_choices.py:53\nmsgid \"Krivogaštani\"\nmsgstr \"Krivogaštani\"\n\n#: mk/mk_choices.py:54\nmsgid \"Kruševo\"\nmsgstr \"Kruševo\"\n\n#: mk/mk_choices.py:55\nmsgid \"Kumanovo\"\nmsgstr \"Kumanovo\"\n\n#: mk/mk_choices.py:56\nmsgid \"Lipkovo\"\nmsgstr \"Lipkovo\"\n\n#: mk/mk_choices.py:57\nmsgid \"Lozovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:58\nmsgid \"Mavrovo i Rostuša\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:59\nmsgid \"Makedonska Kamenica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:60\nmsgid \"Makedonski Brod\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:61\nmsgid \"Mogila\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:62\nmsgid \"Negotino\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:63\nmsgid \"Novaci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:64\nmsgid \"Novo Selo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:65\nmsgid \"Oslomej\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:66\nmsgid \"Ohrid\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:67\nmsgid \"Petrovec\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:68\nmsgid \"Pehčevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:69\nmsgid \"Plasnica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:70\nmsgid \"Prilep\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:71\nmsgid \"Probištip\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:72\nmsgid \"Radoviš\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:73\nmsgid \"Rankovce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:74\nmsgid \"Resen\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:75\nmsgid \"Rosoman\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:76\nmsgid \"Saraj\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:77\nmsgid \"Sveti Nikole\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:78\nmsgid \"Sopište\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:79\nmsgid \"Star Dojran\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:80\nmsgid \"Staro Nagoričane\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:81\nmsgid \"Struga\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:82\nmsgid \"Strumica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:83\nmsgid \"Studeničani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:84\nmsgid \"Tearce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:85\nmsgid \"Tetovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:86\nmsgid \"Centar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:87\nmsgid \"Centar-Župa\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:88\nmsgid \"Čair\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:89\nmsgid \"Čaška\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:90\nmsgid \"Češinovo-Obleševo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:91\nmsgid \"Čučer-Sandevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:92\nmsgid \"Štip\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:93\nmsgid \"Šuto Orizari\"\nmsgstr \"\"\n\n#: mk/models.py:11\nmsgid \"Macedonian identity card number\"\nmsgstr \"\"\n\n#: mk/models.py:25\nmsgid \"A Macedonian municipality (2 character code)\"\nmsgstr \"\"\n\n#: mk/models.py:35\nmsgid \"Unique master citizen number (13 digits)\"\nmsgstr \"\"\n\n#: mx/forms.py:67\nmsgid \"Enter a valid zip code in the format XXXXX.\"\nmsgstr \"\"\n\n#: mx/forms.py:110\nmsgid \"Enter a valid RFC.\"\nmsgstr \"\"\n\n#: mx/forms.py:111\nmsgid \"Invalid checksum for RFC.\"\nmsgstr \"\"\n\n#: mx/forms.py:191\nmsgid \"Enter a valid CURP.\"\nmsgstr \"\"\n\n#: mx/forms.py:192\nmsgid \"Invalid checksum for CURP.\"\nmsgstr \"\"\n\n#: mx/models.py:14\nmsgid \"Mexico state (three uppercase letters)\"\nmsgstr \"\"\n\n#: mx/models.py:27\nmsgid \"Mexico zip code\"\nmsgstr \"\"\n\n#: mx/models.py:44\nmsgid \"Mexican RFC\"\nmsgstr \"\"\n\n#: mx/models.py:61\nmsgid \"Mexican CURP\"\nmsgstr \"\"\n\n#: mx/mx_states.py:14\nmsgid \"Aguascalientes\"\nmsgstr \"Aguascalientes\"\n\n#: mx/mx_states.py:15\nmsgid \"Baja California\"\nmsgstr \"Baja California\"\n\n#: mx/mx_states.py:16\nmsgid \"Baja California Sur\"\nmsgstr \"Baja California Sur\"\n\n#: mx/mx_states.py:17\nmsgid \"Campeche\"\nmsgstr \"Campeche\"\n\n#: mx/mx_states.py:18\nmsgid \"Chihuahua\"\nmsgstr \"Chihuahua\"\n\n#: mx/mx_states.py:19\nmsgid \"Chiapas\"\nmsgstr \"Chiapas\"\n\n#: mx/mx_states.py:20\nmsgid \"Coahuila\"\nmsgstr \"Coahuila\"\n\n#: mx/mx_states.py:21\nmsgid \"Colima\"\nmsgstr \"Colima\"\n\n#: mx/mx_states.py:22\nmsgid \"Distrito Federal\"\nmsgstr \"Distrito Federal\"\n\n#: mx/mx_states.py:23\nmsgid \"Durango\"\nmsgstr \"Durango\"\n\n#: mx/mx_states.py:24\nmsgid \"Guerrero\"\nmsgstr \"Guerrero\"\n\n#: mx/mx_states.py:25\nmsgid \"Guanajuato\"\nmsgstr \"Guanajuato\"\n\n#: mx/mx_states.py:26\nmsgid \"Hidalgo\"\nmsgstr \"Hidalgo\"\n\n#: mx/mx_states.py:27\nmsgid \"Jalisco\"\nmsgstr \"Jalisco\"\n\n#: mx/mx_states.py:28\nmsgid \"Estado de México\"\nmsgstr \"Država Meksiko\"\n\n#: mx/mx_states.py:29\nmsgid \"Michoacán\"\nmsgstr \"Michoacán\"\n\n#: mx/mx_states.py:30\nmsgid \"Morelos\"\nmsgstr \"Morelos\"\n\n#: mx/mx_states.py:31\nmsgid \"Nayarit\"\nmsgstr \"Nayarit\"\n\n#: mx/mx_states.py:32\nmsgid \"Nuevo León\"\nmsgstr \"Nuevo León\"\n\n#: mx/mx_states.py:33\nmsgid \"Oaxaca\"\nmsgstr \"Oaxaca\"\n\n#: mx/mx_states.py:34\nmsgid \"Puebla\"\nmsgstr \"Puebla\"\n\n#: mx/mx_states.py:35\nmsgid \"Querétaro\"\nmsgstr \"Querétaro\"\n\n#: mx/mx_states.py:36\nmsgid \"Quintana Roo\"\nmsgstr \"Quintana Roo\"\n\n#: mx/mx_states.py:37\nmsgid \"Sinaloa\"\nmsgstr \"Sinaloa\"\n\n#: mx/mx_states.py:38\nmsgid \"San Luis Potosí\"\nmsgstr \"San Luis Potosí\"\n\n#: mx/mx_states.py:39\nmsgid \"Sonora\"\nmsgstr \"Sonora\"\n\n#: mx/mx_states.py:40\nmsgid \"Tabasco\"\nmsgstr \"Tabasco\"\n\n#: mx/mx_states.py:41\nmsgid \"Tamaulipas\"\nmsgstr \"Tamaulipas\"\n\n#: mx/mx_states.py:42\nmsgid \"Tlaxcala\"\nmsgstr \"Tlaxcala\"\n\n#: mx/mx_states.py:43\nmsgid \"Veracruz\"\nmsgstr \"Veracruz\"\n\n#: mx/mx_states.py:44\nmsgid \"Yucatán\"\nmsgstr \"Yucatán\"\n\n#: mx/mx_states.py:45\nmsgid \"Zacatecas\"\nmsgstr \"Zacatecas\"\n\n#: nl/forms.py:26\nmsgid \"Enter a valid postal code\"\nmsgstr \"Unesite ispravan poštanski broj\"\n\n#: nl/forms.py:82\nmsgid \"Enter a valid SoFi number\"\nmsgstr \"Unesite ispravan SoFi broj\"\n\n#: nl/nl_provinces.py:4\nmsgid \"Drenthe\"\nmsgstr \"Drenthe\"\n\n#: nl/nl_provinces.py:5\nmsgid \"Flevoland\"\nmsgstr \"Flevoland\"\n\n#: nl/nl_provinces.py:6\nmsgid \"Friesland\"\nmsgstr \"Friesland\"\n\n#: nl/nl_provinces.py:7\nmsgid \"Gelderland\"\nmsgstr \"Gelderland\"\n\n#: nl/nl_provinces.py:8\nmsgid \"Groningen\"\nmsgstr \"Groningen\"\n\n#: nl/nl_provinces.py:10\nmsgid \"Noord-Brabant\"\nmsgstr \"Noord-Brabant\"\n\n#: nl/nl_provinces.py:11\nmsgid \"Noord-Holland\"\nmsgstr \"Noord-Holland\"\n\n#: nl/nl_provinces.py:12\nmsgid \"Overijssel\"\nmsgstr \"Overijssel\"\n\n#: nl/nl_provinces.py:13\nmsgid \"Utrecht\"\nmsgstr \"Utrecht\"\n\n#: nl/nl_provinces.py:14\nmsgid \"Zeeland\"\nmsgstr \"Zeeland\"\n\n#: nl/nl_provinces.py:15\nmsgid \"Zuid-Holland\"\nmsgstr \"Zuid-Holland\"\n\n#: no/forms.py:39\nmsgid \"Enter a valid Norwegian social security number.\"\nmsgstr \"Unesite ispravan broj norveškog socijalnog osiguranja.\"\n\n#: pe/forms.py:28\nmsgid \"This field requires 8 digits.\"\nmsgstr \"Ovo polje zahtjeva 8 numeričkih znakova.\"\n\n#: pe/forms.py:56\nmsgid \"This field requires 11 digits.\"\nmsgstr \"Ovo polje zahtjeva 11 numeričkih znakova.\"\n\n#: pl/forms.py:42\nmsgid \"National Identification Number consists of 11 digits.\"\nmsgstr \"Nacionalni identifikacijski broj sadrži 11 numeričkih znakova.\"\n\n#: pl/forms.py:43\nmsgid \"Wrong checksum for the National Identification Number.\"\nmsgstr \"Neispravan checksum za Nacionalni identifikacijski broj.\"\n\n#: pl/forms.py:79\nmsgid \"National ID Card Number consists of 3 letters and 6 digits.\"\nmsgstr \"\"\n\n#: pl/forms.py:80\nmsgid \"Wrong checksum for the National ID Card Number.\"\nmsgstr \"\"\n\n#: pl/forms.py:131\nmsgid \"\"\n\"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or \"\n\"XXXXXXXXXX.\"\nmsgstr \"\"\n\n#: pl/forms.py:132\nmsgid \"Wrong checksum for the Tax Number (NIP).\"\nmsgstr \"Neispravan checksum za porezni broj (NIP).\"\n\n#: pl/forms.py:171\nmsgid \"National Business Register Number (REGON) consists of 9 or 14 digits.\"\nmsgstr \"\"\n\"National Business Register Number (REGON) sastoji se od 9 ili 14 numeričkih \"\n\"znakova.\"\n\n#: pl/forms.py:172\nmsgid \"Wrong checksum for the National Business Register Number (REGON).\"\nmsgstr \"Neispravan checked za National Business Register Number (REGON).\"\n\n#: pl/forms.py:212\nmsgid \"Enter a postal code in the format XX-XXX.\"\nmsgstr \"Unesi poštanski broj formata XX-XXX.\"\n\n#: pl/pl_voivodeships.py:8\nmsgid \"Lower Silesia\"\nmsgstr \"Donja Šleska\"\n\n#: pl/pl_voivodeships.py:9\nmsgid \"Kuyavia-Pomerania\"\nmsgstr \"Kuyavia-Pomerania\"\n\n#: pl/pl_voivodeships.py:10\nmsgid \"Lublin\"\nmsgstr \"Lublin\"\n\n#: pl/pl_voivodeships.py:11\nmsgid \"Lubusz\"\nmsgstr \"Lubusz\"\n\n#: pl/pl_voivodeships.py:12\nmsgid \"Lodz\"\nmsgstr \"Lodz\"\n\n#: pl/pl_voivodeships.py:13\nmsgid \"Lesser Poland\"\nmsgstr \"Mala Poljska\"\n\n#: pl/pl_voivodeships.py:14\nmsgid \"Masovia\"\nmsgstr \"Masovia\"\n\n#: pl/pl_voivodeships.py:15\nmsgid \"Opole\"\nmsgstr \"Opole\"\n\n#: pl/pl_voivodeships.py:16\nmsgid \"Subcarpatia\"\nmsgstr \"Subcarpatia\"\n\n#: pl/pl_voivodeships.py:17\nmsgid \"Podlasie\"\nmsgstr \"Podlasie\"\n\n#: pl/pl_voivodeships.py:18\nmsgid \"Pomerania\"\nmsgstr \"Pomerania\"\n\n#: pl/pl_voivodeships.py:19\nmsgid \"Silesia\"\nmsgstr \"Šleska\"\n\n#: pl/pl_voivodeships.py:20\nmsgid \"Swietokrzyskie\"\nmsgstr \"Swietokrzyskie\"\n\n#: pl/pl_voivodeships.py:21\nmsgid \"Warmia-Masuria\"\nmsgstr \"Warmia-Masuria\"\n\n#: pl/pl_voivodeships.py:22\nmsgid \"Greater Poland\"\nmsgstr \"Greater Poland\"\n\n#: pl/pl_voivodeships.py:23\nmsgid \"West Pomerania\"\nmsgstr \"West Pomerania\"\n\n#: pt/forms.py:19\nmsgid \"Enter a zip code in the format XXXX-XXX.\"\nmsgstr \"Unesite poštanski broj u formatu XXX-XXXX.\"\n\n#: pt/forms.py:39\nmsgid \"Phone numbers must have 9 digits, or start by + or 00.\"\nmsgstr \"Telefonski brojevi moraju imati 9 brojeva, ili početi sa + ili 00.\"\n\n#: ro/forms.py:22\nmsgid \"Enter a valid CIF.\"\nmsgstr \"Unesite ispravan CIF.\"\n\n#: ro/forms.py:59\nmsgid \"Enter a valid CNP.\"\nmsgstr \"Unesite ispravan CNP.\"\n\n#: ro/forms.py:143\nmsgid \"Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format\"\nmsgstr \"Unesite ispravan IBAN formata ROXX-XXXX-XXXX-XXXX-XXXX-XXXX\"\n\n#: ro/forms.py:175\nmsgid \"Phone numbers must be in XXXX-XXXXXX format.\"\nmsgstr \"Telefonski brojevi moraju biti formata XXXX-XXXXXX.\"\n\n#: ro/forms.py:200\nmsgid \"Enter a valid postal code in the format XXXXXX\"\nmsgstr \"Unesite ispravan poštanski broj formata XXXXXX\"\n\n#: ru/forms.py:37\nmsgid \"Enter a postal code in the format XXXXXX.\"\nmsgstr \"\"\n\n#: ru/forms.py:50\nmsgid \"Enter a passport number in the format XXXX XXXXXX.\"\nmsgstr \"\"\n\n#: ru/forms.py:63\nmsgid \"Enter a passport number in the format XX XXXXXXX.\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:10\nmsgid \"Central Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:11\nmsgid \"South Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:12\nmsgid \"North-West Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:13\nmsgid \"Far-East Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:14\nmsgid \"Siberian Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:15\nmsgid \"Ural Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:16\nmsgid \"Privolzhsky Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:17\nmsgid \"North-Caucasian Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:21\nmsgid \"Moskva\"\nmsgstr \"Moskva\"\n\n#: ru/ru_regions.py:22\nmsgid \"Saint-Peterburg\"\nmsgstr \"Saint-Peterburg\"\n\n#: ru/ru_regions.py:23\nmsgid \"Moskovskaya oblast'\"\nmsgstr \"Moskovska oblast\"\n\n#: ru/ru_regions.py:24\nmsgid \"Adygeya, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:25\nmsgid \"Bashkortostan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:26\nmsgid \"Buryatia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:27\nmsgid \"Altay, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:28\nmsgid \"Dagestan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:29\nmsgid \"Ingushskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:30\nmsgid \"Kabardino-Balkarskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:31\nmsgid \"Kalmykia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:32\nmsgid \"Karachaevo-Cherkesskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:33\nmsgid \"Karelia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:34\nmsgid \"Komi, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:35\nmsgid \"Mariy Ehl, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:36\nmsgid \"Mordovia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:37\nmsgid \"Sakha, Respublika (Yakutiya)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:38\nmsgid \"Severnaya Osetia, Respublika (Alania)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:39\nmsgid \"Tatarstan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:40\nmsgid \"Tyva, Respublika (Tuva)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:41\nmsgid \"Udmurtskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:42\nmsgid \"Khakassiya, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:43\nmsgid \"Chechenskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:44\nmsgid \"Chuvashskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:45\nmsgid \"Altayskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:46\nmsgid \"Zabaykalskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:47\nmsgid \"Kamchatskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:48\nmsgid \"Krasnodarskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:49\nmsgid \"Krasnoyarskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:50\nmsgid \"Permskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:51\nmsgid \"Primorskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:52\nmsgid \"Stavropol'siyy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:53\nmsgid \"Khabarovskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:54\nmsgid \"Amurskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:55\nmsgid \"Arkhangel'skaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:56\nmsgid \"Astrakhanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:57\nmsgid \"Belgorodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:58\nmsgid \"Bryanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:59\nmsgid \"Vladimirskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:60\nmsgid \"Volgogradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:61\nmsgid \"Vologodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:62\nmsgid \"Voronezhskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:63\nmsgid \"Ivanovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:64\nmsgid \"Irkutskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:65\nmsgid \"Kaliningradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:66\nmsgid \"Kaluzhskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:67\nmsgid \"Kemerovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:68\nmsgid \"Kirovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:69\nmsgid \"Kostromskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:70\nmsgid \"Kurganskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:71\nmsgid \"Kurskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:72\nmsgid \"Leningradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:73\nmsgid \"Lipeckaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:74\nmsgid \"Magadanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:75\nmsgid \"Murmanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:76\nmsgid \"Nizhegorodskaja oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:77\nmsgid \"Novgorodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:78\nmsgid \"Novosibirskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:79\nmsgid \"Omskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:80\nmsgid \"Orenburgskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:81\nmsgid \"Orlovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:82\nmsgid \"Penzenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:83\nmsgid \"Pskovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:84\nmsgid \"Rostovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:85\nmsgid \"Rjazanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:86\nmsgid \"Samarskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:87\nmsgid \"Saratovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:88\nmsgid \"Sakhalinskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:89\nmsgid \"Sverdlovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:90\nmsgid \"Smolenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:91\nmsgid \"Tambovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:92\nmsgid \"Tverskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:93\nmsgid \"Tomskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:94\nmsgid \"Tul'skaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:95\nmsgid \"Tyumenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:96\nmsgid \"Ul'ianovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:97\nmsgid \"Chelyabinskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:98\nmsgid \"Yaroslavskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:99\nmsgid \"Evreyskaya avtonomnaja oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:100\nmsgid \"Neneckiy autonomnyy okrug\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:101\nmsgid \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:102\nmsgid \"Chukotskiy avtonomnyy okrug\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:103\nmsgid \"Yamalo-Neneckiy avtonomnyy okrug\"\nmsgstr \"\"\n\n#: se/forms.py:54\nmsgid \"Enter a valid Swedish organisation number.\"\nmsgstr \"Unesite valjani broj švedske organizacije.\"\n\n#: se/forms.py:111\nmsgid \"Enter a valid Swedish personal identity number.\"\nmsgstr \"Unesite ispravan švedski osobni identifikacijski broj.\"\n\n#: se/forms.py:112\nmsgid \"Co-ordination numbers are not allowed.\"\nmsgstr \"Koordinacijski brojevi nisu dozvoljeni.\"\n\n#: se/forms.py:154\nmsgid \"Enter a Swedish postal code in the format XXXXX.\"\nmsgstr \"Unesite švedski poštanski broj formata XXXXX.\"\n\n#: se/se_counties.py:16\nmsgid \"Stockholm\"\nmsgstr \"Stockholm\"\n\n#: se/se_counties.py:17\nmsgid \"Västerbotten\"\nmsgstr \"Västerbotten\"\n\n#: se/se_counties.py:18\nmsgid \"Norrbotten\"\nmsgstr \"Norrbotten\"\n\n#: se/se_counties.py:19\nmsgid \"Uppsala\"\nmsgstr \"Uppsala\"\n\n#: se/se_counties.py:20\nmsgid \"Södermanland\"\nmsgstr \"Södermanland\"\n\n#: se/se_counties.py:21\nmsgid \"Östergötland\"\nmsgstr \"Östergötland\"\n\n#: se/se_counties.py:22\nmsgid \"Jönköping\"\nmsgstr \"Jönköping\"\n\n#: se/se_counties.py:23\nmsgid \"Kronoberg\"\nmsgstr \"Kronoberg\"\n\n#: se/se_counties.py:24\nmsgid \"Kalmar\"\nmsgstr \"Kalmar\"\n\n#: se/se_counties.py:25\nmsgid \"Gotland\"\nmsgstr \"Gotland\"\n\n#: se/se_counties.py:26\nmsgid \"Blekinge\"\nmsgstr \"Blekinge\"\n\n#: se/se_counties.py:27\nmsgid \"Skåne\"\nmsgstr \"Skåne\"\n\n#: se/se_counties.py:28\nmsgid \"Halland\"\nmsgstr \"Halland\"\n\n#: se/se_counties.py:29\nmsgid \"Västra Götaland\"\nmsgstr \"Västra Götaland\"\n\n#: se/se_counties.py:30\nmsgid \"Värmland\"\nmsgstr \"Värmland\"\n\n#: se/se_counties.py:31\nmsgid \"Örebro\"\nmsgstr \"Örebro\"\n\n#: se/se_counties.py:32\nmsgid \"Västmanland\"\nmsgstr \"Västmanland\"\n\n#: se/se_counties.py:33\nmsgid \"Dalarna\"\nmsgstr \"Dalarna\"\n\n#: se/se_counties.py:34\nmsgid \"Gävleborg\"\nmsgstr \"Gävleborg\"\n\n#: se/se_counties.py:35\nmsgid \"Västernorrland\"\nmsgstr \"Västernorrland\"\n\n#: se/se_counties.py:36\nmsgid \"Jämtland\"\nmsgstr \"Jämtland\"\n\n#: si/forms.py:25\nmsgid \"The first 7 digits of the EMSO must represent a valid past date.\"\nmsgstr \"\"\n\n#: si/forms.py:26\nmsgid \"The EMSO is not valid.\"\nmsgstr \"\"\n\n#: si/forms.py:86\nmsgid \"Enter a valid tax number in form SIXXXXXXXX\"\nmsgstr \"\"\n\n#: si/forms.py:151\nmsgid \"Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:8\nmsgid \"Banska Bystrica\"\nmsgstr \"Banska Bystrica\"\n\n#: sk/sk_districts.py:9\nmsgid \"Banska Stiavnica\"\nmsgstr \"Banska Stiavnica\"\n\n#: sk/sk_districts.py:10\nmsgid \"Bardejov\"\nmsgstr \"Bardejov\"\n\n#: sk/sk_districts.py:11\nmsgid \"Banovce nad Bebravou\"\nmsgstr \"Banovce nad Bebravou\"\n\n#: sk/sk_districts.py:12\nmsgid \"Brezno\"\nmsgstr \"Brezno\"\n\n#: sk/sk_districts.py:13\nmsgid \"Bratislava I\"\nmsgstr \"Bratislava I\"\n\n#: sk/sk_districts.py:14\nmsgid \"Bratislava II\"\nmsgstr \"Bratislava II\"\n\n#: sk/sk_districts.py:15\nmsgid \"Bratislava III\"\nmsgstr \"Bratislava III\"\n\n#: sk/sk_districts.py:16\nmsgid \"Bratislava IV\"\nmsgstr \"Bratislava IV\"\n\n#: sk/sk_districts.py:17\nmsgid \"Bratislava V\"\nmsgstr \"Bratislava V\"\n\n#: sk/sk_districts.py:18\nmsgid \"Bytca\"\nmsgstr \"Bytca\"\n\n#: sk/sk_districts.py:19\nmsgid \"Cadca\"\nmsgstr \"Cadca\"\n\n#: sk/sk_districts.py:20\nmsgid \"Detva\"\nmsgstr \"Detva\"\n\n#: sk/sk_districts.py:21\nmsgid \"Dolny Kubin\"\nmsgstr \"Dolny Kubin\"\n\n#: sk/sk_districts.py:22\nmsgid \"Dunajska Streda\"\nmsgstr \"Dunajska Streda\"\n\n#: sk/sk_districts.py:23\nmsgid \"Galanta\"\nmsgstr \"Galanta\"\n\n#: sk/sk_districts.py:24\nmsgid \"Gelnica\"\nmsgstr \"Gelnica\"\n\n#: sk/sk_districts.py:25\nmsgid \"Hlohovec\"\nmsgstr \"Hlohovec\"\n\n#: sk/sk_districts.py:26\nmsgid \"Humenne\"\nmsgstr \"Humenne\"\n\n#: sk/sk_districts.py:27\nmsgid \"Ilava\"\nmsgstr \"Ilava\"\n\n#: sk/sk_districts.py:28\nmsgid \"Kezmarok\"\nmsgstr \"Kezmarok\"\n\n#: sk/sk_districts.py:29\nmsgid \"Komarno\"\nmsgstr \"Komarno\"\n\n#: sk/sk_districts.py:30\nmsgid \"Kosice I\"\nmsgstr \"Kosice I\"\n\n#: sk/sk_districts.py:31\nmsgid \"Kosice II\"\nmsgstr \"Kosice II\"\n\n#: sk/sk_districts.py:32\nmsgid \"Kosice III\"\nmsgstr \"Kosice III\"\n\n#: sk/sk_districts.py:33\nmsgid \"Kosice IV\"\nmsgstr \"Kosice IV\"\n\n#: sk/sk_districts.py:34\nmsgid \"Kosice - okolie\"\nmsgstr \"Kosice - okolie\"\n\n#: sk/sk_districts.py:35\nmsgid \"Krupina\"\nmsgstr \"Krupina\"\n\n#: sk/sk_districts.py:36\nmsgid \"Kysucke Nove Mesto\"\nmsgstr \"Kysucke Nove Mesto\"\n\n#: sk/sk_districts.py:37\nmsgid \"Levice\"\nmsgstr \"Levice\"\n\n#: sk/sk_districts.py:38\nmsgid \"Levoca\"\nmsgstr \"Levoca\"\n\n#: sk/sk_districts.py:39\nmsgid \"Liptovsky Mikulas\"\nmsgstr \"Liptovsky Mikulas\"\n\n#: sk/sk_districts.py:40\nmsgid \"Lucenec\"\nmsgstr \"Lucenec\"\n\n#: sk/sk_districts.py:41\nmsgid \"Malacky\"\nmsgstr \"Malacky\"\n\n#: sk/sk_districts.py:42\nmsgid \"Martin\"\nmsgstr \"Martin\"\n\n#: sk/sk_districts.py:43\nmsgid \"Medzilaborce\"\nmsgstr \"Medzilaborce\"\n\n#: sk/sk_districts.py:44\nmsgid \"Michalovce\"\nmsgstr \"Michalovce\"\n\n#: sk/sk_districts.py:45\nmsgid \"Myjava\"\nmsgstr \"Myjava\"\n\n#: sk/sk_districts.py:46\nmsgid \"Namestovo\"\nmsgstr \"Namestovo\"\n\n#: sk/sk_districts.py:47\nmsgid \"Nitra\"\nmsgstr \"Nitra\"\n\n#: sk/sk_districts.py:48\nmsgid \"Nove Mesto nad Vahom\"\nmsgstr \"Nove Mesto nad Vahom\"\n\n#: sk/sk_districts.py:49\nmsgid \"Nove Zamky\"\nmsgstr \"Nove Zamky\"\n\n#: sk/sk_districts.py:50\nmsgid \"Partizanske\"\nmsgstr \"Partizanske\"\n\n#: sk/sk_districts.py:51\nmsgid \"Pezinok\"\nmsgstr \"Pezinok\"\n\n#: sk/sk_districts.py:52\nmsgid \"Piestany\"\nmsgstr \"Piestany\"\n\n#: sk/sk_districts.py:53\nmsgid \"Poltar\"\nmsgstr \"Poltar\"\n\n#: sk/sk_districts.py:54\nmsgid \"Poprad\"\nmsgstr \"Poprad\"\n\n#: sk/sk_districts.py:55\nmsgid \"Povazska Bystrica\"\nmsgstr \"Povazska Bystrica\"\n\n#: sk/sk_districts.py:56\nmsgid \"Presov\"\nmsgstr \"Presov\"\n\n#: sk/sk_districts.py:57\nmsgid \"Prievidza\"\nmsgstr \"Prievidza\"\n\n#: sk/sk_districts.py:58\nmsgid \"Puchov\"\nmsgstr \"Puchov\"\n\n#: sk/sk_districts.py:59\nmsgid \"Revuca\"\nmsgstr \"Revuca\"\n\n#: sk/sk_districts.py:60\nmsgid \"Rimavska Sobota\"\nmsgstr \"Rimavska Sobota\"\n\n#: sk/sk_districts.py:61\nmsgid \"Roznava\"\nmsgstr \"Roznava\"\n\n#: sk/sk_districts.py:62\nmsgid \"Ruzomberok\"\nmsgstr \"Ruzomberok\"\n\n#: sk/sk_districts.py:63\nmsgid \"Sabinov\"\nmsgstr \"Sabinov\"\n\n#: sk/sk_districts.py:64\nmsgid \"Senec\"\nmsgstr \"Senec\"\n\n#: sk/sk_districts.py:65\nmsgid \"Senica\"\nmsgstr \"Senica\"\n\n#: sk/sk_districts.py:66\nmsgid \"Skalica\"\nmsgstr \"Skalica\"\n\n#: sk/sk_districts.py:67\nmsgid \"Snina\"\nmsgstr \"Snina\"\n\n#: sk/sk_districts.py:68\nmsgid \"Sobrance\"\nmsgstr \"Sobrance\"\n\n#: sk/sk_districts.py:69\nmsgid \"Spisska Nova Ves\"\nmsgstr \"Spisska Nova Ves\"\n\n#: sk/sk_districts.py:70\nmsgid \"Stara Lubovna\"\nmsgstr \"Stara Lubovna\"\n\n#: sk/sk_districts.py:71\nmsgid \"Stropkov\"\nmsgstr \"Stropkov\"\n\n#: sk/sk_districts.py:72\nmsgid \"Svidnik\"\nmsgstr \"Svidnik\"\n\n#: sk/sk_districts.py:73\nmsgid \"Sala\"\nmsgstr \"Sala\"\n\n#: sk/sk_districts.py:74\nmsgid \"Topolcany\"\nmsgstr \"Topolcany\"\n\n#: sk/sk_districts.py:75\nmsgid \"Trebisov\"\nmsgstr \"Trebisov\"\n\n#: sk/sk_districts.py:76\nmsgid \"Trencin\"\nmsgstr \"Trencin\"\n\n#: sk/sk_districts.py:77\nmsgid \"Trnava\"\nmsgstr \"Trnava\"\n\n#: sk/sk_districts.py:78\nmsgid \"Turcianske Teplice\"\nmsgstr \"Turcianske Teplice\"\n\n#: sk/sk_districts.py:79\nmsgid \"Tvrdosin\"\nmsgstr \"Tvrdosin\"\n\n#: sk/sk_districts.py:80\nmsgid \"Velky Krtis\"\nmsgstr \"Velky Krtis\"\n\n#: sk/sk_districts.py:81\nmsgid \"Vranov nad Toplou\"\nmsgstr \"Vranov nad Toplou\"\n\n#: sk/sk_districts.py:82\nmsgid \"Zlate Moravce\"\nmsgstr \"Zlate Moravce\"\n\n#: sk/sk_districts.py:83\nmsgid \"Zvolen\"\nmsgstr \"Zvolen\"\n\n#: sk/sk_districts.py:84\nmsgid \"Zarnovica\"\nmsgstr \"Zarnovica\"\n\n#: sk/sk_districts.py:85\nmsgid \"Ziar nad Hronom\"\nmsgstr \"Ziar nad Hronom\"\n\n#: sk/sk_districts.py:86\nmsgid \"Zilina\"\nmsgstr \"Zilina\"\n\n#: sk/sk_regions.py:8\nmsgid \"Banska Bystrica region\"\nmsgstr \"Regija Banska Bystrica\"\n\n#: sk/sk_regions.py:9\nmsgid \"Bratislava region\"\nmsgstr \"Regija Bratislava\"\n\n#: sk/sk_regions.py:10\nmsgid \"Kosice region\"\nmsgstr \"Regija Kosice\"\n\n#: sk/sk_regions.py:11\nmsgid \"Nitra region\"\nmsgstr \"Regija Nitra\"\n\n#: sk/sk_regions.py:12\nmsgid \"Presov region\"\nmsgstr \"Regija Presov\"\n\n#: sk/sk_regions.py:13\nmsgid \"Trencin region\"\nmsgstr \"Regija Trencin\"\n\n#: sk/sk_regions.py:14\nmsgid \"Trnava region\"\nmsgstr \"Regija Trnava\"\n\n#: sk/sk_regions.py:15\nmsgid \"Zilina region\"\nmsgstr \"Regija Zilina\"\n\n#: tr/forms.py:21\nmsgid \"Enter a postal code in the format XXXXX.\"\nmsgstr \"Unesite poštanski broj u formatu XXXXX.\"\n\n#: tr/forms.py:42\nmsgid \"Phone numbers must be in 0XXX XXX XXXX format.\"\nmsgstr \"Telefonski brojevi moraju biti u 0XXX XXX XXXX formatu.\"\n\n#: tr/forms.py:69\nmsgid \"Enter a valid Turkish Identification number.\"\nmsgstr \"Unesite valjani turski identifikacijski broj.\"\n\n#: tr/forms.py:70\nmsgid \"Turkish Identification number must be 11 digits.\"\nmsgstr \"Turski Identifikacioni broj mora biti 11 znamenki.\"\n\n#: us/forms.py:21\nmsgid \"Enter a zip code in the format XXXXX or XXXXX-XXXX.\"\nmsgstr \"Unesite zip kod formata XXXXX or XXXXX-XXXX.\"\n\n#: us/forms.py:59\nmsgid \"Enter a valid U.S. Social Security number in XXX-XX-XXXX format.\"\nmsgstr \"\"\n\"Unesi ispravan broj socijalnog osiguranja S.A.D.-a formata XXX-XX-XXXX.\"\n\n#: us/forms.py:92\nmsgid \"Enter a U.S. state or territory.\"\nmsgstr \"Unesite državu ili teritorij u SAD-u.\"\n\n#: us/models.py:8\nmsgid \"U.S. state (two uppercase letters)\"\nmsgstr \"Država S.A.D.-a (dva velika slova)\"\n\n#: us/models.py:17\nmsgid \"U.S. postal code (two uppercase letters)\"\nmsgstr \"Američki poštanski broj (dva velika slova)\"\n\n#: us/models.py:26\nmsgid \"Phone number\"\nmsgstr \"Telefonski broj\"\n\n#: uy/forms.py:29\nmsgid \"Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.\"\nmsgstr \"Unesite valjani CI broj u X.XXX.XXX-X, XXXXXXX-X ili XXXXXXXX formatu.\"\n\n#: uy/forms.py:31\nmsgid \"Enter a valid CI number.\"\nmsgstr \"Unesite ispravan CI broj.\"\n\n#: za/forms.py:22\nmsgid \"Enter a valid South African ID number\"\nmsgstr \"Unesi ispravan južnoafrički ID broj.\"\n\n#: za/forms.py:56\nmsgid \"Enter a valid South African postal code\"\nmsgstr \"Unesite ispravan južnoafrički poštanski broj.\"\n\n#: za/za_provinces.py:4\nmsgid \"Eastern Cape\"\nmsgstr \"Eastern Cape\"\n\n#: za/za_provinces.py:5\nmsgid \"Free State\"\nmsgstr \"Free State\"\n\n#: za/za_provinces.py:6\nmsgid \"Gauteng\"\nmsgstr \"Gauteng\"\n\n#: za/za_provinces.py:7\nmsgid \"KwaZulu-Natal\"\nmsgstr \"KwaZulu-Natal\"\n\n#: za/za_provinces.py:8\nmsgid \"Limpopo\"\nmsgstr \"Limpopo\"\n\n#: za/za_provinces.py:9\nmsgid \"Mpumalanga\"\nmsgstr \"Mpumalanga\"\n\n#: za/za_provinces.py:10\nmsgid \"Northern Cape\"\nmsgstr \"Northern Cape\"\n\n#: za/za_provinces.py:11\nmsgid \"North West\"\nmsgstr \"North West\"\n\n#: za/za_provinces.py:12\nmsgid \"Western Cape\"\nmsgstr \"Western Cape\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/locale/hu/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Attila Nagy <>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# János Péter Ronkay <transifex@hangya.net>, 2012.\n# Kristóf Gruber <>, 2012.\n# Máté Őry <orymate@iit.bme.hu>, 2012.\n# Szilveszter Farkas <szilveszter.farkas@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-10-17 09:16+0000\\n\"\n\"Last-Translator: Máté Őry <orymate@iit.bme.hu>\\n\"\n\"Language-Team: Hungarian (http://www.transifex.com/projects/p/django/\"\n\"language/hu/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: hu\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: ar/forms.py:30\nmsgid \"Enter a postal code in the format NNNN or ANNNNAAA.\"\nmsgstr \"Adjon meg egy irányítószámot 'NNNN' vagy 'ANNNNAA' alakban.\"\n\n#: ar/forms.py:52 br/forms.py:95 br/forms.py:134 pe/forms.py:27 pe/forms.py:55\nmsgid \"This field requires only numbers.\"\nmsgstr \"Ez a mező csak számokat tartalmazhat.\"\n\n#: ar/forms.py:53\nmsgid \"This field requires 7 or 8 digits.\"\nmsgstr \"Ennek a mezőnek 7 vagy 8 számjegyet kell tartalmaznia.\"\n\n#: ar/forms.py:82\nmsgid \"Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.\"\nmsgstr \"\"\n\"Adjon meg egy érvényes CUIT-t 'XX-XXXXXXXX', vagy 'XXXXXXXXXXXX' alakban.\"\n\n#: ar/forms.py:83\nmsgid \"Invalid CUIT.\"\nmsgstr \"Érvénytelen CUIT.\"\n\n#: ar/forms.py:84\nmsgid \"Invalid legal type. Type must be 27, 20, 23 or 30.\"\nmsgstr \"\"\n\n#: at/at_states.py:5\nmsgid \"Burgenland\"\nmsgstr \"Burgenland\"\n\n#: at/at_states.py:6\nmsgid \"Carinthia\"\nmsgstr \"Karintia\"\n\n#: at/at_states.py:7\nmsgid \"Lower Austria\"\nmsgstr \"Alsó-Ausztria\"\n\n#: at/at_states.py:8\nmsgid \"Upper Austria\"\nmsgstr \"Felső-Ausztria\"\n\n#: at/at_states.py:9\nmsgid \"Salzburg\"\nmsgstr \"Salzburg\"\n\n#: at/at_states.py:10\nmsgid \"Styria\"\nmsgstr \"Stájerország\"\n\n#: at/at_states.py:11\nmsgid \"Tyrol\"\nmsgstr \"Tirol\"\n\n#: at/at_states.py:12\nmsgid \"Vorarlberg\"\nmsgstr \"Vorarlberg\"\n\n#: at/at_states.py:13\nmsgid \"Vienna\"\nmsgstr \"Bécs\"\n\n#: at/forms.py:22 ch/forms.py:22 no/forms.py:19\nmsgid \"Enter a zip code in the format XXXX.\"\nmsgstr \"Adjon meg egy irányítószámot 'XXXX' alakban.\"\n\n#: at/forms.py:50\nmsgid \"Enter a valid Austrian Social Security Number in XXXX XXXXXX format.\"\nmsgstr \"\"\n\"Adjon meg egy érvényes ausztriai társadalombiztosítási azonosítót 'XXXX \"\n\"XXXXXX' alakban.\"\n\n#: au/forms.py:26\nmsgid \"Enter a 4 digit postcode.\"\nmsgstr \"Adjon meg egy négy számjegyű irányítószámot.\"\n\n#: au/models.py:9\nmsgid \"Australian State\"\nmsgstr \"Ausztrál szövetségi állam\"\n\n#: au/models.py:19\nmsgid \"Australian Postcode\"\nmsgstr \"Ausztrál irányítószám\"\n\n#: au/models.py:33\nmsgid \"Australian Phone number\"\nmsgstr \"Ausztrál telefonszám\"\n\n#: be/be_provinces.py:5\nmsgid \"Antwerp\"\nmsgstr \"Antwerpen\"\n\n#: be/be_provinces.py:6\nmsgid \"Brussels\"\nmsgstr \"Brüsszel\"\n\n#: be/be_provinces.py:7\nmsgid \"East Flanders\"\nmsgstr \"Kelet-Flandria\"\n\n#: be/be_provinces.py:8\nmsgid \"Flemish Brabant\"\nmsgstr \"Flamand Brabant\"\n\n#: be/be_provinces.py:9\nmsgid \"Hainaut\"\nmsgstr \"Hainaut\"\n\n#: be/be_provinces.py:10\nmsgid \"Liege\"\nmsgstr \"Liége\"\n\n#: be/be_provinces.py:11 nl/nl_provinces.py:9\nmsgid \"Limburg\"\nmsgstr \"Limburg\"\n\n#: be/be_provinces.py:12\nmsgid \"Luxembourg\"\nmsgstr \"Luxemburg\"\n\n#: be/be_provinces.py:13\nmsgid \"Namur\"\nmsgstr \"Namur\"\n\n#: be/be_provinces.py:14\nmsgid \"Walloon Brabant\"\nmsgstr \"Vallon Brabant\"\n\n#: be/be_provinces.py:15\nmsgid \"West Flanders\"\nmsgstr \"Nyugat-Flandria\"\n\n#: be/be_regions.py:5\nmsgid \"Brussels Capital Region\"\nmsgstr \"Brüsszel fővárosi régió\"\n\n#: be/be_regions.py:6\nmsgid \"Flemish Region\"\nmsgstr \"Flamand régió\"\n\n#: be/be_regions.py:7\nmsgid \"Wallonia\"\nmsgstr \"Vallónia\"\n\n#: be/forms.py:25\nmsgid \"Enter a valid postal code in the range and format 1XXX - 9XXX.\"\nmsgstr \"\"\n\"Adjon meg egy érvényes irányítószámot 1XXX-9XXX tartományban és formátumban.\"\n\n#: be/forms.py:48\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\nmsgstr \"\"\n\"Adjon meg egy érvényes telefonszámot az alábbi formátumok egyikében: 0x xxx \"\n\"xx xx, 0xx xx xx xx, 04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.\"\n\"xx, 0x.xxx.xx.xx, 0xx.xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx, vagy 04xxxxxxxx.\"\n\n#: br/forms.py:22\nmsgid \"Enter a zip code in the format XXXXX-XXX.\"\nmsgstr \"Adjon meg egy irányítószámot 'XXXXX-XXX' alakban.\"\n\n#: br/forms.py:31\nmsgid \"Phone numbers must be in XX-XXXX-XXXX format.\"\nmsgstr \"A telefonszámoknak 'XXX-XXX-XXXX' formátumúnak kell lenniük.\"\n\n#: br/forms.py:58\nmsgid \"\"\n\"Select a valid brazilian state. That state is not one of the available \"\n\"states.\"\nmsgstr \"\"\n\"Válasszon ki egy érvényes brazil államot. Az Ön választása nincs az elérhető \"\n\"lehetőségek között.\"\n\n#: br/forms.py:93\nmsgid \"Invalid CPF number.\"\nmsgstr \"Érvénytelen CPF szám.\"\n\n#: br/forms.py:94\nmsgid \"This field requires at most 11 digits or 14 characters.\"\nmsgstr \"Ez a mező legfeljebb 11 számjegyet vagy 14 karaktert tartalmazhat.\"\n\n#: br/forms.py:133\nmsgid \"Invalid CNPJ number.\"\nmsgstr \"Érvénytelen CNPJ szám.\"\n\n#: br/forms.py:135\nmsgid \"This field requires at least 14 digits\"\nmsgstr \"Ennek a mezőnek legalább 14 számjegyet kell tartalmaznia.\"\n\n#: ca/forms.py:29\nmsgid \"Enter a postal code in the format XXX XXX.\"\nmsgstr \"Írjon be egy irányítószámot 'XXX XXX' alakban.\"\n\n#: ca/forms.py:47 us/forms.py:30\nmsgid \"Phone numbers must be in XXX-XXX-XXXX format.\"\nmsgstr \"A telefonszámnak XXX-XXX-XXXX formátumban kell lennie.\"\n\n#: ca/forms.py:69\nmsgid \"Enter a Canadian province or territory.\"\nmsgstr \"\"\n\n#: ca/forms.py:110\nmsgid \"Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.\"\nmsgstr \"\"\n\"Adjon meg egy érvényes kanadai egészségbiztosítási számot 'XXX-XXX-XXX' \"\n\"alakban.\"\n\n#: ch/ch_states.py:5\nmsgid \"Aargau\"\nmsgstr \"Aargau\"\n\n#: ch/ch_states.py:6\nmsgid \"Appenzell Innerrhoden\"\nmsgstr \"Appenzell Innerrhoden\"\n\n#: ch/ch_states.py:7\nmsgid \"Appenzell Ausserrhoden\"\nmsgstr \"Appenzell Ausserrhoden\"\n\n#: ch/ch_states.py:8\nmsgid \"Basel-Stadt\"\nmsgstr \"Bázel-város\"\n\n#: ch/ch_states.py:9\nmsgid \"Basel-Land\"\nmsgstr \"Bázel-vidék\"\n\n#: ch/ch_states.py:10\nmsgid \"Berne\"\nmsgstr \"Berne\"\n\n#: ch/ch_states.py:11\nmsgid \"Fribourg\"\nmsgstr \"Fribourg\"\n\n#: ch/ch_states.py:12\nmsgid \"Geneva\"\nmsgstr \"Genf\"\n\n#: ch/ch_states.py:13\nmsgid \"Glarus\"\nmsgstr \"Glarus\"\n\n#: ch/ch_states.py:14\nmsgid \"Graubuenden\"\nmsgstr \"Graubuenden\"\n\n#: ch/ch_states.py:15\nmsgid \"Jura\"\nmsgstr \"Jura\"\n\n#: ch/ch_states.py:16\nmsgid \"Lucerne\"\nmsgstr \"Lucerne\"\n\n#: ch/ch_states.py:17\nmsgid \"Neuchatel\"\nmsgstr \"Neuchatel\"\n\n#: ch/ch_states.py:18\nmsgid \"Nidwalden\"\nmsgstr \"Nidwalden\"\n\n#: ch/ch_states.py:19\nmsgid \"Obwalden\"\nmsgstr \"Obwalden\"\n\n#: ch/ch_states.py:20\nmsgid \"Schaffhausen\"\nmsgstr \"Schaffhausen\"\n\n#: ch/ch_states.py:21\nmsgid \"Schwyz\"\nmsgstr \"Schwyz\"\n\n#: ch/ch_states.py:22\nmsgid \"Solothurn\"\nmsgstr \"Solothurn\"\n\n#: ch/ch_states.py:23\nmsgid \"St. Gallen\"\nmsgstr \"St. Gallen\"\n\n#: ch/ch_states.py:24\nmsgid \"Thurgau\"\nmsgstr \"Thurgau\"\n\n#: ch/ch_states.py:25\nmsgid \"Ticino\"\nmsgstr \"Ticino\"\n\n#: ch/ch_states.py:26\nmsgid \"Uri\"\nmsgstr \"Uri\"\n\n#: ch/ch_states.py:27\nmsgid \"Valais\"\nmsgstr \"Valais\"\n\n#: ch/ch_states.py:28\nmsgid \"Vaud\"\nmsgstr \"Vaud\"\n\n#: ch/ch_states.py:29\nmsgid \"Zug\"\nmsgstr \"Zug\"\n\n#: ch/ch_states.py:30\nmsgid \"Zurich\"\nmsgstr \"Zürich\"\n\n#: ch/forms.py:37\nmsgid \"Phone numbers must be in 0XX XXX XX XX format.\"\nmsgstr \"\"\n\n#: ch/forms.py:68\nmsgid \"\"\n\"Enter a valid Swiss identity or passport card number in X1234567<0 or \"\n\"1234567890 format.\"\nmsgstr \"\"\n\"Adjon meg egy érvényes svájci személyazonosító vagy útlevél számot \"\n\"\\\"X1234567<0\\\" vagy \\\"1234567890\\\" alakban.\"\n\n#: cl/forms.py:32\nmsgid \"Enter a valid Chilean RUT.\"\nmsgstr \"Adjon meg egy érvényes chilei RUT-ot.\"\n\n#: cl/forms.py:33\nmsgid \"Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.\"\nmsgstr \"Adjon meg egy érvényes chilei RUT-ot 'XX.XXX.XXX-X' alakban.\"\n\n#: cl/forms.py:34\nmsgid \"The Chilean RUT is not valid.\"\nmsgstr \"A chilei RUT érvénytelen.\"\n\n#: cn/forms.py:84\nmsgid \"Enter a post code in the format XXXXXX.\"\nmsgstr \"Adjon meg egy 'XXXXXX' formátumú irányítószámot.\"\n\n#: cn/forms.py:105\nmsgid \"ID Card Number consists of 15 or 18 digits.\"\nmsgstr \"A személyi igazolvány szám 15 vagy 18 jegyből áll.\"\n\n#: cn/forms.py:106\nmsgid \"Invalid ID Card Number: Wrong checksum\"\nmsgstr \"Hibás személyi igazolvány szám: Hibás ellenőrző összeg\"\n\n#: cn/forms.py:107\nmsgid \"Invalid ID Card Number: Wrong birthdate\"\nmsgstr \"Hibás személyi igazolvány szám: Hibás születési dátum\"\n\n#: cn/forms.py:108\nmsgid \"Invalid ID Card Number: Wrong location code\"\nmsgstr \"Hibás személyi igazolvány szám: Hibás hely kód\"\n\n#: cn/forms.py:193\nmsgid \"Enter a valid phone number.\"\nmsgstr \"Adjon meg egy érvényes telefonszámot.\"\n\n#: cn/forms.py:210\nmsgid \"Enter a valid cell number.\"\nmsgstr \"Adj meg érvényes mobil számot!\"\n\n#: cz/cz_regions.py:8\nmsgid \"Prague\"\nmsgstr \"Prága\"\n\n#: cz/cz_regions.py:9\nmsgid \"Central Bohemian Region\"\nmsgstr \"Közép-Csehországi kerület\"\n\n#: cz/cz_regions.py:10\nmsgid \"South Bohemian Region\"\nmsgstr \"Dél-Csehországi kerület\"\n\n#: cz/cz_regions.py:11\nmsgid \"Pilsen Region\"\nmsgstr \"Plzeňi kerület\"\n\n#: cz/cz_regions.py:12\nmsgid \"Carlsbad Region\"\nmsgstr \"Karlovy Vary-i kerület\"\n\n#: cz/cz_regions.py:13\nmsgid \"Usti Region\"\nmsgstr \"Ústí nad Labem-i kerület\"\n\n#: cz/cz_regions.py:14\nmsgid \"Liberec Region\"\nmsgstr \"Libereci kerület\"\n\n#: cz/cz_regions.py:15\nmsgid \"Hradec Region\"\nmsgstr \"Hradec Králové-i kerület\"\n\n#: cz/cz_regions.py:16\nmsgid \"Pardubice Region\"\nmsgstr \"Pardubicei kerület\"\n\n#: cz/cz_regions.py:17\nmsgid \"Vysocina Region\"\nmsgstr \"Vysočina kerület\"\n\n#: cz/cz_regions.py:18\nmsgid \"South Moravian Region\"\nmsgstr \"Dél-Morva kerület\"\n\n#: cz/cz_regions.py:19\nmsgid \"Olomouc Region\"\nmsgstr \"Olomouci kerület\"\n\n#: cz/cz_regions.py:20\nmsgid \"Zlin Region\"\nmsgstr \"Zlíni kerület\"\n\n#: cz/cz_regions.py:21\nmsgid \"Moravian-Silesian Region\"\nmsgstr \"Morva–Sziléziai kerület\"\n\n#: cz/forms.py:32 sk/forms.py:33\nmsgid \"Enter a postal code in the format XXXXX or XXX XX.\"\nmsgstr \"Adjon meg egy irányítószámot 'XXXXX' vagy 'XXX XX' alakban.\"\n\n#: cz/forms.py:52\nmsgid \"Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.\"\nmsgstr \"\"\n\"Adjon meg egy születési számot XXXXXX/XXXX, vagy XXXXXXXXXX formátumban.\"\n\n#: cz/forms.py:53\nmsgid \"Enter a valid birth number.\"\nmsgstr \"Adjon meg egy érvényes születési számot.\"\n\n#: cz/forms.py:102\nmsgid \"Enter a valid IC number.\"\nmsgstr \"Adjon meg egy érvényes IC számot.\"\n\n#: de/de_states.py:5\nmsgid \"Baden-Wuerttemberg\"\nmsgstr \"Baden-Württemberg\"\n\n#: de/de_states.py:6\nmsgid \"Bavaria\"\nmsgstr \"Bajorország\"\n\n#: de/de_states.py:7\nmsgid \"Berlin\"\nmsgstr \"Berlin\"\n\n#: de/de_states.py:8\nmsgid \"Brandenburg\"\nmsgstr \"Brandenburg\"\n\n#: de/de_states.py:9\nmsgid \"Bremen\"\nmsgstr \"Bréma\"\n\n#: de/de_states.py:10\nmsgid \"Hamburg\"\nmsgstr \"Hamburg\"\n\n#: de/de_states.py:11\nmsgid \"Hessen\"\nmsgstr \"Hessen\"\n\n#: de/de_states.py:12\nmsgid \"Mecklenburg-Western Pomerania\"\nmsgstr \"Mecklenburg-Nyugat-Pomeránia\"\n\n#: de/de_states.py:13\nmsgid \"Lower Saxony\"\nmsgstr \"Alsó-Szászország\"\n\n#: de/de_states.py:14\nmsgid \"North Rhine-Westphalia\"\nmsgstr \"Észak-Rajna-Vesztfália\"\n\n#: de/de_states.py:15\nmsgid \"Rhineland-Palatinate\"\nmsgstr \"Rhineland-Palatinate\"\n\n#: de/de_states.py:16\nmsgid \"Saarland\"\nmsgstr \"Szárföld\"\n\n#: de/de_states.py:17\nmsgid \"Saxony\"\nmsgstr \"Szászország\"\n\n#: de/de_states.py:18\nmsgid \"Saxony-Anhalt\"\nmsgstr \"Szász-Anhalt\"\n\n#: de/de_states.py:19\nmsgid \"Schleswig-Holstein\"\nmsgstr \"Schleswig-Holstein\"\n\n#: de/de_states.py:20\nmsgid \"Thuringia\"\nmsgstr \"Türingia\"\n\n#: de/forms.py:20 fi/forms.py:18 fr/forms.py:20\nmsgid \"Enter a zip code in the format XXXXX.\"\nmsgstr \"Adjon meg egy irányítószámot 'XXXXX' alakban.\"\n\n#: de/forms.py:46\nmsgid \"\"\n\"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"format.\"\nmsgstr \"\"\n\"Adjon meg egy érvényes német személyazonosító számot \\\"XXXXXXXXXXX-XXXXXXX-\"\n\"XXXXXXX-X\\\" alakban.\"\n\n#: es/es_provinces.py:5\nmsgid \"Araba\"\nmsgstr \"\"\n\n#: es/es_provinces.py:6\nmsgid \"Albacete\"\nmsgstr \"Albacete\"\n\n#: es/es_provinces.py:7\nmsgid \"Alacant\"\nmsgstr \"Alacant\"\n\n#: es/es_provinces.py:8\nmsgid \"Almeria\"\nmsgstr \"Almeria\"\n\n#: es/es_provinces.py:9\nmsgid \"Avila\"\nmsgstr \"Avila\"\n\n#: es/es_provinces.py:10\nmsgid \"Badajoz\"\nmsgstr \"Badajoz\"\n\n#: es/es_provinces.py:11\nmsgid \"Illes Balears\"\nmsgstr \"Baleár szigetek\"\n\n#: es/es_provinces.py:12\nmsgid \"Barcelona\"\nmsgstr \"Barcelona\"\n\n#: es/es_provinces.py:13\nmsgid \"Burgos\"\nmsgstr \"Burgosz\"\n\n#: es/es_provinces.py:14\nmsgid \"Caceres\"\nmsgstr \"Caceres\"\n\n#: es/es_provinces.py:15\nmsgid \"Cadiz\"\nmsgstr \"Cadiz\"\n\n#: es/es_provinces.py:16\nmsgid \"Castello\"\nmsgstr \"Castello\"\n\n#: es/es_provinces.py:17\nmsgid \"Ciudad Real\"\nmsgstr \"Ciudad Real\"\n\n#: es/es_provinces.py:18\nmsgid \"Cordoba\"\nmsgstr \"Cordoba\"\n\n#: es/es_provinces.py:19\nmsgid \"A Coruna\"\nmsgstr \"A Coruna\"\n\n#: es/es_provinces.py:20\nmsgid \"Cuenca\"\nmsgstr \"Cuenca\"\n\n#: es/es_provinces.py:21\nmsgid \"Girona\"\nmsgstr \"Girona\"\n\n#: es/es_provinces.py:22\nmsgid \"Granada\"\nmsgstr \"Granada\"\n\n#: es/es_provinces.py:23\nmsgid \"Guadalajara\"\nmsgstr \"Guadalajara\"\n\n#: es/es_provinces.py:24\nmsgid \"Guipuzkoa\"\nmsgstr \"Guipuzkoa\"\n\n#: es/es_provinces.py:25\nmsgid \"Huelva\"\nmsgstr \"Huelva\"\n\n#: es/es_provinces.py:26\nmsgid \"Huesca\"\nmsgstr \"Huesca\"\n\n#: es/es_provinces.py:27\nmsgid \"Jaen\"\nmsgstr \"Jaen\"\n\n#: es/es_provinces.py:28\nmsgid \"Leon\"\nmsgstr \"Leon\"\n\n#: es/es_provinces.py:29\nmsgid \"Lleida\"\nmsgstr \"Lleida\"\n\n#: es/es_provinces.py:30 es/es_regions.py:17\nmsgid \"La Rioja\"\nmsgstr \"La Rioja\"\n\n#: es/es_provinces.py:31\nmsgid \"Lugo\"\nmsgstr \"Lugo\"\n\n#: es/es_provinces.py:32 es/es_regions.py:18\nmsgid \"Madrid\"\nmsgstr \"Madrid\"\n\n#: es/es_provinces.py:33\nmsgid \"Malaga\"\nmsgstr \"Malaga\"\n\n#: es/es_provinces.py:34\nmsgid \"Murcia\"\nmsgstr \"Murcia\"\n\n#: es/es_provinces.py:35\nmsgid \"Navarre\"\nmsgstr \"Navarra\"\n\n#: es/es_provinces.py:36\nmsgid \"Ourense\"\nmsgstr \"Ourense\"\n\n#: es/es_provinces.py:37\nmsgid \"Asturias\"\nmsgstr \"Asturias\"\n\n#: es/es_provinces.py:38\nmsgid \"Palencia\"\nmsgstr \"Palenica\"\n\n#: es/es_provinces.py:39\nmsgid \"Las Palmas\"\nmsgstr \"Las Palmas\"\n\n#: es/es_provinces.py:40\nmsgid \"Pontevedra\"\nmsgstr \"Pontevedra\"\n\n#: es/es_provinces.py:41\nmsgid \"Salamanca\"\nmsgstr \"Salamanca\"\n\n#: es/es_provinces.py:42\nmsgid \"Santa Cruz de Tenerife\"\nmsgstr \"Santa Cruz de Tenerife\"\n\n#: es/es_provinces.py:43 es/es_regions.py:11\nmsgid \"Cantabria\"\nmsgstr \"Cantabria\"\n\n#: es/es_provinces.py:44\nmsgid \"Segovia\"\nmsgstr \"Segovia\"\n\n#: es/es_provinces.py:45\nmsgid \"Seville\"\nmsgstr \"Sevilla\"\n\n#: es/es_provinces.py:46\nmsgid \"Soria\"\nmsgstr \"Soria\"\n\n#: es/es_provinces.py:47\nmsgid \"Tarragona\"\nmsgstr \"Tarragona\"\n\n#: es/es_provinces.py:48\nmsgid \"Teruel\"\nmsgstr \"Teruel\"\n\n#: es/es_provinces.py:49\nmsgid \"Toledo\"\nmsgstr \"Toledo\"\n\n#: es/es_provinces.py:50\nmsgid \"Valencia\"\nmsgstr \"Valencia\"\n\n#: es/es_provinces.py:51\nmsgid \"Valladolid\"\nmsgstr \"Valladolid\"\n\n#: es/es_provinces.py:52\nmsgid \"Bizkaia\"\nmsgstr \"Bizkaia\"\n\n#: es/es_provinces.py:53\nmsgid \"Zamora\"\nmsgstr \"Zamora\"\n\n#: es/es_provinces.py:54\nmsgid \"Zaragoza\"\nmsgstr \"Zaragoza\"\n\n#: es/es_provinces.py:55\nmsgid \"Ceuta\"\nmsgstr \"Ceuta\"\n\n#: es/es_provinces.py:56\nmsgid \"Melilla\"\nmsgstr \"Melilla\"\n\n#: es/es_regions.py:5\nmsgid \"Andalusia\"\nmsgstr \"Andalúzia\"\n\n#: es/es_regions.py:6\nmsgid \"Aragon\"\nmsgstr \"Aragon\"\n\n#: es/es_regions.py:7\nmsgid \"Principality of Asturias\"\nmsgstr \"Asztúriák tartománya\"\n\n#: es/es_regions.py:8\nmsgid \"Balearic Islands\"\nmsgstr \"Baleár-szigetek\"\n\n#: es/es_regions.py:9\nmsgid \"Basque Country\"\nmsgstr \"Baszkföld\"\n\n#: es/es_regions.py:10\nmsgid \"Canary Islands\"\nmsgstr \"Kanári-szigetek\"\n\n#: es/es_regions.py:12\nmsgid \"Castile-La Mancha\"\nmsgstr \"Kasztília-La Mancha\"\n\n#: es/es_regions.py:13\nmsgid \"Castile and Leon\"\nmsgstr \"Kasztília és Leon\"\n\n#: es/es_regions.py:14\nmsgid \"Catalonia\"\nmsgstr \"Katalónia\"\n\n#: es/es_regions.py:15\nmsgid \"Extremadura\"\nmsgstr \"Extremadura\"\n\n#: es/es_regions.py:16\nmsgid \"Galicia\"\nmsgstr \"Galícia\"\n\n#: es/es_regions.py:19\nmsgid \"Region of Murcia\"\nmsgstr \"Murciai régió\"\n\n#: es/es_regions.py:20\nmsgid \"Foral Community of Navarre\"\nmsgstr \"Navarrai autonóm közösség\"\n\n#: es/es_regions.py:21\nmsgid \"Valencian Community\"\nmsgstr \"Valenciai közösség\"\n\n#: es/forms.py:26\nmsgid \"Enter a valid postal code in the range and format 01XXX - 52XXX.\"\nmsgstr \"Adjon meg egy irányítószámot '01XXX-52XXX' alakban és tartományban.\"\n\n#: es/forms.py:46\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or \"\n\"9XXXXXXXX.\"\nmsgstr \"\"\n\"Adjon meg egy telefonszámot '6XXXXXXXX', '8XXXXXXXX' vagy '9XXXXXXXX' \"\n\"alakban.\"\n\n#: es/forms.py:73\nmsgid \"Please enter a valid NIF, NIE, or CIF.\"\nmsgstr \"Adjon meg egy érvényes NIF-et, NIE-t, vagy CIF-et.\"\n\n#: es/forms.py:74\nmsgid \"Please enter a valid NIF or NIE.\"\nmsgstr \"Adjon meg egy érvényes NIF-et vagy NIE-t.\"\n\n#: es/forms.py:75\nmsgid \"Invalid checksum for NIF.\"\nmsgstr \"Érvénytelen NIF ellenőrzőösszeg.\"\n\n#: es/forms.py:76\nmsgid \"Invalid checksum for NIE.\"\nmsgstr \"Érvénytelen NIE ellenőrzőösszeg.\"\n\n#: es/forms.py:77\nmsgid \"Invalid checksum for CIF.\"\nmsgstr \"Érvénytelen CIF ellenőrzőösszeg.\"\n\n#: es/forms.py:149\nmsgid \"\"\n\"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.\"\nmsgstr \"\"\n\"Adjon meg egy érvényes bankszámlaszámot 'XXXX.XXXX-XX-XXXXXXXXXX' alakban.\"\n\n#: es/forms.py:150\nmsgid \"Invalid checksum for bank account number.\"\nmsgstr \"Érvénytelen bankszámlaszám ellenőrzőösszeg.\"\n\n#: fi/forms.py:33\nmsgid \"Enter a valid Finnish social security number.\"\nmsgstr \"Adjon meg egy érvényes finn társadalombiztosítási számot.\"\n\n#: fr/forms.py:35\nmsgid \"Phone numbers must be in 0X XX XX XX XX format.\"\nmsgstr \"A telefonszámnak 0X XX XX XX XX formátumban kell lennie.\"\n\n#: gb/forms.py:25\nmsgid \"Enter a valid postcode.\"\nmsgstr \"Adjon meg egy érvényes irányítószámot.\"\n\n#: gb/gb_regions.py:11\nmsgid \"Bedfordshire\"\nmsgstr \"Bedfordshire\"\n\n#: gb/gb_regions.py:12\nmsgid \"Buckinghamshire\"\nmsgstr \"Buckinghamshire\"\n\n#: gb/gb_regions.py:14\nmsgid \"Cheshire\"\nmsgstr \"Cheshire\"\n\n#: gb/gb_regions.py:15\nmsgid \"Cornwall and Isles of Scilly\"\nmsgstr \"Cornwall and Isles of Scilly\"\n\n#: gb/gb_regions.py:16\nmsgid \"Cumbria\"\nmsgstr \"Cumbria\"\n\n#: gb/gb_regions.py:17\nmsgid \"Derbyshire\"\nmsgstr \"Derbyshire\"\n\n#: gb/gb_regions.py:18\nmsgid \"Devon\"\nmsgstr \"Devon\"\n\n#: gb/gb_regions.py:19\nmsgid \"Dorset\"\nmsgstr \"Dorset\"\n\n#: gb/gb_regions.py:20\nmsgid \"Durham\"\nmsgstr \"Durham\"\n\n#: gb/gb_regions.py:21\nmsgid \"East Sussex\"\nmsgstr \"East Sussex\"\n\n#: gb/gb_regions.py:22\nmsgid \"Essex\"\nmsgstr \"Essex\"\n\n#: gb/gb_regions.py:23\nmsgid \"Gloucestershire\"\nmsgstr \"Gloucestershire\"\n\n#: gb/gb_regions.py:24\nmsgid \"Greater London\"\nmsgstr \"Greater London\"\n\n#: gb/gb_regions.py:25\nmsgid \"Greater Manchester\"\nmsgstr \"Greater Manchester\"\n\n#: gb/gb_regions.py:26\nmsgid \"Hampshire\"\nmsgstr \"Hampshire\"\n\n#: gb/gb_regions.py:27\nmsgid \"Hertfordshire\"\nmsgstr \"Hertofrdshire\"\n\n#: gb/gb_regions.py:28\nmsgid \"Kent\"\nmsgstr \"Kent\"\n\n#: gb/gb_regions.py:29\nmsgid \"Lancashire\"\nmsgstr \"Lancashire\"\n\n#: gb/gb_regions.py:30\nmsgid \"Leicestershire\"\nmsgstr \"Leicestershire\"\n\n#: gb/gb_regions.py:31\nmsgid \"Lincolnshire\"\nmsgstr \"Linclonshire\"\n\n#: gb/gb_regions.py:32\nmsgid \"Merseyside\"\nmsgstr \"Merseyside\"\n\n#: gb/gb_regions.py:33\nmsgid \"Norfolk\"\nmsgstr \"Norfolk\"\n\n#: gb/gb_regions.py:34\nmsgid \"North Yorkshire\"\nmsgstr \"North Yorkshire\"\n\n#: gb/gb_regions.py:35\nmsgid \"Northamptonshire\"\nmsgstr \"Northamptonshire\"\n\n#: gb/gb_regions.py:36\nmsgid \"Northumberland\"\nmsgstr \"Northumberland\"\n\n#: gb/gb_regions.py:37\nmsgid \"Nottinghamshire\"\nmsgstr \"Nottinghamshire\"\n\n#: gb/gb_regions.py:38\nmsgid \"Oxfordshire\"\nmsgstr \"Oxfordshire\"\n\n#: gb/gb_regions.py:39\nmsgid \"Shropshire\"\nmsgstr \"Shropshire\"\n\n#: gb/gb_regions.py:40\nmsgid \"Somerset\"\nmsgstr \"Somerset\"\n\n#: gb/gb_regions.py:41\nmsgid \"South Yorkshire\"\nmsgstr \"South Yorkshire\"\n\n#: gb/gb_regions.py:42\nmsgid \"Staffordshire\"\nmsgstr \"Staffordshire\"\n\n#: gb/gb_regions.py:43\nmsgid \"Suffolk\"\nmsgstr \"Suffolk\"\n\n#: gb/gb_regions.py:44\nmsgid \"Surrey\"\nmsgstr \"Surrey\"\n\n#: gb/gb_regions.py:45\nmsgid \"Tyne and Wear\"\nmsgstr \"Tyne and Wear\"\n\n#: gb/gb_regions.py:46\nmsgid \"Warwickshire\"\nmsgstr \"Warwickshire\"\n\n#: gb/gb_regions.py:47\nmsgid \"West Midlands\"\nmsgstr \"West Midlands\"\n\n#: gb/gb_regions.py:48\nmsgid \"West Sussex\"\nmsgstr \"West Sussex\"\n\n#: gb/gb_regions.py:49\nmsgid \"West Yorkshire\"\nmsgstr \"West Yorkshire\"\n\n#: gb/gb_regions.py:50\nmsgid \"Wiltshire\"\nmsgstr \"Wiltshire\"\n\n#: gb/gb_regions.py:51\nmsgid \"Worcestershire\"\nmsgstr \"Worcestershire\"\n\n#: gb/gb_regions.py:55\nmsgid \"County Antrim\"\nmsgstr \"County Antrim\"\n\n#: gb/gb_regions.py:56\nmsgid \"County Armagh\"\nmsgstr \"Aounty Armagh\"\n\n#: gb/gb_regions.py:57\nmsgid \"County Down\"\nmsgstr \"County Down\"\n\n#: gb/gb_regions.py:58\nmsgid \"County Fermanagh\"\nmsgstr \"County Fermanagh\"\n\n#: gb/gb_regions.py:59\nmsgid \"County Londonderry\"\nmsgstr \"County Londonderry\"\n\n#: gb/gb_regions.py:60\nmsgid \"County Tyrone\"\nmsgstr \"County Tyrone\"\n\n#: gb/gb_regions.py:64\nmsgid \"Clwyd\"\nmsgstr \"Clwyd\"\n\n#: gb/gb_regions.py:65\nmsgid \"Dyfed\"\nmsgstr \"Dyfed\"\n\n#: gb/gb_regions.py:66\nmsgid \"Gwent\"\nmsgstr \"Gwent\"\n\n#: gb/gb_regions.py:67\nmsgid \"Gwynedd\"\nmsgstr \"Gwynedd\"\n\n#: gb/gb_regions.py:68\nmsgid \"Mid Glamorgan\"\nmsgstr \"Mid Glamorgan\"\n\n#: gb/gb_regions.py:69\nmsgid \"Powys\"\nmsgstr \"Powys\"\n\n#: gb/gb_regions.py:70\nmsgid \"South Glamorgan\"\nmsgstr \"South Glamoran\"\n\n#: gb/gb_regions.py:71\nmsgid \"West Glamorgan\"\nmsgstr \"West Glamorgan\"\n\n#: gb/gb_regions.py:75\nmsgid \"Borders\"\nmsgstr \"Borders\"\n\n#: gb/gb_regions.py:76\nmsgid \"Central Scotland\"\nmsgstr \"Közép-Skócia\"\n\n#: gb/gb_regions.py:77\nmsgid \"Dumfries and Galloway\"\nmsgstr \"Dumfries and Galloway\"\n\n#: gb/gb_regions.py:78\nmsgid \"Fife\"\nmsgstr \"Fife\"\n\n#: gb/gb_regions.py:79\nmsgid \"Grampian\"\nmsgstr \"Grampian\"\n\n#: gb/gb_regions.py:80\nmsgid \"Highland\"\nmsgstr \"Highland\"\n\n#: gb/gb_regions.py:81\nmsgid \"Lothian\"\nmsgstr \"Lothian\"\n\n#: gb/gb_regions.py:82\nmsgid \"Orkney Islands\"\nmsgstr \"Orkey-szigetek\"\n\n#: gb/gb_regions.py:83\nmsgid \"Shetland Islands\"\nmsgstr \"Shetland-szigetek\"\n\n#: gb/gb_regions.py:84\nmsgid \"Strathclyde\"\nmsgstr \"Strathclyde\"\n\n#: gb/gb_regions.py:85\nmsgid \"Tayside\"\nmsgstr \"Tayside\"\n\n#: gb/gb_regions.py:86\nmsgid \"Western Isles\"\nmsgstr \"Western Isles\"\n\n#: gb/gb_regions.py:90\nmsgid \"England\"\nmsgstr \"Anglia\"\n\n#: gb/gb_regions.py:91\nmsgid \"Northern Ireland\"\nmsgstr \"Észak-Írország\"\n\n#: gb/gb_regions.py:92\nmsgid \"Scotland\"\nmsgstr \"Skócia\"\n\n#: gb/gb_regions.py:93\nmsgid \"Wales\"\nmsgstr \"Wales\"\n\n#: hk/forms.py:37\n#, python-format\nmsgid \"Phone number should not start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:40\n#, python-format\nmsgid \"Phone number must be in one of the following formats: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:42\n#, python-format\nmsgid \"Phone number should start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hr/forms.py:76\nmsgid \"Enter a valid 13 digit JMBG\"\nmsgstr \"A 13 számjegyű JMBG megadása\"\n\n#: hr/forms.py:77\nmsgid \"Error in date segment\"\nmsgstr \"Hiba a dátum szegmensben\"\n\n#: hr/forms.py:123\nmsgid \"Enter a valid 11 digit OIB\"\nmsgstr \"A 11 számjegyű OIB megadása\"\n\n#: hr/forms.py:152 id/forms.py:112\nmsgid \"Enter a valid vehicle license plate number\"\nmsgstr \"Adjon meg egy érvényes rendszámot\"\n\n#: hr/forms.py:153\nmsgid \"Enter a valid location code\"\nmsgstr \"Adj meg érvényes hely kódot\"\n\n#: hr/forms.py:154\nmsgid \"Number part cannot be zero\"\nmsgstr \"A szám rész nem lehet nulla\"\n\n#: hr/forms.py:190\nmsgid \"Enter a valid 5 digit postal code\"\nmsgstr \"Adjon meg egy érvényes öt számjegyű irányítószámot.\"\n\n#: hr/forms.py:218 id/forms.py:72 nl/forms.py:56\nmsgid \"Enter a valid phone number\"\nmsgstr \"Adjon meg egy érvényes telefonszámot.\"\n\n#: hr/forms.py:219\nmsgid \"Enter a valid area or mobile network code\"\nmsgstr \"Adj meg érvényes vonalas vagy mobil körzet számot\"\n\n#: hr/forms.py:220\nmsgid \"The phone nubmer is too long\"\nmsgstr \"A telefonszám túl hosszú\"\n\n#: hr/forms.py:258\nmsgid \"Enter a valid 19 digit JMBAG starting with 601983\"\nmsgstr \"Adjon meg egy érvényes, 601983-mal kezdődő JMBAG-ot.\"\n\n#: hr/forms.py:259\nmsgid \"Card issue number cannot be zero\"\nmsgstr \"A kártya kibocsájtási száma nem lehet nulla\"\n\n#: hr/hr_choices.py:14\nmsgid \"Grad Zagreb\"\nmsgstr \"Grad Zagreb\"\n\n#: hr/hr_choices.py:15\nmsgid \"Bjelovarsko-bilogorska županija\"\nmsgstr \"Bjelovarsko-bilogorska županija\"\n\n#: hr/hr_choices.py:16\nmsgid \"Brodsko-posavska županija\"\nmsgstr \"Brodsko-posavska županija\"\n\n#: hr/hr_choices.py:17\nmsgid \"Dubrovačko-neretvanska županija\"\nmsgstr \"Dubrovačko-neretvanska županija\"\n\n#: hr/hr_choices.py:18\nmsgid \"Istarska županija\"\nmsgstr \"Istarska županija\"\n\n#: hr/hr_choices.py:19\nmsgid \"Karlovačka županija\"\nmsgstr \"Karlovačka županija\"\n\n#: hr/hr_choices.py:20\nmsgid \"Koprivničko-križevačka županija\"\nmsgstr \"Koprivničko-križevačka županija\"\n\n#: hr/hr_choices.py:21\nmsgid \"Krapinsko-zagorska županija\"\nmsgstr \"Krapinsko-zagorska županija\"\n\n#: hr/hr_choices.py:22\nmsgid \"Ličko-senjska županija\"\nmsgstr \"Ličko-senjska županija\"\n\n#: hr/hr_choices.py:23\nmsgid \"Međimurska županija\"\nmsgstr \"Međimurska županija\"\n\n#: hr/hr_choices.py:24\nmsgid \"Osječko-baranjska županija\"\nmsgstr \"Osječko-baranjska županija\"\n\n#: hr/hr_choices.py:25\nmsgid \"Požeško-slavonska županija\"\nmsgstr \"Požeško-slavonska županija\"\n\n#: hr/hr_choices.py:26\nmsgid \"Primorsko-goranska županija\"\nmsgstr \"Primorsko-goranska županija\"\n\n#: hr/hr_choices.py:27\nmsgid \"Sisačko-moslavačka županija\"\nmsgstr \"Sisačko-moslavačka županija\"\n\n#: hr/hr_choices.py:28\nmsgid \"Splitsko-dalmatinska županija\"\nmsgstr \"Splitsko-dalmatinska županija\"\n\n#: hr/hr_choices.py:29\nmsgid \"Šibensko-kninska županija\"\nmsgstr \"Šibensko-kninska županija\"\n\n#: hr/hr_choices.py:30\nmsgid \"Varaždinska županija\"\nmsgstr \"Varaždinska županija\"\n\n#: hr/hr_choices.py:31\nmsgid \"Virovitičko-podravska županija\"\nmsgstr \"Virovitičko-podravska županija\"\n\n#: hr/hr_choices.py:32\nmsgid \"Vukovarsko-srijemska županija\"\nmsgstr \"Vukovarsko-srijemska županija\"\n\n#: hr/hr_choices.py:33\nmsgid \"Zadarska županija\"\nmsgstr \"Zadarska županija\"\n\n#: hr/hr_choices.py:34\nmsgid \"Zagrebačka županija\"\nmsgstr \"Zagrebačka županija\"\n\n#: id/forms.py:31\nmsgid \"Enter a valid post code\"\nmsgstr \"Adjon meg egy érvényes irányítószámot\"\n\n#: id/forms.py:176\nmsgid \"Enter a valid NIK/KTP number\"\nmsgstr \"Adjon meg egy érvényes NIK/KTP számot\"\n\n#: id/id_choices.py:15\nmsgid \"Aceh\"\nmsgstr \"Aceh\"\n\n#: id/id_choices.py:16 id/id_choices.py:79\nmsgid \"Bali\"\nmsgstr \"Bali\"\n\n#: id/id_choices.py:17 id/id_choices.py:51\nmsgid \"Banten\"\nmsgstr \"Banten\"\n\n#: id/id_choices.py:18 id/id_choices.py:60\nmsgid \"Bengkulu\"\nmsgstr \"Bengkulu\"\n\n#: id/id_choices.py:19 id/id_choices.py:53\nmsgid \"Yogyakarta\"\nmsgstr \"Yogyakarta\"\n\n#: id/id_choices.py:20 id/id_choices.py:57\nmsgid \"Jakarta\"\nmsgstr \"Dzsakarta\"\n\n#: id/id_choices.py:21 id/id_choices.py:81\nmsgid \"Gorontalo\"\nmsgstr \"Gorontalo\"\n\n#: id/id_choices.py:22 id/id_choices.py:63\nmsgid \"Jambi\"\nmsgstr \"Jambi\"\n\n#: id/id_choices.py:23\nmsgid \"Jawa Barat\"\nmsgstr \"Jawa Barat\"\n\n#: id/id_choices.py:24\nmsgid \"Jawa Tengah\"\nmsgstr \"Jawa Tengah\"\n\n#: id/id_choices.py:25\nmsgid \"Jawa Timur\"\nmsgstr \"Jawa Timur\"\n\n#: id/id_choices.py:26 id/id_choices.py:94\nmsgid \"Kalimantan Barat\"\nmsgstr \"Kalimantan Barat\"\n\n#: id/id_choices.py:27 id/id_choices.py:72\nmsgid \"Kalimantan Selatan\"\nmsgstr \"Kalimantan Selatan\"\n\n#: id/id_choices.py:28 id/id_choices.py:95\nmsgid \"Kalimantan Tengah\"\nmsgstr \"Kalimantan Tengah\"\n\n#: id/id_choices.py:29 id/id_choices.py:96\nmsgid \"Kalimantan Timur\"\nmsgstr \"Kalimantan Timur\"\n\n#: id/id_choices.py:30\nmsgid \"Kepulauan Bangka-Belitung\"\nmsgstr \"Kepulauan Bangka-Belitung\"\n\n#: id/id_choices.py:31 id/id_choices.py:68\nmsgid \"Kepulauan Riau\"\nmsgstr \"Kepulauan Riau\"\n\n#: id/id_choices.py:32 id/id_choices.py:61\nmsgid \"Lampung\"\nmsgstr \"Lampung\"\n\n#: id/id_choices.py:33 id/id_choices.py:76\nmsgid \"Maluku\"\nmsgstr \"Maluku\"\n\n#: id/id_choices.py:34 id/id_choices.py:77\nmsgid \"Maluku Utara\"\nmsgstr \"Maluku Utara\"\n\n#: id/id_choices.py:35\nmsgid \"Nusa Tenggara Barat\"\nmsgstr \"Nusa Tenggara Barat\"\n\n#: id/id_choices.py:36\nmsgid \"Nusa Tenggara Timur\"\nmsgstr \"Nusa Tenggara Timur\"\n\n#: id/id_choices.py:37\nmsgid \"Papua\"\nmsgstr \"Papua\"\n\n#: id/id_choices.py:38\nmsgid \"Papua Barat\"\nmsgstr \"Papua Barat\"\n\n#: id/id_choices.py:39 id/id_choices.py:66\nmsgid \"Riau\"\nmsgstr \"Riau\"\n\n#: id/id_choices.py:40 id/id_choices.py:74\nmsgid \"Sulawesi Barat\"\nmsgstr \"Sulawesi Barat\"\n\n#: id/id_choices.py:41 id/id_choices.py:75\nmsgid \"Sulawesi Selatan\"\nmsgstr \"Sulawesi Selatan\"\n\n#: id/id_choices.py:42 id/id_choices.py:82\nmsgid \"Sulawesi Tengah\"\nmsgstr \"Sulawesi Tengah\"\n\n#: id/id_choices.py:43 id/id_choices.py:85\nmsgid \"Sulawesi Tenggara\"\nmsgstr \"Sulawesi Tenggara\"\n\n#: id/id_choices.py:44\nmsgid \"Sulawesi Utara\"\nmsgstr \"Sulawesi Utara\"\n\n#: id/id_choices.py:45 id/id_choices.py:58\nmsgid \"Sumatera Barat\"\nmsgstr \"Sumatera Barat\"\n\n#: id/id_choices.py:46 id/id_choices.py:62\nmsgid \"Sumatera Selatan\"\nmsgstr \"Sumatera Selatan\"\n\n#: id/id_choices.py:47 id/id_choices.py:64\nmsgid \"Sumatera Utara\"\nmsgstr \"Sumatera Utara\"\n\n#: id/id_choices.py:52\nmsgid \"Magelang\"\nmsgstr \"Magelang\"\n\n#: id/id_choices.py:54\nmsgid \"Surakarta - Solo\"\nmsgstr \"Surakarta - Solo\"\n\n#: id/id_choices.py:55\nmsgid \"Madiun\"\nmsgstr \"Madiun\"\n\n#: id/id_choices.py:56\nmsgid \"Kediri\"\nmsgstr \"Kediri\"\n\n#: id/id_choices.py:59\nmsgid \"Tapanuli\"\nmsgstr \"Tapanuli\"\n\n#: id/id_choices.py:65\nmsgid \"Nanggroe Aceh Darussalam\"\nmsgstr \"Nanggroe Aceh Darussalam\"\n\n#: id/id_choices.py:67\nmsgid \"Kepulauan Bangka Belitung\"\nmsgstr \"Kepulauan Bangka Belitung\"\n\n#: id/id_choices.py:69\nmsgid \"Corps Consulate\"\nmsgstr \"Corps Consulate\"\n\n#: id/id_choices.py:70\nmsgid \"Corps Diplomatic\"\nmsgstr \"Corps Diplomatic\"\n\n#: id/id_choices.py:71\nmsgid \"Bandung\"\nmsgstr \"Bandung\"\n\n#: id/id_choices.py:73\nmsgid \"Sulawesi Utara Daratan\"\nmsgstr \"Sulawesi Utara Daratan\"\n\n#: id/id_choices.py:78\nmsgid \"NTT - Timor\"\nmsgstr \"NTT - Timor\"\n\n#: id/id_choices.py:80\nmsgid \"Sulawesi Utara Kepulauan\"\nmsgstr \"Sulawesi Utara Kepulauan\"\n\n#: id/id_choices.py:83\nmsgid \"NTB - Lombok\"\nmsgstr \"NTB - Lombok\"\n\n#: id/id_choices.py:84\nmsgid \"Papua dan Papua Barat\"\nmsgstr \"Papua dan Papua Barat\"\n\n#: id/id_choices.py:86\nmsgid \"Cirebon\"\nmsgstr \"Cirebon\"\n\n#: id/id_choices.py:87\nmsgid \"NTB - Sumbawa\"\nmsgstr \"NTB - Sumbawa\"\n\n#: id/id_choices.py:88\nmsgid \"NTT - Flores\"\nmsgstr \"NTT - Flores\"\n\n#: id/id_choices.py:89\nmsgid \"NTT - Sumba\"\nmsgstr \"NTT - Sumba\"\n\n#: id/id_choices.py:90\nmsgid \"Bogor\"\nmsgstr \"Bogor\"\n\n#: id/id_choices.py:91\nmsgid \"Pekalongan\"\nmsgstr \"Pekalongan\"\n\n#: id/id_choices.py:92\nmsgid \"Semarang\"\nmsgstr \"Semarang\"\n\n#: id/id_choices.py:93\nmsgid \"Pati\"\nmsgstr \"Pati\"\n\n#: id/id_choices.py:97\nmsgid \"Surabaya\"\nmsgstr \"Surabaya\"\n\n#: id/id_choices.py:98\nmsgid \"Madura\"\nmsgstr \"Madura\"\n\n#: id/id_choices.py:99\nmsgid \"Malang\"\nmsgstr \"Malang\"\n\n#: id/id_choices.py:100\nmsgid \"Jember\"\nmsgstr \"Jember\"\n\n#: id/id_choices.py:101\nmsgid \"Banyumas\"\nmsgstr \"Banyumas\"\n\n#: id/id_choices.py:102\nmsgid \"Federal Government\"\nmsgstr \"Federal Government\"\n\n#: id/id_choices.py:103\nmsgid \"Bojonegoro\"\nmsgstr \"Bojonegoro\"\n\n#: id/id_choices.py:104\nmsgid \"Purwakarta\"\nmsgstr \"Purwakarta\"\n\n#: id/id_choices.py:105\nmsgid \"Sidoarjo\"\nmsgstr \"Sidoarjo\"\n\n#: id/id_choices.py:106\nmsgid \"Garut\"\nmsgstr \"Garut\"\n\n#: ie/ie_counties.py:8\nmsgid \"Antrim\"\nmsgstr \"Antrim\"\n\n#: ie/ie_counties.py:9\nmsgid \"Armagh\"\nmsgstr \"Armagh\"\n\n#: ie/ie_counties.py:10\nmsgid \"Carlow\"\nmsgstr \"Carlow\"\n\n#: ie/ie_counties.py:11\nmsgid \"Cavan\"\nmsgstr \"Cavan\"\n\n#: ie/ie_counties.py:12\nmsgid \"Clare\"\nmsgstr \"Clare\"\n\n#: ie/ie_counties.py:13\nmsgid \"Cork\"\nmsgstr \"Cork\"\n\n#: ie/ie_counties.py:14\nmsgid \"Derry\"\nmsgstr \"Derry\"\n\n#: ie/ie_counties.py:15\nmsgid \"Donegal\"\nmsgstr \"Donegal\"\n\n#: ie/ie_counties.py:16\nmsgid \"Down\"\nmsgstr \"Down\"\n\n#: ie/ie_counties.py:17\nmsgid \"Dublin\"\nmsgstr \"Dublin\"\n\n#: ie/ie_counties.py:18\nmsgid \"Fermanagh\"\nmsgstr \"Fermanagh\"\n\n#: ie/ie_counties.py:19\nmsgid \"Galway\"\nmsgstr \"Galway\"\n\n#: ie/ie_counties.py:20\nmsgid \"Kerry\"\nmsgstr \"Kerry\"\n\n#: ie/ie_counties.py:21\nmsgid \"Kildare\"\nmsgstr \"Kildare\"\n\n#: ie/ie_counties.py:22\nmsgid \"Kilkenny\"\nmsgstr \"Kilkenny\"\n\n#: ie/ie_counties.py:23\nmsgid \"Laois\"\nmsgstr \"Laois\"\n\n#: ie/ie_counties.py:24\nmsgid \"Leitrim\"\nmsgstr \"Leitrim\"\n\n#: ie/ie_counties.py:25\nmsgid \"Limerick\"\nmsgstr \"Limerick\"\n\n#: ie/ie_counties.py:26\nmsgid \"Longford\"\nmsgstr \"Longford\"\n\n#: ie/ie_counties.py:27\nmsgid \"Louth\"\nmsgstr \"Louth\"\n\n#: ie/ie_counties.py:28\nmsgid \"Mayo\"\nmsgstr \"Mayo\"\n\n#: ie/ie_counties.py:29\nmsgid \"Meath\"\nmsgstr \"Meath\"\n\n#: ie/ie_counties.py:30\nmsgid \"Monaghan\"\nmsgstr \"Monaghan\"\n\n#: ie/ie_counties.py:31\nmsgid \"Offaly\"\nmsgstr \"Offaly\"\n\n#: ie/ie_counties.py:32\nmsgid \"Roscommon\"\nmsgstr \"Roscommon\"\n\n#: ie/ie_counties.py:33\nmsgid \"Sligo\"\nmsgstr \"Sligo\"\n\n#: ie/ie_counties.py:34\nmsgid \"Tipperary\"\nmsgstr \"Tipperary\"\n\n#: ie/ie_counties.py:35\nmsgid \"Tyrone\"\nmsgstr \"Tyrone\"\n\n#: ie/ie_counties.py:36\nmsgid \"Waterford\"\nmsgstr \"Waterford\"\n\n#: ie/ie_counties.py:37\nmsgid \"Westmeath\"\nmsgstr \"Westmeath\"\n\n#: ie/ie_counties.py:38\nmsgid \"Wexford\"\nmsgstr \"Wexford\"\n\n#: ie/ie_counties.py:39\nmsgid \"Wicklow\"\nmsgstr \"Wicklow\"\n\n#: il/forms.py:32\nmsgid \"Enter a postal code in the format XXXXX\"\nmsgstr \"Adjon meg egy irányítószámot XXXXX formátumban.\"\n\n#: il/forms.py:51\nmsgid \"Enter a valid ID number.\"\nmsgstr \"Adjon meg egy érvényes ID számot.\"\n\n#: in_/forms.py:41\nmsgid \"Enter a zip code in the format XXXXXX or XXX XXX.\"\nmsgstr \"Adjon meg egy 'XXXXXX' vagy 'XXX XXX' formátumú irányítószámot.\"\n\n#: in_/forms.py:64\nmsgid \"Enter an Indian state or territory.\"\nmsgstr \"Adj meg egy indiai államot vagy területet\"\n\n#: in_/forms.py:103\nmsgid \"Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.\"\nmsgstr \"A telefonszámokat 02X-8X, 03X-7X vagy 04X-6X formában kell megadni.\"\n\n#: is_/forms.py:22\nmsgid \"\"\n\"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.\"\nmsgstr \"\"\n\"Adjon meg egy érvényes izlandi személyazonosító számot \\\"XXXXXX-XXXX\\\" \"\n\"alakban.\"\n\n#: is_/forms.py:23\nmsgid \"The Icelandic identification number is not valid.\"\nmsgstr \"Az izlandi személyazonosító szám érvénytelen.\"\n\n#: it/forms.py:21\nmsgid \"Enter a valid zip code.\"\nmsgstr \"Adjon meg egy érvényes irányítószámot.\"\n\n#: it/forms.py:48\nmsgid \"Enter a valid Social Security number.\"\nmsgstr \"Adjon meg egy érvényes társadalombiztosítási számot.\"\n\n#: it/forms.py:73\nmsgid \"Enter a valid VAT number.\"\nmsgstr \"Adjon meg egy érvényes ÁFA számot.\"\n\n#: jp/forms.py:19\nmsgid \"Enter a postal code in the format XXXXXXX or XXX-XXXX.\"\nmsgstr \"Adjon meg egy irányítószámot \\\"XXXXXXX\\\" vagy \\\"XXX-XXXX\\\" alakban.\"\n\n#: jp/jp_prefectures.py:4\nmsgid \"Hokkaido\"\nmsgstr \"Hokkaido\"\n\n#: jp/jp_prefectures.py:5\nmsgid \"Aomori\"\nmsgstr \"Aomori\"\n\n#: jp/jp_prefectures.py:6\nmsgid \"Iwate\"\nmsgstr \"Iwate\"\n\n#: jp/jp_prefectures.py:7\nmsgid \"Miyagi\"\nmsgstr \"Miyagi\"\n\n#: jp/jp_prefectures.py:8\nmsgid \"Akita\"\nmsgstr \"Akita\"\n\n#: jp/jp_prefectures.py:9\nmsgid \"Yamagata\"\nmsgstr \"Yamagata\"\n\n#: jp/jp_prefectures.py:10\nmsgid \"Fukushima\"\nmsgstr \"Fukushima\"\n\n#: jp/jp_prefectures.py:11\nmsgid \"Ibaraki\"\nmsgstr \"Ibaraki\"\n\n#: jp/jp_prefectures.py:12\nmsgid \"Tochigi\"\nmsgstr \"Tochigi\"\n\n#: jp/jp_prefectures.py:13\nmsgid \"Gunma\"\nmsgstr \"Gunma\"\n\n#: jp/jp_prefectures.py:14\nmsgid \"Saitama\"\nmsgstr \"Saitama\"\n\n#: jp/jp_prefectures.py:15\nmsgid \"Chiba\"\nmsgstr \"Chiba\"\n\n#: jp/jp_prefectures.py:16\nmsgid \"Tokyo\"\nmsgstr \"Tókió\"\n\n#: jp/jp_prefectures.py:17\nmsgid \"Kanagawa\"\nmsgstr \"Kanagawa\"\n\n#: jp/jp_prefectures.py:18\nmsgid \"Yamanashi\"\nmsgstr \"Yamanashi\"\n\n#: jp/jp_prefectures.py:19\nmsgid \"Nagano\"\nmsgstr \"Nagano\"\n\n#: jp/jp_prefectures.py:20\nmsgid \"Niigata\"\nmsgstr \"Niigata\"\n\n#: jp/jp_prefectures.py:21\nmsgid \"Toyama\"\nmsgstr \"Toyama\"\n\n#: jp/jp_prefectures.py:22\nmsgid \"Ishikawa\"\nmsgstr \"Ishikawa\"\n\n#: jp/jp_prefectures.py:23\nmsgid \"Fukui\"\nmsgstr \"Fukui\"\n\n#: jp/jp_prefectures.py:24\nmsgid \"Gifu\"\nmsgstr \"Gifu\"\n\n#: jp/jp_prefectures.py:25\nmsgid \"Shizuoka\"\nmsgstr \"Shizuoka\"\n\n#: jp/jp_prefectures.py:26\nmsgid \"Aichi\"\nmsgstr \"Aichi\"\n\n#: jp/jp_prefectures.py:27\nmsgid \"Mie\"\nmsgstr \"Mie\"\n\n#: jp/jp_prefectures.py:28\nmsgid \"Shiga\"\nmsgstr \"Shiga\"\n\n#: jp/jp_prefectures.py:29\nmsgid \"Kyoto\"\nmsgstr \"Kiotó\"\n\n#: jp/jp_prefectures.py:30\nmsgid \"Osaka\"\nmsgstr \"Oszaka\"\n\n#: jp/jp_prefectures.py:31\nmsgid \"Hyogo\"\nmsgstr \"Hyogo\"\n\n#: jp/jp_prefectures.py:32\nmsgid \"Nara\"\nmsgstr \"Nara\"\n\n#: jp/jp_prefectures.py:33\nmsgid \"Wakayama\"\nmsgstr \"Wakayama\"\n\n#: jp/jp_prefectures.py:34\nmsgid \"Tottori\"\nmsgstr \"Tottori\"\n\n#: jp/jp_prefectures.py:35\nmsgid \"Shimane\"\nmsgstr \"Shimane\"\n\n#: jp/jp_prefectures.py:36\nmsgid \"Okayama\"\nmsgstr \"Okayama\"\n\n#: jp/jp_prefectures.py:37\nmsgid \"Hiroshima\"\nmsgstr \"Hiroshima\"\n\n#: jp/jp_prefectures.py:38\nmsgid \"Yamaguchi\"\nmsgstr \"Yamaguchi\"\n\n#: jp/jp_prefectures.py:39\nmsgid \"Tokushima\"\nmsgstr \"Tokushima\"\n\n#: jp/jp_prefectures.py:40\nmsgid \"Kagawa\"\nmsgstr \"Kagawa\"\n\n#: jp/jp_prefectures.py:41\nmsgid \"Ehime\"\nmsgstr \"Ehime\"\n\n#: jp/jp_prefectures.py:42\nmsgid \"Kochi\"\nmsgstr \"Kochi\"\n\n#: jp/jp_prefectures.py:43\nmsgid \"Fukuoka\"\nmsgstr \"Fukuoka\"\n\n#: jp/jp_prefectures.py:44\nmsgid \"Saga\"\nmsgstr \"Saga\"\n\n#: jp/jp_prefectures.py:45\nmsgid \"Nagasaki\"\nmsgstr \"Nagaszaki\"\n\n#: jp/jp_prefectures.py:46\nmsgid \"Kumamoto\"\nmsgstr \"Kumamoto\"\n\n#: jp/jp_prefectures.py:47\nmsgid \"Oita\"\nmsgstr \"Oita\"\n\n#: jp/jp_prefectures.py:48\nmsgid \"Miyazaki\"\nmsgstr \"Miyazaki\"\n\n#: jp/jp_prefectures.py:49\nmsgid \"Kagoshima\"\nmsgstr \"Kagoshima\"\n\n#: jp/jp_prefectures.py:50\nmsgid \"Okinawa\"\nmsgstr \"Okinawa\"\n\n#: kw/forms.py:27\nmsgid \"Enter a valid Kuwaiti Civil ID number\"\nmsgstr \"Adjon meg egy érvények kuvaiti Civil ID számot\"\n\n#: mk/forms.py:18\nmsgid \"\"\n\"Identity card numbers must contain either 4 to 7 digits or an uppercase \"\n\"letter and 7 digits.\"\nmsgstr \"\"\n\"Az azonosító kártya számok 4 vagy 7 számjegyet, vagy egy nagy betűt majd 7 \"\n\"számjegyet kell, hogy tartalmazzanak\"\n\n#: mk/forms.py:57 si/forms.py:24\nmsgid \"This field should contain exactly 13 digits.\"\nmsgstr \"Ennek a mezőnek pontosan 13 számot kell tartalmaznia.\"\n\n#: mk/forms.py:58\nmsgid \"The first 7 digits of the UMCN must represent a valid past date.\"\nmsgstr \"Az első 7 számjegy egy múltbéli időpont kell legyen.\"\n\n#: mk/forms.py:59\nmsgid \"The UMCN is not valid.\"\nmsgstr \"Érvénytelen UMCN.\"\n\n#: mk/mk_choices.py:10\nmsgid \"Aerodrom\"\nmsgstr \"Aerodrom\"\n\n#: mk/mk_choices.py:11\nmsgid \"Aračinovo\"\nmsgstr \"Aračinovo\"\n\n#: mk/mk_choices.py:12\nmsgid \"Berovo\"\nmsgstr \"Berovo\"\n\n#: mk/mk_choices.py:13\nmsgid \"Bitola\"\nmsgstr \"Bitola\"\n\n#: mk/mk_choices.py:14\nmsgid \"Bogdanci\"\nmsgstr \"Bogdanci\"\n\n#: mk/mk_choices.py:15\nmsgid \"Bogovinje\"\nmsgstr \"Bogovinje\"\n\n#: mk/mk_choices.py:16\nmsgid \"Bosilovo\"\nmsgstr \"Bosilovo\"\n\n#: mk/mk_choices.py:17\nmsgid \"Brvenica\"\nmsgstr \"Brvenica\"\n\n#: mk/mk_choices.py:18\nmsgid \"Butel\"\nmsgstr \"Butel\"\n\n#: mk/mk_choices.py:19\nmsgid \"Valandovo\"\nmsgstr \"Valandovo\"\n\n#: mk/mk_choices.py:20\nmsgid \"Vasilevo\"\nmsgstr \"Vasilevo\"\n\n#: mk/mk_choices.py:21\nmsgid \"Vevčani\"\nmsgstr \"Vevčani\"\n\n#: mk/mk_choices.py:22\nmsgid \"Veles\"\nmsgstr \"Veles\"\n\n#: mk/mk_choices.py:23\nmsgid \"Vinica\"\nmsgstr \"Vinica\"\n\n#: mk/mk_choices.py:24\nmsgid \"Vraneštica\"\nmsgstr \"Vraneštica\"\n\n#: mk/mk_choices.py:25\nmsgid \"Vrapčište\"\nmsgstr \"Vrapčište\"\n\n#: mk/mk_choices.py:26\nmsgid \"Gazi Baba\"\nmsgstr \"Gazi Baba\"\n\n#: mk/mk_choices.py:27\nmsgid \"Gevgelija\"\nmsgstr \"Gevgelija\"\n\n#: mk/mk_choices.py:28\nmsgid \"Gostivar\"\nmsgstr \"Gostivar\"\n\n#: mk/mk_choices.py:29\nmsgid \"Gradsko\"\nmsgstr \"Gradsko\"\n\n#: mk/mk_choices.py:30\nmsgid \"Debar\"\nmsgstr \"Debar\"\n\n#: mk/mk_choices.py:31\nmsgid \"Debarca\"\nmsgstr \"Debarca\"\n\n#: mk/mk_choices.py:32\nmsgid \"Delčevo\"\nmsgstr \"Delčevo\"\n\n#: mk/mk_choices.py:33\nmsgid \"Demir Kapija\"\nmsgstr \"Demir Kapija\"\n\n#: mk/mk_choices.py:34\nmsgid \"Demir Hisar\"\nmsgstr \"Demir Hisar\"\n\n#: mk/mk_choices.py:35\nmsgid \"Dolneni\"\nmsgstr \"Dolneni\"\n\n#: mk/mk_choices.py:36\nmsgid \"Drugovo\"\nmsgstr \"Drugovo\"\n\n#: mk/mk_choices.py:37\nmsgid \"Gjorče Petrov\"\nmsgstr \"Gjorče Petrov\"\n\n#: mk/mk_choices.py:38\nmsgid \"Želino\"\nmsgstr \"Želino\"\n\n#: mk/mk_choices.py:39\nmsgid \"Zajas\"\nmsgstr \"Zajas\"\n\n#: mk/mk_choices.py:40\nmsgid \"Zelenikovo\"\nmsgstr \"Zelenikovo\"\n\n#: mk/mk_choices.py:41\nmsgid \"Zrnovci\"\nmsgstr \"Zrnovci\"\n\n#: mk/mk_choices.py:42\nmsgid \"Ilinden\"\nmsgstr \"Ilinden\"\n\n#: mk/mk_choices.py:43\nmsgid \"Jegunovce\"\nmsgstr \"Jegunovce\"\n\n#: mk/mk_choices.py:44\nmsgid \"Kavadarci\"\nmsgstr \"Kavadarci\"\n\n#: mk/mk_choices.py:45\nmsgid \"Karbinci\"\nmsgstr \"Karbinci\"\n\n#: mk/mk_choices.py:46\nmsgid \"Karpoš\"\nmsgstr \"Karpoš\"\n\n#: mk/mk_choices.py:47\nmsgid \"Kisela Voda\"\nmsgstr \"Kisela Voda\"\n\n#: mk/mk_choices.py:48\nmsgid \"Kičevo\"\nmsgstr \"Kičevo\"\n\n#: mk/mk_choices.py:49\nmsgid \"Konče\"\nmsgstr \"Konče\"\n\n#: mk/mk_choices.py:50\nmsgid \"Koćani\"\nmsgstr \"Koćani\"\n\n#: mk/mk_choices.py:51\nmsgid \"Kratovo\"\nmsgstr \"Kratovo\"\n\n#: mk/mk_choices.py:52\nmsgid \"Kriva Palanka\"\nmsgstr \"Kriva Palanka\"\n\n#: mk/mk_choices.py:53\nmsgid \"Krivogaštani\"\nmsgstr \"Krivogaštani\"\n\n#: mk/mk_choices.py:54\nmsgid \"Kruševo\"\nmsgstr \"Kruševo\"\n\n#: mk/mk_choices.py:55\nmsgid \"Kumanovo\"\nmsgstr \"Kumanovo\"\n\n#: mk/mk_choices.py:56\nmsgid \"Lipkovo\"\nmsgstr \"Lipkovo\"\n\n#: mk/mk_choices.py:57\nmsgid \"Lozovo\"\nmsgstr \"Lozovo\"\n\n#: mk/mk_choices.py:58\nmsgid \"Mavrovo i Rostuša\"\nmsgstr \"Mavrovo i Rostuša\"\n\n#: mk/mk_choices.py:59\nmsgid \"Makedonska Kamenica\"\nmsgstr \"Makedonska Kamenica\"\n\n#: mk/mk_choices.py:60\nmsgid \"Makedonski Brod\"\nmsgstr \"Makedonski Brod\"\n\n#: mk/mk_choices.py:61\nmsgid \"Mogila\"\nmsgstr \"Mogila\"\n\n#: mk/mk_choices.py:62\nmsgid \"Negotino\"\nmsgstr \"Negotino\"\n\n#: mk/mk_choices.py:63\nmsgid \"Novaci\"\nmsgstr \"Novaci\"\n\n#: mk/mk_choices.py:64\nmsgid \"Novo Selo\"\nmsgstr \"Novo Selo\"\n\n#: mk/mk_choices.py:65\nmsgid \"Oslomej\"\nmsgstr \"Oslomej\"\n\n#: mk/mk_choices.py:66\nmsgid \"Ohrid\"\nmsgstr \"Ohrid\"\n\n#: mk/mk_choices.py:67\nmsgid \"Petrovec\"\nmsgstr \"Petrovec\"\n\n#: mk/mk_choices.py:68\nmsgid \"Pehčevo\"\nmsgstr \"Pehčevo\"\n\n#: mk/mk_choices.py:69\nmsgid \"Plasnica\"\nmsgstr \"Plasnica\"\n\n#: mk/mk_choices.py:70\nmsgid \"Prilep\"\nmsgstr \"Prilep\"\n\n#: mk/mk_choices.py:71\nmsgid \"Probištip\"\nmsgstr \"Probištip\"\n\n#: mk/mk_choices.py:72\nmsgid \"Radoviš\"\nmsgstr \"Radoviš\"\n\n#: mk/mk_choices.py:73\nmsgid \"Rankovce\"\nmsgstr \"Rankovce\"\n\n#: mk/mk_choices.py:74\nmsgid \"Resen\"\nmsgstr \"Resen\"\n\n#: mk/mk_choices.py:75\nmsgid \"Rosoman\"\nmsgstr \"Rosoman\"\n\n#: mk/mk_choices.py:76\nmsgid \"Saraj\"\nmsgstr \"Saraj\"\n\n#: mk/mk_choices.py:77\nmsgid \"Sveti Nikole\"\nmsgstr \"Sveti Nikole\"\n\n#: mk/mk_choices.py:78\nmsgid \"Sopište\"\nmsgstr \"Sopište\"\n\n#: mk/mk_choices.py:79\nmsgid \"Star Dojran\"\nmsgstr \"Star Dojran\"\n\n#: mk/mk_choices.py:80\nmsgid \"Staro Nagoričane\"\nmsgstr \"Staro Nagoričane\"\n\n#: mk/mk_choices.py:81\nmsgid \"Struga\"\nmsgstr \"Struga\"\n\n#: mk/mk_choices.py:82\nmsgid \"Strumica\"\nmsgstr \"Strumica\"\n\n#: mk/mk_choices.py:83\nmsgid \"Studeničani\"\nmsgstr \"Studeničani\"\n\n#: mk/mk_choices.py:84\nmsgid \"Tearce\"\nmsgstr \"Tearce\"\n\n#: mk/mk_choices.py:85\nmsgid \"Tetovo\"\nmsgstr \"Tetovo\"\n\n#: mk/mk_choices.py:86\nmsgid \"Centar\"\nmsgstr \"Centar\"\n\n#: mk/mk_choices.py:87\nmsgid \"Centar-Župa\"\nmsgstr \"Centar-Župa\"\n\n#: mk/mk_choices.py:88\nmsgid \"Čair\"\nmsgstr \"Čair\"\n\n#: mk/mk_choices.py:89\nmsgid \"Čaška\"\nmsgstr \"Čaška\"\n\n#: mk/mk_choices.py:90\nmsgid \"Češinovo-Obleševo\"\nmsgstr \"Češinovo-Obleševo\"\n\n#: mk/mk_choices.py:91\nmsgid \"Čučer-Sandevo\"\nmsgstr \"Čučer-Sandevo\"\n\n#: mk/mk_choices.py:92\nmsgid \"Štip\"\nmsgstr \"Štip\"\n\n#: mk/mk_choices.py:93\nmsgid \"Šuto Orizari\"\nmsgstr \"Šuto Orizari\"\n\n#: mk/models.py:11\nmsgid \"Macedonian identity card number\"\nmsgstr \"Macedón azonosító kártya szám\"\n\n#: mk/models.py:25\nmsgid \"A Macedonian municipality (2 character code)\"\nmsgstr \"Macedón község (2 karakter)\"\n\n#: mk/models.py:35\nmsgid \"Unique master citizen number (13 digits)\"\nmsgstr \"Egyedi személyi szám (MBG, 13 jegy)\"\n\n#: mx/forms.py:67\nmsgid \"Enter a valid zip code in the format XXXXX.\"\nmsgstr \"Adjon meg egy érvényes irányítószámot XXXXX formában.\"\n\n#: mx/forms.py:110\nmsgid \"Enter a valid RFC.\"\nmsgstr \"Adjon meg egy érvényes RFC-t.\"\n\n#: mx/forms.py:111\nmsgid \"Invalid checksum for RFC.\"\nmsgstr \"Érvénytelen RFC ellenőrzőösszeg.\"\n\n#: mx/forms.py:191\nmsgid \"Enter a valid CURP.\"\nmsgstr \"Adjon meg egy érvényes CURP-ot.\"\n\n#: mx/forms.py:192\nmsgid \"Invalid checksum for CURP.\"\nmsgstr \"Érvénytelen CURP ellenőrzőösszeg.\"\n\n#: mx/models.py:14\nmsgid \"Mexico state (three uppercase letters)\"\nmsgstr \"Mexikói állam (három nagybetűs rövidítés)\"\n\n#: mx/models.py:27\nmsgid \"Mexico zip code\"\nmsgstr \"Mexikói irányító szám\"\n\n#: mx/models.py:44\nmsgid \"Mexican RFC\"\nmsgstr \"Mexikói RFC\"\n\n#: mx/models.py:61\nmsgid \"Mexican CURP\"\nmsgstr \"Mexikói CURP\"\n\n#: mx/mx_states.py:14\nmsgid \"Aguascalientes\"\nmsgstr \"Aguascalientes\"\n\n#: mx/mx_states.py:15\nmsgid \"Baja California\"\nmsgstr \"Baja California\"\n\n#: mx/mx_states.py:16\nmsgid \"Baja California Sur\"\nmsgstr \"Baja California Sur\"\n\n#: mx/mx_states.py:17\nmsgid \"Campeche\"\nmsgstr \"Campeche\"\n\n#: mx/mx_states.py:18\nmsgid \"Chihuahua\"\nmsgstr \"Chihuahua\"\n\n#: mx/mx_states.py:19\nmsgid \"Chiapas\"\nmsgstr \"Chiapas\"\n\n#: mx/mx_states.py:20\nmsgid \"Coahuila\"\nmsgstr \"Coahuila\"\n\n#: mx/mx_states.py:21\nmsgid \"Colima\"\nmsgstr \"Colima\"\n\n#: mx/mx_states.py:22\nmsgid \"Distrito Federal\"\nmsgstr \"Distritio Federal\"\n\n#: mx/mx_states.py:23\nmsgid \"Durango\"\nmsgstr \"Durango\"\n\n#: mx/mx_states.py:24\nmsgid \"Guerrero\"\nmsgstr \"Guerrero\"\n\n#: mx/mx_states.py:25\nmsgid \"Guanajuato\"\nmsgstr \"Guanajuato\"\n\n#: mx/mx_states.py:26\nmsgid \"Hidalgo\"\nmsgstr \"Hidalgo\"\n\n#: mx/mx_states.py:27\nmsgid \"Jalisco\"\nmsgstr \"Jalisco\"\n\n#: mx/mx_states.py:28\nmsgid \"Estado de México\"\nmsgstr \"Mexikóváros\"\n\n#: mx/mx_states.py:29\nmsgid \"Michoacán\"\nmsgstr \"Michoacán\"\n\n#: mx/mx_states.py:30\nmsgid \"Morelos\"\nmsgstr \"Morelos\"\n\n#: mx/mx_states.py:31\nmsgid \"Nayarit\"\nmsgstr \"Nayarit\"\n\n#: mx/mx_states.py:32\nmsgid \"Nuevo León\"\nmsgstr \"Nuevo León\"\n\n#: mx/mx_states.py:33\nmsgid \"Oaxaca\"\nmsgstr \"Oaxaca\"\n\n#: mx/mx_states.py:34\nmsgid \"Puebla\"\nmsgstr \"Puebla\"\n\n#: mx/mx_states.py:35\nmsgid \"Querétaro\"\nmsgstr \"Querétaro\"\n\n#: mx/mx_states.py:36\nmsgid \"Quintana Roo\"\nmsgstr \"Quintana Roo\"\n\n#: mx/mx_states.py:37\nmsgid \"Sinaloa\"\nmsgstr \"Sinaloa\"\n\n#: mx/mx_states.py:38\nmsgid \"San Luis Potosí\"\nmsgstr \"San Luis Potosí\"\n\n#: mx/mx_states.py:39\nmsgid \"Sonora\"\nmsgstr \"SOnora\"\n\n#: mx/mx_states.py:40\nmsgid \"Tabasco\"\nmsgstr \"Tabasco\"\n\n#: mx/mx_states.py:41\nmsgid \"Tamaulipas\"\nmsgstr \"Tamaulipas\"\n\n#: mx/mx_states.py:42\nmsgid \"Tlaxcala\"\nmsgstr \"Tlaxcala\"\n\n#: mx/mx_states.py:43\nmsgid \"Veracruz\"\nmsgstr \"Veracruz\"\n\n#: mx/mx_states.py:44\nmsgid \"Yucatán\"\nmsgstr \"Yucatán\"\n\n#: mx/mx_states.py:45\nmsgid \"Zacatecas\"\nmsgstr \"Zacatecas\"\n\n#: nl/forms.py:26\nmsgid \"Enter a valid postal code\"\nmsgstr \"Adjon meg egy érvényes irányítószámot. \"\n\n#: nl/forms.py:82\nmsgid \"Enter a valid SoFi number\"\nmsgstr \"Adjon meg egy érvényes SoFi számot.\"\n\n#: nl/nl_provinces.py:4\nmsgid \"Drenthe\"\nmsgstr \"Drenthe\"\n\n#: nl/nl_provinces.py:5\nmsgid \"Flevoland\"\nmsgstr \"Flevoland\"\n\n#: nl/nl_provinces.py:6\nmsgid \"Friesland\"\nmsgstr \"Friesland\"\n\n#: nl/nl_provinces.py:7\nmsgid \"Gelderland\"\nmsgstr \"Gelderland\"\n\n#: nl/nl_provinces.py:8\nmsgid \"Groningen\"\nmsgstr \"Groningen\"\n\n#: nl/nl_provinces.py:10\nmsgid \"Noord-Brabant\"\nmsgstr \"Noord-Brabant\"\n\n#: nl/nl_provinces.py:11\nmsgid \"Noord-Holland\"\nmsgstr \"Noord-Holland\"\n\n#: nl/nl_provinces.py:12\nmsgid \"Overijssel\"\nmsgstr \"Overijssel\"\n\n#: nl/nl_provinces.py:13\nmsgid \"Utrecht\"\nmsgstr \"Utrecht\"\n\n#: nl/nl_provinces.py:14\nmsgid \"Zeeland\"\nmsgstr \"Zeeland\"\n\n#: nl/nl_provinces.py:15\nmsgid \"Zuid-Holland\"\nmsgstr \"Zuid-Holland\"\n\n#: no/forms.py:39\nmsgid \"Enter a valid Norwegian social security number.\"\nmsgstr \"Adjon meg egy érvényes norvég társadalombiztosítási számot.\"\n\n#: pe/forms.py:28\nmsgid \"This field requires 8 digits.\"\nmsgstr \"Ennek a mezőnek 8 számjegyet kell tartalmaznia.\"\n\n#: pe/forms.py:56\nmsgid \"This field requires 11 digits.\"\nmsgstr \"Ennek a mezőnek 11 számjegyet kell tartalmaznia.\"\n\n#: pl/forms.py:42\nmsgid \"National Identification Number consists of 11 digits.\"\nmsgstr \"A nemzeti azonosítószám 11 számjegyből áll.\"\n\n#: pl/forms.py:43\nmsgid \"Wrong checksum for the National Identification Number.\"\nmsgstr \"Hibás a nemzeti azonosítószám ellenőrző kódja.\"\n\n#: pl/forms.py:79\nmsgid \"National ID Card Number consists of 3 letters and 6 digits.\"\nmsgstr \"\"\n\"A Nemzeti Személyi Azonosító Szám 3 karaktert és 6 számjegyet tartalmaz.\"\n\n#: pl/forms.py:80\nmsgid \"Wrong checksum for the National ID Card Number.\"\nmsgstr \"Érvénytelen a Nemzeti Személyi Azonosító Szám ellenőrzőösszege.\"\n\n#: pl/forms.py:131\nmsgid \"\"\n\"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or \"\n\"XXXXXXXXXX.\"\nmsgstr \"\"\n\"Adjon meg egy adószámot (NIP) az következő formátumok egyikében:  XXX-XXX-XX-\"\n\"XX, XXX-XX-XX-XXX vagy XXXXXXXXXX.\"\n\n#: pl/forms.py:132\nmsgid \"Wrong checksum for the Tax Number (NIP).\"\nmsgstr \"Hibás az adószám (NIP) ellenőrzőösszege.\"\n\n#: pl/forms.py:171\nmsgid \"National Business Register Number (REGON) consists of 9 or 14 digits.\"\nmsgstr \"A nemzeti vállakozásregisztrációs szám (REGON) 9 vagy 14 számból áll.\"\n\n#: pl/forms.py:172\nmsgid \"Wrong checksum for the National Business Register Number (REGON).\"\nmsgstr \"Hibás a nemzeti üzleti azonosítószám (REGON) ellenőrzőösszege.\"\n\n#: pl/forms.py:212\nmsgid \"Enter a postal code in the format XX-XXX.\"\nmsgstr \"Adjon meg egy irányítószámot 'XX-XXX' alakban.\"\n\n#: pl/pl_voivodeships.py:8\nmsgid \"Lower Silesia\"\nmsgstr \"Alsó-Szilézia\"\n\n#: pl/pl_voivodeships.py:9\nmsgid \"Kuyavia-Pomerania\"\nmsgstr \"Kuyavia-Pomerania\"\n\n#: pl/pl_voivodeships.py:10\nmsgid \"Lublin\"\nmsgstr \"Lublin\"\n\n#: pl/pl_voivodeships.py:11\nmsgid \"Lubusz\"\nmsgstr \"Lubusz\"\n\n#: pl/pl_voivodeships.py:12\nmsgid \"Lodz\"\nmsgstr \"Lodz\"\n\n#: pl/pl_voivodeships.py:13\nmsgid \"Lesser Poland\"\nmsgstr \"Kis-Lengyelország\"\n\n#: pl/pl_voivodeships.py:14\nmsgid \"Masovia\"\nmsgstr \"Mazóvia\"\n\n#: pl/pl_voivodeships.py:15\nmsgid \"Opole\"\nmsgstr \"Opole\"\n\n#: pl/pl_voivodeships.py:16\nmsgid \"Subcarpatia\"\nmsgstr \"Szubkárpátok\"\n\n#: pl/pl_voivodeships.py:17\nmsgid \"Podlasie\"\nmsgstr \"Podlasie\"\n\n#: pl/pl_voivodeships.py:18\nmsgid \"Pomerania\"\nmsgstr \"Pomeránia\"\n\n#: pl/pl_voivodeships.py:19\nmsgid \"Silesia\"\nmsgstr \"Szilézia\"\n\n#: pl/pl_voivodeships.py:20\nmsgid \"Swietokrzyskie\"\nmsgstr \"Swietokrzyskie\"\n\n#: pl/pl_voivodeships.py:21\nmsgid \"Warmia-Masuria\"\nmsgstr \"Warmia-Masuria\"\n\n#: pl/pl_voivodeships.py:22\nmsgid \"Greater Poland\"\nmsgstr \"Nagy-Lengyelország\"\n\n#: pl/pl_voivodeships.py:23\nmsgid \"West Pomerania\"\nmsgstr \"Nyugat-Pomeránia\"\n\n#: pt/forms.py:19\nmsgid \"Enter a zip code in the format XXXX-XXX.\"\nmsgstr \"Adjon meg egy irányítószámot XXXX-XXX formátumban.\"\n\n#: pt/forms.py:39\nmsgid \"Phone numbers must have 9 digits, or start by + or 00.\"\nmsgstr \"\"\n\"A telefonszámnak 9 számjegyből kell állnia, vagy +-szal, vagy 00-val kell \"\n\"kezdődnie.\"\n\n#: ro/forms.py:22\nmsgid \"Enter a valid CIF.\"\nmsgstr \"Adjon meg egy érvényes CIF-t.\"\n\n#: ro/forms.py:59\nmsgid \"Enter a valid CNP.\"\nmsgstr \"Adjon meg egy érvényes CNP-t.\"\n\n#: ro/forms.py:143\nmsgid \"Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format\"\nmsgstr \"\"\n\"Adjon meg egy érvényes nemzetközi bankszámlaszámot 'ROXX-XXXX-XXXX-XXXX-XXXX-\"\n\"XXXX-XXXX' alakban.\"\n\n#: ro/forms.py:175\nmsgid \"Phone numbers must be in XXXX-XXXXXX format.\"\nmsgstr \"A telefonszámoknak 'XXXX-XXXXXX' formátumúnak kell lenniük.\"\n\n#: ro/forms.py:200\nmsgid \"Enter a valid postal code in the format XXXXXX\"\nmsgstr \"Adjon meg egy érvényes irányítószámot 'XXXXXX' alakban.\"\n\n#: ru/forms.py:37\nmsgid \"Enter a postal code in the format XXXXXX.\"\nmsgstr \"Add meg a postai kódot XXXXXX formában\"\n\n#: ru/forms.py:50\nmsgid \"Enter a passport number in the format XXXX XXXXXX.\"\nmsgstr \"Add meg az útlevél számot XXXX XXXXXX formában\"\n\n#: ru/forms.py:63\nmsgid \"Enter a passport number in the format XX XXXXXXX.\"\nmsgstr \"Add meg az útlevél számot XX XXXXXXX formában\"\n\n#: ru/ru_regions.py:10\nmsgid \"Central Federal County\"\nmsgstr \"Központi szövetségi körzet\"\n\n#: ru/ru_regions.py:11\nmsgid \"South Federal County\"\nmsgstr \"Déli szövetségi körzet\"\n\n#: ru/ru_regions.py:12\nmsgid \"North-West Federal County\"\nmsgstr \"Északnyugati szövetségi körzet\"\n\n#: ru/ru_regions.py:13\nmsgid \"Far-East Federal County\"\nmsgstr \"Távol-keleti szövetségi körzet\"\n\n#: ru/ru_regions.py:14\nmsgid \"Siberian Federal County\"\nmsgstr \"Szibériai szövetségi körzet\"\n\n#: ru/ru_regions.py:15\nmsgid \"Ural Federal County\"\nmsgstr \"Uráli szövetségi körzet\"\n\n#: ru/ru_regions.py:16\nmsgid \"Privolzhsky Federal County\"\nmsgstr \"Volga-menti szövetségi körzet\"\n\n#: ru/ru_regions.py:17\nmsgid \"North-Caucasian Federal County\"\nmsgstr \"Észak-kaukázusi szövetségi körzet\"\n\n#: ru/ru_regions.py:21\nmsgid \"Moskva\"\nmsgstr \"Moszkva\"\n\n#: ru/ru_regions.py:22\nmsgid \"Saint-Peterburg\"\nmsgstr \"Szentpétervár\"\n\n#: ru/ru_regions.py:23\nmsgid \"Moskovskaya oblast'\"\nmsgstr \"Moszkvai terület\"\n\n#: ru/ru_regions.py:24\nmsgid \"Adygeya, Respublika\"\nmsgstr \"Adige Köztársaság\"\n\n#: ru/ru_regions.py:25\nmsgid \"Bashkortostan, Respublika\"\nmsgstr \"Baskír Köztársaság\"\n\n#: ru/ru_regions.py:26\nmsgid \"Buryatia, Respublika\"\nmsgstr \"Burját Köztársaság\"\n\n#: ru/ru_regions.py:27\nmsgid \"Altay, Respublika\"\nmsgstr \"Altaj Köztársaság\"\n\n#: ru/ru_regions.py:28\nmsgid \"Dagestan, Respublika\"\nmsgstr \"Dagesztáni Köztársaság\"\n\n#: ru/ru_regions.py:29\nmsgid \"Ingushskaya Respublika\"\nmsgstr \"Ingus Köztársaság\"\n\n#: ru/ru_regions.py:30\nmsgid \"Kabardino-Balkarskaya Respublika\"\nmsgstr \"Kabard- és Balkárföld\"\n\n#: ru/ru_regions.py:31\nmsgid \"Kalmykia, Respublika\"\nmsgstr \"Kalmük Köztársaság\"\n\n#: ru/ru_regions.py:32\nmsgid \"Karachaevo-Cherkesskaya Respublika\"\nmsgstr \"Karacsáj-Cserkeszföld\"\n\n#: ru/ru_regions.py:33\nmsgid \"Karelia, Respublika\"\nmsgstr \"Karélia Köztársaság\"\n\n#: ru/ru_regions.py:34\nmsgid \"Komi, Respublika\"\nmsgstr \" Komi Köztársaság\"\n\n#: ru/ru_regions.py:35\nmsgid \"Mariy Ehl, Respublika\"\nmsgstr \"Marij El Köztársaság\"\n\n#: ru/ru_regions.py:36\nmsgid \"Mordovia, Respublika\"\nmsgstr \"Mordvin Köztársaság\"\n\n#: ru/ru_regions.py:37\nmsgid \"Sakha, Respublika (Yakutiya)\"\nmsgstr \"Szaha Köztársaság (Jakutföld)\"\n\n#: ru/ru_regions.py:38\nmsgid \"Severnaya Osetia, Respublika (Alania)\"\nmsgstr \"Észak-Oszétia Köztársaság (Alánia)\"\n\n#: ru/ru_regions.py:39\nmsgid \"Tatarstan, Respublika\"\nmsgstr \"Tatár Köztársaság\"\n\n#: ru/ru_regions.py:40\nmsgid \"Tyva, Respublika (Tuva)\"\nmsgstr \"Tuvai Köztársaság (Tuva)\"\n\n#: ru/ru_regions.py:41\nmsgid \"Udmurtskaya Respublika\"\nmsgstr \"Udmurt Köztársaság\"\n\n#: ru/ru_regions.py:42\nmsgid \"Khakassiya, Respublika\"\nmsgstr \"Hakaszföld\"\n\n#: ru/ru_regions.py:43\nmsgid \"Chechenskaya Respublika\"\nmsgstr \"Csecsen Köztársaság\"\n\n#: ru/ru_regions.py:44\nmsgid \"Chuvashskaya Respublika\"\nmsgstr \"Csuvasföld\"\n\n#: ru/ru_regions.py:45\nmsgid \"Altayskiy Kray\"\nmsgstr \"Altaji határterület\"\n\n#: ru/ru_regions.py:46\nmsgid \"Zabaykalskiy Kray\"\nmsgstr \"Bajkálontúli határterület\"\n\n#: ru/ru_regions.py:47\nmsgid \"Kamchatskiy Kray\"\nmsgstr \"Kamcsatkai határterület\"\n\n#: ru/ru_regions.py:48\nmsgid \"Krasnodarskiy Kray\"\nmsgstr \"Krasznodari határterület\"\n\n#: ru/ru_regions.py:49\nmsgid \"Krasnoyarskiy Kray\"\nmsgstr \"Krasznojarszki határterület\"\n\n#: ru/ru_regions.py:50\nmsgid \"Permskiy Kray\"\nmsgstr \"Permi határterület\"\n\n#: ru/ru_regions.py:51\nmsgid \"Primorskiy Kray\"\nmsgstr \"Tengermelléki határterület\"\n\n#: ru/ru_regions.py:52\nmsgid \"Stavropol'siyy Kray\"\nmsgstr \"Sztavropoli határterület\"\n\n#: ru/ru_regions.py:53\nmsgid \"Khabarovskiy Kray\"\nmsgstr \"Habarovszki határterület\"\n\n#: ru/ru_regions.py:54\nmsgid \"Amurskaya oblast'\"\nmsgstr \"Amurskaya oblast'\"\n\n#: ru/ru_regions.py:55\nmsgid \"Arkhangel'skaya oblast'\"\nmsgstr \"Arkhangel'skaya oblast'\"\n\n#: ru/ru_regions.py:56\nmsgid \"Astrakhanskaya oblast'\"\nmsgstr \"Astrakhanskaya oblast'\"\n\n#: ru/ru_regions.py:57\nmsgid \"Belgorodskaya oblast'\"\nmsgstr \"Belgorodskaya oblast'\"\n\n#: ru/ru_regions.py:58\nmsgid \"Bryanskaya oblast'\"\nmsgstr \"Bryanskaya oblast'\"\n\n#: ru/ru_regions.py:59\nmsgid \"Vladimirskaya oblast'\"\nmsgstr \"Vladimirskaya oblast'\"\n\n#: ru/ru_regions.py:60\nmsgid \"Volgogradskaya oblast'\"\nmsgstr \"Volgogradskaya oblast'\"\n\n#: ru/ru_regions.py:61\nmsgid \"Vologodskaya oblast'\"\nmsgstr \"Vologodskaya oblast'\"\n\n#: ru/ru_regions.py:62\nmsgid \"Voronezhskaya oblast'\"\nmsgstr \"Voronezhskaya oblast'\"\n\n#: ru/ru_regions.py:63\nmsgid \"Ivanovskaya oblast'\"\nmsgstr \"Ivanovskaya oblast'\"\n\n#: ru/ru_regions.py:64\nmsgid \"Irkutskaya oblast'\"\nmsgstr \"Irkutskaya oblast'\"\n\n#: ru/ru_regions.py:65\nmsgid \"Kaliningradskaya oblast'\"\nmsgstr \"Kaliningradskaya oblast'\"\n\n#: ru/ru_regions.py:66\nmsgid \"Kaluzhskaya oblast'\"\nmsgstr \"Kaluzhskaya oblast'\"\n\n#: ru/ru_regions.py:67\nmsgid \"Kemerovskaya oblast'\"\nmsgstr \"Kemerovskaya oblast'\"\n\n#: ru/ru_regions.py:68\nmsgid \"Kirovskaya oblast'\"\nmsgstr \"Kirovskaya oblast'\"\n\n#: ru/ru_regions.py:69\nmsgid \"Kostromskaya oblast'\"\nmsgstr \"Kostromskaya oblast'\"\n\n#: ru/ru_regions.py:70\nmsgid \"Kurganskaya oblast'\"\nmsgstr \"Kurganskaya oblast'\"\n\n#: ru/ru_regions.py:71\nmsgid \"Kurskaya oblast'\"\nmsgstr \"Kurskaya oblast'\"\n\n#: ru/ru_regions.py:72\nmsgid \"Leningradskaya oblast'\"\nmsgstr \"Leningradskaya oblast'\"\n\n#: ru/ru_regions.py:73\nmsgid \"Lipeckaya oblast'\"\nmsgstr \"Lipeckaya oblast'\"\n\n#: ru/ru_regions.py:74\nmsgid \"Magadanskaya oblast'\"\nmsgstr \"Magadani terület\"\n\n#: ru/ru_regions.py:75\nmsgid \"Murmanskaya oblast'\"\nmsgstr \"Murmanszki terület\"\n\n#: ru/ru_regions.py:76\nmsgid \"Nizhegorodskaja oblast'\"\nmsgstr \"Nyizsnyij Novgorod-i terület\"\n\n#: ru/ru_regions.py:77\nmsgid \"Novgorodskaya oblast'\"\nmsgstr \"Novgorodi terület\"\n\n#: ru/ru_regions.py:78\nmsgid \"Novosibirskaya oblast'\"\nmsgstr \"Novoszibirszki terület\"\n\n#: ru/ru_regions.py:79\nmsgid \"Omskaya oblast'\"\nmsgstr \"Omszki terület\"\n\n#: ru/ru_regions.py:80\nmsgid \"Orenburgskaya oblast'\"\nmsgstr \"Orenburgi terület\"\n\n#: ru/ru_regions.py:81\nmsgid \"Orlovskaya oblast'\"\nmsgstr \"Orjoli terület\"\n\n#: ru/ru_regions.py:82\nmsgid \"Penzenskaya oblast'\"\nmsgstr \"Penzai terület\"\n\n#: ru/ru_regions.py:83\nmsgid \"Pskovskaya oblast'\"\nmsgstr \"Pszkovi terület\"\n\n#: ru/ru_regions.py:84\nmsgid \"Rostovskaya oblast'\"\nmsgstr \"Rosztovi terület\"\n\n#: ru/ru_regions.py:85\nmsgid \"Rjazanskaya oblast'\"\nmsgstr \"Rjazanyi terület\"\n\n#: ru/ru_regions.py:86\nmsgid \"Samarskaya oblast'\"\nmsgstr \"Szamarai terület\"\n\n#: ru/ru_regions.py:87\nmsgid \"Saratovskaya oblast'\"\nmsgstr \"Szaratovi terület\"\n\n#: ru/ru_regions.py:88\nmsgid \"Sakhalinskaya oblast'\"\nmsgstr \"Szahalini terület\"\n\n#: ru/ru_regions.py:89\nmsgid \"Sverdlovskaya oblast'\"\nmsgstr \"Szverdlovi terület\"\n\n#: ru/ru_regions.py:90\nmsgid \"Smolenskaya oblast'\"\nmsgstr \"Szmolenszki terület\"\n\n#: ru/ru_regions.py:91\nmsgid \"Tambovskaya oblast'\"\nmsgstr \"Tambovi terület\"\n\n#: ru/ru_regions.py:92\nmsgid \"Tverskaya oblast'\"\nmsgstr \"Tveri terület\"\n\n#: ru/ru_regions.py:93\nmsgid \"Tomskaya oblast'\"\nmsgstr \"Tomszki terület\"\n\n#: ru/ru_regions.py:94\nmsgid \"Tul'skaya oblast'\"\nmsgstr \"Tulai terület\"\n\n#: ru/ru_regions.py:95\nmsgid \"Tyumenskaya oblast'\"\nmsgstr \"Tyumenyi terület\"\n\n#: ru/ru_regions.py:96\nmsgid \"Ul'ianovskaya oblast'\"\nmsgstr \"Uljanovszki terület\"\n\n#: ru/ru_regions.py:97\nmsgid \"Chelyabinskaya oblast'\"\nmsgstr \"Cseljabinszki terület\"\n\n#: ru/ru_regions.py:98\nmsgid \"Yaroslavskaya oblast'\"\nmsgstr \"Jaroszlavli terület\"\n\n#: ru/ru_regions.py:99\nmsgid \"Evreyskaya avtonomnaja oblast'\"\nmsgstr \"Zsidó Autonóm Terület\"\n\n#: ru/ru_regions.py:100\nmsgid \"Neneckiy autonomnyy okrug\"\nmsgstr \"Nyenyec Autonóm KörzetNyenyec Autonóm Körzet\"\n\n#: ru/ru_regions.py:101\nmsgid \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\nmsgstr \"Hanti-Manysi Autonóm Körzet\"\n\n#: ru/ru_regions.py:102\nmsgid \"Chukotskiy avtonomnyy okrug\"\nmsgstr \"Csukcs Autonóm Körzet\"\n\n#: ru/ru_regions.py:103\nmsgid \"Yamalo-Neneckiy avtonomnyy okrug\"\nmsgstr \"Jamali Nyenyec Autonóm Körzet\"\n\n#: se/forms.py:54\nmsgid \"Enter a valid Swedish organisation number.\"\nmsgstr \"Adjon meg egy érvényes svéd szervezeti számot.\"\n\n#: se/forms.py:111\nmsgid \"Enter a valid Swedish personal identity number.\"\nmsgstr \"Adjon meg egy érvényes svéd személyi számot.\"\n\n#: se/forms.py:112\nmsgid \"Co-ordination numbers are not allowed.\"\nmsgstr \"Koordinációs számok nem megengedettek.\"\n\n#: se/forms.py:154\nmsgid \"Enter a Swedish postal code in the format XXXXX.\"\nmsgstr \"Adjon meg egy svéd irányítószámot XXXXX formátumban.\"\n\n#: se/se_counties.py:16\nmsgid \"Stockholm\"\nmsgstr \"Stockholm\"\n\n#: se/se_counties.py:17\nmsgid \"Västerbotten\"\nmsgstr \"Västerbotten\"\n\n#: se/se_counties.py:18\nmsgid \"Norrbotten\"\nmsgstr \"Norrbotten\"\n\n#: se/se_counties.py:19\nmsgid \"Uppsala\"\nmsgstr \"Uppsala\"\n\n#: se/se_counties.py:20\nmsgid \"Södermanland\"\nmsgstr \"Södermanland\"\n\n#: se/se_counties.py:21\nmsgid \"Östergötland\"\nmsgstr \"Östergötland\"\n\n#: se/se_counties.py:22\nmsgid \"Jönköping\"\nmsgstr \"Jönköping\"\n\n#: se/se_counties.py:23\nmsgid \"Kronoberg\"\nmsgstr \"Kronoberg\"\n\n#: se/se_counties.py:24\nmsgid \"Kalmar\"\nmsgstr \"Kalmar\"\n\n#: se/se_counties.py:25\nmsgid \"Gotland\"\nmsgstr \"Gotland\"\n\n#: se/se_counties.py:26\nmsgid \"Blekinge\"\nmsgstr \"Blekinge\"\n\n#: se/se_counties.py:27\nmsgid \"Skåne\"\nmsgstr \"Skåne\"\n\n#: se/se_counties.py:28\nmsgid \"Halland\"\nmsgstr \"Halland\"\n\n#: se/se_counties.py:29\nmsgid \"Västra Götaland\"\nmsgstr \"Västra Götaland\"\n\n#: se/se_counties.py:30\nmsgid \"Värmland\"\nmsgstr \"Värmland\"\n\n#: se/se_counties.py:31\nmsgid \"Örebro\"\nmsgstr \"Örebro\"\n\n#: se/se_counties.py:32\nmsgid \"Västmanland\"\nmsgstr \"Västmanland\"\n\n#: se/se_counties.py:33\nmsgid \"Dalarna\"\nmsgstr \"Dalarna\"\n\n#: se/se_counties.py:34\nmsgid \"Gävleborg\"\nmsgstr \"Gävleborg\"\n\n#: se/se_counties.py:35\nmsgid \"Västernorrland\"\nmsgstr \"Västernorrland\"\n\n#: se/se_counties.py:36\nmsgid \"Jämtland\"\nmsgstr \"Jämtland\"\n\n#: si/forms.py:25\nmsgid \"The first 7 digits of the EMSO must represent a valid past date.\"\nmsgstr \"Az EMSO első 7 számjegyének érvényes, múltbéli dátumot kell jelölnie.\"\n\n#: si/forms.py:26\nmsgid \"The EMSO is not valid.\"\nmsgstr \"Érvénytelen EMSO.\"\n\n#: si/forms.py:86\nmsgid \"Enter a valid tax number in form SIXXXXXXXX\"\nmsgstr \"Adj meg érvényes adószámot SIXXXXXXXX formában\"\n\n#: si/forms.py:151\nmsgid \"Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.\"\nmsgstr \"A telefonszámot +386XXXXXXXX vagy 0XXXXXXXX formátumban kell megadnod\"\n\n#: sk/sk_districts.py:8\nmsgid \"Banska Bystrica\"\nmsgstr \"Besztercebánya\"\n\n#: sk/sk_districts.py:9\nmsgid \"Banska Stiavnica\"\nmsgstr \"Selmecbánya\"\n\n#: sk/sk_districts.py:10\nmsgid \"Bardejov\"\nmsgstr \"Bártfa\"\n\n#: sk/sk_districts.py:11\nmsgid \"Banovce nad Bebravou\"\nmsgstr \"Banovce nad Bebravou\"\n\n#: sk/sk_districts.py:12\nmsgid \"Brezno\"\nmsgstr \"Brezno\"\n\n#: sk/sk_districts.py:13\nmsgid \"Bratislava I\"\nmsgstr \"Pozsony I\"\n\n#: sk/sk_districts.py:14\nmsgid \"Bratislava II\"\nmsgstr \"Pozsony II\"\n\n#: sk/sk_districts.py:15\nmsgid \"Bratislava III\"\nmsgstr \"Pozsony III\"\n\n#: sk/sk_districts.py:16\nmsgid \"Bratislava IV\"\nmsgstr \"Pozsony IV\"\n\n#: sk/sk_districts.py:17\nmsgid \"Bratislava V\"\nmsgstr \"Pozsony V\"\n\n#: sk/sk_districts.py:18\nmsgid \"Bytca\"\nmsgstr \"Bytca\"\n\n#: sk/sk_districts.py:19\nmsgid \"Cadca\"\nmsgstr \"Cadca\"\n\n#: sk/sk_districts.py:20\nmsgid \"Detva\"\nmsgstr \"Detva\"\n\n#: sk/sk_districts.py:21\nmsgid \"Dolny Kubin\"\nmsgstr \"Dolny Kubin\"\n\n#: sk/sk_districts.py:22\nmsgid \"Dunajska Streda\"\nmsgstr \"Dunaszerdahely\"\n\n#: sk/sk_districts.py:23\nmsgid \"Galanta\"\nmsgstr \"Galánta\"\n\n#: sk/sk_districts.py:24\nmsgid \"Gelnica\"\nmsgstr \"Gelnica\"\n\n#: sk/sk_districts.py:25\nmsgid \"Hlohovec\"\nmsgstr \"Hlohovec\"\n\n#: sk/sk_districts.py:26\nmsgid \"Humenne\"\nmsgstr \"Humenne\"\n\n#: sk/sk_districts.py:27\nmsgid \"Ilava\"\nmsgstr \"Ilava\"\n\n#: sk/sk_districts.py:28\nmsgid \"Kezmarok\"\nmsgstr \"Késmárk\"\n\n#: sk/sk_districts.py:29\nmsgid \"Komarno\"\nmsgstr \"Komárom\"\n\n#: sk/sk_districts.py:30\nmsgid \"Kosice I\"\nmsgstr \"Kassa I\"\n\n#: sk/sk_districts.py:31\nmsgid \"Kosice II\"\nmsgstr \"Kassa II\"\n\n#: sk/sk_districts.py:32\nmsgid \"Kosice III\"\nmsgstr \"Kassa III\"\n\n#: sk/sk_districts.py:33\nmsgid \"Kosice IV\"\nmsgstr \"Kassa IV\"\n\n#: sk/sk_districts.py:34\nmsgid \"Kosice - okolie\"\nmsgstr \"Kassa - környék\"\n\n#: sk/sk_districts.py:35\nmsgid \"Krupina\"\nmsgstr \"Krupina\"\n\n#: sk/sk_districts.py:36\nmsgid \"Kysucke Nove Mesto\"\nmsgstr \"Kysucke Nove Mesto\"\n\n#: sk/sk_districts.py:37\nmsgid \"Levice\"\nmsgstr \"Léva\"\n\n#: sk/sk_districts.py:38\nmsgid \"Levoca\"\nmsgstr \"Levoca\"\n\n#: sk/sk_districts.py:39\nmsgid \"Liptovsky Mikulas\"\nmsgstr \"Liptószentmiklós\"\n\n#: sk/sk_districts.py:40\nmsgid \"Lucenec\"\nmsgstr \"Losonc\"\n\n#: sk/sk_districts.py:41\nmsgid \"Malacky\"\nmsgstr \"Malacka\"\n\n#: sk/sk_districts.py:42\nmsgid \"Martin\"\nmsgstr \"Túrócszentmárton\"\n\n#: sk/sk_districts.py:43\nmsgid \"Medzilaborce\"\nmsgstr \"Medzilaborce\"\n\n#: sk/sk_districts.py:44\nmsgid \"Michalovce\"\nmsgstr \"Michalovce\"\n\n#: sk/sk_districts.py:45\nmsgid \"Myjava\"\nmsgstr \"Myjava\"\n\n#: sk/sk_districts.py:46\nmsgid \"Namestovo\"\nmsgstr \"Namestovo\"\n\n#: sk/sk_districts.py:47\nmsgid \"Nitra\"\nmsgstr \"Nyitra\"\n\n#: sk/sk_districts.py:48\nmsgid \"Nove Mesto nad Vahom\"\nmsgstr \"Nove Mesto nad Vahom\"\n\n#: sk/sk_districts.py:49\nmsgid \"Nove Zamky\"\nmsgstr \"Érsekújvár\"\n\n#: sk/sk_districts.py:50\nmsgid \"Partizanske\"\nmsgstr \"Partizanske\"\n\n#: sk/sk_districts.py:51\nmsgid \"Pezinok\"\nmsgstr \"Pezinok\"\n\n#: sk/sk_districts.py:52\nmsgid \"Piestany\"\nmsgstr \"Piestany\"\n\n#: sk/sk_districts.py:53\nmsgid \"Poltar\"\nmsgstr \"Poltar\"\n\n#: sk/sk_districts.py:54\nmsgid \"Poprad\"\nmsgstr \"Poprád\"\n\n#: sk/sk_districts.py:55\nmsgid \"Povazska Bystrica\"\nmsgstr \"Povazska Bystrica\"\n\n#: sk/sk_districts.py:56\nmsgid \"Presov\"\nmsgstr \"Eperjes\"\n\n#: sk/sk_districts.py:57\nmsgid \"Prievidza\"\nmsgstr \"Prievidza\"\n\n#: sk/sk_districts.py:58\nmsgid \"Puchov\"\nmsgstr \"Puchov\"\n\n#: sk/sk_districts.py:59\nmsgid \"Revuca\"\nmsgstr \"Revuca\"\n\n#: sk/sk_districts.py:60\nmsgid \"Rimavska Sobota\"\nmsgstr \"Rimaszombat\"\n\n#: sk/sk_districts.py:61\nmsgid \"Roznava\"\nmsgstr \"Rozsnyó\"\n\n#: sk/sk_districts.py:62\nmsgid \"Ruzomberok\"\nmsgstr \"Rózsahegy\"\n\n#: sk/sk_districts.py:63\nmsgid \"Sabinov\"\nmsgstr \"Sabinov\"\n\n#: sk/sk_districts.py:64\nmsgid \"Senec\"\nmsgstr \"Senec\"\n\n#: sk/sk_districts.py:65\nmsgid \"Senica\"\nmsgstr \"Senica\"\n\n#: sk/sk_districts.py:66\nmsgid \"Skalica\"\nmsgstr \"Skalica\"\n\n#: sk/sk_districts.py:67\nmsgid \"Snina\"\nmsgstr \"Snina\"\n\n#: sk/sk_districts.py:68\nmsgid \"Sobrance\"\nmsgstr \"Sobrance\"\n\n#: sk/sk_districts.py:69\nmsgid \"Spisska Nova Ves\"\nmsgstr \"Igló\"\n\n#: sk/sk_districts.py:70\nmsgid \"Stara Lubovna\"\nmsgstr \"Stara Lubovna\"\n\n#: sk/sk_districts.py:71\nmsgid \"Stropkov\"\nmsgstr \"Stropkov\"\n\n#: sk/sk_districts.py:72\nmsgid \"Svidnik\"\nmsgstr \"Svidnik\"\n\n#: sk/sk_districts.py:73\nmsgid \"Sala\"\nmsgstr \"Sellye\"\n\n#: sk/sk_districts.py:74\nmsgid \"Topolcany\"\nmsgstr \"Topolcany\"\n\n#: sk/sk_districts.py:75\nmsgid \"Trebisov\"\nmsgstr \"Trebisov\"\n\n#: sk/sk_districts.py:76\nmsgid \"Trencin\"\nmsgstr \"Trencsén\"\n\n#: sk/sk_districts.py:77\nmsgid \"Trnava\"\nmsgstr \"Nagyszombat\"\n\n#: sk/sk_districts.py:78\nmsgid \"Turcianske Teplice\"\nmsgstr \"Turcianske Teplice\"\n\n#: sk/sk_districts.py:79\nmsgid \"Tvrdosin\"\nmsgstr \"Tvrdosin\"\n\n#: sk/sk_districts.py:80\nmsgid \"Velky Krtis\"\nmsgstr \"Velky Krtis\"\n\n#: sk/sk_districts.py:81\nmsgid \"Vranov nad Toplou\"\nmsgstr \"Vranov nad Toplou\"\n\n#: sk/sk_districts.py:82\nmsgid \"Zlate Moravce\"\nmsgstr \"Zlate Moravce\"\n\n#: sk/sk_districts.py:83\nmsgid \"Zvolen\"\nmsgstr \"Zólyom\"\n\n#: sk/sk_districts.py:84\nmsgid \"Zarnovica\"\nmsgstr \"Zarnovica\"\n\n#: sk/sk_districts.py:85\nmsgid \"Ziar nad Hronom\"\nmsgstr \"Ziar nad Hronom\"\n\n#: sk/sk_districts.py:86\nmsgid \"Zilina\"\nmsgstr \"Zsolna\"\n\n#: sk/sk_regions.py:8\nmsgid \"Banska Bystrica region\"\nmsgstr \"Besztercebánya régió\"\n\n#: sk/sk_regions.py:9\nmsgid \"Bratislava region\"\nmsgstr \"Pozsony régió\"\n\n#: sk/sk_regions.py:10\nmsgid \"Kosice region\"\nmsgstr \"Kassa régió\"\n\n#: sk/sk_regions.py:11\nmsgid \"Nitra region\"\nmsgstr \"Nyitra régió\"\n\n#: sk/sk_regions.py:12\nmsgid \"Presov region\"\nmsgstr \"Eperjesi régió\"\n\n#: sk/sk_regions.py:13\nmsgid \"Trencin region\"\nmsgstr \"Trencsén régió\"\n\n#: sk/sk_regions.py:14\nmsgid \"Trnava region\"\nmsgstr \"Nagyszombati régió\"\n\n#: sk/sk_regions.py:15\nmsgid \"Zilina region\"\nmsgstr \"Zsolna régió\"\n\n#: tr/forms.py:21\nmsgid \"Enter a postal code in the format XXXXX.\"\nmsgstr \"Adjon meg egy irányítószámot XXXXX formátumban.\"\n\n#: tr/forms.py:42\nmsgid \"Phone numbers must be in 0XXX XXX XXXX format.\"\nmsgstr \"A telefonszámnak 0XXX XXX XXXX formátumban kell lennie.\"\n\n#: tr/forms.py:69\nmsgid \"Enter a valid Turkish Identification number.\"\nmsgstr \"Adjon meg egy érvényes török azonosító számot.\"\n\n#: tr/forms.py:70\nmsgid \"Turkish Identification number must be 11 digits.\"\nmsgstr \"Egy török azonosító szám 11 számjegyből áll.\"\n\n#: us/forms.py:21\nmsgid \"Enter a zip code in the format XXXXX or XXXXX-XXXX.\"\nmsgstr \"Adjon meg egy irányítószámot 'XXXXX', vagy 'XXXXX-XXXX' alakban.\"\n\n#: us/forms.py:59\nmsgid \"Enter a valid U.S. Social Security number in XXX-XX-XXXX format.\"\nmsgstr \"Adjon meg egy érvényes USA SSN-t 'XXX-XX-XXXX' formátumban.\"\n\n#: us/forms.py:92\nmsgid \"Enter a U.S. state or territory.\"\nmsgstr \"Adjon meg egy U.S. államot vagy területet.\"\n\n#: us/models.py:8\nmsgid \"U.S. state (two uppercase letters)\"\nmsgstr \"USA állam (két nagybetű)\"\n\n#: us/models.py:17\nmsgid \"U.S. postal code (two uppercase letters)\"\nmsgstr \"U.S. postai azonosító (két nagybetű)\"\n\n#: us/models.py:26\nmsgid \"Phone number\"\nmsgstr \"Telefonszám\"\n\n#: uy/forms.py:29\nmsgid \"Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.\"\nmsgstr \"\"\n\"Adjon meg egy érvényes CI számot X.XXX.XXX-X,XXXXXXX-X, vagy XXXXXXXX \"\n\"formátumban.\"\n\n#: uy/forms.py:31\nmsgid \"Enter a valid CI number.\"\nmsgstr \"Adjon meg egy érvényes CI számot.\"\n\n#: za/forms.py:22\nmsgid \"Enter a valid South African ID number\"\nmsgstr \"Adjon meg egy érvényes dél-afrikai azonosító számot.\"\n\n#: za/forms.py:56\nmsgid \"Enter a valid South African postal code\"\nmsgstr \"Adjon meg egy érvényes dél-afrikai irányítószámot.\"\n\n#: za/za_provinces.py:4\nmsgid \"Eastern Cape\"\nmsgstr \"Eastern Cape\"\n\n#: za/za_provinces.py:5\nmsgid \"Free State\"\nmsgstr \"Free State\"\n\n#: za/za_provinces.py:6\nmsgid \"Gauteng\"\nmsgstr \"Gauteng\"\n\n#: za/za_provinces.py:7\nmsgid \"KwaZulu-Natal\"\nmsgstr \"KwaZulu -Natal\"\n\n#: za/za_provinces.py:8\nmsgid \"Limpopo\"\nmsgstr \"Limpopo\"\n\n#: za/za_provinces.py:9\nmsgid \"Mpumalanga\"\nmsgstr \"Mpumalanga\"\n\n#: za/za_provinces.py:10\nmsgid \"Northern Cape\"\nmsgstr \"Northern Cape\"\n\n#: za/za_provinces.py:11\nmsgid \"North West\"\nmsgstr \"North West\"\n\n#: za/za_provinces.py:12\nmsgid \"Western Cape\"\nmsgstr \"Western Cape\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/locale/ia/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Martijn Dekker <mcdutchie@hotmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-10-17 09:17+0000\\n\"\n\"Last-Translator: Martijn Dekker <mcdutchie@hotmail.com>\\n\"\n\"Language-Team: Interlingua (http://www.transifex.com/projects/p/django/\"\n\"language/ia/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ia\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: ar/forms.py:30\nmsgid \"Enter a postal code in the format NNNN or ANNNNAAA.\"\nmsgstr \"Entra un codice postal in le formato NNNN o ANNNNAAA.\"\n\n#: ar/forms.py:52 br/forms.py:95 br/forms.py:134 pe/forms.py:27 pe/forms.py:55\nmsgid \"This field requires only numbers.\"\nmsgstr \"Iste campo require solmente numeros.\"\n\n#: ar/forms.py:53\nmsgid \"This field requires 7 or 8 digits.\"\nmsgstr \"Iste campo require 7 o 8 cifras.\"\n\n#: ar/forms.py:82\nmsgid \"Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.\"\nmsgstr \"Entra un CUIT valide in formato XX-XXXXXXXX-X o XXXXXXXXXXXX.\"\n\n#: ar/forms.py:83\nmsgid \"Invalid CUIT.\"\nmsgstr \"CUIT invalide.\"\n\n#: ar/forms.py:84\nmsgid \"Invalid legal type. Type must be 27, 20, 23 or 30.\"\nmsgstr \"\"\n\n#: at/at_states.py:5\nmsgid \"Burgenland\"\nmsgstr \"\"\n\n#: at/at_states.py:6\nmsgid \"Carinthia\"\nmsgstr \"\"\n\n#: at/at_states.py:7\nmsgid \"Lower Austria\"\nmsgstr \"\"\n\n#: at/at_states.py:8\nmsgid \"Upper Austria\"\nmsgstr \"\"\n\n#: at/at_states.py:9\nmsgid \"Salzburg\"\nmsgstr \"\"\n\n#: at/at_states.py:10\nmsgid \"Styria\"\nmsgstr \"\"\n\n#: at/at_states.py:11\nmsgid \"Tyrol\"\nmsgstr \"\"\n\n#: at/at_states.py:12\nmsgid \"Vorarlberg\"\nmsgstr \"\"\n\n#: at/at_states.py:13\nmsgid \"Vienna\"\nmsgstr \"\"\n\n#: at/forms.py:22 ch/forms.py:22 no/forms.py:19\nmsgid \"Enter a zip code in the format XXXX.\"\nmsgstr \"\"\n\n#: at/forms.py:50\nmsgid \"Enter a valid Austrian Social Security Number in XXXX XXXXXX format.\"\nmsgstr \"\"\n\n#: au/forms.py:26\nmsgid \"Enter a 4 digit postcode.\"\nmsgstr \"\"\n\n#: au/models.py:9\nmsgid \"Australian State\"\nmsgstr \"\"\n\n#: au/models.py:19\nmsgid \"Australian Postcode\"\nmsgstr \"\"\n\n#: au/models.py:33\nmsgid \"Australian Phone number\"\nmsgstr \"\"\n\n#: be/be_provinces.py:5\nmsgid \"Antwerp\"\nmsgstr \"\"\n\n#: be/be_provinces.py:6\nmsgid \"Brussels\"\nmsgstr \"\"\n\n#: be/be_provinces.py:7\nmsgid \"East Flanders\"\nmsgstr \"\"\n\n#: be/be_provinces.py:8\nmsgid \"Flemish Brabant\"\nmsgstr \"\"\n\n#: be/be_provinces.py:9\nmsgid \"Hainaut\"\nmsgstr \"\"\n\n#: be/be_provinces.py:10\nmsgid \"Liege\"\nmsgstr \"\"\n\n#: be/be_provinces.py:11 nl/nl_provinces.py:9\nmsgid \"Limburg\"\nmsgstr \"\"\n\n#: be/be_provinces.py:12\nmsgid \"Luxembourg\"\nmsgstr \"\"\n\n#: be/be_provinces.py:13\nmsgid \"Namur\"\nmsgstr \"\"\n\n#: be/be_provinces.py:14\nmsgid \"Walloon Brabant\"\nmsgstr \"\"\n\n#: be/be_provinces.py:15\nmsgid \"West Flanders\"\nmsgstr \"\"\n\n#: be/be_regions.py:5\nmsgid \"Brussels Capital Region\"\nmsgstr \"\"\n\n#: be/be_regions.py:6\nmsgid \"Flemish Region\"\nmsgstr \"\"\n\n#: be/be_regions.py:7\nmsgid \"Wallonia\"\nmsgstr \"\"\n\n#: be/forms.py:25\nmsgid \"Enter a valid postal code in the range and format 1XXX - 9XXX.\"\nmsgstr \"\"\n\n#: be/forms.py:48\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\nmsgstr \"\"\n\n#: br/forms.py:22\nmsgid \"Enter a zip code in the format XXXXX-XXX.\"\nmsgstr \"\"\n\n#: br/forms.py:31\nmsgid \"Phone numbers must be in XX-XXXX-XXXX format.\"\nmsgstr \"\"\n\n#: br/forms.py:58\nmsgid \"\"\n\"Select a valid brazilian state. That state is not one of the available \"\n\"states.\"\nmsgstr \"\"\n\n#: br/forms.py:93\nmsgid \"Invalid CPF number.\"\nmsgstr \"\"\n\n#: br/forms.py:94\nmsgid \"This field requires at most 11 digits or 14 characters.\"\nmsgstr \"\"\n\n#: br/forms.py:133\nmsgid \"Invalid CNPJ number.\"\nmsgstr \"\"\n\n#: br/forms.py:135\nmsgid \"This field requires at least 14 digits\"\nmsgstr \"\"\n\n#: ca/forms.py:29\nmsgid \"Enter a postal code in the format XXX XXX.\"\nmsgstr \"\"\n\n#: ca/forms.py:47 us/forms.py:30\nmsgid \"Phone numbers must be in XXX-XXX-XXXX format.\"\nmsgstr \"\"\n\n#: ca/forms.py:69\nmsgid \"Enter a Canadian province or territory.\"\nmsgstr \"\"\n\n#: ca/forms.py:110\nmsgid \"Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.\"\nmsgstr \"\"\n\n#: ch/ch_states.py:5\nmsgid \"Aargau\"\nmsgstr \"\"\n\n#: ch/ch_states.py:6\nmsgid \"Appenzell Innerrhoden\"\nmsgstr \"\"\n\n#: ch/ch_states.py:7\nmsgid \"Appenzell Ausserrhoden\"\nmsgstr \"\"\n\n#: ch/ch_states.py:8\nmsgid \"Basel-Stadt\"\nmsgstr \"\"\n\n#: ch/ch_states.py:9\nmsgid \"Basel-Land\"\nmsgstr \"\"\n\n#: ch/ch_states.py:10\nmsgid \"Berne\"\nmsgstr \"\"\n\n#: ch/ch_states.py:11\nmsgid \"Fribourg\"\nmsgstr \"\"\n\n#: ch/ch_states.py:12\nmsgid \"Geneva\"\nmsgstr \"\"\n\n#: ch/ch_states.py:13\nmsgid \"Glarus\"\nmsgstr \"\"\n\n#: ch/ch_states.py:14\nmsgid \"Graubuenden\"\nmsgstr \"\"\n\n#: ch/ch_states.py:15\nmsgid \"Jura\"\nmsgstr \"\"\n\n#: ch/ch_states.py:16\nmsgid \"Lucerne\"\nmsgstr \"\"\n\n#: ch/ch_states.py:17\nmsgid \"Neuchatel\"\nmsgstr \"\"\n\n#: ch/ch_states.py:18\nmsgid \"Nidwalden\"\nmsgstr \"\"\n\n#: ch/ch_states.py:19\nmsgid \"Obwalden\"\nmsgstr \"\"\n\n#: ch/ch_states.py:20\nmsgid \"Schaffhausen\"\nmsgstr \"\"\n\n#: ch/ch_states.py:21\nmsgid \"Schwyz\"\nmsgstr \"\"\n\n#: ch/ch_states.py:22\nmsgid \"Solothurn\"\nmsgstr \"\"\n\n#: ch/ch_states.py:23\nmsgid \"St. Gallen\"\nmsgstr \"\"\n\n#: ch/ch_states.py:24\nmsgid \"Thurgau\"\nmsgstr \"\"\n\n#: ch/ch_states.py:25\nmsgid \"Ticino\"\nmsgstr \"\"\n\n#: ch/ch_states.py:26\nmsgid \"Uri\"\nmsgstr \"\"\n\n#: ch/ch_states.py:27\nmsgid \"Valais\"\nmsgstr \"\"\n\n#: ch/ch_states.py:28\nmsgid \"Vaud\"\nmsgstr \"\"\n\n#: ch/ch_states.py:29\nmsgid \"Zug\"\nmsgstr \"\"\n\n#: ch/ch_states.py:30\nmsgid \"Zurich\"\nmsgstr \"\"\n\n#: ch/forms.py:37\nmsgid \"Phone numbers must be in 0XX XXX XX XX format.\"\nmsgstr \"\"\n\n#: ch/forms.py:68\nmsgid \"\"\n\"Enter a valid Swiss identity or passport card number in X1234567<0 or \"\n\"1234567890 format.\"\nmsgstr \"\"\n\n#: cl/forms.py:32\nmsgid \"Enter a valid Chilean RUT.\"\nmsgstr \"\"\n\n#: cl/forms.py:33\nmsgid \"Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.\"\nmsgstr \"\"\n\n#: cl/forms.py:34\nmsgid \"The Chilean RUT is not valid.\"\nmsgstr \"\"\n\n#: cn/forms.py:84\nmsgid \"Enter a post code in the format XXXXXX.\"\nmsgstr \"\"\n\n#: cn/forms.py:105\nmsgid \"ID Card Number consists of 15 or 18 digits.\"\nmsgstr \"\"\n\n#: cn/forms.py:106\nmsgid \"Invalid ID Card Number: Wrong checksum\"\nmsgstr \"\"\n\n#: cn/forms.py:107\nmsgid \"Invalid ID Card Number: Wrong birthdate\"\nmsgstr \"\"\n\n#: cn/forms.py:108\nmsgid \"Invalid ID Card Number: Wrong location code\"\nmsgstr \"\"\n\n#: cn/forms.py:193\nmsgid \"Enter a valid phone number.\"\nmsgstr \"\"\n\n#: cn/forms.py:210\nmsgid \"Enter a valid cell number.\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:8\nmsgid \"Prague\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:9\nmsgid \"Central Bohemian Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:10\nmsgid \"South Bohemian Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:11\nmsgid \"Pilsen Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:12\nmsgid \"Carlsbad Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:13\nmsgid \"Usti Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:14\nmsgid \"Liberec Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:15\nmsgid \"Hradec Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:16\nmsgid \"Pardubice Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:17\nmsgid \"Vysocina Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:18\nmsgid \"South Moravian Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:19\nmsgid \"Olomouc Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:20\nmsgid \"Zlin Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:21\nmsgid \"Moravian-Silesian Region\"\nmsgstr \"\"\n\n#: cz/forms.py:32 sk/forms.py:33\nmsgid \"Enter a postal code in the format XXXXX or XXX XX.\"\nmsgstr \"\"\n\n#: cz/forms.py:52\nmsgid \"Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.\"\nmsgstr \"\"\n\n#: cz/forms.py:53\nmsgid \"Enter a valid birth number.\"\nmsgstr \"\"\n\n#: cz/forms.py:102\nmsgid \"Enter a valid IC number.\"\nmsgstr \"\"\n\n#: de/de_states.py:5\nmsgid \"Baden-Wuerttemberg\"\nmsgstr \"\"\n\n#: de/de_states.py:6\nmsgid \"Bavaria\"\nmsgstr \"\"\n\n#: de/de_states.py:7\nmsgid \"Berlin\"\nmsgstr \"\"\n\n#: de/de_states.py:8\nmsgid \"Brandenburg\"\nmsgstr \"\"\n\n#: de/de_states.py:9\nmsgid \"Bremen\"\nmsgstr \"\"\n\n#: de/de_states.py:10\nmsgid \"Hamburg\"\nmsgstr \"\"\n\n#: de/de_states.py:11\nmsgid \"Hessen\"\nmsgstr \"\"\n\n#: de/de_states.py:12\nmsgid \"Mecklenburg-Western Pomerania\"\nmsgstr \"\"\n\n#: de/de_states.py:13\nmsgid \"Lower Saxony\"\nmsgstr \"\"\n\n#: de/de_states.py:14\nmsgid \"North Rhine-Westphalia\"\nmsgstr \"\"\n\n#: de/de_states.py:15\nmsgid \"Rhineland-Palatinate\"\nmsgstr \"\"\n\n#: de/de_states.py:16\nmsgid \"Saarland\"\nmsgstr \"\"\n\n#: de/de_states.py:17\nmsgid \"Saxony\"\nmsgstr \"\"\n\n#: de/de_states.py:18\nmsgid \"Saxony-Anhalt\"\nmsgstr \"\"\n\n#: de/de_states.py:19\nmsgid \"Schleswig-Holstein\"\nmsgstr \"\"\n\n#: de/de_states.py:20\nmsgid \"Thuringia\"\nmsgstr \"\"\n\n#: de/forms.py:20 fi/forms.py:18 fr/forms.py:20\nmsgid \"Enter a zip code in the format XXXXX.\"\nmsgstr \"\"\n\n#: de/forms.py:46\nmsgid \"\"\n\"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"format.\"\nmsgstr \"\"\n\n#: es/es_provinces.py:5\nmsgid \"Araba\"\nmsgstr \"\"\n\n#: es/es_provinces.py:6\nmsgid \"Albacete\"\nmsgstr \"\"\n\n#: es/es_provinces.py:7\nmsgid \"Alacant\"\nmsgstr \"\"\n\n#: es/es_provinces.py:8\nmsgid \"Almeria\"\nmsgstr \"\"\n\n#: es/es_provinces.py:9\nmsgid \"Avila\"\nmsgstr \"\"\n\n#: es/es_provinces.py:10\nmsgid \"Badajoz\"\nmsgstr \"\"\n\n#: es/es_provinces.py:11\nmsgid \"Illes Balears\"\nmsgstr \"\"\n\n#: es/es_provinces.py:12\nmsgid \"Barcelona\"\nmsgstr \"\"\n\n#: es/es_provinces.py:13\nmsgid \"Burgos\"\nmsgstr \"\"\n\n#: es/es_provinces.py:14\nmsgid \"Caceres\"\nmsgstr \"\"\n\n#: es/es_provinces.py:15\nmsgid \"Cadiz\"\nmsgstr \"\"\n\n#: es/es_provinces.py:16\nmsgid \"Castello\"\nmsgstr \"\"\n\n#: es/es_provinces.py:17\nmsgid \"Ciudad Real\"\nmsgstr \"\"\n\n#: es/es_provinces.py:18\nmsgid \"Cordoba\"\nmsgstr \"\"\n\n#: es/es_provinces.py:19\nmsgid \"A Coruna\"\nmsgstr \"\"\n\n#: es/es_provinces.py:20\nmsgid \"Cuenca\"\nmsgstr \"\"\n\n#: es/es_provinces.py:21\nmsgid \"Girona\"\nmsgstr \"\"\n\n#: es/es_provinces.py:22\nmsgid \"Granada\"\nmsgstr \"\"\n\n#: es/es_provinces.py:23\nmsgid \"Guadalajara\"\nmsgstr \"\"\n\n#: es/es_provinces.py:24\nmsgid \"Guipuzkoa\"\nmsgstr \"\"\n\n#: es/es_provinces.py:25\nmsgid \"Huelva\"\nmsgstr \"\"\n\n#: es/es_provinces.py:26\nmsgid \"Huesca\"\nmsgstr \"\"\n\n#: es/es_provinces.py:27\nmsgid \"Jaen\"\nmsgstr \"\"\n\n#: es/es_provinces.py:28\nmsgid \"Leon\"\nmsgstr \"\"\n\n#: es/es_provinces.py:29\nmsgid \"Lleida\"\nmsgstr \"\"\n\n#: es/es_provinces.py:30 es/es_regions.py:17\nmsgid \"La Rioja\"\nmsgstr \"\"\n\n#: es/es_provinces.py:31\nmsgid \"Lugo\"\nmsgstr \"\"\n\n#: es/es_provinces.py:32 es/es_regions.py:18\nmsgid \"Madrid\"\nmsgstr \"\"\n\n#: es/es_provinces.py:33\nmsgid \"Malaga\"\nmsgstr \"\"\n\n#: es/es_provinces.py:34\nmsgid \"Murcia\"\nmsgstr \"\"\n\n#: es/es_provinces.py:35\nmsgid \"Navarre\"\nmsgstr \"\"\n\n#: es/es_provinces.py:36\nmsgid \"Ourense\"\nmsgstr \"\"\n\n#: es/es_provinces.py:37\nmsgid \"Asturias\"\nmsgstr \"\"\n\n#: es/es_provinces.py:38\nmsgid \"Palencia\"\nmsgstr \"\"\n\n#: es/es_provinces.py:39\nmsgid \"Las Palmas\"\nmsgstr \"\"\n\n#: es/es_provinces.py:40\nmsgid \"Pontevedra\"\nmsgstr \"\"\n\n#: es/es_provinces.py:41\nmsgid \"Salamanca\"\nmsgstr \"\"\n\n#: es/es_provinces.py:42\nmsgid \"Santa Cruz de Tenerife\"\nmsgstr \"\"\n\n#: es/es_provinces.py:43 es/es_regions.py:11\nmsgid \"Cantabria\"\nmsgstr \"\"\n\n#: es/es_provinces.py:44\nmsgid \"Segovia\"\nmsgstr \"\"\n\n#: es/es_provinces.py:45\nmsgid \"Seville\"\nmsgstr \"\"\n\n#: es/es_provinces.py:46\nmsgid \"Soria\"\nmsgstr \"\"\n\n#: es/es_provinces.py:47\nmsgid \"Tarragona\"\nmsgstr \"\"\n\n#: es/es_provinces.py:48\nmsgid \"Teruel\"\nmsgstr \"\"\n\n#: es/es_provinces.py:49\nmsgid \"Toledo\"\nmsgstr \"\"\n\n#: es/es_provinces.py:50\nmsgid \"Valencia\"\nmsgstr \"\"\n\n#: es/es_provinces.py:51\nmsgid \"Valladolid\"\nmsgstr \"\"\n\n#: es/es_provinces.py:52\nmsgid \"Bizkaia\"\nmsgstr \"\"\n\n#: es/es_provinces.py:53\nmsgid \"Zamora\"\nmsgstr \"\"\n\n#: es/es_provinces.py:54\nmsgid \"Zaragoza\"\nmsgstr \"\"\n\n#: es/es_provinces.py:55\nmsgid \"Ceuta\"\nmsgstr \"\"\n\n#: es/es_provinces.py:56\nmsgid \"Melilla\"\nmsgstr \"\"\n\n#: es/es_regions.py:5\nmsgid \"Andalusia\"\nmsgstr \"\"\n\n#: es/es_regions.py:6\nmsgid \"Aragon\"\nmsgstr \"\"\n\n#: es/es_regions.py:7\nmsgid \"Principality of Asturias\"\nmsgstr \"\"\n\n#: es/es_regions.py:8\nmsgid \"Balearic Islands\"\nmsgstr \"\"\n\n#: es/es_regions.py:9\nmsgid \"Basque Country\"\nmsgstr \"\"\n\n#: es/es_regions.py:10\nmsgid \"Canary Islands\"\nmsgstr \"\"\n\n#: es/es_regions.py:12\nmsgid \"Castile-La Mancha\"\nmsgstr \"\"\n\n#: es/es_regions.py:13\nmsgid \"Castile and Leon\"\nmsgstr \"\"\n\n#: es/es_regions.py:14\nmsgid \"Catalonia\"\nmsgstr \"\"\n\n#: es/es_regions.py:15\nmsgid \"Extremadura\"\nmsgstr \"\"\n\n#: es/es_regions.py:16\nmsgid \"Galicia\"\nmsgstr \"\"\n\n#: es/es_regions.py:19\nmsgid \"Region of Murcia\"\nmsgstr \"\"\n\n#: es/es_regions.py:20\nmsgid \"Foral Community of Navarre\"\nmsgstr \"\"\n\n#: es/es_regions.py:21\nmsgid \"Valencian Community\"\nmsgstr \"\"\n\n#: es/forms.py:26\nmsgid \"Enter a valid postal code in the range and format 01XXX - 52XXX.\"\nmsgstr \"\"\n\n#: es/forms.py:46\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or \"\n\"9XXXXXXXX.\"\nmsgstr \"\"\n\n#: es/forms.py:73\nmsgid \"Please enter a valid NIF, NIE, or CIF.\"\nmsgstr \"\"\n\n#: es/forms.py:74\nmsgid \"Please enter a valid NIF or NIE.\"\nmsgstr \"\"\n\n#: es/forms.py:75\nmsgid \"Invalid checksum for NIF.\"\nmsgstr \"\"\n\n#: es/forms.py:76\nmsgid \"Invalid checksum for NIE.\"\nmsgstr \"\"\n\n#: es/forms.py:77\nmsgid \"Invalid checksum for CIF.\"\nmsgstr \"\"\n\n#: es/forms.py:149\nmsgid \"\"\n\"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.\"\nmsgstr \"\"\n\n#: es/forms.py:150\nmsgid \"Invalid checksum for bank account number.\"\nmsgstr \"\"\n\n#: fi/forms.py:33\nmsgid \"Enter a valid Finnish social security number.\"\nmsgstr \"\"\n\n#: fr/forms.py:35\nmsgid \"Phone numbers must be in 0X XX XX XX XX format.\"\nmsgstr \"\"\n\n#: gb/forms.py:25\nmsgid \"Enter a valid postcode.\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:11\nmsgid \"Bedfordshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:12\nmsgid \"Buckinghamshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:14\nmsgid \"Cheshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:15\nmsgid \"Cornwall and Isles of Scilly\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:16\nmsgid \"Cumbria\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:17\nmsgid \"Derbyshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:18\nmsgid \"Devon\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:19\nmsgid \"Dorset\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:20\nmsgid \"Durham\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:21\nmsgid \"East Sussex\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:22\nmsgid \"Essex\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:23\nmsgid \"Gloucestershire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:24\nmsgid \"Greater London\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:25\nmsgid \"Greater Manchester\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:26\nmsgid \"Hampshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:27\nmsgid \"Hertfordshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:28\nmsgid \"Kent\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:29\nmsgid \"Lancashire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:30\nmsgid \"Leicestershire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:31\nmsgid \"Lincolnshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:32\nmsgid \"Merseyside\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:33\nmsgid \"Norfolk\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:34\nmsgid \"North Yorkshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:35\nmsgid \"Northamptonshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:36\nmsgid \"Northumberland\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:37\nmsgid \"Nottinghamshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:38\nmsgid \"Oxfordshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:39\nmsgid \"Shropshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:40\nmsgid \"Somerset\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:41\nmsgid \"South Yorkshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:42\nmsgid \"Staffordshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:43\nmsgid \"Suffolk\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:44\nmsgid \"Surrey\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:45\nmsgid \"Tyne and Wear\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:46\nmsgid \"Warwickshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:47\nmsgid \"West Midlands\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:48\nmsgid \"West Sussex\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:49\nmsgid \"West Yorkshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:50\nmsgid \"Wiltshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:51\nmsgid \"Worcestershire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:55\nmsgid \"County Antrim\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:56\nmsgid \"County Armagh\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:57\nmsgid \"County Down\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:58\nmsgid \"County Fermanagh\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:59\nmsgid \"County Londonderry\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:60\nmsgid \"County Tyrone\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:64\nmsgid \"Clwyd\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:65\nmsgid \"Dyfed\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:66\nmsgid \"Gwent\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:67\nmsgid \"Gwynedd\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:68\nmsgid \"Mid Glamorgan\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:69\nmsgid \"Powys\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:70\nmsgid \"South Glamorgan\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:71\nmsgid \"West Glamorgan\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:75\nmsgid \"Borders\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:76\nmsgid \"Central Scotland\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:77\nmsgid \"Dumfries and Galloway\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:78\nmsgid \"Fife\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:79\nmsgid \"Grampian\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:80\nmsgid \"Highland\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:81\nmsgid \"Lothian\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:82\nmsgid \"Orkney Islands\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:83\nmsgid \"Shetland Islands\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:84\nmsgid \"Strathclyde\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:85\nmsgid \"Tayside\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:86\nmsgid \"Western Isles\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:90\nmsgid \"England\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:91\nmsgid \"Northern Ireland\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:92\nmsgid \"Scotland\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:93\nmsgid \"Wales\"\nmsgstr \"\"\n\n#: hk/forms.py:37\n#, python-format\nmsgid \"Phone number should not start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:40\n#, python-format\nmsgid \"Phone number must be in one of the following formats: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:42\n#, python-format\nmsgid \"Phone number should start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hr/forms.py:76\nmsgid \"Enter a valid 13 digit JMBG\"\nmsgstr \"\"\n\n#: hr/forms.py:77\nmsgid \"Error in date segment\"\nmsgstr \"\"\n\n#: hr/forms.py:123\nmsgid \"Enter a valid 11 digit OIB\"\nmsgstr \"\"\n\n#: hr/forms.py:152 id/forms.py:112\nmsgid \"Enter a valid vehicle license plate number\"\nmsgstr \"\"\n\n#: hr/forms.py:153\nmsgid \"Enter a valid location code\"\nmsgstr \"\"\n\n#: hr/forms.py:154\nmsgid \"Number part cannot be zero\"\nmsgstr \"\"\n\n#: hr/forms.py:190\nmsgid \"Enter a valid 5 digit postal code\"\nmsgstr \"\"\n\n#: hr/forms.py:218 id/forms.py:72 nl/forms.py:56\nmsgid \"Enter a valid phone number\"\nmsgstr \"\"\n\n#: hr/forms.py:219\nmsgid \"Enter a valid area or mobile network code\"\nmsgstr \"\"\n\n#: hr/forms.py:220\nmsgid \"The phone nubmer is too long\"\nmsgstr \"\"\n\n#: hr/forms.py:258\nmsgid \"Enter a valid 19 digit JMBAG starting with 601983\"\nmsgstr \"\"\n\n#: hr/forms.py:259\nmsgid \"Card issue number cannot be zero\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:14\nmsgid \"Grad Zagreb\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:15\nmsgid \"Bjelovarsko-bilogorska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:16\nmsgid \"Brodsko-posavska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:17\nmsgid \"Dubrovačko-neretvanska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:18\nmsgid \"Istarska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:19\nmsgid \"Karlovačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:20\nmsgid \"Koprivničko-križevačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:21\nmsgid \"Krapinsko-zagorska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:22\nmsgid \"Ličko-senjska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:23\nmsgid \"Međimurska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:24\nmsgid \"Osječko-baranjska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:25\nmsgid \"Požeško-slavonska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:26\nmsgid \"Primorsko-goranska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:27\nmsgid \"Sisačko-moslavačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:28\nmsgid \"Splitsko-dalmatinska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:29\nmsgid \"Šibensko-kninska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:30\nmsgid \"Varaždinska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:31\nmsgid \"Virovitičko-podravska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:32\nmsgid \"Vukovarsko-srijemska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:33\nmsgid \"Zadarska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:34\nmsgid \"Zagrebačka županija\"\nmsgstr \"\"\n\n#: id/forms.py:31\nmsgid \"Enter a valid post code\"\nmsgstr \"\"\n\n#: id/forms.py:176\nmsgid \"Enter a valid NIK/KTP number\"\nmsgstr \"\"\n\n#: id/id_choices.py:15\nmsgid \"Aceh\"\nmsgstr \"\"\n\n#: id/id_choices.py:16 id/id_choices.py:79\nmsgid \"Bali\"\nmsgstr \"\"\n\n#: id/id_choices.py:17 id/id_choices.py:51\nmsgid \"Banten\"\nmsgstr \"\"\n\n#: id/id_choices.py:18 id/id_choices.py:60\nmsgid \"Bengkulu\"\nmsgstr \"\"\n\n#: id/id_choices.py:19 id/id_choices.py:53\nmsgid \"Yogyakarta\"\nmsgstr \"\"\n\n#: id/id_choices.py:20 id/id_choices.py:57\nmsgid \"Jakarta\"\nmsgstr \"\"\n\n#: id/id_choices.py:21 id/id_choices.py:81\nmsgid \"Gorontalo\"\nmsgstr \"\"\n\n#: id/id_choices.py:22 id/id_choices.py:63\nmsgid \"Jambi\"\nmsgstr \"\"\n\n#: id/id_choices.py:23\nmsgid \"Jawa Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:24\nmsgid \"Jawa Tengah\"\nmsgstr \"\"\n\n#: id/id_choices.py:25\nmsgid \"Jawa Timur\"\nmsgstr \"\"\n\n#: id/id_choices.py:26 id/id_choices.py:94\nmsgid \"Kalimantan Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:27 id/id_choices.py:72\nmsgid \"Kalimantan Selatan\"\nmsgstr \"\"\n\n#: id/id_choices.py:28 id/id_choices.py:95\nmsgid \"Kalimantan Tengah\"\nmsgstr \"\"\n\n#: id/id_choices.py:29 id/id_choices.py:96\nmsgid \"Kalimantan Timur\"\nmsgstr \"\"\n\n#: id/id_choices.py:30\nmsgid \"Kepulauan Bangka-Belitung\"\nmsgstr \"\"\n\n#: id/id_choices.py:31 id/id_choices.py:68\nmsgid \"Kepulauan Riau\"\nmsgstr \"\"\n\n#: id/id_choices.py:32 id/id_choices.py:61\nmsgid \"Lampung\"\nmsgstr \"\"\n\n#: id/id_choices.py:33 id/id_choices.py:76\nmsgid \"Maluku\"\nmsgstr \"\"\n\n#: id/id_choices.py:34 id/id_choices.py:77\nmsgid \"Maluku Utara\"\nmsgstr \"\"\n\n#: id/id_choices.py:35\nmsgid \"Nusa Tenggara Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:36\nmsgid \"Nusa Tenggara Timur\"\nmsgstr \"\"\n\n#: id/id_choices.py:37\nmsgid \"Papua\"\nmsgstr \"\"\n\n#: id/id_choices.py:38\nmsgid \"Papua Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:39 id/id_choices.py:66\nmsgid \"Riau\"\nmsgstr \"\"\n\n#: id/id_choices.py:40 id/id_choices.py:74\nmsgid \"Sulawesi Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:41 id/id_choices.py:75\nmsgid \"Sulawesi Selatan\"\nmsgstr \"\"\n\n#: id/id_choices.py:42 id/id_choices.py:82\nmsgid \"Sulawesi Tengah\"\nmsgstr \"\"\n\n#: id/id_choices.py:43 id/id_choices.py:85\nmsgid \"Sulawesi Tenggara\"\nmsgstr \"\"\n\n#: id/id_choices.py:44\nmsgid \"Sulawesi Utara\"\nmsgstr \"\"\n\n#: id/id_choices.py:45 id/id_choices.py:58\nmsgid \"Sumatera Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:46 id/id_choices.py:62\nmsgid \"Sumatera Selatan\"\nmsgstr \"\"\n\n#: id/id_choices.py:47 id/id_choices.py:64\nmsgid \"Sumatera Utara\"\nmsgstr \"\"\n\n#: id/id_choices.py:52\nmsgid \"Magelang\"\nmsgstr \"\"\n\n#: id/id_choices.py:54\nmsgid \"Surakarta - Solo\"\nmsgstr \"\"\n\n#: id/id_choices.py:55\nmsgid \"Madiun\"\nmsgstr \"\"\n\n#: id/id_choices.py:56\nmsgid \"Kediri\"\nmsgstr \"\"\n\n#: id/id_choices.py:59\nmsgid \"Tapanuli\"\nmsgstr \"\"\n\n#: id/id_choices.py:65\nmsgid \"Nanggroe Aceh Darussalam\"\nmsgstr \"\"\n\n#: id/id_choices.py:67\nmsgid \"Kepulauan Bangka Belitung\"\nmsgstr \"\"\n\n#: id/id_choices.py:69\nmsgid \"Corps Consulate\"\nmsgstr \"\"\n\n#: id/id_choices.py:70\nmsgid \"Corps Diplomatic\"\nmsgstr \"\"\n\n#: id/id_choices.py:71\nmsgid \"Bandung\"\nmsgstr \"\"\n\n#: id/id_choices.py:73\nmsgid \"Sulawesi Utara Daratan\"\nmsgstr \"\"\n\n#: id/id_choices.py:78\nmsgid \"NTT - Timor\"\nmsgstr \"\"\n\n#: id/id_choices.py:80\nmsgid \"Sulawesi Utara Kepulauan\"\nmsgstr \"\"\n\n#: id/id_choices.py:83\nmsgid \"NTB - Lombok\"\nmsgstr \"\"\n\n#: id/id_choices.py:84\nmsgid \"Papua dan Papua Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:86\nmsgid \"Cirebon\"\nmsgstr \"\"\n\n#: id/id_choices.py:87\nmsgid \"NTB - Sumbawa\"\nmsgstr \"\"\n\n#: id/id_choices.py:88\nmsgid \"NTT - Flores\"\nmsgstr \"\"\n\n#: id/id_choices.py:89\nmsgid \"NTT - Sumba\"\nmsgstr \"\"\n\n#: id/id_choices.py:90\nmsgid \"Bogor\"\nmsgstr \"\"\n\n#: id/id_choices.py:91\nmsgid \"Pekalongan\"\nmsgstr \"\"\n\n#: id/id_choices.py:92\nmsgid \"Semarang\"\nmsgstr \"\"\n\n#: id/id_choices.py:93\nmsgid \"Pati\"\nmsgstr \"\"\n\n#: id/id_choices.py:97\nmsgid \"Surabaya\"\nmsgstr \"\"\n\n#: id/id_choices.py:98\nmsgid \"Madura\"\nmsgstr \"\"\n\n#: id/id_choices.py:99\nmsgid \"Malang\"\nmsgstr \"\"\n\n#: id/id_choices.py:100\nmsgid \"Jember\"\nmsgstr \"\"\n\n#: id/id_choices.py:101\nmsgid \"Banyumas\"\nmsgstr \"\"\n\n#: id/id_choices.py:102\nmsgid \"Federal Government\"\nmsgstr \"\"\n\n#: id/id_choices.py:103\nmsgid \"Bojonegoro\"\nmsgstr \"\"\n\n#: id/id_choices.py:104\nmsgid \"Purwakarta\"\nmsgstr \"\"\n\n#: id/id_choices.py:105\nmsgid \"Sidoarjo\"\nmsgstr \"\"\n\n#: id/id_choices.py:106\nmsgid \"Garut\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:8\nmsgid \"Antrim\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:9\nmsgid \"Armagh\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:10\nmsgid \"Carlow\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:11\nmsgid \"Cavan\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:12\nmsgid \"Clare\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:13\nmsgid \"Cork\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:14\nmsgid \"Derry\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:15\nmsgid \"Donegal\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:16\nmsgid \"Down\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:17\nmsgid \"Dublin\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:18\nmsgid \"Fermanagh\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:19\nmsgid \"Galway\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:20\nmsgid \"Kerry\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:21\nmsgid \"Kildare\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:22\nmsgid \"Kilkenny\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:23\nmsgid \"Laois\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:24\nmsgid \"Leitrim\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:25\nmsgid \"Limerick\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:26\nmsgid \"Longford\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:27\nmsgid \"Louth\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:28\nmsgid \"Mayo\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:29\nmsgid \"Meath\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:30\nmsgid \"Monaghan\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:31\nmsgid \"Offaly\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:32\nmsgid \"Roscommon\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:33\nmsgid \"Sligo\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:34\nmsgid \"Tipperary\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:35\nmsgid \"Tyrone\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:36\nmsgid \"Waterford\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:37\nmsgid \"Westmeath\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:38\nmsgid \"Wexford\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:39\nmsgid \"Wicklow\"\nmsgstr \"\"\n\n#: il/forms.py:32\nmsgid \"Enter a postal code in the format XXXXX\"\nmsgstr \"\"\n\n#: il/forms.py:51\nmsgid \"Enter a valid ID number.\"\nmsgstr \"\"\n\n#: in_/forms.py:41\nmsgid \"Enter a zip code in the format XXXXXX or XXX XXX.\"\nmsgstr \"\"\n\n#: in_/forms.py:64\nmsgid \"Enter an Indian state or territory.\"\nmsgstr \"\"\n\n#: in_/forms.py:103\nmsgid \"Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.\"\nmsgstr \"\"\n\n#: is_/forms.py:22\nmsgid \"\"\n\"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.\"\nmsgstr \"\"\n\n#: is_/forms.py:23\nmsgid \"The Icelandic identification number is not valid.\"\nmsgstr \"\"\n\n#: it/forms.py:21\nmsgid \"Enter a valid zip code.\"\nmsgstr \"\"\n\n#: it/forms.py:48\nmsgid \"Enter a valid Social Security number.\"\nmsgstr \"\"\n\n#: it/forms.py:73\nmsgid \"Enter a valid VAT number.\"\nmsgstr \"\"\n\n#: jp/forms.py:19\nmsgid \"Enter a postal code in the format XXXXXXX or XXX-XXXX.\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:4\nmsgid \"Hokkaido\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:5\nmsgid \"Aomori\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:6\nmsgid \"Iwate\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:7\nmsgid \"Miyagi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:8\nmsgid \"Akita\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:9\nmsgid \"Yamagata\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:10\nmsgid \"Fukushima\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:11\nmsgid \"Ibaraki\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:12\nmsgid \"Tochigi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:13\nmsgid \"Gunma\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:14\nmsgid \"Saitama\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:15\nmsgid \"Chiba\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:16\nmsgid \"Tokyo\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:17\nmsgid \"Kanagawa\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:18\nmsgid \"Yamanashi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:19\nmsgid \"Nagano\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:20\nmsgid \"Niigata\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:21\nmsgid \"Toyama\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:22\nmsgid \"Ishikawa\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:23\nmsgid \"Fukui\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:24\nmsgid \"Gifu\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:25\nmsgid \"Shizuoka\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:26\nmsgid \"Aichi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:27\nmsgid \"Mie\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:28\nmsgid \"Shiga\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:29\nmsgid \"Kyoto\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:30\nmsgid \"Osaka\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:31\nmsgid \"Hyogo\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:32\nmsgid \"Nara\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:33\nmsgid \"Wakayama\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:34\nmsgid \"Tottori\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:35\nmsgid \"Shimane\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:36\nmsgid \"Okayama\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:37\nmsgid \"Hiroshima\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:38\nmsgid \"Yamaguchi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:39\nmsgid \"Tokushima\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:40\nmsgid \"Kagawa\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:41\nmsgid \"Ehime\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:42\nmsgid \"Kochi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:43\nmsgid \"Fukuoka\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:44\nmsgid \"Saga\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:45\nmsgid \"Nagasaki\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:46\nmsgid \"Kumamoto\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:47\nmsgid \"Oita\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:48\nmsgid \"Miyazaki\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:49\nmsgid \"Kagoshima\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:50\nmsgid \"Okinawa\"\nmsgstr \"\"\n\n#: kw/forms.py:27\nmsgid \"Enter a valid Kuwaiti Civil ID number\"\nmsgstr \"\"\n\n#: mk/forms.py:18\nmsgid \"\"\n\"Identity card numbers must contain either 4 to 7 digits or an uppercase \"\n\"letter and 7 digits.\"\nmsgstr \"\"\n\n#: mk/forms.py:57 si/forms.py:24\nmsgid \"This field should contain exactly 13 digits.\"\nmsgstr \"\"\n\n#: mk/forms.py:58\nmsgid \"The first 7 digits of the UMCN must represent a valid past date.\"\nmsgstr \"\"\n\n#: mk/forms.py:59\nmsgid \"The UMCN is not valid.\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:10\nmsgid \"Aerodrom\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:11\nmsgid \"Aračinovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:12\nmsgid \"Berovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:13\nmsgid \"Bitola\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:14\nmsgid \"Bogdanci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:15\nmsgid \"Bogovinje\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:16\nmsgid \"Bosilovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:17\nmsgid \"Brvenica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:18\nmsgid \"Butel\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:19\nmsgid \"Valandovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:20\nmsgid \"Vasilevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:21\nmsgid \"Vevčani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:22\nmsgid \"Veles\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:23\nmsgid \"Vinica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:24\nmsgid \"Vraneštica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:25\nmsgid \"Vrapčište\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:26\nmsgid \"Gazi Baba\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:27\nmsgid \"Gevgelija\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:28\nmsgid \"Gostivar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:29\nmsgid \"Gradsko\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:30\nmsgid \"Debar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:31\nmsgid \"Debarca\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:32\nmsgid \"Delčevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:33\nmsgid \"Demir Kapija\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:34\nmsgid \"Demir Hisar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:35\nmsgid \"Dolneni\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:36\nmsgid \"Drugovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:37\nmsgid \"Gjorče Petrov\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:38\nmsgid \"Želino\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:39\nmsgid \"Zajas\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:40\nmsgid \"Zelenikovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:41\nmsgid \"Zrnovci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:42\nmsgid \"Ilinden\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:43\nmsgid \"Jegunovce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:44\nmsgid \"Kavadarci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:45\nmsgid \"Karbinci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:46\nmsgid \"Karpoš\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:47\nmsgid \"Kisela Voda\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:48\nmsgid \"Kičevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:49\nmsgid \"Konče\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:50\nmsgid \"Koćani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:51\nmsgid \"Kratovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:52\nmsgid \"Kriva Palanka\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:53\nmsgid \"Krivogaštani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:54\nmsgid \"Kruševo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:55\nmsgid \"Kumanovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:56\nmsgid \"Lipkovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:57\nmsgid \"Lozovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:58\nmsgid \"Mavrovo i Rostuša\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:59\nmsgid \"Makedonska Kamenica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:60\nmsgid \"Makedonski Brod\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:61\nmsgid \"Mogila\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:62\nmsgid \"Negotino\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:63\nmsgid \"Novaci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:64\nmsgid \"Novo Selo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:65\nmsgid \"Oslomej\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:66\nmsgid \"Ohrid\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:67\nmsgid \"Petrovec\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:68\nmsgid \"Pehčevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:69\nmsgid \"Plasnica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:70\nmsgid \"Prilep\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:71\nmsgid \"Probištip\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:72\nmsgid \"Radoviš\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:73\nmsgid \"Rankovce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:74\nmsgid \"Resen\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:75\nmsgid \"Rosoman\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:76\nmsgid \"Saraj\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:77\nmsgid \"Sveti Nikole\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:78\nmsgid \"Sopište\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:79\nmsgid \"Star Dojran\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:80\nmsgid \"Staro Nagoričane\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:81\nmsgid \"Struga\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:82\nmsgid \"Strumica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:83\nmsgid \"Studeničani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:84\nmsgid \"Tearce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:85\nmsgid \"Tetovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:86\nmsgid \"Centar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:87\nmsgid \"Centar-Župa\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:88\nmsgid \"Čair\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:89\nmsgid \"Čaška\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:90\nmsgid \"Češinovo-Obleševo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:91\nmsgid \"Čučer-Sandevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:92\nmsgid \"Štip\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:93\nmsgid \"Šuto Orizari\"\nmsgstr \"\"\n\n#: mk/models.py:11\nmsgid \"Macedonian identity card number\"\nmsgstr \"\"\n\n#: mk/models.py:25\nmsgid \"A Macedonian municipality (2 character code)\"\nmsgstr \"\"\n\n#: mk/models.py:35\nmsgid \"Unique master citizen number (13 digits)\"\nmsgstr \"\"\n\n#: mx/forms.py:67\nmsgid \"Enter a valid zip code in the format XXXXX.\"\nmsgstr \"\"\n\n#: mx/forms.py:110\nmsgid \"Enter a valid RFC.\"\nmsgstr \"\"\n\n#: mx/forms.py:111\nmsgid \"Invalid checksum for RFC.\"\nmsgstr \"\"\n\n#: mx/forms.py:191\nmsgid \"Enter a valid CURP.\"\nmsgstr \"\"\n\n#: mx/forms.py:192\nmsgid \"Invalid checksum for CURP.\"\nmsgstr \"\"\n\n#: mx/models.py:14\nmsgid \"Mexico state (three uppercase letters)\"\nmsgstr \"\"\n\n#: mx/models.py:27\nmsgid \"Mexico zip code\"\nmsgstr \"\"\n\n#: mx/models.py:44\nmsgid \"Mexican RFC\"\nmsgstr \"\"\n\n#: mx/models.py:61\nmsgid \"Mexican CURP\"\nmsgstr \"\"\n\n#: mx/mx_states.py:14\nmsgid \"Aguascalientes\"\nmsgstr \"\"\n\n#: mx/mx_states.py:15\nmsgid \"Baja California\"\nmsgstr \"\"\n\n#: mx/mx_states.py:16\nmsgid \"Baja California Sur\"\nmsgstr \"\"\n\n#: mx/mx_states.py:17\nmsgid \"Campeche\"\nmsgstr \"\"\n\n#: mx/mx_states.py:18\nmsgid \"Chihuahua\"\nmsgstr \"\"\n\n#: mx/mx_states.py:19\nmsgid \"Chiapas\"\nmsgstr \"\"\n\n#: mx/mx_states.py:20\nmsgid \"Coahuila\"\nmsgstr \"\"\n\n#: mx/mx_states.py:21\nmsgid \"Colima\"\nmsgstr \"\"\n\n#: mx/mx_states.py:22\nmsgid \"Distrito Federal\"\nmsgstr \"\"\n\n#: mx/mx_states.py:23\nmsgid \"Durango\"\nmsgstr \"\"\n\n#: mx/mx_states.py:24\nmsgid \"Guerrero\"\nmsgstr \"\"\n\n#: mx/mx_states.py:25\nmsgid \"Guanajuato\"\nmsgstr \"\"\n\n#: mx/mx_states.py:26\nmsgid \"Hidalgo\"\nmsgstr \"\"\n\n#: mx/mx_states.py:27\nmsgid \"Jalisco\"\nmsgstr \"\"\n\n#: mx/mx_states.py:28\nmsgid \"Estado de México\"\nmsgstr \"\"\n\n#: mx/mx_states.py:29\nmsgid \"Michoacán\"\nmsgstr \"\"\n\n#: mx/mx_states.py:30\nmsgid \"Morelos\"\nmsgstr \"\"\n\n#: mx/mx_states.py:31\nmsgid \"Nayarit\"\nmsgstr \"\"\n\n#: mx/mx_states.py:32\nmsgid \"Nuevo León\"\nmsgstr \"\"\n\n#: mx/mx_states.py:33\nmsgid \"Oaxaca\"\nmsgstr \"\"\n\n#: mx/mx_states.py:34\nmsgid \"Puebla\"\nmsgstr \"\"\n\n#: mx/mx_states.py:35\nmsgid \"Querétaro\"\nmsgstr \"\"\n\n#: mx/mx_states.py:36\nmsgid \"Quintana Roo\"\nmsgstr \"\"\n\n#: mx/mx_states.py:37\nmsgid \"Sinaloa\"\nmsgstr \"\"\n\n#: mx/mx_states.py:38\nmsgid \"San Luis Potosí\"\nmsgstr \"\"\n\n#: mx/mx_states.py:39\nmsgid \"Sonora\"\nmsgstr \"\"\n\n#: mx/mx_states.py:40\nmsgid \"Tabasco\"\nmsgstr \"\"\n\n#: mx/mx_states.py:41\nmsgid \"Tamaulipas\"\nmsgstr \"\"\n\n#: mx/mx_states.py:42\nmsgid \"Tlaxcala\"\nmsgstr \"\"\n\n#: mx/mx_states.py:43\nmsgid \"Veracruz\"\nmsgstr \"\"\n\n#: mx/mx_states.py:44\nmsgid \"Yucatán\"\nmsgstr \"\"\n\n#: mx/mx_states.py:45\nmsgid \"Zacatecas\"\nmsgstr \"\"\n\n#: nl/forms.py:26\nmsgid \"Enter a valid postal code\"\nmsgstr \"\"\n\n#: nl/forms.py:82\nmsgid \"Enter a valid SoFi number\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:4\nmsgid \"Drenthe\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:5\nmsgid \"Flevoland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:6\nmsgid \"Friesland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:7\nmsgid \"Gelderland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:8\nmsgid \"Groningen\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:10\nmsgid \"Noord-Brabant\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:11\nmsgid \"Noord-Holland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:12\nmsgid \"Overijssel\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:13\nmsgid \"Utrecht\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:14\nmsgid \"Zeeland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:15\nmsgid \"Zuid-Holland\"\nmsgstr \"\"\n\n#: no/forms.py:39\nmsgid \"Enter a valid Norwegian social security number.\"\nmsgstr \"\"\n\n#: pe/forms.py:28\nmsgid \"This field requires 8 digits.\"\nmsgstr \"\"\n\n#: pe/forms.py:56\nmsgid \"This field requires 11 digits.\"\nmsgstr \"\"\n\n#: pl/forms.py:42\nmsgid \"National Identification Number consists of 11 digits.\"\nmsgstr \"\"\n\n#: pl/forms.py:43\nmsgid \"Wrong checksum for the National Identification Number.\"\nmsgstr \"\"\n\n#: pl/forms.py:79\nmsgid \"National ID Card Number consists of 3 letters and 6 digits.\"\nmsgstr \"\"\n\n#: pl/forms.py:80\nmsgid \"Wrong checksum for the National ID Card Number.\"\nmsgstr \"\"\n\n#: pl/forms.py:131\nmsgid \"\"\n\"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or \"\n\"XXXXXXXXXX.\"\nmsgstr \"\"\n\n#: pl/forms.py:132\nmsgid \"Wrong checksum for the Tax Number (NIP).\"\nmsgstr \"\"\n\n#: pl/forms.py:171\nmsgid \"National Business Register Number (REGON) consists of 9 or 14 digits.\"\nmsgstr \"\"\n\n#: pl/forms.py:172\nmsgid \"Wrong checksum for the National Business Register Number (REGON).\"\nmsgstr \"\"\n\n#: pl/forms.py:212\nmsgid \"Enter a postal code in the format XX-XXX.\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:8\nmsgid \"Lower Silesia\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:9\nmsgid \"Kuyavia-Pomerania\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:10\nmsgid \"Lublin\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:11\nmsgid \"Lubusz\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:12\nmsgid \"Lodz\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:13\nmsgid \"Lesser Poland\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:14\nmsgid \"Masovia\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:15\nmsgid \"Opole\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:16\nmsgid \"Subcarpatia\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:17\nmsgid \"Podlasie\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:18\nmsgid \"Pomerania\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:19\nmsgid \"Silesia\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:20\nmsgid \"Swietokrzyskie\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:21\nmsgid \"Warmia-Masuria\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:22\nmsgid \"Greater Poland\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:23\nmsgid \"West Pomerania\"\nmsgstr \"\"\n\n#: pt/forms.py:19\nmsgid \"Enter a zip code in the format XXXX-XXX.\"\nmsgstr \"\"\n\n#: pt/forms.py:39\nmsgid \"Phone numbers must have 9 digits, or start by + or 00.\"\nmsgstr \"\"\n\n#: ro/forms.py:22\nmsgid \"Enter a valid CIF.\"\nmsgstr \"\"\n\n#: ro/forms.py:59\nmsgid \"Enter a valid CNP.\"\nmsgstr \"\"\n\n#: ro/forms.py:143\nmsgid \"Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format\"\nmsgstr \"\"\n\n#: ro/forms.py:175\nmsgid \"Phone numbers must be in XXXX-XXXXXX format.\"\nmsgstr \"\"\n\n#: ro/forms.py:200\nmsgid \"Enter a valid postal code in the format XXXXXX\"\nmsgstr \"\"\n\n#: ru/forms.py:37\nmsgid \"Enter a postal code in the format XXXXXX.\"\nmsgstr \"\"\n\n#: ru/forms.py:50\nmsgid \"Enter a passport number in the format XXXX XXXXXX.\"\nmsgstr \"\"\n\n#: ru/forms.py:63\nmsgid \"Enter a passport number in the format XX XXXXXXX.\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:10\nmsgid \"Central Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:11\nmsgid \"South Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:12\nmsgid \"North-West Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:13\nmsgid \"Far-East Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:14\nmsgid \"Siberian Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:15\nmsgid \"Ural Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:16\nmsgid \"Privolzhsky Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:17\nmsgid \"North-Caucasian Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:21\nmsgid \"Moskva\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:22\nmsgid \"Saint-Peterburg\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:23\nmsgid \"Moskovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:24\nmsgid \"Adygeya, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:25\nmsgid \"Bashkortostan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:26\nmsgid \"Buryatia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:27\nmsgid \"Altay, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:28\nmsgid \"Dagestan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:29\nmsgid \"Ingushskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:30\nmsgid \"Kabardino-Balkarskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:31\nmsgid \"Kalmykia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:32\nmsgid \"Karachaevo-Cherkesskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:33\nmsgid \"Karelia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:34\nmsgid \"Komi, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:35\nmsgid \"Mariy Ehl, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:36\nmsgid \"Mordovia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:37\nmsgid \"Sakha, Respublika (Yakutiya)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:38\nmsgid \"Severnaya Osetia, Respublika (Alania)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:39\nmsgid \"Tatarstan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:40\nmsgid \"Tyva, Respublika (Tuva)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:41\nmsgid \"Udmurtskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:42\nmsgid \"Khakassiya, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:43\nmsgid \"Chechenskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:44\nmsgid \"Chuvashskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:45\nmsgid \"Altayskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:46\nmsgid \"Zabaykalskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:47\nmsgid \"Kamchatskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:48\nmsgid \"Krasnodarskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:49\nmsgid \"Krasnoyarskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:50\nmsgid \"Permskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:51\nmsgid \"Primorskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:52\nmsgid \"Stavropol'siyy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:53\nmsgid \"Khabarovskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:54\nmsgid \"Amurskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:55\nmsgid \"Arkhangel'skaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:56\nmsgid \"Astrakhanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:57\nmsgid \"Belgorodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:58\nmsgid \"Bryanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:59\nmsgid \"Vladimirskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:60\nmsgid \"Volgogradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:61\nmsgid \"Vologodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:62\nmsgid \"Voronezhskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:63\nmsgid \"Ivanovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:64\nmsgid \"Irkutskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:65\nmsgid \"Kaliningradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:66\nmsgid \"Kaluzhskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:67\nmsgid \"Kemerovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:68\nmsgid \"Kirovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:69\nmsgid \"Kostromskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:70\nmsgid \"Kurganskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:71\nmsgid \"Kurskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:72\nmsgid \"Leningradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:73\nmsgid \"Lipeckaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:74\nmsgid \"Magadanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:75\nmsgid \"Murmanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:76\nmsgid \"Nizhegorodskaja oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:77\nmsgid \"Novgorodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:78\nmsgid \"Novosibirskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:79\nmsgid \"Omskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:80\nmsgid \"Orenburgskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:81\nmsgid \"Orlovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:82\nmsgid \"Penzenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:83\nmsgid \"Pskovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:84\nmsgid \"Rostovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:85\nmsgid \"Rjazanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:86\nmsgid \"Samarskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:87\nmsgid \"Saratovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:88\nmsgid \"Sakhalinskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:89\nmsgid \"Sverdlovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:90\nmsgid \"Smolenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:91\nmsgid \"Tambovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:92\nmsgid \"Tverskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:93\nmsgid \"Tomskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:94\nmsgid \"Tul'skaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:95\nmsgid \"Tyumenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:96\nmsgid \"Ul'ianovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:97\nmsgid \"Chelyabinskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:98\nmsgid \"Yaroslavskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:99\nmsgid \"Evreyskaya avtonomnaja oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:100\nmsgid \"Neneckiy autonomnyy okrug\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:101\nmsgid \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:102\nmsgid \"Chukotskiy avtonomnyy okrug\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:103\nmsgid \"Yamalo-Neneckiy avtonomnyy okrug\"\nmsgstr \"\"\n\n#: se/forms.py:54\nmsgid \"Enter a valid Swedish organisation number.\"\nmsgstr \"\"\n\n#: se/forms.py:111\nmsgid \"Enter a valid Swedish personal identity number.\"\nmsgstr \"\"\n\n#: se/forms.py:112\nmsgid \"Co-ordination numbers are not allowed.\"\nmsgstr \"\"\n\n#: se/forms.py:154\nmsgid \"Enter a Swedish postal code in the format XXXXX.\"\nmsgstr \"\"\n\n#: se/se_counties.py:16\nmsgid \"Stockholm\"\nmsgstr \"\"\n\n#: se/se_counties.py:17\nmsgid \"Västerbotten\"\nmsgstr \"\"\n\n#: se/se_counties.py:18\nmsgid \"Norrbotten\"\nmsgstr \"\"\n\n#: se/se_counties.py:19\nmsgid \"Uppsala\"\nmsgstr \"\"\n\n#: se/se_counties.py:20\nmsgid \"Södermanland\"\nmsgstr \"\"\n\n#: se/se_counties.py:21\nmsgid \"Östergötland\"\nmsgstr \"\"\n\n#: se/se_counties.py:22\nmsgid \"Jönköping\"\nmsgstr \"\"\n\n#: se/se_counties.py:23\nmsgid \"Kronoberg\"\nmsgstr \"\"\n\n#: se/se_counties.py:24\nmsgid \"Kalmar\"\nmsgstr \"\"\n\n#: se/se_counties.py:25\nmsgid \"Gotland\"\nmsgstr \"\"\n\n#: se/se_counties.py:26\nmsgid \"Blekinge\"\nmsgstr \"\"\n\n#: se/se_counties.py:27\nmsgid \"Skåne\"\nmsgstr \"\"\n\n#: se/se_counties.py:28\nmsgid \"Halland\"\nmsgstr \"\"\n\n#: se/se_counties.py:29\nmsgid \"Västra Götaland\"\nmsgstr \"\"\n\n#: se/se_counties.py:30\nmsgid \"Värmland\"\nmsgstr \"\"\n\n#: se/se_counties.py:31\nmsgid \"Örebro\"\nmsgstr \"\"\n\n#: se/se_counties.py:32\nmsgid \"Västmanland\"\nmsgstr \"\"\n\n#: se/se_counties.py:33\nmsgid \"Dalarna\"\nmsgstr \"\"\n\n#: se/se_counties.py:34\nmsgid \"Gävleborg\"\nmsgstr \"\"\n\n#: se/se_counties.py:35\nmsgid \"Västernorrland\"\nmsgstr \"\"\n\n#: se/se_counties.py:36\nmsgid \"Jämtland\"\nmsgstr \"\"\n\n#: si/forms.py:25\nmsgid \"The first 7 digits of the EMSO must represent a valid past date.\"\nmsgstr \"\"\n\n#: si/forms.py:26\nmsgid \"The EMSO is not valid.\"\nmsgstr \"\"\n\n#: si/forms.py:86\nmsgid \"Enter a valid tax number in form SIXXXXXXXX\"\nmsgstr \"\"\n\n#: si/forms.py:151\nmsgid \"Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:8\nmsgid \"Banska Bystrica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:9\nmsgid \"Banska Stiavnica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:10\nmsgid \"Bardejov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:11\nmsgid \"Banovce nad Bebravou\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:12\nmsgid \"Brezno\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:13\nmsgid \"Bratislava I\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:14\nmsgid \"Bratislava II\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:15\nmsgid \"Bratislava III\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:16\nmsgid \"Bratislava IV\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:17\nmsgid \"Bratislava V\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:18\nmsgid \"Bytca\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:19\nmsgid \"Cadca\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:20\nmsgid \"Detva\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:21\nmsgid \"Dolny Kubin\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:22\nmsgid \"Dunajska Streda\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:23\nmsgid \"Galanta\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:24\nmsgid \"Gelnica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:25\nmsgid \"Hlohovec\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:26\nmsgid \"Humenne\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:27\nmsgid \"Ilava\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:28\nmsgid \"Kezmarok\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:29\nmsgid \"Komarno\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:30\nmsgid \"Kosice I\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:31\nmsgid \"Kosice II\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:32\nmsgid \"Kosice III\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:33\nmsgid \"Kosice IV\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:34\nmsgid \"Kosice - okolie\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:35\nmsgid \"Krupina\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:36\nmsgid \"Kysucke Nove Mesto\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:37\nmsgid \"Levice\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:38\nmsgid \"Levoca\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:39\nmsgid \"Liptovsky Mikulas\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:40\nmsgid \"Lucenec\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:41\nmsgid \"Malacky\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:42\nmsgid \"Martin\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:43\nmsgid \"Medzilaborce\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:44\nmsgid \"Michalovce\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:45\nmsgid \"Myjava\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:46\nmsgid \"Namestovo\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:47\nmsgid \"Nitra\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:48\nmsgid \"Nove Mesto nad Vahom\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:49\nmsgid \"Nove Zamky\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:50\nmsgid \"Partizanske\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:51\nmsgid \"Pezinok\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:52\nmsgid \"Piestany\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:53\nmsgid \"Poltar\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:54\nmsgid \"Poprad\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:55\nmsgid \"Povazska Bystrica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:56\nmsgid \"Presov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:57\nmsgid \"Prievidza\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:58\nmsgid \"Puchov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:59\nmsgid \"Revuca\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:60\nmsgid \"Rimavska Sobota\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:61\nmsgid \"Roznava\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:62\nmsgid \"Ruzomberok\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:63\nmsgid \"Sabinov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:64\nmsgid \"Senec\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:65\nmsgid \"Senica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:66\nmsgid \"Skalica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:67\nmsgid \"Snina\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:68\nmsgid \"Sobrance\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:69\nmsgid \"Spisska Nova Ves\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:70\nmsgid \"Stara Lubovna\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:71\nmsgid \"Stropkov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:72\nmsgid \"Svidnik\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:73\nmsgid \"Sala\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:74\nmsgid \"Topolcany\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:75\nmsgid \"Trebisov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:76\nmsgid \"Trencin\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:77\nmsgid \"Trnava\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:78\nmsgid \"Turcianske Teplice\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:79\nmsgid \"Tvrdosin\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:80\nmsgid \"Velky Krtis\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:81\nmsgid \"Vranov nad Toplou\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:82\nmsgid \"Zlate Moravce\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:83\nmsgid \"Zvolen\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:84\nmsgid \"Zarnovica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:85\nmsgid \"Ziar nad Hronom\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:86\nmsgid \"Zilina\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:8\nmsgid \"Banska Bystrica region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:9\nmsgid \"Bratislava region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:10\nmsgid \"Kosice region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:11\nmsgid \"Nitra region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:12\nmsgid \"Presov region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:13\nmsgid \"Trencin region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:14\nmsgid \"Trnava region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:15\nmsgid \"Zilina region\"\nmsgstr \"\"\n\n#: tr/forms.py:21\nmsgid \"Enter a postal code in the format XXXXX.\"\nmsgstr \"\"\n\n#: tr/forms.py:42\nmsgid \"Phone numbers must be in 0XXX XXX XXXX format.\"\nmsgstr \"\"\n\n#: tr/forms.py:69\nmsgid \"Enter a valid Turkish Identification number.\"\nmsgstr \"\"\n\n#: tr/forms.py:70\nmsgid \"Turkish Identification number must be 11 digits.\"\nmsgstr \"\"\n\n#: us/forms.py:21\nmsgid \"Enter a zip code in the format XXXXX or XXXXX-XXXX.\"\nmsgstr \"\"\n\n#: us/forms.py:59\nmsgid \"Enter a valid U.S. Social Security number in XXX-XX-XXXX format.\"\nmsgstr \"\"\n\n#: us/forms.py:92\nmsgid \"Enter a U.S. state or territory.\"\nmsgstr \"\"\n\n#: us/models.py:8\nmsgid \"U.S. state (two uppercase letters)\"\nmsgstr \"\"\n\n#: us/models.py:17\nmsgid \"U.S. postal code (two uppercase letters)\"\nmsgstr \"\"\n\n#: us/models.py:26\nmsgid \"Phone number\"\nmsgstr \"\"\n\n#: uy/forms.py:29\nmsgid \"Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.\"\nmsgstr \"\"\n\n#: uy/forms.py:31\nmsgid \"Enter a valid CI number.\"\nmsgstr \"\"\n\n#: za/forms.py:22\nmsgid \"Enter a valid South African ID number\"\nmsgstr \"\"\n\n#: za/forms.py:56\nmsgid \"Enter a valid South African postal code\"\nmsgstr \"\"\n\n#: za/za_provinces.py:4\nmsgid \"Eastern Cape\"\nmsgstr \"\"\n\n#: za/za_provinces.py:5\nmsgid \"Free State\"\nmsgstr \"\"\n\n#: za/za_provinces.py:6\nmsgid \"Gauteng\"\nmsgstr \"\"\n\n#: za/za_provinces.py:7\nmsgid \"KwaZulu-Natal\"\nmsgstr \"\"\n\n#: za/za_provinces.py:8\nmsgid \"Limpopo\"\nmsgstr \"\"\n\n#: za/za_provinces.py:9\nmsgid \"Mpumalanga\"\nmsgstr \"\"\n\n#: za/za_provinces.py:10\nmsgid \"Northern Cape\"\nmsgstr \"\"\n\n#: za/za_provinces.py:11\nmsgid \"North West\"\nmsgstr \"\"\n\n#: za/za_provinces.py:12\nmsgid \"Western Cape\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/locale/id/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# rodin <romihardiyanto@gmail.com>, 2011.\n#   <romihardiyanto@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-10-17 09:27+0000\\n\"\n\"Last-Translator: rodin <romihardiyanto@gmail.com>\\n\"\n\"Language-Team: Indonesian (http://www.transifex.com/projects/p/django/\"\n\"language/id/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: id\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: ar/forms.py:30\nmsgid \"Enter a postal code in the format NNNN or ANNNNAAA.\"\nmsgstr \"Masukkan kode pos dalam format NNNN atau ANNNNAAA.\"\n\n#: ar/forms.py:52 br/forms.py:95 br/forms.py:134 pe/forms.py:27 pe/forms.py:55\nmsgid \"This field requires only numbers.\"\nmsgstr \"Bidang ini hanya membutuhkan isian angka.\"\n\n#: ar/forms.py:53\nmsgid \"This field requires 7 or 8 digits.\"\nmsgstr \"Bidang ini membutuhkan isian sebanyak 7 atau 8 angka.\"\n\n#: ar/forms.py:82\nmsgid \"Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.\"\nmsgstr \"Masukkan CUIT yang valid dalam format XX-XXXXXXXX-X atau XXXXXXXXXXXX.\"\n\n#: ar/forms.py:83\nmsgid \"Invalid CUIT.\"\nmsgstr \"CUIT salah.\"\n\n#: ar/forms.py:84\nmsgid \"Invalid legal type. Type must be 27, 20, 23 or 30.\"\nmsgstr \"Tipe tidak valid. Tipenya harus di antara nilai 27, 20, 23, atau 30.\"\n\n#: at/at_states.py:5\nmsgid \"Burgenland\"\nmsgstr \"Burgenland\"\n\n#: at/at_states.py:6\nmsgid \"Carinthia\"\nmsgstr \"Carinthia\"\n\n#: at/at_states.py:7\nmsgid \"Lower Austria\"\nmsgstr \"Lower Austria\"\n\n#: at/at_states.py:8\nmsgid \"Upper Austria\"\nmsgstr \"Upper Austria\"\n\n#: at/at_states.py:9\nmsgid \"Salzburg\"\nmsgstr \"Salzburg\"\n\n#: at/at_states.py:10\nmsgid \"Styria\"\nmsgstr \"Styria\"\n\n#: at/at_states.py:11\nmsgid \"Tyrol\"\nmsgstr \"Tyrol\"\n\n#: at/at_states.py:12\nmsgid \"Vorarlberg\"\nmsgstr \"Vorarlberg\"\n\n#: at/at_states.py:13\nmsgid \"Vienna\"\nmsgstr \"Wina\"\n\n#: at/forms.py:22 ch/forms.py:22 no/forms.py:19\nmsgid \"Enter a zip code in the format XXXX.\"\nmsgstr \"Masukkan kode pos dalam format XXXX.\"\n\n#: at/forms.py:50\nmsgid \"Enter a valid Austrian Social Security Number in XXXX XXXXXX format.\"\nmsgstr \"\"\n\"Masukkan Nomor Identifikasi Sosial Austria yang valid dalam format XXXX \"\n\"XXXXXX.\"\n\n#: au/forms.py:26\nmsgid \"Enter a 4 digit postcode.\"\nmsgstr \"Masukkan 4 angka kode pos\"\n\n#: au/models.py:9\nmsgid \"Australian State\"\nmsgstr \"Negara Bagian Australia\"\n\n#: au/models.py:19\nmsgid \"Australian Postcode\"\nmsgstr \"Kode pos Australia\"\n\n#: au/models.py:33\nmsgid \"Australian Phone number\"\nmsgstr \"Nomor telepon Australia\"\n\n#: be/be_provinces.py:5\nmsgid \"Antwerp\"\nmsgstr \"Antwerp\"\n\n#: be/be_provinces.py:6\nmsgid \"Brussels\"\nmsgstr \"Brussels\"\n\n#: be/be_provinces.py:7\nmsgid \"East Flanders\"\nmsgstr \"East Flanders\"\n\n#: be/be_provinces.py:8\nmsgid \"Flemish Brabant\"\nmsgstr \"Flemish Brabant\"\n\n#: be/be_provinces.py:9\nmsgid \"Hainaut\"\nmsgstr \"Hainaut\"\n\n#: be/be_provinces.py:10\nmsgid \"Liege\"\nmsgstr \"Liege\"\n\n#: be/be_provinces.py:11 nl/nl_provinces.py:9\nmsgid \"Limburg\"\nmsgstr \"Limburg\"\n\n#: be/be_provinces.py:12\nmsgid \"Luxembourg\"\nmsgstr \"Luksemburg\"\n\n#: be/be_provinces.py:13\nmsgid \"Namur\"\nmsgstr \"Namur\"\n\n#: be/be_provinces.py:14\nmsgid \"Walloon Brabant\"\nmsgstr \"Walloon Brabant\"\n\n#: be/be_provinces.py:15\nmsgid \"West Flanders\"\nmsgstr \"West Flanders\"\n\n#: be/be_regions.py:5\nmsgid \"Brussels Capital Region\"\nmsgstr \"Brussels Capital Region\"\n\n#: be/be_regions.py:6\nmsgid \"Flemish Region\"\nmsgstr \"Flemish Region\"\n\n#: be/be_regions.py:7\nmsgid \"Wallonia\"\nmsgstr \"Wallonia\"\n\n#: be/forms.py:25\nmsgid \"Enter a valid postal code in the range and format 1XXX - 9XXX.\"\nmsgstr \"Masukkan kode pos yang valid dalam rentang dan format 1XXX - 9XXX.\"\n\n#: be/forms.py:48\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\nmsgstr \"\"\n\"Masukkan nomor telepon yang valid dalam salah satu format sebagai berikut: \"\n\"0x xxx xx xx, 0xx xx xx xx, 04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/\"\n\"xx.xx.xx, 0x.xxx.xx.xx, 0xx.xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx, atau \"\n\"04xxxxxxxx.\"\n\n#: br/forms.py:22\nmsgid \"Enter a zip code in the format XXXXX-XXX.\"\nmsgstr \"Masukkan kode pos dalam format XXXXX-XXX.\"\n\n#: br/forms.py:31\nmsgid \"Phone numbers must be in XX-XXXX-XXXX format.\"\nmsgstr \"Nomor telepon harus dalam format XX-XXXX-XXXX.\"\n\n#: br/forms.py:58\nmsgid \"\"\n\"Select a valid brazilian state. That state is not one of the available \"\n\"states.\"\nmsgstr \"\"\n\"Pilih negara bagian Brazil yang valid. Provinsi ini tidak termasuk dalam \"\n\"daftar negara bagian.\"\n\n#: br/forms.py:93\nmsgid \"Invalid CPF number.\"\nmsgstr \"Nomor CPF salah.\"\n\n#: br/forms.py:94\nmsgid \"This field requires at most 11 digits or 14 characters.\"\nmsgstr \"\"\n\"Bidang ini hanya membutuhkan isian paling banyak 11 angka atau 14 huruf.\"\n\n#: br/forms.py:133\nmsgid \"Invalid CNPJ number.\"\nmsgstr \"Nomor CNPJ salah.\"\n\n#: br/forms.py:135\nmsgid \"This field requires at least 14 digits\"\nmsgstr \"Bidang ini membutuhkan sedikitnya 14 angka\"\n\n#: ca/forms.py:29\nmsgid \"Enter a postal code in the format XXX XXX.\"\nmsgstr \"Masukkan kode pos dalam format XXX XXX.\"\n\n#: ca/forms.py:47 us/forms.py:30\nmsgid \"Phone numbers must be in XXX-XXX-XXXX format.\"\nmsgstr \"Nomor telepon harus dalam format XXX-XXX-XXXX.\"\n\n#: ca/forms.py:69\nmsgid \"Enter a Canadian province or territory.\"\nmsgstr \"Masukkan wilayah atau provinsi Kanada.\"\n\n#: ca/forms.py:110\nmsgid \"Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.\"\nmsgstr \"\"\n\"Masukkan nomor Asuransi Sosial Kanada yang valid dalam format XXX-XXX-XXX.\"\n\n#: ch/ch_states.py:5\nmsgid \"Aargau\"\nmsgstr \"Aargau\"\n\n#: ch/ch_states.py:6\nmsgid \"Appenzell Innerrhoden\"\nmsgstr \"Appenzell Innerrhoden\"\n\n#: ch/ch_states.py:7\nmsgid \"Appenzell Ausserrhoden\"\nmsgstr \"Appenzell Ausserrhoden\"\n\n#: ch/ch_states.py:8\nmsgid \"Basel-Stadt\"\nmsgstr \"Basel-Stadt\"\n\n#: ch/ch_states.py:9\nmsgid \"Basel-Land\"\nmsgstr \"Basel-Land\"\n\n#: ch/ch_states.py:10\nmsgid \"Berne\"\nmsgstr \"Berne\"\n\n#: ch/ch_states.py:11\nmsgid \"Fribourg\"\nmsgstr \"Fribourg\"\n\n#: ch/ch_states.py:12\nmsgid \"Geneva\"\nmsgstr \"Geneva\"\n\n#: ch/ch_states.py:13\nmsgid \"Glarus\"\nmsgstr \"Glarus\"\n\n#: ch/ch_states.py:14\nmsgid \"Graubuenden\"\nmsgstr \"Graubuenden\"\n\n#: ch/ch_states.py:15\nmsgid \"Jura\"\nmsgstr \"Jura\"\n\n#: ch/ch_states.py:16\nmsgid \"Lucerne\"\nmsgstr \"Lucerne\"\n\n#: ch/ch_states.py:17\nmsgid \"Neuchatel\"\nmsgstr \"Neuchatel\"\n\n#: ch/ch_states.py:18\nmsgid \"Nidwalden\"\nmsgstr \"Nidwalden\"\n\n#: ch/ch_states.py:19\nmsgid \"Obwalden\"\nmsgstr \"Obwalden\"\n\n#: ch/ch_states.py:20\nmsgid \"Schaffhausen\"\nmsgstr \"Schaffhausen\"\n\n#: ch/ch_states.py:21\nmsgid \"Schwyz\"\nmsgstr \"Schwyz\"\n\n#: ch/ch_states.py:22\nmsgid \"Solothurn\"\nmsgstr \"Solothurn\"\n\n#: ch/ch_states.py:23\nmsgid \"St. Gallen\"\nmsgstr \"St. Gallen\"\n\n#: ch/ch_states.py:24\nmsgid \"Thurgau\"\nmsgstr \"Thurgau\"\n\n#: ch/ch_states.py:25\nmsgid \"Ticino\"\nmsgstr \"Ticino\"\n\n#: ch/ch_states.py:26\nmsgid \"Uri\"\nmsgstr \"Uri\"\n\n#: ch/ch_states.py:27\nmsgid \"Valais\"\nmsgstr \"Valais\"\n\n#: ch/ch_states.py:28\nmsgid \"Vaud\"\nmsgstr \"Vaud\"\n\n#: ch/ch_states.py:29\nmsgid \"Zug\"\nmsgstr \"Zug\"\n\n#: ch/ch_states.py:30\nmsgid \"Zurich\"\nmsgstr \"Zurich\"\n\n#: ch/forms.py:37\nmsgid \"Phone numbers must be in 0XX XXX XX XX format.\"\nmsgstr \"Nomor telepon harus dalam format 0XX XXX XX XX.\"\n\n#: ch/forms.py:68\nmsgid \"\"\n\"Enter a valid Swiss identity or passport card number in X1234567<0 or \"\n\"1234567890 format.\"\nmsgstr \"\"\n\"Masukkan identitas atau nomor paspor Swiss yang valid dalam bentuk \"\n\"X1234567<0 atau 1234567890.\"\n\n#: cl/forms.py:32\nmsgid \"Enter a valid Chilean RUT.\"\nmsgstr \"Masukkan RUT Chile yang valid.\"\n\n#: cl/forms.py:33\nmsgid \"Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.\"\nmsgstr \"Masukkan RUT Chile yang valid. Formatnya adalah XX.XXX.XXX-X.\"\n\n#: cl/forms.py:34\nmsgid \"The Chilean RUT is not valid.\"\nmsgstr \"RUT Chile salah.\"\n\n#: cn/forms.py:84\nmsgid \"Enter a post code in the format XXXXXX.\"\nmsgstr \"Masukkan angka kode pos dalam format XXXXXX\"\n\n#: cn/forms.py:105\nmsgid \"ID Card Number consists of 15 or 18 digits.\"\nmsgstr \"Nomor Kartu ID terdiri dari 15 atau 18 angka.\"\n\n#: cn/forms.py:106\nmsgid \"Invalid ID Card Number: Wrong checksum\"\nmsgstr \"Nomor Kartu ID tidak valid: Ceksum salah\"\n\n#: cn/forms.py:107\nmsgid \"Invalid ID Card Number: Wrong birthdate\"\nmsgstr \"Nomor Kartu ID tidak valid: Tanggal lahir salah\"\n\n#: cn/forms.py:108\nmsgid \"Invalid ID Card Number: Wrong location code\"\nmsgstr \"Nomor Kartu ID tidak valid: Kode lokasi salah\"\n\n#: cn/forms.py:193\nmsgid \"Enter a valid phone number.\"\nmsgstr \"Masukkan nomor telepon yang valid.\"\n\n#: cn/forms.py:210\nmsgid \"Enter a valid cell number.\"\nmsgstr \"Masukkan nomor ponsel yang valid.\"\n\n#: cz/cz_regions.py:8\nmsgid \"Prague\"\nmsgstr \"Praha\"\n\n#: cz/cz_regions.py:9\nmsgid \"Central Bohemian Region\"\nmsgstr \"Daerah Bohemia Tengah\"\n\n#: cz/cz_regions.py:10\nmsgid \"South Bohemian Region\"\nmsgstr \"Daerah Bohemia Selatan\"\n\n#: cz/cz_regions.py:11\nmsgid \"Pilsen Region\"\nmsgstr \"Daerah Pilsen\"\n\n#: cz/cz_regions.py:12\nmsgid \"Carlsbad Region\"\nmsgstr \"Daerah Carlsbad\"\n\n#: cz/cz_regions.py:13\nmsgid \"Usti Region\"\nmsgstr \"Daerah Usti\"\n\n#: cz/cz_regions.py:14\nmsgid \"Liberec Region\"\nmsgstr \"Daerah Liberec\"\n\n#: cz/cz_regions.py:15\nmsgid \"Hradec Region\"\nmsgstr \"Daerah Hradec\"\n\n#: cz/cz_regions.py:16\nmsgid \"Pardubice Region\"\nmsgstr \"Daerah Pardubice\"\n\n#: cz/cz_regions.py:17\nmsgid \"Vysocina Region\"\nmsgstr \"Daerah Vysocina\"\n\n#: cz/cz_regions.py:18\nmsgid \"South Moravian Region\"\nmsgstr \"Daerah Moravia Selatan\"\n\n#: cz/cz_regions.py:19\nmsgid \"Olomouc Region\"\nmsgstr \"Daerah Olomouc\"\n\n#: cz/cz_regions.py:20\nmsgid \"Zlin Region\"\nmsgstr \"Daerah Zlin\"\n\n#: cz/cz_regions.py:21\nmsgid \"Moravian-Silesian Region\"\nmsgstr \"Daerah Moravia-Silesian\"\n\n#: cz/forms.py:32 sk/forms.py:33\nmsgid \"Enter a postal code in the format XXXXX or XXX XX.\"\nmsgstr \"Masukkan kode pos dalam format XXXXX atau XXX XX.\"\n\n#: cz/forms.py:52\nmsgid \"Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.\"\nmsgstr \"Masukkan tanggal lahir dalam format XXXXXX/XXXX atau XXXXXXXXXX.\"\n\n#: cz/forms.py:53\nmsgid \"Enter a valid birth number.\"\nmsgstr \"Masukkan tanggal lahir yang valid.\"\n\n#: cz/forms.py:102\nmsgid \"Enter a valid IC number.\"\nmsgstr \"Masukkan nomor IC yang valid.\"\n\n#: de/de_states.py:5\nmsgid \"Baden-Wuerttemberg\"\nmsgstr \"Baden-Wuerttemberg\"\n\n#: de/de_states.py:6\nmsgid \"Bavaria\"\nmsgstr \"Bavaria\"\n\n#: de/de_states.py:7\nmsgid \"Berlin\"\nmsgstr \"Berlin\"\n\n#: de/de_states.py:8\nmsgid \"Brandenburg\"\nmsgstr \"Brandenburg\"\n\n#: de/de_states.py:9\nmsgid \"Bremen\"\nmsgstr \"Bremen\"\n\n#: de/de_states.py:10\nmsgid \"Hamburg\"\nmsgstr \"Hamburg\"\n\n#: de/de_states.py:11\nmsgid \"Hessen\"\nmsgstr \"Hessen\"\n\n#: de/de_states.py:12\nmsgid \"Mecklenburg-Western Pomerania\"\nmsgstr \"Mecklenburg-Western Pomerania\"\n\n#: de/de_states.py:13\nmsgid \"Lower Saxony\"\nmsgstr \"Lower Saxony\"\n\n#: de/de_states.py:14\nmsgid \"North Rhine-Westphalia\"\nmsgstr \"Rhine-Westphalia Utara\"\n\n#: de/de_states.py:15\nmsgid \"Rhineland-Palatinate\"\nmsgstr \"Rhineland-Palatinate\"\n\n#: de/de_states.py:16\nmsgid \"Saarland\"\nmsgstr \"Saarland\"\n\n#: de/de_states.py:17\nmsgid \"Saxony\"\nmsgstr \"Saxony\"\n\n#: de/de_states.py:18\nmsgid \"Saxony-Anhalt\"\nmsgstr \"Saxony-Anhalt\"\n\n#: de/de_states.py:19\nmsgid \"Schleswig-Holstein\"\nmsgstr \"Schleswig-Holstein\"\n\n#: de/de_states.py:20\nmsgid \"Thuringia\"\nmsgstr \"Thuringia\"\n\n#: de/forms.py:20 fi/forms.py:18 fr/forms.py:20\nmsgid \"Enter a zip code in the format XXXXX.\"\nmsgstr \"Masukkan kode pos dalam format XXXXX.\"\n\n#: de/forms.py:46\nmsgid \"\"\n\"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"format.\"\nmsgstr \"\"\n\"Masukkan nomor kartu identitas Jerman yang valid dalam format XXXXXXXXXXX-\"\n\"XXXXXXX-XXXXXXX-X.\"\n\n#: es/es_provinces.py:5\nmsgid \"Araba\"\nmsgstr \"Araba\"\n\n#: es/es_provinces.py:6\nmsgid \"Albacete\"\nmsgstr \"Albacete\"\n\n#: es/es_provinces.py:7\nmsgid \"Alacant\"\nmsgstr \"Alacant\"\n\n#: es/es_provinces.py:8\nmsgid \"Almeria\"\nmsgstr \"Almeria\"\n\n#: es/es_provinces.py:9\nmsgid \"Avila\"\nmsgstr \"Avila\"\n\n#: es/es_provinces.py:10\nmsgid \"Badajoz\"\nmsgstr \"Badajoz\"\n\n#: es/es_provinces.py:11\nmsgid \"Illes Balears\"\nmsgstr \"Illes Balears\"\n\n#: es/es_provinces.py:12\nmsgid \"Barcelona\"\nmsgstr \"Barcelona\"\n\n#: es/es_provinces.py:13\nmsgid \"Burgos\"\nmsgstr \"Burgos\"\n\n#: es/es_provinces.py:14\nmsgid \"Caceres\"\nmsgstr \"Caceres\"\n\n#: es/es_provinces.py:15\nmsgid \"Cadiz\"\nmsgstr \"Cadiz\"\n\n#: es/es_provinces.py:16\nmsgid \"Castello\"\nmsgstr \"Castello\"\n\n#: es/es_provinces.py:17\nmsgid \"Ciudad Real\"\nmsgstr \"Ciudad Real\"\n\n#: es/es_provinces.py:18\nmsgid \"Cordoba\"\nmsgstr \"Cordoba\"\n\n#: es/es_provinces.py:19\nmsgid \"A Coruna\"\nmsgstr \"A Coruna\"\n\n#: es/es_provinces.py:20\nmsgid \"Cuenca\"\nmsgstr \"Cuenca\"\n\n#: es/es_provinces.py:21\nmsgid \"Girona\"\nmsgstr \"Girona\"\n\n#: es/es_provinces.py:22\nmsgid \"Granada\"\nmsgstr \"Granada\"\n\n#: es/es_provinces.py:23\nmsgid \"Guadalajara\"\nmsgstr \"Guadalajara\"\n\n#: es/es_provinces.py:24\nmsgid \"Guipuzkoa\"\nmsgstr \"Guipuzkoa\"\n\n#: es/es_provinces.py:25\nmsgid \"Huelva\"\nmsgstr \"Huelva\"\n\n#: es/es_provinces.py:26\nmsgid \"Huesca\"\nmsgstr \"Huesca\"\n\n#: es/es_provinces.py:27\nmsgid \"Jaen\"\nmsgstr \"Jaen\"\n\n#: es/es_provinces.py:28\nmsgid \"Leon\"\nmsgstr \"Leon\"\n\n#: es/es_provinces.py:29\nmsgid \"Lleida\"\nmsgstr \"Lleida\"\n\n#: es/es_provinces.py:30 es/es_regions.py:17\nmsgid \"La Rioja\"\nmsgstr \"La Rioja\"\n\n#: es/es_provinces.py:31\nmsgid \"Lugo\"\nmsgstr \"Lugo\"\n\n#: es/es_provinces.py:32 es/es_regions.py:18\nmsgid \"Madrid\"\nmsgstr \"Madrid\"\n\n#: es/es_provinces.py:33\nmsgid \"Malaga\"\nmsgstr \"Malaga\"\n\n#: es/es_provinces.py:34\nmsgid \"Murcia\"\nmsgstr \"Murcia\"\n\n#: es/es_provinces.py:35\nmsgid \"Navarre\"\nmsgstr \"Navarre\"\n\n#: es/es_provinces.py:36\nmsgid \"Ourense\"\nmsgstr \"Ourense\"\n\n#: es/es_provinces.py:37\nmsgid \"Asturias\"\nmsgstr \"Asturias\"\n\n#: es/es_provinces.py:38\nmsgid \"Palencia\"\nmsgstr \"Palencia\"\n\n#: es/es_provinces.py:39\nmsgid \"Las Palmas\"\nmsgstr \"Las Palmas\"\n\n#: es/es_provinces.py:40\nmsgid \"Pontevedra\"\nmsgstr \"Pontevedra\"\n\n#: es/es_provinces.py:41\nmsgid \"Salamanca\"\nmsgstr \"Salamanca\"\n\n#: es/es_provinces.py:42\nmsgid \"Santa Cruz de Tenerife\"\nmsgstr \"Santa Cruz de Tenerife\"\n\n#: es/es_provinces.py:43 es/es_regions.py:11\nmsgid \"Cantabria\"\nmsgstr \"Cantabria\"\n\n#: es/es_provinces.py:44\nmsgid \"Segovia\"\nmsgstr \"Segovia\"\n\n#: es/es_provinces.py:45\nmsgid \"Seville\"\nmsgstr \"Seville\"\n\n#: es/es_provinces.py:46\nmsgid \"Soria\"\nmsgstr \"Soria\"\n\n#: es/es_provinces.py:47\nmsgid \"Tarragona\"\nmsgstr \"Tarragona\"\n\n#: es/es_provinces.py:48\nmsgid \"Teruel\"\nmsgstr \"Teruel\"\n\n#: es/es_provinces.py:49\nmsgid \"Toledo\"\nmsgstr \"Toledo\"\n\n#: es/es_provinces.py:50\nmsgid \"Valencia\"\nmsgstr \"Valencia\"\n\n#: es/es_provinces.py:51\nmsgid \"Valladolid\"\nmsgstr \"Valladolid\"\n\n#: es/es_provinces.py:52\nmsgid \"Bizkaia\"\nmsgstr \"Bizkaia\"\n\n#: es/es_provinces.py:53\nmsgid \"Zamora\"\nmsgstr \"Zamora\"\n\n#: es/es_provinces.py:54\nmsgid \"Zaragoza\"\nmsgstr \"Zaragoza\"\n\n#: es/es_provinces.py:55\nmsgid \"Ceuta\"\nmsgstr \"Ceuta\"\n\n#: es/es_provinces.py:56\nmsgid \"Melilla\"\nmsgstr \"Melilla\"\n\n#: es/es_regions.py:5\nmsgid \"Andalusia\"\nmsgstr \"Andalusia\"\n\n#: es/es_regions.py:6\nmsgid \"Aragon\"\nmsgstr \"Aragon\"\n\n#: es/es_regions.py:7\nmsgid \"Principality of Asturias\"\nmsgstr \"Principality of Asturias\"\n\n#: es/es_regions.py:8\nmsgid \"Balearic Islands\"\nmsgstr \"Balearic Islands\"\n\n#: es/es_regions.py:9\nmsgid \"Basque Country\"\nmsgstr \"Basque Country\"\n\n#: es/es_regions.py:10\nmsgid \"Canary Islands\"\nmsgstr \"Canary Islands\"\n\n#: es/es_regions.py:12\nmsgid \"Castile-La Mancha\"\nmsgstr \"Castile-La Mancha\"\n\n#: es/es_regions.py:13\nmsgid \"Castile and Leon\"\nmsgstr \"Castile and Leon\"\n\n#: es/es_regions.py:14\nmsgid \"Catalonia\"\nmsgstr \"Catalonia\"\n\n#: es/es_regions.py:15\nmsgid \"Extremadura\"\nmsgstr \"Extremadura\"\n\n#: es/es_regions.py:16\nmsgid \"Galicia\"\nmsgstr \"Galicia\"\n\n#: es/es_regions.py:19\nmsgid \"Region of Murcia\"\nmsgstr \"Region of Murcia\"\n\n#: es/es_regions.py:20\nmsgid \"Foral Community of Navarre\"\nmsgstr \"Foral Community of Navarre\"\n\n#: es/es_regions.py:21\nmsgid \"Valencian Community\"\nmsgstr \"Valencian Community\"\n\n#: es/forms.py:26\nmsgid \"Enter a valid postal code in the range and format 01XXX - 52XXX.\"\nmsgstr \"Masukkan kode pos yang valid dalam format 01XXX - 52XXX\"\n\n#: es/forms.py:46\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or \"\n\"9XXXXXXXX.\"\nmsgstr \"\"\n\"Masukkan nomor telepon yang valid dalam format 6XXXXXXXX, 8XXXXXXXX atau \"\n\"9XXXXXXXX.\"\n\n#: es/forms.py:73\nmsgid \"Please enter a valid NIF, NIE, or CIF.\"\nmsgstr \"Mohon masukkan NIF, NIE atau CIF yang valid.\"\n\n#: es/forms.py:74\nmsgid \"Please enter a valid NIF or NIE.\"\nmsgstr \"Mohon masukkan NIF atau NIE yang valid.\"\n\n#: es/forms.py:75\nmsgid \"Invalid checksum for NIF.\"\nmsgstr \"Checksum untuk NIF salah.\"\n\n#: es/forms.py:76\nmsgid \"Invalid checksum for NIE.\"\nmsgstr \"Checksum untuk NIE salah.\"\n\n#: es/forms.py:77\nmsgid \"Invalid checksum for CIF.\"\nmsgstr \"Checksum untuk CIF salah.\"\n\n#: es/forms.py:149\nmsgid \"\"\n\"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.\"\nmsgstr \"\"\n\"Masukkan nomor akun bank yang valid dalam format XXXX-XXXX-XX-XXXXXXXXXX.\"\n\n#: es/forms.py:150\nmsgid \"Invalid checksum for bank account number.\"\nmsgstr \"Checksum untuk nomor akun bank salah.\"\n\n#: fi/forms.py:33\nmsgid \"Enter a valid Finnish social security number.\"\nmsgstr \"Masukkan nomor identitas Finlandia yang valid.\"\n\n#: fr/forms.py:35\nmsgid \"Phone numbers must be in 0X XX XX XX XX format.\"\nmsgstr \"Nomor telepon harus dalam format 0X XX XX XX XX.\"\n\n#: gb/forms.py:25\nmsgid \"Enter a valid postcode.\"\nmsgstr \"Masukkan kode pos yang valid.\"\n\n#: gb/gb_regions.py:11\nmsgid \"Bedfordshire\"\nmsgstr \"Bedfordshire\"\n\n#: gb/gb_regions.py:12\nmsgid \"Buckinghamshire\"\nmsgstr \"Buckinghamshire\"\n\n#: gb/gb_regions.py:14\nmsgid \"Cheshire\"\nmsgstr \"Cheshire\"\n\n#: gb/gb_regions.py:15\nmsgid \"Cornwall and Isles of Scilly\"\nmsgstr \"Cornwall dan Kepulauan Scilly\"\n\n#: gb/gb_regions.py:16\nmsgid \"Cumbria\"\nmsgstr \"Cumbria\"\n\n#: gb/gb_regions.py:17\nmsgid \"Derbyshire\"\nmsgstr \"Derbyshire\"\n\n#: gb/gb_regions.py:18\nmsgid \"Devon\"\nmsgstr \"Devon\"\n\n#: gb/gb_regions.py:19\nmsgid \"Dorset\"\nmsgstr \"Dorset\"\n\n#: gb/gb_regions.py:20\nmsgid \"Durham\"\nmsgstr \"Durham\"\n\n#: gb/gb_regions.py:21\nmsgid \"East Sussex\"\nmsgstr \"East Sussex\"\n\n#: gb/gb_regions.py:22\nmsgid \"Essex\"\nmsgstr \"Essex\"\n\n#: gb/gb_regions.py:23\nmsgid \"Gloucestershire\"\nmsgstr \"Gloucestershire\"\n\n#: gb/gb_regions.py:24\nmsgid \"Greater London\"\nmsgstr \"Greater London\"\n\n#: gb/gb_regions.py:25\nmsgid \"Greater Manchester\"\nmsgstr \"Greater Manchester\"\n\n#: gb/gb_regions.py:26\nmsgid \"Hampshire\"\nmsgstr \"Hampshire\"\n\n#: gb/gb_regions.py:27\nmsgid \"Hertfordshire\"\nmsgstr \"Hertfordshire\"\n\n#: gb/gb_regions.py:28\nmsgid \"Kent\"\nmsgstr \"Kent\"\n\n#: gb/gb_regions.py:29\nmsgid \"Lancashire\"\nmsgstr \"Lancashire\"\n\n#: gb/gb_regions.py:30\nmsgid \"Leicestershire\"\nmsgstr \"Leicestershire\"\n\n#: gb/gb_regions.py:31\nmsgid \"Lincolnshire\"\nmsgstr \"Lincolnshire\"\n\n#: gb/gb_regions.py:32\nmsgid \"Merseyside\"\nmsgstr \"Merseyside\"\n\n#: gb/gb_regions.py:33\nmsgid \"Norfolk\"\nmsgstr \"Norfolk\"\n\n#: gb/gb_regions.py:34\nmsgid \"North Yorkshire\"\nmsgstr \"North Yorkshire\"\n\n#: gb/gb_regions.py:35\nmsgid \"Northamptonshire\"\nmsgstr \"Northamptonshire\"\n\n#: gb/gb_regions.py:36\nmsgid \"Northumberland\"\nmsgstr \"Northumberland\"\n\n#: gb/gb_regions.py:37\nmsgid \"Nottinghamshire\"\nmsgstr \"Nottinghamshire\"\n\n#: gb/gb_regions.py:38\nmsgid \"Oxfordshire\"\nmsgstr \"Oxfordshire\"\n\n#: gb/gb_regions.py:39\nmsgid \"Shropshire\"\nmsgstr \"Shropshire\"\n\n#: gb/gb_regions.py:40\nmsgid \"Somerset\"\nmsgstr \"Somerset\"\n\n#: gb/gb_regions.py:41\nmsgid \"South Yorkshire\"\nmsgstr \"South Yorkshire\"\n\n#: gb/gb_regions.py:42\nmsgid \"Staffordshire\"\nmsgstr \"Staffordshire\"\n\n#: gb/gb_regions.py:43\nmsgid \"Suffolk\"\nmsgstr \"Suffolk\"\n\n#: gb/gb_regions.py:44\nmsgid \"Surrey\"\nmsgstr \"Surrey\"\n\n#: gb/gb_regions.py:45\nmsgid \"Tyne and Wear\"\nmsgstr \"Tyne and Wear\"\n\n#: gb/gb_regions.py:46\nmsgid \"Warwickshire\"\nmsgstr \"Warwickshire\"\n\n#: gb/gb_regions.py:47\nmsgid \"West Midlands\"\nmsgstr \"West Midlands\"\n\n#: gb/gb_regions.py:48\nmsgid \"West Sussex\"\nmsgstr \"West Sussex\"\n\n#: gb/gb_regions.py:49\nmsgid \"West Yorkshire\"\nmsgstr \"West Yorkshire\"\n\n#: gb/gb_regions.py:50\nmsgid \"Wiltshire\"\nmsgstr \"Wiltshire\"\n\n#: gb/gb_regions.py:51\nmsgid \"Worcestershire\"\nmsgstr \"Worcestershire\"\n\n#: gb/gb_regions.py:55\nmsgid \"County Antrim\"\nmsgstr \"County Antrim\"\n\n#: gb/gb_regions.py:56\nmsgid \"County Armagh\"\nmsgstr \"County Armagh\"\n\n#: gb/gb_regions.py:57\nmsgid \"County Down\"\nmsgstr \"County Down\"\n\n#: gb/gb_regions.py:58\nmsgid \"County Fermanagh\"\nmsgstr \"County Fermanagh\"\n\n#: gb/gb_regions.py:59\nmsgid \"County Londonderry\"\nmsgstr \"County Londonderry\"\n\n#: gb/gb_regions.py:60\nmsgid \"County Tyrone\"\nmsgstr \"County Tyrone\"\n\n#: gb/gb_regions.py:64\nmsgid \"Clwyd\"\nmsgstr \"Clwyd\"\n\n#: gb/gb_regions.py:65\nmsgid \"Dyfed\"\nmsgstr \"Dyfed\"\n\n#: gb/gb_regions.py:66\nmsgid \"Gwent\"\nmsgstr \"Gwent\"\n\n#: gb/gb_regions.py:67\nmsgid \"Gwynedd\"\nmsgstr \"Gwynedd\"\n\n#: gb/gb_regions.py:68\nmsgid \"Mid Glamorgan\"\nmsgstr \"Mid Glamorgan\"\n\n#: gb/gb_regions.py:69\nmsgid \"Powys\"\nmsgstr \"Powys\"\n\n#: gb/gb_regions.py:70\nmsgid \"South Glamorgan\"\nmsgstr \"South Glamorgan\"\n\n#: gb/gb_regions.py:71\nmsgid \"West Glamorgan\"\nmsgstr \"West Glamorgan\"\n\n#: gb/gb_regions.py:75\nmsgid \"Borders\"\nmsgstr \"Borders\"\n\n#: gb/gb_regions.py:76\nmsgid \"Central Scotland\"\nmsgstr \"Central Scotland\"\n\n#: gb/gb_regions.py:77\nmsgid \"Dumfries and Galloway\"\nmsgstr \"Dumfries dan Galloway\"\n\n#: gb/gb_regions.py:78\nmsgid \"Fife\"\nmsgstr \"Fife\"\n\n#: gb/gb_regions.py:79\nmsgid \"Grampian\"\nmsgstr \"Grampian\"\n\n#: gb/gb_regions.py:80\nmsgid \"Highland\"\nmsgstr \"Highland\"\n\n#: gb/gb_regions.py:81\nmsgid \"Lothian\"\nmsgstr \"Lothian\"\n\n#: gb/gb_regions.py:82\nmsgid \"Orkney Islands\"\nmsgstr \"Kepulauan Orkney\"\n\n#: gb/gb_regions.py:83\nmsgid \"Shetland Islands\"\nmsgstr \"Kepulauan Shetland\"\n\n#: gb/gb_regions.py:84\nmsgid \"Strathclyde\"\nmsgstr \"Strathclyde\"\n\n#: gb/gb_regions.py:85\nmsgid \"Tayside\"\nmsgstr \"Tayside\"\n\n#: gb/gb_regions.py:86\nmsgid \"Western Isles\"\nmsgstr \"Western Isles\"\n\n#: gb/gb_regions.py:90\nmsgid \"England\"\nmsgstr \"Inggris\"\n\n#: gb/gb_regions.py:91\nmsgid \"Northern Ireland\"\nmsgstr \"Irlandia Utara\"\n\n#: gb/gb_regions.py:92\nmsgid \"Scotland\"\nmsgstr \"Scotlandia\"\n\n#: gb/gb_regions.py:93\nmsgid \"Wales\"\nmsgstr \"Wales\"\n\n#: hk/forms.py:37\n#, python-format\nmsgid \"Phone number should not start with one of the followings: %s.\"\nmsgstr \"Nomor telepon tidak boleh diawali dengan: %s.\"\n\n#: hk/forms.py:40\n#, python-format\nmsgid \"Phone number must be in one of the following formats: %s.\"\nmsgstr \"Nomor telepon harus dalam format berikut: %s.\"\n\n#: hk/forms.py:42\n#, python-format\nmsgid \"Phone number should start with one of the followings: %s.\"\nmsgstr \"Nomor telepon harus diawali dengan: %s.\"\n\n#: hr/forms.py:76\nmsgid \"Enter a valid 13 digit JMBG\"\nmsgstr \"Masukkan 13 angka JMBG\"\n\n#: hr/forms.py:77\nmsgid \"Error in date segment\"\nmsgstr \"Galat pada segmen tanggal\"\n\n#: hr/forms.py:123\nmsgid \"Enter a valid 11 digit OIB\"\nmsgstr \"Masukkan 11 angka OIB\"\n\n#: hr/forms.py:152 id/forms.py:112\nmsgid \"Enter a valid vehicle license plate number\"\nmsgstr \"Masukkan nomor polisi kendaraan yang valid\"\n\n#: hr/forms.py:153\nmsgid \"Enter a valid location code\"\nmsgstr \"Masukkan kode lokasi yang valid\"\n\n#: hr/forms.py:154\nmsgid \"Number part cannot be zero\"\nmsgstr \"Bagian angka tidak boleh nol\"\n\n#: hr/forms.py:190\nmsgid \"Enter a valid 5 digit postal code\"\nmsgstr \"Masukkan 5 angka kode pos yang valid\"\n\n#: hr/forms.py:218 id/forms.py:72 nl/forms.py:56\nmsgid \"Enter a valid phone number\"\nmsgstr \"Masukkan nomor telepon yang valid\"\n\n#: hr/forms.py:219\nmsgid \"Enter a valid area or mobile network code\"\nmsgstr \"Masukkan kode area atau jaringan ponsel yang valid\"\n\n#: hr/forms.py:220\nmsgid \"The phone nubmer is too long\"\nmsgstr \"Nomor telepon terlalu panjang\"\n\n#: hr/forms.py:258\nmsgid \"Enter a valid 19 digit JMBAG starting with 601983\"\nmsgstr \"Masukkan 5 angka JMBAG valid diawali dengan 601983\"\n\n#: hr/forms.py:259\nmsgid \"Card issue number cannot be zero\"\nmsgstr \"Nomor penerbitan kartu tidak boleh nol\"\n\n#: hr/hr_choices.py:14\nmsgid \"Grad Zagreb\"\nmsgstr \"Grad Zagreb\"\n\n#: hr/hr_choices.py:15\nmsgid \"Bjelovarsko-bilogorska županija\"\nmsgstr \"Bjelovarsko-bilogorska županija\"\n\n#: hr/hr_choices.py:16\nmsgid \"Brodsko-posavska županija\"\nmsgstr \"Brodsko-posavska županija\"\n\n#: hr/hr_choices.py:17\nmsgid \"Dubrovačko-neretvanska županija\"\nmsgstr \"Dubrovačko-neretvanska županija\"\n\n#: hr/hr_choices.py:18\nmsgid \"Istarska županija\"\nmsgstr \"Istarska županija\"\n\n#: hr/hr_choices.py:19\nmsgid \"Karlovačka županija\"\nmsgstr \"Karlovačka županija\"\n\n#: hr/hr_choices.py:20\nmsgid \"Koprivničko-križevačka županija\"\nmsgstr \"Koprivničko-križevačka županija\"\n\n#: hr/hr_choices.py:21\nmsgid \"Krapinsko-zagorska županija\"\nmsgstr \"Krapinsko-zagorska županija\"\n\n#: hr/hr_choices.py:22\nmsgid \"Ličko-senjska županija\"\nmsgstr \"Ličko-senjska županija\"\n\n#: hr/hr_choices.py:23\nmsgid \"Međimurska županija\"\nmsgstr \"Međimurska županija\"\n\n#: hr/hr_choices.py:24\nmsgid \"Osječko-baranjska županija\"\nmsgstr \"Osječko-baranjska županija\"\n\n#: hr/hr_choices.py:25\nmsgid \"Požeško-slavonska županija\"\nmsgstr \"Požeško-slavonska županija\"\n\n#: hr/hr_choices.py:26\nmsgid \"Primorsko-goranska županija\"\nmsgstr \"Primorsko-goranska županija\"\n\n#: hr/hr_choices.py:27\nmsgid \"Sisačko-moslavačka županija\"\nmsgstr \"Sisačko-moslavačka županija\"\n\n#: hr/hr_choices.py:28\nmsgid \"Splitsko-dalmatinska županija\"\nmsgstr \"Splitsko-dalmatinska županija\"\n\n#: hr/hr_choices.py:29\nmsgid \"Šibensko-kninska županija\"\nmsgstr \"Šibensko-kninska županija\"\n\n#: hr/hr_choices.py:30\nmsgid \"Varaždinska županija\"\nmsgstr \"Varaždinska županija\"\n\n#: hr/hr_choices.py:31\nmsgid \"Virovitičko-podravska županija\"\nmsgstr \"Virovitičko-podravska županija\"\n\n#: hr/hr_choices.py:32\nmsgid \"Vukovarsko-srijemska županija\"\nmsgstr \"Vukovarsko-srijemska županija\"\n\n#: hr/hr_choices.py:33\nmsgid \"Zadarska županija\"\nmsgstr \"Zadarska županija\"\n\n#: hr/hr_choices.py:34\nmsgid \"Zagrebačka županija\"\nmsgstr \"Zagrebačka županija\"\n\n#: id/forms.py:31\nmsgid \"Enter a valid post code\"\nmsgstr \"Masukkan kode pos yang valid\"\n\n#: id/forms.py:176\nmsgid \"Enter a valid NIK/KTP number\"\nmsgstr \"Masukkan nomor NIK/KTP yang valid\"\n\n#: id/id_choices.py:15\nmsgid \"Aceh\"\nmsgstr \"Aceh\"\n\n#: id/id_choices.py:16 id/id_choices.py:79\nmsgid \"Bali\"\nmsgstr \"Bali\"\n\n#: id/id_choices.py:17 id/id_choices.py:51\nmsgid \"Banten\"\nmsgstr \"Banten\"\n\n#: id/id_choices.py:18 id/id_choices.py:60\nmsgid \"Bengkulu\"\nmsgstr \"Bengkulu\"\n\n#: id/id_choices.py:19 id/id_choices.py:53\nmsgid \"Yogyakarta\"\nmsgstr \"Yogyakarta\"\n\n#: id/id_choices.py:20 id/id_choices.py:57\nmsgid \"Jakarta\"\nmsgstr \"Jakarta\"\n\n#: id/id_choices.py:21 id/id_choices.py:81\nmsgid \"Gorontalo\"\nmsgstr \"Gorontalo\"\n\n#: id/id_choices.py:22 id/id_choices.py:63\nmsgid \"Jambi\"\nmsgstr \"Jambi\"\n\n#: id/id_choices.py:23\nmsgid \"Jawa Barat\"\nmsgstr \"Jawa Barat\"\n\n#: id/id_choices.py:24\nmsgid \"Jawa Tengah\"\nmsgstr \"Jawa Tengah\"\n\n#: id/id_choices.py:25\nmsgid \"Jawa Timur\"\nmsgstr \"Jawa Timur\"\n\n#: id/id_choices.py:26 id/id_choices.py:94\nmsgid \"Kalimantan Barat\"\nmsgstr \"Kalimantan Barat\"\n\n#: id/id_choices.py:27 id/id_choices.py:72\nmsgid \"Kalimantan Selatan\"\nmsgstr \"Kalimantan Selatan\"\n\n#: id/id_choices.py:28 id/id_choices.py:95\nmsgid \"Kalimantan Tengah\"\nmsgstr \"Kalimantan Tengah\"\n\n#: id/id_choices.py:29 id/id_choices.py:96\nmsgid \"Kalimantan Timur\"\nmsgstr \"Kalimantan Timur\"\n\n#: id/id_choices.py:30\nmsgid \"Kepulauan Bangka-Belitung\"\nmsgstr \"Kepulauan Bangka-Belitung\"\n\n#: id/id_choices.py:31 id/id_choices.py:68\nmsgid \"Kepulauan Riau\"\nmsgstr \"Kepulauan Riau\"\n\n#: id/id_choices.py:32 id/id_choices.py:61\nmsgid \"Lampung\"\nmsgstr \"Lampung\"\n\n#: id/id_choices.py:33 id/id_choices.py:76\nmsgid \"Maluku\"\nmsgstr \"Maluku\"\n\n#: id/id_choices.py:34 id/id_choices.py:77\nmsgid \"Maluku Utara\"\nmsgstr \"Maluku Utara\"\n\n#: id/id_choices.py:35\nmsgid \"Nusa Tenggara Barat\"\nmsgstr \"Nusa Tenggara Barat\"\n\n#: id/id_choices.py:36\nmsgid \"Nusa Tenggara Timur\"\nmsgstr \"Nusa Tenggara Timur\"\n\n#: id/id_choices.py:37\nmsgid \"Papua\"\nmsgstr \"Papua\"\n\n#: id/id_choices.py:38\nmsgid \"Papua Barat\"\nmsgstr \"Papua Barat\"\n\n#: id/id_choices.py:39 id/id_choices.py:66\nmsgid \"Riau\"\nmsgstr \"Riau\"\n\n#: id/id_choices.py:40 id/id_choices.py:74\nmsgid \"Sulawesi Barat\"\nmsgstr \"Sulawesi Barat\"\n\n#: id/id_choices.py:41 id/id_choices.py:75\nmsgid \"Sulawesi Selatan\"\nmsgstr \"Sulawesi Selatan\"\n\n#: id/id_choices.py:42 id/id_choices.py:82\nmsgid \"Sulawesi Tengah\"\nmsgstr \"Sulawesi Tengah\"\n\n#: id/id_choices.py:43 id/id_choices.py:85\nmsgid \"Sulawesi Tenggara\"\nmsgstr \"Sulawesi Tenggara\"\n\n#: id/id_choices.py:44\nmsgid \"Sulawesi Utara\"\nmsgstr \"Sulawesi Utara\"\n\n#: id/id_choices.py:45 id/id_choices.py:58\nmsgid \"Sumatera Barat\"\nmsgstr \"Sumatera Barat\"\n\n#: id/id_choices.py:46 id/id_choices.py:62\nmsgid \"Sumatera Selatan\"\nmsgstr \"Sumatera Selatan\"\n\n#: id/id_choices.py:47 id/id_choices.py:64\nmsgid \"Sumatera Utara\"\nmsgstr \"Sumatera Utara\"\n\n#: id/id_choices.py:52\nmsgid \"Magelang\"\nmsgstr \"Magelang\"\n\n#: id/id_choices.py:54\nmsgid \"Surakarta - Solo\"\nmsgstr \"Surakarta - Solo\"\n\n#: id/id_choices.py:55\nmsgid \"Madiun\"\nmsgstr \"Madiun\"\n\n#: id/id_choices.py:56\nmsgid \"Kediri\"\nmsgstr \"Kediri\"\n\n#: id/id_choices.py:59\nmsgid \"Tapanuli\"\nmsgstr \"Tapanuli\"\n\n#: id/id_choices.py:65\nmsgid \"Nanggroe Aceh Darussalam\"\nmsgstr \"Nanggroe Aceh Darussalam\"\n\n#: id/id_choices.py:67\nmsgid \"Kepulauan Bangka Belitung\"\nmsgstr \"Kepulauan Bangka Belitung\"\n\n#: id/id_choices.py:69\nmsgid \"Corps Consulate\"\nmsgstr \"Korps Konsulat\"\n\n#: id/id_choices.py:70\nmsgid \"Corps Diplomatic\"\nmsgstr \"Korps Diplomatik\"\n\n#: id/id_choices.py:71\nmsgid \"Bandung\"\nmsgstr \"Bandung\"\n\n#: id/id_choices.py:73\nmsgid \"Sulawesi Utara Daratan\"\nmsgstr \"Sulawesi Utara Daratan\"\n\n#: id/id_choices.py:78\nmsgid \"NTT - Timor\"\nmsgstr \"NTT - Timor\"\n\n#: id/id_choices.py:80\nmsgid \"Sulawesi Utara Kepulauan\"\nmsgstr \"Sulawesi Utara Kepulauan\"\n\n#: id/id_choices.py:83\nmsgid \"NTB - Lombok\"\nmsgstr \"NTB - Lombok\"\n\n#: id/id_choices.py:84\nmsgid \"Papua dan Papua Barat\"\nmsgstr \"Papua dan Papua Barat\"\n\n#: id/id_choices.py:86\nmsgid \"Cirebon\"\nmsgstr \"Cirebon\"\n\n#: id/id_choices.py:87\nmsgid \"NTB - Sumbawa\"\nmsgstr \"NTB - Sumbawa\"\n\n#: id/id_choices.py:88\nmsgid \"NTT - Flores\"\nmsgstr \"NTT - Flores\"\n\n#: id/id_choices.py:89\nmsgid \"NTT - Sumba\"\nmsgstr \"NTT - Sumba\"\n\n#: id/id_choices.py:90\nmsgid \"Bogor\"\nmsgstr \"Bogor\"\n\n#: id/id_choices.py:91\nmsgid \"Pekalongan\"\nmsgstr \"Pekalongan\"\n\n#: id/id_choices.py:92\nmsgid \"Semarang\"\nmsgstr \"Semarang\"\n\n#: id/id_choices.py:93\nmsgid \"Pati\"\nmsgstr \"Pati\"\n\n#: id/id_choices.py:97\nmsgid \"Surabaya\"\nmsgstr \"Surabaya\"\n\n#: id/id_choices.py:98\nmsgid \"Madura\"\nmsgstr \"Madura\"\n\n#: id/id_choices.py:99\nmsgid \"Malang\"\nmsgstr \"Malang\"\n\n#: id/id_choices.py:100\nmsgid \"Jember\"\nmsgstr \"Jember\"\n\n#: id/id_choices.py:101\nmsgid \"Banyumas\"\nmsgstr \"Banyumas\"\n\n#: id/id_choices.py:102\nmsgid \"Federal Government\"\nmsgstr \"Pemerintahan Federal\"\n\n#: id/id_choices.py:103\nmsgid \"Bojonegoro\"\nmsgstr \"Bojonegoro\"\n\n#: id/id_choices.py:104\nmsgid \"Purwakarta\"\nmsgstr \"Purwakarta\"\n\n#: id/id_choices.py:105\nmsgid \"Sidoarjo\"\nmsgstr \"Sidoarjo\"\n\n#: id/id_choices.py:106\nmsgid \"Garut\"\nmsgstr \"Garut\"\n\n#: ie/ie_counties.py:8\nmsgid \"Antrim\"\nmsgstr \"Antrim\"\n\n#: ie/ie_counties.py:9\nmsgid \"Armagh\"\nmsgstr \"Armagh\"\n\n#: ie/ie_counties.py:10\nmsgid \"Carlow\"\nmsgstr \"Carlow\"\n\n#: ie/ie_counties.py:11\nmsgid \"Cavan\"\nmsgstr \"Cavan\"\n\n#: ie/ie_counties.py:12\nmsgid \"Clare\"\nmsgstr \"Clare\"\n\n#: ie/ie_counties.py:13\nmsgid \"Cork\"\nmsgstr \"Cork\"\n\n#: ie/ie_counties.py:14\nmsgid \"Derry\"\nmsgstr \"Derry\"\n\n#: ie/ie_counties.py:15\nmsgid \"Donegal\"\nmsgstr \"Donegal\"\n\n#: ie/ie_counties.py:16\nmsgid \"Down\"\nmsgstr \"Down\"\n\n#: ie/ie_counties.py:17\nmsgid \"Dublin\"\nmsgstr \"Dublin\"\n\n#: ie/ie_counties.py:18\nmsgid \"Fermanagh\"\nmsgstr \"Fermanagh\"\n\n#: ie/ie_counties.py:19\nmsgid \"Galway\"\nmsgstr \"Galway\"\n\n#: ie/ie_counties.py:20\nmsgid \"Kerry\"\nmsgstr \"Kerry\"\n\n#: ie/ie_counties.py:21\nmsgid \"Kildare\"\nmsgstr \"Kildare\"\n\n#: ie/ie_counties.py:22\nmsgid \"Kilkenny\"\nmsgstr \"Kilkenny\"\n\n#: ie/ie_counties.py:23\nmsgid \"Laois\"\nmsgstr \"Laois\"\n\n#: ie/ie_counties.py:24\nmsgid \"Leitrim\"\nmsgstr \"Leitrim\"\n\n#: ie/ie_counties.py:25\nmsgid \"Limerick\"\nmsgstr \"Limerick\"\n\n#: ie/ie_counties.py:26\nmsgid \"Longford\"\nmsgstr \"Longford\"\n\n#: ie/ie_counties.py:27\nmsgid \"Louth\"\nmsgstr \"Louth\"\n\n#: ie/ie_counties.py:28\nmsgid \"Mayo\"\nmsgstr \"Mayo\"\n\n#: ie/ie_counties.py:29\nmsgid \"Meath\"\nmsgstr \"Meath\"\n\n#: ie/ie_counties.py:30\nmsgid \"Monaghan\"\nmsgstr \"Monaghan\"\n\n#: ie/ie_counties.py:31\nmsgid \"Offaly\"\nmsgstr \"Offaly\"\n\n#: ie/ie_counties.py:32\nmsgid \"Roscommon\"\nmsgstr \"Roscommon\"\n\n#: ie/ie_counties.py:33\nmsgid \"Sligo\"\nmsgstr \"Sligo\"\n\n#: ie/ie_counties.py:34\nmsgid \"Tipperary\"\nmsgstr \"Tipperary\"\n\n#: ie/ie_counties.py:35\nmsgid \"Tyrone\"\nmsgstr \"Tyrone\"\n\n#: ie/ie_counties.py:36\nmsgid \"Waterford\"\nmsgstr \"Waterford\"\n\n#: ie/ie_counties.py:37\nmsgid \"Westmeath\"\nmsgstr \"Westmeath\"\n\n#: ie/ie_counties.py:38\nmsgid \"Wexford\"\nmsgstr \"Wexford\"\n\n#: ie/ie_counties.py:39\nmsgid \"Wicklow\"\nmsgstr \"Wicklow\"\n\n#: il/forms.py:32\nmsgid \"Enter a postal code in the format XXXXX\"\nmsgstr \"Masukkan kode pos dalam format XXXXX\"\n\n#: il/forms.py:51\nmsgid \"Enter a valid ID number.\"\nmsgstr \"Masukkan nomor ID yang valid.\"\n\n#: in_/forms.py:41\nmsgid \"Enter a zip code in the format XXXXXX or XXX XXX.\"\nmsgstr \"Masukkan kode pos dalam format XXXXXX atau XXX XXX.\"\n\n#: in_/forms.py:64\nmsgid \"Enter an Indian state or territory.\"\nmsgstr \"Masukkan negara bagian atau teritori India.\"\n\n#: in_/forms.py:103\nmsgid \"Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.\"\nmsgstr \"Format nomor telepon yang benar adalah 02X-8X atau 03X-7X atau 04X-6X\"\n\n#: is_/forms.py:22\nmsgid \"\"\n\"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.\"\nmsgstr \"\"\n\"Masukkan nomor identifikasi Islandia yang valid. Formatnya adalah XXXXXX-\"\n\"XXXX.\"\n\n#: is_/forms.py:23\nmsgid \"The Icelandic identification number is not valid.\"\nmsgstr \"Nomor identifikasi Islandia salah.\"\n\n#: it/forms.py:21\nmsgid \"Enter a valid zip code.\"\nmsgstr \"Masukkan kode pos yang valid.\"\n\n#: it/forms.py:48\nmsgid \"Enter a valid Social Security number.\"\nmsgstr \"Masukkan nomor Jaminan Sosial yang valid.\"\n\n#: it/forms.py:73\nmsgid \"Enter a valid VAT number.\"\nmsgstr \"Masukkan nomor VAT yang valid.\"\n\n#: jp/forms.py:19\nmsgid \"Enter a postal code in the format XXXXXXX or XXX-XXXX.\"\nmsgstr \"Masukkan kode pos dalam format XXXXXXX atau XXX-XXXX.\"\n\n#: jp/jp_prefectures.py:4\nmsgid \"Hokkaido\"\nmsgstr \"Hokkaido\"\n\n#: jp/jp_prefectures.py:5\nmsgid \"Aomori\"\nmsgstr \"Aomori\"\n\n#: jp/jp_prefectures.py:6\nmsgid \"Iwate\"\nmsgstr \"Iwate\"\n\n#: jp/jp_prefectures.py:7\nmsgid \"Miyagi\"\nmsgstr \"Miyagi\"\n\n#: jp/jp_prefectures.py:8\nmsgid \"Akita\"\nmsgstr \"Akita\"\n\n#: jp/jp_prefectures.py:9\nmsgid \"Yamagata\"\nmsgstr \"Yamagata\"\n\n#: jp/jp_prefectures.py:10\nmsgid \"Fukushima\"\nmsgstr \"Fukushima\"\n\n#: jp/jp_prefectures.py:11\nmsgid \"Ibaraki\"\nmsgstr \"Ibaraki\"\n\n#: jp/jp_prefectures.py:12\nmsgid \"Tochigi\"\nmsgstr \"Tochigi\"\n\n#: jp/jp_prefectures.py:13\nmsgid \"Gunma\"\nmsgstr \"Gunma\"\n\n#: jp/jp_prefectures.py:14\nmsgid \"Saitama\"\nmsgstr \"Saitama\"\n\n#: jp/jp_prefectures.py:15\nmsgid \"Chiba\"\nmsgstr \"Chiba\"\n\n#: jp/jp_prefectures.py:16\nmsgid \"Tokyo\"\nmsgstr \"Tokyo\"\n\n#: jp/jp_prefectures.py:17\nmsgid \"Kanagawa\"\nmsgstr \"Kanagawa\"\n\n#: jp/jp_prefectures.py:18\nmsgid \"Yamanashi\"\nmsgstr \"Yamanashi\"\n\n#: jp/jp_prefectures.py:19\nmsgid \"Nagano\"\nmsgstr \"Nagano\"\n\n#: jp/jp_prefectures.py:20\nmsgid \"Niigata\"\nmsgstr \"Niigata\"\n\n#: jp/jp_prefectures.py:21\nmsgid \"Toyama\"\nmsgstr \"Toyama\"\n\n#: jp/jp_prefectures.py:22\nmsgid \"Ishikawa\"\nmsgstr \"Ishikawa\"\n\n#: jp/jp_prefectures.py:23\nmsgid \"Fukui\"\nmsgstr \"Fukui\"\n\n#: jp/jp_prefectures.py:24\nmsgid \"Gifu\"\nmsgstr \"Gifu\"\n\n#: jp/jp_prefectures.py:25\nmsgid \"Shizuoka\"\nmsgstr \"Shizuoka\"\n\n#: jp/jp_prefectures.py:26\nmsgid \"Aichi\"\nmsgstr \"Aichi\"\n\n#: jp/jp_prefectures.py:27\nmsgid \"Mie\"\nmsgstr \"Mie\"\n\n#: jp/jp_prefectures.py:28\nmsgid \"Shiga\"\nmsgstr \"Shiga\"\n\n#: jp/jp_prefectures.py:29\nmsgid \"Kyoto\"\nmsgstr \"Kyoto\"\n\n#: jp/jp_prefectures.py:30\nmsgid \"Osaka\"\nmsgstr \"Osaka\"\n\n#: jp/jp_prefectures.py:31\nmsgid \"Hyogo\"\nmsgstr \"Hyogo\"\n\n#: jp/jp_prefectures.py:32\nmsgid \"Nara\"\nmsgstr \"Nara\"\n\n#: jp/jp_prefectures.py:33\nmsgid \"Wakayama\"\nmsgstr \"Wakayama\"\n\n#: jp/jp_prefectures.py:34\nmsgid \"Tottori\"\nmsgstr \"Tottori\"\n\n#: jp/jp_prefectures.py:35\nmsgid \"Shimane\"\nmsgstr \"Shimane\"\n\n#: jp/jp_prefectures.py:36\nmsgid \"Okayama\"\nmsgstr \"Okayama\"\n\n#: jp/jp_prefectures.py:37\nmsgid \"Hiroshima\"\nmsgstr \"Hiroshima\"\n\n#: jp/jp_prefectures.py:38\nmsgid \"Yamaguchi\"\nmsgstr \"Yamaguchi\"\n\n#: jp/jp_prefectures.py:39\nmsgid \"Tokushima\"\nmsgstr \"Tokushima\"\n\n#: jp/jp_prefectures.py:40\nmsgid \"Kagawa\"\nmsgstr \"Kagawa\"\n\n#: jp/jp_prefectures.py:41\nmsgid \"Ehime\"\nmsgstr \"Ehime\"\n\n#: jp/jp_prefectures.py:42\nmsgid \"Kochi\"\nmsgstr \"Kochi\"\n\n#: jp/jp_prefectures.py:43\nmsgid \"Fukuoka\"\nmsgstr \"Fukuoka\"\n\n#: jp/jp_prefectures.py:44\nmsgid \"Saga\"\nmsgstr \"Saga\"\n\n#: jp/jp_prefectures.py:45\nmsgid \"Nagasaki\"\nmsgstr \"Nagasaki\"\n\n#: jp/jp_prefectures.py:46\nmsgid \"Kumamoto\"\nmsgstr \"Kumamoto\"\n\n#: jp/jp_prefectures.py:47\nmsgid \"Oita\"\nmsgstr \"Oita\"\n\n#: jp/jp_prefectures.py:48\nmsgid \"Miyazaki\"\nmsgstr \"Miyazaki\"\n\n#: jp/jp_prefectures.py:49\nmsgid \"Kagoshima\"\nmsgstr \"Kagoshima\"\n\n#: jp/jp_prefectures.py:50\nmsgid \"Okinawa\"\nmsgstr \"Okinawa\"\n\n#: kw/forms.py:27\nmsgid \"Enter a valid Kuwaiti Civil ID number\"\nmsgstr \"Masukkan nomor ID Warga Kuwait yang valid\"\n\n#: mk/forms.py:18\nmsgid \"\"\n\"Identity card numbers must contain either 4 to 7 digits or an uppercase \"\n\"letter and 7 digits.\"\nmsgstr \"\"\n\"Nomor kartu identitas harus mengandung 4 hingga 7 angka atau satu huruf \"\n\"besar dan 7 angka. \"\n\n#: mk/forms.py:57 si/forms.py:24\nmsgid \"This field should contain exactly 13 digits.\"\nmsgstr \"Isian ini harus berisi persis 13 angka.\"\n\n#: mk/forms.py:58\nmsgid \"The first 7 digits of the UMCN must represent a valid past date.\"\nmsgstr \"7 angka awal UMCN harus mewakili tanggal di masa lalu yang valid.\"\n\n#: mk/forms.py:59\nmsgid \"The UMCN is not valid.\"\nmsgstr \"UMCN tidak valid\"\n\n#: mk/mk_choices.py:10\nmsgid \"Aerodrom\"\nmsgstr \"Aerodrom\"\n\n#: mk/mk_choices.py:11\nmsgid \"Aračinovo\"\nmsgstr \"Aračinovo\"\n\n#: mk/mk_choices.py:12\nmsgid \"Berovo\"\nmsgstr \"Berovo\"\n\n#: mk/mk_choices.py:13\nmsgid \"Bitola\"\nmsgstr \"Bitola\"\n\n#: mk/mk_choices.py:14\nmsgid \"Bogdanci\"\nmsgstr \"Bogdanci\"\n\n#: mk/mk_choices.py:15\nmsgid \"Bogovinje\"\nmsgstr \"Bogovinje\"\n\n#: mk/mk_choices.py:16\nmsgid \"Bosilovo\"\nmsgstr \"Bosilovo\"\n\n#: mk/mk_choices.py:17\nmsgid \"Brvenica\"\nmsgstr \"Brvenica\"\n\n#: mk/mk_choices.py:18\nmsgid \"Butel\"\nmsgstr \"Butel\"\n\n#: mk/mk_choices.py:19\nmsgid \"Valandovo\"\nmsgstr \"Valandovo\"\n\n#: mk/mk_choices.py:20\nmsgid \"Vasilevo\"\nmsgstr \"Vasilevo\"\n\n#: mk/mk_choices.py:21\nmsgid \"Vevčani\"\nmsgstr \"Vevčani\"\n\n#: mk/mk_choices.py:22\nmsgid \"Veles\"\nmsgstr \"Veles\"\n\n#: mk/mk_choices.py:23\nmsgid \"Vinica\"\nmsgstr \"Vinica\"\n\n#: mk/mk_choices.py:24\nmsgid \"Vraneštica\"\nmsgstr \"Vraneštica\"\n\n#: mk/mk_choices.py:25\nmsgid \"Vrapčište\"\nmsgstr \"Vrapčište\"\n\n#: mk/mk_choices.py:26\nmsgid \"Gazi Baba\"\nmsgstr \"Gazi Baba\"\n\n#: mk/mk_choices.py:27\nmsgid \"Gevgelija\"\nmsgstr \"Gevgelija\"\n\n#: mk/mk_choices.py:28\nmsgid \"Gostivar\"\nmsgstr \"Gostivar\"\n\n#: mk/mk_choices.py:29\nmsgid \"Gradsko\"\nmsgstr \"Gradsko\"\n\n#: mk/mk_choices.py:30\nmsgid \"Debar\"\nmsgstr \"Debar\"\n\n#: mk/mk_choices.py:31\nmsgid \"Debarca\"\nmsgstr \"Debarca\"\n\n#: mk/mk_choices.py:32\nmsgid \"Delčevo\"\nmsgstr \"Delčevo\"\n\n#: mk/mk_choices.py:33\nmsgid \"Demir Kapija\"\nmsgstr \"Demir Kapija\"\n\n#: mk/mk_choices.py:34\nmsgid \"Demir Hisar\"\nmsgstr \"Demir Hisar\"\n\n#: mk/mk_choices.py:35\nmsgid \"Dolneni\"\nmsgstr \"Dolneni\"\n\n#: mk/mk_choices.py:36\nmsgid \"Drugovo\"\nmsgstr \"Drugovo\"\n\n#: mk/mk_choices.py:37\nmsgid \"Gjorče Petrov\"\nmsgstr \"Gjorče Petrov\"\n\n#: mk/mk_choices.py:38\nmsgid \"Želino\"\nmsgstr \"Želino\"\n\n#: mk/mk_choices.py:39\nmsgid \"Zajas\"\nmsgstr \"Zajas\"\n\n#: mk/mk_choices.py:40\nmsgid \"Zelenikovo\"\nmsgstr \"Zelenikovo\"\n\n#: mk/mk_choices.py:41\nmsgid \"Zrnovci\"\nmsgstr \"Zrnovci\"\n\n#: mk/mk_choices.py:42\nmsgid \"Ilinden\"\nmsgstr \"Ilinden\"\n\n#: mk/mk_choices.py:43\nmsgid \"Jegunovce\"\nmsgstr \"Jegunovce\"\n\n#: mk/mk_choices.py:44\nmsgid \"Kavadarci\"\nmsgstr \"Kavadarci\"\n\n#: mk/mk_choices.py:45\nmsgid \"Karbinci\"\nmsgstr \"Karbinci\"\n\n#: mk/mk_choices.py:46\nmsgid \"Karpoš\"\nmsgstr \"Karpoš\"\n\n#: mk/mk_choices.py:47\nmsgid \"Kisela Voda\"\nmsgstr \"Kisela Voda\"\n\n#: mk/mk_choices.py:48\nmsgid \"Kičevo\"\nmsgstr \"Kičevo\"\n\n#: mk/mk_choices.py:49\nmsgid \"Konče\"\nmsgstr \"Konče\"\n\n#: mk/mk_choices.py:50\nmsgid \"Koćani\"\nmsgstr \"Koćani\"\n\n#: mk/mk_choices.py:51\nmsgid \"Kratovo\"\nmsgstr \"Kratovo\"\n\n#: mk/mk_choices.py:52\nmsgid \"Kriva Palanka\"\nmsgstr \"Kriva Palanka\"\n\n#: mk/mk_choices.py:53\nmsgid \"Krivogaštani\"\nmsgstr \"Krivogaštani\"\n\n#: mk/mk_choices.py:54\nmsgid \"Kruševo\"\nmsgstr \"Kruševo\"\n\n#: mk/mk_choices.py:55\nmsgid \"Kumanovo\"\nmsgstr \"Kumanovo\"\n\n#: mk/mk_choices.py:56\nmsgid \"Lipkovo\"\nmsgstr \"Lipkovo\"\n\n#: mk/mk_choices.py:57\nmsgid \"Lozovo\"\nmsgstr \"Lozovo\"\n\n#: mk/mk_choices.py:58\nmsgid \"Mavrovo i Rostuša\"\nmsgstr \"Mavrovo i Rostuša\"\n\n#: mk/mk_choices.py:59\nmsgid \"Makedonska Kamenica\"\nmsgstr \"Makedonska Kamenica\"\n\n#: mk/mk_choices.py:60\nmsgid \"Makedonski Brod\"\nmsgstr \"Makedonski Brod\"\n\n#: mk/mk_choices.py:61\nmsgid \"Mogila\"\nmsgstr \"Mogila\"\n\n#: mk/mk_choices.py:62\nmsgid \"Negotino\"\nmsgstr \"Negotino\"\n\n#: mk/mk_choices.py:63\nmsgid \"Novaci\"\nmsgstr \"Novaci\"\n\n#: mk/mk_choices.py:64\nmsgid \"Novo Selo\"\nmsgstr \"Novo Selo\"\n\n#: mk/mk_choices.py:65\nmsgid \"Oslomej\"\nmsgstr \"Oslomej\"\n\n#: mk/mk_choices.py:66\nmsgid \"Ohrid\"\nmsgstr \"Ohrid\"\n\n#: mk/mk_choices.py:67\nmsgid \"Petrovec\"\nmsgstr \"Petrovec\"\n\n#: mk/mk_choices.py:68\nmsgid \"Pehčevo\"\nmsgstr \"Pehčevo\"\n\n#: mk/mk_choices.py:69\nmsgid \"Plasnica\"\nmsgstr \"Plasnica\"\n\n#: mk/mk_choices.py:70\nmsgid \"Prilep\"\nmsgstr \"Prilep\"\n\n#: mk/mk_choices.py:71\nmsgid \"Probištip\"\nmsgstr \"Probištip\"\n\n#: mk/mk_choices.py:72\nmsgid \"Radoviš\"\nmsgstr \"Radoviš\"\n\n#: mk/mk_choices.py:73\nmsgid \"Rankovce\"\nmsgstr \"Rankovce\"\n\n#: mk/mk_choices.py:74\nmsgid \"Resen\"\nmsgstr \"Resen\"\n\n#: mk/mk_choices.py:75\nmsgid \"Rosoman\"\nmsgstr \"Rosoman\"\n\n#: mk/mk_choices.py:76\nmsgid \"Saraj\"\nmsgstr \"Saraj\"\n\n#: mk/mk_choices.py:77\nmsgid \"Sveti Nikole\"\nmsgstr \"Sveti Nikole\"\n\n#: mk/mk_choices.py:78\nmsgid \"Sopište\"\nmsgstr \"Sopište\"\n\n#: mk/mk_choices.py:79\nmsgid \"Star Dojran\"\nmsgstr \"Star Dojran\"\n\n#: mk/mk_choices.py:80\nmsgid \"Staro Nagoričane\"\nmsgstr \"Staro Nagoričane\"\n\n#: mk/mk_choices.py:81\nmsgid \"Struga\"\nmsgstr \"Struga\"\n\n#: mk/mk_choices.py:82\nmsgid \"Strumica\"\nmsgstr \"Strumica\"\n\n#: mk/mk_choices.py:83\nmsgid \"Studeničani\"\nmsgstr \"Studeničani\"\n\n#: mk/mk_choices.py:84\nmsgid \"Tearce\"\nmsgstr \"Tearce\"\n\n#: mk/mk_choices.py:85\nmsgid \"Tetovo\"\nmsgstr \"Tetovo\"\n\n#: mk/mk_choices.py:86\nmsgid \"Centar\"\nmsgstr \"Centar\"\n\n#: mk/mk_choices.py:87\nmsgid \"Centar-Župa\"\nmsgstr \"Centar-Župa\"\n\n#: mk/mk_choices.py:88\nmsgid \"Čair\"\nmsgstr \"Čair\"\n\n#: mk/mk_choices.py:89\nmsgid \"Čaška\"\nmsgstr \"Čaška\"\n\n#: mk/mk_choices.py:90\nmsgid \"Češinovo-Obleševo\"\nmsgstr \"Češinovo-Obleševo\"\n\n#: mk/mk_choices.py:91\nmsgid \"Čučer-Sandevo\"\nmsgstr \"Čučer-Sandevo\"\n\n#: mk/mk_choices.py:92\nmsgid \"Štip\"\nmsgstr \"Štip\"\n\n#: mk/mk_choices.py:93\nmsgid \"Šuto Orizari\"\nmsgstr \"Šuto Orizari\"\n\n#: mk/models.py:11\nmsgid \"Macedonian identity card number\"\nmsgstr \"Nomor kartu identitas Makedonia\"\n\n#: mk/models.py:25\nmsgid \"A Macedonian municipality (2 character code)\"\nmsgstr \"Munisipalitas Makedonia (2 kode karakter)\"\n\n#: mk/models.py:35\nmsgid \"Unique master citizen number (13 digits)\"\nmsgstr \"Nomor penduduk master unik (13 angka)\"\n\n#: mx/forms.py:67\nmsgid \"Enter a valid zip code in the format XXXXX.\"\nmsgstr \"Masukkan kode pos yang valid dalam format XXXXXX.\"\n\n#: mx/forms.py:110\nmsgid \"Enter a valid RFC.\"\nmsgstr \"Masukkan RFC yang valid.\"\n\n#: mx/forms.py:111\nmsgid \"Invalid checksum for RFC.\"\nmsgstr \"Ceksum untuk RFC tidak valid\"\n\n#: mx/forms.py:191\nmsgid \"Enter a valid CURP.\"\nmsgstr \"Masukkan CURP yang valid.\"\n\n#: mx/forms.py:192\nmsgid \"Invalid checksum for CURP.\"\nmsgstr \"Ceksum untuk CURP tidak valid\"\n\n#: mx/models.py:14\nmsgid \"Mexico state (three uppercase letters)\"\nmsgstr \"Negara bagian Meksiko (tiga huruf besar)\"\n\n#: mx/models.py:27\nmsgid \"Mexico zip code\"\nmsgstr \"Kode pos Meksiko\"\n\n#: mx/models.py:44\nmsgid \"Mexican RFC\"\nmsgstr \"RFC Meksiko\"\n\n#: mx/models.py:61\nmsgid \"Mexican CURP\"\nmsgstr \"CURP Meksiko\"\n\n#: mx/mx_states.py:14\nmsgid \"Aguascalientes\"\nmsgstr \"Aguascalientes\"\n\n#: mx/mx_states.py:15\nmsgid \"Baja California\"\nmsgstr \"Baja California\"\n\n#: mx/mx_states.py:16\nmsgid \"Baja California Sur\"\nmsgstr \"Baja California Sur\"\n\n#: mx/mx_states.py:17\nmsgid \"Campeche\"\nmsgstr \"Campeche\"\n\n#: mx/mx_states.py:18\nmsgid \"Chihuahua\"\nmsgstr \"Chihuahua\"\n\n#: mx/mx_states.py:19\nmsgid \"Chiapas\"\nmsgstr \"Chiapas\"\n\n#: mx/mx_states.py:20\nmsgid \"Coahuila\"\nmsgstr \"Coahuila\"\n\n#: mx/mx_states.py:21\nmsgid \"Colima\"\nmsgstr \"Colima\"\n\n#: mx/mx_states.py:22\nmsgid \"Distrito Federal\"\nmsgstr \"Distrito Federal\"\n\n#: mx/mx_states.py:23\nmsgid \"Durango\"\nmsgstr \"Durango\"\n\n#: mx/mx_states.py:24\nmsgid \"Guerrero\"\nmsgstr \"Guerrero\"\n\n#: mx/mx_states.py:25\nmsgid \"Guanajuato\"\nmsgstr \"Guanajuato\"\n\n#: mx/mx_states.py:26\nmsgid \"Hidalgo\"\nmsgstr \"Hidalgo\"\n\n#: mx/mx_states.py:27\nmsgid \"Jalisco\"\nmsgstr \"Jalisco\"\n\n#: mx/mx_states.py:28\nmsgid \"Estado de México\"\nmsgstr \"Estado de México\"\n\n#: mx/mx_states.py:29\nmsgid \"Michoacán\"\nmsgstr \"Michoacán\"\n\n#: mx/mx_states.py:30\nmsgid \"Morelos\"\nmsgstr \"Morelos\"\n\n#: mx/mx_states.py:31\nmsgid \"Nayarit\"\nmsgstr \"Nayarit\"\n\n#: mx/mx_states.py:32\nmsgid \"Nuevo León\"\nmsgstr \"Nuevo León\"\n\n#: mx/mx_states.py:33\nmsgid \"Oaxaca\"\nmsgstr \"Oaxaca\"\n\n#: mx/mx_states.py:34\nmsgid \"Puebla\"\nmsgstr \"Puebla\"\n\n#: mx/mx_states.py:35\nmsgid \"Querétaro\"\nmsgstr \"Querétaro\"\n\n#: mx/mx_states.py:36\nmsgid \"Quintana Roo\"\nmsgstr \"Quintana Roo\"\n\n#: mx/mx_states.py:37\nmsgid \"Sinaloa\"\nmsgstr \"Sinaloa\"\n\n#: mx/mx_states.py:38\nmsgid \"San Luis Potosí\"\nmsgstr \"San Luis Potosí\"\n\n#: mx/mx_states.py:39\nmsgid \"Sonora\"\nmsgstr \"Sonora\"\n\n#: mx/mx_states.py:40\nmsgid \"Tabasco\"\nmsgstr \"Tabasco\"\n\n#: mx/mx_states.py:41\nmsgid \"Tamaulipas\"\nmsgstr \"Tamaulipas\"\n\n#: mx/mx_states.py:42\nmsgid \"Tlaxcala\"\nmsgstr \"Tlaxcala\"\n\n#: mx/mx_states.py:43\nmsgid \"Veracruz\"\nmsgstr \"Veracruz\"\n\n#: mx/mx_states.py:44\nmsgid \"Yucatán\"\nmsgstr \"Yucatán\"\n\n#: mx/mx_states.py:45\nmsgid \"Zacatecas\"\nmsgstr \"Zacatecas\"\n\n#: nl/forms.py:26\nmsgid \"Enter a valid postal code\"\nmsgstr \"Masukkan kode pos yang valid\"\n\n#: nl/forms.py:82\nmsgid \"Enter a valid SoFi number\"\nmsgstr \"Masukkan nomor SoFi yang valid\"\n\n#: nl/nl_provinces.py:4\nmsgid \"Drenthe\"\nmsgstr \"Drenthe\"\n\n#: nl/nl_provinces.py:5\nmsgid \"Flevoland\"\nmsgstr \"Flevoland\"\n\n#: nl/nl_provinces.py:6\nmsgid \"Friesland\"\nmsgstr \"Friesland\"\n\n#: nl/nl_provinces.py:7\nmsgid \"Gelderland\"\nmsgstr \"Gelderland\"\n\n#: nl/nl_provinces.py:8\nmsgid \"Groningen\"\nmsgstr \"Groningen\"\n\n#: nl/nl_provinces.py:10\nmsgid \"Noord-Brabant\"\nmsgstr \"Noord-Brabant\"\n\n#: nl/nl_provinces.py:11\nmsgid \"Noord-Holland\"\nmsgstr \"Noord-Holland\"\n\n#: nl/nl_provinces.py:12\nmsgid \"Overijssel\"\nmsgstr \"Overijssel\"\n\n#: nl/nl_provinces.py:13\nmsgid \"Utrecht\"\nmsgstr \"Utrecht\"\n\n#: nl/nl_provinces.py:14\nmsgid \"Zeeland\"\nmsgstr \"Zeeland\"\n\n#: nl/nl_provinces.py:15\nmsgid \"Zuid-Holland\"\nmsgstr \"Zuid-Holland\"\n\n#: no/forms.py:39\nmsgid \"Enter a valid Norwegian social security number.\"\nmsgstr \"Masukkan nomor jaminan sosial Norwegia yang valid.\"\n\n#: pe/forms.py:28\nmsgid \"This field requires 8 digits.\"\nmsgstr \"Bidang ini membutuhkan isian 8 angka.\"\n\n#: pe/forms.py:56\nmsgid \"This field requires 11 digits.\"\nmsgstr \"Bidang ini membutuhkan isian 11 angka.\"\n\n#: pl/forms.py:42\nmsgid \"National Identification Number consists of 11 digits.\"\nmsgstr \"Nomor Identifikasi Nasional terdiri dari 11 angka.\"\n\n#: pl/forms.py:43\nmsgid \"Wrong checksum for the National Identification Number.\"\nmsgstr \"Checksum untuk Nomor Identifikasi Nasional salah.\"\n\n#: pl/forms.py:79\nmsgid \"National ID Card Number consists of 3 letters and 6 digits.\"\nmsgstr \"Nomor Kartu ID Nasional terdidi dari 3 huruf dan 6 angka.\"\n\n#: pl/forms.py:80\nmsgid \"Wrong checksum for the National ID Card Number.\"\nmsgstr \"Ceksum Nomor Kartu ID Nasional salah.\"\n\n#: pl/forms.py:131\nmsgid \"\"\n\"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or \"\n\"XXXXXXXXXX.\"\nmsgstr \"\"\n\"Masukkan isian nomor pajak (NIP) dalam format XXX-XXX-XX-XX, XXX-XX-XX-XXX, \"\n\"atau XXXXXXXXXX.\"\n\n#: pl/forms.py:132\nmsgid \"Wrong checksum for the Tax Number (NIP).\"\nmsgstr \"Checksum untuk Nomor Pajak (NIP) salah.\"\n\n#: pl/forms.py:171\nmsgid \"National Business Register Number (REGON) consists of 9 or 14 digits.\"\nmsgstr \"Nomor Registrasi Bisnis Nasional (REGON) terdiri dari 9 atau 14 angka.\"\n\n#: pl/forms.py:172\nmsgid \"Wrong checksum for the National Business Register Number (REGON).\"\nmsgstr \"Checksum untuk Nomor Registrasi Bisnis Nasional (REGON) salah.\"\n\n#: pl/forms.py:212\nmsgid \"Enter a postal code in the format XX-XXX.\"\nmsgstr \"Masukkan kode pos dalam format XX-XXX.\"\n\n#: pl/pl_voivodeships.py:8\nmsgid \"Lower Silesia\"\nmsgstr \"Lower Silesia\"\n\n#: pl/pl_voivodeships.py:9\nmsgid \"Kuyavia-Pomerania\"\nmsgstr \"Kuyavia-Pomerania\"\n\n#: pl/pl_voivodeships.py:10\nmsgid \"Lublin\"\nmsgstr \"Lublin\"\n\n#: pl/pl_voivodeships.py:11\nmsgid \"Lubusz\"\nmsgstr \"Lubusz\"\n\n#: pl/pl_voivodeships.py:12\nmsgid \"Lodz\"\nmsgstr \"Lodz\"\n\n#: pl/pl_voivodeships.py:13\nmsgid \"Lesser Poland\"\nmsgstr \"Lesser Poland\"\n\n#: pl/pl_voivodeships.py:14\nmsgid \"Masovia\"\nmsgstr \"Masovia\"\n\n#: pl/pl_voivodeships.py:15\nmsgid \"Opole\"\nmsgstr \"Opole\"\n\n#: pl/pl_voivodeships.py:16\nmsgid \"Subcarpatia\"\nmsgstr \"Subcarpatia\"\n\n#: pl/pl_voivodeships.py:17\nmsgid \"Podlasie\"\nmsgstr \"Podlasie\"\n\n#: pl/pl_voivodeships.py:18\nmsgid \"Pomerania\"\nmsgstr \"Pomerania\"\n\n#: pl/pl_voivodeships.py:19\nmsgid \"Silesia\"\nmsgstr \"Silesia\"\n\n#: pl/pl_voivodeships.py:20\nmsgid \"Swietokrzyskie\"\nmsgstr \"Swietokrzyskie\"\n\n#: pl/pl_voivodeships.py:21\nmsgid \"Warmia-Masuria\"\nmsgstr \"Warmia-Masuria\"\n\n#: pl/pl_voivodeships.py:22\nmsgid \"Greater Poland\"\nmsgstr \"Greater Poland\"\n\n#: pl/pl_voivodeships.py:23\nmsgid \"West Pomerania\"\nmsgstr \"West Pomerania\"\n\n#: pt/forms.py:19\nmsgid \"Enter a zip code in the format XXXX-XXX.\"\nmsgstr \"Masukkan kode pos dalam format XXXX-XXX.\"\n\n#: pt/forms.py:39\nmsgid \"Phone numbers must have 9 digits, or start by + or 00.\"\nmsgstr \"Nomor telepon harus memiliki 9 angka, atau dimulai dari + atau 00.\"\n\n#: ro/forms.py:22\nmsgid \"Enter a valid CIF.\"\nmsgstr \"Masukkan CIF yang valid.\"\n\n#: ro/forms.py:59\nmsgid \"Enter a valid CNP.\"\nmsgstr \"Masukkan CNP yang valid.\"\n\n#: ro/forms.py:143\nmsgid \"Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format\"\nmsgstr \"Masukkan IBAN yang valid dalam format ROXX-XXXX-XXXX-XXXX-XXXX-XXXX\"\n\n#: ro/forms.py:175\nmsgid \"Phone numbers must be in XXXX-XXXXXX format.\"\nmsgstr \"Nomor telepon harus dalam format XXXX-XXXXXX.\"\n\n#: ro/forms.py:200\nmsgid \"Enter a valid postal code in the format XXXXXX\"\nmsgstr \"Masukkan kode pos yang valid dalam format XXXXXX\"\n\n#: ru/forms.py:37\nmsgid \"Enter a postal code in the format XXXXXX.\"\nmsgstr \"Masukkan kode pos dalam format XXXXXX.\"\n\n#: ru/forms.py:50\nmsgid \"Enter a passport number in the format XXXX XXXXXX.\"\nmsgstr \"Masukkan nomor paspor dalam format XXXX XXXXXX.\"\n\n#: ru/forms.py:63\nmsgid \"Enter a passport number in the format XX XXXXXXX.\"\nmsgstr \"Masukkan nomor paspor dalam format XX XXXXXXX.\"\n\n#: ru/ru_regions.py:10\nmsgid \"Central Federal County\"\nmsgstr \"Central Federal County\"\n\n#: ru/ru_regions.py:11\nmsgid \"South Federal County\"\nmsgstr \"South Federal County\"\n\n#: ru/ru_regions.py:12\nmsgid \"North-West Federal County\"\nmsgstr \"North-West Federal County\"\n\n#: ru/ru_regions.py:13\nmsgid \"Far-East Federal County\"\nmsgstr \"Far-East Federal County\"\n\n#: ru/ru_regions.py:14\nmsgid \"Siberian Federal County\"\nmsgstr \"Siberian Federal County\"\n\n#: ru/ru_regions.py:15\nmsgid \"Ural Federal County\"\nmsgstr \"Ural Federal County\"\n\n#: ru/ru_regions.py:16\nmsgid \"Privolzhsky Federal County\"\nmsgstr \"Privolzhsky Federal County\"\n\n#: ru/ru_regions.py:17\nmsgid \"North-Caucasian Federal County\"\nmsgstr \"North-Caucasian Federal County\"\n\n#: ru/ru_regions.py:21\nmsgid \"Moskva\"\nmsgstr \"Moskow\"\n\n#: ru/ru_regions.py:22\nmsgid \"Saint-Peterburg\"\nmsgstr \"Saint-Peterburg\"\n\n#: ru/ru_regions.py:23\nmsgid \"Moskovskaya oblast'\"\nmsgstr \"Moskovskaya oblast'\"\n\n#: ru/ru_regions.py:24\nmsgid \"Adygeya, Respublika\"\nmsgstr \"Adygeya, Respublika\"\n\n#: ru/ru_regions.py:25\nmsgid \"Bashkortostan, Respublika\"\nmsgstr \"Bashkortostan, Respublika\"\n\n#: ru/ru_regions.py:26\nmsgid \"Buryatia, Respublika\"\nmsgstr \"Buryatia, Respublika\"\n\n#: ru/ru_regions.py:27\nmsgid \"Altay, Respublika\"\nmsgstr \"Altay, Respublika\"\n\n#: ru/ru_regions.py:28\nmsgid \"Dagestan, Respublika\"\nmsgstr \"Dagestan, Respublika\"\n\n#: ru/ru_regions.py:29\nmsgid \"Ingushskaya Respublika\"\nmsgstr \"Ingushskaya Respublika\"\n\n#: ru/ru_regions.py:30\nmsgid \"Kabardino-Balkarskaya Respublika\"\nmsgstr \"Kabardino-Balkarskaya Respublika\"\n\n#: ru/ru_regions.py:31\nmsgid \"Kalmykia, Respublika\"\nmsgstr \"Kalmykia, Respublika\"\n\n#: ru/ru_regions.py:32\nmsgid \"Karachaevo-Cherkesskaya Respublika\"\nmsgstr \"Karachaevo-Cherkesskaya Respublika\"\n\n#: ru/ru_regions.py:33\nmsgid \"Karelia, Respublika\"\nmsgstr \"Karelia, Respublika\"\n\n#: ru/ru_regions.py:34\nmsgid \"Komi, Respublika\"\nmsgstr \"Komi, Respublika\"\n\n#: ru/ru_regions.py:35\nmsgid \"Mariy Ehl, Respublika\"\nmsgstr \"Mariy Ehl, Respublika\"\n\n#: ru/ru_regions.py:36\nmsgid \"Mordovia, Respublika\"\nmsgstr \"Mordovia, Respublika\"\n\n#: ru/ru_regions.py:37\nmsgid \"Sakha, Respublika (Yakutiya)\"\nmsgstr \"Sakha, Respublika (Yakutiya)\"\n\n#: ru/ru_regions.py:38\nmsgid \"Severnaya Osetia, Respublika (Alania)\"\nmsgstr \"Severnaya Osetia, Respublika (Alania)\"\n\n#: ru/ru_regions.py:39\nmsgid \"Tatarstan, Respublika\"\nmsgstr \"Tatarstan, Respublika\"\n\n#: ru/ru_regions.py:40\nmsgid \"Tyva, Respublika (Tuva)\"\nmsgstr \"Tyva, Respublika (Tuva)\"\n\n#: ru/ru_regions.py:41\nmsgid \"Udmurtskaya Respublika\"\nmsgstr \"Udmurtskaya Respublika\"\n\n#: ru/ru_regions.py:42\nmsgid \"Khakassiya, Respublika\"\nmsgstr \"Khakassiya, Respublika\"\n\n#: ru/ru_regions.py:43\nmsgid \"Chechenskaya Respublika\"\nmsgstr \"Chechenskaya Respublika\"\n\n#: ru/ru_regions.py:44\nmsgid \"Chuvashskaya Respublika\"\nmsgstr \"Chuvashskaya Respublika\"\n\n#: ru/ru_regions.py:45\nmsgid \"Altayskiy Kray\"\nmsgstr \"Altayskiy Kray\"\n\n#: ru/ru_regions.py:46\nmsgid \"Zabaykalskiy Kray\"\nmsgstr \"Zabaykalskiy Kray\"\n\n#: ru/ru_regions.py:47\nmsgid \"Kamchatskiy Kray\"\nmsgstr \"Kamchatskiy Kray\"\n\n#: ru/ru_regions.py:48\nmsgid \"Krasnodarskiy Kray\"\nmsgstr \"Krasnodarskiy Kray\"\n\n#: ru/ru_regions.py:49\nmsgid \"Krasnoyarskiy Kray\"\nmsgstr \"Krasnoyarskiy Kray\"\n\n#: ru/ru_regions.py:50\nmsgid \"Permskiy Kray\"\nmsgstr \"Permskiy Kray\"\n\n#: ru/ru_regions.py:51\nmsgid \"Primorskiy Kray\"\nmsgstr \"Primorskiy Kray\"\n\n#: ru/ru_regions.py:52\nmsgid \"Stavropol'siyy Kray\"\nmsgstr \"Stavropol'siyy Kray\"\n\n#: ru/ru_regions.py:53\nmsgid \"Khabarovskiy Kray\"\nmsgstr \"Khabarovskiy Kray\"\n\n#: ru/ru_regions.py:54\nmsgid \"Amurskaya oblast'\"\nmsgstr \"Amurskaya oblast'\"\n\n#: ru/ru_regions.py:55\nmsgid \"Arkhangel'skaya oblast'\"\nmsgstr \"Arkhangel'skaya oblast'\"\n\n#: ru/ru_regions.py:56\nmsgid \"Astrakhanskaya oblast'\"\nmsgstr \"Astrakhanskaya oblast'\"\n\n#: ru/ru_regions.py:57\nmsgid \"Belgorodskaya oblast'\"\nmsgstr \"Belgorodskaya oblast'\"\n\n#: ru/ru_regions.py:58\nmsgid \"Bryanskaya oblast'\"\nmsgstr \"Bryanskaya oblast'\"\n\n#: ru/ru_regions.py:59\nmsgid \"Vladimirskaya oblast'\"\nmsgstr \"Vladimirskaya oblast'\"\n\n#: ru/ru_regions.py:60\nmsgid \"Volgogradskaya oblast'\"\nmsgstr \"Volgogradskaya oblast'\"\n\n#: ru/ru_regions.py:61\nmsgid \"Vologodskaya oblast'\"\nmsgstr \"Vologodskaya oblast'\"\n\n#: ru/ru_regions.py:62\nmsgid \"Voronezhskaya oblast'\"\nmsgstr \"Voronezhskaya oblast'\"\n\n#: ru/ru_regions.py:63\nmsgid \"Ivanovskaya oblast'\"\nmsgstr \"Ivanovskaya oblast'\"\n\n#: ru/ru_regions.py:64\nmsgid \"Irkutskaya oblast'\"\nmsgstr \"Irkutskaya oblast'\"\n\n#: ru/ru_regions.py:65\nmsgid \"Kaliningradskaya oblast'\"\nmsgstr \"Kaliningradskaya oblast'\"\n\n#: ru/ru_regions.py:66\nmsgid \"Kaluzhskaya oblast'\"\nmsgstr \"Kaluzhskaya oblast'\"\n\n#: ru/ru_regions.py:67\nmsgid \"Kemerovskaya oblast'\"\nmsgstr \"Kemerovskaya oblast'\"\n\n#: ru/ru_regions.py:68\nmsgid \"Kirovskaya oblast'\"\nmsgstr \"Kirovskaya oblast'\"\n\n#: ru/ru_regions.py:69\nmsgid \"Kostromskaya oblast'\"\nmsgstr \"Kostromskaya oblast'\"\n\n#: ru/ru_regions.py:70\nmsgid \"Kurganskaya oblast'\"\nmsgstr \"Kurganskaya oblast'\"\n\n#: ru/ru_regions.py:71\nmsgid \"Kurskaya oblast'\"\nmsgstr \"Kurskaya oblast'\"\n\n#: ru/ru_regions.py:72\nmsgid \"Leningradskaya oblast'\"\nmsgstr \"Leningradskaya oblast'\"\n\n#: ru/ru_regions.py:73\nmsgid \"Lipeckaya oblast'\"\nmsgstr \"Lipeckaya oblast'\"\n\n#: ru/ru_regions.py:74\nmsgid \"Magadanskaya oblast'\"\nmsgstr \"Magadanskaya oblast'\"\n\n#: ru/ru_regions.py:75\nmsgid \"Murmanskaya oblast'\"\nmsgstr \"Murmanskaya oblast'\"\n\n#: ru/ru_regions.py:76\nmsgid \"Nizhegorodskaja oblast'\"\nmsgstr \"Nizhegorodskaja oblast'\"\n\n#: ru/ru_regions.py:77\nmsgid \"Novgorodskaya oblast'\"\nmsgstr \"Novgorodskaya oblast'\"\n\n#: ru/ru_regions.py:78\nmsgid \"Novosibirskaya oblast'\"\nmsgstr \"Novosibirskaya oblast'\"\n\n#: ru/ru_regions.py:79\nmsgid \"Omskaya oblast'\"\nmsgstr \"Omskaya oblast'\"\n\n#: ru/ru_regions.py:80\nmsgid \"Orenburgskaya oblast'\"\nmsgstr \"Orenburgskaya oblast'\"\n\n#: ru/ru_regions.py:81\nmsgid \"Orlovskaya oblast'\"\nmsgstr \"Orlovskaya oblast'\"\n\n#: ru/ru_regions.py:82\nmsgid \"Penzenskaya oblast'\"\nmsgstr \"Penzenskaya oblast'\"\n\n#: ru/ru_regions.py:83\nmsgid \"Pskovskaya oblast'\"\nmsgstr \"Pskovskaya oblast'\"\n\n#: ru/ru_regions.py:84\nmsgid \"Rostovskaya oblast'\"\nmsgstr \"Rostovskaya oblast'\"\n\n#: ru/ru_regions.py:85\nmsgid \"Rjazanskaya oblast'\"\nmsgstr \"Rjazanskaya oblast'\"\n\n#: ru/ru_regions.py:86\nmsgid \"Samarskaya oblast'\"\nmsgstr \"Samarskaya oblast'\"\n\n#: ru/ru_regions.py:87\nmsgid \"Saratovskaya oblast'\"\nmsgstr \"Saratovskaya oblast'\"\n\n#: ru/ru_regions.py:88\nmsgid \"Sakhalinskaya oblast'\"\nmsgstr \"Sakhalinskaya oblast'\"\n\n#: ru/ru_regions.py:89\nmsgid \"Sverdlovskaya oblast'\"\nmsgstr \"Sverdlovskaya oblast'\"\n\n#: ru/ru_regions.py:90\nmsgid \"Smolenskaya oblast'\"\nmsgstr \"Smolenskaya oblast'\"\n\n#: ru/ru_regions.py:91\nmsgid \"Tambovskaya oblast'\"\nmsgstr \"Tambovskaya oblast'\"\n\n#: ru/ru_regions.py:92\nmsgid \"Tverskaya oblast'\"\nmsgstr \"Tverskaya oblast'\"\n\n#: ru/ru_regions.py:93\nmsgid \"Tomskaya oblast'\"\nmsgstr \"Tomskaya oblast'\"\n\n#: ru/ru_regions.py:94\nmsgid \"Tul'skaya oblast'\"\nmsgstr \"Tul'skaya oblast'\"\n\n#: ru/ru_regions.py:95\nmsgid \"Tyumenskaya oblast'\"\nmsgstr \"Tyumenskaya oblast'\"\n\n#: ru/ru_regions.py:96\nmsgid \"Ul'ianovskaya oblast'\"\nmsgstr \"Ul'ianovskaya oblast'\"\n\n#: ru/ru_regions.py:97\nmsgid \"Chelyabinskaya oblast'\"\nmsgstr \"Chelyabinskaya oblast'\"\n\n#: ru/ru_regions.py:98\nmsgid \"Yaroslavskaya oblast'\"\nmsgstr \"Yaroslavskaya oblast'\"\n\n#: ru/ru_regions.py:99\nmsgid \"Evreyskaya avtonomnaja oblast'\"\nmsgstr \"Evreyskaya avtonomnaja oblast'\"\n\n#: ru/ru_regions.py:100\nmsgid \"Neneckiy autonomnyy okrug\"\nmsgstr \"Neneckiy autonomnyy okrug\"\n\n#: ru/ru_regions.py:101\nmsgid \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\nmsgstr \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\n\n#: ru/ru_regions.py:102\nmsgid \"Chukotskiy avtonomnyy okrug\"\nmsgstr \"Chukotskiy avtonomnyy okrug\"\n\n#: ru/ru_regions.py:103\nmsgid \"Yamalo-Neneckiy avtonomnyy okrug\"\nmsgstr \"Yamalo-Neneckiy avtonomnyy okrug\"\n\n#: se/forms.py:54\nmsgid \"Enter a valid Swedish organisation number.\"\nmsgstr \"Masukkan nomor organisasi Swedia yang valid.\"\n\n#: se/forms.py:111\nmsgid \"Enter a valid Swedish personal identity number.\"\nmsgstr \"Masukkan nomor identifikasi pribadi Swedia yang valid.\"\n\n#: se/forms.py:112\nmsgid \"Co-ordination numbers are not allowed.\"\nmsgstr \"Nomor koordinasi tidak diperbolehkan.\"\n\n#: se/forms.py:154\nmsgid \"Enter a Swedish postal code in the format XXXXX.\"\nmsgstr \"Masukkan kode pos Swedia dalam format XXXXX.\"\n\n#: se/se_counties.py:16\nmsgid \"Stockholm\"\nmsgstr \"Stockholm\"\n\n#: se/se_counties.py:17\nmsgid \"Västerbotten\"\nmsgstr \"Västerbotten\"\n\n#: se/se_counties.py:18\nmsgid \"Norrbotten\"\nmsgstr \"Norrbotten\"\n\n#: se/se_counties.py:19\nmsgid \"Uppsala\"\nmsgstr \"Uppsala\"\n\n#: se/se_counties.py:20\nmsgid \"Södermanland\"\nmsgstr \"Södermanland\"\n\n#: se/se_counties.py:21\nmsgid \"Östergötland\"\nmsgstr \"Östergötland\"\n\n#: se/se_counties.py:22\nmsgid \"Jönköping\"\nmsgstr \"Jönköping\"\n\n#: se/se_counties.py:23\nmsgid \"Kronoberg\"\nmsgstr \"Kronoberg\"\n\n#: se/se_counties.py:24\nmsgid \"Kalmar\"\nmsgstr \"Kalmar\"\n\n#: se/se_counties.py:25\nmsgid \"Gotland\"\nmsgstr \"Gotland\"\n\n#: se/se_counties.py:26\nmsgid \"Blekinge\"\nmsgstr \"Blekinge\"\n\n#: se/se_counties.py:27\nmsgid \"Skåne\"\nmsgstr \"Skåne\"\n\n#: se/se_counties.py:28\nmsgid \"Halland\"\nmsgstr \"Halland\"\n\n#: se/se_counties.py:29\nmsgid \"Västra Götaland\"\nmsgstr \"Västra Götaland\"\n\n#: se/se_counties.py:30\nmsgid \"Värmland\"\nmsgstr \"Värmland\"\n\n#: se/se_counties.py:31\nmsgid \"Örebro\"\nmsgstr \"Örebro\"\n\n#: se/se_counties.py:32\nmsgid \"Västmanland\"\nmsgstr \"Västmanland\"\n\n#: se/se_counties.py:33\nmsgid \"Dalarna\"\nmsgstr \"Dalarna\"\n\n#: se/se_counties.py:34\nmsgid \"Gävleborg\"\nmsgstr \"Gävleborg\"\n\n#: se/se_counties.py:35\nmsgid \"Västernorrland\"\nmsgstr \"Västernorrland\"\n\n#: se/se_counties.py:36\nmsgid \"Jämtland\"\nmsgstr \"Jämtland\"\n\n#: si/forms.py:25\nmsgid \"The first 7 digits of the EMSO must represent a valid past date.\"\nmsgstr \"7 angka pertama EMSO harus mewakili tanggal di masa lalu yang valid\"\n\n#: si/forms.py:26\nmsgid \"The EMSO is not valid.\"\nmsgstr \"EMSO tidak valid.\"\n\n#: si/forms.py:86\nmsgid \"Enter a valid tax number in form SIXXXXXXXX\"\nmsgstr \"Masukkan nomor pajak yang valid dalam format SIXXXXXXXX\"\n\n#: si/forms.py:151\nmsgid \"Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.\"\nmsgstr \"Masukkan nomor telepon dalam format +386XXXXXXXX atau 0XXXXXXXX.\"\n\n#: sk/sk_districts.py:8\nmsgid \"Banska Bystrica\"\nmsgstr \"Banska Bystrica\"\n\n#: sk/sk_districts.py:9\nmsgid \"Banska Stiavnica\"\nmsgstr \"Banska Stiavnica\"\n\n#: sk/sk_districts.py:10\nmsgid \"Bardejov\"\nmsgstr \"Bardejov\"\n\n#: sk/sk_districts.py:11\nmsgid \"Banovce nad Bebravou\"\nmsgstr \"Banovce nad Bebravou\"\n\n#: sk/sk_districts.py:12\nmsgid \"Brezno\"\nmsgstr \"Brezno\"\n\n#: sk/sk_districts.py:13\nmsgid \"Bratislava I\"\nmsgstr \"Bratislava I\"\n\n#: sk/sk_districts.py:14\nmsgid \"Bratislava II\"\nmsgstr \"Bratislava II\"\n\n#: sk/sk_districts.py:15\nmsgid \"Bratislava III\"\nmsgstr \"Bratislava III\"\n\n#: sk/sk_districts.py:16\nmsgid \"Bratislava IV\"\nmsgstr \"Bratislava IV\"\n\n#: sk/sk_districts.py:17\nmsgid \"Bratislava V\"\nmsgstr \"Bratislava V\"\n\n#: sk/sk_districts.py:18\nmsgid \"Bytca\"\nmsgstr \"Bytca\"\n\n#: sk/sk_districts.py:19\nmsgid \"Cadca\"\nmsgstr \"Cadca\"\n\n#: sk/sk_districts.py:20\nmsgid \"Detva\"\nmsgstr \"Detva\"\n\n#: sk/sk_districts.py:21\nmsgid \"Dolny Kubin\"\nmsgstr \"Dolny Kubin\"\n\n#: sk/sk_districts.py:22\nmsgid \"Dunajska Streda\"\nmsgstr \"Dunajska Streda\"\n\n#: sk/sk_districts.py:23\nmsgid \"Galanta\"\nmsgstr \"Galanta\"\n\n#: sk/sk_districts.py:24\nmsgid \"Gelnica\"\nmsgstr \"Gelnica\"\n\n#: sk/sk_districts.py:25\nmsgid \"Hlohovec\"\nmsgstr \"Hlohovec\"\n\n#: sk/sk_districts.py:26\nmsgid \"Humenne\"\nmsgstr \"Humenne\"\n\n#: sk/sk_districts.py:27\nmsgid \"Ilava\"\nmsgstr \"Ilava\"\n\n#: sk/sk_districts.py:28\nmsgid \"Kezmarok\"\nmsgstr \"Kezmarok\"\n\n#: sk/sk_districts.py:29\nmsgid \"Komarno\"\nmsgstr \"Komarno\"\n\n#: sk/sk_districts.py:30\nmsgid \"Kosice I\"\nmsgstr \"Kosice I\"\n\n#: sk/sk_districts.py:31\nmsgid \"Kosice II\"\nmsgstr \"Kosice II\"\n\n#: sk/sk_districts.py:32\nmsgid \"Kosice III\"\nmsgstr \"Kosice III\"\n\n#: sk/sk_districts.py:33\nmsgid \"Kosice IV\"\nmsgstr \"Kosice IV\"\n\n#: sk/sk_districts.py:34\nmsgid \"Kosice - okolie\"\nmsgstr \"Kosice - okolie\"\n\n#: sk/sk_districts.py:35\nmsgid \"Krupina\"\nmsgstr \"Krupina\"\n\n#: sk/sk_districts.py:36\nmsgid \"Kysucke Nove Mesto\"\nmsgstr \"Kysucke Nove Mesto\"\n\n#: sk/sk_districts.py:37\nmsgid \"Levice\"\nmsgstr \"Levice\"\n\n#: sk/sk_districts.py:38\nmsgid \"Levoca\"\nmsgstr \"Levoca\"\n\n#: sk/sk_districts.py:39\nmsgid \"Liptovsky Mikulas\"\nmsgstr \"Liptovsky Mikulas\"\n\n#: sk/sk_districts.py:40\nmsgid \"Lucenec\"\nmsgstr \"Lucenec\"\n\n#: sk/sk_districts.py:41\nmsgid \"Malacky\"\nmsgstr \"Malacky\"\n\n#: sk/sk_districts.py:42\nmsgid \"Martin\"\nmsgstr \"Martin\"\n\n#: sk/sk_districts.py:43\nmsgid \"Medzilaborce\"\nmsgstr \"Medzilaborce\"\n\n#: sk/sk_districts.py:44\nmsgid \"Michalovce\"\nmsgstr \"Michalovce\"\n\n#: sk/sk_districts.py:45\nmsgid \"Myjava\"\nmsgstr \"Myjava\"\n\n#: sk/sk_districts.py:46\nmsgid \"Namestovo\"\nmsgstr \"Namestovo\"\n\n#: sk/sk_districts.py:47\nmsgid \"Nitra\"\nmsgstr \"Nitra\"\n\n#: sk/sk_districts.py:48\nmsgid \"Nove Mesto nad Vahom\"\nmsgstr \"Nove Mesto nad Vahom\"\n\n#: sk/sk_districts.py:49\nmsgid \"Nove Zamky\"\nmsgstr \"Nove Zamky\"\n\n#: sk/sk_districts.py:50\nmsgid \"Partizanske\"\nmsgstr \"Partizanske\"\n\n#: sk/sk_districts.py:51\nmsgid \"Pezinok\"\nmsgstr \"Pezinok\"\n\n#: sk/sk_districts.py:52\nmsgid \"Piestany\"\nmsgstr \"Piestany\"\n\n#: sk/sk_districts.py:53\nmsgid \"Poltar\"\nmsgstr \"Poltar\"\n\n#: sk/sk_districts.py:54\nmsgid \"Poprad\"\nmsgstr \"Poprad\"\n\n#: sk/sk_districts.py:55\nmsgid \"Povazska Bystrica\"\nmsgstr \"Povazska Bystrica\"\n\n#: sk/sk_districts.py:56\nmsgid \"Presov\"\nmsgstr \"Presov\"\n\n#: sk/sk_districts.py:57\nmsgid \"Prievidza\"\nmsgstr \"Prievidza\"\n\n#: sk/sk_districts.py:58\nmsgid \"Puchov\"\nmsgstr \"Puchov\"\n\n#: sk/sk_districts.py:59\nmsgid \"Revuca\"\nmsgstr \"Revuca\"\n\n#: sk/sk_districts.py:60\nmsgid \"Rimavska Sobota\"\nmsgstr \"Rimavska Sobota\"\n\n#: sk/sk_districts.py:61\nmsgid \"Roznava\"\nmsgstr \"Roznava\"\n\n#: sk/sk_districts.py:62\nmsgid \"Ruzomberok\"\nmsgstr \"Ruzomberok\"\n\n#: sk/sk_districts.py:63\nmsgid \"Sabinov\"\nmsgstr \"Sabinov\"\n\n#: sk/sk_districts.py:64\nmsgid \"Senec\"\nmsgstr \"Senec\"\n\n#: sk/sk_districts.py:65\nmsgid \"Senica\"\nmsgstr \"Senica\"\n\n#: sk/sk_districts.py:66\nmsgid \"Skalica\"\nmsgstr \"Skalica\"\n\n#: sk/sk_districts.py:67\nmsgid \"Snina\"\nmsgstr \"Snina\"\n\n#: sk/sk_districts.py:68\nmsgid \"Sobrance\"\nmsgstr \"Sobrance\"\n\n#: sk/sk_districts.py:69\nmsgid \"Spisska Nova Ves\"\nmsgstr \"Spisska Nova Ves\"\n\n#: sk/sk_districts.py:70\nmsgid \"Stara Lubovna\"\nmsgstr \"Stara Lubovna\"\n\n#: sk/sk_districts.py:71\nmsgid \"Stropkov\"\nmsgstr \"Stropkov\"\n\n#: sk/sk_districts.py:72\nmsgid \"Svidnik\"\nmsgstr \"Svidnik\"\n\n#: sk/sk_districts.py:73\nmsgid \"Sala\"\nmsgstr \"Sala\"\n\n#: sk/sk_districts.py:74\nmsgid \"Topolcany\"\nmsgstr \"Topolcany\"\n\n#: sk/sk_districts.py:75\nmsgid \"Trebisov\"\nmsgstr \"Trebisov\"\n\n#: sk/sk_districts.py:76\nmsgid \"Trencin\"\nmsgstr \"Trencin\"\n\n#: sk/sk_districts.py:77\nmsgid \"Trnava\"\nmsgstr \"Trnava\"\n\n#: sk/sk_districts.py:78\nmsgid \"Turcianske Teplice\"\nmsgstr \"Turcianske Teplice\"\n\n#: sk/sk_districts.py:79\nmsgid \"Tvrdosin\"\nmsgstr \"Tvrdosin\"\n\n#: sk/sk_districts.py:80\nmsgid \"Velky Krtis\"\nmsgstr \"Velky Krtis\"\n\n#: sk/sk_districts.py:81\nmsgid \"Vranov nad Toplou\"\nmsgstr \"Vranov nad Toplou\"\n\n#: sk/sk_districts.py:82\nmsgid \"Zlate Moravce\"\nmsgstr \"Zlate Moravce\"\n\n#: sk/sk_districts.py:83\nmsgid \"Zvolen\"\nmsgstr \"Zvolen\"\n\n#: sk/sk_districts.py:84\nmsgid \"Zarnovica\"\nmsgstr \"Zarnovica\"\n\n#: sk/sk_districts.py:85\nmsgid \"Ziar nad Hronom\"\nmsgstr \"Ziar nad Hronom\"\n\n#: sk/sk_districts.py:86\nmsgid \"Zilina\"\nmsgstr \"Zilina\"\n\n#: sk/sk_regions.py:8\nmsgid \"Banska Bystrica region\"\nmsgstr \"Daerah Banska Bystrica\"\n\n#: sk/sk_regions.py:9\nmsgid \"Bratislava region\"\nmsgstr \"Daerah Brastilava\"\n\n#: sk/sk_regions.py:10\nmsgid \"Kosice region\"\nmsgstr \"Daerah Kosice\"\n\n#: sk/sk_regions.py:11\nmsgid \"Nitra region\"\nmsgstr \"Daerah Nitra\"\n\n#: sk/sk_regions.py:12\nmsgid \"Presov region\"\nmsgstr \"Daerah Presov\"\n\n#: sk/sk_regions.py:13\nmsgid \"Trencin region\"\nmsgstr \"Daerah Trencin\"\n\n#: sk/sk_regions.py:14\nmsgid \"Trnava region\"\nmsgstr \"Daerah Trnava\"\n\n#: sk/sk_regions.py:15\nmsgid \"Zilina region\"\nmsgstr \"Daerah Zilina\"\n\n#: tr/forms.py:21\nmsgid \"Enter a postal code in the format XXXXX.\"\nmsgstr \"Masukkan kode pos dalam format XXXXX.\"\n\n#: tr/forms.py:42\nmsgid \"Phone numbers must be in 0XXX XXX XXXX format.\"\nmsgstr \"Nomor telepon harus dalam format 0XXX XXX XXXX.\"\n\n#: tr/forms.py:69\nmsgid \"Enter a valid Turkish Identification number.\"\nmsgstr \"Masukkan nomor Identifikasi Turki yang valid.\"\n\n#: tr/forms.py:70\nmsgid \"Turkish Identification number must be 11 digits.\"\nmsgstr \"Jumlah angka pada Nomor Identifikasi Turki harus sebanyak 11 angka.\"\n\n#: us/forms.py:21\nmsgid \"Enter a zip code in the format XXXXX or XXXXX-XXXX.\"\nmsgstr \"Masukkan kode pos dalam format XXXXX atau XXXXX-XXXX.\"\n\n#: us/forms.py:59\nmsgid \"Enter a valid U.S. Social Security number in XXX-XX-XXXX format.\"\nmsgstr \"\"\n\"Masukkan nomor Jaminan Sosial A.S. yang valid dalam format XXX-XX-XXXX.\"\n\n#: us/forms.py:92\nmsgid \"Enter a U.S. state or territory.\"\nmsgstr \"Masukkan negara bagian atau teritori A.S.\"\n\n#: us/models.py:8\nmsgid \"U.S. state (two uppercase letters)\"\nmsgstr \"Negara bagian A.S. (dua huruf besar)\"\n\n#: us/models.py:17\nmsgid \"U.S. postal code (two uppercase letters)\"\nmsgstr \"Kode pos A.S. (dua huruf besar)\"\n\n#: us/models.py:26\nmsgid \"Phone number\"\nmsgstr \"Nomor telepon\"\n\n#: uy/forms.py:29\nmsgid \"Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.\"\nmsgstr \"\"\n\"Masukkan nomor CI yang valid dalam format X.XXX.XXX-X,XXXXXXX-X atau \"\n\"XXXXXXXX.\"\n\n#: uy/forms.py:31\nmsgid \"Enter a valid CI number.\"\nmsgstr \"Masukkan nomor CI yang valid.\"\n\n#: za/forms.py:22\nmsgid \"Enter a valid South African ID number\"\nmsgstr \"Masukkan nomor ID Afrika Selatan yang valid\"\n\n#: za/forms.py:56\nmsgid \"Enter a valid South African postal code\"\nmsgstr \"Masukkan kode pos Afrika Selatan yang valid\"\n\n#: za/za_provinces.py:4\nmsgid \"Eastern Cape\"\nmsgstr \"Eastern Cape\"\n\n#: za/za_provinces.py:5\nmsgid \"Free State\"\nmsgstr \"Free State\"\n\n#: za/za_provinces.py:6\nmsgid \"Gauteng\"\nmsgstr \"Gauteng\"\n\n#: za/za_provinces.py:7\nmsgid \"KwaZulu-Natal\"\nmsgstr \"KwaZulu-Natal\"\n\n#: za/za_provinces.py:8\nmsgid \"Limpopo\"\nmsgstr \"Limpopo\"\n\n#: za/za_provinces.py:9\nmsgid \"Mpumalanga\"\nmsgstr \"Mpumalanga\"\n\n#: za/za_provinces.py:10\nmsgid \"Northern Cape\"\nmsgstr \"Northern Cape\"\n\n#: za/za_provinces.py:11\nmsgid \"North West\"\nmsgstr \"North West\"\n\n#: za/za_provinces.py:12\nmsgid \"Western Cape\"\nmsgstr \"Western Cape\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/locale/is/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <gudmundur.bjarni@gmail.com>, 2012.\n# Hafsteinn Einarsson <haffi67@gmail.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-10-17 09:16+0000\\n\"\n\"Last-Translator: gudmundur <gudmundur.bjarni@gmail.com>\\n\"\n\"Language-Team: Icelandic (http://www.transifex.com/projects/p/django/\"\n\"language/is/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: is\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: ar/forms.py:30\nmsgid \"Enter a postal code in the format NNNN or ANNNNAAA.\"\nmsgstr \"Færðu inn póstnúmer í sniðinu NNNN eða ANNNNAAA.\"\n\n#: ar/forms.py:52 br/forms.py:95 br/forms.py:134 pe/forms.py:27 pe/forms.py:55\nmsgid \"This field requires only numbers.\"\nmsgstr \"Þessi reitur tekur aðeins tölugildi.\"\n\n#: ar/forms.py:53\nmsgid \"This field requires 7 or 8 digits.\"\nmsgstr \"Þessi reitur krefst 7 eða 8 tölustafa.\"\n\n#: ar/forms.py:82\nmsgid \"Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.\"\nmsgstr \"Færðu inn gilt CUIT í XX-XXXXXXXX-X eða XXXXXXXXXXXX sniðinu.\"\n\n#: ar/forms.py:83\nmsgid \"Invalid CUIT.\"\nmsgstr \"Ógilt CUIT.\"\n\n#: ar/forms.py:84\nmsgid \"Invalid legal type. Type must be 27, 20, 23 or 30.\"\nmsgstr \"\"\n\n#: at/at_states.py:5\nmsgid \"Burgenland\"\nmsgstr \"Burgenland\"\n\n#: at/at_states.py:6\nmsgid \"Carinthia\"\nmsgstr \"Karinþía\"\n\n#: at/at_states.py:7\nmsgid \"Lower Austria\"\nmsgstr \"Neðra Austurríki\"\n\n#: at/at_states.py:8\nmsgid \"Upper Austria\"\nmsgstr \"Efra Austurríki\"\n\n#: at/at_states.py:9\nmsgid \"Salzburg\"\nmsgstr \"Salzburg\"\n\n#: at/at_states.py:10\nmsgid \"Styria\"\nmsgstr \"Styría\"\n\n#: at/at_states.py:11\nmsgid \"Tyrol\"\nmsgstr \"Týról\"\n\n#: at/at_states.py:12\nmsgid \"Vorarlberg\"\nmsgstr \"Vorarlberg\"\n\n#: at/at_states.py:13\nmsgid \"Vienna\"\nmsgstr \"Vín\"\n\n#: at/forms.py:22 ch/forms.py:22 no/forms.py:19\nmsgid \"Enter a zip code in the format XXXX.\"\nmsgstr \"Sláðu inn póstnúmer á sniðinu XXXX.\"\n\n#: at/forms.py:50\nmsgid \"Enter a valid Austrian Social Security Number in XXXX XXXXXX format.\"\nmsgstr \"Sláðu inn gilda austurríska kennitölu á forminu XXXX XXXXXX.\"\n\n#: au/forms.py:26\nmsgid \"Enter a 4 digit postcode.\"\nmsgstr \"\"\n\n#: au/models.py:9\nmsgid \"Australian State\"\nmsgstr \"\"\n\n#: au/models.py:19\nmsgid \"Australian Postcode\"\nmsgstr \"\"\n\n#: au/models.py:33\nmsgid \"Australian Phone number\"\nmsgstr \"\"\n\n#: be/be_provinces.py:5\nmsgid \"Antwerp\"\nmsgstr \"Antwerpen\"\n\n#: be/be_provinces.py:6\nmsgid \"Brussels\"\nmsgstr \"Brussel\"\n\n#: be/be_provinces.py:7\nmsgid \"East Flanders\"\nmsgstr \"Austur flæmingjaland\"\n\n#: be/be_provinces.py:8\nmsgid \"Flemish Brabant\"\nmsgstr \"Flæmska Brabant\"\n\n#: be/be_provinces.py:9\nmsgid \"Hainaut\"\nmsgstr \"Hainaut\"\n\n#: be/be_provinces.py:10\nmsgid \"Liege\"\nmsgstr \"Liege\"\n\n#: be/be_provinces.py:11 nl/nl_provinces.py:9\nmsgid \"Limburg\"\nmsgstr \"Limaborg\"\n\n#: be/be_provinces.py:12\nmsgid \"Luxembourg\"\nmsgstr \"Lúxembúrg\"\n\n#: be/be_provinces.py:13\nmsgid \"Namur\"\nmsgstr \"Namúr\"\n\n#: be/be_provinces.py:14\nmsgid \"Walloon Brabant\"\nmsgstr \"Vallónska Brabant\"\n\n#: be/be_provinces.py:15\nmsgid \"West Flanders\"\nmsgstr \"Vestur flæmingjaland\"\n\n#: be/be_regions.py:5\nmsgid \"Brussels Capital Region\"\nmsgstr \"Höfuðborgarsvæðið Brussel\"\n\n#: be/be_regions.py:6\nmsgid \"Flemish Region\"\nmsgstr \"Flæmska svæðið\"\n\n#: be/be_regions.py:7\nmsgid \"Wallonia\"\nmsgstr \"Vallónía\"\n\n#: be/forms.py:25\nmsgid \"Enter a valid postal code in the range and format 1XXX - 9XXX.\"\nmsgstr \"Sláðu inn gilt póstnúmer á sniðinu 1XXX-9XXX\"\n\n#: be/forms.py:48\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\nmsgstr \"\"\n\"Sláðu inn gilt símanúmer á einu af eftirfarandi sniðum: 0x xxx xx xx, 0xx xx \"\n\"xx xx, 04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.\"\n\"xx, 0xx.xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\n\n#: br/forms.py:22\nmsgid \"Enter a zip code in the format XXXXX-XXX.\"\nmsgstr \"Sláðu inn zip póstfang í sniðinu XXXXX-XXX.\"\n\n#: br/forms.py:31\nmsgid \"Phone numbers must be in XX-XXXX-XXXX format.\"\nmsgstr \"Símanúmer verða að vera í XXX-XXX-XXXX sniði.\"\n\n#: br/forms.py:58\nmsgid \"\"\n\"Select a valid brazilian state. That state is not one of the available \"\n\"states.\"\nmsgstr \"Veldu gilt brasilískt fylki. Fylkið er ekki eitt af gildum fylkjum.\"\n\n#: br/forms.py:93\nmsgid \"Invalid CPF number.\"\nmsgstr \"Ógilt CPF númer.\"\n\n#: br/forms.py:94\nmsgid \"This field requires at most 11 digits or 14 characters.\"\nmsgstr \"Í þennan reit má setja inn í mesta lagi 11 tölustafi eða 14 bókstafi.\"\n\n#: br/forms.py:133\nmsgid \"Invalid CNPJ number.\"\nmsgstr \"Ógilt CNPJ númer.\"\n\n#: br/forms.py:135\nmsgid \"This field requires at least 14 digits\"\nmsgstr \"Þessi reitur krefst að minnsta kosti 14 tölustafa.\"\n\n#: ca/forms.py:29\nmsgid \"Enter a postal code in the format XXX XXX.\"\nmsgstr \"Sláðu inn póstnúmer á sniðinu XXX XXX.\"\n\n#: ca/forms.py:47 us/forms.py:30\nmsgid \"Phone numbers must be in XXX-XXX-XXXX format.\"\nmsgstr \"\"\n\n#: ca/forms.py:69\nmsgid \"Enter a Canadian province or territory.\"\nmsgstr \"\"\n\n#: ca/forms.py:110\nmsgid \"Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.\"\nmsgstr \"Sláðu inn gilda kanadíska kennitölu á forminu XXX-XXX-XXX.\"\n\n#: ch/ch_states.py:5\nmsgid \"Aargau\"\nmsgstr \"Aargau\"\n\n#: ch/ch_states.py:6\nmsgid \"Appenzell Innerrhoden\"\nmsgstr \"\"\n\n#: ch/ch_states.py:7\nmsgid \"Appenzell Ausserrhoden\"\nmsgstr \"\"\n\n#: ch/ch_states.py:8\nmsgid \"Basel-Stadt\"\nmsgstr \"\"\n\n#: ch/ch_states.py:9\nmsgid \"Basel-Land\"\nmsgstr \"\"\n\n#: ch/ch_states.py:10\nmsgid \"Berne\"\nmsgstr \"\"\n\n#: ch/ch_states.py:11\nmsgid \"Fribourg\"\nmsgstr \"\"\n\n#: ch/ch_states.py:12\nmsgid \"Geneva\"\nmsgstr \"Genf\"\n\n#: ch/ch_states.py:13\nmsgid \"Glarus\"\nmsgstr \"\"\n\n#: ch/ch_states.py:14\nmsgid \"Graubuenden\"\nmsgstr \"\"\n\n#: ch/ch_states.py:15\nmsgid \"Jura\"\nmsgstr \"\"\n\n#: ch/ch_states.py:16\nmsgid \"Lucerne\"\nmsgstr \"\"\n\n#: ch/ch_states.py:17\nmsgid \"Neuchatel\"\nmsgstr \"\"\n\n#: ch/ch_states.py:18\nmsgid \"Nidwalden\"\nmsgstr \"\"\n\n#: ch/ch_states.py:19\nmsgid \"Obwalden\"\nmsgstr \"\"\n\n#: ch/ch_states.py:20\nmsgid \"Schaffhausen\"\nmsgstr \"\"\n\n#: ch/ch_states.py:21\nmsgid \"Schwyz\"\nmsgstr \"\"\n\n#: ch/ch_states.py:22\nmsgid \"Solothurn\"\nmsgstr \"\"\n\n#: ch/ch_states.py:23\nmsgid \"St. Gallen\"\nmsgstr \"\"\n\n#: ch/ch_states.py:24\nmsgid \"Thurgau\"\nmsgstr \"\"\n\n#: ch/ch_states.py:25\nmsgid \"Ticino\"\nmsgstr \"\"\n\n#: ch/ch_states.py:26\nmsgid \"Uri\"\nmsgstr \"\"\n\n#: ch/ch_states.py:27\nmsgid \"Valais\"\nmsgstr \"\"\n\n#: ch/ch_states.py:28\nmsgid \"Vaud\"\nmsgstr \"\"\n\n#: ch/ch_states.py:29\nmsgid \"Zug\"\nmsgstr \"\"\n\n#: ch/ch_states.py:30\nmsgid \"Zurich\"\nmsgstr \"\"\n\n#: ch/forms.py:37\nmsgid \"Phone numbers must be in 0XX XXX XX XX format.\"\nmsgstr \"\"\n\n#: ch/forms.py:68\nmsgid \"\"\n\"Enter a valid Swiss identity or passport card number in X1234567<0 or \"\n\"1234567890 format.\"\nmsgstr \"\"\n\n#: cl/forms.py:32\nmsgid \"Enter a valid Chilean RUT.\"\nmsgstr \"\"\n\n#: cl/forms.py:33\nmsgid \"Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.\"\nmsgstr \"\"\n\n#: cl/forms.py:34\nmsgid \"The Chilean RUT is not valid.\"\nmsgstr \"\"\n\n#: cn/forms.py:84\nmsgid \"Enter a post code in the format XXXXXX.\"\nmsgstr \"\"\n\n#: cn/forms.py:105\nmsgid \"ID Card Number consists of 15 or 18 digits.\"\nmsgstr \"\"\n\n#: cn/forms.py:106\nmsgid \"Invalid ID Card Number: Wrong checksum\"\nmsgstr \"\"\n\n#: cn/forms.py:107\nmsgid \"Invalid ID Card Number: Wrong birthdate\"\nmsgstr \"\"\n\n#: cn/forms.py:108\nmsgid \"Invalid ID Card Number: Wrong location code\"\nmsgstr \"\"\n\n#: cn/forms.py:193\nmsgid \"Enter a valid phone number.\"\nmsgstr \"\"\n\n#: cn/forms.py:210\nmsgid \"Enter a valid cell number.\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:8\nmsgid \"Prague\"\nmsgstr \"Prag\"\n\n#: cz/cz_regions.py:9\nmsgid \"Central Bohemian Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:10\nmsgid \"South Bohemian Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:11\nmsgid \"Pilsen Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:12\nmsgid \"Carlsbad Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:13\nmsgid \"Usti Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:14\nmsgid \"Liberec Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:15\nmsgid \"Hradec Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:16\nmsgid \"Pardubice Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:17\nmsgid \"Vysocina Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:18\nmsgid \"South Moravian Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:19\nmsgid \"Olomouc Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:20\nmsgid \"Zlin Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:21\nmsgid \"Moravian-Silesian Region\"\nmsgstr \"\"\n\n#: cz/forms.py:32 sk/forms.py:33\nmsgid \"Enter a postal code in the format XXXXX or XXX XX.\"\nmsgstr \"\"\n\n#: cz/forms.py:52\nmsgid \"Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.\"\nmsgstr \"\"\n\n#: cz/forms.py:53\nmsgid \"Enter a valid birth number.\"\nmsgstr \"\"\n\n#: cz/forms.py:102\nmsgid \"Enter a valid IC number.\"\nmsgstr \"\"\n\n#: de/de_states.py:5\nmsgid \"Baden-Wuerttemberg\"\nmsgstr \"\"\n\n#: de/de_states.py:6\nmsgid \"Bavaria\"\nmsgstr \"\"\n\n#: de/de_states.py:7\nmsgid \"Berlin\"\nmsgstr \"\"\n\n#: de/de_states.py:8\nmsgid \"Brandenburg\"\nmsgstr \"\"\n\n#: de/de_states.py:9\nmsgid \"Bremen\"\nmsgstr \"Brimarborg\"\n\n#: de/de_states.py:10\nmsgid \"Hamburg\"\nmsgstr \"Hamborg\"\n\n#: de/de_states.py:11\nmsgid \"Hessen\"\nmsgstr \"Hesson\"\n\n#: de/de_states.py:12\nmsgid \"Mecklenburg-Western Pomerania\"\nmsgstr \"\"\n\n#: de/de_states.py:13\nmsgid \"Lower Saxony\"\nmsgstr \"Neðra-Saxland\"\n\n#: de/de_states.py:14\nmsgid \"North Rhine-Westphalia\"\nmsgstr \"\"\n\n#: de/de_states.py:15\nmsgid \"Rhineland-Palatinate\"\nmsgstr \"\"\n\n#: de/de_states.py:16\nmsgid \"Saarland\"\nmsgstr \"\"\n\n#: de/de_states.py:17\nmsgid \"Saxony\"\nmsgstr \"Saxland\"\n\n#: de/de_states.py:18\nmsgid \"Saxony-Anhalt\"\nmsgstr \"Saxland-Anhalt\"\n\n#: de/de_states.py:19\nmsgid \"Schleswig-Holstein\"\nmsgstr \"Slésvík-Holtsetaland\"\n\n#: de/de_states.py:20\nmsgid \"Thuringia\"\nmsgstr \"\"\n\n#: de/forms.py:20 fi/forms.py:18 fr/forms.py:20\nmsgid \"Enter a zip code in the format XXXXX.\"\nmsgstr \"Sláðu inn póstnúmer á sniðinu XXXXX.\"\n\n#: de/forms.py:46\nmsgid \"\"\n\"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"format.\"\nmsgstr \"\"\n\n#: es/es_provinces.py:5\nmsgid \"Araba\"\nmsgstr \"\"\n\n#: es/es_provinces.py:6\nmsgid \"Albacete\"\nmsgstr \"\"\n\n#: es/es_provinces.py:7\nmsgid \"Alacant\"\nmsgstr \"\"\n\n#: es/es_provinces.py:8\nmsgid \"Almeria\"\nmsgstr \"\"\n\n#: es/es_provinces.py:9\nmsgid \"Avila\"\nmsgstr \"\"\n\n#: es/es_provinces.py:10\nmsgid \"Badajoz\"\nmsgstr \"\"\n\n#: es/es_provinces.py:11\nmsgid \"Illes Balears\"\nmsgstr \"\"\n\n#: es/es_provinces.py:12\nmsgid \"Barcelona\"\nmsgstr \"\"\n\n#: es/es_provinces.py:13\nmsgid \"Burgos\"\nmsgstr \"\"\n\n#: es/es_provinces.py:14\nmsgid \"Caceres\"\nmsgstr \"\"\n\n#: es/es_provinces.py:15\nmsgid \"Cadiz\"\nmsgstr \"\"\n\n#: es/es_provinces.py:16\nmsgid \"Castello\"\nmsgstr \"\"\n\n#: es/es_provinces.py:17\nmsgid \"Ciudad Real\"\nmsgstr \"\"\n\n#: es/es_provinces.py:18\nmsgid \"Cordoba\"\nmsgstr \"\"\n\n#: es/es_provinces.py:19\nmsgid \"A Coruna\"\nmsgstr \"\"\n\n#: es/es_provinces.py:20\nmsgid \"Cuenca\"\nmsgstr \"\"\n\n#: es/es_provinces.py:21\nmsgid \"Girona\"\nmsgstr \"\"\n\n#: es/es_provinces.py:22\nmsgid \"Granada\"\nmsgstr \"\"\n\n#: es/es_provinces.py:23\nmsgid \"Guadalajara\"\nmsgstr \"\"\n\n#: es/es_provinces.py:24\nmsgid \"Guipuzkoa\"\nmsgstr \"\"\n\n#: es/es_provinces.py:25\nmsgid \"Huelva\"\nmsgstr \"\"\n\n#: es/es_provinces.py:26\nmsgid \"Huesca\"\nmsgstr \"\"\n\n#: es/es_provinces.py:27\nmsgid \"Jaen\"\nmsgstr \"\"\n\n#: es/es_provinces.py:28\nmsgid \"Leon\"\nmsgstr \"\"\n\n#: es/es_provinces.py:29\nmsgid \"Lleida\"\nmsgstr \"\"\n\n#: es/es_provinces.py:30 es/es_regions.py:17\nmsgid \"La Rioja\"\nmsgstr \"\"\n\n#: es/es_provinces.py:31\nmsgid \"Lugo\"\nmsgstr \"\"\n\n#: es/es_provinces.py:32 es/es_regions.py:18\nmsgid \"Madrid\"\nmsgstr \"\"\n\n#: es/es_provinces.py:33\nmsgid \"Malaga\"\nmsgstr \"\"\n\n#: es/es_provinces.py:34\nmsgid \"Murcia\"\nmsgstr \"\"\n\n#: es/es_provinces.py:35\nmsgid \"Navarre\"\nmsgstr \"\"\n\n#: es/es_provinces.py:36\nmsgid \"Ourense\"\nmsgstr \"\"\n\n#: es/es_provinces.py:37\nmsgid \"Asturias\"\nmsgstr \"\"\n\n#: es/es_provinces.py:38\nmsgid \"Palencia\"\nmsgstr \"\"\n\n#: es/es_provinces.py:39\nmsgid \"Las Palmas\"\nmsgstr \"\"\n\n#: es/es_provinces.py:40\nmsgid \"Pontevedra\"\nmsgstr \"\"\n\n#: es/es_provinces.py:41\nmsgid \"Salamanca\"\nmsgstr \"\"\n\n#: es/es_provinces.py:42\nmsgid \"Santa Cruz de Tenerife\"\nmsgstr \"\"\n\n#: es/es_provinces.py:43 es/es_regions.py:11\nmsgid \"Cantabria\"\nmsgstr \"\"\n\n#: es/es_provinces.py:44\nmsgid \"Segovia\"\nmsgstr \"\"\n\n#: es/es_provinces.py:45\nmsgid \"Seville\"\nmsgstr \"\"\n\n#: es/es_provinces.py:46\nmsgid \"Soria\"\nmsgstr \"\"\n\n#: es/es_provinces.py:47\nmsgid \"Tarragona\"\nmsgstr \"\"\n\n#: es/es_provinces.py:48\nmsgid \"Teruel\"\nmsgstr \"\"\n\n#: es/es_provinces.py:49\nmsgid \"Toledo\"\nmsgstr \"\"\n\n#: es/es_provinces.py:50\nmsgid \"Valencia\"\nmsgstr \"\"\n\n#: es/es_provinces.py:51\nmsgid \"Valladolid\"\nmsgstr \"\"\n\n#: es/es_provinces.py:52\nmsgid \"Bizkaia\"\nmsgstr \"\"\n\n#: es/es_provinces.py:53\nmsgid \"Zamora\"\nmsgstr \"\"\n\n#: es/es_provinces.py:54\nmsgid \"Zaragoza\"\nmsgstr \"\"\n\n#: es/es_provinces.py:55\nmsgid \"Ceuta\"\nmsgstr \"\"\n\n#: es/es_provinces.py:56\nmsgid \"Melilla\"\nmsgstr \"\"\n\n#: es/es_regions.py:5\nmsgid \"Andalusia\"\nmsgstr \"\"\n\n#: es/es_regions.py:6\nmsgid \"Aragon\"\nmsgstr \"\"\n\n#: es/es_regions.py:7\nmsgid \"Principality of Asturias\"\nmsgstr \"\"\n\n#: es/es_regions.py:8\nmsgid \"Balearic Islands\"\nmsgstr \"\"\n\n#: es/es_regions.py:9\nmsgid \"Basque Country\"\nmsgstr \"\"\n\n#: es/es_regions.py:10\nmsgid \"Canary Islands\"\nmsgstr \"\"\n\n#: es/es_regions.py:12\nmsgid \"Castile-La Mancha\"\nmsgstr \"\"\n\n#: es/es_regions.py:13\nmsgid \"Castile and Leon\"\nmsgstr \"\"\n\n#: es/es_regions.py:14\nmsgid \"Catalonia\"\nmsgstr \"\"\n\n#: es/es_regions.py:15\nmsgid \"Extremadura\"\nmsgstr \"\"\n\n#: es/es_regions.py:16\nmsgid \"Galicia\"\nmsgstr \"\"\n\n#: es/es_regions.py:19\nmsgid \"Region of Murcia\"\nmsgstr \"\"\n\n#: es/es_regions.py:20\nmsgid \"Foral Community of Navarre\"\nmsgstr \"\"\n\n#: es/es_regions.py:21\nmsgid \"Valencian Community\"\nmsgstr \"\"\n\n#: es/forms.py:26\nmsgid \"Enter a valid postal code in the range and format 01XXX - 52XXX.\"\nmsgstr \"\"\n\n#: es/forms.py:46\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or \"\n\"9XXXXXXXX.\"\nmsgstr \"\"\n\n#: es/forms.py:73\nmsgid \"Please enter a valid NIF, NIE, or CIF.\"\nmsgstr \"\"\n\n#: es/forms.py:74\nmsgid \"Please enter a valid NIF or NIE.\"\nmsgstr \"\"\n\n#: es/forms.py:75\nmsgid \"Invalid checksum for NIF.\"\nmsgstr \"\"\n\n#: es/forms.py:76\nmsgid \"Invalid checksum for NIE.\"\nmsgstr \"\"\n\n#: es/forms.py:77\nmsgid \"Invalid checksum for CIF.\"\nmsgstr \"\"\n\n#: es/forms.py:149\nmsgid \"\"\n\"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.\"\nmsgstr \"\"\n\n#: es/forms.py:150\nmsgid \"Invalid checksum for bank account number.\"\nmsgstr \"\"\n\n#: fi/forms.py:33\nmsgid \"Enter a valid Finnish social security number.\"\nmsgstr \"\"\n\n#: fr/forms.py:35\nmsgid \"Phone numbers must be in 0X XX XX XX XX format.\"\nmsgstr \"\"\n\n#: gb/forms.py:25\nmsgid \"Enter a valid postcode.\"\nmsgstr \"Sláðu inn gilt póstnúmer.\"\n\n#: gb/gb_regions.py:11\nmsgid \"Bedfordshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:12\nmsgid \"Buckinghamshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:14\nmsgid \"Cheshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:15\nmsgid \"Cornwall and Isles of Scilly\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:16\nmsgid \"Cumbria\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:17\nmsgid \"Derbyshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:18\nmsgid \"Devon\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:19\nmsgid \"Dorset\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:20\nmsgid \"Durham\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:21\nmsgid \"East Sussex\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:22\nmsgid \"Essex\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:23\nmsgid \"Gloucestershire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:24\nmsgid \"Greater London\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:25\nmsgid \"Greater Manchester\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:26\nmsgid \"Hampshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:27\nmsgid \"Hertfordshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:28\nmsgid \"Kent\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:29\nmsgid \"Lancashire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:30\nmsgid \"Leicestershire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:31\nmsgid \"Lincolnshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:32\nmsgid \"Merseyside\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:33\nmsgid \"Norfolk\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:34\nmsgid \"North Yorkshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:35\nmsgid \"Northamptonshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:36\nmsgid \"Northumberland\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:37\nmsgid \"Nottinghamshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:38\nmsgid \"Oxfordshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:39\nmsgid \"Shropshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:40\nmsgid \"Somerset\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:41\nmsgid \"South Yorkshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:42\nmsgid \"Staffordshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:43\nmsgid \"Suffolk\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:44\nmsgid \"Surrey\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:45\nmsgid \"Tyne and Wear\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:46\nmsgid \"Warwickshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:47\nmsgid \"West Midlands\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:48\nmsgid \"West Sussex\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:49\nmsgid \"West Yorkshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:50\nmsgid \"Wiltshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:51\nmsgid \"Worcestershire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:55\nmsgid \"County Antrim\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:56\nmsgid \"County Armagh\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:57\nmsgid \"County Down\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:58\nmsgid \"County Fermanagh\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:59\nmsgid \"County Londonderry\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:60\nmsgid \"County Tyrone\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:64\nmsgid \"Clwyd\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:65\nmsgid \"Dyfed\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:66\nmsgid \"Gwent\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:67\nmsgid \"Gwynedd\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:68\nmsgid \"Mid Glamorgan\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:69\nmsgid \"Powys\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:70\nmsgid \"South Glamorgan\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:71\nmsgid \"West Glamorgan\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:75\nmsgid \"Borders\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:76\nmsgid \"Central Scotland\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:77\nmsgid \"Dumfries and Galloway\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:78\nmsgid \"Fife\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:79\nmsgid \"Grampian\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:80\nmsgid \"Highland\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:81\nmsgid \"Lothian\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:82\nmsgid \"Orkney Islands\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:83\nmsgid \"Shetland Islands\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:84\nmsgid \"Strathclyde\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:85\nmsgid \"Tayside\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:86\nmsgid \"Western Isles\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:90\nmsgid \"England\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:91\nmsgid \"Northern Ireland\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:92\nmsgid \"Scotland\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:93\nmsgid \"Wales\"\nmsgstr \"\"\n\n#: hk/forms.py:37\n#, python-format\nmsgid \"Phone number should not start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:40\n#, python-format\nmsgid \"Phone number must be in one of the following formats: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:42\n#, python-format\nmsgid \"Phone number should start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hr/forms.py:76\nmsgid \"Enter a valid 13 digit JMBG\"\nmsgstr \"\"\n\n#: hr/forms.py:77\nmsgid \"Error in date segment\"\nmsgstr \"\"\n\n#: hr/forms.py:123\nmsgid \"Enter a valid 11 digit OIB\"\nmsgstr \"\"\n\n#: hr/forms.py:152 id/forms.py:112\nmsgid \"Enter a valid vehicle license plate number\"\nmsgstr \"\"\n\n#: hr/forms.py:153\nmsgid \"Enter a valid location code\"\nmsgstr \"\"\n\n#: hr/forms.py:154\nmsgid \"Number part cannot be zero\"\nmsgstr \"\"\n\n#: hr/forms.py:190\nmsgid \"Enter a valid 5 digit postal code\"\nmsgstr \"\"\n\n#: hr/forms.py:218 id/forms.py:72 nl/forms.py:56\nmsgid \"Enter a valid phone number\"\nmsgstr \"Sláðu inn gilt símanúmer.\"\n\n#: hr/forms.py:219\nmsgid \"Enter a valid area or mobile network code\"\nmsgstr \"\"\n\n#: hr/forms.py:220\nmsgid \"The phone nubmer is too long\"\nmsgstr \"\"\n\n#: hr/forms.py:258\nmsgid \"Enter a valid 19 digit JMBAG starting with 601983\"\nmsgstr \"\"\n\n#: hr/forms.py:259\nmsgid \"Card issue number cannot be zero\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:14\nmsgid \"Grad Zagreb\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:15\nmsgid \"Bjelovarsko-bilogorska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:16\nmsgid \"Brodsko-posavska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:17\nmsgid \"Dubrovačko-neretvanska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:18\nmsgid \"Istarska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:19\nmsgid \"Karlovačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:20\nmsgid \"Koprivničko-križevačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:21\nmsgid \"Krapinsko-zagorska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:22\nmsgid \"Ličko-senjska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:23\nmsgid \"Međimurska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:24\nmsgid \"Osječko-baranjska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:25\nmsgid \"Požeško-slavonska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:26\nmsgid \"Primorsko-goranska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:27\nmsgid \"Sisačko-moslavačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:28\nmsgid \"Splitsko-dalmatinska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:29\nmsgid \"Šibensko-kninska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:30\nmsgid \"Varaždinska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:31\nmsgid \"Virovitičko-podravska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:32\nmsgid \"Vukovarsko-srijemska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:33\nmsgid \"Zadarska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:34\nmsgid \"Zagrebačka županija\"\nmsgstr \"\"\n\n#: id/forms.py:31\nmsgid \"Enter a valid post code\"\nmsgstr \"\"\n\n#: id/forms.py:176\nmsgid \"Enter a valid NIK/KTP number\"\nmsgstr \"\"\n\n#: id/id_choices.py:15\nmsgid \"Aceh\"\nmsgstr \"\"\n\n#: id/id_choices.py:16 id/id_choices.py:79\nmsgid \"Bali\"\nmsgstr \"\"\n\n#: id/id_choices.py:17 id/id_choices.py:51\nmsgid \"Banten\"\nmsgstr \"\"\n\n#: id/id_choices.py:18 id/id_choices.py:60\nmsgid \"Bengkulu\"\nmsgstr \"\"\n\n#: id/id_choices.py:19 id/id_choices.py:53\nmsgid \"Yogyakarta\"\nmsgstr \"\"\n\n#: id/id_choices.py:20 id/id_choices.py:57\nmsgid \"Jakarta\"\nmsgstr \"\"\n\n#: id/id_choices.py:21 id/id_choices.py:81\nmsgid \"Gorontalo\"\nmsgstr \"\"\n\n#: id/id_choices.py:22 id/id_choices.py:63\nmsgid \"Jambi\"\nmsgstr \"\"\n\n#: id/id_choices.py:23\nmsgid \"Jawa Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:24\nmsgid \"Jawa Tengah\"\nmsgstr \"\"\n\n#: id/id_choices.py:25\nmsgid \"Jawa Timur\"\nmsgstr \"\"\n\n#: id/id_choices.py:26 id/id_choices.py:94\nmsgid \"Kalimantan Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:27 id/id_choices.py:72\nmsgid \"Kalimantan Selatan\"\nmsgstr \"\"\n\n#: id/id_choices.py:28 id/id_choices.py:95\nmsgid \"Kalimantan Tengah\"\nmsgstr \"\"\n\n#: id/id_choices.py:29 id/id_choices.py:96\nmsgid \"Kalimantan Timur\"\nmsgstr \"\"\n\n#: id/id_choices.py:30\nmsgid \"Kepulauan Bangka-Belitung\"\nmsgstr \"\"\n\n#: id/id_choices.py:31 id/id_choices.py:68\nmsgid \"Kepulauan Riau\"\nmsgstr \"\"\n\n#: id/id_choices.py:32 id/id_choices.py:61\nmsgid \"Lampung\"\nmsgstr \"\"\n\n#: id/id_choices.py:33 id/id_choices.py:76\nmsgid \"Maluku\"\nmsgstr \"\"\n\n#: id/id_choices.py:34 id/id_choices.py:77\nmsgid \"Maluku Utara\"\nmsgstr \"\"\n\n#: id/id_choices.py:35\nmsgid \"Nusa Tenggara Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:36\nmsgid \"Nusa Tenggara Timur\"\nmsgstr \"\"\n\n#: id/id_choices.py:37\nmsgid \"Papua\"\nmsgstr \"\"\n\n#: id/id_choices.py:38\nmsgid \"Papua Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:39 id/id_choices.py:66\nmsgid \"Riau\"\nmsgstr \"\"\n\n#: id/id_choices.py:40 id/id_choices.py:74\nmsgid \"Sulawesi Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:41 id/id_choices.py:75\nmsgid \"Sulawesi Selatan\"\nmsgstr \"\"\n\n#: id/id_choices.py:42 id/id_choices.py:82\nmsgid \"Sulawesi Tengah\"\nmsgstr \"\"\n\n#: id/id_choices.py:43 id/id_choices.py:85\nmsgid \"Sulawesi Tenggara\"\nmsgstr \"\"\n\n#: id/id_choices.py:44\nmsgid \"Sulawesi Utara\"\nmsgstr \"\"\n\n#: id/id_choices.py:45 id/id_choices.py:58\nmsgid \"Sumatera Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:46 id/id_choices.py:62\nmsgid \"Sumatera Selatan\"\nmsgstr \"\"\n\n#: id/id_choices.py:47 id/id_choices.py:64\nmsgid \"Sumatera Utara\"\nmsgstr \"\"\n\n#: id/id_choices.py:52\nmsgid \"Magelang\"\nmsgstr \"\"\n\n#: id/id_choices.py:54\nmsgid \"Surakarta - Solo\"\nmsgstr \"\"\n\n#: id/id_choices.py:55\nmsgid \"Madiun\"\nmsgstr \"\"\n\n#: id/id_choices.py:56\nmsgid \"Kediri\"\nmsgstr \"\"\n\n#: id/id_choices.py:59\nmsgid \"Tapanuli\"\nmsgstr \"\"\n\n#: id/id_choices.py:65\nmsgid \"Nanggroe Aceh Darussalam\"\nmsgstr \"\"\n\n#: id/id_choices.py:67\nmsgid \"Kepulauan Bangka Belitung\"\nmsgstr \"\"\n\n#: id/id_choices.py:69\nmsgid \"Corps Consulate\"\nmsgstr \"\"\n\n#: id/id_choices.py:70\nmsgid \"Corps Diplomatic\"\nmsgstr \"\"\n\n#: id/id_choices.py:71\nmsgid \"Bandung\"\nmsgstr \"\"\n\n#: id/id_choices.py:73\nmsgid \"Sulawesi Utara Daratan\"\nmsgstr \"\"\n\n#: id/id_choices.py:78\nmsgid \"NTT - Timor\"\nmsgstr \"\"\n\n#: id/id_choices.py:80\nmsgid \"Sulawesi Utara Kepulauan\"\nmsgstr \"\"\n\n#: id/id_choices.py:83\nmsgid \"NTB - Lombok\"\nmsgstr \"\"\n\n#: id/id_choices.py:84\nmsgid \"Papua dan Papua Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:86\nmsgid \"Cirebon\"\nmsgstr \"\"\n\n#: id/id_choices.py:87\nmsgid \"NTB - Sumbawa\"\nmsgstr \"\"\n\n#: id/id_choices.py:88\nmsgid \"NTT - Flores\"\nmsgstr \"\"\n\n#: id/id_choices.py:89\nmsgid \"NTT - Sumba\"\nmsgstr \"\"\n\n#: id/id_choices.py:90\nmsgid \"Bogor\"\nmsgstr \"\"\n\n#: id/id_choices.py:91\nmsgid \"Pekalongan\"\nmsgstr \"\"\n\n#: id/id_choices.py:92\nmsgid \"Semarang\"\nmsgstr \"\"\n\n#: id/id_choices.py:93\nmsgid \"Pati\"\nmsgstr \"\"\n\n#: id/id_choices.py:97\nmsgid \"Surabaya\"\nmsgstr \"\"\n\n#: id/id_choices.py:98\nmsgid \"Madura\"\nmsgstr \"\"\n\n#: id/id_choices.py:99\nmsgid \"Malang\"\nmsgstr \"\"\n\n#: id/id_choices.py:100\nmsgid \"Jember\"\nmsgstr \"\"\n\n#: id/id_choices.py:101\nmsgid \"Banyumas\"\nmsgstr \"\"\n\n#: id/id_choices.py:102\nmsgid \"Federal Government\"\nmsgstr \"\"\n\n#: id/id_choices.py:103\nmsgid \"Bojonegoro\"\nmsgstr \"\"\n\n#: id/id_choices.py:104\nmsgid \"Purwakarta\"\nmsgstr \"\"\n\n#: id/id_choices.py:105\nmsgid \"Sidoarjo\"\nmsgstr \"\"\n\n#: id/id_choices.py:106\nmsgid \"Garut\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:8\nmsgid \"Antrim\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:9\nmsgid \"Armagh\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:10\nmsgid \"Carlow\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:11\nmsgid \"Cavan\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:12\nmsgid \"Clare\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:13\nmsgid \"Cork\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:14\nmsgid \"Derry\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:15\nmsgid \"Donegal\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:16\nmsgid \"Down\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:17\nmsgid \"Dublin\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:18\nmsgid \"Fermanagh\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:19\nmsgid \"Galway\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:20\nmsgid \"Kerry\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:21\nmsgid \"Kildare\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:22\nmsgid \"Kilkenny\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:23\nmsgid \"Laois\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:24\nmsgid \"Leitrim\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:25\nmsgid \"Limerick\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:26\nmsgid \"Longford\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:27\nmsgid \"Louth\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:28\nmsgid \"Mayo\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:29\nmsgid \"Meath\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:30\nmsgid \"Monaghan\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:31\nmsgid \"Offaly\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:32\nmsgid \"Roscommon\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:33\nmsgid \"Sligo\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:34\nmsgid \"Tipperary\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:35\nmsgid \"Tyrone\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:36\nmsgid \"Waterford\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:37\nmsgid \"Westmeath\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:38\nmsgid \"Wexford\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:39\nmsgid \"Wicklow\"\nmsgstr \"\"\n\n#: il/forms.py:32\nmsgid \"Enter a postal code in the format XXXXX\"\nmsgstr \"\"\n\n#: il/forms.py:51\nmsgid \"Enter a valid ID number.\"\nmsgstr \"\"\n\n#: in_/forms.py:41\nmsgid \"Enter a zip code in the format XXXXXX or XXX XXX.\"\nmsgstr \"\"\n\n#: in_/forms.py:64\nmsgid \"Enter an Indian state or territory.\"\nmsgstr \"\"\n\n#: in_/forms.py:103\nmsgid \"Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.\"\nmsgstr \"\"\n\n#: is_/forms.py:22\nmsgid \"\"\n\"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.\"\nmsgstr \"Sláðu inn gilda íslenska kennitölu. Sniðið er DDMMÁÁÁÁ-XXXX.\"\n\n#: is_/forms.py:23\nmsgid \"The Icelandic identification number is not valid.\"\nmsgstr \"Íslenska kennitalan er ekki gild.\"\n\n#: it/forms.py:21\nmsgid \"Enter a valid zip code.\"\nmsgstr \"\"\n\n#: it/forms.py:48\nmsgid \"Enter a valid Social Security number.\"\nmsgstr \"\"\n\n#: it/forms.py:73\nmsgid \"Enter a valid VAT number.\"\nmsgstr \"Sláðu inn VSK númer.\"\n\n#: jp/forms.py:19\nmsgid \"Enter a postal code in the format XXXXXXX or XXX-XXXX.\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:4\nmsgid \"Hokkaido\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:5\nmsgid \"Aomori\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:6\nmsgid \"Iwate\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:7\nmsgid \"Miyagi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:8\nmsgid \"Akita\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:9\nmsgid \"Yamagata\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:10\nmsgid \"Fukushima\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:11\nmsgid \"Ibaraki\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:12\nmsgid \"Tochigi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:13\nmsgid \"Gunma\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:14\nmsgid \"Saitama\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:15\nmsgid \"Chiba\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:16\nmsgid \"Tokyo\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:17\nmsgid \"Kanagawa\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:18\nmsgid \"Yamanashi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:19\nmsgid \"Nagano\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:20\nmsgid \"Niigata\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:21\nmsgid \"Toyama\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:22\nmsgid \"Ishikawa\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:23\nmsgid \"Fukui\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:24\nmsgid \"Gifu\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:25\nmsgid \"Shizuoka\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:26\nmsgid \"Aichi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:27\nmsgid \"Mie\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:28\nmsgid \"Shiga\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:29\nmsgid \"Kyoto\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:30\nmsgid \"Osaka\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:31\nmsgid \"Hyogo\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:32\nmsgid \"Nara\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:33\nmsgid \"Wakayama\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:34\nmsgid \"Tottori\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:35\nmsgid \"Shimane\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:36\nmsgid \"Okayama\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:37\nmsgid \"Hiroshima\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:38\nmsgid \"Yamaguchi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:39\nmsgid \"Tokushima\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:40\nmsgid \"Kagawa\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:41\nmsgid \"Ehime\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:42\nmsgid \"Kochi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:43\nmsgid \"Fukuoka\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:44\nmsgid \"Saga\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:45\nmsgid \"Nagasaki\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:46\nmsgid \"Kumamoto\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:47\nmsgid \"Oita\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:48\nmsgid \"Miyazaki\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:49\nmsgid \"Kagoshima\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:50\nmsgid \"Okinawa\"\nmsgstr \"\"\n\n#: kw/forms.py:27\nmsgid \"Enter a valid Kuwaiti Civil ID number\"\nmsgstr \"\"\n\n#: mk/forms.py:18\nmsgid \"\"\n\"Identity card numbers must contain either 4 to 7 digits or an uppercase \"\n\"letter and 7 digits.\"\nmsgstr \"\"\n\n#: mk/forms.py:57 si/forms.py:24\nmsgid \"This field should contain exactly 13 digits.\"\nmsgstr \"\"\n\n#: mk/forms.py:58\nmsgid \"The first 7 digits of the UMCN must represent a valid past date.\"\nmsgstr \"\"\n\n#: mk/forms.py:59\nmsgid \"The UMCN is not valid.\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:10\nmsgid \"Aerodrom\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:11\nmsgid \"Aračinovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:12\nmsgid \"Berovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:13\nmsgid \"Bitola\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:14\nmsgid \"Bogdanci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:15\nmsgid \"Bogovinje\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:16\nmsgid \"Bosilovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:17\nmsgid \"Brvenica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:18\nmsgid \"Butel\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:19\nmsgid \"Valandovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:20\nmsgid \"Vasilevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:21\nmsgid \"Vevčani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:22\nmsgid \"Veles\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:23\nmsgid \"Vinica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:24\nmsgid \"Vraneštica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:25\nmsgid \"Vrapčište\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:26\nmsgid \"Gazi Baba\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:27\nmsgid \"Gevgelija\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:28\nmsgid \"Gostivar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:29\nmsgid \"Gradsko\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:30\nmsgid \"Debar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:31\nmsgid \"Debarca\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:32\nmsgid \"Delčevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:33\nmsgid \"Demir Kapija\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:34\nmsgid \"Demir Hisar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:35\nmsgid \"Dolneni\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:36\nmsgid \"Drugovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:37\nmsgid \"Gjorče Petrov\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:38\nmsgid \"Želino\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:39\nmsgid \"Zajas\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:40\nmsgid \"Zelenikovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:41\nmsgid \"Zrnovci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:42\nmsgid \"Ilinden\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:43\nmsgid \"Jegunovce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:44\nmsgid \"Kavadarci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:45\nmsgid \"Karbinci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:46\nmsgid \"Karpoš\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:47\nmsgid \"Kisela Voda\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:48\nmsgid \"Kičevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:49\nmsgid \"Konče\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:50\nmsgid \"Koćani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:51\nmsgid \"Kratovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:52\nmsgid \"Kriva Palanka\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:53\nmsgid \"Krivogaštani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:54\nmsgid \"Kruševo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:55\nmsgid \"Kumanovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:56\nmsgid \"Lipkovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:57\nmsgid \"Lozovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:58\nmsgid \"Mavrovo i Rostuša\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:59\nmsgid \"Makedonska Kamenica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:60\nmsgid \"Makedonski Brod\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:61\nmsgid \"Mogila\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:62\nmsgid \"Negotino\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:63\nmsgid \"Novaci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:64\nmsgid \"Novo Selo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:65\nmsgid \"Oslomej\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:66\nmsgid \"Ohrid\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:67\nmsgid \"Petrovec\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:68\nmsgid \"Pehčevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:69\nmsgid \"Plasnica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:70\nmsgid \"Prilep\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:71\nmsgid \"Probištip\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:72\nmsgid \"Radoviš\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:73\nmsgid \"Rankovce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:74\nmsgid \"Resen\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:75\nmsgid \"Rosoman\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:76\nmsgid \"Saraj\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:77\nmsgid \"Sveti Nikole\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:78\nmsgid \"Sopište\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:79\nmsgid \"Star Dojran\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:80\nmsgid \"Staro Nagoričane\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:81\nmsgid \"Struga\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:82\nmsgid \"Strumica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:83\nmsgid \"Studeničani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:84\nmsgid \"Tearce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:85\nmsgid \"Tetovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:86\nmsgid \"Centar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:87\nmsgid \"Centar-Župa\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:88\nmsgid \"Čair\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:89\nmsgid \"Čaška\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:90\nmsgid \"Češinovo-Obleševo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:91\nmsgid \"Čučer-Sandevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:92\nmsgid \"Štip\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:93\nmsgid \"Šuto Orizari\"\nmsgstr \"\"\n\n#: mk/models.py:11\nmsgid \"Macedonian identity card number\"\nmsgstr \"\"\n\n#: mk/models.py:25\nmsgid \"A Macedonian municipality (2 character code)\"\nmsgstr \"\"\n\n#: mk/models.py:35\nmsgid \"Unique master citizen number (13 digits)\"\nmsgstr \"\"\n\n#: mx/forms.py:67\nmsgid \"Enter a valid zip code in the format XXXXX.\"\nmsgstr \"\"\n\n#: mx/forms.py:110\nmsgid \"Enter a valid RFC.\"\nmsgstr \"\"\n\n#: mx/forms.py:111\nmsgid \"Invalid checksum for RFC.\"\nmsgstr \"\"\n\n#: mx/forms.py:191\nmsgid \"Enter a valid CURP.\"\nmsgstr \"\"\n\n#: mx/forms.py:192\nmsgid \"Invalid checksum for CURP.\"\nmsgstr \"\"\n\n#: mx/models.py:14\nmsgid \"Mexico state (three uppercase letters)\"\nmsgstr \"\"\n\n#: mx/models.py:27\nmsgid \"Mexico zip code\"\nmsgstr \"\"\n\n#: mx/models.py:44\nmsgid \"Mexican RFC\"\nmsgstr \"\"\n\n#: mx/models.py:61\nmsgid \"Mexican CURP\"\nmsgstr \"\"\n\n#: mx/mx_states.py:14\nmsgid \"Aguascalientes\"\nmsgstr \"\"\n\n#: mx/mx_states.py:15\nmsgid \"Baja California\"\nmsgstr \"\"\n\n#: mx/mx_states.py:16\nmsgid \"Baja California Sur\"\nmsgstr \"\"\n\n#: mx/mx_states.py:17\nmsgid \"Campeche\"\nmsgstr \"\"\n\n#: mx/mx_states.py:18\nmsgid \"Chihuahua\"\nmsgstr \"\"\n\n#: mx/mx_states.py:19\nmsgid \"Chiapas\"\nmsgstr \"\"\n\n#: mx/mx_states.py:20\nmsgid \"Coahuila\"\nmsgstr \"\"\n\n#: mx/mx_states.py:21\nmsgid \"Colima\"\nmsgstr \"\"\n\n#: mx/mx_states.py:22\nmsgid \"Distrito Federal\"\nmsgstr \"\"\n\n#: mx/mx_states.py:23\nmsgid \"Durango\"\nmsgstr \"\"\n\n#: mx/mx_states.py:24\nmsgid \"Guerrero\"\nmsgstr \"\"\n\n#: mx/mx_states.py:25\nmsgid \"Guanajuato\"\nmsgstr \"\"\n\n#: mx/mx_states.py:26\nmsgid \"Hidalgo\"\nmsgstr \"\"\n\n#: mx/mx_states.py:27\nmsgid \"Jalisco\"\nmsgstr \"\"\n\n#: mx/mx_states.py:28\nmsgid \"Estado de México\"\nmsgstr \"\"\n\n#: mx/mx_states.py:29\nmsgid \"Michoacán\"\nmsgstr \"\"\n\n#: mx/mx_states.py:30\nmsgid \"Morelos\"\nmsgstr \"\"\n\n#: mx/mx_states.py:31\nmsgid \"Nayarit\"\nmsgstr \"\"\n\n#: mx/mx_states.py:32\nmsgid \"Nuevo León\"\nmsgstr \"\"\n\n#: mx/mx_states.py:33\nmsgid \"Oaxaca\"\nmsgstr \"\"\n\n#: mx/mx_states.py:34\nmsgid \"Puebla\"\nmsgstr \"\"\n\n#: mx/mx_states.py:35\nmsgid \"Querétaro\"\nmsgstr \"\"\n\n#: mx/mx_states.py:36\nmsgid \"Quintana Roo\"\nmsgstr \"\"\n\n#: mx/mx_states.py:37\nmsgid \"Sinaloa\"\nmsgstr \"\"\n\n#: mx/mx_states.py:38\nmsgid \"San Luis Potosí\"\nmsgstr \"\"\n\n#: mx/mx_states.py:39\nmsgid \"Sonora\"\nmsgstr \"\"\n\n#: mx/mx_states.py:40\nmsgid \"Tabasco\"\nmsgstr \"\"\n\n#: mx/mx_states.py:41\nmsgid \"Tamaulipas\"\nmsgstr \"\"\n\n#: mx/mx_states.py:42\nmsgid \"Tlaxcala\"\nmsgstr \"\"\n\n#: mx/mx_states.py:43\nmsgid \"Veracruz\"\nmsgstr \"\"\n\n#: mx/mx_states.py:44\nmsgid \"Yucatán\"\nmsgstr \"\"\n\n#: mx/mx_states.py:45\nmsgid \"Zacatecas\"\nmsgstr \"\"\n\n#: nl/forms.py:26\nmsgid \"Enter a valid postal code\"\nmsgstr \"Sláðu inn gilt póstnúmer.\"\n\n#: nl/forms.py:82\nmsgid \"Enter a valid SoFi number\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:4\nmsgid \"Drenthe\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:5\nmsgid \"Flevoland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:6\nmsgid \"Friesland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:7\nmsgid \"Gelderland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:8\nmsgid \"Groningen\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:10\nmsgid \"Noord-Brabant\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:11\nmsgid \"Noord-Holland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:12\nmsgid \"Overijssel\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:13\nmsgid \"Utrecht\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:14\nmsgid \"Zeeland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:15\nmsgid \"Zuid-Holland\"\nmsgstr \"\"\n\n#: no/forms.py:39\nmsgid \"Enter a valid Norwegian social security number.\"\nmsgstr \"\"\n\n#: pe/forms.py:28\nmsgid \"This field requires 8 digits.\"\nmsgstr \"Þessi reitur krefst 8 tölustafa.\"\n\n#: pe/forms.py:56\nmsgid \"This field requires 11 digits.\"\nmsgstr \"Þessi reitur krefst 11 tölustafa.\"\n\n#: pl/forms.py:42\nmsgid \"National Identification Number consists of 11 digits.\"\nmsgstr \"\"\n\n#: pl/forms.py:43\nmsgid \"Wrong checksum for the National Identification Number.\"\nmsgstr \"\"\n\n#: pl/forms.py:79\nmsgid \"National ID Card Number consists of 3 letters and 6 digits.\"\nmsgstr \"\"\n\n#: pl/forms.py:80\nmsgid \"Wrong checksum for the National ID Card Number.\"\nmsgstr \"\"\n\n#: pl/forms.py:131\nmsgid \"\"\n\"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or \"\n\"XXXXXXXXXX.\"\nmsgstr \"\"\n\n#: pl/forms.py:132\nmsgid \"Wrong checksum for the Tax Number (NIP).\"\nmsgstr \"\"\n\n#: pl/forms.py:171\nmsgid \"National Business Register Number (REGON) consists of 9 or 14 digits.\"\nmsgstr \"\"\n\n#: pl/forms.py:172\nmsgid \"Wrong checksum for the National Business Register Number (REGON).\"\nmsgstr \"\"\n\n#: pl/forms.py:212\nmsgid \"Enter a postal code in the format XX-XXX.\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:8\nmsgid \"Lower Silesia\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:9\nmsgid \"Kuyavia-Pomerania\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:10\nmsgid \"Lublin\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:11\nmsgid \"Lubusz\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:12\nmsgid \"Lodz\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:13\nmsgid \"Lesser Poland\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:14\nmsgid \"Masovia\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:15\nmsgid \"Opole\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:16\nmsgid \"Subcarpatia\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:17\nmsgid \"Podlasie\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:18\nmsgid \"Pomerania\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:19\nmsgid \"Silesia\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:20\nmsgid \"Swietokrzyskie\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:21\nmsgid \"Warmia-Masuria\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:22\nmsgid \"Greater Poland\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:23\nmsgid \"West Pomerania\"\nmsgstr \"\"\n\n#: pt/forms.py:19\nmsgid \"Enter a zip code in the format XXXX-XXX.\"\nmsgstr \"\"\n\n#: pt/forms.py:39\nmsgid \"Phone numbers must have 9 digits, or start by + or 00.\"\nmsgstr \"\"\n\n#: ro/forms.py:22\nmsgid \"Enter a valid CIF.\"\nmsgstr \"\"\n\n#: ro/forms.py:59\nmsgid \"Enter a valid CNP.\"\nmsgstr \"\"\n\n#: ro/forms.py:143\nmsgid \"Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format\"\nmsgstr \"\"\n\n#: ro/forms.py:175\nmsgid \"Phone numbers must be in XXXX-XXXXXX format.\"\nmsgstr \"\"\n\n#: ro/forms.py:200\nmsgid \"Enter a valid postal code in the format XXXXXX\"\nmsgstr \"\"\n\n#: ru/forms.py:37\nmsgid \"Enter a postal code in the format XXXXXX.\"\nmsgstr \"\"\n\n#: ru/forms.py:50\nmsgid \"Enter a passport number in the format XXXX XXXXXX.\"\nmsgstr \"\"\n\n#: ru/forms.py:63\nmsgid \"Enter a passport number in the format XX XXXXXXX.\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:10\nmsgid \"Central Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:11\nmsgid \"South Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:12\nmsgid \"North-West Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:13\nmsgid \"Far-East Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:14\nmsgid \"Siberian Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:15\nmsgid \"Ural Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:16\nmsgid \"Privolzhsky Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:17\nmsgid \"North-Caucasian Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:21\nmsgid \"Moskva\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:22\nmsgid \"Saint-Peterburg\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:23\nmsgid \"Moskovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:24\nmsgid \"Adygeya, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:25\nmsgid \"Bashkortostan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:26\nmsgid \"Buryatia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:27\nmsgid \"Altay, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:28\nmsgid \"Dagestan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:29\nmsgid \"Ingushskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:30\nmsgid \"Kabardino-Balkarskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:31\nmsgid \"Kalmykia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:32\nmsgid \"Karachaevo-Cherkesskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:33\nmsgid \"Karelia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:34\nmsgid \"Komi, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:35\nmsgid \"Mariy Ehl, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:36\nmsgid \"Mordovia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:37\nmsgid \"Sakha, Respublika (Yakutiya)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:38\nmsgid \"Severnaya Osetia, Respublika (Alania)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:39\nmsgid \"Tatarstan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:40\nmsgid \"Tyva, Respublika (Tuva)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:41\nmsgid \"Udmurtskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:42\nmsgid \"Khakassiya, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:43\nmsgid \"Chechenskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:44\nmsgid \"Chuvashskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:45\nmsgid \"Altayskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:46\nmsgid \"Zabaykalskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:47\nmsgid \"Kamchatskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:48\nmsgid \"Krasnodarskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:49\nmsgid \"Krasnoyarskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:50\nmsgid \"Permskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:51\nmsgid \"Primorskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:52\nmsgid \"Stavropol'siyy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:53\nmsgid \"Khabarovskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:54\nmsgid \"Amurskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:55\nmsgid \"Arkhangel'skaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:56\nmsgid \"Astrakhanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:57\nmsgid \"Belgorodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:58\nmsgid \"Bryanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:59\nmsgid \"Vladimirskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:60\nmsgid \"Volgogradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:61\nmsgid \"Vologodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:62\nmsgid \"Voronezhskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:63\nmsgid \"Ivanovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:64\nmsgid \"Irkutskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:65\nmsgid \"Kaliningradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:66\nmsgid \"Kaluzhskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:67\nmsgid \"Kemerovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:68\nmsgid \"Kirovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:69\nmsgid \"Kostromskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:70\nmsgid \"Kurganskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:71\nmsgid \"Kurskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:72\nmsgid \"Leningradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:73\nmsgid \"Lipeckaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:74\nmsgid \"Magadanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:75\nmsgid \"Murmanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:76\nmsgid \"Nizhegorodskaja oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:77\nmsgid \"Novgorodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:78\nmsgid \"Novosibirskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:79\nmsgid \"Omskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:80\nmsgid \"Orenburgskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:81\nmsgid \"Orlovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:82\nmsgid \"Penzenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:83\nmsgid \"Pskovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:84\nmsgid \"Rostovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:85\nmsgid \"Rjazanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:86\nmsgid \"Samarskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:87\nmsgid \"Saratovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:88\nmsgid \"Sakhalinskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:89\nmsgid \"Sverdlovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:90\nmsgid \"Smolenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:91\nmsgid \"Tambovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:92\nmsgid \"Tverskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:93\nmsgid \"Tomskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:94\nmsgid \"Tul'skaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:95\nmsgid \"Tyumenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:96\nmsgid \"Ul'ianovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:97\nmsgid \"Chelyabinskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:98\nmsgid \"Yaroslavskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:99\nmsgid \"Evreyskaya avtonomnaja oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:100\nmsgid \"Neneckiy autonomnyy okrug\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:101\nmsgid \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:102\nmsgid \"Chukotskiy avtonomnyy okrug\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:103\nmsgid \"Yamalo-Neneckiy avtonomnyy okrug\"\nmsgstr \"\"\n\n#: se/forms.py:54\nmsgid \"Enter a valid Swedish organisation number.\"\nmsgstr \"\"\n\n#: se/forms.py:111\nmsgid \"Enter a valid Swedish personal identity number.\"\nmsgstr \"\"\n\n#: se/forms.py:112\nmsgid \"Co-ordination numbers are not allowed.\"\nmsgstr \"\"\n\n#: se/forms.py:154\nmsgid \"Enter a Swedish postal code in the format XXXXX.\"\nmsgstr \"\"\n\n#: se/se_counties.py:16\nmsgid \"Stockholm\"\nmsgstr \"\"\n\n#: se/se_counties.py:17\nmsgid \"Västerbotten\"\nmsgstr \"\"\n\n#: se/se_counties.py:18\nmsgid \"Norrbotten\"\nmsgstr \"\"\n\n#: se/se_counties.py:19\nmsgid \"Uppsala\"\nmsgstr \"\"\n\n#: se/se_counties.py:20\nmsgid \"Södermanland\"\nmsgstr \"\"\n\n#: se/se_counties.py:21\nmsgid \"Östergötland\"\nmsgstr \"\"\n\n#: se/se_counties.py:22\nmsgid \"Jönköping\"\nmsgstr \"\"\n\n#: se/se_counties.py:23\nmsgid \"Kronoberg\"\nmsgstr \"\"\n\n#: se/se_counties.py:24\nmsgid \"Kalmar\"\nmsgstr \"\"\n\n#: se/se_counties.py:25\nmsgid \"Gotland\"\nmsgstr \"\"\n\n#: se/se_counties.py:26\nmsgid \"Blekinge\"\nmsgstr \"\"\n\n#: se/se_counties.py:27\nmsgid \"Skåne\"\nmsgstr \"\"\n\n#: se/se_counties.py:28\nmsgid \"Halland\"\nmsgstr \"\"\n\n#: se/se_counties.py:29\nmsgid \"Västra Götaland\"\nmsgstr \"\"\n\n#: se/se_counties.py:30\nmsgid \"Värmland\"\nmsgstr \"\"\n\n#: se/se_counties.py:31\nmsgid \"Örebro\"\nmsgstr \"\"\n\n#: se/se_counties.py:32\nmsgid \"Västmanland\"\nmsgstr \"\"\n\n#: se/se_counties.py:33\nmsgid \"Dalarna\"\nmsgstr \"\"\n\n#: se/se_counties.py:34\nmsgid \"Gävleborg\"\nmsgstr \"\"\n\n#: se/se_counties.py:35\nmsgid \"Västernorrland\"\nmsgstr \"\"\n\n#: se/se_counties.py:36\nmsgid \"Jämtland\"\nmsgstr \"\"\n\n#: si/forms.py:25\nmsgid \"The first 7 digits of the EMSO must represent a valid past date.\"\nmsgstr \"\"\n\n#: si/forms.py:26\nmsgid \"The EMSO is not valid.\"\nmsgstr \"\"\n\n#: si/forms.py:86\nmsgid \"Enter a valid tax number in form SIXXXXXXXX\"\nmsgstr \"\"\n\n#: si/forms.py:151\nmsgid \"Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:8\nmsgid \"Banska Bystrica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:9\nmsgid \"Banska Stiavnica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:10\nmsgid \"Bardejov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:11\nmsgid \"Banovce nad Bebravou\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:12\nmsgid \"Brezno\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:13\nmsgid \"Bratislava I\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:14\nmsgid \"Bratislava II\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:15\nmsgid \"Bratislava III\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:16\nmsgid \"Bratislava IV\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:17\nmsgid \"Bratislava V\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:18\nmsgid \"Bytca\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:19\nmsgid \"Cadca\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:20\nmsgid \"Detva\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:21\nmsgid \"Dolny Kubin\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:22\nmsgid \"Dunajska Streda\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:23\nmsgid \"Galanta\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:24\nmsgid \"Gelnica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:25\nmsgid \"Hlohovec\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:26\nmsgid \"Humenne\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:27\nmsgid \"Ilava\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:28\nmsgid \"Kezmarok\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:29\nmsgid \"Komarno\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:30\nmsgid \"Kosice I\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:31\nmsgid \"Kosice II\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:32\nmsgid \"Kosice III\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:33\nmsgid \"Kosice IV\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:34\nmsgid \"Kosice - okolie\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:35\nmsgid \"Krupina\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:36\nmsgid \"Kysucke Nove Mesto\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:37\nmsgid \"Levice\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:38\nmsgid \"Levoca\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:39\nmsgid \"Liptovsky Mikulas\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:40\nmsgid \"Lucenec\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:41\nmsgid \"Malacky\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:42\nmsgid \"Martin\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:43\nmsgid \"Medzilaborce\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:44\nmsgid \"Michalovce\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:45\nmsgid \"Myjava\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:46\nmsgid \"Namestovo\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:47\nmsgid \"Nitra\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:48\nmsgid \"Nove Mesto nad Vahom\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:49\nmsgid \"Nove Zamky\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:50\nmsgid \"Partizanske\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:51\nmsgid \"Pezinok\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:52\nmsgid \"Piestany\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:53\nmsgid \"Poltar\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:54\nmsgid \"Poprad\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:55\nmsgid \"Povazska Bystrica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:56\nmsgid \"Presov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:57\nmsgid \"Prievidza\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:58\nmsgid \"Puchov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:59\nmsgid \"Revuca\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:60\nmsgid \"Rimavska Sobota\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:61\nmsgid \"Roznava\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:62\nmsgid \"Ruzomberok\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:63\nmsgid \"Sabinov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:64\nmsgid \"Senec\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:65\nmsgid \"Senica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:66\nmsgid \"Skalica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:67\nmsgid \"Snina\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:68\nmsgid \"Sobrance\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:69\nmsgid \"Spisska Nova Ves\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:70\nmsgid \"Stara Lubovna\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:71\nmsgid \"Stropkov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:72\nmsgid \"Svidnik\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:73\nmsgid \"Sala\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:74\nmsgid \"Topolcany\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:75\nmsgid \"Trebisov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:76\nmsgid \"Trencin\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:77\nmsgid \"Trnava\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:78\nmsgid \"Turcianske Teplice\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:79\nmsgid \"Tvrdosin\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:80\nmsgid \"Velky Krtis\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:81\nmsgid \"Vranov nad Toplou\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:82\nmsgid \"Zlate Moravce\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:83\nmsgid \"Zvolen\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:84\nmsgid \"Zarnovica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:85\nmsgid \"Ziar nad Hronom\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:86\nmsgid \"Zilina\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:8\nmsgid \"Banska Bystrica region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:9\nmsgid \"Bratislava region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:10\nmsgid \"Kosice region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:11\nmsgid \"Nitra region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:12\nmsgid \"Presov region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:13\nmsgid \"Trencin region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:14\nmsgid \"Trnava region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:15\nmsgid \"Zilina region\"\nmsgstr \"\"\n\n#: tr/forms.py:21\nmsgid \"Enter a postal code in the format XXXXX.\"\nmsgstr \"\"\n\n#: tr/forms.py:42\nmsgid \"Phone numbers must be in 0XXX XXX XXXX format.\"\nmsgstr \"\"\n\n#: tr/forms.py:69\nmsgid \"Enter a valid Turkish Identification number.\"\nmsgstr \"\"\n\n#: tr/forms.py:70\nmsgid \"Turkish Identification number must be 11 digits.\"\nmsgstr \"\"\n\n#: us/forms.py:21\nmsgid \"Enter a zip code in the format XXXXX or XXXXX-XXXX.\"\nmsgstr \"\"\n\n#: us/forms.py:59\nmsgid \"Enter a valid U.S. Social Security number in XXX-XX-XXXX format.\"\nmsgstr \"\"\n\n#: us/forms.py:92\nmsgid \"Enter a U.S. state or territory.\"\nmsgstr \"\"\n\n#: us/models.py:8\nmsgid \"U.S. state (two uppercase letters)\"\nmsgstr \"Bandarískt fylki (tveir hástafir)\"\n\n#: us/models.py:17\nmsgid \"U.S. postal code (two uppercase letters)\"\nmsgstr \"\"\n\n#: us/models.py:26\nmsgid \"Phone number\"\nmsgstr \"Símanúmer\"\n\n#: uy/forms.py:29\nmsgid \"Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.\"\nmsgstr \"\"\n\n#: uy/forms.py:31\nmsgid \"Enter a valid CI number.\"\nmsgstr \"\"\n\n#: za/forms.py:22\nmsgid \"Enter a valid South African ID number\"\nmsgstr \"\"\n\n#: za/forms.py:56\nmsgid \"Enter a valid South African postal code\"\nmsgstr \"\"\n\n#: za/za_provinces.py:4\nmsgid \"Eastern Cape\"\nmsgstr \"\"\n\n#: za/za_provinces.py:5\nmsgid \"Free State\"\nmsgstr \"\"\n\n#: za/za_provinces.py:6\nmsgid \"Gauteng\"\nmsgstr \"\"\n\n#: za/za_provinces.py:7\nmsgid \"KwaZulu-Natal\"\nmsgstr \"\"\n\n#: za/za_provinces.py:8\nmsgid \"Limpopo\"\nmsgstr \"\"\n\n#: za/za_provinces.py:9\nmsgid \"Mpumalanga\"\nmsgstr \"\"\n\n#: za/za_provinces.py:10\nmsgid \"Northern Cape\"\nmsgstr \"\"\n\n#: za/za_provinces.py:11\nmsgid \"North West\"\nmsgstr \"\"\n\n#: za/za_provinces.py:12\nmsgid \"Western Cape\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/locale/it/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Denis Darii <sinednx@gmail.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <lukefiltroman@gmail.com>, 2011.\n# Nicola Larosa <transifex@teknico.net>, 2011-2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-10-17 17:47+0000\\n\"\n\"Last-Translator: Nicola Larosa <transifex@teknico.net>\\n\"\n\"Language-Team: Italian (http://www.transifex.com/projects/p/django/language/\"\n\"it/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: it\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: ar/forms.py:30\nmsgid \"Enter a postal code in the format NNNN or ANNNNAAA.\"\nmsgstr \"Inserisci un codice postale nel formato NNNN o ANNNNAAA.\"\n\n#: ar/forms.py:52 br/forms.py:95 br/forms.py:134 pe/forms.py:27 pe/forms.py:55\nmsgid \"This field requires only numbers.\"\nmsgstr \"Questo campo può contenere solo numeri.\"\n\n#: ar/forms.py:53\nmsgid \"This field requires 7 or 8 digits.\"\nmsgstr \"Questo campo richiede 7 o 8 cifre.\"\n\n#: ar/forms.py:82\nmsgid \"Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.\"\nmsgstr \"Inserisci un CUIT valido nel formato XX-XXXXXXXX-X o XXXXXXXXXXXX.\"\n\n#: ar/forms.py:83\nmsgid \"Invalid CUIT.\"\nmsgstr \"CUIT non valido.\"\n\n#: ar/forms.py:84\nmsgid \"Invalid legal type. Type must be 27, 20, 23 or 30.\"\nmsgstr \"Tipo legale invalido. Il tipo dev'essere 27, 20, 23 o 30.\"\n\n#: at/at_states.py:5\nmsgid \"Burgenland\"\nmsgstr \"Burgenland\"\n\n#: at/at_states.py:6\nmsgid \"Carinthia\"\nmsgstr \"Carinzia\"\n\n#: at/at_states.py:7\nmsgid \"Lower Austria\"\nmsgstr \"Bassa Austria\"\n\n#: at/at_states.py:8\nmsgid \"Upper Austria\"\nmsgstr \"Alta Austria\"\n\n#: at/at_states.py:9\nmsgid \"Salzburg\"\nmsgstr \"Salisburgo\"\n\n#: at/at_states.py:10\nmsgid \"Styria\"\nmsgstr \"Styria\"\n\n#: at/at_states.py:11\nmsgid \"Tyrol\"\nmsgstr \"Tirolo\"\n\n#: at/at_states.py:12\nmsgid \"Vorarlberg\"\nmsgstr \"Vorarlberg\"\n\n#: at/at_states.py:13\nmsgid \"Vienna\"\nmsgstr \"Vienna\"\n\n#: at/forms.py:22 ch/forms.py:22 no/forms.py:19\nmsgid \"Enter a zip code in the format XXXX.\"\nmsgstr \"Inserisci un codice postale nel formato XXXX .\"\n\n#: at/forms.py:50\nmsgid \"Enter a valid Austrian Social Security Number in XXXX XXXXXX format.\"\nmsgstr \"\"\n\"Inserisci un Numero di Assistenza Sociale Austriaco valido, nel formato XXXX \"\n\"XXXXXX.\"\n\n#: au/forms.py:26\nmsgid \"Enter a 4 digit postcode.\"\nmsgstr \"Inserisci un codice postale a 4 cifre\"\n\n#: au/models.py:9\nmsgid \"Australian State\"\nmsgstr \"Stato Australiano\"\n\n#: au/models.py:19\nmsgid \"Australian Postcode\"\nmsgstr \"Codice postale Australiano\"\n\n#: au/models.py:33\nmsgid \"Australian Phone number\"\nmsgstr \"Numero di telefono Australiano\"\n\n#: be/be_provinces.py:5\nmsgid \"Antwerp\"\nmsgstr \"Anversa\"\n\n#: be/be_provinces.py:6\nmsgid \"Brussels\"\nmsgstr \"Bruxelles\"\n\n#: be/be_provinces.py:7\nmsgid \"East Flanders\"\nmsgstr \"Fiandre Orientali\"\n\n#: be/be_provinces.py:8\nmsgid \"Flemish Brabant\"\nmsgstr \"Brabante Fiammingo\"\n\n#: be/be_provinces.py:9\nmsgid \"Hainaut\"\nmsgstr \"Hainaut\"\n\n#: be/be_provinces.py:10\nmsgid \"Liege\"\nmsgstr \"Liegi\"\n\n#: be/be_provinces.py:11 nl/nl_provinces.py:9\nmsgid \"Limburg\"\nmsgstr \"Limburg\"\n\n#: be/be_provinces.py:12\nmsgid \"Luxembourg\"\nmsgstr \"Lussemburgo\"\n\n#: be/be_provinces.py:13\nmsgid \"Namur\"\nmsgstr \"Namur\"\n\n#: be/be_provinces.py:14\nmsgid \"Walloon Brabant\"\nmsgstr \"Brabante Vallone\"\n\n#: be/be_provinces.py:15\nmsgid \"West Flanders\"\nmsgstr \"Fiandre Occidentali\"\n\n#: be/be_regions.py:5\nmsgid \"Brussels Capital Region\"\nmsgstr \"Regione di Bruxelles Capitale\"\n\n#: be/be_regions.py:6\nmsgid \"Flemish Region\"\nmsgstr \"Regione delle Fiandre\"\n\n#: be/be_regions.py:7\nmsgid \"Wallonia\"\nmsgstr \"Vallonia\"\n\n#: be/forms.py:25\nmsgid \"Enter a valid postal code in the range and format 1XXX - 9XXX.\"\nmsgstr \"\"\n\"Inserisci un codice postale valido nell'intervallo e formato 1XXX - 9XXX.\"\n\n#: be/forms.py:48\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\nmsgstr \"\"\n\"Inserisci un numero di telefono valido in uno dei formati 0x xx xx xxx, 0xx \"\n\"xx xx xx, xx xx xx 04xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x . xxx.\"\n\"xx.xx, 0xx.xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx o 04xxxxxxxx.\"\n\n#: br/forms.py:22\nmsgid \"Enter a zip code in the format XXXXX-XXX.\"\nmsgstr \"Inserisci un codice postale nel formato XXXXX-XXX .\"\n\n#: br/forms.py:31\nmsgid \"Phone numbers must be in XX-XXXX-XXXX format.\"\nmsgstr \"I numeri di telefono devono essere in formato XX-XXXX-XXXX .\"\n\n#: br/forms.py:58\nmsgid \"\"\n\"Select a valid brazilian state. That state is not one of the available \"\n\"states.\"\nmsgstr \"\"\n\"Scegli uno stato brasiliano valido. Questo stato non è uno di quelli \"\n\"disponibili.\"\n\n#: br/forms.py:93\nmsgid \"Invalid CPF number.\"\nmsgstr \"Numero CPF non valido.\"\n\n#: br/forms.py:94\nmsgid \"This field requires at most 11 digits or 14 characters.\"\nmsgstr \"Questo campo richiede non più di 11 cifre o 14 caratteri.\"\n\n#: br/forms.py:133\nmsgid \"Invalid CNPJ number.\"\nmsgstr \"Numero CNPJ non valido.\"\n\n#: br/forms.py:135\nmsgid \"This field requires at least 14 digits\"\nmsgstr \"Questo campo richiede almeno 14 cifre\"\n\n#: ca/forms.py:29\nmsgid \"Enter a postal code in the format XXX XXX.\"\nmsgstr \"Inserisci un codice postale nel formato XXX XXX.\"\n\n#: ca/forms.py:47 us/forms.py:30\nmsgid \"Phone numbers must be in XXX-XXX-XXXX format.\"\nmsgstr \"I numeri di telefono devono essere in formato XXX-XXX-XXXX .\"\n\n#: ca/forms.py:69\nmsgid \"Enter a Canadian province or territory.\"\nmsgstr \"Inserisci un territorio o provincia canadese.\"\n\n#: ca/forms.py:110\nmsgid \"Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.\"\nmsgstr \"\"\n\"Inserisci un numero di Assicurazione Sociale Canadese valido nel formato XXX-\"\n\"XXX-XXX.\"\n\n#: ch/ch_states.py:5\nmsgid \"Aargau\"\nmsgstr \"Aargau\"\n\n#: ch/ch_states.py:6\nmsgid \"Appenzell Innerrhoden\"\nmsgstr \"Appenzell Innerrhoden\"\n\n#: ch/ch_states.py:7\nmsgid \"Appenzell Ausserrhoden\"\nmsgstr \"Appenzell Ausserrhoden\"\n\n#: ch/ch_states.py:8\nmsgid \"Basel-Stadt\"\nmsgstr \"Basel-Stadt\"\n\n#: ch/ch_states.py:9\nmsgid \"Basel-Land\"\nmsgstr \"Basel-Land\"\n\n#: ch/ch_states.py:10\nmsgid \"Berne\"\nmsgstr \"Berna\"\n\n#: ch/ch_states.py:11\nmsgid \"Fribourg\"\nmsgstr \"Friburgo\"\n\n#: ch/ch_states.py:12\nmsgid \"Geneva\"\nmsgstr \"Ginevra\"\n\n#: ch/ch_states.py:13\nmsgid \"Glarus\"\nmsgstr \"Glarus\"\n\n#: ch/ch_states.py:14\nmsgid \"Graubuenden\"\nmsgstr \"Graubuenden\"\n\n#: ch/ch_states.py:15\nmsgid \"Jura\"\nmsgstr \"Jura\"\n\n#: ch/ch_states.py:16\nmsgid \"Lucerne\"\nmsgstr \"Lucerna\"\n\n#: ch/ch_states.py:17\nmsgid \"Neuchatel\"\nmsgstr \"Neuchatel\"\n\n#: ch/ch_states.py:18\nmsgid \"Nidwalden\"\nmsgstr \"Nidwalden\"\n\n#: ch/ch_states.py:19\nmsgid \"Obwalden\"\nmsgstr \"Obwalden\"\n\n#: ch/ch_states.py:20\nmsgid \"Schaffhausen\"\nmsgstr \"Schaffhausen\"\n\n#: ch/ch_states.py:21\nmsgid \"Schwyz\"\nmsgstr \"Schwyz\"\n\n#: ch/ch_states.py:22\nmsgid \"Solothurn\"\nmsgstr \"Solothurn\"\n\n#: ch/ch_states.py:23\nmsgid \"St. Gallen\"\nmsgstr \"St. Gallen\"\n\n#: ch/ch_states.py:24\nmsgid \"Thurgau\"\nmsgstr \"Thurgau\"\n\n#: ch/ch_states.py:25\nmsgid \"Ticino\"\nmsgstr \"Ticino\"\n\n#: ch/ch_states.py:26\nmsgid \"Uri\"\nmsgstr \"Uri\"\n\n#: ch/ch_states.py:27\nmsgid \"Valais\"\nmsgstr \"Valais\"\n\n#: ch/ch_states.py:28\nmsgid \"Vaud\"\nmsgstr \"Vaud\"\n\n#: ch/ch_states.py:29\nmsgid \"Zug\"\nmsgstr \"Zug\"\n\n#: ch/ch_states.py:30\nmsgid \"Zurich\"\nmsgstr \"Zurigo\"\n\n#: ch/forms.py:37\nmsgid \"Phone numbers must be in 0XX XXX XX XX format.\"\nmsgstr \"I numeri di telefono devono essere nel formato 0XX XXX XX XX.\"\n\n#: ch/forms.py:68\nmsgid \"\"\n\"Enter a valid Swiss identity or passport card number in X1234567<0 or \"\n\"1234567890 format.\"\nmsgstr \"\"\n\"Inserisci un numero di carta d'identità o passaporto svizzeri validi nel \"\n\"formato X1234567<0 o 1234567890 .\"\n\n#: cl/forms.py:32\nmsgid \"Enter a valid Chilean RUT.\"\nmsgstr \"Inserisci un RUT cileno valido.\"\n\n#: cl/forms.py:33\nmsgid \"Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.\"\nmsgstr \"Inserisci un RUT cileno valido. Il formato è XX.XXX.XXX-X.\"\n\n#: cl/forms.py:34\nmsgid \"The Chilean RUT is not valid.\"\nmsgstr \"Il RUT cileno non è valido.\"\n\n#: cn/forms.py:84\nmsgid \"Enter a post code in the format XXXXXX.\"\nmsgstr \"Inserisci un codice postale nel formato XXXXXX.\"\n\n#: cn/forms.py:105\nmsgid \"ID Card Number consists of 15 or 18 digits.\"\nmsgstr \"Il numero della carta d'identità consiste di 15 o 18 caratteri.\"\n\n#: cn/forms.py:106\nmsgid \"Invalid ID Card Number: Wrong checksum\"\nmsgstr \"Numero carta d'identità non valido: checksum errato\"\n\n#: cn/forms.py:107\nmsgid \"Invalid ID Card Number: Wrong birthdate\"\nmsgstr \"Numero carta d'identità non valido: data di nascita errata\"\n\n#: cn/forms.py:108\nmsgid \"Invalid ID Card Number: Wrong location code\"\nmsgstr \"Numero carta d'identità non valido: codice località errato\"\n\n#: cn/forms.py:193\nmsgid \"Enter a valid phone number.\"\nmsgstr \"Inserisci un numero di telefono valido.\"\n\n#: cn/forms.py:210\nmsgid \"Enter a valid cell number.\"\nmsgstr \"Inserisci un numero di cellulare valido.\"\n\n#: cz/cz_regions.py:8\nmsgid \"Prague\"\nmsgstr \"Praga\"\n\n#: cz/cz_regions.py:9\nmsgid \"Central Bohemian Region\"\nmsgstr \"Regione Boema Centrale\"\n\n#: cz/cz_regions.py:10\nmsgid \"South Bohemian Region\"\nmsgstr \"Regione Boema del Sud\"\n\n#: cz/cz_regions.py:11\nmsgid \"Pilsen Region\"\nmsgstr \"Regione di Pilsen\"\n\n#: cz/cz_regions.py:12\nmsgid \"Carlsbad Region\"\nmsgstr \"Regione di Carlsbad\"\n\n#: cz/cz_regions.py:13\nmsgid \"Usti Region\"\nmsgstr \"Regione di Usti\"\n\n#: cz/cz_regions.py:14\nmsgid \"Liberec Region\"\nmsgstr \"Regione di Liberec\"\n\n#: cz/cz_regions.py:15\nmsgid \"Hradec Region\"\nmsgstr \"Regione di Hradec\"\n\n#: cz/cz_regions.py:16\nmsgid \"Pardubice Region\"\nmsgstr \"Regione di Pardubice\"\n\n#: cz/cz_regions.py:17\nmsgid \"Vysocina Region\"\nmsgstr \"Regione di Vysocina\"\n\n#: cz/cz_regions.py:18\nmsgid \"South Moravian Region\"\nmsgstr \"Regione della Moravia del Sud\"\n\n#: cz/cz_regions.py:19\nmsgid \"Olomouc Region\"\nmsgstr \"Regione di Olomouc\"\n\n#: cz/cz_regions.py:20\nmsgid \"Zlin Region\"\nmsgstr \"Regione di Zlin\"\n\n#: cz/cz_regions.py:21\nmsgid \"Moravian-Silesian Region\"\nmsgstr \"Regione della Moravia-Silesia\"\n\n#: cz/forms.py:32 sk/forms.py:33\nmsgid \"Enter a postal code in the format XXXXX or XXX XX.\"\nmsgstr \"Inserisci un codice postale nel formato XXXXX o XXX XX .\"\n\n#: cz/forms.py:52\nmsgid \"Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.\"\nmsgstr \"Inserisci un numero di nascita nel formato XXXXXX/XXXX o XXXXXXXXXX.\"\n\n#: cz/forms.py:53\nmsgid \"Enter a valid birth number.\"\nmsgstr \"Inserisci un numero di nascita valido.\"\n\n#: cz/forms.py:102\nmsgid \"Enter a valid IC number.\"\nmsgstr \"Inserisci un numero di IC valido.\"\n\n#: de/de_states.py:5\nmsgid \"Baden-Wuerttemberg\"\nmsgstr \"Baden-Wuerttemberg\"\n\n#: de/de_states.py:6\nmsgid \"Bavaria\"\nmsgstr \"Baviera\"\n\n#: de/de_states.py:7\nmsgid \"Berlin\"\nmsgstr \"Berlino\"\n\n#: de/de_states.py:8\nmsgid \"Brandenburg\"\nmsgstr \"Brandenburgo\"\n\n#: de/de_states.py:9\nmsgid \"Bremen\"\nmsgstr \"Brema\"\n\n#: de/de_states.py:10\nmsgid \"Hamburg\"\nmsgstr \"Amburgo\"\n\n#: de/de_states.py:11\nmsgid \"Hessen\"\nmsgstr \"Hessen\"\n\n#: de/de_states.py:12\nmsgid \"Mecklenburg-Western Pomerania\"\nmsgstr \"Mecklenburg-Pomerania Ovest\"\n\n#: de/de_states.py:13\nmsgid \"Lower Saxony\"\nmsgstr \"Bassa Sassonia\"\n\n#: de/de_states.py:14\nmsgid \"North Rhine-Westphalia\"\nmsgstr \"Reno Nord-Wesfalia\"\n\n#: de/de_states.py:15\nmsgid \"Rhineland-Palatinate\"\nmsgstr \"Rhineland-Palatinate\"\n\n#: de/de_states.py:16\nmsgid \"Saarland\"\nmsgstr \"Saarland\"\n\n#: de/de_states.py:17\nmsgid \"Saxony\"\nmsgstr \"Sassonia\"\n\n#: de/de_states.py:18\nmsgid \"Saxony-Anhalt\"\nmsgstr \"Saxony-Anhalt\"\n\n#: de/de_states.py:19\nmsgid \"Schleswig-Holstein\"\nmsgstr \"Schleswig-Holstein\"\n\n#: de/de_states.py:20\nmsgid \"Thuringia\"\nmsgstr \"Turingia\"\n\n#: de/forms.py:20 fi/forms.py:18 fr/forms.py:20\nmsgid \"Enter a zip code in the format XXXXX.\"\nmsgstr \"Inserisci un codice postale nel formato XXXXX .\"\n\n#: de/forms.py:46\nmsgid \"\"\n\"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"format.\"\nmsgstr \"\"\n\"Inserisci un numero di carta d'identità tedesco valido nel formato \"\n\"XXXXXXXXXXX-XXXXXXX-XXXXXXX-X .\"\n\n#: es/es_provinces.py:5\nmsgid \"Araba\"\nmsgstr \"Araba\"\n\n#: es/es_provinces.py:6\nmsgid \"Albacete\"\nmsgstr \"Albacete\"\n\n#: es/es_provinces.py:7\nmsgid \"Alacant\"\nmsgstr \"Alacant\"\n\n#: es/es_provinces.py:8\nmsgid \"Almeria\"\nmsgstr \"Almeria\"\n\n#: es/es_provinces.py:9\nmsgid \"Avila\"\nmsgstr \"Avila\"\n\n#: es/es_provinces.py:10\nmsgid \"Badajoz\"\nmsgstr \"Badajoz\"\n\n#: es/es_provinces.py:11\nmsgid \"Illes Balears\"\nmsgstr \"Isole Baleari\"\n\n#: es/es_provinces.py:12\nmsgid \"Barcelona\"\nmsgstr \"Barcellona\"\n\n#: es/es_provinces.py:13\nmsgid \"Burgos\"\nmsgstr \"Burgos\"\n\n#: es/es_provinces.py:14\nmsgid \"Caceres\"\nmsgstr \"Caceres\"\n\n#: es/es_provinces.py:15\nmsgid \"Cadiz\"\nmsgstr \"Cadice\"\n\n#: es/es_provinces.py:16\nmsgid \"Castello\"\nmsgstr \"Castello\"\n\n#: es/es_provinces.py:17\nmsgid \"Ciudad Real\"\nmsgstr \"Città Reale\"\n\n#: es/es_provinces.py:18\nmsgid \"Cordoba\"\nmsgstr \"Cordoba\"\n\n#: es/es_provinces.py:19\nmsgid \"A Coruna\"\nmsgstr \"A Coruna\"\n\n#: es/es_provinces.py:20\nmsgid \"Cuenca\"\nmsgstr \"Cuenca\"\n\n#: es/es_provinces.py:21\nmsgid \"Girona\"\nmsgstr \"Girona\"\n\n#: es/es_provinces.py:22\nmsgid \"Granada\"\nmsgstr \"Granada\"\n\n#: es/es_provinces.py:23\nmsgid \"Guadalajara\"\nmsgstr \"Guadalajara\"\n\n#: es/es_provinces.py:24\nmsgid \"Guipuzkoa\"\nmsgstr \"Guipuzkoa\"\n\n#: es/es_provinces.py:25\nmsgid \"Huelva\"\nmsgstr \"Huelva\"\n\n#: es/es_provinces.py:26\nmsgid \"Huesca\"\nmsgstr \"Huesca\"\n\n#: es/es_provinces.py:27\nmsgid \"Jaen\"\nmsgstr \"Jaen\"\n\n#: es/es_provinces.py:28\nmsgid \"Leon\"\nmsgstr \"Leon\"\n\n#: es/es_provinces.py:29\nmsgid \"Lleida\"\nmsgstr \"Lleida\"\n\n#: es/es_provinces.py:30 es/es_regions.py:17\nmsgid \"La Rioja\"\nmsgstr \"La Rioja\"\n\n#: es/es_provinces.py:31\nmsgid \"Lugo\"\nmsgstr \"Lugo\"\n\n#: es/es_provinces.py:32 es/es_regions.py:18\nmsgid \"Madrid\"\nmsgstr \"Madrid\"\n\n#: es/es_provinces.py:33\nmsgid \"Malaga\"\nmsgstr \"Malaga\"\n\n#: es/es_provinces.py:34\nmsgid \"Murcia\"\nmsgstr \"Murcia\"\n\n#: es/es_provinces.py:35\nmsgid \"Navarre\"\nmsgstr \"Navarra\"\n\n#: es/es_provinces.py:36\nmsgid \"Ourense\"\nmsgstr \"Ourense\"\n\n#: es/es_provinces.py:37\nmsgid \"Asturias\"\nmsgstr \"Asturie\"\n\n#: es/es_provinces.py:38\nmsgid \"Palencia\"\nmsgstr \"Palencia\"\n\n#: es/es_provinces.py:39\nmsgid \"Las Palmas\"\nmsgstr \"Las Palmas\"\n\n#: es/es_provinces.py:40\nmsgid \"Pontevedra\"\nmsgstr \"Pontevedra\"\n\n#: es/es_provinces.py:41\nmsgid \"Salamanca\"\nmsgstr \"Salamanca\"\n\n#: es/es_provinces.py:42\nmsgid \"Santa Cruz de Tenerife\"\nmsgstr \"Santa Croce di Tenerife\"\n\n#: es/es_provinces.py:43 es/es_regions.py:11\nmsgid \"Cantabria\"\nmsgstr \"Cantabria\"\n\n#: es/es_provinces.py:44\nmsgid \"Segovia\"\nmsgstr \"Segovia\"\n\n#: es/es_provinces.py:45\nmsgid \"Seville\"\nmsgstr \"Siviglia\"\n\n#: es/es_provinces.py:46\nmsgid \"Soria\"\nmsgstr \"Soria\"\n\n#: es/es_provinces.py:47\nmsgid \"Tarragona\"\nmsgstr \"Tarragona\"\n\n#: es/es_provinces.py:48\nmsgid \"Teruel\"\nmsgstr \"Teruel\"\n\n#: es/es_provinces.py:49\nmsgid \"Toledo\"\nmsgstr \"Toledo\"\n\n#: es/es_provinces.py:50\nmsgid \"Valencia\"\nmsgstr \"Valenza\"\n\n#: es/es_provinces.py:51\nmsgid \"Valladolid\"\nmsgstr \"Valladolid\"\n\n#: es/es_provinces.py:52\nmsgid \"Bizkaia\"\nmsgstr \"Bizkaia\"\n\n#: es/es_provinces.py:53\nmsgid \"Zamora\"\nmsgstr \"Zamora\"\n\n#: es/es_provinces.py:54\nmsgid \"Zaragoza\"\nmsgstr \"Saragozza\"\n\n#: es/es_provinces.py:55\nmsgid \"Ceuta\"\nmsgstr \"Ceuta\"\n\n#: es/es_provinces.py:56\nmsgid \"Melilla\"\nmsgstr \"Melilla\"\n\n#: es/es_regions.py:5\nmsgid \"Andalusia\"\nmsgstr \"Andalusia\"\n\n#: es/es_regions.py:6\nmsgid \"Aragon\"\nmsgstr \"Aragon\"\n\n#: es/es_regions.py:7\nmsgid \"Principality of Asturias\"\nmsgstr \"Principato delle Asturie\"\n\n#: es/es_regions.py:8\nmsgid \"Balearic Islands\"\nmsgstr \"Isole Baleari\"\n\n#: es/es_regions.py:9\nmsgid \"Basque Country\"\nmsgstr \"Paese Basco\"\n\n#: es/es_regions.py:10\nmsgid \"Canary Islands\"\nmsgstr \"Isole Canarie\"\n\n#: es/es_regions.py:12\nmsgid \"Castile-La Mancha\"\nmsgstr \"Castiglia-La Mancha\"\n\n#: es/es_regions.py:13\nmsgid \"Castile and Leon\"\nmsgstr \"Castiglia e Leon\"\n\n#: es/es_regions.py:14\nmsgid \"Catalonia\"\nmsgstr \"Catalogna\"\n\n#: es/es_regions.py:15\nmsgid \"Extremadura\"\nmsgstr \"Estremadura\"\n\n#: es/es_regions.py:16\nmsgid \"Galicia\"\nmsgstr \"Galizia\"\n\n#: es/es_regions.py:19\nmsgid \"Region of Murcia\"\nmsgstr \"Regione Murzia\"\n\n#: es/es_regions.py:20\nmsgid \"Foral Community of Navarre\"\nmsgstr \"Comunità Forale di Navarra\"\n\n#: es/es_regions.py:21\nmsgid \"Valencian Community\"\nmsgstr \"Comunità di Valenza\"\n\n#: es/forms.py:26\nmsgid \"Enter a valid postal code in the range and format 01XXX - 52XXX.\"\nmsgstr \"\"\n\"Inserisci un codice postale valido nell'intervallo e formato 01XXX - 52XXX.\"\n\n#: es/forms.py:46\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or \"\n\"9XXXXXXXX.\"\nmsgstr \"\"\n\"Inserisci un numero telefonico valido in uno dei formati 6XXXXXXXX, \"\n\"8XXXXXXXX o 9XXXXXXXX.\"\n\n#: es/forms.py:73\nmsgid \"Please enter a valid NIF, NIE, or CIF.\"\nmsgstr \"Inserisci un NIF, NIE o CIF valido.\"\n\n#: es/forms.py:74\nmsgid \"Please enter a valid NIF or NIE.\"\nmsgstr \"Inserisci un NIF o NIE valido.\"\n\n#: es/forms.py:75\nmsgid \"Invalid checksum for NIF.\"\nmsgstr \"Checksum non valido per il NIF.\"\n\n#: es/forms.py:76\nmsgid \"Invalid checksum for NIE.\"\nmsgstr \"Checksum non valido per il NIE.\"\n\n#: es/forms.py:77\nmsgid \"Invalid checksum for CIF.\"\nmsgstr \"Checksum non valido per il CIF.\"\n\n#: es/forms.py:149\nmsgid \"\"\n\"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.\"\nmsgstr \"\"\n\"Inserisci un numero di conto corrente bancario valido nel formato XXXX-XXXX-\"\n\"XX-XXXXXXXXXX.\"\n\n#: es/forms.py:150\nmsgid \"Invalid checksum for bank account number.\"\nmsgstr \"Checksum non valido per il numero di conto corrente bancario.\"\n\n#: fi/forms.py:33\nmsgid \"Enter a valid Finnish social security number.\"\nmsgstr \"Inserisci un numero di assistenza sociale finlandese valido.\"\n\n#: fr/forms.py:35\nmsgid \"Phone numbers must be in 0X XX XX XX XX format.\"\nmsgstr \"I numeri di telefono devono essere in formato 0X XX XX XX XX.\"\n\n#: gb/forms.py:25\nmsgid \"Enter a valid postcode.\"\nmsgstr \"Inserisci un codice postale valido.\"\n\n#: gb/gb_regions.py:11\nmsgid \"Bedfordshire\"\nmsgstr \"Bedfordshire\"\n\n#: gb/gb_regions.py:12\nmsgid \"Buckinghamshire\"\nmsgstr \"Buckinghamshire\"\n\n#: gb/gb_regions.py:14\nmsgid \"Cheshire\"\nmsgstr \"Cheshire\"\n\n#: gb/gb_regions.py:15\nmsgid \"Cornwall and Isles of Scilly\"\nmsgstr \"Cornovaglia e Isole di Scilly\"\n\n#: gb/gb_regions.py:16\nmsgid \"Cumbria\"\nmsgstr \"Cumbria\"\n\n#: gb/gb_regions.py:17\nmsgid \"Derbyshire\"\nmsgstr \"Derbyshire\"\n\n#: gb/gb_regions.py:18\nmsgid \"Devon\"\nmsgstr \"Devon\"\n\n#: gb/gb_regions.py:19\nmsgid \"Dorset\"\nmsgstr \"Dorset\"\n\n#: gb/gb_regions.py:20\nmsgid \"Durham\"\nmsgstr \"Durham\"\n\n#: gb/gb_regions.py:21\nmsgid \"East Sussex\"\nmsgstr \"Sussex dell'Est\"\n\n#: gb/gb_regions.py:22\nmsgid \"Essex\"\nmsgstr \"Essex\"\n\n#: gb/gb_regions.py:23\nmsgid \"Gloucestershire\"\nmsgstr \"Gloucestershire\"\n\n#: gb/gb_regions.py:24\nmsgid \"Greater London\"\nmsgstr \"Greater London\"\n\n#: gb/gb_regions.py:25\nmsgid \"Greater Manchester\"\nmsgstr \"Greater Manchester\"\n\n#: gb/gb_regions.py:26\nmsgid \"Hampshire\"\nmsgstr \"Hampshire\"\n\n#: gb/gb_regions.py:27\nmsgid \"Hertfordshire\"\nmsgstr \"Hertfordshire\"\n\n#: gb/gb_regions.py:28\nmsgid \"Kent\"\nmsgstr \"Kent\"\n\n#: gb/gb_regions.py:29\nmsgid \"Lancashire\"\nmsgstr \"Lancashire\"\n\n#: gb/gb_regions.py:30\nmsgid \"Leicestershire\"\nmsgstr \"Leicestershire\"\n\n#: gb/gb_regions.py:31\nmsgid \"Lincolnshire\"\nmsgstr \"Lincolnshire\"\n\n#: gb/gb_regions.py:32\nmsgid \"Merseyside\"\nmsgstr \"Merseyside\"\n\n#: gb/gb_regions.py:33\nmsgid \"Norfolk\"\nmsgstr \"Norfolk\"\n\n#: gb/gb_regions.py:34\nmsgid \"North Yorkshire\"\nmsgstr \"Yorkshire del Nord\"\n\n#: gb/gb_regions.py:35\nmsgid \"Northamptonshire\"\nmsgstr \"Northamptonshire\"\n\n#: gb/gb_regions.py:36\nmsgid \"Northumberland\"\nmsgstr \"Northumberland\"\n\n#: gb/gb_regions.py:37\nmsgid \"Nottinghamshire\"\nmsgstr \"Nottinghamshire\"\n\n#: gb/gb_regions.py:38\nmsgid \"Oxfordshire\"\nmsgstr \"Oxfordshire\"\n\n#: gb/gb_regions.py:39\nmsgid \"Shropshire\"\nmsgstr \"Shropshire\"\n\n#: gb/gb_regions.py:40\nmsgid \"Somerset\"\nmsgstr \"Somerset\"\n\n#: gb/gb_regions.py:41\nmsgid \"South Yorkshire\"\nmsgstr \"Yorkshire del Sud\"\n\n#: gb/gb_regions.py:42\nmsgid \"Staffordshire\"\nmsgstr \"Staffordshire\"\n\n#: gb/gb_regions.py:43\nmsgid \"Suffolk\"\nmsgstr \"Suffolk\"\n\n#: gb/gb_regions.py:44\nmsgid \"Surrey\"\nmsgstr \"Surrey\"\n\n#: gb/gb_regions.py:45\nmsgid \"Tyne and Wear\"\nmsgstr \"Tyne and Wear\"\n\n#: gb/gb_regions.py:46\nmsgid \"Warwickshire\"\nmsgstr \"Warwickshire\"\n\n#: gb/gb_regions.py:47\nmsgid \"West Midlands\"\nmsgstr \"Midland Ovest\"\n\n#: gb/gb_regions.py:48\nmsgid \"West Sussex\"\nmsgstr \"Sussex Ovest\"\n\n#: gb/gb_regions.py:49\nmsgid \"West Yorkshire\"\nmsgstr \"Yorkshire Ovest\"\n\n#: gb/gb_regions.py:50\nmsgid \"Wiltshire\"\nmsgstr \"Wiltshire\"\n\n#: gb/gb_regions.py:51\nmsgid \"Worcestershire\"\nmsgstr \"Worcestershire\"\n\n#: gb/gb_regions.py:55\nmsgid \"County Antrim\"\nmsgstr \"Contea di Antrim\"\n\n#: gb/gb_regions.py:56\nmsgid \"County Armagh\"\nmsgstr \"Contea di Armagh\"\n\n#: gb/gb_regions.py:57\nmsgid \"County Down\"\nmsgstr \"Contea di Down\"\n\n#: gb/gb_regions.py:58\nmsgid \"County Fermanagh\"\nmsgstr \"Contea di Fermanagh\"\n\n#: gb/gb_regions.py:59\nmsgid \"County Londonderry\"\nmsgstr \"Contea di Londonderry\"\n\n#: gb/gb_regions.py:60\nmsgid \"County Tyrone\"\nmsgstr \"Contea di Tyrone\"\n\n#: gb/gb_regions.py:64\nmsgid \"Clwyd\"\nmsgstr \"Clwyd\"\n\n#: gb/gb_regions.py:65\nmsgid \"Dyfed\"\nmsgstr \"Dyfed\"\n\n#: gb/gb_regions.py:66\nmsgid \"Gwent\"\nmsgstr \"Gwent\"\n\n#: gb/gb_regions.py:67\nmsgid \"Gwynedd\"\nmsgstr \"Gwynedd\"\n\n#: gb/gb_regions.py:68\nmsgid \"Mid Glamorgan\"\nmsgstr \"Mid Glamorgan\"\n\n#: gb/gb_regions.py:69\nmsgid \"Powys\"\nmsgstr \"Powys\"\n\n#: gb/gb_regions.py:70\nmsgid \"South Glamorgan\"\nmsgstr \"Glamorgan Sud\"\n\n#: gb/gb_regions.py:71\nmsgid \"West Glamorgan\"\nmsgstr \"Glamorgan Ovest\"\n\n#: gb/gb_regions.py:75\nmsgid \"Borders\"\nmsgstr \"Borders\"\n\n#: gb/gb_regions.py:76\nmsgid \"Central Scotland\"\nmsgstr \"Scozia Centrale\"\n\n#: gb/gb_regions.py:77\nmsgid \"Dumfries and Galloway\"\nmsgstr \"Dumfries and Galloway\"\n\n#: gb/gb_regions.py:78\nmsgid \"Fife\"\nmsgstr \"Fife\"\n\n#: gb/gb_regions.py:79\nmsgid \"Grampian\"\nmsgstr \"Grampian\"\n\n#: gb/gb_regions.py:80\nmsgid \"Highland\"\nmsgstr \"Highland\"\n\n#: gb/gb_regions.py:81\nmsgid \"Lothian\"\nmsgstr \"Lothian\"\n\n#: gb/gb_regions.py:82\nmsgid \"Orkney Islands\"\nmsgstr \"Isole Orkney\"\n\n#: gb/gb_regions.py:83\nmsgid \"Shetland Islands\"\nmsgstr \"Isole Shetland\"\n\n#: gb/gb_regions.py:84\nmsgid \"Strathclyde\"\nmsgstr \"Strathclyde\"\n\n#: gb/gb_regions.py:85\nmsgid \"Tayside\"\nmsgstr \"Tayside\"\n\n#: gb/gb_regions.py:86\nmsgid \"Western Isles\"\nmsgstr \"Isole dell'Ovest\"\n\n#: gb/gb_regions.py:90\nmsgid \"England\"\nmsgstr \"Inghilterra\"\n\n#: gb/gb_regions.py:91\nmsgid \"Northern Ireland\"\nmsgstr \"Irlanda del Nord\"\n\n#: gb/gb_regions.py:92\nmsgid \"Scotland\"\nmsgstr \"Scozia\"\n\n#: gb/gb_regions.py:93\nmsgid \"Wales\"\nmsgstr \"Galles\"\n\n#: hk/forms.py:37\n#, python-format\nmsgid \"Phone number should not start with one of the followings: %s.\"\nmsgstr \"Il numero di telefono non deve iniziare con uno dei seguenti: %s.\"\n\n#: hk/forms.py:40\n#, python-format\nmsgid \"Phone number must be in one of the following formats: %s.\"\nmsgstr \"Il numero di telefono deve essere in uno dei formati seguenti: %s.\"\n\n#: hk/forms.py:42\n#, python-format\nmsgid \"Phone number should start with one of the followings: %s.\"\nmsgstr \"Il numero di telefono deve iniziare con uno dei seguenti: %s.\"\n\n#: hr/forms.py:76\nmsgid \"Enter a valid 13 digit JMBG\"\nmsgstr \"Inserisci un JMBG (Ex Jugoslavia) valido a 13 cifre\"\n\n#: hr/forms.py:77\nmsgid \"Error in date segment\"\nmsgstr \"Errore nella data\"\n\n#: hr/forms.py:123\nmsgid \"Enter a valid 11 digit OIB\"\nmsgstr \"Inserisci l'OIB (Croazia) valido a 11 cifre\"\n\n#: hr/forms.py:152 id/forms.py:112\nmsgid \"Enter a valid vehicle license plate number\"\nmsgstr \"Inserisci una targa automobilistica valida\"\n\n#: hr/forms.py:153\nmsgid \"Enter a valid location code\"\nmsgstr \"Inserisci un codice località valido\"\n\n#: hr/forms.py:154\nmsgid \"Number part cannot be zero\"\nmsgstr \"La sezione numerica non può essere zero\"\n\n#: hr/forms.py:190\nmsgid \"Enter a valid 5 digit postal code\"\nmsgstr \"Inserisci un codice postale valido a 5 cifre\"\n\n#: hr/forms.py:218 id/forms.py:72 nl/forms.py:56\nmsgid \"Enter a valid phone number\"\nmsgstr \"Inserisci un numero telefonico valido\"\n\n#: hr/forms.py:219\nmsgid \"Enter a valid area or mobile network code\"\nmsgstr \"Inserisci un'area valida od un codice di rete mobile\"\n\n#: hr/forms.py:220\nmsgid \"The phone nubmer is too long\"\nmsgstr \"Il numero telefonico è troppo lungo\"\n\n#: hr/forms.py:258\nmsgid \"Enter a valid 19 digit JMBAG starting with 601983\"\nmsgstr \"Inserisci un numero JMBAG valido a 19 cifre che inizi con 601983\"\n\n#: hr/forms.py:259\nmsgid \"Card issue number cannot be zero\"\nmsgstr \"Il numero di rilascio della carta non può essere zero\"\n\n#: hr/hr_choices.py:14\nmsgid \"Grad Zagreb\"\nmsgstr \"Grad Zagreb\"\n\n#: hr/hr_choices.py:15\nmsgid \"Bjelovarsko-bilogorska županija\"\nmsgstr \"Bjelovarsko-bilogorska županija\"\n\n#: hr/hr_choices.py:16\nmsgid \"Brodsko-posavska županija\"\nmsgstr \"Brodsko-posavska županija\"\n\n#: hr/hr_choices.py:17\nmsgid \"Dubrovačko-neretvanska županija\"\nmsgstr \"Dubrovačko-neretvanska županija\"\n\n#: hr/hr_choices.py:18\nmsgid \"Istarska županija\"\nmsgstr \"Istarska županija\"\n\n#: hr/hr_choices.py:19\nmsgid \"Karlovačka županija\"\nmsgstr \"Karlovačka županija\"\n\n#: hr/hr_choices.py:20\nmsgid \"Koprivničko-križevačka županija\"\nmsgstr \"Koprivničko-križevačka županija\"\n\n#: hr/hr_choices.py:21\nmsgid \"Krapinsko-zagorska županija\"\nmsgstr \"Krapinsko-Zagorska županija\"\n\n#: hr/hr_choices.py:22\nmsgid \"Ličko-senjska županija\"\nmsgstr \"Ličko-senjska županija\"\n\n#: hr/hr_choices.py:23\nmsgid \"Međimurska županija\"\nmsgstr \"Međimurska županija\"\n\n#: hr/hr_choices.py:24\nmsgid \"Osječko-baranjska županija\"\nmsgstr \"Osječko-baranjska županija\"\n\n#: hr/hr_choices.py:25\nmsgid \"Požeško-slavonska županija\"\nmsgstr \"Požeško-slavonska županija\"\n\n#: hr/hr_choices.py:26\nmsgid \"Primorsko-goranska županija\"\nmsgstr \"Litoraneo-montana županija\"\n\n#: hr/hr_choices.py:27\nmsgid \"Sisačko-moslavačka županija\"\nmsgstr \"Sisačko-Moslavačka županija\"\n\n#: hr/hr_choices.py:28\nmsgid \"Splitsko-dalmatinska županija\"\nmsgstr \"Splitsko-Dalmatinska županija\"\n\n#: hr/hr_choices.py:29\nmsgid \"Šibensko-kninska županija\"\nmsgstr \"Šibensko-kninska županija\"\n\n#: hr/hr_choices.py:30\nmsgid \"Varaždinska županija\"\nmsgstr \"Varazdinska županija\"\n\n#: hr/hr_choices.py:31\nmsgid \"Virovitičko-podravska županija\"\nmsgstr \"Virovitičko-Podravska županija\"\n\n#: hr/hr_choices.py:32\nmsgid \"Vukovarsko-srijemska županija\"\nmsgstr \"Vukovarsko-srijemska županija\"\n\n#: hr/hr_choices.py:33\nmsgid \"Zadarska županija\"\nmsgstr \"Zadarska županija\"\n\n#: hr/hr_choices.py:34\nmsgid \"Zagrebačka županija\"\nmsgstr \"Zagrebačka županija\"\n\n#: id/forms.py:31\nmsgid \"Enter a valid post code\"\nmsgstr \"Inserisci un codice postale valido\"\n\n#: id/forms.py:176\nmsgid \"Enter a valid NIK/KTP number\"\nmsgstr \"Inserisci un numero NIK/KTP valido\"\n\n#: id/id_choices.py:15\nmsgid \"Aceh\"\nmsgstr \"Aceh\"\n\n#: id/id_choices.py:16 id/id_choices.py:79\nmsgid \"Bali\"\nmsgstr \"Bali\"\n\n#: id/id_choices.py:17 id/id_choices.py:51\nmsgid \"Banten\"\nmsgstr \"Banten\"\n\n#: id/id_choices.py:18 id/id_choices.py:60\nmsgid \"Bengkulu\"\nmsgstr \"Bengkulu\"\n\n#: id/id_choices.py:19 id/id_choices.py:53\nmsgid \"Yogyakarta\"\nmsgstr \"Yogyakarta\"\n\n#: id/id_choices.py:20 id/id_choices.py:57\nmsgid \"Jakarta\"\nmsgstr \"Giacarta\"\n\n#: id/id_choices.py:21 id/id_choices.py:81\nmsgid \"Gorontalo\"\nmsgstr \"Gorontalo\"\n\n#: id/id_choices.py:22 id/id_choices.py:63\nmsgid \"Jambi\"\nmsgstr \"Jambi\"\n\n#: id/id_choices.py:23\nmsgid \"Jawa Barat\"\nmsgstr \"Jawa Barat\"\n\n#: id/id_choices.py:24\nmsgid \"Jawa Tengah\"\nmsgstr \"Jawa Tengah\"\n\n#: id/id_choices.py:25\nmsgid \"Jawa Timur\"\nmsgstr \"Jawa Timur\"\n\n#: id/id_choices.py:26 id/id_choices.py:94\nmsgid \"Kalimantan Barat\"\nmsgstr \"Kalimantan Barat\"\n\n#: id/id_choices.py:27 id/id_choices.py:72\nmsgid \"Kalimantan Selatan\"\nmsgstr \"Kalimantan Selatan\"\n\n#: id/id_choices.py:28 id/id_choices.py:95\nmsgid \"Kalimantan Tengah\"\nmsgstr \"Kalimantan Tengah\"\n\n#: id/id_choices.py:29 id/id_choices.py:96\nmsgid \"Kalimantan Timur\"\nmsgstr \"Kalimantan Timur\"\n\n#: id/id_choices.py:30\nmsgid \"Kepulauan Bangka-Belitung\"\nmsgstr \"Kepulauan Bangka-Belitung\"\n\n#: id/id_choices.py:31 id/id_choices.py:68\nmsgid \"Kepulauan Riau\"\nmsgstr \"Kepulauan Riau\"\n\n#: id/id_choices.py:32 id/id_choices.py:61\nmsgid \"Lampung\"\nmsgstr \"Lampung\"\n\n#: id/id_choices.py:33 id/id_choices.py:76\nmsgid \"Maluku\"\nmsgstr \"Maluku\"\n\n#: id/id_choices.py:34 id/id_choices.py:77\nmsgid \"Maluku Utara\"\nmsgstr \"Maluku Utara\"\n\n#: id/id_choices.py:35\nmsgid \"Nusa Tenggara Barat\"\nmsgstr \"Nusa Tenggara Barat\"\n\n#: id/id_choices.py:36\nmsgid \"Nusa Tenggara Timur\"\nmsgstr \"Nusa Tenggara Timur\"\n\n#: id/id_choices.py:37\nmsgid \"Papua\"\nmsgstr \"Papua\"\n\n#: id/id_choices.py:38\nmsgid \"Papua Barat\"\nmsgstr \"Papua Barat\"\n\n#: id/id_choices.py:39 id/id_choices.py:66\nmsgid \"Riau\"\nmsgstr \"Riau\"\n\n#: id/id_choices.py:40 id/id_choices.py:74\nmsgid \"Sulawesi Barat\"\nmsgstr \"Sulawesi Barat\"\n\n#: id/id_choices.py:41 id/id_choices.py:75\nmsgid \"Sulawesi Selatan\"\nmsgstr \"Sulawesi Selatan\"\n\n#: id/id_choices.py:42 id/id_choices.py:82\nmsgid \"Sulawesi Tengah\"\nmsgstr \"Sulawesi Tengah\"\n\n#: id/id_choices.py:43 id/id_choices.py:85\nmsgid \"Sulawesi Tenggara\"\nmsgstr \"Sulawesi Tenggara\"\n\n#: id/id_choices.py:44\nmsgid \"Sulawesi Utara\"\nmsgstr \"Sulawesi Utara\"\n\n#: id/id_choices.py:45 id/id_choices.py:58\nmsgid \"Sumatera Barat\"\nmsgstr \"Sumatera Barat\"\n\n#: id/id_choices.py:46 id/id_choices.py:62\nmsgid \"Sumatera Selatan\"\nmsgstr \"Sumatera Selatan\"\n\n#: id/id_choices.py:47 id/id_choices.py:64\nmsgid \"Sumatera Utara\"\nmsgstr \"Sumatera Utara\"\n\n#: id/id_choices.py:52\nmsgid \"Magelang\"\nmsgstr \"Magelang\"\n\n#: id/id_choices.py:54\nmsgid \"Surakarta - Solo\"\nmsgstr \"Surakarta - Solo\"\n\n#: id/id_choices.py:55\nmsgid \"Madiun\"\nmsgstr \"Madiun\"\n\n#: id/id_choices.py:56\nmsgid \"Kediri\"\nmsgstr \"Kediri\"\n\n#: id/id_choices.py:59\nmsgid \"Tapanuli\"\nmsgstr \"Tapanuli\"\n\n#: id/id_choices.py:65\nmsgid \"Nanggroe Aceh Darussalam\"\nmsgstr \"Nanggroe Aceh Darussalam\"\n\n#: id/id_choices.py:67\nmsgid \"Kepulauan Bangka Belitung\"\nmsgstr \"Kepulauan Bangka Belitung\"\n\n#: id/id_choices.py:69\nmsgid \"Corps Consulate\"\nmsgstr \"Corpi Consolari\"\n\n#: id/id_choices.py:70\nmsgid \"Corps Diplomatic\"\nmsgstr \"Corpi Diplomatici\"\n\n#: id/id_choices.py:71\nmsgid \"Bandung\"\nmsgstr \"Bandung\"\n\n#: id/id_choices.py:73\nmsgid \"Sulawesi Utara Daratan\"\nmsgstr \"Sulawesi Utara Daratan\"\n\n#: id/id_choices.py:78\nmsgid \"NTT - Timor\"\nmsgstr \"NTT - Timor\"\n\n#: id/id_choices.py:80\nmsgid \"Sulawesi Utara Kepulauan\"\nmsgstr \"Sulawesi Utara Kepulauan\"\n\n#: id/id_choices.py:83\nmsgid \"NTB - Lombok\"\nmsgstr \"NTB - Lombok\"\n\n#: id/id_choices.py:84\nmsgid \"Papua dan Papua Barat\"\nmsgstr \"Papua dan Papua Barat\"\n\n#: id/id_choices.py:86\nmsgid \"Cirebon\"\nmsgstr \"Cirebon\"\n\n#: id/id_choices.py:87\nmsgid \"NTB - Sumbawa\"\nmsgstr \"NTB - Sumbawa\"\n\n#: id/id_choices.py:88\nmsgid \"NTT - Flores\"\nmsgstr \"NTT - Flores\"\n\n#: id/id_choices.py:89\nmsgid \"NTT - Sumba\"\nmsgstr \"NTT - Sumba\"\n\n#: id/id_choices.py:90\nmsgid \"Bogor\"\nmsgstr \"Bogor\"\n\n#: id/id_choices.py:91\nmsgid \"Pekalongan\"\nmsgstr \"Pekalongan\"\n\n#: id/id_choices.py:92\nmsgid \"Semarang\"\nmsgstr \"Semarang\"\n\n#: id/id_choices.py:93\nmsgid \"Pati\"\nmsgstr \"Pati\"\n\n#: id/id_choices.py:97\nmsgid \"Surabaya\"\nmsgstr \"Surabaya\"\n\n#: id/id_choices.py:98\nmsgid \"Madura\"\nmsgstr \"Madura\"\n\n#: id/id_choices.py:99\nmsgid \"Malang\"\nmsgstr \"Malang\"\n\n#: id/id_choices.py:100\nmsgid \"Jember\"\nmsgstr \"Jember\"\n\n#: id/id_choices.py:101\nmsgid \"Banyumas\"\nmsgstr \"Banyumas\"\n\n#: id/id_choices.py:102\nmsgid \"Federal Government\"\nmsgstr \"Governo Federale\"\n\n#: id/id_choices.py:103\nmsgid \"Bojonegoro\"\nmsgstr \"Bojonegoro\"\n\n#: id/id_choices.py:104\nmsgid \"Purwakarta\"\nmsgstr \"Purwakarta\"\n\n#: id/id_choices.py:105\nmsgid \"Sidoarjo\"\nmsgstr \"Sidoarjo\"\n\n#: id/id_choices.py:106\nmsgid \"Garut\"\nmsgstr \"Garut\"\n\n#: ie/ie_counties.py:8\nmsgid \"Antrim\"\nmsgstr \"Antrim\"\n\n#: ie/ie_counties.py:9\nmsgid \"Armagh\"\nmsgstr \"Armagh\"\n\n#: ie/ie_counties.py:10\nmsgid \"Carlow\"\nmsgstr \"Carlow\"\n\n#: ie/ie_counties.py:11\nmsgid \"Cavan\"\nmsgstr \"Cavan\"\n\n#: ie/ie_counties.py:12\nmsgid \"Clare\"\nmsgstr \"Clare\"\n\n#: ie/ie_counties.py:13\nmsgid \"Cork\"\nmsgstr \"Cork\"\n\n#: ie/ie_counties.py:14\nmsgid \"Derry\"\nmsgstr \"Derry\"\n\n#: ie/ie_counties.py:15\nmsgid \"Donegal\"\nmsgstr \"Donegal\"\n\n#: ie/ie_counties.py:16\nmsgid \"Down\"\nmsgstr \"Down\"\n\n#: ie/ie_counties.py:17\nmsgid \"Dublin\"\nmsgstr \"Dublino\"\n\n#: ie/ie_counties.py:18\nmsgid \"Fermanagh\"\nmsgstr \"Fermanagh\"\n\n#: ie/ie_counties.py:19\nmsgid \"Galway\"\nmsgstr \"Galway\"\n\n#: ie/ie_counties.py:20\nmsgid \"Kerry\"\nmsgstr \"Kerry\"\n\n#: ie/ie_counties.py:21\nmsgid \"Kildare\"\nmsgstr \"Kildare\"\n\n#: ie/ie_counties.py:22\nmsgid \"Kilkenny\"\nmsgstr \"Kilkenny\"\n\n#: ie/ie_counties.py:23\nmsgid \"Laois\"\nmsgstr \"Laois\"\n\n#: ie/ie_counties.py:24\nmsgid \"Leitrim\"\nmsgstr \"Leitrim\"\n\n#: ie/ie_counties.py:25\nmsgid \"Limerick\"\nmsgstr \"Limerick\"\n\n#: ie/ie_counties.py:26\nmsgid \"Longford\"\nmsgstr \"Longford\"\n\n#: ie/ie_counties.py:27\nmsgid \"Louth\"\nmsgstr \"Louth\"\n\n#: ie/ie_counties.py:28\nmsgid \"Mayo\"\nmsgstr \"Mayo\"\n\n#: ie/ie_counties.py:29\nmsgid \"Meath\"\nmsgstr \"Meath\"\n\n#: ie/ie_counties.py:30\nmsgid \"Monaghan\"\nmsgstr \"Monaghan\"\n\n#: ie/ie_counties.py:31\nmsgid \"Offaly\"\nmsgstr \"Offaly\"\n\n#: ie/ie_counties.py:32\nmsgid \"Roscommon\"\nmsgstr \"Roscommon\"\n\n#: ie/ie_counties.py:33\nmsgid \"Sligo\"\nmsgstr \"Sligo\"\n\n#: ie/ie_counties.py:34\nmsgid \"Tipperary\"\nmsgstr \"Tipperary\"\n\n#: ie/ie_counties.py:35\nmsgid \"Tyrone\"\nmsgstr \"Tyrone\"\n\n#: ie/ie_counties.py:36\nmsgid \"Waterford\"\nmsgstr \"Waterford\"\n\n#: ie/ie_counties.py:37\nmsgid \"Westmeath\"\nmsgstr \"Westmeath\"\n\n#: ie/ie_counties.py:38\nmsgid \"Wexford\"\nmsgstr \"Wexford\"\n\n#: ie/ie_counties.py:39\nmsgid \"Wicklow\"\nmsgstr \"Wicklow\"\n\n#: il/forms.py:32\nmsgid \"Enter a postal code in the format XXXXX\"\nmsgstr \"Inserisci un codice postale nel formato XXXXX\"\n\n#: il/forms.py:51\nmsgid \"Enter a valid ID number.\"\nmsgstr \"Inserisci un numero di identità valido.\"\n\n#: in_/forms.py:41\nmsgid \"Enter a zip code in the format XXXXXX or XXX XXX.\"\nmsgstr \"Inserisci un codice postale nel formato XXXXXX o XXX XXX.\"\n\n#: in_/forms.py:64\nmsgid \"Enter an Indian state or territory.\"\nmsgstr \"Inserisci uno stato o territorio Indiano.\"\n\n#: in_/forms.py:103\nmsgid \"Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.\"\nmsgstr \"\"\n\"I numeri di telefono devono essere in formato 02X-8X o 03X-7X o 04X-6X.\"\n\n#: is_/forms.py:22\nmsgid \"\"\n\"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.\"\nmsgstr \"\"\n\"Inserisci un numero di identificazione islandese valido. Il formato è XXXXXX-\"\n\"XXXX .\"\n\n#: is_/forms.py:23\nmsgid \"The Icelandic identification number is not valid.\"\nmsgstr \"Il numero di identificazione islandese non è valido.\"\n\n#: it/forms.py:21\nmsgid \"Enter a valid zip code.\"\nmsgstr \"Inserisci un codice postale valido.\"\n\n#: it/forms.py:48\nmsgid \"Enter a valid Social Security number.\"\nmsgstr \"Inserisci un numero di Assistenza Sociale valido.\"\n\n#: it/forms.py:73\nmsgid \"Enter a valid VAT number.\"\nmsgstr \"Inserisci un numero di partita IVA valido.\"\n\n#: jp/forms.py:19\nmsgid \"Enter a postal code in the format XXXXXXX or XXX-XXXX.\"\nmsgstr \"Inserisci un codice postale nel formato XXXXXXX o XXX-XXXX .\"\n\n#: jp/jp_prefectures.py:4\nmsgid \"Hokkaido\"\nmsgstr \"Hokkaido\"\n\n#: jp/jp_prefectures.py:5\nmsgid \"Aomori\"\nmsgstr \"Aomori\"\n\n#: jp/jp_prefectures.py:6\nmsgid \"Iwate\"\nmsgstr \"Iwate\"\n\n#: jp/jp_prefectures.py:7\nmsgid \"Miyagi\"\nmsgstr \"Miyagi\"\n\n#: jp/jp_prefectures.py:8\nmsgid \"Akita\"\nmsgstr \"Akita\"\n\n#: jp/jp_prefectures.py:9\nmsgid \"Yamagata\"\nmsgstr \"Yamagata\"\n\n#: jp/jp_prefectures.py:10\nmsgid \"Fukushima\"\nmsgstr \"Fukushima\"\n\n#: jp/jp_prefectures.py:11\nmsgid \"Ibaraki\"\nmsgstr \"Ibaraki\"\n\n#: jp/jp_prefectures.py:12\nmsgid \"Tochigi\"\nmsgstr \"Tochigi\"\n\n#: jp/jp_prefectures.py:13\nmsgid \"Gunma\"\nmsgstr \"Gunma\"\n\n#: jp/jp_prefectures.py:14\nmsgid \"Saitama\"\nmsgstr \"Saitama\"\n\n#: jp/jp_prefectures.py:15\nmsgid \"Chiba\"\nmsgstr \"Chiba\"\n\n#: jp/jp_prefectures.py:16\nmsgid \"Tokyo\"\nmsgstr \"Tokyo\"\n\n#: jp/jp_prefectures.py:17\nmsgid \"Kanagawa\"\nmsgstr \"Kanagawa\"\n\n#: jp/jp_prefectures.py:18\nmsgid \"Yamanashi\"\nmsgstr \"Yamanashi\"\n\n#: jp/jp_prefectures.py:19\nmsgid \"Nagano\"\nmsgstr \"Nagano\"\n\n#: jp/jp_prefectures.py:20\nmsgid \"Niigata\"\nmsgstr \"Niigata\"\n\n#: jp/jp_prefectures.py:21\nmsgid \"Toyama\"\nmsgstr \"Toyama\"\n\n#: jp/jp_prefectures.py:22\nmsgid \"Ishikawa\"\nmsgstr \"Ishikawa\"\n\n#: jp/jp_prefectures.py:23\nmsgid \"Fukui\"\nmsgstr \"Fukui\"\n\n#: jp/jp_prefectures.py:24\nmsgid \"Gifu\"\nmsgstr \"Gifu\"\n\n#: jp/jp_prefectures.py:25\nmsgid \"Shizuoka\"\nmsgstr \"Shizuoka\"\n\n#: jp/jp_prefectures.py:26\nmsgid \"Aichi\"\nmsgstr \"Aichi\"\n\n#: jp/jp_prefectures.py:27\nmsgid \"Mie\"\nmsgstr \"Mie\"\n\n#: jp/jp_prefectures.py:28\nmsgid \"Shiga\"\nmsgstr \"Shiga\"\n\n#: jp/jp_prefectures.py:29\nmsgid \"Kyoto\"\nmsgstr \"Kyoto\"\n\n#: jp/jp_prefectures.py:30\nmsgid \"Osaka\"\nmsgstr \"Osaka\"\n\n#: jp/jp_prefectures.py:31\nmsgid \"Hyogo\"\nmsgstr \"Hyogo\"\n\n#: jp/jp_prefectures.py:32\nmsgid \"Nara\"\nmsgstr \"Nara\"\n\n#: jp/jp_prefectures.py:33\nmsgid \"Wakayama\"\nmsgstr \"Wakayama\"\n\n#: jp/jp_prefectures.py:34\nmsgid \"Tottori\"\nmsgstr \"Tottori\"\n\n#: jp/jp_prefectures.py:35\nmsgid \"Shimane\"\nmsgstr \"Shimane\"\n\n#: jp/jp_prefectures.py:36\nmsgid \"Okayama\"\nmsgstr \"Okayama\"\n\n#: jp/jp_prefectures.py:37\nmsgid \"Hiroshima\"\nmsgstr \"Hiroshima\"\n\n#: jp/jp_prefectures.py:38\nmsgid \"Yamaguchi\"\nmsgstr \"Yamaguchi\"\n\n#: jp/jp_prefectures.py:39\nmsgid \"Tokushima\"\nmsgstr \"Tokushima\"\n\n#: jp/jp_prefectures.py:40\nmsgid \"Kagawa\"\nmsgstr \"Kagawa\"\n\n#: jp/jp_prefectures.py:41\nmsgid \"Ehime\"\nmsgstr \"Ehime\"\n\n#: jp/jp_prefectures.py:42\nmsgid \"Kochi\"\nmsgstr \"Kochi\"\n\n#: jp/jp_prefectures.py:43\nmsgid \"Fukuoka\"\nmsgstr \"Fukuoka\"\n\n#: jp/jp_prefectures.py:44\nmsgid \"Saga\"\nmsgstr \"Saga\"\n\n#: jp/jp_prefectures.py:45\nmsgid \"Nagasaki\"\nmsgstr \"Nagasaki\"\n\n#: jp/jp_prefectures.py:46\nmsgid \"Kumamoto\"\nmsgstr \"Kumamoto\"\n\n#: jp/jp_prefectures.py:47\nmsgid \"Oita\"\nmsgstr \"Oita\"\n\n#: jp/jp_prefectures.py:48\nmsgid \"Miyazaki\"\nmsgstr \"Miyazaki\"\n\n#: jp/jp_prefectures.py:49\nmsgid \"Kagoshima\"\nmsgstr \"Kagoshima\"\n\n#: jp/jp_prefectures.py:50\nmsgid \"Okinawa\"\nmsgstr \"Okinawa\"\n\n#: kw/forms.py:27\nmsgid \"Enter a valid Kuwaiti Civil ID number\"\nmsgstr \"Inserisci un numero civile ID kuwaitiano valido\"\n\n#: mk/forms.py:18\nmsgid \"\"\n\"Identity card numbers must contain either 4 to 7 digits or an uppercase \"\n\"letter and 7 digits.\"\nmsgstr \"\"\n\"I numeri delle carte d'identità devono essere composti da 4 a 7 cifre o da \"\n\"una lettera maiuscola e 7 cifre.\"\n\n#: mk/forms.py:57 si/forms.py:24\nmsgid \"This field should contain exactly 13 digits.\"\nmsgstr \"Questo campo dovrebbe contenere esattamente 13 cifre.\"\n\n#: mk/forms.py:58\nmsgid \"The first 7 digits of the UMCN must represent a valid past date.\"\nmsgstr \"\"\n\"Le prime 7 cifre dell'UMCN devono rappresentare una data valida del passato.\"\n\n#: mk/forms.py:59\nmsgid \"The UMCN is not valid.\"\nmsgstr \"L'UMCN non è valido.\"\n\n#: mk/mk_choices.py:10\nmsgid \"Aerodrom\"\nmsgstr \"Aerodrom\"\n\n#: mk/mk_choices.py:11\nmsgid \"Aračinovo\"\nmsgstr \"Aracinovo\"\n\n#: mk/mk_choices.py:12\nmsgid \"Berovo\"\nmsgstr \"Berovo\"\n\n#: mk/mk_choices.py:13\nmsgid \"Bitola\"\nmsgstr \"Bitola\"\n\n#: mk/mk_choices.py:14\nmsgid \"Bogdanci\"\nmsgstr \"Bogdanci\"\n\n#: mk/mk_choices.py:15\nmsgid \"Bogovinje\"\nmsgstr \"Bogovinje\"\n\n#: mk/mk_choices.py:16\nmsgid \"Bosilovo\"\nmsgstr \"Bosilovo\"\n\n#: mk/mk_choices.py:17\nmsgid \"Brvenica\"\nmsgstr \"Brvenica\"\n\n#: mk/mk_choices.py:18\nmsgid \"Butel\"\nmsgstr \"Butel\"\n\n#: mk/mk_choices.py:19\nmsgid \"Valandovo\"\nmsgstr \"Valandovo\"\n\n#: mk/mk_choices.py:20\nmsgid \"Vasilevo\"\nmsgstr \"Vasilevo\"\n\n#: mk/mk_choices.py:21\nmsgid \"Vevčani\"\nmsgstr \"Vevcani\"\n\n#: mk/mk_choices.py:22\nmsgid \"Veles\"\nmsgstr \"Veles\"\n\n#: mk/mk_choices.py:23\nmsgid \"Vinica\"\nmsgstr \"Vinica\"\n\n#: mk/mk_choices.py:24\nmsgid \"Vraneštica\"\nmsgstr \"Vraneštica\"\n\n#: mk/mk_choices.py:25\nmsgid \"Vrapčište\"\nmsgstr \"Vrapčište\"\n\n#: mk/mk_choices.py:26\nmsgid \"Gazi Baba\"\nmsgstr \"Gazi Baba\"\n\n#: mk/mk_choices.py:27\nmsgid \"Gevgelija\"\nmsgstr \"Gevgelija\"\n\n#: mk/mk_choices.py:28\nmsgid \"Gostivar\"\nmsgstr \"Gostivar\"\n\n#: mk/mk_choices.py:29\nmsgid \"Gradsko\"\nmsgstr \"Gradsko\"\n\n#: mk/mk_choices.py:30\nmsgid \"Debar\"\nmsgstr \"Debar\"\n\n#: mk/mk_choices.py:31\nmsgid \"Debarca\"\nmsgstr \"Debarca\"\n\n#: mk/mk_choices.py:32\nmsgid \"Delčevo\"\nmsgstr \"Delčevo\"\n\n#: mk/mk_choices.py:33\nmsgid \"Demir Kapija\"\nmsgstr \"Demir Kapija\"\n\n#: mk/mk_choices.py:34\nmsgid \"Demir Hisar\"\nmsgstr \"Demir Hisar\"\n\n#: mk/mk_choices.py:35\nmsgid \"Dolneni\"\nmsgstr \"Dolneni\"\n\n#: mk/mk_choices.py:36\nmsgid \"Drugovo\"\nmsgstr \"Drugovo\"\n\n#: mk/mk_choices.py:37\nmsgid \"Gjorče Petrov\"\nmsgstr \"Gjorče Petrov\"\n\n#: mk/mk_choices.py:38\nmsgid \"Želino\"\nmsgstr \"Želino\"\n\n#: mk/mk_choices.py:39\nmsgid \"Zajas\"\nmsgstr \"Zajas\"\n\n#: mk/mk_choices.py:40\nmsgid \"Zelenikovo\"\nmsgstr \"Zelenikovo\"\n\n#: mk/mk_choices.py:41\nmsgid \"Zrnovci\"\nmsgstr \"Zrnovci\"\n\n#: mk/mk_choices.py:42\nmsgid \"Ilinden\"\nmsgstr \"Ilinden\"\n\n#: mk/mk_choices.py:43\nmsgid \"Jegunovce\"\nmsgstr \"Jegunovce\"\n\n#: mk/mk_choices.py:44\nmsgid \"Kavadarci\"\nmsgstr \"Kavadarci\"\n\n#: mk/mk_choices.py:45\nmsgid \"Karbinci\"\nmsgstr \"Karbinci\"\n\n#: mk/mk_choices.py:46\nmsgid \"Karpoš\"\nmsgstr \"Karpoš\"\n\n#: mk/mk_choices.py:47\nmsgid \"Kisela Voda\"\nmsgstr \"Kisela Voda\"\n\n#: mk/mk_choices.py:48\nmsgid \"Kičevo\"\nmsgstr \"Kičevo\"\n\n#: mk/mk_choices.py:49\nmsgid \"Konče\"\nmsgstr \"Konče\"\n\n#: mk/mk_choices.py:50\nmsgid \"Koćani\"\nmsgstr \"Koćani\"\n\n#: mk/mk_choices.py:51\nmsgid \"Kratovo\"\nmsgstr \"Kratovo\"\n\n#: mk/mk_choices.py:52\nmsgid \"Kriva Palanka\"\nmsgstr \"Kriva Palanka\"\n\n#: mk/mk_choices.py:53\nmsgid \"Krivogaštani\"\nmsgstr \"Krivogaštani\"\n\n#: mk/mk_choices.py:54\nmsgid \"Kruševo\"\nmsgstr \"Kruševo\"\n\n#: mk/mk_choices.py:55\nmsgid \"Kumanovo\"\nmsgstr \"Kumanovo\"\n\n#: mk/mk_choices.py:56\nmsgid \"Lipkovo\"\nmsgstr \"Lipkovo\"\n\n#: mk/mk_choices.py:57\nmsgid \"Lozovo\"\nmsgstr \"Lozovo\"\n\n#: mk/mk_choices.py:58\nmsgid \"Mavrovo i Rostuša\"\nmsgstr \"Mavrovo i Rostuša\"\n\n#: mk/mk_choices.py:59\nmsgid \"Makedonska Kamenica\"\nmsgstr \"Makedonska Kamenica\"\n\n#: mk/mk_choices.py:60\nmsgid \"Makedonski Brod\"\nmsgstr \"Makedonski Brod\"\n\n#: mk/mk_choices.py:61\nmsgid \"Mogila\"\nmsgstr \"Mogila\"\n\n#: mk/mk_choices.py:62\nmsgid \"Negotino\"\nmsgstr \"Negotino\"\n\n#: mk/mk_choices.py:63\nmsgid \"Novaci\"\nmsgstr \"Novaci\"\n\n#: mk/mk_choices.py:64\nmsgid \"Novo Selo\"\nmsgstr \"Novo Selo\"\n\n#: mk/mk_choices.py:65\nmsgid \"Oslomej\"\nmsgstr \"Oslomej\"\n\n#: mk/mk_choices.py:66\nmsgid \"Ohrid\"\nmsgstr \"Ohrid\"\n\n#: mk/mk_choices.py:67\nmsgid \"Petrovec\"\nmsgstr \"Petrovec\"\n\n#: mk/mk_choices.py:68\nmsgid \"Pehčevo\"\nmsgstr \"Pehčevo\"\n\n#: mk/mk_choices.py:69\nmsgid \"Plasnica\"\nmsgstr \"Plasnica\"\n\n#: mk/mk_choices.py:70\nmsgid \"Prilep\"\nmsgstr \"Prilep\"\n\n#: mk/mk_choices.py:71\nmsgid \"Probištip\"\nmsgstr \"Probištip\"\n\n#: mk/mk_choices.py:72\nmsgid \"Radoviš\"\nmsgstr \"Radoviš\"\n\n#: mk/mk_choices.py:73\nmsgid \"Rankovce\"\nmsgstr \"Rankovce\"\n\n#: mk/mk_choices.py:74\nmsgid \"Resen\"\nmsgstr \"Resen\"\n\n#: mk/mk_choices.py:75\nmsgid \"Rosoman\"\nmsgstr \"Rosoman\"\n\n#: mk/mk_choices.py:76\nmsgid \"Saraj\"\nmsgstr \"Saraj\"\n\n#: mk/mk_choices.py:77\nmsgid \"Sveti Nikole\"\nmsgstr \"Sveti Nikole\"\n\n#: mk/mk_choices.py:78\nmsgid \"Sopište\"\nmsgstr \"Sopište\"\n\n#: mk/mk_choices.py:79\nmsgid \"Star Dojran\"\nmsgstr \"Stella Dojran\"\n\n#: mk/mk_choices.py:80\nmsgid \"Staro Nagoričane\"\nmsgstr \"Staro Nagoričane\"\n\n#: mk/mk_choices.py:81\nmsgid \"Struga\"\nmsgstr \"Struga\"\n\n#: mk/mk_choices.py:82\nmsgid \"Strumica\"\nmsgstr \"Strumica\"\n\n#: mk/mk_choices.py:83\nmsgid \"Studeničani\"\nmsgstr \"Studeničani\"\n\n#: mk/mk_choices.py:84\nmsgid \"Tearce\"\nmsgstr \"Tearce\"\n\n#: mk/mk_choices.py:85\nmsgid \"Tetovo\"\nmsgstr \"Tetovo\"\n\n#: mk/mk_choices.py:86\nmsgid \"Centar\"\nmsgstr \"Centar\"\n\n#: mk/mk_choices.py:87\nmsgid \"Centar-Župa\"\nmsgstr \"Centar-Župa\"\n\n#: mk/mk_choices.py:88\nmsgid \"Čair\"\nmsgstr \"Čair\"\n\n#: mk/mk_choices.py:89\nmsgid \"Čaška\"\nmsgstr \"Čaška\"\n\n#: mk/mk_choices.py:90\nmsgid \"Češinovo-Obleševo\"\nmsgstr \"Češinovo-Obleševo\"\n\n#: mk/mk_choices.py:91\nmsgid \"Čučer-Sandevo\"\nmsgstr \"Čučer-Sandevo\"\n\n#: mk/mk_choices.py:92\nmsgid \"Štip\"\nmsgstr \"Štip\"\n\n#: mk/mk_choices.py:93\nmsgid \"Šuto Orizari\"\nmsgstr \"Šuto Orizari\"\n\n#: mk/models.py:11\nmsgid \"Macedonian identity card number\"\nmsgstr \"Numero della carta d'identità Macedone\"\n\n#: mk/models.py:25\nmsgid \"A Macedonian municipality (2 character code)\"\nmsgstr \"Un comune Macedone (codice da 2 caratteri)\"\n\n#: mk/models.py:35\nmsgid \"Unique master citizen number (13 digits)\"\nmsgstr \"Numero unico dei cittadini (13 cifre)\"\n\n#: mx/forms.py:67\nmsgid \"Enter a valid zip code in the format XXXXX.\"\nmsgstr \"Inserisci un codice postale valido nel formato XXXXX.\"\n\n#: mx/forms.py:110\nmsgid \"Enter a valid RFC.\"\nmsgstr \"Inserire un RFC valido.\"\n\n#: mx/forms.py:111\nmsgid \"Invalid checksum for RFC.\"\nmsgstr \"Checksum non valido per RFC.\"\n\n#: mx/forms.py:191\nmsgid \"Enter a valid CURP.\"\nmsgstr \"Inserisci un CURP valido.\"\n\n#: mx/forms.py:192\nmsgid \"Invalid checksum for CURP.\"\nmsgstr \"Checksum non valido per CURP.\"\n\n#: mx/models.py:14\nmsgid \"Mexico state (three uppercase letters)\"\nmsgstr \"Stato del Messico (tre lettere maiuscole)\"\n\n#: mx/models.py:27\nmsgid \"Mexico zip code\"\nmsgstr \"CAP messicano\"\n\n#: mx/models.py:44\nmsgid \"Mexican RFC\"\nmsgstr \"RFC messicana\"\n\n#: mx/models.py:61\nmsgid \"Mexican CURP\"\nmsgstr \"CURP messicana\"\n\n#: mx/mx_states.py:14\nmsgid \"Aguascalientes\"\nmsgstr \"Aguascalientes\"\n\n#: mx/mx_states.py:15\nmsgid \"Baja California\"\nmsgstr \"Baia California\"\n\n#: mx/mx_states.py:16\nmsgid \"Baja California Sur\"\nmsgstr \"Baia California del Sud\"\n\n#: mx/mx_states.py:17\nmsgid \"Campeche\"\nmsgstr \"Campeche\"\n\n#: mx/mx_states.py:18\nmsgid \"Chihuahua\"\nmsgstr \"Chihuahua\"\n\n#: mx/mx_states.py:19\nmsgid \"Chiapas\"\nmsgstr \"Chiapas\"\n\n#: mx/mx_states.py:20\nmsgid \"Coahuila\"\nmsgstr \"Coahuila\"\n\n#: mx/mx_states.py:21\nmsgid \"Colima\"\nmsgstr \"Colima\"\n\n#: mx/mx_states.py:22\nmsgid \"Distrito Federal\"\nmsgstr \"Distretto Federale\"\n\n#: mx/mx_states.py:23\nmsgid \"Durango\"\nmsgstr \"Durango\"\n\n#: mx/mx_states.py:24\nmsgid \"Guerrero\"\nmsgstr \"Guerrero\"\n\n#: mx/mx_states.py:25\nmsgid \"Guanajuato\"\nmsgstr \"Guanajuato\"\n\n#: mx/mx_states.py:26\nmsgid \"Hidalgo\"\nmsgstr \"Hidalgo\"\n\n#: mx/mx_states.py:27\nmsgid \"Jalisco\"\nmsgstr \"Jalisco\"\n\n#: mx/mx_states.py:28\nmsgid \"Estado de México\"\nmsgstr \"Stato del Messico\"\n\n#: mx/mx_states.py:29\nmsgid \"Michoacán\"\nmsgstr \"Michoacán\"\n\n#: mx/mx_states.py:30\nmsgid \"Morelos\"\nmsgstr \"Morelos\"\n\n#: mx/mx_states.py:31\nmsgid \"Nayarit\"\nmsgstr \"Nayarit\"\n\n#: mx/mx_states.py:32\nmsgid \"Nuevo León\"\nmsgstr \"Nuova Leòn\"\n\n#: mx/mx_states.py:33\nmsgid \"Oaxaca\"\nmsgstr \"Oaxaca\"\n\n#: mx/mx_states.py:34\nmsgid \"Puebla\"\nmsgstr \"Puebla\"\n\n#: mx/mx_states.py:35\nmsgid \"Querétaro\"\nmsgstr \"Querétaro\"\n\n#: mx/mx_states.py:36\nmsgid \"Quintana Roo\"\nmsgstr \"Quintana Roo\"\n\n#: mx/mx_states.py:37\nmsgid \"Sinaloa\"\nmsgstr \"Sinaloa\"\n\n#: mx/mx_states.py:38\nmsgid \"San Luis Potosí\"\nmsgstr \"San Luis Potosí\"\n\n#: mx/mx_states.py:39\nmsgid \"Sonora\"\nmsgstr \"Sonora\"\n\n#: mx/mx_states.py:40\nmsgid \"Tabasco\"\nmsgstr \"Tabasco\"\n\n#: mx/mx_states.py:41\nmsgid \"Tamaulipas\"\nmsgstr \"Tamaulipas\"\n\n#: mx/mx_states.py:42\nmsgid \"Tlaxcala\"\nmsgstr \"Tlaxcala\"\n\n#: mx/mx_states.py:43\nmsgid \"Veracruz\"\nmsgstr \"Veracruz\"\n\n#: mx/mx_states.py:44\nmsgid \"Yucatán\"\nmsgstr \"Yucatán\"\n\n#: mx/mx_states.py:45\nmsgid \"Zacatecas\"\nmsgstr \"Zacatecas\"\n\n#: nl/forms.py:26\nmsgid \"Enter a valid postal code\"\nmsgstr \"Inserisci un codice postale valido\"\n\n#: nl/forms.py:82\nmsgid \"Enter a valid SoFi number\"\nmsgstr \"Inserisci un numero SoFi valido\"\n\n#: nl/nl_provinces.py:4\nmsgid \"Drenthe\"\nmsgstr \"Drenthe\"\n\n#: nl/nl_provinces.py:5\nmsgid \"Flevoland\"\nmsgstr \"Flevoland\"\n\n#: nl/nl_provinces.py:6\nmsgid \"Friesland\"\nmsgstr \"Friesland\"\n\n#: nl/nl_provinces.py:7\nmsgid \"Gelderland\"\nmsgstr \"Gelderland\"\n\n#: nl/nl_provinces.py:8\nmsgid \"Groningen\"\nmsgstr \"Groningen\"\n\n#: nl/nl_provinces.py:10\nmsgid \"Noord-Brabant\"\nmsgstr \"Noord-Brabant\"\n\n#: nl/nl_provinces.py:11\nmsgid \"Noord-Holland\"\nmsgstr \"Noord-Holland\"\n\n#: nl/nl_provinces.py:12\nmsgid \"Overijssel\"\nmsgstr \"Overijssel\"\n\n#: nl/nl_provinces.py:13\nmsgid \"Utrecht\"\nmsgstr \"Utrecht\"\n\n#: nl/nl_provinces.py:14\nmsgid \"Zeeland\"\nmsgstr \"Zeeland\"\n\n#: nl/nl_provinces.py:15\nmsgid \"Zuid-Holland\"\nmsgstr \"Zuid-Holland\"\n\n#: no/forms.py:39\nmsgid \"Enter a valid Norwegian social security number.\"\nmsgstr \"Inserisci un numero di assistenza sociale norvegese valido.\"\n\n#: pe/forms.py:28\nmsgid \"This field requires 8 digits.\"\nmsgstr \"Questo campo richiede 8 cifre.\"\n\n#: pe/forms.py:56\nmsgid \"This field requires 11 digits.\"\nmsgstr \"Questo campo richiede 11 cifre.\"\n\n#: pl/forms.py:42\nmsgid \"National Identification Number consists of 11 digits.\"\nmsgstr \"Il Numero Identificativo Nazionale è costituito da 11 cifre.\"\n\n#: pl/forms.py:43\nmsgid \"Wrong checksum for the National Identification Number.\"\nmsgstr \"Checksum errato per il Numero Identificativo Nazionale.\"\n\n#: pl/forms.py:79\nmsgid \"National ID Card Number consists of 3 letters and 6 digits.\"\nmsgstr \"\"\n\"Il numero della carta d'identità nazionale è composto da 3 lettere e 6 cifre.\"\n\n#: pl/forms.py:80\nmsgid \"Wrong checksum for the National ID Card Number.\"\nmsgstr \"Checksum errato per il numero della carta d'identità nazionale.\"\n\n#: pl/forms.py:131\nmsgid \"\"\n\"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or \"\n\"XXXXXXXXXX.\"\nmsgstr \"\"\n\"Inserisci un campo di codice fiscale (NIP) nel formato XXX-XXX-XX-XX, XXX-XX-\"\n\"XX-XXX o XXXXXXXXXX.\"\n\n#: pl/forms.py:132\nmsgid \"Wrong checksum for the Tax Number (NIP).\"\nmsgstr \"Checksum errato per il Numero d'Imposta (NIP).\"\n\n#: pl/forms.py:171\nmsgid \"National Business Register Number (REGON) consists of 9 or 14 digits.\"\nmsgstr \"\"\n\"Il Numero di Registro Nazionale d'Impresa (REGON) è costituito da 9 o 14 \"\n\"cifre.\"\n\n#: pl/forms.py:172\nmsgid \"Wrong checksum for the National Business Register Number (REGON).\"\nmsgstr \"Checksum errato per il Numero di Registro Nazionale d'Impresa (REGON).\"\n\n#: pl/forms.py:212\nmsgid \"Enter a postal code in the format XX-XXX.\"\nmsgstr \"Inserisci un codice postale nel formato XX-XXX.\"\n\n#: pl/pl_voivodeships.py:8\nmsgid \"Lower Silesia\"\nmsgstr \"Bassa Silesia\"\n\n#: pl/pl_voivodeships.py:9\nmsgid \"Kuyavia-Pomerania\"\nmsgstr \"Kuyavia-Pomerania\"\n\n#: pl/pl_voivodeships.py:10\nmsgid \"Lublin\"\nmsgstr \"Lublino\"\n\n#: pl/pl_voivodeships.py:11\nmsgid \"Lubusz\"\nmsgstr \"Lubusz\"\n\n#: pl/pl_voivodeships.py:12\nmsgid \"Lodz\"\nmsgstr \"Lodz\"\n\n#: pl/pl_voivodeships.py:13\nmsgid \"Lesser Poland\"\nmsgstr \"Polonia Minore\"\n\n#: pl/pl_voivodeships.py:14\nmsgid \"Masovia\"\nmsgstr \"Masovia\"\n\n#: pl/pl_voivodeships.py:15\nmsgid \"Opole\"\nmsgstr \"Opole\"\n\n#: pl/pl_voivodeships.py:16\nmsgid \"Subcarpatia\"\nmsgstr \"Subcarpatia\"\n\n#: pl/pl_voivodeships.py:17\nmsgid \"Podlasie\"\nmsgstr \"Podlasie\"\n\n#: pl/pl_voivodeships.py:18\nmsgid \"Pomerania\"\nmsgstr \"Pomerania\"\n\n#: pl/pl_voivodeships.py:19\nmsgid \"Silesia\"\nmsgstr \"Silesia\"\n\n#: pl/pl_voivodeships.py:20\nmsgid \"Swietokrzyskie\"\nmsgstr \"Swietokrzyskie\"\n\n#: pl/pl_voivodeships.py:21\nmsgid \"Warmia-Masuria\"\nmsgstr \"Warmia-Masuria\"\n\n#: pl/pl_voivodeships.py:22\nmsgid \"Greater Poland\"\nmsgstr \"Polonia Maggiore\"\n\n#: pl/pl_voivodeships.py:23\nmsgid \"West Pomerania\"\nmsgstr \"Pomerania Ovest\"\n\n#: pt/forms.py:19\nmsgid \"Enter a zip code in the format XXXX-XXX.\"\nmsgstr \"Inserisci un codice postale nel formato XXXX-XXX.\"\n\n#: pt/forms.py:39\nmsgid \"Phone numbers must have 9 digits, or start by + or 00.\"\nmsgstr \"I numeri di telefono devono avere 9 cifre, o iniziare con + o 00.\"\n\n#: ro/forms.py:22\nmsgid \"Enter a valid CIF.\"\nmsgstr \"Inserisci un codice CIF valido.\"\n\n#: ro/forms.py:59\nmsgid \"Enter a valid CNP.\"\nmsgstr \"Inserisci un codice CNP valido.\"\n\n#: ro/forms.py:143\nmsgid \"Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format\"\nmsgstr \"\"\n\"Inserisci un codice IBAN valido nel formato ROXX-XXXX-XXXX-XXXX-XXXX-XXXX.\"\n\n#: ro/forms.py:175\nmsgid \"Phone numbers must be in XXXX-XXXXXX format.\"\nmsgstr \"I numeri di telefono devono essere nel formato XXXX-XXXXXX.\"\n\n#: ro/forms.py:200\nmsgid \"Enter a valid postal code in the format XXXXXX\"\nmsgstr \"Inserisci un codice postale valido nel formato XXXXXX.\"\n\n#: ru/forms.py:37\nmsgid \"Enter a postal code in the format XXXXXX.\"\nmsgstr \"Inserisci un codice postale nel formato XXXXXX.\"\n\n#: ru/forms.py:50\nmsgid \"Enter a passport number in the format XXXX XXXXXX.\"\nmsgstr \"Inserisci un numero di passaporto nel formato XXXX XXXXXX.\"\n\n#: ru/forms.py:63\nmsgid \"Enter a passport number in the format XX XXXXXXX.\"\nmsgstr \"Inserisci un numero di passaporto nel formato XX XXXXXXX.\"\n\n#: ru/ru_regions.py:10\nmsgid \"Central Federal County\"\nmsgstr \"Contea Federale Centrale\"\n\n#: ru/ru_regions.py:11\nmsgid \"South Federal County\"\nmsgstr \"Contea Federale del Sud\"\n\n#: ru/ru_regions.py:12\nmsgid \"North-West Federal County\"\nmsgstr \"Contea Federale\"\n\n#: ru/ru_regions.py:13\nmsgid \"Far-East Federal County\"\nmsgstr \"Contea Federale dell'Estremo Est\"\n\n#: ru/ru_regions.py:14\nmsgid \"Siberian Federal County\"\nmsgstr \"Contea Federale Siberiana\"\n\n#: ru/ru_regions.py:15\nmsgid \"Ural Federal County\"\nmsgstr \"Contea Federale degli Urali\"\n\n#: ru/ru_regions.py:16\nmsgid \"Privolzhsky Federal County\"\nmsgstr \"Contea Federale Privolzhsky\"\n\n#: ru/ru_regions.py:17\nmsgid \"North-Caucasian Federal County\"\nmsgstr \"Contea Federale Nord-Caucasica\"\n\n#: ru/ru_regions.py:21\nmsgid \"Moskva\"\nmsgstr \"Mosca\"\n\n#: ru/ru_regions.py:22\nmsgid \"Saint-Peterburg\"\nmsgstr \"San Pietroburgo\"\n\n#: ru/ru_regions.py:23\nmsgid \"Moskovskaya oblast'\"\nmsgstr \"Moskovskaya Oblast '\"\n\n#: ru/ru_regions.py:24\nmsgid \"Adygeya, Respublika\"\nmsgstr \"Adygeya, Respublika\"\n\n#: ru/ru_regions.py:25\nmsgid \"Bashkortostan, Respublika\"\nmsgstr \"Bashkortostan, Respublika\"\n\n#: ru/ru_regions.py:26\nmsgid \"Buryatia, Respublika\"\nmsgstr \"Buriazia, Respublika\"\n\n#: ru/ru_regions.py:27\nmsgid \"Altay, Respublika\"\nmsgstr \"Altay, Respublika\"\n\n#: ru/ru_regions.py:28\nmsgid \"Dagestan, Respublika\"\nmsgstr \"Daghestan, Respublika\"\n\n#: ru/ru_regions.py:29\nmsgid \"Ingushskaya Respublika\"\nmsgstr \"Ingushskaya Respublika\"\n\n#: ru/ru_regions.py:30\nmsgid \"Kabardino-Balkarskaya Respublika\"\nmsgstr \"Kabardino-Balkarskaya Respublika\"\n\n#: ru/ru_regions.py:31\nmsgid \"Kalmykia, Respublika\"\nmsgstr \"Kalmykia, Respublika\"\n\n#: ru/ru_regions.py:32\nmsgid \"Karachaevo-Cherkesskaya Respublika\"\nmsgstr \"Karachaevo-Cherkesskaya Respublika\"\n\n#: ru/ru_regions.py:33\nmsgid \"Karelia, Respublika\"\nmsgstr \"Karelia, Respublika\"\n\n#: ru/ru_regions.py:34\nmsgid \"Komi, Respublika\"\nmsgstr \"Komi, Respublika\"\n\n#: ru/ru_regions.py:35\nmsgid \"Mariy Ehl, Respublika\"\nmsgstr \"Mariy Ehl, Respublika\"\n\n#: ru/ru_regions.py:36\nmsgid \"Mordovia, Respublika\"\nmsgstr \"Mordovia, Respublika\"\n\n#: ru/ru_regions.py:37\nmsgid \"Sakha, Respublika (Yakutiya)\"\nmsgstr \"Sakha, Respublika (Yakutiya)\"\n\n#: ru/ru_regions.py:38\nmsgid \"Severnaya Osetia, Respublika (Alania)\"\nmsgstr \"Severnaya Osetia, Respublika (Alania)\"\n\n#: ru/ru_regions.py:39\nmsgid \"Tatarstan, Respublika\"\nmsgstr \"Tatarstan, Respublika\"\n\n#: ru/ru_regions.py:40\nmsgid \"Tyva, Respublika (Tuva)\"\nmsgstr \"Tyva, Respublika (Tuva)\"\n\n#: ru/ru_regions.py:41\nmsgid \"Udmurtskaya Respublika\"\nmsgstr \"Udmurtskaya Respublika\"\n\n#: ru/ru_regions.py:42\nmsgid \"Khakassiya, Respublika\"\nmsgstr \"Khakassiya, Respublika\"\n\n#: ru/ru_regions.py:43\nmsgid \"Chechenskaya Respublika\"\nmsgstr \"Chechenskaya Respublika\"\n\n#: ru/ru_regions.py:44\nmsgid \"Chuvashskaya Respublika\"\nmsgstr \"Chuvashskaya Respublika\"\n\n#: ru/ru_regions.py:45\nmsgid \"Altayskiy Kray\"\nmsgstr \"Altayskiy Kray\"\n\n#: ru/ru_regions.py:46\nmsgid \"Zabaykalskiy Kray\"\nmsgstr \"Zabaykalskiy Kray\"\n\n#: ru/ru_regions.py:47\nmsgid \"Kamchatskiy Kray\"\nmsgstr \"Kamchatskiy Kray\"\n\n#: ru/ru_regions.py:48\nmsgid \"Krasnodarskiy Kray\"\nmsgstr \"Krasnodarskiy Kray\"\n\n#: ru/ru_regions.py:49\nmsgid \"Krasnoyarskiy Kray\"\nmsgstr \"Krasnoyarskiy Kray\"\n\n#: ru/ru_regions.py:50\nmsgid \"Permskiy Kray\"\nmsgstr \"Permskiy Kray\"\n\n#: ru/ru_regions.py:51\nmsgid \"Primorskiy Kray\"\nmsgstr \"Primorskiy Kray\"\n\n#: ru/ru_regions.py:52\nmsgid \"Stavropol'siyy Kray\"\nmsgstr \"Stavropol'siyy Kray\"\n\n#: ru/ru_regions.py:53\nmsgid \"Khabarovskiy Kray\"\nmsgstr \"Khabarovskiy Kray\"\n\n#: ru/ru_regions.py:54\nmsgid \"Amurskaya oblast'\"\nmsgstr \"Amurskaya oblast '\"\n\n#: ru/ru_regions.py:55\nmsgid \"Arkhangel'skaya oblast'\"\nmsgstr \"Arkhangel'skaya oblast '\"\n\n#: ru/ru_regions.py:56\nmsgid \"Astrakhanskaya oblast'\"\nmsgstr \"Astrakhanskaya oblast '\"\n\n#: ru/ru_regions.py:57\nmsgid \"Belgorodskaya oblast'\"\nmsgstr \"Belgorodskaya oblast '\"\n\n#: ru/ru_regions.py:58\nmsgid \"Bryanskaya oblast'\"\nmsgstr \"Bryanskaya oblast '\"\n\n#: ru/ru_regions.py:59\nmsgid \"Vladimirskaya oblast'\"\nmsgstr \"Vladimirskaya oblast '\"\n\n#: ru/ru_regions.py:60\nmsgid \"Volgogradskaya oblast'\"\nmsgstr \"Volgogradskaya oblast '\"\n\n#: ru/ru_regions.py:61\nmsgid \"Vologodskaya oblast'\"\nmsgstr \"Vologodskaya oblast '\"\n\n#: ru/ru_regions.py:62\nmsgid \"Voronezhskaya oblast'\"\nmsgstr \"Voronezhskaya oblast '\"\n\n#: ru/ru_regions.py:63\nmsgid \"Ivanovskaya oblast'\"\nmsgstr \"Ivanovskaya oblast '\"\n\n#: ru/ru_regions.py:64\nmsgid \"Irkutskaya oblast'\"\nmsgstr \"Irkutskaya oblast '\"\n\n#: ru/ru_regions.py:65\nmsgid \"Kaliningradskaya oblast'\"\nmsgstr \"Kaliningradskaya oblast '\"\n\n#: ru/ru_regions.py:66\nmsgid \"Kaluzhskaya oblast'\"\nmsgstr \"Kaluzhskaya oblast '\"\n\n#: ru/ru_regions.py:67\nmsgid \"Kemerovskaya oblast'\"\nmsgstr \"Kemerovskaya oblast '\"\n\n#: ru/ru_regions.py:68\nmsgid \"Kirovskaya oblast'\"\nmsgstr \"Kirov oblast '\"\n\n#: ru/ru_regions.py:69\nmsgid \"Kostromskaya oblast'\"\nmsgstr \"Kostromskaya oblast '\"\n\n#: ru/ru_regions.py:70\nmsgid \"Kurganskaya oblast'\"\nmsgstr \"Kurganskaya oblast '\"\n\n#: ru/ru_regions.py:71\nmsgid \"Kurskaya oblast'\"\nmsgstr \"Kurskaya oblast '\"\n\n#: ru/ru_regions.py:72\nmsgid \"Leningradskaya oblast'\"\nmsgstr \"Leningradskaya oblast '\"\n\n#: ru/ru_regions.py:73\nmsgid \"Lipeckaya oblast'\"\nmsgstr \"Lipeckaya oblast '\"\n\n#: ru/ru_regions.py:74\nmsgid \"Magadanskaya oblast'\"\nmsgstr \"Magadanskaya oblast '\"\n\n#: ru/ru_regions.py:75\nmsgid \"Murmanskaya oblast'\"\nmsgstr \"Murmanskaya oblast '\"\n\n#: ru/ru_regions.py:76\nmsgid \"Nizhegorodskaja oblast'\"\nmsgstr \"Nizhegorodskaja oblast '\"\n\n#: ru/ru_regions.py:77\nmsgid \"Novgorodskaya oblast'\"\nmsgstr \"Novgorodskaya oblast '\"\n\n#: ru/ru_regions.py:78\nmsgid \"Novosibirskaya oblast'\"\nmsgstr \"Novosibirskaya oblast '\"\n\n#: ru/ru_regions.py:79\nmsgid \"Omskaya oblast'\"\nmsgstr \"Omskaya oblast '\"\n\n#: ru/ru_regions.py:80\nmsgid \"Orenburgskaya oblast'\"\nmsgstr \"Orenburgskaya oblast '\"\n\n#: ru/ru_regions.py:81\nmsgid \"Orlovskaya oblast'\"\nmsgstr \"Orlovskaya oblast '\"\n\n#: ru/ru_regions.py:82\nmsgid \"Penzenskaya oblast'\"\nmsgstr \"Penzenskaya oblast '\"\n\n#: ru/ru_regions.py:83\nmsgid \"Pskovskaya oblast'\"\nmsgstr \"Pskovskaya oblast '\"\n\n#: ru/ru_regions.py:84\nmsgid \"Rostovskaya oblast'\"\nmsgstr \"Rostov oblast '\"\n\n#: ru/ru_regions.py:85\nmsgid \"Rjazanskaya oblast'\"\nmsgstr \"Rjazanskaya oblast '\"\n\n#: ru/ru_regions.py:86\nmsgid \"Samarskaya oblast'\"\nmsgstr \"Samarskaya oblast '\"\n\n#: ru/ru_regions.py:87\nmsgid \"Saratovskaya oblast'\"\nmsgstr \"Saratovskaya oblast '\"\n\n#: ru/ru_regions.py:88\nmsgid \"Sakhalinskaya oblast'\"\nmsgstr \"Sakhalinskaya oblast '\"\n\n#: ru/ru_regions.py:89\nmsgid \"Sverdlovskaya oblast'\"\nmsgstr \"Sverdlovskaya oblast '\"\n\n#: ru/ru_regions.py:90\nmsgid \"Smolenskaya oblast'\"\nmsgstr \"Smolenskaya oblast '\"\n\n#: ru/ru_regions.py:91\nmsgid \"Tambovskaya oblast'\"\nmsgstr \"Tambovskaya oblast '\"\n\n#: ru/ru_regions.py:92\nmsgid \"Tverskaya oblast'\"\nmsgstr \"Tverskaya oblast '\"\n\n#: ru/ru_regions.py:93\nmsgid \"Tomskaya oblast'\"\nmsgstr \"Tomskaya oblast '\"\n\n#: ru/ru_regions.py:94\nmsgid \"Tul'skaya oblast'\"\nmsgstr \"Tul'skaya oblast '\"\n\n#: ru/ru_regions.py:95\nmsgid \"Tyumenskaya oblast'\"\nmsgstr \"Tyumenskaya oblast '\"\n\n#: ru/ru_regions.py:96\nmsgid \"Ul'ianovskaya oblast'\"\nmsgstr \"Ul'ianovskaya oblast '\"\n\n#: ru/ru_regions.py:97\nmsgid \"Chelyabinskaya oblast'\"\nmsgstr \"Chelyabinskaya oblast '\"\n\n#: ru/ru_regions.py:98\nmsgid \"Yaroslavskaya oblast'\"\nmsgstr \"Yaroslav oblast '\"\n\n#: ru/ru_regions.py:99\nmsgid \"Evreyskaya avtonomnaja oblast'\"\nmsgstr \"Evreyskaya avtonomnaja oblast '\"\n\n#: ru/ru_regions.py:100\nmsgid \"Neneckiy autonomnyy okrug\"\nmsgstr \"Neneckiy autonomnyy okrug\"\n\n#: ru/ru_regions.py:101\nmsgid \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\nmsgstr \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\n\n#: ru/ru_regions.py:102\nmsgid \"Chukotskiy avtonomnyy okrug\"\nmsgstr \"Chukotskiy avtonomnyy okrug\"\n\n#: ru/ru_regions.py:103\nmsgid \"Yamalo-Neneckiy avtonomnyy okrug\"\nmsgstr \"Yamalo-Neneckiy avtonomnyy okrug\"\n\n#: se/forms.py:54\nmsgid \"Enter a valid Swedish organisation number.\"\nmsgstr \"Inserisci un numero di organizzazione svedese valido.\"\n\n#: se/forms.py:111\nmsgid \"Enter a valid Swedish personal identity number.\"\nmsgstr \"Inserisci un numero d'identità personale svedese valido.\"\n\n#: se/forms.py:112\nmsgid \"Co-ordination numbers are not allowed.\"\nmsgstr \"I numeri di coordinamento non sono ammessi.\"\n\n#: se/forms.py:154\nmsgid \"Enter a Swedish postal code in the format XXXXX.\"\nmsgstr \"Inserisci un codice postale svedese nel formato XXXXX.\"\n\n#: se/se_counties.py:16\nmsgid \"Stockholm\"\nmsgstr \"Stoccolma\"\n\n#: se/se_counties.py:17\nmsgid \"Västerbotten\"\nmsgstr \"Västerbotten\"\n\n#: se/se_counties.py:18\nmsgid \"Norrbotten\"\nmsgstr \"Norrbotten\"\n\n#: se/se_counties.py:19\nmsgid \"Uppsala\"\nmsgstr \"Uppsala\"\n\n#: se/se_counties.py:20\nmsgid \"Södermanland\"\nmsgstr \"Södermanland\"\n\n#: se/se_counties.py:21\nmsgid \"Östergötland\"\nmsgstr \"Östergötland\"\n\n#: se/se_counties.py:22\nmsgid \"Jönköping\"\nmsgstr \"Jönköping\"\n\n#: se/se_counties.py:23\nmsgid \"Kronoberg\"\nmsgstr \"Kronoberg\"\n\n#: se/se_counties.py:24\nmsgid \"Kalmar\"\nmsgstr \"Kalmar\"\n\n#: se/se_counties.py:25\nmsgid \"Gotland\"\nmsgstr \"Gotland\"\n\n#: se/se_counties.py:26\nmsgid \"Blekinge\"\nmsgstr \"Blekinge\"\n\n#: se/se_counties.py:27\nmsgid \"Skåne\"\nmsgstr \"Skåne\"\n\n#: se/se_counties.py:28\nmsgid \"Halland\"\nmsgstr \"Halland\"\n\n#: se/se_counties.py:29\nmsgid \"Västra Götaland\"\nmsgstr \"Västra Götaland\"\n\n#: se/se_counties.py:30\nmsgid \"Värmland\"\nmsgstr \"Värmland\"\n\n#: se/se_counties.py:31\nmsgid \"Örebro\"\nmsgstr \"Örebro\"\n\n#: se/se_counties.py:32\nmsgid \"Västmanland\"\nmsgstr \"Västmanland\"\n\n#: se/se_counties.py:33\nmsgid \"Dalarna\"\nmsgstr \"Dalarna\"\n\n#: se/se_counties.py:34\nmsgid \"Gävleborg\"\nmsgstr \"Gävleborg\"\n\n#: se/se_counties.py:35\nmsgid \"Västernorrland\"\nmsgstr \"Västernorrland\"\n\n#: se/se_counties.py:36\nmsgid \"Jämtland\"\nmsgstr \"Jämtland\"\n\n#: si/forms.py:25\nmsgid \"The first 7 digits of the EMSO must represent a valid past date.\"\nmsgstr \"\"\n\"Le prime 7 cifre del codice EMSO devono rappresentare una data passata \"\n\"valida.\"\n\n#: si/forms.py:26\nmsgid \"The EMSO is not valid.\"\nmsgstr \"Il codice EMSO non è valido.\"\n\n#: si/forms.py:86\nmsgid \"Enter a valid tax number in form SIXXXXXXXX\"\nmsgstr \"Inserisci un numero fiscale valido nella forma SIXXXXXXXX\"\n\n#: si/forms.py:151\nmsgid \"Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.\"\nmsgstr \"Inserisci un numero telefonico nella forma +386XXXXXXXX o 0XXXXXXXX.\"\n\n#: sk/sk_districts.py:8\nmsgid \"Banska Bystrica\"\nmsgstr \"Banska Bystrica\"\n\n#: sk/sk_districts.py:9\nmsgid \"Banska Stiavnica\"\nmsgstr \"Banska Stiavnica\"\n\n#: sk/sk_districts.py:10\nmsgid \"Bardejov\"\nmsgstr \"Bardejov\"\n\n#: sk/sk_districts.py:11\nmsgid \"Banovce nad Bebravou\"\nmsgstr \"Banovce nad Bebravou\"\n\n#: sk/sk_districts.py:12\nmsgid \"Brezno\"\nmsgstr \"Brezno\"\n\n#: sk/sk_districts.py:13\nmsgid \"Bratislava I\"\nmsgstr \"Bratislava I\"\n\n#: sk/sk_districts.py:14\nmsgid \"Bratislava II\"\nmsgstr \"Bratislava II\"\n\n#: sk/sk_districts.py:15\nmsgid \"Bratislava III\"\nmsgstr \"Bratislava III\"\n\n#: sk/sk_districts.py:16\nmsgid \"Bratislava IV\"\nmsgstr \"Bratislava IV\"\n\n#: sk/sk_districts.py:17\nmsgid \"Bratislava V\"\nmsgstr \"Bratislava V\"\n\n#: sk/sk_districts.py:18\nmsgid \"Bytca\"\nmsgstr \"Bytca\"\n\n#: sk/sk_districts.py:19\nmsgid \"Cadca\"\nmsgstr \"Cadca\"\n\n#: sk/sk_districts.py:20\nmsgid \"Detva\"\nmsgstr \"Detva\"\n\n#: sk/sk_districts.py:21\nmsgid \"Dolny Kubin\"\nmsgstr \"Dolny Kubin\"\n\n#: sk/sk_districts.py:22\nmsgid \"Dunajska Streda\"\nmsgstr \"Dunajska Streda\"\n\n#: sk/sk_districts.py:23\nmsgid \"Galanta\"\nmsgstr \"Galanta\"\n\n#: sk/sk_districts.py:24\nmsgid \"Gelnica\"\nmsgstr \"Gelnica\"\n\n#: sk/sk_districts.py:25\nmsgid \"Hlohovec\"\nmsgstr \"Hlohovec\"\n\n#: sk/sk_districts.py:26\nmsgid \"Humenne\"\nmsgstr \"Humenne\"\n\n#: sk/sk_districts.py:27\nmsgid \"Ilava\"\nmsgstr \"Ilava\"\n\n#: sk/sk_districts.py:28\nmsgid \"Kezmarok\"\nmsgstr \"Kezmarok\"\n\n#: sk/sk_districts.py:29\nmsgid \"Komarno\"\nmsgstr \"Komarno\"\n\n#: sk/sk_districts.py:30\nmsgid \"Kosice I\"\nmsgstr \"Kosice I\"\n\n#: sk/sk_districts.py:31\nmsgid \"Kosice II\"\nmsgstr \"Kosice II\"\n\n#: sk/sk_districts.py:32\nmsgid \"Kosice III\"\nmsgstr \"Kosice III\"\n\n#: sk/sk_districts.py:33\nmsgid \"Kosice IV\"\nmsgstr \"Kosice IV\"\n\n#: sk/sk_districts.py:34\nmsgid \"Kosice - okolie\"\nmsgstr \"Kosice - okolie\"\n\n#: sk/sk_districts.py:35\nmsgid \"Krupina\"\nmsgstr \"Krupina\"\n\n#: sk/sk_districts.py:36\nmsgid \"Kysucke Nove Mesto\"\nmsgstr \"Kysucke Nove Mesto\"\n\n#: sk/sk_districts.py:37\nmsgid \"Levice\"\nmsgstr \"Levice\"\n\n#: sk/sk_districts.py:38\nmsgid \"Levoca\"\nmsgstr \"Levoca\"\n\n#: sk/sk_districts.py:39\nmsgid \"Liptovsky Mikulas\"\nmsgstr \"Liptovsky Mikulas\"\n\n#: sk/sk_districts.py:40\nmsgid \"Lucenec\"\nmsgstr \"Lucenec\"\n\n#: sk/sk_districts.py:41\nmsgid \"Malacky\"\nmsgstr \"Malacky\"\n\n#: sk/sk_districts.py:42\nmsgid \"Martin\"\nmsgstr \"Martin\"\n\n#: sk/sk_districts.py:43\nmsgid \"Medzilaborce\"\nmsgstr \"Medzilaborce\"\n\n#: sk/sk_districts.py:44\nmsgid \"Michalovce\"\nmsgstr \"Michalovce\"\n\n#: sk/sk_districts.py:45\nmsgid \"Myjava\"\nmsgstr \"Myjava\"\n\n#: sk/sk_districts.py:46\nmsgid \"Namestovo\"\nmsgstr \"Namestovo\"\n\n#: sk/sk_districts.py:47\nmsgid \"Nitra\"\nmsgstr \"Nitra\"\n\n#: sk/sk_districts.py:48\nmsgid \"Nove Mesto nad Vahom\"\nmsgstr \"Nove Mesto nad Vahom\"\n\n#: sk/sk_districts.py:49\nmsgid \"Nove Zamky\"\nmsgstr \"Nove Zamky\"\n\n#: sk/sk_districts.py:50\nmsgid \"Partizanske\"\nmsgstr \"Partizanske\"\n\n#: sk/sk_districts.py:51\nmsgid \"Pezinok\"\nmsgstr \"Pezinok\"\n\n#: sk/sk_districts.py:52\nmsgid \"Piestany\"\nmsgstr \"Piestany\"\n\n#: sk/sk_districts.py:53\nmsgid \"Poltar\"\nmsgstr \"Poltar\"\n\n#: sk/sk_districts.py:54\nmsgid \"Poprad\"\nmsgstr \"Poprad\"\n\n#: sk/sk_districts.py:55\nmsgid \"Povazska Bystrica\"\nmsgstr \"Povazska Bystrica\"\n\n#: sk/sk_districts.py:56\nmsgid \"Presov\"\nmsgstr \"Presov\"\n\n#: sk/sk_districts.py:57\nmsgid \"Prievidza\"\nmsgstr \"Prievidza\"\n\n#: sk/sk_districts.py:58\nmsgid \"Puchov\"\nmsgstr \"Puchov\"\n\n#: sk/sk_districts.py:59\nmsgid \"Revuca\"\nmsgstr \"Revuca\"\n\n#: sk/sk_districts.py:60\nmsgid \"Rimavska Sobota\"\nmsgstr \"Rimavska Sobota\"\n\n#: sk/sk_districts.py:61\nmsgid \"Roznava\"\nmsgstr \"Roznava\"\n\n#: sk/sk_districts.py:62\nmsgid \"Ruzomberok\"\nmsgstr \"Ruzomberok\"\n\n#: sk/sk_districts.py:63\nmsgid \"Sabinov\"\nmsgstr \"Sabinov\"\n\n#: sk/sk_districts.py:64\nmsgid \"Senec\"\nmsgstr \"Senec\"\n\n#: sk/sk_districts.py:65\nmsgid \"Senica\"\nmsgstr \"Senica\"\n\n#: sk/sk_districts.py:66\nmsgid \"Skalica\"\nmsgstr \"Skalica\"\n\n#: sk/sk_districts.py:67\nmsgid \"Snina\"\nmsgstr \"Snina\"\n\n#: sk/sk_districts.py:68\nmsgid \"Sobrance\"\nmsgstr \"Sobrance\"\n\n#: sk/sk_districts.py:69\nmsgid \"Spisska Nova Ves\"\nmsgstr \"Spisska Nova Ves\"\n\n#: sk/sk_districts.py:70\nmsgid \"Stara Lubovna\"\nmsgstr \"Stara Lubovna\"\n\n#: sk/sk_districts.py:71\nmsgid \"Stropkov\"\nmsgstr \"Stropkov\"\n\n#: sk/sk_districts.py:72\nmsgid \"Svidnik\"\nmsgstr \"Svidnik\"\n\n#: sk/sk_districts.py:73\nmsgid \"Sala\"\nmsgstr \"Sala\"\n\n#: sk/sk_districts.py:74\nmsgid \"Topolcany\"\nmsgstr \"Topolcany\"\n\n#: sk/sk_districts.py:75\nmsgid \"Trebisov\"\nmsgstr \"Trebisov\"\n\n#: sk/sk_districts.py:76\nmsgid \"Trencin\"\nmsgstr \"Trencin\"\n\n#: sk/sk_districts.py:77\nmsgid \"Trnava\"\nmsgstr \"Trnava\"\n\n#: sk/sk_districts.py:78\nmsgid \"Turcianske Teplice\"\nmsgstr \"Turcianske Teplice\"\n\n#: sk/sk_districts.py:79\nmsgid \"Tvrdosin\"\nmsgstr \"Tvrdosin\"\n\n#: sk/sk_districts.py:80\nmsgid \"Velky Krtis\"\nmsgstr \"Velky Krtis\"\n\n#: sk/sk_districts.py:81\nmsgid \"Vranov nad Toplou\"\nmsgstr \"Vranov nad Toplou\"\n\n#: sk/sk_districts.py:82\nmsgid \"Zlate Moravce\"\nmsgstr \"Zlate Moravce\"\n\n#: sk/sk_districts.py:83\nmsgid \"Zvolen\"\nmsgstr \"Zvolen\"\n\n#: sk/sk_districts.py:84\nmsgid \"Zarnovica\"\nmsgstr \"Zarnovica\"\n\n#: sk/sk_districts.py:85\nmsgid \"Ziar nad Hronom\"\nmsgstr \"Ziar nad Hronom\"\n\n#: sk/sk_districts.py:86\nmsgid \"Zilina\"\nmsgstr \"Zilina\"\n\n#: sk/sk_regions.py:8\nmsgid \"Banska Bystrica region\"\nmsgstr \"Regione di Banska Bystrica\"\n\n#: sk/sk_regions.py:9\nmsgid \"Bratislava region\"\nmsgstr \"Regione di Bratislava\"\n\n#: sk/sk_regions.py:10\nmsgid \"Kosice region\"\nmsgstr \"Regione di Kosice\"\n\n#: sk/sk_regions.py:11\nmsgid \"Nitra region\"\nmsgstr \"Regione di Nitra\"\n\n#: sk/sk_regions.py:12\nmsgid \"Presov region\"\nmsgstr \"Regione di Presov\"\n\n#: sk/sk_regions.py:13\nmsgid \"Trencin region\"\nmsgstr \"Regione di Trencin\"\n\n#: sk/sk_regions.py:14\nmsgid \"Trnava region\"\nmsgstr \"Regione di Trnava\"\n\n#: sk/sk_regions.py:15\nmsgid \"Zilina region\"\nmsgstr \"Regione di Zilina\"\n\n#: tr/forms.py:21\nmsgid \"Enter a postal code in the format XXXXX.\"\nmsgstr \"Inserire un codice postale nel formato XXXXX.\"\n\n#: tr/forms.py:42\nmsgid \"Phone numbers must be in 0XXX XXX XXXX format.\"\nmsgstr \"I numeri di telefono devono essere in formato 0XXX XXX XXXX.\"\n\n#: tr/forms.py:69\nmsgid \"Enter a valid Turkish Identification number.\"\nmsgstr \"Inserisci un numero di identità turco valido.\"\n\n#: tr/forms.py:70\nmsgid \"Turkish Identification number must be 11 digits.\"\nmsgstr \"Il numero di identificazione turco deve essere di 11 cifre.\"\n\n#: us/forms.py:21\nmsgid \"Enter a zip code in the format XXXXX or XXXXX-XXXX.\"\nmsgstr \"Inserisci un codice postale nel formato XXXXX o XXXXX-XXXX .\"\n\n#: us/forms.py:59\nmsgid \"Enter a valid U.S. Social Security number in XXX-XX-XXXX format.\"\nmsgstr \"\"\n\"Inserisci un numero di assistenza sociale USA valido, nel formato XXX-XX-\"\n\"XXXX .\"\n\n#: us/forms.py:92\nmsgid \"Enter a U.S. state or territory.\"\nmsgstr \"Inserisci uno stato o territorio USA.\"\n\n#: us/models.py:8\nmsgid \"U.S. state (two uppercase letters)\"\nmsgstr \"Stato USA (due lettere maiuscole)\"\n\n#: us/models.py:17\nmsgid \"U.S. postal code (two uppercase letters)\"\nmsgstr \"Codice di avviamento postale degli Stati Uniti (due lettere maiuscole)\"\n\n#: us/models.py:26\nmsgid \"Phone number\"\nmsgstr \"Numero di telefono\"\n\n#: uy/forms.py:29\nmsgid \"Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.\"\nmsgstr \"\"\n\"Inserisci un numero CI valido nel formato X.XXX.XXX-X, XXXXXXX-X o XXXXXXXX.\"\n\n#: uy/forms.py:31\nmsgid \"Enter a valid CI number.\"\nmsgstr \"Inserisci un numero CI valido.\"\n\n#: za/forms.py:22\nmsgid \"Enter a valid South African ID number\"\nmsgstr \"Inserisci un numero ID sudafricano valido\"\n\n#: za/forms.py:56\nmsgid \"Enter a valid South African postal code\"\nmsgstr \"Inserisci un codice postale sudafricano valido\"\n\n#: za/za_provinces.py:4\nmsgid \"Eastern Cape\"\nmsgstr \"Capo Est\"\n\n#: za/za_provinces.py:5\nmsgid \"Free State\"\nmsgstr \"Libero Stato\"\n\n#: za/za_provinces.py:6\nmsgid \"Gauteng\"\nmsgstr \"Gauteng\"\n\n#: za/za_provinces.py:7\nmsgid \"KwaZulu-Natal\"\nmsgstr \"KwaZulu-Natal\"\n\n#: za/za_provinces.py:8\nmsgid \"Limpopo\"\nmsgstr \"Limpopo\"\n\n#: za/za_provinces.py:9\nmsgid \"Mpumalanga\"\nmsgstr \"Mpumalanga\"\n\n#: za/za_provinces.py:10\nmsgid \"Northern Cape\"\nmsgstr \"Capo Nord\"\n\n#: za/za_provinces.py:11\nmsgid \"North West\"\nmsgstr \"Nordovest\"\n\n#: za/za_provinces.py:12\nmsgid \"Western Cape\"\nmsgstr \"Capo Ovest\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/locale/ja/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Tetsuya Morimoto <tetsuya.morimoto@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-10-17 09:16+0000\\n\"\n\"Last-Translator: Tetsuya Morimoto <tetsuya.morimoto@gmail.com>\\n\"\n\"Language-Team: Japanese (http://www.transifex.com/projects/p/django/language/\"\n\"ja/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ja\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: ar/forms.py:30\nmsgid \"Enter a postal code in the format NNNN or ANNNNAAA.\"\nmsgstr \"NNNNか、ANNNNAAAの形式で郵便番号を入力してください。\"\n\n#: ar/forms.py:52 br/forms.py:95 br/forms.py:134 pe/forms.py:27 pe/forms.py:55\nmsgid \"This field requires only numbers.\"\nmsgstr \"このフィールドは必須です(数値のみ)。\"\n\n#: ar/forms.py:53\nmsgid \"This field requires 7 or 8 digits.\"\nmsgstr \"7桁か8桁で入力して下さい。\"\n\n#: ar/forms.py:82\nmsgid \"Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.\"\nmsgstr \"\"\n\"XX-XXXXXXXX-X か XXXXXXXXXXXX の形式で納税証明単一番号(CUIT)を入力して下さ\"\n\"い。\"\n\n#: ar/forms.py:83\nmsgid \"Invalid CUIT.\"\nmsgstr \"無効な納税証明単一番号(CUIT): %s\"\n\n#: ar/forms.py:84\nmsgid \"Invalid legal type. Type must be 27, 20, 23 or 30.\"\nmsgstr \"\"\n\n#: at/at_states.py:5\nmsgid \"Burgenland\"\nmsgstr \"Burgenland\"\n\n#: at/at_states.py:6\nmsgid \"Carinthia\"\nmsgstr \"Carinthia\"\n\n#: at/at_states.py:7\nmsgid \"Lower Austria\"\nmsgstr \"Lower Austria\"\n\n#: at/at_states.py:8\nmsgid \"Upper Austria\"\nmsgstr \"Upper Austria\"\n\n#: at/at_states.py:9\nmsgid \"Salzburg\"\nmsgstr \"Salzburg\"\n\n#: at/at_states.py:10\nmsgid \"Styria\"\nmsgstr \"Styria\"\n\n#: at/at_states.py:11\nmsgid \"Tyrol\"\nmsgstr \"Tyrol\"\n\n#: at/at_states.py:12\nmsgid \"Vorarlberg\"\nmsgstr \"Vorarlberg\"\n\n#: at/at_states.py:13\nmsgid \"Vienna\"\nmsgstr \"Vienna\"\n\n#: at/forms.py:22 ch/forms.py:22 no/forms.py:19\nmsgid \"Enter a zip code in the format XXXX.\"\nmsgstr \"XXXXの形式でZipコードを入力してください。\"\n\n#: at/forms.py:50\nmsgid \"Enter a valid Austrian Social Security Number in XXXX XXXXXX format.\"\nmsgstr \"XXXX XXXXXX の形式でオーストリア社会保障番号を入力してください。\"\n\n#: au/forms.py:26\nmsgid \"Enter a 4 digit postcode.\"\nmsgstr \"\"\n\n#: au/models.py:9\nmsgid \"Australian State\"\nmsgstr \"\"\n\n#: au/models.py:19\nmsgid \"Australian Postcode\"\nmsgstr \"\"\n\n#: au/models.py:33\nmsgid \"Australian Phone number\"\nmsgstr \"\"\n\n#: be/be_provinces.py:5\nmsgid \"Antwerp\"\nmsgstr \"アントワープ\"\n\n#: be/be_provinces.py:6\nmsgid \"Brussels\"\nmsgstr \"ブリュッセル\"\n\n#: be/be_provinces.py:7\nmsgid \"East Flanders\"\nmsgstr \"東フランドル\"\n\n#: be/be_provinces.py:8\nmsgid \"Flemish Brabant\"\nmsgstr \"フランダースブラバント\"\n\n#: be/be_provinces.py:9\nmsgid \"Hainaut\"\nmsgstr \"エノー州\"\n\n#: be/be_provinces.py:10\nmsgid \"Liege\"\nmsgstr \"リエージュ\"\n\n#: be/be_provinces.py:11 nl/nl_provinces.py:9\nmsgid \"Limburg\"\nmsgstr \"Limburg\"\n\n#: be/be_provinces.py:12\nmsgid \"Luxembourg\"\nmsgstr \"ルクセンブルグ\"\n\n#: be/be_provinces.py:13\nmsgid \"Namur\"\nmsgstr \"ナミュール\"\n\n#: be/be_provinces.py:14\nmsgid \"Walloon Brabant\"\nmsgstr \"ブラバンワロン州\"\n\n#: be/be_provinces.py:15\nmsgid \"West Flanders\"\nmsgstr \"西フランドル\"\n\n#: be/be_regions.py:5\nmsgid \"Brussels Capital Region\"\nmsgstr \"ブリュッセル首都圏\"\n\n#: be/be_regions.py:6\nmsgid \"Flemish Region\"\nmsgstr \"フランダース地方\"\n\n#: be/be_regions.py:7\nmsgid \"Wallonia\"\nmsgstr \"ワロン地域\"\n\n#: be/forms.py:25\nmsgid \"Enter a valid postal code in the range and format 1XXX - 9XXX.\"\nmsgstr \"郵便番号の範囲を 1XXX - 9XXX の形式で入力してください。\"\n\n#: be/forms.py:48\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\nmsgstr \"\"\n\"電話番号を次の形式のうちどれかを選択して入力してください: 0x xxx xx xx, 0xx \"\n\"xx xx xx, 04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.\"\n\"xx.xx, 0xx.xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\n\n#: br/forms.py:22\nmsgid \"Enter a zip code in the format XXXXX-XXX.\"\nmsgstr \"XXXXX-XXXの形式でZipコードを入力してください。\"\n\n#: br/forms.py:31\nmsgid \"Phone numbers must be in XX-XXXX-XXXX format.\"\nmsgstr \"電話番号は XX-XXXX-XXXX 形式で入力してください。\"\n\n#: br/forms.py:58\nmsgid \"\"\n\"Select a valid brazilian state. That state is not one of the available \"\n\"states.\"\nmsgstr \"ブラジルの州から選択してください。選択したものは候補にありません。\"\n\n#: br/forms.py:93\nmsgid \"Invalid CPF number.\"\nmsgstr \"ブラジル納税者番号(CPF)が無効です。\"\n\n#: br/forms.py:94\nmsgid \"This field requires at most 11 digits or 14 characters.\"\nmsgstr \"11桁の数字か14文字で入力してください。\"\n\n#: br/forms.py:133\nmsgid \"Invalid CNPJ number.\"\nmsgstr \"納税登録番号(CNPJ)が正しくありません。\"\n\n#: br/forms.py:135\nmsgid \"This field requires at least 14 digits\"\nmsgstr \"14桁以上で入力して下さい。\"\n\n#: ca/forms.py:29\nmsgid \"Enter a postal code in the format XXX XXX.\"\nmsgstr \"XXX XXXの形式で郵便番号を入力してください。\"\n\n#: ca/forms.py:47 us/forms.py:30\nmsgid \"Phone numbers must be in XXX-XXX-XXXX format.\"\nmsgstr \"電話番号は XXX-XXX-XXXX 形式で入力してください。\"\n\n#: ca/forms.py:69\nmsgid \"Enter a Canadian province or territory.\"\nmsgstr \"\"\n\n#: ca/forms.py:110\nmsgid \"Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.\"\nmsgstr \"XXX-XXX-XXX の形式で、カナダ社会保障番号を入力して下さい。\"\n\n#: ch/ch_states.py:5\nmsgid \"Aargau\"\nmsgstr \"Aargau\"\n\n#: ch/ch_states.py:6\nmsgid \"Appenzell Innerrhoden\"\nmsgstr \"Appenzell Innerrhoden\"\n\n#: ch/ch_states.py:7\nmsgid \"Appenzell Ausserrhoden\"\nmsgstr \"Appenzell Ausserrhoden\"\n\n#: ch/ch_states.py:8\nmsgid \"Basel-Stadt\"\nmsgstr \"Basel-Stadt\"\n\n#: ch/ch_states.py:9\nmsgid \"Basel-Land\"\nmsgstr \"Basel-Land\"\n\n#: ch/ch_states.py:10\nmsgid \"Berne\"\nmsgstr \"Berne\"\n\n#: ch/ch_states.py:11\nmsgid \"Fribourg\"\nmsgstr \"Fribourg\"\n\n#: ch/ch_states.py:12\nmsgid \"Geneva\"\nmsgstr \"Geneva\"\n\n#: ch/ch_states.py:13\nmsgid \"Glarus\"\nmsgstr \"Glarus\"\n\n#: ch/ch_states.py:14\nmsgid \"Graubuenden\"\nmsgstr \"Graubuenden\"\n\n#: ch/ch_states.py:15\nmsgid \"Jura\"\nmsgstr \"Jura\"\n\n#: ch/ch_states.py:16\nmsgid \"Lucerne\"\nmsgstr \"Lucerne\"\n\n#: ch/ch_states.py:17\nmsgid \"Neuchatel\"\nmsgstr \"Neuchatel\"\n\n#: ch/ch_states.py:18\nmsgid \"Nidwalden\"\nmsgstr \"Nidwalden\"\n\n#: ch/ch_states.py:19\nmsgid \"Obwalden\"\nmsgstr \"Obwalden\"\n\n#: ch/ch_states.py:20\nmsgid \"Schaffhausen\"\nmsgstr \"Schaffhausen\"\n\n#: ch/ch_states.py:21\nmsgid \"Schwyz\"\nmsgstr \"Schwyz\"\n\n#: ch/ch_states.py:22\nmsgid \"Solothurn\"\nmsgstr \"Solothurn\"\n\n#: ch/ch_states.py:23\nmsgid \"St. Gallen\"\nmsgstr \"St. Gallen\"\n\n#: ch/ch_states.py:24\nmsgid \"Thurgau\"\nmsgstr \"Thurgau\"\n\n#: ch/ch_states.py:25\nmsgid \"Ticino\"\nmsgstr \"Ticino\"\n\n#: ch/ch_states.py:26\nmsgid \"Uri\"\nmsgstr \"Uri\"\n\n#: ch/ch_states.py:27\nmsgid \"Valais\"\nmsgstr \"Valais\"\n\n#: ch/ch_states.py:28\nmsgid \"Vaud\"\nmsgstr \"Vaud\"\n\n#: ch/ch_states.py:29\nmsgid \"Zug\"\nmsgstr \"Zug\"\n\n#: ch/ch_states.py:30\nmsgid \"Zurich\"\nmsgstr \"Zurich\"\n\n#: ch/forms.py:37\nmsgid \"Phone numbers must be in 0XX XXX XX XX format.\"\nmsgstr \"\"\n\n#: ch/forms.py:68\nmsgid \"\"\n\"Enter a valid Swiss identity or passport card number in X1234567<0 or \"\n\"1234567890 format.\"\nmsgstr \"\"\n\"スイス アイデンティティかパスポート番号を X1234567<0 か 1234567890 の形式で入\"\n\"力して下さい。\"\n\n#: cl/forms.py:32\nmsgid \"Enter a valid Chilean RUT.\"\nmsgstr \"正しいチリ納税者番号(RUT)を入力してください。\"\n\n#: cl/forms.py:33\nmsgid \"Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.\"\nmsgstr \"XX.XXX.XXX-Xの形式でチリ納税者番号(RUT)を入力してください。\"\n\n#: cl/forms.py:34\nmsgid \"The Chilean RUT is not valid.\"\nmsgstr \"このチリ納税者番号(RUT)は無効です。\"\n\n#: cn/forms.py:84\nmsgid \"Enter a post code in the format XXXXXX.\"\nmsgstr \"\"\n\n#: cn/forms.py:105\nmsgid \"ID Card Number consists of 15 or 18 digits.\"\nmsgstr \"\"\n\n#: cn/forms.py:106\nmsgid \"Invalid ID Card Number: Wrong checksum\"\nmsgstr \"\"\n\n#: cn/forms.py:107\nmsgid \"Invalid ID Card Number: Wrong birthdate\"\nmsgstr \"\"\n\n#: cn/forms.py:108\nmsgid \"Invalid ID Card Number: Wrong location code\"\nmsgstr \"\"\n\n#: cn/forms.py:193\nmsgid \"Enter a valid phone number.\"\nmsgstr \"\"\n\n#: cn/forms.py:210\nmsgid \"Enter a valid cell number.\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:8\nmsgid \"Prague\"\nmsgstr \"プラハ\"\n\n#: cz/cz_regions.py:9\nmsgid \"Central Bohemian Region\"\nmsgstr \"中央ボヘミア州\"\n\n#: cz/cz_regions.py:10\nmsgid \"South Bohemian Region\"\nmsgstr \"南ボヘミア州\"\n\n#: cz/cz_regions.py:11\nmsgid \"Pilsen Region\"\nmsgstr \"プルゼニ州\"\n\n#: cz/cz_regions.py:12\nmsgid \"Carlsbad Region\"\nmsgstr \"カルロヴィ・ヴァリ州\"\n\n#: cz/cz_regions.py:13\nmsgid \"Usti Region\"\nmsgstr \"ウースチー州\"\n\n#: cz/cz_regions.py:14\nmsgid \"Liberec Region\"\nmsgstr \"リベレツ州\"\n\n#: cz/cz_regions.py:15\nmsgid \"Hradec Region\"\nmsgstr \"フラデツ・クラーロヴェー州\"\n\n#: cz/cz_regions.py:16\nmsgid \"Pardubice Region\"\nmsgstr \"パルドゥビツェ州\"\n\n#: cz/cz_regions.py:17\nmsgid \"Vysocina Region\"\nmsgstr \"ヴィソチナ州\"\n\n#: cz/cz_regions.py:18\nmsgid \"South Moravian Region\"\nmsgstr \"南モラヴィア州\"\n\n#: cz/cz_regions.py:19\nmsgid \"Olomouc Region\"\nmsgstr \"オロモウツ州\"\n\n#: cz/cz_regions.py:20\nmsgid \"Zlin Region\"\nmsgstr \"ズリーン州\"\n\n#: cz/cz_regions.py:21\nmsgid \"Moravian-Silesian Region\"\nmsgstr \"モラヴィア・スレスコ州\"\n\n#: cz/forms.py:32 sk/forms.py:33\nmsgid \"Enter a postal code in the format XXXXX or XXX XX.\"\nmsgstr \"XXXXXか、XXX XXの形式で郵便番号を入力してください。\"\n\n#: cz/forms.py:52\nmsgid \"Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.\"\nmsgstr \"XXXXXX/XXXXか、XXXXXXXXXXの形式で誕生番号を入力してください。\"\n\n#: cz/forms.py:53\nmsgid \"Enter a valid birth number.\"\nmsgstr \"誕生番号を正しく入力してください。\"\n\n#: cz/forms.py:102\nmsgid \"Enter a valid IC number.\"\nmsgstr \"IC番号を正しく入力してください。\"\n\n#: de/de_states.py:5\nmsgid \"Baden-Wuerttemberg\"\nmsgstr \"Baden-Wuerttemberg\"\n\n#: de/de_states.py:6\nmsgid \"Bavaria\"\nmsgstr \"Bavaria\"\n\n#: de/de_states.py:7\nmsgid \"Berlin\"\nmsgstr \"Berlin\"\n\n#: de/de_states.py:8\nmsgid \"Brandenburg\"\nmsgstr \"Brandenburg\"\n\n#: de/de_states.py:9\nmsgid \"Bremen\"\nmsgstr \"Bremen\"\n\n#: de/de_states.py:10\nmsgid \"Hamburg\"\nmsgstr \"Hamburg\"\n\n#: de/de_states.py:11\nmsgid \"Hessen\"\nmsgstr \"Hessen\"\n\n#: de/de_states.py:12\nmsgid \"Mecklenburg-Western Pomerania\"\nmsgstr \"Mecklenburg-Western Pomerania\"\n\n#: de/de_states.py:13\nmsgid \"Lower Saxony\"\nmsgstr \"Lower Saxony\"\n\n#: de/de_states.py:14\nmsgid \"North Rhine-Westphalia\"\nmsgstr \"North Rhine-Westphalia\"\n\n#: de/de_states.py:15\nmsgid \"Rhineland-Palatinate\"\nmsgstr \"Rhineland-Palatinate\"\n\n#: de/de_states.py:16\nmsgid \"Saarland\"\nmsgstr \"Saarland\"\n\n#: de/de_states.py:17\nmsgid \"Saxony\"\nmsgstr \"Saxony\"\n\n#: de/de_states.py:18\nmsgid \"Saxony-Anhalt\"\nmsgstr \"Saxony-Anhalt\"\n\n#: de/de_states.py:19\nmsgid \"Schleswig-Holstein\"\nmsgstr \"Schleswig-Holstein\"\n\n#: de/de_states.py:20\nmsgid \"Thuringia\"\nmsgstr \"Thuringia\"\n\n#: de/forms.py:20 fi/forms.py:18 fr/forms.py:20\nmsgid \"Enter a zip code in the format XXXXX.\"\nmsgstr \"XXXXXの形式でZipコードを入力してください。\"\n\n#: de/forms.py:46\nmsgid \"\"\n\"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"format.\"\nmsgstr \"\"\n\"XXXXXXXXXXX-XXXXXXX-XXXXXXX-X の形式でドイツIDカード番号を入力して下さい。\"\n\n#: es/es_provinces.py:5\nmsgid \"Araba\"\nmsgstr \"\"\n\n#: es/es_provinces.py:6\nmsgid \"Albacete\"\nmsgstr \"Albacete\"\n\n#: es/es_provinces.py:7\nmsgid \"Alacant\"\nmsgstr \"Alacant\"\n\n#: es/es_provinces.py:8\nmsgid \"Almeria\"\nmsgstr \"Almeria\"\n\n#: es/es_provinces.py:9\nmsgid \"Avila\"\nmsgstr \"Avila\"\n\n#: es/es_provinces.py:10\nmsgid \"Badajoz\"\nmsgstr \"Badajoz\"\n\n#: es/es_provinces.py:11\nmsgid \"Illes Balears\"\nmsgstr \"Illes Balears\"\n\n#: es/es_provinces.py:12\nmsgid \"Barcelona\"\nmsgstr \"Barcelona\"\n\n#: es/es_provinces.py:13\nmsgid \"Burgos\"\nmsgstr \"Burgos\"\n\n#: es/es_provinces.py:14\nmsgid \"Caceres\"\nmsgstr \"Caceres\"\n\n#: es/es_provinces.py:15\nmsgid \"Cadiz\"\nmsgstr \"Cadiz\"\n\n#: es/es_provinces.py:16\nmsgid \"Castello\"\nmsgstr \"Castello\"\n\n#: es/es_provinces.py:17\nmsgid \"Ciudad Real\"\nmsgstr \"Ciudad Real\"\n\n#: es/es_provinces.py:18\nmsgid \"Cordoba\"\nmsgstr \"Cordoba\"\n\n#: es/es_provinces.py:19\nmsgid \"A Coruna\"\nmsgstr \"A Coruna\"\n\n#: es/es_provinces.py:20\nmsgid \"Cuenca\"\nmsgstr \"Cuenca\"\n\n#: es/es_provinces.py:21\nmsgid \"Girona\"\nmsgstr \"Girona\"\n\n#: es/es_provinces.py:22\nmsgid \"Granada\"\nmsgstr \"Granada\"\n\n#: es/es_provinces.py:23\nmsgid \"Guadalajara\"\nmsgstr \"Guadalajara\"\n\n#: es/es_provinces.py:24\nmsgid \"Guipuzkoa\"\nmsgstr \"Guipuzkoa\"\n\n#: es/es_provinces.py:25\nmsgid \"Huelva\"\nmsgstr \"Huelva\"\n\n#: es/es_provinces.py:26\nmsgid \"Huesca\"\nmsgstr \"Huesca\"\n\n#: es/es_provinces.py:27\nmsgid \"Jaen\"\nmsgstr \"Jaen\"\n\n#: es/es_provinces.py:28\nmsgid \"Leon\"\nmsgstr \"Leon\"\n\n#: es/es_provinces.py:29\nmsgid \"Lleida\"\nmsgstr \"Lleida\"\n\n#: es/es_provinces.py:30 es/es_regions.py:17\nmsgid \"La Rioja\"\nmsgstr \"La Rioja\"\n\n#: es/es_provinces.py:31\nmsgid \"Lugo\"\nmsgstr \"Lugo\"\n\n#: es/es_provinces.py:32 es/es_regions.py:18\nmsgid \"Madrid\"\nmsgstr \"Madrid\"\n\n#: es/es_provinces.py:33\nmsgid \"Malaga\"\nmsgstr \"Malaga\"\n\n#: es/es_provinces.py:34\nmsgid \"Murcia\"\nmsgstr \"Murcia\"\n\n#: es/es_provinces.py:35\nmsgid \"Navarre\"\nmsgstr \"Navarre\"\n\n#: es/es_provinces.py:36\nmsgid \"Ourense\"\nmsgstr \"Ourense\"\n\n#: es/es_provinces.py:37\nmsgid \"Asturias\"\nmsgstr \"Asturias\"\n\n#: es/es_provinces.py:38\nmsgid \"Palencia\"\nmsgstr \"Palencia\"\n\n#: es/es_provinces.py:39\nmsgid \"Las Palmas\"\nmsgstr \"Las Palmas\"\n\n#: es/es_provinces.py:40\nmsgid \"Pontevedra\"\nmsgstr \"Pontevedra\"\n\n#: es/es_provinces.py:41\nmsgid \"Salamanca\"\nmsgstr \"Salamanca\"\n\n#: es/es_provinces.py:42\nmsgid \"Santa Cruz de Tenerife\"\nmsgstr \"Santa Cruz de Tenerife\"\n\n#: es/es_provinces.py:43 es/es_regions.py:11\nmsgid \"Cantabria\"\nmsgstr \"Cantabria\"\n\n#: es/es_provinces.py:44\nmsgid \"Segovia\"\nmsgstr \"Segovia\"\n\n#: es/es_provinces.py:45\nmsgid \"Seville\"\nmsgstr \"Seville\"\n\n#: es/es_provinces.py:46\nmsgid \"Soria\"\nmsgstr \"Soria\"\n\n#: es/es_provinces.py:47\nmsgid \"Tarragona\"\nmsgstr \"Tarragona\"\n\n#: es/es_provinces.py:48\nmsgid \"Teruel\"\nmsgstr \"Teruel\"\n\n#: es/es_provinces.py:49\nmsgid \"Toledo\"\nmsgstr \"Toledo\"\n\n#: es/es_provinces.py:50\nmsgid \"Valencia\"\nmsgstr \"Valencia\"\n\n#: es/es_provinces.py:51\nmsgid \"Valladolid\"\nmsgstr \"Valladolid\"\n\n#: es/es_provinces.py:52\nmsgid \"Bizkaia\"\nmsgstr \"Bizkaia\"\n\n#: es/es_provinces.py:53\nmsgid \"Zamora\"\nmsgstr \"Zamora\"\n\n#: es/es_provinces.py:54\nmsgid \"Zaragoza\"\nmsgstr \"Zaragoza\"\n\n#: es/es_provinces.py:55\nmsgid \"Ceuta\"\nmsgstr \"Ceuta\"\n\n#: es/es_provinces.py:56\nmsgid \"Melilla\"\nmsgstr \"Melilla\"\n\n#: es/es_regions.py:5\nmsgid \"Andalusia\"\nmsgstr \"Andalusia\"\n\n#: es/es_regions.py:6\nmsgid \"Aragon\"\nmsgstr \"Aragon\"\n\n#: es/es_regions.py:7\nmsgid \"Principality of Asturias\"\nmsgstr \"Principality of Asturias\"\n\n#: es/es_regions.py:8\nmsgid \"Balearic Islands\"\nmsgstr \"Balearic Islands\"\n\n#: es/es_regions.py:9\nmsgid \"Basque Country\"\nmsgstr \"Basque Country\"\n\n#: es/es_regions.py:10\nmsgid \"Canary Islands\"\nmsgstr \"Canary Islands\"\n\n#: es/es_regions.py:12\nmsgid \"Castile-La Mancha\"\nmsgstr \"Castile-La Mancha\"\n\n#: es/es_regions.py:13\nmsgid \"Castile and Leon\"\nmsgstr \"Castile and Leon\"\n\n#: es/es_regions.py:14\nmsgid \"Catalonia\"\nmsgstr \"Catalonia\"\n\n#: es/es_regions.py:15\nmsgid \"Extremadura\"\nmsgstr \"Extremadura\"\n\n#: es/es_regions.py:16\nmsgid \"Galicia\"\nmsgstr \"Galicia\"\n\n#: es/es_regions.py:19\nmsgid \"Region of Murcia\"\nmsgstr \"Region of Murcia\"\n\n#: es/es_regions.py:20\nmsgid \"Foral Community of Navarre\"\nmsgstr \"Foral Community of Navarre\"\n\n#: es/es_regions.py:21\nmsgid \"Valencian Community\"\nmsgstr \"Valencian Community\"\n\n#: es/forms.py:26\nmsgid \"Enter a valid postal code in the range and format 01XXX - 52XXX.\"\nmsgstr \"01XXX から 52XXXの形式で郵便番号を入力してください。\"\n\n#: es/forms.py:46\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or \"\n\"9XXXXXXXX.\"\nmsgstr \"\"\n\"6XXXXXXXX か 8XXXXXXXX か 9XXXXXXXX かのいずれかの形式で電話番号を入力してく\"\n\"ださい。\"\n\n#: es/forms.py:73\nmsgid \"Please enter a valid NIF, NIE, or CIF.\"\nmsgstr \"\"\n\"スペイン納税者番号(NIF)かスペイン住民番号(N.I.E)かスペイン企業番号(CIF)のいず\"\n\"れかを入力してください。\"\n\n#: es/forms.py:74\nmsgid \"Please enter a valid NIF or NIE.\"\nmsgstr \"スペイン納税者番号(NIF)かスペイン住民番号(N.I.E)を入力してください。\"\n\n#: es/forms.py:75\nmsgid \"Invalid checksum for NIF.\"\nmsgstr \"スペイン納税者番号(NIF)のチェックサムがあいません。\"\n\n#: es/forms.py:76\nmsgid \"Invalid checksum for NIE.\"\nmsgstr \"スペイン住民番号(N.I.E)のチェックサムがあいません。\"\n\n#: es/forms.py:77\nmsgid \"Invalid checksum for CIF.\"\nmsgstr \"スペイン企業番号(CIF)のチェックサムがあいません。\"\n\n#: es/forms.py:149\nmsgid \"\"\n\"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.\"\nmsgstr \"XXXX-XXXX-XX-XXXXXXXXXX の形式で銀行口座番号を入力して下さい。\"\n\n#: es/forms.py:150\nmsgid \"Invalid checksum for bank account number.\"\nmsgstr \"銀行口座番号のチェックサムがあいません。\"\n\n#: fi/forms.py:33\nmsgid \"Enter a valid Finnish social security number.\"\nmsgstr \"フィンランド社会保証番号を正しく入力してください。\"\n\n#: fr/forms.py:35\nmsgid \"Phone numbers must be in 0X XX XX XX XX format.\"\nmsgstr \"電話番号は 0X XX XX XX XX 形式で入力してください。\"\n\n#: gb/forms.py:25\nmsgid \"Enter a valid postcode.\"\nmsgstr \"郵便番号を正しく入力してください。\"\n\n#: gb/gb_regions.py:11\nmsgid \"Bedfordshire\"\nmsgstr \"Bedfordshire\"\n\n#: gb/gb_regions.py:12\nmsgid \"Buckinghamshire\"\nmsgstr \"Buckinghamshire\"\n\n#: gb/gb_regions.py:14\nmsgid \"Cheshire\"\nmsgstr \"Cheshire\"\n\n#: gb/gb_regions.py:15\nmsgid \"Cornwall and Isles of Scilly\"\nmsgstr \"Cornwall and Isles of Scilly\"\n\n#: gb/gb_regions.py:16\nmsgid \"Cumbria\"\nmsgstr \"Cumbria\"\n\n#: gb/gb_regions.py:17\nmsgid \"Derbyshire\"\nmsgstr \"Derbyshire\"\n\n#: gb/gb_regions.py:18\nmsgid \"Devon\"\nmsgstr \"Devon\"\n\n#: gb/gb_regions.py:19\nmsgid \"Dorset\"\nmsgstr \"Dorset\"\n\n#: gb/gb_regions.py:20\nmsgid \"Durham\"\nmsgstr \"Durham\"\n\n#: gb/gb_regions.py:21\nmsgid \"East Sussex\"\nmsgstr \"East Sussex\"\n\n#: gb/gb_regions.py:22\nmsgid \"Essex\"\nmsgstr \"Essex\"\n\n#: gb/gb_regions.py:23\nmsgid \"Gloucestershire\"\nmsgstr \"Gloucestershire\"\n\n#: gb/gb_regions.py:24\nmsgid \"Greater London\"\nmsgstr \"Greater London\"\n\n#: gb/gb_regions.py:25\nmsgid \"Greater Manchester\"\nmsgstr \"Greater Manchester\"\n\n#: gb/gb_regions.py:26\nmsgid \"Hampshire\"\nmsgstr \"Hampshire\"\n\n#: gb/gb_regions.py:27\nmsgid \"Hertfordshire\"\nmsgstr \"Hertfordshire\"\n\n#: gb/gb_regions.py:28\nmsgid \"Kent\"\nmsgstr \"Kent\"\n\n#: gb/gb_regions.py:29\nmsgid \"Lancashire\"\nmsgstr \"Lancashire\"\n\n#: gb/gb_regions.py:30\nmsgid \"Leicestershire\"\nmsgstr \"Leicestershire\"\n\n#: gb/gb_regions.py:31\nmsgid \"Lincolnshire\"\nmsgstr \"Lincolnshire\"\n\n#: gb/gb_regions.py:32\nmsgid \"Merseyside\"\nmsgstr \"Merseyside\"\n\n#: gb/gb_regions.py:33\nmsgid \"Norfolk\"\nmsgstr \"Norfolk\"\n\n#: gb/gb_regions.py:34\nmsgid \"North Yorkshire\"\nmsgstr \"North Yorkshire\"\n\n#: gb/gb_regions.py:35\nmsgid \"Northamptonshire\"\nmsgstr \"Northamptonshire\"\n\n#: gb/gb_regions.py:36\nmsgid \"Northumberland\"\nmsgstr \"Northumberland\"\n\n#: gb/gb_regions.py:37\nmsgid \"Nottinghamshire\"\nmsgstr \"Nottinghamshire\"\n\n#: gb/gb_regions.py:38\nmsgid \"Oxfordshire\"\nmsgstr \"Oxfordshire\"\n\n#: gb/gb_regions.py:39\nmsgid \"Shropshire\"\nmsgstr \"Shropshire\"\n\n#: gb/gb_regions.py:40\nmsgid \"Somerset\"\nmsgstr \"Somerset\"\n\n#: gb/gb_regions.py:41\nmsgid \"South Yorkshire\"\nmsgstr \"South Yorkshire\"\n\n#: gb/gb_regions.py:42\nmsgid \"Staffordshire\"\nmsgstr \"Staffordshire\"\n\n#: gb/gb_regions.py:43\nmsgid \"Suffolk\"\nmsgstr \"Suffolk\"\n\n#: gb/gb_regions.py:44\nmsgid \"Surrey\"\nmsgstr \"Surrey\"\n\n#: gb/gb_regions.py:45\nmsgid \"Tyne and Wear\"\nmsgstr \"Tyne and Wear\"\n\n#: gb/gb_regions.py:46\nmsgid \"Warwickshire\"\nmsgstr \"Warwickshire\"\n\n#: gb/gb_regions.py:47\nmsgid \"West Midlands\"\nmsgstr \"West Midlands\"\n\n#: gb/gb_regions.py:48\nmsgid \"West Sussex\"\nmsgstr \"West Sussex\"\n\n#: gb/gb_regions.py:49\nmsgid \"West Yorkshire\"\nmsgstr \"West Yorkshire\"\n\n#: gb/gb_regions.py:50\nmsgid \"Wiltshire\"\nmsgstr \"Wiltshire\"\n\n#: gb/gb_regions.py:51\nmsgid \"Worcestershire\"\nmsgstr \"Worcestershire\"\n\n#: gb/gb_regions.py:55\nmsgid \"County Antrim\"\nmsgstr \"County Antrim\"\n\n#: gb/gb_regions.py:56\nmsgid \"County Armagh\"\nmsgstr \"County Armagh\"\n\n#: gb/gb_regions.py:57\nmsgid \"County Down\"\nmsgstr \"County Down\"\n\n#: gb/gb_regions.py:58\nmsgid \"County Fermanagh\"\nmsgstr \"County Fermanagh\"\n\n#: gb/gb_regions.py:59\nmsgid \"County Londonderry\"\nmsgstr \"County Londonderry\"\n\n#: gb/gb_regions.py:60\nmsgid \"County Tyrone\"\nmsgstr \"County Tyrone\"\n\n#: gb/gb_regions.py:64\nmsgid \"Clwyd\"\nmsgstr \"Clwyd\"\n\n#: gb/gb_regions.py:65\nmsgid \"Dyfed\"\nmsgstr \"Dyfed\"\n\n#: gb/gb_regions.py:66\nmsgid \"Gwent\"\nmsgstr \"Gwent\"\n\n#: gb/gb_regions.py:67\nmsgid \"Gwynedd\"\nmsgstr \"Gwynedd\"\n\n#: gb/gb_regions.py:68\nmsgid \"Mid Glamorgan\"\nmsgstr \"Mid Glamorgan\"\n\n#: gb/gb_regions.py:69\nmsgid \"Powys\"\nmsgstr \"Powys\"\n\n#: gb/gb_regions.py:70\nmsgid \"South Glamorgan\"\nmsgstr \"South Glamorgan\"\n\n#: gb/gb_regions.py:71\nmsgid \"West Glamorgan\"\nmsgstr \"West Glamorgan\"\n\n#: gb/gb_regions.py:75\nmsgid \"Borders\"\nmsgstr \"Borders\"\n\n#: gb/gb_regions.py:76\nmsgid \"Central Scotland\"\nmsgstr \"Central Scotland\"\n\n#: gb/gb_regions.py:77\nmsgid \"Dumfries and Galloway\"\nmsgstr \"Dumfries and Galloway\"\n\n#: gb/gb_regions.py:78\nmsgid \"Fife\"\nmsgstr \"Fife\"\n\n#: gb/gb_regions.py:79\nmsgid \"Grampian\"\nmsgstr \"Grampian\"\n\n#: gb/gb_regions.py:80\nmsgid \"Highland\"\nmsgstr \"Highland\"\n\n#: gb/gb_regions.py:81\nmsgid \"Lothian\"\nmsgstr \"Lothian\"\n\n#: gb/gb_regions.py:82\nmsgid \"Orkney Islands\"\nmsgstr \"Orkney Islands\"\n\n#: gb/gb_regions.py:83\nmsgid \"Shetland Islands\"\nmsgstr \"Shetland Islands\"\n\n#: gb/gb_regions.py:84\nmsgid \"Strathclyde\"\nmsgstr \"Strathclyde\"\n\n#: gb/gb_regions.py:85\nmsgid \"Tayside\"\nmsgstr \"Tayside\"\n\n#: gb/gb_regions.py:86\nmsgid \"Western Isles\"\nmsgstr \"Western Isles\"\n\n#: gb/gb_regions.py:90\nmsgid \"England\"\nmsgstr \"England\"\n\n#: gb/gb_regions.py:91\nmsgid \"Northern Ireland\"\nmsgstr \"Northern Ireland\"\n\n#: gb/gb_regions.py:92\nmsgid \"Scotland\"\nmsgstr \"Scotland\"\n\n#: gb/gb_regions.py:93\nmsgid \"Wales\"\nmsgstr \"Wales\"\n\n#: hk/forms.py:37\n#, python-format\nmsgid \"Phone number should not start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:40\n#, python-format\nmsgid \"Phone number must be in one of the following formats: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:42\n#, python-format\nmsgid \"Phone number should start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hr/forms.py:76\nmsgid \"Enter a valid 13 digit JMBG\"\nmsgstr \"\"\n\n#: hr/forms.py:77\nmsgid \"Error in date segment\"\nmsgstr \"\"\n\n#: hr/forms.py:123\nmsgid \"Enter a valid 11 digit OIB\"\nmsgstr \"\"\n\n#: hr/forms.py:152 id/forms.py:112\nmsgid \"Enter a valid vehicle license plate number\"\nmsgstr \"自動車のプレートナンバーを正しく入力してください。\"\n\n#: hr/forms.py:153\nmsgid \"Enter a valid location code\"\nmsgstr \"\"\n\n#: hr/forms.py:154\nmsgid \"Number part cannot be zero\"\nmsgstr \"\"\n\n#: hr/forms.py:190\nmsgid \"Enter a valid 5 digit postal code\"\nmsgstr \"\"\n\n#: hr/forms.py:218 id/forms.py:72 nl/forms.py:56\nmsgid \"Enter a valid phone number\"\nmsgstr \"電話番号を正しく入力してください。\"\n\n#: hr/forms.py:219\nmsgid \"Enter a valid area or mobile network code\"\nmsgstr \"\"\n\n#: hr/forms.py:220\nmsgid \"The phone nubmer is too long\"\nmsgstr \"\"\n\n#: hr/forms.py:258\nmsgid \"Enter a valid 19 digit JMBAG starting with 601983\"\nmsgstr \"\"\n\n#: hr/forms.py:259\nmsgid \"Card issue number cannot be zero\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:14\nmsgid \"Grad Zagreb\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:15\nmsgid \"Bjelovarsko-bilogorska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:16\nmsgid \"Brodsko-posavska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:17\nmsgid \"Dubrovačko-neretvanska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:18\nmsgid \"Istarska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:19\nmsgid \"Karlovačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:20\nmsgid \"Koprivničko-križevačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:21\nmsgid \"Krapinsko-zagorska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:22\nmsgid \"Ličko-senjska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:23\nmsgid \"Međimurska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:24\nmsgid \"Osječko-baranjska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:25\nmsgid \"Požeško-slavonska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:26\nmsgid \"Primorsko-goranska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:27\nmsgid \"Sisačko-moslavačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:28\nmsgid \"Splitsko-dalmatinska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:29\nmsgid \"Šibensko-kninska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:30\nmsgid \"Varaždinska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:31\nmsgid \"Virovitičko-podravska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:32\nmsgid \"Vukovarsko-srijemska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:33\nmsgid \"Zadarska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:34\nmsgid \"Zagrebačka županija\"\nmsgstr \"\"\n\n#: id/forms.py:31\nmsgid \"Enter a valid post code\"\nmsgstr \"郵便番号を正しく入力してください。\"\n\n#: id/forms.py:176\nmsgid \"Enter a valid NIK/KTP number\"\nmsgstr \"NIK/KTP番号を正しく入力してください。\"\n\n#: id/id_choices.py:15\nmsgid \"Aceh\"\nmsgstr \"アチェ\"\n\n#: id/id_choices.py:16 id/id_choices.py:79\nmsgid \"Bali\"\nmsgstr \"バリ\"\n\n#: id/id_choices.py:17 id/id_choices.py:51\nmsgid \"Banten\"\nmsgstr \"バンテン\"\n\n#: id/id_choices.py:18 id/id_choices.py:60\nmsgid \"Bengkulu\"\nmsgstr \"ベンクルー州\"\n\n#: id/id_choices.py:19 id/id_choices.py:53\nmsgid \"Yogyakarta\"\nmsgstr \"ジョクジャカルタ\"\n\n#: id/id_choices.py:20 id/id_choices.py:57\nmsgid \"Jakarta\"\nmsgstr \"ジャカルタ\"\n\n#: id/id_choices.py:21 id/id_choices.py:81\nmsgid \"Gorontalo\"\nmsgstr \"ゴロンタロ\"\n\n#: id/id_choices.py:22 id/id_choices.py:63\nmsgid \"Jambi\"\nmsgstr \"ジャンビ\"\n\n#: id/id_choices.py:23\nmsgid \"Jawa Barat\"\nmsgstr \"ジャワバラット州\"\n\n#: id/id_choices.py:24\nmsgid \"Jawa Tengah\"\nmsgstr \"ジャワトゥンガ州\"\n\n#: id/id_choices.py:25\nmsgid \"Jawa Timur\"\nmsgstr \"ジャワティムール州\"\n\n#: id/id_choices.py:26 id/id_choices.py:94\nmsgid \"Kalimantan Barat\"\nmsgstr \"カリマンタンバラット州\"\n\n#: id/id_choices.py:27 id/id_choices.py:72\nmsgid \"Kalimantan Selatan\"\nmsgstr \"カリマンタンスラタン州\"\n\n#: id/id_choices.py:28 id/id_choices.py:95\nmsgid \"Kalimantan Tengah\"\nmsgstr \"カリマンタントゥンガ州\"\n\n#: id/id_choices.py:29 id/id_choices.py:96\nmsgid \"Kalimantan Timur\"\nmsgstr \"カリマンタンティムール州\"\n\n#: id/id_choices.py:30\nmsgid \"Kepulauan Bangka-Belitung\"\nmsgstr \"バンカ-ビリトン諸島\"\n\n#: id/id_choices.py:31 id/id_choices.py:68\nmsgid \"Kepulauan Riau\"\nmsgstr \"リアオ諸島\"\n\n#: id/id_choices.py:32 id/id_choices.py:61\nmsgid \"Lampung\"\nmsgstr \"ランプン州\"\n\n#: id/id_choices.py:33 id/id_choices.py:76\nmsgid \"Maluku\"\nmsgstr \"マルク州\"\n\n#: id/id_choices.py:34 id/id_choices.py:77\nmsgid \"Maluku Utara\"\nmsgstr \"マルクウタラ\"\n\n#: id/id_choices.py:35\nmsgid \"Nusa Tenggara Barat\"\nmsgstr \"ヌサトゥンガラバラット\"\n\n#: id/id_choices.py:36\nmsgid \"Nusa Tenggara Timur\"\nmsgstr \"ヌサトゥンガラティムール州\"\n\n#: id/id_choices.py:37\nmsgid \"Papua\"\nmsgstr \"パプア\"\n\n#: id/id_choices.py:38\nmsgid \"Papua Barat\"\nmsgstr \"パプアバラット\"\n\n#: id/id_choices.py:39 id/id_choices.py:66\nmsgid \"Riau\"\nmsgstr \"リアウ州\"\n\n#: id/id_choices.py:40 id/id_choices.py:74\nmsgid \"Sulawesi Barat\"\nmsgstr \"スラウェシバラット\"\n\n#: id/id_choices.py:41 id/id_choices.py:75\nmsgid \"Sulawesi Selatan\"\nmsgstr \"スラウェシスラタン州\"\n\n#: id/id_choices.py:42 id/id_choices.py:82\nmsgid \"Sulawesi Tengah\"\nmsgstr \"スラウェシトゥンガ州\"\n\n#: id/id_choices.py:43 id/id_choices.py:85\nmsgid \"Sulawesi Tenggara\"\nmsgstr \"スラウェシトゥンガラ州\"\n\n#: id/id_choices.py:44\nmsgid \"Sulawesi Utara\"\nmsgstr \"スラウェシウタラ州\"\n\n#: id/id_choices.py:45 id/id_choices.py:58\nmsgid \"Sumatera Barat\"\nmsgstr \"スマトラバラット州\"\n\n#: id/id_choices.py:46 id/id_choices.py:62\nmsgid \"Sumatera Selatan\"\nmsgstr \"スマトラスラタン州\"\n\n#: id/id_choices.py:47 id/id_choices.py:64\nmsgid \"Sumatera Utara\"\nmsgstr \"スマトラウタラ州\"\n\n#: id/id_choices.py:52\nmsgid \"Magelang\"\nmsgstr \"マグラン\"\n\n#: id/id_choices.py:54\nmsgid \"Surakarta - Solo\"\nmsgstr \"スラカルタ - ソロ\"\n\n#: id/id_choices.py:55\nmsgid \"Madiun\"\nmsgstr \"マディウン\"\n\n#: id/id_choices.py:56\nmsgid \"Kediri\"\nmsgstr \"クディリ\"\n\n#: id/id_choices.py:59\nmsgid \"Tapanuli\"\nmsgstr \"タパヌリ\"\n\n#: id/id_choices.py:65\nmsgid \"Nanggroe Aceh Darussalam\"\nmsgstr \"ナングロアチェダルサラーム\"\n\n#: id/id_choices.py:67\nmsgid \"Kepulauan Bangka Belitung\"\nmsgstr \"バンカビリトン諸島\"\n\n#: id/id_choices.py:69\nmsgid \"Corps Consulate\"\nmsgstr \"領事館部隊\"\n\n#: id/id_choices.py:70\nmsgid \"Corps Diplomatic\"\nmsgstr \"外交部隊\"\n\n#: id/id_choices.py:71\nmsgid \"Bandung\"\nmsgstr \"バンドン\"\n\n#: id/id_choices.py:73\nmsgid \"Sulawesi Utara Daratan\"\nmsgstr \"スラウェシウタラダラタン\"\n\n#: id/id_choices.py:78\nmsgid \"NTT - Timor\"\nmsgstr \"株式会社 NTT - 東ティモール\"\n\n#: id/id_choices.py:80\nmsgid \"Sulawesi Utara Kepulauan\"\nmsgstr \"スラウェシウタラ諸島\"\n\n#: id/id_choices.py:83\nmsgid \"NTB - Lombok\"\nmsgstr \"NTB - ロンボク\"\n\n#: id/id_choices.py:84\nmsgid \"Papua dan Papua Barat\"\nmsgstr \"パプアダンパプアバラット\"\n\n#: id/id_choices.py:86\nmsgid \"Cirebon\"\nmsgstr \"チルボン\"\n\n#: id/id_choices.py:87\nmsgid \"NTB - Sumbawa\"\nmsgstr \"NTB - スンバワ\"\n\n#: id/id_choices.py:88\nmsgid \"NTT - Flores\"\nmsgstr \"株式会社 NTT - フローリーズ\"\n\n#: id/id_choices.py:89\nmsgid \"NTT - Sumba\"\nmsgstr \"株式会社NTT - スンバ\"\n\n#: id/id_choices.py:90\nmsgid \"Bogor\"\nmsgstr \"ボゴール\"\n\n#: id/id_choices.py:91\nmsgid \"Pekalongan\"\nmsgstr \"プカロンガン\"\n\n#: id/id_choices.py:92\nmsgid \"Semarang\"\nmsgstr \"スマラン\"\n\n#: id/id_choices.py:93\nmsgid \"Pati\"\nmsgstr \"パティ\"\n\n#: id/id_choices.py:97\nmsgid \"Surabaya\"\nmsgstr \"スラバヤ\"\n\n#: id/id_choices.py:98\nmsgid \"Madura\"\nmsgstr \"マドゥラ\"\n\n#: id/id_choices.py:99\nmsgid \"Malang\"\nmsgstr \"マラン\"\n\n#: id/id_choices.py:100\nmsgid \"Jember\"\nmsgstr \"ジェンバー\"\n\n#: id/id_choices.py:101\nmsgid \"Banyumas\"\nmsgstr \"バニュマス\"\n\n#: id/id_choices.py:102\nmsgid \"Federal Government\"\nmsgstr \"連邦政府\"\n\n#: id/id_choices.py:103\nmsgid \"Bojonegoro\"\nmsgstr \"ボジョネゴロ\"\n\n#: id/id_choices.py:104\nmsgid \"Purwakarta\"\nmsgstr \"プルワカルタ\"\n\n#: id/id_choices.py:105\nmsgid \"Sidoarjo\"\nmsgstr \"シドアルジョ\"\n\n#: id/id_choices.py:106\nmsgid \"Garut\"\nmsgstr \"ガルト\"\n\n#: ie/ie_counties.py:8\nmsgid \"Antrim\"\nmsgstr \"アントリム\"\n\n#: ie/ie_counties.py:9\nmsgid \"Armagh\"\nmsgstr \"アルマー\"\n\n#: ie/ie_counties.py:10\nmsgid \"Carlow\"\nmsgstr \"カーロー\"\n\n#: ie/ie_counties.py:11\nmsgid \"Cavan\"\nmsgstr \"カバン\"\n\n#: ie/ie_counties.py:12\nmsgid \"Clare\"\nmsgstr \"クレア\"\n\n#: ie/ie_counties.py:13\nmsgid \"Cork\"\nmsgstr \"コーク\"\n\n#: ie/ie_counties.py:14\nmsgid \"Derry\"\nmsgstr \"デリー\"\n\n#: ie/ie_counties.py:15\nmsgid \"Donegal\"\nmsgstr \"ドニゴール\"\n\n#: ie/ie_counties.py:16\nmsgid \"Down\"\nmsgstr \"ダウン\"\n\n#: ie/ie_counties.py:17\nmsgid \"Dublin\"\nmsgstr \"ダブリン\"\n\n#: ie/ie_counties.py:18\nmsgid \"Fermanagh\"\nmsgstr \"ファーマナ州\"\n\n#: ie/ie_counties.py:19\nmsgid \"Galway\"\nmsgstr \"ゴールウェイ\"\n\n#: ie/ie_counties.py:20\nmsgid \"Kerry\"\nmsgstr \"ケリー\"\n\n#: ie/ie_counties.py:21\nmsgid \"Kildare\"\nmsgstr \"キルデア\"\n\n#: ie/ie_counties.py:22\nmsgid \"Kilkenny\"\nmsgstr \"キルケニー\"\n\n#: ie/ie_counties.py:23\nmsgid \"Laois\"\nmsgstr \"リーシュ\"\n\n#: ie/ie_counties.py:24\nmsgid \"Leitrim\"\nmsgstr \"リートリム\"\n\n#: ie/ie_counties.py:25\nmsgid \"Limerick\"\nmsgstr \"リマリック\"\n\n#: ie/ie_counties.py:26\nmsgid \"Longford\"\nmsgstr \"ロングフォード\"\n\n#: ie/ie_counties.py:27\nmsgid \"Louth\"\nmsgstr \"ラウス\"\n\n#: ie/ie_counties.py:28\nmsgid \"Mayo\"\nmsgstr \"メイヨー\"\n\n#: ie/ie_counties.py:29\nmsgid \"Meath\"\nmsgstr \"ミーズ\"\n\n#: ie/ie_counties.py:30\nmsgid \"Monaghan\"\nmsgstr \"モナハン\"\n\n#: ie/ie_counties.py:31\nmsgid \"Offaly\"\nmsgstr \"オファリー\"\n\n#: ie/ie_counties.py:32\nmsgid \"Roscommon\"\nmsgstr \"ロスコモン\"\n\n#: ie/ie_counties.py:33\nmsgid \"Sligo\"\nmsgstr \"スライゴ\"\n\n#: ie/ie_counties.py:34\nmsgid \"Tipperary\"\nmsgstr \"ティペラリー\"\n\n#: ie/ie_counties.py:35\nmsgid \"Tyrone\"\nmsgstr \"タイローン\"\n\n#: ie/ie_counties.py:36\nmsgid \"Waterford\"\nmsgstr \"ウォーターフォード\"\n\n#: ie/ie_counties.py:37\nmsgid \"Westmeath\"\nmsgstr \"ウェストミーズ\"\n\n#: ie/ie_counties.py:38\nmsgid \"Wexford\"\nmsgstr \"ウェクスフォード\"\n\n#: ie/ie_counties.py:39\nmsgid \"Wicklow\"\nmsgstr \"ウィックロー\"\n\n#: il/forms.py:32\nmsgid \"Enter a postal code in the format XXXXX\"\nmsgstr \"郵便番号を XXXXX 形式で入力してください\"\n\n#: il/forms.py:51\nmsgid \"Enter a valid ID number.\"\nmsgstr \"ID 番号を入力してください。\"\n\n#: in_/forms.py:41\nmsgid \"Enter a zip code in the format XXXXXX or XXX XXX.\"\nmsgstr \"\"\n\n#: in_/forms.py:64\nmsgid \"Enter an Indian state or territory.\"\nmsgstr \"\"\n\n#: in_/forms.py:103\nmsgid \"Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.\"\nmsgstr \"\"\n\n#: is_/forms.py:22\nmsgid \"\"\n\"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.\"\nmsgstr \"XXXXXか、XXXXX-XXXXの形式でアイスランド納税者番号を入力してください。\"\n\n#: is_/forms.py:23\nmsgid \"The Icelandic identification number is not valid.\"\nmsgstr \"アイスランド納税者番号を正しく入力して下さい。\"\n\n#: it/forms.py:21\nmsgid \"Enter a valid zip code.\"\nmsgstr \"Zipコードを正しく入力してください。\"\n\n#: it/forms.py:48\nmsgid \"Enter a valid Social Security number.\"\nmsgstr \"社会保障番号番号を正しく入力してください。\"\n\n#: it/forms.py:73\nmsgid \"Enter a valid VAT number.\"\nmsgstr \"VAT番号を正しく入力してください。\"\n\n#: jp/forms.py:19\nmsgid \"Enter a postal code in the format XXXXXXX or XXX-XXXX.\"\nmsgstr \"XXXXXか、XXXXX-XXXXの形式で郵便番号を入力してください。\"\n\n#: jp/jp_prefectures.py:4\nmsgid \"Hokkaido\"\nmsgstr \"北海道\"\n\n#: jp/jp_prefectures.py:5\nmsgid \"Aomori\"\nmsgstr \"青森県\"\n\n#: jp/jp_prefectures.py:6\nmsgid \"Iwate\"\nmsgstr \"岩手県\"\n\n#: jp/jp_prefectures.py:7\nmsgid \"Miyagi\"\nmsgstr \"宮城県\"\n\n#: jp/jp_prefectures.py:8\nmsgid \"Akita\"\nmsgstr \"秋田県\"\n\n#: jp/jp_prefectures.py:9\nmsgid \"Yamagata\"\nmsgstr \"山形県\"\n\n#: jp/jp_prefectures.py:10\nmsgid \"Fukushima\"\nmsgstr \"福島県\"\n\n#: jp/jp_prefectures.py:11\nmsgid \"Ibaraki\"\nmsgstr \"茨城県\"\n\n#: jp/jp_prefectures.py:12\nmsgid \"Tochigi\"\nmsgstr \"栃木県\"\n\n#: jp/jp_prefectures.py:13\nmsgid \"Gunma\"\nmsgstr \"群馬県\"\n\n#: jp/jp_prefectures.py:14\nmsgid \"Saitama\"\nmsgstr \"埼玉県\"\n\n#: jp/jp_prefectures.py:15\nmsgid \"Chiba\"\nmsgstr \"千葉県\"\n\n#: jp/jp_prefectures.py:16\nmsgid \"Tokyo\"\nmsgstr \"東京都\"\n\n#: jp/jp_prefectures.py:17\nmsgid \"Kanagawa\"\nmsgstr \"神奈川県\"\n\n#: jp/jp_prefectures.py:18\nmsgid \"Yamanashi\"\nmsgstr \"山梨県\"\n\n#: jp/jp_prefectures.py:19\nmsgid \"Nagano\"\nmsgstr \"長野県\"\n\n#: jp/jp_prefectures.py:20\nmsgid \"Niigata\"\nmsgstr \"新潟県\"\n\n#: jp/jp_prefectures.py:21\nmsgid \"Toyama\"\nmsgstr \"富山県\"\n\n#: jp/jp_prefectures.py:22\nmsgid \"Ishikawa\"\nmsgstr \"石川県\"\n\n#: jp/jp_prefectures.py:23\nmsgid \"Fukui\"\nmsgstr \"福井県\"\n\n#: jp/jp_prefectures.py:24\nmsgid \"Gifu\"\nmsgstr \"岐阜県\"\n\n#: jp/jp_prefectures.py:25\nmsgid \"Shizuoka\"\nmsgstr \"静岡県\"\n\n#: jp/jp_prefectures.py:26\nmsgid \"Aichi\"\nmsgstr \"愛知県\"\n\n#: jp/jp_prefectures.py:27\nmsgid \"Mie\"\nmsgstr \"三重県\"\n\n#: jp/jp_prefectures.py:28\nmsgid \"Shiga\"\nmsgstr \"滋賀県\"\n\n#: jp/jp_prefectures.py:29\nmsgid \"Kyoto\"\nmsgstr \"京都府\"\n\n#: jp/jp_prefectures.py:30\nmsgid \"Osaka\"\nmsgstr \"大阪府\"\n\n#: jp/jp_prefectures.py:31\nmsgid \"Hyogo\"\nmsgstr \"兵庫県\"\n\n#: jp/jp_prefectures.py:32\nmsgid \"Nara\"\nmsgstr \"奈良県\"\n\n#: jp/jp_prefectures.py:33\nmsgid \"Wakayama\"\nmsgstr \"和歌山県\"\n\n#: jp/jp_prefectures.py:34\nmsgid \"Tottori\"\nmsgstr \"鳥取県\"\n\n#: jp/jp_prefectures.py:35\nmsgid \"Shimane\"\nmsgstr \"島根県\"\n\n#: jp/jp_prefectures.py:36\nmsgid \"Okayama\"\nmsgstr \"岡山県\"\n\n#: jp/jp_prefectures.py:37\nmsgid \"Hiroshima\"\nmsgstr \"広島県\"\n\n#: jp/jp_prefectures.py:38\nmsgid \"Yamaguchi\"\nmsgstr \"山口県\"\n\n#: jp/jp_prefectures.py:39\nmsgid \"Tokushima\"\nmsgstr \"徳島県\"\n\n#: jp/jp_prefectures.py:40\nmsgid \"Kagawa\"\nmsgstr \"香川県\"\n\n#: jp/jp_prefectures.py:41\nmsgid \"Ehime\"\nmsgstr \"愛媛県\"\n\n#: jp/jp_prefectures.py:42\nmsgid \"Kochi\"\nmsgstr \"高知県\"\n\n#: jp/jp_prefectures.py:43\nmsgid \"Fukuoka\"\nmsgstr \"福岡県\"\n\n#: jp/jp_prefectures.py:44\nmsgid \"Saga\"\nmsgstr \"佐賀県\"\n\n#: jp/jp_prefectures.py:45\nmsgid \"Nagasaki\"\nmsgstr \"長崎県\"\n\n#: jp/jp_prefectures.py:46\nmsgid \"Kumamoto\"\nmsgstr \"熊本県\"\n\n#: jp/jp_prefectures.py:47\nmsgid \"Oita\"\nmsgstr \"大分県\"\n\n#: jp/jp_prefectures.py:48\nmsgid \"Miyazaki\"\nmsgstr \"宮崎県\"\n\n#: jp/jp_prefectures.py:49\nmsgid \"Kagoshima\"\nmsgstr \"鹿児島県\"\n\n#: jp/jp_prefectures.py:50\nmsgid \"Okinawa\"\nmsgstr \"沖縄県\"\n\n#: kw/forms.py:27\nmsgid \"Enter a valid Kuwaiti Civil ID number\"\nmsgstr \"クウェート市民番号を正しく入力してください。\"\n\n#: mk/forms.py:18\nmsgid \"\"\n\"Identity card numbers must contain either 4 to 7 digits or an uppercase \"\n\"letter and 7 digits.\"\nmsgstr \"\"\n\n#: mk/forms.py:57 si/forms.py:24\nmsgid \"This field should contain exactly 13 digits.\"\nmsgstr \"\"\n\n#: mk/forms.py:58\nmsgid \"The first 7 digits of the UMCN must represent a valid past date.\"\nmsgstr \"\"\n\n#: mk/forms.py:59\nmsgid \"The UMCN is not valid.\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:10\nmsgid \"Aerodrom\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:11\nmsgid \"Aračinovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:12\nmsgid \"Berovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:13\nmsgid \"Bitola\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:14\nmsgid \"Bogdanci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:15\nmsgid \"Bogovinje\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:16\nmsgid \"Bosilovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:17\nmsgid \"Brvenica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:18\nmsgid \"Butel\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:19\nmsgid \"Valandovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:20\nmsgid \"Vasilevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:21\nmsgid \"Vevčani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:22\nmsgid \"Veles\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:23\nmsgid \"Vinica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:24\nmsgid \"Vraneštica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:25\nmsgid \"Vrapčište\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:26\nmsgid \"Gazi Baba\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:27\nmsgid \"Gevgelija\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:28\nmsgid \"Gostivar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:29\nmsgid \"Gradsko\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:30\nmsgid \"Debar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:31\nmsgid \"Debarca\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:32\nmsgid \"Delčevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:33\nmsgid \"Demir Kapija\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:34\nmsgid \"Demir Hisar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:35\nmsgid \"Dolneni\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:36\nmsgid \"Drugovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:37\nmsgid \"Gjorče Petrov\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:38\nmsgid \"Želino\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:39\nmsgid \"Zajas\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:40\nmsgid \"Zelenikovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:41\nmsgid \"Zrnovci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:42\nmsgid \"Ilinden\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:43\nmsgid \"Jegunovce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:44\nmsgid \"Kavadarci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:45\nmsgid \"Karbinci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:46\nmsgid \"Karpoš\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:47\nmsgid \"Kisela Voda\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:48\nmsgid \"Kičevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:49\nmsgid \"Konče\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:50\nmsgid \"Koćani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:51\nmsgid \"Kratovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:52\nmsgid \"Kriva Palanka\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:53\nmsgid \"Krivogaštani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:54\nmsgid \"Kruševo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:55\nmsgid \"Kumanovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:56\nmsgid \"Lipkovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:57\nmsgid \"Lozovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:58\nmsgid \"Mavrovo i Rostuša\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:59\nmsgid \"Makedonska Kamenica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:60\nmsgid \"Makedonski Brod\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:61\nmsgid \"Mogila\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:62\nmsgid \"Negotino\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:63\nmsgid \"Novaci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:64\nmsgid \"Novo Selo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:65\nmsgid \"Oslomej\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:66\nmsgid \"Ohrid\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:67\nmsgid \"Petrovec\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:68\nmsgid \"Pehčevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:69\nmsgid \"Plasnica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:70\nmsgid \"Prilep\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:71\nmsgid \"Probištip\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:72\nmsgid \"Radoviš\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:73\nmsgid \"Rankovce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:74\nmsgid \"Resen\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:75\nmsgid \"Rosoman\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:76\nmsgid \"Saraj\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:77\nmsgid \"Sveti Nikole\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:78\nmsgid \"Sopište\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:79\nmsgid \"Star Dojran\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:80\nmsgid \"Staro Nagoričane\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:81\nmsgid \"Struga\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:82\nmsgid \"Strumica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:83\nmsgid \"Studeničani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:84\nmsgid \"Tearce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:85\nmsgid \"Tetovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:86\nmsgid \"Centar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:87\nmsgid \"Centar-Župa\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:88\nmsgid \"Čair\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:89\nmsgid \"Čaška\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:90\nmsgid \"Češinovo-Obleševo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:91\nmsgid \"Čučer-Sandevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:92\nmsgid \"Štip\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:93\nmsgid \"Šuto Orizari\"\nmsgstr \"\"\n\n#: mk/models.py:11\nmsgid \"Macedonian identity card number\"\nmsgstr \"\"\n\n#: mk/models.py:25\nmsgid \"A Macedonian municipality (2 character code)\"\nmsgstr \"\"\n\n#: mk/models.py:35\nmsgid \"Unique master citizen number (13 digits)\"\nmsgstr \"\"\n\n#: mx/forms.py:67\nmsgid \"Enter a valid zip code in the format XXXXX.\"\nmsgstr \"\"\n\n#: mx/forms.py:110\nmsgid \"Enter a valid RFC.\"\nmsgstr \"\"\n\n#: mx/forms.py:111\nmsgid \"Invalid checksum for RFC.\"\nmsgstr \"\"\n\n#: mx/forms.py:191\nmsgid \"Enter a valid CURP.\"\nmsgstr \"\"\n\n#: mx/forms.py:192\nmsgid \"Invalid checksum for CURP.\"\nmsgstr \"\"\n\n#: mx/models.py:14\nmsgid \"Mexico state (three uppercase letters)\"\nmsgstr \"\"\n\n#: mx/models.py:27\nmsgid \"Mexico zip code\"\nmsgstr \"\"\n\n#: mx/models.py:44\nmsgid \"Mexican RFC\"\nmsgstr \"\"\n\n#: mx/models.py:61\nmsgid \"Mexican CURP\"\nmsgstr \"\"\n\n#: mx/mx_states.py:14\nmsgid \"Aguascalientes\"\nmsgstr \"Aguascalientes\"\n\n#: mx/mx_states.py:15\nmsgid \"Baja California\"\nmsgstr \"Baja California\"\n\n#: mx/mx_states.py:16\nmsgid \"Baja California Sur\"\nmsgstr \"Baja California Sur\"\n\n#: mx/mx_states.py:17\nmsgid \"Campeche\"\nmsgstr \"Campeche\"\n\n#: mx/mx_states.py:18\nmsgid \"Chihuahua\"\nmsgstr \"Chihuahua\"\n\n#: mx/mx_states.py:19\nmsgid \"Chiapas\"\nmsgstr \"Chiapas\"\n\n#: mx/mx_states.py:20\nmsgid \"Coahuila\"\nmsgstr \"Coahuila\"\n\n#: mx/mx_states.py:21\nmsgid \"Colima\"\nmsgstr \"Colima\"\n\n#: mx/mx_states.py:22\nmsgid \"Distrito Federal\"\nmsgstr \"Distrito Federal\"\n\n#: mx/mx_states.py:23\nmsgid \"Durango\"\nmsgstr \"Durango\"\n\n#: mx/mx_states.py:24\nmsgid \"Guerrero\"\nmsgstr \"Guerrero\"\n\n#: mx/mx_states.py:25\nmsgid \"Guanajuato\"\nmsgstr \"Guanajuato\"\n\n#: mx/mx_states.py:26\nmsgid \"Hidalgo\"\nmsgstr \"Hidalgo\"\n\n#: mx/mx_states.py:27\nmsgid \"Jalisco\"\nmsgstr \"Jalisco\"\n\n#: mx/mx_states.py:28\nmsgid \"Estado de México\"\nmsgstr \"Estado de México\"\n\n#: mx/mx_states.py:29\nmsgid \"Michoacán\"\nmsgstr \"Michoacan\"\n\n#: mx/mx_states.py:30\nmsgid \"Morelos\"\nmsgstr \"Morelos\"\n\n#: mx/mx_states.py:31\nmsgid \"Nayarit\"\nmsgstr \"Nayarit\"\n\n#: mx/mx_states.py:32\nmsgid \"Nuevo León\"\nmsgstr \"Nuevo Leon\"\n\n#: mx/mx_states.py:33\nmsgid \"Oaxaca\"\nmsgstr \"Oaxaca\"\n\n#: mx/mx_states.py:34\nmsgid \"Puebla\"\nmsgstr \"Puebla\"\n\n#: mx/mx_states.py:35\nmsgid \"Querétaro\"\nmsgstr \"Queretaro\"\n\n#: mx/mx_states.py:36\nmsgid \"Quintana Roo\"\nmsgstr \"Quintana Roo\"\n\n#: mx/mx_states.py:37\nmsgid \"Sinaloa\"\nmsgstr \"Sinaloa\"\n\n#: mx/mx_states.py:38\nmsgid \"San Luis Potosí\"\nmsgstr \"San Luis Potosi\"\n\n#: mx/mx_states.py:39\nmsgid \"Sonora\"\nmsgstr \"Sonora\"\n\n#: mx/mx_states.py:40\nmsgid \"Tabasco\"\nmsgstr \"Tabasco\"\n\n#: mx/mx_states.py:41\nmsgid \"Tamaulipas\"\nmsgstr \"Tamaulipas\"\n\n#: mx/mx_states.py:42\nmsgid \"Tlaxcala\"\nmsgstr \"Tlaxcala\"\n\n#: mx/mx_states.py:43\nmsgid \"Veracruz\"\nmsgstr \"Veracruz\"\n\n#: mx/mx_states.py:44\nmsgid \"Yucatán\"\nmsgstr \"Yucatan\"\n\n#: mx/mx_states.py:45\nmsgid \"Zacatecas\"\nmsgstr \"Zacatecas\"\n\n#: nl/forms.py:26\nmsgid \"Enter a valid postal code\"\nmsgstr \"郵便番号を正しく入力してください。\"\n\n#: nl/forms.py:82\nmsgid \"Enter a valid SoFi number\"\nmsgstr \"社会税務番号(SoFi)を正しく入力してください。\"\n\n#: nl/nl_provinces.py:4\nmsgid \"Drenthe\"\nmsgstr \"Drenthe\"\n\n#: nl/nl_provinces.py:5\nmsgid \"Flevoland\"\nmsgstr \"Flevoland\"\n\n#: nl/nl_provinces.py:6\nmsgid \"Friesland\"\nmsgstr \"Friesland\"\n\n#: nl/nl_provinces.py:7\nmsgid \"Gelderland\"\nmsgstr \"Gelderland\"\n\n#: nl/nl_provinces.py:8\nmsgid \"Groningen\"\nmsgstr \"Groningen\"\n\n#: nl/nl_provinces.py:10\nmsgid \"Noord-Brabant\"\nmsgstr \"Noord-Brabant\"\n\n#: nl/nl_provinces.py:11\nmsgid \"Noord-Holland\"\nmsgstr \"Noord-Holland\"\n\n#: nl/nl_provinces.py:12\nmsgid \"Overijssel\"\nmsgstr \"Overijssel\"\n\n#: nl/nl_provinces.py:13\nmsgid \"Utrecht\"\nmsgstr \"Utrecht\"\n\n#: nl/nl_provinces.py:14\nmsgid \"Zeeland\"\nmsgstr \"Zeeland\"\n\n#: nl/nl_provinces.py:15\nmsgid \"Zuid-Holland\"\nmsgstr \"Zuid-Holland\"\n\n#: no/forms.py:39\nmsgid \"Enter a valid Norwegian social security number.\"\nmsgstr \"ノルウェー社会保障番号を正しく入力してください。\"\n\n#: pe/forms.py:28\nmsgid \"This field requires 8 digits.\"\nmsgstr \"8桁で入力して下さい。\"\n\n#: pe/forms.py:56\nmsgid \"This field requires 11 digits.\"\nmsgstr \"11桁で入力して下さい。\"\n\n#: pl/forms.py:42\nmsgid \"National Identification Number consists of 11 digits.\"\nmsgstr \"国民識別番号は11文字で入力して下さい。\"\n\n#: pl/forms.py:43\nmsgid \"Wrong checksum for the National Identification Number.\"\nmsgstr \"国民識別番号のチェックサムがあいません。\"\n\n#: pl/forms.py:79\nmsgid \"National ID Card Number consists of 3 letters and 6 digits.\"\nmsgstr \"\"\n\n#: pl/forms.py:80\nmsgid \"Wrong checksum for the National ID Card Number.\"\nmsgstr \"\"\n\n#: pl/forms.py:131\nmsgid \"\"\n\"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or \"\n\"XXXXXXXXXX.\"\nmsgstr \"\"\n\n#: pl/forms.py:132\nmsgid \"Wrong checksum for the Tax Number (NIP).\"\nmsgstr \"税務署登録ID(NIP)のチェックサムがあいません。\"\n\n#: pl/forms.py:171\nmsgid \"National Business Register Number (REGON) consists of 9 or 14 digits.\"\nmsgstr \"ポーランド企業番号(REGON)は9文字か14文字で入力して下さい。\"\n\n#: pl/forms.py:172\nmsgid \"Wrong checksum for the National Business Register Number (REGON).\"\nmsgstr \"ポーランド企業番号(REGON)のチェックサムがあいません。\"\n\n#: pl/forms.py:212\nmsgid \"Enter a postal code in the format XX-XXX.\"\nmsgstr \"XX-XXXの形式で郵便番号を入力してください。\"\n\n#: pl/pl_voivodeships.py:8\nmsgid \"Lower Silesia\"\nmsgstr \"Lower Silesia\"\n\n#: pl/pl_voivodeships.py:9\nmsgid \"Kuyavia-Pomerania\"\nmsgstr \"Kuyavia-Pomerania\"\n\n#: pl/pl_voivodeships.py:10\nmsgid \"Lublin\"\nmsgstr \"Lublin\"\n\n#: pl/pl_voivodeships.py:11\nmsgid \"Lubusz\"\nmsgstr \"Lubusz\"\n\n#: pl/pl_voivodeships.py:12\nmsgid \"Lodz\"\nmsgstr \"Lodz\"\n\n#: pl/pl_voivodeships.py:13\nmsgid \"Lesser Poland\"\nmsgstr \"Lesser Poland\"\n\n#: pl/pl_voivodeships.py:14\nmsgid \"Masovia\"\nmsgstr \"Masovia\"\n\n#: pl/pl_voivodeships.py:15\nmsgid \"Opole\"\nmsgstr \"Opole\"\n\n#: pl/pl_voivodeships.py:16\nmsgid \"Subcarpatia\"\nmsgstr \"Subcarpatia\"\n\n#: pl/pl_voivodeships.py:17\nmsgid \"Podlasie\"\nmsgstr \"Podlasie\"\n\n#: pl/pl_voivodeships.py:18\nmsgid \"Pomerania\"\nmsgstr \"Pomerania\"\n\n#: pl/pl_voivodeships.py:19\nmsgid \"Silesia\"\nmsgstr \"Silesia\"\n\n#: pl/pl_voivodeships.py:20\nmsgid \"Swietokrzyskie\"\nmsgstr \"Swietokrzyskie\"\n\n#: pl/pl_voivodeships.py:21\nmsgid \"Warmia-Masuria\"\nmsgstr \"Warmia-Masuria\"\n\n#: pl/pl_voivodeships.py:22\nmsgid \"Greater Poland\"\nmsgstr \"Greater Poland\"\n\n#: pl/pl_voivodeships.py:23\nmsgid \"West Pomerania\"\nmsgstr \"West Pomerania\"\n\n#: pt/forms.py:19\nmsgid \"Enter a zip code in the format XXXX-XXX.\"\nmsgstr \"XXXX-XXXの形式でZipコードを入力してください。\"\n\n#: pt/forms.py:39\nmsgid \"Phone numbers must have 9 digits, or start by + or 00.\"\nmsgstr \"電話番号は9桁の数字か、プラス記号(+)または00で始まる必要があります。\"\n\n#: ro/forms.py:22\nmsgid \"Enter a valid CIF.\"\nmsgstr \"CIFを正しく入力してください。\"\n\n#: ro/forms.py:59\nmsgid \"Enter a valid CNP.\"\nmsgstr \"CNPを正しく入力してください。\"\n\n#: ro/forms.py:143\nmsgid \"Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format\"\nmsgstr \"ROXX-XXXX-XXXX-XXXX-XXXX-XXXX の形式でIBANを入力してください\"\n\n#: ro/forms.py:175\nmsgid \"Phone numbers must be in XXXX-XXXXXX format.\"\nmsgstr \"電話番号は XXXX-XXXXXX 形式で入力してください。\"\n\n#: ro/forms.py:200\nmsgid \"Enter a valid postal code in the format XXXXXX\"\nmsgstr \"XXXXXX の形式で郵便番号を入力してください。\"\n\n#: ru/forms.py:37\nmsgid \"Enter a postal code in the format XXXXXX.\"\nmsgstr \"\"\n\n#: ru/forms.py:50\nmsgid \"Enter a passport number in the format XXXX XXXXXX.\"\nmsgstr \"\"\n\n#: ru/forms.py:63\nmsgid \"Enter a passport number in the format XX XXXXXXX.\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:10\nmsgid \"Central Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:11\nmsgid \"South Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:12\nmsgid \"North-West Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:13\nmsgid \"Far-East Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:14\nmsgid \"Siberian Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:15\nmsgid \"Ural Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:16\nmsgid \"Privolzhsky Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:17\nmsgid \"North-Caucasian Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:21\nmsgid \"Moskva\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:22\nmsgid \"Saint-Peterburg\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:23\nmsgid \"Moskovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:24\nmsgid \"Adygeya, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:25\nmsgid \"Bashkortostan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:26\nmsgid \"Buryatia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:27\nmsgid \"Altay, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:28\nmsgid \"Dagestan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:29\nmsgid \"Ingushskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:30\nmsgid \"Kabardino-Balkarskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:31\nmsgid \"Kalmykia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:32\nmsgid \"Karachaevo-Cherkesskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:33\nmsgid \"Karelia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:34\nmsgid \"Komi, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:35\nmsgid \"Mariy Ehl, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:36\nmsgid \"Mordovia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:37\nmsgid \"Sakha, Respublika (Yakutiya)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:38\nmsgid \"Severnaya Osetia, Respublika (Alania)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:39\nmsgid \"Tatarstan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:40\nmsgid \"Tyva, Respublika (Tuva)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:41\nmsgid \"Udmurtskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:42\nmsgid \"Khakassiya, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:43\nmsgid \"Chechenskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:44\nmsgid \"Chuvashskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:45\nmsgid \"Altayskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:46\nmsgid \"Zabaykalskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:47\nmsgid \"Kamchatskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:48\nmsgid \"Krasnodarskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:49\nmsgid \"Krasnoyarskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:50\nmsgid \"Permskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:51\nmsgid \"Primorskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:52\nmsgid \"Stavropol'siyy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:53\nmsgid \"Khabarovskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:54\nmsgid \"Amurskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:55\nmsgid \"Arkhangel'skaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:56\nmsgid \"Astrakhanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:57\nmsgid \"Belgorodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:58\nmsgid \"Bryanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:59\nmsgid \"Vladimirskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:60\nmsgid \"Volgogradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:61\nmsgid \"Vologodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:62\nmsgid \"Voronezhskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:63\nmsgid \"Ivanovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:64\nmsgid \"Irkutskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:65\nmsgid \"Kaliningradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:66\nmsgid \"Kaluzhskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:67\nmsgid \"Kemerovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:68\nmsgid \"Kirovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:69\nmsgid \"Kostromskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:70\nmsgid \"Kurganskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:71\nmsgid \"Kurskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:72\nmsgid \"Leningradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:73\nmsgid \"Lipeckaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:74\nmsgid \"Magadanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:75\nmsgid \"Murmanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:76\nmsgid \"Nizhegorodskaja oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:77\nmsgid \"Novgorodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:78\nmsgid \"Novosibirskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:79\nmsgid \"Omskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:80\nmsgid \"Orenburgskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:81\nmsgid \"Orlovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:82\nmsgid \"Penzenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:83\nmsgid \"Pskovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:84\nmsgid \"Rostovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:85\nmsgid \"Rjazanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:86\nmsgid \"Samarskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:87\nmsgid \"Saratovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:88\nmsgid \"Sakhalinskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:89\nmsgid \"Sverdlovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:90\nmsgid \"Smolenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:91\nmsgid \"Tambovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:92\nmsgid \"Tverskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:93\nmsgid \"Tomskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:94\nmsgid \"Tul'skaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:95\nmsgid \"Tyumenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:96\nmsgid \"Ul'ianovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:97\nmsgid \"Chelyabinskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:98\nmsgid \"Yaroslavskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:99\nmsgid \"Evreyskaya avtonomnaja oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:100\nmsgid \"Neneckiy autonomnyy okrug\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:101\nmsgid \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:102\nmsgid \"Chukotskiy avtonomnyy okrug\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:103\nmsgid \"Yamalo-Neneckiy avtonomnyy okrug\"\nmsgstr \"\"\n\n#: se/forms.py:54\nmsgid \"Enter a valid Swedish organisation number.\"\nmsgstr \"スウェーデン組織番号を正しく入力してください。\"\n\n#: se/forms.py:111\nmsgid \"Enter a valid Swedish personal identity number.\"\nmsgstr \"スウェーデン個人識別番号を正しく入力してください。\"\n\n#: se/forms.py:112\nmsgid \"Co-ordination numbers are not allowed.\"\nmsgstr \"コーディネーション番号は許可されていません。\"\n\n#: se/forms.py:154\nmsgid \"Enter a Swedish postal code in the format XXXXX.\"\nmsgstr \"XXXXXの形式で郵便番号を入力してください。\"\n\n#: se/se_counties.py:16\nmsgid \"Stockholm\"\nmsgstr \"ストックホルム\"\n\n#: se/se_counties.py:17\nmsgid \"Västerbotten\"\nmsgstr \"ベステルボッテン\"\n\n#: se/se_counties.py:18\nmsgid \"Norrbotten\"\nmsgstr \"ノルボッテン\"\n\n#: se/se_counties.py:19\nmsgid \"Uppsala\"\nmsgstr \"ウプサラ\"\n\n#: se/se_counties.py:20\nmsgid \"Södermanland\"\nmsgstr \"セーデルマンランド\"\n\n#: se/se_counties.py:21\nmsgid \"Östergötland\"\nmsgstr \"エステルイェトランド\"\n\n#: se/se_counties.py:22\nmsgid \"Jönköping\"\nmsgstr \"ヨンショーピン\"\n\n#: se/se_counties.py:23\nmsgid \"Kronoberg\"\nmsgstr \"クルーヌベリ\"\n\n#: se/se_counties.py:24\nmsgid \"Kalmar\"\nmsgstr \"カルマル\"\n\n#: se/se_counties.py:25\nmsgid \"Gotland\"\nmsgstr \"ゴトランド\"\n\n#: se/se_counties.py:26\nmsgid \"Blekinge\"\nmsgstr \"ブレーキンゲ\"\n\n#: se/se_counties.py:27\nmsgid \"Skåne\"\nmsgstr \"スコーネ\"\n\n#: se/se_counties.py:28\nmsgid \"Halland\"\nmsgstr \"ハランド\"\n\n#: se/se_counties.py:29\nmsgid \"Västra Götaland\"\nmsgstr \"ヴィストライェータランド\"\n\n#: se/se_counties.py:30\nmsgid \"Värmland\"\nmsgstr \"ヴェルムランド\"\n\n#: se/se_counties.py:31\nmsgid \"Örebro\"\nmsgstr \"オレブロ\"\n\n#: se/se_counties.py:32\nmsgid \"Västmanland\"\nmsgstr \"ベストマンランド\"\n\n#: se/se_counties.py:33\nmsgid \"Dalarna\"\nmsgstr \"ダーラルナ\"\n\n#: se/se_counties.py:34\nmsgid \"Gävleborg\"\nmsgstr \"イェブレボリ\"\n\n#: se/se_counties.py:35\nmsgid \"Västernorrland\"\nmsgstr \"ベステルノルランド\"\n\n#: se/se_counties.py:36\nmsgid \"Jämtland\"\nmsgstr \"イェムトランド\"\n\n#: si/forms.py:25\nmsgid \"The first 7 digits of the EMSO must represent a valid past date.\"\nmsgstr \"\"\n\n#: si/forms.py:26\nmsgid \"The EMSO is not valid.\"\nmsgstr \"\"\n\n#: si/forms.py:86\nmsgid \"Enter a valid tax number in form SIXXXXXXXX\"\nmsgstr \"\"\n\n#: si/forms.py:151\nmsgid \"Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:8\nmsgid \"Banska Bystrica\"\nmsgstr \"Banska Bystrica\"\n\n#: sk/sk_districts.py:9\nmsgid \"Banska Stiavnica\"\nmsgstr \"Banska Stiavnica\"\n\n#: sk/sk_districts.py:10\nmsgid \"Bardejov\"\nmsgstr \"Bardejov\"\n\n#: sk/sk_districts.py:11\nmsgid \"Banovce nad Bebravou\"\nmsgstr \"Banovce nad Bebravou\"\n\n#: sk/sk_districts.py:12\nmsgid \"Brezno\"\nmsgstr \"Brezno\"\n\n#: sk/sk_districts.py:13\nmsgid \"Bratislava I\"\nmsgstr \"Bratislava I\"\n\n#: sk/sk_districts.py:14\nmsgid \"Bratislava II\"\nmsgstr \"Bratislava II\"\n\n#: sk/sk_districts.py:15\nmsgid \"Bratislava III\"\nmsgstr \"Bratislava III\"\n\n#: sk/sk_districts.py:16\nmsgid \"Bratislava IV\"\nmsgstr \"Bratislava IV\"\n\n#: sk/sk_districts.py:17\nmsgid \"Bratislava V\"\nmsgstr \"Bratislava V\"\n\n#: sk/sk_districts.py:18\nmsgid \"Bytca\"\nmsgstr \"Bytca\"\n\n#: sk/sk_districts.py:19\nmsgid \"Cadca\"\nmsgstr \"Cadca\"\n\n#: sk/sk_districts.py:20\nmsgid \"Detva\"\nmsgstr \"Detva\"\n\n#: sk/sk_districts.py:21\nmsgid \"Dolny Kubin\"\nmsgstr \"Dolny Kubin\"\n\n#: sk/sk_districts.py:22\nmsgid \"Dunajska Streda\"\nmsgstr \"Dunajska Streda\"\n\n#: sk/sk_districts.py:23\nmsgid \"Galanta\"\nmsgstr \"Galanta\"\n\n#: sk/sk_districts.py:24\nmsgid \"Gelnica\"\nmsgstr \"Gelnica\"\n\n#: sk/sk_districts.py:25\nmsgid \"Hlohovec\"\nmsgstr \"Hlohovec\"\n\n#: sk/sk_districts.py:26\nmsgid \"Humenne\"\nmsgstr \"Humenne\"\n\n#: sk/sk_districts.py:27\nmsgid \"Ilava\"\nmsgstr \"Ilava\"\n\n#: sk/sk_districts.py:28\nmsgid \"Kezmarok\"\nmsgstr \"Kezmarok\"\n\n#: sk/sk_districts.py:29\nmsgid \"Komarno\"\nmsgstr \"Komarno\"\n\n#: sk/sk_districts.py:30\nmsgid \"Kosice I\"\nmsgstr \"Kosice I\"\n\n#: sk/sk_districts.py:31\nmsgid \"Kosice II\"\nmsgstr \"Kosice II\"\n\n#: sk/sk_districts.py:32\nmsgid \"Kosice III\"\nmsgstr \"Kosice III\"\n\n#: sk/sk_districts.py:33\nmsgid \"Kosice IV\"\nmsgstr \"Kosice IV\"\n\n#: sk/sk_districts.py:34\nmsgid \"Kosice - okolie\"\nmsgstr \"Kosice - okolie\"\n\n#: sk/sk_districts.py:35\nmsgid \"Krupina\"\nmsgstr \"Krupina\"\n\n#: sk/sk_districts.py:36\nmsgid \"Kysucke Nove Mesto\"\nmsgstr \"Kysucke Nove Mesto\"\n\n#: sk/sk_districts.py:37\nmsgid \"Levice\"\nmsgstr \"Levice\"\n\n#: sk/sk_districts.py:38\nmsgid \"Levoca\"\nmsgstr \"Levoca\"\n\n#: sk/sk_districts.py:39\nmsgid \"Liptovsky Mikulas\"\nmsgstr \"Liptovsky Mikulas\"\n\n#: sk/sk_districts.py:40\nmsgid \"Lucenec\"\nmsgstr \"Lucenec\"\n\n#: sk/sk_districts.py:41\nmsgid \"Malacky\"\nmsgstr \"Malacky\"\n\n#: sk/sk_districts.py:42\nmsgid \"Martin\"\nmsgstr \"Martin\"\n\n#: sk/sk_districts.py:43\nmsgid \"Medzilaborce\"\nmsgstr \"Medzilaborce\"\n\n#: sk/sk_districts.py:44\nmsgid \"Michalovce\"\nmsgstr \"Michalovce\"\n\n#: sk/sk_districts.py:45\nmsgid \"Myjava\"\nmsgstr \"Myjava\"\n\n#: sk/sk_districts.py:46\nmsgid \"Namestovo\"\nmsgstr \"Namestovo\"\n\n#: sk/sk_districts.py:47\nmsgid \"Nitra\"\nmsgstr \"Nitra\"\n\n#: sk/sk_districts.py:48\nmsgid \"Nove Mesto nad Vahom\"\nmsgstr \"Nove Mesto nad Vahom\"\n\n#: sk/sk_districts.py:49\nmsgid \"Nove Zamky\"\nmsgstr \"Nove Zamky\"\n\n#: sk/sk_districts.py:50\nmsgid \"Partizanske\"\nmsgstr \"Partizanske\"\n\n#: sk/sk_districts.py:51\nmsgid \"Pezinok\"\nmsgstr \"Pezinok\"\n\n#: sk/sk_districts.py:52\nmsgid \"Piestany\"\nmsgstr \"Piestany\"\n\n#: sk/sk_districts.py:53\nmsgid \"Poltar\"\nmsgstr \"Poltar\"\n\n#: sk/sk_districts.py:54\nmsgid \"Poprad\"\nmsgstr \"Poprad\"\n\n#: sk/sk_districts.py:55\nmsgid \"Povazska Bystrica\"\nmsgstr \"Povazska Bystrica\"\n\n#: sk/sk_districts.py:56\nmsgid \"Presov\"\nmsgstr \"Presov\"\n\n#: sk/sk_districts.py:57\nmsgid \"Prievidza\"\nmsgstr \"Prievidza\"\n\n#: sk/sk_districts.py:58\nmsgid \"Puchov\"\nmsgstr \"Puchov\"\n\n#: sk/sk_districts.py:59\nmsgid \"Revuca\"\nmsgstr \"Revuca\"\n\n#: sk/sk_districts.py:60\nmsgid \"Rimavska Sobota\"\nmsgstr \"Rimavska Sobota\"\n\n#: sk/sk_districts.py:61\nmsgid \"Roznava\"\nmsgstr \"Roznava\"\n\n#: sk/sk_districts.py:62\nmsgid \"Ruzomberok\"\nmsgstr \"Ruzomberok\"\n\n#: sk/sk_districts.py:63\nmsgid \"Sabinov\"\nmsgstr \"Sabinov\"\n\n#: sk/sk_districts.py:64\nmsgid \"Senec\"\nmsgstr \"Senec\"\n\n#: sk/sk_districts.py:65\nmsgid \"Senica\"\nmsgstr \"Senica\"\n\n#: sk/sk_districts.py:66\nmsgid \"Skalica\"\nmsgstr \"Skalica\"\n\n#: sk/sk_districts.py:67\nmsgid \"Snina\"\nmsgstr \"Snina\"\n\n#: sk/sk_districts.py:68\nmsgid \"Sobrance\"\nmsgstr \"Sobrance\"\n\n#: sk/sk_districts.py:69\nmsgid \"Spisska Nova Ves\"\nmsgstr \"Spisska Nova Ves\"\n\n#: sk/sk_districts.py:70\nmsgid \"Stara Lubovna\"\nmsgstr \"Stara Lubovna\"\n\n#: sk/sk_districts.py:71\nmsgid \"Stropkov\"\nmsgstr \"Stropkov\"\n\n#: sk/sk_districts.py:72\nmsgid \"Svidnik\"\nmsgstr \"Svidnik\"\n\n#: sk/sk_districts.py:73\nmsgid \"Sala\"\nmsgstr \"Sala\"\n\n#: sk/sk_districts.py:74\nmsgid \"Topolcany\"\nmsgstr \"Topolcany\"\n\n#: sk/sk_districts.py:75\nmsgid \"Trebisov\"\nmsgstr \"Trebisov\"\n\n#: sk/sk_districts.py:76\nmsgid \"Trencin\"\nmsgstr \"Trencin\"\n\n#: sk/sk_districts.py:77\nmsgid \"Trnava\"\nmsgstr \"Trnava\"\n\n#: sk/sk_districts.py:78\nmsgid \"Turcianske Teplice\"\nmsgstr \"Turcianske Teplice\"\n\n#: sk/sk_districts.py:79\nmsgid \"Tvrdosin\"\nmsgstr \"Tvrdosin\"\n\n#: sk/sk_districts.py:80\nmsgid \"Velky Krtis\"\nmsgstr \"Velky Krtis\"\n\n#: sk/sk_districts.py:81\nmsgid \"Vranov nad Toplou\"\nmsgstr \"Vranov nad Toplou\"\n\n#: sk/sk_districts.py:82\nmsgid \"Zlate Moravce\"\nmsgstr \"Zlate Moravce\"\n\n#: sk/sk_districts.py:83\nmsgid \"Zvolen\"\nmsgstr \"Zvolen\"\n\n#: sk/sk_districts.py:84\nmsgid \"Zarnovica\"\nmsgstr \"Zarnovica\"\n\n#: sk/sk_districts.py:85\nmsgid \"Ziar nad Hronom\"\nmsgstr \"Ziar nad Hronom\"\n\n#: sk/sk_districts.py:86\nmsgid \"Zilina\"\nmsgstr \"Zilina\"\n\n#: sk/sk_regions.py:8\nmsgid \"Banska Bystrica region\"\nmsgstr \"Banska Bystrica region\"\n\n#: sk/sk_regions.py:9\nmsgid \"Bratislava region\"\nmsgstr \"Bratislava region\"\n\n#: sk/sk_regions.py:10\nmsgid \"Kosice region\"\nmsgstr \"Kosice region\"\n\n#: sk/sk_regions.py:11\nmsgid \"Nitra region\"\nmsgstr \"Nitra region\"\n\n#: sk/sk_regions.py:12\nmsgid \"Presov region\"\nmsgstr \"Presov region\"\n\n#: sk/sk_regions.py:13\nmsgid \"Trencin region\"\nmsgstr \"Trencin region\"\n\n#: sk/sk_regions.py:14\nmsgid \"Trnava region\"\nmsgstr \"Trnava region\"\n\n#: sk/sk_regions.py:15\nmsgid \"Zilina region\"\nmsgstr \"Zilina region\"\n\n#: tr/forms.py:21\nmsgid \"Enter a postal code in the format XXXXX.\"\nmsgstr \"郵便番号を XXXXX 形式で入力してください。\"\n\n#: tr/forms.py:42\nmsgid \"Phone numbers must be in 0XXX XXX XXXX format.\"\nmsgstr \"電話番号は 0XXX XXX XXXX 形式でなければいけません。\"\n\n#: tr/forms.py:69\nmsgid \"Enter a valid Turkish Identification number.\"\nmsgstr \"トルコ国民番号を入力してください。\"\n\n#: tr/forms.py:70\nmsgid \"Turkish Identification number must be 11 digits.\"\nmsgstr \"トルコ国民番号は11桁でなければいけません。\"\n\n#: us/forms.py:21\nmsgid \"Enter a zip code in the format XXXXX or XXXXX-XXXX.\"\nmsgstr \"XXXXXか、XXXXX-XXXXの形式で郵便番号を入力してください。\"\n\n#: us/forms.py:59\nmsgid \"Enter a valid U.S. Social Security number in XXX-XX-XXXX format.\"\nmsgstr \"XXX-XX-XXXX の形式で、米国社会保障番号を入力して下さい。\"\n\n#: us/forms.py:92\nmsgid \"Enter a U.S. state or territory.\"\nmsgstr \"合衆国の州か地域を入力してください。\"\n\n#: us/models.py:8\nmsgid \"U.S. state (two uppercase letters)\"\nmsgstr \"アメリカの州 (大文字二文字で)\"\n\n#: us/models.py:17\nmsgid \"U.S. postal code (two uppercase letters)\"\nmsgstr \"米国郵便番号(大文字で2文字)\"\n\n#: us/models.py:26\nmsgid \"Phone number\"\nmsgstr \"電話番号\"\n\n#: uy/forms.py:29\nmsgid \"Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.\"\nmsgstr \"X.XXX.XXX-X,XXXXXXX-X か XXXXXXXX の形式でCI番号を入力して下さい。\"\n\n#: uy/forms.py:31\nmsgid \"Enter a valid CI number.\"\nmsgstr \"CI番号を正しく入力してください。\"\n\n#: za/forms.py:22\nmsgid \"Enter a valid South African ID number\"\nmsgstr \"南アフリカID番号を正しく入力してください。\"\n\n#: za/forms.py:56\nmsgid \"Enter a valid South African postal code\"\nmsgstr \"南アフリカ郵便番号を正しく入力してください。\"\n\n#: za/za_provinces.py:4\nmsgid \"Eastern Cape\"\nmsgstr \"Eastern Cape\"\n\n#: za/za_provinces.py:5\nmsgid \"Free State\"\nmsgstr \"Free State\"\n\n#: za/za_provinces.py:6\nmsgid \"Gauteng\"\nmsgstr \"Gauteng\"\n\n#: za/za_provinces.py:7\nmsgid \"KwaZulu-Natal\"\nmsgstr \"KwaZulu-Natal\"\n\n#: za/za_provinces.py:8\nmsgid \"Limpopo\"\nmsgstr \"Limpopo\"\n\n#: za/za_provinces.py:9\nmsgid \"Mpumalanga\"\nmsgstr \"Mpumalanga\"\n\n#: za/za_provinces.py:10\nmsgid \"Northern Cape\"\nmsgstr \"Northern Cape\"\n\n#: za/za_provinces.py:11\nmsgid \"North West\"\nmsgstr \"North West\"\n\n#: za/za_provinces.py:12\nmsgid \"Western Cape\"\nmsgstr \"Western Cape\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/locale/ka/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# avsd05 <avsd05@gmail.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-10-17 09:16+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Georgian (http://www.transifex.com/projects/p/django/language/\"\n\"ka/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ka\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: ar/forms.py:30\nmsgid \"Enter a postal code in the format NNNN or ANNNNAAA.\"\nmsgstr \"შეიყვანეთ საფოსტო კოდი ერთ-ერთ ფორმატში: NNNN ან ANNNNAAA.\"\n\n#: ar/forms.py:52 br/forms.py:95 br/forms.py:134 pe/forms.py:27 pe/forms.py:55\nmsgid \"This field requires only numbers.\"\nmsgstr \"ამ ველში შეიძლება იყოს მხოლოდ ციფრები.\"\n\n#: ar/forms.py:53\nmsgid \"This field requires 7 or 8 digits.\"\nmsgstr \"ამ ველში შეიძლება იყოს 7 ან 8 თანრიგი.\"\n\n#: ar/forms.py:82\nmsgid \"Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.\"\nmsgstr \"\"\n\"შეიყვანეთ დასაშვები CUIT ერთ-ერთ ფორმატში: XX-XXXXXXXX-X ან XXXXXXXXXXXX.\"\n\n#: ar/forms.py:83\nmsgid \"Invalid CUIT.\"\nmsgstr \"არასწორი CUIT.\"\n\n#: ar/forms.py:84\nmsgid \"Invalid legal type. Type must be 27, 20, 23 or 30.\"\nmsgstr \"\"\n\n#: at/at_states.py:5\nmsgid \"Burgenland\"\nmsgstr \"ბურგლენდი\"\n\n#: at/at_states.py:6\nmsgid \"Carinthia\"\nmsgstr \"კარინტია\"\n\n#: at/at_states.py:7\nmsgid \"Lower Austria\"\nmsgstr \"ქვემო ავსტრია\"\n\n#: at/at_states.py:8\nmsgid \"Upper Austria\"\nmsgstr \"ზემო ავსტრია\"\n\n#: at/at_states.py:9\nmsgid \"Salzburg\"\nmsgstr \"ზალცბურგი\"\n\n#: at/at_states.py:10\nmsgid \"Styria\"\nmsgstr \"სტირია\"\n\n#: at/at_states.py:11\nmsgid \"Tyrol\"\nmsgstr \"ტიროლი\"\n\n#: at/at_states.py:12\nmsgid \"Vorarlberg\"\nmsgstr \"ფორარლბერგი\"\n\n#: at/at_states.py:13\nmsgid \"Vienna\"\nmsgstr \"ვენა\"\n\n#: at/forms.py:22 ch/forms.py:22 no/forms.py:19\nmsgid \"Enter a zip code in the format XXXX.\"\nmsgstr \"შეიყვანეთ zip-კოდი ფორმატში XXXX.\"\n\n#: at/forms.py:50\nmsgid \"Enter a valid Austrian Social Security Number in XXXX XXXXXX format.\"\nmsgstr \"შეიყვანეთ კანადაში დასაშვები პირადი ნომერი ფორმატში: XXX-XXX-XXX\"\n\n#: au/forms.py:26\nmsgid \"Enter a 4 digit postcode.\"\nmsgstr \"\"\n\n#: au/models.py:9\nmsgid \"Australian State\"\nmsgstr \"\"\n\n#: au/models.py:19\nmsgid \"Australian Postcode\"\nmsgstr \"\"\n\n#: au/models.py:33\nmsgid \"Australian Phone number\"\nmsgstr \"\"\n\n#: be/be_provinces.py:5\nmsgid \"Antwerp\"\nmsgstr \"ანტვერპი\"\n\n#: be/be_provinces.py:6\nmsgid \"Brussels\"\nmsgstr \"ბრიუსელი\"\n\n#: be/be_provinces.py:7\nmsgid \"East Flanders\"\nmsgstr \"აღმ. ფლანდრები\"\n\n#: be/be_provinces.py:8\nmsgid \"Flemish Brabant\"\nmsgstr \"ფლამანდიური ბრაბანტი\"\n\n#: be/be_provinces.py:9\nmsgid \"Hainaut\"\nmsgstr \"ჰაინაუტი\"\n\n#: be/be_provinces.py:10\nmsgid \"Liege\"\nmsgstr \"ლიჯი\"\n\n#: be/be_provinces.py:11 nl/nl_provinces.py:9\nmsgid \"Limburg\"\nmsgstr \"ლიმბურგი\"\n\n#: be/be_provinces.py:12\nmsgid \"Luxembourg\"\nmsgstr \"ლუქსემბურგი\"\n\n#: be/be_provinces.py:13\nmsgid \"Namur\"\nmsgstr \"ნამური\"\n\n#: be/be_provinces.py:14\nmsgid \"Walloon Brabant\"\nmsgstr \"ვალონიური ბრაბანტი\"\n\n#: be/be_provinces.py:15\nmsgid \"West Flanders\"\nmsgstr \"დას. ფლანდრები\"\n\n#: be/be_regions.py:5\nmsgid \"Brussels Capital Region\"\nmsgstr \"ბრიუსელი-დედაქალაქი\"\n\n#: be/be_regions.py:6\nmsgid \"Flemish Region\"\nmsgstr \"ფლემიური რაიონი\"\n\n#: be/be_regions.py:7\nmsgid \"Wallonia\"\nmsgstr \"ვალონია\"\n\n#: be/forms.py:25\nmsgid \"Enter a valid postal code in the range and format 1XXX - 9XXX.\"\nmsgstr \"შეიყვანეთ სწორი საფოსტო კოდი ფორმატში 1XXX - 9XXX.\"\n\n#: be/forms.py:48\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\nmsgstr \"\"\n\"შეიყვანეთ ტელეფონის ნომერი დასაშვებ ფორმატში: 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\n\n#: br/forms.py:22\nmsgid \"Enter a zip code in the format XXXXX-XXX.\"\nmsgstr \"შეიყვანეთ zip-კოდი ფორმატში: XXXXX-XXX.\"\n\n#: br/forms.py:31\nmsgid \"Phone numbers must be in XX-XXXX-XXXX format.\"\nmsgstr \"ტელეფონის ნომრები უნდა იყოს XX-XXXX-XXXX ფორმატში.\"\n\n#: br/forms.py:58\nmsgid \"\"\n\"Select a valid brazilian state. That state is not one of the available \"\n\"states.\"\nmsgstr \"\"\n\"შეიყვანეთ დასაშვები ბრაზილიური შტატი. მოცემული შტატი არ არის დასაშვები.\"\n\n#: br/forms.py:93\nmsgid \"Invalid CPF number.\"\nmsgstr \"არასწორი CPF ნომერი.\"\n\n#: br/forms.py:94\nmsgid \"This field requires at most 11 digits or 14 characters.\"\nmsgstr \"ეს ველი უნდა შეიცავდეს 11 ციფრს ან 14 სიმბოლოს, ან ნაკლებს.\"\n\n#: br/forms.py:133\nmsgid \"Invalid CNPJ number.\"\nmsgstr \"არასწორი CNPJ ნომერი.\"\n\n#: br/forms.py:135\nmsgid \"This field requires at least 14 digits\"\nmsgstr \"ეს ველი მოითხოვს არაუმეტეს 14 თანრიგისა\"\n\n#: ca/forms.py:29\nmsgid \"Enter a postal code in the format XXX XXX.\"\nmsgstr \"შეიყვანეთ საფოსტო კოდი ფორმატში: XXX XXX.\"\n\n#: ca/forms.py:47 us/forms.py:30\nmsgid \"Phone numbers must be in XXX-XXX-XXXX format.\"\nmsgstr \"\"\n\n#: ca/forms.py:69\nmsgid \"Enter a Canadian province or territory.\"\nmsgstr \"\"\n\n#: ca/forms.py:110\nmsgid \"Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.\"\nmsgstr \"\"\n\"შეიყვანეთ კანადაში დასაშვები სოციალური დაზღვევის ნომერი ფორმატში: XXX-XXX-XXX\"\n\n#: ch/ch_states.py:5\nmsgid \"Aargau\"\nmsgstr \"აარგაუ\"\n\n#: ch/ch_states.py:6\nmsgid \"Appenzell Innerrhoden\"\nmsgstr \"აპენცელ ინერჰოდენ\"\n\n#: ch/ch_states.py:7\nmsgid \"Appenzell Ausserrhoden\"\nmsgstr \"აპენცელ აუსერჰოდენ\"\n\n#: ch/ch_states.py:8\nmsgid \"Basel-Stadt\"\nmsgstr \"ბაზელ-შტადტი\"\n\n#: ch/ch_states.py:9\nmsgid \"Basel-Land\"\nmsgstr \"ბაზელ-ლანდი\"\n\n#: ch/ch_states.py:10\nmsgid \"Berne\"\nmsgstr \"ბერნი\"\n\n#: ch/ch_states.py:11\nmsgid \"Fribourg\"\nmsgstr \"ფრაიბურგი\"\n\n#: ch/ch_states.py:12\nmsgid \"Geneva\"\nmsgstr \"ჟენევა\"\n\n#: ch/ch_states.py:13\nmsgid \"Glarus\"\nmsgstr \"გლარუსი\"\n\n#: ch/ch_states.py:14\nmsgid \"Graubuenden\"\nmsgstr \"გრაუბუენდენ\"\n\n#: ch/ch_states.py:15\nmsgid \"Jura\"\nmsgstr \"ჯურა\"\n\n#: ch/ch_states.py:16\nmsgid \"Lucerne\"\nmsgstr \"ლეცერნი\"\n\n#: ch/ch_states.py:17\nmsgid \"Neuchatel\"\nmsgstr \"ნოიხატლი\"\n\n#: ch/ch_states.py:18\nmsgid \"Nidwalden\"\nmsgstr \"ნიდვალდენი\"\n\n#: ch/ch_states.py:19\nmsgid \"Obwalden\"\nmsgstr \"ობვალდენი\"\n\n#: ch/ch_states.py:20\nmsgid \"Schaffhausen\"\nmsgstr \"შაფჰაუზენი\"\n\n#: ch/ch_states.py:21\nmsgid \"Schwyz\"\nmsgstr \"შვიცი\"\n\n#: ch/ch_states.py:22\nmsgid \"Solothurn\"\nmsgstr \"სოლოთურნი\"\n\n#: ch/ch_states.py:23\nmsgid \"St. Gallen\"\nmsgstr \"სენტ-გალენი\"\n\n#: ch/ch_states.py:24\nmsgid \"Thurgau\"\nmsgstr \"თურგაუ\"\n\n#: ch/ch_states.py:25\nmsgid \"Ticino\"\nmsgstr \"ტიჯინო\"\n\n#: ch/ch_states.py:26\nmsgid \"Uri\"\nmsgstr \"ური\"\n\n#: ch/ch_states.py:27\nmsgid \"Valais\"\nmsgstr \"ვალაისი\"\n\n#: ch/ch_states.py:28\nmsgid \"Vaud\"\nmsgstr \"ვაუდი\"\n\n#: ch/ch_states.py:29\nmsgid \"Zug\"\nmsgstr \"ცუგი\"\n\n#: ch/ch_states.py:30\nmsgid \"Zurich\"\nmsgstr \"ციურიხი\"\n\n#: ch/forms.py:37\nmsgid \"Phone numbers must be in 0XX XXX XX XX format.\"\nmsgstr \"\"\n\n#: ch/forms.py:68\nmsgid \"\"\n\"Enter a valid Swiss identity or passport card number in X1234567<0 or \"\n\"1234567890 format.\"\nmsgstr \"\"\n\"შეიყვანეთ შვეიცარიაში დაშვებული პირადი ან პასპორტის ნომერი, ფორმატებში: \"\n\"X1234567<0 ან 1234567890.\"\n\n#: cl/forms.py:32\nmsgid \"Enter a valid Chilean RUT.\"\nmsgstr \"შეიყვანეთ დასაშვები ჩილიური RUT.\"\n\n#: cl/forms.py:33\nmsgid \"Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.\"\nmsgstr \"შეიყვანეთ დასაშვები ჩილიური RUT. ფორმატი: XX.XXX.XXX-X.\"\n\n#: cl/forms.py:34\nmsgid \"The Chilean RUT is not valid.\"\nmsgstr \"ჩილიური RUT არასწორია.\"\n\n#: cn/forms.py:84\nmsgid \"Enter a post code in the format XXXXXX.\"\nmsgstr \"\"\n\n#: cn/forms.py:105\nmsgid \"ID Card Number consists of 15 or 18 digits.\"\nmsgstr \"\"\n\n#: cn/forms.py:106\nmsgid \"Invalid ID Card Number: Wrong checksum\"\nmsgstr \"\"\n\n#: cn/forms.py:107\nmsgid \"Invalid ID Card Number: Wrong birthdate\"\nmsgstr \"\"\n\n#: cn/forms.py:108\nmsgid \"Invalid ID Card Number: Wrong location code\"\nmsgstr \"\"\n\n#: cn/forms.py:193\nmsgid \"Enter a valid phone number.\"\nmsgstr \"\"\n\n#: cn/forms.py:210\nmsgid \"Enter a valid cell number.\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:8\nmsgid \"Prague\"\nmsgstr \"პრაღა\"\n\n#: cz/cz_regions.py:9\nmsgid \"Central Bohemian Region\"\nmsgstr \"ცენტრალური ბოჰემიის რაიონი\"\n\n#: cz/cz_regions.py:10\nmsgid \"South Bohemian Region\"\nmsgstr \"სამხრეთ ბოჰემიის რაიონი\"\n\n#: cz/cz_regions.py:11\nmsgid \"Pilsen Region\"\nmsgstr \"პილსენის რაიონი\"\n\n#: cz/cz_regions.py:12\nmsgid \"Carlsbad Region\"\nmsgstr \"კარლსბადის რაიონი\"\n\n#: cz/cz_regions.py:13\nmsgid \"Usti Region\"\nmsgstr \"იუსტის რაიონი\"\n\n#: cz/cz_regions.py:14\nmsgid \"Liberec Region\"\nmsgstr \"ლიბერეცის რაიონი\"\n\n#: cz/cz_regions.py:15\nmsgid \"Hradec Region\"\nmsgstr \"ჰრადეცის რაიონი\"\n\n#: cz/cz_regions.py:16\nmsgid \"Pardubice Region\"\nmsgstr \"პარდუბიცეს რაიონი\"\n\n#: cz/cz_regions.py:17\nmsgid \"Vysocina Region\"\nmsgstr \"ვისოჩინას რაიონი\"\n\n#: cz/cz_regions.py:18\nmsgid \"South Moravian Region\"\nmsgstr \"სამხრეთ მორავიის რაიონი\"\n\n#: cz/cz_regions.py:19\nmsgid \"Olomouc Region\"\nmsgstr \"ოლომუცის რაიონი\"\n\n#: cz/cz_regions.py:20\nmsgid \"Zlin Region\"\nmsgstr \"ზლინის რაიონი\"\n\n#: cz/cz_regions.py:21\nmsgid \"Moravian-Silesian Region\"\nmsgstr \"მორავია-სილესიის რაიონ\"\n\n#: cz/forms.py:32 sk/forms.py:33\nmsgid \"Enter a postal code in the format XXXXX or XXX XX.\"\nmsgstr \"შეიყვანეთ საფოსტო კოდი ფორმატში XXXXX or XXX XX.\"\n\n#: cz/forms.py:52\nmsgid \"Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.\"\nmsgstr \"\"\n\n#: cz/forms.py:53\nmsgid \"Enter a valid birth number.\"\nmsgstr \"\"\n\n#: cz/forms.py:102\nmsgid \"Enter a valid IC number.\"\nmsgstr \"\"\n\n#: de/de_states.py:5\nmsgid \"Baden-Wuerttemberg\"\nmsgstr \"ბადენ-ვურტემბერგი\"\n\n#: de/de_states.py:6\nmsgid \"Bavaria\"\nmsgstr \"ბავარია\"\n\n#: de/de_states.py:7\nmsgid \"Berlin\"\nmsgstr \"ბერლინი\"\n\n#: de/de_states.py:8\nmsgid \"Brandenburg\"\nmsgstr \"ბრანდენბურგი\"\n\n#: de/de_states.py:9\nmsgid \"Bremen\"\nmsgstr \"ბრემენი\"\n\n#: de/de_states.py:10\nmsgid \"Hamburg\"\nmsgstr \"ჰამბურგი\"\n\n#: de/de_states.py:11\nmsgid \"Hessen\"\nmsgstr \"ჰესენი\"\n\n#: de/de_states.py:12\nmsgid \"Mecklenburg-Western Pomerania\"\nmsgstr \"მეკლენბურგ-ვესტერნ პომერანია\"\n\n#: de/de_states.py:13\nmsgid \"Lower Saxony\"\nmsgstr \"ქვემო საქსონია\"\n\n#: de/de_states.py:14\nmsgid \"North Rhine-Westphalia\"\nmsgstr \"ჩრდილოეთ რაინ-ვესტფალია\"\n\n#: de/de_states.py:15\nmsgid \"Rhineland-Palatinate\"\nmsgstr \"რაინლანდ-პალატინატა\"\n\n#: de/de_states.py:16\nmsgid \"Saarland\"\nmsgstr \"ზაარლანდი\"\n\n#: de/de_states.py:17\nmsgid \"Saxony\"\nmsgstr \"საქსონია\"\n\n#: de/de_states.py:18\nmsgid \"Saxony-Anhalt\"\nmsgstr \"საქსონია-ანჰალტ\"\n\n#: de/de_states.py:19\nmsgid \"Schleswig-Holstein\"\nmsgstr \"შლეზვიგ-ჰოლშტაინი\"\n\n#: de/de_states.py:20\nmsgid \"Thuringia\"\nmsgstr \"თურინგია\"\n\n#: de/forms.py:20 fi/forms.py:18 fr/forms.py:20\nmsgid \"Enter a zip code in the format XXXXX.\"\nmsgstr \"შეიყვანეთ zip-კოდი ფორმატში XXXXX.\"\n\n#: de/forms.py:46\nmsgid \"\"\n\"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"format.\"\nmsgstr \"\"\n\"შეიყვანეთ გერმანიაში დასაშვები პირადობის მოწმობის ნომერი, ფორმატში: \"\n\"XXXXXXXXXXX-XXXXXXX-XXXXXXX-X.\"\n\n#: es/es_provinces.py:5\nmsgid \"Araba\"\nmsgstr \"\"\n\n#: es/es_provinces.py:6\nmsgid \"Albacete\"\nmsgstr \"ალბასეტე\"\n\n#: es/es_provinces.py:7\nmsgid \"Alacant\"\nmsgstr \"ალასანტი\"\n\n#: es/es_provinces.py:8\nmsgid \"Almeria\"\nmsgstr \"ალმერია\"\n\n#: es/es_provinces.py:9\nmsgid \"Avila\"\nmsgstr \"ავილა\"\n\n#: es/es_provinces.py:10\nmsgid \"Badajoz\"\nmsgstr \"ბადაჰოსი\"\n\n#: es/es_provinces.py:11\nmsgid \"Illes Balears\"\nmsgstr \"ილეს ბალეარს\"\n\n#: es/es_provinces.py:12\nmsgid \"Barcelona\"\nmsgstr \"ბარსელონა\"\n\n#: es/es_provinces.py:13\nmsgid \"Burgos\"\nmsgstr \"ბურგოსი\"\n\n#: es/es_provinces.py:14\nmsgid \"Caceres\"\nmsgstr \"კასერესი\"\n\n#: es/es_provinces.py:15\nmsgid \"Cadiz\"\nmsgstr \"კადიზი\"\n\n#: es/es_provinces.py:16\nmsgid \"Castello\"\nmsgstr \"კასტელო\"\n\n#: es/es_provinces.py:17\nmsgid \"Ciudad Real\"\nmsgstr \"სიუდად რეალი\"\n\n#: es/es_provinces.py:18\nmsgid \"Cordoba\"\nmsgstr \"კორდობა\"\n\n#: es/es_provinces.py:19\nmsgid \"A Coruna\"\nmsgstr \"ა კორუნია\"\n\n#: es/es_provinces.py:20\nmsgid \"Cuenca\"\nmsgstr \"კუენსა\"\n\n#: es/es_provinces.py:21\nmsgid \"Girona\"\nmsgstr \"გირონა\"\n\n#: es/es_provinces.py:22\nmsgid \"Granada\"\nmsgstr \"გრანადა\"\n\n#: es/es_provinces.py:23\nmsgid \"Guadalajara\"\nmsgstr \"გუადალაჯარა\"\n\n#: es/es_provinces.py:24\nmsgid \"Guipuzkoa\"\nmsgstr \"გუიპუზკოა\"\n\n#: es/es_provinces.py:25\nmsgid \"Huelva\"\nmsgstr \"ჰუელვა\"\n\n#: es/es_provinces.py:26\nmsgid \"Huesca\"\nmsgstr \"ჰუესკა\"\n\n#: es/es_provinces.py:27\nmsgid \"Jaen\"\nmsgstr \"ჯეინი\"\n\n#: es/es_provinces.py:28\nmsgid \"Leon\"\nmsgstr \"ლეონი\"\n\n#: es/es_provinces.py:29\nmsgid \"Lleida\"\nmsgstr \"ლეიდა\"\n\n#: es/es_provinces.py:30 es/es_regions.py:17\nmsgid \"La Rioja\"\nmsgstr \"ლა რიოხა\"\n\n#: es/es_provinces.py:31\nmsgid \"Lugo\"\nmsgstr \"ლუგო\"\n\n#: es/es_provinces.py:32 es/es_regions.py:18\nmsgid \"Madrid\"\nmsgstr \"მადრიდი\"\n\n#: es/es_provinces.py:33\nmsgid \"Malaga\"\nmsgstr \"მალაგა\"\n\n#: es/es_provinces.py:34\nmsgid \"Murcia\"\nmsgstr \"მურსია\"\n\n#: es/es_provinces.py:35\nmsgid \"Navarre\"\nmsgstr \"ნავარე\"\n\n#: es/es_provinces.py:36\nmsgid \"Ourense\"\nmsgstr \"ოურენსი\"\n\n#: es/es_provinces.py:37\nmsgid \"Asturias\"\nmsgstr \"ასტურია\"\n\n#: es/es_provinces.py:38\nmsgid \"Palencia\"\nmsgstr \"პალენსია\"\n\n#: es/es_provinces.py:39\nmsgid \"Las Palmas\"\nmsgstr \"ლას პალმას\"\n\n#: es/es_provinces.py:40\nmsgid \"Pontevedra\"\nmsgstr \"პონტევედრა\"\n\n#: es/es_provinces.py:41\nmsgid \"Salamanca\"\nmsgstr \"სალამანსა\"\n\n#: es/es_provinces.py:42\nmsgid \"Santa Cruz de Tenerife\"\nmsgstr \"სანტა კრუზ დე ტენერიფე\"\n\n#: es/es_provinces.py:43 es/es_regions.py:11\nmsgid \"Cantabria\"\nmsgstr \"კანტაბრია\"\n\n#: es/es_provinces.py:44\nmsgid \"Segovia\"\nmsgstr \"სეგოვია\"\n\n#: es/es_provinces.py:45\nmsgid \"Seville\"\nmsgstr \"სევილი\"\n\n#: es/es_provinces.py:46\nmsgid \"Soria\"\nmsgstr \"სორია\"\n\n#: es/es_provinces.py:47\nmsgid \"Tarragona\"\nmsgstr \"ტარაგონა\"\n\n#: es/es_provinces.py:48\nmsgid \"Teruel\"\nmsgstr \"ტერუელი\"\n\n#: es/es_provinces.py:49\nmsgid \"Toledo\"\nmsgstr \"ტოლედო\"\n\n#: es/es_provinces.py:50\nmsgid \"Valencia\"\nmsgstr \"ვალენსია\"\n\n#: es/es_provinces.py:51\nmsgid \"Valladolid\"\nmsgstr \"ვალადოლიდი\"\n\n#: es/es_provinces.py:52\nmsgid \"Bizkaia\"\nmsgstr \"ბიზკაია\"\n\n#: es/es_provinces.py:53\nmsgid \"Zamora\"\nmsgstr \"სამორა\"\n\n#: es/es_provinces.py:54\nmsgid \"Zaragoza\"\nmsgstr \"სარაგოსა\"\n\n#: es/es_provinces.py:55\nmsgid \"Ceuta\"\nmsgstr \"კეუტა\"\n\n#: es/es_provinces.py:56\nmsgid \"Melilla\"\nmsgstr \"მელილა\"\n\n#: es/es_regions.py:5\nmsgid \"Andalusia\"\nmsgstr \"ანდალუზია\"\n\n#: es/es_regions.py:6\nmsgid \"Aragon\"\nmsgstr \"არაგონ\"\n\n#: es/es_regions.py:7\nmsgid \"Principality of Asturias\"\nmsgstr \"ასტურიის პრინციპატი\"\n\n#: es/es_regions.py:8\nmsgid \"Balearic Islands\"\nmsgstr \"ბალეარის კუნძულები\"\n\n#: es/es_regions.py:9\nmsgid \"Basque Country\"\nmsgstr \"ბასკების ქვეყანა\"\n\n#: es/es_regions.py:10\nmsgid \"Canary Islands\"\nmsgstr \"კანარის კუნძuლები\"\n\n#: es/es_regions.py:12\nmsgid \"Castile-La Mancha\"\nmsgstr \"კასტილია ლა მანჩა\"\n\n#: es/es_regions.py:13\nmsgid \"Castile and Leon\"\nmsgstr \"კასტილია და ლეონი\"\n\n#: es/es_regions.py:14\nmsgid \"Catalonia\"\nmsgstr \"კატალონია\"\n\n#: es/es_regions.py:15\nmsgid \"Extremadura\"\nmsgstr \"ექსტრემადურა\"\n\n#: es/es_regions.py:16\nmsgid \"Galicia\"\nmsgstr \"გალიცია\"\n\n#: es/es_regions.py:19\nmsgid \"Region of Murcia\"\nmsgstr \"მურსიის რეგიონი\"\n\n#: es/es_regions.py:20\nmsgid \"Foral Community of Navarre\"\nmsgstr \"ნავარის ფორალური თემი\"\n\n#: es/es_regions.py:21\nmsgid \"Valencian Community\"\nmsgstr \"ვალენსიის თემი\"\n\n#: es/forms.py:26\nmsgid \"Enter a valid postal code in the range and format 01XXX - 52XXX.\"\nmsgstr \"\"\n\"შეიყვანეთ სწორი საფოსტო კოდი შემდეგ ინტერვალში და ფორმატში: 01XXX - 52XXX.\"\n\n#: es/forms.py:46\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or \"\n\"9XXXXXXXX.\"\nmsgstr \"\"\n\"შეიყვანეთ სწორი სატელეფონო ნომერი ერთ-ერთ ფორმატში: 6XXXXXXXX, 8XXXXXXXX ან \"\n\"9XXXXXXXX.\"\n\n#: es/forms.py:73\nmsgid \"Please enter a valid NIF, NIE, or CIF.\"\nmsgstr \"გთხოვთ, შეიყვანოთ სწორი NIF, NIE, ან CIF.\"\n\n#: es/forms.py:74\nmsgid \"Please enter a valid NIF or NIE.\"\nmsgstr \"გთხოვთ, შეიყვანოთ სწორი NIF ან NIE.\"\n\n#: es/forms.py:75\nmsgid \"Invalid checksum for NIF.\"\nmsgstr \"NIF-ის საკონტროლო ჯამი არასწორია.\"\n\n#: es/forms.py:76\nmsgid \"Invalid checksum for NIE.\"\nmsgstr \"NIE-ს საკონტროლო ჯამი არასწორია.\"\n\n#: es/forms.py:77\nmsgid \"Invalid checksum for CIF.\"\nmsgstr \"CIF-ის საკონტროლო ჯამი არასწორია.\"\n\n#: es/forms.py:149\nmsgid \"\"\n\"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.\"\nmsgstr \"\"\n\"გთხოვთ, შეიყვანოთ სწორი საბანკო ანგარიშის ნომერი ფორმატში: XXXX-XXXX-XX-\"\n\"XXXXXXXXXX.\"\n\n#: es/forms.py:150\nmsgid \"Invalid checksum for bank account number.\"\nmsgstr \"არასწორი საკონტროლო ჯამი საბანკო ანგარიშის ნომრისათვის.\"\n\n#: fi/forms.py:33\nmsgid \"Enter a valid Finnish social security number.\"\nmsgstr \"შეიყვანეთ სწორი ფინური პირადი ნომერი.\"\n\n#: fr/forms.py:35\nmsgid \"Phone numbers must be in 0X XX XX XX XX format.\"\nmsgstr \"\"\n\n#: gb/forms.py:25\nmsgid \"Enter a valid postcode.\"\nmsgstr \"შეიყვანეთ სწორი საფოსტო კოდი.\"\n\n#: gb/gb_regions.py:11\nmsgid \"Bedfordshire\"\nmsgstr \"ბედფორდშირი\"\n\n#: gb/gb_regions.py:12\nmsgid \"Buckinghamshire\"\nmsgstr \"ბუკინჰემშირი\"\n\n#: gb/gb_regions.py:14\nmsgid \"Cheshire\"\nmsgstr \"ჩეშირი\"\n\n#: gb/gb_regions.py:15\nmsgid \"Cornwall and Isles of Scilly\"\nmsgstr \"კორნუოლი და სილის კუნძულები\"\n\n#: gb/gb_regions.py:16\nmsgid \"Cumbria\"\nmsgstr \"კამბრია\"\n\n#: gb/gb_regions.py:17\nmsgid \"Derbyshire\"\nmsgstr \"დერბიშირი\"\n\n#: gb/gb_regions.py:18\nmsgid \"Devon\"\nmsgstr \"დევონი\"\n\n#: gb/gb_regions.py:19\nmsgid \"Dorset\"\nmsgstr \"დორსეტი\"\n\n#: gb/gb_regions.py:20\nmsgid \"Durham\"\nmsgstr \"დარემი\"\n\n#: gb/gb_regions.py:21\nmsgid \"East Sussex\"\nmsgstr \"აღმოსავლეთ სასექსი\"\n\n#: gb/gb_regions.py:22\nmsgid \"Essex\"\nmsgstr \"ესექსი\"\n\n#: gb/gb_regions.py:23\nmsgid \"Gloucestershire\"\nmsgstr \"გლოსტეშირი\"\n\n#: gb/gb_regions.py:24\nmsgid \"Greater London\"\nmsgstr \"დიდი ლონდონი\"\n\n#: gb/gb_regions.py:25\nmsgid \"Greater Manchester\"\nmsgstr \"დიდი მანჩესტერი\"\n\n#: gb/gb_regions.py:26\nmsgid \"Hampshire\"\nmsgstr \"ჰემპშირი\"\n\n#: gb/gb_regions.py:27\nmsgid \"Hertfordshire\"\nmsgstr \"ჰარტფორდშირი\"\n\n#: gb/gb_regions.py:28\nmsgid \"Kent\"\nmsgstr \"კენტი\"\n\n#: gb/gb_regions.py:29\nmsgid \"Lancashire\"\nmsgstr \"ლანკაშირი\"\n\n#: gb/gb_regions.py:30\nmsgid \"Leicestershire\"\nmsgstr \"ლაიჩესტეშირი\"\n\n#: gb/gb_regions.py:31\nmsgid \"Lincolnshire\"\nmsgstr \"ლინკოლნშირი\"\n\n#: gb/gb_regions.py:32\nmsgid \"Merseyside\"\nmsgstr \"მერსისაიდი\"\n\n#: gb/gb_regions.py:33\nmsgid \"Norfolk\"\nmsgstr \"ნორფოლკი\"\n\n#: gb/gb_regions.py:34\nmsgid \"North Yorkshire\"\nmsgstr \"ჩრდილოეთ იოკშირი\"\n\n#: gb/gb_regions.py:35\nmsgid \"Northamptonshire\"\nmsgstr \"ნორტჰემპტონშირი\"\n\n#: gb/gb_regions.py:36\nmsgid \"Northumberland\"\nmsgstr \"ნორტუმბერლანდი\"\n\n#: gb/gb_regions.py:37\nmsgid \"Nottinghamshire\"\nmsgstr \"ნოტინგემშირი\"\n\n#: gb/gb_regions.py:38\nmsgid \"Oxfordshire\"\nmsgstr \"ოქსფორდშირი\"\n\n#: gb/gb_regions.py:39\nmsgid \"Shropshire\"\nmsgstr \"შროპშირი\"\n\n#: gb/gb_regions.py:40\nmsgid \"Somerset\"\nmsgstr \"სომერსეტი\"\n\n#: gb/gb_regions.py:41\nmsgid \"South Yorkshire\"\nmsgstr \"სამხრეთ იოკშირი\"\n\n#: gb/gb_regions.py:42\nmsgid \"Staffordshire\"\nmsgstr \"სტაფორდშირი\"\n\n#: gb/gb_regions.py:43\nmsgid \"Suffolk\"\nmsgstr \"საფოლკი\"\n\n#: gb/gb_regions.py:44\nmsgid \"Surrey\"\nmsgstr \"სურეი\"\n\n#: gb/gb_regions.py:45\nmsgid \"Tyne and Wear\"\nmsgstr \"თაინ და უირი\"\n\n#: gb/gb_regions.py:46\nmsgid \"Warwickshire\"\nmsgstr \"უარვიკშირი\"\n\n#: gb/gb_regions.py:47\nmsgid \"West Midlands\"\nmsgstr \"დასავლეთ მიდლენდსი\"\n\n#: gb/gb_regions.py:48\nmsgid \"West Sussex\"\nmsgstr \"დასავლეთ სასექსი\"\n\n#: gb/gb_regions.py:49\nmsgid \"West Yorkshire\"\nmsgstr \"დასავლეთ იოკშირი\"\n\n#: gb/gb_regions.py:50\nmsgid \"Wiltshire\"\nmsgstr \"უილტშირი\"\n\n#: gb/gb_regions.py:51\nmsgid \"Worcestershire\"\nmsgstr \"უორსესტერშირი\"\n\n#: gb/gb_regions.py:55\nmsgid \"County Antrim\"\nmsgstr \"ანტრიმის ქვეყანა\"\n\n#: gb/gb_regions.py:56\nmsgid \"County Armagh\"\nmsgstr \"არმაგის ქვეყანა\"\n\n#: gb/gb_regions.py:57\nmsgid \"County Down\"\nmsgstr \"დაუნის ქვეყანა\"\n\n#: gb/gb_regions.py:58\nmsgid \"County Fermanagh\"\nmsgstr \"ფერმანაგის ქვეყანა\"\n\n#: gb/gb_regions.py:59\nmsgid \"County Londonderry\"\nmsgstr \"ლონდონდერის ქვეყანა\"\n\n#: gb/gb_regions.py:60\nmsgid \"County Tyrone\"\nmsgstr \"ტაირონის ქვეყანა\"\n\n#: gb/gb_regions.py:64\nmsgid \"Clwyd\"\nmsgstr \"კლოუიდი\"\n\n#: gb/gb_regions.py:65\nmsgid \"Dyfed\"\nmsgstr \"დაიფიდი\"\n\n#: gb/gb_regions.py:66\nmsgid \"Gwent\"\nmsgstr \"გვენტი\"\n\n#: gb/gb_regions.py:67\nmsgid \"Gwynedd\"\nmsgstr \"გუაინიდი\"\n\n#: gb/gb_regions.py:68\nmsgid \"Mid Glamorgan\"\nmsgstr \"შუა გლემორგენი\"\n\n#: gb/gb_regions.py:69\nmsgid \"Powys\"\nmsgstr \"პოუისი\"\n\n#: gb/gb_regions.py:70\nmsgid \"South Glamorgan\"\nmsgstr \"სამხრეთ გლემორგენი\"\n\n#: gb/gb_regions.py:71\nmsgid \"West Glamorgan\"\nmsgstr \"დასავლეთ გლემორგენი\"\n\n#: gb/gb_regions.py:75\nmsgid \"Borders\"\nmsgstr \"საზღვრები\"\n\n#: gb/gb_regions.py:76\nmsgid \"Central Scotland\"\nmsgstr \"ცენტრალური შოტლანდია\"\n\n#: gb/gb_regions.py:77\nmsgid \"Dumfries and Galloway\"\nmsgstr \"დამფრაის და გელოუეი\"\n\n#: gb/gb_regions.py:78\nmsgid \"Fife\"\nmsgstr \"ფაიფი\"\n\n#: gb/gb_regions.py:79\nmsgid \"Grampian\"\nmsgstr \"გრემპაინი\"\n\n#: gb/gb_regions.py:80\nmsgid \"Highland\"\nmsgstr \"ჰაილენდი\"\n\n#: gb/gb_regions.py:81\nmsgid \"Lothian\"\nmsgstr \"ლოთიენი\"\n\n#: gb/gb_regions.py:82\nmsgid \"Orkney Islands\"\nmsgstr \"ორკნის კუნძულები\"\n\n#: gb/gb_regions.py:83\nmsgid \"Shetland Islands\"\nmsgstr \"შიტლენდის კუნძულები\"\n\n#: gb/gb_regions.py:84\nmsgid \"Strathclyde\"\nmsgstr \"სტრესკლაიდი\"\n\n#: gb/gb_regions.py:85\nmsgid \"Tayside\"\nmsgstr \"თეისაიდი\"\n\n#: gb/gb_regions.py:86\nmsgid \"Western Isles\"\nmsgstr \"დასავლეთ კუნძულები\"\n\n#: gb/gb_regions.py:90\nmsgid \"England\"\nmsgstr \"ინგლისი\"\n\n#: gb/gb_regions.py:91\nmsgid \"Northern Ireland\"\nmsgstr \"ჩრდილოეთ ირლანდია\"\n\n#: gb/gb_regions.py:92\nmsgid \"Scotland\"\nmsgstr \"შოტლანდია\"\n\n#: gb/gb_regions.py:93\nmsgid \"Wales\"\nmsgstr \"უელსი\"\n\n#: hk/forms.py:37\n#, python-format\nmsgid \"Phone number should not start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:40\n#, python-format\nmsgid \"Phone number must be in one of the following formats: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:42\n#, python-format\nmsgid \"Phone number should start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hr/forms.py:76\nmsgid \"Enter a valid 13 digit JMBG\"\nmsgstr \"\"\n\n#: hr/forms.py:77\nmsgid \"Error in date segment\"\nmsgstr \"\"\n\n#: hr/forms.py:123\nmsgid \"Enter a valid 11 digit OIB\"\nmsgstr \"\"\n\n#: hr/forms.py:152 id/forms.py:112\nmsgid \"Enter a valid vehicle license plate number\"\nmsgstr \"\"\n\n#: hr/forms.py:153\nmsgid \"Enter a valid location code\"\nmsgstr \"\"\n\n#: hr/forms.py:154\nmsgid \"Number part cannot be zero\"\nmsgstr \"\"\n\n#: hr/forms.py:190\nmsgid \"Enter a valid 5 digit postal code\"\nmsgstr \"\"\n\n#: hr/forms.py:218 id/forms.py:72 nl/forms.py:56\nmsgid \"Enter a valid phone number\"\nmsgstr \"შეიყვანეთ სწორი ტელეფონის ნომერი\"\n\n#: hr/forms.py:219\nmsgid \"Enter a valid area or mobile network code\"\nmsgstr \"\"\n\n#: hr/forms.py:220\nmsgid \"The phone nubmer is too long\"\nmsgstr \"\"\n\n#: hr/forms.py:258\nmsgid \"Enter a valid 19 digit JMBAG starting with 601983\"\nmsgstr \"\"\n\n#: hr/forms.py:259\nmsgid \"Card issue number cannot be zero\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:14\nmsgid \"Grad Zagreb\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:15\nmsgid \"Bjelovarsko-bilogorska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:16\nmsgid \"Brodsko-posavska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:17\nmsgid \"Dubrovačko-neretvanska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:18\nmsgid \"Istarska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:19\nmsgid \"Karlovačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:20\nmsgid \"Koprivničko-križevačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:21\nmsgid \"Krapinsko-zagorska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:22\nmsgid \"Ličko-senjska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:23\nmsgid \"Međimurska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:24\nmsgid \"Osječko-baranjska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:25\nmsgid \"Požeško-slavonska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:26\nmsgid \"Primorsko-goranska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:27\nmsgid \"Sisačko-moslavačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:28\nmsgid \"Splitsko-dalmatinska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:29\nmsgid \"Šibensko-kninska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:30\nmsgid \"Varaždinska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:31\nmsgid \"Virovitičko-podravska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:32\nmsgid \"Vukovarsko-srijemska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:33\nmsgid \"Zadarska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:34\nmsgid \"Zagrebačka županija\"\nmsgstr \"\"\n\n#: id/forms.py:31\nmsgid \"Enter a valid post code\"\nmsgstr \"\"\n\n#: id/forms.py:176\nmsgid \"Enter a valid NIK/KTP number\"\nmsgstr \"\"\n\n#: id/id_choices.py:15\nmsgid \"Aceh\"\nmsgstr \"\"\n\n#: id/id_choices.py:16 id/id_choices.py:79\nmsgid \"Bali\"\nmsgstr \"\"\n\n#: id/id_choices.py:17 id/id_choices.py:51\nmsgid \"Banten\"\nmsgstr \"\"\n\n#: id/id_choices.py:18 id/id_choices.py:60\nmsgid \"Bengkulu\"\nmsgstr \"\"\n\n#: id/id_choices.py:19 id/id_choices.py:53\nmsgid \"Yogyakarta\"\nmsgstr \"\"\n\n#: id/id_choices.py:20 id/id_choices.py:57\nmsgid \"Jakarta\"\nmsgstr \"\"\n\n#: id/id_choices.py:21 id/id_choices.py:81\nmsgid \"Gorontalo\"\nmsgstr \"\"\n\n#: id/id_choices.py:22 id/id_choices.py:63\nmsgid \"Jambi\"\nmsgstr \"\"\n\n#: id/id_choices.py:23\nmsgid \"Jawa Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:24\nmsgid \"Jawa Tengah\"\nmsgstr \"\"\n\n#: id/id_choices.py:25\nmsgid \"Jawa Timur\"\nmsgstr \"\"\n\n#: id/id_choices.py:26 id/id_choices.py:94\nmsgid \"Kalimantan Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:27 id/id_choices.py:72\nmsgid \"Kalimantan Selatan\"\nmsgstr \"\"\n\n#: id/id_choices.py:28 id/id_choices.py:95\nmsgid \"Kalimantan Tengah\"\nmsgstr \"\"\n\n#: id/id_choices.py:29 id/id_choices.py:96\nmsgid \"Kalimantan Timur\"\nmsgstr \"\"\n\n#: id/id_choices.py:30\nmsgid \"Kepulauan Bangka-Belitung\"\nmsgstr \"\"\n\n#: id/id_choices.py:31 id/id_choices.py:68\nmsgid \"Kepulauan Riau\"\nmsgstr \"\"\n\n#: id/id_choices.py:32 id/id_choices.py:61\nmsgid \"Lampung\"\nmsgstr \"\"\n\n#: id/id_choices.py:33 id/id_choices.py:76\nmsgid \"Maluku\"\nmsgstr \"\"\n\n#: id/id_choices.py:34 id/id_choices.py:77\nmsgid \"Maluku Utara\"\nmsgstr \"\"\n\n#: id/id_choices.py:35\nmsgid \"Nusa Tenggara Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:36\nmsgid \"Nusa Tenggara Timur\"\nmsgstr \"\"\n\n#: id/id_choices.py:37\nmsgid \"Papua\"\nmsgstr \"\"\n\n#: id/id_choices.py:38\nmsgid \"Papua Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:39 id/id_choices.py:66\nmsgid \"Riau\"\nmsgstr \"\"\n\n#: id/id_choices.py:40 id/id_choices.py:74\nmsgid \"Sulawesi Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:41 id/id_choices.py:75\nmsgid \"Sulawesi Selatan\"\nmsgstr \"\"\n\n#: id/id_choices.py:42 id/id_choices.py:82\nmsgid \"Sulawesi Tengah\"\nmsgstr \"\"\n\n#: id/id_choices.py:43 id/id_choices.py:85\nmsgid \"Sulawesi Tenggara\"\nmsgstr \"\"\n\n#: id/id_choices.py:44\nmsgid \"Sulawesi Utara\"\nmsgstr \"\"\n\n#: id/id_choices.py:45 id/id_choices.py:58\nmsgid \"Sumatera Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:46 id/id_choices.py:62\nmsgid \"Sumatera Selatan\"\nmsgstr \"\"\n\n#: id/id_choices.py:47 id/id_choices.py:64\nmsgid \"Sumatera Utara\"\nmsgstr \"\"\n\n#: id/id_choices.py:52\nmsgid \"Magelang\"\nmsgstr \"\"\n\n#: id/id_choices.py:54\nmsgid \"Surakarta - Solo\"\nmsgstr \"\"\n\n#: id/id_choices.py:55\nmsgid \"Madiun\"\nmsgstr \"\"\n\n#: id/id_choices.py:56\nmsgid \"Kediri\"\nmsgstr \"\"\n\n#: id/id_choices.py:59\nmsgid \"Tapanuli\"\nmsgstr \"\"\n\n#: id/id_choices.py:65\nmsgid \"Nanggroe Aceh Darussalam\"\nmsgstr \"\"\n\n#: id/id_choices.py:67\nmsgid \"Kepulauan Bangka Belitung\"\nmsgstr \"\"\n\n#: id/id_choices.py:69\nmsgid \"Corps Consulate\"\nmsgstr \"\"\n\n#: id/id_choices.py:70\nmsgid \"Corps Diplomatic\"\nmsgstr \"\"\n\n#: id/id_choices.py:71\nmsgid \"Bandung\"\nmsgstr \"\"\n\n#: id/id_choices.py:73\nmsgid \"Sulawesi Utara Daratan\"\nmsgstr \"\"\n\n#: id/id_choices.py:78\nmsgid \"NTT - Timor\"\nmsgstr \"\"\n\n#: id/id_choices.py:80\nmsgid \"Sulawesi Utara Kepulauan\"\nmsgstr \"\"\n\n#: id/id_choices.py:83\nmsgid \"NTB - Lombok\"\nmsgstr \"\"\n\n#: id/id_choices.py:84\nmsgid \"Papua dan Papua Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:86\nmsgid \"Cirebon\"\nmsgstr \"\"\n\n#: id/id_choices.py:87\nmsgid \"NTB - Sumbawa\"\nmsgstr \"\"\n\n#: id/id_choices.py:88\nmsgid \"NTT - Flores\"\nmsgstr \"\"\n\n#: id/id_choices.py:89\nmsgid \"NTT - Sumba\"\nmsgstr \"\"\n\n#: id/id_choices.py:90\nmsgid \"Bogor\"\nmsgstr \"\"\n\n#: id/id_choices.py:91\nmsgid \"Pekalongan\"\nmsgstr \"\"\n\n#: id/id_choices.py:92\nmsgid \"Semarang\"\nmsgstr \"\"\n\n#: id/id_choices.py:93\nmsgid \"Pati\"\nmsgstr \"\"\n\n#: id/id_choices.py:97\nmsgid \"Surabaya\"\nmsgstr \"\"\n\n#: id/id_choices.py:98\nmsgid \"Madura\"\nmsgstr \"\"\n\n#: id/id_choices.py:99\nmsgid \"Malang\"\nmsgstr \"\"\n\n#: id/id_choices.py:100\nmsgid \"Jember\"\nmsgstr \"\"\n\n#: id/id_choices.py:101\nmsgid \"Banyumas\"\nmsgstr \"\"\n\n#: id/id_choices.py:102\nmsgid \"Federal Government\"\nmsgstr \"\"\n\n#: id/id_choices.py:103\nmsgid \"Bojonegoro\"\nmsgstr \"\"\n\n#: id/id_choices.py:104\nmsgid \"Purwakarta\"\nmsgstr \"\"\n\n#: id/id_choices.py:105\nmsgid \"Sidoarjo\"\nmsgstr \"\"\n\n#: id/id_choices.py:106\nmsgid \"Garut\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:8\nmsgid \"Antrim\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:9\nmsgid \"Armagh\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:10\nmsgid \"Carlow\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:11\nmsgid \"Cavan\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:12\nmsgid \"Clare\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:13\nmsgid \"Cork\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:14\nmsgid \"Derry\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:15\nmsgid \"Donegal\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:16\nmsgid \"Down\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:17\nmsgid \"Dublin\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:18\nmsgid \"Fermanagh\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:19\nmsgid \"Galway\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:20\nmsgid \"Kerry\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:21\nmsgid \"Kildare\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:22\nmsgid \"Kilkenny\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:23\nmsgid \"Laois\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:24\nmsgid \"Leitrim\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:25\nmsgid \"Limerick\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:26\nmsgid \"Longford\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:27\nmsgid \"Louth\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:28\nmsgid \"Mayo\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:29\nmsgid \"Meath\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:30\nmsgid \"Monaghan\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:31\nmsgid \"Offaly\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:32\nmsgid \"Roscommon\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:33\nmsgid \"Sligo\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:34\nmsgid \"Tipperary\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:35\nmsgid \"Tyrone\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:36\nmsgid \"Waterford\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:37\nmsgid \"Westmeath\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:38\nmsgid \"Wexford\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:39\nmsgid \"Wicklow\"\nmsgstr \"\"\n\n#: il/forms.py:32\nmsgid \"Enter a postal code in the format XXXXX\"\nmsgstr \"\"\n\n#: il/forms.py:51\nmsgid \"Enter a valid ID number.\"\nmsgstr \"\"\n\n#: in_/forms.py:41\nmsgid \"Enter a zip code in the format XXXXXX or XXX XXX.\"\nmsgstr \"\"\n\n#: in_/forms.py:64\nmsgid \"Enter an Indian state or territory.\"\nmsgstr \"\"\n\n#: in_/forms.py:103\nmsgid \"Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.\"\nmsgstr \"\"\n\n#: is_/forms.py:22\nmsgid \"\"\n\"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.\"\nmsgstr \"\"\n\"შეიყვანეთ სწორი ისლანდიური საიდენტიფიკაციო ნომერი. ფორმატია XXXXXX-XXXX.\"\n\n#: is_/forms.py:23\nmsgid \"The Icelandic identification number is not valid.\"\nmsgstr \"ისლანდიური საიდენტიფიკაციო ნომერი არასწორია.\"\n\n#: it/forms.py:21\nmsgid \"Enter a valid zip code.\"\nmsgstr \"შეიყვანეთ სწორი zip-კოდი.\"\n\n#: it/forms.py:48\nmsgid \"Enter a valid Social Security number.\"\nmsgstr \"შეიყვანეთ სწორი პირადი ნომერი.\"\n\n#: it/forms.py:73\nmsgid \"Enter a valid VAT number.\"\nmsgstr \"შეიყვანეთ სწორი დღგ-ს ნომერი.\"\n\n#: jp/forms.py:19\nmsgid \"Enter a postal code in the format XXXXXXX or XXX-XXXX.\"\nmsgstr \"შეიყვანეთ საფოსტო კოდი ფორმატში XXXXXXX ან XXX-XXXX.\"\n\n#: jp/jp_prefectures.py:4\nmsgid \"Hokkaido\"\nmsgstr \"ჰოკაიდო\"\n\n#: jp/jp_prefectures.py:5\nmsgid \"Aomori\"\nmsgstr \"აომორი\"\n\n#: jp/jp_prefectures.py:6\nmsgid \"Iwate\"\nmsgstr \"იუატე\"\n\n#: jp/jp_prefectures.py:7\nmsgid \"Miyagi\"\nmsgstr \"მიიაგი\"\n\n#: jp/jp_prefectures.py:8\nmsgid \"Akita\"\nmsgstr \"აკიტა\"\n\n#: jp/jp_prefectures.py:9\nmsgid \"Yamagata\"\nmsgstr \"იამაგატა\"\n\n#: jp/jp_prefectures.py:10\nmsgid \"Fukushima\"\nmsgstr \"ფუკუსიმა\"\n\n#: jp/jp_prefectures.py:11\nmsgid \"Ibaraki\"\nmsgstr \"იბარაკი\"\n\n#: jp/jp_prefectures.py:12\nmsgid \"Tochigi\"\nmsgstr \"ტოჩიგი\"\n\n#: jp/jp_prefectures.py:13\nmsgid \"Gunma\"\nmsgstr \"გუნმა\"\n\n#: jp/jp_prefectures.py:14\nmsgid \"Saitama\"\nmsgstr \"საიტამა\"\n\n#: jp/jp_prefectures.py:15\nmsgid \"Chiba\"\nmsgstr \"ჩიბა\"\n\n#: jp/jp_prefectures.py:16\nmsgid \"Tokyo\"\nmsgstr \"ტოკიო\"\n\n#: jp/jp_prefectures.py:17\nmsgid \"Kanagawa\"\nmsgstr \"კანაგავა\"\n\n#: jp/jp_prefectures.py:18\nmsgid \"Yamanashi\"\nmsgstr \"იამანაში\"\n\n#: jp/jp_prefectures.py:19\nmsgid \"Nagano\"\nmsgstr \"ნაგანო\"\n\n#: jp/jp_prefectures.py:20\nmsgid \"Niigata\"\nmsgstr \"ნიიგატა\"\n\n#: jp/jp_prefectures.py:21\nmsgid \"Toyama\"\nmsgstr \"ტოიამა\"\n\n#: jp/jp_prefectures.py:22\nmsgid \"Ishikawa\"\nmsgstr \"იშიკავა\"\n\n#: jp/jp_prefectures.py:23\nmsgid \"Fukui\"\nmsgstr \"ფუკუი\"\n\n#: jp/jp_prefectures.py:24\nmsgid \"Gifu\"\nmsgstr \"გიფუ\"\n\n#: jp/jp_prefectures.py:25\nmsgid \"Shizuoka\"\nmsgstr \"შიზუოკა\"\n\n#: jp/jp_prefectures.py:26\nmsgid \"Aichi\"\nmsgstr \"აიჩი\"\n\n#: jp/jp_prefectures.py:27\nmsgid \"Mie\"\nmsgstr \"მიე\"\n\n#: jp/jp_prefectures.py:28\nmsgid \"Shiga\"\nmsgstr \"შიგა\"\n\n#: jp/jp_prefectures.py:29\nmsgid \"Kyoto\"\nmsgstr \"კიოტო\"\n\n#: jp/jp_prefectures.py:30\nmsgid \"Osaka\"\nmsgstr \"ოსაკა\"\n\n#: jp/jp_prefectures.py:31\nmsgid \"Hyogo\"\nmsgstr \"ჰიოგო\"\n\n#: jp/jp_prefectures.py:32\nmsgid \"Nara\"\nmsgstr \"ნარა\"\n\n#: jp/jp_prefectures.py:33\nmsgid \"Wakayama\"\nmsgstr \"უაკაიამა\"\n\n#: jp/jp_prefectures.py:34\nmsgid \"Tottori\"\nmsgstr \"ტოტორი\"\n\n#: jp/jp_prefectures.py:35\nmsgid \"Shimane\"\nmsgstr \"შიმანე\"\n\n#: jp/jp_prefectures.py:36\nmsgid \"Okayama\"\nmsgstr \"ოკაიამა\"\n\n#: jp/jp_prefectures.py:37\nmsgid \"Hiroshima\"\nmsgstr \"ჰიროსიმა\"\n\n#: jp/jp_prefectures.py:38\nmsgid \"Yamaguchi\"\nmsgstr \"იამაგუჩი\"\n\n#: jp/jp_prefectures.py:39\nmsgid \"Tokushima\"\nmsgstr \"ტოკუშიმა\"\n\n#: jp/jp_prefectures.py:40\nmsgid \"Kagawa\"\nmsgstr \"კაგავა\"\n\n#: jp/jp_prefectures.py:41\nmsgid \"Ehime\"\nmsgstr \"ეჰიმე\"\n\n#: jp/jp_prefectures.py:42\nmsgid \"Kochi\"\nmsgstr \"კოჩი\"\n\n#: jp/jp_prefectures.py:43\nmsgid \"Fukuoka\"\nmsgstr \"ფუკუოკა\"\n\n#: jp/jp_prefectures.py:44\nmsgid \"Saga\"\nmsgstr \"საგა\"\n\n#: jp/jp_prefectures.py:45\nmsgid \"Nagasaki\"\nmsgstr \"ნაგასაკი\"\n\n#: jp/jp_prefectures.py:46\nmsgid \"Kumamoto\"\nmsgstr \"კუმამოტო\"\n\n#: jp/jp_prefectures.py:47\nmsgid \"Oita\"\nmsgstr \"ოიტა\"\n\n#: jp/jp_prefectures.py:48\nmsgid \"Miyazaki\"\nmsgstr \"მიაზაკი\"\n\n#: jp/jp_prefectures.py:49\nmsgid \"Kagoshima\"\nmsgstr \"კაგოსიმა\"\n\n#: jp/jp_prefectures.py:50\nmsgid \"Okinawa\"\nmsgstr \"ოკინავა\"\n\n#: kw/forms.py:27\nmsgid \"Enter a valid Kuwaiti Civil ID number\"\nmsgstr \"\"\n\n#: mk/forms.py:18\nmsgid \"\"\n\"Identity card numbers must contain either 4 to 7 digits or an uppercase \"\n\"letter and 7 digits.\"\nmsgstr \"\"\n\n#: mk/forms.py:57 si/forms.py:24\nmsgid \"This field should contain exactly 13 digits.\"\nmsgstr \"\"\n\n#: mk/forms.py:58\nmsgid \"The first 7 digits of the UMCN must represent a valid past date.\"\nmsgstr \"\"\n\n#: mk/forms.py:59\nmsgid \"The UMCN is not valid.\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:10\nmsgid \"Aerodrom\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:11\nmsgid \"Aračinovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:12\nmsgid \"Berovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:13\nmsgid \"Bitola\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:14\nmsgid \"Bogdanci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:15\nmsgid \"Bogovinje\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:16\nmsgid \"Bosilovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:17\nmsgid \"Brvenica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:18\nmsgid \"Butel\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:19\nmsgid \"Valandovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:20\nmsgid \"Vasilevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:21\nmsgid \"Vevčani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:22\nmsgid \"Veles\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:23\nmsgid \"Vinica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:24\nmsgid \"Vraneštica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:25\nmsgid \"Vrapčište\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:26\nmsgid \"Gazi Baba\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:27\nmsgid \"Gevgelija\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:28\nmsgid \"Gostivar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:29\nmsgid \"Gradsko\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:30\nmsgid \"Debar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:31\nmsgid \"Debarca\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:32\nmsgid \"Delčevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:33\nmsgid \"Demir Kapija\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:34\nmsgid \"Demir Hisar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:35\nmsgid \"Dolneni\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:36\nmsgid \"Drugovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:37\nmsgid \"Gjorče Petrov\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:38\nmsgid \"Želino\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:39\nmsgid \"Zajas\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:40\nmsgid \"Zelenikovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:41\nmsgid \"Zrnovci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:42\nmsgid \"Ilinden\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:43\nmsgid \"Jegunovce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:44\nmsgid \"Kavadarci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:45\nmsgid \"Karbinci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:46\nmsgid \"Karpoš\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:47\nmsgid \"Kisela Voda\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:48\nmsgid \"Kičevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:49\nmsgid \"Konče\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:50\nmsgid \"Koćani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:51\nmsgid \"Kratovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:52\nmsgid \"Kriva Palanka\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:53\nmsgid \"Krivogaštani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:54\nmsgid \"Kruševo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:55\nmsgid \"Kumanovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:56\nmsgid \"Lipkovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:57\nmsgid \"Lozovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:58\nmsgid \"Mavrovo i Rostuša\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:59\nmsgid \"Makedonska Kamenica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:60\nmsgid \"Makedonski Brod\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:61\nmsgid \"Mogila\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:62\nmsgid \"Negotino\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:63\nmsgid \"Novaci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:64\nmsgid \"Novo Selo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:65\nmsgid \"Oslomej\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:66\nmsgid \"Ohrid\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:67\nmsgid \"Petrovec\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:68\nmsgid \"Pehčevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:69\nmsgid \"Plasnica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:70\nmsgid \"Prilep\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:71\nmsgid \"Probištip\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:72\nmsgid \"Radoviš\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:73\nmsgid \"Rankovce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:74\nmsgid \"Resen\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:75\nmsgid \"Rosoman\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:76\nmsgid \"Saraj\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:77\nmsgid \"Sveti Nikole\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:78\nmsgid \"Sopište\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:79\nmsgid \"Star Dojran\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:80\nmsgid \"Staro Nagoričane\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:81\nmsgid \"Struga\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:82\nmsgid \"Strumica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:83\nmsgid \"Studeničani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:84\nmsgid \"Tearce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:85\nmsgid \"Tetovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:86\nmsgid \"Centar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:87\nmsgid \"Centar-Župa\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:88\nmsgid \"Čair\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:89\nmsgid \"Čaška\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:90\nmsgid \"Češinovo-Obleševo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:91\nmsgid \"Čučer-Sandevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:92\nmsgid \"Štip\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:93\nmsgid \"Šuto Orizari\"\nmsgstr \"\"\n\n#: mk/models.py:11\nmsgid \"Macedonian identity card number\"\nmsgstr \"\"\n\n#: mk/models.py:25\nmsgid \"A Macedonian municipality (2 character code)\"\nmsgstr \"\"\n\n#: mk/models.py:35\nmsgid \"Unique master citizen number (13 digits)\"\nmsgstr \"\"\n\n#: mx/forms.py:67\nmsgid \"Enter a valid zip code in the format XXXXX.\"\nmsgstr \"\"\n\n#: mx/forms.py:110\nmsgid \"Enter a valid RFC.\"\nmsgstr \"\"\n\n#: mx/forms.py:111\nmsgid \"Invalid checksum for RFC.\"\nmsgstr \"\"\n\n#: mx/forms.py:191\nmsgid \"Enter a valid CURP.\"\nmsgstr \"\"\n\n#: mx/forms.py:192\nmsgid \"Invalid checksum for CURP.\"\nmsgstr \"\"\n\n#: mx/models.py:14\nmsgid \"Mexico state (three uppercase letters)\"\nmsgstr \"\"\n\n#: mx/models.py:27\nmsgid \"Mexico zip code\"\nmsgstr \"\"\n\n#: mx/models.py:44\nmsgid \"Mexican RFC\"\nmsgstr \"\"\n\n#: mx/models.py:61\nmsgid \"Mexican CURP\"\nmsgstr \"\"\n\n#: mx/mx_states.py:14\nmsgid \"Aguascalientes\"\nmsgstr \"აგუასკალიენტესი\"\n\n#: mx/mx_states.py:15\nmsgid \"Baja California\"\nmsgstr \"ქვემო კალიფორნია\"\n\n#: mx/mx_states.py:16\nmsgid \"Baja California Sur\"\nmsgstr \"ქვემო სამხრეთ კალიფორნია\"\n\n#: mx/mx_states.py:17\nmsgid \"Campeche\"\nmsgstr \"კამპეჩე\"\n\n#: mx/mx_states.py:18\nmsgid \"Chihuahua\"\nmsgstr \"ჩიჰუაჰუა\"\n\n#: mx/mx_states.py:19\nmsgid \"Chiapas\"\nmsgstr \"ჩიაპასი\"\n\n#: mx/mx_states.py:20\nmsgid \"Coahuila\"\nmsgstr \"კოაჰუილა\"\n\n#: mx/mx_states.py:21\nmsgid \"Colima\"\nmsgstr \"კოლიმა\"\n\n#: mx/mx_states.py:22\nmsgid \"Distrito Federal\"\nmsgstr \"ფედერალური ოლქი\"\n\n#: mx/mx_states.py:23\nmsgid \"Durango\"\nmsgstr \"დურანგო\"\n\n#: mx/mx_states.py:24\nmsgid \"Guerrero\"\nmsgstr \"გერერო\"\n\n#: mx/mx_states.py:25\nmsgid \"Guanajuato\"\nmsgstr \"გუანაჰუატო\"\n\n#: mx/mx_states.py:26\nmsgid \"Hidalgo\"\nmsgstr \"იდალგო\"\n\n#: mx/mx_states.py:27\nmsgid \"Jalisco\"\nmsgstr \"ჰალისკო\"\n\n#: mx/mx_states.py:28\nmsgid \"Estado de México\"\nmsgstr \"მეხიკოს შტატი\"\n\n#: mx/mx_states.py:29\nmsgid \"Michoacán\"\nmsgstr \"მიჩოაკანი\"\n\n#: mx/mx_states.py:30\nmsgid \"Morelos\"\nmsgstr \"მორელოსი\"\n\n#: mx/mx_states.py:31\nmsgid \"Nayarit\"\nmsgstr \"ნაიარიტი\"\n\n#: mx/mx_states.py:32\nmsgid \"Nuevo León\"\nmsgstr \"ნუევო-ლეონი\"\n\n#: mx/mx_states.py:33\nmsgid \"Oaxaca\"\nmsgstr \"ოახაკა\"\n\n#: mx/mx_states.py:34\nmsgid \"Puebla\"\nmsgstr \"პუებლა\"\n\n#: mx/mx_states.py:35\nmsgid \"Querétaro\"\nmsgstr \"კერეტარო\"\n\n#: mx/mx_states.py:36\nmsgid \"Quintana Roo\"\nmsgstr \"კინტანა-როო\"\n\n#: mx/mx_states.py:37\nmsgid \"Sinaloa\"\nmsgstr \"სინალოა\"\n\n#: mx/mx_states.py:38\nmsgid \"San Luis Potosí\"\nmsgstr \"სან-ლუის-პოტოსი\"\n\n#: mx/mx_states.py:39\nmsgid \"Sonora\"\nmsgstr \"sონორა\"\n\n#: mx/mx_states.py:40\nmsgid \"Tabasco\"\nmsgstr \"ტაბასკო\"\n\n#: mx/mx_states.py:41\nmsgid \"Tamaulipas\"\nmsgstr \"ტამაულიპასი\"\n\n#: mx/mx_states.py:42\nmsgid \"Tlaxcala\"\nmsgstr \"ტლასკალა\"\n\n#: mx/mx_states.py:43\nmsgid \"Veracruz\"\nmsgstr \"ვერაკრუსი\"\n\n#: mx/mx_states.py:44\nmsgid \"Yucatán\"\nmsgstr \"იუკატანი\"\n\n#: mx/mx_states.py:45\nmsgid \"Zacatecas\"\nmsgstr \"საკატეკასი\"\n\n#: nl/forms.py:26\nmsgid \"Enter a valid postal code\"\nmsgstr \"შეიყვანეთ სწორი საფოსტო კოდი\"\n\n#: nl/forms.py:82\nmsgid \"Enter a valid SoFi number\"\nmsgstr \"შეიყვანეთ სწორი SoFi ნომერი\"\n\n#: nl/nl_provinces.py:4\nmsgid \"Drenthe\"\nmsgstr \"დრენტე\"\n\n#: nl/nl_provinces.py:5\nmsgid \"Flevoland\"\nmsgstr \"ფლევოლანდი\"\n\n#: nl/nl_provinces.py:6\nmsgid \"Friesland\"\nmsgstr \"ფრისლანდია\"\n\n#: nl/nl_provinces.py:7\nmsgid \"Gelderland\"\nmsgstr \"გელდერლანდი\"\n\n#: nl/nl_provinces.py:8\nmsgid \"Groningen\"\nmsgstr \"გრონიგენი\"\n\n#: nl/nl_provinces.py:10\nmsgid \"Noord-Brabant\"\nmsgstr \"ჩრდილოეთ ბრაბანტი\"\n\n#: nl/nl_provinces.py:11\nmsgid \"Noord-Holland\"\nmsgstr \"ჩრდილოეთ ჰოლანდია\"\n\n#: nl/nl_provinces.py:12\nmsgid \"Overijssel\"\nmsgstr \"ოვერეისელი\"\n\n#: nl/nl_provinces.py:13\nmsgid \"Utrecht\"\nmsgstr \"უტრეხტი\"\n\n#: nl/nl_provinces.py:14\nmsgid \"Zeeland\"\nmsgstr \"ზელანდია\"\n\n#: nl/nl_provinces.py:15\nmsgid \"Zuid-Holland\"\nmsgstr \"სამხრეთ ჰოლანდია\"\n\n#: no/forms.py:39\nmsgid \"Enter a valid Norwegian social security number.\"\nmsgstr \"შეიყვანეთ სწორი ნორვეგიული პირადი ნომერი.\"\n\n#: pe/forms.py:28\nmsgid \"This field requires 8 digits.\"\nmsgstr \"ეს ველი შედგება 8 თანრიგისაგან.\"\n\n#: pe/forms.py:56\nmsgid \"This field requires 11 digits.\"\nmsgstr \"ეს ველი სედგება 11 თანრიგისაგან.\"\n\n#: pl/forms.py:42\nmsgid \"National Identification Number consists of 11 digits.\"\nmsgstr \"ეროვნული საიდენტიფიკაციო ნომერი შედგება 11 თანრიგისაგან.\"\n\n#: pl/forms.py:43\nmsgid \"Wrong checksum for the National Identification Number.\"\nmsgstr \"არასწორი საკონტროლო ჯამი ეროვნულ საიდენტიფიკაციო ნომერში.\"\n\n#: pl/forms.py:79\nmsgid \"National ID Card Number consists of 3 letters and 6 digits.\"\nmsgstr \"\"\n\n#: pl/forms.py:80\nmsgid \"Wrong checksum for the National ID Card Number.\"\nmsgstr \"\"\n\n#: pl/forms.py:131\nmsgid \"\"\n\"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or \"\n\"XXXXXXXXXX.\"\nmsgstr \"\"\n\n#: pl/forms.py:132\nmsgid \"Wrong checksum for the Tax Number (NIP).\"\nmsgstr \"არასწორი საკონტროლო ჯამი საგადასახადო ნომრისათვის (NIP).\"\n\n#: pl/forms.py:171\nmsgid \"National Business Register Number (REGON) consists of 9 or 14 digits.\"\nmsgstr \"\"\n\n#: pl/forms.py:172\nmsgid \"Wrong checksum for the National Business Register Number (REGON).\"\nmsgstr \"\"\n\"არასწორი საკონტროლო ჯამი საწარმოოს ეროვნულ სარეგისტრაციო ნომერში (REGON).\"\n\n#: pl/forms.py:212\nmsgid \"Enter a postal code in the format XX-XXX.\"\nmsgstr \"შეიყვანეთ საფოსტო კოდი ფორმატში XX-XXX.\"\n\n#: pl/pl_voivodeships.py:8\nmsgid \"Lower Silesia\"\nmsgstr \"ქვემო სილეზია\"\n\n#: pl/pl_voivodeships.py:9\nmsgid \"Kuyavia-Pomerania\"\nmsgstr \"კუიავია-პომერანია\"\n\n#: pl/pl_voivodeships.py:10\nmsgid \"Lublin\"\nmsgstr \"ლუბლინი\"\n\n#: pl/pl_voivodeships.py:11\nmsgid \"Lubusz\"\nmsgstr \"ლუბუში\"\n\n#: pl/pl_voivodeships.py:12\nmsgid \"Lodz\"\nmsgstr \"ლოძი\"\n\n#: pl/pl_voivodeships.py:13\nmsgid \"Lesser Poland\"\nmsgstr \"მცირე პოლონეთი\"\n\n#: pl/pl_voivodeships.py:14\nmsgid \"Masovia\"\nmsgstr \"მაზოვია\"\n\n#: pl/pl_voivodeships.py:15\nmsgid \"Opole\"\nmsgstr \"ოპოლე\"\n\n#: pl/pl_voivodeships.py:16\nmsgid \"Subcarpatia\"\nmsgstr \"სუბკარპატია\"\n\n#: pl/pl_voivodeships.py:17\nmsgid \"Podlasie\"\nmsgstr \"პოდლასიე\"\n\n#: pl/pl_voivodeships.py:18\nmsgid \"Pomerania\"\nmsgstr \"პომერანია\"\n\n#: pl/pl_voivodeships.py:19\nmsgid \"Silesia\"\nmsgstr \"სილეზია\"\n\n#: pl/pl_voivodeships.py:20\nmsgid \"Swietokrzyskie\"\nmsgstr \"სვენტოკშისკე\"\n\n#: pl/pl_voivodeships.py:21\nmsgid \"Warmia-Masuria\"\nmsgstr \"ვარმია-მაზურია\"\n\n#: pl/pl_voivodeships.py:22\nmsgid \"Greater Poland\"\nmsgstr \"დიდი პოლონეთი\"\n\n#: pl/pl_voivodeships.py:23\nmsgid \"West Pomerania\"\nmsgstr \"დასავლეთ პომერანია\"\n\n#: pt/forms.py:19\nmsgid \"Enter a zip code in the format XXXX-XXX.\"\nmsgstr \"\"\n\n#: pt/forms.py:39\nmsgid \"Phone numbers must have 9 digits, or start by + or 00.\"\nmsgstr \"\"\n\n#: ro/forms.py:22\nmsgid \"Enter a valid CIF.\"\nmsgstr \"შეიყვანეთ სწორი URL.\"\n\n#: ro/forms.py:59\nmsgid \"Enter a valid CNP.\"\nmsgstr \"შეიყვანეთ სწორი URL.\"\n\n#: ro/forms.py:143\nmsgid \"Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format\"\nmsgstr \"\"\n\"შეიყვანეთ დასაშვები CUIT ერთ-ერთ ფორმატში: XX-XXXXXXXX-X ან XXXXXXXXXXXX.\"\n\n#: ro/forms.py:175\nmsgid \"Phone numbers must be in XXXX-XXXXXX format.\"\nmsgstr \"ტელეფონის ნომრები უნდა იყოს XX-XXXX-XXXX ფორმატში.\"\n\n#: ro/forms.py:200\nmsgid \"Enter a valid postal code in the format XXXXXX\"\nmsgstr \"შეიყვანეთ საფოსტო კოდი ფორმატში: XXX XXX.\"\n\n#: ru/forms.py:37\nmsgid \"Enter a postal code in the format XXXXXX.\"\nmsgstr \"\"\n\n#: ru/forms.py:50\nmsgid \"Enter a passport number in the format XXXX XXXXXX.\"\nmsgstr \"\"\n\n#: ru/forms.py:63\nmsgid \"Enter a passport number in the format XX XXXXXXX.\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:10\nmsgid \"Central Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:11\nmsgid \"South Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:12\nmsgid \"North-West Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:13\nmsgid \"Far-East Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:14\nmsgid \"Siberian Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:15\nmsgid \"Ural Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:16\nmsgid \"Privolzhsky Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:17\nmsgid \"North-Caucasian Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:21\nmsgid \"Moskva\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:22\nmsgid \"Saint-Peterburg\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:23\nmsgid \"Moskovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:24\nmsgid \"Adygeya, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:25\nmsgid \"Bashkortostan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:26\nmsgid \"Buryatia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:27\nmsgid \"Altay, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:28\nmsgid \"Dagestan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:29\nmsgid \"Ingushskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:30\nmsgid \"Kabardino-Balkarskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:31\nmsgid \"Kalmykia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:32\nmsgid \"Karachaevo-Cherkesskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:33\nmsgid \"Karelia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:34\nmsgid \"Komi, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:35\nmsgid \"Mariy Ehl, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:36\nmsgid \"Mordovia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:37\nmsgid \"Sakha, Respublika (Yakutiya)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:38\nmsgid \"Severnaya Osetia, Respublika (Alania)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:39\nmsgid \"Tatarstan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:40\nmsgid \"Tyva, Respublika (Tuva)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:41\nmsgid \"Udmurtskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:42\nmsgid \"Khakassiya, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:43\nmsgid \"Chechenskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:44\nmsgid \"Chuvashskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:45\nmsgid \"Altayskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:46\nmsgid \"Zabaykalskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:47\nmsgid \"Kamchatskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:48\nmsgid \"Krasnodarskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:49\nmsgid \"Krasnoyarskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:50\nmsgid \"Permskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:51\nmsgid \"Primorskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:52\nmsgid \"Stavropol'siyy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:53\nmsgid \"Khabarovskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:54\nmsgid \"Amurskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:55\nmsgid \"Arkhangel'skaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:56\nmsgid \"Astrakhanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:57\nmsgid \"Belgorodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:58\nmsgid \"Bryanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:59\nmsgid \"Vladimirskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:60\nmsgid \"Volgogradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:61\nmsgid \"Vologodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:62\nmsgid \"Voronezhskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:63\nmsgid \"Ivanovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:64\nmsgid \"Irkutskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:65\nmsgid \"Kaliningradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:66\nmsgid \"Kaluzhskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:67\nmsgid \"Kemerovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:68\nmsgid \"Kirovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:69\nmsgid \"Kostromskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:70\nmsgid \"Kurganskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:71\nmsgid \"Kurskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:72\nmsgid \"Leningradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:73\nmsgid \"Lipeckaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:74\nmsgid \"Magadanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:75\nmsgid \"Murmanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:76\nmsgid \"Nizhegorodskaja oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:77\nmsgid \"Novgorodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:78\nmsgid \"Novosibirskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:79\nmsgid \"Omskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:80\nmsgid \"Orenburgskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:81\nmsgid \"Orlovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:82\nmsgid \"Penzenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:83\nmsgid \"Pskovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:84\nmsgid \"Rostovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:85\nmsgid \"Rjazanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:86\nmsgid \"Samarskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:87\nmsgid \"Saratovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:88\nmsgid \"Sakhalinskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:89\nmsgid \"Sverdlovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:90\nmsgid \"Smolenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:91\nmsgid \"Tambovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:92\nmsgid \"Tverskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:93\nmsgid \"Tomskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:94\nmsgid \"Tul'skaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:95\nmsgid \"Tyumenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:96\nmsgid \"Ul'ianovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:97\nmsgid \"Chelyabinskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:98\nmsgid \"Yaroslavskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:99\nmsgid \"Evreyskaya avtonomnaja oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:100\nmsgid \"Neneckiy autonomnyy okrug\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:101\nmsgid \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:102\nmsgid \"Chukotskiy avtonomnyy okrug\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:103\nmsgid \"Yamalo-Neneckiy avtonomnyy okrug\"\nmsgstr \"\"\n\n#: se/forms.py:54\nmsgid \"Enter a valid Swedish organisation number.\"\nmsgstr \"\"\n\n#: se/forms.py:111\nmsgid \"Enter a valid Swedish personal identity number.\"\nmsgstr \"\"\n\n#: se/forms.py:112\nmsgid \"Co-ordination numbers are not allowed.\"\nmsgstr \"\"\n\n#: se/forms.py:154\nmsgid \"Enter a Swedish postal code in the format XXXXX.\"\nmsgstr \"\"\n\n#: se/se_counties.py:16\nmsgid \"Stockholm\"\nmsgstr \"\"\n\n#: se/se_counties.py:17\nmsgid \"Västerbotten\"\nmsgstr \"\"\n\n#: se/se_counties.py:18\nmsgid \"Norrbotten\"\nmsgstr \"\"\n\n#: se/se_counties.py:19\nmsgid \"Uppsala\"\nmsgstr \"\"\n\n#: se/se_counties.py:20\nmsgid \"Södermanland\"\nmsgstr \"\"\n\n#: se/se_counties.py:21\nmsgid \"Östergötland\"\nmsgstr \"\"\n\n#: se/se_counties.py:22\nmsgid \"Jönköping\"\nmsgstr \"\"\n\n#: se/se_counties.py:23\nmsgid \"Kronoberg\"\nmsgstr \"\"\n\n#: se/se_counties.py:24\nmsgid \"Kalmar\"\nmsgstr \"\"\n\n#: se/se_counties.py:25\nmsgid \"Gotland\"\nmsgstr \"\"\n\n#: se/se_counties.py:26\nmsgid \"Blekinge\"\nmsgstr \"\"\n\n#: se/se_counties.py:27\nmsgid \"Skåne\"\nmsgstr \"\"\n\n#: se/se_counties.py:28\nmsgid \"Halland\"\nmsgstr \"\"\n\n#: se/se_counties.py:29\nmsgid \"Västra Götaland\"\nmsgstr \"\"\n\n#: se/se_counties.py:30\nmsgid \"Värmland\"\nmsgstr \"\"\n\n#: se/se_counties.py:31\nmsgid \"Örebro\"\nmsgstr \"\"\n\n#: se/se_counties.py:32\nmsgid \"Västmanland\"\nmsgstr \"\"\n\n#: se/se_counties.py:33\nmsgid \"Dalarna\"\nmsgstr \"\"\n\n#: se/se_counties.py:34\nmsgid \"Gävleborg\"\nmsgstr \"\"\n\n#: se/se_counties.py:35\nmsgid \"Västernorrland\"\nmsgstr \"\"\n\n#: se/se_counties.py:36\nmsgid \"Jämtland\"\nmsgstr \"\"\n\n#: si/forms.py:25\nmsgid \"The first 7 digits of the EMSO must represent a valid past date.\"\nmsgstr \"\"\n\n#: si/forms.py:26\nmsgid \"The EMSO is not valid.\"\nmsgstr \"\"\n\n#: si/forms.py:86\nmsgid \"Enter a valid tax number in form SIXXXXXXXX\"\nmsgstr \"\"\n\n#: si/forms.py:151\nmsgid \"Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:8\nmsgid \"Banska Bystrica\"\nmsgstr \"ბანსკა ბისტრიცა\"\n\n#: sk/sk_districts.py:9\nmsgid \"Banska Stiavnica\"\nmsgstr \"ბანსკა შტიავნიცა\"\n\n#: sk/sk_districts.py:10\nmsgid \"Bardejov\"\nmsgstr \"ბარდეიოვი\"\n\n#: sk/sk_districts.py:11\nmsgid \"Banovce nad Bebravou\"\nmsgstr \"ბანოვცე-ნად-ბებრავოუ\"\n\n#: sk/sk_districts.py:12\nmsgid \"Brezno\"\nmsgstr \"ბრეზნო\"\n\n#: sk/sk_districts.py:13\nmsgid \"Bratislava I\"\nmsgstr \"ბრატისლავა I\"\n\n#: sk/sk_districts.py:14\nmsgid \"Bratislava II\"\nmsgstr \"ბრატისლავა II\"\n\n#: sk/sk_districts.py:15\nmsgid \"Bratislava III\"\nmsgstr \"ბრატისლავა III\"\n\n#: sk/sk_districts.py:16\nmsgid \"Bratislava IV\"\nmsgstr \"ბრატისლავა IV\"\n\n#: sk/sk_districts.py:17\nmsgid \"Bratislava V\"\nmsgstr \"ბრატისლავა V\"\n\n#: sk/sk_districts.py:18\nmsgid \"Bytca\"\nmsgstr \"ბიტჩა\"\n\n#: sk/sk_districts.py:19\nmsgid \"Cadca\"\nmsgstr \"ჩადცა\"\n\n#: sk/sk_districts.py:20\nmsgid \"Detva\"\nmsgstr \"დეტვა\"\n\n#: sk/sk_districts.py:21\nmsgid \"Dolny Kubin\"\nmsgstr \"დოლნი კუბინი\"\n\n#: sk/sk_districts.py:22\nmsgid \"Dunajska Streda\"\nmsgstr \"დუნაისკა სტრედა\"\n\n#: sk/sk_districts.py:23\nmsgid \"Galanta\"\nmsgstr \"გალანტა\"\n\n#: sk/sk_districts.py:24\nmsgid \"Gelnica\"\nmsgstr \"გელნიცა\"\n\n#: sk/sk_districts.py:25\nmsgid \"Hlohovec\"\nmsgstr \"ჰლოჰოვეცი\"\n\n#: sk/sk_districts.py:26\nmsgid \"Humenne\"\nmsgstr \"ჰუმენე\"\n\n#: sk/sk_districts.py:27\nmsgid \"Ilava\"\nmsgstr \"ილავა\"\n\n#: sk/sk_districts.py:28\nmsgid \"Kezmarok\"\nmsgstr \"კეზმაროკი\"\n\n#: sk/sk_districts.py:29\nmsgid \"Komarno\"\nmsgstr \"კომარნო\"\n\n#: sk/sk_districts.py:30\nmsgid \"Kosice I\"\nmsgstr \"კოშიცე I\"\n\n#: sk/sk_districts.py:31\nmsgid \"Kosice II\"\nmsgstr \"კოშიცე II\"\n\n#: sk/sk_districts.py:32\nmsgid \"Kosice III\"\nmsgstr \"კოშიცე III\"\n\n#: sk/sk_districts.py:33\nmsgid \"Kosice IV\"\nmsgstr \"კოშიცე IV\"\n\n#: sk/sk_districts.py:34\nmsgid \"Kosice - okolie\"\nmsgstr \"კოშიცე - ოკოლიე\"\n\n#: sk/sk_districts.py:35\nmsgid \"Krupina\"\nmsgstr \"კრუპინა\"\n\n#: sk/sk_districts.py:36\nmsgid \"Kysucke Nove Mesto\"\nmsgstr \"კისუცკე ნოვე მესტო\"\n\n#: sk/sk_districts.py:37\nmsgid \"Levice\"\nmsgstr \"ლევიცე\"\n\n#: sk/sk_districts.py:38\nmsgid \"Levoca\"\nmsgstr \"ლევოჩა\"\n\n#: sk/sk_districts.py:39\nmsgid \"Liptovsky Mikulas\"\nmsgstr \"ლიპტოვსკი მიკულაში\"\n\n#: sk/sk_districts.py:40\nmsgid \"Lucenec\"\nmsgstr \"ლუჩენეცი\"\n\n#: sk/sk_districts.py:41\nmsgid \"Malacky\"\nmsgstr \"მალაცკი\"\n\n#: sk/sk_districts.py:42\nmsgid \"Martin\"\nmsgstr \"მარტინი\"\n\n#: sk/sk_districts.py:43\nmsgid \"Medzilaborce\"\nmsgstr \"მეძილაბორცე\"\n\n#: sk/sk_districts.py:44\nmsgid \"Michalovce\"\nmsgstr \"მიხალოვცე\"\n\n#: sk/sk_districts.py:45\nmsgid \"Myjava\"\nmsgstr \"მიავა\"\n\n#: sk/sk_districts.py:46\nmsgid \"Namestovo\"\nmsgstr \"ნამესტოვო\"\n\n#: sk/sk_districts.py:47\nmsgid \"Nitra\"\nmsgstr \"ნიტრა\"\n\n#: sk/sk_districts.py:48\nmsgid \"Nove Mesto nad Vahom\"\nmsgstr \"ნოვე-მესტო-ნად-ვაჰომ\"\n\n#: sk/sk_districts.py:49\nmsgid \"Nove Zamky\"\nmsgstr \"ნოვე ზამკი\"\n\n#: sk/sk_districts.py:50\nmsgid \"Partizanske\"\nmsgstr \"პარტიზანსკე\"\n\n#: sk/sk_districts.py:51\nmsgid \"Pezinok\"\nmsgstr \"პეზინოკი\"\n\n#: sk/sk_districts.py:52\nmsgid \"Piestany\"\nmsgstr \"პიესტანი\"\n\n#: sk/sk_districts.py:53\nmsgid \"Poltar\"\nmsgstr \"პოლტარი\"\n\n#: sk/sk_districts.py:54\nmsgid \"Poprad\"\nmsgstr \"პოპრადი\"\n\n#: sk/sk_districts.py:55\nmsgid \"Povazska Bystrica\"\nmsgstr \"პოვაჟსკა ბისტრიცა\"\n\n#: sk/sk_districts.py:56\nmsgid \"Presov\"\nmsgstr \"პრესოვი\"\n\n#: sk/sk_districts.py:57\nmsgid \"Prievidza\"\nmsgstr \"პრიევიძა\"\n\n#: sk/sk_districts.py:58\nmsgid \"Puchov\"\nmsgstr \"პუხოვი\"\n\n#: sk/sk_districts.py:59\nmsgid \"Revuca\"\nmsgstr \"რევუცა\"\n\n#: sk/sk_districts.py:60\nmsgid \"Rimavska Sobota\"\nmsgstr \"რიმავსკა სობოტა\"\n\n#: sk/sk_districts.py:61\nmsgid \"Roznava\"\nmsgstr \"როზნავა\"\n\n#: sk/sk_districts.py:62\nmsgid \"Ruzomberok\"\nmsgstr \"რუზომბეროკი\"\n\n#: sk/sk_districts.py:63\nmsgid \"Sabinov\"\nmsgstr \"საბინოვი\"\n\n#: sk/sk_districts.py:64\nmsgid \"Senec\"\nmsgstr \"სენეცი\"\n\n#: sk/sk_districts.py:65\nmsgid \"Senica\"\nmsgstr \"სენიცა\"\n\n#: sk/sk_districts.py:66\nmsgid \"Skalica\"\nmsgstr \"სკალიცა\"\n\n#: sk/sk_districts.py:67\nmsgid \"Snina\"\nmsgstr \"სნინა\"\n\n#: sk/sk_districts.py:68\nmsgid \"Sobrance\"\nmsgstr \"სობრანცე\"\n\n#: sk/sk_districts.py:69\nmsgid \"Spisska Nova Ves\"\nmsgstr \"სპისკა-ნოვა-ვესი\"\n\n#: sk/sk_districts.py:70\nmsgid \"Stara Lubovna\"\nmsgstr \"სტარა-ლუბოვნა\"\n\n#: sk/sk_districts.py:71\nmsgid \"Stropkov\"\nmsgstr \"სტროპკოვი\"\n\n#: sk/sk_districts.py:72\nmsgid \"Svidnik\"\nmsgstr \"სვიდნიკი\"\n\n#: sk/sk_districts.py:73\nmsgid \"Sala\"\nmsgstr \"სალა\"\n\n#: sk/sk_districts.py:74\nmsgid \"Topolcany\"\nmsgstr \"ტოპოლჩანი\"\n\n#: sk/sk_districts.py:75\nmsgid \"Trebisov\"\nmsgstr \"ტრებისოვი\"\n\n#: sk/sk_districts.py:76\nmsgid \"Trencin\"\nmsgstr \"ტრენჩინი\"\n\n#: sk/sk_districts.py:77\nmsgid \"Trnava\"\nmsgstr \"ტრნავა\"\n\n#: sk/sk_districts.py:78\nmsgid \"Turcianske Teplice\"\nmsgstr \"ტურჩანსკე ტეპლიცე\"\n\n#: sk/sk_districts.py:79\nmsgid \"Tvrdosin\"\nmsgstr \"ტვრდოშინი\"\n\n#: sk/sk_districts.py:80\nmsgid \"Velky Krtis\"\nmsgstr \"ველკი კრტიში\"\n\n#: sk/sk_districts.py:81\nmsgid \"Vranov nad Toplou\"\nmsgstr \"ვრანოვ-ნად-ტოპლოუ\"\n\n#: sk/sk_districts.py:82\nmsgid \"Zlate Moravce\"\nmsgstr \"ზლატე მორავცე\"\n\n#: sk/sk_districts.py:83\nmsgid \"Zvolen\"\nmsgstr \"ზვოლენი\"\n\n#: sk/sk_districts.py:84\nmsgid \"Zarnovica\"\nmsgstr \"ზარნოვიცა\"\n\n#: sk/sk_districts.py:85\nmsgid \"Ziar nad Hronom\"\nmsgstr \"ზიარ-ნად-ჰრონომი\"\n\n#: sk/sk_districts.py:86\nmsgid \"Zilina\"\nmsgstr \"ზილინა\"\n\n#: sk/sk_regions.py:8\nmsgid \"Banska Bystrica region\"\nmsgstr \"ბანსკა-ბისტრიცის რაიონი\"\n\n#: sk/sk_regions.py:9\nmsgid \"Bratislava region\"\nmsgstr \"ბრატისლავას რაიონი\"\n\n#: sk/sk_regions.py:10\nmsgid \"Kosice region\"\nmsgstr \"კოშიცეს რაიონი\"\n\n#: sk/sk_regions.py:11\nmsgid \"Nitra region\"\nmsgstr \"ნიტრას რაიონი\"\n\n#: sk/sk_regions.py:12\nmsgid \"Presov region\"\nmsgstr \"პრესოვის რაიონი\"\n\n#: sk/sk_regions.py:13\nmsgid \"Trencin region\"\nmsgstr \"ტრენჩინის რაიონი\"\n\n#: sk/sk_regions.py:14\nmsgid \"Trnava region\"\nmsgstr \"ტრნავას რაიონი\"\n\n#: sk/sk_regions.py:15\nmsgid \"Zilina region\"\nmsgstr \"ზილინას რაიონი\"\n\n#: tr/forms.py:21\nmsgid \"Enter a postal code in the format XXXXX.\"\nmsgstr \"\"\n\n#: tr/forms.py:42\nmsgid \"Phone numbers must be in 0XXX XXX XXXX format.\"\nmsgstr \"\"\n\n#: tr/forms.py:69\nmsgid \"Enter a valid Turkish Identification number.\"\nmsgstr \"\"\n\n#: tr/forms.py:70\nmsgid \"Turkish Identification number must be 11 digits.\"\nmsgstr \"\"\n\n#: us/forms.py:21\nmsgid \"Enter a zip code in the format XXXXX or XXXXX-XXXX.\"\nmsgstr \"შეიყვანეთ zip-კოდი ფორმატში XXXXX ან XXXXX-XXXX.\"\n\n#: us/forms.py:59\nmsgid \"Enter a valid U.S. Social Security number in XXX-XX-XXXX format.\"\nmsgstr \"შეიყვანეთ სწორი აშშ-ს პირადი ნომერი ფორმატში XXX-XX-XXXX.\"\n\n#: us/forms.py:92\nmsgid \"Enter a U.S. state or territory.\"\nmsgstr \"\"\n\n#: us/models.py:8\nmsgid \"U.S. state (two uppercase letters)\"\nmsgstr \"აშშ შტატი (ორი ასომთავრული)\"\n\n#: us/models.py:17\nmsgid \"U.S. postal code (two uppercase letters)\"\nmsgstr \"\"\n\n#: us/models.py:26\nmsgid \"Phone number\"\nmsgstr \"ტელეფონის ნომერი\"\n\n#: uy/forms.py:29\nmsgid \"Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.\"\nmsgstr \"\"\n\n#: uy/forms.py:31\nmsgid \"Enter a valid CI number.\"\nmsgstr \"\"\n\n#: za/forms.py:22\nmsgid \"Enter a valid South African ID number\"\nmsgstr \"შეიყვანეთ სწორი სამხრეთ-აფრიკული ID ნომერი\"\n\n#: za/forms.py:56\nmsgid \"Enter a valid South African postal code\"\nmsgstr \"შეიყვანეთ სწორი სამხრეთ-აფრიკული საფოსტო კოდი\"\n\n#: za/za_provinces.py:4\nmsgid \"Eastern Cape\"\nmsgstr \"აღმოსავლეთ კაპი\"\n\n#: za/za_provinces.py:5\nmsgid \"Free State\"\nmsgstr \"თავისუფალი სახელმწიფო\"\n\n#: za/za_provinces.py:6\nmsgid \"Gauteng\"\nmsgstr \"გაუტენგი\"\n\n#: za/za_provinces.py:7\nmsgid \"KwaZulu-Natal\"\nmsgstr \"კვაზულუ-ნატალი\"\n\n#: za/za_provinces.py:8\nmsgid \"Limpopo\"\nmsgstr \"ლიმპოპო\"\n\n#: za/za_provinces.py:9\nmsgid \"Mpumalanga\"\nmsgstr \"მპუმალანგა\"\n\n#: za/za_provinces.py:10\nmsgid \"Northern Cape\"\nmsgstr \"ჩრდილოეთ კაპი\"\n\n#: za/za_provinces.py:11\nmsgid \"North West\"\nmsgstr \"ჩრდილო-დასავლეთი\"\n\n#: za/za_provinces.py:12\nmsgid \"Western Cape\"\nmsgstr \"დასავლეთ კაპი\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/locale/ko/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jaehong Kim <mixe@korea.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-10-17 09:16+0000\\n\"\n\"Last-Translator: Jaehong Kim <mixe@korea.com>\\n\"\n\"Language-Team: Korean (http://www.transifex.com/projects/p/django/language/\"\n\"ko/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ko\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: ar/forms.py:30\nmsgid \"Enter a postal code in the format NNNN or ANNNNAAA.\"\nmsgstr \"우편번호를 입력하세요.(NNNN 또는 ANNNNAAA)\"\n\n#: ar/forms.py:52 br/forms.py:95 br/forms.py:134 pe/forms.py:27 pe/forms.py:55\nmsgid \"This field requires only numbers.\"\nmsgstr \"숫자만 입력해야 합니다.\"\n\n#: ar/forms.py:53\nmsgid \"This field requires 7 or 8 digits.\"\nmsgstr \"7개 또는 8개의 숫자만 허용됩니다.\"\n\n#: ar/forms.py:82\nmsgid \"Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.\"\nmsgstr \"CUIT를 입력하세요.(XX-XXXXXXXX-X 또는 XXXXXXXXXXXX 형식)\"\n\n#: ar/forms.py:83\nmsgid \"Invalid CUIT.\"\nmsgstr \"부적절한 CUIT\"\n\n#: ar/forms.py:84\nmsgid \"Invalid legal type. Type must be 27, 20, 23 or 30.\"\nmsgstr \"\"\n\n#: at/at_states.py:5\nmsgid \"Burgenland\"\nmsgstr \"부르겐란트 주\"\n\n#: at/at_states.py:6\nmsgid \"Carinthia\"\nmsgstr \"케른텐 주\"\n\n#: at/at_states.py:7\nmsgid \"Lower Austria\"\nmsgstr \"니더외스터라이히 주\"\n\n#: at/at_states.py:8\nmsgid \"Upper Austria\"\nmsgstr \"오버외스터라이히 주\"\n\n#: at/at_states.py:9\nmsgid \"Salzburg\"\nmsgstr \"잘츠부르크\"\n\n#: at/at_states.py:10\nmsgid \"Styria\"\nmsgstr \"슈타이어 주\"\n\n#: at/at_states.py:11\nmsgid \"Tyrol\"\nmsgstr \"티롤 주\"\n\n#: at/at_states.py:12\nmsgid \"Vorarlberg\"\nmsgstr \"폴라를베르크 주\"\n\n#: at/at_states.py:13\nmsgid \"Vienna\"\nmsgstr \"빈\"\n\n#: at/forms.py:22 ch/forms.py:22 no/forms.py:19\nmsgid \"Enter a zip code in the format XXXX.\"\nmsgstr \"우편번호를 입력하세요. (XXXX 형식)\"\n\n#: at/forms.py:50\nmsgid \"Enter a valid Austrian Social Security Number in XXXX XXXXXX format.\"\nmsgstr \"올바른 오스트리아 사회보장번호(XXXX XXXXX 형식)를 입력하세요.\"\n\n#: au/forms.py:26\nmsgid \"Enter a 4 digit postcode.\"\nmsgstr \"\"\n\n#: au/models.py:9\nmsgid \"Australian State\"\nmsgstr \"\"\n\n#: au/models.py:19\nmsgid \"Australian Postcode\"\nmsgstr \"\"\n\n#: au/models.py:33\nmsgid \"Australian Phone number\"\nmsgstr \"\"\n\n#: be/be_provinces.py:5\nmsgid \"Antwerp\"\nmsgstr \"안트위르펜\"\n\n#: be/be_provinces.py:6\nmsgid \"Brussels\"\nmsgstr \"브뤼셀\"\n\n#: be/be_provinces.py:7\nmsgid \"East Flanders\"\nmsgstr \"동플랑드르\"\n\n#: be/be_provinces.py:8\nmsgid \"Flemish Brabant\"\nmsgstr \"플레 미시 브라반트\"\n\n#: be/be_provinces.py:9\nmsgid \"Hainaut\"\nmsgstr \"에노\"\n\n#: be/be_provinces.py:10\nmsgid \"Liege\"\nmsgstr \"리에주\"\n\n#: be/be_provinces.py:11 nl/nl_provinces.py:9\nmsgid \"Limburg\"\nmsgstr \"림뷔르흐 주\"\n\n#: be/be_provinces.py:12\nmsgid \"Luxembourg\"\nmsgstr \"룩셈브르크\"\n\n#: be/be_provinces.py:13\nmsgid \"Namur\"\nmsgstr \"나무르\"\n\n#: be/be_provinces.py:14\nmsgid \"Walloon Brabant\"\nmsgstr \"왈론 브라반트\"\n\n#: be/be_provinces.py:15\nmsgid \"West Flanders\"\nmsgstr \"웨스트 플랑드르\"\n\n#: be/be_regions.py:5\nmsgid \"Brussels Capital Region\"\nmsgstr \"브뤼셀 캐피탈 지역\"\n\n#: be/be_regions.py:6\nmsgid \"Flemish Region\"\nmsgstr \"플랑드르 지역\"\n\n#: be/be_regions.py:7\nmsgid \"Wallonia\"\nmsgstr \"왈로니아\"\n\n#: be/forms.py:25\nmsgid \"Enter a valid postal code in the range and format 1XXX - 9XXX.\"\nmsgstr \"우편번호를 1XXX-9XXX 형식으로 입력하세요.\"\n\n#: be/forms.py:48\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\nmsgstr \"\"\n\"전화번호를 0x xxx xx xx, 0xx xx xx xx, 04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.\"\n\"xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx 또\"\n\"는 04xxxxxxxx 형식중 하나로 입력하세요.\"\n\n#: br/forms.py:22\nmsgid \"Enter a zip code in the format XXXXX-XXX.\"\nmsgstr \"우편번호는 XXXXX-XXX 형식으로 입력하세요.\"\n\n#: br/forms.py:31\nmsgid \"Phone numbers must be in XX-XXXX-XXXX format.\"\nmsgstr \"전화번호는 XX-XXXX-XXXX 형식으로 입력하세요.\"\n\n#: br/forms.py:58\nmsgid \"\"\n\"Select a valid brazilian state. That state is not one of the available \"\n\"states.\"\nmsgstr \"올바르게 선택해 주세요. 선택하신 것이 선택가능항목에 없습니다.\"\n\n#: br/forms.py:93\nmsgid \"Invalid CPF number.\"\nmsgstr \"CPF 값이 올바르지 않습니다.\"\n\n#: br/forms.py:94\nmsgid \"This field requires at most 11 digits or 14 characters.\"\nmsgstr \"최대 11자 또는 14자 이하로 입력해 주세요.\"\n\n#: br/forms.py:133\nmsgid \"Invalid CNPJ number.\"\nmsgstr \"올바른 CNPJ 번호를 입력하세요.\"\n\n#: br/forms.py:135\nmsgid \"This field requires at least 14 digits\"\nmsgstr \"이 항목은 최소한 14개의 숫자를 입력해야 합니다.\"\n\n#: ca/forms.py:29\nmsgid \"Enter a postal code in the format XXX XXX.\"\nmsgstr \"우편번호를 입력하세요.(XXX XXX 형식)\"\n\n#: ca/forms.py:47 us/forms.py:30\nmsgid \"Phone numbers must be in XXX-XXX-XXXX format.\"\nmsgstr \"전화번호는 XX-XXXX-XXXX 형식으로 입력하세요.\"\n\n#: ca/forms.py:69\nmsgid \"Enter a Canadian province or territory.\"\nmsgstr \"\"\n\n#: ca/forms.py:110\nmsgid \"Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.\"\nmsgstr \"올바른 캐나다 사회보장번호(XXX-XXX-XXX 형식)를 입력하세요.\"\n\n#: ch/ch_states.py:5\nmsgid \"Aargau\"\nmsgstr \"아르가우 주\"\n\n#: ch/ch_states.py:6\nmsgid \"Appenzell Innerrhoden\"\nmsgstr \"아펜첼이너로덴 주\"\n\n#: ch/ch_states.py:7\nmsgid \"Appenzell Ausserrhoden\"\nmsgstr \"아펜첼아우서로덴 주\"\n\n#: ch/ch_states.py:8\nmsgid \"Basel-Stadt\"\nmsgstr \"바젤슈타트 주\"\n\n#: ch/ch_states.py:9\nmsgid \"Basel-Land\"\nmsgstr \"바젤란트 주\"\n\n#: ch/ch_states.py:10\nmsgid \"Berne\"\nmsgstr \"베른\"\n\n#: ch/ch_states.py:11\nmsgid \"Fribourg\"\nmsgstr \"프리부르 주\"\n\n#: ch/ch_states.py:12\nmsgid \"Geneva\"\nmsgstr \"제네바\"\n\n#: ch/ch_states.py:13\nmsgid \"Glarus\"\nmsgstr \"글라루스 주\"\n\n#: ch/ch_states.py:14\nmsgid \"Graubuenden\"\nmsgstr \"그라우뷘덴 주\"\n\n#: ch/ch_states.py:15\nmsgid \"Jura\"\nmsgstr \"쥐라 주\"\n\n#: ch/ch_states.py:16\nmsgid \"Lucerne\"\nmsgstr \"루체른\"\n\n#: ch/ch_states.py:17\nmsgid \"Neuchatel\"\nmsgstr \"뇌샤텔 주\"\n\n#: ch/ch_states.py:18\nmsgid \"Nidwalden\"\nmsgstr \"니트발덴 주\"\n\n#: ch/ch_states.py:19\nmsgid \"Obwalden\"\nmsgstr \"옵발덴 주\"\n\n#: ch/ch_states.py:20\nmsgid \"Schaffhausen\"\nmsgstr \"샤프하우젠 주\"\n\n#: ch/ch_states.py:21\nmsgid \"Schwyz\"\nmsgstr \"슈비츠 주\"\n\n#: ch/ch_states.py:22\nmsgid \"Solothurn\"\nmsgstr \"졸로투른 주\"\n\n#: ch/ch_states.py:23\nmsgid \"St. Gallen\"\nmsgstr \"장크트갈렌 주\"\n\n#: ch/ch_states.py:24\nmsgid \"Thurgau\"\nmsgstr \"투르가우 주\"\n\n#: ch/ch_states.py:25\nmsgid \"Ticino\"\nmsgstr \"티치노 주\"\n\n#: ch/ch_states.py:26\nmsgid \"Uri\"\nmsgstr \"우리 주\"\n\n#: ch/ch_states.py:27\nmsgid \"Valais\"\nmsgstr \"발레 주\"\n\n#: ch/ch_states.py:28\nmsgid \"Vaud\"\nmsgstr \"보 주\"\n\n#: ch/ch_states.py:29\nmsgid \"Zug\"\nmsgstr \"추크 주\"\n\n#: ch/ch_states.py:30\nmsgid \"Zurich\"\nmsgstr \"취리히\"\n\n#: ch/forms.py:37\nmsgid \"Phone numbers must be in 0XX XXX XX XX format.\"\nmsgstr \"\"\n\n#: ch/forms.py:68\nmsgid \"\"\n\"Enter a valid Swiss identity or passport card number in X1234567<0 or \"\n\"1234567890 format.\"\nmsgstr \"\"\n\"올바른 스위스 주민번호 또는 여권 번호를 입력하세요. (X1234567<0 또는 \"\n\"1234567890 형식)\"\n\n#: cl/forms.py:32\nmsgid \"Enter a valid Chilean RUT.\"\nmsgstr \"올바른 칠레 RUT를 입력하세요.\"\n\n#: cl/forms.py:33\nmsgid \"Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.\"\nmsgstr \"올바른 칠레 RUT 번호 XX.XXX.XXX-X 형식으로 입력하세요.\"\n\n#: cl/forms.py:34\nmsgid \"The Chilean RUT is not valid.\"\nmsgstr \"칠레 RUT 값이 올바르지 않습니다.\"\n\n#: cn/forms.py:84\nmsgid \"Enter a post code in the format XXXXXX.\"\nmsgstr \"\"\n\n#: cn/forms.py:105\nmsgid \"ID Card Number consists of 15 or 18 digits.\"\nmsgstr \"\"\n\n#: cn/forms.py:106\nmsgid \"Invalid ID Card Number: Wrong checksum\"\nmsgstr \"\"\n\n#: cn/forms.py:107\nmsgid \"Invalid ID Card Number: Wrong birthdate\"\nmsgstr \"\"\n\n#: cn/forms.py:108\nmsgid \"Invalid ID Card Number: Wrong location code\"\nmsgstr \"\"\n\n#: cn/forms.py:193\nmsgid \"Enter a valid phone number.\"\nmsgstr \"\"\n\n#: cn/forms.py:210\nmsgid \"Enter a valid cell number.\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:8\nmsgid \"Prague\"\nmsgstr \"프라하\"\n\n#: cz/cz_regions.py:9\nmsgid \"Central Bohemian Region\"\nmsgstr \"이호체스코 주\"\n\n#: cz/cz_regions.py:10\nmsgid \"South Bohemian Region\"\nmsgstr \"스트르셰도체스코 주\"\n\n#: cz/cz_regions.py:11\nmsgid \"Pilsen Region\"\nmsgstr \"플젠 주\"\n\n#: cz/cz_regions.py:12\nmsgid \"Carlsbad Region\"\nmsgstr \"카를로비바리 주\"\n\n#: cz/cz_regions.py:13\nmsgid \"Usti Region\"\nmsgstr \"우스티나트라벰 주\"\n\n#: cz/cz_regions.py:14\nmsgid \"Liberec Region\"\nmsgstr \"리베레츠 주\"\n\n#: cz/cz_regions.py:15\nmsgid \"Hradec Region\"\nmsgstr \"호라데츠 크랄로베 주\"\n\n#: cz/cz_regions.py:16\nmsgid \"Pardubice Region\"\nmsgstr \"파르두비체 주\"\n\n#: cz/cz_regions.py:17\nmsgid \"Vysocina Region\"\nmsgstr \"비소치나 주\"\n\n#: cz/cz_regions.py:18\nmsgid \"South Moravian Region\"\nmsgstr \"이호모라프스코 주\"\n\n#: cz/cz_regions.py:19\nmsgid \"Olomouc Region\"\nmsgstr \"올로모우츠 주\"\n\n#: cz/cz_regions.py:20\nmsgid \"Zlin Region\"\nmsgstr \"즐린 주\"\n\n#: cz/cz_regions.py:21\nmsgid \"Moravian-Silesian Region\"\nmsgstr \"모라바슬레스코주\"\n\n#: cz/forms.py:32 sk/forms.py:33\nmsgid \"Enter a postal code in the format XXXXX or XXX XX.\"\nmsgstr \"우편번호를 입력하세요. (XXXXX 또는 XXX XX 형식)\"\n\n#: cz/forms.py:52\nmsgid \"Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.\"\nmsgstr \"생년월일을 입력하세요. (XXXXXX/XXXX 또는 XXXXXXXXXX 형식)\"\n\n#: cz/forms.py:53\nmsgid \"Enter a valid birth number.\"\nmsgstr \"올바른 생년월일을 입력하세요.\"\n\n#: cz/forms.py:102\nmsgid \"Enter a valid IC number.\"\nmsgstr \"올바른 IC 번호를 입력하세요.\"\n\n#: de/de_states.py:5\nmsgid \"Baden-Wuerttemberg\"\nmsgstr \"바덴-뷔르템베르크 주\"\n\n#: de/de_states.py:6\nmsgid \"Bavaria\"\nmsgstr \"바이에른 자유주\"\n\n#: de/de_states.py:7\nmsgid \"Berlin\"\nmsgstr \"베를린\"\n\n#: de/de_states.py:8\nmsgid \"Brandenburg\"\nmsgstr \"브란덴부르크 주\"\n\n#: de/de_states.py:9\nmsgid \"Bremen\"\nmsgstr \"브레멘 자유 한자 도시\"\n\n#: de/de_states.py:10\nmsgid \"Hamburg\"\nmsgstr \"함부르크 자유 한자 도시\"\n\n#: de/de_states.py:11\nmsgid \"Hessen\"\nmsgstr \"헤센 주\"\n\n#: de/de_states.py:12\nmsgid \"Mecklenburg-Western Pomerania\"\nmsgstr \"메클렌부르크-포어포메른 주\"\n\n#: de/de_states.py:13\nmsgid \"Lower Saxony\"\nmsgstr \"니더작센 주\"\n\n#: de/de_states.py:14\nmsgid \"North Rhine-Westphalia\"\nmsgstr \"노르트라인-베스트팔렌 주\"\n\n#: de/de_states.py:15\nmsgid \"Rhineland-Palatinate\"\nmsgstr \"라인란트-팔츠 주\"\n\n#: de/de_states.py:16\nmsgid \"Saarland\"\nmsgstr \"자를란트 주\"\n\n#: de/de_states.py:17\nmsgid \"Saxony\"\nmsgstr \"작센 자유주\"\n\n#: de/de_states.py:18\nmsgid \"Saxony-Anhalt\"\nmsgstr \"작센-안할트 주\"\n\n#: de/de_states.py:19\nmsgid \"Schleswig-Holstein\"\nmsgstr \"슐레스비히-홀슈타인 주\"\n\n#: de/de_states.py:20\nmsgid \"Thuringia\"\nmsgstr \"튀링겐 자유주\"\n\n#: de/forms.py:20 fi/forms.py:18 fr/forms.py:20\nmsgid \"Enter a zip code in the format XXXXX.\"\nmsgstr \"우편번호를 입력하세요. (XXXXX 형식)\"\n\n#: de/forms.py:46\nmsgid \"\"\n\"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"format.\"\nmsgstr \"올바른 독일 주민번호(XXXXXXXXXXX-XXXXXXX-XXXXXXX-X 형식)를 입력하세요.\"\n\n#: es/es_provinces.py:5\nmsgid \"Araba\"\nmsgstr \"\"\n\n#: es/es_provinces.py:6\nmsgid \"Albacete\"\nmsgstr \"알바세테 주\"\n\n#: es/es_provinces.py:7\nmsgid \"Alacant\"\nmsgstr \"알리칸테 주\"\n\n#: es/es_provinces.py:8\nmsgid \"Almeria\"\nmsgstr \"알메리아 주\"\n\n#: es/es_provinces.py:9\nmsgid \"Avila\"\nmsgstr \"아빌라 주\"\n\n#: es/es_provinces.py:10\nmsgid \"Badajoz\"\nmsgstr \"바다호스 주\"\n\n#: es/es_provinces.py:11\nmsgid \"Illes Balears\"\nmsgstr \"발레아레스 제도\"\n\n#: es/es_provinces.py:12\nmsgid \"Barcelona\"\nmsgstr \"바르셀로나 주\"\n\n#: es/es_provinces.py:13\nmsgid \"Burgos\"\nmsgstr \"부르고스 주\"\n\n#: es/es_provinces.py:14\nmsgid \"Caceres\"\nmsgstr \"카세레스 주\"\n\n#: es/es_provinces.py:15\nmsgid \"Cadiz\"\nmsgstr \"카디스 주\"\n\n#: es/es_provinces.py:16\nmsgid \"Castello\"\nmsgstr \"카스테욘 주\"\n\n#: es/es_provinces.py:17\nmsgid \"Ciudad Real\"\nmsgstr \"시우다드레알 주\"\n\n#: es/es_provinces.py:18\nmsgid \"Cordoba\"\nmsgstr \"코르도바 주\"\n\n#: es/es_provinces.py:19\nmsgid \"A Coruna\"\nmsgstr \"라코루냐 주\"\n\n#: es/es_provinces.py:20\nmsgid \"Cuenca\"\nmsgstr \"쿠엥카 주\"\n\n#: es/es_provinces.py:21\nmsgid \"Girona\"\nmsgstr \"헤로나 주\"\n\n#: es/es_provinces.py:22\nmsgid \"Granada\"\nmsgstr \"그라나다 주\"\n\n#: es/es_provinces.py:23\nmsgid \"Guadalajara\"\nmsgstr \"과달라하라 주\"\n\n#: es/es_provinces.py:24\nmsgid \"Guipuzkoa\"\nmsgstr \"기푸스코아 주\"\n\n#: es/es_provinces.py:25\nmsgid \"Huelva\"\nmsgstr \"우엘바 주\"\n\n#: es/es_provinces.py:26\nmsgid \"Huesca\"\nmsgstr \"우에스카 주\"\n\n#: es/es_provinces.py:27\nmsgid \"Jaen\"\nmsgstr \"하엔 주\"\n\n#: es/es_provinces.py:28\nmsgid \"Leon\"\nmsgstr \"레온 주\"\n\n#: es/es_provinces.py:29\nmsgid \"Lleida\"\nmsgstr \"레리다 주\"\n\n#: es/es_provinces.py:30 es/es_regions.py:17\nmsgid \"La Rioja\"\nmsgstr \"라리오하 주\"\n\n#: es/es_provinces.py:31\nmsgid \"Lugo\"\nmsgstr \"루고 주\"\n\n#: es/es_provinces.py:32 es/es_regions.py:18\nmsgid \"Madrid\"\nmsgstr \"마드리드 주\"\n\n#: es/es_provinces.py:33\nmsgid \"Malaga\"\nmsgstr \"말라가 주\"\n\n#: es/es_provinces.py:34\nmsgid \"Murcia\"\nmsgstr \"무르시아 주\"\n\n#: es/es_provinces.py:35\nmsgid \"Navarre\"\nmsgstr \"나바라 주\"\n\n#: es/es_provinces.py:36\nmsgid \"Ourense\"\nmsgstr \"오렌세 주\"\n\n#: es/es_provinces.py:37\nmsgid \"Asturias\"\nmsgstr \"아스투리아스 주\"\n\n#: es/es_provinces.py:38\nmsgid \"Palencia\"\nmsgstr \"팔렌시아 주\"\n\n#: es/es_provinces.py:39\nmsgid \"Las Palmas\"\nmsgstr \"라스팔마스 주\"\n\n#: es/es_provinces.py:40\nmsgid \"Pontevedra\"\nmsgstr \"폰테베드라 주\"\n\n#: es/es_provinces.py:41\nmsgid \"Salamanca\"\nmsgstr \"살라망카 주\"\n\n#: es/es_provinces.py:42\nmsgid \"Santa Cruz de Tenerife\"\nmsgstr \"산타크루스데테네리페 주\"\n\n#: es/es_provinces.py:43 es/es_regions.py:11\nmsgid \"Cantabria\"\nmsgstr \"칸타브리아 주\"\n\n#: es/es_provinces.py:44\nmsgid \"Segovia\"\nmsgstr \"세고비아 주\"\n\n#: es/es_provinces.py:45\nmsgid \"Seville\"\nmsgstr \"세비야 주\"\n\n#: es/es_provinces.py:46\nmsgid \"Soria\"\nmsgstr \"소리아 주\"\n\n#: es/es_provinces.py:47\nmsgid \"Tarragona\"\nmsgstr \"타라고나 주\"\n\n#: es/es_provinces.py:48\nmsgid \"Teruel\"\nmsgstr \"테루엘 주\"\n\n#: es/es_provinces.py:49\nmsgid \"Toledo\"\nmsgstr \"톨레도 주\"\n\n#: es/es_provinces.py:50\nmsgid \"Valencia\"\nmsgstr \"발렌시아 주\"\n\n#: es/es_provinces.py:51\nmsgid \"Valladolid\"\nmsgstr \"바야돌리드 주\"\n\n#: es/es_provinces.py:52\nmsgid \"Bizkaia\"\nmsgstr \"비스카야 주\"\n\n#: es/es_provinces.py:53\nmsgid \"Zamora\"\nmsgstr \"사모라 주\"\n\n#: es/es_provinces.py:54\nmsgid \"Zaragoza\"\nmsgstr \"사라고사 주\"\n\n#: es/es_provinces.py:55\nmsgid \"Ceuta\"\nmsgstr \"세우타 자치주\"\n\n#: es/es_provinces.py:56\nmsgid \"Melilla\"\nmsgstr \"멜리야 주\"\n\n#: es/es_regions.py:5\nmsgid \"Andalusia\"\nmsgstr \"안달루시아 주\"\n\n#: es/es_regions.py:6\nmsgid \"Aragon\"\nmsgstr \"아라곤 주\"\n\n#: es/es_regions.py:7\nmsgid \"Principality of Asturias\"\nmsgstr \"아스투리아스 지방\"\n\n#: es/es_regions.py:8\nmsgid \"Balearic Islands\"\nmsgstr \"발레아레스 제도\"\n\n#: es/es_regions.py:9\nmsgid \"Basque Country\"\nmsgstr \"바스크 지방\"\n\n#: es/es_regions.py:10\nmsgid \"Canary Islands\"\nmsgstr \"카나리 제도\"\n\n#: es/es_regions.py:12\nmsgid \"Castile-La Mancha\"\nmsgstr \"카스티야라만차 지방\"\n\n#: es/es_regions.py:13\nmsgid \"Castile and Leon\"\nmsgstr \"카스티야레온 지방\"\n\n#: es/es_regions.py:14\nmsgid \"Catalonia\"\nmsgstr \"카탈로니아 지방\"\n\n#: es/es_regions.py:15\nmsgid \"Extremadura\"\nmsgstr \"에스트레마두라 지방\"\n\n#: es/es_regions.py:16\nmsgid \"Galicia\"\nmsgstr \"갈리시아 지방\"\n\n#: es/es_regions.py:19\nmsgid \"Region of Murcia\"\nmsgstr \"무르시아 지방\"\n\n#: es/es_regions.py:20\nmsgid \"Foral Community of Navarre\"\nmsgstr \"나바라 지방\"\n\n#: es/es_regions.py:21\nmsgid \"Valencian Community\"\nmsgstr \"발렌시아 지방\"\n\n#: es/forms.py:26\nmsgid \"Enter a valid postal code in the range and format 01XXX - 52XXX.\"\nmsgstr \"우편번호를 입력하세요. (01XXX - 52XXX 형식)\"\n\n#: es/forms.py:46\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or \"\n\"9XXXXXXXX.\"\nmsgstr \"\"\n\"올바른 전화번호를 입력하세요. (6XXXXXXXX, 8XXXXXXXX 또는 9XXXXXXXX 형식)\"\n\n#: es/forms.py:73\nmsgid \"Please enter a valid NIF, NIE, or CIF.\"\nmsgstr \"올바른 NIF, NIE 또는 CIF를 입력하세요.\"\n\n#: es/forms.py:74\nmsgid \"Please enter a valid NIF or NIE.\"\nmsgstr \"올바른 NIF 또는 NIE를 입력하세요.\"\n\n#: es/forms.py:75\nmsgid \"Invalid checksum for NIF.\"\nmsgstr \"NIF의 체크섬이 틀립니다.\"\n\n#: es/forms.py:76\nmsgid \"Invalid checksum for NIE.\"\nmsgstr \"NIE의 체크섬이 틀립니다.\"\n\n#: es/forms.py:77\nmsgid \"Invalid checksum for CIF.\"\nmsgstr \"CIF의 체크섬이 틀립니다.\"\n\n#: es/forms.py:149\nmsgid \"\"\n\"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.\"\nmsgstr \"올바른 계좌번호를 입력하세요. (XXXX-XXXX-XX-XXXXXXXXXX 형식)\"\n\n#: es/forms.py:150\nmsgid \"Invalid checksum for bank account number.\"\nmsgstr \"계좌번호의 체크섬이 틀립니다.\"\n\n#: fi/forms.py:33\nmsgid \"Enter a valid Finnish social security number.\"\nmsgstr \"올바른 핀란드 사회보장 번호를 입력하세요.\"\n\n#: fr/forms.py:35\nmsgid \"Phone numbers must be in 0X XX XX XX XX format.\"\nmsgstr \"전화번호는 0X XX XX XX XX 형식이어야 합니다.\"\n\n#: gb/forms.py:25\nmsgid \"Enter a valid postcode.\"\nmsgstr \"올바른 우편번호를 입력하세요.\"\n\n#: gb/gb_regions.py:11\nmsgid \"Bedfordshire\"\nmsgstr \"베드퍼드셔 주\"\n\n#: gb/gb_regions.py:12\nmsgid \"Buckinghamshire\"\nmsgstr \"버킹엄셔 주\"\n\n#: gb/gb_regions.py:14\nmsgid \"Cheshire\"\nmsgstr \"체셔 주\"\n\n#: gb/gb_regions.py:15\nmsgid \"Cornwall and Isles of Scilly\"\nmsgstr \"콘월 주 (시실리 섬)\"\n\n#: gb/gb_regions.py:16\nmsgid \"Cumbria\"\nmsgstr \"컴브리아 주\"\n\n#: gb/gb_regions.py:17\nmsgid \"Derbyshire\"\nmsgstr \"더비셔 주\"\n\n#: gb/gb_regions.py:18\nmsgid \"Devon\"\nmsgstr \"데번 주\"\n\n#: gb/gb_regions.py:19\nmsgid \"Dorset\"\nmsgstr \"Dorest 주\"\n\n#: gb/gb_regions.py:20\nmsgid \"Durham\"\nmsgstr \"카운티 더럼 주\"\n\n#: gb/gb_regions.py:21\nmsgid \"East Sussex\"\nmsgstr \"이스트 서섹스 주\"\n\n#: gb/gb_regions.py:22\nmsgid \"Essex\"\nmsgstr \"에섹스 주\"\n\n#: gb/gb_regions.py:23\nmsgid \"Gloucestershire\"\nmsgstr \"글로스터셔 주\"\n\n#: gb/gb_regions.py:24\nmsgid \"Greater London\"\nmsgstr \"그레이터 런던\"\n\n#: gb/gb_regions.py:25\nmsgid \"Greater Manchester\"\nmsgstr \"그레이터 멘체스터 주\"\n\n#: gb/gb_regions.py:26\nmsgid \"Hampshire\"\nmsgstr \"햄프셔 주\"\n\n#: gb/gb_regions.py:27\nmsgid \"Hertfordshire\"\nmsgstr \"허트퍼드셔 주\"\n\n#: gb/gb_regions.py:28\nmsgid \"Kent\"\nmsgstr \"켄트 주\"\n\n#: gb/gb_regions.py:29\nmsgid \"Lancashire\"\nmsgstr \"랭커셔 주\"\n\n#: gb/gb_regions.py:30\nmsgid \"Leicestershire\"\nmsgstr \"레스터셔 주\"\n\n#: gb/gb_regions.py:31\nmsgid \"Lincolnshire\"\nmsgstr \"링컨셔 주\"\n\n#: gb/gb_regions.py:32\nmsgid \"Merseyside\"\nmsgstr \"머시사이드 주\"\n\n#: gb/gb_regions.py:33\nmsgid \"Norfolk\"\nmsgstr \"노퍽 주\"\n\n#: gb/gb_regions.py:34\nmsgid \"North Yorkshire\"\nmsgstr \"노스요크셔 주\"\n\n#: gb/gb_regions.py:35\nmsgid \"Northamptonshire\"\nmsgstr \"노스햄프턴 주\"\n\n#: gb/gb_regions.py:36\nmsgid \"Northumberland\"\nmsgstr \"노섬벌랜드 주\"\n\n#: gb/gb_regions.py:37\nmsgid \"Nottinghamshire\"\nmsgstr \"노팅험셔 주\"\n\n#: gb/gb_regions.py:38\nmsgid \"Oxfordshire\"\nmsgstr \"옥스포드셔 주\"\n\n#: gb/gb_regions.py:39\nmsgid \"Shropshire\"\nmsgstr \"시롭셔 주\"\n\n#: gb/gb_regions.py:40\nmsgid \"Somerset\"\nmsgstr \"서머셋 주\"\n\n#: gb/gb_regions.py:41\nmsgid \"South Yorkshire\"\nmsgstr \"사우스요크셔 주\"\n\n#: gb/gb_regions.py:42\nmsgid \"Staffordshire\"\nmsgstr \"스태포드셔 주\"\n\n#: gb/gb_regions.py:43\nmsgid \"Suffolk\"\nmsgstr \"서퍽 주\"\n\n#: gb/gb_regions.py:44\nmsgid \"Surrey\"\nmsgstr \"서리 주\"\n\n#: gb/gb_regions.py:45\nmsgid \"Tyne and Wear\"\nmsgstr \"타인-웨어 주\"\n\n#: gb/gb_regions.py:46\nmsgid \"Warwickshire\"\nmsgstr \"워릭셔 주\"\n\n#: gb/gb_regions.py:47\nmsgid \"West Midlands\"\nmsgstr \"웨스트미들랜즈\"\n\n#: gb/gb_regions.py:48\nmsgid \"West Sussex\"\nmsgstr \"웨스트서섹스 주\"\n\n#: gb/gb_regions.py:49\nmsgid \"West Yorkshire\"\nmsgstr \"웨스트요크셔 주\"\n\n#: gb/gb_regions.py:50\nmsgid \"Wiltshire\"\nmsgstr \"윌트셔 주\"\n\n#: gb/gb_regions.py:51\nmsgid \"Worcestershire\"\nmsgstr \"우스터셔 주\"\n\n#: gb/gb_regions.py:55\nmsgid \"County Antrim\"\nmsgstr \"앤트림 카운티\"\n\n#: gb/gb_regions.py:56\nmsgid \"County Armagh\"\nmsgstr \"아마 카운티\"\n\n#: gb/gb_regions.py:57\nmsgid \"County Down\"\nmsgstr \"다운 카운티\"\n\n#: gb/gb_regions.py:58\nmsgid \"County Fermanagh\"\nmsgstr \"퍼매너 카운티\"\n\n#: gb/gb_regions.py:59\nmsgid \"County Londonderry\"\nmsgstr \"런던데리 카운티\"\n\n#: gb/gb_regions.py:60\nmsgid \"County Tyrone\"\nmsgstr \"티론 카운티\"\n\n#: gb/gb_regions.py:64\nmsgid \"Clwyd\"\nmsgstr \"클루이드 주\"\n\n#: gb/gb_regions.py:65\nmsgid \"Dyfed\"\nmsgstr \"디버드 주\"\n\n#: gb/gb_regions.py:66\nmsgid \"Gwent\"\nmsgstr \"궨트 주\"\n\n#: gb/gb_regions.py:67\nmsgid \"Gwynedd\"\nmsgstr \"귀네드 주\"\n\n#: gb/gb_regions.py:68\nmsgid \"Mid Glamorgan\"\nmsgstr \"미드글라모건 주\"\n\n#: gb/gb_regions.py:69\nmsgid \"Powys\"\nmsgstr \"포이스 주\"\n\n#: gb/gb_regions.py:70\nmsgid \"South Glamorgan\"\nmsgstr \"사우스글라모건 주\"\n\n#: gb/gb_regions.py:71\nmsgid \"West Glamorgan\"\nmsgstr \"웨스트글라모건 주\"\n\n#: gb/gb_regions.py:75\nmsgid \"Borders\"\nmsgstr \"보더스 주\"\n\n#: gb/gb_regions.py:76\nmsgid \"Central Scotland\"\nmsgstr \"센트럴스코틀랜드\"\n\n#: gb/gb_regions.py:77\nmsgid \"Dumfries and Galloway\"\nmsgstr \"덤프리스갤러웨이 주\"\n\n#: gb/gb_regions.py:78\nmsgid \"Fife\"\nmsgstr \"파이프 주\"\n\n#: gb/gb_regions.py:79\nmsgid \"Grampian\"\nmsgstr \"그램피언 주\"\n\n#: gb/gb_regions.py:80\nmsgid \"Highland\"\nmsgstr \"하이랜드 주\"\n\n#: gb/gb_regions.py:81\nmsgid \"Lothian\"\nmsgstr \"로디언 주\"\n\n#: gb/gb_regions.py:82\nmsgid \"Orkney Islands\"\nmsgstr \"오크니 제도\"\n\n#: gb/gb_regions.py:83\nmsgid \"Shetland Islands\"\nmsgstr \"셰틀랜드 제도\"\n\n#: gb/gb_regions.py:84\nmsgid \"Strathclyde\"\nmsgstr \"스트래스클라이드 주\"\n\n#: gb/gb_regions.py:85\nmsgid \"Tayside\"\nmsgstr \"태이사이드 주\"\n\n#: gb/gb_regions.py:86\nmsgid \"Western Isles\"\nmsgstr \"웨스턴아일 주\"\n\n#: gb/gb_regions.py:90\nmsgid \"England\"\nmsgstr \"잉글랜드 주\"\n\n#: gb/gb_regions.py:91\nmsgid \"Northern Ireland\"\nmsgstr \"노던아일랜드 주\"\n\n#: gb/gb_regions.py:92\nmsgid \"Scotland\"\nmsgstr \"스코틀랜드 주\"\n\n#: gb/gb_regions.py:93\nmsgid \"Wales\"\nmsgstr \"웨일즈 주\"\n\n#: hk/forms.py:37\n#, python-format\nmsgid \"Phone number should not start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:40\n#, python-format\nmsgid \"Phone number must be in one of the following formats: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:42\n#, python-format\nmsgid \"Phone number should start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hr/forms.py:76\nmsgid \"Enter a valid 13 digit JMBG\"\nmsgstr \"\"\n\n#: hr/forms.py:77\nmsgid \"Error in date segment\"\nmsgstr \"\"\n\n#: hr/forms.py:123\nmsgid \"Enter a valid 11 digit OIB\"\nmsgstr \"\"\n\n#: hr/forms.py:152 id/forms.py:112\nmsgid \"Enter a valid vehicle license plate number\"\nmsgstr \"올바른 차량 등록 번호를 입력하세요.\"\n\n#: hr/forms.py:153\nmsgid \"Enter a valid location code\"\nmsgstr \"\"\n\n#: hr/forms.py:154\nmsgid \"Number part cannot be zero\"\nmsgstr \"\"\n\n#: hr/forms.py:190\nmsgid \"Enter a valid 5 digit postal code\"\nmsgstr \"\"\n\n#: hr/forms.py:218 id/forms.py:72 nl/forms.py:56\nmsgid \"Enter a valid phone number\"\nmsgstr \"올바른 전화번호를 입력하세요.\"\n\n#: hr/forms.py:219\nmsgid \"Enter a valid area or mobile network code\"\nmsgstr \"\"\n\n#: hr/forms.py:220\nmsgid \"The phone nubmer is too long\"\nmsgstr \"\"\n\n#: hr/forms.py:258\nmsgid \"Enter a valid 19 digit JMBAG starting with 601983\"\nmsgstr \"\"\n\n#: hr/forms.py:259\nmsgid \"Card issue number cannot be zero\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:14\nmsgid \"Grad Zagreb\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:15\nmsgid \"Bjelovarsko-bilogorska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:16\nmsgid \"Brodsko-posavska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:17\nmsgid \"Dubrovačko-neretvanska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:18\nmsgid \"Istarska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:19\nmsgid \"Karlovačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:20\nmsgid \"Koprivničko-križevačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:21\nmsgid \"Krapinsko-zagorska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:22\nmsgid \"Ličko-senjska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:23\nmsgid \"Međimurska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:24\nmsgid \"Osječko-baranjska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:25\nmsgid \"Požeško-slavonska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:26\nmsgid \"Primorsko-goranska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:27\nmsgid \"Sisačko-moslavačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:28\nmsgid \"Splitsko-dalmatinska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:29\nmsgid \"Šibensko-kninska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:30\nmsgid \"Varaždinska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:31\nmsgid \"Virovitičko-podravska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:32\nmsgid \"Vukovarsko-srijemska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:33\nmsgid \"Zadarska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:34\nmsgid \"Zagrebačka županija\"\nmsgstr \"\"\n\n#: id/forms.py:31\nmsgid \"Enter a valid post code\"\nmsgstr \"올바른 우편번호를 입력하세요.\"\n\n#: id/forms.py:176\nmsgid \"Enter a valid NIK/KTP number\"\nmsgstr \"올바른 NIK/KTP 번호를 입력하세요.\"\n\n#: id/id_choices.py:15\nmsgid \"Aceh\"\nmsgstr \"아체\"\n\n#: id/id_choices.py:16 id/id_choices.py:79\nmsgid \"Bali\"\nmsgstr \"발리\"\n\n#: id/id_choices.py:17 id/id_choices.py:51\nmsgid \"Banten\"\nmsgstr \"반텐\"\n\n#: id/id_choices.py:18 id/id_choices.py:60\nmsgid \"Bengkulu\"\nmsgstr \"벵쿨루\"\n\n#: id/id_choices.py:19 id/id_choices.py:53\nmsgid \"Yogyakarta\"\nmsgstr \"족자 카르타\"\n\n#: id/id_choices.py:20 id/id_choices.py:57\nmsgid \"Jakarta\"\nmsgstr \"자카르타\"\n\n#: id/id_choices.py:21 id/id_choices.py:81\nmsgid \"Gorontalo\"\nmsgstr \"고론탈로\"\n\n#: id/id_choices.py:22 id/id_choices.py:63\nmsgid \"Jambi\"\nmsgstr \"잠비\"\n\n#: id/id_choices.py:23\nmsgid \"Jawa Barat\"\nmsgstr \"자와 바라트\"\n\n#: id/id_choices.py:24\nmsgid \"Jawa Tengah\"\nmsgstr \"자와 텐가\"\n\n#: id/id_choices.py:25\nmsgid \"Jawa Timur\"\nmsgstr \"자와 티무르\"\n\n#: id/id_choices.py:26 id/id_choices.py:94\nmsgid \"Kalimantan Barat\"\nmsgstr \"칼리만탄 바라트\"\n\n#: id/id_choices.py:27 id/id_choices.py:72\nmsgid \"Kalimantan Selatan\"\nmsgstr \"칼리만탄 슬라탄\"\n\n#: id/id_choices.py:28 id/id_choices.py:95\nmsgid \"Kalimantan Tengah\"\nmsgstr \"칼리만탄 텐가\"\n\n#: id/id_choices.py:29 id/id_choices.py:96\nmsgid \"Kalimantan Timur\"\nmsgstr \"칼리만탄 티무르\"\n\n#: id/id_choices.py:30\nmsgid \"Kepulauan Bangka-Belitung\"\nmsgstr \"케풀라우안 방카-벨리텅\"\n\n#: id/id_choices.py:31 id/id_choices.py:68\nmsgid \"Kepulauan Riau\"\nmsgstr \"케풀라우안 리아우\"\n\n#: id/id_choices.py:32 id/id_choices.py:61\nmsgid \"Lampung\"\nmsgstr \"렘풍\"\n\n#: id/id_choices.py:33 id/id_choices.py:76\nmsgid \"Maluku\"\nmsgstr \"말루쿠\"\n\n#: id/id_choices.py:34 id/id_choices.py:77\nmsgid \"Maluku Utara\"\nmsgstr \"말루쿠 우타라\"\n\n#: id/id_choices.py:35\nmsgid \"Nusa Tenggara Barat\"\nmsgstr \"누사 텐가라 바라트\"\n\n#: id/id_choices.py:36\nmsgid \"Nusa Tenggara Timur\"\nmsgstr \"누사 텐가라 티무르\"\n\n#: id/id_choices.py:37\nmsgid \"Papua\"\nmsgstr \"파푸아\"\n\n#: id/id_choices.py:38\nmsgid \"Papua Barat\"\nmsgstr \"파푸아 바라트\"\n\n#: id/id_choices.py:39 id/id_choices.py:66\nmsgid \"Riau\"\nmsgstr \"리아우\"\n\n#: id/id_choices.py:40 id/id_choices.py:74\nmsgid \"Sulawesi Barat\"\nmsgstr \"술라웨시 바라트\"\n\n#: id/id_choices.py:41 id/id_choices.py:75\nmsgid \"Sulawesi Selatan\"\nmsgstr \"술라웨시 슬라탄\"\n\n#: id/id_choices.py:42 id/id_choices.py:82\nmsgid \"Sulawesi Tengah\"\nmsgstr \"술라웨시 Tengah\"\n\n#: id/id_choices.py:43 id/id_choices.py:85\nmsgid \"Sulawesi Tenggara\"\nmsgstr \"술라웨시 Tenggara\"\n\n#: id/id_choices.py:44\nmsgid \"Sulawesi Utara\"\nmsgstr \"술라웨시 우타라\"\n\n#: id/id_choices.py:45 id/id_choices.py:58\nmsgid \"Sumatera Barat\"\nmsgstr \"수마 테라 바라트\"\n\n#: id/id_choices.py:46 id/id_choices.py:62\nmsgid \"Sumatera Selatan\"\nmsgstr \"수마트라 슬라탄\"\n\n#: id/id_choices.py:47 id/id_choices.py:64\nmsgid \"Sumatera Utara\"\nmsgstr \"수마트라 우타라\"\n\n#: id/id_choices.py:52\nmsgid \"Magelang\"\nmsgstr \"Magelang\"\n\n#: id/id_choices.py:54\nmsgid \"Surakarta - Solo\"\nmsgstr \"수라 카르타 - 솔로몬\"\n\n#: id/id_choices.py:55\nmsgid \"Madiun\"\nmsgstr \"Madiun\"\n\n#: id/id_choices.py:56\nmsgid \"Kediri\"\nmsgstr \"Kediri\"\n\n#: id/id_choices.py:59\nmsgid \"Tapanuli\"\nmsgstr \"Tapanuli\"\n\n#: id/id_choices.py:65\nmsgid \"Nanggroe Aceh Darussalam\"\nmsgstr \"Nanggroe 아체 Darussalam\"\n\n#: id/id_choices.py:67\nmsgid \"Kepulauan Bangka Belitung\"\nmsgstr \"Kepulauan Bangka Belitung\"\n\n#: id/id_choices.py:69\nmsgid \"Corps Consulate\"\nmsgstr \"군단 영사관\"\n\n#: id/id_choices.py:70\nmsgid \"Corps Diplomatic\"\nmsgstr \"군단 외교\"\n\n#: id/id_choices.py:71\nmsgid \"Bandung\"\nmsgstr \"반둥\"\n\n#: id/id_choices.py:73\nmsgid \"Sulawesi Utara Daratan\"\nmsgstr \"술라웨시의 우타라 Daratan\"\n\n#: id/id_choices.py:78\nmsgid \"NTT - Timor\"\nmsgstr \"NTT - 티모르\"\n\n#: id/id_choices.py:80\nmsgid \"Sulawesi Utara Kepulauan\"\nmsgstr \"술라웨시의 우타라 Kepulauan\"\n\n#: id/id_choices.py:83\nmsgid \"NTB - Lombok\"\nmsgstr \"NTB - 롬복\"\n\n#: id/id_choices.py:84\nmsgid \"Papua dan Papua Barat\"\nmsgstr \"파푸아 댄 파푸아 바라트\"\n\n#: id/id_choices.py:86\nmsgid \"Cirebon\"\nmsgstr \"Cirebon\"\n\n#: id/id_choices.py:87\nmsgid \"NTB - Sumbawa\"\nmsgstr \"NTB - Sumbawa\"\n\n#: id/id_choices.py:88\nmsgid \"NTT - Flores\"\nmsgstr \"NTT - 플로레스\"\n\n#: id/id_choices.py:89\nmsgid \"NTT - Sumba\"\nmsgstr \"NTT - Sumba\"\n\n#: id/id_choices.py:90\nmsgid \"Bogor\"\nmsgstr \"보고르\"\n\n#: id/id_choices.py:91\nmsgid \"Pekalongan\"\nmsgstr \"Pekalongan\"\n\n#: id/id_choices.py:92\nmsgid \"Semarang\"\nmsgstr \"세마랑\"\n\n#: id/id_choices.py:93\nmsgid \"Pati\"\nmsgstr \"Pati\"\n\n#: id/id_choices.py:97\nmsgid \"Surabaya\"\nmsgstr \"수라바야\"\n\n#: id/id_choices.py:98\nmsgid \"Madura\"\nmsgstr \"Madura\"\n\n#: id/id_choices.py:99\nmsgid \"Malang\"\nmsgstr \"Malang\"\n\n#: id/id_choices.py:100\nmsgid \"Jember\"\nmsgstr \"Jember\"\n\n#: id/id_choices.py:101\nmsgid \"Banyumas\"\nmsgstr \"Banyumas\"\n\n#: id/id_choices.py:102\nmsgid \"Federal Government\"\nmsgstr \"연방 정부\"\n\n#: id/id_choices.py:103\nmsgid \"Bojonegoro\"\nmsgstr \"Bojonegoro\"\n\n#: id/id_choices.py:104\nmsgid \"Purwakarta\"\nmsgstr \"Purwakarta\"\n\n#: id/id_choices.py:105\nmsgid \"Sidoarjo\"\nmsgstr \"Sidoarjo\"\n\n#: id/id_choices.py:106\nmsgid \"Garut\"\nmsgstr \"Garut\"\n\n#: ie/ie_counties.py:8\nmsgid \"Antrim\"\nmsgstr \"앤트림\"\n\n#: ie/ie_counties.py:9\nmsgid \"Armagh\"\nmsgstr \"Armagh\"\n\n#: ie/ie_counties.py:10\nmsgid \"Carlow\"\nmsgstr \"Carlow\"\n\n#: ie/ie_counties.py:11\nmsgid \"Cavan\"\nmsgstr \"캐번\"\n\n#: ie/ie_counties.py:12\nmsgid \"Clare\"\nmsgstr \"클레어\"\n\n#: ie/ie_counties.py:13\nmsgid \"Cork\"\nmsgstr \"코르크\"\n\n#: ie/ie_counties.py:14\nmsgid \"Derry\"\nmsgstr \"데리\"\n\n#: ie/ie_counties.py:15\nmsgid \"Donegal\"\nmsgstr \"도네갈\"\n\n#: ie/ie_counties.py:16\nmsgid \"Down\"\nmsgstr \"Down\"\n\n#: ie/ie_counties.py:17\nmsgid \"Dublin\"\nmsgstr \"더블린\"\n\n#: ie/ie_counties.py:18\nmsgid \"Fermanagh\"\nmsgstr \"Fermanagh\"\n\n#: ie/ie_counties.py:19\nmsgid \"Galway\"\nmsgstr \"골웨이\"\n\n#: ie/ie_counties.py:20\nmsgid \"Kerry\"\nmsgstr \"케리\"\n\n#: ie/ie_counties.py:21\nmsgid \"Kildare\"\nmsgstr \"킬데어\"\n\n#: ie/ie_counties.py:22\nmsgid \"Kilkenny\"\nmsgstr \"킬케니\"\n\n#: ie/ie_counties.py:23\nmsgid \"Laois\"\nmsgstr \"라오 이스\"\n\n#: ie/ie_counties.py:24\nmsgid \"Leitrim\"\nmsgstr \"리트림\"\n\n#: ie/ie_counties.py:25\nmsgid \"Limerick\"\nmsgstr \"Limerick\"\n\n#: ie/ie_counties.py:26\nmsgid \"Longford\"\nmsgstr \"롱퍼드\"\n\n#: ie/ie_counties.py:27\nmsgid \"Louth\"\nmsgstr \"로우쓰\"\n\n#: ie/ie_counties.py:28\nmsgid \"Mayo\"\nmsgstr \"메이요\"\n\n#: ie/ie_counties.py:29\nmsgid \"Meath\"\nmsgstr \"미스\"\n\n#: ie/ie_counties.py:30\nmsgid \"Monaghan\"\nmsgstr \"모나핸\"\n\n#: ie/ie_counties.py:31\nmsgid \"Offaly\"\nmsgstr \"오팔리\"\n\n#: ie/ie_counties.py:32\nmsgid \"Roscommon\"\nmsgstr \"로스 커먼\"\n\n#: ie/ie_counties.py:33\nmsgid \"Sligo\"\nmsgstr \"슬라이고\"\n\n#: ie/ie_counties.py:34\nmsgid \"Tipperary\"\nmsgstr \"Tipperary\"\n\n#: ie/ie_counties.py:35\nmsgid \"Tyrone\"\nmsgstr \"Tyrone\"\n\n#: ie/ie_counties.py:36\nmsgid \"Waterford\"\nmsgstr \"워터 포드\"\n\n#: ie/ie_counties.py:37\nmsgid \"Westmeath\"\nmsgstr \"Westmeath\"\n\n#: ie/ie_counties.py:38\nmsgid \"Wexford\"\nmsgstr \"웩스포드\"\n\n#: ie/ie_counties.py:39\nmsgid \"Wicklow\"\nmsgstr \"위클로\"\n\n#: il/forms.py:32\nmsgid \"Enter a postal code in the format XXXXX\"\nmsgstr \"XXXXX형식의 우편 번호를 입력하세요.\"\n\n#: il/forms.py:51\nmsgid \"Enter a valid ID number.\"\nmsgstr \"올바른 ID 번호를 입력하세요.\"\n\n#: in_/forms.py:41\nmsgid \"Enter a zip code in the format XXXXXX or XXX XXX.\"\nmsgstr \"\"\n\n#: in_/forms.py:64\nmsgid \"Enter an Indian state or territory.\"\nmsgstr \"\"\n\n#: in_/forms.py:103\nmsgid \"Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.\"\nmsgstr \"\"\n\n#: is_/forms.py:22\nmsgid \"\"\n\"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.\"\nmsgstr \"올바른 아이슬란드 주민번호를 입력하세요. (XXXXXX-XXXX 형식)\"\n\n#: is_/forms.py:23\nmsgid \"The Icelandic identification number is not valid.\"\nmsgstr \"아이슬란드 주민번호가 올바르지 않습니다.\"\n\n#: it/forms.py:21\nmsgid \"Enter a valid zip code.\"\nmsgstr \"올바른 우편번호를 입력하세요.\"\n\n#: it/forms.py:48\nmsgid \"Enter a valid Social Security number.\"\nmsgstr \"올바른 사회보장번호를 입력하세요.\"\n\n#: it/forms.py:73\nmsgid \"Enter a valid VAT number.\"\nmsgstr \"올바른 VAT 번호를 입력하세요.\"\n\n#: jp/forms.py:19\nmsgid \"Enter a postal code in the format XXXXXXX or XXX-XXXX.\"\nmsgstr \"우편번호를 입력하세요. (XXXXXXX or XXX-XXXX 형식)\"\n\n#: jp/jp_prefectures.py:4\nmsgid \"Hokkaido\"\nmsgstr \"홋카이도\"\n\n#: jp/jp_prefectures.py:5\nmsgid \"Aomori\"\nmsgstr \"아오모리 현\"\n\n#: jp/jp_prefectures.py:6\nmsgid \"Iwate\"\nmsgstr \"이와테 현\"\n\n#: jp/jp_prefectures.py:7\nmsgid \"Miyagi\"\nmsgstr \"미야기 현\"\n\n#: jp/jp_prefectures.py:8\nmsgid \"Akita\"\nmsgstr \"아키타 현\"\n\n#: jp/jp_prefectures.py:9\nmsgid \"Yamagata\"\nmsgstr \"야마가타 현\"\n\n#: jp/jp_prefectures.py:10\nmsgid \"Fukushima\"\nmsgstr \"후쿠시마 현\"\n\n#: jp/jp_prefectures.py:11\nmsgid \"Ibaraki\"\nmsgstr \"이바라키 현\"\n\n#: jp/jp_prefectures.py:12\nmsgid \"Tochigi\"\nmsgstr \"도치기 현\"\n\n#: jp/jp_prefectures.py:13\nmsgid \"Gunma\"\nmsgstr \"군마 현\"\n\n#: jp/jp_prefectures.py:14\nmsgid \"Saitama\"\nmsgstr \"사이타마 현\"\n\n#: jp/jp_prefectures.py:15\nmsgid \"Chiba\"\nmsgstr \"지바 현\"\n\n#: jp/jp_prefectures.py:16\nmsgid \"Tokyo\"\nmsgstr \"도쿄 도\"\n\n#: jp/jp_prefectures.py:17\nmsgid \"Kanagawa\"\nmsgstr \"카나가와 현\"\n\n#: jp/jp_prefectures.py:18\nmsgid \"Yamanashi\"\nmsgstr \"야마나시 현\"\n\n#: jp/jp_prefectures.py:19\nmsgid \"Nagano\"\nmsgstr \"나가노 현\"\n\n#: jp/jp_prefectures.py:20\nmsgid \"Niigata\"\nmsgstr \"니가타 현\"\n\n#: jp/jp_prefectures.py:21\nmsgid \"Toyama\"\nmsgstr \"도야마 현\"\n\n#: jp/jp_prefectures.py:22\nmsgid \"Ishikawa\"\nmsgstr \"이시카와 현\"\n\n#: jp/jp_prefectures.py:23\nmsgid \"Fukui\"\nmsgstr \"후쿠이 현\"\n\n#: jp/jp_prefectures.py:24\nmsgid \"Gifu\"\nmsgstr \"기후 현\"\n\n#: jp/jp_prefectures.py:25\nmsgid \"Shizuoka\"\nmsgstr \"시즈오카 현\"\n\n#: jp/jp_prefectures.py:26\nmsgid \"Aichi\"\nmsgstr \"아이치 현\"\n\n#: jp/jp_prefectures.py:27\nmsgid \"Mie\"\nmsgstr \"미에 현\"\n\n#: jp/jp_prefectures.py:28\nmsgid \"Shiga\"\nmsgstr \"시가 현\"\n\n#: jp/jp_prefectures.py:29\nmsgid \"Kyoto\"\nmsgstr \"교토 부\"\n\n#: jp/jp_prefectures.py:30\nmsgid \"Osaka\"\nmsgstr \"오사카 부\"\n\n#: jp/jp_prefectures.py:31\nmsgid \"Hyogo\"\nmsgstr \"효고 현\"\n\n#: jp/jp_prefectures.py:32\nmsgid \"Nara\"\nmsgstr \"나라 현\"\n\n#: jp/jp_prefectures.py:33\nmsgid \"Wakayama\"\nmsgstr \"와카야마 현\"\n\n#: jp/jp_prefectures.py:34\nmsgid \"Tottori\"\nmsgstr \"돗토리 현\"\n\n#: jp/jp_prefectures.py:35\nmsgid \"Shimane\"\nmsgstr \"시마네 현\"\n\n#: jp/jp_prefectures.py:36\nmsgid \"Okayama\"\nmsgstr \"아카야마 현\"\n\n#: jp/jp_prefectures.py:37\nmsgid \"Hiroshima\"\nmsgstr \"히로시마 현\"\n\n#: jp/jp_prefectures.py:38\nmsgid \"Yamaguchi\"\nmsgstr \"야마구치 현\"\n\n#: jp/jp_prefectures.py:39\nmsgid \"Tokushima\"\nmsgstr \"도구시마 현\"\n\n#: jp/jp_prefectures.py:40\nmsgid \"Kagawa\"\nmsgstr \"카가와 현\"\n\n#: jp/jp_prefectures.py:41\nmsgid \"Ehime\"\nmsgstr \"에히메 현\"\n\n#: jp/jp_prefectures.py:42\nmsgid \"Kochi\"\nmsgstr \"고치 현\"\n\n#: jp/jp_prefectures.py:43\nmsgid \"Fukuoka\"\nmsgstr \"후쿠오카 현\"\n\n#: jp/jp_prefectures.py:44\nmsgid \"Saga\"\nmsgstr \"사가 현\"\n\n#: jp/jp_prefectures.py:45\nmsgid \"Nagasaki\"\nmsgstr \"나가사키 현\"\n\n#: jp/jp_prefectures.py:46\nmsgid \"Kumamoto\"\nmsgstr \"구마모토 현\"\n\n#: jp/jp_prefectures.py:47\nmsgid \"Oita\"\nmsgstr \"오이타 현\"\n\n#: jp/jp_prefectures.py:48\nmsgid \"Miyazaki\"\nmsgstr \"미야자키 현\"\n\n#: jp/jp_prefectures.py:49\nmsgid \"Kagoshima\"\nmsgstr \"가고시마 현\"\n\n#: jp/jp_prefectures.py:50\nmsgid \"Okinawa\"\nmsgstr \"오키나와 현\"\n\n#: kw/forms.py:27\nmsgid \"Enter a valid Kuwaiti Civil ID number\"\nmsgstr \"올바른 쿠웨이트 주민번호를 입력하세요.\"\n\n#: mk/forms.py:18\nmsgid \"\"\n\"Identity card numbers must contain either 4 to 7 digits or an uppercase \"\n\"letter and 7 digits.\"\nmsgstr \"\"\n\n#: mk/forms.py:57 si/forms.py:24\nmsgid \"This field should contain exactly 13 digits.\"\nmsgstr \"\"\n\n#: mk/forms.py:58\nmsgid \"The first 7 digits of the UMCN must represent a valid past date.\"\nmsgstr \"\"\n\n#: mk/forms.py:59\nmsgid \"The UMCN is not valid.\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:10\nmsgid \"Aerodrom\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:11\nmsgid \"Aračinovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:12\nmsgid \"Berovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:13\nmsgid \"Bitola\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:14\nmsgid \"Bogdanci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:15\nmsgid \"Bogovinje\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:16\nmsgid \"Bosilovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:17\nmsgid \"Brvenica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:18\nmsgid \"Butel\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:19\nmsgid \"Valandovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:20\nmsgid \"Vasilevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:21\nmsgid \"Vevčani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:22\nmsgid \"Veles\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:23\nmsgid \"Vinica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:24\nmsgid \"Vraneštica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:25\nmsgid \"Vrapčište\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:26\nmsgid \"Gazi Baba\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:27\nmsgid \"Gevgelija\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:28\nmsgid \"Gostivar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:29\nmsgid \"Gradsko\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:30\nmsgid \"Debar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:31\nmsgid \"Debarca\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:32\nmsgid \"Delčevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:33\nmsgid \"Demir Kapija\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:34\nmsgid \"Demir Hisar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:35\nmsgid \"Dolneni\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:36\nmsgid \"Drugovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:37\nmsgid \"Gjorče Petrov\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:38\nmsgid \"Želino\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:39\nmsgid \"Zajas\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:40\nmsgid \"Zelenikovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:41\nmsgid \"Zrnovci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:42\nmsgid \"Ilinden\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:43\nmsgid \"Jegunovce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:44\nmsgid \"Kavadarci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:45\nmsgid \"Karbinci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:46\nmsgid \"Karpoš\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:47\nmsgid \"Kisela Voda\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:48\nmsgid \"Kičevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:49\nmsgid \"Konče\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:50\nmsgid \"Koćani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:51\nmsgid \"Kratovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:52\nmsgid \"Kriva Palanka\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:53\nmsgid \"Krivogaštani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:54\nmsgid \"Kruševo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:55\nmsgid \"Kumanovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:56\nmsgid \"Lipkovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:57\nmsgid \"Lozovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:58\nmsgid \"Mavrovo i Rostuša\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:59\nmsgid \"Makedonska Kamenica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:60\nmsgid \"Makedonski Brod\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:61\nmsgid \"Mogila\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:62\nmsgid \"Negotino\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:63\nmsgid \"Novaci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:64\nmsgid \"Novo Selo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:65\nmsgid \"Oslomej\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:66\nmsgid \"Ohrid\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:67\nmsgid \"Petrovec\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:68\nmsgid \"Pehčevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:69\nmsgid \"Plasnica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:70\nmsgid \"Prilep\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:71\nmsgid \"Probištip\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:72\nmsgid \"Radoviš\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:73\nmsgid \"Rankovce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:74\nmsgid \"Resen\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:75\nmsgid \"Rosoman\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:76\nmsgid \"Saraj\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:77\nmsgid \"Sveti Nikole\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:78\nmsgid \"Sopište\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:79\nmsgid \"Star Dojran\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:80\nmsgid \"Staro Nagoričane\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:81\nmsgid \"Struga\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:82\nmsgid \"Strumica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:83\nmsgid \"Studeničani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:84\nmsgid \"Tearce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:85\nmsgid \"Tetovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:86\nmsgid \"Centar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:87\nmsgid \"Centar-Župa\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:88\nmsgid \"Čair\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:89\nmsgid \"Čaška\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:90\nmsgid \"Češinovo-Obleševo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:91\nmsgid \"Čučer-Sandevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:92\nmsgid \"Štip\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:93\nmsgid \"Šuto Orizari\"\nmsgstr \"\"\n\n#: mk/models.py:11\nmsgid \"Macedonian identity card number\"\nmsgstr \"\"\n\n#: mk/models.py:25\nmsgid \"A Macedonian municipality (2 character code)\"\nmsgstr \"\"\n\n#: mk/models.py:35\nmsgid \"Unique master citizen number (13 digits)\"\nmsgstr \"\"\n\n#: mx/forms.py:67\nmsgid \"Enter a valid zip code in the format XXXXX.\"\nmsgstr \"\"\n\n#: mx/forms.py:110\nmsgid \"Enter a valid RFC.\"\nmsgstr \"\"\n\n#: mx/forms.py:111\nmsgid \"Invalid checksum for RFC.\"\nmsgstr \"\"\n\n#: mx/forms.py:191\nmsgid \"Enter a valid CURP.\"\nmsgstr \"\"\n\n#: mx/forms.py:192\nmsgid \"Invalid checksum for CURP.\"\nmsgstr \"\"\n\n#: mx/models.py:14\nmsgid \"Mexico state (three uppercase letters)\"\nmsgstr \"\"\n\n#: mx/models.py:27\nmsgid \"Mexico zip code\"\nmsgstr \"\"\n\n#: mx/models.py:44\nmsgid \"Mexican RFC\"\nmsgstr \"\"\n\n#: mx/models.py:61\nmsgid \"Mexican CURP\"\nmsgstr \"\"\n\n#: mx/mx_states.py:14\nmsgid \"Aguascalientes\"\nmsgstr \"아과스칼리엔테스 주\"\n\n#: mx/mx_states.py:15\nmsgid \"Baja California\"\nmsgstr \"바하칼리포르니아 주\"\n\n#: mx/mx_states.py:16\nmsgid \"Baja California Sur\"\nmsgstr \"바하칼리포르니아수르 주\"\n\n#: mx/mx_states.py:17\nmsgid \"Campeche\"\nmsgstr \"캄페체 주\"\n\n#: mx/mx_states.py:18\nmsgid \"Chihuahua\"\nmsgstr \"치와와 주\"\n\n#: mx/mx_states.py:19\nmsgid \"Chiapas\"\nmsgstr \"치아파스 주\"\n\n#: mx/mx_states.py:20\nmsgid \"Coahuila\"\nmsgstr \"코아우일라 주\"\n\n#: mx/mx_states.py:21\nmsgid \"Colima\"\nmsgstr \"콜리마 주\"\n\n#: mx/mx_states.py:22\nmsgid \"Distrito Federal\"\nmsgstr \"연방구 (멕시코시)\"\n\n#: mx/mx_states.py:23\nmsgid \"Durango\"\nmsgstr \"두랑고 주\"\n\n#: mx/mx_states.py:24\nmsgid \"Guerrero\"\nmsgstr \"게레로 주\"\n\n#: mx/mx_states.py:25\nmsgid \"Guanajuato\"\nmsgstr \"과나후아토 주\"\n\n#: mx/mx_states.py:26\nmsgid \"Hidalgo\"\nmsgstr \"이달고 주\"\n\n#: mx/mx_states.py:27\nmsgid \"Jalisco\"\nmsgstr \"할리스코 주\"\n\n#: mx/mx_states.py:28\nmsgid \"Estado de México\"\nmsgstr \"멕시코 주\"\n\n#: mx/mx_states.py:29\nmsgid \"Michoacán\"\nmsgstr \"미초아칸 주\"\n\n#: mx/mx_states.py:30\nmsgid \"Morelos\"\nmsgstr \"모렐로스 주\"\n\n#: mx/mx_states.py:31\nmsgid \"Nayarit\"\nmsgstr \"나야리트 주\"\n\n#: mx/mx_states.py:32\nmsgid \"Nuevo León\"\nmsgstr \"누에보레온 주\"\n\n#: mx/mx_states.py:33\nmsgid \"Oaxaca\"\nmsgstr \"오아하카 주\"\n\n#: mx/mx_states.py:34\nmsgid \"Puebla\"\nmsgstr \"푸에블라 주\"\n\n#: mx/mx_states.py:35\nmsgid \"Querétaro\"\nmsgstr \"케레타로 주\"\n\n#: mx/mx_states.py:36\nmsgid \"Quintana Roo\"\nmsgstr \"킨타나로오 주\"\n\n#: mx/mx_states.py:37\nmsgid \"Sinaloa\"\nmsgstr \"시날로아 주\"\n\n#: mx/mx_states.py:38\nmsgid \"San Luis Potosí\"\nmsgstr \"산루이스포토시 주\"\n\n#: mx/mx_states.py:39\nmsgid \"Sonora\"\nmsgstr \"소노라 주\"\n\n#: mx/mx_states.py:40\nmsgid \"Tabasco\"\nmsgstr \"타바스코 주\"\n\n#: mx/mx_states.py:41\nmsgid \"Tamaulipas\"\nmsgstr \"타마울리파스 주\"\n\n#: mx/mx_states.py:42\nmsgid \"Tlaxcala\"\nmsgstr \"틀락스칼라 주\"\n\n#: mx/mx_states.py:43\nmsgid \"Veracruz\"\nmsgstr \"베라크루스 주\"\n\n#: mx/mx_states.py:44\nmsgid \"Yucatán\"\nmsgstr \"유카탄 주\"\n\n#: mx/mx_states.py:45\nmsgid \"Zacatecas\"\nmsgstr \"사카테카스 주\"\n\n#: nl/forms.py:26\nmsgid \"Enter a valid postal code\"\nmsgstr \"올바른 우편번호를 입력하세요.\"\n\n#: nl/forms.py:82\nmsgid \"Enter a valid SoFi number\"\nmsgstr \"올바른 SoFi 번호를 입력하세요.\"\n\n#: nl/nl_provinces.py:4\nmsgid \"Drenthe\"\nmsgstr \"드렌터 주\"\n\n#: nl/nl_provinces.py:5\nmsgid \"Flevoland\"\nmsgstr \"플레볼란트 주\"\n\n#: nl/nl_provinces.py:6\nmsgid \"Friesland\"\nmsgstr \"프리슬란트 주\"\n\n#: nl/nl_provinces.py:7\nmsgid \"Gelderland\"\nmsgstr \"힐데를란트 주\"\n\n#: nl/nl_provinces.py:8\nmsgid \"Groningen\"\nmsgstr \"흐로닝언 주\"\n\n#: nl/nl_provinces.py:10\nmsgid \"Noord-Brabant\"\nmsgstr \"노르트브라반트 주\"\n\n#: nl/nl_provinces.py:11\nmsgid \"Noord-Holland\"\nmsgstr \"노르트홀란트 주\"\n\n#: nl/nl_provinces.py:12\nmsgid \"Overijssel\"\nmsgstr \"오버레이셜 주\"\n\n#: nl/nl_provinces.py:13\nmsgid \"Utrecht\"\nmsgstr \"위트레흐트 주\"\n\n#: nl/nl_provinces.py:14\nmsgid \"Zeeland\"\nmsgstr \"제일란트 주\"\n\n#: nl/nl_provinces.py:15\nmsgid \"Zuid-Holland\"\nmsgstr \"자위트홀란트 주\"\n\n#: no/forms.py:39\nmsgid \"Enter a valid Norwegian social security number.\"\nmsgstr \"올바른 노르웨이 사회보장번호를 입력해 주세요.\"\n\n#: pe/forms.py:28\nmsgid \"This field requires 8 digits.\"\nmsgstr \"이 항목은 8자리 숫자로 필요합니다.\"\n\n#: pe/forms.py:56\nmsgid \"This field requires 11 digits.\"\nmsgstr \"이 항목은 11자리 숫자가 필요합니다.\"\n\n#: pl/forms.py:42\nmsgid \"National Identification Number consists of 11 digits.\"\nmsgstr \"주민번호는 11자리 숫자로 구성됩니다.\"\n\n#: pl/forms.py:43\nmsgid \"Wrong checksum for the National Identification Number.\"\nmsgstr \"주민번호 체크섬이 올바르지 않습니다.\"\n\n#: pl/forms.py:79\nmsgid \"National ID Card Number consists of 3 letters and 6 digits.\"\nmsgstr \"\"\n\n#: pl/forms.py:80\nmsgid \"Wrong checksum for the National ID Card Number.\"\nmsgstr \"\"\n\n#: pl/forms.py:131\nmsgid \"\"\n\"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or \"\n\"XXXXXXXXXX.\"\nmsgstr \"\"\n\n#: pl/forms.py:132\nmsgid \"Wrong checksum for the Tax Number (NIP).\"\nmsgstr \"Tax 번호(NIP)의 체크섬이 올바르지 않습니다.\"\n\n#: pl/forms.py:171\nmsgid \"National Business Register Number (REGON) consists of 9 or 14 digits.\"\nmsgstr \"사업자 등록번호(REGON)은 9자리 또는 14자리의 숫자로 구성됩니다.\"\n\n#: pl/forms.py:172\nmsgid \"Wrong checksum for the National Business Register Number (REGON).\"\nmsgstr \"사업자 등록번호(REGON)의 체크섬이 올바르지 않습니다.\"\n\n#: pl/forms.py:212\nmsgid \"Enter a postal code in the format XX-XXX.\"\nmsgstr \"우편번호를 입력하세요. (XX-XXX 형식)\"\n\n#: pl/pl_voivodeships.py:8\nmsgid \"Lower Silesia\"\nmsgstr \"Lower Silesia\"\n\n#: pl/pl_voivodeships.py:9\nmsgid \"Kuyavia-Pomerania\"\nmsgstr \"Kuyavia-Pomerania\"\n\n#: pl/pl_voivodeships.py:10\nmsgid \"Lublin\"\nmsgstr \"Lublin\"\n\n#: pl/pl_voivodeships.py:11\nmsgid \"Lubusz\"\nmsgstr \"Lubusz\"\n\n#: pl/pl_voivodeships.py:12\nmsgid \"Lodz\"\nmsgstr \"Lodz\"\n\n#: pl/pl_voivodeships.py:13\nmsgid \"Lesser Poland\"\nmsgstr \"Lesser Poland\"\n\n#: pl/pl_voivodeships.py:14\nmsgid \"Masovia\"\nmsgstr \"Masovia\"\n\n#: pl/pl_voivodeships.py:15\nmsgid \"Opole\"\nmsgstr \"Opole\"\n\n#: pl/pl_voivodeships.py:16\nmsgid \"Subcarpatia\"\nmsgstr \"Subcarpatia\"\n\n#: pl/pl_voivodeships.py:17\nmsgid \"Podlasie\"\nmsgstr \"Podlasie\"\n\n#: pl/pl_voivodeships.py:18\nmsgid \"Pomerania\"\nmsgstr \"Pomerania\"\n\n#: pl/pl_voivodeships.py:19\nmsgid \"Silesia\"\nmsgstr \"Silesia\"\n\n#: pl/pl_voivodeships.py:20\nmsgid \"Swietokrzyskie\"\nmsgstr \"Swietokrzyskie\"\n\n#: pl/pl_voivodeships.py:21\nmsgid \"Warmia-Masuria\"\nmsgstr \"Warmia-Masuria\"\n\n#: pl/pl_voivodeships.py:22\nmsgid \"Greater Poland\"\nmsgstr \"Greater Poland\"\n\n#: pl/pl_voivodeships.py:23\nmsgid \"West Pomerania\"\nmsgstr \"West Pomerania\"\n\n#: pt/forms.py:19\nmsgid \"Enter a zip code in the format XXXX-XXX.\"\nmsgstr \"우편번호는 XXXXX-XXX 형식으로 입력하세요.\"\n\n#: pt/forms.py:39\nmsgid \"Phone numbers must have 9 digits, or start by + or 00.\"\nmsgstr \"전화번호는 9자리 숫자이거나 + 또는 00으로 시작해야 합니다.\"\n\n#: ro/forms.py:22\nmsgid \"Enter a valid CIF.\"\nmsgstr \"올바른 CIF를 입력하세요.\"\n\n#: ro/forms.py:59\nmsgid \"Enter a valid CNP.\"\nmsgstr \"올바른 CNP를 입력하세요.\"\n\n#: ro/forms.py:143\nmsgid \"Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format\"\nmsgstr \"올바른 IBAN을 입력하세요. (ROXX-XXXX-XXXX-XXXX-XXXX-XXXX 형식)\"\n\n#: ro/forms.py:175\nmsgid \"Phone numbers must be in XXXX-XXXXXX format.\"\nmsgstr \"전화번호는 XXXX-XXXXXX 형식이어야 합니다.\"\n\n#: ro/forms.py:200\nmsgid \"Enter a valid postal code in the format XXXXXX\"\nmsgstr \"올바른 우편번호를 입력하세요. (XXXXXX 형식)\"\n\n#: ru/forms.py:37\nmsgid \"Enter a postal code in the format XXXXXX.\"\nmsgstr \"\"\n\n#: ru/forms.py:50\nmsgid \"Enter a passport number in the format XXXX XXXXXX.\"\nmsgstr \"\"\n\n#: ru/forms.py:63\nmsgid \"Enter a passport number in the format XX XXXXXXX.\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:10\nmsgid \"Central Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:11\nmsgid \"South Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:12\nmsgid \"North-West Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:13\nmsgid \"Far-East Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:14\nmsgid \"Siberian Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:15\nmsgid \"Ural Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:16\nmsgid \"Privolzhsky Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:17\nmsgid \"North-Caucasian Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:21\nmsgid \"Moskva\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:22\nmsgid \"Saint-Peterburg\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:23\nmsgid \"Moskovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:24\nmsgid \"Adygeya, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:25\nmsgid \"Bashkortostan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:26\nmsgid \"Buryatia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:27\nmsgid \"Altay, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:28\nmsgid \"Dagestan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:29\nmsgid \"Ingushskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:30\nmsgid \"Kabardino-Balkarskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:31\nmsgid \"Kalmykia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:32\nmsgid \"Karachaevo-Cherkesskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:33\nmsgid \"Karelia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:34\nmsgid \"Komi, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:35\nmsgid \"Mariy Ehl, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:36\nmsgid \"Mordovia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:37\nmsgid \"Sakha, Respublika (Yakutiya)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:38\nmsgid \"Severnaya Osetia, Respublika (Alania)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:39\nmsgid \"Tatarstan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:40\nmsgid \"Tyva, Respublika (Tuva)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:41\nmsgid \"Udmurtskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:42\nmsgid \"Khakassiya, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:43\nmsgid \"Chechenskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:44\nmsgid \"Chuvashskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:45\nmsgid \"Altayskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:46\nmsgid \"Zabaykalskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:47\nmsgid \"Kamchatskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:48\nmsgid \"Krasnodarskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:49\nmsgid \"Krasnoyarskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:50\nmsgid \"Permskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:51\nmsgid \"Primorskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:52\nmsgid \"Stavropol'siyy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:53\nmsgid \"Khabarovskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:54\nmsgid \"Amurskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:55\nmsgid \"Arkhangel'skaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:56\nmsgid \"Astrakhanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:57\nmsgid \"Belgorodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:58\nmsgid \"Bryanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:59\nmsgid \"Vladimirskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:60\nmsgid \"Volgogradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:61\nmsgid \"Vologodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:62\nmsgid \"Voronezhskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:63\nmsgid \"Ivanovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:64\nmsgid \"Irkutskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:65\nmsgid \"Kaliningradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:66\nmsgid \"Kaluzhskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:67\nmsgid \"Kemerovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:68\nmsgid \"Kirovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:69\nmsgid \"Kostromskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:70\nmsgid \"Kurganskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:71\nmsgid \"Kurskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:72\nmsgid \"Leningradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:73\nmsgid \"Lipeckaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:74\nmsgid \"Magadanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:75\nmsgid \"Murmanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:76\nmsgid \"Nizhegorodskaja oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:77\nmsgid \"Novgorodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:78\nmsgid \"Novosibirskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:79\nmsgid \"Omskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:80\nmsgid \"Orenburgskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:81\nmsgid \"Orlovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:82\nmsgid \"Penzenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:83\nmsgid \"Pskovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:84\nmsgid \"Rostovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:85\nmsgid \"Rjazanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:86\nmsgid \"Samarskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:87\nmsgid \"Saratovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:88\nmsgid \"Sakhalinskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:89\nmsgid \"Sverdlovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:90\nmsgid \"Smolenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:91\nmsgid \"Tambovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:92\nmsgid \"Tverskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:93\nmsgid \"Tomskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:94\nmsgid \"Tul'skaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:95\nmsgid \"Tyumenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:96\nmsgid \"Ul'ianovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:97\nmsgid \"Chelyabinskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:98\nmsgid \"Yaroslavskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:99\nmsgid \"Evreyskaya avtonomnaja oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:100\nmsgid \"Neneckiy autonomnyy okrug\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:101\nmsgid \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:102\nmsgid \"Chukotskiy avtonomnyy okrug\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:103\nmsgid \"Yamalo-Neneckiy avtonomnyy okrug\"\nmsgstr \"\"\n\n#: se/forms.py:54\nmsgid \"Enter a valid Swedish organisation number.\"\nmsgstr \"올바른 스웨덴 기관 번호를 입력하세요.\"\n\n#: se/forms.py:111\nmsgid \"Enter a valid Swedish personal identity number.\"\nmsgstr \"올바른 스웨덴 주민번호를 입력하세요.\"\n\n#: se/forms.py:112\nmsgid \"Co-ordination numbers are not allowed.\"\nmsgstr \"조율 번호는 사용할 수 없습니다.\"\n\n#: se/forms.py:154\nmsgid \"Enter a Swedish postal code in the format XXXXX.\"\nmsgstr \"올바른 스웨덴 우편번호를 입력하세요. (XXXXX 형식)\"\n\n#: se/se_counties.py:16\nmsgid \"Stockholm\"\nmsgstr \"스톡홀름\"\n\n#: se/se_counties.py:17\nmsgid \"Västerbotten\"\nmsgstr \"Västerbotten\"\n\n#: se/se_counties.py:18\nmsgid \"Norrbotten\"\nmsgstr \"노르보텐\"\n\n#: se/se_counties.py:19\nmsgid \"Uppsala\"\nmsgstr \"웁살라\"\n\n#: se/se_counties.py:20\nmsgid \"Södermanland\"\nmsgstr \"Södermanland\"\n\n#: se/se_counties.py:21\nmsgid \"Östergötland\"\nmsgstr \"Östergötland\"\n\n#: se/se_counties.py:22\nmsgid \"Jönköping\"\nmsgstr \"Jönköping\"\n\n#: se/se_counties.py:23\nmsgid \"Kronoberg\"\nmsgstr \"Kronoberg\"\n\n#: se/se_counties.py:24\nmsgid \"Kalmar\"\nmsgstr \"칼마르\"\n\n#: se/se_counties.py:25\nmsgid \"Gotland\"\nmsgstr \"고틀랜드\"\n\n#: se/se_counties.py:26\nmsgid \"Blekinge\"\nmsgstr \"블레킹예\"\n\n#: se/se_counties.py:27\nmsgid \"Skåne\"\nmsgstr \"스코네\"\n\n#: se/se_counties.py:28\nmsgid \"Halland\"\nmsgstr \"Halland\"\n\n#: se/se_counties.py:29\nmsgid \"Västra Götaland\"\nmsgstr \"베스 Götaland\"\n\n#: se/se_counties.py:30\nmsgid \"Värmland\"\nmsgstr \"Värmland\"\n\n#: se/se_counties.py:31\nmsgid \"Örebro\"\nmsgstr \"외레브로\"\n\n#: se/se_counties.py:32\nmsgid \"Västmanland\"\nmsgstr \"Västmanland\"\n\n#: se/se_counties.py:33\nmsgid \"Dalarna\"\nmsgstr \"달라르나\"\n\n#: se/se_counties.py:34\nmsgid \"Gävleborg\"\nmsgstr \"Gävleborg\"\n\n#: se/se_counties.py:35\nmsgid \"Västernorrland\"\nmsgstr \"Västernorrland\"\n\n#: se/se_counties.py:36\nmsgid \"Jämtland\"\nmsgstr \"Jämtland\"\n\n#: si/forms.py:25\nmsgid \"The first 7 digits of the EMSO must represent a valid past date.\"\nmsgstr \"\"\n\n#: si/forms.py:26\nmsgid \"The EMSO is not valid.\"\nmsgstr \"\"\n\n#: si/forms.py:86\nmsgid \"Enter a valid tax number in form SIXXXXXXXX\"\nmsgstr \"\"\n\n#: si/forms.py:151\nmsgid \"Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:8\nmsgid \"Banska Bystrica\"\nmsgstr \"Banska Bystrica\"\n\n#: sk/sk_districts.py:9\nmsgid \"Banska Stiavnica\"\nmsgstr \"Banska Stiavnica\"\n\n#: sk/sk_districts.py:10\nmsgid \"Bardejov\"\nmsgstr \"Bardejov\"\n\n#: sk/sk_districts.py:11\nmsgid \"Banovce nad Bebravou\"\nmsgstr \"Banovce nad Bebravou\"\n\n#: sk/sk_districts.py:12\nmsgid \"Brezno\"\nmsgstr \"Brezno\"\n\n#: sk/sk_districts.py:13\nmsgid \"Bratislava I\"\nmsgstr \"Bratislava I\"\n\n#: sk/sk_districts.py:14\nmsgid \"Bratislava II\"\nmsgstr \"Bratislava II\"\n\n#: sk/sk_districts.py:15\nmsgid \"Bratislava III\"\nmsgstr \"Bratislava III\"\n\n#: sk/sk_districts.py:16\nmsgid \"Bratislava IV\"\nmsgstr \"Bratislava IV\"\n\n#: sk/sk_districts.py:17\nmsgid \"Bratislava V\"\nmsgstr \"Bratislava V\"\n\n#: sk/sk_districts.py:18\nmsgid \"Bytca\"\nmsgstr \"Bytca\"\n\n#: sk/sk_districts.py:19\nmsgid \"Cadca\"\nmsgstr \"Cadca\"\n\n#: sk/sk_districts.py:20\nmsgid \"Detva\"\nmsgstr \"Detva\"\n\n#: sk/sk_districts.py:21\nmsgid \"Dolny Kubin\"\nmsgstr \"Dolny Kubin\"\n\n#: sk/sk_districts.py:22\nmsgid \"Dunajska Streda\"\nmsgstr \"Dunajska Streda\"\n\n#: sk/sk_districts.py:23\nmsgid \"Galanta\"\nmsgstr \"Galanta\"\n\n#: sk/sk_districts.py:24\nmsgid \"Gelnica\"\nmsgstr \"Gelnica\"\n\n#: sk/sk_districts.py:25\nmsgid \"Hlohovec\"\nmsgstr \"Hlohovec\"\n\n#: sk/sk_districts.py:26\nmsgid \"Humenne\"\nmsgstr \"Humenne\"\n\n#: sk/sk_districts.py:27\nmsgid \"Ilava\"\nmsgstr \"Ilava\"\n\n#: sk/sk_districts.py:28\nmsgid \"Kezmarok\"\nmsgstr \"Kezmarok\"\n\n#: sk/sk_districts.py:29\nmsgid \"Komarno\"\nmsgstr \"Komarno\"\n\n#: sk/sk_districts.py:30\nmsgid \"Kosice I\"\nmsgstr \"Kosice I\"\n\n#: sk/sk_districts.py:31\nmsgid \"Kosice II\"\nmsgstr \"Kosice II\"\n\n#: sk/sk_districts.py:32\nmsgid \"Kosice III\"\nmsgstr \"Kosice III\"\n\n#: sk/sk_districts.py:33\nmsgid \"Kosice IV\"\nmsgstr \"Kosice IV\"\n\n#: sk/sk_districts.py:34\nmsgid \"Kosice - okolie\"\nmsgstr \"Kosice - okolie\"\n\n#: sk/sk_districts.py:35\nmsgid \"Krupina\"\nmsgstr \"Krupina\"\n\n#: sk/sk_districts.py:36\nmsgid \"Kysucke Nove Mesto\"\nmsgstr \"Kysucke Nove Mesto\"\n\n#: sk/sk_districts.py:37\nmsgid \"Levice\"\nmsgstr \"Levice\"\n\n#: sk/sk_districts.py:38\nmsgid \"Levoca\"\nmsgstr \"Levoca\"\n\n#: sk/sk_districts.py:39\nmsgid \"Liptovsky Mikulas\"\nmsgstr \"Liptovsky Mikulas\"\n\n#: sk/sk_districts.py:40\nmsgid \"Lucenec\"\nmsgstr \"Lucenec\"\n\n#: sk/sk_districts.py:41\nmsgid \"Malacky\"\nmsgstr \"Malacky\"\n\n#: sk/sk_districts.py:42\nmsgid \"Martin\"\nmsgstr \"Martin\"\n\n#: sk/sk_districts.py:43\nmsgid \"Medzilaborce\"\nmsgstr \"Medzilaborce\"\n\n#: sk/sk_districts.py:44\nmsgid \"Michalovce\"\nmsgstr \"Michalovce\"\n\n#: sk/sk_districts.py:45\nmsgid \"Myjava\"\nmsgstr \"Myjava\"\n\n#: sk/sk_districts.py:46\nmsgid \"Namestovo\"\nmsgstr \"Namestovo\"\n\n#: sk/sk_districts.py:47\nmsgid \"Nitra\"\nmsgstr \"Nitra\"\n\n#: sk/sk_districts.py:48\nmsgid \"Nove Mesto nad Vahom\"\nmsgstr \"Nove Mesto nad Vahom\"\n\n#: sk/sk_districts.py:49\nmsgid \"Nove Zamky\"\nmsgstr \"Nove Zamky\"\n\n#: sk/sk_districts.py:50\nmsgid \"Partizanske\"\nmsgstr \"Partizanske\"\n\n#: sk/sk_districts.py:51\nmsgid \"Pezinok\"\nmsgstr \"Pezinok\"\n\n#: sk/sk_districts.py:52\nmsgid \"Piestany\"\nmsgstr \"Piestany\"\n\n#: sk/sk_districts.py:53\nmsgid \"Poltar\"\nmsgstr \"Poltar\"\n\n#: sk/sk_districts.py:54\nmsgid \"Poprad\"\nmsgstr \"Poprad\"\n\n#: sk/sk_districts.py:55\nmsgid \"Povazska Bystrica\"\nmsgstr \"Povazska Bystrica\"\n\n#: sk/sk_districts.py:56\nmsgid \"Presov\"\nmsgstr \"Presov\"\n\n#: sk/sk_districts.py:57\nmsgid \"Prievidza\"\nmsgstr \"Prievidza\"\n\n#: sk/sk_districts.py:58\nmsgid \"Puchov\"\nmsgstr \"Puchov\"\n\n#: sk/sk_districts.py:59\nmsgid \"Revuca\"\nmsgstr \"Revuca\"\n\n#: sk/sk_districts.py:60\nmsgid \"Rimavska Sobota\"\nmsgstr \"Rimavska Sobota\"\n\n#: sk/sk_districts.py:61\nmsgid \"Roznava\"\nmsgstr \"Roznava\"\n\n#: sk/sk_districts.py:62\nmsgid \"Ruzomberok\"\nmsgstr \"Ruzomberok\"\n\n#: sk/sk_districts.py:63\nmsgid \"Sabinov\"\nmsgstr \"Sabinov\"\n\n#: sk/sk_districts.py:64\nmsgid \"Senec\"\nmsgstr \"Senec\"\n\n#: sk/sk_districts.py:65\nmsgid \"Senica\"\nmsgstr \"Senica\"\n\n#: sk/sk_districts.py:66\nmsgid \"Skalica\"\nmsgstr \"Skalica\"\n\n#: sk/sk_districts.py:67\nmsgid \"Snina\"\nmsgstr \"Shina\"\n\n#: sk/sk_districts.py:68\nmsgid \"Sobrance\"\nmsgstr \"Sobrance\"\n\n#: sk/sk_districts.py:69\nmsgid \"Spisska Nova Ves\"\nmsgstr \"Spisska Nova Ves\"\n\n#: sk/sk_districts.py:70\nmsgid \"Stara Lubovna\"\nmsgstr \"Stara Lubovna\"\n\n#: sk/sk_districts.py:71\nmsgid \"Stropkov\"\nmsgstr \"Stropkov\"\n\n#: sk/sk_districts.py:72\nmsgid \"Svidnik\"\nmsgstr \"Svidnik\"\n\n#: sk/sk_districts.py:73\nmsgid \"Sala\"\nmsgstr \"Sala\"\n\n#: sk/sk_districts.py:74\nmsgid \"Topolcany\"\nmsgstr \"Topolcany\"\n\n#: sk/sk_districts.py:75\nmsgid \"Trebisov\"\nmsgstr \"Trebisov\"\n\n#: sk/sk_districts.py:76\nmsgid \"Trencin\"\nmsgstr \"Trencin\"\n\n#: sk/sk_districts.py:77\nmsgid \"Trnava\"\nmsgstr \"Trnava\"\n\n#: sk/sk_districts.py:78\nmsgid \"Turcianske Teplice\"\nmsgstr \"Turcianske Teplice\"\n\n#: sk/sk_districts.py:79\nmsgid \"Tvrdosin\"\nmsgstr \"Tvrdosin\"\n\n#: sk/sk_districts.py:80\nmsgid \"Velky Krtis\"\nmsgstr \"Velky Krtis\"\n\n#: sk/sk_districts.py:81\nmsgid \"Vranov nad Toplou\"\nmsgstr \"Vranov nad Toplou\"\n\n#: sk/sk_districts.py:82\nmsgid \"Zlate Moravce\"\nmsgstr \"Zlate Moravce\"\n\n#: sk/sk_districts.py:83\nmsgid \"Zvolen\"\nmsgstr \"Zvolen\"\n\n#: sk/sk_districts.py:84\nmsgid \"Zarnovica\"\nmsgstr \"Zarnovica\"\n\n#: sk/sk_districts.py:85\nmsgid \"Ziar nad Hronom\"\nmsgstr \"Ziar nad Hronom\"\n\n#: sk/sk_districts.py:86\nmsgid \"Zilina\"\nmsgstr \"Zilina\"\n\n#: sk/sk_regions.py:8\nmsgid \"Banska Bystrica region\"\nmsgstr \"Banska Bystrica region\"\n\n#: sk/sk_regions.py:9\nmsgid \"Bratislava region\"\nmsgstr \"Bratislava region\"\n\n#: sk/sk_regions.py:10\nmsgid \"Kosice region\"\nmsgstr \"Kosice region\"\n\n#: sk/sk_regions.py:11\nmsgid \"Nitra region\"\nmsgstr \"Nitra region\"\n\n#: sk/sk_regions.py:12\nmsgid \"Presov region\"\nmsgstr \"Presov region\"\n\n#: sk/sk_regions.py:13\nmsgid \"Trencin region\"\nmsgstr \"Trencin region\"\n\n#: sk/sk_regions.py:14\nmsgid \"Trnava region\"\nmsgstr \"Trnava region\"\n\n#: sk/sk_regions.py:15\nmsgid \"Zilina region\"\nmsgstr \"Zilina region\"\n\n#: tr/forms.py:21\nmsgid \"Enter a postal code in the format XXXXX.\"\nmsgstr \"XXXXX형식의 우편 번호를 입력하세요.\"\n\n#: tr/forms.py:42\nmsgid \"Phone numbers must be in 0XXX XXX XXXX format.\"\nmsgstr \"전화번호는 0XXX XXX XXXX 형식입니다.\"\n\n#: tr/forms.py:69\nmsgid \"Enter a valid Turkish Identification number.\"\nmsgstr \"올바른 터키계 ID 번호를 입력하세요.\"\n\n#: tr/forms.py:70\nmsgid \"Turkish Identification number must be 11 digits.\"\nmsgstr \"터키계 식별 번호는 11 자리 숫자입니다.\"\n\n#: us/forms.py:21\nmsgid \"Enter a zip code in the format XXXXX or XXXXX-XXXX.\"\nmsgstr \"우편번호를 입력하세요. (XXXXX 또는 XXXXX-XXXX 형식)\"\n\n#: us/forms.py:59\nmsgid \"Enter a valid U.S. Social Security number in XXX-XX-XXXX format.\"\nmsgstr \"올바른 미국 사회보장번호를 입력하세요. (XXX-XX-XXXX 형식)\"\n\n#: us/forms.py:92\nmsgid \"Enter a U.S. state or territory.\"\nmsgstr \"미국 주나 지역을 입력하세요.\"\n\n#: us/models.py:8\nmsgid \"U.S. state (two uppercase letters)\"\nmsgstr \"미국의 주 (두개의 대문자로)\"\n\n#: us/models.py:17\nmsgid \"U.S. postal code (two uppercase letters)\"\nmsgstr \"미국 우편번호 (대문자 약어 2자)\"\n\n#: us/models.py:26\nmsgid \"Phone number\"\nmsgstr \"전화번호\"\n\n#: uy/forms.py:29\nmsgid \"Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.\"\nmsgstr \"\"\n\"올바른 CI 번호를 입력하세요. (X.XXX.XXX-X, XXXXXXX-X 또는 XXXXXXXX 형식)\"\n\n#: uy/forms.py:31\nmsgid \"Enter a valid CI number.\"\nmsgstr \"올바른 CI 번호를 입력하세요.\"\n\n#: za/forms.py:22\nmsgid \"Enter a valid South African ID number\"\nmsgstr \"올바른 남아프리카 주민번호를 입력하세요.\"\n\n#: za/forms.py:56\nmsgid \"Enter a valid South African postal code\"\nmsgstr \"올바른 남아프리카 우편번호를 입력하세요.\"\n\n#: za/za_provinces.py:4\nmsgid \"Eastern Cape\"\nmsgstr \"이스턴케이프 주\"\n\n#: za/za_provinces.py:5\nmsgid \"Free State\"\nmsgstr \"프리스테이트 주\"\n\n#: za/za_provinces.py:6\nmsgid \"Gauteng\"\nmsgstr \"가우텡 주\"\n\n#: za/za_provinces.py:7\nmsgid \"KwaZulu-Natal\"\nmsgstr \"크와줄루나탈 주\"\n\n#: za/za_provinces.py:8\nmsgid \"Limpopo\"\nmsgstr \"림포포 주\"\n\n#: za/za_provinces.py:9\nmsgid \"Mpumalanga\"\nmsgstr \"음푸말랑가 주\"\n\n#: za/za_provinces.py:10\nmsgid \"Northern Cape\"\nmsgstr \"노던케이프 주\"\n\n#: za/za_provinces.py:11\nmsgid \"North West\"\nmsgstr \"노스웨스트 주\"\n\n#: za/za_provinces.py:12\nmsgid \"Western Cape\"\nmsgstr \"웨스턴케이프 주\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/locale/lt/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Kostas  <tamosiunas@gmail.com>, 2011.\n# lauris <lauris@runbox.com>, 2011.\n#   <naktinis@gmail.com>, 2012.\n# Nikolajus Krauklis <nikolajus@gmail.com>, 2011,2013.\n# Simonas Kazlauskas <simonas@kazlauskas.me>, 2012.\n# Simonas Simas <simonas@kazlauskas.me>, 2012.\n# Vytautas Astrauskas <vastrauskas@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2013-02-23 13:10+0000\\n\"\n\"Last-Translator: Nikolajus Krauklis <nikolajus@gmail.com>\\n\"\n\"Language-Team: Lithuanian (http://www.transifex.com/projects/p/django/\"\n\"language/lt/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: lt\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n\"\n\"%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: ar/forms.py:30\nmsgid \"Enter a postal code in the format NNNN or ANNNNAAA.\"\nmsgstr \"Įveskite pašto kodą NNNN arba ANNNNAAA formatu.\"\n\n#: ar/forms.py:52 br/forms.py:95 br/forms.py:134 pe/forms.py:27 pe/forms.py:55\nmsgid \"This field requires only numbers.\"\nmsgstr \"Šis laukas priima tik skaičius.\"\n\n#: ar/forms.py:53\nmsgid \"This field requires 7 or 8 digits.\"\nmsgstr \"Šis laukas priima 7 arba 8 skaičius.\"\n\n#: ar/forms.py:82\nmsgid \"Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.\"\nmsgstr \"\"\n\"Įveskite tinkamą asmens id numerį XXXXXXXXXXX-XXXXXXX-XXXXXXX-X formatu.\"\n\n#: ar/forms.py:83\nmsgid \"Invalid CUIT.\"\nmsgstr \"Negaliojantis asmens identifikavimo numeris.\"\n\n#: ar/forms.py:84\nmsgid \"Invalid legal type. Type must be 27, 20, 23 or 30.\"\nmsgstr \"Neteisingas juridinis tipas. Tipas turi būti 27, 20, 23 arba 30.\"\n\n#: at/at_states.py:5\nmsgid \"Burgenland\"\nmsgstr \"Burgenlandas\"\n\n#: at/at_states.py:6\nmsgid \"Carinthia\"\nmsgstr \"Carinthia\"\n\n#: at/at_states.py:7\nmsgid \"Lower Austria\"\nmsgstr \"Žemutinė Austrija\"\n\n#: at/at_states.py:8\nmsgid \"Upper Austria\"\nmsgstr \"Aukštutinė Austrija\"\n\n#: at/at_states.py:9\nmsgid \"Salzburg\"\nmsgstr \"Zalcburgas\"\n\n#: at/at_states.py:10\nmsgid \"Styria\"\nmsgstr \"Styria\"\n\n#: at/at_states.py:11\nmsgid \"Tyrol\"\nmsgstr \"Tyrol\"\n\n#: at/at_states.py:12\nmsgid \"Vorarlberg\"\nmsgstr \"Vorarlberg\"\n\n#: at/at_states.py:13\nmsgid \"Vienna\"\nmsgstr \"Viena\"\n\n#: at/forms.py:22 ch/forms.py:22 no/forms.py:19\nmsgid \"Enter a zip code in the format XXXX.\"\nmsgstr \"Įveskite pašto kodą XXXX formatu.\"\n\n#: at/forms.py:50\nmsgid \"Enter a valid Austrian Social Security Number in XXXX XXXXXX format.\"\nmsgstr \"\"\n\"Įveskite teisingą Austrijos socialinio draudimo numerį XXXX XXXXXX formatu.\"\n\n#: au/forms.py:26\nmsgid \"Enter a 4 digit postcode.\"\nmsgstr \"Įveskite 4 skaitmenų pašto kodą.\"\n\n#: au/models.py:9\nmsgid \"Australian State\"\nmsgstr \"Australijos valstija\"\n\n#: au/models.py:19\nmsgid \"Australian Postcode\"\nmsgstr \"Australijos pašto kodas\"\n\n#: au/models.py:33\nmsgid \"Australian Phone number\"\nmsgstr \"Australijos telefono numeris\"\n\n#: be/be_provinces.py:5\nmsgid \"Antwerp\"\nmsgstr \"Antverpenas\"\n\n#: be/be_provinces.py:6\nmsgid \"Brussels\"\nmsgstr \"Briuselis\"\n\n#: be/be_provinces.py:7\nmsgid \"East Flanders\"\nmsgstr \"Rytų Flandrija\"\n\n#: be/be_provinces.py:8\nmsgid \"Flemish Brabant\"\nmsgstr \"Flamandų Brabanto\"\n\n#: be/be_provinces.py:9\nmsgid \"Hainaut\"\nmsgstr \"Hainaut\"\n\n#: be/be_provinces.py:10\nmsgid \"Liege\"\nmsgstr \"Liege\"\n\n#: be/be_provinces.py:11 nl/nl_provinces.py:9\nmsgid \"Limburg\"\nmsgstr \"Limburg\"\n\n#: be/be_provinces.py:12\nmsgid \"Luxembourg\"\nmsgstr \"Liuksemburgas\"\n\n#: be/be_provinces.py:13\nmsgid \"Namur\"\nmsgstr \"Namur\"\n\n#: be/be_provinces.py:14\nmsgid \"Walloon Brabant\"\nmsgstr \"Walloon Brabant\"\n\n#: be/be_provinces.py:15\nmsgid \"West Flanders\"\nmsgstr \"West Flanders\"\n\n#: be/be_regions.py:5\nmsgid \"Brussels Capital Region\"\nmsgstr \"Briuselio sostinės regionas\"\n\n#: be/be_regions.py:6\nmsgid \"Flemish Region\"\nmsgstr \"Flemish regionas\"\n\n#: be/be_regions.py:7\nmsgid \"Wallonia\"\nmsgstr \"Valonija\"\n\n#: be/forms.py:25\nmsgid \"Enter a valid postal code in the range and format 1XXX - 9XXX.\"\nmsgstr \"Įveskite pašto kodą 1XXX - 9XXX formatu.\"\n\n#: be/forms.py:48\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\nmsgstr \"\"\n\"Įveskite teisingą telefono numerį vienu iš šių formatu: 0x xxx xx xx, 0xx xx \"\n\"xx xx, 04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.\"\n\"xx, 0xx.xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\n\n#: br/forms.py:22\nmsgid \"Enter a zip code in the format XXXXX-XXX.\"\nmsgstr \"Įveskite pašto kodą XXXXX-XXX formatu.\"\n\n#: br/forms.py:31\nmsgid \"Phone numbers must be in XX-XXXX-XXXX format.\"\nmsgstr \"Telefonas turi būti XXX-XXXX-XXXX formatu.\"\n\n#: br/forms.py:58\nmsgid \"\"\n\"Select a valid brazilian state. That state is not one of the available \"\n\"states.\"\nmsgstr \"\"\n\"Pasirinkite teisingą Brazilijos valstiją. Jūsų pasirinkta valstija nėra \"\n\"teisinga.\"\n\n#: br/forms.py:93\nmsgid \"Invalid CPF number.\"\nmsgstr \"Netinkamas CPF numeris\"\n\n#: br/forms.py:94\nmsgid \"This field requires at most 11 digits or 14 characters.\"\nmsgstr \"Šis laukas talpina daugiausiai 11 skaitmenų arba 14 simbolių.\"\n\n#: br/forms.py:133\nmsgid \"Invalid CNPJ number.\"\nmsgstr \"Netinkamas CNPJ numeris\"\n\n#: br/forms.py:135\nmsgid \"This field requires at least 14 digits\"\nmsgstr \"Šis laukas reikalauja mažiausiai 14 skaitmenų.\"\n\n#: ca/forms.py:29\nmsgid \"Enter a postal code in the format XXX XXX.\"\nmsgstr \"Įveskite pašto kodą XXX XXX formatu.\"\n\n#: ca/forms.py:47 us/forms.py:30\nmsgid \"Phone numbers must be in XXX-XXX-XXXX format.\"\nmsgstr \"Telefono numeriai turi būti XXX-XXX-XXXX formatu.\"\n\n#: ca/forms.py:69\nmsgid \"Enter a Canadian province or territory.\"\nmsgstr \"Įveskite Kanados valstiją arba teritoriją\"\n\n#: ca/forms.py:110\nmsgid \"Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.\"\nmsgstr \"\"\n\"Įveskite teisingą Kanados socialinio draudimo numerį XXX-XXX-XXX formatu.\"\n\n#: ch/ch_states.py:5\nmsgid \"Aargau\"\nmsgstr \"Aargau\"\n\n#: ch/ch_states.py:6\nmsgid \"Appenzell Innerrhoden\"\nmsgstr \"Appenzell Innerrhoden\"\n\n#: ch/ch_states.py:7\nmsgid \"Appenzell Ausserrhoden\"\nmsgstr \"Appenzell Ausserrhoden\"\n\n#: ch/ch_states.py:8\nmsgid \"Basel-Stadt\"\nmsgstr \"Basel-Stadt\"\n\n#: ch/ch_states.py:9\nmsgid \"Basel-Land\"\nmsgstr \"Basel-Land\"\n\n#: ch/ch_states.py:10\nmsgid \"Berne\"\nmsgstr \"Berne\"\n\n#: ch/ch_states.py:11\nmsgid \"Fribourg\"\nmsgstr \"Fribourg\"\n\n#: ch/ch_states.py:12\nmsgid \"Geneva\"\nmsgstr \"Ženeva\"\n\n#: ch/ch_states.py:13\nmsgid \"Glarus\"\nmsgstr \"Glarus\"\n\n#: ch/ch_states.py:14\nmsgid \"Graubuenden\"\nmsgstr \"Graubuenden\"\n\n#: ch/ch_states.py:15\nmsgid \"Jura\"\nmsgstr \"Jura\"\n\n#: ch/ch_states.py:16\nmsgid \"Lucerne\"\nmsgstr \"Lucerne\"\n\n#: ch/ch_states.py:17\nmsgid \"Neuchatel\"\nmsgstr \"Neuchatel\"\n\n#: ch/ch_states.py:18\nmsgid \"Nidwalden\"\nmsgstr \"Nidwalden\"\n\n#: ch/ch_states.py:19\nmsgid \"Obwalden\"\nmsgstr \"Obwalden\"\n\n#: ch/ch_states.py:20\nmsgid \"Schaffhausen\"\nmsgstr \"Schaffhausen\"\n\n#: ch/ch_states.py:21\nmsgid \"Schwyz\"\nmsgstr \"Schwyz\"\n\n#: ch/ch_states.py:22\nmsgid \"Solothurn\"\nmsgstr \"Solothurn\"\n\n#: ch/ch_states.py:23\nmsgid \"St. Gallen\"\nmsgstr \"St. Gallen\"\n\n#: ch/ch_states.py:24\nmsgid \"Thurgau\"\nmsgstr \"Thurgau\"\n\n#: ch/ch_states.py:25\nmsgid \"Ticino\"\nmsgstr \"Ticino\"\n\n#: ch/ch_states.py:26\nmsgid \"Uri\"\nmsgstr \"Uri\"\n\n#: ch/ch_states.py:27\nmsgid \"Valais\"\nmsgstr \"Valais\"\n\n#: ch/ch_states.py:28\nmsgid \"Vaud\"\nmsgstr \"Vaud\"\n\n#: ch/ch_states.py:29\nmsgid \"Zug\"\nmsgstr \"Zug\"\n\n#: ch/ch_states.py:30\nmsgid \"Zurich\"\nmsgstr \"Zurich\"\n\n#: ch/forms.py:37\nmsgid \"Phone numbers must be in 0XX XXX XX XX format.\"\nmsgstr \"Telefono numeriai turi būti 0XX XXX XX XX formatu.\"\n\n#: ch/forms.py:68\nmsgid \"\"\n\"Enter a valid Swiss identity or passport card number in X1234567<0 or \"\n\"1234567890 format.\"\nmsgstr \"\"\n\"Įveskite tinkamą šveicarų asmens id ar paso numerį X1234567<0 arba \"\n\"1234567890 formatu.\"\n\n#: cl/forms.py:32\nmsgid \"Enter a valid Chilean RUT.\"\nmsgstr \"Įveskite teisingą Čilės RUT.\"\n\n#: cl/forms.py:33\nmsgid \"Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.\"\nmsgstr \"Įveskite teisingą Čilės RUT numerį XX.XXX.XXX-X formatu.\"\n\n#: cl/forms.py:34\nmsgid \"The Chilean RUT is not valid.\"\nmsgstr \"Čilės RUT neteisingas.\"\n\n#: cn/forms.py:84\nmsgid \"Enter a post code in the format XXXXXX.\"\nmsgstr \"Įveskite pašto kodą formatu XXXXXX.\"\n\n#: cn/forms.py:105\nmsgid \"ID Card Number consists of 15 or 18 digits.\"\nmsgstr \"\"\n\"Identifikacinės kortelės numeris susideda iš 15-os arba 18-os skaitmenų.\"\n\n#: cn/forms.py:106\nmsgid \"Invalid ID Card Number: Wrong checksum\"\nmsgstr \"\"\n\"Klaidingas identifikacinės kortelės numeris: neteisinga kontrolinė suma\"\n\n#: cn/forms.py:107\nmsgid \"Invalid ID Card Number: Wrong birthdate\"\nmsgstr \"Neteisingas identifikacinės kortelės numeris: Neteisingas gimtadienis\"\n\n#: cn/forms.py:108\nmsgid \"Invalid ID Card Number: Wrong location code\"\nmsgstr \"\"\n\"Neteisingas identifikacinės kortelės numeris: Neteisingas vietovės kodas\"\n\n#: cn/forms.py:193\nmsgid \"Enter a valid phone number.\"\nmsgstr \"Įveskite tinkamą telefono numerį.\"\n\n#: cn/forms.py:210\nmsgid \"Enter a valid cell number.\"\nmsgstr \"Įveskite galiojantį mobiliojo telefono numerį.\"\n\n#: cz/cz_regions.py:8\nmsgid \"Prague\"\nmsgstr \"Praha\"\n\n#: cz/cz_regions.py:9\nmsgid \"Central Bohemian Region\"\nmsgstr \"Vidurio Čekijos kraštas\"\n\n#: cz/cz_regions.py:10\nmsgid \"South Bohemian Region\"\nmsgstr \"Pietų Čekijos kraštas\"\n\n#: cz/cz_regions.py:11\nmsgid \"Pilsen Region\"\nmsgstr \"Pilzeno regionas\"\n\n#: cz/cz_regions.py:12\nmsgid \"Carlsbad Region\"\nmsgstr \"Carlsbad Region\"\n\n#: cz/cz_regions.py:13\nmsgid \"Usti Region\"\nmsgstr \"Usti Region\"\n\n#: cz/cz_regions.py:14\nmsgid \"Liberec Region\"\nmsgstr \"Liberec Region\"\n\n#: cz/cz_regions.py:15\nmsgid \"Hradec Region\"\nmsgstr \"Hradec Region\"\n\n#: cz/cz_regions.py:16\nmsgid \"Pardubice Region\"\nmsgstr \"Pardubice Region\"\n\n#: cz/cz_regions.py:17\nmsgid \"Vysocina Region\"\nmsgstr \"Vysocina Region\"\n\n#: cz/cz_regions.py:18\nmsgid \"South Moravian Region\"\nmsgstr \"South Moravian Region\"\n\n#: cz/cz_regions.py:19\nmsgid \"Olomouc Region\"\nmsgstr \"Olomouc Region\"\n\n#: cz/cz_regions.py:20\nmsgid \"Zlin Region\"\nmsgstr \"Zlin Region\"\n\n#: cz/cz_regions.py:21\nmsgid \"Moravian-Silesian Region\"\nmsgstr \"Moravian-Silesian Region\"\n\n#: cz/forms.py:32 sk/forms.py:33\nmsgid \"Enter a postal code in the format XXXXX or XXX XX.\"\nmsgstr \"Įveskite pašto kodą XXXXX ar XXX XX formatu.\"\n\n#: cz/forms.py:52\nmsgid \"Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.\"\nmsgstr \"Įveskite gimimo liudijimo numerį XXXXXX/XXXX ar XXXXXXXXXX formatu.\"\n\n#: cz/forms.py:53\nmsgid \"Enter a valid birth number.\"\nmsgstr \"Įveskite teisingą gimimo numerį.\"\n\n#: cz/forms.py:102\nmsgid \"Enter a valid IC number.\"\nmsgstr \"Įveskite teisingą IC numerį.\"\n\n#: de/de_states.py:5\nmsgid \"Baden-Wuerttemberg\"\nmsgstr \"Baden-Wuerttemberg\"\n\n#: de/de_states.py:6\nmsgid \"Bavaria\"\nmsgstr \"Bavarija\"\n\n#: de/de_states.py:7\nmsgid \"Berlin\"\nmsgstr \"Berlynas\"\n\n#: de/de_states.py:8\nmsgid \"Brandenburg\"\nmsgstr \"Brandenburgas\"\n\n#: de/de_states.py:9\nmsgid \"Bremen\"\nmsgstr \"Bremenas\"\n\n#: de/de_states.py:10\nmsgid \"Hamburg\"\nmsgstr \"Hamburgas\"\n\n#: de/de_states.py:11\nmsgid \"Hessen\"\nmsgstr \"Hessen\"\n\n#: de/de_states.py:12\nmsgid \"Mecklenburg-Western Pomerania\"\nmsgstr \"Mecklenburg-Western Pomerania\"\n\n#: de/de_states.py:13\nmsgid \"Lower Saxony\"\nmsgstr \"Žemutinė Saksonija\"\n\n#: de/de_states.py:14\nmsgid \"North Rhine-Westphalia\"\nmsgstr \"North Rhine-Westphalia\"\n\n#: de/de_states.py:15\nmsgid \"Rhineland-Palatinate\"\nmsgstr \"Rhineland-Palatinate\"\n\n#: de/de_states.py:16\nmsgid \"Saarland\"\nmsgstr \"Saarland\"\n\n#: de/de_states.py:17\nmsgid \"Saxony\"\nmsgstr \"Saksonija\"\n\n#: de/de_states.py:18\nmsgid \"Saxony-Anhalt\"\nmsgstr \"Saxony-Anhalt\"\n\n#: de/de_states.py:19\nmsgid \"Schleswig-Holstein\"\nmsgstr \"Schleswig-Holstein\"\n\n#: de/de_states.py:20\nmsgid \"Thuringia\"\nmsgstr \"Thuringia\"\n\n#: de/forms.py:20 fi/forms.py:18 fr/forms.py:20\nmsgid \"Enter a zip code in the format XXXXX.\"\nmsgstr \"Įveskite pašto kodą XXXXX formatu.\"\n\n#: de/forms.py:46\nmsgid \"\"\n\"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"format.\"\nmsgstr \"\"\n\"Įveskite tinkamą Vokiško asmens id numerį XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"formatu.\"\n\n#: es/es_provinces.py:5\nmsgid \"Araba\"\nmsgstr \"Araba\"\n\n#: es/es_provinces.py:6\nmsgid \"Albacete\"\nmsgstr \"Albacete\"\n\n#: es/es_provinces.py:7\nmsgid \"Alacant\"\nmsgstr \"Alacant\"\n\n#: es/es_provinces.py:8\nmsgid \"Almeria\"\nmsgstr \"Almeria\"\n\n#: es/es_provinces.py:9\nmsgid \"Avila\"\nmsgstr \"Avila\"\n\n#: es/es_provinces.py:10\nmsgid \"Badajoz\"\nmsgstr \"Badajoz\"\n\n#: es/es_provinces.py:11\nmsgid \"Illes Balears\"\nmsgstr \"Illes Balears\"\n\n#: es/es_provinces.py:12\nmsgid \"Barcelona\"\nmsgstr \"Barselona\"\n\n#: es/es_provinces.py:13\nmsgid \"Burgos\"\nmsgstr \"Burgos\"\n\n#: es/es_provinces.py:14\nmsgid \"Caceres\"\nmsgstr \"Caceres\"\n\n#: es/es_provinces.py:15\nmsgid \"Cadiz\"\nmsgstr \"Cadiz\"\n\n#: es/es_provinces.py:16\nmsgid \"Castello\"\nmsgstr \"Castello\"\n\n#: es/es_provinces.py:17\nmsgid \"Ciudad Real\"\nmsgstr \"Ciudad Real\"\n\n#: es/es_provinces.py:18\nmsgid \"Cordoba\"\nmsgstr \"Cordoba\"\n\n#: es/es_provinces.py:19\nmsgid \"A Coruna\"\nmsgstr \"A Coruna\"\n\n#: es/es_provinces.py:20\nmsgid \"Cuenca\"\nmsgstr \"Cuenca\"\n\n#: es/es_provinces.py:21\nmsgid \"Girona\"\nmsgstr \"Girona\"\n\n#: es/es_provinces.py:22\nmsgid \"Granada\"\nmsgstr \"Granada\"\n\n#: es/es_provinces.py:23\nmsgid \"Guadalajara\"\nmsgstr \"Guadalajara\"\n\n#: es/es_provinces.py:24\nmsgid \"Guipuzkoa\"\nmsgstr \"Guipuzkoa\"\n\n#: es/es_provinces.py:25\nmsgid \"Huelva\"\nmsgstr \"Huelva\"\n\n#: es/es_provinces.py:26\nmsgid \"Huesca\"\nmsgstr \"Huesca\"\n\n#: es/es_provinces.py:27\nmsgid \"Jaen\"\nmsgstr \"Jaen\"\n\n#: es/es_provinces.py:28\nmsgid \"Leon\"\nmsgstr \"Leonas\"\n\n#: es/es_provinces.py:29\nmsgid \"Lleida\"\nmsgstr \"Lleida\"\n\n#: es/es_provinces.py:30 es/es_regions.py:17\nmsgid \"La Rioja\"\nmsgstr \"La Rioja\"\n\n#: es/es_provinces.py:31\nmsgid \"Lugo\"\nmsgstr \"Lugo\"\n\n#: es/es_provinces.py:32 es/es_regions.py:18\nmsgid \"Madrid\"\nmsgstr \"Madridas\"\n\n#: es/es_provinces.py:33\nmsgid \"Malaga\"\nmsgstr \"Malaga\"\n\n#: es/es_provinces.py:34\nmsgid \"Murcia\"\nmsgstr \"Murcia\"\n\n#: es/es_provinces.py:35\nmsgid \"Navarre\"\nmsgstr \"Navarre\"\n\n#: es/es_provinces.py:36\nmsgid \"Ourense\"\nmsgstr \"Ourense\"\n\n#: es/es_provinces.py:37\nmsgid \"Asturias\"\nmsgstr \"Asturias\"\n\n#: es/es_provinces.py:38\nmsgid \"Palencia\"\nmsgstr \"Palencia\"\n\n#: es/es_provinces.py:39\nmsgid \"Las Palmas\"\nmsgstr \"Las Palmas\"\n\n#: es/es_provinces.py:40\nmsgid \"Pontevedra\"\nmsgstr \"Pontevedra\"\n\n#: es/es_provinces.py:41\nmsgid \"Salamanca\"\nmsgstr \"Salamanca\"\n\n#: es/es_provinces.py:42\nmsgid \"Santa Cruz de Tenerife\"\nmsgstr \"Santa Cruz de Tenerife\"\n\n#: es/es_provinces.py:43 es/es_regions.py:11\nmsgid \"Cantabria\"\nmsgstr \"Cantabria\"\n\n#: es/es_provinces.py:44\nmsgid \"Segovia\"\nmsgstr \"Segovia\"\n\n#: es/es_provinces.py:45\nmsgid \"Seville\"\nmsgstr \"Seville\"\n\n#: es/es_provinces.py:46\nmsgid \"Soria\"\nmsgstr \"Soria\"\n\n#: es/es_provinces.py:47\nmsgid \"Tarragona\"\nmsgstr \"Tarragona\"\n\n#: es/es_provinces.py:48\nmsgid \"Teruel\"\nmsgstr \"Teruel\"\n\n#: es/es_provinces.py:49\nmsgid \"Toledo\"\nmsgstr \"Toledo\"\n\n#: es/es_provinces.py:50\nmsgid \"Valencia\"\nmsgstr \"Valencia\"\n\n#: es/es_provinces.py:51\nmsgid \"Valladolid\"\nmsgstr \"Valladolid\"\n\n#: es/es_provinces.py:52\nmsgid \"Bizkaia\"\nmsgstr \"Bizkaia\"\n\n#: es/es_provinces.py:53\nmsgid \"Zamora\"\nmsgstr \"Zamora\"\n\n#: es/es_provinces.py:54\nmsgid \"Zaragoza\"\nmsgstr \"Zaragoza\"\n\n#: es/es_provinces.py:55\nmsgid \"Ceuta\"\nmsgstr \"Ceuta\"\n\n#: es/es_provinces.py:56\nmsgid \"Melilla\"\nmsgstr \"Melilla\"\n\n#: es/es_regions.py:5\nmsgid \"Andalusia\"\nmsgstr \"Andalūzija\"\n\n#: es/es_regions.py:6\nmsgid \"Aragon\"\nmsgstr \"Aragon\"\n\n#: es/es_regions.py:7\nmsgid \"Principality of Asturias\"\nmsgstr \"Principality of Asturias\"\n\n#: es/es_regions.py:8\nmsgid \"Balearic Islands\"\nmsgstr \"Balearic Islands\"\n\n#: es/es_regions.py:9\nmsgid \"Basque Country\"\nmsgstr \"Basque Country\"\n\n#: es/es_regions.py:10\nmsgid \"Canary Islands\"\nmsgstr \"Kanarų salos\"\n\n#: es/es_regions.py:12\nmsgid \"Castile-La Mancha\"\nmsgstr \"Castile-La Mancha\"\n\n#: es/es_regions.py:13\nmsgid \"Castile and Leon\"\nmsgstr \"Castile and Leon\"\n\n#: es/es_regions.py:14\nmsgid \"Catalonia\"\nmsgstr \"Catalonia\"\n\n#: es/es_regions.py:15\nmsgid \"Extremadura\"\nmsgstr \"Extremadura\"\n\n#: es/es_regions.py:16\nmsgid \"Galicia\"\nmsgstr \"Galicia\"\n\n#: es/es_regions.py:19\nmsgid \"Region of Murcia\"\nmsgstr \"Region of Murcia\"\n\n#: es/es_regions.py:20\nmsgid \"Foral Community of Navarre\"\nmsgstr \"Foral Community of Navarre\"\n\n#: es/es_regions.py:21\nmsgid \"Valencian Community\"\nmsgstr \"Valensijos Bendrija\"\n\n#: es/forms.py:26\nmsgid \"Enter a valid postal code in the range and format 01XXX - 52XXX.\"\nmsgstr \"Įveskite galiojantį pašto kodą 01XXX - 52XXX formatu.\"\n\n#: es/forms.py:46\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or \"\n\"9XXXXXXXX.\"\nmsgstr \"\"\n\"Įveskite teisingą telefono numerį 6XXXXXXXX, 8XXXXXXXX ar 9XXXXXXXX formatu.\"\n\n#: es/forms.py:73\nmsgid \"Please enter a valid NIF, NIE, or CIF.\"\nmsgstr \"Prašome įvesti teisingą NIF, NIE ar CIF.\"\n\n#: es/forms.py:74\nmsgid \"Please enter a valid NIF or NIE.\"\nmsgstr \"Prašome įvesti teisingą NIF ar NIE.\"\n\n#: es/forms.py:75\nmsgid \"Invalid checksum for NIF.\"\nmsgstr \"Neteisinga NIF kontrolinė suma.\"\n\n#: es/forms.py:76\nmsgid \"Invalid checksum for NIE.\"\nmsgstr \"Neteisinga NIE kontrolinė suma.\"\n\n#: es/forms.py:77\nmsgid \"Invalid checksum for CIF.\"\nmsgstr \"Neteisinga CIF kontrolinė suma.\"\n\n#: es/forms.py:149\nmsgid \"\"\n\"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.\"\nmsgstr \"\"\n\"Prašome įvesti teisingą banko sąskaitos numerį XXXX-XXXX-XX-XXXXXXXXXX \"\n\"formatu.\"\n\n#: es/forms.py:150\nmsgid \"Invalid checksum for bank account number.\"\nmsgstr \"Neteisinga banko sąskaitos numerio kontrolinė suma. \"\n\n#: fi/forms.py:33\nmsgid \"Enter a valid Finnish social security number.\"\nmsgstr \"Įveskite tinkamą suomišką socialinio draudimo numerį.\"\n\n#: fr/forms.py:35\nmsgid \"Phone numbers must be in 0X XX XX XX XX format.\"\nmsgstr \"Telefono numeris turi būti 0X XX XX XX XX formatu.\"\n\n#: gb/forms.py:25\nmsgid \"Enter a valid postcode.\"\nmsgstr \"Įveskite galiojantį pašto kodą.\"\n\n#: gb/gb_regions.py:11\nmsgid \"Bedfordshire\"\nmsgstr \"Bedfordshire\"\n\n#: gb/gb_regions.py:12\nmsgid \"Buckinghamshire\"\nmsgstr \"Buckinghamshire\"\n\n#: gb/gb_regions.py:14\nmsgid \"Cheshire\"\nmsgstr \"Cheshire\"\n\n#: gb/gb_regions.py:15\nmsgid \"Cornwall and Isles of Scilly\"\nmsgstr \"Cornwall and Isles of Scilly\"\n\n#: gb/gb_regions.py:16\nmsgid \"Cumbria\"\nmsgstr \"Cumbria\"\n\n#: gb/gb_regions.py:17\nmsgid \"Derbyshire\"\nmsgstr \"Derbyshire\"\n\n#: gb/gb_regions.py:18\nmsgid \"Devon\"\nmsgstr \"Devon\"\n\n#: gb/gb_regions.py:19\nmsgid \"Dorset\"\nmsgstr \"Dorset\"\n\n#: gb/gb_regions.py:20\nmsgid \"Durham\"\nmsgstr \"Durham\"\n\n#: gb/gb_regions.py:21\nmsgid \"East Sussex\"\nmsgstr \"East Sussex\"\n\n#: gb/gb_regions.py:22\nmsgid \"Essex\"\nmsgstr \"Eseksas\"\n\n#: gb/gb_regions.py:23\nmsgid \"Gloucestershire\"\nmsgstr \"Gloucestershire\"\n\n#: gb/gb_regions.py:24\nmsgid \"Greater London\"\nmsgstr \"Greater London\"\n\n#: gb/gb_regions.py:25\nmsgid \"Greater Manchester\"\nmsgstr \"Greater Manchester\"\n\n#: gb/gb_regions.py:26\nmsgid \"Hampshire\"\nmsgstr \"Hampshire\"\n\n#: gb/gb_regions.py:27\nmsgid \"Hertfordshire\"\nmsgstr \"Hertfordshire\"\n\n#: gb/gb_regions.py:28\nmsgid \"Kent\"\nmsgstr \"Kent\"\n\n#: gb/gb_regions.py:29\nmsgid \"Lancashire\"\nmsgstr \"Lancashire\"\n\n#: gb/gb_regions.py:30\nmsgid \"Leicestershire\"\nmsgstr \"Leicestershire\"\n\n#: gb/gb_regions.py:31\nmsgid \"Lincolnshire\"\nmsgstr \"Lincolnshire\"\n\n#: gb/gb_regions.py:32\nmsgid \"Merseyside\"\nmsgstr \"Merseyside\"\n\n#: gb/gb_regions.py:33\nmsgid \"Norfolk\"\nmsgstr \"Norfolk\"\n\n#: gb/gb_regions.py:34\nmsgid \"North Yorkshire\"\nmsgstr \"North Yorkshire\"\n\n#: gb/gb_regions.py:35\nmsgid \"Northamptonshire\"\nmsgstr \"Northamptonshire\"\n\n#: gb/gb_regions.py:36\nmsgid \"Northumberland\"\nmsgstr \"Northumberland\"\n\n#: gb/gb_regions.py:37\nmsgid \"Nottinghamshire\"\nmsgstr \"Nottinghamshire\"\n\n#: gb/gb_regions.py:38\nmsgid \"Oxfordshire\"\nmsgstr \"Oksfordšyras\"\n\n#: gb/gb_regions.py:39\nmsgid \"Shropshire\"\nmsgstr \"Shropshire\"\n\n#: gb/gb_regions.py:40\nmsgid \"Somerset\"\nmsgstr \"Somerset\"\n\n#: gb/gb_regions.py:41\nmsgid \"South Yorkshire\"\nmsgstr \"Pietų Jorkšyras\"\n\n#: gb/gb_regions.py:42\nmsgid \"Staffordshire\"\nmsgstr \"Stafordšyras\"\n\n#: gb/gb_regions.py:43\nmsgid \"Suffolk\"\nmsgstr \"Suffolk\"\n\n#: gb/gb_regions.py:44\nmsgid \"Surrey\"\nmsgstr \"Surrey\"\n\n#: gb/gb_regions.py:45\nmsgid \"Tyne and Wear\"\nmsgstr \"Tyne and Wear\"\n\n#: gb/gb_regions.py:46\nmsgid \"Warwickshire\"\nmsgstr \"Warwickshire\"\n\n#: gb/gb_regions.py:47\nmsgid \"West Midlands\"\nmsgstr \"West Midlands\"\n\n#: gb/gb_regions.py:48\nmsgid \"West Sussex\"\nmsgstr \"West Sussex\"\n\n#: gb/gb_regions.py:49\nmsgid \"West Yorkshire\"\nmsgstr \"Vakarų Jorkšyras\"\n\n#: gb/gb_regions.py:50\nmsgid \"Wiltshire\"\nmsgstr \"Wiltshire\"\n\n#: gb/gb_regions.py:51\nmsgid \"Worcestershire\"\nmsgstr \"Worcestershire\"\n\n#: gb/gb_regions.py:55\nmsgid \"County Antrim\"\nmsgstr \"County Antrim\"\n\n#: gb/gb_regions.py:56\nmsgid \"County Armagh\"\nmsgstr \"County Armagh\"\n\n#: gb/gb_regions.py:57\nmsgid \"County Down\"\nmsgstr \"County Down\"\n\n#: gb/gb_regions.py:58\nmsgid \"County Fermanagh\"\nmsgstr \"County Fermanagh\"\n\n#: gb/gb_regions.py:59\nmsgid \"County Londonderry\"\nmsgstr \"County Londonderry\"\n\n#: gb/gb_regions.py:60\nmsgid \"County Tyrone\"\nmsgstr \"County Tyrone\"\n\n#: gb/gb_regions.py:64\nmsgid \"Clwyd\"\nmsgstr \"Clwyd\"\n\n#: gb/gb_regions.py:65\nmsgid \"Dyfed\"\nmsgstr \"Dyfed\"\n\n#: gb/gb_regions.py:66\nmsgid \"Gwent\"\nmsgstr \"Gwent\"\n\n#: gb/gb_regions.py:67\nmsgid \"Gwynedd\"\nmsgstr \"Gwynedd\"\n\n#: gb/gb_regions.py:68\nmsgid \"Mid Glamorgan\"\nmsgstr \"Mid Glamorgan\"\n\n#: gb/gb_regions.py:69\nmsgid \"Powys\"\nmsgstr \"Powys\"\n\n#: gb/gb_regions.py:70\nmsgid \"South Glamorgan\"\nmsgstr \"South Glamorgan\"\n\n#: gb/gb_regions.py:71\nmsgid \"West Glamorgan\"\nmsgstr \"West Glamorgan\"\n\n#: gb/gb_regions.py:75\nmsgid \"Borders\"\nmsgstr \"Borders\"\n\n#: gb/gb_regions.py:76\nmsgid \"Central Scotland\"\nmsgstr \"Centrinė Škotija\"\n\n#: gb/gb_regions.py:77\nmsgid \"Dumfries and Galloway\"\nmsgstr \"Dumfries and Galloway\"\n\n#: gb/gb_regions.py:78\nmsgid \"Fife\"\nmsgstr \"Fife\"\n\n#: gb/gb_regions.py:79\nmsgid \"Grampian\"\nmsgstr \"Grampian\"\n\n#: gb/gb_regions.py:80\nmsgid \"Highland\"\nmsgstr \"Highland\"\n\n#: gb/gb_regions.py:81\nmsgid \"Lothian\"\nmsgstr \"Lothian\"\n\n#: gb/gb_regions.py:82\nmsgid \"Orkney Islands\"\nmsgstr \"Orkney Islands\"\n\n#: gb/gb_regions.py:83\nmsgid \"Shetland Islands\"\nmsgstr \"Shetland Islands\"\n\n#: gb/gb_regions.py:84\nmsgid \"Strathclyde\"\nmsgstr \"Strathclyde\"\n\n#: gb/gb_regions.py:85\nmsgid \"Tayside\"\nmsgstr \"Tayside\"\n\n#: gb/gb_regions.py:86\nmsgid \"Western Isles\"\nmsgstr \"Western Isles\"\n\n#: gb/gb_regions.py:90\nmsgid \"England\"\nmsgstr \"Anglija\"\n\n#: gb/gb_regions.py:91\nmsgid \"Northern Ireland\"\nmsgstr \"Šiaurinė Airija\"\n\n#: gb/gb_regions.py:92\nmsgid \"Scotland\"\nmsgstr \"Škotija\"\n\n#: gb/gb_regions.py:93\nmsgid \"Wales\"\nmsgstr \"Velsas\"\n\n#: hk/forms.py:37\n#, python-format\nmsgid \"Phone number should not start with one of the followings: %s.\"\nmsgstr \"Telefono numeris neturi prasidėti: %s.\"\n\n#: hk/forms.py:40\n#, python-format\nmsgid \"Phone number must be in one of the following formats: %s.\"\nmsgstr \"Telefono numeris turi būti vienu iš išvardytais formatu: %s.\"\n\n#: hk/forms.py:42\n#, python-format\nmsgid \"Phone number should start with one of the followings: %s.\"\nmsgstr \"Telefono numeris turi prasidėti: %s.\"\n\n#: hr/forms.py:76\nmsgid \"Enter a valid 13 digit JMBG\"\nmsgstr \"Įveskite teisingą 13-os skaitmenų JMBG\"\n\n#: hr/forms.py:77\nmsgid \"Error in date segment\"\nmsgstr \"Klaida datos dalyje\"\n\n#: hr/forms.py:123\nmsgid \"Enter a valid 11 digit OIB\"\nmsgstr \"Įveskite teisingą 11-os skaitmenų OIB\"\n\n#: hr/forms.py:152 id/forms.py:112\nmsgid \"Enter a valid vehicle license plate number\"\nmsgstr \"Įveskite teisingą transporto priemonės registracijos numerį\"\n\n#: hr/forms.py:153\nmsgid \"Enter a valid location code\"\nmsgstr \"Įveskite teisingą vietovės kodą\"\n\n#: hr/forms.py:154\nmsgid \"Number part cannot be zero\"\nmsgstr \"Skaitinė dalis negali būti nulis\"\n\n#: hr/forms.py:190\nmsgid \"Enter a valid 5 digit postal code\"\nmsgstr \"Įveskite teisingą 5-ių ženklų pašto kodą\"\n\n#: hr/forms.py:218 id/forms.py:72 nl/forms.py:56\nmsgid \"Enter a valid phone number\"\nmsgstr \"Įveskite teisingą telefono numerį\"\n\n#: hr/forms.py:219\nmsgid \"Enter a valid area or mobile network code\"\nmsgstr \"Įveskite teisingą vietovės arba mobiliojo ryšio tiekėjo kodą\"\n\n#: hr/forms.py:220\nmsgid \"The phone nubmer is too long\"\nmsgstr \"Telefono numeris yra per ilgas\"\n\n#: hr/forms.py:258\nmsgid \"Enter a valid 19 digit JMBAG starting with 601983\"\nmsgstr \"Įveskite teisingą 19-os skaičių JMBAG prasidedantį 601983\"\n\n#: hr/forms.py:259\nmsgid \"Card issue number cannot be zero\"\nmsgstr \"Kortelės išdavimo numeris negali būti nulis\"\n\n#: hr/hr_choices.py:14\nmsgid \"Grad Zagreb\"\nmsgstr \"Zagrebo miestas\"\n\n#: hr/hr_choices.py:15\nmsgid \"Bjelovarsko-bilogorska županija\"\nmsgstr \"Bjelovaras-Bilogora\"\n\n#: hr/hr_choices.py:16\nmsgid \"Brodsko-posavska županija\"\nmsgstr \"Brodas-Posavina\"\n\n#: hr/hr_choices.py:17\nmsgid \"Dubrovačko-neretvanska županija\"\nmsgstr \"Dubrovnikas-Neretva\"\n\n#: hr/hr_choices.py:18\nmsgid \"Istarska županija\"\nmsgstr \"Istrija\"\n\n#: hr/hr_choices.py:19\nmsgid \"Karlovačka županija\"\nmsgstr \"Karlovaco apskritis\"\n\n#: hr/hr_choices.py:20\nmsgid \"Koprivničko-križevačka županija\"\nmsgstr \"Koprivnica-Križevcai\"\n\n#: hr/hr_choices.py:21\nmsgid \"Krapinsko-zagorska županija\"\nmsgstr \"Krapina-Zagorjė\"\n\n#: hr/hr_choices.py:22\nmsgid \"Ličko-senjska županija\"\nmsgstr \"Lika-Senis\"\n\n#: hr/hr_choices.py:23\nmsgid \"Međimurska županija\"\nmsgstr \"Medžimurjė\"\n\n#: hr/hr_choices.py:24\nmsgid \"Osječko-baranjska županija\"\nmsgstr \"Osijekas-Barania\"\n\n#: hr/hr_choices.py:25\nmsgid \"Požeško-slavonska županija\"\nmsgstr \"Požega-Slavonija\"\n\n#: hr/hr_choices.py:26\nmsgid \"Primorsko-goranska županija\"\nmsgstr \"Primorjė-Kalnų Kotaras\"\n\n#: hr/hr_choices.py:27\nmsgid \"Sisačko-moslavačka županija\"\nmsgstr \"Sisakas-Moslavina\"\n\n#: hr/hr_choices.py:28\nmsgid \"Splitsko-dalmatinska županija\"\nmsgstr \"Splitas-Dalmatija\"\n\n#: hr/hr_choices.py:29\nmsgid \"Šibensko-kninska županija\"\nmsgstr \"Šibenikas-Kninas\"\n\n#: hr/hr_choices.py:30\nmsgid \"Varaždinska županija\"\nmsgstr \"Varaždino apskritis\"\n\n#: hr/hr_choices.py:31\nmsgid \"Virovitičko-podravska županija\"\nmsgstr \"Virovitica-Podravina\"\n\n#: hr/hr_choices.py:32\nmsgid \"Vukovarsko-srijemska županija\"\nmsgstr \"Vukovaras-Srijemas\"\n\n#: hr/hr_choices.py:33\nmsgid \"Zadarska županija\"\nmsgstr \"Zadaro apskritis\"\n\n#: hr/hr_choices.py:34\nmsgid \"Zagrebačka županija\"\nmsgstr \"Zagrebo apskritis\"\n\n#: id/forms.py:31\nmsgid \"Enter a valid post code\"\nmsgstr \"Įveskite galiojantį pašto kodą\"\n\n#: id/forms.py:176\nmsgid \"Enter a valid NIK/KTP number\"\nmsgstr \"Įveskite teisingą NIK/KTP numerį.\"\n\n#: id/id_choices.py:15\nmsgid \"Aceh\"\nmsgstr \"Aceh\"\n\n#: id/id_choices.py:16 id/id_choices.py:79\nmsgid \"Bali\"\nmsgstr \"Bali\"\n\n#: id/id_choices.py:17 id/id_choices.py:51\nmsgid \"Banten\"\nmsgstr \"Banten\"\n\n#: id/id_choices.py:18 id/id_choices.py:60\nmsgid \"Bengkulu\"\nmsgstr \"Bengkulu\"\n\n#: id/id_choices.py:19 id/id_choices.py:53\nmsgid \"Yogyakarta\"\nmsgstr \"Yogyakarta\"\n\n#: id/id_choices.py:20 id/id_choices.py:57\nmsgid \"Jakarta\"\nmsgstr \"Jakarta\"\n\n#: id/id_choices.py:21 id/id_choices.py:81\nmsgid \"Gorontalo\"\nmsgstr \"Gorontalo\"\n\n#: id/id_choices.py:22 id/id_choices.py:63\nmsgid \"Jambi\"\nmsgstr \"Jambi\"\n\n#: id/id_choices.py:23\nmsgid \"Jawa Barat\"\nmsgstr \"Jawa Barat\"\n\n#: id/id_choices.py:24\nmsgid \"Jawa Tengah\"\nmsgstr \"Jawa Tengah\"\n\n#: id/id_choices.py:25\nmsgid \"Jawa Timur\"\nmsgstr \"Jawa Timur\"\n\n#: id/id_choices.py:26 id/id_choices.py:94\nmsgid \"Kalimantan Barat\"\nmsgstr \"Kalimantan Barat\"\n\n#: id/id_choices.py:27 id/id_choices.py:72\nmsgid \"Kalimantan Selatan\"\nmsgstr \"Kalimantan Selatan\"\n\n#: id/id_choices.py:28 id/id_choices.py:95\nmsgid \"Kalimantan Tengah\"\nmsgstr \"Kalimantan Tengah\"\n\n#: id/id_choices.py:29 id/id_choices.py:96\nmsgid \"Kalimantan Timur\"\nmsgstr \"Kalimantan Timur\"\n\n#: id/id_choices.py:30\nmsgid \"Kepulauan Bangka-Belitung\"\nmsgstr \"Kepulauan Bangka-Belitung\"\n\n#: id/id_choices.py:31 id/id_choices.py:68\nmsgid \"Kepulauan Riau\"\nmsgstr \"Kepulauan Riau\"\n\n#: id/id_choices.py:32 id/id_choices.py:61\nmsgid \"Lampung\"\nmsgstr \"Lampung\"\n\n#: id/id_choices.py:33 id/id_choices.py:76\nmsgid \"Maluku\"\nmsgstr \"Maluku\"\n\n#: id/id_choices.py:34 id/id_choices.py:77\nmsgid \"Maluku Utara\"\nmsgstr \"Maluku Utara\"\n\n#: id/id_choices.py:35\nmsgid \"Nusa Tenggara Barat\"\nmsgstr \"Nusa Tenggara Barat\"\n\n#: id/id_choices.py:36\nmsgid \"Nusa Tenggara Timur\"\nmsgstr \"Nusa Tenggara Timur\"\n\n#: id/id_choices.py:37\nmsgid \"Papua\"\nmsgstr \"Papua\"\n\n#: id/id_choices.py:38\nmsgid \"Papua Barat\"\nmsgstr \"Papua Barat\"\n\n#: id/id_choices.py:39 id/id_choices.py:66\nmsgid \"Riau\"\nmsgstr \"Riau\"\n\n#: id/id_choices.py:40 id/id_choices.py:74\nmsgid \"Sulawesi Barat\"\nmsgstr \"Sulawesi Barat\"\n\n#: id/id_choices.py:41 id/id_choices.py:75\nmsgid \"Sulawesi Selatan\"\nmsgstr \"Sulawesi Selatan\"\n\n#: id/id_choices.py:42 id/id_choices.py:82\nmsgid \"Sulawesi Tengah\"\nmsgstr \"Sulawesi Tengah\"\n\n#: id/id_choices.py:43 id/id_choices.py:85\nmsgid \"Sulawesi Tenggara\"\nmsgstr \"Sulawesi Tenggara\"\n\n#: id/id_choices.py:44\nmsgid \"Sulawesi Utara\"\nmsgstr \"Sulawesi Utara\"\n\n#: id/id_choices.py:45 id/id_choices.py:58\nmsgid \"Sumatera Barat\"\nmsgstr \"Sumatera Barat\"\n\n#: id/id_choices.py:46 id/id_choices.py:62\nmsgid \"Sumatera Selatan\"\nmsgstr \"Sumatera Selatan\"\n\n#: id/id_choices.py:47 id/id_choices.py:64\nmsgid \"Sumatera Utara\"\nmsgstr \"Sumatera Utara\"\n\n#: id/id_choices.py:52\nmsgid \"Magelang\"\nmsgstr \"Magelang\"\n\n#: id/id_choices.py:54\nmsgid \"Surakarta - Solo\"\nmsgstr \"Surakarta - Solo\"\n\n#: id/id_choices.py:55\nmsgid \"Madiun\"\nmsgstr \"Madiun\"\n\n#: id/id_choices.py:56\nmsgid \"Kediri\"\nmsgstr \"Kediri\"\n\n#: id/id_choices.py:59\nmsgid \"Tapanuli\"\nmsgstr \"Tapanuli\"\n\n#: id/id_choices.py:65\nmsgid \"Nanggroe Aceh Darussalam\"\nmsgstr \"Nanggroe Aceh Darussalam\"\n\n#: id/id_choices.py:67\nmsgid \"Kepulauan Bangka Belitung\"\nmsgstr \"Kepulauan Bangka Belitung\"\n\n#: id/id_choices.py:69\nmsgid \"Corps Consulate\"\nmsgstr \"Corps Consulate\"\n\n#: id/id_choices.py:70\nmsgid \"Corps Diplomatic\"\nmsgstr \"Corps Diplomatic\"\n\n#: id/id_choices.py:71\nmsgid \"Bandung\"\nmsgstr \"Bandung\"\n\n#: id/id_choices.py:73\nmsgid \"Sulawesi Utara Daratan\"\nmsgstr \"Sulawesi Utara Daratan\"\n\n#: id/id_choices.py:78\nmsgid \"NTT - Timor\"\nmsgstr \"NTT - Timor\"\n\n#: id/id_choices.py:80\nmsgid \"Sulawesi Utara Kepulauan\"\nmsgstr \"Sulawesi Utara Kepulauan\"\n\n#: id/id_choices.py:83\nmsgid \"NTB - Lombok\"\nmsgstr \"NTB - Lombok\"\n\n#: id/id_choices.py:84\nmsgid \"Papua dan Papua Barat\"\nmsgstr \"Papua dan Papua Barat\"\n\n#: id/id_choices.py:86\nmsgid \"Cirebon\"\nmsgstr \"Cirebon\"\n\n#: id/id_choices.py:87\nmsgid \"NTB - Sumbawa\"\nmsgstr \"NTB - Sumbawa\"\n\n#: id/id_choices.py:88\nmsgid \"NTT - Flores\"\nmsgstr \"NTT - Flores\"\n\n#: id/id_choices.py:89\nmsgid \"NTT - Sumba\"\nmsgstr \"NTT - Sumba\"\n\n#: id/id_choices.py:90\nmsgid \"Bogor\"\nmsgstr \"Bogor\"\n\n#: id/id_choices.py:91\nmsgid \"Pekalongan\"\nmsgstr \"Pekalongan\"\n\n#: id/id_choices.py:92\nmsgid \"Semarang\"\nmsgstr \"Semarang\"\n\n#: id/id_choices.py:93\nmsgid \"Pati\"\nmsgstr \"Pati\"\n\n#: id/id_choices.py:97\nmsgid \"Surabaya\"\nmsgstr \"Surabaya\"\n\n#: id/id_choices.py:98\nmsgid \"Madura\"\nmsgstr \"Madura\"\n\n#: id/id_choices.py:99\nmsgid \"Malang\"\nmsgstr \"Malang\"\n\n#: id/id_choices.py:100\nmsgid \"Jember\"\nmsgstr \"Jember\"\n\n#: id/id_choices.py:101\nmsgid \"Banyumas\"\nmsgstr \"Banyumas\"\n\n#: id/id_choices.py:102\nmsgid \"Federal Government\"\nmsgstr \"Federal Government\"\n\n#: id/id_choices.py:103\nmsgid \"Bojonegoro\"\nmsgstr \"Bojonegoro\"\n\n#: id/id_choices.py:104\nmsgid \"Purwakarta\"\nmsgstr \"Purwakarta\"\n\n#: id/id_choices.py:105\nmsgid \"Sidoarjo\"\nmsgstr \"Sidoarjo\"\n\n#: id/id_choices.py:106\nmsgid \"Garut\"\nmsgstr \"Garut\"\n\n#: ie/ie_counties.py:8\nmsgid \"Antrim\"\nmsgstr \"Antrim\"\n\n#: ie/ie_counties.py:9\nmsgid \"Armagh\"\nmsgstr \"Armagh\"\n\n#: ie/ie_counties.py:10\nmsgid \"Carlow\"\nmsgstr \"Carlow\"\n\n#: ie/ie_counties.py:11\nmsgid \"Cavan\"\nmsgstr \"Cavan\"\n\n#: ie/ie_counties.py:12\nmsgid \"Clare\"\nmsgstr \"Clare\"\n\n#: ie/ie_counties.py:13\nmsgid \"Cork\"\nmsgstr \"Cork\"\n\n#: ie/ie_counties.py:14\nmsgid \"Derry\"\nmsgstr \"Derry\"\n\n#: ie/ie_counties.py:15\nmsgid \"Donegal\"\nmsgstr \"Donegal\"\n\n#: ie/ie_counties.py:16\nmsgid \"Down\"\nmsgstr \"Down\"\n\n#: ie/ie_counties.py:17\nmsgid \"Dublin\"\nmsgstr \"Dublinas\"\n\n#: ie/ie_counties.py:18\nmsgid \"Fermanagh\"\nmsgstr \"Fermanagh\"\n\n#: ie/ie_counties.py:19\nmsgid \"Galway\"\nmsgstr \"Galway\"\n\n#: ie/ie_counties.py:20\nmsgid \"Kerry\"\nmsgstr \"Kerry\"\n\n#: ie/ie_counties.py:21\nmsgid \"Kildare\"\nmsgstr \"Kildare\"\n\n#: ie/ie_counties.py:22\nmsgid \"Kilkenny\"\nmsgstr \"Kilkenny\"\n\n#: ie/ie_counties.py:23\nmsgid \"Laois\"\nmsgstr \"Laois\"\n\n#: ie/ie_counties.py:24\nmsgid \"Leitrim\"\nmsgstr \"Leitrim\"\n\n#: ie/ie_counties.py:25\nmsgid \"Limerick\"\nmsgstr \"Limerick\"\n\n#: ie/ie_counties.py:26\nmsgid \"Longford\"\nmsgstr \"Longford\"\n\n#: ie/ie_counties.py:27\nmsgid \"Louth\"\nmsgstr \"Louth\"\n\n#: ie/ie_counties.py:28\nmsgid \"Mayo\"\nmsgstr \"Mayo\"\n\n#: ie/ie_counties.py:29\nmsgid \"Meath\"\nmsgstr \"Meath\"\n\n#: ie/ie_counties.py:30\nmsgid \"Monaghan\"\nmsgstr \"Monaghan\"\n\n#: ie/ie_counties.py:31\nmsgid \"Offaly\"\nmsgstr \"Offaly\"\n\n#: ie/ie_counties.py:32\nmsgid \"Roscommon\"\nmsgstr \"Roscommon\"\n\n#: ie/ie_counties.py:33\nmsgid \"Sligo\"\nmsgstr \"Sligo\"\n\n#: ie/ie_counties.py:34\nmsgid \"Tipperary\"\nmsgstr \"Tipperary\"\n\n#: ie/ie_counties.py:35\nmsgid \"Tyrone\"\nmsgstr \"Tyrone\"\n\n#: ie/ie_counties.py:36\nmsgid \"Waterford\"\nmsgstr \"Waterford\"\n\n#: ie/ie_counties.py:37\nmsgid \"Westmeath\"\nmsgstr \"Westmeath\"\n\n#: ie/ie_counties.py:38\nmsgid \"Wexford\"\nmsgstr \"Wexford\"\n\n#: ie/ie_counties.py:39\nmsgid \"Wicklow\"\nmsgstr \"Wicklow\"\n\n#: il/forms.py:32\nmsgid \"Enter a postal code in the format XXXXX\"\nmsgstr \"Įveskite pašto kodą XXXXX formatu\"\n\n#: il/forms.py:51\nmsgid \"Enter a valid ID number.\"\nmsgstr \"Įveskite teisingą ID numerį.\"\n\n#: in_/forms.py:41\nmsgid \"Enter a zip code in the format XXXXXX or XXX XXX.\"\nmsgstr \"Įveskite ZIP pašto kodą XXXXXX arba XXX XXX formatu.\"\n\n#: in_/forms.py:64\nmsgid \"Enter an Indian state or territory.\"\nmsgstr \"Įveskite Indijos valstiją arba teritoriją.\"\n\n#: in_/forms.py:103\nmsgid \"Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.\"\nmsgstr \"Telefono numeriai turi būti 02X-8X, 03X-7X arba 04X-6X formatu.\"\n\n#: is_/forms.py:22\nmsgid \"\"\n\"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.\"\nmsgstr \"Įveskite tinkamą islandų asmens id numerį XXXXXX-XXXX formatu.\"\n\n#: is_/forms.py:23\nmsgid \"The Icelandic identification number is not valid.\"\nmsgstr \"Islandiškas asmens ID yra netinkamas.\"\n\n#: it/forms.py:21\nmsgid \"Enter a valid zip code.\"\nmsgstr \"Įveskite tinkamą pašto kodą.\"\n\n#: it/forms.py:48\nmsgid \"Enter a valid Social Security number.\"\nmsgstr \"Įveskite tinkamą socialinio draudimo numerį.\"\n\n#: it/forms.py:73\nmsgid \"Enter a valid VAT number.\"\nmsgstr \"Įveskite tinkamą PVM numerį\"\n\n#: jp/forms.py:19\nmsgid \"Enter a postal code in the format XXXXXXX or XXX-XXXX.\"\nmsgstr \"Įveskite pašto kodą XXXXXXX arba XXX-XXXX formatu.\"\n\n#: jp/jp_prefectures.py:4\nmsgid \"Hokkaido\"\nmsgstr \"Hokaidas\"\n\n#: jp/jp_prefectures.py:5\nmsgid \"Aomori\"\nmsgstr \"Aomori\"\n\n#: jp/jp_prefectures.py:6\nmsgid \"Iwate\"\nmsgstr \"Iwate\"\n\n#: jp/jp_prefectures.py:7\nmsgid \"Miyagi\"\nmsgstr \"Miyagi\"\n\n#: jp/jp_prefectures.py:8\nmsgid \"Akita\"\nmsgstr \"Akita\"\n\n#: jp/jp_prefectures.py:9\nmsgid \"Yamagata\"\nmsgstr \"Yamagata\"\n\n#: jp/jp_prefectures.py:10\nmsgid \"Fukushima\"\nmsgstr \"Fukushima\"\n\n#: jp/jp_prefectures.py:11\nmsgid \"Ibaraki\"\nmsgstr \"Ibaraki\"\n\n#: jp/jp_prefectures.py:12\nmsgid \"Tochigi\"\nmsgstr \"Tochigi\"\n\n#: jp/jp_prefectures.py:13\nmsgid \"Gunma\"\nmsgstr \"Gunma\"\n\n#: jp/jp_prefectures.py:14\nmsgid \"Saitama\"\nmsgstr \"Saitama\"\n\n#: jp/jp_prefectures.py:15\nmsgid \"Chiba\"\nmsgstr \"Chiba\"\n\n#: jp/jp_prefectures.py:16\nmsgid \"Tokyo\"\nmsgstr \"Tokijas\"\n\n#: jp/jp_prefectures.py:17\nmsgid \"Kanagawa\"\nmsgstr \"Kanagawa\"\n\n#: jp/jp_prefectures.py:18\nmsgid \"Yamanashi\"\nmsgstr \"Yamanashi\"\n\n#: jp/jp_prefectures.py:19\nmsgid \"Nagano\"\nmsgstr \"Nagano\"\n\n#: jp/jp_prefectures.py:20\nmsgid \"Niigata\"\nmsgstr \"Niigata\"\n\n#: jp/jp_prefectures.py:21\nmsgid \"Toyama\"\nmsgstr \"Toyama\"\n\n#: jp/jp_prefectures.py:22\nmsgid \"Ishikawa\"\nmsgstr \"Ishikawa\"\n\n#: jp/jp_prefectures.py:23\nmsgid \"Fukui\"\nmsgstr \"Fukui\"\n\n#: jp/jp_prefectures.py:24\nmsgid \"Gifu\"\nmsgstr \"Gifu\"\n\n#: jp/jp_prefectures.py:25\nmsgid \"Shizuoka\"\nmsgstr \"Shizuoka\"\n\n#: jp/jp_prefectures.py:26\nmsgid \"Aichi\"\nmsgstr \"Aichi\"\n\n#: jp/jp_prefectures.py:27\nmsgid \"Mie\"\nmsgstr \"Mie\"\n\n#: jp/jp_prefectures.py:28\nmsgid \"Shiga\"\nmsgstr \"Shiga\"\n\n#: jp/jp_prefectures.py:29\nmsgid \"Kyoto\"\nmsgstr \"Kioto\"\n\n#: jp/jp_prefectures.py:30\nmsgid \"Osaka\"\nmsgstr \"Osaka\"\n\n#: jp/jp_prefectures.py:31\nmsgid \"Hyogo\"\nmsgstr \"Hyogo\"\n\n#: jp/jp_prefectures.py:32\nmsgid \"Nara\"\nmsgstr \"Nara\"\n\n#: jp/jp_prefectures.py:33\nmsgid \"Wakayama\"\nmsgstr \"Wakayama\"\n\n#: jp/jp_prefectures.py:34\nmsgid \"Tottori\"\nmsgstr \"Tottori\"\n\n#: jp/jp_prefectures.py:35\nmsgid \"Shimane\"\nmsgstr \"Shimane\"\n\n#: jp/jp_prefectures.py:36\nmsgid \"Okayama\"\nmsgstr \"Okayama\"\n\n#: jp/jp_prefectures.py:37\nmsgid \"Hiroshima\"\nmsgstr \"Hirošima\"\n\n#: jp/jp_prefectures.py:38\nmsgid \"Yamaguchi\"\nmsgstr \"Yamaguchi\"\n\n#: jp/jp_prefectures.py:39\nmsgid \"Tokushima\"\nmsgstr \"Tokushima\"\n\n#: jp/jp_prefectures.py:40\nmsgid \"Kagawa\"\nmsgstr \"Kagawa\"\n\n#: jp/jp_prefectures.py:41\nmsgid \"Ehime\"\nmsgstr \"Ehime\"\n\n#: jp/jp_prefectures.py:42\nmsgid \"Kochi\"\nmsgstr \"Kochi\"\n\n#: jp/jp_prefectures.py:43\nmsgid \"Fukuoka\"\nmsgstr \"Fukuoka\"\n\n#: jp/jp_prefectures.py:44\nmsgid \"Saga\"\nmsgstr \"Saga\"\n\n#: jp/jp_prefectures.py:45\nmsgid \"Nagasaki\"\nmsgstr \"Nagasakis\"\n\n#: jp/jp_prefectures.py:46\nmsgid \"Kumamoto\"\nmsgstr \"Kumamoto\"\n\n#: jp/jp_prefectures.py:47\nmsgid \"Oita\"\nmsgstr \"Oita\"\n\n#: jp/jp_prefectures.py:48\nmsgid \"Miyazaki\"\nmsgstr \"Miyazaki\"\n\n#: jp/jp_prefectures.py:49\nmsgid \"Kagoshima\"\nmsgstr \"Kagoshima\"\n\n#: jp/jp_prefectures.py:50\nmsgid \"Okinawa\"\nmsgstr \"Okinava\"\n\n#: kw/forms.py:27\nmsgid \"Enter a valid Kuwaiti Civil ID number\"\nmsgstr \"Įveskite teisingą Kuveito tapatybės kortelės numerį.\"\n\n#: mk/forms.py:18\nmsgid \"\"\n\"Identity card numbers must contain either 4 to 7 digits or an uppercase \"\n\"letter and 7 digits.\"\nmsgstr \"\"\n\"Identifikacijos kortelės skaičiai turi turėti nuo 4-ių iki 7-ių skaitmenų \"\n\"arba didžiąją raidę ir 7 skaitmenis.\"\n\n#: mk/forms.py:57 si/forms.py:24\nmsgid \"This field should contain exactly 13 digits.\"\nmsgstr \"Šis laukelis turėtų turėti lygiai 13 skaitmenų.\"\n\n#: mk/forms.py:58\nmsgid \"The first 7 digits of the UMCN must represent a valid past date.\"\nmsgstr \"Pirmi 7 UMCN skaitmenys turi nurodyti teisingą datą praeityje.\"\n\n#: mk/forms.py:59\nmsgid \"The UMCN is not valid.\"\nmsgstr \"UMCN yra neteisingas.\"\n\n#: mk/mk_choices.py:10\nmsgid \"Aerodrom\"\nmsgstr \"Aerodromas\"\n\n#: mk/mk_choices.py:11\nmsgid \"Aračinovo\"\nmsgstr \"Aračinovas\"\n\n#: mk/mk_choices.py:12\nmsgid \"Berovo\"\nmsgstr \"Berovas\"\n\n#: mk/mk_choices.py:13\nmsgid \"Bitola\"\nmsgstr \"Bitola\"\n\n#: mk/mk_choices.py:14\nmsgid \"Bogdanci\"\nmsgstr \"Bogdančis\"\n\n#: mk/mk_choices.py:15\nmsgid \"Bogovinje\"\nmsgstr \"Bogovinja\"\n\n#: mk/mk_choices.py:16\nmsgid \"Bosilovo\"\nmsgstr \"Bosilovas\"\n\n#: mk/mk_choices.py:17\nmsgid \"Brvenica\"\nmsgstr \"Brveniča\"\n\n#: mk/mk_choices.py:18\nmsgid \"Butel\"\nmsgstr \"Butel\"\n\n#: mk/mk_choices.py:19\nmsgid \"Valandovo\"\nmsgstr \"Valandovas\"\n\n#: mk/mk_choices.py:20\nmsgid \"Vasilevo\"\nmsgstr \"Vasilevas\"\n\n#: mk/mk_choices.py:21\nmsgid \"Vevčani\"\nmsgstr \"Vevčanis\"\n\n#: mk/mk_choices.py:22\nmsgid \"Veles\"\nmsgstr \"Velesas\"\n\n#: mk/mk_choices.py:23\nmsgid \"Vinica\"\nmsgstr \"Vinica\"\n\n#: mk/mk_choices.py:24\nmsgid \"Vraneštica\"\nmsgstr \"Vraneštica\"\n\n#: mk/mk_choices.py:25\nmsgid \"Vrapčište\"\nmsgstr \"Vrapčištės\"\n\n#: mk/mk_choices.py:26\nmsgid \"Gazi Baba\"\nmsgstr \"Gazi Baba\"\n\n#: mk/mk_choices.py:27\nmsgid \"Gevgelija\"\nmsgstr \"Gevgelija\"\n\n#: mk/mk_choices.py:28\nmsgid \"Gostivar\"\nmsgstr \"Gostivaras\"\n\n#: mk/mk_choices.py:29\nmsgid \"Gradsko\"\nmsgstr \"Gradskas\"\n\n#: mk/mk_choices.py:30\nmsgid \"Debar\"\nmsgstr \"Debaras\"\n\n#: mk/mk_choices.py:31\nmsgid \"Debarca\"\nmsgstr \"Debarca\"\n\n#: mk/mk_choices.py:32\nmsgid \"Delčevo\"\nmsgstr \"Delčevas\"\n\n#: mk/mk_choices.py:33\nmsgid \"Demir Kapija\"\nmsgstr \"Demir Kapija\"\n\n#: mk/mk_choices.py:34\nmsgid \"Demir Hisar\"\nmsgstr \"Demir Hisaras\"\n\n#: mk/mk_choices.py:35\nmsgid \"Dolneni\"\nmsgstr \"Dolnenis\"\n\n#: mk/mk_choices.py:36\nmsgid \"Drugovo\"\nmsgstr \"Drugovas\"\n\n#: mk/mk_choices.py:37\nmsgid \"Gjorče Petrov\"\nmsgstr \"Gjorče Petrov\"\n\n#: mk/mk_choices.py:38\nmsgid \"Želino\"\nmsgstr \"Želinas\"\n\n#: mk/mk_choices.py:39\nmsgid \"Zajas\"\nmsgstr \"Zajas\"\n\n#: mk/mk_choices.py:40\nmsgid \"Zelenikovo\"\nmsgstr \"Zelenikovas\"\n\n#: mk/mk_choices.py:41\nmsgid \"Zrnovci\"\nmsgstr \"Zrnovičas\"\n\n#: mk/mk_choices.py:42\nmsgid \"Ilinden\"\nmsgstr \"Ilindenas\"\n\n#: mk/mk_choices.py:43\nmsgid \"Jegunovce\"\nmsgstr \"Jegunovčė\"\n\n#: mk/mk_choices.py:44\nmsgid \"Kavadarci\"\nmsgstr \"Kavadarčis\"\n\n#: mk/mk_choices.py:45\nmsgid \"Karbinci\"\nmsgstr \"Karbinci\"\n\n#: mk/mk_choices.py:46\nmsgid \"Karpoš\"\nmsgstr \"Karpoš\"\n\n#: mk/mk_choices.py:47\nmsgid \"Kisela Voda\"\nmsgstr \"Kisela Voda\"\n\n#: mk/mk_choices.py:48\nmsgid \"Kičevo\"\nmsgstr \"Kičevas\"\n\n#: mk/mk_choices.py:49\nmsgid \"Konče\"\nmsgstr \"Končė\"\n\n#: mk/mk_choices.py:50\nmsgid \"Koćani\"\nmsgstr \"Kočanis\"\n\n#: mk/mk_choices.py:51\nmsgid \"Kratovo\"\nmsgstr \"Kratovas\"\n\n#: mk/mk_choices.py:52\nmsgid \"Kriva Palanka\"\nmsgstr \"Kriva Palanka\"\n\n#: mk/mk_choices.py:53\nmsgid \"Krivogaštani\"\nmsgstr \"Krivogaštanis\"\n\n#: mk/mk_choices.py:54\nmsgid \"Kruševo\"\nmsgstr \"Kruševas\"\n\n#: mk/mk_choices.py:55\nmsgid \"Kumanovo\"\nmsgstr \"Kumanovas\"\n\n#: mk/mk_choices.py:56\nmsgid \"Lipkovo\"\nmsgstr \"Lipkovas\"\n\n#: mk/mk_choices.py:57\nmsgid \"Lozovo\"\nmsgstr \"Lozovo\"\n\n#: mk/mk_choices.py:58\nmsgid \"Mavrovo i Rostuša\"\nmsgstr \"Mavrovas ir Rostušė\"\n\n#: mk/mk_choices.py:59\nmsgid \"Makedonska Kamenica\"\nmsgstr \"Makedonijos Kamenica\"\n\n#: mk/mk_choices.py:60\nmsgid \"Makedonski Brod\"\nmsgstr \"Makedonijos Brodas\"\n\n#: mk/mk_choices.py:61\nmsgid \"Mogila\"\nmsgstr \"Mogila\"\n\n#: mk/mk_choices.py:62\nmsgid \"Negotino\"\nmsgstr \"Negotinas\"\n\n#: mk/mk_choices.py:63\nmsgid \"Novaci\"\nmsgstr \"Novačis\"\n\n#: mk/mk_choices.py:64\nmsgid \"Novo Selo\"\nmsgstr \"Novo Selas\"\n\n#: mk/mk_choices.py:65\nmsgid \"Oslomej\"\nmsgstr \"Oslomeja\"\n\n#: mk/mk_choices.py:66\nmsgid \"Ohrid\"\nmsgstr \"Ohridas\"\n\n#: mk/mk_choices.py:67\nmsgid \"Petrovec\"\nmsgstr \"Petrovecas\"\n\n#: mk/mk_choices.py:68\nmsgid \"Pehčevo\"\nmsgstr \"Pehčevas\"\n\n#: mk/mk_choices.py:69\nmsgid \"Plasnica\"\nmsgstr \"Plasnica\"\n\n#: mk/mk_choices.py:70\nmsgid \"Prilep\"\nmsgstr \"Prilepas\"\n\n#: mk/mk_choices.py:71\nmsgid \"Probištip\"\nmsgstr \"Probištipas\"\n\n#: mk/mk_choices.py:72\nmsgid \"Radoviš\"\nmsgstr \"Radovišas\"\n\n#: mk/mk_choices.py:73\nmsgid \"Rankovce\"\nmsgstr \"Rankovčė\"\n\n#: mk/mk_choices.py:74\nmsgid \"Resen\"\nmsgstr \"Resenas\"\n\n#: mk/mk_choices.py:75\nmsgid \"Rosoman\"\nmsgstr \"Rosomanas\"\n\n#: mk/mk_choices.py:76\nmsgid \"Saraj\"\nmsgstr \"Saraj\"\n\n#: mk/mk_choices.py:77\nmsgid \"Sveti Nikole\"\nmsgstr \"Sveti Nikolas\"\n\n#: mk/mk_choices.py:78\nmsgid \"Sopište\"\nmsgstr \"Sopištas\"\n\n#: mk/mk_choices.py:79\nmsgid \"Star Dojran\"\nmsgstr \"Dojranas\"\n\n#: mk/mk_choices.py:80\nmsgid \"Staro Nagoričane\"\nmsgstr \"Staro Nagoričanas\"\n\n#: mk/mk_choices.py:81\nmsgid \"Struga\"\nmsgstr \"Struga\"\n\n#: mk/mk_choices.py:82\nmsgid \"Strumica\"\nmsgstr \"Strumica\"\n\n#: mk/mk_choices.py:83\nmsgid \"Studeničani\"\nmsgstr \"Studeničanis\"\n\n#: mk/mk_choices.py:84\nmsgid \"Tearce\"\nmsgstr \"Tearcė\"\n\n#: mk/mk_choices.py:85\nmsgid \"Tetovo\"\nmsgstr \"Tetovas\"\n\n#: mk/mk_choices.py:86\nmsgid \"Centar\"\nmsgstr \"Centar\"\n\n#: mk/mk_choices.py:87\nmsgid \"Centar-Župa\"\nmsgstr \"Centrinė Župa\"\n\n#: mk/mk_choices.py:88\nmsgid \"Čair\"\nmsgstr \"Čair\"\n\n#: mk/mk_choices.py:89\nmsgid \"Čaška\"\nmsgstr \"Čaška\"\n\n#: mk/mk_choices.py:90\nmsgid \"Češinovo-Obleševo\"\nmsgstr \"Češinovas-Obleševas\"\n\n#: mk/mk_choices.py:91\nmsgid \"Čučer-Sandevo\"\nmsgstr \"Čučer-Sandevas\"\n\n#: mk/mk_choices.py:92\nmsgid \"Štip\"\nmsgstr \"Štipas\"\n\n#: mk/mk_choices.py:93\nmsgid \"Šuto Orizari\"\nmsgstr \"Šuto Orizari\"\n\n#: mk/models.py:11\nmsgid \"Macedonian identity card number\"\nmsgstr \"Makedonijos identifikacinės kortelės numeris\"\n\n#: mk/models.py:25\nmsgid \"A Macedonian municipality (2 character code)\"\nmsgstr \"Makedonijos savivaldybė (2-jų raidžių kodas)\"\n\n#: mk/models.py:35\nmsgid \"Unique master citizen number (13 digits)\"\nmsgstr \"Unikalus piliečio numeris (13 skaitmenų)\"\n\n#: mx/forms.py:67\nmsgid \"Enter a valid zip code in the format XXXXX.\"\nmsgstr \"Įveskite teisingą ZIP pašto kodą XXXXX formatu.\"\n\n#: mx/forms.py:110\nmsgid \"Enter a valid RFC.\"\nmsgstr \"Įveskite teisingą RFC.\"\n\n#: mx/forms.py:111\nmsgid \"Invalid checksum for RFC.\"\nmsgstr \"Klaidinga RFC kontrolinė suma.\"\n\n#: mx/forms.py:191\nmsgid \"Enter a valid CURP.\"\nmsgstr \"Įveskite teisingą CURP.\"\n\n#: mx/forms.py:192\nmsgid \"Invalid checksum for CURP.\"\nmsgstr \"Klaidinga CURP kontrolinė suma.\"\n\n#: mx/models.py:14\nmsgid \"Mexico state (three uppercase letters)\"\nmsgstr \"Meksikos valstija (trys didžiosios raidės)\"\n\n#: mx/models.py:27\nmsgid \"Mexico zip code\"\nmsgstr \"Meksikos pašto kodas\"\n\n#: mx/models.py:44\nmsgid \"Mexican RFC\"\nmsgstr \"Meksikos RFC\"\n\n#: mx/models.py:61\nmsgid \"Mexican CURP\"\nmsgstr \"Meksikos CURP\"\n\n#: mx/mx_states.py:14\nmsgid \"Aguascalientes\"\nmsgstr \"Aguascalientes\"\n\n#: mx/mx_states.py:15\nmsgid \"Baja California\"\nmsgstr \"Baja California\"\n\n#: mx/mx_states.py:16\nmsgid \"Baja California Sur\"\nmsgstr \"Baja California Sur\"\n\n#: mx/mx_states.py:17\nmsgid \"Campeche\"\nmsgstr \"Campeche\"\n\n#: mx/mx_states.py:18\nmsgid \"Chihuahua\"\nmsgstr \"Chihuahua\"\n\n#: mx/mx_states.py:19\nmsgid \"Chiapas\"\nmsgstr \"Chiapas\"\n\n#: mx/mx_states.py:20\nmsgid \"Coahuila\"\nmsgstr \"Coahuila\"\n\n#: mx/mx_states.py:21\nmsgid \"Colima\"\nmsgstr \"Colima\"\n\n#: mx/mx_states.py:22\nmsgid \"Distrito Federal\"\nmsgstr \"Distrito Federal\"\n\n#: mx/mx_states.py:23\nmsgid \"Durango\"\nmsgstr \"Durango\"\n\n#: mx/mx_states.py:24\nmsgid \"Guerrero\"\nmsgstr \"Guerrero\"\n\n#: mx/mx_states.py:25\nmsgid \"Guanajuato\"\nmsgstr \"Guanajuato\"\n\n#: mx/mx_states.py:26\nmsgid \"Hidalgo\"\nmsgstr \"Hidalgo\"\n\n#: mx/mx_states.py:27\nmsgid \"Jalisco\"\nmsgstr \"Jalisco\"\n\n#: mx/mx_states.py:28\nmsgid \"Estado de México\"\nmsgstr \"Estado de Mexico\"\n\n#: mx/mx_states.py:29\nmsgid \"Michoacán\"\nmsgstr \"Michoacan\"\n\n#: mx/mx_states.py:30\nmsgid \"Morelos\"\nmsgstr \"Morelos\"\n\n#: mx/mx_states.py:31\nmsgid \"Nayarit\"\nmsgstr \"Nayarit\"\n\n#: mx/mx_states.py:32\nmsgid \"Nuevo León\"\nmsgstr \"Nuevo León\"\n\n#: mx/mx_states.py:33\nmsgid \"Oaxaca\"\nmsgstr \"Oaxaca\"\n\n#: mx/mx_states.py:34\nmsgid \"Puebla\"\nmsgstr \"Puebla\"\n\n#: mx/mx_states.py:35\nmsgid \"Querétaro\"\nmsgstr \"Queretaro\"\n\n#: mx/mx_states.py:36\nmsgid \"Quintana Roo\"\nmsgstr \"Quintana Roo\"\n\n#: mx/mx_states.py:37\nmsgid \"Sinaloa\"\nmsgstr \"Sinaloa\"\n\n#: mx/mx_states.py:38\nmsgid \"San Luis Potosí\"\nmsgstr \"San Luis Potosi\"\n\n#: mx/mx_states.py:39\nmsgid \"Sonora\"\nmsgstr \"Sonora\"\n\n#: mx/mx_states.py:40\nmsgid \"Tabasco\"\nmsgstr \"Tabasco\"\n\n#: mx/mx_states.py:41\nmsgid \"Tamaulipas\"\nmsgstr \"Tamaulipas\"\n\n#: mx/mx_states.py:42\nmsgid \"Tlaxcala\"\nmsgstr \"Tlaxcala\"\n\n#: mx/mx_states.py:43\nmsgid \"Veracruz\"\nmsgstr \"Veracruz\"\n\n#: mx/mx_states.py:44\nmsgid \"Yucatán\"\nmsgstr \"Yucatan\"\n\n#: mx/mx_states.py:45\nmsgid \"Zacatecas\"\nmsgstr \"Zacatecas\"\n\n#: nl/forms.py:26\nmsgid \"Enter a valid postal code\"\nmsgstr \"Įveskite galiojantį pašto kodą\"\n\n#: nl/forms.py:82\nmsgid \"Enter a valid SoFi number\"\nmsgstr \"Įveskite teisingą SoFi numerį.\"\n\n#: nl/nl_provinces.py:4\nmsgid \"Drenthe\"\nmsgstr \"Drenthe\"\n\n#: nl/nl_provinces.py:5\nmsgid \"Flevoland\"\nmsgstr \"Flevoland\"\n\n#: nl/nl_provinces.py:6\nmsgid \"Friesland\"\nmsgstr \"Friesland\"\n\n#: nl/nl_provinces.py:7\nmsgid \"Gelderland\"\nmsgstr \"Gelderland\"\n\n#: nl/nl_provinces.py:8\nmsgid \"Groningen\"\nmsgstr \"Groningen\"\n\n#: nl/nl_provinces.py:10\nmsgid \"Noord-Brabant\"\nmsgstr \"Šiaurinis Brabantas\"\n\n#: nl/nl_provinces.py:11\nmsgid \"Noord-Holland\"\nmsgstr \"Šiaurinė Olandija\"\n\n#: nl/nl_provinces.py:12\nmsgid \"Overijssel\"\nmsgstr \"Overijssel\"\n\n#: nl/nl_provinces.py:13\nmsgid \"Utrecht\"\nmsgstr \"Utrecht\"\n\n#: nl/nl_provinces.py:14\nmsgid \"Zeeland\"\nmsgstr \"Zeeland\"\n\n#: nl/nl_provinces.py:15\nmsgid \"Zuid-Holland\"\nmsgstr \"Zuid-Holland\"\n\n#: no/forms.py:39\nmsgid \"Enter a valid Norwegian social security number.\"\nmsgstr \"Įveskite tinkamą norvegiška socialinio draudimo numerį.\"\n\n#: pe/forms.py:28\nmsgid \"This field requires 8 digits.\"\nmsgstr \"Šis laukas priima 8 skaičius.\"\n\n#: pe/forms.py:56\nmsgid \"This field requires 11 digits.\"\nmsgstr \"Šis laukas priima 11 skaičių.\"\n\n#: pl/forms.py:42\nmsgid \"National Identification Number consists of 11 digits.\"\nmsgstr \"Nacionalinį asmens identifikavimo kodą sudaro 11 skaitmenų.\"\n\n#: pl/forms.py:43\nmsgid \"Wrong checksum for the National Identification Number.\"\nmsgstr \"Neteisinga nacionalinio identifikacinio numerio kontrolinė suma.\"\n\n#: pl/forms.py:79\nmsgid \"National ID Card Number consists of 3 letters and 6 digits.\"\nmsgstr \"\"\n\"Nacionalinės identifikacinės kortelės numeris sudarytas iš 3 raidžių ir 6 \"\n\"skaitmenų.\"\n\n#: pl/forms.py:80\nmsgid \"Wrong checksum for the National ID Card Number.\"\nmsgstr \"Neteisinga nacionalinės identifikacinės kortelės kontrolinė suma.\"\n\n#: pl/forms.py:131\nmsgid \"\"\n\"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or \"\n\"XXXXXXXXXX.\"\nmsgstr \"\"\n\"Įveskite mokesčių numerio laukelį (NIP) formatu XXX-XXX-XX-XX, XXX-XX-XX-XXX \"\n\"arba XXXXXXXXXX.\"\n\n#: pl/forms.py:132\nmsgid \"Wrong checksum for the Tax Number (NIP).\"\nmsgstr \"Neteisinga mokesčių mokėtojo numerio (NIP) kontrolinė suma.\"\n\n#: pl/forms.py:171\nmsgid \"National Business Register Number (REGON) consists of 9 or 14 digits.\"\nmsgstr \"\"\n\"Nacionalinis verslo registracijos numeris (REGON) susideda iš 9 ar 14 \"\n\"skaitmenų.\"\n\n#: pl/forms.py:172\nmsgid \"Wrong checksum for the National Business Register Number (REGON).\"\nmsgstr \"Neteisinga nacionalinio verslo numerio (REGON) kontrolinė suma.\"\n\n#: pl/forms.py:212\nmsgid \"Enter a postal code in the format XX-XXX.\"\nmsgstr \"Įveskite pašto kodą XX-XXX formatu.\"\n\n#: pl/pl_voivodeships.py:8\nmsgid \"Lower Silesia\"\nmsgstr \"Lower Silesia\"\n\n#: pl/pl_voivodeships.py:9\nmsgid \"Kuyavia-Pomerania\"\nmsgstr \"Kuyavia-Pomerania\"\n\n#: pl/pl_voivodeships.py:10\nmsgid \"Lublin\"\nmsgstr \"Lublin\"\n\n#: pl/pl_voivodeships.py:11\nmsgid \"Lubusz\"\nmsgstr \"Lubusz\"\n\n#: pl/pl_voivodeships.py:12\nmsgid \"Lodz\"\nmsgstr \"Lodz\"\n\n#: pl/pl_voivodeships.py:13\nmsgid \"Lesser Poland\"\nmsgstr \"Lesser Poland\"\n\n#: pl/pl_voivodeships.py:14\nmsgid \"Masovia\"\nmsgstr \"Masovia\"\n\n#: pl/pl_voivodeships.py:15\nmsgid \"Opole\"\nmsgstr \"Opole\"\n\n#: pl/pl_voivodeships.py:16\nmsgid \"Subcarpatia\"\nmsgstr \"Subcarpatia\"\n\n#: pl/pl_voivodeships.py:17\nmsgid \"Podlasie\"\nmsgstr \"Podlasie\"\n\n#: pl/pl_voivodeships.py:18\nmsgid \"Pomerania\"\nmsgstr \"Pomerania\"\n\n#: pl/pl_voivodeships.py:19\nmsgid \"Silesia\"\nmsgstr \"Silesia\"\n\n#: pl/pl_voivodeships.py:20\nmsgid \"Swietokrzyskie\"\nmsgstr \"Swietokrzyskie\"\n\n#: pl/pl_voivodeships.py:21\nmsgid \"Warmia-Masuria\"\nmsgstr \"Warmia-Masuria\"\n\n#: pl/pl_voivodeships.py:22\nmsgid \"Greater Poland\"\nmsgstr \"Greater Poland\"\n\n#: pl/pl_voivodeships.py:23\nmsgid \"West Pomerania\"\nmsgstr \"West Pomerania\"\n\n#: pt/forms.py:19\nmsgid \"Enter a zip code in the format XXXX-XXX.\"\nmsgstr \"Įveskite pašto kodą XXXX-XXX formatu.\"\n\n#: pt/forms.py:39\nmsgid \"Phone numbers must have 9 digits, or start by + or 00.\"\nmsgstr \"Telefono numerį turi sudaryti 9 skaitmenys arba prasidėti + ar 00.\"\n\n#: ro/forms.py:22\nmsgid \"Enter a valid CIF.\"\nmsgstr \"Įveskite teisingą CIF numerį.\"\n\n#: ro/forms.py:59\nmsgid \"Enter a valid CNP.\"\nmsgstr \"Įveskite teisingą CNP numerį.\"\n\n#: ro/forms.py:143\nmsgid \"Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format\"\nmsgstr \"Įveskite teisingą IBAN numerį ROXX-XXXX-XXXX-XXXX-XXXX-XXXX formatu\"\n\n#: ro/forms.py:175\nmsgid \"Phone numbers must be in XXXX-XXXXXX format.\"\nmsgstr \"Telefono numeris turi būti XXXX-XXXXXX formatu.\"\n\n#: ro/forms.py:200\nmsgid \"Enter a valid postal code in the format XXXXXX\"\nmsgstr \"Įveskite teisingą pašto kodą XXXXXX formatu\"\n\n#: ru/forms.py:37\nmsgid \"Enter a postal code in the format XXXXXX.\"\nmsgstr \"Įveskite pašto kodą XXXXXX formatu.\"\n\n#: ru/forms.py:50\nmsgid \"Enter a passport number in the format XXXX XXXXXX.\"\nmsgstr \"Įveskite paso numerį XXXX XXXXXX formatu.\"\n\n#: ru/forms.py:63\nmsgid \"Enter a passport number in the format XX XXXXXXX.\"\nmsgstr \"Įveskite paso numerį XX XXXXXXX formatu.\"\n\n#: ru/ru_regions.py:10\nmsgid \"Central Federal County\"\nmsgstr \"Centrinė federalinė apygarda\"\n\n#: ru/ru_regions.py:11\nmsgid \"South Federal County\"\nmsgstr \"Pietų federalinė apygarda\"\n\n#: ru/ru_regions.py:12\nmsgid \"North-West Federal County\"\nmsgstr \"Šiaurės Vakarų federalinė apygarda\"\n\n#: ru/ru_regions.py:13\nmsgid \"Far-East Federal County\"\nmsgstr \"Tolimųjų Rytų federalinė apygarda\"\n\n#: ru/ru_regions.py:14\nmsgid \"Siberian Federal County\"\nmsgstr \"Sibiro federalinė apygarda\"\n\n#: ru/ru_regions.py:15\nmsgid \"Ural Federal County\"\nmsgstr \"Uralo federalinė apygarda\"\n\n#: ru/ru_regions.py:16\nmsgid \"Privolzhsky Federal County\"\nmsgstr \"Pavolgio federalinė apygarda\"\n\n#: ru/ru_regions.py:17\nmsgid \"North-Caucasian Federal County\"\nmsgstr \"Šiaurės Kaukazo federalinė apygarda\"\n\n#: ru/ru_regions.py:21\nmsgid \"Moskva\"\nmsgstr \"Maskva\"\n\n#: ru/ru_regions.py:22\nmsgid \"Saint-Peterburg\"\nmsgstr \"Sankt-Peterburgas\"\n\n#: ru/ru_regions.py:23\nmsgid \"Moskovskaya oblast'\"\nmsgstr \"Maskvos sritis\"\n\n#: ru/ru_regions.py:24\nmsgid \"Adygeya, Respublika\"\nmsgstr \"Adygėjos Respublika\"\n\n#: ru/ru_regions.py:25\nmsgid \"Bashkortostan, Respublika\"\nmsgstr \"Baškirijos Respublika\"\n\n#: ru/ru_regions.py:26\nmsgid \"Buryatia, Respublika\"\nmsgstr \" Buriatijos Respublika\"\n\n#: ru/ru_regions.py:27\nmsgid \"Altay, Respublika\"\nmsgstr \"Altajaus Respublika\"\n\n#: ru/ru_regions.py:28\nmsgid \"Dagestan, Respublika\"\nmsgstr \"Dagestano Respublika\"\n\n#: ru/ru_regions.py:29\nmsgid \"Ingushskaya Respublika\"\nmsgstr \"Ingušijos Respublika\"\n\n#: ru/ru_regions.py:30\nmsgid \"Kabardino-Balkarskaya Respublika\"\nmsgstr \"Kabardos-Balkarijos Respublika\"\n\n#: ru/ru_regions.py:31\nmsgid \"Kalmykia, Respublika\"\nmsgstr \"Kalmukijos Respublika\"\n\n#: ru/ru_regions.py:32\nmsgid \"Karachaevo-Cherkesskaya Respublika\"\nmsgstr \"Karačiajaus-Čerkesijos Respublika\"\n\n#: ru/ru_regions.py:33\nmsgid \"Karelia, Respublika\"\nmsgstr \"Karelija, Respublika\"\n\n#: ru/ru_regions.py:34\nmsgid \"Komi, Respublika\"\nmsgstr \"Komijos Respublika\"\n\n#: ru/ru_regions.py:35\nmsgid \"Mariy Ehl, Respublika\"\nmsgstr \"Marių Respublika\"\n\n#: ru/ru_regions.py:36\nmsgid \"Mordovia, Respublika\"\nmsgstr \"Mordvijos Respublika\"\n\n#: ru/ru_regions.py:37\nmsgid \"Sakha, Respublika (Yakutiya)\"\nmsgstr \"Sachos Respublika (Jakutija)\"\n\n#: ru/ru_regions.py:38\nmsgid \"Severnaya Osetia, Respublika (Alania)\"\nmsgstr \"Šiaurės Osetija-Alanija\"\n\n#: ru/ru_regions.py:39\nmsgid \"Tatarstan, Respublika\"\nmsgstr \"Tatarstano Respublika\"\n\n#: ru/ru_regions.py:40\nmsgid \"Tyva, Respublika (Tuva)\"\nmsgstr \"Tuvos Respublika\"\n\n#: ru/ru_regions.py:41\nmsgid \"Udmurtskaya Respublika\"\nmsgstr \"Udmurtija\"\n\n#: ru/ru_regions.py:42\nmsgid \"Khakassiya, Respublika\"\nmsgstr \"Chakasijos Respublika\"\n\n#: ru/ru_regions.py:43\nmsgid \"Chechenskaya Respublika\"\nmsgstr \"Čečėnijos respublika\"\n\n#: ru/ru_regions.py:44\nmsgid \"Chuvashskaya Respublika\"\nmsgstr \"Čiuvašijos Respublika\"\n\n#: ru/ru_regions.py:45\nmsgid \"Altayskiy Kray\"\nmsgstr \"Altajaus kraštas\"\n\n#: ru/ru_regions.py:46\nmsgid \"Zabaykalskiy Kray\"\nmsgstr \"Užbaikalės kraštas\"\n\n#: ru/ru_regions.py:47\nmsgid \"Kamchatskiy Kray\"\nmsgstr \"Kamčiatkos kraštas\"\n\n#: ru/ru_regions.py:48\nmsgid \"Krasnodarskiy Kray\"\nmsgstr \"Krasnodaro kraštas\"\n\n#: ru/ru_regions.py:49\nmsgid \"Krasnoyarskiy Kray\"\nmsgstr \"Krasnojarsko kraštas\"\n\n#: ru/ru_regions.py:50\nmsgid \"Permskiy Kray\"\nmsgstr \"Permės kraštas\"\n\n#: ru/ru_regions.py:51\nmsgid \"Primorskiy Kray\"\nmsgstr \"Primorės kraštas\"\n\n#: ru/ru_regions.py:52\nmsgid \"Stavropol'siyy Kray\"\nmsgstr \"Stavropolio kraštas\"\n\n#: ru/ru_regions.py:53\nmsgid \"Khabarovskiy Kray\"\nmsgstr \"Chabarovsko kraštas\"\n\n#: ru/ru_regions.py:54\nmsgid \"Amurskaya oblast'\"\nmsgstr \"Amūro sritis\"\n\n#: ru/ru_regions.py:55\nmsgid \"Arkhangel'skaya oblast'\"\nmsgstr \"Archangelsko sritis\"\n\n#: ru/ru_regions.py:56\nmsgid \"Astrakhanskaya oblast'\"\nmsgstr \"Astrachanės sritis\"\n\n#: ru/ru_regions.py:57\nmsgid \"Belgorodskaya oblast'\"\nmsgstr \"Belgorodo sritis\"\n\n#: ru/ru_regions.py:58\nmsgid \"Bryanskaya oblast'\"\nmsgstr \"Briansko sritis\"\n\n#: ru/ru_regions.py:59\nmsgid \"Vladimirskaya oblast'\"\nmsgstr \"Vladimiro sritis\"\n\n#: ru/ru_regions.py:60\nmsgid \"Volgogradskaya oblast'\"\nmsgstr \"Volgogrado sritis\"\n\n#: ru/ru_regions.py:61\nmsgid \"Vologodskaya oblast'\"\nmsgstr \"Vologdos sritis\"\n\n#: ru/ru_regions.py:62\nmsgid \"Voronezhskaya oblast'\"\nmsgstr \"Voronežo sritis\"\n\n#: ru/ru_regions.py:63\nmsgid \"Ivanovskaya oblast'\"\nmsgstr \"Ivanovo sritis\"\n\n#: ru/ru_regions.py:64\nmsgid \"Irkutskaya oblast'\"\nmsgstr \"Irkutsko sritis\"\n\n#: ru/ru_regions.py:65\nmsgid \"Kaliningradskaya oblast'\"\nmsgstr \"Kaliningrado sritis\"\n\n#: ru/ru_regions.py:66\nmsgid \"Kaluzhskaya oblast'\"\nmsgstr \"Kalugos sritis\"\n\n#: ru/ru_regions.py:67\nmsgid \"Kemerovskaya oblast'\"\nmsgstr \"Kemerovo sritis\"\n\n#: ru/ru_regions.py:68\nmsgid \"Kirovskaya oblast'\"\nmsgstr \"Kirovo sritis\"\n\n#: ru/ru_regions.py:69\nmsgid \"Kostromskaya oblast'\"\nmsgstr \"Kostromos sritis\"\n\n#: ru/ru_regions.py:70\nmsgid \"Kurganskaya oblast'\"\nmsgstr \"Kurgano sritis\"\n\n#: ru/ru_regions.py:71\nmsgid \"Kurskaya oblast'\"\nmsgstr \"Kursko sritis\"\n\n#: ru/ru_regions.py:72\nmsgid \"Leningradskaya oblast'\"\nmsgstr \"Leningrado sritis\"\n\n#: ru/ru_regions.py:73\nmsgid \"Lipeckaya oblast'\"\nmsgstr \"Lipecko sritis\"\n\n#: ru/ru_regions.py:74\nmsgid \"Magadanskaya oblast'\"\nmsgstr \"Magadano sritis\"\n\n#: ru/ru_regions.py:75\nmsgid \"Murmanskaya oblast'\"\nmsgstr \"Murmansko sritis\"\n\n#: ru/ru_regions.py:76\nmsgid \"Nizhegorodskaja oblast'\"\nmsgstr \"Žemutinio Naugardo sritis\"\n\n#: ru/ru_regions.py:77\nmsgid \"Novgorodskaya oblast'\"\nmsgstr \"Naugardo sritis\"\n\n#: ru/ru_regions.py:78\nmsgid \"Novosibirskaya oblast'\"\nmsgstr \"Novosibirsko sritis\"\n\n#: ru/ru_regions.py:79\nmsgid \"Omskaya oblast'\"\nmsgstr \"Omsko sritis\"\n\n#: ru/ru_regions.py:80\nmsgid \"Orenburgskaya oblast'\"\nmsgstr \"Orenburgo sritis\"\n\n#: ru/ru_regions.py:81\nmsgid \"Orlovskaya oblast'\"\nmsgstr \"Oriolo sritis\"\n\n#: ru/ru_regions.py:82\nmsgid \"Penzenskaya oblast'\"\nmsgstr \"Penzos sritis\"\n\n#: ru/ru_regions.py:83\nmsgid \"Pskovskaya oblast'\"\nmsgstr \"Pskovo sritis\"\n\n#: ru/ru_regions.py:84\nmsgid \"Rostovskaya oblast'\"\nmsgstr \"Rostovo sritis\"\n\n#: ru/ru_regions.py:85\nmsgid \"Rjazanskaya oblast'\"\nmsgstr \"Riazanės sritis\"\n\n#: ru/ru_regions.py:86\nmsgid \"Samarskaya oblast'\"\nmsgstr \"Samaros sritis\"\n\n#: ru/ru_regions.py:87\nmsgid \"Saratovskaya oblast'\"\nmsgstr \"Saratovo sritis\"\n\n#: ru/ru_regions.py:88\nmsgid \"Sakhalinskaya oblast'\"\nmsgstr \"Sachalino sritis\"\n\n#: ru/ru_regions.py:89\nmsgid \"Sverdlovskaya oblast'\"\nmsgstr \"Sverdlovsko sritis\"\n\n#: ru/ru_regions.py:90\nmsgid \"Smolenskaya oblast'\"\nmsgstr \"Smolensko sritis\"\n\n#: ru/ru_regions.py:91\nmsgid \"Tambovskaya oblast'\"\nmsgstr \"Tambovo sritis\"\n\n#: ru/ru_regions.py:92\nmsgid \"Tverskaya oblast'\"\nmsgstr \"Tverės sritis\"\n\n#: ru/ru_regions.py:93\nmsgid \"Tomskaya oblast'\"\nmsgstr \"Tomsko sritis\"\n\n#: ru/ru_regions.py:94\nmsgid \"Tul'skaya oblast'\"\nmsgstr \"Tulos sritis\"\n\n#: ru/ru_regions.py:95\nmsgid \"Tyumenskaya oblast'\"\nmsgstr \"Tiumenės sritis\"\n\n#: ru/ru_regions.py:96\nmsgid \"Ul'ianovskaya oblast'\"\nmsgstr \"Uljanovsko sritis\"\n\n#: ru/ru_regions.py:97\nmsgid \"Chelyabinskaya oblast'\"\nmsgstr \"Čeliabinsko sritis\"\n\n#: ru/ru_regions.py:98\nmsgid \"Yaroslavskaya oblast'\"\nmsgstr \"Jaroslavlio sritis\"\n\n#: ru/ru_regions.py:99\nmsgid \"Evreyskaya avtonomnaja oblast'\"\nmsgstr \"Žydų autonominė sritis\"\n\n#: ru/ru_regions.py:100\nmsgid \"Neneckiy autonomnyy okrug\"\nmsgstr \"Nencų autonominė apygarda\"\n\n#: ru/ru_regions.py:101\nmsgid \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\nmsgstr \"Chantų-mansių autonominė apygarda\"\n\n#: ru/ru_regions.py:102\nmsgid \"Chukotskiy avtonomnyy okrug\"\nmsgstr \"Čiukčių autonominė apygarda\"\n\n#: ru/ru_regions.py:103\nmsgid \"Yamalo-Neneckiy avtonomnyy okrug\"\nmsgstr \"Jamalo nencų autonominė apygarda\"\n\n#: se/forms.py:54\nmsgid \"Enter a valid Swedish organisation number.\"\nmsgstr \"Įveskite teisingą Švedijos organizacijos identifikacinį numerį.\"\n\n#: se/forms.py:111\nmsgid \"Enter a valid Swedish personal identity number.\"\nmsgstr \"Įveskite teisingą Švedijos asmeninį identifikacinį numerį.\"\n\n#: se/forms.py:112\nmsgid \"Co-ordination numbers are not allowed.\"\nmsgstr \"Koordinavimo numeriai uždrausti.\"\n\n#: se/forms.py:154\nmsgid \"Enter a Swedish postal code in the format XXXXX.\"\nmsgstr \"Įveskite Švedų pašto kodą XXXXX formatu.\"\n\n#: se/se_counties.py:16\nmsgid \"Stockholm\"\nmsgstr \"Stokholmas\"\n\n#: se/se_counties.py:17\nmsgid \"Västerbotten\"\nmsgstr \"Vasterbotten\"\n\n#: se/se_counties.py:18\nmsgid \"Norrbotten\"\nmsgstr \"Norrbotten\"\n\n#: se/se_counties.py:19\nmsgid \"Uppsala\"\nmsgstr \"Uppsala\"\n\n#: se/se_counties.py:20\nmsgid \"Södermanland\"\nmsgstr \"Sodermanland\"\n\n#: se/se_counties.py:21\nmsgid \"Östergötland\"\nmsgstr \"Ostergotland\"\n\n#: se/se_counties.py:22\nmsgid \"Jönköping\"\nmsgstr \"Jonkoping\"\n\n#: se/se_counties.py:23\nmsgid \"Kronoberg\"\nmsgstr \"Kronoberg\"\n\n#: se/se_counties.py:24\nmsgid \"Kalmar\"\nmsgstr \"Kalmar\"\n\n#: se/se_counties.py:25\nmsgid \"Gotland\"\nmsgstr \"Gotlandas\"\n\n#: se/se_counties.py:26\nmsgid \"Blekinge\"\nmsgstr \"Blekinge\"\n\n#: se/se_counties.py:27\nmsgid \"Skåne\"\nmsgstr \"Skane\"\n\n#: se/se_counties.py:28\nmsgid \"Halland\"\nmsgstr \"Halland\"\n\n#: se/se_counties.py:29\nmsgid \"Västra Götaland\"\nmsgstr \"Vastra Gotaland\"\n\n#: se/se_counties.py:30\nmsgid \"Värmland\"\nmsgstr \"Varmland\"\n\n#: se/se_counties.py:31\nmsgid \"Örebro\"\nmsgstr \"Orebro\"\n\n#: se/se_counties.py:32\nmsgid \"Västmanland\"\nmsgstr \"Vastmanland\"\n\n#: se/se_counties.py:33\nmsgid \"Dalarna\"\nmsgstr \"Dalarna\"\n\n#: se/se_counties.py:34\nmsgid \"Gävleborg\"\nmsgstr \"Gavleborg\"\n\n#: se/se_counties.py:35\nmsgid \"Västernorrland\"\nmsgstr \"Vasternorrland\"\n\n#: se/se_counties.py:36\nmsgid \"Jämtland\"\nmsgstr \"Jamtland\"\n\n#: si/forms.py:25\nmsgid \"The first 7 digits of the EMSO must represent a valid past date.\"\nmsgstr \"Pirmi 7 EMSO skaičiai turi nurodyti datą praeityje.\"\n\n#: si/forms.py:26\nmsgid \"The EMSO is not valid.\"\nmsgstr \"EMSO negaliojantis.\"\n\n#: si/forms.py:86\nmsgid \"Enter a valid tax number in form SIXXXXXXXX\"\nmsgstr \"Įveskite teisingą mokesčių numerį SIXXXXXXXX formatu.\"\n\n#: si/forms.py:151\nmsgid \"Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.\"\nmsgstr \"Įveskite telefono numerį +386XXXXXXXX arba 0XXXXXXXX formatu.\"\n\n#: sk/sk_districts.py:8\nmsgid \"Banska Bystrica\"\nmsgstr \"Banska Bystrica\"\n\n#: sk/sk_districts.py:9\nmsgid \"Banska Stiavnica\"\nmsgstr \"Banska Stiavnica\"\n\n#: sk/sk_districts.py:10\nmsgid \"Bardejov\"\nmsgstr \"Bardejov\"\n\n#: sk/sk_districts.py:11\nmsgid \"Banovce nad Bebravou\"\nmsgstr \"Banovce nad Bebravou\"\n\n#: sk/sk_districts.py:12\nmsgid \"Brezno\"\nmsgstr \"Brezno\"\n\n#: sk/sk_districts.py:13\nmsgid \"Bratislava I\"\nmsgstr \"Bratislava I\"\n\n#: sk/sk_districts.py:14\nmsgid \"Bratislava II\"\nmsgstr \"Bratislava II\"\n\n#: sk/sk_districts.py:15\nmsgid \"Bratislava III\"\nmsgstr \"Bratislava III\"\n\n#: sk/sk_districts.py:16\nmsgid \"Bratislava IV\"\nmsgstr \"Bratislava IV\"\n\n#: sk/sk_districts.py:17\nmsgid \"Bratislava V\"\nmsgstr \"Bratislava V\"\n\n#: sk/sk_districts.py:18\nmsgid \"Bytca\"\nmsgstr \"Bytca\"\n\n#: sk/sk_districts.py:19\nmsgid \"Cadca\"\nmsgstr \"Cadca\"\n\n#: sk/sk_districts.py:20\nmsgid \"Detva\"\nmsgstr \"Detva\"\n\n#: sk/sk_districts.py:21\nmsgid \"Dolny Kubin\"\nmsgstr \"Dolny Kubin\"\n\n#: sk/sk_districts.py:22\nmsgid \"Dunajska Streda\"\nmsgstr \"Dunajska Streda\"\n\n#: sk/sk_districts.py:23\nmsgid \"Galanta\"\nmsgstr \"Galanta\"\n\n#: sk/sk_districts.py:24\nmsgid \"Gelnica\"\nmsgstr \"Gelnica\"\n\n#: sk/sk_districts.py:25\nmsgid \"Hlohovec\"\nmsgstr \"Hlohovec\"\n\n#: sk/sk_districts.py:26\nmsgid \"Humenne\"\nmsgstr \"Humenne\"\n\n#: sk/sk_districts.py:27\nmsgid \"Ilava\"\nmsgstr \"Ilava\"\n\n#: sk/sk_districts.py:28\nmsgid \"Kezmarok\"\nmsgstr \"Kezmarok\"\n\n#: sk/sk_districts.py:29\nmsgid \"Komarno\"\nmsgstr \"Komarno\"\n\n#: sk/sk_districts.py:30\nmsgid \"Kosice I\"\nmsgstr \"Kosice I\"\n\n#: sk/sk_districts.py:31\nmsgid \"Kosice II\"\nmsgstr \"Kosice II\"\n\n#: sk/sk_districts.py:32\nmsgid \"Kosice III\"\nmsgstr \"Kosice III\"\n\n#: sk/sk_districts.py:33\nmsgid \"Kosice IV\"\nmsgstr \"Kosice IV\"\n\n#: sk/sk_districts.py:34\nmsgid \"Kosice - okolie\"\nmsgstr \"Kosice - okolie\"\n\n#: sk/sk_districts.py:35\nmsgid \"Krupina\"\nmsgstr \"Krupina\"\n\n#: sk/sk_districts.py:36\nmsgid \"Kysucke Nove Mesto\"\nmsgstr \"Kysucke Nove Mesto\"\n\n#: sk/sk_districts.py:37\nmsgid \"Levice\"\nmsgstr \"Levice\"\n\n#: sk/sk_districts.py:38\nmsgid \"Levoca\"\nmsgstr \"Levoca\"\n\n#: sk/sk_districts.py:39\nmsgid \"Liptovsky Mikulas\"\nmsgstr \"Liptovsky Mikulas\"\n\n#: sk/sk_districts.py:40\nmsgid \"Lucenec\"\nmsgstr \"Lucenec\"\n\n#: sk/sk_districts.py:41\nmsgid \"Malacky\"\nmsgstr \"Malacky\"\n\n#: sk/sk_districts.py:42\nmsgid \"Martin\"\nmsgstr \"Martin\"\n\n#: sk/sk_districts.py:43\nmsgid \"Medzilaborce\"\nmsgstr \"Medzilaborce\"\n\n#: sk/sk_districts.py:44\nmsgid \"Michalovce\"\nmsgstr \"Michalovce\"\n\n#: sk/sk_districts.py:45\nmsgid \"Myjava\"\nmsgstr \"Myjava\"\n\n#: sk/sk_districts.py:46\nmsgid \"Namestovo\"\nmsgstr \"Namestovo\"\n\n#: sk/sk_districts.py:47\nmsgid \"Nitra\"\nmsgstr \"Nitra\"\n\n#: sk/sk_districts.py:48\nmsgid \"Nove Mesto nad Vahom\"\nmsgstr \"Nove Mesto nad Vahom\"\n\n#: sk/sk_districts.py:49\nmsgid \"Nove Zamky\"\nmsgstr \"Nove Zamky\"\n\n#: sk/sk_districts.py:50\nmsgid \"Partizanske\"\nmsgstr \"Partizanske\"\n\n#: sk/sk_districts.py:51\nmsgid \"Pezinok\"\nmsgstr \"Pezinok\"\n\n#: sk/sk_districts.py:52\nmsgid \"Piestany\"\nmsgstr \"Piestany\"\n\n#: sk/sk_districts.py:53\nmsgid \"Poltar\"\nmsgstr \"Poltar\"\n\n#: sk/sk_districts.py:54\nmsgid \"Poprad\"\nmsgstr \"Poprad\"\n\n#: sk/sk_districts.py:55\nmsgid \"Povazska Bystrica\"\nmsgstr \"Povazska Bystrica\"\n\n#: sk/sk_districts.py:56\nmsgid \"Presov\"\nmsgstr \"Presov\"\n\n#: sk/sk_districts.py:57\nmsgid \"Prievidza\"\nmsgstr \"Prievidza\"\n\n#: sk/sk_districts.py:58\nmsgid \"Puchov\"\nmsgstr \"Puchov\"\n\n#: sk/sk_districts.py:59\nmsgid \"Revuca\"\nmsgstr \"Revuca\"\n\n#: sk/sk_districts.py:60\nmsgid \"Rimavska Sobota\"\nmsgstr \"Rimavska Sobota\"\n\n#: sk/sk_districts.py:61\nmsgid \"Roznava\"\nmsgstr \"Roznava\"\n\n#: sk/sk_districts.py:62\nmsgid \"Ruzomberok\"\nmsgstr \"Ruzomberok\"\n\n#: sk/sk_districts.py:63\nmsgid \"Sabinov\"\nmsgstr \"Sabinov\"\n\n#: sk/sk_districts.py:64\nmsgid \"Senec\"\nmsgstr \"Senec\"\n\n#: sk/sk_districts.py:65\nmsgid \"Senica\"\nmsgstr \"Senica\"\n\n#: sk/sk_districts.py:66\nmsgid \"Skalica\"\nmsgstr \"Skalica\"\n\n#: sk/sk_districts.py:67\nmsgid \"Snina\"\nmsgstr \"Snina\"\n\n#: sk/sk_districts.py:68\nmsgid \"Sobrance\"\nmsgstr \"Sobrance\"\n\n#: sk/sk_districts.py:69\nmsgid \"Spisska Nova Ves\"\nmsgstr \"Spisska Nova Ves\"\n\n#: sk/sk_districts.py:70\nmsgid \"Stara Lubovna\"\nmsgstr \"Stara Lubovna\"\n\n#: sk/sk_districts.py:71\nmsgid \"Stropkov\"\nmsgstr \"Stropkov\"\n\n#: sk/sk_districts.py:72\nmsgid \"Svidnik\"\nmsgstr \"Svidnik\"\n\n#: sk/sk_districts.py:73\nmsgid \"Sala\"\nmsgstr \"Sala\"\n\n#: sk/sk_districts.py:74\nmsgid \"Topolcany\"\nmsgstr \"Topolcany\"\n\n#: sk/sk_districts.py:75\nmsgid \"Trebisov\"\nmsgstr \"Trebisov\"\n\n#: sk/sk_districts.py:76\nmsgid \"Trencin\"\nmsgstr \"Trencin\"\n\n#: sk/sk_districts.py:77\nmsgid \"Trnava\"\nmsgstr \"Trnava\"\n\n#: sk/sk_districts.py:78\nmsgid \"Turcianske Teplice\"\nmsgstr \"Turcianske Teplice\"\n\n#: sk/sk_districts.py:79\nmsgid \"Tvrdosin\"\nmsgstr \"Tvrdosin\"\n\n#: sk/sk_districts.py:80\nmsgid \"Velky Krtis\"\nmsgstr \"Velky Krtis\"\n\n#: sk/sk_districts.py:81\nmsgid \"Vranov nad Toplou\"\nmsgstr \"Vranov nad Toplou\"\n\n#: sk/sk_districts.py:82\nmsgid \"Zlate Moravce\"\nmsgstr \"Zlate Moravce\"\n\n#: sk/sk_districts.py:83\nmsgid \"Zvolen\"\nmsgstr \"Zvolen\"\n\n#: sk/sk_districts.py:84\nmsgid \"Zarnovica\"\nmsgstr \"Zarnovica\"\n\n#: sk/sk_districts.py:85\nmsgid \"Ziar nad Hronom\"\nmsgstr \"Ziar nad Hronom\"\n\n#: sk/sk_districts.py:86\nmsgid \"Zilina\"\nmsgstr \"Zilina\"\n\n#: sk/sk_regions.py:8\nmsgid \"Banska Bystrica region\"\nmsgstr \"Banska Bystrica regionas\"\n\n#: sk/sk_regions.py:9\nmsgid \"Bratislava region\"\nmsgstr \"Bratislavos regionas\"\n\n#: sk/sk_regions.py:10\nmsgid \"Kosice region\"\nmsgstr \"Kosice regionas\"\n\n#: sk/sk_regions.py:11\nmsgid \"Nitra region\"\nmsgstr \"Nitra regionas\"\n\n#: sk/sk_regions.py:12\nmsgid \"Presov region\"\nmsgstr \"Presov regionas\"\n\n#: sk/sk_regions.py:13\nmsgid \"Trencin region\"\nmsgstr \"Trencin regionas\"\n\n#: sk/sk_regions.py:14\nmsgid \"Trnava region\"\nmsgstr \"Trnava regionas\"\n\n#: sk/sk_regions.py:15\nmsgid \"Zilina region\"\nmsgstr \"Zilina regionas\"\n\n#: tr/forms.py:21\nmsgid \"Enter a postal code in the format XXXXX.\"\nmsgstr \"Įveskite pašto kodą XXXXX formatu.\"\n\n#: tr/forms.py:42\nmsgid \"Phone numbers must be in 0XXX XXX XXXX format.\"\nmsgstr \"Telefono numeriai turi būti 0XXX XXX XXXX formatu.\"\n\n#: tr/forms.py:69\nmsgid \"Enter a valid Turkish Identification number.\"\nmsgstr \"Įveskite teisingą Turkijos identifikacinį numerį.\"\n\n#: tr/forms.py:70\nmsgid \"Turkish Identification number must be 11 digits.\"\nmsgstr \"Turkijos identifikacinis numeris turi sudaryti 11 skaičių\"\n\n#: us/forms.py:21\nmsgid \"Enter a zip code in the format XXXXX or XXXXX-XXXX.\"\nmsgstr \"Įveskite pašto kodą XXXXX arba XXXXX-XXXX formatu.\"\n\n#: us/forms.py:59\nmsgid \"Enter a valid U.S. Social Security number in XXX-XX-XXXX format.\"\nmsgstr \"Įveskite tinkamą JAV socialinio draudimo numerį.\"\n\n#: us/forms.py:92\nmsgid \"Enter a U.S. state or territory.\"\nmsgstr \"Įveskite JAV valstiją ar teritoriją.\"\n\n#: us/models.py:8\nmsgid \"U.S. state (two uppercase letters)\"\nmsgstr \"JAV valstija (dvi didžiosios raidės)\"\n\n#: us/models.py:17\nmsgid \"U.S. postal code (two uppercase letters)\"\nmsgstr \"JAV pašto kodas (dvi didžiosiosios raidės)\"\n\n#: us/models.py:26\nmsgid \"Phone number\"\nmsgstr \"Telefono numeris\"\n\n#: uy/forms.py:29\nmsgid \"Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.\"\nmsgstr \"Įveskite teisingą CI numerį X.XXX.XXX-X,XXXXXXX-X ar XXXXXXXX formatu.\"\n\n#: uy/forms.py:31\nmsgid \"Enter a valid CI number.\"\nmsgstr \"Įveskite teisingą CI numerį.\"\n\n#: za/forms.py:22\nmsgid \"Enter a valid South African ID number\"\nmsgstr \"Įveskite teisingą Pietų Afrikos identifikavimo numerį.\"\n\n#: za/forms.py:56\nmsgid \"Enter a valid South African postal code\"\nmsgstr \"Įveskite teisingą Pietų Afrikos pašto kodą.\"\n\n#: za/za_provinces.py:4\nmsgid \"Eastern Cape\"\nmsgstr \"Rytinis Keiptaunas\"\n\n#: za/za_provinces.py:5\nmsgid \"Free State\"\nmsgstr \"Free State\"\n\n#: za/za_provinces.py:6\nmsgid \"Gauteng\"\nmsgstr \"Gauteng\"\n\n#: za/za_provinces.py:7\nmsgid \"KwaZulu-Natal\"\nmsgstr \"KwaZulu-Natal\"\n\n#: za/za_provinces.py:8\nmsgid \"Limpopo\"\nmsgstr \"Limpopo\"\n\n#: za/za_provinces.py:9\nmsgid \"Mpumalanga\"\nmsgstr \"Mpumalanga\"\n\n#: za/za_provinces.py:10\nmsgid \"Northern Cape\"\nmsgstr \"Šiaurinis Keiptaunas\"\n\n#: za/za_provinces.py:11\nmsgid \"North West\"\nmsgstr \"North West\"\n\n#: za/za_provinces.py:12\nmsgid \"Western Cape\"\nmsgstr \"Vakarinis Keiptaunas\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/locale/lv/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-10-17 09:16+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Latvian (http://www.transifex.com/projects/p/django/language/\"\n\"lv/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: lv\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : \"\n\"2);\\n\"\n\n#: ar/forms.py:30\nmsgid \"Enter a postal code in the format NNNN or ANNNNAAA.\"\nmsgstr \"Ievadiet pasta indeksu NNNN vai ANNNNAAA formātā.\"\n\n#: ar/forms.py:52 br/forms.py:95 br/forms.py:134 pe/forms.py:27 pe/forms.py:55\nmsgid \"This field requires only numbers.\"\nmsgstr \"Šis lauks drīkst saturēt tikai ciparus.\"\n\n#: ar/forms.py:53\nmsgid \"This field requires 7 or 8 digits.\"\nmsgstr \"Šim laukam jasastāv no 7 vai 8 cipariem.\"\n\n#: ar/forms.py:82\nmsgid \"Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.\"\nmsgstr \"Ievadiet korektu CUIT XX-XXXXXXXX-X vai XXXXXXXXXXXX formātos.\"\n\n#: ar/forms.py:83\nmsgid \"Invalid CUIT.\"\nmsgstr \"Nekorekts CUIT.\"\n\n#: ar/forms.py:84\nmsgid \"Invalid legal type. Type must be 27, 20, 23 or 30.\"\nmsgstr \"\"\n\n#: at/at_states.py:5\nmsgid \"Burgenland\"\nmsgstr \"Burgenlande\"\n\n#: at/at_states.py:6\nmsgid \"Carinthia\"\nmsgstr \"Karintija\"\n\n#: at/at_states.py:7\nmsgid \"Lower Austria\"\nmsgstr \"\"\n\n#: at/at_states.py:8\nmsgid \"Upper Austria\"\nmsgstr \"\"\n\n#: at/at_states.py:9\nmsgid \"Salzburg\"\nmsgstr \"Zalcburga\"\n\n#: at/at_states.py:10\nmsgid \"Styria\"\nmsgstr \"Stīrija\"\n\n#: at/at_states.py:11\nmsgid \"Tyrol\"\nmsgstr \"Tirole\"\n\n#: at/at_states.py:12\nmsgid \"Vorarlberg\"\nmsgstr \"\"\n\n#: at/at_states.py:13\nmsgid \"Vienna\"\nmsgstr \"Vīne\"\n\n#: at/forms.py:22 ch/forms.py:22 no/forms.py:19\nmsgid \"Enter a zip code in the format XXXX.\"\nmsgstr \"Ievadiet pasta indeksu formātā XXXX.\"\n\n#: at/forms.py:50\nmsgid \"Enter a valid Austrian Social Security Number in XXXX XXXXXX format.\"\nmsgstr \"\"\n\"Ievadiet korektu Austrijas sociālās drošības numuru XXXX XXXXXX formātā.\"\n\n#: au/forms.py:26\nmsgid \"Enter a 4 digit postcode.\"\nmsgstr \"\"\n\n#: au/models.py:9\nmsgid \"Australian State\"\nmsgstr \"\"\n\n#: au/models.py:19\nmsgid \"Australian Postcode\"\nmsgstr \"\"\n\n#: au/models.py:33\nmsgid \"Australian Phone number\"\nmsgstr \"\"\n\n#: be/be_provinces.py:5\nmsgid \"Antwerp\"\nmsgstr \"\"\n\n#: be/be_provinces.py:6\nmsgid \"Brussels\"\nmsgstr \"\"\n\n#: be/be_provinces.py:7\nmsgid \"East Flanders\"\nmsgstr \"\"\n\n#: be/be_provinces.py:8\nmsgid \"Flemish Brabant\"\nmsgstr \"\"\n\n#: be/be_provinces.py:9\nmsgid \"Hainaut\"\nmsgstr \"\"\n\n#: be/be_provinces.py:10\nmsgid \"Liege\"\nmsgstr \"\"\n\n#: be/be_provinces.py:11 nl/nl_provinces.py:9\nmsgid \"Limburg\"\nmsgstr \"Limburga\"\n\n#: be/be_provinces.py:12\nmsgid \"Luxembourg\"\nmsgstr \"\"\n\n#: be/be_provinces.py:13\nmsgid \"Namur\"\nmsgstr \"\"\n\n#: be/be_provinces.py:14\nmsgid \"Walloon Brabant\"\nmsgstr \"\"\n\n#: be/be_provinces.py:15\nmsgid \"West Flanders\"\nmsgstr \"\"\n\n#: be/be_regions.py:5\nmsgid \"Brussels Capital Region\"\nmsgstr \"\"\n\n#: be/be_regions.py:6\nmsgid \"Flemish Region\"\nmsgstr \"\"\n\n#: be/be_regions.py:7\nmsgid \"Wallonia\"\nmsgstr \"\"\n\n#: be/forms.py:25\nmsgid \"Enter a valid postal code in the range and format 1XXX - 9XXX.\"\nmsgstr \"\"\n\n#: be/forms.py:48\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\nmsgstr \"\"\n\n#: br/forms.py:22\nmsgid \"Enter a zip code in the format XXXXX-XXX.\"\nmsgstr \"Ievadiet pasta indeksu XXXXX-XXX formātā.\"\n\n#: br/forms.py:31\nmsgid \"Phone numbers must be in XX-XXXX-XXXX format.\"\nmsgstr \"Tālruņa numuriem jābūt XXX-XXXX-XXXX formātā.\"\n\n#: br/forms.py:58\nmsgid \"\"\n\"Select a valid brazilian state. That state is not one of the available \"\n\"states.\"\nmsgstr \"\"\n\"Izvēlēties derīgu Brazīlijas pavalsti. Šī pavalsts nav no pieejamajām \"\n\"pavalstīm.\"\n\n#: br/forms.py:93\nmsgid \"Invalid CPF number.\"\nmsgstr \"Nekorekts CPF numurs\"\n\n#: br/forms.py:94\nmsgid \"This field requires at most 11 digits or 14 characters.\"\nmsgstr \"Šī lauka vērtībai jābūt ne vairāk kā 11 cipariem vai 14 simboliem.\"\n\n#: br/forms.py:133\nmsgid \"Invalid CNPJ number.\"\nmsgstr \"Nekorekts CNPJ numurs\"\n\n#: br/forms.py:135\nmsgid \"This field requires at least 14 digits\"\nmsgstr \"Šim laukam jasastāv ne vairāk kā no 14 cipariem.\"\n\n#: ca/forms.py:29\nmsgid \"Enter a postal code in the format XXX XXX.\"\nmsgstr \"Ievadiet pasta indeksu formātā XXX XXX.\"\n\n#: ca/forms.py:47 us/forms.py:30\nmsgid \"Phone numbers must be in XXX-XXX-XXXX format.\"\nmsgstr \"Telefona numuriem jābūt XXX-XXXX-XXXX formātā.\"\n\n#: ca/forms.py:69\nmsgid \"Enter a Canadian province or territory.\"\nmsgstr \"\"\n\n#: ca/forms.py:110\nmsgid \"Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.\"\nmsgstr \"\"\n\"Ievadiet korektu Kanādas sociālās apdrošināšanas numuru XXX-XXX-XXX formātā.\"\n\n#: ch/ch_states.py:5\nmsgid \"Aargau\"\nmsgstr \"\"\n\n#: ch/ch_states.py:6\nmsgid \"Appenzell Innerrhoden\"\nmsgstr \"\"\n\n#: ch/ch_states.py:7\nmsgid \"Appenzell Ausserrhoden\"\nmsgstr \"\"\n\n#: ch/ch_states.py:8\nmsgid \"Basel-Stadt\"\nmsgstr \"\"\n\n#: ch/ch_states.py:9\nmsgid \"Basel-Land\"\nmsgstr \"\"\n\n#: ch/ch_states.py:10\nmsgid \"Berne\"\nmsgstr \"Berne\"\n\n#: ch/ch_states.py:11\nmsgid \"Fribourg\"\nmsgstr \"\"\n\n#: ch/ch_states.py:12\nmsgid \"Geneva\"\nmsgstr \"Ženēva\"\n\n#: ch/ch_states.py:13\nmsgid \"Glarus\"\nmsgstr \"Glarusa\"\n\n#: ch/ch_states.py:14\nmsgid \"Graubuenden\"\nmsgstr \"\"\n\n#: ch/ch_states.py:15\nmsgid \"Jura\"\nmsgstr \"\"\n\n#: ch/ch_states.py:16\nmsgid \"Lucerne\"\nmsgstr \"Lucerne\"\n\n#: ch/ch_states.py:17\nmsgid \"Neuchatel\"\nmsgstr \"\"\n\n#: ch/ch_states.py:18\nmsgid \"Nidwalden\"\nmsgstr \"\"\n\n#: ch/ch_states.py:19\nmsgid \"Obwalden\"\nmsgstr \"\"\n\n#: ch/ch_states.py:20\nmsgid \"Schaffhausen\"\nmsgstr \"\"\n\n#: ch/ch_states.py:21\nmsgid \"Schwyz\"\nmsgstr \"\"\n\n#: ch/ch_states.py:22\nmsgid \"Solothurn\"\nmsgstr \"\"\n\n#: ch/ch_states.py:23\nmsgid \"St. Gallen\"\nmsgstr \"\"\n\n#: ch/ch_states.py:24\nmsgid \"Thurgau\"\nmsgstr \"Thurgau\"\n\n#: ch/ch_states.py:25\nmsgid \"Ticino\"\nmsgstr \"Ticino\"\n\n#: ch/ch_states.py:26\nmsgid \"Uri\"\nmsgstr \"\"\n\n#: ch/ch_states.py:27\nmsgid \"Valais\"\nmsgstr \"Valē\"\n\n#: ch/ch_states.py:28\nmsgid \"Vaud\"\nmsgstr \"\"\n\n#: ch/ch_states.py:29\nmsgid \"Zug\"\nmsgstr \"Zug\"\n\n#: ch/ch_states.py:30\nmsgid \"Zurich\"\nmsgstr \"Cīrige\"\n\n#: ch/forms.py:37\nmsgid \"Phone numbers must be in 0XX XXX XX XX format.\"\nmsgstr \"\"\n\n#: ch/forms.py:68\nmsgid \"\"\n\"Enter a valid Swiss identity or passport card number in X1234567<0 or \"\n\"1234567890 format.\"\nmsgstr \"\"\n\"Lūdzu ievadiet korektu šveiciešu identifikācijas vai pases nummuru \"\n\"X1234567<0 vai 1234567890 formātā.\"\n\n#: cl/forms.py:32\nmsgid \"Enter a valid Chilean RUT.\"\nmsgstr \"Ievadiet korektu čīliešu RUT\"\n\n#: cl/forms.py:33\nmsgid \"Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.\"\nmsgstr \"Ievadiet korektu čīliešu RUT XX.XXX.XXX-X formātā.\"\n\n#: cl/forms.py:34\nmsgid \"The Chilean RUT is not valid.\"\nmsgstr \"Čīles RUT ir nekorekts.\"\n\n#: cn/forms.py:84\nmsgid \"Enter a post code in the format XXXXXX.\"\nmsgstr \"\"\n\n#: cn/forms.py:105\nmsgid \"ID Card Number consists of 15 or 18 digits.\"\nmsgstr \"\"\n\n#: cn/forms.py:106\nmsgid \"Invalid ID Card Number: Wrong checksum\"\nmsgstr \"\"\n\n#: cn/forms.py:107\nmsgid \"Invalid ID Card Number: Wrong birthdate\"\nmsgstr \"\"\n\n#: cn/forms.py:108\nmsgid \"Invalid ID Card Number: Wrong location code\"\nmsgstr \"\"\n\n#: cn/forms.py:193\nmsgid \"Enter a valid phone number.\"\nmsgstr \"\"\n\n#: cn/forms.py:210\nmsgid \"Enter a valid cell number.\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:8\nmsgid \"Prague\"\nmsgstr \"Prāga\"\n\n#: cz/cz_regions.py:9\nmsgid \"Central Bohemian Region\"\nmsgstr \"Centrālbohēmijas reģions\"\n\n#: cz/cz_regions.py:10\nmsgid \"South Bohemian Region\"\nmsgstr \"Dienvidbohēmijas reģions\"\n\n#: cz/cz_regions.py:11\nmsgid \"Pilsen Region\"\nmsgstr \"Pilzenes reģions\"\n\n#: cz/cz_regions.py:12\nmsgid \"Carlsbad Region\"\nmsgstr \"Karslbādes reģions\"\n\n#: cz/cz_regions.py:13\nmsgid \"Usti Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:14\nmsgid \"Liberec Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:15\nmsgid \"Hradec Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:16\nmsgid \"Pardubice Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:17\nmsgid \"Vysocina Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:18\nmsgid \"South Moravian Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:19\nmsgid \"Olomouc Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:20\nmsgid \"Zlin Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:21\nmsgid \"Moravian-Silesian Region\"\nmsgstr \"\"\n\n#: cz/forms.py:32 sk/forms.py:33\nmsgid \"Enter a postal code in the format XXXXX or XXX XX.\"\nmsgstr \"Ievadiet pasta indeksu XXXXX vai XXX XX formātos.\"\n\n#: cz/forms.py:52\nmsgid \"Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.\"\nmsgstr \"Ievadiet dzimšanas numuru XXXXXX/XXXX vai XXXXXXXXXX formātā.\"\n\n#: cz/forms.py:53\nmsgid \"Enter a valid birth number.\"\nmsgstr \"Ievadiet korektu dzimšanas numuru.\"\n\n#: cz/forms.py:102\nmsgid \"Enter a valid IC number.\"\nmsgstr \"Ievadiet korektu IC numuru.\"\n\n#: de/de_states.py:5\nmsgid \"Baden-Wuerttemberg\"\nmsgstr \"Bādene-Virtemburga\"\n\n#: de/de_states.py:6\nmsgid \"Bavaria\"\nmsgstr \"Bavārija\"\n\n#: de/de_states.py:7\nmsgid \"Berlin\"\nmsgstr \"Berlīne\"\n\n#: de/de_states.py:8\nmsgid \"Brandenburg\"\nmsgstr \"Brandenburga\"\n\n#: de/de_states.py:9\nmsgid \"Bremen\"\nmsgstr \"Brēmene\"\n\n#: de/de_states.py:10\nmsgid \"Hamburg\"\nmsgstr \"Hamburga\"\n\n#: de/de_states.py:11\nmsgid \"Hessen\"\nmsgstr \"Hesene\"\n\n#: de/de_states.py:12\nmsgid \"Mecklenburg-Western Pomerania\"\nmsgstr \"Meklenburga-Rietumpomerānija\"\n\n#: de/de_states.py:13\nmsgid \"Lower Saxony\"\nmsgstr \"Lejassaksija\"\n\n#: de/de_states.py:14\nmsgid \"North Rhine-Westphalia\"\nmsgstr \"Ziemeļreina-Vestfālija\"\n\n#: de/de_states.py:15\nmsgid \"Rhineland-Palatinate\"\nmsgstr \"Reinaszeme-Pfalca\"\n\n#: de/de_states.py:16\nmsgid \"Saarland\"\nmsgstr \"\"\n\n#: de/de_states.py:17\nmsgid \"Saxony\"\nmsgstr \"Saksija\"\n\n#: de/de_states.py:18\nmsgid \"Saxony-Anhalt\"\nmsgstr \"Saksija-Anhalte\"\n\n#: de/de_states.py:19\nmsgid \"Schleswig-Holstein\"\nmsgstr \"Šlesviga-Holšteina\"\n\n#: de/de_states.py:20\nmsgid \"Thuringia\"\nmsgstr \"Tīringene\"\n\n#: de/forms.py:20 fi/forms.py:18 fr/forms.py:20\nmsgid \"Enter a zip code in the format XXXXX.\"\nmsgstr \"Ievadiet pasta indeksu formātā XXXXX.\"\n\n#: de/forms.py:46\nmsgid \"\"\n\"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"format.\"\nmsgstr \"\"\n\"Ievadiet korektu Vācijas identifikācijas kartes numuru XXXXXXXXXXX-XXXXXXX-\"\n\"XXXXXXX-X formātā.\"\n\n#: es/es_provinces.py:5\nmsgid \"Araba\"\nmsgstr \"\"\n\n#: es/es_provinces.py:6\nmsgid \"Albacete\"\nmsgstr \"\"\n\n#: es/es_provinces.py:7\nmsgid \"Alacant\"\nmsgstr \"\"\n\n#: es/es_provinces.py:8\nmsgid \"Almeria\"\nmsgstr \"Almērija\"\n\n#: es/es_provinces.py:9\nmsgid \"Avila\"\nmsgstr \"Avila\"\n\n#: es/es_provinces.py:10\nmsgid \"Badajoz\"\nmsgstr \"\"\n\n#: es/es_provinces.py:11\nmsgid \"Illes Balears\"\nmsgstr \"\"\n\n#: es/es_provinces.py:12\nmsgid \"Barcelona\"\nmsgstr \"Barselona\"\n\n#: es/es_provinces.py:13\nmsgid \"Burgos\"\nmsgstr \"\"\n\n#: es/es_provinces.py:14\nmsgid \"Caceres\"\nmsgstr \"\"\n\n#: es/es_provinces.py:15\nmsgid \"Cadiz\"\nmsgstr \"Kadisa\"\n\n#: es/es_provinces.py:16\nmsgid \"Castello\"\nmsgstr \"\"\n\n#: es/es_provinces.py:17\nmsgid \"Ciudad Real\"\nmsgstr \"\"\n\n#: es/es_provinces.py:18\nmsgid \"Cordoba\"\nmsgstr \"Kordova\"\n\n#: es/es_provinces.py:19\nmsgid \"A Coruna\"\nmsgstr \"\"\n\n#: es/es_provinces.py:20\nmsgid \"Cuenca\"\nmsgstr \"\"\n\n#: es/es_provinces.py:21\nmsgid \"Girona\"\nmsgstr \"Hirona\"\n\n#: es/es_provinces.py:22\nmsgid \"Granada\"\nmsgstr \"Granāda\"\n\n#: es/es_provinces.py:23\nmsgid \"Guadalajara\"\nmsgstr \"Gvadalahara\"\n\n#: es/es_provinces.py:24\nmsgid \"Guipuzkoa\"\nmsgstr \"\"\n\n#: es/es_provinces.py:25\nmsgid \"Huelva\"\nmsgstr \"\"\n\n#: es/es_provinces.py:26\nmsgid \"Huesca\"\nmsgstr \"\"\n\n#: es/es_provinces.py:27\nmsgid \"Jaen\"\nmsgstr \"\"\n\n#: es/es_provinces.py:28\nmsgid \"Leon\"\nmsgstr \"Leona\"\n\n#: es/es_provinces.py:29\nmsgid \"Lleida\"\nmsgstr \"\"\n\n#: es/es_provinces.py:30 es/es_regions.py:17\nmsgid \"La Rioja\"\nmsgstr \"\"\n\n#: es/es_provinces.py:31\nmsgid \"Lugo\"\nmsgstr \"\"\n\n#: es/es_provinces.py:32 es/es_regions.py:18\nmsgid \"Madrid\"\nmsgstr \"Madride\"\n\n#: es/es_provinces.py:33\nmsgid \"Malaga\"\nmsgstr \"Malaga\"\n\n#: es/es_provinces.py:34\nmsgid \"Murcia\"\nmsgstr \"Mursija\"\n\n#: es/es_provinces.py:35\nmsgid \"Navarre\"\nmsgstr \"Navarra\"\n\n#: es/es_provinces.py:36\nmsgid \"Ourense\"\nmsgstr \"Orense\"\n\n#: es/es_provinces.py:37\nmsgid \"Asturias\"\nmsgstr \"Astūrija\"\n\n#: es/es_provinces.py:38\nmsgid \"Palencia\"\nmsgstr \"Palensija\"\n\n#: es/es_provinces.py:39\nmsgid \"Las Palmas\"\nmsgstr \"Laspalmasa\"\n\n#: es/es_provinces.py:40\nmsgid \"Pontevedra\"\nmsgstr \"Pontevedra\"\n\n#: es/es_provinces.py:41\nmsgid \"Salamanca\"\nmsgstr \"Salamanka\"\n\n#: es/es_provinces.py:42\nmsgid \"Santa Cruz de Tenerife\"\nmsgstr \"Tenerifes Santa Kruza\"\n\n#: es/es_provinces.py:43 es/es_regions.py:11\nmsgid \"Cantabria\"\nmsgstr \"Kantabrija\"\n\n#: es/es_provinces.py:44\nmsgid \"Segovia\"\nmsgstr \"Segovija\"\n\n#: es/es_provinces.py:45\nmsgid \"Seville\"\nmsgstr \"Seviļa\"\n\n#: es/es_provinces.py:46\nmsgid \"Soria\"\nmsgstr \"Sorija\"\n\n#: es/es_provinces.py:47\nmsgid \"Tarragona\"\nmsgstr \"Taragona\"\n\n#: es/es_provinces.py:48\nmsgid \"Teruel\"\nmsgstr \"\"\n\n#: es/es_provinces.py:49\nmsgid \"Toledo\"\nmsgstr \"Toledo\"\n\n#: es/es_provinces.py:50\nmsgid \"Valencia\"\nmsgstr \"Valensija\"\n\n#: es/es_provinces.py:51\nmsgid \"Valladolid\"\nmsgstr \"Valadolida\"\n\n#: es/es_provinces.py:52\nmsgid \"Bizkaia\"\nmsgstr \"Biskaja\"\n\n#: es/es_provinces.py:53\nmsgid \"Zamora\"\nmsgstr \"\"\n\n#: es/es_provinces.py:54\nmsgid \"Zaragoza\"\nmsgstr \"Saragosa\"\n\n#: es/es_provinces.py:55\nmsgid \"Ceuta\"\nmsgstr \"\"\n\n#: es/es_provinces.py:56\nmsgid \"Melilla\"\nmsgstr \"\"\n\n#: es/es_regions.py:5\nmsgid \"Andalusia\"\nmsgstr \"Andalūzija\"\n\n#: es/es_regions.py:6\nmsgid \"Aragon\"\nmsgstr \"Aragona\"\n\n#: es/es_regions.py:7\nmsgid \"Principality of Asturias\"\nmsgstr \"Astūrijas novads\"\n\n#: es/es_regions.py:8\nmsgid \"Balearic Islands\"\nmsgstr \"Baleāru salas\"\n\n#: es/es_regions.py:9\nmsgid \"Basque Country\"\nmsgstr \"Basku zeme\"\n\n#: es/es_regions.py:10\nmsgid \"Canary Islands\"\nmsgstr \"Kanāriju salas\"\n\n#: es/es_regions.py:12\nmsgid \"Castile-La Mancha\"\nmsgstr \"Kastīlija La Manša\"\n\n#: es/es_regions.py:13\nmsgid \"Castile and Leon\"\nmsgstr \"Kastīlija Leona\"\n\n#: es/es_regions.py:14\nmsgid \"Catalonia\"\nmsgstr \"Katalonija\"\n\n#: es/es_regions.py:15\nmsgid \"Extremadura\"\nmsgstr \"Ekstremadūra\"\n\n#: es/es_regions.py:16\nmsgid \"Galicia\"\nmsgstr \"Galīcija\"\n\n#: es/es_regions.py:19\nmsgid \"Region of Murcia\"\nmsgstr \"Mursijas reģions\"\n\n#: es/es_regions.py:20\nmsgid \"Foral Community of Navarre\"\nmsgstr \"\"\n\n#: es/es_regions.py:21\nmsgid \"Valencian Community\"\nmsgstr \"\"\n\n#: es/forms.py:26\nmsgid \"Enter a valid postal code in the range and format 01XXX - 52XXX.\"\nmsgstr \"\"\n\"Ievadiet korektu pasta indeksu sekojošajā formātā un robežās 01XXX - 52XXX\"\n\n#: es/forms.py:46\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or \"\n\"9XXXXXXXX.\"\nmsgstr \"\"\n\"Ievadiet korektu tālruņa numuru vienā no sekojošajiem formātiem 6XXXXXXXX, \"\n\"8XXXXXXXX vai 9XXXXXXXX.\"\n\n#: es/forms.py:73\nmsgid \"Please enter a valid NIF, NIE, or CIF.\"\nmsgstr \"Ievadiet korektu NIF, NIE vai CIF.\"\n\n#: es/forms.py:74\nmsgid \"Please enter a valid NIF or NIE.\"\nmsgstr \"Lūdzu ievadiet korektu NIF vai NIE.\"\n\n#: es/forms.py:75\nmsgid \"Invalid checksum for NIF.\"\nmsgstr \"Nekorekta NIF kontrolsumma.\"\n\n#: es/forms.py:76\nmsgid \"Invalid checksum for NIE.\"\nmsgstr \"Nekorekta NIE kontrolsumma.\"\n\n#: es/forms.py:77\nmsgid \"Invalid checksum for CIF.\"\nmsgstr \"Nekorekta CIF kontrolsumma.\"\n\n#: es/forms.py:149\nmsgid \"\"\n\"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.\"\nmsgstr \"Ievadiet korektu bankas konta numuru formātā XXXX-XXXX-XX-XXXXXXXXXX.\"\n\n#: es/forms.py:150\nmsgid \"Invalid checksum for bank account number.\"\nmsgstr \"Nekorekta bankas konta numura kontrolsumma.\"\n\n#: fi/forms.py:33\nmsgid \"Enter a valid Finnish social security number.\"\nmsgstr \"Ievadiet korektu Somijas sociālās drošības nummuru.\"\n\n#: fr/forms.py:35\nmsgid \"Phone numbers must be in 0X XX XX XX XX format.\"\nmsgstr \"Telefona numuriem jābūt  0X XX XX XX XX formātā.\"\n\n#: gb/forms.py:25\nmsgid \"Enter a valid postcode.\"\nmsgstr \"Ievadiet korektu pasta indeksu.\"\n\n#: gb/gb_regions.py:11\nmsgid \"Bedfordshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:12\nmsgid \"Buckinghamshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:14\nmsgid \"Cheshire\"\nmsgstr \"Češīra\"\n\n#: gb/gb_regions.py:15\nmsgid \"Cornwall and Isles of Scilly\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:16\nmsgid \"Cumbria\"\nmsgstr \"Kumbrija\"\n\n#: gb/gb_regions.py:17\nmsgid \"Derbyshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:18\nmsgid \"Devon\"\nmsgstr \"Devona\"\n\n#: gb/gb_regions.py:19\nmsgid \"Dorset\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:20\nmsgid \"Durham\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:21\nmsgid \"East Sussex\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:22\nmsgid \"Essex\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:23\nmsgid \"Gloucestershire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:24\nmsgid \"Greater London\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:25\nmsgid \"Greater Manchester\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:26\nmsgid \"Hampshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:27\nmsgid \"Hertfordshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:28\nmsgid \"Kent\"\nmsgstr \"Kenta\"\n\n#: gb/gb_regions.py:29\nmsgid \"Lancashire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:30\nmsgid \"Leicestershire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:31\nmsgid \"Lincolnshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:32\nmsgid \"Merseyside\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:33\nmsgid \"Norfolk\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:34\nmsgid \"North Yorkshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:35\nmsgid \"Northamptonshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:36\nmsgid \"Northumberland\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:37\nmsgid \"Nottinghamshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:38\nmsgid \"Oxfordshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:39\nmsgid \"Shropshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:40\nmsgid \"Somerset\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:41\nmsgid \"South Yorkshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:42\nmsgid \"Staffordshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:43\nmsgid \"Suffolk\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:44\nmsgid \"Surrey\"\nmsgstr \"Surreja\"\n\n#: gb/gb_regions.py:45\nmsgid \"Tyne and Wear\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:46\nmsgid \"Warwickshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:47\nmsgid \"West Midlands\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:48\nmsgid \"West Sussex\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:49\nmsgid \"West Yorkshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:50\nmsgid \"Wiltshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:51\nmsgid \"Worcestershire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:55\nmsgid \"County Antrim\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:56\nmsgid \"County Armagh\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:57\nmsgid \"County Down\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:58\nmsgid \"County Fermanagh\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:59\nmsgid \"County Londonderry\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:60\nmsgid \"County Tyrone\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:64\nmsgid \"Clwyd\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:65\nmsgid \"Dyfed\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:66\nmsgid \"Gwent\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:67\nmsgid \"Gwynedd\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:68\nmsgid \"Mid Glamorgan\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:69\nmsgid \"Powys\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:70\nmsgid \"South Glamorgan\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:71\nmsgid \"West Glamorgan\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:75\nmsgid \"Borders\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:76\nmsgid \"Central Scotland\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:77\nmsgid \"Dumfries and Galloway\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:78\nmsgid \"Fife\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:79\nmsgid \"Grampian\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:80\nmsgid \"Highland\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:81\nmsgid \"Lothian\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:82\nmsgid \"Orkney Islands\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:83\nmsgid \"Shetland Islands\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:84\nmsgid \"Strathclyde\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:85\nmsgid \"Tayside\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:86\nmsgid \"Western Isles\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:90\nmsgid \"England\"\nmsgstr \"Anglija\"\n\n#: gb/gb_regions.py:91\nmsgid \"Northern Ireland\"\nmsgstr \"Ziemeļīrija\"\n\n#: gb/gb_regions.py:92\nmsgid \"Scotland\"\nmsgstr \"Skotija\"\n\n#: gb/gb_regions.py:93\nmsgid \"Wales\"\nmsgstr \"Velsa\"\n\n#: hk/forms.py:37\n#, python-format\nmsgid \"Phone number should not start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:40\n#, python-format\nmsgid \"Phone number must be in one of the following formats: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:42\n#, python-format\nmsgid \"Phone number should start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hr/forms.py:76\nmsgid \"Enter a valid 13 digit JMBG\"\nmsgstr \"\"\n\n#: hr/forms.py:77\nmsgid \"Error in date segment\"\nmsgstr \"\"\n\n#: hr/forms.py:123\nmsgid \"Enter a valid 11 digit OIB\"\nmsgstr \"\"\n\n#: hr/forms.py:152 id/forms.py:112\nmsgid \"Enter a valid vehicle license plate number\"\nmsgstr \"Ievadiet korektu transportlīdzekļa numuru.\"\n\n#: hr/forms.py:153\nmsgid \"Enter a valid location code\"\nmsgstr \"\"\n\n#: hr/forms.py:154\nmsgid \"Number part cannot be zero\"\nmsgstr \"\"\n\n#: hr/forms.py:190\nmsgid \"Enter a valid 5 digit postal code\"\nmsgstr \"\"\n\n#: hr/forms.py:218 id/forms.py:72 nl/forms.py:56\nmsgid \"Enter a valid phone number\"\nmsgstr \"Ievadiet korektu tālruņa numuru.\"\n\n#: hr/forms.py:219\nmsgid \"Enter a valid area or mobile network code\"\nmsgstr \"\"\n\n#: hr/forms.py:220\nmsgid \"The phone nubmer is too long\"\nmsgstr \"\"\n\n#: hr/forms.py:258\nmsgid \"Enter a valid 19 digit JMBAG starting with 601983\"\nmsgstr \"\"\n\n#: hr/forms.py:259\nmsgid \"Card issue number cannot be zero\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:14\nmsgid \"Grad Zagreb\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:15\nmsgid \"Bjelovarsko-bilogorska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:16\nmsgid \"Brodsko-posavska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:17\nmsgid \"Dubrovačko-neretvanska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:18\nmsgid \"Istarska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:19\nmsgid \"Karlovačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:20\nmsgid \"Koprivničko-križevačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:21\nmsgid \"Krapinsko-zagorska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:22\nmsgid \"Ličko-senjska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:23\nmsgid \"Međimurska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:24\nmsgid \"Osječko-baranjska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:25\nmsgid \"Požeško-slavonska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:26\nmsgid \"Primorsko-goranska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:27\nmsgid \"Sisačko-moslavačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:28\nmsgid \"Splitsko-dalmatinska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:29\nmsgid \"Šibensko-kninska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:30\nmsgid \"Varaždinska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:31\nmsgid \"Virovitičko-podravska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:32\nmsgid \"Vukovarsko-srijemska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:33\nmsgid \"Zadarska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:34\nmsgid \"Zagrebačka županija\"\nmsgstr \"\"\n\n#: id/forms.py:31\nmsgid \"Enter a valid post code\"\nmsgstr \"Ievadiet korektu pasta indeksu.\"\n\n#: id/forms.py:176\nmsgid \"Enter a valid NIK/KTP number\"\nmsgstr \"Ievadiet korektu NIK/KTP  numuru.\"\n\n#: id/id_choices.py:15\nmsgid \"Aceh\"\nmsgstr \"\"\n\n#: id/id_choices.py:16 id/id_choices.py:79\nmsgid \"Bali\"\nmsgstr \"Bali\"\n\n#: id/id_choices.py:17 id/id_choices.py:51\nmsgid \"Banten\"\nmsgstr \"\"\n\n#: id/id_choices.py:18 id/id_choices.py:60\nmsgid \"Bengkulu\"\nmsgstr \"\"\n\n#: id/id_choices.py:19 id/id_choices.py:53\nmsgid \"Yogyakarta\"\nmsgstr \"Jogiakarta\"\n\n#: id/id_choices.py:20 id/id_choices.py:57\nmsgid \"Jakarta\"\nmsgstr \"Džakarta\"\n\n#: id/id_choices.py:21 id/id_choices.py:81\nmsgid \"Gorontalo\"\nmsgstr \"\"\n\n#: id/id_choices.py:22 id/id_choices.py:63\nmsgid \"Jambi\"\nmsgstr \"\"\n\n#: id/id_choices.py:23\nmsgid \"Jawa Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:24\nmsgid \"Jawa Tengah\"\nmsgstr \"\"\n\n#: id/id_choices.py:25\nmsgid \"Jawa Timur\"\nmsgstr \"\"\n\n#: id/id_choices.py:26 id/id_choices.py:94\nmsgid \"Kalimantan Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:27 id/id_choices.py:72\nmsgid \"Kalimantan Selatan\"\nmsgstr \"\"\n\n#: id/id_choices.py:28 id/id_choices.py:95\nmsgid \"Kalimantan Tengah\"\nmsgstr \"\"\n\n#: id/id_choices.py:29 id/id_choices.py:96\nmsgid \"Kalimantan Timur\"\nmsgstr \"\"\n\n#: id/id_choices.py:30\nmsgid \"Kepulauan Bangka-Belitung\"\nmsgstr \"\"\n\n#: id/id_choices.py:31 id/id_choices.py:68\nmsgid \"Kepulauan Riau\"\nmsgstr \"\"\n\n#: id/id_choices.py:32 id/id_choices.py:61\nmsgid \"Lampung\"\nmsgstr \"\"\n\n#: id/id_choices.py:33 id/id_choices.py:76\nmsgid \"Maluku\"\nmsgstr \"\"\n\n#: id/id_choices.py:34 id/id_choices.py:77\nmsgid \"Maluku Utara\"\nmsgstr \"\"\n\n#: id/id_choices.py:35\nmsgid \"Nusa Tenggara Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:36\nmsgid \"Nusa Tenggara Timur\"\nmsgstr \"\"\n\n#: id/id_choices.py:37\nmsgid \"Papua\"\nmsgstr \"\"\n\n#: id/id_choices.py:38\nmsgid \"Papua Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:39 id/id_choices.py:66\nmsgid \"Riau\"\nmsgstr \"\"\n\n#: id/id_choices.py:40 id/id_choices.py:74\nmsgid \"Sulawesi Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:41 id/id_choices.py:75\nmsgid \"Sulawesi Selatan\"\nmsgstr \"\"\n\n#: id/id_choices.py:42 id/id_choices.py:82\nmsgid \"Sulawesi Tengah\"\nmsgstr \"\"\n\n#: id/id_choices.py:43 id/id_choices.py:85\nmsgid \"Sulawesi Tenggara\"\nmsgstr \"\"\n\n#: id/id_choices.py:44\nmsgid \"Sulawesi Utara\"\nmsgstr \"\"\n\n#: id/id_choices.py:45 id/id_choices.py:58\nmsgid \"Sumatera Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:46 id/id_choices.py:62\nmsgid \"Sumatera Selatan\"\nmsgstr \"\"\n\n#: id/id_choices.py:47 id/id_choices.py:64\nmsgid \"Sumatera Utara\"\nmsgstr \"\"\n\n#: id/id_choices.py:52\nmsgid \"Magelang\"\nmsgstr \"\"\n\n#: id/id_choices.py:54\nmsgid \"Surakarta - Solo\"\nmsgstr \"\"\n\n#: id/id_choices.py:55\nmsgid \"Madiun\"\nmsgstr \"\"\n\n#: id/id_choices.py:56\nmsgid \"Kediri\"\nmsgstr \"\"\n\n#: id/id_choices.py:59\nmsgid \"Tapanuli\"\nmsgstr \"\"\n\n#: id/id_choices.py:65\nmsgid \"Nanggroe Aceh Darussalam\"\nmsgstr \"\"\n\n#: id/id_choices.py:67\nmsgid \"Kepulauan Bangka Belitung\"\nmsgstr \"\"\n\n#: id/id_choices.py:69\nmsgid \"Corps Consulate\"\nmsgstr \"\"\n\n#: id/id_choices.py:70\nmsgid \"Corps Diplomatic\"\nmsgstr \"\"\n\n#: id/id_choices.py:71\nmsgid \"Bandung\"\nmsgstr \"\"\n\n#: id/id_choices.py:73\nmsgid \"Sulawesi Utara Daratan\"\nmsgstr \"\"\n\n#: id/id_choices.py:78\nmsgid \"NTT - Timor\"\nmsgstr \"\"\n\n#: id/id_choices.py:80\nmsgid \"Sulawesi Utara Kepulauan\"\nmsgstr \"\"\n\n#: id/id_choices.py:83\nmsgid \"NTB - Lombok\"\nmsgstr \"\"\n\n#: id/id_choices.py:84\nmsgid \"Papua dan Papua Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:86\nmsgid \"Cirebon\"\nmsgstr \"\"\n\n#: id/id_choices.py:87\nmsgid \"NTB - Sumbawa\"\nmsgstr \"\"\n\n#: id/id_choices.py:88\nmsgid \"NTT - Flores\"\nmsgstr \"\"\n\n#: id/id_choices.py:89\nmsgid \"NTT - Sumba\"\nmsgstr \"\"\n\n#: id/id_choices.py:90\nmsgid \"Bogor\"\nmsgstr \"\"\n\n#: id/id_choices.py:91\nmsgid \"Pekalongan\"\nmsgstr \"\"\n\n#: id/id_choices.py:92\nmsgid \"Semarang\"\nmsgstr \"\"\n\n#: id/id_choices.py:93\nmsgid \"Pati\"\nmsgstr \"\"\n\n#: id/id_choices.py:97\nmsgid \"Surabaya\"\nmsgstr \"\"\n\n#: id/id_choices.py:98\nmsgid \"Madura\"\nmsgstr \"\"\n\n#: id/id_choices.py:99\nmsgid \"Malang\"\nmsgstr \"\"\n\n#: id/id_choices.py:100\nmsgid \"Jember\"\nmsgstr \"\"\n\n#: id/id_choices.py:101\nmsgid \"Banyumas\"\nmsgstr \"\"\n\n#: id/id_choices.py:102\nmsgid \"Federal Government\"\nmsgstr \"\"\n\n#: id/id_choices.py:103\nmsgid \"Bojonegoro\"\nmsgstr \"\"\n\n#: id/id_choices.py:104\nmsgid \"Purwakarta\"\nmsgstr \"\"\n\n#: id/id_choices.py:105\nmsgid \"Sidoarjo\"\nmsgstr \"\"\n\n#: id/id_choices.py:106\nmsgid \"Garut\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:8\nmsgid \"Antrim\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:9\nmsgid \"Armagh\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:10\nmsgid \"Carlow\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:11\nmsgid \"Cavan\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:12\nmsgid \"Clare\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:13\nmsgid \"Cork\"\nmsgstr \"Korka\"\n\n#: ie/ie_counties.py:14\nmsgid \"Derry\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:15\nmsgid \"Donegal\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:16\nmsgid \"Down\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:17\nmsgid \"Dublin\"\nmsgstr \"Dublina\"\n\n#: ie/ie_counties.py:18\nmsgid \"Fermanagh\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:19\nmsgid \"Galway\"\nmsgstr \"Galveja\"\n\n#: ie/ie_counties.py:20\nmsgid \"Kerry\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:21\nmsgid \"Kildare\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:22\nmsgid \"Kilkenny\"\nmsgstr \"Kilkenija\"\n\n#: ie/ie_counties.py:23\nmsgid \"Laois\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:24\nmsgid \"Leitrim\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:25\nmsgid \"Limerick\"\nmsgstr \"Limerika\"\n\n#: ie/ie_counties.py:26\nmsgid \"Longford\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:27\nmsgid \"Louth\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:28\nmsgid \"Mayo\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:29\nmsgid \"Meath\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:30\nmsgid \"Monaghan\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:31\nmsgid \"Offaly\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:32\nmsgid \"Roscommon\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:33\nmsgid \"Sligo\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:34\nmsgid \"Tipperary\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:35\nmsgid \"Tyrone\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:36\nmsgid \"Waterford\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:37\nmsgid \"Westmeath\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:38\nmsgid \"Wexford\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:39\nmsgid \"Wicklow\"\nmsgstr \"\"\n\n#: il/forms.py:32\nmsgid \"Enter a postal code in the format XXXXX\"\nmsgstr \"\"\n\n#: il/forms.py:51\nmsgid \"Enter a valid ID number.\"\nmsgstr \"\"\n\n#: in_/forms.py:41\nmsgid \"Enter a zip code in the format XXXXXX or XXX XXX.\"\nmsgstr \"\"\n\n#: in_/forms.py:64\nmsgid \"Enter an Indian state or territory.\"\nmsgstr \"\"\n\n#: in_/forms.py:103\nmsgid \"Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.\"\nmsgstr \"\"\n\n#: is_/forms.py:22\nmsgid \"\"\n\"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.\"\nmsgstr \"\"\n\"Lūdzu ievadiet korektu Islandes identifikācijas nummuru XXXXXX-XXXX formātā.\"\n\n#: is_/forms.py:23\nmsgid \"The Icelandic identification number is not valid.\"\nmsgstr \"Islandes identifikācijas nummurs nav korekts.\"\n\n#: it/forms.py:21\nmsgid \"Enter a valid zip code.\"\nmsgstr \"Ievadiet korektu pasta indeksu.\"\n\n#: it/forms.py:48\nmsgid \"Enter a valid Social Security number.\"\nmsgstr \"Ievadiet korektu sociālās drošības nummuru.\"\n\n#: it/forms.py:73\nmsgid \"Enter a valid VAT number.\"\nmsgstr \"Ievadiet korektu PVN numuru.\"\n\n#: jp/forms.py:19\nmsgid \"Enter a postal code in the format XXXXXXX or XXX-XXXX.\"\nmsgstr \"Ievadiet pasta indeksu XXXXXXX vai XXX-XXXX formātos.\"\n\n#: jp/jp_prefectures.py:4\nmsgid \"Hokkaido\"\nmsgstr \"Hokaido\"\n\n#: jp/jp_prefectures.py:5\nmsgid \"Aomori\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:6\nmsgid \"Iwate\"\nmsgstr \"Ivate\"\n\n#: jp/jp_prefectures.py:7\nmsgid \"Miyagi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:8\nmsgid \"Akita\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:9\nmsgid \"Yamagata\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:10\nmsgid \"Fukushima\"\nmsgstr \"Fukušima\"\n\n#: jp/jp_prefectures.py:11\nmsgid \"Ibaraki\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:12\nmsgid \"Tochigi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:13\nmsgid \"Gunma\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:14\nmsgid \"Saitama\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:15\nmsgid \"Chiba\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:16\nmsgid \"Tokyo\"\nmsgstr \"Tokija\"\n\n#: jp/jp_prefectures.py:17\nmsgid \"Kanagawa\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:18\nmsgid \"Yamanashi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:19\nmsgid \"Nagano\"\nmsgstr \"Nagano\"\n\n#: jp/jp_prefectures.py:20\nmsgid \"Niigata\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:21\nmsgid \"Toyama\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:22\nmsgid \"Ishikawa\"\nmsgstr \"Išikava\"\n\n#: jp/jp_prefectures.py:23\nmsgid \"Fukui\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:24\nmsgid \"Gifu\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:25\nmsgid \"Shizuoka\"\nmsgstr \"Šizuka\"\n\n#: jp/jp_prefectures.py:26\nmsgid \"Aichi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:27\nmsgid \"Mie\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:28\nmsgid \"Shiga\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:29\nmsgid \"Kyoto\"\nmsgstr \"Kioto\"\n\n#: jp/jp_prefectures.py:30\nmsgid \"Osaka\"\nmsgstr \"Osaka\"\n\n#: jp/jp_prefectures.py:31\nmsgid \"Hyogo\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:32\nmsgid \"Nara\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:33\nmsgid \"Wakayama\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:34\nmsgid \"Tottori\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:35\nmsgid \"Shimane\"\nmsgstr \"Šimane\"\n\n#: jp/jp_prefectures.py:36\nmsgid \"Okayama\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:37\nmsgid \"Hiroshima\"\nmsgstr \"Hirošima\"\n\n#: jp/jp_prefectures.py:38\nmsgid \"Yamaguchi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:39\nmsgid \"Tokushima\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:40\nmsgid \"Kagawa\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:41\nmsgid \"Ehime\"\nmsgstr \"Ehime\"\n\n#: jp/jp_prefectures.py:42\nmsgid \"Kochi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:43\nmsgid \"Fukuoka\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:44\nmsgid \"Saga\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:45\nmsgid \"Nagasaki\"\nmsgstr \"Nagasaki\"\n\n#: jp/jp_prefectures.py:46\nmsgid \"Kumamoto\"\nmsgstr \"Kumamoto\"\n\n#: jp/jp_prefectures.py:47\nmsgid \"Oita\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:48\nmsgid \"Miyazaki\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:49\nmsgid \"Kagoshima\"\nmsgstr \"Kagošima\"\n\n#: jp/jp_prefectures.py:50\nmsgid \"Okinawa\"\nmsgstr \"Okinava\"\n\n#: kw/forms.py:27\nmsgid \"Enter a valid Kuwaiti Civil ID number\"\nmsgstr \"Ievadiet korektu Kuveitas pilsoņu ID numuru.\"\n\n#: mk/forms.py:18\nmsgid \"\"\n\"Identity card numbers must contain either 4 to 7 digits or an uppercase \"\n\"letter and 7 digits.\"\nmsgstr \"\"\n\n#: mk/forms.py:57 si/forms.py:24\nmsgid \"This field should contain exactly 13 digits.\"\nmsgstr \"\"\n\n#: mk/forms.py:58\nmsgid \"The first 7 digits of the UMCN must represent a valid past date.\"\nmsgstr \"\"\n\n#: mk/forms.py:59\nmsgid \"The UMCN is not valid.\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:10\nmsgid \"Aerodrom\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:11\nmsgid \"Aračinovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:12\nmsgid \"Berovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:13\nmsgid \"Bitola\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:14\nmsgid \"Bogdanci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:15\nmsgid \"Bogovinje\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:16\nmsgid \"Bosilovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:17\nmsgid \"Brvenica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:18\nmsgid \"Butel\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:19\nmsgid \"Valandovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:20\nmsgid \"Vasilevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:21\nmsgid \"Vevčani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:22\nmsgid \"Veles\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:23\nmsgid \"Vinica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:24\nmsgid \"Vraneštica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:25\nmsgid \"Vrapčište\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:26\nmsgid \"Gazi Baba\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:27\nmsgid \"Gevgelija\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:28\nmsgid \"Gostivar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:29\nmsgid \"Gradsko\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:30\nmsgid \"Debar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:31\nmsgid \"Debarca\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:32\nmsgid \"Delčevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:33\nmsgid \"Demir Kapija\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:34\nmsgid \"Demir Hisar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:35\nmsgid \"Dolneni\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:36\nmsgid \"Drugovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:37\nmsgid \"Gjorče Petrov\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:38\nmsgid \"Želino\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:39\nmsgid \"Zajas\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:40\nmsgid \"Zelenikovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:41\nmsgid \"Zrnovci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:42\nmsgid \"Ilinden\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:43\nmsgid \"Jegunovce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:44\nmsgid \"Kavadarci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:45\nmsgid \"Karbinci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:46\nmsgid \"Karpoš\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:47\nmsgid \"Kisela Voda\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:48\nmsgid \"Kičevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:49\nmsgid \"Konče\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:50\nmsgid \"Koćani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:51\nmsgid \"Kratovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:52\nmsgid \"Kriva Palanka\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:53\nmsgid \"Krivogaštani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:54\nmsgid \"Kruševo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:55\nmsgid \"Kumanovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:56\nmsgid \"Lipkovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:57\nmsgid \"Lozovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:58\nmsgid \"Mavrovo i Rostuša\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:59\nmsgid \"Makedonska Kamenica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:60\nmsgid \"Makedonski Brod\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:61\nmsgid \"Mogila\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:62\nmsgid \"Negotino\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:63\nmsgid \"Novaci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:64\nmsgid \"Novo Selo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:65\nmsgid \"Oslomej\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:66\nmsgid \"Ohrid\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:67\nmsgid \"Petrovec\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:68\nmsgid \"Pehčevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:69\nmsgid \"Plasnica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:70\nmsgid \"Prilep\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:71\nmsgid \"Probištip\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:72\nmsgid \"Radoviš\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:73\nmsgid \"Rankovce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:74\nmsgid \"Resen\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:75\nmsgid \"Rosoman\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:76\nmsgid \"Saraj\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:77\nmsgid \"Sveti Nikole\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:78\nmsgid \"Sopište\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:79\nmsgid \"Star Dojran\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:80\nmsgid \"Staro Nagoričane\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:81\nmsgid \"Struga\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:82\nmsgid \"Strumica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:83\nmsgid \"Studeničani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:84\nmsgid \"Tearce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:85\nmsgid \"Tetovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:86\nmsgid \"Centar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:87\nmsgid \"Centar-Župa\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:88\nmsgid \"Čair\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:89\nmsgid \"Čaška\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:90\nmsgid \"Češinovo-Obleševo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:91\nmsgid \"Čučer-Sandevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:92\nmsgid \"Štip\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:93\nmsgid \"Šuto Orizari\"\nmsgstr \"\"\n\n#: mk/models.py:11\nmsgid \"Macedonian identity card number\"\nmsgstr \"\"\n\n#: mk/models.py:25\nmsgid \"A Macedonian municipality (2 character code)\"\nmsgstr \"\"\n\n#: mk/models.py:35\nmsgid \"Unique master citizen number (13 digits)\"\nmsgstr \"\"\n\n#: mx/forms.py:67\nmsgid \"Enter a valid zip code in the format XXXXX.\"\nmsgstr \"\"\n\n#: mx/forms.py:110\nmsgid \"Enter a valid RFC.\"\nmsgstr \"\"\n\n#: mx/forms.py:111\nmsgid \"Invalid checksum for RFC.\"\nmsgstr \"\"\n\n#: mx/forms.py:191\nmsgid \"Enter a valid CURP.\"\nmsgstr \"\"\n\n#: mx/forms.py:192\nmsgid \"Invalid checksum for CURP.\"\nmsgstr \"\"\n\n#: mx/models.py:14\nmsgid \"Mexico state (three uppercase letters)\"\nmsgstr \"\"\n\n#: mx/models.py:27\nmsgid \"Mexico zip code\"\nmsgstr \"\"\n\n#: mx/models.py:44\nmsgid \"Mexican RFC\"\nmsgstr \"\"\n\n#: mx/models.py:61\nmsgid \"Mexican CURP\"\nmsgstr \"\"\n\n#: mx/mx_states.py:14\nmsgid \"Aguascalientes\"\nmsgstr \"\"\n\n#: mx/mx_states.py:15\nmsgid \"Baja California\"\nmsgstr \"\"\n\n#: mx/mx_states.py:16\nmsgid \"Baja California Sur\"\nmsgstr \"\"\n\n#: mx/mx_states.py:17\nmsgid \"Campeche\"\nmsgstr \"Kampeče\"\n\n#: mx/mx_states.py:18\nmsgid \"Chihuahua\"\nmsgstr \"\"\n\n#: mx/mx_states.py:19\nmsgid \"Chiapas\"\nmsgstr \"\"\n\n#: mx/mx_states.py:20\nmsgid \"Coahuila\"\nmsgstr \"\"\n\n#: mx/mx_states.py:21\nmsgid \"Colima\"\nmsgstr \"Kolima\"\n\n#: mx/mx_states.py:22\nmsgid \"Distrito Federal\"\nmsgstr \"\"\n\n#: mx/mx_states.py:23\nmsgid \"Durango\"\nmsgstr \"\"\n\n#: mx/mx_states.py:24\nmsgid \"Guerrero\"\nmsgstr \"\"\n\n#: mx/mx_states.py:25\nmsgid \"Guanajuato\"\nmsgstr \"\"\n\n#: mx/mx_states.py:26\nmsgid \"Hidalgo\"\nmsgstr \"\"\n\n#: mx/mx_states.py:27\nmsgid \"Jalisco\"\nmsgstr \"\"\n\n#: mx/mx_states.py:28\nmsgid \"Estado de México\"\nmsgstr \"\"\n\n#: mx/mx_states.py:29\nmsgid \"Michoacán\"\nmsgstr \"\"\n\n#: mx/mx_states.py:30\nmsgid \"Morelos\"\nmsgstr \"\"\n\n#: mx/mx_states.py:31\nmsgid \"Nayarit\"\nmsgstr \"\"\n\n#: mx/mx_states.py:32\nmsgid \"Nuevo León\"\nmsgstr \"\"\n\n#: mx/mx_states.py:33\nmsgid \"Oaxaca\"\nmsgstr \"\"\n\n#: mx/mx_states.py:34\nmsgid \"Puebla\"\nmsgstr \"\"\n\n#: mx/mx_states.py:35\nmsgid \"Querétaro\"\nmsgstr \"\"\n\n#: mx/mx_states.py:36\nmsgid \"Quintana Roo\"\nmsgstr \"\"\n\n#: mx/mx_states.py:37\nmsgid \"Sinaloa\"\nmsgstr \"\"\n\n#: mx/mx_states.py:38\nmsgid \"San Luis Potosí\"\nmsgstr \"\"\n\n#: mx/mx_states.py:39\nmsgid \"Sonora\"\nmsgstr \"\"\n\n#: mx/mx_states.py:40\nmsgid \"Tabasco\"\nmsgstr \"\"\n\n#: mx/mx_states.py:41\nmsgid \"Tamaulipas\"\nmsgstr \"\"\n\n#: mx/mx_states.py:42\nmsgid \"Tlaxcala\"\nmsgstr \"\"\n\n#: mx/mx_states.py:43\nmsgid \"Veracruz\"\nmsgstr \"Verakrusa\"\n\n#: mx/mx_states.py:44\nmsgid \"Yucatán\"\nmsgstr \"Jukatana\"\n\n#: mx/mx_states.py:45\nmsgid \"Zacatecas\"\nmsgstr \"\"\n\n#: nl/forms.py:26\nmsgid \"Enter a valid postal code\"\nmsgstr \"Ievadiet korektu pasta indeksu.\"\n\n#: nl/forms.py:82\nmsgid \"Enter a valid SoFi number\"\nmsgstr \"Ievadiet korektu SoFi numuru.\"\n\n#: nl/nl_provinces.py:4\nmsgid \"Drenthe\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:5\nmsgid \"Flevoland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:6\nmsgid \"Friesland\"\nmsgstr \"Frīzlande\"\n\n#: nl/nl_provinces.py:7\nmsgid \"Gelderland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:8\nmsgid \"Groningen\"\nmsgstr \"Groningena\"\n\n#: nl/nl_provinces.py:10\nmsgid \"Noord-Brabant\"\nmsgstr \"Ziemeļbrabante\"\n\n#: nl/nl_provinces.py:11\nmsgid \"Noord-Holland\"\nmsgstr \"Ziemeļholande\"\n\n#: nl/nl_provinces.py:12\nmsgid \"Overijssel\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:13\nmsgid \"Utrecht\"\nmsgstr \"Utrehta\"\n\n#: nl/nl_provinces.py:14\nmsgid \"Zeeland\"\nmsgstr \"Zēlande\"\n\n#: nl/nl_provinces.py:15\nmsgid \"Zuid-Holland\"\nmsgstr \"Dienvidholande\"\n\n#: no/forms.py:39\nmsgid \"Enter a valid Norwegian social security number.\"\nmsgstr \"Lūdzu ievadiet korektu Norvēģijas sociālās drošības nummuru.\"\n\n#: pe/forms.py:28\nmsgid \"This field requires 8 digits.\"\nmsgstr \"Šim laukam jasastāv no 8 cipariem.\"\n\n#: pe/forms.py:56\nmsgid \"This field requires 11 digits.\"\nmsgstr \"Šim laukam jasastāv no 11 cipariem.\"\n\n#: pl/forms.py:42\nmsgid \"National Identification Number consists of 11 digits.\"\nmsgstr \"Nacionālais identifikācijas numurs sastāv no 11 cipariem.\"\n\n#: pl/forms.py:43\nmsgid \"Wrong checksum for the National Identification Number.\"\nmsgstr \"Nekorekta kontrolsumma nacionālajam identifikācijas numuram.\"\n\n#: pl/forms.py:79\nmsgid \"National ID Card Number consists of 3 letters and 6 digits.\"\nmsgstr \"\"\n\n#: pl/forms.py:80\nmsgid \"Wrong checksum for the National ID Card Number.\"\nmsgstr \"\"\n\n#: pl/forms.py:131\nmsgid \"\"\n\"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or \"\n\"XXXXXXXXXX.\"\nmsgstr \"\"\n\n#: pl/forms.py:132\nmsgid \"Wrong checksum for the Tax Number (NIP).\"\nmsgstr \"Nekorekta nodokļu numura (NIP) kontrolsumma.\"\n\n#: pl/forms.py:171\nmsgid \"National Business Register Number (REGON) consists of 9 or 14 digits.\"\nmsgstr \"\"\n\"Nacionālais biznesa reģistra numurs (REGON) sastāv no 9 vai 14 cipariem.\"\n\n#: pl/forms.py:172\nmsgid \"Wrong checksum for the National Business Register Number (REGON).\"\nmsgstr \"Nekorekta nacionālā biznesa reģistra numura (REGON) kontrolsumma.\"\n\n#: pl/forms.py:212\nmsgid \"Enter a postal code in the format XX-XXX.\"\nmsgstr \"Ievadiet pasta indeksu formātā XX-XXX.\"\n\n#: pl/pl_voivodeships.py:8\nmsgid \"Lower Silesia\"\nmsgstr \"Apakšsilēzija\"\n\n#: pl/pl_voivodeships.py:9\nmsgid \"Kuyavia-Pomerania\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:10\nmsgid \"Lublin\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:11\nmsgid \"Lubusz\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:12\nmsgid \"Lodz\"\nmsgstr \"Lodza\"\n\n#: pl/pl_voivodeships.py:13\nmsgid \"Lesser Poland\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:14\nmsgid \"Masovia\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:15\nmsgid \"Opole\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:16\nmsgid \"Subcarpatia\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:17\nmsgid \"Podlasie\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:18\nmsgid \"Pomerania\"\nmsgstr \"Pomerānija\"\n\n#: pl/pl_voivodeships.py:19\nmsgid \"Silesia\"\nmsgstr \"Silēzija\"\n\n#: pl/pl_voivodeships.py:20\nmsgid \"Swietokrzyskie\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:21\nmsgid \"Warmia-Masuria\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:22\nmsgid \"Greater Poland\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:23\nmsgid \"West Pomerania\"\nmsgstr \"\"\n\n#: pt/forms.py:19\nmsgid \"Enter a zip code in the format XXXX-XXX.\"\nmsgstr \"Ievadiet pasta indeksu XXXX-XXX formātā.\"\n\n#: pt/forms.py:39\nmsgid \"Phone numbers must have 9 digits, or start by + or 00.\"\nmsgstr \"Tālruņa numuriem jābūt 9 cipariem vai jāsākas ar + vai 00\"\n\n#: ro/forms.py:22\nmsgid \"Enter a valid CIF.\"\nmsgstr \"Ievadiet korektu CIF.\"\n\n#: ro/forms.py:59\nmsgid \"Enter a valid CNP.\"\nmsgstr \"Ievadiet korektu CNP.\"\n\n#: ro/forms.py:143\nmsgid \"Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format\"\nmsgstr \"Ievadiet korektu IBAN ROXX-XXXX-XXXX-XXXX-XXXX-XXXX formātā.\"\n\n#: ro/forms.py:175\nmsgid \"Phone numbers must be in XXXX-XXXXXX format.\"\nmsgstr \"Tālruņa numuriem jābūt XXXX-XXXXXX formātā.\"\n\n#: ro/forms.py:200\nmsgid \"Enter a valid postal code in the format XXXXXX\"\nmsgstr \"Ievadiet pasta indeksu formātā XXXXXX.\"\n\n#: ru/forms.py:37\nmsgid \"Enter a postal code in the format XXXXXX.\"\nmsgstr \"\"\n\n#: ru/forms.py:50\nmsgid \"Enter a passport number in the format XXXX XXXXXX.\"\nmsgstr \"\"\n\n#: ru/forms.py:63\nmsgid \"Enter a passport number in the format XX XXXXXXX.\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:10\nmsgid \"Central Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:11\nmsgid \"South Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:12\nmsgid \"North-West Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:13\nmsgid \"Far-East Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:14\nmsgid \"Siberian Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:15\nmsgid \"Ural Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:16\nmsgid \"Privolzhsky Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:17\nmsgid \"North-Caucasian Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:21\nmsgid \"Moskva\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:22\nmsgid \"Saint-Peterburg\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:23\nmsgid \"Moskovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:24\nmsgid \"Adygeya, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:25\nmsgid \"Bashkortostan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:26\nmsgid \"Buryatia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:27\nmsgid \"Altay, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:28\nmsgid \"Dagestan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:29\nmsgid \"Ingushskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:30\nmsgid \"Kabardino-Balkarskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:31\nmsgid \"Kalmykia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:32\nmsgid \"Karachaevo-Cherkesskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:33\nmsgid \"Karelia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:34\nmsgid \"Komi, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:35\nmsgid \"Mariy Ehl, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:36\nmsgid \"Mordovia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:37\nmsgid \"Sakha, Respublika (Yakutiya)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:38\nmsgid \"Severnaya Osetia, Respublika (Alania)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:39\nmsgid \"Tatarstan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:40\nmsgid \"Tyva, Respublika (Tuva)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:41\nmsgid \"Udmurtskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:42\nmsgid \"Khakassiya, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:43\nmsgid \"Chechenskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:44\nmsgid \"Chuvashskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:45\nmsgid \"Altayskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:46\nmsgid \"Zabaykalskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:47\nmsgid \"Kamchatskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:48\nmsgid \"Krasnodarskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:49\nmsgid \"Krasnoyarskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:50\nmsgid \"Permskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:51\nmsgid \"Primorskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:52\nmsgid \"Stavropol'siyy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:53\nmsgid \"Khabarovskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:54\nmsgid \"Amurskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:55\nmsgid \"Arkhangel'skaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:56\nmsgid \"Astrakhanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:57\nmsgid \"Belgorodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:58\nmsgid \"Bryanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:59\nmsgid \"Vladimirskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:60\nmsgid \"Volgogradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:61\nmsgid \"Vologodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:62\nmsgid \"Voronezhskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:63\nmsgid \"Ivanovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:64\nmsgid \"Irkutskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:65\nmsgid \"Kaliningradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:66\nmsgid \"Kaluzhskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:67\nmsgid \"Kemerovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:68\nmsgid \"Kirovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:69\nmsgid \"Kostromskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:70\nmsgid \"Kurganskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:71\nmsgid \"Kurskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:72\nmsgid \"Leningradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:73\nmsgid \"Lipeckaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:74\nmsgid \"Magadanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:75\nmsgid \"Murmanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:76\nmsgid \"Nizhegorodskaja oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:77\nmsgid \"Novgorodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:78\nmsgid \"Novosibirskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:79\nmsgid \"Omskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:80\nmsgid \"Orenburgskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:81\nmsgid \"Orlovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:82\nmsgid \"Penzenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:83\nmsgid \"Pskovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:84\nmsgid \"Rostovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:85\nmsgid \"Rjazanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:86\nmsgid \"Samarskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:87\nmsgid \"Saratovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:88\nmsgid \"Sakhalinskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:89\nmsgid \"Sverdlovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:90\nmsgid \"Smolenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:91\nmsgid \"Tambovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:92\nmsgid \"Tverskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:93\nmsgid \"Tomskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:94\nmsgid \"Tul'skaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:95\nmsgid \"Tyumenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:96\nmsgid \"Ul'ianovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:97\nmsgid \"Chelyabinskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:98\nmsgid \"Yaroslavskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:99\nmsgid \"Evreyskaya avtonomnaja oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:100\nmsgid \"Neneckiy autonomnyy okrug\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:101\nmsgid \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:102\nmsgid \"Chukotskiy avtonomnyy okrug\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:103\nmsgid \"Yamalo-Neneckiy avtonomnyy okrug\"\nmsgstr \"\"\n\n#: se/forms.py:54\nmsgid \"Enter a valid Swedish organisation number.\"\nmsgstr \"Ievadiet korektu Zviedrijas organizācijas numuru.\"\n\n#: se/forms.py:111\nmsgid \"Enter a valid Swedish personal identity number.\"\nmsgstr \"Ievadiet korektu Zviedrijas ID numuru.\"\n\n#: se/forms.py:112\nmsgid \"Co-ordination numbers are not allowed.\"\nmsgstr \"\"\n\n#: se/forms.py:154\nmsgid \"Enter a Swedish postal code in the format XXXXX.\"\nmsgstr \"Ievadiet Zviedrijas pasta indeksu formātā XXXXX.\"\n\n#: se/se_counties.py:16\nmsgid \"Stockholm\"\nmsgstr \"Stokholma\"\n\n#: se/se_counties.py:17\nmsgid \"Västerbotten\"\nmsgstr \"\"\n\n#: se/se_counties.py:18\nmsgid \"Norrbotten\"\nmsgstr \"\"\n\n#: se/se_counties.py:19\nmsgid \"Uppsala\"\nmsgstr \"Upsala\"\n\n#: se/se_counties.py:20\nmsgid \"Södermanland\"\nmsgstr \"\"\n\n#: se/se_counties.py:21\nmsgid \"Östergötland\"\nmsgstr \"\"\n\n#: se/se_counties.py:22\nmsgid \"Jönköping\"\nmsgstr \"\"\n\n#: se/se_counties.py:23\nmsgid \"Kronoberg\"\nmsgstr \"\"\n\n#: se/se_counties.py:24\nmsgid \"Kalmar\"\nmsgstr \"\"\n\n#: se/se_counties.py:25\nmsgid \"Gotland\"\nmsgstr \"Gotlande\"\n\n#: se/se_counties.py:26\nmsgid \"Blekinge\"\nmsgstr \"\"\n\n#: se/se_counties.py:27\nmsgid \"Skåne\"\nmsgstr \"\"\n\n#: se/se_counties.py:28\nmsgid \"Halland\"\nmsgstr \"\"\n\n#: se/se_counties.py:29\nmsgid \"Västra Götaland\"\nmsgstr \"\"\n\n#: se/se_counties.py:30\nmsgid \"Värmland\"\nmsgstr \"\"\n\n#: se/se_counties.py:31\nmsgid \"Örebro\"\nmsgstr \"Ērebro\"\n\n#: se/se_counties.py:32\nmsgid \"Västmanland\"\nmsgstr \"\"\n\n#: se/se_counties.py:33\nmsgid \"Dalarna\"\nmsgstr \"\"\n\n#: se/se_counties.py:34\nmsgid \"Gävleborg\"\nmsgstr \"\"\n\n#: se/se_counties.py:35\nmsgid \"Västernorrland\"\nmsgstr \"\"\n\n#: se/se_counties.py:36\nmsgid \"Jämtland\"\nmsgstr \"Jemtlande\"\n\n#: si/forms.py:25\nmsgid \"The first 7 digits of the EMSO must represent a valid past date.\"\nmsgstr \"\"\n\n#: si/forms.py:26\nmsgid \"The EMSO is not valid.\"\nmsgstr \"\"\n\n#: si/forms.py:86\nmsgid \"Enter a valid tax number in form SIXXXXXXXX\"\nmsgstr \"\"\n\n#: si/forms.py:151\nmsgid \"Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:8\nmsgid \"Banska Bystrica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:9\nmsgid \"Banska Stiavnica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:10\nmsgid \"Bardejov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:11\nmsgid \"Banovce nad Bebravou\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:12\nmsgid \"Brezno\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:13\nmsgid \"Bratislava I\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:14\nmsgid \"Bratislava II\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:15\nmsgid \"Bratislava III\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:16\nmsgid \"Bratislava IV\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:17\nmsgid \"Bratislava V\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:18\nmsgid \"Bytca\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:19\nmsgid \"Cadca\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:20\nmsgid \"Detva\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:21\nmsgid \"Dolny Kubin\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:22\nmsgid \"Dunajska Streda\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:23\nmsgid \"Galanta\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:24\nmsgid \"Gelnica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:25\nmsgid \"Hlohovec\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:26\nmsgid \"Humenne\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:27\nmsgid \"Ilava\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:28\nmsgid \"Kezmarok\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:29\nmsgid \"Komarno\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:30\nmsgid \"Kosice I\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:31\nmsgid \"Kosice II\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:32\nmsgid \"Kosice III\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:33\nmsgid \"Kosice IV\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:34\nmsgid \"Kosice - okolie\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:35\nmsgid \"Krupina\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:36\nmsgid \"Kysucke Nove Mesto\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:37\nmsgid \"Levice\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:38\nmsgid \"Levoca\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:39\nmsgid \"Liptovsky Mikulas\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:40\nmsgid \"Lucenec\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:41\nmsgid \"Malacky\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:42\nmsgid \"Martin\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:43\nmsgid \"Medzilaborce\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:44\nmsgid \"Michalovce\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:45\nmsgid \"Myjava\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:46\nmsgid \"Namestovo\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:47\nmsgid \"Nitra\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:48\nmsgid \"Nove Mesto nad Vahom\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:49\nmsgid \"Nove Zamky\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:50\nmsgid \"Partizanske\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:51\nmsgid \"Pezinok\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:52\nmsgid \"Piestany\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:53\nmsgid \"Poltar\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:54\nmsgid \"Poprad\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:55\nmsgid \"Povazska Bystrica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:56\nmsgid \"Presov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:57\nmsgid \"Prievidza\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:58\nmsgid \"Puchov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:59\nmsgid \"Revuca\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:60\nmsgid \"Rimavska Sobota\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:61\nmsgid \"Roznava\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:62\nmsgid \"Ruzomberok\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:63\nmsgid \"Sabinov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:64\nmsgid \"Senec\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:65\nmsgid \"Senica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:66\nmsgid \"Skalica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:67\nmsgid \"Snina\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:68\nmsgid \"Sobrance\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:69\nmsgid \"Spisska Nova Ves\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:70\nmsgid \"Stara Lubovna\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:71\nmsgid \"Stropkov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:72\nmsgid \"Svidnik\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:73\nmsgid \"Sala\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:74\nmsgid \"Topolcany\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:75\nmsgid \"Trebisov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:76\nmsgid \"Trencin\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:77\nmsgid \"Trnava\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:78\nmsgid \"Turcianske Teplice\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:79\nmsgid \"Tvrdosin\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:80\nmsgid \"Velky Krtis\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:81\nmsgid \"Vranov nad Toplou\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:82\nmsgid \"Zlate Moravce\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:83\nmsgid \"Zvolen\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:84\nmsgid \"Zarnovica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:85\nmsgid \"Ziar nad Hronom\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:86\nmsgid \"Zilina\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:8\nmsgid \"Banska Bystrica region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:9\nmsgid \"Bratislava region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:10\nmsgid \"Kosice region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:11\nmsgid \"Nitra region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:12\nmsgid \"Presov region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:13\nmsgid \"Trencin region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:14\nmsgid \"Trnava region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:15\nmsgid \"Zilina region\"\nmsgstr \"\"\n\n#: tr/forms.py:21\nmsgid \"Enter a postal code in the format XXXXX.\"\nmsgstr \"\"\n\n#: tr/forms.py:42\nmsgid \"Phone numbers must be in 0XXX XXX XXXX format.\"\nmsgstr \"\"\n\n#: tr/forms.py:69\nmsgid \"Enter a valid Turkish Identification number.\"\nmsgstr \"\"\n\n#: tr/forms.py:70\nmsgid \"Turkish Identification number must be 11 digits.\"\nmsgstr \"\"\n\n#: us/forms.py:21\nmsgid \"Enter a zip code in the format XXXXX or XXXXX-XXXX.\"\nmsgstr \"Ievadiet pasta indeksu XXXXX vai XXXXX-XXXX formātos.\"\n\n#: us/forms.py:59\nmsgid \"Enter a valid U.S. Social Security number in XXX-XX-XXXX format.\"\nmsgstr \"\"\n\"Ievadiet korektu ASV sociālās apdrošināšanas numuru XXX-XX-XXXX formātā.\"\n\n#: us/forms.py:92\nmsgid \"Enter a U.S. state or territory.\"\nmsgstr \"Ievadiet ASV štatu vai teritoriju.\"\n\n#: us/models.py:8\nmsgid \"U.S. state (two uppercase letters)\"\nmsgstr \"ASV štats (divi augšējā reģistra burti)\"\n\n#: us/models.py:17\nmsgid \"U.S. postal code (two uppercase letters)\"\nmsgstr \"\"\n\n#: us/models.py:26\nmsgid \"Phone number\"\nmsgstr \"Tālruņa numurs\"\n\n#: uy/forms.py:29\nmsgid \"Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.\"\nmsgstr \"\"\n\"Ievadiet korektu CI numuru X.XXX.XXX-X,XXXXXXX-X vai XXXXXXXX formātos.\"\n\n#: uy/forms.py:31\nmsgid \"Enter a valid CI number.\"\nmsgstr \"Ievadiet korektu CI numuru.\"\n\n#: za/forms.py:22\nmsgid \"Enter a valid South African ID number\"\nmsgstr \"Ievadiet korektu DĀR ID numuru.\"\n\n#: za/forms.py:56\nmsgid \"Enter a valid South African postal code\"\nmsgstr \"Ievadiet korektu DĀR pasta indeksu.\"\n\n#: za/za_provinces.py:4\nmsgid \"Eastern Cape\"\nmsgstr \"\"\n\n#: za/za_provinces.py:5\nmsgid \"Free State\"\nmsgstr \"\"\n\n#: za/za_provinces.py:6\nmsgid \"Gauteng\"\nmsgstr \"\"\n\n#: za/za_provinces.py:7\nmsgid \"KwaZulu-Natal\"\nmsgstr \"\"\n\n#: za/za_provinces.py:8\nmsgid \"Limpopo\"\nmsgstr \"\"\n\n#: za/za_provinces.py:9\nmsgid \"Mpumalanga\"\nmsgstr \"\"\n\n#: za/za_provinces.py:10\nmsgid \"Northern Cape\"\nmsgstr \"\"\n\n#: za/za_provinces.py:11\nmsgid \"North West\"\nmsgstr \"\"\n\n#: za/za_provinces.py:12\nmsgid \"Western Cape\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/locale/mk/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <vvangelovski@gmail.com>, 2012.\n# vvangelovski <vvangelovski@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-10-17 09:16+0000\\n\"\n\"Last-Translator: vvangelovski <vvangelovski@gmail.com>\\n\"\n\"Language-Team: Macedonian (http://www.transifex.com/projects/p/django/\"\n\"language/mk/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: mk\\n\"\n\"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\\n\"\n\n#: ar/forms.py:30\nmsgid \"Enter a postal code in the format NNNN or ANNNNAAA.\"\nmsgstr \"Внесете поштенски број во форматот NNNN или ANNNNAAA.\"\n\n#: ar/forms.py:52 br/forms.py:95 br/forms.py:134 pe/forms.py:27 pe/forms.py:55\nmsgid \"This field requires only numbers.\"\nmsgstr \"Во ова поле смее да бидат само бројки.\"\n\n#: ar/forms.py:53\nmsgid \"This field requires 7 or 8 digits.\"\nmsgstr \"Во ова поле смее да има 7 или 8 цифри.\"\n\n#: ar/forms.py:82\nmsgid \"Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.\"\nmsgstr \"Внесете правилен CUIT во XX-XXXXXXXX-X or XXXXXXXXXXXX формат.\"\n\n#: ar/forms.py:83\nmsgid \"Invalid CUIT.\"\nmsgstr \"Неправилен CUIT.\"\n\n#: ar/forms.py:84\nmsgid \"Invalid legal type. Type must be 27, 20, 23 or 30.\"\nmsgstr \"\"\n\n#: at/at_states.py:5\nmsgid \"Burgenland\"\nmsgstr \"Бургенленд\"\n\n#: at/at_states.py:6\nmsgid \"Carinthia\"\nmsgstr \"Каринтиа\"\n\n#: at/at_states.py:7\nmsgid \"Lower Austria\"\nmsgstr \"Долна Австрија\"\n\n#: at/at_states.py:8\nmsgid \"Upper Austria\"\nmsgstr \"Горна Австрија\"\n\n#: at/at_states.py:9\nmsgid \"Salzburg\"\nmsgstr \"Салцзбург\"\n\n#: at/at_states.py:10\nmsgid \"Styria\"\nmsgstr \"Стириа\"\n\n#: at/at_states.py:11\nmsgid \"Tyrol\"\nmsgstr \"Тирол\"\n\n#: at/at_states.py:12\nmsgid \"Vorarlberg\"\nmsgstr \"Ворарлберг\"\n\n#: at/at_states.py:13\nmsgid \"Vienna\"\nmsgstr \"Виена\"\n\n#: at/forms.py:22 ch/forms.py:22 no/forms.py:19\nmsgid \"Enter a zip code in the format XXXX.\"\nmsgstr \"Внесете правилен поштенски број во форматот XXXX.\"\n\n#: at/forms.py:50\nmsgid \"Enter a valid Austrian Social Security Number in XXXX XXXXXX format.\"\nmsgstr \"\"\n\"Внесете правилен број за социјално осигурување на Австрија во XXXX-XXXXXX \"\n\"формат.\"\n\n#: au/forms.py:26\nmsgid \"Enter a 4 digit postcode.\"\nmsgstr \"Внесете 4 цифрен поштенски број.\"\n\n#: au/models.py:9\nmsgid \"Australian State\"\nmsgstr \"Австралиска држава\"\n\n#: au/models.py:19\nmsgid \"Australian Postcode\"\nmsgstr \"Австралиски поштенски број\"\n\n#: au/models.py:33\nmsgid \"Australian Phone number\"\nmsgstr \"Австралиски телефонски број\"\n\n#: be/be_provinces.py:5\nmsgid \"Antwerp\"\nmsgstr \"Антверп\"\n\n#: be/be_provinces.py:6\nmsgid \"Brussels\"\nmsgstr \"Брисел\"\n\n#: be/be_provinces.py:7\nmsgid \"East Flanders\"\nmsgstr \"Источен Фландерс\"\n\n#: be/be_provinces.py:8\nmsgid \"Flemish Brabant\"\nmsgstr \"Фламански Брабант\"\n\n#: be/be_provinces.py:9\nmsgid \"Hainaut\"\nmsgstr \"Хаинаут\"\n\n#: be/be_provinces.py:10\nmsgid \"Liege\"\nmsgstr \"Лиж\"\n\n#: be/be_provinces.py:11 nl/nl_provinces.py:9\nmsgid \"Limburg\"\nmsgstr \"Лимбург\"\n\n#: be/be_provinces.py:12\nmsgid \"Luxembourg\"\nmsgstr \"Луксембург\"\n\n#: be/be_provinces.py:13\nmsgid \"Namur\"\nmsgstr \"Намур\"\n\n#: be/be_provinces.py:14\nmsgid \"Walloon Brabant\"\nmsgstr \"Валун Брабант\"\n\n#: be/be_provinces.py:15\nmsgid \"West Flanders\"\nmsgstr \"Западен Фландерс\"\n\n#: be/be_regions.py:5\nmsgid \"Brussels Capital Region\"\nmsgstr \"Брисел Престолничен Регион\"\n\n#: be/be_regions.py:6\nmsgid \"Flemish Region\"\nmsgstr \"Фламански Регион\"\n\n#: be/be_regions.py:7\nmsgid \"Wallonia\"\nmsgstr \"Валониа\"\n\n#: be/forms.py:25\nmsgid \"Enter a valid postal code in the range and format 1XXX - 9XXX.\"\nmsgstr \"Внесете валиден поштенски број во форматот 1XXX - 9XXX.\"\n\n#: be/forms.py:48\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\nmsgstr \"\"\n\"Внесете валиден телефонски број во еден од следниве формати: 0x xxx xx xx, \"\n\"0xx xx xx xx, 04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.\"\n\"xxx.xx.xx, 0xx.xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\n\n#: br/forms.py:22\nmsgid \"Enter a zip code in the format XXXXX-XXX.\"\nmsgstr \"Внесете правилен поштенски број во форматот XXXXX-XXX.\"\n\n#: br/forms.py:31\nmsgid \"Phone numbers must be in XX-XXXX-XXXX format.\"\nmsgstr \"Телефонските броеви мора да бидат во XX-XXXX-XXXX форматот.\"\n\n#: br/forms.py:58\nmsgid \"\"\n\"Select a valid brazilian state. That state is not one of the available \"\n\"states.\"\nmsgstr \"\"\n\"Изберете правилна бразилска држава. Оваа држава не е од достапните држави.\"\n\n#: br/forms.py:93\nmsgid \"Invalid CPF number.\"\nmsgstr \"Неправилен CPF број.\"\n\n#: br/forms.py:94\nmsgid \"This field requires at most 11 digits or 14 characters.\"\nmsgstr \"Во ова поле смее да има најмногу 11 цифри или 14 знаци.\"\n\n#: br/forms.py:133\nmsgid \"Invalid CNPJ number.\"\nmsgstr \"Неправилен CNPJ број.\"\n\n#: br/forms.py:135\nmsgid \"This field requires at least 14 digits\"\nmsgstr \"Во ова поле треба да има најмалку 14 цифри\"\n\n#: ca/forms.py:29\nmsgid \"Enter a postal code in the format XXX XXX.\"\nmsgstr \"Внесете правилен поштенски број во формат XXX XXX.\"\n\n#: ca/forms.py:47 us/forms.py:30\nmsgid \"Phone numbers must be in XXX-XXX-XXXX format.\"\nmsgstr \"Телефонските броеви мора да бидат во XXX-XXX-XXXX форматот.\"\n\n#: ca/forms.py:69\nmsgid \"Enter a Canadian province or territory.\"\nmsgstr \"\"\n\n#: ca/forms.py:110\nmsgid \"Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.\"\nmsgstr \"Внесте правилен канадски број за осигурување во XXX-XXX-XXX форматот.\"\n\n#: ch/ch_states.py:5\nmsgid \"Aargau\"\nmsgstr \"Aargau\"\n\n#: ch/ch_states.py:6\nmsgid \"Appenzell Innerrhoden\"\nmsgstr \"Appenzell Innerrhoden\"\n\n#: ch/ch_states.py:7\nmsgid \"Appenzell Ausserrhoden\"\nmsgstr \"Appenzell Ausserrhoden\"\n\n#: ch/ch_states.py:8\nmsgid \"Basel-Stadt\"\nmsgstr \"Basel-Stadt\"\n\n#: ch/ch_states.py:9\nmsgid \"Basel-Land\"\nmsgstr \"Basel-Land\"\n\n#: ch/ch_states.py:10\nmsgid \"Berne\"\nmsgstr \"Berne\"\n\n#: ch/ch_states.py:11\nmsgid \"Fribourg\"\nmsgstr \"Fribourg\"\n\n#: ch/ch_states.py:12\nmsgid \"Geneva\"\nmsgstr \"Женева\"\n\n#: ch/ch_states.py:13\nmsgid \"Glarus\"\nmsgstr \"Glarus\"\n\n#: ch/ch_states.py:14\nmsgid \"Graubuenden\"\nmsgstr \"Graubuenden\"\n\n#: ch/ch_states.py:15\nmsgid \"Jura\"\nmsgstr \"Jura\"\n\n#: ch/ch_states.py:16\nmsgid \"Lucerne\"\nmsgstr \"Lucerne\"\n\n#: ch/ch_states.py:17\nmsgid \"Neuchatel\"\nmsgstr \"Neuchatel\"\n\n#: ch/ch_states.py:18\nmsgid \"Nidwalden\"\nmsgstr \"Nidwalden\"\n\n#: ch/ch_states.py:19\nmsgid \"Obwalden\"\nmsgstr \"Obwalden\"\n\n#: ch/ch_states.py:20\nmsgid \"Schaffhausen\"\nmsgstr \"Schaffhausen\"\n\n#: ch/ch_states.py:21\nmsgid \"Schwyz\"\nmsgstr \"Schwyz\"\n\n#: ch/ch_states.py:22\nmsgid \"Solothurn\"\nmsgstr \"Solothurn\"\n\n#: ch/ch_states.py:23\nmsgid \"St. Gallen\"\nmsgstr \"St. Gallen\"\n\n#: ch/ch_states.py:24\nmsgid \"Thurgau\"\nmsgstr \"Thurgau\"\n\n#: ch/ch_states.py:25\nmsgid \"Ticino\"\nmsgstr \"Ticino\"\n\n#: ch/ch_states.py:26\nmsgid \"Uri\"\nmsgstr \"Uri\"\n\n#: ch/ch_states.py:27\nmsgid \"Valais\"\nmsgstr \"Valais\"\n\n#: ch/ch_states.py:28\nmsgid \"Vaud\"\nmsgstr \"Vaud\"\n\n#: ch/ch_states.py:29\nmsgid \"Zug\"\nmsgstr \"Zug\"\n\n#: ch/ch_states.py:30\nmsgid \"Zurich\"\nmsgstr \"Цирих\"\n\n#: ch/forms.py:37\nmsgid \"Phone numbers must be in 0XX XXX XX XX format.\"\nmsgstr \"\"\n\n#: ch/forms.py:68\nmsgid \"\"\n\"Enter a valid Swiss identity or passport card number in X1234567<0 or \"\n\"1234567890 format.\"\nmsgstr \"\"\n\"Внесете правилен швајцарски број на пасош во X1234567<0 или  1234567890 \"\n\"формат.\"\n\n#: cl/forms.py:32\nmsgid \"Enter a valid Chilean RUT.\"\nmsgstr \"Внесете правилeн RUT за Чиле.\"\n\n#: cl/forms.py:33\nmsgid \"Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.\"\nmsgstr \"Внесете правилен RUT за Чиле. Форматот е Xx.XXX.XXX-X.\"\n\n#: cl/forms.py:34\nmsgid \"The Chilean RUT is not valid.\"\nmsgstr \"RUT бројот за Чиле е невалиден.\"\n\n#: cn/forms.py:84\nmsgid \"Enter a post code in the format XXXXXX.\"\nmsgstr \"Внесете поштенски код во формат XXXXXX.\"\n\n#: cn/forms.py:105\nmsgid \"ID Card Number consists of 15 or 18 digits.\"\nmsgstr \"Број на лична карта се состои од 15 или 18 цифри.\"\n\n#: cn/forms.py:106\nmsgid \"Invalid ID Card Number: Wrong checksum\"\nmsgstr \"Невалиден број лична карта: Неуспешна проверка по контролен број\"\n\n#: cn/forms.py:107\nmsgid \"Invalid ID Card Number: Wrong birthdate\"\nmsgstr \"Невалиден број лична карта: Погрешен датум на раѓање\"\n\n#: cn/forms.py:108\nmsgid \"Invalid ID Card Number: Wrong location code\"\nmsgstr \"Невалиден број лична карта: Погрешен код на локација\"\n\n#: cn/forms.py:193\nmsgid \"Enter a valid phone number.\"\nmsgstr \"Внесете валиден телефонски број.\"\n\n#: cn/forms.py:210\nmsgid \"Enter a valid cell number.\"\nmsgstr \"Внесете валиден мобилен број.\"\n\n#: cz/cz_regions.py:8\nmsgid \"Prague\"\nmsgstr \"Прага\"\n\n#: cz/cz_regions.py:9\nmsgid \"Central Bohemian Region\"\nmsgstr \"Централен Бохемиски регион\"\n\n#: cz/cz_regions.py:10\nmsgid \"South Bohemian Region\"\nmsgstr \"Јужен Бохемиски регион\"\n\n#: cz/cz_regions.py:11\nmsgid \"Pilsen Region\"\nmsgstr \"Пилзенски регион\"\n\n#: cz/cz_regions.py:12\nmsgid \"Carlsbad Region\"\nmsgstr \"Карлсбадски регион\"\n\n#: cz/cz_regions.py:13\nmsgid \"Usti Region\"\nmsgstr \"Усти регион\"\n\n#: cz/cz_regions.py:14\nmsgid \"Liberec Region\"\nmsgstr \"Либерец регион\"\n\n#: cz/cz_regions.py:15\nmsgid \"Hradec Region\"\nmsgstr \"Храдец регион\"\n\n#: cz/cz_regions.py:16\nmsgid \"Pardubice Region\"\nmsgstr \"Пардубице регион\"\n\n#: cz/cz_regions.py:17\nmsgid \"Vysocina Region\"\nmsgstr \"Висоцина регион\"\n\n#: cz/cz_regions.py:18\nmsgid \"South Moravian Region\"\nmsgstr \"Јужно Моравски регион\"\n\n#: cz/cz_regions.py:19\nmsgid \"Olomouc Region\"\nmsgstr \"Оломуц регион\"\n\n#: cz/cz_regions.py:20\nmsgid \"Zlin Region\"\nmsgstr \"Зилина регион\"\n\n#: cz/cz_regions.py:21\nmsgid \"Moravian-Silesian Region\"\nmsgstr \"Моравско-Силесански регион\"\n\n#: cz/forms.py:32 sk/forms.py:33\nmsgid \"Enter a postal code in the format XXXXX or XXX XX.\"\nmsgstr \"Внесете поштенски број во форматот XXXXX или XXX XX.\"\n\n#: cz/forms.py:52\nmsgid \"Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.\"\nmsgstr \"Внесете даночен број (NIP) во форматот XXXXXX/XXXX или XXXXXXXXXX.\"\n\n#: cz/forms.py:53\nmsgid \"Enter a valid birth number.\"\nmsgstr \"Внесете правилен даночен број.\"\n\n#: cz/forms.py:102\nmsgid \"Enter a valid IC number.\"\nmsgstr \"Внесете правилен даночен број.\"\n\n#: de/de_states.py:5\nmsgid \"Baden-Wuerttemberg\"\nmsgstr \"Баден-Вуертемберг\"\n\n#: de/de_states.py:6\nmsgid \"Bavaria\"\nmsgstr \"Баварија\"\n\n#: de/de_states.py:7\nmsgid \"Berlin\"\nmsgstr \"Берлин\"\n\n#: de/de_states.py:8\nmsgid \"Brandenburg\"\nmsgstr \"Бранденбург\"\n\n#: de/de_states.py:9\nmsgid \"Bremen\"\nmsgstr \"Бремен\"\n\n#: de/de_states.py:10\nmsgid \"Hamburg\"\nmsgstr \"Хамбург\"\n\n#: de/de_states.py:11\nmsgid \"Hessen\"\nmsgstr \"Хесен\"\n\n#: de/de_states.py:12\nmsgid \"Mecklenburg-Western Pomerania\"\nmsgstr \"Мекленбург - Западна Померанија\"\n\n#: de/de_states.py:13\nmsgid \"Lower Saxony\"\nmsgstr \"Долна Саксонија\"\n\n#: de/de_states.py:14\nmsgid \"North Rhine-Westphalia\"\nmsgstr \"Северна Рајна-Вестфалија\"\n\n#: de/de_states.py:15\nmsgid \"Rhineland-Palatinate\"\nmsgstr \"Рајналенд-Палатинате\"\n\n#: de/de_states.py:16\nmsgid \"Saarland\"\nmsgstr \"Сарленд\"\n\n#: de/de_states.py:17\nmsgid \"Saxony\"\nmsgstr \"Саксонија\"\n\n#: de/de_states.py:18\nmsgid \"Saxony-Anhalt\"\nmsgstr \"Саксонија-Анхалт\"\n\n#: de/de_states.py:19\nmsgid \"Schleswig-Holstein\"\nmsgstr \"Шлесвиг-Холштајн\"\n\n#: de/de_states.py:20\nmsgid \"Thuringia\"\nmsgstr \"Турингиа\"\n\n#: de/forms.py:20 fi/forms.py:18 fr/forms.py:20\nmsgid \"Enter a zip code in the format XXXXX.\"\nmsgstr \"Внесете правилен поштенски број во формат XXXXXX.\"\n\n#: de/forms.py:46\nmsgid \"\"\n\"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"format.\"\nmsgstr \"\"\n\"Внесете правилен број на лична карта во Германија во XXXXXXXXXXX-XXXXXXX-\"\n\"XXXXXXX-X  форматот.\"\n\n#: es/es_provinces.py:5\nmsgid \"Araba\"\nmsgstr \"\"\n\n#: es/es_provinces.py:6\nmsgid \"Albacete\"\nmsgstr \"Albacete\"\n\n#: es/es_provinces.py:7\nmsgid \"Alacant\"\nmsgstr \"Alacant\"\n\n#: es/es_provinces.py:8\nmsgid \"Almeria\"\nmsgstr \"Almeria\"\n\n#: es/es_provinces.py:9\nmsgid \"Avila\"\nmsgstr \"Авила\"\n\n#: es/es_provinces.py:10\nmsgid \"Badajoz\"\nmsgstr \"Badajoz\"\n\n#: es/es_provinces.py:11\nmsgid \"Illes Balears\"\nmsgstr \"Illes Balears\"\n\n#: es/es_provinces.py:12\nmsgid \"Barcelona\"\nmsgstr \"Барцелона\"\n\n#: es/es_provinces.py:13\nmsgid \"Burgos\"\nmsgstr \"Burgos\"\n\n#: es/es_provinces.py:14\nmsgid \"Caceres\"\nmsgstr \"Caceres\"\n\n#: es/es_provinces.py:15\nmsgid \"Cadiz\"\nmsgstr \"Cadiz\"\n\n#: es/es_provinces.py:16\nmsgid \"Castello\"\nmsgstr \"Castello\"\n\n#: es/es_provinces.py:17\nmsgid \"Ciudad Real\"\nmsgstr \"Ciudad Real\"\n\n#: es/es_provinces.py:18\nmsgid \"Cordoba\"\nmsgstr \"Кордоба\"\n\n#: es/es_provinces.py:19\nmsgid \"A Coruna\"\nmsgstr \"A Coruna\"\n\n#: es/es_provinces.py:20\nmsgid \"Cuenca\"\nmsgstr \"Cuenca\"\n\n#: es/es_provinces.py:21\nmsgid \"Girona\"\nmsgstr \"Girona\"\n\n#: es/es_provinces.py:22\nmsgid \"Granada\"\nmsgstr \"Granada\"\n\n#: es/es_provinces.py:23\nmsgid \"Guadalajara\"\nmsgstr \"Guadalajara\"\n\n#: es/es_provinces.py:24\nmsgid \"Guipuzkoa\"\nmsgstr \"Guipuzkoa\"\n\n#: es/es_provinces.py:25\nmsgid \"Huelva\"\nmsgstr \"Huelva\"\n\n#: es/es_provinces.py:26\nmsgid \"Huesca\"\nmsgstr \"Huesca\"\n\n#: es/es_provinces.py:27\nmsgid \"Jaen\"\nmsgstr \"Jaen\"\n\n#: es/es_provinces.py:28\nmsgid \"Leon\"\nmsgstr \"Леон\"\n\n#: es/es_provinces.py:29\nmsgid \"Lleida\"\nmsgstr \"Lleida\"\n\n#: es/es_provinces.py:30 es/es_regions.py:17\nmsgid \"La Rioja\"\nmsgstr \"La Rioja\"\n\n#: es/es_provinces.py:31\nmsgid \"Lugo\"\nmsgstr \"Луго\"\n\n#: es/es_provinces.py:32 es/es_regions.py:18\nmsgid \"Madrid\"\nmsgstr \"Мадрид\"\n\n#: es/es_provinces.py:33\nmsgid \"Malaga\"\nmsgstr \"Малага\"\n\n#: es/es_provinces.py:34\nmsgid \"Murcia\"\nmsgstr \"Murcia\"\n\n#: es/es_provinces.py:35\nmsgid \"Navarre\"\nmsgstr \"Navarre\"\n\n#: es/es_provinces.py:36\nmsgid \"Ourense\"\nmsgstr \"Ourense\"\n\n#: es/es_provinces.py:37\nmsgid \"Asturias\"\nmsgstr \"Asturias\"\n\n#: es/es_provinces.py:38\nmsgid \"Palencia\"\nmsgstr \"Palencia\"\n\n#: es/es_provinces.py:39\nmsgid \"Las Palmas\"\nmsgstr \"Las Palmas\"\n\n#: es/es_provinces.py:40\nmsgid \"Pontevedra\"\nmsgstr \"Pontevedra\"\n\n#: es/es_provinces.py:41\nmsgid \"Salamanca\"\nmsgstr \"Salamanca\"\n\n#: es/es_provinces.py:42\nmsgid \"Santa Cruz de Tenerife\"\nmsgstr \"Санта Круз и Тенерифе\"\n\n#: es/es_provinces.py:43 es/es_regions.py:11\nmsgid \"Cantabria\"\nmsgstr \"Cantabria\"\n\n#: es/es_provinces.py:44\nmsgid \"Segovia\"\nmsgstr \"Segovia\"\n\n#: es/es_provinces.py:45\nmsgid \"Seville\"\nmsgstr \"Севиља\"\n\n#: es/es_provinces.py:46\nmsgid \"Soria\"\nmsgstr \"Soria\"\n\n#: es/es_provinces.py:47\nmsgid \"Tarragona\"\nmsgstr \"Tarragona\"\n\n#: es/es_provinces.py:48\nmsgid \"Teruel\"\nmsgstr \"Teruel\"\n\n#: es/es_provinces.py:49\nmsgid \"Toledo\"\nmsgstr \"Толедо\"\n\n#: es/es_provinces.py:50\nmsgid \"Valencia\"\nmsgstr \"Валенсија\"\n\n#: es/es_provinces.py:51\nmsgid \"Valladolid\"\nmsgstr \"Valladolid\"\n\n#: es/es_provinces.py:52\nmsgid \"Bizkaia\"\nmsgstr \"Bizkaia\"\n\n#: es/es_provinces.py:53\nmsgid \"Zamora\"\nmsgstr \"Zamora\"\n\n#: es/es_provinces.py:54\nmsgid \"Zaragoza\"\nmsgstr \"Сарагоса\"\n\n#: es/es_provinces.py:55\nmsgid \"Ceuta\"\nmsgstr \"Ceuta\"\n\n#: es/es_provinces.py:56\nmsgid \"Melilla\"\nmsgstr \"Melilla\"\n\n#: es/es_regions.py:5\nmsgid \"Andalusia\"\nmsgstr \"Андалузија\"\n\n#: es/es_regions.py:6\nmsgid \"Aragon\"\nmsgstr \"Арагон\"\n\n#: es/es_regions.py:7\nmsgid \"Principality of Asturias\"\nmsgstr \"Principality of Asturias\"\n\n#: es/es_regions.py:8\nmsgid \"Balearic Islands\"\nmsgstr \"Острови Балеарик\"\n\n#: es/es_regions.py:9\nmsgid \"Basque Country\"\nmsgstr \"Баскија\"\n\n#: es/es_regions.py:10\nmsgid \"Canary Islands\"\nmsgstr \"Канарски острови\"\n\n#: es/es_regions.py:12\nmsgid \"Castile-La Mancha\"\nmsgstr \"Кастиља ла Манча\"\n\n#: es/es_regions.py:13\nmsgid \"Castile and Leon\"\nmsgstr \"Кастиња и Леон\"\n\n#: es/es_regions.py:14\nmsgid \"Catalonia\"\nmsgstr \"Каталонија\"\n\n#: es/es_regions.py:15\nmsgid \"Extremadura\"\nmsgstr \"Екстремадура\"\n\n#: es/es_regions.py:16\nmsgid \"Galicia\"\nmsgstr \"Галиција\"\n\n#: es/es_regions.py:19\nmsgid \"Region of Murcia\"\nmsgstr \"Регион Мурција\"\n\n#: es/es_regions.py:20\nmsgid \"Foral Community of Navarre\"\nmsgstr \"Foral Community of Navarre\"\n\n#: es/es_regions.py:21\nmsgid \"Valencian Community\"\nmsgstr \"Valencian Community\"\n\n#: es/forms.py:26\nmsgid \"Enter a valid postal code in the range and format 01XXX - 52XXX.\"\nmsgstr \"Внесете поштенски број во опсег и формат 01XXX - 52XXX.\"\n\n#: es/forms.py:46\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or \"\n\"9XXXXXXXX.\"\nmsgstr \"\"\n\"Внесете правилен телефонски број во еден од формативе 6XXXXXXXX, 8XXXXXXXX \"\n\"или 9XXXXXXXX.\"\n\n#: es/forms.py:73\nmsgid \"Please enter a valid NIF, NIE, or CIF.\"\nmsgstr \"Ве молам внесете правиелн NIF, NIE или CIF.\"\n\n#: es/forms.py:74\nmsgid \"Please enter a valid NIF or NIE.\"\nmsgstr \"Ве молам внесете валиден NIF или NIE.\"\n\n#: es/forms.py:75\nmsgid \"Invalid checksum for NIF.\"\nmsgstr \"Неправилна контролна сума за NIF.\"\n\n#: es/forms.py:76\nmsgid \"Invalid checksum for NIE.\"\nmsgstr \"Неправилна контролна сума за NIE.\"\n\n#: es/forms.py:77\nmsgid \"Invalid checksum for CIF.\"\nmsgstr \"Неправилна контролна сум за CIF.\"\n\n#: es/forms.py:149\nmsgid \"\"\n\"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.\"\nmsgstr \"Внесете правилна банкарска сметка во формат XXXX-XXXX-XX-XXXXXXXXXX.\"\n\n#: es/forms.py:150\nmsgid \"Invalid checksum for bank account number.\"\nmsgstr \"Неправилна контролна сума за бројот на банкарската сметка.\"\n\n#: fi/forms.py:33\nmsgid \"Enter a valid Finnish social security number.\"\nmsgstr \"Внесте правилен фински матичен број.\"\n\n#: fr/forms.py:35\nmsgid \"Phone numbers must be in 0X XX XX XX XX format.\"\nmsgstr \"Телефонските броеви мора да бидат во 0X XX XX XX XX форматот.\"\n\n#: gb/forms.py:25\nmsgid \"Enter a valid postcode.\"\nmsgstr \"Внесете правилен поштенски код.\"\n\n#: gb/gb_regions.py:11\nmsgid \"Bedfordshire\"\nmsgstr \"Бедфордшир\"\n\n#: gb/gb_regions.py:12\nmsgid \"Buckinghamshire\"\nmsgstr \"Букингхамшир\"\n\n#: gb/gb_regions.py:14\nmsgid \"Cheshire\"\nmsgstr \"Чешир\"\n\n#: gb/gb_regions.py:15\nmsgid \"Cornwall and Isles of Scilly\"\nmsgstr \"Cornwall and Isles of Scilly\"\n\n#: gb/gb_regions.py:16\nmsgid \"Cumbria\"\nmsgstr \"Кумбриа\"\n\n#: gb/gb_regions.py:17\nmsgid \"Derbyshire\"\nmsgstr \"Дербишир\"\n\n#: gb/gb_regions.py:18\nmsgid \"Devon\"\nmsgstr \"Девон\"\n\n#: gb/gb_regions.py:19\nmsgid \"Dorset\"\nmsgstr \"Дорсет\"\n\n#: gb/gb_regions.py:20\nmsgid \"Durham\"\nmsgstr \"Дурам\"\n\n#: gb/gb_regions.py:21\nmsgid \"East Sussex\"\nmsgstr \"Источен Сасекс\"\n\n#: gb/gb_regions.py:22\nmsgid \"Essex\"\nmsgstr \"Есекс\"\n\n#: gb/gb_regions.py:23\nmsgid \"Gloucestershire\"\nmsgstr \"Gloucestershire\"\n\n#: gb/gb_regions.py:24\nmsgid \"Greater London\"\nmsgstr \"Поширок Лондон\"\n\n#: gb/gb_regions.py:25\nmsgid \"Greater Manchester\"\nmsgstr \"Поширок Манчестер\"\n\n#: gb/gb_regions.py:26\nmsgid \"Hampshire\"\nmsgstr \"Хемпшир\"\n\n#: gb/gb_regions.py:27\nmsgid \"Hertfordshire\"\nmsgstr \"Хертфордшир\"\n\n#: gb/gb_regions.py:28\nmsgid \"Kent\"\nmsgstr \"Кент\"\n\n#: gb/gb_regions.py:29\nmsgid \"Lancashire\"\nmsgstr \"Ланкашир\"\n\n#: gb/gb_regions.py:30\nmsgid \"Leicestershire\"\nmsgstr \"Leicestershire\"\n\n#: gb/gb_regions.py:31\nmsgid \"Lincolnshire\"\nmsgstr \"Линколншир\"\n\n#: gb/gb_regions.py:32\nmsgid \"Merseyside\"\nmsgstr \"Мерсејсајд\"\n\n#: gb/gb_regions.py:33\nmsgid \"Norfolk\"\nmsgstr \"Норфолк\"\n\n#: gb/gb_regions.py:34\nmsgid \"North Yorkshire\"\nmsgstr \"Северен Јоркшир\"\n\n#: gb/gb_regions.py:35\nmsgid \"Northamptonshire\"\nmsgstr \"Нортхамтоншир\"\n\n#: gb/gb_regions.py:36\nmsgid \"Northumberland\"\nmsgstr \"Northumberland\"\n\n#: gb/gb_regions.py:37\nmsgid \"Nottinghamshire\"\nmsgstr \"Нотингхамшир\"\n\n#: gb/gb_regions.py:38\nmsgid \"Oxfordshire\"\nmsgstr \"Оксфордшир\"\n\n#: gb/gb_regions.py:39\nmsgid \"Shropshire\"\nmsgstr \"Шропшир\"\n\n#: gb/gb_regions.py:40\nmsgid \"Somerset\"\nmsgstr \"Сомерсет\"\n\n#: gb/gb_regions.py:41\nmsgid \"South Yorkshire\"\nmsgstr \"Јужен Јоркшир\"\n\n#: gb/gb_regions.py:42\nmsgid \"Staffordshire\"\nmsgstr \"Стафордшир\"\n\n#: gb/gb_regions.py:43\nmsgid \"Suffolk\"\nmsgstr \"Суфолк\"\n\n#: gb/gb_regions.py:44\nmsgid \"Surrey\"\nmsgstr \"Surrey\"\n\n#: gb/gb_regions.py:45\nmsgid \"Tyne and Wear\"\nmsgstr \"Tyne and Wear\"\n\n#: gb/gb_regions.py:46\nmsgid \"Warwickshire\"\nmsgstr \"Warwickshire\"\n\n#: gb/gb_regions.py:47\nmsgid \"West Midlands\"\nmsgstr \"Западен Мидландс\"\n\n#: gb/gb_regions.py:48\nmsgid \"West Sussex\"\nmsgstr \"Западен Сасекс\"\n\n#: gb/gb_regions.py:49\nmsgid \"West Yorkshire\"\nmsgstr \"Западен Јоркшир\"\n\n#: gb/gb_regions.py:50\nmsgid \"Wiltshire\"\nmsgstr \"Вилтшир\"\n\n#: gb/gb_regions.py:51\nmsgid \"Worcestershire\"\nmsgstr \"Worcestershire\"\n\n#: gb/gb_regions.py:55\nmsgid \"County Antrim\"\nmsgstr \"County Antrim\"\n\n#: gb/gb_regions.py:56\nmsgid \"County Armagh\"\nmsgstr \"County Armagh\"\n\n#: gb/gb_regions.py:57\nmsgid \"County Down\"\nmsgstr \"County Down\"\n\n#: gb/gb_regions.py:58\nmsgid \"County Fermanagh\"\nmsgstr \"County Fermanagh\"\n\n#: gb/gb_regions.py:59\nmsgid \"County Londonderry\"\nmsgstr \"County Londonderry\"\n\n#: gb/gb_regions.py:60\nmsgid \"County Tyrone\"\nmsgstr \"County Tyrone\"\n\n#: gb/gb_regions.py:64\nmsgid \"Clwyd\"\nmsgstr \"Clwyd\"\n\n#: gb/gb_regions.py:65\nmsgid \"Dyfed\"\nmsgstr \"Dyfed\"\n\n#: gb/gb_regions.py:66\nmsgid \"Gwent\"\nmsgstr \"Гвент\"\n\n#: gb/gb_regions.py:67\nmsgid \"Gwynedd\"\nmsgstr \"Gwynedd\"\n\n#: gb/gb_regions.py:68\nmsgid \"Mid Glamorgan\"\nmsgstr \"Mid Glamorgan\"\n\n#: gb/gb_regions.py:69\nmsgid \"Powys\"\nmsgstr \"Powys\"\n\n#: gb/gb_regions.py:70\nmsgid \"South Glamorgan\"\nmsgstr \"Јужен Гламорга\"\n\n#: gb/gb_regions.py:71\nmsgid \"West Glamorgan\"\nmsgstr \"Западен Гламорган\"\n\n#: gb/gb_regions.py:75\nmsgid \"Borders\"\nmsgstr \"Borders\"\n\n#: gb/gb_regions.py:76\nmsgid \"Central Scotland\"\nmsgstr \"Централна Шкотска\"\n\n#: gb/gb_regions.py:77\nmsgid \"Dumfries and Galloway\"\nmsgstr \"Dumfries and Galloway\"\n\n#: gb/gb_regions.py:78\nmsgid \"Fife\"\nmsgstr \"Fife\"\n\n#: gb/gb_regions.py:79\nmsgid \"Grampian\"\nmsgstr \"Грампиан\"\n\n#: gb/gb_regions.py:80\nmsgid \"Highland\"\nmsgstr \"Highland\"\n\n#: gb/gb_regions.py:81\nmsgid \"Lothian\"\nmsgstr \"Lothian\"\n\n#: gb/gb_regions.py:82\nmsgid \"Orkney Islands\"\nmsgstr \"Orkney Islands\"\n\n#: gb/gb_regions.py:83\nmsgid \"Shetland Islands\"\nmsgstr \"Shetland Islands\"\n\n#: gb/gb_regions.py:84\nmsgid \"Strathclyde\"\nmsgstr \"Strathclyde\"\n\n#: gb/gb_regions.py:85\nmsgid \"Tayside\"\nmsgstr \"Tayside\"\n\n#: gb/gb_regions.py:86\nmsgid \"Western Isles\"\nmsgstr \"Western Isles\"\n\n#: gb/gb_regions.py:90\nmsgid \"England\"\nmsgstr \"Англија\"\n\n#: gb/gb_regions.py:91\nmsgid \"Northern Ireland\"\nmsgstr \"Северна Ирска\"\n\n#: gb/gb_regions.py:92\nmsgid \"Scotland\"\nmsgstr \"Шкотска\"\n\n#: gb/gb_regions.py:93\nmsgid \"Wales\"\nmsgstr \"Велс\"\n\n#: hk/forms.py:37\n#, python-format\nmsgid \"Phone number should not start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:40\n#, python-format\nmsgid \"Phone number must be in one of the following formats: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:42\n#, python-format\nmsgid \"Phone number should start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hr/forms.py:76\nmsgid \"Enter a valid 13 digit JMBG\"\nmsgstr \"Внесете валиден 13 цифрен ЕМБГ\"\n\n#: hr/forms.py:77\nmsgid \"Error in date segment\"\nmsgstr \"Грешка во сегментот со датум\"\n\n#: hr/forms.py:123\nmsgid \"Enter a valid 11 digit OIB\"\nmsgstr \"Внесете валиден 11 цифрен OIB\"\n\n#: hr/forms.py:152 id/forms.py:112\nmsgid \"Enter a valid vehicle license plate number\"\nmsgstr \"Внесете валидна регистарска табличка.\"\n\n#: hr/forms.py:153\nmsgid \"Enter a valid location code\"\nmsgstr \"Внесете валиден код на локација\"\n\n#: hr/forms.py:154\nmsgid \"Number part cannot be zero\"\nmsgstr \"Делот со број не може да биде нула\"\n\n#: hr/forms.py:190\nmsgid \"Enter a valid 5 digit postal code\"\nmsgstr \"Внесете валиден 5 цифрен поштенски код\"\n\n#: hr/forms.py:218 id/forms.py:72 nl/forms.py:56\nmsgid \"Enter a valid phone number\"\nmsgstr \"Внесете валиден телефонски број\"\n\n#: hr/forms.py:219\nmsgid \"Enter a valid area or mobile network code\"\nmsgstr \"Внесете валиден код за област или мобилна мрежа\"\n\n#: hr/forms.py:220\nmsgid \"The phone nubmer is too long\"\nmsgstr \"Телефонскиот број е премногу долг\"\n\n#: hr/forms.py:258\nmsgid \"Enter a valid 19 digit JMBAG starting with 601983\"\nmsgstr \"Внесете валиден 19 цифрен ЕМБГ кој почнува со 601983\"\n\n#: hr/forms.py:259\nmsgid \"Card issue number cannot be zero\"\nmsgstr \"Бројот на издавање на картичка не може да биде нула\"\n\n#: hr/hr_choices.py:14\nmsgid \"Grad Zagreb\"\nmsgstr \"Град Загреб\"\n\n#: hr/hr_choices.py:15\nmsgid \"Bjelovarsko-bilogorska županija\"\nmsgstr \"Беловарско-билоградска објаст\"\n\n#: hr/hr_choices.py:16\nmsgid \"Brodsko-posavska županija\"\nmsgstr \"Бродско-посавска област\"\n\n#: hr/hr_choices.py:17\nmsgid \"Dubrovačko-neretvanska županija\"\nmsgstr \"Дубровачко-неретванска област\"\n\n#: hr/hr_choices.py:18\nmsgid \"Istarska županija\"\nmsgstr \"Истарска област\"\n\n#: hr/hr_choices.py:19\nmsgid \"Karlovačka županija\"\nmsgstr \"Карловачка област\"\n\n#: hr/hr_choices.py:20\nmsgid \"Koprivničko-križevačka županija\"\nmsgstr \"Копривничко-крижевачка област\"\n\n#: hr/hr_choices.py:21\nmsgid \"Krapinsko-zagorska županija\"\nmsgstr \"Крапинско-загорска област\"\n\n#: hr/hr_choices.py:22\nmsgid \"Ličko-senjska županija\"\nmsgstr \"Личко-сењска област\"\n\n#: hr/hr_choices.py:23\nmsgid \"Međimurska županija\"\nmsgstr \"Меџимурска област\"\n\n#: hr/hr_choices.py:24\nmsgid \"Osječko-baranjska županija\"\nmsgstr \"Осјечко-барањска област\"\n\n#: hr/hr_choices.py:25\nmsgid \"Požeško-slavonska županija\"\nmsgstr \"Пожешко-славонска област\"\n\n#: hr/hr_choices.py:26\nmsgid \"Primorsko-goranska županija\"\nmsgstr \"Приморско-горанска област\"\n\n#: hr/hr_choices.py:27\nmsgid \"Sisačko-moslavačka županija\"\nmsgstr \"Сисачко-мославачка област\"\n\n#: hr/hr_choices.py:28\nmsgid \"Splitsko-dalmatinska županija\"\nmsgstr \"Сплитско-далматинска област\"\n\n#: hr/hr_choices.py:29\nmsgid \"Šibensko-kninska županija\"\nmsgstr \"Шибенско-книнска област\"\n\n#: hr/hr_choices.py:30\nmsgid \"Varaždinska županija\"\nmsgstr \"Вараждинска област\"\n\n#: hr/hr_choices.py:31\nmsgid \"Virovitičko-podravska županija\"\nmsgstr \"Вировичко-подравска област\"\n\n#: hr/hr_choices.py:32\nmsgid \"Vukovarsko-srijemska županija\"\nmsgstr \"Вуковарско-сремска област\"\n\n#: hr/hr_choices.py:33\nmsgid \"Zadarska županija\"\nmsgstr \"Задарска област\"\n\n#: hr/hr_choices.py:34\nmsgid \"Zagrebačka županija\"\nmsgstr \"Загребачка област\"\n\n#: id/forms.py:31\nmsgid \"Enter a valid post code\"\nmsgstr \"Внесете правилен поштенски код\"\n\n#: id/forms.py:176\nmsgid \"Enter a valid NIK/KTP number\"\nmsgstr \"Внесете правилен NIK/KTP број.\"\n\n#: id/id_choices.py:15\nmsgid \"Aceh\"\nmsgstr \"Ацех\"\n\n#: id/id_choices.py:16 id/id_choices.py:79\nmsgid \"Bali\"\nmsgstr \"Бали\"\n\n#: id/id_choices.py:17 id/id_choices.py:51\nmsgid \"Banten\"\nmsgstr \"Бантен\"\n\n#: id/id_choices.py:18 id/id_choices.py:60\nmsgid \"Bengkulu\"\nmsgstr \"Бенгкулу\"\n\n#: id/id_choices.py:19 id/id_choices.py:53\nmsgid \"Yogyakarta\"\nmsgstr \"Јогјакарта\"\n\n#: id/id_choices.py:20 id/id_choices.py:57\nmsgid \"Jakarta\"\nmsgstr \"Џакарта\"\n\n#: id/id_choices.py:21 id/id_choices.py:81\nmsgid \"Gorontalo\"\nmsgstr \"Горонтало\"\n\n#: id/id_choices.py:22 id/id_choices.py:63\nmsgid \"Jambi\"\nmsgstr \"Џамби\"\n\n#: id/id_choices.py:23\nmsgid \"Jawa Barat\"\nmsgstr \"Јава Барат\"\n\n#: id/id_choices.py:24\nmsgid \"Jawa Tengah\"\nmsgstr \"Јава Тенга\"\n\n#: id/id_choices.py:25\nmsgid \"Jawa Timur\"\nmsgstr \"Јава Тимур\"\n\n#: id/id_choices.py:26 id/id_choices.py:94\nmsgid \"Kalimantan Barat\"\nmsgstr \"Калинмантан Барат\"\n\n#: id/id_choices.py:27 id/id_choices.py:72\nmsgid \"Kalimantan Selatan\"\nmsgstr \"Калимантан Селатан\"\n\n#: id/id_choices.py:28 id/id_choices.py:95\nmsgid \"Kalimantan Tengah\"\nmsgstr \"Калимантан Тенга\"\n\n#: id/id_choices.py:29 id/id_choices.py:96\nmsgid \"Kalimantan Timur\"\nmsgstr \"Калимантан Тимур\"\n\n#: id/id_choices.py:30\nmsgid \"Kepulauan Bangka-Belitung\"\nmsgstr \"Кепулуан Банга-Белитунг\"\n\n#: id/id_choices.py:31 id/id_choices.py:68\nmsgid \"Kepulauan Riau\"\nmsgstr \"Кепулуан Риау\"\n\n#: id/id_choices.py:32 id/id_choices.py:61\nmsgid \"Lampung\"\nmsgstr \"Лампунг\"\n\n#: id/id_choices.py:33 id/id_choices.py:76\nmsgid \"Maluku\"\nmsgstr \"Малуку\"\n\n#: id/id_choices.py:34 id/id_choices.py:77\nmsgid \"Maluku Utara\"\nmsgstr \"Малуку Утара\"\n\n#: id/id_choices.py:35\nmsgid \"Nusa Tenggara Barat\"\nmsgstr \"Нуса Тенгара Барат\"\n\n#: id/id_choices.py:36\nmsgid \"Nusa Tenggara Timur\"\nmsgstr \"Нуса Тенгара Тимур\"\n\n#: id/id_choices.py:37\nmsgid \"Papua\"\nmsgstr \"Папуа\"\n\n#: id/id_choices.py:38\nmsgid \"Papua Barat\"\nmsgstr \"Папуа Барат\"\n\n#: id/id_choices.py:39 id/id_choices.py:66\nmsgid \"Riau\"\nmsgstr \"Риау\"\n\n#: id/id_choices.py:40 id/id_choices.py:74\nmsgid \"Sulawesi Barat\"\nmsgstr \"Сулавеси Барат\"\n\n#: id/id_choices.py:41 id/id_choices.py:75\nmsgid \"Sulawesi Selatan\"\nmsgstr \"Сулавеси Селатан\"\n\n#: id/id_choices.py:42 id/id_choices.py:82\nmsgid \"Sulawesi Tengah\"\nmsgstr \"Сулавеси Тенга\"\n\n#: id/id_choices.py:43 id/id_choices.py:85\nmsgid \"Sulawesi Tenggara\"\nmsgstr \"Сулавеси Тенгара\"\n\n#: id/id_choices.py:44\nmsgid \"Sulawesi Utara\"\nmsgstr \"Сулавеси Утара\"\n\n#: id/id_choices.py:45 id/id_choices.py:58\nmsgid \"Sumatera Barat\"\nmsgstr \"Суматера Барат\"\n\n#: id/id_choices.py:46 id/id_choices.py:62\nmsgid \"Sumatera Selatan\"\nmsgstr \"Суматера Селатан\"\n\n#: id/id_choices.py:47 id/id_choices.py:64\nmsgid \"Sumatera Utara\"\nmsgstr \"Суматера Утара\"\n\n#: id/id_choices.py:52\nmsgid \"Magelang\"\nmsgstr \"Магеланг\"\n\n#: id/id_choices.py:54\nmsgid \"Surakarta - Solo\"\nmsgstr \"Суракарта - Соло\"\n\n#: id/id_choices.py:55\nmsgid \"Madiun\"\nmsgstr \"Мадиун\"\n\n#: id/id_choices.py:56\nmsgid \"Kediri\"\nmsgstr \"Кедири\"\n\n#: id/id_choices.py:59\nmsgid \"Tapanuli\"\nmsgstr \"Тапанули\"\n\n#: id/id_choices.py:65\nmsgid \"Nanggroe Aceh Darussalam\"\nmsgstr \"Нангоре Аце Дарусалам\"\n\n#: id/id_choices.py:67\nmsgid \"Kepulauan Bangka Belitung\"\nmsgstr \"Кепулуан Банга Белитунг\"\n\n#: id/id_choices.py:69\nmsgid \"Corps Consulate\"\nmsgstr \"Corps Consulate\"\n\n#: id/id_choices.py:70\nmsgid \"Corps Diplomatic\"\nmsgstr \"Corps Diplomatic\"\n\n#: id/id_choices.py:71\nmsgid \"Bandung\"\nmsgstr \"Бандунг\"\n\n#: id/id_choices.py:73\nmsgid \"Sulawesi Utara Daratan\"\nmsgstr \"Сулавеси Утара Даратан\"\n\n#: id/id_choices.py:78\nmsgid \"NTT - Timor\"\nmsgstr \"NTT - Timor\"\n\n#: id/id_choices.py:80\nmsgid \"Sulawesi Utara Kepulauan\"\nmsgstr \"Сулавеси Утара Кепулуан\"\n\n#: id/id_choices.py:83\nmsgid \"NTB - Lombok\"\nmsgstr \"NTB - Lombok\"\n\n#: id/id_choices.py:84\nmsgid \"Papua dan Papua Barat\"\nmsgstr \"Папуа дан Папуа Барат\"\n\n#: id/id_choices.py:86\nmsgid \"Cirebon\"\nmsgstr \"Циребон\"\n\n#: id/id_choices.py:87\nmsgid \"NTB - Sumbawa\"\nmsgstr \"NTB - Sumbawa\"\n\n#: id/id_choices.py:88\nmsgid \"NTT - Flores\"\nmsgstr \"NTT - Flores\"\n\n#: id/id_choices.py:89\nmsgid \"NTT - Sumba\"\nmsgstr \"NTT - Sumba\"\n\n#: id/id_choices.py:90\nmsgid \"Bogor\"\nmsgstr \"Богор\"\n\n#: id/id_choices.py:91\nmsgid \"Pekalongan\"\nmsgstr \"Пекалонган\"\n\n#: id/id_choices.py:92\nmsgid \"Semarang\"\nmsgstr \"Семаранг\"\n\n#: id/id_choices.py:93\nmsgid \"Pati\"\nmsgstr \"Пати\"\n\n#: id/id_choices.py:97\nmsgid \"Surabaya\"\nmsgstr \"Сурабаја\"\n\n#: id/id_choices.py:98\nmsgid \"Madura\"\nmsgstr \"Мадура\"\n\n#: id/id_choices.py:99\nmsgid \"Malang\"\nmsgstr \"Маланг\"\n\n#: id/id_choices.py:100\nmsgid \"Jember\"\nmsgstr \"Џембер\"\n\n#: id/id_choices.py:101\nmsgid \"Banyumas\"\nmsgstr \"Банјумас\"\n\n#: id/id_choices.py:102\nmsgid \"Federal Government\"\nmsgstr \"Федерална Влада\"\n\n#: id/id_choices.py:103\nmsgid \"Bojonegoro\"\nmsgstr \"Бојонегоро\"\n\n#: id/id_choices.py:104\nmsgid \"Purwakarta\"\nmsgstr \"Пурвакарта\"\n\n#: id/id_choices.py:105\nmsgid \"Sidoarjo\"\nmsgstr \"Сидоарџо\"\n\n#: id/id_choices.py:106\nmsgid \"Garut\"\nmsgstr \"Гарут\"\n\n#: ie/ie_counties.py:8\nmsgid \"Antrim\"\nmsgstr \"Антрим\"\n\n#: ie/ie_counties.py:9\nmsgid \"Armagh\"\nmsgstr \"Армаг\"\n\n#: ie/ie_counties.py:10\nmsgid \"Carlow\"\nmsgstr \"Карлов\"\n\n#: ie/ie_counties.py:11\nmsgid \"Cavan\"\nmsgstr \"Каван\"\n\n#: ie/ie_counties.py:12\nmsgid \"Clare\"\nmsgstr \"Кларе\"\n\n#: ie/ie_counties.py:13\nmsgid \"Cork\"\nmsgstr \"Корк\"\n\n#: ie/ie_counties.py:14\nmsgid \"Derry\"\nmsgstr \"Дери\"\n\n#: ie/ie_counties.py:15\nmsgid \"Donegal\"\nmsgstr \"Донегал\"\n\n#: ie/ie_counties.py:16\nmsgid \"Down\"\nmsgstr \"Даун\"\n\n#: ie/ie_counties.py:17\nmsgid \"Dublin\"\nmsgstr \"Даблин\"\n\n#: ie/ie_counties.py:18\nmsgid \"Fermanagh\"\nmsgstr \"Ферманаг\"\n\n#: ie/ie_counties.py:19\nmsgid \"Galway\"\nmsgstr \"Галвеј\"\n\n#: ie/ie_counties.py:20\nmsgid \"Kerry\"\nmsgstr \"Кери\"\n\n#: ie/ie_counties.py:21\nmsgid \"Kildare\"\nmsgstr \"Килдаре\"\n\n#: ie/ie_counties.py:22\nmsgid \"Kilkenny\"\nmsgstr \"Килкени\"\n\n#: ie/ie_counties.py:23\nmsgid \"Laois\"\nmsgstr \"Лаоис\"\n\n#: ie/ie_counties.py:24\nmsgid \"Leitrim\"\nmsgstr \"Лајтрим\"\n\n#: ie/ie_counties.py:25\nmsgid \"Limerick\"\nmsgstr \"Лимерик\"\n\n#: ie/ie_counties.py:26\nmsgid \"Longford\"\nmsgstr \"Лонгфорд\"\n\n#: ie/ie_counties.py:27\nmsgid \"Louth\"\nmsgstr \"Лут\"\n\n#: ie/ie_counties.py:28\nmsgid \"Mayo\"\nmsgstr \"Мајо\"\n\n#: ie/ie_counties.py:29\nmsgid \"Meath\"\nmsgstr \"Мит\"\n\n#: ie/ie_counties.py:30\nmsgid \"Monaghan\"\nmsgstr \"Монаган\"\n\n#: ie/ie_counties.py:31\nmsgid \"Offaly\"\nmsgstr \"Офали\"\n\n#: ie/ie_counties.py:32\nmsgid \"Roscommon\"\nmsgstr \"Росомон\"\n\n#: ie/ie_counties.py:33\nmsgid \"Sligo\"\nmsgstr \"Слиго\"\n\n#: ie/ie_counties.py:34\nmsgid \"Tipperary\"\nmsgstr \"Типерари\"\n\n#: ie/ie_counties.py:35\nmsgid \"Tyrone\"\nmsgstr \"Тајрон\"\n\n#: ie/ie_counties.py:36\nmsgid \"Waterford\"\nmsgstr \"Вотерфорд\"\n\n#: ie/ie_counties.py:37\nmsgid \"Westmeath\"\nmsgstr \"Вестмит\"\n\n#: ie/ie_counties.py:38\nmsgid \"Wexford\"\nmsgstr \"Вексфорд\"\n\n#: ie/ie_counties.py:39\nmsgid \"Wicklow\"\nmsgstr \"Виклоу\"\n\n#: il/forms.py:32\nmsgid \"Enter a postal code in the format XXXXX\"\nmsgstr \"Внесете поштенски код во форматот XXXXX\"\n\n#: il/forms.py:51\nmsgid \"Enter a valid ID number.\"\nmsgstr \"Внесете валиден идентификациски број.\"\n\n#: in_/forms.py:41\nmsgid \"Enter a zip code in the format XXXXXX or XXX XXX.\"\nmsgstr \"Внесете поштенски код во формат XXXXXX или ХХХ ХХХ.\"\n\n#: in_/forms.py:64\nmsgid \"Enter an Indian state or territory.\"\nmsgstr \"Внесете Индиска држава или територија.\"\n\n#: in_/forms.py:103\nmsgid \"Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.\"\nmsgstr \"\"\n\"Телефонските броеви мора да бидат во 02X-8Х или 03X-7Х или 04Х-6X формат.\"\n\n#: is_/forms.py:22\nmsgid \"\"\n\"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.\"\nmsgstr \"\"\n\"Внесете валиден идентификационен број од Исланд. Форматот е XXXXXX-XXXX.\"\n\n#: is_/forms.py:23\nmsgid \"The Icelandic identification number is not valid.\"\nmsgstr \"Исландскиот идентификационент број е невалиден.\"\n\n#: it/forms.py:21\nmsgid \"Enter a valid zip code.\"\nmsgstr \"Внесете правилен поштенски број.\"\n\n#: it/forms.py:48\nmsgid \"Enter a valid Social Security number.\"\nmsgstr \"Внесете правилен осигурителен број.\"\n\n#: it/forms.py:73\nmsgid \"Enter a valid VAT number.\"\nmsgstr \"Внесете правилен даночен број.\"\n\n#: jp/forms.py:19\nmsgid \"Enter a postal code in the format XXXXXXX or XXX-XXXX.\"\nmsgstr \"Внесете поштенски број во форматот XXXXXXX или XXX-XXXX.\"\n\n#: jp/jp_prefectures.py:4\nmsgid \"Hokkaido\"\nmsgstr \"Хокаидо\"\n\n#: jp/jp_prefectures.py:5\nmsgid \"Aomori\"\nmsgstr \"Аомори\"\n\n#: jp/jp_prefectures.py:6\nmsgid \"Iwate\"\nmsgstr \"Ивате\"\n\n#: jp/jp_prefectures.py:7\nmsgid \"Miyagi\"\nmsgstr \"Мијаги\"\n\n#: jp/jp_prefectures.py:8\nmsgid \"Akita\"\nmsgstr \"Акита\"\n\n#: jp/jp_prefectures.py:9\nmsgid \"Yamagata\"\nmsgstr \"Јамагата\"\n\n#: jp/jp_prefectures.py:10\nmsgid \"Fukushima\"\nmsgstr \"Фукушима\"\n\n#: jp/jp_prefectures.py:11\nmsgid \"Ibaraki\"\nmsgstr \"Ибараки\"\n\n#: jp/jp_prefectures.py:12\nmsgid \"Tochigi\"\nmsgstr \"Точиги\"\n\n#: jp/jp_prefectures.py:13\nmsgid \"Gunma\"\nmsgstr \"Гунма\"\n\n#: jp/jp_prefectures.py:14\nmsgid \"Saitama\"\nmsgstr \"Саитама\"\n\n#: jp/jp_prefectures.py:15\nmsgid \"Chiba\"\nmsgstr \"Чиба\"\n\n#: jp/jp_prefectures.py:16\nmsgid \"Tokyo\"\nmsgstr \"Токио\"\n\n#: jp/jp_prefectures.py:17\nmsgid \"Kanagawa\"\nmsgstr \"Канагава\"\n\n#: jp/jp_prefectures.py:18\nmsgid \"Yamanashi\"\nmsgstr \"Јаманаши\"\n\n#: jp/jp_prefectures.py:19\nmsgid \"Nagano\"\nmsgstr \"Нагано\"\n\n#: jp/jp_prefectures.py:20\nmsgid \"Niigata\"\nmsgstr \"Нигита\"\n\n#: jp/jp_prefectures.py:21\nmsgid \"Toyama\"\nmsgstr \"Тојама\"\n\n#: jp/jp_prefectures.py:22\nmsgid \"Ishikawa\"\nmsgstr \"Ишикава\"\n\n#: jp/jp_prefectures.py:23\nmsgid \"Fukui\"\nmsgstr \"Фукуи\"\n\n#: jp/jp_prefectures.py:24\nmsgid \"Gifu\"\nmsgstr \"Гифу\"\n\n#: jp/jp_prefectures.py:25\nmsgid \"Shizuoka\"\nmsgstr \"Шизоука\"\n\n#: jp/jp_prefectures.py:26\nmsgid \"Aichi\"\nmsgstr \"Аичи\"\n\n#: jp/jp_prefectures.py:27\nmsgid \"Mie\"\nmsgstr \"Мие\"\n\n#: jp/jp_prefectures.py:28\nmsgid \"Shiga\"\nmsgstr \"Шига\"\n\n#: jp/jp_prefectures.py:29\nmsgid \"Kyoto\"\nmsgstr \"Кјото\"\n\n#: jp/jp_prefectures.py:30\nmsgid \"Osaka\"\nmsgstr \"Осака\"\n\n#: jp/jp_prefectures.py:31\nmsgid \"Hyogo\"\nmsgstr \"Хиого\"\n\n#: jp/jp_prefectures.py:32\nmsgid \"Nara\"\nmsgstr \"Нара\"\n\n#: jp/jp_prefectures.py:33\nmsgid \"Wakayama\"\nmsgstr \"Вакајама\"\n\n#: jp/jp_prefectures.py:34\nmsgid \"Tottori\"\nmsgstr \"Тотори\"\n\n#: jp/jp_prefectures.py:35\nmsgid \"Shimane\"\nmsgstr \"Шимане\"\n\n#: jp/jp_prefectures.py:36\nmsgid \"Okayama\"\nmsgstr \"Окајама\"\n\n#: jp/jp_prefectures.py:37\nmsgid \"Hiroshima\"\nmsgstr \"Хирошима\"\n\n#: jp/jp_prefectures.py:38\nmsgid \"Yamaguchi\"\nmsgstr \"Јамагучи\"\n\n#: jp/jp_prefectures.py:39\nmsgid \"Tokushima\"\nmsgstr \"Токушима\"\n\n#: jp/jp_prefectures.py:40\nmsgid \"Kagawa\"\nmsgstr \"Кагава\"\n\n#: jp/jp_prefectures.py:41\nmsgid \"Ehime\"\nmsgstr \"Еиме\"\n\n#: jp/jp_prefectures.py:42\nmsgid \"Kochi\"\nmsgstr \"Кочи\"\n\n#: jp/jp_prefectures.py:43\nmsgid \"Fukuoka\"\nmsgstr \"Фукуока\"\n\n#: jp/jp_prefectures.py:44\nmsgid \"Saga\"\nmsgstr \"Сага\"\n\n#: jp/jp_prefectures.py:45\nmsgid \"Nagasaki\"\nmsgstr \"Нагасаки\"\n\n#: jp/jp_prefectures.py:46\nmsgid \"Kumamoto\"\nmsgstr \"Кумамото\"\n\n#: jp/jp_prefectures.py:47\nmsgid \"Oita\"\nmsgstr \"Оита\"\n\n#: jp/jp_prefectures.py:48\nmsgid \"Miyazaki\"\nmsgstr \"Мијазаки\"\n\n#: jp/jp_prefectures.py:49\nmsgid \"Kagoshima\"\nmsgstr \"Кагошима\"\n\n#: jp/jp_prefectures.py:50\nmsgid \"Okinawa\"\nmsgstr \"Окинава\"\n\n#: kw/forms.py:27\nmsgid \"Enter a valid Kuwaiti Civil ID number\"\nmsgstr \"Внесете правилен кувајтски број за идентификација\"\n\n#: mk/forms.py:18\nmsgid \"\"\n\"Identity card numbers must contain either 4 to 7 digits or an uppercase \"\n\"letter and 7 digits.\"\nmsgstr \"\"\n\"Броевѕ од лична карта мора да содржат или 4-7 цифри или латинична буква и 7 \"\n\"цифри.\"\n\n#: mk/forms.py:57 si/forms.py:24\nmsgid \"This field should contain exactly 13 digits.\"\nmsgstr \"Ова поле треба да содржи точно 13 цифри.\"\n\n#: mk/forms.py:58\nmsgid \"The first 7 digits of the UMCN must represent a valid past date.\"\nmsgstr \"\"\n\"Првите 7 бројки од ЕМБГ мора да претставуваат валидна дата од минатото.\"\n\n#: mk/forms.py:59\nmsgid \"The UMCN is not valid.\"\nmsgstr \"ЕМБГ не е валиден.\"\n\n#: mk/mk_choices.py:10\nmsgid \"Aerodrom\"\nmsgstr \"Аеродром\"\n\n#: mk/mk_choices.py:11\nmsgid \"Aračinovo\"\nmsgstr \"Арачиново\"\n\n#: mk/mk_choices.py:12\nmsgid \"Berovo\"\nmsgstr \"Берово\"\n\n#: mk/mk_choices.py:13\nmsgid \"Bitola\"\nmsgstr \"Битола\"\n\n#: mk/mk_choices.py:14\nmsgid \"Bogdanci\"\nmsgstr \"Богданци\"\n\n#: mk/mk_choices.py:15\nmsgid \"Bogovinje\"\nmsgstr \"Боговиње\"\n\n#: mk/mk_choices.py:16\nmsgid \"Bosilovo\"\nmsgstr \"Босилово\"\n\n#: mk/mk_choices.py:17\nmsgid \"Brvenica\"\nmsgstr \"Брвеница\"\n\n#: mk/mk_choices.py:18\nmsgid \"Butel\"\nmsgstr \"Бутел\"\n\n#: mk/mk_choices.py:19\nmsgid \"Valandovo\"\nmsgstr \"Валандово\"\n\n#: mk/mk_choices.py:20\nmsgid \"Vasilevo\"\nmsgstr \"Василево\"\n\n#: mk/mk_choices.py:21\nmsgid \"Vevčani\"\nmsgstr \"Вевчани\"\n\n#: mk/mk_choices.py:22\nmsgid \"Veles\"\nmsgstr \"Велес\"\n\n#: mk/mk_choices.py:23\nmsgid \"Vinica\"\nmsgstr \"Виница\"\n\n#: mk/mk_choices.py:24\nmsgid \"Vraneštica\"\nmsgstr \"Вранештица\"\n\n#: mk/mk_choices.py:25\nmsgid \"Vrapčište\"\nmsgstr \"Врапчиште\"\n\n#: mk/mk_choices.py:26\nmsgid \"Gazi Baba\"\nmsgstr \"Гази Баба\"\n\n#: mk/mk_choices.py:27\nmsgid \"Gevgelija\"\nmsgstr \"Гевгелија\"\n\n#: mk/mk_choices.py:28\nmsgid \"Gostivar\"\nmsgstr \"Гостивар\"\n\n#: mk/mk_choices.py:29\nmsgid \"Gradsko\"\nmsgstr \"Градско\"\n\n#: mk/mk_choices.py:30\nmsgid \"Debar\"\nmsgstr \"Дебар\"\n\n#: mk/mk_choices.py:31\nmsgid \"Debarca\"\nmsgstr \"Дебарца\"\n\n#: mk/mk_choices.py:32\nmsgid \"Delčevo\"\nmsgstr \"Делчево\"\n\n#: mk/mk_choices.py:33\nmsgid \"Demir Kapija\"\nmsgstr \"Демир Капија\"\n\n#: mk/mk_choices.py:34\nmsgid \"Demir Hisar\"\nmsgstr \"Демир Хисар\"\n\n#: mk/mk_choices.py:35\nmsgid \"Dolneni\"\nmsgstr \"Долнени\"\n\n#: mk/mk_choices.py:36\nmsgid \"Drugovo\"\nmsgstr \"Другово\"\n\n#: mk/mk_choices.py:37\nmsgid \"Gjorče Petrov\"\nmsgstr \"Ѓорче Петров\"\n\n#: mk/mk_choices.py:38\nmsgid \"Želino\"\nmsgstr \"Желино\"\n\n#: mk/mk_choices.py:39\nmsgid \"Zajas\"\nmsgstr \"Зајас\"\n\n#: mk/mk_choices.py:40\nmsgid \"Zelenikovo\"\nmsgstr \"Зелениково\"\n\n#: mk/mk_choices.py:41\nmsgid \"Zrnovci\"\nmsgstr \"Зрновци\"\n\n#: mk/mk_choices.py:42\nmsgid \"Ilinden\"\nmsgstr \"Илинден\"\n\n#: mk/mk_choices.py:43\nmsgid \"Jegunovce\"\nmsgstr \"Јегуновце\"\n\n#: mk/mk_choices.py:44\nmsgid \"Kavadarci\"\nmsgstr \"Кавадарци\"\n\n#: mk/mk_choices.py:45\nmsgid \"Karbinci\"\nmsgstr \"Карбинци\"\n\n#: mk/mk_choices.py:46\nmsgid \"Karpoš\"\nmsgstr \"Карпош\"\n\n#: mk/mk_choices.py:47\nmsgid \"Kisela Voda\"\nmsgstr \"Кисела Вода\"\n\n#: mk/mk_choices.py:48\nmsgid \"Kičevo\"\nmsgstr \"Кичево\"\n\n#: mk/mk_choices.py:49\nmsgid \"Konče\"\nmsgstr \"Конче\"\n\n#: mk/mk_choices.py:50\nmsgid \"Koćani\"\nmsgstr \"Кочани\"\n\n#: mk/mk_choices.py:51\nmsgid \"Kratovo\"\nmsgstr \"Кратово\"\n\n#: mk/mk_choices.py:52\nmsgid \"Kriva Palanka\"\nmsgstr \"Крива Паланка\"\n\n#: mk/mk_choices.py:53\nmsgid \"Krivogaštani\"\nmsgstr \"Кривогаштани\"\n\n#: mk/mk_choices.py:54\nmsgid \"Kruševo\"\nmsgstr \"Крушево\"\n\n#: mk/mk_choices.py:55\nmsgid \"Kumanovo\"\nmsgstr \"Куманово\"\n\n#: mk/mk_choices.py:56\nmsgid \"Lipkovo\"\nmsgstr \"Липково\"\n\n#: mk/mk_choices.py:57\nmsgid \"Lozovo\"\nmsgstr \"Лозово\"\n\n#: mk/mk_choices.py:58\nmsgid \"Mavrovo i Rostuša\"\nmsgstr \"Маврово и Ростуша\"\n\n#: mk/mk_choices.py:59\nmsgid \"Makedonska Kamenica\"\nmsgstr \"Македонска Каменица\"\n\n#: mk/mk_choices.py:60\nmsgid \"Makedonski Brod\"\nmsgstr \"Македонски Брод\"\n\n#: mk/mk_choices.py:61\nmsgid \"Mogila\"\nmsgstr \"Могила\"\n\n#: mk/mk_choices.py:62\nmsgid \"Negotino\"\nmsgstr \"Неготино\"\n\n#: mk/mk_choices.py:63\nmsgid \"Novaci\"\nmsgstr \"Новаци\"\n\n#: mk/mk_choices.py:64\nmsgid \"Novo Selo\"\nmsgstr \"Ново Село\"\n\n#: mk/mk_choices.py:65\nmsgid \"Oslomej\"\nmsgstr \"Осломеј\"\n\n#: mk/mk_choices.py:66\nmsgid \"Ohrid\"\nmsgstr \"Охрид\"\n\n#: mk/mk_choices.py:67\nmsgid \"Petrovec\"\nmsgstr \"Петровец\"\n\n#: mk/mk_choices.py:68\nmsgid \"Pehčevo\"\nmsgstr \"Пехчево\"\n\n#: mk/mk_choices.py:69\nmsgid \"Plasnica\"\nmsgstr \"Пласница\"\n\n#: mk/mk_choices.py:70\nmsgid \"Prilep\"\nmsgstr \"Прилеп\"\n\n#: mk/mk_choices.py:71\nmsgid \"Probištip\"\nmsgstr \"Пробиштип\"\n\n#: mk/mk_choices.py:72\nmsgid \"Radoviš\"\nmsgstr \"Радовиш\"\n\n#: mk/mk_choices.py:73\nmsgid \"Rankovce\"\nmsgstr \"Ранковце\"\n\n#: mk/mk_choices.py:74\nmsgid \"Resen\"\nmsgstr \"Ресен\"\n\n#: mk/mk_choices.py:75\nmsgid \"Rosoman\"\nmsgstr \"Росоман\"\n\n#: mk/mk_choices.py:76\nmsgid \"Saraj\"\nmsgstr \"Сарај\"\n\n#: mk/mk_choices.py:77\nmsgid \"Sveti Nikole\"\nmsgstr \"Свети Николе\"\n\n#: mk/mk_choices.py:78\nmsgid \"Sopište\"\nmsgstr \"Сопиште\"\n\n#: mk/mk_choices.py:79\nmsgid \"Star Dojran\"\nmsgstr \"Стар Дојран\"\n\n#: mk/mk_choices.py:80\nmsgid \"Staro Nagoričane\"\nmsgstr \"Старо Нагоричане\"\n\n#: mk/mk_choices.py:81\nmsgid \"Struga\"\nmsgstr \"Струга\"\n\n#: mk/mk_choices.py:82\nmsgid \"Strumica\"\nmsgstr \"Струмица\"\n\n#: mk/mk_choices.py:83\nmsgid \"Studeničani\"\nmsgstr \"Студеничани\"\n\n#: mk/mk_choices.py:84\nmsgid \"Tearce\"\nmsgstr \"Теарце\"\n\n#: mk/mk_choices.py:85\nmsgid \"Tetovo\"\nmsgstr \"Тетово\"\n\n#: mk/mk_choices.py:86\nmsgid \"Centar\"\nmsgstr \"Центар\"\n\n#: mk/mk_choices.py:87\nmsgid \"Centar-Župa\"\nmsgstr \"Центар-Жупа\"\n\n#: mk/mk_choices.py:88\nmsgid \"Čair\"\nmsgstr \"Чаир\"\n\n#: mk/mk_choices.py:89\nmsgid \"Čaška\"\nmsgstr \"Чашка\"\n\n#: mk/mk_choices.py:90\nmsgid \"Češinovo-Obleševo\"\nmsgstr \"Чешиново-Облешево\"\n\n#: mk/mk_choices.py:91\nmsgid \"Čučer-Sandevo\"\nmsgstr \"Чучер-Сандево\"\n\n#: mk/mk_choices.py:92\nmsgid \"Štip\"\nmsgstr \"Штип\"\n\n#: mk/mk_choices.py:93\nmsgid \"Šuto Orizari\"\nmsgstr \"Шуто Оризари\"\n\n#: mk/models.py:11\nmsgid \"Macedonian identity card number\"\nmsgstr \"Македонски број на лична карта\"\n\n#: mk/models.py:25\nmsgid \"A Macedonian municipality (2 character code)\"\nmsgstr \"Македонска општина (2 карактерен код)\"\n\n#: mk/models.py:35\nmsgid \"Unique master citizen number (13 digits)\"\nmsgstr \"Единствен матичен број на граѓанинот (13 цифри)\"\n\n#: mx/forms.py:67\nmsgid \"Enter a valid zip code in the format XXXXX.\"\nmsgstr \"Внесете валиден поштенски код во формат ХХХХХ.\"\n\n#: mx/forms.py:110\nmsgid \"Enter a valid RFC.\"\nmsgstr \"Внесете валиден RFC.\"\n\n#: mx/forms.py:111\nmsgid \"Invalid checksum for RFC.\"\nmsgstr \"Невалидна проверка за RFC.\"\n\n#: mx/forms.py:191\nmsgid \"Enter a valid CURP.\"\nmsgstr \"Внесете валиден CURP.\"\n\n#: mx/forms.py:192\nmsgid \"Invalid checksum for CURP.\"\nmsgstr \"Невалидна проверка за CURP.\"\n\n#: mx/models.py:14\nmsgid \"Mexico state (three uppercase letters)\"\nmsgstr \"Мексичка држава (три големи букви)\"\n\n#: mx/models.py:27\nmsgid \"Mexico zip code\"\nmsgstr \"Мексички поштенски код\"\n\n#: mx/models.py:44\nmsgid \"Mexican RFC\"\nmsgstr \"Мексикански RFC\"\n\n#: mx/models.py:61\nmsgid \"Mexican CURP\"\nmsgstr \"Мексикански CURP\"\n\n#: mx/mx_states.py:14\nmsgid \"Aguascalientes\"\nmsgstr \"Aguascalientes\"\n\n#: mx/mx_states.py:15\nmsgid \"Baja California\"\nmsgstr \"Баја Калифорнија\"\n\n#: mx/mx_states.py:16\nmsgid \"Baja California Sur\"\nmsgstr \"Baja California Sur\"\n\n#: mx/mx_states.py:17\nmsgid \"Campeche\"\nmsgstr \"Кампеш\"\n\n#: mx/mx_states.py:18\nmsgid \"Chihuahua\"\nmsgstr \"Chihuahua\"\n\n#: mx/mx_states.py:19\nmsgid \"Chiapas\"\nmsgstr \"Чиапас\"\n\n#: mx/mx_states.py:20\nmsgid \"Coahuila\"\nmsgstr \"Coahuila\"\n\n#: mx/mx_states.py:21\nmsgid \"Colima\"\nmsgstr \"Колима\"\n\n#: mx/mx_states.py:22\nmsgid \"Distrito Federal\"\nmsgstr \"Distrito Federal\"\n\n#: mx/mx_states.py:23\nmsgid \"Durango\"\nmsgstr \"Дуранго\"\n\n#: mx/mx_states.py:24\nmsgid \"Guerrero\"\nmsgstr \"Гуереро\"\n\n#: mx/mx_states.py:25\nmsgid \"Guanajuato\"\nmsgstr \"Guanajuato\"\n\n#: mx/mx_states.py:26\nmsgid \"Hidalgo\"\nmsgstr \"Хидалго\"\n\n#: mx/mx_states.py:27\nmsgid \"Jalisco\"\nmsgstr \"Џалиско\"\n\n#: mx/mx_states.py:28\nmsgid \"Estado de México\"\nmsgstr \"Estado de México\"\n\n#: mx/mx_states.py:29\nmsgid \"Michoacán\"\nmsgstr \"Michoacán\"\n\n#: mx/mx_states.py:30\nmsgid \"Morelos\"\nmsgstr \"Morelos\"\n\n#: mx/mx_states.py:31\nmsgid \"Nayarit\"\nmsgstr \"Nayarit\"\n\n#: mx/mx_states.py:32\nmsgid \"Nuevo León\"\nmsgstr \"Nuevo León\"\n\n#: mx/mx_states.py:33\nmsgid \"Oaxaca\"\nmsgstr \"Oaxaca\"\n\n#: mx/mx_states.py:34\nmsgid \"Puebla\"\nmsgstr \"Puebla\"\n\n#: mx/mx_states.py:35\nmsgid \"Querétaro\"\nmsgstr \"Querétaro\"\n\n#: mx/mx_states.py:36\nmsgid \"Quintana Roo\"\nmsgstr \"Куантана Ро\"\n\n#: mx/mx_states.py:37\nmsgid \"Sinaloa\"\nmsgstr \"Синалоа\"\n\n#: mx/mx_states.py:38\nmsgid \"San Luis Potosí\"\nmsgstr \"Сан Луис Потоси\"\n\n#: mx/mx_states.py:39\nmsgid \"Sonora\"\nmsgstr \"Сонора\"\n\n#: mx/mx_states.py:40\nmsgid \"Tabasco\"\nmsgstr \"Табаско\"\n\n#: mx/mx_states.py:41\nmsgid \"Tamaulipas\"\nmsgstr \"Тамаулипас\"\n\n#: mx/mx_states.py:42\nmsgid \"Tlaxcala\"\nmsgstr \"Tlaxcala\"\n\n#: mx/mx_states.py:43\nmsgid \"Veracruz\"\nmsgstr \"Веракруз\"\n\n#: mx/mx_states.py:44\nmsgid \"Yucatán\"\nmsgstr \"Јукатан\"\n\n#: mx/mx_states.py:45\nmsgid \"Zacatecas\"\nmsgstr \"Зацатекас\"\n\n#: nl/forms.py:26\nmsgid \"Enter a valid postal code\"\nmsgstr \"Внесете правилен поштенски код\"\n\n#: nl/forms.py:82\nmsgid \"Enter a valid SoFi number\"\nmsgstr \"Внесете валиден осигурителен број\"\n\n#: nl/nl_provinces.py:4\nmsgid \"Drenthe\"\nmsgstr \"Дренте\"\n\n#: nl/nl_provinces.py:5\nmsgid \"Flevoland\"\nmsgstr \"Флеволанд\"\n\n#: nl/nl_provinces.py:6\nmsgid \"Friesland\"\nmsgstr \"Фраисланд\"\n\n#: nl/nl_provinces.py:7\nmsgid \"Gelderland\"\nmsgstr \"Гелдерланд\"\n\n#: nl/nl_provinces.py:8\nmsgid \"Groningen\"\nmsgstr \"Гронинген\"\n\n#: nl/nl_provinces.py:10\nmsgid \"Noord-Brabant\"\nmsgstr \"Noord-Brabant\"\n\n#: nl/nl_provinces.py:11\nmsgid \"Noord-Holland\"\nmsgstr \"Noord-Holland\"\n\n#: nl/nl_provinces.py:12\nmsgid \"Overijssel\"\nmsgstr \"Overijssel\"\n\n#: nl/nl_provinces.py:13\nmsgid \"Utrecht\"\nmsgstr \"Утрехт\"\n\n#: nl/nl_provinces.py:14\nmsgid \"Zeeland\"\nmsgstr \"Зиланд\"\n\n#: nl/nl_provinces.py:15\nmsgid \"Zuid-Holland\"\nmsgstr \"Zuid-Holland\"\n\n#: no/forms.py:39\nmsgid \"Enter a valid Norwegian social security number.\"\nmsgstr \"Ве молам внесете правилен норвешки матичен број.\"\n\n#: pe/forms.py:28\nmsgid \"This field requires 8 digits.\"\nmsgstr \"Во ова поле мора да се внесат 8 цифри.\"\n\n#: pe/forms.py:56\nmsgid \"This field requires 11 digits.\"\nmsgstr \"Во ова поле се потребни 11 цифри.\"\n\n#: pl/forms.py:42\nmsgid \"National Identification Number consists of 11 digits.\"\nmsgstr \"Националниот идентификационен број се состои од 11 цифири.\"\n\n#: pl/forms.py:43\nmsgid \"Wrong checksum for the National Identification Number.\"\nmsgstr \"Погрешна проверка за Националниот идентификационен број.\"\n\n#: pl/forms.py:79\nmsgid \"National ID Card Number consists of 3 letters and 6 digits.\"\nmsgstr \"Број на национална лична карта се состои од 3 букви и 6 цифри.\"\n\n#: pl/forms.py:80\nmsgid \"Wrong checksum for the National ID Card Number.\"\nmsgstr \"Погрешна контролна проверка на бројот на национална лична карта.\"\n\n#: pl/forms.py:131\nmsgid \"\"\n\"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or \"\n\"XXXXXXXXXX.\"\nmsgstr \"\"\n\"Внесете даночен број (НИП) во формат XXX-XXX-XX-XX, XXX-XX-XX-XXX или \"\n\"xxxxxxxxxx.\"\n\n#: pl/forms.py:132\nmsgid \"Wrong checksum for the Tax Number (NIP).\"\nmsgstr \"Даночниот број (NIP) е погрешен.\"\n\n#: pl/forms.py:171\nmsgid \"National Business Register Number (REGON) consists of 9 or 14 digits.\"\nmsgstr \"\"\n\"Националниот бизнис регистрациски број (REGON) се состои од 9 или 14 цифри.\"\n\n#: pl/forms.py:172\nmsgid \"Wrong checksum for the National Business Register Number (REGON).\"\nmsgstr \"\"\n\"Неправилна контролна сум за Националниот бизнис регистрационен број (REGON).\"\n\n#: pl/forms.py:212\nmsgid \"Enter a postal code in the format XX-XXX.\"\nmsgstr \"Внесете правилен поштенски број во формат XX-XXX.\"\n\n#: pl/pl_voivodeships.py:8\nmsgid \"Lower Silesia\"\nmsgstr \"Долна Силесиа\"\n\n#: pl/pl_voivodeships.py:9\nmsgid \"Kuyavia-Pomerania\"\nmsgstr \"Kuyavia-Pomerania\"\n\n#: pl/pl_voivodeships.py:10\nmsgid \"Lublin\"\nmsgstr \"Лублин\"\n\n#: pl/pl_voivodeships.py:11\nmsgid \"Lubusz\"\nmsgstr \"Лубус\"\n\n#: pl/pl_voivodeships.py:12\nmsgid \"Lodz\"\nmsgstr \"Лодз\"\n\n#: pl/pl_voivodeships.py:13\nmsgid \"Lesser Poland\"\nmsgstr \"Lesser Poland\"\n\n#: pl/pl_voivodeships.py:14\nmsgid \"Masovia\"\nmsgstr \"Масовиа\"\n\n#: pl/pl_voivodeships.py:15\nmsgid \"Opole\"\nmsgstr \"Ополе\"\n\n#: pl/pl_voivodeships.py:16\nmsgid \"Subcarpatia\"\nmsgstr \"Субкарпатиа\"\n\n#: pl/pl_voivodeships.py:17\nmsgid \"Podlasie\"\nmsgstr \"Подласи\"\n\n#: pl/pl_voivodeships.py:18\nmsgid \"Pomerania\"\nmsgstr \"Померанија\"\n\n#: pl/pl_voivodeships.py:19\nmsgid \"Silesia\"\nmsgstr \"Силесиа\"\n\n#: pl/pl_voivodeships.py:20\nmsgid \"Swietokrzyskie\"\nmsgstr \"Swietokrzyskie\"\n\n#: pl/pl_voivodeships.py:21\nmsgid \"Warmia-Masuria\"\nmsgstr \"Warmia-Masuria\"\n\n#: pl/pl_voivodeships.py:22\nmsgid \"Greater Poland\"\nmsgstr \"Greater Poland\"\n\n#: pl/pl_voivodeships.py:23\nmsgid \"West Pomerania\"\nmsgstr \"Западна Померанија\"\n\n#: pt/forms.py:19\nmsgid \"Enter a zip code in the format XXXX-XXX.\"\nmsgstr \"Внесете поштенски број во форматот XXXX-XXX.\"\n\n#: pt/forms.py:39\nmsgid \"Phone numbers must have 9 digits, or start by + or 00.\"\nmsgstr \"\"\n\"Телефонските броеви мора да се со 9 цифри, или да почнуваат со + или 00.\"\n\n#: ro/forms.py:22\nmsgid \"Enter a valid CIF.\"\nmsgstr \"Внесете правилен CIF.\"\n\n#: ro/forms.py:59\nmsgid \"Enter a valid CNP.\"\nmsgstr \"Внесете правилен CNP.\"\n\n#: ro/forms.py:143\nmsgid \"Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format\"\nmsgstr \"Внесете правилен IBAN во ROXX-XXXX-XXXX-XXXX-XXXX-XXXX формат\"\n\n#: ro/forms.py:175\nmsgid \"Phone numbers must be in XXXX-XXXXXX format.\"\nmsgstr \"Телефонските броеви мора да бидат во XXXX-XXXXXX форматот.\"\n\n#: ro/forms.py:200\nmsgid \"Enter a valid postal code in the format XXXXXX\"\nmsgstr \"Внесете правилен поштенски код во формат XXXXXX\"\n\n#: ru/forms.py:37\nmsgid \"Enter a postal code in the format XXXXXX.\"\nmsgstr \"Внесете поштенски код во формат XXXXXX.\"\n\n#: ru/forms.py:50\nmsgid \"Enter a passport number in the format XXXX XXXXXX.\"\nmsgstr \"Внесете број на пасош во формат XXXX XXXXXX.\"\n\n#: ru/forms.py:63\nmsgid \"Enter a passport number in the format XX XXXXXXX.\"\nmsgstr \"Внесете број на пасош во формат ХХ XXXXXXX.\"\n\n#: ru/ru_regions.py:10\nmsgid \"Central Federal County\"\nmsgstr \"Central Federal County\"\n\n#: ru/ru_regions.py:11\nmsgid \"South Federal County\"\nmsgstr \"South Federal County\"\n\n#: ru/ru_regions.py:12\nmsgid \"North-West Federal County\"\nmsgstr \"North-West Federal County\"\n\n#: ru/ru_regions.py:13\nmsgid \"Far-East Federal County\"\nmsgstr \"Far-East Federal County\"\n\n#: ru/ru_regions.py:14\nmsgid \"Siberian Federal County\"\nmsgstr \"Siberian Federal County\"\n\n#: ru/ru_regions.py:15\nmsgid \"Ural Federal County\"\nmsgstr \"Ural Federal County\"\n\n#: ru/ru_regions.py:16\nmsgid \"Privolzhsky Federal County\"\nmsgstr \"Privolzhsky Federal County\"\n\n#: ru/ru_regions.py:17\nmsgid \"North-Caucasian Federal County\"\nmsgstr \"North-Caucasian Federal County\"\n\n#: ru/ru_regions.py:21\nmsgid \"Moskva\"\nmsgstr \"Москва\"\n\n#: ru/ru_regions.py:22\nmsgid \"Saint-Peterburg\"\nmsgstr \"Санкт Петербург\"\n\n#: ru/ru_regions.py:23\nmsgid \"Moskovskaya oblast'\"\nmsgstr \"Moskovskaya oblast'\"\n\n#: ru/ru_regions.py:24\nmsgid \"Adygeya, Respublika\"\nmsgstr \"Adygeya, Respublika\"\n\n#: ru/ru_regions.py:25\nmsgid \"Bashkortostan, Respublika\"\nmsgstr \"Bashkortostan, Respublika\"\n\n#: ru/ru_regions.py:26\nmsgid \"Buryatia, Respublika\"\nmsgstr \"Buryatia, Respublika\"\n\n#: ru/ru_regions.py:27\nmsgid \"Altay, Respublika\"\nmsgstr \"Altay, Respublika\"\n\n#: ru/ru_regions.py:28\nmsgid \"Dagestan, Respublika\"\nmsgstr \"Dagestan, Respublika\"\n\n#: ru/ru_regions.py:29\nmsgid \"Ingushskaya Respublika\"\nmsgstr \"Ingushskaya Respublika\"\n\n#: ru/ru_regions.py:30\nmsgid \"Kabardino-Balkarskaya Respublika\"\nmsgstr \"Kabardino-Balkarskaya Respublika\"\n\n#: ru/ru_regions.py:31\nmsgid \"Kalmykia, Respublika\"\nmsgstr \"Kalmykia, Respublika\"\n\n#: ru/ru_regions.py:32\nmsgid \"Karachaevo-Cherkesskaya Respublika\"\nmsgstr \"Karachaevo-Cherkesskaya Respublika\"\n\n#: ru/ru_regions.py:33\nmsgid \"Karelia, Respublika\"\nmsgstr \"Karelia, Respublika\"\n\n#: ru/ru_regions.py:34\nmsgid \"Komi, Respublika\"\nmsgstr \"Komi, Respublika\"\n\n#: ru/ru_regions.py:35\nmsgid \"Mariy Ehl, Respublika\"\nmsgstr \"Mariy Ehl, Respublika\"\n\n#: ru/ru_regions.py:36\nmsgid \"Mordovia, Respublika\"\nmsgstr \"Mordovia, Respublika\"\n\n#: ru/ru_regions.py:37\nmsgid \"Sakha, Respublika (Yakutiya)\"\nmsgstr \"Sakha, Respublika (Yakutiya)\"\n\n#: ru/ru_regions.py:38\nmsgid \"Severnaya Osetia, Respublika (Alania)\"\nmsgstr \"Severnaya Osetia, Respublika (Alania)\"\n\n#: ru/ru_regions.py:39\nmsgid \"Tatarstan, Respublika\"\nmsgstr \"Tatarstan, Respublika\"\n\n#: ru/ru_regions.py:40\nmsgid \"Tyva, Respublika (Tuva)\"\nmsgstr \"Tyva, Respublika (Tuva)\"\n\n#: ru/ru_regions.py:41\nmsgid \"Udmurtskaya Respublika\"\nmsgstr \"Udmurtskaya Respublika\"\n\n#: ru/ru_regions.py:42\nmsgid \"Khakassiya, Respublika\"\nmsgstr \"Khakassiya, Respublika\"\n\n#: ru/ru_regions.py:43\nmsgid \"Chechenskaya Respublika\"\nmsgstr \"Chechenskaya Respublika\"\n\n#: ru/ru_regions.py:44\nmsgid \"Chuvashskaya Respublika\"\nmsgstr \"Chuvashskaya Respublika\"\n\n#: ru/ru_regions.py:45\nmsgid \"Altayskiy Kray\"\nmsgstr \"Altayskiy Kray\"\n\n#: ru/ru_regions.py:46\nmsgid \"Zabaykalskiy Kray\"\nmsgstr \"Zabaykalskiy Kray\"\n\n#: ru/ru_regions.py:47\nmsgid \"Kamchatskiy Kray\"\nmsgstr \"Kamchatskiy kray\"\n\n#: ru/ru_regions.py:48\nmsgid \"Krasnodarskiy Kray\"\nmsgstr \"Krasnodarskiy Kray\"\n\n#: ru/ru_regions.py:49\nmsgid \"Krasnoyarskiy Kray\"\nmsgstr \"Krasnoyarskiy kray\"\n\n#: ru/ru_regions.py:50\nmsgid \"Permskiy Kray\"\nmsgstr \"Permskiy Kray\"\n\n#: ru/ru_regions.py:51\nmsgid \"Primorskiy Kray\"\nmsgstr \"Primorskiy Kray\"\n\n#: ru/ru_regions.py:52\nmsgid \"Stavropol'siyy Kray\"\nmsgstr \"Stavropol'siyy Kray\"\n\n#: ru/ru_regions.py:53\nmsgid \"Khabarovskiy Kray\"\nmsgstr \"Khabarovskiy Kray\"\n\n#: ru/ru_regions.py:54\nmsgid \"Amurskaya oblast'\"\nmsgstr \"Amurskaya oblast'\"\n\n#: ru/ru_regions.py:55\nmsgid \"Arkhangel'skaya oblast'\"\nmsgstr \"Arkhangel'skaya oblast'\"\n\n#: ru/ru_regions.py:56\nmsgid \"Astrakhanskaya oblast'\"\nmsgstr \"Astrakhanskaya oblast'\"\n\n#: ru/ru_regions.py:57\nmsgid \"Belgorodskaya oblast'\"\nmsgstr \"Belgorodskaya oblast'\"\n\n#: ru/ru_regions.py:58\nmsgid \"Bryanskaya oblast'\"\nmsgstr \"Bryanskaya oblast'\"\n\n#: ru/ru_regions.py:59\nmsgid \"Vladimirskaya oblast'\"\nmsgstr \"Vladimirskaya oblast'\"\n\n#: ru/ru_regions.py:60\nmsgid \"Volgogradskaya oblast'\"\nmsgstr \"Volgogradskaya oblast'\"\n\n#: ru/ru_regions.py:61\nmsgid \"Vologodskaya oblast'\"\nmsgstr \"Vologodskaya oblast'\"\n\n#: ru/ru_regions.py:62\nmsgid \"Voronezhskaya oblast'\"\nmsgstr \"Voronezhskaya oblast'\"\n\n#: ru/ru_regions.py:63\nmsgid \"Ivanovskaya oblast'\"\nmsgstr \"Ivanovskaya oblast'\"\n\n#: ru/ru_regions.py:64\nmsgid \"Irkutskaya oblast'\"\nmsgstr \"Irkutskaya oblast'\"\n\n#: ru/ru_regions.py:65\nmsgid \"Kaliningradskaya oblast'\"\nmsgstr \"Kaliningradskaya oblast'\"\n\n#: ru/ru_regions.py:66\nmsgid \"Kaluzhskaya oblast'\"\nmsgstr \"Kaluzhskaya oblast'\"\n\n#: ru/ru_regions.py:67\nmsgid \"Kemerovskaya oblast'\"\nmsgstr \"Kemerovskaya oblast'\"\n\n#: ru/ru_regions.py:68\nmsgid \"Kirovskaya oblast'\"\nmsgstr \"Kirovskaya oblast'\"\n\n#: ru/ru_regions.py:69\nmsgid \"Kostromskaya oblast'\"\nmsgstr \"Kostromskaya oblast'\"\n\n#: ru/ru_regions.py:70\nmsgid \"Kurganskaya oblast'\"\nmsgstr \"Kurganskaya oblast'\"\n\n#: ru/ru_regions.py:71\nmsgid \"Kurskaya oblast'\"\nmsgstr \"Kurskaya oblast'\"\n\n#: ru/ru_regions.py:72\nmsgid \"Leningradskaya oblast'\"\nmsgstr \"Leningradskaya oblast'\"\n\n#: ru/ru_regions.py:73\nmsgid \"Lipeckaya oblast'\"\nmsgstr \"Lipeckaya oblast'\"\n\n#: ru/ru_regions.py:74\nmsgid \"Magadanskaya oblast'\"\nmsgstr \"Magadanskaya oblast'\"\n\n#: ru/ru_regions.py:75\nmsgid \"Murmanskaya oblast'\"\nmsgstr \"Murmanskaya oblast'\"\n\n#: ru/ru_regions.py:76\nmsgid \"Nizhegorodskaja oblast'\"\nmsgstr \"Nizhegorodskaja oblast'\"\n\n#: ru/ru_regions.py:77\nmsgid \"Novgorodskaya oblast'\"\nmsgstr \"Novgorodskaya oblast'\"\n\n#: ru/ru_regions.py:78\nmsgid \"Novosibirskaya oblast'\"\nmsgstr \"Novosibirskaya oblast'\"\n\n#: ru/ru_regions.py:79\nmsgid \"Omskaya oblast'\"\nmsgstr \"Omskaya oblast'\"\n\n#: ru/ru_regions.py:80\nmsgid \"Orenburgskaya oblast'\"\nmsgstr \"Orenburgskaya oblast'\"\n\n#: ru/ru_regions.py:81\nmsgid \"Orlovskaya oblast'\"\nmsgstr \"Orlovskaya oblast'\"\n\n#: ru/ru_regions.py:82\nmsgid \"Penzenskaya oblast'\"\nmsgstr \"Penzenskaya oblast'\"\n\n#: ru/ru_regions.py:83\nmsgid \"Pskovskaya oblast'\"\nmsgstr \"Pskovskaya oblast'\"\n\n#: ru/ru_regions.py:84\nmsgid \"Rostovskaya oblast'\"\nmsgstr \"Rostovskaya oblast'\"\n\n#: ru/ru_regions.py:85\nmsgid \"Rjazanskaya oblast'\"\nmsgstr \"Rjazanskaya oblast'\"\n\n#: ru/ru_regions.py:86\nmsgid \"Samarskaya oblast'\"\nmsgstr \"Samarskaya oblast'\"\n\n#: ru/ru_regions.py:87\nmsgid \"Saratovskaya oblast'\"\nmsgstr \"Saratovskaya oblast'\"\n\n#: ru/ru_regions.py:88\nmsgid \"Sakhalinskaya oblast'\"\nmsgstr \"Sakhalinskaya oblast'\"\n\n#: ru/ru_regions.py:89\nmsgid \"Sverdlovskaya oblast'\"\nmsgstr \"Sverdlovskaya oblast'\"\n\n#: ru/ru_regions.py:90\nmsgid \"Smolenskaya oblast'\"\nmsgstr \"Smolenskaya oblast'\"\n\n#: ru/ru_regions.py:91\nmsgid \"Tambovskaya oblast'\"\nmsgstr \"Tambovskaya oblast'\"\n\n#: ru/ru_regions.py:92\nmsgid \"Tverskaya oblast'\"\nmsgstr \"Tverskaya oblast'\"\n\n#: ru/ru_regions.py:93\nmsgid \"Tomskaya oblast'\"\nmsgstr \"Tomskaya oblast'\"\n\n#: ru/ru_regions.py:94\nmsgid \"Tul'skaya oblast'\"\nmsgstr \"Tul'skaya oblast'\"\n\n#: ru/ru_regions.py:95\nmsgid \"Tyumenskaya oblast'\"\nmsgstr \"Tyumenskaya oblast'\"\n\n#: ru/ru_regions.py:96\nmsgid \"Ul'ianovskaya oblast'\"\nmsgstr \"Ul'ianovskaya oblast'\"\n\n#: ru/ru_regions.py:97\nmsgid \"Chelyabinskaya oblast'\"\nmsgstr \"Chelyabinskaya oblast'\"\n\n#: ru/ru_regions.py:98\nmsgid \"Yaroslavskaya oblast'\"\nmsgstr \"Yaroslavskaya oblast'\"\n\n#: ru/ru_regions.py:99\nmsgid \"Evreyskaya avtonomnaja oblast'\"\nmsgstr \"Evreyskaya avtonomnaja oblast'\"\n\n#: ru/ru_regions.py:100\nmsgid \"Neneckiy autonomnyy okrug\"\nmsgstr \"Neneckiy autonomnyy okrug\"\n\n#: ru/ru_regions.py:101\nmsgid \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\nmsgstr \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\n\n#: ru/ru_regions.py:102\nmsgid \"Chukotskiy avtonomnyy okrug\"\nmsgstr \"Chukotskiy avtonomnyy okrug\"\n\n#: ru/ru_regions.py:103\nmsgid \"Yamalo-Neneckiy avtonomnyy okrug\"\nmsgstr \"Yamalo-Neneckiy avtonomnyy okrug\"\n\n#: se/forms.py:54\nmsgid \"Enter a valid Swedish organisation number.\"\nmsgstr \"Внесете број на шведска организација.\"\n\n#: se/forms.py:111\nmsgid \"Enter a valid Swedish personal identity number.\"\nmsgstr \"Внесте правилен шведски матичен број.\"\n\n#: se/forms.py:112\nmsgid \"Co-ordination numbers are not allowed.\"\nmsgstr \"Координациски броеви не се дозволени.\"\n\n#: se/forms.py:154\nmsgid \"Enter a Swedish postal code in the format XXXXX.\"\nmsgstr \"Внесете правилен шведски поштенски број во формат XXXXX.\"\n\n#: se/se_counties.py:16\nmsgid \"Stockholm\"\nmsgstr \"Стокхолм\"\n\n#: se/se_counties.py:17\nmsgid \"Västerbotten\"\nmsgstr \"Вестерботен\"\n\n#: se/se_counties.py:18\nmsgid \"Norrbotten\"\nmsgstr \"Норботен\"\n\n#: se/se_counties.py:19\nmsgid \"Uppsala\"\nmsgstr \"Упсала\"\n\n#: se/se_counties.py:20\nmsgid \"Södermanland\"\nmsgstr \"Содерманланд\"\n\n#: se/se_counties.py:21\nmsgid \"Östergötland\"\nmsgstr \"Остерготланд\"\n\n#: se/se_counties.py:22\nmsgid \"Jönköping\"\nmsgstr \"Јонкопинг\"\n\n#: se/se_counties.py:23\nmsgid \"Kronoberg\"\nmsgstr \"Кроненберг\"\n\n#: se/se_counties.py:24\nmsgid \"Kalmar\"\nmsgstr \"Калмар\"\n\n#: se/se_counties.py:25\nmsgid \"Gotland\"\nmsgstr \"Готланд\"\n\n#: se/se_counties.py:26\nmsgid \"Blekinge\"\nmsgstr \"Блекинге\"\n\n#: se/se_counties.py:27\nmsgid \"Skåne\"\nmsgstr \"Скане\"\n\n#: se/se_counties.py:28\nmsgid \"Halland\"\nmsgstr \"Халанд\"\n\n#: se/se_counties.py:29\nmsgid \"Västra Götaland\"\nmsgstr \"Вестра Готаланд\"\n\n#: se/se_counties.py:30\nmsgid \"Värmland\"\nmsgstr \"Вермленд\"\n\n#: se/se_counties.py:31\nmsgid \"Örebro\"\nmsgstr \"Оребро\"\n\n#: se/se_counties.py:32\nmsgid \"Västmanland\"\nmsgstr \"Вестменланд\"\n\n#: se/se_counties.py:33\nmsgid \"Dalarna\"\nmsgstr \"Даларна\"\n\n#: se/se_counties.py:34\nmsgid \"Gävleborg\"\nmsgstr \"Гевлеборг\"\n\n#: se/se_counties.py:35\nmsgid \"Västernorrland\"\nmsgstr \"Вестернорланд\"\n\n#: se/se_counties.py:36\nmsgid \"Jämtland\"\nmsgstr \"Јемтланд\"\n\n#: si/forms.py:25\nmsgid \"The first 7 digits of the EMSO must represent a valid past date.\"\nmsgstr \"\"\n\"Првите 7 бројки од ЕМБГ мора да претставуваат валидна дата од минатото.\"\n\n#: si/forms.py:26\nmsgid \"The EMSO is not valid.\"\nmsgstr \"ЕМБГ не е валиден.\"\n\n#: si/forms.py:86\nmsgid \"Enter a valid tax number in form SIXXXXXXXX\"\nmsgstr \"Внесете валиден даночен број во форма SIXXXXXXXX\"\n\n#: si/forms.py:151\nmsgid \"Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.\"\nmsgstr \"Внесете телефонски број во форма +386XXXXXXXX или 0XXXXXXXX.\"\n\n#: sk/sk_districts.py:8\nmsgid \"Banska Bystrica\"\nmsgstr \"Банска Бистрица\"\n\n#: sk/sk_districts.py:9\nmsgid \"Banska Stiavnica\"\nmsgstr \"Банска Стиавница\"\n\n#: sk/sk_districts.py:10\nmsgid \"Bardejov\"\nmsgstr \"Бардејов\"\n\n#: sk/sk_districts.py:11\nmsgid \"Banovce nad Bebravou\"\nmsgstr \"Бановце над Бебраво\"\n\n#: sk/sk_districts.py:12\nmsgid \"Brezno\"\nmsgstr \"Брезно\"\n\n#: sk/sk_districts.py:13\nmsgid \"Bratislava I\"\nmsgstr \"Братислава I\"\n\n#: sk/sk_districts.py:14\nmsgid \"Bratislava II\"\nmsgstr \"Братислава II\"\n\n#: sk/sk_districts.py:15\nmsgid \"Bratislava III\"\nmsgstr \"Братислава III\"\n\n#: sk/sk_districts.py:16\nmsgid \"Bratislava IV\"\nmsgstr \"Братислава IV\"\n\n#: sk/sk_districts.py:17\nmsgid \"Bratislava V\"\nmsgstr \"Братислава V\"\n\n#: sk/sk_districts.py:18\nmsgid \"Bytca\"\nmsgstr \"Битка\"\n\n#: sk/sk_districts.py:19\nmsgid \"Cadca\"\nmsgstr \"Кадка\"\n\n#: sk/sk_districts.py:20\nmsgid \"Detva\"\nmsgstr \"Детва\"\n\n#: sk/sk_districts.py:21\nmsgid \"Dolny Kubin\"\nmsgstr \"Dolny Kubin\"\n\n#: sk/sk_districts.py:22\nmsgid \"Dunajska Streda\"\nmsgstr \"Dunajska Streda\"\n\n#: sk/sk_districts.py:23\nmsgid \"Galanta\"\nmsgstr \"Galanta\"\n\n#: sk/sk_districts.py:24\nmsgid \"Gelnica\"\nmsgstr \"Гелника\"\n\n#: sk/sk_districts.py:25\nmsgid \"Hlohovec\"\nmsgstr \"Хлоховец\"\n\n#: sk/sk_districts.py:26\nmsgid \"Humenne\"\nmsgstr \"Хумен\"\n\n#: sk/sk_districts.py:27\nmsgid \"Ilava\"\nmsgstr \"Ilava\"\n\n#: sk/sk_districts.py:28\nmsgid \"Kezmarok\"\nmsgstr \"Кезмарок\"\n\n#: sk/sk_districts.py:29\nmsgid \"Komarno\"\nmsgstr \"Комарно\"\n\n#: sk/sk_districts.py:30\nmsgid \"Kosice I\"\nmsgstr \"Кошице I\"\n\n#: sk/sk_districts.py:31\nmsgid \"Kosice II\"\nmsgstr \"Кошице II\"\n\n#: sk/sk_districts.py:32\nmsgid \"Kosice III\"\nmsgstr \"Кошице III\"\n\n#: sk/sk_districts.py:33\nmsgid \"Kosice IV\"\nmsgstr \"Кошице IV\"\n\n#: sk/sk_districts.py:34\nmsgid \"Kosice - okolie\"\nmsgstr \"Кошице - околина\"\n\n#: sk/sk_districts.py:35\nmsgid \"Krupina\"\nmsgstr \"Крупина\"\n\n#: sk/sk_districts.py:36\nmsgid \"Kysucke Nove Mesto\"\nmsgstr \"Kysucke Nove Mesto\"\n\n#: sk/sk_districts.py:37\nmsgid \"Levice\"\nmsgstr \"Левице\"\n\n#: sk/sk_districts.py:38\nmsgid \"Levoca\"\nmsgstr \"Левока\"\n\n#: sk/sk_districts.py:39\nmsgid \"Liptovsky Mikulas\"\nmsgstr \"Liptovsky Mikulas\"\n\n#: sk/sk_districts.py:40\nmsgid \"Lucenec\"\nmsgstr \"Луценец\"\n\n#: sk/sk_districts.py:41\nmsgid \"Malacky\"\nmsgstr \"Malacky\"\n\n#: sk/sk_districts.py:42\nmsgid \"Martin\"\nmsgstr \"Мартин\"\n\n#: sk/sk_districts.py:43\nmsgid \"Medzilaborce\"\nmsgstr \"Medzilaborce\"\n\n#: sk/sk_districts.py:44\nmsgid \"Michalovce\"\nmsgstr \"Michalovce\"\n\n#: sk/sk_districts.py:45\nmsgid \"Myjava\"\nmsgstr \"Myjava\"\n\n#: sk/sk_districts.py:46\nmsgid \"Namestovo\"\nmsgstr \"Наместово\"\n\n#: sk/sk_districts.py:47\nmsgid \"Nitra\"\nmsgstr \"Нитра\"\n\n#: sk/sk_districts.py:48\nmsgid \"Nove Mesto nad Vahom\"\nmsgstr \"Nove Mesto nad Vahom\"\n\n#: sk/sk_districts.py:49\nmsgid \"Nove Zamky\"\nmsgstr \"Nove Zamky\"\n\n#: sk/sk_districts.py:50\nmsgid \"Partizanske\"\nmsgstr \"Партизанске\"\n\n#: sk/sk_districts.py:51\nmsgid \"Pezinok\"\nmsgstr \"Пезинок\"\n\n#: sk/sk_districts.py:52\nmsgid \"Piestany\"\nmsgstr \"Piestany\"\n\n#: sk/sk_districts.py:53\nmsgid \"Poltar\"\nmsgstr \"Полтар\"\n\n#: sk/sk_districts.py:54\nmsgid \"Poprad\"\nmsgstr \"Попрад\"\n\n#: sk/sk_districts.py:55\nmsgid \"Povazska Bystrica\"\nmsgstr \"Povazska Bystrica\"\n\n#: sk/sk_districts.py:56\nmsgid \"Presov\"\nmsgstr \"Пресов\"\n\n#: sk/sk_districts.py:57\nmsgid \"Prievidza\"\nmsgstr \"Prievidza\"\n\n#: sk/sk_districts.py:58\nmsgid \"Puchov\"\nmsgstr \"Пучов\"\n\n#: sk/sk_districts.py:59\nmsgid \"Revuca\"\nmsgstr \"Ревука\"\n\n#: sk/sk_districts.py:60\nmsgid \"Rimavska Sobota\"\nmsgstr \"Rimavska Sobota\"\n\n#: sk/sk_districts.py:61\nmsgid \"Roznava\"\nmsgstr \"Рознава\"\n\n#: sk/sk_districts.py:62\nmsgid \"Ruzomberok\"\nmsgstr \"Рузомберок\"\n\n#: sk/sk_districts.py:63\nmsgid \"Sabinov\"\nmsgstr \"Сабинов\"\n\n#: sk/sk_districts.py:64\nmsgid \"Senec\"\nmsgstr \"Сенец\"\n\n#: sk/sk_districts.py:65\nmsgid \"Senica\"\nmsgstr \"Сеника\"\n\n#: sk/sk_districts.py:66\nmsgid \"Skalica\"\nmsgstr \"Скалица\"\n\n#: sk/sk_districts.py:67\nmsgid \"Snina\"\nmsgstr \"Шнина\"\n\n#: sk/sk_districts.py:68\nmsgid \"Sobrance\"\nmsgstr \"Собранце\"\n\n#: sk/sk_districts.py:69\nmsgid \"Spisska Nova Ves\"\nmsgstr \"Spisska Nova Ves\"\n\n#: sk/sk_districts.py:70\nmsgid \"Stara Lubovna\"\nmsgstr \"Стара Љубовна\"\n\n#: sk/sk_districts.py:71\nmsgid \"Stropkov\"\nmsgstr \"Стропков\"\n\n#: sk/sk_districts.py:72\nmsgid \"Svidnik\"\nmsgstr \"Свидник\"\n\n#: sk/sk_districts.py:73\nmsgid \"Sala\"\nmsgstr \"Сала\"\n\n#: sk/sk_districts.py:74\nmsgid \"Topolcany\"\nmsgstr \"Тополчани\"\n\n#: sk/sk_districts.py:75\nmsgid \"Trebisov\"\nmsgstr \"Требисов\"\n\n#: sk/sk_districts.py:76\nmsgid \"Trencin\"\nmsgstr \"Тренцин\"\n\n#: sk/sk_districts.py:77\nmsgid \"Trnava\"\nmsgstr \"Трнава\"\n\n#: sk/sk_districts.py:78\nmsgid \"Turcianske Teplice\"\nmsgstr \"Turcianske Teplice\"\n\n#: sk/sk_districts.py:79\nmsgid \"Tvrdosin\"\nmsgstr \"Тврдосин\"\n\n#: sk/sk_districts.py:80\nmsgid \"Velky Krtis\"\nmsgstr \"Velky Krtis\"\n\n#: sk/sk_districts.py:81\nmsgid \"Vranov nad Toplou\"\nmsgstr \"Vranov nad Toplou\"\n\n#: sk/sk_districts.py:82\nmsgid \"Zlate Moravce\"\nmsgstr \"Злате Моравце\"\n\n#: sk/sk_districts.py:83\nmsgid \"Zvolen\"\nmsgstr \"Зволен\"\n\n#: sk/sk_districts.py:84\nmsgid \"Zarnovica\"\nmsgstr \"Зарновица\"\n\n#: sk/sk_districts.py:85\nmsgid \"Ziar nad Hronom\"\nmsgstr \"Ziar nad Hronom\"\n\n#: sk/sk_districts.py:86\nmsgid \"Zilina\"\nmsgstr \"Зилина\"\n\n#: sk/sk_regions.py:8\nmsgid \"Banska Bystrica region\"\nmsgstr \"Banska Bystrica region\"\n\n#: sk/sk_regions.py:9\nmsgid \"Bratislava region\"\nmsgstr \"Братиславски регион\"\n\n#: sk/sk_regions.py:10\nmsgid \"Kosice region\"\nmsgstr \"Кошице регион\"\n\n#: sk/sk_regions.py:11\nmsgid \"Nitra region\"\nmsgstr \"Нитра регион\"\n\n#: sk/sk_regions.py:12\nmsgid \"Presov region\"\nmsgstr \"Пресов регион\"\n\n#: sk/sk_regions.py:13\nmsgid \"Trencin region\"\nmsgstr \"Тренцин регион\"\n\n#: sk/sk_regions.py:14\nmsgid \"Trnava region\"\nmsgstr \"Трнава регион\"\n\n#: sk/sk_regions.py:15\nmsgid \"Zilina region\"\nmsgstr \"Зилина регион\"\n\n#: tr/forms.py:21\nmsgid \"Enter a postal code in the format XXXXX.\"\nmsgstr \"Внесете поштенски код во форматот XXXXX.\"\n\n#: tr/forms.py:42\nmsgid \"Phone numbers must be in 0XXX XXX XXXX format.\"\nmsgstr \"Телефонските броеви мора да бидат во форматот 0XXX XXX XXXX.\"\n\n#: tr/forms.py:69\nmsgid \"Enter a valid Turkish Identification number.\"\nmsgstr \"Внесете валиден Турски идентификациски број.\"\n\n#: tr/forms.py:70\nmsgid \"Turkish Identification number must be 11 digits.\"\nmsgstr \"Турскиот идентификациски број мора да биде 11 цифри.\"\n\n#: us/forms.py:21\nmsgid \"Enter a zip code in the format XXXXX or XXXXX-XXXX.\"\nmsgstr \"Внесете поштенски број во форматот XXXXX или XXXXX-XXXX.\"\n\n#: us/forms.py:59\nmsgid \"Enter a valid U.S. Social Security number in XXX-XX-XXXX format.\"\nmsgstr \"Внесте правилен матичен број за САД во XXX-XX-XXXX форматот.\"\n\n#: us/forms.py:92\nmsgid \"Enter a U.S. state or territory.\"\nmsgstr \"Внесете држава или територија од САД.\"\n\n#: us/models.py:8\nmsgid \"U.S. state (two uppercase letters)\"\nmsgstr \"Држава во САД (две големи букви)\"\n\n#: us/models.py:17\nmsgid \"U.S. postal code (two uppercase letters)\"\nmsgstr \"Поштенски код во САД (две големи букви)\"\n\n#: us/models.py:26\nmsgid \"Phone number\"\nmsgstr \"Телефонски број\"\n\n#: uy/forms.py:29\nmsgid \"Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.\"\nmsgstr \"Внесете правилен CI во X.XXX.XXX-X,XXXXXXX-X или XXXXXXXX формат.\"\n\n#: uy/forms.py:31\nmsgid \"Enter a valid CI number.\"\nmsgstr \"Внесете правилен CI број.\"\n\n#: za/forms.py:22\nmsgid \"Enter a valid South African ID number\"\nmsgstr \"Внесете правилен јужно афрички број за идентификација\"\n\n#: za/forms.py:56\nmsgid \"Enter a valid South African postal code\"\nmsgstr \"Внесете правилен јужно афрички поштенски код\"\n\n#: za/za_provinces.py:4\nmsgid \"Eastern Cape\"\nmsgstr \"Источен Кејп\"\n\n#: za/za_provinces.py:5\nmsgid \"Free State\"\nmsgstr \"Free State\"\n\n#: za/za_provinces.py:6\nmsgid \"Gauteng\"\nmsgstr \"Gauteng\"\n\n#: za/za_provinces.py:7\nmsgid \"KwaZulu-Natal\"\nmsgstr \"KwaZulu-Natal\"\n\n#: za/za_provinces.py:8\nmsgid \"Limpopo\"\nmsgstr \"Limpopo\"\n\n#: za/za_provinces.py:9\nmsgid \"Mpumalanga\"\nmsgstr \"Mpumalanga\"\n\n#: za/za_provinces.py:10\nmsgid \"Northern Cape\"\nmsgstr \"Northern Cape\"\n\n#: za/za_provinces.py:11\nmsgid \"North West\"\nmsgstr \"North West\"\n\n#: za/za_provinces.py:12\nmsgid \"Western Cape\"\nmsgstr \"Western Cape\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/locale/mn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# badka <badral214@gmail.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <jargalanch@gmail.com>, 2012.\n# miigaa ... <b.myagmardorj@gmail.com>, 2012.\n#   <mnts26@gmail.com>, 2011.\n# Tsolmon <mnts26@gmail.com>, 2011.\n#   <zolzaya.erdenebaatar@gmail.com>, 2011.\n# Анхбаяр Анхаа <l.ankhbayar@gmail.com>, 2011-2012.\n# Баясгалан Цэвлээ <bayasaa_7672@yahoo.com>, 2011, 2012.\n# Ганзориг БП <ganzo.bp@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-11-29 13:11+0000\\n\"\n\"Last-Translator: Анхбаяр Анхаа <l.ankhbayar@gmail.com>\\n\"\n\"Language-Team: Mongolian (http://www.transifex.com/projects/p/django/\"\n\"language/mn/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: mn\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: ar/forms.py:30\nmsgid \"Enter a postal code in the format NNNN or ANNNNAAA.\"\nmsgstr \"Шуудангийн дугаараа NNNN буюу ANNNNAAA хэлбэрээр оруулна уу. \"\n\n#: ar/forms.py:52 br/forms.py:95 br/forms.py:134 pe/forms.py:27 pe/forms.py:55\nmsgid \"This field requires only numbers.\"\nmsgstr \"Энэ хэсэгт зөвхөн тоо оруулна.\"\n\n#: ar/forms.py:53\nmsgid \"This field requires 7 or 8 digits.\"\nmsgstr \"Энэ хэсэгт зөвхөн 7-8 оронтой тоо оруулна.\"\n\n#: ar/forms.py:82\nmsgid \"Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.\"\nmsgstr \"CUIT-ээ XX-XXXXXXXX-X эсвэл XXXXXXXXXXXX хэлбэрээр оруулна уу.\"\n\n#: ar/forms.py:83\nmsgid \"Invalid CUIT.\"\nmsgstr \"Хүчингүй CUIT байна.\"\n\n#: ar/forms.py:84\nmsgid \"Invalid legal type. Type must be 27, 20, 23 or 30.\"\nmsgstr \"Хуулийн төрөл буруу байна.  27, 20, 23, 30 ийн аль нэг байх ёстой.\"\n\n#: at/at_states.py:5\nmsgid \"Burgenland\"\nmsgstr \"Бургенланд\"\n\n#: at/at_states.py:6\nmsgid \"Carinthia\"\nmsgstr \"Каринтиа\"\n\n#: at/at_states.py:7\nmsgid \"Lower Austria\"\nmsgstr \"Доод Австри\"\n\n#: at/at_states.py:8\nmsgid \"Upper Austria\"\nmsgstr \"Дээд Австри\"\n\n#: at/at_states.py:9\nmsgid \"Salzburg\"\nmsgstr \"Зальцбург\"\n\n#: at/at_states.py:10\nmsgid \"Styria\"\nmsgstr \"Стириа\"\n\n#: at/at_states.py:11\nmsgid \"Tyrol\"\nmsgstr \"Тирол\"\n\n#: at/at_states.py:12\nmsgid \"Vorarlberg\"\nmsgstr \"Ворарлберг\"\n\n#: at/at_states.py:13\nmsgid \"Vienna\"\nmsgstr \"Венн\"\n\n#: at/forms.py:22 ch/forms.py:22 no/forms.py:19\nmsgid \"Enter a zip code in the format XXXX.\"\nmsgstr \"Шуудангийн индексээ XXXX хэлбэрээр оруулна уу.\"\n\n#: at/forms.py:50\nmsgid \"Enter a valid Austrian Social Security Number in XXXX XXXXXX format.\"\nmsgstr \"\"\n\"Австрийн нийгмийн хамгааллын дугаараа XXXX XXXXXX хэлбэрээр оруулна уу.\"\n\n#: au/forms.py:26\nmsgid \"Enter a 4 digit postcode.\"\nmsgstr \"Шуудангийн код 4 тоог оруулна уу.\"\n\n#: au/models.py:9\nmsgid \"Australian State\"\nmsgstr \"Австралийн муж\"\n\n#: au/models.py:19\nmsgid \"Australian Postcode\"\nmsgstr \"Австралийн шуудангийн код\"\n\n#: au/models.py:33\nmsgid \"Australian Phone number\"\nmsgstr \"Австралийн утасны дугаар\"\n\n#: be/be_provinces.py:5\nmsgid \"Antwerp\"\nmsgstr \"Антверп\"\n\n#: be/be_provinces.py:6\nmsgid \"Brussels\"\nmsgstr \"Бруссель\"\n\n#: be/be_provinces.py:7\nmsgid \"East Flanders\"\nmsgstr \"Зүүн Пландерс\"\n\n#: be/be_provinces.py:8\nmsgid \"Flemish Brabant\"\nmsgstr \"Фламанд Брабант\"\n\n#: be/be_provinces.py:9\nmsgid \"Hainaut\"\nmsgstr \"Хайнаут\"\n\n#: be/be_provinces.py:10\nmsgid \"Liege\"\nmsgstr \"Лэйге\"\n\n#: be/be_provinces.py:11 nl/nl_provinces.py:9\nmsgid \"Limburg\"\nmsgstr \"Лимбург\"\n\n#: be/be_provinces.py:12\nmsgid \"Luxembourg\"\nmsgstr \"Люксенбург\"\n\n#: be/be_provinces.py:13\nmsgid \"Namur\"\nmsgstr \"Намур\"\n\n#: be/be_provinces.py:14\nmsgid \"Walloon Brabant\"\nmsgstr \"Валлон Брабант\"\n\n#: be/be_provinces.py:15\nmsgid \"West Flanders\"\nmsgstr \"Баруун Пландерс\"\n\n#: be/be_regions.py:5\nmsgid \"Brussels Capital Region\"\nmsgstr \"Бурвэйл үндсэн муж\"\n\n#: be/be_regions.py:6\nmsgid \"Flemish Region\"\nmsgstr \"Флемиш муж\"\n\n#: be/be_regions.py:7\nmsgid \"Wallonia\"\nmsgstr \"Валлониа\"\n\n#: be/forms.py:25\nmsgid \"Enter a valid postal code in the range and format 1XXX - 9XXX.\"\nmsgstr \"Зөв шуудангийг код оруулна уу хэлбэр ба хязгаар нь 1xxx-9xxx.\"\n\n#: be/forms.py:48\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\nmsgstr \"\"\n\"Зөв утасны дугаараа зөв оруулна уу. Оруулах Хэлбэрүүд  0x xxx xx xx, 0xx xx \"\n\"xx xx, 04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.\"\n\"xx, 0xx.xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\n\n#: br/forms.py:22\nmsgid \"Enter a zip code in the format XXXXX-XXX.\"\nmsgstr \"Шуудангийн индексээ XXXXX-XXX хэлбэрээр оруулна уу. \"\n\n#: br/forms.py:31\nmsgid \"Phone numbers must be in XX-XXXX-XXXX format.\"\nmsgstr \"Утасны дугаараа XX-XXXX-XXXX хэлбэрээр оруулна уу.\"\n\n#: br/forms.py:58\nmsgid \"\"\n\"Select a valid brazilian state. That state is not one of the available \"\n\"states.\"\nmsgstr \"Бразилийн мужаа сонгоно уу. Энэ нь байгаа муж биш байна.\"\n\n#: br/forms.py:93\nmsgid \"Invalid CPF number.\"\nmsgstr \"CPF дугаар хүчингүй байна.\"\n\n#: br/forms.py:94\nmsgid \"This field requires at most 11 digits or 14 characters.\"\nmsgstr \"\"\n\"Энэ хэсэгт 11-ээс илүүгүй оронтой тоо буюу 14-өөс илүүгүй тэмдэгт оруулна уу.\"\n\n#: br/forms.py:133\nmsgid \"Invalid CNPJ number.\"\nmsgstr \"CNPJ дугаар хүчингүй байна.\"\n\n#: br/forms.py:135\nmsgid \"This field requires at least 14 digits\"\nmsgstr \"Энэ хэсэгт наад зах нь 14 оронтой тоо оруулна уу.\"\n\n#: ca/forms.py:29\nmsgid \"Enter a postal code in the format XXX XXX.\"\nmsgstr \"Шуудангийн дугаараа XXX XXX хэлбэрээр оруулна уу.\"\n\n#: ca/forms.py:47 us/forms.py:30\nmsgid \"Phone numbers must be in XXX-XXX-XXXX format.\"\nmsgstr \"Утасы дугаар \\\"XXX-XXX-XXXX \\\" загварын дугуу байна.\"\n\n#: ca/forms.py:69\nmsgid \"Enter a Canadian province or territory.\"\nmsgstr \"Канадын бүсийн эсвэл Мужын код оруулна.\"\n\n#: ca/forms.py:110\nmsgid \"Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.\"\nmsgstr \"Канадын нийгмийн даатгалын дугаараа XXX-XXX-XXX хэлбэрээр оруулна уу.\"\n\n#: ch/ch_states.py:5\nmsgid \"Aargau\"\nmsgstr \"Ааргау\"\n\n#: ch/ch_states.py:6\nmsgid \"Appenzell Innerrhoden\"\nmsgstr \"Аппензелл Иннерходен \"\n\n#: ch/ch_states.py:7\nmsgid \"Appenzell Ausserrhoden\"\nmsgstr \"Аппензелл Ауссеррходен\"\n\n#: ch/ch_states.py:8\nmsgid \"Basel-Stadt\"\nmsgstr \"Басел-Стат\"\n\n#: ch/ch_states.py:9\nmsgid \"Basel-Land\"\nmsgstr \"Басел-Ланд\"\n\n#: ch/ch_states.py:10\nmsgid \"Berne\"\nmsgstr \"Берн\"\n\n#: ch/ch_states.py:11\nmsgid \"Fribourg\"\nmsgstr \"Фрайбург\"\n\n#: ch/ch_states.py:12\nmsgid \"Geneva\"\nmsgstr \"Женев\"\n\n#: ch/ch_states.py:13\nmsgid \"Glarus\"\nmsgstr \"Гларус\"\n\n#: ch/ch_states.py:14\nmsgid \"Graubuenden\"\nmsgstr \"Граубенден\"\n\n#: ch/ch_states.py:15\nmsgid \"Jura\"\nmsgstr \"Юра\"\n\n#: ch/ch_states.py:16\nmsgid \"Lucerne\"\nmsgstr \"Лусерн\"\n\n#: ch/ch_states.py:17\nmsgid \"Neuchatel\"\nmsgstr \"Ноехател\"\n\n#: ch/ch_states.py:18\nmsgid \"Nidwalden\"\nmsgstr \"Нидвалден\"\n\n#: ch/ch_states.py:19\nmsgid \"Obwalden\"\nmsgstr \"Обвалден\"\n\n#: ch/ch_states.py:20\nmsgid \"Schaffhausen\"\nmsgstr \"Шафхаусен\"\n\n#: ch/ch_states.py:21\nmsgid \"Schwyz\"\nmsgstr \"Швиц\"\n\n#: ch/ch_states.py:22\nmsgid \"Solothurn\"\nmsgstr \"Солотурн\"\n\n#: ch/ch_states.py:23\nmsgid \"St. Gallen\"\nmsgstr \"Сант-Галлен\"\n\n#: ch/ch_states.py:24\nmsgid \"Thurgau\"\nmsgstr \"Тургау\"\n\n#: ch/ch_states.py:25\nmsgid \"Ticino\"\nmsgstr \"Тикино\"\n\n#: ch/ch_states.py:26\nmsgid \"Uri\"\nmsgstr \"Ури\"\n\n#: ch/ch_states.py:27\nmsgid \"Valais\"\nmsgstr \"Валаис\"\n\n#: ch/ch_states.py:28\nmsgid \"Vaud\"\nmsgstr \"Вауд\"\n\n#: ch/ch_states.py:29\nmsgid \"Zug\"\nmsgstr \"Зуг\"\n\n#: ch/ch_states.py:30\nmsgid \"Zurich\"\nmsgstr \"Зурик\"\n\n#: ch/forms.py:37\nmsgid \"Phone numbers must be in 0XX XXX XX XX format.\"\nmsgstr \"Утасны дугаар заавал 0XX XXX XX XX форматтай байна\"\n\n#: ch/forms.py:68\nmsgid \"\"\n\"Enter a valid Swiss identity or passport card number in X1234567<0 or \"\n\"1234567890 format.\"\nmsgstr \"\"\n\"Щвейцарийн үнэмлэх юм уу пасспортныхоо дугаарыг X1234567<0 эсвэл 1234567890 \"\n\"хэлбэрээр оруулна уу.\"\n\n#: cl/forms.py:32\nmsgid \"Enter a valid Chilean RUT.\"\nmsgstr \"Чилийн RUT-ээ оруулна уу.\"\n\n#: cl/forms.py:33\nmsgid \"Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.\"\nmsgstr \"Чилийн RUT-ээ XX.XXX.XXX-X хэлбэрээр оруулна уу. \"\n\n#: cl/forms.py:34\nmsgid \"The Chilean RUT is not valid.\"\nmsgstr \"Чилийн RUT хүчингүй байна.\"\n\n#: cn/forms.py:84\nmsgid \"Enter a post code in the format XXXXXX.\"\nmsgstr \"Шуудангийн кодоо XXXXXX форматын дагуу оруулна уу.\"\n\n#: cn/forms.py:105\nmsgid \"ID Card Number consists of 15 or 18 digits.\"\nmsgstr \"ID картын дугаар 15 эсвэл 18 оронгоос бүрдэнэ\"\n\n#: cn/forms.py:106\nmsgid \"Invalid ID Card Number: Wrong checksum\"\nmsgstr \"Бодит ID картын дугаар оруулна уу. Нийлбэр буруу байна\"\n\n#: cn/forms.py:107\nmsgid \"Invalid ID Card Number: Wrong birthdate\"\nmsgstr \"ID картын дугаар буруу:Төрсөн огноо буруу\"\n\n#: cn/forms.py:108\nmsgid \"Invalid ID Card Number: Wrong location code\"\nmsgstr \"ID картын дугаар буруу:Байршилийн код буруу\"\n\n#: cn/forms.py:193\nmsgid \"Enter a valid phone number.\"\nmsgstr \"Зөв утасны дугаар оруулна уу.\"\n\n#: cn/forms.py:210\nmsgid \"Enter a valid cell number.\"\nmsgstr \"Зөв гар утасны дугаар оруулна уу.\"\n\n#: cz/cz_regions.py:8\nmsgid \"Prague\"\nmsgstr \"Прага\"\n\n#: cz/cz_regions.py:9\nmsgid \"Central Bohemian Region\"\nmsgstr \"Төв Бохемийн бүс\"\n\n#: cz/cz_regions.py:10\nmsgid \"South Bohemian Region\"\nmsgstr \"Хойд Бохемийн бүс\"\n\n#: cz/cz_regions.py:11\nmsgid \"Pilsen Region\"\nmsgstr \"Пилсен Бүс\"\n\n#: cz/cz_regions.py:12\nmsgid \"Carlsbad Region\"\nmsgstr \"Карлсбад бүс\"\n\n#: cz/cz_regions.py:13\nmsgid \"Usti Region\"\nmsgstr \"Усти Бүс\"\n\n#: cz/cz_regions.py:14\nmsgid \"Liberec Region\"\nmsgstr \"Либерец Бүс\"\n\n#: cz/cz_regions.py:15\nmsgid \"Hradec Region\"\nmsgstr \"Храдец Бүс\"\n\n#: cz/cz_regions.py:16\nmsgid \"Pardubice Region\"\nmsgstr \"Пардубице Бүс\"\n\n#: cz/cz_regions.py:17\nmsgid \"Vysocina Region\"\nmsgstr \"Высочина Бүс\"\n\n#: cz/cz_regions.py:18\nmsgid \"South Moravian Region\"\nmsgstr \"Өмнөд Моравийн Бүс\"\n\n#: cz/cz_regions.py:19\nmsgid \"Olomouc Region\"\nmsgstr \"Оломус Бүс\"\n\n#: cz/cz_regions.py:20\nmsgid \"Zlin Region\"\nmsgstr \"Злин Бүс\"\n\n#: cz/cz_regions.py:21\nmsgid \"Moravian-Silesian Region\"\nmsgstr \"Морави-Силесийн Бүс\"\n\n#: cz/forms.py:32 sk/forms.py:33\nmsgid \"Enter a postal code in the format XXXXX or XXX XX.\"\nmsgstr \"Шуудангийн дугаараа XXXXX буюу XXX XX хэлбэрээр оруулна уу.\"\n\n#: cz/forms.py:52\nmsgid \"Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.\"\nmsgstr \"Төрсөн тоогоо XXXXXX/XXXX эсвэл XXXXXXXXXX хэлбэрээр оруулна уу.\"\n\n#: cz/forms.py:53\nmsgid \"Enter a valid birth number.\"\nmsgstr \"Төрсөн тоогоо зөв оруулна уу.\"\n\n#: cz/forms.py:102\nmsgid \"Enter a valid IC number.\"\nmsgstr \"Зөв IC дугаар оруулна уу\"\n\n#: de/de_states.py:5\nmsgid \"Baden-Wuerttemberg\"\nmsgstr \"Баден-Вюртемберг\"\n\n#: de/de_states.py:6\nmsgid \"Bavaria\"\nmsgstr \"Бавари\"\n\n#: de/de_states.py:7\nmsgid \"Berlin\"\nmsgstr \"Берлин\"\n\n#: de/de_states.py:8\nmsgid \"Brandenburg\"\nmsgstr \"Бранденбург\"\n\n#: de/de_states.py:9\nmsgid \"Bremen\"\nmsgstr \"Бремен\"\n\n#: de/de_states.py:10\nmsgid \"Hamburg\"\nmsgstr \"Хамбург\"\n\n#: de/de_states.py:11\nmsgid \"Hessen\"\nmsgstr \"Хессен\"\n\n#: de/de_states.py:12\nmsgid \"Mecklenburg-Western Pomerania\"\nmsgstr \"Мекленбург-Баруун Помераниа\"\n\n#: de/de_states.py:13\nmsgid \"Lower Saxony\"\nmsgstr \"Доод Саксони\"\n\n#: de/de_states.py:14\nmsgid \"North Rhine-Westphalia\"\nmsgstr \"Хойд Рейн-Вестфалиа\"\n\n#: de/de_states.py:15\nmsgid \"Rhineland-Palatinate\"\nmsgstr \"Рейнланд-Палатинет\"\n\n#: de/de_states.py:16\nmsgid \"Saarland\"\nmsgstr \"Саарланд\"\n\n#: de/de_states.py:17\nmsgid \"Saxony\"\nmsgstr \"Саксония\"\n\n#: de/de_states.py:18\nmsgid \"Saxony-Anhalt\"\nmsgstr \"Саксония-Анхалт\"\n\n#: de/de_states.py:19\nmsgid \"Schleswig-Holstein\"\nmsgstr \"Шлесвиг-Холстейн\"\n\n#: de/de_states.py:20\nmsgid \"Thuringia\"\nmsgstr \"Турингиа\"\n\n#: de/forms.py:20 fi/forms.py:18 fr/forms.py:20\nmsgid \"Enter a zip code in the format XXXXX.\"\nmsgstr \"Шуудангийн индексээ XXXXX хэлбэрээр оруулна уу.\"\n\n#: de/forms.py:46\nmsgid \"\"\n\"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"format.\"\nmsgstr \"\"\n\"Германы үнэмлэхний дугаарыг XXXXXXXXXXX-XXXXXXX-XXXXXXX-X хэлбэрээр оруулна \"\n\"уу.\"\n\n#: es/es_provinces.py:5\nmsgid \"Araba\"\nmsgstr \"Араб\"\n\n#: es/es_provinces.py:6\nmsgid \"Albacete\"\nmsgstr \"Албасет\"\n\n#: es/es_provinces.py:7\nmsgid \"Alacant\"\nmsgstr \"Алакант\"\n\n#: es/es_provinces.py:8\nmsgid \"Almeria\"\nmsgstr \"Алмериа\"\n\n#: es/es_provinces.py:9\nmsgid \"Avila\"\nmsgstr \"Авила\"\n\n#: es/es_provinces.py:10\nmsgid \"Badajoz\"\nmsgstr \"Бадажоз\"\n\n#: es/es_provinces.py:11\nmsgid \"Illes Balears\"\nmsgstr \"Иллес Балеарс\"\n\n#: es/es_provinces.py:12\nmsgid \"Barcelona\"\nmsgstr \"Барселон\"\n\n#: es/es_provinces.py:13\nmsgid \"Burgos\"\nmsgstr \"Бургоз\"\n\n#: es/es_provinces.py:14\nmsgid \"Caceres\"\nmsgstr \"Касерес\"\n\n#: es/es_provinces.py:15\nmsgid \"Cadiz\"\nmsgstr \"Кадиз\"\n\n#: es/es_provinces.py:16\nmsgid \"Castello\"\nmsgstr \"Кастелло\"\n\n#: es/es_provinces.py:17\nmsgid \"Ciudad Real\"\nmsgstr \"Сиудад Рийл\"\n\n#: es/es_provinces.py:18\nmsgid \"Cordoba\"\nmsgstr \"Кордоба\"\n\n#: es/es_provinces.py:19\nmsgid \"A Coruna\"\nmsgstr \"А Коруна\"\n\n#: es/es_provinces.py:20\nmsgid \"Cuenca\"\nmsgstr \"Куэнса\"\n\n#: es/es_provinces.py:21\nmsgid \"Girona\"\nmsgstr \"Гирона\"\n\n#: es/es_provinces.py:22\nmsgid \"Granada\"\nmsgstr \"Гранада\"\n\n#: es/es_provinces.py:23\nmsgid \"Guadalajara\"\nmsgstr \"Гуадалажара\"\n\n#: es/es_provinces.py:24\nmsgid \"Guipuzkoa\"\nmsgstr \"Гипузкоа\"\n\n#: es/es_provinces.py:25\nmsgid \"Huelva\"\nmsgstr \"Хуелва\"\n\n#: es/es_provinces.py:26\nmsgid \"Huesca\"\nmsgstr \"Хуеска\"\n\n#: es/es_provinces.py:27\nmsgid \"Jaen\"\nmsgstr \"Жен\"\n\n#: es/es_provinces.py:28\nmsgid \"Leon\"\nmsgstr \"Леон\"\n\n#: es/es_provinces.py:29\nmsgid \"Lleida\"\nmsgstr \"Ллейда\"\n\n#: es/es_provinces.py:30 es/es_regions.py:17\nmsgid \"La Rioja\"\nmsgstr \"Ла Риожа\"\n\n#: es/es_provinces.py:31\nmsgid \"Lugo\"\nmsgstr \"Луго\"\n\n#: es/es_provinces.py:32 es/es_regions.py:18\nmsgid \"Madrid\"\nmsgstr \"Мадрид\"\n\n#: es/es_provinces.py:33\nmsgid \"Malaga\"\nmsgstr \"Малага\"\n\n#: es/es_provinces.py:34\nmsgid \"Murcia\"\nmsgstr \"Мурсиа\"\n\n#: es/es_provinces.py:35\nmsgid \"Navarre\"\nmsgstr \"Наварре\"\n\n#: es/es_provinces.py:36\nmsgid \"Ourense\"\nmsgstr \"Оуренс\"\n\n#: es/es_provinces.py:37\nmsgid \"Asturias\"\nmsgstr \"Астуриас\"\n\n#: es/es_provinces.py:38\nmsgid \"Palencia\"\nmsgstr \"Паленсиа\"\n\n#: es/es_provinces.py:39\nmsgid \"Las Palmas\"\nmsgstr \"Лас Палмас\"\n\n#: es/es_provinces.py:40\nmsgid \"Pontevedra\"\nmsgstr \"Понтеведра\"\n\n#: es/es_provinces.py:41\nmsgid \"Salamanca\"\nmsgstr \"Саламанка\"\n\n#: es/es_provinces.py:42\nmsgid \"Santa Cruz de Tenerife\"\nmsgstr \"Санта Круз дэ Тенериф\"\n\n#: es/es_provinces.py:43 es/es_regions.py:11\nmsgid \"Cantabria\"\nmsgstr \"Кантабриа\"\n\n#: es/es_provinces.py:44\nmsgid \"Segovia\"\nmsgstr \"Сеговиа\"\n\n#: es/es_provinces.py:45\nmsgid \"Seville\"\nmsgstr \"Севилль\"\n\n#: es/es_provinces.py:46\nmsgid \"Soria\"\nmsgstr \"Сориа\"\n\n#: es/es_provinces.py:47\nmsgid \"Tarragona\"\nmsgstr \"Таррагона\"\n\n#: es/es_provinces.py:48\nmsgid \"Teruel\"\nmsgstr \"Теруел\"\n\n#: es/es_provinces.py:49\nmsgid \"Toledo\"\nmsgstr \"Толедо\"\n\n#: es/es_provinces.py:50\nmsgid \"Valencia\"\nmsgstr \"Валенсиа\"\n\n#: es/es_provinces.py:51\nmsgid \"Valladolid\"\nmsgstr \"Валладолид\"\n\n#: es/es_provinces.py:52\nmsgid \"Bizkaia\"\nmsgstr \"Бизкаиа\"\n\n#: es/es_provinces.py:53\nmsgid \"Zamora\"\nmsgstr \"Замора\"\n\n#: es/es_provinces.py:54\nmsgid \"Zaragoza\"\nmsgstr \"Зарагоза\"\n\n#: es/es_provinces.py:55\nmsgid \"Ceuta\"\nmsgstr \"Сеута\"\n\n#: es/es_provinces.py:56\nmsgid \"Melilla\"\nmsgstr \"Мелилла\"\n\n#: es/es_regions.py:5\nmsgid \"Andalusia\"\nmsgstr \"Андалусиа\"\n\n#: es/es_regions.py:6\nmsgid \"Aragon\"\nmsgstr \"Арагон\"\n\n#: es/es_regions.py:7\nmsgid \"Principality of Asturias\"\nmsgstr \"Астуриасын вант улс\"\n\n#: es/es_regions.py:8\nmsgid \"Balearic Islands\"\nmsgstr \"Балеарикийн арлууд\"\n\n#: es/es_regions.py:9\nmsgid \"Basque Country\"\nmsgstr \"Баск улс\"\n\n#: es/es_regions.py:10\nmsgid \"Canary Islands\"\nmsgstr \"Канарын арлууд\"\n\n#: es/es_regions.py:12\nmsgid \"Castile-La Mancha\"\nmsgstr \"Кастил-Ла-Манча\"\n\n#: es/es_regions.py:13\nmsgid \"Castile and Leon\"\nmsgstr \"Кастил ба Леон\"\n\n#: es/es_regions.py:14\nmsgid \"Catalonia\"\nmsgstr \"Каталон\"\n\n#: es/es_regions.py:15\nmsgid \"Extremadura\"\nmsgstr \"Экстремадура\"\n\n#: es/es_regions.py:16\nmsgid \"Galicia\"\nmsgstr \"Галисиа\"\n\n#: es/es_regions.py:19\nmsgid \"Region of Murcia\"\nmsgstr \"Мурсиа муж\"\n\n#: es/es_regions.py:20\nmsgid \"Foral Community of Navarre\"\nmsgstr \"Наваррегийн Форал суурин\"\n\n#: es/es_regions.py:21\nmsgid \"Valencian Community\"\nmsgstr \"Валенсиагийн суурин\"\n\n#: es/forms.py:26\nmsgid \"Enter a valid postal code in the range and format 01XXX - 52XXX.\"\nmsgstr \"Шуудангийн дугаараа 01XXX - 52XXX хооронд, энэ хэлбэрээр оруулна уу.\"\n\n#: es/forms.py:46\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or \"\n\"9XXXXXXXX.\"\nmsgstr \"\"\n\"Утасны дугаараа 6XXXXXXXX, 8XXXXXXXX буюу 9XXXXXXXX хэлбэрийн аль нэгээр \"\n\"оруулна уу.\"\n\n#: es/forms.py:73\nmsgid \"Please enter a valid NIF, NIE, or CIF.\"\nmsgstr \"NIF, NIE, CIF оруулна уу.\"\n\n#: es/forms.py:74\nmsgid \"Please enter a valid NIF or NIE.\"\nmsgstr \"NIF, NIE оруулна уу.\"\n\n#: es/forms.py:75\nmsgid \"Invalid checksum for NIF.\"\nmsgstr \"NIF-ийн шалгах нийлбэр буруу байна.\"\n\n#: es/forms.py:76\nmsgid \"Invalid checksum for NIE.\"\nmsgstr \"NIE-ийн шалгах нийлбэр буруу байна.\"\n\n#: es/forms.py:77\nmsgid \"Invalid checksum for CIF.\"\nmsgstr \"CIF-ийн шалгах нийлбэр буруу байна.\"\n\n#: es/forms.py:149\nmsgid \"\"\n\"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.\"\nmsgstr \"Дансны дугаараа XXXX-XXXX-XX-XXXXXXXXXX хэлбэрээр оруулна уу.\"\n\n#: es/forms.py:150\nmsgid \"Invalid checksum for bank account number.\"\nmsgstr \"Дансны дугаарын шалгах нийлбэр буруу байна.\"\n\n#: fi/forms.py:33\nmsgid \"Enter a valid Finnish social security number.\"\nmsgstr \"Финляндийн нийгмийн хамгааллын дугаараа оруулна уу.\"\n\n#: fr/forms.py:35\nmsgid \"Phone numbers must be in 0X XX XX XX XX format.\"\nmsgstr \"Утасны дугаар 0X XX XX XX XX хэлбэртэй байх хэрэгтэй.\"\n\n#: gb/forms.py:25\nmsgid \"Enter a valid postcode.\"\nmsgstr \"Шуудангийн дугаараа оруулна уу.\"\n\n#: gb/gb_regions.py:11\nmsgid \"Bedfordshire\"\nmsgstr \"Бэдфордшир\"\n\n#: gb/gb_regions.py:12\nmsgid \"Buckinghamshire\"\nmsgstr \"Букингхэмшир\"\n\n#: gb/gb_regions.py:14\nmsgid \"Cheshire\"\nmsgstr \"Чешир\"\n\n#: gb/gb_regions.py:15\nmsgid \"Cornwall and Isles of Scilly\"\nmsgstr \"Корнүолл ба Скиллийн арлууд\"\n\n#: gb/gb_regions.py:16\nmsgid \"Cumbria\"\nmsgstr \"Кумбриа\"\n\n#: gb/gb_regions.py:17\nmsgid \"Derbyshire\"\nmsgstr \"Дэрбишир\"\n\n#: gb/gb_regions.py:18\nmsgid \"Devon\"\nmsgstr \"Дэвон\"\n\n#: gb/gb_regions.py:19\nmsgid \"Dorset\"\nmsgstr \"Дорсэт\"\n\n#: gb/gb_regions.py:20\nmsgid \"Durham\"\nmsgstr \"Дурхам\"\n\n#: gb/gb_regions.py:21\nmsgid \"East Sussex\"\nmsgstr \"Ийст Суссекс\"\n\n#: gb/gb_regions.py:22\nmsgid \"Essex\"\nmsgstr \"Эссекс\"\n\n#: gb/gb_regions.py:23\nmsgid \"Gloucestershire\"\nmsgstr \"Глоусестершир\"\n\n#: gb/gb_regions.py:24\nmsgid \"Greater London\"\nmsgstr \"Их Лондон \"\n\n#: gb/gb_regions.py:25\nmsgid \"Greater Manchester\"\nmsgstr \"Их Манчестэр\"\n\n#: gb/gb_regions.py:26\nmsgid \"Hampshire\"\nmsgstr \"Хэмпшир\"\n\n#: gb/gb_regions.py:27\nmsgid \"Hertfordshire\"\nmsgstr \"Хэртфордшир\"\n\n#: gb/gb_regions.py:28\nmsgid \"Kent\"\nmsgstr \"Кэнт\"\n\n#: gb/gb_regions.py:29\nmsgid \"Lancashire\"\nmsgstr \"Ланкашир\"\n\n#: gb/gb_regions.py:30\nmsgid \"Leicestershire\"\nmsgstr \"Леисэстершир\"\n\n#: gb/gb_regions.py:31\nmsgid \"Lincolnshire\"\nmsgstr \"Линколншир\"\n\n#: gb/gb_regions.py:32\nmsgid \"Merseyside\"\nmsgstr \"Мэрсэисайд\"\n\n#: gb/gb_regions.py:33\nmsgid \"Norfolk\"\nmsgstr \"Норфолк\"\n\n#: gb/gb_regions.py:34\nmsgid \"North Yorkshire\"\nmsgstr \"Норт Йоркшир\"\n\n#: gb/gb_regions.py:35\nmsgid \"Northamptonshire\"\nmsgstr \"Нортамптоншир\"\n\n#: gb/gb_regions.py:36\nmsgid \"Northumberland\"\nmsgstr \"Нортамберланд\"\n\n#: gb/gb_regions.py:37\nmsgid \"Nottinghamshire\"\nmsgstr \"Ноттингхэмшир\"\n\n#: gb/gb_regions.py:38\nmsgid \"Oxfordshire\"\nmsgstr \"Оксфордшир\"\n\n#: gb/gb_regions.py:39\nmsgid \"Shropshire\"\nmsgstr \"Шропшир\"\n\n#: gb/gb_regions.py:40\nmsgid \"Somerset\"\nmsgstr \"Сомерсэт\"\n\n#: gb/gb_regions.py:41\nmsgid \"South Yorkshire\"\nmsgstr \"Саут Йоркшир\"\n\n#: gb/gb_regions.py:42\nmsgid \"Staffordshire\"\nmsgstr \"Стаффордшир\"\n\n#: gb/gb_regions.py:43\nmsgid \"Suffolk\"\nmsgstr \"Суффолк\"\n\n#: gb/gb_regions.py:44\nmsgid \"Surrey\"\nmsgstr \"Сурреи\"\n\n#: gb/gb_regions.py:45\nmsgid \"Tyne and Wear\"\nmsgstr \"Тийн ба Виэр\"\n\n#: gb/gb_regions.py:46\nmsgid \"Warwickshire\"\nmsgstr \"Уарвикшир\"\n\n#: gb/gb_regions.py:47\nmsgid \"West Midlands\"\nmsgstr \"Вэст Мидландс\"\n\n#: gb/gb_regions.py:48\nmsgid \"West Sussex\"\nmsgstr \"Вест Суссекс\"\n\n#: gb/gb_regions.py:49\nmsgid \"West Yorkshire\"\nmsgstr \"Вест Йоркшир\"\n\n#: gb/gb_regions.py:50\nmsgid \"Wiltshire\"\nmsgstr \"Вилтшир\"\n\n#: gb/gb_regions.py:51\nmsgid \"Worcestershire\"\nmsgstr \"Ворсестершир\"\n\n#: gb/gb_regions.py:55\nmsgid \"County Antrim\"\nmsgstr \"Антрим каунти\"\n\n#: gb/gb_regions.py:56\nmsgid \"County Armagh\"\nmsgstr \"Армагх каунти\"\n\n#: gb/gb_regions.py:57\nmsgid \"County Down\"\nmsgstr \"Даун каунти\"\n\n#: gb/gb_regions.py:58\nmsgid \"County Fermanagh\"\nmsgstr \"Ферманаф каунти\"\n\n#: gb/gb_regions.py:59\nmsgid \"County Londonderry\"\nmsgstr \"Лондондерри каунти\"\n\n#: gb/gb_regions.py:60\nmsgid \"County Tyrone\"\nmsgstr \"Тирон каунти\"\n\n#: gb/gb_regions.py:64\nmsgid \"Clwyd\"\nmsgstr \"Клвид \"\n\n#: gb/gb_regions.py:65\nmsgid \"Dyfed\"\nmsgstr \"Дифед\"\n\n#: gb/gb_regions.py:66\nmsgid \"Gwent\"\nmsgstr \"Гвент\"\n\n#: gb/gb_regions.py:67\nmsgid \"Gwynedd\"\nmsgstr \"Гвинедд\"\n\n#: gb/gb_regions.py:68\nmsgid \"Mid Glamorgan\"\nmsgstr \"Дундад Гламорган\"\n\n#: gb/gb_regions.py:69\nmsgid \"Powys\"\nmsgstr \"Повис\"\n\n#: gb/gb_regions.py:70\nmsgid \"South Glamorgan\"\nmsgstr \"Өмнөд Гламорган\"\n\n#: gb/gb_regions.py:71\nmsgid \"West Glamorgan\"\nmsgstr \"Баруун Гламорган\"\n\n#: gb/gb_regions.py:75\nmsgid \"Borders\"\nmsgstr \"Бордэрс\"\n\n#: gb/gb_regions.py:76\nmsgid \"Central Scotland\"\nmsgstr \"Төв Шотланд\"\n\n#: gb/gb_regions.py:77\nmsgid \"Dumfries and Galloway\"\nmsgstr \"Дамфрайс ба Галловэй\"\n\n#: gb/gb_regions.py:78\nmsgid \"Fife\"\nmsgstr \"Файф\"\n\n#: gb/gb_regions.py:79\nmsgid \"Grampian\"\nmsgstr \"Грампиан\"\n\n#: gb/gb_regions.py:80\nmsgid \"Highland\"\nmsgstr \"Хайланд\"\n\n#: gb/gb_regions.py:81\nmsgid \"Lothian\"\nmsgstr \"Лотиан\"\n\n#: gb/gb_regions.py:82\nmsgid \"Orkney Islands\"\nmsgstr \"Оркнэй арлууд\"\n\n#: gb/gb_regions.py:83\nmsgid \"Shetland Islands\"\nmsgstr \"Шетланд арлууд\"\n\n#: gb/gb_regions.py:84\nmsgid \"Strathclyde\"\nmsgstr \"Стратклид\"\n\n#: gb/gb_regions.py:85\nmsgid \"Tayside\"\nmsgstr \"Тайсайд\"\n\n#: gb/gb_regions.py:86\nmsgid \"Western Isles\"\nmsgstr \"Вестерн Айслс\"\n\n#: gb/gb_regions.py:90\nmsgid \"England\"\nmsgstr \"Англи\"\n\n#: gb/gb_regions.py:91\nmsgid \"Northern Ireland\"\nmsgstr \"Умард Ирланд\"\n\n#: gb/gb_regions.py:92\nmsgid \"Scotland\"\nmsgstr \"Шотланд\"\n\n#: gb/gb_regions.py:93\nmsgid \"Wales\"\nmsgstr \"Вэльс\"\n\n#: hk/forms.py:37\n#, python-format\nmsgid \"Phone number should not start with one of the followings: %s.\"\nmsgstr \"Утасны дугаар дараахийн аль нэгээр эхлэж болохгүй: %s.\"\n\n#: hk/forms.py:40\n#, python-format\nmsgid \"Phone number must be in one of the following formats: %s.\"\nmsgstr \"Утасны дугаар дараахийн аль нэг форматаар байх ёстой: %s.\"\n\n#: hk/forms.py:42\n#, python-format\nmsgid \"Phone number should start with one of the followings: %s.\"\nmsgstr \"Утасны дугаар дараахийн аль нэгээр эхлэх ёстой: %s.\"\n\n#: hr/forms.py:76\nmsgid \"Enter a valid 13 digit JMBG\"\nmsgstr \"13 орон бүхий бодит JMBG оруулна уу\"\n\n#: hr/forms.py:77\nmsgid \"Error in date segment\"\nmsgstr \"Огнооны сегментэд алдаа байна\"\n\n#: hr/forms.py:123\nmsgid \"Enter a valid 11 digit OIB\"\nmsgstr \"11 орон бүхий бодит OIB оруулна уу\"\n\n#: hr/forms.py:152 id/forms.py:112\nmsgid \"Enter a valid vehicle license plate number\"\nmsgstr \"Машины гэрчилгээний дугаарыг зөв оруулна уу.\"\n\n#: hr/forms.py:153\nmsgid \"Enter a valid location code\"\nmsgstr \"Хүчинтэй байршилийн кодыг оруулна уу\"\n\n#: hr/forms.py:154\nmsgid \"Number part cannot be zero\"\nmsgstr \"Тоон хэсэг тэг байж болохгүй\"\n\n#: hr/forms.py:190\nmsgid \"Enter a valid 5 digit postal code\"\nmsgstr \"Шуудангийн код 5 оронтой тоо байх ёстой.\"\n\n#: hr/forms.py:218 id/forms.py:72 nl/forms.py:56\nmsgid \"Enter a valid phone number\"\nmsgstr \"Утасны дугаараа оруулна уу\"\n\n#: hr/forms.py:219\nmsgid \"Enter a valid area or mobile network code\"\nmsgstr \"Бодит газар нутаг эсвэл мобайл сүлжээний код оруулна уу.\"\n\n#: hr/forms.py:220\nmsgid \"The phone nubmer is too long\"\nmsgstr \"Утасны дугаар хэт урт байна.\"\n\n#: hr/forms.py:258\nmsgid \"Enter a valid 19 digit JMBAG starting with 601983\"\nmsgstr \"601983 -р эхэлсэн 19 орон бүхий бодит JMBAG оруулна уу.\"\n\n#: hr/forms.py:259\nmsgid \"Card issue number cannot be zero\"\nmsgstr \"Card issue number нь тэг байж болохгүй\"\n\n#: hr/hr_choices.py:14\nmsgid \"Grad Zagreb\"\nmsgstr \"Grad Zagreb\"\n\n#: hr/hr_choices.py:15\nmsgid \"Bjelovarsko-bilogorska županija\"\nmsgstr \"Bjelovarsko-bilogorska županija\"\n\n#: hr/hr_choices.py:16\nmsgid \"Brodsko-posavska županija\"\nmsgstr \"Brodsko-posavska županija\"\n\n#: hr/hr_choices.py:17\nmsgid \"Dubrovačko-neretvanska županija\"\nmsgstr \"Dubrovačko-neretvanska županija\"\n\n#: hr/hr_choices.py:18\nmsgid \"Istarska županija\"\nmsgstr \"Istarska županija\"\n\n#: hr/hr_choices.py:19\nmsgid \"Karlovačka županija\"\nmsgstr \"Karlovačka županija\"\n\n#: hr/hr_choices.py:20\nmsgid \"Koprivničko-križevačka županija\"\nmsgstr \"Koprivničko-križevačka županija\"\n\n#: hr/hr_choices.py:21\nmsgid \"Krapinsko-zagorska županija\"\nmsgstr \"Krapinsko-zagorska županija\"\n\n#: hr/hr_choices.py:22\nmsgid \"Ličko-senjska županija\"\nmsgstr \"Ličko-senjska županija\"\n\n#: hr/hr_choices.py:23\nmsgid \"Međimurska županija\"\nmsgstr \"Međimurska županija\"\n\n#: hr/hr_choices.py:24\nmsgid \"Osječko-baranjska županija\"\nmsgstr \"Osječko-baranjska županija\"\n\n#: hr/hr_choices.py:25\nmsgid \"Požeško-slavonska županija\"\nmsgstr \"Požeško-slavonska županija\"\n\n#: hr/hr_choices.py:26\nmsgid \"Primorsko-goranska županija\"\nmsgstr \"Primorsko-goranska županija\"\n\n#: hr/hr_choices.py:27\nmsgid \"Sisačko-moslavačka županija\"\nmsgstr \"Sisačko-moslavačka županija\"\n\n#: hr/hr_choices.py:28\nmsgid \"Splitsko-dalmatinska županija\"\nmsgstr \"Splitsko-dalmatinska županija\"\n\n#: hr/hr_choices.py:29\nmsgid \"Šibensko-kninska županija\"\nmsgstr \"Šibensko-kninska županija\"\n\n#: hr/hr_choices.py:30\nmsgid \"Varaždinska županija\"\nmsgstr \"Varaždinska županija\"\n\n#: hr/hr_choices.py:31\nmsgid \"Virovitičko-podravska županija\"\nmsgstr \"Virovitičko-podravska županija\"\n\n#: hr/hr_choices.py:32\nmsgid \"Vukovarsko-srijemska županija\"\nmsgstr \"Vukovarsko-srijemska županija\"\n\n#: hr/hr_choices.py:33\nmsgid \"Zadarska županija\"\nmsgstr \"Zadarska županija\"\n\n#: hr/hr_choices.py:34\nmsgid \"Zagrebačka županija\"\nmsgstr \"Zagrebačka županija\"\n\n#: id/forms.py:31\nmsgid \"Enter a valid post code\"\nmsgstr \"Зөв шуудангын код оруулна уу\"\n\n#: id/forms.py:176\nmsgid \"Enter a valid NIK/KTP number\"\nmsgstr \"Зөв NIK/KTP дугаар оруулна уу\"\n\n#: id/id_choices.py:15\nmsgid \"Aceh\"\nmsgstr \"Асех\"\n\n#: id/id_choices.py:16 id/id_choices.py:79\nmsgid \"Bali\"\nmsgstr \"Бали\"\n\n#: id/id_choices.py:17 id/id_choices.py:51\nmsgid \"Banten\"\nmsgstr \"Бантен\"\n\n#: id/id_choices.py:18 id/id_choices.py:60\nmsgid \"Bengkulu\"\nmsgstr \"Бенкулу\"\n\n#: id/id_choices.py:19 id/id_choices.py:53\nmsgid \"Yogyakarta\"\nmsgstr \"Ёогакарта\"\n\n#: id/id_choices.py:20 id/id_choices.py:57\nmsgid \"Jakarta\"\nmsgstr \"Жакарта\"\n\n#: id/id_choices.py:21 id/id_choices.py:81\nmsgid \"Gorontalo\"\nmsgstr \"Горонтало\"\n\n#: id/id_choices.py:22 id/id_choices.py:63\nmsgid \"Jambi\"\nmsgstr \"Жамби\"\n\n#: id/id_choices.py:23\nmsgid \"Jawa Barat\"\nmsgstr \"Жаба Барат\"\n\n#: id/id_choices.py:24\nmsgid \"Jawa Tengah\"\nmsgstr \"Жаба Тенгах\"\n\n#: id/id_choices.py:25\nmsgid \"Jawa Timur\"\nmsgstr \"Жава Тимур\"\n\n#: id/id_choices.py:26 id/id_choices.py:94\nmsgid \"Kalimantan Barat\"\nmsgstr \"Калимантан Барат\"\n\n#: id/id_choices.py:27 id/id_choices.py:72\nmsgid \"Kalimantan Selatan\"\nmsgstr \"Калимантан Селатан\"\n\n#: id/id_choices.py:28 id/id_choices.py:95\nmsgid \"Kalimantan Tengah\"\nmsgstr \"Калимантан Тенгах\"\n\n#: id/id_choices.py:29 id/id_choices.py:96\nmsgid \"Kalimantan Timur\"\nmsgstr \"Калимантан Тимур\"\n\n#: id/id_choices.py:30\nmsgid \"Kepulauan Bangka-Belitung\"\nmsgstr \"Кепулауан Бангка-Белитунг\"\n\n#: id/id_choices.py:31 id/id_choices.py:68\nmsgid \"Kepulauan Riau\"\nmsgstr \"Кепулауан Риау\"\n\n#: id/id_choices.py:32 id/id_choices.py:61\nmsgid \"Lampung\"\nmsgstr \"Лампунг\"\n\n#: id/id_choices.py:33 id/id_choices.py:76\nmsgid \"Maluku\"\nmsgstr \"Малуку\"\n\n#: id/id_choices.py:34 id/id_choices.py:77\nmsgid \"Maluku Utara\"\nmsgstr \"Малуку Утара\"\n\n#: id/id_choices.py:35\nmsgid \"Nusa Tenggara Barat\"\nmsgstr \"Нуса Тенггара Барат\"\n\n#: id/id_choices.py:36\nmsgid \"Nusa Tenggara Timur\"\nmsgstr \"Нуса Тенггара Тимур\"\n\n#: id/id_choices.py:37\nmsgid \"Papua\"\nmsgstr \"Папуа\"\n\n#: id/id_choices.py:38\nmsgid \"Papua Barat\"\nmsgstr \"Папуа Барат\"\n\n#: id/id_choices.py:39 id/id_choices.py:66\nmsgid \"Riau\"\nmsgstr \"Риау\"\n\n#: id/id_choices.py:40 id/id_choices.py:74\nmsgid \"Sulawesi Barat\"\nmsgstr \"Сулавеси Барат\"\n\n#: id/id_choices.py:41 id/id_choices.py:75\nmsgid \"Sulawesi Selatan\"\nmsgstr \"Сулавеси Селатан\"\n\n#: id/id_choices.py:42 id/id_choices.py:82\nmsgid \"Sulawesi Tengah\"\nmsgstr \"Сулавеси Тенгах\"\n\n#: id/id_choices.py:43 id/id_choices.py:85\nmsgid \"Sulawesi Tenggara\"\nmsgstr \"Сулавеси Тенггара\"\n\n#: id/id_choices.py:44\nmsgid \"Sulawesi Utara\"\nmsgstr \"Сулавеси Утара\"\n\n#: id/id_choices.py:45 id/id_choices.py:58\nmsgid \"Sumatera Barat\"\nmsgstr \"Сулавеси Барат\"\n\n#: id/id_choices.py:46 id/id_choices.py:62\nmsgid \"Sumatera Selatan\"\nmsgstr \"Сулавеси Селатан\"\n\n#: id/id_choices.py:47 id/id_choices.py:64\nmsgid \"Sumatera Utara\"\nmsgstr \"Сулавеси Утара\"\n\n#: id/id_choices.py:52\nmsgid \"Magelang\"\nmsgstr \"Магеланг\"\n\n#: id/id_choices.py:54\nmsgid \"Surakarta - Solo\"\nmsgstr \"Суракарта - Соло\"\n\n#: id/id_choices.py:55\nmsgid \"Madiun\"\nmsgstr \"Мадиун\"\n\n#: id/id_choices.py:56\nmsgid \"Kediri\"\nmsgstr \"Кедири\"\n\n#: id/id_choices.py:59\nmsgid \"Tapanuli\"\nmsgstr \"Тапанули\"\n\n#: id/id_choices.py:65\nmsgid \"Nanggroe Aceh Darussalam\"\nmsgstr \"Нангрой Ачех Даруссалам\"\n\n#: id/id_choices.py:67\nmsgid \"Kepulauan Bangka Belitung\"\nmsgstr \"Кепулауан Бангка Белитунг\"\n\n#: id/id_choices.py:69\nmsgid \"Corps Consulate\"\nmsgstr \"Консулын газар\"\n\n#: id/id_choices.py:70\nmsgid \"Corps Diplomatic\"\nmsgstr \"Элчин сайдын яам\"\n\n#: id/id_choices.py:71\nmsgid \"Bandung\"\nmsgstr \"Бангдунг\"\n\n#: id/id_choices.py:73\nmsgid \"Sulawesi Utara Daratan\"\nmsgstr \"Сулавеси утара даратан\"\n\n#: id/id_choices.py:78\nmsgid \"NTT - Timor\"\nmsgstr \"НТТ - Тимор\"\n\n#: id/id_choices.py:80\nmsgid \"Sulawesi Utara Kepulauan\"\nmsgstr \"Сулавеси Утара Кепулауан\"\n\n#: id/id_choices.py:83\nmsgid \"NTB - Lombok\"\nmsgstr \"НТБ-Ломбок\"\n\n#: id/id_choices.py:84\nmsgid \"Papua dan Papua Barat\"\nmsgstr \"Папуа дан Папуа Барат\"\n\n#: id/id_choices.py:86\nmsgid \"Cirebon\"\nmsgstr \"Киребон\"\n\n#: id/id_choices.py:87\nmsgid \"NTB - Sumbawa\"\nmsgstr \"НТБ - Сумбава\"\n\n#: id/id_choices.py:88\nmsgid \"NTT - Flores\"\nmsgstr \"НТТ - Флорес\"\n\n#: id/id_choices.py:89\nmsgid \"NTT - Sumba\"\nmsgstr \"НТТ-Сумба\"\n\n#: id/id_choices.py:90\nmsgid \"Bogor\"\nmsgstr \"Богор\"\n\n#: id/id_choices.py:91\nmsgid \"Pekalongan\"\nmsgstr \"Пекалонган\"\n\n#: id/id_choices.py:92\nmsgid \"Semarang\"\nmsgstr \"Семаранг\"\n\n#: id/id_choices.py:93\nmsgid \"Pati\"\nmsgstr \"Пати\"\n\n#: id/id_choices.py:97\nmsgid \"Surabaya\"\nmsgstr \"Сурабаяа\"\n\n#: id/id_choices.py:98\nmsgid \"Madura\"\nmsgstr \"Мадура\"\n\n#: id/id_choices.py:99\nmsgid \"Malang\"\nmsgstr \"Маланг\"\n\n#: id/id_choices.py:100\nmsgid \"Jember\"\nmsgstr \"Жембер\"\n\n#: id/id_choices.py:101\nmsgid \"Banyumas\"\nmsgstr \"Банюмас\"\n\n#: id/id_choices.py:102\nmsgid \"Federal Government\"\nmsgstr \"Улсын засгийн газар\"\n\n#: id/id_choices.py:103\nmsgid \"Bojonegoro\"\nmsgstr \"Божонегоро\"\n\n#: id/id_choices.py:104\nmsgid \"Purwakarta\"\nmsgstr \"Пурвакарта\"\n\n#: id/id_choices.py:105\nmsgid \"Sidoarjo\"\nmsgstr \"Сидоаржо\"\n\n#: id/id_choices.py:106\nmsgid \"Garut\"\nmsgstr \"Гарут\"\n\n#: ie/ie_counties.py:8\nmsgid \"Antrim\"\nmsgstr \"Антрим\"\n\n#: ie/ie_counties.py:9\nmsgid \"Armagh\"\nmsgstr \"Армагх\"\n\n#: ie/ie_counties.py:10\nmsgid \"Carlow\"\nmsgstr \"Карлов\"\n\n#: ie/ie_counties.py:11\nmsgid \"Cavan\"\nmsgstr \"Каван\"\n\n#: ie/ie_counties.py:12\nmsgid \"Clare\"\nmsgstr \"Кларе\"\n\n#: ie/ie_counties.py:13\nmsgid \"Cork\"\nmsgstr \"Корк\"\n\n#: ie/ie_counties.py:14\nmsgid \"Derry\"\nmsgstr \"Дерри\"\n\n#: ie/ie_counties.py:15\nmsgid \"Donegal\"\nmsgstr \"Донегал\"\n\n#: ie/ie_counties.py:16\nmsgid \"Down\"\nmsgstr \"Доош\"\n\n#: ie/ie_counties.py:17\nmsgid \"Dublin\"\nmsgstr \"Дублин\"\n\n#: ie/ie_counties.py:18\nmsgid \"Fermanagh\"\nmsgstr \"Ферманаг\"\n\n#: ie/ie_counties.py:19\nmsgid \"Galway\"\nmsgstr \"Галвей\"\n\n#: ie/ie_counties.py:20\nmsgid \"Kerry\"\nmsgstr \"Керри\"\n\n#: ie/ie_counties.py:21\nmsgid \"Kildare\"\nmsgstr \"Килдаре\"\n\n#: ie/ie_counties.py:22\nmsgid \"Kilkenny\"\nmsgstr \"Килкенни\"\n\n#: ie/ie_counties.py:23\nmsgid \"Laois\"\nmsgstr \"Лаоис\"\n\n#: ie/ie_counties.py:24\nmsgid \"Leitrim\"\nmsgstr \"Леитрим\"\n\n#: ie/ie_counties.py:25\nmsgid \"Limerick\"\nmsgstr \"Лимерик\"\n\n#: ie/ie_counties.py:26\nmsgid \"Longford\"\nmsgstr \"Лонгфорд\"\n\n#: ie/ie_counties.py:27\nmsgid \"Louth\"\nmsgstr \"Лоут\"\n\n#: ie/ie_counties.py:28\nmsgid \"Mayo\"\nmsgstr \"Маё\"\n\n#: ie/ie_counties.py:29\nmsgid \"Meath\"\nmsgstr \"Меат\"\n\n#: ie/ie_counties.py:30\nmsgid \"Monaghan\"\nmsgstr \"Mонагхан\"\n\n#: ie/ie_counties.py:31\nmsgid \"Offaly\"\nmsgstr \"Оффали\"\n\n#: ie/ie_counties.py:32\nmsgid \"Roscommon\"\nmsgstr \"Роскоммон\"\n\n#: ie/ie_counties.py:33\nmsgid \"Sligo\"\nmsgstr \"Слиго\"\n\n#: ie/ie_counties.py:34\nmsgid \"Tipperary\"\nmsgstr \"Типперари\"\n\n#: ie/ie_counties.py:35\nmsgid \"Tyrone\"\nmsgstr \"Тироне\"\n\n#: ie/ie_counties.py:36\nmsgid \"Waterford\"\nmsgstr \"Ватерфорд\"\n\n#: ie/ie_counties.py:37\nmsgid \"Westmeath\"\nmsgstr \"Вестмеат\"\n\n#: ie/ie_counties.py:38\nmsgid \"Wexford\"\nmsgstr \"Вексфорд\"\n\n#: ie/ie_counties.py:39\nmsgid \"Wicklow\"\nmsgstr \"Виклов\"\n\n#: il/forms.py:32\nmsgid \"Enter a postal code in the format XXXXX\"\nmsgstr \"Шуудангийн кодоо XXXXX хэлбэрээр оруулна уу.\"\n\n#: il/forms.py:51\nmsgid \"Enter a valid ID number.\"\nmsgstr \"Зөв ID дугаар оруулна уу.\"\n\n#: in_/forms.py:41\nmsgid \"Enter a zip code in the format XXXXXX or XXX XXX.\"\nmsgstr \"XXXXXX эсвэл XXX XXX форматаар zip кодыг оруулна уу.\"\n\n#: in_/forms.py:64\nmsgid \"Enter an Indian state or territory.\"\nmsgstr \"Энэтхэгийн муж эсвэл газар нутаг оруулна уу.\"\n\n#: in_/forms.py:103\nmsgid \"Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.\"\nmsgstr \"\"\n\"Утасны дугаар нь 02X-8X эсвэл 03X-7X эсвэл 04X-6X форматтай байх хэрэгтэй.\"\n\n#: is_/forms.py:22\nmsgid \"\"\n\"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.\"\nmsgstr \"Исландын үнэмлэхний дугаараа XXXXXX-XXXX хэлбэрээр оруулна уу.\"\n\n#: is_/forms.py:23\nmsgid \"The Icelandic identification number is not valid.\"\nmsgstr \"Исландын үнэмлэхний дугаар хүчингүй байна.\"\n\n#: it/forms.py:21\nmsgid \"Enter a valid zip code.\"\nmsgstr \"Шуудангийн индексээ оруулна уу.\"\n\n#: it/forms.py:48\nmsgid \"Enter a valid Social Security number.\"\nmsgstr \"Нийгмийн хамгааллын дугаараа оруулна уу.\"\n\n#: it/forms.py:73\nmsgid \"Enter a valid VAT number.\"\nmsgstr \"VAT дугаараа оруулна уу.\"\n\n#: jp/forms.py:19\nmsgid \"Enter a postal code in the format XXXXXXX or XXX-XXXX.\"\nmsgstr \"Шуудангийн дугаараа XXXXXXX буюу XXX-XXXX хэлбэрээр оруулна уу.\"\n\n#: jp/jp_prefectures.py:4\nmsgid \"Hokkaido\"\nmsgstr \"Хоккайдо\"\n\n#: jp/jp_prefectures.py:5\nmsgid \"Aomori\"\nmsgstr \"Аомори\"\n\n#: jp/jp_prefectures.py:6\nmsgid \"Iwate\"\nmsgstr \"Иватэ\"\n\n#: jp/jp_prefectures.py:7\nmsgid \"Miyagi\"\nmsgstr \"Мияаги\"\n\n#: jp/jp_prefectures.py:8\nmsgid \"Akita\"\nmsgstr \"Акита\"\n\n#: jp/jp_prefectures.py:9\nmsgid \"Yamagata\"\nmsgstr \"Ямагата\"\n\n#: jp/jp_prefectures.py:10\nmsgid \"Fukushima\"\nmsgstr \"Фукушима\"\n\n#: jp/jp_prefectures.py:11\nmsgid \"Ibaraki\"\nmsgstr \"Ибараки\"\n\n#: jp/jp_prefectures.py:12\nmsgid \"Tochigi\"\nmsgstr \"Точиги\"\n\n#: jp/jp_prefectures.py:13\nmsgid \"Gunma\"\nmsgstr \"Гунма\"\n\n#: jp/jp_prefectures.py:14\nmsgid \"Saitama\"\nmsgstr \"Саитама\"\n\n#: jp/jp_prefectures.py:15\nmsgid \"Chiba\"\nmsgstr \"Чиба\"\n\n#: jp/jp_prefectures.py:16\nmsgid \"Tokyo\"\nmsgstr \"Токио\"\n\n#: jp/jp_prefectures.py:17\nmsgid \"Kanagawa\"\nmsgstr \"Канагва\"\n\n#: jp/jp_prefectures.py:18\nmsgid \"Yamanashi\"\nmsgstr \"Яманаши\"\n\n#: jp/jp_prefectures.py:19\nmsgid \"Nagano\"\nmsgstr \"Нагано\"\n\n#: jp/jp_prefectures.py:20\nmsgid \"Niigata\"\nmsgstr \"Нийгата\"\n\n#: jp/jp_prefectures.py:21\nmsgid \"Toyama\"\nmsgstr \"Тояма\"\n\n#: jp/jp_prefectures.py:22\nmsgid \"Ishikawa\"\nmsgstr \"Ишикава\"\n\n#: jp/jp_prefectures.py:23\nmsgid \"Fukui\"\nmsgstr \"Фукуи\"\n\n#: jp/jp_prefectures.py:24\nmsgid \"Gifu\"\nmsgstr \"Гифу\"\n\n#: jp/jp_prefectures.py:25\nmsgid \"Shizuoka\"\nmsgstr \"Шизуока\"\n\n#: jp/jp_prefectures.py:26\nmsgid \"Aichi\"\nmsgstr \"Аичи\"\n\n#: jp/jp_prefectures.py:27\nmsgid \"Mie\"\nmsgstr \"Мие\"\n\n#: jp/jp_prefectures.py:28\nmsgid \"Shiga\"\nmsgstr \"Шига\"\n\n#: jp/jp_prefectures.py:29\nmsgid \"Kyoto\"\nmsgstr \"Кёто\"\n\n#: jp/jp_prefectures.py:30\nmsgid \"Osaka\"\nmsgstr \"Осака\"\n\n#: jp/jp_prefectures.py:31\nmsgid \"Hyogo\"\nmsgstr \"Нёго\"\n\n#: jp/jp_prefectures.py:32\nmsgid \"Nara\"\nmsgstr \"Нара\"\n\n#: jp/jp_prefectures.py:33\nmsgid \"Wakayama\"\nmsgstr \"Вакаяма\"\n\n#: jp/jp_prefectures.py:34\nmsgid \"Tottori\"\nmsgstr \"Тоттори\"\n\n#: jp/jp_prefectures.py:35\nmsgid \"Shimane\"\nmsgstr \"Шиманэ\"\n\n#: jp/jp_prefectures.py:36\nmsgid \"Okayama\"\nmsgstr \"Окаяма\"\n\n#: jp/jp_prefectures.py:37\nmsgid \"Hiroshima\"\nmsgstr \"Хирошима\"\n\n#: jp/jp_prefectures.py:38\nmsgid \"Yamaguchi\"\nmsgstr \"Ямагучи\"\n\n#: jp/jp_prefectures.py:39\nmsgid \"Tokushima\"\nmsgstr \"Токушима\"\n\n#: jp/jp_prefectures.py:40\nmsgid \"Kagawa\"\nmsgstr \"Кагава\"\n\n#: jp/jp_prefectures.py:41\nmsgid \"Ehime\"\nmsgstr \"Эхимэ\"\n\n#: jp/jp_prefectures.py:42\nmsgid \"Kochi\"\nmsgstr \"Кочи\"\n\n#: jp/jp_prefectures.py:43\nmsgid \"Fukuoka\"\nmsgstr \"Фукуока\"\n\n#: jp/jp_prefectures.py:44\nmsgid \"Saga\"\nmsgstr \"Сага\"\n\n#: jp/jp_prefectures.py:45\nmsgid \"Nagasaki\"\nmsgstr \"Нагасаки\"\n\n#: jp/jp_prefectures.py:46\nmsgid \"Kumamoto\"\nmsgstr \"Кумамото\"\n\n#: jp/jp_prefectures.py:47\nmsgid \"Oita\"\nmsgstr \"Оита\"\n\n#: jp/jp_prefectures.py:48\nmsgid \"Miyazaki\"\nmsgstr \"Миязаки\"\n\n#: jp/jp_prefectures.py:49\nmsgid \"Kagoshima\"\nmsgstr \"Кагошима\"\n\n#: jp/jp_prefectures.py:50\nmsgid \"Okinawa\"\nmsgstr \"Окинава\"\n\n#: kw/forms.py:27\nmsgid \"Enter a valid Kuwaiti Civil ID number\"\nmsgstr \"Кувайтын иргэний үнэмлэхний дугаарыг оруулна уу.\"\n\n#: mk/forms.py:18\nmsgid \"\"\n\"Identity card numbers must contain either 4 to 7 digits or an uppercase \"\n\"letter and 7 digits.\"\nmsgstr \"\"\n\"Иргэний үнэмлэхний дугаар нь тоо болон том үсгээс бүрдэх 4-өөс 7 хүртлэх \"\n\"орон, түүний дараа дан тооноос бүрдэх 7 оронгоор бүтнэ.\"\n\n#: mk/forms.py:57 si/forms.py:24\nmsgid \"This field should contain exactly 13 digits.\"\nmsgstr \"Энэ талбарт 13 оронтой тоо байх хэрэгтэй.\"\n\n#: mk/forms.py:58\nmsgid \"The first 7 digits of the UMCN must represent a valid past date.\"\nmsgstr \"UMCN-н эхний 7 орон бодит өнгөрсөн огноог илэрхийлэх ёстой.\"\n\n#: mk/forms.py:59\nmsgid \"The UMCN is not valid.\"\nmsgstr \"UMCN буруу байна.\"\n\n#: mk/mk_choices.py:10\nmsgid \"Aerodrom\"\nmsgstr \"Аэродром\"\n\n#: mk/mk_choices.py:11\nmsgid \"Aračinovo\"\nmsgstr \"Aračinovo\"\n\n#: mk/mk_choices.py:12\nmsgid \"Berovo\"\nmsgstr \"Berovo\"\n\n#: mk/mk_choices.py:13\nmsgid \"Bitola\"\nmsgstr \"Bitola\"\n\n#: mk/mk_choices.py:14\nmsgid \"Bogdanci\"\nmsgstr \"Bogdanci\"\n\n#: mk/mk_choices.py:15\nmsgid \"Bogovinje\"\nmsgstr \"Bogovinje\"\n\n#: mk/mk_choices.py:16\nmsgid \"Bosilovo\"\nmsgstr \"Босилово\"\n\n#: mk/mk_choices.py:17\nmsgid \"Brvenica\"\nmsgstr \"Brvenica\"\n\n#: mk/mk_choices.py:18\nmsgid \"Butel\"\nmsgstr \"Бутел\"\n\n#: mk/mk_choices.py:19\nmsgid \"Valandovo\"\nmsgstr \"Валандово\"\n\n#: mk/mk_choices.py:20\nmsgid \"Vasilevo\"\nmsgstr \"Василэво\"\n\n#: mk/mk_choices.py:21\nmsgid \"Vevčani\"\nmsgstr \"Vevčani\"\n\n#: mk/mk_choices.py:22\nmsgid \"Veles\"\nmsgstr \"Veles\"\n\n#: mk/mk_choices.py:23\nmsgid \"Vinica\"\nmsgstr \"Винка\"\n\n#: mk/mk_choices.py:24\nmsgid \"Vraneštica\"\nmsgstr \"Vraneštica\"\n\n#: mk/mk_choices.py:25\nmsgid \"Vrapčište\"\nmsgstr \"Vrapčište\"\n\n#: mk/mk_choices.py:26\nmsgid \"Gazi Baba\"\nmsgstr \"Gazi Baba\"\n\n#: mk/mk_choices.py:27\nmsgid \"Gevgelija\"\nmsgstr \"Gevgelija\"\n\n#: mk/mk_choices.py:28\nmsgid \"Gostivar\"\nmsgstr \"Gostivar\"\n\n#: mk/mk_choices.py:29\nmsgid \"Gradsko\"\nmsgstr \"Gradsko\"\n\n#: mk/mk_choices.py:30\nmsgid \"Debar\"\nmsgstr \"Debar\"\n\n#: mk/mk_choices.py:31\nmsgid \"Debarca\"\nmsgstr \"Debarca\"\n\n#: mk/mk_choices.py:32\nmsgid \"Delčevo\"\nmsgstr \"Delčevo\"\n\n#: mk/mk_choices.py:33\nmsgid \"Demir Kapija\"\nmsgstr \"Demir Kapija\"\n\n#: mk/mk_choices.py:34\nmsgid \"Demir Hisar\"\nmsgstr \"Demir Hisar\"\n\n#: mk/mk_choices.py:35\nmsgid \"Dolneni\"\nmsgstr \"Dolneni\"\n\n#: mk/mk_choices.py:36\nmsgid \"Drugovo\"\nmsgstr \"Drugovo\"\n\n#: mk/mk_choices.py:37\nmsgid \"Gjorče Petrov\"\nmsgstr \"Gjorče Petrov\"\n\n#: mk/mk_choices.py:38\nmsgid \"Želino\"\nmsgstr \"Želino\"\n\n#: mk/mk_choices.py:39\nmsgid \"Zajas\"\nmsgstr \"Zajas\"\n\n#: mk/mk_choices.py:40\nmsgid \"Zelenikovo\"\nmsgstr \"Zelenikovo\"\n\n#: mk/mk_choices.py:41\nmsgid \"Zrnovci\"\nmsgstr \"Zrnovci\"\n\n#: mk/mk_choices.py:42\nmsgid \"Ilinden\"\nmsgstr \"Ilinden\"\n\n#: mk/mk_choices.py:43\nmsgid \"Jegunovce\"\nmsgstr \"Jegunovce\"\n\n#: mk/mk_choices.py:44\nmsgid \"Kavadarci\"\nmsgstr \"Kavadarci\"\n\n#: mk/mk_choices.py:45\nmsgid \"Karbinci\"\nmsgstr \"Karbinci\"\n\n#: mk/mk_choices.py:46\nmsgid \"Karpoš\"\nmsgstr \"Karpoš\"\n\n#: mk/mk_choices.py:47\nmsgid \"Kisela Voda\"\nmsgstr \"Kisela Voda\"\n\n#: mk/mk_choices.py:48\nmsgid \"Kičevo\"\nmsgstr \"Kičevo\"\n\n#: mk/mk_choices.py:49\nmsgid \"Konče\"\nmsgstr \"Konče\"\n\n#: mk/mk_choices.py:50\nmsgid \"Koćani\"\nmsgstr \"Koćani\"\n\n#: mk/mk_choices.py:51\nmsgid \"Kratovo\"\nmsgstr \"Kratovo\"\n\n#: mk/mk_choices.py:52\nmsgid \"Kriva Palanka\"\nmsgstr \"Kriva Palanka\"\n\n#: mk/mk_choices.py:53\nmsgid \"Krivogaštani\"\nmsgstr \"Krivogaštani\"\n\n#: mk/mk_choices.py:54\nmsgid \"Kruševo\"\nmsgstr \"Kruševo\"\n\n#: mk/mk_choices.py:55\nmsgid \"Kumanovo\"\nmsgstr \"Kumanovo\"\n\n#: mk/mk_choices.py:56\nmsgid \"Lipkovo\"\nmsgstr \"Lipkovo\"\n\n#: mk/mk_choices.py:57\nmsgid \"Lozovo\"\nmsgstr \"Lozovo\"\n\n#: mk/mk_choices.py:58\nmsgid \"Mavrovo i Rostuša\"\nmsgstr \"Mavrovo i Rostuša\"\n\n#: mk/mk_choices.py:59\nmsgid \"Makedonska Kamenica\"\nmsgstr \"Makedonska Kamenica\"\n\n#: mk/mk_choices.py:60\nmsgid \"Makedonski Brod\"\nmsgstr \"Makedonski Brod\"\n\n#: mk/mk_choices.py:61\nmsgid \"Mogila\"\nmsgstr \"Mogila\"\n\n#: mk/mk_choices.py:62\nmsgid \"Negotino\"\nmsgstr \"Negotino\"\n\n#: mk/mk_choices.py:63\nmsgid \"Novaci\"\nmsgstr \"Novaci\"\n\n#: mk/mk_choices.py:64\nmsgid \"Novo Selo\"\nmsgstr \"Novo Selo\"\n\n#: mk/mk_choices.py:65\nmsgid \"Oslomej\"\nmsgstr \"Oslomej\"\n\n#: mk/mk_choices.py:66\nmsgid \"Ohrid\"\nmsgstr \"Ohrid\"\n\n#: mk/mk_choices.py:67\nmsgid \"Petrovec\"\nmsgstr \"Petrovec\"\n\n#: mk/mk_choices.py:68\nmsgid \"Pehčevo\"\nmsgstr \"Pehčevo\"\n\n#: mk/mk_choices.py:69\nmsgid \"Plasnica\"\nmsgstr \"Plasnica\"\n\n#: mk/mk_choices.py:70\nmsgid \"Prilep\"\nmsgstr \"Prilep\"\n\n#: mk/mk_choices.py:71\nmsgid \"Probištip\"\nmsgstr \"Probištip\"\n\n#: mk/mk_choices.py:72\nmsgid \"Radoviš\"\nmsgstr \"Radoviš\"\n\n#: mk/mk_choices.py:73\nmsgid \"Rankovce\"\nmsgstr \"Rankovce\"\n\n#: mk/mk_choices.py:74\nmsgid \"Resen\"\nmsgstr \"Resen\"\n\n#: mk/mk_choices.py:75\nmsgid \"Rosoman\"\nmsgstr \"Rosoman\"\n\n#: mk/mk_choices.py:76\nmsgid \"Saraj\"\nmsgstr \"Saraj\"\n\n#: mk/mk_choices.py:77\nmsgid \"Sveti Nikole\"\nmsgstr \"Sveti Nikole\"\n\n#: mk/mk_choices.py:78\nmsgid \"Sopište\"\nmsgstr \"Sopište\"\n\n#: mk/mk_choices.py:79\nmsgid \"Star Dojran\"\nmsgstr \"Star Dojran\"\n\n#: mk/mk_choices.py:80\nmsgid \"Staro Nagoričane\"\nmsgstr \"Staro Nagoričane\"\n\n#: mk/mk_choices.py:81\nmsgid \"Struga\"\nmsgstr \"Struga\"\n\n#: mk/mk_choices.py:82\nmsgid \"Strumica\"\nmsgstr \"Strumica\"\n\n#: mk/mk_choices.py:83\nmsgid \"Studeničani\"\nmsgstr \"Studeničani\"\n\n#: mk/mk_choices.py:84\nmsgid \"Tearce\"\nmsgstr \"Tearce\"\n\n#: mk/mk_choices.py:85\nmsgid \"Tetovo\"\nmsgstr \"Tetovo\"\n\n#: mk/mk_choices.py:86\nmsgid \"Centar\"\nmsgstr \"Centar\"\n\n#: mk/mk_choices.py:87\nmsgid \"Centar-Župa\"\nmsgstr \"Centar-Župa\"\n\n#: mk/mk_choices.py:88\nmsgid \"Čair\"\nmsgstr \"Čair\"\n\n#: mk/mk_choices.py:89\nmsgid \"Čaška\"\nmsgstr \"Čaška\"\n\n#: mk/mk_choices.py:90\nmsgid \"Češinovo-Obleševo\"\nmsgstr \"Češinovo-Obleševo\"\n\n#: mk/mk_choices.py:91\nmsgid \"Čučer-Sandevo\"\nmsgstr \"Čučer-Sandevo\"\n\n#: mk/mk_choices.py:92\nmsgid \"Štip\"\nmsgstr \"Štip\"\n\n#: mk/mk_choices.py:93\nmsgid \"Šuto Orizari\"\nmsgstr \"Šuto Orizari\"\n\n#: mk/models.py:11\nmsgid \"Macedonian identity card number\"\nmsgstr \"Македонийн иргэний үнэмлэхийн дугаар\"\n\n#: mk/models.py:25\nmsgid \"A Macedonian municipality (2 character code)\"\nmsgstr \"Македонийн хотын захиргаа (2 оронтой код)\"\n\n#: mk/models.py:35\nmsgid \"Unique master citizen number (13 digits)\"\nmsgstr \"Давтагдашгүй мастер иргэний дугаар (13 оронтой тоо)\"\n\n#: mx/forms.py:67\nmsgid \"Enter a valid zip code in the format XXXXX.\"\nmsgstr \"XXXXX форматаар бодит zip код оруулна уу.\"\n\n#: mx/forms.py:110\nmsgid \"Enter a valid RFC.\"\nmsgstr \"Бодит RFC оруулна уу.\"\n\n#: mx/forms.py:111\nmsgid \"Invalid checksum for RFC.\"\nmsgstr \"RFC хяналтын нийлбэр буруу байна.\"\n\n#: mx/forms.py:191\nmsgid \"Enter a valid CURP.\"\nmsgstr \"Бодит CURP оруулна уу.\"\n\n#: mx/forms.py:192\nmsgid \"Invalid checksum for CURP.\"\nmsgstr \"CURP хяналтын нийлбэр буруу байна.\"\n\n#: mx/models.py:14\nmsgid \"Mexico state (three uppercase letters)\"\nmsgstr \"Мексикийн муж (3 том үсэг)\"\n\n#: mx/models.py:27\nmsgid \"Mexico zip code\"\nmsgstr \"Мексикийн zip код\"\n\n#: mx/models.py:44\nmsgid \"Mexican RFC\"\nmsgstr \"Мексикийн RFC\"\n\n#: mx/models.py:61\nmsgid \"Mexican CURP\"\nmsgstr \"Мексикийн CURP\"\n\n#: mx/mx_states.py:14\nmsgid \"Aguascalientes\"\nmsgstr \"Агуаскалиентэс\"\n\n#: mx/mx_states.py:15\nmsgid \"Baja California\"\nmsgstr \"Бажа Калифорни\"\n\n#: mx/mx_states.py:16\nmsgid \"Baja California Sur\"\nmsgstr \"Бажа Калифорни Сур\"\n\n#: mx/mx_states.py:17\nmsgid \"Campeche\"\nmsgstr \"Кампече\"\n\n#: mx/mx_states.py:18\nmsgid \"Chihuahua\"\nmsgstr \"Чихуахуа\"\n\n#: mx/mx_states.py:19\nmsgid \"Chiapas\"\nmsgstr \"Чиапас\"\n\n#: mx/mx_states.py:20\nmsgid \"Coahuila\"\nmsgstr \"Коахуила\"\n\n#: mx/mx_states.py:21\nmsgid \"Colima\"\nmsgstr \"Колима\"\n\n#: mx/mx_states.py:22\nmsgid \"Distrito Federal\"\nmsgstr \"Холбооны Дистрито\"\n\n#: mx/mx_states.py:23\nmsgid \"Durango\"\nmsgstr \"Дуранго\"\n\n#: mx/mx_states.py:24\nmsgid \"Guerrero\"\nmsgstr \"Гуерреро\"\n\n#: mx/mx_states.py:25\nmsgid \"Guanajuato\"\nmsgstr \"Гуанажуато\"\n\n#: mx/mx_states.py:26\nmsgid \"Hidalgo\"\nmsgstr \"Хидалго\"\n\n#: mx/mx_states.py:27\nmsgid \"Jalisco\"\nmsgstr \"Жалиско\"\n\n#: mx/mx_states.py:28\nmsgid \"Estado de México\"\nmsgstr \"Мехико\"\n\n#: mx/mx_states.py:29\nmsgid \"Michoacán\"\nmsgstr \"Мичоакан\"\n\n#: mx/mx_states.py:30\nmsgid \"Morelos\"\nmsgstr \"Морелос\"\n\n#: mx/mx_states.py:31\nmsgid \"Nayarit\"\nmsgstr \"Наярит\"\n\n#: mx/mx_states.py:32\nmsgid \"Nuevo León\"\nmsgstr \"Нуево Леон\"\n\n#: mx/mx_states.py:33\nmsgid \"Oaxaca\"\nmsgstr \"Вахака\"\n\n#: mx/mx_states.py:34\nmsgid \"Puebla\"\nmsgstr \"Пуебло\"\n\n#: mx/mx_states.py:35\nmsgid \"Querétaro\"\nmsgstr \"Куеретаро\"\n\n#: mx/mx_states.py:36\nmsgid \"Quintana Roo\"\nmsgstr \"Кинтана Ро\"\n\n#: mx/mx_states.py:37\nmsgid \"Sinaloa\"\nmsgstr \"Синалоа\"\n\n#: mx/mx_states.py:38\nmsgid \"San Luis Potosí\"\nmsgstr \"Сан Луис Потоси\"\n\n#: mx/mx_states.py:39\nmsgid \"Sonora\"\nmsgstr \"Сонора\"\n\n#: mx/mx_states.py:40\nmsgid \"Tabasco\"\nmsgstr \"Табаско\"\n\n#: mx/mx_states.py:41\nmsgid \"Tamaulipas\"\nmsgstr \"Тамаулипас\"\n\n#: mx/mx_states.py:42\nmsgid \"Tlaxcala\"\nmsgstr \"Тласкала\"\n\n#: mx/mx_states.py:43\nmsgid \"Veracruz\"\nmsgstr \"Веракруз\"\n\n#: mx/mx_states.py:44\nmsgid \"Yucatán\"\nmsgstr \"Юкатан\"\n\n#: mx/mx_states.py:45\nmsgid \"Zacatecas\"\nmsgstr \"Закатекас\"\n\n#: nl/forms.py:26\nmsgid \"Enter a valid postal code\"\nmsgstr \"Шуудангийн дугаараа оруулна уу.\"\n\n#: nl/forms.py:82\nmsgid \"Enter a valid SoFi number\"\nmsgstr \"SoFi дугаараа оруулна уу.\"\n\n#: nl/nl_provinces.py:4\nmsgid \"Drenthe\"\nmsgstr \"Дрэнтэ\"\n\n#: nl/nl_provinces.py:5\nmsgid \"Flevoland\"\nmsgstr \"Флеволанд\"\n\n#: nl/nl_provinces.py:6\nmsgid \"Friesland\"\nmsgstr \"Фраисланд\"\n\n#: nl/nl_provinces.py:7\nmsgid \"Gelderland\"\nmsgstr \"Гелдерланд\"\n\n#: nl/nl_provinces.py:8\nmsgid \"Groningen\"\nmsgstr \"Гронинген\"\n\n#: nl/nl_provinces.py:10\nmsgid \"Noord-Brabant\"\nmsgstr \"Нуурд-Брабант\"\n\n#: nl/nl_provinces.py:11\nmsgid \"Noord-Holland\"\nmsgstr \"Нуурд-Холланд\"\n\n#: nl/nl_provinces.py:12\nmsgid \"Overijssel\"\nmsgstr \"Овераисл\"\n\n#: nl/nl_provinces.py:13\nmsgid \"Utrecht\"\nmsgstr \"Утрехт\"\n\n#: nl/nl_provinces.py:14\nmsgid \"Zeeland\"\nmsgstr \"Зийланд\"\n\n#: nl/nl_provinces.py:15\nmsgid \"Zuid-Holland\"\nmsgstr \"Заит-Холланд\"\n\n#: no/forms.py:39\nmsgid \"Enter a valid Norwegian social security number.\"\nmsgstr \"Норвегийн нийгмийн хамгааллын дугаараа оруулна уу.\"\n\n#: pe/forms.py:28\nmsgid \"This field requires 8 digits.\"\nmsgstr \"Энэ хэсэгт 8 оронтой тоо оруулна.\"\n\n#: pe/forms.py:56\nmsgid \"This field requires 11 digits.\"\nmsgstr \"Энэ хэсэгт 11 оронтой тоо оруулна.\"\n\n#: pl/forms.py:42\nmsgid \"National Identification Number consists of 11 digits.\"\nmsgstr \"Үндэсний таних дугаар 11 оронтой байна.\"\n\n#: pl/forms.py:43\nmsgid \"Wrong checksum for the National Identification Number.\"\nmsgstr \"Үндэсний таних дугаарын шалгах нийлбэр буруу байна.\"\n\n#: pl/forms.py:79\nmsgid \"National ID Card Number consists of 3 letters and 6 digits.\"\nmsgstr \"Үндэсний ID Картын Дугаар нь 3 үсэг болон 6 тоо оронгоос бүрдэнэ.\"\n\n#: pl/forms.py:80\nmsgid \"Wrong checksum for the National ID Card Number.\"\nmsgstr \"Үндэсний ID Картын Дугаарын хяналтын нийлбэр буруу байна.\"\n\n#: pl/forms.py:131\nmsgid \"\"\n\"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or \"\n\"XXXXXXXXXX.\"\nmsgstr \"\"\n\"Зөв татварын дугаар оруулна уу (NIP) формат нь XXX-XXX-XX-XX, XXX-XX-XX-XXX \"\n\"эсвэл XXXXXXXXXX хэлбэртэй байна.\"\n\n#: pl/forms.py:132\nmsgid \"Wrong checksum for the Tax Number (NIP).\"\nmsgstr \"Татварын дугаарын шалгах нийлбэр буруу байна.\"\n\n#: pl/forms.py:171\nmsgid \"National Business Register Number (REGON) consists of 9 or 14 digits.\"\nmsgstr \"\"\n\"Байгууллагын бүртгэлийн дугаар (REGON) нь 9 эсвэл 14 оронтой тоо байх \"\n\"хэрэгтэй.\"\n\n#: pl/forms.py:172\nmsgid \"Wrong checksum for the National Business Register Number (REGON).\"\nmsgstr \"Үндэсний бизнесийн бүртгэлийн дугаарын шалгах нийлбэр буруу байна.\"\n\n#: pl/forms.py:212\nmsgid \"Enter a postal code in the format XX-XXX.\"\nmsgstr \"Шуудангийн дугаараа XX-XXX хэлбэрээр оруулна уу.\"\n\n#: pl/pl_voivodeships.py:8\nmsgid \"Lower Silesia\"\nmsgstr \"Доод Силесиа\"\n\n#: pl/pl_voivodeships.py:9\nmsgid \"Kuyavia-Pomerania\"\nmsgstr \"Куявиа-Помераниа\"\n\n#: pl/pl_voivodeships.py:10\nmsgid \"Lublin\"\nmsgstr \"Лублин\"\n\n#: pl/pl_voivodeships.py:11\nmsgid \"Lubusz\"\nmsgstr \"Лубуски\"\n\n#: pl/pl_voivodeships.py:12\nmsgid \"Lodz\"\nmsgstr \"Лодз\"\n\n#: pl/pl_voivodeships.py:13\nmsgid \"Lesser Poland\"\nmsgstr \"Бага Польш\"\n\n#: pl/pl_voivodeships.py:14\nmsgid \"Masovia\"\nmsgstr \"Масовиа\"\n\n#: pl/pl_voivodeships.py:15\nmsgid \"Opole\"\nmsgstr \"Ополе\"\n\n#: pl/pl_voivodeships.py:16\nmsgid \"Subcarpatia\"\nmsgstr \"Субкарпатиа\"\n\n#: pl/pl_voivodeships.py:17\nmsgid \"Podlasie\"\nmsgstr \"Подласие\"\n\n#: pl/pl_voivodeships.py:18\nmsgid \"Pomerania\"\nmsgstr \"Помераниа\"\n\n#: pl/pl_voivodeships.py:19\nmsgid \"Silesia\"\nmsgstr \"Силесиа\"\n\n#: pl/pl_voivodeships.py:20\nmsgid \"Swietokrzyskie\"\nmsgstr \"Свентокшишки\"\n\n#: pl/pl_voivodeships.py:21\nmsgid \"Warmia-Masuria\"\nmsgstr \"Вармиа-Масуриа\"\n\n#: pl/pl_voivodeships.py:22\nmsgid \"Greater Poland\"\nmsgstr \"Их Польш\"\n\n#: pl/pl_voivodeships.py:23\nmsgid \"West Pomerania\"\nmsgstr \"Баруун Помераниа\"\n\n#: pt/forms.py:19\nmsgid \"Enter a zip code in the format XXXX-XXX.\"\nmsgstr \"Зип кодоо XXXX-XXX.хэлбэрээр оруулна уу.\"\n\n#: pt/forms.py:39\nmsgid \"Phone numbers must have 9 digits, or start by + or 00.\"\nmsgstr \"Утасны дугаар 9 оронтой байх хэрэгтэй эсвэл  + болон 00 эхлэнэ.\"\n\n#: ro/forms.py:22\nmsgid \"Enter a valid CIF.\"\nmsgstr \"CIF оруулна уу.\"\n\n#: ro/forms.py:59\nmsgid \"Enter a valid CNP.\"\nmsgstr \"CNP оруулна уу.\"\n\n#: ro/forms.py:143\nmsgid \"Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format\"\nmsgstr \"IBAN-ийг ROXX-XXXX-XXXX-XXXX-XXXX-XXXX хэлбэрээр оруулна уу.\"\n\n#: ro/forms.py:175\nmsgid \"Phone numbers must be in XXXX-XXXXXX format.\"\nmsgstr \"Утасны дугаар XXXX-XXXXXX хэлбэрээр байх ёстой.\"\n\n#: ro/forms.py:200\nmsgid \"Enter a valid postal code in the format XXXXXX\"\nmsgstr \"Шуудангийн дугаараа XXXXXX хэлбэрээр оруулна уу.\"\n\n#: ru/forms.py:37\nmsgid \"Enter a postal code in the format XXXXXX.\"\nmsgstr \"XXXXXX форматаар шуудангын кодыг оруулна уу.\"\n\n#: ru/forms.py:50\nmsgid \"Enter a passport number in the format XXXX XXXXXX.\"\nmsgstr \"XXXX XXXXXX форматаар паспортын дугаарыг оруулна уу. \"\n\n#: ru/forms.py:63\nmsgid \"Enter a passport number in the format XX XXXXXXX.\"\nmsgstr \"XX XXXXXXX форматаар паспортын дугаарыг оруулна уу. \"\n\n#: ru/ru_regions.py:10\nmsgid \"Central Federal County\"\nmsgstr \"Төв Холбооны Муж\"\n\n#: ru/ru_regions.py:11\nmsgid \"South Federal County\"\nmsgstr \"Өмнөд Холбооны Муж\"\n\n#: ru/ru_regions.py:12\nmsgid \"North-West Federal County\"\nmsgstr \"Баруун-Хойд Холбооны Муж\"\n\n#: ru/ru_regions.py:13\nmsgid \"Far-East Federal County\"\nmsgstr \"Зүүн Холбооны Муж\"\n\n#: ru/ru_regions.py:14\nmsgid \"Siberian Federal County\"\nmsgstr \"Сибирын Холбооны Муж\"\n\n#: ru/ru_regions.py:15\nmsgid \"Ural Federal County\"\nmsgstr \"Уралын Холбооны Муж\"\n\n#: ru/ru_regions.py:16\nmsgid \"Privolzhsky Federal County\"\nmsgstr \"Привольский Холбооны Муж\"\n\n#: ru/ru_regions.py:17\nmsgid \"North-Caucasian Federal County\"\nmsgstr \"Хойд-Кавказын Холбооны Муж\"\n\n#: ru/ru_regions.py:21\nmsgid \"Moskva\"\nmsgstr \"Москва\"\n\n#: ru/ru_regions.py:22\nmsgid \"Saint-Peterburg\"\nmsgstr \"Сант-Петербург\"\n\n#: ru/ru_regions.py:23\nmsgid \"Moskovskaya oblast'\"\nmsgstr \"Москвагийн хүрээ\"\n\n#: ru/ru_regions.py:24\nmsgid \"Adygeya, Respublika\"\nmsgstr \"бүгд найрамдах Адыгея улс\"\n\n#: ru/ru_regions.py:25\nmsgid \"Bashkortostan, Respublika\"\nmsgstr \"бүгд найрамдах Башкортостан улс\"\n\n#: ru/ru_regions.py:26\nmsgid \"Buryatia, Respublika\"\nmsgstr \"бүгд найрамдах Бурят улс\"\n\n#: ru/ru_regions.py:27\nmsgid \"Altay, Respublika\"\nmsgstr \"бүгд найрамдах Алтай улс\"\n\n#: ru/ru_regions.py:28\nmsgid \"Dagestan, Respublika\"\nmsgstr \"бүгд найрамдах Дагесиан улс\"\n\n#: ru/ru_regions.py:29\nmsgid \"Ingushskaya Respublika\"\nmsgstr \"Бүгд найрамдах Ингүш Улс\"\n\n#: ru/ru_regions.py:30\nmsgid \"Kabardino-Balkarskaya Respublika\"\nmsgstr \"Бүгд найрамдах Кабардино-Балкар Улс\"\n\n#: ru/ru_regions.py:31\nmsgid \"Kalmykia, Respublika\"\nmsgstr \"Бүгд найрамдах Халмиг Улс\"\n\n#: ru/ru_regions.py:32\nmsgid \"Karachaevo-Cherkesskaya Respublika\"\nmsgstr \"Бүгд найрамдах Халмиг Улс\"\n\n#: ru/ru_regions.py:33\nmsgid \"Karelia, Respublika\"\nmsgstr \"Бүгд найрамдах Карачаево-Черкес Улс\"\n\n#: ru/ru_regions.py:34\nmsgid \"Komi, Respublika\"\nmsgstr \"Бүгд найрамдах Коми Улс\"\n\n#: ru/ru_regions.py:35\nmsgid \"Mariy Ehl, Respublika\"\nmsgstr \"Бүгд найрамдах Марий Эл Улс\"\n\n#: ru/ru_regions.py:36\nmsgid \"Mordovia, Respublika\"\nmsgstr \"Бүгд найрамдах Мордов Улс\"\n\n#: ru/ru_regions.py:37\nmsgid \"Sakha, Respublika (Yakutiya)\"\nmsgstr \"Бүгд найрамдах Саха Улс\"\n\n#: ru/ru_regions.py:38\nmsgid \"Severnaya Osetia, Respublika (Alania)\"\nmsgstr \"Бүгд найрамдах Коми Улс\"\n\n#: ru/ru_regions.py:39\nmsgid \"Tatarstan, Respublika\"\nmsgstr \"Бүгд найрамдах Татарстан Улс\"\n\n#: ru/ru_regions.py:40\nmsgid \"Tyva, Respublika (Tuva)\"\nmsgstr \"Бүгд найрамдах Тува Улс\"\n\n#: ru/ru_regions.py:41\nmsgid \"Udmurtskaya Respublika\"\nmsgstr \"Бүгд найрамдах Удмурт Улс\"\n\n#: ru/ru_regions.py:42\nmsgid \"Khakassiya, Respublika\"\nmsgstr \"Бүгд найрамдах Хакаш Улс\"\n\n#: ru/ru_regions.py:43\nmsgid \"Chechenskaya Respublika\"\nmsgstr \"Бүгд найрамдах Чечен Улс\"\n\n#: ru/ru_regions.py:44\nmsgid \"Chuvashskaya Respublika\"\nmsgstr \"Бүгд найрамдах Чуваш Улс\"\n\n#: ru/ru_regions.py:45\nmsgid \"Altayskiy Kray\"\nmsgstr \"Алтайн хязгаар\"\n\n#: ru/ru_regions.py:46\nmsgid \"Zabaykalskiy Kray\"\nmsgstr \"Забайкалийн хязгаар\"\n\n#: ru/ru_regions.py:47\nmsgid \"Kamchatskiy Kray\"\nmsgstr \"Камчатскийн хязгаар\"\n\n#: ru/ru_regions.py:48\nmsgid \"Krasnodarskiy Kray\"\nmsgstr \"Краснодарийн хязгаар\"\n\n#: ru/ru_regions.py:49\nmsgid \"Krasnoyarskiy Kray\"\nmsgstr \"Красноярскийн хязгаар\"\n\n#: ru/ru_regions.py:50\nmsgid \"Permskiy Kray\"\nmsgstr \"Пермийн хязгаар\"\n\n#: ru/ru_regions.py:51\nmsgid \"Primorskiy Kray\"\nmsgstr \"Приморийн хязгаар\"\n\n#: ru/ru_regions.py:52\nmsgid \"Stavropol'siyy Kray\"\nmsgstr \"Ставрополийн хязгаар\"\n\n#: ru/ru_regions.py:53\nmsgid \"Khabarovskiy Kray\"\nmsgstr \"Хабаровскийн хязгаар\"\n\n#: ru/ru_regions.py:54\nmsgid \"Amurskaya oblast'\"\nmsgstr \"\"\n\"Утасны дугаар нь 02X-8X эсвэл 03X-7X эсвэл 04X-6X форматтай байх хэрэгтэй.\"\n\n#: ru/ru_regions.py:55\nmsgid \"Arkhangel'skaya oblast'\"\nmsgstr \"Архангельскийн хүрээ\"\n\n#: ru/ru_regions.py:56\nmsgid \"Astrakhanskaya oblast'\"\nmsgstr \"Астраханская бүс нутаг\"\n\n#: ru/ru_regions.py:57\nmsgid \"Belgorodskaya oblast'\"\nmsgstr \"Белгородын бүс нутаг\"\n\n#: ru/ru_regions.py:58\nmsgid \"Bryanskaya oblast'\"\nmsgstr \"Биряны бүс нутаг\"\n\n#: ru/ru_regions.py:59\nmsgid \"Vladimirskaya oblast'\"\nmsgstr \"Владимирын бүс нутаг\"\n\n#: ru/ru_regions.py:60\nmsgid \"Volgogradskaya oblast'\"\nmsgstr \"Волгоградыг бүс нутаг\"\n\n#: ru/ru_regions.py:61\nmsgid \"Vologodskaya oblast'\"\nmsgstr \"Вологодын бүс нутаг\"\n\n#: ru/ru_regions.py:62\nmsgid \"Voronezhskaya oblast'\"\nmsgstr \"Воронежын бүс нутаг\"\n\n#: ru/ru_regions.py:63\nmsgid \"Ivanovskaya oblast'\"\nmsgstr \"Ивановын бүс нутаг\"\n\n#: ru/ru_regions.py:64\nmsgid \"Irkutskaya oblast'\"\nmsgstr \"Иркутскийн бүс нутаг\"\n\n#: ru/ru_regions.py:65\nmsgid \"Kaliningradskaya oblast'\"\nmsgstr \"Калинградын бүс нутаг\"\n\n#: ru/ru_regions.py:66\nmsgid \"Kaluzhskaya oblast'\"\nmsgstr \"Калужын бүс нутаг\"\n\n#: ru/ru_regions.py:67\nmsgid \"Kemerovskaya oblast'\"\nmsgstr \"Кемеровская муж\"\n\n#: ru/ru_regions.py:68\nmsgid \"Kirovskaya oblast'\"\nmsgstr \"Кировская муж\"\n\n#: ru/ru_regions.py:69\nmsgid \"Kostromskaya oblast'\"\nmsgstr \"Костромская муж\"\n\n#: ru/ru_regions.py:70\nmsgid \"Kurganskaya oblast'\"\nmsgstr \"Курганская муж\"\n\n#: ru/ru_regions.py:71\nmsgid \"Kurskaya oblast'\"\nmsgstr \"Курсикын бүс нутаг\"\n\n#: ru/ru_regions.py:72\nmsgid \"Leningradskaya oblast'\"\nmsgstr \"Ленинградын бүс нутаг\"\n\n#: ru/ru_regions.py:73\nmsgid \"Lipeckaya oblast'\"\nmsgstr \"Липецкая муж\"\n\n#: ru/ru_regions.py:74\nmsgid \"Magadanskaya oblast'\"\nmsgstr \"Магаданская муж\"\n\n#: ru/ru_regions.py:75\nmsgid \"Murmanskaya oblast'\"\nmsgstr \"Мурманская муж\"\n\n#: ru/ru_regions.py:76\nmsgid \"Nizhegorodskaja oblast'\"\nmsgstr \"Нижегородской муж\"\n\n#: ru/ru_regions.py:77\nmsgid \"Novgorodskaya oblast'\"\nmsgstr \"Новгородская муж\"\n\n#: ru/ru_regions.py:78\nmsgid \"Novosibirskaya oblast'\"\nmsgstr \"Новосибирская муж\"\n\n#: ru/ru_regions.py:79\nmsgid \"Omskaya oblast'\"\nmsgstr \"Омская муж\"\n\n#: ru/ru_regions.py:80\nmsgid \"Orenburgskaya oblast'\"\nmsgstr \"Оренбургская муж\"\n\n#: ru/ru_regions.py:81\nmsgid \"Orlovskaya oblast'\"\nmsgstr \"Орловская муж\"\n\n#: ru/ru_regions.py:82\nmsgid \"Penzenskaya oblast'\"\nmsgstr \"Пензенская муж\"\n\n#: ru/ru_regions.py:83\nmsgid \"Pskovskaya oblast'\"\nmsgstr \"Псковская муж\"\n\n#: ru/ru_regions.py:84\nmsgid \"Rostovskaya oblast'\"\nmsgstr \"Ростовская муж\"\n\n#: ru/ru_regions.py:85\nmsgid \"Rjazanskaya oblast'\"\nmsgstr \"Рязанская муж\"\n\n#: ru/ru_regions.py:86\nmsgid \"Samarskaya oblast'\"\nmsgstr \"Самарская муж\"\n\n#: ru/ru_regions.py:87\nmsgid \"Saratovskaya oblast'\"\nmsgstr \"Саратовская муж\"\n\n#: ru/ru_regions.py:88\nmsgid \"Sakhalinskaya oblast'\"\nmsgstr \"Сахалинская муж\"\n\n#: ru/ru_regions.py:89\nmsgid \"Sverdlovskaya oblast'\"\nmsgstr \"Свердловской муж\"\n\n#: ru/ru_regions.py:90\nmsgid \"Smolenskaya oblast'\"\nmsgstr \"Смоленская муж\"\n\n#: ru/ru_regions.py:91\nmsgid \"Tambovskaya oblast'\"\nmsgstr \"Тамбовская муж\"\n\n#: ru/ru_regions.py:92\nmsgid \"Tverskaya oblast'\"\nmsgstr \"Тверская муж\"\n\n#: ru/ru_regions.py:93\nmsgid \"Tomskaya oblast'\"\nmsgstr \"Томская муж\"\n\n#: ru/ru_regions.py:94\nmsgid \"Tul'skaya oblast'\"\nmsgstr \"Тульскийн бүс нутаг\"\n\n#: ru/ru_regions.py:95\nmsgid \"Tyumenskaya oblast'\"\nmsgstr \"Тюменская муж\"\n\n#: ru/ru_regions.py:96\nmsgid \"Ul'ianovskaya oblast'\"\nmsgstr \"Ульяновская муж\"\n\n#: ru/ru_regions.py:97\nmsgid \"Chelyabinskaya oblast'\"\nmsgstr \"Челябинская муж\"\n\n#: ru/ru_regions.py:98\nmsgid \"Yaroslavskaya oblast'\"\nmsgstr \"Челябинская муж\"\n\n#: ru/ru_regions.py:99\nmsgid \"Evreyskaya avtonomnaja oblast'\"\nmsgstr \"Еврейская автономная муж\"\n\n#: ru/ru_regions.py:100\nmsgid \"Neneckiy autonomnyy okrug\"\nmsgstr \"Ненецкий автономии дүүрэг\"\n\n#: ru/ru_regions.py:101\nmsgid \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\nmsgstr \"Ханты-Мансийский автономный округ - Югра\"\n\n#: ru/ru_regions.py:102\nmsgid \"Chukotskiy avtonomnyy okrug\"\nmsgstr \"Чукотский автономный дүүрэг\"\n\n#: ru/ru_regions.py:103\nmsgid \"Yamalo-Neneckiy avtonomnyy okrug\"\nmsgstr \"Ямало-Neneckiy автономный дүүрэг\"\n\n#: se/forms.py:54\nmsgid \"Enter a valid Swedish organisation number.\"\nmsgstr \"Шведийн байгуулагын дугаараа зөв оруулна уу.\"\n\n#: se/forms.py:111\nmsgid \"Enter a valid Swedish personal identity number.\"\nmsgstr \"Шведийн хувийн дугаараа зөв оруулна уу.\"\n\n#: se/forms.py:112\nmsgid \"Co-ordination numbers are not allowed.\"\nmsgstr \"Co-ordination-д тоог зөвшөөрөхгүй.\"\n\n#: se/forms.py:154\nmsgid \"Enter a Swedish postal code in the format XXXXX.\"\nmsgstr \"Шведийн шуудангийн кодыг XXXXX хэлбэрээр оруулна уу.\"\n\n#: se/se_counties.py:16\nmsgid \"Stockholm\"\nmsgstr \"Стокгольм\"\n\n#: se/se_counties.py:17\nmsgid \"Västerbotten\"\nmsgstr \"Вестерботтен\"\n\n#: se/se_counties.py:18\nmsgid \"Norrbotten\"\nmsgstr \"Норрботтен\"\n\n#: se/se_counties.py:19\nmsgid \"Uppsala\"\nmsgstr \"Уппсала\"\n\n#: se/se_counties.py:20\nmsgid \"Södermanland\"\nmsgstr \"Сёдерманланд\"\n\n#: se/se_counties.py:21\nmsgid \"Östergötland\"\nmsgstr \"Эстергётланд\"\n\n#: se/se_counties.py:22\nmsgid \"Jönköping\"\nmsgstr \"Йёнчёпинг\"\n\n#: se/se_counties.py:23\nmsgid \"Kronoberg\"\nmsgstr \"Кронберг\"\n\n#: se/se_counties.py:24\nmsgid \"Kalmar\"\nmsgstr \"Калмар\"\n\n#: se/se_counties.py:25\nmsgid \"Gotland\"\nmsgstr \"Готланд\"\n\n#: se/se_counties.py:26\nmsgid \"Blekinge\"\nmsgstr \"Блекингэ\"\n\n#: se/se_counties.py:27\nmsgid \"Skåne\"\nmsgstr \"Скане\"\n\n#: se/se_counties.py:28\nmsgid \"Halland\"\nmsgstr \"Халланд\"\n\n#: se/se_counties.py:29\nmsgid \"Västra Götaland\"\nmsgstr \"Вестра-Гёталанд\"\n\n#: se/se_counties.py:30\nmsgid \"Värmland\"\nmsgstr \"Вермланд\"\n\n#: se/se_counties.py:31\nmsgid \"Örebro\"\nmsgstr \"Оуребо\"\n\n#: se/se_counties.py:32\nmsgid \"Västmanland\"\nmsgstr \"Вестманланд\"\n\n#: se/se_counties.py:33\nmsgid \"Dalarna\"\nmsgstr \"Даларна\"\n\n#: se/se_counties.py:34\nmsgid \"Gävleborg\"\nmsgstr \"Евлерборг\"\n\n#: se/se_counties.py:35\nmsgid \"Västernorrland\"\nmsgstr \"Вестернорланд\"\n\n#: se/se_counties.py:36\nmsgid \"Jämtland\"\nmsgstr \"Емтланд\"\n\n#: si/forms.py:25\nmsgid \"The first 7 digits of the EMSO must represent a valid past date.\"\nmsgstr \"EMSO-н эхний 7 оронтой тоо нь бодит өнгөрсөн оноог илэрхийлнэ.\"\n\n#: si/forms.py:26\nmsgid \"The EMSO is not valid.\"\nmsgstr \"EMSO хүчингүй байна.\"\n\n#: si/forms.py:86\nmsgid \"Enter a valid tax number in form SIXXXXXXXX\"\nmsgstr \"SIXXXXXXXX форматаар бодит татварын дугаар оруулна уу\"\n\n#: si/forms.py:151\nmsgid \"Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.\"\nmsgstr \"+386XXXXXXXX эсвэл 0XXXXXXXX форматаар утасны дугаарыг оруулна уу.\"\n\n#: sk/sk_districts.py:8\nmsgid \"Banska Bystrica\"\nmsgstr \"Банска Бистрика\"\n\n#: sk/sk_districts.py:9\nmsgid \"Banska Stiavnica\"\nmsgstr \"Банска Стиавника\"\n\n#: sk/sk_districts.py:10\nmsgid \"Bardejov\"\nmsgstr \"Бардежов\"\n\n#: sk/sk_districts.py:11\nmsgid \"Banovce nad Bebravou\"\nmsgstr \"Бановц над Бебравоу\"\n\n#: sk/sk_districts.py:12\nmsgid \"Brezno\"\nmsgstr \"Брезно\"\n\n#: sk/sk_districts.py:13\nmsgid \"Bratislava I\"\nmsgstr \"Братислав l\"\n\n#: sk/sk_districts.py:14\nmsgid \"Bratislava II\"\nmsgstr \"Братислав ll\"\n\n#: sk/sk_districts.py:15\nmsgid \"Bratislava III\"\nmsgstr \"Братислав lll\"\n\n#: sk/sk_districts.py:16\nmsgid \"Bratislava IV\"\nmsgstr \"Братислав lV\"\n\n#: sk/sk_districts.py:17\nmsgid \"Bratislava V\"\nmsgstr \"Братислав V\"\n\n#: sk/sk_districts.py:18\nmsgid \"Bytca\"\nmsgstr \"Битка\"\n\n#: sk/sk_districts.py:19\nmsgid \"Cadca\"\nmsgstr \"Кадка\"\n\n#: sk/sk_districts.py:20\nmsgid \"Detva\"\nmsgstr \"Детва\"\n\n#: sk/sk_districts.py:21\nmsgid \"Dolny Kubin\"\nmsgstr \"Долни Кубин\"\n\n#: sk/sk_districts.py:22\nmsgid \"Dunajska Streda\"\nmsgstr \"Дунайска Стреда\"\n\n#: sk/sk_districts.py:23\nmsgid \"Galanta\"\nmsgstr \"Галанта\"\n\n#: sk/sk_districts.py:24\nmsgid \"Gelnica\"\nmsgstr \"Гелника\"\n\n#: sk/sk_districts.py:25\nmsgid \"Hlohovec\"\nmsgstr \"Хлоховек\"\n\n#: sk/sk_districts.py:26\nmsgid \"Humenne\"\nmsgstr \"Хюменн\"\n\n#: sk/sk_districts.py:27\nmsgid \"Ilava\"\nmsgstr \"Илава\"\n\n#: sk/sk_districts.py:28\nmsgid \"Kezmarok\"\nmsgstr \"Кезмарок\"\n\n#: sk/sk_districts.py:29\nmsgid \"Komarno\"\nmsgstr \"Комарно\"\n\n#: sk/sk_districts.py:30\nmsgid \"Kosice I\"\nmsgstr \"Косиз I\"\n\n#: sk/sk_districts.py:31\nmsgid \"Kosice II\"\nmsgstr \"Косиз II\"\n\n#: sk/sk_districts.py:32\nmsgid \"Kosice III\"\nmsgstr \"Косиз III\"\n\n#: sk/sk_districts.py:33\nmsgid \"Kosice IV\"\nmsgstr \"Косиз IV\"\n\n#: sk/sk_districts.py:34\nmsgid \"Kosice - okolie\"\nmsgstr \"Косиз - околие\"\n\n#: sk/sk_districts.py:35\nmsgid \"Krupina\"\nmsgstr \"Крупина\"\n\n#: sk/sk_districts.py:36\nmsgid \"Kysucke Nove Mesto\"\nmsgstr \"Кисук Нове Место\"\n\n#: sk/sk_districts.py:37\nmsgid \"Levice\"\nmsgstr \"Левис \"\n\n#: sk/sk_districts.py:38\nmsgid \"Levoca\"\nmsgstr \"Левока\"\n\n#: sk/sk_districts.py:39\nmsgid \"Liptovsky Mikulas\"\nmsgstr \"Липтовски Микулас\"\n\n#: sk/sk_districts.py:40\nmsgid \"Lucenec\"\nmsgstr \"Лукенек\"\n\n#: sk/sk_districts.py:41\nmsgid \"Malacky\"\nmsgstr \"Малаки\"\n\n#: sk/sk_districts.py:42\nmsgid \"Martin\"\nmsgstr \"Мартин \"\n\n#: sk/sk_districts.py:43\nmsgid \"Medzilaborce\"\nmsgstr \"Медзилаборс\"\n\n#: sk/sk_districts.py:44\nmsgid \"Michalovce\"\nmsgstr \"Михаловс\"\n\n#: sk/sk_districts.py:45\nmsgid \"Myjava\"\nmsgstr \"Мияава\"\n\n#: sk/sk_districts.py:46\nmsgid \"Namestovo\"\nmsgstr \"Наместово\"\n\n#: sk/sk_districts.py:47\nmsgid \"Nitra\"\nmsgstr \"Нитра\"\n\n#: sk/sk_districts.py:48\nmsgid \"Nove Mesto nad Vahom\"\nmsgstr \"Нове Место над Вахом\"\n\n#: sk/sk_districts.py:49\nmsgid \"Nove Zamky\"\nmsgstr \"Нове Замки\"\n\n#: sk/sk_districts.py:50\nmsgid \"Partizanske\"\nmsgstr \"Партизанске\"\n\n#: sk/sk_districts.py:51\nmsgid \"Pezinok\"\nmsgstr \"Пезинок\"\n\n#: sk/sk_districts.py:52\nmsgid \"Piestany\"\nmsgstr \"Пиестани\"\n\n#: sk/sk_districts.py:53\nmsgid \"Poltar\"\nmsgstr \"Полтар\"\n\n#: sk/sk_districts.py:54\nmsgid \"Poprad\"\nmsgstr \"Попрад\"\n\n#: sk/sk_districts.py:55\nmsgid \"Povazska Bystrica\"\nmsgstr \"Повазска Бистрика\"\n\n#: sk/sk_districts.py:56\nmsgid \"Presov\"\nmsgstr \"Пресов\"\n\n#: sk/sk_districts.py:57\nmsgid \"Prievidza\"\nmsgstr \"Приевидза\"\n\n#: sk/sk_districts.py:58\nmsgid \"Puchov\"\nmsgstr \"Пучов\"\n\n#: sk/sk_districts.py:59\nmsgid \"Revuca\"\nmsgstr \"Ревука\"\n\n#: sk/sk_districts.py:60\nmsgid \"Rimavska Sobota\"\nmsgstr \"Римавска Собота\"\n\n#: sk/sk_districts.py:61\nmsgid \"Roznava\"\nmsgstr \"Рознава\"\n\n#: sk/sk_districts.py:62\nmsgid \"Ruzomberok\"\nmsgstr \"Рузомберок\"\n\n#: sk/sk_districts.py:63\nmsgid \"Sabinov\"\nmsgstr \"Сабинов\"\n\n#: sk/sk_districts.py:64\nmsgid \"Senec\"\nmsgstr \"Сенек\"\n\n#: sk/sk_districts.py:65\nmsgid \"Senica\"\nmsgstr \"Сеника\"\n\n#: sk/sk_districts.py:66\nmsgid \"Skalica\"\nmsgstr \"Скалиса\"\n\n#: sk/sk_districts.py:67\nmsgid \"Snina\"\nmsgstr \"Снина\"\n\n#: sk/sk_districts.py:68\nmsgid \"Sobrance\"\nmsgstr \"Собранс\"\n\n#: sk/sk_districts.py:69\nmsgid \"Spisska Nova Ves\"\nmsgstr \"Списска Нова Вес\"\n\n#: sk/sk_districts.py:70\nmsgid \"Stara Lubovna\"\nmsgstr \"Стара Любовна\"\n\n#: sk/sk_districts.py:71\nmsgid \"Stropkov\"\nmsgstr \"Стропков\"\n\n#: sk/sk_districts.py:72\nmsgid \"Svidnik\"\nmsgstr \"Свидник\"\n\n#: sk/sk_districts.py:73\nmsgid \"Sala\"\nmsgstr \"Сала\"\n\n#: sk/sk_districts.py:74\nmsgid \"Topolcany\"\nmsgstr \"Тополсани\"\n\n#: sk/sk_districts.py:75\nmsgid \"Trebisov\"\nmsgstr \"Требисов\"\n\n#: sk/sk_districts.py:76\nmsgid \"Trencin\"\nmsgstr \"Тренкин\"\n\n#: sk/sk_districts.py:77\nmsgid \"Trnava\"\nmsgstr \"Трнава\"\n\n#: sk/sk_districts.py:78\nmsgid \"Turcianske Teplice\"\nmsgstr \"Туркианск Теплис\"\n\n#: sk/sk_districts.py:79\nmsgid \"Tvrdosin\"\nmsgstr \"Тврдосин\"\n\n#: sk/sk_districts.py:80\nmsgid \"Velky Krtis\"\nmsgstr \"Велки Кртис\"\n\n#: sk/sk_districts.py:81\nmsgid \"Vranov nad Toplou\"\nmsgstr \"Вранов над Топлоу\"\n\n#: sk/sk_districts.py:82\nmsgid \"Zlate Moravce\"\nmsgstr \"Злате Моравс\"\n\n#: sk/sk_districts.py:83\nmsgid \"Zvolen\"\nmsgstr \"Зволен\"\n\n#: sk/sk_districts.py:84\nmsgid \"Zarnovica\"\nmsgstr \"Зарновика\"\n\n#: sk/sk_districts.py:85\nmsgid \"Ziar nad Hronom\"\nmsgstr \"Зиар над Хроном\"\n\n#: sk/sk_districts.py:86\nmsgid \"Zilina\"\nmsgstr \"Зилина\"\n\n#: sk/sk_regions.py:8\nmsgid \"Banska Bystrica region\"\nmsgstr \"Банска Бистрика муж \"\n\n#: sk/sk_regions.py:9\nmsgid \"Bratislava region\"\nmsgstr \"Братислав муж \"\n\n#: sk/sk_regions.py:10\nmsgid \"Kosice region\"\nmsgstr \"Косиз муж\"\n\n#: sk/sk_regions.py:11\nmsgid \"Nitra region\"\nmsgstr \"Нитра муж\"\n\n#: sk/sk_regions.py:12\nmsgid \"Presov region\"\nmsgstr \"Пресов муж\"\n\n#: sk/sk_regions.py:13\nmsgid \"Trencin region\"\nmsgstr \"Тренкин муж\"\n\n#: sk/sk_regions.py:14\nmsgid \"Trnava region\"\nmsgstr \"Трнава муж\"\n\n#: sk/sk_regions.py:15\nmsgid \"Zilina region\"\nmsgstr \"Зилина муж\"\n\n#: tr/forms.py:21\nmsgid \"Enter a postal code in the format XXXXX.\"\nmsgstr \"Шуудангын кодын XXXXX хэлбэрээр оруулна уу. \"\n\n#: tr/forms.py:42\nmsgid \"Phone numbers must be in 0XXX XXX XXXX format.\"\nmsgstr \"Утасны дугаа 0XXX XXX XXXX хэлбэртэй байна.\"\n\n#: tr/forms.py:69\nmsgid \"Enter a valid Turkish Identification number.\"\nmsgstr \"Зөв Түрк бүртгэлийн дугаар оруулна уу.\"\n\n#: tr/forms.py:70\nmsgid \"Turkish Identification number must be 11 digits.\"\nmsgstr \"Түрк бүртгэлийн дугаар заавал 11 оронтой байна. \"\n\n#: us/forms.py:21\nmsgid \"Enter a zip code in the format XXXXX or XXXXX-XXXX.\"\nmsgstr \"Шуудангийн индексээ XXXXX буюу XXXXX-XXXX хэлбэрээр оруулна уу.\"\n\n#: us/forms.py:59\nmsgid \"Enter a valid U.S. Social Security number in XXX-XX-XXXX format.\"\nmsgstr \"АНУ-ын нийгмийн хамгааллын дугаараа XXX-XX-XXXX хэлбэрээр оруулна уу.\"\n\n#: us/forms.py:92\nmsgid \"Enter a U.S. state or territory.\"\nmsgstr \"АНУ-ийн муж эсвэл or бүс нутаг оруулна уу.\"\n\n#: us/models.py:8\nmsgid \"U.S. state (two uppercase letters)\"\nmsgstr \"U.S. төлөв (хоёр том үсэг)\"\n\n#: us/models.py:17\nmsgid \"U.S. postal code (two uppercase letters)\"\nmsgstr \"АНУ ийн шуудангийн код (хоёр том үсэг)\"\n\n#: us/models.py:26\nmsgid \"Phone number\"\nmsgstr \"Утасны дугаар\"\n\n#: uy/forms.py:29\nmsgid \"Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.\"\nmsgstr \"\"\n\"Хүчинтэй CI дугаарыг X.XXX.XXX-X,XXXXXXX-X эсвэл XXXXXXXX форматаар оруулна \"\n\"уу.\"\n\n#: uy/forms.py:31\nmsgid \"Enter a valid CI number.\"\nmsgstr \"Хүчинтэй CI дугаарыг оруулна уу\"\n\n#: za/forms.py:22\nmsgid \"Enter a valid South African ID number\"\nmsgstr \"Өмнөд Африкийн ID дугаараа оруулна уу.\"\n\n#: za/forms.py:56\nmsgid \"Enter a valid South African postal code\"\nmsgstr \"Өмнөд Африкийн шуудангийн дугаараа оруулна уу.\"\n\n#: za/za_provinces.py:4\nmsgid \"Eastern Cape\"\nmsgstr \"Зүүн Кэйп\"\n\n#: za/za_provinces.py:5\nmsgid \"Free State\"\nmsgstr \"Фрий стэйт\"\n\n#: za/za_provinces.py:6\nmsgid \"Gauteng\"\nmsgstr \"Гаутэнг\"\n\n#: za/za_provinces.py:7\nmsgid \"KwaZulu-Natal\"\nmsgstr \"КваЗулу-Натал\"\n\n#: za/za_provinces.py:8\nmsgid \"Limpopo\"\nmsgstr \"Лимпопо\"\n\n#: za/za_provinces.py:9\nmsgid \"Mpumalanga\"\nmsgstr \"Мпумаланга\"\n\n#: za/za_provinces.py:10\nmsgid \"Northern Cape\"\nmsgstr \"Хойд Кэйп\"\n\n#: za/za_provinces.py:11\nmsgid \"North West\"\nmsgstr \"Норт Вэст\"\n\n#: za/za_provinces.py:12\nmsgid \"Western Cape\"\nmsgstr \"Баруун Кэйп\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/locale/nb/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <jonklo@gmail.com>, 2012-2013.\n# jonklo <jonklo@gmail.com>, 2011.\n#   <sigurdga-transifex@sigurdga.no>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2013-01-09 23:10+0000\\n\"\n\"Last-Translator: jonklo <jonklo@gmail.com>\\n\"\n\"Language-Team: Norwegian Bokmål (http://www.transifex.com/projects/p/django/\"\n\"language/nb/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: nb\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: ar/forms.py:30\nmsgid \"Enter a postal code in the format NNNN or ANNNNAAA.\"\nmsgstr \"Oppgi et postnummer på formen NNNN eller ANNNNAAA.\"\n\n#: ar/forms.py:52 br/forms.py:95 br/forms.py:134 pe/forms.py:27 pe/forms.py:55\nmsgid \"This field requires only numbers.\"\nmsgstr \"Feltet krever kun tall.\"\n\n#: ar/forms.py:53\nmsgid \"This field requires 7 or 8 digits.\"\nmsgstr \"Feltet krever 7 eller 8 siffer.\"\n\n#: ar/forms.py:82\nmsgid \"Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.\"\nmsgstr \"Oppgi gyldig CUIT på formen XX-XXXXXXXX-X or XXXXXXXXXXXX.\"\n\n#: ar/forms.py:83\nmsgid \"Invalid CUIT.\"\nmsgstr \"Ugyldig CUIT.\"\n\n#: ar/forms.py:84\nmsgid \"Invalid legal type. Type must be 27, 20, 23 or 30.\"\nmsgstr \"Ugyldig lovlig-type. Type må være 27, 20, 23 or 30.\"\n\n#: at/at_states.py:5\nmsgid \"Burgenland\"\nmsgstr \"Burgenland\"\n\n#: at/at_states.py:6\nmsgid \"Carinthia\"\nmsgstr \"Carinthia\"\n\n#: at/at_states.py:7\nmsgid \"Lower Austria\"\nmsgstr \"Niederösterreich\"\n\n#: at/at_states.py:8\nmsgid \"Upper Austria\"\nmsgstr \"Oberösterreich\"\n\n#: at/at_states.py:9\nmsgid \"Salzburg\"\nmsgstr \"Salzburg\"\n\n#: at/at_states.py:10\nmsgid \"Styria\"\nmsgstr \"Steiermark\"\n\n#: at/at_states.py:11\nmsgid \"Tyrol\"\nmsgstr \"Tirol\"\n\n#: at/at_states.py:12\nmsgid \"Vorarlberg\"\nmsgstr \"Vorarlberg\"\n\n#: at/at_states.py:13\nmsgid \"Vienna\"\nmsgstr \"Wien\"\n\n#: at/forms.py:22 ch/forms.py:22 no/forms.py:19\nmsgid \"Enter a zip code in the format XXXX.\"\nmsgstr \"Oppgi et postnummer på formen XXXX.\"\n\n#: at/forms.py:50\nmsgid \"Enter a valid Austrian Social Security Number in XXXX XXXXXX format.\"\nmsgstr \"Oppgi et gyldig Østerrisk personnummer på formen XXXX XXXXXX.\"\n\n#: au/forms.py:26\nmsgid \"Enter a 4 digit postcode.\"\nmsgstr \"Oppgi et firesifret postnummer.\"\n\n#: au/models.py:9\nmsgid \"Australian State\"\nmsgstr \"Australsk stat\"\n\n#: au/models.py:19\nmsgid \"Australian Postcode\"\nmsgstr \"Australsk postnummer\"\n\n#: au/models.py:33\nmsgid \"Australian Phone number\"\nmsgstr \"Australsk telefonnummer\"\n\n#: be/be_provinces.py:5\nmsgid \"Antwerp\"\nmsgstr \"Antwerpen\"\n\n#: be/be_provinces.py:6\nmsgid \"Brussels\"\nmsgstr \"Brussel\"\n\n#: be/be_provinces.py:7\nmsgid \"East Flanders\"\nmsgstr \"Øst-Flandern\"\n\n#: be/be_provinces.py:8\nmsgid \"Flemish Brabant\"\nmsgstr \"Flamsk Brabant\"\n\n#: be/be_provinces.py:9\nmsgid \"Hainaut\"\nmsgstr \"Hainaut\"\n\n#: be/be_provinces.py:10\nmsgid \"Liege\"\nmsgstr \"Liège\"\n\n#: be/be_provinces.py:11 nl/nl_provinces.py:9\nmsgid \"Limburg\"\nmsgstr \"Limburg\"\n\n#: be/be_provinces.py:12\nmsgid \"Luxembourg\"\nmsgstr \"Luxembourg\"\n\n#: be/be_provinces.py:13\nmsgid \"Namur\"\nmsgstr \"Namur\"\n\n#: be/be_provinces.py:14\nmsgid \"Walloon Brabant\"\nmsgstr \"Vallonsk Brabant\"\n\n#: be/be_provinces.py:15\nmsgid \"West Flanders\"\nmsgstr \"Vest-Flandern\"\n\n#: be/be_regions.py:5\nmsgid \"Brussels Capital Region\"\nmsgstr \"Brussel-regionen\"\n\n#: be/be_regions.py:6\nmsgid \"Flemish Region\"\nmsgstr \"Flandern\"\n\n#: be/be_regions.py:7\nmsgid \"Wallonia\"\nmsgstr \"Vallonia\"\n\n#: be/forms.py:25\nmsgid \"Enter a valid postal code in the range and format 1XXX - 9XXX.\"\nmsgstr \"Oppgi et gyldig postnummer på formen 1XXX - 9XXX.\"\n\n#: be/forms.py:48\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\nmsgstr \"\"\n\"Oppgi et gyldig telefonnummer i et av følgende formater: 0x xxx xx xx, 0xx \"\n\"xx xx xx, 04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.\"\n\"xx.xx, 0xx.xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx eller 04xxxxxxxx.\"\n\n#: br/forms.py:22\nmsgid \"Enter a zip code in the format XXXXX-XXX.\"\nmsgstr \"Oppgi et postnummer på formen XXXXX-XXX.\"\n\n#: br/forms.py:31\nmsgid \"Phone numbers must be in XX-XXXX-XXXX format.\"\nmsgstr \"Telefonnumre må være på formen XX-XXXX-XXXX.\"\n\n#: br/forms.py:58\nmsgid \"\"\n\"Select a valid brazilian state. That state is not one of the available \"\n\"states.\"\nmsgstr \"\"\n\"Velg en gyldig brasiliansk stat. Den staten er ikke et av de tilgjengelige \"\n\"valgene.\"\n\n#: br/forms.py:93\nmsgid \"Invalid CPF number.\"\nmsgstr \"Ugyldig CPF-nummer.\"\n\n#: br/forms.py:94\nmsgid \"This field requires at most 11 digits or 14 characters.\"\nmsgstr \"Feltet krever maksimum 11 eller 14 tegn.\"\n\n#: br/forms.py:133\nmsgid \"Invalid CNPJ number.\"\nmsgstr \"Ugyldig CNPJ-nummer.\"\n\n#: br/forms.py:135\nmsgid \"This field requires at least 14 digits\"\nmsgstr \"Feltet krever minst 14 siffer.\"\n\n#: ca/forms.py:29\nmsgid \"Enter a postal code in the format XXX XXX.\"\nmsgstr \"Oppgi et postnummer på formen XXX XXX.\"\n\n#: ca/forms.py:47 us/forms.py:30\nmsgid \"Phone numbers must be in XXX-XXX-XXXX format.\"\nmsgstr \"Telefonnumre må være på formen XXX-XXX-XXXX.\"\n\n#: ca/forms.py:69\nmsgid \"Enter a Canadian province or territory.\"\nmsgstr \"Oppgi en kanadisk provins eller territorium.\"\n\n#: ca/forms.py:110\nmsgid \"Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.\"\nmsgstr \"Oppgi et gyldig kanadisk personnummer på formen XXX-XXX-XXX.\"\n\n#: ch/ch_states.py:5\nmsgid \"Aargau\"\nmsgstr \"Aargau\"\n\n#: ch/ch_states.py:6\nmsgid \"Appenzell Innerrhoden\"\nmsgstr \"Appenzell Innerrhoden\"\n\n#: ch/ch_states.py:7\nmsgid \"Appenzell Ausserrhoden\"\nmsgstr \"Appenzell Ausserrhoden\"\n\n#: ch/ch_states.py:8\nmsgid \"Basel-Stadt\"\nmsgstr \"Basel-Stadt\"\n\n#: ch/ch_states.py:9\nmsgid \"Basel-Land\"\nmsgstr \"Basel-Landschaft\"\n\n#: ch/ch_states.py:10\nmsgid \"Berne\"\nmsgstr \"Bern\"\n\n#: ch/ch_states.py:11\nmsgid \"Fribourg\"\nmsgstr \"Fribourg\"\n\n#: ch/ch_states.py:12\nmsgid \"Geneva\"\nmsgstr \"Genève\"\n\n#: ch/ch_states.py:13\nmsgid \"Glarus\"\nmsgstr \"Glarus\"\n\n#: ch/ch_states.py:14\nmsgid \"Graubuenden\"\nmsgstr \"Graubünden\"\n\n#: ch/ch_states.py:15\nmsgid \"Jura\"\nmsgstr \"Jura\"\n\n#: ch/ch_states.py:16\nmsgid \"Lucerne\"\nmsgstr \"Luzern\"\n\n#: ch/ch_states.py:17\nmsgid \"Neuchatel\"\nmsgstr \"Neuchâtel\"\n\n#: ch/ch_states.py:18\nmsgid \"Nidwalden\"\nmsgstr \"Nidwalden\"\n\n#: ch/ch_states.py:19\nmsgid \"Obwalden\"\nmsgstr \"Obwalden\"\n\n#: ch/ch_states.py:20\nmsgid \"Schaffhausen\"\nmsgstr \"Schaffhausen\"\n\n#: ch/ch_states.py:21\nmsgid \"Schwyz\"\nmsgstr \"Schwyz\"\n\n#: ch/ch_states.py:22\nmsgid \"Solothurn\"\nmsgstr \"Solothurn\"\n\n#: ch/ch_states.py:23\nmsgid \"St. Gallen\"\nmsgstr \"St. Gallen\"\n\n#: ch/ch_states.py:24\nmsgid \"Thurgau\"\nmsgstr \"Thurgau\"\n\n#: ch/ch_states.py:25\nmsgid \"Ticino\"\nmsgstr \"Ticino\"\n\n#: ch/ch_states.py:26\nmsgid \"Uri\"\nmsgstr \"Uri\"\n\n#: ch/ch_states.py:27\nmsgid \"Valais\"\nmsgstr \"Wallis\"\n\n#: ch/ch_states.py:28\nmsgid \"Vaud\"\nmsgstr \"Vaud\"\n\n#: ch/ch_states.py:29\nmsgid \"Zug\"\nmsgstr \"Zug\"\n\n#: ch/ch_states.py:30\nmsgid \"Zurich\"\nmsgstr \"Zürich\"\n\n#: ch/forms.py:37\nmsgid \"Phone numbers must be in 0XX XXX XX XX format.\"\nmsgstr \"Telefonnummer må være på formen 0XX XXX XX XX.\"\n\n#: ch/forms.py:68\nmsgid \"\"\n\"Enter a valid Swiss identity or passport card number in X1234567<0 or \"\n\"1234567890 format.\"\nmsgstr \"\"\n\"Oppgi et gyldig sveitsisk identitets- eller passnummer på formen X1234567<0 \"\n\"eller 1234567890.\"\n\n#: cl/forms.py:32\nmsgid \"Enter a valid Chilean RUT.\"\nmsgstr \"Oppgi et gyldig chilensk RUT.\"\n\n#: cl/forms.py:33\nmsgid \"Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.\"\nmsgstr \"Oppgi et gyldig chilensk RUT på formen XX.XXX.XXX-X.\"\n\n#: cl/forms.py:34\nmsgid \"The Chilean RUT is not valid.\"\nmsgstr \"Den chilenske RUT-en er ugyldig.\"\n\n#: cn/forms.py:84\nmsgid \"Enter a post code in the format XXXXXX.\"\nmsgstr \"Oppgi et postnummer på formen XXXXXX.\"\n\n#: cn/forms.py:105\nmsgid \"ID Card Number consists of 15 or 18 digits.\"\nmsgstr \"ID-kortnummer bestående av 15 eller 18 siffer.\"\n\n#: cn/forms.py:106\nmsgid \"Invalid ID Card Number: Wrong checksum\"\nmsgstr \"Ugyldig ID-kortnummer: feil sjekksum\"\n\n#: cn/forms.py:107\nmsgid \"Invalid ID Card Number: Wrong birthdate\"\nmsgstr \"Ugyldig ID-kortnummer: feil fødselsdato\"\n\n#: cn/forms.py:108\nmsgid \"Invalid ID Card Number: Wrong location code\"\nmsgstr \"Ugyldig ID-kortnummer: feil stedskode\"\n\n#: cn/forms.py:193\nmsgid \"Enter a valid phone number.\"\nmsgstr \"Oppgi et gyldig telefonnummer.\"\n\n#: cn/forms.py:210\nmsgid \"Enter a valid cell number.\"\nmsgstr \"Oppgi et gyldig mobiltelefonnummer.\"\n\n#: cz/cz_regions.py:8\nmsgid \"Prague\"\nmsgstr \"Praha\"\n\n#: cz/cz_regions.py:9\nmsgid \"Central Bohemian Region\"\nmsgstr \"Sentralbøhmen-regionen\"\n\n#: cz/cz_regions.py:10\nmsgid \"South Bohemian Region\"\nmsgstr \"Sydbøhmen-regionen\"\n\n#: cz/cz_regions.py:11\nmsgid \"Pilsen Region\"\nmsgstr \"Plzeň-regionen\"\n\n#: cz/cz_regions.py:12\nmsgid \"Carlsbad Region\"\nmsgstr \"Karlovy Vary-regionen\"\n\n#: cz/cz_regions.py:13\nmsgid \"Usti Region\"\nmsgstr \"Ústí nad Labem-regionen\"\n\n#: cz/cz_regions.py:14\nmsgid \"Liberec Region\"\nmsgstr \"Liberec-regionen\"\n\n#: cz/cz_regions.py:15\nmsgid \"Hradec Region\"\nmsgstr \"Hradec Králové-regionen\"\n\n#: cz/cz_regions.py:16\nmsgid \"Pardubice Region\"\nmsgstr \"Pardubice-regionen\"\n\n#: cz/cz_regions.py:17\nmsgid \"Vysocina Region\"\nmsgstr \"Žilina-regionen\"\n\n#: cz/cz_regions.py:18\nmsgid \"South Moravian Region\"\nmsgstr \"Sydmähriske-regionen\"\n\n#: cz/cz_regions.py:19\nmsgid \"Olomouc Region\"\nmsgstr \"Olomouc-regionen\"\n\n#: cz/cz_regions.py:20\nmsgid \"Zlin Region\"\nmsgstr \"Zlín-regionen\"\n\n#: cz/cz_regions.py:21\nmsgid \"Moravian-Silesian Region\"\nmsgstr \"Mähren-Schlesien-regionen\"\n\n#: cz/forms.py:32 sk/forms.py:33\nmsgid \"Enter a postal code in the format XXXXX or XXX XX.\"\nmsgstr \"Oppgi et postnummer på formen XXXXX eller XXX XX.\"\n\n#: cz/forms.py:52\nmsgid \"Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.\"\nmsgstr \"Oppgi et fødselsnummer på formen XXXXXX/XXXX eller XXXXXXXXXX.\"\n\n#: cz/forms.py:53\nmsgid \"Enter a valid birth number.\"\nmsgstr \"Oppgi et gyldig fødselsnummer.\"\n\n#: cz/forms.py:102\nmsgid \"Enter a valid IC number.\"\nmsgstr \"Oppgi et gyldig IC-nummer.\"\n\n#: de/de_states.py:5\nmsgid \"Baden-Wuerttemberg\"\nmsgstr \"Baden-Württemberg\"\n\n#: de/de_states.py:6\nmsgid \"Bavaria\"\nmsgstr \"Bayern\"\n\n#: de/de_states.py:7\nmsgid \"Berlin\"\nmsgstr \"Berlin\"\n\n#: de/de_states.py:8\nmsgid \"Brandenburg\"\nmsgstr \"Brandenburg\"\n\n#: de/de_states.py:9\nmsgid \"Bremen\"\nmsgstr \"Bremen\"\n\n#: de/de_states.py:10\nmsgid \"Hamburg\"\nmsgstr \"Hamburg\"\n\n#: de/de_states.py:11\nmsgid \"Hessen\"\nmsgstr \"Hessen\"\n\n#: de/de_states.py:12\nmsgid \"Mecklenburg-Western Pomerania\"\nmsgstr \"Mecklenburg-Vorpommern\"\n\n#: de/de_states.py:13\nmsgid \"Lower Saxony\"\nmsgstr \"Niedersachsen\"\n\n#: de/de_states.py:14\nmsgid \"North Rhine-Westphalia\"\nmsgstr \"Nordrhein-Westfalen\"\n\n#: de/de_states.py:15\nmsgid \"Rhineland-Palatinate\"\nmsgstr \"Rheinland-Pfalz\"\n\n#: de/de_states.py:16\nmsgid \"Saarland\"\nmsgstr \"Saarland\"\n\n#: de/de_states.py:17\nmsgid \"Saxony\"\nmsgstr \"Sachsen\"\n\n#: de/de_states.py:18\nmsgid \"Saxony-Anhalt\"\nmsgstr \"Sachsen-Anhalt\"\n\n#: de/de_states.py:19\nmsgid \"Schleswig-Holstein\"\nmsgstr \"Schleswig-Holstein\"\n\n#: de/de_states.py:20\nmsgid \"Thuringia\"\nmsgstr \"Thüringen\"\n\n#: de/forms.py:20 fi/forms.py:18 fr/forms.py:20\nmsgid \"Enter a zip code in the format XXXXX.\"\nmsgstr \"Oppgi et postnummer på formen XXXXX.\"\n\n#: de/forms.py:46\nmsgid \"\"\n\"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"format.\"\nmsgstr \"\"\n\"Oppgi et gyldig tysk identitetsnummer på formen XXXXXXXXXXX-XXXXXXX-XXXXXXX-\"\n\"X.\"\n\n#: es/es_provinces.py:5\nmsgid \"Araba\"\nmsgstr \"Araba\"\n\n#: es/es_provinces.py:6\nmsgid \"Albacete\"\nmsgstr \"Albacete\"\n\n#: es/es_provinces.py:7\nmsgid \"Alacant\"\nmsgstr \"Alicante\"\n\n#: es/es_provinces.py:8\nmsgid \"Almeria\"\nmsgstr \"Almería\"\n\n#: es/es_provinces.py:9\nmsgid \"Avila\"\nmsgstr \"Ávila\"\n\n#: es/es_provinces.py:10\nmsgid \"Badajoz\"\nmsgstr \"Badajoz\"\n\n#: es/es_provinces.py:11\nmsgid \"Illes Balears\"\nmsgstr \"Balearene\"\n\n#: es/es_provinces.py:12\nmsgid \"Barcelona\"\nmsgstr \"Barcelona\"\n\n#: es/es_provinces.py:13\nmsgid \"Burgos\"\nmsgstr \"Burgos\"\n\n#: es/es_provinces.py:14\nmsgid \"Caceres\"\nmsgstr \"Cáceres\"\n\n#: es/es_provinces.py:15\nmsgid \"Cadiz\"\nmsgstr \"Cádiz\"\n\n#: es/es_provinces.py:16\nmsgid \"Castello\"\nmsgstr \"Castellón\"\n\n#: es/es_provinces.py:17\nmsgid \"Ciudad Real\"\nmsgstr \"Ciudad Real\"\n\n#: es/es_provinces.py:18\nmsgid \"Cordoba\"\nmsgstr \"Córdoba\"\n\n#: es/es_provinces.py:19\nmsgid \"A Coruna\"\nmsgstr \"A Coruna\"\n\n#: es/es_provinces.py:20\nmsgid \"Cuenca\"\nmsgstr \"Cuenca\"\n\n#: es/es_provinces.py:21\nmsgid \"Girona\"\nmsgstr \"Girona\"\n\n#: es/es_provinces.py:22\nmsgid \"Granada\"\nmsgstr \"Granada\"\n\n#: es/es_provinces.py:23\nmsgid \"Guadalajara\"\nmsgstr \"Guadalajara\"\n\n#: es/es_provinces.py:24\nmsgid \"Guipuzkoa\"\nmsgstr \"Gipuzkoa\"\n\n#: es/es_provinces.py:25\nmsgid \"Huelva\"\nmsgstr \"Huelva\"\n\n#: es/es_provinces.py:26\nmsgid \"Huesca\"\nmsgstr \"Huesca\"\n\n#: es/es_provinces.py:27\nmsgid \"Jaen\"\nmsgstr \"Jaén\"\n\n#: es/es_provinces.py:28\nmsgid \"Leon\"\nmsgstr \"León\"\n\n#: es/es_provinces.py:29\nmsgid \"Lleida\"\nmsgstr \"Lleida\"\n\n#: es/es_provinces.py:30 es/es_regions.py:17\nmsgid \"La Rioja\"\nmsgstr \"La Rioja\"\n\n#: es/es_provinces.py:31\nmsgid \"Lugo\"\nmsgstr \"Lugo\"\n\n#: es/es_provinces.py:32 es/es_regions.py:18\nmsgid \"Madrid\"\nmsgstr \"Madrid\"\n\n#: es/es_provinces.py:33\nmsgid \"Malaga\"\nmsgstr \"Málaga\"\n\n#: es/es_provinces.py:34\nmsgid \"Murcia\"\nmsgstr \"Murcia\"\n\n#: es/es_provinces.py:35\nmsgid \"Navarre\"\nmsgstr \"Navarra\"\n\n#: es/es_provinces.py:36\nmsgid \"Ourense\"\nmsgstr \"Ourense\"\n\n#: es/es_provinces.py:37\nmsgid \"Asturias\"\nmsgstr \"Asturias\"\n\n#: es/es_provinces.py:38\nmsgid \"Palencia\"\nmsgstr \"Palencia\"\n\n#: es/es_provinces.py:39\nmsgid \"Las Palmas\"\nmsgstr \"Las Palmas\"\n\n#: es/es_provinces.py:40\nmsgid \"Pontevedra\"\nmsgstr \"Pontevedra\"\n\n#: es/es_provinces.py:41\nmsgid \"Salamanca\"\nmsgstr \"Salamanca\"\n\n#: es/es_provinces.py:42\nmsgid \"Santa Cruz de Tenerife\"\nmsgstr \"Santa Cruz de Tenerife\"\n\n#: es/es_provinces.py:43 es/es_regions.py:11\nmsgid \"Cantabria\"\nmsgstr \"Cantabria\"\n\n#: es/es_provinces.py:44\nmsgid \"Segovia\"\nmsgstr \"Segovia\"\n\n#: es/es_provinces.py:45\nmsgid \"Seville\"\nmsgstr \"Sevilla\"\n\n#: es/es_provinces.py:46\nmsgid \"Soria\"\nmsgstr \"Soria\"\n\n#: es/es_provinces.py:47\nmsgid \"Tarragona\"\nmsgstr \"Tarragona\"\n\n#: es/es_provinces.py:48\nmsgid \"Teruel\"\nmsgstr \"Teruel\"\n\n#: es/es_provinces.py:49\nmsgid \"Toledo\"\nmsgstr \"Toledo\"\n\n#: es/es_provinces.py:50\nmsgid \"Valencia\"\nmsgstr \"Valencia\"\n\n#: es/es_provinces.py:51\nmsgid \"Valladolid\"\nmsgstr \"Valladolid\"\n\n#: es/es_provinces.py:52\nmsgid \"Bizkaia\"\nmsgstr \"Vizcaya\"\n\n#: es/es_provinces.py:53\nmsgid \"Zamora\"\nmsgstr \"Zamora\"\n\n#: es/es_provinces.py:54\nmsgid \"Zaragoza\"\nmsgstr \"Zaragoza\"\n\n#: es/es_provinces.py:55\nmsgid \"Ceuta\"\nmsgstr \"Ceuta\"\n\n#: es/es_provinces.py:56\nmsgid \"Melilla\"\nmsgstr \"Melilla\"\n\n#: es/es_regions.py:5\nmsgid \"Andalusia\"\nmsgstr \"Andalucía\"\n\n#: es/es_regions.py:6\nmsgid \"Aragon\"\nmsgstr \"Aragón\"\n\n#: es/es_regions.py:7\nmsgid \"Principality of Asturias\"\nmsgstr \"Asturias\"\n\n#: es/es_regions.py:8\nmsgid \"Balearic Islands\"\nmsgstr \"Balearene\"\n\n#: es/es_regions.py:9\nmsgid \"Basque Country\"\nmsgstr \"Baskerland\"\n\n#: es/es_regions.py:10\nmsgid \"Canary Islands\"\nmsgstr \"Kanariøyene\"\n\n#: es/es_regions.py:12\nmsgid \"Castile-La Mancha\"\nmsgstr \"Castilla-La Mancha\"\n\n#: es/es_regions.py:13\nmsgid \"Castile and Leon\"\nmsgstr \"Castilla y León\"\n\n#: es/es_regions.py:14\nmsgid \"Catalonia\"\nmsgstr \"Catalonia\"\n\n#: es/es_regions.py:15\nmsgid \"Extremadura\"\nmsgstr \"Extremadura\"\n\n#: es/es_regions.py:16\nmsgid \"Galicia\"\nmsgstr \"Galicia\"\n\n#: es/es_regions.py:19\nmsgid \"Region of Murcia\"\nmsgstr \"Murcia\"\n\n#: es/es_regions.py:20\nmsgid \"Foral Community of Navarre\"\nmsgstr \"Navarra\"\n\n#: es/es_regions.py:21\nmsgid \"Valencian Community\"\nmsgstr \"Valencia\"\n\n#: es/forms.py:26\nmsgid \"Enter a valid postal code in the range and format 01XXX - 52XXX.\"\nmsgstr \"Oppgi et gyldig postnummer på formen 01XXX - 52XXX.\"\n\n#: es/forms.py:46\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or \"\n\"9XXXXXXXX.\"\nmsgstr \"\"\n\"Oppgi et gyldig telefonnummer på et av følgende formater: 6XXXXXXXX, \"\n\"8XXXXXXXX eller 9XXXXXXXX.\"\n\n#: es/forms.py:73\nmsgid \"Please enter a valid NIF, NIE, or CIF.\"\nmsgstr \"Oppgi et gyldig NIF, NIE eller CIF.\"\n\n#: es/forms.py:74\nmsgid \"Please enter a valid NIF or NIE.\"\nmsgstr \"Oppgi et gyldig NIF eller NIE.\"\n\n#: es/forms.py:75\nmsgid \"Invalid checksum for NIF.\"\nmsgstr \"Ugyldig kontrollsum for NIF.\"\n\n#: es/forms.py:76\nmsgid \"Invalid checksum for NIE.\"\nmsgstr \"Ugyldig kontrollsum for NIE.\"\n\n#: es/forms.py:77\nmsgid \"Invalid checksum for CIF.\"\nmsgstr \"Ugyldig kontrollsum for CIF.\"\n\n#: es/forms.py:149\nmsgid \"\"\n\"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.\"\nmsgstr \"Oppgi et gyldig kontonummer på formen XXXX-XXXX-XX-XXXXXXXXXX.\"\n\n#: es/forms.py:150\nmsgid \"Invalid checksum for bank account number.\"\nmsgstr \"Ugyldig kontrollsum for kontonummer.\"\n\n#: fi/forms.py:33\nmsgid \"Enter a valid Finnish social security number.\"\nmsgstr \"Oppgi et gyldig finsk personnummer.\"\n\n#: fr/forms.py:35\nmsgid \"Phone numbers must be in 0X XX XX XX XX format.\"\nmsgstr \"Telefonnumre må være på formen 0X XX XX XX XX.\"\n\n#: gb/forms.py:25\nmsgid \"Enter a valid postcode.\"\nmsgstr \"Oppgi et gyldig postnummer.\"\n\n#: gb/gb_regions.py:11\nmsgid \"Bedfordshire\"\nmsgstr \"Bedfordshire\"\n\n#: gb/gb_regions.py:12\nmsgid \"Buckinghamshire\"\nmsgstr \"Buckinghamshire\"\n\n#: gb/gb_regions.py:14\nmsgid \"Cheshire\"\nmsgstr \"Cheshire\"\n\n#: gb/gb_regions.py:15\nmsgid \"Cornwall and Isles of Scilly\"\nmsgstr \"Cornwall\"\n\n#: gb/gb_regions.py:16\nmsgid \"Cumbria\"\nmsgstr \"Cumbria\"\n\n#: gb/gb_regions.py:17\nmsgid \"Derbyshire\"\nmsgstr \"Derbyshire\"\n\n#: gb/gb_regions.py:18\nmsgid \"Devon\"\nmsgstr \"Devon\"\n\n#: gb/gb_regions.py:19\nmsgid \"Dorset\"\nmsgstr \"Dorset\"\n\n#: gb/gb_regions.py:20\nmsgid \"Durham\"\nmsgstr \"Durham\"\n\n#: gb/gb_regions.py:21\nmsgid \"East Sussex\"\nmsgstr \"East Sussex\"\n\n#: gb/gb_regions.py:22\nmsgid \"Essex\"\nmsgstr \"Essex\"\n\n#: gb/gb_regions.py:23\nmsgid \"Gloucestershire\"\nmsgstr \"Gloucestershire\"\n\n#: gb/gb_regions.py:24\nmsgid \"Greater London\"\nmsgstr \"Stor-London\"\n\n#: gb/gb_regions.py:25\nmsgid \"Greater Manchester\"\nmsgstr \"Stor-Manchester\"\n\n#: gb/gb_regions.py:26\nmsgid \"Hampshire\"\nmsgstr \"Hampshire\"\n\n#: gb/gb_regions.py:27\nmsgid \"Hertfordshire\"\nmsgstr \"Hertfordshire\"\n\n#: gb/gb_regions.py:28\nmsgid \"Kent\"\nmsgstr \"Kent\"\n\n#: gb/gb_regions.py:29\nmsgid \"Lancashire\"\nmsgstr \"Lancashire\"\n\n#: gb/gb_regions.py:30\nmsgid \"Leicestershire\"\nmsgstr \"Leicestershire\"\n\n#: gb/gb_regions.py:31\nmsgid \"Lincolnshire\"\nmsgstr \"Lincolnshire\"\n\n#: gb/gb_regions.py:32\nmsgid \"Merseyside\"\nmsgstr \"Merseyside\"\n\n#: gb/gb_regions.py:33\nmsgid \"Norfolk\"\nmsgstr \"Norfolk\"\n\n#: gb/gb_regions.py:34\nmsgid \"North Yorkshire\"\nmsgstr \"North Yorkshire\"\n\n#: gb/gb_regions.py:35\nmsgid \"Northamptonshire\"\nmsgstr \"Northamptonshire\"\n\n#: gb/gb_regions.py:36\nmsgid \"Northumberland\"\nmsgstr \"Northumberland\"\n\n#: gb/gb_regions.py:37\nmsgid \"Nottinghamshire\"\nmsgstr \"Nottinghamshire\"\n\n#: gb/gb_regions.py:38\nmsgid \"Oxfordshire\"\nmsgstr \"Oxfordshire\"\n\n#: gb/gb_regions.py:39\nmsgid \"Shropshire\"\nmsgstr \"Shropshire\"\n\n#: gb/gb_regions.py:40\nmsgid \"Somerset\"\nmsgstr \"Somerset\"\n\n#: gb/gb_regions.py:41\nmsgid \"South Yorkshire\"\nmsgstr \"South Yorkshire\"\n\n#: gb/gb_regions.py:42\nmsgid \"Staffordshire\"\nmsgstr \"Staffordshire\"\n\n#: gb/gb_regions.py:43\nmsgid \"Suffolk\"\nmsgstr \"Suffolk\"\n\n#: gb/gb_regions.py:44\nmsgid \"Surrey\"\nmsgstr \"Surrey\"\n\n#: gb/gb_regions.py:45\nmsgid \"Tyne and Wear\"\nmsgstr \"Tyne and Wear\"\n\n#: gb/gb_regions.py:46\nmsgid \"Warwickshire\"\nmsgstr \"Warwickshire\"\n\n#: gb/gb_regions.py:47\nmsgid \"West Midlands\"\nmsgstr \"West Midlands\"\n\n#: gb/gb_regions.py:48\nmsgid \"West Sussex\"\nmsgstr \"West Sussex\"\n\n#: gb/gb_regions.py:49\nmsgid \"West Yorkshire\"\nmsgstr \"West Yorkshire\"\n\n#: gb/gb_regions.py:50\nmsgid \"Wiltshire\"\nmsgstr \"Wiltshire\"\n\n#: gb/gb_regions.py:51\nmsgid \"Worcestershire\"\nmsgstr \"Worcestershire\"\n\n#: gb/gb_regions.py:55\nmsgid \"County Antrim\"\nmsgstr \"Antrim\"\n\n#: gb/gb_regions.py:56\nmsgid \"County Armagh\"\nmsgstr \"Armagh\"\n\n#: gb/gb_regions.py:57\nmsgid \"County Down\"\nmsgstr \"Down\"\n\n#: gb/gb_regions.py:58\nmsgid \"County Fermanagh\"\nmsgstr \"Fermanagh\"\n\n#: gb/gb_regions.py:59\nmsgid \"County Londonderry\"\nmsgstr \"Londonderry\"\n\n#: gb/gb_regions.py:60\nmsgid \"County Tyrone\"\nmsgstr \"Tyrone\"\n\n#: gb/gb_regions.py:64\nmsgid \"Clwyd\"\nmsgstr \"Clwyd\"\n\n#: gb/gb_regions.py:65\nmsgid \"Dyfed\"\nmsgstr \"Dyfed\"\n\n#: gb/gb_regions.py:66\nmsgid \"Gwent\"\nmsgstr \"Gwent\"\n\n#: gb/gb_regions.py:67\nmsgid \"Gwynedd\"\nmsgstr \"Gwynedd\"\n\n#: gb/gb_regions.py:68\nmsgid \"Mid Glamorgan\"\nmsgstr \"Mid Glamorgan\"\n\n#: gb/gb_regions.py:69\nmsgid \"Powys\"\nmsgstr \"Powys\"\n\n#: gb/gb_regions.py:70\nmsgid \"South Glamorgan\"\nmsgstr \"South Glamorgan\"\n\n#: gb/gb_regions.py:71\nmsgid \"West Glamorgan\"\nmsgstr \"West Glamorgan\"\n\n#: gb/gb_regions.py:75\nmsgid \"Borders\"\nmsgstr \"Borders\"\n\n#: gb/gb_regions.py:76\nmsgid \"Central Scotland\"\nmsgstr \"Central Scotland\"\n\n#: gb/gb_regions.py:77\nmsgid \"Dumfries and Galloway\"\nmsgstr \"Dumfries and Galloway\"\n\n#: gb/gb_regions.py:78\nmsgid \"Fife\"\nmsgstr \"Fife\"\n\n#: gb/gb_regions.py:79\nmsgid \"Grampian\"\nmsgstr \"Grampian\"\n\n#: gb/gb_regions.py:80\nmsgid \"Highland\"\nmsgstr \"Highland\"\n\n#: gb/gb_regions.py:81\nmsgid \"Lothian\"\nmsgstr \"Lothian\"\n\n#: gb/gb_regions.py:82\nmsgid \"Orkney Islands\"\nmsgstr \"Orknøyene\"\n\n#: gb/gb_regions.py:83\nmsgid \"Shetland Islands\"\nmsgstr \"Shetland\"\n\n#: gb/gb_regions.py:84\nmsgid \"Strathclyde\"\nmsgstr \"Strathclyde\"\n\n#: gb/gb_regions.py:85\nmsgid \"Tayside\"\nmsgstr \"Tayside\"\n\n#: gb/gb_regions.py:86\nmsgid \"Western Isles\"\nmsgstr \"Ytre Hebridene\"\n\n#: gb/gb_regions.py:90\nmsgid \"England\"\nmsgstr \"England\"\n\n#: gb/gb_regions.py:91\nmsgid \"Northern Ireland\"\nmsgstr \"Nord-Irland\"\n\n#: gb/gb_regions.py:92\nmsgid \"Scotland\"\nmsgstr \"Skottland\"\n\n#: gb/gb_regions.py:93\nmsgid \"Wales\"\nmsgstr \"Wales\"\n\n#: hk/forms.py:37\n#, python-format\nmsgid \"Phone number should not start with one of the followings: %s.\"\nmsgstr \"Telefonnummer bør ikke begynne med en av de følgende: %s.\"\n\n#: hk/forms.py:40\n#, python-format\nmsgid \"Phone number must be in one of the following formats: %s.\"\nmsgstr \"Telefonnummer må være i en av de følgende formatene: %s.\"\n\n#: hk/forms.py:42\n#, python-format\nmsgid \"Phone number should start with one of the followings: %s.\"\nmsgstr \"Telefonnummer bør begynne med en av de følgende: %s.\"\n\n#: hr/forms.py:76\nmsgid \"Enter a valid 13 digit JMBG\"\nmsgstr \"Oppgi et gyldig 13-sifret JMBG\"\n\n#: hr/forms.py:77\nmsgid \"Error in date segment\"\nmsgstr \"Feil i datosegment\"\n\n#: hr/forms.py:123\nmsgid \"Enter a valid 11 digit OIB\"\nmsgstr \"Oppgi et gyldig 11-sifret OIB\"\n\n#: hr/forms.py:152 id/forms.py:112\nmsgid \"Enter a valid vehicle license plate number\"\nmsgstr \"Oppgi et gyldig kjøretøyregistreringsnummer.\"\n\n#: hr/forms.py:153\nmsgid \"Enter a valid location code\"\nmsgstr \"Oppgi en gyldig stedskode\"\n\n#: hr/forms.py:154\nmsgid \"Number part cannot be zero\"\nmsgstr \"Nummerdelen kan ikke være null\"\n\n#: hr/forms.py:190\nmsgid \"Enter a valid 5 digit postal code\"\nmsgstr \"Oppgi et gyldig femsifret postnummer\"\n\n#: hr/forms.py:218 id/forms.py:72 nl/forms.py:56\nmsgid \"Enter a valid phone number\"\nmsgstr \"Oppgi et gyldig telefonnummer.\"\n\n#: hr/forms.py:219\nmsgid \"Enter a valid area or mobile network code\"\nmsgstr \"Oppgi en gyldig område- eller mobilnettverkskode\"\n\n#: hr/forms.py:220\nmsgid \"The phone nubmer is too long\"\nmsgstr \"Telefonnummeret er for langt\"\n\n#: hr/forms.py:258\nmsgid \"Enter a valid 19 digit JMBAG starting with 601983\"\nmsgstr \"Oppgi et gyldig 19-sifret JMBAG begynnende med 601983\"\n\n#: hr/forms.py:259\nmsgid \"Card issue number cannot be zero\"\nmsgstr \"Kortutstedsnummer kan ikke være null\"\n\n#: hr/hr_choices.py:14\nmsgid \"Grad Zagreb\"\nmsgstr \"Zagreb by\"\n\n#: hr/hr_choices.py:15\nmsgid \"Bjelovarsko-bilogorska županija\"\nmsgstr \"Bjelovar-Bilogora\"\n\n#: hr/hr_choices.py:16\nmsgid \"Brodsko-posavska županija\"\nmsgstr \"Brod-Posavina\"\n\n#: hr/hr_choices.py:17\nmsgid \"Dubrovačko-neretvanska županija\"\nmsgstr \"Dubrovnik-Neretva\"\n\n#: hr/hr_choices.py:18\nmsgid \"Istarska županija\"\nmsgstr \"Istria\"\n\n#: hr/hr_choices.py:19\nmsgid \"Karlovačka županija\"\nmsgstr \"Karlovac\"\n\n#: hr/hr_choices.py:20\nmsgid \"Koprivničko-križevačka županija\"\nmsgstr \"Koprivnica-Križevci\"\n\n#: hr/hr_choices.py:21\nmsgid \"Krapinsko-zagorska županija\"\nmsgstr \"Krapina-Zagorje\"\n\n#: hr/hr_choices.py:22\nmsgid \"Ličko-senjska županija\"\nmsgstr \"Lika-Senj\"\n\n#: hr/hr_choices.py:23\nmsgid \"Međimurska županija\"\nmsgstr \"Međimurje\"\n\n#: hr/hr_choices.py:24\nmsgid \"Osječko-baranjska županija\"\nmsgstr \"Osijek-Baranja\"\n\n#: hr/hr_choices.py:25\nmsgid \"Požeško-slavonska županija\"\nmsgstr \"Požega-Slavonia\"\n\n#: hr/hr_choices.py:26\nmsgid \"Primorsko-goranska županija\"\nmsgstr \"Primorje-Gorski Kotar\"\n\n#: hr/hr_choices.py:27\nmsgid \"Sisačko-moslavačka županija\"\nmsgstr \"Sisak-Moslavina\"\n\n#: hr/hr_choices.py:28\nmsgid \"Splitsko-dalmatinska županija\"\nmsgstr \"Split-Dalmatia\"\n\n#: hr/hr_choices.py:29\nmsgid \"Šibensko-kninska županija\"\nmsgstr \"Šibenik-Knin\"\n\n#: hr/hr_choices.py:30\nmsgid \"Varaždinska županija\"\nmsgstr \"Varaždin\"\n\n#: hr/hr_choices.py:31\nmsgid \"Virovitičko-podravska županija\"\nmsgstr \"Virovitica-Podravina\"\n\n#: hr/hr_choices.py:32\nmsgid \"Vukovarsko-srijemska županija\"\nmsgstr \"Vukovar-Syrmia\"\n\n#: hr/hr_choices.py:33\nmsgid \"Zadarska županija\"\nmsgstr \"Zadar\"\n\n#: hr/hr_choices.py:34\nmsgid \"Zagrebačka županija\"\nmsgstr \"Zagreb fylke\"\n\n#: id/forms.py:31\nmsgid \"Enter a valid post code\"\nmsgstr \"Oppgi et gyldig postnummer.\"\n\n#: id/forms.py:176\nmsgid \"Enter a valid NIK/KTP number\"\nmsgstr \"Oppgi et gyldig NIK/KTP-nummer.\"\n\n#: id/id_choices.py:15\nmsgid \"Aceh\"\nmsgstr \"Aceh\"\n\n#: id/id_choices.py:16 id/id_choices.py:79\nmsgid \"Bali\"\nmsgstr \"Bali\"\n\n#: id/id_choices.py:17 id/id_choices.py:51\nmsgid \"Banten\"\nmsgstr \"Banten\"\n\n#: id/id_choices.py:18 id/id_choices.py:60\nmsgid \"Bengkulu\"\nmsgstr \"Bengkulu\"\n\n#: id/id_choices.py:19 id/id_choices.py:53\nmsgid \"Yogyakarta\"\nmsgstr \"Yogyakarta\"\n\n#: id/id_choices.py:20 id/id_choices.py:57\nmsgid \"Jakarta\"\nmsgstr \"Jakarta\"\n\n#: id/id_choices.py:21 id/id_choices.py:81\nmsgid \"Gorontalo\"\nmsgstr \"Gorontalo\"\n\n#: id/id_choices.py:22 id/id_choices.py:63\nmsgid \"Jambi\"\nmsgstr \"Jambi\"\n\n#: id/id_choices.py:23\nmsgid \"Jawa Barat\"\nmsgstr \"Jawa Barat\"\n\n#: id/id_choices.py:24\nmsgid \"Jawa Tengah\"\nmsgstr \"Jawa Tengah\"\n\n#: id/id_choices.py:25\nmsgid \"Jawa Timur\"\nmsgstr \"Jawa Timur\"\n\n#: id/id_choices.py:26 id/id_choices.py:94\nmsgid \"Kalimantan Barat\"\nmsgstr \"Kalimantan Barat\"\n\n#: id/id_choices.py:27 id/id_choices.py:72\nmsgid \"Kalimantan Selatan\"\nmsgstr \"Kalimantan Selatan\"\n\n#: id/id_choices.py:28 id/id_choices.py:95\nmsgid \"Kalimantan Tengah\"\nmsgstr \"Kalimantan Tengah\"\n\n#: id/id_choices.py:29 id/id_choices.py:96\nmsgid \"Kalimantan Timur\"\nmsgstr \"Kalimantan Timur\"\n\n#: id/id_choices.py:30\nmsgid \"Kepulauan Bangka-Belitung\"\nmsgstr \"Kepulauan Bangka-Belitung\"\n\n#: id/id_choices.py:31 id/id_choices.py:68\nmsgid \"Kepulauan Riau\"\nmsgstr \"Kepulauan Riau\"\n\n#: id/id_choices.py:32 id/id_choices.py:61\nmsgid \"Lampung\"\nmsgstr \"Lampung\"\n\n#: id/id_choices.py:33 id/id_choices.py:76\nmsgid \"Maluku\"\nmsgstr \"Maluku\"\n\n#: id/id_choices.py:34 id/id_choices.py:77\nmsgid \"Maluku Utara\"\nmsgstr \"Maluku Utara\"\n\n#: id/id_choices.py:35\nmsgid \"Nusa Tenggara Barat\"\nmsgstr \"Nusa Tenggara Barat\"\n\n#: id/id_choices.py:36\nmsgid \"Nusa Tenggara Timur\"\nmsgstr \"Nusa Tenggara Timur\"\n\n#: id/id_choices.py:37\nmsgid \"Papua\"\nmsgstr \"Papua\"\n\n#: id/id_choices.py:38\nmsgid \"Papua Barat\"\nmsgstr \"Papua Barat\"\n\n#: id/id_choices.py:39 id/id_choices.py:66\nmsgid \"Riau\"\nmsgstr \"Riau\"\n\n#: id/id_choices.py:40 id/id_choices.py:74\nmsgid \"Sulawesi Barat\"\nmsgstr \"Sulawesi Barat\"\n\n#: id/id_choices.py:41 id/id_choices.py:75\nmsgid \"Sulawesi Selatan\"\nmsgstr \"Sulawesi Selatan\"\n\n#: id/id_choices.py:42 id/id_choices.py:82\nmsgid \"Sulawesi Tengah\"\nmsgstr \"Sulawesi Tengah\"\n\n#: id/id_choices.py:43 id/id_choices.py:85\nmsgid \"Sulawesi Tenggara\"\nmsgstr \"Sulawesi Tenggara\"\n\n#: id/id_choices.py:44\nmsgid \"Sulawesi Utara\"\nmsgstr \"Sulawesi Utara\"\n\n#: id/id_choices.py:45 id/id_choices.py:58\nmsgid \"Sumatera Barat\"\nmsgstr \"Sumatera Barat\"\n\n#: id/id_choices.py:46 id/id_choices.py:62\nmsgid \"Sumatera Selatan\"\nmsgstr \"Sumatera Selatan\"\n\n#: id/id_choices.py:47 id/id_choices.py:64\nmsgid \"Sumatera Utara\"\nmsgstr \"Sumatera Utara\"\n\n#: id/id_choices.py:52\nmsgid \"Magelang\"\nmsgstr \"Magelang\"\n\n#: id/id_choices.py:54\nmsgid \"Surakarta - Solo\"\nmsgstr \"Surakarta - Solo\"\n\n#: id/id_choices.py:55\nmsgid \"Madiun\"\nmsgstr \"Madiun\"\n\n#: id/id_choices.py:56\nmsgid \"Kediri\"\nmsgstr \"Kediri\"\n\n#: id/id_choices.py:59\nmsgid \"Tapanuli\"\nmsgstr \"Tapanuli\"\n\n#: id/id_choices.py:65\nmsgid \"Nanggroe Aceh Darussalam\"\nmsgstr \"Nanggroe Aceh Darussalam\"\n\n#: id/id_choices.py:67\nmsgid \"Kepulauan Bangka Belitung\"\nmsgstr \"Kepulauan Bangka Belitung\"\n\n#: id/id_choices.py:69\nmsgid \"Corps Consulate\"\nmsgstr \"Corps Consulate\"\n\n#: id/id_choices.py:70\nmsgid \"Corps Diplomatic\"\nmsgstr \"Corps Diplomatic\"\n\n#: id/id_choices.py:71\nmsgid \"Bandung\"\nmsgstr \"Bandung\"\n\n#: id/id_choices.py:73\nmsgid \"Sulawesi Utara Daratan\"\nmsgstr \"Sulawesi Utara Daratan\"\n\n#: id/id_choices.py:78\nmsgid \"NTT - Timor\"\nmsgstr \"NTT - Timor\"\n\n#: id/id_choices.py:80\nmsgid \"Sulawesi Utara Kepulauan\"\nmsgstr \"Sulawesi Utara Kepulauan\"\n\n#: id/id_choices.py:83\nmsgid \"NTB - Lombok\"\nmsgstr \"NTB - Lombok\"\n\n#: id/id_choices.py:84\nmsgid \"Papua dan Papua Barat\"\nmsgstr \"Papua dan Papua Barat\"\n\n#: id/id_choices.py:86\nmsgid \"Cirebon\"\nmsgstr \"Cirebon\"\n\n#: id/id_choices.py:87\nmsgid \"NTB - Sumbawa\"\nmsgstr \"NTB - Sumbawa\"\n\n#: id/id_choices.py:88\nmsgid \"NTT - Flores\"\nmsgstr \"NTT - Flores\"\n\n#: id/id_choices.py:89\nmsgid \"NTT - Sumba\"\nmsgstr \"NTT - Sumba\"\n\n#: id/id_choices.py:90\nmsgid \"Bogor\"\nmsgstr \"Bogor\"\n\n#: id/id_choices.py:91\nmsgid \"Pekalongan\"\nmsgstr \"Pekalongan\"\n\n#: id/id_choices.py:92\nmsgid \"Semarang\"\nmsgstr \"Semarang\"\n\n#: id/id_choices.py:93\nmsgid \"Pati\"\nmsgstr \"Pati\"\n\n#: id/id_choices.py:97\nmsgid \"Surabaya\"\nmsgstr \"Surabaya\"\n\n#: id/id_choices.py:98\nmsgid \"Madura\"\nmsgstr \"Madura\"\n\n#: id/id_choices.py:99\nmsgid \"Malang\"\nmsgstr \"Malang\"\n\n#: id/id_choices.py:100\nmsgid \"Jember\"\nmsgstr \"Jember\"\n\n#: id/id_choices.py:101\nmsgid \"Banyumas\"\nmsgstr \"Banyumas\"\n\n#: id/id_choices.py:102\nmsgid \"Federal Government\"\nmsgstr \"Federal Government\"\n\n#: id/id_choices.py:103\nmsgid \"Bojonegoro\"\nmsgstr \"Bojonegoro\"\n\n#: id/id_choices.py:104\nmsgid \"Purwakarta\"\nmsgstr \"Purwakarta\"\n\n#: id/id_choices.py:105\nmsgid \"Sidoarjo\"\nmsgstr \"Sidoarjo\"\n\n#: id/id_choices.py:106\nmsgid \"Garut\"\nmsgstr \"Garut\"\n\n#: ie/ie_counties.py:8\nmsgid \"Antrim\"\nmsgstr \"Antrim\"\n\n#: ie/ie_counties.py:9\nmsgid \"Armagh\"\nmsgstr \"Armagh\"\n\n#: ie/ie_counties.py:10\nmsgid \"Carlow\"\nmsgstr \"Carlow\"\n\n#: ie/ie_counties.py:11\nmsgid \"Cavan\"\nmsgstr \"Cavan\"\n\n#: ie/ie_counties.py:12\nmsgid \"Clare\"\nmsgstr \"Clare\"\n\n#: ie/ie_counties.py:13\nmsgid \"Cork\"\nmsgstr \"Cork\"\n\n#: ie/ie_counties.py:14\nmsgid \"Derry\"\nmsgstr \"Derry\"\n\n#: ie/ie_counties.py:15\nmsgid \"Donegal\"\nmsgstr \"Donegal\"\n\n#: ie/ie_counties.py:16\nmsgid \"Down\"\nmsgstr \"Down\"\n\n#: ie/ie_counties.py:17\nmsgid \"Dublin\"\nmsgstr \"Dublin\"\n\n#: ie/ie_counties.py:18\nmsgid \"Fermanagh\"\nmsgstr \"Fermanagh\"\n\n#: ie/ie_counties.py:19\nmsgid \"Galway\"\nmsgstr \"Galway\"\n\n#: ie/ie_counties.py:20\nmsgid \"Kerry\"\nmsgstr \"Kerry\"\n\n#: ie/ie_counties.py:21\nmsgid \"Kildare\"\nmsgstr \"Kildare\"\n\n#: ie/ie_counties.py:22\nmsgid \"Kilkenny\"\nmsgstr \"Kilkenny\"\n\n#: ie/ie_counties.py:23\nmsgid \"Laois\"\nmsgstr \"Laois\"\n\n#: ie/ie_counties.py:24\nmsgid \"Leitrim\"\nmsgstr \"Leitrim\"\n\n#: ie/ie_counties.py:25\nmsgid \"Limerick\"\nmsgstr \"Limerick\"\n\n#: ie/ie_counties.py:26\nmsgid \"Longford\"\nmsgstr \"Longford\"\n\n#: ie/ie_counties.py:27\nmsgid \"Louth\"\nmsgstr \"Louth\"\n\n#: ie/ie_counties.py:28\nmsgid \"Mayo\"\nmsgstr \"Mayo\"\n\n#: ie/ie_counties.py:29\nmsgid \"Meath\"\nmsgstr \"Meath\"\n\n#: ie/ie_counties.py:30\nmsgid \"Monaghan\"\nmsgstr \"Monaghan\"\n\n#: ie/ie_counties.py:31\nmsgid \"Offaly\"\nmsgstr \"Offaly\"\n\n#: ie/ie_counties.py:32\nmsgid \"Roscommon\"\nmsgstr \"Roscommon\"\n\n#: ie/ie_counties.py:33\nmsgid \"Sligo\"\nmsgstr \"Sligo\"\n\n#: ie/ie_counties.py:34\nmsgid \"Tipperary\"\nmsgstr \"Tipperary\"\n\n#: ie/ie_counties.py:35\nmsgid \"Tyrone\"\nmsgstr \"Tyrone\"\n\n#: ie/ie_counties.py:36\nmsgid \"Waterford\"\nmsgstr \"Waterford\"\n\n#: ie/ie_counties.py:37\nmsgid \"Westmeath\"\nmsgstr \"Westmeath\"\n\n#: ie/ie_counties.py:38\nmsgid \"Wexford\"\nmsgstr \"Wexford\"\n\n#: ie/ie_counties.py:39\nmsgid \"Wicklow\"\nmsgstr \"Wicklow\"\n\n#: il/forms.py:32\nmsgid \"Enter a postal code in the format XXXXX\"\nmsgstr \"Oppgi et postnummer på formen XXXXX.\"\n\n#: il/forms.py:51\nmsgid \"Enter a valid ID number.\"\nmsgstr \"Oppgi et gyldig ID-nummer.\"\n\n#: in_/forms.py:41\nmsgid \"Enter a zip code in the format XXXXXX or XXX XXX.\"\nmsgstr \"Oppgi et postnummer på formen XXXXXX or XXX XXX.\"\n\n#: in_/forms.py:64\nmsgid \"Enter an Indian state or territory.\"\nmsgstr \"Oppgi en indisk stat eller et område.\"\n\n#: in_/forms.py:103\nmsgid \"Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.\"\nmsgstr \"Telefonnumre må være på formen 02X-8X, 03X-7X eller 04X-6X.\"\n\n#: is_/forms.py:22\nmsgid \"\"\n\"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.\"\nmsgstr \"Oppgi et gyldig islandsk identifikasjonsnummer på formen XXXXXX-XXXX.\"\n\n#: is_/forms.py:23\nmsgid \"The Icelandic identification number is not valid.\"\nmsgstr \"Det islandske identifikasjonsnummeret er ugyldig.\"\n\n#: it/forms.py:21\nmsgid \"Enter a valid zip code.\"\nmsgstr \"Oppgi et gyldig postnummer.\"\n\n#: it/forms.py:48\nmsgid \"Enter a valid Social Security number.\"\nmsgstr \"Oppgi et gyldig italiensk personnummer.\"\n\n#: it/forms.py:73\nmsgid \"Enter a valid VAT number.\"\nmsgstr \"Oppgi et gyldig VAT-nummer.\"\n\n#: jp/forms.py:19\nmsgid \"Enter a postal code in the format XXXXXXX or XXX-XXXX.\"\nmsgstr \"Oppgi et postnummer på formen XXXXXXX eller XXX-XXXX.\"\n\n#: jp/jp_prefectures.py:4\nmsgid \"Hokkaido\"\nmsgstr \"Hokkaido\"\n\n#: jp/jp_prefectures.py:5\nmsgid \"Aomori\"\nmsgstr \"Aomori\"\n\n#: jp/jp_prefectures.py:6\nmsgid \"Iwate\"\nmsgstr \"Iwate\"\n\n#: jp/jp_prefectures.py:7\nmsgid \"Miyagi\"\nmsgstr \"Miyagi\"\n\n#: jp/jp_prefectures.py:8\nmsgid \"Akita\"\nmsgstr \"Akita\"\n\n#: jp/jp_prefectures.py:9\nmsgid \"Yamagata\"\nmsgstr \"Yamagata\"\n\n#: jp/jp_prefectures.py:10\nmsgid \"Fukushima\"\nmsgstr \"Fukushima\"\n\n#: jp/jp_prefectures.py:11\nmsgid \"Ibaraki\"\nmsgstr \"Ibaraki\"\n\n#: jp/jp_prefectures.py:12\nmsgid \"Tochigi\"\nmsgstr \"Tochigi\"\n\n#: jp/jp_prefectures.py:13\nmsgid \"Gunma\"\nmsgstr \"Gunma\"\n\n#: jp/jp_prefectures.py:14\nmsgid \"Saitama\"\nmsgstr \"Saitama\"\n\n#: jp/jp_prefectures.py:15\nmsgid \"Chiba\"\nmsgstr \"Chiba\"\n\n#: jp/jp_prefectures.py:16\nmsgid \"Tokyo\"\nmsgstr \"Tokyo\"\n\n#: jp/jp_prefectures.py:17\nmsgid \"Kanagawa\"\nmsgstr \"Kanagawa\"\n\n#: jp/jp_prefectures.py:18\nmsgid \"Yamanashi\"\nmsgstr \"Yamanashi\"\n\n#: jp/jp_prefectures.py:19\nmsgid \"Nagano\"\nmsgstr \"Nagano\"\n\n#: jp/jp_prefectures.py:20\nmsgid \"Niigata\"\nmsgstr \"Niigata\"\n\n#: jp/jp_prefectures.py:21\nmsgid \"Toyama\"\nmsgstr \"Toyama\"\n\n#: jp/jp_prefectures.py:22\nmsgid \"Ishikawa\"\nmsgstr \"Ishikawa\"\n\n#: jp/jp_prefectures.py:23\nmsgid \"Fukui\"\nmsgstr \"Fukui\"\n\n#: jp/jp_prefectures.py:24\nmsgid \"Gifu\"\nmsgstr \"Gifu\"\n\n#: jp/jp_prefectures.py:25\nmsgid \"Shizuoka\"\nmsgstr \"Shizuoka\"\n\n#: jp/jp_prefectures.py:26\nmsgid \"Aichi\"\nmsgstr \"Aichi\"\n\n#: jp/jp_prefectures.py:27\nmsgid \"Mie\"\nmsgstr \"Mie\"\n\n#: jp/jp_prefectures.py:28\nmsgid \"Shiga\"\nmsgstr \"Shiga\"\n\n#: jp/jp_prefectures.py:29\nmsgid \"Kyoto\"\nmsgstr \"Kyoto\"\n\n#: jp/jp_prefectures.py:30\nmsgid \"Osaka\"\nmsgstr \"Osaka\"\n\n#: jp/jp_prefectures.py:31\nmsgid \"Hyogo\"\nmsgstr \"Hyogo\"\n\n#: jp/jp_prefectures.py:32\nmsgid \"Nara\"\nmsgstr \"Nara\"\n\n#: jp/jp_prefectures.py:33\nmsgid \"Wakayama\"\nmsgstr \"Wakayama\"\n\n#: jp/jp_prefectures.py:34\nmsgid \"Tottori\"\nmsgstr \"Tottori\"\n\n#: jp/jp_prefectures.py:35\nmsgid \"Shimane\"\nmsgstr \"Shimane\"\n\n#: jp/jp_prefectures.py:36\nmsgid \"Okayama\"\nmsgstr \"Okayama\"\n\n#: jp/jp_prefectures.py:37\nmsgid \"Hiroshima\"\nmsgstr \"Hiroshima\"\n\n#: jp/jp_prefectures.py:38\nmsgid \"Yamaguchi\"\nmsgstr \"Yamaguchi\"\n\n#: jp/jp_prefectures.py:39\nmsgid \"Tokushima\"\nmsgstr \"Tokushima\"\n\n#: jp/jp_prefectures.py:40\nmsgid \"Kagawa\"\nmsgstr \"Kagawa\"\n\n#: jp/jp_prefectures.py:41\nmsgid \"Ehime\"\nmsgstr \"Ehime\"\n\n#: jp/jp_prefectures.py:42\nmsgid \"Kochi\"\nmsgstr \"Kochi\"\n\n#: jp/jp_prefectures.py:43\nmsgid \"Fukuoka\"\nmsgstr \"Fukuoka\"\n\n#: jp/jp_prefectures.py:44\nmsgid \"Saga\"\nmsgstr \"Saga\"\n\n#: jp/jp_prefectures.py:45\nmsgid \"Nagasaki\"\nmsgstr \"Nagasaki\"\n\n#: jp/jp_prefectures.py:46\nmsgid \"Kumamoto\"\nmsgstr \"Kumamoto\"\n\n#: jp/jp_prefectures.py:47\nmsgid \"Oita\"\nmsgstr \"Oita\"\n\n#: jp/jp_prefectures.py:48\nmsgid \"Miyazaki\"\nmsgstr \"Miyazaki\"\n\n#: jp/jp_prefectures.py:49\nmsgid \"Kagoshima\"\nmsgstr \"Kagoshima\"\n\n#: jp/jp_prefectures.py:50\nmsgid \"Okinawa\"\nmsgstr \"Okinawa\"\n\n#: kw/forms.py:27\nmsgid \"Enter a valid Kuwaiti Civil ID number\"\nmsgstr \"Oppgi et gyldig Kuwaiti Civil ID-nummer.\"\n\n#: mk/forms.py:18\nmsgid \"\"\n\"Identity card numbers must contain either 4 to 7 digits or an uppercase \"\n\"letter and 7 digits.\"\nmsgstr \"\"\n\"Identitetskortnummer må inneholde enten 4 eller 7 siffer eller en stor \"\n\"bokstav og 7 siffer.\"\n\n#: mk/forms.py:57 si/forms.py:24\nmsgid \"This field should contain exactly 13 digits.\"\nmsgstr \"Dette feltet bør inneholde nøyaktig 13 siffer.\"\n\n#: mk/forms.py:58\nmsgid \"The first 7 digits of the UMCN must represent a valid past date.\"\nmsgstr \"\"\n\"De første syv sifrene av UMCN må representere en gyldig dato i fortiden.\"\n\n#: mk/forms.py:59\nmsgid \"The UMCN is not valid.\"\nmsgstr \"UMCN er ikke gyldig.\"\n\n#: mk/mk_choices.py:10\nmsgid \"Aerodrom\"\nmsgstr \"Aerodrom\"\n\n#: mk/mk_choices.py:11\nmsgid \"Aračinovo\"\nmsgstr \"Aračinovo\"\n\n#: mk/mk_choices.py:12\nmsgid \"Berovo\"\nmsgstr \"Berovo\"\n\n#: mk/mk_choices.py:13\nmsgid \"Bitola\"\nmsgstr \"Bitola\"\n\n#: mk/mk_choices.py:14\nmsgid \"Bogdanci\"\nmsgstr \"Bogdanci\"\n\n#: mk/mk_choices.py:15\nmsgid \"Bogovinje\"\nmsgstr \"Bogovinje\"\n\n#: mk/mk_choices.py:16\nmsgid \"Bosilovo\"\nmsgstr \"Bosilovo\"\n\n#: mk/mk_choices.py:17\nmsgid \"Brvenica\"\nmsgstr \"Brvenica\"\n\n#: mk/mk_choices.py:18\nmsgid \"Butel\"\nmsgstr \"Butel\"\n\n#: mk/mk_choices.py:19\nmsgid \"Valandovo\"\nmsgstr \"Valandovo\"\n\n#: mk/mk_choices.py:20\nmsgid \"Vasilevo\"\nmsgstr \"Vasilevo\"\n\n#: mk/mk_choices.py:21\nmsgid \"Vevčani\"\nmsgstr \"Vevčani\"\n\n#: mk/mk_choices.py:22\nmsgid \"Veles\"\nmsgstr \"Veles\"\n\n#: mk/mk_choices.py:23\nmsgid \"Vinica\"\nmsgstr \"Vinica\"\n\n#: mk/mk_choices.py:24\nmsgid \"Vraneštica\"\nmsgstr \"Vraneštica\"\n\n#: mk/mk_choices.py:25\nmsgid \"Vrapčište\"\nmsgstr \"Vrapčište\"\n\n#: mk/mk_choices.py:26\nmsgid \"Gazi Baba\"\nmsgstr \"Gazi Baba\"\n\n#: mk/mk_choices.py:27\nmsgid \"Gevgelija\"\nmsgstr \"Gevgelija\"\n\n#: mk/mk_choices.py:28\nmsgid \"Gostivar\"\nmsgstr \"Gostivar\"\n\n#: mk/mk_choices.py:29\nmsgid \"Gradsko\"\nmsgstr \"Gradsko\"\n\n#: mk/mk_choices.py:30\nmsgid \"Debar\"\nmsgstr \"Debar\"\n\n#: mk/mk_choices.py:31\nmsgid \"Debarca\"\nmsgstr \"Debarca\"\n\n#: mk/mk_choices.py:32\nmsgid \"Delčevo\"\nmsgstr \"Delčevo\"\n\n#: mk/mk_choices.py:33\nmsgid \"Demir Kapija\"\nmsgstr \"Demir Kapija\"\n\n#: mk/mk_choices.py:34\nmsgid \"Demir Hisar\"\nmsgstr \"Demir Hisar\"\n\n#: mk/mk_choices.py:35\nmsgid \"Dolneni\"\nmsgstr \"Dolneni\"\n\n#: mk/mk_choices.py:36\nmsgid \"Drugovo\"\nmsgstr \"Drugovo\"\n\n#: mk/mk_choices.py:37\nmsgid \"Gjorče Petrov\"\nmsgstr \"Gjorče Petrov\"\n\n#: mk/mk_choices.py:38\nmsgid \"Želino\"\nmsgstr \"Želino\"\n\n#: mk/mk_choices.py:39\nmsgid \"Zajas\"\nmsgstr \"Zajas\"\n\n#: mk/mk_choices.py:40\nmsgid \"Zelenikovo\"\nmsgstr \"Zelenikovo\"\n\n#: mk/mk_choices.py:41\nmsgid \"Zrnovci\"\nmsgstr \"Zrnovci\"\n\n#: mk/mk_choices.py:42\nmsgid \"Ilinden\"\nmsgstr \"Ilinden\"\n\n#: mk/mk_choices.py:43\nmsgid \"Jegunovce\"\nmsgstr \"Jegunovce\"\n\n#: mk/mk_choices.py:44\nmsgid \"Kavadarci\"\nmsgstr \"Kavadarci\"\n\n#: mk/mk_choices.py:45\nmsgid \"Karbinci\"\nmsgstr \"Karbinci\"\n\n#: mk/mk_choices.py:46\nmsgid \"Karpoš\"\nmsgstr \"Karpoš\"\n\n#: mk/mk_choices.py:47\nmsgid \"Kisela Voda\"\nmsgstr \"Kisela Voda\"\n\n#: mk/mk_choices.py:48\nmsgid \"Kičevo\"\nmsgstr \"Kičevo\"\n\n#: mk/mk_choices.py:49\nmsgid \"Konče\"\nmsgstr \"Konče\"\n\n#: mk/mk_choices.py:50\nmsgid \"Koćani\"\nmsgstr \"Koćani\"\n\n#: mk/mk_choices.py:51\nmsgid \"Kratovo\"\nmsgstr \"Kratovo\"\n\n#: mk/mk_choices.py:52\nmsgid \"Kriva Palanka\"\nmsgstr \"Kriva Palanka\"\n\n#: mk/mk_choices.py:53\nmsgid \"Krivogaštani\"\nmsgstr \"Krivogaštani\"\n\n#: mk/mk_choices.py:54\nmsgid \"Kruševo\"\nmsgstr \"Kruševo\"\n\n#: mk/mk_choices.py:55\nmsgid \"Kumanovo\"\nmsgstr \"Kumanovo\"\n\n#: mk/mk_choices.py:56\nmsgid \"Lipkovo\"\nmsgstr \"Lipkovo\"\n\n#: mk/mk_choices.py:57\nmsgid \"Lozovo\"\nmsgstr \"Lozovo\"\n\n#: mk/mk_choices.py:58\nmsgid \"Mavrovo i Rostuša\"\nmsgstr \"Mavrovo i Rostuša\"\n\n#: mk/mk_choices.py:59\nmsgid \"Makedonska Kamenica\"\nmsgstr \"Makedonska Kamenica\"\n\n#: mk/mk_choices.py:60\nmsgid \"Makedonski Brod\"\nmsgstr \"Makedonski Brod\"\n\n#: mk/mk_choices.py:61\nmsgid \"Mogila\"\nmsgstr \"Mogila\"\n\n#: mk/mk_choices.py:62\nmsgid \"Negotino\"\nmsgstr \"Negotino\"\n\n#: mk/mk_choices.py:63\nmsgid \"Novaci\"\nmsgstr \"Novaci\"\n\n#: mk/mk_choices.py:64\nmsgid \"Novo Selo\"\nmsgstr \"Novo Selo\"\n\n#: mk/mk_choices.py:65\nmsgid \"Oslomej\"\nmsgstr \"Oslomej\"\n\n#: mk/mk_choices.py:66\nmsgid \"Ohrid\"\nmsgstr \"Ohrid\"\n\n#: mk/mk_choices.py:67\nmsgid \"Petrovec\"\nmsgstr \"Petrovec\"\n\n#: mk/mk_choices.py:68\nmsgid \"Pehčevo\"\nmsgstr \"Pehčevo\"\n\n#: mk/mk_choices.py:69\nmsgid \"Plasnica\"\nmsgstr \"Plasnica\"\n\n#: mk/mk_choices.py:70\nmsgid \"Prilep\"\nmsgstr \"Prilep\"\n\n#: mk/mk_choices.py:71\nmsgid \"Probištip\"\nmsgstr \"Probištip\"\n\n#: mk/mk_choices.py:72\nmsgid \"Radoviš\"\nmsgstr \"Radoviš\"\n\n#: mk/mk_choices.py:73\nmsgid \"Rankovce\"\nmsgstr \"Rankovce\"\n\n#: mk/mk_choices.py:74\nmsgid \"Resen\"\nmsgstr \"Resen\"\n\n#: mk/mk_choices.py:75\nmsgid \"Rosoman\"\nmsgstr \"Rosoman\"\n\n#: mk/mk_choices.py:76\nmsgid \"Saraj\"\nmsgstr \"Saraj\"\n\n#: mk/mk_choices.py:77\nmsgid \"Sveti Nikole\"\nmsgstr \"Sveti Nikole\"\n\n#: mk/mk_choices.py:78\nmsgid \"Sopište\"\nmsgstr \"Sopište\"\n\n#: mk/mk_choices.py:79\nmsgid \"Star Dojran\"\nmsgstr \"Star Dojran\"\n\n#: mk/mk_choices.py:80\nmsgid \"Staro Nagoričane\"\nmsgstr \"Staro Nagoričane\"\n\n#: mk/mk_choices.py:81\nmsgid \"Struga\"\nmsgstr \"Struga\"\n\n#: mk/mk_choices.py:82\nmsgid \"Strumica\"\nmsgstr \"Strumica\"\n\n#: mk/mk_choices.py:83\nmsgid \"Studeničani\"\nmsgstr \"Studeničani\"\n\n#: mk/mk_choices.py:84\nmsgid \"Tearce\"\nmsgstr \"Tearce\"\n\n#: mk/mk_choices.py:85\nmsgid \"Tetovo\"\nmsgstr \"Tetovo\"\n\n#: mk/mk_choices.py:86\nmsgid \"Centar\"\nmsgstr \"Centar\"\n\n#: mk/mk_choices.py:87\nmsgid \"Centar-Župa\"\nmsgstr \"Centar-Župa\"\n\n#: mk/mk_choices.py:88\nmsgid \"Čair\"\nmsgstr \"Čair\"\n\n#: mk/mk_choices.py:89\nmsgid \"Čaška\"\nmsgstr \"Čaška\"\n\n#: mk/mk_choices.py:90\nmsgid \"Češinovo-Obleševo\"\nmsgstr \"Češinovo-Obleševo\"\n\n#: mk/mk_choices.py:91\nmsgid \"Čučer-Sandevo\"\nmsgstr \"Čučer-Sandevo\"\n\n#: mk/mk_choices.py:92\nmsgid \"Štip\"\nmsgstr \"Štip\"\n\n#: mk/mk_choices.py:93\nmsgid \"Šuto Orizari\"\nmsgstr \"Šuto Orizari\"\n\n#: mk/models.py:11\nmsgid \"Macedonian identity card number\"\nmsgstr \"Makedonsk identitetskortnummer\"\n\n#: mk/models.py:25\nmsgid \"A Macedonian municipality (2 character code)\"\nmsgstr \"Et makedonsk fylke (2-tegns kode)\"\n\n#: mk/models.py:35\nmsgid \"Unique master citizen number (13 digits)\"\nmsgstr \"Unikt innbyggernummer (13 siffer)\"\n\n#: mx/forms.py:67\nmsgid \"Enter a valid zip code in the format XXXXX.\"\nmsgstr \"Oppgi et gyldig postnummer på formen XXXXX.\"\n\n#: mx/forms.py:110\nmsgid \"Enter a valid RFC.\"\nmsgstr \"Oppgi en gyldig RFC.\"\n\n#: mx/forms.py:111\nmsgid \"Invalid checksum for RFC.\"\nmsgstr \"Ugyldig sjekksum for RFC.\"\n\n#: mx/forms.py:191\nmsgid \"Enter a valid CURP.\"\nmsgstr \"Oppgi en gyldig CURP.\"\n\n#: mx/forms.py:192\nmsgid \"Invalid checksum for CURP.\"\nmsgstr \"Ugyldig sjekksum for CURP.\"\n\n#: mx/models.py:14\nmsgid \"Mexico state (three uppercase letters)\"\nmsgstr \"Meksikansk stat (tre store bokstaver)\"\n\n#: mx/models.py:27\nmsgid \"Mexico zip code\"\nmsgstr \"Meksikansk postnummer\"\n\n#: mx/models.py:44\nmsgid \"Mexican RFC\"\nmsgstr \"Meksikansk RFC\"\n\n#: mx/models.py:61\nmsgid \"Mexican CURP\"\nmsgstr \"Meksikansk CURP\"\n\n#: mx/mx_states.py:14\nmsgid \"Aguascalientes\"\nmsgstr \"Aguascalientes\"\n\n#: mx/mx_states.py:15\nmsgid \"Baja California\"\nmsgstr \"Baja California\"\n\n#: mx/mx_states.py:16\nmsgid \"Baja California Sur\"\nmsgstr \"Baja California Sur\"\n\n#: mx/mx_states.py:17\nmsgid \"Campeche\"\nmsgstr \"Campeche\"\n\n#: mx/mx_states.py:18\nmsgid \"Chihuahua\"\nmsgstr \"Chihuahua\"\n\n#: mx/mx_states.py:19\nmsgid \"Chiapas\"\nmsgstr \"Chiapas\"\n\n#: mx/mx_states.py:20\nmsgid \"Coahuila\"\nmsgstr \"Coahuila\"\n\n#: mx/mx_states.py:21\nmsgid \"Colima\"\nmsgstr \"Colima\"\n\n#: mx/mx_states.py:22\nmsgid \"Distrito Federal\"\nmsgstr \"Distrito Federal\"\n\n#: mx/mx_states.py:23\nmsgid \"Durango\"\nmsgstr \"Durango\"\n\n#: mx/mx_states.py:24\nmsgid \"Guerrero\"\nmsgstr \"Guerrero\"\n\n#: mx/mx_states.py:25\nmsgid \"Guanajuato\"\nmsgstr \"Guanajuato\"\n\n#: mx/mx_states.py:26\nmsgid \"Hidalgo\"\nmsgstr \"Hidalgo\"\n\n#: mx/mx_states.py:27\nmsgid \"Jalisco\"\nmsgstr \"Jalisco\"\n\n#: mx/mx_states.py:28\nmsgid \"Estado de México\"\nmsgstr \"Estado de México\"\n\n#: mx/mx_states.py:29\nmsgid \"Michoacán\"\nmsgstr \"Michoacán\"\n\n#: mx/mx_states.py:30\nmsgid \"Morelos\"\nmsgstr \"Morelos\"\n\n#: mx/mx_states.py:31\nmsgid \"Nayarit\"\nmsgstr \"Nayarit\"\n\n#: mx/mx_states.py:32\nmsgid \"Nuevo León\"\nmsgstr \"Nuevo León\"\n\n#: mx/mx_states.py:33\nmsgid \"Oaxaca\"\nmsgstr \"Oaxaca\"\n\n#: mx/mx_states.py:34\nmsgid \"Puebla\"\nmsgstr \"Puebla\"\n\n#: mx/mx_states.py:35\nmsgid \"Querétaro\"\nmsgstr \"Querétaro\"\n\n#: mx/mx_states.py:36\nmsgid \"Quintana Roo\"\nmsgstr \"Quintana Roo\"\n\n#: mx/mx_states.py:37\nmsgid \"Sinaloa\"\nmsgstr \"Sinaloa\"\n\n#: mx/mx_states.py:38\nmsgid \"San Luis Potosí\"\nmsgstr \"San Luis Potosí\"\n\n#: mx/mx_states.py:39\nmsgid \"Sonora\"\nmsgstr \"Sonora\"\n\n#: mx/mx_states.py:40\nmsgid \"Tabasco\"\nmsgstr \"Tabasco\"\n\n#: mx/mx_states.py:41\nmsgid \"Tamaulipas\"\nmsgstr \"Tamaulipas\"\n\n#: mx/mx_states.py:42\nmsgid \"Tlaxcala\"\nmsgstr \"Tlaxcala\"\n\n#: mx/mx_states.py:43\nmsgid \"Veracruz\"\nmsgstr \"Veracruz\"\n\n#: mx/mx_states.py:44\nmsgid \"Yucatán\"\nmsgstr \"Yucatán\"\n\n#: mx/mx_states.py:45\nmsgid \"Zacatecas\"\nmsgstr \"Zacatecas\"\n\n#: nl/forms.py:26\nmsgid \"Enter a valid postal code\"\nmsgstr \"Oppgi et gyldig postnummer.\"\n\n#: nl/forms.py:82\nmsgid \"Enter a valid SoFi number\"\nmsgstr \"Oppgi et gyldig SoFi-nummer.\"\n\n#: nl/nl_provinces.py:4\nmsgid \"Drenthe\"\nmsgstr \"Drenthe\"\n\n#: nl/nl_provinces.py:5\nmsgid \"Flevoland\"\nmsgstr \"Flevoland\"\n\n#: nl/nl_provinces.py:6\nmsgid \"Friesland\"\nmsgstr \"Friesland\"\n\n#: nl/nl_provinces.py:7\nmsgid \"Gelderland\"\nmsgstr \"Gelderland\"\n\n#: nl/nl_provinces.py:8\nmsgid \"Groningen\"\nmsgstr \"Groningen\"\n\n#: nl/nl_provinces.py:10\nmsgid \"Noord-Brabant\"\nmsgstr \"Noord-Brabant\"\n\n#: nl/nl_provinces.py:11\nmsgid \"Noord-Holland\"\nmsgstr \"Noord-Holland\"\n\n#: nl/nl_provinces.py:12\nmsgid \"Overijssel\"\nmsgstr \"Overijssel\"\n\n#: nl/nl_provinces.py:13\nmsgid \"Utrecht\"\nmsgstr \"Utrecht\"\n\n#: nl/nl_provinces.py:14\nmsgid \"Zeeland\"\nmsgstr \"Zeeland\"\n\n#: nl/nl_provinces.py:15\nmsgid \"Zuid-Holland\"\nmsgstr \"Zuid-Holland\"\n\n#: no/forms.py:39\nmsgid \"Enter a valid Norwegian social security number.\"\nmsgstr \"Oppgi et gyldig norsk personnummer.\"\n\n#: pe/forms.py:28\nmsgid \"This field requires 8 digits.\"\nmsgstr \"Feltet krever åtte siffer.\"\n\n#: pe/forms.py:56\nmsgid \"This field requires 11 digits.\"\nmsgstr \"Feltet krever 11 siffer.\"\n\n#: pl/forms.py:42\nmsgid \"National Identification Number consists of 11 digits.\"\nmsgstr \"National Identification Number består av 11 siffer.\"\n\n#: pl/forms.py:43\nmsgid \"Wrong checksum for the National Identification Number.\"\nmsgstr \"Feil kontrollsum for National Identification Number.\"\n\n#: pl/forms.py:79\nmsgid \"National ID Card Number consists of 3 letters and 6 digits.\"\nmsgstr \"Nasjonalt ID-kortnummer består av 3 bokstaver og 6 siffer.\"\n\n#: pl/forms.py:80\nmsgid \"Wrong checksum for the National ID Card Number.\"\nmsgstr \"Feil sjekksum for nasjonalit ID-kortnummer.\"\n\n#: pl/forms.py:131\nmsgid \"\"\n\"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or \"\n\"XXXXXXXXXX.\"\nmsgstr \"\"\n\"Oppgi et skattenummer (NIP) på formen XXX-XXX-XX-XX, XXX-XX-XX-XXX eller \"\n\"XXXXXXXXXX.\"\n\n#: pl/forms.py:132\nmsgid \"Wrong checksum for the Tax Number (NIP).\"\nmsgstr \"Ugyldig kontrollsum for NIP.\"\n\n#: pl/forms.py:171\nmsgid \"National Business Register Number (REGON) consists of 9 or 14 digits.\"\nmsgstr \"National Business Register Number (REGON) består av 9 eller 14 siffer.\"\n\n#: pl/forms.py:172\nmsgid \"Wrong checksum for the National Business Register Number (REGON).\"\nmsgstr \"Ugyldig kontrollsum for National Business Register Number (REGON).\"\n\n#: pl/forms.py:212\nmsgid \"Enter a postal code in the format XX-XXX.\"\nmsgstr \"Oppgi et postnummer på formen XX-XXX.\"\n\n#: pl/pl_voivodeships.py:8\nmsgid \"Lower Silesia\"\nmsgstr \"Lower Silesia\"\n\n#: pl/pl_voivodeships.py:9\nmsgid \"Kuyavia-Pomerania\"\nmsgstr \"Kuyavia-Pomerania\"\n\n#: pl/pl_voivodeships.py:10\nmsgid \"Lublin\"\nmsgstr \"Lublin\"\n\n#: pl/pl_voivodeships.py:11\nmsgid \"Lubusz\"\nmsgstr \"Lubusz voivodskap\"\n\n#: pl/pl_voivodeships.py:12\nmsgid \"Lodz\"\nmsgstr \"Łódź voivodskap\"\n\n#: pl/pl_voivodeships.py:13\nmsgid \"Lesser Poland\"\nmsgstr \"Lillepolske voivodskap\"\n\n#: pl/pl_voivodeships.py:14\nmsgid \"Masovia\"\nmsgstr \"Masoviske voivodskap\"\n\n#: pl/pl_voivodeships.py:15\nmsgid \"Opole\"\nmsgstr \"Opole voivodskap\"\n\n#: pl/pl_voivodeships.py:16\nmsgid \"Subcarpatia\"\nmsgstr \"Subkarpatiske voivodskap\"\n\n#: pl/pl_voivodeships.py:17\nmsgid \"Podlasie\"\nmsgstr \"Podlasie voivodskap\"\n\n#: pl/pl_voivodeships.py:18\nmsgid \"Pomerania\"\nmsgstr \"Pommerske voivodskap\"\n\n#: pl/pl_voivodeships.py:19\nmsgid \"Silesia\"\nmsgstr \"Schlesiske voivodskap\"\n\n#: pl/pl_voivodeships.py:20\nmsgid \"Swietokrzyskie\"\nmsgstr \"Helligkorsvoivodskapet\"\n\n#: pl/pl_voivodeships.py:21\nmsgid \"Warmia-Masuria\"\nmsgstr \"Ermelandskmasuriske voivodskap\"\n\n#: pl/pl_voivodeships.py:22\nmsgid \"Greater Poland\"\nmsgstr \"Storpolske voivodskap\"\n\n#: pl/pl_voivodeships.py:23\nmsgid \"West Pomerania\"\nmsgstr \"Vestpommerske voivodskap\"\n\n#: pt/forms.py:19\nmsgid \"Enter a zip code in the format XXXX-XXX.\"\nmsgstr \"Oppgi et postnummer på formen XXXX-XXX.\"\n\n#: pt/forms.py:39\nmsgid \"Phone numbers must have 9 digits, or start by + or 00.\"\nmsgstr \"Telefonnumre må ha 9 siffer, eller starte med + eller 00.\"\n\n#: ro/forms.py:22\nmsgid \"Enter a valid CIF.\"\nmsgstr \"Oppgi et gyldig CIF.\"\n\n#: ro/forms.py:59\nmsgid \"Enter a valid CNP.\"\nmsgstr \"Oppgi et gyldig CNP.\"\n\n#: ro/forms.py:143\nmsgid \"Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format\"\nmsgstr \"Oppgi et gyldig IBAN på formen ROXX-XXXX-XXXX-XXXX-XXXX-XXXX.\"\n\n#: ro/forms.py:175\nmsgid \"Phone numbers must be in XXXX-XXXXXX format.\"\nmsgstr \"Telefonnumre må være på formen XXXX-XXXXXX.\"\n\n#: ro/forms.py:200\nmsgid \"Enter a valid postal code in the format XXXXXX\"\nmsgstr \"Oppgi et postnummer på formen XXXXXX.\"\n\n#: ru/forms.py:37\nmsgid \"Enter a postal code in the format XXXXXX.\"\nmsgstr \"Oppgi et postnummer på formen XXXXXX.\"\n\n#: ru/forms.py:50\nmsgid \"Enter a passport number in the format XXXX XXXXXX.\"\nmsgstr \"Oppgi et passnummer på formen XXXX XXXXXX.\"\n\n#: ru/forms.py:63\nmsgid \"Enter a passport number in the format XX XXXXXXX.\"\nmsgstr \"Oppgi et passnummer på formen XX XXXXXXX.\"\n\n#: ru/ru_regions.py:10\nmsgid \"Central Federal County\"\nmsgstr \"Sentralt føderalt distrikt\"\n\n#: ru/ru_regions.py:11\nmsgid \"South Federal County\"\nmsgstr \"Sørlig føderalt distrikt\"\n\n#: ru/ru_regions.py:12\nmsgid \"North-West Federal County\"\nmsgstr \"Nordvestlig føderalt distrikt\"\n\n#: ru/ru_regions.py:13\nmsgid \"Far-East Federal County\"\nmsgstr \"Fjernøstlig føderalt distrikt\"\n\n#: ru/ru_regions.py:14\nmsgid \"Siberian Federal County\"\nmsgstr \"Sibir, føderalt distrikt\"\n\n#: ru/ru_regions.py:15\nmsgid \"Ural Federal County\"\nmsgstr \"Ural, føderalt disktrikt\"\n\n#: ru/ru_regions.py:16\nmsgid \"Privolzhsky Federal County\"\nmsgstr \"Privolzjskij, føderalt distrikt\"\n\n#: ru/ru_regions.py:17\nmsgid \"North-Caucasian Federal County\"\nmsgstr \"Nord-Kaukasisk, føderalt distrikt\"\n\n#: ru/ru_regions.py:21\nmsgid \"Moskva\"\nmsgstr \"Moskva, føderal by\"\n\n#: ru/ru_regions.py:22\nmsgid \"Saint-Peterburg\"\nmsgstr \"Sankt Petersburg, føderal by\"\n\n#: ru/ru_regions.py:23\nmsgid \"Moskovskaya oblast'\"\nmsgstr \"Moskva, provins\"\n\n#: ru/ru_regions.py:24\nmsgid \"Adygeya, Respublika\"\nmsgstr \"Adygia, republikk\"\n\n#: ru/ru_regions.py:25\nmsgid \"Bashkortostan, Respublika\"\nmsgstr \"Basjkortostan, republikk\"\n\n#: ru/ru_regions.py:26\nmsgid \"Buryatia, Respublika\"\nmsgstr \"Burjatia, republikk\"\n\n#: ru/ru_regions.py:27\nmsgid \"Altay, Respublika\"\nmsgstr \"Altaj, republikk\"\n\n#: ru/ru_regions.py:28\nmsgid \"Dagestan, Respublika\"\nmsgstr \"Dagestan, republikk\"\n\n#: ru/ru_regions.py:29\nmsgid \"Ingushskaya Respublika\"\nmsgstr \"Ingusjetia, republikk\"\n\n#: ru/ru_regions.py:30\nmsgid \"Kabardino-Balkarskaya Respublika\"\nmsgstr \"Kabardino-Balkaria, republikk\"\n\n#: ru/ru_regions.py:31\nmsgid \"Kalmykia, Respublika\"\nmsgstr \"Kalmykia, republikk\"\n\n#: ru/ru_regions.py:32\nmsgid \"Karachaevo-Cherkesskaya Respublika\"\nmsgstr \"Karatsjajevo-Tsjerkessia, republikk\"\n\n#: ru/ru_regions.py:33\nmsgid \"Karelia, Respublika\"\nmsgstr \"Karelia, republikk\"\n\n#: ru/ru_regions.py:34\nmsgid \"Komi, Respublika\"\nmsgstr \"Komi, republikk\"\n\n#: ru/ru_regions.py:35\nmsgid \"Mariy Ehl, Respublika\"\nmsgstr \"Mari El, republikk\"\n\n#: ru/ru_regions.py:36\nmsgid \"Mordovia, Respublika\"\nmsgstr \"Mordovia, republikk\"\n\n#: ru/ru_regions.py:37\nmsgid \"Sakha, Respublika (Yakutiya)\"\nmsgstr \"Sakha (Jakutia), republikk\"\n\n#: ru/ru_regions.py:38\nmsgid \"Severnaya Osetia, Respublika (Alania)\"\nmsgstr \"Nord-Ossetia (Alania), republikk\"\n\n#: ru/ru_regions.py:39\nmsgid \"Tatarstan, Respublika\"\nmsgstr \"Tatarstan, republikk\"\n\n#: ru/ru_regions.py:40\nmsgid \"Tyva, Respublika (Tuva)\"\nmsgstr \"Tuva, republikk\"\n\n#: ru/ru_regions.py:41\nmsgid \"Udmurtskaya Respublika\"\nmsgstr \"Udmurtia, republikk\"\n\n#: ru/ru_regions.py:42\nmsgid \"Khakassiya, Respublika\"\nmsgstr \"Khakasia, republikk\"\n\n#: ru/ru_regions.py:43\nmsgid \"Chechenskaya Respublika\"\nmsgstr \"Tsjetsjenia, republikk\"\n\n#: ru/ru_regions.py:44\nmsgid \"Chuvashskaya Respublika\"\nmsgstr \"Tsjuvasjia, republikk\"\n\n#: ru/ru_regions.py:45\nmsgid \"Altayskiy Kray\"\nmsgstr \"Altaj, territorium\"\n\n#: ru/ru_regions.py:46\nmsgid \"Zabaykalskiy Kray\"\nmsgstr \"Zabajkalskij, territorium\"\n\n#: ru/ru_regions.py:47\nmsgid \"Kamchatskiy Kray\"\nmsgstr \"Kamtsjatka, territorium\"\n\n#: ru/ru_regions.py:48\nmsgid \"Krasnodarskiy Kray\"\nmsgstr \"Krasnodar, territorium\"\n\n#: ru/ru_regions.py:49\nmsgid \"Krasnoyarskiy Kray\"\nmsgstr \"Krasnojarsk, territorium\"\n\n#: ru/ru_regions.py:50\nmsgid \"Permskiy Kray\"\nmsgstr \"Perm, territorium\"\n\n#: ru/ru_regions.py:51\nmsgid \"Primorskiy Kray\"\nmsgstr \"Primorsk, territorium\"\n\n#: ru/ru_regions.py:52\nmsgid \"Stavropol'siyy Kray\"\nmsgstr \"Stavropol, territorium\"\n\n#: ru/ru_regions.py:53\nmsgid \"Khabarovskiy Kray\"\nmsgstr \"Khabarovsk, territorium\"\n\n#: ru/ru_regions.py:54\nmsgid \"Amurskaya oblast'\"\nmsgstr \"Amur, provins\"\n\n#: ru/ru_regions.py:55\nmsgid \"Arkhangel'skaya oblast'\"\nmsgstr \"Arkhangelsk, provins\"\n\n#: ru/ru_regions.py:56\nmsgid \"Astrakhanskaya oblast'\"\nmsgstr \"Astrakhan, provins\"\n\n#: ru/ru_regions.py:57\nmsgid \"Belgorodskaya oblast'\"\nmsgstr \"Belgorod, provins\"\n\n#: ru/ru_regions.py:58\nmsgid \"Bryanskaya oblast'\"\nmsgstr \"Brjansk, provins\"\n\n#: ru/ru_regions.py:59\nmsgid \"Vladimirskaya oblast'\"\nmsgstr \"Vladimir, provins\"\n\n#: ru/ru_regions.py:60\nmsgid \"Volgogradskaya oblast'\"\nmsgstr \"Volgograd, provins\"\n\n#: ru/ru_regions.py:61\nmsgid \"Vologodskaya oblast'\"\nmsgstr \"Vologda, provins\"\n\n#: ru/ru_regions.py:62\nmsgid \"Voronezhskaya oblast'\"\nmsgstr \"Voronezj, provins\"\n\n#: ru/ru_regions.py:63\nmsgid \"Ivanovskaya oblast'\"\nmsgstr \"Ivanovo, provins\"\n\n#: ru/ru_regions.py:64\nmsgid \"Irkutskaya oblast'\"\nmsgstr \"Irkutsk, provins\"\n\n#: ru/ru_regions.py:65\nmsgid \"Kaliningradskaya oblast'\"\nmsgstr \"Kaliningrad\"\n\n#: ru/ru_regions.py:66\nmsgid \"Kaluzhskaya oblast'\"\nmsgstr \"Kaluga, provins\"\n\n#: ru/ru_regions.py:67\nmsgid \"Kemerovskaya oblast'\"\nmsgstr \"Kemerovo, provins\"\n\n#: ru/ru_regions.py:68\nmsgid \"Kirovskaya oblast'\"\nmsgstr \"Kirov, provins\"\n\n#: ru/ru_regions.py:69\nmsgid \"Kostromskaya oblast'\"\nmsgstr \"Kostroma, provins\"\n\n#: ru/ru_regions.py:70\nmsgid \"Kurganskaya oblast'\"\nmsgstr \"Kurgan, provins\"\n\n#: ru/ru_regions.py:71\nmsgid \"Kurskaya oblast'\"\nmsgstr \"Kursk, provins\"\n\n#: ru/ru_regions.py:72\nmsgid \"Leningradskaya oblast'\"\nmsgstr \"Leningrad\"\n\n#: ru/ru_regions.py:73\nmsgid \"Lipeckaya oblast'\"\nmsgstr \"Lipetsk, provins\"\n\n#: ru/ru_regions.py:74\nmsgid \"Magadanskaya oblast'\"\nmsgstr \"Magadan, provins\"\n\n#: ru/ru_regions.py:75\nmsgid \"Murmanskaya oblast'\"\nmsgstr \"Murmansk, provins\"\n\n#: ru/ru_regions.py:76\nmsgid \"Nizhegorodskaja oblast'\"\nmsgstr \"Nizjnij Novgorod, provins\"\n\n#: ru/ru_regions.py:77\nmsgid \"Novgorodskaya oblast'\"\nmsgstr \"Novgorod, provins\"\n\n#: ru/ru_regions.py:78\nmsgid \"Novosibirskaya oblast'\"\nmsgstr \"Novosibirsk, provins\"\n\n#: ru/ru_regions.py:79\nmsgid \"Omskaya oblast'\"\nmsgstr \"Omsk, provins\"\n\n#: ru/ru_regions.py:80\nmsgid \"Orenburgskaya oblast'\"\nmsgstr \"Orenburg, provins\"\n\n#: ru/ru_regions.py:81\nmsgid \"Orlovskaya oblast'\"\nmsgstr \"Orjol, provins\"\n\n#: ru/ru_regions.py:82\nmsgid \"Penzenskaya oblast'\"\nmsgstr \"Penza, provins\"\n\n#: ru/ru_regions.py:83\nmsgid \"Pskovskaya oblast'\"\nmsgstr \"Pskov, provins\"\n\n#: ru/ru_regions.py:84\nmsgid \"Rostovskaya oblast'\"\nmsgstr \"Rostov, provins\"\n\n#: ru/ru_regions.py:85\nmsgid \"Rjazanskaya oblast'\"\nmsgstr \"Rjazan, provins\"\n\n#: ru/ru_regions.py:86\nmsgid \"Samarskaya oblast'\"\nmsgstr \"Samara, provins\"\n\n#: ru/ru_regions.py:87\nmsgid \"Saratovskaya oblast'\"\nmsgstr \"Saratov, provins\"\n\n#: ru/ru_regions.py:88\nmsgid \"Sakhalinskaya oblast'\"\nmsgstr \"Sakhalin, provins\"\n\n#: ru/ru_regions.py:89\nmsgid \"Sverdlovskaya oblast'\"\nmsgstr \"Sverdlovsk, provins\"\n\n#: ru/ru_regions.py:90\nmsgid \"Smolenskaya oblast'\"\nmsgstr \"Smolensk, provins\"\n\n#: ru/ru_regions.py:91\nmsgid \"Tambovskaya oblast'\"\nmsgstr \"Tambov\"\n\n#: ru/ru_regions.py:92\nmsgid \"Tverskaya oblast'\"\nmsgstr \"Tver, provins\"\n\n#: ru/ru_regions.py:93\nmsgid \"Tomskaya oblast'\"\nmsgstr \"Tomsk, provins\"\n\n#: ru/ru_regions.py:94\nmsgid \"Tul'skaya oblast'\"\nmsgstr \"Tula, provins\"\n\n#: ru/ru_regions.py:95\nmsgid \"Tyumenskaya oblast'\"\nmsgstr \"Tjumen, provins\"\n\n#: ru/ru_regions.py:96\nmsgid \"Ul'ianovskaya oblast'\"\nmsgstr \"Uljanovsk, provins\"\n\n#: ru/ru_regions.py:97\nmsgid \"Chelyabinskaya oblast'\"\nmsgstr \"Tsjeljabinsk, provins\"\n\n#: ru/ru_regions.py:98\nmsgid \"Yaroslavskaya oblast'\"\nmsgstr \"Jaroslavl, provins\"\n\n#: ru/ru_regions.py:99\nmsgid \"Evreyskaya avtonomnaja oblast'\"\nmsgstr \"Den jødiske autonome oblasten\"\n\n#: ru/ru_regions.py:100\nmsgid \"Neneckiy autonomnyy okrug\"\nmsgstr \"Nenetsk, autonomt distrikt\"\n\n#: ru/ru_regions.py:101\nmsgid \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\nmsgstr \"Khanty-Mansia, autonomt distrikt\"\n\n#: ru/ru_regions.py:102\nmsgid \"Chukotskiy avtonomnyy okrug\"\nmsgstr \"Tsjukotka, autonomt distrikt\"\n\n#: ru/ru_regions.py:103\nmsgid \"Yamalo-Neneckiy avtonomnyy okrug\"\nmsgstr \"Jamalo-Nenetsk, autonomt distrikt\"\n\n#: se/forms.py:54\nmsgid \"Enter a valid Swedish organisation number.\"\nmsgstr \"Oppgi et gyldig svensk organisasjonsnummer.\"\n\n#: se/forms.py:111\nmsgid \"Enter a valid Swedish personal identity number.\"\nmsgstr \"Oppgi et gyldig svensk personnummer.\"\n\n#: se/forms.py:112\nmsgid \"Co-ordination numbers are not allowed.\"\nmsgstr \"Koordineringsnumre er ikke tillatt.\"\n\n#: se/forms.py:154\nmsgid \"Enter a Swedish postal code in the format XXXXX.\"\nmsgstr \"Oppgi et gyldig svensk postnummer på formen XXXXX.\"\n\n#: se/se_counties.py:16\nmsgid \"Stockholm\"\nmsgstr \"Stockholm\"\n\n#: se/se_counties.py:17\nmsgid \"Västerbotten\"\nmsgstr \"Västerbotten\"\n\n#: se/se_counties.py:18\nmsgid \"Norrbotten\"\nmsgstr \"Norrbotten\"\n\n#: se/se_counties.py:19\nmsgid \"Uppsala\"\nmsgstr \"Uppsala\"\n\n#: se/se_counties.py:20\nmsgid \"Södermanland\"\nmsgstr \"Södermanland\"\n\n#: se/se_counties.py:21\nmsgid \"Östergötland\"\nmsgstr \"Östergötland\"\n\n#: se/se_counties.py:22\nmsgid \"Jönköping\"\nmsgstr \"Jönköping\"\n\n#: se/se_counties.py:23\nmsgid \"Kronoberg\"\nmsgstr \"Kronoberg\"\n\n#: se/se_counties.py:24\nmsgid \"Kalmar\"\nmsgstr \"Kalmar\"\n\n#: se/se_counties.py:25\nmsgid \"Gotland\"\nmsgstr \"Gotland\"\n\n#: se/se_counties.py:26\nmsgid \"Blekinge\"\nmsgstr \"Blekinge\"\n\n#: se/se_counties.py:27\nmsgid \"Skåne\"\nmsgstr \"Skåne\"\n\n#: se/se_counties.py:28\nmsgid \"Halland\"\nmsgstr \"Halland\"\n\n#: se/se_counties.py:29\nmsgid \"Västra Götaland\"\nmsgstr \"Västra Götaland\"\n\n#: se/se_counties.py:30\nmsgid \"Värmland\"\nmsgstr \"Värmland\"\n\n#: se/se_counties.py:31\nmsgid \"Örebro\"\nmsgstr \"Örebro\"\n\n#: se/se_counties.py:32\nmsgid \"Västmanland\"\nmsgstr \"Västmanland\"\n\n#: se/se_counties.py:33\nmsgid \"Dalarna\"\nmsgstr \"Dalarna\"\n\n#: se/se_counties.py:34\nmsgid \"Gävleborg\"\nmsgstr \"Gävleborg\"\n\n#: se/se_counties.py:35\nmsgid \"Västernorrland\"\nmsgstr \"Västernorrland\"\n\n#: se/se_counties.py:36\nmsgid \"Jämtland\"\nmsgstr \"Jämtland\"\n\n#: si/forms.py:25\nmsgid \"The first 7 digits of the EMSO must represent a valid past date.\"\nmsgstr \"\"\n\"De første 7 siffer av EMSO-en må representere en gyldig dato i fortiden.\"\n\n#: si/forms.py:26\nmsgid \"The EMSO is not valid.\"\nmsgstr \"EMSO-en er ikke gyldig.\"\n\n#: si/forms.py:86\nmsgid \"Enter a valid tax number in form SIXXXXXXXX\"\nmsgstr \"Oppgi et gyldig skattenummer på formen SIXXXXXXXX\"\n\n#: si/forms.py:151\nmsgid \"Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.\"\nmsgstr \"Oppgi telefonnummer på formen +386XXXXXXXX eller 0XXXXXXXX.\"\n\n#: sk/sk_districts.py:8\nmsgid \"Banska Bystrica\"\nmsgstr \"Banska Bystrica\"\n\n#: sk/sk_districts.py:9\nmsgid \"Banska Stiavnica\"\nmsgstr \"Banska Stiavnica\"\n\n#: sk/sk_districts.py:10\nmsgid \"Bardejov\"\nmsgstr \"Bardejov\"\n\n#: sk/sk_districts.py:11\nmsgid \"Banovce nad Bebravou\"\nmsgstr \"Banovce nad Bebravou\"\n\n#: sk/sk_districts.py:12\nmsgid \"Brezno\"\nmsgstr \"Brezno\"\n\n#: sk/sk_districts.py:13\nmsgid \"Bratislava I\"\nmsgstr \"Bratislava I\"\n\n#: sk/sk_districts.py:14\nmsgid \"Bratislava II\"\nmsgstr \"Bratislava II\"\n\n#: sk/sk_districts.py:15\nmsgid \"Bratislava III\"\nmsgstr \"Bratislava III\"\n\n#: sk/sk_districts.py:16\nmsgid \"Bratislava IV\"\nmsgstr \"Bratislava IV\"\n\n#: sk/sk_districts.py:17\nmsgid \"Bratislava V\"\nmsgstr \"Bratislava V\"\n\n#: sk/sk_districts.py:18\nmsgid \"Bytca\"\nmsgstr \"Bytca\"\n\n#: sk/sk_districts.py:19\nmsgid \"Cadca\"\nmsgstr \"Cadca\"\n\n#: sk/sk_districts.py:20\nmsgid \"Detva\"\nmsgstr \"Detva\"\n\n#: sk/sk_districts.py:21\nmsgid \"Dolny Kubin\"\nmsgstr \"Dolny Kubin\"\n\n#: sk/sk_districts.py:22\nmsgid \"Dunajska Streda\"\nmsgstr \"Dunajska Streda\"\n\n#: sk/sk_districts.py:23\nmsgid \"Galanta\"\nmsgstr \"Galanta\"\n\n#: sk/sk_districts.py:24\nmsgid \"Gelnica\"\nmsgstr \"Gelnica\"\n\n#: sk/sk_districts.py:25\nmsgid \"Hlohovec\"\nmsgstr \"Hlohovec\"\n\n#: sk/sk_districts.py:26\nmsgid \"Humenne\"\nmsgstr \"Humenne\"\n\n#: sk/sk_districts.py:27\nmsgid \"Ilava\"\nmsgstr \"Ilava\"\n\n#: sk/sk_districts.py:28\nmsgid \"Kezmarok\"\nmsgstr \"Kezmarok\"\n\n#: sk/sk_districts.py:29\nmsgid \"Komarno\"\nmsgstr \"Komarno\"\n\n#: sk/sk_districts.py:30\nmsgid \"Kosice I\"\nmsgstr \"Kosice I\"\n\n#: sk/sk_districts.py:31\nmsgid \"Kosice II\"\nmsgstr \"Kosice II\"\n\n#: sk/sk_districts.py:32\nmsgid \"Kosice III\"\nmsgstr \"Kosice III\"\n\n#: sk/sk_districts.py:33\nmsgid \"Kosice IV\"\nmsgstr \"Kosice IV\"\n\n#: sk/sk_districts.py:34\nmsgid \"Kosice - okolie\"\nmsgstr \"Kosice - okolie\"\n\n#: sk/sk_districts.py:35\nmsgid \"Krupina\"\nmsgstr \"Krupina\"\n\n#: sk/sk_districts.py:36\nmsgid \"Kysucke Nove Mesto\"\nmsgstr \"Kysucke Nove Mesto\"\n\n#: sk/sk_districts.py:37\nmsgid \"Levice\"\nmsgstr \"Levice\"\n\n#: sk/sk_districts.py:38\nmsgid \"Levoca\"\nmsgstr \"Levoca\"\n\n#: sk/sk_districts.py:39\nmsgid \"Liptovsky Mikulas\"\nmsgstr \"Liptovsky Mikulas\"\n\n#: sk/sk_districts.py:40\nmsgid \"Lucenec\"\nmsgstr \"Lucenec\"\n\n#: sk/sk_districts.py:41\nmsgid \"Malacky\"\nmsgstr \"Malacky\"\n\n#: sk/sk_districts.py:42\nmsgid \"Martin\"\nmsgstr \"Martin\"\n\n#: sk/sk_districts.py:43\nmsgid \"Medzilaborce\"\nmsgstr \"Medzilaborce\"\n\n#: sk/sk_districts.py:44\nmsgid \"Michalovce\"\nmsgstr \"Michalovce\"\n\n#: sk/sk_districts.py:45\nmsgid \"Myjava\"\nmsgstr \"Myjava\"\n\n#: sk/sk_districts.py:46\nmsgid \"Namestovo\"\nmsgstr \"Namestovo\"\n\n#: sk/sk_districts.py:47\nmsgid \"Nitra\"\nmsgstr \"Nitra\"\n\n#: sk/sk_districts.py:48\nmsgid \"Nove Mesto nad Vahom\"\nmsgstr \"Nove Mesto nad Vahom\"\n\n#: sk/sk_districts.py:49\nmsgid \"Nove Zamky\"\nmsgstr \"Nove Zamky\"\n\n#: sk/sk_districts.py:50\nmsgid \"Partizanske\"\nmsgstr \"Partizanske\"\n\n#: sk/sk_districts.py:51\nmsgid \"Pezinok\"\nmsgstr \"Pezinok\"\n\n#: sk/sk_districts.py:52\nmsgid \"Piestany\"\nmsgstr \"Piestany\"\n\n#: sk/sk_districts.py:53\nmsgid \"Poltar\"\nmsgstr \"Poltar\"\n\n#: sk/sk_districts.py:54\nmsgid \"Poprad\"\nmsgstr \"Poprad\"\n\n#: sk/sk_districts.py:55\nmsgid \"Povazska Bystrica\"\nmsgstr \"Povazska Bystrica\"\n\n#: sk/sk_districts.py:56\nmsgid \"Presov\"\nmsgstr \"Presov\"\n\n#: sk/sk_districts.py:57\nmsgid \"Prievidza\"\nmsgstr \"Prievidza\"\n\n#: sk/sk_districts.py:58\nmsgid \"Puchov\"\nmsgstr \"Puchov\"\n\n#: sk/sk_districts.py:59\nmsgid \"Revuca\"\nmsgstr \"Revuca\"\n\n#: sk/sk_districts.py:60\nmsgid \"Rimavska Sobota\"\nmsgstr \"Rimavska Sobota\"\n\n#: sk/sk_districts.py:61\nmsgid \"Roznava\"\nmsgstr \"Roznava\"\n\n#: sk/sk_districts.py:62\nmsgid \"Ruzomberok\"\nmsgstr \"Ruzomberok\"\n\n#: sk/sk_districts.py:63\nmsgid \"Sabinov\"\nmsgstr \"Sabinov\"\n\n#: sk/sk_districts.py:64\nmsgid \"Senec\"\nmsgstr \"Senec\"\n\n#: sk/sk_districts.py:65\nmsgid \"Senica\"\nmsgstr \"Senica\"\n\n#: sk/sk_districts.py:66\nmsgid \"Skalica\"\nmsgstr \"Skalica\"\n\n#: sk/sk_districts.py:67\nmsgid \"Snina\"\nmsgstr \"Snina\"\n\n#: sk/sk_districts.py:68\nmsgid \"Sobrance\"\nmsgstr \"Sobrance\"\n\n#: sk/sk_districts.py:69\nmsgid \"Spisska Nova Ves\"\nmsgstr \"Spisska Nova Ves\"\n\n#: sk/sk_districts.py:70\nmsgid \"Stara Lubovna\"\nmsgstr \"Stara Lubovna\"\n\n#: sk/sk_districts.py:71\nmsgid \"Stropkov\"\nmsgstr \"Stropkov\"\n\n#: sk/sk_districts.py:72\nmsgid \"Svidnik\"\nmsgstr \"Svidnik\"\n\n#: sk/sk_districts.py:73\nmsgid \"Sala\"\nmsgstr \"Sala\"\n\n#: sk/sk_districts.py:74\nmsgid \"Topolcany\"\nmsgstr \"Topolcany\"\n\n#: sk/sk_districts.py:75\nmsgid \"Trebisov\"\nmsgstr \"Trebisov\"\n\n#: sk/sk_districts.py:76\nmsgid \"Trencin\"\nmsgstr \"Trencin\"\n\n#: sk/sk_districts.py:77\nmsgid \"Trnava\"\nmsgstr \"Trnava\"\n\n#: sk/sk_districts.py:78\nmsgid \"Turcianske Teplice\"\nmsgstr \"Turcianske Teplice\"\n\n#: sk/sk_districts.py:79\nmsgid \"Tvrdosin\"\nmsgstr \"Tvrdosin\"\n\n#: sk/sk_districts.py:80\nmsgid \"Velky Krtis\"\nmsgstr \"Velky Krtis\"\n\n#: sk/sk_districts.py:81\nmsgid \"Vranov nad Toplou\"\nmsgstr \"Vranov nad Toplou\"\n\n#: sk/sk_districts.py:82\nmsgid \"Zlate Moravce\"\nmsgstr \"Zlate Moravce\"\n\n#: sk/sk_districts.py:83\nmsgid \"Zvolen\"\nmsgstr \"Zvolen\"\n\n#: sk/sk_districts.py:84\nmsgid \"Zarnovica\"\nmsgstr \"Zarnovica\"\n\n#: sk/sk_districts.py:85\nmsgid \"Ziar nad Hronom\"\nmsgstr \"Ziar nad Hronom\"\n\n#: sk/sk_districts.py:86\nmsgid \"Zilina\"\nmsgstr \"Zilina\"\n\n#: sk/sk_regions.py:8\nmsgid \"Banska Bystrica region\"\nmsgstr \"Banská Bystrica-regionen\"\n\n#: sk/sk_regions.py:9\nmsgid \"Bratislava region\"\nmsgstr \"Bratislava-regionen\"\n\n#: sk/sk_regions.py:10\nmsgid \"Kosice region\"\nmsgstr \"Košice-regionen\"\n\n#: sk/sk_regions.py:11\nmsgid \"Nitra region\"\nmsgstr \"Nitra-regionen\"\n\n#: sk/sk_regions.py:12\nmsgid \"Presov region\"\nmsgstr \"Prešov-regionen\"\n\n#: sk/sk_regions.py:13\nmsgid \"Trencin region\"\nmsgstr \"Trenčín-regionen\"\n\n#: sk/sk_regions.py:14\nmsgid \"Trnava region\"\nmsgstr \"Trnava-regionen\"\n\n#: sk/sk_regions.py:15\nmsgid \"Zilina region\"\nmsgstr \"Žilina-regionen\"\n\n#: tr/forms.py:21\nmsgid \"Enter a postal code in the format XXXXX.\"\nmsgstr \"Oppgi et postnummer på formen XXXXX.\"\n\n#: tr/forms.py:42\nmsgid \"Phone numbers must be in 0XXX XXX XXXX format.\"\nmsgstr \"Telefonnumre må være på formen 0XXX XXX XXXX.\"\n\n#: tr/forms.py:69\nmsgid \"Enter a valid Turkish Identification number.\"\nmsgstr \"Oppgi et gyldig tyrkisk identifikasjonsnummer.\"\n\n#: tr/forms.py:70\nmsgid \"Turkish Identification number must be 11 digits.\"\nmsgstr \"Tyrkiske identifikasjonsnummer må være 11 siffer.\"\n\n#: us/forms.py:21\nmsgid \"Enter a zip code in the format XXXXX or XXXXX-XXXX.\"\nmsgstr \"Oppgi et postnummer på formen XXXXX eller XXXXX-XXXX.\"\n\n#: us/forms.py:59\nmsgid \"Enter a valid U.S. Social Security number in XXX-XX-XXXX format.\"\nmsgstr \"\"\n\"Oppgi et gyldig amerikansk Social Security-nummer på formen XXX-XX-XXXX.\"\n\n#: us/forms.py:92\nmsgid \"Enter a U.S. state or territory.\"\nmsgstr \"Oppgi en amerikansk stat eller et område\"\n\n#: us/models.py:8\nmsgid \"U.S. state (two uppercase letters)\"\nmsgstr \"Stat (i USA, to store bokstaver)\"\n\n#: us/models.py:17\nmsgid \"U.S. postal code (two uppercase letters)\"\nmsgstr \"Amerikansk postnummer (med to store bokstaver)\"\n\n#: us/models.py:26\nmsgid \"Phone number\"\nmsgstr \"Telefonnummer\"\n\n#: uy/forms.py:29\nmsgid \"Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.\"\nmsgstr \"Oppgi gyldig CI på formen X.XXX.XXX-X,XXXXXXX-X eller XXXXXXXX.\"\n\n#: uy/forms.py:31\nmsgid \"Enter a valid CI number.\"\nmsgstr \"Oppgi et gyldig CI-nummer.\"\n\n#: za/forms.py:22\nmsgid \"Enter a valid South African ID number\"\nmsgstr \"Oppgi et gyldig South African ID-nummer.\"\n\n#: za/forms.py:56\nmsgid \"Enter a valid South African postal code\"\nmsgstr \"Oppgi et gyldig postnummer.\"\n\n#: za/za_provinces.py:4\nmsgid \"Eastern Cape\"\nmsgstr \"Eastern Cape\"\n\n#: za/za_provinces.py:5\nmsgid \"Free State\"\nmsgstr \"Free State\"\n\n#: za/za_provinces.py:6\nmsgid \"Gauteng\"\nmsgstr \"Gauteng\"\n\n#: za/za_provinces.py:7\nmsgid \"KwaZulu-Natal\"\nmsgstr \"KwaZulu-Natal\"\n\n#: za/za_provinces.py:8\nmsgid \"Limpopo\"\nmsgstr \"Limpopo\"\n\n#: za/za_provinces.py:9\nmsgid \"Mpumalanga\"\nmsgstr \"Mpumalanga\"\n\n#: za/za_provinces.py:10\nmsgid \"Northern Cape\"\nmsgstr \"Northern Cape\"\n\n#: za/za_provinces.py:11\nmsgid \"North West\"\nmsgstr \"North West\"\n\n#: za/za_provinces.py:12\nmsgid \"Western Cape\"\nmsgstr \"Western Cape\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/locale/nl/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <alexandervanratingen@gmail.com>, 2012.\n#   <bart@dispectu.com>, 2012.\n# Blue <alexandervanratingen@gmail.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Jeffrey Gelens <jeffrey@noppo.pro>, 2011, 2012.\n# Tino de Bruijn <tinodb@gmail.com>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-10-20 11:52+0000\\n\"\n\"Last-Translator: bartdegoede <bart@dispectu.com>\\n\"\n\"Language-Team: Dutch (http://www.transifex.com/projects/p/django/language/\"\n\"nl/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: nl\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: ar/forms.py:30\nmsgid \"Enter a postal code in the format NNNN or ANNNNAAA.\"\nmsgstr \"Geef een postcode op volgens het NNNN of ANNNNAAA formaat.\"\n\n#: ar/forms.py:52 br/forms.py:95 br/forms.py:134 pe/forms.py:27 pe/forms.py:55\nmsgid \"This field requires only numbers.\"\nmsgstr \"Dit veld dient alleen cijfers te bevatten.\"\n\n#: ar/forms.py:53\nmsgid \"This field requires 7 or 8 digits.\"\nmsgstr \"Dit veld dient 7 of 8 cijfers te bevatten.\"\n\n#: ar/forms.py:82\nmsgid \"Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.\"\nmsgstr \"Geef een geldige CUIT op in het XX-XXXXXXXX-X of XXXXXXXXXXXX formaat.\"\n\n#: ar/forms.py:83\nmsgid \"Invalid CUIT.\"\nmsgstr \"Ongeldige CUIT.\"\n\n#: ar/forms.py:84\nmsgid \"Invalid legal type. Type must be 27, 20, 23 or 30.\"\nmsgstr \"Ongeldige rechtsvorm. Type moet 27, 20, 23 of 30 zijn.\"\n\n#: at/at_states.py:5\nmsgid \"Burgenland\"\nmsgstr \"Burgenland\"\n\n#: at/at_states.py:6\nmsgid \"Carinthia\"\nmsgstr \"Carinthia\"\n\n#: at/at_states.py:7\nmsgid \"Lower Austria\"\nmsgstr \"Lager Australië\"\n\n#: at/at_states.py:8\nmsgid \"Upper Austria\"\nmsgstr \"Hoger Australië\"\n\n#: at/at_states.py:9\nmsgid \"Salzburg\"\nmsgstr \"Salzburg\"\n\n#: at/at_states.py:10\nmsgid \"Styria\"\nmsgstr \"Styria\"\n\n#: at/at_states.py:11\nmsgid \"Tyrol\"\nmsgstr \"Tirol\"\n\n#: at/at_states.py:12\nmsgid \"Vorarlberg\"\nmsgstr \"Vorarlberg\"\n\n#: at/at_states.py:13\nmsgid \"Vienna\"\nmsgstr \"Wenen\"\n\n#: at/forms.py:22 ch/forms.py:22 no/forms.py:19\nmsgid \"Enter a zip code in the format XXXX.\"\nmsgstr \"Geef een postcode op in het formaat XXXX.\"\n\n#: at/forms.py:50\nmsgid \"Enter a valid Austrian Social Security Number in XXXX XXXXXX format.\"\nmsgstr \"\"\n\"Geef een geldig Oostenrijks Sociaalnummer op in het XXX-XX-XXXX formaat.\"\n\n#: au/forms.py:26\nmsgid \"Enter a 4 digit postcode.\"\nmsgstr \"Voer een 4-cijferige postcode in.\"\n\n#: au/models.py:9\nmsgid \"Australian State\"\nmsgstr \"Australische staat\"\n\n#: au/models.py:19\nmsgid \"Australian Postcode\"\nmsgstr \"Australische postcode\"\n\n#: au/models.py:33\nmsgid \"Australian Phone number\"\nmsgstr \"Australische telefoonnummer\"\n\n#: be/be_provinces.py:5\nmsgid \"Antwerp\"\nmsgstr \"Antwerpen\"\n\n#: be/be_provinces.py:6\nmsgid \"Brussels\"\nmsgstr \"Brussel\"\n\n#: be/be_provinces.py:7\nmsgid \"East Flanders\"\nmsgstr \"Oost-Vlaanderen\"\n\n#: be/be_provinces.py:8\nmsgid \"Flemish Brabant\"\nmsgstr \"Vlaams-Brabant\"\n\n#: be/be_provinces.py:9\nmsgid \"Hainaut\"\nmsgstr \"Hainaut\"\n\n#: be/be_provinces.py:10\nmsgid \"Liege\"\nmsgstr \"Luik\"\n\n#: be/be_provinces.py:11 nl/nl_provinces.py:9\nmsgid \"Limburg\"\nmsgstr \"Limburg\"\n\n#: be/be_provinces.py:12\nmsgid \"Luxembourg\"\nmsgstr \"Luxemburg\"\n\n#: be/be_provinces.py:13\nmsgid \"Namur\"\nmsgstr \"Namen\"\n\n#: be/be_provinces.py:14\nmsgid \"Walloon Brabant\"\nmsgstr \"Waals-Brabant\"\n\n#: be/be_provinces.py:15\nmsgid \"West Flanders\"\nmsgstr \"West-Vlaanderen\"\n\n#: be/be_regions.py:5\nmsgid \"Brussels Capital Region\"\nmsgstr \"Brussels Hoofdstedelijk Gewest\"\n\n#: be/be_regions.py:6\nmsgid \"Flemish Region\"\nmsgstr \"Vlaamse Gewest\"\n\n#: be/be_regions.py:7\nmsgid \"Wallonia\"\nmsgstr \"Wallonië\"\n\n#: be/forms.py:25\nmsgid \"Enter a valid postal code in the range and format 1XXX - 9XXX.\"\nmsgstr \"Voer een geldige postcode in het bereik en de vorm 1xxx - 9xxx.\"\n\n#: be/forms.py:48\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\nmsgstr \"\"\n\"Voer een geldig telefoonnummer in een van de volgende formaten: 0x xxx xx \"\n\"xx, xx xx xx 0xx, 04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, \"\n\"0x . xxx.xx.xx, 0xx.xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx of 04xxxxxxxx.\"\n\n#: br/forms.py:22\nmsgid \"Enter a zip code in the format XXXXX-XXX.\"\nmsgstr \"Geef een postcode op in het formaat XXXXX-XXX.\"\n\n#: br/forms.py:31\nmsgid \"Phone numbers must be in XX-XXXX-XXXX format.\"\nmsgstr \"Telefoonnummers dienen volgens het XX-XXXX-XXXX formaat te zijn.\"\n\n#: br/forms.py:58\nmsgid \"\"\n\"Select a valid brazilian state. That state is not one of the available \"\n\"states.\"\nmsgstr \"\"\n\"Selecteer een geldige Braziliaanse staat. Uw keuze is niet een van de \"\n\"beschikbare staten.\"\n\n#: br/forms.py:93\nmsgid \"Invalid CPF number.\"\nmsgstr \"Ongeldig CPF nummer.\"\n\n#: br/forms.py:94\nmsgid \"This field requires at most 11 digits or 14 characters.\"\nmsgstr \"Dit veld dient maximaal 11 cijfers of 14 karakters te bevatten.\"\n\n#: br/forms.py:133\nmsgid \"Invalid CNPJ number.\"\nmsgstr \"Ongeldig CNPJ nummer.\"\n\n#: br/forms.py:135\nmsgid \"This field requires at least 14 digits\"\nmsgstr \"Dit veld vereist minimaal 14 cijfers.\"\n\n#: ca/forms.py:29\nmsgid \"Enter a postal code in the format XXX XXX.\"\nmsgstr \"Geef een postcode op in het formaat XXX XXX.\"\n\n#: ca/forms.py:47 us/forms.py:30\nmsgid \"Phone numbers must be in XXX-XXX-XXXX format.\"\nmsgstr \"Telefoonnummers moeten in XXX-XXX-XXXX formaat staan.\"\n\n#: ca/forms.py:69\nmsgid \"Enter a Canadian province or territory.\"\nmsgstr \"Vul een Canadese provincie of landstreek in.\"\n\n#: ca/forms.py:110\nmsgid \"Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.\"\nmsgstr \"\"\n\"Geef een geldig Canadees Sociaal Verzekeringsnummer op volgens het XXX-XXX-\"\n\"XXX formaat.\"\n\n#: ch/ch_states.py:5\nmsgid \"Aargau\"\nmsgstr \"Aargau\"\n\n#: ch/ch_states.py:6\nmsgid \"Appenzell Innerrhoden\"\nmsgstr \"Appenzell Innerrhoden\"\n\n#: ch/ch_states.py:7\nmsgid \"Appenzell Ausserrhoden\"\nmsgstr \"Appenzell Ausserrhoden\"\n\n#: ch/ch_states.py:8\nmsgid \"Basel-Stadt\"\nmsgstr \"Basel-Stad\"\n\n#: ch/ch_states.py:9\nmsgid \"Basel-Land\"\nmsgstr \"Basel-Land\"\n\n#: ch/ch_states.py:10\nmsgid \"Berne\"\nmsgstr \"Bern\"\n\n#: ch/ch_states.py:11\nmsgid \"Fribourg\"\nmsgstr \"Fribourg\"\n\n#: ch/ch_states.py:12\nmsgid \"Geneva\"\nmsgstr \"Genève\"\n\n#: ch/ch_states.py:13\nmsgid \"Glarus\"\nmsgstr \"Glarus\"\n\n#: ch/ch_states.py:14\nmsgid \"Graubuenden\"\nmsgstr \"Graubuenden\"\n\n#: ch/ch_states.py:15\nmsgid \"Jura\"\nmsgstr \"Jura\"\n\n#: ch/ch_states.py:16\nmsgid \"Lucerne\"\nmsgstr \"Lucerne\"\n\n#: ch/ch_states.py:17\nmsgid \"Neuchatel\"\nmsgstr \"Neuchatel\"\n\n#: ch/ch_states.py:18\nmsgid \"Nidwalden\"\nmsgstr \"Nidwalden\"\n\n#: ch/ch_states.py:19\nmsgid \"Obwalden\"\nmsgstr \"Obwalden\"\n\n#: ch/ch_states.py:20\nmsgid \"Schaffhausen\"\nmsgstr \"Schaffhausen\"\n\n#: ch/ch_states.py:21\nmsgid \"Schwyz\"\nmsgstr \"Schwyz\"\n\n#: ch/ch_states.py:22\nmsgid \"Solothurn\"\nmsgstr \"Solothurn\"\n\n#: ch/ch_states.py:23\nmsgid \"St. Gallen\"\nmsgstr \"St. Gallen\"\n\n#: ch/ch_states.py:24\nmsgid \"Thurgau\"\nmsgstr \"Thurgau\"\n\n#: ch/ch_states.py:25\nmsgid \"Ticino\"\nmsgstr \"Ticino\"\n\n#: ch/ch_states.py:26\nmsgid \"Uri\"\nmsgstr \"Uri\"\n\n#: ch/ch_states.py:27\nmsgid \"Valais\"\nmsgstr \"Valais\"\n\n#: ch/ch_states.py:28\nmsgid \"Vaud\"\nmsgstr \"Vaud\"\n\n#: ch/ch_states.py:29\nmsgid \"Zug\"\nmsgstr \"Zug\"\n\n#: ch/ch_states.py:30\nmsgid \"Zurich\"\nmsgstr \"Zurich\"\n\n#: ch/forms.py:37\nmsgid \"Phone numbers must be in 0XX XXX XX XX format.\"\nmsgstr \"Telefoonnummers moeten van het formaat 0XX XXX XX XX zijn.\"\n\n#: ch/forms.py:68\nmsgid \"\"\n\"Enter a valid Swiss identity or passport card number in X1234567<0 or \"\n\"1234567890 format.\"\nmsgstr \"\"\n\"Geef een geldig Zwitsers identiteits- of paspoortnummer op volgens het \"\n\"X1234567<0 of 1234567890 formaat\"\n\n#: cl/forms.py:32\nmsgid \"Enter a valid Chilean RUT.\"\nmsgstr \"Geef een geldige Chileense RUT op.\"\n\n#: cl/forms.py:33\nmsgid \"Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.\"\nmsgstr \"Geef een geldige Chileense RUT op. Het formaat is XX.XXX.XXX-X.\"\n\n#: cl/forms.py:34\nmsgid \"The Chilean RUT is not valid.\"\nmsgstr \"De Chileense RUT is ongeldig.\"\n\n#: cn/forms.py:84\nmsgid \"Enter a post code in the format XXXXXX.\"\nmsgstr \"Voer een postcode in het formaat XXXXXX in.\"\n\n#: cn/forms.py:105\nmsgid \"ID Card Number consists of 15 or 18 digits.\"\nmsgstr \"ID-kaart nummer bestaat uit 15 of 18 getallen\"\n\n#: cn/forms.py:106\nmsgid \"Invalid ID Card Number: Wrong checksum\"\nmsgstr \"Ongeldige ID-kaart nummer: verkeerde checksum\"\n\n#: cn/forms.py:107\nmsgid \"Invalid ID Card Number: Wrong birthdate\"\nmsgstr \"Ongeldige ID-kaart nummer: verkeerde geboortedatum\"\n\n#: cn/forms.py:108\nmsgid \"Invalid ID Card Number: Wrong location code\"\nmsgstr \"Ongeldige ID-kaart nummer: verkeerde locatie code\"\n\n#: cn/forms.py:193\nmsgid \"Enter a valid phone number.\"\nmsgstr \"Voer een geldig telefoonnummer in.\"\n\n#: cn/forms.py:210\nmsgid \"Enter a valid cell number.\"\nmsgstr \"Voer een geldig mobiel telefoonnummer in.\"\n\n#: cz/cz_regions.py:8\nmsgid \"Prague\"\nmsgstr \"Praag\"\n\n#: cz/cz_regions.py:9\nmsgid \"Central Bohemian Region\"\nmsgstr \"Midden-Bohemen\"\n\n#: cz/cz_regions.py:10\nmsgid \"South Bohemian Region\"\nmsgstr \"Zuid-Bohemen\"\n\n#: cz/cz_regions.py:11\nmsgid \"Pilsen Region\"\nmsgstr \"Pilsen\"\n\n#: cz/cz_regions.py:12\nmsgid \"Carlsbad Region\"\nmsgstr \"Karlsbad\"\n\n#: cz/cz_regions.py:13\nmsgid \"Usti Region\"\nmsgstr \"Ústí nad Labem\"\n\n#: cz/cz_regions.py:14\nmsgid \"Liberec Region\"\nmsgstr \"Liberec\"\n\n#: cz/cz_regions.py:15\nmsgid \"Hradec Region\"\nmsgstr \"Hradec Králové\"\n\n#: cz/cz_regions.py:16\nmsgid \"Pardubice Region\"\nmsgstr \"Pardubice\"\n\n#: cz/cz_regions.py:17\nmsgid \"Vysocina Region\"\nmsgstr \"Vysočina\"\n\n#: cz/cz_regions.py:18\nmsgid \"South Moravian Region\"\nmsgstr \"Zuid-Moravië\"\n\n#: cz/cz_regions.py:19\nmsgid \"Olomouc Region\"\nmsgstr \"Olomouc\"\n\n#: cz/cz_regions.py:20\nmsgid \"Zlin Region\"\nmsgstr \"Zlín\"\n\n#: cz/cz_regions.py:21\nmsgid \"Moravian-Silesian Region\"\nmsgstr \"Moravië-Silezië\"\n\n#: cz/forms.py:32 sk/forms.py:33\nmsgid \"Enter a postal code in the format XXXXX or XXX XX.\"\nmsgstr \"Geef een postcode op in het formaat XXXXX of XXX XX.\"\n\n#: cz/forms.py:52\nmsgid \"Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.\"\nmsgstr \"Geef een geboorte nummer op in het formaat XXXXXX/XXXX or XXXXXXXXXX.\"\n\n#: cz/forms.py:53\nmsgid \"Enter a valid birth number.\"\nmsgstr \"Geef een geldig geboorte nummer.\"\n\n#: cz/forms.py:102\nmsgid \"Enter a valid IC number.\"\nmsgstr \"Geef een geldig IC nummer op.\"\n\n#: de/de_states.py:5\nmsgid \"Baden-Wuerttemberg\"\nmsgstr \"Baden-Wuerttemberg\"\n\n#: de/de_states.py:6\nmsgid \"Bavaria\"\nmsgstr \"Beieren\"\n\n#: de/de_states.py:7\nmsgid \"Berlin\"\nmsgstr \"Berlijn\"\n\n#: de/de_states.py:8\nmsgid \"Brandenburg\"\nmsgstr \"Brandenburg\"\n\n#: de/de_states.py:9\nmsgid \"Bremen\"\nmsgstr \"Bremen\"\n\n#: de/de_states.py:10\nmsgid \"Hamburg\"\nmsgstr \"Hamburg\"\n\n#: de/de_states.py:11\nmsgid \"Hessen\"\nmsgstr \"Hessen\"\n\n#: de/de_states.py:12\nmsgid \"Mecklenburg-Western Pomerania\"\nmsgstr \"Mecklenburg-Western Pomerania\"\n\n#: de/de_states.py:13\nmsgid \"Lower Saxony\"\nmsgstr \"Nedersaksen\"\n\n#: de/de_states.py:14\nmsgid \"North Rhine-Westphalia\"\nmsgstr \"Noordrijn-Westfalen\"\n\n#: de/de_states.py:15\nmsgid \"Rhineland-Palatinate\"\nmsgstr \"Rijnland-Palts\"\n\n#: de/de_states.py:16\nmsgid \"Saarland\"\nmsgstr \"Saarland\"\n\n#: de/de_states.py:17\nmsgid \"Saxony\"\nmsgstr \"Saksen\"\n\n#: de/de_states.py:18\nmsgid \"Saxony-Anhalt\"\nmsgstr \"Saksen-Anhalt\"\n\n#: de/de_states.py:19\nmsgid \"Schleswig-Holstein\"\nmsgstr \"Sleeswijk-Holstein\"\n\n#: de/de_states.py:20\nmsgid \"Thuringia\"\nmsgstr \"Thüringen\"\n\n#: de/forms.py:20 fi/forms.py:18 fr/forms.py:20\nmsgid \"Enter a zip code in the format XXXXX.\"\nmsgstr \"Geef een postcode op in het formaat XXXXX.\"\n\n#: de/forms.py:46\nmsgid \"\"\n\"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"format.\"\nmsgstr \"\"\n\"Geef een geldig Duits identiteitsnummer op volgens het XXXXXXXXXXX-XXXXXXX-\"\n\"XXXXXXX-X formaat.\"\n\n#: es/es_provinces.py:5\nmsgid \"Araba\"\nmsgstr \"Araba\"\n\n#: es/es_provinces.py:6\nmsgid \"Albacete\"\nmsgstr \"Albacete\"\n\n#: es/es_provinces.py:7\nmsgid \"Alacant\"\nmsgstr \"Alacant\"\n\n#: es/es_provinces.py:8\nmsgid \"Almeria\"\nmsgstr \"Almeria\"\n\n#: es/es_provinces.py:9\nmsgid \"Avila\"\nmsgstr \"Avila\"\n\n#: es/es_provinces.py:10\nmsgid \"Badajoz\"\nmsgstr \"Badajoz\"\n\n#: es/es_provinces.py:11\nmsgid \"Illes Balears\"\nmsgstr \"Balearen\"\n\n#: es/es_provinces.py:12\nmsgid \"Barcelona\"\nmsgstr \"Barcelona\"\n\n#: es/es_provinces.py:13\nmsgid \"Burgos\"\nmsgstr \"Burgos\"\n\n#: es/es_provinces.py:14\nmsgid \"Caceres\"\nmsgstr \"Caceres\"\n\n#: es/es_provinces.py:15\nmsgid \"Cadiz\"\nmsgstr \"Cadiz\"\n\n#: es/es_provinces.py:16\nmsgid \"Castello\"\nmsgstr \"Castello\"\n\n#: es/es_provinces.py:17\nmsgid \"Ciudad Real\"\nmsgstr \"Ciudad Real\"\n\n#: es/es_provinces.py:18\nmsgid \"Cordoba\"\nmsgstr \"Cordoba\"\n\n#: es/es_provinces.py:19\nmsgid \"A Coruna\"\nmsgstr \"A Coruna\"\n\n#: es/es_provinces.py:20\nmsgid \"Cuenca\"\nmsgstr \"Cuenca\"\n\n#: es/es_provinces.py:21\nmsgid \"Girona\"\nmsgstr \"Girona\"\n\n#: es/es_provinces.py:22\nmsgid \"Granada\"\nmsgstr \"Granada\"\n\n#: es/es_provinces.py:23\nmsgid \"Guadalajara\"\nmsgstr \"Guadalajara\"\n\n#: es/es_provinces.py:24\nmsgid \"Guipuzkoa\"\nmsgstr \"Guipuzkoa\"\n\n#: es/es_provinces.py:25\nmsgid \"Huelva\"\nmsgstr \"Huelva\"\n\n#: es/es_provinces.py:26\nmsgid \"Huesca\"\nmsgstr \"Huesca\"\n\n#: es/es_provinces.py:27\nmsgid \"Jaen\"\nmsgstr \"Jaen\"\n\n#: es/es_provinces.py:28\nmsgid \"Leon\"\nmsgstr \"Leon\"\n\n#: es/es_provinces.py:29\nmsgid \"Lleida\"\nmsgstr \"Lleida\"\n\n#: es/es_provinces.py:30 es/es_regions.py:17\nmsgid \"La Rioja\"\nmsgstr \"La Rioja\"\n\n#: es/es_provinces.py:31\nmsgid \"Lugo\"\nmsgstr \"Lugo\"\n\n#: es/es_provinces.py:32 es/es_regions.py:18\nmsgid \"Madrid\"\nmsgstr \"Madrid\"\n\n#: es/es_provinces.py:33\nmsgid \"Malaga\"\nmsgstr \"Malaga\"\n\n#: es/es_provinces.py:34\nmsgid \"Murcia\"\nmsgstr \"Murcia\"\n\n#: es/es_provinces.py:35\nmsgid \"Navarre\"\nmsgstr \"Navarre\"\n\n#: es/es_provinces.py:36\nmsgid \"Ourense\"\nmsgstr \"Ourense\"\n\n#: es/es_provinces.py:37\nmsgid \"Asturias\"\nmsgstr \"Asturias\"\n\n#: es/es_provinces.py:38\nmsgid \"Palencia\"\nmsgstr \"Palencia\"\n\n#: es/es_provinces.py:39\nmsgid \"Las Palmas\"\nmsgstr \"Las Palmas\"\n\n#: es/es_provinces.py:40\nmsgid \"Pontevedra\"\nmsgstr \"Pontevedra\"\n\n#: es/es_provinces.py:41\nmsgid \"Salamanca\"\nmsgstr \"Salamanca\"\n\n#: es/es_provinces.py:42\nmsgid \"Santa Cruz de Tenerife\"\nmsgstr \"Santa Cruz de Tenerife\"\n\n#: es/es_provinces.py:43 es/es_regions.py:11\nmsgid \"Cantabria\"\nmsgstr \"Cantabria\"\n\n#: es/es_provinces.py:44\nmsgid \"Segovia\"\nmsgstr \"Segovia\"\n\n#: es/es_provinces.py:45\nmsgid \"Seville\"\nmsgstr \"Sevilla\"\n\n#: es/es_provinces.py:46\nmsgid \"Soria\"\nmsgstr \"Soria\"\n\n#: es/es_provinces.py:47\nmsgid \"Tarragona\"\nmsgstr \"Tarragona\"\n\n#: es/es_provinces.py:48\nmsgid \"Teruel\"\nmsgstr \"Teruel\"\n\n#: es/es_provinces.py:49\nmsgid \"Toledo\"\nmsgstr \"Toledo\"\n\n#: es/es_provinces.py:50\nmsgid \"Valencia\"\nmsgstr \"Valencië\"\n\n#: es/es_provinces.py:51\nmsgid \"Valladolid\"\nmsgstr \"Valladolid\"\n\n#: es/es_provinces.py:52\nmsgid \"Bizkaia\"\nmsgstr \"Bizkaia\"\n\n#: es/es_provinces.py:53\nmsgid \"Zamora\"\nmsgstr \"Zamora\"\n\n#: es/es_provinces.py:54\nmsgid \"Zaragoza\"\nmsgstr \"Zaragoza\"\n\n#: es/es_provinces.py:55\nmsgid \"Ceuta\"\nmsgstr \"Ceuta\"\n\n#: es/es_provinces.py:56\nmsgid \"Melilla\"\nmsgstr \"Melilla\"\n\n#: es/es_regions.py:5\nmsgid \"Andalusia\"\nmsgstr \"Andalusië\"\n\n#: es/es_regions.py:6\nmsgid \"Aragon\"\nmsgstr \"Aragon\"\n\n#: es/es_regions.py:7\nmsgid \"Principality of Asturias\"\nmsgstr \"Prinsdom Asturië\"\n\n#: es/es_regions.py:8\nmsgid \"Balearic Islands\"\nmsgstr \"Balearen\"\n\n#: es/es_regions.py:9\nmsgid \"Basque Country\"\nmsgstr \"Baskenland\"\n\n#: es/es_regions.py:10\nmsgid \"Canary Islands\"\nmsgstr \"Canarische Eilanden\"\n\n#: es/es_regions.py:12\nmsgid \"Castile-La Mancha\"\nmsgstr \"Castilië-La Mancha\"\n\n#: es/es_regions.py:13\nmsgid \"Castile and Leon\"\nmsgstr \"Castilië en León\"\n\n#: es/es_regions.py:14\nmsgid \"Catalonia\"\nmsgstr \"Catalonië\"\n\n#: es/es_regions.py:15\nmsgid \"Extremadura\"\nmsgstr \"Extremadura\"\n\n#: es/es_regions.py:16\nmsgid \"Galicia\"\nmsgstr \"Galicië\"\n\n#: es/es_regions.py:19\nmsgid \"Region of Murcia\"\nmsgstr \"Murcia\"\n\n#: es/es_regions.py:20\nmsgid \"Foral Community of Navarre\"\nmsgstr \"Navarra\"\n\n#: es/es_regions.py:21\nmsgid \"Valencian Community\"\nmsgstr \"Valencia\"\n\n#: es/forms.py:26\nmsgid \"Enter a valid postal code in the range and format 01XXX - 52XXX.\"\nmsgstr \"Vul een postcode in volgens het 01XXX - 52XXX formaat.\"\n\n#: es/forms.py:46\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or \"\n\"9XXXXXXXX.\"\nmsgstr \"\"\n\"Geef een geldig telefoonnummer op in één van de volgende formaten: \"\n\"6XXXXXXXX, 8XXXXXXXX of 9XXXXXXXX.\"\n\n#: es/forms.py:73\nmsgid \"Please enter a valid NIF, NIE, or CIF.\"\nmsgstr \"Geef een geldige NIF, NIE of CIF op.\"\n\n#: es/forms.py:74\nmsgid \"Please enter a valid NIF or NIE.\"\nmsgstr \"Geef een geldige NIF of NIE op.\"\n\n#: es/forms.py:75\nmsgid \"Invalid checksum for NIF.\"\nmsgstr \"Ongeldig controlegetal voor NIF.\"\n\n#: es/forms.py:76\nmsgid \"Invalid checksum for NIE.\"\nmsgstr \"Ongeldig controlegetal voor NIE.\"\n\n#: es/forms.py:77\nmsgid \"Invalid checksum for CIF.\"\nmsgstr \"Ongeldig controlegetal voor CIF.\"\n\n#: es/forms.py:149\nmsgid \"\"\n\"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.\"\nmsgstr \"\"\n\"Geef een geldig bankrekeningnummer op in het formaat XXXX-XXXX-XX-XXXXXXXXXX.\"\n\n#: es/forms.py:150\nmsgid \"Invalid checksum for bank account number.\"\nmsgstr \"Ongeldig controlegetal voor het bankrekeningnummer.\"\n\n#: fi/forms.py:33\nmsgid \"Enter a valid Finnish social security number.\"\nmsgstr \"Geef een geldig Fins sociaal nummer op.\"\n\n#: fr/forms.py:35\nmsgid \"Phone numbers must be in 0X XX XX XX XX format.\"\nmsgstr \"Telefoonnummers moeten in 0X XX XX XX XX-formaat staan.\"\n\n#: gb/forms.py:25\nmsgid \"Enter a valid postcode.\"\nmsgstr \"Geef een geldige postcode op.\"\n\n#: gb/gb_regions.py:11\nmsgid \"Bedfordshire\"\nmsgstr \"Bedfordshire\"\n\n#: gb/gb_regions.py:12\nmsgid \"Buckinghamshire\"\nmsgstr \"Buckinghamshire\"\n\n#: gb/gb_regions.py:14\nmsgid \"Cheshire\"\nmsgstr \"Cheshire\"\n\n#: gb/gb_regions.py:15\nmsgid \"Cornwall and Isles of Scilly\"\nmsgstr \"Cornwall en de Scilly-Eilanden\"\n\n#: gb/gb_regions.py:16\nmsgid \"Cumbria\"\nmsgstr \"Cumbria\"\n\n#: gb/gb_regions.py:17\nmsgid \"Derbyshire\"\nmsgstr \"Derbyshire\"\n\n#: gb/gb_regions.py:18\nmsgid \"Devon\"\nmsgstr \"Devon\"\n\n#: gb/gb_regions.py:19\nmsgid \"Dorset\"\nmsgstr \"Dorset\"\n\n#: gb/gb_regions.py:20\nmsgid \"Durham\"\nmsgstr \"Durham\"\n\n#: gb/gb_regions.py:21\nmsgid \"East Sussex\"\nmsgstr \"Oost-Sussex\"\n\n#: gb/gb_regions.py:22\nmsgid \"Essex\"\nmsgstr \"Essex\"\n\n#: gb/gb_regions.py:23\nmsgid \"Gloucestershire\"\nmsgstr \"Gloucestershire\"\n\n#: gb/gb_regions.py:24\nmsgid \"Greater London\"\nmsgstr \"Groot-Londen\"\n\n#: gb/gb_regions.py:25\nmsgid \"Greater Manchester\"\nmsgstr \"Groot-Manchester\"\n\n#: gb/gb_regions.py:26\nmsgid \"Hampshire\"\nmsgstr \"Hampshire\"\n\n#: gb/gb_regions.py:27\nmsgid \"Hertfordshire\"\nmsgstr \"Hertfordshire\"\n\n#: gb/gb_regions.py:28\nmsgid \"Kent\"\nmsgstr \"Kent\"\n\n#: gb/gb_regions.py:29\nmsgid \"Lancashire\"\nmsgstr \"Lancashire\"\n\n#: gb/gb_regions.py:30\nmsgid \"Leicestershire\"\nmsgstr \"Leicestershire\"\n\n#: gb/gb_regions.py:31\nmsgid \"Lincolnshire\"\nmsgstr \"Lincolnshire\"\n\n#: gb/gb_regions.py:32\nmsgid \"Merseyside\"\nmsgstr \"Merseyside\"\n\n#: gb/gb_regions.py:33\nmsgid \"Norfolk\"\nmsgstr \"Norfolk\"\n\n#: gb/gb_regions.py:34\nmsgid \"North Yorkshire\"\nmsgstr \"Noord-Yorkshire\"\n\n#: gb/gb_regions.py:35\nmsgid \"Northamptonshire\"\nmsgstr \"Northamptonshire\"\n\n#: gb/gb_regions.py:36\nmsgid \"Northumberland\"\nmsgstr \"Northumberland\"\n\n#: gb/gb_regions.py:37\nmsgid \"Nottinghamshire\"\nmsgstr \"Nottinghamshire\"\n\n#: gb/gb_regions.py:38\nmsgid \"Oxfordshire\"\nmsgstr \"Oxfordshire\"\n\n#: gb/gb_regions.py:39\nmsgid \"Shropshire\"\nmsgstr \"Shropshire\"\n\n#: gb/gb_regions.py:40\nmsgid \"Somerset\"\nmsgstr \"Somerset\"\n\n#: gb/gb_regions.py:41\nmsgid \"South Yorkshire\"\nmsgstr \"Zuid-Yorkshire\"\n\n#: gb/gb_regions.py:42\nmsgid \"Staffordshire\"\nmsgstr \"Staffordshire\"\n\n#: gb/gb_regions.py:43\nmsgid \"Suffolk\"\nmsgstr \"Suffolk\"\n\n#: gb/gb_regions.py:44\nmsgid \"Surrey\"\nmsgstr \"Surrey\"\n\n#: gb/gb_regions.py:45\nmsgid \"Tyne and Wear\"\nmsgstr \"Tyne and Wear\"\n\n#: gb/gb_regions.py:46\nmsgid \"Warwickshire\"\nmsgstr \"Warwickshire\"\n\n#: gb/gb_regions.py:47\nmsgid \"West Midlands\"\nmsgstr \"West-Midlands\"\n\n#: gb/gb_regions.py:48\nmsgid \"West Sussex\"\nmsgstr \"West-Sussex\"\n\n#: gb/gb_regions.py:49\nmsgid \"West Yorkshire\"\nmsgstr \"West-Yorkshire\"\n\n#: gb/gb_regions.py:50\nmsgid \"Wiltshire\"\nmsgstr \"Wiltshire\"\n\n#: gb/gb_regions.py:51\nmsgid \"Worcestershire\"\nmsgstr \"Worcestershire\"\n\n#: gb/gb_regions.py:55\nmsgid \"County Antrim\"\nmsgstr \"Graafschap Antrim\"\n\n#: gb/gb_regions.py:56\nmsgid \"County Armagh\"\nmsgstr \"Graafschap Armagh\"\n\n#: gb/gb_regions.py:57\nmsgid \"County Down\"\nmsgstr \"Graafschap Down\"\n\n#: gb/gb_regions.py:58\nmsgid \"County Fermanagh\"\nmsgstr \"Graafschap Fermanagh\"\n\n#: gb/gb_regions.py:59\nmsgid \"County Londonderry\"\nmsgstr \"Graafschap Londonderry\"\n\n#: gb/gb_regions.py:60\nmsgid \"County Tyrone\"\nmsgstr \"Graafschap Tyrone\"\n\n#: gb/gb_regions.py:64\nmsgid \"Clwyd\"\nmsgstr \"Clwyd\"\n\n#: gb/gb_regions.py:65\nmsgid \"Dyfed\"\nmsgstr \"Dyfed\"\n\n#: gb/gb_regions.py:66\nmsgid \"Gwent\"\nmsgstr \"Gwent\"\n\n#: gb/gb_regions.py:67\nmsgid \"Gwynedd\"\nmsgstr \"Gwynedd\"\n\n#: gb/gb_regions.py:68\nmsgid \"Mid Glamorgan\"\nmsgstr \"Mid Glamorgan\"\n\n#: gb/gb_regions.py:69\nmsgid \"Powys\"\nmsgstr \"Powys\"\n\n#: gb/gb_regions.py:70\nmsgid \"South Glamorgan\"\nmsgstr \"Zuid-Glamorgan\"\n\n#: gb/gb_regions.py:71\nmsgid \"West Glamorgan\"\nmsgstr \"West-Glamorgan\"\n\n#: gb/gb_regions.py:75\nmsgid \"Borders\"\nmsgstr \"Schotse-Borders\"\n\n#: gb/gb_regions.py:76\nmsgid \"Central Scotland\"\nmsgstr \"Centraal-Schotland\"\n\n#: gb/gb_regions.py:77\nmsgid \"Dumfries and Galloway\"\nmsgstr \"Dumfries en Galloway\"\n\n#: gb/gb_regions.py:78\nmsgid \"Fife\"\nmsgstr \"Fife\"\n\n#: gb/gb_regions.py:79\nmsgid \"Grampian\"\nmsgstr \"Grampian\"\n\n#: gb/gb_regions.py:80\nmsgid \"Highland\"\nmsgstr \"Highland\"\n\n#: gb/gb_regions.py:81\nmsgid \"Lothian\"\nmsgstr \"Lothian\"\n\n#: gb/gb_regions.py:82\nmsgid \"Orkney Islands\"\nmsgstr \"Orkneyeilanden\"\n\n#: gb/gb_regions.py:83\nmsgid \"Shetland Islands\"\nmsgstr \"Shetlandeilanden\"\n\n#: gb/gb_regions.py:84\nmsgid \"Strathclyde\"\nmsgstr \"Strathclyde\"\n\n#: gb/gb_regions.py:85\nmsgid \"Tayside\"\nmsgstr \"Tayside\"\n\n#: gb/gb_regions.py:86\nmsgid \"Western Isles\"\nmsgstr \"Buiten-Hebriden\"\n\n#: gb/gb_regions.py:90\nmsgid \"England\"\nmsgstr \"Engeland\"\n\n#: gb/gb_regions.py:91\nmsgid \"Northern Ireland\"\nmsgstr \"Noord-Ierland\"\n\n#: gb/gb_regions.py:92\nmsgid \"Scotland\"\nmsgstr \"Schotland\"\n\n#: gb/gb_regions.py:93\nmsgid \"Wales\"\nmsgstr \"Wales\"\n\n#: hk/forms.py:37\n#, python-format\nmsgid \"Phone number should not start with one of the followings: %s.\"\nmsgstr \"Telefoonnummer mag niet met een van de volgende beginnen: %s.\"\n\n#: hk/forms.py:40\n#, python-format\nmsgid \"Phone number must be in one of the following formats: %s.\"\nmsgstr \"Telefoonnummer moet in een van de volgende formaten zijn: %s.\"\n\n#: hk/forms.py:42\n#, python-format\nmsgid \"Phone number should start with one of the followings: %s.\"\nmsgstr \"Telefoonnummer zou met een van de volgende moeten beginnen: %s.\"\n\n#: hr/forms.py:76\nmsgid \"Enter a valid 13 digit JMBG\"\nmsgstr \"Voor een geldige 13-cijferige JMBG in\"\n\n#: hr/forms.py:77\nmsgid \"Error in date segment\"\nmsgstr \"Fout in het datum segment\"\n\n#: hr/forms.py:123\nmsgid \"Enter a valid 11 digit OIB\"\nmsgstr \"Voer een geldige 11-cijferige OIB in\"\n\n#: hr/forms.py:152 id/forms.py:112\nmsgid \"Enter a valid vehicle license plate number\"\nmsgstr \"Voer een geldige nummerplaat in\"\n\n#: hr/forms.py:153\nmsgid \"Enter a valid location code\"\nmsgstr \"Voer een geldige locatie code in\"\n\n#: hr/forms.py:154\nmsgid \"Number part cannot be zero\"\nmsgstr \"Het nummer gedeelte kan niet nul zijn\"\n\n#: hr/forms.py:190\nmsgid \"Enter a valid 5 digit postal code\"\nmsgstr \"Voer een geldige, 5-cijferige postcode in\"\n\n#: hr/forms.py:218 id/forms.py:72 nl/forms.py:56\nmsgid \"Enter a valid phone number\"\nmsgstr \"Geef een geldig telefoonnummer op\"\n\n#: hr/forms.py:219\nmsgid \"Enter a valid area or mobile network code\"\nmsgstr \"Voer een geldig gebied of een mobiele netwerk code in\"\n\n#: hr/forms.py:220\nmsgid \"The phone nubmer is too long\"\nmsgstr \"Het telefoonnummer is te lang\"\n\n#: hr/forms.py:258\nmsgid \"Enter a valid 19 digit JMBAG starting with 601983\"\nmsgstr \"Voer een geldige 19-cijferige JMBAG in die begint met 601983\"\n\n#: hr/forms.py:259\nmsgid \"Card issue number cannot be zero\"\nmsgstr \"Het kaart afgifte nummer kan niet nul zijn\"\n\n#: hr/hr_choices.py:14\nmsgid \"Grad Zagreb\"\nmsgstr \"Zagreb\"\n\n#: hr/hr_choices.py:15\nmsgid \"Bjelovarsko-bilogorska županija\"\nmsgstr \"Bjelovar-Bilogora\"\n\n#: hr/hr_choices.py:16\nmsgid \"Brodsko-posavska županija\"\nmsgstr \"Brod-Posavina\"\n\n#: hr/hr_choices.py:17\nmsgid \"Dubrovačko-neretvanska županija\"\nmsgstr \"Dubrovnik-Neretva\"\n\n#: hr/hr_choices.py:18\nmsgid \"Istarska županija\"\nmsgstr \"Istrië\"\n\n#: hr/hr_choices.py:19\nmsgid \"Karlovačka županija\"\nmsgstr \"Karlovac\"\n\n#: hr/hr_choices.py:20\nmsgid \"Koprivničko-križevačka županija\"\nmsgstr \"Koprivnica-Križevci\"\n\n#: hr/hr_choices.py:21\nmsgid \"Krapinsko-zagorska županija\"\nmsgstr \"Krapina-Zagorje\"\n\n#: hr/hr_choices.py:22\nmsgid \"Ličko-senjska županija\"\nmsgstr \"Ličko-Senjska zupanija\"\n\n#: hr/hr_choices.py:23\nmsgid \"Međimurska županija\"\nmsgstr \"Međimurska županija\"\n\n#: hr/hr_choices.py:24\nmsgid \"Osječko-baranjska županija\"\nmsgstr \"Osječko-baranjska županija\"\n\n#: hr/hr_choices.py:25\nmsgid \"Požeško-slavonska županija\"\nmsgstr \"Požeško-slavonska županija\"\n\n#: hr/hr_choices.py:26\nmsgid \"Primorsko-goranska županija\"\nmsgstr \"Primorsko-goranska županija\"\n\n#: hr/hr_choices.py:27\nmsgid \"Sisačko-moslavačka županija\"\nmsgstr \"Sisačko-moslavačka županija\"\n\n#: hr/hr_choices.py:28\nmsgid \"Splitsko-dalmatinska županija\"\nmsgstr \"Splitsko-dalmatinska županija\"\n\n#: hr/hr_choices.py:29\nmsgid \"Šibensko-kninska županija\"\nmsgstr \"Šibensko-kninska županija\"\n\n#: hr/hr_choices.py:30\nmsgid \"Varaždinska županija\"\nmsgstr \"Varaždinska županija\"\n\n#: hr/hr_choices.py:31\nmsgid \"Virovitičko-podravska županija\"\nmsgstr \"Virovitičko-podravska županija\"\n\n#: hr/hr_choices.py:32\nmsgid \"Vukovarsko-srijemska županija\"\nmsgstr \"Vukovarsko-srijemska županija\"\n\n#: hr/hr_choices.py:33\nmsgid \"Zadarska županija\"\nmsgstr \"Zadarska županija\"\n\n#: hr/hr_choices.py:34\nmsgid \"Zagrebačka županija\"\nmsgstr \"Zagrebačka županija\"\n\n#: id/forms.py:31\nmsgid \"Enter a valid post code\"\nmsgstr \"Voer een geldige postcode in\"\n\n#: id/forms.py:176\nmsgid \"Enter a valid NIK/KTP number\"\nmsgstr \"Voer een geldige NIK / KTP nummer in\"\n\n#: id/id_choices.py:15\nmsgid \"Aceh\"\nmsgstr \"Atjeh\"\n\n#: id/id_choices.py:16 id/id_choices.py:79\nmsgid \"Bali\"\nmsgstr \"Bali\"\n\n#: id/id_choices.py:17 id/id_choices.py:51\nmsgid \"Banten\"\nmsgstr \"Banten\"\n\n#: id/id_choices.py:18 id/id_choices.py:60\nmsgid \"Bengkulu\"\nmsgstr \"Bengkulu\"\n\n#: id/id_choices.py:19 id/id_choices.py:53\nmsgid \"Yogyakarta\"\nmsgstr \"Yogyakarta\"\n\n#: id/id_choices.py:20 id/id_choices.py:57\nmsgid \"Jakarta\"\nmsgstr \"Jakarta\"\n\n#: id/id_choices.py:21 id/id_choices.py:81\nmsgid \"Gorontalo\"\nmsgstr \"Gorontalo\"\n\n#: id/id_choices.py:22 id/id_choices.py:63\nmsgid \"Jambi\"\nmsgstr \"Jambi\"\n\n#: id/id_choices.py:23\nmsgid \"Jawa Barat\"\nmsgstr \"Noord-Java\"\n\n#: id/id_choices.py:24\nmsgid \"Jawa Tengah\"\nmsgstr \"Midden-Java\"\n\n#: id/id_choices.py:25\nmsgid \"Jawa Timur\"\nmsgstr \"Oost-Java\"\n\n#: id/id_choices.py:26 id/id_choices.py:94\nmsgid \"Kalimantan Barat\"\nmsgstr \"Noord-Kalimantan\"\n\n#: id/id_choices.py:27 id/id_choices.py:72\nmsgid \"Kalimantan Selatan\"\nmsgstr \"Zuid-Kalimantan\"\n\n#: id/id_choices.py:28 id/id_choices.py:95\nmsgid \"Kalimantan Tengah\"\nmsgstr \"Midden-Kalimantan\"\n\n#: id/id_choices.py:29 id/id_choices.py:96\nmsgid \"Kalimantan Timur\"\nmsgstr \"Oost-Kalimantan\"\n\n#: id/id_choices.py:30\nmsgid \"Kepulauan Bangka-Belitung\"\nmsgstr \"Banka-Billiton\"\n\n#: id/id_choices.py:31 id/id_choices.py:68\nmsgid \"Kepulauan Riau\"\nmsgstr \"Riouwarchipel\"\n\n#: id/id_choices.py:32 id/id_choices.py:61\nmsgid \"Lampung\"\nmsgstr \"Lampung\"\n\n#: id/id_choices.py:33 id/id_choices.py:76\nmsgid \"Maluku\"\nmsgstr \"Molukken\"\n\n#: id/id_choices.py:34 id/id_choices.py:77\nmsgid \"Maluku Utara\"\nmsgstr \"Noord-Molukken\"\n\n#: id/id_choices.py:35\nmsgid \"Nusa Tenggara Barat\"\nmsgstr \"West-Nusa Tenggara\"\n\n#: id/id_choices.py:36\nmsgid \"Nusa Tenggara Timur\"\nmsgstr \"Oost-Nusa Tenggara\"\n\n#: id/id_choices.py:37\nmsgid \"Papua\"\nmsgstr \"Papoea\"\n\n#: id/id_choices.py:38\nmsgid \"Papua Barat\"\nmsgstr \"West-Papoea\"\n\n#: id/id_choices.py:39 id/id_choices.py:66\nmsgid \"Riau\"\nmsgstr \"Riau\"\n\n#: id/id_choices.py:40 id/id_choices.py:74\nmsgid \"Sulawesi Barat\"\nmsgstr \"West-Celebes\"\n\n#: id/id_choices.py:41 id/id_choices.py:75\nmsgid \"Sulawesi Selatan\"\nmsgstr \"Zuid-Celebes\"\n\n#: id/id_choices.py:42 id/id_choices.py:82\nmsgid \"Sulawesi Tengah\"\nmsgstr \"Midden-Celebes\"\n\n#: id/id_choices.py:43 id/id_choices.py:85\nmsgid \"Sulawesi Tenggara\"\nmsgstr \"Zuidoost-Celebes\"\n\n#: id/id_choices.py:44\nmsgid \"Sulawesi Utara\"\nmsgstr \"Noord-Celebes\"\n\n#: id/id_choices.py:45 id/id_choices.py:58\nmsgid \"Sumatera Barat\"\nmsgstr \"West-Sumatra\"\n\n#: id/id_choices.py:46 id/id_choices.py:62\nmsgid \"Sumatera Selatan\"\nmsgstr \"Zuid-Sumatra\"\n\n#: id/id_choices.py:47 id/id_choices.py:64\nmsgid \"Sumatera Utara\"\nmsgstr \"Noord-Sumatra\"\n\n#: id/id_choices.py:52\nmsgid \"Magelang\"\nmsgstr \"Magelang\"\n\n#: id/id_choices.py:54\nmsgid \"Surakarta - Solo\"\nmsgstr \"Surakarta - Solo\"\n\n#: id/id_choices.py:55\nmsgid \"Madiun\"\nmsgstr \"Madiun\"\n\n#: id/id_choices.py:56\nmsgid \"Kediri\"\nmsgstr \"Kediri\"\n\n#: id/id_choices.py:59\nmsgid \"Tapanuli\"\nmsgstr \"Tapanuli\"\n\n#: id/id_choices.py:65\nmsgid \"Nanggroe Aceh Darussalam\"\nmsgstr \"Atjeh\"\n\n#: id/id_choices.py:67\nmsgid \"Kepulauan Bangka Belitung\"\nmsgstr \"Banka-Billiton\"\n\n#: id/id_choices.py:69\nmsgid \"Corps Consulate\"\nmsgstr \"Corps Consulaire\"\n\n#: id/id_choices.py:70\nmsgid \"Corps Diplomatic\"\nmsgstr \"Diplomatiek Korps\"\n\n#: id/id_choices.py:71\nmsgid \"Bandung\"\nmsgstr \"Bandung\"\n\n#: id/id_choices.py:73\nmsgid \"Sulawesi Utara Daratan\"\nmsgstr \"Sulawesi Utara Daratan\"\n\n#: id/id_choices.py:78\nmsgid \"NTT - Timor\"\nmsgstr \"NTT - Timor\"\n\n#: id/id_choices.py:80\nmsgid \"Sulawesi Utara Kepulauan\"\nmsgstr \"Sulawesi Utara Kepulauan\"\n\n#: id/id_choices.py:83\nmsgid \"NTB - Lombok\"\nmsgstr \"NTB - Lombok\"\n\n#: id/id_choices.py:84\nmsgid \"Papua dan Papua Barat\"\nmsgstr \"Papua dan Papua Barat\"\n\n#: id/id_choices.py:86\nmsgid \"Cirebon\"\nmsgstr \"Cirebon\"\n\n#: id/id_choices.py:87\nmsgid \"NTB - Sumbawa\"\nmsgstr \"NTB - Soembawa\"\n\n#: id/id_choices.py:88\nmsgid \"NTT - Flores\"\nmsgstr \"NTT - Flores\"\n\n#: id/id_choices.py:89\nmsgid \"NTT - Sumba\"\nmsgstr \"NTT - Soemba\"\n\n#: id/id_choices.py:90\nmsgid \"Bogor\"\nmsgstr \"Bogor\"\n\n#: id/id_choices.py:91\nmsgid \"Pekalongan\"\nmsgstr \"Pekalongan\"\n\n#: id/id_choices.py:92\nmsgid \"Semarang\"\nmsgstr \"Semarang\"\n\n#: id/id_choices.py:93\nmsgid \"Pati\"\nmsgstr \"Pati\"\n\n#: id/id_choices.py:97\nmsgid \"Surabaya\"\nmsgstr \"Surabaya\"\n\n#: id/id_choices.py:98\nmsgid \"Madura\"\nmsgstr \"Madura\"\n\n#: id/id_choices.py:99\nmsgid \"Malang\"\nmsgstr \"Malang\"\n\n#: id/id_choices.py:100\nmsgid \"Jember\"\nmsgstr \"Jember\"\n\n#: id/id_choices.py:101\nmsgid \"Banyumas\"\nmsgstr \"Banyumas\"\n\n#: id/id_choices.py:102\nmsgid \"Federal Government\"\nmsgstr \"Federale Regering\"\n\n#: id/id_choices.py:103\nmsgid \"Bojonegoro\"\nmsgstr \"Bojonegoro\"\n\n#: id/id_choices.py:104\nmsgid \"Purwakarta\"\nmsgstr \"Purwakarta\"\n\n#: id/id_choices.py:105\nmsgid \"Sidoarjo\"\nmsgstr \"Sidoarjo\"\n\n#: id/id_choices.py:106\nmsgid \"Garut\"\nmsgstr \"Garut\"\n\n#: ie/ie_counties.py:8\nmsgid \"Antrim\"\nmsgstr \"Antrim\"\n\n#: ie/ie_counties.py:9\nmsgid \"Armagh\"\nmsgstr \"Armagh\"\n\n#: ie/ie_counties.py:10\nmsgid \"Carlow\"\nmsgstr \"Carlow\"\n\n#: ie/ie_counties.py:11\nmsgid \"Cavan\"\nmsgstr \"Cavan\"\n\n#: ie/ie_counties.py:12\nmsgid \"Clare\"\nmsgstr \"Clare\"\n\n#: ie/ie_counties.py:13\nmsgid \"Cork\"\nmsgstr \"Cork\"\n\n#: ie/ie_counties.py:14\nmsgid \"Derry\"\nmsgstr \"Derry\"\n\n#: ie/ie_counties.py:15\nmsgid \"Donegal\"\nmsgstr \"Donegal\"\n\n#: ie/ie_counties.py:16\nmsgid \"Down\"\nmsgstr \"Down\"\n\n#: ie/ie_counties.py:17\nmsgid \"Dublin\"\nmsgstr \"Dublin\"\n\n#: ie/ie_counties.py:18\nmsgid \"Fermanagh\"\nmsgstr \"Fermanagh\"\n\n#: ie/ie_counties.py:19\nmsgid \"Galway\"\nmsgstr \"Galway\"\n\n#: ie/ie_counties.py:20\nmsgid \"Kerry\"\nmsgstr \"Kerry\"\n\n#: ie/ie_counties.py:21\nmsgid \"Kildare\"\nmsgstr \"Kildare\"\n\n#: ie/ie_counties.py:22\nmsgid \"Kilkenny\"\nmsgstr \"Kilkenny\"\n\n#: ie/ie_counties.py:23\nmsgid \"Laois\"\nmsgstr \"Laois\"\n\n#: ie/ie_counties.py:24\nmsgid \"Leitrim\"\nmsgstr \"Leitrim\"\n\n#: ie/ie_counties.py:25\nmsgid \"Limerick\"\nmsgstr \"Limerick\"\n\n#: ie/ie_counties.py:26\nmsgid \"Longford\"\nmsgstr \"Longford\"\n\n#: ie/ie_counties.py:27\nmsgid \"Louth\"\nmsgstr \"Louth\"\n\n#: ie/ie_counties.py:28\nmsgid \"Mayo\"\nmsgstr \"Mayo\"\n\n#: ie/ie_counties.py:29\nmsgid \"Meath\"\nmsgstr \"Meath\"\n\n#: ie/ie_counties.py:30\nmsgid \"Monaghan\"\nmsgstr \"Monaghan\"\n\n#: ie/ie_counties.py:31\nmsgid \"Offaly\"\nmsgstr \"Offaly\"\n\n#: ie/ie_counties.py:32\nmsgid \"Roscommon\"\nmsgstr \"Roscommon\"\n\n#: ie/ie_counties.py:33\nmsgid \"Sligo\"\nmsgstr \"Sligo\"\n\n#: ie/ie_counties.py:34\nmsgid \"Tipperary\"\nmsgstr \"Tipperary\"\n\n#: ie/ie_counties.py:35\nmsgid \"Tyrone\"\nmsgstr \"Tyrone\"\n\n#: ie/ie_counties.py:36\nmsgid \"Waterford\"\nmsgstr \"Waterford\"\n\n#: ie/ie_counties.py:37\nmsgid \"Westmeath\"\nmsgstr \"Westmeath\"\n\n#: ie/ie_counties.py:38\nmsgid \"Wexford\"\nmsgstr \"Wexford\"\n\n#: ie/ie_counties.py:39\nmsgid \"Wicklow\"\nmsgstr \"Wicklow\"\n\n#: il/forms.py:32\nmsgid \"Enter a postal code in the format XXXXX\"\nmsgstr \"Voer een postcode in het formaat XXXXX in\"\n\n#: il/forms.py:51\nmsgid \"Enter a valid ID number.\"\nmsgstr \"Voer een geldig ID-nummer in.\"\n\n#: in_/forms.py:41\nmsgid \"Enter a zip code in the format XXXXXX or XXX XXX.\"\nmsgstr \"Voer een postcode in in het formaat XXXXXX of XXX XXX.\"\n\n#: in_/forms.py:64\nmsgid \"Enter an Indian state or territory.\"\nmsgstr \"Voer een Indiase staat of territorium in.\"\n\n#: in_/forms.py:103\nmsgid \"Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.\"\nmsgstr \"\"\n\"Telefoonnummers moeten worden ingevoerd in één van de volgende formaten: \"\n\"02X-8X, 03X-7X of 04X-6X.\"\n\n#: is_/forms.py:22\nmsgid \"\"\n\"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.\"\nmsgstr \"\"\n\"Geef een geldig IJslands identificatienummer op. Het formaat is XXXXXX-XXXX.\"\n\n#: is_/forms.py:23\nmsgid \"The Icelandic identification number is not valid.\"\nmsgstr \"Het IJslandse identificatienummer is niet geldig.\"\n\n#: it/forms.py:21\nmsgid \"Enter a valid zip code.\"\nmsgstr \"Geef een geldige postcode op.\"\n\n#: it/forms.py:48\nmsgid \"Enter a valid Social Security number.\"\nmsgstr \"Geef een geldig Sociaal Nummer op.\"\n\n#: it/forms.py:73\nmsgid \"Enter a valid VAT number.\"\nmsgstr \"Geef een geldig BTW nummer op.\"\n\n#: jp/forms.py:19\nmsgid \"Enter a postal code in the format XXXXXXX or XXX-XXXX.\"\nmsgstr \"Geef een geldige postcode op in het formaat XXXXXXX of XXX-XXXX.\"\n\n#: jp/jp_prefectures.py:4\nmsgid \"Hokkaido\"\nmsgstr \"Hokkaido\"\n\n#: jp/jp_prefectures.py:5\nmsgid \"Aomori\"\nmsgstr \"Aomori\"\n\n#: jp/jp_prefectures.py:6\nmsgid \"Iwate\"\nmsgstr \"Iwate\"\n\n#: jp/jp_prefectures.py:7\nmsgid \"Miyagi\"\nmsgstr \"Miyagi\"\n\n#: jp/jp_prefectures.py:8\nmsgid \"Akita\"\nmsgstr \"Akita\"\n\n#: jp/jp_prefectures.py:9\nmsgid \"Yamagata\"\nmsgstr \"Yamagata\"\n\n#: jp/jp_prefectures.py:10\nmsgid \"Fukushima\"\nmsgstr \"Fukushima\"\n\n#: jp/jp_prefectures.py:11\nmsgid \"Ibaraki\"\nmsgstr \"Ibaraki\"\n\n#: jp/jp_prefectures.py:12\nmsgid \"Tochigi\"\nmsgstr \"Tochigi\"\n\n#: jp/jp_prefectures.py:13\nmsgid \"Gunma\"\nmsgstr \"Gunma\"\n\n#: jp/jp_prefectures.py:14\nmsgid \"Saitama\"\nmsgstr \"Saitama\"\n\n#: jp/jp_prefectures.py:15\nmsgid \"Chiba\"\nmsgstr \"Saitama\"\n\n#: jp/jp_prefectures.py:16\nmsgid \"Tokyo\"\nmsgstr \"Tokyo\"\n\n#: jp/jp_prefectures.py:17\nmsgid \"Kanagawa\"\nmsgstr \"Kanagawa\"\n\n#: jp/jp_prefectures.py:18\nmsgid \"Yamanashi\"\nmsgstr \"Yamanashi\"\n\n#: jp/jp_prefectures.py:19\nmsgid \"Nagano\"\nmsgstr \"Nagano\"\n\n#: jp/jp_prefectures.py:20\nmsgid \"Niigata\"\nmsgstr \"Niigata\"\n\n#: jp/jp_prefectures.py:21\nmsgid \"Toyama\"\nmsgstr \"Toyama\"\n\n#: jp/jp_prefectures.py:22\nmsgid \"Ishikawa\"\nmsgstr \"Ishikawa\"\n\n#: jp/jp_prefectures.py:23\nmsgid \"Fukui\"\nmsgstr \"Fukui\"\n\n#: jp/jp_prefectures.py:24\nmsgid \"Gifu\"\nmsgstr \"Gifu\"\n\n#: jp/jp_prefectures.py:25\nmsgid \"Shizuoka\"\nmsgstr \"Shizuoka\"\n\n#: jp/jp_prefectures.py:26\nmsgid \"Aichi\"\nmsgstr \"Aichi\"\n\n#: jp/jp_prefectures.py:27\nmsgid \"Mie\"\nmsgstr \"Mie\"\n\n#: jp/jp_prefectures.py:28\nmsgid \"Shiga\"\nmsgstr \"Shiga\"\n\n#: jp/jp_prefectures.py:29\nmsgid \"Kyoto\"\nmsgstr \"Kyoto\"\n\n#: jp/jp_prefectures.py:30\nmsgid \"Osaka\"\nmsgstr \"Osaka\"\n\n#: jp/jp_prefectures.py:31\nmsgid \"Hyogo\"\nmsgstr \"Hyogo\"\n\n#: jp/jp_prefectures.py:32\nmsgid \"Nara\"\nmsgstr \"Nara\"\n\n#: jp/jp_prefectures.py:33\nmsgid \"Wakayama\"\nmsgstr \"Wakayama\"\n\n#: jp/jp_prefectures.py:34\nmsgid \"Tottori\"\nmsgstr \"Tottori\"\n\n#: jp/jp_prefectures.py:35\nmsgid \"Shimane\"\nmsgstr \"Shimane\"\n\n#: jp/jp_prefectures.py:36\nmsgid \"Okayama\"\nmsgstr \"Okayama\"\n\n#: jp/jp_prefectures.py:37\nmsgid \"Hiroshima\"\nmsgstr \"Hiroshima\"\n\n#: jp/jp_prefectures.py:38\nmsgid \"Yamaguchi\"\nmsgstr \"Yamaguchi\"\n\n#: jp/jp_prefectures.py:39\nmsgid \"Tokushima\"\nmsgstr \"Tokushima\"\n\n#: jp/jp_prefectures.py:40\nmsgid \"Kagawa\"\nmsgstr \"Kagawa\"\n\n#: jp/jp_prefectures.py:41\nmsgid \"Ehime\"\nmsgstr \"Ehime\"\n\n#: jp/jp_prefectures.py:42\nmsgid \"Kochi\"\nmsgstr \"Kochi\"\n\n#: jp/jp_prefectures.py:43\nmsgid \"Fukuoka\"\nmsgstr \"Fukuoka\"\n\n#: jp/jp_prefectures.py:44\nmsgid \"Saga\"\nmsgstr \"Saga\"\n\n#: jp/jp_prefectures.py:45\nmsgid \"Nagasaki\"\nmsgstr \"Nagasaki\"\n\n#: jp/jp_prefectures.py:46\nmsgid \"Kumamoto\"\nmsgstr \"Kumamoto\"\n\n#: jp/jp_prefectures.py:47\nmsgid \"Oita\"\nmsgstr \"Oita\"\n\n#: jp/jp_prefectures.py:48\nmsgid \"Miyazaki\"\nmsgstr \"Miyazaki\"\n\n#: jp/jp_prefectures.py:49\nmsgid \"Kagoshima\"\nmsgstr \"Kagoshima\"\n\n#: jp/jp_prefectures.py:50\nmsgid \"Okinawa\"\nmsgstr \"Okinawa\"\n\n#: kw/forms.py:27\nmsgid \"Enter a valid Kuwaiti Civil ID number\"\nmsgstr \"Voer een geldig Koeweits Burger ID-nummer in\"\n\n#: mk/forms.py:18\nmsgid \"\"\n\"Identity card numbers must contain either 4 to 7 digits or an uppercase \"\n\"letter and 7 digits.\"\nmsgstr \"\"\n\"ID kaart nummers moeten bestaan uit 4 of 7 cijfers, of uit een hoofdletter \"\n\"en 7 cijfers\"\n\n#: mk/forms.py:57 si/forms.py:24\nmsgid \"This field should contain exactly 13 digits.\"\nmsgstr \"Dit veld moet exact 13 cijfers bevatten\"\n\n#: mk/forms.py:58\nmsgid \"The first 7 digits of the UMCN must represent a valid past date.\"\nmsgstr \"De eerste 7 cijfers van de UMCN moeten een geldige datum weergeven.\"\n\n#: mk/forms.py:59\nmsgid \"The UMCN is not valid.\"\nmsgstr \"De UMCN is niet geldig.\"\n\n#: mk/mk_choices.py:10\nmsgid \"Aerodrom\"\nmsgstr \"Aerodrom\"\n\n#: mk/mk_choices.py:11\nmsgid \"Aračinovo\"\nmsgstr \"Aračinovo\"\n\n#: mk/mk_choices.py:12\nmsgid \"Berovo\"\nmsgstr \"Berovo\"\n\n#: mk/mk_choices.py:13\nmsgid \"Bitola\"\nmsgstr \"Bitola\"\n\n#: mk/mk_choices.py:14\nmsgid \"Bogdanci\"\nmsgstr \"Bogdanci\"\n\n#: mk/mk_choices.py:15\nmsgid \"Bogovinje\"\nmsgstr \"Bogovinje\"\n\n#: mk/mk_choices.py:16\nmsgid \"Bosilovo\"\nmsgstr \"Bosilovo\"\n\n#: mk/mk_choices.py:17\nmsgid \"Brvenica\"\nmsgstr \"Brvenica\"\n\n#: mk/mk_choices.py:18\nmsgid \"Butel\"\nmsgstr \"Butel\"\n\n#: mk/mk_choices.py:19\nmsgid \"Valandovo\"\nmsgstr \"Valandovo\"\n\n#: mk/mk_choices.py:20\nmsgid \"Vasilevo\"\nmsgstr \"Vasilevo\"\n\n#: mk/mk_choices.py:21\nmsgid \"Vevčani\"\nmsgstr \"Vevčani\"\n\n#: mk/mk_choices.py:22\nmsgid \"Veles\"\nmsgstr \"Veles\"\n\n#: mk/mk_choices.py:23\nmsgid \"Vinica\"\nmsgstr \"Vinica\"\n\n#: mk/mk_choices.py:24\nmsgid \"Vraneštica\"\nmsgstr \"Vraneštica\"\n\n#: mk/mk_choices.py:25\nmsgid \"Vrapčište\"\nmsgstr \"Vrapčište\"\n\n#: mk/mk_choices.py:26\nmsgid \"Gazi Baba\"\nmsgstr \"Gazi Baba\"\n\n#: mk/mk_choices.py:27\nmsgid \"Gevgelija\"\nmsgstr \"Gevgelija\"\n\n#: mk/mk_choices.py:28\nmsgid \"Gostivar\"\nmsgstr \"Gostivar\"\n\n#: mk/mk_choices.py:29\nmsgid \"Gradsko\"\nmsgstr \"Gradsko\"\n\n#: mk/mk_choices.py:30\nmsgid \"Debar\"\nmsgstr \"Debar\"\n\n#: mk/mk_choices.py:31\nmsgid \"Debarca\"\nmsgstr \"Debarca\"\n\n#: mk/mk_choices.py:32\nmsgid \"Delčevo\"\nmsgstr \"Delčevo\"\n\n#: mk/mk_choices.py:33\nmsgid \"Demir Kapija\"\nmsgstr \"Demir Kapija\"\n\n#: mk/mk_choices.py:34\nmsgid \"Demir Hisar\"\nmsgstr \"Demir Hisar\"\n\n#: mk/mk_choices.py:35\nmsgid \"Dolneni\"\nmsgstr \"Dolneni\"\n\n#: mk/mk_choices.py:36\nmsgid \"Drugovo\"\nmsgstr \"Drugovo\"\n\n#: mk/mk_choices.py:37\nmsgid \"Gjorče Petrov\"\nmsgstr \"Gjorče Petrov\"\n\n#: mk/mk_choices.py:38\nmsgid \"Želino\"\nmsgstr \"Želino\"\n\n#: mk/mk_choices.py:39\nmsgid \"Zajas\"\nmsgstr \"Zajas\"\n\n#: mk/mk_choices.py:40\nmsgid \"Zelenikovo\"\nmsgstr \"Zelenikovo\"\n\n#: mk/mk_choices.py:41\nmsgid \"Zrnovci\"\nmsgstr \"Zrnovci\"\n\n#: mk/mk_choices.py:42\nmsgid \"Ilinden\"\nmsgstr \"Ilinden\"\n\n#: mk/mk_choices.py:43\nmsgid \"Jegunovce\"\nmsgstr \"Jegunovce\"\n\n#: mk/mk_choices.py:44\nmsgid \"Kavadarci\"\nmsgstr \"Kavadarci\"\n\n#: mk/mk_choices.py:45\nmsgid \"Karbinci\"\nmsgstr \"Karbinci\"\n\n#: mk/mk_choices.py:46\nmsgid \"Karpoš\"\nmsgstr \"Karpoš\"\n\n#: mk/mk_choices.py:47\nmsgid \"Kisela Voda\"\nmsgstr \"Kisela Voda\"\n\n#: mk/mk_choices.py:48\nmsgid \"Kičevo\"\nmsgstr \"Kičevo\"\n\n#: mk/mk_choices.py:49\nmsgid \"Konče\"\nmsgstr \"Konče\"\n\n#: mk/mk_choices.py:50\nmsgid \"Koćani\"\nmsgstr \"Koćani\"\n\n#: mk/mk_choices.py:51\nmsgid \"Kratovo\"\nmsgstr \"Kratovo\"\n\n#: mk/mk_choices.py:52\nmsgid \"Kriva Palanka\"\nmsgstr \"Kriva Palanka\"\n\n#: mk/mk_choices.py:53\nmsgid \"Krivogaštani\"\nmsgstr \"Krivogaštani\"\n\n#: mk/mk_choices.py:54\nmsgid \"Kruševo\"\nmsgstr \"Kruševo\"\n\n#: mk/mk_choices.py:55\nmsgid \"Kumanovo\"\nmsgstr \"Kumanovo\"\n\n#: mk/mk_choices.py:56\nmsgid \"Lipkovo\"\nmsgstr \"Lipkovo\"\n\n#: mk/mk_choices.py:57\nmsgid \"Lozovo\"\nmsgstr \"Lozovo\"\n\n#: mk/mk_choices.py:58\nmsgid \"Mavrovo i Rostuša\"\nmsgstr \"Mavrovo i Rostuša\"\n\n#: mk/mk_choices.py:59\nmsgid \"Makedonska Kamenica\"\nmsgstr \"Makedonska Kamenica\"\n\n#: mk/mk_choices.py:60\nmsgid \"Makedonski Brod\"\nmsgstr \"Makedonski Brod\"\n\n#: mk/mk_choices.py:61\nmsgid \"Mogila\"\nmsgstr \"Mogila\"\n\n#: mk/mk_choices.py:62\nmsgid \"Negotino\"\nmsgstr \"Negotino\"\n\n#: mk/mk_choices.py:63\nmsgid \"Novaci\"\nmsgstr \"Novaci\"\n\n#: mk/mk_choices.py:64\nmsgid \"Novo Selo\"\nmsgstr \"Novo Selo\"\n\n#: mk/mk_choices.py:65\nmsgid \"Oslomej\"\nmsgstr \"Oslomej\"\n\n#: mk/mk_choices.py:66\nmsgid \"Ohrid\"\nmsgstr \"Ohrid\"\n\n#: mk/mk_choices.py:67\nmsgid \"Petrovec\"\nmsgstr \"Petrovec\"\n\n#: mk/mk_choices.py:68\nmsgid \"Pehčevo\"\nmsgstr \"Pehčevo\"\n\n#: mk/mk_choices.py:69\nmsgid \"Plasnica\"\nmsgstr \"Dit veld moet exact 13 cijfers bevatten\"\n\n#: mk/mk_choices.py:70\nmsgid \"Prilep\"\nmsgstr \"Prilep\"\n\n#: mk/mk_choices.py:71\nmsgid \"Probištip\"\nmsgstr \"Probištip\"\n\n#: mk/mk_choices.py:72\nmsgid \"Radoviš\"\nmsgstr \"Radoviš\"\n\n#: mk/mk_choices.py:73\nmsgid \"Rankovce\"\nmsgstr \"Rankovce\"\n\n#: mk/mk_choices.py:74\nmsgid \"Resen\"\nmsgstr \"Resen\"\n\n#: mk/mk_choices.py:75\nmsgid \"Rosoman\"\nmsgstr \"Rosoman\"\n\n#: mk/mk_choices.py:76\nmsgid \"Saraj\"\nmsgstr \"Saraj\"\n\n#: mk/mk_choices.py:77\nmsgid \"Sveti Nikole\"\nmsgstr \"Sveti Nikole\"\n\n#: mk/mk_choices.py:78\nmsgid \"Sopište\"\nmsgstr \"Sopište\"\n\n#: mk/mk_choices.py:79\nmsgid \"Star Dojran\"\nmsgstr \"Star Dojran\"\n\n#: mk/mk_choices.py:80\nmsgid \"Staro Nagoričane\"\nmsgstr \"Staro Nagoričane\"\n\n#: mk/mk_choices.py:81\nmsgid \"Struga\"\nmsgstr \"Struga\"\n\n#: mk/mk_choices.py:82\nmsgid \"Strumica\"\nmsgstr \"Strumica\"\n\n#: mk/mk_choices.py:83\nmsgid \"Studeničani\"\nmsgstr \"Studeničani\"\n\n#: mk/mk_choices.py:84\nmsgid \"Tearce\"\nmsgstr \"Tearce\"\n\n#: mk/mk_choices.py:85\nmsgid \"Tetovo\"\nmsgstr \"Tetovo\"\n\n#: mk/mk_choices.py:86\nmsgid \"Centar\"\nmsgstr \"Centar\"\n\n#: mk/mk_choices.py:87\nmsgid \"Centar-Župa\"\nmsgstr \"Centar-Župa\"\n\n#: mk/mk_choices.py:88\nmsgid \"Čair\"\nmsgstr \"Čair\"\n\n#: mk/mk_choices.py:89\nmsgid \"Čaška\"\nmsgstr \"Čaška\"\n\n#: mk/mk_choices.py:90\nmsgid \"Češinovo-Obleševo\"\nmsgstr \"Češinovo-Obleševo\"\n\n#: mk/mk_choices.py:91\nmsgid \"Čučer-Sandevo\"\nmsgstr \"Čučer-Sandevo\"\n\n#: mk/mk_choices.py:92\nmsgid \"Štip\"\nmsgstr \"Štip\"\n\n#: mk/mk_choices.py:93\nmsgid \"Šuto Orizari\"\nmsgstr \"Šuto Orizari\"\n\n#: mk/models.py:11\nmsgid \"Macedonian identity card number\"\nmsgstr \"Macedonisch identiteitskaart nummer\"\n\n#: mk/models.py:25\nmsgid \"A Macedonian municipality (2 character code)\"\nmsgstr \"Een Macedonische gemeente (2 tekens)\"\n\n#: mk/models.py:35\nmsgid \"Unique master citizen number (13 digits)\"\nmsgstr \"Unique master citizen number (13 cijfers)\"\n\n#: mx/forms.py:67\nmsgid \"Enter a valid zip code in the format XXXXX.\"\nmsgstr \"Voer een geldige postcode in, in de vorm XXXXXX.\"\n\n#: mx/forms.py:110\nmsgid \"Enter a valid RFC.\"\nmsgstr \"Voer een geldige RFC in.\"\n\n#: mx/forms.py:111\nmsgid \"Invalid checksum for RFC.\"\nmsgstr \"Ongeldige checksum in als RFC.\"\n\n#: mx/forms.py:191\nmsgid \"Enter a valid CURP.\"\nmsgstr \"Voer een geldige CURP in.\"\n\n#: mx/forms.py:192\nmsgid \"Invalid checksum for CURP.\"\nmsgstr \"Ongeldige checksum in als CURP.\"\n\n#: mx/models.py:14\nmsgid \"Mexico state (three uppercase letters)\"\nmsgstr \"Mexicaanse staat (3 hoodfletters)\"\n\n#: mx/models.py:27\nmsgid \"Mexico zip code\"\nmsgstr \"Mexicaanse postcode\"\n\n#: mx/models.py:44\nmsgid \"Mexican RFC\"\nmsgstr \"Mexicaanse RFC\"\n\n#: mx/models.py:61\nmsgid \"Mexican CURP\"\nmsgstr \"Mexicaanse CURP\"\n\n#: mx/mx_states.py:14\nmsgid \"Aguascalientes\"\nmsgstr \"Aguascalientes\"\n\n#: mx/mx_states.py:15\nmsgid \"Baja California\"\nmsgstr \"Baja California\"\n\n#: mx/mx_states.py:16\nmsgid \"Baja California Sur\"\nmsgstr \"Baja California Sur\"\n\n#: mx/mx_states.py:17\nmsgid \"Campeche\"\nmsgstr \"Campeche\"\n\n#: mx/mx_states.py:18\nmsgid \"Chihuahua\"\nmsgstr \"Chihuahua\"\n\n#: mx/mx_states.py:19\nmsgid \"Chiapas\"\nmsgstr \"Chiapas\"\n\n#: mx/mx_states.py:20\nmsgid \"Coahuila\"\nmsgstr \"Coahuila\"\n\n#: mx/mx_states.py:21\nmsgid \"Colima\"\nmsgstr \"Colima\"\n\n#: mx/mx_states.py:22\nmsgid \"Distrito Federal\"\nmsgstr \"Distrito Federal\"\n\n#: mx/mx_states.py:23\nmsgid \"Durango\"\nmsgstr \"Durango\"\n\n#: mx/mx_states.py:24\nmsgid \"Guerrero\"\nmsgstr \"Guerrero\"\n\n#: mx/mx_states.py:25\nmsgid \"Guanajuato\"\nmsgstr \"Guanajuato\"\n\n#: mx/mx_states.py:26\nmsgid \"Hidalgo\"\nmsgstr \"Hidalgo\"\n\n#: mx/mx_states.py:27\nmsgid \"Jalisco\"\nmsgstr \"Jalisco\"\n\n#: mx/mx_states.py:28\nmsgid \"Estado de México\"\nmsgstr \"de Staat Mexico\"\n\n#: mx/mx_states.py:29\nmsgid \"Michoacán\"\nmsgstr \"Michoacán\"\n\n#: mx/mx_states.py:30\nmsgid \"Morelos\"\nmsgstr \"Morelos\"\n\n#: mx/mx_states.py:31\nmsgid \"Nayarit\"\nmsgstr \"Nayarit\"\n\n#: mx/mx_states.py:32\nmsgid \"Nuevo León\"\nmsgstr \"Nuevo León\"\n\n#: mx/mx_states.py:33\nmsgid \"Oaxaca\"\nmsgstr \"Oaxaca\"\n\n#: mx/mx_states.py:34\nmsgid \"Puebla\"\nmsgstr \"Puebla\"\n\n#: mx/mx_states.py:35\nmsgid \"Querétaro\"\nmsgstr \"Querétaro\"\n\n#: mx/mx_states.py:36\nmsgid \"Quintana Roo\"\nmsgstr \"Quintana Roo\"\n\n#: mx/mx_states.py:37\nmsgid \"Sinaloa\"\nmsgstr \"Sinaloa\"\n\n#: mx/mx_states.py:38\nmsgid \"San Luis Potosí\"\nmsgstr \"San Luis Potosí\"\n\n#: mx/mx_states.py:39\nmsgid \"Sonora\"\nmsgstr \"Sonora\"\n\n#: mx/mx_states.py:40\nmsgid \"Tabasco\"\nmsgstr \"Tabasco\"\n\n#: mx/mx_states.py:41\nmsgid \"Tamaulipas\"\nmsgstr \"Tamaulipas\"\n\n#: mx/mx_states.py:42\nmsgid \"Tlaxcala\"\nmsgstr \"Tlaxcala\"\n\n#: mx/mx_states.py:43\nmsgid \"Veracruz\"\nmsgstr \"Veracruz\"\n\n#: mx/mx_states.py:44\nmsgid \"Yucatán\"\nmsgstr \"Yucatán\"\n\n#: mx/mx_states.py:45\nmsgid \"Zacatecas\"\nmsgstr \"Zacatecas\"\n\n#: nl/forms.py:26\nmsgid \"Enter a valid postal code\"\nmsgstr \"Geef een geldige postcode op\"\n\n#: nl/forms.py:82\nmsgid \"Enter a valid SoFi number\"\nmsgstr \"Geef een geldig SoFi nummer op\"\n\n#: nl/nl_provinces.py:4\nmsgid \"Drenthe\"\nmsgstr \"Drenthe\"\n\n#: nl/nl_provinces.py:5\nmsgid \"Flevoland\"\nmsgstr \"Flevoland\"\n\n#: nl/nl_provinces.py:6\nmsgid \"Friesland\"\nmsgstr \"Friesland\"\n\n#: nl/nl_provinces.py:7\nmsgid \"Gelderland\"\nmsgstr \"Gelderland\"\n\n#: nl/nl_provinces.py:8\nmsgid \"Groningen\"\nmsgstr \"Groningen\"\n\n#: nl/nl_provinces.py:10\nmsgid \"Noord-Brabant\"\nmsgstr \"Noord-Brabant\"\n\n#: nl/nl_provinces.py:11\nmsgid \"Noord-Holland\"\nmsgstr \"Noord-Holland\"\n\n#: nl/nl_provinces.py:12\nmsgid \"Overijssel\"\nmsgstr \"Overijssel\"\n\n#: nl/nl_provinces.py:13\nmsgid \"Utrecht\"\nmsgstr \"Utrecht\"\n\n#: nl/nl_provinces.py:14\nmsgid \"Zeeland\"\nmsgstr \"Zeeland\"\n\n#: nl/nl_provinces.py:15\nmsgid \"Zuid-Holland\"\nmsgstr \"Zuid-Holland\"\n\n#: no/forms.py:39\nmsgid \"Enter a valid Norwegian social security number.\"\nmsgstr \"Geef een geldig Noors Sociaal Nummer op.\"\n\n#: pe/forms.py:28\nmsgid \"This field requires 8 digits.\"\nmsgstr \"Dit veld vereist 8 cijfers.\"\n\n#: pe/forms.py:56\nmsgid \"This field requires 11 digits.\"\nmsgstr \"Dit veld vereist 11 cijfers.\"\n\n#: pl/forms.py:42\nmsgid \"National Identification Number consists of 11 digits.\"\nmsgstr \"Het Nationaal Identificatie Nummer bestaat uit 11 cijfers.\"\n\n#: pl/forms.py:43\nmsgid \"Wrong checksum for the National Identification Number.\"\nmsgstr \"Verkeerd controlecijfer voor het Nationaal Identificatie Nummer.\"\n\n#: pl/forms.py:79\nmsgid \"National ID Card Number consists of 3 letters and 6 digits.\"\nmsgstr \"Nationaal ID kaart nummer bestaande uit 3 letters en 6 cijfers.\"\n\n#: pl/forms.py:80\nmsgid \"Wrong checksum for the National ID Card Number.\"\nmsgstr \"Verkeerde checksum voor het Nationale ID kaarnummer.\"\n\n#: pl/forms.py:131\nmsgid \"\"\n\"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or \"\n\"XXXXXXXXXX.\"\nmsgstr \"\"\n\"Voer een geldig belasting nummer veld (NIP) in van de vorm XXX-XXX-XX-XX, \"\n\"XXX-XX-XX-XXX of XXXXXXXXXX.\"\n\n#: pl/forms.py:132\nmsgid \"Wrong checksum for the Tax Number (NIP).\"\nmsgstr \"Verkeerd controlecijfer voor het fiscaal nummer (NIP).\"\n\n#: pl/forms.py:171\nmsgid \"National Business Register Number (REGON) consists of 9 or 14 digits.\"\nmsgstr \"\"\n\"Het Nationaal Zakelijk Registratie Nummer (REGON) bestaat uit 9 of 14 \"\n\"cijfers.\"\n\n#: pl/forms.py:172\nmsgid \"Wrong checksum for the National Business Register Number (REGON).\"\nmsgstr \"\"\n\"Verkeerd controlecijfer op het Nationaal Zakelijk Registratie Nummer (REGON).\"\n\n#: pl/forms.py:212\nmsgid \"Enter a postal code in the format XX-XXX.\"\nmsgstr \"Geef een postcode op in het formaat XX-XXX.\"\n\n#: pl/pl_voivodeships.py:8\nmsgid \"Lower Silesia\"\nmsgstr \"Neder-Silezië\"\n\n#: pl/pl_voivodeships.py:9\nmsgid \"Kuyavia-Pomerania\"\nmsgstr \"Kuyavia-Pomerania\"\n\n#: pl/pl_voivodeships.py:10\nmsgid \"Lublin\"\nmsgstr \"Lublin\"\n\n#: pl/pl_voivodeships.py:11\nmsgid \"Lubusz\"\nmsgstr \"Lubusz\"\n\n#: pl/pl_voivodeships.py:12\nmsgid \"Lodz\"\nmsgstr \"Lodz\"\n\n#: pl/pl_voivodeships.py:13\nmsgid \"Lesser Poland\"\nmsgstr \"Klein-Polen\"\n\n#: pl/pl_voivodeships.py:14\nmsgid \"Masovia\"\nmsgstr \"Masovia\"\n\n#: pl/pl_voivodeships.py:15\nmsgid \"Opole\"\nmsgstr \"Opole\"\n\n#: pl/pl_voivodeships.py:16\nmsgid \"Subcarpatia\"\nmsgstr \"Subcarpatia\"\n\n#: pl/pl_voivodeships.py:17\nmsgid \"Podlasie\"\nmsgstr \"Podlasie\"\n\n#: pl/pl_voivodeships.py:18\nmsgid \"Pomerania\"\nmsgstr \"Pomerania\"\n\n#: pl/pl_voivodeships.py:19\nmsgid \"Silesia\"\nmsgstr \"Silesia\"\n\n#: pl/pl_voivodeships.py:20\nmsgid \"Swietokrzyskie\"\nmsgstr \"Swietokrzyskie\"\n\n#: pl/pl_voivodeships.py:21\nmsgid \"Warmia-Masuria\"\nmsgstr \"Warmia-Masuria\"\n\n#: pl/pl_voivodeships.py:22\nmsgid \"Greater Poland\"\nmsgstr \"Groot-Polen\"\n\n#: pl/pl_voivodeships.py:23\nmsgid \"West Pomerania\"\nmsgstr \"West Pomerania\"\n\n#: pt/forms.py:19\nmsgid \"Enter a zip code in the format XXXX-XXX.\"\nmsgstr \"Voer een postcode in in het formaat XXXX-XXX.\"\n\n#: pt/forms.py:39\nmsgid \"Phone numbers must have 9 digits, or start by + or 00.\"\nmsgstr \"\"\n\"Telefoonnummers moeten uit 9 cijfers bestaan, of beginnen met een + of 00.\"\n\n#: ro/forms.py:22\nmsgid \"Enter a valid CIF.\"\nmsgstr \"Geef een geldige CIF op.\"\n\n#: ro/forms.py:59\nmsgid \"Enter a valid CNP.\"\nmsgstr \"Geef een geldige CNP op.\"\n\n#: ro/forms.py:143\nmsgid \"Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format\"\nmsgstr \"\"\n\"Geef een geldige IBAN volgens het ROXX-XXXX-XXXX-XXXX-XXXX-XXXX formaat\"\n\n#: ro/forms.py:175\nmsgid \"Phone numbers must be in XXXX-XXXXXX format.\"\nmsgstr \"Telefoonnummers moeten in het formaat XXXX-XXXXXX zijn.\"\n\n#: ro/forms.py:200\nmsgid \"Enter a valid postal code in the format XXXXXX\"\nmsgstr \"Geef een geldige postcode in het formaat XXXXXX\"\n\n#: ru/forms.py:37\nmsgid \"Enter a postal code in the format XXXXXX.\"\nmsgstr \"Voer een postcode in in het formaat XXXXXX\"\n\n#: ru/forms.py:50\nmsgid \"Enter a passport number in the format XXXX XXXXXX.\"\nmsgstr \"Voer een paspoort nummer in als XXXX XXXXXX.\"\n\n#: ru/forms.py:63\nmsgid \"Enter a passport number in the format XX XXXXXXX.\"\nmsgstr \"Voer een paspoort nummer in als XX XXXXXXX.\"\n\n#: ru/ru_regions.py:10\nmsgid \"Central Federal County\"\nmsgstr \"Centrale Federale Provincie\"\n\n#: ru/ru_regions.py:11\nmsgid \"South Federal County\"\nmsgstr \"Zuidelijke Federale Provincie\"\n\n#: ru/ru_regions.py:12\nmsgid \"North-West Federal County\"\nmsgstr \"Noord-Westelijke Federale Provincie\"\n\n#: ru/ru_regions.py:13\nmsgid \"Far-East Federal County\"\nmsgstr \"Ver Oostelijke Federale Provincie\"\n\n#: ru/ru_regions.py:14\nmsgid \"Siberian Federal County\"\nmsgstr \"Siberische Federale Provincie\"\n\n#: ru/ru_regions.py:15\nmsgid \"Ural Federal County\"\nmsgstr \"Oerale Federale Provincie\"\n\n#: ru/ru_regions.py:16\nmsgid \"Privolzhsky Federal County\"\nmsgstr \"Privolzhsky Federale Provincie\"\n\n#: ru/ru_regions.py:17\nmsgid \"North-Caucasian Federal County\"\nmsgstr \"Noord Kaukasische Federale Provincie\"\n\n#: ru/ru_regions.py:21\nmsgid \"Moskva\"\nmsgstr \"Moskva\"\n\n#: ru/ru_regions.py:22\nmsgid \"Saint-Peterburg\"\nmsgstr \"Sint Petersburg\"\n\n#: ru/ru_regions.py:23\nmsgid \"Moskovskaya oblast'\"\nmsgstr \"Moskovskaya oblast'\"\n\n#: ru/ru_regions.py:24\nmsgid \"Adygeya, Respublika\"\nmsgstr \"Adygeya, Respublika\"\n\n#: ru/ru_regions.py:25\nmsgid \"Bashkortostan, Respublika\"\nmsgstr \"Bashkortostan, Respublika\"\n\n#: ru/ru_regions.py:26\nmsgid \"Buryatia, Respublika\"\nmsgstr \"Buryatia, Respublika\"\n\n#: ru/ru_regions.py:27\nmsgid \"Altay, Respublika\"\nmsgstr \"Altay, Respublika\"\n\n#: ru/ru_regions.py:28\nmsgid \"Dagestan, Respublika\"\nmsgstr \"Dagestan, Respublika\"\n\n#: ru/ru_regions.py:29\nmsgid \"Ingushskaya Respublika\"\nmsgstr \"Ingushskaya Respublika\"\n\n#: ru/ru_regions.py:30\nmsgid \"Kabardino-Balkarskaya Respublika\"\nmsgstr \"Kabardino-Balkarskaya Respublika\"\n\n#: ru/ru_regions.py:31\nmsgid \"Kalmykia, Respublika\"\nmsgstr \"Kalmykia, Respublika\"\n\n#: ru/ru_regions.py:32\nmsgid \"Karachaevo-Cherkesskaya Respublika\"\nmsgstr \"Karachaevo-Cherkesskaya Respublika\"\n\n#: ru/ru_regions.py:33\nmsgid \"Karelia, Respublika\"\nmsgstr \"Karelia, Respublika\"\n\n#: ru/ru_regions.py:34\nmsgid \"Komi, Respublika\"\nmsgstr \"Komi, Respublika\"\n\n#: ru/ru_regions.py:35\nmsgid \"Mariy Ehl, Respublika\"\nmsgstr \"Mariy Ehl, Respublika\"\n\n#: ru/ru_regions.py:36\nmsgid \"Mordovia, Respublika\"\nmsgstr \"Mordovia, Respublika\"\n\n#: ru/ru_regions.py:37\nmsgid \"Sakha, Respublika (Yakutiya)\"\nmsgstr \"Sakha, Respublika (Yakutiya)\"\n\n#: ru/ru_regions.py:38\nmsgid \"Severnaya Osetia, Respublika (Alania)\"\nmsgstr \"Severnaya Osetia, Respublika (Alania)\"\n\n#: ru/ru_regions.py:39\nmsgid \"Tatarstan, Respublika\"\nmsgstr \"Tatarstan, Respublika\"\n\n#: ru/ru_regions.py:40\nmsgid \"Tyva, Respublika (Tuva)\"\nmsgstr \"Tyva, Respublika (Tuva)\"\n\n#: ru/ru_regions.py:41\nmsgid \"Udmurtskaya Respublika\"\nmsgstr \"Udmurtskaya Respublika\"\n\n#: ru/ru_regions.py:42\nmsgid \"Khakassiya, Respublika\"\nmsgstr \"Khakassiya, Respublika\"\n\n#: ru/ru_regions.py:43\nmsgid \"Chechenskaya Respublika\"\nmsgstr \"Chechenskaya Respublika\"\n\n#: ru/ru_regions.py:44\nmsgid \"Chuvashskaya Respublika\"\nmsgstr \"Chuvashskaya Respublika\"\n\n#: ru/ru_regions.py:45\nmsgid \"Altayskiy Kray\"\nmsgstr \"Altayskiy Kray\"\n\n#: ru/ru_regions.py:46\nmsgid \"Zabaykalskiy Kray\"\nmsgstr \"Zabaykalskiy Kray\"\n\n#: ru/ru_regions.py:47\nmsgid \"Kamchatskiy Kray\"\nmsgstr \"Kamchatskiy Kray\"\n\n#: ru/ru_regions.py:48\nmsgid \"Krasnodarskiy Kray\"\nmsgstr \"Krasnodarskiy Kray\"\n\n#: ru/ru_regions.py:49\nmsgid \"Krasnoyarskiy Kray\"\nmsgstr \"Krasnoyarskiy Kray\"\n\n#: ru/ru_regions.py:50\nmsgid \"Permskiy Kray\"\nmsgstr \"Permskiy Kray\"\n\n#: ru/ru_regions.py:51\nmsgid \"Primorskiy Kray\"\nmsgstr \"Primorskiy Kray\"\n\n#: ru/ru_regions.py:52\nmsgid \"Stavropol'siyy Kray\"\nmsgstr \"Stavropol'siyy Kray\"\n\n#: ru/ru_regions.py:53\nmsgid \"Khabarovskiy Kray\"\nmsgstr \"Khabarovskiy Kray\"\n\n#: ru/ru_regions.py:54\nmsgid \"Amurskaya oblast'\"\nmsgstr \"Amurskaya oblast'\"\n\n#: ru/ru_regions.py:55\nmsgid \"Arkhangel'skaya oblast'\"\nmsgstr \"Arkhangel'skaya oblast'\"\n\n#: ru/ru_regions.py:56\nmsgid \"Astrakhanskaya oblast'\"\nmsgstr \"Astrakhanskaya oblast'\"\n\n#: ru/ru_regions.py:57\nmsgid \"Belgorodskaya oblast'\"\nmsgstr \"Belgorodskaya oblast'\"\n\n#: ru/ru_regions.py:58\nmsgid \"Bryanskaya oblast'\"\nmsgstr \"Bryanskaya oblast'\"\n\n#: ru/ru_regions.py:59\nmsgid \"Vladimirskaya oblast'\"\nmsgstr \"Vladimirskaya oblast'\"\n\n#: ru/ru_regions.py:60\nmsgid \"Volgogradskaya oblast'\"\nmsgstr \"Volgogradskaya oblast'\"\n\n#: ru/ru_regions.py:61\nmsgid \"Vologodskaya oblast'\"\nmsgstr \"Voer een postcode in in het formaat XXXXXX\"\n\n#: ru/ru_regions.py:62\nmsgid \"Voronezhskaya oblast'\"\nmsgstr \"Voronezhskaya oblast'\"\n\n#: ru/ru_regions.py:63\nmsgid \"Ivanovskaya oblast'\"\nmsgstr \"Ivanovskaya oblast'\"\n\n#: ru/ru_regions.py:64\nmsgid \"Irkutskaya oblast'\"\nmsgstr \"Irkutskaya oblast'\"\n\n#: ru/ru_regions.py:65\nmsgid \"Kaliningradskaya oblast'\"\nmsgstr \"Kaliningradskaya oblast'\"\n\n#: ru/ru_regions.py:66\nmsgid \"Kaluzhskaya oblast'\"\nmsgstr \"Kaluzhskaya oblast'\"\n\n#: ru/ru_regions.py:67\nmsgid \"Kemerovskaya oblast'\"\nmsgstr \"Kemerovskaya oblast'\"\n\n#: ru/ru_regions.py:68\nmsgid \"Kirovskaya oblast'\"\nmsgstr \"Kirovskaya oblast'\"\n\n#: ru/ru_regions.py:69\nmsgid \"Kostromskaya oblast'\"\nmsgstr \"Kostromskaya oblast'\"\n\n#: ru/ru_regions.py:70\nmsgid \"Kurganskaya oblast'\"\nmsgstr \"Kurganskaya oblast'\"\n\n#: ru/ru_regions.py:71\nmsgid \"Kurskaya oblast'\"\nmsgstr \"Kurskaya oblast'\"\n\n#: ru/ru_regions.py:72\nmsgid \"Leningradskaya oblast'\"\nmsgstr \"Leningradskaya oblast'\"\n\n#: ru/ru_regions.py:73\nmsgid \"Lipeckaya oblast'\"\nmsgstr \"Lipeckaya oblast'\"\n\n#: ru/ru_regions.py:74\nmsgid \"Magadanskaya oblast'\"\nmsgstr \"Magadanskaya oblast'\"\n\n#: ru/ru_regions.py:75\nmsgid \"Murmanskaya oblast'\"\nmsgstr \"Murmanskaya oblast'\"\n\n#: ru/ru_regions.py:76\nmsgid \"Nizhegorodskaja oblast'\"\nmsgstr \"Nizhegorodskaja oblast'\"\n\n#: ru/ru_regions.py:77\nmsgid \"Novgorodskaya oblast'\"\nmsgstr \"Novgorodskaya oblast'\"\n\n#: ru/ru_regions.py:78\nmsgid \"Novosibirskaya oblast'\"\nmsgstr \"Novosibirskaya oblast'\"\n\n#: ru/ru_regions.py:79\nmsgid \"Omskaya oblast'\"\nmsgstr \"Omskaya oblast'\"\n\n#: ru/ru_regions.py:80\nmsgid \"Orenburgskaya oblast'\"\nmsgstr \"Orenburgskaya oblast'\"\n\n#: ru/ru_regions.py:81\nmsgid \"Orlovskaya oblast'\"\nmsgstr \"Orlovskaya oblast'\"\n\n#: ru/ru_regions.py:82\nmsgid \"Penzenskaya oblast'\"\nmsgstr \"Penzenskaya oblast'\"\n\n#: ru/ru_regions.py:83\nmsgid \"Pskovskaya oblast'\"\nmsgstr \"Pskovskaya oblast'\"\n\n#: ru/ru_regions.py:84\nmsgid \"Rostovskaya oblast'\"\nmsgstr \"Rostovskaya oblast'\"\n\n#: ru/ru_regions.py:85\nmsgid \"Rjazanskaya oblast'\"\nmsgstr \"Rjazanskaya oblast'\"\n\n#: ru/ru_regions.py:86\nmsgid \"Samarskaya oblast'\"\nmsgstr \"Samarskaya oblast'\"\n\n#: ru/ru_regions.py:87\nmsgid \"Saratovskaya oblast'\"\nmsgstr \"Saratovskaya oblast'\"\n\n#: ru/ru_regions.py:88\nmsgid \"Sakhalinskaya oblast'\"\nmsgstr \"Sakhalinskaya oblast'\"\n\n#: ru/ru_regions.py:89\nmsgid \"Sverdlovskaya oblast'\"\nmsgstr \"Sverdlovskaya oblast'\"\n\n#: ru/ru_regions.py:90\nmsgid \"Smolenskaya oblast'\"\nmsgstr \"Smolenskaya oblast'\"\n\n#: ru/ru_regions.py:91\nmsgid \"Tambovskaya oblast'\"\nmsgstr \"Tambovskaya oblast'\"\n\n#: ru/ru_regions.py:92\nmsgid \"Tverskaya oblast'\"\nmsgstr \"Tverskaya oblast'\"\n\n#: ru/ru_regions.py:93\nmsgid \"Tomskaya oblast'\"\nmsgstr \"Tomskaya oblast'\"\n\n#: ru/ru_regions.py:94\nmsgid \"Tul'skaya oblast'\"\nmsgstr \"Tul'skaya oblast'\"\n\n#: ru/ru_regions.py:95\nmsgid \"Tyumenskaya oblast'\"\nmsgstr \"Tyumenskaya oblast'\"\n\n#: ru/ru_regions.py:96\nmsgid \"Ul'ianovskaya oblast'\"\nmsgstr \"Ul'ianovskaya oblast'\"\n\n#: ru/ru_regions.py:97\nmsgid \"Chelyabinskaya oblast'\"\nmsgstr \"Chelyabinskaya oblast'\"\n\n#: ru/ru_regions.py:98\nmsgid \"Yaroslavskaya oblast'\"\nmsgstr \"Yaroslavskaya oblast'\"\n\n#: ru/ru_regions.py:99\nmsgid \"Evreyskaya avtonomnaja oblast'\"\nmsgstr \"Evreyskaya avtonomnaja oblast'\"\n\n#: ru/ru_regions.py:100\nmsgid \"Neneckiy autonomnyy okrug\"\nmsgstr \"Neneckiy autonomnyy okrug\"\n\n#: ru/ru_regions.py:101\nmsgid \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\nmsgstr \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\n\n#: ru/ru_regions.py:102\nmsgid \"Chukotskiy avtonomnyy okrug\"\nmsgstr \"Chukotskiy avtonomnyy okrug\"\n\n#: ru/ru_regions.py:103\nmsgid \"Yamalo-Neneckiy avtonomnyy okrug\"\nmsgstr \"Yamalo-Neneckiy avtonomnyy okrug\"\n\n#: se/forms.py:54\nmsgid \"Enter a valid Swedish organisation number.\"\nmsgstr \"Voer een geldig Zweeds organisatie nummer in.\"\n\n#: se/forms.py:111\nmsgid \"Enter a valid Swedish personal identity number.\"\nmsgstr \"Voer een geldig Zweeds persoonlijk identificatie nummer in\"\n\n#: se/forms.py:112\nmsgid \"Co-ordination numbers are not allowed.\"\nmsgstr \"Coördinatie nummers zijn niet toegestaan.\"\n\n#: se/forms.py:154\nmsgid \"Enter a Swedish postal code in the format XXXXX.\"\nmsgstr \"Voer een Zweedse postcode in, in het formaat XXXXX.\"\n\n#: se/se_counties.py:16\nmsgid \"Stockholm\"\nmsgstr \"Stockholm\"\n\n#: se/se_counties.py:17\nmsgid \"Västerbotten\"\nmsgstr \"Västerbotten\"\n\n#: se/se_counties.py:18\nmsgid \"Norrbotten\"\nmsgstr \"Norrbotten\"\n\n#: se/se_counties.py:19\nmsgid \"Uppsala\"\nmsgstr \"Uppsala\"\n\n#: se/se_counties.py:20\nmsgid \"Södermanland\"\nmsgstr \"Södermanland\"\n\n#: se/se_counties.py:21\nmsgid \"Östergötland\"\nmsgstr \"Östergötland\"\n\n#: se/se_counties.py:22\nmsgid \"Jönköping\"\nmsgstr \"Jönköping\"\n\n#: se/se_counties.py:23\nmsgid \"Kronoberg\"\nmsgstr \"Kronoberg\"\n\n#: se/se_counties.py:24\nmsgid \"Kalmar\"\nmsgstr \"Kalmar\"\n\n#: se/se_counties.py:25\nmsgid \"Gotland\"\nmsgstr \"Gotland\"\n\n#: se/se_counties.py:26\nmsgid \"Blekinge\"\nmsgstr \"Blekinge\"\n\n#: se/se_counties.py:27\nmsgid \"Skåne\"\nmsgstr \"Skåne\"\n\n#: se/se_counties.py:28\nmsgid \"Halland\"\nmsgstr \"Halland\"\n\n#: se/se_counties.py:29\nmsgid \"Västra Götaland\"\nmsgstr \"Västra Götaland\"\n\n#: se/se_counties.py:30\nmsgid \"Värmland\"\nmsgstr \"Värmland\"\n\n#: se/se_counties.py:31\nmsgid \"Örebro\"\nmsgstr \"Örebro\"\n\n#: se/se_counties.py:32\nmsgid \"Västmanland\"\nmsgstr \"Västmanland\"\n\n#: se/se_counties.py:33\nmsgid \"Dalarna\"\nmsgstr \"Dalarna\"\n\n#: se/se_counties.py:34\nmsgid \"Gävleborg\"\nmsgstr \"Gävleborg\"\n\n#: se/se_counties.py:35\nmsgid \"Västernorrland\"\nmsgstr \"Västernorrland\"\n\n#: se/se_counties.py:36\nmsgid \"Jämtland\"\nmsgstr \"Jämtland\"\n\n#: si/forms.py:25\nmsgid \"The first 7 digits of the EMSO must represent a valid past date.\"\nmsgstr \"\"\n\"De eerste 7 cijfers van de EMSO moeten een geldige verleden datum weergeven.\"\n\n#: si/forms.py:26\nmsgid \"The EMSO is not valid.\"\nmsgstr \"De EMSO is niet geldig.\"\n\n#: si/forms.py:86\nmsgid \"Enter a valid tax number in form SIXXXXXXXX\"\nmsgstr \"Voer een geldig belasting nummer in van de vorm SIXXXXXXXX\"\n\n#: si/forms.py:151\nmsgid \"Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.\"\nmsgstr \"Voer een telefoonnummer in van de vorm +386XXXXXXXX of 0XXXXXXXX.\"\n\n#: sk/sk_districts.py:8\nmsgid \"Banska Bystrica\"\nmsgstr \"Banska Bystrica\"\n\n#: sk/sk_districts.py:9\nmsgid \"Banska Stiavnica\"\nmsgstr \"Banska Stiavnica\"\n\n#: sk/sk_districts.py:10\nmsgid \"Bardejov\"\nmsgstr \"Bardejov\"\n\n#: sk/sk_districts.py:11\nmsgid \"Banovce nad Bebravou\"\nmsgstr \"Banovce nad Bebravou\"\n\n#: sk/sk_districts.py:12\nmsgid \"Brezno\"\nmsgstr \"Brezno\"\n\n#: sk/sk_districts.py:13\nmsgid \"Bratislava I\"\nmsgstr \"Bratislava I\"\n\n#: sk/sk_districts.py:14\nmsgid \"Bratislava II\"\nmsgstr \"Bratislava II\"\n\n#: sk/sk_districts.py:15\nmsgid \"Bratislava III\"\nmsgstr \"Bratislava III\"\n\n#: sk/sk_districts.py:16\nmsgid \"Bratislava IV\"\nmsgstr \"Bratislava IV\"\n\n#: sk/sk_districts.py:17\nmsgid \"Bratislava V\"\nmsgstr \"Bratislava V\"\n\n#: sk/sk_districts.py:18\nmsgid \"Bytca\"\nmsgstr \"Bytca\"\n\n#: sk/sk_districts.py:19\nmsgid \"Cadca\"\nmsgstr \"Cadca\"\n\n#: sk/sk_districts.py:20\nmsgid \"Detva\"\nmsgstr \"Detva\"\n\n#: sk/sk_districts.py:21\nmsgid \"Dolny Kubin\"\nmsgstr \"Dolny Kubin\"\n\n#: sk/sk_districts.py:22\nmsgid \"Dunajska Streda\"\nmsgstr \"Dunajska Streda\"\n\n#: sk/sk_districts.py:23\nmsgid \"Galanta\"\nmsgstr \"Galanta\"\n\n#: sk/sk_districts.py:24\nmsgid \"Gelnica\"\nmsgstr \"Gelnica\"\n\n#: sk/sk_districts.py:25\nmsgid \"Hlohovec\"\nmsgstr \"Hlohovec\"\n\n#: sk/sk_districts.py:26\nmsgid \"Humenne\"\nmsgstr \"Humenne\"\n\n#: sk/sk_districts.py:27\nmsgid \"Ilava\"\nmsgstr \"Ilava\"\n\n#: sk/sk_districts.py:28\nmsgid \"Kezmarok\"\nmsgstr \"Kezmarok\"\n\n#: sk/sk_districts.py:29\nmsgid \"Komarno\"\nmsgstr \"Komarno\"\n\n#: sk/sk_districts.py:30\nmsgid \"Kosice I\"\nmsgstr \"Kosice I\"\n\n#: sk/sk_districts.py:31\nmsgid \"Kosice II\"\nmsgstr \"Kosice II\"\n\n#: sk/sk_districts.py:32\nmsgid \"Kosice III\"\nmsgstr \"Kosice III\"\n\n#: sk/sk_districts.py:33\nmsgid \"Kosice IV\"\nmsgstr \"Kosice IV\"\n\n#: sk/sk_districts.py:34\nmsgid \"Kosice - okolie\"\nmsgstr \"Kosice - okolie\"\n\n#: sk/sk_districts.py:35\nmsgid \"Krupina\"\nmsgstr \"Krupina\"\n\n#: sk/sk_districts.py:36\nmsgid \"Kysucke Nove Mesto\"\nmsgstr \"Kysucke Nove Mesto\"\n\n#: sk/sk_districts.py:37\nmsgid \"Levice\"\nmsgstr \"Levice\"\n\n#: sk/sk_districts.py:38\nmsgid \"Levoca\"\nmsgstr \"Levoca\"\n\n#: sk/sk_districts.py:39\nmsgid \"Liptovsky Mikulas\"\nmsgstr \"Liptovsky Mikulas\"\n\n#: sk/sk_districts.py:40\nmsgid \"Lucenec\"\nmsgstr \"Lucenec\"\n\n#: sk/sk_districts.py:41\nmsgid \"Malacky\"\nmsgstr \"Malacky\"\n\n#: sk/sk_districts.py:42\nmsgid \"Martin\"\nmsgstr \"Martin\"\n\n#: sk/sk_districts.py:43\nmsgid \"Medzilaborce\"\nmsgstr \"Medzilaborce\"\n\n#: sk/sk_districts.py:44\nmsgid \"Michalovce\"\nmsgstr \"Michalovce\"\n\n#: sk/sk_districts.py:45\nmsgid \"Myjava\"\nmsgstr \"Myjava\"\n\n#: sk/sk_districts.py:46\nmsgid \"Namestovo\"\nmsgstr \"Namestovo\"\n\n#: sk/sk_districts.py:47\nmsgid \"Nitra\"\nmsgstr \"Nitra\"\n\n#: sk/sk_districts.py:48\nmsgid \"Nove Mesto nad Vahom\"\nmsgstr \"Nove Mesto nad Vahom\"\n\n#: sk/sk_districts.py:49\nmsgid \"Nove Zamky\"\nmsgstr \"Nove Zamky\"\n\n#: sk/sk_districts.py:50\nmsgid \"Partizanske\"\nmsgstr \"Partizanske\"\n\n#: sk/sk_districts.py:51\nmsgid \"Pezinok\"\nmsgstr \"Pezinok\"\n\n#: sk/sk_districts.py:52\nmsgid \"Piestany\"\nmsgstr \"Piestany\"\n\n#: sk/sk_districts.py:53\nmsgid \"Poltar\"\nmsgstr \"Poltar\"\n\n#: sk/sk_districts.py:54\nmsgid \"Poprad\"\nmsgstr \"Poprad\"\n\n#: sk/sk_districts.py:55\nmsgid \"Povazska Bystrica\"\nmsgstr \"Povazska Bystrica\"\n\n#: sk/sk_districts.py:56\nmsgid \"Presov\"\nmsgstr \"Presov\"\n\n#: sk/sk_districts.py:57\nmsgid \"Prievidza\"\nmsgstr \"Prievidza\"\n\n#: sk/sk_districts.py:58\nmsgid \"Puchov\"\nmsgstr \"Puchov\"\n\n#: sk/sk_districts.py:59\nmsgid \"Revuca\"\nmsgstr \"Revuca\"\n\n#: sk/sk_districts.py:60\nmsgid \"Rimavska Sobota\"\nmsgstr \"Rimavska Sobota\"\n\n#: sk/sk_districts.py:61\nmsgid \"Roznava\"\nmsgstr \"Roznava\"\n\n#: sk/sk_districts.py:62\nmsgid \"Ruzomberok\"\nmsgstr \"Ruzomberok\"\n\n#: sk/sk_districts.py:63\nmsgid \"Sabinov\"\nmsgstr \"Sabinov\"\n\n#: sk/sk_districts.py:64\nmsgid \"Senec\"\nmsgstr \"Senec\"\n\n#: sk/sk_districts.py:65\nmsgid \"Senica\"\nmsgstr \"Senica\"\n\n#: sk/sk_districts.py:66\nmsgid \"Skalica\"\nmsgstr \"Skalica\"\n\n#: sk/sk_districts.py:67\nmsgid \"Snina\"\nmsgstr \"Snina\"\n\n#: sk/sk_districts.py:68\nmsgid \"Sobrance\"\nmsgstr \"Sobrance\"\n\n#: sk/sk_districts.py:69\nmsgid \"Spisska Nova Ves\"\nmsgstr \"Spisska Nova Ves\"\n\n#: sk/sk_districts.py:70\nmsgid \"Stara Lubovna\"\nmsgstr \"Stara Lubovna\"\n\n#: sk/sk_districts.py:71\nmsgid \"Stropkov\"\nmsgstr \"Stropkov\"\n\n#: sk/sk_districts.py:72\nmsgid \"Svidnik\"\nmsgstr \"Svidnik\"\n\n#: sk/sk_districts.py:73\nmsgid \"Sala\"\nmsgstr \"Sala\"\n\n#: sk/sk_districts.py:74\nmsgid \"Topolcany\"\nmsgstr \"Topolcany\"\n\n#: sk/sk_districts.py:75\nmsgid \"Trebisov\"\nmsgstr \"Trebisov\"\n\n#: sk/sk_districts.py:76\nmsgid \"Trencin\"\nmsgstr \"Trencin\"\n\n#: sk/sk_districts.py:77\nmsgid \"Trnava\"\nmsgstr \"Trnava\"\n\n#: sk/sk_districts.py:78\nmsgid \"Turcianske Teplice\"\nmsgstr \"Turcianske Teplice\"\n\n#: sk/sk_districts.py:79\nmsgid \"Tvrdosin\"\nmsgstr \"Tvrdosin\"\n\n#: sk/sk_districts.py:80\nmsgid \"Velky Krtis\"\nmsgstr \"Velky Krtis\"\n\n#: sk/sk_districts.py:81\nmsgid \"Vranov nad Toplou\"\nmsgstr \"Vranov nad Toplou\"\n\n#: sk/sk_districts.py:82\nmsgid \"Zlate Moravce\"\nmsgstr \"Zlate Moravce\"\n\n#: sk/sk_districts.py:83\nmsgid \"Zvolen\"\nmsgstr \"Zvolen\"\n\n#: sk/sk_districts.py:84\nmsgid \"Zarnovica\"\nmsgstr \"Zarnovica\"\n\n#: sk/sk_districts.py:85\nmsgid \"Ziar nad Hronom\"\nmsgstr \"Ziar nad Hronom\"\n\n#: sk/sk_districts.py:86\nmsgid \"Zilina\"\nmsgstr \"Zilina\"\n\n#: sk/sk_regions.py:8\nmsgid \"Banska Bystrica region\"\nmsgstr \"Regio Banská Bystrica\"\n\n#: sk/sk_regions.py:9\nmsgid \"Bratislava region\"\nmsgstr \"Regio Bratislava\"\n\n#: sk/sk_regions.py:10\nmsgid \"Kosice region\"\nmsgstr \"Regio Košice\"\n\n#: sk/sk_regions.py:11\nmsgid \"Nitra region\"\nmsgstr \"Regio Nitra\"\n\n#: sk/sk_regions.py:12\nmsgid \"Presov region\"\nmsgstr \"Regio Prešov\"\n\n#: sk/sk_regions.py:13\nmsgid \"Trencin region\"\nmsgstr \"Regio Trenčín\"\n\n#: sk/sk_regions.py:14\nmsgid \"Trnava region\"\nmsgstr \"Regio Trnava\"\n\n#: sk/sk_regions.py:15\nmsgid \"Zilina region\"\nmsgstr \"Regio Žilina\"\n\n#: tr/forms.py:21\nmsgid \"Enter a postal code in the format XXXXX.\"\nmsgstr \"Voer een postcode in in het formaat XXXXX.\"\n\n#: tr/forms.py:42\nmsgid \"Phone numbers must be in 0XXX XXX XXXX format.\"\nmsgstr \"Telefoonnummers moeten in 0XXX XXX XXXX formaat staan.\"\n\n#: tr/forms.py:69\nmsgid \"Enter a valid Turkish Identification number.\"\nmsgstr \"Voer een geldig Turks identificatienummer in.\"\n\n#: tr/forms.py:70\nmsgid \"Turkish Identification number must be 11 digits.\"\nmsgstr \"Een Turks Identificatienummer moet uit 11 cijfers bestaan.\"\n\n#: us/forms.py:21\nmsgid \"Enter a zip code in the format XXXXX or XXXXX-XXXX.\"\nmsgstr \"Geef een geldige postcode op volgens het XXXXX of XXXXX-XXXX formaat.\"\n\n#: us/forms.py:59\nmsgid \"Enter a valid U.S. Social Security number in XXX-XX-XXXX format.\"\nmsgstr \"Geef een geldig V.S. Sociaalnummer op in het XXX-XX-XXXX formaat.\"\n\n#: us/forms.py:92\nmsgid \"Enter a U.S. state or territory.\"\nmsgstr \"Voer een Amerikaanse staat of grondgebied in.\"\n\n#: us/models.py:8\nmsgid \"U.S. state (two uppercase letters)\"\nmsgstr \"Staat van de VS (twee hoofdletters)\"\n\n#: us/models.py:17\nmsgid \"U.S. postal code (two uppercase letters)\"\nmsgstr \"Postcode in de VS (twee hoofdletters)\"\n\n#: us/models.py:26\nmsgid \"Phone number\"\nmsgstr \"Telefoonnummer\"\n\n#: uy/forms.py:29\nmsgid \"Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.\"\nmsgstr \"\"\n\"Voer een geldig CI nummer in, in X.XXX.XXX-X, XXXXXXX of XXXXXXXX-X formaat.\"\n\n#: uy/forms.py:31\nmsgid \"Enter a valid CI number.\"\nmsgstr \"Voer een geldig CI nummer in.\"\n\n#: za/forms.py:22\nmsgid \"Enter a valid South African ID number\"\nmsgstr \"Geef een geldig Zuid-Afrikaans identificatienummer op\"\n\n#: za/forms.py:56\nmsgid \"Enter a valid South African postal code\"\nmsgstr \"Geef een geldige Zuid-Afrikaanse postcode op\"\n\n#: za/za_provinces.py:4\nmsgid \"Eastern Cape\"\nmsgstr \"Oost-Kaap\"\n\n#: za/za_provinces.py:5\nmsgid \"Free State\"\nmsgstr \"Vrijstaat\"\n\n#: za/za_provinces.py:6\nmsgid \"Gauteng\"\nmsgstr \"Gauteng\"\n\n#: za/za_provinces.py:7\nmsgid \"KwaZulu-Natal\"\nmsgstr \"KwaZulu-Natal\"\n\n#: za/za_provinces.py:8\nmsgid \"Limpopo\"\nmsgstr \"Limpopo\"\n\n#: za/za_provinces.py:9\nmsgid \"Mpumalanga\"\nmsgstr \"Mpumalanga\"\n\n#: za/za_provinces.py:10\nmsgid \"Northern Cape\"\nmsgstr \"Noord-Kaap\"\n\n#: za/za_provinces.py:11\nmsgid \"North West\"\nmsgstr \"Noordwest\"\n\n#: za/za_provinces.py:12\nmsgid \"Western Cape\"\nmsgstr \"West-Kaap\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/locale/nn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# hgrimelid <havard@grimelid.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-10-17 09:16+0000\\n\"\n\"Last-Translator: hgrimelid <havard@grimelid.com>\\n\"\n\"Language-Team: Norwegian Nynorsk (http://www.transifex.com/projects/p/django/\"\n\"language/nn/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: nn\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: ar/forms.py:30\nmsgid \"Enter a postal code in the format NNNN or ANNNNAAA.\"\nmsgstr \"Oppgje eit postnummer på forma NNNN eller ANNNNAAA.\"\n\n#: ar/forms.py:52 br/forms.py:95 br/forms.py:134 pe/forms.py:27 pe/forms.py:55\nmsgid \"This field requires only numbers.\"\nmsgstr \"Feltet krevar berre tall.\"\n\n#: ar/forms.py:53\nmsgid \"This field requires 7 or 8 digits.\"\nmsgstr \"Feltet krevar 7 eller 8 siffer.\"\n\n#: ar/forms.py:82\nmsgid \"Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.\"\nmsgstr \"Oppgje gyldig CUIT på forma XX-XXXXXXXX-X or XXXXXXXXXXXX.\"\n\n#: ar/forms.py:83\nmsgid \"Invalid CUIT.\"\nmsgstr \"Ugyldig CUIT.\"\n\n#: ar/forms.py:84\nmsgid \"Invalid legal type. Type must be 27, 20, 23 or 30.\"\nmsgstr \"\"\n\n#: at/at_states.py:5\nmsgid \"Burgenland\"\nmsgstr \"Burgenland\"\n\n#: at/at_states.py:6\nmsgid \"Carinthia\"\nmsgstr \"Carinthia\"\n\n#: at/at_states.py:7\nmsgid \"Lower Austria\"\nmsgstr \"Niederösterreich\"\n\n#: at/at_states.py:8\nmsgid \"Upper Austria\"\nmsgstr \"Oberösterreich\"\n\n#: at/at_states.py:9\nmsgid \"Salzburg\"\nmsgstr \"Salzburg\"\n\n#: at/at_states.py:10\nmsgid \"Styria\"\nmsgstr \"Steiermark\"\n\n#: at/at_states.py:11\nmsgid \"Tyrol\"\nmsgstr \"Tirol\"\n\n#: at/at_states.py:12\nmsgid \"Vorarlberg\"\nmsgstr \"Vorarlberg\"\n\n#: at/at_states.py:13\nmsgid \"Vienna\"\nmsgstr \"Wien\"\n\n#: at/forms.py:22 ch/forms.py:22 no/forms.py:19\nmsgid \"Enter a zip code in the format XXXX.\"\nmsgstr \"Oppgje eit postnummer på forma XXXX.\"\n\n#: at/forms.py:50\nmsgid \"Enter a valid Austrian Social Security Number in XXXX XXXXXX format.\"\nmsgstr \"Oppgje eit gyldig Østerrisk personnummer på forma XXXX XXXXXX.\"\n\n#: au/forms.py:26\nmsgid \"Enter a 4 digit postcode.\"\nmsgstr \"\"\n\n#: au/models.py:9\nmsgid \"Australian State\"\nmsgstr \"\"\n\n#: au/models.py:19\nmsgid \"Australian Postcode\"\nmsgstr \"\"\n\n#: au/models.py:33\nmsgid \"Australian Phone number\"\nmsgstr \"\"\n\n#: be/be_provinces.py:5\nmsgid \"Antwerp\"\nmsgstr \"Antwerpen\"\n\n#: be/be_provinces.py:6\nmsgid \"Brussels\"\nmsgstr \"Brussel\"\n\n#: be/be_provinces.py:7\nmsgid \"East Flanders\"\nmsgstr \"Aust-Flandern\"\n\n#: be/be_provinces.py:8\nmsgid \"Flemish Brabant\"\nmsgstr \"Flamsk Brabant\"\n\n#: be/be_provinces.py:9\nmsgid \"Hainaut\"\nmsgstr \"Hainaut\"\n\n#: be/be_provinces.py:10\nmsgid \"Liege\"\nmsgstr \"Liege\"\n\n#: be/be_provinces.py:11 nl/nl_provinces.py:9\nmsgid \"Limburg\"\nmsgstr \"Limburg\"\n\n#: be/be_provinces.py:12\nmsgid \"Luxembourg\"\nmsgstr \"Luxembourg\"\n\n#: be/be_provinces.py:13\nmsgid \"Namur\"\nmsgstr \"Namur\"\n\n#: be/be_provinces.py:14\nmsgid \"Walloon Brabant\"\nmsgstr \"Vallonsk Brabant\"\n\n#: be/be_provinces.py:15\nmsgid \"West Flanders\"\nmsgstr \"Vest-Flandern\"\n\n#: be/be_regions.py:5\nmsgid \"Brussels Capital Region\"\nmsgstr \"\"\n\n#: be/be_regions.py:6\nmsgid \"Flemish Region\"\nmsgstr \"\"\n\n#: be/be_regions.py:7\nmsgid \"Wallonia\"\nmsgstr \"Vallonia\"\n\n#: be/forms.py:25\nmsgid \"Enter a valid postal code in the range and format 1XXX - 9XXX.\"\nmsgstr \"Skriv inn eit gyldig postnummer i området og med formatet 1XXX - 9XXX.\"\n\n#: be/forms.py:48\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\nmsgstr \"\"\n\n#: br/forms.py:22\nmsgid \"Enter a zip code in the format XXXXX-XXX.\"\nmsgstr \"Oppgje eit postnummer på forma XXXXX-XXX.\"\n\n#: br/forms.py:31\nmsgid \"Phone numbers must be in XX-XXXX-XXXX format.\"\nmsgstr \"Telefonnummeret må vere på forma XX-XXXX-XXXX.\"\n\n#: br/forms.py:58\nmsgid \"\"\n\"Select a valid brazilian state. That state is not one of the available \"\n\"states.\"\nmsgstr \"\"\n\"Velg ein gyldig brasiliansk stat. Den staten er ikkje eit av dei \"\n\"tilgjengelege valga.\"\n\n#: br/forms.py:93\nmsgid \"Invalid CPF number.\"\nmsgstr \"Ugyldig CPF-nummer.\"\n\n#: br/forms.py:94\nmsgid \"This field requires at most 11 digits or 14 characters.\"\nmsgstr \"Feltet krevar maksimum 11 eller 14 siffer.\"\n\n#: br/forms.py:133\nmsgid \"Invalid CNPJ number.\"\nmsgstr \"Ugyldig CNPJ-nummer.\"\n\n#: br/forms.py:135\nmsgid \"This field requires at least 14 digits\"\nmsgstr \"Feltet krevar minst 14 siffer.\"\n\n#: ca/forms.py:29\nmsgid \"Enter a postal code in the format XXX XXX.\"\nmsgstr \"Oppgje eit postnummer på forma XXX XXX.\"\n\n#: ca/forms.py:47 us/forms.py:30\nmsgid \"Phone numbers must be in XXX-XXX-XXXX format.\"\nmsgstr \"Telefonnummer må vere på forma XX-XXXX-XXXX.\"\n\n#: ca/forms.py:69\nmsgid \"Enter a Canadian province or territory.\"\nmsgstr \"\"\n\n#: ca/forms.py:110\nmsgid \"Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.\"\nmsgstr \"Oppgje eit gyldig kanadisk personnummer på forma XXX-XXX-XXX.\"\n\n#: ch/ch_states.py:5\nmsgid \"Aargau\"\nmsgstr \"Aargau\"\n\n#: ch/ch_states.py:6\nmsgid \"Appenzell Innerrhoden\"\nmsgstr \"Appenzell Innerrhoden\"\n\n#: ch/ch_states.py:7\nmsgid \"Appenzell Ausserrhoden\"\nmsgstr \"Appenzell Ausserrhoden\"\n\n#: ch/ch_states.py:8\nmsgid \"Basel-Stadt\"\nmsgstr \"Basel-Stadt\"\n\n#: ch/ch_states.py:9\nmsgid \"Basel-Land\"\nmsgstr \"Basel-Landschaft\"\n\n#: ch/ch_states.py:10\nmsgid \"Berne\"\nmsgstr \"Bern\"\n\n#: ch/ch_states.py:11\nmsgid \"Fribourg\"\nmsgstr \"Fribourg\"\n\n#: ch/ch_states.py:12\nmsgid \"Geneva\"\nmsgstr \"Genève\"\n\n#: ch/ch_states.py:13\nmsgid \"Glarus\"\nmsgstr \"Glarus\"\n\n#: ch/ch_states.py:14\nmsgid \"Graubuenden\"\nmsgstr \"Graubünden\"\n\n#: ch/ch_states.py:15\nmsgid \"Jura\"\nmsgstr \"Jura\"\n\n#: ch/ch_states.py:16\nmsgid \"Lucerne\"\nmsgstr \"Luzern\"\n\n#: ch/ch_states.py:17\nmsgid \"Neuchatel\"\nmsgstr \"Neuchâtel\"\n\n#: ch/ch_states.py:18\nmsgid \"Nidwalden\"\nmsgstr \"Nidwalden\"\n\n#: ch/ch_states.py:19\nmsgid \"Obwalden\"\nmsgstr \"Obwalden\"\n\n#: ch/ch_states.py:20\nmsgid \"Schaffhausen\"\nmsgstr \"Schaffhausen\"\n\n#: ch/ch_states.py:21\nmsgid \"Schwyz\"\nmsgstr \"Schwyz\"\n\n#: ch/ch_states.py:22\nmsgid \"Solothurn\"\nmsgstr \"Solothurn\"\n\n#: ch/ch_states.py:23\nmsgid \"St. Gallen\"\nmsgstr \"St. Gallen\"\n\n#: ch/ch_states.py:24\nmsgid \"Thurgau\"\nmsgstr \"Thurgau\"\n\n#: ch/ch_states.py:25\nmsgid \"Ticino\"\nmsgstr \"Ticino\"\n\n#: ch/ch_states.py:26\nmsgid \"Uri\"\nmsgstr \"Uri\"\n\n#: ch/ch_states.py:27\nmsgid \"Valais\"\nmsgstr \"Wallis\"\n\n#: ch/ch_states.py:28\nmsgid \"Vaud\"\nmsgstr \"Vaud\"\n\n#: ch/ch_states.py:29\nmsgid \"Zug\"\nmsgstr \"Zug\"\n\n#: ch/ch_states.py:30\nmsgid \"Zurich\"\nmsgstr \"Zürich\"\n\n#: ch/forms.py:37\nmsgid \"Phone numbers must be in 0XX XXX XX XX format.\"\nmsgstr \"\"\n\n#: ch/forms.py:68\nmsgid \"\"\n\"Enter a valid Swiss identity or passport card number in X1234567<0 or \"\n\"1234567890 format.\"\nmsgstr \"\"\n\"Oppgje eit gyldig sveitsisk identitets- eller passnummer på forma X1234567<0 \"\n\"eller 1234567890.\"\n\n#: cl/forms.py:32\nmsgid \"Enter a valid Chilean RUT.\"\nmsgstr \"Oppgje eit gyldig chilensk RUT.\"\n\n#: cl/forms.py:33\nmsgid \"Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.\"\nmsgstr \"Oppgje eit gyldig chilensk RUT på forma XX.XXX.XXX-X.\"\n\n#: cl/forms.py:34\nmsgid \"The Chilean RUT is not valid.\"\nmsgstr \"Den chilenske RUT er ugyldig.\"\n\n#: cn/forms.py:84\nmsgid \"Enter a post code in the format XXXXXX.\"\nmsgstr \"\"\n\n#: cn/forms.py:105\nmsgid \"ID Card Number consists of 15 or 18 digits.\"\nmsgstr \"\"\n\n#: cn/forms.py:106\nmsgid \"Invalid ID Card Number: Wrong checksum\"\nmsgstr \"\"\n\n#: cn/forms.py:107\nmsgid \"Invalid ID Card Number: Wrong birthdate\"\nmsgstr \"\"\n\n#: cn/forms.py:108\nmsgid \"Invalid ID Card Number: Wrong location code\"\nmsgstr \"\"\n\n#: cn/forms.py:193\nmsgid \"Enter a valid phone number.\"\nmsgstr \"\"\n\n#: cn/forms.py:210\nmsgid \"Enter a valid cell number.\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:8\nmsgid \"Prague\"\nmsgstr \"Praha\"\n\n#: cz/cz_regions.py:9\nmsgid \"Central Bohemian Region\"\nmsgstr \"Sentralbøhmen region\"\n\n#: cz/cz_regions.py:10\nmsgid \"South Bohemian Region\"\nmsgstr \"Sydbøhmen region\"\n\n#: cz/cz_regions.py:11\nmsgid \"Pilsen Region\"\nmsgstr \"Plzeň region\"\n\n#: cz/cz_regions.py:12\nmsgid \"Carlsbad Region\"\nmsgstr \"Karlovy Vary region\"\n\n#: cz/cz_regions.py:13\nmsgid \"Usti Region\"\nmsgstr \"Ústí nad Labem region\"\n\n#: cz/cz_regions.py:14\nmsgid \"Liberec Region\"\nmsgstr \"Liberec region\"\n\n#: cz/cz_regions.py:15\nmsgid \"Hradec Region\"\nmsgstr \"Hradec Králové region\"\n\n#: cz/cz_regions.py:16\nmsgid \"Pardubice Region\"\nmsgstr \"Pardubice region\"\n\n#: cz/cz_regions.py:17\nmsgid \"Vysocina Region\"\nmsgstr \"Žilina-regionen\"\n\n#: cz/cz_regions.py:18\nmsgid \"South Moravian Region\"\nmsgstr \"Sydmähriske region\"\n\n#: cz/cz_regions.py:19\nmsgid \"Olomouc Region\"\nmsgstr \"Olomouc region\"\n\n#: cz/cz_regions.py:20\nmsgid \"Zlin Region\"\nmsgstr \"Zlín region\"\n\n#: cz/cz_regions.py:21\nmsgid \"Moravian-Silesian Region\"\nmsgstr \"Mähren-Schlesien region\"\n\n#: cz/forms.py:32 sk/forms.py:33\nmsgid \"Enter a postal code in the format XXXXX or XXX XX.\"\nmsgstr \"Oppgje eit postnummer på forma XXXXX or XXX XX.\"\n\n#: cz/forms.py:52\nmsgid \"Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.\"\nmsgstr \"Oppgje eit fødselsnummer på forma XXXXXX/XXXX eller XXXXXXXXXX.\"\n\n#: cz/forms.py:53\nmsgid \"Enter a valid birth number.\"\nmsgstr \"Oppgje eit gyldig fødselsnummer.\"\n\n#: cz/forms.py:102\nmsgid \"Enter a valid IC number.\"\nmsgstr \"Oppgje eit gyldig IC-nummer.\"\n\n#: de/de_states.py:5\nmsgid \"Baden-Wuerttemberg\"\nmsgstr \"Baden-Württemberg\"\n\n#: de/de_states.py:6\nmsgid \"Bavaria\"\nmsgstr \"Bayern\"\n\n#: de/de_states.py:7\nmsgid \"Berlin\"\nmsgstr \"Berlin\"\n\n#: de/de_states.py:8\nmsgid \"Brandenburg\"\nmsgstr \"Brandenburg\"\n\n#: de/de_states.py:9\nmsgid \"Bremen\"\nmsgstr \"Bremen\"\n\n#: de/de_states.py:10\nmsgid \"Hamburg\"\nmsgstr \"Hamburg\"\n\n#: de/de_states.py:11\nmsgid \"Hessen\"\nmsgstr \"Hessen\"\n\n#: de/de_states.py:12\nmsgid \"Mecklenburg-Western Pomerania\"\nmsgstr \"Mecklenburg-Vorpommern\"\n\n#: de/de_states.py:13\nmsgid \"Lower Saxony\"\nmsgstr \"Niedersachsen\"\n\n#: de/de_states.py:14\nmsgid \"North Rhine-Westphalia\"\nmsgstr \"Nordrhein-Westfalen\"\n\n#: de/de_states.py:15\nmsgid \"Rhineland-Palatinate\"\nmsgstr \"Rheinland-Pfalz\"\n\n#: de/de_states.py:16\nmsgid \"Saarland\"\nmsgstr \"Saarland\"\n\n#: de/de_states.py:17\nmsgid \"Saxony\"\nmsgstr \"Sachsen\"\n\n#: de/de_states.py:18\nmsgid \"Saxony-Anhalt\"\nmsgstr \"Sachsen-Anhalt\"\n\n#: de/de_states.py:19\nmsgid \"Schleswig-Holstein\"\nmsgstr \"Schleswig-Holstein\"\n\n#: de/de_states.py:20\nmsgid \"Thuringia\"\nmsgstr \"Thüringen\"\n\n#: de/forms.py:20 fi/forms.py:18 fr/forms.py:20\nmsgid \"Enter a zip code in the format XXXXX.\"\nmsgstr \"Oppgje eit postnummer på forma XXXXX.\"\n\n#: de/forms.py:46\nmsgid \"\"\n\"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"format.\"\nmsgstr \"\"\n\"Oppgje eit gyldig tysk identitetsnummer på forma XXXXXXXXXXX-XXXXXXX-XXXXXXX-\"\n\"X.\"\n\n#: es/es_provinces.py:5\nmsgid \"Araba\"\nmsgstr \"\"\n\n#: es/es_provinces.py:6\nmsgid \"Albacete\"\nmsgstr \"Albacete\"\n\n#: es/es_provinces.py:7\nmsgid \"Alacant\"\nmsgstr \"Alicante\"\n\n#: es/es_provinces.py:8\nmsgid \"Almeria\"\nmsgstr \"Almería\"\n\n#: es/es_provinces.py:9\nmsgid \"Avila\"\nmsgstr \"Ávila\"\n\n#: es/es_provinces.py:10\nmsgid \"Badajoz\"\nmsgstr \"Badajoz\"\n\n#: es/es_provinces.py:11\nmsgid \"Illes Balears\"\nmsgstr \"Balearane\"\n\n#: es/es_provinces.py:12\nmsgid \"Barcelona\"\nmsgstr \"Barcelona\"\n\n#: es/es_provinces.py:13\nmsgid \"Burgos\"\nmsgstr \"Burgos\"\n\n#: es/es_provinces.py:14\nmsgid \"Caceres\"\nmsgstr \"Cáceres\"\n\n#: es/es_provinces.py:15\nmsgid \"Cadiz\"\nmsgstr \"Cádiz\"\n\n#: es/es_provinces.py:16\nmsgid \"Castello\"\nmsgstr \"Castellón\"\n\n#: es/es_provinces.py:17\nmsgid \"Ciudad Real\"\nmsgstr \"Ciudad Real\"\n\n#: es/es_provinces.py:18\nmsgid \"Cordoba\"\nmsgstr \"Córdoba\"\n\n#: es/es_provinces.py:19\nmsgid \"A Coruna\"\nmsgstr \"A Coruna\"\n\n#: es/es_provinces.py:20\nmsgid \"Cuenca\"\nmsgstr \"Cuenca\"\n\n#: es/es_provinces.py:21\nmsgid \"Girona\"\nmsgstr \"Girona\"\n\n#: es/es_provinces.py:22\nmsgid \"Granada\"\nmsgstr \"Granada\"\n\n#: es/es_provinces.py:23\nmsgid \"Guadalajara\"\nmsgstr \"Guadalajara\"\n\n#: es/es_provinces.py:24\nmsgid \"Guipuzkoa\"\nmsgstr \"Gipuzkoa\"\n\n#: es/es_provinces.py:25\nmsgid \"Huelva\"\nmsgstr \"Huelva\"\n\n#: es/es_provinces.py:26\nmsgid \"Huesca\"\nmsgstr \"Huesca\"\n\n#: es/es_provinces.py:27\nmsgid \"Jaen\"\nmsgstr \"Jaén\"\n\n#: es/es_provinces.py:28\nmsgid \"Leon\"\nmsgstr \"León\"\n\n#: es/es_provinces.py:29\nmsgid \"Lleida\"\nmsgstr \"Lleida\"\n\n#: es/es_provinces.py:30 es/es_regions.py:17\nmsgid \"La Rioja\"\nmsgstr \"La Rioja\"\n\n#: es/es_provinces.py:31\nmsgid \"Lugo\"\nmsgstr \"Lugo\"\n\n#: es/es_provinces.py:32 es/es_regions.py:18\nmsgid \"Madrid\"\nmsgstr \"Madrid\"\n\n#: es/es_provinces.py:33\nmsgid \"Malaga\"\nmsgstr \"Málaga\"\n\n#: es/es_provinces.py:34\nmsgid \"Murcia\"\nmsgstr \"Murcia\"\n\n#: es/es_provinces.py:35\nmsgid \"Navarre\"\nmsgstr \"Navarra\"\n\n#: es/es_provinces.py:36\nmsgid \"Ourense\"\nmsgstr \"Ourense\"\n\n#: es/es_provinces.py:37\nmsgid \"Asturias\"\nmsgstr \"Asturias\"\n\n#: es/es_provinces.py:38\nmsgid \"Palencia\"\nmsgstr \"Palencia\"\n\n#: es/es_provinces.py:39\nmsgid \"Las Palmas\"\nmsgstr \"Las Palmas\"\n\n#: es/es_provinces.py:40\nmsgid \"Pontevedra\"\nmsgstr \"Pontevedra\"\n\n#: es/es_provinces.py:41\nmsgid \"Salamanca\"\nmsgstr \"Salamanca\"\n\n#: es/es_provinces.py:42\nmsgid \"Santa Cruz de Tenerife\"\nmsgstr \"Santa Cruz de Tenerife\"\n\n#: es/es_provinces.py:43 es/es_regions.py:11\nmsgid \"Cantabria\"\nmsgstr \"Cantabria\"\n\n#: es/es_provinces.py:44\nmsgid \"Segovia\"\nmsgstr \"Segovia\"\n\n#: es/es_provinces.py:45\nmsgid \"Seville\"\nmsgstr \"Sevilla\"\n\n#: es/es_provinces.py:46\nmsgid \"Soria\"\nmsgstr \"Soria\"\n\n#: es/es_provinces.py:47\nmsgid \"Tarragona\"\nmsgstr \"Tarragona\"\n\n#: es/es_provinces.py:48\nmsgid \"Teruel\"\nmsgstr \"Teruel\"\n\n#: es/es_provinces.py:49\nmsgid \"Toledo\"\nmsgstr \"Toledo\"\n\n#: es/es_provinces.py:50\nmsgid \"Valencia\"\nmsgstr \"Valencia\"\n\n#: es/es_provinces.py:51\nmsgid \"Valladolid\"\nmsgstr \"Valladolid\"\n\n#: es/es_provinces.py:52\nmsgid \"Bizkaia\"\nmsgstr \"Bizkaia\"\n\n#: es/es_provinces.py:53\nmsgid \"Zamora\"\nmsgstr \"Zamora\"\n\n#: es/es_provinces.py:54\nmsgid \"Zaragoza\"\nmsgstr \"Zaragoza\"\n\n#: es/es_provinces.py:55\nmsgid \"Ceuta\"\nmsgstr \"Ceuta\"\n\n#: es/es_provinces.py:56\nmsgid \"Melilla\"\nmsgstr \"Melilla\"\n\n#: es/es_regions.py:5\nmsgid \"Andalusia\"\nmsgstr \"Andalucía\"\n\n#: es/es_regions.py:6\nmsgid \"Aragon\"\nmsgstr \"Aragón\"\n\n#: es/es_regions.py:7\nmsgid \"Principality of Asturias\"\nmsgstr \"Asturias\"\n\n#: es/es_regions.py:8\nmsgid \"Balearic Islands\"\nmsgstr \"Balearane\"\n\n#: es/es_regions.py:9\nmsgid \"Basque Country\"\nmsgstr \"Baskarland\"\n\n#: es/es_regions.py:10\nmsgid \"Canary Islands\"\nmsgstr \"Kanariøyene\"\n\n#: es/es_regions.py:12\nmsgid \"Castile-La Mancha\"\nmsgstr \"Castilla-La Mancha\"\n\n#: es/es_regions.py:13\nmsgid \"Castile and Leon\"\nmsgstr \"Castilla y León\"\n\n#: es/es_regions.py:14\nmsgid \"Catalonia\"\nmsgstr \"Catalonia\"\n\n#: es/es_regions.py:15\nmsgid \"Extremadura\"\nmsgstr \"Extremadura\"\n\n#: es/es_regions.py:16\nmsgid \"Galicia\"\nmsgstr \"Galicia\"\n\n#: es/es_regions.py:19\nmsgid \"Region of Murcia\"\nmsgstr \"Murcia\"\n\n#: es/es_regions.py:20\nmsgid \"Foral Community of Navarre\"\nmsgstr \"Navarra\"\n\n#: es/es_regions.py:21\nmsgid \"Valencian Community\"\nmsgstr \"Valenciana\"\n\n#: es/forms.py:26\nmsgid \"Enter a valid postal code in the range and format 01XXX - 52XXX.\"\nmsgstr \"Oppgje eit gyldig postnummer på forma 01XXX - 52XXX.\"\n\n#: es/forms.py:46\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or \"\n\"9XXXXXXXX.\"\nmsgstr \"\"\n\"Oppgje eit gyldig telefonnummer på eit av følgjande format: 6XXXXXXXX, \"\n\"8XXXXXXXX eller 9XXXXXXXX.\"\n\n#: es/forms.py:73\nmsgid \"Please enter a valid NIF, NIE, or CIF.\"\nmsgstr \"Oppgje eit gyldig NIF, NIE eller CIF.\"\n\n#: es/forms.py:74\nmsgid \"Please enter a valid NIF or NIE.\"\nmsgstr \"Oppgje eit gyldig NIF eller NIE.\"\n\n#: es/forms.py:75\nmsgid \"Invalid checksum for NIF.\"\nmsgstr \"Ugyldig kontrollsum for NIF.\"\n\n#: es/forms.py:76\nmsgid \"Invalid checksum for NIE.\"\nmsgstr \"Ugyldig kontrollsum for NIE.\"\n\n#: es/forms.py:77\nmsgid \"Invalid checksum for CIF.\"\nmsgstr \"Ugyldig kontrollsum for CIF.\"\n\n#: es/forms.py:149\nmsgid \"\"\n\"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.\"\nmsgstr \"Oppgje eit gyldig kontonummer på forma XXXX-XXXX-XX-XXXXXXXXXX.\"\n\n#: es/forms.py:150\nmsgid \"Invalid checksum for bank account number.\"\nmsgstr \"Ugyldig kontrollsum for kontonummer.\"\n\n#: fi/forms.py:33\nmsgid \"Enter a valid Finnish social security number.\"\nmsgstr \"Oppgje eit gyldig finsk personnummer.\"\n\n#: fr/forms.py:35\nmsgid \"Phone numbers must be in 0X XX XX XX XX format.\"\nmsgstr \"Telefonnummeret må vere på forma 0X XX XX XX XX.\"\n\n#: gb/forms.py:25\nmsgid \"Enter a valid postcode.\"\nmsgstr \"Oppgje eit gyldig postnummer.\"\n\n#: gb/gb_regions.py:11\nmsgid \"Bedfordshire\"\nmsgstr \"Bedfordshire\"\n\n#: gb/gb_regions.py:12\nmsgid \"Buckinghamshire\"\nmsgstr \"Buckinghamshire\"\n\n#: gb/gb_regions.py:14\nmsgid \"Cheshire\"\nmsgstr \"Cheshire\"\n\n#: gb/gb_regions.py:15\nmsgid \"Cornwall and Isles of Scilly\"\nmsgstr \"Cornwall\"\n\n#: gb/gb_regions.py:16\nmsgid \"Cumbria\"\nmsgstr \"Cumbria\"\n\n#: gb/gb_regions.py:17\nmsgid \"Derbyshire\"\nmsgstr \"Derbyshire\"\n\n#: gb/gb_regions.py:18\nmsgid \"Devon\"\nmsgstr \"Devon\"\n\n#: gb/gb_regions.py:19\nmsgid \"Dorset\"\nmsgstr \"Dorset\"\n\n#: gb/gb_regions.py:20\nmsgid \"Durham\"\nmsgstr \"Durham\"\n\n#: gb/gb_regions.py:21\nmsgid \"East Sussex\"\nmsgstr \"East Sussex\"\n\n#: gb/gb_regions.py:22\nmsgid \"Essex\"\nmsgstr \"Essex\"\n\n#: gb/gb_regions.py:23\nmsgid \"Gloucestershire\"\nmsgstr \"Gloucestershire\"\n\n#: gb/gb_regions.py:24\nmsgid \"Greater London\"\nmsgstr \"Stor-London\"\n\n#: gb/gb_regions.py:25\nmsgid \"Greater Manchester\"\nmsgstr \"Stor-Manchester\"\n\n#: gb/gb_regions.py:26\nmsgid \"Hampshire\"\nmsgstr \"Hampshire\"\n\n#: gb/gb_regions.py:27\nmsgid \"Hertfordshire\"\nmsgstr \"Hertfordshire\"\n\n#: gb/gb_regions.py:28\nmsgid \"Kent\"\nmsgstr \"Kent\"\n\n#: gb/gb_regions.py:29\nmsgid \"Lancashire\"\nmsgstr \"Lancashire\"\n\n#: gb/gb_regions.py:30\nmsgid \"Leicestershire\"\nmsgstr \"Leicestershire\"\n\n#: gb/gb_regions.py:31\nmsgid \"Lincolnshire\"\nmsgstr \"Lincolnshire\"\n\n#: gb/gb_regions.py:32\nmsgid \"Merseyside\"\nmsgstr \"Merseyside\"\n\n#: gb/gb_regions.py:33\nmsgid \"Norfolk\"\nmsgstr \"Norfolk\"\n\n#: gb/gb_regions.py:34\nmsgid \"North Yorkshire\"\nmsgstr \"North Yorkshire\"\n\n#: gb/gb_regions.py:35\nmsgid \"Northamptonshire\"\nmsgstr \"Northamptonshire\"\n\n#: gb/gb_regions.py:36\nmsgid \"Northumberland\"\nmsgstr \"Northumberland\"\n\n#: gb/gb_regions.py:37\nmsgid \"Nottinghamshire\"\nmsgstr \"Nottinghamshire\"\n\n#: gb/gb_regions.py:38\nmsgid \"Oxfordshire\"\nmsgstr \"Oxfordshire\"\n\n#: gb/gb_regions.py:39\nmsgid \"Shropshire\"\nmsgstr \"Shropshire\"\n\n#: gb/gb_regions.py:40\nmsgid \"Somerset\"\nmsgstr \"Somerset\"\n\n#: gb/gb_regions.py:41\nmsgid \"South Yorkshire\"\nmsgstr \"South Yorkshire\"\n\n#: gb/gb_regions.py:42\nmsgid \"Staffordshire\"\nmsgstr \"Staffordshire\"\n\n#: gb/gb_regions.py:43\nmsgid \"Suffolk\"\nmsgstr \"Suffolk\"\n\n#: gb/gb_regions.py:44\nmsgid \"Surrey\"\nmsgstr \"Surrey\"\n\n#: gb/gb_regions.py:45\nmsgid \"Tyne and Wear\"\nmsgstr \"Tyne and Wear\"\n\n#: gb/gb_regions.py:46\nmsgid \"Warwickshire\"\nmsgstr \"Warwickshire\"\n\n#: gb/gb_regions.py:47\nmsgid \"West Midlands\"\nmsgstr \"West Midlands\"\n\n#: gb/gb_regions.py:48\nmsgid \"West Sussex\"\nmsgstr \"West Sussex\"\n\n#: gb/gb_regions.py:49\nmsgid \"West Yorkshire\"\nmsgstr \"West Yorkshire\"\n\n#: gb/gb_regions.py:50\nmsgid \"Wiltshire\"\nmsgstr \"Wiltshire\"\n\n#: gb/gb_regions.py:51\nmsgid \"Worcestershire\"\nmsgstr \"Worcestershire\"\n\n#: gb/gb_regions.py:55\nmsgid \"County Antrim\"\nmsgstr \"Antrim\"\n\n#: gb/gb_regions.py:56\nmsgid \"County Armagh\"\nmsgstr \"Armagh\"\n\n#: gb/gb_regions.py:57\nmsgid \"County Down\"\nmsgstr \"Down\"\n\n#: gb/gb_regions.py:58\nmsgid \"County Fermanagh\"\nmsgstr \"Fermanagh\"\n\n#: gb/gb_regions.py:59\nmsgid \"County Londonderry\"\nmsgstr \"Londonderry\"\n\n#: gb/gb_regions.py:60\nmsgid \"County Tyrone\"\nmsgstr \"Tyrone\"\n\n#: gb/gb_regions.py:64\nmsgid \"Clwyd\"\nmsgstr \"Clwyd\"\n\n#: gb/gb_regions.py:65\nmsgid \"Dyfed\"\nmsgstr \"Dyfed\"\n\n#: gb/gb_regions.py:66\nmsgid \"Gwent\"\nmsgstr \"Gwent\"\n\n#: gb/gb_regions.py:67\nmsgid \"Gwynedd\"\nmsgstr \"Gwynedd\"\n\n#: gb/gb_regions.py:68\nmsgid \"Mid Glamorgan\"\nmsgstr \"Mid Glamorgan\"\n\n#: gb/gb_regions.py:69\nmsgid \"Powys\"\nmsgstr \"Powys\"\n\n#: gb/gb_regions.py:70\nmsgid \"South Glamorgan\"\nmsgstr \"South Glamorgan\"\n\n#: gb/gb_regions.py:71\nmsgid \"West Glamorgan\"\nmsgstr \"West Glamorgan\"\n\n#: gb/gb_regions.py:75\nmsgid \"Borders\"\nmsgstr \"Borders\"\n\n#: gb/gb_regions.py:76\nmsgid \"Central Scotland\"\nmsgstr \"Central Scotland\"\n\n#: gb/gb_regions.py:77\nmsgid \"Dumfries and Galloway\"\nmsgstr \"Dumfries og Galloway\"\n\n#: gb/gb_regions.py:78\nmsgid \"Fife\"\nmsgstr \"Fife\"\n\n#: gb/gb_regions.py:79\nmsgid \"Grampian\"\nmsgstr \"Grampian\"\n\n#: gb/gb_regions.py:80\nmsgid \"Highland\"\nmsgstr \"Highland\"\n\n#: gb/gb_regions.py:81\nmsgid \"Lothian\"\nmsgstr \"Lothian\"\n\n#: gb/gb_regions.py:82\nmsgid \"Orkney Islands\"\nmsgstr \"Orknøyene\"\n\n#: gb/gb_regions.py:83\nmsgid \"Shetland Islands\"\nmsgstr \"Shetland\"\n\n#: gb/gb_regions.py:84\nmsgid \"Strathclyde\"\nmsgstr \"Strathclyde\"\n\n#: gb/gb_regions.py:85\nmsgid \"Tayside\"\nmsgstr \"Tayside\"\n\n#: gb/gb_regions.py:86\nmsgid \"Western Isles\"\nmsgstr \"Ytre Hebridene\"\n\n#: gb/gb_regions.py:90\nmsgid \"England\"\nmsgstr \"England\"\n\n#: gb/gb_regions.py:91\nmsgid \"Northern Ireland\"\nmsgstr \"Nord-Irland\"\n\n#: gb/gb_regions.py:92\nmsgid \"Scotland\"\nmsgstr \"Skottland\"\n\n#: gb/gb_regions.py:93\nmsgid \"Wales\"\nmsgstr \"Wales\"\n\n#: hk/forms.py:37\n#, python-format\nmsgid \"Phone number should not start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:40\n#, python-format\nmsgid \"Phone number must be in one of the following formats: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:42\n#, python-format\nmsgid \"Phone number should start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hr/forms.py:76\nmsgid \"Enter a valid 13 digit JMBG\"\nmsgstr \"\"\n\n#: hr/forms.py:77\nmsgid \"Error in date segment\"\nmsgstr \"\"\n\n#: hr/forms.py:123\nmsgid \"Enter a valid 11 digit OIB\"\nmsgstr \"\"\n\n#: hr/forms.py:152 id/forms.py:112\nmsgid \"Enter a valid vehicle license plate number\"\nmsgstr \"Oppgje eit gyldig bilnummer.\"\n\n#: hr/forms.py:153\nmsgid \"Enter a valid location code\"\nmsgstr \"\"\n\n#: hr/forms.py:154\nmsgid \"Number part cannot be zero\"\nmsgstr \"\"\n\n#: hr/forms.py:190\nmsgid \"Enter a valid 5 digit postal code\"\nmsgstr \"\"\n\n#: hr/forms.py:218 id/forms.py:72 nl/forms.py:56\nmsgid \"Enter a valid phone number\"\nmsgstr \"Oppgje eit gyldig telefonnummer\"\n\n#: hr/forms.py:219\nmsgid \"Enter a valid area or mobile network code\"\nmsgstr \"\"\n\n#: hr/forms.py:220\nmsgid \"The phone nubmer is too long\"\nmsgstr \"\"\n\n#: hr/forms.py:258\nmsgid \"Enter a valid 19 digit JMBAG starting with 601983\"\nmsgstr \"\"\n\n#: hr/forms.py:259\nmsgid \"Card issue number cannot be zero\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:14\nmsgid \"Grad Zagreb\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:15\nmsgid \"Bjelovarsko-bilogorska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:16\nmsgid \"Brodsko-posavska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:17\nmsgid \"Dubrovačko-neretvanska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:18\nmsgid \"Istarska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:19\nmsgid \"Karlovačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:20\nmsgid \"Koprivničko-križevačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:21\nmsgid \"Krapinsko-zagorska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:22\nmsgid \"Ličko-senjska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:23\nmsgid \"Međimurska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:24\nmsgid \"Osječko-baranjska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:25\nmsgid \"Požeško-slavonska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:26\nmsgid \"Primorsko-goranska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:27\nmsgid \"Sisačko-moslavačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:28\nmsgid \"Splitsko-dalmatinska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:29\nmsgid \"Šibensko-kninska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:30\nmsgid \"Varaždinska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:31\nmsgid \"Virovitičko-podravska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:32\nmsgid \"Vukovarsko-srijemska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:33\nmsgid \"Zadarska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:34\nmsgid \"Zagrebačka županija\"\nmsgstr \"\"\n\n#: id/forms.py:31\nmsgid \"Enter a valid post code\"\nmsgstr \"Oppgje eit gyldig postnummer\"\n\n#: id/forms.py:176\nmsgid \"Enter a valid NIK/KTP number\"\nmsgstr \"Oppgje eit gyldig NIK/KTP-nummer.\"\n\n#: id/id_choices.py:15\nmsgid \"Aceh\"\nmsgstr \"\"\n\n#: id/id_choices.py:16 id/id_choices.py:79\nmsgid \"Bali\"\nmsgstr \"Bali\"\n\n#: id/id_choices.py:17 id/id_choices.py:51\nmsgid \"Banten\"\nmsgstr \"Banten\"\n\n#: id/id_choices.py:18 id/id_choices.py:60\nmsgid \"Bengkulu\"\nmsgstr \"Bengkulu\"\n\n#: id/id_choices.py:19 id/id_choices.py:53\nmsgid \"Yogyakarta\"\nmsgstr \"Yogyakarta\"\n\n#: id/id_choices.py:20 id/id_choices.py:57\nmsgid \"Jakarta\"\nmsgstr \"Jakarta\"\n\n#: id/id_choices.py:21 id/id_choices.py:81\nmsgid \"Gorontalo\"\nmsgstr \"Gorontalo\"\n\n#: id/id_choices.py:22 id/id_choices.py:63\nmsgid \"Jambi\"\nmsgstr \"Jambi\"\n\n#: id/id_choices.py:23\nmsgid \"Jawa Barat\"\nmsgstr \"Jawa Barat\"\n\n#: id/id_choices.py:24\nmsgid \"Jawa Tengah\"\nmsgstr \"Jawa Tengah\"\n\n#: id/id_choices.py:25\nmsgid \"Jawa Timur\"\nmsgstr \"Jawa Timur\"\n\n#: id/id_choices.py:26 id/id_choices.py:94\nmsgid \"Kalimantan Barat\"\nmsgstr \"Kalimantan Barat\"\n\n#: id/id_choices.py:27 id/id_choices.py:72\nmsgid \"Kalimantan Selatan\"\nmsgstr \"Kalimantan Selatan\"\n\n#: id/id_choices.py:28 id/id_choices.py:95\nmsgid \"Kalimantan Tengah\"\nmsgstr \"Kalimantan Tengah\"\n\n#: id/id_choices.py:29 id/id_choices.py:96\nmsgid \"Kalimantan Timur\"\nmsgstr \"Kalimantan Timur\"\n\n#: id/id_choices.py:30\nmsgid \"Kepulauan Bangka-Belitung\"\nmsgstr \"Kepulauan Bangka-Belitung\"\n\n#: id/id_choices.py:31 id/id_choices.py:68\nmsgid \"Kepulauan Riau\"\nmsgstr \"Kepulauan Riau\"\n\n#: id/id_choices.py:32 id/id_choices.py:61\nmsgid \"Lampung\"\nmsgstr \"Lampung\"\n\n#: id/id_choices.py:33 id/id_choices.py:76\nmsgid \"Maluku\"\nmsgstr \"Maluku\"\n\n#: id/id_choices.py:34 id/id_choices.py:77\nmsgid \"Maluku Utara\"\nmsgstr \"Maluku Utara\"\n\n#: id/id_choices.py:35\nmsgid \"Nusa Tenggara Barat\"\nmsgstr \"Nusa Tenggara Barat\"\n\n#: id/id_choices.py:36\nmsgid \"Nusa Tenggara Timur\"\nmsgstr \"Nusa Tenggara Timur\"\n\n#: id/id_choices.py:37\nmsgid \"Papua\"\nmsgstr \"Papua\"\n\n#: id/id_choices.py:38\nmsgid \"Papua Barat\"\nmsgstr \"Papua Barat\"\n\n#: id/id_choices.py:39 id/id_choices.py:66\nmsgid \"Riau\"\nmsgstr \"Riau\"\n\n#: id/id_choices.py:40 id/id_choices.py:74\nmsgid \"Sulawesi Barat\"\nmsgstr \"Sulawesi Barat\"\n\n#: id/id_choices.py:41 id/id_choices.py:75\nmsgid \"Sulawesi Selatan\"\nmsgstr \"Sulawesi Selatan\"\n\n#: id/id_choices.py:42 id/id_choices.py:82\nmsgid \"Sulawesi Tengah\"\nmsgstr \"Sulawesi Tengah\"\n\n#: id/id_choices.py:43 id/id_choices.py:85\nmsgid \"Sulawesi Tenggara\"\nmsgstr \"Sulawesi Tenggara\"\n\n#: id/id_choices.py:44\nmsgid \"Sulawesi Utara\"\nmsgstr \"Sulawesi Utara\"\n\n#: id/id_choices.py:45 id/id_choices.py:58\nmsgid \"Sumatera Barat\"\nmsgstr \"Sumatera Barat\"\n\n#: id/id_choices.py:46 id/id_choices.py:62\nmsgid \"Sumatera Selatan\"\nmsgstr \"Sumatera Selatan\"\n\n#: id/id_choices.py:47 id/id_choices.py:64\nmsgid \"Sumatera Utara\"\nmsgstr \"Sumatera Utara\"\n\n#: id/id_choices.py:52\nmsgid \"Magelang\"\nmsgstr \"Magelang\"\n\n#: id/id_choices.py:54\nmsgid \"Surakarta - Solo\"\nmsgstr \"Surakarta - Solo\"\n\n#: id/id_choices.py:55\nmsgid \"Madiun\"\nmsgstr \"Madium\"\n\n#: id/id_choices.py:56\nmsgid \"Kediri\"\nmsgstr \"Kediri\"\n\n#: id/id_choices.py:59\nmsgid \"Tapanuli\"\nmsgstr \"Tapanuli\"\n\n#: id/id_choices.py:65\nmsgid \"Nanggroe Aceh Darussalam\"\nmsgstr \"Nanggroe Aceh Darussalam\"\n\n#: id/id_choices.py:67\nmsgid \"Kepulauan Bangka Belitung\"\nmsgstr \"Kepulauan Bangka Belitung\"\n\n#: id/id_choices.py:69\nmsgid \"Corps Consulate\"\nmsgstr \"Corps Consulate\"\n\n#: id/id_choices.py:70\nmsgid \"Corps Diplomatic\"\nmsgstr \"Corps Diplomatic\"\n\n#: id/id_choices.py:71\nmsgid \"Bandung\"\nmsgstr \"Bandung\"\n\n#: id/id_choices.py:73\nmsgid \"Sulawesi Utara Daratan\"\nmsgstr \"Sulawesi Utara Daratan\"\n\n#: id/id_choices.py:78\nmsgid \"NTT - Timor\"\nmsgstr \"NTT - Timor\"\n\n#: id/id_choices.py:80\nmsgid \"Sulawesi Utara Kepulauan\"\nmsgstr \"Sulawesi Utara Kepulauan\"\n\n#: id/id_choices.py:83\nmsgid \"NTB - Lombok\"\nmsgstr \"NTB - Lombok\"\n\n#: id/id_choices.py:84\nmsgid \"Papua dan Papua Barat\"\nmsgstr \"Papua dan Papua Barat\"\n\n#: id/id_choices.py:86\nmsgid \"Cirebon\"\nmsgstr \"Cirebon\"\n\n#: id/id_choices.py:87\nmsgid \"NTB - Sumbawa\"\nmsgstr \"NTB - Sumbawa\"\n\n#: id/id_choices.py:88\nmsgid \"NTT - Flores\"\nmsgstr \"NTT - Flores\"\n\n#: id/id_choices.py:89\nmsgid \"NTT - Sumba\"\nmsgstr \"NTT - Sumba\"\n\n#: id/id_choices.py:90\nmsgid \"Bogor\"\nmsgstr \"Bogor\"\n\n#: id/id_choices.py:91\nmsgid \"Pekalongan\"\nmsgstr \"Pekalongan\"\n\n#: id/id_choices.py:92\nmsgid \"Semarang\"\nmsgstr \"Semarang\"\n\n#: id/id_choices.py:93\nmsgid \"Pati\"\nmsgstr \"Pati\"\n\n#: id/id_choices.py:97\nmsgid \"Surabaya\"\nmsgstr \"Surabaya\"\n\n#: id/id_choices.py:98\nmsgid \"Madura\"\nmsgstr \"Madura\"\n\n#: id/id_choices.py:99\nmsgid \"Malang\"\nmsgstr \"Malang\"\n\n#: id/id_choices.py:100\nmsgid \"Jember\"\nmsgstr \"Jember\"\n\n#: id/id_choices.py:101\nmsgid \"Banyumas\"\nmsgstr \"Banyumas\"\n\n#: id/id_choices.py:102\nmsgid \"Federal Government\"\nmsgstr \"Federal Government\"\n\n#: id/id_choices.py:103\nmsgid \"Bojonegoro\"\nmsgstr \"Bojonegoro\"\n\n#: id/id_choices.py:104\nmsgid \"Purwakarta\"\nmsgstr \"Purwakarta\"\n\n#: id/id_choices.py:105\nmsgid \"Sidoarjo\"\nmsgstr \"Sidoarjo\"\n\n#: id/id_choices.py:106\nmsgid \"Garut\"\nmsgstr \"Garut\"\n\n#: ie/ie_counties.py:8\nmsgid \"Antrim\"\nmsgstr \"Antrim\"\n\n#: ie/ie_counties.py:9\nmsgid \"Armagh\"\nmsgstr \"Armagh\"\n\n#: ie/ie_counties.py:10\nmsgid \"Carlow\"\nmsgstr \"Carlow\"\n\n#: ie/ie_counties.py:11\nmsgid \"Cavan\"\nmsgstr \"Cavan\"\n\n#: ie/ie_counties.py:12\nmsgid \"Clare\"\nmsgstr \"Clare\"\n\n#: ie/ie_counties.py:13\nmsgid \"Cork\"\nmsgstr \"Cork\"\n\n#: ie/ie_counties.py:14\nmsgid \"Derry\"\nmsgstr \"Derry\"\n\n#: ie/ie_counties.py:15\nmsgid \"Donegal\"\nmsgstr \"Donegal\"\n\n#: ie/ie_counties.py:16\nmsgid \"Down\"\nmsgstr \"Down\"\n\n#: ie/ie_counties.py:17\nmsgid \"Dublin\"\nmsgstr \"Dublin\"\n\n#: ie/ie_counties.py:18\nmsgid \"Fermanagh\"\nmsgstr \"Fermanagh\"\n\n#: ie/ie_counties.py:19\nmsgid \"Galway\"\nmsgstr \"Galway\"\n\n#: ie/ie_counties.py:20\nmsgid \"Kerry\"\nmsgstr \"Kerry\"\n\n#: ie/ie_counties.py:21\nmsgid \"Kildare\"\nmsgstr \"Kildare\"\n\n#: ie/ie_counties.py:22\nmsgid \"Kilkenny\"\nmsgstr \"Kilkenny\"\n\n#: ie/ie_counties.py:23\nmsgid \"Laois\"\nmsgstr \"Laois\"\n\n#: ie/ie_counties.py:24\nmsgid \"Leitrim\"\nmsgstr \"Leitrim\"\n\n#: ie/ie_counties.py:25\nmsgid \"Limerick\"\nmsgstr \"Limerick\"\n\n#: ie/ie_counties.py:26\nmsgid \"Longford\"\nmsgstr \"Longford\"\n\n#: ie/ie_counties.py:27\nmsgid \"Louth\"\nmsgstr \"Louth\"\n\n#: ie/ie_counties.py:28\nmsgid \"Mayo\"\nmsgstr \"Mayo\"\n\n#: ie/ie_counties.py:29\nmsgid \"Meath\"\nmsgstr \"Meath\"\n\n#: ie/ie_counties.py:30\nmsgid \"Monaghan\"\nmsgstr \"Monaghan\"\n\n#: ie/ie_counties.py:31\nmsgid \"Offaly\"\nmsgstr \"Offaly\"\n\n#: ie/ie_counties.py:32\nmsgid \"Roscommon\"\nmsgstr \"Roscommon\"\n\n#: ie/ie_counties.py:33\nmsgid \"Sligo\"\nmsgstr \"Sligo\"\n\n#: ie/ie_counties.py:34\nmsgid \"Tipperary\"\nmsgstr \"Tipperary\"\n\n#: ie/ie_counties.py:35\nmsgid \"Tyrone\"\nmsgstr \"Tyrone\"\n\n#: ie/ie_counties.py:36\nmsgid \"Waterford\"\nmsgstr \"Waterford\"\n\n#: ie/ie_counties.py:37\nmsgid \"Westmeath\"\nmsgstr \"Westmeath\"\n\n#: ie/ie_counties.py:38\nmsgid \"Wexford\"\nmsgstr \"Wexford\"\n\n#: ie/ie_counties.py:39\nmsgid \"Wicklow\"\nmsgstr \"Wicklow\"\n\n#: il/forms.py:32\nmsgid \"Enter a postal code in the format XXXXX\"\nmsgstr \"\"\n\n#: il/forms.py:51\nmsgid \"Enter a valid ID number.\"\nmsgstr \"\"\n\n#: in_/forms.py:41\nmsgid \"Enter a zip code in the format XXXXXX or XXX XXX.\"\nmsgstr \"\"\n\n#: in_/forms.py:64\nmsgid \"Enter an Indian state or territory.\"\nmsgstr \"\"\n\n#: in_/forms.py:103\nmsgid \"Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.\"\nmsgstr \"\"\n\n#: is_/forms.py:22\nmsgid \"\"\n\"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.\"\nmsgstr \"Oppgje eit gyldig islandsk identifikasjonsnummer på forma XXXXXX-XXXX.\"\n\n#: is_/forms.py:23\nmsgid \"The Icelandic identification number is not valid.\"\nmsgstr \"Det islandske identifikasjonsnummeret er ugyldig.\"\n\n#: it/forms.py:21\nmsgid \"Enter a valid zip code.\"\nmsgstr \"Oppgje eit gyldig postnummer.\"\n\n#: it/forms.py:48\nmsgid \"Enter a valid Social Security number.\"\nmsgstr \"Oppgje eit gyldig italiensk personnummer.\"\n\n#: it/forms.py:73\nmsgid \"Enter a valid VAT number.\"\nmsgstr \"Oppgje eit gyldig VAT-nummer.\"\n\n#: jp/forms.py:19\nmsgid \"Enter a postal code in the format XXXXXXX or XXX-XXXX.\"\nmsgstr \"Oppgje eit postnummer på forma XXXXXXX eller XXX-XXXX.\"\n\n#: jp/jp_prefectures.py:4\nmsgid \"Hokkaido\"\nmsgstr \"Hokkaido\"\n\n#: jp/jp_prefectures.py:5\nmsgid \"Aomori\"\nmsgstr \"Aomori\"\n\n#: jp/jp_prefectures.py:6\nmsgid \"Iwate\"\nmsgstr \"Iwate\"\n\n#: jp/jp_prefectures.py:7\nmsgid \"Miyagi\"\nmsgstr \"Miyagi\"\n\n#: jp/jp_prefectures.py:8\nmsgid \"Akita\"\nmsgstr \"Akita\"\n\n#: jp/jp_prefectures.py:9\nmsgid \"Yamagata\"\nmsgstr \"Yamagata\"\n\n#: jp/jp_prefectures.py:10\nmsgid \"Fukushima\"\nmsgstr \"Fukushima\"\n\n#: jp/jp_prefectures.py:11\nmsgid \"Ibaraki\"\nmsgstr \"Ibaraki\"\n\n#: jp/jp_prefectures.py:12\nmsgid \"Tochigi\"\nmsgstr \"Tochigi\"\n\n#: jp/jp_prefectures.py:13\nmsgid \"Gunma\"\nmsgstr \"Gunma\"\n\n#: jp/jp_prefectures.py:14\nmsgid \"Saitama\"\nmsgstr \"Saitama\"\n\n#: jp/jp_prefectures.py:15\nmsgid \"Chiba\"\nmsgstr \"Chiba\"\n\n#: jp/jp_prefectures.py:16\nmsgid \"Tokyo\"\nmsgstr \"Tokyo\"\n\n#: jp/jp_prefectures.py:17\nmsgid \"Kanagawa\"\nmsgstr \"Kanagawa\"\n\n#: jp/jp_prefectures.py:18\nmsgid \"Yamanashi\"\nmsgstr \"Yamanashi\"\n\n#: jp/jp_prefectures.py:19\nmsgid \"Nagano\"\nmsgstr \"Nagano\"\n\n#: jp/jp_prefectures.py:20\nmsgid \"Niigata\"\nmsgstr \"Niigata\"\n\n#: jp/jp_prefectures.py:21\nmsgid \"Toyama\"\nmsgstr \"Toyama\"\n\n#: jp/jp_prefectures.py:22\nmsgid \"Ishikawa\"\nmsgstr \"Ishikawa\"\n\n#: jp/jp_prefectures.py:23\nmsgid \"Fukui\"\nmsgstr \"Fukui\"\n\n#: jp/jp_prefectures.py:24\nmsgid \"Gifu\"\nmsgstr \"Gifu\"\n\n#: jp/jp_prefectures.py:25\nmsgid \"Shizuoka\"\nmsgstr \"Shizuoka\"\n\n#: jp/jp_prefectures.py:26\nmsgid \"Aichi\"\nmsgstr \"Aichi\"\n\n#: jp/jp_prefectures.py:27\nmsgid \"Mie\"\nmsgstr \"Mie\"\n\n#: jp/jp_prefectures.py:28\nmsgid \"Shiga\"\nmsgstr \"Shiga\"\n\n#: jp/jp_prefectures.py:29\nmsgid \"Kyoto\"\nmsgstr \"Kyoto\"\n\n#: jp/jp_prefectures.py:30\nmsgid \"Osaka\"\nmsgstr \"Osaka\"\n\n#: jp/jp_prefectures.py:31\nmsgid \"Hyogo\"\nmsgstr \"Hyogo\"\n\n#: jp/jp_prefectures.py:32\nmsgid \"Nara\"\nmsgstr \"Nara\"\n\n#: jp/jp_prefectures.py:33\nmsgid \"Wakayama\"\nmsgstr \"Wakayama\"\n\n#: jp/jp_prefectures.py:34\nmsgid \"Tottori\"\nmsgstr \"Tottori\"\n\n#: jp/jp_prefectures.py:35\nmsgid \"Shimane\"\nmsgstr \"Shimane\"\n\n#: jp/jp_prefectures.py:36\nmsgid \"Okayama\"\nmsgstr \"Okayama\"\n\n#: jp/jp_prefectures.py:37\nmsgid \"Hiroshima\"\nmsgstr \"Hiroshima\"\n\n#: jp/jp_prefectures.py:38\nmsgid \"Yamaguchi\"\nmsgstr \"Yamaguchi\"\n\n#: jp/jp_prefectures.py:39\nmsgid \"Tokushima\"\nmsgstr \"Tokushima\"\n\n#: jp/jp_prefectures.py:40\nmsgid \"Kagawa\"\nmsgstr \"Kagawa\"\n\n#: jp/jp_prefectures.py:41\nmsgid \"Ehime\"\nmsgstr \"Ehime\"\n\n#: jp/jp_prefectures.py:42\nmsgid \"Kochi\"\nmsgstr \"Kochi\"\n\n#: jp/jp_prefectures.py:43\nmsgid \"Fukuoka\"\nmsgstr \"Fukuoka\"\n\n#: jp/jp_prefectures.py:44\nmsgid \"Saga\"\nmsgstr \"Saga\"\n\n#: jp/jp_prefectures.py:45\nmsgid \"Nagasaki\"\nmsgstr \"Nagasaki\"\n\n#: jp/jp_prefectures.py:46\nmsgid \"Kumamoto\"\nmsgstr \"Kumamoto\"\n\n#: jp/jp_prefectures.py:47\nmsgid \"Oita\"\nmsgstr \"Oita\"\n\n#: jp/jp_prefectures.py:48\nmsgid \"Miyazaki\"\nmsgstr \"Miyazaki\"\n\n#: jp/jp_prefectures.py:49\nmsgid \"Kagoshima\"\nmsgstr \"Kagoshima\"\n\n#: jp/jp_prefectures.py:50\nmsgid \"Okinawa\"\nmsgstr \"Okinawa\"\n\n#: kw/forms.py:27\nmsgid \"Enter a valid Kuwaiti Civil ID number\"\nmsgstr \"Oppgje eit gyldig kuwaitisk ID-nummer.\"\n\n#: mk/forms.py:18\nmsgid \"\"\n\"Identity card numbers must contain either 4 to 7 digits or an uppercase \"\n\"letter and 7 digits.\"\nmsgstr \"\"\n\n#: mk/forms.py:57 si/forms.py:24\nmsgid \"This field should contain exactly 13 digits.\"\nmsgstr \"\"\n\n#: mk/forms.py:58\nmsgid \"The first 7 digits of the UMCN must represent a valid past date.\"\nmsgstr \"\"\n\n#: mk/forms.py:59\nmsgid \"The UMCN is not valid.\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:10\nmsgid \"Aerodrom\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:11\nmsgid \"Aračinovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:12\nmsgid \"Berovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:13\nmsgid \"Bitola\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:14\nmsgid \"Bogdanci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:15\nmsgid \"Bogovinje\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:16\nmsgid \"Bosilovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:17\nmsgid \"Brvenica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:18\nmsgid \"Butel\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:19\nmsgid \"Valandovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:20\nmsgid \"Vasilevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:21\nmsgid \"Vevčani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:22\nmsgid \"Veles\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:23\nmsgid \"Vinica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:24\nmsgid \"Vraneštica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:25\nmsgid \"Vrapčište\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:26\nmsgid \"Gazi Baba\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:27\nmsgid \"Gevgelija\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:28\nmsgid \"Gostivar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:29\nmsgid \"Gradsko\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:30\nmsgid \"Debar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:31\nmsgid \"Debarca\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:32\nmsgid \"Delčevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:33\nmsgid \"Demir Kapija\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:34\nmsgid \"Demir Hisar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:35\nmsgid \"Dolneni\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:36\nmsgid \"Drugovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:37\nmsgid \"Gjorče Petrov\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:38\nmsgid \"Želino\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:39\nmsgid \"Zajas\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:40\nmsgid \"Zelenikovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:41\nmsgid \"Zrnovci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:42\nmsgid \"Ilinden\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:43\nmsgid \"Jegunovce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:44\nmsgid \"Kavadarci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:45\nmsgid \"Karbinci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:46\nmsgid \"Karpoš\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:47\nmsgid \"Kisela Voda\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:48\nmsgid \"Kičevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:49\nmsgid \"Konče\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:50\nmsgid \"Koćani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:51\nmsgid \"Kratovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:52\nmsgid \"Kriva Palanka\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:53\nmsgid \"Krivogaštani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:54\nmsgid \"Kruševo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:55\nmsgid \"Kumanovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:56\nmsgid \"Lipkovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:57\nmsgid \"Lozovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:58\nmsgid \"Mavrovo i Rostuša\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:59\nmsgid \"Makedonska Kamenica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:60\nmsgid \"Makedonski Brod\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:61\nmsgid \"Mogila\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:62\nmsgid \"Negotino\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:63\nmsgid \"Novaci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:64\nmsgid \"Novo Selo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:65\nmsgid \"Oslomej\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:66\nmsgid \"Ohrid\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:67\nmsgid \"Petrovec\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:68\nmsgid \"Pehčevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:69\nmsgid \"Plasnica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:70\nmsgid \"Prilep\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:71\nmsgid \"Probištip\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:72\nmsgid \"Radoviš\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:73\nmsgid \"Rankovce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:74\nmsgid \"Resen\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:75\nmsgid \"Rosoman\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:76\nmsgid \"Saraj\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:77\nmsgid \"Sveti Nikole\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:78\nmsgid \"Sopište\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:79\nmsgid \"Star Dojran\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:80\nmsgid \"Staro Nagoričane\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:81\nmsgid \"Struga\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:82\nmsgid \"Strumica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:83\nmsgid \"Studeničani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:84\nmsgid \"Tearce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:85\nmsgid \"Tetovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:86\nmsgid \"Centar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:87\nmsgid \"Centar-Župa\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:88\nmsgid \"Čair\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:89\nmsgid \"Čaška\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:90\nmsgid \"Češinovo-Obleševo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:91\nmsgid \"Čučer-Sandevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:92\nmsgid \"Štip\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:93\nmsgid \"Šuto Orizari\"\nmsgstr \"\"\n\n#: mk/models.py:11\nmsgid \"Macedonian identity card number\"\nmsgstr \"\"\n\n#: mk/models.py:25\nmsgid \"A Macedonian municipality (2 character code)\"\nmsgstr \"\"\n\n#: mk/models.py:35\nmsgid \"Unique master citizen number (13 digits)\"\nmsgstr \"\"\n\n#: mx/forms.py:67\nmsgid \"Enter a valid zip code in the format XXXXX.\"\nmsgstr \"\"\n\n#: mx/forms.py:110\nmsgid \"Enter a valid RFC.\"\nmsgstr \"\"\n\n#: mx/forms.py:111\nmsgid \"Invalid checksum for RFC.\"\nmsgstr \"\"\n\n#: mx/forms.py:191\nmsgid \"Enter a valid CURP.\"\nmsgstr \"\"\n\n#: mx/forms.py:192\nmsgid \"Invalid checksum for CURP.\"\nmsgstr \"\"\n\n#: mx/models.py:14\nmsgid \"Mexico state (three uppercase letters)\"\nmsgstr \"\"\n\n#: mx/models.py:27\nmsgid \"Mexico zip code\"\nmsgstr \"\"\n\n#: mx/models.py:44\nmsgid \"Mexican RFC\"\nmsgstr \"\"\n\n#: mx/models.py:61\nmsgid \"Mexican CURP\"\nmsgstr \"\"\n\n#: mx/mx_states.py:14\nmsgid \"Aguascalientes\"\nmsgstr \"Aguascalientes\"\n\n#: mx/mx_states.py:15\nmsgid \"Baja California\"\nmsgstr \"Baja California\"\n\n#: mx/mx_states.py:16\nmsgid \"Baja California Sur\"\nmsgstr \"Baja California Sur\"\n\n#: mx/mx_states.py:17\nmsgid \"Campeche\"\nmsgstr \"Campeche\"\n\n#: mx/mx_states.py:18\nmsgid \"Chihuahua\"\nmsgstr \"Chihuahua\"\n\n#: mx/mx_states.py:19\nmsgid \"Chiapas\"\nmsgstr \"Chiapas\"\n\n#: mx/mx_states.py:20\nmsgid \"Coahuila\"\nmsgstr \"Coahuila\"\n\n#: mx/mx_states.py:21\nmsgid \"Colima\"\nmsgstr \"Colima\"\n\n#: mx/mx_states.py:22\nmsgid \"Distrito Federal\"\nmsgstr \"Distrito Federal\"\n\n#: mx/mx_states.py:23\nmsgid \"Durango\"\nmsgstr \"Durango\"\n\n#: mx/mx_states.py:24\nmsgid \"Guerrero\"\nmsgstr \"Guerrero\"\n\n#: mx/mx_states.py:25\nmsgid \"Guanajuato\"\nmsgstr \"Guanajuato\"\n\n#: mx/mx_states.py:26\nmsgid \"Hidalgo\"\nmsgstr \"Hidalgo\"\n\n#: mx/mx_states.py:27\nmsgid \"Jalisco\"\nmsgstr \"Jalisco\"\n\n#: mx/mx_states.py:28\nmsgid \"Estado de México\"\nmsgstr \"Estado de México\"\n\n#: mx/mx_states.py:29\nmsgid \"Michoacán\"\nmsgstr \"Michoacán\"\n\n#: mx/mx_states.py:30\nmsgid \"Morelos\"\nmsgstr \"Morelos\"\n\n#: mx/mx_states.py:31\nmsgid \"Nayarit\"\nmsgstr \"Nayarit\"\n\n#: mx/mx_states.py:32\nmsgid \"Nuevo León\"\nmsgstr \"Nuevo León\"\n\n#: mx/mx_states.py:33\nmsgid \"Oaxaca\"\nmsgstr \"Oaxaca\"\n\n#: mx/mx_states.py:34\nmsgid \"Puebla\"\nmsgstr \"Puebla\"\n\n#: mx/mx_states.py:35\nmsgid \"Querétaro\"\nmsgstr \"Querétaro\"\n\n#: mx/mx_states.py:36\nmsgid \"Quintana Roo\"\nmsgstr \"Quintana Roo\"\n\n#: mx/mx_states.py:37\nmsgid \"Sinaloa\"\nmsgstr \"Sinaloa\"\n\n#: mx/mx_states.py:38\nmsgid \"San Luis Potosí\"\nmsgstr \"San Luis Potosí\"\n\n#: mx/mx_states.py:39\nmsgid \"Sonora\"\nmsgstr \"Sonora\"\n\n#: mx/mx_states.py:40\nmsgid \"Tabasco\"\nmsgstr \"Tabasco\"\n\n#: mx/mx_states.py:41\nmsgid \"Tamaulipas\"\nmsgstr \"Tamaulipas\"\n\n#: mx/mx_states.py:42\nmsgid \"Tlaxcala\"\nmsgstr \"Tlaxcala\"\n\n#: mx/mx_states.py:43\nmsgid \"Veracruz\"\nmsgstr \"Veracruz\"\n\n#: mx/mx_states.py:44\nmsgid \"Yucatán\"\nmsgstr \"Yucatán\"\n\n#: mx/mx_states.py:45\nmsgid \"Zacatecas\"\nmsgstr \"Zacatecas\"\n\n#: nl/forms.py:26\nmsgid \"Enter a valid postal code\"\nmsgstr \"Oppgje eit gyldig postnummer.\"\n\n#: nl/forms.py:82\nmsgid \"Enter a valid SoFi number\"\nmsgstr \"Oppgje eit gyldig SoFi-nummer.\"\n\n#: nl/nl_provinces.py:4\nmsgid \"Drenthe\"\nmsgstr \"Drenthe\"\n\n#: nl/nl_provinces.py:5\nmsgid \"Flevoland\"\nmsgstr \"Flevoland\"\n\n#: nl/nl_provinces.py:6\nmsgid \"Friesland\"\nmsgstr \"Friesland\"\n\n#: nl/nl_provinces.py:7\nmsgid \"Gelderland\"\nmsgstr \"Gelderland\"\n\n#: nl/nl_provinces.py:8\nmsgid \"Groningen\"\nmsgstr \"Groningen\"\n\n#: nl/nl_provinces.py:10\nmsgid \"Noord-Brabant\"\nmsgstr \"Noord-Brabant\"\n\n#: nl/nl_provinces.py:11\nmsgid \"Noord-Holland\"\nmsgstr \"Noord-Holland\"\n\n#: nl/nl_provinces.py:12\nmsgid \"Overijssel\"\nmsgstr \"Overijssel\"\n\n#: nl/nl_provinces.py:13\nmsgid \"Utrecht\"\nmsgstr \"Utrecht\"\n\n#: nl/nl_provinces.py:14\nmsgid \"Zeeland\"\nmsgstr \"Zeeland\"\n\n#: nl/nl_provinces.py:15\nmsgid \"Zuid-Holland\"\nmsgstr \"Zuid-Holland\"\n\n#: no/forms.py:39\nmsgid \"Enter a valid Norwegian social security number.\"\nmsgstr \"Oppgje eit gyldig norsk personnummer.\"\n\n#: pe/forms.py:28\nmsgid \"This field requires 8 digits.\"\nmsgstr \"Feltet krevar åtte siffer.\"\n\n#: pe/forms.py:56\nmsgid \"This field requires 11 digits.\"\nmsgstr \"Feltet krevar 11 siffer.\"\n\n#: pl/forms.py:42\nmsgid \"National Identification Number consists of 11 digits.\"\nmsgstr \"National Identification Number består av 11 siffer.\"\n\n#: pl/forms.py:43\nmsgid \"Wrong checksum for the National Identification Number.\"\nmsgstr \"Feil kontrollsum for National Identification Number.\"\n\n#: pl/forms.py:79\nmsgid \"National ID Card Number consists of 3 letters and 6 digits.\"\nmsgstr \"\"\n\n#: pl/forms.py:80\nmsgid \"Wrong checksum for the National ID Card Number.\"\nmsgstr \"\"\n\n#: pl/forms.py:131\nmsgid \"\"\n\"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or \"\n\"XXXXXXXXXX.\"\nmsgstr \"\"\n\n#: pl/forms.py:132\nmsgid \"Wrong checksum for the Tax Number (NIP).\"\nmsgstr \"Ugyldig kontrollsum for NIP.\"\n\n#: pl/forms.py:171\nmsgid \"National Business Register Number (REGON) consists of 9 or 14 digits.\"\nmsgstr \"National Business Register Number (REGON) består av 9 eller 14 siffer.\"\n\n#: pl/forms.py:172\nmsgid \"Wrong checksum for the National Business Register Number (REGON).\"\nmsgstr \"Ugyldig kontrollsum for National Business Register Number (REGON).\"\n\n#: pl/forms.py:212\nmsgid \"Enter a postal code in the format XX-XXX.\"\nmsgstr \"Oppgje eit postnummer på forma XX-XXX.\"\n\n#: pl/pl_voivodeships.py:8\nmsgid \"Lower Silesia\"\nmsgstr \"Lower Silesia\"\n\n#: pl/pl_voivodeships.py:9\nmsgid \"Kuyavia-Pomerania\"\nmsgstr \"Kuyavia-Pomerania\"\n\n#: pl/pl_voivodeships.py:10\nmsgid \"Lublin\"\nmsgstr \"Lublin\"\n\n#: pl/pl_voivodeships.py:11\nmsgid \"Lubusz\"\nmsgstr \"Lubusz\"\n\n#: pl/pl_voivodeships.py:12\nmsgid \"Lodz\"\nmsgstr \"Lodz\"\n\n#: pl/pl_voivodeships.py:13\nmsgid \"Lesser Poland\"\nmsgstr \"Lesser Poland\"\n\n#: pl/pl_voivodeships.py:14\nmsgid \"Masovia\"\nmsgstr \"Masovia\"\n\n#: pl/pl_voivodeships.py:15\nmsgid \"Opole\"\nmsgstr \"Opole\"\n\n#: pl/pl_voivodeships.py:16\nmsgid \"Subcarpatia\"\nmsgstr \"Subcarpatia\"\n\n#: pl/pl_voivodeships.py:17\nmsgid \"Podlasie\"\nmsgstr \"Podlasie\"\n\n#: pl/pl_voivodeships.py:18\nmsgid \"Pomerania\"\nmsgstr \"Pomerania\"\n\n#: pl/pl_voivodeships.py:19\nmsgid \"Silesia\"\nmsgstr \"Silesia\"\n\n#: pl/pl_voivodeships.py:20\nmsgid \"Swietokrzyskie\"\nmsgstr \"Swietokrzyskie\"\n\n#: pl/pl_voivodeships.py:21\nmsgid \"Warmia-Masuria\"\nmsgstr \"Warmia-Masuria\"\n\n#: pl/pl_voivodeships.py:22\nmsgid \"Greater Poland\"\nmsgstr \"Greater Poland\"\n\n#: pl/pl_voivodeships.py:23\nmsgid \"West Pomerania\"\nmsgstr \"West Pomerania\"\n\n#: pt/forms.py:19\nmsgid \"Enter a zip code in the format XXXX-XXX.\"\nmsgstr \"Oppgje eit postnummer på forma XXXXX-XXX.\"\n\n#: pt/forms.py:39\nmsgid \"Phone numbers must have 9 digits, or start by + or 00.\"\nmsgstr \"\"\n\n#: ro/forms.py:22\nmsgid \"Enter a valid CIF.\"\nmsgstr \"Oppgje eit gyldig CIF.\"\n\n#: ro/forms.py:59\nmsgid \"Enter a valid CNP.\"\nmsgstr \"Oppgje eit gyldig CNP.\"\n\n#: ro/forms.py:143\nmsgid \"Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format\"\nmsgstr \"Oppgje eit gyldig IBAN på forma ROXX-XXXX-XXXX-XXXX-XXXX-XXXX.\"\n\n#: ro/forms.py:175\nmsgid \"Phone numbers must be in XXXX-XXXXXX format.\"\nmsgstr \"Telefonnummeret må vere på forma XXXX-XXXXXX.\"\n\n#: ro/forms.py:200\nmsgid \"Enter a valid postal code in the format XXXXXX\"\nmsgstr \"Oppgje eit postnummer på forma XXXXXX.\"\n\n#: ru/forms.py:37\nmsgid \"Enter a postal code in the format XXXXXX.\"\nmsgstr \"\"\n\n#: ru/forms.py:50\nmsgid \"Enter a passport number in the format XXXX XXXXXX.\"\nmsgstr \"\"\n\n#: ru/forms.py:63\nmsgid \"Enter a passport number in the format XX XXXXXXX.\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:10\nmsgid \"Central Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:11\nmsgid \"South Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:12\nmsgid \"North-West Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:13\nmsgid \"Far-East Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:14\nmsgid \"Siberian Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:15\nmsgid \"Ural Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:16\nmsgid \"Privolzhsky Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:17\nmsgid \"North-Caucasian Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:21\nmsgid \"Moskva\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:22\nmsgid \"Saint-Peterburg\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:23\nmsgid \"Moskovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:24\nmsgid \"Adygeya, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:25\nmsgid \"Bashkortostan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:26\nmsgid \"Buryatia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:27\nmsgid \"Altay, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:28\nmsgid \"Dagestan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:29\nmsgid \"Ingushskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:30\nmsgid \"Kabardino-Balkarskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:31\nmsgid \"Kalmykia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:32\nmsgid \"Karachaevo-Cherkesskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:33\nmsgid \"Karelia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:34\nmsgid \"Komi, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:35\nmsgid \"Mariy Ehl, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:36\nmsgid \"Mordovia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:37\nmsgid \"Sakha, Respublika (Yakutiya)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:38\nmsgid \"Severnaya Osetia, Respublika (Alania)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:39\nmsgid \"Tatarstan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:40\nmsgid \"Tyva, Respublika (Tuva)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:41\nmsgid \"Udmurtskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:42\nmsgid \"Khakassiya, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:43\nmsgid \"Chechenskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:44\nmsgid \"Chuvashskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:45\nmsgid \"Altayskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:46\nmsgid \"Zabaykalskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:47\nmsgid \"Kamchatskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:48\nmsgid \"Krasnodarskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:49\nmsgid \"Krasnoyarskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:50\nmsgid \"Permskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:51\nmsgid \"Primorskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:52\nmsgid \"Stavropol'siyy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:53\nmsgid \"Khabarovskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:54\nmsgid \"Amurskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:55\nmsgid \"Arkhangel'skaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:56\nmsgid \"Astrakhanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:57\nmsgid \"Belgorodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:58\nmsgid \"Bryanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:59\nmsgid \"Vladimirskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:60\nmsgid \"Volgogradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:61\nmsgid \"Vologodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:62\nmsgid \"Voronezhskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:63\nmsgid \"Ivanovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:64\nmsgid \"Irkutskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:65\nmsgid \"Kaliningradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:66\nmsgid \"Kaluzhskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:67\nmsgid \"Kemerovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:68\nmsgid \"Kirovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:69\nmsgid \"Kostromskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:70\nmsgid \"Kurganskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:71\nmsgid \"Kurskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:72\nmsgid \"Leningradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:73\nmsgid \"Lipeckaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:74\nmsgid \"Magadanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:75\nmsgid \"Murmanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:76\nmsgid \"Nizhegorodskaja oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:77\nmsgid \"Novgorodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:78\nmsgid \"Novosibirskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:79\nmsgid \"Omskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:80\nmsgid \"Orenburgskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:81\nmsgid \"Orlovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:82\nmsgid \"Penzenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:83\nmsgid \"Pskovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:84\nmsgid \"Rostovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:85\nmsgid \"Rjazanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:86\nmsgid \"Samarskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:87\nmsgid \"Saratovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:88\nmsgid \"Sakhalinskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:89\nmsgid \"Sverdlovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:90\nmsgid \"Smolenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:91\nmsgid \"Tambovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:92\nmsgid \"Tverskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:93\nmsgid \"Tomskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:94\nmsgid \"Tul'skaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:95\nmsgid \"Tyumenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:96\nmsgid \"Ul'ianovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:97\nmsgid \"Chelyabinskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:98\nmsgid \"Yaroslavskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:99\nmsgid \"Evreyskaya avtonomnaja oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:100\nmsgid \"Neneckiy autonomnyy okrug\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:101\nmsgid \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:102\nmsgid \"Chukotskiy avtonomnyy okrug\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:103\nmsgid \"Yamalo-Neneckiy avtonomnyy okrug\"\nmsgstr \"\"\n\n#: se/forms.py:54\nmsgid \"Enter a valid Swedish organisation number.\"\nmsgstr \"Oppgje eit gyldig svensk organisasjonsnummer.\"\n\n#: se/forms.py:111\nmsgid \"Enter a valid Swedish personal identity number.\"\nmsgstr \"Oppgje eit gyldig svensk personnummer.\"\n\n#: se/forms.py:112\nmsgid \"Co-ordination numbers are not allowed.\"\nmsgstr \"Koordinasjonsnummer er ikkje tillate.\"\n\n#: se/forms.py:154\nmsgid \"Enter a Swedish postal code in the format XXXXX.\"\nmsgstr \"Oppgje eit svensk postnummer på forma XXXXX.\"\n\n#: se/se_counties.py:16\nmsgid \"Stockholm\"\nmsgstr \"Stockholm\"\n\n#: se/se_counties.py:17\nmsgid \"Västerbotten\"\nmsgstr \"Västerbotten\"\n\n#: se/se_counties.py:18\nmsgid \"Norrbotten\"\nmsgstr \"Norrbotten\"\n\n#: se/se_counties.py:19\nmsgid \"Uppsala\"\nmsgstr \"Uppsala\"\n\n#: se/se_counties.py:20\nmsgid \"Södermanland\"\nmsgstr \"Södermanland\"\n\n#: se/se_counties.py:21\nmsgid \"Östergötland\"\nmsgstr \"Östergötland\"\n\n#: se/se_counties.py:22\nmsgid \"Jönköping\"\nmsgstr \"Jönköping\"\n\n#: se/se_counties.py:23\nmsgid \"Kronoberg\"\nmsgstr \"Kronoberg\"\n\n#: se/se_counties.py:24\nmsgid \"Kalmar\"\nmsgstr \"Kalmar\"\n\n#: se/se_counties.py:25\nmsgid \"Gotland\"\nmsgstr \"Gotland\"\n\n#: se/se_counties.py:26\nmsgid \"Blekinge\"\nmsgstr \"Blekinge\"\n\n#: se/se_counties.py:27\nmsgid \"Skåne\"\nmsgstr \"Skåne\"\n\n#: se/se_counties.py:28\nmsgid \"Halland\"\nmsgstr \"Halland\"\n\n#: se/se_counties.py:29\nmsgid \"Västra Götaland\"\nmsgstr \"Västra Götaland\"\n\n#: se/se_counties.py:30\nmsgid \"Värmland\"\nmsgstr \"Värmland\"\n\n#: se/se_counties.py:31\nmsgid \"Örebro\"\nmsgstr \"Örebro\"\n\n#: se/se_counties.py:32\nmsgid \"Västmanland\"\nmsgstr \"Västmanland\"\n\n#: se/se_counties.py:33\nmsgid \"Dalarna\"\nmsgstr \"Dalarna\"\n\n#: se/se_counties.py:34\nmsgid \"Gävleborg\"\nmsgstr \"Gävleborg\"\n\n#: se/se_counties.py:35\nmsgid \"Västernorrland\"\nmsgstr \"Västernorrland\"\n\n#: se/se_counties.py:36\nmsgid \"Jämtland\"\nmsgstr \"Jämtland\"\n\n#: si/forms.py:25\nmsgid \"The first 7 digits of the EMSO must represent a valid past date.\"\nmsgstr \"\"\n\n#: si/forms.py:26\nmsgid \"The EMSO is not valid.\"\nmsgstr \"\"\n\n#: si/forms.py:86\nmsgid \"Enter a valid tax number in form SIXXXXXXXX\"\nmsgstr \"\"\n\n#: si/forms.py:151\nmsgid \"Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:8\nmsgid \"Banska Bystrica\"\nmsgstr \"Banska Bystrica\"\n\n#: sk/sk_districts.py:9\nmsgid \"Banska Stiavnica\"\nmsgstr \"Banska Stiavnica\"\n\n#: sk/sk_districts.py:10\nmsgid \"Bardejov\"\nmsgstr \"Bardejov\"\n\n#: sk/sk_districts.py:11\nmsgid \"Banovce nad Bebravou\"\nmsgstr \"Banovce nad Bebravou\"\n\n#: sk/sk_districts.py:12\nmsgid \"Brezno\"\nmsgstr \"Brezno\"\n\n#: sk/sk_districts.py:13\nmsgid \"Bratislava I\"\nmsgstr \"Bratislava I\"\n\n#: sk/sk_districts.py:14\nmsgid \"Bratislava II\"\nmsgstr \"Bratislava II\"\n\n#: sk/sk_districts.py:15\nmsgid \"Bratislava III\"\nmsgstr \"Bratislava III\"\n\n#: sk/sk_districts.py:16\nmsgid \"Bratislava IV\"\nmsgstr \"Bratislava IV\"\n\n#: sk/sk_districts.py:17\nmsgid \"Bratislava V\"\nmsgstr \"Bratislava V\"\n\n#: sk/sk_districts.py:18\nmsgid \"Bytca\"\nmsgstr \"Bytca\"\n\n#: sk/sk_districts.py:19\nmsgid \"Cadca\"\nmsgstr \"Cadca\"\n\n#: sk/sk_districts.py:20\nmsgid \"Detva\"\nmsgstr \"Detva\"\n\n#: sk/sk_districts.py:21\nmsgid \"Dolny Kubin\"\nmsgstr \"Dolny Kubin\"\n\n#: sk/sk_districts.py:22\nmsgid \"Dunajska Streda\"\nmsgstr \"Dunajska Streda\"\n\n#: sk/sk_districts.py:23\nmsgid \"Galanta\"\nmsgstr \"Galanta\"\n\n#: sk/sk_districts.py:24\nmsgid \"Gelnica\"\nmsgstr \"Gelnica\"\n\n#: sk/sk_districts.py:25\nmsgid \"Hlohovec\"\nmsgstr \"Hlohovec\"\n\n#: sk/sk_districts.py:26\nmsgid \"Humenne\"\nmsgstr \"Humenne\"\n\n#: sk/sk_districts.py:27\nmsgid \"Ilava\"\nmsgstr \"Ilava\"\n\n#: sk/sk_districts.py:28\nmsgid \"Kezmarok\"\nmsgstr \"Kezmarok\"\n\n#: sk/sk_districts.py:29\nmsgid \"Komarno\"\nmsgstr \"Komarno\"\n\n#: sk/sk_districts.py:30\nmsgid \"Kosice I\"\nmsgstr \"Kosice I\"\n\n#: sk/sk_districts.py:31\nmsgid \"Kosice II\"\nmsgstr \"Kosice II\"\n\n#: sk/sk_districts.py:32\nmsgid \"Kosice III\"\nmsgstr \"Kosice III\"\n\n#: sk/sk_districts.py:33\nmsgid \"Kosice IV\"\nmsgstr \"Kosice IV\"\n\n#: sk/sk_districts.py:34\nmsgid \"Kosice - okolie\"\nmsgstr \"Kosice - okolie\"\n\n#: sk/sk_districts.py:35\nmsgid \"Krupina\"\nmsgstr \"Krupina\"\n\n#: sk/sk_districts.py:36\nmsgid \"Kysucke Nove Mesto\"\nmsgstr \"Kysucke Nove Mesto\"\n\n#: sk/sk_districts.py:37\nmsgid \"Levice\"\nmsgstr \"Levice\"\n\n#: sk/sk_districts.py:38\nmsgid \"Levoca\"\nmsgstr \"Levoca\"\n\n#: sk/sk_districts.py:39\nmsgid \"Liptovsky Mikulas\"\nmsgstr \"Liptovsky Mikulas\"\n\n#: sk/sk_districts.py:40\nmsgid \"Lucenec\"\nmsgstr \"Lucenec\"\n\n#: sk/sk_districts.py:41\nmsgid \"Malacky\"\nmsgstr \"Malacky\"\n\n#: sk/sk_districts.py:42\nmsgid \"Martin\"\nmsgstr \"Martin\"\n\n#: sk/sk_districts.py:43\nmsgid \"Medzilaborce\"\nmsgstr \"Medzilaborce\"\n\n#: sk/sk_districts.py:44\nmsgid \"Michalovce\"\nmsgstr \"Michalovce\"\n\n#: sk/sk_districts.py:45\nmsgid \"Myjava\"\nmsgstr \"Myjava\"\n\n#: sk/sk_districts.py:46\nmsgid \"Namestovo\"\nmsgstr \"Namestovo\"\n\n#: sk/sk_districts.py:47\nmsgid \"Nitra\"\nmsgstr \"Nitra\"\n\n#: sk/sk_districts.py:48\nmsgid \"Nove Mesto nad Vahom\"\nmsgstr \"Nove Mesto nad Vahom\"\n\n#: sk/sk_districts.py:49\nmsgid \"Nove Zamky\"\nmsgstr \"Nove Zamky\"\n\n#: sk/sk_districts.py:50\nmsgid \"Partizanske\"\nmsgstr \"Partizanske\"\n\n#: sk/sk_districts.py:51\nmsgid \"Pezinok\"\nmsgstr \"Pezinok\"\n\n#: sk/sk_districts.py:52\nmsgid \"Piestany\"\nmsgstr \"Piestany\"\n\n#: sk/sk_districts.py:53\nmsgid \"Poltar\"\nmsgstr \"Poltar\"\n\n#: sk/sk_districts.py:54\nmsgid \"Poprad\"\nmsgstr \"Poprad\"\n\n#: sk/sk_districts.py:55\nmsgid \"Povazska Bystrica\"\nmsgstr \"Povazska Bystrica\"\n\n#: sk/sk_districts.py:56\nmsgid \"Presov\"\nmsgstr \"Presov\"\n\n#: sk/sk_districts.py:57\nmsgid \"Prievidza\"\nmsgstr \"Prievidza\"\n\n#: sk/sk_districts.py:58\nmsgid \"Puchov\"\nmsgstr \"Puchov\"\n\n#: sk/sk_districts.py:59\nmsgid \"Revuca\"\nmsgstr \"Revuca\"\n\n#: sk/sk_districts.py:60\nmsgid \"Rimavska Sobota\"\nmsgstr \"Rimavska Sobota\"\n\n#: sk/sk_districts.py:61\nmsgid \"Roznava\"\nmsgstr \"Roznava\"\n\n#: sk/sk_districts.py:62\nmsgid \"Ruzomberok\"\nmsgstr \"Ruzomberok\"\n\n#: sk/sk_districts.py:63\nmsgid \"Sabinov\"\nmsgstr \"Sabinov\"\n\n#: sk/sk_districts.py:64\nmsgid \"Senec\"\nmsgstr \"Senec\"\n\n#: sk/sk_districts.py:65\nmsgid \"Senica\"\nmsgstr \"Senica\"\n\n#: sk/sk_districts.py:66\nmsgid \"Skalica\"\nmsgstr \"Skalica\"\n\n#: sk/sk_districts.py:67\nmsgid \"Snina\"\nmsgstr \"Snina\"\n\n#: sk/sk_districts.py:68\nmsgid \"Sobrance\"\nmsgstr \"Sobrance\"\n\n#: sk/sk_districts.py:69\nmsgid \"Spisska Nova Ves\"\nmsgstr \"Spisska Nova Ves\"\n\n#: sk/sk_districts.py:70\nmsgid \"Stara Lubovna\"\nmsgstr \"Stara Lubovna\"\n\n#: sk/sk_districts.py:71\nmsgid \"Stropkov\"\nmsgstr \"Stropkov\"\n\n#: sk/sk_districts.py:72\nmsgid \"Svidnik\"\nmsgstr \"Svidnik\"\n\n#: sk/sk_districts.py:73\nmsgid \"Sala\"\nmsgstr \"Sala\"\n\n#: sk/sk_districts.py:74\nmsgid \"Topolcany\"\nmsgstr \"Topolcany\"\n\n#: sk/sk_districts.py:75\nmsgid \"Trebisov\"\nmsgstr \"Trebisov\"\n\n#: sk/sk_districts.py:76\nmsgid \"Trencin\"\nmsgstr \"Trencin\"\n\n#: sk/sk_districts.py:77\nmsgid \"Trnava\"\nmsgstr \"Trnava\"\n\n#: sk/sk_districts.py:78\nmsgid \"Turcianske Teplice\"\nmsgstr \"Turcianske Teplice\"\n\n#: sk/sk_districts.py:79\nmsgid \"Tvrdosin\"\nmsgstr \"Tvrdosin\"\n\n#: sk/sk_districts.py:80\nmsgid \"Velky Krtis\"\nmsgstr \"Velky Krtis\"\n\n#: sk/sk_districts.py:81\nmsgid \"Vranov nad Toplou\"\nmsgstr \"Vranov nad Toplou\"\n\n#: sk/sk_districts.py:82\nmsgid \"Zlate Moravce\"\nmsgstr \"Zlate Moravce\"\n\n#: sk/sk_districts.py:83\nmsgid \"Zvolen\"\nmsgstr \"Zvolen\"\n\n#: sk/sk_districts.py:84\nmsgid \"Zarnovica\"\nmsgstr \"Zarnovica\"\n\n#: sk/sk_districts.py:85\nmsgid \"Ziar nad Hronom\"\nmsgstr \"Ziar nad Hronom\"\n\n#: sk/sk_districts.py:86\nmsgid \"Zilina\"\nmsgstr \"Zilina\"\n\n#: sk/sk_regions.py:8\nmsgid \"Banska Bystrica region\"\nmsgstr \"Banská Bystrica-regionen\"\n\n#: sk/sk_regions.py:9\nmsgid \"Bratislava region\"\nmsgstr \"Bratislava-regionen\"\n\n#: sk/sk_regions.py:10\nmsgid \"Kosice region\"\nmsgstr \"Košice-regionen\"\n\n#: sk/sk_regions.py:11\nmsgid \"Nitra region\"\nmsgstr \"Nitra-regionen\"\n\n#: sk/sk_regions.py:12\nmsgid \"Presov region\"\nmsgstr \"Prešov-regionen\"\n\n#: sk/sk_regions.py:13\nmsgid \"Trencin region\"\nmsgstr \"Trenčín-regionen\"\n\n#: sk/sk_regions.py:14\nmsgid \"Trnava region\"\nmsgstr \"Trnava-regionen\"\n\n#: sk/sk_regions.py:15\nmsgid \"Zilina region\"\nmsgstr \"Žilina-regionen\"\n\n#: tr/forms.py:21\nmsgid \"Enter a postal code in the format XXXXX.\"\nmsgstr \"\"\n\n#: tr/forms.py:42\nmsgid \"Phone numbers must be in 0XXX XXX XXXX format.\"\nmsgstr \"\"\n\n#: tr/forms.py:69\nmsgid \"Enter a valid Turkish Identification number.\"\nmsgstr \"\"\n\n#: tr/forms.py:70\nmsgid \"Turkish Identification number must be 11 digits.\"\nmsgstr \"\"\n\n#: us/forms.py:21\nmsgid \"Enter a zip code in the format XXXXX or XXXXX-XXXX.\"\nmsgstr \"Oppgje eit postnummer på forma XXXXX eller XXXXX-XXXX.\"\n\n#: us/forms.py:59\nmsgid \"Enter a valid U.S. Social Security number in XXX-XX-XXXX format.\"\nmsgstr \"\"\n\"Oppgje eit gyldig amerikansik Social Security-nummer på forma XXX-XX-XXXX.\"\n\n#: us/forms.py:92\nmsgid \"Enter a U.S. state or territory.\"\nmsgstr \"\"\n\n#: us/models.py:8\nmsgid \"U.S. state (two uppercase letters)\"\nmsgstr \"Stat (i USA, to store bokstavar)\"\n\n#: us/models.py:17\nmsgid \"U.S. postal code (two uppercase letters)\"\nmsgstr \"\"\n\n#: us/models.py:26\nmsgid \"Phone number\"\nmsgstr \"Telefonnummer\"\n\n#: uy/forms.py:29\nmsgid \"Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.\"\nmsgstr \"Oppgje gyldig CI-nummer på forma X.XXX.XXX-X,XXXXXXX-X eller XXXXXXXX.\"\n\n#: uy/forms.py:31\nmsgid \"Enter a valid CI number.\"\nmsgstr \"Oppgje eit gyldig CI-nummer.\"\n\n#: za/forms.py:22\nmsgid \"Enter a valid South African ID number\"\nmsgstr \"Oppgje eit gyldig South African ID-nummer.\"\n\n#: za/forms.py:56\nmsgid \"Enter a valid South African postal code\"\nmsgstr \"Oppgje eit gyldig postnummer.\"\n\n#: za/za_provinces.py:4\nmsgid \"Eastern Cape\"\nmsgstr \"Eastern Cape\"\n\n#: za/za_provinces.py:5\nmsgid \"Free State\"\nmsgstr \"Free State\"\n\n#: za/za_provinces.py:6\nmsgid \"Gauteng\"\nmsgstr \"Gauteng\"\n\n#: za/za_provinces.py:7\nmsgid \"KwaZulu-Natal\"\nmsgstr \"KwaZulu-Natal\"\n\n#: za/za_provinces.py:8\nmsgid \"Limpopo\"\nmsgstr \"Limpopo\"\n\n#: za/za_provinces.py:9\nmsgid \"Mpumalanga\"\nmsgstr \"Mpumalanga\"\n\n#: za/za_provinces.py:10\nmsgid \"Northern Cape\"\nmsgstr \"Northern Cape\"\n\n#: za/za_provinces.py:11\nmsgid \"North West\"\nmsgstr \"North West\"\n\n#: za/za_provinces.py:12\nmsgid \"Western Cape\"\nmsgstr \"Western Cape\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/locale/pa/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-10-17 09:16+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Panjabi (Punjabi) (http://www.transifex.com/projects/p/django/\"\n\"language/pa/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: pa\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: ar/forms.py:30\nmsgid \"Enter a postal code in the format NNNN or ANNNNAAA.\"\nmsgstr \"\"\n\n#: ar/forms.py:52 br/forms.py:95 br/forms.py:134 pe/forms.py:27 pe/forms.py:55\nmsgid \"This field requires only numbers.\"\nmsgstr \"ਇਹ ਖੇਤਰ ਲਈ ਨੰਬਰ ਹੀ ਚਾਹੀਦੇ ਹਨ।\"\n\n#: ar/forms.py:53\nmsgid \"This field requires 7 or 8 digits.\"\nmsgstr \"ਇਹ ਖੇਤਰ ਲਈ  7 ਜਾਂ 8 ਅੰਕ ਚਾਹੀਦੇ ਹਨ।\"\n\n#: ar/forms.py:82\nmsgid \"Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.\"\nmsgstr \"\"\n\n#: ar/forms.py:83\nmsgid \"Invalid CUIT.\"\nmsgstr \"ਗਲਤ CUIT ਹੈ।\"\n\n#: ar/forms.py:84\nmsgid \"Invalid legal type. Type must be 27, 20, 23 or 30.\"\nmsgstr \"\"\n\n#: at/at_states.py:5\nmsgid \"Burgenland\"\nmsgstr \"\"\n\n#: at/at_states.py:6\nmsgid \"Carinthia\"\nmsgstr \"\"\n\n#: at/at_states.py:7\nmsgid \"Lower Austria\"\nmsgstr \"\"\n\n#: at/at_states.py:8\nmsgid \"Upper Austria\"\nmsgstr \"\"\n\n#: at/at_states.py:9\nmsgid \"Salzburg\"\nmsgstr \"\"\n\n#: at/at_states.py:10\nmsgid \"Styria\"\nmsgstr \"\"\n\n#: at/at_states.py:11\nmsgid \"Tyrol\"\nmsgstr \"\"\n\n#: at/at_states.py:12\nmsgid \"Vorarlberg\"\nmsgstr \"\"\n\n#: at/at_states.py:13\nmsgid \"Vienna\"\nmsgstr \"ਵੀਆਨਾ\"\n\n#: at/forms.py:22 ch/forms.py:22 no/forms.py:19\nmsgid \"Enter a zip code in the format XXXX.\"\nmsgstr \"\"\n\n#: at/forms.py:50\nmsgid \"Enter a valid Austrian Social Security Number in XXXX XXXXXX format.\"\nmsgstr \"\"\n\n#: au/forms.py:26\nmsgid \"Enter a 4 digit postcode.\"\nmsgstr \"\"\n\n#: au/models.py:9\nmsgid \"Australian State\"\nmsgstr \"\"\n\n#: au/models.py:19\nmsgid \"Australian Postcode\"\nmsgstr \"\"\n\n#: au/models.py:33\nmsgid \"Australian Phone number\"\nmsgstr \"\"\n\n#: be/be_provinces.py:5\nmsgid \"Antwerp\"\nmsgstr \"\"\n\n#: be/be_provinces.py:6\nmsgid \"Brussels\"\nmsgstr \"\"\n\n#: be/be_provinces.py:7\nmsgid \"East Flanders\"\nmsgstr \"\"\n\n#: be/be_provinces.py:8\nmsgid \"Flemish Brabant\"\nmsgstr \"\"\n\n#: be/be_provinces.py:9\nmsgid \"Hainaut\"\nmsgstr \"\"\n\n#: be/be_provinces.py:10\nmsgid \"Liege\"\nmsgstr \"\"\n\n#: be/be_provinces.py:11 nl/nl_provinces.py:9\nmsgid \"Limburg\"\nmsgstr \"\"\n\n#: be/be_provinces.py:12\nmsgid \"Luxembourg\"\nmsgstr \"\"\n\n#: be/be_provinces.py:13\nmsgid \"Namur\"\nmsgstr \"\"\n\n#: be/be_provinces.py:14\nmsgid \"Walloon Brabant\"\nmsgstr \"\"\n\n#: be/be_provinces.py:15\nmsgid \"West Flanders\"\nmsgstr \"\"\n\n#: be/be_regions.py:5\nmsgid \"Brussels Capital Region\"\nmsgstr \"\"\n\n#: be/be_regions.py:6\nmsgid \"Flemish Region\"\nmsgstr \"\"\n\n#: be/be_regions.py:7\nmsgid \"Wallonia\"\nmsgstr \"\"\n\n#: be/forms.py:25\nmsgid \"Enter a valid postal code in the range and format 1XXX - 9XXX.\"\nmsgstr \"\"\n\n#: be/forms.py:48\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\nmsgstr \"\"\n\n#: br/forms.py:22\nmsgid \"Enter a zip code in the format XXXXX-XXX.\"\nmsgstr \"\"\n\n#: br/forms.py:31\nmsgid \"Phone numbers must be in XX-XXXX-XXXX format.\"\nmsgstr \"\"\n\n#: br/forms.py:58\nmsgid \"\"\n\"Select a valid brazilian state. That state is not one of the available \"\n\"states.\"\nmsgstr \"\"\n\n#: br/forms.py:93\nmsgid \"Invalid CPF number.\"\nmsgstr \"ਗਲਤ CPF ਨੰਬਰ ਹੈ।\"\n\n#: br/forms.py:94\nmsgid \"This field requires at most 11 digits or 14 characters.\"\nmsgstr \"\"\n\n#: br/forms.py:133\nmsgid \"Invalid CNPJ number.\"\nmsgstr \"\"\n\n#: br/forms.py:135\nmsgid \"This field requires at least 14 digits\"\nmsgstr \"\"\n\n#: ca/forms.py:29\nmsgid \"Enter a postal code in the format XXX XXX.\"\nmsgstr \"\"\n\n#: ca/forms.py:47 us/forms.py:30\nmsgid \"Phone numbers must be in XXX-XXX-XXXX format.\"\nmsgstr \"\"\n\n#: ca/forms.py:69\nmsgid \"Enter a Canadian province or territory.\"\nmsgstr \"\"\n\n#: ca/forms.py:110\nmsgid \"Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.\"\nmsgstr \"\"\n\n#: ch/ch_states.py:5\nmsgid \"Aargau\"\nmsgstr \"\"\n\n#: ch/ch_states.py:6\nmsgid \"Appenzell Innerrhoden\"\nmsgstr \"\"\n\n#: ch/ch_states.py:7\nmsgid \"Appenzell Ausserrhoden\"\nmsgstr \"\"\n\n#: ch/ch_states.py:8\nmsgid \"Basel-Stadt\"\nmsgstr \"\"\n\n#: ch/ch_states.py:9\nmsgid \"Basel-Land\"\nmsgstr \"\"\n\n#: ch/ch_states.py:10\nmsgid \"Berne\"\nmsgstr \"\"\n\n#: ch/ch_states.py:11\nmsgid \"Fribourg\"\nmsgstr \"\"\n\n#: ch/ch_states.py:12\nmsgid \"Geneva\"\nmsgstr \"\"\n\n#: ch/ch_states.py:13\nmsgid \"Glarus\"\nmsgstr \"\"\n\n#: ch/ch_states.py:14\nmsgid \"Graubuenden\"\nmsgstr \"\"\n\n#: ch/ch_states.py:15\nmsgid \"Jura\"\nmsgstr \"\"\n\n#: ch/ch_states.py:16\nmsgid \"Lucerne\"\nmsgstr \"\"\n\n#: ch/ch_states.py:17\nmsgid \"Neuchatel\"\nmsgstr \"\"\n\n#: ch/ch_states.py:18\nmsgid \"Nidwalden\"\nmsgstr \"\"\n\n#: ch/ch_states.py:19\nmsgid \"Obwalden\"\nmsgstr \"\"\n\n#: ch/ch_states.py:20\nmsgid \"Schaffhausen\"\nmsgstr \"\"\n\n#: ch/ch_states.py:21\nmsgid \"Schwyz\"\nmsgstr \"\"\n\n#: ch/ch_states.py:22\nmsgid \"Solothurn\"\nmsgstr \"\"\n\n#: ch/ch_states.py:23\nmsgid \"St. Gallen\"\nmsgstr \"\"\n\n#: ch/ch_states.py:24\nmsgid \"Thurgau\"\nmsgstr \"\"\n\n#: ch/ch_states.py:25\nmsgid \"Ticino\"\nmsgstr \"\"\n\n#: ch/ch_states.py:26\nmsgid \"Uri\"\nmsgstr \"Uri\"\n\n#: ch/ch_states.py:27\nmsgid \"Valais\"\nmsgstr \"\"\n\n#: ch/ch_states.py:28\nmsgid \"Vaud\"\nmsgstr \"\"\n\n#: ch/ch_states.py:29\nmsgid \"Zug\"\nmsgstr \"\"\n\n#: ch/ch_states.py:30\nmsgid \"Zurich\"\nmsgstr \"\"\n\n#: ch/forms.py:37\nmsgid \"Phone numbers must be in 0XX XXX XX XX format.\"\nmsgstr \"\"\n\n#: ch/forms.py:68\nmsgid \"\"\n\"Enter a valid Swiss identity or passport card number in X1234567<0 or \"\n\"1234567890 format.\"\nmsgstr \"\"\n\n#: cl/forms.py:32\nmsgid \"Enter a valid Chilean RUT.\"\nmsgstr \"\"\n\n#: cl/forms.py:33\nmsgid \"Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.\"\nmsgstr \"\"\n\n#: cl/forms.py:34\nmsgid \"The Chilean RUT is not valid.\"\nmsgstr \"\"\n\n#: cn/forms.py:84\nmsgid \"Enter a post code in the format XXXXXX.\"\nmsgstr \"\"\n\n#: cn/forms.py:105\nmsgid \"ID Card Number consists of 15 or 18 digits.\"\nmsgstr \"\"\n\n#: cn/forms.py:106\nmsgid \"Invalid ID Card Number: Wrong checksum\"\nmsgstr \"\"\n\n#: cn/forms.py:107\nmsgid \"Invalid ID Card Number: Wrong birthdate\"\nmsgstr \"\"\n\n#: cn/forms.py:108\nmsgid \"Invalid ID Card Number: Wrong location code\"\nmsgstr \"\"\n\n#: cn/forms.py:193\nmsgid \"Enter a valid phone number.\"\nmsgstr \"\"\n\n#: cn/forms.py:210\nmsgid \"Enter a valid cell number.\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:8\nmsgid \"Prague\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:9\nmsgid \"Central Bohemian Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:10\nmsgid \"South Bohemian Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:11\nmsgid \"Pilsen Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:12\nmsgid \"Carlsbad Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:13\nmsgid \"Usti Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:14\nmsgid \"Liberec Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:15\nmsgid \"Hradec Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:16\nmsgid \"Pardubice Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:17\nmsgid \"Vysocina Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:18\nmsgid \"South Moravian Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:19\nmsgid \"Olomouc Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:20\nmsgid \"Zlin Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:21\nmsgid \"Moravian-Silesian Region\"\nmsgstr \"\"\n\n#: cz/forms.py:32 sk/forms.py:33\nmsgid \"Enter a postal code in the format XXXXX or XXX XX.\"\nmsgstr \"\"\n\n#: cz/forms.py:52\nmsgid \"Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.\"\nmsgstr \"\"\n\n#: cz/forms.py:53\nmsgid \"Enter a valid birth number.\"\nmsgstr \"ਠੀਕ ਜਨਮ ਨੰਬਰ ਦਿਉ।\"\n\n#: cz/forms.py:102\nmsgid \"Enter a valid IC number.\"\nmsgstr \"\"\n\n#: de/de_states.py:5\nmsgid \"Baden-Wuerttemberg\"\nmsgstr \"\"\n\n#: de/de_states.py:6\nmsgid \"Bavaria\"\nmsgstr \"\"\n\n#: de/de_states.py:7\nmsgid \"Berlin\"\nmsgstr \"ਬਰਲਿਨ\"\n\n#: de/de_states.py:8\nmsgid \"Brandenburg\"\nmsgstr \"\"\n\n#: de/de_states.py:9\nmsgid \"Bremen\"\nmsgstr \"\"\n\n#: de/de_states.py:10\nmsgid \"Hamburg\"\nmsgstr \"\"\n\n#: de/de_states.py:11\nmsgid \"Hessen\"\nmsgstr \"\"\n\n#: de/de_states.py:12\nmsgid \"Mecklenburg-Western Pomerania\"\nmsgstr \"\"\n\n#: de/de_states.py:13\nmsgid \"Lower Saxony\"\nmsgstr \"\"\n\n#: de/de_states.py:14\nmsgid \"North Rhine-Westphalia\"\nmsgstr \"\"\n\n#: de/de_states.py:15\nmsgid \"Rhineland-Palatinate\"\nmsgstr \"\"\n\n#: de/de_states.py:16\nmsgid \"Saarland\"\nmsgstr \"\"\n\n#: de/de_states.py:17\nmsgid \"Saxony\"\nmsgstr \"\"\n\n#: de/de_states.py:18\nmsgid \"Saxony-Anhalt\"\nmsgstr \"\"\n\n#: de/de_states.py:19\nmsgid \"Schleswig-Holstein\"\nmsgstr \"\"\n\n#: de/de_states.py:20\nmsgid \"Thuringia\"\nmsgstr \"\"\n\n#: de/forms.py:20 fi/forms.py:18 fr/forms.py:20\nmsgid \"Enter a zip code in the format XXXXX.\"\nmsgstr \"\"\n\n#: de/forms.py:46\nmsgid \"\"\n\"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"format.\"\nmsgstr \"\"\n\n#: es/es_provinces.py:5\nmsgid \"Araba\"\nmsgstr \"\"\n\n#: es/es_provinces.py:6\nmsgid \"Albacete\"\nmsgstr \"\"\n\n#: es/es_provinces.py:7\nmsgid \"Alacant\"\nmsgstr \"\"\n\n#: es/es_provinces.py:8\nmsgid \"Almeria\"\nmsgstr \"\"\n\n#: es/es_provinces.py:9\nmsgid \"Avila\"\nmsgstr \"\"\n\n#: es/es_provinces.py:10\nmsgid \"Badajoz\"\nmsgstr \"\"\n\n#: es/es_provinces.py:11\nmsgid \"Illes Balears\"\nmsgstr \"\"\n\n#: es/es_provinces.py:12\nmsgid \"Barcelona\"\nmsgstr \"\"\n\n#: es/es_provinces.py:13\nmsgid \"Burgos\"\nmsgstr \"\"\n\n#: es/es_provinces.py:14\nmsgid \"Caceres\"\nmsgstr \"\"\n\n#: es/es_provinces.py:15\nmsgid \"Cadiz\"\nmsgstr \"\"\n\n#: es/es_provinces.py:16\nmsgid \"Castello\"\nmsgstr \"\"\n\n#: es/es_provinces.py:17\nmsgid \"Ciudad Real\"\nmsgstr \"\"\n\n#: es/es_provinces.py:18\nmsgid \"Cordoba\"\nmsgstr \"\"\n\n#: es/es_provinces.py:19\nmsgid \"A Coruna\"\nmsgstr \"\"\n\n#: es/es_provinces.py:20\nmsgid \"Cuenca\"\nmsgstr \"\"\n\n#: es/es_provinces.py:21\nmsgid \"Girona\"\nmsgstr \"\"\n\n#: es/es_provinces.py:22\nmsgid \"Granada\"\nmsgstr \"\"\n\n#: es/es_provinces.py:23\nmsgid \"Guadalajara\"\nmsgstr \"\"\n\n#: es/es_provinces.py:24\nmsgid \"Guipuzkoa\"\nmsgstr \"\"\n\n#: es/es_provinces.py:25\nmsgid \"Huelva\"\nmsgstr \"\"\n\n#: es/es_provinces.py:26\nmsgid \"Huesca\"\nmsgstr \"\"\n\n#: es/es_provinces.py:27\nmsgid \"Jaen\"\nmsgstr \"\"\n\n#: es/es_provinces.py:28\nmsgid \"Leon\"\nmsgstr \"\"\n\n#: es/es_provinces.py:29\nmsgid \"Lleida\"\nmsgstr \"\"\n\n#: es/es_provinces.py:30 es/es_regions.py:17\nmsgid \"La Rioja\"\nmsgstr \"\"\n\n#: es/es_provinces.py:31\nmsgid \"Lugo\"\nmsgstr \"\"\n\n#: es/es_provinces.py:32 es/es_regions.py:18\nmsgid \"Madrid\"\nmsgstr \"\"\n\n#: es/es_provinces.py:33\nmsgid \"Malaga\"\nmsgstr \"\"\n\n#: es/es_provinces.py:34\nmsgid \"Murcia\"\nmsgstr \"\"\n\n#: es/es_provinces.py:35\nmsgid \"Navarre\"\nmsgstr \"\"\n\n#: es/es_provinces.py:36\nmsgid \"Ourense\"\nmsgstr \"\"\n\n#: es/es_provinces.py:37\nmsgid \"Asturias\"\nmsgstr \"\"\n\n#: es/es_provinces.py:38\nmsgid \"Palencia\"\nmsgstr \"\"\n\n#: es/es_provinces.py:39\nmsgid \"Las Palmas\"\nmsgstr \"\"\n\n#: es/es_provinces.py:40\nmsgid \"Pontevedra\"\nmsgstr \"\"\n\n#: es/es_provinces.py:41\nmsgid \"Salamanca\"\nmsgstr \"\"\n\n#: es/es_provinces.py:42\nmsgid \"Santa Cruz de Tenerife\"\nmsgstr \"\"\n\n#: es/es_provinces.py:43 es/es_regions.py:11\nmsgid \"Cantabria\"\nmsgstr \"\"\n\n#: es/es_provinces.py:44\nmsgid \"Segovia\"\nmsgstr \"\"\n\n#: es/es_provinces.py:45\nmsgid \"Seville\"\nmsgstr \"\"\n\n#: es/es_provinces.py:46\nmsgid \"Soria\"\nmsgstr \"\"\n\n#: es/es_provinces.py:47\nmsgid \"Tarragona\"\nmsgstr \"\"\n\n#: es/es_provinces.py:48\nmsgid \"Teruel\"\nmsgstr \"\"\n\n#: es/es_provinces.py:49\nmsgid \"Toledo\"\nmsgstr \"\"\n\n#: es/es_provinces.py:50\nmsgid \"Valencia\"\nmsgstr \"\"\n\n#: es/es_provinces.py:51\nmsgid \"Valladolid\"\nmsgstr \"\"\n\n#: es/es_provinces.py:52\nmsgid \"Bizkaia\"\nmsgstr \"\"\n\n#: es/es_provinces.py:53\nmsgid \"Zamora\"\nmsgstr \"\"\n\n#: es/es_provinces.py:54\nmsgid \"Zaragoza\"\nmsgstr \"\"\n\n#: es/es_provinces.py:55\nmsgid \"Ceuta\"\nmsgstr \"\"\n\n#: es/es_provinces.py:56\nmsgid \"Melilla\"\nmsgstr \"\"\n\n#: es/es_regions.py:5\nmsgid \"Andalusia\"\nmsgstr \"\"\n\n#: es/es_regions.py:6\nmsgid \"Aragon\"\nmsgstr \"\"\n\n#: es/es_regions.py:7\nmsgid \"Principality of Asturias\"\nmsgstr \"\"\n\n#: es/es_regions.py:8\nmsgid \"Balearic Islands\"\nmsgstr \"\"\n\n#: es/es_regions.py:9\nmsgid \"Basque Country\"\nmsgstr \"\"\n\n#: es/es_regions.py:10\nmsgid \"Canary Islands\"\nmsgstr \"\"\n\n#: es/es_regions.py:12\nmsgid \"Castile-La Mancha\"\nmsgstr \"\"\n\n#: es/es_regions.py:13\nmsgid \"Castile and Leon\"\nmsgstr \"\"\n\n#: es/es_regions.py:14\nmsgid \"Catalonia\"\nmsgstr \"\"\n\n#: es/es_regions.py:15\nmsgid \"Extremadura\"\nmsgstr \"\"\n\n#: es/es_regions.py:16\nmsgid \"Galicia\"\nmsgstr \"\"\n\n#: es/es_regions.py:19\nmsgid \"Region of Murcia\"\nmsgstr \"\"\n\n#: es/es_regions.py:20\nmsgid \"Foral Community of Navarre\"\nmsgstr \"\"\n\n#: es/es_regions.py:21\nmsgid \"Valencian Community\"\nmsgstr \"\"\n\n#: es/forms.py:26\nmsgid \"Enter a valid postal code in the range and format 01XXX - 52XXX.\"\nmsgstr \"\"\n\n#: es/forms.py:46\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or \"\n\"9XXXXXXXX.\"\nmsgstr \"\"\n\n#: es/forms.py:73\nmsgid \"Please enter a valid NIF, NIE, or CIF.\"\nmsgstr \"\"\n\n#: es/forms.py:74\nmsgid \"Please enter a valid NIF or NIE.\"\nmsgstr \"\"\n\n#: es/forms.py:75\nmsgid \"Invalid checksum for NIF.\"\nmsgstr \"\"\n\n#: es/forms.py:76\nmsgid \"Invalid checksum for NIE.\"\nmsgstr \"\"\n\n#: es/forms.py:77\nmsgid \"Invalid checksum for CIF.\"\nmsgstr \"\"\n\n#: es/forms.py:149\nmsgid \"\"\n\"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.\"\nmsgstr \"\"\n\n#: es/forms.py:150\nmsgid \"Invalid checksum for bank account number.\"\nmsgstr \"\"\n\n#: fi/forms.py:33\nmsgid \"Enter a valid Finnish social security number.\"\nmsgstr \"\"\n\n#: fr/forms.py:35\nmsgid \"Phone numbers must be in 0X XX XX XX XX format.\"\nmsgstr \"\"\n\n#: gb/forms.py:25\nmsgid \"Enter a valid postcode.\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:11\nmsgid \"Bedfordshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:12\nmsgid \"Buckinghamshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:14\nmsgid \"Cheshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:15\nmsgid \"Cornwall and Isles of Scilly\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:16\nmsgid \"Cumbria\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:17\nmsgid \"Derbyshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:18\nmsgid \"Devon\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:19\nmsgid \"Dorset\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:20\nmsgid \"Durham\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:21\nmsgid \"East Sussex\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:22\nmsgid \"Essex\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:23\nmsgid \"Gloucestershire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:24\nmsgid \"Greater London\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:25\nmsgid \"Greater Manchester\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:26\nmsgid \"Hampshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:27\nmsgid \"Hertfordshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:28\nmsgid \"Kent\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:29\nmsgid \"Lancashire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:30\nmsgid \"Leicestershire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:31\nmsgid \"Lincolnshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:32\nmsgid \"Merseyside\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:33\nmsgid \"Norfolk\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:34\nmsgid \"North Yorkshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:35\nmsgid \"Northamptonshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:36\nmsgid \"Northumberland\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:37\nmsgid \"Nottinghamshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:38\nmsgid \"Oxfordshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:39\nmsgid \"Shropshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:40\nmsgid \"Somerset\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:41\nmsgid \"South Yorkshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:42\nmsgid \"Staffordshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:43\nmsgid \"Suffolk\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:44\nmsgid \"Surrey\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:45\nmsgid \"Tyne and Wear\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:46\nmsgid \"Warwickshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:47\nmsgid \"West Midlands\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:48\nmsgid \"West Sussex\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:49\nmsgid \"West Yorkshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:50\nmsgid \"Wiltshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:51\nmsgid \"Worcestershire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:55\nmsgid \"County Antrim\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:56\nmsgid \"County Armagh\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:57\nmsgid \"County Down\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:58\nmsgid \"County Fermanagh\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:59\nmsgid \"County Londonderry\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:60\nmsgid \"County Tyrone\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:64\nmsgid \"Clwyd\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:65\nmsgid \"Dyfed\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:66\nmsgid \"Gwent\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:67\nmsgid \"Gwynedd\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:68\nmsgid \"Mid Glamorgan\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:69\nmsgid \"Powys\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:70\nmsgid \"South Glamorgan\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:71\nmsgid \"West Glamorgan\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:75\nmsgid \"Borders\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:76\nmsgid \"Central Scotland\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:77\nmsgid \"Dumfries and Galloway\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:78\nmsgid \"Fife\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:79\nmsgid \"Grampian\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:80\nmsgid \"Highland\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:81\nmsgid \"Lothian\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:82\nmsgid \"Orkney Islands\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:83\nmsgid \"Shetland Islands\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:84\nmsgid \"Strathclyde\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:85\nmsgid \"Tayside\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:86\nmsgid \"Western Isles\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:90\nmsgid \"England\"\nmsgstr \"ਇੰਗਲੈਂਡ\"\n\n#: gb/gb_regions.py:91\nmsgid \"Northern Ireland\"\nmsgstr \"ਉੱਤਰੀ ਆਈਰਲੈਂਡ\"\n\n#: gb/gb_regions.py:92\nmsgid \"Scotland\"\nmsgstr \"ਸਕਾਟਲੈਂਡ\"\n\n#: gb/gb_regions.py:93\nmsgid \"Wales\"\nmsgstr \"ਵਾਲਿਜ਼\"\n\n#: hk/forms.py:37\n#, python-format\nmsgid \"Phone number should not start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:40\n#, python-format\nmsgid \"Phone number must be in one of the following formats: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:42\n#, python-format\nmsgid \"Phone number should start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hr/forms.py:76\nmsgid \"Enter a valid 13 digit JMBG\"\nmsgstr \"\"\n\n#: hr/forms.py:77\nmsgid \"Error in date segment\"\nmsgstr \"\"\n\n#: hr/forms.py:123\nmsgid \"Enter a valid 11 digit OIB\"\nmsgstr \"\"\n\n#: hr/forms.py:152 id/forms.py:112\nmsgid \"Enter a valid vehicle license plate number\"\nmsgstr \"\"\n\n#: hr/forms.py:153\nmsgid \"Enter a valid location code\"\nmsgstr \"\"\n\n#: hr/forms.py:154\nmsgid \"Number part cannot be zero\"\nmsgstr \"\"\n\n#: hr/forms.py:190\nmsgid \"Enter a valid 5 digit postal code\"\nmsgstr \"\"\n\n#: hr/forms.py:218 id/forms.py:72 nl/forms.py:56\nmsgid \"Enter a valid phone number\"\nmsgstr \"ਠੀਕ ਫੋਨ ਨੰਬਰ ਦਿਓ\"\n\n#: hr/forms.py:219\nmsgid \"Enter a valid area or mobile network code\"\nmsgstr \"\"\n\n#: hr/forms.py:220\nmsgid \"The phone nubmer is too long\"\nmsgstr \"\"\n\n#: hr/forms.py:258\nmsgid \"Enter a valid 19 digit JMBAG starting with 601983\"\nmsgstr \"\"\n\n#: hr/forms.py:259\nmsgid \"Card issue number cannot be zero\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:14\nmsgid \"Grad Zagreb\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:15\nmsgid \"Bjelovarsko-bilogorska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:16\nmsgid \"Brodsko-posavska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:17\nmsgid \"Dubrovačko-neretvanska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:18\nmsgid \"Istarska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:19\nmsgid \"Karlovačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:20\nmsgid \"Koprivničko-križevačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:21\nmsgid \"Krapinsko-zagorska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:22\nmsgid \"Ličko-senjska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:23\nmsgid \"Međimurska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:24\nmsgid \"Osječko-baranjska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:25\nmsgid \"Požeško-slavonska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:26\nmsgid \"Primorsko-goranska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:27\nmsgid \"Sisačko-moslavačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:28\nmsgid \"Splitsko-dalmatinska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:29\nmsgid \"Šibensko-kninska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:30\nmsgid \"Varaždinska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:31\nmsgid \"Virovitičko-podravska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:32\nmsgid \"Vukovarsko-srijemska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:33\nmsgid \"Zadarska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:34\nmsgid \"Zagrebačka županija\"\nmsgstr \"\"\n\n#: id/forms.py:31\nmsgid \"Enter a valid post code\"\nmsgstr \"ਠੀਕ ਪੋਸਟ ਕੋਡ ਦਿਓ\"\n\n#: id/forms.py:176\nmsgid \"Enter a valid NIK/KTP number\"\nmsgstr \"\"\n\n#: id/id_choices.py:15\nmsgid \"Aceh\"\nmsgstr \"\"\n\n#: id/id_choices.py:16 id/id_choices.py:79\nmsgid \"Bali\"\nmsgstr \"\"\n\n#: id/id_choices.py:17 id/id_choices.py:51\nmsgid \"Banten\"\nmsgstr \"\"\n\n#: id/id_choices.py:18 id/id_choices.py:60\nmsgid \"Bengkulu\"\nmsgstr \"\"\n\n#: id/id_choices.py:19 id/id_choices.py:53\nmsgid \"Yogyakarta\"\nmsgstr \"\"\n\n#: id/id_choices.py:20 id/id_choices.py:57\nmsgid \"Jakarta\"\nmsgstr \"ਜੈਕਰਾਤਾ\"\n\n#: id/id_choices.py:21 id/id_choices.py:81\nmsgid \"Gorontalo\"\nmsgstr \"\"\n\n#: id/id_choices.py:22 id/id_choices.py:63\nmsgid \"Jambi\"\nmsgstr \"\"\n\n#: id/id_choices.py:23\nmsgid \"Jawa Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:24\nmsgid \"Jawa Tengah\"\nmsgstr \"\"\n\n#: id/id_choices.py:25\nmsgid \"Jawa Timur\"\nmsgstr \"\"\n\n#: id/id_choices.py:26 id/id_choices.py:94\nmsgid \"Kalimantan Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:27 id/id_choices.py:72\nmsgid \"Kalimantan Selatan\"\nmsgstr \"\"\n\n#: id/id_choices.py:28 id/id_choices.py:95\nmsgid \"Kalimantan Tengah\"\nmsgstr \"\"\n\n#: id/id_choices.py:29 id/id_choices.py:96\nmsgid \"Kalimantan Timur\"\nmsgstr \"\"\n\n#: id/id_choices.py:30\nmsgid \"Kepulauan Bangka-Belitung\"\nmsgstr \"\"\n\n#: id/id_choices.py:31 id/id_choices.py:68\nmsgid \"Kepulauan Riau\"\nmsgstr \"\"\n\n#: id/id_choices.py:32 id/id_choices.py:61\nmsgid \"Lampung\"\nmsgstr \"\"\n\n#: id/id_choices.py:33 id/id_choices.py:76\nmsgid \"Maluku\"\nmsgstr \"\"\n\n#: id/id_choices.py:34 id/id_choices.py:77\nmsgid \"Maluku Utara\"\nmsgstr \"\"\n\n#: id/id_choices.py:35\nmsgid \"Nusa Tenggara Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:36\nmsgid \"Nusa Tenggara Timur\"\nmsgstr \"\"\n\n#: id/id_choices.py:37\nmsgid \"Papua\"\nmsgstr \"\"\n\n#: id/id_choices.py:38\nmsgid \"Papua Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:39 id/id_choices.py:66\nmsgid \"Riau\"\nmsgstr \"\"\n\n#: id/id_choices.py:40 id/id_choices.py:74\nmsgid \"Sulawesi Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:41 id/id_choices.py:75\nmsgid \"Sulawesi Selatan\"\nmsgstr \"\"\n\n#: id/id_choices.py:42 id/id_choices.py:82\nmsgid \"Sulawesi Tengah\"\nmsgstr \"\"\n\n#: id/id_choices.py:43 id/id_choices.py:85\nmsgid \"Sulawesi Tenggara\"\nmsgstr \"\"\n\n#: id/id_choices.py:44\nmsgid \"Sulawesi Utara\"\nmsgstr \"\"\n\n#: id/id_choices.py:45 id/id_choices.py:58\nmsgid \"Sumatera Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:46 id/id_choices.py:62\nmsgid \"Sumatera Selatan\"\nmsgstr \"\"\n\n#: id/id_choices.py:47 id/id_choices.py:64\nmsgid \"Sumatera Utara\"\nmsgstr \"\"\n\n#: id/id_choices.py:52\nmsgid \"Magelang\"\nmsgstr \"\"\n\n#: id/id_choices.py:54\nmsgid \"Surakarta - Solo\"\nmsgstr \"\"\n\n#: id/id_choices.py:55\nmsgid \"Madiun\"\nmsgstr \"\"\n\n#: id/id_choices.py:56\nmsgid \"Kediri\"\nmsgstr \"\"\n\n#: id/id_choices.py:59\nmsgid \"Tapanuli\"\nmsgstr \"\"\n\n#: id/id_choices.py:65\nmsgid \"Nanggroe Aceh Darussalam\"\nmsgstr \"\"\n\n#: id/id_choices.py:67\nmsgid \"Kepulauan Bangka Belitung\"\nmsgstr \"\"\n\n#: id/id_choices.py:69\nmsgid \"Corps Consulate\"\nmsgstr \"\"\n\n#: id/id_choices.py:70\nmsgid \"Corps Diplomatic\"\nmsgstr \"\"\n\n#: id/id_choices.py:71\nmsgid \"Bandung\"\nmsgstr \"\"\n\n#: id/id_choices.py:73\nmsgid \"Sulawesi Utara Daratan\"\nmsgstr \"\"\n\n#: id/id_choices.py:78\nmsgid \"NTT - Timor\"\nmsgstr \"\"\n\n#: id/id_choices.py:80\nmsgid \"Sulawesi Utara Kepulauan\"\nmsgstr \"\"\n\n#: id/id_choices.py:83\nmsgid \"NTB - Lombok\"\nmsgstr \"\"\n\n#: id/id_choices.py:84\nmsgid \"Papua dan Papua Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:86\nmsgid \"Cirebon\"\nmsgstr \"\"\n\n#: id/id_choices.py:87\nmsgid \"NTB - Sumbawa\"\nmsgstr \"\"\n\n#: id/id_choices.py:88\nmsgid \"NTT - Flores\"\nmsgstr \"\"\n\n#: id/id_choices.py:89\nmsgid \"NTT - Sumba\"\nmsgstr \"\"\n\n#: id/id_choices.py:90\nmsgid \"Bogor\"\nmsgstr \"\"\n\n#: id/id_choices.py:91\nmsgid \"Pekalongan\"\nmsgstr \"\"\n\n#: id/id_choices.py:92\nmsgid \"Semarang\"\nmsgstr \"\"\n\n#: id/id_choices.py:93\nmsgid \"Pati\"\nmsgstr \"\"\n\n#: id/id_choices.py:97\nmsgid \"Surabaya\"\nmsgstr \"\"\n\n#: id/id_choices.py:98\nmsgid \"Madura\"\nmsgstr \"\"\n\n#: id/id_choices.py:99\nmsgid \"Malang\"\nmsgstr \"\"\n\n#: id/id_choices.py:100\nmsgid \"Jember\"\nmsgstr \"\"\n\n#: id/id_choices.py:101\nmsgid \"Banyumas\"\nmsgstr \"\"\n\n#: id/id_choices.py:102\nmsgid \"Federal Government\"\nmsgstr \"ਫੈਡਰਲ ਸਰਕਾਰ\"\n\n#: id/id_choices.py:103\nmsgid \"Bojonegoro\"\nmsgstr \"\"\n\n#: id/id_choices.py:104\nmsgid \"Purwakarta\"\nmsgstr \"\"\n\n#: id/id_choices.py:105\nmsgid \"Sidoarjo\"\nmsgstr \"\"\n\n#: id/id_choices.py:106\nmsgid \"Garut\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:8\nmsgid \"Antrim\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:9\nmsgid \"Armagh\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:10\nmsgid \"Carlow\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:11\nmsgid \"Cavan\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:12\nmsgid \"Clare\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:13\nmsgid \"Cork\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:14\nmsgid \"Derry\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:15\nmsgid \"Donegal\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:16\nmsgid \"Down\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:17\nmsgid \"Dublin\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:18\nmsgid \"Fermanagh\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:19\nmsgid \"Galway\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:20\nmsgid \"Kerry\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:21\nmsgid \"Kildare\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:22\nmsgid \"Kilkenny\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:23\nmsgid \"Laois\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:24\nmsgid \"Leitrim\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:25\nmsgid \"Limerick\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:26\nmsgid \"Longford\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:27\nmsgid \"Louth\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:28\nmsgid \"Mayo\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:29\nmsgid \"Meath\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:30\nmsgid \"Monaghan\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:31\nmsgid \"Offaly\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:32\nmsgid \"Roscommon\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:33\nmsgid \"Sligo\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:34\nmsgid \"Tipperary\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:35\nmsgid \"Tyrone\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:36\nmsgid \"Waterford\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:37\nmsgid \"Westmeath\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:38\nmsgid \"Wexford\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:39\nmsgid \"Wicklow\"\nmsgstr \"\"\n\n#: il/forms.py:32\nmsgid \"Enter a postal code in the format XXXXX\"\nmsgstr \"\"\n\n#: il/forms.py:51\nmsgid \"Enter a valid ID number.\"\nmsgstr \"\"\n\n#: in_/forms.py:41\nmsgid \"Enter a zip code in the format XXXXXX or XXX XXX.\"\nmsgstr \"\"\n\n#: in_/forms.py:64\nmsgid \"Enter an Indian state or territory.\"\nmsgstr \"\"\n\n#: in_/forms.py:103\nmsgid \"Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.\"\nmsgstr \"\"\n\n#: is_/forms.py:22\nmsgid \"\"\n\"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.\"\nmsgstr \"\"\n\n#: is_/forms.py:23\nmsgid \"The Icelandic identification number is not valid.\"\nmsgstr \"\"\n\n#: it/forms.py:21\nmsgid \"Enter a valid zip code.\"\nmsgstr \"\"\n\n#: it/forms.py:48\nmsgid \"Enter a valid Social Security number.\"\nmsgstr \"\"\n\n#: it/forms.py:73\nmsgid \"Enter a valid VAT number.\"\nmsgstr \"\"\n\n#: jp/forms.py:19\nmsgid \"Enter a postal code in the format XXXXXXX or XXX-XXXX.\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:4\nmsgid \"Hokkaido\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:5\nmsgid \"Aomori\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:6\nmsgid \"Iwate\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:7\nmsgid \"Miyagi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:8\nmsgid \"Akita\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:9\nmsgid \"Yamagata\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:10\nmsgid \"Fukushima\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:11\nmsgid \"Ibaraki\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:12\nmsgid \"Tochigi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:13\nmsgid \"Gunma\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:14\nmsgid \"Saitama\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:15\nmsgid \"Chiba\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:16\nmsgid \"Tokyo\"\nmsgstr \"ਟੋਕੀਓ\"\n\n#: jp/jp_prefectures.py:17\nmsgid \"Kanagawa\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:18\nmsgid \"Yamanashi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:19\nmsgid \"Nagano\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:20\nmsgid \"Niigata\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:21\nmsgid \"Toyama\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:22\nmsgid \"Ishikawa\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:23\nmsgid \"Fukui\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:24\nmsgid \"Gifu\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:25\nmsgid \"Shizuoka\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:26\nmsgid \"Aichi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:27\nmsgid \"Mie\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:28\nmsgid \"Shiga\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:29\nmsgid \"Kyoto\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:30\nmsgid \"Osaka\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:31\nmsgid \"Hyogo\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:32\nmsgid \"Nara\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:33\nmsgid \"Wakayama\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:34\nmsgid \"Tottori\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:35\nmsgid \"Shimane\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:36\nmsgid \"Okayama\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:37\nmsgid \"Hiroshima\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:38\nmsgid \"Yamaguchi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:39\nmsgid \"Tokushima\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:40\nmsgid \"Kagawa\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:41\nmsgid \"Ehime\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:42\nmsgid \"Kochi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:43\nmsgid \"Fukuoka\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:44\nmsgid \"Saga\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:45\nmsgid \"Nagasaki\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:46\nmsgid \"Kumamoto\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:47\nmsgid \"Oita\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:48\nmsgid \"Miyazaki\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:49\nmsgid \"Kagoshima\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:50\nmsgid \"Okinawa\"\nmsgstr \"\"\n\n#: kw/forms.py:27\nmsgid \"Enter a valid Kuwaiti Civil ID number\"\nmsgstr \"\"\n\n#: mk/forms.py:18\nmsgid \"\"\n\"Identity card numbers must contain either 4 to 7 digits or an uppercase \"\n\"letter and 7 digits.\"\nmsgstr \"\"\n\n#: mk/forms.py:57 si/forms.py:24\nmsgid \"This field should contain exactly 13 digits.\"\nmsgstr \"\"\n\n#: mk/forms.py:58\nmsgid \"The first 7 digits of the UMCN must represent a valid past date.\"\nmsgstr \"\"\n\n#: mk/forms.py:59\nmsgid \"The UMCN is not valid.\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:10\nmsgid \"Aerodrom\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:11\nmsgid \"Aračinovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:12\nmsgid \"Berovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:13\nmsgid \"Bitola\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:14\nmsgid \"Bogdanci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:15\nmsgid \"Bogovinje\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:16\nmsgid \"Bosilovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:17\nmsgid \"Brvenica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:18\nmsgid \"Butel\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:19\nmsgid \"Valandovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:20\nmsgid \"Vasilevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:21\nmsgid \"Vevčani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:22\nmsgid \"Veles\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:23\nmsgid \"Vinica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:24\nmsgid \"Vraneštica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:25\nmsgid \"Vrapčište\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:26\nmsgid \"Gazi Baba\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:27\nmsgid \"Gevgelija\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:28\nmsgid \"Gostivar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:29\nmsgid \"Gradsko\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:30\nmsgid \"Debar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:31\nmsgid \"Debarca\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:32\nmsgid \"Delčevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:33\nmsgid \"Demir Kapija\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:34\nmsgid \"Demir Hisar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:35\nmsgid \"Dolneni\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:36\nmsgid \"Drugovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:37\nmsgid \"Gjorče Petrov\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:38\nmsgid \"Želino\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:39\nmsgid \"Zajas\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:40\nmsgid \"Zelenikovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:41\nmsgid \"Zrnovci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:42\nmsgid \"Ilinden\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:43\nmsgid \"Jegunovce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:44\nmsgid \"Kavadarci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:45\nmsgid \"Karbinci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:46\nmsgid \"Karpoš\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:47\nmsgid \"Kisela Voda\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:48\nmsgid \"Kičevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:49\nmsgid \"Konče\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:50\nmsgid \"Koćani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:51\nmsgid \"Kratovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:52\nmsgid \"Kriva Palanka\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:53\nmsgid \"Krivogaštani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:54\nmsgid \"Kruševo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:55\nmsgid \"Kumanovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:56\nmsgid \"Lipkovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:57\nmsgid \"Lozovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:58\nmsgid \"Mavrovo i Rostuša\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:59\nmsgid \"Makedonska Kamenica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:60\nmsgid \"Makedonski Brod\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:61\nmsgid \"Mogila\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:62\nmsgid \"Negotino\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:63\nmsgid \"Novaci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:64\nmsgid \"Novo Selo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:65\nmsgid \"Oslomej\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:66\nmsgid \"Ohrid\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:67\nmsgid \"Petrovec\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:68\nmsgid \"Pehčevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:69\nmsgid \"Plasnica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:70\nmsgid \"Prilep\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:71\nmsgid \"Probištip\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:72\nmsgid \"Radoviš\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:73\nmsgid \"Rankovce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:74\nmsgid \"Resen\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:75\nmsgid \"Rosoman\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:76\nmsgid \"Saraj\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:77\nmsgid \"Sveti Nikole\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:78\nmsgid \"Sopište\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:79\nmsgid \"Star Dojran\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:80\nmsgid \"Staro Nagoričane\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:81\nmsgid \"Struga\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:82\nmsgid \"Strumica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:83\nmsgid \"Studeničani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:84\nmsgid \"Tearce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:85\nmsgid \"Tetovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:86\nmsgid \"Centar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:87\nmsgid \"Centar-Župa\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:88\nmsgid \"Čair\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:89\nmsgid \"Čaška\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:90\nmsgid \"Češinovo-Obleševo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:91\nmsgid \"Čučer-Sandevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:92\nmsgid \"Štip\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:93\nmsgid \"Šuto Orizari\"\nmsgstr \"\"\n\n#: mk/models.py:11\nmsgid \"Macedonian identity card number\"\nmsgstr \"\"\n\n#: mk/models.py:25\nmsgid \"A Macedonian municipality (2 character code)\"\nmsgstr \"\"\n\n#: mk/models.py:35\nmsgid \"Unique master citizen number (13 digits)\"\nmsgstr \"\"\n\n#: mx/forms.py:67\nmsgid \"Enter a valid zip code in the format XXXXX.\"\nmsgstr \"\"\n\n#: mx/forms.py:110\nmsgid \"Enter a valid RFC.\"\nmsgstr \"\"\n\n#: mx/forms.py:111\nmsgid \"Invalid checksum for RFC.\"\nmsgstr \"\"\n\n#: mx/forms.py:191\nmsgid \"Enter a valid CURP.\"\nmsgstr \"\"\n\n#: mx/forms.py:192\nmsgid \"Invalid checksum for CURP.\"\nmsgstr \"\"\n\n#: mx/models.py:14\nmsgid \"Mexico state (three uppercase letters)\"\nmsgstr \"\"\n\n#: mx/models.py:27\nmsgid \"Mexico zip code\"\nmsgstr \"\"\n\n#: mx/models.py:44\nmsgid \"Mexican RFC\"\nmsgstr \"\"\n\n#: mx/models.py:61\nmsgid \"Mexican CURP\"\nmsgstr \"\"\n\n#: mx/mx_states.py:14\nmsgid \"Aguascalientes\"\nmsgstr \"\"\n\n#: mx/mx_states.py:15\nmsgid \"Baja California\"\nmsgstr \"\"\n\n#: mx/mx_states.py:16\nmsgid \"Baja California Sur\"\nmsgstr \"\"\n\n#: mx/mx_states.py:17\nmsgid \"Campeche\"\nmsgstr \"\"\n\n#: mx/mx_states.py:18\nmsgid \"Chihuahua\"\nmsgstr \"\"\n\n#: mx/mx_states.py:19\nmsgid \"Chiapas\"\nmsgstr \"\"\n\n#: mx/mx_states.py:20\nmsgid \"Coahuila\"\nmsgstr \"\"\n\n#: mx/mx_states.py:21\nmsgid \"Colima\"\nmsgstr \"\"\n\n#: mx/mx_states.py:22\nmsgid \"Distrito Federal\"\nmsgstr \"\"\n\n#: mx/mx_states.py:23\nmsgid \"Durango\"\nmsgstr \"\"\n\n#: mx/mx_states.py:24\nmsgid \"Guerrero\"\nmsgstr \"\"\n\n#: mx/mx_states.py:25\nmsgid \"Guanajuato\"\nmsgstr \"\"\n\n#: mx/mx_states.py:26\nmsgid \"Hidalgo\"\nmsgstr \"\"\n\n#: mx/mx_states.py:27\nmsgid \"Jalisco\"\nmsgstr \"\"\n\n#: mx/mx_states.py:28\nmsgid \"Estado de México\"\nmsgstr \"\"\n\n#: mx/mx_states.py:29\nmsgid \"Michoacán\"\nmsgstr \"\"\n\n#: mx/mx_states.py:30\nmsgid \"Morelos\"\nmsgstr \"\"\n\n#: mx/mx_states.py:31\nmsgid \"Nayarit\"\nmsgstr \"\"\n\n#: mx/mx_states.py:32\nmsgid \"Nuevo León\"\nmsgstr \"\"\n\n#: mx/mx_states.py:33\nmsgid \"Oaxaca\"\nmsgstr \"\"\n\n#: mx/mx_states.py:34\nmsgid \"Puebla\"\nmsgstr \"\"\n\n#: mx/mx_states.py:35\nmsgid \"Querétaro\"\nmsgstr \"\"\n\n#: mx/mx_states.py:36\nmsgid \"Quintana Roo\"\nmsgstr \"\"\n\n#: mx/mx_states.py:37\nmsgid \"Sinaloa\"\nmsgstr \"\"\n\n#: mx/mx_states.py:38\nmsgid \"San Luis Potosí\"\nmsgstr \"\"\n\n#: mx/mx_states.py:39\nmsgid \"Sonora\"\nmsgstr \"\"\n\n#: mx/mx_states.py:40\nmsgid \"Tabasco\"\nmsgstr \"\"\n\n#: mx/mx_states.py:41\nmsgid \"Tamaulipas\"\nmsgstr \"\"\n\n#: mx/mx_states.py:42\nmsgid \"Tlaxcala\"\nmsgstr \"\"\n\n#: mx/mx_states.py:43\nmsgid \"Veracruz\"\nmsgstr \"\"\n\n#: mx/mx_states.py:44\nmsgid \"Yucatán\"\nmsgstr \"\"\n\n#: mx/mx_states.py:45\nmsgid \"Zacatecas\"\nmsgstr \"\"\n\n#: nl/forms.py:26\nmsgid \"Enter a valid postal code\"\nmsgstr \"\"\n\n#: nl/forms.py:82\nmsgid \"Enter a valid SoFi number\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:4\nmsgid \"Drenthe\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:5\nmsgid \"Flevoland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:6\nmsgid \"Friesland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:7\nmsgid \"Gelderland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:8\nmsgid \"Groningen\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:10\nmsgid \"Noord-Brabant\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:11\nmsgid \"Noord-Holland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:12\nmsgid \"Overijssel\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:13\nmsgid \"Utrecht\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:14\nmsgid \"Zeeland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:15\nmsgid \"Zuid-Holland\"\nmsgstr \"\"\n\n#: no/forms.py:39\nmsgid \"Enter a valid Norwegian social security number.\"\nmsgstr \"\"\n\n#: pe/forms.py:28\nmsgid \"This field requires 8 digits.\"\nmsgstr \"\"\n\n#: pe/forms.py:56\nmsgid \"This field requires 11 digits.\"\nmsgstr \"ਇਹ ਖੇਤਰ ਲਈ ੧੧ ਅੰਕ ਚਾਹੀਦੇ ਹਨ।\"\n\n#: pl/forms.py:42\nmsgid \"National Identification Number consists of 11 digits.\"\nmsgstr \"\"\n\n#: pl/forms.py:43\nmsgid \"Wrong checksum for the National Identification Number.\"\nmsgstr \"\"\n\n#: pl/forms.py:79\nmsgid \"National ID Card Number consists of 3 letters and 6 digits.\"\nmsgstr \"\"\n\n#: pl/forms.py:80\nmsgid \"Wrong checksum for the National ID Card Number.\"\nmsgstr \"\"\n\n#: pl/forms.py:131\nmsgid \"\"\n\"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or \"\n\"XXXXXXXXXX.\"\nmsgstr \"\"\n\n#: pl/forms.py:132\nmsgid \"Wrong checksum for the Tax Number (NIP).\"\nmsgstr \"\"\n\n#: pl/forms.py:171\nmsgid \"National Business Register Number (REGON) consists of 9 or 14 digits.\"\nmsgstr \"\"\n\n#: pl/forms.py:172\nmsgid \"Wrong checksum for the National Business Register Number (REGON).\"\nmsgstr \"\"\n\n#: pl/forms.py:212\nmsgid \"Enter a postal code in the format XX-XXX.\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:8\nmsgid \"Lower Silesia\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:9\nmsgid \"Kuyavia-Pomerania\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:10\nmsgid \"Lublin\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:11\nmsgid \"Lubusz\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:12\nmsgid \"Lodz\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:13\nmsgid \"Lesser Poland\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:14\nmsgid \"Masovia\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:15\nmsgid \"Opole\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:16\nmsgid \"Subcarpatia\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:17\nmsgid \"Podlasie\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:18\nmsgid \"Pomerania\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:19\nmsgid \"Silesia\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:20\nmsgid \"Swietokrzyskie\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:21\nmsgid \"Warmia-Masuria\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:22\nmsgid \"Greater Poland\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:23\nmsgid \"West Pomerania\"\nmsgstr \"\"\n\n#: pt/forms.py:19\nmsgid \"Enter a zip code in the format XXXX-XXX.\"\nmsgstr \"\"\n\n#: pt/forms.py:39\nmsgid \"Phone numbers must have 9 digits, or start by + or 00.\"\nmsgstr \"\"\n\n#: ro/forms.py:22\nmsgid \"Enter a valid CIF.\"\nmsgstr \"\"\n\n#: ro/forms.py:59\nmsgid \"Enter a valid CNP.\"\nmsgstr \"\"\n\n#: ro/forms.py:143\nmsgid \"Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format\"\nmsgstr \"\"\n\n#: ro/forms.py:175\nmsgid \"Phone numbers must be in XXXX-XXXXXX format.\"\nmsgstr \"\"\n\n#: ro/forms.py:200\nmsgid \"Enter a valid postal code in the format XXXXXX\"\nmsgstr \"\"\n\n#: ru/forms.py:37\nmsgid \"Enter a postal code in the format XXXXXX.\"\nmsgstr \"\"\n\n#: ru/forms.py:50\nmsgid \"Enter a passport number in the format XXXX XXXXXX.\"\nmsgstr \"\"\n\n#: ru/forms.py:63\nmsgid \"Enter a passport number in the format XX XXXXXXX.\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:10\nmsgid \"Central Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:11\nmsgid \"South Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:12\nmsgid \"North-West Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:13\nmsgid \"Far-East Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:14\nmsgid \"Siberian Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:15\nmsgid \"Ural Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:16\nmsgid \"Privolzhsky Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:17\nmsgid \"North-Caucasian Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:21\nmsgid \"Moskva\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:22\nmsgid \"Saint-Peterburg\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:23\nmsgid \"Moskovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:24\nmsgid \"Adygeya, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:25\nmsgid \"Bashkortostan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:26\nmsgid \"Buryatia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:27\nmsgid \"Altay, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:28\nmsgid \"Dagestan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:29\nmsgid \"Ingushskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:30\nmsgid \"Kabardino-Balkarskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:31\nmsgid \"Kalmykia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:32\nmsgid \"Karachaevo-Cherkesskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:33\nmsgid \"Karelia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:34\nmsgid \"Komi, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:35\nmsgid \"Mariy Ehl, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:36\nmsgid \"Mordovia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:37\nmsgid \"Sakha, Respublika (Yakutiya)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:38\nmsgid \"Severnaya Osetia, Respublika (Alania)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:39\nmsgid \"Tatarstan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:40\nmsgid \"Tyva, Respublika (Tuva)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:41\nmsgid \"Udmurtskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:42\nmsgid \"Khakassiya, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:43\nmsgid \"Chechenskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:44\nmsgid \"Chuvashskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:45\nmsgid \"Altayskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:46\nmsgid \"Zabaykalskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:47\nmsgid \"Kamchatskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:48\nmsgid \"Krasnodarskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:49\nmsgid \"Krasnoyarskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:50\nmsgid \"Permskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:51\nmsgid \"Primorskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:52\nmsgid \"Stavropol'siyy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:53\nmsgid \"Khabarovskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:54\nmsgid \"Amurskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:55\nmsgid \"Arkhangel'skaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:56\nmsgid \"Astrakhanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:57\nmsgid \"Belgorodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:58\nmsgid \"Bryanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:59\nmsgid \"Vladimirskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:60\nmsgid \"Volgogradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:61\nmsgid \"Vologodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:62\nmsgid \"Voronezhskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:63\nmsgid \"Ivanovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:64\nmsgid \"Irkutskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:65\nmsgid \"Kaliningradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:66\nmsgid \"Kaluzhskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:67\nmsgid \"Kemerovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:68\nmsgid \"Kirovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:69\nmsgid \"Kostromskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:70\nmsgid \"Kurganskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:71\nmsgid \"Kurskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:72\nmsgid \"Leningradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:73\nmsgid \"Lipeckaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:74\nmsgid \"Magadanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:75\nmsgid \"Murmanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:76\nmsgid \"Nizhegorodskaja oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:77\nmsgid \"Novgorodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:78\nmsgid \"Novosibirskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:79\nmsgid \"Omskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:80\nmsgid \"Orenburgskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:81\nmsgid \"Orlovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:82\nmsgid \"Penzenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:83\nmsgid \"Pskovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:84\nmsgid \"Rostovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:85\nmsgid \"Rjazanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:86\nmsgid \"Samarskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:87\nmsgid \"Saratovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:88\nmsgid \"Sakhalinskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:89\nmsgid \"Sverdlovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:90\nmsgid \"Smolenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:91\nmsgid \"Tambovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:92\nmsgid \"Tverskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:93\nmsgid \"Tomskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:94\nmsgid \"Tul'skaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:95\nmsgid \"Tyumenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:96\nmsgid \"Ul'ianovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:97\nmsgid \"Chelyabinskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:98\nmsgid \"Yaroslavskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:99\nmsgid \"Evreyskaya avtonomnaja oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:100\nmsgid \"Neneckiy autonomnyy okrug\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:101\nmsgid \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:102\nmsgid \"Chukotskiy avtonomnyy okrug\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:103\nmsgid \"Yamalo-Neneckiy avtonomnyy okrug\"\nmsgstr \"\"\n\n#: se/forms.py:54\nmsgid \"Enter a valid Swedish organisation number.\"\nmsgstr \"\"\n\n#: se/forms.py:111\nmsgid \"Enter a valid Swedish personal identity number.\"\nmsgstr \"\"\n\n#: se/forms.py:112\nmsgid \"Co-ordination numbers are not allowed.\"\nmsgstr \"\"\n\n#: se/forms.py:154\nmsgid \"Enter a Swedish postal code in the format XXXXX.\"\nmsgstr \"\"\n\n#: se/se_counties.py:16\nmsgid \"Stockholm\"\nmsgstr \"\"\n\n#: se/se_counties.py:17\nmsgid \"Västerbotten\"\nmsgstr \"\"\n\n#: se/se_counties.py:18\nmsgid \"Norrbotten\"\nmsgstr \"\"\n\n#: se/se_counties.py:19\nmsgid \"Uppsala\"\nmsgstr \"\"\n\n#: se/se_counties.py:20\nmsgid \"Södermanland\"\nmsgstr \"\"\n\n#: se/se_counties.py:21\nmsgid \"Östergötland\"\nmsgstr \"\"\n\n#: se/se_counties.py:22\nmsgid \"Jönköping\"\nmsgstr \"\"\n\n#: se/se_counties.py:23\nmsgid \"Kronoberg\"\nmsgstr \"\"\n\n#: se/se_counties.py:24\nmsgid \"Kalmar\"\nmsgstr \"\"\n\n#: se/se_counties.py:25\nmsgid \"Gotland\"\nmsgstr \"\"\n\n#: se/se_counties.py:26\nmsgid \"Blekinge\"\nmsgstr \"\"\n\n#: se/se_counties.py:27\nmsgid \"Skåne\"\nmsgstr \"\"\n\n#: se/se_counties.py:28\nmsgid \"Halland\"\nmsgstr \"\"\n\n#: se/se_counties.py:29\nmsgid \"Västra Götaland\"\nmsgstr \"\"\n\n#: se/se_counties.py:30\nmsgid \"Värmland\"\nmsgstr \"\"\n\n#: se/se_counties.py:31\nmsgid \"Örebro\"\nmsgstr \"\"\n\n#: se/se_counties.py:32\nmsgid \"Västmanland\"\nmsgstr \"\"\n\n#: se/se_counties.py:33\nmsgid \"Dalarna\"\nmsgstr \"\"\n\n#: se/se_counties.py:34\nmsgid \"Gävleborg\"\nmsgstr \"\"\n\n#: se/se_counties.py:35\nmsgid \"Västernorrland\"\nmsgstr \"\"\n\n#: se/se_counties.py:36\nmsgid \"Jämtland\"\nmsgstr \"\"\n\n#: si/forms.py:25\nmsgid \"The first 7 digits of the EMSO must represent a valid past date.\"\nmsgstr \"\"\n\n#: si/forms.py:26\nmsgid \"The EMSO is not valid.\"\nmsgstr \"\"\n\n#: si/forms.py:86\nmsgid \"Enter a valid tax number in form SIXXXXXXXX\"\nmsgstr \"\"\n\n#: si/forms.py:151\nmsgid \"Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:8\nmsgid \"Banska Bystrica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:9\nmsgid \"Banska Stiavnica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:10\nmsgid \"Bardejov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:11\nmsgid \"Banovce nad Bebravou\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:12\nmsgid \"Brezno\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:13\nmsgid \"Bratislava I\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:14\nmsgid \"Bratislava II\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:15\nmsgid \"Bratislava III\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:16\nmsgid \"Bratislava IV\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:17\nmsgid \"Bratislava V\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:18\nmsgid \"Bytca\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:19\nmsgid \"Cadca\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:20\nmsgid \"Detva\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:21\nmsgid \"Dolny Kubin\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:22\nmsgid \"Dunajska Streda\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:23\nmsgid \"Galanta\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:24\nmsgid \"Gelnica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:25\nmsgid \"Hlohovec\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:26\nmsgid \"Humenne\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:27\nmsgid \"Ilava\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:28\nmsgid \"Kezmarok\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:29\nmsgid \"Komarno\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:30\nmsgid \"Kosice I\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:31\nmsgid \"Kosice II\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:32\nmsgid \"Kosice III\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:33\nmsgid \"Kosice IV\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:34\nmsgid \"Kosice - okolie\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:35\nmsgid \"Krupina\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:36\nmsgid \"Kysucke Nove Mesto\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:37\nmsgid \"Levice\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:38\nmsgid \"Levoca\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:39\nmsgid \"Liptovsky Mikulas\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:40\nmsgid \"Lucenec\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:41\nmsgid \"Malacky\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:42\nmsgid \"Martin\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:43\nmsgid \"Medzilaborce\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:44\nmsgid \"Michalovce\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:45\nmsgid \"Myjava\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:46\nmsgid \"Namestovo\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:47\nmsgid \"Nitra\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:48\nmsgid \"Nove Mesto nad Vahom\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:49\nmsgid \"Nove Zamky\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:50\nmsgid \"Partizanske\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:51\nmsgid \"Pezinok\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:52\nmsgid \"Piestany\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:53\nmsgid \"Poltar\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:54\nmsgid \"Poprad\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:55\nmsgid \"Povazska Bystrica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:56\nmsgid \"Presov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:57\nmsgid \"Prievidza\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:58\nmsgid \"Puchov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:59\nmsgid \"Revuca\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:60\nmsgid \"Rimavska Sobota\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:61\nmsgid \"Roznava\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:62\nmsgid \"Ruzomberok\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:63\nmsgid \"Sabinov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:64\nmsgid \"Senec\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:65\nmsgid \"Senica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:66\nmsgid \"Skalica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:67\nmsgid \"Snina\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:68\nmsgid \"Sobrance\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:69\nmsgid \"Spisska Nova Ves\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:70\nmsgid \"Stara Lubovna\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:71\nmsgid \"Stropkov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:72\nmsgid \"Svidnik\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:73\nmsgid \"Sala\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:74\nmsgid \"Topolcany\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:75\nmsgid \"Trebisov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:76\nmsgid \"Trencin\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:77\nmsgid \"Trnava\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:78\nmsgid \"Turcianske Teplice\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:79\nmsgid \"Tvrdosin\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:80\nmsgid \"Velky Krtis\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:81\nmsgid \"Vranov nad Toplou\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:82\nmsgid \"Zlate Moravce\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:83\nmsgid \"Zvolen\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:84\nmsgid \"Zarnovica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:85\nmsgid \"Ziar nad Hronom\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:86\nmsgid \"Zilina\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:8\nmsgid \"Banska Bystrica region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:9\nmsgid \"Bratislava region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:10\nmsgid \"Kosice region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:11\nmsgid \"Nitra region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:12\nmsgid \"Presov region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:13\nmsgid \"Trencin region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:14\nmsgid \"Trnava region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:15\nmsgid \"Zilina region\"\nmsgstr \"\"\n\n#: tr/forms.py:21\nmsgid \"Enter a postal code in the format XXXXX.\"\nmsgstr \"\"\n\n#: tr/forms.py:42\nmsgid \"Phone numbers must be in 0XXX XXX XXXX format.\"\nmsgstr \"\"\n\n#: tr/forms.py:69\nmsgid \"Enter a valid Turkish Identification number.\"\nmsgstr \"\"\n\n#: tr/forms.py:70\nmsgid \"Turkish Identification number must be 11 digits.\"\nmsgstr \"\"\n\n#: us/forms.py:21\nmsgid \"Enter a zip code in the format XXXXX or XXXXX-XXXX.\"\nmsgstr \"\"\n\n#: us/forms.py:59\nmsgid \"Enter a valid U.S. Social Security number in XXX-XX-XXXX format.\"\nmsgstr \"\"\n\n#: us/forms.py:92\nmsgid \"Enter a U.S. state or territory.\"\nmsgstr \"\"\n\n#: us/models.py:8\nmsgid \"U.S. state (two uppercase letters)\"\nmsgstr \"\"\n\n#: us/models.py:17\nmsgid \"U.S. postal code (two uppercase letters)\"\nmsgstr \"\"\n\n#: us/models.py:26\nmsgid \"Phone number\"\nmsgstr \"ਫੋਨ ਨੰਬਰ\"\n\n#: uy/forms.py:29\nmsgid \"Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.\"\nmsgstr \"\"\n\n#: uy/forms.py:31\nmsgid \"Enter a valid CI number.\"\nmsgstr \"\"\n\n#: za/forms.py:22\nmsgid \"Enter a valid South African ID number\"\nmsgstr \"\"\n\n#: za/forms.py:56\nmsgid \"Enter a valid South African postal code\"\nmsgstr \"\"\n\n#: za/za_provinces.py:4\nmsgid \"Eastern Cape\"\nmsgstr \"\"\n\n#: za/za_provinces.py:5\nmsgid \"Free State\"\nmsgstr \"\"\n\n#: za/za_provinces.py:6\nmsgid \"Gauteng\"\nmsgstr \"\"\n\n#: za/za_provinces.py:7\nmsgid \"KwaZulu-Natal\"\nmsgstr \"\"\n\n#: za/za_provinces.py:8\nmsgid \"Limpopo\"\nmsgstr \"\"\n\n#: za/za_provinces.py:9\nmsgid \"Mpumalanga\"\nmsgstr \"\"\n\n#: za/za_provinces.py:10\nmsgid \"Northern Cape\"\nmsgstr \"\"\n\n#: za/za_provinces.py:11\nmsgid \"North West\"\nmsgstr \"\"\n\n#: za/za_provinces.py:12\nmsgid \"Western Cape\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/locale/pl/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# angularcircle <angular.circle@gmail.com>, 2011.\n#   <angular.circle@gmail.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# konryd <konryd@gmail.com>, 2011.\n# Roman Barczyński <rombar@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-10-17 09:16+0000\\n\"\n\"Last-Translator: Roman Barczyński <rombar@gmail.com>\\n\"\n\"Language-Team: Polish (http://www.transifex.com/projects/p/django/language/\"\n\"pl/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: pl\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 \"\n\"|| n%100>=20) ? 1 : 2);\\n\"\n\n#: ar/forms.py:30\nmsgid \"Enter a postal code in the format NNNN or ANNNNAAA.\"\nmsgstr \"Wpisz kod pocztowy w formacie NNNN lub ANNNNAAA.\"\n\n#: ar/forms.py:52 br/forms.py:95 br/forms.py:134 pe/forms.py:27 pe/forms.py:55\nmsgid \"This field requires only numbers.\"\nmsgstr \"To pole może zawierać jedynie liczby.\"\n\n#: ar/forms.py:53\nmsgid \"This field requires 7 or 8 digits.\"\nmsgstr \"To pole musi zawierać 7 lub 8 cyfr.\"\n\n#: ar/forms.py:82\nmsgid \"Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.\"\nmsgstr \"Podaj poprawny numer CUIT w formacie XX-XXXXXXXX-X lub XXXXXXXXXXXX.\"\n\n#: ar/forms.py:83\nmsgid \"Invalid CUIT.\"\nmsgstr \"Niepoprawny CUIT\"\n\n#: ar/forms.py:84\nmsgid \"Invalid legal type. Type must be 27, 20, 23 or 30.\"\nmsgstr \"\"\n\n#: at/at_states.py:5\nmsgid \"Burgenland\"\nmsgstr \"Burgenland\"\n\n#: at/at_states.py:6\nmsgid \"Carinthia\"\nmsgstr \"Karyntia\"\n\n#: at/at_states.py:7\nmsgid \"Lower Austria\"\nmsgstr \"Dolna Austria\"\n\n#: at/at_states.py:8\nmsgid \"Upper Austria\"\nmsgstr \"Górna Austria\"\n\n#: at/at_states.py:9\nmsgid \"Salzburg\"\nmsgstr \"Salzburg\"\n\n#: at/at_states.py:10\nmsgid \"Styria\"\nmsgstr \"Styria\"\n\n#: at/at_states.py:11\nmsgid \"Tyrol\"\nmsgstr \"Tyrol\"\n\n#: at/at_states.py:12\nmsgid \"Vorarlberg\"\nmsgstr \"Vorarlberg\"\n\n#: at/at_states.py:13\nmsgid \"Vienna\"\nmsgstr \"Wiedeń\"\n\n#: at/forms.py:22 ch/forms.py:22 no/forms.py:19\nmsgid \"Enter a zip code in the format XXXX.\"\nmsgstr \"Wpisz kod pocztowy w formacie XXXX.\"\n\n#: at/forms.py:50\nmsgid \"Enter a valid Austrian Social Security Number in XXXX XXXXXX format.\"\nmsgstr \"\"\n\"Wpisz poprawny numer austriackiego ubezpieczenia w formacie XXXX XXXXXX.\"\n\n#: au/forms.py:26\nmsgid \"Enter a 4 digit postcode.\"\nmsgstr \"Wprowadź 4 cyfrowy kod pocztowy.\"\n\n#: au/models.py:9\nmsgid \"Australian State\"\nmsgstr \"Stan w Australii\"\n\n#: au/models.py:19\nmsgid \"Australian Postcode\"\nmsgstr \"Australijski kod pocztowy\"\n\n#: au/models.py:33\nmsgid \"Australian Phone number\"\nmsgstr \"Australijski numer telefonu\"\n\n#: be/be_provinces.py:5\nmsgid \"Antwerp\"\nmsgstr \"Antwerpia\"\n\n#: be/be_provinces.py:6\nmsgid \"Brussels\"\nmsgstr \"Bruksela\"\n\n#: be/be_provinces.py:7\nmsgid \"East Flanders\"\nmsgstr \"Flandria Wschodnia\"\n\n#: be/be_provinces.py:8\nmsgid \"Flemish Brabant\"\nmsgstr \"Brabancja Flamandzka\"\n\n#: be/be_provinces.py:9\nmsgid \"Hainaut\"\nmsgstr \"Hainaut\"\n\n#: be/be_provinces.py:10\nmsgid \"Liege\"\nmsgstr \"Liege\"\n\n#: be/be_provinces.py:11 nl/nl_provinces.py:9\nmsgid \"Limburg\"\nmsgstr \"Limburgia\"\n\n#: be/be_provinces.py:12\nmsgid \"Luxembourg\"\nmsgstr \"Luksemburg\"\n\n#: be/be_provinces.py:13\nmsgid \"Namur\"\nmsgstr \"Namur\"\n\n#: be/be_provinces.py:14\nmsgid \"Walloon Brabant\"\nmsgstr \"Brabancja Walońska\"\n\n#: be/be_provinces.py:15\nmsgid \"West Flanders\"\nmsgstr \"Flandria Zachodnia\"\n\n#: be/be_regions.py:5\nmsgid \"Brussels Capital Region\"\nmsgstr \"Region Stołeczny Brukseli\"\n\n#: be/be_regions.py:6\nmsgid \"Flemish Region\"\nmsgstr \"Region Flamandzki\"\n\n#: be/be_regions.py:7\nmsgid \"Wallonia\"\nmsgstr \"Walonia\"\n\n#: be/forms.py:25\nmsgid \"Enter a valid postal code in the range and format 1XXX - 9XXX.\"\nmsgstr \"Wpisz kod pocztowy w zakresie i formacie 1XXX - 9XXX.\"\n\n#: be/forms.py:48\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\nmsgstr \"\"\n\"Wpisz poprawny numer telefoniczny w formacie 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx lub 04xxxxxxxx.\"\n\n#: br/forms.py:22\nmsgid \"Enter a zip code in the format XXXXX-XXX.\"\nmsgstr \"Wpisz kod pocztowy w formacie XXXXX-XXX.\"\n\n#: br/forms.py:31\nmsgid \"Phone numbers must be in XX-XXXX-XXXX format.\"\nmsgstr \"Numery telefoniczne muszą być w formacie XX-XXXX-XXXX.\"\n\n#: br/forms.py:58\nmsgid \"\"\n\"Select a valid brazilian state. That state is not one of the available \"\n\"states.\"\nmsgstr \"\"\n\"Wybierz poprawny brazylijski stan. Ten stan nie jest jednym z dostępnych \"\n\"stanów.\"\n\n#: br/forms.py:93\nmsgid \"Invalid CPF number.\"\nmsgstr \"Błędny numer CPF.\"\n\n#: br/forms.py:94\nmsgid \"This field requires at most 11 digits or 14 characters.\"\nmsgstr \"To pole nie może zawierać więcej niż 11 cyfr lub 14 znaków.\"\n\n#: br/forms.py:133\nmsgid \"Invalid CNPJ number.\"\nmsgstr \"Błędny numer CNPJ.\"\n\n#: br/forms.py:135\nmsgid \"This field requires at least 14 digits\"\nmsgstr \"To pole musi zawierać co najmniej 14 cyfr\"\n\n#: ca/forms.py:29\nmsgid \"Enter a postal code in the format XXX XXX.\"\nmsgstr \"Wpisz kod pocztowy w formacie XXX XXX.\"\n\n#: ca/forms.py:47 us/forms.py:30\nmsgid \"Phone numbers must be in XXX-XXX-XXXX format.\"\nmsgstr \"Numery telefoniczne muszą być w formacie XXX-XXX-XXXX.\"\n\n#: ca/forms.py:69\nmsgid \"Enter a Canadian province or territory.\"\nmsgstr \"\"\n\n#: ca/forms.py:110\nmsgid \"Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.\"\nmsgstr \"\"\n\"Wpisz poprawny numer kanadyjskiego ubezpieczenia w formacie XXX-XXX-XXXX.\"\n\n#: ch/ch_states.py:5\nmsgid \"Aargau\"\nmsgstr \"Argowia\"\n\n#: ch/ch_states.py:6\nmsgid \"Appenzell Innerrhoden\"\nmsgstr \"Appenzell Innerrhoden\"\n\n#: ch/ch_states.py:7\nmsgid \"Appenzell Ausserrhoden\"\nmsgstr \"Appenzell Ausserrhoden\"\n\n#: ch/ch_states.py:8\nmsgid \"Basel-Stadt\"\nmsgstr \"Bazylea-miasto\"\n\n#: ch/ch_states.py:9\nmsgid \"Basel-Land\"\nmsgstr \"Bazylea-okręg\"\n\n#: ch/ch_states.py:10\nmsgid \"Berne\"\nmsgstr \"Berno\"\n\n#: ch/ch_states.py:11\nmsgid \"Fribourg\"\nmsgstr \"Fryburg\"\n\n#: ch/ch_states.py:12\nmsgid \"Geneva\"\nmsgstr \"Genewa\"\n\n#: ch/ch_states.py:13\nmsgid \"Glarus\"\nmsgstr \"Glarus\"\n\n#: ch/ch_states.py:14\nmsgid \"Graubuenden\"\nmsgstr \"Gryzonia\"\n\n#: ch/ch_states.py:15\nmsgid \"Jura\"\nmsgstr \"Jura\"\n\n#: ch/ch_states.py:16\nmsgid \"Lucerne\"\nmsgstr \"Lucerna\"\n\n#: ch/ch_states.py:17\nmsgid \"Neuchatel\"\nmsgstr \"Neuchatel\"\n\n#: ch/ch_states.py:18\nmsgid \"Nidwalden\"\nmsgstr \"Nidwalden\"\n\n#: ch/ch_states.py:19\nmsgid \"Obwalden\"\nmsgstr \"Obwalden\"\n\n#: ch/ch_states.py:20\nmsgid \"Schaffhausen\"\nmsgstr \"Szafuza\"\n\n#: ch/ch_states.py:21\nmsgid \"Schwyz\"\nmsgstr \"Schwyz\"\n\n#: ch/ch_states.py:22\nmsgid \"Solothurn\"\nmsgstr \"Solura\"\n\n#: ch/ch_states.py:23\nmsgid \"St. Gallen\"\nmsgstr \"Sankt Gallen\"\n\n#: ch/ch_states.py:24\nmsgid \"Thurgau\"\nmsgstr \"Turgowia\"\n\n#: ch/ch_states.py:25\nmsgid \"Ticino\"\nmsgstr \"Ticino\"\n\n#: ch/ch_states.py:26\nmsgid \"Uri\"\nmsgstr \"Uri\"\n\n#: ch/ch_states.py:27\nmsgid \"Valais\"\nmsgstr \"Valais\"\n\n#: ch/ch_states.py:28\nmsgid \"Vaud\"\nmsgstr \"Vaud\"\n\n#: ch/ch_states.py:29\nmsgid \"Zug\"\nmsgstr \"Zug\"\n\n#: ch/ch_states.py:30\nmsgid \"Zurich\"\nmsgstr \"Zurych\"\n\n#: ch/forms.py:37\nmsgid \"Phone numbers must be in 0XX XXX XX XX format.\"\nmsgstr \"\"\n\n#: ch/forms.py:68\nmsgid \"\"\n\"Enter a valid Swiss identity or passport card number in X1234567<0 or \"\n\"1234567890 format.\"\nmsgstr \"\"\n\"Podaj poprawny numer szwajcarskiego dowodu osobistego lub paszportu w \"\n\"formacie X1234567<0 lub 1234567890.\"\n\n#: cl/forms.py:32\nmsgid \"Enter a valid Chilean RUT.\"\nmsgstr \"Wpisz poprawny chilijski RUT.\"\n\n#: cl/forms.py:33\nmsgid \"Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.\"\nmsgstr \"Podaj poprawny chilijski RUT w formacie XX.XXX.XXX-X.\"\n\n#: cl/forms.py:34\nmsgid \"The Chilean RUT is not valid.\"\nmsgstr \"Podany chilijski RUT jest nieprawidłowy.\"\n\n#: cn/forms.py:84\nmsgid \"Enter a post code in the format XXXXXX.\"\nmsgstr \"Wprowadź kod pocztowy w formacie XXXXXX.\"\n\n#: cn/forms.py:105\nmsgid \"ID Card Number consists of 15 or 18 digits.\"\nmsgstr \"Nr dowodu składa się z 15 lub 18 cyfr.\"\n\n#: cn/forms.py:106\nmsgid \"Invalid ID Card Number: Wrong checksum\"\nmsgstr \"Niepoprawny nr dowodu: zła suma kontrolna\"\n\n#: cn/forms.py:107\nmsgid \"Invalid ID Card Number: Wrong birthdate\"\nmsgstr \"Niepoprawny nr dowodu: zła data urodzenia\"\n\n#: cn/forms.py:108\nmsgid \"Invalid ID Card Number: Wrong location code\"\nmsgstr \"Niepoprawny nr dowodu: zły kod lokacji\"\n\n#: cn/forms.py:193\nmsgid \"Enter a valid phone number.\"\nmsgstr \"Wprowadź poprawny numer telefonu.\"\n\n#: cn/forms.py:210\nmsgid \"Enter a valid cell number.\"\nmsgstr \"Wprowadź poprawny numer telefonu komórkowego.\"\n\n#: cz/cz_regions.py:8\nmsgid \"Prague\"\nmsgstr \"Praga\"\n\n#: cz/cz_regions.py:9\nmsgid \"Central Bohemian Region\"\nmsgstr \"Kraj środkowoczeski\"\n\n#: cz/cz_regions.py:10\nmsgid \"South Bohemian Region\"\nmsgstr \"Kraj południowoczeski\"\n\n#: cz/cz_regions.py:11\nmsgid \"Pilsen Region\"\nmsgstr \"Kraj pilzneński\"\n\n#: cz/cz_regions.py:12\nmsgid \"Carlsbad Region\"\nmsgstr \"Kraj karlowarski\"\n\n#: cz/cz_regions.py:13\nmsgid \"Usti Region\"\nmsgstr \"Kraj ustecki\"\n\n#: cz/cz_regions.py:14\nmsgid \"Liberec Region\"\nmsgstr \"Kraj liberecki\"\n\n#: cz/cz_regions.py:15\nmsgid \"Hradec Region\"\nmsgstr \"Kraj hredecki\"\n\n#: cz/cz_regions.py:16\nmsgid \"Pardubice Region\"\nmsgstr \"Kraj pardubicki\"\n\n#: cz/cz_regions.py:17\nmsgid \"Vysocina Region\"\nmsgstr \"Wysoczyzna\"\n\n#: cz/cz_regions.py:18\nmsgid \"South Moravian Region\"\nmsgstr \"Kraj południowomorawski\"\n\n#: cz/cz_regions.py:19\nmsgid \"Olomouc Region\"\nmsgstr \"Kraj ołomuniecki\"\n\n#: cz/cz_regions.py:20\nmsgid \"Zlin Region\"\nmsgstr \"Kraj zliński\"\n\n#: cz/cz_regions.py:21\nmsgid \"Moravian-Silesian Region\"\nmsgstr \"Kraj morawski-śląski\"\n\n#: cz/forms.py:32 sk/forms.py:33\nmsgid \"Enter a postal code in the format XXXXX or XXX XX.\"\nmsgstr \"Wpisz kod pocztowy w formacie XXXXX or XXX XX.\"\n\n#: cz/forms.py:52\nmsgid \"Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.\"\nmsgstr \"Wpisz numer urodzenia w formacie XXXXXX/XXXX or XXXXXXXXXX.\"\n\n#: cz/forms.py:53\nmsgid \"Enter a valid birth number.\"\nmsgstr \"Wpisz poprawny numer urodzenia.\"\n\n#: cz/forms.py:102\nmsgid \"Enter a valid IC number.\"\nmsgstr \"Wpisz poprawny numer IC.\"\n\n#: de/de_states.py:5\nmsgid \"Baden-Wuerttemberg\"\nmsgstr \"Badenia-Wirtembergia\"\n\n#: de/de_states.py:6\nmsgid \"Bavaria\"\nmsgstr \"Bawaria\"\n\n#: de/de_states.py:7\nmsgid \"Berlin\"\nmsgstr \"Berlin\"\n\n#: de/de_states.py:8\nmsgid \"Brandenburg\"\nmsgstr \"Brandenburgia\"\n\n#: de/de_states.py:9\nmsgid \"Bremen\"\nmsgstr \"Brema\"\n\n#: de/de_states.py:10\nmsgid \"Hamburg\"\nmsgstr \"Hamburg\"\n\n#: de/de_states.py:11\nmsgid \"Hessen\"\nmsgstr \"Hesja\"\n\n#: de/de_states.py:12\nmsgid \"Mecklenburg-Western Pomerania\"\nmsgstr \"Meklemburgia-Pomorze Zachodnie\"\n\n#: de/de_states.py:13\nmsgid \"Lower Saxony\"\nmsgstr \"Dolna Saksonia\"\n\n#: de/de_states.py:14\nmsgid \"North Rhine-Westphalia\"\nmsgstr \"Nadrenia Północna-Westfalia\"\n\n#: de/de_states.py:15\nmsgid \"Rhineland-Palatinate\"\nmsgstr \"Nadrenia-Palatynat\"\n\n#: de/de_states.py:16\nmsgid \"Saarland\"\nmsgstr \"Kraj Saary\"\n\n#: de/de_states.py:17\nmsgid \"Saxony\"\nmsgstr \"Saksonia\"\n\n#: de/de_states.py:18\nmsgid \"Saxony-Anhalt\"\nmsgstr \"Saksonia-Anhalt\"\n\n#: de/de_states.py:19\nmsgid \"Schleswig-Holstein\"\nmsgstr \"Szlezwik-Holsztyn\"\n\n#: de/de_states.py:20\nmsgid \"Thuringia\"\nmsgstr \"Turyngia\"\n\n#: de/forms.py:20 fi/forms.py:18 fr/forms.py:20\nmsgid \"Enter a zip code in the format XXXXX.\"\nmsgstr \"Wpisz kod pocztowy w formacie XXXXX.\"\n\n#: de/forms.py:46\nmsgid \"\"\n\"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"format.\"\nmsgstr \"\"\n\"Podaj poprawny numer niemieckiego dowodu osobistego w formacie XXXXXXXXXXX-\"\n\"XXXXXXX-XXXXXXX-X.\"\n\n#: es/es_provinces.py:5\nmsgid \"Araba\"\nmsgstr \"\"\n\n#: es/es_provinces.py:6\nmsgid \"Albacete\"\nmsgstr \"Albacete\"\n\n#: es/es_provinces.py:7\nmsgid \"Alacant\"\nmsgstr \"Alicante\"\n\n#: es/es_provinces.py:8\nmsgid \"Almeria\"\nmsgstr \"Almeria\"\n\n#: es/es_provinces.py:9\nmsgid \"Avila\"\nmsgstr \"Avila\"\n\n#: es/es_provinces.py:10\nmsgid \"Badajoz\"\nmsgstr \"Badajoz\"\n\n#: es/es_provinces.py:11\nmsgid \"Illes Balears\"\nmsgstr \"Baleary\"\n\n#: es/es_provinces.py:12\nmsgid \"Barcelona\"\nmsgstr \"Barcelona\"\n\n#: es/es_provinces.py:13\nmsgid \"Burgos\"\nmsgstr \"Burgos\"\n\n#: es/es_provinces.py:14\nmsgid \"Caceres\"\nmsgstr \"Caceres\"\n\n#: es/es_provinces.py:15\nmsgid \"Cadiz\"\nmsgstr \"Kadyks\"\n\n#: es/es_provinces.py:16\nmsgid \"Castello\"\nmsgstr \"Castellon\"\n\n#: es/es_provinces.py:17\nmsgid \"Ciudad Real\"\nmsgstr \"Ciudad Real\"\n\n#: es/es_provinces.py:18\nmsgid \"Cordoba\"\nmsgstr \"Kordowa\"\n\n#: es/es_provinces.py:19\nmsgid \"A Coruna\"\nmsgstr \"A Coruna\"\n\n#: es/es_provinces.py:20\nmsgid \"Cuenca\"\nmsgstr \"Cuenca\"\n\n#: es/es_provinces.py:21\nmsgid \"Girona\"\nmsgstr \"Girona\"\n\n#: es/es_provinces.py:22\nmsgid \"Granada\"\nmsgstr \"Granada\"\n\n#: es/es_provinces.py:23\nmsgid \"Guadalajara\"\nmsgstr \"Guadalajara\"\n\n#: es/es_provinces.py:24\nmsgid \"Guipuzkoa\"\nmsgstr \"Gipuzkoa\"\n\n#: es/es_provinces.py:25\nmsgid \"Huelva\"\nmsgstr \"Huelva\"\n\n#: es/es_provinces.py:26\nmsgid \"Huesca\"\nmsgstr \"Huesca\"\n\n#: es/es_provinces.py:27\nmsgid \"Jaen\"\nmsgstr \"Jaen\"\n\n#: es/es_provinces.py:28\nmsgid \"Leon\"\nmsgstr \"Leon\"\n\n#: es/es_provinces.py:29\nmsgid \"Lleida\"\nmsgstr \"Lleida\"\n\n#: es/es_provinces.py:30 es/es_regions.py:17\nmsgid \"La Rioja\"\nmsgstr \"La Rioja\"\n\n#: es/es_provinces.py:31\nmsgid \"Lugo\"\nmsgstr \"Lugo\"\n\n#: es/es_provinces.py:32 es/es_regions.py:18\nmsgid \"Madrid\"\nmsgstr \"Madryt\"\n\n#: es/es_provinces.py:33\nmsgid \"Malaga\"\nmsgstr \"Malaga\"\n\n#: es/es_provinces.py:34\nmsgid \"Murcia\"\nmsgstr \"Murcja\"\n\n#: es/es_provinces.py:35\nmsgid \"Navarre\"\nmsgstr \"Nawarra\"\n\n#: es/es_provinces.py:36\nmsgid \"Ourense\"\nmsgstr \"Ourense\"\n\n#: es/es_provinces.py:37\nmsgid \"Asturias\"\nmsgstr \"Asturia\"\n\n#: es/es_provinces.py:38\nmsgid \"Palencia\"\nmsgstr \"Palencia\"\n\n#: es/es_provinces.py:39\nmsgid \"Las Palmas\"\nmsgstr \"Las Palmas\"\n\n#: es/es_provinces.py:40\nmsgid \"Pontevedra\"\nmsgstr \"Pontevedra\"\n\n#: es/es_provinces.py:41\nmsgid \"Salamanca\"\nmsgstr \"Salamanka\"\n\n#: es/es_provinces.py:42\nmsgid \"Santa Cruz de Tenerife\"\nmsgstr \"Santa Cruz de Tenerife\"\n\n#: es/es_provinces.py:43 es/es_regions.py:11\nmsgid \"Cantabria\"\nmsgstr \"Kantabria\"\n\n#: es/es_provinces.py:44\nmsgid \"Segovia\"\nmsgstr \"Segowia\"\n\n#: es/es_provinces.py:45\nmsgid \"Seville\"\nmsgstr \"Sewilla\"\n\n#: es/es_provinces.py:46\nmsgid \"Soria\"\nmsgstr \"Soria\"\n\n#: es/es_provinces.py:47\nmsgid \"Tarragona\"\nmsgstr \"Tarragona\"\n\n#: es/es_provinces.py:48\nmsgid \"Teruel\"\nmsgstr \"Teruel\"\n\n#: es/es_provinces.py:49\nmsgid \"Toledo\"\nmsgstr \"Toledo\"\n\n#: es/es_provinces.py:50\nmsgid \"Valencia\"\nmsgstr \"Walencja\"\n\n#: es/es_provinces.py:51\nmsgid \"Valladolid\"\nmsgstr \"Valladolid\"\n\n#: es/es_provinces.py:52\nmsgid \"Bizkaia\"\nmsgstr \"Vizcaya\"\n\n#: es/es_provinces.py:53\nmsgid \"Zamora\"\nmsgstr \"Zamora\"\n\n#: es/es_provinces.py:54\nmsgid \"Zaragoza\"\nmsgstr \"Saragossa\"\n\n#: es/es_provinces.py:55\nmsgid \"Ceuta\"\nmsgstr \"Ceuta\"\n\n#: es/es_provinces.py:56\nmsgid \"Melilla\"\nmsgstr \"Melilla\"\n\n#: es/es_regions.py:5\nmsgid \"Andalusia\"\nmsgstr \"Andaluzja\"\n\n#: es/es_regions.py:6\nmsgid \"Aragon\"\nmsgstr \"Aragonia\"\n\n#: es/es_regions.py:7\nmsgid \"Principality of Asturias\"\nmsgstr \"Asturia\"\n\n#: es/es_regions.py:8\nmsgid \"Balearic Islands\"\nmsgstr \"Baleary\"\n\n#: es/es_regions.py:9\nmsgid \"Basque Country\"\nmsgstr \"Kraj Basków\"\n\n#: es/es_regions.py:10\nmsgid \"Canary Islands\"\nmsgstr \"Wyspy Kanaryjskie\"\n\n#: es/es_regions.py:12\nmsgid \"Castile-La Mancha\"\nmsgstr \"Kastylia-La Mancha\"\n\n#: es/es_regions.py:13\nmsgid \"Castile and Leon\"\nmsgstr \"Kastylia-Leon\"\n\n#: es/es_regions.py:14\nmsgid \"Catalonia\"\nmsgstr \"Katalonia\"\n\n#: es/es_regions.py:15\nmsgid \"Extremadura\"\nmsgstr \"Estremadura\"\n\n#: es/es_regions.py:16\nmsgid \"Galicia\"\nmsgstr \"Galicja\"\n\n#: es/es_regions.py:19\nmsgid \"Region of Murcia\"\nmsgstr \"Murcja\"\n\n#: es/es_regions.py:20\nmsgid \"Foral Community of Navarre\"\nmsgstr \"Nawarra\"\n\n#: es/es_regions.py:21\nmsgid \"Valencian Community\"\nmsgstr \"Walencja\"\n\n#: es/forms.py:26\nmsgid \"Enter a valid postal code in the range and format 01XXX - 52XXX.\"\nmsgstr \"Wpisz kod pocztowy w zakresie i formacie 01XXX - 52XXX.\"\n\n#: es/forms.py:46\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or \"\n\"9XXXXXXXX.\"\nmsgstr \"\"\n\"Wpisz numer telefoniczny w formacie 6XXXXXXXX, 8XXXXXXXX lub 9XXXXXXXX.\"\n\n#: es/forms.py:73\nmsgid \"Please enter a valid NIF, NIE, or CIF.\"\nmsgstr \"Proszę wpisać poprawny numer NIF, NIE lub CIF.\"\n\n#: es/forms.py:74\nmsgid \"Please enter a valid NIF or NIE.\"\nmsgstr \"Proszę wpisać poprawny numer NIF lub NIE.\"\n\n#: es/forms.py:75\nmsgid \"Invalid checksum for NIF.\"\nmsgstr \"Niepoprawna suma kontrolna NIF.\"\n\n#: es/forms.py:76\nmsgid \"Invalid checksum for NIE.\"\nmsgstr \"Niepoprawna suma kontrolna NIE.\"\n\n#: es/forms.py:77\nmsgid \"Invalid checksum for CIF.\"\nmsgstr \"Niepoprawna suma kontrolna CIF.\"\n\n#: es/forms.py:149\nmsgid \"\"\n\"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.\"\nmsgstr \"\"\n\"Podaj poprawny numer konta bankowego w formacie XXXX-XXXX-XX-XXXXXXXXXX.\"\n\n#: es/forms.py:150\nmsgid \"Invalid checksum for bank account number.\"\nmsgstr \"Niepoprawna suma kontrolna numeru konta bankowego.\"\n\n#: fi/forms.py:33\nmsgid \"Enter a valid Finnish social security number.\"\nmsgstr \"Wpis poprawny numer fińskiego ubezpieczenia socjalnego.\"\n\n#: fr/forms.py:35\nmsgid \"Phone numbers must be in 0X XX XX XX XX format.\"\nmsgstr \"Numery telefoniczne muszą być w formacie 0X XX XX XX XX.\"\n\n#: gb/forms.py:25\nmsgid \"Enter a valid postcode.\"\nmsgstr \"Wpisz poprawny kod pocztowy.\"\n\n#: gb/gb_regions.py:11\nmsgid \"Bedfordshire\"\nmsgstr \"Bedfordshire\"\n\n#: gb/gb_regions.py:12\nmsgid \"Buckinghamshire\"\nmsgstr \"Buckinghamshire\"\n\n#: gb/gb_regions.py:14\nmsgid \"Cheshire\"\nmsgstr \"Cheshire\"\n\n#: gb/gb_regions.py:15\nmsgid \"Cornwall and Isles of Scilly\"\nmsgstr \"Kornwalia i wyspy Scilly\"\n\n#: gb/gb_regions.py:16\nmsgid \"Cumbria\"\nmsgstr \"Cumbria\"\n\n#: gb/gb_regions.py:17\nmsgid \"Derbyshire\"\nmsgstr \"Derbyshire\"\n\n#: gb/gb_regions.py:18\nmsgid \"Devon\"\nmsgstr \"Devon\"\n\n#: gb/gb_regions.py:19\nmsgid \"Dorset\"\nmsgstr \"Dorset\"\n\n#: gb/gb_regions.py:20\nmsgid \"Durham\"\nmsgstr \"Durham\"\n\n#: gb/gb_regions.py:21\nmsgid \"East Sussex\"\nmsgstr \"East Sussex\"\n\n#: gb/gb_regions.py:22\nmsgid \"Essex\"\nmsgstr \"Essex\"\n\n#: gb/gb_regions.py:23\nmsgid \"Gloucestershire\"\nmsgstr \"Gloucestershire\"\n\n#: gb/gb_regions.py:24\nmsgid \"Greater London\"\nmsgstr \"Wielki Londyn\"\n\n#: gb/gb_regions.py:25\nmsgid \"Greater Manchester\"\nmsgstr \"Greater Manchester\"\n\n#: gb/gb_regions.py:26\nmsgid \"Hampshire\"\nmsgstr \"Hampshire\"\n\n#: gb/gb_regions.py:27\nmsgid \"Hertfordshire\"\nmsgstr \"Hertfordshire\"\n\n#: gb/gb_regions.py:28\nmsgid \"Kent\"\nmsgstr \"Kent\"\n\n#: gb/gb_regions.py:29\nmsgid \"Lancashire\"\nmsgstr \"Lancashire\"\n\n#: gb/gb_regions.py:30\nmsgid \"Leicestershire\"\nmsgstr \"Leicestershire\"\n\n#: gb/gb_regions.py:31\nmsgid \"Lincolnshire\"\nmsgstr \"Lincolnshire\"\n\n#: gb/gb_regions.py:32\nmsgid \"Merseyside\"\nmsgstr \"Merseyside\"\n\n#: gb/gb_regions.py:33\nmsgid \"Norfolk\"\nmsgstr \"Norfolk\"\n\n#: gb/gb_regions.py:34\nmsgid \"North Yorkshire\"\nmsgstr \"North Yorkshire\"\n\n#: gb/gb_regions.py:35\nmsgid \"Northamptonshire\"\nmsgstr \"Northamptonshire\"\n\n#: gb/gb_regions.py:36\nmsgid \"Northumberland\"\nmsgstr \"Northumberland\"\n\n#: gb/gb_regions.py:37\nmsgid \"Nottinghamshire\"\nmsgstr \"Nottinghamshire\"\n\n#: gb/gb_regions.py:38\nmsgid \"Oxfordshire\"\nmsgstr \"Oxfordshire\"\n\n#: gb/gb_regions.py:39\nmsgid \"Shropshire\"\nmsgstr \"Shropshire\"\n\n#: gb/gb_regions.py:40\nmsgid \"Somerset\"\nmsgstr \"Somerset\"\n\n#: gb/gb_regions.py:41\nmsgid \"South Yorkshire\"\nmsgstr \"South Yorkshire\"\n\n#: gb/gb_regions.py:42\nmsgid \"Staffordshire\"\nmsgstr \"Staffordshire\"\n\n#: gb/gb_regions.py:43\nmsgid \"Suffolk\"\nmsgstr \"Suffolk\"\n\n#: gb/gb_regions.py:44\nmsgid \"Surrey\"\nmsgstr \"Surrey\"\n\n#: gb/gb_regions.py:45\nmsgid \"Tyne and Wear\"\nmsgstr \"Tyne and Wear\"\n\n#: gb/gb_regions.py:46\nmsgid \"Warwickshire\"\nmsgstr \"Warwickshire\"\n\n#: gb/gb_regions.py:47\nmsgid \"West Midlands\"\nmsgstr \"West Midlands\"\n\n#: gb/gb_regions.py:48\nmsgid \"West Sussex\"\nmsgstr \"West Sussex\"\n\n#: gb/gb_regions.py:49\nmsgid \"West Yorkshire\"\nmsgstr \"West Yorkshire\"\n\n#: gb/gb_regions.py:50\nmsgid \"Wiltshire\"\nmsgstr \"Wiltshire\"\n\n#: gb/gb_regions.py:51\nmsgid \"Worcestershire\"\nmsgstr \"Worcestershire\"\n\n#: gb/gb_regions.py:55\nmsgid \"County Antrim\"\nmsgstr \"Hrabstwo Antrim\"\n\n#: gb/gb_regions.py:56\nmsgid \"County Armagh\"\nmsgstr \"Hrabstwo Armagh\"\n\n#: gb/gb_regions.py:57\nmsgid \"County Down\"\nmsgstr \"Hrabstwo Down\"\n\n#: gb/gb_regions.py:58\nmsgid \"County Fermanagh\"\nmsgstr \"Hrabstwo Fermanagh\"\n\n#: gb/gb_regions.py:59\nmsgid \"County Londonderry\"\nmsgstr \"Hrabstwo Londonderry\"\n\n#: gb/gb_regions.py:60\nmsgid \"County Tyrone\"\nmsgstr \"Hrabstwo Tyrone\"\n\n#: gb/gb_regions.py:64\nmsgid \"Clwyd\"\nmsgstr \"Clwyd\"\n\n#: gb/gb_regions.py:65\nmsgid \"Dyfed\"\nmsgstr \"Dyfed\"\n\n#: gb/gb_regions.py:66\nmsgid \"Gwent\"\nmsgstr \"Gwent\"\n\n#: gb/gb_regions.py:67\nmsgid \"Gwynedd\"\nmsgstr \"Gwynedd\"\n\n#: gb/gb_regions.py:68\nmsgid \"Mid Glamorgan\"\nmsgstr \"Mid Glamorgan\"\n\n#: gb/gb_regions.py:69\nmsgid \"Powys\"\nmsgstr \"Powys\"\n\n#: gb/gb_regions.py:70\nmsgid \"South Glamorgan\"\nmsgstr \"South Glamorgan\"\n\n#: gb/gb_regions.py:71\nmsgid \"West Glamorgan\"\nmsgstr \"West Glamorgan\"\n\n#: gb/gb_regions.py:75\nmsgid \"Borders\"\nmsgstr \"Scottish Borders\"\n\n#: gb/gb_regions.py:76\nmsgid \"Central Scotland\"\nmsgstr \"Central Scotland\"\n\n#: gb/gb_regions.py:77\nmsgid \"Dumfries and Galloway\"\nmsgstr \"Dumfries and Galloway\"\n\n#: gb/gb_regions.py:78\nmsgid \"Fife\"\nmsgstr \"Fife\"\n\n#: gb/gb_regions.py:79\nmsgid \"Grampian\"\nmsgstr \"Grampian\"\n\n#: gb/gb_regions.py:80\nmsgid \"Highland\"\nmsgstr \"Highland\"\n\n#: gb/gb_regions.py:81\nmsgid \"Lothian\"\nmsgstr \"Lothian\"\n\n#: gb/gb_regions.py:82\nmsgid \"Orkney Islands\"\nmsgstr \"Orkady\"\n\n#: gb/gb_regions.py:83\nmsgid \"Shetland Islands\"\nmsgstr \"Szetlandy\"\n\n#: gb/gb_regions.py:84\nmsgid \"Strathclyde\"\nmsgstr \"Strathclyde\"\n\n#: gb/gb_regions.py:85\nmsgid \"Tayside\"\nmsgstr \"Tayside\"\n\n#: gb/gb_regions.py:86\nmsgid \"Western Isles\"\nmsgstr \"Hebrydy Zewnętrzne\"\n\n#: gb/gb_regions.py:90\nmsgid \"England\"\nmsgstr \"Anglia\"\n\n#: gb/gb_regions.py:91\nmsgid \"Northern Ireland\"\nmsgstr \"Irlandia Północna\"\n\n#: gb/gb_regions.py:92\nmsgid \"Scotland\"\nmsgstr \"Szkocja\"\n\n#: gb/gb_regions.py:93\nmsgid \"Wales\"\nmsgstr \"Walia\"\n\n#: hk/forms.py:37\n#, python-format\nmsgid \"Phone number should not start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:40\n#, python-format\nmsgid \"Phone number must be in one of the following formats: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:42\n#, python-format\nmsgid \"Phone number should start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hr/forms.py:76\nmsgid \"Enter a valid 13 digit JMBG\"\nmsgstr \"Wprowadź poprawny 13-cyfrowy JMBG\"\n\n#: hr/forms.py:77\nmsgid \"Error in date segment\"\nmsgstr \"Błąd w segmencie daty\"\n\n#: hr/forms.py:123\nmsgid \"Enter a valid 11 digit OIB\"\nmsgstr \"Wprowadź poprawny 11-cyfrowy OIB\"\n\n#: hr/forms.py:152 id/forms.py:112\nmsgid \"Enter a valid vehicle license plate number\"\nmsgstr \"Wpisz poprawny numer rejestracyjny pojazdu\"\n\n#: hr/forms.py:153\nmsgid \"Enter a valid location code\"\nmsgstr \"Wprowadź poprawny kod lokacji\"\n\n#: hr/forms.py:154\nmsgid \"Number part cannot be zero\"\nmsgstr \"Numer nie może być zerem\"\n\n#: hr/forms.py:190\nmsgid \"Enter a valid 5 digit postal code\"\nmsgstr \"Wprowadź poprawny 5 cyfrowy kod pocztowy\"\n\n#: hr/forms.py:218 id/forms.py:72 nl/forms.py:56\nmsgid \"Enter a valid phone number\"\nmsgstr \"Wpisz poprawny numer telefonu\"\n\n#: hr/forms.py:219\nmsgid \"Enter a valid area or mobile network code\"\nmsgstr \"Wpisz poprawny kod obszaru lub sieci komórkowej\"\n\n#: hr/forms.py:220\nmsgid \"The phone nubmer is too long\"\nmsgstr \"Podany numer telefonu jest za długi\"\n\n#: hr/forms.py:258\nmsgid \"Enter a valid 19 digit JMBAG starting with 601983\"\nmsgstr \"Wpisz poprawny 19-cyfrowy JMBAG zaczynający się od 601983\"\n\n#: hr/forms.py:259\nmsgid \"Card issue number cannot be zero\"\nmsgstr \"Nr wydania karty nie może być zerem\"\n\n#: hr/hr_choices.py:14\nmsgid \"Grad Zagreb\"\nmsgstr \"Grad Zagreb\"\n\n#: hr/hr_choices.py:15\nmsgid \"Bjelovarsko-bilogorska županija\"\nmsgstr \"Bjelovarsko-bilogorska županija\"\n\n#: hr/hr_choices.py:16\nmsgid \"Brodsko-posavska županija\"\nmsgstr \"Brodsko-posavska županija\"\n\n#: hr/hr_choices.py:17\nmsgid \"Dubrovačko-neretvanska županija\"\nmsgstr \"Dubrovačko-neretvanska županija\"\n\n#: hr/hr_choices.py:18\nmsgid \"Istarska županija\"\nmsgstr \"Istarska županija\"\n\n#: hr/hr_choices.py:19\nmsgid \"Karlovačka županija\"\nmsgstr \"Karlovačka županija\"\n\n#: hr/hr_choices.py:20\nmsgid \"Koprivničko-križevačka županija\"\nmsgstr \"Koprivničko-križevačka županija\"\n\n#: hr/hr_choices.py:21\nmsgid \"Krapinsko-zagorska županija\"\nmsgstr \"Krapinsko-zagorska županija\"\n\n#: hr/hr_choices.py:22\nmsgid \"Ličko-senjska županija\"\nmsgstr \"Ličko-senjska županija\"\n\n#: hr/hr_choices.py:23\nmsgid \"Međimurska županija\"\nmsgstr \"Međimurska županija\"\n\n#: hr/hr_choices.py:24\nmsgid \"Osječko-baranjska županija\"\nmsgstr \"Osječko-baranjska županija\"\n\n#: hr/hr_choices.py:25\nmsgid \"Požeško-slavonska županija\"\nmsgstr \"Požeško-slavonska županija\"\n\n#: hr/hr_choices.py:26\nmsgid \"Primorsko-goranska županija\"\nmsgstr \"Primorsko-goranska županija\"\n\n#: hr/hr_choices.py:27\nmsgid \"Sisačko-moslavačka županija\"\nmsgstr \"Sisačko-moslavačka županija\"\n\n#: hr/hr_choices.py:28\nmsgid \"Splitsko-dalmatinska županija\"\nmsgstr \"Splitsko-dalmatinska županija\"\n\n#: hr/hr_choices.py:29\nmsgid \"Šibensko-kninska županija\"\nmsgstr \"Šibensko-kninska županija\"\n\n#: hr/hr_choices.py:30\nmsgid \"Varaždinska županija\"\nmsgstr \"Varaždinska županija\"\n\n#: hr/hr_choices.py:31\nmsgid \"Virovitičko-podravska županija\"\nmsgstr \"Virovitičko-podravska županija\"\n\n#: hr/hr_choices.py:32\nmsgid \"Vukovarsko-srijemska županija\"\nmsgstr \"Vukovarsko-srijemska županija\"\n\n#: hr/hr_choices.py:33\nmsgid \"Zadarska županija\"\nmsgstr \"Zadarska županija\"\n\n#: hr/hr_choices.py:34\nmsgid \"Zagrebačka županija\"\nmsgstr \"Zagrebačka županija\"\n\n#: id/forms.py:31\nmsgid \"Enter a valid post code\"\nmsgstr \"Wpisz poprawny kod pocztowy\"\n\n#: id/forms.py:176\nmsgid \"Enter a valid NIK/KTP number\"\nmsgstr \"Wpisz poprawny numer NIK/KTP.\"\n\n#: id/id_choices.py:15\nmsgid \"Aceh\"\nmsgstr \"Aceh\"\n\n#: id/id_choices.py:16 id/id_choices.py:79\nmsgid \"Bali\"\nmsgstr \"Bali\"\n\n#: id/id_choices.py:17 id/id_choices.py:51\nmsgid \"Banten\"\nmsgstr \"Banten\"\n\n#: id/id_choices.py:18 id/id_choices.py:60\nmsgid \"Bengkulu\"\nmsgstr \"Bengkulu\"\n\n#: id/id_choices.py:19 id/id_choices.py:53\nmsgid \"Yogyakarta\"\nmsgstr \"Yogyakarta\"\n\n#: id/id_choices.py:20 id/id_choices.py:57\nmsgid \"Jakarta\"\nmsgstr \"Dżakarta\"\n\n#: id/id_choices.py:21 id/id_choices.py:81\nmsgid \"Gorontalo\"\nmsgstr \"Gorontalo\"\n\n#: id/id_choices.py:22 id/id_choices.py:63\nmsgid \"Jambi\"\nmsgstr \"Jambi\"\n\n#: id/id_choices.py:23\nmsgid \"Jawa Barat\"\nmsgstr \"Jawa Barat\"\n\n#: id/id_choices.py:24\nmsgid \"Jawa Tengah\"\nmsgstr \"Jawa Tengah\"\n\n#: id/id_choices.py:25\nmsgid \"Jawa Timur\"\nmsgstr \"Jawa Timur\"\n\n#: id/id_choices.py:26 id/id_choices.py:94\nmsgid \"Kalimantan Barat\"\nmsgstr \"Kalimantan Barat\"\n\n#: id/id_choices.py:27 id/id_choices.py:72\nmsgid \"Kalimantan Selatan\"\nmsgstr \"Kalimantan Selatan\"\n\n#: id/id_choices.py:28 id/id_choices.py:95\nmsgid \"Kalimantan Tengah\"\nmsgstr \"Kalimantan Tengah\"\n\n#: id/id_choices.py:29 id/id_choices.py:96\nmsgid \"Kalimantan Timur\"\nmsgstr \"Kalimantan Timur\"\n\n#: id/id_choices.py:30\nmsgid \"Kepulauan Bangka-Belitung\"\nmsgstr \"Kepulauan Bangka-Belitung\"\n\n#: id/id_choices.py:31 id/id_choices.py:68\nmsgid \"Kepulauan Riau\"\nmsgstr \"Kepulauan Riau\"\n\n#: id/id_choices.py:32 id/id_choices.py:61\nmsgid \"Lampung\"\nmsgstr \"Lampung\"\n\n#: id/id_choices.py:33 id/id_choices.py:76\nmsgid \"Maluku\"\nmsgstr \"Maluku\"\n\n#: id/id_choices.py:34 id/id_choices.py:77\nmsgid \"Maluku Utara\"\nmsgstr \"Maluku Utara\"\n\n#: id/id_choices.py:35\nmsgid \"Nusa Tenggara Barat\"\nmsgstr \"Barat Tenggara Nusa\"\n\n#: id/id_choices.py:36\nmsgid \"Nusa Tenggara Timur\"\nmsgstr \"Nusa Tenggara Timur\"\n\n#: id/id_choices.py:37\nmsgid \"Papua\"\nmsgstr \"Papua\"\n\n#: id/id_choices.py:38\nmsgid \"Papua Barat\"\nmsgstr \"Papua Zachodnia\"\n\n#: id/id_choices.py:39 id/id_choices.py:66\nmsgid \"Riau\"\nmsgstr \"Riau\"\n\n#: id/id_choices.py:40 id/id_choices.py:74\nmsgid \"Sulawesi Barat\"\nmsgstr \"Sulawesi Barat\"\n\n#: id/id_choices.py:41 id/id_choices.py:75\nmsgid \"Sulawesi Selatan\"\nmsgstr \"Sulawesi Selatan\"\n\n#: id/id_choices.py:42 id/id_choices.py:82\nmsgid \"Sulawesi Tengah\"\nmsgstr \"Sulawesi Tengah\"\n\n#: id/id_choices.py:43 id/id_choices.py:85\nmsgid \"Sulawesi Tenggara\"\nmsgstr \"Sulawesi Tenggara\"\n\n#: id/id_choices.py:44\nmsgid \"Sulawesi Utara\"\nmsgstr \"Sulawesi Utara\"\n\n#: id/id_choices.py:45 id/id_choices.py:58\nmsgid \"Sumatera Barat\"\nmsgstr \"Sumatera Barat\"\n\n#: id/id_choices.py:46 id/id_choices.py:62\nmsgid \"Sumatera Selatan\"\nmsgstr \"Sumatera Selatan\"\n\n#: id/id_choices.py:47 id/id_choices.py:64\nmsgid \"Sumatera Utara\"\nmsgstr \"Sumatera Utara\"\n\n#: id/id_choices.py:52\nmsgid \"Magelang\"\nmsgstr \"Magelang\"\n\n#: id/id_choices.py:54\nmsgid \"Surakarta - Solo\"\nmsgstr \"Surakarta - Solo\"\n\n#: id/id_choices.py:55\nmsgid \"Madiun\"\nmsgstr \"Madiun\"\n\n#: id/id_choices.py:56\nmsgid \"Kediri\"\nmsgstr \"Kediri\"\n\n#: id/id_choices.py:59\nmsgid \"Tapanuli\"\nmsgstr \"Tapanuli\"\n\n#: id/id_choices.py:65\nmsgid \"Nanggroe Aceh Darussalam\"\nmsgstr \"Nanggroe Aceh Darussalam\"\n\n#: id/id_choices.py:67\nmsgid \"Kepulauan Bangka Belitung\"\nmsgstr \"Kepulauan Bangka Belitung\"\n\n#: id/id_choices.py:69\nmsgid \"Corps Consulate\"\nmsgstr \"Konsularne\"\n\n#: id/id_choices.py:70\nmsgid \"Corps Diplomatic\"\nmsgstr \"Dyplomatyczne\"\n\n#: id/id_choices.py:71\nmsgid \"Bandung\"\nmsgstr \"Bandung\"\n\n#: id/id_choices.py:73\nmsgid \"Sulawesi Utara Daratan\"\nmsgstr \"Sulawesi Utara Daratan\"\n\n#: id/id_choices.py:78\nmsgid \"NTT - Timor\"\nmsgstr \"NTT - Timor\"\n\n#: id/id_choices.py:80\nmsgid \"Sulawesi Utara Kepulauan\"\nmsgstr \"Sulawesi Utara Kepulauan\"\n\n#: id/id_choices.py:83\nmsgid \"NTB - Lombok\"\nmsgstr \"NTB - Lombok\"\n\n#: id/id_choices.py:84\nmsgid \"Papua dan Papua Barat\"\nmsgstr \"Papua dan Papua Barat\"\n\n#: id/id_choices.py:86\nmsgid \"Cirebon\"\nmsgstr \"Cirebon\"\n\n#: id/id_choices.py:87\nmsgid \"NTB - Sumbawa\"\nmsgstr \"NTB - Sumbawa\"\n\n#: id/id_choices.py:88\nmsgid \"NTT - Flores\"\nmsgstr \"NTT - Flores\"\n\n#: id/id_choices.py:89\nmsgid \"NTT - Sumba\"\nmsgstr \"NTT - Sumba\"\n\n#: id/id_choices.py:90\nmsgid \"Bogor\"\nmsgstr \"Bogor\"\n\n#: id/id_choices.py:91\nmsgid \"Pekalongan\"\nmsgstr \"Pekalongan\"\n\n#: id/id_choices.py:92\nmsgid \"Semarang\"\nmsgstr \"Semarang\"\n\n#: id/id_choices.py:93\nmsgid \"Pati\"\nmsgstr \"Pati\"\n\n#: id/id_choices.py:97\nmsgid \"Surabaya\"\nmsgstr \"Surabaya\"\n\n#: id/id_choices.py:98\nmsgid \"Madura\"\nmsgstr \"Madura\"\n\n#: id/id_choices.py:99\nmsgid \"Malang\"\nmsgstr \"Malang\"\n\n#: id/id_choices.py:100\nmsgid \"Jember\"\nmsgstr \"Jember\"\n\n#: id/id_choices.py:101\nmsgid \"Banyumas\"\nmsgstr \"Banyumas\"\n\n#: id/id_choices.py:102\nmsgid \"Federal Government\"\nmsgstr \"Rząd Federalny\"\n\n#: id/id_choices.py:103\nmsgid \"Bojonegoro\"\nmsgstr \"Bojonegoro\"\n\n#: id/id_choices.py:104\nmsgid \"Purwakarta\"\nmsgstr \"Purwakarta\"\n\n#: id/id_choices.py:105\nmsgid \"Sidoarjo\"\nmsgstr \"Sidoarjo\"\n\n#: id/id_choices.py:106\nmsgid \"Garut\"\nmsgstr \"Garut\"\n\n#: ie/ie_counties.py:8\nmsgid \"Antrim\"\nmsgstr \"Antrim\"\n\n#: ie/ie_counties.py:9\nmsgid \"Armagh\"\nmsgstr \"Armagh\"\n\n#: ie/ie_counties.py:10\nmsgid \"Carlow\"\nmsgstr \"Carlow\"\n\n#: ie/ie_counties.py:11\nmsgid \"Cavan\"\nmsgstr \"Cavan\"\n\n#: ie/ie_counties.py:12\nmsgid \"Clare\"\nmsgstr \"Clare\"\n\n#: ie/ie_counties.py:13\nmsgid \"Cork\"\nmsgstr \"Cork\"\n\n#: ie/ie_counties.py:14\nmsgid \"Derry\"\nmsgstr \"Derry\"\n\n#: ie/ie_counties.py:15\nmsgid \"Donegal\"\nmsgstr \"Donegal\"\n\n#: ie/ie_counties.py:16\nmsgid \"Down\"\nmsgstr \"Down\"\n\n#: ie/ie_counties.py:17\nmsgid \"Dublin\"\nmsgstr \"Dublin\"\n\n#: ie/ie_counties.py:18\nmsgid \"Fermanagh\"\nmsgstr \"Fermanagh\"\n\n#: ie/ie_counties.py:19\nmsgid \"Galway\"\nmsgstr \"Galway\"\n\n#: ie/ie_counties.py:20\nmsgid \"Kerry\"\nmsgstr \"Kerry\"\n\n#: ie/ie_counties.py:21\nmsgid \"Kildare\"\nmsgstr \"Kildare\"\n\n#: ie/ie_counties.py:22\nmsgid \"Kilkenny\"\nmsgstr \"Kilkenny\"\n\n#: ie/ie_counties.py:23\nmsgid \"Laois\"\nmsgstr \"Laois\"\n\n#: ie/ie_counties.py:24\nmsgid \"Leitrim\"\nmsgstr \"Leitrim\"\n\n#: ie/ie_counties.py:25\nmsgid \"Limerick\"\nmsgstr \"Limerick\"\n\n#: ie/ie_counties.py:26\nmsgid \"Longford\"\nmsgstr \"Longford\"\n\n#: ie/ie_counties.py:27\nmsgid \"Louth\"\nmsgstr \"Louth\"\n\n#: ie/ie_counties.py:28\nmsgid \"Mayo\"\nmsgstr \"Mayo\"\n\n#: ie/ie_counties.py:29\nmsgid \"Meath\"\nmsgstr \"Meath\"\n\n#: ie/ie_counties.py:30\nmsgid \"Monaghan\"\nmsgstr \"Monaghan\"\n\n#: ie/ie_counties.py:31\nmsgid \"Offaly\"\nmsgstr \"Offaly\"\n\n#: ie/ie_counties.py:32\nmsgid \"Roscommon\"\nmsgstr \"Roscommon\"\n\n#: ie/ie_counties.py:33\nmsgid \"Sligo\"\nmsgstr \"Sligo\"\n\n#: ie/ie_counties.py:34\nmsgid \"Tipperary\"\nmsgstr \"Tipperary\"\n\n#: ie/ie_counties.py:35\nmsgid \"Tyrone\"\nmsgstr \"Tyrone\"\n\n#: ie/ie_counties.py:36\nmsgid \"Waterford\"\nmsgstr \"Waterford\"\n\n#: ie/ie_counties.py:37\nmsgid \"Westmeath\"\nmsgstr \"Westmeath\"\n\n#: ie/ie_counties.py:38\nmsgid \"Wexford\"\nmsgstr \"Wexford\"\n\n#: ie/ie_counties.py:39\nmsgid \"Wicklow\"\nmsgstr \"Wicklow\"\n\n#: il/forms.py:32\nmsgid \"Enter a postal code in the format XXXXX\"\nmsgstr \"Wpisz kod pocztowy w formacie XXXXX\"\n\n#: il/forms.py:51\nmsgid \"Enter a valid ID number.\"\nmsgstr \"Wpisz poprawny numer ID.\"\n\n#: in_/forms.py:41\nmsgid \"Enter a zip code in the format XXXXXX or XXX XXX.\"\nmsgstr \"Wpisz kod pocztowy w formacie XXXXXX lub XXX XXX.\"\n\n#: in_/forms.py:64\nmsgid \"Enter an Indian state or territory.\"\nmsgstr \"Wpisz indyjski stan lub terytorium\"\n\n#: in_/forms.py:103\nmsgid \"Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.\"\nmsgstr \"\"\n\"Numer telefonu powinien być zapisany jednym z trzech formatów: '02X-8X', \"\n\"'03X-7X' lub '04X-6X'.\"\n\n#: is_/forms.py:22\nmsgid \"\"\n\"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.\"\nmsgstr \"\"\n\"Podaj poprawny numer islandzkiego dowodu osobistego w formacie XXXXXX-XXXX.\"\n\n#: is_/forms.py:23\nmsgid \"The Icelandic identification number is not valid.\"\nmsgstr \"Numer islandzkiego dowodu osobistego jest błędny.\"\n\n#: it/forms.py:21\nmsgid \"Enter a valid zip code.\"\nmsgstr \"Wpisz poprawny kod pocztowy.\"\n\n#: it/forms.py:48\nmsgid \"Enter a valid Social Security number.\"\nmsgstr \"Wpisz poprawny numer ubezpieczenia socjalnego.\"\n\n#: it/forms.py:73\nmsgid \"Enter a valid VAT number.\"\nmsgstr \"Wpisz poprawny numer VAT.\"\n\n#: jp/forms.py:19\nmsgid \"Enter a postal code in the format XXXXXXX or XXX-XXXX.\"\nmsgstr \"Wpisz kod pocztowy w formacie XXXXXXX lub XXX-XXXX.\"\n\n#: jp/jp_prefectures.py:4\nmsgid \"Hokkaido\"\nmsgstr \"Hokkaido\"\n\n#: jp/jp_prefectures.py:5\nmsgid \"Aomori\"\nmsgstr \"Aomori\"\n\n#: jp/jp_prefectures.py:6\nmsgid \"Iwate\"\nmsgstr \"Iwate\"\n\n#: jp/jp_prefectures.py:7\nmsgid \"Miyagi\"\nmsgstr \"Miyagi\"\n\n#: jp/jp_prefectures.py:8\nmsgid \"Akita\"\nmsgstr \"Akita\"\n\n#: jp/jp_prefectures.py:9\nmsgid \"Yamagata\"\nmsgstr \"Yamagata\"\n\n#: jp/jp_prefectures.py:10\nmsgid \"Fukushima\"\nmsgstr \"Fukushima\"\n\n#: jp/jp_prefectures.py:11\nmsgid \"Ibaraki\"\nmsgstr \"Ibaraki\"\n\n#: jp/jp_prefectures.py:12\nmsgid \"Tochigi\"\nmsgstr \"Tochigi\"\n\n#: jp/jp_prefectures.py:13\nmsgid \"Gunma\"\nmsgstr \"Gunma\"\n\n#: jp/jp_prefectures.py:14\nmsgid \"Saitama\"\nmsgstr \"Saitama\"\n\n#: jp/jp_prefectures.py:15\nmsgid \"Chiba\"\nmsgstr \"Chiba\"\n\n#: jp/jp_prefectures.py:16\nmsgid \"Tokyo\"\nmsgstr \"Tokio\"\n\n#: jp/jp_prefectures.py:17\nmsgid \"Kanagawa\"\nmsgstr \"Kanagawa\"\n\n#: jp/jp_prefectures.py:18\nmsgid \"Yamanashi\"\nmsgstr \"Yamanashi\"\n\n#: jp/jp_prefectures.py:19\nmsgid \"Nagano\"\nmsgstr \"Nagano\"\n\n#: jp/jp_prefectures.py:20\nmsgid \"Niigata\"\nmsgstr \"Niigata\"\n\n#: jp/jp_prefectures.py:21\nmsgid \"Toyama\"\nmsgstr \"Toyama\"\n\n#: jp/jp_prefectures.py:22\nmsgid \"Ishikawa\"\nmsgstr \"Ishikawa\"\n\n#: jp/jp_prefectures.py:23\nmsgid \"Fukui\"\nmsgstr \"Fukui\"\n\n#: jp/jp_prefectures.py:24\nmsgid \"Gifu\"\nmsgstr \"Gifu\"\n\n#: jp/jp_prefectures.py:25\nmsgid \"Shizuoka\"\nmsgstr \"Shizuoka\"\n\n#: jp/jp_prefectures.py:26\nmsgid \"Aichi\"\nmsgstr \"Aichi\"\n\n#: jp/jp_prefectures.py:27\nmsgid \"Mie\"\nmsgstr \"Mie\"\n\n#: jp/jp_prefectures.py:28\nmsgid \"Shiga\"\nmsgstr \"Shiga\"\n\n#: jp/jp_prefectures.py:29\nmsgid \"Kyoto\"\nmsgstr \"Kyoto\"\n\n#: jp/jp_prefectures.py:30\nmsgid \"Osaka\"\nmsgstr \"Osaka\"\n\n#: jp/jp_prefectures.py:31\nmsgid \"Hyogo\"\nmsgstr \"Hyogo\"\n\n#: jp/jp_prefectures.py:32\nmsgid \"Nara\"\nmsgstr \"Nara\"\n\n#: jp/jp_prefectures.py:33\nmsgid \"Wakayama\"\nmsgstr \"Wakayama\"\n\n#: jp/jp_prefectures.py:34\nmsgid \"Tottori\"\nmsgstr \"Tottori\"\n\n#: jp/jp_prefectures.py:35\nmsgid \"Shimane\"\nmsgstr \"Shimane\"\n\n#: jp/jp_prefectures.py:36\nmsgid \"Okayama\"\nmsgstr \"Okayama\"\n\n#: jp/jp_prefectures.py:37\nmsgid \"Hiroshima\"\nmsgstr \"Hiroszima\"\n\n#: jp/jp_prefectures.py:38\nmsgid \"Yamaguchi\"\nmsgstr \"Yamaguchi\"\n\n#: jp/jp_prefectures.py:39\nmsgid \"Tokushima\"\nmsgstr \"Tokushima\"\n\n#: jp/jp_prefectures.py:40\nmsgid \"Kagawa\"\nmsgstr \"Kagawa\"\n\n#: jp/jp_prefectures.py:41\nmsgid \"Ehime\"\nmsgstr \"Ehime\"\n\n#: jp/jp_prefectures.py:42\nmsgid \"Kochi\"\nmsgstr \"Kochi\"\n\n#: jp/jp_prefectures.py:43\nmsgid \"Fukuoka\"\nmsgstr \"Fukuoka\"\n\n#: jp/jp_prefectures.py:44\nmsgid \"Saga\"\nmsgstr \"Saga\"\n\n#: jp/jp_prefectures.py:45\nmsgid \"Nagasaki\"\nmsgstr \"Nagasaki\"\n\n#: jp/jp_prefectures.py:46\nmsgid \"Kumamoto\"\nmsgstr \"Kumamoto\"\n\n#: jp/jp_prefectures.py:47\nmsgid \"Oita\"\nmsgstr \"Oita\"\n\n#: jp/jp_prefectures.py:48\nmsgid \"Miyazaki\"\nmsgstr \"Miyazaki\"\n\n#: jp/jp_prefectures.py:49\nmsgid \"Kagoshima\"\nmsgstr \"Kagoshima\"\n\n#: jp/jp_prefectures.py:50\nmsgid \"Okinawa\"\nmsgstr \"Okinawa\"\n\n#: kw/forms.py:27\nmsgid \"Enter a valid Kuwaiti Civil ID number\"\nmsgstr \"Wpisz poprawny kuwejcki numer ID\"\n\n#: mk/forms.py:18\nmsgid \"\"\n\"Identity card numbers must contain either 4 to 7 digits or an uppercase \"\n\"letter and 7 digits.\"\nmsgstr \"Nr dowodu musi zawierać albo 4 do 7 cyfr albo dużą literę i 7 cyfr.\"\n\n#: mk/forms.py:57 si/forms.py:24\nmsgid \"This field should contain exactly 13 digits.\"\nmsgstr \"To pole powinno zawierać dokładnie 13 cyfr.\"\n\n#: mk/forms.py:58\nmsgid \"The first 7 digits of the UMCN must represent a valid past date.\"\nmsgstr \"Pierwsze 7 cyfr UMCN musi reprezentować poprawną, przeszłą datę.\"\n\n#: mk/forms.py:59\nmsgid \"The UMCN is not valid.\"\nmsgstr \"UMCN jest niepoprawny\"\n\n#: mk/mk_choices.py:10\nmsgid \"Aerodrom\"\nmsgstr \"Aerodrom\"\n\n#: mk/mk_choices.py:11\nmsgid \"Aračinovo\"\nmsgstr \"Aračinovo\"\n\n#: mk/mk_choices.py:12\nmsgid \"Berovo\"\nmsgstr \"Berovo\"\n\n#: mk/mk_choices.py:13\nmsgid \"Bitola\"\nmsgstr \"Bitola\"\n\n#: mk/mk_choices.py:14\nmsgid \"Bogdanci\"\nmsgstr \"Bogdanci\"\n\n#: mk/mk_choices.py:15\nmsgid \"Bogovinje\"\nmsgstr \"Bogovinje\"\n\n#: mk/mk_choices.py:16\nmsgid \"Bosilovo\"\nmsgstr \"Bosilovo\"\n\n#: mk/mk_choices.py:17\nmsgid \"Brvenica\"\nmsgstr \"Brvenica\"\n\n#: mk/mk_choices.py:18\nmsgid \"Butel\"\nmsgstr \"Butel\"\n\n#: mk/mk_choices.py:19\nmsgid \"Valandovo\"\nmsgstr \"Valandovo\"\n\n#: mk/mk_choices.py:20\nmsgid \"Vasilevo\"\nmsgstr \"Vasilevo\"\n\n#: mk/mk_choices.py:21\nmsgid \"Vevčani\"\nmsgstr \"Vevčani\"\n\n#: mk/mk_choices.py:22\nmsgid \"Veles\"\nmsgstr \"Veles\"\n\n#: mk/mk_choices.py:23\nmsgid \"Vinica\"\nmsgstr \"Vinica\"\n\n#: mk/mk_choices.py:24\nmsgid \"Vraneštica\"\nmsgstr \"Vraneštica\"\n\n#: mk/mk_choices.py:25\nmsgid \"Vrapčište\"\nmsgstr \"Vrapčište\"\n\n#: mk/mk_choices.py:26\nmsgid \"Gazi Baba\"\nmsgstr \"Gazi Baba\"\n\n#: mk/mk_choices.py:27\nmsgid \"Gevgelija\"\nmsgstr \"Gevgelija\"\n\n#: mk/mk_choices.py:28\nmsgid \"Gostivar\"\nmsgstr \"Gostivar\"\n\n#: mk/mk_choices.py:29\nmsgid \"Gradsko\"\nmsgstr \"Gradsko\"\n\n#: mk/mk_choices.py:30\nmsgid \"Debar\"\nmsgstr \"Debar\"\n\n#: mk/mk_choices.py:31\nmsgid \"Debarca\"\nmsgstr \"Debarca\"\n\n#: mk/mk_choices.py:32\nmsgid \"Delčevo\"\nmsgstr \"Delčevo\"\n\n#: mk/mk_choices.py:33\nmsgid \"Demir Kapija\"\nmsgstr \"Demir Kapija\"\n\n#: mk/mk_choices.py:34\nmsgid \"Demir Hisar\"\nmsgstr \"Demir Hisar\"\n\n#: mk/mk_choices.py:35\nmsgid \"Dolneni\"\nmsgstr \"Dolneni\"\n\n#: mk/mk_choices.py:36\nmsgid \"Drugovo\"\nmsgstr \"Drugovo\"\n\n#: mk/mk_choices.py:37\nmsgid \"Gjorče Petrov\"\nmsgstr \"Gjorče Petrov\"\n\n#: mk/mk_choices.py:38\nmsgid \"Želino\"\nmsgstr \"Želino\"\n\n#: mk/mk_choices.py:39\nmsgid \"Zajas\"\nmsgstr \"Zajas\"\n\n#: mk/mk_choices.py:40\nmsgid \"Zelenikovo\"\nmsgstr \"Zelenikovo\"\n\n#: mk/mk_choices.py:41\nmsgid \"Zrnovci\"\nmsgstr \"Zrnovci\"\n\n#: mk/mk_choices.py:42\nmsgid \"Ilinden\"\nmsgstr \"Ilinden\"\n\n#: mk/mk_choices.py:43\nmsgid \"Jegunovce\"\nmsgstr \"Jegunovce\"\n\n#: mk/mk_choices.py:44\nmsgid \"Kavadarci\"\nmsgstr \"Kavadarci\"\n\n#: mk/mk_choices.py:45\nmsgid \"Karbinci\"\nmsgstr \"Karbinci\"\n\n#: mk/mk_choices.py:46\nmsgid \"Karpoš\"\nmsgstr \"Karpoš\"\n\n#: mk/mk_choices.py:47\nmsgid \"Kisela Voda\"\nmsgstr \"Kisela Voda\"\n\n#: mk/mk_choices.py:48\nmsgid \"Kičevo\"\nmsgstr \"Kičevo\"\n\n#: mk/mk_choices.py:49\nmsgid \"Konče\"\nmsgstr \"Konče\"\n\n#: mk/mk_choices.py:50\nmsgid \"Koćani\"\nmsgstr \"Koćani\"\n\n#: mk/mk_choices.py:51\nmsgid \"Kratovo\"\nmsgstr \"Kratovo\"\n\n#: mk/mk_choices.py:52\nmsgid \"Kriva Palanka\"\nmsgstr \"Kriva Palanka\"\n\n#: mk/mk_choices.py:53\nmsgid \"Krivogaštani\"\nmsgstr \"Krivogaštani\"\n\n#: mk/mk_choices.py:54\nmsgid \"Kruševo\"\nmsgstr \"Kruševo\"\n\n#: mk/mk_choices.py:55\nmsgid \"Kumanovo\"\nmsgstr \"Kumanovo\"\n\n#: mk/mk_choices.py:56\nmsgid \"Lipkovo\"\nmsgstr \"Lipkovo\"\n\n#: mk/mk_choices.py:57\nmsgid \"Lozovo\"\nmsgstr \"Lozovo\"\n\n#: mk/mk_choices.py:58\nmsgid \"Mavrovo i Rostuša\"\nmsgstr \"Mavrovo i Rostuša\"\n\n#: mk/mk_choices.py:59\nmsgid \"Makedonska Kamenica\"\nmsgstr \"Makedonska Kamenica\"\n\n#: mk/mk_choices.py:60\nmsgid \"Makedonski Brod\"\nmsgstr \"Makedonski Brod\"\n\n#: mk/mk_choices.py:61\nmsgid \"Mogila\"\nmsgstr \"Mogila\"\n\n#: mk/mk_choices.py:62\nmsgid \"Negotino\"\nmsgstr \"Negotino\"\n\n#: mk/mk_choices.py:63\nmsgid \"Novaci\"\nmsgstr \"Novaci\"\n\n#: mk/mk_choices.py:64\nmsgid \"Novo Selo\"\nmsgstr \"Novo Selo\"\n\n#: mk/mk_choices.py:65\nmsgid \"Oslomej\"\nmsgstr \"Oslomej\"\n\n#: mk/mk_choices.py:66\nmsgid \"Ohrid\"\nmsgstr \"Ohrid\"\n\n#: mk/mk_choices.py:67\nmsgid \"Petrovec\"\nmsgstr \"Petrovec\"\n\n#: mk/mk_choices.py:68\nmsgid \"Pehčevo\"\nmsgstr \"Pehčevo\"\n\n#: mk/mk_choices.py:69\nmsgid \"Plasnica\"\nmsgstr \"Plasnica\"\n\n#: mk/mk_choices.py:70\nmsgid \"Prilep\"\nmsgstr \"Prilep\"\n\n#: mk/mk_choices.py:71\nmsgid \"Probištip\"\nmsgstr \"Probištip\"\n\n#: mk/mk_choices.py:72\nmsgid \"Radoviš\"\nmsgstr \"Radoviš\"\n\n#: mk/mk_choices.py:73\nmsgid \"Rankovce\"\nmsgstr \"Rankovce\"\n\n#: mk/mk_choices.py:74\nmsgid \"Resen\"\nmsgstr \"Resen\"\n\n#: mk/mk_choices.py:75\nmsgid \"Rosoman\"\nmsgstr \"Rosoman\"\n\n#: mk/mk_choices.py:76\nmsgid \"Saraj\"\nmsgstr \"Saraj\"\n\n#: mk/mk_choices.py:77\nmsgid \"Sveti Nikole\"\nmsgstr \"Sveti Nikole\"\n\n#: mk/mk_choices.py:78\nmsgid \"Sopište\"\nmsgstr \"Sopište\"\n\n#: mk/mk_choices.py:79\nmsgid \"Star Dojran\"\nmsgstr \"Star Dojran\"\n\n#: mk/mk_choices.py:80\nmsgid \"Staro Nagoričane\"\nmsgstr \"Staro Nagoričane\"\n\n#: mk/mk_choices.py:81\nmsgid \"Struga\"\nmsgstr \"Struga\"\n\n#: mk/mk_choices.py:82\nmsgid \"Strumica\"\nmsgstr \"Strumica\"\n\n#: mk/mk_choices.py:83\nmsgid \"Studeničani\"\nmsgstr \"Studeničani\"\n\n#: mk/mk_choices.py:84\nmsgid \"Tearce\"\nmsgstr \"Tearce\"\n\n#: mk/mk_choices.py:85\nmsgid \"Tetovo\"\nmsgstr \"Tetovo\"\n\n#: mk/mk_choices.py:86\nmsgid \"Centar\"\nmsgstr \"Centar\"\n\n#: mk/mk_choices.py:87\nmsgid \"Centar-Župa\"\nmsgstr \"Centar-Župa\"\n\n#: mk/mk_choices.py:88\nmsgid \"Čair\"\nmsgstr \"Čair\"\n\n#: mk/mk_choices.py:89\nmsgid \"Čaška\"\nmsgstr \"Čaška\"\n\n#: mk/mk_choices.py:90\nmsgid \"Češinovo-Obleševo\"\nmsgstr \"Češinovo-Obleševo\"\n\n#: mk/mk_choices.py:91\nmsgid \"Čučer-Sandevo\"\nmsgstr \"Čučer-Sandevo\"\n\n#: mk/mk_choices.py:92\nmsgid \"Štip\"\nmsgstr \"Štip\"\n\n#: mk/mk_choices.py:93\nmsgid \"Šuto Orizari\"\nmsgstr \"Šuto Orizari\"\n\n#: mk/models.py:11\nmsgid \"Macedonian identity card number\"\nmsgstr \"Nr macedońskiego dowodu tożsamości\"\n\n#: mk/models.py:25\nmsgid \"A Macedonian municipality (2 character code)\"\nmsgstr \"Macedońska gmina (2-literowy kod)\"\n\n#: mk/models.py:35\nmsgid \"Unique master citizen number (13 digits)\"\nmsgstr \"Unikatowy numer obywatela (13 cyfr)\"\n\n#: mx/forms.py:67\nmsgid \"Enter a valid zip code in the format XXXXX.\"\nmsgstr \"Wprowadź poprawny kod pocztowy w formacie XXXXX.\"\n\n#: mx/forms.py:110\nmsgid \"Enter a valid RFC.\"\nmsgstr \"Wpisz poprawny RFC.\"\n\n#: mx/forms.py:111\nmsgid \"Invalid checksum for RFC.\"\nmsgstr \"Niepoprawna suma kontrolna RFC.\"\n\n#: mx/forms.py:191\nmsgid \"Enter a valid CURP.\"\nmsgstr \"Wpisz porpawny CURP.\"\n\n#: mx/forms.py:192\nmsgid \"Invalid checksum for CURP.\"\nmsgstr \"Niepoprawna suma kontrolna CURP.\"\n\n#: mx/models.py:14\nmsgid \"Mexico state (three uppercase letters)\"\nmsgstr \"Stan (trzy duże litery)\"\n\n#: mx/models.py:27\nmsgid \"Mexico zip code\"\nmsgstr \"Kod pocztowy\"\n\n#: mx/models.py:44\nmsgid \"Mexican RFC\"\nmsgstr \"Meksykański RFC\"\n\n#: mx/models.py:61\nmsgid \"Mexican CURP\"\nmsgstr \"Meksykański CURP\"\n\n#: mx/mx_states.py:14\nmsgid \"Aguascalientes\"\nmsgstr \"Aguascalientes\"\n\n#: mx/mx_states.py:15\nmsgid \"Baja California\"\nmsgstr \"Kalifornia Dolna\"\n\n#: mx/mx_states.py:16\nmsgid \"Baja California Sur\"\nmsgstr \"Kalifornia Dolna Południowa\"\n\n#: mx/mx_states.py:17\nmsgid \"Campeche\"\nmsgstr \"Campeche\"\n\n#: mx/mx_states.py:18\nmsgid \"Chihuahua\"\nmsgstr \"Chihuahua\"\n\n#: mx/mx_states.py:19\nmsgid \"Chiapas\"\nmsgstr \"Chiapas\"\n\n#: mx/mx_states.py:20\nmsgid \"Coahuila\"\nmsgstr \"Coahuila\"\n\n#: mx/mx_states.py:21\nmsgid \"Colima\"\nmsgstr \"Colima\"\n\n#: mx/mx_states.py:22\nmsgid \"Distrito Federal\"\nmsgstr \"Meksyk (miasto)\"\n\n#: mx/mx_states.py:23\nmsgid \"Durango\"\nmsgstr \"Durango\"\n\n#: mx/mx_states.py:24\nmsgid \"Guerrero\"\nmsgstr \"Guerrero\"\n\n#: mx/mx_states.py:25\nmsgid \"Guanajuato\"\nmsgstr \"Guanajuato\"\n\n#: mx/mx_states.py:26\nmsgid \"Hidalgo\"\nmsgstr \"Hidalgo\"\n\n#: mx/mx_states.py:27\nmsgid \"Jalisco\"\nmsgstr \"Jalisco\"\n\n#: mx/mx_states.py:28\nmsgid \"Estado de México\"\nmsgstr \"Meksyk (stan)\"\n\n#: mx/mx_states.py:29\nmsgid \"Michoacán\"\nmsgstr \"Michocan\"\n\n#: mx/mx_states.py:30\nmsgid \"Morelos\"\nmsgstr \"Morelos\"\n\n#: mx/mx_states.py:31\nmsgid \"Nayarit\"\nmsgstr \"Nayarit\"\n\n#: mx/mx_states.py:32\nmsgid \"Nuevo León\"\nmsgstr \"Nuevo Leon\"\n\n#: mx/mx_states.py:33\nmsgid \"Oaxaca\"\nmsgstr \"Oaxaca\"\n\n#: mx/mx_states.py:34\nmsgid \"Puebla\"\nmsgstr \"Puebla\"\n\n#: mx/mx_states.py:35\nmsgid \"Querétaro\"\nmsgstr \"Queretaro\"\n\n#: mx/mx_states.py:36\nmsgid \"Quintana Roo\"\nmsgstr \"Quintana Roo\"\n\n#: mx/mx_states.py:37\nmsgid \"Sinaloa\"\nmsgstr \"Sinaloa\"\n\n#: mx/mx_states.py:38\nmsgid \"San Luis Potosí\"\nmsgstr \"San Luis Potasi\"\n\n#: mx/mx_states.py:39\nmsgid \"Sonora\"\nmsgstr \"Sonora\"\n\n#: mx/mx_states.py:40\nmsgid \"Tabasco\"\nmsgstr \"Tabasco\"\n\n#: mx/mx_states.py:41\nmsgid \"Tamaulipas\"\nmsgstr \"Tamaulipas\"\n\n#: mx/mx_states.py:42\nmsgid \"Tlaxcala\"\nmsgstr \"Tlaxcala\"\n\n#: mx/mx_states.py:43\nmsgid \"Veracruz\"\nmsgstr \"Veracruz\"\n\n#: mx/mx_states.py:44\nmsgid \"Yucatán\"\nmsgstr \"Jukatan\"\n\n#: mx/mx_states.py:45\nmsgid \"Zacatecas\"\nmsgstr \"Zacatecas\"\n\n#: nl/forms.py:26\nmsgid \"Enter a valid postal code\"\nmsgstr \"Wpisz poprawny kod pocztowy\"\n\n#: nl/forms.py:82\nmsgid \"Enter a valid SoFi number\"\nmsgstr \"Wpisz poprawny numer SoFi\"\n\n#: nl/nl_provinces.py:4\nmsgid \"Drenthe\"\nmsgstr \"Drenthe\"\n\n#: nl/nl_provinces.py:5\nmsgid \"Flevoland\"\nmsgstr \"Flevoland\"\n\n#: nl/nl_provinces.py:6\nmsgid \"Friesland\"\nmsgstr \"Fryzja\"\n\n#: nl/nl_provinces.py:7\nmsgid \"Gelderland\"\nmsgstr \"Geldria\"\n\n#: nl/nl_provinces.py:8\nmsgid \"Groningen\"\nmsgstr \"Groningen\"\n\n#: nl/nl_provinces.py:10\nmsgid \"Noord-Brabant\"\nmsgstr \"Brabancja Północna\"\n\n#: nl/nl_provinces.py:11\nmsgid \"Noord-Holland\"\nmsgstr \"Holandia Północna\"\n\n#: nl/nl_provinces.py:12\nmsgid \"Overijssel\"\nmsgstr \"Overijssel\"\n\n#: nl/nl_provinces.py:13\nmsgid \"Utrecht\"\nmsgstr \"Utrecht\"\n\n#: nl/nl_provinces.py:14\nmsgid \"Zeeland\"\nmsgstr \"Zelandia\"\n\n#: nl/nl_provinces.py:15\nmsgid \"Zuid-Holland\"\nmsgstr \"Holandia Południowa\"\n\n#: no/forms.py:39\nmsgid \"Enter a valid Norwegian social security number.\"\nmsgstr \"Wpis poprawny numer norweskiego ubezpieczenia socjalnego.\"\n\n#: pe/forms.py:28\nmsgid \"This field requires 8 digits.\"\nmsgstr \"To pole musi zawierać 8 cyfr.\"\n\n#: pe/forms.py:56\nmsgid \"This field requires 11 digits.\"\nmsgstr \"To pole musi zawierać 11 cyfr.\"\n\n#: pl/forms.py:42\nmsgid \"National Identification Number consists of 11 digits.\"\nmsgstr \"Numer PESEL składa się z 11 cyfr.\"\n\n#: pl/forms.py:43\nmsgid \"Wrong checksum for the National Identification Number.\"\nmsgstr \"Błędna suma kontrolna numeru PESEL.\"\n\n#: pl/forms.py:79\nmsgid \"National ID Card Number consists of 3 letters and 6 digits.\"\nmsgstr \"Numer dowodu osobistego składa się z 3 liter i 6 cyfr.\"\n\n#: pl/forms.py:80\nmsgid \"Wrong checksum for the National ID Card Number.\"\nmsgstr \"Błędna suma kontrolna numeru dowodu osobistego.\"\n\n#: pl/forms.py:131\nmsgid \"\"\n\"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or \"\n\"XXXXXXXXXX.\"\nmsgstr \"\"\n\"Wprowadź numer identyfikacji podatkowej (NIP) w jednym z trzech formatów:  \"\n\"'XXX-XXX-XX-XX', 'XXX-XX-XX-XXX' lub 'XXXXXXXXXX'.\"\n\n#: pl/forms.py:132\nmsgid \"Wrong checksum for the Tax Number (NIP).\"\nmsgstr \"Błędna suma kontrolna numeru NIP\"\n\n#: pl/forms.py:171\nmsgid \"National Business Register Number (REGON) consists of 9 or 14 digits.\"\nmsgstr \"Numer REGON składa się z 9 lub 14 cyfr.\"\n\n#: pl/forms.py:172\nmsgid \"Wrong checksum for the National Business Register Number (REGON).\"\nmsgstr \"Błędna suma kontrolna numeru REGON\"\n\n#: pl/forms.py:212\nmsgid \"Enter a postal code in the format XX-XXX.\"\nmsgstr \"Wpisz kod pocztowy w formacie XX-XXX.\"\n\n#: pl/pl_voivodeships.py:8\nmsgid \"Lower Silesia\"\nmsgstr \"Dolnośląskie\"\n\n#: pl/pl_voivodeships.py:9\nmsgid \"Kuyavia-Pomerania\"\nmsgstr \"Kujawsko-Pomorskie\"\n\n#: pl/pl_voivodeships.py:10\nmsgid \"Lublin\"\nmsgstr \"Lubelskie\"\n\n#: pl/pl_voivodeships.py:11\nmsgid \"Lubusz\"\nmsgstr \"Lubuskie\"\n\n#: pl/pl_voivodeships.py:12\nmsgid \"Lodz\"\nmsgstr \"Łódzkie\"\n\n#: pl/pl_voivodeships.py:13\nmsgid \"Lesser Poland\"\nmsgstr \"Małopolskie\"\n\n#: pl/pl_voivodeships.py:14\nmsgid \"Masovia\"\nmsgstr \"Mazowieckie\"\n\n#: pl/pl_voivodeships.py:15\nmsgid \"Opole\"\nmsgstr \"Opolskie\"\n\n#: pl/pl_voivodeships.py:16\nmsgid \"Subcarpatia\"\nmsgstr \"Podkarpackie\"\n\n#: pl/pl_voivodeships.py:17\nmsgid \"Podlasie\"\nmsgstr \"Podlaskie\"\n\n#: pl/pl_voivodeships.py:18\nmsgid \"Pomerania\"\nmsgstr \"Pomorskie\"\n\n#: pl/pl_voivodeships.py:19\nmsgid \"Silesia\"\nmsgstr \"Śląskie\"\n\n#: pl/pl_voivodeships.py:20\nmsgid \"Swietokrzyskie\"\nmsgstr \"Świętokrzyskie\"\n\n#: pl/pl_voivodeships.py:21\nmsgid \"Warmia-Masuria\"\nmsgstr \"Warmińsko-Mazurskie\"\n\n#: pl/pl_voivodeships.py:22\nmsgid \"Greater Poland\"\nmsgstr \"Wielkopolskie\"\n\n#: pl/pl_voivodeships.py:23\nmsgid \"West Pomerania\"\nmsgstr \"Zachodniopomorskie\"\n\n#: pt/forms.py:19\nmsgid \"Enter a zip code in the format XXXX-XXX.\"\nmsgstr \"Wpisz kod pocztowy w formacie XXXX-XXX.\"\n\n#: pt/forms.py:39\nmsgid \"Phone numbers must have 9 digits, or start by + or 00.\"\nmsgstr \"Numery telefonów muszą mieć 9 cyfr lub zaczynać się od + albo 00.\"\n\n#: ro/forms.py:22\nmsgid \"Enter a valid CIF.\"\nmsgstr \"Wpisz poprawny CIF.\"\n\n#: ro/forms.py:59\nmsgid \"Enter a valid CNP.\"\nmsgstr \"Wpisz poprawny CNP.\"\n\n#: ro/forms.py:143\nmsgid \"Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format\"\nmsgstr \"Podaj poprawny IBAN w formacie ROXX-XXXX-XXXX-XXXX-XXXX-XXXX\"\n\n#: ro/forms.py:175\nmsgid \"Phone numbers must be in XXXX-XXXXXX format.\"\nmsgstr \"Numery telefoniczne muszą być w formacie XXXX-XXXXXX.\"\n\n#: ro/forms.py:200\nmsgid \"Enter a valid postal code in the format XXXXXX\"\nmsgstr \"Wpisz kod pocztowy w formacie XXXXXX.\"\n\n#: ru/forms.py:37\nmsgid \"Enter a postal code in the format XXXXXX.\"\nmsgstr \"Wprowadź kod pocztowy w formacie XXXXXX.\"\n\n#: ru/forms.py:50\nmsgid \"Enter a passport number in the format XXXX XXXXXX.\"\nmsgstr \"Wprowadź numer paszportu w formacie XXXX XXXXXX.\"\n\n#: ru/forms.py:63\nmsgid \"Enter a passport number in the format XX XXXXXXX.\"\nmsgstr \"Wprowadź numer paszportu w formacie XX XXXXXXX.\"\n\n#: ru/ru_regions.py:10\nmsgid \"Central Federal County\"\nmsgstr \"Centralny Okręg Federalny\"\n\n#: ru/ru_regions.py:11\nmsgid \"South Federal County\"\nmsgstr \"Południowy Okręg Federalny\"\n\n#: ru/ru_regions.py:12\nmsgid \"North-West Federal County\"\nmsgstr \"Północno-Zachodni Okręg Federalny\"\n\n#: ru/ru_regions.py:13\nmsgid \"Far-East Federal County\"\nmsgstr \"Dalekowschodni Okręg Federalny\"\n\n#: ru/ru_regions.py:14\nmsgid \"Siberian Federal County\"\nmsgstr \"Syberyjski Okręg Federalny\"\n\n#: ru/ru_regions.py:15\nmsgid \"Ural Federal County\"\nmsgstr \"Uralski Okręg Federalny\"\n\n#: ru/ru_regions.py:16\nmsgid \"Privolzhsky Federal County\"\nmsgstr \"Nadwołżański Okręg Federalny\"\n\n#: ru/ru_regions.py:17\nmsgid \"North-Caucasian Federal County\"\nmsgstr \"Północnokaukaski Okręg Federalny\"\n\n#: ru/ru_regions.py:21\nmsgid \"Moskva\"\nmsgstr \"Moskva\"\n\n#: ru/ru_regions.py:22\nmsgid \"Saint-Peterburg\"\nmsgstr \"Saint-Peterburg\"\n\n#: ru/ru_regions.py:23\nmsgid \"Moskovskaya oblast'\"\nmsgstr \"Moskovskaya oblast'\"\n\n#: ru/ru_regions.py:24\nmsgid \"Adygeya, Respublika\"\nmsgstr \"Adygeya, Respublika\"\n\n#: ru/ru_regions.py:25\nmsgid \"Bashkortostan, Respublika\"\nmsgstr \"Bashkortostan, Respublika\"\n\n#: ru/ru_regions.py:26\nmsgid \"Buryatia, Respublika\"\nmsgstr \"Buryatia, Respublika\"\n\n#: ru/ru_regions.py:27\nmsgid \"Altay, Respublika\"\nmsgstr \"Altay, Respublika\"\n\n#: ru/ru_regions.py:28\nmsgid \"Dagestan, Respublika\"\nmsgstr \"Dagestan, Respublika\"\n\n#: ru/ru_regions.py:29\nmsgid \"Ingushskaya Respublika\"\nmsgstr \"Ingushskaya Respublika\"\n\n#: ru/ru_regions.py:30\nmsgid \"Kabardino-Balkarskaya Respublika\"\nmsgstr \"Kabardino-Balkarskaya Respublika\"\n\n#: ru/ru_regions.py:31\nmsgid \"Kalmykia, Respublika\"\nmsgstr \"Kalmykia, Respublika\"\n\n#: ru/ru_regions.py:32\nmsgid \"Karachaevo-Cherkesskaya Respublika\"\nmsgstr \"Karachaevo-Cherkesskaya Respublika\"\n\n#: ru/ru_regions.py:33\nmsgid \"Karelia, Respublika\"\nmsgstr \"Karelia, Respublika\"\n\n#: ru/ru_regions.py:34\nmsgid \"Komi, Respublika\"\nmsgstr \"Komi, Respublika\"\n\n#: ru/ru_regions.py:35\nmsgid \"Mariy Ehl, Respublika\"\nmsgstr \"Mariy Ehl, Respublika\"\n\n#: ru/ru_regions.py:36\nmsgid \"Mordovia, Respublika\"\nmsgstr \"Mordovia, Respublika\"\n\n#: ru/ru_regions.py:37\nmsgid \"Sakha, Respublika (Yakutiya)\"\nmsgstr \"Sakha, Respublika (Yakutiya)\"\n\n#: ru/ru_regions.py:38\nmsgid \"Severnaya Osetia, Respublika (Alania)\"\nmsgstr \"Severnaya Osetia, Respublika (Alania)\"\n\n#: ru/ru_regions.py:39\nmsgid \"Tatarstan, Respublika\"\nmsgstr \"Tatarstan, Respublika\"\n\n#: ru/ru_regions.py:40\nmsgid \"Tyva, Respublika (Tuva)\"\nmsgstr \"Tyva, Respublika (Tuva)\"\n\n#: ru/ru_regions.py:41\nmsgid \"Udmurtskaya Respublika\"\nmsgstr \"Udmurtskaya Respublika\"\n\n#: ru/ru_regions.py:42\nmsgid \"Khakassiya, Respublika\"\nmsgstr \"Khakassiya, Respublika\"\n\n#: ru/ru_regions.py:43\nmsgid \"Chechenskaya Respublika\"\nmsgstr \"Chechenskaya Respublika\"\n\n#: ru/ru_regions.py:44\nmsgid \"Chuvashskaya Respublika\"\nmsgstr \"Chuvashskaya Respublika\"\n\n#: ru/ru_regions.py:45\nmsgid \"Altayskiy Kray\"\nmsgstr \"Altayskiy Kray\"\n\n#: ru/ru_regions.py:46\nmsgid \"Zabaykalskiy Kray\"\nmsgstr \"Zabaykalskiy Kray\"\n\n#: ru/ru_regions.py:47\nmsgid \"Kamchatskiy Kray\"\nmsgstr \"Kamchatskiy Kray\"\n\n#: ru/ru_regions.py:48\nmsgid \"Krasnodarskiy Kray\"\nmsgstr \"Krasnodarskiy Kray\"\n\n#: ru/ru_regions.py:49\nmsgid \"Krasnoyarskiy Kray\"\nmsgstr \"Krasnoyarskiy Kray\"\n\n#: ru/ru_regions.py:50\nmsgid \"Permskiy Kray\"\nmsgstr \"Permskiy Kray\"\n\n#: ru/ru_regions.py:51\nmsgid \"Primorskiy Kray\"\nmsgstr \"Primorskiy Kray\"\n\n#: ru/ru_regions.py:52\nmsgid \"Stavropol'siyy Kray\"\nmsgstr \"Stavropol'siyy Kray\"\n\n#: ru/ru_regions.py:53\nmsgid \"Khabarovskiy Kray\"\nmsgstr \"Khabarovskiy Kray\"\n\n#: ru/ru_regions.py:54\nmsgid \"Amurskaya oblast'\"\nmsgstr \"Amurskaya oblast'\"\n\n#: ru/ru_regions.py:55\nmsgid \"Arkhangel'skaya oblast'\"\nmsgstr \"Arkhangel'skaya oblast'\"\n\n#: ru/ru_regions.py:56\nmsgid \"Astrakhanskaya oblast'\"\nmsgstr \"Astrakhanskaya oblast'\"\n\n#: ru/ru_regions.py:57\nmsgid \"Belgorodskaya oblast'\"\nmsgstr \"Belgorodskaya oblast'\"\n\n#: ru/ru_regions.py:58\nmsgid \"Bryanskaya oblast'\"\nmsgstr \"Bryanskaya oblast'\"\n\n#: ru/ru_regions.py:59\nmsgid \"Vladimirskaya oblast'\"\nmsgstr \"Vladimirskaya oblast'\"\n\n#: ru/ru_regions.py:60\nmsgid \"Volgogradskaya oblast'\"\nmsgstr \"Volgogradskaya oblast'\"\n\n#: ru/ru_regions.py:61\nmsgid \"Vologodskaya oblast'\"\nmsgstr \"Vologodskaya oblast'\"\n\n#: ru/ru_regions.py:62\nmsgid \"Voronezhskaya oblast'\"\nmsgstr \"Voronezhskaya oblast'\"\n\n#: ru/ru_regions.py:63\nmsgid \"Ivanovskaya oblast'\"\nmsgstr \"Ivanovskaya oblast'\"\n\n#: ru/ru_regions.py:64\nmsgid \"Irkutskaya oblast'\"\nmsgstr \"Irkutskaya oblast'\"\n\n#: ru/ru_regions.py:65\nmsgid \"Kaliningradskaya oblast'\"\nmsgstr \"Kaliningradskaya oblast'\"\n\n#: ru/ru_regions.py:66\nmsgid \"Kaluzhskaya oblast'\"\nmsgstr \"Kaluzhskaya oblast'\"\n\n#: ru/ru_regions.py:67\nmsgid \"Kemerovskaya oblast'\"\nmsgstr \"Kemerovskaya oblast'\"\n\n#: ru/ru_regions.py:68\nmsgid \"Kirovskaya oblast'\"\nmsgstr \"Kirovskaya oblast'\"\n\n#: ru/ru_regions.py:69\nmsgid \"Kostromskaya oblast'\"\nmsgstr \"Kostromskaya oblast'\"\n\n#: ru/ru_regions.py:70\nmsgid \"Kurganskaya oblast'\"\nmsgstr \"Kurganskaya oblast'\"\n\n#: ru/ru_regions.py:71\nmsgid \"Kurskaya oblast'\"\nmsgstr \"Kurskaya oblast'\"\n\n#: ru/ru_regions.py:72\nmsgid \"Leningradskaya oblast'\"\nmsgstr \"Leningradskaya oblast'\"\n\n#: ru/ru_regions.py:73\nmsgid \"Lipeckaya oblast'\"\nmsgstr \"Lipeckaya oblast'\"\n\n#: ru/ru_regions.py:74\nmsgid \"Magadanskaya oblast'\"\nmsgstr \"Magadanskaya oblast'\"\n\n#: ru/ru_regions.py:75\nmsgid \"Murmanskaya oblast'\"\nmsgstr \"Murmanskaya oblast'\"\n\n#: ru/ru_regions.py:76\nmsgid \"Nizhegorodskaja oblast'\"\nmsgstr \"Nizhegorodskaja oblast'\"\n\n#: ru/ru_regions.py:77\nmsgid \"Novgorodskaya oblast'\"\nmsgstr \"Novgorodskaya oblast'\"\n\n#: ru/ru_regions.py:78\nmsgid \"Novosibirskaya oblast'\"\nmsgstr \"Novosibirskaya oblast'\"\n\n#: ru/ru_regions.py:79\nmsgid \"Omskaya oblast'\"\nmsgstr \"Omskaya oblast'\"\n\n#: ru/ru_regions.py:80\nmsgid \"Orenburgskaya oblast'\"\nmsgstr \"Orenburgskaya oblast'\"\n\n#: ru/ru_regions.py:81\nmsgid \"Orlovskaya oblast'\"\nmsgstr \"Orlovskaya oblast'\"\n\n#: ru/ru_regions.py:82\nmsgid \"Penzenskaya oblast'\"\nmsgstr \"Penzenskaya oblast'\"\n\n#: ru/ru_regions.py:83\nmsgid \"Pskovskaya oblast'\"\nmsgstr \"Pskovskaya oblast'\"\n\n#: ru/ru_regions.py:84\nmsgid \"Rostovskaya oblast'\"\nmsgstr \"Rostovskaya oblast'\"\n\n#: ru/ru_regions.py:85\nmsgid \"Rjazanskaya oblast'\"\nmsgstr \"Rjazanskaya oblast'\"\n\n#: ru/ru_regions.py:86\nmsgid \"Samarskaya oblast'\"\nmsgstr \"Samarskaya oblast'\"\n\n#: ru/ru_regions.py:87\nmsgid \"Saratovskaya oblast'\"\nmsgstr \"Saratovskaya oblast'\"\n\n#: ru/ru_regions.py:88\nmsgid \"Sakhalinskaya oblast'\"\nmsgstr \"Sakhalinskaya oblast'\"\n\n#: ru/ru_regions.py:89\nmsgid \"Sverdlovskaya oblast'\"\nmsgstr \"Sverdlovskaya oblast'\"\n\n#: ru/ru_regions.py:90\nmsgid \"Smolenskaya oblast'\"\nmsgstr \"Smolenskaya oblast'\"\n\n#: ru/ru_regions.py:91\nmsgid \"Tambovskaya oblast'\"\nmsgstr \"Tambovskaya oblast'\"\n\n#: ru/ru_regions.py:92\nmsgid \"Tverskaya oblast'\"\nmsgstr \"Tverskaya oblast'\"\n\n#: ru/ru_regions.py:93\nmsgid \"Tomskaya oblast'\"\nmsgstr \"Tomskaya oblast'\"\n\n#: ru/ru_regions.py:94\nmsgid \"Tul'skaya oblast'\"\nmsgstr \"Tul'skaya oblast'\"\n\n#: ru/ru_regions.py:95\nmsgid \"Tyumenskaya oblast'\"\nmsgstr \"Tyumenskaya oblast'\"\n\n#: ru/ru_regions.py:96\nmsgid \"Ul'ianovskaya oblast'\"\nmsgstr \"Ul'ianovskaya oblast'\"\n\n#: ru/ru_regions.py:97\nmsgid \"Chelyabinskaya oblast'\"\nmsgstr \"Chelyabinskaya oblast'\"\n\n#: ru/ru_regions.py:98\nmsgid \"Yaroslavskaya oblast'\"\nmsgstr \"Yaroslavskaya oblast'\"\n\n#: ru/ru_regions.py:99\nmsgid \"Evreyskaya avtonomnaja oblast'\"\nmsgstr \"Evreyskaya avtonomnaja oblast'\"\n\n#: ru/ru_regions.py:100\nmsgid \"Neneckiy autonomnyy okrug\"\nmsgstr \"Neneckiy autonomnyy okrug\"\n\n#: ru/ru_regions.py:101\nmsgid \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\nmsgstr \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\n\n#: ru/ru_regions.py:102\nmsgid \"Chukotskiy avtonomnyy okrug\"\nmsgstr \"Chukotskiy avtonomnyy okrug\"\n\n#: ru/ru_regions.py:103\nmsgid \"Yamalo-Neneckiy avtonomnyy okrug\"\nmsgstr \"Yamalo-Neneckiy avtonomnyy okrug\"\n\n#: se/forms.py:54\nmsgid \"Enter a valid Swedish organisation number.\"\nmsgstr \"Wpisz poprawny szwedzki numer organizacji.\"\n\n#: se/forms.py:111\nmsgid \"Enter a valid Swedish personal identity number.\"\nmsgstr \"Wpis poprawny szwedzki numer identyfikacji osobistej.\"\n\n#: se/forms.py:112\nmsgid \"Co-ordination numbers are not allowed.\"\nmsgstr \"Numery tymczasowe nie są dozwolone.\"\n\n#: se/forms.py:154\nmsgid \"Enter a Swedish postal code in the format XXXXX.\"\nmsgstr \"Wpisz szwedzki kod pocztowy w formacie XXXXX.\"\n\n#: se/se_counties.py:16\nmsgid \"Stockholm\"\nmsgstr \"Sztokholm\"\n\n#: se/se_counties.py:17\nmsgid \"Västerbotten\"\nmsgstr \"Västerbotten\"\n\n#: se/se_counties.py:18\nmsgid \"Norrbotten\"\nmsgstr \"Norrbotten\"\n\n#: se/se_counties.py:19\nmsgid \"Uppsala\"\nmsgstr \"Uppsala\"\n\n#: se/se_counties.py:20\nmsgid \"Södermanland\"\nmsgstr \"Södermanland\"\n\n#: se/se_counties.py:21\nmsgid \"Östergötland\"\nmsgstr \"Östergötland\"\n\n#: se/se_counties.py:22\nmsgid \"Jönköping\"\nmsgstr \"Jönköping\"\n\n#: se/se_counties.py:23\nmsgid \"Kronoberg\"\nmsgstr \"Kronoberg\"\n\n#: se/se_counties.py:24\nmsgid \"Kalmar\"\nmsgstr \"Kalmar\"\n\n#: se/se_counties.py:25\nmsgid \"Gotland\"\nmsgstr \"Gotland\"\n\n#: se/se_counties.py:26\nmsgid \"Blekinge\"\nmsgstr \"Blekinge\"\n\n#: se/se_counties.py:27\nmsgid \"Skåne\"\nmsgstr \"Skåne\"\n\n#: se/se_counties.py:28\nmsgid \"Halland\"\nmsgstr \"Halland\"\n\n#: se/se_counties.py:29\nmsgid \"Västra Götaland\"\nmsgstr \"Västra Götaland\"\n\n#: se/se_counties.py:30\nmsgid \"Värmland\"\nmsgstr \"Värmland\"\n\n#: se/se_counties.py:31\nmsgid \"Örebro\"\nmsgstr \"Örebro\"\n\n#: se/se_counties.py:32\nmsgid \"Västmanland\"\nmsgstr \"Västmanland\"\n\n#: se/se_counties.py:33\nmsgid \"Dalarna\"\nmsgstr \"Dalarna\"\n\n#: se/se_counties.py:34\nmsgid \"Gävleborg\"\nmsgstr \"Gävleborg\"\n\n#: se/se_counties.py:35\nmsgid \"Västernorrland\"\nmsgstr \"Västernorrland\"\n\n#: se/se_counties.py:36\nmsgid \"Jämtland\"\nmsgstr \"Jämtland\"\n\n#: si/forms.py:25\nmsgid \"The first 7 digits of the EMSO must represent a valid past date.\"\nmsgstr \"Pierwsze 7 cyfr EMSO muszą reprezentować poprawną, przeszłą datę\"\n\n#: si/forms.py:26\nmsgid \"The EMSO is not valid.\"\nmsgstr \"EMSO jest niepoprawne.\"\n\n#: si/forms.py:86\nmsgid \"Enter a valid tax number in form SIXXXXXXXX\"\nmsgstr \"Wprowadź numer telefonu w formacie SIXXXXXXXX\"\n\n#: si/forms.py:151\nmsgid \"Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.\"\nmsgstr \"Wprowadź numer telefonu w formacie +386XXXXXXXX lub 0XXXXXXXX.\"\n\n#: sk/sk_districts.py:8\nmsgid \"Banska Bystrica\"\nmsgstr \"Bańska Bystrzyca\"\n\n#: sk/sk_districts.py:9\nmsgid \"Banska Stiavnica\"\nmsgstr \"Bańska Szczawnica\"\n\n#: sk/sk_districts.py:10\nmsgid \"Bardejov\"\nmsgstr \"Bardiów\"\n\n#: sk/sk_districts.py:11\nmsgid \"Banovce nad Bebravou\"\nmsgstr \"Banovce nad Bebravou\"\n\n#: sk/sk_districts.py:12\nmsgid \"Brezno\"\nmsgstr \"Brezno\"\n\n#: sk/sk_districts.py:13\nmsgid \"Bratislava I\"\nmsgstr \"Bratysława I\"\n\n#: sk/sk_districts.py:14\nmsgid \"Bratislava II\"\nmsgstr \"Bratysława II\"\n\n#: sk/sk_districts.py:15\nmsgid \"Bratislava III\"\nmsgstr \"Bratysława III\"\n\n#: sk/sk_districts.py:16\nmsgid \"Bratislava IV\"\nmsgstr \"Bratysława IV\"\n\n#: sk/sk_districts.py:17\nmsgid \"Bratislava V\"\nmsgstr \"Bratysława V\"\n\n#: sk/sk_districts.py:18\nmsgid \"Bytca\"\nmsgstr \"Bytca\"\n\n#: sk/sk_districts.py:19\nmsgid \"Cadca\"\nmsgstr \"Czadca\"\n\n#: sk/sk_districts.py:20\nmsgid \"Detva\"\nmsgstr \"Detva\"\n\n#: sk/sk_districts.py:21\nmsgid \"Dolny Kubin\"\nmsgstr \"Dolny Kubin\"\n\n#: sk/sk_districts.py:22\nmsgid \"Dunajska Streda\"\nmsgstr \"Dunajska Streda\"\n\n#: sk/sk_districts.py:23\nmsgid \"Galanta\"\nmsgstr \"Galanta\"\n\n#: sk/sk_districts.py:24\nmsgid \"Gelnica\"\nmsgstr \"Gelnica\"\n\n#: sk/sk_districts.py:25\nmsgid \"Hlohovec\"\nmsgstr \"Hlohovec\"\n\n#: sk/sk_districts.py:26\nmsgid \"Humenne\"\nmsgstr \"Humenne\"\n\n#: sk/sk_districts.py:27\nmsgid \"Ilava\"\nmsgstr \"Ilava\"\n\n#: sk/sk_districts.py:28\nmsgid \"Kezmarok\"\nmsgstr \"Kieżmarek\"\n\n#: sk/sk_districts.py:29\nmsgid \"Komarno\"\nmsgstr \"Komarno\"\n\n#: sk/sk_districts.py:30\nmsgid \"Kosice I\"\nmsgstr \"Koszyce I\"\n\n#: sk/sk_districts.py:31\nmsgid \"Kosice II\"\nmsgstr \"Koszyce II\"\n\n#: sk/sk_districts.py:32\nmsgid \"Kosice III\"\nmsgstr \"Koszyce III\"\n\n#: sk/sk_districts.py:33\nmsgid \"Kosice IV\"\nmsgstr \"Koszyce IV\"\n\n#: sk/sk_districts.py:34\nmsgid \"Kosice - okolie\"\nmsgstr \"Koszyce - okolice\"\n\n#: sk/sk_districts.py:35\nmsgid \"Krupina\"\nmsgstr \"Krupina\"\n\n#: sk/sk_districts.py:36\nmsgid \"Kysucke Nove Mesto\"\nmsgstr \"Kysucke Nove Mesto\"\n\n#: sk/sk_districts.py:37\nmsgid \"Levice\"\nmsgstr \"Levice\"\n\n#: sk/sk_districts.py:38\nmsgid \"Levoca\"\nmsgstr \"Lewocza\"\n\n#: sk/sk_districts.py:39\nmsgid \"Liptovsky Mikulas\"\nmsgstr \"Liptowski Mikulasz\"\n\n#: sk/sk_districts.py:40\nmsgid \"Lucenec\"\nmsgstr \"Łuczeniec\"\n\n#: sk/sk_districts.py:41\nmsgid \"Malacky\"\nmsgstr \"Malacky\"\n\n#: sk/sk_districts.py:42\nmsgid \"Martin\"\nmsgstr \"Martin\"\n\n#: sk/sk_districts.py:43\nmsgid \"Medzilaborce\"\nmsgstr \"Medzilaborce\"\n\n#: sk/sk_districts.py:44\nmsgid \"Michalovce\"\nmsgstr \"Michalovce\"\n\n#: sk/sk_districts.py:45\nmsgid \"Myjava\"\nmsgstr \"Myjava\"\n\n#: sk/sk_districts.py:46\nmsgid \"Namestovo\"\nmsgstr \"Namestovo\"\n\n#: sk/sk_districts.py:47\nmsgid \"Nitra\"\nmsgstr \"Nitra\"\n\n#: sk/sk_districts.py:48\nmsgid \"Nove Mesto nad Vahom\"\nmsgstr \"Nove Mesto nad Vahom\"\n\n#: sk/sk_districts.py:49\nmsgid \"Nove Zamky\"\nmsgstr \"Nove Zamky\"\n\n#: sk/sk_districts.py:50\nmsgid \"Partizanske\"\nmsgstr \"Partizanske\"\n\n#: sk/sk_districts.py:51\nmsgid \"Pezinok\"\nmsgstr \"Pezinok\"\n\n#: sk/sk_districts.py:52\nmsgid \"Piestany\"\nmsgstr \"Pieszczany\"\n\n#: sk/sk_districts.py:53\nmsgid \"Poltar\"\nmsgstr \"Poltar\"\n\n#: sk/sk_districts.py:54\nmsgid \"Poprad\"\nmsgstr \"Poprad\"\n\n#: sk/sk_districts.py:55\nmsgid \"Povazska Bystrica\"\nmsgstr \"Poważska Bystrzyca\"\n\n#: sk/sk_districts.py:56\nmsgid \"Presov\"\nmsgstr \"Preszów\"\n\n#: sk/sk_districts.py:57\nmsgid \"Prievidza\"\nmsgstr \"Prievidza\"\n\n#: sk/sk_districts.py:58\nmsgid \"Puchov\"\nmsgstr \"Puchov\"\n\n#: sk/sk_districts.py:59\nmsgid \"Revuca\"\nmsgstr \"Revuca\"\n\n#: sk/sk_districts.py:60\nmsgid \"Rimavska Sobota\"\nmsgstr \"Rimavska Sobota\"\n\n#: sk/sk_districts.py:61\nmsgid \"Roznava\"\nmsgstr \"Roznava\"\n\n#: sk/sk_districts.py:62\nmsgid \"Ruzomberok\"\nmsgstr \"Rużemberk\"\n\n#: sk/sk_districts.py:63\nmsgid \"Sabinov\"\nmsgstr \"Sabinov\"\n\n#: sk/sk_districts.py:64\nmsgid \"Senec\"\nmsgstr \"Senec\"\n\n#: sk/sk_districts.py:65\nmsgid \"Senica\"\nmsgstr \"Senica\"\n\n#: sk/sk_districts.py:66\nmsgid \"Skalica\"\nmsgstr \"Skalica\"\n\n#: sk/sk_districts.py:67\nmsgid \"Snina\"\nmsgstr \"Snina\"\n\n#: sk/sk_districts.py:68\nmsgid \"Sobrance\"\nmsgstr \"Sobrance\"\n\n#: sk/sk_districts.py:69\nmsgid \"Spisska Nova Ves\"\nmsgstr \"Nowa Wieś Spiska\"\n\n#: sk/sk_districts.py:70\nmsgid \"Stara Lubovna\"\nmsgstr \"Stara Lubowla\"\n\n#: sk/sk_districts.py:71\nmsgid \"Stropkov\"\nmsgstr \"Stropkov\"\n\n#: sk/sk_districts.py:72\nmsgid \"Svidnik\"\nmsgstr \"Svidnik\"\n\n#: sk/sk_districts.py:73\nmsgid \"Sala\"\nmsgstr \"Sala\"\n\n#: sk/sk_districts.py:74\nmsgid \"Topolcany\"\nmsgstr \"Topolczany\"\n\n#: sk/sk_districts.py:75\nmsgid \"Trebisov\"\nmsgstr \"Trebisov\"\n\n#: sk/sk_districts.py:76\nmsgid \"Trencin\"\nmsgstr \"Trenczyn\"\n\n#: sk/sk_districts.py:77\nmsgid \"Trnava\"\nmsgstr \"Trnawa\"\n\n#: sk/sk_districts.py:78\nmsgid \"Turcianske Teplice\"\nmsgstr \"Turcianske Teplice\"\n\n#: sk/sk_districts.py:79\nmsgid \"Tvrdosin\"\nmsgstr \"Twardoszyn\"\n\n#: sk/sk_districts.py:80\nmsgid \"Velky Krtis\"\nmsgstr \"Velky Krtis\"\n\n#: sk/sk_districts.py:81\nmsgid \"Vranov nad Toplou\"\nmsgstr \"Vranov nad Toplou\"\n\n#: sk/sk_districts.py:82\nmsgid \"Zlate Moravce\"\nmsgstr \"Zlate Moravce\"\n\n#: sk/sk_districts.py:83\nmsgid \"Zvolen\"\nmsgstr \"Zwoleń\"\n\n#: sk/sk_districts.py:84\nmsgid \"Zarnovica\"\nmsgstr \"Zarnovica\"\n\n#: sk/sk_districts.py:85\nmsgid \"Ziar nad Hronom\"\nmsgstr \"Ziar nad Hronom\"\n\n#: sk/sk_districts.py:86\nmsgid \"Zilina\"\nmsgstr \"Żylina\"\n\n#: sk/sk_regions.py:8\nmsgid \"Banska Bystrica region\"\nmsgstr \"Kraj bańskobystrzycki\"\n\n#: sk/sk_regions.py:9\nmsgid \"Bratislava region\"\nmsgstr \"Kraj bratysławski\"\n\n#: sk/sk_regions.py:10\nmsgid \"Kosice region\"\nmsgstr \"Kraj koszycki\"\n\n#: sk/sk_regions.py:11\nmsgid \"Nitra region\"\nmsgstr \"Kraj nitrzański\"\n\n#: sk/sk_regions.py:12\nmsgid \"Presov region\"\nmsgstr \"Kraj preszowski\"\n\n#: sk/sk_regions.py:13\nmsgid \"Trencin region\"\nmsgstr \"Kraj trenczyński\"\n\n#: sk/sk_regions.py:14\nmsgid \"Trnava region\"\nmsgstr \"Kraj trnawski\"\n\n#: sk/sk_regions.py:15\nmsgid \"Zilina region\"\nmsgstr \"Kraj żyliński\"\n\n#: tr/forms.py:21\nmsgid \"Enter a postal code in the format XXXXX.\"\nmsgstr \"Wpisz kod pocztowy w formacie XXXXX.\"\n\n#: tr/forms.py:42\nmsgid \"Phone numbers must be in 0XXX XXX XXXX format.\"\nmsgstr \"Numery telefoniczne muszą być w formacie 0XXX XXX XXXX.\"\n\n#: tr/forms.py:69\nmsgid \"Enter a valid Turkish Identification number.\"\nmsgstr \"Wpisz poprawny Turecki Numer Identyfikacyjny.\"\n\n#: tr/forms.py:70\nmsgid \"Turkish Identification number must be 11 digits.\"\nmsgstr \"Turecki Numer Identyfikacyjny składa się z 11 cyfr.\"\n\n#: us/forms.py:21\nmsgid \"Enter a zip code in the format XXXXX or XXXXX-XXXX.\"\nmsgstr \"Wpisz kod pocztowy w formacie XXXXX. lub XXXXX-XXXX.\"\n\n#: us/forms.py:59\nmsgid \"Enter a valid U.S. Social Security number in XXX-XX-XXXX format.\"\nmsgstr \"Wpisz poprawny numer U.S. Social Security w formacie XXX-XX-XXXX.\"\n\n#: us/forms.py:92\nmsgid \"Enter a U.S. state or territory.\"\nmsgstr \"Podaj stan lub terytorium USA.\"\n\n#: us/models.py:8\nmsgid \"U.S. state (two uppercase letters)\"\nmsgstr \"Stan USA (dwie duże litery)\"\n\n#: us/models.py:17\nmsgid \"U.S. postal code (two uppercase letters)\"\nmsgstr \"Kod pocztowy USA (dwie duże litery)\"\n\n#: us/models.py:26\nmsgid \"Phone number\"\nmsgstr \"Numer telefonu\"\n\n#: uy/forms.py:29\nmsgid \"Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.\"\nmsgstr \"\"\n\"Wprowadź poprawny numer CI w formacie X.XXX.XXX-X, XXXXXXX-X lub XXXXXXXX.\"\n\n#: uy/forms.py:31\nmsgid \"Enter a valid CI number.\"\nmsgstr \"Wpisz poprawny numer CI.\"\n\n#: za/forms.py:22\nmsgid \"Enter a valid South African ID number\"\nmsgstr \"Wpisz poprawny południowoafrykański numer ID\"\n\n#: za/forms.py:56\nmsgid \"Enter a valid South African postal code\"\nmsgstr \"Wpisz poprawny południowoafrykański kod pocztowy\"\n\n#: za/za_provinces.py:4\nmsgid \"Eastern Cape\"\nmsgstr \"Prowincja Przylądkowa Wschodnia\"\n\n#: za/za_provinces.py:5\nmsgid \"Free State\"\nmsgstr \"Wolne Państwo\"\n\n#: za/za_provinces.py:6\nmsgid \"Gauteng\"\nmsgstr \"Gauteng\"\n\n#: za/za_provinces.py:7\nmsgid \"KwaZulu-Natal\"\nmsgstr \"KwaZulu-Natal\"\n\n#: za/za_provinces.py:8\nmsgid \"Limpopo\"\nmsgstr \"Limpopo\"\n\n#: za/za_provinces.py:9\nmsgid \"Mpumalanga\"\nmsgstr \"Mpumalanga\"\n\n#: za/za_provinces.py:10\nmsgid \"Northern Cape\"\nmsgstr \"Prowincja Przylądkowa Północna\"\n\n#: za/za_provinces.py:11\nmsgid \"North West\"\nmsgstr \"Prowincja Północno-Zachodnia\"\n\n#: za/za_provinces.py:12\nmsgid \"Western Cape\"\nmsgstr \"Prowincja Przylądkowa Zachodnia\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/locale/pt/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Bruno Miguel Custódio <bruno@brunomcustodio.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Nuno Mariz <nmariz@gmail.com>, 2011.\n# Paulo Köch <paulo.koch@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-10-26 20:36+0000\\n\"\n\"Last-Translator: Bruno Miguel Custódio <bruno@brunomcustodio.com>\\n\"\n\"Language-Team: Portuguese (http://www.transifex.com/projects/p/django/\"\n\"language/pt/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: pt\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: ar/forms.py:30\nmsgid \"Enter a postal code in the format NNNN or ANNNNAAA.\"\nmsgstr \"Introduza um código postal no formato NNNN ou ANNNNAAA.\"\n\n#: ar/forms.py:52 br/forms.py:95 br/forms.py:134 pe/forms.py:27 pe/forms.py:55\nmsgid \"This field requires only numbers.\"\nmsgstr \"Este campo apenas aceita números.\"\n\n#: ar/forms.py:53\nmsgid \"This field requires 7 or 8 digits.\"\nmsgstr \"Este campo apenas aceita 7 ou 8 dígitos.\"\n\n#: ar/forms.py:82\nmsgid \"Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.\"\nmsgstr \"Introduza o CUIT no formato XX-XXXXXXXX-X ou XXXXXXXXXXXX.\"\n\n#: ar/forms.py:83\nmsgid \"Invalid CUIT.\"\nmsgstr \"CUIT inválido.\"\n\n#: ar/forms.py:84\nmsgid \"Invalid legal type. Type must be 27, 20, 23 or 30.\"\nmsgstr \"\"\n\n#: at/at_states.py:5\nmsgid \"Burgenland\"\nmsgstr \"Burgenland\"\n\n#: at/at_states.py:6\nmsgid \"Carinthia\"\nmsgstr \"Caríntia\"\n\n#: at/at_states.py:7\nmsgid \"Lower Austria\"\nmsgstr \"Baixa Áustria\"\n\n#: at/at_states.py:8\nmsgid \"Upper Austria\"\nmsgstr \"Alta Áustria\"\n\n#: at/at_states.py:9\nmsgid \"Salzburg\"\nmsgstr \"Salzburgo\"\n\n#: at/at_states.py:10\nmsgid \"Styria\"\nmsgstr \"Styria\"\n\n#: at/at_states.py:11\nmsgid \"Tyrol\"\nmsgstr \"Tyrol\"\n\n#: at/at_states.py:12\nmsgid \"Vorarlberg\"\nmsgstr \"Vorarlberg\"\n\n#: at/at_states.py:13\nmsgid \"Vienna\"\nmsgstr \"Viena\"\n\n#: at/forms.py:22 ch/forms.py:22 no/forms.py:19\nmsgid \"Enter a zip code in the format XXXX.\"\nmsgstr \"Introduza um código postal no formato XXXX.\"\n\n#: at/forms.py:50\nmsgid \"Enter a valid Austrian Social Security Number in XXXX XXXXXX format.\"\nmsgstr \"\"\n\"Introduza um código de segurança social austríaco válido no formato XXXX \"\n\"XXXXXX.\"\n\n#: au/forms.py:26\nmsgid \"Enter a 4 digit postcode.\"\nmsgstr \"Introduza um código postal com 4 dígitos.\"\n\n#: au/models.py:9\nmsgid \"Australian State\"\nmsgstr \"\"\n\n#: au/models.py:19\nmsgid \"Australian Postcode\"\nmsgstr \"\"\n\n#: au/models.py:33\nmsgid \"Australian Phone number\"\nmsgstr \"\"\n\n#: be/be_provinces.py:5\nmsgid \"Antwerp\"\nmsgstr \"Antuérpia\"\n\n#: be/be_provinces.py:6\nmsgid \"Brussels\"\nmsgstr \"Bruxelas\"\n\n#: be/be_provinces.py:7\nmsgid \"East Flanders\"\nmsgstr \"Flandres Oriental\"\n\n#: be/be_provinces.py:8\nmsgid \"Flemish Brabant\"\nmsgstr \"Brabante Flamengo\"\n\n#: be/be_provinces.py:9\nmsgid \"Hainaut\"\nmsgstr \"Hainaut\"\n\n#: be/be_provinces.py:10\nmsgid \"Liege\"\nmsgstr \"Liege\"\n\n#: be/be_provinces.py:11 nl/nl_provinces.py:9\nmsgid \"Limburg\"\nmsgstr \"Limburg\"\n\n#: be/be_provinces.py:12\nmsgid \"Luxembourg\"\nmsgstr \"Luxemburgo\"\n\n#: be/be_provinces.py:13\nmsgid \"Namur\"\nmsgstr \"Namur\"\n\n#: be/be_provinces.py:14\nmsgid \"Walloon Brabant\"\nmsgstr \"Walloon Brabant\"\n\n#: be/be_provinces.py:15\nmsgid \"West Flanders\"\nmsgstr \"Flandres Ocidental\"\n\n#: be/be_regions.py:5\nmsgid \"Brussels Capital Region\"\nmsgstr \"Região de Bruxelas Capital\"\n\n#: be/be_regions.py:6\nmsgid \"Flemish Region\"\nmsgstr \"Região de Flandres\"\n\n#: be/be_regions.py:7\nmsgid \"Wallonia\"\nmsgstr \"Valónia\"\n\n#: be/forms.py:25\nmsgid \"Enter a valid postal code in the range and format 1XXX - 9XXX.\"\nmsgstr \"\"\n\"Introduza um código postal válido no intervalo e formato de 1XXX - 9XXX.\"\n\n#: be/forms.py:48\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\nmsgstr \"\"\n\"Digite um número de telefone válido em um dos formatos de xx xx 0 x xxx, xx \"\n\"xx 0xx xx, xx xx xx 04xx, 0x/xxx.xx.xx, 04xx/xx.xx.xx 0xx/xx.xx.xx, 0x . xxx.\"\n\"xx.xx, 0xx.xx.xx.xx, 04xx.xx.xx.xx 0xxxxxxxx ou 04xxxxxxxx.\"\n\n#: br/forms.py:22\nmsgid \"Enter a zip code in the format XXXXX-XXX.\"\nmsgstr \"Introduza um código postal no formato XXXXX-XXX.\"\n\n#: br/forms.py:31\nmsgid \"Phone numbers must be in XX-XXXX-XXXX format.\"\nmsgstr \"Os números de telefone deverão ser no formato XXX-XXX-XXXX.\"\n\n#: br/forms.py:58\nmsgid \"\"\n\"Select a valid brazilian state. That state is not one of the available \"\n\"states.\"\nmsgstr \"\"\n\"Seleccione um estado brazileiro válido. Esse estado não se encontra \"\n\"disponível.\"\n\n#: br/forms.py:93\nmsgid \"Invalid CPF number.\"\nmsgstr \"Número de CPF inválido.\"\n\n#: br/forms.py:94\nmsgid \"This field requires at most 11 digits or 14 characters.\"\nmsgstr \"Este campo aceita no máximo 11 dígitos ou 14 carateres.\"\n\n#: br/forms.py:133\nmsgid \"Invalid CNPJ number.\"\nmsgstr \"Número CNPJ inválido.\"\n\n#: br/forms.py:135\nmsgid \"This field requires at least 14 digits\"\nmsgstr \"Este campo aceita no mínimo 14 dígitos\"\n\n#: ca/forms.py:29\nmsgid \"Enter a postal code in the format XXX XXX.\"\nmsgstr \"Introduza um código postal no formato XXX XXX.\"\n\n#: ca/forms.py:47 us/forms.py:30\nmsgid \"Phone numbers must be in XXX-XXX-XXXX format.\"\nmsgstr \"Os números de telefone deverão ser no formato XXX-XXX-XXXX.\"\n\n#: ca/forms.py:69\nmsgid \"Enter a Canadian province or territory.\"\nmsgstr \"\"\n\n#: ca/forms.py:110\nmsgid \"Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.\"\nmsgstr \"\"\n\"Introduza um código de segurança social Canadiano válido no formato XXX-XXX-\"\n\"XXX.\"\n\n#: ch/ch_states.py:5\nmsgid \"Aargau\"\nmsgstr \"Aargau\"\n\n#: ch/ch_states.py:6\nmsgid \"Appenzell Innerrhoden\"\nmsgstr \"Appenzell Innerrhoden\"\n\n#: ch/ch_states.py:7\nmsgid \"Appenzell Ausserrhoden\"\nmsgstr \"Appenzell Ausserrhoden\"\n\n#: ch/ch_states.py:8\nmsgid \"Basel-Stadt\"\nmsgstr \"Basel-Stadt\"\n\n#: ch/ch_states.py:9\nmsgid \"Basel-Land\"\nmsgstr \"Basel-Land\"\n\n#: ch/ch_states.py:10\nmsgid \"Berne\"\nmsgstr \"Berne\"\n\n#: ch/ch_states.py:11\nmsgid \"Fribourg\"\nmsgstr \"Fribourg\"\n\n#: ch/ch_states.py:12\nmsgid \"Geneva\"\nmsgstr \"Genebra\"\n\n#: ch/ch_states.py:13\nmsgid \"Glarus\"\nmsgstr \"Glarus\"\n\n#: ch/ch_states.py:14\nmsgid \"Graubuenden\"\nmsgstr \"Graubuenden\"\n\n#: ch/ch_states.py:15\nmsgid \"Jura\"\nmsgstr \"Jura\"\n\n#: ch/ch_states.py:16\nmsgid \"Lucerne\"\nmsgstr \"Luzerna\"\n\n#: ch/ch_states.py:17\nmsgid \"Neuchatel\"\nmsgstr \"Neuchatel\"\n\n#: ch/ch_states.py:18\nmsgid \"Nidwalden\"\nmsgstr \"Nidwalden\"\n\n#: ch/ch_states.py:19\nmsgid \"Obwalden\"\nmsgstr \"Obwalden\"\n\n#: ch/ch_states.py:20\nmsgid \"Schaffhausen\"\nmsgstr \"Schaffhausen\"\n\n#: ch/ch_states.py:21\nmsgid \"Schwyz\"\nmsgstr \"Schwyz\"\n\n#: ch/ch_states.py:22\nmsgid \"Solothurn\"\nmsgstr \"Solothurn\"\n\n#: ch/ch_states.py:23\nmsgid \"St. Gallen\"\nmsgstr \"St. Gallen\"\n\n#: ch/ch_states.py:24\nmsgid \"Thurgau\"\nmsgstr \"Thurgau\"\n\n#: ch/ch_states.py:25\nmsgid \"Ticino\"\nmsgstr \"Ticino\"\n\n#: ch/ch_states.py:26\nmsgid \"Uri\"\nmsgstr \"Uri\"\n\n#: ch/ch_states.py:27\nmsgid \"Valais\"\nmsgstr \"Valais\"\n\n#: ch/ch_states.py:28\nmsgid \"Vaud\"\nmsgstr \"Vaud\"\n\n#: ch/ch_states.py:29\nmsgid \"Zug\"\nmsgstr \"Zug\"\n\n#: ch/ch_states.py:30\nmsgid \"Zurich\"\nmsgstr \"Zurique\"\n\n#: ch/forms.py:37\nmsgid \"Phone numbers must be in 0XX XXX XX XX format.\"\nmsgstr \"\"\n\n#: ch/forms.py:68\nmsgid \"\"\n\"Enter a valid Swiss identity or passport card number in X1234567<0 or \"\n\"1234567890 format.\"\nmsgstr \"\"\n\"Introduza uma identificação Suíça ou número de passaporte no formato \"\n\"X1234567<0 ou 1234567890.\"\n\n#: cl/forms.py:32\nmsgid \"Enter a valid Chilean RUT.\"\nmsgstr \"Introduza um RUT Chileno válido.\"\n\n#: cl/forms.py:33\nmsgid \"Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.\"\nmsgstr \"Introduza um RUT Chileno válido. O formato é XX.XXX.XXX-X.\"\n\n#: cl/forms.py:34\nmsgid \"The Chilean RUT is not valid.\"\nmsgstr \"O RUT Chileno é inválido.\"\n\n#: cn/forms.py:84\nmsgid \"Enter a post code in the format XXXXXX.\"\nmsgstr \"Introduza um código postal no formato XXXXXX.\"\n\n#: cn/forms.py:105\nmsgid \"ID Card Number consists of 15 or 18 digits.\"\nmsgstr \"O número do cartão de identidade é composto por 15 ou 18 dígitos.\"\n\n#: cn/forms.py:106\nmsgid \"Invalid ID Card Number: Wrong checksum\"\nmsgstr \"Número de cartão de identidade inválido: soma de controlo inválida.\"\n\n#: cn/forms.py:107\nmsgid \"Invalid ID Card Number: Wrong birthdate\"\nmsgstr \"Número de cartão de identidade inválido: data de nascimento inválida.\"\n\n#: cn/forms.py:108\nmsgid \"Invalid ID Card Number: Wrong location code\"\nmsgstr \"\"\n\"Número de cartão de identidade inválido: código de localização inválido.\"\n\n#: cn/forms.py:193\nmsgid \"Enter a valid phone number.\"\nmsgstr \"Introduza um número de telefone válido.\"\n\n#: cn/forms.py:210\nmsgid \"Enter a valid cell number.\"\nmsgstr \"Introduza um número de telemóvel válido.\"\n\n#: cz/cz_regions.py:8\nmsgid \"Prague\"\nmsgstr \"Praga\"\n\n#: cz/cz_regions.py:9\nmsgid \"Central Bohemian Region\"\nmsgstr \"Região Central da Boêmia\"\n\n#: cz/cz_regions.py:10\nmsgid \"South Bohemian Region\"\nmsgstr \"Região Sul da Boémia\"\n\n#: cz/cz_regions.py:11\nmsgid \"Pilsen Region\"\nmsgstr \"Região de Pilsen\"\n\n#: cz/cz_regions.py:12\nmsgid \"Carlsbad Region\"\nmsgstr \"Região de Carlsbad\"\n\n#: cz/cz_regions.py:13\nmsgid \"Usti Region\"\nmsgstr \"Região de Usti\"\n\n#: cz/cz_regions.py:14\nmsgid \"Liberec Region\"\nmsgstr \"Region de Liberec\"\n\n#: cz/cz_regions.py:15\nmsgid \"Hradec Region\"\nmsgstr \"Região de Hradec\"\n\n#: cz/cz_regions.py:16\nmsgid \"Pardubice Region\"\nmsgstr \"Região de Pardubice\"\n\n#: cz/cz_regions.py:17\nmsgid \"Vysocina Region\"\nmsgstr \"Região de Vysocina\"\n\n#: cz/cz_regions.py:18\nmsgid \"South Moravian Region\"\nmsgstr \"Região de Morávia do Sul\"\n\n#: cz/cz_regions.py:19\nmsgid \"Olomouc Region\"\nmsgstr \"Região de Olomouc\"\n\n#: cz/cz_regions.py:20\nmsgid \"Zlin Region\"\nmsgstr \"Região de Zlin\"\n\n#: cz/cz_regions.py:21\nmsgid \"Moravian-Silesian Region\"\nmsgstr \"Região da Morávia-Silésia\"\n\n#: cz/forms.py:32 sk/forms.py:33\nmsgid \"Enter a postal code in the format XXXXX or XXX XX.\"\nmsgstr \"Introduza um código postal no formato XXXXX ou XXX XX\"\n\n#: cz/forms.py:52\nmsgid \"Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.\"\nmsgstr \"\"\n\"Introduza um número de nascimento no formato XXXXXX/XXXX ou XXXXXXXXXX.\"\n\n#: cz/forms.py:53\nmsgid \"Enter a valid birth number.\"\nmsgstr \"Introduza um de número de nascimento válido.\"\n\n#: cz/forms.py:102\nmsgid \"Enter a valid IC number.\"\nmsgstr \"Introduza um número de IC válido.\"\n\n#: de/de_states.py:5\nmsgid \"Baden-Wuerttemberg\"\nmsgstr \"Baden-Wuerttemberg\"\n\n#: de/de_states.py:6\nmsgid \"Bavaria\"\nmsgstr \"Bavaria\"\n\n#: de/de_states.py:7\nmsgid \"Berlin\"\nmsgstr \"Berlim\"\n\n#: de/de_states.py:8\nmsgid \"Brandenburg\"\nmsgstr \"Brandenburg\"\n\n#: de/de_states.py:9\nmsgid \"Bremen\"\nmsgstr \"Bremen\"\n\n#: de/de_states.py:10\nmsgid \"Hamburg\"\nmsgstr \"Hamburg\"\n\n#: de/de_states.py:11\nmsgid \"Hessen\"\nmsgstr \"Hessen\"\n\n#: de/de_states.py:12\nmsgid \"Mecklenburg-Western Pomerania\"\nmsgstr \"Mecklemburgo-Pomerânia Ocidental\"\n\n#: de/de_states.py:13\nmsgid \"Lower Saxony\"\nmsgstr \"Baixa Saxônia\"\n\n#: de/de_states.py:14\nmsgid \"North Rhine-Westphalia\"\nmsgstr \"North Rhine-Westphalia\"\n\n#: de/de_states.py:15\nmsgid \"Rhineland-Palatinate\"\nmsgstr \"Rhineland-Palatinate\"\n\n#: de/de_states.py:16\nmsgid \"Saarland\"\nmsgstr \"Saarland\"\n\n#: de/de_states.py:17\nmsgid \"Saxony\"\nmsgstr \"Saxony\"\n\n#: de/de_states.py:18\nmsgid \"Saxony-Anhalt\"\nmsgstr \"Saxony-Anhalt\"\n\n#: de/de_states.py:19\nmsgid \"Schleswig-Holstein\"\nmsgstr \"Schleswig-Holstein\"\n\n#: de/de_states.py:20\nmsgid \"Thuringia\"\nmsgstr \"Thuringia\"\n\n#: de/forms.py:20 fi/forms.py:18 fr/forms.py:20\nmsgid \"Enter a zip code in the format XXXXX.\"\nmsgstr \"Introduza um código postal no formato XXXXX.\"\n\n#: de/forms.py:46\nmsgid \"\"\n\"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"format.\"\nmsgstr \"\"\n\"Introduza uma identificação Alemã válida no formato XXXXXXXXXXX-XXXXXXX-\"\n\"XXXXXXX-X\"\n\n#: es/es_provinces.py:5\nmsgid \"Araba\"\nmsgstr \"\"\n\n#: es/es_provinces.py:6\nmsgid \"Albacete\"\nmsgstr \"Albacete\"\n\n#: es/es_provinces.py:7\nmsgid \"Alacant\"\nmsgstr \"Alacant\"\n\n#: es/es_provinces.py:8\nmsgid \"Almeria\"\nmsgstr \"Almeria\"\n\n#: es/es_provinces.py:9\nmsgid \"Avila\"\nmsgstr \"Avila\"\n\n#: es/es_provinces.py:10\nmsgid \"Badajoz\"\nmsgstr \"Badajoz\"\n\n#: es/es_provinces.py:11\nmsgid \"Illes Balears\"\nmsgstr \"Illes Balears\"\n\n#: es/es_provinces.py:12\nmsgid \"Barcelona\"\nmsgstr \"Barcelona\"\n\n#: es/es_provinces.py:13\nmsgid \"Burgos\"\nmsgstr \"Burgos\"\n\n#: es/es_provinces.py:14\nmsgid \"Caceres\"\nmsgstr \"Caceres\"\n\n#: es/es_provinces.py:15\nmsgid \"Cadiz\"\nmsgstr \"Cadiz\"\n\n#: es/es_provinces.py:16\nmsgid \"Castello\"\nmsgstr \"Castello\"\n\n#: es/es_provinces.py:17\nmsgid \"Ciudad Real\"\nmsgstr \"Ciudad Real\"\n\n#: es/es_provinces.py:18\nmsgid \"Cordoba\"\nmsgstr \"Cordoba\"\n\n#: es/es_provinces.py:19\nmsgid \"A Coruna\"\nmsgstr \"A Coruna\"\n\n#: es/es_provinces.py:20\nmsgid \"Cuenca\"\nmsgstr \"Cuenca\"\n\n#: es/es_provinces.py:21\nmsgid \"Girona\"\nmsgstr \"Girona\"\n\n#: es/es_provinces.py:22\nmsgid \"Granada\"\nmsgstr \"Granada\"\n\n#: es/es_provinces.py:23\nmsgid \"Guadalajara\"\nmsgstr \"Guadalajara\"\n\n#: es/es_provinces.py:24\nmsgid \"Guipuzkoa\"\nmsgstr \"Guipuzkoa\"\n\n#: es/es_provinces.py:25\nmsgid \"Huelva\"\nmsgstr \"Huelva\"\n\n#: es/es_provinces.py:26\nmsgid \"Huesca\"\nmsgstr \"Huesca\"\n\n#: es/es_provinces.py:27\nmsgid \"Jaen\"\nmsgstr \"Jaen\"\n\n#: es/es_provinces.py:28\nmsgid \"Leon\"\nmsgstr \"Leon\"\n\n#: es/es_provinces.py:29\nmsgid \"Lleida\"\nmsgstr \"Lleida\"\n\n#: es/es_provinces.py:30 es/es_regions.py:17\nmsgid \"La Rioja\"\nmsgstr \"La Rioja\"\n\n#: es/es_provinces.py:31\nmsgid \"Lugo\"\nmsgstr \"Lugo\"\n\n#: es/es_provinces.py:32 es/es_regions.py:18\nmsgid \"Madrid\"\nmsgstr \"Madrid\"\n\n#: es/es_provinces.py:33\nmsgid \"Malaga\"\nmsgstr \"Malaga\"\n\n#: es/es_provinces.py:34\nmsgid \"Murcia\"\nmsgstr \"Murcia\"\n\n#: es/es_provinces.py:35\nmsgid \"Navarre\"\nmsgstr \"Navarre\"\n\n#: es/es_provinces.py:36\nmsgid \"Ourense\"\nmsgstr \"Ourense\"\n\n#: es/es_provinces.py:37\nmsgid \"Asturias\"\nmsgstr \"Asturias\"\n\n#: es/es_provinces.py:38\nmsgid \"Palencia\"\nmsgstr \"Palencia\"\n\n#: es/es_provinces.py:39\nmsgid \"Las Palmas\"\nmsgstr \"Las Palmas\"\n\n#: es/es_provinces.py:40\nmsgid \"Pontevedra\"\nmsgstr \"Pontevedra\"\n\n#: es/es_provinces.py:41\nmsgid \"Salamanca\"\nmsgstr \"Salamanca\"\n\n#: es/es_provinces.py:42\nmsgid \"Santa Cruz de Tenerife\"\nmsgstr \"Santa Cruz de Tenerife\"\n\n#: es/es_provinces.py:43 es/es_regions.py:11\nmsgid \"Cantabria\"\nmsgstr \"Cantabria\"\n\n#: es/es_provinces.py:44\nmsgid \"Segovia\"\nmsgstr \"Segovia\"\n\n#: es/es_provinces.py:45\nmsgid \"Seville\"\nmsgstr \"Seville\"\n\n#: es/es_provinces.py:46\nmsgid \"Soria\"\nmsgstr \"Soria\"\n\n#: es/es_provinces.py:47\nmsgid \"Tarragona\"\nmsgstr \"Tarragona\"\n\n#: es/es_provinces.py:48\nmsgid \"Teruel\"\nmsgstr \"Teruel\"\n\n#: es/es_provinces.py:49\nmsgid \"Toledo\"\nmsgstr \"Toledo\"\n\n#: es/es_provinces.py:50\nmsgid \"Valencia\"\nmsgstr \"Valencia\"\n\n#: es/es_provinces.py:51\nmsgid \"Valladolid\"\nmsgstr \"Valladolid\"\n\n#: es/es_provinces.py:52\nmsgid \"Bizkaia\"\nmsgstr \"Bizkaia\"\n\n#: es/es_provinces.py:53\nmsgid \"Zamora\"\nmsgstr \"Zamora\"\n\n#: es/es_provinces.py:54\nmsgid \"Zaragoza\"\nmsgstr \"Zaragoza\"\n\n#: es/es_provinces.py:55\nmsgid \"Ceuta\"\nmsgstr \"Ceuta\"\n\n#: es/es_provinces.py:56\nmsgid \"Melilla\"\nmsgstr \"Melilla\"\n\n#: es/es_regions.py:5\nmsgid \"Andalusia\"\nmsgstr \"Andalusia\"\n\n#: es/es_regions.py:6\nmsgid \"Aragon\"\nmsgstr \"Aragon\"\n\n#: es/es_regions.py:7\nmsgid \"Principality of Asturias\"\nmsgstr \"Principality of Asturias\"\n\n#: es/es_regions.py:8\nmsgid \"Balearic Islands\"\nmsgstr \"Balearic Islands\"\n\n#: es/es_regions.py:9\nmsgid \"Basque Country\"\nmsgstr \"Basque Country\"\n\n#: es/es_regions.py:10\nmsgid \"Canary Islands\"\nmsgstr \"Canary Islands\"\n\n#: es/es_regions.py:12\nmsgid \"Castile-La Mancha\"\nmsgstr \"Castile-La Mancha\"\n\n#: es/es_regions.py:13\nmsgid \"Castile and Leon\"\nmsgstr \"Castile and Leon\"\n\n#: es/es_regions.py:14\nmsgid \"Catalonia\"\nmsgstr \"Catalonia\"\n\n#: es/es_regions.py:15\nmsgid \"Extremadura\"\nmsgstr \"Extremadura\"\n\n#: es/es_regions.py:16\nmsgid \"Galicia\"\nmsgstr \"Galicia\"\n\n#: es/es_regions.py:19\nmsgid \"Region of Murcia\"\nmsgstr \"Region of Murcia\"\n\n#: es/es_regions.py:20\nmsgid \"Foral Community of Navarre\"\nmsgstr \"Foral Community of Navarre\"\n\n#: es/es_regions.py:21\nmsgid \"Valencian Community\"\nmsgstr \"Valencian Community\"\n\n#: es/forms.py:26\nmsgid \"Enter a valid postal code in the range and format 01XXX - 52XXX.\"\nmsgstr \"Instruduza um código postal válido no formato 01XXX - 52XXX.\"\n\n#: es/forms.py:46\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or \"\n\"9XXXXXXXX.\"\nmsgstr \"\"\n\"Introduza um número de telefone válido num dos formatos 6XXXXXXXX, 8XXXXXXXX \"\n\"or 9XXXXXXXX.\"\n\n#: es/forms.py:73\nmsgid \"Please enter a valid NIF, NIE, or CIF.\"\nmsgstr \"Por favor introduza um NIF, NIE, ou CIF válido.\"\n\n#: es/forms.py:74\nmsgid \"Please enter a valid NIF or NIE.\"\nmsgstr \"Por favor introduza um NIF ou NIE válido.\"\n\n#: es/forms.py:75\nmsgid \"Invalid checksum for NIF.\"\nmsgstr \"Checksum inválido para o NIF.\"\n\n#: es/forms.py:76\nmsgid \"Invalid checksum for NIE.\"\nmsgstr \"Checksum inválido para o NIE.\"\n\n#: es/forms.py:77\nmsgid \"Invalid checksum for CIF.\"\nmsgstr \"Checksum inválido para o CIF.\"\n\n#: es/forms.py:149\nmsgid \"\"\n\"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.\"\nmsgstr \"\"\n\"Por favor introduza um número de conta bancária no formato XXXX-XXXX-XX-\"\n\"XXXXXXXXXX.\"\n\n#: es/forms.py:150\nmsgid \"Invalid checksum for bank account number.\"\nmsgstr \"Checksum inválido para o número de conta bancária.\"\n\n#: fi/forms.py:33\nmsgid \"Enter a valid Finnish social security number.\"\nmsgstr \"Introduza um número de segurança social Finlandês válido.\"\n\n#: fr/forms.py:35\nmsgid \"Phone numbers must be in 0X XX XX XX XX format.\"\nmsgstr \"Os números de telefone deverão ser no formato 0X XX XX XX XX.\"\n\n#: gb/forms.py:25\nmsgid \"Enter a valid postcode.\"\nmsgstr \"Inserir um código-postal válido.\"\n\n#: gb/gb_regions.py:11\nmsgid \"Bedfordshire\"\nmsgstr \"Bedfordshire\"\n\n#: gb/gb_regions.py:12\nmsgid \"Buckinghamshire\"\nmsgstr \"Buckinghamshire\"\n\n#: gb/gb_regions.py:14\nmsgid \"Cheshire\"\nmsgstr \"Cheshire\"\n\n#: gb/gb_regions.py:15\nmsgid \"Cornwall and Isles of Scilly\"\nmsgstr \"Cornwall and Isles of Scilly\"\n\n#: gb/gb_regions.py:16\nmsgid \"Cumbria\"\nmsgstr \"Cumbria\"\n\n#: gb/gb_regions.py:17\nmsgid \"Derbyshire\"\nmsgstr \"Derbyshire\"\n\n#: gb/gb_regions.py:18\nmsgid \"Devon\"\nmsgstr \"Devon\"\n\n#: gb/gb_regions.py:19\nmsgid \"Dorset\"\nmsgstr \"Dorset\"\n\n#: gb/gb_regions.py:20\nmsgid \"Durham\"\nmsgstr \"Durham\"\n\n#: gb/gb_regions.py:21\nmsgid \"East Sussex\"\nmsgstr \"East Sussex\"\n\n#: gb/gb_regions.py:22\nmsgid \"Essex\"\nmsgstr \"Essex\"\n\n#: gb/gb_regions.py:23\nmsgid \"Gloucestershire\"\nmsgstr \"Gloucestershire\"\n\n#: gb/gb_regions.py:24\nmsgid \"Greater London\"\nmsgstr \"Greater London\"\n\n#: gb/gb_regions.py:25\nmsgid \"Greater Manchester\"\nmsgstr \"Greater Manchester\"\n\n#: gb/gb_regions.py:26\nmsgid \"Hampshire\"\nmsgstr \"Hampshire\"\n\n#: gb/gb_regions.py:27\nmsgid \"Hertfordshire\"\nmsgstr \"Hertfordshire\"\n\n#: gb/gb_regions.py:28\nmsgid \"Kent\"\nmsgstr \"Kent\"\n\n#: gb/gb_regions.py:29\nmsgid \"Lancashire\"\nmsgstr \"Lancashire\"\n\n#: gb/gb_regions.py:30\nmsgid \"Leicestershire\"\nmsgstr \"Leicestershire\"\n\n#: gb/gb_regions.py:31\nmsgid \"Lincolnshire\"\nmsgstr \"Lincolnshire\"\n\n#: gb/gb_regions.py:32\nmsgid \"Merseyside\"\nmsgstr \"Merseyside\"\n\n#: gb/gb_regions.py:33\nmsgid \"Norfolk\"\nmsgstr \"Norfolk\"\n\n#: gb/gb_regions.py:34\nmsgid \"North Yorkshire\"\nmsgstr \"North Yorkshire\"\n\n#: gb/gb_regions.py:35\nmsgid \"Northamptonshire\"\nmsgstr \"Northamptonshire\"\n\n#: gb/gb_regions.py:36\nmsgid \"Northumberland\"\nmsgstr \"Northumberland\"\n\n#: gb/gb_regions.py:37\nmsgid \"Nottinghamshire\"\nmsgstr \"Nottinghamshire\"\n\n#: gb/gb_regions.py:38\nmsgid \"Oxfordshire\"\nmsgstr \"Oxfordshire\"\n\n#: gb/gb_regions.py:39\nmsgid \"Shropshire\"\nmsgstr \"Shropshire\"\n\n#: gb/gb_regions.py:40\nmsgid \"Somerset\"\nmsgstr \"Somerset\"\n\n#: gb/gb_regions.py:41\nmsgid \"South Yorkshire\"\nmsgstr \"South Yorkshire\"\n\n#: gb/gb_regions.py:42\nmsgid \"Staffordshire\"\nmsgstr \"Staffordshire\"\n\n#: gb/gb_regions.py:43\nmsgid \"Suffolk\"\nmsgstr \"Suffolk\"\n\n#: gb/gb_regions.py:44\nmsgid \"Surrey\"\nmsgstr \"Surrey\"\n\n#: gb/gb_regions.py:45\nmsgid \"Tyne and Wear\"\nmsgstr \"Tyne and Wear\"\n\n#: gb/gb_regions.py:46\nmsgid \"Warwickshire\"\nmsgstr \"Warwickshire\"\n\n#: gb/gb_regions.py:47\nmsgid \"West Midlands\"\nmsgstr \"West Midlands\"\n\n#: gb/gb_regions.py:48\nmsgid \"West Sussex\"\nmsgstr \"West Sussex\"\n\n#: gb/gb_regions.py:49\nmsgid \"West Yorkshire\"\nmsgstr \"West Yorkshire\"\n\n#: gb/gb_regions.py:50\nmsgid \"Wiltshire\"\nmsgstr \"Wiltshire\"\n\n#: gb/gb_regions.py:51\nmsgid \"Worcestershire\"\nmsgstr \"Worcestershire\"\n\n#: gb/gb_regions.py:55\nmsgid \"County Antrim\"\nmsgstr \"County Antrim\"\n\n#: gb/gb_regions.py:56\nmsgid \"County Armagh\"\nmsgstr \"County Armagh\"\n\n#: gb/gb_regions.py:57\nmsgid \"County Down\"\nmsgstr \"County Down\"\n\n#: gb/gb_regions.py:58\nmsgid \"County Fermanagh\"\nmsgstr \"County Fermanagh\"\n\n#: gb/gb_regions.py:59\nmsgid \"County Londonderry\"\nmsgstr \"County Londonderry\"\n\n#: gb/gb_regions.py:60\nmsgid \"County Tyrone\"\nmsgstr \"County Tyrone\"\n\n#: gb/gb_regions.py:64\nmsgid \"Clwyd\"\nmsgstr \"Clwyd\"\n\n#: gb/gb_regions.py:65\nmsgid \"Dyfed\"\nmsgstr \"Dyfed\"\n\n#: gb/gb_regions.py:66\nmsgid \"Gwent\"\nmsgstr \"Gwent\"\n\n#: gb/gb_regions.py:67\nmsgid \"Gwynedd\"\nmsgstr \"Gwynedd\"\n\n#: gb/gb_regions.py:68\nmsgid \"Mid Glamorgan\"\nmsgstr \"Mid Glamorgan\"\n\n#: gb/gb_regions.py:69\nmsgid \"Powys\"\nmsgstr \"Powys\"\n\n#: gb/gb_regions.py:70\nmsgid \"South Glamorgan\"\nmsgstr \"South Glamorgan\"\n\n#: gb/gb_regions.py:71\nmsgid \"West Glamorgan\"\nmsgstr \"West Glamorgan\"\n\n#: gb/gb_regions.py:75\nmsgid \"Borders\"\nmsgstr \"Borders\"\n\n#: gb/gb_regions.py:76\nmsgid \"Central Scotland\"\nmsgstr \"Central Scotland\"\n\n#: gb/gb_regions.py:77\nmsgid \"Dumfries and Galloway\"\nmsgstr \"Dumfries and Galloway\"\n\n#: gb/gb_regions.py:78\nmsgid \"Fife\"\nmsgstr \"Fife\"\n\n#: gb/gb_regions.py:79\nmsgid \"Grampian\"\nmsgstr \"Grampian\"\n\n#: gb/gb_regions.py:80\nmsgid \"Highland\"\nmsgstr \"Highland\"\n\n#: gb/gb_regions.py:81\nmsgid \"Lothian\"\nmsgstr \"Lothian\"\n\n#: gb/gb_regions.py:82\nmsgid \"Orkney Islands\"\nmsgstr \"Orkney Islands\"\n\n#: gb/gb_regions.py:83\nmsgid \"Shetland Islands\"\nmsgstr \"Shetland Islands\"\n\n#: gb/gb_regions.py:84\nmsgid \"Strathclyde\"\nmsgstr \"Strathclyde\"\n\n#: gb/gb_regions.py:85\nmsgid \"Tayside\"\nmsgstr \"Tayside\"\n\n#: gb/gb_regions.py:86\nmsgid \"Western Isles\"\nmsgstr \"Western Isles\"\n\n#: gb/gb_regions.py:90\nmsgid \"England\"\nmsgstr \"England\"\n\n#: gb/gb_regions.py:91\nmsgid \"Northern Ireland\"\nmsgstr \"Northern Ireland\"\n\n#: gb/gb_regions.py:92\nmsgid \"Scotland\"\nmsgstr \"Scotland\"\n\n#: gb/gb_regions.py:93\nmsgid \"Wales\"\nmsgstr \"Wales\"\n\n#: hk/forms.py:37\n#, python-format\nmsgid \"Phone number should not start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:40\n#, python-format\nmsgid \"Phone number must be in one of the following formats: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:42\n#, python-format\nmsgid \"Phone number should start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hr/forms.py:76\nmsgid \"Enter a valid 13 digit JMBG\"\nmsgstr \"\"\n\n#: hr/forms.py:77\nmsgid \"Error in date segment\"\nmsgstr \"\"\n\n#: hr/forms.py:123\nmsgid \"Enter a valid 11 digit OIB\"\nmsgstr \"\"\n\n#: hr/forms.py:152 id/forms.py:112\nmsgid \"Enter a valid vehicle license plate number\"\nmsgstr \"Introduza um número de matrícula de veículo válido\"\n\n#: hr/forms.py:153\nmsgid \"Enter a valid location code\"\nmsgstr \"\"\n\n#: hr/forms.py:154\nmsgid \"Number part cannot be zero\"\nmsgstr \"\"\n\n#: hr/forms.py:190\nmsgid \"Enter a valid 5 digit postal code\"\nmsgstr \"\"\n\n#: hr/forms.py:218 id/forms.py:72 nl/forms.py:56\nmsgid \"Enter a valid phone number\"\nmsgstr \"Introduza um número de telefone válido.\"\n\n#: hr/forms.py:219\nmsgid \"Enter a valid area or mobile network code\"\nmsgstr \"\"\n\n#: hr/forms.py:220\nmsgid \"The phone nubmer is too long\"\nmsgstr \"O número de telefone é demasiado comprido\"\n\n#: hr/forms.py:258\nmsgid \"Enter a valid 19 digit JMBAG starting with 601983\"\nmsgstr \"\"\n\n#: hr/forms.py:259\nmsgid \"Card issue number cannot be zero\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:14\nmsgid \"Grad Zagreb\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:15\nmsgid \"Bjelovarsko-bilogorska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:16\nmsgid \"Brodsko-posavska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:17\nmsgid \"Dubrovačko-neretvanska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:18\nmsgid \"Istarska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:19\nmsgid \"Karlovačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:20\nmsgid \"Koprivničko-križevačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:21\nmsgid \"Krapinsko-zagorska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:22\nmsgid \"Ličko-senjska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:23\nmsgid \"Međimurska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:24\nmsgid \"Osječko-baranjska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:25\nmsgid \"Požeško-slavonska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:26\nmsgid \"Primorsko-goranska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:27\nmsgid \"Sisačko-moslavačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:28\nmsgid \"Splitsko-dalmatinska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:29\nmsgid \"Šibensko-kninska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:30\nmsgid \"Varaždinska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:31\nmsgid \"Virovitičko-podravska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:32\nmsgid \"Vukovarsko-srijemska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:33\nmsgid \"Zadarska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:34\nmsgid \"Zagrebačka županija\"\nmsgstr \"\"\n\n#: id/forms.py:31\nmsgid \"Enter a valid post code\"\nmsgstr \"Introduza um código postal válido.\"\n\n#: id/forms.py:176\nmsgid \"Enter a valid NIK/KTP number\"\nmsgstr \"Introduza um número NIK/KTP válido\"\n\n#: id/id_choices.py:15\nmsgid \"Aceh\"\nmsgstr \"Aceh\"\n\n#: id/id_choices.py:16 id/id_choices.py:79\nmsgid \"Bali\"\nmsgstr \"Bali\"\n\n#: id/id_choices.py:17 id/id_choices.py:51\nmsgid \"Banten\"\nmsgstr \"Banten\"\n\n#: id/id_choices.py:18 id/id_choices.py:60\nmsgid \"Bengkulu\"\nmsgstr \"Bengkulu\"\n\n#: id/id_choices.py:19 id/id_choices.py:53\nmsgid \"Yogyakarta\"\nmsgstr \"Yogyakarta\"\n\n#: id/id_choices.py:20 id/id_choices.py:57\nmsgid \"Jakarta\"\nmsgstr \"Jakarta\"\n\n#: id/id_choices.py:21 id/id_choices.py:81\nmsgid \"Gorontalo\"\nmsgstr \"Gorontalo\"\n\n#: id/id_choices.py:22 id/id_choices.py:63\nmsgid \"Jambi\"\nmsgstr \"Jambi\"\n\n#: id/id_choices.py:23\nmsgid \"Jawa Barat\"\nmsgstr \"Jawa Barat\"\n\n#: id/id_choices.py:24\nmsgid \"Jawa Tengah\"\nmsgstr \"Jawa Tengah\"\n\n#: id/id_choices.py:25\nmsgid \"Jawa Timur\"\nmsgstr \"Jawa Timur\"\n\n#: id/id_choices.py:26 id/id_choices.py:94\nmsgid \"Kalimantan Barat\"\nmsgstr \"Kalimantan Barat\"\n\n#: id/id_choices.py:27 id/id_choices.py:72\nmsgid \"Kalimantan Selatan\"\nmsgstr \"Kalimantan Selatan\"\n\n#: id/id_choices.py:28 id/id_choices.py:95\nmsgid \"Kalimantan Tengah\"\nmsgstr \"Kalimantan Tengah\"\n\n#: id/id_choices.py:29 id/id_choices.py:96\nmsgid \"Kalimantan Timur\"\nmsgstr \"Kalimantan Timur\"\n\n#: id/id_choices.py:30\nmsgid \"Kepulauan Bangka-Belitung\"\nmsgstr \"Kepulauan Bangka-Belitung\"\n\n#: id/id_choices.py:31 id/id_choices.py:68\nmsgid \"Kepulauan Riau\"\nmsgstr \"Kepulauan Riau\"\n\n#: id/id_choices.py:32 id/id_choices.py:61\nmsgid \"Lampung\"\nmsgstr \"Lampung\"\n\n#: id/id_choices.py:33 id/id_choices.py:76\nmsgid \"Maluku\"\nmsgstr \"Maluku\"\n\n#: id/id_choices.py:34 id/id_choices.py:77\nmsgid \"Maluku Utara\"\nmsgstr \"Maluku Utara\"\n\n#: id/id_choices.py:35\nmsgid \"Nusa Tenggara Barat\"\nmsgstr \"Nusa Tenggara Barat\"\n\n#: id/id_choices.py:36\nmsgid \"Nusa Tenggara Timur\"\nmsgstr \"Nusa Tenggara Timur\"\n\n#: id/id_choices.py:37\nmsgid \"Papua\"\nmsgstr \"Papua\"\n\n#: id/id_choices.py:38\nmsgid \"Papua Barat\"\nmsgstr \"Papua Barat\"\n\n#: id/id_choices.py:39 id/id_choices.py:66\nmsgid \"Riau\"\nmsgstr \"Riau\"\n\n#: id/id_choices.py:40 id/id_choices.py:74\nmsgid \"Sulawesi Barat\"\nmsgstr \"Sulawesi Barat\"\n\n#: id/id_choices.py:41 id/id_choices.py:75\nmsgid \"Sulawesi Selatan\"\nmsgstr \"Sulawesi Selatan\"\n\n#: id/id_choices.py:42 id/id_choices.py:82\nmsgid \"Sulawesi Tengah\"\nmsgstr \"Sulawesi Tengah\"\n\n#: id/id_choices.py:43 id/id_choices.py:85\nmsgid \"Sulawesi Tenggara\"\nmsgstr \"Sulawesi Tenggara\"\n\n#: id/id_choices.py:44\nmsgid \"Sulawesi Utara\"\nmsgstr \"Sulawesi Utara\"\n\n#: id/id_choices.py:45 id/id_choices.py:58\nmsgid \"Sumatera Barat\"\nmsgstr \"Sumatera Barat\"\n\n#: id/id_choices.py:46 id/id_choices.py:62\nmsgid \"Sumatera Selatan\"\nmsgstr \"Sumatera Selatan\"\n\n#: id/id_choices.py:47 id/id_choices.py:64\nmsgid \"Sumatera Utara\"\nmsgstr \"Sumatera Utara\"\n\n#: id/id_choices.py:52\nmsgid \"Magelang\"\nmsgstr \"Magelang\"\n\n#: id/id_choices.py:54\nmsgid \"Surakarta - Solo\"\nmsgstr \"Surakarta - Solo\"\n\n#: id/id_choices.py:55\nmsgid \"Madiun\"\nmsgstr \"Madiun\"\n\n#: id/id_choices.py:56\nmsgid \"Kediri\"\nmsgstr \"Kediri\"\n\n#: id/id_choices.py:59\nmsgid \"Tapanuli\"\nmsgstr \"Tapanuli\"\n\n#: id/id_choices.py:65\nmsgid \"Nanggroe Aceh Darussalam\"\nmsgstr \"Nanggroe Aceh Darussalam\"\n\n#: id/id_choices.py:67\nmsgid \"Kepulauan Bangka Belitung\"\nmsgstr \"Kepulauan Bangka Belitung\"\n\n#: id/id_choices.py:69\nmsgid \"Corps Consulate\"\nmsgstr \"Corps Consulate\"\n\n#: id/id_choices.py:70\nmsgid \"Corps Diplomatic\"\nmsgstr \"Corps Diplomatic\"\n\n#: id/id_choices.py:71\nmsgid \"Bandung\"\nmsgstr \"Bandung\"\n\n#: id/id_choices.py:73\nmsgid \"Sulawesi Utara Daratan\"\nmsgstr \"Sulawesi Utara Daratan\"\n\n#: id/id_choices.py:78\nmsgid \"NTT - Timor\"\nmsgstr \"NTT - Timor\"\n\n#: id/id_choices.py:80\nmsgid \"Sulawesi Utara Kepulauan\"\nmsgstr \"Sulawesi Utara Kepulauan\"\n\n#: id/id_choices.py:83\nmsgid \"NTB - Lombok\"\nmsgstr \"NTB - Lombok\"\n\n#: id/id_choices.py:84\nmsgid \"Papua dan Papua Barat\"\nmsgstr \"Papua dan Papua Barat\"\n\n#: id/id_choices.py:86\nmsgid \"Cirebon\"\nmsgstr \"Cirebon\"\n\n#: id/id_choices.py:87\nmsgid \"NTB - Sumbawa\"\nmsgstr \"NTB - Sumbawa\"\n\n#: id/id_choices.py:88\nmsgid \"NTT - Flores\"\nmsgstr \"NTT - Flores\"\n\n#: id/id_choices.py:89\nmsgid \"NTT - Sumba\"\nmsgstr \"NTT - Sumba\"\n\n#: id/id_choices.py:90\nmsgid \"Bogor\"\nmsgstr \"Bogor\"\n\n#: id/id_choices.py:91\nmsgid \"Pekalongan\"\nmsgstr \"Pekalongan\"\n\n#: id/id_choices.py:92\nmsgid \"Semarang\"\nmsgstr \"Semarang\"\n\n#: id/id_choices.py:93\nmsgid \"Pati\"\nmsgstr \"Pati\"\n\n#: id/id_choices.py:97\nmsgid \"Surabaya\"\nmsgstr \"Surabaya\"\n\n#: id/id_choices.py:98\nmsgid \"Madura\"\nmsgstr \"Madura\"\n\n#: id/id_choices.py:99\nmsgid \"Malang\"\nmsgstr \"Malang\"\n\n#: id/id_choices.py:100\nmsgid \"Jember\"\nmsgstr \"Jember\"\n\n#: id/id_choices.py:101\nmsgid \"Banyumas\"\nmsgstr \"Banyumas\"\n\n#: id/id_choices.py:102\nmsgid \"Federal Government\"\nmsgstr \"Federal Government\"\n\n#: id/id_choices.py:103\nmsgid \"Bojonegoro\"\nmsgstr \"Bojonegoro\"\n\n#: id/id_choices.py:104\nmsgid \"Purwakarta\"\nmsgstr \"Purwakarta\"\n\n#: id/id_choices.py:105\nmsgid \"Sidoarjo\"\nmsgstr \"Sidoarjo\"\n\n#: id/id_choices.py:106\nmsgid \"Garut\"\nmsgstr \"Garut\"\n\n#: ie/ie_counties.py:8\nmsgid \"Antrim\"\nmsgstr \"Antrim\"\n\n#: ie/ie_counties.py:9\nmsgid \"Armagh\"\nmsgstr \"Armagh\"\n\n#: ie/ie_counties.py:10\nmsgid \"Carlow\"\nmsgstr \"Carlow\"\n\n#: ie/ie_counties.py:11\nmsgid \"Cavan\"\nmsgstr \"Cavan\"\n\n#: ie/ie_counties.py:12\nmsgid \"Clare\"\nmsgstr \"Clare\"\n\n#: ie/ie_counties.py:13\nmsgid \"Cork\"\nmsgstr \"Cork\"\n\n#: ie/ie_counties.py:14\nmsgid \"Derry\"\nmsgstr \"Derry\"\n\n#: ie/ie_counties.py:15\nmsgid \"Donegal\"\nmsgstr \"Donegal\"\n\n#: ie/ie_counties.py:16\nmsgid \"Down\"\nmsgstr \"Down\"\n\n#: ie/ie_counties.py:17\nmsgid \"Dublin\"\nmsgstr \"Dublin\"\n\n#: ie/ie_counties.py:18\nmsgid \"Fermanagh\"\nmsgstr \"Fermanagh\"\n\n#: ie/ie_counties.py:19\nmsgid \"Galway\"\nmsgstr \"Galway\"\n\n#: ie/ie_counties.py:20\nmsgid \"Kerry\"\nmsgstr \"Kerry\"\n\n#: ie/ie_counties.py:21\nmsgid \"Kildare\"\nmsgstr \"Kildare\"\n\n#: ie/ie_counties.py:22\nmsgid \"Kilkenny\"\nmsgstr \"Kilkenny\"\n\n#: ie/ie_counties.py:23\nmsgid \"Laois\"\nmsgstr \"Laois\"\n\n#: ie/ie_counties.py:24\nmsgid \"Leitrim\"\nmsgstr \"Leitrim\"\n\n#: ie/ie_counties.py:25\nmsgid \"Limerick\"\nmsgstr \"Limerick\"\n\n#: ie/ie_counties.py:26\nmsgid \"Longford\"\nmsgstr \"Longford\"\n\n#: ie/ie_counties.py:27\nmsgid \"Louth\"\nmsgstr \"Louth\"\n\n#: ie/ie_counties.py:28\nmsgid \"Mayo\"\nmsgstr \"Mayo\"\n\n#: ie/ie_counties.py:29\nmsgid \"Meath\"\nmsgstr \"Meath\"\n\n#: ie/ie_counties.py:30\nmsgid \"Monaghan\"\nmsgstr \"Monaghan\"\n\n#: ie/ie_counties.py:31\nmsgid \"Offaly\"\nmsgstr \"Offaly\"\n\n#: ie/ie_counties.py:32\nmsgid \"Roscommon\"\nmsgstr \"Roscommon\"\n\n#: ie/ie_counties.py:33\nmsgid \"Sligo\"\nmsgstr \"Sligo\"\n\n#: ie/ie_counties.py:34\nmsgid \"Tipperary\"\nmsgstr \"Tipperary\"\n\n#: ie/ie_counties.py:35\nmsgid \"Tyrone\"\nmsgstr \"Tyrone\"\n\n#: ie/ie_counties.py:36\nmsgid \"Waterford\"\nmsgstr \"Waterford\"\n\n#: ie/ie_counties.py:37\nmsgid \"Westmeath\"\nmsgstr \"Westmeath\"\n\n#: ie/ie_counties.py:38\nmsgid \"Wexford\"\nmsgstr \"Wexford\"\n\n#: ie/ie_counties.py:39\nmsgid \"Wicklow\"\nmsgstr \"Wicklow\"\n\n#: il/forms.py:32\nmsgid \"Enter a postal code in the format XXXXX\"\nmsgstr \"Introduza um código postal no formato XXXXX\"\n\n#: il/forms.py:51\nmsgid \"Enter a valid ID number.\"\nmsgstr \"Digite um número de identificação válido.\"\n\n#: in_/forms.py:41\nmsgid \"Enter a zip code in the format XXXXXX or XXX XXX.\"\nmsgstr \"\"\n\n#: in_/forms.py:64\nmsgid \"Enter an Indian state or territory.\"\nmsgstr \"\"\n\n#: in_/forms.py:103\nmsgid \"Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.\"\nmsgstr \"\"\n\n#: is_/forms.py:22\nmsgid \"\"\n\"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.\"\nmsgstr \"\"\n\"Introduza um número de identificação Islândica válida. O formato é XXXXXX-\"\n\"XXXX\"\n\n#: is_/forms.py:23\nmsgid \"The Icelandic identification number is not valid.\"\nmsgstr \"Número de identificação Islândica inválido.\"\n\n#: it/forms.py:21\nmsgid \"Enter a valid zip code.\"\nmsgstr \"Introduza um código postal válido.\"\n\n#: it/forms.py:48\nmsgid \"Enter a valid Social Security number.\"\nmsgstr \"Introduza um número de Segurança Social válido.\"\n\n#: it/forms.py:73\nmsgid \"Enter a valid VAT number.\"\nmsgstr \"Introduza um de IVA válido.\"\n\n#: jp/forms.py:19\nmsgid \"Enter a postal code in the format XXXXXXX or XXX-XXXX.\"\nmsgstr \"Introduza um código postal no formato XXXXXXX or XXX-XXXX.\"\n\n#: jp/jp_prefectures.py:4\nmsgid \"Hokkaido\"\nmsgstr \"Hokkaido\"\n\n#: jp/jp_prefectures.py:5\nmsgid \"Aomori\"\nmsgstr \"Aomori\"\n\n#: jp/jp_prefectures.py:6\nmsgid \"Iwate\"\nmsgstr \"Iwate\"\n\n#: jp/jp_prefectures.py:7\nmsgid \"Miyagi\"\nmsgstr \"Miyagi\"\n\n#: jp/jp_prefectures.py:8\nmsgid \"Akita\"\nmsgstr \"Akita\"\n\n#: jp/jp_prefectures.py:9\nmsgid \"Yamagata\"\nmsgstr \"Yamagata\"\n\n#: jp/jp_prefectures.py:10\nmsgid \"Fukushima\"\nmsgstr \"Fukushima\"\n\n#: jp/jp_prefectures.py:11\nmsgid \"Ibaraki\"\nmsgstr \"Ibaraki\"\n\n#: jp/jp_prefectures.py:12\nmsgid \"Tochigi\"\nmsgstr \"Tochigi\"\n\n#: jp/jp_prefectures.py:13\nmsgid \"Gunma\"\nmsgstr \"Gunma\"\n\n#: jp/jp_prefectures.py:14\nmsgid \"Saitama\"\nmsgstr \"Saitama\"\n\n#: jp/jp_prefectures.py:15\nmsgid \"Chiba\"\nmsgstr \"Chiba\"\n\n#: jp/jp_prefectures.py:16\nmsgid \"Tokyo\"\nmsgstr \"Tokyo\"\n\n#: jp/jp_prefectures.py:17\nmsgid \"Kanagawa\"\nmsgstr \"Kanagawa\"\n\n#: jp/jp_prefectures.py:18\nmsgid \"Yamanashi\"\nmsgstr \"Yamanashi\"\n\n#: jp/jp_prefectures.py:19\nmsgid \"Nagano\"\nmsgstr \"Nagano\"\n\n#: jp/jp_prefectures.py:20\nmsgid \"Niigata\"\nmsgstr \"Niigata\"\n\n#: jp/jp_prefectures.py:21\nmsgid \"Toyama\"\nmsgstr \"Toyama\"\n\n#: jp/jp_prefectures.py:22\nmsgid \"Ishikawa\"\nmsgstr \"Ishikawa\"\n\n#: jp/jp_prefectures.py:23\nmsgid \"Fukui\"\nmsgstr \"Fukui\"\n\n#: jp/jp_prefectures.py:24\nmsgid \"Gifu\"\nmsgstr \"Gifu\"\n\n#: jp/jp_prefectures.py:25\nmsgid \"Shizuoka\"\nmsgstr \"Shizuoka\"\n\n#: jp/jp_prefectures.py:26\nmsgid \"Aichi\"\nmsgstr \"Aichi\"\n\n#: jp/jp_prefectures.py:27\nmsgid \"Mie\"\nmsgstr \"Mie\"\n\n#: jp/jp_prefectures.py:28\nmsgid \"Shiga\"\nmsgstr \"Shiga\"\n\n#: jp/jp_prefectures.py:29\nmsgid \"Kyoto\"\nmsgstr \"Kyoto\"\n\n#: jp/jp_prefectures.py:30\nmsgid \"Osaka\"\nmsgstr \"Osaka\"\n\n#: jp/jp_prefectures.py:31\nmsgid \"Hyogo\"\nmsgstr \"Hyogo\"\n\n#: jp/jp_prefectures.py:32\nmsgid \"Nara\"\nmsgstr \"Nara\"\n\n#: jp/jp_prefectures.py:33\nmsgid \"Wakayama\"\nmsgstr \"Wakayama\"\n\n#: jp/jp_prefectures.py:34\nmsgid \"Tottori\"\nmsgstr \"Tottori\"\n\n#: jp/jp_prefectures.py:35\nmsgid \"Shimane\"\nmsgstr \"Shimane\"\n\n#: jp/jp_prefectures.py:36\nmsgid \"Okayama\"\nmsgstr \"Okayama\"\n\n#: jp/jp_prefectures.py:37\nmsgid \"Hiroshima\"\nmsgstr \"Hiroshima\"\n\n#: jp/jp_prefectures.py:38\nmsgid \"Yamaguchi\"\nmsgstr \"Yamaguchi\"\n\n#: jp/jp_prefectures.py:39\nmsgid \"Tokushima\"\nmsgstr \"Tokushima\"\n\n#: jp/jp_prefectures.py:40\nmsgid \"Kagawa\"\nmsgstr \"Kagawa\"\n\n#: jp/jp_prefectures.py:41\nmsgid \"Ehime\"\nmsgstr \"Ehime\"\n\n#: jp/jp_prefectures.py:42\nmsgid \"Kochi\"\nmsgstr \"Kochi\"\n\n#: jp/jp_prefectures.py:43\nmsgid \"Fukuoka\"\nmsgstr \"Fukuoka\"\n\n#: jp/jp_prefectures.py:44\nmsgid \"Saga\"\nmsgstr \"Saga\"\n\n#: jp/jp_prefectures.py:45\nmsgid \"Nagasaki\"\nmsgstr \"Nagasaki\"\n\n#: jp/jp_prefectures.py:46\nmsgid \"Kumamoto\"\nmsgstr \"Kumamoto\"\n\n#: jp/jp_prefectures.py:47\nmsgid \"Oita\"\nmsgstr \"Oita\"\n\n#: jp/jp_prefectures.py:48\nmsgid \"Miyazaki\"\nmsgstr \"Miyazaki\"\n\n#: jp/jp_prefectures.py:49\nmsgid \"Kagoshima\"\nmsgstr \"Kagoshima\"\n\n#: jp/jp_prefectures.py:50\nmsgid \"Okinawa\"\nmsgstr \"Okinawa\"\n\n#: kw/forms.py:27\nmsgid \"Enter a valid Kuwaiti Civil ID number\"\nmsgstr \"Introduza um número Civil ID Kuwaitiano válido\"\n\n#: mk/forms.py:18\nmsgid \"\"\n\"Identity card numbers must contain either 4 to 7 digits or an uppercase \"\n\"letter and 7 digits.\"\nmsgstr \"\"\n\n#: mk/forms.py:57 si/forms.py:24\nmsgid \"This field should contain exactly 13 digits.\"\nmsgstr \"\"\n\n#: mk/forms.py:58\nmsgid \"The first 7 digits of the UMCN must represent a valid past date.\"\nmsgstr \"\"\n\n#: mk/forms.py:59\nmsgid \"The UMCN is not valid.\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:10\nmsgid \"Aerodrom\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:11\nmsgid \"Aračinovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:12\nmsgid \"Berovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:13\nmsgid \"Bitola\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:14\nmsgid \"Bogdanci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:15\nmsgid \"Bogovinje\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:16\nmsgid \"Bosilovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:17\nmsgid \"Brvenica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:18\nmsgid \"Butel\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:19\nmsgid \"Valandovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:20\nmsgid \"Vasilevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:21\nmsgid \"Vevčani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:22\nmsgid \"Veles\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:23\nmsgid \"Vinica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:24\nmsgid \"Vraneštica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:25\nmsgid \"Vrapčište\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:26\nmsgid \"Gazi Baba\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:27\nmsgid \"Gevgelija\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:28\nmsgid \"Gostivar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:29\nmsgid \"Gradsko\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:30\nmsgid \"Debar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:31\nmsgid \"Debarca\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:32\nmsgid \"Delčevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:33\nmsgid \"Demir Kapija\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:34\nmsgid \"Demir Hisar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:35\nmsgid \"Dolneni\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:36\nmsgid \"Drugovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:37\nmsgid \"Gjorče Petrov\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:38\nmsgid \"Želino\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:39\nmsgid \"Zajas\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:40\nmsgid \"Zelenikovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:41\nmsgid \"Zrnovci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:42\nmsgid \"Ilinden\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:43\nmsgid \"Jegunovce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:44\nmsgid \"Kavadarci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:45\nmsgid \"Karbinci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:46\nmsgid \"Karpoš\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:47\nmsgid \"Kisela Voda\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:48\nmsgid \"Kičevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:49\nmsgid \"Konče\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:50\nmsgid \"Koćani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:51\nmsgid \"Kratovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:52\nmsgid \"Kriva Palanka\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:53\nmsgid \"Krivogaštani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:54\nmsgid \"Kruševo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:55\nmsgid \"Kumanovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:56\nmsgid \"Lipkovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:57\nmsgid \"Lozovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:58\nmsgid \"Mavrovo i Rostuša\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:59\nmsgid \"Makedonska Kamenica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:60\nmsgid \"Makedonski Brod\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:61\nmsgid \"Mogila\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:62\nmsgid \"Negotino\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:63\nmsgid \"Novaci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:64\nmsgid \"Novo Selo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:65\nmsgid \"Oslomej\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:66\nmsgid \"Ohrid\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:67\nmsgid \"Petrovec\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:68\nmsgid \"Pehčevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:69\nmsgid \"Plasnica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:70\nmsgid \"Prilep\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:71\nmsgid \"Probištip\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:72\nmsgid \"Radoviš\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:73\nmsgid \"Rankovce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:74\nmsgid \"Resen\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:75\nmsgid \"Rosoman\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:76\nmsgid \"Saraj\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:77\nmsgid \"Sveti Nikole\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:78\nmsgid \"Sopište\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:79\nmsgid \"Star Dojran\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:80\nmsgid \"Staro Nagoričane\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:81\nmsgid \"Struga\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:82\nmsgid \"Strumica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:83\nmsgid \"Studeničani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:84\nmsgid \"Tearce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:85\nmsgid \"Tetovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:86\nmsgid \"Centar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:87\nmsgid \"Centar-Župa\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:88\nmsgid \"Čair\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:89\nmsgid \"Čaška\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:90\nmsgid \"Češinovo-Obleševo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:91\nmsgid \"Čučer-Sandevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:92\nmsgid \"Štip\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:93\nmsgid \"Šuto Orizari\"\nmsgstr \"\"\n\n#: mk/models.py:11\nmsgid \"Macedonian identity card number\"\nmsgstr \"\"\n\n#: mk/models.py:25\nmsgid \"A Macedonian municipality (2 character code)\"\nmsgstr \"\"\n\n#: mk/models.py:35\nmsgid \"Unique master citizen number (13 digits)\"\nmsgstr \"\"\n\n#: mx/forms.py:67\nmsgid \"Enter a valid zip code in the format XXXXX.\"\nmsgstr \"\"\n\n#: mx/forms.py:110\nmsgid \"Enter a valid RFC.\"\nmsgstr \"\"\n\n#: mx/forms.py:111\nmsgid \"Invalid checksum for RFC.\"\nmsgstr \"\"\n\n#: mx/forms.py:191\nmsgid \"Enter a valid CURP.\"\nmsgstr \"\"\n\n#: mx/forms.py:192\nmsgid \"Invalid checksum for CURP.\"\nmsgstr \"\"\n\n#: mx/models.py:14\nmsgid \"Mexico state (three uppercase letters)\"\nmsgstr \"\"\n\n#: mx/models.py:27\nmsgid \"Mexico zip code\"\nmsgstr \"\"\n\n#: mx/models.py:44\nmsgid \"Mexican RFC\"\nmsgstr \"\"\n\n#: mx/models.py:61\nmsgid \"Mexican CURP\"\nmsgstr \"\"\n\n#: mx/mx_states.py:14\nmsgid \"Aguascalientes\"\nmsgstr \"Aguascalientes\"\n\n#: mx/mx_states.py:15\nmsgid \"Baja California\"\nmsgstr \"Baja California\"\n\n#: mx/mx_states.py:16\nmsgid \"Baja California Sur\"\nmsgstr \"Baja California Sur\"\n\n#: mx/mx_states.py:17\nmsgid \"Campeche\"\nmsgstr \"Campeche\"\n\n#: mx/mx_states.py:18\nmsgid \"Chihuahua\"\nmsgstr \"Chihuahua\"\n\n#: mx/mx_states.py:19\nmsgid \"Chiapas\"\nmsgstr \"Chiapas\"\n\n#: mx/mx_states.py:20\nmsgid \"Coahuila\"\nmsgstr \"Coahuila\"\n\n#: mx/mx_states.py:21\nmsgid \"Colima\"\nmsgstr \"Colima\"\n\n#: mx/mx_states.py:22\nmsgid \"Distrito Federal\"\nmsgstr \"Distrito Federal\"\n\n#: mx/mx_states.py:23\nmsgid \"Durango\"\nmsgstr \"Durango\"\n\n#: mx/mx_states.py:24\nmsgid \"Guerrero\"\nmsgstr \"Guerrero\"\n\n#: mx/mx_states.py:25\nmsgid \"Guanajuato\"\nmsgstr \"Guanajuato\"\n\n#: mx/mx_states.py:26\nmsgid \"Hidalgo\"\nmsgstr \"Hidalgo\"\n\n#: mx/mx_states.py:27\nmsgid \"Jalisco\"\nmsgstr \"Jalisco\"\n\n#: mx/mx_states.py:28\nmsgid \"Estado de México\"\nmsgstr \"Estado de México\"\n\n#: mx/mx_states.py:29\nmsgid \"Michoacán\"\nmsgstr \"Michoacán\"\n\n#: mx/mx_states.py:30\nmsgid \"Morelos\"\nmsgstr \"Morelos\"\n\n#: mx/mx_states.py:31\nmsgid \"Nayarit\"\nmsgstr \"Nayarit\"\n\n#: mx/mx_states.py:32\nmsgid \"Nuevo León\"\nmsgstr \"Nuevo León\"\n\n#: mx/mx_states.py:33\nmsgid \"Oaxaca\"\nmsgstr \"Oaxaca\"\n\n#: mx/mx_states.py:34\nmsgid \"Puebla\"\nmsgstr \"Puebla\"\n\n#: mx/mx_states.py:35\nmsgid \"Querétaro\"\nmsgstr \"Querétaro\"\n\n#: mx/mx_states.py:36\nmsgid \"Quintana Roo\"\nmsgstr \"Quintana Roo\"\n\n#: mx/mx_states.py:37\nmsgid \"Sinaloa\"\nmsgstr \"Sinaloa\"\n\n#: mx/mx_states.py:38\nmsgid \"San Luis Potosí\"\nmsgstr \"San Luis Potosí\"\n\n#: mx/mx_states.py:39\nmsgid \"Sonora\"\nmsgstr \"Sonora\"\n\n#: mx/mx_states.py:40\nmsgid \"Tabasco\"\nmsgstr \"Tabasco\"\n\n#: mx/mx_states.py:41\nmsgid \"Tamaulipas\"\nmsgstr \"Tamaulipas\"\n\n#: mx/mx_states.py:42\nmsgid \"Tlaxcala\"\nmsgstr \"Tlaxcala\"\n\n#: mx/mx_states.py:43\nmsgid \"Veracruz\"\nmsgstr \"Veracruz\"\n\n#: mx/mx_states.py:44\nmsgid \"Yucatán\"\nmsgstr \"Yucatán\"\n\n#: mx/mx_states.py:45\nmsgid \"Zacatecas\"\nmsgstr \"Zacatecas\"\n\n#: nl/forms.py:26\nmsgid \"Enter a valid postal code\"\nmsgstr \"Introduza um código postal válido.\"\n\n#: nl/forms.py:82\nmsgid \"Enter a valid SoFi number\"\nmsgstr \"Introduza um número SoFi válido.\"\n\n#: nl/nl_provinces.py:4\nmsgid \"Drenthe\"\nmsgstr \"Drenthe\"\n\n#: nl/nl_provinces.py:5\nmsgid \"Flevoland\"\nmsgstr \"Flevoland\"\n\n#: nl/nl_provinces.py:6\nmsgid \"Friesland\"\nmsgstr \"Friesland\"\n\n#: nl/nl_provinces.py:7\nmsgid \"Gelderland\"\nmsgstr \"Gelderland\"\n\n#: nl/nl_provinces.py:8\nmsgid \"Groningen\"\nmsgstr \"Groningen\"\n\n#: nl/nl_provinces.py:10\nmsgid \"Noord-Brabant\"\nmsgstr \"Noord-Brabant\"\n\n#: nl/nl_provinces.py:11\nmsgid \"Noord-Holland\"\nmsgstr \"Noord-Holland\"\n\n#: nl/nl_provinces.py:12\nmsgid \"Overijssel\"\nmsgstr \"Overijssel\"\n\n#: nl/nl_provinces.py:13\nmsgid \"Utrecht\"\nmsgstr \"Utrecht\"\n\n#: nl/nl_provinces.py:14\nmsgid \"Zeeland\"\nmsgstr \"Zeeland\"\n\n#: nl/nl_provinces.py:15\nmsgid \"Zuid-Holland\"\nmsgstr \"Zuid-Holland\"\n\n#: no/forms.py:39\nmsgid \"Enter a valid Norwegian social security number.\"\nmsgstr \"Introduza um número de segurança social Norueguês válido.\"\n\n#: pe/forms.py:28\nmsgid \"This field requires 8 digits.\"\nmsgstr \"Este campo requere 8 dígitos.\"\n\n#: pe/forms.py:56\nmsgid \"This field requires 11 digits.\"\nmsgstr \"Este campo requere 11 dígitos.\"\n\n#: pl/forms.py:42\nmsgid \"National Identification Number consists of 11 digits.\"\nmsgstr \"O número de identificação nacional consiste em 11 dígitos.\"\n\n#: pl/forms.py:43\nmsgid \"Wrong checksum for the National Identification Number.\"\nmsgstr \"Checksum errado para o número nacional de identificação.\"\n\n#: pl/forms.py:79\nmsgid \"National ID Card Number consists of 3 letters and 6 digits.\"\nmsgstr \"\"\n\n#: pl/forms.py:80\nmsgid \"Wrong checksum for the National ID Card Number.\"\nmsgstr \"\"\n\n#: pl/forms.py:131\nmsgid \"\"\n\"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or \"\n\"XXXXXXXXXX.\"\nmsgstr \"\"\n\n#: pl/forms.py:132\nmsgid \"Wrong checksum for the Tax Number (NIP).\"\nmsgstr \"Checksum errado para o número de imposto NIP.\"\n\n#: pl/forms.py:171\nmsgid \"National Business Register Number (REGON) consists of 9 or 14 digits.\"\nmsgstr \"\"\n\"O Número de Registo Nacional de Negócio (REGON) consiste em 9 ou 14 dígitos.\"\n\n#: pl/forms.py:172\nmsgid \"Wrong checksum for the National Business Register Number (REGON).\"\nmsgstr \"Checksum errado para o número de registo nacional de negócio (REGON).\"\n\n#: pl/forms.py:212\nmsgid \"Enter a postal code in the format XX-XXX.\"\nmsgstr \"Introduza um código postal no formato XX-XXX.\"\n\n#: pl/pl_voivodeships.py:8\nmsgid \"Lower Silesia\"\nmsgstr \"Lower Silesia\"\n\n#: pl/pl_voivodeships.py:9\nmsgid \"Kuyavia-Pomerania\"\nmsgstr \"Kuyavia-Pomerania\"\n\n#: pl/pl_voivodeships.py:10\nmsgid \"Lublin\"\nmsgstr \"Lublin\"\n\n#: pl/pl_voivodeships.py:11\nmsgid \"Lubusz\"\nmsgstr \"Lubusz\"\n\n#: pl/pl_voivodeships.py:12\nmsgid \"Lodz\"\nmsgstr \"Lodz\"\n\n#: pl/pl_voivodeships.py:13\nmsgid \"Lesser Poland\"\nmsgstr \"Lesser Poland\"\n\n#: pl/pl_voivodeships.py:14\nmsgid \"Masovia\"\nmsgstr \"Masovia\"\n\n#: pl/pl_voivodeships.py:15\nmsgid \"Opole\"\nmsgstr \"Opole\"\n\n#: pl/pl_voivodeships.py:16\nmsgid \"Subcarpatia\"\nmsgstr \"Subcarpatia\"\n\n#: pl/pl_voivodeships.py:17\nmsgid \"Podlasie\"\nmsgstr \"Podlasie\"\n\n#: pl/pl_voivodeships.py:18\nmsgid \"Pomerania\"\nmsgstr \"Pomerania\"\n\n#: pl/pl_voivodeships.py:19\nmsgid \"Silesia\"\nmsgstr \"Silesia\"\n\n#: pl/pl_voivodeships.py:20\nmsgid \"Swietokrzyskie\"\nmsgstr \"Swietokrzyskie\"\n\n#: pl/pl_voivodeships.py:21\nmsgid \"Warmia-Masuria\"\nmsgstr \"Warmia-Masuria\"\n\n#: pl/pl_voivodeships.py:22\nmsgid \"Greater Poland\"\nmsgstr \"Greater Poland\"\n\n#: pl/pl_voivodeships.py:23\nmsgid \"West Pomerania\"\nmsgstr \"West Pomerania\"\n\n#: pt/forms.py:19\nmsgid \"Enter a zip code in the format XXXX-XXX.\"\nmsgstr \"Introduza um código postal no formato XXXX-XXX.\"\n\n#: pt/forms.py:39\nmsgid \"Phone numbers must have 9 digits, or start by + or 00.\"\nmsgstr \"\"\n\"Os números de telefone devem conter 9 dígitos, ou começarem por + ou 00.\"\n\n#: ro/forms.py:22\nmsgid \"Enter a valid CIF.\"\nmsgstr \"Introduza um CIF válido.\"\n\n#: ro/forms.py:59\nmsgid \"Enter a valid CNP.\"\nmsgstr \"Introduza um CNP válido.\"\n\n#: ro/forms.py:143\nmsgid \"Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format\"\nmsgstr \"Introduza um IBAN válido no formato ROXX-XXXX-XXXX-XXXX-XXXX-XXXX\"\n\n#: ro/forms.py:175\nmsgid \"Phone numbers must be in XXXX-XXXXXX format.\"\nmsgstr \"Os números de telefone deverão ser no formato XXXX-XXXXXX.\"\n\n#: ro/forms.py:200\nmsgid \"Enter a valid postal code in the format XXXXXX\"\nmsgstr \"Introduza um código postal válido no formato XXXXXX\"\n\n#: ru/forms.py:37\nmsgid \"Enter a postal code in the format XXXXXX.\"\nmsgstr \"\"\n\n#: ru/forms.py:50\nmsgid \"Enter a passport number in the format XXXX XXXXXX.\"\nmsgstr \"\"\n\n#: ru/forms.py:63\nmsgid \"Enter a passport number in the format XX XXXXXXX.\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:10\nmsgid \"Central Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:11\nmsgid \"South Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:12\nmsgid \"North-West Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:13\nmsgid \"Far-East Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:14\nmsgid \"Siberian Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:15\nmsgid \"Ural Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:16\nmsgid \"Privolzhsky Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:17\nmsgid \"North-Caucasian Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:21\nmsgid \"Moskva\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:22\nmsgid \"Saint-Peterburg\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:23\nmsgid \"Moskovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:24\nmsgid \"Adygeya, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:25\nmsgid \"Bashkortostan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:26\nmsgid \"Buryatia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:27\nmsgid \"Altay, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:28\nmsgid \"Dagestan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:29\nmsgid \"Ingushskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:30\nmsgid \"Kabardino-Balkarskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:31\nmsgid \"Kalmykia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:32\nmsgid \"Karachaevo-Cherkesskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:33\nmsgid \"Karelia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:34\nmsgid \"Komi, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:35\nmsgid \"Mariy Ehl, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:36\nmsgid \"Mordovia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:37\nmsgid \"Sakha, Respublika (Yakutiya)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:38\nmsgid \"Severnaya Osetia, Respublika (Alania)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:39\nmsgid \"Tatarstan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:40\nmsgid \"Tyva, Respublika (Tuva)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:41\nmsgid \"Udmurtskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:42\nmsgid \"Khakassiya, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:43\nmsgid \"Chechenskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:44\nmsgid \"Chuvashskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:45\nmsgid \"Altayskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:46\nmsgid \"Zabaykalskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:47\nmsgid \"Kamchatskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:48\nmsgid \"Krasnodarskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:49\nmsgid \"Krasnoyarskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:50\nmsgid \"Permskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:51\nmsgid \"Primorskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:52\nmsgid \"Stavropol'siyy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:53\nmsgid \"Khabarovskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:54\nmsgid \"Amurskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:55\nmsgid \"Arkhangel'skaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:56\nmsgid \"Astrakhanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:57\nmsgid \"Belgorodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:58\nmsgid \"Bryanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:59\nmsgid \"Vladimirskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:60\nmsgid \"Volgogradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:61\nmsgid \"Vologodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:62\nmsgid \"Voronezhskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:63\nmsgid \"Ivanovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:64\nmsgid \"Irkutskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:65\nmsgid \"Kaliningradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:66\nmsgid \"Kaluzhskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:67\nmsgid \"Kemerovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:68\nmsgid \"Kirovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:69\nmsgid \"Kostromskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:70\nmsgid \"Kurganskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:71\nmsgid \"Kurskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:72\nmsgid \"Leningradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:73\nmsgid \"Lipeckaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:74\nmsgid \"Magadanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:75\nmsgid \"Murmanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:76\nmsgid \"Nizhegorodskaja oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:77\nmsgid \"Novgorodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:78\nmsgid \"Novosibirskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:79\nmsgid \"Omskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:80\nmsgid \"Orenburgskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:81\nmsgid \"Orlovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:82\nmsgid \"Penzenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:83\nmsgid \"Pskovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:84\nmsgid \"Rostovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:85\nmsgid \"Rjazanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:86\nmsgid \"Samarskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:87\nmsgid \"Saratovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:88\nmsgid \"Sakhalinskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:89\nmsgid \"Sverdlovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:90\nmsgid \"Smolenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:91\nmsgid \"Tambovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:92\nmsgid \"Tverskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:93\nmsgid \"Tomskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:94\nmsgid \"Tul'skaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:95\nmsgid \"Tyumenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:96\nmsgid \"Ul'ianovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:97\nmsgid \"Chelyabinskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:98\nmsgid \"Yaroslavskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:99\nmsgid \"Evreyskaya avtonomnaja oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:100\nmsgid \"Neneckiy autonomnyy okrug\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:101\nmsgid \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:102\nmsgid \"Chukotskiy avtonomnyy okrug\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:103\nmsgid \"Yamalo-Neneckiy avtonomnyy okrug\"\nmsgstr \"\"\n\n#: se/forms.py:54\nmsgid \"Enter a valid Swedish organisation number.\"\nmsgstr \"Introduza um número de organização Sueco válido.\"\n\n#: se/forms.py:111\nmsgid \"Enter a valid Swedish personal identity number.\"\nmsgstr \"Introduza um número de identificação pessoal válido.\"\n\n#: se/forms.py:112\nmsgid \"Co-ordination numbers are not allowed.\"\nmsgstr \"Números de coordenação não são permitidos.\"\n\n#: se/forms.py:154\nmsgid \"Enter a Swedish postal code in the format XXXXX.\"\nmsgstr \"Introduza um código postal Sueco no formato XXXXX.\"\n\n#: se/se_counties.py:16\nmsgid \"Stockholm\"\nmsgstr \"Stockholm\"\n\n#: se/se_counties.py:17\nmsgid \"Västerbotten\"\nmsgstr \"Västerbotten\"\n\n#: se/se_counties.py:18\nmsgid \"Norrbotten\"\nmsgstr \"Norrbotten\"\n\n#: se/se_counties.py:19\nmsgid \"Uppsala\"\nmsgstr \"Uppsala\"\n\n#: se/se_counties.py:20\nmsgid \"Södermanland\"\nmsgstr \"Södermanland\"\n\n#: se/se_counties.py:21\nmsgid \"Östergötland\"\nmsgstr \"Östergötland\"\n\n#: se/se_counties.py:22\nmsgid \"Jönköping\"\nmsgstr \"Jönköping\"\n\n#: se/se_counties.py:23\nmsgid \"Kronoberg\"\nmsgstr \"Kronoberg\"\n\n#: se/se_counties.py:24\nmsgid \"Kalmar\"\nmsgstr \"Kalmar\"\n\n#: se/se_counties.py:25\nmsgid \"Gotland\"\nmsgstr \"Gotland\"\n\n#: se/se_counties.py:26\nmsgid \"Blekinge\"\nmsgstr \"Blekinge\"\n\n#: se/se_counties.py:27\nmsgid \"Skåne\"\nmsgstr \"Skåne\"\n\n#: se/se_counties.py:28\nmsgid \"Halland\"\nmsgstr \"Halland\"\n\n#: se/se_counties.py:29\nmsgid \"Västra Götaland\"\nmsgstr \"Västra Götaland\"\n\n#: se/se_counties.py:30\nmsgid \"Värmland\"\nmsgstr \"Värmland\"\n\n#: se/se_counties.py:31\nmsgid \"Örebro\"\nmsgstr \"Örebro\"\n\n#: se/se_counties.py:32\nmsgid \"Västmanland\"\nmsgstr \"Västmanland\"\n\n#: se/se_counties.py:33\nmsgid \"Dalarna\"\nmsgstr \"Dalarna\"\n\n#: se/se_counties.py:34\nmsgid \"Gävleborg\"\nmsgstr \"Gävleborg\"\n\n#: se/se_counties.py:35\nmsgid \"Västernorrland\"\nmsgstr \"Västernorrland\"\n\n#: se/se_counties.py:36\nmsgid \"Jämtland\"\nmsgstr \"Jämtland\"\n\n#: si/forms.py:25\nmsgid \"The first 7 digits of the EMSO must represent a valid past date.\"\nmsgstr \"\"\n\n#: si/forms.py:26\nmsgid \"The EMSO is not valid.\"\nmsgstr \"\"\n\n#: si/forms.py:86\nmsgid \"Enter a valid tax number in form SIXXXXXXXX\"\nmsgstr \"\"\n\n#: si/forms.py:151\nmsgid \"Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:8\nmsgid \"Banska Bystrica\"\nmsgstr \"Banska Bystrica\"\n\n#: sk/sk_districts.py:9\nmsgid \"Banska Stiavnica\"\nmsgstr \"Banska Stiavnica\"\n\n#: sk/sk_districts.py:10\nmsgid \"Bardejov\"\nmsgstr \"Bardejov\"\n\n#: sk/sk_districts.py:11\nmsgid \"Banovce nad Bebravou\"\nmsgstr \"Banovce nad Bebravou\"\n\n#: sk/sk_districts.py:12\nmsgid \"Brezno\"\nmsgstr \"Brezno\"\n\n#: sk/sk_districts.py:13\nmsgid \"Bratislava I\"\nmsgstr \"Bratislava I\"\n\n#: sk/sk_districts.py:14\nmsgid \"Bratislava II\"\nmsgstr \"Bratislava II\"\n\n#: sk/sk_districts.py:15\nmsgid \"Bratislava III\"\nmsgstr \"Bratislava III\"\n\n#: sk/sk_districts.py:16\nmsgid \"Bratislava IV\"\nmsgstr \"Bratislava IV\"\n\n#: sk/sk_districts.py:17\nmsgid \"Bratislava V\"\nmsgstr \"Bratislava V\"\n\n#: sk/sk_districts.py:18\nmsgid \"Bytca\"\nmsgstr \"Bytca\"\n\n#: sk/sk_districts.py:19\nmsgid \"Cadca\"\nmsgstr \"Cadca\"\n\n#: sk/sk_districts.py:20\nmsgid \"Detva\"\nmsgstr \"Detva\"\n\n#: sk/sk_districts.py:21\nmsgid \"Dolny Kubin\"\nmsgstr \"Dolny Kubin\"\n\n#: sk/sk_districts.py:22\nmsgid \"Dunajska Streda\"\nmsgstr \"Dunajska Streda\"\n\n#: sk/sk_districts.py:23\nmsgid \"Galanta\"\nmsgstr \"Galanta\"\n\n#: sk/sk_districts.py:24\nmsgid \"Gelnica\"\nmsgstr \"Gelnica\"\n\n#: sk/sk_districts.py:25\nmsgid \"Hlohovec\"\nmsgstr \"Hlohovec\"\n\n#: sk/sk_districts.py:26\nmsgid \"Humenne\"\nmsgstr \"Humenne\"\n\n#: sk/sk_districts.py:27\nmsgid \"Ilava\"\nmsgstr \"Ilava\"\n\n#: sk/sk_districts.py:28\nmsgid \"Kezmarok\"\nmsgstr \"Kezmarok\"\n\n#: sk/sk_districts.py:29\nmsgid \"Komarno\"\nmsgstr \"Komarno\"\n\n#: sk/sk_districts.py:30\nmsgid \"Kosice I\"\nmsgstr \"Kosice I\"\n\n#: sk/sk_districts.py:31\nmsgid \"Kosice II\"\nmsgstr \"Kosice II\"\n\n#: sk/sk_districts.py:32\nmsgid \"Kosice III\"\nmsgstr \"Kosice III\"\n\n#: sk/sk_districts.py:33\nmsgid \"Kosice IV\"\nmsgstr \"Kosice IV\"\n\n#: sk/sk_districts.py:34\nmsgid \"Kosice - okolie\"\nmsgstr \"Kosice - okolie\"\n\n#: sk/sk_districts.py:35\nmsgid \"Krupina\"\nmsgstr \"Krupina\"\n\n#: sk/sk_districts.py:36\nmsgid \"Kysucke Nove Mesto\"\nmsgstr \"Kysucke Nove Mesto\"\n\n#: sk/sk_districts.py:37\nmsgid \"Levice\"\nmsgstr \"Levice\"\n\n#: sk/sk_districts.py:38\nmsgid \"Levoca\"\nmsgstr \"Levoca\"\n\n#: sk/sk_districts.py:39\nmsgid \"Liptovsky Mikulas\"\nmsgstr \"Liptovsky Mikulas\"\n\n#: sk/sk_districts.py:40\nmsgid \"Lucenec\"\nmsgstr \"Lucenec\"\n\n#: sk/sk_districts.py:41\nmsgid \"Malacky\"\nmsgstr \"Malacky\"\n\n#: sk/sk_districts.py:42\nmsgid \"Martin\"\nmsgstr \"Martin\"\n\n#: sk/sk_districts.py:43\nmsgid \"Medzilaborce\"\nmsgstr \"Medzilaborce\"\n\n#: sk/sk_districts.py:44\nmsgid \"Michalovce\"\nmsgstr \"Michalovce\"\n\n#: sk/sk_districts.py:45\nmsgid \"Myjava\"\nmsgstr \"Myjava\"\n\n#: sk/sk_districts.py:46\nmsgid \"Namestovo\"\nmsgstr \"Namestovo\"\n\n#: sk/sk_districts.py:47\nmsgid \"Nitra\"\nmsgstr \"Nitra\"\n\n#: sk/sk_districts.py:48\nmsgid \"Nove Mesto nad Vahom\"\nmsgstr \"Nove Mesto nad Vahom\"\n\n#: sk/sk_districts.py:49\nmsgid \"Nove Zamky\"\nmsgstr \"Nove Zamky\"\n\n#: sk/sk_districts.py:50\nmsgid \"Partizanske\"\nmsgstr \"Partizanske\"\n\n#: sk/sk_districts.py:51\nmsgid \"Pezinok\"\nmsgstr \"Pezinok\"\n\n#: sk/sk_districts.py:52\nmsgid \"Piestany\"\nmsgstr \"Piestany\"\n\n#: sk/sk_districts.py:53\nmsgid \"Poltar\"\nmsgstr \"Poltar\"\n\n#: sk/sk_districts.py:54\nmsgid \"Poprad\"\nmsgstr \"Poprad\"\n\n#: sk/sk_districts.py:55\nmsgid \"Povazska Bystrica\"\nmsgstr \"Povazska Bystrica\"\n\n#: sk/sk_districts.py:56\nmsgid \"Presov\"\nmsgstr \"Presov\"\n\n#: sk/sk_districts.py:57\nmsgid \"Prievidza\"\nmsgstr \"Prievidza\"\n\n#: sk/sk_districts.py:58\nmsgid \"Puchov\"\nmsgstr \"Puchov\"\n\n#: sk/sk_districts.py:59\nmsgid \"Revuca\"\nmsgstr \"Revuca\"\n\n#: sk/sk_districts.py:60\nmsgid \"Rimavska Sobota\"\nmsgstr \"Rimavska Sobota\"\n\n#: sk/sk_districts.py:61\nmsgid \"Roznava\"\nmsgstr \"Roznava\"\n\n#: sk/sk_districts.py:62\nmsgid \"Ruzomberok\"\nmsgstr \"Ruzomberok\"\n\n#: sk/sk_districts.py:63\nmsgid \"Sabinov\"\nmsgstr \"Sabinov\"\n\n#: sk/sk_districts.py:64\nmsgid \"Senec\"\nmsgstr \"Senec\"\n\n#: sk/sk_districts.py:65\nmsgid \"Senica\"\nmsgstr \"Senica\"\n\n#: sk/sk_districts.py:66\nmsgid \"Skalica\"\nmsgstr \"Skalica\"\n\n#: sk/sk_districts.py:67\nmsgid \"Snina\"\nmsgstr \"Snina\"\n\n#: sk/sk_districts.py:68\nmsgid \"Sobrance\"\nmsgstr \"Sobrance\"\n\n#: sk/sk_districts.py:69\nmsgid \"Spisska Nova Ves\"\nmsgstr \"Spisska Nova Ves\"\n\n#: sk/sk_districts.py:70\nmsgid \"Stara Lubovna\"\nmsgstr \"Stara Lubovna\"\n\n#: sk/sk_districts.py:71\nmsgid \"Stropkov\"\nmsgstr \"Stropkov\"\n\n#: sk/sk_districts.py:72\nmsgid \"Svidnik\"\nmsgstr \"Svidnik\"\n\n#: sk/sk_districts.py:73\nmsgid \"Sala\"\nmsgstr \"Sala\"\n\n#: sk/sk_districts.py:74\nmsgid \"Topolcany\"\nmsgstr \"Topolcany\"\n\n#: sk/sk_districts.py:75\nmsgid \"Trebisov\"\nmsgstr \"Trebisov\"\n\n#: sk/sk_districts.py:76\nmsgid \"Trencin\"\nmsgstr \"Trencin\"\n\n#: sk/sk_districts.py:77\nmsgid \"Trnava\"\nmsgstr \"Trnava\"\n\n#: sk/sk_districts.py:78\nmsgid \"Turcianske Teplice\"\nmsgstr \"Turcianske Teplice\"\n\n#: sk/sk_districts.py:79\nmsgid \"Tvrdosin\"\nmsgstr \"Tvrdosin\"\n\n#: sk/sk_districts.py:80\nmsgid \"Velky Krtis\"\nmsgstr \"Velky Krtis\"\n\n#: sk/sk_districts.py:81\nmsgid \"Vranov nad Toplou\"\nmsgstr \"Vranov nad Toplou\"\n\n#: sk/sk_districts.py:82\nmsgid \"Zlate Moravce\"\nmsgstr \"Zlate Moravce\"\n\n#: sk/sk_districts.py:83\nmsgid \"Zvolen\"\nmsgstr \"Zvolen\"\n\n#: sk/sk_districts.py:84\nmsgid \"Zarnovica\"\nmsgstr \"Zarnovica\"\n\n#: sk/sk_districts.py:85\nmsgid \"Ziar nad Hronom\"\nmsgstr \"Ziar nad Hronom\"\n\n#: sk/sk_districts.py:86\nmsgid \"Zilina\"\nmsgstr \"Zilina\"\n\n#: sk/sk_regions.py:8\nmsgid \"Banska Bystrica region\"\nmsgstr \"Banska Bystrica region\"\n\n#: sk/sk_regions.py:9\nmsgid \"Bratislava region\"\nmsgstr \"Bratislava region\"\n\n#: sk/sk_regions.py:10\nmsgid \"Kosice region\"\nmsgstr \"Kosice region\"\n\n#: sk/sk_regions.py:11\nmsgid \"Nitra region\"\nmsgstr \"Nitra region\"\n\n#: sk/sk_regions.py:12\nmsgid \"Presov region\"\nmsgstr \"Presov region\"\n\n#: sk/sk_regions.py:13\nmsgid \"Trencin region\"\nmsgstr \"Trencin region\"\n\n#: sk/sk_regions.py:14\nmsgid \"Trnava region\"\nmsgstr \"Trnava region\"\n\n#: sk/sk_regions.py:15\nmsgid \"Zilina region\"\nmsgstr \"Zilina region\"\n\n#: tr/forms.py:21\nmsgid \"Enter a postal code in the format XXXXX.\"\nmsgstr \"Introduza um código postal no formato XXXXX.\"\n\n#: tr/forms.py:42\nmsgid \"Phone numbers must be in 0XXX XXX XXXX format.\"\nmsgstr \"Os números de telefone deve estar no formato XXXX XXX 0xxx.\"\n\n#: tr/forms.py:69\nmsgid \"Enter a valid Turkish Identification number.\"\nmsgstr \"Digite um número de identificação válido Turco.\"\n\n#: tr/forms.py:70\nmsgid \"Turkish Identification number must be 11 digits.\"\nmsgstr \"Número de identificação Turco deve ter 11 dígitos.\"\n\n#: us/forms.py:21\nmsgid \"Enter a zip code in the format XXXXX or XXXXX-XXXX.\"\nmsgstr \"Introduza o código postal no formato XXXXX or XXXXX-XXXX.\"\n\n#: us/forms.py:59\nmsgid \"Enter a valid U.S. Social Security number in XXX-XX-XXXX format.\"\nmsgstr \"\"\n\"Introduza o número de Segurança Social dos E.U. no formato XXX-XX-XXXX.\"\n\n#: us/forms.py:92\nmsgid \"Enter a U.S. state or territory.\"\nmsgstr \"Introduza um estado ou território do E.U.A..\"\n\n#: us/models.py:8\nmsgid \"U.S. state (two uppercase letters)\"\nmsgstr \"Estado dos E.U.A (duas letras em maiúsculas)\"\n\n#: us/models.py:17\nmsgid \"U.S. postal code (two uppercase letters)\"\nmsgstr \"Código postal dos EUA (duas letras maiúsculas)\"\n\n#: us/models.py:26\nmsgid \"Phone number\"\nmsgstr \"Número de telefone\"\n\n#: uy/forms.py:29\nmsgid \"Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.\"\nmsgstr \"\"\n\"Introduza um número CI válido no formato X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX.\"\n\n#: uy/forms.py:31\nmsgid \"Enter a valid CI number.\"\nmsgstr \"Introduza um número CI válido.\"\n\n#: za/forms.py:22\nmsgid \"Enter a valid South African ID number\"\nmsgstr \"Introduza um número ID da África do Sul válido\"\n\n#: za/forms.py:56\nmsgid \"Enter a valid South African postal code\"\nmsgstr \"Introduza um código postal da África do Sul válido\"\n\n#: za/za_provinces.py:4\nmsgid \"Eastern Cape\"\nmsgstr \"Eastern Cape\"\n\n#: za/za_provinces.py:5\nmsgid \"Free State\"\nmsgstr \"Free State\"\n\n#: za/za_provinces.py:6\nmsgid \"Gauteng\"\nmsgstr \"Gauteng\"\n\n#: za/za_provinces.py:7\nmsgid \"KwaZulu-Natal\"\nmsgstr \"KwaZulu-Natal\"\n\n#: za/za_provinces.py:8\nmsgid \"Limpopo\"\nmsgstr \"Limpopo\"\n\n#: za/za_provinces.py:9\nmsgid \"Mpumalanga\"\nmsgstr \"Mpumalanga\"\n\n#: za/za_provinces.py:10\nmsgid \"Northern Cape\"\nmsgstr \"Northern Cape\"\n\n#: za/za_provinces.py:11\nmsgid \"North West\"\nmsgstr \"North West\"\n\n#: za/za_provinces.py:12\nmsgid \"Western Cape\"\nmsgstr \"Western Cape\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/locale/pt_BR/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <dudanogueira@gmail.com>, 2012.\n# Eduardo Carvalho <eduardocereto@gmail.com>, 2011, 2012.\n# Guilherme Gondim <semente+transifex@taurinus.org>, 2011, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-11-04 01:55+0000\\n\"\n\"Last-Translator: dudanogueira <dudanogueira@gmail.com>\\n\"\n\"Language-Team: Portuguese (Brazil) <django-l10n-portuguese@googlegroups.\"\n\"com>\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: pt_BR\\n\"\n\"Plural-Forms: nplurals=2; plural=(n > 1);\\n\"\n\n#: ar/forms.py:30\nmsgid \"Enter a postal code in the format NNNN or ANNNNAAA.\"\nmsgstr \"Informe um código postal no formato NNNN ou ANNNNAAA.\"\n\n#: ar/forms.py:52 br/forms.py:95 br/forms.py:134 pe/forms.py:27 pe/forms.py:55\nmsgid \"This field requires only numbers.\"\nmsgstr \"Este campo requer somente números.\"\n\n#: ar/forms.py:53\nmsgid \"This field requires 7 or 8 digits.\"\nmsgstr \"Este campo requer 7 ou 8 dígitos.\"\n\n#: ar/forms.py:82\nmsgid \"Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.\"\nmsgstr \"Informe um CUIT válido no formato XX-XXXXXXXX-X ou XXXXXXXXXXXX.\"\n\n#: ar/forms.py:83\nmsgid \"Invalid CUIT.\"\nmsgstr \"CUIT inválido.\"\n\n#: ar/forms.py:84\nmsgid \"Invalid legal type. Type must be 27, 20, 23 or 30.\"\nmsgstr \"Tipo legal inválido. Os tipos devem ser 27, 20, 23 ou 30.\"\n\n#: at/at_states.py:5\nmsgid \"Burgenland\"\nmsgstr \"Burgenland\"\n\n#: at/at_states.py:6\nmsgid \"Carinthia\"\nmsgstr \"Caríntia\"\n\n#: at/at_states.py:7\nmsgid \"Lower Austria\"\nmsgstr \"Baixa Áustria\"\n\n#: at/at_states.py:8\nmsgid \"Upper Austria\"\nmsgstr \"Alta Áustria\"\n\n#: at/at_states.py:9\nmsgid \"Salzburg\"\nmsgstr \"Salzburgo\"\n\n#: at/at_states.py:10\nmsgid \"Styria\"\nmsgstr \"Estíria\"\n\n#: at/at_states.py:11\nmsgid \"Tyrol\"\nmsgstr \"Tirol\"\n\n#: at/at_states.py:12\nmsgid \"Vorarlberg\"\nmsgstr \"Vorarlberg\"\n\n#: at/at_states.py:13\nmsgid \"Vienna\"\nmsgstr \"Viena\"\n\n#: at/forms.py:22 ch/forms.py:22 no/forms.py:19\nmsgid \"Enter a zip code in the format XXXX.\"\nmsgstr \"Informe um código postal no formato XXXX.\"\n\n#: at/forms.py:50\nmsgid \"Enter a valid Austrian Social Security Number in XXXX XXXXXX format.\"\nmsgstr \"\"\n\"Informe um número de Seguro Social Austríaco válido no formato XXXX XXXXXX.\"\n\n#: au/forms.py:26\nmsgid \"Enter a 4 digit postcode.\"\nmsgstr \"Informe um código postal de 4 dígitos.\"\n\n#: au/models.py:9\nmsgid \"Australian State\"\nmsgstr \"Estado Australiano\"\n\n#: au/models.py:19\nmsgid \"Australian Postcode\"\nmsgstr \"Código postal Australiano\"\n\n#: au/models.py:33\nmsgid \"Australian Phone number\"\nmsgstr \"Número de telefone Australiano\"\n\n#: be/be_provinces.py:5\nmsgid \"Antwerp\"\nmsgstr \"Antuérpia\"\n\n#: be/be_provinces.py:6\nmsgid \"Brussels\"\nmsgstr \"Bruxelas\"\n\n#: be/be_provinces.py:7\nmsgid \"East Flanders\"\nmsgstr \"Flandres Oriental\"\n\n#: be/be_provinces.py:8\nmsgid \"Flemish Brabant\"\nmsgstr \"Brabante Flamengo\"\n\n#: be/be_provinces.py:9\nmsgid \"Hainaut\"\nmsgstr \"Hainaut\"\n\n#: be/be_provinces.py:10\nmsgid \"Liege\"\nmsgstr \"Liège\"\n\n#: be/be_provinces.py:11 nl/nl_provinces.py:9\nmsgid \"Limburg\"\nmsgstr \"Limburgo\"\n\n#: be/be_provinces.py:12\nmsgid \"Luxembourg\"\nmsgstr \"Luxemburgo\"\n\n#: be/be_provinces.py:13\nmsgid \"Namur\"\nmsgstr \"Namur\"\n\n#: be/be_provinces.py:14\nmsgid \"Walloon Brabant\"\nmsgstr \"Brabante Valão\"\n\n#: be/be_provinces.py:15\nmsgid \"West Flanders\"\nmsgstr \"Flandres Ocidental\"\n\n#: be/be_regions.py:5\nmsgid \"Brussels Capital Region\"\nmsgstr \"Região de Bruxelas-Capital\"\n\n#: be/be_regions.py:6\nmsgid \"Flemish Region\"\nmsgstr \"Região de Flandres\"\n\n#: be/be_regions.py:7\nmsgid \"Wallonia\"\nmsgstr \"Valônia\"\n\n#: be/forms.py:25\nmsgid \"Enter a valid postal code in the range and format 1XXX - 9XXX.\"\nmsgstr \"Informe um código postal válido no intervalo e formato 1XXX - 9XXX.\"\n\n#: be/forms.py:48\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\nmsgstr \"\"\n\"Insira um número de telefone válido em um dos formatos 0x xxx xx xx, 0xx xx \"\n\"xx xx, 04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.\"\n\"xx, 0xx.xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx ou 04xxxxxxxx.\"\n\n#: br/forms.py:22\nmsgid \"Enter a zip code in the format XXXXX-XXX.\"\nmsgstr \"Informe um código postal no formato XXXXX-XXX.\"\n\n#: br/forms.py:31\nmsgid \"Phone numbers must be in XX-XXXX-XXXX format.\"\nmsgstr \"Números de telefone devem estar no formato XX-XXXX-XXXX.\"\n\n#: br/forms.py:58\nmsgid \"\"\n\"Select a valid brazilian state. That state is not one of the available \"\n\"states.\"\nmsgstr \"\"\n\"Selecione um estado brasileiro válido. O estado escolhido não é um dos \"\n\"estados disponíveis.\"\n\n#: br/forms.py:93\nmsgid \"Invalid CPF number.\"\nmsgstr \"Número de CPF inválido.\"\n\n#: br/forms.py:94\nmsgid \"This field requires at most 11 digits or 14 characters.\"\nmsgstr \"Este campo requer no máximo 11 dígitos ou 14 caracteres.\"\n\n#: br/forms.py:133\nmsgid \"Invalid CNPJ number.\"\nmsgstr \"Número de CNPJ inválido.\"\n\n#: br/forms.py:135\nmsgid \"This field requires at least 14 digits\"\nmsgstr \"Este campo requer ao menos 14 dígitos\"\n\n#: ca/forms.py:29\nmsgid \"Enter a postal code in the format XXX XXX.\"\nmsgstr \"Informe um código postal no formato XXX XXX.\"\n\n#: ca/forms.py:47 us/forms.py:30\nmsgid \"Phone numbers must be in XXX-XXX-XXXX format.\"\nmsgstr \"Números de telefone devem estar no formato XXX-XXX-XXXX.\"\n\n#: ca/forms.py:69\nmsgid \"Enter a Canadian province or territory.\"\nmsgstr \"Escolha a província ou território Canadense.\"\n\n#: ca/forms.py:110\nmsgid \"Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.\"\nmsgstr \"\"\n\"Informe um número de Canadian Social Insurance válido no formato XXX-XXX-XXX.\"\n\n#: ch/ch_states.py:5\nmsgid \"Aargau\"\nmsgstr \"Argóvia\"\n\n#: ch/ch_states.py:6\nmsgid \"Appenzell Innerrhoden\"\nmsgstr \"Appenzell Interior\"\n\n#: ch/ch_states.py:7\nmsgid \"Appenzell Ausserrhoden\"\nmsgstr \"Appenzell Exterior\"\n\n#: ch/ch_states.py:8\nmsgid \"Basel-Stadt\"\nmsgstr \"Basiléia-Cidade\"\n\n#: ch/ch_states.py:9\nmsgid \"Basel-Land\"\nmsgstr \"Basiléia-Campo\"\n\n#: ch/ch_states.py:10\nmsgid \"Berne\"\nmsgstr \"Berna\"\n\n#: ch/ch_states.py:11\nmsgid \"Fribourg\"\nmsgstr \"Friburgo\"\n\n#: ch/ch_states.py:12\nmsgid \"Geneva\"\nmsgstr \"Genebra\"\n\n#: ch/ch_states.py:13\nmsgid \"Glarus\"\nmsgstr \"Glaris\"\n\n#: ch/ch_states.py:14\nmsgid \"Graubuenden\"\nmsgstr \"Grisões\"\n\n#: ch/ch_states.py:15\nmsgid \"Jura\"\nmsgstr \"Jura\"\n\n#: ch/ch_states.py:16\nmsgid \"Lucerne\"\nmsgstr \"Lucerna\"\n\n#: ch/ch_states.py:17\nmsgid \"Neuchatel\"\nmsgstr \"Neuchâtel\"\n\n#: ch/ch_states.py:18\nmsgid \"Nidwalden\"\nmsgstr \"Nidwald\"\n\n#: ch/ch_states.py:19\nmsgid \"Obwalden\"\nmsgstr \"Obwald\"\n\n#: ch/ch_states.py:20\nmsgid \"Schaffhausen\"\nmsgstr \"Schaffhausen\"\n\n#: ch/ch_states.py:21\nmsgid \"Schwyz\"\nmsgstr \"Schwyz\"\n\n#: ch/ch_states.py:22\nmsgid \"Solothurn\"\nmsgstr \"Soleura\"\n\n#: ch/ch_states.py:23\nmsgid \"St. Gallen\"\nmsgstr \"São Galo\"\n\n#: ch/ch_states.py:24\nmsgid \"Thurgau\"\nmsgstr \"Turgóvia\"\n\n#: ch/ch_states.py:25\nmsgid \"Ticino\"\nmsgstr \"Tessino\"\n\n#: ch/ch_states.py:26\nmsgid \"Uri\"\nmsgstr \"Uri\"\n\n#: ch/ch_states.py:27\nmsgid \"Valais\"\nmsgstr \"Valais\"\n\n#: ch/ch_states.py:28\nmsgid \"Vaud\"\nmsgstr \"Vaud\"\n\n#: ch/ch_states.py:29\nmsgid \"Zug\"\nmsgstr \"Zug\"\n\n#: ch/ch_states.py:30\nmsgid \"Zurich\"\nmsgstr \"Zurique\"\n\n#: ch/forms.py:37\nmsgid \"Phone numbers must be in 0XX XXX XX XX format.\"\nmsgstr \"Números de telefone devem possuir o formato 0XX XXX XX XX.\"\n\n#: ch/forms.py:68\nmsgid \"\"\n\"Enter a valid Swiss identity or passport card number in X1234567<0 or \"\n\"1234567890 format.\"\nmsgstr \"\"\n\"Informe uma indentidade Suíça ou número de passaporte válido no formato \"\n\"X1234567<0 ou 1234567890.\"\n\n#: cl/forms.py:32\nmsgid \"Enter a valid Chilean RUT.\"\nmsgstr \"Informe um RUT chileno válido.\"\n\n#: cl/forms.py:33\nmsgid \"Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.\"\nmsgstr \"Informe um RUT chileno válido. O formato é XX.XXX.XXX-X.\"\n\n#: cl/forms.py:34\nmsgid \"The Chilean RUT is not valid.\"\nmsgstr \"O RUT chileno não é válido.\"\n\n#: cn/forms.py:84\nmsgid \"Enter a post code in the format XXXXXX.\"\nmsgstr \"Informe um código postal com o formato XXXXXX.\"\n\n#: cn/forms.py:105\nmsgid \"ID Card Number consists of 15 or 18 digits.\"\nmsgstr \"Números de cartão de identidade consistem em 15 ou 18 dígitos.\"\n\n#: cn/forms.py:106\nmsgid \"Invalid ID Card Number: Wrong checksum\"\nmsgstr \"Número do cartão de identidade inválido: checksum errado\"\n\n#: cn/forms.py:107\nmsgid \"Invalid ID Card Number: Wrong birthdate\"\nmsgstr \"Número do cartão de identidade inválido: data de nascimento errada\"\n\n#: cn/forms.py:108\nmsgid \"Invalid ID Card Number: Wrong location code\"\nmsgstr \"Número do cartão de identidade inválido: código local errado\"\n\n#: cn/forms.py:193\nmsgid \"Enter a valid phone number.\"\nmsgstr \"Informe um número de telefone válido.\"\n\n#: cn/forms.py:210\nmsgid \"Enter a valid cell number.\"\nmsgstr \"Informe um número de celular válido.\"\n\n#: cz/cz_regions.py:8\nmsgid \"Prague\"\nmsgstr \"Praga\"\n\n#: cz/cz_regions.py:9\nmsgid \"Central Bohemian Region\"\nmsgstr \"Região de Boêmia Central\"\n\n#: cz/cz_regions.py:10\nmsgid \"South Bohemian Region\"\nmsgstr \"Região de Boêmia do Sul\"\n\n#: cz/cz_regions.py:11\nmsgid \"Pilsen Region\"\nmsgstr \"Região de Pilsen\"\n\n#: cz/cz_regions.py:12\nmsgid \"Carlsbad Region\"\nmsgstr \"Região de Carlsbad\"\n\n#: cz/cz_regions.py:13\nmsgid \"Usti Region\"\nmsgstr \"Região de Ústí\"\n\n#: cz/cz_regions.py:14\nmsgid \"Liberec Region\"\nmsgstr \"Região de Liberec\"\n\n#: cz/cz_regions.py:15\nmsgid \"Hradec Region\"\nmsgstr \"Região de Hradec\"\n\n#: cz/cz_regions.py:16\nmsgid \"Pardubice Region\"\nmsgstr \"Região de Pardubice\"\n\n#: cz/cz_regions.py:17\nmsgid \"Vysocina Region\"\nmsgstr \"Região de Vysocina\"\n\n#: cz/cz_regions.py:18\nmsgid \"South Moravian Region\"\nmsgstr \"Região de Morávia do Sul\"\n\n#: cz/cz_regions.py:19\nmsgid \"Olomouc Region\"\nmsgstr \"Região de Olomouc\"\n\n#: cz/cz_regions.py:20\nmsgid \"Zlin Region\"\nmsgstr \"Região de Zlín\"\n\n#: cz/cz_regions.py:21\nmsgid \"Moravian-Silesian Region\"\nmsgstr \"Região de Morávia-Silésia\"\n\n#: cz/forms.py:32 sk/forms.py:33\nmsgid \"Enter a postal code in the format XXXXX or XXX XX.\"\nmsgstr \"Informe um código postal no formato XXXXX ou XXX XX.\"\n\n#: cz/forms.py:52\nmsgid \"Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.\"\nmsgstr \"Informe um número de nascimento no formato XXXXXX/XXXX ou XXXXXXXXXX.\"\n\n#: cz/forms.py:53\nmsgid \"Enter a valid birth number.\"\nmsgstr \"Informe um número de nascimento válido.\"\n\n#: cz/forms.py:102\nmsgid \"Enter a valid IC number.\"\nmsgstr \"Informe um número IC válido.\"\n\n#: de/de_states.py:5\nmsgid \"Baden-Wuerttemberg\"\nmsgstr \"Baden-Wüerttemberg\"\n\n#: de/de_states.py:6\nmsgid \"Bavaria\"\nmsgstr \"Baviera\"\n\n#: de/de_states.py:7\nmsgid \"Berlin\"\nmsgstr \"Berlim\"\n\n#: de/de_states.py:8\nmsgid \"Brandenburg\"\nmsgstr \"Brandenburgo\"\n\n#: de/de_states.py:9\nmsgid \"Bremen\"\nmsgstr \"Bremen\"\n\n#: de/de_states.py:10\nmsgid \"Hamburg\"\nmsgstr \"Hamburgo\"\n\n#: de/de_states.py:11\nmsgid \"Hessen\"\nmsgstr \"Hessen\"\n\n#: de/de_states.py:12\nmsgid \"Mecklenburg-Western Pomerania\"\nmsgstr \"Mecklemburgo-Pomerânia Ocidental\"\n\n#: de/de_states.py:13\nmsgid \"Lower Saxony\"\nmsgstr \"Baixa-Saxônia\"\n\n#: de/de_states.py:14\nmsgid \"North Rhine-Westphalia\"\nmsgstr \"Renânia do Norte-Vestfália\"\n\n#: de/de_states.py:15\nmsgid \"Rhineland-Palatinate\"\nmsgstr \"Renânia-Palatinado\"\n\n#: de/de_states.py:16\nmsgid \"Saarland\"\nmsgstr \"Sarre\"\n\n#: de/de_states.py:17\nmsgid \"Saxony\"\nmsgstr \"Saxônia\"\n\n#: de/de_states.py:18\nmsgid \"Saxony-Anhalt\"\nmsgstr \"Saxônia-Anhalt\"\n\n#: de/de_states.py:19\nmsgid \"Schleswig-Holstein\"\nmsgstr \"Schleswig-Holstein\"\n\n#: de/de_states.py:20\nmsgid \"Thuringia\"\nmsgstr \"Turíngia\"\n\n#: de/forms.py:20 fi/forms.py:18 fr/forms.py:20\nmsgid \"Enter a zip code in the format XXXXX.\"\nmsgstr \"Informe um código postal no formato XXXXX.\"\n\n#: de/forms.py:46\nmsgid \"\"\n\"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"format.\"\nmsgstr \"\"\n\"Informe um número de cartão de identidade Alemã no formato XXXXXXXXXXX-\"\n\"XXXXXXX-XXXXXXX-X.\"\n\n#: es/es_provinces.py:5\nmsgid \"Araba\"\nmsgstr \"Álava\"\n\n#: es/es_provinces.py:6\nmsgid \"Albacete\"\nmsgstr \"Albacete\"\n\n#: es/es_provinces.py:7\nmsgid \"Alacant\"\nmsgstr \"Alicante\"\n\n#: es/es_provinces.py:8\nmsgid \"Almeria\"\nmsgstr \"Almería\"\n\n#: es/es_provinces.py:9\nmsgid \"Avila\"\nmsgstr \"Ávila\"\n\n#: es/es_provinces.py:10\nmsgid \"Badajoz\"\nmsgstr \"Badajoz\"\n\n#: es/es_provinces.py:11\nmsgid \"Illes Balears\"\nmsgstr \"Ilhas Baleares\"\n\n#: es/es_provinces.py:12\nmsgid \"Barcelona\"\nmsgstr \"Barcelona\"\n\n#: es/es_provinces.py:13\nmsgid \"Burgos\"\nmsgstr \"Burgos\"\n\n#: es/es_provinces.py:14\nmsgid \"Caceres\"\nmsgstr \"Cáceres\"\n\n#: es/es_provinces.py:15\nmsgid \"Cadiz\"\nmsgstr \"Cádiz\"\n\n#: es/es_provinces.py:16\nmsgid \"Castello\"\nmsgstr \"Castellón\"\n\n#: es/es_provinces.py:17\nmsgid \"Ciudad Real\"\nmsgstr \"Cidade Real\"\n\n#: es/es_provinces.py:18\nmsgid \"Cordoba\"\nmsgstr \"Córdoba\"\n\n#: es/es_provinces.py:19\nmsgid \"A Coruna\"\nmsgstr \"Corunha\"\n\n#: es/es_provinces.py:20\nmsgid \"Cuenca\"\nmsgstr \"Cuenca\"\n\n#: es/es_provinces.py:21\nmsgid \"Girona\"\nmsgstr \"Gerunda\"\n\n#: es/es_provinces.py:22\nmsgid \"Granada\"\nmsgstr \"Granada\"\n\n#: es/es_provinces.py:23\nmsgid \"Guadalajara\"\nmsgstr \"Guadalajara\"\n\n#: es/es_provinces.py:24\nmsgid \"Guipuzkoa\"\nmsgstr \"Guipúscoa\"\n\n#: es/es_provinces.py:25\nmsgid \"Huelva\"\nmsgstr \"Huelva\"\n\n#: es/es_provinces.py:26\nmsgid \"Huesca\"\nmsgstr \"Huesca\"\n\n#: es/es_provinces.py:27\nmsgid \"Jaen\"\nmsgstr \"Jaén\"\n\n#: es/es_provinces.py:28\nmsgid \"Leon\"\nmsgstr \"Leão\"\n\n#: es/es_provinces.py:29\nmsgid \"Lleida\"\nmsgstr \"Lérida\"\n\n#: es/es_provinces.py:30 es/es_regions.py:17\nmsgid \"La Rioja\"\nmsgstr \"La Rioja\"\n\n#: es/es_provinces.py:31\nmsgid \"Lugo\"\nmsgstr \"Lugo\"\n\n#: es/es_provinces.py:32 es/es_regions.py:18\nmsgid \"Madrid\"\nmsgstr \"Madrid\"\n\n#: es/es_provinces.py:33\nmsgid \"Malaga\"\nmsgstr \"Málaga\"\n\n#: es/es_provinces.py:34\nmsgid \"Murcia\"\nmsgstr \"Múrcia\"\n\n#: es/es_provinces.py:35\nmsgid \"Navarre\"\nmsgstr \"Navarra\"\n\n#: es/es_provinces.py:36\nmsgid \"Ourense\"\nmsgstr \"Ourense\"\n\n#: es/es_provinces.py:37\nmsgid \"Asturias\"\nmsgstr \"Astúrias\"\n\n#: es/es_provinces.py:38\nmsgid \"Palencia\"\nmsgstr \"Palência\"\n\n#: es/es_provinces.py:39\nmsgid \"Las Palmas\"\nmsgstr \"Las Palmas\"\n\n#: es/es_provinces.py:40\nmsgid \"Pontevedra\"\nmsgstr \"Pontevedra\"\n\n#: es/es_provinces.py:41\nmsgid \"Salamanca\"\nmsgstr \"Salamanca\"\n\n#: es/es_provinces.py:42\nmsgid \"Santa Cruz de Tenerife\"\nmsgstr \"Santa Cruz de Tenerife\"\n\n#: es/es_provinces.py:43 es/es_regions.py:11\nmsgid \"Cantabria\"\nmsgstr \"Cantábria\"\n\n#: es/es_provinces.py:44\nmsgid \"Segovia\"\nmsgstr \"Segóvia\"\n\n#: es/es_provinces.py:45\nmsgid \"Seville\"\nmsgstr \"Sevilhe\"\n\n#: es/es_provinces.py:46\nmsgid \"Soria\"\nmsgstr \"Sória\"\n\n#: es/es_provinces.py:47\nmsgid \"Tarragona\"\nmsgstr \"Tarragona\"\n\n#: es/es_provinces.py:48\nmsgid \"Teruel\"\nmsgstr \"Teruel\"\n\n#: es/es_provinces.py:49\nmsgid \"Toledo\"\nmsgstr \"Toledo\"\n\n#: es/es_provinces.py:50\nmsgid \"Valencia\"\nmsgstr \"Valência\"\n\n#: es/es_provinces.py:51\nmsgid \"Valladolid\"\nmsgstr \"Valladolid\"\n\n#: es/es_provinces.py:52\nmsgid \"Bizkaia\"\nmsgstr \"Biscaia\"\n\n#: es/es_provinces.py:53\nmsgid \"Zamora\"\nmsgstr \"Zamora\"\n\n#: es/es_provinces.py:54\nmsgid \"Zaragoza\"\nmsgstr \"Saragoça\"\n\n#: es/es_provinces.py:55\nmsgid \"Ceuta\"\nmsgstr \"Ceuta\"\n\n#: es/es_provinces.py:56\nmsgid \"Melilla\"\nmsgstr \"Melilha\"\n\n#: es/es_regions.py:5\nmsgid \"Andalusia\"\nmsgstr \"Andaluzia\"\n\n#: es/es_regions.py:6\nmsgid \"Aragon\"\nmsgstr \"Aragão\"\n\n#: es/es_regions.py:7\nmsgid \"Principality of Asturias\"\nmsgstr \"Principado das Astúrias\"\n\n#: es/es_regions.py:8\nmsgid \"Balearic Islands\"\nmsgstr \"Ilhas Baleares\"\n\n#: es/es_regions.py:9\nmsgid \"Basque Country\"\nmsgstr \"País Basco\"\n\n#: es/es_regions.py:10\nmsgid \"Canary Islands\"\nmsgstr \"Ilhas Canárias\"\n\n#: es/es_regions.py:12\nmsgid \"Castile-La Mancha\"\nmsgstr \"Castela-La Mancha\"\n\n#: es/es_regions.py:13\nmsgid \"Castile and Leon\"\nmsgstr \"Cestela e Leão\"\n\n#: es/es_regions.py:14\nmsgid \"Catalonia\"\nmsgstr \"Catalunha\"\n\n#: es/es_regions.py:15\nmsgid \"Extremadura\"\nmsgstr \"Extremadura\"\n\n#: es/es_regions.py:16\nmsgid \"Galicia\"\nmsgstr \"Galiza\"\n\n#: es/es_regions.py:19\nmsgid \"Region of Murcia\"\nmsgstr \"Região de Múrcia\"\n\n#: es/es_regions.py:20\nmsgid \"Foral Community of Navarre\"\nmsgstr \"Comunidade Foral de Navarra\"\n\n#: es/es_regions.py:21\nmsgid \"Valencian Community\"\nmsgstr \"Comunidade Valenciana\"\n\n#: es/forms.py:26\nmsgid \"Enter a valid postal code in the range and format 01XXX - 52XXX.\"\nmsgstr \"Informe um código postal válido no intervalo e formato 01XXX - 52XXX.\"\n\n#: es/forms.py:46\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or \"\n\"9XXXXXXXX.\"\nmsgstr \"\"\n\"Informe um número de telefone válido em um destes formatos 6XXXXXXXX, \"\n\"8XXXXXXXX ou 9XXXXXXXX.\"\n\n#: es/forms.py:73\nmsgid \"Please enter a valid NIF, NIE, or CIF.\"\nmsgstr \"Por favor, informe um NIF, NIE OU CIF válido.\"\n\n#: es/forms.py:74\nmsgid \"Please enter a valid NIF or NIE.\"\nmsgstr \"Por favor, informe um NIF ou FIE válido.\"\n\n#: es/forms.py:75\nmsgid \"Invalid checksum for NIF.\"\nmsgstr \"O NIF é incorreto.\"\n\n#: es/forms.py:76\nmsgid \"Invalid checksum for NIE.\"\nmsgstr \"O NIE é incorreto.\"\n\n#: es/forms.py:77\nmsgid \"Invalid checksum for CIF.\"\nmsgstr \"O CIF é incorreto.\"\n\n#: es/forms.py:149\nmsgid \"\"\n\"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.\"\nmsgstr \"\"\n\"Por favor, informe um número de conta bancária válida no formato XXXX-XXXX-\"\n\"XX-XXXXXXXXXX.\"\n\n#: es/forms.py:150\nmsgid \"Invalid checksum for bank account number.\"\nmsgstr \"Número de verificação de conta bancária incorreto.\"\n\n#: fi/forms.py:33\nmsgid \"Enter a valid Finnish social security number.\"\nmsgstr \"Informe um número de seguro social finlandês válido.\"\n\n#: fr/forms.py:35\nmsgid \"Phone numbers must be in 0X XX XX XX XX format.\"\nmsgstr \"Números de telefone devem estar no formato 0X XX XX XX XX.\"\n\n#: gb/forms.py:25\nmsgid \"Enter a valid postcode.\"\nmsgstr \"Informe um código postal válido.\"\n\n#: gb/gb_regions.py:11\nmsgid \"Bedfordshire\"\nmsgstr \"Bedfordshire\"\n\n#: gb/gb_regions.py:12\nmsgid \"Buckinghamshire\"\nmsgstr \"Buckinghamshire\"\n\n#: gb/gb_regions.py:14\nmsgid \"Cheshire\"\nmsgstr \"Cheshire\"\n\n#: gb/gb_regions.py:15\nmsgid \"Cornwall and Isles of Scilly\"\nmsgstr \"Cornualha e Ilhas Scilly\"\n\n#: gb/gb_regions.py:16\nmsgid \"Cumbria\"\nmsgstr \"Cúmbria\"\n\n#: gb/gb_regions.py:17\nmsgid \"Derbyshire\"\nmsgstr \"Derbyshire\"\n\n#: gb/gb_regions.py:18\nmsgid \"Devon\"\nmsgstr \"Devon\"\n\n#: gb/gb_regions.py:19\nmsgid \"Dorset\"\nmsgstr \"Dorset\"\n\n#: gb/gb_regions.py:20\nmsgid \"Durham\"\nmsgstr \"Durham\"\n\n#: gb/gb_regions.py:21\nmsgid \"East Sussex\"\nmsgstr \"Sussex Oriental\"\n\n#: gb/gb_regions.py:22\nmsgid \"Essex\"\nmsgstr \"Essex\"\n\n#: gb/gb_regions.py:23\nmsgid \"Gloucestershire\"\nmsgstr \"Gloucestershire\"\n\n#: gb/gb_regions.py:24\nmsgid \"Greater London\"\nmsgstr \"Grande Londres\"\n\n#: gb/gb_regions.py:25\nmsgid \"Greater Manchester\"\nmsgstr \"Grande Manchester\"\n\n#: gb/gb_regions.py:26\nmsgid \"Hampshire\"\nmsgstr \"Hampshire\"\n\n#: gb/gb_regions.py:27\nmsgid \"Hertfordshire\"\nmsgstr \"Hertfordshire\"\n\n#: gb/gb_regions.py:28\nmsgid \"Kent\"\nmsgstr \"Kent\"\n\n#: gb/gb_regions.py:29\nmsgid \"Lancashire\"\nmsgstr \"Lancashire\"\n\n#: gb/gb_regions.py:30\nmsgid \"Leicestershire\"\nmsgstr \"Leicestershire\"\n\n#: gb/gb_regions.py:31\nmsgid \"Lincolnshire\"\nmsgstr \"Lincolnshire\"\n\n#: gb/gb_regions.py:32\nmsgid \"Merseyside\"\nmsgstr \"Merseyside\"\n\n#: gb/gb_regions.py:33\nmsgid \"Norfolk\"\nmsgstr \"Norfolk\"\n\n#: gb/gb_regions.py:34\nmsgid \"North Yorkshire\"\nmsgstr \"North Yorkshire\"\n\n#: gb/gb_regions.py:35\nmsgid \"Northamptonshire\"\nmsgstr \"Northamptonshire\"\n\n#: gb/gb_regions.py:36\nmsgid \"Northumberland\"\nmsgstr \"Nortúmbria\"\n\n#: gb/gb_regions.py:37\nmsgid \"Nottinghamshire\"\nmsgstr \"Nottinghamshire\"\n\n#: gb/gb_regions.py:38\nmsgid \"Oxfordshire\"\nmsgstr \"Oxfordshire\"\n\n#: gb/gb_regions.py:39\nmsgid \"Shropshire\"\nmsgstr \"Shropshire\"\n\n#: gb/gb_regions.py:40\nmsgid \"Somerset\"\nmsgstr \"Somerset\"\n\n#: gb/gb_regions.py:41\nmsgid \"South Yorkshire\"\nmsgstr \"South Yorkshire\"\n\n#: gb/gb_regions.py:42\nmsgid \"Staffordshire\"\nmsgstr \"Staffordshire\"\n\n#: gb/gb_regions.py:43\nmsgid \"Suffolk\"\nmsgstr \"Suffolk\"\n\n#: gb/gb_regions.py:44\nmsgid \"Surrey\"\nmsgstr \"Surrey\"\n\n#: gb/gb_regions.py:45\nmsgid \"Tyne and Wear\"\nmsgstr \"Tyne and Wear\"\n\n#: gb/gb_regions.py:46\nmsgid \"Warwickshire\"\nmsgstr \"Warwickshire\"\n\n#: gb/gb_regions.py:47\nmsgid \"West Midlands\"\nmsgstr \"Midlands Ocidental\"\n\n#: gb/gb_regions.py:48\nmsgid \"West Sussex\"\nmsgstr \"Sussex Oriental\"\n\n#: gb/gb_regions.py:49\nmsgid \"West Yorkshire\"\nmsgstr \"West Yorkshire\"\n\n#: gb/gb_regions.py:50\nmsgid \"Wiltshire\"\nmsgstr \"Wiltshire\"\n\n#: gb/gb_regions.py:51\nmsgid \"Worcestershire\"\nmsgstr \"Worcestershire\"\n\n#: gb/gb_regions.py:55\nmsgid \"County Antrim\"\nmsgstr \"Distrito de Antrim\"\n\n#: gb/gb_regions.py:56\nmsgid \"County Armagh\"\nmsgstr \"Distrito de Armagh\"\n\n#: gb/gb_regions.py:57\nmsgid \"County Down\"\nmsgstr \"Distrito de Down\"\n\n#: gb/gb_regions.py:58\nmsgid \"County Fermanagh\"\nmsgstr \"Distrito de Fermanagh\"\n\n#: gb/gb_regions.py:59\nmsgid \"County Londonderry\"\nmsgstr \"Distrito de Derry\"\n\n#: gb/gb_regions.py:60\nmsgid \"County Tyrone\"\nmsgstr \"Distrito de Tyrone\"\n\n#: gb/gb_regions.py:64\nmsgid \"Clwyd\"\nmsgstr \"Clwyd\"\n\n#: gb/gb_regions.py:65\nmsgid \"Dyfed\"\nmsgstr \"Dyfed\"\n\n#: gb/gb_regions.py:66\nmsgid \"Gwent\"\nmsgstr \"Gwent\"\n\n#: gb/gb_regions.py:67\nmsgid \"Gwynedd\"\nmsgstr \"Gwynedd\"\n\n#: gb/gb_regions.py:68\nmsgid \"Mid Glamorgan\"\nmsgstr \"Mid Glamorgan\"\n\n#: gb/gb_regions.py:69\nmsgid \"Powys\"\nmsgstr \"Powys\"\n\n#: gb/gb_regions.py:70\nmsgid \"South Glamorgan\"\nmsgstr \"South Glamorgan\"\n\n#: gb/gb_regions.py:71\nmsgid \"West Glamorgan\"\nmsgstr \"West Glamorgan\"\n\n#: gb/gb_regions.py:75\nmsgid \"Borders\"\nmsgstr \"Borders\"\n\n#: gb/gb_regions.py:76\nmsgid \"Central Scotland\"\nmsgstr \"Central\"\n\n#: gb/gb_regions.py:77\nmsgid \"Dumfries and Galloway\"\nmsgstr \"Dumfries and Galloway\"\n\n#: gb/gb_regions.py:78\nmsgid \"Fife\"\nmsgstr \"Fife\"\n\n#: gb/gb_regions.py:79\nmsgid \"Grampian\"\nmsgstr \"Grampian\"\n\n#: gb/gb_regions.py:80\nmsgid \"Highland\"\nmsgstr \"Terras Altas\"\n\n#: gb/gb_regions.py:81\nmsgid \"Lothian\"\nmsgstr \"Lothian\"\n\n#: gb/gb_regions.py:82\nmsgid \"Orkney Islands\"\nmsgstr \"Órcades\"\n\n#: gb/gb_regions.py:83\nmsgid \"Shetland Islands\"\nmsgstr \"Ilhas Shetland\"\n\n#: gb/gb_regions.py:84\nmsgid \"Strathclyde\"\nmsgstr \"Strathclyde\"\n\n#: gb/gb_regions.py:85\nmsgid \"Tayside\"\nmsgstr \"Tayside\"\n\n#: gb/gb_regions.py:86\nmsgid \"Western Isles\"\nmsgstr \"Ilhas Ocidentais\"\n\n#: gb/gb_regions.py:90\nmsgid \"England\"\nmsgstr \"Inglaterra\"\n\n#: gb/gb_regions.py:91\nmsgid \"Northern Ireland\"\nmsgstr \"Irlanda do Norte\"\n\n#: gb/gb_regions.py:92\nmsgid \"Scotland\"\nmsgstr \"Escócia\"\n\n#: gb/gb_regions.py:93\nmsgid \"Wales\"\nmsgstr \"País de Gales\"\n\n#: hk/forms.py:37\n#, python-format\nmsgid \"Phone number should not start with one of the followings: %s.\"\nmsgstr \"Números de telefone não podem começar com nenhum dos seguintes: %s.\"\n\n#: hk/forms.py:40\n#, python-format\nmsgid \"Phone number must be in one of the following formats: %s.\"\nmsgstr \"Números de telefone precisam possuir um dos seguintes formatos: %s.\"\n\n#: hk/forms.py:42\n#, python-format\nmsgid \"Phone number should start with one of the followings: %s.\"\nmsgstr \"Número de telefone deve começar com um dos seguintes: %s.\"\n\n#: hr/forms.py:76\nmsgid \"Enter a valid 13 digit JMBG\"\nmsgstr \"Digite um JMBG de 13 dígitos válido\"\n\n#: hr/forms.py:77\nmsgid \"Error in date segment\"\nmsgstr \"Erro no segmento de data\"\n\n#: hr/forms.py:123\nmsgid \"Enter a valid 11 digit OIB\"\nmsgstr \"Digite um OIB de 11 dígitos válido\"\n\n#: hr/forms.py:152 id/forms.py:112\nmsgid \"Enter a valid vehicle license plate number\"\nmsgstr \"Informe uma placa de licença de veículo válida.\"\n\n#: hr/forms.py:153\nmsgid \"Enter a valid location code\"\nmsgstr \"Informe um código de localização válido\"\n\n#: hr/forms.py:154\nmsgid \"Number part cannot be zero\"\nmsgstr \"N'umero não pode ser zero\"\n\n#: hr/forms.py:190\nmsgid \"Enter a valid 5 digit postal code\"\nmsgstr \"Informe um código postal de 5 dígitos válido\"\n\n#: hr/forms.py:218 id/forms.py:72 nl/forms.py:56\nmsgid \"Enter a valid phone number\"\nmsgstr \"Informe um número de telefone válido.\"\n\n#: hr/forms.py:219\nmsgid \"Enter a valid area or mobile network code\"\nmsgstr \"Insira uma área válida ou um código de rede de celular\"\n\n#: hr/forms.py:220\nmsgid \"The phone nubmer is too long\"\nmsgstr \"O número de telefone é muito longo\"\n\n#: hr/forms.py:258\nmsgid \"Enter a valid 19 digit JMBAG starting with 601983\"\nmsgstr \"Insira um valor JMBAG de 19 dígitos válido começando com 601983\"\n\n#: hr/forms.py:259\nmsgid \"Card issue number cannot be zero\"\nmsgstr \"Número de emissão do cartão não pode ser zero\"\n\n#: hr/hr_choices.py:14\nmsgid \"Grad Zagreb\"\nmsgstr \"Grad Zagreb\"\n\n#: hr/hr_choices.py:15\nmsgid \"Bjelovarsko-bilogorska županija\"\nmsgstr \"Bjelovarsko-bilogorska županija\"\n\n#: hr/hr_choices.py:16\nmsgid \"Brodsko-posavska županija\"\nmsgstr \"Brodsko-posavska županija\"\n\n#: hr/hr_choices.py:17\nmsgid \"Dubrovačko-neretvanska županija\"\nmsgstr \"Dubrovačko-neretvanska županija\"\n\n#: hr/hr_choices.py:18\nmsgid \"Istarska županija\"\nmsgstr \"Istarska županija\"\n\n#: hr/hr_choices.py:19\nmsgid \"Karlovačka županija\"\nmsgstr \"Karlovačka županija\"\n\n#: hr/hr_choices.py:20\nmsgid \"Koprivničko-križevačka županija\"\nmsgstr \"Koprivničko-križevačka županija\"\n\n#: hr/hr_choices.py:21\nmsgid \"Krapinsko-zagorska županija\"\nmsgstr \"Krapinsko-zagorska županija\"\n\n#: hr/hr_choices.py:22\nmsgid \"Ličko-senjska županija\"\nmsgstr \"Ličko-senjska županija\"\n\n#: hr/hr_choices.py:23\nmsgid \"Međimurska županija\"\nmsgstr \"Međimurska županija\"\n\n#: hr/hr_choices.py:24\nmsgid \"Osječko-baranjska županija\"\nmsgstr \"Osječko-baranjska županija\"\n\n#: hr/hr_choices.py:25\nmsgid \"Požeško-slavonska županija\"\nmsgstr \"Požeško-slavonska županija\"\n\n#: hr/hr_choices.py:26\nmsgid \"Primorsko-goranska županija\"\nmsgstr \"Primorsko-goranska županija\"\n\n#: hr/hr_choices.py:27\nmsgid \"Sisačko-moslavačka županija\"\nmsgstr \"Sisačko-moslavačka županija\"\n\n#: hr/hr_choices.py:28\nmsgid \"Splitsko-dalmatinska županija\"\nmsgstr \"Splitsko-dalmatinska županija\"\n\n#: hr/hr_choices.py:29\nmsgid \"Šibensko-kninska županija\"\nmsgstr \"Šibensko-kninska županija\"\n\n#: hr/hr_choices.py:30\nmsgid \"Varaždinska županija\"\nmsgstr \"Varaždinska županija\"\n\n#: hr/hr_choices.py:31\nmsgid \"Virovitičko-podravska županija\"\nmsgstr \"Virovitičko-podravska županija\"\n\n#: hr/hr_choices.py:32\nmsgid \"Vukovarsko-srijemska županija\"\nmsgstr \"Vukovarsko-srijemska županija\"\n\n#: hr/hr_choices.py:33\nmsgid \"Zadarska županija\"\nmsgstr \"Zadarska županija\"\n\n#: hr/hr_choices.py:34\nmsgid \"Zagrebačka županija\"\nmsgstr \"Zagrebačka županija\"\n\n#: id/forms.py:31\nmsgid \"Enter a valid post code\"\nmsgstr \"Informe um código postal válido.\"\n\n#: id/forms.py:176\nmsgid \"Enter a valid NIK/KTP number\"\nmsgstr \"Informe um número NIK/KTP válido.\"\n\n#: id/id_choices.py:15\nmsgid \"Aceh\"\nmsgstr \"Achém\"\n\n#: id/id_choices.py:16 id/id_choices.py:79\nmsgid \"Bali\"\nmsgstr \"Bali\"\n\n#: id/id_choices.py:17 id/id_choices.py:51\nmsgid \"Banten\"\nmsgstr \"Banten\"\n\n#: id/id_choices.py:18 id/id_choices.py:60\nmsgid \"Bengkulu\"\nmsgstr \"Bengkulu\"\n\n#: id/id_choices.py:19 id/id_choices.py:53\nmsgid \"Yogyakarta\"\nmsgstr \"Yogyakarta\"\n\n#: id/id_choices.py:20 id/id_choices.py:57\nmsgid \"Jakarta\"\nmsgstr \"Jacarta\"\n\n#: id/id_choices.py:21 id/id_choices.py:81\nmsgid \"Gorontalo\"\nmsgstr \"Gorontalo\"\n\n#: id/id_choices.py:22 id/id_choices.py:63\nmsgid \"Jambi\"\nmsgstr \"Jambi\"\n\n#: id/id_choices.py:23\nmsgid \"Jawa Barat\"\nmsgstr \"Java Ocidental\"\n\n#: id/id_choices.py:24\nmsgid \"Jawa Tengah\"\nmsgstr \"Java Central\"\n\n#: id/id_choices.py:25\nmsgid \"Jawa Timur\"\nmsgstr \"Java Oriental\"\n\n#: id/id_choices.py:26 id/id_choices.py:94\nmsgid \"Kalimantan Barat\"\nmsgstr \"Kalimantan Ocicental\"\n\n#: id/id_choices.py:27 id/id_choices.py:72\nmsgid \"Kalimantan Selatan\"\nmsgstr \"Kalimantan do Sul\"\n\n#: id/id_choices.py:28 id/id_choices.py:95\nmsgid \"Kalimantan Tengah\"\nmsgstr \"Kalimantan Central\"\n\n#: id/id_choices.py:29 id/id_choices.py:96\nmsgid \"Kalimantan Timur\"\nmsgstr \"Kalimantan Oriental\"\n\n#: id/id_choices.py:30\nmsgid \"Kepulauan Bangka-Belitung\"\nmsgstr \"Ilhas Bangka-Belitung\"\n\n#: id/id_choices.py:31 id/id_choices.py:68\nmsgid \"Kepulauan Riau\"\nmsgstr \"Ilhas Riau\"\n\n#: id/id_choices.py:32 id/id_choices.py:61\nmsgid \"Lampung\"\nmsgstr \"Lampung\"\n\n#: id/id_choices.py:33 id/id_choices.py:76\nmsgid \"Maluku\"\nmsgstr \"Molucas\"\n\n#: id/id_choices.py:34 id/id_choices.py:77\nmsgid \"Maluku Utara\"\nmsgstr \"Molucas do Norte\"\n\n#: id/id_choices.py:35\nmsgid \"Nusa Tenggara Barat\"\nmsgstr \"Sonda Ocidental\"\n\n#: id/id_choices.py:36\nmsgid \"Nusa Tenggara Timur\"\nmsgstr \"Sonda Oriental\"\n\n#: id/id_choices.py:37\nmsgid \"Papua\"\nmsgstr \"Papua\"\n\n#: id/id_choices.py:38\nmsgid \"Papua Barat\"\nmsgstr \"Papua Ocidental\"\n\n#: id/id_choices.py:39 id/id_choices.py:66\nmsgid \"Riau\"\nmsgstr \"Riau\"\n\n#: id/id_choices.py:40 id/id_choices.py:74\nmsgid \"Sulawesi Barat\"\nmsgstr \"Celebes Ocidental\"\n\n#: id/id_choices.py:41 id/id_choices.py:75\nmsgid \"Sulawesi Selatan\"\nmsgstr \"Celebes do Sul\"\n\n#: id/id_choices.py:42 id/id_choices.py:82\nmsgid \"Sulawesi Tengah\"\nmsgstr \"Celebes Central\"\n\n#: id/id_choices.py:43 id/id_choices.py:85\nmsgid \"Sulawesi Tenggara\"\nmsgstr \"Celebes do Sudeste\"\n\n#: id/id_choices.py:44\nmsgid \"Sulawesi Utara\"\nmsgstr \"Celebes do Norte\"\n\n#: id/id_choices.py:45 id/id_choices.py:58\nmsgid \"Sumatera Barat\"\nmsgstr \"Sumatra Ocidental\"\n\n#: id/id_choices.py:46 id/id_choices.py:62\nmsgid \"Sumatera Selatan\"\nmsgstr \"Sumatra do Sul\"\n\n#: id/id_choices.py:47 id/id_choices.py:64\nmsgid \"Sumatera Utara\"\nmsgstr \"Sumatra do Norte\"\n\n#: id/id_choices.py:52\nmsgid \"Magelang\"\nmsgstr \"Magelang\"\n\n#: id/id_choices.py:54\nmsgid \"Surakarta - Solo\"\nmsgstr \"Surakarta - Solo\"\n\n#: id/id_choices.py:55\nmsgid \"Madiun\"\nmsgstr \"Madiun\"\n\n#: id/id_choices.py:56\nmsgid \"Kediri\"\nmsgstr \"Kediri\"\n\n#: id/id_choices.py:59\nmsgid \"Tapanuli\"\nmsgstr \"Tapanuli\"\n\n#: id/id_choices.py:65\nmsgid \"Nanggroe Aceh Darussalam\"\nmsgstr \"Achém\"\n\n#: id/id_choices.py:67\nmsgid \"Kepulauan Bangka Belitung\"\nmsgstr \"Ilhas Bangka Belitung\"\n\n#: id/id_choices.py:69\nmsgid \"Corps Consulate\"\nmsgstr \"Corpo Consulado\"\n\n#: id/id_choices.py:70\nmsgid \"Corps Diplomatic\"\nmsgstr \"Corpo Diplomático\"\n\n#: id/id_choices.py:71\nmsgid \"Bandung\"\nmsgstr \"Bandung\"\n\n#: id/id_choices.py:73\nmsgid \"Sulawesi Utara Daratan\"\nmsgstr \"Norte do Continente\"\n\n#: id/id_choices.py:78\nmsgid \"NTT - Timor\"\nmsgstr \"NTT - Timor\"\n\n#: id/id_choices.py:80\nmsgid \"Sulawesi Utara Kepulauan\"\nmsgstr \"Ilhas Sulawesi do Norte\"\n\n#: id/id_choices.py:83\nmsgid \"NTB - Lombok\"\nmsgstr \"NTB - Lombok\"\n\n#: id/id_choices.py:84\nmsgid \"Papua dan Papua Barat\"\nmsgstr \"Papua e Papua Ocidental\"\n\n#: id/id_choices.py:86\nmsgid \"Cirebon\"\nmsgstr \"Cirebon\"\n\n#: id/id_choices.py:87\nmsgid \"NTB - Sumbawa\"\nmsgstr \"NTB - Sumbawa\"\n\n#: id/id_choices.py:88\nmsgid \"NTT - Flores\"\nmsgstr \"NTT - Flores\"\n\n#: id/id_choices.py:89\nmsgid \"NTT - Sumba\"\nmsgstr \"NTT - Sumba\"\n\n#: id/id_choices.py:90\nmsgid \"Bogor\"\nmsgstr \"Bogor\"\n\n#: id/id_choices.py:91\nmsgid \"Pekalongan\"\nmsgstr \"Pekalongan\"\n\n#: id/id_choices.py:92\nmsgid \"Semarang\"\nmsgstr \"Semarang\"\n\n#: id/id_choices.py:93\nmsgid \"Pati\"\nmsgstr \"Pati\"\n\n#: id/id_choices.py:97\nmsgid \"Surabaya\"\nmsgstr \"Surubaia\"\n\n#: id/id_choices.py:98\nmsgid \"Madura\"\nmsgstr \"Madura\"\n\n#: id/id_choices.py:99\nmsgid \"Malang\"\nmsgstr \"Malang\"\n\n#: id/id_choices.py:100\nmsgid \"Jember\"\nmsgstr \"Jember\"\n\n#: id/id_choices.py:101\nmsgid \"Banyumas\"\nmsgstr \"Banyumas\"\n\n#: id/id_choices.py:102\nmsgid \"Federal Government\"\nmsgstr \"Governo Federal\"\n\n#: id/id_choices.py:103\nmsgid \"Bojonegoro\"\nmsgstr \"Bojonegoro\"\n\n#: id/id_choices.py:104\nmsgid \"Purwakarta\"\nmsgstr \"Purwakarta\"\n\n#: id/id_choices.py:105\nmsgid \"Sidoarjo\"\nmsgstr \"Sidoarjo\"\n\n#: id/id_choices.py:106\nmsgid \"Garut\"\nmsgstr \"Garut\"\n\n#: ie/ie_counties.py:8\nmsgid \"Antrim\"\nmsgstr \"Antrim\"\n\n#: ie/ie_counties.py:9\nmsgid \"Armagh\"\nmsgstr \"Armagh\"\n\n#: ie/ie_counties.py:10\nmsgid \"Carlow\"\nmsgstr \"Carlow\"\n\n#: ie/ie_counties.py:11\nmsgid \"Cavan\"\nmsgstr \"Cavan\"\n\n#: ie/ie_counties.py:12\nmsgid \"Clare\"\nmsgstr \"Clare\"\n\n#: ie/ie_counties.py:13\nmsgid \"Cork\"\nmsgstr \"Cork\"\n\n#: ie/ie_counties.py:14\nmsgid \"Derry\"\nmsgstr \"Derry\"\n\n#: ie/ie_counties.py:15\nmsgid \"Donegal\"\nmsgstr \"Donegal\"\n\n#: ie/ie_counties.py:16\nmsgid \"Down\"\nmsgstr \"Down\"\n\n#: ie/ie_counties.py:17\nmsgid \"Dublin\"\nmsgstr \"Dublin\"\n\n#: ie/ie_counties.py:18\nmsgid \"Fermanagh\"\nmsgstr \"Fermanagh\"\n\n#: ie/ie_counties.py:19\nmsgid \"Galway\"\nmsgstr \"Galway\"\n\n#: ie/ie_counties.py:20\nmsgid \"Kerry\"\nmsgstr \"Kerry\"\n\n#: ie/ie_counties.py:21\nmsgid \"Kildare\"\nmsgstr \"Kildare\"\n\n#: ie/ie_counties.py:22\nmsgid \"Kilkenny\"\nmsgstr \"Kilkenny\"\n\n#: ie/ie_counties.py:23\nmsgid \"Laois\"\nmsgstr \"Laois\"\n\n#: ie/ie_counties.py:24\nmsgid \"Leitrim\"\nmsgstr \"Leitrim\"\n\n#: ie/ie_counties.py:25\nmsgid \"Limerick\"\nmsgstr \"Limerick\"\n\n#: ie/ie_counties.py:26\nmsgid \"Longford\"\nmsgstr \"Longford\"\n\n#: ie/ie_counties.py:27\nmsgid \"Louth\"\nmsgstr \"Louth\"\n\n#: ie/ie_counties.py:28\nmsgid \"Mayo\"\nmsgstr \"Mayo\"\n\n#: ie/ie_counties.py:29\nmsgid \"Meath\"\nmsgstr \"Meath\"\n\n#: ie/ie_counties.py:30\nmsgid \"Monaghan\"\nmsgstr \"Monaghan\"\n\n#: ie/ie_counties.py:31\nmsgid \"Offaly\"\nmsgstr \"Offaly\"\n\n#: ie/ie_counties.py:32\nmsgid \"Roscommon\"\nmsgstr \"Roscommon\"\n\n#: ie/ie_counties.py:33\nmsgid \"Sligo\"\nmsgstr \"Sligo\"\n\n#: ie/ie_counties.py:34\nmsgid \"Tipperary\"\nmsgstr \"Tipperary\"\n\n#: ie/ie_counties.py:35\nmsgid \"Tyrone\"\nmsgstr \"Tyrone\"\n\n#: ie/ie_counties.py:36\nmsgid \"Waterford\"\nmsgstr \"Waterford\"\n\n#: ie/ie_counties.py:37\nmsgid \"Westmeath\"\nmsgstr \"Westmeath\"\n\n#: ie/ie_counties.py:38\nmsgid \"Wexford\"\nmsgstr \"Wexford\"\n\n#: ie/ie_counties.py:39\nmsgid \"Wicklow\"\nmsgstr \"Wicklow\"\n\n#: il/forms.py:32\nmsgid \"Enter a postal code in the format XXXXX\"\nmsgstr \"Introduza um código postal no formato XXXXX\"\n\n#: il/forms.py:51\nmsgid \"Enter a valid ID number.\"\nmsgstr \"Digite um número de ID válido.\"\n\n#: in_/forms.py:41\nmsgid \"Enter a zip code in the format XXXXXX or XXX XXX.\"\nmsgstr \"Insira um CEP no formato XXXXXX ou XXX XXX.\"\n\n#: in_/forms.py:64\nmsgid \"Enter an Indian state or territory.\"\nmsgstr \"Informe um estado ou território Indiano.\"\n\n#: in_/forms.py:103\nmsgid \"Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.\"\nmsgstr \"\"\n\"Os números de telefone devem estar no formato 02X-8X ou 03X-7X ou 04X-6X.\"\n\n#: is_/forms.py:22\nmsgid \"\"\n\"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.\"\nmsgstr \"Informe um número de identificação islandês válido.\"\n\n#: is_/forms.py:23\nmsgid \"The Icelandic identification number is not valid.\"\nmsgstr \"O número de identificação islandês não é válido.\"\n\n#: it/forms.py:21\nmsgid \"Enter a valid zip code.\"\nmsgstr \"Informe um código postal válido.\"\n\n#: it/forms.py:48\nmsgid \"Enter a valid Social Security number.\"\nmsgstr \"Informe um número de Segurança Social válido.\"\n\n#: it/forms.py:73\nmsgid \"Enter a valid VAT number.\"\nmsgstr \"Informe um número IVA válido.\"\n\n#: jp/forms.py:19\nmsgid \"Enter a postal code in the format XXXXXXX or XXX-XXXX.\"\nmsgstr \"Informe um código postal no formato XXXXXXX ou XXX-XXXX.\"\n\n#: jp/jp_prefectures.py:4\nmsgid \"Hokkaido\"\nmsgstr \"Hokkaido\"\n\n#: jp/jp_prefectures.py:5\nmsgid \"Aomori\"\nmsgstr \"Aomori\"\n\n#: jp/jp_prefectures.py:6\nmsgid \"Iwate\"\nmsgstr \"Iwate\"\n\n#: jp/jp_prefectures.py:7\nmsgid \"Miyagi\"\nmsgstr \"Miyagi\"\n\n#: jp/jp_prefectures.py:8\nmsgid \"Akita\"\nmsgstr \"Akita\"\n\n#: jp/jp_prefectures.py:9\nmsgid \"Yamagata\"\nmsgstr \"Yamagata\"\n\n#: jp/jp_prefectures.py:10\nmsgid \"Fukushima\"\nmsgstr \"Fukushima\"\n\n#: jp/jp_prefectures.py:11\nmsgid \"Ibaraki\"\nmsgstr \"Ibaraki\"\n\n#: jp/jp_prefectures.py:12\nmsgid \"Tochigi\"\nmsgstr \"Tochigi\"\n\n#: jp/jp_prefectures.py:13\nmsgid \"Gunma\"\nmsgstr \"Gunma\"\n\n#: jp/jp_prefectures.py:14\nmsgid \"Saitama\"\nmsgstr \"Saitama\"\n\n#: jp/jp_prefectures.py:15\nmsgid \"Chiba\"\nmsgstr \"Chiba\"\n\n#: jp/jp_prefectures.py:16\nmsgid \"Tokyo\"\nmsgstr \"Tóquio\"\n\n#: jp/jp_prefectures.py:17\nmsgid \"Kanagawa\"\nmsgstr \"Kanagawa\"\n\n#: jp/jp_prefectures.py:18\nmsgid \"Yamanashi\"\nmsgstr \"Yamanashi\"\n\n#: jp/jp_prefectures.py:19\nmsgid \"Nagano\"\nmsgstr \"Nagano\"\n\n#: jp/jp_prefectures.py:20\nmsgid \"Niigata\"\nmsgstr \"Niigata\"\n\n#: jp/jp_prefectures.py:21\nmsgid \"Toyama\"\nmsgstr \"Toyama\"\n\n#: jp/jp_prefectures.py:22\nmsgid \"Ishikawa\"\nmsgstr \"Ishikawa\"\n\n#: jp/jp_prefectures.py:23\nmsgid \"Fukui\"\nmsgstr \"Fukui\"\n\n#: jp/jp_prefectures.py:24\nmsgid \"Gifu\"\nmsgstr \"Gifu\"\n\n#: jp/jp_prefectures.py:25\nmsgid \"Shizuoka\"\nmsgstr \"Shizuoka\"\n\n#: jp/jp_prefectures.py:26\nmsgid \"Aichi\"\nmsgstr \"Aichi\"\n\n#: jp/jp_prefectures.py:27\nmsgid \"Mie\"\nmsgstr \"Mie\"\n\n#: jp/jp_prefectures.py:28\nmsgid \"Shiga\"\nmsgstr \"Shiga\"\n\n#: jp/jp_prefectures.py:29\nmsgid \"Kyoto\"\nmsgstr \"Quioto\"\n\n#: jp/jp_prefectures.py:30\nmsgid \"Osaka\"\nmsgstr \"Osaca\"\n\n#: jp/jp_prefectures.py:31\nmsgid \"Hyogo\"\nmsgstr \"Hyogo\"\n\n#: jp/jp_prefectures.py:32\nmsgid \"Nara\"\nmsgstr \"Nara\"\n\n#: jp/jp_prefectures.py:33\nmsgid \"Wakayama\"\nmsgstr \"Wakayama\"\n\n#: jp/jp_prefectures.py:34\nmsgid \"Tottori\"\nmsgstr \"Tottori\"\n\n#: jp/jp_prefectures.py:35\nmsgid \"Shimane\"\nmsgstr \"Shimane\"\n\n#: jp/jp_prefectures.py:36\nmsgid \"Okayama\"\nmsgstr \"Okayama\"\n\n#: jp/jp_prefectures.py:37\nmsgid \"Hiroshima\"\nmsgstr \"Hiroshima\"\n\n#: jp/jp_prefectures.py:38\nmsgid \"Yamaguchi\"\nmsgstr \"Yamaguchi\"\n\n#: jp/jp_prefectures.py:39\nmsgid \"Tokushima\"\nmsgstr \"Tokushima\"\n\n#: jp/jp_prefectures.py:40\nmsgid \"Kagawa\"\nmsgstr \"Kagawa\"\n\n#: jp/jp_prefectures.py:41\nmsgid \"Ehime\"\nmsgstr \"Ehime\"\n\n#: jp/jp_prefectures.py:42\nmsgid \"Kochi\"\nmsgstr \"Kochi\"\n\n#: jp/jp_prefectures.py:43\nmsgid \"Fukuoka\"\nmsgstr \"Fukuoka\"\n\n#: jp/jp_prefectures.py:44\nmsgid \"Saga\"\nmsgstr \"Saga\"\n\n#: jp/jp_prefectures.py:45\nmsgid \"Nagasaki\"\nmsgstr \"Nagasaki\"\n\n#: jp/jp_prefectures.py:46\nmsgid \"Kumamoto\"\nmsgstr \"Kumamoto\"\n\n#: jp/jp_prefectures.py:47\nmsgid \"Oita\"\nmsgstr \"Oita\"\n\n#: jp/jp_prefectures.py:48\nmsgid \"Miyazaki\"\nmsgstr \"Miyazaki\"\n\n#: jp/jp_prefectures.py:49\nmsgid \"Kagoshima\"\nmsgstr \"Kagoshima\"\n\n#: jp/jp_prefectures.py:50\nmsgid \"Okinawa\"\nmsgstr \"Okinawa\"\n\n#: kw/forms.py:27\nmsgid \"Enter a valid Kuwaiti Civil ID number\"\nmsgstr \"Informe um ID Civil Kuwaitiano válido.\"\n\n#: mk/forms.py:18\nmsgid \"\"\n\"Identity card numbers must contain either 4 to 7 digits or an uppercase \"\n\"letter and 7 digits.\"\nmsgstr \"\"\n\"Números de cartão de identidade deve conter de 4 a 7 dígitos ou uma letra \"\n\"maiúscula e 7 dígitos.\"\n\n#: mk/forms.py:57 si/forms.py:24\nmsgid \"This field should contain exactly 13 digits.\"\nmsgstr \"Este campo deve conter exatamente 13 dígitos.\"\n\n#: mk/forms.py:58\nmsgid \"The first 7 digits of the UMCN must represent a valid past date.\"\nmsgstr \"\"\n\"Os 7 primeiros dígitos do UMCN devem representar uma data no passado válida.\"\n\n#: mk/forms.py:59\nmsgid \"The UMCN is not valid.\"\nmsgstr \"O UMCN não é válido.\"\n\n#: mk/mk_choices.py:10\nmsgid \"Aerodrom\"\nmsgstr \"Aerodrom\"\n\n#: mk/mk_choices.py:11\nmsgid \"Aračinovo\"\nmsgstr \"Aračinovo\"\n\n#: mk/mk_choices.py:12\nmsgid \"Berovo\"\nmsgstr \"Berovo\"\n\n#: mk/mk_choices.py:13\nmsgid \"Bitola\"\nmsgstr \"Bitola\"\n\n#: mk/mk_choices.py:14\nmsgid \"Bogdanci\"\nmsgstr \"Bogdanci\"\n\n#: mk/mk_choices.py:15\nmsgid \"Bogovinje\"\nmsgstr \"Bogovinje\"\n\n#: mk/mk_choices.py:16\nmsgid \"Bosilovo\"\nmsgstr \"Bosilovo\"\n\n#: mk/mk_choices.py:17\nmsgid \"Brvenica\"\nmsgstr \"Brvenica\"\n\n#: mk/mk_choices.py:18\nmsgid \"Butel\"\nmsgstr \"Butel\"\n\n#: mk/mk_choices.py:19\nmsgid \"Valandovo\"\nmsgstr \"Valandovo\"\n\n#: mk/mk_choices.py:20\nmsgid \"Vasilevo\"\nmsgstr \"Vasilevo\"\n\n#: mk/mk_choices.py:21\nmsgid \"Vevčani\"\nmsgstr \"Vevčani\"\n\n#: mk/mk_choices.py:22\nmsgid \"Veles\"\nmsgstr \"Veles\"\n\n#: mk/mk_choices.py:23\nmsgid \"Vinica\"\nmsgstr \"Vinica\"\n\n#: mk/mk_choices.py:24\nmsgid \"Vraneštica\"\nmsgstr \"Vraneštica\"\n\n#: mk/mk_choices.py:25\nmsgid \"Vrapčište\"\nmsgstr \"Vrapčište\"\n\n#: mk/mk_choices.py:26\nmsgid \"Gazi Baba\"\nmsgstr \"Gazi Baba\"\n\n#: mk/mk_choices.py:27\nmsgid \"Gevgelija\"\nmsgstr \"Gevgelija\"\n\n#: mk/mk_choices.py:28\nmsgid \"Gostivar\"\nmsgstr \"Gostivar\"\n\n#: mk/mk_choices.py:29\nmsgid \"Gradsko\"\nmsgstr \"Gradsko\"\n\n#: mk/mk_choices.py:30\nmsgid \"Debar\"\nmsgstr \"\"\n\"Os números de telefone devem estar no formato 02X-8X ou 03X-7X ou 04X-6X.\"\n\n#: mk/mk_choices.py:31\nmsgid \"Debarca\"\nmsgstr \"Debarca\"\n\n#: mk/mk_choices.py:32\nmsgid \"Delčevo\"\nmsgstr \"Delčevo\"\n\n#: mk/mk_choices.py:33\nmsgid \"Demir Kapija\"\nmsgstr \"Demir Kapija\"\n\n#: mk/mk_choices.py:34\nmsgid \"Demir Hisar\"\nmsgstr \"Demir Hisar\"\n\n#: mk/mk_choices.py:35\nmsgid \"Dolneni\"\nmsgstr \"Dolneni\"\n\n#: mk/mk_choices.py:36\nmsgid \"Drugovo\"\nmsgstr \"Drugovo\"\n\n#: mk/mk_choices.py:37\nmsgid \"Gjorče Petrov\"\nmsgstr \"Gjorče Petrov\"\n\n#: mk/mk_choices.py:38\nmsgid \"Želino\"\nmsgstr \"Želino\"\n\n#: mk/mk_choices.py:39\nmsgid \"Zajas\"\nmsgstr \"Zajas\"\n\n#: mk/mk_choices.py:40\nmsgid \"Zelenikovo\"\nmsgstr \"Zelenikovo\"\n\n#: mk/mk_choices.py:41\nmsgid \"Zrnovci\"\nmsgstr \"Zrnovci\"\n\n#: mk/mk_choices.py:42\nmsgid \"Ilinden\"\nmsgstr \"Ilinden\"\n\n#: mk/mk_choices.py:43\nmsgid \"Jegunovce\"\nmsgstr \"Jegunovce\"\n\n#: mk/mk_choices.py:44\nmsgid \"Kavadarci\"\nmsgstr \"Kavadarci\"\n\n#: mk/mk_choices.py:45\nmsgid \"Karbinci\"\nmsgstr \"Karbinci\"\n\n#: mk/mk_choices.py:46\nmsgid \"Karpoš\"\nmsgstr \"Karpoš\"\n\n#: mk/mk_choices.py:47\nmsgid \"Kisela Voda\"\nmsgstr \"Kisela Voda\"\n\n#: mk/mk_choices.py:48\nmsgid \"Kičevo\"\nmsgstr \"Kičevo\"\n\n#: mk/mk_choices.py:49\nmsgid \"Konče\"\nmsgstr \"Konče\"\n\n#: mk/mk_choices.py:50\nmsgid \"Koćani\"\nmsgstr \"Koćani\"\n\n#: mk/mk_choices.py:51\nmsgid \"Kratovo\"\nmsgstr \"Kratovo\"\n\n#: mk/mk_choices.py:52\nmsgid \"Kriva Palanka\"\nmsgstr \"Kriva Palanka\"\n\n#: mk/mk_choices.py:53\nmsgid \"Krivogaštani\"\nmsgstr \"Krivogaštani\"\n\n#: mk/mk_choices.py:54\nmsgid \"Kruševo\"\nmsgstr \"Kruševo\"\n\n#: mk/mk_choices.py:55\nmsgid \"Kumanovo\"\nmsgstr \"Kumanovo\"\n\n#: mk/mk_choices.py:56\nmsgid \"Lipkovo\"\nmsgstr \"Lipkovo\"\n\n#: mk/mk_choices.py:57\nmsgid \"Lozovo\"\nmsgstr \"Lozovo\"\n\n#: mk/mk_choices.py:58\nmsgid \"Mavrovo i Rostuša\"\nmsgstr \"Mavrovo i Rostuša\"\n\n#: mk/mk_choices.py:59\nmsgid \"Makedonska Kamenica\"\nmsgstr \"Makedonska Kamenica\"\n\n#: mk/mk_choices.py:60\nmsgid \"Makedonski Brod\"\nmsgstr \"Makedonski Brod\"\n\n#: mk/mk_choices.py:61\nmsgid \"Mogila\"\nmsgstr \"Mogila\"\n\n#: mk/mk_choices.py:62\nmsgid \"Negotino\"\nmsgstr \"Negotino\"\n\n#: mk/mk_choices.py:63\nmsgid \"Novaci\"\nmsgstr \"Novaci\"\n\n#: mk/mk_choices.py:64\nmsgid \"Novo Selo\"\nmsgstr \"Novo Selo\"\n\n#: mk/mk_choices.py:65\nmsgid \"Oslomej\"\nmsgstr \"Oslomej\"\n\n#: mk/mk_choices.py:66\nmsgid \"Ohrid\"\nmsgstr \"Ohrid\"\n\n#: mk/mk_choices.py:67\nmsgid \"Petrovec\"\nmsgstr \"Petrovec\"\n\n#: mk/mk_choices.py:68\nmsgid \"Pehčevo\"\nmsgstr \"Pehčevo\"\n\n#: mk/mk_choices.py:69\nmsgid \"Plasnica\"\nmsgstr \"Plasnica\"\n\n#: mk/mk_choices.py:70\nmsgid \"Prilep\"\nmsgstr \"Prilep\"\n\n#: mk/mk_choices.py:71\nmsgid \"Probištip\"\nmsgstr \"Probištip\"\n\n#: mk/mk_choices.py:72\nmsgid \"Radoviš\"\nmsgstr \"Radoviš\"\n\n#: mk/mk_choices.py:73\nmsgid \"Rankovce\"\nmsgstr \"Rankovce\"\n\n#: mk/mk_choices.py:74\nmsgid \"Resen\"\nmsgstr \"Resen\"\n\n#: mk/mk_choices.py:75\nmsgid \"Rosoman\"\nmsgstr \"Rosoman\"\n\n#: mk/mk_choices.py:76\nmsgid \"Saraj\"\nmsgstr \"Saraj\"\n\n#: mk/mk_choices.py:77\nmsgid \"Sveti Nikole\"\nmsgstr \"Sveti Nikole\"\n\n#: mk/mk_choices.py:78\nmsgid \"Sopište\"\nmsgstr \"Sopište\"\n\n#: mk/mk_choices.py:79\nmsgid \"Star Dojran\"\nmsgstr \"Star Dojran\"\n\n#: mk/mk_choices.py:80\nmsgid \"Staro Nagoričane\"\nmsgstr \"Staro Nagoričane\"\n\n#: mk/mk_choices.py:81\nmsgid \"Struga\"\nmsgstr \"Struga\"\n\n#: mk/mk_choices.py:82\nmsgid \"Strumica\"\nmsgstr \"Strumica\"\n\n#: mk/mk_choices.py:83\nmsgid \"Studeničani\"\nmsgstr \"Studeničani\"\n\n#: mk/mk_choices.py:84\nmsgid \"Tearce\"\nmsgstr \"Tearce\"\n\n#: mk/mk_choices.py:85\nmsgid \"Tetovo\"\nmsgstr \"Tetovo\"\n\n#: mk/mk_choices.py:86\nmsgid \"Centar\"\nmsgstr \"Centar\"\n\n#: mk/mk_choices.py:87\nmsgid \"Centar-Župa\"\nmsgstr \"Centar-Župa\"\n\n#: mk/mk_choices.py:88\nmsgid \"Čair\"\nmsgstr \"Čair\"\n\n#: mk/mk_choices.py:89\nmsgid \"Čaška\"\nmsgstr \"Čaška\"\n\n#: mk/mk_choices.py:90\nmsgid \"Češinovo-Obleševo\"\nmsgstr \"Češinovo-Obleševo\"\n\n#: mk/mk_choices.py:91\nmsgid \"Čučer-Sandevo\"\nmsgstr \"Čučer-Sandevo\"\n\n#: mk/mk_choices.py:92\nmsgid \"Štip\"\nmsgstr \"Štip\"\n\n#: mk/mk_choices.py:93\nmsgid \"Šuto Orizari\"\nmsgstr \"Šuto Orizari\"\n\n#: mk/models.py:11\nmsgid \"Macedonian identity card number\"\nmsgstr \"Número do cartão de identidade macedônio\"\n\n#: mk/models.py:25\nmsgid \"A Macedonian municipality (2 character code)\"\nmsgstr \"Um município Macedônio (código de 2 caracteres)\"\n\n#: mk/models.py:35\nmsgid \"Unique master citizen number (13 digits)\"\nmsgstr \"Número de cidadão mestre único (13 dígitos)\"\n\n#: mx/forms.py:67\nmsgid \"Enter a valid zip code in the format XXXXX.\"\nmsgstr \"Insira um código postal válido no formato XXXXX.\"\n\n#: mx/forms.py:110\nmsgid \"Enter a valid RFC.\"\nmsgstr \"Insira um RFC válido.\"\n\n#: mx/forms.py:111\nmsgid \"Invalid checksum for RFC.\"\nmsgstr \"Checksum inválido para RFC.\"\n\n#: mx/forms.py:191\nmsgid \"Enter a valid CURP.\"\nmsgstr \"Insira um CURP válido.\"\n\n#: mx/forms.py:192\nmsgid \"Invalid checksum for CURP.\"\nmsgstr \"Checksum inválido para CURP.\"\n\n#: mx/models.py:14\nmsgid \"Mexico state (three uppercase letters)\"\nmsgstr \"Estado do México (três letras maiúsculas)\"\n\n#: mx/models.py:27\nmsgid \"Mexico zip code\"\nmsgstr \"Código postal do México\"\n\n#: mx/models.py:44\nmsgid \"Mexican RFC\"\nmsgstr \"RFC Mexicano\"\n\n#: mx/models.py:61\nmsgid \"Mexican CURP\"\nmsgstr \"CURP Mexicano\"\n\n#: mx/mx_states.py:14\nmsgid \"Aguascalientes\"\nmsgstr \"Aguascalientes\"\n\n#: mx/mx_states.py:15\nmsgid \"Baja California\"\nmsgstr \"Baja California\"\n\n#: mx/mx_states.py:16\nmsgid \"Baja California Sur\"\nmsgstr \"Baja California Sur\"\n\n#: mx/mx_states.py:17\nmsgid \"Campeche\"\nmsgstr \"Campeche\"\n\n#: mx/mx_states.py:18\nmsgid \"Chihuahua\"\nmsgstr \"Chihuahua\"\n\n#: mx/mx_states.py:19\nmsgid \"Chiapas\"\nmsgstr \"Chiapas\"\n\n#: mx/mx_states.py:20\nmsgid \"Coahuila\"\nmsgstr \"Coahuila\"\n\n#: mx/mx_states.py:21\nmsgid \"Colima\"\nmsgstr \"Colima\"\n\n#: mx/mx_states.py:22\nmsgid \"Distrito Federal\"\nmsgstr \"Distrito Federal\"\n\n#: mx/mx_states.py:23\nmsgid \"Durango\"\nmsgstr \"Durango\"\n\n#: mx/mx_states.py:24\nmsgid \"Guerrero\"\nmsgstr \"Guerrero\"\n\n#: mx/mx_states.py:25\nmsgid \"Guanajuato\"\nmsgstr \"Guanajuato\"\n\n#: mx/mx_states.py:26\nmsgid \"Hidalgo\"\nmsgstr \"Hidalgo\"\n\n#: mx/mx_states.py:27\nmsgid \"Jalisco\"\nmsgstr \"Jalisco\"\n\n#: mx/mx_states.py:28\nmsgid \"Estado de México\"\nmsgstr \"Estado do México\"\n\n#: mx/mx_states.py:29\nmsgid \"Michoacán\"\nmsgstr \"Michoacán\"\n\n#: mx/mx_states.py:30\nmsgid \"Morelos\"\nmsgstr \"Morelos\"\n\n#: mx/mx_states.py:31\nmsgid \"Nayarit\"\nmsgstr \"Nayarit\"\n\n#: mx/mx_states.py:32\nmsgid \"Nuevo León\"\nmsgstr \"Nuevo León\"\n\n#: mx/mx_states.py:33\nmsgid \"Oaxaca\"\nmsgstr \"Oaxaca\"\n\n#: mx/mx_states.py:34\nmsgid \"Puebla\"\nmsgstr \"Puebla\"\n\n#: mx/mx_states.py:35\nmsgid \"Querétaro\"\nmsgstr \"Querétaro\"\n\n#: mx/mx_states.py:36\nmsgid \"Quintana Roo\"\nmsgstr \"Quintana Roo\"\n\n#: mx/mx_states.py:37\nmsgid \"Sinaloa\"\nmsgstr \"Sinaloa\"\n\n#: mx/mx_states.py:38\nmsgid \"San Luis Potosí\"\nmsgstr \"San Luis Potosí\"\n\n#: mx/mx_states.py:39\nmsgid \"Sonora\"\nmsgstr \"Sonora\"\n\n#: mx/mx_states.py:40\nmsgid \"Tabasco\"\nmsgstr \"Tabasco\"\n\n#: mx/mx_states.py:41\nmsgid \"Tamaulipas\"\nmsgstr \"Tamaulipas\"\n\n#: mx/mx_states.py:42\nmsgid \"Tlaxcala\"\nmsgstr \"Tlaxcala\"\n\n#: mx/mx_states.py:43\nmsgid \"Veracruz\"\nmsgstr \"Veracruz\"\n\n#: mx/mx_states.py:44\nmsgid \"Yucatán\"\nmsgstr \"Yucatán\"\n\n#: mx/mx_states.py:45\nmsgid \"Zacatecas\"\nmsgstr \"Zacatecas\"\n\n#: nl/forms.py:26\nmsgid \"Enter a valid postal code\"\nmsgstr \"Informe um código postal válido.\"\n\n#: nl/forms.py:82\nmsgid \"Enter a valid SoFi number\"\nmsgstr \"Informe um número SoFi válido.\"\n\n#: nl/nl_provinces.py:4\nmsgid \"Drenthe\"\nmsgstr \"Drente\"\n\n#: nl/nl_provinces.py:5\nmsgid \"Flevoland\"\nmsgstr \"Flevolândia\"\n\n#: nl/nl_provinces.py:6\nmsgid \"Friesland\"\nmsgstr \"Frísia\"\n\n#: nl/nl_provinces.py:7\nmsgid \"Gelderland\"\nmsgstr \"Güéldria\"\n\n#: nl/nl_provinces.py:8\nmsgid \"Groningen\"\nmsgstr \"Groninga\"\n\n#: nl/nl_provinces.py:10\nmsgid \"Noord-Brabant\"\nmsgstr \"Brabante do Norte\"\n\n#: nl/nl_provinces.py:11\nmsgid \"Noord-Holland\"\nmsgstr \"Holanda do Norte\"\n\n#: nl/nl_provinces.py:12\nmsgid \"Overijssel\"\nmsgstr \"Overijssel\"\n\n#: nl/nl_provinces.py:13\nmsgid \"Utrecht\"\nmsgstr \"Utrecht\"\n\n#: nl/nl_provinces.py:14\nmsgid \"Zeeland\"\nmsgstr \"Zelândia\"\n\n#: nl/nl_provinces.py:15\nmsgid \"Zuid-Holland\"\nmsgstr \"Holanda do Sul\"\n\n#: no/forms.py:39\nmsgid \"Enter a valid Norwegian social security number.\"\nmsgstr \"Informe um número de segurança social norueguês válido.\"\n\n#: pe/forms.py:28\nmsgid \"This field requires 8 digits.\"\nmsgstr \"Este campo requer 8 dígitos.\"\n\n#: pe/forms.py:56\nmsgid \"This field requires 11 digits.\"\nmsgstr \"Este campo requer 11 dígitos.\"\n\n#: pl/forms.py:42\nmsgid \"National Identification Number consists of 11 digits.\"\nmsgstr \"O Número de Identificação Nacional consistem de 11 dígitos.\"\n\n#: pl/forms.py:43\nmsgid \"Wrong checksum for the National Identification Number.\"\nmsgstr \"Número de Identificação Nacional incorreto.\"\n\n#: pl/forms.py:79\nmsgid \"National ID Card Number consists of 3 letters and 6 digits.\"\nmsgstr \"Número do ID Nacional é composto por 3 letras e 6 dígitos.\"\n\n#: pl/forms.py:80\nmsgid \"Wrong checksum for the National ID Card Number.\"\nmsgstr \"Checksum errado para o Número do Cartão de ID Nacional.\"\n\n#: pl/forms.py:131\nmsgid \"\"\n\"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or \"\n\"XXXXXXXXXX.\"\nmsgstr \"\"\n\"Insira no campo um número fiscal (NIP) no formato XXX-XXX-XX-XX, XXX-XX-XX-\"\n\"XXX ou XXXXXXXXXX.\"\n\n#: pl/forms.py:132\nmsgid \"Wrong checksum for the Tax Number (NIP).\"\nmsgstr \"O Número de Identificação Tributária (NIP) é incorreto.\"\n\n#: pl/forms.py:171\nmsgid \"National Business Register Number (REGON) consists of 9 or 14 digits.\"\nmsgstr \"\"\n\"O Número Nacional de Registro de Negócios (REGON) consiste em 9 ou 14 \"\n\"dígitos.\"\n\n#: pl/forms.py:172\nmsgid \"Wrong checksum for the National Business Register Number (REGON).\"\nmsgstr \"O Número Nacional de Registro de Negócios (REGON) é incorreto.\"\n\n#: pl/forms.py:212\nmsgid \"Enter a postal code in the format XX-XXX.\"\nmsgstr \"Informe um código postal válido no formato XX-XXX.\"\n\n#: pl/pl_voivodeships.py:8\nmsgid \"Lower Silesia\"\nmsgstr \"Baixa Silésia\"\n\n#: pl/pl_voivodeships.py:9\nmsgid \"Kuyavia-Pomerania\"\nmsgstr \"Kuyavia-Pomerania\"\n\n#: pl/pl_voivodeships.py:10\nmsgid \"Lublin\"\nmsgstr \"Lublin\"\n\n#: pl/pl_voivodeships.py:11\nmsgid \"Lubusz\"\nmsgstr \"Lubúsquia\"\n\n#: pl/pl_voivodeships.py:12\nmsgid \"Lodz\"\nmsgstr \"Łódź\"\n\n#: pl/pl_voivodeships.py:13\nmsgid \"Lesser Poland\"\nmsgstr \"Pequena Polônia\"\n\n#: pl/pl_voivodeships.py:14\nmsgid \"Masovia\"\nmsgstr \"Mazóvia\"\n\n#: pl/pl_voivodeships.py:15\nmsgid \"Opole\"\nmsgstr \"Opole\"\n\n#: pl/pl_voivodeships.py:16\nmsgid \"Subcarpatia\"\nmsgstr \"Subcarpácia\"\n\n#: pl/pl_voivodeships.py:17\nmsgid \"Podlasie\"\nmsgstr \"Podlasie\"\n\n#: pl/pl_voivodeships.py:18\nmsgid \"Pomerania\"\nmsgstr \"Pomerânia\"\n\n#: pl/pl_voivodeships.py:19\nmsgid \"Silesia\"\nmsgstr \"Silésia\"\n\n#: pl/pl_voivodeships.py:20\nmsgid \"Swietokrzyskie\"\nmsgstr \"Santa Cruz\"\n\n#: pl/pl_voivodeships.py:21\nmsgid \"Warmia-Masuria\"\nmsgstr \"Vármia-Masúria\"\n\n#: pl/pl_voivodeships.py:22\nmsgid \"Greater Poland\"\nmsgstr \"Grande Polônia\"\n\n#: pl/pl_voivodeships.py:23\nmsgid \"West Pomerania\"\nmsgstr \"Pomerânia Ocidental\"\n\n#: pt/forms.py:19\nmsgid \"Enter a zip code in the format XXXX-XXX.\"\nmsgstr \"Informe um código postal no formato XXXX-XXX.\"\n\n#: pt/forms.py:39\nmsgid \"Phone numbers must have 9 digits, or start by + or 00.\"\nmsgstr \"\"\n\"Números de telefone precisam conter 9 dígios, ou começarem com + ou 00.\"\n\n#: ro/forms.py:22\nmsgid \"Enter a valid CIF.\"\nmsgstr \"Informe um CIF válido.\"\n\n#: ro/forms.py:59\nmsgid \"Enter a valid CNP.\"\nmsgstr \"Informe um CNP válido.\"\n\n#: ro/forms.py:143\nmsgid \"Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format\"\nmsgstr \"Informe um IBAN válido no formato ROXX-XXXX-XXXX-XXXX-XXXX-XXXX.\"\n\n#: ro/forms.py:175\nmsgid \"Phone numbers must be in XXXX-XXXXXX format.\"\nmsgstr \"Números de telefone devem estar no formato XXXX-XXXXXX.\"\n\n#: ro/forms.py:200\nmsgid \"Enter a valid postal code in the format XXXXXX\"\nmsgstr \"Informe um código postal no formato XXXXXX.\"\n\n#: ru/forms.py:37\nmsgid \"Enter a postal code in the format XXXXXX.\"\nmsgstr \"Insira um código postal no formato XXXXXX.\"\n\n#: ru/forms.py:50\nmsgid \"Enter a passport number in the format XXXX XXXXXX.\"\nmsgstr \"Insira um número de passaporte no formato XXXX XXXXXX.\"\n\n#: ru/forms.py:63\nmsgid \"Enter a passport number in the format XX XXXXXXX.\"\nmsgstr \"Insira um número de passaporte no formato XX XXXXXXX.\"\n\n#: ru/ru_regions.py:10\nmsgid \"Central Federal County\"\nmsgstr \"Distrito Federal Central\"\n\n#: ru/ru_regions.py:11\nmsgid \"South Federal County\"\nmsgstr \"Distrito Federal do Sul\"\n\n#: ru/ru_regions.py:12\nmsgid \"North-West Federal County\"\nmsgstr \"Distrito Federal do Noroeste\"\n\n#: ru/ru_regions.py:13\nmsgid \"Far-East Federal County\"\nmsgstr \"Distrito Federal do Extremo Oriente\"\n\n#: ru/ru_regions.py:14\nmsgid \"Siberian Federal County\"\nmsgstr \"Distrito Federal Siberiano\"\n\n#: ru/ru_regions.py:15\nmsgid \"Ural Federal County\"\nmsgstr \"Distrito Federal dos Urais\"\n\n#: ru/ru_regions.py:16\nmsgid \"Privolzhsky Federal County\"\nmsgstr \"Distrito Federal do Volga\"\n\n#: ru/ru_regions.py:17\nmsgid \"North-Caucasian Federal County\"\nmsgstr \"Distrito Federal do Cáucaso Norte\"\n\n#: ru/ru_regions.py:21\nmsgid \"Moskva\"\nmsgstr \"Moskva\"\n\n#: ru/ru_regions.py:22\nmsgid \"Saint-Peterburg\"\nmsgstr \"São Petersburgo\"\n\n#: ru/ru_regions.py:23\nmsgid \"Moskovskaya oblast'\"\nmsgstr \"Moskovskaya oblast'\"\n\n#: ru/ru_regions.py:24\nmsgid \"Adygeya, Respublika\"\nmsgstr \"Adygeya, Respublika\"\n\n#: ru/ru_regions.py:25\nmsgid \"Bashkortostan, Respublika\"\nmsgstr \"Bashkortostan, Respublika\"\n\n#: ru/ru_regions.py:26\nmsgid \"Buryatia, Respublika\"\nmsgstr \"Buryatia, Respublika\"\n\n#: ru/ru_regions.py:27\nmsgid \"Altay, Respublika\"\nmsgstr \"Altay, Respublika\"\n\n#: ru/ru_regions.py:28\nmsgid \"Dagestan, Respublika\"\nmsgstr \"Dagestan, Respublika\"\n\n#: ru/ru_regions.py:29\nmsgid \"Ingushskaya Respublika\"\nmsgstr \"Ingushskaya Respublika\"\n\n#: ru/ru_regions.py:30\nmsgid \"Kabardino-Balkarskaya Respublika\"\nmsgstr \"Kabardino-Balkarskaya Respublika\"\n\n#: ru/ru_regions.py:31\nmsgid \"Kalmykia, Respublika\"\nmsgstr \"Kalmykia, Respublika\"\n\n#: ru/ru_regions.py:32\nmsgid \"Karachaevo-Cherkesskaya Respublika\"\nmsgstr \"Karachaevo-Cherkesskaya Respublika\"\n\n#: ru/ru_regions.py:33\nmsgid \"Karelia, Respublika\"\nmsgstr \"Karelia, Respublika\"\n\n#: ru/ru_regions.py:34\nmsgid \"Komi, Respublika\"\nmsgstr \"Komi, Respublika\"\n\n#: ru/ru_regions.py:35\nmsgid \"Mariy Ehl, Respublika\"\nmsgstr \"Mariy Ehl, Respublika\"\n\n#: ru/ru_regions.py:36\nmsgid \"Mordovia, Respublika\"\nmsgstr \"Mordovia, Respublika\"\n\n#: ru/ru_regions.py:37\nmsgid \"Sakha, Respublika (Yakutiya)\"\nmsgstr \"Sakha, Respublika (Yakutiya)\"\n\n#: ru/ru_regions.py:38\nmsgid \"Severnaya Osetia, Respublika (Alania)\"\nmsgstr \"Severnaya Osetia, Respublika (Alania)\"\n\n#: ru/ru_regions.py:39\nmsgid \"Tatarstan, Respublika\"\nmsgstr \"Tatarstan, Respublika\"\n\n#: ru/ru_regions.py:40\nmsgid \"Tyva, Respublika (Tuva)\"\nmsgstr \"Tyva, Respublika (Tuva)\"\n\n#: ru/ru_regions.py:41\nmsgid \"Udmurtskaya Respublika\"\nmsgstr \"Udmurtskaya Respublika\"\n\n#: ru/ru_regions.py:42\nmsgid \"Khakassiya, Respublika\"\nmsgstr \"Khakassiya, Respublika\"\n\n#: ru/ru_regions.py:43\nmsgid \"Chechenskaya Respublika\"\nmsgstr \"Chechenskaya Respublika\"\n\n#: ru/ru_regions.py:44\nmsgid \"Chuvashskaya Respublika\"\nmsgstr \"Chuvashskaya Respublika\"\n\n#: ru/ru_regions.py:45\nmsgid \"Altayskiy Kray\"\nmsgstr \"Altayskiy Kray\"\n\n#: ru/ru_regions.py:46\nmsgid \"Zabaykalskiy Kray\"\nmsgstr \"Zabaykalskiy Kray\"\n\n#: ru/ru_regions.py:47\nmsgid \"Kamchatskiy Kray\"\nmsgstr \"Kamchatskiy Kray\"\n\n#: ru/ru_regions.py:48\nmsgid \"Krasnodarskiy Kray\"\nmsgstr \"Krasnodarskiy Kray\"\n\n#: ru/ru_regions.py:49\nmsgid \"Krasnoyarskiy Kray\"\nmsgstr \"Krasnoyarskiy Kray\"\n\n#: ru/ru_regions.py:50\nmsgid \"Permskiy Kray\"\nmsgstr \"Permskiy Kray\"\n\n#: ru/ru_regions.py:51\nmsgid \"Primorskiy Kray\"\nmsgstr \"Primorskiy Kray\"\n\n#: ru/ru_regions.py:52\nmsgid \"Stavropol'siyy Kray\"\nmsgstr \"Stavropol'siyy Kray\"\n\n#: ru/ru_regions.py:53\nmsgid \"Khabarovskiy Kray\"\nmsgstr \"Khabarovskiy Kray\"\n\n#: ru/ru_regions.py:54\nmsgid \"Amurskaya oblast'\"\nmsgstr \"Amurskaya oblast'\"\n\n#: ru/ru_regions.py:55\nmsgid \"Arkhangel'skaya oblast'\"\nmsgstr \"Arkhangel'skaya oblast'\"\n\n#: ru/ru_regions.py:56\nmsgid \"Astrakhanskaya oblast'\"\nmsgstr \"Astrakhanskaya oblast'\"\n\n#: ru/ru_regions.py:57\nmsgid \"Belgorodskaya oblast'\"\nmsgstr \"Belgorodskaya oblast'\"\n\n#: ru/ru_regions.py:58\nmsgid \"Bryanskaya oblast'\"\nmsgstr \"Bryanskaya oblast'\"\n\n#: ru/ru_regions.py:59\nmsgid \"Vladimirskaya oblast'\"\nmsgstr \"Vladimirskaya oblast'\"\n\n#: ru/ru_regions.py:60\nmsgid \"Volgogradskaya oblast'\"\nmsgstr \"Volgogradskaya oblast'\"\n\n#: ru/ru_regions.py:61\nmsgid \"Vologodskaya oblast'\"\nmsgstr \"Vologodskaya oblast'\"\n\n#: ru/ru_regions.py:62\nmsgid \"Voronezhskaya oblast'\"\nmsgstr \"Voronezhskaya oblast '\"\n\n#: ru/ru_regions.py:63\nmsgid \"Ivanovskaya oblast'\"\nmsgstr \"Ivanovskaya oblast'\"\n\n#: ru/ru_regions.py:64\nmsgid \"Irkutskaya oblast'\"\nmsgstr \"Irkutskaya oblast'\"\n\n#: ru/ru_regions.py:65\nmsgid \"Kaliningradskaya oblast'\"\nmsgstr \"Kaliningradskaya oblast'\"\n\n#: ru/ru_regions.py:66\nmsgid \"Kaluzhskaya oblast'\"\nmsgstr \"Kaluzhskaya oblast'\"\n\n#: ru/ru_regions.py:67\nmsgid \"Kemerovskaya oblast'\"\nmsgstr \"Kemerovskaya oblast'\"\n\n#: ru/ru_regions.py:68\nmsgid \"Kirovskaya oblast'\"\nmsgstr \"Kirovskaya oblast'\"\n\n#: ru/ru_regions.py:69\nmsgid \"Kostromskaya oblast'\"\nmsgstr \"Kostromskaya oblast'\"\n\n#: ru/ru_regions.py:70\nmsgid \"Kurganskaya oblast'\"\nmsgstr \"Kurganskaya oblast'\"\n\n#: ru/ru_regions.py:71\nmsgid \"Kurskaya oblast'\"\nmsgstr \"Kurskaya oblast'\"\n\n#: ru/ru_regions.py:72\nmsgid \"Leningradskaya oblast'\"\nmsgstr \"Leningradskaya oblast'\"\n\n#: ru/ru_regions.py:73\nmsgid \"Lipeckaya oblast'\"\nmsgstr \"Lipeckaya oblast'\"\n\n#: ru/ru_regions.py:74\nmsgid \"Magadanskaya oblast'\"\nmsgstr \"Magadanskaya oblast'\"\n\n#: ru/ru_regions.py:75\nmsgid \"Murmanskaya oblast'\"\nmsgstr \"Murmanskaya oblast'\"\n\n#: ru/ru_regions.py:76\nmsgid \"Nizhegorodskaja oblast'\"\nmsgstr \"Nizhegorodskaja oblast'\"\n\n#: ru/ru_regions.py:77\nmsgid \"Novgorodskaya oblast'\"\nmsgstr \"Novgorodskaya oblast'\"\n\n#: ru/ru_regions.py:78\nmsgid \"Novosibirskaya oblast'\"\nmsgstr \"Novosibirskaya oblast'\"\n\n#: ru/ru_regions.py:79\nmsgid \"Omskaya oblast'\"\nmsgstr \"Omskaya oblast'\"\n\n#: ru/ru_regions.py:80\nmsgid \"Orenburgskaya oblast'\"\nmsgstr \"Orenburgskaya oblast'\"\n\n#: ru/ru_regions.py:81\nmsgid \"Orlovskaya oblast'\"\nmsgstr \"Orlovskaya oblast'\"\n\n#: ru/ru_regions.py:82\nmsgid \"Penzenskaya oblast'\"\nmsgstr \"Penzenskaya oblast'\"\n\n#: ru/ru_regions.py:83\nmsgid \"Pskovskaya oblast'\"\nmsgstr \"Pskovskaya oblast'\"\n\n#: ru/ru_regions.py:84\nmsgid \"Rostovskaya oblast'\"\nmsgstr \"Rostovskaya oblast'\"\n\n#: ru/ru_regions.py:85\nmsgid \"Rjazanskaya oblast'\"\nmsgstr \"Rjazanskaya oblast'\"\n\n#: ru/ru_regions.py:86\nmsgid \"Samarskaya oblast'\"\nmsgstr \"Samarskaya oblast'\"\n\n#: ru/ru_regions.py:87\nmsgid \"Saratovskaya oblast'\"\nmsgstr \"Saratovskaya oblast'\"\n\n#: ru/ru_regions.py:88\nmsgid \"Sakhalinskaya oblast'\"\nmsgstr \"Sakhalinskaya oblast'\"\n\n#: ru/ru_regions.py:89\nmsgid \"Sverdlovskaya oblast'\"\nmsgstr \"Sverdlovskaya oblast'\"\n\n#: ru/ru_regions.py:90\nmsgid \"Smolenskaya oblast'\"\nmsgstr \"Smolenskaya oblast'\"\n\n#: ru/ru_regions.py:91\nmsgid \"Tambovskaya oblast'\"\nmsgstr \"Tambovskaya oblast'\"\n\n#: ru/ru_regions.py:92\nmsgid \"Tverskaya oblast'\"\nmsgstr \"Tverskaya oblast'\"\n\n#: ru/ru_regions.py:93\nmsgid \"Tomskaya oblast'\"\nmsgstr \"Tomskaya oblast'\"\n\n#: ru/ru_regions.py:94\nmsgid \"Tul'skaya oblast'\"\nmsgstr \"Tul'skaya oblast'\"\n\n#: ru/ru_regions.py:95\nmsgid \"Tyumenskaya oblast'\"\nmsgstr \"Tyumenskaya oblast'\"\n\n#: ru/ru_regions.py:96\nmsgid \"Ul'ianovskaya oblast'\"\nmsgstr \"Ul'ianovskaya oblast'\"\n\n#: ru/ru_regions.py:97\nmsgid \"Chelyabinskaya oblast'\"\nmsgstr \"Chelyabinskaya oblast'\"\n\n#: ru/ru_regions.py:98\nmsgid \"Yaroslavskaya oblast'\"\nmsgstr \"Yaroslavskaya oblast'\"\n\n#: ru/ru_regions.py:99\nmsgid \"Evreyskaya avtonomnaja oblast'\"\nmsgstr \"Evreyskaya avtonomnaja oblast'\"\n\n#: ru/ru_regions.py:100\nmsgid \"Neneckiy autonomnyy okrug\"\nmsgstr \"Neneckiy autonomnyy okrug\"\n\n#: ru/ru_regions.py:101\nmsgid \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\nmsgstr \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\n\n#: ru/ru_regions.py:102\nmsgid \"Chukotskiy avtonomnyy okrug\"\nmsgstr \"Chukotskiy avtonomnyy okrug\"\n\n#: ru/ru_regions.py:103\nmsgid \"Yamalo-Neneckiy avtonomnyy okrug\"\nmsgstr \"Yamalo-Neneckiy avtonomnyy okrug\"\n\n#: se/forms.py:54\nmsgid \"Enter a valid Swedish organisation number.\"\nmsgstr \"Informe um número de organização sueco válido.\"\n\n#: se/forms.py:111\nmsgid \"Enter a valid Swedish personal identity number.\"\nmsgstr \"Informe um número sueco de identidade pessoal válido.\"\n\n#: se/forms.py:112\nmsgid \"Co-ordination numbers are not allowed.\"\nmsgstr \"Números de coordenação não são permitidos.\"\n\n#: se/forms.py:154\nmsgid \"Enter a Swedish postal code in the format XXXXX.\"\nmsgstr \"Informe um código postal sueco válido no formato XXXXX.\"\n\n#: se/se_counties.py:16\nmsgid \"Stockholm\"\nmsgstr \"Estocolmo\"\n\n#: se/se_counties.py:17\nmsgid \"Västerbotten\"\nmsgstr \"Västerbotten\"\n\n#: se/se_counties.py:18\nmsgid \"Norrbotten\"\nmsgstr \"Norrbotten\"\n\n#: se/se_counties.py:19\nmsgid \"Uppsala\"\nmsgstr \"Uppsala\"\n\n#: se/se_counties.py:20\nmsgid \"Södermanland\"\nmsgstr \"Södermanland\"\n\n#: se/se_counties.py:21\nmsgid \"Östergötland\"\nmsgstr \"Östergötland\"\n\n#: se/se_counties.py:22\nmsgid \"Jönköping\"\nmsgstr \"Jönköping\"\n\n#: se/se_counties.py:23\nmsgid \"Kronoberg\"\nmsgstr \"Kronoberg\"\n\n#: se/se_counties.py:24\nmsgid \"Kalmar\"\nmsgstr \"Kalmar\"\n\n#: se/se_counties.py:25\nmsgid \"Gotland\"\nmsgstr \"Gotlândia\"\n\n#: se/se_counties.py:26\nmsgid \"Blekinge\"\nmsgstr \"Blekinge\"\n\n#: se/se_counties.py:27\nmsgid \"Skåne\"\nmsgstr \"Skåne\"\n\n#: se/se_counties.py:28\nmsgid \"Halland\"\nmsgstr \"Halland\"\n\n#: se/se_counties.py:29\nmsgid \"Västra Götaland\"\nmsgstr \"Västra Götaland\"\n\n#: se/se_counties.py:30\nmsgid \"Värmland\"\nmsgstr \"Värmland\"\n\n#: se/se_counties.py:31\nmsgid \"Örebro\"\nmsgstr \"Örebro\"\n\n#: se/se_counties.py:32\nmsgid \"Västmanland\"\nmsgstr \"Västmanland\"\n\n#: se/se_counties.py:33\nmsgid \"Dalarna\"\nmsgstr \"Dalarna\"\n\n#: se/se_counties.py:34\nmsgid \"Gävleborg\"\nmsgstr \"Gävleborg\"\n\n#: se/se_counties.py:35\nmsgid \"Västernorrland\"\nmsgstr \"Västernorrland\"\n\n#: se/se_counties.py:36\nmsgid \"Jämtland\"\nmsgstr \"Jämtland\"\n\n#: si/forms.py:25\nmsgid \"The first 7 digits of the EMSO must represent a valid past date.\"\nmsgstr \"\"\n\"Os 7 primeiros dígitos do EMSO devem representar uma data no passado válida.\"\n\n#: si/forms.py:26\nmsgid \"The EMSO is not valid.\"\nmsgstr \"O EMSO não é válido.\"\n\n#: si/forms.py:86\nmsgid \"Enter a valid tax number in form SIXXXXXXXX\"\nmsgstr \"Insira um número fiscal válido na forma SIXXXXXXXX\"\n\n#: si/forms.py:151\nmsgid \"Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.\"\nmsgstr \"Insira o número do telefone na forma +386XXXXXXXX ou 0XXXXXXXX.\"\n\n#: sk/sk_districts.py:8\nmsgid \"Banska Bystrica\"\nmsgstr \"Banská Bystrica\"\n\n#: sk/sk_districts.py:9\nmsgid \"Banska Stiavnica\"\nmsgstr \"Banská Štiavnica\"\n\n#: sk/sk_districts.py:10\nmsgid \"Bardejov\"\nmsgstr \"Bardejov\"\n\n#: sk/sk_districts.py:11\nmsgid \"Banovce nad Bebravou\"\nmsgstr \"Bánovce nad Bebravou\"\n\n#: sk/sk_districts.py:12\nmsgid \"Brezno\"\nmsgstr \"Brezno\"\n\n#: sk/sk_districts.py:13\nmsgid \"Bratislava I\"\nmsgstr \"Bratislava I\"\n\n#: sk/sk_districts.py:14\nmsgid \"Bratislava II\"\nmsgstr \"Bratislava II\"\n\n#: sk/sk_districts.py:15\nmsgid \"Bratislava III\"\nmsgstr \"Bratislava III\"\n\n#: sk/sk_districts.py:16\nmsgid \"Bratislava IV\"\nmsgstr \"Bratislava IV\"\n\n#: sk/sk_districts.py:17\nmsgid \"Bratislava V\"\nmsgstr \"Bratislava V\"\n\n#: sk/sk_districts.py:18\nmsgid \"Bytca\"\nmsgstr \"Bytča\"\n\n#: sk/sk_districts.py:19\nmsgid \"Cadca\"\nmsgstr \"Čadca\"\n\n#: sk/sk_districts.py:20\nmsgid \"Detva\"\nmsgstr \"Detva\"\n\n#: sk/sk_districts.py:21\nmsgid \"Dolny Kubin\"\nmsgstr \"Dolný Kubín\"\n\n#: sk/sk_districts.py:22\nmsgid \"Dunajska Streda\"\nmsgstr \"Dunajská Streda\"\n\n#: sk/sk_districts.py:23\nmsgid \"Galanta\"\nmsgstr \"Galanta\"\n\n#: sk/sk_districts.py:24\nmsgid \"Gelnica\"\nmsgstr \"Gelnica\"\n\n#: sk/sk_districts.py:25\nmsgid \"Hlohovec\"\nmsgstr \"Hlohovec\"\n\n#: sk/sk_districts.py:26\nmsgid \"Humenne\"\nmsgstr \"Humenné\"\n\n#: sk/sk_districts.py:27\nmsgid \"Ilava\"\nmsgstr \"Ilava\"\n\n#: sk/sk_districts.py:28\nmsgid \"Kezmarok\"\nmsgstr \"Kežmarok\"\n\n#: sk/sk_districts.py:29\nmsgid \"Komarno\"\nmsgstr \"Komárno\"\n\n#: sk/sk_districts.py:30\nmsgid \"Kosice I\"\nmsgstr \"Košice I\"\n\n#: sk/sk_districts.py:31\nmsgid \"Kosice II\"\nmsgstr \"Košice II\"\n\n#: sk/sk_districts.py:32\nmsgid \"Kosice III\"\nmsgstr \"Košice III\"\n\n#: sk/sk_districts.py:33\nmsgid \"Kosice IV\"\nmsgstr \"Košice IV\"\n\n#: sk/sk_districts.py:34\nmsgid \"Kosice - okolie\"\nmsgstr \"Košice - okolie\"\n\n#: sk/sk_districts.py:35\nmsgid \"Krupina\"\nmsgstr \"Krupina\"\n\n#: sk/sk_districts.py:36\nmsgid \"Kysucke Nove Mesto\"\nmsgstr \"Kysucké Nové Mesto\"\n\n#: sk/sk_districts.py:37\nmsgid \"Levice\"\nmsgstr \"Levice\"\n\n#: sk/sk_districts.py:38\nmsgid \"Levoca\"\nmsgstr \"Levoča\"\n\n#: sk/sk_districts.py:39\nmsgid \"Liptovsky Mikulas\"\nmsgstr \"Liptovský Mikuláš\"\n\n#: sk/sk_districts.py:40\nmsgid \"Lucenec\"\nmsgstr \"Lučenec\"\n\n#: sk/sk_districts.py:41\nmsgid \"Malacky\"\nmsgstr \"Malacky\"\n\n#: sk/sk_districts.py:42\nmsgid \"Martin\"\nmsgstr \"Martin\"\n\n#: sk/sk_districts.py:43\nmsgid \"Medzilaborce\"\nmsgstr \"Medzilaborce\"\n\n#: sk/sk_districts.py:44\nmsgid \"Michalovce\"\nmsgstr \"Michalovce\"\n\n#: sk/sk_districts.py:45\nmsgid \"Myjava\"\nmsgstr \"Myjava\"\n\n#: sk/sk_districts.py:46\nmsgid \"Namestovo\"\nmsgstr \"Námestovo\"\n\n#: sk/sk_districts.py:47\nmsgid \"Nitra\"\nmsgstr \"Nitra\"\n\n#: sk/sk_districts.py:48\nmsgid \"Nove Mesto nad Vahom\"\nmsgstr \"Nové Mesto nad Váhom\"\n\n#: sk/sk_districts.py:49\nmsgid \"Nove Zamky\"\nmsgstr \"Nové Zámky\"\n\n#: sk/sk_districts.py:50\nmsgid \"Partizanske\"\nmsgstr \"Partizánske\"\n\n#: sk/sk_districts.py:51\nmsgid \"Pezinok\"\nmsgstr \"Pezinok\"\n\n#: sk/sk_districts.py:52\nmsgid \"Piestany\"\nmsgstr \"Piešťany\"\n\n#: sk/sk_districts.py:53\nmsgid \"Poltar\"\nmsgstr \"Poltár\"\n\n#: sk/sk_districts.py:54\nmsgid \"Poprad\"\nmsgstr \"Poprad\"\n\n#: sk/sk_districts.py:55\nmsgid \"Povazska Bystrica\"\nmsgstr \"Považská Bystrica\"\n\n#: sk/sk_districts.py:56\nmsgid \"Presov\"\nmsgstr \"Prešov\"\n\n#: sk/sk_districts.py:57\nmsgid \"Prievidza\"\nmsgstr \"Prievidza\"\n\n#: sk/sk_districts.py:58\nmsgid \"Puchov\"\nmsgstr \"Púchov\"\n\n#: sk/sk_districts.py:59\nmsgid \"Revuca\"\nmsgstr \"Revúca\"\n\n#: sk/sk_districts.py:60\nmsgid \"Rimavska Sobota\"\nmsgstr \"Rimavská Sobota\"\n\n#: sk/sk_districts.py:61\nmsgid \"Roznava\"\nmsgstr \"Rožňava\"\n\n#: sk/sk_districts.py:62\nmsgid \"Ruzomberok\"\nmsgstr \"Ružomberok\"\n\n#: sk/sk_districts.py:63\nmsgid \"Sabinov\"\nmsgstr \"Sabinov\"\n\n#: sk/sk_districts.py:64\nmsgid \"Senec\"\nmsgstr \"Senec\"\n\n#: sk/sk_districts.py:65\nmsgid \"Senica\"\nmsgstr \"Senica\"\n\n#: sk/sk_districts.py:66\nmsgid \"Skalica\"\nmsgstr \"Skalica\"\n\n#: sk/sk_districts.py:67\nmsgid \"Snina\"\nmsgstr \"Snina\"\n\n#: sk/sk_districts.py:68\nmsgid \"Sobrance\"\nmsgstr \"Sobrance\"\n\n#: sk/sk_districts.py:69\nmsgid \"Spisska Nova Ves\"\nmsgstr \"Spišská Nová Ves\"\n\n#: sk/sk_districts.py:70\nmsgid \"Stara Lubovna\"\nmsgstr \"Stará Ľubovňa\"\n\n#: sk/sk_districts.py:71\nmsgid \"Stropkov\"\nmsgstr \"Stropkov\"\n\n#: sk/sk_districts.py:72\nmsgid \"Svidnik\"\nmsgstr \"Svidník\"\n\n#: sk/sk_districts.py:73\nmsgid \"Sala\"\nmsgstr \"Šaľa\"\n\n#: sk/sk_districts.py:74\nmsgid \"Topolcany\"\nmsgstr \"Topoľčany\"\n\n#: sk/sk_districts.py:75\nmsgid \"Trebisov\"\nmsgstr \"Trebišov\"\n\n#: sk/sk_districts.py:76\nmsgid \"Trencin\"\nmsgstr \"Trenčín\"\n\n#: sk/sk_districts.py:77\nmsgid \"Trnava\"\nmsgstr \"Trnava\"\n\n#: sk/sk_districts.py:78\nmsgid \"Turcianske Teplice\"\nmsgstr \"Turčianske Teplice\"\n\n#: sk/sk_districts.py:79\nmsgid \"Tvrdosin\"\nmsgstr \"Tvrdošín\"\n\n#: sk/sk_districts.py:80\nmsgid \"Velky Krtis\"\nmsgstr \"Veľký Krtíš\"\n\n#: sk/sk_districts.py:81\nmsgid \"Vranov nad Toplou\"\nmsgstr \"Vranov nad Topľou\"\n\n#: sk/sk_districts.py:82\nmsgid \"Zlate Moravce\"\nmsgstr \"Zlaté Moravce\"\n\n#: sk/sk_districts.py:83\nmsgid \"Zvolen\"\nmsgstr \"Zvolen\"\n\n#: sk/sk_districts.py:84\nmsgid \"Zarnovica\"\nmsgstr \"Žarnovica\"\n\n#: sk/sk_districts.py:85\nmsgid \"Ziar nad Hronom\"\nmsgstr \"Žiar nad Hronom\"\n\n#: sk/sk_districts.py:86\nmsgid \"Zilina\"\nmsgstr \"Žilina\"\n\n#: sk/sk_regions.py:8\nmsgid \"Banska Bystrica region\"\nmsgstr \"Região de Banská Bystrica\"\n\n#: sk/sk_regions.py:9\nmsgid \"Bratislava region\"\nmsgstr \"Região de Bratislava\"\n\n#: sk/sk_regions.py:10\nmsgid \"Kosice region\"\nmsgstr \"Região de Košice\"\n\n#: sk/sk_regions.py:11\nmsgid \"Nitra region\"\nmsgstr \"Região de Nitra\"\n\n#: sk/sk_regions.py:12\nmsgid \"Presov region\"\nmsgstr \"Região de Prešov\"\n\n#: sk/sk_regions.py:13\nmsgid \"Trencin region\"\nmsgstr \"Região de Trenčín\"\n\n#: sk/sk_regions.py:14\nmsgid \"Trnava region\"\nmsgstr \"Região de Trnava\"\n\n#: sk/sk_regions.py:15\nmsgid \"Zilina region\"\nmsgstr \"Região de Žilina\"\n\n#: tr/forms.py:21\nmsgid \"Enter a postal code in the format XXXXX.\"\nmsgstr \"Introduza um código postal no formato XXXXX.\"\n\n#: tr/forms.py:42\nmsgid \"Phone numbers must be in 0XXX XXX XXXX format.\"\nmsgstr \"Números de telefone devem estar no formato 0XXX XXX XXXX.\"\n\n#: tr/forms.py:69\nmsgid \"Enter a valid Turkish Identification number.\"\nmsgstr \"Digite um número de identificação turco válido.\"\n\n#: tr/forms.py:70\nmsgid \"Turkish Identification number must be 11 digits.\"\nmsgstr \"Número de identificação turco deve ter 11 dígitos.\"\n\n#: us/forms.py:21\nmsgid \"Enter a zip code in the format XXXXX or XXXXX-XXXX.\"\nmsgstr \"Informe um código postal no formato XXXXX ou XXXXX-XXXX.\"\n\n#: us/forms.py:59\nmsgid \"Enter a valid U.S. Social Security number in XXX-XX-XXXX format.\"\nmsgstr \"\"\n\"Informe um número de Seguro Social dos EUA válido no formato XXX-XX-XXXX.\"\n\n#: us/forms.py:92\nmsgid \"Enter a U.S. state or territory.\"\nmsgstr \"Insira um estado ou território dos E.U.A.\"\n\n#: us/models.py:8\nmsgid \"U.S. state (two uppercase letters)\"\nmsgstr \"Estado dos E.U.A. (duas letras maiúsculas)\"\n\n#: us/models.py:17\nmsgid \"U.S. postal code (two uppercase letters)\"\nmsgstr \"código postal dos EUA(duas letras maiúsculas)\"\n\n#: us/models.py:26\nmsgid \"Phone number\"\nmsgstr \"Número de telefone\"\n\n#: uy/forms.py:29\nmsgid \"Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.\"\nmsgstr \"\"\n\"Informe um número CI válido no formato X.XXX.XXX-X,XXXXXXX-X ou XXXXXXXX.\"\n\n#: uy/forms.py:31\nmsgid \"Enter a valid CI number.\"\nmsgstr \"Informe um número CI válido.\"\n\n#: za/forms.py:22\nmsgid \"Enter a valid South African ID number\"\nmsgstr \"Informe um ID sul-africado válido.\"\n\n#: za/forms.py:56\nmsgid \"Enter a valid South African postal code\"\nmsgstr \"Informe um código postal sul-africado válido.\"\n\n#: za/za_provinces.py:4\nmsgid \"Eastern Cape\"\nmsgstr \"Cabo Oriental\"\n\n#: za/za_provinces.py:5\nmsgid \"Free State\"\nmsgstr \"Estado Livre\"\n\n#: za/za_provinces.py:6\nmsgid \"Gauteng\"\nmsgstr \"Gauteng\"\n\n#: za/za_provinces.py:7\nmsgid \"KwaZulu-Natal\"\nmsgstr \"KwaZulu-Natal\"\n\n#: za/za_provinces.py:8\nmsgid \"Limpopo\"\nmsgstr \"Limpopo\"\n\n#: za/za_provinces.py:9\nmsgid \"Mpumalanga\"\nmsgstr \"Mpumalanga\"\n\n#: za/za_provinces.py:10\nmsgid \"Northern Cape\"\nmsgstr \"Cabo Setentrional\"\n\n#: za/za_provinces.py:11\nmsgid \"North West\"\nmsgstr \"Noroeste\"\n\n#: za/za_provinces.py:12\nmsgid \"Western Cape\"\nmsgstr \"Cabo Ocidental\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/locale/ro/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Denis Darii <sinednx@gmail.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-10-17 09:16+0000\\n\"\n\"Last-Translator: Denis Darii <sinednx@gmail.com>\\n\"\n\"Language-Team: Romanian (http://www.transifex.com/projects/p/django/language/\"\n\"ro/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ro\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?\"\n\"2:1));\\n\"\n\n#: ar/forms.py:30\nmsgid \"Enter a postal code in the format NNNN or ANNNNAAA.\"\nmsgstr \"Introduceți un cod poștal valid de forma NNNN sau ANNNNAAA.\"\n\n#: ar/forms.py:52 br/forms.py:95 br/forms.py:134 pe/forms.py:27 pe/forms.py:55\nmsgid \"This field requires only numbers.\"\nmsgstr \"Acest câmp acceptă doar numere.\"\n\n#: ar/forms.py:53\nmsgid \"This field requires 7 or 8 digits.\"\nmsgstr \"Acest câmp are nevoie de 7 sau 8 cifre.\"\n\n#: ar/forms.py:82\nmsgid \"Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.\"\nmsgstr \"Introduceți un CUIT valid de forma XX-XXXXXXXX-X sau XXXXXXXXXXXX.\"\n\n#: ar/forms.py:83\nmsgid \"Invalid CUIT.\"\nmsgstr \"CUIT invalid.\"\n\n#: ar/forms.py:84\nmsgid \"Invalid legal type. Type must be 27, 20, 23 or 30.\"\nmsgstr \"\"\n\n#: at/at_states.py:5\nmsgid \"Burgenland\"\nmsgstr \"Burgenland\"\n\n#: at/at_states.py:6\nmsgid \"Carinthia\"\nmsgstr \"Carintia\"\n\n#: at/at_states.py:7\nmsgid \"Lower Austria\"\nmsgstr \"Austria Inferioară\"\n\n#: at/at_states.py:8\nmsgid \"Upper Austria\"\nmsgstr \"Austria Superioară\"\n\n#: at/at_states.py:9\nmsgid \"Salzburg\"\nmsgstr \"Salzburg\"\n\n#: at/at_states.py:10\nmsgid \"Styria\"\nmsgstr \"Styria\"\n\n#: at/at_states.py:11\nmsgid \"Tyrol\"\nmsgstr \"Tirol\"\n\n#: at/at_states.py:12\nmsgid \"Vorarlberg\"\nmsgstr \"Vorarlberg\"\n\n#: at/at_states.py:13\nmsgid \"Vienna\"\nmsgstr \"Viena\"\n\n#: at/forms.py:22 ch/forms.py:22 no/forms.py:19\nmsgid \"Enter a zip code in the format XXXX.\"\nmsgstr \"Introduceți un cod poștal de forma XXXX.\"\n\n#: at/forms.py:50\nmsgid \"Enter a valid Austrian Social Security Number in XXXX XXXXXX format.\"\nmsgstr \"\"\n\"Introduceţi un Număr de Securitate Socială Austriac valabil în formatul XXXX \"\n\"XXXXXX.\"\n\n#: au/forms.py:26\nmsgid \"Enter a 4 digit postcode.\"\nmsgstr \"\"\n\n#: au/models.py:9\nmsgid \"Australian State\"\nmsgstr \"\"\n\n#: au/models.py:19\nmsgid \"Australian Postcode\"\nmsgstr \"\"\n\n#: au/models.py:33\nmsgid \"Australian Phone number\"\nmsgstr \"\"\n\n#: be/be_provinces.py:5\nmsgid \"Antwerp\"\nmsgstr \"Anvers\"\n\n#: be/be_provinces.py:6\nmsgid \"Brussels\"\nmsgstr \"Bruxelles\"\n\n#: be/be_provinces.py:7\nmsgid \"East Flanders\"\nmsgstr \"Flanderul de est\"\n\n#: be/be_provinces.py:8\nmsgid \"Flemish Brabant\"\nmsgstr \"Flemish Brabant\"\n\n#: be/be_provinces.py:9\nmsgid \"Hainaut\"\nmsgstr \"Hainaut\"\n\n#: be/be_provinces.py:10\nmsgid \"Liege\"\nmsgstr \"Vasal\"\n\n#: be/be_provinces.py:11 nl/nl_provinces.py:9\nmsgid \"Limburg\"\nmsgstr \"Limburg\"\n\n#: be/be_provinces.py:12\nmsgid \"Luxembourg\"\nmsgstr \"Luxemburg\"\n\n#: be/be_provinces.py:13\nmsgid \"Namur\"\nmsgstr \"Namur\"\n\n#: be/be_provinces.py:14\nmsgid \"Walloon Brabant\"\nmsgstr \"Walloon Brabant\"\n\n#: be/be_provinces.py:15\nmsgid \"West Flanders\"\nmsgstr \"Flanders de Vest\"\n\n#: be/be_regions.py:5\nmsgid \"Brussels Capital Region\"\nmsgstr \"Regiunea-Capitală din Bruxel\"\n\n#: be/be_regions.py:6\nmsgid \"Flemish Region\"\nmsgstr \"\"\n\n#: be/be_regions.py:7\nmsgid \"Wallonia\"\nmsgstr \"Valonia\"\n\n#: be/forms.py:25\nmsgid \"Enter a valid postal code in the range and format 1XXX - 9XXX.\"\nmsgstr \"\"\n\n#: be/forms.py:48\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\nmsgstr \"\"\n\"Introduceți un număr de telefon valabil în unul din următoarele formate: 0x \"\n\"xxx xx xx, 0xx xx xx xx, 04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.\"\n\"xx.xx, 0x.xxx.xx.xx, 0xx.xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\n\n#: br/forms.py:22\nmsgid \"Enter a zip code in the format XXXXX-XXX.\"\nmsgstr \"Adăugați un cod poștal de forma XXXXX-XXX.\"\n\n#: br/forms.py:31\nmsgid \"Phone numbers must be in XX-XXXX-XXXX format.\"\nmsgstr \"Numerele de telefon trebuie să fie în format XXX-XXX-XXXX.\"\n\n#: br/forms.py:58\nmsgid \"\"\n\"Select a valid brazilian state. That state is not one of the available \"\n\"states.\"\nmsgstr \"\"\n\"Selectați un stat brazilian valid. Acest stat nu se află printre statele \"\n\"disponibile.\"\n\n#: br/forms.py:93\nmsgid \"Invalid CPF number.\"\nmsgstr \"Număr CPF invalid.\"\n\n#: br/forms.py:94\nmsgid \"This field requires at most 11 digits or 14 characters.\"\nmsgstr \"Acest câmp are nevoie de cel mult 11 cifre sau 14 caractere.\"\n\n#: br/forms.py:133\nmsgid \"Invalid CNPJ number.\"\nmsgstr \"Număr CNPJ invalid.\"\n\n#: br/forms.py:135\nmsgid \"This field requires at least 14 digits\"\nmsgstr \"Acest câmp are nevoie de cel puțin 14 cifre.\"\n\n#: ca/forms.py:29\nmsgid \"Enter a postal code in the format XXX XXX.\"\nmsgstr \"Introduceți un cod poștal de forma XXX XXX.\"\n\n#: ca/forms.py:47 us/forms.py:30\nmsgid \"Phone numbers must be in XXX-XXX-XXXX format.\"\nmsgstr \"Numărul de telefon trebuie să fie în formatul XXX-XXX-XXXX.\"\n\n#: ca/forms.py:69\nmsgid \"Enter a Canadian province or territory.\"\nmsgstr \"\"\n\n#: ca/forms.py:110\nmsgid \"Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.\"\nmsgstr \"\"\n\"Introduceți un număr canadian de asigurare socială valid de forma XXX-XXX-\"\n\"XXX.\"\n\n#: ch/ch_states.py:5\nmsgid \"Aargau\"\nmsgstr \"Aargau\"\n\n#: ch/ch_states.py:6\nmsgid \"Appenzell Innerrhoden\"\nmsgstr \"Appenzell Innerrhoden\"\n\n#: ch/ch_states.py:7\nmsgid \"Appenzell Ausserrhoden\"\nmsgstr \"Appenzell Ausserrhoden\"\n\n#: ch/ch_states.py:8\nmsgid \"Basel-Stadt\"\nmsgstr \"Basel-Stadt\"\n\n#: ch/ch_states.py:9\nmsgid \"Basel-Land\"\nmsgstr \"Basel-Land\"\n\n#: ch/ch_states.py:10\nmsgid \"Berne\"\nmsgstr \"Berna\"\n\n#: ch/ch_states.py:11\nmsgid \"Fribourg\"\nmsgstr \"Fribourg\"\n\n#: ch/ch_states.py:12\nmsgid \"Geneva\"\nmsgstr \"Geneva\"\n\n#: ch/ch_states.py:13\nmsgid \"Glarus\"\nmsgstr \"Glarus\"\n\n#: ch/ch_states.py:14\nmsgid \"Graubuenden\"\nmsgstr \"Graubuenden\"\n\n#: ch/ch_states.py:15\nmsgid \"Jura\"\nmsgstr \"Jura\"\n\n#: ch/ch_states.py:16\nmsgid \"Lucerne\"\nmsgstr \"Lucerna\"\n\n#: ch/ch_states.py:17\nmsgid \"Neuchatel\"\nmsgstr \"Neuchatel\"\n\n#: ch/ch_states.py:18\nmsgid \"Nidwalden\"\nmsgstr \"Nidwalden\"\n\n#: ch/ch_states.py:19\nmsgid \"Obwalden\"\nmsgstr \"Obwalden\"\n\n#: ch/ch_states.py:20\nmsgid \"Schaffhausen\"\nmsgstr \"Schaffhausen\"\n\n#: ch/ch_states.py:21\nmsgid \"Schwyz\"\nmsgstr \"Schwyz\"\n\n#: ch/ch_states.py:22\nmsgid \"Solothurn\"\nmsgstr \"Solothurn\"\n\n#: ch/ch_states.py:23\nmsgid \"St. Gallen\"\nmsgstr \"St. Gallen\"\n\n#: ch/ch_states.py:24\nmsgid \"Thurgau\"\nmsgstr \"JoiTurgovia\"\n\n#: ch/ch_states.py:25\nmsgid \"Ticino\"\nmsgstr \"Ticino\"\n\n#: ch/ch_states.py:26\nmsgid \"Uri\"\nmsgstr \"Uri\"\n\n#: ch/ch_states.py:27\nmsgid \"Valais\"\nmsgstr \"Valais\"\n\n#: ch/ch_states.py:28\nmsgid \"Vaud\"\nmsgstr \"Vaud\"\n\n#: ch/ch_states.py:29\nmsgid \"Zug\"\nmsgstr \"Zug\"\n\n#: ch/ch_states.py:30\nmsgid \"Zurich\"\nmsgstr \"Zurich\"\n\n#: ch/forms.py:37\nmsgid \"Phone numbers must be in 0XX XXX XX XX format.\"\nmsgstr \"\"\n\n#: ch/forms.py:68\nmsgid \"\"\n\"Enter a valid Swiss identity or passport card number in X1234567<0 or \"\n\"1234567890 format.\"\nmsgstr \"\"\n\"Introduceți un număr elvetian de identitate sau pașaport, valid, de forma \"\n\"X1234567<0 sau 1234567890.\"\n\n#: cl/forms.py:32\nmsgid \"Enter a valid Chilean RUT.\"\nmsgstr \"Introduceți RUT chilian valid.\"\n\n#: cl/forms.py:33\nmsgid \"Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.\"\nmsgstr \"Introduceți un RUT chilian valid. Formatul este XX.XXX.XXX-X.\"\n\n#: cl/forms.py:34\nmsgid \"The Chilean RUT is not valid.\"\nmsgstr \"RUT-ul chilean nu este valid.\"\n\n#: cn/forms.py:84\nmsgid \"Enter a post code in the format XXXXXX.\"\nmsgstr \"\"\n\n#: cn/forms.py:105\nmsgid \"ID Card Number consists of 15 or 18 digits.\"\nmsgstr \"\"\n\n#: cn/forms.py:106\nmsgid \"Invalid ID Card Number: Wrong checksum\"\nmsgstr \"\"\n\n#: cn/forms.py:107\nmsgid \"Invalid ID Card Number: Wrong birthdate\"\nmsgstr \"\"\n\n#: cn/forms.py:108\nmsgid \"Invalid ID Card Number: Wrong location code\"\nmsgstr \"\"\n\n#: cn/forms.py:193\nmsgid \"Enter a valid phone number.\"\nmsgstr \"\"\n\n#: cn/forms.py:210\nmsgid \"Enter a valid cell number.\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:8\nmsgid \"Prague\"\nmsgstr \"Praga\"\n\n#: cz/cz_regions.py:9\nmsgid \"Central Bohemian Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:10\nmsgid \"South Bohemian Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:11\nmsgid \"Pilsen Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:12\nmsgid \"Carlsbad Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:13\nmsgid \"Usti Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:14\nmsgid \"Liberec Region\"\nmsgstr \"Regiunea Liberec\"\n\n#: cz/cz_regions.py:15\nmsgid \"Hradec Region\"\nmsgstr \"Regiunea Hradec\"\n\n#: cz/cz_regions.py:16\nmsgid \"Pardubice Region\"\nmsgstr \"Regiunea Pardubice\"\n\n#: cz/cz_regions.py:17\nmsgid \"Vysocina Region\"\nmsgstr \"Regiunea Vysočina\"\n\n#: cz/cz_regions.py:18\nmsgid \"South Moravian Region\"\nmsgstr \"Regiunea Moravia de Sud\"\n\n#: cz/cz_regions.py:19\nmsgid \"Olomouc Region\"\nmsgstr \"Regiunea Olomouc\"\n\n#: cz/cz_regions.py:20\nmsgid \"Zlin Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:21\nmsgid \"Moravian-Silesian Region\"\nmsgstr \"\"\n\n#: cz/forms.py:32 sk/forms.py:33\nmsgid \"Enter a postal code in the format XXXXX or XXX XX.\"\nmsgstr \"Introduceți un cod poștal de forma XXXXX or XXX XX.\"\n\n#: cz/forms.py:52\nmsgid \"Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.\"\nmsgstr \"Introduceți data de naștere în formatul XXXXXX/XXXX sau XXXXXXXXXX.\"\n\n#: cz/forms.py:53\nmsgid \"Enter a valid birth number.\"\nmsgstr \"Introduceți data de nastere valabilă\"\n\n#: cz/forms.py:102\nmsgid \"Enter a valid IC number.\"\nmsgstr \"\"\n\n#: de/de_states.py:5\nmsgid \"Baden-Wuerttemberg\"\nmsgstr \"Baden-Wuerttemberg\"\n\n#: de/de_states.py:6\nmsgid \"Bavaria\"\nmsgstr \"Bavaria\"\n\n#: de/de_states.py:7\nmsgid \"Berlin\"\nmsgstr \"Berlin\"\n\n#: de/de_states.py:8\nmsgid \"Brandenburg\"\nmsgstr \"Brandenburg\"\n\n#: de/de_states.py:9\nmsgid \"Bremen\"\nmsgstr \"Bremen\"\n\n#: de/de_states.py:10\nmsgid \"Hamburg\"\nmsgstr \"Hamburg\"\n\n#: de/de_states.py:11\nmsgid \"Hessen\"\nmsgstr \"Hessa\"\n\n#: de/de_states.py:12\nmsgid \"Mecklenburg-Western Pomerania\"\nmsgstr \"Mecklenburg-Pomerania Inferioara\"\n\n#: de/de_states.py:13\nmsgid \"Lower Saxony\"\nmsgstr \"Saxonia Inferioara\"\n\n#: de/de_states.py:14\nmsgid \"North Rhine-Westphalia\"\nmsgstr \"Renania de Nord-Westfalia\"\n\n#: de/de_states.py:15\nmsgid \"Rhineland-Palatinate\"\nmsgstr \"Renanina-Palatinat\"\n\n#: de/de_states.py:16\nmsgid \"Saarland\"\nmsgstr \"Saarland\"\n\n#: de/de_states.py:17\nmsgid \"Saxony\"\nmsgstr \"Saxonia\"\n\n#: de/de_states.py:18\nmsgid \"Saxony-Anhalt\"\nmsgstr \"Saxonia-Anhalt\"\n\n#: de/de_states.py:19\nmsgid \"Schleswig-Holstein\"\nmsgstr \"Schleswig-Holstein\"\n\n#: de/de_states.py:20\nmsgid \"Thuringia\"\nmsgstr \"Turingia\"\n\n#: de/forms.py:20 fi/forms.py:18 fr/forms.py:20\nmsgid \"Enter a zip code in the format XXXXX.\"\nmsgstr \"Introduceți un cod poștal de forma XXXXX.\"\n\n#: de/forms.py:46\nmsgid \"\"\n\"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"format.\"\nmsgstr \"\"\n\"Introduceți un număr german de identitate valid, de forma XXXXXXXXXXX-\"\n\"XXXXXXX-XXXXXXX-X.\"\n\n#: es/es_provinces.py:5\nmsgid \"Araba\"\nmsgstr \"\"\n\n#: es/es_provinces.py:6\nmsgid \"Albacete\"\nmsgstr \"Albacete\"\n\n#: es/es_provinces.py:7\nmsgid \"Alacant\"\nmsgstr \"Alacant\"\n\n#: es/es_provinces.py:8\nmsgid \"Almeria\"\nmsgstr \"Almeria\"\n\n#: es/es_provinces.py:9\nmsgid \"Avila\"\nmsgstr \"Avila\"\n\n#: es/es_provinces.py:10\nmsgid \"Badajoz\"\nmsgstr \"Badajoz\"\n\n#: es/es_provinces.py:11\nmsgid \"Illes Balears\"\nmsgstr \"Insulele Baleare\"\n\n#: es/es_provinces.py:12\nmsgid \"Barcelona\"\nmsgstr \"Barcelona\"\n\n#: es/es_provinces.py:13\nmsgid \"Burgos\"\nmsgstr \"Burgos\"\n\n#: es/es_provinces.py:14\nmsgid \"Caceres\"\nmsgstr \"Caceres\"\n\n#: es/es_provinces.py:15\nmsgid \"Cadiz\"\nmsgstr \"Cadiz\"\n\n#: es/es_provinces.py:16\nmsgid \"Castello\"\nmsgstr \"Castello\"\n\n#: es/es_provinces.py:17\nmsgid \"Ciudad Real\"\nmsgstr \"Ciudad Real\"\n\n#: es/es_provinces.py:18\nmsgid \"Cordoba\"\nmsgstr \"Cordoba\"\n\n#: es/es_provinces.py:19\nmsgid \"A Coruna\"\nmsgstr \"A Coruna\"\n\n#: es/es_provinces.py:20\nmsgid \"Cuenca\"\nmsgstr \"Cuenca\"\n\n#: es/es_provinces.py:21\nmsgid \"Girona\"\nmsgstr \"Girona\"\n\n#: es/es_provinces.py:22\nmsgid \"Granada\"\nmsgstr \"Granada\"\n\n#: es/es_provinces.py:23\nmsgid \"Guadalajara\"\nmsgstr \"Guadalajara\"\n\n#: es/es_provinces.py:24\nmsgid \"Guipuzkoa\"\nmsgstr \"Guipuzkoa\"\n\n#: es/es_provinces.py:25\nmsgid \"Huelva\"\nmsgstr \"Huelva\"\n\n#: es/es_provinces.py:26\nmsgid \"Huesca\"\nmsgstr \"Huesca\"\n\n#: es/es_provinces.py:27\nmsgid \"Jaen\"\nmsgstr \"Jaen\"\n\n#: es/es_provinces.py:28\nmsgid \"Leon\"\nmsgstr \"Leon\"\n\n#: es/es_provinces.py:29\nmsgid \"Lleida\"\nmsgstr \"Lleida\"\n\n#: es/es_provinces.py:30 es/es_regions.py:17\nmsgid \"La Rioja\"\nmsgstr \"La Rioja\"\n\n#: es/es_provinces.py:31\nmsgid \"Lugo\"\nmsgstr \"Lugo\"\n\n#: es/es_provinces.py:32 es/es_regions.py:18\nmsgid \"Madrid\"\nmsgstr \"Madrid\"\n\n#: es/es_provinces.py:33\nmsgid \"Malaga\"\nmsgstr \"Malaga\"\n\n#: es/es_provinces.py:34\nmsgid \"Murcia\"\nmsgstr \"Murcia\"\n\n#: es/es_provinces.py:35\nmsgid \"Navarre\"\nmsgstr \"Navarra\"\n\n#: es/es_provinces.py:36\nmsgid \"Ourense\"\nmsgstr \"Ourense\"\n\n#: es/es_provinces.py:37\nmsgid \"Asturias\"\nmsgstr \"Asturias\"\n\n#: es/es_provinces.py:38\nmsgid \"Palencia\"\nmsgstr \"Palencia\"\n\n#: es/es_provinces.py:39\nmsgid \"Las Palmas\"\nmsgstr \"Las Palmas\"\n\n#: es/es_provinces.py:40\nmsgid \"Pontevedra\"\nmsgstr \"Pontevedra\"\n\n#: es/es_provinces.py:41\nmsgid \"Salamanca\"\nmsgstr \"Salamanca\"\n\n#: es/es_provinces.py:42\nmsgid \"Santa Cruz de Tenerife\"\nmsgstr \"Santa Cruz de Tenerife\"\n\n#: es/es_provinces.py:43 es/es_regions.py:11\nmsgid \"Cantabria\"\nmsgstr \"Cantabria\"\n\n#: es/es_provinces.py:44\nmsgid \"Segovia\"\nmsgstr \"Segovia\"\n\n#: es/es_provinces.py:45\nmsgid \"Seville\"\nmsgstr \"Sevilia\"\n\n#: es/es_provinces.py:46\nmsgid \"Soria\"\nmsgstr \"Soria\"\n\n#: es/es_provinces.py:47\nmsgid \"Tarragona\"\nmsgstr \"Tarragona\"\n\n#: es/es_provinces.py:48\nmsgid \"Teruel\"\nmsgstr \"Teruel\"\n\n#: es/es_provinces.py:49\nmsgid \"Toledo\"\nmsgstr \"Toledo\"\n\n#: es/es_provinces.py:50\nmsgid \"Valencia\"\nmsgstr \"Valencia\"\n\n#: es/es_provinces.py:51\nmsgid \"Valladolid\"\nmsgstr \"Valladolid\"\n\n#: es/es_provinces.py:52\nmsgid \"Bizkaia\"\nmsgstr \"Bizkaia\"\n\n#: es/es_provinces.py:53\nmsgid \"Zamora\"\nmsgstr \"Zamora\"\n\n#: es/es_provinces.py:54\nmsgid \"Zaragoza\"\nmsgstr \"Zaragoza\"\n\n#: es/es_provinces.py:55\nmsgid \"Ceuta\"\nmsgstr \"Ceuta\"\n\n#: es/es_provinces.py:56\nmsgid \"Melilla\"\nmsgstr \"Melilla\"\n\n#: es/es_regions.py:5\nmsgid \"Andalusia\"\nmsgstr \"Andalusia\"\n\n#: es/es_regions.py:6\nmsgid \"Aragon\"\nmsgstr \"Aragon\"\n\n#: es/es_regions.py:7\nmsgid \"Principality of Asturias\"\nmsgstr \"Principatul Asturiei\"\n\n#: es/es_regions.py:8\nmsgid \"Balearic Islands\"\nmsgstr \"Insulele Baleare\"\n\n#: es/es_regions.py:9\nmsgid \"Basque Country\"\nmsgstr \"Tara Bascilor\"\n\n#: es/es_regions.py:10\nmsgid \"Canary Islands\"\nmsgstr \"Insulele Canare\"\n\n#: es/es_regions.py:12\nmsgid \"Castile-La Mancha\"\nmsgstr \"Castile-La Mancha\"\n\n#: es/es_regions.py:13\nmsgid \"Castile and Leon\"\nmsgstr \"Castilia și Leon\"\n\n#: es/es_regions.py:14\nmsgid \"Catalonia\"\nmsgstr \"Catalonia\"\n\n#: es/es_regions.py:15\nmsgid \"Extremadura\"\nmsgstr \"Extremadura\"\n\n#: es/es_regions.py:16\nmsgid \"Galicia\"\nmsgstr \"Galicia\"\n\n#: es/es_regions.py:19\nmsgid \"Region of Murcia\"\nmsgstr \"Regiunea Murcia\"\n\n#: es/es_regions.py:20\nmsgid \"Foral Community of Navarre\"\nmsgstr \"Comunitatea Forală Navara\"\n\n#: es/es_regions.py:21\nmsgid \"Valencian Community\"\nmsgstr \"Comunitatea Valencia\"\n\n#: es/forms.py:26\nmsgid \"Enter a valid postal code in the range and format 01XXX - 52XXX.\"\nmsgstr \"\"\n\"Introduceți un cod poștal valid în intervalul și de forma 01XXX - 52XXX.\"\n\n#: es/forms.py:46\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or \"\n\"9XXXXXXXX.\"\nmsgstr \"\"\n\"Introduceți un număr de telefon valid într-unul dintre formatele 6XXXXXXXX, \"\n\"8XXXXXXXX sau 9XXXXXXXX.\"\n\n#: es/forms.py:73\nmsgid \"Please enter a valid NIF, NIE, or CIF.\"\nmsgstr \"Introduceţi vă rog un NIF, NIE sau CIF valid.\"\n\n#: es/forms.py:74\nmsgid \"Please enter a valid NIF or NIE.\"\nmsgstr \"Introduceți vă rog un NIF sau NIE valid.\"\n\n#: es/forms.py:75\nmsgid \"Invalid checksum for NIF.\"\nmsgstr \"Sumă de control invalidă pentru NIF.\"\n\n#: es/forms.py:76\nmsgid \"Invalid checksum for NIE.\"\nmsgstr \"Sumă de control invalidă pentru NIE.\"\n\n#: es/forms.py:77\nmsgid \"Invalid checksum for CIF.\"\nmsgstr \"Sumă de control invalidă pentru CIF.\"\n\n#: es/forms.py:149\nmsgid \"\"\n\"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.\"\nmsgstr \"\"\n\"Introduceți un număr de cont bancar valid de forma XXXX-XXXX-XX-XXXXXXXXXX.\"\n\n#: es/forms.py:150\nmsgid \"Invalid checksum for bank account number.\"\nmsgstr \"Sumă de control invalidă pentru numărul de cont bancar.\"\n\n#: fi/forms.py:33\nmsgid \"Enter a valid Finnish social security number.\"\nmsgstr \"Introduceți un număr finlandez de securitate socială valid.\"\n\n#: fr/forms.py:35\nmsgid \"Phone numbers must be in 0X XX XX XX XX format.\"\nmsgstr \"Numerele de telefon trebuie să fie în formatul 0X XX XX XX XX.\"\n\n#: gb/forms.py:25\nmsgid \"Enter a valid postcode.\"\nmsgstr \"Introduceți un cod poștal valid.\"\n\n#: gb/gb_regions.py:11\nmsgid \"Bedfordshire\"\nmsgstr \"Bedfordshire\"\n\n#: gb/gb_regions.py:12\nmsgid \"Buckinghamshire\"\nmsgstr \"Buckinghamshire\"\n\n#: gb/gb_regions.py:14\nmsgid \"Cheshire\"\nmsgstr \"Cheshire\"\n\n#: gb/gb_regions.py:15\nmsgid \"Cornwall and Isles of Scilly\"\nmsgstr \"Cornwall și Insulele Scilly\"\n\n#: gb/gb_regions.py:16\nmsgid \"Cumbria\"\nmsgstr \"Cumbria\"\n\n#: gb/gb_regions.py:17\nmsgid \"Derbyshire\"\nmsgstr \"Derbyshire\"\n\n#: gb/gb_regions.py:18\nmsgid \"Devon\"\nmsgstr \"Devon\"\n\n#: gb/gb_regions.py:19\nmsgid \"Dorset\"\nmsgstr \"Dorset\"\n\n#: gb/gb_regions.py:20\nmsgid \"Durham\"\nmsgstr \"Durham\"\n\n#: gb/gb_regions.py:21\nmsgid \"East Sussex\"\nmsgstr \"East Sussex\"\n\n#: gb/gb_regions.py:22\nmsgid \"Essex\"\nmsgstr \"Essex\"\n\n#: gb/gb_regions.py:23\nmsgid \"Gloucestershire\"\nmsgstr \"Gloucestershire\"\n\n#: gb/gb_regions.py:24\nmsgid \"Greater London\"\nmsgstr \"Londra Mare\"\n\n#: gb/gb_regions.py:25\nmsgid \"Greater Manchester\"\nmsgstr \"Greater Manchester\"\n\n#: gb/gb_regions.py:26\nmsgid \"Hampshire\"\nmsgstr \"Hampshire\"\n\n#: gb/gb_regions.py:27\nmsgid \"Hertfordshire\"\nmsgstr \"Hertfordshire\"\n\n#: gb/gb_regions.py:28\nmsgid \"Kent\"\nmsgstr \"Kent\"\n\n#: gb/gb_regions.py:29\nmsgid \"Lancashire\"\nmsgstr \"Lancashire\"\n\n#: gb/gb_regions.py:30\nmsgid \"Leicestershire\"\nmsgstr \"Leicestershire\"\n\n#: gb/gb_regions.py:31\nmsgid \"Lincolnshire\"\nmsgstr \"Lincolnshire\"\n\n#: gb/gb_regions.py:32\nmsgid \"Merseyside\"\nmsgstr \"Merseyside\"\n\n#: gb/gb_regions.py:33\nmsgid \"Norfolk\"\nmsgstr \"Norfolk\"\n\n#: gb/gb_regions.py:34\nmsgid \"North Yorkshire\"\nmsgstr \"North Yorkshire\"\n\n#: gb/gb_regions.py:35\nmsgid \"Northamptonshire\"\nmsgstr \"Northamptonshire\"\n\n#: gb/gb_regions.py:36\nmsgid \"Northumberland\"\nmsgstr \"Northumberland\"\n\n#: gb/gb_regions.py:37\nmsgid \"Nottinghamshire\"\nmsgstr \"Nottinghamshire\"\n\n#: gb/gb_regions.py:38\nmsgid \"Oxfordshire\"\nmsgstr \"Oxfordshire\"\n\n#: gb/gb_regions.py:39\nmsgid \"Shropshire\"\nmsgstr \"Shropshire\"\n\n#: gb/gb_regions.py:40\nmsgid \"Somerset\"\nmsgstr \"Somerset\"\n\n#: gb/gb_regions.py:41\nmsgid \"South Yorkshire\"\nmsgstr \"South Yorkshire\"\n\n#: gb/gb_regions.py:42\nmsgid \"Staffordshire\"\nmsgstr \"Staffordshire\"\n\n#: gb/gb_regions.py:43\nmsgid \"Suffolk\"\nmsgstr \"Suffolk\"\n\n#: gb/gb_regions.py:44\nmsgid \"Surrey\"\nmsgstr \"Surrey\"\n\n#: gb/gb_regions.py:45\nmsgid \"Tyne and Wear\"\nmsgstr \"Tyne și Wear\"\n\n#: gb/gb_regions.py:46\nmsgid \"Warwickshire\"\nmsgstr \"Warwickshire\"\n\n#: gb/gb_regions.py:47\nmsgid \"West Midlands\"\nmsgstr \"West Midlands\"\n\n#: gb/gb_regions.py:48\nmsgid \"West Sussex\"\nmsgstr \"West Sussex\"\n\n#: gb/gb_regions.py:49\nmsgid \"West Yorkshire\"\nmsgstr \"West Yorkshire\"\n\n#: gb/gb_regions.py:50\nmsgid \"Wiltshire\"\nmsgstr \"Wiltshire\"\n\n#: gb/gb_regions.py:51\nmsgid \"Worcestershire\"\nmsgstr \"Worcestershire\"\n\n#: gb/gb_regions.py:55\nmsgid \"County Antrim\"\nmsgstr \"Comitatul Antrim\"\n\n#: gb/gb_regions.py:56\nmsgid \"County Armagh\"\nmsgstr \"Comitatul Armagh\"\n\n#: gb/gb_regions.py:57\nmsgid \"County Down\"\nmsgstr \"Comitatul Down\"\n\n#: gb/gb_regions.py:58\nmsgid \"County Fermanagh\"\nmsgstr \"Comitatul Fermanagh\"\n\n#: gb/gb_regions.py:59\nmsgid \"County Londonderry\"\nmsgstr \"Comitatul Londonderry\"\n\n#: gb/gb_regions.py:60\nmsgid \"County Tyrone\"\nmsgstr \"Comitatul Tyrone\"\n\n#: gb/gb_regions.py:64\nmsgid \"Clwyd\"\nmsgstr \"Clwyd\"\n\n#: gb/gb_regions.py:65\nmsgid \"Dyfed\"\nmsgstr \"Dyfed\"\n\n#: gb/gb_regions.py:66\nmsgid \"Gwent\"\nmsgstr \"Gwent\"\n\n#: gb/gb_regions.py:67\nmsgid \"Gwynedd\"\nmsgstr \"Gwynedd\"\n\n#: gb/gb_regions.py:68\nmsgid \"Mid Glamorgan\"\nmsgstr \"Mid Glamorgan\"\n\n#: gb/gb_regions.py:69\nmsgid \"Powys\"\nmsgstr \"Powys\"\n\n#: gb/gb_regions.py:70\nmsgid \"South Glamorgan\"\nmsgstr \"South Glamorgan\"\n\n#: gb/gb_regions.py:71\nmsgid \"West Glamorgan\"\nmsgstr \"West Glamorgan\"\n\n#: gb/gb_regions.py:75\nmsgid \"Borders\"\nmsgstr \"Borders\"\n\n#: gb/gb_regions.py:76\nmsgid \"Central Scotland\"\nmsgstr \"Central Scotland\"\n\n#: gb/gb_regions.py:77\nmsgid \"Dumfries and Galloway\"\nmsgstr \"Dumfries și Galloway\"\n\n#: gb/gb_regions.py:78\nmsgid \"Fife\"\nmsgstr \"Fife\"\n\n#: gb/gb_regions.py:79\nmsgid \"Grampian\"\nmsgstr \"Grampian\"\n\n#: gb/gb_regions.py:80\nmsgid \"Highland\"\nmsgstr \"Highland\"\n\n#: gb/gb_regions.py:81\nmsgid \"Lothian\"\nmsgstr \"Lothian\"\n\n#: gb/gb_regions.py:82\nmsgid \"Orkney Islands\"\nmsgstr \"Orkney Islands\"\n\n#: gb/gb_regions.py:83\nmsgid \"Shetland Islands\"\nmsgstr \"Shetland Islands\"\n\n#: gb/gb_regions.py:84\nmsgid \"Strathclyde\"\nmsgstr \"Strathclyde\"\n\n#: gb/gb_regions.py:85\nmsgid \"Tayside\"\nmsgstr \"Tayside\"\n\n#: gb/gb_regions.py:86\nmsgid \"Western Isles\"\nmsgstr \"Western Isles\"\n\n#: gb/gb_regions.py:90\nmsgid \"England\"\nmsgstr \"Anglia\"\n\n#: gb/gb_regions.py:91\nmsgid \"Northern Ireland\"\nmsgstr \"Irlanda de Nord\"\n\n#: gb/gb_regions.py:92\nmsgid \"Scotland\"\nmsgstr \"Scotia\"\n\n#: gb/gb_regions.py:93\nmsgid \"Wales\"\nmsgstr \"Țara Galilor\"\n\n#: hk/forms.py:37\n#, python-format\nmsgid \"Phone number should not start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:40\n#, python-format\nmsgid \"Phone number must be in one of the following formats: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:42\n#, python-format\nmsgid \"Phone number should start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hr/forms.py:76\nmsgid \"Enter a valid 13 digit JMBG\"\nmsgstr \"\"\n\n#: hr/forms.py:77\nmsgid \"Error in date segment\"\nmsgstr \"\"\n\n#: hr/forms.py:123\nmsgid \"Enter a valid 11 digit OIB\"\nmsgstr \"\"\n\n#: hr/forms.py:152 id/forms.py:112\nmsgid \"Enter a valid vehicle license plate number\"\nmsgstr \"\"\n\n#: hr/forms.py:153\nmsgid \"Enter a valid location code\"\nmsgstr \"\"\n\n#: hr/forms.py:154\nmsgid \"Number part cannot be zero\"\nmsgstr \"\"\n\n#: hr/forms.py:190\nmsgid \"Enter a valid 5 digit postal code\"\nmsgstr \"\"\n\n#: hr/forms.py:218 id/forms.py:72 nl/forms.py:56\nmsgid \"Enter a valid phone number\"\nmsgstr \"Introduceţi un număr de telefon valid\"\n\n#: hr/forms.py:219\nmsgid \"Enter a valid area or mobile network code\"\nmsgstr \"\"\n\n#: hr/forms.py:220\nmsgid \"The phone nubmer is too long\"\nmsgstr \"\"\n\n#: hr/forms.py:258\nmsgid \"Enter a valid 19 digit JMBAG starting with 601983\"\nmsgstr \"\"\n\n#: hr/forms.py:259\nmsgid \"Card issue number cannot be zero\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:14\nmsgid \"Grad Zagreb\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:15\nmsgid \"Bjelovarsko-bilogorska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:16\nmsgid \"Brodsko-posavska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:17\nmsgid \"Dubrovačko-neretvanska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:18\nmsgid \"Istarska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:19\nmsgid \"Karlovačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:20\nmsgid \"Koprivničko-križevačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:21\nmsgid \"Krapinsko-zagorska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:22\nmsgid \"Ličko-senjska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:23\nmsgid \"Međimurska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:24\nmsgid \"Osječko-baranjska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:25\nmsgid \"Požeško-slavonska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:26\nmsgid \"Primorsko-goranska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:27\nmsgid \"Sisačko-moslavačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:28\nmsgid \"Splitsko-dalmatinska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:29\nmsgid \"Šibensko-kninska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:30\nmsgid \"Varaždinska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:31\nmsgid \"Virovitičko-podravska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:32\nmsgid \"Vukovarsko-srijemska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:33\nmsgid \"Zadarska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:34\nmsgid \"Zagrebačka županija\"\nmsgstr \"\"\n\n#: id/forms.py:31\nmsgid \"Enter a valid post code\"\nmsgstr \"Introduceţi un cod poştal valabil\"\n\n#: id/forms.py:176\nmsgid \"Enter a valid NIK/KTP number\"\nmsgstr \"\"\n\n#: id/id_choices.py:15\nmsgid \"Aceh\"\nmsgstr \"\"\n\n#: id/id_choices.py:16 id/id_choices.py:79\nmsgid \"Bali\"\nmsgstr \"\"\n\n#: id/id_choices.py:17 id/id_choices.py:51\nmsgid \"Banten\"\nmsgstr \"\"\n\n#: id/id_choices.py:18 id/id_choices.py:60\nmsgid \"Bengkulu\"\nmsgstr \"\"\n\n#: id/id_choices.py:19 id/id_choices.py:53\nmsgid \"Yogyakarta\"\nmsgstr \"\"\n\n#: id/id_choices.py:20 id/id_choices.py:57\nmsgid \"Jakarta\"\nmsgstr \"\"\n\n#: id/id_choices.py:21 id/id_choices.py:81\nmsgid \"Gorontalo\"\nmsgstr \"\"\n\n#: id/id_choices.py:22 id/id_choices.py:63\nmsgid \"Jambi\"\nmsgstr \"\"\n\n#: id/id_choices.py:23\nmsgid \"Jawa Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:24\nmsgid \"Jawa Tengah\"\nmsgstr \"\"\n\n#: id/id_choices.py:25\nmsgid \"Jawa Timur\"\nmsgstr \"\"\n\n#: id/id_choices.py:26 id/id_choices.py:94\nmsgid \"Kalimantan Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:27 id/id_choices.py:72\nmsgid \"Kalimantan Selatan\"\nmsgstr \"\"\n\n#: id/id_choices.py:28 id/id_choices.py:95\nmsgid \"Kalimantan Tengah\"\nmsgstr \"\"\n\n#: id/id_choices.py:29 id/id_choices.py:96\nmsgid \"Kalimantan Timur\"\nmsgstr \"\"\n\n#: id/id_choices.py:30\nmsgid \"Kepulauan Bangka-Belitung\"\nmsgstr \"\"\n\n#: id/id_choices.py:31 id/id_choices.py:68\nmsgid \"Kepulauan Riau\"\nmsgstr \"\"\n\n#: id/id_choices.py:32 id/id_choices.py:61\nmsgid \"Lampung\"\nmsgstr \"Lampung\"\n\n#: id/id_choices.py:33 id/id_choices.py:76\nmsgid \"Maluku\"\nmsgstr \"\"\n\n#: id/id_choices.py:34 id/id_choices.py:77\nmsgid \"Maluku Utara\"\nmsgstr \"\"\n\n#: id/id_choices.py:35\nmsgid \"Nusa Tenggara Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:36\nmsgid \"Nusa Tenggara Timur\"\nmsgstr \"\"\n\n#: id/id_choices.py:37\nmsgid \"Papua\"\nmsgstr \"Papua\"\n\n#: id/id_choices.py:38\nmsgid \"Papua Barat\"\nmsgstr \"Papua Barat\"\n\n#: id/id_choices.py:39 id/id_choices.py:66\nmsgid \"Riau\"\nmsgstr \"\"\n\n#: id/id_choices.py:40 id/id_choices.py:74\nmsgid \"Sulawesi Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:41 id/id_choices.py:75\nmsgid \"Sulawesi Selatan\"\nmsgstr \"\"\n\n#: id/id_choices.py:42 id/id_choices.py:82\nmsgid \"Sulawesi Tengah\"\nmsgstr \"\"\n\n#: id/id_choices.py:43 id/id_choices.py:85\nmsgid \"Sulawesi Tenggara\"\nmsgstr \"\"\n\n#: id/id_choices.py:44\nmsgid \"Sulawesi Utara\"\nmsgstr \"\"\n\n#: id/id_choices.py:45 id/id_choices.py:58\nmsgid \"Sumatera Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:46 id/id_choices.py:62\nmsgid \"Sumatera Selatan\"\nmsgstr \"\"\n\n#: id/id_choices.py:47 id/id_choices.py:64\nmsgid \"Sumatera Utara\"\nmsgstr \"\"\n\n#: id/id_choices.py:52\nmsgid \"Magelang\"\nmsgstr \"\"\n\n#: id/id_choices.py:54\nmsgid \"Surakarta - Solo\"\nmsgstr \"\"\n\n#: id/id_choices.py:55\nmsgid \"Madiun\"\nmsgstr \"\"\n\n#: id/id_choices.py:56\nmsgid \"Kediri\"\nmsgstr \"\"\n\n#: id/id_choices.py:59\nmsgid \"Tapanuli\"\nmsgstr \"\"\n\n#: id/id_choices.py:65\nmsgid \"Nanggroe Aceh Darussalam\"\nmsgstr \"\"\n\n#: id/id_choices.py:67\nmsgid \"Kepulauan Bangka Belitung\"\nmsgstr \"\"\n\n#: id/id_choices.py:69\nmsgid \"Corps Consulate\"\nmsgstr \"\"\n\n#: id/id_choices.py:70\nmsgid \"Corps Diplomatic\"\nmsgstr \"\"\n\n#: id/id_choices.py:71\nmsgid \"Bandung\"\nmsgstr \"\"\n\n#: id/id_choices.py:73\nmsgid \"Sulawesi Utara Daratan\"\nmsgstr \"\"\n\n#: id/id_choices.py:78\nmsgid \"NTT - Timor\"\nmsgstr \"\"\n\n#: id/id_choices.py:80\nmsgid \"Sulawesi Utara Kepulauan\"\nmsgstr \"\"\n\n#: id/id_choices.py:83\nmsgid \"NTB - Lombok\"\nmsgstr \"\"\n\n#: id/id_choices.py:84\nmsgid \"Papua dan Papua Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:86\nmsgid \"Cirebon\"\nmsgstr \"\"\n\n#: id/id_choices.py:87\nmsgid \"NTB - Sumbawa\"\nmsgstr \"\"\n\n#: id/id_choices.py:88\nmsgid \"NTT - Flores\"\nmsgstr \"\"\n\n#: id/id_choices.py:89\nmsgid \"NTT - Sumba\"\nmsgstr \"\"\n\n#: id/id_choices.py:90\nmsgid \"Bogor\"\nmsgstr \"\"\n\n#: id/id_choices.py:91\nmsgid \"Pekalongan\"\nmsgstr \"\"\n\n#: id/id_choices.py:92\nmsgid \"Semarang\"\nmsgstr \"\"\n\n#: id/id_choices.py:93\nmsgid \"Pati\"\nmsgstr \"\"\n\n#: id/id_choices.py:97\nmsgid \"Surabaya\"\nmsgstr \"\"\n\n#: id/id_choices.py:98\nmsgid \"Madura\"\nmsgstr \"\"\n\n#: id/id_choices.py:99\nmsgid \"Malang\"\nmsgstr \"\"\n\n#: id/id_choices.py:100\nmsgid \"Jember\"\nmsgstr \"\"\n\n#: id/id_choices.py:101\nmsgid \"Banyumas\"\nmsgstr \"\"\n\n#: id/id_choices.py:102\nmsgid \"Federal Government\"\nmsgstr \"\"\n\n#: id/id_choices.py:103\nmsgid \"Bojonegoro\"\nmsgstr \"\"\n\n#: id/id_choices.py:104\nmsgid \"Purwakarta\"\nmsgstr \"\"\n\n#: id/id_choices.py:105\nmsgid \"Sidoarjo\"\nmsgstr \"\"\n\n#: id/id_choices.py:106\nmsgid \"Garut\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:8\nmsgid \"Antrim\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:9\nmsgid \"Armagh\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:10\nmsgid \"Carlow\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:11\nmsgid \"Cavan\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:12\nmsgid \"Clare\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:13\nmsgid \"Cork\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:14\nmsgid \"Derry\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:15\nmsgid \"Donegal\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:16\nmsgid \"Down\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:17\nmsgid \"Dublin\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:18\nmsgid \"Fermanagh\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:19\nmsgid \"Galway\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:20\nmsgid \"Kerry\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:21\nmsgid \"Kildare\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:22\nmsgid \"Kilkenny\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:23\nmsgid \"Laois\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:24\nmsgid \"Leitrim\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:25\nmsgid \"Limerick\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:26\nmsgid \"Longford\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:27\nmsgid \"Louth\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:28\nmsgid \"Mayo\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:29\nmsgid \"Meath\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:30\nmsgid \"Monaghan\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:31\nmsgid \"Offaly\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:32\nmsgid \"Roscommon\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:33\nmsgid \"Sligo\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:34\nmsgid \"Tipperary\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:35\nmsgid \"Tyrone\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:36\nmsgid \"Waterford\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:37\nmsgid \"Westmeath\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:38\nmsgid \"Wexford\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:39\nmsgid \"Wicklow\"\nmsgstr \"\"\n\n#: il/forms.py:32\nmsgid \"Enter a postal code in the format XXXXX\"\nmsgstr \"Introduceți codul poștal în următorul format XXXXX\"\n\n#: il/forms.py:51\nmsgid \"Enter a valid ID number.\"\nmsgstr \"\"\n\n#: in_/forms.py:41\nmsgid \"Enter a zip code in the format XXXXXX or XXX XXX.\"\nmsgstr \"\"\n\n#: in_/forms.py:64\nmsgid \"Enter an Indian state or territory.\"\nmsgstr \"\"\n\n#: in_/forms.py:103\nmsgid \"Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.\"\nmsgstr \"\"\n\n#: is_/forms.py:22\nmsgid \"\"\n\"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.\"\nmsgstr \"\"\n\"Introduceți un număr islandez de autentificare valid. Formatul este XXXXXX-\"\n\"XXXX.\"\n\n#: is_/forms.py:23\nmsgid \"The Icelandic identification number is not valid.\"\nmsgstr \"Numărul islandez de identificare nu este valid.\"\n\n#: it/forms.py:21\nmsgid \"Enter a valid zip code.\"\nmsgstr \"Introduceți un cod poștal valid.\"\n\n#: it/forms.py:48\nmsgid \"Enter a valid Social Security number.\"\nmsgstr \"Introduceți un număr de securitate socială valid.\"\n\n#: it/forms.py:73\nmsgid \"Enter a valid VAT number.\"\nmsgstr \"Introduceți un număr TVA valid.\"\n\n#: jp/forms.py:19\nmsgid \"Enter a postal code in the format XXXXXXX or XXX-XXXX.\"\nmsgstr \"Introduceți un cod poștal de forma XXXXXXX sau XXX-XXXX.\"\n\n#: jp/jp_prefectures.py:4\nmsgid \"Hokkaido\"\nmsgstr \"Hokkaido\"\n\n#: jp/jp_prefectures.py:5\nmsgid \"Aomori\"\nmsgstr \"Aomori\"\n\n#: jp/jp_prefectures.py:6\nmsgid \"Iwate\"\nmsgstr \"Iwate\"\n\n#: jp/jp_prefectures.py:7\nmsgid \"Miyagi\"\nmsgstr \"Miyagi\"\n\n#: jp/jp_prefectures.py:8\nmsgid \"Akita\"\nmsgstr \"Akita\"\n\n#: jp/jp_prefectures.py:9\nmsgid \"Yamagata\"\nmsgstr \"Yamagata\"\n\n#: jp/jp_prefectures.py:10\nmsgid \"Fukushima\"\nmsgstr \"Fukushima\"\n\n#: jp/jp_prefectures.py:11\nmsgid \"Ibaraki\"\nmsgstr \"Ibaraki\"\n\n#: jp/jp_prefectures.py:12\nmsgid \"Tochigi\"\nmsgstr \"Tochigi\"\n\n#: jp/jp_prefectures.py:13\nmsgid \"Gunma\"\nmsgstr \"Gunma\"\n\n#: jp/jp_prefectures.py:14\nmsgid \"Saitama\"\nmsgstr \"Saitama\"\n\n#: jp/jp_prefectures.py:15\nmsgid \"Chiba\"\nmsgstr \"Chiba\"\n\n#: jp/jp_prefectures.py:16\nmsgid \"Tokyo\"\nmsgstr \"Tokyo\"\n\n#: jp/jp_prefectures.py:17\nmsgid \"Kanagawa\"\nmsgstr \"Kanagawa\"\n\n#: jp/jp_prefectures.py:18\nmsgid \"Yamanashi\"\nmsgstr \"Yamanashi\"\n\n#: jp/jp_prefectures.py:19\nmsgid \"Nagano\"\nmsgstr \"Nagano\"\n\n#: jp/jp_prefectures.py:20\nmsgid \"Niigata\"\nmsgstr \"Niigata\"\n\n#: jp/jp_prefectures.py:21\nmsgid \"Toyama\"\nmsgstr \"Toyama\"\n\n#: jp/jp_prefectures.py:22\nmsgid \"Ishikawa\"\nmsgstr \"Ishikawa\"\n\n#: jp/jp_prefectures.py:23\nmsgid \"Fukui\"\nmsgstr \"Fukui\"\n\n#: jp/jp_prefectures.py:24\nmsgid \"Gifu\"\nmsgstr \"Gifu\"\n\n#: jp/jp_prefectures.py:25\nmsgid \"Shizuoka\"\nmsgstr \"Shizuoka\"\n\n#: jp/jp_prefectures.py:26\nmsgid \"Aichi\"\nmsgstr \"Aichi\"\n\n#: jp/jp_prefectures.py:27\nmsgid \"Mie\"\nmsgstr \"Mie\"\n\n#: jp/jp_prefectures.py:28\nmsgid \"Shiga\"\nmsgstr \"Shiga\"\n\n#: jp/jp_prefectures.py:29\nmsgid \"Kyoto\"\nmsgstr \"Kyoto\"\n\n#: jp/jp_prefectures.py:30\nmsgid \"Osaka\"\nmsgstr \"Osaka\"\n\n#: jp/jp_prefectures.py:31\nmsgid \"Hyogo\"\nmsgstr \"Hyogo\"\n\n#: jp/jp_prefectures.py:32\nmsgid \"Nara\"\nmsgstr \"Nara\"\n\n#: jp/jp_prefectures.py:33\nmsgid \"Wakayama\"\nmsgstr \"Wakayama\"\n\n#: jp/jp_prefectures.py:34\nmsgid \"Tottori\"\nmsgstr \"Tottori\"\n\n#: jp/jp_prefectures.py:35\nmsgid \"Shimane\"\nmsgstr \"Shimane\"\n\n#: jp/jp_prefectures.py:36\nmsgid \"Okayama\"\nmsgstr \"Okayama\"\n\n#: jp/jp_prefectures.py:37\nmsgid \"Hiroshima\"\nmsgstr \"Hiroshima\"\n\n#: jp/jp_prefectures.py:38\nmsgid \"Yamaguchi\"\nmsgstr \"Yamaguchi\"\n\n#: jp/jp_prefectures.py:39\nmsgid \"Tokushima\"\nmsgstr \"Tokushima\"\n\n#: jp/jp_prefectures.py:40\nmsgid \"Kagawa\"\nmsgstr \"Kagawa\"\n\n#: jp/jp_prefectures.py:41\nmsgid \"Ehime\"\nmsgstr \"Ehime\"\n\n#: jp/jp_prefectures.py:42\nmsgid \"Kochi\"\nmsgstr \"Kochi\"\n\n#: jp/jp_prefectures.py:43\nmsgid \"Fukuoka\"\nmsgstr \"Fukuoka\"\n\n#: jp/jp_prefectures.py:44\nmsgid \"Saga\"\nmsgstr \"Saga\"\n\n#: jp/jp_prefectures.py:45\nmsgid \"Nagasaki\"\nmsgstr \"Nagasaki\"\n\n#: jp/jp_prefectures.py:46\nmsgid \"Kumamoto\"\nmsgstr \"Kumamoto\"\n\n#: jp/jp_prefectures.py:47\nmsgid \"Oita\"\nmsgstr \"Oita\"\n\n#: jp/jp_prefectures.py:48\nmsgid \"Miyazaki\"\nmsgstr \"Miyazaki\"\n\n#: jp/jp_prefectures.py:49\nmsgid \"Kagoshima\"\nmsgstr \"Kagoshima\"\n\n#: jp/jp_prefectures.py:50\nmsgid \"Okinawa\"\nmsgstr \"Okinawa\"\n\n#: kw/forms.py:27\nmsgid \"Enter a valid Kuwaiti Civil ID number\"\nmsgstr \"\"\n\n#: mk/forms.py:18\nmsgid \"\"\n\"Identity card numbers must contain either 4 to 7 digits or an uppercase \"\n\"letter and 7 digits.\"\nmsgstr \"\"\n\n#: mk/forms.py:57 si/forms.py:24\nmsgid \"This field should contain exactly 13 digits.\"\nmsgstr \"\"\n\n#: mk/forms.py:58\nmsgid \"The first 7 digits of the UMCN must represent a valid past date.\"\nmsgstr \"\"\n\n#: mk/forms.py:59\nmsgid \"The UMCN is not valid.\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:10\nmsgid \"Aerodrom\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:11\nmsgid \"Aračinovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:12\nmsgid \"Berovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:13\nmsgid \"Bitola\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:14\nmsgid \"Bogdanci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:15\nmsgid \"Bogovinje\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:16\nmsgid \"Bosilovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:17\nmsgid \"Brvenica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:18\nmsgid \"Butel\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:19\nmsgid \"Valandovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:20\nmsgid \"Vasilevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:21\nmsgid \"Vevčani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:22\nmsgid \"Veles\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:23\nmsgid \"Vinica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:24\nmsgid \"Vraneštica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:25\nmsgid \"Vrapčište\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:26\nmsgid \"Gazi Baba\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:27\nmsgid \"Gevgelija\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:28\nmsgid \"Gostivar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:29\nmsgid \"Gradsko\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:30\nmsgid \"Debar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:31\nmsgid \"Debarca\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:32\nmsgid \"Delčevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:33\nmsgid \"Demir Kapija\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:34\nmsgid \"Demir Hisar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:35\nmsgid \"Dolneni\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:36\nmsgid \"Drugovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:37\nmsgid \"Gjorče Petrov\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:38\nmsgid \"Želino\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:39\nmsgid \"Zajas\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:40\nmsgid \"Zelenikovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:41\nmsgid \"Zrnovci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:42\nmsgid \"Ilinden\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:43\nmsgid \"Jegunovce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:44\nmsgid \"Kavadarci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:45\nmsgid \"Karbinci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:46\nmsgid \"Karpoš\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:47\nmsgid \"Kisela Voda\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:48\nmsgid \"Kičevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:49\nmsgid \"Konče\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:50\nmsgid \"Koćani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:51\nmsgid \"Kratovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:52\nmsgid \"Kriva Palanka\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:53\nmsgid \"Krivogaštani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:54\nmsgid \"Kruševo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:55\nmsgid \"Kumanovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:56\nmsgid \"Lipkovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:57\nmsgid \"Lozovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:58\nmsgid \"Mavrovo i Rostuša\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:59\nmsgid \"Makedonska Kamenica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:60\nmsgid \"Makedonski Brod\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:61\nmsgid \"Mogila\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:62\nmsgid \"Negotino\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:63\nmsgid \"Novaci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:64\nmsgid \"Novo Selo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:65\nmsgid \"Oslomej\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:66\nmsgid \"Ohrid\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:67\nmsgid \"Petrovec\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:68\nmsgid \"Pehčevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:69\nmsgid \"Plasnica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:70\nmsgid \"Prilep\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:71\nmsgid \"Probištip\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:72\nmsgid \"Radoviš\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:73\nmsgid \"Rankovce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:74\nmsgid \"Resen\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:75\nmsgid \"Rosoman\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:76\nmsgid \"Saraj\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:77\nmsgid \"Sveti Nikole\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:78\nmsgid \"Sopište\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:79\nmsgid \"Star Dojran\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:80\nmsgid \"Staro Nagoričane\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:81\nmsgid \"Struga\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:82\nmsgid \"Strumica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:83\nmsgid \"Studeničani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:84\nmsgid \"Tearce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:85\nmsgid \"Tetovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:86\nmsgid \"Centar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:87\nmsgid \"Centar-Župa\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:88\nmsgid \"Čair\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:89\nmsgid \"Čaška\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:90\nmsgid \"Češinovo-Obleševo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:91\nmsgid \"Čučer-Sandevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:92\nmsgid \"Štip\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:93\nmsgid \"Šuto Orizari\"\nmsgstr \"\"\n\n#: mk/models.py:11\nmsgid \"Macedonian identity card number\"\nmsgstr \"\"\n\n#: mk/models.py:25\nmsgid \"A Macedonian municipality (2 character code)\"\nmsgstr \"\"\n\n#: mk/models.py:35\nmsgid \"Unique master citizen number (13 digits)\"\nmsgstr \"\"\n\n#: mx/forms.py:67\nmsgid \"Enter a valid zip code in the format XXXXX.\"\nmsgstr \"\"\n\n#: mx/forms.py:110\nmsgid \"Enter a valid RFC.\"\nmsgstr \"\"\n\n#: mx/forms.py:111\nmsgid \"Invalid checksum for RFC.\"\nmsgstr \"\"\n\n#: mx/forms.py:191\nmsgid \"Enter a valid CURP.\"\nmsgstr \"\"\n\n#: mx/forms.py:192\nmsgid \"Invalid checksum for CURP.\"\nmsgstr \"\"\n\n#: mx/models.py:14\nmsgid \"Mexico state (three uppercase letters)\"\nmsgstr \"\"\n\n#: mx/models.py:27\nmsgid \"Mexico zip code\"\nmsgstr \"\"\n\n#: mx/models.py:44\nmsgid \"Mexican RFC\"\nmsgstr \"\"\n\n#: mx/models.py:61\nmsgid \"Mexican CURP\"\nmsgstr \"\"\n\n#: mx/mx_states.py:14\nmsgid \"Aguascalientes\"\nmsgstr \"Aguascalientes\"\n\n#: mx/mx_states.py:15\nmsgid \"Baja California\"\nmsgstr \"Baja California\"\n\n#: mx/mx_states.py:16\nmsgid \"Baja California Sur\"\nmsgstr \"Baja California Sur\"\n\n#: mx/mx_states.py:17\nmsgid \"Campeche\"\nmsgstr \"Campeche\"\n\n#: mx/mx_states.py:18\nmsgid \"Chihuahua\"\nmsgstr \"Chihuahua\"\n\n#: mx/mx_states.py:19\nmsgid \"Chiapas\"\nmsgstr \"Chiapas\"\n\n#: mx/mx_states.py:20\nmsgid \"Coahuila\"\nmsgstr \"Coahuila\"\n\n#: mx/mx_states.py:21\nmsgid \"Colima\"\nmsgstr \"Colima\"\n\n#: mx/mx_states.py:22\nmsgid \"Distrito Federal\"\nmsgstr \"Districtul Federal\"\n\n#: mx/mx_states.py:23\nmsgid \"Durango\"\nmsgstr \"Durango\"\n\n#: mx/mx_states.py:24\nmsgid \"Guerrero\"\nmsgstr \"Guerrero\"\n\n#: mx/mx_states.py:25\nmsgid \"Guanajuato\"\nmsgstr \"Guanajuato\"\n\n#: mx/mx_states.py:26\nmsgid \"Hidalgo\"\nmsgstr \"Hidalgo\"\n\n#: mx/mx_states.py:27\nmsgid \"Jalisco\"\nmsgstr \"Jalisco\"\n\n#: mx/mx_states.py:28\nmsgid \"Estado de México\"\nmsgstr \"\"\n\n#: mx/mx_states.py:29\nmsgid \"Michoacán\"\nmsgstr \"\"\n\n#: mx/mx_states.py:30\nmsgid \"Morelos\"\nmsgstr \"Morelos\"\n\n#: mx/mx_states.py:31\nmsgid \"Nayarit\"\nmsgstr \"Nayarit\"\n\n#: mx/mx_states.py:32\nmsgid \"Nuevo León\"\nmsgstr \"\"\n\n#: mx/mx_states.py:33\nmsgid \"Oaxaca\"\nmsgstr \"Oaxaca\"\n\n#: mx/mx_states.py:34\nmsgid \"Puebla\"\nmsgstr \"Puebla\"\n\n#: mx/mx_states.py:35\nmsgid \"Querétaro\"\nmsgstr \"\"\n\n#: mx/mx_states.py:36\nmsgid \"Quintana Roo\"\nmsgstr \"Quintana Roo\"\n\n#: mx/mx_states.py:37\nmsgid \"Sinaloa\"\nmsgstr \"Sinaloa\"\n\n#: mx/mx_states.py:38\nmsgid \"San Luis Potosí\"\nmsgstr \"\"\n\n#: mx/mx_states.py:39\nmsgid \"Sonora\"\nmsgstr \"Sonora\"\n\n#: mx/mx_states.py:40\nmsgid \"Tabasco\"\nmsgstr \"Tabasco\"\n\n#: mx/mx_states.py:41\nmsgid \"Tamaulipas\"\nmsgstr \"Tamaulipas\"\n\n#: mx/mx_states.py:42\nmsgid \"Tlaxcala\"\nmsgstr \"Tlaxcala\"\n\n#: mx/mx_states.py:43\nmsgid \"Veracruz\"\nmsgstr \"Veracruz\"\n\n#: mx/mx_states.py:44\nmsgid \"Yucatán\"\nmsgstr \"\"\n\n#: mx/mx_states.py:45\nmsgid \"Zacatecas\"\nmsgstr \"Zacatecas\"\n\n#: nl/forms.py:26\nmsgid \"Enter a valid postal code\"\nmsgstr \"Introduceți un cod poștal valid\"\n\n#: nl/forms.py:82\nmsgid \"Enter a valid SoFi number\"\nmsgstr \"Introduceți un număr SoFi valid\"\n\n#: nl/nl_provinces.py:4\nmsgid \"Drenthe\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:5\nmsgid \"Flevoland\"\nmsgstr \"Flevoland\"\n\n#: nl/nl_provinces.py:6\nmsgid \"Friesland\"\nmsgstr \"Frizia\"\n\n#: nl/nl_provinces.py:7\nmsgid \"Gelderland\"\nmsgstr \"Gelderland\"\n\n#: nl/nl_provinces.py:8\nmsgid \"Groningen\"\nmsgstr \"Groningen\"\n\n#: nl/nl_provinces.py:10\nmsgid \"Noord-Brabant\"\nmsgstr \"Brabantul de Nord\"\n\n#: nl/nl_provinces.py:11\nmsgid \"Noord-Holland\"\nmsgstr \"Olanda de Nord\"\n\n#: nl/nl_provinces.py:12\nmsgid \"Overijssel\"\nmsgstr \"Overijssel\"\n\n#: nl/nl_provinces.py:13\nmsgid \"Utrecht\"\nmsgstr \"Utrecht\"\n\n#: nl/nl_provinces.py:14\nmsgid \"Zeeland\"\nmsgstr \"Zeelanda\"\n\n#: nl/nl_provinces.py:15\nmsgid \"Zuid-Holland\"\nmsgstr \"Olanda de Sud\"\n\n#: no/forms.py:39\nmsgid \"Enter a valid Norwegian social security number.\"\nmsgstr \"Introduceți un număr norvegian de securitate socială valid.\"\n\n#: pe/forms.py:28\nmsgid \"This field requires 8 digits.\"\nmsgstr \"Acest câmp are nevoie de 8 cifre.\"\n\n#: pe/forms.py:56\nmsgid \"This field requires 11 digits.\"\nmsgstr \"Acest câmp are nevoie de 11 cifre.\"\n\n#: pl/forms.py:42\nmsgid \"National Identification Number consists of 11 digits.\"\nmsgstr \"Numărul Național de Identificare conține 11 cifre.\"\n\n#: pl/forms.py:43\nmsgid \"Wrong checksum for the National Identification Number.\"\nmsgstr \"Sumă de control greșită pentru Numărul Național de Identificare.\"\n\n#: pl/forms.py:79\nmsgid \"National ID Card Number consists of 3 letters and 6 digits.\"\nmsgstr \"\"\n\n#: pl/forms.py:80\nmsgid \"Wrong checksum for the National ID Card Number.\"\nmsgstr \"\"\n\n#: pl/forms.py:131\nmsgid \"\"\n\"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or \"\n\"XXXXXXXXXX.\"\nmsgstr \"\"\n\n#: pl/forms.py:132\nmsgid \"Wrong checksum for the Tax Number (NIP).\"\nmsgstr \"Sumă de control greșită pentru Numărul de Taxa (NIP).\"\n\n#: pl/forms.py:171\nmsgid \"National Business Register Number (REGON) consists of 9 or 14 digits.\"\nmsgstr \"\"\n\n#: pl/forms.py:172\nmsgid \"Wrong checksum for the National Business Register Number (REGON).\"\nmsgstr \"\"\n\"Suma de control gresita pentru Numărul National din Registrul pentru Afaceri \"\n\"(REGON).\"\n\n#: pl/forms.py:212\nmsgid \"Enter a postal code in the format XX-XXX.\"\nmsgstr \"Introduceți un cod poștal de forma XX-XXX.\"\n\n#: pl/pl_voivodeships.py:8\nmsgid \"Lower Silesia\"\nmsgstr \"Silezia Inferioară\"\n\n#: pl/pl_voivodeships.py:9\nmsgid \"Kuyavia-Pomerania\"\nmsgstr \"Kuyavia-Pomerania\"\n\n#: pl/pl_voivodeships.py:10\nmsgid \"Lublin\"\nmsgstr \"Lublin\"\n\n#: pl/pl_voivodeships.py:11\nmsgid \"Lubusz\"\nmsgstr \"Lubusz\"\n\n#: pl/pl_voivodeships.py:12\nmsgid \"Lodz\"\nmsgstr \"Lodz\"\n\n#: pl/pl_voivodeships.py:13\nmsgid \"Lesser Poland\"\nmsgstr \"Polonia Mică\"\n\n#: pl/pl_voivodeships.py:14\nmsgid \"Masovia\"\nmsgstr \"Masovia\"\n\n#: pl/pl_voivodeships.py:15\nmsgid \"Opole\"\nmsgstr \"Opole\"\n\n#: pl/pl_voivodeships.py:16\nmsgid \"Subcarpatia\"\nmsgstr \"Podcarpatia\"\n\n#: pl/pl_voivodeships.py:17\nmsgid \"Podlasie\"\nmsgstr \"Podlasie\"\n\n#: pl/pl_voivodeships.py:18\nmsgid \"Pomerania\"\nmsgstr \"Pomerania\"\n\n#: pl/pl_voivodeships.py:19\nmsgid \"Silesia\"\nmsgstr \"Silezia\"\n\n#: pl/pl_voivodeships.py:20\nmsgid \"Swietokrzyskie\"\nmsgstr \"Swietokrzyskie\"\n\n#: pl/pl_voivodeships.py:21\nmsgid \"Warmia-Masuria\"\nmsgstr \"Warmia-Masuria\"\n\n#: pl/pl_voivodeships.py:22\nmsgid \"Greater Poland\"\nmsgstr \"Polonia Mare\"\n\n#: pl/pl_voivodeships.py:23\nmsgid \"West Pomerania\"\nmsgstr \"Pomerania Occidentală\"\n\n#: pt/forms.py:19\nmsgid \"Enter a zip code in the format XXXX-XXX.\"\nmsgstr \"\"\n\n#: pt/forms.py:39\nmsgid \"Phone numbers must have 9 digits, or start by + or 00.\"\nmsgstr \"\"\n\n#: ro/forms.py:22\nmsgid \"Enter a valid CIF.\"\nmsgstr \"\"\n\n#: ro/forms.py:59\nmsgid \"Enter a valid CNP.\"\nmsgstr \"\"\n\n#: ro/forms.py:143\nmsgid \"Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format\"\nmsgstr \"\"\n\n#: ro/forms.py:175\nmsgid \"Phone numbers must be in XXXX-XXXXXX format.\"\nmsgstr \"\"\n\n#: ro/forms.py:200\nmsgid \"Enter a valid postal code in the format XXXXXX\"\nmsgstr \"Introduceți un cod poștal valabil în formatul XXXXXX.\"\n\n#: ru/forms.py:37\nmsgid \"Enter a postal code in the format XXXXXX.\"\nmsgstr \"\"\n\n#: ru/forms.py:50\nmsgid \"Enter a passport number in the format XXXX XXXXXX.\"\nmsgstr \"\"\n\n#: ru/forms.py:63\nmsgid \"Enter a passport number in the format XX XXXXXXX.\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:10\nmsgid \"Central Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:11\nmsgid \"South Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:12\nmsgid \"North-West Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:13\nmsgid \"Far-East Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:14\nmsgid \"Siberian Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:15\nmsgid \"Ural Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:16\nmsgid \"Privolzhsky Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:17\nmsgid \"North-Caucasian Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:21\nmsgid \"Moskva\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:22\nmsgid \"Saint-Peterburg\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:23\nmsgid \"Moskovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:24\nmsgid \"Adygeya, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:25\nmsgid \"Bashkortostan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:26\nmsgid \"Buryatia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:27\nmsgid \"Altay, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:28\nmsgid \"Dagestan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:29\nmsgid \"Ingushskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:30\nmsgid \"Kabardino-Balkarskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:31\nmsgid \"Kalmykia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:32\nmsgid \"Karachaevo-Cherkesskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:33\nmsgid \"Karelia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:34\nmsgid \"Komi, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:35\nmsgid \"Mariy Ehl, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:36\nmsgid \"Mordovia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:37\nmsgid \"Sakha, Respublika (Yakutiya)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:38\nmsgid \"Severnaya Osetia, Respublika (Alania)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:39\nmsgid \"Tatarstan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:40\nmsgid \"Tyva, Respublika (Tuva)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:41\nmsgid \"Udmurtskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:42\nmsgid \"Khakassiya, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:43\nmsgid \"Chechenskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:44\nmsgid \"Chuvashskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:45\nmsgid \"Altayskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:46\nmsgid \"Zabaykalskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:47\nmsgid \"Kamchatskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:48\nmsgid \"Krasnodarskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:49\nmsgid \"Krasnoyarskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:50\nmsgid \"Permskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:51\nmsgid \"Primorskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:52\nmsgid \"Stavropol'siyy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:53\nmsgid \"Khabarovskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:54\nmsgid \"Amurskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:55\nmsgid \"Arkhangel'skaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:56\nmsgid \"Astrakhanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:57\nmsgid \"Belgorodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:58\nmsgid \"Bryanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:59\nmsgid \"Vladimirskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:60\nmsgid \"Volgogradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:61\nmsgid \"Vologodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:62\nmsgid \"Voronezhskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:63\nmsgid \"Ivanovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:64\nmsgid \"Irkutskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:65\nmsgid \"Kaliningradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:66\nmsgid \"Kaluzhskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:67\nmsgid \"Kemerovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:68\nmsgid \"Kirovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:69\nmsgid \"Kostromskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:70\nmsgid \"Kurganskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:71\nmsgid \"Kurskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:72\nmsgid \"Leningradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:73\nmsgid \"Lipeckaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:74\nmsgid \"Magadanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:75\nmsgid \"Murmanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:76\nmsgid \"Nizhegorodskaja oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:77\nmsgid \"Novgorodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:78\nmsgid \"Novosibirskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:79\nmsgid \"Omskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:80\nmsgid \"Orenburgskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:81\nmsgid \"Orlovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:82\nmsgid \"Penzenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:83\nmsgid \"Pskovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:84\nmsgid \"Rostovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:85\nmsgid \"Rjazanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:86\nmsgid \"Samarskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:87\nmsgid \"Saratovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:88\nmsgid \"Sakhalinskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:89\nmsgid \"Sverdlovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:90\nmsgid \"Smolenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:91\nmsgid \"Tambovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:92\nmsgid \"Tverskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:93\nmsgid \"Tomskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:94\nmsgid \"Tul'skaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:95\nmsgid \"Tyumenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:96\nmsgid \"Ul'ianovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:97\nmsgid \"Chelyabinskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:98\nmsgid \"Yaroslavskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:99\nmsgid \"Evreyskaya avtonomnaja oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:100\nmsgid \"Neneckiy autonomnyy okrug\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:101\nmsgid \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:102\nmsgid \"Chukotskiy avtonomnyy okrug\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:103\nmsgid \"Yamalo-Neneckiy avtonomnyy okrug\"\nmsgstr \"\"\n\n#: se/forms.py:54\nmsgid \"Enter a valid Swedish organisation number.\"\nmsgstr \"\"\n\n#: se/forms.py:111\nmsgid \"Enter a valid Swedish personal identity number.\"\nmsgstr \"\"\n\n#: se/forms.py:112\nmsgid \"Co-ordination numbers are not allowed.\"\nmsgstr \"\"\n\n#: se/forms.py:154\nmsgid \"Enter a Swedish postal code in the format XXXXX.\"\nmsgstr \"\"\n\n#: se/se_counties.py:16\nmsgid \"Stockholm\"\nmsgstr \"\"\n\n#: se/se_counties.py:17\nmsgid \"Västerbotten\"\nmsgstr \"\"\n\n#: se/se_counties.py:18\nmsgid \"Norrbotten\"\nmsgstr \"\"\n\n#: se/se_counties.py:19\nmsgid \"Uppsala\"\nmsgstr \"\"\n\n#: se/se_counties.py:20\nmsgid \"Södermanland\"\nmsgstr \"\"\n\n#: se/se_counties.py:21\nmsgid \"Östergötland\"\nmsgstr \"\"\n\n#: se/se_counties.py:22\nmsgid \"Jönköping\"\nmsgstr \"\"\n\n#: se/se_counties.py:23\nmsgid \"Kronoberg\"\nmsgstr \"\"\n\n#: se/se_counties.py:24\nmsgid \"Kalmar\"\nmsgstr \"\"\n\n#: se/se_counties.py:25\nmsgid \"Gotland\"\nmsgstr \"\"\n\n#: se/se_counties.py:26\nmsgid \"Blekinge\"\nmsgstr \"\"\n\n#: se/se_counties.py:27\nmsgid \"Skåne\"\nmsgstr \"\"\n\n#: se/se_counties.py:28\nmsgid \"Halland\"\nmsgstr \"\"\n\n#: se/se_counties.py:29\nmsgid \"Västra Götaland\"\nmsgstr \"\"\n\n#: se/se_counties.py:30\nmsgid \"Värmland\"\nmsgstr \"\"\n\n#: se/se_counties.py:31\nmsgid \"Örebro\"\nmsgstr \"\"\n\n#: se/se_counties.py:32\nmsgid \"Västmanland\"\nmsgstr \"\"\n\n#: se/se_counties.py:33\nmsgid \"Dalarna\"\nmsgstr \"\"\n\n#: se/se_counties.py:34\nmsgid \"Gävleborg\"\nmsgstr \"\"\n\n#: se/se_counties.py:35\nmsgid \"Västernorrland\"\nmsgstr \"\"\n\n#: se/se_counties.py:36\nmsgid \"Jämtland\"\nmsgstr \"\"\n\n#: si/forms.py:25\nmsgid \"The first 7 digits of the EMSO must represent a valid past date.\"\nmsgstr \"\"\n\n#: si/forms.py:26\nmsgid \"The EMSO is not valid.\"\nmsgstr \"\"\n\n#: si/forms.py:86\nmsgid \"Enter a valid tax number in form SIXXXXXXXX\"\nmsgstr \"\"\n\n#: si/forms.py:151\nmsgid \"Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:8\nmsgid \"Banska Bystrica\"\nmsgstr \"Banska Bystrica\"\n\n#: sk/sk_districts.py:9\nmsgid \"Banska Stiavnica\"\nmsgstr \"Banska Stiavnica\"\n\n#: sk/sk_districts.py:10\nmsgid \"Bardejov\"\nmsgstr \"Bardejov\"\n\n#: sk/sk_districts.py:11\nmsgid \"Banovce nad Bebravou\"\nmsgstr \"Banovce nad Bebravou\"\n\n#: sk/sk_districts.py:12\nmsgid \"Brezno\"\nmsgstr \"Brezno\"\n\n#: sk/sk_districts.py:13\nmsgid \"Bratislava I\"\nmsgstr \"Bratislava I\"\n\n#: sk/sk_districts.py:14\nmsgid \"Bratislava II\"\nmsgstr \"Bratislava II\"\n\n#: sk/sk_districts.py:15\nmsgid \"Bratislava III\"\nmsgstr \"Bratislava III\"\n\n#: sk/sk_districts.py:16\nmsgid \"Bratislava IV\"\nmsgstr \"Bratislava IV\"\n\n#: sk/sk_districts.py:17\nmsgid \"Bratislava V\"\nmsgstr \"Bratislava V\"\n\n#: sk/sk_districts.py:18\nmsgid \"Bytca\"\nmsgstr \"Bytca\"\n\n#: sk/sk_districts.py:19\nmsgid \"Cadca\"\nmsgstr \"Cadca\"\n\n#: sk/sk_districts.py:20\nmsgid \"Detva\"\nmsgstr \"Detva\"\n\n#: sk/sk_districts.py:21\nmsgid \"Dolny Kubin\"\nmsgstr \"Dolny Kubin\"\n\n#: sk/sk_districts.py:22\nmsgid \"Dunajska Streda\"\nmsgstr \"Dunajska Streda\"\n\n#: sk/sk_districts.py:23\nmsgid \"Galanta\"\nmsgstr \"Galanta\"\n\n#: sk/sk_districts.py:24\nmsgid \"Gelnica\"\nmsgstr \"Gelnica\"\n\n#: sk/sk_districts.py:25\nmsgid \"Hlohovec\"\nmsgstr \"Hlohovec\"\n\n#: sk/sk_districts.py:26\nmsgid \"Humenne\"\nmsgstr \"Humenne\"\n\n#: sk/sk_districts.py:27\nmsgid \"Ilava\"\nmsgstr \"Ilava\"\n\n#: sk/sk_districts.py:28\nmsgid \"Kezmarok\"\nmsgstr \"Kezmarok\"\n\n#: sk/sk_districts.py:29\nmsgid \"Komarno\"\nmsgstr \"Komarno\"\n\n#: sk/sk_districts.py:30\nmsgid \"Kosice I\"\nmsgstr \"Kosice I\"\n\n#: sk/sk_districts.py:31\nmsgid \"Kosice II\"\nmsgstr \"Kosice II\"\n\n#: sk/sk_districts.py:32\nmsgid \"Kosice III\"\nmsgstr \"Kosice III\"\n\n#: sk/sk_districts.py:33\nmsgid \"Kosice IV\"\nmsgstr \"Kosice IV\"\n\n#: sk/sk_districts.py:34\nmsgid \"Kosice - okolie\"\nmsgstr \"Kosice - okolie\"\n\n#: sk/sk_districts.py:35\nmsgid \"Krupina\"\nmsgstr \"Krupina\"\n\n#: sk/sk_districts.py:36\nmsgid \"Kysucke Nove Mesto\"\nmsgstr \"Kysucke Nove Mesto\"\n\n#: sk/sk_districts.py:37\nmsgid \"Levice\"\nmsgstr \"Levice\"\n\n#: sk/sk_districts.py:38\nmsgid \"Levoca\"\nmsgstr \"Levoca\"\n\n#: sk/sk_districts.py:39\nmsgid \"Liptovsky Mikulas\"\nmsgstr \"Liptovsky Mikulas\"\n\n#: sk/sk_districts.py:40\nmsgid \"Lucenec\"\nmsgstr \"Lucenec\"\n\n#: sk/sk_districts.py:41\nmsgid \"Malacky\"\nmsgstr \"Malacky\"\n\n#: sk/sk_districts.py:42\nmsgid \"Martin\"\nmsgstr \"Martin\"\n\n#: sk/sk_districts.py:43\nmsgid \"Medzilaborce\"\nmsgstr \"Medzilaborce\"\n\n#: sk/sk_districts.py:44\nmsgid \"Michalovce\"\nmsgstr \"Michalovce\"\n\n#: sk/sk_districts.py:45\nmsgid \"Myjava\"\nmsgstr \"Myjava\"\n\n#: sk/sk_districts.py:46\nmsgid \"Namestovo\"\nmsgstr \"Namestovo\"\n\n#: sk/sk_districts.py:47\nmsgid \"Nitra\"\nmsgstr \"Nitra\"\n\n#: sk/sk_districts.py:48\nmsgid \"Nove Mesto nad Vahom\"\nmsgstr \"Nove Mesto nad Vahom\"\n\n#: sk/sk_districts.py:49\nmsgid \"Nove Zamky\"\nmsgstr \"Nove Zamky\"\n\n#: sk/sk_districts.py:50\nmsgid \"Partizanske\"\nmsgstr \"Partizanske\"\n\n#: sk/sk_districts.py:51\nmsgid \"Pezinok\"\nmsgstr \"Pezinok\"\n\n#: sk/sk_districts.py:52\nmsgid \"Piestany\"\nmsgstr \"Piestany\"\n\n#: sk/sk_districts.py:53\nmsgid \"Poltar\"\nmsgstr \"Poltar\"\n\n#: sk/sk_districts.py:54\nmsgid \"Poprad\"\nmsgstr \"Poprad\"\n\n#: sk/sk_districts.py:55\nmsgid \"Povazska Bystrica\"\nmsgstr \"Povazska Bystrica\"\n\n#: sk/sk_districts.py:56\nmsgid \"Presov\"\nmsgstr \"Presov\"\n\n#: sk/sk_districts.py:57\nmsgid \"Prievidza\"\nmsgstr \"Prievidza\"\n\n#: sk/sk_districts.py:58\nmsgid \"Puchov\"\nmsgstr \"Puchov\"\n\n#: sk/sk_districts.py:59\nmsgid \"Revuca\"\nmsgstr \"Revuca\"\n\n#: sk/sk_districts.py:60\nmsgid \"Rimavska Sobota\"\nmsgstr \"Rimavska Sobota\"\n\n#: sk/sk_districts.py:61\nmsgid \"Roznava\"\nmsgstr \"Roznava\"\n\n#: sk/sk_districts.py:62\nmsgid \"Ruzomberok\"\nmsgstr \"Ruzomberok\"\n\n#: sk/sk_districts.py:63\nmsgid \"Sabinov\"\nmsgstr \"Sabinov\"\n\n#: sk/sk_districts.py:64\nmsgid \"Senec\"\nmsgstr \"Senec\"\n\n#: sk/sk_districts.py:65\nmsgid \"Senica\"\nmsgstr \"Senica\"\n\n#: sk/sk_districts.py:66\nmsgid \"Skalica\"\nmsgstr \"Skalica\"\n\n#: sk/sk_districts.py:67\nmsgid \"Snina\"\nmsgstr \"Snina\"\n\n#: sk/sk_districts.py:68\nmsgid \"Sobrance\"\nmsgstr \"Sobrance\"\n\n#: sk/sk_districts.py:69\nmsgid \"Spisska Nova Ves\"\nmsgstr \"Spisska Nova Ves\"\n\n#: sk/sk_districts.py:70\nmsgid \"Stara Lubovna\"\nmsgstr \"Stara Lubovna\"\n\n#: sk/sk_districts.py:71\nmsgid \"Stropkov\"\nmsgstr \"Stropkov\"\n\n#: sk/sk_districts.py:72\nmsgid \"Svidnik\"\nmsgstr \"Svidnik\"\n\n#: sk/sk_districts.py:73\nmsgid \"Sala\"\nmsgstr \"Sala\"\n\n#: sk/sk_districts.py:74\nmsgid \"Topolcany\"\nmsgstr \"Topolcany\"\n\n#: sk/sk_districts.py:75\nmsgid \"Trebisov\"\nmsgstr \"Trebisov\"\n\n#: sk/sk_districts.py:76\nmsgid \"Trencin\"\nmsgstr \"Trencin\"\n\n#: sk/sk_districts.py:77\nmsgid \"Trnava\"\nmsgstr \"Trnava\"\n\n#: sk/sk_districts.py:78\nmsgid \"Turcianske Teplice\"\nmsgstr \"Turcianske Teplice\"\n\n#: sk/sk_districts.py:79\nmsgid \"Tvrdosin\"\nmsgstr \"Tvrdosin\"\n\n#: sk/sk_districts.py:80\nmsgid \"Velky Krtis\"\nmsgstr \"Velky Krtis\"\n\n#: sk/sk_districts.py:81\nmsgid \"Vranov nad Toplou\"\nmsgstr \"Vranov nad Toplou\"\n\n#: sk/sk_districts.py:82\nmsgid \"Zlate Moravce\"\nmsgstr \"Zlate Moravce\"\n\n#: sk/sk_districts.py:83\nmsgid \"Zvolen\"\nmsgstr \"Zvolen\"\n\n#: sk/sk_districts.py:84\nmsgid \"Zarnovica\"\nmsgstr \"Zarnovica\"\n\n#: sk/sk_districts.py:85\nmsgid \"Ziar nad Hronom\"\nmsgstr \"Ziar nad Hronom\"\n\n#: sk/sk_districts.py:86\nmsgid \"Zilina\"\nmsgstr \"Zilina\"\n\n#: sk/sk_regions.py:8\nmsgid \"Banska Bystrica region\"\nmsgstr \"Banska Bystrica region\"\n\n#: sk/sk_regions.py:9\nmsgid \"Bratislava region\"\nmsgstr \"Regiunea Bratislava\"\n\n#: sk/sk_regions.py:10\nmsgid \"Kosice region\"\nmsgstr \"Regiunea Kosice\"\n\n#: sk/sk_regions.py:11\nmsgid \"Nitra region\"\nmsgstr \"Regiunea Nitra\"\n\n#: sk/sk_regions.py:12\nmsgid \"Presov region\"\nmsgstr \"Regiunea Presov\"\n\n#: sk/sk_regions.py:13\nmsgid \"Trencin region\"\nmsgstr \"Regiunea Trencin\"\n\n#: sk/sk_regions.py:14\nmsgid \"Trnava region\"\nmsgstr \"Regiunea Trnava\"\n\n#: sk/sk_regions.py:15\nmsgid \"Zilina region\"\nmsgstr \"Regiunea Zilina\"\n\n#: tr/forms.py:21\nmsgid \"Enter a postal code in the format XXXXX.\"\nmsgstr \"Introduceți codul poștal în formatul XXXXX.\"\n\n#: tr/forms.py:42\nmsgid \"Phone numbers must be in 0XXX XXX XXXX format.\"\nmsgstr \"Numărul de telefon trebuie să fie în formatul 0XXX XXX XXXX.\"\n\n#: tr/forms.py:69\nmsgid \"Enter a valid Turkish Identification number.\"\nmsgstr \"\"\n\n#: tr/forms.py:70\nmsgid \"Turkish Identification number must be 11 digits.\"\nmsgstr \"\"\n\n#: us/forms.py:21\nmsgid \"Enter a zip code in the format XXXXX or XXXXX-XXXX.\"\nmsgstr \"Introduceți un cod poștal de forma XXXXX or XXXXX-XXXX.\"\n\n#: us/forms.py:59\nmsgid \"Enter a valid U.S. Social Security number in XXX-XX-XXXX format.\"\nmsgstr \"\"\n\"Introduceți un număr SUA de Securitate Sociala de forma XXX-XX-XXXX format.\"\n\n#: us/forms.py:92\nmsgid \"Enter a U.S. state or territory.\"\nmsgstr \"\"\n\n#: us/models.py:8\nmsgid \"U.S. state (two uppercase letters)\"\nmsgstr \"Stat SUA (doua litere mari)\"\n\n#: us/models.py:17\nmsgid \"U.S. postal code (two uppercase letters)\"\nmsgstr \"\"\n\n#: us/models.py:26\nmsgid \"Phone number\"\nmsgstr \"Număr de telefon\"\n\n#: uy/forms.py:29\nmsgid \"Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.\"\nmsgstr \"\"\n\n#: uy/forms.py:31\nmsgid \"Enter a valid CI number.\"\nmsgstr \"\"\n\n#: za/forms.py:22\nmsgid \"Enter a valid South African ID number\"\nmsgstr \"Introduceți un ID sud african valid\"\n\n#: za/forms.py:56\nmsgid \"Enter a valid South African postal code\"\nmsgstr \"Introduceți un cod poștal sud african valid\"\n\n#: za/za_provinces.py:4\nmsgid \"Eastern Cape\"\nmsgstr \"Eastern Cape\"\n\n#: za/za_provinces.py:5\nmsgid \"Free State\"\nmsgstr \"Free State\"\n\n#: za/za_provinces.py:6\nmsgid \"Gauteng\"\nmsgstr \"Gauteng\"\n\n#: za/za_provinces.py:7\nmsgid \"KwaZulu-Natal\"\nmsgstr \"KwaZulu-Natal\"\n\n#: za/za_provinces.py:8\nmsgid \"Limpopo\"\nmsgstr \"Limpopo\"\n\n#: za/za_provinces.py:9\nmsgid \"Mpumalanga\"\nmsgstr \"Mpumalanga\"\n\n#: za/za_provinces.py:10\nmsgid \"Northern Cape\"\nmsgstr \"Northern Cape\"\n\n#: za/za_provinces.py:11\nmsgid \"North West\"\nmsgstr \"North West\"\n\n#: za/za_provinces.py:12\nmsgid \"Western Cape\"\nmsgstr \"Western Cape\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/locale/ru/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Denis Darii <sinednx@gmail.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Michael Bashkirov <michael.bashkirov@gmail.com>, 2011.\n# Алексей Борискин <sun.void@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-10-21 21:12+0000\\n\"\n\"Last-Translator: Алексей Борискин <sun.void@gmail.com>\\n\"\n\"Language-Team: Russian (http://www.transifex.com/projects/p/django/language/\"\n\"ru/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ru\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: ar/forms.py:30\nmsgid \"Enter a postal code in the format NNNN or ANNNNAAA.\"\nmsgstr \"Введите почтовый индекс в формате NNNN или ANNNNAAA.\"\n\n#: ar/forms.py:52 br/forms.py:95 br/forms.py:134 pe/forms.py:27 pe/forms.py:55\nmsgid \"This field requires only numbers.\"\nmsgstr \"Это поле принимает только числа.\"\n\n#: ar/forms.py:53\nmsgid \"This field requires 7 or 8 digits.\"\nmsgstr \"Это поле требует 7 или 8 цифр.\"\n\n#: ar/forms.py:82\nmsgid \"Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.\"\nmsgstr \"Введите правильный CUIT в формате XX-XXXXXXXX-X или XXXXXXXXXXXX.\"\n\n#: ar/forms.py:83\nmsgid \"Invalid CUIT.\"\nmsgstr \"Неверный CUIT.\"\n\n#: ar/forms.py:84\nmsgid \"Invalid legal type. Type must be 27, 20, 23 or 30.\"\nmsgstr \"\"\n\"Неверный код юридического статуса. Код должен быть одним из чисел набор 27, \"\n\"20, 23 и 30.\"\n\n#: at/at_states.py:5\nmsgid \"Burgenland\"\nmsgstr \"Бургенланд\"\n\n#: at/at_states.py:6\nmsgid \"Carinthia\"\nmsgstr \"Каринтия\"\n\n#: at/at_states.py:7\nmsgid \"Lower Austria\"\nmsgstr \"Нижняя Австрия\"\n\n#: at/at_states.py:8\nmsgid \"Upper Austria\"\nmsgstr \"Верхняя Австрия\"\n\n#: at/at_states.py:9\nmsgid \"Salzburg\"\nmsgstr \"Зальцбург\"\n\n#: at/at_states.py:10\nmsgid \"Styria\"\nmsgstr \"Штирия\"\n\n#: at/at_states.py:11\nmsgid \"Tyrol\"\nmsgstr \"Тироль\"\n\n#: at/at_states.py:12\nmsgid \"Vorarlberg\"\nmsgstr \"Ворарлберг\"\n\n#: at/at_states.py:13\nmsgid \"Vienna\"\nmsgstr \"Вена\"\n\n#: at/forms.py:22 ch/forms.py:22 no/forms.py:19\nmsgid \"Enter a zip code in the format XXXX.\"\nmsgstr \"Введите правильный индекс в формате XXXX.\"\n\n#: at/forms.py:50\nmsgid \"Enter a valid Austrian Social Security Number in XXXX XXXXXX format.\"\nmsgstr \"\"\n\"Введите правильный номер социального страхования Австрии в формате XXXX \"\n\"XXXXXX.\"\n\n#: au/forms.py:26\nmsgid \"Enter a 4 digit postcode.\"\nmsgstr \"Введите 4 цифры почтового индекса\"\n\n#: au/models.py:9\nmsgid \"Australian State\"\nmsgstr \"Австралийский штат\"\n\n#: au/models.py:19\nmsgid \"Australian Postcode\"\nmsgstr \"Австралийский почтовый индекс\"\n\n#: au/models.py:33\nmsgid \"Australian Phone number\"\nmsgstr \"Австралийский телефонный номер\"\n\n#: be/be_provinces.py:5\nmsgid \"Antwerp\"\nmsgstr \"Антверпен\"\n\n#: be/be_provinces.py:6\nmsgid \"Brussels\"\nmsgstr \"Брюссель\"\n\n#: be/be_provinces.py:7\nmsgid \"East Flanders\"\nmsgstr \"Восточная Фландрия\"\n\n#: be/be_provinces.py:8\nmsgid \"Flemish Brabant\"\nmsgstr \"Фламандский Брабант\"\n\n#: be/be_provinces.py:9\nmsgid \"Hainaut\"\nmsgstr \"Хаинаут\"\n\n#: be/be_provinces.py:10\nmsgid \"Liege\"\nmsgstr \"Льеж\"\n\n#: be/be_provinces.py:11 nl/nl_provinces.py:9\nmsgid \"Limburg\"\nmsgstr \"Лимбург\"\n\n#: be/be_provinces.py:12\nmsgid \"Luxembourg\"\nmsgstr \"Люксембург\"\n\n#: be/be_provinces.py:13\nmsgid \"Namur\"\nmsgstr \"Намюр\"\n\n#: be/be_provinces.py:14\nmsgid \"Walloon Brabant\"\nmsgstr \"Валлонский Брабант\"\n\n#: be/be_provinces.py:15\nmsgid \"West Flanders\"\nmsgstr \"Западная Фландрия\"\n\n#: be/be_regions.py:5\nmsgid \"Brussels Capital Region\"\nmsgstr \"Брюссельская Капитальная Область\"\n\n#: be/be_regions.py:6\nmsgid \"Flemish Region\"\nmsgstr \"Фламандский регион\"\n\n#: be/be_regions.py:7\nmsgid \"Wallonia\"\nmsgstr \"Валлония\"\n\n#: be/forms.py:25\nmsgid \"Enter a valid postal code in the range and format 1XXX - 9XXX.\"\nmsgstr \"\"\n\"Введите действительный почтовый индекс в диапазон и формат 1xxx - 9xxx.\"\n\n#: be/forms.py:48\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\nmsgstr \"\"\n\"Введите действительный номер телефона в одном из форматов 0x хх хх ххх, 0xx \"\n\"хх хх хх, 04xx хх хх хх, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x . xxx.\"\n\"xx.xx, 0xx.xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx или 04xxxxxxxx.\"\n\n#: br/forms.py:22\nmsgid \"Enter a zip code in the format XXXXX-XXX.\"\nmsgstr \"Введите почтовый индекс в формате XXXXX-XXX.\"\n\n#: br/forms.py:31\nmsgid \"Phone numbers must be in XX-XXXX-XXXX format.\"\nmsgstr \"Телефонные номера должны быть в формате XX-XXXX-XXXX.\"\n\n#: br/forms.py:58\nmsgid \"\"\n\"Select a valid brazilian state. That state is not one of the available \"\n\"states.\"\nmsgstr \"\"\n\"Выберите корректный бразильский штат. Указанного варианта нет среди \"\n\"допустимых значений.\"\n\n#: br/forms.py:93\nmsgid \"Invalid CPF number.\"\nmsgstr \"Неправильный CPF номер.\"\n\n#: br/forms.py:94\nmsgid \"This field requires at most 11 digits or 14 characters.\"\nmsgstr \"Это поле требует 11 цифр или 14 символов.\"\n\n#: br/forms.py:133\nmsgid \"Invalid CNPJ number.\"\nmsgstr \"Неправильный CNPJ номер.\"\n\n#: br/forms.py:135\nmsgid \"This field requires at least 14 digits\"\nmsgstr \"Это поле требует как минимум 14 цифр\"\n\n#: ca/forms.py:29\nmsgid \"Enter a postal code in the format XXX XXX.\"\nmsgstr \"Введите почтовый индекс в формате XXX XXX.\"\n\n#: ca/forms.py:47 us/forms.py:30\nmsgid \"Phone numbers must be in XXX-XXX-XXXX format.\"\nmsgstr \"Телефонные номера должны быть в формате XXX-XXX-XXXX.\"\n\n#: ca/forms.py:69\nmsgid \"Enter a Canadian province or territory.\"\nmsgstr \"Введите провинцию или территорию Канады.\"\n\n#: ca/forms.py:110\nmsgid \"Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.\"\nmsgstr \"\"\n\"Введите правильный номер социального страхования Канады в формате XXX-XXX-\"\n\"XXX.\"\n\n#: ch/ch_states.py:5\nmsgid \"Aargau\"\nmsgstr \"Ааргау\"\n\n#: ch/ch_states.py:6\nmsgid \"Appenzell Innerrhoden\"\nmsgstr \"Аппенцелль-Иннерроден\"\n\n#: ch/ch_states.py:7\nmsgid \"Appenzell Ausserrhoden\"\nmsgstr \"Аппенцелль-Ауссерроден\"\n\n#: ch/ch_states.py:8\nmsgid \"Basel-Stadt\"\nmsgstr \"Базель-Штадт\"\n\n#: ch/ch_states.py:9\nmsgid \"Basel-Land\"\nmsgstr \"Базель-Ланд\"\n\n#: ch/ch_states.py:10\nmsgid \"Berne\"\nmsgstr \"Берн\"\n\n#: ch/ch_states.py:11\nmsgid \"Fribourg\"\nmsgstr \"Фрибур\"\n\n#: ch/ch_states.py:12\nmsgid \"Geneva\"\nmsgstr \"Женева\"\n\n#: ch/ch_states.py:13\nmsgid \"Glarus\"\nmsgstr \"Гларус\"\n\n#: ch/ch_states.py:14\nmsgid \"Graubuenden\"\nmsgstr \"Граубюнден\"\n\n#: ch/ch_states.py:15\nmsgid \"Jura\"\nmsgstr \"Джура\"\n\n#: ch/ch_states.py:16\nmsgid \"Lucerne\"\nmsgstr \"Люцерн\"\n\n#: ch/ch_states.py:17\nmsgid \"Neuchatel\"\nmsgstr \"Нёвшатель\"\n\n#: ch/ch_states.py:18\nmsgid \"Nidwalden\"\nmsgstr \"Нидвальден\"\n\n#: ch/ch_states.py:19\nmsgid \"Obwalden\"\nmsgstr \"Обвальден\"\n\n#: ch/ch_states.py:20\nmsgid \"Schaffhausen\"\nmsgstr \"Шаффхаузен\"\n\n#: ch/ch_states.py:21\nmsgid \"Schwyz\"\nmsgstr \"Швиц\"\n\n#: ch/ch_states.py:22\nmsgid \"Solothurn\"\nmsgstr \"Золотурн\"\n\n#: ch/ch_states.py:23\nmsgid \"St. Gallen\"\nmsgstr \"Санкт-Галлен\"\n\n#: ch/ch_states.py:24\nmsgid \"Thurgau\"\nmsgstr \"Тургау\"\n\n#: ch/ch_states.py:25\nmsgid \"Ticino\"\nmsgstr \"Тичино\"\n\n#: ch/ch_states.py:26\nmsgid \"Uri\"\nmsgstr \"Ури\"\n\n#: ch/ch_states.py:27\nmsgid \"Valais\"\nmsgstr \"Вале\"\n\n#: ch/ch_states.py:28\nmsgid \"Vaud\"\nmsgstr \"Во\"\n\n#: ch/ch_states.py:29\nmsgid \"Zug\"\nmsgstr \"Цуг\"\n\n#: ch/ch_states.py:30\nmsgid \"Zurich\"\nmsgstr \"Цюрих\"\n\n#: ch/forms.py:37\nmsgid \"Phone numbers must be in 0XX XXX XX XX format.\"\nmsgstr \"Номера телефонов должны быть в формате 0XX XXX XX XX.\"\n\n#: ch/forms.py:68\nmsgid \"\"\n\"Enter a valid Swiss identity or passport card number in X1234567<0 or \"\n\"1234567890 format.\"\nmsgstr \"\"\n\"Введите правильный номер швейцарского паспорта личности или номер карты в \"\n\"формате X1234567<0 или 1234567890.\"\n\n#: cl/forms.py:32\nmsgid \"Enter a valid Chilean RUT.\"\nmsgstr \"Введите правильный RUT Чили.\"\n\n#: cl/forms.py:33\nmsgid \"Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.\"\nmsgstr \"Введите правильный RUT Чили. Формат: XX.XXX.XXX-X.\"\n\n#: cl/forms.py:34\nmsgid \"The Chilean RUT is not valid.\"\nmsgstr \"Чилийский RUT недействителен.\"\n\n#: cn/forms.py:84\nmsgid \"Enter a post code in the format XXXXXX.\"\nmsgstr \"Введите почтовый индекс в формате XXXXXX.\"\n\n#: cn/forms.py:105\nmsgid \"ID Card Number consists of 15 or 18 digits.\"\nmsgstr \"Номер идентификационной карты состоит из 15 или 18 цифр.\"\n\n#: cn/forms.py:106\nmsgid \"Invalid ID Card Number: Wrong checksum\"\nmsgstr \"Неверный номер идентификационной карты: контрольная сумма неверна\"\n\n#: cn/forms.py:107\nmsgid \"Invalid ID Card Number: Wrong birthdate\"\nmsgstr \"Неверный номер идентификационной карты: неверная дата рождения\"\n\n#: cn/forms.py:108\nmsgid \"Invalid ID Card Number: Wrong location code\"\nmsgstr \"Неверный номер идентификационной карты: неверный код региона\"\n\n#: cn/forms.py:193\nmsgid \"Enter a valid phone number.\"\nmsgstr \"Введите корректный телефонный номер.\"\n\n#: cn/forms.py:210\nmsgid \"Enter a valid cell number.\"\nmsgstr \"Введите корректный номер мобильного телефона.\"\n\n#: cz/cz_regions.py:8\nmsgid \"Prague\"\nmsgstr \"Прага\"\n\n#: cz/cz_regions.py:9\nmsgid \"Central Bohemian Region\"\nmsgstr \"Среднечешский край\"\n\n#: cz/cz_regions.py:10\nmsgid \"South Bohemian Region\"\nmsgstr \"Южночешский край\"\n\n#: cz/cz_regions.py:11\nmsgid \"Pilsen Region\"\nmsgstr \"Пльзенский край\"\n\n#: cz/cz_regions.py:12\nmsgid \"Carlsbad Region\"\nmsgstr \"Карловарский край\"\n\n#: cz/cz_regions.py:13\nmsgid \"Usti Region\"\nmsgstr \"Устецкий край\"\n\n#: cz/cz_regions.py:14\nmsgid \"Liberec Region\"\nmsgstr \"Либерецкий край\"\n\n#: cz/cz_regions.py:15\nmsgid \"Hradec Region\"\nmsgstr \"Краловеградецкий край\"\n\n#: cz/cz_regions.py:16\nmsgid \"Pardubice Region\"\nmsgstr \"Пардубицкий край\"\n\n#: cz/cz_regions.py:17\nmsgid \"Vysocina Region\"\nmsgstr \"Край Высочина\"\n\n#: cz/cz_regions.py:18\nmsgid \"South Moravian Region\"\nmsgstr \"Южноморавский край\"\n\n#: cz/cz_regions.py:19\nmsgid \"Olomouc Region\"\nmsgstr \"Оломоуцкий край\"\n\n#: cz/cz_regions.py:20\nmsgid \"Zlin Region\"\nmsgstr \"Злинский край\"\n\n#: cz/cz_regions.py:21\nmsgid \"Moravian-Silesian Region\"\nmsgstr \"Моравскосилезский край\"\n\n#: cz/forms.py:32 sk/forms.py:33\nmsgid \"Enter a postal code in the format XXXXX or XXX XX.\"\nmsgstr \"Введите почтовый индекс в формате XXXXX или XXX-XX.\"\n\n#: cz/forms.py:52\nmsgid \"Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.\"\nmsgstr \"\"\n\"Введите номер свидетельства о рождении в формате XXXXXX/XXXX или XXXXXXXXXX.\"\n\n#: cz/forms.py:53\nmsgid \"Enter a valid birth number.\"\nmsgstr \"Введите правильный номер свидетельства о рождении.\"\n\n#: cz/forms.py:102\nmsgid \"Enter a valid IC number.\"\nmsgstr \"Введите правильный IC номер.\"\n\n#: de/de_states.py:5\nmsgid \"Baden-Wuerttemberg\"\nmsgstr \"Баден-Вюртемберг\"\n\n#: de/de_states.py:6\nmsgid \"Bavaria\"\nmsgstr \"Бавария\"\n\n#: de/de_states.py:7\nmsgid \"Berlin\"\nmsgstr \"Берлин\"\n\n#: de/de_states.py:8\nmsgid \"Brandenburg\"\nmsgstr \"Бранденбург\"\n\n#: de/de_states.py:9\nmsgid \"Bremen\"\nmsgstr \"Бремен\"\n\n#: de/de_states.py:10\nmsgid \"Hamburg\"\nmsgstr \"Гамбург\"\n\n#: de/de_states.py:11\nmsgid \"Hessen\"\nmsgstr \"Гессен\"\n\n#: de/de_states.py:12\nmsgid \"Mecklenburg-Western Pomerania\"\nmsgstr \"Мекленбург-Западная Померания\"\n\n#: de/de_states.py:13\nmsgid \"Lower Saxony\"\nmsgstr \"Нижняя Саксония\"\n\n#: de/de_states.py:14\nmsgid \"North Rhine-Westphalia\"\nmsgstr \"Северный Рейн-Вестфалия\"\n\n#: de/de_states.py:15\nmsgid \"Rhineland-Palatinate\"\nmsgstr \"Рейнланд-Пфальц\"\n\n#: de/de_states.py:16\nmsgid \"Saarland\"\nmsgstr \"Саар\"\n\n#: de/de_states.py:17\nmsgid \"Saxony\"\nmsgstr \"Саксония\"\n\n#: de/de_states.py:18\nmsgid \"Saxony-Anhalt\"\nmsgstr \"Саксония-Анхальт\"\n\n#: de/de_states.py:19\nmsgid \"Schleswig-Holstein\"\nmsgstr \"Шлезвиг-Гольштейн\"\n\n#: de/de_states.py:20\nmsgid \"Thuringia\"\nmsgstr \"Тюрингия\"\n\n#: de/forms.py:20 fi/forms.py:18 fr/forms.py:20\nmsgid \"Enter a zip code in the format XXXXX.\"\nmsgstr \"Введите почтовый индекс в формате XXXXX.\"\n\n#: de/forms.py:46\nmsgid \"\"\n\"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"format.\"\nmsgstr \"\"\n\"Введите правильный номер паспорта личности в формате XXXXXXXXXXX-XXXXXXX-\"\n\"XXXXXXX-X.\"\n\n#: es/es_provinces.py:5\nmsgid \"Araba\"\nmsgstr \"Араба\"\n\n#: es/es_provinces.py:6\nmsgid \"Albacete\"\nmsgstr \"Альбасете\"\n\n#: es/es_provinces.py:7\nmsgid \"Alacant\"\nmsgstr \"Аликанте\"\n\n#: es/es_provinces.py:8\nmsgid \"Almeria\"\nmsgstr \"Альмерия\"\n\n#: es/es_provinces.py:9\nmsgid \"Avila\"\nmsgstr \"Авила\"\n\n#: es/es_provinces.py:10\nmsgid \"Badajoz\"\nmsgstr \"Бадахос\"\n\n#: es/es_provinces.py:11\nmsgid \"Illes Balears\"\nmsgstr \"Балеарские острова\"\n\n#: es/es_provinces.py:12\nmsgid \"Barcelona\"\nmsgstr \"Барселона\"\n\n#: es/es_provinces.py:13\nmsgid \"Burgos\"\nmsgstr \"Бургос\"\n\n#: es/es_provinces.py:14\nmsgid \"Caceres\"\nmsgstr \"Касерес\"\n\n#: es/es_provinces.py:15\nmsgid \"Cadiz\"\nmsgstr \"Кадис\"\n\n#: es/es_provinces.py:16\nmsgid \"Castello\"\nmsgstr \"Кастельо\"\n\n#: es/es_provinces.py:17\nmsgid \"Ciudad Real\"\nmsgstr \"Сьюдад-Реаль\"\n\n#: es/es_provinces.py:18\nmsgid \"Cordoba\"\nmsgstr \"Кордоба\"\n\n#: es/es_provinces.py:19\nmsgid \"A Coruna\"\nmsgstr \"Ла-Корунья\"\n\n#: es/es_provinces.py:20\nmsgid \"Cuenca\"\nmsgstr \"Куэнка\"\n\n#: es/es_provinces.py:21\nmsgid \"Girona\"\nmsgstr \"Херона\"\n\n#: es/es_provinces.py:22\nmsgid \"Granada\"\nmsgstr \"Гранада\"\n\n#: es/es_provinces.py:23\nmsgid \"Guadalajara\"\nmsgstr \"Гвадалахара\"\n\n#: es/es_provinces.py:24\nmsgid \"Guipuzkoa\"\nmsgstr \"Гипускоа\"\n\n#: es/es_provinces.py:25\nmsgid \"Huelva\"\nmsgstr \"Уэльва\"\n\n#: es/es_provinces.py:26\nmsgid \"Huesca\"\nmsgstr \"Уэска\"\n\n#: es/es_provinces.py:27\nmsgid \"Jaen\"\nmsgstr \"Хаэн\"\n\n#: es/es_provinces.py:28\nmsgid \"Leon\"\nmsgstr \"Леон\"\n\n#: es/es_provinces.py:29\nmsgid \"Lleida\"\nmsgstr \"Лерида\"\n\n#: es/es_provinces.py:30 es/es_regions.py:17\nmsgid \"La Rioja\"\nmsgstr \"Риоха\"\n\n#: es/es_provinces.py:31\nmsgid \"Lugo\"\nmsgstr \"Луго\"\n\n#: es/es_provinces.py:32 es/es_regions.py:18\nmsgid \"Madrid\"\nmsgstr \"Мадрид\"\n\n#: es/es_provinces.py:33\nmsgid \"Malaga\"\nmsgstr \"Малага\"\n\n#: es/es_provinces.py:34\nmsgid \"Murcia\"\nmsgstr \"Мурсия\"\n\n#: es/es_provinces.py:35\nmsgid \"Navarre\"\nmsgstr \"Наварра\"\n\n#: es/es_provinces.py:36\nmsgid \"Ourense\"\nmsgstr \"Оренсе\"\n\n#: es/es_provinces.py:37\nmsgid \"Asturias\"\nmsgstr \"Астурия\"\n\n#: es/es_provinces.py:38\nmsgid \"Palencia\"\nmsgstr \"Паленсия\"\n\n#: es/es_provinces.py:39\nmsgid \"Las Palmas\"\nmsgstr \"Лас-Пальмас\"\n\n#: es/es_provinces.py:40\nmsgid \"Pontevedra\"\nmsgstr \"Понтеведра\"\n\n#: es/es_provinces.py:41\nmsgid \"Salamanca\"\nmsgstr \"Саламанка\"\n\n#: es/es_provinces.py:42\nmsgid \"Santa Cruz de Tenerife\"\nmsgstr \"Санта-Крус-де-Тенерифе\"\n\n#: es/es_provinces.py:43 es/es_regions.py:11\nmsgid \"Cantabria\"\nmsgstr \"Кантабрия\"\n\n#: es/es_provinces.py:44\nmsgid \"Segovia\"\nmsgstr \"Сеговия\"\n\n#: es/es_provinces.py:45\nmsgid \"Seville\"\nmsgstr \"Севилья\"\n\n#: es/es_provinces.py:46\nmsgid \"Soria\"\nmsgstr \"Сория\"\n\n#: es/es_provinces.py:47\nmsgid \"Tarragona\"\nmsgstr \"Таррагона\"\n\n#: es/es_provinces.py:48\nmsgid \"Teruel\"\nmsgstr \"Теруэль\"\n\n#: es/es_provinces.py:49\nmsgid \"Toledo\"\nmsgstr \"Толедо\"\n\n#: es/es_provinces.py:50\nmsgid \"Valencia\"\nmsgstr \"Валенсия\"\n\n#: es/es_provinces.py:51\nmsgid \"Valladolid\"\nmsgstr \"Вальядолид\"\n\n#: es/es_provinces.py:52\nmsgid \"Bizkaia\"\nmsgstr \"Бискайя\"\n\n#: es/es_provinces.py:53\nmsgid \"Zamora\"\nmsgstr \"Замора\"\n\n#: es/es_provinces.py:54\nmsgid \"Zaragoza\"\nmsgstr \"Сарагоса\"\n\n#: es/es_provinces.py:55\nmsgid \"Ceuta\"\nmsgstr \"Сеута\"\n\n#: es/es_provinces.py:56\nmsgid \"Melilla\"\nmsgstr \"Мелилья\"\n\n#: es/es_regions.py:5\nmsgid \"Andalusia\"\nmsgstr \"Андалусия\"\n\n#: es/es_regions.py:6\nmsgid \"Aragon\"\nmsgstr \"Арагон\"\n\n#: es/es_regions.py:7\nmsgid \"Principality of Asturias\"\nmsgstr \"Астурийское княжество\"\n\n#: es/es_regions.py:8\nmsgid \"Balearic Islands\"\nmsgstr \"Балеарские острова\"\n\n#: es/es_regions.py:9\nmsgid \"Basque Country\"\nmsgstr \"Страна Басков\"\n\n#: es/es_regions.py:10\nmsgid \"Canary Islands\"\nmsgstr \"Канарские острова\"\n\n#: es/es_regions.py:12\nmsgid \"Castile-La Mancha\"\nmsgstr \"Кастилия-Ла-Манча\"\n\n#: es/es_regions.py:13\nmsgid \"Castile and Leon\"\nmsgstr \"Кастилия и Леон\"\n\n#: es/es_regions.py:14\nmsgid \"Catalonia\"\nmsgstr \"Каталония\"\n\n#: es/es_regions.py:15\nmsgid \"Extremadura\"\nmsgstr \"Эстремадура\"\n\n#: es/es_regions.py:16\nmsgid \"Galicia\"\nmsgstr \"Галисия\"\n\n#: es/es_regions.py:19\nmsgid \"Region of Murcia\"\nmsgstr \"Мурсия\"\n\n#: es/es_regions.py:20\nmsgid \"Foral Community of Navarre\"\nmsgstr \"Наварра\"\n\n#: es/es_regions.py:21\nmsgid \"Valencian Community\"\nmsgstr \"Валенсия\"\n\n#: es/forms.py:26\nmsgid \"Enter a valid postal code in the range and format 01XXX - 52XXX.\"\nmsgstr \"Введите почтовый индекс в диапазоне и формате 01XXX - 52XXX.\"\n\n#: es/forms.py:46\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or \"\n\"9XXXXXXXX.\"\nmsgstr \"\"\n\"Введите правильный телефонный номер в одном из форматов 6XXXXXXXX, 8XXXXXXXX \"\n\"или 9XXXXXXXX.\"\n\n#: es/forms.py:73\nmsgid \"Please enter a valid NIF, NIE, or CIF.\"\nmsgstr \"Пожалуйста, введите правильный NIF, NIE или CIF.\"\n\n#: es/forms.py:74\nmsgid \"Please enter a valid NIF or NIE.\"\nmsgstr \"Пожалуйста, введите правильный NIF или NIE.\"\n\n#: es/forms.py:75\nmsgid \"Invalid checksum for NIF.\"\nmsgstr \"Неверная проверочная сумма для NIF.\"\n\n#: es/forms.py:76\nmsgid \"Invalid checksum for NIE.\"\nmsgstr \"Неверная проверочная сумма для NIE.\"\n\n#: es/forms.py:77\nmsgid \"Invalid checksum for CIF.\"\nmsgstr \"Неверная проверочная сумма для CIF.\"\n\n#: es/forms.py:149\nmsgid \"\"\n\"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.\"\nmsgstr \"\"\n\"Пожалуйста, введите правильный банковский номер в формате XXXX-XXXX-XX-\"\n\"XXXXXXXXXX.\"\n\n#: es/forms.py:150\nmsgid \"Invalid checksum for bank account number.\"\nmsgstr \"Неверная проверочная сумма для банковского номера.\"\n\n#: fi/forms.py:33\nmsgid \"Enter a valid Finnish social security number.\"\nmsgstr \"Введите правильный номер социального страхования Финляндии.\"\n\n#: fr/forms.py:35\nmsgid \"Phone numbers must be in 0X XX XX XX XX format.\"\nmsgstr \"Телефонные номера должны быть в формате 0X XX XX XX XX.\"\n\n#: gb/forms.py:25\nmsgid \"Enter a valid postcode.\"\nmsgstr \"Введите правильный почтовый индекс.\"\n\n#: gb/gb_regions.py:11\nmsgid \"Bedfordshire\"\nmsgstr \"Бедфордшир\"\n\n#: gb/gb_regions.py:12\nmsgid \"Buckinghamshire\"\nmsgstr \"Бакингемшир\"\n\n#: gb/gb_regions.py:14\nmsgid \"Cheshire\"\nmsgstr \"Чешир\"\n\n#: gb/gb_regions.py:15\nmsgid \"Cornwall and Isles of Scilly\"\nmsgstr \"Корнуолл и острова Силли\"\n\n#: gb/gb_regions.py:16\nmsgid \"Cumbria\"\nmsgstr \"Камбрия\"\n\n#: gb/gb_regions.py:17\nmsgid \"Derbyshire\"\nmsgstr \"Дербишир\"\n\n#: gb/gb_regions.py:18\nmsgid \"Devon\"\nmsgstr \"Девон\"\n\n#: gb/gb_regions.py:19\nmsgid \"Dorset\"\nmsgstr \"Дорсет\"\n\n#: gb/gb_regions.py:20\nmsgid \"Durham\"\nmsgstr \"Дарем\"\n\n#: gb/gb_regions.py:21\nmsgid \"East Sussex\"\nmsgstr \"Восточный Сассекс\"\n\n#: gb/gb_regions.py:22\nmsgid \"Essex\"\nmsgstr \"Эссекс\"\n\n#: gb/gb_regions.py:23\nmsgid \"Gloucestershire\"\nmsgstr \"Глостершир\"\n\n#: gb/gb_regions.py:24\nmsgid \"Greater London\"\nmsgstr \"Большой Лондон\"\n\n#: gb/gb_regions.py:25\nmsgid \"Greater Manchester\"\nmsgstr \"Большой Манчестер\"\n\n#: gb/gb_regions.py:26\nmsgid \"Hampshire\"\nmsgstr \"Хэмпшир\"\n\n#: gb/gb_regions.py:27\nmsgid \"Hertfordshire\"\nmsgstr \"Хартфордшир\"\n\n#: gb/gb_regions.py:28\nmsgid \"Kent\"\nmsgstr \"Кент\"\n\n#: gb/gb_regions.py:29\nmsgid \"Lancashire\"\nmsgstr \"Ланкашир\"\n\n#: gb/gb_regions.py:30\nmsgid \"Leicestershire\"\nmsgstr \"Лестершир\"\n\n#: gb/gb_regions.py:31\nmsgid \"Lincolnshire\"\nmsgstr \"Линкольншир\"\n\n#: gb/gb_regions.py:32\nmsgid \"Merseyside\"\nmsgstr \"Мерсисайд\"\n\n#: gb/gb_regions.py:33\nmsgid \"Norfolk\"\nmsgstr \"Норфолк\"\n\n#: gb/gb_regions.py:34\nmsgid \"North Yorkshire\"\nmsgstr \"Северный Йоркшир\"\n\n#: gb/gb_regions.py:35\nmsgid \"Northamptonshire\"\nmsgstr \"Нортгемптоншир\"\n\n#: gb/gb_regions.py:36\nmsgid \"Northumberland\"\nmsgstr \"Нортумберленд\"\n\n#: gb/gb_regions.py:37\nmsgid \"Nottinghamshire\"\nmsgstr \"Ноттингемшир\"\n\n#: gb/gb_regions.py:38\nmsgid \"Oxfordshire\"\nmsgstr \"Оксфордшир\"\n\n#: gb/gb_regions.py:39\nmsgid \"Shropshire\"\nmsgstr \"Шропшир\"\n\n#: gb/gb_regions.py:40\nmsgid \"Somerset\"\nmsgstr \"Сомерсет\"\n\n#: gb/gb_regions.py:41\nmsgid \"South Yorkshire\"\nmsgstr \"Южный Йоркшир\"\n\n#: gb/gb_regions.py:42\nmsgid \"Staffordshire\"\nmsgstr \"Стаффордшир\"\n\n#: gb/gb_regions.py:43\nmsgid \"Suffolk\"\nmsgstr \"Саффолк\"\n\n#: gb/gb_regions.py:44\nmsgid \"Surrey\"\nmsgstr \"Сюррей\"\n\n#: gb/gb_regions.py:45\nmsgid \"Tyne and Wear\"\nmsgstr \"Тайн и Уир\"\n\n#: gb/gb_regions.py:46\nmsgid \"Warwickshire\"\nmsgstr \"Уорикшир\"\n\n#: gb/gb_regions.py:47\nmsgid \"West Midlands\"\nmsgstr \"Уэст-Мидлендс\"\n\n#: gb/gb_regions.py:48\nmsgid \"West Sussex\"\nmsgstr \"Западный Сассекс\"\n\n#: gb/gb_regions.py:49\nmsgid \"West Yorkshire\"\nmsgstr \"Западный Йоркшир\"\n\n#: gb/gb_regions.py:50\nmsgid \"Wiltshire\"\nmsgstr \"Уилтшир\"\n\n#: gb/gb_regions.py:51\nmsgid \"Worcestershire\"\nmsgstr \"Вустершир\"\n\n#: gb/gb_regions.py:55\nmsgid \"County Antrim\"\nmsgstr \"Графство Антрим\"\n\n#: gb/gb_regions.py:56\nmsgid \"County Armagh\"\nmsgstr \"Графство Арма\"\n\n#: gb/gb_regions.py:57\nmsgid \"County Down\"\nmsgstr \"Графство Даун\"\n\n#: gb/gb_regions.py:58\nmsgid \"County Fermanagh\"\nmsgstr \"Графство Фермана\"\n\n#: gb/gb_regions.py:59\nmsgid \"County Londonderry\"\nmsgstr \"Графство Лондондерри\"\n\n#: gb/gb_regions.py:60\nmsgid \"County Tyrone\"\nmsgstr \"Графство Тирон\"\n\n#: gb/gb_regions.py:64\nmsgid \"Clwyd\"\nmsgstr \"Клуид\"\n\n#: gb/gb_regions.py:65\nmsgid \"Dyfed\"\nmsgstr \"Дивед\"\n\n#: gb/gb_regions.py:66\nmsgid \"Gwent\"\nmsgstr \"Гуент\"\n\n#: gb/gb_regions.py:67\nmsgid \"Gwynedd\"\nmsgstr \"Гуинет\"\n\n#: gb/gb_regions.py:68\nmsgid \"Mid Glamorgan\"\nmsgstr \"Мид-Гламорган\"\n\n#: gb/gb_regions.py:69\nmsgid \"Powys\"\nmsgstr \"Поуис\"\n\n#: gb/gb_regions.py:70\nmsgid \"South Glamorgan\"\nmsgstr \"Южный Гламорган\"\n\n#: gb/gb_regions.py:71\nmsgid \"West Glamorgan\"\nmsgstr \"Западный Гламорган\"\n\n#: gb/gb_regions.py:75\nmsgid \"Borders\"\nmsgstr \"Бордерс\"\n\n#: gb/gb_regions.py:76\nmsgid \"Central Scotland\"\nmsgstr \"Центральная Шотландия\"\n\n#: gb/gb_regions.py:77\nmsgid \"Dumfries and Galloway\"\nmsgstr \"Дамфрис и Галлоуэй\"\n\n#: gb/gb_regions.py:78\nmsgid \"Fife\"\nmsgstr \"Файф\"\n\n#: gb/gb_regions.py:79\nmsgid \"Grampian\"\nmsgstr \"Грампиан\"\n\n#: gb/gb_regions.py:80\nmsgid \"Highland\"\nmsgstr \"Хайленд\"\n\n#: gb/gb_regions.py:81\nmsgid \"Lothian\"\nmsgstr \"Лотиан\"\n\n#: gb/gb_regions.py:82\nmsgid \"Orkney Islands\"\nmsgstr \"Оркнейские острова\"\n\n#: gb/gb_regions.py:83\nmsgid \"Shetland Islands\"\nmsgstr \"Шетлендские острова\"\n\n#: gb/gb_regions.py:84\nmsgid \"Strathclyde\"\nmsgstr \"Стратклайд\"\n\n#: gb/gb_regions.py:85\nmsgid \"Tayside\"\nmsgstr \"Тэйсайд\"\n\n#: gb/gb_regions.py:86\nmsgid \"Western Isles\"\nmsgstr \"Западные острова\"\n\n#: gb/gb_regions.py:90\nmsgid \"England\"\nmsgstr \"Англия\"\n\n#: gb/gb_regions.py:91\nmsgid \"Northern Ireland\"\nmsgstr \"Северная Ирландия\"\n\n#: gb/gb_regions.py:92\nmsgid \"Scotland\"\nmsgstr \"Шотландия\"\n\n#: gb/gb_regions.py:93\nmsgid \"Wales\"\nmsgstr \"Уэльс\"\n\n#: hk/forms.py:37\n#, python-format\nmsgid \"Phone number should not start with one of the followings: %s.\"\nmsgstr \"\"\n\"Телефонный номер не может начинаться с одного из следующих наборов цифр: %s.\"\n\n#: hk/forms.py:40\n#, python-format\nmsgid \"Phone number must be in one of the following formats: %s.\"\nmsgstr \"Телефонный номер должен быть в одном из следующих форматов: %s.\"\n\n#: hk/forms.py:42\n#, python-format\nmsgid \"Phone number should start with one of the followings: %s.\"\nmsgstr \"\"\n\"Телефонный номер должен начинаться с одного из следующих наборов цифр: %s.\"\n\n#: hr/forms.py:76\nmsgid \"Enter a valid 13 digit JMBG\"\nmsgstr \"Введите корретный 13-значный JMBG\"\n\n#: hr/forms.py:77\nmsgid \"Error in date segment\"\nmsgstr \"Ошибка в сегменте даты\"\n\n#: hr/forms.py:123\nmsgid \"Enter a valid 11 digit OIB\"\nmsgstr \"Введите корретный 11-значный OIB\"\n\n#: hr/forms.py:152 id/forms.py:112\nmsgid \"Enter a valid vehicle license plate number\"\nmsgstr \"Введите правильный регистрационный номер автомобиля\"\n\n#: hr/forms.py:153\nmsgid \"Enter a valid location code\"\nmsgstr \"Введите корретный код региона\"\n\n#: hr/forms.py:154\nmsgid \"Number part cannot be zero\"\nmsgstr \"Числовая часть не может быть нулём\"\n\n#: hr/forms.py:190\nmsgid \"Enter a valid 5 digit postal code\"\nmsgstr \"Введите корректный 5-значный почтовый индекс\"\n\n#: hr/forms.py:218 id/forms.py:72 nl/forms.py:56\nmsgid \"Enter a valid phone number\"\nmsgstr \"Введите правильный телефонный номер\"\n\n#: hr/forms.py:219\nmsgid \"Enter a valid area or mobile network code\"\nmsgstr \"Введите корректный код региона или код мобильной сети\"\n\n#: hr/forms.py:220\nmsgid \"The phone nubmer is too long\"\nmsgstr \"Слишком длинный телефонный номер\"\n\n#: hr/forms.py:258\nmsgid \"Enter a valid 19 digit JMBAG starting with 601983\"\nmsgstr \"Введите корректный 19-значный JMBAG, начинающийся с 601983\"\n\n#: hr/forms.py:259\nmsgid \"Card issue number cannot be zero\"\nmsgstr \"Код выпуска карты не может быть нулём\"\n\n#: hr/hr_choices.py:14\nmsgid \"Grad Zagreb\"\nmsgstr \"Город Загреб\"\n\n#: hr/hr_choices.py:15\nmsgid \"Bjelovarsko-bilogorska županija\"\nmsgstr \"Беловарско-Билогорская жупания\"\n\n#: hr/hr_choices.py:16\nmsgid \"Brodsko-posavska županija\"\nmsgstr \"Бродско-Посавская жупания\"\n\n#: hr/hr_choices.py:17\nmsgid \"Dubrovačko-neretvanska županija\"\nmsgstr \"Дубровницко-Неретванская жупания\"\n\n#: hr/hr_choices.py:18\nmsgid \"Istarska županija\"\nmsgstr \"Истрийская жупания\"\n\n#: hr/hr_choices.py:19\nmsgid \"Karlovačka županija\"\nmsgstr \"Карловацкая жупания\"\n\n#: hr/hr_choices.py:20\nmsgid \"Koprivničko-križevačka županija\"\nmsgstr \"Копривницко-Крижевацкая жупания\"\n\n#: hr/hr_choices.py:21\nmsgid \"Krapinsko-zagorska županija\"\nmsgstr \"Крапинско-Загорская жупания\"\n\n#: hr/hr_choices.py:22\nmsgid \"Ličko-senjska županija\"\nmsgstr \"Лицко-Сеньская жупания\"\n\n#: hr/hr_choices.py:23\nmsgid \"Međimurska županija\"\nmsgstr \"Меджумурская жупания\"\n\n#: hr/hr_choices.py:24\nmsgid \"Osječko-baranjska županija\"\nmsgstr \"Осиецко-Бараньская жупания\"\n\n#: hr/hr_choices.py:25\nmsgid \"Požeško-slavonska županija\"\nmsgstr \"Пожежско-Славонская жупания\"\n\n#: hr/hr_choices.py:26\nmsgid \"Primorsko-goranska županija\"\nmsgstr \"Приморско-Горанская жупания\"\n\n#: hr/hr_choices.py:27\nmsgid \"Sisačko-moslavačka županija\"\nmsgstr \"Сисацко-Мославинская жупания\"\n\n#: hr/hr_choices.py:28\nmsgid \"Splitsko-dalmatinska županija\"\nmsgstr \"Сплитско-Далматинская жупания\"\n\n#: hr/hr_choices.py:29\nmsgid \"Šibensko-kninska županija\"\nmsgstr \"Шибенско-Книнская жупания\"\n\n#: hr/hr_choices.py:30\nmsgid \"Varaždinska županija\"\nmsgstr \"Вараждинская жупания\"\n\n#: hr/hr_choices.py:31\nmsgid \"Virovitičko-podravska županija\"\nmsgstr \"Вировитицко-Подравская жупания\"\n\n#: hr/hr_choices.py:32\nmsgid \"Vukovarsko-srijemska županija\"\nmsgstr \"Вуковарско-Сремская жупания\"\n\n#: hr/hr_choices.py:33\nmsgid \"Zadarska županija\"\nmsgstr \"Задарская жупания\"\n\n#: hr/hr_choices.py:34\nmsgid \"Zagrebačka županija\"\nmsgstr \"Загребская жупания\"\n\n#: id/forms.py:31\nmsgid \"Enter a valid post code\"\nmsgstr \"Введите правильный почтовый индекс\"\n\n#: id/forms.py:176\nmsgid \"Enter a valid NIK/KTP number\"\nmsgstr \"Введите правильный NIK/KTP номер\"\n\n#: id/id_choices.py:15\nmsgid \"Aceh\"\nmsgstr \"Ачех\"\n\n#: id/id_choices.py:16 id/id_choices.py:79\nmsgid \"Bali\"\nmsgstr \"Бали\"\n\n#: id/id_choices.py:17 id/id_choices.py:51\nmsgid \"Banten\"\nmsgstr \"Бантен\"\n\n#: id/id_choices.py:18 id/id_choices.py:60\nmsgid \"Bengkulu\"\nmsgstr \"Бенгкулу\"\n\n#: id/id_choices.py:19 id/id_choices.py:53\nmsgid \"Yogyakarta\"\nmsgstr \"Джокьякарта\"\n\n#: id/id_choices.py:20 id/id_choices.py:57\nmsgid \"Jakarta\"\nmsgstr \"Джакарта\"\n\n#: id/id_choices.py:21 id/id_choices.py:81\nmsgid \"Gorontalo\"\nmsgstr \"Горонтало\"\n\n#: id/id_choices.py:22 id/id_choices.py:63\nmsgid \"Jambi\"\nmsgstr \"Джамби\"\n\n#: id/id_choices.py:23\nmsgid \"Jawa Barat\"\nmsgstr \"Западная Ява\"\n\n#: id/id_choices.py:24\nmsgid \"Jawa Tengah\"\nmsgstr \"Центральная Ява\"\n\n#: id/id_choices.py:25\nmsgid \"Jawa Timur\"\nmsgstr \"Восточная Ява\"\n\n#: id/id_choices.py:26 id/id_choices.py:94\nmsgid \"Kalimantan Barat\"\nmsgstr \"Западный Калимантан\"\n\n#: id/id_choices.py:27 id/id_choices.py:72\nmsgid \"Kalimantan Selatan\"\nmsgstr \"Южный Калимантан\"\n\n#: id/id_choices.py:28 id/id_choices.py:95\nmsgid \"Kalimantan Tengah\"\nmsgstr \"Центральный Калимантан\"\n\n#: id/id_choices.py:29 id/id_choices.py:96\nmsgid \"Kalimantan Timur\"\nmsgstr \"Восточный Калимантан\"\n\n#: id/id_choices.py:30\nmsgid \"Kepulauan Bangka-Belitung\"\nmsgstr \"Острова Бангка-Белитунг\"\n\n#: id/id_choices.py:31 id/id_choices.py:68\nmsgid \"Kepulauan Riau\"\nmsgstr \"Острова Риау\"\n\n#: id/id_choices.py:32 id/id_choices.py:61\nmsgid \"Lampung\"\nmsgstr \"Лампунг\"\n\n#: id/id_choices.py:33 id/id_choices.py:76\nmsgid \"Maluku\"\nmsgstr \"Молукку\"\n\n#: id/id_choices.py:34 id/id_choices.py:77\nmsgid \"Maluku Utara\"\nmsgstr \"Северное Молукку\"\n\n#: id/id_choices.py:35\nmsgid \"Nusa Tenggara Barat\"\nmsgstr \"Западные Малые Зондские острова\"\n\n#: id/id_choices.py:36\nmsgid \"Nusa Tenggara Timur\"\nmsgstr \"Восточные Малые Зондские острова\"\n\n#: id/id_choices.py:37\nmsgid \"Papua\"\nmsgstr \"Папуа\"\n\n#: id/id_choices.py:38\nmsgid \"Papua Barat\"\nmsgstr \"Западное Папуа\"\n\n#: id/id_choices.py:39 id/id_choices.py:66\nmsgid \"Riau\"\nmsgstr \"Риау\"\n\n#: id/id_choices.py:40 id/id_choices.py:74\nmsgid \"Sulawesi Barat\"\nmsgstr \"Западное Сулавеси\"\n\n#: id/id_choices.py:41 id/id_choices.py:75\nmsgid \"Sulawesi Selatan\"\nmsgstr \"Южное Сулавеси\"\n\n#: id/id_choices.py:42 id/id_choices.py:82\nmsgid \"Sulawesi Tengah\"\nmsgstr \"Центральное Сулавеси\"\n\n#: id/id_choices.py:43 id/id_choices.py:85\nmsgid \"Sulawesi Tenggara\"\nmsgstr \"Юго-Восточное Сулавеси\"\n\n#: id/id_choices.py:44\nmsgid \"Sulawesi Utara\"\nmsgstr \"Северное Сулавеси\"\n\n#: id/id_choices.py:45 id/id_choices.py:58\nmsgid \"Sumatera Barat\"\nmsgstr \"Западная Суматра\"\n\n#: id/id_choices.py:46 id/id_choices.py:62\nmsgid \"Sumatera Selatan\"\nmsgstr \"Южная Суматра\"\n\n#: id/id_choices.py:47 id/id_choices.py:64\nmsgid \"Sumatera Utara\"\nmsgstr \"Северная Суматра\"\n\n#: id/id_choices.py:52\nmsgid \"Magelang\"\nmsgstr \"Магеланг\"\n\n#: id/id_choices.py:54\nmsgid \"Surakarta - Solo\"\nmsgstr \"Суракарта - Соло\"\n\n#: id/id_choices.py:55\nmsgid \"Madiun\"\nmsgstr \"Мадиун\"\n\n#: id/id_choices.py:56\nmsgid \"Kediri\"\nmsgstr \"Кедири\"\n\n#: id/id_choices.py:59\nmsgid \"Tapanuli\"\nmsgstr \"Тапанули\"\n\n#: id/id_choices.py:65\nmsgid \"Nanggroe Aceh Darussalam\"\nmsgstr \"Ачех\"\n\n#: id/id_choices.py:67\nmsgid \"Kepulauan Bangka Belitung\"\nmsgstr \"Бангка-Белитунг\"\n\n#: id/id_choices.py:69\nmsgid \"Corps Consulate\"\nmsgstr \"Консульский корпус\"\n\n#: id/id_choices.py:70\nmsgid \"Corps Diplomatic\"\nmsgstr \"Дипломатический корпус\"\n\n#: id/id_choices.py:71\nmsgid \"Bandung\"\nmsgstr \"Бандунг\"\n\n#: id/id_choices.py:73\nmsgid \"Sulawesi Utara Daratan\"\nmsgstr \"Северное Сулавеси\"\n\n#: id/id_choices.py:78\nmsgid \"NTT - Timor\"\nmsgstr \"NTT - Тимор\"\n\n#: id/id_choices.py:80\nmsgid \"Sulawesi Utara Kepulauan\"\nmsgstr \"Северное Сулавеси\"\n\n#: id/id_choices.py:83\nmsgid \"NTB - Lombok\"\nmsgstr \"NTB - Ломбок\"\n\n#: id/id_choices.py:84\nmsgid \"Papua dan Papua Barat\"\nmsgstr \"Папуа и Западное Папуа\"\n\n#: id/id_choices.py:86\nmsgid \"Cirebon\"\nmsgstr \"Чиребон\"\n\n#: id/id_choices.py:87\nmsgid \"NTB - Sumbawa\"\nmsgstr \"NTB - Сумбава\"\n\n#: id/id_choices.py:88\nmsgid \"NTT - Flores\"\nmsgstr \"NTT - Флорес\"\n\n#: id/id_choices.py:89\nmsgid \"NTT - Sumba\"\nmsgstr \"NTT - Сумба\"\n\n#: id/id_choices.py:90\nmsgid \"Bogor\"\nmsgstr \"Богор\"\n\n#: id/id_choices.py:91\nmsgid \"Pekalongan\"\nmsgstr \"Пекалонган\"\n\n#: id/id_choices.py:92\nmsgid \"Semarang\"\nmsgstr \"Семаранг\"\n\n#: id/id_choices.py:93\nmsgid \"Pati\"\nmsgstr \"Пати\"\n\n#: id/id_choices.py:97\nmsgid \"Surabaya\"\nmsgstr \"Сурабая\"\n\n#: id/id_choices.py:98\nmsgid \"Madura\"\nmsgstr \"Мадура\"\n\n#: id/id_choices.py:99\nmsgid \"Malang\"\nmsgstr \"Маланг\"\n\n#: id/id_choices.py:100\nmsgid \"Jember\"\nmsgstr \"Джембер\"\n\n#: id/id_choices.py:101\nmsgid \"Banyumas\"\nmsgstr \"Банджумас\"\n\n#: id/id_choices.py:102\nmsgid \"Federal Government\"\nmsgstr \"Федеральное правительство\"\n\n#: id/id_choices.py:103\nmsgid \"Bojonegoro\"\nmsgstr \"Боджонегоро\"\n\n#: id/id_choices.py:104\nmsgid \"Purwakarta\"\nmsgstr \"Пурвакарта\"\n\n#: id/id_choices.py:105\nmsgid \"Sidoarjo\"\nmsgstr \"Сидоарджо\"\n\n#: id/id_choices.py:106\nmsgid \"Garut\"\nmsgstr \"Гарут\"\n\n#: ie/ie_counties.py:8\nmsgid \"Antrim\"\nmsgstr \"Антрим\"\n\n#: ie/ie_counties.py:9\nmsgid \"Armagh\"\nmsgstr \"Арма\"\n\n#: ie/ie_counties.py:10\nmsgid \"Carlow\"\nmsgstr \"Карлоу\"\n\n#: ie/ie_counties.py:11\nmsgid \"Cavan\"\nmsgstr \"Каван\"\n\n#: ie/ie_counties.py:12\nmsgid \"Clare\"\nmsgstr \"Клэр\"\n\n#: ie/ie_counties.py:13\nmsgid \"Cork\"\nmsgstr \"Корк\"\n\n#: ie/ie_counties.py:14\nmsgid \"Derry\"\nmsgstr \"Дерри\"\n\n#: ie/ie_counties.py:15\nmsgid \"Donegal\"\nmsgstr \"Донегол\"\n\n#: ie/ie_counties.py:16\nmsgid \"Down\"\nmsgstr \"Даун\"\n\n#: ie/ie_counties.py:17\nmsgid \"Dublin\"\nmsgstr \"Дублин\"\n\n#: ie/ie_counties.py:18\nmsgid \"Fermanagh\"\nmsgstr \"Фермана\"\n\n#: ie/ie_counties.py:19\nmsgid \"Galway\"\nmsgstr \"Голуэй\"\n\n#: ie/ie_counties.py:20\nmsgid \"Kerry\"\nmsgstr \"Керри\"\n\n#: ie/ie_counties.py:21\nmsgid \"Kildare\"\nmsgstr \"Килдэр\"\n\n#: ie/ie_counties.py:22\nmsgid \"Kilkenny\"\nmsgstr \"Килкенни\"\n\n#: ie/ie_counties.py:23\nmsgid \"Laois\"\nmsgstr \"Лиишь\"\n\n#: ie/ie_counties.py:24\nmsgid \"Leitrim\"\nmsgstr \"Литрим\"\n\n#: ie/ie_counties.py:25\nmsgid \"Limerick\"\nmsgstr \"Лимерик\"\n\n#: ie/ie_counties.py:26\nmsgid \"Longford\"\nmsgstr \"Лонгфорд\"\n\n#: ie/ie_counties.py:27\nmsgid \"Louth\"\nmsgstr \"Лаут\"\n\n#: ie/ie_counties.py:28\nmsgid \"Mayo\"\nmsgstr \"Мейо\"\n\n#: ie/ie_counties.py:29\nmsgid \"Meath\"\nmsgstr \"Мит\"\n\n#: ie/ie_counties.py:30\nmsgid \"Monaghan\"\nmsgstr \"Монахан\"\n\n#: ie/ie_counties.py:31\nmsgid \"Offaly\"\nmsgstr \"Оффали\"\n\n#: ie/ie_counties.py:32\nmsgid \"Roscommon\"\nmsgstr \"Роскоммон\"\n\n#: ie/ie_counties.py:33\nmsgid \"Sligo\"\nmsgstr \"Слайго\"\n\n#: ie/ie_counties.py:34\nmsgid \"Tipperary\"\nmsgstr \"Типперэри\"\n\n#: ie/ie_counties.py:35\nmsgid \"Tyrone\"\nmsgstr \"Тирон\"\n\n#: ie/ie_counties.py:36\nmsgid \"Waterford\"\nmsgstr \"Уотерфорд\"\n\n#: ie/ie_counties.py:37\nmsgid \"Westmeath\"\nmsgstr \"Уэстмит\"\n\n#: ie/ie_counties.py:38\nmsgid \"Wexford\"\nmsgstr \"Уэксфорд\"\n\n#: ie/ie_counties.py:39\nmsgid \"Wicklow\"\nmsgstr \"Уиклоу\"\n\n#: il/forms.py:32\nmsgid \"Enter a postal code in the format XXXXX\"\nmsgstr \"Введите почтовый индекс в формате XXXXX\"\n\n#: il/forms.py:51\nmsgid \"Enter a valid ID number.\"\nmsgstr \"Введите действительный ID номер.\"\n\n#: in_/forms.py:41\nmsgid \"Enter a zip code in the format XXXXXX or XXX XXX.\"\nmsgstr \"Введите корректный почтовый индекс в формате XXXXXX или XXX XXX.\"\n\n#: in_/forms.py:64\nmsgid \"Enter an Indian state or territory.\"\nmsgstr \"Введите индийский штат или территорию.\"\n\n#: in_/forms.py:103\nmsgid \"Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.\"\nmsgstr \"\"\n\"Телефонные номера должны быть в формате 02X-8X, или 03X-7X, или 04X-6X.\"\n\n#: is_/forms.py:22\nmsgid \"\"\n\"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.\"\nmsgstr \"\"\n\"Введите правильный исландский идентификационный номер. Формат: XXXXXX-XXXX.\"\n\n#: is_/forms.py:23\nmsgid \"The Icelandic identification number is not valid.\"\nmsgstr \"Неправильный исландский идентификационный номер.\"\n\n#: it/forms.py:21\nmsgid \"Enter a valid zip code.\"\nmsgstr \"Введите правильный почтовый индекс.\"\n\n#: it/forms.py:48\nmsgid \"Enter a valid Social Security number.\"\nmsgstr \"Введите правильный номер социального страхования.\"\n\n#: it/forms.py:73\nmsgid \"Enter a valid VAT number.\"\nmsgstr \"Введите правильный VAT номер.\"\n\n#: jp/forms.py:19\nmsgid \"Enter a postal code in the format XXXXXXX or XXX-XXXX.\"\nmsgstr \"Введите почтовый индекс в формате XXXXXXX или XXX-XXXX.\"\n\n#: jp/jp_prefectures.py:4\nmsgid \"Hokkaido\"\nmsgstr \"Хоккайдо\"\n\n#: jp/jp_prefectures.py:5\nmsgid \"Aomori\"\nmsgstr \"Аомори\"\n\n#: jp/jp_prefectures.py:6\nmsgid \"Iwate\"\nmsgstr \"Иватэ\"\n\n#: jp/jp_prefectures.py:7\nmsgid \"Miyagi\"\nmsgstr \"Мияги\"\n\n#: jp/jp_prefectures.py:8\nmsgid \"Akita\"\nmsgstr \"Акита\"\n\n#: jp/jp_prefectures.py:9\nmsgid \"Yamagata\"\nmsgstr \"Ямагата\"\n\n#: jp/jp_prefectures.py:10\nmsgid \"Fukushima\"\nmsgstr \"Фукушима\"\n\n#: jp/jp_prefectures.py:11\nmsgid \"Ibaraki\"\nmsgstr \"Ибакари\"\n\n#: jp/jp_prefectures.py:12\nmsgid \"Tochigi\"\nmsgstr \"Тотиги\"\n\n#: jp/jp_prefectures.py:13\nmsgid \"Gunma\"\nmsgstr \"Гунма\"\n\n#: jp/jp_prefectures.py:14\nmsgid \"Saitama\"\nmsgstr \"Сайтама\"\n\n#: jp/jp_prefectures.py:15\nmsgid \"Chiba\"\nmsgstr \"Тиба\"\n\n#: jp/jp_prefectures.py:16\nmsgid \"Tokyo\"\nmsgstr \"Токио\"\n\n#: jp/jp_prefectures.py:17\nmsgid \"Kanagawa\"\nmsgstr \"Канагава\"\n\n#: jp/jp_prefectures.py:18\nmsgid \"Yamanashi\"\nmsgstr \"Яманаси\"\n\n#: jp/jp_prefectures.py:19\nmsgid \"Nagano\"\nmsgstr \"Нагано\"\n\n#: jp/jp_prefectures.py:20\nmsgid \"Niigata\"\nmsgstr \"Ниигата\"\n\n#: jp/jp_prefectures.py:21\nmsgid \"Toyama\"\nmsgstr \"Тояма\"\n\n#: jp/jp_prefectures.py:22\nmsgid \"Ishikawa\"\nmsgstr \"Исикава\"\n\n#: jp/jp_prefectures.py:23\nmsgid \"Fukui\"\nmsgstr \"Фукуи\"\n\n#: jp/jp_prefectures.py:24\nmsgid \"Gifu\"\nmsgstr \"Гифу\"\n\n#: jp/jp_prefectures.py:25\nmsgid \"Shizuoka\"\nmsgstr \"Сидзуока\"\n\n#: jp/jp_prefectures.py:26\nmsgid \"Aichi\"\nmsgstr \"Айчи\"\n\n#: jp/jp_prefectures.py:27\nmsgid \"Mie\"\nmsgstr \"Миэ\"\n\n#: jp/jp_prefectures.py:28\nmsgid \"Shiga\"\nmsgstr \"Сига\"\n\n#: jp/jp_prefectures.py:29\nmsgid \"Kyoto\"\nmsgstr \"Киото\"\n\n#: jp/jp_prefectures.py:30\nmsgid \"Osaka\"\nmsgstr \"Осака\"\n\n#: jp/jp_prefectures.py:31\nmsgid \"Hyogo\"\nmsgstr \"Хёго\"\n\n#: jp/jp_prefectures.py:32\nmsgid \"Nara\"\nmsgstr \"Нара\"\n\n#: jp/jp_prefectures.py:33\nmsgid \"Wakayama\"\nmsgstr \"Вакаяма\"\n\n#: jp/jp_prefectures.py:34\nmsgid \"Tottori\"\nmsgstr \"Тоттори\"\n\n#: jp/jp_prefectures.py:35\nmsgid \"Shimane\"\nmsgstr \"Симанэ\"\n\n#: jp/jp_prefectures.py:36\nmsgid \"Okayama\"\nmsgstr \"Окаяма\"\n\n#: jp/jp_prefectures.py:37\nmsgid \"Hiroshima\"\nmsgstr \"Хиросима\"\n\n#: jp/jp_prefectures.py:38\nmsgid \"Yamaguchi\"\nmsgstr \"Ямагути\"\n\n#: jp/jp_prefectures.py:39\nmsgid \"Tokushima\"\nmsgstr \"Токусима\"\n\n#: jp/jp_prefectures.py:40\nmsgid \"Kagawa\"\nmsgstr \"Кагава\"\n\n#: jp/jp_prefectures.py:41\nmsgid \"Ehime\"\nmsgstr \"Эхимэ\"\n\n#: jp/jp_prefectures.py:42\nmsgid \"Kochi\"\nmsgstr \"Коти\"\n\n#: jp/jp_prefectures.py:43\nmsgid \"Fukuoka\"\nmsgstr \"Фукуока\"\n\n#: jp/jp_prefectures.py:44\nmsgid \"Saga\"\nmsgstr \"Сага\"\n\n#: jp/jp_prefectures.py:45\nmsgid \"Nagasaki\"\nmsgstr \"Нагасаки\"\n\n#: jp/jp_prefectures.py:46\nmsgid \"Kumamoto\"\nmsgstr \"Кумамото\"\n\n#: jp/jp_prefectures.py:47\nmsgid \"Oita\"\nmsgstr \"Оита\"\n\n#: jp/jp_prefectures.py:48\nmsgid \"Miyazaki\"\nmsgstr \"Миядзаки\"\n\n#: jp/jp_prefectures.py:49\nmsgid \"Kagoshima\"\nmsgstr \"Кагосима\"\n\n#: jp/jp_prefectures.py:50\nmsgid \"Okinawa\"\nmsgstr \"Окинава\"\n\n#: kw/forms.py:27\nmsgid \"Enter a valid Kuwaiti Civil ID number\"\nmsgstr \"Введите правильный номер кувейтского удостоверения личности\"\n\n#: mk/forms.py:18\nmsgid \"\"\n\"Identity card numbers must contain either 4 to 7 digits or an uppercase \"\n\"letter and 7 digits.\"\nmsgstr \"\"\n\"Номер идентификационной карты должен содержать или от 4 до 7 цифр, или \"\n\"заглавную букву и 7 цифр.\"\n\n#: mk/forms.py:57 si/forms.py:24\nmsgid \"This field should contain exactly 13 digits.\"\nmsgstr \"Это поле должно содержать ровно 13 цифр.\"\n\n#: mk/forms.py:58\nmsgid \"The first 7 digits of the UMCN must represent a valid past date.\"\nmsgstr \"Первые 7 цифр UMCN должны быть корректной датой в прошлом.\"\n\n#: mk/forms.py:59\nmsgid \"The UMCN is not valid.\"\nmsgstr \"Некорректный UMCN.\"\n\n#: mk/mk_choices.py:10\nmsgid \"Aerodrom\"\nmsgstr \"Аэродром\"\n\n#: mk/mk_choices.py:11\nmsgid \"Aračinovo\"\nmsgstr \"Арачиново\"\n\n#: mk/mk_choices.py:12\nmsgid \"Berovo\"\nmsgstr \"Берово\"\n\n#: mk/mk_choices.py:13\nmsgid \"Bitola\"\nmsgstr \"Битола\"\n\n#: mk/mk_choices.py:14\nmsgid \"Bogdanci\"\nmsgstr \"Богданци\"\n\n#: mk/mk_choices.py:15\nmsgid \"Bogovinje\"\nmsgstr \"Боговинье\"\n\n#: mk/mk_choices.py:16\nmsgid \"Bosilovo\"\nmsgstr \"Босилово\"\n\n#: mk/mk_choices.py:17\nmsgid \"Brvenica\"\nmsgstr \"Брвеница\"\n\n#: mk/mk_choices.py:18\nmsgid \"Butel\"\nmsgstr \"Бутел\"\n\n#: mk/mk_choices.py:19\nmsgid \"Valandovo\"\nmsgstr \"Валандово\"\n\n#: mk/mk_choices.py:20\nmsgid \"Vasilevo\"\nmsgstr \"Василево\"\n\n#: mk/mk_choices.py:21\nmsgid \"Vevčani\"\nmsgstr \"Вевчани\"\n\n#: mk/mk_choices.py:22\nmsgid \"Veles\"\nmsgstr \"Велес\"\n\n#: mk/mk_choices.py:23\nmsgid \"Vinica\"\nmsgstr \"Виница\"\n\n#: mk/mk_choices.py:24\nmsgid \"Vraneštica\"\nmsgstr \"Вранештица\"\n\n#: mk/mk_choices.py:25\nmsgid \"Vrapčište\"\nmsgstr \"Врапчиште\"\n\n#: mk/mk_choices.py:26\nmsgid \"Gazi Baba\"\nmsgstr \"Гази-Баба\"\n\n#: mk/mk_choices.py:27\nmsgid \"Gevgelija\"\nmsgstr \"Гевгелия\"\n\n#: mk/mk_choices.py:28\nmsgid \"Gostivar\"\nmsgstr \"Гостивар\"\n\n#: mk/mk_choices.py:29\nmsgid \"Gradsko\"\nmsgstr \"Градско\"\n\n#: mk/mk_choices.py:30\nmsgid \"Debar\"\nmsgstr \"Дебар\"\n\n#: mk/mk_choices.py:31\nmsgid \"Debarca\"\nmsgstr \"Дебарца\"\n\n#: mk/mk_choices.py:32\nmsgid \"Delčevo\"\nmsgstr \"Делчево\"\n\n#: mk/mk_choices.py:33\nmsgid \"Demir Kapija\"\nmsgstr \"Демир-Капия\"\n\n#: mk/mk_choices.py:34\nmsgid \"Demir Hisar\"\nmsgstr \"Демир-Хисар\"\n\n#: mk/mk_choices.py:35\nmsgid \"Dolneni\"\nmsgstr \"Долнени\"\n\n#: mk/mk_choices.py:36\nmsgid \"Drugovo\"\nmsgstr \"Другово\"\n\n#: mk/mk_choices.py:37\nmsgid \"Gjorče Petrov\"\nmsgstr \"Гёрче-Петров\"\n\n#: mk/mk_choices.py:38\nmsgid \"Želino\"\nmsgstr \"Желино\"\n\n#: mk/mk_choices.py:39\nmsgid \"Zajas\"\nmsgstr \"Заяс\"\n\n#: mk/mk_choices.py:40\nmsgid \"Zelenikovo\"\nmsgstr \"Зелениково\"\n\n#: mk/mk_choices.py:41\nmsgid \"Zrnovci\"\nmsgstr \"Зрновци\"\n\n#: mk/mk_choices.py:42\nmsgid \"Ilinden\"\nmsgstr \"Илинден\"\n\n#: mk/mk_choices.py:43\nmsgid \"Jegunovce\"\nmsgstr \"Егуновце\"\n\n#: mk/mk_choices.py:44\nmsgid \"Kavadarci\"\nmsgstr \"Кавадарци\"\n\n#: mk/mk_choices.py:45\nmsgid \"Karbinci\"\nmsgstr \"Карбинци\"\n\n#: mk/mk_choices.py:46\nmsgid \"Karpoš\"\nmsgstr \"Карпош\"\n\n#: mk/mk_choices.py:47\nmsgid \"Kisela Voda\"\nmsgstr \"Кисела-Вода\"\n\n#: mk/mk_choices.py:48\nmsgid \"Kičevo\"\nmsgstr \"Кичево\"\n\n#: mk/mk_choices.py:49\nmsgid \"Konče\"\nmsgstr \"Конче\"\n\n#: mk/mk_choices.py:50\nmsgid \"Koćani\"\nmsgstr \"Кочани\"\n\n#: mk/mk_choices.py:51\nmsgid \"Kratovo\"\nmsgstr \"Кратово\"\n\n#: mk/mk_choices.py:52\nmsgid \"Kriva Palanka\"\nmsgstr \"Крива-Паланка\"\n\n#: mk/mk_choices.py:53\nmsgid \"Krivogaštani\"\nmsgstr \"Кривогаштани\"\n\n#: mk/mk_choices.py:54\nmsgid \"Kruševo\"\nmsgstr \"Крушево\"\n\n#: mk/mk_choices.py:55\nmsgid \"Kumanovo\"\nmsgstr \"Куманово\"\n\n#: mk/mk_choices.py:56\nmsgid \"Lipkovo\"\nmsgstr \"Липково\"\n\n#: mk/mk_choices.py:57\nmsgid \"Lozovo\"\nmsgstr \"Лозово\"\n\n#: mk/mk_choices.py:58\nmsgid \"Mavrovo i Rostuša\"\nmsgstr \"Маврово и Ростуша\"\n\n#: mk/mk_choices.py:59\nmsgid \"Makedonska Kamenica\"\nmsgstr \"Македонска-Каменица\"\n\n#: mk/mk_choices.py:60\nmsgid \"Makedonski Brod\"\nmsgstr \"Македонски-Брод\"\n\n#: mk/mk_choices.py:61\nmsgid \"Mogila\"\nmsgstr \"Могила\"\n\n#: mk/mk_choices.py:62\nmsgid \"Negotino\"\nmsgstr \"Неготино\"\n\n#: mk/mk_choices.py:63\nmsgid \"Novaci\"\nmsgstr \"Новаци\"\n\n#: mk/mk_choices.py:64\nmsgid \"Novo Selo\"\nmsgstr \"Ново-Село\"\n\n#: mk/mk_choices.py:65\nmsgid \"Oslomej\"\nmsgstr \"Осломей\"\n\n#: mk/mk_choices.py:66\nmsgid \"Ohrid\"\nmsgstr \"Охрид\"\n\n#: mk/mk_choices.py:67\nmsgid \"Petrovec\"\nmsgstr \"Петровец\"\n\n#: mk/mk_choices.py:68\nmsgid \"Pehčevo\"\nmsgstr \"Пехчево\"\n\n#: mk/mk_choices.py:69\nmsgid \"Plasnica\"\nmsgstr \"Пласница\"\n\n#: mk/mk_choices.py:70\nmsgid \"Prilep\"\nmsgstr \"Прилеп\"\n\n#: mk/mk_choices.py:71\nmsgid \"Probištip\"\nmsgstr \"Пробиштип\"\n\n#: mk/mk_choices.py:72\nmsgid \"Radoviš\"\nmsgstr \"Радовиш\"\n\n#: mk/mk_choices.py:73\nmsgid \"Rankovce\"\nmsgstr \"Ранковце\"\n\n#: mk/mk_choices.py:74\nmsgid \"Resen\"\nmsgstr \"Ресен\"\n\n#: mk/mk_choices.py:75\nmsgid \"Rosoman\"\nmsgstr \"Росоман\"\n\n#: mk/mk_choices.py:76\nmsgid \"Saraj\"\nmsgstr \"Сарай\"\n\n#: mk/mk_choices.py:77\nmsgid \"Sveti Nikole\"\nmsgstr \"Свети-Николе\"\n\n#: mk/mk_choices.py:78\nmsgid \"Sopište\"\nmsgstr \"Сопиште\"\n\n#: mk/mk_choices.py:79\nmsgid \"Star Dojran\"\nmsgstr \"Стар-Дойран\"\n\n#: mk/mk_choices.py:80\nmsgid \"Staro Nagoričane\"\nmsgstr \"Старо-Нагоричане\"\n\n#: mk/mk_choices.py:81\nmsgid \"Struga\"\nmsgstr \"Струга\"\n\n#: mk/mk_choices.py:82\nmsgid \"Strumica\"\nmsgstr \"Струмица\"\n\n#: mk/mk_choices.py:83\nmsgid \"Studeničani\"\nmsgstr \"Студеничани\"\n\n#: mk/mk_choices.py:84\nmsgid \"Tearce\"\nmsgstr \"Теарце\"\n\n#: mk/mk_choices.py:85\nmsgid \"Tetovo\"\nmsgstr \"Тетово\"\n\n#: mk/mk_choices.py:86\nmsgid \"Centar\"\nmsgstr \"Центр\"\n\n#: mk/mk_choices.py:87\nmsgid \"Centar-Župa\"\nmsgstr \"Центар-Жупа\"\n\n#: mk/mk_choices.py:88\nmsgid \"Čair\"\nmsgstr \"Чаир\"\n\n#: mk/mk_choices.py:89\nmsgid \"Čaška\"\nmsgstr \"Чашка\"\n\n#: mk/mk_choices.py:90\nmsgid \"Češinovo-Obleševo\"\nmsgstr \"Чешиново-Облешево\"\n\n#: mk/mk_choices.py:91\nmsgid \"Čučer-Sandevo\"\nmsgstr \"Чучер-Сандево\"\n\n#: mk/mk_choices.py:92\nmsgid \"Štip\"\nmsgstr \"Штип\"\n\n#: mk/mk_choices.py:93\nmsgid \"Šuto Orizari\"\nmsgstr \"Шуто-Оризари\"\n\n#: mk/models.py:11\nmsgid \"Macedonian identity card number\"\nmsgstr \"Номер идентификационной карты Македонии\"\n\n#: mk/models.py:25\nmsgid \"A Macedonian municipality (2 character code)\"\nmsgstr \"Македонский муниципалитет (двухбуквенный код)\"\n\n#: mk/models.py:35\nmsgid \"Unique master citizen number (13 digits)\"\nmsgstr \"Индивидуальный номер гражданина (13 цифр)\"\n\n#: mx/forms.py:67\nmsgid \"Enter a valid zip code in the format XXXXX.\"\nmsgstr \"Введите корректный почтовый индекс в формате XXXXX.\"\n\n#: mx/forms.py:110\nmsgid \"Enter a valid RFC.\"\nmsgstr \"Введите корректный RFC.\"\n\n#: mx/forms.py:111\nmsgid \"Invalid checksum for RFC.\"\nmsgstr \"Неверная контрольная сумма RFC.\"\n\n#: mx/forms.py:191\nmsgid \"Enter a valid CURP.\"\nmsgstr \"Введите корректный CURP.\"\n\n#: mx/forms.py:192\nmsgid \"Invalid checksum for CURP.\"\nmsgstr \"Неверная контрольная сумма CURP.\"\n\n#: mx/models.py:14\nmsgid \"Mexico state (three uppercase letters)\"\nmsgstr \"Мексиканский штат (три заглавных буквы)\"\n\n#: mx/models.py:27\nmsgid \"Mexico zip code\"\nmsgstr \"Мексиканский почтовый индекс\"\n\n#: mx/models.py:44\nmsgid \"Mexican RFC\"\nmsgstr \"Мексиканский RFC\"\n\n#: mx/models.py:61\nmsgid \"Mexican CURP\"\nmsgstr \"Мексиканский CURP\"\n\n#: mx/mx_states.py:14\nmsgid \"Aguascalientes\"\nmsgstr \"Агуаскальентес\"\n\n#: mx/mx_states.py:15\nmsgid \"Baja California\"\nmsgstr \"Нижняя Калифорния\"\n\n#: mx/mx_states.py:16\nmsgid \"Baja California Sur\"\nmsgstr \"Южная Нижняя Калифорни\"\n\n#: mx/mx_states.py:17\nmsgid \"Campeche\"\nmsgstr \"Кампече\"\n\n#: mx/mx_states.py:18\nmsgid \"Chihuahua\"\nmsgstr \"Чиуауа\"\n\n#: mx/mx_states.py:19\nmsgid \"Chiapas\"\nmsgstr \"Чьяпас\"\n\n#: mx/mx_states.py:20\nmsgid \"Coahuila\"\nmsgstr \"Коауила\"\n\n#: mx/mx_states.py:21\nmsgid \"Colima\"\nmsgstr \"Колима\"\n\n#: mx/mx_states.py:22\nmsgid \"Distrito Federal\"\nmsgstr \"Федеральный округ\"\n\n#: mx/mx_states.py:23\nmsgid \"Durango\"\nmsgstr \"Дуранго\"\n\n#: mx/mx_states.py:24\nmsgid \"Guerrero\"\nmsgstr \"Герреро\"\n\n#: mx/mx_states.py:25\nmsgid \"Guanajuato\"\nmsgstr \"Гуанахуато\"\n\n#: mx/mx_states.py:26\nmsgid \"Hidalgo\"\nmsgstr \"Идальго\"\n\n#: mx/mx_states.py:27\nmsgid \"Jalisco\"\nmsgstr \"Халиско\"\n\n#: mx/mx_states.py:28\nmsgid \"Estado de México\"\nmsgstr \"Мехико\"\n\n#: mx/mx_states.py:29\nmsgid \"Michoacán\"\nmsgstr \"Мичоакан\"\n\n#: mx/mx_states.py:30\nmsgid \"Morelos\"\nmsgstr \"Морелос\"\n\n#: mx/mx_states.py:31\nmsgid \"Nayarit\"\nmsgstr \"Наярит\"\n\n#: mx/mx_states.py:32\nmsgid \"Nuevo León\"\nmsgstr \"Нуэво-Леон\"\n\n#: mx/mx_states.py:33\nmsgid \"Oaxaca\"\nmsgstr \"Оахака\"\n\n#: mx/mx_states.py:34\nmsgid \"Puebla\"\nmsgstr \"Пуэбла\"\n\n#: mx/mx_states.py:35\nmsgid \"Querétaro\"\nmsgstr \"Керетаро\"\n\n#: mx/mx_states.py:36\nmsgid \"Quintana Roo\"\nmsgstr \"Кинтана-Роо\"\n\n#: mx/mx_states.py:37\nmsgid \"Sinaloa\"\nmsgstr \"Синалоа\"\n\n#: mx/mx_states.py:38\nmsgid \"San Luis Potosí\"\nmsgstr \"Сан-Луис-Потоси\"\n\n#: mx/mx_states.py:39\nmsgid \"Sonora\"\nmsgstr \"Сонора\"\n\n#: mx/mx_states.py:40\nmsgid \"Tabasco\"\nmsgstr \"Табаско\"\n\n#: mx/mx_states.py:41\nmsgid \"Tamaulipas\"\nmsgstr \"Тамаулипас\"\n\n#: mx/mx_states.py:42\nmsgid \"Tlaxcala\"\nmsgstr \"Тласкала\"\n\n#: mx/mx_states.py:43\nmsgid \"Veracruz\"\nmsgstr \"Веракрус\"\n\n#: mx/mx_states.py:44\nmsgid \"Yucatán\"\nmsgstr \"Юкатан\"\n\n#: mx/mx_states.py:45\nmsgid \"Zacatecas\"\nmsgstr \"Сакатекас\"\n\n#: nl/forms.py:26\nmsgid \"Enter a valid postal code\"\nmsgstr \"Введите правильный почтовый индекс\"\n\n#: nl/forms.py:82\nmsgid \"Enter a valid SoFi number\"\nmsgstr \"Введите правильный SoFi номер\"\n\n#: nl/nl_provinces.py:4\nmsgid \"Drenthe\"\nmsgstr \"Дренте\"\n\n#: nl/nl_provinces.py:5\nmsgid \"Flevoland\"\nmsgstr \"Флеволанд\"\n\n#: nl/nl_provinces.py:6\nmsgid \"Friesland\"\nmsgstr \"Фрисланд\"\n\n#: nl/nl_provinces.py:7\nmsgid \"Gelderland\"\nmsgstr \"Гелдерланд\"\n\n#: nl/nl_provinces.py:8\nmsgid \"Groningen\"\nmsgstr \"Гронинген\"\n\n#: nl/nl_provinces.py:10\nmsgid \"Noord-Brabant\"\nmsgstr \"Северный Брабант\"\n\n#: nl/nl_provinces.py:11\nmsgid \"Noord-Holland\"\nmsgstr \"Северная Голландия\"\n\n#: nl/nl_provinces.py:12\nmsgid \"Overijssel\"\nmsgstr \"Оверэйсел\"\n\n#: nl/nl_provinces.py:13\nmsgid \"Utrecht\"\nmsgstr \"Утрехт\"\n\n#: nl/nl_provinces.py:14\nmsgid \"Zeeland\"\nmsgstr \"Зеландия\"\n\n#: nl/nl_provinces.py:15\nmsgid \"Zuid-Holland\"\nmsgstr \"Южная Голландия\"\n\n#: no/forms.py:39\nmsgid \"Enter a valid Norwegian social security number.\"\nmsgstr \"Введите правильный номер социального страхования Норвегии.\"\n\n#: pe/forms.py:28\nmsgid \"This field requires 8 digits.\"\nmsgstr \"Это поле требует 8 цифр.\"\n\n#: pe/forms.py:56\nmsgid \"This field requires 11 digits.\"\nmsgstr \"Это поле требует 11 цифр.\"\n\n#: pl/forms.py:42\nmsgid \"National Identification Number consists of 11 digits.\"\nmsgstr \"Национальный идентификационный номер состоит из 11 цифр.\"\n\n#: pl/forms.py:43\nmsgid \"Wrong checksum for the National Identification Number.\"\nmsgstr \"Неверная проверочная сумма для NIF.\"\n\n#: pl/forms.py:79\nmsgid \"National ID Card Number consists of 3 letters and 6 digits.\"\nmsgstr \"Номер национальной идентификационной карты содержит 3 буквы и 6 цифр.\"\n\n#: pl/forms.py:80\nmsgid \"Wrong checksum for the National ID Card Number.\"\nmsgstr \"\"\n\"Некорректная контрольная сумма номера национальной идентификационной карты.\"\n\n#: pl/forms.py:131\nmsgid \"\"\n\"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or \"\n\"XXXXXXXXXX.\"\nmsgstr \"\"\n\"Введите идентификатор налогоплательщика (NIP) в формате XXX-XXX-XX-XX, XXX-\"\n\"XX-XX-XXX или XXXXXXXXXX.\"\n\n#: pl/forms.py:132\nmsgid \"Wrong checksum for the Tax Number (NIP).\"\nmsgstr \"Неверная проверочная сумма для NIP.\"\n\n#: pl/forms.py:171\nmsgid \"National Business Register Number (REGON) consists of 9 or 14 digits.\"\nmsgstr \"\"\n\"Национальный деловой регистрационный номер (REGON) состоит из 9 или 14 цифр.\"\n\n#: pl/forms.py:172\nmsgid \"Wrong checksum for the National Business Register Number (REGON).\"\nmsgstr \"\"\n\"Неверная проверочная сумма для национального делового регистрационного \"\n\"номера (REGON).\"\n\n#: pl/forms.py:212\nmsgid \"Enter a postal code in the format XX-XXX.\"\nmsgstr \"Введите почтовый индекс в формате XX-XXX.\"\n\n#: pl/pl_voivodeships.py:8\nmsgid \"Lower Silesia\"\nmsgstr \"Нижнесилезское\"\n\n#: pl/pl_voivodeships.py:9\nmsgid \"Kuyavia-Pomerania\"\nmsgstr \"Куявско-Поморское\"\n\n#: pl/pl_voivodeships.py:10\nmsgid \"Lublin\"\nmsgstr \"Люблинское\"\n\n#: pl/pl_voivodeships.py:11\nmsgid \"Lubusz\"\nmsgstr \"Любушское\"\n\n#: pl/pl_voivodeships.py:12\nmsgid \"Lodz\"\nmsgstr \"Лодзинское\"\n\n#: pl/pl_voivodeships.py:13\nmsgid \"Lesser Poland\"\nmsgstr \"Малопольское\"\n\n#: pl/pl_voivodeships.py:14\nmsgid \"Masovia\"\nmsgstr \"Мазовецкое\"\n\n#: pl/pl_voivodeships.py:15\nmsgid \"Opole\"\nmsgstr \"Опольское\"\n\n#: pl/pl_voivodeships.py:16\nmsgid \"Subcarpatia\"\nmsgstr \"Подкарпатское\"\n\n#: pl/pl_voivodeships.py:17\nmsgid \"Podlasie\"\nmsgstr \"Подляское\"\n\n#: pl/pl_voivodeships.py:18\nmsgid \"Pomerania\"\nmsgstr \"Поморское\"\n\n#: pl/pl_voivodeships.py:19\nmsgid \"Silesia\"\nmsgstr \"Силезское\"\n\n#: pl/pl_voivodeships.py:20\nmsgid \"Swietokrzyskie\"\nmsgstr \"Свентокшиское\"\n\n#: pl/pl_voivodeships.py:21\nmsgid \"Warmia-Masuria\"\nmsgstr \"Варминско-Мазурское\"\n\n#: pl/pl_voivodeships.py:22\nmsgid \"Greater Poland\"\nmsgstr \"Великопольское\"\n\n#: pl/pl_voivodeships.py:23\nmsgid \"West Pomerania\"\nmsgstr \"Западнопоморское\"\n\n#: pt/forms.py:19\nmsgid \"Enter a zip code in the format XXXX-XXX.\"\nmsgstr \"Введите почтовый индекс в формате XXXX-XXX.\"\n\n#: pt/forms.py:39\nmsgid \"Phone numbers must have 9 digits, or start by + or 00.\"\nmsgstr \"Телефонные номера должны состоять из 9 цифр или начинаться с + или 00.\"\n\n#: ro/forms.py:22\nmsgid \"Enter a valid CIF.\"\nmsgstr \"Введите правильный CIF.\"\n\n#: ro/forms.py:59\nmsgid \"Enter a valid CNP.\"\nmsgstr \"Введите правильный CNP.\"\n\n#: ro/forms.py:143\nmsgid \"Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format\"\nmsgstr \"Введите правильный IBAN в формате ROXX-XXXX-XXXX-XXXX-XXXX-XXXX.\"\n\n#: ro/forms.py:175\nmsgid \"Phone numbers must be in XXXX-XXXXXX format.\"\nmsgstr \"Телефонные номера должны быть в формате XXXX-XXXXXX.\"\n\n#: ro/forms.py:200\nmsgid \"Enter a valid postal code in the format XXXXXX\"\nmsgstr \"Введите почтовый индекс в формате XXXXXX.\"\n\n#: ru/forms.py:37\nmsgid \"Enter a postal code in the format XXXXXX.\"\nmsgstr \"Введите почтовый индекс в формате XXXXXX.\"\n\n#: ru/forms.py:50\nmsgid \"Enter a passport number in the format XXXX XXXXXX.\"\nmsgstr \"Введите номер и серию паспорта в формате XXXX XXXXXX.\"\n\n#: ru/forms.py:63\nmsgid \"Enter a passport number in the format XX XXXXXXX.\"\nmsgstr \"Введите номер и серию паспорта в формате XX XXXXXXX.\"\n\n#: ru/ru_regions.py:10\nmsgid \"Central Federal County\"\nmsgstr \"Центральный федеральный округ\"\n\n#: ru/ru_regions.py:11\nmsgid \"South Federal County\"\nmsgstr \"Южный федеральный округ\"\n\n#: ru/ru_regions.py:12\nmsgid \"North-West Federal County\"\nmsgstr \"Северо-Западный федеральный округ\"\n\n#: ru/ru_regions.py:13\nmsgid \"Far-East Federal County\"\nmsgstr \"Дальневосточный федеральный округ\"\n\n#: ru/ru_regions.py:14\nmsgid \"Siberian Federal County\"\nmsgstr \"Сибирский федеральный округ\"\n\n#: ru/ru_regions.py:15\nmsgid \"Ural Federal County\"\nmsgstr \"Уральский федеральный округ\"\n\n#: ru/ru_regions.py:16\nmsgid \"Privolzhsky Federal County\"\nmsgstr \"Приволжский федеральный округ\"\n\n#: ru/ru_regions.py:17\nmsgid \"North-Caucasian Federal County\"\nmsgstr \"Северо-Кавказский федеральный округ\"\n\n#: ru/ru_regions.py:21\nmsgid \"Moskva\"\nmsgstr \"Москва\"\n\n#: ru/ru_regions.py:22\nmsgid \"Saint-Peterburg\"\nmsgstr \"Санкт-Петербург\"\n\n#: ru/ru_regions.py:23\nmsgid \"Moskovskaya oblast'\"\nmsgstr \"Московская область\"\n\n#: ru/ru_regions.py:24\nmsgid \"Adygeya, Respublika\"\nmsgstr \"Адыгея, Республика\"\n\n#: ru/ru_regions.py:25\nmsgid \"Bashkortostan, Respublika\"\nmsgstr \"Башкортостан, Республика\"\n\n#: ru/ru_regions.py:26\nmsgid \"Buryatia, Respublika\"\nmsgstr \"Бурятия, Республика\"\n\n#: ru/ru_regions.py:27\nmsgid \"Altay, Respublika\"\nmsgstr \"Алтай, Республика\"\n\n#: ru/ru_regions.py:28\nmsgid \"Dagestan, Respublika\"\nmsgstr \"Дагестан, Республика\"\n\n#: ru/ru_regions.py:29\nmsgid \"Ingushskaya Respublika\"\nmsgstr \"Ингушская Республика\"\n\n#: ru/ru_regions.py:30\nmsgid \"Kabardino-Balkarskaya Respublika\"\nmsgstr \"Кабардино-Балкарская Республика\"\n\n#: ru/ru_regions.py:31\nmsgid \"Kalmykia, Respublika\"\nmsgstr \"Республика Калмыкия\"\n\n#: ru/ru_regions.py:32\nmsgid \"Karachaevo-Cherkesskaya Respublika\"\nmsgstr \"Карачаево-Черкесская Республика\"\n\n#: ru/ru_regions.py:33\nmsgid \"Karelia, Respublika\"\nmsgstr \"Карелия, Республика\"\n\n#: ru/ru_regions.py:34\nmsgid \"Komi, Respublika\"\nmsgstr \"Коми, Республика\"\n\n#: ru/ru_regions.py:35\nmsgid \"Mariy Ehl, Respublika\"\nmsgstr \"Марий Эл, Республика\"\n\n#: ru/ru_regions.py:36\nmsgid \"Mordovia, Respublika\"\nmsgstr \"Мордовия, Республика\"\n\n#: ru/ru_regions.py:37\nmsgid \"Sakha, Respublika (Yakutiya)\"\nmsgstr \"Саха, Республика (Якутия)\"\n\n#: ru/ru_regions.py:38\nmsgid \"Severnaya Osetia, Respublika (Alania)\"\nmsgstr \"Северная Осетия, Республика (Алания)\"\n\n#: ru/ru_regions.py:39\nmsgid \"Tatarstan, Respublika\"\nmsgstr \"Татарстан, Республика\"\n\n#: ru/ru_regions.py:40\nmsgid \"Tyva, Respublika (Tuva)\"\nmsgstr \"Тыва, Республика (Тува)\"\n\n#: ru/ru_regions.py:41\nmsgid \"Udmurtskaya Respublika\"\nmsgstr \"Удмуртская Республика\"\n\n#: ru/ru_regions.py:42\nmsgid \"Khakassiya, Respublika\"\nmsgstr \"Хакасия, Республика\"\n\n#: ru/ru_regions.py:43\nmsgid \"Chechenskaya Respublika\"\nmsgstr \"Чеченская Республика\"\n\n#: ru/ru_regions.py:44\nmsgid \"Chuvashskaya Respublika\"\nmsgstr \"Чувашская Республика\"\n\n#: ru/ru_regions.py:45\nmsgid \"Altayskiy Kray\"\nmsgstr \"Алтайский Край\"\n\n#: ru/ru_regions.py:46\nmsgid \"Zabaykalskiy Kray\"\nmsgstr \"Забайкальский Край\"\n\n#: ru/ru_regions.py:47\nmsgid \"Kamchatskiy Kray\"\nmsgstr \"Камчатский Край\"\n\n#: ru/ru_regions.py:48\nmsgid \"Krasnodarskiy Kray\"\nmsgstr \"Краснодарский Край\"\n\n#: ru/ru_regions.py:49\nmsgid \"Krasnoyarskiy Kray\"\nmsgstr \"Красноярский Край\"\n\n#: ru/ru_regions.py:50\nmsgid \"Permskiy Kray\"\nmsgstr \"Пермский Край\"\n\n#: ru/ru_regions.py:51\nmsgid \"Primorskiy Kray\"\nmsgstr \"Приморский Край\"\n\n#: ru/ru_regions.py:52\nmsgid \"Stavropol'siyy Kray\"\nmsgstr \"Ставропольский Край\"\n\n#: ru/ru_regions.py:53\nmsgid \"Khabarovskiy Kray\"\nmsgstr \"Хабаровский Край\"\n\n#: ru/ru_regions.py:54\nmsgid \"Amurskaya oblast'\"\nmsgstr \"Амурская область\"\n\n#: ru/ru_regions.py:55\nmsgid \"Arkhangel'skaya oblast'\"\nmsgstr \"Архангельская область\"\n\n#: ru/ru_regions.py:56\nmsgid \"Astrakhanskaya oblast'\"\nmsgstr \"Астраханская область\"\n\n#: ru/ru_regions.py:57\nmsgid \"Belgorodskaya oblast'\"\nmsgstr \"Белгородская область\"\n\n#: ru/ru_regions.py:58\nmsgid \"Bryanskaya oblast'\"\nmsgstr \"Брянская область\"\n\n#: ru/ru_regions.py:59\nmsgid \"Vladimirskaya oblast'\"\nmsgstr \"Владимирская область\"\n\n#: ru/ru_regions.py:60\nmsgid \"Volgogradskaya oblast'\"\nmsgstr \"Волгоградская область\"\n\n#: ru/ru_regions.py:61\nmsgid \"Vologodskaya oblast'\"\nmsgstr \"Вологодская область\"\n\n#: ru/ru_regions.py:62\nmsgid \"Voronezhskaya oblast'\"\nmsgstr \"Воронежская область\"\n\n#: ru/ru_regions.py:63\nmsgid \"Ivanovskaya oblast'\"\nmsgstr \"Ивановская область\"\n\n#: ru/ru_regions.py:64\nmsgid \"Irkutskaya oblast'\"\nmsgstr \"Иркутская область\"\n\n#: ru/ru_regions.py:65\nmsgid \"Kaliningradskaya oblast'\"\nmsgstr \"Калининградская область\"\n\n#: ru/ru_regions.py:66\nmsgid \"Kaluzhskaya oblast'\"\nmsgstr \"Калужская область\"\n\n#: ru/ru_regions.py:67\nmsgid \"Kemerovskaya oblast'\"\nmsgstr \"Кемеровская область\"\n\n#: ru/ru_regions.py:68\nmsgid \"Kirovskaya oblast'\"\nmsgstr \"Кировская область\"\n\n#: ru/ru_regions.py:69\nmsgid \"Kostromskaya oblast'\"\nmsgstr \"Костромская область\"\n\n#: ru/ru_regions.py:70\nmsgid \"Kurganskaya oblast'\"\nmsgstr \"Курганская область\"\n\n#: ru/ru_regions.py:71\nmsgid \"Kurskaya oblast'\"\nmsgstr \"Курская область\"\n\n#: ru/ru_regions.py:72\nmsgid \"Leningradskaya oblast'\"\nmsgstr \"Ленинградская область\"\n\n#: ru/ru_regions.py:73\nmsgid \"Lipeckaya oblast'\"\nmsgstr \"Липецкая область\"\n\n#: ru/ru_regions.py:74\nmsgid \"Magadanskaya oblast'\"\nmsgstr \"Магаданская область\"\n\n#: ru/ru_regions.py:75\nmsgid \"Murmanskaya oblast'\"\nmsgstr \"Мурманская область\"\n\n#: ru/ru_regions.py:76\nmsgid \"Nizhegorodskaja oblast'\"\nmsgstr \"Нижегородская область\"\n\n#: ru/ru_regions.py:77\nmsgid \"Novgorodskaya oblast'\"\nmsgstr \"Новгородская область\"\n\n#: ru/ru_regions.py:78\nmsgid \"Novosibirskaya oblast'\"\nmsgstr \"Новосибирская область\"\n\n#: ru/ru_regions.py:79\nmsgid \"Omskaya oblast'\"\nmsgstr \"Омская область\"\n\n#: ru/ru_regions.py:80\nmsgid \"Orenburgskaya oblast'\"\nmsgstr \"Оренбургская область\"\n\n#: ru/ru_regions.py:81\nmsgid \"Orlovskaya oblast'\"\nmsgstr \"Орловская область\"\n\n#: ru/ru_regions.py:82\nmsgid \"Penzenskaya oblast'\"\nmsgstr \"Пензенская область\"\n\n#: ru/ru_regions.py:83\nmsgid \"Pskovskaya oblast'\"\nmsgstr \"Псковская область\"\n\n#: ru/ru_regions.py:84\nmsgid \"Rostovskaya oblast'\"\nmsgstr \"Ростовская область\"\n\n#: ru/ru_regions.py:85\nmsgid \"Rjazanskaya oblast'\"\nmsgstr \"Рязанская область\"\n\n#: ru/ru_regions.py:86\nmsgid \"Samarskaya oblast'\"\nmsgstr \"Самарская область\"\n\n#: ru/ru_regions.py:87\nmsgid \"Saratovskaya oblast'\"\nmsgstr \"Саратовская область\"\n\n#: ru/ru_regions.py:88\nmsgid \"Sakhalinskaya oblast'\"\nmsgstr \"Сахалинская область\"\n\n#: ru/ru_regions.py:89\nmsgid \"Sverdlovskaya oblast'\"\nmsgstr \"Свердловская область\"\n\n#: ru/ru_regions.py:90\nmsgid \"Smolenskaya oblast'\"\nmsgstr \"Смоленская область\"\n\n#: ru/ru_regions.py:91\nmsgid \"Tambovskaya oblast'\"\nmsgstr \"Тамбовская область\"\n\n#: ru/ru_regions.py:92\nmsgid \"Tverskaya oblast'\"\nmsgstr \"Тверская область\"\n\n#: ru/ru_regions.py:93\nmsgid \"Tomskaya oblast'\"\nmsgstr \"Томская область\"\n\n#: ru/ru_regions.py:94\nmsgid \"Tul'skaya oblast'\"\nmsgstr \"Тульская область\"\n\n#: ru/ru_regions.py:95\nmsgid \"Tyumenskaya oblast'\"\nmsgstr \"Тюменская область\"\n\n#: ru/ru_regions.py:96\nmsgid \"Ul'ianovskaya oblast'\"\nmsgstr \"Ульяновская область\"\n\n#: ru/ru_regions.py:97\nmsgid \"Chelyabinskaya oblast'\"\nmsgstr \"Челябинская область\"\n\n#: ru/ru_regions.py:98\nmsgid \"Yaroslavskaya oblast'\"\nmsgstr \"Ярославская область\"\n\n#: ru/ru_regions.py:99\nmsgid \"Evreyskaya avtonomnaja oblast'\"\nmsgstr \"Еврейская автономная область\"\n\n#: ru/ru_regions.py:100\nmsgid \"Neneckiy autonomnyy okrug\"\nmsgstr \"Ненецкий автономный округ\"\n\n#: ru/ru_regions.py:101\nmsgid \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\nmsgstr \"Ханты-Мансийский автономный округ — Югра \"\n\n#: ru/ru_regions.py:102\nmsgid \"Chukotskiy avtonomnyy okrug\"\nmsgstr \"Чукотский автономный округ\"\n\n#: ru/ru_regions.py:103\nmsgid \"Yamalo-Neneckiy avtonomnyy okrug\"\nmsgstr \"Ямало-Ненецкий автономный округ\"\n\n#: se/forms.py:54\nmsgid \"Enter a valid Swedish organisation number.\"\nmsgstr \"Введите правильный шведский идентификационный номер организации.\"\n\n#: se/forms.py:111\nmsgid \"Enter a valid Swedish personal identity number.\"\nmsgstr \"Введите правильный шведский персональный идентификационный номер.\"\n\n#: se/forms.py:112\nmsgid \"Co-ordination numbers are not allowed.\"\nmsgstr \"Координационные номера запрещены\"\n\n#: se/forms.py:154\nmsgid \"Enter a Swedish postal code in the format XXXXX.\"\nmsgstr \"Введите шведский почтовый индекс в формате XXXXX.\"\n\n#: se/se_counties.py:16\nmsgid \"Stockholm\"\nmsgstr \"Стокгольм\"\n\n#: se/se_counties.py:17\nmsgid \"Västerbotten\"\nmsgstr \"Вестерботтен\"\n\n#: se/se_counties.py:18\nmsgid \"Norrbotten\"\nmsgstr \"Норрботтен\"\n\n#: se/se_counties.py:19\nmsgid \"Uppsala\"\nmsgstr \"Уппсала\"\n\n#: se/se_counties.py:20\nmsgid \"Södermanland\"\nmsgstr \"Сёдерманланд\"\n\n#: se/se_counties.py:21\nmsgid \"Östergötland\"\nmsgstr \"Эстергётланд\"\n\n#: se/se_counties.py:22\nmsgid \"Jönköping\"\nmsgstr \"Йёнчёпинг\"\n\n#: se/se_counties.py:23\nmsgid \"Kronoberg\"\nmsgstr \"Крунуберг\"\n\n#: se/se_counties.py:24\nmsgid \"Kalmar\"\nmsgstr \"Кальмар\"\n\n#: se/se_counties.py:25\nmsgid \"Gotland\"\nmsgstr \"Готланд\"\n\n#: se/se_counties.py:26\nmsgid \"Blekinge\"\nmsgstr \"Блекинге\"\n\n#: se/se_counties.py:27\nmsgid \"Skåne\"\nmsgstr \"Сконе\"\n\n#: se/se_counties.py:28\nmsgid \"Halland\"\nmsgstr \"Халланд\"\n\n#: se/se_counties.py:29\nmsgid \"Västra Götaland\"\nmsgstr \"Вестра-Гёталанд\"\n\n#: se/se_counties.py:30\nmsgid \"Värmland\"\nmsgstr \"Вермланд\"\n\n#: se/se_counties.py:31\nmsgid \"Örebro\"\nmsgstr \"Эребру\"\n\n#: se/se_counties.py:32\nmsgid \"Västmanland\"\nmsgstr \"Вестманланд\"\n\n#: se/se_counties.py:33\nmsgid \"Dalarna\"\nmsgstr \"Даларна\"\n\n#: se/se_counties.py:34\nmsgid \"Gävleborg\"\nmsgstr \"Евлеборг\"\n\n#: se/se_counties.py:35\nmsgid \"Västernorrland\"\nmsgstr \"Вестерноррланд\"\n\n#: se/se_counties.py:36\nmsgid \"Jämtland\"\nmsgstr \"Емтланд\"\n\n#: si/forms.py:25\nmsgid \"The first 7 digits of the EMSO must represent a valid past date.\"\nmsgstr \"Первые 7 цифр EMSO должны быть корректной датой в прошлом.\"\n\n#: si/forms.py:26\nmsgid \"The EMSO is not valid.\"\nmsgstr \"EMSO некорректен.\"\n\n#: si/forms.py:86\nmsgid \"Enter a valid tax number in form SIXXXXXXXX\"\nmsgstr \"Введите корректный идентификатор налогоплательщика в форме SIXXXXXXXX\"\n\n#: si/forms.py:151\nmsgid \"Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.\"\nmsgstr \"Введите телефонный номер в форме +386XXXXXXXX или 0XXXXXXXX.\"\n\n#: sk/sk_districts.py:8\nmsgid \"Banska Bystrica\"\nmsgstr \"Банска Бистрица\"\n\n#: sk/sk_districts.py:9\nmsgid \"Banska Stiavnica\"\nmsgstr \"Банска Штьявница\"\n\n#: sk/sk_districts.py:10\nmsgid \"Bardejov\"\nmsgstr \"Бардейов\"\n\n#: sk/sk_districts.py:11\nmsgid \"Banovce nad Bebravou\"\nmsgstr \"Бановце-над-Бебравоу\"\n\n#: sk/sk_districts.py:12\nmsgid \"Brezno\"\nmsgstr \"Брезно\"\n\n#: sk/sk_districts.py:13\nmsgid \"Bratislava I\"\nmsgstr \"Братислава I\"\n\n#: sk/sk_districts.py:14\nmsgid \"Bratislava II\"\nmsgstr \"Братислава II\"\n\n#: sk/sk_districts.py:15\nmsgid \"Bratislava III\"\nmsgstr \"Братислава III\"\n\n#: sk/sk_districts.py:16\nmsgid \"Bratislava IV\"\nmsgstr \"Братислава IV\"\n\n#: sk/sk_districts.py:17\nmsgid \"Bratislava V\"\nmsgstr \"Братислава V\"\n\n#: sk/sk_districts.py:18\nmsgid \"Bytca\"\nmsgstr \"Битча\"\n\n#: sk/sk_districts.py:19\nmsgid \"Cadca\"\nmsgstr \"Чадца\"\n\n#: sk/sk_districts.py:20\nmsgid \"Detva\"\nmsgstr \"Детва\"\n\n#: sk/sk_districts.py:21\nmsgid \"Dolny Kubin\"\nmsgstr \"Долны Кубин\"\n\n#: sk/sk_districts.py:22\nmsgid \"Dunajska Streda\"\nmsgstr \"Дунайска Стреда\"\n\n#: sk/sk_districts.py:23\nmsgid \"Galanta\"\nmsgstr \"Галанта\"\n\n#: sk/sk_districts.py:24\nmsgid \"Gelnica\"\nmsgstr \"Гелница\"\n\n#: sk/sk_districts.py:25\nmsgid \"Hlohovec\"\nmsgstr \"Глоговец\"\n\n#: sk/sk_districts.py:26\nmsgid \"Humenne\"\nmsgstr \"Гуменне\"\n\n#: sk/sk_districts.py:27\nmsgid \"Ilava\"\nmsgstr \"Илава\"\n\n#: sk/sk_districts.py:28\nmsgid \"Kezmarok\"\nmsgstr \"Кежмарок\"\n\n#: sk/sk_districts.py:29\nmsgid \"Komarno\"\nmsgstr \"Комарно\"\n\n#: sk/sk_districts.py:30\nmsgid \"Kosice I\"\nmsgstr \"Кошице I\"\n\n#: sk/sk_districts.py:31\nmsgid \"Kosice II\"\nmsgstr \"Кошице II\"\n\n#: sk/sk_districts.py:32\nmsgid \"Kosice III\"\nmsgstr \"Кошице III\"\n\n#: sk/sk_districts.py:33\nmsgid \"Kosice IV\"\nmsgstr \"Кошице IV\"\n\n#: sk/sk_districts.py:34\nmsgid \"Kosice - okolie\"\nmsgstr \"Кошице-периферия\"\n\n#: sk/sk_districts.py:35\nmsgid \"Krupina\"\nmsgstr \"Крупина\"\n\n#: sk/sk_districts.py:36\nmsgid \"Kysucke Nove Mesto\"\nmsgstr \"Кисуцке Нове Место\"\n\n#: sk/sk_districts.py:37\nmsgid \"Levice\"\nmsgstr \"Левице\"\n\n#: sk/sk_districts.py:38\nmsgid \"Levoca\"\nmsgstr \"Левоча\"\n\n#: sk/sk_districts.py:39\nmsgid \"Liptovsky Mikulas\"\nmsgstr \"Липтовски Микулаш\"\n\n#: sk/sk_districts.py:40\nmsgid \"Lucenec\"\nmsgstr \"Лученец\"\n\n#: sk/sk_districts.py:41\nmsgid \"Malacky\"\nmsgstr \"Малацки\"\n\n#: sk/sk_districts.py:42\nmsgid \"Martin\"\nmsgstr \"Мартин\"\n\n#: sk/sk_districts.py:43\nmsgid \"Medzilaborce\"\nmsgstr \"Медзилаборце\"\n\n#: sk/sk_districts.py:44\nmsgid \"Michalovce\"\nmsgstr \"Михаловце\"\n\n#: sk/sk_districts.py:45\nmsgid \"Myjava\"\nmsgstr \"Миява\"\n\n#: sk/sk_districts.py:46\nmsgid \"Namestovo\"\nmsgstr \"Наместово\"\n\n#: sk/sk_districts.py:47\nmsgid \"Nitra\"\nmsgstr \"Нитра\"\n\n#: sk/sk_districts.py:48\nmsgid \"Nove Mesto nad Vahom\"\nmsgstr \"Новое Место-над-Вагом\"\n\n#: sk/sk_districts.py:49\nmsgid \"Nove Zamky\"\nmsgstr \"Нове Замки\"\n\n#: sk/sk_districts.py:50\nmsgid \"Partizanske\"\nmsgstr \"Партизанске\"\n\n#: sk/sk_districts.py:51\nmsgid \"Pezinok\"\nmsgstr \"Пезинок\"\n\n#: sk/sk_districts.py:52\nmsgid \"Piestany\"\nmsgstr \"Пьештяны\"\n\n#: sk/sk_districts.py:53\nmsgid \"Poltar\"\nmsgstr \"Полтар\"\n\n#: sk/sk_districts.py:54\nmsgid \"Poprad\"\nmsgstr \"Попрад\"\n\n#: sk/sk_districts.py:55\nmsgid \"Povazska Bystrica\"\nmsgstr \"Поважска Бистрица\"\n\n#: sk/sk_districts.py:56\nmsgid \"Presov\"\nmsgstr \"Прешов\"\n\n#: sk/sk_districts.py:57\nmsgid \"Prievidza\"\nmsgstr \"Прьевидза\"\n\n#: sk/sk_districts.py:58\nmsgid \"Puchov\"\nmsgstr \"Пухов\"\n\n#: sk/sk_districts.py:59\nmsgid \"Revuca\"\nmsgstr \"Ревуца\"\n\n#: sk/sk_districts.py:60\nmsgid \"Rimavska Sobota\"\nmsgstr \"Римавска Собота\"\n\n#: sk/sk_districts.py:61\nmsgid \"Roznava\"\nmsgstr \"Рожнява\"\n\n#: sk/sk_districts.py:62\nmsgid \"Ruzomberok\"\nmsgstr \"Ружомберок\"\n\n#: sk/sk_districts.py:63\nmsgid \"Sabinov\"\nmsgstr \"Сабинов\"\n\n#: sk/sk_districts.py:64\nmsgid \"Senec\"\nmsgstr \"Сенец\"\n\n#: sk/sk_districts.py:65\nmsgid \"Senica\"\nmsgstr \"Сеница\"\n\n#: sk/sk_districts.py:66\nmsgid \"Skalica\"\nmsgstr \"Скалица\"\n\n#: sk/sk_districts.py:67\nmsgid \"Snina\"\nmsgstr \"Снина\"\n\n#: sk/sk_districts.py:68\nmsgid \"Sobrance\"\nmsgstr \"Собранце\"\n\n#: sk/sk_districts.py:69\nmsgid \"Spisska Nova Ves\"\nmsgstr \"Спишска Нова Вес\"\n\n#: sk/sk_districts.py:70\nmsgid \"Stara Lubovna\"\nmsgstr \"Стара Любовня\"\n\n#: sk/sk_districts.py:71\nmsgid \"Stropkov\"\nmsgstr \"Стропков\"\n\n#: sk/sk_districts.py:72\nmsgid \"Svidnik\"\nmsgstr \"Свидник\"\n\n#: sk/sk_districts.py:73\nmsgid \"Sala\"\nmsgstr \"Сала\"\n\n#: sk/sk_districts.py:74\nmsgid \"Topolcany\"\nmsgstr \"Топольчаны\"\n\n#: sk/sk_districts.py:75\nmsgid \"Trebisov\"\nmsgstr \"Требишов\"\n\n#: sk/sk_districts.py:76\nmsgid \"Trencin\"\nmsgstr \"Тренчин\"\n\n#: sk/sk_districts.py:77\nmsgid \"Trnava\"\nmsgstr \"Трнава\"\n\n#: sk/sk_districts.py:78\nmsgid \"Turcianske Teplice\"\nmsgstr \"Турчьянске Теплице\"\n\n#: sk/sk_districts.py:79\nmsgid \"Tvrdosin\"\nmsgstr \"Тврдошин\"\n\n#: sk/sk_districts.py:80\nmsgid \"Velky Krtis\"\nmsgstr \"Вельки Кртиш\"\n\n#: sk/sk_districts.py:81\nmsgid \"Vranov nad Toplou\"\nmsgstr \"Вранов-над-Топлёу\"\n\n#: sk/sk_districts.py:82\nmsgid \"Zlate Moravce\"\nmsgstr \"Злате Моравце\"\n\n#: sk/sk_districts.py:83\nmsgid \"Zvolen\"\nmsgstr \"Зволен\"\n\n#: sk/sk_districts.py:84\nmsgid \"Zarnovica\"\nmsgstr \"Жарновица\"\n\n#: sk/sk_districts.py:85\nmsgid \"Ziar nad Hronom\"\nmsgstr \"Жьяр-над-Гроном\"\n\n#: sk/sk_districts.py:86\nmsgid \"Zilina\"\nmsgstr \"Жилина\"\n\n#: sk/sk_regions.py:8\nmsgid \"Banska Bystrica region\"\nmsgstr \"Банскобистрицкий край\"\n\n#: sk/sk_regions.py:9\nmsgid \"Bratislava region\"\nmsgstr \"Братиславский край\"\n\n#: sk/sk_regions.py:10\nmsgid \"Kosice region\"\nmsgstr \"Кошицкий край\"\n\n#: sk/sk_regions.py:11\nmsgid \"Nitra region\"\nmsgstr \"Нитранский край\"\n\n#: sk/sk_regions.py:12\nmsgid \"Presov region\"\nmsgstr \"Прешовский край\"\n\n#: sk/sk_regions.py:13\nmsgid \"Trencin region\"\nmsgstr \"Тренчинский край\"\n\n#: sk/sk_regions.py:14\nmsgid \"Trnava region\"\nmsgstr \"Трнавский край\"\n\n#: sk/sk_regions.py:15\nmsgid \"Zilina region\"\nmsgstr \"Жилинский край\"\n\n#: tr/forms.py:21\nmsgid \"Enter a postal code in the format XXXXX.\"\nmsgstr \"Введите почтовый индекс в формате XXXXX.\"\n\n#: tr/forms.py:42\nmsgid \"Phone numbers must be in 0XXX XXX XXXX format.\"\nmsgstr \"Номера телефонов должны быть в формате 0xxx XXX XXXX.\"\n\n#: tr/forms.py:69\nmsgid \"Enter a valid Turkish Identification number.\"\nmsgstr \"Введите действительный турецкий Идентификационный номер.\"\n\n#: tr/forms.py:70\nmsgid \"Turkish Identification number must be 11 digits.\"\nmsgstr \"У турецкого Идентификационного номера должно быть 11 цифр.\"\n\n#: us/forms.py:21\nmsgid \"Enter a zip code in the format XXXXX or XXXXX-XXXX.\"\nmsgstr \"Введите почтовый индекс в формате XXXXX или XXXXX-XXXX.\"\n\n#: us/forms.py:59\nmsgid \"Enter a valid U.S. Social Security number in XXX-XX-XXXX format.\"\nmsgstr \"\"\n\"Введите правильный номер социального страхования США в формате XXX-XX-XXXX.\"\n\n#: us/forms.py:92\nmsgid \"Enter a U.S. state or territory.\"\nmsgstr \"Введите штат или территорию США\"\n\n#: us/models.py:8\nmsgid \"U.S. state (two uppercase letters)\"\nmsgstr \"Штат США (две заглавные буквы)\"\n\n#: us/models.py:17\nmsgid \"U.S. postal code (two uppercase letters)\"\nmsgstr \"Американский индекс (две заглавные буквы)\"\n\n#: us/models.py:26\nmsgid \"Phone number\"\nmsgstr \"Номер телефона\"\n\n#: uy/forms.py:29\nmsgid \"Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.\"\nmsgstr \"\"\n\"Введите правильный CI-номер в формате X.XXX.XXX-X,XXXXXXX-X или XXXXXXXX.\"\n\n#: uy/forms.py:31\nmsgid \"Enter a valid CI number.\"\nmsgstr \"Введите правильный CI-номер.\"\n\n#: za/forms.py:22\nmsgid \"Enter a valid South African ID number\"\nmsgstr \"Введите правильный идентификационный номер Южной Африки.\"\n\n#: za/forms.py:56\nmsgid \"Enter a valid South African postal code\"\nmsgstr \"Введите правильный почтовый индекс Южной Африки\"\n\n#: za/za_provinces.py:4\nmsgid \"Eastern Cape\"\nmsgstr \"Восточная Капская провинция\"\n\n#: za/za_provinces.py:5\nmsgid \"Free State\"\nmsgstr \"Свободный штат\"\n\n#: za/za_provinces.py:6\nmsgid \"Gauteng\"\nmsgstr \"Гаутенг\"\n\n#: za/za_provinces.py:7\nmsgid \"KwaZulu-Natal\"\nmsgstr \"Квазулу-Натал\"\n\n#: za/za_provinces.py:8\nmsgid \"Limpopo\"\nmsgstr \"Лимпопо\"\n\n#: za/za_provinces.py:9\nmsgid \"Mpumalanga\"\nmsgstr \"Мпумаланга\"\n\n#: za/za_provinces.py:10\nmsgid \"Northern Cape\"\nmsgstr \"Северная Капская провинция\"\n\n#: za/za_provinces.py:11\nmsgid \"North West\"\nmsgstr \"Северо-запад\"\n\n#: za/za_provinces.py:12\nmsgid \"Western Cape\"\nmsgstr \"Западная Капская провинция\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/locale/sk/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Juraj Bubniak <translations@jbub.eu>, 2012.\n# Marian Andre <marian@andre.sk>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-10-21 16:53+0000\\n\"\n\"Last-Translator: Juraj Bubniak <translations@jbub.eu>\\n\"\n\"Language-Team: Slovak (http://www.transifex.com/projects/p/django/language/\"\n\"sk/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sk\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\\n\"\n\n#: ar/forms.py:30\nmsgid \"Enter a postal code in the format NNNN or ANNNNAAA.\"\nmsgstr \"Zadajte poštové smerovacie číslo v tvare NNNN alebo ANNNNAAA.\"\n\n#: ar/forms.py:52 br/forms.py:95 br/forms.py:134 pe/forms.py:27 pe/forms.py:55\nmsgid \"This field requires only numbers.\"\nmsgstr \"Toto pole môže obsahovať len čísla.\"\n\n#: ar/forms.py:53\nmsgid \"This field requires 7 or 8 digits.\"\nmsgstr \"Toto pole vyžaduje 7 alebo 8 číslic.\"\n\n#: ar/forms.py:82\nmsgid \"Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.\"\nmsgstr \"Vložte platné CUIT vo formáte XX-XXXXXXXX-X alebo XXXXXXXXXXXX.\"\n\n#: ar/forms.py:83\nmsgid \"Invalid CUIT.\"\nmsgstr \"Neplatné CUIT.\"\n\n#: ar/forms.py:84\nmsgid \"Invalid legal type. Type must be 27, 20, 23 or 30.\"\nmsgstr \"Neplatný právny typ. Typ musí byť 27, 20, 23 alebo 30.\"\n\n#: at/at_states.py:5\nmsgid \"Burgenland\"\nmsgstr \"Burgenland\"\n\n#: at/at_states.py:6\nmsgid \"Carinthia\"\nmsgstr \"Korutánsko\"\n\n#: at/at_states.py:7\nmsgid \"Lower Austria\"\nmsgstr \"Dolné Rakúsko\"\n\n#: at/at_states.py:8\nmsgid \"Upper Austria\"\nmsgstr \"Horné Rakúsko\"\n\n#: at/at_states.py:9\nmsgid \"Salzburg\"\nmsgstr \"Salzburg\"\n\n#: at/at_states.py:10\nmsgid \"Styria\"\nmsgstr \"Štajersko\"\n\n#: at/at_states.py:11\nmsgid \"Tyrol\"\nmsgstr \"Tirolsko\"\n\n#: at/at_states.py:12\nmsgid \"Vorarlberg\"\nmsgstr \"Vorarlbersko\"\n\n#: at/at_states.py:13\nmsgid \"Vienna\"\nmsgstr \"Viedeň\"\n\n#: at/forms.py:22 ch/forms.py:22 no/forms.py:19\nmsgid \"Enter a zip code in the format XXXX.\"\nmsgstr \"Zadajte poštové smerovacie číslo v tvare XXXX.\"\n\n#: at/forms.py:50\nmsgid \"Enter a valid Austrian Social Security Number in XXXX XXXXXX format.\"\nmsgstr \"\"\n\"Zadajte platné rakúske číslo sociálneho poistenia vo formáte XXXX XXXXXX.\"\n\n#: au/forms.py:26\nmsgid \"Enter a 4 digit postcode.\"\nmsgstr \"Zadajte štvorciferné poštové smerovacie číslo.\"\n\n#: au/models.py:9\nmsgid \"Australian State\"\nmsgstr \"Austrálsky štát\"\n\n#: au/models.py:19\nmsgid \"Australian Postcode\"\nmsgstr \"Austrálske PSČ\"\n\n#: au/models.py:33\nmsgid \"Australian Phone number\"\nmsgstr \"Austrálske telefónne číslo\"\n\n#: be/be_provinces.py:5\nmsgid \"Antwerp\"\nmsgstr \"Antverpy\"\n\n#: be/be_provinces.py:6\nmsgid \"Brussels\"\nmsgstr \"Brusel\"\n\n#: be/be_provinces.py:7\nmsgid \"East Flanders\"\nmsgstr \"Východné Flámsko\"\n\n#: be/be_provinces.py:8\nmsgid \"Flemish Brabant\"\nmsgstr \"Flámsky Brabant\"\n\n#: be/be_provinces.py:9\nmsgid \"Hainaut\"\nmsgstr \"Hennegavsko\"\n\n#: be/be_provinces.py:10\nmsgid \"Liege\"\nmsgstr \"Liege\"\n\n#: be/be_provinces.py:11 nl/nl_provinces.py:9\nmsgid \"Limburg\"\nmsgstr \"Limburg\"\n\n#: be/be_provinces.py:12\nmsgid \"Luxembourg\"\nmsgstr \"Belgické Luxembursko\"\n\n#: be/be_provinces.py:13\nmsgid \"Namur\"\nmsgstr \"Namur\"\n\n#: be/be_provinces.py:14\nmsgid \"Walloon Brabant\"\nmsgstr \"Valónsky Brabant\"\n\n#: be/be_provinces.py:15\nmsgid \"West Flanders\"\nmsgstr \"Západné Flámsko\"\n\n#: be/be_regions.py:5\nmsgid \"Brussels Capital Region\"\nmsgstr \"Región hlavného mesta Brusel\"\n\n#: be/be_regions.py:6\nmsgid \"Flemish Region\"\nmsgstr \"Flámsky región\"\n\n#: be/be_regions.py:7\nmsgid \"Wallonia\"\nmsgstr \"Valónsko\"\n\n#: be/forms.py:25\nmsgid \"Enter a valid postal code in the range and format 1XXX - 9XXX.\"\nmsgstr \"\"\n\"Zadajte platné poštové smerovacie číslo v rozmedzí a v tvare 1XXX - 9XXX.\"\n\n#: be/forms.py:48\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\nmsgstr \"\"\n\"Zadajte platné telefónne číslo v jednom z tvarov 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx alebo 04xxxxxxxx.\"\n\n#: br/forms.py:22\nmsgid \"Enter a zip code in the format XXXXX-XXX.\"\nmsgstr \"Zadajte poštové smerovacie číslo v tvare XXXXX-XXX.\"\n\n#: br/forms.py:31\nmsgid \"Phone numbers must be in XX-XXXX-XXXX format.\"\nmsgstr \"Telefónne čísla musia byť vo formáte XX-XXXX-XXXX.\"\n\n#: br/forms.py:58\nmsgid \"\"\n\"Select a valid brazilian state. That state is not one of the available \"\n\"states.\"\nmsgstr \"\"\n\"Vyberte platný brazílsky štát. Tento štát nepatrí medzi existujúce štáty.\"\n\n#: br/forms.py:93\nmsgid \"Invalid CPF number.\"\nmsgstr \"Chybné CPF číslo.\"\n\n#: br/forms.py:94\nmsgid \"This field requires at most 11 digits or 14 characters.\"\nmsgstr \"Toto pole môže mať najviac 11 čísel alebo 14 písmen.\"\n\n#: br/forms.py:133\nmsgid \"Invalid CNPJ number.\"\nmsgstr \"Chybné CNPJ číslo.\"\n\n#: br/forms.py:135\nmsgid \"This field requires at least 14 digits\"\nmsgstr \"Toto pole vyžaduje minimálne 14 číslic\"\n\n#: ca/forms.py:29\nmsgid \"Enter a postal code in the format XXX XXX.\"\nmsgstr \"Zadajte poštové smerovacie číslo v tvare XXX XXX.\"\n\n#: ca/forms.py:47 us/forms.py:30\nmsgid \"Phone numbers must be in XXX-XXX-XXXX format.\"\nmsgstr \"Telefónne čísla musia byť vo formáte XXX-XXX-XXXX.\"\n\n#: ca/forms.py:69\nmsgid \"Enter a Canadian province or territory.\"\nmsgstr \"Zadajte Kanadskú provinciu alebo teritórium.\"\n\n#: ca/forms.py:110\nmsgid \"Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.\"\nmsgstr \"\"\n\"Zadajte platné číslo kanadského sociálneho poistenia vo formáte XXX-XXX-XX.\"\n\n#: ch/ch_states.py:5\nmsgid \"Aargau\"\nmsgstr \"Aargau\"\n\n#: ch/ch_states.py:6\nmsgid \"Appenzell Innerrhoden\"\nmsgstr \"Appenzell Innerrhoden\"\n\n#: ch/ch_states.py:7\nmsgid \"Appenzell Ausserrhoden\"\nmsgstr \"Appenzell Ausserrhoden\"\n\n#: ch/ch_states.py:8\nmsgid \"Basel-Stadt\"\nmsgstr \"Basel-Stadt\"\n\n#: ch/ch_states.py:9\nmsgid \"Basel-Land\"\nmsgstr \"Basel-Land\"\n\n#: ch/ch_states.py:10\nmsgid \"Berne\"\nmsgstr \"Bern\"\n\n#: ch/ch_states.py:11\nmsgid \"Fribourg\"\nmsgstr \"Fribourg\"\n\n#: ch/ch_states.py:12\nmsgid \"Geneva\"\nmsgstr \"Ženeva\"\n\n#: ch/ch_states.py:13\nmsgid \"Glarus\"\nmsgstr \"Glarus\"\n\n#: ch/ch_states.py:14\nmsgid \"Graubuenden\"\nmsgstr \"Graubuenden\"\n\n#: ch/ch_states.py:15\nmsgid \"Jura\"\nmsgstr \"Jura\"\n\n#: ch/ch_states.py:16\nmsgid \"Lucerne\"\nmsgstr \"Lucern\"\n\n#: ch/ch_states.py:17\nmsgid \"Neuchatel\"\nmsgstr \"Neuchatel\"\n\n#: ch/ch_states.py:18\nmsgid \"Nidwalden\"\nmsgstr \"Nidwalden\"\n\n#: ch/ch_states.py:19\nmsgid \"Obwalden\"\nmsgstr \"Obwalden\"\n\n#: ch/ch_states.py:20\nmsgid \"Schaffhausen\"\nmsgstr \"Schaffhausen\"\n\n#: ch/ch_states.py:21\nmsgid \"Schwyz\"\nmsgstr \"Schwyz\"\n\n#: ch/ch_states.py:22\nmsgid \"Solothurn\"\nmsgstr \"Solothurn\"\n\n#: ch/ch_states.py:23\nmsgid \"St. Gallen\"\nmsgstr \"St. Gallen\"\n\n#: ch/ch_states.py:24\nmsgid \"Thurgau\"\nmsgstr \"Thurgau\"\n\n#: ch/ch_states.py:25\nmsgid \"Ticino\"\nmsgstr \"Ticino\"\n\n#: ch/ch_states.py:26\nmsgid \"Uri\"\nmsgstr \"Uri\"\n\n#: ch/ch_states.py:27\nmsgid \"Valais\"\nmsgstr \"Valais\"\n\n#: ch/ch_states.py:28\nmsgid \"Vaud\"\nmsgstr \"Vaud\"\n\n#: ch/ch_states.py:29\nmsgid \"Zug\"\nmsgstr \"Zug\"\n\n#: ch/ch_states.py:30\nmsgid \"Zurich\"\nmsgstr \"Zurich\"\n\n#: ch/forms.py:37\nmsgid \"Phone numbers must be in 0XX XXX XX XX format.\"\nmsgstr \"Telefónne čísla musia byť vo formáte 0XX XXX XX XX.\"\n\n#: ch/forms.py:68\nmsgid \"\"\n\"Enter a valid Swiss identity or passport card number in X1234567<0 or \"\n\"1234567890 format.\"\nmsgstr \"\"\n\"Vložte platné švajčiarske číslo občianskeho preukazu alebo pasu vo formáte \"\n\"X1234567<0 alebo 1234567890.\"\n\n#: cl/forms.py:32\nmsgid \"Enter a valid Chilean RUT.\"\nmsgstr \"Vložte platné čilské RUT.\"\n\n#: cl/forms.py:33\nmsgid \"Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.\"\nmsgstr \"Vložte platné čilské RUT. Formát je XX.XXX.XXX-X.\"\n\n#: cl/forms.py:34\nmsgid \"The Chilean RUT is not valid.\"\nmsgstr \"Čilské RUT nie je platné.\"\n\n#: cn/forms.py:84\nmsgid \"Enter a post code in the format XXXXXX.\"\nmsgstr \"Zadajte poštové smerovacie číslo v tvare XXXXXX.\"\n\n#: cn/forms.py:105\nmsgid \"ID Card Number consists of 15 or 18 digits.\"\nmsgstr \"Číslo preukazu sa skladá z 15 alebo 18 číslic.\"\n\n#: cn/forms.py:106\nmsgid \"Invalid ID Card Number: Wrong checksum\"\nmsgstr \"Neplatné číslo preukazu: Zlý kontrolný súčet\"\n\n#: cn/forms.py:107\nmsgid \"Invalid ID Card Number: Wrong birthdate\"\nmsgstr \"Neplatné číslo preukazu: Zlý dátum narodenia\"\n\n#: cn/forms.py:108\nmsgid \"Invalid ID Card Number: Wrong location code\"\nmsgstr \"Neplatné číslo preukazu: Zlý kód územia\"\n\n#: cn/forms.py:193\nmsgid \"Enter a valid phone number.\"\nmsgstr \"Zadajte platné telefónne číslo.\"\n\n#: cn/forms.py:210\nmsgid \"Enter a valid cell number.\"\nmsgstr \"Zadajte platné číslo mobilného telefónu.\"\n\n#: cz/cz_regions.py:8\nmsgid \"Prague\"\nmsgstr \"Praha\"\n\n#: cz/cz_regions.py:9\nmsgid \"Central Bohemian Region\"\nmsgstr \"Stredočeský kraj\"\n\n#: cz/cz_regions.py:10\nmsgid \"South Bohemian Region\"\nmsgstr \"Juhočeský kraj\"\n\n#: cz/cz_regions.py:11\nmsgid \"Pilsen Region\"\nmsgstr \"Plzenský kraj\"\n\n#: cz/cz_regions.py:12\nmsgid \"Carlsbad Region\"\nmsgstr \"Karlovarský kraj\"\n\n#: cz/cz_regions.py:13\nmsgid \"Usti Region\"\nmsgstr \"Ústecký kraj\"\n\n#: cz/cz_regions.py:14\nmsgid \"Liberec Region\"\nmsgstr \"Liberecký kraj\"\n\n#: cz/cz_regions.py:15\nmsgid \"Hradec Region\"\nmsgstr \"Hradecký kraj\"\n\n#: cz/cz_regions.py:16\nmsgid \"Pardubice Region\"\nmsgstr \"Pardubický kraj\"\n\n#: cz/cz_regions.py:17\nmsgid \"Vysocina Region\"\nmsgstr \"Vysočina\"\n\n#: cz/cz_regions.py:18\nmsgid \"South Moravian Region\"\nmsgstr \"Juhomoravský kraj\"\n\n#: cz/cz_regions.py:19\nmsgid \"Olomouc Region\"\nmsgstr \"Olomoucký kraj\"\n\n#: cz/cz_regions.py:20\nmsgid \"Zlin Region\"\nmsgstr \"Žlínsky kraj\"\n\n#: cz/cz_regions.py:21\nmsgid \"Moravian-Silesian Region\"\nmsgstr \"Moravskosliezsky kraj\"\n\n#: cz/forms.py:32 sk/forms.py:33\nmsgid \"Enter a postal code in the format XXXXX or XXX XX.\"\nmsgstr \"Zadajte poštové smerovacie číslo v tvare XXXXX alebo XXX XX.\"\n\n#: cz/forms.py:52\nmsgid \"Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.\"\nmsgstr \"Zadajte rodné číslo vo formáte XXXXXX/XXXX alebo XXXXXXXXXX.\"\n\n#: cz/forms.py:53\nmsgid \"Enter a valid birth number.\"\nmsgstr \"Zadajte platné rodné číslo.\"\n\n#: cz/forms.py:102\nmsgid \"Enter a valid IC number.\"\nmsgstr \"Zadajte platné IC číslo.\"\n\n#: de/de_states.py:5\nmsgid \"Baden-Wuerttemberg\"\nmsgstr \"Bádensko-Wuerttembersko\"\n\n#: de/de_states.py:6\nmsgid \"Bavaria\"\nmsgstr \"Bavorsko\"\n\n#: de/de_states.py:7\nmsgid \"Berlin\"\nmsgstr \"Berlín\"\n\n#: de/de_states.py:8\nmsgid \"Brandenburg\"\nmsgstr \"Brandenbursko\"\n\n#: de/de_states.py:9\nmsgid \"Bremen\"\nmsgstr \"Brémy\"\n\n#: de/de_states.py:10\nmsgid \"Hamburg\"\nmsgstr \"Hamburg\"\n\n#: de/de_states.py:11\nmsgid \"Hessen\"\nmsgstr \"Hessensko\"\n\n#: de/de_states.py:12\nmsgid \"Mecklenburg-Western Pomerania\"\nmsgstr \"Meklenbursko-Predpomoransko\"\n\n#: de/de_states.py:13\nmsgid \"Lower Saxony\"\nmsgstr \"Dolné Sasko\"\n\n#: de/de_states.py:14\nmsgid \"North Rhine-Westphalia\"\nmsgstr \"Severné Porýnie-Westfálsko\"\n\n#: de/de_states.py:15\nmsgid \"Rhineland-Palatinate\"\nmsgstr \"Porýnie-Falcko\"\n\n#: de/de_states.py:16\nmsgid \"Saarland\"\nmsgstr \"Saarland\"\n\n#: de/de_states.py:17\nmsgid \"Saxony\"\nmsgstr \"Sasko\"\n\n#: de/de_states.py:18\nmsgid \"Saxony-Anhalt\"\nmsgstr \"Sasko-Anhaltsko\"\n\n#: de/de_states.py:19\nmsgid \"Schleswig-Holstein\"\nmsgstr \"Schleswigsko-Holsteinsko\"\n\n#: de/de_states.py:20\nmsgid \"Thuringia\"\nmsgstr \"Thuringia\"\n\n#: de/forms.py:20 fi/forms.py:18 fr/forms.py:20\nmsgid \"Enter a zip code in the format XXXXX.\"\nmsgstr \"Vložte poštové smerovacie číslo v tvare XXXXX.\"\n\n#: de/forms.py:46\nmsgid \"\"\n\"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"format.\"\nmsgstr \"\"\n\"Vložte platné nemecké číslo občianskeho preukazu vo formáte XXXXXXXXXXX-\"\n\"XXXXXXX-XXXXXXX-X.\"\n\n#: es/es_provinces.py:5\nmsgid \"Araba\"\nmsgstr \"Araba\"\n\n#: es/es_provinces.py:6\nmsgid \"Albacete\"\nmsgstr \"Albacete\"\n\n#: es/es_provinces.py:7\nmsgid \"Alacant\"\nmsgstr \"Alacant\"\n\n#: es/es_provinces.py:8\nmsgid \"Almeria\"\nmsgstr \"Almeria\"\n\n#: es/es_provinces.py:9\nmsgid \"Avila\"\nmsgstr \"Avila\"\n\n#: es/es_provinces.py:10\nmsgid \"Badajoz\"\nmsgstr \"Badajoz\"\n\n#: es/es_provinces.py:11\nmsgid \"Illes Balears\"\nmsgstr \"Baleáry\"\n\n#: es/es_provinces.py:12\nmsgid \"Barcelona\"\nmsgstr \"Barcelona\"\n\n#: es/es_provinces.py:13\nmsgid \"Burgos\"\nmsgstr \"Burgos\"\n\n#: es/es_provinces.py:14\nmsgid \"Caceres\"\nmsgstr \"Caceres\"\n\n#: es/es_provinces.py:15\nmsgid \"Cadiz\"\nmsgstr \"Cadiz\"\n\n#: es/es_provinces.py:16\nmsgid \"Castello\"\nmsgstr \"Castello\"\n\n#: es/es_provinces.py:17\nmsgid \"Ciudad Real\"\nmsgstr \"Ciudad Real\"\n\n#: es/es_provinces.py:18\nmsgid \"Cordoba\"\nmsgstr \"Cordoba\"\n\n#: es/es_provinces.py:19\nmsgid \"A Coruna\"\nmsgstr \"A Coruna\"\n\n#: es/es_provinces.py:20\nmsgid \"Cuenca\"\nmsgstr \"Cuenca\"\n\n#: es/es_provinces.py:21\nmsgid \"Girona\"\nmsgstr \"Girona\"\n\n#: es/es_provinces.py:22\nmsgid \"Granada\"\nmsgstr \"Granada\"\n\n#: es/es_provinces.py:23\nmsgid \"Guadalajara\"\nmsgstr \"Guadalajara\"\n\n#: es/es_provinces.py:24\nmsgid \"Guipuzkoa\"\nmsgstr \"Guipuzkoa\"\n\n#: es/es_provinces.py:25\nmsgid \"Huelva\"\nmsgstr \"Huelva\"\n\n#: es/es_provinces.py:26\nmsgid \"Huesca\"\nmsgstr \"Huesca\"\n\n#: es/es_provinces.py:27\nmsgid \"Jaen\"\nmsgstr \"Jaen\"\n\n#: es/es_provinces.py:28\nmsgid \"Leon\"\nmsgstr \"Leon\"\n\n#: es/es_provinces.py:29\nmsgid \"Lleida\"\nmsgstr \"Lleida\"\n\n#: es/es_provinces.py:30 es/es_regions.py:17\nmsgid \"La Rioja\"\nmsgstr \"La Rioja\"\n\n#: es/es_provinces.py:31\nmsgid \"Lugo\"\nmsgstr \"Lugo\"\n\n#: es/es_provinces.py:32 es/es_regions.py:18\nmsgid \"Madrid\"\nmsgstr \"Madrid\"\n\n#: es/es_provinces.py:33\nmsgid \"Malaga\"\nmsgstr \"Malaga\"\n\n#: es/es_provinces.py:34\nmsgid \"Murcia\"\nmsgstr \"Murcia\"\n\n#: es/es_provinces.py:35\nmsgid \"Navarre\"\nmsgstr \"Navarre\"\n\n#: es/es_provinces.py:36\nmsgid \"Ourense\"\nmsgstr \"Ourense\"\n\n#: es/es_provinces.py:37\nmsgid \"Asturias\"\nmsgstr \"Asturias\"\n\n#: es/es_provinces.py:38\nmsgid \"Palencia\"\nmsgstr \"Palencia\"\n\n#: es/es_provinces.py:39\nmsgid \"Las Palmas\"\nmsgstr \"Las Palmas\"\n\n#: es/es_provinces.py:40\nmsgid \"Pontevedra\"\nmsgstr \"Pontevedra\"\n\n#: es/es_provinces.py:41\nmsgid \"Salamanca\"\nmsgstr \"Salamanca\"\n\n#: es/es_provinces.py:42\nmsgid \"Santa Cruz de Tenerife\"\nmsgstr \"Santa Cruz de Tenerife\"\n\n#: es/es_provinces.py:43 es/es_regions.py:11\nmsgid \"Cantabria\"\nmsgstr \"Kantábria\"\n\n#: es/es_provinces.py:44\nmsgid \"Segovia\"\nmsgstr \"Segovia\"\n\n#: es/es_provinces.py:45\nmsgid \"Seville\"\nmsgstr \"Sevilla\"\n\n#: es/es_provinces.py:46\nmsgid \"Soria\"\nmsgstr \"Soria\"\n\n#: es/es_provinces.py:47\nmsgid \"Tarragona\"\nmsgstr \"Tarragona\"\n\n#: es/es_provinces.py:48\nmsgid \"Teruel\"\nmsgstr \"Teruel\"\n\n#: es/es_provinces.py:49\nmsgid \"Toledo\"\nmsgstr \"Toledo\"\n\n#: es/es_provinces.py:50\nmsgid \"Valencia\"\nmsgstr \"Valencia\"\n\n#: es/es_provinces.py:51\nmsgid \"Valladolid\"\nmsgstr \"Valladolid\"\n\n#: es/es_provinces.py:52\nmsgid \"Bizkaia\"\nmsgstr \"Bizkaia\"\n\n#: es/es_provinces.py:53\nmsgid \"Zamora\"\nmsgstr \"Zamora\"\n\n#: es/es_provinces.py:54\nmsgid \"Zaragoza\"\nmsgstr \"Zaragoza\"\n\n#: es/es_provinces.py:55\nmsgid \"Ceuta\"\nmsgstr \"Ceuta\"\n\n#: es/es_provinces.py:56\nmsgid \"Melilla\"\nmsgstr \"Melilla\"\n\n#: es/es_regions.py:5\nmsgid \"Andalusia\"\nmsgstr \"Andalúzia\"\n\n#: es/es_regions.py:6\nmsgid \"Aragon\"\nmsgstr \"Aragon\"\n\n#: es/es_regions.py:7\nmsgid \"Principality of Asturias\"\nmsgstr \"Asturské kniežatstvo\"\n\n#: es/es_regions.py:8\nmsgid \"Balearic Islands\"\nmsgstr \"Baleárske ostrovy\"\n\n#: es/es_regions.py:9\nmsgid \"Basque Country\"\nmsgstr \"Baskicko\"\n\n#: es/es_regions.py:10\nmsgid \"Canary Islands\"\nmsgstr \"Kanárske ostrovy\"\n\n#: es/es_regions.py:12\nmsgid \"Castile-La Mancha\"\nmsgstr \"Kastília-La Mancha\"\n\n#: es/es_regions.py:13\nmsgid \"Castile and Leon\"\nmsgstr \"Kastília-León\"\n\n#: es/es_regions.py:14\nmsgid \"Catalonia\"\nmsgstr \"Katalánsko\"\n\n#: es/es_regions.py:15\nmsgid \"Extremadura\"\nmsgstr \"Estremadura\"\n\n#: es/es_regions.py:16\nmsgid \"Galicia\"\nmsgstr \"Galícia\"\n\n#: es/es_regions.py:19\nmsgid \"Region of Murcia\"\nmsgstr \"Murcia a okolie\"\n\n#: es/es_regions.py:20\nmsgid \"Foral Community of Navarre\"\nmsgstr \"Navarra\"\n\n#: es/es_regions.py:21\nmsgid \"Valencian Community\"\nmsgstr \"Valencijské spoločenstvo\"\n\n#: es/forms.py:26\nmsgid \"Enter a valid postal code in the range and format 01XXX - 52XXX.\"\nmsgstr \"\"\n\"Zadajte platné poštové smerovacie číslo v rozmedzí a v tvare 01XXX - 52XXX.\"\n\n#: es/forms.py:46\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or \"\n\"9XXXXXXXX.\"\nmsgstr \"\"\n\"Zadajte platné telefónne číslo v tvare 6XXXXXXXX, 8XXXXXXXX alebo 9XXXXXXXX.\"\n\n#: es/forms.py:73\nmsgid \"Please enter a valid NIF, NIE, or CIF.\"\nmsgstr \"Zadajte platné NIF, NIE alebo CIF, prosím.\"\n\n#: es/forms.py:74\nmsgid \"Please enter a valid NIF or NIE.\"\nmsgstr \"Zadajte platné NIF alebo NIE, prosím.\"\n\n#: es/forms.py:75\nmsgid \"Invalid checksum for NIF.\"\nmsgstr \"Neplatný kontrolný súčet pre NIF.\"\n\n#: es/forms.py:76\nmsgid \"Invalid checksum for NIE.\"\nmsgstr \"Neplatný kontrolný súčet pre NIE.\"\n\n#: es/forms.py:77\nmsgid \"Invalid checksum for CIF.\"\nmsgstr \"Neplatný kontrolný súčet pre CIF.\"\n\n#: es/forms.py:149\nmsgid \"\"\n\"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.\"\nmsgstr \"\"\n\"Zadajte, prosím, platné číslo bankového účtu v tvare XXXX-XXXX-XX-XXXXXXXXXX.\"\n\n#: es/forms.py:150\nmsgid \"Invalid checksum for bank account number.\"\nmsgstr \"Neplatný kontrolný súčet čísla bankového účtu.\"\n\n#: fi/forms.py:33\nmsgid \"Enter a valid Finnish social security number.\"\nmsgstr \"Vložte platné fínske číslo sociálneho poistenia.\"\n\n#: fr/forms.py:35\nmsgid \"Phone numbers must be in 0X XX XX XX XX format.\"\nmsgstr \"Telefónne čísla musia mať formát 0X XX XX XX XX.\"\n\n#: gb/forms.py:25\nmsgid \"Enter a valid postcode.\"\nmsgstr \"Zadajte platné poštové smerovacie číslo.\"\n\n#: gb/gb_regions.py:11\nmsgid \"Bedfordshire\"\nmsgstr \"Bedfordshire\"\n\n#: gb/gb_regions.py:12\nmsgid \"Buckinghamshire\"\nmsgstr \"Buckinghamshire\"\n\n#: gb/gb_regions.py:14\nmsgid \"Cheshire\"\nmsgstr \"Cheshire\"\n\n#: gb/gb_regions.py:15\nmsgid \"Cornwall and Isles of Scilly\"\nmsgstr \"Cornwall a Ostrovy Scilly\"\n\n#: gb/gb_regions.py:16\nmsgid \"Cumbria\"\nmsgstr \"Cumbria\"\n\n#: gb/gb_regions.py:17\nmsgid \"Derbyshire\"\nmsgstr \"Derbyshire\"\n\n#: gb/gb_regions.py:18\nmsgid \"Devon\"\nmsgstr \"Devon\"\n\n#: gb/gb_regions.py:19\nmsgid \"Dorset\"\nmsgstr \"Dorset\"\n\n#: gb/gb_regions.py:20\nmsgid \"Durham\"\nmsgstr \"Durham\"\n\n#: gb/gb_regions.py:21\nmsgid \"East Sussex\"\nmsgstr \"East Sussex\"\n\n#: gb/gb_regions.py:22\nmsgid \"Essex\"\nmsgstr \"Essex\"\n\n#: gb/gb_regions.py:23\nmsgid \"Gloucestershire\"\nmsgstr \"Gloucestershire\"\n\n#: gb/gb_regions.py:24\nmsgid \"Greater London\"\nmsgstr \"Greater London\"\n\n#: gb/gb_regions.py:25\nmsgid \"Greater Manchester\"\nmsgstr \"Greater Manchester\"\n\n#: gb/gb_regions.py:26\nmsgid \"Hampshire\"\nmsgstr \"Hampshire\"\n\n#: gb/gb_regions.py:27\nmsgid \"Hertfordshire\"\nmsgstr \"Hertfordshire\"\n\n#: gb/gb_regions.py:28\nmsgid \"Kent\"\nmsgstr \"Kent\"\n\n#: gb/gb_regions.py:29\nmsgid \"Lancashire\"\nmsgstr \"Lancashire\"\n\n#: gb/gb_regions.py:30\nmsgid \"Leicestershire\"\nmsgstr \"Leicestershire\"\n\n#: gb/gb_regions.py:31\nmsgid \"Lincolnshire\"\nmsgstr \"Lincolnshire\"\n\n#: gb/gb_regions.py:32\nmsgid \"Merseyside\"\nmsgstr \"Merseyside\"\n\n#: gb/gb_regions.py:33\nmsgid \"Norfolk\"\nmsgstr \"Norfolk\"\n\n#: gb/gb_regions.py:34\nmsgid \"North Yorkshire\"\nmsgstr \"North Yorkshire\"\n\n#: gb/gb_regions.py:35\nmsgid \"Northamptonshire\"\nmsgstr \"Northamptonshire\"\n\n#: gb/gb_regions.py:36\nmsgid \"Northumberland\"\nmsgstr \"Northumberland\"\n\n#: gb/gb_regions.py:37\nmsgid \"Nottinghamshire\"\nmsgstr \"Nottinghamshire\"\n\n#: gb/gb_regions.py:38\nmsgid \"Oxfordshire\"\nmsgstr \"Oxfordshire\"\n\n#: gb/gb_regions.py:39\nmsgid \"Shropshire\"\nmsgstr \"Shropshire\"\n\n#: gb/gb_regions.py:40\nmsgid \"Somerset\"\nmsgstr \"Somerset\"\n\n#: gb/gb_regions.py:41\nmsgid \"South Yorkshire\"\nmsgstr \"South Yorkshire\"\n\n#: gb/gb_regions.py:42\nmsgid \"Staffordshire\"\nmsgstr \"Staffordshire\"\n\n#: gb/gb_regions.py:43\nmsgid \"Suffolk\"\nmsgstr \"Suffolk\"\n\n#: gb/gb_regions.py:44\nmsgid \"Surrey\"\nmsgstr \"Surrey\"\n\n#: gb/gb_regions.py:45\nmsgid \"Tyne and Wear\"\nmsgstr \"Tyne a Wear\"\n\n#: gb/gb_regions.py:46\nmsgid \"Warwickshire\"\nmsgstr \"Warwickshire\"\n\n#: gb/gb_regions.py:47\nmsgid \"West Midlands\"\nmsgstr \"West Midlands\"\n\n#: gb/gb_regions.py:48\nmsgid \"West Sussex\"\nmsgstr \"West Sussex\"\n\n#: gb/gb_regions.py:49\nmsgid \"West Yorkshire\"\nmsgstr \"West Yorkshire\"\n\n#: gb/gb_regions.py:50\nmsgid \"Wiltshire\"\nmsgstr \"Wiltshire\"\n\n#: gb/gb_regions.py:51\nmsgid \"Worcestershire\"\nmsgstr \"Worcestershire\"\n\n#: gb/gb_regions.py:55\nmsgid \"County Antrim\"\nmsgstr \"okres Antrim\"\n\n#: gb/gb_regions.py:56\nmsgid \"County Armagh\"\nmsgstr \"okres Armagh\"\n\n#: gb/gb_regions.py:57\nmsgid \"County Down\"\nmsgstr \"okres Down\"\n\n#: gb/gb_regions.py:58\nmsgid \"County Fermanagh\"\nmsgstr \"okres Fermanagh\"\n\n#: gb/gb_regions.py:59\nmsgid \"County Londonderry\"\nmsgstr \"okres Londonderry\"\n\n#: gb/gb_regions.py:60\nmsgid \"County Tyrone\"\nmsgstr \"okres Tyrone\"\n\n#: gb/gb_regions.py:64\nmsgid \"Clwyd\"\nmsgstr \"Clwyd\"\n\n#: gb/gb_regions.py:65\nmsgid \"Dyfed\"\nmsgstr \"Dyfed\"\n\n#: gb/gb_regions.py:66\nmsgid \"Gwent\"\nmsgstr \"Gwent\"\n\n#: gb/gb_regions.py:67\nmsgid \"Gwynedd\"\nmsgstr \"Gwynedd\"\n\n#: gb/gb_regions.py:68\nmsgid \"Mid Glamorgan\"\nmsgstr \"Mid Glamorgan\"\n\n#: gb/gb_regions.py:69\nmsgid \"Powys\"\nmsgstr \"Powys\"\n\n#: gb/gb_regions.py:70\nmsgid \"South Glamorgan\"\nmsgstr \"South Glamorgan\"\n\n#: gb/gb_regions.py:71\nmsgid \"West Glamorgan\"\nmsgstr \"West Glamorgan\"\n\n#: gb/gb_regions.py:75\nmsgid \"Borders\"\nmsgstr \"Borders\"\n\n#: gb/gb_regions.py:76\nmsgid \"Central Scotland\"\nmsgstr \"Central Scotland\"\n\n#: gb/gb_regions.py:77\nmsgid \"Dumfries and Galloway\"\nmsgstr \"Dumfries a Galloway\"\n\n#: gb/gb_regions.py:78\nmsgid \"Fife\"\nmsgstr \"Fife\"\n\n#: gb/gb_regions.py:79\nmsgid \"Grampian\"\nmsgstr \"Grampian\"\n\n#: gb/gb_regions.py:80\nmsgid \"Highland\"\nmsgstr \"Highland\"\n\n#: gb/gb_regions.py:81\nmsgid \"Lothian\"\nmsgstr \"Lothian\"\n\n#: gb/gb_regions.py:82\nmsgid \"Orkney Islands\"\nmsgstr \"Orkneyské ostrovy\"\n\n#: gb/gb_regions.py:83\nmsgid \"Shetland Islands\"\nmsgstr \"Shetlandské ostrovy\"\n\n#: gb/gb_regions.py:84\nmsgid \"Strathclyde\"\nmsgstr \"Strathclyde\"\n\n#: gb/gb_regions.py:85\nmsgid \"Tayside\"\nmsgstr \"Tayside\"\n\n#: gb/gb_regions.py:86\nmsgid \"Western Isles\"\nmsgstr \"Western Isles\"\n\n#: gb/gb_regions.py:90\nmsgid \"England\"\nmsgstr \"Anglicko\"\n\n#: gb/gb_regions.py:91\nmsgid \"Northern Ireland\"\nmsgstr \"Severné Írsko\"\n\n#: gb/gb_regions.py:92\nmsgid \"Scotland\"\nmsgstr \"Škótsko\"\n\n#: gb/gb_regions.py:93\nmsgid \"Wales\"\nmsgstr \"Wales\"\n\n#: hk/forms.py:37\n#, python-format\nmsgid \"Phone number should not start with one of the followings: %s.\"\nmsgstr \"Telefónne číslo by nemalo začínať s jedným z nasledujúcich: %s.\"\n\n#: hk/forms.py:40\n#, python-format\nmsgid \"Phone number must be in one of the following formats: %s.\"\nmsgstr \"Telefónne číslo musí byť v jednom z nasledujúcich formátov: %s.\"\n\n#: hk/forms.py:42\n#, python-format\nmsgid \"Phone number should start with one of the followings: %s.\"\nmsgstr \"Telefónne číslo by malo začínať jedným z nasledujúcich: %s.\"\n\n#: hr/forms.py:76\nmsgid \"Enter a valid 13 digit JMBG\"\nmsgstr \"Zadajte platných 13 číslic JMBG\"\n\n#: hr/forms.py:77\nmsgid \"Error in date segment\"\nmsgstr \"Chyba v dátumovej časti\"\n\n#: hr/forms.py:123\nmsgid \"Enter a valid 11 digit OIB\"\nmsgstr \"Zadajte platných 11 číslic OIB\"\n\n#: hr/forms.py:152 id/forms.py:112\nmsgid \"Enter a valid vehicle license plate number\"\nmsgstr \"Zadajte platnú štátnu poznávaciu značku auta\"\n\n#: hr/forms.py:153\nmsgid \"Enter a valid location code\"\nmsgstr \"Zadajte platný kód územia \"\n\n#: hr/forms.py:154\nmsgid \"Number part cannot be zero\"\nmsgstr \"Číselná časť nemôže byť nula\"\n\n#: hr/forms.py:190\nmsgid \"Enter a valid 5 digit postal code\"\nmsgstr \"Zadajte platné 5-miestne PSČ\"\n\n#: hr/forms.py:218 id/forms.py:72 nl/forms.py:56\nmsgid \"Enter a valid phone number\"\nmsgstr \"Zadajte platné telofónne číslo\"\n\n#: hr/forms.py:219\nmsgid \"Enter a valid area or mobile network code\"\nmsgstr \"Zadajte platný kód pre oblasť alebo mobilnú sieť\"\n\n#: hr/forms.py:220\nmsgid \"The phone nubmer is too long\"\nmsgstr \"Telefónne číslo je príliš dlhé\"\n\n#: hr/forms.py:258\nmsgid \"Enter a valid 19 digit JMBAG starting with 601983\"\nmsgstr \"Zadajte platných 19 číslic JMBAG počnúc 601983\"\n\n#: hr/forms.py:259\nmsgid \"Card issue number cannot be zero\"\nmsgstr \"Číslo vydania karty nemôže byť nula\"\n\n#: hr/hr_choices.py:14\nmsgid \"Grad Zagreb\"\nmsgstr \"Záhreb\"\n\n#: hr/hr_choices.py:15\nmsgid \"Bjelovarsko-bilogorska županija\"\nmsgstr \"Bjelovarsko-bilogorská župa\"\n\n#: hr/hr_choices.py:16\nmsgid \"Brodsko-posavska županija\"\nmsgstr \"Brodsko-posávska župa\"\n\n#: hr/hr_choices.py:17\nmsgid \"Dubrovačko-neretvanska županija\"\nmsgstr \"Dubrovnícko-neretvianska župa\"\n\n#: hr/hr_choices.py:18\nmsgid \"Istarska županija\"\nmsgstr \"Istrijská župa\"\n\n#: hr/hr_choices.py:19\nmsgid \"Karlovačka županija\"\nmsgstr \"Karlovecká župa\"\n\n#: hr/hr_choices.py:20\nmsgid \"Koprivničko-križevačka županija\"\nmsgstr \"Koprivnicko-križevatská župa\"\n\n#: hr/hr_choices.py:21\nmsgid \"Krapinsko-zagorska županija\"\nmsgstr \"Krapinsko-zagorská župa\"\n\n#: hr/hr_choices.py:22\nmsgid \"Ličko-senjska županija\"\nmsgstr \"Licko-senjská župa\"\n\n#: hr/hr_choices.py:23\nmsgid \"Međimurska županija\"\nmsgstr \"Medzimurská župa\"\n\n#: hr/hr_choices.py:24\nmsgid \"Osječko-baranjska županija\"\nmsgstr \"Osijecko-baranjská župa\"\n\n#: hr/hr_choices.py:25\nmsgid \"Požeško-slavonska županija\"\nmsgstr \"Požecko-slavónska župa\"\n\n#: hr/hr_choices.py:26\nmsgid \"Primorsko-goranska županija\"\nmsgstr \"Prímorsko-gorskokotarská župa\"\n\n#: hr/hr_choices.py:27\nmsgid \"Sisačko-moslavačka županija\"\nmsgstr \"Sisacko-moslavinská župa\"\n\n#: hr/hr_choices.py:28\nmsgid \"Splitsko-dalmatinska županija\"\nmsgstr \"Splitsko-dalmatínska župa\"\n\n#: hr/hr_choices.py:29\nmsgid \"Šibensko-kninska županija\"\nmsgstr \"Šibenicko-kninská župa\"\n\n#: hr/hr_choices.py:30\nmsgid \"Varaždinska županija\"\nmsgstr \"Varaždínska župa\"\n\n#: hr/hr_choices.py:31\nmsgid \"Virovitičko-podravska županija\"\nmsgstr \"Viroviticko-podrávska župa\"\n\n#: hr/hr_choices.py:32\nmsgid \"Vukovarsko-srijemska županija\"\nmsgstr \"Vukovarsko-sriemska župa\"\n\n#: hr/hr_choices.py:33\nmsgid \"Zadarska županija\"\nmsgstr \"Zadarská župa\"\n\n#: hr/hr_choices.py:34\nmsgid \"Zagrebačka županija\"\nmsgstr \"Záhrebská župa\"\n\n#: id/forms.py:31\nmsgid \"Enter a valid post code\"\nmsgstr \"Zadajte platné poštové smerovacie číslo\"\n\n#: id/forms.py:176\nmsgid \"Enter a valid NIK/KTP number\"\nmsgstr \"Zadajte platné NIK/KTP číslo\"\n\n#: id/id_choices.py:15\nmsgid \"Aceh\"\nmsgstr \"Aceh\"\n\n#: id/id_choices.py:16 id/id_choices.py:79\nmsgid \"Bali\"\nmsgstr \"Bali\"\n\n#: id/id_choices.py:17 id/id_choices.py:51\nmsgid \"Banten\"\nmsgstr \"Banten\"\n\n#: id/id_choices.py:18 id/id_choices.py:60\nmsgid \"Bengkulu\"\nmsgstr \"Bengkulu\"\n\n#: id/id_choices.py:19 id/id_choices.py:53\nmsgid \"Yogyakarta\"\nmsgstr \"Yogyakarta\"\n\n#: id/id_choices.py:20 id/id_choices.py:57\nmsgid \"Jakarta\"\nmsgstr \"Jakarta\"\n\n#: id/id_choices.py:21 id/id_choices.py:81\nmsgid \"Gorontalo\"\nmsgstr \"Gorontalo\"\n\n#: id/id_choices.py:22 id/id_choices.py:63\nmsgid \"Jambi\"\nmsgstr \"Jambi\"\n\n#: id/id_choices.py:23\nmsgid \"Jawa Barat\"\nmsgstr \"Jawa Barat\"\n\n#: id/id_choices.py:24\nmsgid \"Jawa Tengah\"\nmsgstr \"Jawa Tengah\"\n\n#: id/id_choices.py:25\nmsgid \"Jawa Timur\"\nmsgstr \"Jawa Timur\"\n\n#: id/id_choices.py:26 id/id_choices.py:94\nmsgid \"Kalimantan Barat\"\nmsgstr \"Kalimantan Barat\"\n\n#: id/id_choices.py:27 id/id_choices.py:72\nmsgid \"Kalimantan Selatan\"\nmsgstr \"Kalimantan Selatan\"\n\n#: id/id_choices.py:28 id/id_choices.py:95\nmsgid \"Kalimantan Tengah\"\nmsgstr \"Kalimantan Tengah\"\n\n#: id/id_choices.py:29 id/id_choices.py:96\nmsgid \"Kalimantan Timur\"\nmsgstr \"Kalimantan Timur\"\n\n#: id/id_choices.py:30\nmsgid \"Kepulauan Bangka-Belitung\"\nmsgstr \"Kepulauan Bangka-Belitung\"\n\n#: id/id_choices.py:31 id/id_choices.py:68\nmsgid \"Kepulauan Riau\"\nmsgstr \"Kepulauan Riau\"\n\n#: id/id_choices.py:32 id/id_choices.py:61\nmsgid \"Lampung\"\nmsgstr \"Lampung\"\n\n#: id/id_choices.py:33 id/id_choices.py:76\nmsgid \"Maluku\"\nmsgstr \"Maluku\"\n\n#: id/id_choices.py:34 id/id_choices.py:77\nmsgid \"Maluku Utara\"\nmsgstr \"Maluku Utara\"\n\n#: id/id_choices.py:35\nmsgid \"Nusa Tenggara Barat\"\nmsgstr \"Nusa Tenggara Barat\"\n\n#: id/id_choices.py:36\nmsgid \"Nusa Tenggara Timur\"\nmsgstr \"Nusa Tenggara Timur\"\n\n#: id/id_choices.py:37\nmsgid \"Papua\"\nmsgstr \"Papua\"\n\n#: id/id_choices.py:38\nmsgid \"Papua Barat\"\nmsgstr \"Papua Barat\"\n\n#: id/id_choices.py:39 id/id_choices.py:66\nmsgid \"Riau\"\nmsgstr \"Riau\"\n\n#: id/id_choices.py:40 id/id_choices.py:74\nmsgid \"Sulawesi Barat\"\nmsgstr \"Sulawesi Barat\"\n\n#: id/id_choices.py:41 id/id_choices.py:75\nmsgid \"Sulawesi Selatan\"\nmsgstr \"Sulawesi Selatan\"\n\n#: id/id_choices.py:42 id/id_choices.py:82\nmsgid \"Sulawesi Tengah\"\nmsgstr \"Sulawesi Tengah\"\n\n#: id/id_choices.py:43 id/id_choices.py:85\nmsgid \"Sulawesi Tenggara\"\nmsgstr \"Sulawesi Tenggara\"\n\n#: id/id_choices.py:44\nmsgid \"Sulawesi Utara\"\nmsgstr \"Sulawesi Utara\"\n\n#: id/id_choices.py:45 id/id_choices.py:58\nmsgid \"Sumatera Barat\"\nmsgstr \"Sumatera Barat\"\n\n#: id/id_choices.py:46 id/id_choices.py:62\nmsgid \"Sumatera Selatan\"\nmsgstr \"Sumatera Selatan\"\n\n#: id/id_choices.py:47 id/id_choices.py:64\nmsgid \"Sumatera Utara\"\nmsgstr \"Sumatera Utara\"\n\n#: id/id_choices.py:52\nmsgid \"Magelang\"\nmsgstr \"Magelang\"\n\n#: id/id_choices.py:54\nmsgid \"Surakarta - Solo\"\nmsgstr \"Surakarta - Solo\"\n\n#: id/id_choices.py:55\nmsgid \"Madiun\"\nmsgstr \"Madiun\"\n\n#: id/id_choices.py:56\nmsgid \"Kediri\"\nmsgstr \"Kediri\"\n\n#: id/id_choices.py:59\nmsgid \"Tapanuli\"\nmsgstr \"Tapanuli\"\n\n#: id/id_choices.py:65\nmsgid \"Nanggroe Aceh Darussalam\"\nmsgstr \"Nanggroe Aceh Darussalam\"\n\n#: id/id_choices.py:67\nmsgid \"Kepulauan Bangka Belitung\"\nmsgstr \"Kepulauan Bangka Belitung\"\n\n#: id/id_choices.py:69\nmsgid \"Corps Consulate\"\nmsgstr \"Corps Consulate\"\n\n#: id/id_choices.py:70\nmsgid \"Corps Diplomatic\"\nmsgstr \"Corps Diplomatic\"\n\n#: id/id_choices.py:71\nmsgid \"Bandung\"\nmsgstr \"Bandung\"\n\n#: id/id_choices.py:73\nmsgid \"Sulawesi Utara Daratan\"\nmsgstr \"Sulawesi Utara Daratan\"\n\n#: id/id_choices.py:78\nmsgid \"NTT - Timor\"\nmsgstr \"NTT - Timor\"\n\n#: id/id_choices.py:80\nmsgid \"Sulawesi Utara Kepulauan\"\nmsgstr \"Sulawesi Utara Kepulauan\"\n\n#: id/id_choices.py:83\nmsgid \"NTB - Lombok\"\nmsgstr \"NTB - Lombok\"\n\n#: id/id_choices.py:84\nmsgid \"Papua dan Papua Barat\"\nmsgstr \"Papua dan Papua Barat\"\n\n#: id/id_choices.py:86\nmsgid \"Cirebon\"\nmsgstr \"Cirebon\"\n\n#: id/id_choices.py:87\nmsgid \"NTB - Sumbawa\"\nmsgstr \"NTB - Sumbawa\"\n\n#: id/id_choices.py:88\nmsgid \"NTT - Flores\"\nmsgstr \"NTT - Flores\"\n\n#: id/id_choices.py:89\nmsgid \"NTT - Sumba\"\nmsgstr \"NTT - Sumba\"\n\n#: id/id_choices.py:90\nmsgid \"Bogor\"\nmsgstr \"Bogor\"\n\n#: id/id_choices.py:91\nmsgid \"Pekalongan\"\nmsgstr \"Pekalongan\"\n\n#: id/id_choices.py:92\nmsgid \"Semarang\"\nmsgstr \"Semarang\"\n\n#: id/id_choices.py:93\nmsgid \"Pati\"\nmsgstr \"Pati\"\n\n#: id/id_choices.py:97\nmsgid \"Surabaya\"\nmsgstr \"Surabaya\"\n\n#: id/id_choices.py:98\nmsgid \"Madura\"\nmsgstr \"Madura\"\n\n#: id/id_choices.py:99\nmsgid \"Malang\"\nmsgstr \"Malang\"\n\n#: id/id_choices.py:100\nmsgid \"Jember\"\nmsgstr \"Jember\"\n\n#: id/id_choices.py:101\nmsgid \"Banyumas\"\nmsgstr \"Banyumas\"\n\n#: id/id_choices.py:102\nmsgid \"Federal Government\"\nmsgstr \"Federálna vláda\"\n\n#: id/id_choices.py:103\nmsgid \"Bojonegoro\"\nmsgstr \"Bojonegoro\"\n\n#: id/id_choices.py:104\nmsgid \"Purwakarta\"\nmsgstr \"Purwakarta\"\n\n#: id/id_choices.py:105\nmsgid \"Sidoarjo\"\nmsgstr \"Sidoarjo\"\n\n#: id/id_choices.py:106\nmsgid \"Garut\"\nmsgstr \"Garut\"\n\n#: ie/ie_counties.py:8\nmsgid \"Antrim\"\nmsgstr \"Antrim\"\n\n#: ie/ie_counties.py:9\nmsgid \"Armagh\"\nmsgstr \"Armagh\"\n\n#: ie/ie_counties.py:10\nmsgid \"Carlow\"\nmsgstr \"Carlow\"\n\n#: ie/ie_counties.py:11\nmsgid \"Cavan\"\nmsgstr \"Cavan\"\n\n#: ie/ie_counties.py:12\nmsgid \"Clare\"\nmsgstr \"Clare\"\n\n#: ie/ie_counties.py:13\nmsgid \"Cork\"\nmsgstr \"Cork\"\n\n#: ie/ie_counties.py:14\nmsgid \"Derry\"\nmsgstr \"Derry\"\n\n#: ie/ie_counties.py:15\nmsgid \"Donegal\"\nmsgstr \"Donegal\"\n\n#: ie/ie_counties.py:16\nmsgid \"Down\"\nmsgstr \"Down\"\n\n#: ie/ie_counties.py:17\nmsgid \"Dublin\"\nmsgstr \"Dublin\"\n\n#: ie/ie_counties.py:18\nmsgid \"Fermanagh\"\nmsgstr \"Fermanagh\"\n\n#: ie/ie_counties.py:19\nmsgid \"Galway\"\nmsgstr \"Galway\"\n\n#: ie/ie_counties.py:20\nmsgid \"Kerry\"\nmsgstr \"Kerry\"\n\n#: ie/ie_counties.py:21\nmsgid \"Kildare\"\nmsgstr \"Kildare\"\n\n#: ie/ie_counties.py:22\nmsgid \"Kilkenny\"\nmsgstr \"Kilkenny\"\n\n#: ie/ie_counties.py:23\nmsgid \"Laois\"\nmsgstr \"Laois\"\n\n#: ie/ie_counties.py:24\nmsgid \"Leitrim\"\nmsgstr \"Leitrim\"\n\n#: ie/ie_counties.py:25\nmsgid \"Limerick\"\nmsgstr \"Limerick\"\n\n#: ie/ie_counties.py:26\nmsgid \"Longford\"\nmsgstr \"Longford\"\n\n#: ie/ie_counties.py:27\nmsgid \"Louth\"\nmsgstr \"Louth\"\n\n#: ie/ie_counties.py:28\nmsgid \"Mayo\"\nmsgstr \"Mayo\"\n\n#: ie/ie_counties.py:29\nmsgid \"Meath\"\nmsgstr \"Meath\"\n\n#: ie/ie_counties.py:30\nmsgid \"Monaghan\"\nmsgstr \"Monaghan\"\n\n#: ie/ie_counties.py:31\nmsgid \"Offaly\"\nmsgstr \"Offaly\"\n\n#: ie/ie_counties.py:32\nmsgid \"Roscommon\"\nmsgstr \"Roscommon\"\n\n#: ie/ie_counties.py:33\nmsgid \"Sligo\"\nmsgstr \"Sligo\"\n\n#: ie/ie_counties.py:34\nmsgid \"Tipperary\"\nmsgstr \"Tipperary\"\n\n#: ie/ie_counties.py:35\nmsgid \"Tyrone\"\nmsgstr \"Tyrone\"\n\n#: ie/ie_counties.py:36\nmsgid \"Waterford\"\nmsgstr \"Waterford\"\n\n#: ie/ie_counties.py:37\nmsgid \"Westmeath\"\nmsgstr \"Westmeath\"\n\n#: ie/ie_counties.py:38\nmsgid \"Wexford\"\nmsgstr \"Wexford\"\n\n#: ie/ie_counties.py:39\nmsgid \"Wicklow\"\nmsgstr \"Wicklow\"\n\n#: il/forms.py:32\nmsgid \"Enter a postal code in the format XXXXX\"\nmsgstr \"Zadajte poštové smerovacie číslo v tvare XXXXX.\"\n\n#: il/forms.py:51\nmsgid \"Enter a valid ID number.\"\nmsgstr \"Zadajte platné ID číslo.\"\n\n#: in_/forms.py:41\nmsgid \"Enter a zip code in the format XXXXXX or XXX XXX.\"\nmsgstr \"Zadajte poštové smerovacie číslo v tvare XXXXXX, alebo XXX XXX.\"\n\n#: in_/forms.py:64\nmsgid \"Enter an Indian state or territory.\"\nmsgstr \"Zadajte indický štát alebo územie.\"\n\n#: in_/forms.py:103\nmsgid \"Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.\"\nmsgstr \"Telefónne čísla musia byť v tvare 02X-8X alebo 03X-7X alebo 04X-6X.\"\n\n#: is_/forms.py:22\nmsgid \"\"\n\"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.\"\nmsgstr \"Zadajte platné islandské identifikačné číslo. Formát je XXXXXX-XXXX.\"\n\n#: is_/forms.py:23\nmsgid \"The Icelandic identification number is not valid.\"\nmsgstr \"Islandské identifikačné číslo je neplatné.\"\n\n#: it/forms.py:21\nmsgid \"Enter a valid zip code.\"\nmsgstr \"Zadajte platné poštové smerovacie číslo.\"\n\n#: it/forms.py:48\nmsgid \"Enter a valid Social Security number.\"\nmsgstr \"Vložte platné číslo sociálneho poistenia.\"\n\n#: it/forms.py:73\nmsgid \"Enter a valid VAT number.\"\nmsgstr \"Zadajte platné VAT číslo.\"\n\n#: jp/forms.py:19\nmsgid \"Enter a postal code in the format XXXXXXX or XXX-XXXX.\"\nmsgstr \"Zadajte poštové smerovacie číslo v tvare XXXXXXX alebo XXX-XXXX.\"\n\n#: jp/jp_prefectures.py:4\nmsgid \"Hokkaido\"\nmsgstr \"Hokkaidó\"\n\n#: jp/jp_prefectures.py:5\nmsgid \"Aomori\"\nmsgstr \"Aomori\"\n\n#: jp/jp_prefectures.py:6\nmsgid \"Iwate\"\nmsgstr \"Iwate\"\n\n#: jp/jp_prefectures.py:7\nmsgid \"Miyagi\"\nmsgstr \"Mijagi\"\n\n#: jp/jp_prefectures.py:8\nmsgid \"Akita\"\nmsgstr \"Akita\"\n\n#: jp/jp_prefectures.py:9\nmsgid \"Yamagata\"\nmsgstr \"Jamagata\"\n\n#: jp/jp_prefectures.py:10\nmsgid \"Fukushima\"\nmsgstr \"Fukušima\"\n\n#: jp/jp_prefectures.py:11\nmsgid \"Ibaraki\"\nmsgstr \"Ibaraki\"\n\n#: jp/jp_prefectures.py:12\nmsgid \"Tochigi\"\nmsgstr \"Točigi\"\n\n#: jp/jp_prefectures.py:13\nmsgid \"Gunma\"\nmsgstr \"Gunma\"\n\n#: jp/jp_prefectures.py:14\nmsgid \"Saitama\"\nmsgstr \"Saitama\"\n\n#: jp/jp_prefectures.py:15\nmsgid \"Chiba\"\nmsgstr \"Čiba\"\n\n#: jp/jp_prefectures.py:16\nmsgid \"Tokyo\"\nmsgstr \"Tokio\"\n\n#: jp/jp_prefectures.py:17\nmsgid \"Kanagawa\"\nmsgstr \"Kanagawa\"\n\n#: jp/jp_prefectures.py:18\nmsgid \"Yamanashi\"\nmsgstr \"Jamanaši\"\n\n#: jp/jp_prefectures.py:19\nmsgid \"Nagano\"\nmsgstr \"Nagano\"\n\n#: jp/jp_prefectures.py:20\nmsgid \"Niigata\"\nmsgstr \"Niigata\"\n\n#: jp/jp_prefectures.py:21\nmsgid \"Toyama\"\nmsgstr \"Tojama\"\n\n#: jp/jp_prefectures.py:22\nmsgid \"Ishikawa\"\nmsgstr \"Išikawa\"\n\n#: jp/jp_prefectures.py:23\nmsgid \"Fukui\"\nmsgstr \"Fukui\"\n\n#: jp/jp_prefectures.py:24\nmsgid \"Gifu\"\nmsgstr \"Gifu\"\n\n#: jp/jp_prefectures.py:25\nmsgid \"Shizuoka\"\nmsgstr \"Šizuoka\"\n\n#: jp/jp_prefectures.py:26\nmsgid \"Aichi\"\nmsgstr \"Aiči\"\n\n#: jp/jp_prefectures.py:27\nmsgid \"Mie\"\nmsgstr \"Mie\"\n\n#: jp/jp_prefectures.py:28\nmsgid \"Shiga\"\nmsgstr \"Šiga\"\n\n#: jp/jp_prefectures.py:29\nmsgid \"Kyoto\"\nmsgstr \"Kjóto\"\n\n#: jp/jp_prefectures.py:30\nmsgid \"Osaka\"\nmsgstr \"Osaka\"\n\n#: jp/jp_prefectures.py:31\nmsgid \"Hyogo\"\nmsgstr \"Hjógo\"\n\n#: jp/jp_prefectures.py:32\nmsgid \"Nara\"\nmsgstr \"Nara\"\n\n#: jp/jp_prefectures.py:33\nmsgid \"Wakayama\"\nmsgstr \"Wakajama\"\n\n#: jp/jp_prefectures.py:34\nmsgid \"Tottori\"\nmsgstr \"Tottori\"\n\n#: jp/jp_prefectures.py:35\nmsgid \"Shimane\"\nmsgstr \"Šimane\"\n\n#: jp/jp_prefectures.py:36\nmsgid \"Okayama\"\nmsgstr \"Okajama\"\n\n#: jp/jp_prefectures.py:37\nmsgid \"Hiroshima\"\nmsgstr \"Hirošima\"\n\n#: jp/jp_prefectures.py:38\nmsgid \"Yamaguchi\"\nmsgstr \"Jamaguči\"\n\n#: jp/jp_prefectures.py:39\nmsgid \"Tokushima\"\nmsgstr \"Tokušima\"\n\n#: jp/jp_prefectures.py:40\nmsgid \"Kagawa\"\nmsgstr \"Kagawa\"\n\n#: jp/jp_prefectures.py:41\nmsgid \"Ehime\"\nmsgstr \"Ehime\"\n\n#: jp/jp_prefectures.py:42\nmsgid \"Kochi\"\nmsgstr \"Kóči\"\n\n#: jp/jp_prefectures.py:43\nmsgid \"Fukuoka\"\nmsgstr \"Fukuoka\"\n\n#: jp/jp_prefectures.py:44\nmsgid \"Saga\"\nmsgstr \"Saga\"\n\n#: jp/jp_prefectures.py:45\nmsgid \"Nagasaki\"\nmsgstr \"Nagasaki\"\n\n#: jp/jp_prefectures.py:46\nmsgid \"Kumamoto\"\nmsgstr \"Kumamoto\"\n\n#: jp/jp_prefectures.py:47\nmsgid \"Oita\"\nmsgstr \"Oita\"\n\n#: jp/jp_prefectures.py:48\nmsgid \"Miyazaki\"\nmsgstr \"Mijazaki\"\n\n#: jp/jp_prefectures.py:49\nmsgid \"Kagoshima\"\nmsgstr \"Kagošima\"\n\n#: jp/jp_prefectures.py:50\nmsgid \"Okinawa\"\nmsgstr \"Okinawa\"\n\n#: kw/forms.py:27\nmsgid \"Enter a valid Kuwaiti Civil ID number\"\nmsgstr \"Zadajte platné kuvaitské civilné identifikačné číslo\"\n\n#: mk/forms.py:18\nmsgid \"\"\n\"Identity card numbers must contain either 4 to 7 digits or an uppercase \"\n\"letter and 7 digits.\"\nmsgstr \"\"\n\"Číslo občianskeho preukazu musí obsahovať buď 4 až 7 číslic alebo veľké \"\n\"písmeno a 7 číslic.\"\n\n#: mk/forms.py:57 si/forms.py:24\nmsgid \"This field should contain exactly 13 digits.\"\nmsgstr \"Toto pole musí obsahovať presne 13 číslic.\"\n\n#: mk/forms.py:58\nmsgid \"The first 7 digits of the UMCN must represent a valid past date.\"\nmsgstr \"Prvých 7 číslic UMCN musí predstavovať platný dátum minulosti.\"\n\n#: mk/forms.py:59\nmsgid \"The UMCN is not valid.\"\nmsgstr \"UMCN nie je platný.\"\n\n#: mk/mk_choices.py:10\nmsgid \"Aerodrom\"\nmsgstr \"Aerodrom\"\n\n#: mk/mk_choices.py:11\nmsgid \"Aračinovo\"\nmsgstr \"Aračinovo\"\n\n#: mk/mk_choices.py:12\nmsgid \"Berovo\"\nmsgstr \"Berovo\"\n\n#: mk/mk_choices.py:13\nmsgid \"Bitola\"\nmsgstr \"Bitola\"\n\n#: mk/mk_choices.py:14\nmsgid \"Bogdanci\"\nmsgstr \"Bogdanci\"\n\n#: mk/mk_choices.py:15\nmsgid \"Bogovinje\"\nmsgstr \"Bogovinje\"\n\n#: mk/mk_choices.py:16\nmsgid \"Bosilovo\"\nmsgstr \"Bosilovo\"\n\n#: mk/mk_choices.py:17\nmsgid \"Brvenica\"\nmsgstr \"Brvenica\"\n\n#: mk/mk_choices.py:18\nmsgid \"Butel\"\nmsgstr \"Butel\"\n\n#: mk/mk_choices.py:19\nmsgid \"Valandovo\"\nmsgstr \"Valandovo\"\n\n#: mk/mk_choices.py:20\nmsgid \"Vasilevo\"\nmsgstr \"Vasilevo\"\n\n#: mk/mk_choices.py:21\nmsgid \"Vevčani\"\nmsgstr \"Vevčani\"\n\n#: mk/mk_choices.py:22\nmsgid \"Veles\"\nmsgstr \"Veles\"\n\n#: mk/mk_choices.py:23\nmsgid \"Vinica\"\nmsgstr \"Vinica\"\n\n#: mk/mk_choices.py:24\nmsgid \"Vraneštica\"\nmsgstr \"Vraneštica\"\n\n#: mk/mk_choices.py:25\nmsgid \"Vrapčište\"\nmsgstr \"Vrapčište\"\n\n#: mk/mk_choices.py:26\nmsgid \"Gazi Baba\"\nmsgstr \"Gazi Baba\"\n\n#: mk/mk_choices.py:27\nmsgid \"Gevgelija\"\nmsgstr \"Gevgelija\"\n\n#: mk/mk_choices.py:28\nmsgid \"Gostivar\"\nmsgstr \"Gostivar\"\n\n#: mk/mk_choices.py:29\nmsgid \"Gradsko\"\nmsgstr \"Gradsko\"\n\n#: mk/mk_choices.py:30\nmsgid \"Debar\"\nmsgstr \"Debar\"\n\n#: mk/mk_choices.py:31\nmsgid \"Debarca\"\nmsgstr \"Debarca\"\n\n#: mk/mk_choices.py:32\nmsgid \"Delčevo\"\nmsgstr \"Delčevo\"\n\n#: mk/mk_choices.py:33\nmsgid \"Demir Kapija\"\nmsgstr \"Demir Kapija\"\n\n#: mk/mk_choices.py:34\nmsgid \"Demir Hisar\"\nmsgstr \"Demir Hisar\"\n\n#: mk/mk_choices.py:35\nmsgid \"Dolneni\"\nmsgstr \"Dolneni\"\n\n#: mk/mk_choices.py:36\nmsgid \"Drugovo\"\nmsgstr \"Drugovo\"\n\n#: mk/mk_choices.py:37\nmsgid \"Gjorče Petrov\"\nmsgstr \"Gjorče Petrov\"\n\n#: mk/mk_choices.py:38\nmsgid \"Želino\"\nmsgstr \"Želino\"\n\n#: mk/mk_choices.py:39\nmsgid \"Zajas\"\nmsgstr \"Zajas\"\n\n#: mk/mk_choices.py:40\nmsgid \"Zelenikovo\"\nmsgstr \"Zelenikovo\"\n\n#: mk/mk_choices.py:41\nmsgid \"Zrnovci\"\nmsgstr \"Zrnovci\"\n\n#: mk/mk_choices.py:42\nmsgid \"Ilinden\"\nmsgstr \"Ilinden\"\n\n#: mk/mk_choices.py:43\nmsgid \"Jegunovce\"\nmsgstr \"Jegunovce\"\n\n#: mk/mk_choices.py:44\nmsgid \"Kavadarci\"\nmsgstr \"Kavadarci\"\n\n#: mk/mk_choices.py:45\nmsgid \"Karbinci\"\nmsgstr \"Karbinci\"\n\n#: mk/mk_choices.py:46\nmsgid \"Karpoš\"\nmsgstr \"Karpoš\"\n\n#: mk/mk_choices.py:47\nmsgid \"Kisela Voda\"\nmsgstr \"Kisela Voda\"\n\n#: mk/mk_choices.py:48\nmsgid \"Kičevo\"\nmsgstr \"Kičevo\"\n\n#: mk/mk_choices.py:49\nmsgid \"Konče\"\nmsgstr \"Konče\"\n\n#: mk/mk_choices.py:50\nmsgid \"Koćani\"\nmsgstr \"Koćani\"\n\n#: mk/mk_choices.py:51\nmsgid \"Kratovo\"\nmsgstr \"Kratovo\"\n\n#: mk/mk_choices.py:52\nmsgid \"Kriva Palanka\"\nmsgstr \"Kriva Palanka\"\n\n#: mk/mk_choices.py:53\nmsgid \"Krivogaštani\"\nmsgstr \"Krivogaštani\"\n\n#: mk/mk_choices.py:54\nmsgid \"Kruševo\"\nmsgstr \"Kruševo\"\n\n#: mk/mk_choices.py:55\nmsgid \"Kumanovo\"\nmsgstr \"Kumanovo\"\n\n#: mk/mk_choices.py:56\nmsgid \"Lipkovo\"\nmsgstr \"Lipkovo\"\n\n#: mk/mk_choices.py:57\nmsgid \"Lozovo\"\nmsgstr \"Lozovo\"\n\n#: mk/mk_choices.py:58\nmsgid \"Mavrovo i Rostuša\"\nmsgstr \"Mavrovo a Rostuša\"\n\n#: mk/mk_choices.py:59\nmsgid \"Makedonska Kamenica\"\nmsgstr \"Makedonska Kamenica\"\n\n#: mk/mk_choices.py:60\nmsgid \"Makedonski Brod\"\nmsgstr \"Makedonski Brod\"\n\n#: mk/mk_choices.py:61\nmsgid \"Mogila\"\nmsgstr \"Mogila\"\n\n#: mk/mk_choices.py:62\nmsgid \"Negotino\"\nmsgstr \"Negotino\"\n\n#: mk/mk_choices.py:63\nmsgid \"Novaci\"\nmsgstr \"Novaci\"\n\n#: mk/mk_choices.py:64\nmsgid \"Novo Selo\"\nmsgstr \"Novo Selo\"\n\n#: mk/mk_choices.py:65\nmsgid \"Oslomej\"\nmsgstr \"Oslomej\"\n\n#: mk/mk_choices.py:66\nmsgid \"Ohrid\"\nmsgstr \"Ohrid\"\n\n#: mk/mk_choices.py:67\nmsgid \"Petrovec\"\nmsgstr \"Petrovec\"\n\n#: mk/mk_choices.py:68\nmsgid \"Pehčevo\"\nmsgstr \"Pehčevo\"\n\n#: mk/mk_choices.py:69\nmsgid \"Plasnica\"\nmsgstr \"Plasnica\"\n\n#: mk/mk_choices.py:70\nmsgid \"Prilep\"\nmsgstr \"Prilep\"\n\n#: mk/mk_choices.py:71\nmsgid \"Probištip\"\nmsgstr \"Probištip\"\n\n#: mk/mk_choices.py:72\nmsgid \"Radoviš\"\nmsgstr \"Radoviš\"\n\n#: mk/mk_choices.py:73\nmsgid \"Rankovce\"\nmsgstr \"Rankovce\"\n\n#: mk/mk_choices.py:74\nmsgid \"Resen\"\nmsgstr \"Resen\"\n\n#: mk/mk_choices.py:75\nmsgid \"Rosoman\"\nmsgstr \"Rosoman\"\n\n#: mk/mk_choices.py:76\nmsgid \"Saraj\"\nmsgstr \"Saraj\"\n\n#: mk/mk_choices.py:77\nmsgid \"Sveti Nikole\"\nmsgstr \"Sveti Nikole\"\n\n#: mk/mk_choices.py:78\nmsgid \"Sopište\"\nmsgstr \"Sopište\"\n\n#: mk/mk_choices.py:79\nmsgid \"Star Dojran\"\nmsgstr \"Star Dojran\"\n\n#: mk/mk_choices.py:80\nmsgid \"Staro Nagoričane\"\nmsgstr \"Staro Nagoričane\"\n\n#: mk/mk_choices.py:81\nmsgid \"Struga\"\nmsgstr \"Struga\"\n\n#: mk/mk_choices.py:82\nmsgid \"Strumica\"\nmsgstr \"Strumica\"\n\n#: mk/mk_choices.py:83\nmsgid \"Studeničani\"\nmsgstr \"Studeničani\"\n\n#: mk/mk_choices.py:84\nmsgid \"Tearce\"\nmsgstr \"Tearce\"\n\n#: mk/mk_choices.py:85\nmsgid \"Tetovo\"\nmsgstr \"Tetovo\"\n\n#: mk/mk_choices.py:86\nmsgid \"Centar\"\nmsgstr \"Centar\"\n\n#: mk/mk_choices.py:87\nmsgid \"Centar-Župa\"\nmsgstr \"Centar-Župa\"\n\n#: mk/mk_choices.py:88\nmsgid \"Čair\"\nmsgstr \"Čair\"\n\n#: mk/mk_choices.py:89\nmsgid \"Čaška\"\nmsgstr \"Čaška\"\n\n#: mk/mk_choices.py:90\nmsgid \"Češinovo-Obleševo\"\nmsgstr \"Češinovo-Obleševo\"\n\n#: mk/mk_choices.py:91\nmsgid \"Čučer-Sandevo\"\nmsgstr \"Čučer-Sandevo\"\n\n#: mk/mk_choices.py:92\nmsgid \"Štip\"\nmsgstr \"Štip\"\n\n#: mk/mk_choices.py:93\nmsgid \"Šuto Orizari\"\nmsgstr \"Šuto Orizari\"\n\n#: mk/models.py:11\nmsgid \"Macedonian identity card number\"\nmsgstr \"Číslo macedónskeho preukazu totožnosti\"\n\n#: mk/models.py:25\nmsgid \"A Macedonian municipality (2 character code)\"\nmsgstr \"Macedónska samospráva (2 znakový kód)\"\n\n#: mk/models.py:35\nmsgid \"Unique master citizen number (13 digits)\"\nmsgstr \"Unikátne číslo občana (13 číslic)\"\n\n#: mx/forms.py:67\nmsgid \"Enter a valid zip code in the format XXXXX.\"\nmsgstr \"Zadajte platné poštové smerovacie číslo v tvare XXXXX.\"\n\n#: mx/forms.py:110\nmsgid \"Enter a valid RFC.\"\nmsgstr \"Zadajte platné RFC.\"\n\n#: mx/forms.py:111\nmsgid \"Invalid checksum for RFC.\"\nmsgstr \"Neplatný kontrolný súčet pre RFC.\"\n\n#: mx/forms.py:191\nmsgid \"Enter a valid CURP.\"\nmsgstr \"Zadajte platné CURP.\"\n\n#: mx/forms.py:192\nmsgid \"Invalid checksum for CURP.\"\nmsgstr \"Neplatný kontrolný súčet pre CURP.\"\n\n#: mx/models.py:14\nmsgid \"Mexico state (three uppercase letters)\"\nmsgstr \"Štát Mexika (tri veľké písmená)\"\n\n#: mx/models.py:27\nmsgid \"Mexico zip code\"\nmsgstr \"Mexické PSČ\"\n\n#: mx/models.py:44\nmsgid \"Mexican RFC\"\nmsgstr \"Mexické RFC\"\n\n#: mx/models.py:61\nmsgid \"Mexican CURP\"\nmsgstr \"Mexické CURP\"\n\n#: mx/mx_states.py:14\nmsgid \"Aguascalientes\"\nmsgstr \"Aguascalientes\"\n\n#: mx/mx_states.py:15\nmsgid \"Baja California\"\nmsgstr \"Baja California\"\n\n#: mx/mx_states.py:16\nmsgid \"Baja California Sur\"\nmsgstr \"Baja California Sur\"\n\n#: mx/mx_states.py:17\nmsgid \"Campeche\"\nmsgstr \"Campeche\"\n\n#: mx/mx_states.py:18\nmsgid \"Chihuahua\"\nmsgstr \"Chihuahua\"\n\n#: mx/mx_states.py:19\nmsgid \"Chiapas\"\nmsgstr \"Chiapas\"\n\n#: mx/mx_states.py:20\nmsgid \"Coahuila\"\nmsgstr \"Coahuila\"\n\n#: mx/mx_states.py:21\nmsgid \"Colima\"\nmsgstr \"Colima\"\n\n#: mx/mx_states.py:22\nmsgid \"Distrito Federal\"\nmsgstr \"Distrito Federal\"\n\n#: mx/mx_states.py:23\nmsgid \"Durango\"\nmsgstr \"Durango\"\n\n#: mx/mx_states.py:24\nmsgid \"Guerrero\"\nmsgstr \"Guerrero\"\n\n#: mx/mx_states.py:25\nmsgid \"Guanajuato\"\nmsgstr \"Guanajuato\"\n\n#: mx/mx_states.py:26\nmsgid \"Hidalgo\"\nmsgstr \"Hidalgo\"\n\n#: mx/mx_states.py:27\nmsgid \"Jalisco\"\nmsgstr \"Jalisco\"\n\n#: mx/mx_states.py:28\nmsgid \"Estado de México\"\nmsgstr \"Estado de México\"\n\n#: mx/mx_states.py:29\nmsgid \"Michoacán\"\nmsgstr \"Michoacán\"\n\n#: mx/mx_states.py:30\nmsgid \"Morelos\"\nmsgstr \"Morelos\"\n\n#: mx/mx_states.py:31\nmsgid \"Nayarit\"\nmsgstr \"Nayarit\"\n\n#: mx/mx_states.py:32\nmsgid \"Nuevo León\"\nmsgstr \"Nuevo León\"\n\n#: mx/mx_states.py:33\nmsgid \"Oaxaca\"\nmsgstr \"Oaxaca\"\n\n#: mx/mx_states.py:34\nmsgid \"Puebla\"\nmsgstr \"Puebla\"\n\n#: mx/mx_states.py:35\nmsgid \"Querétaro\"\nmsgstr \"Querétaro\"\n\n#: mx/mx_states.py:36\nmsgid \"Quintana Roo\"\nmsgstr \"Quintana Róo\"\n\n#: mx/mx_states.py:37\nmsgid \"Sinaloa\"\nmsgstr \"Sinaloa\"\n\n#: mx/mx_states.py:38\nmsgid \"San Luis Potosí\"\nmsgstr \"San Luis Potosí\"\n\n#: mx/mx_states.py:39\nmsgid \"Sonora\"\nmsgstr \"Sonora\"\n\n#: mx/mx_states.py:40\nmsgid \"Tabasco\"\nmsgstr \"Tabasco\"\n\n#: mx/mx_states.py:41\nmsgid \"Tamaulipas\"\nmsgstr \"Tamaulipas\"\n\n#: mx/mx_states.py:42\nmsgid \"Tlaxcala\"\nmsgstr \"Tlaxcala\"\n\n#: mx/mx_states.py:43\nmsgid \"Veracruz\"\nmsgstr \"Veracruz\"\n\n#: mx/mx_states.py:44\nmsgid \"Yucatán\"\nmsgstr \"Yucatán\"\n\n#: mx/mx_states.py:45\nmsgid \"Zacatecas\"\nmsgstr \"Zacatecas\"\n\n#: nl/forms.py:26\nmsgid \"Enter a valid postal code\"\nmsgstr \"Zadajte platné poštové smerovacie číslo\"\n\n#: nl/forms.py:82\nmsgid \"Enter a valid SoFi number\"\nmsgstr \"Zadajte platné SoFi číslo\"\n\n#: nl/nl_provinces.py:4\nmsgid \"Drenthe\"\nmsgstr \"Drente\"\n\n#: nl/nl_provinces.py:5\nmsgid \"Flevoland\"\nmsgstr \"Flavónsko\"\n\n#: nl/nl_provinces.py:6\nmsgid \"Friesland\"\nmsgstr \"Frízsko\"\n\n#: nl/nl_provinces.py:7\nmsgid \"Gelderland\"\nmsgstr \"Gelderland\"\n\n#: nl/nl_provinces.py:8\nmsgid \"Groningen\"\nmsgstr \"Groningen\"\n\n#: nl/nl_provinces.py:10\nmsgid \"Noord-Brabant\"\nmsgstr \"Severné Brabantsko\"\n\n#: nl/nl_provinces.py:11\nmsgid \"Noord-Holland\"\nmsgstr \"Severný Holland\"\n\n#: nl/nl_provinces.py:12\nmsgid \"Overijssel\"\nmsgstr \"Overijssel\"\n\n#: nl/nl_provinces.py:13\nmsgid \"Utrecht\"\nmsgstr \"Utrecht\"\n\n#: nl/nl_provinces.py:14\nmsgid \"Zeeland\"\nmsgstr \"Zéland\"\n\n#: nl/nl_provinces.py:15\nmsgid \"Zuid-Holland\"\nmsgstr \"Južný Holland\"\n\n#: no/forms.py:39\nmsgid \"Enter a valid Norwegian social security number.\"\nmsgstr \"Vložte platné nórske číslo sociálneho poistenia.\"\n\n#: pe/forms.py:28\nmsgid \"This field requires 8 digits.\"\nmsgstr \"Toto pole vyžaduje 8 číslic.\"\n\n#: pe/forms.py:56\nmsgid \"This field requires 11 digits.\"\nmsgstr \"Toto pole vyžaduje 11 číslic.\"\n\n#: pl/forms.py:42\nmsgid \"National Identification Number consists of 11 digits.\"\nmsgstr \"Národné identifikačné číslo sa skladá z 11 číslic.\"\n\n#: pl/forms.py:43\nmsgid \"Wrong checksum for the National Identification Number.\"\nmsgstr \"Nesprávny kontrolný súčet pre národné identifikačné číslo.\"\n\n#: pl/forms.py:79\nmsgid \"National ID Card Number consists of 3 letters and 6 digits.\"\nmsgstr \"Číslo občianskeho preukazu sa skladá z 3 písmen a 6 číslic.\"\n\n#: pl/forms.py:80\nmsgid \"Wrong checksum for the National ID Card Number.\"\nmsgstr \"Zlý kontrolný súčet pre číslo občianskeho preukazu.\"\n\n#: pl/forms.py:131\nmsgid \"\"\n\"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or \"\n\"XXXXXXXXXX.\"\nmsgstr \"\"\n\"Zadajte daňové číslo (NIP) v tvare XXX-XXX-XX-XX, XXX-XX-XX-XXX alebo \"\n\"XXXXXXXXXX.\"\n\n#: pl/forms.py:132\nmsgid \"Wrong checksum for the Tax Number (NIP).\"\nmsgstr \"Nesprávny kontrolný súčet pre daňové číslo (NIP).\"\n\n#: pl/forms.py:171\nmsgid \"National Business Register Number (REGON) consists of 9 or 14 digits.\"\nmsgstr \"\"\n\"Číslo národného obchodného registra (REGON) sa skladá z 9 alebo zo 14 číslic.\"\n\n#: pl/forms.py:172\nmsgid \"Wrong checksum for the National Business Register Number (REGON).\"\nmsgstr \"\"\n\"Nesprávny kontrolný súčet pre číslo národného obchodného registra (REGON).\"\n\n#: pl/forms.py:212\nmsgid \"Enter a postal code in the format XX-XXX.\"\nmsgstr \"Vložte poštové smerovacie číslo v tvare XX-XXX.\"\n\n#: pl/pl_voivodeships.py:8\nmsgid \"Lower Silesia\"\nmsgstr \"Dolnosliezske vojvodstvo\"\n\n#: pl/pl_voivodeships.py:9\nmsgid \"Kuyavia-Pomerania\"\nmsgstr \"Kujavsko-pomoranské vojvodstvo\"\n\n#: pl/pl_voivodeships.py:10\nmsgid \"Lublin\"\nmsgstr \"Lubelské vojvodstvo\"\n\n#: pl/pl_voivodeships.py:11\nmsgid \"Lubusz\"\nmsgstr \"Lubuské vojvodstvo\"\n\n#: pl/pl_voivodeships.py:12\nmsgid \"Lodz\"\nmsgstr \"Lodžské vojvodstvo\"\n\n#: pl/pl_voivodeships.py:13\nmsgid \"Lesser Poland\"\nmsgstr \"Malopoľské vojvodstvo\"\n\n#: pl/pl_voivodeships.py:14\nmsgid \"Masovia\"\nmsgstr \"Mazovské vojvodstvo\"\n\n#: pl/pl_voivodeships.py:15\nmsgid \"Opole\"\nmsgstr \"Opolské vojvodstvo\"\n\n#: pl/pl_voivodeships.py:16\nmsgid \"Subcarpatia\"\nmsgstr \"Podkarpatské vojvodstvo\"\n\n#: pl/pl_voivodeships.py:17\nmsgid \"Podlasie\"\nmsgstr \"Podleské vojvodstvo\"\n\n#: pl/pl_voivodeships.py:18\nmsgid \"Pomerania\"\nmsgstr \"Pomoranské vojvodstvo\"\n\n#: pl/pl_voivodeships.py:19\nmsgid \"Silesia\"\nmsgstr \"Sliezske vojvodstvo\"\n\n#: pl/pl_voivodeships.py:20\nmsgid \"Swietokrzyskie\"\nmsgstr \"Svätokrížske vojvodstvo\"\n\n#: pl/pl_voivodeships.py:21\nmsgid \"Warmia-Masuria\"\nmsgstr \"Varmsko-mazurské vojvodstvo\"\n\n#: pl/pl_voivodeships.py:22\nmsgid \"Greater Poland\"\nmsgstr \"Veľkopoľské vojvodstvo\"\n\n#: pl/pl_voivodeships.py:23\nmsgid \"West Pomerania\"\nmsgstr \"Západopomoranské vojvodstvo\"\n\n#: pt/forms.py:19\nmsgid \"Enter a zip code in the format XXXX-XXX.\"\nmsgstr \"Zadajte poštové smerovacie číslo v tvare  XXXX-XXX.\"\n\n#: pt/forms.py:39\nmsgid \"Phone numbers must have 9 digits, or start by + or 00.\"\nmsgstr \"Telefónne čísla musia obsahovať 9 číslic a začína znakom + alebo 00.\"\n\n#: ro/forms.py:22\nmsgid \"Enter a valid CIF.\"\nmsgstr \"Zadajte platné CIF.\"\n\n#: ro/forms.py:59\nmsgid \"Enter a valid CNP.\"\nmsgstr \"Zadajte platné CNP.\"\n\n#: ro/forms.py:143\nmsgid \"Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format\"\nmsgstr \"Zadajte platné IBAN vo formáte ROXX-XXXX-XXXX-XXXX-XXXX-XXXX\"\n\n#: ro/forms.py:175\nmsgid \"Phone numbers must be in XXXX-XXXXXX format.\"\nmsgstr \"Telefónne čísla musia mať formát XXXX-XXXXXX.\"\n\n#: ro/forms.py:200\nmsgid \"Enter a valid postal code in the format XXXXXX\"\nmsgstr \"Zadajte platné poštové smerovacie číslo v tvare XXXXXX\"\n\n#: ru/forms.py:37\nmsgid \"Enter a postal code in the format XXXXXX.\"\nmsgstr \"Zadajte poštové smerovacie číslo v tvare XXXXXX.\"\n\n#: ru/forms.py:50\nmsgid \"Enter a passport number in the format XXXX XXXXXX.\"\nmsgstr \"Zadajte číslo pasu v tvare XXXX XXXXXX.\"\n\n#: ru/forms.py:63\nmsgid \"Enter a passport number in the format XX XXXXXXX.\"\nmsgstr \"Zadajte číslo pasu v tvare XX XXXXXXX.\"\n\n#: ru/ru_regions.py:10\nmsgid \"Central Federal County\"\nmsgstr \"Centrálny federálny okruh\"\n\n#: ru/ru_regions.py:11\nmsgid \"South Federal County\"\nmsgstr \"Južný federálny okruh\"\n\n#: ru/ru_regions.py:12\nmsgid \"North-West Federal County\"\nmsgstr \"Severozápadný federálny okruh\"\n\n#: ru/ru_regions.py:13\nmsgid \"Far-East Federal County\"\nmsgstr \"Ďalekovýchodný federálny okruh\"\n\n#: ru/ru_regions.py:14\nmsgid \"Siberian Federal County\"\nmsgstr \"Sibírsky federálny okruh\"\n\n#: ru/ru_regions.py:15\nmsgid \"Ural Federal County\"\nmsgstr \"Uralský federálny okruh\"\n\n#: ru/ru_regions.py:16\nmsgid \"Privolzhsky Federal County\"\nmsgstr \"Povolžský federálny okruh\"\n\n#: ru/ru_regions.py:17\nmsgid \"North-Caucasian Federal County\"\nmsgstr \"Severokaukazský federálny okruh\"\n\n#: ru/ru_regions.py:21\nmsgid \"Moskva\"\nmsgstr \"Moskva\"\n\n#: ru/ru_regions.py:22\nmsgid \"Saint-Peterburg\"\nmsgstr \"Petrohrad\"\n\n#: ru/ru_regions.py:23\nmsgid \"Moskovskaya oblast'\"\nmsgstr \"Moskovská oblasť\"\n\n#: ru/ru_regions.py:24\nmsgid \"Adygeya, Respublika\"\nmsgstr \"Adygejská republika\"\n\n#: ru/ru_regions.py:25\nmsgid \"Bashkortostan, Respublika\"\nmsgstr \"Baškirská republika\"\n\n#: ru/ru_regions.py:26\nmsgid \"Buryatia, Respublika\"\nmsgstr \"Buriatska republika\"\n\n#: ru/ru_regions.py:27\nmsgid \"Altay, Respublika\"\nmsgstr \"Altajská republika\"\n\n#: ru/ru_regions.py:28\nmsgid \"Dagestan, Respublika\"\nmsgstr \"Dagestanská republika\"\n\n#: ru/ru_regions.py:29\nmsgid \"Ingushskaya Respublika\"\nmsgstr \"Ingušská republika\"\n\n#: ru/ru_regions.py:30\nmsgid \"Kabardino-Balkarskaya Respublika\"\nmsgstr \"Kabardsko-balkardská republika\"\n\n#: ru/ru_regions.py:31\nmsgid \"Kalmykia, Respublika\"\nmsgstr \"Kalmycká republika\"\n\n#: ru/ru_regions.py:32\nmsgid \"Karachaevo-Cherkesskaya Respublika\"\nmsgstr \"Karačajsko-čerkeská republika\"\n\n#: ru/ru_regions.py:33\nmsgid \"Karelia, Respublika\"\nmsgstr \"Karelská republika\"\n\n#: ru/ru_regions.py:34\nmsgid \"Komi, Respublika\"\nmsgstr \"Komijská republika\"\n\n#: ru/ru_regions.py:35\nmsgid \"Mariy Ehl, Respublika\"\nmsgstr \"Marijská republika\"\n\n#: ru/ru_regions.py:36\nmsgid \"Mordovia, Respublika\"\nmsgstr \"Mordvianska republika\"\n\n#: ru/ru_regions.py:37\nmsgid \"Sakha, Respublika (Yakutiya)\"\nmsgstr \"Jakutská republika (Sacha)\"\n\n#: ru/ru_regions.py:38\nmsgid \"Severnaya Osetia, Respublika (Alania)\"\nmsgstr \"Severoosetská republika (Alánsko)\"\n\n#: ru/ru_regions.py:39\nmsgid \"Tatarstan, Respublika\"\nmsgstr \"Tatárska republika\"\n\n#: ru/ru_regions.py:40\nmsgid \"Tyva, Respublika (Tuva)\"\nmsgstr \"Tuvianska republika (Tuvia)\"\n\n#: ru/ru_regions.py:41\nmsgid \"Udmurtskaya Respublika\"\nmsgstr \"Udmurtská republika\"\n\n#: ru/ru_regions.py:42\nmsgid \"Khakassiya, Respublika\"\nmsgstr \"Karačajsko-čerkeská republika\"\n\n#: ru/ru_regions.py:43\nmsgid \"Chechenskaya Respublika\"\nmsgstr \"Čečenská republika\"\n\n#: ru/ru_regions.py:44\nmsgid \"Chuvashskaya Respublika\"\nmsgstr \"Čuvašská republika\"\n\n#: ru/ru_regions.py:45\nmsgid \"Altayskiy Kray\"\nmsgstr \"Altajský kraj\"\n\n#: ru/ru_regions.py:46\nmsgid \"Zabaykalskiy Kray\"\nmsgstr \"Zabajkalský kraj\"\n\n#: ru/ru_regions.py:47\nmsgid \"Kamchatskiy Kray\"\nmsgstr \"Kamčatský kraj\"\n\n#: ru/ru_regions.py:48\nmsgid \"Krasnodarskiy Kray\"\nmsgstr \"Krasnodarský kraj\"\n\n#: ru/ru_regions.py:49\nmsgid \"Krasnoyarskiy Kray\"\nmsgstr \"Krasnojarský kraj\"\n\n#: ru/ru_regions.py:50\nmsgid \"Permskiy Kray\"\nmsgstr \"Permský kraj\"\n\n#: ru/ru_regions.py:51\nmsgid \"Primorskiy Kray\"\nmsgstr \"Prímorský kraj\"\n\n#: ru/ru_regions.py:52\nmsgid \"Stavropol'siyy Kray\"\nmsgstr \"Stavropoľský kraj\"\n\n#: ru/ru_regions.py:53\nmsgid \"Khabarovskiy Kray\"\nmsgstr \"Chabarovský kraj\"\n\n#: ru/ru_regions.py:54\nmsgid \"Amurskaya oblast'\"\nmsgstr \"Amurská oblasť\"\n\n#: ru/ru_regions.py:55\nmsgid \"Arkhangel'skaya oblast'\"\nmsgstr \"Archangeľská oblasť\"\n\n#: ru/ru_regions.py:56\nmsgid \"Astrakhanskaya oblast'\"\nmsgstr \"Astrachánska oblasť\"\n\n#: ru/ru_regions.py:57\nmsgid \"Belgorodskaya oblast'\"\nmsgstr \"Belgorodská oblasť\"\n\n#: ru/ru_regions.py:58\nmsgid \"Bryanskaya oblast'\"\nmsgstr \"Brianska oblasť\"\n\n#: ru/ru_regions.py:59\nmsgid \"Vladimirskaya oblast'\"\nmsgstr \"Vladimírska oblasť\"\n\n#: ru/ru_regions.py:60\nmsgid \"Volgogradskaya oblast'\"\nmsgstr \"Volgogradská oblasť\"\n\n#: ru/ru_regions.py:61\nmsgid \"Vologodskaya oblast'\"\nmsgstr \"Vologdská oblasť\"\n\n#: ru/ru_regions.py:62\nmsgid \"Voronezhskaya oblast'\"\nmsgstr \"Voronežská oblasť\"\n\n#: ru/ru_regions.py:63\nmsgid \"Ivanovskaya oblast'\"\nmsgstr \"Ivanovská oblasť\"\n\n#: ru/ru_regions.py:64\nmsgid \"Irkutskaya oblast'\"\nmsgstr \"Irkutská oblasť\"\n\n#: ru/ru_regions.py:65\nmsgid \"Kaliningradskaya oblast'\"\nmsgstr \"Kaliningradská oblasť\"\n\n#: ru/ru_regions.py:66\nmsgid \"Kaluzhskaya oblast'\"\nmsgstr \"Kalužská oblasť\"\n\n#: ru/ru_regions.py:67\nmsgid \"Kemerovskaya oblast'\"\nmsgstr \"Kemerovská oblasť\"\n\n#: ru/ru_regions.py:68\nmsgid \"Kirovskaya oblast'\"\nmsgstr \"Kirovská oblasť\"\n\n#: ru/ru_regions.py:69\nmsgid \"Kostromskaya oblast'\"\nmsgstr \"Kostromská oblasť\"\n\n#: ru/ru_regions.py:70\nmsgid \"Kurganskaya oblast'\"\nmsgstr \"Kurganská oblasť\"\n\n#: ru/ru_regions.py:71\nmsgid \"Kurskaya oblast'\"\nmsgstr \"Kurská oblasť\"\n\n#: ru/ru_regions.py:72\nmsgid \"Leningradskaya oblast'\"\nmsgstr \"Leningradská oblasť\"\n\n#: ru/ru_regions.py:73\nmsgid \"Lipeckaya oblast'\"\nmsgstr \"Lipecká oblasť\"\n\n#: ru/ru_regions.py:74\nmsgid \"Magadanskaya oblast'\"\nmsgstr \"Magadanská oblasť\"\n\n#: ru/ru_regions.py:75\nmsgid \"Murmanskaya oblast'\"\nmsgstr \"Murmanská oblasť\"\n\n#: ru/ru_regions.py:76\nmsgid \"Nizhegorodskaja oblast'\"\nmsgstr \"Nižnonovgorodská oblasť\"\n\n#: ru/ru_regions.py:77\nmsgid \"Novgorodskaya oblast'\"\nmsgstr \"Novgorodská oblasť\"\n\n#: ru/ru_regions.py:78\nmsgid \"Novosibirskaya oblast'\"\nmsgstr \"Novosibírska oblasť\"\n\n#: ru/ru_regions.py:79\nmsgid \"Omskaya oblast'\"\nmsgstr \"Omská oblasť\"\n\n#: ru/ru_regions.py:80\nmsgid \"Orenburgskaya oblast'\"\nmsgstr \"Orenburská oblasť\"\n\n#: ru/ru_regions.py:81\nmsgid \"Orlovskaya oblast'\"\nmsgstr \"Orlovská oblasť\"\n\n#: ru/ru_regions.py:82\nmsgid \"Penzenskaya oblast'\"\nmsgstr \"Penzianska oblasť\"\n\n#: ru/ru_regions.py:83\nmsgid \"Pskovskaya oblast'\"\nmsgstr \"Pskovská oblasť\"\n\n#: ru/ru_regions.py:84\nmsgid \"Rostovskaya oblast'\"\nmsgstr \"Rostovská oblasť\"\n\n#: ru/ru_regions.py:85\nmsgid \"Rjazanskaya oblast'\"\nmsgstr \"Riazanská oblasť\"\n\n#: ru/ru_regions.py:86\nmsgid \"Samarskaya oblast'\"\nmsgstr \"Samarská oblasť\"\n\n#: ru/ru_regions.py:87\nmsgid \"Saratovskaya oblast'\"\nmsgstr \"Saratovská oblasť\"\n\n#: ru/ru_regions.py:88\nmsgid \"Sakhalinskaya oblast'\"\nmsgstr \"Sachalinská oblasť\"\n\n#: ru/ru_regions.py:89\nmsgid \"Sverdlovskaya oblast'\"\nmsgstr \"Sverdlovská oblasť\"\n\n#: ru/ru_regions.py:90\nmsgid \"Smolenskaya oblast'\"\nmsgstr \"Smolenská oblasť\"\n\n#: ru/ru_regions.py:91\nmsgid \"Tambovskaya oblast'\"\nmsgstr \"Tambovská oblasť\"\n\n#: ru/ru_regions.py:92\nmsgid \"Tverskaya oblast'\"\nmsgstr \"Tverská oblasť\"\n\n#: ru/ru_regions.py:93\nmsgid \"Tomskaya oblast'\"\nmsgstr \"Tomská oblasť\"\n\n#: ru/ru_regions.py:94\nmsgid \"Tul'skaya oblast'\"\nmsgstr \"Tulská oblasť\"\n\n#: ru/ru_regions.py:95\nmsgid \"Tyumenskaya oblast'\"\nmsgstr \"Ťumenská oblasť\"\n\n#: ru/ru_regions.py:96\nmsgid \"Ul'ianovskaya oblast'\"\nmsgstr \"Ulianovská oblasť\"\n\n#: ru/ru_regions.py:97\nmsgid \"Chelyabinskaya oblast'\"\nmsgstr \"Čeľabinská oblasť\"\n\n#: ru/ru_regions.py:98\nmsgid \"Yaroslavskaya oblast'\"\nmsgstr \"Jaroslavlianska oblasť\"\n\n#: ru/ru_regions.py:99\nmsgid \"Evreyskaya avtonomnaja oblast'\"\nmsgstr \"Židovská autonómna oblasť\"\n\n#: ru/ru_regions.py:100\nmsgid \"Neneckiy autonomnyy okrug\"\nmsgstr \"Nenecký autonómny okruh\"\n\n#: ru/ru_regions.py:101\nmsgid \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\nmsgstr \"Chantyjsko-mansijský autonómny okruh \"\n\n#: ru/ru_regions.py:102\nmsgid \"Chukotskiy avtonomnyy okrug\"\nmsgstr \"Čukotský autonómny okruh\"\n\n#: ru/ru_regions.py:103\nmsgid \"Yamalo-Neneckiy avtonomnyy okrug\"\nmsgstr \"Jamalskonenecký autonómny okruh\"\n\n#: se/forms.py:54\nmsgid \"Enter a valid Swedish organisation number.\"\nmsgstr \"Zadajte platné švédske číslo organizácie.\"\n\n#: se/forms.py:111\nmsgid \"Enter a valid Swedish personal identity number.\"\nmsgstr \"Zadajte platné švédske osobné identifikačné číslo.\"\n\n#: se/forms.py:112\nmsgid \"Co-ordination numbers are not allowed.\"\nmsgstr \"Koordinačné čísla nie sú povolené.\"\n\n#: se/forms.py:154\nmsgid \"Enter a Swedish postal code in the format XXXXX.\"\nmsgstr \"Zadajte švédske poštové smerovacie číslo v tvare XXXXX.\"\n\n#: se/se_counties.py:16\nmsgid \"Stockholm\"\nmsgstr \"Stockholm\"\n\n#: se/se_counties.py:17\nmsgid \"Västerbotten\"\nmsgstr \"Västerbotten\"\n\n#: se/se_counties.py:18\nmsgid \"Norrbotten\"\nmsgstr \"Norrbotten\"\n\n#: se/se_counties.py:19\nmsgid \"Uppsala\"\nmsgstr \"Uppsala\"\n\n#: se/se_counties.py:20\nmsgid \"Södermanland\"\nmsgstr \"Södermanland\"\n\n#: se/se_counties.py:21\nmsgid \"Östergötland\"\nmsgstr \"Östergötland\"\n\n#: se/se_counties.py:22\nmsgid \"Jönköping\"\nmsgstr \"Jönköping\"\n\n#: se/se_counties.py:23\nmsgid \"Kronoberg\"\nmsgstr \"Kronoberg\"\n\n#: se/se_counties.py:24\nmsgid \"Kalmar\"\nmsgstr \"Kalmar\"\n\n#: se/se_counties.py:25\nmsgid \"Gotland\"\nmsgstr \"Gotland\"\n\n#: se/se_counties.py:26\nmsgid \"Blekinge\"\nmsgstr \"Blekinge\"\n\n#: se/se_counties.py:27\nmsgid \"Skåne\"\nmsgstr \"Skåne\"\n\n#: se/se_counties.py:28\nmsgid \"Halland\"\nmsgstr \"Halland\"\n\n#: se/se_counties.py:29\nmsgid \"Västra Götaland\"\nmsgstr \"Västra Götaland\"\n\n#: se/se_counties.py:30\nmsgid \"Värmland\"\nmsgstr \"Värmland\"\n\n#: se/se_counties.py:31\nmsgid \"Örebro\"\nmsgstr \"Örebro\"\n\n#: se/se_counties.py:32\nmsgid \"Västmanland\"\nmsgstr \"Västmanland\"\n\n#: se/se_counties.py:33\nmsgid \"Dalarna\"\nmsgstr \"Dalarna\"\n\n#: se/se_counties.py:34\nmsgid \"Gävleborg\"\nmsgstr \"Gävleborg\"\n\n#: se/se_counties.py:35\nmsgid \"Västernorrland\"\nmsgstr \"Västernorrland\"\n\n#: se/se_counties.py:36\nmsgid \"Jämtland\"\nmsgstr \"Jämtland\"\n\n#: si/forms.py:25\nmsgid \"The first 7 digits of the EMSO must represent a valid past date.\"\nmsgstr \"Prvých 7 číslic EMSO musí predstavovať platný dátum minulosti.\"\n\n#: si/forms.py:26\nmsgid \"The EMSO is not valid.\"\nmsgstr \"EMSO nie je platný.\"\n\n#: si/forms.py:86\nmsgid \"Enter a valid tax number in form SIXXXXXXXX\"\nmsgstr \"Zadajte platné daňové identifikačné číslo v tvare SIXXXXXXXX\"\n\n#: si/forms.py:151\nmsgid \"Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.\"\nmsgstr \"Zadajte telefónne číslo v tvare +386XXXXXXXX alebo 0XXXXXXXX.\"\n\n#: sk/sk_districts.py:8\nmsgid \"Banska Bystrica\"\nmsgstr \"Banská Bystrica\"\n\n#: sk/sk_districts.py:9\nmsgid \"Banska Stiavnica\"\nmsgstr \"Banská Štiavnica\"\n\n#: sk/sk_districts.py:10\nmsgid \"Bardejov\"\nmsgstr \"Bardejov\"\n\n#: sk/sk_districts.py:11\nmsgid \"Banovce nad Bebravou\"\nmsgstr \"Bánovce nad Bebravou\"\n\n#: sk/sk_districts.py:12\nmsgid \"Brezno\"\nmsgstr \"Brezno\"\n\n#: sk/sk_districts.py:13\nmsgid \"Bratislava I\"\nmsgstr \"Bratislava I\"\n\n#: sk/sk_districts.py:14\nmsgid \"Bratislava II\"\nmsgstr \"Bratislava II\"\n\n#: sk/sk_districts.py:15\nmsgid \"Bratislava III\"\nmsgstr \"Bratislava III\"\n\n#: sk/sk_districts.py:16\nmsgid \"Bratislava IV\"\nmsgstr \"Bratislava IV\"\n\n#: sk/sk_districts.py:17\nmsgid \"Bratislava V\"\nmsgstr \"Bratislava V\"\n\n#: sk/sk_districts.py:18\nmsgid \"Bytca\"\nmsgstr \"Bytča\"\n\n#: sk/sk_districts.py:19\nmsgid \"Cadca\"\nmsgstr \"Čadca\"\n\n#: sk/sk_districts.py:20\nmsgid \"Detva\"\nmsgstr \"Detva\"\n\n#: sk/sk_districts.py:21\nmsgid \"Dolny Kubin\"\nmsgstr \"Dolný Kubín\"\n\n#: sk/sk_districts.py:22\nmsgid \"Dunajska Streda\"\nmsgstr \"Dunajská Streda\"\n\n#: sk/sk_districts.py:23\nmsgid \"Galanta\"\nmsgstr \"Galanta\"\n\n#: sk/sk_districts.py:24\nmsgid \"Gelnica\"\nmsgstr \"Gelnica\"\n\n#: sk/sk_districts.py:25\nmsgid \"Hlohovec\"\nmsgstr \"Hlohovec\"\n\n#: sk/sk_districts.py:26\nmsgid \"Humenne\"\nmsgstr \"Humenné\"\n\n#: sk/sk_districts.py:27\nmsgid \"Ilava\"\nmsgstr \"Ilava\"\n\n#: sk/sk_districts.py:28\nmsgid \"Kezmarok\"\nmsgstr \"Kežmarok\"\n\n#: sk/sk_districts.py:29\nmsgid \"Komarno\"\nmsgstr \"Komárno\"\n\n#: sk/sk_districts.py:30\nmsgid \"Kosice I\"\nmsgstr \"Košice I\"\n\n#: sk/sk_districts.py:31\nmsgid \"Kosice II\"\nmsgstr \"Košice II\"\n\n#: sk/sk_districts.py:32\nmsgid \"Kosice III\"\nmsgstr \"Košice III\"\n\n#: sk/sk_districts.py:33\nmsgid \"Kosice IV\"\nmsgstr \"Košice IV\"\n\n#: sk/sk_districts.py:34\nmsgid \"Kosice - okolie\"\nmsgstr \"Košice - okolie\"\n\n#: sk/sk_districts.py:35\nmsgid \"Krupina\"\nmsgstr \"Krupina\"\n\n#: sk/sk_districts.py:36\nmsgid \"Kysucke Nove Mesto\"\nmsgstr \"Kysucké Nové Mesto\"\n\n#: sk/sk_districts.py:37\nmsgid \"Levice\"\nmsgstr \"Levice\"\n\n#: sk/sk_districts.py:38\nmsgid \"Levoca\"\nmsgstr \"Levoča\"\n\n#: sk/sk_districts.py:39\nmsgid \"Liptovsky Mikulas\"\nmsgstr \"Liptovský Mikuláš\"\n\n#: sk/sk_districts.py:40\nmsgid \"Lucenec\"\nmsgstr \"Lučenec\"\n\n#: sk/sk_districts.py:41\nmsgid \"Malacky\"\nmsgstr \"Malacky\"\n\n#: sk/sk_districts.py:42\nmsgid \"Martin\"\nmsgstr \"Martin\"\n\n#: sk/sk_districts.py:43\nmsgid \"Medzilaborce\"\nmsgstr \"Medzilaborce\"\n\n#: sk/sk_districts.py:44\nmsgid \"Michalovce\"\nmsgstr \"Michalovce\"\n\n#: sk/sk_districts.py:45\nmsgid \"Myjava\"\nmsgstr \"Myjava\"\n\n#: sk/sk_districts.py:46\nmsgid \"Namestovo\"\nmsgstr \"Námestovo\"\n\n#: sk/sk_districts.py:47\nmsgid \"Nitra\"\nmsgstr \"Nitra\"\n\n#: sk/sk_districts.py:48\nmsgid \"Nove Mesto nad Vahom\"\nmsgstr \"Nové Mesto nad Váhom\"\n\n#: sk/sk_districts.py:49\nmsgid \"Nove Zamky\"\nmsgstr \"Nové Zámky\"\n\n#: sk/sk_districts.py:50\nmsgid \"Partizanske\"\nmsgstr \"Partizánske\"\n\n#: sk/sk_districts.py:51\nmsgid \"Pezinok\"\nmsgstr \"Pezinok\"\n\n#: sk/sk_districts.py:52\nmsgid \"Piestany\"\nmsgstr \"Piešťany\"\n\n#: sk/sk_districts.py:53\nmsgid \"Poltar\"\nmsgstr \"Poltár\"\n\n#: sk/sk_districts.py:54\nmsgid \"Poprad\"\nmsgstr \"Poprad\"\n\n#: sk/sk_districts.py:55\nmsgid \"Povazska Bystrica\"\nmsgstr \"Považská Bystrica\"\n\n#: sk/sk_districts.py:56\nmsgid \"Presov\"\nmsgstr \"Prešov\"\n\n#: sk/sk_districts.py:57\nmsgid \"Prievidza\"\nmsgstr \"Prievidza\"\n\n#: sk/sk_districts.py:58\nmsgid \"Puchov\"\nmsgstr \"Púchov\"\n\n#: sk/sk_districts.py:59\nmsgid \"Revuca\"\nmsgstr \"Revúca\"\n\n#: sk/sk_districts.py:60\nmsgid \"Rimavska Sobota\"\nmsgstr \"Rimavská Sobota\"\n\n#: sk/sk_districts.py:61\nmsgid \"Roznava\"\nmsgstr \"Rožňava\"\n\n#: sk/sk_districts.py:62\nmsgid \"Ruzomberok\"\nmsgstr \"Ružomberok\"\n\n#: sk/sk_districts.py:63\nmsgid \"Sabinov\"\nmsgstr \"Sabinov\"\n\n#: sk/sk_districts.py:64\nmsgid \"Senec\"\nmsgstr \"Senec\"\n\n#: sk/sk_districts.py:65\nmsgid \"Senica\"\nmsgstr \"Senica\"\n\n#: sk/sk_districts.py:66\nmsgid \"Skalica\"\nmsgstr \"Skalica\"\n\n#: sk/sk_districts.py:67\nmsgid \"Snina\"\nmsgstr \"Snina\"\n\n#: sk/sk_districts.py:68\nmsgid \"Sobrance\"\nmsgstr \"Sobrance\"\n\n#: sk/sk_districts.py:69\nmsgid \"Spisska Nova Ves\"\nmsgstr \"Spišská Nová Ves\"\n\n#: sk/sk_districts.py:70\nmsgid \"Stara Lubovna\"\nmsgstr \"Stará Ľubovňa\"\n\n#: sk/sk_districts.py:71\nmsgid \"Stropkov\"\nmsgstr \"Stropkov\"\n\n#: sk/sk_districts.py:72\nmsgid \"Svidnik\"\nmsgstr \"Svidník\"\n\n#: sk/sk_districts.py:73\nmsgid \"Sala\"\nmsgstr \"Šaľa\"\n\n#: sk/sk_districts.py:74\nmsgid \"Topolcany\"\nmsgstr \"Topoľčany\"\n\n#: sk/sk_districts.py:75\nmsgid \"Trebisov\"\nmsgstr \"Trebišov\"\n\n#: sk/sk_districts.py:76\nmsgid \"Trencin\"\nmsgstr \"Trenčín\"\n\n#: sk/sk_districts.py:77\nmsgid \"Trnava\"\nmsgstr \"Trnava\"\n\n#: sk/sk_districts.py:78\nmsgid \"Turcianske Teplice\"\nmsgstr \"Turčianske Teplice\"\n\n#: sk/sk_districts.py:79\nmsgid \"Tvrdosin\"\nmsgstr \"Tvrdošín\"\n\n#: sk/sk_districts.py:80\nmsgid \"Velky Krtis\"\nmsgstr \"Veľký Krtíš\"\n\n#: sk/sk_districts.py:81\nmsgid \"Vranov nad Toplou\"\nmsgstr \"Vranov nad Topľou\"\n\n#: sk/sk_districts.py:82\nmsgid \"Zlate Moravce\"\nmsgstr \"Zlaté Moravce\"\n\n#: sk/sk_districts.py:83\nmsgid \"Zvolen\"\nmsgstr \"Zvolen\"\n\n#: sk/sk_districts.py:84\nmsgid \"Zarnovica\"\nmsgstr \"Žarnovica\"\n\n#: sk/sk_districts.py:85\nmsgid \"Ziar nad Hronom\"\nmsgstr \"Žiar nad Hronom\"\n\n#: sk/sk_districts.py:86\nmsgid \"Zilina\"\nmsgstr \"Žilina\"\n\n#: sk/sk_regions.py:8\nmsgid \"Banska Bystrica region\"\nmsgstr \"Banskobystrický kraj\"\n\n#: sk/sk_regions.py:9\nmsgid \"Bratislava region\"\nmsgstr \"Bratislavský kraj\"\n\n#: sk/sk_regions.py:10\nmsgid \"Kosice region\"\nmsgstr \"Košický kraj\"\n\n#: sk/sk_regions.py:11\nmsgid \"Nitra region\"\nmsgstr \"Nitriansky kraj\"\n\n#: sk/sk_regions.py:12\nmsgid \"Presov region\"\nmsgstr \"Prešovský kraj\"\n\n#: sk/sk_regions.py:13\nmsgid \"Trencin region\"\nmsgstr \"Trančiansky kraj\"\n\n#: sk/sk_regions.py:14\nmsgid \"Trnava region\"\nmsgstr \"Trnavský kraj\"\n\n#: sk/sk_regions.py:15\nmsgid \"Zilina region\"\nmsgstr \"Žilinský kraj\"\n\n#: tr/forms.py:21\nmsgid \"Enter a postal code in the format XXXXX.\"\nmsgstr \"Zadajte poštové smerovacie číslo v tvare XXXXX.\"\n\n#: tr/forms.py:42\nmsgid \"Phone numbers must be in 0XXX XXX XXXX format.\"\nmsgstr \"Telefónne čísla musia mať tvar 0XXX XXX XXXX.\"\n\n#: tr/forms.py:69\nmsgid \"Enter a valid Turkish Identification number.\"\nmsgstr \"Zadajte platné turecké identifikačné číslo.\"\n\n#: tr/forms.py:70\nmsgid \"Turkish Identification number must be 11 digits.\"\nmsgstr \"Turecké identifikačné číslo musí mať 11 číslic.\"\n\n#: us/forms.py:21\nmsgid \"Enter a zip code in the format XXXXX or XXXXX-XXXX.\"\nmsgstr \"Zadajte poštové smerovacie číslo vo formáte XXXXX alebo XXXXX-XXXX.\"\n\n#: us/forms.py:59\nmsgid \"Enter a valid U.S. Social Security number in XXX-XX-XXXX format.\"\nmsgstr \"Vložte platné číslo U.S. sociálneho poistenia vo formáte XXX-XX-XXXX.\"\n\n#: us/forms.py:92\nmsgid \"Enter a U.S. state or territory.\"\nmsgstr \"Zadajte štát USA alebo teritórium.\"\n\n#: us/models.py:8\nmsgid \"U.S. state (two uppercase letters)\"\nmsgstr \"Štát USA (dve veľké písmená)\"\n\n#: us/models.py:17\nmsgid \"U.S. postal code (two uppercase letters)\"\nmsgstr \"Poštový kód (dve veľké písmená)\"\n\n#: us/models.py:26\nmsgid \"Phone number\"\nmsgstr \"Telefónne číslo\"\n\n#: uy/forms.py:29\nmsgid \"Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.\"\nmsgstr \"Vložte platné CI vo formáte X.XXX.XXX-X,XXXXXXX-X alebo XXXXXXXX.\"\n\n#: uy/forms.py:31\nmsgid \"Enter a valid CI number.\"\nmsgstr \"Zadajte platné IC číslo.\"\n\n#: za/forms.py:22\nmsgid \"Enter a valid South African ID number\"\nmsgstr \"Zadajte platné juhoafrické ID číslo.\"\n\n#: za/forms.py:56\nmsgid \"Enter a valid South African postal code\"\nmsgstr \"Zadajte platné juhoafrické poštové smerovacie číslo\"\n\n#: za/za_provinces.py:4\nmsgid \"Eastern Cape\"\nmsgstr \"Eastern Cape\"\n\n#: za/za_provinces.py:5\nmsgid \"Free State\"\nmsgstr \"Free State\"\n\n#: za/za_provinces.py:6\nmsgid \"Gauteng\"\nmsgstr \"Gauteng\"\n\n#: za/za_provinces.py:7\nmsgid \"KwaZulu-Natal\"\nmsgstr \"KwaZulu-Natal\"\n\n#: za/za_provinces.py:8\nmsgid \"Limpopo\"\nmsgstr \"Limpopo\"\n\n#: za/za_provinces.py:9\nmsgid \"Mpumalanga\"\nmsgstr \"Mpumalanga\"\n\n#: za/za_provinces.py:10\nmsgid \"Northern Cape\"\nmsgstr \"Northern Cape\"\n\n#: za/za_provinces.py:11\nmsgid \"North West\"\nmsgstr \"North West\"\n\n#: za/za_provinces.py:12\nmsgid \"Western Cape\"\nmsgstr \"Western Cape\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/locale/sl/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Translators:\n# iElectric <domen@dev.si>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Jure Cuhalev <gandalf@owca.info>, 2011-2012.\n#  <zejn@kiberpipa.org>, 2013.\n#   <zejn@kiberpipa.org>, 2011, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2013-02-15 18:30+0000\\n\"\n\"Last-Translator: zejn <zejn@kiberpipa.org>\\n\"\n\"Language-Team: Slovenian (http://www.transifex.com/projects/p/django/\"\n\"language/sl/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sl\\n\"\n\"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n\"\n\"%100==4 ? 2 : 3);\\n\"\n\n#: ar/forms.py:30\nmsgid \"Enter a postal code in the format NNNN or ANNNNAAA.\"\nmsgstr \"Vpišite poštno številko v zapisu NNNN ali ANNNNAAA.\"\n\n#: ar/forms.py:52 br/forms.py:95 br/forms.py:134 pe/forms.py:27 pe/forms.py:55\nmsgid \"This field requires only numbers.\"\nmsgstr \"To polje lahko vsebuje samo številke.\"\n\n#: ar/forms.py:53\nmsgid \"This field requires 7 or 8 digits.\"\nmsgstr \"To polje mora vsebovati 7 ali 8 števk.\"\n\n#: ar/forms.py:82\nmsgid \"Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.\"\nmsgstr \"Vpišite veljavno CUIT v zapisu XX-XXXXXXXX-X or XXXXXXXXXXXX.\"\n\n#: ar/forms.py:83\nmsgid \"Invalid CUIT.\"\nmsgstr \"Neveljaven CUIT vnos.\"\n\n#: ar/forms.py:84\nmsgid \"Invalid legal type. Type must be 27, 20, 23 or 30.\"\nmsgstr \"Neveljaven pravni tip. Tip mora biti 27, 20, 23 ali 30.\"\n\n#: at/at_states.py:5\nmsgid \"Burgenland\"\nmsgstr \"Gradiščansko\"\n\n#: at/at_states.py:6\nmsgid \"Carinthia\"\nmsgstr \"Koroška\"\n\n#: at/at_states.py:7\nmsgid \"Lower Austria\"\nmsgstr \"Spodnja Avstrija\"\n\n#: at/at_states.py:8\nmsgid \"Upper Austria\"\nmsgstr \"Zgornja Avstrija\"\n\n#: at/at_states.py:9\nmsgid \"Salzburg\"\nmsgstr \"Salzburg\"\n\n#: at/at_states.py:10\nmsgid \"Styria\"\nmsgstr \"Avstrijska Štajerska\"\n\n#: at/at_states.py:11\nmsgid \"Tyrol\"\nmsgstr \"Tirolska\"\n\n#: at/at_states.py:12\nmsgid \"Vorarlberg\"\nmsgstr \"Vorarlberg\"\n\n#: at/at_states.py:13\nmsgid \"Vienna\"\nmsgstr \"Dunaj\"\n\n#: at/forms.py:22 ch/forms.py:22 no/forms.py:19\nmsgid \"Enter a zip code in the format XXXX.\"\nmsgstr \"Vnesite veljavno poštno številko v obliki XXXX.\"\n\n#: at/forms.py:50\nmsgid \"Enter a valid Austrian Social Security Number in XXXX XXXXXX format.\"\nmsgstr \"\"\n\"Vpišite veljavno številko avstrijskega socialnega zavarovanja v zapisu XXXX \"\n\"XXXXXX.\"\n\n#: au/forms.py:26\nmsgid \"Enter a 4 digit postcode.\"\nmsgstr \"Vnesite 4-mestno poštno številko.\"\n\n#: au/models.py:9\nmsgid \"Australian State\"\nmsgstr \"Avstralska zvezna država\"\n\n#: au/models.py:19\nmsgid \"Australian Postcode\"\nmsgstr \"Avstralska poštna številka\"\n\n#: au/models.py:33\nmsgid \"Australian Phone number\"\nmsgstr \"Avstralska telefonska številka\"\n\n#: be/be_provinces.py:5\nmsgid \"Antwerp\"\nmsgstr \"Antwerpen\"\n\n#: be/be_provinces.py:6\nmsgid \"Brussels\"\nmsgstr \"Bruselj\"\n\n#: be/be_provinces.py:7\nmsgid \"East Flanders\"\nmsgstr \"vzhodna Flanska\"\n\n#: be/be_provinces.py:8\nmsgid \"Flemish Brabant\"\nmsgstr \"Flemish Brabant\"\n\n#: be/be_provinces.py:9\nmsgid \"Hainaut\"\nmsgstr \"Hengavsko\"\n\n#: be/be_provinces.py:10\nmsgid \"Liege\"\nmsgstr \"Liège\"\n\n#: be/be_provinces.py:11 nl/nl_provinces.py:9\nmsgid \"Limburg\"\nmsgstr \"Limburg\"\n\n#: be/be_provinces.py:12\nmsgid \"Luxembourg\"\nmsgstr \"Luksemburg\"\n\n#: be/be_provinces.py:13\nmsgid \"Namur\"\nmsgstr \"Namur\"\n\n#: be/be_provinces.py:14\nmsgid \"Walloon Brabant\"\nmsgstr \"Walloon Brabant\"\n\n#: be/be_provinces.py:15\nmsgid \"West Flanders\"\nmsgstr \"zahodna Flamska\"\n\n#: be/be_regions.py:5\nmsgid \"Brussels Capital Region\"\nmsgstr \"Bruseljska regija\"\n\n#: be/be_regions.py:6\nmsgid \"Flemish Region\"\nmsgstr \"Flemska regija\"\n\n#: be/be_regions.py:7\nmsgid \"Wallonia\"\nmsgstr \"Valonija\"\n\n#: be/forms.py:25\nmsgid \"Enter a valid postal code in the range and format 1XXX - 9XXX.\"\nmsgstr \"Vnesi veljavno poštno številko v obliki 1XXX - 9XXX.\"\n\n#: be/forms.py:48\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\nmsgstr \"\"\n\"Vnesite veljavno telefonsko številko v eni od naslednjih oblik: 0x xxx xx \"\n\"xx, 0xx xx xx xx, 04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, \"\n\"0x.xxx.xx.xx, 0xx.xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx ali 04xxxxxxxx.\"\n\n#: br/forms.py:22\nmsgid \"Enter a zip code in the format XXXXX-XXX.\"\nmsgstr \"Vnesite poštno številko v zapisu XXXXX-XXX.\"\n\n#: br/forms.py:31\nmsgid \"Phone numbers must be in XX-XXXX-XXXX format.\"\nmsgstr \"Telefonska številka mora biti v zapisu XX-XXXX-XXXX.\"\n\n#: br/forms.py:58\nmsgid \"\"\n\"Select a valid brazilian state. That state is not one of the available \"\n\"states.\"\nmsgstr \"\"\n\"Izberite veljavno brazilsko državo. Ta država ni med ponujenimi izbirami.\"\n\n#: br/forms.py:93\nmsgid \"Invalid CPF number.\"\nmsgstr \"Nepravilna CPF številka.\"\n\n#: br/forms.py:94\nmsgid \"This field requires at most 11 digits or 14 characters.\"\nmsgstr \"To polje zahteva največ 11 števk ali 14 znakov.\"\n\n#: br/forms.py:133\nmsgid \"Invalid CNPJ number.\"\nmsgstr \"Nepravilna CNPJ številka.\"\n\n#: br/forms.py:135\nmsgid \"This field requires at least 14 digits\"\nmsgstr \"To polje mora vsebovati vsaj 14 števk.\"\n\n#: ca/forms.py:29\nmsgid \"Enter a postal code in the format XXX XXX.\"\nmsgstr \"Vnesite veljavno poštno številko v obliki XXX XXX.\"\n\n#: ca/forms.py:47 us/forms.py:30\nmsgid \"Phone numbers must be in XXX-XXX-XXXX format.\"\nmsgstr \"Telefonska številka mora biti zapisana v formatu XXX-XXX-XXXX.\"\n\n#: ca/forms.py:69\nmsgid \"Enter a Canadian province or territory.\"\nmsgstr \"Vnesite kanadsko provinco ali teritorij.\"\n\n#: ca/forms.py:110\nmsgid \"Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.\"\nmsgstr \"\"\n\"Vpišite veljavno številko kanadskega socialnega zavarovanja v zapisu XXX-XXX-\"\n\"XXX.\"\n\n#: ch/ch_states.py:5\nmsgid \"Aargau\"\nmsgstr \"Aargau\"\n\n#: ch/ch_states.py:6\nmsgid \"Appenzell Innerrhoden\"\nmsgstr \"Appenzell Innerrhoden\"\n\n#: ch/ch_states.py:7\nmsgid \"Appenzell Ausserrhoden\"\nmsgstr \"Appenzell Ausserrhoden\"\n\n#: ch/ch_states.py:8\nmsgid \"Basel-Stadt\"\nmsgstr \"Basel (mesto)\"\n\n#: ch/ch_states.py:9\nmsgid \"Basel-Land\"\nmsgstr \"Basel (dežela)\"\n\n#: ch/ch_states.py:10\nmsgid \"Berne\"\nmsgstr \"Berne\"\n\n#: ch/ch_states.py:11\nmsgid \"Fribourg\"\nmsgstr \"Fribourg\"\n\n#: ch/ch_states.py:12\nmsgid \"Geneva\"\nmsgstr \"Ženeva\"\n\n#: ch/ch_states.py:13\nmsgid \"Glarus\"\nmsgstr \"Glarus\"\n\n#: ch/ch_states.py:14\nmsgid \"Graubuenden\"\nmsgstr \"Graubuenden\"\n\n#: ch/ch_states.py:15\nmsgid \"Jura\"\nmsgstr \"Jura\"\n\n#: ch/ch_states.py:16\nmsgid \"Lucerne\"\nmsgstr \"Lucerne\"\n\n#: ch/ch_states.py:17\nmsgid \"Neuchatel\"\nmsgstr \"Neuchatel\"\n\n#: ch/ch_states.py:18\nmsgid \"Nidwalden\"\nmsgstr \"Nidwalden\"\n\n#: ch/ch_states.py:19\nmsgid \"Obwalden\"\nmsgstr \"Obwalden\"\n\n#: ch/ch_states.py:20\nmsgid \"Schaffhausen\"\nmsgstr \"Schaffhausen\"\n\n#: ch/ch_states.py:21\nmsgid \"Schwyz\"\nmsgstr \"Schwyz\"\n\n#: ch/ch_states.py:22\nmsgid \"Solothurn\"\nmsgstr \"Solothurn\"\n\n#: ch/ch_states.py:23\nmsgid \"St. Gallen\"\nmsgstr \"St. Gallen\"\n\n#: ch/ch_states.py:24\nmsgid \"Thurgau\"\nmsgstr \"Thurgau\"\n\n#: ch/ch_states.py:25\nmsgid \"Ticino\"\nmsgstr \"Ticino\"\n\n#: ch/ch_states.py:26\nmsgid \"Uri\"\nmsgstr \"Uri\"\n\n#: ch/ch_states.py:27\nmsgid \"Valais\"\nmsgstr \"Valais\"\n\n#: ch/ch_states.py:28\nmsgid \"Vaud\"\nmsgstr \"Vaud\"\n\n#: ch/ch_states.py:29\nmsgid \"Zug\"\nmsgstr \"Zug\"\n\n#: ch/ch_states.py:30\nmsgid \"Zurich\"\nmsgstr \"Zurich\"\n\n#: ch/forms.py:37\nmsgid \"Phone numbers must be in 0XX XXX XX XX format.\"\nmsgstr \"Telefonske številke morajo biti v obliki 0XX XXX XX XX.\"\n\n#: ch/forms.py:68\nmsgid \"\"\n\"Enter a valid Swiss identity or passport card number in X1234567<0 or \"\n\"1234567890 format.\"\nmsgstr \"\"\n\"Vpišite veljavno številko švicarske osebne izkaznice ali potnega lista v \"\n\"zapisu X1234567<0 ali 1234567890.\"\n\n#: cl/forms.py:32\nmsgid \"Enter a valid Chilean RUT.\"\nmsgstr \"Vnesite veljaven čilski RUT.\"\n\n#: cl/forms.py:33\nmsgid \"Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.\"\nmsgstr \"Vpišite veljaven čilenski RUT v zapisu XX.XXX.XXX-X.\"\n\n#: cl/forms.py:34\nmsgid \"The Chilean RUT is not valid.\"\nmsgstr \"Ta čilenski RUT ni veljaven.\"\n\n#: cn/forms.py:84\nmsgid \"Enter a post code in the format XXXXXX.\"\nmsgstr \"Vnesite poštno številko v obliki XXXXXX.\"\n\n#: cn/forms.py:105\nmsgid \"ID Card Number consists of 15 or 18 digits.\"\nmsgstr \"Številka ID kartice je sestavljena iz 15 ali 18 števk.\"\n\n#: cn/forms.py:106\nmsgid \"Invalid ID Card Number: Wrong checksum\"\nmsgstr \"Neveljavna številka ID kartice: napačna preverjevalna števka.\"\n\n#: cn/forms.py:107\nmsgid \"Invalid ID Card Number: Wrong birthdate\"\nmsgstr \"Neveljavna številka ID kartice: neveljaven datum rojstva.\"\n\n#: cn/forms.py:108\nmsgid \"Invalid ID Card Number: Wrong location code\"\nmsgstr \"Neveljavna številka ID kartice: neveljavna lokacijska koda.\"\n\n#: cn/forms.py:193\nmsgid \"Enter a valid phone number.\"\nmsgstr \"Vnesite veljavno telefonsko številko.\"\n\n#: cn/forms.py:210\nmsgid \"Enter a valid cell number.\"\nmsgstr \"Vnesite veljavno mobilno številko.\"\n\n#: cz/cz_regions.py:8\nmsgid \"Prague\"\nmsgstr \"Praga\"\n\n#: cz/cz_regions.py:9\nmsgid \"Central Bohemian Region\"\nmsgstr \"Central Bohemian Region\"\n\n#: cz/cz_regions.py:10\nmsgid \"South Bohemian Region\"\nmsgstr \"South Bohemian Region\"\n\n#: cz/cz_regions.py:11\nmsgid \"Pilsen Region\"\nmsgstr \"Pilsen Region\"\n\n#: cz/cz_regions.py:12\nmsgid \"Carlsbad Region\"\nmsgstr \"Carlsbad Region\"\n\n#: cz/cz_regions.py:13\nmsgid \"Usti Region\"\nmsgstr \"Usti Region\"\n\n#: cz/cz_regions.py:14\nmsgid \"Liberec Region\"\nmsgstr \"Liberec Region\"\n\n#: cz/cz_regions.py:15\nmsgid \"Hradec Region\"\nmsgstr \"Hradec Region\"\n\n#: cz/cz_regions.py:16\nmsgid \"Pardubice Region\"\nmsgstr \"Pardubice Region\"\n\n#: cz/cz_regions.py:17\nmsgid \"Vysocina Region\"\nmsgstr \"Vysocina Region\"\n\n#: cz/cz_regions.py:18\nmsgid \"South Moravian Region\"\nmsgstr \"South Moravian Region\"\n\n#: cz/cz_regions.py:19\nmsgid \"Olomouc Region\"\nmsgstr \"Olomouc Region\"\n\n#: cz/cz_regions.py:20\nmsgid \"Zlin Region\"\nmsgstr \"Zlin Region\"\n\n#: cz/cz_regions.py:21\nmsgid \"Moravian-Silesian Region\"\nmsgstr \"Moravian-Silesian Region\"\n\n#: cz/forms.py:32 sk/forms.py:33\nmsgid \"Enter a postal code in the format XXXXX or XXX XX.\"\nmsgstr \"Vpišite poštno številko v zapisu XXXXX ali XXX XX.\"\n\n#: cz/forms.py:52\nmsgid \"Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.\"\nmsgstr \"Vnesite rojstno številko v obliki XXXXXX/XXXX ali XXXXXXXXXX.\"\n\n#: cz/forms.py:53\nmsgid \"Enter a valid birth number.\"\nmsgstr \"Vnesite veljavno rojstno številko.\"\n\n#: cz/forms.py:102\nmsgid \"Enter a valid IC number.\"\nmsgstr \"Vnesite veljavno IC številko.\"\n\n#: de/de_states.py:5\nmsgid \"Baden-Wuerttemberg\"\nmsgstr \"Baden-Wuerttemberg\"\n\n#: de/de_states.py:6\nmsgid \"Bavaria\"\nmsgstr \"Bavarska\"\n\n#: de/de_states.py:7\nmsgid \"Berlin\"\nmsgstr \"Berlin\"\n\n#: de/de_states.py:8\nmsgid \"Brandenburg\"\nmsgstr \"Brandenburg\"\n\n#: de/de_states.py:9\nmsgid \"Bremen\"\nmsgstr \"Bremen\"\n\n#: de/de_states.py:10\nmsgid \"Hamburg\"\nmsgstr \"Hamburg\"\n\n#: de/de_states.py:11\nmsgid \"Hessen\"\nmsgstr \"Hessen\"\n\n#: de/de_states.py:12\nmsgid \"Mecklenburg-Western Pomerania\"\nmsgstr \"Mecklenburg-Western Pomerania\"\n\n#: de/de_states.py:13\nmsgid \"Lower Saxony\"\nmsgstr \"Lower Saxony\"\n\n#: de/de_states.py:14\nmsgid \"North Rhine-Westphalia\"\nmsgstr \"Severno porenje - Westfalija\"\n\n#: de/de_states.py:15\nmsgid \"Rhineland-Palatinate\"\nmsgstr \"Rhineland-Palatinate\"\n\n#: de/de_states.py:16\nmsgid \"Saarland\"\nmsgstr \"Posarje\"\n\n#: de/de_states.py:17\nmsgid \"Saxony\"\nmsgstr \"Saxony\"\n\n#: de/de_states.py:18\nmsgid \"Saxony-Anhalt\"\nmsgstr \"Saška-Anhalt\"\n\n#: de/de_states.py:19\nmsgid \"Schleswig-Holstein\"\nmsgstr \"Schleswig-Holstein\"\n\n#: de/de_states.py:20\nmsgid \"Thuringia\"\nmsgstr \"Thuringia\"\n\n#: de/forms.py:20 fi/forms.py:18 fr/forms.py:20\nmsgid \"Enter a zip code in the format XXXXX.\"\nmsgstr \"Vnesite veljavno poštno številko v obliki XXXXX.\"\n\n#: de/forms.py:46\nmsgid \"\"\n\"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"format.\"\nmsgstr \"\"\n\"Vpišite veljavno številko nemške osebne izkaznice v zapisu XXXXXXXXXXX-\"\n\"XXXXXXX-XXXXXXX-X.\"\n\n#: es/es_provinces.py:5\nmsgid \"Araba\"\nmsgstr \"Araba\"\n\n#: es/es_provinces.py:6\nmsgid \"Albacete\"\nmsgstr \"Albacete\"\n\n#: es/es_provinces.py:7\nmsgid \"Alacant\"\nmsgstr \"Alacant\"\n\n#: es/es_provinces.py:8\nmsgid \"Almeria\"\nmsgstr \"Almeria\"\n\n#: es/es_provinces.py:9\nmsgid \"Avila\"\nmsgstr \"Avila\"\n\n#: es/es_provinces.py:10\nmsgid \"Badajoz\"\nmsgstr \"Badajoz\"\n\n#: es/es_provinces.py:11\nmsgid \"Illes Balears\"\nmsgstr \"Balearski otoki\"\n\n#: es/es_provinces.py:12\nmsgid \"Barcelona\"\nmsgstr \"Barcelona\"\n\n#: es/es_provinces.py:13\nmsgid \"Burgos\"\nmsgstr \"Burgos\"\n\n#: es/es_provinces.py:14\nmsgid \"Caceres\"\nmsgstr \"Caceres\"\n\n#: es/es_provinces.py:15\nmsgid \"Cadiz\"\nmsgstr \"Cadiz\"\n\n#: es/es_provinces.py:16\nmsgid \"Castello\"\nmsgstr \"Castello\"\n\n#: es/es_provinces.py:17\nmsgid \"Ciudad Real\"\nmsgstr \"Ciudad Real\"\n\n#: es/es_provinces.py:18\nmsgid \"Cordoba\"\nmsgstr \"Cordoba\"\n\n#: es/es_provinces.py:19\nmsgid \"A Coruna\"\nmsgstr \"A Coruna\"\n\n#: es/es_provinces.py:20\nmsgid \"Cuenca\"\nmsgstr \"Cuenca\"\n\n#: es/es_provinces.py:21\nmsgid \"Girona\"\nmsgstr \"Girona\"\n\n#: es/es_provinces.py:22\nmsgid \"Granada\"\nmsgstr \"Granada\"\n\n#: es/es_provinces.py:23\nmsgid \"Guadalajara\"\nmsgstr \"Guadalajara\"\n\n#: es/es_provinces.py:24\nmsgid \"Guipuzkoa\"\nmsgstr \"Guipuzkoa\"\n\n#: es/es_provinces.py:25\nmsgid \"Huelva\"\nmsgstr \"Huelva\"\n\n#: es/es_provinces.py:26\nmsgid \"Huesca\"\nmsgstr \"Huesca\"\n\n#: es/es_provinces.py:27\nmsgid \"Jaen\"\nmsgstr \"Jaen\"\n\n#: es/es_provinces.py:28\nmsgid \"Leon\"\nmsgstr \"Leon\"\n\n#: es/es_provinces.py:29\nmsgid \"Lleida\"\nmsgstr \"Lleida\"\n\n#: es/es_provinces.py:30 es/es_regions.py:17\nmsgid \"La Rioja\"\nmsgstr \"La Rioja\"\n\n#: es/es_provinces.py:31\nmsgid \"Lugo\"\nmsgstr \"Lugo\"\n\n#: es/es_provinces.py:32 es/es_regions.py:18\nmsgid \"Madrid\"\nmsgstr \"Madrid\"\n\n#: es/es_provinces.py:33\nmsgid \"Malaga\"\nmsgstr \"Malaga\"\n\n#: es/es_provinces.py:34\nmsgid \"Murcia\"\nmsgstr \"Murcia\"\n\n#: es/es_provinces.py:35\nmsgid \"Navarre\"\nmsgstr \"Navarre\"\n\n#: es/es_provinces.py:36\nmsgid \"Ourense\"\nmsgstr \"Ourense\"\n\n#: es/es_provinces.py:37\nmsgid \"Asturias\"\nmsgstr \"Asturias\"\n\n#: es/es_provinces.py:38\nmsgid \"Palencia\"\nmsgstr \"Palencia\"\n\n#: es/es_provinces.py:39\nmsgid \"Las Palmas\"\nmsgstr \"Las Palmas\"\n\n#: es/es_provinces.py:40\nmsgid \"Pontevedra\"\nmsgstr \"Pontevedra\"\n\n#: es/es_provinces.py:41\nmsgid \"Salamanca\"\nmsgstr \"Salamanca\"\n\n#: es/es_provinces.py:42\nmsgid \"Santa Cruz de Tenerife\"\nmsgstr \"Santa Cruz de Tenerife\"\n\n#: es/es_provinces.py:43 es/es_regions.py:11\nmsgid \"Cantabria\"\nmsgstr \"Cantabria\"\n\n#: es/es_provinces.py:44\nmsgid \"Segovia\"\nmsgstr \"Segovia\"\n\n#: es/es_provinces.py:45\nmsgid \"Seville\"\nmsgstr \"Seville\"\n\n#: es/es_provinces.py:46\nmsgid \"Soria\"\nmsgstr \"Soria\"\n\n#: es/es_provinces.py:47\nmsgid \"Tarragona\"\nmsgstr \"Tarragona\"\n\n#: es/es_provinces.py:48\nmsgid \"Teruel\"\nmsgstr \"Teruel\"\n\n#: es/es_provinces.py:49\nmsgid \"Toledo\"\nmsgstr \"Toledo\"\n\n#: es/es_provinces.py:50\nmsgid \"Valencia\"\nmsgstr \"Valencia\"\n\n#: es/es_provinces.py:51\nmsgid \"Valladolid\"\nmsgstr \"Valladolid\"\n\n#: es/es_provinces.py:52\nmsgid \"Bizkaia\"\nmsgstr \"Bizkaia\"\n\n#: es/es_provinces.py:53\nmsgid \"Zamora\"\nmsgstr \"Zamora\"\n\n#: es/es_provinces.py:54\nmsgid \"Zaragoza\"\nmsgstr \"Zaragoza\"\n\n#: es/es_provinces.py:55\nmsgid \"Ceuta\"\nmsgstr \"Ceuta\"\n\n#: es/es_provinces.py:56\nmsgid \"Melilla\"\nmsgstr \"Melilla\"\n\n#: es/es_regions.py:5\nmsgid \"Andalusia\"\nmsgstr \"Andalusia\"\n\n#: es/es_regions.py:6\nmsgid \"Aragon\"\nmsgstr \"Aragon\"\n\n#: es/es_regions.py:7\nmsgid \"Principality of Asturias\"\nmsgstr \"Principality of Asturias\"\n\n#: es/es_regions.py:8\nmsgid \"Balearic Islands\"\nmsgstr \"Balearski otoki\"\n\n#: es/es_regions.py:9\nmsgid \"Basque Country\"\nmsgstr \"Baskovska pokrajina\"\n\n#: es/es_regions.py:10\nmsgid \"Canary Islands\"\nmsgstr \"Kanarski otoki\"\n\n#: es/es_regions.py:12\nmsgid \"Castile-La Mancha\"\nmsgstr \"Castile-La Mancha\"\n\n#: es/es_regions.py:13\nmsgid \"Castile and Leon\"\nmsgstr \"Castile and Leon\"\n\n#: es/es_regions.py:14\nmsgid \"Catalonia\"\nmsgstr \"Catalonia\"\n\n#: es/es_regions.py:15\nmsgid \"Extremadura\"\nmsgstr \"Extremadura\"\n\n#: es/es_regions.py:16\nmsgid \"Galicia\"\nmsgstr \"Galicia\"\n\n#: es/es_regions.py:19\nmsgid \"Region of Murcia\"\nmsgstr \"Region of Murcia\"\n\n#: es/es_regions.py:20\nmsgid \"Foral Community of Navarre\"\nmsgstr \"Foral Community of Navarre\"\n\n#: es/es_regions.py:21\nmsgid \"Valencian Community\"\nmsgstr \"Valencian Community\"\n\n#: es/forms.py:26\nmsgid \"Enter a valid postal code in the range and format 01XXX - 52XXX.\"\nmsgstr \"Vpišite veljavno poštno številko v obsegu in zapisu od 01XXX do 52XXX.\"\n\n#: es/forms.py:46\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or \"\n\"9XXXXXXXX.\"\nmsgstr \"\"\n\"Vpišite veljavno telefonsko številko v zapisu 6XXXXXXXX, 8XXXXXXXX ali \"\n\"9XXXXXXXX.\"\n\n#: es/forms.py:73\nmsgid \"Please enter a valid NIF, NIE, or CIF.\"\nmsgstr \"Prosimo, vnesite veljavni NIF, NIE, ali CIF.\"\n\n#: es/forms.py:74\nmsgid \"Please enter a valid NIF or NIE.\"\nmsgstr \"Prosimo, vnesite veljaven NIF ali NIE.\"\n\n#: es/forms.py:75\nmsgid \"Invalid checksum for NIF.\"\nmsgstr \"Neveljavna preverjevalna vsota za NIF.\"\n\n#: es/forms.py:76\nmsgid \"Invalid checksum for NIE.\"\nmsgstr \"Neveljavna preverjevalna vsota za NIE.\"\n\n#: es/forms.py:77\nmsgid \"Invalid checksum for CIF.\"\nmsgstr \"Neveljavna preverjevalna vsota za CIF.\"\n\n#: es/forms.py:149\nmsgid \"\"\n\"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.\"\nmsgstr \"\"\n\"Vpišite veljavno številko bančnega računa v zapisu XXXX-XXXX-XX-XXXXXXXXXX.\"\n\n#: es/forms.py:150\nmsgid \"Invalid checksum for bank account number.\"\nmsgstr \"Neveljavna preverjevalna vsota za številko bančnega računa.\"\n\n#: fi/forms.py:33\nmsgid \"Enter a valid Finnish social security number.\"\nmsgstr \"Vnesite veljavno številko finskega socialnega zavarovanja.\"\n\n#: fr/forms.py:35\nmsgid \"Phone numbers must be in 0X XX XX XX XX format.\"\nmsgstr \"Telefonska številka mora biti v zapisu 0X XX XX XX XX.\"\n\n#: gb/forms.py:25\nmsgid \"Enter a valid postcode.\"\nmsgstr \"Vnesite veljavno poštno številko.\"\n\n#: gb/gb_regions.py:11\nmsgid \"Bedfordshire\"\nmsgstr \"Bedfordshire\"\n\n#: gb/gb_regions.py:12\nmsgid \"Buckinghamshire\"\nmsgstr \"Buckinghamshire\"\n\n#: gb/gb_regions.py:14\nmsgid \"Cheshire\"\nmsgstr \"Cheshire\"\n\n#: gb/gb_regions.py:15\nmsgid \"Cornwall and Isles of Scilly\"\nmsgstr \"Cornwall and Isles of Scilly\"\n\n#: gb/gb_regions.py:16\nmsgid \"Cumbria\"\nmsgstr \"Cumbria\"\n\n#: gb/gb_regions.py:17\nmsgid \"Derbyshire\"\nmsgstr \"Derbyshire\"\n\n#: gb/gb_regions.py:18\nmsgid \"Devon\"\nmsgstr \"Devon\"\n\n#: gb/gb_regions.py:19\nmsgid \"Dorset\"\nmsgstr \"Dorset\"\n\n#: gb/gb_regions.py:20\nmsgid \"Durham\"\nmsgstr \"Durham\"\n\n#: gb/gb_regions.py:21\nmsgid \"East Sussex\"\nmsgstr \"East Sussex\"\n\n#: gb/gb_regions.py:22\nmsgid \"Essex\"\nmsgstr \"Essex\"\n\n#: gb/gb_regions.py:23\nmsgid \"Gloucestershire\"\nmsgstr \"Gloucestershire\"\n\n#: gb/gb_regions.py:24\nmsgid \"Greater London\"\nmsgstr \"Greater London\"\n\n#: gb/gb_regions.py:25\nmsgid \"Greater Manchester\"\nmsgstr \"Greater Manchester\"\n\n#: gb/gb_regions.py:26\nmsgid \"Hampshire\"\nmsgstr \"Hampshire\"\n\n#: gb/gb_regions.py:27\nmsgid \"Hertfordshire\"\nmsgstr \"Hertfordshire\"\n\n#: gb/gb_regions.py:28\nmsgid \"Kent\"\nmsgstr \"Kent\"\n\n#: gb/gb_regions.py:29\nmsgid \"Lancashire\"\nmsgstr \"Lancashire\"\n\n#: gb/gb_regions.py:30\nmsgid \"Leicestershire\"\nmsgstr \"Leicestershire\"\n\n#: gb/gb_regions.py:31\nmsgid \"Lincolnshire\"\nmsgstr \"Lincolnshire\"\n\n#: gb/gb_regions.py:32\nmsgid \"Merseyside\"\nmsgstr \"Merseyside\"\n\n#: gb/gb_regions.py:33\nmsgid \"Norfolk\"\nmsgstr \"Norfolk\"\n\n#: gb/gb_regions.py:34\nmsgid \"North Yorkshire\"\nmsgstr \"North Yorkshire\"\n\n#: gb/gb_regions.py:35\nmsgid \"Northamptonshire\"\nmsgstr \"Northamptonshire\"\n\n#: gb/gb_regions.py:36\nmsgid \"Northumberland\"\nmsgstr \"Northumberland\"\n\n#: gb/gb_regions.py:37\nmsgid \"Nottinghamshire\"\nmsgstr \"Nottinghamshire\"\n\n#: gb/gb_regions.py:38\nmsgid \"Oxfordshire\"\nmsgstr \"Oxfordshire\"\n\n#: gb/gb_regions.py:39\nmsgid \"Shropshire\"\nmsgstr \"Shropshire\"\n\n#: gb/gb_regions.py:40\nmsgid \"Somerset\"\nmsgstr \"Somerset\"\n\n#: gb/gb_regions.py:41\nmsgid \"South Yorkshire\"\nmsgstr \"South Yorkshire\"\n\n#: gb/gb_regions.py:42\nmsgid \"Staffordshire\"\nmsgstr \"Staffordshire\"\n\n#: gb/gb_regions.py:43\nmsgid \"Suffolk\"\nmsgstr \"Suffolk\"\n\n#: gb/gb_regions.py:44\nmsgid \"Surrey\"\nmsgstr \"Surrey\"\n\n#: gb/gb_regions.py:45\nmsgid \"Tyne and Wear\"\nmsgstr \"Tyne and Wear\"\n\n#: gb/gb_regions.py:46\nmsgid \"Warwickshire\"\nmsgstr \"Warwickshire\"\n\n#: gb/gb_regions.py:47\nmsgid \"West Midlands\"\nmsgstr \"West Midlands\"\n\n#: gb/gb_regions.py:48\nmsgid \"West Sussex\"\nmsgstr \"West Sussex\"\n\n#: gb/gb_regions.py:49\nmsgid \"West Yorkshire\"\nmsgstr \"West Yorkshire\"\n\n#: gb/gb_regions.py:50\nmsgid \"Wiltshire\"\nmsgstr \"Wiltshire\"\n\n#: gb/gb_regions.py:51\nmsgid \"Worcestershire\"\nmsgstr \"Worcestershire\"\n\n#: gb/gb_regions.py:55\nmsgid \"County Antrim\"\nmsgstr \"County Antrim\"\n\n#: gb/gb_regions.py:56\nmsgid \"County Armagh\"\nmsgstr \"County Armagh\"\n\n#: gb/gb_regions.py:57\nmsgid \"County Down\"\nmsgstr \"County Down\"\n\n#: gb/gb_regions.py:58\nmsgid \"County Fermanagh\"\nmsgstr \"County Fermanagh\"\n\n#: gb/gb_regions.py:59\nmsgid \"County Londonderry\"\nmsgstr \"County Londonderry\"\n\n#: gb/gb_regions.py:60\nmsgid \"County Tyrone\"\nmsgstr \"County Tyrone\"\n\n#: gb/gb_regions.py:64\nmsgid \"Clwyd\"\nmsgstr \"Clwyd\"\n\n#: gb/gb_regions.py:65\nmsgid \"Dyfed\"\nmsgstr \"Dyfed\"\n\n#: gb/gb_regions.py:66\nmsgid \"Gwent\"\nmsgstr \"Gwent\"\n\n#: gb/gb_regions.py:67\nmsgid \"Gwynedd\"\nmsgstr \"Gwynedd\"\n\n#: gb/gb_regions.py:68\nmsgid \"Mid Glamorgan\"\nmsgstr \"Mid Glamorgan\"\n\n#: gb/gb_regions.py:69\nmsgid \"Powys\"\nmsgstr \"Powys\"\n\n#: gb/gb_regions.py:70\nmsgid \"South Glamorgan\"\nmsgstr \"South Glamorgan\"\n\n#: gb/gb_regions.py:71\nmsgid \"West Glamorgan\"\nmsgstr \"West Glamorgan\"\n\n#: gb/gb_regions.py:75\nmsgid \"Borders\"\nmsgstr \"Borders\"\n\n#: gb/gb_regions.py:76\nmsgid \"Central Scotland\"\nmsgstr \"Central Scotland\"\n\n#: gb/gb_regions.py:77\nmsgid \"Dumfries and Galloway\"\nmsgstr \"Dumfries and Galloway\"\n\n#: gb/gb_regions.py:78\nmsgid \"Fife\"\nmsgstr \"Fife\"\n\n#: gb/gb_regions.py:79\nmsgid \"Grampian\"\nmsgstr \"Grampian\"\n\n#: gb/gb_regions.py:80\nmsgid \"Highland\"\nmsgstr \"Highland\"\n\n#: gb/gb_regions.py:81\nmsgid \"Lothian\"\nmsgstr \"Lothian\"\n\n#: gb/gb_regions.py:82\nmsgid \"Orkney Islands\"\nmsgstr \"Orkney Islands\"\n\n#: gb/gb_regions.py:83\nmsgid \"Shetland Islands\"\nmsgstr \"Shetland Islands\"\n\n#: gb/gb_regions.py:84\nmsgid \"Strathclyde\"\nmsgstr \"Strathclyde\"\n\n#: gb/gb_regions.py:85\nmsgid \"Tayside\"\nmsgstr \"Tayside\"\n\n#: gb/gb_regions.py:86\nmsgid \"Western Isles\"\nmsgstr \"Western Isles\"\n\n#: gb/gb_regions.py:90\nmsgid \"England\"\nmsgstr \"England\"\n\n#: gb/gb_regions.py:91\nmsgid \"Northern Ireland\"\nmsgstr \"Northern Ireland\"\n\n#: gb/gb_regions.py:92\nmsgid \"Scotland\"\nmsgstr \"Scotland\"\n\n#: gb/gb_regions.py:93\nmsgid \"Wales\"\nmsgstr \"Wales\"\n\n#: hk/forms.py:37\n#, python-format\nmsgid \"Phone number should not start with one of the followings: %s.\"\nmsgstr \"Telefonska številka naj se ne začne z: %s.\"\n\n#: hk/forms.py:40\n#, python-format\nmsgid \"Phone number must be in one of the following formats: %s.\"\nmsgstr \"Telefonska številka mora biti v eni od naslednjih oblik: %s.\"\n\n#: hk/forms.py:42\n#, python-format\nmsgid \"Phone number should start with one of the followings: %s.\"\nmsgstr \"Telefonska številka naj se začne z: %s.\"\n\n#: hr/forms.py:76\nmsgid \"Enter a valid 13 digit JMBG\"\nmsgstr \"Vnesite veljavno 13-mestno številko JMBG.\"\n\n#: hr/forms.py:77\nmsgid \"Error in date segment\"\nmsgstr \"Napaka v datumskem delu.\"\n\n#: hr/forms.py:123\nmsgid \"Enter a valid 11 digit OIB\"\nmsgstr \"Vnesite veljavno 11-mestno OIB številko.\"\n\n#: hr/forms.py:152 id/forms.py:112\nmsgid \"Enter a valid vehicle license plate number\"\nmsgstr \"Vnesite veljavno avtomobilsko registrsko številko\"\n\n#: hr/forms.py:153\nmsgid \"Enter a valid location code\"\nmsgstr \"Vnesite veljavno lokacijsko kodo.\"\n\n#: hr/forms.py:154\nmsgid \"Number part cannot be zero\"\nmsgstr \"Številski del ne more biti nič\"\n\n#: hr/forms.py:190\nmsgid \"Enter a valid 5 digit postal code\"\nmsgstr \"Vnesite veljavno 5-mestno poštno številko\"\n\n#: hr/forms.py:218 id/forms.py:72 nl/forms.py:56\nmsgid \"Enter a valid phone number\"\nmsgstr \"Vnesite veljavno telefonsko številko\"\n\n#: hr/forms.py:219\nmsgid \"Enter a valid area or mobile network code\"\nmsgstr \"Vnesite veljavno področno ali omrežno številko\"\n\n#: hr/forms.py:220\nmsgid \"The phone nubmer is too long\"\nmsgstr \"Telefonska številka je predolga\"\n\n#: hr/forms.py:258\nmsgid \"Enter a valid 19 digit JMBAG starting with 601983\"\nmsgstr \"Vnesite veljavno 19-mestno JMBAG številko, ki se začne z 601983\"\n\n#: hr/forms.py:259\nmsgid \"Card issue number cannot be zero\"\nmsgstr \"Potrdilna številka kartice ne more biti nič\"\n\n#: hr/hr_choices.py:14\nmsgid \"Grad Zagreb\"\nmsgstr \"Mesto Zagreb\"\n\n#: hr/hr_choices.py:15\nmsgid \"Bjelovarsko-bilogorska županija\"\nmsgstr \"Bjelovarsko-belogorska pokrajina\"\n\n#: hr/hr_choices.py:16\nmsgid \"Brodsko-posavska županija\"\nmsgstr \"Brodsko-posavska pokrajina\"\n\n#: hr/hr_choices.py:17\nmsgid \"Dubrovačko-neretvanska županija\"\nmsgstr \"Dubrovniško-neretvanska pokrajina\"\n\n#: hr/hr_choices.py:18\nmsgid \"Istarska županija\"\nmsgstr \"Istrska pokrajina\"\n\n#: hr/hr_choices.py:19\nmsgid \"Karlovačka županija\"\nmsgstr \"Karlovška pokrajina\"\n\n#: hr/hr_choices.py:20\nmsgid \"Koprivničko-križevačka županija\"\nmsgstr \"Koprivniško-križevačka pokrajina\"\n\n#: hr/hr_choices.py:21\nmsgid \"Krapinsko-zagorska županija\"\nmsgstr \"Krapinsko-zagorska pokrajina\"\n\n#: hr/hr_choices.py:22\nmsgid \"Ličko-senjska županija\"\nmsgstr \"Ličko-senjska pokrajina\"\n\n#: hr/hr_choices.py:23\nmsgid \"Međimurska županija\"\nmsgstr \"Međimurska pokrajina\"\n\n#: hr/hr_choices.py:24\nmsgid \"Osječko-baranjska županija\"\nmsgstr \"Osješko-baranjska pokrajina\"\n\n#: hr/hr_choices.py:25\nmsgid \"Požeško-slavonska županija\"\nmsgstr \"Požeško-slavonska pokrajina\"\n\n#: hr/hr_choices.py:26\nmsgid \"Primorsko-goranska županija\"\nmsgstr \"Primorsko-gorska pokrajina\"\n\n#: hr/hr_choices.py:27\nmsgid \"Sisačko-moslavačka županija\"\nmsgstr \"Siško-moslavška pokrajina\"\n\n#: hr/hr_choices.py:28\nmsgid \"Splitsko-dalmatinska županija\"\nmsgstr \"Splitsko-dalmatinska pokrajina\"\n\n#: hr/hr_choices.py:29\nmsgid \"Šibensko-kninska županija\"\nmsgstr \"Šibeniško-kninska pokrajina\"\n\n#: hr/hr_choices.py:30\nmsgid \"Varaždinska županija\"\nmsgstr \"Varaždinska pokrajina\"\n\n#: hr/hr_choices.py:31\nmsgid \"Virovitičko-podravska županija\"\nmsgstr \"Virovitško-podravska pokrajina\"\n\n#: hr/hr_choices.py:32\nmsgid \"Vukovarsko-srijemska županija\"\nmsgstr \"Vukovarsko-sremska pokrajina\"\n\n#: hr/hr_choices.py:33\nmsgid \"Zadarska županija\"\nmsgstr \"Zadrska pokrajina\"\n\n#: hr/hr_choices.py:34\nmsgid \"Zagrebačka županija\"\nmsgstr \"Zagrebška pokrajina\"\n\n#: id/forms.py:31\nmsgid \"Enter a valid post code\"\nmsgstr \"Vnesite veljavno poštno številko\"\n\n#: id/forms.py:176\nmsgid \"Enter a valid NIK/KTP number\"\nmsgstr \"Vnesite veljavno NIK/KTP številko.\"\n\n#: id/id_choices.py:15\nmsgid \"Aceh\"\nmsgstr \"Aceh\"\n\n#: id/id_choices.py:16 id/id_choices.py:79\nmsgid \"Bali\"\nmsgstr \"Bali\"\n\n#: id/id_choices.py:17 id/id_choices.py:51\nmsgid \"Banten\"\nmsgstr \"Banten\"\n\n#: id/id_choices.py:18 id/id_choices.py:60\nmsgid \"Bengkulu\"\nmsgstr \"Bengkulu\"\n\n#: id/id_choices.py:19 id/id_choices.py:53\nmsgid \"Yogyakarta\"\nmsgstr \"Yogyakarta\"\n\n#: id/id_choices.py:20 id/id_choices.py:57\nmsgid \"Jakarta\"\nmsgstr \"Jakarta\"\n\n#: id/id_choices.py:21 id/id_choices.py:81\nmsgid \"Gorontalo\"\nmsgstr \"Gorontalo\"\n\n#: id/id_choices.py:22 id/id_choices.py:63\nmsgid \"Jambi\"\nmsgstr \"Jambi\"\n\n#: id/id_choices.py:23\nmsgid \"Jawa Barat\"\nmsgstr \"Jawa Barat\"\n\n#: id/id_choices.py:24\nmsgid \"Jawa Tengah\"\nmsgstr \"Jawa Tengah\"\n\n#: id/id_choices.py:25\nmsgid \"Jawa Timur\"\nmsgstr \"Jawa Timur\"\n\n#: id/id_choices.py:26 id/id_choices.py:94\nmsgid \"Kalimantan Barat\"\nmsgstr \"Kalimantan Barat\"\n\n#: id/id_choices.py:27 id/id_choices.py:72\nmsgid \"Kalimantan Selatan\"\nmsgstr \"Kalimantan Selatan\"\n\n#: id/id_choices.py:28 id/id_choices.py:95\nmsgid \"Kalimantan Tengah\"\nmsgstr \"Kalimantan Tengah\"\n\n#: id/id_choices.py:29 id/id_choices.py:96\nmsgid \"Kalimantan Timur\"\nmsgstr \"Kalimantan Timur\"\n\n#: id/id_choices.py:30\nmsgid \"Kepulauan Bangka-Belitung\"\nmsgstr \"Kepulauan Bangka-Belitung\"\n\n#: id/id_choices.py:31 id/id_choices.py:68\nmsgid \"Kepulauan Riau\"\nmsgstr \"Kepulauan Riau\"\n\n#: id/id_choices.py:32 id/id_choices.py:61\nmsgid \"Lampung\"\nmsgstr \"Lampung\"\n\n#: id/id_choices.py:33 id/id_choices.py:76\nmsgid \"Maluku\"\nmsgstr \"Maluku\"\n\n#: id/id_choices.py:34 id/id_choices.py:77\nmsgid \"Maluku Utara\"\nmsgstr \"Maluku Utara\"\n\n#: id/id_choices.py:35\nmsgid \"Nusa Tenggara Barat\"\nmsgstr \"Nusa Tenggara Barat\"\n\n#: id/id_choices.py:36\nmsgid \"Nusa Tenggara Timur\"\nmsgstr \"Nusa Tenggara Timur\"\n\n#: id/id_choices.py:37\nmsgid \"Papua\"\nmsgstr \"Papua\"\n\n#: id/id_choices.py:38\nmsgid \"Papua Barat\"\nmsgstr \"Papua Barat\"\n\n#: id/id_choices.py:39 id/id_choices.py:66\nmsgid \"Riau\"\nmsgstr \"Riau\"\n\n#: id/id_choices.py:40 id/id_choices.py:74\nmsgid \"Sulawesi Barat\"\nmsgstr \"Sulawesi Barat\"\n\n#: id/id_choices.py:41 id/id_choices.py:75\nmsgid \"Sulawesi Selatan\"\nmsgstr \"Sulawesi Selatan\"\n\n#: id/id_choices.py:42 id/id_choices.py:82\nmsgid \"Sulawesi Tengah\"\nmsgstr \"Sulawesi Tengah\"\n\n#: id/id_choices.py:43 id/id_choices.py:85\nmsgid \"Sulawesi Tenggara\"\nmsgstr \"Sulawesi Tenggara\"\n\n#: id/id_choices.py:44\nmsgid \"Sulawesi Utara\"\nmsgstr \"Sulawesi Utara\"\n\n#: id/id_choices.py:45 id/id_choices.py:58\nmsgid \"Sumatera Barat\"\nmsgstr \"Sumatera Barat\"\n\n#: id/id_choices.py:46 id/id_choices.py:62\nmsgid \"Sumatera Selatan\"\nmsgstr \"Sumatera Selatan\"\n\n#: id/id_choices.py:47 id/id_choices.py:64\nmsgid \"Sumatera Utara\"\nmsgstr \"Sumatera Utara\"\n\n#: id/id_choices.py:52\nmsgid \"Magelang\"\nmsgstr \"Magelang\"\n\n#: id/id_choices.py:54\nmsgid \"Surakarta - Solo\"\nmsgstr \"Surakarta - Solo\"\n\n#: id/id_choices.py:55\nmsgid \"Madiun\"\nmsgstr \"Madiun\"\n\n#: id/id_choices.py:56\nmsgid \"Kediri\"\nmsgstr \"Kediri\"\n\n#: id/id_choices.py:59\nmsgid \"Tapanuli\"\nmsgstr \"Tapanuli\"\n\n#: id/id_choices.py:65\nmsgid \"Nanggroe Aceh Darussalam\"\nmsgstr \"Nanggroe Aceh Darussalam\"\n\n#: id/id_choices.py:67\nmsgid \"Kepulauan Bangka Belitung\"\nmsgstr \"Kepulauan Bangka Belitung\"\n\n#: id/id_choices.py:69\nmsgid \"Corps Consulate\"\nmsgstr \"Corps Consulate\"\n\n#: id/id_choices.py:70\nmsgid \"Corps Diplomatic\"\nmsgstr \"Corps Diplomatic\"\n\n#: id/id_choices.py:71\nmsgid \"Bandung\"\nmsgstr \"Bandung\"\n\n#: id/id_choices.py:73\nmsgid \"Sulawesi Utara Daratan\"\nmsgstr \"Sulawesi Utara Daratan\"\n\n#: id/id_choices.py:78\nmsgid \"NTT - Timor\"\nmsgstr \"NTT - Timor\"\n\n#: id/id_choices.py:80\nmsgid \"Sulawesi Utara Kepulauan\"\nmsgstr \"Sulawesi Utara Kepulauan\"\n\n#: id/id_choices.py:83\nmsgid \"NTB - Lombok\"\nmsgstr \"NTB - Lombok\"\n\n#: id/id_choices.py:84\nmsgid \"Papua dan Papua Barat\"\nmsgstr \"Papua dan Papua Barat\"\n\n#: id/id_choices.py:86\nmsgid \"Cirebon\"\nmsgstr \"Cirebon\"\n\n#: id/id_choices.py:87\nmsgid \"NTB - Sumbawa\"\nmsgstr \"NTB - Sumbawa\"\n\n#: id/id_choices.py:88\nmsgid \"NTT - Flores\"\nmsgstr \"NTT - Flores\"\n\n#: id/id_choices.py:89\nmsgid \"NTT - Sumba\"\nmsgstr \"NTT - Sumba\"\n\n#: id/id_choices.py:90\nmsgid \"Bogor\"\nmsgstr \"Bogor\"\n\n#: id/id_choices.py:91\nmsgid \"Pekalongan\"\nmsgstr \"Pekalongan\"\n\n#: id/id_choices.py:92\nmsgid \"Semarang\"\nmsgstr \"Semarang\"\n\n#: id/id_choices.py:93\nmsgid \"Pati\"\nmsgstr \"Pati\"\n\n#: id/id_choices.py:97\nmsgid \"Surabaya\"\nmsgstr \"Surabaya\"\n\n#: id/id_choices.py:98\nmsgid \"Madura\"\nmsgstr \"Madura\"\n\n#: id/id_choices.py:99\nmsgid \"Malang\"\nmsgstr \"Malang\"\n\n#: id/id_choices.py:100\nmsgid \"Jember\"\nmsgstr \"Jember\"\n\n#: id/id_choices.py:101\nmsgid \"Banyumas\"\nmsgstr \"Banyumas\"\n\n#: id/id_choices.py:102\nmsgid \"Federal Government\"\nmsgstr \"Zvezna vlada\"\n\n#: id/id_choices.py:103\nmsgid \"Bojonegoro\"\nmsgstr \"Bojonegoro\"\n\n#: id/id_choices.py:104\nmsgid \"Purwakarta\"\nmsgstr \"Purwakarta\"\n\n#: id/id_choices.py:105\nmsgid \"Sidoarjo\"\nmsgstr \"Sidoarjo\"\n\n#: id/id_choices.py:106\nmsgid \"Garut\"\nmsgstr \"Garut\"\n\n#: ie/ie_counties.py:8\nmsgid \"Antrim\"\nmsgstr \"Antrim\"\n\n#: ie/ie_counties.py:9\nmsgid \"Armagh\"\nmsgstr \"Armagh\"\n\n#: ie/ie_counties.py:10\nmsgid \"Carlow\"\nmsgstr \"Carlow\"\n\n#: ie/ie_counties.py:11\nmsgid \"Cavan\"\nmsgstr \"Cavan\"\n\n#: ie/ie_counties.py:12\nmsgid \"Clare\"\nmsgstr \"Clare\"\n\n#: ie/ie_counties.py:13\nmsgid \"Cork\"\nmsgstr \"Cork\"\n\n#: ie/ie_counties.py:14\nmsgid \"Derry\"\nmsgstr \"Derry\"\n\n#: ie/ie_counties.py:15\nmsgid \"Donegal\"\nmsgstr \"Donegal\"\n\n#: ie/ie_counties.py:16\nmsgid \"Down\"\nmsgstr \"Down\"\n\n#: ie/ie_counties.py:17\nmsgid \"Dublin\"\nmsgstr \"Dublin\"\n\n#: ie/ie_counties.py:18\nmsgid \"Fermanagh\"\nmsgstr \"Fermanagh\"\n\n#: ie/ie_counties.py:19\nmsgid \"Galway\"\nmsgstr \"Galway\"\n\n#: ie/ie_counties.py:20\nmsgid \"Kerry\"\nmsgstr \"Kerry\"\n\n#: ie/ie_counties.py:21\nmsgid \"Kildare\"\nmsgstr \"Kildare\"\n\n#: ie/ie_counties.py:22\nmsgid \"Kilkenny\"\nmsgstr \"Kilkenny\"\n\n#: ie/ie_counties.py:23\nmsgid \"Laois\"\nmsgstr \"Laois\"\n\n#: ie/ie_counties.py:24\nmsgid \"Leitrim\"\nmsgstr \"Leitrim\"\n\n#: ie/ie_counties.py:25\nmsgid \"Limerick\"\nmsgstr \"Limerick\"\n\n#: ie/ie_counties.py:26\nmsgid \"Longford\"\nmsgstr \"Longford\"\n\n#: ie/ie_counties.py:27\nmsgid \"Louth\"\nmsgstr \"Louth\"\n\n#: ie/ie_counties.py:28\nmsgid \"Mayo\"\nmsgstr \"Mayo\"\n\n#: ie/ie_counties.py:29\nmsgid \"Meath\"\nmsgstr \"Meath\"\n\n#: ie/ie_counties.py:30\nmsgid \"Monaghan\"\nmsgstr \"Monaghan\"\n\n#: ie/ie_counties.py:31\nmsgid \"Offaly\"\nmsgstr \"Offaly\"\n\n#: ie/ie_counties.py:32\nmsgid \"Roscommon\"\nmsgstr \"Roscommon\"\n\n#: ie/ie_counties.py:33\nmsgid \"Sligo\"\nmsgstr \"Sligo\"\n\n#: ie/ie_counties.py:34\nmsgid \"Tipperary\"\nmsgstr \"Tipperary\"\n\n#: ie/ie_counties.py:35\nmsgid \"Tyrone\"\nmsgstr \"Tyrone\"\n\n#: ie/ie_counties.py:36\nmsgid \"Waterford\"\nmsgstr \"Waterford\"\n\n#: ie/ie_counties.py:37\nmsgid \"Westmeath\"\nmsgstr \"Westmeath\"\n\n#: ie/ie_counties.py:38\nmsgid \"Wexford\"\nmsgstr \"Wexford\"\n\n#: ie/ie_counties.py:39\nmsgid \"Wicklow\"\nmsgstr \"Wicklow\"\n\n#: il/forms.py:32\nmsgid \"Enter a postal code in the format XXXXX\"\nmsgstr \"Vnesi poštno številko v obliki XXXXX\"\n\n#: il/forms.py:51\nmsgid \"Enter a valid ID number.\"\nmsgstr \"Vnesi veljavno ID številko.\"\n\n#: in_/forms.py:41\nmsgid \"Enter a zip code in the format XXXXXX or XXX XXX.\"\nmsgstr \"Vnesite poštno številko v zapisu XXXXXX ali XXX XXX.\"\n\n#: in_/forms.py:64\nmsgid \"Enter an Indian state or territory.\"\nmsgstr \"Vnesite indijsko državo ali teritorij.\"\n\n#: in_/forms.py:103\nmsgid \"Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.\"\nmsgstr \"Telefonske številke morajo biti v zapisu 02X-8X ali 03X-7X ali 04X-6X.\"\n\n#: is_/forms.py:22\nmsgid \"\"\n\"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.\"\nmsgstr \"\"\n\"Vpišite pravilno islandsko identifikacijsko številko v zapisu XXXXXX-XXXX.\"\n\n#: is_/forms.py:23\nmsgid \"The Icelandic identification number is not valid.\"\nmsgstr \"Islandska identifikacijska številka ni pravilna.\"\n\n#: it/forms.py:21\nmsgid \"Enter a valid zip code.\"\nmsgstr \"Vnesite veljavno poštno številko.\"\n\n#: it/forms.py:48\nmsgid \"Enter a valid Social Security number.\"\nmsgstr \"Vnesite veljavno številko socialnega zavarovanja.\"\n\n#: it/forms.py:73\nmsgid \"Enter a valid VAT number.\"\nmsgstr \"Vnesite veljavno davčno (DDV) številko.\"\n\n#: jp/forms.py:19\nmsgid \"Enter a postal code in the format XXXXXXX or XXX-XXXX.\"\nmsgstr \"Vpišite poštno številko v zapisu XXXXXXX or XXX-XXXX.\"\n\n#: jp/jp_prefectures.py:4\nmsgid \"Hokkaido\"\nmsgstr \"Hokaido\"\n\n#: jp/jp_prefectures.py:5\nmsgid \"Aomori\"\nmsgstr \"Aomori\"\n\n#: jp/jp_prefectures.py:6\nmsgid \"Iwate\"\nmsgstr \"Iwate\"\n\n#: jp/jp_prefectures.py:7\nmsgid \"Miyagi\"\nmsgstr \"Miyagi\"\n\n#: jp/jp_prefectures.py:8\nmsgid \"Akita\"\nmsgstr \"Akita\"\n\n#: jp/jp_prefectures.py:9\nmsgid \"Yamagata\"\nmsgstr \"Jamagata\"\n\n#: jp/jp_prefectures.py:10\nmsgid \"Fukushima\"\nmsgstr \"Fukushima\"\n\n#: jp/jp_prefectures.py:11\nmsgid \"Ibaraki\"\nmsgstr \"Ibaraki\"\n\n#: jp/jp_prefectures.py:12\nmsgid \"Tochigi\"\nmsgstr \"Točigi\"\n\n#: jp/jp_prefectures.py:13\nmsgid \"Gunma\"\nmsgstr \"Gunma\"\n\n#: jp/jp_prefectures.py:14\nmsgid \"Saitama\"\nmsgstr \"Saitama\"\n\n#: jp/jp_prefectures.py:15\nmsgid \"Chiba\"\nmsgstr \"Čiba\"\n\n#: jp/jp_prefectures.py:16\nmsgid \"Tokyo\"\nmsgstr \"Tokio\"\n\n#: jp/jp_prefectures.py:17\nmsgid \"Kanagawa\"\nmsgstr \"Kanagawa\"\n\n#: jp/jp_prefectures.py:18\nmsgid \"Yamanashi\"\nmsgstr \"Jamanaši\"\n\n#: jp/jp_prefectures.py:19\nmsgid \"Nagano\"\nmsgstr \"Nagano\"\n\n#: jp/jp_prefectures.py:20\nmsgid \"Niigata\"\nmsgstr \"Niigata\"\n\n#: jp/jp_prefectures.py:21\nmsgid \"Toyama\"\nmsgstr \"Toyama\"\n\n#: jp/jp_prefectures.py:22\nmsgid \"Ishikawa\"\nmsgstr \"Išikava\"\n\n#: jp/jp_prefectures.py:23\nmsgid \"Fukui\"\nmsgstr \"Fukui\"\n\n#: jp/jp_prefectures.py:24\nmsgid \"Gifu\"\nmsgstr \"Gifu\"\n\n#: jp/jp_prefectures.py:25\nmsgid \"Shizuoka\"\nmsgstr \"Šizuoka\"\n\n#: jp/jp_prefectures.py:26\nmsgid \"Aichi\"\nmsgstr \"Aichi\"\n\n#: jp/jp_prefectures.py:27\nmsgid \"Mie\"\nmsgstr \"Mie\"\n\n#: jp/jp_prefectures.py:28\nmsgid \"Shiga\"\nmsgstr \"Šiga\"\n\n#: jp/jp_prefectures.py:29\nmsgid \"Kyoto\"\nmsgstr \"Kjoto\"\n\n#: jp/jp_prefectures.py:30\nmsgid \"Osaka\"\nmsgstr \"Osaka\"\n\n#: jp/jp_prefectures.py:31\nmsgid \"Hyogo\"\nmsgstr \"Hjogo\"\n\n#: jp/jp_prefectures.py:32\nmsgid \"Nara\"\nmsgstr \"Nara\"\n\n#: jp/jp_prefectures.py:33\nmsgid \"Wakayama\"\nmsgstr \"Vakajama\"\n\n#: jp/jp_prefectures.py:34\nmsgid \"Tottori\"\nmsgstr \"Tottori\"\n\n#: jp/jp_prefectures.py:35\nmsgid \"Shimane\"\nmsgstr \"Šimane\"\n\n#: jp/jp_prefectures.py:36\nmsgid \"Okayama\"\nmsgstr \"Okajama\"\n\n#: jp/jp_prefectures.py:37\nmsgid \"Hiroshima\"\nmsgstr \"Hirošima\"\n\n#: jp/jp_prefectures.py:38\nmsgid \"Yamaguchi\"\nmsgstr \"Jamaguči\"\n\n#: jp/jp_prefectures.py:39\nmsgid \"Tokushima\"\nmsgstr \"Tokušima\"\n\n#: jp/jp_prefectures.py:40\nmsgid \"Kagawa\"\nmsgstr \"Kagawa\"\n\n#: jp/jp_prefectures.py:41\nmsgid \"Ehime\"\nmsgstr \"Ehime\"\n\n#: jp/jp_prefectures.py:42\nmsgid \"Kochi\"\nmsgstr \"Koči\"\n\n#: jp/jp_prefectures.py:43\nmsgid \"Fukuoka\"\nmsgstr \"Fukuoka\"\n\n#: jp/jp_prefectures.py:44\nmsgid \"Saga\"\nmsgstr \"Saga\"\n\n#: jp/jp_prefectures.py:45\nmsgid \"Nagasaki\"\nmsgstr \"Nagasaki\"\n\n#: jp/jp_prefectures.py:46\nmsgid \"Kumamoto\"\nmsgstr \"Kumamoto\"\n\n#: jp/jp_prefectures.py:47\nmsgid \"Oita\"\nmsgstr \"Oita\"\n\n#: jp/jp_prefectures.py:48\nmsgid \"Miyazaki\"\nmsgstr \"Miyazaki\"\n\n#: jp/jp_prefectures.py:49\nmsgid \"Kagoshima\"\nmsgstr \"Kagošima\"\n\n#: jp/jp_prefectures.py:50\nmsgid \"Okinawa\"\nmsgstr \"Okinava\"\n\n#: kw/forms.py:27\nmsgid \"Enter a valid Kuwaiti Civil ID number\"\nmsgstr \"Vnesite veljavno Kuvajtsko osebno ID številko\"\n\n#: mk/forms.py:18\nmsgid \"\"\n\"Identity card numbers must contain either 4 to 7 digits or an uppercase \"\n\"letter and 7 digits.\"\nmsgstr \"\"\n\"Številka osebne izkaznice mora vsebovati ali od 4 do 7 števk ali veliko črko \"\n\"in 7 števk.\"\n\n#: mk/forms.py:57 si/forms.py:24\nmsgid \"This field should contain exactly 13 digits.\"\nmsgstr \"To polje mora vsebovati natanko 13 števil.\"\n\n#: mk/forms.py:58\nmsgid \"The first 7 digits of the UMCN must represent a valid past date.\"\nmsgstr \"Prvih 7 števil UMCN mora predstavljati veljaven datum v preteklosti.\"\n\n#: mk/forms.py:59\nmsgid \"The UMCN is not valid.\"\nmsgstr \"Število UMCN ni veljavno.\"\n\n#: mk/mk_choices.py:10\nmsgid \"Aerodrom\"\nmsgstr \"Aerodrom\"\n\n#: mk/mk_choices.py:11\nmsgid \"Aračinovo\"\nmsgstr \"Aračinovo\"\n\n#: mk/mk_choices.py:12\nmsgid \"Berovo\"\nmsgstr \"Berovo\"\n\n#: mk/mk_choices.py:13\nmsgid \"Bitola\"\nmsgstr \"Bitola\"\n\n#: mk/mk_choices.py:14\nmsgid \"Bogdanci\"\nmsgstr \"Bogdanci\"\n\n#: mk/mk_choices.py:15\nmsgid \"Bogovinje\"\nmsgstr \"Bogovinje\"\n\n#: mk/mk_choices.py:16\nmsgid \"Bosilovo\"\nmsgstr \"Bosilovo\"\n\n#: mk/mk_choices.py:17\nmsgid \"Brvenica\"\nmsgstr \"Brvenica\"\n\n#: mk/mk_choices.py:18\nmsgid \"Butel\"\nmsgstr \"Butel\"\n\n#: mk/mk_choices.py:19\nmsgid \"Valandovo\"\nmsgstr \"Valandovo\"\n\n#: mk/mk_choices.py:20\nmsgid \"Vasilevo\"\nmsgstr \"Vasilevo\"\n\n#: mk/mk_choices.py:21\nmsgid \"Vevčani\"\nmsgstr \"Vevčani\"\n\n#: mk/mk_choices.py:22\nmsgid \"Veles\"\nmsgstr \"Veles\"\n\n#: mk/mk_choices.py:23\nmsgid \"Vinica\"\nmsgstr \"Vinica\"\n\n#: mk/mk_choices.py:24\nmsgid \"Vraneštica\"\nmsgstr \"Vraneštica\"\n\n#: mk/mk_choices.py:25\nmsgid \"Vrapčište\"\nmsgstr \"Vrapčište\"\n\n#: mk/mk_choices.py:26\nmsgid \"Gazi Baba\"\nmsgstr \"Gazi Baba\"\n\n#: mk/mk_choices.py:27\nmsgid \"Gevgelija\"\nmsgstr \"Gevgelija\"\n\n#: mk/mk_choices.py:28\nmsgid \"Gostivar\"\nmsgstr \"Gostivar\"\n\n#: mk/mk_choices.py:29\nmsgid \"Gradsko\"\nmsgstr \"Gradsko\"\n\n#: mk/mk_choices.py:30\nmsgid \"Debar\"\nmsgstr \"Debar\"\n\n#: mk/mk_choices.py:31\nmsgid \"Debarca\"\nmsgstr \"Debarca\"\n\n#: mk/mk_choices.py:32\nmsgid \"Delčevo\"\nmsgstr \"Delčevo\"\n\n#: mk/mk_choices.py:33\nmsgid \"Demir Kapija\"\nmsgstr \"Demir Kapija\"\n\n#: mk/mk_choices.py:34\nmsgid \"Demir Hisar\"\nmsgstr \"Demir Hisar\"\n\n#: mk/mk_choices.py:35\nmsgid \"Dolneni\"\nmsgstr \"Dolneni\"\n\n#: mk/mk_choices.py:36\nmsgid \"Drugovo\"\nmsgstr \"Drugovo\"\n\n#: mk/mk_choices.py:37\nmsgid \"Gjorče Petrov\"\nmsgstr \"Gjorče Petrov\"\n\n#: mk/mk_choices.py:38\nmsgid \"Želino\"\nmsgstr \"Želino\"\n\n#: mk/mk_choices.py:39\nmsgid \"Zajas\"\nmsgstr \"Zajas\"\n\n#: mk/mk_choices.py:40\nmsgid \"Zelenikovo\"\nmsgstr \"Zelenikovo\"\n\n#: mk/mk_choices.py:41\nmsgid \"Zrnovci\"\nmsgstr \"Zrnovci\"\n\n#: mk/mk_choices.py:42\nmsgid \"Ilinden\"\nmsgstr \"Ilinden\"\n\n#: mk/mk_choices.py:43\nmsgid \"Jegunovce\"\nmsgstr \"Jegunovce\"\n\n#: mk/mk_choices.py:44\nmsgid \"Kavadarci\"\nmsgstr \"Kavadarci\"\n\n#: mk/mk_choices.py:45\nmsgid \"Karbinci\"\nmsgstr \"Karbinci\"\n\n#: mk/mk_choices.py:46\nmsgid \"Karpoš\"\nmsgstr \"Karpoš\"\n\n#: mk/mk_choices.py:47\nmsgid \"Kisela Voda\"\nmsgstr \"Kisela Voda\"\n\n#: mk/mk_choices.py:48\nmsgid \"Kičevo\"\nmsgstr \"Kičevo\"\n\n#: mk/mk_choices.py:49\nmsgid \"Konče\"\nmsgstr \"Konče\"\n\n#: mk/mk_choices.py:50\nmsgid \"Koćani\"\nmsgstr \"Koćani\"\n\n#: mk/mk_choices.py:51\nmsgid \"Kratovo\"\nmsgstr \"Kratovo\"\n\n#: mk/mk_choices.py:52\nmsgid \"Kriva Palanka\"\nmsgstr \"Kriva Palanka\"\n\n#: mk/mk_choices.py:53\nmsgid \"Krivogaštani\"\nmsgstr \"Krivogaštani\"\n\n#: mk/mk_choices.py:54\nmsgid \"Kruševo\"\nmsgstr \"Kruševo\"\n\n#: mk/mk_choices.py:55\nmsgid \"Kumanovo\"\nmsgstr \"Kumanovo\"\n\n#: mk/mk_choices.py:56\nmsgid \"Lipkovo\"\nmsgstr \"Lipkovo\"\n\n#: mk/mk_choices.py:57\nmsgid \"Lozovo\"\nmsgstr \"Lozovo\"\n\n#: mk/mk_choices.py:58\nmsgid \"Mavrovo i Rostuša\"\nmsgstr \"Mavrovo i Rostuša\"\n\n#: mk/mk_choices.py:59\nmsgid \"Makedonska Kamenica\"\nmsgstr \"Makedonska Kamenica\"\n\n#: mk/mk_choices.py:60\nmsgid \"Makedonski Brod\"\nmsgstr \"Makedonski Brod\"\n\n#: mk/mk_choices.py:61\nmsgid \"Mogila\"\nmsgstr \"Mogila\"\n\n#: mk/mk_choices.py:62\nmsgid \"Negotino\"\nmsgstr \"Negotino\"\n\n#: mk/mk_choices.py:63\nmsgid \"Novaci\"\nmsgstr \"Novaci\"\n\n#: mk/mk_choices.py:64\nmsgid \"Novo Selo\"\nmsgstr \"Novo Selo\"\n\n#: mk/mk_choices.py:65\nmsgid \"Oslomej\"\nmsgstr \"Oslomej\"\n\n#: mk/mk_choices.py:66\nmsgid \"Ohrid\"\nmsgstr \"Ohrid\"\n\n#: mk/mk_choices.py:67\nmsgid \"Petrovec\"\nmsgstr \"Petrovec\"\n\n#: mk/mk_choices.py:68\nmsgid \"Pehčevo\"\nmsgstr \"Pehčevo\"\n\n#: mk/mk_choices.py:69\nmsgid \"Plasnica\"\nmsgstr \"Plasnica\"\n\n#: mk/mk_choices.py:70\nmsgid \"Prilep\"\nmsgstr \"Prilep\"\n\n#: mk/mk_choices.py:71\nmsgid \"Probištip\"\nmsgstr \"Probištip\"\n\n#: mk/mk_choices.py:72\nmsgid \"Radoviš\"\nmsgstr \"Radoviš\"\n\n#: mk/mk_choices.py:73\nmsgid \"Rankovce\"\nmsgstr \"Rankovce\"\n\n#: mk/mk_choices.py:74\nmsgid \"Resen\"\nmsgstr \"Resen\"\n\n#: mk/mk_choices.py:75\nmsgid \"Rosoman\"\nmsgstr \"Rosoman\"\n\n#: mk/mk_choices.py:76\nmsgid \"Saraj\"\nmsgstr \"Saraj\"\n\n#: mk/mk_choices.py:77\nmsgid \"Sveti Nikole\"\nmsgstr \"Sveti Nikole\"\n\n#: mk/mk_choices.py:78\nmsgid \"Sopište\"\nmsgstr \"Sopište\"\n\n#: mk/mk_choices.py:79\nmsgid \"Star Dojran\"\nmsgstr \"Star Dojran\"\n\n#: mk/mk_choices.py:80\nmsgid \"Staro Nagoričane\"\nmsgstr \"Staro Nagoričane\"\n\n#: mk/mk_choices.py:81\nmsgid \"Struga\"\nmsgstr \"Struga\"\n\n#: mk/mk_choices.py:82\nmsgid \"Strumica\"\nmsgstr \"Strumica\"\n\n#: mk/mk_choices.py:83\nmsgid \"Studeničani\"\nmsgstr \"Studenčani\"\n\n#: mk/mk_choices.py:84\nmsgid \"Tearce\"\nmsgstr \"Tearce\"\n\n#: mk/mk_choices.py:85\nmsgid \"Tetovo\"\nmsgstr \"Tetovo\"\n\n#: mk/mk_choices.py:86\nmsgid \"Centar\"\nmsgstr \"Centar\"\n\n#: mk/mk_choices.py:87\nmsgid \"Centar-Župa\"\nmsgstr \"Centar-Župa\"\n\n#: mk/mk_choices.py:88\nmsgid \"Čair\"\nmsgstr \"Čair\"\n\n#: mk/mk_choices.py:89\nmsgid \"Čaška\"\nmsgstr \"Čaška\"\n\n#: mk/mk_choices.py:90\nmsgid \"Češinovo-Obleševo\"\nmsgstr \"Češinovo-Obleševo\"\n\n#: mk/mk_choices.py:91\nmsgid \"Čučer-Sandevo\"\nmsgstr \"Čučer-Sandevo\"\n\n#: mk/mk_choices.py:92\nmsgid \"Štip\"\nmsgstr \"Štip\"\n\n#: mk/mk_choices.py:93\nmsgid \"Šuto Orizari\"\nmsgstr \"Šuto Orizani\"\n\n#: mk/models.py:11\nmsgid \"Macedonian identity card number\"\nmsgstr \"Številka makedonske osebne izkaznice\"\n\n#: mk/models.py:25\nmsgid \"A Macedonian municipality (2 character code)\"\nmsgstr \"Šifra makedonskega mesta (2 črkovna koda)\"\n\n#: mk/models.py:35\nmsgid \"Unique master citizen number (13 digits)\"\nmsgstr \"Enotna matična številka občana (13 števk)\"\n\n#: mx/forms.py:67\nmsgid \"Enter a valid zip code in the format XXXXX.\"\nmsgstr \"Vnesite veljavno poštno številko v zapisu XXXXX.\"\n\n#: mx/forms.py:110\nmsgid \"Enter a valid RFC.\"\nmsgstr \"Vnesite veljaven RFC.\"\n\n#: mx/forms.py:111\nmsgid \"Invalid checksum for RFC.\"\nmsgstr \"Neveljavna preverjevalna števka za RFC.\"\n\n#: mx/forms.py:191\nmsgid \"Enter a valid CURP.\"\nmsgstr \"Vnesite veljavno CURP.\"\n\n#: mx/forms.py:192\nmsgid \"Invalid checksum for CURP.\"\nmsgstr \"Neveljavna preverjevalna števka za CURP.\"\n\n#: mx/models.py:14\nmsgid \"Mexico state (three uppercase letters)\"\nmsgstr \"Mehiška država (tri velike črke)\"\n\n#: mx/models.py:27\nmsgid \"Mexico zip code\"\nmsgstr \"Mehiška poštna številka\"\n\n#: mx/models.py:44\nmsgid \"Mexican RFC\"\nmsgstr \"Mehiški RFC\"\n\n#: mx/models.py:61\nmsgid \"Mexican CURP\"\nmsgstr \"Mehiški CURP\"\n\n#: mx/mx_states.py:14\nmsgid \"Aguascalientes\"\nmsgstr \"Aguascalientes\"\n\n#: mx/mx_states.py:15\nmsgid \"Baja California\"\nmsgstr \"Baja California\"\n\n#: mx/mx_states.py:16\nmsgid \"Baja California Sur\"\nmsgstr \"Baja California Sur\"\n\n#: mx/mx_states.py:17\nmsgid \"Campeche\"\nmsgstr \"Campeche\"\n\n#: mx/mx_states.py:18\nmsgid \"Chihuahua\"\nmsgstr \"Chihuahua\"\n\n#: mx/mx_states.py:19\nmsgid \"Chiapas\"\nmsgstr \"Chiapas\"\n\n#: mx/mx_states.py:20\nmsgid \"Coahuila\"\nmsgstr \"Coahuila\"\n\n#: mx/mx_states.py:21\nmsgid \"Colima\"\nmsgstr \"Colima\"\n\n#: mx/mx_states.py:22\nmsgid \"Distrito Federal\"\nmsgstr \"Distrito Federal\"\n\n#: mx/mx_states.py:23\nmsgid \"Durango\"\nmsgstr \"Durango\"\n\n#: mx/mx_states.py:24\nmsgid \"Guerrero\"\nmsgstr \"Guerrero\"\n\n#: mx/mx_states.py:25\nmsgid \"Guanajuato\"\nmsgstr \"Guanajuato\"\n\n#: mx/mx_states.py:26\nmsgid \"Hidalgo\"\nmsgstr \"Hidalgo\"\n\n#: mx/mx_states.py:27\nmsgid \"Jalisco\"\nmsgstr \"Jalisco\"\n\n#: mx/mx_states.py:28\nmsgid \"Estado de México\"\nmsgstr \"Estado de México\"\n\n#: mx/mx_states.py:29\nmsgid \"Michoacán\"\nmsgstr \"Michoacán\"\n\n#: mx/mx_states.py:30\nmsgid \"Morelos\"\nmsgstr \"Morelos\"\n\n#: mx/mx_states.py:31\nmsgid \"Nayarit\"\nmsgstr \"Nayarit\"\n\n#: mx/mx_states.py:32\nmsgid \"Nuevo León\"\nmsgstr \"Nuevo León\"\n\n#: mx/mx_states.py:33\nmsgid \"Oaxaca\"\nmsgstr \"Oaxaca\"\n\n#: mx/mx_states.py:34\nmsgid \"Puebla\"\nmsgstr \"Puebla\"\n\n#: mx/mx_states.py:35\nmsgid \"Querétaro\"\nmsgstr \"Querétaro\"\n\n#: mx/mx_states.py:36\nmsgid \"Quintana Roo\"\nmsgstr \"Quintana Roo\"\n\n#: mx/mx_states.py:37\nmsgid \"Sinaloa\"\nmsgstr \"Sinaloa\"\n\n#: mx/mx_states.py:38\nmsgid \"San Luis Potosí\"\nmsgstr \"San Luis Potosí\"\n\n#: mx/mx_states.py:39\nmsgid \"Sonora\"\nmsgstr \"Sonora\"\n\n#: mx/mx_states.py:40\nmsgid \"Tabasco\"\nmsgstr \"Tabasco\"\n\n#: mx/mx_states.py:41\nmsgid \"Tamaulipas\"\nmsgstr \"Tamaulipas\"\n\n#: mx/mx_states.py:42\nmsgid \"Tlaxcala\"\nmsgstr \"Tlaxcala\"\n\n#: mx/mx_states.py:43\nmsgid \"Veracruz\"\nmsgstr \"Veracruz\"\n\n#: mx/mx_states.py:44\nmsgid \"Yucatán\"\nmsgstr \"Yucatán\"\n\n#: mx/mx_states.py:45\nmsgid \"Zacatecas\"\nmsgstr \"Zacatecas\"\n\n#: nl/forms.py:26\nmsgid \"Enter a valid postal code\"\nmsgstr \"Vnesite veljavno poštno številko\"\n\n#: nl/forms.py:82\nmsgid \"Enter a valid SoFi number\"\nmsgstr \"Vnesite veljavno nizozemsko davčno številko\"\n\n#: nl/nl_provinces.py:4\nmsgid \"Drenthe\"\nmsgstr \"Drenthe\"\n\n#: nl/nl_provinces.py:5\nmsgid \"Flevoland\"\nmsgstr \"Flevoland\"\n\n#: nl/nl_provinces.py:6\nmsgid \"Friesland\"\nmsgstr \"Friesland\"\n\n#: nl/nl_provinces.py:7\nmsgid \"Gelderland\"\nmsgstr \"Gelderland\"\n\n#: nl/nl_provinces.py:8\nmsgid \"Groningen\"\nmsgstr \"Groningen\"\n\n#: nl/nl_provinces.py:10\nmsgid \"Noord-Brabant\"\nmsgstr \"Noord-Brabant\"\n\n#: nl/nl_provinces.py:11\nmsgid \"Noord-Holland\"\nmsgstr \"Noord-Holland\"\n\n#: nl/nl_provinces.py:12\nmsgid \"Overijssel\"\nmsgstr \"Overijssel\"\n\n#: nl/nl_provinces.py:13\nmsgid \"Utrecht\"\nmsgstr \"Utrecht\"\n\n#: nl/nl_provinces.py:14\nmsgid \"Zeeland\"\nmsgstr \"Zeeland\"\n\n#: nl/nl_provinces.py:15\nmsgid \"Zuid-Holland\"\nmsgstr \"Zuid-Holland\"\n\n#: no/forms.py:39\nmsgid \"Enter a valid Norwegian social security number.\"\nmsgstr \"Vnesite veljavno številko norveškega socialnega zavarovanja.\"\n\n#: pe/forms.py:28\nmsgid \"This field requires 8 digits.\"\nmsgstr \"To polje mora vsebovati 8 števk.\"\n\n#: pe/forms.py:56\nmsgid \"This field requires 11 digits.\"\nmsgstr \"To polje mora vsebovati 11 števk.\"\n\n#: pl/forms.py:42\nmsgid \"National Identification Number consists of 11 digits.\"\nmsgstr \"Nacionalna identifikacijska številka je sestavljena iz 11 števk.\"\n\n#: pl/forms.py:43\nmsgid \"Wrong checksum for the National Identification Number.\"\nmsgstr \"\"\n\"Preverjevalna vsota za nacionalno identifikacijsko številko ne ustreza.\"\n\n#: pl/forms.py:79\nmsgid \"National ID Card Number consists of 3 letters and 6 digits.\"\nmsgstr \"Številka osebne izkaznice je sestavljena iz treh črk in šestih števk.\"\n\n#: pl/forms.py:80\nmsgid \"Wrong checksum for the National ID Card Number.\"\nmsgstr \"Napačna preverjevalna števka za številko osebne izkaznice.\"\n\n#: pl/forms.py:131\nmsgid \"\"\n\"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or \"\n\"XXXXXXXXXX.\"\nmsgstr \"\"\n\"Vnesite veljavno davčno številko (NIP) v zapisu XXX-XXX-XX-XX, XXX-XX-XX-XXX \"\n\"ali XXXXXXXXXX.\"\n\n#: pl/forms.py:132\nmsgid \"Wrong checksum for the Tax Number (NIP).\"\nmsgstr \"Napačna preverjevalna vsota za davčno številko (NIP).\"\n\n#: pl/forms.py:171\nmsgid \"National Business Register Number (REGON) consists of 9 or 14 digits.\"\nmsgstr \"\"\n\"Nacionalna poslovna registracijska številka (REGON) je sestavljena iz 9 ali \"\n\"14 števk.\"\n\n#: pl/forms.py:172\nmsgid \"Wrong checksum for the National Business Register Number (REGON).\"\nmsgstr \"\"\n\"Napačna preverjevalna vsota za nacionalno poslovno registracijsko številko \"\n\"(REGON).\"\n\n#: pl/forms.py:212\nmsgid \"Enter a postal code in the format XX-XXX.\"\nmsgstr \"Vnesite veljavno poštno številko v obliki XX-XXX.\"\n\n#: pl/pl_voivodeships.py:8\nmsgid \"Lower Silesia\"\nmsgstr \"Spodna Šlezija\"\n\n#: pl/pl_voivodeships.py:9\nmsgid \"Kuyavia-Pomerania\"\nmsgstr \"Kuyavia-Pomerania\"\n\n#: pl/pl_voivodeships.py:10\nmsgid \"Lublin\"\nmsgstr \"Lublin\"\n\n#: pl/pl_voivodeships.py:11\nmsgid \"Lubusz\"\nmsgstr \"Lubusz\"\n\n#: pl/pl_voivodeships.py:12\nmsgid \"Lodz\"\nmsgstr \"Lodz\"\n\n#: pl/pl_voivodeships.py:13\nmsgid \"Lesser Poland\"\nmsgstr \"Lesser Poland\"\n\n#: pl/pl_voivodeships.py:14\nmsgid \"Masovia\"\nmsgstr \"Masovia\"\n\n#: pl/pl_voivodeships.py:15\nmsgid \"Opole\"\nmsgstr \"Opole\"\n\n#: pl/pl_voivodeships.py:16\nmsgid \"Subcarpatia\"\nmsgstr \"Subcarpatia\"\n\n#: pl/pl_voivodeships.py:17\nmsgid \"Podlasie\"\nmsgstr \"Podlasie\"\n\n#: pl/pl_voivodeships.py:18\nmsgid \"Pomerania\"\nmsgstr \"Pomerania\"\n\n#: pl/pl_voivodeships.py:19\nmsgid \"Silesia\"\nmsgstr \"Šlezija\"\n\n#: pl/pl_voivodeships.py:20\nmsgid \"Swietokrzyskie\"\nmsgstr \"Swietokrzyskie\"\n\n#: pl/pl_voivodeships.py:21\nmsgid \"Warmia-Masuria\"\nmsgstr \"Warmia-Masuria\"\n\n#: pl/pl_voivodeships.py:22\nmsgid \"Greater Poland\"\nmsgstr \"Greater Poland\"\n\n#: pl/pl_voivodeships.py:23\nmsgid \"West Pomerania\"\nmsgstr \"West Pomerania\"\n\n#: pt/forms.py:19\nmsgid \"Enter a zip code in the format XXXX-XXX.\"\nmsgstr \"Vnesite poštno številko v zapisu XXXX-XXX.\"\n\n#: pt/forms.py:39\nmsgid \"Phone numbers must have 9 digits, or start by + or 00.\"\nmsgstr \"Telefonske številke morajo imeti 9 števk ali pa se začeti z + ali 00.\"\n\n#: ro/forms.py:22\nmsgid \"Enter a valid CIF.\"\nmsgstr \"Vnesite veljaven CIF.\"\n\n#: ro/forms.py:59\nmsgid \"Enter a valid CNP.\"\nmsgstr \"Vnesite veljaven CNP.\"\n\n#: ro/forms.py:143\nmsgid \"Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format\"\nmsgstr \"Vpišite veljaen IBAN v obliki ROXX-XXXX-XXXX-XXXX-XXXX-XXXX.\"\n\n#: ro/forms.py:175\nmsgid \"Phone numbers must be in XXXX-XXXXXX format.\"\nmsgstr \"Telefonska številka mora biti v zapisu XXXX-XXXXXX.\"\n\n#: ro/forms.py:200\nmsgid \"Enter a valid postal code in the format XXXXXX\"\nmsgstr \"Vnesite veljavno poštno številko v obliki XXXXXX.\"\n\n#: ru/forms.py:37\nmsgid \"Enter a postal code in the format XXXXXX.\"\nmsgstr \"Vnesite poštno številko v zapisu XXXXXX.\"\n\n#: ru/forms.py:50\nmsgid \"Enter a passport number in the format XXXX XXXXXX.\"\nmsgstr \"Vnesite številko potnega lista v zapisu XXXX XXXXXX.\"\n\n#: ru/forms.py:63\nmsgid \"Enter a passport number in the format XX XXXXXXX.\"\nmsgstr \"Vnesite številko potnega lista v zapisu XX XXXXXXX.\"\n\n#: ru/ru_regions.py:10\nmsgid \"Central Federal County\"\nmsgstr \"Osrednja zvezna pokrajina\"\n\n#: ru/ru_regions.py:11\nmsgid \"South Federal County\"\nmsgstr \"Južna zvezna pokrajina\"\n\n#: ru/ru_regions.py:12\nmsgid \"North-West Federal County\"\nmsgstr \"Severozahodna zvezna pokrajina\"\n\n#: ru/ru_regions.py:13\nmsgid \"Far-East Federal County\"\nmsgstr \"Zvezna pokrajina daljnega vzhoda\"\n\n#: ru/ru_regions.py:14\nmsgid \"Siberian Federal County\"\nmsgstr \"Sibirska zvezna pokrajina\"\n\n#: ru/ru_regions.py:15\nmsgid \"Ural Federal County\"\nmsgstr \"Uralska zvezna pokrajina\"\n\n#: ru/ru_regions.py:16\nmsgid \"Privolzhsky Federal County\"\nmsgstr \"Zvezna pokrajina Privolzhsky\"\n\n#: ru/ru_regions.py:17\nmsgid \"North-Caucasian Federal County\"\nmsgstr \"Servernokavkaška zvezna pokrajina\"\n\n#: ru/ru_regions.py:21\nmsgid \"Moskva\"\nmsgstr \"Moskva\"\n\n#: ru/ru_regions.py:22\nmsgid \"Saint-Peterburg\"\nmsgstr \"Sankt Petersburg\"\n\n#: ru/ru_regions.py:23\nmsgid \"Moskovskaya oblast'\"\nmsgstr \"Moskovskaya oblast'\"\n\n#: ru/ru_regions.py:24\nmsgid \"Adygeya, Respublika\"\nmsgstr \"Adygeya, Respublika\"\n\n#: ru/ru_regions.py:25\nmsgid \"Bashkortostan, Respublika\"\nmsgstr \"Bashkortostan, Respublika\"\n\n#: ru/ru_regions.py:26\nmsgid \"Buryatia, Respublika\"\nmsgstr \"Buryatia, Respublika\"\n\n#: ru/ru_regions.py:27\nmsgid \"Altay, Respublika\"\nmsgstr \"Altay, Respublika\"\n\n#: ru/ru_regions.py:28\nmsgid \"Dagestan, Respublika\"\nmsgstr \"Dagestan, Respublika\"\n\n#: ru/ru_regions.py:29\nmsgid \"Ingushskaya Respublika\"\nmsgstr \"Ingushskaya Respublika\"\n\n#: ru/ru_regions.py:30\nmsgid \"Kabardino-Balkarskaya Respublika\"\nmsgstr \"Kabardino-Balkarskaya Respublika\"\n\n#: ru/ru_regions.py:31\nmsgid \"Kalmykia, Respublika\"\nmsgstr \"Kalmykia, Respublika\"\n\n#: ru/ru_regions.py:32\nmsgid \"Karachaevo-Cherkesskaya Respublika\"\nmsgstr \"Karachaevo-Cherkesskaya Respublika\"\n\n#: ru/ru_regions.py:33\nmsgid \"Karelia, Respublika\"\nmsgstr \"Karelia, Respublika\"\n\n#: ru/ru_regions.py:34\nmsgid \"Komi, Respublika\"\nmsgstr \"Komi, Respublika\"\n\n#: ru/ru_regions.py:35\nmsgid \"Mariy Ehl, Respublika\"\nmsgstr \"Mariy Ehl, Respublika\"\n\n#: ru/ru_regions.py:36\nmsgid \"Mordovia, Respublika\"\nmsgstr \"Mordovia, Respublika\"\n\n#: ru/ru_regions.py:37\nmsgid \"Sakha, Respublika (Yakutiya)\"\nmsgstr \"Sakha, Respublika (Yakutiya)\"\n\n#: ru/ru_regions.py:38\nmsgid \"Severnaya Osetia, Respublika (Alania)\"\nmsgstr \"Severnaya Osetia, Respublika (Alania)\"\n\n#: ru/ru_regions.py:39\nmsgid \"Tatarstan, Respublika\"\nmsgstr \"Tatarstan, Respublika\"\n\n#: ru/ru_regions.py:40\nmsgid \"Tyva, Respublika (Tuva)\"\nmsgstr \"Tyva, Respublika (Tuva)\"\n\n#: ru/ru_regions.py:41\nmsgid \"Udmurtskaya Respublika\"\nmsgstr \"Udmurtskaya Respublika\"\n\n#: ru/ru_regions.py:42\nmsgid \"Khakassiya, Respublika\"\nmsgstr \"Khakassiya, Respublika\"\n\n#: ru/ru_regions.py:43\nmsgid \"Chechenskaya Respublika\"\nmsgstr \"Chechenskaya Respublika\"\n\n#: ru/ru_regions.py:44\nmsgid \"Chuvashskaya Respublika\"\nmsgstr \"Chuvashskaya Respublika\"\n\n#: ru/ru_regions.py:45\nmsgid \"Altayskiy Kray\"\nmsgstr \"Altayskiy Kray\"\n\n#: ru/ru_regions.py:46\nmsgid \"Zabaykalskiy Kray\"\nmsgstr \"Zabaykalskiy Kray\"\n\n#: ru/ru_regions.py:47\nmsgid \"Kamchatskiy Kray\"\nmsgstr \"Kamchatskiy Kray\"\n\n#: ru/ru_regions.py:48\nmsgid \"Krasnodarskiy Kray\"\nmsgstr \"Krasnodarskiy Kray\"\n\n#: ru/ru_regions.py:49\nmsgid \"Krasnoyarskiy Kray\"\nmsgstr \"Krasnoyarskiy Kray\"\n\n#: ru/ru_regions.py:50\nmsgid \"Permskiy Kray\"\nmsgstr \"Permskiy Kray\"\n\n#: ru/ru_regions.py:51\nmsgid \"Primorskiy Kray\"\nmsgstr \"Primorskiy Kray\"\n\n#: ru/ru_regions.py:52\nmsgid \"Stavropol'siyy Kray\"\nmsgstr \"Stavropol'siyy Kray\"\n\n#: ru/ru_regions.py:53\nmsgid \"Khabarovskiy Kray\"\nmsgstr \"Khabarovskiy Kray\"\n\n#: ru/ru_regions.py:54\nmsgid \"Amurskaya oblast'\"\nmsgstr \"Amurskaya oblast'\"\n\n#: ru/ru_regions.py:55\nmsgid \"Arkhangel'skaya oblast'\"\nmsgstr \"Arkhangel'skaya oblast'\"\n\n#: ru/ru_regions.py:56\nmsgid \"Astrakhanskaya oblast'\"\nmsgstr \"Astrakhanskaya oblast'\"\n\n#: ru/ru_regions.py:57\nmsgid \"Belgorodskaya oblast'\"\nmsgstr \"Belgorodskaya oblast'\"\n\n#: ru/ru_regions.py:58\nmsgid \"Bryanskaya oblast'\"\nmsgstr \"Bryanskaya oblast'\"\n\n#: ru/ru_regions.py:59\nmsgid \"Vladimirskaya oblast'\"\nmsgstr \"Vladimirskaya oblast'\"\n\n#: ru/ru_regions.py:60\nmsgid \"Volgogradskaya oblast'\"\nmsgstr \"Volgogradskaya oblast'\"\n\n#: ru/ru_regions.py:61\nmsgid \"Vologodskaya oblast'\"\nmsgstr \"Vologodskaya oblast'\"\n\n#: ru/ru_regions.py:62\nmsgid \"Voronezhskaya oblast'\"\nmsgstr \"Voronezhskaya oblast'\"\n\n#: ru/ru_regions.py:63\nmsgid \"Ivanovskaya oblast'\"\nmsgstr \"Ivanovskaya oblast'\"\n\n#: ru/ru_regions.py:64\nmsgid \"Irkutskaya oblast'\"\nmsgstr \"Irkutskaya oblast'\"\n\n#: ru/ru_regions.py:65\nmsgid \"Kaliningradskaya oblast'\"\nmsgstr \"Kaliningradskaya oblast'\"\n\n#: ru/ru_regions.py:66\nmsgid \"Kaluzhskaya oblast'\"\nmsgstr \"Kaluzhskaya oblast'\"\n\n#: ru/ru_regions.py:67\nmsgid \"Kemerovskaya oblast'\"\nmsgstr \"Kemerovskaya oblast'\"\n\n#: ru/ru_regions.py:68\nmsgid \"Kirovskaya oblast'\"\nmsgstr \"Kirovskaya oblast'\"\n\n#: ru/ru_regions.py:69\nmsgid \"Kostromskaya oblast'\"\nmsgstr \"Kostromskaya oblast'\"\n\n#: ru/ru_regions.py:70\nmsgid \"Kurganskaya oblast'\"\nmsgstr \"Kurganskaya oblast'\"\n\n#: ru/ru_regions.py:71\nmsgid \"Kurskaya oblast'\"\nmsgstr \"Kurskaya oblast'\"\n\n#: ru/ru_regions.py:72\nmsgid \"Leningradskaya oblast'\"\nmsgstr \"Leningradskaya oblast'\"\n\n#: ru/ru_regions.py:73\nmsgid \"Lipeckaya oblast'\"\nmsgstr \"Lipeckaya oblast'\"\n\n#: ru/ru_regions.py:74\nmsgid \"Magadanskaya oblast'\"\nmsgstr \"Magadanskaya oblast'\"\n\n#: ru/ru_regions.py:75\nmsgid \"Murmanskaya oblast'\"\nmsgstr \"Murmanskaya oblast'\"\n\n#: ru/ru_regions.py:76\nmsgid \"Nizhegorodskaja oblast'\"\nmsgstr \"Nizhegorodskaja oblast'\"\n\n#: ru/ru_regions.py:77\nmsgid \"Novgorodskaya oblast'\"\nmsgstr \"Novgorodskaya oblast'\"\n\n#: ru/ru_regions.py:78\nmsgid \"Novosibirskaya oblast'\"\nmsgstr \"Novosibirskaya oblast'\"\n\n#: ru/ru_regions.py:79\nmsgid \"Omskaya oblast'\"\nmsgstr \"Omskaya oblast'\"\n\n#: ru/ru_regions.py:80\nmsgid \"Orenburgskaya oblast'\"\nmsgstr \"Orenburgskaya oblast'\"\n\n#: ru/ru_regions.py:81\nmsgid \"Orlovskaya oblast'\"\nmsgstr \"Orlovskaya oblast'\"\n\n#: ru/ru_regions.py:82\nmsgid \"Penzenskaya oblast'\"\nmsgstr \"Penzenskaya oblast'\"\n\n#: ru/ru_regions.py:83\nmsgid \"Pskovskaya oblast'\"\nmsgstr \"Pskovskaya oblast'\"\n\n#: ru/ru_regions.py:84\nmsgid \"Rostovskaya oblast'\"\nmsgstr \"Rostovskaya oblast'\"\n\n#: ru/ru_regions.py:85\nmsgid \"Rjazanskaya oblast'\"\nmsgstr \"Rjazanskaya oblast'\"\n\n#: ru/ru_regions.py:86\nmsgid \"Samarskaya oblast'\"\nmsgstr \"Samarskaya oblast'\"\n\n#: ru/ru_regions.py:87\nmsgid \"Saratovskaya oblast'\"\nmsgstr \"Saratovskaya oblast'\"\n\n#: ru/ru_regions.py:88\nmsgid \"Sakhalinskaya oblast'\"\nmsgstr \"Sakhalinskaya oblast'\"\n\n#: ru/ru_regions.py:89\nmsgid \"Sverdlovskaya oblast'\"\nmsgstr \"Sverdlovskaya oblast'\"\n\n#: ru/ru_regions.py:90\nmsgid \"Smolenskaya oblast'\"\nmsgstr \"Smolenskaya oblast'\"\n\n#: ru/ru_regions.py:91\nmsgid \"Tambovskaya oblast'\"\nmsgstr \"Tambovskaya oblast'\"\n\n#: ru/ru_regions.py:92\nmsgid \"Tverskaya oblast'\"\nmsgstr \"Tverskaya oblast'\"\n\n#: ru/ru_regions.py:93\nmsgid \"Tomskaya oblast'\"\nmsgstr \"Tomskaya oblast'\"\n\n#: ru/ru_regions.py:94\nmsgid \"Tul'skaya oblast'\"\nmsgstr \"Tul'skaya oblast'\"\n\n#: ru/ru_regions.py:95\nmsgid \"Tyumenskaya oblast'\"\nmsgstr \"Tyumenskaya oblast'\"\n\n#: ru/ru_regions.py:96\nmsgid \"Ul'ianovskaya oblast'\"\nmsgstr \"Ul'ianovskaya oblast'\"\n\n#: ru/ru_regions.py:97\nmsgid \"Chelyabinskaya oblast'\"\nmsgstr \"Chelyabinskaya oblast'\"\n\n#: ru/ru_regions.py:98\nmsgid \"Yaroslavskaya oblast'\"\nmsgstr \"Yaroslavskaya oblast'\"\n\n#: ru/ru_regions.py:99\nmsgid \"Evreyskaya avtonomnaja oblast'\"\nmsgstr \"Evreyskaya avtonomnaja oblast'\"\n\n#: ru/ru_regions.py:100\nmsgid \"Neneckiy autonomnyy okrug\"\nmsgstr \"Neneckiy autonomnyy okrug\"\n\n#: ru/ru_regions.py:101\nmsgid \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\nmsgstr \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\n\n#: ru/ru_regions.py:102\nmsgid \"Chukotskiy avtonomnyy okrug\"\nmsgstr \"Chukotskiy avtonomnyy okrug\"\n\n#: ru/ru_regions.py:103\nmsgid \"Yamalo-Neneckiy avtonomnyy okrug\"\nmsgstr \"Yamalo-Neneckiy avtonomnyy okrug\"\n\n#: se/forms.py:54\nmsgid \"Enter a valid Swedish organisation number.\"\nmsgstr \"Vnesite veljavno švedsko številko organizacije.\"\n\n#: se/forms.py:111\nmsgid \"Enter a valid Swedish personal identity number.\"\nmsgstr \"Vnesite veljavno švedsko osebno identifikacijsko številko.\"\n\n#: se/forms.py:112\nmsgid \"Co-ordination numbers are not allowed.\"\nmsgstr \"Koordinacijske številke niso dovoljene.\"\n\n#: se/forms.py:154\nmsgid \"Enter a Swedish postal code in the format XXXXX.\"\nmsgstr \"Vnesite veljavno švedsko poštno številko v obliki XXXXX.\"\n\n#: se/se_counties.py:16\nmsgid \"Stockholm\"\nmsgstr \"Stockholm\"\n\n#: se/se_counties.py:17\nmsgid \"Västerbotten\"\nmsgstr \"Västerbotten\"\n\n#: se/se_counties.py:18\nmsgid \"Norrbotten\"\nmsgstr \"Norrbotten\"\n\n#: se/se_counties.py:19\nmsgid \"Uppsala\"\nmsgstr \"Uppsala\"\n\n#: se/se_counties.py:20\nmsgid \"Södermanland\"\nmsgstr \"Södermanland\"\n\n#: se/se_counties.py:21\nmsgid \"Östergötland\"\nmsgstr \"Östergötland\"\n\n#: se/se_counties.py:22\nmsgid \"Jönköping\"\nmsgstr \"Jönköping\"\n\n#: se/se_counties.py:23\nmsgid \"Kronoberg\"\nmsgstr \"Kronoberg\"\n\n#: se/se_counties.py:24\nmsgid \"Kalmar\"\nmsgstr \"Kalmar\"\n\n#: se/se_counties.py:25\nmsgid \"Gotland\"\nmsgstr \"Gotland\"\n\n#: se/se_counties.py:26\nmsgid \"Blekinge\"\nmsgstr \"Blekinge\"\n\n#: se/se_counties.py:27\nmsgid \"Skåne\"\nmsgstr \"Skåne\"\n\n#: se/se_counties.py:28\nmsgid \"Halland\"\nmsgstr \"Halland\"\n\n#: se/se_counties.py:29\nmsgid \"Västra Götaland\"\nmsgstr \"Västra Götaland\"\n\n#: se/se_counties.py:30\nmsgid \"Värmland\"\nmsgstr \"Värmland\"\n\n#: se/se_counties.py:31\nmsgid \"Örebro\"\nmsgstr \"Örebro\"\n\n#: se/se_counties.py:32\nmsgid \"Västmanland\"\nmsgstr \"Västmanland\"\n\n#: se/se_counties.py:33\nmsgid \"Dalarna\"\nmsgstr \"Dalarna\"\n\n#: se/se_counties.py:34\nmsgid \"Gävleborg\"\nmsgstr \"Gävleborg\"\n\n#: se/se_counties.py:35\nmsgid \"Västernorrland\"\nmsgstr \"Västernorrland\"\n\n#: se/se_counties.py:36\nmsgid \"Jämtland\"\nmsgstr \"Jämtland\"\n\n#: si/forms.py:25\nmsgid \"The first 7 digits of the EMSO must represent a valid past date.\"\nmsgstr \"Prvih 7 števk EMŠO števila mora biti veljaven pretekli datum.\"\n\n#: si/forms.py:26\nmsgid \"The EMSO is not valid.\"\nmsgstr \"EMŠO ni veljaven.\"\n\n#: si/forms.py:86\nmsgid \"Enter a valid tax number in form SIXXXXXXXX\"\nmsgstr \"Vnesite veljavno davčno številko v zapisu SIXXXXXXXX\"\n\n#: si/forms.py:151\nmsgid \"Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.\"\nmsgstr \"Vnesite telefonsko številko v zapisu +386XXXXXXXX ali 0XXXXXXXX.\"\n\n#: sk/sk_districts.py:8\nmsgid \"Banska Bystrica\"\nmsgstr \"Banska Bystrica\"\n\n#: sk/sk_districts.py:9\nmsgid \"Banska Stiavnica\"\nmsgstr \"Banska Stiavnica\"\n\n#: sk/sk_districts.py:10\nmsgid \"Bardejov\"\nmsgstr \"Bardejov\"\n\n#: sk/sk_districts.py:11\nmsgid \"Banovce nad Bebravou\"\nmsgstr \"Banovce nad Bebravou\"\n\n#: sk/sk_districts.py:12\nmsgid \"Brezno\"\nmsgstr \"Brezno\"\n\n#: sk/sk_districts.py:13\nmsgid \"Bratislava I\"\nmsgstr \"Bratislava I\"\n\n#: sk/sk_districts.py:14\nmsgid \"Bratislava II\"\nmsgstr \"Bratislava II\"\n\n#: sk/sk_districts.py:15\nmsgid \"Bratislava III\"\nmsgstr \"Bratislava III\"\n\n#: sk/sk_districts.py:16\nmsgid \"Bratislava IV\"\nmsgstr \"Bratislava IV\"\n\n#: sk/sk_districts.py:17\nmsgid \"Bratislava V\"\nmsgstr \"Bratislava V\"\n\n#: sk/sk_districts.py:18\nmsgid \"Bytca\"\nmsgstr \"Bytca\"\n\n#: sk/sk_districts.py:19\nmsgid \"Cadca\"\nmsgstr \"Cadca\"\n\n#: sk/sk_districts.py:20\nmsgid \"Detva\"\nmsgstr \"Detva\"\n\n#: sk/sk_districts.py:21\nmsgid \"Dolny Kubin\"\nmsgstr \"Dolny Kubin\"\n\n#: sk/sk_districts.py:22\nmsgid \"Dunajska Streda\"\nmsgstr \"Dunajska Streda\"\n\n#: sk/sk_districts.py:23\nmsgid \"Galanta\"\nmsgstr \"Galanta\"\n\n#: sk/sk_districts.py:24\nmsgid \"Gelnica\"\nmsgstr \"Gelnica\"\n\n#: sk/sk_districts.py:25\nmsgid \"Hlohovec\"\nmsgstr \"Hlohovec\"\n\n#: sk/sk_districts.py:26\nmsgid \"Humenne\"\nmsgstr \"Humenne\"\n\n#: sk/sk_districts.py:27\nmsgid \"Ilava\"\nmsgstr \"Ilava\"\n\n#: sk/sk_districts.py:28\nmsgid \"Kezmarok\"\nmsgstr \"Kezmarok\"\n\n#: sk/sk_districts.py:29\nmsgid \"Komarno\"\nmsgstr \"Komarno\"\n\n#: sk/sk_districts.py:30\nmsgid \"Kosice I\"\nmsgstr \"Kosice I\"\n\n#: sk/sk_districts.py:31\nmsgid \"Kosice II\"\nmsgstr \"Kosice II\"\n\n#: sk/sk_districts.py:32\nmsgid \"Kosice III\"\nmsgstr \"Kosice III\"\n\n#: sk/sk_districts.py:33\nmsgid \"Kosice IV\"\nmsgstr \"Kosice IV\"\n\n#: sk/sk_districts.py:34\nmsgid \"Kosice - okolie\"\nmsgstr \"Kosice - okolie\"\n\n#: sk/sk_districts.py:35\nmsgid \"Krupina\"\nmsgstr \"Krupina\"\n\n#: sk/sk_districts.py:36\nmsgid \"Kysucke Nove Mesto\"\nmsgstr \"Kysucke Nove Mesto\"\n\n#: sk/sk_districts.py:37\nmsgid \"Levice\"\nmsgstr \"Levice\"\n\n#: sk/sk_districts.py:38\nmsgid \"Levoca\"\nmsgstr \"Levoca\"\n\n#: sk/sk_districts.py:39\nmsgid \"Liptovsky Mikulas\"\nmsgstr \"Liptovsky Mikulas\"\n\n#: sk/sk_districts.py:40\nmsgid \"Lucenec\"\nmsgstr \"Lucenec\"\n\n#: sk/sk_districts.py:41\nmsgid \"Malacky\"\nmsgstr \"Malacky\"\n\n#: sk/sk_districts.py:42\nmsgid \"Martin\"\nmsgstr \"Martin\"\n\n#: sk/sk_districts.py:43\nmsgid \"Medzilaborce\"\nmsgstr \"Medzilaborce\"\n\n#: sk/sk_districts.py:44\nmsgid \"Michalovce\"\nmsgstr \"Michalovce\"\n\n#: sk/sk_districts.py:45\nmsgid \"Myjava\"\nmsgstr \"Myjava\"\n\n#: sk/sk_districts.py:46\nmsgid \"Namestovo\"\nmsgstr \"Namestovo\"\n\n#: sk/sk_districts.py:47\nmsgid \"Nitra\"\nmsgstr \"Nitra\"\n\n#: sk/sk_districts.py:48\nmsgid \"Nove Mesto nad Vahom\"\nmsgstr \"Nove Mesto nad Vahom\"\n\n#: sk/sk_districts.py:49\nmsgid \"Nove Zamky\"\nmsgstr \"Nove Zamky\"\n\n#: sk/sk_districts.py:50\nmsgid \"Partizanske\"\nmsgstr \"Partizanske\"\n\n#: sk/sk_districts.py:51\nmsgid \"Pezinok\"\nmsgstr \"Pezinok\"\n\n#: sk/sk_districts.py:52\nmsgid \"Piestany\"\nmsgstr \"Piestany\"\n\n#: sk/sk_districts.py:53\nmsgid \"Poltar\"\nmsgstr \"Poltar\"\n\n#: sk/sk_districts.py:54\nmsgid \"Poprad\"\nmsgstr \"Poprad\"\n\n#: sk/sk_districts.py:55\nmsgid \"Povazska Bystrica\"\nmsgstr \"Povazska Bystrica\"\n\n#: sk/sk_districts.py:56\nmsgid \"Presov\"\nmsgstr \"Presov\"\n\n#: sk/sk_districts.py:57\nmsgid \"Prievidza\"\nmsgstr \"Prievidza\"\n\n#: sk/sk_districts.py:58\nmsgid \"Puchov\"\nmsgstr \"Puchov\"\n\n#: sk/sk_districts.py:59\nmsgid \"Revuca\"\nmsgstr \"Revuca\"\n\n#: sk/sk_districts.py:60\nmsgid \"Rimavska Sobota\"\nmsgstr \"Rimavska Sobota\"\n\n#: sk/sk_districts.py:61\nmsgid \"Roznava\"\nmsgstr \"Roznava\"\n\n#: sk/sk_districts.py:62\nmsgid \"Ruzomberok\"\nmsgstr \"Ruzomberok\"\n\n#: sk/sk_districts.py:63\nmsgid \"Sabinov\"\nmsgstr \"Sabinov\"\n\n#: sk/sk_districts.py:64\nmsgid \"Senec\"\nmsgstr \"Senec\"\n\n#: sk/sk_districts.py:65\nmsgid \"Senica\"\nmsgstr \"Senica\"\n\n#: sk/sk_districts.py:66\nmsgid \"Skalica\"\nmsgstr \"Skalica\"\n\n#: sk/sk_districts.py:67\nmsgid \"Snina\"\nmsgstr \"Snina\"\n\n#: sk/sk_districts.py:68\nmsgid \"Sobrance\"\nmsgstr \"Sobrance\"\n\n#: sk/sk_districts.py:69\nmsgid \"Spisska Nova Ves\"\nmsgstr \"Spisska Nova Ves\"\n\n#: sk/sk_districts.py:70\nmsgid \"Stara Lubovna\"\nmsgstr \"Stara Lubovna\"\n\n#: sk/sk_districts.py:71\nmsgid \"Stropkov\"\nmsgstr \"Stropkov\"\n\n#: sk/sk_districts.py:72\nmsgid \"Svidnik\"\nmsgstr \"Svidnik\"\n\n#: sk/sk_districts.py:73\nmsgid \"Sala\"\nmsgstr \"Sala\"\n\n#: sk/sk_districts.py:74\nmsgid \"Topolcany\"\nmsgstr \"Topolcany\"\n\n#: sk/sk_districts.py:75\nmsgid \"Trebisov\"\nmsgstr \"Trebisov\"\n\n#: sk/sk_districts.py:76\nmsgid \"Trencin\"\nmsgstr \"Trencin\"\n\n#: sk/sk_districts.py:77\nmsgid \"Trnava\"\nmsgstr \"Trnava\"\n\n#: sk/sk_districts.py:78\nmsgid \"Turcianske Teplice\"\nmsgstr \"Turcianske Teplice\"\n\n#: sk/sk_districts.py:79\nmsgid \"Tvrdosin\"\nmsgstr \"Tvrdosin\"\n\n#: sk/sk_districts.py:80\nmsgid \"Velky Krtis\"\nmsgstr \"Velky Krtis\"\n\n#: sk/sk_districts.py:81\nmsgid \"Vranov nad Toplou\"\nmsgstr \"Vranov nad Toplou\"\n\n#: sk/sk_districts.py:82\nmsgid \"Zlate Moravce\"\nmsgstr \"Zlate Moravce\"\n\n#: sk/sk_districts.py:83\nmsgid \"Zvolen\"\nmsgstr \"Zvolen\"\n\n#: sk/sk_districts.py:84\nmsgid \"Zarnovica\"\nmsgstr \"Zarnovica\"\n\n#: sk/sk_districts.py:85\nmsgid \"Ziar nad Hronom\"\nmsgstr \"Ziar nad Hronom\"\n\n#: sk/sk_districts.py:86\nmsgid \"Zilina\"\nmsgstr \"Zilina\"\n\n#: sk/sk_regions.py:8\nmsgid \"Banska Bystrica region\"\nmsgstr \"Regija Banska Bystrica\"\n\n#: sk/sk_regions.py:9\nmsgid \"Bratislava region\"\nmsgstr \"Bratislavska regija\"\n\n#: sk/sk_regions.py:10\nmsgid \"Kosice region\"\nmsgstr \"Regija Kosice\"\n\n#: sk/sk_regions.py:11\nmsgid \"Nitra region\"\nmsgstr \"Regija Nitra\"\n\n#: sk/sk_regions.py:12\nmsgid \"Presov region\"\nmsgstr \"Regija Presov\"\n\n#: sk/sk_regions.py:13\nmsgid \"Trencin region\"\nmsgstr \"Regija Trencin\"\n\n#: sk/sk_regions.py:14\nmsgid \"Trnava region\"\nmsgstr \"Regija Trnava\"\n\n#: sk/sk_regions.py:15\nmsgid \"Zilina region\"\nmsgstr \"Regija Zilina\"\n\n#: tr/forms.py:21\nmsgid \"Enter a postal code in the format XXXXX.\"\nmsgstr \"Vnesi poštno številko v formatu XXXXX.\"\n\n#: tr/forms.py:42\nmsgid \"Phone numbers must be in 0XXX XXX XXXX format.\"\nmsgstr \"Telefonske številke morajo biti v obliki 0XXX XXX XXXX.\"\n\n#: tr/forms.py:69\nmsgid \"Enter a valid Turkish Identification number.\"\nmsgstr \"Vnesi veljavno turško identifikacijsko številko.\"\n\n#: tr/forms.py:70\nmsgid \"Turkish Identification number must be 11 digits.\"\nmsgstr \"Turška identifikacijska številka mora biti dolga 11 znakov.\"\n\n#: us/forms.py:21\nmsgid \"Enter a zip code in the format XXXXX or XXXXX-XXXX.\"\nmsgstr \"Vnesite poštno številko v zapisu XXXXX ali XXXXX-XXXX.\"\n\n#: us/forms.py:59\nmsgid \"Enter a valid U.S. Social Security number in XXX-XX-XXXX format.\"\nmsgstr \"\"\n\"Vpišite veljavno številko ameriškega socialnega zavarovanja v zapisu XXX-XX-\"\n\"XXXX.\"\n\n#: us/forms.py:92\nmsgid \"Enter a U.S. state or territory.\"\nmsgstr \"Vpiši zvezno državno ZDA ali ozemlje ZDA.\"\n\n#: us/models.py:8\nmsgid \"U.S. state (two uppercase letters)\"\nmsgstr \"Koda ameriške zvezne države (dve veliki črki)\"\n\n#: us/models.py:17\nmsgid \"U.S. postal code (two uppercase letters)\"\nmsgstr \"ZDA poštna številka (dve veliki črki)\"\n\n#: us/models.py:26\nmsgid \"Phone number\"\nmsgstr \"Telefonska številka\"\n\n#: uy/forms.py:29\nmsgid \"Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.\"\nmsgstr \"\"\n\"Vpišite veljavno CI številko v formatu X.XXX.XXX-X,XXXXXXX-X ali XXXXXXXX.\"\n\n#: uy/forms.py:31\nmsgid \"Enter a valid CI number.\"\nmsgstr \"Vnesite veljavno CI številko.\"\n\n#: za/forms.py:22\nmsgid \"Enter a valid South African ID number\"\nmsgstr \"Vnesite veljavno južnoafriško ID številko\"\n\n#: za/forms.py:56\nmsgid \"Enter a valid South African postal code\"\nmsgstr \"Vnesite veljavno južnoafriško poštno številko.\"\n\n#: za/za_provinces.py:4\nmsgid \"Eastern Cape\"\nmsgstr \"Eastern Cape\"\n\n#: za/za_provinces.py:5\nmsgid \"Free State\"\nmsgstr \"Free State\"\n\n#: za/za_provinces.py:6\nmsgid \"Gauteng\"\nmsgstr \"Gauteng\"\n\n#: za/za_provinces.py:7\nmsgid \"KwaZulu-Natal\"\nmsgstr \"KwaZulu-Natal\"\n\n#: za/za_provinces.py:8\nmsgid \"Limpopo\"\nmsgstr \"Limpopo\"\n\n#: za/za_provinces.py:9\nmsgid \"Mpumalanga\"\nmsgstr \"Mpumalanga\"\n\n#: za/za_provinces.py:10\nmsgid \"Northern Cape\"\nmsgstr \"Northern Cape\"\n\n#: za/za_provinces.py:11\nmsgid \"North West\"\nmsgstr \"North West\"\n\n#: za/za_provinces.py:12\nmsgid \"Western Cape\"\nmsgstr \"Western Cape\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/locale/sr/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-10-17 09:16+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Serbian (http://www.transifex.com/projects/p/django/language/\"\n\"sr/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sr\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: ar/forms.py:30\nmsgid \"Enter a postal code in the format NNNN or ANNNNAAA.\"\nmsgstr \"Унесите поштански број у формату НННН или АННННААА.\"\n\n#: ar/forms.py:52 br/forms.py:95 br/forms.py:134 pe/forms.py:27 pe/forms.py:55\nmsgid \"This field requires only numbers.\"\nmsgstr \"Ово поље мора да садржи само бројке.\"\n\n#: ar/forms.py:53\nmsgid \"This field requires 7 or 8 digits.\"\nmsgstr \"Ово поље мора да садржи 7 или 8 цифара\"\n\n#: ar/forms.py:82\nmsgid \"Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.\"\nmsgstr \"Унестие важећи CUIT у формату XX-XXXXXXXX-X or XXXXXXXXXXXX.\"\n\n#: ar/forms.py:83\nmsgid \"Invalid CUIT.\"\nmsgstr \"Неважећи CUIT\"\n\n#: ar/forms.py:84\nmsgid \"Invalid legal type. Type must be 27, 20, 23 or 30.\"\nmsgstr \"\"\n\n#: at/at_states.py:5\nmsgid \"Burgenland\"\nmsgstr \"Бургенланд\"\n\n#: at/at_states.py:6\nmsgid \"Carinthia\"\nmsgstr \"Каринтија\"\n\n#: at/at_states.py:7\nmsgid \"Lower Austria\"\nmsgstr \"Доња Аустрија\"\n\n#: at/at_states.py:8\nmsgid \"Upper Austria\"\nmsgstr \"Горња Аустрија\"\n\n#: at/at_states.py:9\nmsgid \"Salzburg\"\nmsgstr \"Салцбург\"\n\n#: at/at_states.py:10\nmsgid \"Styria\"\nmsgstr \"Стирија\"\n\n#: at/at_states.py:11\nmsgid \"Tyrol\"\nmsgstr \"Тирол\"\n\n#: at/at_states.py:12\nmsgid \"Vorarlberg\"\nmsgstr \"Воралбер\"\n\n#: at/at_states.py:13\nmsgid \"Vienna\"\nmsgstr \"Беч\"\n\n#: at/forms.py:22 ch/forms.py:22 no/forms.py:19\nmsgid \"Enter a zip code in the format XXXX.\"\nmsgstr \"Унесите поштански број у формату XXXX.\"\n\n#: at/forms.py:50\nmsgid \"Enter a valid Austrian Social Security Number in XXXX XXXXXX format.\"\nmsgstr \"\"\n\"Унесите важећи аустријски број социјалног осигурања у формату XXXX XXXXXX.\"\n\n#: au/forms.py:26\nmsgid \"Enter a 4 digit postcode.\"\nmsgstr \"\"\n\n#: au/models.py:9\nmsgid \"Australian State\"\nmsgstr \"\"\n\n#: au/models.py:19\nmsgid \"Australian Postcode\"\nmsgstr \"\"\n\n#: au/models.py:33\nmsgid \"Australian Phone number\"\nmsgstr \"\"\n\n#: be/be_provinces.py:5\nmsgid \"Antwerp\"\nmsgstr \"\"\n\n#: be/be_provinces.py:6\nmsgid \"Brussels\"\nmsgstr \"\"\n\n#: be/be_provinces.py:7\nmsgid \"East Flanders\"\nmsgstr \"\"\n\n#: be/be_provinces.py:8\nmsgid \"Flemish Brabant\"\nmsgstr \"\"\n\n#: be/be_provinces.py:9\nmsgid \"Hainaut\"\nmsgstr \"\"\n\n#: be/be_provinces.py:10\nmsgid \"Liege\"\nmsgstr \"\"\n\n#: be/be_provinces.py:11 nl/nl_provinces.py:9\nmsgid \"Limburg\"\nmsgstr \"\"\n\n#: be/be_provinces.py:12\nmsgid \"Luxembourg\"\nmsgstr \"\"\n\n#: be/be_provinces.py:13\nmsgid \"Namur\"\nmsgstr \"\"\n\n#: be/be_provinces.py:14\nmsgid \"Walloon Brabant\"\nmsgstr \"\"\n\n#: be/be_provinces.py:15\nmsgid \"West Flanders\"\nmsgstr \"\"\n\n#: be/be_regions.py:5\nmsgid \"Brussels Capital Region\"\nmsgstr \"\"\n\n#: be/be_regions.py:6\nmsgid \"Flemish Region\"\nmsgstr \"\"\n\n#: be/be_regions.py:7\nmsgid \"Wallonia\"\nmsgstr \"\"\n\n#: be/forms.py:25\nmsgid \"Enter a valid postal code in the range and format 1XXX - 9XXX.\"\nmsgstr \"\"\n\n#: be/forms.py:48\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\nmsgstr \"\"\n\n#: br/forms.py:22\nmsgid \"Enter a zip code in the format XXXXX-XXX.\"\nmsgstr \"Унесите поштански број у формату XXXXX-XXX.\"\n\n#: br/forms.py:31\nmsgid \"Phone numbers must be in XX-XXXX-XXXX format.\"\nmsgstr \"Број телефона мора бити у формату XX-XXXX-XXXX.\"\n\n#: br/forms.py:58\nmsgid \"\"\n\"Select a valid brazilian state. That state is not one of the available \"\n\"states.\"\nmsgstr \"Одаберите постојећу бразилску државу. Та држава није међу понуђенима.\"\n\n#: br/forms.py:93\nmsgid \"Invalid CPF number.\"\nmsgstr \"Неважећи CPF број\"\n\n#: br/forms.py:94\nmsgid \"This field requires at most 11 digits or 14 characters.\"\nmsgstr \"\"\n\n#: br/forms.py:133\nmsgid \"Invalid CNPJ number.\"\nmsgstr \"\"\n\n#: br/forms.py:135\nmsgid \"This field requires at least 14 digits\"\nmsgstr \"\"\n\n#: ca/forms.py:29\nmsgid \"Enter a postal code in the format XXX XXX.\"\nmsgstr \"\"\n\n#: ca/forms.py:47 us/forms.py:30\nmsgid \"Phone numbers must be in XXX-XXX-XXXX format.\"\nmsgstr \"\"\n\n#: ca/forms.py:69\nmsgid \"Enter a Canadian province or territory.\"\nmsgstr \"\"\n\n#: ca/forms.py:110\nmsgid \"Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.\"\nmsgstr \"\"\n\n#: ch/ch_states.py:5\nmsgid \"Aargau\"\nmsgstr \"\"\n\n#: ch/ch_states.py:6\nmsgid \"Appenzell Innerrhoden\"\nmsgstr \"\"\n\n#: ch/ch_states.py:7\nmsgid \"Appenzell Ausserrhoden\"\nmsgstr \"\"\n\n#: ch/ch_states.py:8\nmsgid \"Basel-Stadt\"\nmsgstr \"\"\n\n#: ch/ch_states.py:9\nmsgid \"Basel-Land\"\nmsgstr \"\"\n\n#: ch/ch_states.py:10\nmsgid \"Berne\"\nmsgstr \"\"\n\n#: ch/ch_states.py:11\nmsgid \"Fribourg\"\nmsgstr \"\"\n\n#: ch/ch_states.py:12\nmsgid \"Geneva\"\nmsgstr \"\"\n\n#: ch/ch_states.py:13\nmsgid \"Glarus\"\nmsgstr \"\"\n\n#: ch/ch_states.py:14\nmsgid \"Graubuenden\"\nmsgstr \"\"\n\n#: ch/ch_states.py:15\nmsgid \"Jura\"\nmsgstr \"\"\n\n#: ch/ch_states.py:16\nmsgid \"Lucerne\"\nmsgstr \"\"\n\n#: ch/ch_states.py:17\nmsgid \"Neuchatel\"\nmsgstr \"\"\n\n#: ch/ch_states.py:18\nmsgid \"Nidwalden\"\nmsgstr \"\"\n\n#: ch/ch_states.py:19\nmsgid \"Obwalden\"\nmsgstr \"\"\n\n#: ch/ch_states.py:20\nmsgid \"Schaffhausen\"\nmsgstr \"\"\n\n#: ch/ch_states.py:21\nmsgid \"Schwyz\"\nmsgstr \"\"\n\n#: ch/ch_states.py:22\nmsgid \"Solothurn\"\nmsgstr \"\"\n\n#: ch/ch_states.py:23\nmsgid \"St. Gallen\"\nmsgstr \"\"\n\n#: ch/ch_states.py:24\nmsgid \"Thurgau\"\nmsgstr \"\"\n\n#: ch/ch_states.py:25\nmsgid \"Ticino\"\nmsgstr \"\"\n\n#: ch/ch_states.py:26\nmsgid \"Uri\"\nmsgstr \"\"\n\n#: ch/ch_states.py:27\nmsgid \"Valais\"\nmsgstr \"\"\n\n#: ch/ch_states.py:28\nmsgid \"Vaud\"\nmsgstr \"\"\n\n#: ch/ch_states.py:29\nmsgid \"Zug\"\nmsgstr \"\"\n\n#: ch/ch_states.py:30\nmsgid \"Zurich\"\nmsgstr \"\"\n\n#: ch/forms.py:37\nmsgid \"Phone numbers must be in 0XX XXX XX XX format.\"\nmsgstr \"\"\n\n#: ch/forms.py:68\nmsgid \"\"\n\"Enter a valid Swiss identity or passport card number in X1234567<0 or \"\n\"1234567890 format.\"\nmsgstr \"\"\n\n#: cl/forms.py:32\nmsgid \"Enter a valid Chilean RUT.\"\nmsgstr \"\"\n\n#: cl/forms.py:33\nmsgid \"Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.\"\nmsgstr \"\"\n\n#: cl/forms.py:34\nmsgid \"The Chilean RUT is not valid.\"\nmsgstr \"\"\n\n#: cn/forms.py:84\nmsgid \"Enter a post code in the format XXXXXX.\"\nmsgstr \"\"\n\n#: cn/forms.py:105\nmsgid \"ID Card Number consists of 15 or 18 digits.\"\nmsgstr \"\"\n\n#: cn/forms.py:106\nmsgid \"Invalid ID Card Number: Wrong checksum\"\nmsgstr \"\"\n\n#: cn/forms.py:107\nmsgid \"Invalid ID Card Number: Wrong birthdate\"\nmsgstr \"\"\n\n#: cn/forms.py:108\nmsgid \"Invalid ID Card Number: Wrong location code\"\nmsgstr \"\"\n\n#: cn/forms.py:193\nmsgid \"Enter a valid phone number.\"\nmsgstr \"\"\n\n#: cn/forms.py:210\nmsgid \"Enter a valid cell number.\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:8\nmsgid \"Prague\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:9\nmsgid \"Central Bohemian Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:10\nmsgid \"South Bohemian Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:11\nmsgid \"Pilsen Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:12\nmsgid \"Carlsbad Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:13\nmsgid \"Usti Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:14\nmsgid \"Liberec Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:15\nmsgid \"Hradec Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:16\nmsgid \"Pardubice Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:17\nmsgid \"Vysocina Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:18\nmsgid \"South Moravian Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:19\nmsgid \"Olomouc Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:20\nmsgid \"Zlin Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:21\nmsgid \"Moravian-Silesian Region\"\nmsgstr \"\"\n\n#: cz/forms.py:32 sk/forms.py:33\nmsgid \"Enter a postal code in the format XXXXX or XXX XX.\"\nmsgstr \"\"\n\n#: cz/forms.py:52\nmsgid \"Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.\"\nmsgstr \"\"\n\n#: cz/forms.py:53\nmsgid \"Enter a valid birth number.\"\nmsgstr \"\"\n\n#: cz/forms.py:102\nmsgid \"Enter a valid IC number.\"\nmsgstr \"\"\n\n#: de/de_states.py:5\nmsgid \"Baden-Wuerttemberg\"\nmsgstr \"\"\n\n#: de/de_states.py:6\nmsgid \"Bavaria\"\nmsgstr \"\"\n\n#: de/de_states.py:7\nmsgid \"Berlin\"\nmsgstr \"\"\n\n#: de/de_states.py:8\nmsgid \"Brandenburg\"\nmsgstr \"\"\n\n#: de/de_states.py:9\nmsgid \"Bremen\"\nmsgstr \"\"\n\n#: de/de_states.py:10\nmsgid \"Hamburg\"\nmsgstr \"\"\n\n#: de/de_states.py:11\nmsgid \"Hessen\"\nmsgstr \"\"\n\n#: de/de_states.py:12\nmsgid \"Mecklenburg-Western Pomerania\"\nmsgstr \"\"\n\n#: de/de_states.py:13\nmsgid \"Lower Saxony\"\nmsgstr \"\"\n\n#: de/de_states.py:14\nmsgid \"North Rhine-Westphalia\"\nmsgstr \"\"\n\n#: de/de_states.py:15\nmsgid \"Rhineland-Palatinate\"\nmsgstr \"\"\n\n#: de/de_states.py:16\nmsgid \"Saarland\"\nmsgstr \"\"\n\n#: de/de_states.py:17\nmsgid \"Saxony\"\nmsgstr \"\"\n\n#: de/de_states.py:18\nmsgid \"Saxony-Anhalt\"\nmsgstr \"\"\n\n#: de/de_states.py:19\nmsgid \"Schleswig-Holstein\"\nmsgstr \"\"\n\n#: de/de_states.py:20\nmsgid \"Thuringia\"\nmsgstr \"\"\n\n#: de/forms.py:20 fi/forms.py:18 fr/forms.py:20\nmsgid \"Enter a zip code in the format XXXXX.\"\nmsgstr \"\"\n\n#: de/forms.py:46\nmsgid \"\"\n\"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"format.\"\nmsgstr \"\"\n\n#: es/es_provinces.py:5\nmsgid \"Araba\"\nmsgstr \"\"\n\n#: es/es_provinces.py:6\nmsgid \"Albacete\"\nmsgstr \"\"\n\n#: es/es_provinces.py:7\nmsgid \"Alacant\"\nmsgstr \"\"\n\n#: es/es_provinces.py:8\nmsgid \"Almeria\"\nmsgstr \"\"\n\n#: es/es_provinces.py:9\nmsgid \"Avila\"\nmsgstr \"\"\n\n#: es/es_provinces.py:10\nmsgid \"Badajoz\"\nmsgstr \"\"\n\n#: es/es_provinces.py:11\nmsgid \"Illes Balears\"\nmsgstr \"\"\n\n#: es/es_provinces.py:12\nmsgid \"Barcelona\"\nmsgstr \"\"\n\n#: es/es_provinces.py:13\nmsgid \"Burgos\"\nmsgstr \"\"\n\n#: es/es_provinces.py:14\nmsgid \"Caceres\"\nmsgstr \"\"\n\n#: es/es_provinces.py:15\nmsgid \"Cadiz\"\nmsgstr \"\"\n\n#: es/es_provinces.py:16\nmsgid \"Castello\"\nmsgstr \"\"\n\n#: es/es_provinces.py:17\nmsgid \"Ciudad Real\"\nmsgstr \"\"\n\n#: es/es_provinces.py:18\nmsgid \"Cordoba\"\nmsgstr \"\"\n\n#: es/es_provinces.py:19\nmsgid \"A Coruna\"\nmsgstr \"\"\n\n#: es/es_provinces.py:20\nmsgid \"Cuenca\"\nmsgstr \"\"\n\n#: es/es_provinces.py:21\nmsgid \"Girona\"\nmsgstr \"\"\n\n#: es/es_provinces.py:22\nmsgid \"Granada\"\nmsgstr \"\"\n\n#: es/es_provinces.py:23\nmsgid \"Guadalajara\"\nmsgstr \"\"\n\n#: es/es_provinces.py:24\nmsgid \"Guipuzkoa\"\nmsgstr \"\"\n\n#: es/es_provinces.py:25\nmsgid \"Huelva\"\nmsgstr \"\"\n\n#: es/es_provinces.py:26\nmsgid \"Huesca\"\nmsgstr \"\"\n\n#: es/es_provinces.py:27\nmsgid \"Jaen\"\nmsgstr \"\"\n\n#: es/es_provinces.py:28\nmsgid \"Leon\"\nmsgstr \"\"\n\n#: es/es_provinces.py:29\nmsgid \"Lleida\"\nmsgstr \"\"\n\n#: es/es_provinces.py:30 es/es_regions.py:17\nmsgid \"La Rioja\"\nmsgstr \"\"\n\n#: es/es_provinces.py:31\nmsgid \"Lugo\"\nmsgstr \"\"\n\n#: es/es_provinces.py:32 es/es_regions.py:18\nmsgid \"Madrid\"\nmsgstr \"\"\n\n#: es/es_provinces.py:33\nmsgid \"Malaga\"\nmsgstr \"\"\n\n#: es/es_provinces.py:34\nmsgid \"Murcia\"\nmsgstr \"\"\n\n#: es/es_provinces.py:35\nmsgid \"Navarre\"\nmsgstr \"\"\n\n#: es/es_provinces.py:36\nmsgid \"Ourense\"\nmsgstr \"\"\n\n#: es/es_provinces.py:37\nmsgid \"Asturias\"\nmsgstr \"\"\n\n#: es/es_provinces.py:38\nmsgid \"Palencia\"\nmsgstr \"\"\n\n#: es/es_provinces.py:39\nmsgid \"Las Palmas\"\nmsgstr \"\"\n\n#: es/es_provinces.py:40\nmsgid \"Pontevedra\"\nmsgstr \"\"\n\n#: es/es_provinces.py:41\nmsgid \"Salamanca\"\nmsgstr \"\"\n\n#: es/es_provinces.py:42\nmsgid \"Santa Cruz de Tenerife\"\nmsgstr \"\"\n\n#: es/es_provinces.py:43 es/es_regions.py:11\nmsgid \"Cantabria\"\nmsgstr \"\"\n\n#: es/es_provinces.py:44\nmsgid \"Segovia\"\nmsgstr \"\"\n\n#: es/es_provinces.py:45\nmsgid \"Seville\"\nmsgstr \"\"\n\n#: es/es_provinces.py:46\nmsgid \"Soria\"\nmsgstr \"\"\n\n#: es/es_provinces.py:47\nmsgid \"Tarragona\"\nmsgstr \"\"\n\n#: es/es_provinces.py:48\nmsgid \"Teruel\"\nmsgstr \"\"\n\n#: es/es_provinces.py:49\nmsgid \"Toledo\"\nmsgstr \"\"\n\n#: es/es_provinces.py:50\nmsgid \"Valencia\"\nmsgstr \"\"\n\n#: es/es_provinces.py:51\nmsgid \"Valladolid\"\nmsgstr \"\"\n\n#: es/es_provinces.py:52\nmsgid \"Bizkaia\"\nmsgstr \"\"\n\n#: es/es_provinces.py:53\nmsgid \"Zamora\"\nmsgstr \"\"\n\n#: es/es_provinces.py:54\nmsgid \"Zaragoza\"\nmsgstr \"\"\n\n#: es/es_provinces.py:55\nmsgid \"Ceuta\"\nmsgstr \"\"\n\n#: es/es_provinces.py:56\nmsgid \"Melilla\"\nmsgstr \"\"\n\n#: es/es_regions.py:5\nmsgid \"Andalusia\"\nmsgstr \"\"\n\n#: es/es_regions.py:6\nmsgid \"Aragon\"\nmsgstr \"\"\n\n#: es/es_regions.py:7\nmsgid \"Principality of Asturias\"\nmsgstr \"\"\n\n#: es/es_regions.py:8\nmsgid \"Balearic Islands\"\nmsgstr \"\"\n\n#: es/es_regions.py:9\nmsgid \"Basque Country\"\nmsgstr \"\"\n\n#: es/es_regions.py:10\nmsgid \"Canary Islands\"\nmsgstr \"\"\n\n#: es/es_regions.py:12\nmsgid \"Castile-La Mancha\"\nmsgstr \"\"\n\n#: es/es_regions.py:13\nmsgid \"Castile and Leon\"\nmsgstr \"\"\n\n#: es/es_regions.py:14\nmsgid \"Catalonia\"\nmsgstr \"\"\n\n#: es/es_regions.py:15\nmsgid \"Extremadura\"\nmsgstr \"\"\n\n#: es/es_regions.py:16\nmsgid \"Galicia\"\nmsgstr \"\"\n\n#: es/es_regions.py:19\nmsgid \"Region of Murcia\"\nmsgstr \"\"\n\n#: es/es_regions.py:20\nmsgid \"Foral Community of Navarre\"\nmsgstr \"\"\n\n#: es/es_regions.py:21\nmsgid \"Valencian Community\"\nmsgstr \"\"\n\n#: es/forms.py:26\nmsgid \"Enter a valid postal code in the range and format 01XXX - 52XXX.\"\nmsgstr \"\"\n\n#: es/forms.py:46\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or \"\n\"9XXXXXXXX.\"\nmsgstr \"\"\n\n#: es/forms.py:73\nmsgid \"Please enter a valid NIF, NIE, or CIF.\"\nmsgstr \"\"\n\n#: es/forms.py:74\nmsgid \"Please enter a valid NIF or NIE.\"\nmsgstr \"\"\n\n#: es/forms.py:75\nmsgid \"Invalid checksum for NIF.\"\nmsgstr \"\"\n\n#: es/forms.py:76\nmsgid \"Invalid checksum for NIE.\"\nmsgstr \"\"\n\n#: es/forms.py:77\nmsgid \"Invalid checksum for CIF.\"\nmsgstr \"\"\n\n#: es/forms.py:149\nmsgid \"\"\n\"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.\"\nmsgstr \"\"\n\n#: es/forms.py:150\nmsgid \"Invalid checksum for bank account number.\"\nmsgstr \"\"\n\n#: fi/forms.py:33\nmsgid \"Enter a valid Finnish social security number.\"\nmsgstr \"\"\n\n#: fr/forms.py:35\nmsgid \"Phone numbers must be in 0X XX XX XX XX format.\"\nmsgstr \"\"\n\n#: gb/forms.py:25\nmsgid \"Enter a valid postcode.\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:11\nmsgid \"Bedfordshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:12\nmsgid \"Buckinghamshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:14\nmsgid \"Cheshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:15\nmsgid \"Cornwall and Isles of Scilly\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:16\nmsgid \"Cumbria\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:17\nmsgid \"Derbyshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:18\nmsgid \"Devon\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:19\nmsgid \"Dorset\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:20\nmsgid \"Durham\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:21\nmsgid \"East Sussex\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:22\nmsgid \"Essex\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:23\nmsgid \"Gloucestershire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:24\nmsgid \"Greater London\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:25\nmsgid \"Greater Manchester\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:26\nmsgid \"Hampshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:27\nmsgid \"Hertfordshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:28\nmsgid \"Kent\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:29\nmsgid \"Lancashire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:30\nmsgid \"Leicestershire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:31\nmsgid \"Lincolnshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:32\nmsgid \"Merseyside\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:33\nmsgid \"Norfolk\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:34\nmsgid \"North Yorkshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:35\nmsgid \"Northamptonshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:36\nmsgid \"Northumberland\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:37\nmsgid \"Nottinghamshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:38\nmsgid \"Oxfordshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:39\nmsgid \"Shropshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:40\nmsgid \"Somerset\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:41\nmsgid \"South Yorkshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:42\nmsgid \"Staffordshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:43\nmsgid \"Suffolk\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:44\nmsgid \"Surrey\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:45\nmsgid \"Tyne and Wear\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:46\nmsgid \"Warwickshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:47\nmsgid \"West Midlands\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:48\nmsgid \"West Sussex\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:49\nmsgid \"West Yorkshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:50\nmsgid \"Wiltshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:51\nmsgid \"Worcestershire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:55\nmsgid \"County Antrim\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:56\nmsgid \"County Armagh\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:57\nmsgid \"County Down\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:58\nmsgid \"County Fermanagh\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:59\nmsgid \"County Londonderry\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:60\nmsgid \"County Tyrone\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:64\nmsgid \"Clwyd\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:65\nmsgid \"Dyfed\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:66\nmsgid \"Gwent\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:67\nmsgid \"Gwynedd\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:68\nmsgid \"Mid Glamorgan\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:69\nmsgid \"Powys\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:70\nmsgid \"South Glamorgan\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:71\nmsgid \"West Glamorgan\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:75\nmsgid \"Borders\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:76\nmsgid \"Central Scotland\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:77\nmsgid \"Dumfries and Galloway\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:78\nmsgid \"Fife\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:79\nmsgid \"Grampian\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:80\nmsgid \"Highland\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:81\nmsgid \"Lothian\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:82\nmsgid \"Orkney Islands\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:83\nmsgid \"Shetland Islands\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:84\nmsgid \"Strathclyde\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:85\nmsgid \"Tayside\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:86\nmsgid \"Western Isles\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:90\nmsgid \"England\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:91\nmsgid \"Northern Ireland\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:92\nmsgid \"Scotland\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:93\nmsgid \"Wales\"\nmsgstr \"\"\n\n#: hk/forms.py:37\n#, python-format\nmsgid \"Phone number should not start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:40\n#, python-format\nmsgid \"Phone number must be in one of the following formats: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:42\n#, python-format\nmsgid \"Phone number should start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hr/forms.py:76\nmsgid \"Enter a valid 13 digit JMBG\"\nmsgstr \"\"\n\n#: hr/forms.py:77\nmsgid \"Error in date segment\"\nmsgstr \"\"\n\n#: hr/forms.py:123\nmsgid \"Enter a valid 11 digit OIB\"\nmsgstr \"\"\n\n#: hr/forms.py:152 id/forms.py:112\nmsgid \"Enter a valid vehicle license plate number\"\nmsgstr \"\"\n\n#: hr/forms.py:153\nmsgid \"Enter a valid location code\"\nmsgstr \"\"\n\n#: hr/forms.py:154\nmsgid \"Number part cannot be zero\"\nmsgstr \"\"\n\n#: hr/forms.py:190\nmsgid \"Enter a valid 5 digit postal code\"\nmsgstr \"\"\n\n#: hr/forms.py:218 id/forms.py:72 nl/forms.py:56\nmsgid \"Enter a valid phone number\"\nmsgstr \"\"\n\n#: hr/forms.py:219\nmsgid \"Enter a valid area or mobile network code\"\nmsgstr \"\"\n\n#: hr/forms.py:220\nmsgid \"The phone nubmer is too long\"\nmsgstr \"\"\n\n#: hr/forms.py:258\nmsgid \"Enter a valid 19 digit JMBAG starting with 601983\"\nmsgstr \"\"\n\n#: hr/forms.py:259\nmsgid \"Card issue number cannot be zero\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:14\nmsgid \"Grad Zagreb\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:15\nmsgid \"Bjelovarsko-bilogorska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:16\nmsgid \"Brodsko-posavska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:17\nmsgid \"Dubrovačko-neretvanska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:18\nmsgid \"Istarska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:19\nmsgid \"Karlovačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:20\nmsgid \"Koprivničko-križevačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:21\nmsgid \"Krapinsko-zagorska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:22\nmsgid \"Ličko-senjska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:23\nmsgid \"Međimurska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:24\nmsgid \"Osječko-baranjska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:25\nmsgid \"Požeško-slavonska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:26\nmsgid \"Primorsko-goranska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:27\nmsgid \"Sisačko-moslavačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:28\nmsgid \"Splitsko-dalmatinska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:29\nmsgid \"Šibensko-kninska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:30\nmsgid \"Varaždinska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:31\nmsgid \"Virovitičko-podravska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:32\nmsgid \"Vukovarsko-srijemska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:33\nmsgid \"Zadarska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:34\nmsgid \"Zagrebačka županija\"\nmsgstr \"\"\n\n#: id/forms.py:31\nmsgid \"Enter a valid post code\"\nmsgstr \"\"\n\n#: id/forms.py:176\nmsgid \"Enter a valid NIK/KTP number\"\nmsgstr \"\"\n\n#: id/id_choices.py:15\nmsgid \"Aceh\"\nmsgstr \"\"\n\n#: id/id_choices.py:16 id/id_choices.py:79\nmsgid \"Bali\"\nmsgstr \"\"\n\n#: id/id_choices.py:17 id/id_choices.py:51\nmsgid \"Banten\"\nmsgstr \"\"\n\n#: id/id_choices.py:18 id/id_choices.py:60\nmsgid \"Bengkulu\"\nmsgstr \"\"\n\n#: id/id_choices.py:19 id/id_choices.py:53\nmsgid \"Yogyakarta\"\nmsgstr \"\"\n\n#: id/id_choices.py:20 id/id_choices.py:57\nmsgid \"Jakarta\"\nmsgstr \"\"\n\n#: id/id_choices.py:21 id/id_choices.py:81\nmsgid \"Gorontalo\"\nmsgstr \"\"\n\n#: id/id_choices.py:22 id/id_choices.py:63\nmsgid \"Jambi\"\nmsgstr \"\"\n\n#: id/id_choices.py:23\nmsgid \"Jawa Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:24\nmsgid \"Jawa Tengah\"\nmsgstr \"\"\n\n#: id/id_choices.py:25\nmsgid \"Jawa Timur\"\nmsgstr \"\"\n\n#: id/id_choices.py:26 id/id_choices.py:94\nmsgid \"Kalimantan Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:27 id/id_choices.py:72\nmsgid \"Kalimantan Selatan\"\nmsgstr \"\"\n\n#: id/id_choices.py:28 id/id_choices.py:95\nmsgid \"Kalimantan Tengah\"\nmsgstr \"\"\n\n#: id/id_choices.py:29 id/id_choices.py:96\nmsgid \"Kalimantan Timur\"\nmsgstr \"\"\n\n#: id/id_choices.py:30\nmsgid \"Kepulauan Bangka-Belitung\"\nmsgstr \"\"\n\n#: id/id_choices.py:31 id/id_choices.py:68\nmsgid \"Kepulauan Riau\"\nmsgstr \"\"\n\n#: id/id_choices.py:32 id/id_choices.py:61\nmsgid \"Lampung\"\nmsgstr \"\"\n\n#: id/id_choices.py:33 id/id_choices.py:76\nmsgid \"Maluku\"\nmsgstr \"\"\n\n#: id/id_choices.py:34 id/id_choices.py:77\nmsgid \"Maluku Utara\"\nmsgstr \"\"\n\n#: id/id_choices.py:35\nmsgid \"Nusa Tenggara Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:36\nmsgid \"Nusa Tenggara Timur\"\nmsgstr \"\"\n\n#: id/id_choices.py:37\nmsgid \"Papua\"\nmsgstr \"\"\n\n#: id/id_choices.py:38\nmsgid \"Papua Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:39 id/id_choices.py:66\nmsgid \"Riau\"\nmsgstr \"\"\n\n#: id/id_choices.py:40 id/id_choices.py:74\nmsgid \"Sulawesi Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:41 id/id_choices.py:75\nmsgid \"Sulawesi Selatan\"\nmsgstr \"\"\n\n#: id/id_choices.py:42 id/id_choices.py:82\nmsgid \"Sulawesi Tengah\"\nmsgstr \"\"\n\n#: id/id_choices.py:43 id/id_choices.py:85\nmsgid \"Sulawesi Tenggara\"\nmsgstr \"\"\n\n#: id/id_choices.py:44\nmsgid \"Sulawesi Utara\"\nmsgstr \"\"\n\n#: id/id_choices.py:45 id/id_choices.py:58\nmsgid \"Sumatera Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:46 id/id_choices.py:62\nmsgid \"Sumatera Selatan\"\nmsgstr \"\"\n\n#: id/id_choices.py:47 id/id_choices.py:64\nmsgid \"Sumatera Utara\"\nmsgstr \"\"\n\n#: id/id_choices.py:52\nmsgid \"Magelang\"\nmsgstr \"\"\n\n#: id/id_choices.py:54\nmsgid \"Surakarta - Solo\"\nmsgstr \"\"\n\n#: id/id_choices.py:55\nmsgid \"Madiun\"\nmsgstr \"\"\n\n#: id/id_choices.py:56\nmsgid \"Kediri\"\nmsgstr \"\"\n\n#: id/id_choices.py:59\nmsgid \"Tapanuli\"\nmsgstr \"\"\n\n#: id/id_choices.py:65\nmsgid \"Nanggroe Aceh Darussalam\"\nmsgstr \"\"\n\n#: id/id_choices.py:67\nmsgid \"Kepulauan Bangka Belitung\"\nmsgstr \"\"\n\n#: id/id_choices.py:69\nmsgid \"Corps Consulate\"\nmsgstr \"\"\n\n#: id/id_choices.py:70\nmsgid \"Corps Diplomatic\"\nmsgstr \"\"\n\n#: id/id_choices.py:71\nmsgid \"Bandung\"\nmsgstr \"\"\n\n#: id/id_choices.py:73\nmsgid \"Sulawesi Utara Daratan\"\nmsgstr \"\"\n\n#: id/id_choices.py:78\nmsgid \"NTT - Timor\"\nmsgstr \"\"\n\n#: id/id_choices.py:80\nmsgid \"Sulawesi Utara Kepulauan\"\nmsgstr \"\"\n\n#: id/id_choices.py:83\nmsgid \"NTB - Lombok\"\nmsgstr \"\"\n\n#: id/id_choices.py:84\nmsgid \"Papua dan Papua Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:86\nmsgid \"Cirebon\"\nmsgstr \"\"\n\n#: id/id_choices.py:87\nmsgid \"NTB - Sumbawa\"\nmsgstr \"\"\n\n#: id/id_choices.py:88\nmsgid \"NTT - Flores\"\nmsgstr \"\"\n\n#: id/id_choices.py:89\nmsgid \"NTT - Sumba\"\nmsgstr \"\"\n\n#: id/id_choices.py:90\nmsgid \"Bogor\"\nmsgstr \"\"\n\n#: id/id_choices.py:91\nmsgid \"Pekalongan\"\nmsgstr \"\"\n\n#: id/id_choices.py:92\nmsgid \"Semarang\"\nmsgstr \"\"\n\n#: id/id_choices.py:93\nmsgid \"Pati\"\nmsgstr \"\"\n\n#: id/id_choices.py:97\nmsgid \"Surabaya\"\nmsgstr \"\"\n\n#: id/id_choices.py:98\nmsgid \"Madura\"\nmsgstr \"\"\n\n#: id/id_choices.py:99\nmsgid \"Malang\"\nmsgstr \"\"\n\n#: id/id_choices.py:100\nmsgid \"Jember\"\nmsgstr \"\"\n\n#: id/id_choices.py:101\nmsgid \"Banyumas\"\nmsgstr \"\"\n\n#: id/id_choices.py:102\nmsgid \"Federal Government\"\nmsgstr \"\"\n\n#: id/id_choices.py:103\nmsgid \"Bojonegoro\"\nmsgstr \"\"\n\n#: id/id_choices.py:104\nmsgid \"Purwakarta\"\nmsgstr \"\"\n\n#: id/id_choices.py:105\nmsgid \"Sidoarjo\"\nmsgstr \"\"\n\n#: id/id_choices.py:106\nmsgid \"Garut\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:8\nmsgid \"Antrim\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:9\nmsgid \"Armagh\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:10\nmsgid \"Carlow\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:11\nmsgid \"Cavan\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:12\nmsgid \"Clare\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:13\nmsgid \"Cork\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:14\nmsgid \"Derry\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:15\nmsgid \"Donegal\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:16\nmsgid \"Down\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:17\nmsgid \"Dublin\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:18\nmsgid \"Fermanagh\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:19\nmsgid \"Galway\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:20\nmsgid \"Kerry\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:21\nmsgid \"Kildare\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:22\nmsgid \"Kilkenny\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:23\nmsgid \"Laois\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:24\nmsgid \"Leitrim\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:25\nmsgid \"Limerick\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:26\nmsgid \"Longford\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:27\nmsgid \"Louth\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:28\nmsgid \"Mayo\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:29\nmsgid \"Meath\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:30\nmsgid \"Monaghan\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:31\nmsgid \"Offaly\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:32\nmsgid \"Roscommon\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:33\nmsgid \"Sligo\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:34\nmsgid \"Tipperary\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:35\nmsgid \"Tyrone\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:36\nmsgid \"Waterford\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:37\nmsgid \"Westmeath\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:38\nmsgid \"Wexford\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:39\nmsgid \"Wicklow\"\nmsgstr \"\"\n\n#: il/forms.py:32\nmsgid \"Enter a postal code in the format XXXXX\"\nmsgstr \"\"\n\n#: il/forms.py:51\nmsgid \"Enter a valid ID number.\"\nmsgstr \"\"\n\n#: in_/forms.py:41\nmsgid \"Enter a zip code in the format XXXXXX or XXX XXX.\"\nmsgstr \"\"\n\n#: in_/forms.py:64\nmsgid \"Enter an Indian state or territory.\"\nmsgstr \"\"\n\n#: in_/forms.py:103\nmsgid \"Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.\"\nmsgstr \"\"\n\n#: is_/forms.py:22\nmsgid \"\"\n\"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.\"\nmsgstr \"\"\n\n#: is_/forms.py:23\nmsgid \"The Icelandic identification number is not valid.\"\nmsgstr \"\"\n\n#: it/forms.py:21\nmsgid \"Enter a valid zip code.\"\nmsgstr \"\"\n\n#: it/forms.py:48\nmsgid \"Enter a valid Social Security number.\"\nmsgstr \"\"\n\n#: it/forms.py:73\nmsgid \"Enter a valid VAT number.\"\nmsgstr \"\"\n\n#: jp/forms.py:19\nmsgid \"Enter a postal code in the format XXXXXXX or XXX-XXXX.\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:4\nmsgid \"Hokkaido\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:5\nmsgid \"Aomori\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:6\nmsgid \"Iwate\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:7\nmsgid \"Miyagi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:8\nmsgid \"Akita\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:9\nmsgid \"Yamagata\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:10\nmsgid \"Fukushima\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:11\nmsgid \"Ibaraki\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:12\nmsgid \"Tochigi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:13\nmsgid \"Gunma\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:14\nmsgid \"Saitama\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:15\nmsgid \"Chiba\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:16\nmsgid \"Tokyo\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:17\nmsgid \"Kanagawa\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:18\nmsgid \"Yamanashi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:19\nmsgid \"Nagano\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:20\nmsgid \"Niigata\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:21\nmsgid \"Toyama\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:22\nmsgid \"Ishikawa\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:23\nmsgid \"Fukui\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:24\nmsgid \"Gifu\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:25\nmsgid \"Shizuoka\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:26\nmsgid \"Aichi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:27\nmsgid \"Mie\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:28\nmsgid \"Shiga\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:29\nmsgid \"Kyoto\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:30\nmsgid \"Osaka\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:31\nmsgid \"Hyogo\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:32\nmsgid \"Nara\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:33\nmsgid \"Wakayama\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:34\nmsgid \"Tottori\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:35\nmsgid \"Shimane\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:36\nmsgid \"Okayama\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:37\nmsgid \"Hiroshima\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:38\nmsgid \"Yamaguchi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:39\nmsgid \"Tokushima\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:40\nmsgid \"Kagawa\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:41\nmsgid \"Ehime\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:42\nmsgid \"Kochi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:43\nmsgid \"Fukuoka\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:44\nmsgid \"Saga\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:45\nmsgid \"Nagasaki\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:46\nmsgid \"Kumamoto\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:47\nmsgid \"Oita\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:48\nmsgid \"Miyazaki\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:49\nmsgid \"Kagoshima\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:50\nmsgid \"Okinawa\"\nmsgstr \"\"\n\n#: kw/forms.py:27\nmsgid \"Enter a valid Kuwaiti Civil ID number\"\nmsgstr \"\"\n\n#: mk/forms.py:18\nmsgid \"\"\n\"Identity card numbers must contain either 4 to 7 digits or an uppercase \"\n\"letter and 7 digits.\"\nmsgstr \"\"\n\n#: mk/forms.py:57 si/forms.py:24\nmsgid \"This field should contain exactly 13 digits.\"\nmsgstr \"\"\n\n#: mk/forms.py:58\nmsgid \"The first 7 digits of the UMCN must represent a valid past date.\"\nmsgstr \"\"\n\n#: mk/forms.py:59\nmsgid \"The UMCN is not valid.\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:10\nmsgid \"Aerodrom\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:11\nmsgid \"Aračinovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:12\nmsgid \"Berovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:13\nmsgid \"Bitola\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:14\nmsgid \"Bogdanci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:15\nmsgid \"Bogovinje\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:16\nmsgid \"Bosilovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:17\nmsgid \"Brvenica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:18\nmsgid \"Butel\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:19\nmsgid \"Valandovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:20\nmsgid \"Vasilevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:21\nmsgid \"Vevčani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:22\nmsgid \"Veles\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:23\nmsgid \"Vinica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:24\nmsgid \"Vraneštica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:25\nmsgid \"Vrapčište\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:26\nmsgid \"Gazi Baba\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:27\nmsgid \"Gevgelija\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:28\nmsgid \"Gostivar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:29\nmsgid \"Gradsko\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:30\nmsgid \"Debar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:31\nmsgid \"Debarca\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:32\nmsgid \"Delčevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:33\nmsgid \"Demir Kapija\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:34\nmsgid \"Demir Hisar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:35\nmsgid \"Dolneni\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:36\nmsgid \"Drugovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:37\nmsgid \"Gjorče Petrov\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:38\nmsgid \"Želino\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:39\nmsgid \"Zajas\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:40\nmsgid \"Zelenikovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:41\nmsgid \"Zrnovci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:42\nmsgid \"Ilinden\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:43\nmsgid \"Jegunovce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:44\nmsgid \"Kavadarci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:45\nmsgid \"Karbinci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:46\nmsgid \"Karpoš\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:47\nmsgid \"Kisela Voda\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:48\nmsgid \"Kičevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:49\nmsgid \"Konče\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:50\nmsgid \"Koćani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:51\nmsgid \"Kratovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:52\nmsgid \"Kriva Palanka\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:53\nmsgid \"Krivogaštani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:54\nmsgid \"Kruševo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:55\nmsgid \"Kumanovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:56\nmsgid \"Lipkovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:57\nmsgid \"Lozovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:58\nmsgid \"Mavrovo i Rostuša\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:59\nmsgid \"Makedonska Kamenica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:60\nmsgid \"Makedonski Brod\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:61\nmsgid \"Mogila\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:62\nmsgid \"Negotino\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:63\nmsgid \"Novaci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:64\nmsgid \"Novo Selo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:65\nmsgid \"Oslomej\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:66\nmsgid \"Ohrid\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:67\nmsgid \"Petrovec\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:68\nmsgid \"Pehčevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:69\nmsgid \"Plasnica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:70\nmsgid \"Prilep\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:71\nmsgid \"Probištip\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:72\nmsgid \"Radoviš\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:73\nmsgid \"Rankovce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:74\nmsgid \"Resen\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:75\nmsgid \"Rosoman\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:76\nmsgid \"Saraj\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:77\nmsgid \"Sveti Nikole\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:78\nmsgid \"Sopište\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:79\nmsgid \"Star Dojran\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:80\nmsgid \"Staro Nagoričane\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:81\nmsgid \"Struga\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:82\nmsgid \"Strumica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:83\nmsgid \"Studeničani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:84\nmsgid \"Tearce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:85\nmsgid \"Tetovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:86\nmsgid \"Centar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:87\nmsgid \"Centar-Župa\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:88\nmsgid \"Čair\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:89\nmsgid \"Čaška\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:90\nmsgid \"Češinovo-Obleševo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:91\nmsgid \"Čučer-Sandevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:92\nmsgid \"Štip\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:93\nmsgid \"Šuto Orizari\"\nmsgstr \"\"\n\n#: mk/models.py:11\nmsgid \"Macedonian identity card number\"\nmsgstr \"\"\n\n#: mk/models.py:25\nmsgid \"A Macedonian municipality (2 character code)\"\nmsgstr \"\"\n\n#: mk/models.py:35\nmsgid \"Unique master citizen number (13 digits)\"\nmsgstr \"\"\n\n#: mx/forms.py:67\nmsgid \"Enter a valid zip code in the format XXXXX.\"\nmsgstr \"\"\n\n#: mx/forms.py:110\nmsgid \"Enter a valid RFC.\"\nmsgstr \"\"\n\n#: mx/forms.py:111\nmsgid \"Invalid checksum for RFC.\"\nmsgstr \"\"\n\n#: mx/forms.py:191\nmsgid \"Enter a valid CURP.\"\nmsgstr \"\"\n\n#: mx/forms.py:192\nmsgid \"Invalid checksum for CURP.\"\nmsgstr \"\"\n\n#: mx/models.py:14\nmsgid \"Mexico state (three uppercase letters)\"\nmsgstr \"\"\n\n#: mx/models.py:27\nmsgid \"Mexico zip code\"\nmsgstr \"\"\n\n#: mx/models.py:44\nmsgid \"Mexican RFC\"\nmsgstr \"\"\n\n#: mx/models.py:61\nmsgid \"Mexican CURP\"\nmsgstr \"\"\n\n#: mx/mx_states.py:14\nmsgid \"Aguascalientes\"\nmsgstr \"\"\n\n#: mx/mx_states.py:15\nmsgid \"Baja California\"\nmsgstr \"\"\n\n#: mx/mx_states.py:16\nmsgid \"Baja California Sur\"\nmsgstr \"\"\n\n#: mx/mx_states.py:17\nmsgid \"Campeche\"\nmsgstr \"\"\n\n#: mx/mx_states.py:18\nmsgid \"Chihuahua\"\nmsgstr \"\"\n\n#: mx/mx_states.py:19\nmsgid \"Chiapas\"\nmsgstr \"\"\n\n#: mx/mx_states.py:20\nmsgid \"Coahuila\"\nmsgstr \"\"\n\n#: mx/mx_states.py:21\nmsgid \"Colima\"\nmsgstr \"\"\n\n#: mx/mx_states.py:22\nmsgid \"Distrito Federal\"\nmsgstr \"\"\n\n#: mx/mx_states.py:23\nmsgid \"Durango\"\nmsgstr \"\"\n\n#: mx/mx_states.py:24\nmsgid \"Guerrero\"\nmsgstr \"\"\n\n#: mx/mx_states.py:25\nmsgid \"Guanajuato\"\nmsgstr \"\"\n\n#: mx/mx_states.py:26\nmsgid \"Hidalgo\"\nmsgstr \"\"\n\n#: mx/mx_states.py:27\nmsgid \"Jalisco\"\nmsgstr \"\"\n\n#: mx/mx_states.py:28\nmsgid \"Estado de México\"\nmsgstr \"\"\n\n#: mx/mx_states.py:29\nmsgid \"Michoacán\"\nmsgstr \"\"\n\n#: mx/mx_states.py:30\nmsgid \"Morelos\"\nmsgstr \"\"\n\n#: mx/mx_states.py:31\nmsgid \"Nayarit\"\nmsgstr \"\"\n\n#: mx/mx_states.py:32\nmsgid \"Nuevo León\"\nmsgstr \"\"\n\n#: mx/mx_states.py:33\nmsgid \"Oaxaca\"\nmsgstr \"\"\n\n#: mx/mx_states.py:34\nmsgid \"Puebla\"\nmsgstr \"\"\n\n#: mx/mx_states.py:35\nmsgid \"Querétaro\"\nmsgstr \"\"\n\n#: mx/mx_states.py:36\nmsgid \"Quintana Roo\"\nmsgstr \"\"\n\n#: mx/mx_states.py:37\nmsgid \"Sinaloa\"\nmsgstr \"\"\n\n#: mx/mx_states.py:38\nmsgid \"San Luis Potosí\"\nmsgstr \"\"\n\n#: mx/mx_states.py:39\nmsgid \"Sonora\"\nmsgstr \"\"\n\n#: mx/mx_states.py:40\nmsgid \"Tabasco\"\nmsgstr \"\"\n\n#: mx/mx_states.py:41\nmsgid \"Tamaulipas\"\nmsgstr \"\"\n\n#: mx/mx_states.py:42\nmsgid \"Tlaxcala\"\nmsgstr \"\"\n\n#: mx/mx_states.py:43\nmsgid \"Veracruz\"\nmsgstr \"\"\n\n#: mx/mx_states.py:44\nmsgid \"Yucatán\"\nmsgstr \"\"\n\n#: mx/mx_states.py:45\nmsgid \"Zacatecas\"\nmsgstr \"\"\n\n#: nl/forms.py:26\nmsgid \"Enter a valid postal code\"\nmsgstr \"\"\n\n#: nl/forms.py:82\nmsgid \"Enter a valid SoFi number\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:4\nmsgid \"Drenthe\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:5\nmsgid \"Flevoland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:6\nmsgid \"Friesland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:7\nmsgid \"Gelderland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:8\nmsgid \"Groningen\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:10\nmsgid \"Noord-Brabant\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:11\nmsgid \"Noord-Holland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:12\nmsgid \"Overijssel\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:13\nmsgid \"Utrecht\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:14\nmsgid \"Zeeland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:15\nmsgid \"Zuid-Holland\"\nmsgstr \"\"\n\n#: no/forms.py:39\nmsgid \"Enter a valid Norwegian social security number.\"\nmsgstr \"\"\n\n#: pe/forms.py:28\nmsgid \"This field requires 8 digits.\"\nmsgstr \"\"\n\n#: pe/forms.py:56\nmsgid \"This field requires 11 digits.\"\nmsgstr \"\"\n\n#: pl/forms.py:42\nmsgid \"National Identification Number consists of 11 digits.\"\nmsgstr \"\"\n\n#: pl/forms.py:43\nmsgid \"Wrong checksum for the National Identification Number.\"\nmsgstr \"\"\n\n#: pl/forms.py:79\nmsgid \"National ID Card Number consists of 3 letters and 6 digits.\"\nmsgstr \"\"\n\n#: pl/forms.py:80\nmsgid \"Wrong checksum for the National ID Card Number.\"\nmsgstr \"\"\n\n#: pl/forms.py:131\nmsgid \"\"\n\"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or \"\n\"XXXXXXXXXX.\"\nmsgstr \"\"\n\n#: pl/forms.py:132\nmsgid \"Wrong checksum for the Tax Number (NIP).\"\nmsgstr \"\"\n\n#: pl/forms.py:171\nmsgid \"National Business Register Number (REGON) consists of 9 or 14 digits.\"\nmsgstr \"\"\n\n#: pl/forms.py:172\nmsgid \"Wrong checksum for the National Business Register Number (REGON).\"\nmsgstr \"\"\n\n#: pl/forms.py:212\nmsgid \"Enter a postal code in the format XX-XXX.\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:8\nmsgid \"Lower Silesia\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:9\nmsgid \"Kuyavia-Pomerania\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:10\nmsgid \"Lublin\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:11\nmsgid \"Lubusz\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:12\nmsgid \"Lodz\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:13\nmsgid \"Lesser Poland\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:14\nmsgid \"Masovia\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:15\nmsgid \"Opole\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:16\nmsgid \"Subcarpatia\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:17\nmsgid \"Podlasie\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:18\nmsgid \"Pomerania\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:19\nmsgid \"Silesia\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:20\nmsgid \"Swietokrzyskie\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:21\nmsgid \"Warmia-Masuria\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:22\nmsgid \"Greater Poland\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:23\nmsgid \"West Pomerania\"\nmsgstr \"\"\n\n#: pt/forms.py:19\nmsgid \"Enter a zip code in the format XXXX-XXX.\"\nmsgstr \"\"\n\n#: pt/forms.py:39\nmsgid \"Phone numbers must have 9 digits, or start by + or 00.\"\nmsgstr \"\"\n\n#: ro/forms.py:22\nmsgid \"Enter a valid CIF.\"\nmsgstr \"\"\n\n#: ro/forms.py:59\nmsgid \"Enter a valid CNP.\"\nmsgstr \"\"\n\n#: ro/forms.py:143\nmsgid \"Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format\"\nmsgstr \"\"\n\n#: ro/forms.py:175\nmsgid \"Phone numbers must be in XXXX-XXXXXX format.\"\nmsgstr \"\"\n\n#: ro/forms.py:200\nmsgid \"Enter a valid postal code in the format XXXXXX\"\nmsgstr \"\"\n\n#: ru/forms.py:37\nmsgid \"Enter a postal code in the format XXXXXX.\"\nmsgstr \"\"\n\n#: ru/forms.py:50\nmsgid \"Enter a passport number in the format XXXX XXXXXX.\"\nmsgstr \"\"\n\n#: ru/forms.py:63\nmsgid \"Enter a passport number in the format XX XXXXXXX.\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:10\nmsgid \"Central Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:11\nmsgid \"South Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:12\nmsgid \"North-West Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:13\nmsgid \"Far-East Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:14\nmsgid \"Siberian Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:15\nmsgid \"Ural Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:16\nmsgid \"Privolzhsky Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:17\nmsgid \"North-Caucasian Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:21\nmsgid \"Moskva\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:22\nmsgid \"Saint-Peterburg\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:23\nmsgid \"Moskovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:24\nmsgid \"Adygeya, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:25\nmsgid \"Bashkortostan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:26\nmsgid \"Buryatia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:27\nmsgid \"Altay, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:28\nmsgid \"Dagestan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:29\nmsgid \"Ingushskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:30\nmsgid \"Kabardino-Balkarskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:31\nmsgid \"Kalmykia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:32\nmsgid \"Karachaevo-Cherkesskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:33\nmsgid \"Karelia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:34\nmsgid \"Komi, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:35\nmsgid \"Mariy Ehl, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:36\nmsgid \"Mordovia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:37\nmsgid \"Sakha, Respublika (Yakutiya)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:38\nmsgid \"Severnaya Osetia, Respublika (Alania)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:39\nmsgid \"Tatarstan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:40\nmsgid \"Tyva, Respublika (Tuva)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:41\nmsgid \"Udmurtskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:42\nmsgid \"Khakassiya, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:43\nmsgid \"Chechenskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:44\nmsgid \"Chuvashskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:45\nmsgid \"Altayskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:46\nmsgid \"Zabaykalskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:47\nmsgid \"Kamchatskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:48\nmsgid \"Krasnodarskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:49\nmsgid \"Krasnoyarskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:50\nmsgid \"Permskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:51\nmsgid \"Primorskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:52\nmsgid \"Stavropol'siyy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:53\nmsgid \"Khabarovskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:54\nmsgid \"Amurskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:55\nmsgid \"Arkhangel'skaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:56\nmsgid \"Astrakhanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:57\nmsgid \"Belgorodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:58\nmsgid \"Bryanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:59\nmsgid \"Vladimirskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:60\nmsgid \"Volgogradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:61\nmsgid \"Vologodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:62\nmsgid \"Voronezhskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:63\nmsgid \"Ivanovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:64\nmsgid \"Irkutskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:65\nmsgid \"Kaliningradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:66\nmsgid \"Kaluzhskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:67\nmsgid \"Kemerovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:68\nmsgid \"Kirovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:69\nmsgid \"Kostromskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:70\nmsgid \"Kurganskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:71\nmsgid \"Kurskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:72\nmsgid \"Leningradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:73\nmsgid \"Lipeckaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:74\nmsgid \"Magadanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:75\nmsgid \"Murmanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:76\nmsgid \"Nizhegorodskaja oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:77\nmsgid \"Novgorodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:78\nmsgid \"Novosibirskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:79\nmsgid \"Omskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:80\nmsgid \"Orenburgskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:81\nmsgid \"Orlovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:82\nmsgid \"Penzenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:83\nmsgid \"Pskovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:84\nmsgid \"Rostovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:85\nmsgid \"Rjazanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:86\nmsgid \"Samarskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:87\nmsgid \"Saratovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:88\nmsgid \"Sakhalinskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:89\nmsgid \"Sverdlovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:90\nmsgid \"Smolenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:91\nmsgid \"Tambovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:92\nmsgid \"Tverskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:93\nmsgid \"Tomskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:94\nmsgid \"Tul'skaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:95\nmsgid \"Tyumenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:96\nmsgid \"Ul'ianovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:97\nmsgid \"Chelyabinskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:98\nmsgid \"Yaroslavskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:99\nmsgid \"Evreyskaya avtonomnaja oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:100\nmsgid \"Neneckiy autonomnyy okrug\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:101\nmsgid \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:102\nmsgid \"Chukotskiy avtonomnyy okrug\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:103\nmsgid \"Yamalo-Neneckiy avtonomnyy okrug\"\nmsgstr \"\"\n\n#: se/forms.py:54\nmsgid \"Enter a valid Swedish organisation number.\"\nmsgstr \"\"\n\n#: se/forms.py:111\nmsgid \"Enter a valid Swedish personal identity number.\"\nmsgstr \"\"\n\n#: se/forms.py:112\nmsgid \"Co-ordination numbers are not allowed.\"\nmsgstr \"\"\n\n#: se/forms.py:154\nmsgid \"Enter a Swedish postal code in the format XXXXX.\"\nmsgstr \"\"\n\n#: se/se_counties.py:16\nmsgid \"Stockholm\"\nmsgstr \"\"\n\n#: se/se_counties.py:17\nmsgid \"Västerbotten\"\nmsgstr \"\"\n\n#: se/se_counties.py:18\nmsgid \"Norrbotten\"\nmsgstr \"\"\n\n#: se/se_counties.py:19\nmsgid \"Uppsala\"\nmsgstr \"\"\n\n#: se/se_counties.py:20\nmsgid \"Södermanland\"\nmsgstr \"\"\n\n#: se/se_counties.py:21\nmsgid \"Östergötland\"\nmsgstr \"\"\n\n#: se/se_counties.py:22\nmsgid \"Jönköping\"\nmsgstr \"\"\n\n#: se/se_counties.py:23\nmsgid \"Kronoberg\"\nmsgstr \"\"\n\n#: se/se_counties.py:24\nmsgid \"Kalmar\"\nmsgstr \"\"\n\n#: se/se_counties.py:25\nmsgid \"Gotland\"\nmsgstr \"\"\n\n#: se/se_counties.py:26\nmsgid \"Blekinge\"\nmsgstr \"\"\n\n#: se/se_counties.py:27\nmsgid \"Skåne\"\nmsgstr \"\"\n\n#: se/se_counties.py:28\nmsgid \"Halland\"\nmsgstr \"\"\n\n#: se/se_counties.py:29\nmsgid \"Västra Götaland\"\nmsgstr \"\"\n\n#: se/se_counties.py:30\nmsgid \"Värmland\"\nmsgstr \"\"\n\n#: se/se_counties.py:31\nmsgid \"Örebro\"\nmsgstr \"\"\n\n#: se/se_counties.py:32\nmsgid \"Västmanland\"\nmsgstr \"\"\n\n#: se/se_counties.py:33\nmsgid \"Dalarna\"\nmsgstr \"\"\n\n#: se/se_counties.py:34\nmsgid \"Gävleborg\"\nmsgstr \"\"\n\n#: se/se_counties.py:35\nmsgid \"Västernorrland\"\nmsgstr \"\"\n\n#: se/se_counties.py:36\nmsgid \"Jämtland\"\nmsgstr \"\"\n\n#: si/forms.py:25\nmsgid \"The first 7 digits of the EMSO must represent a valid past date.\"\nmsgstr \"\"\n\n#: si/forms.py:26\nmsgid \"The EMSO is not valid.\"\nmsgstr \"\"\n\n#: si/forms.py:86\nmsgid \"Enter a valid tax number in form SIXXXXXXXX\"\nmsgstr \"\"\n\n#: si/forms.py:151\nmsgid \"Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:8\nmsgid \"Banska Bystrica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:9\nmsgid \"Banska Stiavnica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:10\nmsgid \"Bardejov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:11\nmsgid \"Banovce nad Bebravou\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:12\nmsgid \"Brezno\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:13\nmsgid \"Bratislava I\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:14\nmsgid \"Bratislava II\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:15\nmsgid \"Bratislava III\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:16\nmsgid \"Bratislava IV\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:17\nmsgid \"Bratislava V\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:18\nmsgid \"Bytca\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:19\nmsgid \"Cadca\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:20\nmsgid \"Detva\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:21\nmsgid \"Dolny Kubin\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:22\nmsgid \"Dunajska Streda\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:23\nmsgid \"Galanta\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:24\nmsgid \"Gelnica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:25\nmsgid \"Hlohovec\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:26\nmsgid \"Humenne\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:27\nmsgid \"Ilava\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:28\nmsgid \"Kezmarok\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:29\nmsgid \"Komarno\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:30\nmsgid \"Kosice I\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:31\nmsgid \"Kosice II\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:32\nmsgid \"Kosice III\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:33\nmsgid \"Kosice IV\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:34\nmsgid \"Kosice - okolie\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:35\nmsgid \"Krupina\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:36\nmsgid \"Kysucke Nove Mesto\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:37\nmsgid \"Levice\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:38\nmsgid \"Levoca\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:39\nmsgid \"Liptovsky Mikulas\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:40\nmsgid \"Lucenec\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:41\nmsgid \"Malacky\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:42\nmsgid \"Martin\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:43\nmsgid \"Medzilaborce\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:44\nmsgid \"Michalovce\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:45\nmsgid \"Myjava\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:46\nmsgid \"Namestovo\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:47\nmsgid \"Nitra\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:48\nmsgid \"Nove Mesto nad Vahom\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:49\nmsgid \"Nove Zamky\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:50\nmsgid \"Partizanske\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:51\nmsgid \"Pezinok\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:52\nmsgid \"Piestany\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:53\nmsgid \"Poltar\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:54\nmsgid \"Poprad\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:55\nmsgid \"Povazska Bystrica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:56\nmsgid \"Presov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:57\nmsgid \"Prievidza\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:58\nmsgid \"Puchov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:59\nmsgid \"Revuca\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:60\nmsgid \"Rimavska Sobota\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:61\nmsgid \"Roznava\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:62\nmsgid \"Ruzomberok\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:63\nmsgid \"Sabinov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:64\nmsgid \"Senec\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:65\nmsgid \"Senica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:66\nmsgid \"Skalica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:67\nmsgid \"Snina\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:68\nmsgid \"Sobrance\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:69\nmsgid \"Spisska Nova Ves\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:70\nmsgid \"Stara Lubovna\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:71\nmsgid \"Stropkov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:72\nmsgid \"Svidnik\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:73\nmsgid \"Sala\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:74\nmsgid \"Topolcany\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:75\nmsgid \"Trebisov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:76\nmsgid \"Trencin\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:77\nmsgid \"Trnava\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:78\nmsgid \"Turcianske Teplice\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:79\nmsgid \"Tvrdosin\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:80\nmsgid \"Velky Krtis\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:81\nmsgid \"Vranov nad Toplou\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:82\nmsgid \"Zlate Moravce\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:83\nmsgid \"Zvolen\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:84\nmsgid \"Zarnovica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:85\nmsgid \"Ziar nad Hronom\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:86\nmsgid \"Zilina\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:8\nmsgid \"Banska Bystrica region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:9\nmsgid \"Bratislava region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:10\nmsgid \"Kosice region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:11\nmsgid \"Nitra region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:12\nmsgid \"Presov region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:13\nmsgid \"Trencin region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:14\nmsgid \"Trnava region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:15\nmsgid \"Zilina region\"\nmsgstr \"\"\n\n#: tr/forms.py:21\nmsgid \"Enter a postal code in the format XXXXX.\"\nmsgstr \"\"\n\n#: tr/forms.py:42\nmsgid \"Phone numbers must be in 0XXX XXX XXXX format.\"\nmsgstr \"\"\n\n#: tr/forms.py:69\nmsgid \"Enter a valid Turkish Identification number.\"\nmsgstr \"\"\n\n#: tr/forms.py:70\nmsgid \"Turkish Identification number must be 11 digits.\"\nmsgstr \"\"\n\n#: us/forms.py:21\nmsgid \"Enter a zip code in the format XXXXX or XXXXX-XXXX.\"\nmsgstr \"\"\n\n#: us/forms.py:59\nmsgid \"Enter a valid U.S. Social Security number in XXX-XX-XXXX format.\"\nmsgstr \"\"\n\n#: us/forms.py:92\nmsgid \"Enter a U.S. state or territory.\"\nmsgstr \"\"\n\n#: us/models.py:8\nmsgid \"U.S. state (two uppercase letters)\"\nmsgstr \"Држава у САД (два велика слова)\"\n\n#: us/models.py:17\nmsgid \"U.S. postal code (two uppercase letters)\"\nmsgstr \"\"\n\n#: us/models.py:26\nmsgid \"Phone number\"\nmsgstr \"Број телефона\"\n\n#: uy/forms.py:29\nmsgid \"Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.\"\nmsgstr \"\"\n\n#: uy/forms.py:31\nmsgid \"Enter a valid CI number.\"\nmsgstr \"\"\n\n#: za/forms.py:22\nmsgid \"Enter a valid South African ID number\"\nmsgstr \"\"\n\n#: za/forms.py:56\nmsgid \"Enter a valid South African postal code\"\nmsgstr \"\"\n\n#: za/za_provinces.py:4\nmsgid \"Eastern Cape\"\nmsgstr \"\"\n\n#: za/za_provinces.py:5\nmsgid \"Free State\"\nmsgstr \"\"\n\n#: za/za_provinces.py:6\nmsgid \"Gauteng\"\nmsgstr \"\"\n\n#: za/za_provinces.py:7\nmsgid \"KwaZulu-Natal\"\nmsgstr \"\"\n\n#: za/za_provinces.py:8\nmsgid \"Limpopo\"\nmsgstr \"\"\n\n#: za/za_provinces.py:9\nmsgid \"Mpumalanga\"\nmsgstr \"\"\n\n#: za/za_provinces.py:10\nmsgid \"Northern Cape\"\nmsgstr \"\"\n\n#: za/za_provinces.py:11\nmsgid \"North West\"\nmsgstr \"\"\n\n#: za/za_provinces.py:12\nmsgid \"Western Cape\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/locale/sr_Latn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-10-17 09:16+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/django/\"\n\"language/sr@latin/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sr@latin\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: ar/forms.py:30\nmsgid \"Enter a postal code in the format NNNN or ANNNNAAA.\"\nmsgstr \"Unesite poštanski broj u formatu NNNN ili ANNNNAAA.\"\n\n#: ar/forms.py:52 br/forms.py:95 br/forms.py:134 pe/forms.py:27 pe/forms.py:55\nmsgid \"This field requires only numbers.\"\nmsgstr \"Ovo polje mora da sadrži samo brojke.\"\n\n#: ar/forms.py:53\nmsgid \"This field requires 7 or 8 digits.\"\nmsgstr \"Ovo polje mora da sadrži 7 ili 8 cifara\"\n\n#: ar/forms.py:82\nmsgid \"Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.\"\nmsgstr \"Unestie važeći CUIT u formatu XX-XXXXXXXX-X or XXXXXXXXXXXX.\"\n\n#: ar/forms.py:83\nmsgid \"Invalid CUIT.\"\nmsgstr \"Nevažeći CUIT\"\n\n#: ar/forms.py:84\nmsgid \"Invalid legal type. Type must be 27, 20, 23 or 30.\"\nmsgstr \"\"\n\n#: at/at_states.py:5\nmsgid \"Burgenland\"\nmsgstr \"Burgenland\"\n\n#: at/at_states.py:6\nmsgid \"Carinthia\"\nmsgstr \"Karintija\"\n\n#: at/at_states.py:7\nmsgid \"Lower Austria\"\nmsgstr \"Donja Austrija\"\n\n#: at/at_states.py:8\nmsgid \"Upper Austria\"\nmsgstr \"Gornja Austrija\"\n\n#: at/at_states.py:9\nmsgid \"Salzburg\"\nmsgstr \"Salcburg\"\n\n#: at/at_states.py:10\nmsgid \"Styria\"\nmsgstr \"Stirija\"\n\n#: at/at_states.py:11\nmsgid \"Tyrol\"\nmsgstr \"Tirol\"\n\n#: at/at_states.py:12\nmsgid \"Vorarlberg\"\nmsgstr \"Voralber\"\n\n#: at/at_states.py:13\nmsgid \"Vienna\"\nmsgstr \"Beč\"\n\n#: at/forms.py:22 ch/forms.py:22 no/forms.py:19\nmsgid \"Enter a zip code in the format XXXX.\"\nmsgstr \"Unesite poštanski broj u formatu XXXX.\"\n\n#: at/forms.py:50\nmsgid \"Enter a valid Austrian Social Security Number in XXXX XXXXXX format.\"\nmsgstr \"\"\n\"Unesite važeći austrijski broj socijalnog osiguranja u formatu XXXX XXXXXX.\"\n\n#: au/forms.py:26\nmsgid \"Enter a 4 digit postcode.\"\nmsgstr \"\"\n\n#: au/models.py:9\nmsgid \"Australian State\"\nmsgstr \"\"\n\n#: au/models.py:19\nmsgid \"Australian Postcode\"\nmsgstr \"\"\n\n#: au/models.py:33\nmsgid \"Australian Phone number\"\nmsgstr \"\"\n\n#: be/be_provinces.py:5\nmsgid \"Antwerp\"\nmsgstr \"\"\n\n#: be/be_provinces.py:6\nmsgid \"Brussels\"\nmsgstr \"\"\n\n#: be/be_provinces.py:7\nmsgid \"East Flanders\"\nmsgstr \"\"\n\n#: be/be_provinces.py:8\nmsgid \"Flemish Brabant\"\nmsgstr \"\"\n\n#: be/be_provinces.py:9\nmsgid \"Hainaut\"\nmsgstr \"\"\n\n#: be/be_provinces.py:10\nmsgid \"Liege\"\nmsgstr \"\"\n\n#: be/be_provinces.py:11 nl/nl_provinces.py:9\nmsgid \"Limburg\"\nmsgstr \"\"\n\n#: be/be_provinces.py:12\nmsgid \"Luxembourg\"\nmsgstr \"\"\n\n#: be/be_provinces.py:13\nmsgid \"Namur\"\nmsgstr \"\"\n\n#: be/be_provinces.py:14\nmsgid \"Walloon Brabant\"\nmsgstr \"\"\n\n#: be/be_provinces.py:15\nmsgid \"West Flanders\"\nmsgstr \"\"\n\n#: be/be_regions.py:5\nmsgid \"Brussels Capital Region\"\nmsgstr \"\"\n\n#: be/be_regions.py:6\nmsgid \"Flemish Region\"\nmsgstr \"\"\n\n#: be/be_regions.py:7\nmsgid \"Wallonia\"\nmsgstr \"\"\n\n#: be/forms.py:25\nmsgid \"Enter a valid postal code in the range and format 1XXX - 9XXX.\"\nmsgstr \"\"\n\n#: be/forms.py:48\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\nmsgstr \"\"\n\n#: br/forms.py:22\nmsgid \"Enter a zip code in the format XXXXX-XXX.\"\nmsgstr \"Unesite poštanski broj u formatu XXXXX-XXX.\"\n\n#: br/forms.py:31\nmsgid \"Phone numbers must be in XX-XXXX-XXXX format.\"\nmsgstr \"Broj telefona mora biti u formatu XX-XXXX-XXXX.\"\n\n#: br/forms.py:58\nmsgid \"\"\n\"Select a valid brazilian state. That state is not one of the available \"\n\"states.\"\nmsgstr \"Odaberite postojeću brazilsku državu. Ta država nije među ponuđenima.\"\n\n#: br/forms.py:93\nmsgid \"Invalid CPF number.\"\nmsgstr \"Nevažeći CPF broj\"\n\n#: br/forms.py:94\nmsgid \"This field requires at most 11 digits or 14 characters.\"\nmsgstr \"\"\n\n#: br/forms.py:133\nmsgid \"Invalid CNPJ number.\"\nmsgstr \"\"\n\n#: br/forms.py:135\nmsgid \"This field requires at least 14 digits\"\nmsgstr \"\"\n\n#: ca/forms.py:29\nmsgid \"Enter a postal code in the format XXX XXX.\"\nmsgstr \"\"\n\n#: ca/forms.py:47 us/forms.py:30\nmsgid \"Phone numbers must be in XXX-XXX-XXXX format.\"\nmsgstr \"\"\n\n#: ca/forms.py:69\nmsgid \"Enter a Canadian province or territory.\"\nmsgstr \"\"\n\n#: ca/forms.py:110\nmsgid \"Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.\"\nmsgstr \"\"\n\n#: ch/ch_states.py:5\nmsgid \"Aargau\"\nmsgstr \"\"\n\n#: ch/ch_states.py:6\nmsgid \"Appenzell Innerrhoden\"\nmsgstr \"\"\n\n#: ch/ch_states.py:7\nmsgid \"Appenzell Ausserrhoden\"\nmsgstr \"\"\n\n#: ch/ch_states.py:8\nmsgid \"Basel-Stadt\"\nmsgstr \"\"\n\n#: ch/ch_states.py:9\nmsgid \"Basel-Land\"\nmsgstr \"\"\n\n#: ch/ch_states.py:10\nmsgid \"Berne\"\nmsgstr \"\"\n\n#: ch/ch_states.py:11\nmsgid \"Fribourg\"\nmsgstr \"\"\n\n#: ch/ch_states.py:12\nmsgid \"Geneva\"\nmsgstr \"\"\n\n#: ch/ch_states.py:13\nmsgid \"Glarus\"\nmsgstr \"\"\n\n#: ch/ch_states.py:14\nmsgid \"Graubuenden\"\nmsgstr \"\"\n\n#: ch/ch_states.py:15\nmsgid \"Jura\"\nmsgstr \"\"\n\n#: ch/ch_states.py:16\nmsgid \"Lucerne\"\nmsgstr \"\"\n\n#: ch/ch_states.py:17\nmsgid \"Neuchatel\"\nmsgstr \"\"\n\n#: ch/ch_states.py:18\nmsgid \"Nidwalden\"\nmsgstr \"\"\n\n#: ch/ch_states.py:19\nmsgid \"Obwalden\"\nmsgstr \"\"\n\n#: ch/ch_states.py:20\nmsgid \"Schaffhausen\"\nmsgstr \"\"\n\n#: ch/ch_states.py:21\nmsgid \"Schwyz\"\nmsgstr \"\"\n\n#: ch/ch_states.py:22\nmsgid \"Solothurn\"\nmsgstr \"\"\n\n#: ch/ch_states.py:23\nmsgid \"St. Gallen\"\nmsgstr \"\"\n\n#: ch/ch_states.py:24\nmsgid \"Thurgau\"\nmsgstr \"\"\n\n#: ch/ch_states.py:25\nmsgid \"Ticino\"\nmsgstr \"\"\n\n#: ch/ch_states.py:26\nmsgid \"Uri\"\nmsgstr \"\"\n\n#: ch/ch_states.py:27\nmsgid \"Valais\"\nmsgstr \"\"\n\n#: ch/ch_states.py:28\nmsgid \"Vaud\"\nmsgstr \"\"\n\n#: ch/ch_states.py:29\nmsgid \"Zug\"\nmsgstr \"\"\n\n#: ch/ch_states.py:30\nmsgid \"Zurich\"\nmsgstr \"\"\n\n#: ch/forms.py:37\nmsgid \"Phone numbers must be in 0XX XXX XX XX format.\"\nmsgstr \"\"\n\n#: ch/forms.py:68\nmsgid \"\"\n\"Enter a valid Swiss identity or passport card number in X1234567<0 or \"\n\"1234567890 format.\"\nmsgstr \"\"\n\n#: cl/forms.py:32\nmsgid \"Enter a valid Chilean RUT.\"\nmsgstr \"\"\n\n#: cl/forms.py:33\nmsgid \"Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.\"\nmsgstr \"\"\n\n#: cl/forms.py:34\nmsgid \"The Chilean RUT is not valid.\"\nmsgstr \"\"\n\n#: cn/forms.py:84\nmsgid \"Enter a post code in the format XXXXXX.\"\nmsgstr \"\"\n\n#: cn/forms.py:105\nmsgid \"ID Card Number consists of 15 or 18 digits.\"\nmsgstr \"\"\n\n#: cn/forms.py:106\nmsgid \"Invalid ID Card Number: Wrong checksum\"\nmsgstr \"\"\n\n#: cn/forms.py:107\nmsgid \"Invalid ID Card Number: Wrong birthdate\"\nmsgstr \"\"\n\n#: cn/forms.py:108\nmsgid \"Invalid ID Card Number: Wrong location code\"\nmsgstr \"\"\n\n#: cn/forms.py:193\nmsgid \"Enter a valid phone number.\"\nmsgstr \"\"\n\n#: cn/forms.py:210\nmsgid \"Enter a valid cell number.\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:8\nmsgid \"Prague\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:9\nmsgid \"Central Bohemian Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:10\nmsgid \"South Bohemian Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:11\nmsgid \"Pilsen Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:12\nmsgid \"Carlsbad Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:13\nmsgid \"Usti Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:14\nmsgid \"Liberec Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:15\nmsgid \"Hradec Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:16\nmsgid \"Pardubice Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:17\nmsgid \"Vysocina Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:18\nmsgid \"South Moravian Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:19\nmsgid \"Olomouc Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:20\nmsgid \"Zlin Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:21\nmsgid \"Moravian-Silesian Region\"\nmsgstr \"\"\n\n#: cz/forms.py:32 sk/forms.py:33\nmsgid \"Enter a postal code in the format XXXXX or XXX XX.\"\nmsgstr \"\"\n\n#: cz/forms.py:52\nmsgid \"Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.\"\nmsgstr \"\"\n\n#: cz/forms.py:53\nmsgid \"Enter a valid birth number.\"\nmsgstr \"\"\n\n#: cz/forms.py:102\nmsgid \"Enter a valid IC number.\"\nmsgstr \"\"\n\n#: de/de_states.py:5\nmsgid \"Baden-Wuerttemberg\"\nmsgstr \"\"\n\n#: de/de_states.py:6\nmsgid \"Bavaria\"\nmsgstr \"\"\n\n#: de/de_states.py:7\nmsgid \"Berlin\"\nmsgstr \"\"\n\n#: de/de_states.py:8\nmsgid \"Brandenburg\"\nmsgstr \"\"\n\n#: de/de_states.py:9\nmsgid \"Bremen\"\nmsgstr \"\"\n\n#: de/de_states.py:10\nmsgid \"Hamburg\"\nmsgstr \"\"\n\n#: de/de_states.py:11\nmsgid \"Hessen\"\nmsgstr \"\"\n\n#: de/de_states.py:12\nmsgid \"Mecklenburg-Western Pomerania\"\nmsgstr \"\"\n\n#: de/de_states.py:13\nmsgid \"Lower Saxony\"\nmsgstr \"\"\n\n#: de/de_states.py:14\nmsgid \"North Rhine-Westphalia\"\nmsgstr \"\"\n\n#: de/de_states.py:15\nmsgid \"Rhineland-Palatinate\"\nmsgstr \"\"\n\n#: de/de_states.py:16\nmsgid \"Saarland\"\nmsgstr \"\"\n\n#: de/de_states.py:17\nmsgid \"Saxony\"\nmsgstr \"\"\n\n#: de/de_states.py:18\nmsgid \"Saxony-Anhalt\"\nmsgstr \"\"\n\n#: de/de_states.py:19\nmsgid \"Schleswig-Holstein\"\nmsgstr \"\"\n\n#: de/de_states.py:20\nmsgid \"Thuringia\"\nmsgstr \"\"\n\n#: de/forms.py:20 fi/forms.py:18 fr/forms.py:20\nmsgid \"Enter a zip code in the format XXXXX.\"\nmsgstr \"\"\n\n#: de/forms.py:46\nmsgid \"\"\n\"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"format.\"\nmsgstr \"\"\n\n#: es/es_provinces.py:5\nmsgid \"Araba\"\nmsgstr \"\"\n\n#: es/es_provinces.py:6\nmsgid \"Albacete\"\nmsgstr \"\"\n\n#: es/es_provinces.py:7\nmsgid \"Alacant\"\nmsgstr \"\"\n\n#: es/es_provinces.py:8\nmsgid \"Almeria\"\nmsgstr \"\"\n\n#: es/es_provinces.py:9\nmsgid \"Avila\"\nmsgstr \"\"\n\n#: es/es_provinces.py:10\nmsgid \"Badajoz\"\nmsgstr \"\"\n\n#: es/es_provinces.py:11\nmsgid \"Illes Balears\"\nmsgstr \"\"\n\n#: es/es_provinces.py:12\nmsgid \"Barcelona\"\nmsgstr \"\"\n\n#: es/es_provinces.py:13\nmsgid \"Burgos\"\nmsgstr \"\"\n\n#: es/es_provinces.py:14\nmsgid \"Caceres\"\nmsgstr \"\"\n\n#: es/es_provinces.py:15\nmsgid \"Cadiz\"\nmsgstr \"\"\n\n#: es/es_provinces.py:16\nmsgid \"Castello\"\nmsgstr \"\"\n\n#: es/es_provinces.py:17\nmsgid \"Ciudad Real\"\nmsgstr \"\"\n\n#: es/es_provinces.py:18\nmsgid \"Cordoba\"\nmsgstr \"\"\n\n#: es/es_provinces.py:19\nmsgid \"A Coruna\"\nmsgstr \"\"\n\n#: es/es_provinces.py:20\nmsgid \"Cuenca\"\nmsgstr \"\"\n\n#: es/es_provinces.py:21\nmsgid \"Girona\"\nmsgstr \"\"\n\n#: es/es_provinces.py:22\nmsgid \"Granada\"\nmsgstr \"\"\n\n#: es/es_provinces.py:23\nmsgid \"Guadalajara\"\nmsgstr \"\"\n\n#: es/es_provinces.py:24\nmsgid \"Guipuzkoa\"\nmsgstr \"\"\n\n#: es/es_provinces.py:25\nmsgid \"Huelva\"\nmsgstr \"\"\n\n#: es/es_provinces.py:26\nmsgid \"Huesca\"\nmsgstr \"\"\n\n#: es/es_provinces.py:27\nmsgid \"Jaen\"\nmsgstr \"\"\n\n#: es/es_provinces.py:28\nmsgid \"Leon\"\nmsgstr \"\"\n\n#: es/es_provinces.py:29\nmsgid \"Lleida\"\nmsgstr \"\"\n\n#: es/es_provinces.py:30 es/es_regions.py:17\nmsgid \"La Rioja\"\nmsgstr \"\"\n\n#: es/es_provinces.py:31\nmsgid \"Lugo\"\nmsgstr \"\"\n\n#: es/es_provinces.py:32 es/es_regions.py:18\nmsgid \"Madrid\"\nmsgstr \"\"\n\n#: es/es_provinces.py:33\nmsgid \"Malaga\"\nmsgstr \"\"\n\n#: es/es_provinces.py:34\nmsgid \"Murcia\"\nmsgstr \"\"\n\n#: es/es_provinces.py:35\nmsgid \"Navarre\"\nmsgstr \"\"\n\n#: es/es_provinces.py:36\nmsgid \"Ourense\"\nmsgstr \"\"\n\n#: es/es_provinces.py:37\nmsgid \"Asturias\"\nmsgstr \"\"\n\n#: es/es_provinces.py:38\nmsgid \"Palencia\"\nmsgstr \"\"\n\n#: es/es_provinces.py:39\nmsgid \"Las Palmas\"\nmsgstr \"\"\n\n#: es/es_provinces.py:40\nmsgid \"Pontevedra\"\nmsgstr \"\"\n\n#: es/es_provinces.py:41\nmsgid \"Salamanca\"\nmsgstr \"\"\n\n#: es/es_provinces.py:42\nmsgid \"Santa Cruz de Tenerife\"\nmsgstr \"\"\n\n#: es/es_provinces.py:43 es/es_regions.py:11\nmsgid \"Cantabria\"\nmsgstr \"\"\n\n#: es/es_provinces.py:44\nmsgid \"Segovia\"\nmsgstr \"\"\n\n#: es/es_provinces.py:45\nmsgid \"Seville\"\nmsgstr \"\"\n\n#: es/es_provinces.py:46\nmsgid \"Soria\"\nmsgstr \"\"\n\n#: es/es_provinces.py:47\nmsgid \"Tarragona\"\nmsgstr \"\"\n\n#: es/es_provinces.py:48\nmsgid \"Teruel\"\nmsgstr \"\"\n\n#: es/es_provinces.py:49\nmsgid \"Toledo\"\nmsgstr \"\"\n\n#: es/es_provinces.py:50\nmsgid \"Valencia\"\nmsgstr \"\"\n\n#: es/es_provinces.py:51\nmsgid \"Valladolid\"\nmsgstr \"\"\n\n#: es/es_provinces.py:52\nmsgid \"Bizkaia\"\nmsgstr \"\"\n\n#: es/es_provinces.py:53\nmsgid \"Zamora\"\nmsgstr \"\"\n\n#: es/es_provinces.py:54\nmsgid \"Zaragoza\"\nmsgstr \"\"\n\n#: es/es_provinces.py:55\nmsgid \"Ceuta\"\nmsgstr \"\"\n\n#: es/es_provinces.py:56\nmsgid \"Melilla\"\nmsgstr \"\"\n\n#: es/es_regions.py:5\nmsgid \"Andalusia\"\nmsgstr \"\"\n\n#: es/es_regions.py:6\nmsgid \"Aragon\"\nmsgstr \"\"\n\n#: es/es_regions.py:7\nmsgid \"Principality of Asturias\"\nmsgstr \"\"\n\n#: es/es_regions.py:8\nmsgid \"Balearic Islands\"\nmsgstr \"\"\n\n#: es/es_regions.py:9\nmsgid \"Basque Country\"\nmsgstr \"\"\n\n#: es/es_regions.py:10\nmsgid \"Canary Islands\"\nmsgstr \"\"\n\n#: es/es_regions.py:12\nmsgid \"Castile-La Mancha\"\nmsgstr \"\"\n\n#: es/es_regions.py:13\nmsgid \"Castile and Leon\"\nmsgstr \"\"\n\n#: es/es_regions.py:14\nmsgid \"Catalonia\"\nmsgstr \"\"\n\n#: es/es_regions.py:15\nmsgid \"Extremadura\"\nmsgstr \"\"\n\n#: es/es_regions.py:16\nmsgid \"Galicia\"\nmsgstr \"\"\n\n#: es/es_regions.py:19\nmsgid \"Region of Murcia\"\nmsgstr \"\"\n\n#: es/es_regions.py:20\nmsgid \"Foral Community of Navarre\"\nmsgstr \"\"\n\n#: es/es_regions.py:21\nmsgid \"Valencian Community\"\nmsgstr \"\"\n\n#: es/forms.py:26\nmsgid \"Enter a valid postal code in the range and format 01XXX - 52XXX.\"\nmsgstr \"\"\n\n#: es/forms.py:46\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or \"\n\"9XXXXXXXX.\"\nmsgstr \"\"\n\n#: es/forms.py:73\nmsgid \"Please enter a valid NIF, NIE, or CIF.\"\nmsgstr \"\"\n\n#: es/forms.py:74\nmsgid \"Please enter a valid NIF or NIE.\"\nmsgstr \"\"\n\n#: es/forms.py:75\nmsgid \"Invalid checksum for NIF.\"\nmsgstr \"\"\n\n#: es/forms.py:76\nmsgid \"Invalid checksum for NIE.\"\nmsgstr \"\"\n\n#: es/forms.py:77\nmsgid \"Invalid checksum for CIF.\"\nmsgstr \"\"\n\n#: es/forms.py:149\nmsgid \"\"\n\"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.\"\nmsgstr \"\"\n\n#: es/forms.py:150\nmsgid \"Invalid checksum for bank account number.\"\nmsgstr \"\"\n\n#: fi/forms.py:33\nmsgid \"Enter a valid Finnish social security number.\"\nmsgstr \"\"\n\n#: fr/forms.py:35\nmsgid \"Phone numbers must be in 0X XX XX XX XX format.\"\nmsgstr \"\"\n\n#: gb/forms.py:25\nmsgid \"Enter a valid postcode.\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:11\nmsgid \"Bedfordshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:12\nmsgid \"Buckinghamshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:14\nmsgid \"Cheshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:15\nmsgid \"Cornwall and Isles of Scilly\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:16\nmsgid \"Cumbria\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:17\nmsgid \"Derbyshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:18\nmsgid \"Devon\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:19\nmsgid \"Dorset\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:20\nmsgid \"Durham\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:21\nmsgid \"East Sussex\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:22\nmsgid \"Essex\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:23\nmsgid \"Gloucestershire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:24\nmsgid \"Greater London\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:25\nmsgid \"Greater Manchester\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:26\nmsgid \"Hampshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:27\nmsgid \"Hertfordshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:28\nmsgid \"Kent\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:29\nmsgid \"Lancashire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:30\nmsgid \"Leicestershire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:31\nmsgid \"Lincolnshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:32\nmsgid \"Merseyside\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:33\nmsgid \"Norfolk\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:34\nmsgid \"North Yorkshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:35\nmsgid \"Northamptonshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:36\nmsgid \"Northumberland\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:37\nmsgid \"Nottinghamshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:38\nmsgid \"Oxfordshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:39\nmsgid \"Shropshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:40\nmsgid \"Somerset\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:41\nmsgid \"South Yorkshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:42\nmsgid \"Staffordshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:43\nmsgid \"Suffolk\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:44\nmsgid \"Surrey\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:45\nmsgid \"Tyne and Wear\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:46\nmsgid \"Warwickshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:47\nmsgid \"West Midlands\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:48\nmsgid \"West Sussex\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:49\nmsgid \"West Yorkshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:50\nmsgid \"Wiltshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:51\nmsgid \"Worcestershire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:55\nmsgid \"County Antrim\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:56\nmsgid \"County Armagh\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:57\nmsgid \"County Down\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:58\nmsgid \"County Fermanagh\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:59\nmsgid \"County Londonderry\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:60\nmsgid \"County Tyrone\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:64\nmsgid \"Clwyd\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:65\nmsgid \"Dyfed\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:66\nmsgid \"Gwent\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:67\nmsgid \"Gwynedd\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:68\nmsgid \"Mid Glamorgan\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:69\nmsgid \"Powys\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:70\nmsgid \"South Glamorgan\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:71\nmsgid \"West Glamorgan\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:75\nmsgid \"Borders\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:76\nmsgid \"Central Scotland\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:77\nmsgid \"Dumfries and Galloway\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:78\nmsgid \"Fife\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:79\nmsgid \"Grampian\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:80\nmsgid \"Highland\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:81\nmsgid \"Lothian\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:82\nmsgid \"Orkney Islands\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:83\nmsgid \"Shetland Islands\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:84\nmsgid \"Strathclyde\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:85\nmsgid \"Tayside\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:86\nmsgid \"Western Isles\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:90\nmsgid \"England\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:91\nmsgid \"Northern Ireland\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:92\nmsgid \"Scotland\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:93\nmsgid \"Wales\"\nmsgstr \"\"\n\n#: hk/forms.py:37\n#, python-format\nmsgid \"Phone number should not start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:40\n#, python-format\nmsgid \"Phone number must be in one of the following formats: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:42\n#, python-format\nmsgid \"Phone number should start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hr/forms.py:76\nmsgid \"Enter a valid 13 digit JMBG\"\nmsgstr \"\"\n\n#: hr/forms.py:77\nmsgid \"Error in date segment\"\nmsgstr \"\"\n\n#: hr/forms.py:123\nmsgid \"Enter a valid 11 digit OIB\"\nmsgstr \"\"\n\n#: hr/forms.py:152 id/forms.py:112\nmsgid \"Enter a valid vehicle license plate number\"\nmsgstr \"\"\n\n#: hr/forms.py:153\nmsgid \"Enter a valid location code\"\nmsgstr \"\"\n\n#: hr/forms.py:154\nmsgid \"Number part cannot be zero\"\nmsgstr \"\"\n\n#: hr/forms.py:190\nmsgid \"Enter a valid 5 digit postal code\"\nmsgstr \"\"\n\n#: hr/forms.py:218 id/forms.py:72 nl/forms.py:56\nmsgid \"Enter a valid phone number\"\nmsgstr \"\"\n\n#: hr/forms.py:219\nmsgid \"Enter a valid area or mobile network code\"\nmsgstr \"\"\n\n#: hr/forms.py:220\nmsgid \"The phone nubmer is too long\"\nmsgstr \"\"\n\n#: hr/forms.py:258\nmsgid \"Enter a valid 19 digit JMBAG starting with 601983\"\nmsgstr \"\"\n\n#: hr/forms.py:259\nmsgid \"Card issue number cannot be zero\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:14\nmsgid \"Grad Zagreb\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:15\nmsgid \"Bjelovarsko-bilogorska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:16\nmsgid \"Brodsko-posavska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:17\nmsgid \"Dubrovačko-neretvanska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:18\nmsgid \"Istarska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:19\nmsgid \"Karlovačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:20\nmsgid \"Koprivničko-križevačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:21\nmsgid \"Krapinsko-zagorska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:22\nmsgid \"Ličko-senjska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:23\nmsgid \"Međimurska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:24\nmsgid \"Osječko-baranjska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:25\nmsgid \"Požeško-slavonska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:26\nmsgid \"Primorsko-goranska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:27\nmsgid \"Sisačko-moslavačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:28\nmsgid \"Splitsko-dalmatinska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:29\nmsgid \"Šibensko-kninska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:30\nmsgid \"Varaždinska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:31\nmsgid \"Virovitičko-podravska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:32\nmsgid \"Vukovarsko-srijemska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:33\nmsgid \"Zadarska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:34\nmsgid \"Zagrebačka županija\"\nmsgstr \"\"\n\n#: id/forms.py:31\nmsgid \"Enter a valid post code\"\nmsgstr \"\"\n\n#: id/forms.py:176\nmsgid \"Enter a valid NIK/KTP number\"\nmsgstr \"\"\n\n#: id/id_choices.py:15\nmsgid \"Aceh\"\nmsgstr \"\"\n\n#: id/id_choices.py:16 id/id_choices.py:79\nmsgid \"Bali\"\nmsgstr \"\"\n\n#: id/id_choices.py:17 id/id_choices.py:51\nmsgid \"Banten\"\nmsgstr \"\"\n\n#: id/id_choices.py:18 id/id_choices.py:60\nmsgid \"Bengkulu\"\nmsgstr \"\"\n\n#: id/id_choices.py:19 id/id_choices.py:53\nmsgid \"Yogyakarta\"\nmsgstr \"\"\n\n#: id/id_choices.py:20 id/id_choices.py:57\nmsgid \"Jakarta\"\nmsgstr \"\"\n\n#: id/id_choices.py:21 id/id_choices.py:81\nmsgid \"Gorontalo\"\nmsgstr \"\"\n\n#: id/id_choices.py:22 id/id_choices.py:63\nmsgid \"Jambi\"\nmsgstr \"\"\n\n#: id/id_choices.py:23\nmsgid \"Jawa Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:24\nmsgid \"Jawa Tengah\"\nmsgstr \"\"\n\n#: id/id_choices.py:25\nmsgid \"Jawa Timur\"\nmsgstr \"\"\n\n#: id/id_choices.py:26 id/id_choices.py:94\nmsgid \"Kalimantan Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:27 id/id_choices.py:72\nmsgid \"Kalimantan Selatan\"\nmsgstr \"\"\n\n#: id/id_choices.py:28 id/id_choices.py:95\nmsgid \"Kalimantan Tengah\"\nmsgstr \"\"\n\n#: id/id_choices.py:29 id/id_choices.py:96\nmsgid \"Kalimantan Timur\"\nmsgstr \"\"\n\n#: id/id_choices.py:30\nmsgid \"Kepulauan Bangka-Belitung\"\nmsgstr \"\"\n\n#: id/id_choices.py:31 id/id_choices.py:68\nmsgid \"Kepulauan Riau\"\nmsgstr \"\"\n\n#: id/id_choices.py:32 id/id_choices.py:61\nmsgid \"Lampung\"\nmsgstr \"\"\n\n#: id/id_choices.py:33 id/id_choices.py:76\nmsgid \"Maluku\"\nmsgstr \"\"\n\n#: id/id_choices.py:34 id/id_choices.py:77\nmsgid \"Maluku Utara\"\nmsgstr \"\"\n\n#: id/id_choices.py:35\nmsgid \"Nusa Tenggara Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:36\nmsgid \"Nusa Tenggara Timur\"\nmsgstr \"\"\n\n#: id/id_choices.py:37\nmsgid \"Papua\"\nmsgstr \"\"\n\n#: id/id_choices.py:38\nmsgid \"Papua Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:39 id/id_choices.py:66\nmsgid \"Riau\"\nmsgstr \"\"\n\n#: id/id_choices.py:40 id/id_choices.py:74\nmsgid \"Sulawesi Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:41 id/id_choices.py:75\nmsgid \"Sulawesi Selatan\"\nmsgstr \"\"\n\n#: id/id_choices.py:42 id/id_choices.py:82\nmsgid \"Sulawesi Tengah\"\nmsgstr \"\"\n\n#: id/id_choices.py:43 id/id_choices.py:85\nmsgid \"Sulawesi Tenggara\"\nmsgstr \"\"\n\n#: id/id_choices.py:44\nmsgid \"Sulawesi Utara\"\nmsgstr \"\"\n\n#: id/id_choices.py:45 id/id_choices.py:58\nmsgid \"Sumatera Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:46 id/id_choices.py:62\nmsgid \"Sumatera Selatan\"\nmsgstr \"\"\n\n#: id/id_choices.py:47 id/id_choices.py:64\nmsgid \"Sumatera Utara\"\nmsgstr \"\"\n\n#: id/id_choices.py:52\nmsgid \"Magelang\"\nmsgstr \"\"\n\n#: id/id_choices.py:54\nmsgid \"Surakarta - Solo\"\nmsgstr \"\"\n\n#: id/id_choices.py:55\nmsgid \"Madiun\"\nmsgstr \"\"\n\n#: id/id_choices.py:56\nmsgid \"Kediri\"\nmsgstr \"\"\n\n#: id/id_choices.py:59\nmsgid \"Tapanuli\"\nmsgstr \"\"\n\n#: id/id_choices.py:65\nmsgid \"Nanggroe Aceh Darussalam\"\nmsgstr \"\"\n\n#: id/id_choices.py:67\nmsgid \"Kepulauan Bangka Belitung\"\nmsgstr \"\"\n\n#: id/id_choices.py:69\nmsgid \"Corps Consulate\"\nmsgstr \"\"\n\n#: id/id_choices.py:70\nmsgid \"Corps Diplomatic\"\nmsgstr \"\"\n\n#: id/id_choices.py:71\nmsgid \"Bandung\"\nmsgstr \"\"\n\n#: id/id_choices.py:73\nmsgid \"Sulawesi Utara Daratan\"\nmsgstr \"\"\n\n#: id/id_choices.py:78\nmsgid \"NTT - Timor\"\nmsgstr \"\"\n\n#: id/id_choices.py:80\nmsgid \"Sulawesi Utara Kepulauan\"\nmsgstr \"\"\n\n#: id/id_choices.py:83\nmsgid \"NTB - Lombok\"\nmsgstr \"\"\n\n#: id/id_choices.py:84\nmsgid \"Papua dan Papua Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:86\nmsgid \"Cirebon\"\nmsgstr \"\"\n\n#: id/id_choices.py:87\nmsgid \"NTB - Sumbawa\"\nmsgstr \"\"\n\n#: id/id_choices.py:88\nmsgid \"NTT - Flores\"\nmsgstr \"\"\n\n#: id/id_choices.py:89\nmsgid \"NTT - Sumba\"\nmsgstr \"\"\n\n#: id/id_choices.py:90\nmsgid \"Bogor\"\nmsgstr \"\"\n\n#: id/id_choices.py:91\nmsgid \"Pekalongan\"\nmsgstr \"\"\n\n#: id/id_choices.py:92\nmsgid \"Semarang\"\nmsgstr \"\"\n\n#: id/id_choices.py:93\nmsgid \"Pati\"\nmsgstr \"\"\n\n#: id/id_choices.py:97\nmsgid \"Surabaya\"\nmsgstr \"\"\n\n#: id/id_choices.py:98\nmsgid \"Madura\"\nmsgstr \"\"\n\n#: id/id_choices.py:99\nmsgid \"Malang\"\nmsgstr \"\"\n\n#: id/id_choices.py:100\nmsgid \"Jember\"\nmsgstr \"\"\n\n#: id/id_choices.py:101\nmsgid \"Banyumas\"\nmsgstr \"\"\n\n#: id/id_choices.py:102\nmsgid \"Federal Government\"\nmsgstr \"\"\n\n#: id/id_choices.py:103\nmsgid \"Bojonegoro\"\nmsgstr \"\"\n\n#: id/id_choices.py:104\nmsgid \"Purwakarta\"\nmsgstr \"\"\n\n#: id/id_choices.py:105\nmsgid \"Sidoarjo\"\nmsgstr \"\"\n\n#: id/id_choices.py:106\nmsgid \"Garut\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:8\nmsgid \"Antrim\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:9\nmsgid \"Armagh\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:10\nmsgid \"Carlow\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:11\nmsgid \"Cavan\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:12\nmsgid \"Clare\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:13\nmsgid \"Cork\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:14\nmsgid \"Derry\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:15\nmsgid \"Donegal\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:16\nmsgid \"Down\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:17\nmsgid \"Dublin\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:18\nmsgid \"Fermanagh\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:19\nmsgid \"Galway\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:20\nmsgid \"Kerry\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:21\nmsgid \"Kildare\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:22\nmsgid \"Kilkenny\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:23\nmsgid \"Laois\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:24\nmsgid \"Leitrim\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:25\nmsgid \"Limerick\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:26\nmsgid \"Longford\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:27\nmsgid \"Louth\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:28\nmsgid \"Mayo\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:29\nmsgid \"Meath\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:30\nmsgid \"Monaghan\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:31\nmsgid \"Offaly\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:32\nmsgid \"Roscommon\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:33\nmsgid \"Sligo\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:34\nmsgid \"Tipperary\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:35\nmsgid \"Tyrone\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:36\nmsgid \"Waterford\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:37\nmsgid \"Westmeath\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:38\nmsgid \"Wexford\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:39\nmsgid \"Wicklow\"\nmsgstr \"\"\n\n#: il/forms.py:32\nmsgid \"Enter a postal code in the format XXXXX\"\nmsgstr \"\"\n\n#: il/forms.py:51\nmsgid \"Enter a valid ID number.\"\nmsgstr \"\"\n\n#: in_/forms.py:41\nmsgid \"Enter a zip code in the format XXXXXX or XXX XXX.\"\nmsgstr \"\"\n\n#: in_/forms.py:64\nmsgid \"Enter an Indian state or territory.\"\nmsgstr \"\"\n\n#: in_/forms.py:103\nmsgid \"Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.\"\nmsgstr \"\"\n\n#: is_/forms.py:22\nmsgid \"\"\n\"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.\"\nmsgstr \"\"\n\n#: is_/forms.py:23\nmsgid \"The Icelandic identification number is not valid.\"\nmsgstr \"\"\n\n#: it/forms.py:21\nmsgid \"Enter a valid zip code.\"\nmsgstr \"\"\n\n#: it/forms.py:48\nmsgid \"Enter a valid Social Security number.\"\nmsgstr \"\"\n\n#: it/forms.py:73\nmsgid \"Enter a valid VAT number.\"\nmsgstr \"\"\n\n#: jp/forms.py:19\nmsgid \"Enter a postal code in the format XXXXXXX or XXX-XXXX.\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:4\nmsgid \"Hokkaido\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:5\nmsgid \"Aomori\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:6\nmsgid \"Iwate\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:7\nmsgid \"Miyagi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:8\nmsgid \"Akita\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:9\nmsgid \"Yamagata\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:10\nmsgid \"Fukushima\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:11\nmsgid \"Ibaraki\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:12\nmsgid \"Tochigi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:13\nmsgid \"Gunma\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:14\nmsgid \"Saitama\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:15\nmsgid \"Chiba\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:16\nmsgid \"Tokyo\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:17\nmsgid \"Kanagawa\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:18\nmsgid \"Yamanashi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:19\nmsgid \"Nagano\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:20\nmsgid \"Niigata\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:21\nmsgid \"Toyama\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:22\nmsgid \"Ishikawa\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:23\nmsgid \"Fukui\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:24\nmsgid \"Gifu\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:25\nmsgid \"Shizuoka\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:26\nmsgid \"Aichi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:27\nmsgid \"Mie\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:28\nmsgid \"Shiga\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:29\nmsgid \"Kyoto\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:30\nmsgid \"Osaka\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:31\nmsgid \"Hyogo\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:32\nmsgid \"Nara\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:33\nmsgid \"Wakayama\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:34\nmsgid \"Tottori\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:35\nmsgid \"Shimane\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:36\nmsgid \"Okayama\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:37\nmsgid \"Hiroshima\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:38\nmsgid \"Yamaguchi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:39\nmsgid \"Tokushima\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:40\nmsgid \"Kagawa\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:41\nmsgid \"Ehime\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:42\nmsgid \"Kochi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:43\nmsgid \"Fukuoka\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:44\nmsgid \"Saga\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:45\nmsgid \"Nagasaki\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:46\nmsgid \"Kumamoto\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:47\nmsgid \"Oita\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:48\nmsgid \"Miyazaki\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:49\nmsgid \"Kagoshima\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:50\nmsgid \"Okinawa\"\nmsgstr \"\"\n\n#: kw/forms.py:27\nmsgid \"Enter a valid Kuwaiti Civil ID number\"\nmsgstr \"\"\n\n#: mk/forms.py:18\nmsgid \"\"\n\"Identity card numbers must contain either 4 to 7 digits or an uppercase \"\n\"letter and 7 digits.\"\nmsgstr \"\"\n\n#: mk/forms.py:57 si/forms.py:24\nmsgid \"This field should contain exactly 13 digits.\"\nmsgstr \"\"\n\n#: mk/forms.py:58\nmsgid \"The first 7 digits of the UMCN must represent a valid past date.\"\nmsgstr \"\"\n\n#: mk/forms.py:59\nmsgid \"The UMCN is not valid.\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:10\nmsgid \"Aerodrom\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:11\nmsgid \"Aračinovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:12\nmsgid \"Berovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:13\nmsgid \"Bitola\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:14\nmsgid \"Bogdanci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:15\nmsgid \"Bogovinje\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:16\nmsgid \"Bosilovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:17\nmsgid \"Brvenica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:18\nmsgid \"Butel\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:19\nmsgid \"Valandovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:20\nmsgid \"Vasilevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:21\nmsgid \"Vevčani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:22\nmsgid \"Veles\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:23\nmsgid \"Vinica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:24\nmsgid \"Vraneštica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:25\nmsgid \"Vrapčište\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:26\nmsgid \"Gazi Baba\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:27\nmsgid \"Gevgelija\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:28\nmsgid \"Gostivar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:29\nmsgid \"Gradsko\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:30\nmsgid \"Debar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:31\nmsgid \"Debarca\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:32\nmsgid \"Delčevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:33\nmsgid \"Demir Kapija\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:34\nmsgid \"Demir Hisar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:35\nmsgid \"Dolneni\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:36\nmsgid \"Drugovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:37\nmsgid \"Gjorče Petrov\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:38\nmsgid \"Želino\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:39\nmsgid \"Zajas\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:40\nmsgid \"Zelenikovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:41\nmsgid \"Zrnovci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:42\nmsgid \"Ilinden\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:43\nmsgid \"Jegunovce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:44\nmsgid \"Kavadarci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:45\nmsgid \"Karbinci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:46\nmsgid \"Karpoš\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:47\nmsgid \"Kisela Voda\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:48\nmsgid \"Kičevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:49\nmsgid \"Konče\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:50\nmsgid \"Koćani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:51\nmsgid \"Kratovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:52\nmsgid \"Kriva Palanka\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:53\nmsgid \"Krivogaštani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:54\nmsgid \"Kruševo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:55\nmsgid \"Kumanovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:56\nmsgid \"Lipkovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:57\nmsgid \"Lozovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:58\nmsgid \"Mavrovo i Rostuša\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:59\nmsgid \"Makedonska Kamenica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:60\nmsgid \"Makedonski Brod\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:61\nmsgid \"Mogila\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:62\nmsgid \"Negotino\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:63\nmsgid \"Novaci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:64\nmsgid \"Novo Selo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:65\nmsgid \"Oslomej\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:66\nmsgid \"Ohrid\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:67\nmsgid \"Petrovec\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:68\nmsgid \"Pehčevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:69\nmsgid \"Plasnica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:70\nmsgid \"Prilep\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:71\nmsgid \"Probištip\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:72\nmsgid \"Radoviš\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:73\nmsgid \"Rankovce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:74\nmsgid \"Resen\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:75\nmsgid \"Rosoman\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:76\nmsgid \"Saraj\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:77\nmsgid \"Sveti Nikole\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:78\nmsgid \"Sopište\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:79\nmsgid \"Star Dojran\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:80\nmsgid \"Staro Nagoričane\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:81\nmsgid \"Struga\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:82\nmsgid \"Strumica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:83\nmsgid \"Studeničani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:84\nmsgid \"Tearce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:85\nmsgid \"Tetovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:86\nmsgid \"Centar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:87\nmsgid \"Centar-Župa\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:88\nmsgid \"Čair\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:89\nmsgid \"Čaška\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:90\nmsgid \"Češinovo-Obleševo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:91\nmsgid \"Čučer-Sandevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:92\nmsgid \"Štip\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:93\nmsgid \"Šuto Orizari\"\nmsgstr \"\"\n\n#: mk/models.py:11\nmsgid \"Macedonian identity card number\"\nmsgstr \"\"\n\n#: mk/models.py:25\nmsgid \"A Macedonian municipality (2 character code)\"\nmsgstr \"\"\n\n#: mk/models.py:35\nmsgid \"Unique master citizen number (13 digits)\"\nmsgstr \"\"\n\n#: mx/forms.py:67\nmsgid \"Enter a valid zip code in the format XXXXX.\"\nmsgstr \"\"\n\n#: mx/forms.py:110\nmsgid \"Enter a valid RFC.\"\nmsgstr \"\"\n\n#: mx/forms.py:111\nmsgid \"Invalid checksum for RFC.\"\nmsgstr \"\"\n\n#: mx/forms.py:191\nmsgid \"Enter a valid CURP.\"\nmsgstr \"\"\n\n#: mx/forms.py:192\nmsgid \"Invalid checksum for CURP.\"\nmsgstr \"\"\n\n#: mx/models.py:14\nmsgid \"Mexico state (three uppercase letters)\"\nmsgstr \"\"\n\n#: mx/models.py:27\nmsgid \"Mexico zip code\"\nmsgstr \"\"\n\n#: mx/models.py:44\nmsgid \"Mexican RFC\"\nmsgstr \"\"\n\n#: mx/models.py:61\nmsgid \"Mexican CURP\"\nmsgstr \"\"\n\n#: mx/mx_states.py:14\nmsgid \"Aguascalientes\"\nmsgstr \"\"\n\n#: mx/mx_states.py:15\nmsgid \"Baja California\"\nmsgstr \"\"\n\n#: mx/mx_states.py:16\nmsgid \"Baja California Sur\"\nmsgstr \"\"\n\n#: mx/mx_states.py:17\nmsgid \"Campeche\"\nmsgstr \"\"\n\n#: mx/mx_states.py:18\nmsgid \"Chihuahua\"\nmsgstr \"\"\n\n#: mx/mx_states.py:19\nmsgid \"Chiapas\"\nmsgstr \"\"\n\n#: mx/mx_states.py:20\nmsgid \"Coahuila\"\nmsgstr \"\"\n\n#: mx/mx_states.py:21\nmsgid \"Colima\"\nmsgstr \"\"\n\n#: mx/mx_states.py:22\nmsgid \"Distrito Federal\"\nmsgstr \"\"\n\n#: mx/mx_states.py:23\nmsgid \"Durango\"\nmsgstr \"\"\n\n#: mx/mx_states.py:24\nmsgid \"Guerrero\"\nmsgstr \"\"\n\n#: mx/mx_states.py:25\nmsgid \"Guanajuato\"\nmsgstr \"\"\n\n#: mx/mx_states.py:26\nmsgid \"Hidalgo\"\nmsgstr \"\"\n\n#: mx/mx_states.py:27\nmsgid \"Jalisco\"\nmsgstr \"\"\n\n#: mx/mx_states.py:28\nmsgid \"Estado de México\"\nmsgstr \"\"\n\n#: mx/mx_states.py:29\nmsgid \"Michoacán\"\nmsgstr \"\"\n\n#: mx/mx_states.py:30\nmsgid \"Morelos\"\nmsgstr \"\"\n\n#: mx/mx_states.py:31\nmsgid \"Nayarit\"\nmsgstr \"\"\n\n#: mx/mx_states.py:32\nmsgid \"Nuevo León\"\nmsgstr \"\"\n\n#: mx/mx_states.py:33\nmsgid \"Oaxaca\"\nmsgstr \"\"\n\n#: mx/mx_states.py:34\nmsgid \"Puebla\"\nmsgstr \"\"\n\n#: mx/mx_states.py:35\nmsgid \"Querétaro\"\nmsgstr \"\"\n\n#: mx/mx_states.py:36\nmsgid \"Quintana Roo\"\nmsgstr \"\"\n\n#: mx/mx_states.py:37\nmsgid \"Sinaloa\"\nmsgstr \"\"\n\n#: mx/mx_states.py:38\nmsgid \"San Luis Potosí\"\nmsgstr \"\"\n\n#: mx/mx_states.py:39\nmsgid \"Sonora\"\nmsgstr \"\"\n\n#: mx/mx_states.py:40\nmsgid \"Tabasco\"\nmsgstr \"\"\n\n#: mx/mx_states.py:41\nmsgid \"Tamaulipas\"\nmsgstr \"\"\n\n#: mx/mx_states.py:42\nmsgid \"Tlaxcala\"\nmsgstr \"\"\n\n#: mx/mx_states.py:43\nmsgid \"Veracruz\"\nmsgstr \"\"\n\n#: mx/mx_states.py:44\nmsgid \"Yucatán\"\nmsgstr \"\"\n\n#: mx/mx_states.py:45\nmsgid \"Zacatecas\"\nmsgstr \"\"\n\n#: nl/forms.py:26\nmsgid \"Enter a valid postal code\"\nmsgstr \"\"\n\n#: nl/forms.py:82\nmsgid \"Enter a valid SoFi number\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:4\nmsgid \"Drenthe\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:5\nmsgid \"Flevoland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:6\nmsgid \"Friesland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:7\nmsgid \"Gelderland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:8\nmsgid \"Groningen\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:10\nmsgid \"Noord-Brabant\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:11\nmsgid \"Noord-Holland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:12\nmsgid \"Overijssel\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:13\nmsgid \"Utrecht\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:14\nmsgid \"Zeeland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:15\nmsgid \"Zuid-Holland\"\nmsgstr \"\"\n\n#: no/forms.py:39\nmsgid \"Enter a valid Norwegian social security number.\"\nmsgstr \"\"\n\n#: pe/forms.py:28\nmsgid \"This field requires 8 digits.\"\nmsgstr \"\"\n\n#: pe/forms.py:56\nmsgid \"This field requires 11 digits.\"\nmsgstr \"\"\n\n#: pl/forms.py:42\nmsgid \"National Identification Number consists of 11 digits.\"\nmsgstr \"\"\n\n#: pl/forms.py:43\nmsgid \"Wrong checksum for the National Identification Number.\"\nmsgstr \"\"\n\n#: pl/forms.py:79\nmsgid \"National ID Card Number consists of 3 letters and 6 digits.\"\nmsgstr \"\"\n\n#: pl/forms.py:80\nmsgid \"Wrong checksum for the National ID Card Number.\"\nmsgstr \"\"\n\n#: pl/forms.py:131\nmsgid \"\"\n\"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or \"\n\"XXXXXXXXXX.\"\nmsgstr \"\"\n\n#: pl/forms.py:132\nmsgid \"Wrong checksum for the Tax Number (NIP).\"\nmsgstr \"\"\n\n#: pl/forms.py:171\nmsgid \"National Business Register Number (REGON) consists of 9 or 14 digits.\"\nmsgstr \"\"\n\n#: pl/forms.py:172\nmsgid \"Wrong checksum for the National Business Register Number (REGON).\"\nmsgstr \"\"\n\n#: pl/forms.py:212\nmsgid \"Enter a postal code in the format XX-XXX.\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:8\nmsgid \"Lower Silesia\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:9\nmsgid \"Kuyavia-Pomerania\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:10\nmsgid \"Lublin\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:11\nmsgid \"Lubusz\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:12\nmsgid \"Lodz\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:13\nmsgid \"Lesser Poland\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:14\nmsgid \"Masovia\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:15\nmsgid \"Opole\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:16\nmsgid \"Subcarpatia\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:17\nmsgid \"Podlasie\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:18\nmsgid \"Pomerania\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:19\nmsgid \"Silesia\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:20\nmsgid \"Swietokrzyskie\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:21\nmsgid \"Warmia-Masuria\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:22\nmsgid \"Greater Poland\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:23\nmsgid \"West Pomerania\"\nmsgstr \"\"\n\n#: pt/forms.py:19\nmsgid \"Enter a zip code in the format XXXX-XXX.\"\nmsgstr \"\"\n\n#: pt/forms.py:39\nmsgid \"Phone numbers must have 9 digits, or start by + or 00.\"\nmsgstr \"\"\n\n#: ro/forms.py:22\nmsgid \"Enter a valid CIF.\"\nmsgstr \"\"\n\n#: ro/forms.py:59\nmsgid \"Enter a valid CNP.\"\nmsgstr \"\"\n\n#: ro/forms.py:143\nmsgid \"Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format\"\nmsgstr \"\"\n\n#: ro/forms.py:175\nmsgid \"Phone numbers must be in XXXX-XXXXXX format.\"\nmsgstr \"\"\n\n#: ro/forms.py:200\nmsgid \"Enter a valid postal code in the format XXXXXX\"\nmsgstr \"\"\n\n#: ru/forms.py:37\nmsgid \"Enter a postal code in the format XXXXXX.\"\nmsgstr \"\"\n\n#: ru/forms.py:50\nmsgid \"Enter a passport number in the format XXXX XXXXXX.\"\nmsgstr \"\"\n\n#: ru/forms.py:63\nmsgid \"Enter a passport number in the format XX XXXXXXX.\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:10\nmsgid \"Central Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:11\nmsgid \"South Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:12\nmsgid \"North-West Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:13\nmsgid \"Far-East Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:14\nmsgid \"Siberian Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:15\nmsgid \"Ural Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:16\nmsgid \"Privolzhsky Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:17\nmsgid \"North-Caucasian Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:21\nmsgid \"Moskva\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:22\nmsgid \"Saint-Peterburg\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:23\nmsgid \"Moskovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:24\nmsgid \"Adygeya, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:25\nmsgid \"Bashkortostan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:26\nmsgid \"Buryatia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:27\nmsgid \"Altay, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:28\nmsgid \"Dagestan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:29\nmsgid \"Ingushskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:30\nmsgid \"Kabardino-Balkarskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:31\nmsgid \"Kalmykia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:32\nmsgid \"Karachaevo-Cherkesskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:33\nmsgid \"Karelia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:34\nmsgid \"Komi, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:35\nmsgid \"Mariy Ehl, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:36\nmsgid \"Mordovia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:37\nmsgid \"Sakha, Respublika (Yakutiya)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:38\nmsgid \"Severnaya Osetia, Respublika (Alania)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:39\nmsgid \"Tatarstan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:40\nmsgid \"Tyva, Respublika (Tuva)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:41\nmsgid \"Udmurtskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:42\nmsgid \"Khakassiya, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:43\nmsgid \"Chechenskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:44\nmsgid \"Chuvashskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:45\nmsgid \"Altayskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:46\nmsgid \"Zabaykalskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:47\nmsgid \"Kamchatskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:48\nmsgid \"Krasnodarskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:49\nmsgid \"Krasnoyarskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:50\nmsgid \"Permskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:51\nmsgid \"Primorskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:52\nmsgid \"Stavropol'siyy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:53\nmsgid \"Khabarovskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:54\nmsgid \"Amurskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:55\nmsgid \"Arkhangel'skaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:56\nmsgid \"Astrakhanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:57\nmsgid \"Belgorodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:58\nmsgid \"Bryanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:59\nmsgid \"Vladimirskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:60\nmsgid \"Volgogradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:61\nmsgid \"Vologodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:62\nmsgid \"Voronezhskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:63\nmsgid \"Ivanovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:64\nmsgid \"Irkutskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:65\nmsgid \"Kaliningradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:66\nmsgid \"Kaluzhskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:67\nmsgid \"Kemerovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:68\nmsgid \"Kirovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:69\nmsgid \"Kostromskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:70\nmsgid \"Kurganskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:71\nmsgid \"Kurskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:72\nmsgid \"Leningradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:73\nmsgid \"Lipeckaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:74\nmsgid \"Magadanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:75\nmsgid \"Murmanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:76\nmsgid \"Nizhegorodskaja oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:77\nmsgid \"Novgorodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:78\nmsgid \"Novosibirskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:79\nmsgid \"Omskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:80\nmsgid \"Orenburgskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:81\nmsgid \"Orlovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:82\nmsgid \"Penzenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:83\nmsgid \"Pskovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:84\nmsgid \"Rostovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:85\nmsgid \"Rjazanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:86\nmsgid \"Samarskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:87\nmsgid \"Saratovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:88\nmsgid \"Sakhalinskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:89\nmsgid \"Sverdlovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:90\nmsgid \"Smolenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:91\nmsgid \"Tambovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:92\nmsgid \"Tverskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:93\nmsgid \"Tomskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:94\nmsgid \"Tul'skaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:95\nmsgid \"Tyumenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:96\nmsgid \"Ul'ianovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:97\nmsgid \"Chelyabinskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:98\nmsgid \"Yaroslavskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:99\nmsgid \"Evreyskaya avtonomnaja oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:100\nmsgid \"Neneckiy autonomnyy okrug\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:101\nmsgid \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:102\nmsgid \"Chukotskiy avtonomnyy okrug\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:103\nmsgid \"Yamalo-Neneckiy avtonomnyy okrug\"\nmsgstr \"\"\n\n#: se/forms.py:54\nmsgid \"Enter a valid Swedish organisation number.\"\nmsgstr \"\"\n\n#: se/forms.py:111\nmsgid \"Enter a valid Swedish personal identity number.\"\nmsgstr \"\"\n\n#: se/forms.py:112\nmsgid \"Co-ordination numbers are not allowed.\"\nmsgstr \"\"\n\n#: se/forms.py:154\nmsgid \"Enter a Swedish postal code in the format XXXXX.\"\nmsgstr \"\"\n\n#: se/se_counties.py:16\nmsgid \"Stockholm\"\nmsgstr \"\"\n\n#: se/se_counties.py:17\nmsgid \"Västerbotten\"\nmsgstr \"\"\n\n#: se/se_counties.py:18\nmsgid \"Norrbotten\"\nmsgstr \"\"\n\n#: se/se_counties.py:19\nmsgid \"Uppsala\"\nmsgstr \"\"\n\n#: se/se_counties.py:20\nmsgid \"Södermanland\"\nmsgstr \"\"\n\n#: se/se_counties.py:21\nmsgid \"Östergötland\"\nmsgstr \"\"\n\n#: se/se_counties.py:22\nmsgid \"Jönköping\"\nmsgstr \"\"\n\n#: se/se_counties.py:23\nmsgid \"Kronoberg\"\nmsgstr \"\"\n\n#: se/se_counties.py:24\nmsgid \"Kalmar\"\nmsgstr \"\"\n\n#: se/se_counties.py:25\nmsgid \"Gotland\"\nmsgstr \"\"\n\n#: se/se_counties.py:26\nmsgid \"Blekinge\"\nmsgstr \"\"\n\n#: se/se_counties.py:27\nmsgid \"Skåne\"\nmsgstr \"\"\n\n#: se/se_counties.py:28\nmsgid \"Halland\"\nmsgstr \"\"\n\n#: se/se_counties.py:29\nmsgid \"Västra Götaland\"\nmsgstr \"\"\n\n#: se/se_counties.py:30\nmsgid \"Värmland\"\nmsgstr \"\"\n\n#: se/se_counties.py:31\nmsgid \"Örebro\"\nmsgstr \"\"\n\n#: se/se_counties.py:32\nmsgid \"Västmanland\"\nmsgstr \"\"\n\n#: se/se_counties.py:33\nmsgid \"Dalarna\"\nmsgstr \"\"\n\n#: se/se_counties.py:34\nmsgid \"Gävleborg\"\nmsgstr \"\"\n\n#: se/se_counties.py:35\nmsgid \"Västernorrland\"\nmsgstr \"\"\n\n#: se/se_counties.py:36\nmsgid \"Jämtland\"\nmsgstr \"\"\n\n#: si/forms.py:25\nmsgid \"The first 7 digits of the EMSO must represent a valid past date.\"\nmsgstr \"\"\n\n#: si/forms.py:26\nmsgid \"The EMSO is not valid.\"\nmsgstr \"\"\n\n#: si/forms.py:86\nmsgid \"Enter a valid tax number in form SIXXXXXXXX\"\nmsgstr \"\"\n\n#: si/forms.py:151\nmsgid \"Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:8\nmsgid \"Banska Bystrica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:9\nmsgid \"Banska Stiavnica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:10\nmsgid \"Bardejov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:11\nmsgid \"Banovce nad Bebravou\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:12\nmsgid \"Brezno\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:13\nmsgid \"Bratislava I\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:14\nmsgid \"Bratislava II\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:15\nmsgid \"Bratislava III\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:16\nmsgid \"Bratislava IV\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:17\nmsgid \"Bratislava V\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:18\nmsgid \"Bytca\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:19\nmsgid \"Cadca\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:20\nmsgid \"Detva\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:21\nmsgid \"Dolny Kubin\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:22\nmsgid \"Dunajska Streda\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:23\nmsgid \"Galanta\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:24\nmsgid \"Gelnica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:25\nmsgid \"Hlohovec\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:26\nmsgid \"Humenne\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:27\nmsgid \"Ilava\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:28\nmsgid \"Kezmarok\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:29\nmsgid \"Komarno\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:30\nmsgid \"Kosice I\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:31\nmsgid \"Kosice II\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:32\nmsgid \"Kosice III\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:33\nmsgid \"Kosice IV\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:34\nmsgid \"Kosice - okolie\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:35\nmsgid \"Krupina\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:36\nmsgid \"Kysucke Nove Mesto\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:37\nmsgid \"Levice\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:38\nmsgid \"Levoca\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:39\nmsgid \"Liptovsky Mikulas\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:40\nmsgid \"Lucenec\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:41\nmsgid \"Malacky\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:42\nmsgid \"Martin\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:43\nmsgid \"Medzilaborce\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:44\nmsgid \"Michalovce\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:45\nmsgid \"Myjava\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:46\nmsgid \"Namestovo\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:47\nmsgid \"Nitra\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:48\nmsgid \"Nove Mesto nad Vahom\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:49\nmsgid \"Nove Zamky\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:50\nmsgid \"Partizanske\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:51\nmsgid \"Pezinok\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:52\nmsgid \"Piestany\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:53\nmsgid \"Poltar\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:54\nmsgid \"Poprad\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:55\nmsgid \"Povazska Bystrica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:56\nmsgid \"Presov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:57\nmsgid \"Prievidza\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:58\nmsgid \"Puchov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:59\nmsgid \"Revuca\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:60\nmsgid \"Rimavska Sobota\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:61\nmsgid \"Roznava\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:62\nmsgid \"Ruzomberok\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:63\nmsgid \"Sabinov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:64\nmsgid \"Senec\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:65\nmsgid \"Senica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:66\nmsgid \"Skalica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:67\nmsgid \"Snina\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:68\nmsgid \"Sobrance\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:69\nmsgid \"Spisska Nova Ves\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:70\nmsgid \"Stara Lubovna\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:71\nmsgid \"Stropkov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:72\nmsgid \"Svidnik\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:73\nmsgid \"Sala\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:74\nmsgid \"Topolcany\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:75\nmsgid \"Trebisov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:76\nmsgid \"Trencin\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:77\nmsgid \"Trnava\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:78\nmsgid \"Turcianske Teplice\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:79\nmsgid \"Tvrdosin\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:80\nmsgid \"Velky Krtis\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:81\nmsgid \"Vranov nad Toplou\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:82\nmsgid \"Zlate Moravce\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:83\nmsgid \"Zvolen\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:84\nmsgid \"Zarnovica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:85\nmsgid \"Ziar nad Hronom\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:86\nmsgid \"Zilina\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:8\nmsgid \"Banska Bystrica region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:9\nmsgid \"Bratislava region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:10\nmsgid \"Kosice region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:11\nmsgid \"Nitra region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:12\nmsgid \"Presov region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:13\nmsgid \"Trencin region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:14\nmsgid \"Trnava region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:15\nmsgid \"Zilina region\"\nmsgstr \"\"\n\n#: tr/forms.py:21\nmsgid \"Enter a postal code in the format XXXXX.\"\nmsgstr \"\"\n\n#: tr/forms.py:42\nmsgid \"Phone numbers must be in 0XXX XXX XXXX format.\"\nmsgstr \"\"\n\n#: tr/forms.py:69\nmsgid \"Enter a valid Turkish Identification number.\"\nmsgstr \"\"\n\n#: tr/forms.py:70\nmsgid \"Turkish Identification number must be 11 digits.\"\nmsgstr \"\"\n\n#: us/forms.py:21\nmsgid \"Enter a zip code in the format XXXXX or XXXXX-XXXX.\"\nmsgstr \"\"\n\n#: us/forms.py:59\nmsgid \"Enter a valid U.S. Social Security number in XXX-XX-XXXX format.\"\nmsgstr \"\"\n\n#: us/forms.py:92\nmsgid \"Enter a U.S. state or territory.\"\nmsgstr \"\"\n\n#: us/models.py:8\nmsgid \"U.S. state (two uppercase letters)\"\nmsgstr \"Država u SAD (dva velika slova)\"\n\n#: us/models.py:17\nmsgid \"U.S. postal code (two uppercase letters)\"\nmsgstr \"\"\n\n#: us/models.py:26\nmsgid \"Phone number\"\nmsgstr \"Broj telefona\"\n\n#: uy/forms.py:29\nmsgid \"Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.\"\nmsgstr \"\"\n\n#: uy/forms.py:31\nmsgid \"Enter a valid CI number.\"\nmsgstr \"\"\n\n#: za/forms.py:22\nmsgid \"Enter a valid South African ID number\"\nmsgstr \"\"\n\n#: za/forms.py:56\nmsgid \"Enter a valid South African postal code\"\nmsgstr \"\"\n\n#: za/za_provinces.py:4\nmsgid \"Eastern Cape\"\nmsgstr \"\"\n\n#: za/za_provinces.py:5\nmsgid \"Free State\"\nmsgstr \"\"\n\n#: za/za_provinces.py:6\nmsgid \"Gauteng\"\nmsgstr \"\"\n\n#: za/za_provinces.py:7\nmsgid \"KwaZulu-Natal\"\nmsgstr \"\"\n\n#: za/za_provinces.py:8\nmsgid \"Limpopo\"\nmsgstr \"\"\n\n#: za/za_provinces.py:9\nmsgid \"Mpumalanga\"\nmsgstr \"\"\n\n#: za/za_provinces.py:10\nmsgid \"Northern Cape\"\nmsgstr \"\"\n\n#: za/za_provinces.py:11\nmsgid \"North West\"\nmsgstr \"\"\n\n#: za/za_provinces.py:12\nmsgid \"Western Cape\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/locale/sv/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Alex Nordlund <deep.alexander@gmail.com>, 2012.\n# Andreas Pelme <andreas@pelme.se>, 2011, 2012.\n#   <cybjit@gmail.com>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-10-30 22:05+0000\\n\"\n\"Last-Translator: Cybjit <cybjit@gmail.com>\\n\"\n\"Language-Team: Swedish (http://www.transifex.com/projects/p/django/language/\"\n\"sv/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sv\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: ar/forms.py:30\nmsgid \"Enter a postal code in the format NNNN or ANNNNAAA.\"\nmsgstr \"Fyll i ett postnummer med formatet NNNN eller ANNNNAAA.\"\n\n#: ar/forms.py:52 br/forms.py:95 br/forms.py:134 pe/forms.py:27 pe/forms.py:55\nmsgid \"This field requires only numbers.\"\nmsgstr \"Detta fält kräver enbart siffror.\"\n\n#: ar/forms.py:53\nmsgid \"This field requires 7 or 8 digits.\"\nmsgstr \"Detta fält kräver 7 eller 8 sifrror.\"\n\n#: ar/forms.py:82\nmsgid \"Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.\"\nmsgstr \"Fyll i ett giltigt CUIT med formatet XX-XXXXXXXX-X eller XXXXXXXXXXXX.\"\n\n#: ar/forms.py:83\nmsgid \"Invalid CUIT.\"\nmsgstr \"Felaktigt CUIT.\"\n\n#: ar/forms.py:84\nmsgid \"Invalid legal type. Type must be 27, 20, 23 or 30.\"\nmsgstr \"Ogiltig juridisk typ. Typen måste vara 27, 20, 23 eller 30.\"\n\n#: at/at_states.py:5\nmsgid \"Burgenland\"\nmsgstr \"Burgenland\"\n\n#: at/at_states.py:6\nmsgid \"Carinthia\"\nmsgstr \"Kärnten\"\n\n#: at/at_states.py:7\nmsgid \"Lower Austria\"\nmsgstr \"Niederösterreich\"\n\n#: at/at_states.py:8\nmsgid \"Upper Austria\"\nmsgstr \"Oberösterreich\"\n\n#: at/at_states.py:9\nmsgid \"Salzburg\"\nmsgstr \"Salzburg\"\n\n#: at/at_states.py:10\nmsgid \"Styria\"\nmsgstr \"Steiermark\"\n\n#: at/at_states.py:11\nmsgid \"Tyrol\"\nmsgstr \"Tyrolen\"\n\n#: at/at_states.py:12\nmsgid \"Vorarlberg\"\nmsgstr \"Vorarlberg\"\n\n#: at/at_states.py:13\nmsgid \"Vienna\"\nmsgstr \"Wien\"\n\n#: at/forms.py:22 ch/forms.py:22 no/forms.py:19\nmsgid \"Enter a zip code in the format XXXX.\"\nmsgstr \"Fyll i postnummer med formatet XXXX.\"\n\n#: at/forms.py:50\nmsgid \"Enter a valid Austrian Social Security Number in XXXX XXXXXX format.\"\nmsgstr \"Fyll i ett giltigt Österrikiskt personnummer i formatet XXXX XXXXXX.\"\n\n#: au/forms.py:26\nmsgid \"Enter a 4 digit postcode.\"\nmsgstr \"Ange ett fyrsiffrigt postnummer.\"\n\n#: au/models.py:9\nmsgid \"Australian State\"\nmsgstr \"Australiensisk stat\"\n\n#: au/models.py:19\nmsgid \"Australian Postcode\"\nmsgstr \"Australiensiskt postnummer\"\n\n#: au/models.py:33\nmsgid \"Australian Phone number\"\nmsgstr \"Australiensiskt telefonnummer\"\n\n#: be/be_provinces.py:5\nmsgid \"Antwerp\"\nmsgstr \"Antwerpen\"\n\n#: be/be_provinces.py:6\nmsgid \"Brussels\"\nmsgstr \"Bryssel\"\n\n#: be/be_provinces.py:7\nmsgid \"East Flanders\"\nmsgstr \"Östra Flandern\"\n\n#: be/be_provinces.py:8\nmsgid \"Flemish Brabant\"\nmsgstr \"Flamländska Brabant\"\n\n#: be/be_provinces.py:9\nmsgid \"Hainaut\"\nmsgstr \"Hainaut\"\n\n#: be/be_provinces.py:10\nmsgid \"Liege\"\nmsgstr \"Liege\"\n\n#: be/be_provinces.py:11 nl/nl_provinces.py:9\nmsgid \"Limburg\"\nmsgstr \"Limburg\"\n\n#: be/be_provinces.py:12\nmsgid \"Luxembourg\"\nmsgstr \"Luxemburg\"\n\n#: be/be_provinces.py:13\nmsgid \"Namur\"\nmsgstr \"Namur\"\n\n#: be/be_provinces.py:14\nmsgid \"Walloon Brabant\"\nmsgstr \"Vallonska Brabant\"\n\n#: be/be_provinces.py:15\nmsgid \"West Flanders\"\nmsgstr \"Västflandern\"\n\n#: be/be_regions.py:5\nmsgid \"Brussels Capital Region\"\nmsgstr \"Huvudstadsregionen Bryssel\"\n\n#: be/be_regions.py:6\nmsgid \"Flemish Region\"\nmsgstr \"Flandern\"\n\n#: be/be_regions.py:7\nmsgid \"Wallonia\"\nmsgstr \"Vallonien\"\n\n#: be/forms.py:25\nmsgid \"Enter a valid postal code in the range and format 1XXX - 9XXX.\"\nmsgstr \"Ange ett giltig postnummer i området och formatet 1XXX-9XXX.\"\n\n#: be/forms.py:48\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\nmsgstr \"\"\n\"Ange ett giltigt telefonnummer i något av formaten 0x xxx xx xx, 0xx xx xx \"\n\"xx, 04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, \"\n\"0xx.xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\n\n#: br/forms.py:22\nmsgid \"Enter a zip code in the format XXXXX-XXX.\"\nmsgstr \"Fyll i ett postnummer med formatet XXXXX-XXX.\"\n\n#: br/forms.py:31\nmsgid \"Phone numbers must be in XX-XXXX-XXXX format.\"\nmsgstr \"Telefonnummer måste vara i formatet XX-XXXX-XXXX.\"\n\n#: br/forms.py:58\nmsgid \"\"\n\"Select a valid brazilian state. That state is not one of the available \"\n\"states.\"\nmsgstr \"\"\n\"Välj ett giltigt alternativ. Det valet finns inte bland tillgängliga \"\n\"alternativ.\"\n\n#: br/forms.py:93\nmsgid \"Invalid CPF number.\"\nmsgstr \"Ogiltigt CPF-nummer.\"\n\n#: br/forms.py:94\nmsgid \"This field requires at most 11 digits or 14 characters.\"\nmsgstr \"Detta fält kräver högst 11 siffror eller 14 bokstäver.\"\n\n#: br/forms.py:133\nmsgid \"Invalid CNPJ number.\"\nmsgstr \"Ogiltigt CNPJ-nummer.\"\n\n#: br/forms.py:135\nmsgid \"This field requires at least 14 digits\"\nmsgstr \"Detta fält kräver minst 14 sifrror\"\n\n#: ca/forms.py:29\nmsgid \"Enter a postal code in the format XXX XXX.\"\nmsgstr \"Fyll i ett postnummer med formatet XXX XXX.\"\n\n#: ca/forms.py:47 us/forms.py:30\nmsgid \"Phone numbers must be in XXX-XXX-XXXX format.\"\nmsgstr \"Telefonnummer måste vara i formatet XXX-XXX-XXXX.\"\n\n#: ca/forms.py:69\nmsgid \"Enter a Canadian province or territory.\"\nmsgstr \"Ange en kanadensisk provins eller territorium.\"\n\n#: ca/forms.py:110\nmsgid \"Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.\"\nmsgstr \"\"\n\"Fyll i ett giltigt Kanadensiskt \\\"social insurance number\\\" med formatet XXX-\"\n\"XXX-XXX.\"\n\n#: ch/ch_states.py:5\nmsgid \"Aargau\"\nmsgstr \"Aargau\"\n\n#: ch/ch_states.py:6\nmsgid \"Appenzell Innerrhoden\"\nmsgstr \"Appenzell Innerrhoden\"\n\n#: ch/ch_states.py:7\nmsgid \"Appenzell Ausserrhoden\"\nmsgstr \"Appenzell Ausserrhoden\"\n\n#: ch/ch_states.py:8\nmsgid \"Basel-Stadt\"\nmsgstr \"Basel-Stadt\"\n\n#: ch/ch_states.py:9\nmsgid \"Basel-Land\"\nmsgstr \"Basel-Landschaft\"\n\n#: ch/ch_states.py:10\nmsgid \"Berne\"\nmsgstr \"Bern\"\n\n#: ch/ch_states.py:11\nmsgid \"Fribourg\"\nmsgstr \"Fribourg\"\n\n#: ch/ch_states.py:12\nmsgid \"Geneva\"\nmsgstr \"Genève\"\n\n#: ch/ch_states.py:13\nmsgid \"Glarus\"\nmsgstr \"Glarus\"\n\n#: ch/ch_states.py:14\nmsgid \"Graubuenden\"\nmsgstr \"Graubünden\"\n\n#: ch/ch_states.py:15\nmsgid \"Jura\"\nmsgstr \"Jura\"\n\n#: ch/ch_states.py:16\nmsgid \"Lucerne\"\nmsgstr \"Luzern\"\n\n#: ch/ch_states.py:17\nmsgid \"Neuchatel\"\nmsgstr \"Neuchâtel\"\n\n#: ch/ch_states.py:18\nmsgid \"Nidwalden\"\nmsgstr \"Nidwalden\"\n\n#: ch/ch_states.py:19\nmsgid \"Obwalden\"\nmsgstr \"Obwalden\"\n\n#: ch/ch_states.py:20\nmsgid \"Schaffhausen\"\nmsgstr \"Schaffhausen\"\n\n#: ch/ch_states.py:21\nmsgid \"Schwyz\"\nmsgstr \"Schwyz\"\n\n#: ch/ch_states.py:22\nmsgid \"Solothurn\"\nmsgstr \"Solothurn\"\n\n#: ch/ch_states.py:23\nmsgid \"St. Gallen\"\nmsgstr \"Sankt Gallen\"\n\n#: ch/ch_states.py:24\nmsgid \"Thurgau\"\nmsgstr \"Thurgau\"\n\n#: ch/ch_states.py:25\nmsgid \"Ticino\"\nmsgstr \"Ticino\"\n\n#: ch/ch_states.py:26\nmsgid \"Uri\"\nmsgstr \"Uri\"\n\n#: ch/ch_states.py:27\nmsgid \"Valais\"\nmsgstr \"Valais\"\n\n#: ch/ch_states.py:28\nmsgid \"Vaud\"\nmsgstr \"Vaud\"\n\n#: ch/ch_states.py:29\nmsgid \"Zug\"\nmsgstr \"Zug\"\n\n#: ch/ch_states.py:30\nmsgid \"Zurich\"\nmsgstr \"Zürich\"\n\n#: ch/forms.py:37\nmsgid \"Phone numbers must be in 0XX XXX XX XX format.\"\nmsgstr \"Telefonnummer måste vara på formen 0XX XXX XX XX.\"\n\n#: ch/forms.py:68\nmsgid \"\"\n\"Enter a valid Swiss identity or passport card number in X1234567<0 or \"\n\"1234567890 format.\"\nmsgstr \"\"\n\"Fyll i ett giltigt Schweiziskt ID- eller passkortnummer med formatet \"\n\"X1234567<0 eller 1234567890.\"\n\n#: cl/forms.py:32\nmsgid \"Enter a valid Chilean RUT.\"\nmsgstr \"Fyll i ett giltigt chilenskt RUT\"\n\n#: cl/forms.py:33\nmsgid \"Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.\"\nmsgstr \"Fyll i ett giltigt chilenskt RUT. Formatet är XX.XXX.XXX-X.\"\n\n#: cl/forms.py:34\nmsgid \"The Chilean RUT is not valid.\"\nmsgstr \"Det chilenska RUT:et var inte giltigt.\"\n\n#: cn/forms.py:84\nmsgid \"Enter a post code in the format XXXXXX.\"\nmsgstr \"Ange ett postnummer i formatet XXXXXX.\"\n\n#: cn/forms.py:105\nmsgid \"ID Card Number consists of 15 or 18 digits.\"\nmsgstr \"ID-kortnummer består av 15 eller 18 siffror.\"\n\n#: cn/forms.py:106\nmsgid \"Invalid ID Card Number: Wrong checksum\"\nmsgstr \"Ogiltigt ID-kortnummer: Felaktig kontrollsumma\"\n\n#: cn/forms.py:107\nmsgid \"Invalid ID Card Number: Wrong birthdate\"\nmsgstr \"Ogiltigt ID-kortnummer: Felaktig födelsedag\"\n\n#: cn/forms.py:108\nmsgid \"Invalid ID Card Number: Wrong location code\"\nmsgstr \"Ogiltigt ID-kortnummer: Felaktig platskod\"\n\n#: cn/forms.py:193\nmsgid \"Enter a valid phone number.\"\nmsgstr \"Ange ett giltigt telefonnummer.\"\n\n#: cn/forms.py:210\nmsgid \"Enter a valid cell number.\"\nmsgstr \"Ange ett giltigt mobiltelefonnummer.\"\n\n#: cz/cz_regions.py:8\nmsgid \"Prague\"\nmsgstr \"Prag\"\n\n#: cz/cz_regions.py:9\nmsgid \"Central Bohemian Region\"\nmsgstr \"Centralböhmen\"\n\n#: cz/cz_regions.py:10\nmsgid \"South Bohemian Region\"\nmsgstr \"Sydböhmen\"\n\n#: cz/cz_regions.py:11\nmsgid \"Pilsen Region\"\nmsgstr \"Pilsen\"\n\n#: cz/cz_regions.py:12\nmsgid \"Carlsbad Region\"\nmsgstr \"Carlsbad\"\n\n#: cz/cz_regions.py:13\nmsgid \"Usti Region\"\nmsgstr \"Usti\"\n\n#: cz/cz_regions.py:14\nmsgid \"Liberec Region\"\nmsgstr \"Liberec\"\n\n#: cz/cz_regions.py:15\nmsgid \"Hradec Region\"\nmsgstr \"Hradec\"\n\n#: cz/cz_regions.py:16\nmsgid \"Pardubice Region\"\nmsgstr \"Pardubice\"\n\n#: cz/cz_regions.py:17\nmsgid \"Vysocina Region\"\nmsgstr \"Vysocina\"\n\n#: cz/cz_regions.py:18\nmsgid \"South Moravian Region\"\nmsgstr \"Sydmähren\"\n\n#: cz/cz_regions.py:19\nmsgid \"Olomouc Region\"\nmsgstr \"Olomouc\"\n\n#: cz/cz_regions.py:20\nmsgid \"Zlin Region\"\nmsgstr \"Zlin\"\n\n#: cz/cz_regions.py:21\nmsgid \"Moravian-Silesian Region\"\nmsgstr \"Mähren-Schlesien\"\n\n#: cz/forms.py:32 sk/forms.py:33\nmsgid \"Enter a postal code in the format XXXXX or XXX XX.\"\nmsgstr \"Fyll i ett postnummer med formatet XXXXX eller XXX XX.\"\n\n#: cz/forms.py:52\nmsgid \"Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.\"\nmsgstr \"Ange ett födelsenummer i formatet XXXXXX/XXXX or XXXXXXXXXX.\"\n\n#: cz/forms.py:53\nmsgid \"Enter a valid birth number.\"\nmsgstr \"Fyll i ett giltigt födelsenummer.\"\n\n#: cz/forms.py:102\nmsgid \"Enter a valid IC number.\"\nmsgstr \"Ange ett giltigt IC-nummer.\"\n\n#: de/de_states.py:5\nmsgid \"Baden-Wuerttemberg\"\nmsgstr \"Baden-Württemberg\"\n\n#: de/de_states.py:6\nmsgid \"Bavaria\"\nmsgstr \"Bayern\"\n\n#: de/de_states.py:7\nmsgid \"Berlin\"\nmsgstr \"Berlin\"\n\n#: de/de_states.py:8\nmsgid \"Brandenburg\"\nmsgstr \"Brandenburg\"\n\n#: de/de_states.py:9\nmsgid \"Bremen\"\nmsgstr \"Bremen\"\n\n#: de/de_states.py:10\nmsgid \"Hamburg\"\nmsgstr \"Hamburg\"\n\n#: de/de_states.py:11\nmsgid \"Hessen\"\nmsgstr \"Hessen\"\n\n#: de/de_states.py:12\nmsgid \"Mecklenburg-Western Pomerania\"\nmsgstr \"Mecklenburg-Vorpommern\"\n\n#: de/de_states.py:13\nmsgid \"Lower Saxony\"\nmsgstr \"Nedre Sachsen\"\n\n#: de/de_states.py:14\nmsgid \"North Rhine-Westphalia\"\nmsgstr \"Nordrhein-Westfalen\"\n\n#: de/de_states.py:15\nmsgid \"Rhineland-Palatinate\"\nmsgstr \"Rhenlandet\"\n\n#: de/de_states.py:16\nmsgid \"Saarland\"\nmsgstr \"Saarland\"\n\n#: de/de_states.py:17\nmsgid \"Saxony\"\nmsgstr \"Sachsen\"\n\n#: de/de_states.py:18\nmsgid \"Saxony-Anhalt\"\nmsgstr \"Sachsen-Anhalt\"\n\n#: de/de_states.py:19\nmsgid \"Schleswig-Holstein\"\nmsgstr \"Schleswig-Holstein\"\n\n#: de/de_states.py:20\nmsgid \"Thuringia\"\nmsgstr \"Thüringen\"\n\n#: de/forms.py:20 fi/forms.py:18 fr/forms.py:20\nmsgid \"Enter a zip code in the format XXXXX.\"\nmsgstr \"Fyll i ett postnummer med formatet XXXXX.\"\n\n#: de/forms.py:46\nmsgid \"\"\n\"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"format.\"\nmsgstr \"\"\n\"Fyll i ett giltigt tyskt ID-kortnummer med formatet XXXXXXXXXXX-XXXXXXX-\"\n\"XXXXXXX-X.\"\n\n#: es/es_provinces.py:5\nmsgid \"Araba\"\nmsgstr \"Araba\"\n\n#: es/es_provinces.py:6\nmsgid \"Albacete\"\nmsgstr \"Albacete\"\n\n#: es/es_provinces.py:7\nmsgid \"Alacant\"\nmsgstr \"Alacant\"\n\n#: es/es_provinces.py:8\nmsgid \"Almeria\"\nmsgstr \"AlmeriaAlmería\"\n\n#: es/es_provinces.py:9\nmsgid \"Avila\"\nmsgstr \"Ávila\"\n\n#: es/es_provinces.py:10\nmsgid \"Badajoz\"\nmsgstr \"Badajoz\"\n\n#: es/es_provinces.py:11\nmsgid \"Illes Balears\"\nmsgstr \"Illes Balears\"\n\n#: es/es_provinces.py:12\nmsgid \"Barcelona\"\nmsgstr \"Barcelona\"\n\n#: es/es_provinces.py:13\nmsgid \"Burgos\"\nmsgstr \"Burgos\"\n\n#: es/es_provinces.py:14\nmsgid \"Caceres\"\nmsgstr \"Cáceres\"\n\n#: es/es_provinces.py:15\nmsgid \"Cadiz\"\nmsgstr \"Cádiz\"\n\n#: es/es_provinces.py:16\nmsgid \"Castello\"\nmsgstr \"Castellón\"\n\n#: es/es_provinces.py:17\nmsgid \"Ciudad Real\"\nmsgstr \"Ciudad Real\"\n\n#: es/es_provinces.py:18\nmsgid \"Cordoba\"\nmsgstr \"Córdoba\"\n\n#: es/es_provinces.py:19\nmsgid \"A Coruna\"\nmsgstr \"A Coruña\"\n\n#: es/es_provinces.py:20\nmsgid \"Cuenca\"\nmsgstr \"Cuenca\"\n\n#: es/es_provinces.py:21\nmsgid \"Girona\"\nmsgstr \"Girona\"\n\n#: es/es_provinces.py:22\nmsgid \"Granada\"\nmsgstr \"Granada\"\n\n#: es/es_provinces.py:23\nmsgid \"Guadalajara\"\nmsgstr \"Guadalajara\"\n\n#: es/es_provinces.py:24\nmsgid \"Guipuzkoa\"\nmsgstr \"Guipuzkoa\"\n\n#: es/es_provinces.py:25\nmsgid \"Huelva\"\nmsgstr \"Huelva\"\n\n#: es/es_provinces.py:26\nmsgid \"Huesca\"\nmsgstr \"Huesca\"\n\n#: es/es_provinces.py:27\nmsgid \"Jaen\"\nmsgstr \"Jaén\"\n\n#: es/es_provinces.py:28\nmsgid \"Leon\"\nmsgstr \"León\"\n\n#: es/es_provinces.py:29\nmsgid \"Lleida\"\nmsgstr \"Lleida\"\n\n#: es/es_provinces.py:30 es/es_regions.py:17\nmsgid \"La Rioja\"\nmsgstr \"La Rioja\"\n\n#: es/es_provinces.py:31\nmsgid \"Lugo\"\nmsgstr \"Lugo\"\n\n#: es/es_provinces.py:32 es/es_regions.py:18\nmsgid \"Madrid\"\nmsgstr \"Madrid\"\n\n#: es/es_provinces.py:33\nmsgid \"Malaga\"\nmsgstr \"Málaga\"\n\n#: es/es_provinces.py:34\nmsgid \"Murcia\"\nmsgstr \"Murcia\"\n\n#: es/es_provinces.py:35\nmsgid \"Navarre\"\nmsgstr \"Navarra\"\n\n#: es/es_provinces.py:36\nmsgid \"Ourense\"\nmsgstr \"Ourense\"\n\n#: es/es_provinces.py:37\nmsgid \"Asturias\"\nmsgstr \"Asturien\"\n\n#: es/es_provinces.py:38\nmsgid \"Palencia\"\nmsgstr \"Palencia\"\n\n#: es/es_provinces.py:39\nmsgid \"Las Palmas\"\nmsgstr \"Las Palmas\"\n\n#: es/es_provinces.py:40\nmsgid \"Pontevedra\"\nmsgstr \"Pontevedra\"\n\n#: es/es_provinces.py:41\nmsgid \"Salamanca\"\nmsgstr \"Salamanca\"\n\n#: es/es_provinces.py:42\nmsgid \"Santa Cruz de Tenerife\"\nmsgstr \"Santa Cruz de Tenerife\"\n\n#: es/es_provinces.py:43 es/es_regions.py:11\nmsgid \"Cantabria\"\nmsgstr \"Kantabrien\"\n\n#: es/es_provinces.py:44\nmsgid \"Segovia\"\nmsgstr \"Segovia\"\n\n#: es/es_provinces.py:45\nmsgid \"Seville\"\nmsgstr \"Sevilla\"\n\n#: es/es_provinces.py:46\nmsgid \"Soria\"\nmsgstr \"Soria\"\n\n#: es/es_provinces.py:47\nmsgid \"Tarragona\"\nmsgstr \"Tarragona\"\n\n#: es/es_provinces.py:48\nmsgid \"Teruel\"\nmsgstr \"Teruel\"\n\n#: es/es_provinces.py:49\nmsgid \"Toledo\"\nmsgstr \"Toledo\"\n\n#: es/es_provinces.py:50\nmsgid \"Valencia\"\nmsgstr \"Valencia\"\n\n#: es/es_provinces.py:51\nmsgid \"Valladolid\"\nmsgstr \"Valladolid\"\n\n#: es/es_provinces.py:52\nmsgid \"Bizkaia\"\nmsgstr \"Biscaya\"\n\n#: es/es_provinces.py:53\nmsgid \"Zamora\"\nmsgstr \"Zamora\"\n\n#: es/es_provinces.py:54\nmsgid \"Zaragoza\"\nmsgstr \"Zaragoza\"\n\n#: es/es_provinces.py:55\nmsgid \"Ceuta\"\nmsgstr \"Ceuta\"\n\n#: es/es_provinces.py:56\nmsgid \"Melilla\"\nmsgstr \"Melilla\"\n\n#: es/es_regions.py:5\nmsgid \"Andalusia\"\nmsgstr \"Andalusien\"\n\n#: es/es_regions.py:6\nmsgid \"Aragon\"\nmsgstr \"Aragonien\"\n\n#: es/es_regions.py:7\nmsgid \"Principality of Asturias\"\nmsgstr \"Asturien\"\n\n#: es/es_regions.py:8\nmsgid \"Balearic Islands\"\nmsgstr \"Balearerna\"\n\n#: es/es_regions.py:9\nmsgid \"Basque Country\"\nmsgstr \"Baskien\"\n\n#: es/es_regions.py:10\nmsgid \"Canary Islands\"\nmsgstr \"Kanarieöarna\"\n\n#: es/es_regions.py:12\nmsgid \"Castile-La Mancha\"\nmsgstr \"Kastilien-La Mancha\"\n\n#: es/es_regions.py:13\nmsgid \"Castile and Leon\"\nmsgstr \"Kastilien och Leon\"\n\n#: es/es_regions.py:14\nmsgid \"Catalonia\"\nmsgstr \"Katalonien\"\n\n#: es/es_regions.py:15\nmsgid \"Extremadura\"\nmsgstr \"Extremadura\"\n\n#: es/es_regions.py:16\nmsgid \"Galicia\"\nmsgstr \"Galicien\"\n\n#: es/es_regions.py:19\nmsgid \"Region of Murcia\"\nmsgstr \"Murciaregionen\"\n\n#: es/es_regions.py:20\nmsgid \"Foral Community of Navarre\"\nmsgstr \"Navarra\"\n\n#: es/es_regions.py:21\nmsgid \"Valencian Community\"\nmsgstr \"Valenciaregionen\"\n\n#: es/forms.py:26\nmsgid \"Enter a valid postal code in the range and format 01XXX - 52XXX.\"\nmsgstr \"Fyll i ett giltigt postnummer i serien och med formatet 01XXX - 52XXX.\"\n\n#: es/forms.py:46\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or \"\n\"9XXXXXXXX.\"\nmsgstr \"\"\n\"Fyll i ett giltigt telefonnummer med ett av formaten: 6XXXXXXXX, 8XXXXXXXX \"\n\"eller 9XXXXXXXX.\"\n\n#: es/forms.py:73\nmsgid \"Please enter a valid NIF, NIE, or CIF.\"\nmsgstr \"Var god fyll i en giltig NIF, NIE, eller CIF.\"\n\n#: es/forms.py:74\nmsgid \"Please enter a valid NIF or NIE.\"\nmsgstr \"Var god fyll i giltigt NIF eller NIE.\"\n\n#: es/forms.py:75\nmsgid \"Invalid checksum for NIF.\"\nmsgstr \"Ogiltig kontrollsumma för NIF.\"\n\n#: es/forms.py:76\nmsgid \"Invalid checksum for NIE.\"\nmsgstr \"Ogiltig kontrollsumma för NIE.\"\n\n#: es/forms.py:77\nmsgid \"Invalid checksum for CIF.\"\nmsgstr \"Ogiltig kontrollsumma för CIF.\"\n\n#: es/forms.py:149\nmsgid \"\"\n\"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.\"\nmsgstr \"\"\n\"Var god fyll i ett giltigt bankkontonummer i XXXX-XXXX-XX-XXXXXXXXXX-format.\"\n\n#: es/forms.py:150\nmsgid \"Invalid checksum for bank account number.\"\nmsgstr \"Ogiltig kontrollsumma för bankkontonummer.\"\n\n#: fi/forms.py:33\nmsgid \"Enter a valid Finnish social security number.\"\nmsgstr \"Fyll i ett giltigt finskt personnummer.\"\n\n#: fr/forms.py:35\nmsgid \"Phone numbers must be in 0X XX XX XX XX format.\"\nmsgstr \"Telefonnummer måste vara i formatet 0X XX XX XX XX.\"\n\n#: gb/forms.py:25\nmsgid \"Enter a valid postcode.\"\nmsgstr \"Fyll i ett giltigt postnummer.\"\n\n#: gb/gb_regions.py:11\nmsgid \"Bedfordshire\"\nmsgstr \"Bedfordshire\"\n\n#: gb/gb_regions.py:12\nmsgid \"Buckinghamshire\"\nmsgstr \"Buckinghamshire\"\n\n#: gb/gb_regions.py:14\nmsgid \"Cheshire\"\nmsgstr \"Cheshire\"\n\n#: gb/gb_regions.py:15\nmsgid \"Cornwall and Isles of Scilly\"\nmsgstr \"Cornwall and Isles of Scilly\"\n\n#: gb/gb_regions.py:16\nmsgid \"Cumbria\"\nmsgstr \"Cumbria\"\n\n#: gb/gb_regions.py:17\nmsgid \"Derbyshire\"\nmsgstr \"Derbyshire\"\n\n#: gb/gb_regions.py:18\nmsgid \"Devon\"\nmsgstr \"Devon\"\n\n#: gb/gb_regions.py:19\nmsgid \"Dorset\"\nmsgstr \"Dorset\"\n\n#: gb/gb_regions.py:20\nmsgid \"Durham\"\nmsgstr \"Durham\"\n\n#: gb/gb_regions.py:21\nmsgid \"East Sussex\"\nmsgstr \"East Sussex\"\n\n#: gb/gb_regions.py:22\nmsgid \"Essex\"\nmsgstr \"Essex\"\n\n#: gb/gb_regions.py:23\nmsgid \"Gloucestershire\"\nmsgstr \"Gloucestershire\"\n\n#: gb/gb_regions.py:24\nmsgid \"Greater London\"\nmsgstr \"Greater London\"\n\n#: gb/gb_regions.py:25\nmsgid \"Greater Manchester\"\nmsgstr \"Greater Manchester\"\n\n#: gb/gb_regions.py:26\nmsgid \"Hampshire\"\nmsgstr \"Hampshire\"\n\n#: gb/gb_regions.py:27\nmsgid \"Hertfordshire\"\nmsgstr \"Hertfordshire\"\n\n#: gb/gb_regions.py:28\nmsgid \"Kent\"\nmsgstr \"Kent\"\n\n#: gb/gb_regions.py:29\nmsgid \"Lancashire\"\nmsgstr \"Lancashire\"\n\n#: gb/gb_regions.py:30\nmsgid \"Leicestershire\"\nmsgstr \"Leicestershire\"\n\n#: gb/gb_regions.py:31\nmsgid \"Lincolnshire\"\nmsgstr \"Lincolnshire\"\n\n#: gb/gb_regions.py:32\nmsgid \"Merseyside\"\nmsgstr \"Merseyside\"\n\n#: gb/gb_regions.py:33\nmsgid \"Norfolk\"\nmsgstr \"Norfolk\"\n\n#: gb/gb_regions.py:34\nmsgid \"North Yorkshire\"\nmsgstr \"North Yorkshire\"\n\n#: gb/gb_regions.py:35\nmsgid \"Northamptonshire\"\nmsgstr \"Northamptonshire\"\n\n#: gb/gb_regions.py:36\nmsgid \"Northumberland\"\nmsgstr \"Northumberland\"\n\n#: gb/gb_regions.py:37\nmsgid \"Nottinghamshire\"\nmsgstr \"Nottinghamshire\"\n\n#: gb/gb_regions.py:38\nmsgid \"Oxfordshire\"\nmsgstr \"Oxfordshire\"\n\n#: gb/gb_regions.py:39\nmsgid \"Shropshire\"\nmsgstr \"Shropshire\"\n\n#: gb/gb_regions.py:40\nmsgid \"Somerset\"\nmsgstr \"Somerset\"\n\n#: gb/gb_regions.py:41\nmsgid \"South Yorkshire\"\nmsgstr \"South Yorkshire\"\n\n#: gb/gb_regions.py:42\nmsgid \"Staffordshire\"\nmsgstr \"Staffordshire\"\n\n#: gb/gb_regions.py:43\nmsgid \"Suffolk\"\nmsgstr \"Suffolk\"\n\n#: gb/gb_regions.py:44\nmsgid \"Surrey\"\nmsgstr \"Surrey\"\n\n#: gb/gb_regions.py:45\nmsgid \"Tyne and Wear\"\nmsgstr \"Tyne and Wear\"\n\n#: gb/gb_regions.py:46\nmsgid \"Warwickshire\"\nmsgstr \"Warwickshire\"\n\n#: gb/gb_regions.py:47\nmsgid \"West Midlands\"\nmsgstr \"West Midlands\"\n\n#: gb/gb_regions.py:48\nmsgid \"West Sussex\"\nmsgstr \"West Sussex\"\n\n#: gb/gb_regions.py:49\nmsgid \"West Yorkshire\"\nmsgstr \"West Yorkshire\"\n\n#: gb/gb_regions.py:50\nmsgid \"Wiltshire\"\nmsgstr \"Wiltshire\"\n\n#: gb/gb_regions.py:51\nmsgid \"Worcestershire\"\nmsgstr \"Worcestershire\"\n\n#: gb/gb_regions.py:55\nmsgid \"County Antrim\"\nmsgstr \"County Antrim\"\n\n#: gb/gb_regions.py:56\nmsgid \"County Armagh\"\nmsgstr \"County Armagh\"\n\n#: gb/gb_regions.py:57\nmsgid \"County Down\"\nmsgstr \"County Down\"\n\n#: gb/gb_regions.py:58\nmsgid \"County Fermanagh\"\nmsgstr \"County Fermanagh\"\n\n#: gb/gb_regions.py:59\nmsgid \"County Londonderry\"\nmsgstr \"County Londonderry\"\n\n#: gb/gb_regions.py:60\nmsgid \"County Tyrone\"\nmsgstr \"County Tyrone\"\n\n#: gb/gb_regions.py:64\nmsgid \"Clwyd\"\nmsgstr \"Clwyd\"\n\n#: gb/gb_regions.py:65\nmsgid \"Dyfed\"\nmsgstr \"Dyfed\"\n\n#: gb/gb_regions.py:66\nmsgid \"Gwent\"\nmsgstr \"Gwent\"\n\n#: gb/gb_regions.py:67\nmsgid \"Gwynedd\"\nmsgstr \"Gwynedd\"\n\n#: gb/gb_regions.py:68\nmsgid \"Mid Glamorgan\"\nmsgstr \"Mid Glamorgan\"\n\n#: gb/gb_regions.py:69\nmsgid \"Powys\"\nmsgstr \"Powys\"\n\n#: gb/gb_regions.py:70\nmsgid \"South Glamorgan\"\nmsgstr \"South Glamorgan\"\n\n#: gb/gb_regions.py:71\nmsgid \"West Glamorgan\"\nmsgstr \"West Glamorgan\"\n\n#: gb/gb_regions.py:75\nmsgid \"Borders\"\nmsgstr \"Borders\"\n\n#: gb/gb_regions.py:76\nmsgid \"Central Scotland\"\nmsgstr \"Central Scotland\"\n\n#: gb/gb_regions.py:77\nmsgid \"Dumfries and Galloway\"\nmsgstr \"Dumfries and Galloway\"\n\n#: gb/gb_regions.py:78\nmsgid \"Fife\"\nmsgstr \"Fife\"\n\n#: gb/gb_regions.py:79\nmsgid \"Grampian\"\nmsgstr \"Grampian\"\n\n#: gb/gb_regions.py:80\nmsgid \"Highland\"\nmsgstr \"Highland\"\n\n#: gb/gb_regions.py:81\nmsgid \"Lothian\"\nmsgstr \"Lothian\"\n\n#: gb/gb_regions.py:82\nmsgid \"Orkney Islands\"\nmsgstr \"Orkney Islands\"\n\n#: gb/gb_regions.py:83\nmsgid \"Shetland Islands\"\nmsgstr \"Shetland Islands\"\n\n#: gb/gb_regions.py:84\nmsgid \"Strathclyde\"\nmsgstr \"Strathclyde\"\n\n#: gb/gb_regions.py:85\nmsgid \"Tayside\"\nmsgstr \"Tayside\"\n\n#: gb/gb_regions.py:86\nmsgid \"Western Isles\"\nmsgstr \"Western Isles\"\n\n#: gb/gb_regions.py:90\nmsgid \"England\"\nmsgstr \"England\"\n\n#: gb/gb_regions.py:91\nmsgid \"Northern Ireland\"\nmsgstr \"Nordirland\"\n\n#: gb/gb_regions.py:92\nmsgid \"Scotland\"\nmsgstr \"Scotland\"\n\n#: gb/gb_regions.py:93\nmsgid \"Wales\"\nmsgstr \"Wales\"\n\n#: hk/forms.py:37\n#, python-format\nmsgid \"Phone number should not start with one of the followings: %s.\"\nmsgstr \"Telefonnummer får inte börja med något av följande: %s.\"\n\n#: hk/forms.py:40\n#, python-format\nmsgid \"Phone number must be in one of the following formats: %s.\"\nmsgstr \"Telefonnummer måste vara i något av dessa format: %s.\"\n\n#: hk/forms.py:42\n#, python-format\nmsgid \"Phone number should start with one of the followings: %s.\"\nmsgstr \"Telefonnummer ska börja med något av följande: %s.\"\n\n#: hr/forms.py:76\nmsgid \"Enter a valid 13 digit JMBG\"\nmsgstr \"Ange en giltig 13-siffrig JMBG.\"\n\n#: hr/forms.py:77\nmsgid \"Error in date segment\"\nmsgstr \"Fel i datumdelen.\"\n\n#: hr/forms.py:123\nmsgid \"Enter a valid 11 digit OIB\"\nmsgstr \"Ange en giltig 11-siffrig OIB.\"\n\n#: hr/forms.py:152 id/forms.py:112\nmsgid \"Enter a valid vehicle license plate number\"\nmsgstr \"Ange ett giltigt bilnummer\"\n\n#: hr/forms.py:153\nmsgid \"Enter a valid location code\"\nmsgstr \"Ange en giltig platskod.\"\n\n#: hr/forms.py:154\nmsgid \"Number part cannot be zero\"\nmsgstr \"Nummerdelen får inte vara noll.\"\n\n#: hr/forms.py:190\nmsgid \"Enter a valid 5 digit postal code\"\nmsgstr \"Ange ett giltigt femsiffrigt postnummer.\"\n\n#: hr/forms.py:218 id/forms.py:72 nl/forms.py:56\nmsgid \"Enter a valid phone number\"\nmsgstr \"Fyll i ett giltigt telefonnummer.\"\n\n#: hr/forms.py:219\nmsgid \"Enter a valid area or mobile network code\"\nmsgstr \"Ange en giltigt riktnummer eller mobiltelefonnummer.\"\n\n#: hr/forms.py:220\nmsgid \"The phone nubmer is too long\"\nmsgstr \"Telefonnumret är för långt.\"\n\n#: hr/forms.py:258\nmsgid \"Enter a valid 19 digit JMBAG starting with 601983\"\nmsgstr \"Ange ett giltigt 19-siffrigt JMBAG som börjar med 601983\"\n\n#: hr/forms.py:259\nmsgid \"Card issue number cannot be zero\"\nmsgstr \"Kortutfärdarnumret får inte vara noll\"\n\n#: hr/hr_choices.py:14\nmsgid \"Grad Zagreb\"\nmsgstr \"Grad Zagreb\"\n\n#: hr/hr_choices.py:15\nmsgid \"Bjelovarsko-bilogorska županija\"\nmsgstr \"Bjelovar-Bilogoras län\"\n\n#: hr/hr_choices.py:16\nmsgid \"Brodsko-posavska županija\"\nmsgstr \"Brod-Posavinas län\"\n\n#: hr/hr_choices.py:17\nmsgid \"Dubrovačko-neretvanska županija\"\nmsgstr \"Dubrovnik-Neretvas län\"\n\n#: hr/hr_choices.py:18\nmsgid \"Istarska županija\"\nmsgstr \"Istriens län\"\n\n#: hr/hr_choices.py:19\nmsgid \"Karlovačka županija\"\nmsgstr \"Karlovacs län\"\n\n#: hr/hr_choices.py:20\nmsgid \"Koprivničko-križevačka županija\"\nmsgstr \"Koprivnica-Križevcis län\"\n\n#: hr/hr_choices.py:21\nmsgid \"Krapinsko-zagorska županija\"\nmsgstr \"Krapina-Zagorjes län\"\n\n#: hr/hr_choices.py:22\nmsgid \"Ličko-senjska županija\"\nmsgstr \"Lika-Senjs län\"\n\n#: hr/hr_choices.py:23\nmsgid \"Međimurska županija\"\nmsgstr \"Međimurjes län\"\n\n#: hr/hr_choices.py:24\nmsgid \"Osječko-baranjska županija\"\nmsgstr \"Osijek-Baranjas län\"\n\n#: hr/hr_choices.py:25\nmsgid \"Požeško-slavonska županija\"\nmsgstr \"Požega-Slavoniens län\"\n\n#: hr/hr_choices.py:26\nmsgid \"Primorsko-goranska županija\"\nmsgstr \"Primorje-Gorski kotars län\"\n\n#: hr/hr_choices.py:27\nmsgid \"Sisačko-moslavačka županija\"\nmsgstr \"Sisak-Moslavinas län\"\n\n#: hr/hr_choices.py:28\nmsgid \"Splitsko-dalmatinska županija\"\nmsgstr \"Split-Dalmatiens län\"\n\n#: hr/hr_choices.py:29\nmsgid \"Šibensko-kninska županija\"\nmsgstr \"Šibenik-Knins län\"\n\n#: hr/hr_choices.py:30\nmsgid \"Varaždinska županija\"\nmsgstr \"Varaždins län\"\n\n#: hr/hr_choices.py:31\nmsgid \"Virovitičko-podravska županija\"\nmsgstr \"Virovitica-Podravinas län\"\n\n#: hr/hr_choices.py:32\nmsgid \"Vukovarsko-srijemska županija\"\nmsgstr \"Vukovarsko-srijemska županija\"\n\n#: hr/hr_choices.py:33\nmsgid \"Zadarska županija\"\nmsgstr \"Zadars län\"\n\n#: hr/hr_choices.py:34\nmsgid \"Zagrebačka županija\"\nmsgstr \"Zagrebs län\"\n\n#: id/forms.py:31\nmsgid \"Enter a valid post code\"\nmsgstr \"Ange ett giltigt postnummer\"\n\n#: id/forms.py:176\nmsgid \"Enter a valid NIK/KTP number\"\nmsgstr \"Ange ett giltigt NIK/KTP-nummer.\"\n\n#: id/id_choices.py:15\nmsgid \"Aceh\"\nmsgstr \"Aceh\"\n\n#: id/id_choices.py:16 id/id_choices.py:79\nmsgid \"Bali\"\nmsgstr \"Bali\"\n\n#: id/id_choices.py:17 id/id_choices.py:51\nmsgid \"Banten\"\nmsgstr \"Banten\"\n\n#: id/id_choices.py:18 id/id_choices.py:60\nmsgid \"Bengkulu\"\nmsgstr \"Bengkulu\"\n\n#: id/id_choices.py:19 id/id_choices.py:53\nmsgid \"Yogyakarta\"\nmsgstr \"Yogyakarta\"\n\n#: id/id_choices.py:20 id/id_choices.py:57\nmsgid \"Jakarta\"\nmsgstr \"Jakarta\"\n\n#: id/id_choices.py:21 id/id_choices.py:81\nmsgid \"Gorontalo\"\nmsgstr \"Gorontalo\"\n\n#: id/id_choices.py:22 id/id_choices.py:63\nmsgid \"Jambi\"\nmsgstr \"Jambi\"\n\n#: id/id_choices.py:23\nmsgid \"Jawa Barat\"\nmsgstr \"Jawa Barat\"\n\n#: id/id_choices.py:24\nmsgid \"Jawa Tengah\"\nmsgstr \"Jawa Tengah\"\n\n#: id/id_choices.py:25\nmsgid \"Jawa Timur\"\nmsgstr \"Jawa Timur\"\n\n#: id/id_choices.py:26 id/id_choices.py:94\nmsgid \"Kalimantan Barat\"\nmsgstr \"Kalimantan Barat\"\n\n#: id/id_choices.py:27 id/id_choices.py:72\nmsgid \"Kalimantan Selatan\"\nmsgstr \"Kalimantan Selatan\"\n\n#: id/id_choices.py:28 id/id_choices.py:95\nmsgid \"Kalimantan Tengah\"\nmsgstr \"Kalimantan Tengah\"\n\n#: id/id_choices.py:29 id/id_choices.py:96\nmsgid \"Kalimantan Timur\"\nmsgstr \"Kalimantan Timur\"\n\n#: id/id_choices.py:30\nmsgid \"Kepulauan Bangka-Belitung\"\nmsgstr \"Kepulauan Bangka-Belitung\"\n\n#: id/id_choices.py:31 id/id_choices.py:68\nmsgid \"Kepulauan Riau\"\nmsgstr \"Kepulauan Riau\"\n\n#: id/id_choices.py:32 id/id_choices.py:61\nmsgid \"Lampung\"\nmsgstr \"Lampung\"\n\n#: id/id_choices.py:33 id/id_choices.py:76\nmsgid \"Maluku\"\nmsgstr \"Maluku\"\n\n#: id/id_choices.py:34 id/id_choices.py:77\nmsgid \"Maluku Utara\"\nmsgstr \"Maluku Utara\"\n\n#: id/id_choices.py:35\nmsgid \"Nusa Tenggara Barat\"\nmsgstr \"Nusa Tenggara Barat\"\n\n#: id/id_choices.py:36\nmsgid \"Nusa Tenggara Timur\"\nmsgstr \"Nusa Tenggara Timur\"\n\n#: id/id_choices.py:37\nmsgid \"Papua\"\nmsgstr \"Papua\"\n\n#: id/id_choices.py:38\nmsgid \"Papua Barat\"\nmsgstr \"Papua Barat\"\n\n#: id/id_choices.py:39 id/id_choices.py:66\nmsgid \"Riau\"\nmsgstr \"Riau\"\n\n#: id/id_choices.py:40 id/id_choices.py:74\nmsgid \"Sulawesi Barat\"\nmsgstr \"Sulawesi Barat\"\n\n#: id/id_choices.py:41 id/id_choices.py:75\nmsgid \"Sulawesi Selatan\"\nmsgstr \"Sulawesi Selatan\"\n\n#: id/id_choices.py:42 id/id_choices.py:82\nmsgid \"Sulawesi Tengah\"\nmsgstr \"Sulawesi Tengah\"\n\n#: id/id_choices.py:43 id/id_choices.py:85\nmsgid \"Sulawesi Tenggara\"\nmsgstr \"Sulawesi Tenggara\"\n\n#: id/id_choices.py:44\nmsgid \"Sulawesi Utara\"\nmsgstr \"Sulawesi Utara\"\n\n#: id/id_choices.py:45 id/id_choices.py:58\nmsgid \"Sumatera Barat\"\nmsgstr \"Sumatera Barat\"\n\n#: id/id_choices.py:46 id/id_choices.py:62\nmsgid \"Sumatera Selatan\"\nmsgstr \"Sumatera Selatan\"\n\n#: id/id_choices.py:47 id/id_choices.py:64\nmsgid \"Sumatera Utara\"\nmsgstr \"Sumatera Utara\"\n\n#: id/id_choices.py:52\nmsgid \"Magelang\"\nmsgstr \"Magelang\"\n\n#: id/id_choices.py:54\nmsgid \"Surakarta - Solo\"\nmsgstr \"Surakarta - Solo\"\n\n#: id/id_choices.py:55\nmsgid \"Madiun\"\nmsgstr \"Madiun\"\n\n#: id/id_choices.py:56\nmsgid \"Kediri\"\nmsgstr \"Kediri\"\n\n#: id/id_choices.py:59\nmsgid \"Tapanuli\"\nmsgstr \"Tapanuli\"\n\n#: id/id_choices.py:65\nmsgid \"Nanggroe Aceh Darussalam\"\nmsgstr \"Nanggroe Aceh Darussalam\"\n\n#: id/id_choices.py:67\nmsgid \"Kepulauan Bangka Belitung\"\nmsgstr \"Kepulauan Bangka Belitung\"\n\n#: id/id_choices.py:69\nmsgid \"Corps Consulate\"\nmsgstr \"Corps Consulate\"\n\n#: id/id_choices.py:70\nmsgid \"Corps Diplomatic\"\nmsgstr \"Corps Diplomatic\"\n\n#: id/id_choices.py:71\nmsgid \"Bandung\"\nmsgstr \"Bandung\"\n\n#: id/id_choices.py:73\nmsgid \"Sulawesi Utara Daratan\"\nmsgstr \"Sulawesi Utara Daratan\"\n\n#: id/id_choices.py:78\nmsgid \"NTT - Timor\"\nmsgstr \"NTT - Timor\"\n\n#: id/id_choices.py:80\nmsgid \"Sulawesi Utara Kepulauan\"\nmsgstr \"Sulawesi Utara Kepulauan\"\n\n#: id/id_choices.py:83\nmsgid \"NTB - Lombok\"\nmsgstr \"NTB - Lombok\"\n\n#: id/id_choices.py:84\nmsgid \"Papua dan Papua Barat\"\nmsgstr \"Papua dan Papua Barat\"\n\n#: id/id_choices.py:86\nmsgid \"Cirebon\"\nmsgstr \"Cirebon\"\n\n#: id/id_choices.py:87\nmsgid \"NTB - Sumbawa\"\nmsgstr \"NTB - Sumbawa\"\n\n#: id/id_choices.py:88\nmsgid \"NTT - Flores\"\nmsgstr \"NTT - Flores\"\n\n#: id/id_choices.py:89\nmsgid \"NTT - Sumba\"\nmsgstr \"NTT - Sumba\"\n\n#: id/id_choices.py:90\nmsgid \"Bogor\"\nmsgstr \"Bogor\"\n\n#: id/id_choices.py:91\nmsgid \"Pekalongan\"\nmsgstr \"Pekalongan\"\n\n#: id/id_choices.py:92\nmsgid \"Semarang\"\nmsgstr \"Semarang\"\n\n#: id/id_choices.py:93\nmsgid \"Pati\"\nmsgstr \"Pati\"\n\n#: id/id_choices.py:97\nmsgid \"Surabaya\"\nmsgstr \"Surabaya\"\n\n#: id/id_choices.py:98\nmsgid \"Madura\"\nmsgstr \"Madura\"\n\n#: id/id_choices.py:99\nmsgid \"Malang\"\nmsgstr \"Malang\"\n\n#: id/id_choices.py:100\nmsgid \"Jember\"\nmsgstr \"Jember\"\n\n#: id/id_choices.py:101\nmsgid \"Banyumas\"\nmsgstr \"Banyumas\"\n\n#: id/id_choices.py:102\nmsgid \"Federal Government\"\nmsgstr \"Federala regeringen\"\n\n#: id/id_choices.py:103\nmsgid \"Bojonegoro\"\nmsgstr \"Bojonegoro\"\n\n#: id/id_choices.py:104\nmsgid \"Purwakarta\"\nmsgstr \"Purwakarta\"\n\n#: id/id_choices.py:105\nmsgid \"Sidoarjo\"\nmsgstr \"Sidoarjo\"\n\n#: id/id_choices.py:106\nmsgid \"Garut\"\nmsgstr \"Garut\"\n\n#: ie/ie_counties.py:8\nmsgid \"Antrim\"\nmsgstr \"Antrim\"\n\n#: ie/ie_counties.py:9\nmsgid \"Armagh\"\nmsgstr \"Armagh\"\n\n#: ie/ie_counties.py:10\nmsgid \"Carlow\"\nmsgstr \"Carlow\"\n\n#: ie/ie_counties.py:11\nmsgid \"Cavan\"\nmsgstr \"Cavan\"\n\n#: ie/ie_counties.py:12\nmsgid \"Clare\"\nmsgstr \"Clare\"\n\n#: ie/ie_counties.py:13\nmsgid \"Cork\"\nmsgstr \"Cork\"\n\n#: ie/ie_counties.py:14\nmsgid \"Derry\"\nmsgstr \"Derry\"\n\n#: ie/ie_counties.py:15\nmsgid \"Donegal\"\nmsgstr \"Donegal\"\n\n#: ie/ie_counties.py:16\nmsgid \"Down\"\nmsgstr \"Down\"\n\n#: ie/ie_counties.py:17\nmsgid \"Dublin\"\nmsgstr \"Dublin\"\n\n#: ie/ie_counties.py:18\nmsgid \"Fermanagh\"\nmsgstr \"Fermanagh\"\n\n#: ie/ie_counties.py:19\nmsgid \"Galway\"\nmsgstr \"Galway\"\n\n#: ie/ie_counties.py:20\nmsgid \"Kerry\"\nmsgstr \"Kerry\"\n\n#: ie/ie_counties.py:21\nmsgid \"Kildare\"\nmsgstr \"Kildare\"\n\n#: ie/ie_counties.py:22\nmsgid \"Kilkenny\"\nmsgstr \"Kilkenny\"\n\n#: ie/ie_counties.py:23\nmsgid \"Laois\"\nmsgstr \"Laois\"\n\n#: ie/ie_counties.py:24\nmsgid \"Leitrim\"\nmsgstr \"Leitrim\"\n\n#: ie/ie_counties.py:25\nmsgid \"Limerick\"\nmsgstr \"Limerick\"\n\n#: ie/ie_counties.py:26\nmsgid \"Longford\"\nmsgstr \"Longford\"\n\n#: ie/ie_counties.py:27\nmsgid \"Louth\"\nmsgstr \"Louth\"\n\n#: ie/ie_counties.py:28\nmsgid \"Mayo\"\nmsgstr \"Mayo\"\n\n#: ie/ie_counties.py:29\nmsgid \"Meath\"\nmsgstr \"Meath\"\n\n#: ie/ie_counties.py:30\nmsgid \"Monaghan\"\nmsgstr \"Monaghan\"\n\n#: ie/ie_counties.py:31\nmsgid \"Offaly\"\nmsgstr \"Offaly\"\n\n#: ie/ie_counties.py:32\nmsgid \"Roscommon\"\nmsgstr \"Roscommon\"\n\n#: ie/ie_counties.py:33\nmsgid \"Sligo\"\nmsgstr \"Sligo\"\n\n#: ie/ie_counties.py:34\nmsgid \"Tipperary\"\nmsgstr \"Tipperary\"\n\n#: ie/ie_counties.py:35\nmsgid \"Tyrone\"\nmsgstr \"Tyrone\"\n\n#: ie/ie_counties.py:36\nmsgid \"Waterford\"\nmsgstr \"Waterford\"\n\n#: ie/ie_counties.py:37\nmsgid \"Westmeath\"\nmsgstr \"Westmeath\"\n\n#: ie/ie_counties.py:38\nmsgid \"Wexford\"\nmsgstr \"Wexford\"\n\n#: ie/ie_counties.py:39\nmsgid \"Wicklow\"\nmsgstr \"Wicklow\"\n\n#: il/forms.py:32\nmsgid \"Enter a postal code in the format XXXXX\"\nmsgstr \"Ange ett postnummer i formatet XXXXX\"\n\n#: il/forms.py:51\nmsgid \"Enter a valid ID number.\"\nmsgstr \"Ange ett giltigt ID-nummer.\"\n\n#: in_/forms.py:41\nmsgid \"Enter a zip code in the format XXXXXX or XXX XXX.\"\nmsgstr \"Ange ett postnummer i formatet XXXXXX eller XXX XXX.\"\n\n#: in_/forms.py:64\nmsgid \"Enter an Indian state or territory.\"\nmsgstr \"Ange en indisk stat eller territorium.\"\n\n#: in_/forms.py:103\nmsgid \"Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.\"\nmsgstr \"Telefonnummer måste vara i formatet 02X-8X, 03X-7X eller 04X-6X.\"\n\n#: is_/forms.py:22\nmsgid \"\"\n\"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.\"\nmsgstr \"Fyll i ett giltigt isländskt personnummer. Formatet är XXXXXX-XXXX.\"\n\n#: is_/forms.py:23\nmsgid \"The Icelandic identification number is not valid.\"\nmsgstr \"Det isländska personnumret är inte giltigt.\"\n\n#: it/forms.py:21\nmsgid \"Enter a valid zip code.\"\nmsgstr \"Fyll i ett giltigt postnummer.\"\n\n#: it/forms.py:48\nmsgid \"Enter a valid Social Security number.\"\nmsgstr \"Fyll i ett giltigt personnummer.\"\n\n#: it/forms.py:73\nmsgid \"Enter a valid VAT number.\"\nmsgstr \"Fyll i ett giltigt VAT-nummer.\"\n\n#: jp/forms.py:19\nmsgid \"Enter a postal code in the format XXXXXXX or XXX-XXXX.\"\nmsgstr \"Fyll i ett postnummer med formatet XXXXXXX eller XXX-XXXX.\"\n\n#: jp/jp_prefectures.py:4\nmsgid \"Hokkaido\"\nmsgstr \"Hokkaido\"\n\n#: jp/jp_prefectures.py:5\nmsgid \"Aomori\"\nmsgstr \"Aomori\"\n\n#: jp/jp_prefectures.py:6\nmsgid \"Iwate\"\nmsgstr \"Iwate\"\n\n#: jp/jp_prefectures.py:7\nmsgid \"Miyagi\"\nmsgstr \"Miyagi\"\n\n#: jp/jp_prefectures.py:8\nmsgid \"Akita\"\nmsgstr \"Akita\"\n\n#: jp/jp_prefectures.py:9\nmsgid \"Yamagata\"\nmsgstr \"Yamagata\"\n\n#: jp/jp_prefectures.py:10\nmsgid \"Fukushima\"\nmsgstr \"Fukushima\"\n\n#: jp/jp_prefectures.py:11\nmsgid \"Ibaraki\"\nmsgstr \"Ibaraki\"\n\n#: jp/jp_prefectures.py:12\nmsgid \"Tochigi\"\nmsgstr \"Tochigi\"\n\n#: jp/jp_prefectures.py:13\nmsgid \"Gunma\"\nmsgstr \"Gunma\"\n\n#: jp/jp_prefectures.py:14\nmsgid \"Saitama\"\nmsgstr \"Saitama\"\n\n#: jp/jp_prefectures.py:15\nmsgid \"Chiba\"\nmsgstr \"Chiba\"\n\n#: jp/jp_prefectures.py:16\nmsgid \"Tokyo\"\nmsgstr \"Tokyo\"\n\n#: jp/jp_prefectures.py:17\nmsgid \"Kanagawa\"\nmsgstr \"Kanagawa\"\n\n#: jp/jp_prefectures.py:18\nmsgid \"Yamanashi\"\nmsgstr \"Yamanashi\"\n\n#: jp/jp_prefectures.py:19\nmsgid \"Nagano\"\nmsgstr \"Nagano\"\n\n#: jp/jp_prefectures.py:20\nmsgid \"Niigata\"\nmsgstr \"Niigata\"\n\n#: jp/jp_prefectures.py:21\nmsgid \"Toyama\"\nmsgstr \"Toyama\"\n\n#: jp/jp_prefectures.py:22\nmsgid \"Ishikawa\"\nmsgstr \"Ischikawa\"\n\n#: jp/jp_prefectures.py:23\nmsgid \"Fukui\"\nmsgstr \"Fukui\"\n\n#: jp/jp_prefectures.py:24\nmsgid \"Gifu\"\nmsgstr \"Gifu\"\n\n#: jp/jp_prefectures.py:25\nmsgid \"Shizuoka\"\nmsgstr \"Shizuoka\"\n\n#: jp/jp_prefectures.py:26\nmsgid \"Aichi\"\nmsgstr \"Aichi\"\n\n#: jp/jp_prefectures.py:27\nmsgid \"Mie\"\nmsgstr \"Mie\"\n\n#: jp/jp_prefectures.py:28\nmsgid \"Shiga\"\nmsgstr \"Shiga\"\n\n#: jp/jp_prefectures.py:29\nmsgid \"Kyoto\"\nmsgstr \"Kyoto\"\n\n#: jp/jp_prefectures.py:30\nmsgid \"Osaka\"\nmsgstr \"Osaka\"\n\n#: jp/jp_prefectures.py:31\nmsgid \"Hyogo\"\nmsgstr \"Hyogo\"\n\n#: jp/jp_prefectures.py:32\nmsgid \"Nara\"\nmsgstr \"Nara\"\n\n#: jp/jp_prefectures.py:33\nmsgid \"Wakayama\"\nmsgstr \"Wakayama\"\n\n#: jp/jp_prefectures.py:34\nmsgid \"Tottori\"\nmsgstr \"Tottori\"\n\n#: jp/jp_prefectures.py:35\nmsgid \"Shimane\"\nmsgstr \"Shimane\"\n\n#: jp/jp_prefectures.py:36\nmsgid \"Okayama\"\nmsgstr \"Okayama\"\n\n#: jp/jp_prefectures.py:37\nmsgid \"Hiroshima\"\nmsgstr \"Hiroshima\"\n\n#: jp/jp_prefectures.py:38\nmsgid \"Yamaguchi\"\nmsgstr \"Yamaguchi\"\n\n#: jp/jp_prefectures.py:39\nmsgid \"Tokushima\"\nmsgstr \"Tokushima\"\n\n#: jp/jp_prefectures.py:40\nmsgid \"Kagawa\"\nmsgstr \"Kagawa\"\n\n#: jp/jp_prefectures.py:41\nmsgid \"Ehime\"\nmsgstr \"Ehime\"\n\n#: jp/jp_prefectures.py:42\nmsgid \"Kochi\"\nmsgstr \"Kochi\"\n\n#: jp/jp_prefectures.py:43\nmsgid \"Fukuoka\"\nmsgstr \"Fukuoka\"\n\n#: jp/jp_prefectures.py:44\nmsgid \"Saga\"\nmsgstr \"Saga\"\n\n#: jp/jp_prefectures.py:45\nmsgid \"Nagasaki\"\nmsgstr \"Nagasaki\"\n\n#: jp/jp_prefectures.py:46\nmsgid \"Kumamoto\"\nmsgstr \"Kuamoto\"\n\n#: jp/jp_prefectures.py:47\nmsgid \"Oita\"\nmsgstr \"Oita\"\n\n#: jp/jp_prefectures.py:48\nmsgid \"Miyazaki\"\nmsgstr \"Miyazaki\"\n\n#: jp/jp_prefectures.py:49\nmsgid \"Kagoshima\"\nmsgstr \"kagoshima\"\n\n#: jp/jp_prefectures.py:50\nmsgid \"Okinawa\"\nmsgstr \"Okinawa\"\n\n#: kw/forms.py:27\nmsgid \"Enter a valid Kuwaiti Civil ID number\"\nmsgstr \"Ange ett giltigt kuwaitiskt personnummer.\"\n\n#: mk/forms.py:18\nmsgid \"\"\n\"Identity card numbers must contain either 4 to 7 digits or an uppercase \"\n\"letter and 7 digits.\"\nmsgstr \"\"\n\"ID-kortnummer måste innehålla antingen fyra till sju siffror eller en versal \"\n\"och sju siffror.\"\n\n#: mk/forms.py:57 si/forms.py:24\nmsgid \"This field should contain exactly 13 digits.\"\nmsgstr \"Fältet ska innehålla exakt 13 siffror.\"\n\n#: mk/forms.py:58\nmsgid \"The first 7 digits of the UMCN must represent a valid past date.\"\nmsgstr \"\"\n\"De första sju siffrorna av UMCN-numret måste representera ett giltigt, \"\n\"passerat datum.\"\n\n#: mk/forms.py:59\nmsgid \"The UMCN is not valid.\"\nmsgstr \"UMCN-numret är inte giltigt.\"\n\n#: mk/mk_choices.py:10\nmsgid \"Aerodrom\"\nmsgstr \"Aerodrom\"\n\n#: mk/mk_choices.py:11\nmsgid \"Aračinovo\"\nmsgstr \"Aračinovo\"\n\n#: mk/mk_choices.py:12\nmsgid \"Berovo\"\nmsgstr \"Berovo\"\n\n#: mk/mk_choices.py:13\nmsgid \"Bitola\"\nmsgstr \"Bitola\"\n\n#: mk/mk_choices.py:14\nmsgid \"Bogdanci\"\nmsgstr \"Bogdanci\"\n\n#: mk/mk_choices.py:15\nmsgid \"Bogovinje\"\nmsgstr \"Bogovinje\"\n\n#: mk/mk_choices.py:16\nmsgid \"Bosilovo\"\nmsgstr \"Bosilovo\"\n\n#: mk/mk_choices.py:17\nmsgid \"Brvenica\"\nmsgstr \"Brvenica\"\n\n#: mk/mk_choices.py:18\nmsgid \"Butel\"\nmsgstr \"Butel\"\n\n#: mk/mk_choices.py:19\nmsgid \"Valandovo\"\nmsgstr \"Valandovo\"\n\n#: mk/mk_choices.py:20\nmsgid \"Vasilevo\"\nmsgstr \"Vasilevo\"\n\n#: mk/mk_choices.py:21\nmsgid \"Vevčani\"\nmsgstr \"Vevčani\"\n\n#: mk/mk_choices.py:22\nmsgid \"Veles\"\nmsgstr \"Veles\"\n\n#: mk/mk_choices.py:23\nmsgid \"Vinica\"\nmsgstr \"Vinica\"\n\n#: mk/mk_choices.py:24\nmsgid \"Vraneštica\"\nmsgstr \"Vraneštica\"\n\n#: mk/mk_choices.py:25\nmsgid \"Vrapčište\"\nmsgstr \"Vrapčište\"\n\n#: mk/mk_choices.py:26\nmsgid \"Gazi Baba\"\nmsgstr \"Gazi Baba\"\n\n#: mk/mk_choices.py:27\nmsgid \"Gevgelija\"\nmsgstr \"Gevgelija\"\n\n#: mk/mk_choices.py:28\nmsgid \"Gostivar\"\nmsgstr \"Gostivar\"\n\n#: mk/mk_choices.py:29\nmsgid \"Gradsko\"\nmsgstr \"Gradsko\"\n\n#: mk/mk_choices.py:30\nmsgid \"Debar\"\nmsgstr \"Debar\"\n\n#: mk/mk_choices.py:31\nmsgid \"Debarca\"\nmsgstr \"Debarca\"\n\n#: mk/mk_choices.py:32\nmsgid \"Delčevo\"\nmsgstr \"Delčevo\"\n\n#: mk/mk_choices.py:33\nmsgid \"Demir Kapija\"\nmsgstr \"Demir Kapija\"\n\n#: mk/mk_choices.py:34\nmsgid \"Demir Hisar\"\nmsgstr \"Demir Hisar\"\n\n#: mk/mk_choices.py:35\nmsgid \"Dolneni\"\nmsgstr \"Dolneni\"\n\n#: mk/mk_choices.py:36\nmsgid \"Drugovo\"\nmsgstr \"Drugovo\"\n\n#: mk/mk_choices.py:37\nmsgid \"Gjorče Petrov\"\nmsgstr \"Gjorče Petrov\"\n\n#: mk/mk_choices.py:38\nmsgid \"Želino\"\nmsgstr \"Želino\"\n\n#: mk/mk_choices.py:39\nmsgid \"Zajas\"\nmsgstr \"Zajas\"\n\n#: mk/mk_choices.py:40\nmsgid \"Zelenikovo\"\nmsgstr \"Zelenikovo\"\n\n#: mk/mk_choices.py:41\nmsgid \"Zrnovci\"\nmsgstr \"Zrnovci\"\n\n#: mk/mk_choices.py:42\nmsgid \"Ilinden\"\nmsgstr \"Ilinden\"\n\n#: mk/mk_choices.py:43\nmsgid \"Jegunovce\"\nmsgstr \"Jegunovce\"\n\n#: mk/mk_choices.py:44\nmsgid \"Kavadarci\"\nmsgstr \"Kavadarci\"\n\n#: mk/mk_choices.py:45\nmsgid \"Karbinci\"\nmsgstr \"Karbinci\"\n\n#: mk/mk_choices.py:46\nmsgid \"Karpoš\"\nmsgstr \"Karpoš\"\n\n#: mk/mk_choices.py:47\nmsgid \"Kisela Voda\"\nmsgstr \"Kisela Voda\"\n\n#: mk/mk_choices.py:48\nmsgid \"Kičevo\"\nmsgstr \"Kičevo\"\n\n#: mk/mk_choices.py:49\nmsgid \"Konče\"\nmsgstr \"Konče\"\n\n#: mk/mk_choices.py:50\nmsgid \"Koćani\"\nmsgstr \"Koćani\"\n\n#: mk/mk_choices.py:51\nmsgid \"Kratovo\"\nmsgstr \"Kratovo\"\n\n#: mk/mk_choices.py:52\nmsgid \"Kriva Palanka\"\nmsgstr \"Kriva Palanka\"\n\n#: mk/mk_choices.py:53\nmsgid \"Krivogaštani\"\nmsgstr \"Krivogaštani\"\n\n#: mk/mk_choices.py:54\nmsgid \"Kruševo\"\nmsgstr \"Kruševo\"\n\n#: mk/mk_choices.py:55\nmsgid \"Kumanovo\"\nmsgstr \"Kumanovo\"\n\n#: mk/mk_choices.py:56\nmsgid \"Lipkovo\"\nmsgstr \"Lipkovo\"\n\n#: mk/mk_choices.py:57\nmsgid \"Lozovo\"\nmsgstr \"Lozovo\"\n\n#: mk/mk_choices.py:58\nmsgid \"Mavrovo i Rostuša\"\nmsgstr \"Mavrovo i Rostuša\"\n\n#: mk/mk_choices.py:59\nmsgid \"Makedonska Kamenica\"\nmsgstr \"Makedonska Kamenica\"\n\n#: mk/mk_choices.py:60\nmsgid \"Makedonski Brod\"\nmsgstr \"Makedonski Brod\"\n\n#: mk/mk_choices.py:61\nmsgid \"Mogila\"\nmsgstr \"Mogila\"\n\n#: mk/mk_choices.py:62\nmsgid \"Negotino\"\nmsgstr \"Negotino\"\n\n#: mk/mk_choices.py:63\nmsgid \"Novaci\"\nmsgstr \"Novaci\"\n\n#: mk/mk_choices.py:64\nmsgid \"Novo Selo\"\nmsgstr \"Novo Selo\"\n\n#: mk/mk_choices.py:65\nmsgid \"Oslomej\"\nmsgstr \"Oslomej\"\n\n#: mk/mk_choices.py:66\nmsgid \"Ohrid\"\nmsgstr \"Ohrid\"\n\n#: mk/mk_choices.py:67\nmsgid \"Petrovec\"\nmsgstr \"Petrovec\"\n\n#: mk/mk_choices.py:68\nmsgid \"Pehčevo\"\nmsgstr \"Pehčevo\"\n\n#: mk/mk_choices.py:69\nmsgid \"Plasnica\"\nmsgstr \"Plasnica\"\n\n#: mk/mk_choices.py:70\nmsgid \"Prilep\"\nmsgstr \"Prilep\"\n\n#: mk/mk_choices.py:71\nmsgid \"Probištip\"\nmsgstr \"Probištip\"\n\n#: mk/mk_choices.py:72\nmsgid \"Radoviš\"\nmsgstr \"Radoviš\"\n\n#: mk/mk_choices.py:73\nmsgid \"Rankovce\"\nmsgstr \"Rankovce\"\n\n#: mk/mk_choices.py:74\nmsgid \"Resen\"\nmsgstr \"Resen\"\n\n#: mk/mk_choices.py:75\nmsgid \"Rosoman\"\nmsgstr \"Rosoman\"\n\n#: mk/mk_choices.py:76\nmsgid \"Saraj\"\nmsgstr \"Saraj\"\n\n#: mk/mk_choices.py:77\nmsgid \"Sveti Nikole\"\nmsgstr \"Sveti Nikole\"\n\n#: mk/mk_choices.py:78\nmsgid \"Sopište\"\nmsgstr \"Sopište\"\n\n#: mk/mk_choices.py:79\nmsgid \"Star Dojran\"\nmsgstr \"Star Dojran\"\n\n#: mk/mk_choices.py:80\nmsgid \"Staro Nagoričane\"\nmsgstr \"Staro Nagoričane\"\n\n#: mk/mk_choices.py:81\nmsgid \"Struga\"\nmsgstr \"Struga\"\n\n#: mk/mk_choices.py:82\nmsgid \"Strumica\"\nmsgstr \"Strumica\"\n\n#: mk/mk_choices.py:83\nmsgid \"Studeničani\"\nmsgstr \"Studeničani\"\n\n#: mk/mk_choices.py:84\nmsgid \"Tearce\"\nmsgstr \"Tearce\"\n\n#: mk/mk_choices.py:85\nmsgid \"Tetovo\"\nmsgstr \"Tetovo\"\n\n#: mk/mk_choices.py:86\nmsgid \"Centar\"\nmsgstr \"Centar\"\n\n#: mk/mk_choices.py:87\nmsgid \"Centar-Župa\"\nmsgstr \"Centar-Župa\"\n\n#: mk/mk_choices.py:88\nmsgid \"Čair\"\nmsgstr \"Čair\"\n\n#: mk/mk_choices.py:89\nmsgid \"Čaška\"\nmsgstr \"Čaška\"\n\n#: mk/mk_choices.py:90\nmsgid \"Češinovo-Obleševo\"\nmsgstr \"Češinovo-Obleševo\"\n\n#: mk/mk_choices.py:91\nmsgid \"Čučer-Sandevo\"\nmsgstr \"Čučer-Sandevo\"\n\n#: mk/mk_choices.py:92\nmsgid \"Štip\"\nmsgstr \"Štip\"\n\n#: mk/mk_choices.py:93\nmsgid \"Šuto Orizari\"\nmsgstr \"Šuto Orizari\"\n\n#: mk/models.py:11\nmsgid \"Macedonian identity card number\"\nmsgstr \"Makedonskt ID-kortsnummer.\"\n\n#: mk/models.py:25\nmsgid \"A Macedonian municipality (2 character code)\"\nmsgstr \"En makedonsk kommun (tvåsiffrig kod)\"\n\n#: mk/models.py:35\nmsgid \"Unique master citizen number (13 digits)\"\nmsgstr \"Unikt medborgarnummer (UMCN) (13 siffror)\"\n\n#: mx/forms.py:67\nmsgid \"Enter a valid zip code in the format XXXXX.\"\nmsgstr \"Ange ett giltigt postnummer i formatet XXXXX.\"\n\n#: mx/forms.py:110\nmsgid \"Enter a valid RFC.\"\nmsgstr \"Ange en giltig RFC.\"\n\n#: mx/forms.py:111\nmsgid \"Invalid checksum for RFC.\"\nmsgstr \"Ogiltig kontrollsumma för RFC.\"\n\n#: mx/forms.py:191\nmsgid \"Enter a valid CURP.\"\nmsgstr \"Enge en giltig CURP.\"\n\n#: mx/forms.py:192\nmsgid \"Invalid checksum for CURP.\"\nmsgstr \"Ogiltig kontrollsumma för CURP.\"\n\n#: mx/models.py:14\nmsgid \"Mexico state (three uppercase letters)\"\nmsgstr \"Mexikansk stat (tre versaler)\"\n\n#: mx/models.py:27\nmsgid \"Mexico zip code\"\nmsgstr \"Mexikanskt postnummer\"\n\n#: mx/models.py:44\nmsgid \"Mexican RFC\"\nmsgstr \"Mexikanst RFC\"\n\n#: mx/models.py:61\nmsgid \"Mexican CURP\"\nmsgstr \"Mexikanst CURP\"\n\n#: mx/mx_states.py:14\nmsgid \"Aguascalientes\"\nmsgstr \"Aguascalientes\"\n\n#: mx/mx_states.py:15\nmsgid \"Baja California\"\nmsgstr \"Baja California\"\n\n#: mx/mx_states.py:16\nmsgid \"Baja California Sur\"\nmsgstr \"Baja California Sur\"\n\n#: mx/mx_states.py:17\nmsgid \"Campeche\"\nmsgstr \"Campeche\"\n\n#: mx/mx_states.py:18\nmsgid \"Chihuahua\"\nmsgstr \"Chihuahua\"\n\n#: mx/mx_states.py:19\nmsgid \"Chiapas\"\nmsgstr \"Chiapas\"\n\n#: mx/mx_states.py:20\nmsgid \"Coahuila\"\nmsgstr \"Coahuila\"\n\n#: mx/mx_states.py:21\nmsgid \"Colima\"\nmsgstr \"Colima\"\n\n#: mx/mx_states.py:22\nmsgid \"Distrito Federal\"\nmsgstr \"Distrito Federal\"\n\n#: mx/mx_states.py:23\nmsgid \"Durango\"\nmsgstr \"Durango\"\n\n#: mx/mx_states.py:24\nmsgid \"Guerrero\"\nmsgstr \"Guerrero\"\n\n#: mx/mx_states.py:25\nmsgid \"Guanajuato\"\nmsgstr \"Guanajuato\"\n\n#: mx/mx_states.py:26\nmsgid \"Hidalgo\"\nmsgstr \"Hidalgo\"\n\n#: mx/mx_states.py:27\nmsgid \"Jalisco\"\nmsgstr \"Jalisco\"\n\n#: mx/mx_states.py:28\nmsgid \"Estado de México\"\nmsgstr \"Mexikanska staten\"\n\n#: mx/mx_states.py:29\nmsgid \"Michoacán\"\nmsgstr \"Michoacán\"\n\n#: mx/mx_states.py:30\nmsgid \"Morelos\"\nmsgstr \"Morelos\"\n\n#: mx/mx_states.py:31\nmsgid \"Nayarit\"\nmsgstr \"Nayarit\"\n\n#: mx/mx_states.py:32\nmsgid \"Nuevo León\"\nmsgstr \"Nuevo León\"\n\n#: mx/mx_states.py:33\nmsgid \"Oaxaca\"\nmsgstr \"Oaxaca\"\n\n#: mx/mx_states.py:34\nmsgid \"Puebla\"\nmsgstr \"Puebla\"\n\n#: mx/mx_states.py:35\nmsgid \"Querétaro\"\nmsgstr \"Querétaro\"\n\n#: mx/mx_states.py:36\nmsgid \"Quintana Roo\"\nmsgstr \"Quintana Roo\"\n\n#: mx/mx_states.py:37\nmsgid \"Sinaloa\"\nmsgstr \"Sinaloa\"\n\n#: mx/mx_states.py:38\nmsgid \"San Luis Potosí\"\nmsgstr \"San Luis Potosí\"\n\n#: mx/mx_states.py:39\nmsgid \"Sonora\"\nmsgstr \"Sonora\"\n\n#: mx/mx_states.py:40\nmsgid \"Tabasco\"\nmsgstr \"Tabasco\"\n\n#: mx/mx_states.py:41\nmsgid \"Tamaulipas\"\nmsgstr \"Tamaulipas\"\n\n#: mx/mx_states.py:42\nmsgid \"Tlaxcala\"\nmsgstr \"Tlaxcala\"\n\n#: mx/mx_states.py:43\nmsgid \"Veracruz\"\nmsgstr \"Veracruz\"\n\n#: mx/mx_states.py:44\nmsgid \"Yucatán\"\nmsgstr \"Yucatán\"\n\n#: mx/mx_states.py:45\nmsgid \"Zacatecas\"\nmsgstr \"Zacatecas\"\n\n#: nl/forms.py:26\nmsgid \"Enter a valid postal code\"\nmsgstr \"Fyll i ett giltigt postnummer.\"\n\n#: nl/forms.py:82\nmsgid \"Enter a valid SoFi number\"\nmsgstr \"Fyll i ett giltigt SoFi-nummer.\"\n\n#: nl/nl_provinces.py:4\nmsgid \"Drenthe\"\nmsgstr \"Drenthe\"\n\n#: nl/nl_provinces.py:5\nmsgid \"Flevoland\"\nmsgstr \"Flevoland\"\n\n#: nl/nl_provinces.py:6\nmsgid \"Friesland\"\nmsgstr \"Friesland\"\n\n#: nl/nl_provinces.py:7\nmsgid \"Gelderland\"\nmsgstr \"Gelderland\"\n\n#: nl/nl_provinces.py:8\nmsgid \"Groningen\"\nmsgstr \"Groningen\"\n\n#: nl/nl_provinces.py:10\nmsgid \"Noord-Brabant\"\nmsgstr \"Noord-Brabant\"\n\n#: nl/nl_provinces.py:11\nmsgid \"Noord-Holland\"\nmsgstr \"Noord-Holland\"\n\n#: nl/nl_provinces.py:12\nmsgid \"Overijssel\"\nmsgstr \"Overijssel\"\n\n#: nl/nl_provinces.py:13\nmsgid \"Utrecht\"\nmsgstr \"Utrecht\"\n\n#: nl/nl_provinces.py:14\nmsgid \"Zeeland\"\nmsgstr \"Zeeland\"\n\n#: nl/nl_provinces.py:15\nmsgid \"Zuid-Holland\"\nmsgstr \"Zuid-Holland\"\n\n#: no/forms.py:39\nmsgid \"Enter a valid Norwegian social security number.\"\nmsgstr \"Fyll i ett giltigt norskt personnummer.\"\n\n#: pe/forms.py:28\nmsgid \"This field requires 8 digits.\"\nmsgstr \"Detta fält kräver 8 sifrror.\"\n\n#: pe/forms.py:56\nmsgid \"This field requires 11 digits.\"\nmsgstr \"Detta fält kräver 11 sifrror.\"\n\n#: pl/forms.py:42\nmsgid \"National Identification Number consists of 11 digits.\"\nmsgstr \"\\\"National Identification Number\\\" består av 11 siffror.\"\n\n#: pl/forms.py:43\nmsgid \"Wrong checksum for the National Identification Number.\"\nmsgstr \"Fel kontrollsumma för \\\"National Identification Number\\\"\"\n\n#: pl/forms.py:79\nmsgid \"National ID Card Number consists of 3 letters and 6 digits.\"\nmsgstr \"Nationellt ID-kortnummer består av tre bokstäver och sex siffror.\"\n\n#: pl/forms.py:80\nmsgid \"Wrong checksum for the National ID Card Number.\"\nmsgstr \"Felaktig kontrollsumma för nationellt ID-kortnummer.\"\n\n#: pl/forms.py:131\nmsgid \"\"\n\"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or \"\n\"XXXXXXXXXX.\"\nmsgstr \"\"\n\"Ange ett giltigt skattenummer (NIP) på formatet XXX-XXX-XX-XX, XXX-XX-XX-XXX \"\n\"eller XXXXXXXXXX.\"\n\n#: pl/forms.py:132\nmsgid \"Wrong checksum for the Tax Number (NIP).\"\nmsgstr \"Fel kontrollsumma för skattenumret (NIP).\"\n\n#: pl/forms.py:171\nmsgid \"National Business Register Number (REGON) consists of 9 or 14 digits.\"\nmsgstr \"\"\n\"National Business Register Number (REGON) består av 9 eller 14 siffror.\"\n\n#: pl/forms.py:172\nmsgid \"Wrong checksum for the National Business Register Number (REGON).\"\nmsgstr \"Fel kontrollsumma för \\\"National Business Register Number\\\" (REGON).\"\n\n#: pl/forms.py:212\nmsgid \"Enter a postal code in the format XX-XXX.\"\nmsgstr \"Fyll i ett postnummer med formatet XX-XXX.\"\n\n#: pl/pl_voivodeships.py:8\nmsgid \"Lower Silesia\"\nmsgstr \"Lower Silesia\"\n\n#: pl/pl_voivodeships.py:9\nmsgid \"Kuyavia-Pomerania\"\nmsgstr \"Kuyavia-Pomerania\"\n\n#: pl/pl_voivodeships.py:10\nmsgid \"Lublin\"\nmsgstr \"Lublin\"\n\n#: pl/pl_voivodeships.py:11\nmsgid \"Lubusz\"\nmsgstr \"Lubusz\"\n\n#: pl/pl_voivodeships.py:12\nmsgid \"Lodz\"\nmsgstr \"Lodz\"\n\n#: pl/pl_voivodeships.py:13\nmsgid \"Lesser Poland\"\nmsgstr \"Lesser Poland\"\n\n#: pl/pl_voivodeships.py:14\nmsgid \"Masovia\"\nmsgstr \"Masovia\"\n\n#: pl/pl_voivodeships.py:15\nmsgid \"Opole\"\nmsgstr \"Opole\"\n\n#: pl/pl_voivodeships.py:16\nmsgid \"Subcarpatia\"\nmsgstr \"Subcarpatia\"\n\n#: pl/pl_voivodeships.py:17\nmsgid \"Podlasie\"\nmsgstr \"Podlasie\"\n\n#: pl/pl_voivodeships.py:18\nmsgid \"Pomerania\"\nmsgstr \"Pomerania\"\n\n#: pl/pl_voivodeships.py:19\nmsgid \"Silesia\"\nmsgstr \"Silesia\"\n\n#: pl/pl_voivodeships.py:20\nmsgid \"Swietokrzyskie\"\nmsgstr \"Swietokrzyskie\"\n\n#: pl/pl_voivodeships.py:21\nmsgid \"Warmia-Masuria\"\nmsgstr \"Warmia-Masuria\"\n\n#: pl/pl_voivodeships.py:22\nmsgid \"Greater Poland\"\nmsgstr \"Greater Poland\"\n\n#: pl/pl_voivodeships.py:23\nmsgid \"West Pomerania\"\nmsgstr \"West Pomerania\"\n\n#: pt/forms.py:19\nmsgid \"Enter a zip code in the format XXXX-XXX.\"\nmsgstr \"Ange ett postnummer i formatet XXXX-XXX.\"\n\n#: pt/forms.py:39\nmsgid \"Phone numbers must have 9 digits, or start by + or 00.\"\nmsgstr \"Telefonnummer måste innehålla 9 siffror eller börja på + eller 00.\"\n\n#: ro/forms.py:22\nmsgid \"Enter a valid CIF.\"\nmsgstr \"Fyll i ett giltigt CIF.\"\n\n#: ro/forms.py:59\nmsgid \"Enter a valid CNP.\"\nmsgstr \"Fyll i ett giltigt CNP.\"\n\n#: ro/forms.py:143\nmsgid \"Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format\"\nmsgstr \"Fyll i ett giltigt IBAN med formatet ROXX-XXXX-XXXX-XXXX-XXXX-XXXX.\"\n\n#: ro/forms.py:175\nmsgid \"Phone numbers must be in XXXX-XXXXXX format.\"\nmsgstr \"Telefonnummer måste vara i formatet XXXX-XXXXXX.\"\n\n#: ro/forms.py:200\nmsgid \"Enter a valid postal code in the format XXXXXX\"\nmsgstr \"Fyll i ett postnummer med formatet XXX XXX.\"\n\n#: ru/forms.py:37\nmsgid \"Enter a postal code in the format XXXXXX.\"\nmsgstr \"Ange ett postnummer på formatet XXXXXX.\"\n\n#: ru/forms.py:50\nmsgid \"Enter a passport number in the format XXXX XXXXXX.\"\nmsgstr \"Ange ett passnummer på formatet XXXX XXXXXX.\"\n\n#: ru/forms.py:63\nmsgid \"Enter a passport number in the format XX XXXXXXX.\"\nmsgstr \"Ange ett passnummer på formatet XX XXXXXXX.\"\n\n#: ru/ru_regions.py:10\nmsgid \"Central Federal County\"\nmsgstr \"Tsentralnyj\"\n\n#: ru/ru_regions.py:11\nmsgid \"South Federal County\"\nmsgstr \"Juzjnyj\"\n\n#: ru/ru_regions.py:12\nmsgid \"North-West Federal County\"\nmsgstr \"Severo-Zapadnyj\"\n\n#: ru/ru_regions.py:13\nmsgid \"Far-East Federal County\"\nmsgstr \"Dalnevostotjnyj\"\n\n#: ru/ru_regions.py:14\nmsgid \"Siberian Federal County\"\nmsgstr \"Sibirskij\"\n\n#: ru/ru_regions.py:15\nmsgid \"Ural Federal County\"\nmsgstr \"Uralskij\"\n\n#: ru/ru_regions.py:16\nmsgid \"Privolzhsky Federal County\"\nmsgstr \"Privolzjskij\"\n\n#: ru/ru_regions.py:17\nmsgid \"North-Caucasian Federal County\"\nmsgstr \"Severo-Kavkazskij\"\n\n#: ru/ru_regions.py:21\nmsgid \"Moskva\"\nmsgstr \"Moskva\"\n\n#: ru/ru_regions.py:22\nmsgid \"Saint-Peterburg\"\nmsgstr \"Sankt Peterburg\"\n\n#: ru/ru_regions.py:23\nmsgid \"Moskovskaya oblast'\"\nmsgstr \"Moskva oblast\"\n\n#: ru/ru_regions.py:24\nmsgid \"Adygeya, Respublika\"\nmsgstr \"Adygeiska republiken\"\n\n#: ru/ru_regions.py:25\nmsgid \"Bashkortostan, Respublika\"\nmsgstr \"Republiken Basjkirien\"\n\n#: ru/ru_regions.py:26\nmsgid \"Buryatia, Respublika\"\nmsgstr \"Republiken Burjatien\"\n\n#: ru/ru_regions.py:27\nmsgid \"Altay, Respublika\"\nmsgstr \"Altajrepubliken\"\n\n#: ru/ru_regions.py:28\nmsgid \"Dagestan, Respublika\"\nmsgstr \"Dagestanrepubliken\"\n\n#: ru/ru_regions.py:29\nmsgid \"Ingushskaya Respublika\"\nmsgstr \"Ingushskaya\"\n\n#: ru/ru_regions.py:30\nmsgid \"Kabardino-Balkarskaya Respublika\"\nmsgstr \"Kabardinien-Balkarien\"\n\n#: ru/ru_regions.py:31\nmsgid \"Kalmykia, Respublika\"\nmsgstr \"Kalmuckien\"\n\n#: ru/ru_regions.py:32\nmsgid \"Karachaevo-Cherkesskaya Respublika\"\nmsgstr \"Karatjajen-Tjerkessien\"\n\n#: ru/ru_regions.py:33\nmsgid \"Karelia, Respublika\"\nmsgstr \"Karelska republiken\"\n\n#: ru/ru_regions.py:34\nmsgid \"Komi, Respublika\"\nmsgstr \"Komi\"\n\n#: ru/ru_regions.py:35\nmsgid \"Mariy Ehl, Respublika\"\nmsgstr \"Mari\"\n\n#: ru/ru_regions.py:36\nmsgid \"Mordovia, Respublika\"\nmsgstr \"Mordvinien\"\n\n#: ru/ru_regions.py:37\nmsgid \"Sakha, Respublika (Yakutiya)\"\nmsgstr \"Sacha\"\n\n#: ru/ru_regions.py:38\nmsgid \"Severnaya Osetia, Respublika (Alania)\"\nmsgstr \"Republiken Nordossetien-Alanien\"\n\n#: ru/ru_regions.py:39\nmsgid \"Tatarstan, Respublika\"\nmsgstr \"Tatarstan\"\n\n#: ru/ru_regions.py:40\nmsgid \"Tyva, Respublika (Tuva)\"\nmsgstr \"Tuva\"\n\n#: ru/ru_regions.py:41\nmsgid \"Udmurtskaya Respublika\"\nmsgstr \"Udmurtienr\"\n\n#: ru/ru_regions.py:42\nmsgid \"Khakassiya, Respublika\"\nmsgstr \"Chakassien\"\n\n#: ru/ru_regions.py:43\nmsgid \"Chechenskaya Respublika\"\nmsgstr \"Tjetjenien\"\n\n#: ru/ru_regions.py:44\nmsgid \"Chuvashskaya Respublika\"\nmsgstr \"Tjuvasjien\"\n\n#: ru/ru_regions.py:45\nmsgid \"Altayskiy Kray\"\nmsgstr \"Altaj kraj\"\n\n#: ru/ru_regions.py:46\nmsgid \"Zabaykalskiy Kray\"\nmsgstr \"Zabajkalskij kraj\"\n\n#: ru/ru_regions.py:47\nmsgid \"Kamchatskiy Kray\"\nmsgstr \"Kamtjatka kraj\"\n\n#: ru/ru_regions.py:48\nmsgid \"Krasnodarskiy Kray\"\nmsgstr \"Krasnodar kraj\"\n\n#: ru/ru_regions.py:49\nmsgid \"Krasnoyarskiy Kray\"\nmsgstr \"Krasnojarsk kraj\"\n\n#: ru/ru_regions.py:50\nmsgid \"Permskiy Kray\"\nmsgstr \"Perm kraj\"\n\n#: ru/ru_regions.py:51\nmsgid \"Primorskiy Kray\"\nmsgstr \"Primorje kraj\"\n\n#: ru/ru_regions.py:52\nmsgid \"Stavropol'siyy Kray\"\nmsgstr \"Stavropol kraj\"\n\n#: ru/ru_regions.py:53\nmsgid \"Khabarovskiy Kray\"\nmsgstr \"Chabarovsk kraj\"\n\n#: ru/ru_regions.py:54\nmsgid \"Amurskaya oblast'\"\nmsgstr \"Amur oblast\"\n\n#: ru/ru_regions.py:55\nmsgid \"Arkhangel'skaya oblast'\"\nmsgstr \"Archangelsk oblast\"\n\n#: ru/ru_regions.py:56\nmsgid \"Astrakhanskaya oblast'\"\nmsgstr \"Astrachan oblast\"\n\n#: ru/ru_regions.py:57\nmsgid \"Belgorodskaya oblast'\"\nmsgstr \"Belgorod oblast\"\n\n#: ru/ru_regions.py:58\nmsgid \"Bryanskaya oblast'\"\nmsgstr \"Brjansk oblast\"\n\n#: ru/ru_regions.py:59\nmsgid \"Vladimirskaya oblast'\"\nmsgstr \"Vladimir oblast\"\n\n#: ru/ru_regions.py:60\nmsgid \"Volgogradskaya oblast'\"\nmsgstr \"Volgograd oblast\"\n\n#: ru/ru_regions.py:61\nmsgid \"Vologodskaya oblast'\"\nmsgstr \"Vologda oblast\"\n\n#: ru/ru_regions.py:62\nmsgid \"Voronezhskaya oblast'\"\nmsgstr \"Voronezj oblast\"\n\n#: ru/ru_regions.py:63\nmsgid \"Ivanovskaya oblast'\"\nmsgstr \"Ivanovo oblast\"\n\n#: ru/ru_regions.py:64\nmsgid \"Irkutskaya oblast'\"\nmsgstr \"Irkutsk oblast\"\n\n#: ru/ru_regions.py:65\nmsgid \"Kaliningradskaya oblast'\"\nmsgstr \"Kaliningrad oblast\"\n\n#: ru/ru_regions.py:66\nmsgid \"Kaluzhskaya oblast'\"\nmsgstr \"Kaluga oblast\"\n\n#: ru/ru_regions.py:67\nmsgid \"Kemerovskaya oblast'\"\nmsgstr \"Kemerovo oblast\"\n\n#: ru/ru_regions.py:68\nmsgid \"Kirovskaya oblast'\"\nmsgstr \"Kirov oblast\"\n\n#: ru/ru_regions.py:69\nmsgid \"Kostromskaya oblast'\"\nmsgstr \"Kostroma oblast\"\n\n#: ru/ru_regions.py:70\nmsgid \"Kurganskaya oblast'\"\nmsgstr \"Kurgan oblast\"\n\n#: ru/ru_regions.py:71\nmsgid \"Kurskaya oblast'\"\nmsgstr \"Kursk oblast\"\n\n#: ru/ru_regions.py:72\nmsgid \"Leningradskaya oblast'\"\nmsgstr \"Leningrad oblast\"\n\n#: ru/ru_regions.py:73\nmsgid \"Lipeckaya oblast'\"\nmsgstr \"Lipetsk oblast\"\n\n#: ru/ru_regions.py:74\nmsgid \"Magadanskaya oblast'\"\nmsgstr \"Magadan oblast\"\n\n#: ru/ru_regions.py:75\nmsgid \"Murmanskaya oblast'\"\nmsgstr \"Murmansk oblast\"\n\n#: ru/ru_regions.py:76\nmsgid \"Nizhegorodskaja oblast'\"\nmsgstr \"Nizjnij Novgorod oblast\"\n\n#: ru/ru_regions.py:77\nmsgid \"Novgorodskaya oblast'\"\nmsgstr \"Novgorod oblast\"\n\n#: ru/ru_regions.py:78\nmsgid \"Novosibirskaya oblast'\"\nmsgstr \"Novosibirsk oblast\"\n\n#: ru/ru_regions.py:79\nmsgid \"Omskaya oblast'\"\nmsgstr \"Omsk oblast\"\n\n#: ru/ru_regions.py:80\nmsgid \"Orenburgskaya oblast'\"\nmsgstr \"Orenburg oblast\"\n\n#: ru/ru_regions.py:81\nmsgid \"Orlovskaya oblast'\"\nmsgstr \"Orjol oblast\"\n\n#: ru/ru_regions.py:82\nmsgid \"Penzenskaya oblast'\"\nmsgstr \"Penza oblast\"\n\n#: ru/ru_regions.py:83\nmsgid \"Pskovskaya oblast'\"\nmsgstr \"Pskov oblast\"\n\n#: ru/ru_regions.py:84\nmsgid \"Rostovskaya oblast'\"\nmsgstr \"Rostov oblast\"\n\n#: ru/ru_regions.py:85\nmsgid \"Rjazanskaya oblast'\"\nmsgstr \"Rjazan oblast\"\n\n#: ru/ru_regions.py:86\nmsgid \"Samarskaya oblast'\"\nmsgstr \"Samara oblast\"\n\n#: ru/ru_regions.py:87\nmsgid \"Saratovskaya oblast'\"\nmsgstr \"Saratov oblast\"\n\n#: ru/ru_regions.py:88\nmsgid \"Sakhalinskaya oblast'\"\nmsgstr \"Sachalin oblast\"\n\n#: ru/ru_regions.py:89\nmsgid \"Sverdlovskaya oblast'\"\nmsgstr \"Sverdlovsk oblast\"\n\n#: ru/ru_regions.py:90\nmsgid \"Smolenskaya oblast'\"\nmsgstr \"Smolensk oblast\"\n\n#: ru/ru_regions.py:91\nmsgid \"Tambovskaya oblast'\"\nmsgstr \"Tambov oblast\"\n\n#: ru/ru_regions.py:92\nmsgid \"Tverskaya oblast'\"\nmsgstr \"Tver oblast\"\n\n#: ru/ru_regions.py:93\nmsgid \"Tomskaya oblast'\"\nmsgstr \"Tomsk oblast\"\n\n#: ru/ru_regions.py:94\nmsgid \"Tul'skaya oblast'\"\nmsgstr \"Tula oblast\"\n\n#: ru/ru_regions.py:95\nmsgid \"Tyumenskaya oblast'\"\nmsgstr \"Tiumen oblast\"\n\n#: ru/ru_regions.py:96\nmsgid \"Ul'ianovskaya oblast'\"\nmsgstr \"Uljanovsk oblast\"\n\n#: ru/ru_regions.py:97\nmsgid \"Chelyabinskaya oblast'\"\nmsgstr \"Tjeljabinsk oblast\"\n\n#: ru/ru_regions.py:98\nmsgid \"Yaroslavskaya oblast'\"\nmsgstr \"Jaroslavl oblast\"\n\n#: ru/ru_regions.py:99\nmsgid \"Evreyskaya avtonomnaja oblast'\"\nmsgstr \"Judiska autonoma länet\"\n\n#: ru/ru_regions.py:100\nmsgid \"Neneckiy autonomnyy okrug\"\nmsgstr \"Nentsien\"\n\n#: ru/ru_regions.py:101\nmsgid \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\nmsgstr \"Chantien-Mansien\"\n\n#: ru/ru_regions.py:102\nmsgid \"Chukotskiy avtonomnyy okrug\"\nmsgstr \"Tjuktjien\"\n\n#: ru/ru_regions.py:103\nmsgid \"Yamalo-Neneckiy avtonomnyy okrug\"\nmsgstr \"Jamalo-Nentsien\"\n\n#: se/forms.py:54\nmsgid \"Enter a valid Swedish organisation number.\"\nmsgstr \"Ange ett giltigt svenskt organisationsnummer.\"\n\n#: se/forms.py:111\nmsgid \"Enter a valid Swedish personal identity number.\"\nmsgstr \"Ange ett giltigt svenskt personnummer.\"\n\n#: se/forms.py:112\nmsgid \"Co-ordination numbers are not allowed.\"\nmsgstr \"Koordinationsnummer är ej tillåtna.\"\n\n#: se/forms.py:154\nmsgid \"Enter a Swedish postal code in the format XXXXX.\"\nmsgstr \"Ange ett giltigt svenskt postnummer i formatet XXXXX.\"\n\n#: se/se_counties.py:16\nmsgid \"Stockholm\"\nmsgstr \"Stockholm\"\n\n#: se/se_counties.py:17\nmsgid \"Västerbotten\"\nmsgstr \"Västerbotten\"\n\n#: se/se_counties.py:18\nmsgid \"Norrbotten\"\nmsgstr \"Norrbotten\"\n\n#: se/se_counties.py:19\nmsgid \"Uppsala\"\nmsgstr \"Uppsala\"\n\n#: se/se_counties.py:20\nmsgid \"Södermanland\"\nmsgstr \"Södermanland\"\n\n#: se/se_counties.py:21\nmsgid \"Östergötland\"\nmsgstr \"Östergötland\"\n\n#: se/se_counties.py:22\nmsgid \"Jönköping\"\nmsgstr \"Jönköping\"\n\n#: se/se_counties.py:23\nmsgid \"Kronoberg\"\nmsgstr \"Kronoberg\"\n\n#: se/se_counties.py:24\nmsgid \"Kalmar\"\nmsgstr \"Kalmar\"\n\n#: se/se_counties.py:25\nmsgid \"Gotland\"\nmsgstr \"Gotland\"\n\n#: se/se_counties.py:26\nmsgid \"Blekinge\"\nmsgstr \"Blekinge\"\n\n#: se/se_counties.py:27\nmsgid \"Skåne\"\nmsgstr \"Skåne\"\n\n#: se/se_counties.py:28\nmsgid \"Halland\"\nmsgstr \"Halland\"\n\n#: se/se_counties.py:29\nmsgid \"Västra Götaland\"\nmsgstr \"Västra Götaland\"\n\n#: se/se_counties.py:30\nmsgid \"Värmland\"\nmsgstr \"Värmland\"\n\n#: se/se_counties.py:31\nmsgid \"Örebro\"\nmsgstr \"Örebro\"\n\n#: se/se_counties.py:32\nmsgid \"Västmanland\"\nmsgstr \"Västmanland\"\n\n#: se/se_counties.py:33\nmsgid \"Dalarna\"\nmsgstr \"Dalarna\"\n\n#: se/se_counties.py:34\nmsgid \"Gävleborg\"\nmsgstr \"Gävleborg\"\n\n#: se/se_counties.py:35\nmsgid \"Västernorrland\"\nmsgstr \"Västernorrland\"\n\n#: se/se_counties.py:36\nmsgid \"Jämtland\"\nmsgstr \"Jämtland\"\n\n#: si/forms.py:25\nmsgid \"The first 7 digits of the EMSO must represent a valid past date.\"\nmsgstr \"\"\n\"De första sju siffrorna av EMSO måste representera ett giltigt, passerat \"\n\"datum.\"\n\n#: si/forms.py:26\nmsgid \"The EMSO is not valid.\"\nmsgstr \"EMSO är inte giltig.\"\n\n#: si/forms.py:86\nmsgid \"Enter a valid tax number in form SIXXXXXXXX\"\nmsgstr \"Ange ett giltigt skattenummer på formatet SIXXXXXXXX.\"\n\n#: si/forms.py:151\nmsgid \"Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.\"\nmsgstr \"\"\n\"Ange ett giltigt telefonnummer på formatet +386XXXXXXXX eller 0XXXXXXXX.\"\n\n#: sk/sk_districts.py:8\nmsgid \"Banska Bystrica\"\nmsgstr \"Banska Bystrica\"\n\n#: sk/sk_districts.py:9\nmsgid \"Banska Stiavnica\"\nmsgstr \"Banska Stiavnica\"\n\n#: sk/sk_districts.py:10\nmsgid \"Bardejov\"\nmsgstr \"Bardejov\"\n\n#: sk/sk_districts.py:11\nmsgid \"Banovce nad Bebravou\"\nmsgstr \"Banovce nad Bebravou\"\n\n#: sk/sk_districts.py:12\nmsgid \"Brezno\"\nmsgstr \"Brezno\"\n\n#: sk/sk_districts.py:13\nmsgid \"Bratislava I\"\nmsgstr \"Bratislava I\"\n\n#: sk/sk_districts.py:14\nmsgid \"Bratislava II\"\nmsgstr \"Bratislava II\"\n\n#: sk/sk_districts.py:15\nmsgid \"Bratislava III\"\nmsgstr \"Bratislava III\"\n\n#: sk/sk_districts.py:16\nmsgid \"Bratislava IV\"\nmsgstr \"Bratislava IV\"\n\n#: sk/sk_districts.py:17\nmsgid \"Bratislava V\"\nmsgstr \"Bratislava V\"\n\n#: sk/sk_districts.py:18\nmsgid \"Bytca\"\nmsgstr \"Bytca\"\n\n#: sk/sk_districts.py:19\nmsgid \"Cadca\"\nmsgstr \"Cadca\"\n\n#: sk/sk_districts.py:20\nmsgid \"Detva\"\nmsgstr \"Detva\"\n\n#: sk/sk_districts.py:21\nmsgid \"Dolny Kubin\"\nmsgstr \"Dolny Kubin\"\n\n#: sk/sk_districts.py:22\nmsgid \"Dunajska Streda\"\nmsgstr \"Dunajska Streda\"\n\n#: sk/sk_districts.py:23\nmsgid \"Galanta\"\nmsgstr \"Galanta\"\n\n#: sk/sk_districts.py:24\nmsgid \"Gelnica\"\nmsgstr \"Gelnica\"\n\n#: sk/sk_districts.py:25\nmsgid \"Hlohovec\"\nmsgstr \"Hlohovec\"\n\n#: sk/sk_districts.py:26\nmsgid \"Humenne\"\nmsgstr \"Humenne\"\n\n#: sk/sk_districts.py:27\nmsgid \"Ilava\"\nmsgstr \"Ilava\"\n\n#: sk/sk_districts.py:28\nmsgid \"Kezmarok\"\nmsgstr \"Kezmarok\"\n\n#: sk/sk_districts.py:29\nmsgid \"Komarno\"\nmsgstr \"Komarno\"\n\n#: sk/sk_districts.py:30\nmsgid \"Kosice I\"\nmsgstr \"Kosice I\"\n\n#: sk/sk_districts.py:31\nmsgid \"Kosice II\"\nmsgstr \"Kosice II\"\n\n#: sk/sk_districts.py:32\nmsgid \"Kosice III\"\nmsgstr \"Kosice III\"\n\n#: sk/sk_districts.py:33\nmsgid \"Kosice IV\"\nmsgstr \"Kosice IV\"\n\n#: sk/sk_districts.py:34\nmsgid \"Kosice - okolie\"\nmsgstr \"Kosice - okolie\"\n\n#: sk/sk_districts.py:35\nmsgid \"Krupina\"\nmsgstr \"Krupina\"\n\n#: sk/sk_districts.py:36\nmsgid \"Kysucke Nove Mesto\"\nmsgstr \"Kysucke Nove Mesto\"\n\n#: sk/sk_districts.py:37\nmsgid \"Levice\"\nmsgstr \"Levice\"\n\n#: sk/sk_districts.py:38\nmsgid \"Levoca\"\nmsgstr \"Levoca\"\n\n#: sk/sk_districts.py:39\nmsgid \"Liptovsky Mikulas\"\nmsgstr \"Liptovsky Mikulas\"\n\n#: sk/sk_districts.py:40\nmsgid \"Lucenec\"\nmsgstr \"Lucenec\"\n\n#: sk/sk_districts.py:41\nmsgid \"Malacky\"\nmsgstr \"Malacky\"\n\n#: sk/sk_districts.py:42\nmsgid \"Martin\"\nmsgstr \"Martin\"\n\n#: sk/sk_districts.py:43\nmsgid \"Medzilaborce\"\nmsgstr \"Medzilaborce\"\n\n#: sk/sk_districts.py:44\nmsgid \"Michalovce\"\nmsgstr \"Michalovce\"\n\n#: sk/sk_districts.py:45\nmsgid \"Myjava\"\nmsgstr \"Myjava\"\n\n#: sk/sk_districts.py:46\nmsgid \"Namestovo\"\nmsgstr \"Namestovo\"\n\n#: sk/sk_districts.py:47\nmsgid \"Nitra\"\nmsgstr \"Nitra\"\n\n#: sk/sk_districts.py:48\nmsgid \"Nove Mesto nad Vahom\"\nmsgstr \"Nove Mesto nad Vahom\"\n\n#: sk/sk_districts.py:49\nmsgid \"Nove Zamky\"\nmsgstr \"Nove Zamky\"\n\n#: sk/sk_districts.py:50\nmsgid \"Partizanske\"\nmsgstr \"Partizanske\"\n\n#: sk/sk_districts.py:51\nmsgid \"Pezinok\"\nmsgstr \"Pezinok\"\n\n#: sk/sk_districts.py:52\nmsgid \"Piestany\"\nmsgstr \"Piestany\"\n\n#: sk/sk_districts.py:53\nmsgid \"Poltar\"\nmsgstr \"Poltar\"\n\n#: sk/sk_districts.py:54\nmsgid \"Poprad\"\nmsgstr \"Poprad\"\n\n#: sk/sk_districts.py:55\nmsgid \"Povazska Bystrica\"\nmsgstr \"Povazska Bystrica\"\n\n#: sk/sk_districts.py:56\nmsgid \"Presov\"\nmsgstr \"Presov\"\n\n#: sk/sk_districts.py:57\nmsgid \"Prievidza\"\nmsgstr \"Prievidza\"\n\n#: sk/sk_districts.py:58\nmsgid \"Puchov\"\nmsgstr \"Puchov\"\n\n#: sk/sk_districts.py:59\nmsgid \"Revuca\"\nmsgstr \"Revuca\"\n\n#: sk/sk_districts.py:60\nmsgid \"Rimavska Sobota\"\nmsgstr \"Rimavska Sobota\"\n\n#: sk/sk_districts.py:61\nmsgid \"Roznava\"\nmsgstr \"Roznava\"\n\n#: sk/sk_districts.py:62\nmsgid \"Ruzomberok\"\nmsgstr \"Ruzomberok\"\n\n#: sk/sk_districts.py:63\nmsgid \"Sabinov\"\nmsgstr \"Sabinov\"\n\n#: sk/sk_districts.py:64\nmsgid \"Senec\"\nmsgstr \"Senec\"\n\n#: sk/sk_districts.py:65\nmsgid \"Senica\"\nmsgstr \"Senica\"\n\n#: sk/sk_districts.py:66\nmsgid \"Skalica\"\nmsgstr \"Skalica\"\n\n#: sk/sk_districts.py:67\nmsgid \"Snina\"\nmsgstr \"Snina\"\n\n#: sk/sk_districts.py:68\nmsgid \"Sobrance\"\nmsgstr \"Sobrance\"\n\n#: sk/sk_districts.py:69\nmsgid \"Spisska Nova Ves\"\nmsgstr \"Spisska Nova Ves\"\n\n#: sk/sk_districts.py:70\nmsgid \"Stara Lubovna\"\nmsgstr \"Stara Lubovna\"\n\n#: sk/sk_districts.py:71\nmsgid \"Stropkov\"\nmsgstr \"Stropkov\"\n\n#: sk/sk_districts.py:72\nmsgid \"Svidnik\"\nmsgstr \"Svidnik\"\n\n#: sk/sk_districts.py:73\nmsgid \"Sala\"\nmsgstr \"Sala\"\n\n#: sk/sk_districts.py:74\nmsgid \"Topolcany\"\nmsgstr \"Topolcany\"\n\n#: sk/sk_districts.py:75\nmsgid \"Trebisov\"\nmsgstr \"Trebisov\"\n\n#: sk/sk_districts.py:76\nmsgid \"Trencin\"\nmsgstr \"Trencin\"\n\n#: sk/sk_districts.py:77\nmsgid \"Trnava\"\nmsgstr \"Trnava\"\n\n#: sk/sk_districts.py:78\nmsgid \"Turcianske Teplice\"\nmsgstr \"Turcianske Teplice\"\n\n#: sk/sk_districts.py:79\nmsgid \"Tvrdosin\"\nmsgstr \"Tvrdosin\"\n\n#: sk/sk_districts.py:80\nmsgid \"Velky Krtis\"\nmsgstr \"Velky Krtis\"\n\n#: sk/sk_districts.py:81\nmsgid \"Vranov nad Toplou\"\nmsgstr \"Vranov nad Toplou\"\n\n#: sk/sk_districts.py:82\nmsgid \"Zlate Moravce\"\nmsgstr \"Zlate Moravce\"\n\n#: sk/sk_districts.py:83\nmsgid \"Zvolen\"\nmsgstr \"Zvolen\"\n\n#: sk/sk_districts.py:84\nmsgid \"Zarnovica\"\nmsgstr \"Zarnovica\"\n\n#: sk/sk_districts.py:85\nmsgid \"Ziar nad Hronom\"\nmsgstr \"Ziar nad Hronom\"\n\n#: sk/sk_districts.py:86\nmsgid \"Zilina\"\nmsgstr \"Zilina\"\n\n#: sk/sk_regions.py:8\nmsgid \"Banska Bystrica region\"\nmsgstr \"Banska Bystrica-regionen\"\n\n#: sk/sk_regions.py:9\nmsgid \"Bratislava region\"\nmsgstr \"Bratislava-regionen\"\n\n#: sk/sk_regions.py:10\nmsgid \"Kosice region\"\nmsgstr \"Kosice-regionen\"\n\n#: sk/sk_regions.py:11\nmsgid \"Nitra region\"\nmsgstr \"Nitra-regionen\"\n\n#: sk/sk_regions.py:12\nmsgid \"Presov region\"\nmsgstr \"Presov-regionen\"\n\n#: sk/sk_regions.py:13\nmsgid \"Trencin region\"\nmsgstr \"Trencin-regionen\"\n\n#: sk/sk_regions.py:14\nmsgid \"Trnava region\"\nmsgstr \"Trnava-regionen\"\n\n#: sk/sk_regions.py:15\nmsgid \"Zilina region\"\nmsgstr \"Zilina-regionen\"\n\n#: tr/forms.py:21\nmsgid \"Enter a postal code in the format XXXXX.\"\nmsgstr \"Ange ett postnummer i formatet XXXXX.\"\n\n#: tr/forms.py:42\nmsgid \"Phone numbers must be in 0XXX XXX XXXX format.\"\nmsgstr \"Telefonnummer måste anges i formatet 0XXX XXX XXXX.\"\n\n#: tr/forms.py:69\nmsgid \"Enter a valid Turkish Identification number.\"\nmsgstr \"Ange ett giltigt turkiskt personnummer.\"\n\n#: tr/forms.py:70\nmsgid \"Turkish Identification number must be 11 digits.\"\nmsgstr \"Turkiska personnummer måste vara 11 siffror.\"\n\n#: us/forms.py:21\nmsgid \"Enter a zip code in the format XXXXX or XXXXX-XXXX.\"\nmsgstr \"Fyll i ett postnummer med formatet XXXXX eller XXXXX-XXXX.\"\n\n#: us/forms.py:59\nmsgid \"Enter a valid U.S. Social Security number in XXX-XX-XXXX format.\"\nmsgstr \"Fyll i ett giltigt amerikanskt personnummer i formatet XXX-XX-XXXX.\"\n\n#: us/forms.py:92\nmsgid \"Enter a U.S. state or territory.\"\nmsgstr \"Ange en amerikansk delstat eller territorium.\"\n\n#: us/models.py:8\nmsgid \"U.S. state (two uppercase letters)\"\nmsgstr \"Delstat i USA (två versaler)\"\n\n#: us/models.py:17\nmsgid \"U.S. postal code (two uppercase letters)\"\nmsgstr \"U.S.A. postnummer (två versaler)\"\n\n#: us/models.py:26\nmsgid \"Phone number\"\nmsgstr \"Telefonnummer\"\n\n#: uy/forms.py:29\nmsgid \"Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.\"\nmsgstr \"\"\n\"Ange ett giltigt CI-nummer i formatet X.XXX.XXX-X,XXXXXXX-X eller XXXXXXXX.\"\n\n#: uy/forms.py:31\nmsgid \"Enter a valid CI number.\"\nmsgstr \"Ange ett giltigt CI-nummer.\"\n\n#: za/forms.py:22\nmsgid \"Enter a valid South African ID number\"\nmsgstr \"Fyll i ett giltigt Sydafrikanskt ID-nummer.\"\n\n#: za/forms.py:56\nmsgid \"Enter a valid South African postal code\"\nmsgstr \"Fyll i ett giltigt Afrikanskt postnummer.\"\n\n#: za/za_provinces.py:4\nmsgid \"Eastern Cape\"\nmsgstr \"Eastern Cape\"\n\n#: za/za_provinces.py:5\nmsgid \"Free State\"\nmsgstr \"Free State\"\n\n#: za/za_provinces.py:6\nmsgid \"Gauteng\"\nmsgstr \"Gauteng\"\n\n#: za/za_provinces.py:7\nmsgid \"KwaZulu-Natal\"\nmsgstr \"KwaZulu-Natal\"\n\n#: za/za_provinces.py:8\nmsgid \"Limpopo\"\nmsgstr \"Limpopo\"\n\n#: za/za_provinces.py:9\nmsgid \"Mpumalanga\"\nmsgstr \"Mpumalanga\"\n\n#: za/za_provinces.py:10\nmsgid \"Northern Cape\"\nmsgstr \"Northern Cape\"\n\n#: za/za_provinces.py:11\nmsgid \"North West\"\nmsgstr \"North West\"\n\n#: za/za_provinces.py:12\nmsgid \"Western Cape\"\nmsgstr \"Western Cape\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/locale/sw/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# machaku  <bmachaku@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-11-18 17:32+0000\\n\"\n\"Last-Translator: machaku <bmachaku@gmail.com>\\n\"\n\"Language-Team: Swahili (http://www.transifex.com/projects/p/django/language/\"\n\"sw/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sw\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: ar/forms.py:30\nmsgid \"Enter a postal code in the format NNNN or ANNNNAAA.\"\nmsgstr \"Ingiza msimbo wa posta katika muundo wa NNNN au ANNNNAAA\"\n\n#: ar/forms.py:52 br/forms.py:95 br/forms.py:134 pe/forms.py:27 pe/forms.py:55\nmsgid \"This field requires only numbers.\"\nmsgstr \"Uga huu unahitaji namba tu.\"\n\n#: ar/forms.py:53\nmsgid \"This field requires 7 or 8 digits.\"\nmsgstr \"Uga huu unahitaji tarakimu 7 au 8\"\n\n#: ar/forms.py:82\nmsgid \"Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.\"\nmsgstr \"Ingiza 'CUIT' halali katika mfumo wa XX-XXXXXXXX au XXXXXXXXXXXX\"\n\n#: ar/forms.py:83\nmsgid \"Invalid CUIT.\"\nmsgstr \"'CUIT' batili\"\n\n#: ar/forms.py:84\nmsgid \"Invalid legal type. Type must be 27, 20, 23 or 30.\"\nmsgstr \"\"\n\n#: at/at_states.py:5\nmsgid \"Burgenland\"\nmsgstr \"Burgenland\"\n\n#: at/at_states.py:6\nmsgid \"Carinthia\"\nmsgstr \"Carinthia\"\n\n#: at/at_states.py:7\nmsgid \"Lower Austria\"\nmsgstr \"Austria ya chini\"\n\n#: at/at_states.py:8\nmsgid \"Upper Austria\"\nmsgstr \"Austria ya juu\"\n\n#: at/at_states.py:9\nmsgid \"Salzburg\"\nmsgstr \"Salzburg\"\n\n#: at/at_states.py:10\nmsgid \"Styria\"\nmsgstr \"Styria\"\n\n#: at/at_states.py:11\nmsgid \"Tyrol\"\nmsgstr \"Tyrol\"\n\n#: at/at_states.py:12\nmsgid \"Vorarlberg\"\nmsgstr \"Vorarlberg\"\n\n#: at/at_states.py:13\nmsgid \"Vienna\"\nmsgstr \"Vienna\"\n\n#: at/forms.py:22 ch/forms.py:22 no/forms.py:19\nmsgid \"Enter a zip code in the format XXXX.\"\nmsgstr \"Ingiza 'zip code' katika muundo wa XXXX\"\n\n#: at/forms.py:50\nmsgid \"Enter a valid Austrian Social Security Number in XXXX XXXXXX format.\"\nmsgstr \"Ingiza namba halali ya Usalama wa Jamii katika mfumo wa XXXX XXXXXX.\"\n\n#: au/forms.py:26\nmsgid \"Enter a 4 digit postcode.\"\nmsgstr \"Ingiza tarakimu 4 za sanduku la posta\"\n\n#: au/models.py:9\nmsgid \"Australian State\"\nmsgstr \"Jimbo la Kiaustralia\"\n\n#: au/models.py:19\nmsgid \"Australian Postcode\"\nmsgstr \"Sanduku la posta la Kiastralia\"\n\n#: au/models.py:33\nmsgid \"Australian Phone number\"\nmsgstr \"Namba ya simu ya kiaustralia\"\n\n#: be/be_provinces.py:5\nmsgid \"Antwerp\"\nmsgstr \"Antwerp\"\n\n#: be/be_provinces.py:6\nmsgid \"Brussels\"\nmsgstr \"Brussels\"\n\n#: be/be_provinces.py:7\nmsgid \"East Flanders\"\nmsgstr \"Flanders Mashariki\"\n\n#: be/be_provinces.py:8\nmsgid \"Flemish Brabant\"\nmsgstr \"Flemish Brabant\"\n\n#: be/be_provinces.py:9\nmsgid \"Hainaut\"\nmsgstr \"Hainaut\"\n\n#: be/be_provinces.py:10\nmsgid \"Liege\"\nmsgstr \"Liege\"\n\n#: be/be_provinces.py:11 nl/nl_provinces.py:9\nmsgid \"Limburg\"\nmsgstr \"Limburg\"\n\n#: be/be_provinces.py:12\nmsgid \"Luxembourg\"\nmsgstr \"Luxembourg\"\n\n#: be/be_provinces.py:13\nmsgid \"Namur\"\nmsgstr \"Namur\"\n\n#: be/be_provinces.py:14\nmsgid \"Walloon Brabant\"\nmsgstr \"Walloon Brabant\"\n\n#: be/be_provinces.py:15\nmsgid \"West Flanders\"\nmsgstr \"Flanders Magharibi\"\n\n#: be/be_regions.py:5\nmsgid \"Brussels Capital Region\"\nmsgstr \"Mkoa mkuu wa Brussels\"\n\n#: be/be_regions.py:6\nmsgid \"Flemish Region\"\nmsgstr \"Mkoa wa Flemish\"\n\n#: be/be_regions.py:7\nmsgid \"Wallonia\"\nmsgstr \"Wallonia\"\n\n#: be/forms.py:25\nmsgid \"Enter a valid postal code in the range and format 1XXX - 9XXX.\"\nmsgstr \"Ingiza msimbo wa posta halali katika muundo na kuanzia 1XXX - 9XXX.\"\n\n#: be/forms.py:48\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\nmsgstr \"\"\n\"Ingiza namba za simu kwa kutumia moja kati ya miundo 0x xxx xx xx, 0xx xx xx \"\n\"xx, 04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, \"\n\"0xx.xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\n\n#: br/forms.py:22\nmsgid \"Enter a zip code in the format XXXXX-XXX.\"\nmsgstr \"Ingiza msimbo wa eneo katika muundo wa XXXXX-XXX.\"\n\n#: br/forms.py:31\nmsgid \"Phone numbers must be in XX-XXXX-XXXX format.\"\nmsgstr \"Namba za simu ni lazima ziwe katika muundo wa XX-XXXX-XXXX.\"\n\n#: br/forms.py:58\nmsgid \"\"\n\"Select a valid brazilian state. That state is not one of the available \"\n\"states.\"\nmsgstr \"Chagua jimbo halali la Brazil. Jimbo hilo si kati ya majimbo yaliyomo.\"\n\n#: br/forms.py:93\nmsgid \"Invalid CPF number.\"\nmsgstr \"Namba batili ya CPF.\"\n\n#: br/forms.py:94\nmsgid \"This field requires at most 11 digits or 14 characters.\"\nmsgstr \"Uga huu unahitaji tarakimu zisizozidi 11 au vibambo 14.\"\n\n#: br/forms.py:133\nmsgid \"Invalid CNPJ number.\"\nmsgstr \"Namba ya batili ya CNPJ.\"\n\n#: br/forms.py:135\nmsgid \"This field requires at least 14 digits\"\nmsgstr \"Uga huu unahitaji angalau tarakimu 14\"\n\n#: ca/forms.py:29\nmsgid \"Enter a postal code in the format XXX XXX.\"\nmsgstr \"ingiza sanduku la posta katika muundo wa XXX XXX.\"\n\n#: ca/forms.py:47 us/forms.py:30\nmsgid \"Phone numbers must be in XXX-XXX-XXXX format.\"\nmsgstr \"\"\n\n#: ca/forms.py:69\nmsgid \"Enter a Canadian province or territory.\"\nmsgstr \"\"\n\n#: ca/forms.py:110\nmsgid \"Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.\"\nmsgstr \"\"\n\"Ingiza namba halali ya Bima ya Jamii ya Canada katika muundo wa XXX-XXX-XXX.\"\n\n#: ch/ch_states.py:5\nmsgid \"Aargau\"\nmsgstr \"Aargau\"\n\n#: ch/ch_states.py:6\nmsgid \"Appenzell Innerrhoden\"\nmsgstr \"Appenzell Innerrhoden\"\n\n#: ch/ch_states.py:7\nmsgid \"Appenzell Ausserrhoden\"\nmsgstr \"Appenzell Ausserrhoden\"\n\n#: ch/ch_states.py:8\nmsgid \"Basel-Stadt\"\nmsgstr \"Basel-Stadt\"\n\n#: ch/ch_states.py:9\nmsgid \"Basel-Land\"\nmsgstr \"Basel-Land\"\n\n#: ch/ch_states.py:10\nmsgid \"Berne\"\nmsgstr \"Berne\"\n\n#: ch/ch_states.py:11\nmsgid \"Fribourg\"\nmsgstr \"Fribourg\"\n\n#: ch/ch_states.py:12\nmsgid \"Geneva\"\nmsgstr \"Geneva\"\n\n#: ch/ch_states.py:13\nmsgid \"Glarus\"\nmsgstr \"Glarus\"\n\n#: ch/ch_states.py:14\nmsgid \"Graubuenden\"\nmsgstr \"Graubuenden\"\n\n#: ch/ch_states.py:15\nmsgid \"Jura\"\nmsgstr \"Jura\"\n\n#: ch/ch_states.py:16\nmsgid \"Lucerne\"\nmsgstr \"Lucerne\"\n\n#: ch/ch_states.py:17\nmsgid \"Neuchatel\"\nmsgstr \"Neuchatel\"\n\n#: ch/ch_states.py:18\nmsgid \"Nidwalden\"\nmsgstr \"Nidwalden\"\n\n#: ch/ch_states.py:19\nmsgid \"Obwalden\"\nmsgstr \"Obwalden\"\n\n#: ch/ch_states.py:20\nmsgid \"Schaffhausen\"\nmsgstr \"Schaffhausen\"\n\n#: ch/ch_states.py:21\nmsgid \"Schwyz\"\nmsgstr \"Schwyz\"\n\n#: ch/ch_states.py:22\nmsgid \"Solothurn\"\nmsgstr \"Solothurn\"\n\n#: ch/ch_states.py:23\nmsgid \"St. Gallen\"\nmsgstr \"St. Gallen\"\n\n#: ch/ch_states.py:24\nmsgid \"Thurgau\"\nmsgstr \"Thurgau\"\n\n#: ch/ch_states.py:25\nmsgid \"Ticino\"\nmsgstr \"Ticino\"\n\n#: ch/ch_states.py:26\nmsgid \"Uri\"\nmsgstr \"Uri\"\n\n#: ch/ch_states.py:27\nmsgid \"Valais\"\nmsgstr \"Valais\"\n\n#: ch/ch_states.py:28\nmsgid \"Vaud\"\nmsgstr \"Vaud\"\n\n#: ch/ch_states.py:29\nmsgid \"Zug\"\nmsgstr \"Zug\"\n\n#: ch/ch_states.py:30\nmsgid \"Zurich\"\nmsgstr \"Zurich\"\n\n#: ch/forms.py:37\nmsgid \"Phone numbers must be in 0XX XXX XX XX format.\"\nmsgstr \"\"\n\n#: ch/forms.py:68\nmsgid \"\"\n\"Enter a valid Swiss identity or passport card number in X1234567<0 or \"\n\"1234567890 format.\"\nmsgstr \"\"\n\"Ingiza namba halali ya kitambulisho au pasi ya Kiswizi  X1234567<0 or \"\n\"1234567890 format.\"\n\n#: cl/forms.py:32\nmsgid \"Enter a valid Chilean RUT.\"\nmsgstr \"Ingiza RUT halali ya Kichile.\"\n\n#: cl/forms.py:33\nmsgid \"Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.\"\nmsgstr \"Ingiza RUT halali ya Kichile. Muundo ni XX.XXX.XXX-X.\"\n\n#: cl/forms.py:34\nmsgid \"The Chilean RUT is not valid.\"\nmsgstr \"RUT ya Kichile si halali.\"\n\n#: cn/forms.py:84\nmsgid \"Enter a post code in the format XXXXXX.\"\nmsgstr \"Ingiza msimbo wa posta katika muundo wa XXXXXX.\"\n\n#: cn/forms.py:105\nmsgid \"ID Card Number consists of 15 or 18 digits.\"\nmsgstr \"Namba ya kitambulisho inajumuisha tarakimu 15 au 18\"\n\n#: cn/forms.py:106\nmsgid \"Invalid ID Card Number: Wrong checksum\"\nmsgstr \"Namba batili ya kitambulisho: 'checksum' batili\"\n\n#: cn/forms.py:107\nmsgid \"Invalid ID Card Number: Wrong birthdate\"\nmsgstr \"Namba batili ya kitambulisho: siku ya batili kuzaliwa\"\n\n#: cn/forms.py:108\nmsgid \"Invalid ID Card Number: Wrong location code\"\nmsgstr \"Namba batili ya kitambulisho: msimbo wa eneo ni batili\"\n\n#: cn/forms.py:193\nmsgid \"Enter a valid phone number.\"\nmsgstr \"Ingiza namba ya simu halali.\"\n\n#: cn/forms.py:210\nmsgid \"Enter a valid cell number.\"\nmsgstr \"Ingiza namba simu ya mkononi halali.\"\n\n#: cz/cz_regions.py:8\nmsgid \"Prague\"\nmsgstr \"Prague\"\n\n#: cz/cz_regions.py:9\nmsgid \"Central Bohemian Region\"\nmsgstr \"Mkoa wa Bohemian ya Kati\"\n\n#: cz/cz_regions.py:10\nmsgid \"South Bohemian Region\"\nmsgstr \"Mkoa wa Bohemian Kusini\"\n\n#: cz/cz_regions.py:11\nmsgid \"Pilsen Region\"\nmsgstr \"Mkoa wa Pilsen\"\n\n#: cz/cz_regions.py:12\nmsgid \"Carlsbad Region\"\nmsgstr \"Mkoa wa Carlsbad\"\n\n#: cz/cz_regions.py:13\nmsgid \"Usti Region\"\nmsgstr \"Mkoa wa Usti\"\n\n#: cz/cz_regions.py:14\nmsgid \"Liberec Region\"\nmsgstr \"Mkoa wa Liberec\"\n\n#: cz/cz_regions.py:15\nmsgid \"Hradec Region\"\nmsgstr \"Mkoa wa Hradec\"\n\n#: cz/cz_regions.py:16\nmsgid \"Pardubice Region\"\nmsgstr \"Mkoa wa Pardubice\"\n\n#: cz/cz_regions.py:17\nmsgid \"Vysocina Region\"\nmsgstr \"Mkoa wa Vysocina\"\n\n#: cz/cz_regions.py:18\nmsgid \"South Moravian Region\"\nmsgstr \"Mkoa wa Moravian Kusini\"\n\n#: cz/cz_regions.py:19\nmsgid \"Olomouc Region\"\nmsgstr \"Mkoa wa Olomouc\"\n\n#: cz/cz_regions.py:20\nmsgid \"Zlin Region\"\nmsgstr \"Mkoa wa Zlin\"\n\n#: cz/cz_regions.py:21\nmsgid \"Moravian-Silesian Region\"\nmsgstr \"Mkoa wa Moravian-Silesian\"\n\n#: cz/forms.py:32 sk/forms.py:33\nmsgid \"Enter a postal code in the format XXXXX or XXX XX.\"\nmsgstr \"Ingiza msimbo wa posta katika mfumo wa XXXXX au XXX XX\"\n\n#: cz/forms.py:52\nmsgid \"Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.\"\nmsgstr \"Ingiza namba ya kuzaliwa katika muundo wa XXXXXX/XXXX au XXXXXXXXXX.\"\n\n#: cz/forms.py:53\nmsgid \"Enter a valid birth number.\"\nmsgstr \"Ingiza namba halali ya kuzakiwa.\"\n\n#: cz/forms.py:102\nmsgid \"Enter a valid IC number.\"\nmsgstr \"Ingiza namba halali ya IC.\"\n\n#: de/de_states.py:5\nmsgid \"Baden-Wuerttemberg\"\nmsgstr \"Baden-Wuerttemberg\"\n\n#: de/de_states.py:6\nmsgid \"Bavaria\"\nmsgstr \"Bavaria\"\n\n#: de/de_states.py:7\nmsgid \"Berlin\"\nmsgstr \"Berlin\"\n\n#: de/de_states.py:8\nmsgid \"Brandenburg\"\nmsgstr \"Brandenburg\"\n\n#: de/de_states.py:9\nmsgid \"Bremen\"\nmsgstr \"Bremen\"\n\n#: de/de_states.py:10\nmsgid \"Hamburg\"\nmsgstr \"Hamburg\"\n\n#: de/de_states.py:11\nmsgid \"Hessen\"\nmsgstr \"Hessen\"\n\n#: de/de_states.py:12\nmsgid \"Mecklenburg-Western Pomerania\"\nmsgstr \"Mecklenburg-Western Pomerania\"\n\n#: de/de_states.py:13\nmsgid \"Lower Saxony\"\nmsgstr \"Saxony ya Chini\"\n\n#: de/de_states.py:14\nmsgid \"North Rhine-Westphalia\"\nmsgstr \"Rhine-Westphalia Kaskazini\"\n\n#: de/de_states.py:15\nmsgid \"Rhineland-Palatinate\"\nmsgstr \"Rhineland-Palatinate\"\n\n#: de/de_states.py:16\nmsgid \"Saarland\"\nmsgstr \"Saarland\"\n\n#: de/de_states.py:17\nmsgid \"Saxony\"\nmsgstr \"Saxony\"\n\n#: de/de_states.py:18\nmsgid \"Saxony-Anhalt\"\nmsgstr \"Saxony-Anhalt\"\n\n#: de/de_states.py:19\nmsgid \"Schleswig-Holstein\"\nmsgstr \"Schleswig-Holstein\"\n\n#: de/de_states.py:20\nmsgid \"Thuringia\"\nmsgstr \"Thuringia\"\n\n#: de/forms.py:20 fi/forms.py:18 fr/forms.py:20\nmsgid \"Enter a zip code in the format XXXXX.\"\nmsgstr \"Ingiza msimbo eneo katika mfumo wa XXXXX.\"\n\n#: de/forms.py:46\nmsgid \"\"\n\"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"format.\"\nmsgstr \"\"\n\"Ingiza namba halali ya kitambulisho cha Kijerumani katika muundo wa \"\n\"XXXXXXXXXXX-XXXXXXX-XXXXXXX-X.\"\n\n#: es/es_provinces.py:5\nmsgid \"Araba\"\nmsgstr \"\"\n\n#: es/es_provinces.py:6\nmsgid \"Albacete\"\nmsgstr \"Albacete\"\n\n#: es/es_provinces.py:7\nmsgid \"Alacant\"\nmsgstr \"Alacant\"\n\n#: es/es_provinces.py:8\nmsgid \"Almeria\"\nmsgstr \"Almeria\"\n\n#: es/es_provinces.py:9\nmsgid \"Avila\"\nmsgstr \"Avila\"\n\n#: es/es_provinces.py:10\nmsgid \"Badajoz\"\nmsgstr \"Badajoz\"\n\n#: es/es_provinces.py:11\nmsgid \"Illes Balears\"\nmsgstr \"Illes Balears\"\n\n#: es/es_provinces.py:12\nmsgid \"Barcelona\"\nmsgstr \"Barcelona\"\n\n#: es/es_provinces.py:13\nmsgid \"Burgos\"\nmsgstr \"Burgos\"\n\n#: es/es_provinces.py:14\nmsgid \"Caceres\"\nmsgstr \"Caceres\"\n\n#: es/es_provinces.py:15\nmsgid \"Cadiz\"\nmsgstr \"Cadiz\"\n\n#: es/es_provinces.py:16\nmsgid \"Castello\"\nmsgstr \"Castello\"\n\n#: es/es_provinces.py:17\nmsgid \"Ciudad Real\"\nmsgstr \"Ciudad Real\"\n\n#: es/es_provinces.py:18\nmsgid \"Cordoba\"\nmsgstr \"Cordoba\"\n\n#: es/es_provinces.py:19\nmsgid \"A Coruna\"\nmsgstr \"A Coruna\"\n\n#: es/es_provinces.py:20\nmsgid \"Cuenca\"\nmsgstr \"Cuenca\"\n\n#: es/es_provinces.py:21\nmsgid \"Girona\"\nmsgstr \"Girona\"\n\n#: es/es_provinces.py:22\nmsgid \"Granada\"\nmsgstr \"Granada\"\n\n#: es/es_provinces.py:23\nmsgid \"Guadalajara\"\nmsgstr \"Guadalajara\"\n\n#: es/es_provinces.py:24\nmsgid \"Guipuzkoa\"\nmsgstr \"Guadalajara\"\n\n#: es/es_provinces.py:25\nmsgid \"Huelva\"\nmsgstr \"Huelva\"\n\n#: es/es_provinces.py:26\nmsgid \"Huesca\"\nmsgstr \"Huesca\"\n\n#: es/es_provinces.py:27\nmsgid \"Jaen\"\nmsgstr \"Jaen\"\n\n#: es/es_provinces.py:28\nmsgid \"Leon\"\nmsgstr \"Leon\"\n\n#: es/es_provinces.py:29\nmsgid \"Lleida\"\nmsgstr \"Lleida\"\n\n#: es/es_provinces.py:30 es/es_regions.py:17\nmsgid \"La Rioja\"\nmsgstr \"La Rioja\"\n\n#: es/es_provinces.py:31\nmsgid \"Lugo\"\nmsgstr \"Lugo\"\n\n#: es/es_provinces.py:32 es/es_regions.py:18\nmsgid \"Madrid\"\nmsgstr \"Madrid\"\n\n#: es/es_provinces.py:33\nmsgid \"Malaga\"\nmsgstr \"Malaga\"\n\n#: es/es_provinces.py:34\nmsgid \"Murcia\"\nmsgstr \"Murcia\"\n\n#: es/es_provinces.py:35\nmsgid \"Navarre\"\nmsgstr \"Navarre\"\n\n#: es/es_provinces.py:36\nmsgid \"Ourense\"\nmsgstr \"Ourense\"\n\n#: es/es_provinces.py:37\nmsgid \"Asturias\"\nmsgstr \"Asturias\"\n\n#: es/es_provinces.py:38\nmsgid \"Palencia\"\nmsgstr \"Palencia\"\n\n#: es/es_provinces.py:39\nmsgid \"Las Palmas\"\nmsgstr \"Las Palmas\"\n\n#: es/es_provinces.py:40\nmsgid \"Pontevedra\"\nmsgstr \"Pontevedra\"\n\n#: es/es_provinces.py:41\nmsgid \"Salamanca\"\nmsgstr \"Salamanca\"\n\n#: es/es_provinces.py:42\nmsgid \"Santa Cruz de Tenerife\"\nmsgstr \"Santa Cruz de Tenerife\"\n\n#: es/es_provinces.py:43 es/es_regions.py:11\nmsgid \"Cantabria\"\nmsgstr \"Cantabria\"\n\n#: es/es_provinces.py:44\nmsgid \"Segovia\"\nmsgstr \"Segovia\"\n\n#: es/es_provinces.py:45\nmsgid \"Seville\"\nmsgstr \"Seville\"\n\n#: es/es_provinces.py:46\nmsgid \"Soria\"\nmsgstr \"Soria\"\n\n#: es/es_provinces.py:47\nmsgid \"Tarragona\"\nmsgstr \"Tarragona\"\n\n#: es/es_provinces.py:48\nmsgid \"Teruel\"\nmsgstr \"Teruel\"\n\n#: es/es_provinces.py:49\nmsgid \"Toledo\"\nmsgstr \"Toledo\"\n\n#: es/es_provinces.py:50\nmsgid \"Valencia\"\nmsgstr \"Valencia\"\n\n#: es/es_provinces.py:51\nmsgid \"Valladolid\"\nmsgstr \"Valladolid\"\n\n#: es/es_provinces.py:52\nmsgid \"Bizkaia\"\nmsgstr \"Bizkaia\"\n\n#: es/es_provinces.py:53\nmsgid \"Zamora\"\nmsgstr \"Zamora\"\n\n#: es/es_provinces.py:54\nmsgid \"Zaragoza\"\nmsgstr \"Zaragoza\"\n\n#: es/es_provinces.py:55\nmsgid \"Ceuta\"\nmsgstr \"Ceuta\"\n\n#: es/es_provinces.py:56\nmsgid \"Melilla\"\nmsgstr \"Melilla\"\n\n#: es/es_regions.py:5\nmsgid \"Andalusia\"\nmsgstr \"Andalusia\"\n\n#: es/es_regions.py:6\nmsgid \"Aragon\"\nmsgstr \"Aragon\"\n\n#: es/es_regions.py:7\nmsgid \"Principality of Asturias\"\nmsgstr \"Utawala wa Asturias\"\n\n#: es/es_regions.py:8\nmsgid \"Balearic Islands\"\nmsgstr \"Visiwa vya Balearic\"\n\n#: es/es_regions.py:9\nmsgid \"Basque Country\"\nmsgstr \"Nchi ya Basque\"\n\n#: es/es_regions.py:10\nmsgid \"Canary Islands\"\nmsgstr \"Visiwa vya Kanari\"\n\n#: es/es_regions.py:12\nmsgid \"Castile-La Mancha\"\nmsgstr \"Cas-La Mancha\"\n\n#: es/es_regions.py:13\nmsgid \"Castile and Leon\"\nmsgstr \"Castile na Leon\"\n\n#: es/es_regions.py:14\nmsgid \"Catalonia\"\nmsgstr \"Catalonia\"\n\n#: es/es_regions.py:15\nmsgid \"Extremadura\"\nmsgstr \"Extremadura\"\n\n#: es/es_regions.py:16\nmsgid \"Galicia\"\nmsgstr \"Galatia\"\n\n#: es/es_regions.py:19\nmsgid \"Region of Murcia\"\nmsgstr \"Mkoa wa Murcia\"\n\n#: es/es_regions.py:20\nmsgid \"Foral Community of Navarre\"\nmsgstr \"Jamii ya Waforali wa Navarre\"\n\n#: es/es_regions.py:21\nmsgid \"Valencian Community\"\nmsgstr \"Jamii ya Wavalencia\"\n\n#: es/forms.py:26\nmsgid \"Enter a valid postal code in the range and format 01XXX - 52XXX.\"\nmsgstr \"Ingiza sanduku la posta halali katika mfumo 01XXX - 52XXX\"\n\n#: es/forms.py:46\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or \"\n\"9XXXXXXXX.\"\nmsgstr \"\"\n\"Ingiza namba halali ya simu katika muundo 6XXXXXXXX  au 8XXXXXXXX au \"\n\"9XXXXXXXX.\"\n\n#: es/forms.py:73\nmsgid \"Please enter a valid NIF, NIE, or CIF.\"\nmsgstr \"Tafadhali ingiza  NIF, NIE, au CIF halali\"\n\n#: es/forms.py:74\nmsgid \"Please enter a valid NIF or NIE.\"\nmsgstr \"Tafadhali ingiza NIF au NIE halali.\"\n\n#: es/forms.py:75\nmsgid \"Invalid checksum for NIF.\"\nmsgstr \"Checksum batili kwa NIF\"\n\n#: es/forms.py:76\nmsgid \"Invalid checksum for NIE.\"\nmsgstr \"Checksum batili kwa NIE\"\n\n#: es/forms.py:77\nmsgid \"Invalid checksum for CIF.\"\nmsgstr \"Checksum batili kwa CIF\"\n\n#: es/forms.py:149\nmsgid \"\"\n\"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.\"\nmsgstr \"\"\n\"Tafadhali ingiza namba ya akaunti ya benki katika muundo XXXX-XXXX-XX-\"\n\"XXXXXXXXXX.\"\n\n#: es/forms.py:150\nmsgid \"Invalid checksum for bank account number.\"\nmsgstr \"Checksum batili kwa namba ya akaunti ya benki.\"\n\n#: fi/forms.py:33\nmsgid \"Enter a valid Finnish social security number.\"\nmsgstr \"Ingiza namba halali ya hifadhi ya jamii ya Finland.\"\n\n#: fr/forms.py:35\nmsgid \"Phone numbers must be in 0X XX XX XX XX format.\"\nmsgstr \"Ni lazima namba za simu ziwe katika muundo wa 0X XX XX XX XX.\"\n\n#: gb/forms.py:25\nmsgid \"Enter a valid postcode.\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:11\nmsgid \"Bedfordshire\"\nmsgstr \"Bedfordshire\"\n\n#: gb/gb_regions.py:12\nmsgid \"Buckinghamshire\"\nmsgstr \"Buckinghamshire\"\n\n#: gb/gb_regions.py:14\nmsgid \"Cheshire\"\nmsgstr \"Cheshire\"\n\n#: gb/gb_regions.py:15\nmsgid \"Cornwall and Isles of Scilly\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:16\nmsgid \"Cumbria\"\nmsgstr \"Cumbria\"\n\n#: gb/gb_regions.py:17\nmsgid \"Derbyshire\"\nmsgstr \"Derbyshire\"\n\n#: gb/gb_regions.py:18\nmsgid \"Devon\"\nmsgstr \"Devon\"\n\n#: gb/gb_regions.py:19\nmsgid \"Dorset\"\nmsgstr \"Dorset\"\n\n#: gb/gb_regions.py:20\nmsgid \"Durham\"\nmsgstr \"Durham\"\n\n#: gb/gb_regions.py:21\nmsgid \"East Sussex\"\nmsgstr \"Sussex Mashariki\"\n\n#: gb/gb_regions.py:22\nmsgid \"Essex\"\nmsgstr \"Essex\"\n\n#: gb/gb_regions.py:23\nmsgid \"Gloucestershire\"\nmsgstr \"Gloucestershire\"\n\n#: gb/gb_regions.py:24\nmsgid \"Greater London\"\nmsgstr \"London Kuu\"\n\n#: gb/gb_regions.py:25\nmsgid \"Greater Manchester\"\nmsgstr \"Manchester Kuu\"\n\n#: gb/gb_regions.py:26\nmsgid \"Hampshire\"\nmsgstr \"Hampshire\"\n\n#: gb/gb_regions.py:27\nmsgid \"Hertfordshire\"\nmsgstr \"Hertfordshire\"\n\n#: gb/gb_regions.py:28\nmsgid \"Kent\"\nmsgstr \"Kent\"\n\n#: gb/gb_regions.py:29\nmsgid \"Lancashire\"\nmsgstr \"Lancashire\"\n\n#: gb/gb_regions.py:30\nmsgid \"Leicestershire\"\nmsgstr \"Leicestershire\"\n\n#: gb/gb_regions.py:31\nmsgid \"Lincolnshire\"\nmsgstr \"Lincolnshire\"\n\n#: gb/gb_regions.py:32\nmsgid \"Merseyside\"\nmsgstr \"Merseyside\"\n\n#: gb/gb_regions.py:33\nmsgid \"Norfolk\"\nmsgstr \"Norfolk\"\n\n#: gb/gb_regions.py:34\nmsgid \"North Yorkshire\"\nmsgstr \"Yorkshire Kaskazini\"\n\n#: gb/gb_regions.py:35\nmsgid \"Northamptonshire\"\nmsgstr \"Northamptonshire\"\n\n#: gb/gb_regions.py:36\nmsgid \"Northumberland\"\nmsgstr \"Northumberland\"\n\n#: gb/gb_regions.py:37\nmsgid \"Nottinghamshire\"\nmsgstr \"Nottinghamshire\"\n\n#: gb/gb_regions.py:38\nmsgid \"Oxfordshire\"\nmsgstr \"Oxfordshire\"\n\n#: gb/gb_regions.py:39\nmsgid \"Shropshire\"\nmsgstr \"Shropshire\"\n\n#: gb/gb_regions.py:40\nmsgid \"Somerset\"\nmsgstr \"Somerset\"\n\n#: gb/gb_regions.py:41\nmsgid \"South Yorkshire\"\nmsgstr \"Yorkshire Kusini\"\n\n#: gb/gb_regions.py:42\nmsgid \"Staffordshire\"\nmsgstr \"Staffordshire\"\n\n#: gb/gb_regions.py:43\nmsgid \"Suffolk\"\nmsgstr \"Suffolk\"\n\n#: gb/gb_regions.py:44\nmsgid \"Surrey\"\nmsgstr \"Surrey\"\n\n#: gb/gb_regions.py:45\nmsgid \"Tyne and Wear\"\nmsgstr \"Tyne na Wear\"\n\n#: gb/gb_regions.py:46\nmsgid \"Warwickshire\"\nmsgstr \"Warwickshire\"\n\n#: gb/gb_regions.py:47\nmsgid \"West Midlands\"\nmsgstr \"Midlands Magharibi\"\n\n#: gb/gb_regions.py:48\nmsgid \"West Sussex\"\nmsgstr \"Sussex Magharibi\"\n\n#: gb/gb_regions.py:49\nmsgid \"West Yorkshire\"\nmsgstr \"Yorkshire Magharibi\"\n\n#: gb/gb_regions.py:50\nmsgid \"Wiltshire\"\nmsgstr \"Wiltshire\"\n\n#: gb/gb_regions.py:51\nmsgid \"Worcestershire\"\nmsgstr \"Worcestershire\"\n\n#: gb/gb_regions.py:55\nmsgid \"County Antrim\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:56\nmsgid \"County Armagh\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:57\nmsgid \"County Down\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:58\nmsgid \"County Fermanagh\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:59\nmsgid \"County Londonderry\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:60\nmsgid \"County Tyrone\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:64\nmsgid \"Clwyd\"\nmsgstr \"Clwyd\"\n\n#: gb/gb_regions.py:65\nmsgid \"Dyfed\"\nmsgstr \"Dyfed\"\n\n#: gb/gb_regions.py:66\nmsgid \"Gwent\"\nmsgstr \"Gwent\"\n\n#: gb/gb_regions.py:67\nmsgid \"Gwynedd\"\nmsgstr \"Gwynedd\"\n\n#: gb/gb_regions.py:68\nmsgid \"Mid Glamorgan\"\nmsgstr \"Glamorgan ya Kati\"\n\n#: gb/gb_regions.py:69\nmsgid \"Powys\"\nmsgstr \"Powys\"\n\n#: gb/gb_regions.py:70\nmsgid \"South Glamorgan\"\nmsgstr \"Glamorgan Kusini\"\n\n#: gb/gb_regions.py:71\nmsgid \"West Glamorgan\"\nmsgstr \"Glamorgan Magharibi\"\n\n#: gb/gb_regions.py:75\nmsgid \"Borders\"\nmsgstr \"Borders\"\n\n#: gb/gb_regions.py:76\nmsgid \"Central Scotland\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:77\nmsgid \"Dumfries and Galloway\"\nmsgstr \"Dumfries na Galloway\"\n\n#: gb/gb_regions.py:78\nmsgid \"Fife\"\nmsgstr \"Fife\"\n\n#: gb/gb_regions.py:79\nmsgid \"Grampian\"\nmsgstr \"Grampian\"\n\n#: gb/gb_regions.py:80\nmsgid \"Highland\"\nmsgstr \"Highland\"\n\n#: gb/gb_regions.py:81\nmsgid \"Lothian\"\nmsgstr \"Lothian\"\n\n#: gb/gb_regions.py:82\nmsgid \"Orkney Islands\"\nmsgstr \"Visiwa vya Orkney\"\n\n#: gb/gb_regions.py:83\nmsgid \"Shetland Islands\"\nmsgstr \"Visiwa vya Shetland\"\n\n#: gb/gb_regions.py:84\nmsgid \"Strathclyde\"\nmsgstr \"Strathclyde\"\n\n#: gb/gb_regions.py:85\nmsgid \"Tayside\"\nmsgstr \"Tayside\"\n\n#: gb/gb_regions.py:86\nmsgid \"Western Isles\"\nmsgstr \"Isles ya Magharibi\"\n\n#: gb/gb_regions.py:90\nmsgid \"England\"\nmsgstr \"Uingireza\"\n\n#: gb/gb_regions.py:91\nmsgid \"Northern Ireland\"\nmsgstr \"Ireland ya Kaskazini\"\n\n#: gb/gb_regions.py:92\nmsgid \"Scotland\"\nmsgstr \"Scotland\"\n\n#: gb/gb_regions.py:93\nmsgid \"Wales\"\nmsgstr \"Wales\"\n\n#: hk/forms.py:37\n#, python-format\nmsgid \"Phone number should not start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:40\n#, python-format\nmsgid \"Phone number must be in one of the following formats: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:42\n#, python-format\nmsgid \"Phone number should start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hr/forms.py:76\nmsgid \"Enter a valid 13 digit JMBG\"\nmsgstr \"\"\n\n#: hr/forms.py:77\nmsgid \"Error in date segment\"\nmsgstr \"\"\n\n#: hr/forms.py:123\nmsgid \"Enter a valid 11 digit OIB\"\nmsgstr \"\"\n\n#: hr/forms.py:152 id/forms.py:112\nmsgid \"Enter a valid vehicle license plate number\"\nmsgstr \"Ingiza namba halali ya  leseni ya gari.\"\n\n#: hr/forms.py:153\nmsgid \"Enter a valid location code\"\nmsgstr \"\"\n\n#: hr/forms.py:154\nmsgid \"Number part cannot be zero\"\nmsgstr \"\"\n\n#: hr/forms.py:190\nmsgid \"Enter a valid 5 digit postal code\"\nmsgstr \"\"\n\n#: hr/forms.py:218 id/forms.py:72 nl/forms.py:56\nmsgid \"Enter a valid phone number\"\nmsgstr \"ingiza namba halali ya simu.\"\n\n#: hr/forms.py:219\nmsgid \"Enter a valid area or mobile network code\"\nmsgstr \"\"\n\n#: hr/forms.py:220\nmsgid \"The phone nubmer is too long\"\nmsgstr \"\"\n\n#: hr/forms.py:258\nmsgid \"Enter a valid 19 digit JMBAG starting with 601983\"\nmsgstr \"\"\n\n#: hr/forms.py:259\nmsgid \"Card issue number cannot be zero\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:14\nmsgid \"Grad Zagreb\"\nmsgstr \"Grad Zagreb\"\n\n#: hr/hr_choices.py:15\nmsgid \"Bjelovarsko-bilogorska županija\"\nmsgstr \"Bjelovarsko-bilogorska županija\"\n\n#: hr/hr_choices.py:16\nmsgid \"Brodsko-posavska županija\"\nmsgstr \"Brodsko-posavska županija\"\n\n#: hr/hr_choices.py:17\nmsgid \"Dubrovačko-neretvanska županija\"\nmsgstr \"Dubrovačko-neretvanska županija\"\n\n#: hr/hr_choices.py:18\nmsgid \"Istarska županija\"\nmsgstr \"Istarska županija\"\n\n#: hr/hr_choices.py:19\nmsgid \"Karlovačka županija\"\nmsgstr \"Karlovačka županija\"\n\n#: hr/hr_choices.py:20\nmsgid \"Koprivničko-križevačka županija\"\nmsgstr \"Koprivničko-križevačka županija\"\n\n#: hr/hr_choices.py:21\nmsgid \"Krapinsko-zagorska županija\"\nmsgstr \"Krapinsko-zagorska županija\"\n\n#: hr/hr_choices.py:22\nmsgid \"Ličko-senjska županija\"\nmsgstr \"Ličko-senjska županija\"\n\n#: hr/hr_choices.py:23\nmsgid \"Međimurska županija\"\nmsgstr \"Međimurska županija\"\n\n#: hr/hr_choices.py:24\nmsgid \"Osječko-baranjska županija\"\nmsgstr \"Osječko-baranjska županija\"\n\n#: hr/hr_choices.py:25\nmsgid \"Požeško-slavonska županija\"\nmsgstr \"Požeško-slavonska županija\"\n\n#: hr/hr_choices.py:26\nmsgid \"Primorsko-goranska županija\"\nmsgstr \"Primorsko-goranska županija\"\n\n#: hr/hr_choices.py:27\nmsgid \"Sisačko-moslavačka županija\"\nmsgstr \"Sisačko-moslavačka županija\"\n\n#: hr/hr_choices.py:28\nmsgid \"Splitsko-dalmatinska županija\"\nmsgstr \"Splitsko-dalmatinska županija\"\n\n#: hr/hr_choices.py:29\nmsgid \"Šibensko-kninska županija\"\nmsgstr \"Šibensko-kninska županija\"\n\n#: hr/hr_choices.py:30\nmsgid \"Varaždinska županija\"\nmsgstr \"Varaždinska županija\"\n\n#: hr/hr_choices.py:31\nmsgid \"Virovitičko-podravska županija\"\nmsgstr \"Virovitičko-podravska županija\"\n\n#: hr/hr_choices.py:32\nmsgid \"Vukovarsko-srijemska županija\"\nmsgstr \"Vukovarsko-srijemska županija\"\n\n#: hr/hr_choices.py:33\nmsgid \"Zadarska županija\"\nmsgstr \"Zadarska županija\"\n\n#: hr/hr_choices.py:34\nmsgid \"Zagrebačka županija\"\nmsgstr \"jimbo la Zagreb\"\n\n#: id/forms.py:31\nmsgid \"Enter a valid post code\"\nmsgstr \"Ingiza sanduku la posta halali.\"\n\n#: id/forms.py:176\nmsgid \"Enter a valid NIK/KTP number\"\nmsgstr \"ingiza namba halali ya NIK/KTP.\"\n\n#: id/id_choices.py:15\nmsgid \"Aceh\"\nmsgstr \"Aceh\"\n\n#: id/id_choices.py:16 id/id_choices.py:79\nmsgid \"Bali\"\nmsgstr \"Bali\"\n\n#: id/id_choices.py:17 id/id_choices.py:51\nmsgid \"Banten\"\nmsgstr \"Banten\"\n\n#: id/id_choices.py:18 id/id_choices.py:60\nmsgid \"Bengkulu\"\nmsgstr \"Bengkulu\"\n\n#: id/id_choices.py:19 id/id_choices.py:53\nmsgid \"Yogyakarta\"\nmsgstr \"Yogyakarta\"\n\n#: id/id_choices.py:20 id/id_choices.py:57\nmsgid \"Jakarta\"\nmsgstr \"Jakarta\"\n\n#: id/id_choices.py:21 id/id_choices.py:81\nmsgid \"Gorontalo\"\nmsgstr \"Gorontalo\"\n\n#: id/id_choices.py:22 id/id_choices.py:63\nmsgid \"Jambi\"\nmsgstr \"Jambi\"\n\n#: id/id_choices.py:23\nmsgid \"Jawa Barat\"\nmsgstr \"Jawa Barat\"\n\n#: id/id_choices.py:24\nmsgid \"Jawa Tengah\"\nmsgstr \"Jawa Tengah\"\n\n#: id/id_choices.py:25\nmsgid \"Jawa Timur\"\nmsgstr \"Jawa Timur\"\n\n#: id/id_choices.py:26 id/id_choices.py:94\nmsgid \"Kalimantan Barat\"\nmsgstr \"Kalimantan Barat\"\n\n#: id/id_choices.py:27 id/id_choices.py:72\nmsgid \"Kalimantan Selatan\"\nmsgstr \"Kalimantan Selatan\"\n\n#: id/id_choices.py:28 id/id_choices.py:95\nmsgid \"Kalimantan Tengah\"\nmsgstr \"Kalimantan Tengah\"\n\n#: id/id_choices.py:29 id/id_choices.py:96\nmsgid \"Kalimantan Timur\"\nmsgstr \"Kalimantan Timur\"\n\n#: id/id_choices.py:30\nmsgid \"Kepulauan Bangka-Belitung\"\nmsgstr \"Kepulauan Bangka-Belitung\"\n\n#: id/id_choices.py:31 id/id_choices.py:68\nmsgid \"Kepulauan Riau\"\nmsgstr \"Kepulauan Riau\"\n\n#: id/id_choices.py:32 id/id_choices.py:61\nmsgid \"Lampung\"\nmsgstr \"Lampung\"\n\n#: id/id_choices.py:33 id/id_choices.py:76\nmsgid \"Maluku\"\nmsgstr \"Maluku\"\n\n#: id/id_choices.py:34 id/id_choices.py:77\nmsgid \"Maluku Utara\"\nmsgstr \"Maluku Utara\"\n\n#: id/id_choices.py:35\nmsgid \"Nusa Tenggara Barat\"\nmsgstr \"Nusa Tenggara Barat\"\n\n#: id/id_choices.py:36\nmsgid \"Nusa Tenggara Timur\"\nmsgstr \"Nusa Tenggara Timur\"\n\n#: id/id_choices.py:37\nmsgid \"Papua\"\nmsgstr \"Papua\"\n\n#: id/id_choices.py:38\nmsgid \"Papua Barat\"\nmsgstr \"Papua Barat\"\n\n#: id/id_choices.py:39 id/id_choices.py:66\nmsgid \"Riau\"\nmsgstr \"Riau\"\n\n#: id/id_choices.py:40 id/id_choices.py:74\nmsgid \"Sulawesi Barat\"\nmsgstr \"Sulawesi Barat\"\n\n#: id/id_choices.py:41 id/id_choices.py:75\nmsgid \"Sulawesi Selatan\"\nmsgstr \"Sulawesi Selatan\"\n\n#: id/id_choices.py:42 id/id_choices.py:82\nmsgid \"Sulawesi Tengah\"\nmsgstr \"Sulawesi Tengah\"\n\n#: id/id_choices.py:43 id/id_choices.py:85\nmsgid \"Sulawesi Tenggara\"\nmsgstr \"Sulawesi Tenggara\"\n\n#: id/id_choices.py:44\nmsgid \"Sulawesi Utara\"\nmsgstr \"Sulawesi Utara\"\n\n#: id/id_choices.py:45 id/id_choices.py:58\nmsgid \"Sumatera Barat\"\nmsgstr \"Sumatera Barat\"\n\n#: id/id_choices.py:46 id/id_choices.py:62\nmsgid \"Sumatera Selatan\"\nmsgstr \"Sumatera Selatan\"\n\n#: id/id_choices.py:47 id/id_choices.py:64\nmsgid \"Sumatera Utara\"\nmsgstr \"Sumatera Utara\"\n\n#: id/id_choices.py:52\nmsgid \"Magelang\"\nmsgstr \"Magelang\"\n\n#: id/id_choices.py:54\nmsgid \"Surakarta - Solo\"\nmsgstr \"Surakarta - Solo\"\n\n#: id/id_choices.py:55\nmsgid \"Madiun\"\nmsgstr \"Madiun\"\n\n#: id/id_choices.py:56\nmsgid \"Kediri\"\nmsgstr \"Kediri\"\n\n#: id/id_choices.py:59\nmsgid \"Tapanuli\"\nmsgstr \"Tapanuli\"\n\n#: id/id_choices.py:65\nmsgid \"Nanggroe Aceh Darussalam\"\nmsgstr \"Nanggroe Aceh Darussalam\"\n\n#: id/id_choices.py:67\nmsgid \"Kepulauan Bangka Belitung\"\nmsgstr \"Kepulauan Bangka Belitung\"\n\n#: id/id_choices.py:69\nmsgid \"Corps Consulate\"\nmsgstr \"Corps Consulate\"\n\n#: id/id_choices.py:70\nmsgid \"Corps Diplomatic\"\nmsgstr \"Corps Diplomatic\"\n\n#: id/id_choices.py:71\nmsgid \"Bandung\"\nmsgstr \"Bandung\"\n\n#: id/id_choices.py:73\nmsgid \"Sulawesi Utara Daratan\"\nmsgstr \"Sulawesi Utara Daratan\"\n\n#: id/id_choices.py:78\nmsgid \"NTT - Timor\"\nmsgstr \"NTT - Timor\"\n\n#: id/id_choices.py:80\nmsgid \"Sulawesi Utara Kepulauan\"\nmsgstr \"Sulawesi Utara Kepulauan\"\n\n#: id/id_choices.py:83\nmsgid \"NTB - Lombok\"\nmsgstr \"NTB - Lombok\"\n\n#: id/id_choices.py:84\nmsgid \"Papua dan Papua Barat\"\nmsgstr \"Papua dan Papua Barat\"\n\n#: id/id_choices.py:86\nmsgid \"Cirebon\"\nmsgstr \"Cirebon\"\n\n#: id/id_choices.py:87\nmsgid \"NTB - Sumbawa\"\nmsgstr \"NTB - Sumbawa\"\n\n#: id/id_choices.py:88\nmsgid \"NTT - Flores\"\nmsgstr \"NTT - Flores\"\n\n#: id/id_choices.py:89\nmsgid \"NTT - Sumba\"\nmsgstr \"NTT - Sumba\"\n\n#: id/id_choices.py:90\nmsgid \"Bogor\"\nmsgstr \"Bogor\"\n\n#: id/id_choices.py:91\nmsgid \"Pekalongan\"\nmsgstr \"Pekalongan\"\n\n#: id/id_choices.py:92\nmsgid \"Semarang\"\nmsgstr \"Semarang\"\n\n#: id/id_choices.py:93\nmsgid \"Pati\"\nmsgstr \"Pati\"\n\n#: id/id_choices.py:97\nmsgid \"Surabaya\"\nmsgstr \"Surabaya\"\n\n#: id/id_choices.py:98\nmsgid \"Madura\"\nmsgstr \"Madura\"\n\n#: id/id_choices.py:99\nmsgid \"Malang\"\nmsgstr \"Malang\"\n\n#: id/id_choices.py:100\nmsgid \"Jember\"\nmsgstr \"Jember\"\n\n#: id/id_choices.py:101\nmsgid \"Banyumas\"\nmsgstr \"Banyumas\"\n\n#: id/id_choices.py:102\nmsgid \"Federal Government\"\nmsgstr \"Serikali ya Shirikisho\"\n\n#: id/id_choices.py:103\nmsgid \"Bojonegoro\"\nmsgstr \"Bojonegoro\"\n\n#: id/id_choices.py:104\nmsgid \"Purwakarta\"\nmsgstr \"Purwakarta\"\n\n#: id/id_choices.py:105\nmsgid \"Sidoarjo\"\nmsgstr \"Sidoarjo\"\n\n#: id/id_choices.py:106\nmsgid \"Garut\"\nmsgstr \"Garut\"\n\n#: ie/ie_counties.py:8\nmsgid \"Antrim\"\nmsgstr \"Antrim\"\n\n#: ie/ie_counties.py:9\nmsgid \"Armagh\"\nmsgstr \"Armagh\"\n\n#: ie/ie_counties.py:10\nmsgid \"Carlow\"\nmsgstr \"Carlow\"\n\n#: ie/ie_counties.py:11\nmsgid \"Cavan\"\nmsgstr \"Cavan\"\n\n#: ie/ie_counties.py:12\nmsgid \"Clare\"\nmsgstr \"Clare\"\n\n#: ie/ie_counties.py:13\nmsgid \"Cork\"\nmsgstr \"Cork\"\n\n#: ie/ie_counties.py:14\nmsgid \"Derry\"\nmsgstr \"Derry\"\n\n#: ie/ie_counties.py:15\nmsgid \"Donegal\"\nmsgstr \"Donegal\"\n\n#: ie/ie_counties.py:16\nmsgid \"Down\"\nmsgstr \"Down\"\n\n#: ie/ie_counties.py:17\nmsgid \"Dublin\"\nmsgstr \"Dublin\"\n\n#: ie/ie_counties.py:18\nmsgid \"Fermanagh\"\nmsgstr \"Fermanagh\"\n\n#: ie/ie_counties.py:19\nmsgid \"Galway\"\nmsgstr \"Galway\"\n\n#: ie/ie_counties.py:20\nmsgid \"Kerry\"\nmsgstr \"Kerry\"\n\n#: ie/ie_counties.py:21\nmsgid \"Kildare\"\nmsgstr \"Kildare\"\n\n#: ie/ie_counties.py:22\nmsgid \"Kilkenny\"\nmsgstr \"Kilkenny\"\n\n#: ie/ie_counties.py:23\nmsgid \"Laois\"\nmsgstr \"Laois\"\n\n#: ie/ie_counties.py:24\nmsgid \"Leitrim\"\nmsgstr \"Leitrim\"\n\n#: ie/ie_counties.py:25\nmsgid \"Limerick\"\nmsgstr \"Limerick\"\n\n#: ie/ie_counties.py:26\nmsgid \"Longford\"\nmsgstr \"Longford\"\n\n#: ie/ie_counties.py:27\nmsgid \"Louth\"\nmsgstr \"Louth\"\n\n#: ie/ie_counties.py:28\nmsgid \"Mayo\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:29\nmsgid \"Meath\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:30\nmsgid \"Monaghan\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:31\nmsgid \"Offaly\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:32\nmsgid \"Roscommon\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:33\nmsgid \"Sligo\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:34\nmsgid \"Tipperary\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:35\nmsgid \"Tyrone\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:36\nmsgid \"Waterford\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:37\nmsgid \"Westmeath\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:38\nmsgid \"Wexford\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:39\nmsgid \"Wicklow\"\nmsgstr \"\"\n\n#: il/forms.py:32\nmsgid \"Enter a postal code in the format XXXXX\"\nmsgstr \"\"\n\n#: il/forms.py:51\nmsgid \"Enter a valid ID number.\"\nmsgstr \"\"\n\n#: in_/forms.py:41\nmsgid \"Enter a zip code in the format XXXXXX or XXX XXX.\"\nmsgstr \"\"\n\n#: in_/forms.py:64\nmsgid \"Enter an Indian state or territory.\"\nmsgstr \"\"\n\n#: in_/forms.py:103\nmsgid \"Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.\"\nmsgstr \"\"\n\n#: is_/forms.py:22\nmsgid \"\"\n\"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.\"\nmsgstr \"\"\n\n#: is_/forms.py:23\nmsgid \"The Icelandic identification number is not valid.\"\nmsgstr \"\"\n\n#: it/forms.py:21\nmsgid \"Enter a valid zip code.\"\nmsgstr \"\"\n\n#: it/forms.py:48\nmsgid \"Enter a valid Social Security number.\"\nmsgstr \"\"\n\n#: it/forms.py:73\nmsgid \"Enter a valid VAT number.\"\nmsgstr \"\"\n\n#: jp/forms.py:19\nmsgid \"Enter a postal code in the format XXXXXXX or XXX-XXXX.\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:4\nmsgid \"Hokkaido\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:5\nmsgid \"Aomori\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:6\nmsgid \"Iwate\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:7\nmsgid \"Miyagi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:8\nmsgid \"Akita\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:9\nmsgid \"Yamagata\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:10\nmsgid \"Fukushima\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:11\nmsgid \"Ibaraki\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:12\nmsgid \"Tochigi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:13\nmsgid \"Gunma\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:14\nmsgid \"Saitama\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:15\nmsgid \"Chiba\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:16\nmsgid \"Tokyo\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:17\nmsgid \"Kanagawa\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:18\nmsgid \"Yamanashi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:19\nmsgid \"Nagano\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:20\nmsgid \"Niigata\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:21\nmsgid \"Toyama\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:22\nmsgid \"Ishikawa\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:23\nmsgid \"Fukui\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:24\nmsgid \"Gifu\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:25\nmsgid \"Shizuoka\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:26\nmsgid \"Aichi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:27\nmsgid \"Mie\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:28\nmsgid \"Shiga\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:29\nmsgid \"Kyoto\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:30\nmsgid \"Osaka\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:31\nmsgid \"Hyogo\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:32\nmsgid \"Nara\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:33\nmsgid \"Wakayama\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:34\nmsgid \"Tottori\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:35\nmsgid \"Shimane\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:36\nmsgid \"Okayama\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:37\nmsgid \"Hiroshima\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:38\nmsgid \"Yamaguchi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:39\nmsgid \"Tokushima\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:40\nmsgid \"Kagawa\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:41\nmsgid \"Ehime\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:42\nmsgid \"Kochi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:43\nmsgid \"Fukuoka\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:44\nmsgid \"Saga\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:45\nmsgid \"Nagasaki\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:46\nmsgid \"Kumamoto\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:47\nmsgid \"Oita\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:48\nmsgid \"Miyazaki\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:49\nmsgid \"Kagoshima\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:50\nmsgid \"Okinawa\"\nmsgstr \"\"\n\n#: kw/forms.py:27\nmsgid \"Enter a valid Kuwaiti Civil ID number\"\nmsgstr \"\"\n\n#: mk/forms.py:18\nmsgid \"\"\n\"Identity card numbers must contain either 4 to 7 digits or an uppercase \"\n\"letter and 7 digits.\"\nmsgstr \"\"\n\n#: mk/forms.py:57 si/forms.py:24\nmsgid \"This field should contain exactly 13 digits.\"\nmsgstr \"\"\n\n#: mk/forms.py:58\nmsgid \"The first 7 digits of the UMCN must represent a valid past date.\"\nmsgstr \"\"\n\n#: mk/forms.py:59\nmsgid \"The UMCN is not valid.\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:10\nmsgid \"Aerodrom\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:11\nmsgid \"Aračinovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:12\nmsgid \"Berovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:13\nmsgid \"Bitola\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:14\nmsgid \"Bogdanci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:15\nmsgid \"Bogovinje\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:16\nmsgid \"Bosilovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:17\nmsgid \"Brvenica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:18\nmsgid \"Butel\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:19\nmsgid \"Valandovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:20\nmsgid \"Vasilevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:21\nmsgid \"Vevčani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:22\nmsgid \"Veles\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:23\nmsgid \"Vinica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:24\nmsgid \"Vraneštica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:25\nmsgid \"Vrapčište\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:26\nmsgid \"Gazi Baba\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:27\nmsgid \"Gevgelija\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:28\nmsgid \"Gostivar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:29\nmsgid \"Gradsko\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:30\nmsgid \"Debar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:31\nmsgid \"Debarca\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:32\nmsgid \"Delčevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:33\nmsgid \"Demir Kapija\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:34\nmsgid \"Demir Hisar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:35\nmsgid \"Dolneni\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:36\nmsgid \"Drugovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:37\nmsgid \"Gjorče Petrov\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:38\nmsgid \"Želino\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:39\nmsgid \"Zajas\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:40\nmsgid \"Zelenikovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:41\nmsgid \"Zrnovci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:42\nmsgid \"Ilinden\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:43\nmsgid \"Jegunovce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:44\nmsgid \"Kavadarci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:45\nmsgid \"Karbinci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:46\nmsgid \"Karpoš\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:47\nmsgid \"Kisela Voda\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:48\nmsgid \"Kičevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:49\nmsgid \"Konče\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:50\nmsgid \"Koćani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:51\nmsgid \"Kratovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:52\nmsgid \"Kriva Palanka\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:53\nmsgid \"Krivogaštani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:54\nmsgid \"Kruševo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:55\nmsgid \"Kumanovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:56\nmsgid \"Lipkovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:57\nmsgid \"Lozovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:58\nmsgid \"Mavrovo i Rostuša\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:59\nmsgid \"Makedonska Kamenica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:60\nmsgid \"Makedonski Brod\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:61\nmsgid \"Mogila\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:62\nmsgid \"Negotino\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:63\nmsgid \"Novaci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:64\nmsgid \"Novo Selo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:65\nmsgid \"Oslomej\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:66\nmsgid \"Ohrid\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:67\nmsgid \"Petrovec\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:68\nmsgid \"Pehčevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:69\nmsgid \"Plasnica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:70\nmsgid \"Prilep\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:71\nmsgid \"Probištip\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:72\nmsgid \"Radoviš\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:73\nmsgid \"Rankovce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:74\nmsgid \"Resen\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:75\nmsgid \"Rosoman\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:76\nmsgid \"Saraj\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:77\nmsgid \"Sveti Nikole\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:78\nmsgid \"Sopište\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:79\nmsgid \"Star Dojran\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:80\nmsgid \"Staro Nagoričane\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:81\nmsgid \"Struga\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:82\nmsgid \"Strumica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:83\nmsgid \"Studeničani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:84\nmsgid \"Tearce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:85\nmsgid \"Tetovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:86\nmsgid \"Centar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:87\nmsgid \"Centar-Župa\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:88\nmsgid \"Čair\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:89\nmsgid \"Čaška\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:90\nmsgid \"Češinovo-Obleševo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:91\nmsgid \"Čučer-Sandevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:92\nmsgid \"Štip\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:93\nmsgid \"Šuto Orizari\"\nmsgstr \"\"\n\n#: mk/models.py:11\nmsgid \"Macedonian identity card number\"\nmsgstr \"\"\n\n#: mk/models.py:25\nmsgid \"A Macedonian municipality (2 character code)\"\nmsgstr \"\"\n\n#: mk/models.py:35\nmsgid \"Unique master citizen number (13 digits)\"\nmsgstr \"\"\n\n#: mx/forms.py:67\nmsgid \"Enter a valid zip code in the format XXXXX.\"\nmsgstr \"\"\n\n#: mx/forms.py:110\nmsgid \"Enter a valid RFC.\"\nmsgstr \"\"\n\n#: mx/forms.py:111\nmsgid \"Invalid checksum for RFC.\"\nmsgstr \"\"\n\n#: mx/forms.py:191\nmsgid \"Enter a valid CURP.\"\nmsgstr \"\"\n\n#: mx/forms.py:192\nmsgid \"Invalid checksum for CURP.\"\nmsgstr \"\"\n\n#: mx/models.py:14\nmsgid \"Mexico state (three uppercase letters)\"\nmsgstr \"\"\n\n#: mx/models.py:27\nmsgid \"Mexico zip code\"\nmsgstr \"\"\n\n#: mx/models.py:44\nmsgid \"Mexican RFC\"\nmsgstr \"\"\n\n#: mx/models.py:61\nmsgid \"Mexican CURP\"\nmsgstr \"\"\n\n#: mx/mx_states.py:14\nmsgid \"Aguascalientes\"\nmsgstr \"\"\n\n#: mx/mx_states.py:15\nmsgid \"Baja California\"\nmsgstr \"\"\n\n#: mx/mx_states.py:16\nmsgid \"Baja California Sur\"\nmsgstr \"\"\n\n#: mx/mx_states.py:17\nmsgid \"Campeche\"\nmsgstr \"\"\n\n#: mx/mx_states.py:18\nmsgid \"Chihuahua\"\nmsgstr \"\"\n\n#: mx/mx_states.py:19\nmsgid \"Chiapas\"\nmsgstr \"\"\n\n#: mx/mx_states.py:20\nmsgid \"Coahuila\"\nmsgstr \"\"\n\n#: mx/mx_states.py:21\nmsgid \"Colima\"\nmsgstr \"\"\n\n#: mx/mx_states.py:22\nmsgid \"Distrito Federal\"\nmsgstr \"\"\n\n#: mx/mx_states.py:23\nmsgid \"Durango\"\nmsgstr \"\"\n\n#: mx/mx_states.py:24\nmsgid \"Guerrero\"\nmsgstr \"\"\n\n#: mx/mx_states.py:25\nmsgid \"Guanajuato\"\nmsgstr \"\"\n\n#: mx/mx_states.py:26\nmsgid \"Hidalgo\"\nmsgstr \"\"\n\n#: mx/mx_states.py:27\nmsgid \"Jalisco\"\nmsgstr \"\"\n\n#: mx/mx_states.py:28\nmsgid \"Estado de México\"\nmsgstr \"\"\n\n#: mx/mx_states.py:29\nmsgid \"Michoacán\"\nmsgstr \"\"\n\n#: mx/mx_states.py:30\nmsgid \"Morelos\"\nmsgstr \"\"\n\n#: mx/mx_states.py:31\nmsgid \"Nayarit\"\nmsgstr \"\"\n\n#: mx/mx_states.py:32\nmsgid \"Nuevo León\"\nmsgstr \"\"\n\n#: mx/mx_states.py:33\nmsgid \"Oaxaca\"\nmsgstr \"\"\n\n#: mx/mx_states.py:34\nmsgid \"Puebla\"\nmsgstr \"\"\n\n#: mx/mx_states.py:35\nmsgid \"Querétaro\"\nmsgstr \"\"\n\n#: mx/mx_states.py:36\nmsgid \"Quintana Roo\"\nmsgstr \"\"\n\n#: mx/mx_states.py:37\nmsgid \"Sinaloa\"\nmsgstr \"\"\n\n#: mx/mx_states.py:38\nmsgid \"San Luis Potosí\"\nmsgstr \"\"\n\n#: mx/mx_states.py:39\nmsgid \"Sonora\"\nmsgstr \"\"\n\n#: mx/mx_states.py:40\nmsgid \"Tabasco\"\nmsgstr \"\"\n\n#: mx/mx_states.py:41\nmsgid \"Tamaulipas\"\nmsgstr \"\"\n\n#: mx/mx_states.py:42\nmsgid \"Tlaxcala\"\nmsgstr \"\"\n\n#: mx/mx_states.py:43\nmsgid \"Veracruz\"\nmsgstr \"\"\n\n#: mx/mx_states.py:44\nmsgid \"Yucatán\"\nmsgstr \"\"\n\n#: mx/mx_states.py:45\nmsgid \"Zacatecas\"\nmsgstr \"\"\n\n#: nl/forms.py:26\nmsgid \"Enter a valid postal code\"\nmsgstr \"\"\n\n#: nl/forms.py:82\nmsgid \"Enter a valid SoFi number\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:4\nmsgid \"Drenthe\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:5\nmsgid \"Flevoland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:6\nmsgid \"Friesland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:7\nmsgid \"Gelderland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:8\nmsgid \"Groningen\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:10\nmsgid \"Noord-Brabant\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:11\nmsgid \"Noord-Holland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:12\nmsgid \"Overijssel\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:13\nmsgid \"Utrecht\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:14\nmsgid \"Zeeland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:15\nmsgid \"Zuid-Holland\"\nmsgstr \"\"\n\n#: no/forms.py:39\nmsgid \"Enter a valid Norwegian social security number.\"\nmsgstr \"\"\n\n#: pe/forms.py:28\nmsgid \"This field requires 8 digits.\"\nmsgstr \"\"\n\n#: pe/forms.py:56\nmsgid \"This field requires 11 digits.\"\nmsgstr \"\"\n\n#: pl/forms.py:42\nmsgid \"National Identification Number consists of 11 digits.\"\nmsgstr \"\"\n\n#: pl/forms.py:43\nmsgid \"Wrong checksum for the National Identification Number.\"\nmsgstr \"\"\n\n#: pl/forms.py:79\nmsgid \"National ID Card Number consists of 3 letters and 6 digits.\"\nmsgstr \"\"\n\n#: pl/forms.py:80\nmsgid \"Wrong checksum for the National ID Card Number.\"\nmsgstr \"\"\n\n#: pl/forms.py:131\nmsgid \"\"\n\"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or \"\n\"XXXXXXXXXX.\"\nmsgstr \"\"\n\n#: pl/forms.py:132\nmsgid \"Wrong checksum for the Tax Number (NIP).\"\nmsgstr \"\"\n\n#: pl/forms.py:171\nmsgid \"National Business Register Number (REGON) consists of 9 or 14 digits.\"\nmsgstr \"\"\n\n#: pl/forms.py:172\nmsgid \"Wrong checksum for the National Business Register Number (REGON).\"\nmsgstr \"\"\n\n#: pl/forms.py:212\nmsgid \"Enter a postal code in the format XX-XXX.\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:8\nmsgid \"Lower Silesia\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:9\nmsgid \"Kuyavia-Pomerania\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:10\nmsgid \"Lublin\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:11\nmsgid \"Lubusz\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:12\nmsgid \"Lodz\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:13\nmsgid \"Lesser Poland\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:14\nmsgid \"Masovia\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:15\nmsgid \"Opole\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:16\nmsgid \"Subcarpatia\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:17\nmsgid \"Podlasie\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:18\nmsgid \"Pomerania\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:19\nmsgid \"Silesia\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:20\nmsgid \"Swietokrzyskie\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:21\nmsgid \"Warmia-Masuria\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:22\nmsgid \"Greater Poland\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:23\nmsgid \"West Pomerania\"\nmsgstr \"\"\n\n#: pt/forms.py:19\nmsgid \"Enter a zip code in the format XXXX-XXX.\"\nmsgstr \"\"\n\n#: pt/forms.py:39\nmsgid \"Phone numbers must have 9 digits, or start by + or 00.\"\nmsgstr \"\"\n\n#: ro/forms.py:22\nmsgid \"Enter a valid CIF.\"\nmsgstr \"\"\n\n#: ro/forms.py:59\nmsgid \"Enter a valid CNP.\"\nmsgstr \"\"\n\n#: ro/forms.py:143\nmsgid \"Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format\"\nmsgstr \"\"\n\n#: ro/forms.py:175\nmsgid \"Phone numbers must be in XXXX-XXXXXX format.\"\nmsgstr \"\"\n\n#: ro/forms.py:200\nmsgid \"Enter a valid postal code in the format XXXXXX\"\nmsgstr \"\"\n\n#: ru/forms.py:37\nmsgid \"Enter a postal code in the format XXXXXX.\"\nmsgstr \"\"\n\n#: ru/forms.py:50\nmsgid \"Enter a passport number in the format XXXX XXXXXX.\"\nmsgstr \"\"\n\n#: ru/forms.py:63\nmsgid \"Enter a passport number in the format XX XXXXXXX.\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:10\nmsgid \"Central Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:11\nmsgid \"South Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:12\nmsgid \"North-West Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:13\nmsgid \"Far-East Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:14\nmsgid \"Siberian Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:15\nmsgid \"Ural Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:16\nmsgid \"Privolzhsky Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:17\nmsgid \"North-Caucasian Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:21\nmsgid \"Moskva\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:22\nmsgid \"Saint-Peterburg\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:23\nmsgid \"Moskovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:24\nmsgid \"Adygeya, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:25\nmsgid \"Bashkortostan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:26\nmsgid \"Buryatia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:27\nmsgid \"Altay, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:28\nmsgid \"Dagestan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:29\nmsgid \"Ingushskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:30\nmsgid \"Kabardino-Balkarskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:31\nmsgid \"Kalmykia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:32\nmsgid \"Karachaevo-Cherkesskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:33\nmsgid \"Karelia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:34\nmsgid \"Komi, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:35\nmsgid \"Mariy Ehl, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:36\nmsgid \"Mordovia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:37\nmsgid \"Sakha, Respublika (Yakutiya)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:38\nmsgid \"Severnaya Osetia, Respublika (Alania)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:39\nmsgid \"Tatarstan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:40\nmsgid \"Tyva, Respublika (Tuva)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:41\nmsgid \"Udmurtskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:42\nmsgid \"Khakassiya, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:43\nmsgid \"Chechenskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:44\nmsgid \"Chuvashskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:45\nmsgid \"Altayskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:46\nmsgid \"Zabaykalskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:47\nmsgid \"Kamchatskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:48\nmsgid \"Krasnodarskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:49\nmsgid \"Krasnoyarskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:50\nmsgid \"Permskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:51\nmsgid \"Primorskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:52\nmsgid \"Stavropol'siyy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:53\nmsgid \"Khabarovskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:54\nmsgid \"Amurskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:55\nmsgid \"Arkhangel'skaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:56\nmsgid \"Astrakhanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:57\nmsgid \"Belgorodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:58\nmsgid \"Bryanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:59\nmsgid \"Vladimirskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:60\nmsgid \"Volgogradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:61\nmsgid \"Vologodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:62\nmsgid \"Voronezhskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:63\nmsgid \"Ivanovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:64\nmsgid \"Irkutskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:65\nmsgid \"Kaliningradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:66\nmsgid \"Kaluzhskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:67\nmsgid \"Kemerovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:68\nmsgid \"Kirovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:69\nmsgid \"Kostromskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:70\nmsgid \"Kurganskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:71\nmsgid \"Kurskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:72\nmsgid \"Leningradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:73\nmsgid \"Lipeckaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:74\nmsgid \"Magadanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:75\nmsgid \"Murmanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:76\nmsgid \"Nizhegorodskaja oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:77\nmsgid \"Novgorodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:78\nmsgid \"Novosibirskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:79\nmsgid \"Omskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:80\nmsgid \"Orenburgskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:81\nmsgid \"Orlovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:82\nmsgid \"Penzenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:83\nmsgid \"Pskovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:84\nmsgid \"Rostovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:85\nmsgid \"Rjazanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:86\nmsgid \"Samarskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:87\nmsgid \"Saratovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:88\nmsgid \"Sakhalinskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:89\nmsgid \"Sverdlovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:90\nmsgid \"Smolenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:91\nmsgid \"Tambovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:92\nmsgid \"Tverskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:93\nmsgid \"Tomskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:94\nmsgid \"Tul'skaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:95\nmsgid \"Tyumenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:96\nmsgid \"Ul'ianovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:97\nmsgid \"Chelyabinskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:98\nmsgid \"Yaroslavskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:99\nmsgid \"Evreyskaya avtonomnaja oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:100\nmsgid \"Neneckiy autonomnyy okrug\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:101\nmsgid \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:102\nmsgid \"Chukotskiy avtonomnyy okrug\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:103\nmsgid \"Yamalo-Neneckiy avtonomnyy okrug\"\nmsgstr \"\"\n\n#: se/forms.py:54\nmsgid \"Enter a valid Swedish organisation number.\"\nmsgstr \"\"\n\n#: se/forms.py:111\nmsgid \"Enter a valid Swedish personal identity number.\"\nmsgstr \"\"\n\n#: se/forms.py:112\nmsgid \"Co-ordination numbers are not allowed.\"\nmsgstr \"\"\n\n#: se/forms.py:154\nmsgid \"Enter a Swedish postal code in the format XXXXX.\"\nmsgstr \"\"\n\n#: se/se_counties.py:16\nmsgid \"Stockholm\"\nmsgstr \"\"\n\n#: se/se_counties.py:17\nmsgid \"Västerbotten\"\nmsgstr \"\"\n\n#: se/se_counties.py:18\nmsgid \"Norrbotten\"\nmsgstr \"\"\n\n#: se/se_counties.py:19\nmsgid \"Uppsala\"\nmsgstr \"\"\n\n#: se/se_counties.py:20\nmsgid \"Södermanland\"\nmsgstr \"\"\n\n#: se/se_counties.py:21\nmsgid \"Östergötland\"\nmsgstr \"\"\n\n#: se/se_counties.py:22\nmsgid \"Jönköping\"\nmsgstr \"\"\n\n#: se/se_counties.py:23\nmsgid \"Kronoberg\"\nmsgstr \"\"\n\n#: se/se_counties.py:24\nmsgid \"Kalmar\"\nmsgstr \"\"\n\n#: se/se_counties.py:25\nmsgid \"Gotland\"\nmsgstr \"\"\n\n#: se/se_counties.py:26\nmsgid \"Blekinge\"\nmsgstr \"\"\n\n#: se/se_counties.py:27\nmsgid \"Skåne\"\nmsgstr \"\"\n\n#: se/se_counties.py:28\nmsgid \"Halland\"\nmsgstr \"\"\n\n#: se/se_counties.py:29\nmsgid \"Västra Götaland\"\nmsgstr \"\"\n\n#: se/se_counties.py:30\nmsgid \"Värmland\"\nmsgstr \"\"\n\n#: se/se_counties.py:31\nmsgid \"Örebro\"\nmsgstr \"\"\n\n#: se/se_counties.py:32\nmsgid \"Västmanland\"\nmsgstr \"\"\n\n#: se/se_counties.py:33\nmsgid \"Dalarna\"\nmsgstr \"\"\n\n#: se/se_counties.py:34\nmsgid \"Gävleborg\"\nmsgstr \"\"\n\n#: se/se_counties.py:35\nmsgid \"Västernorrland\"\nmsgstr \"\"\n\n#: se/se_counties.py:36\nmsgid \"Jämtland\"\nmsgstr \"\"\n\n#: si/forms.py:25\nmsgid \"The first 7 digits of the EMSO must represent a valid past date.\"\nmsgstr \"\"\n\n#: si/forms.py:26\nmsgid \"The EMSO is not valid.\"\nmsgstr \"\"\n\n#: si/forms.py:86\nmsgid \"Enter a valid tax number in form SIXXXXXXXX\"\nmsgstr \"\"\n\n#: si/forms.py:151\nmsgid \"Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:8\nmsgid \"Banska Bystrica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:9\nmsgid \"Banska Stiavnica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:10\nmsgid \"Bardejov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:11\nmsgid \"Banovce nad Bebravou\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:12\nmsgid \"Brezno\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:13\nmsgid \"Bratislava I\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:14\nmsgid \"Bratislava II\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:15\nmsgid \"Bratislava III\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:16\nmsgid \"Bratislava IV\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:17\nmsgid \"Bratislava V\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:18\nmsgid \"Bytca\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:19\nmsgid \"Cadca\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:20\nmsgid \"Detva\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:21\nmsgid \"Dolny Kubin\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:22\nmsgid \"Dunajska Streda\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:23\nmsgid \"Galanta\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:24\nmsgid \"Gelnica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:25\nmsgid \"Hlohovec\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:26\nmsgid \"Humenne\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:27\nmsgid \"Ilava\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:28\nmsgid \"Kezmarok\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:29\nmsgid \"Komarno\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:30\nmsgid \"Kosice I\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:31\nmsgid \"Kosice II\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:32\nmsgid \"Kosice III\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:33\nmsgid \"Kosice IV\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:34\nmsgid \"Kosice - okolie\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:35\nmsgid \"Krupina\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:36\nmsgid \"Kysucke Nove Mesto\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:37\nmsgid \"Levice\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:38\nmsgid \"Levoca\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:39\nmsgid \"Liptovsky Mikulas\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:40\nmsgid \"Lucenec\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:41\nmsgid \"Malacky\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:42\nmsgid \"Martin\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:43\nmsgid \"Medzilaborce\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:44\nmsgid \"Michalovce\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:45\nmsgid \"Myjava\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:46\nmsgid \"Namestovo\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:47\nmsgid \"Nitra\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:48\nmsgid \"Nove Mesto nad Vahom\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:49\nmsgid \"Nove Zamky\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:50\nmsgid \"Partizanske\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:51\nmsgid \"Pezinok\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:52\nmsgid \"Piestany\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:53\nmsgid \"Poltar\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:54\nmsgid \"Poprad\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:55\nmsgid \"Povazska Bystrica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:56\nmsgid \"Presov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:57\nmsgid \"Prievidza\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:58\nmsgid \"Puchov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:59\nmsgid \"Revuca\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:60\nmsgid \"Rimavska Sobota\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:61\nmsgid \"Roznava\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:62\nmsgid \"Ruzomberok\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:63\nmsgid \"Sabinov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:64\nmsgid \"Senec\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:65\nmsgid \"Senica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:66\nmsgid \"Skalica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:67\nmsgid \"Snina\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:68\nmsgid \"Sobrance\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:69\nmsgid \"Spisska Nova Ves\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:70\nmsgid \"Stara Lubovna\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:71\nmsgid \"Stropkov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:72\nmsgid \"Svidnik\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:73\nmsgid \"Sala\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:74\nmsgid \"Topolcany\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:75\nmsgid \"Trebisov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:76\nmsgid \"Trencin\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:77\nmsgid \"Trnava\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:78\nmsgid \"Turcianske Teplice\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:79\nmsgid \"Tvrdosin\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:80\nmsgid \"Velky Krtis\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:81\nmsgid \"Vranov nad Toplou\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:82\nmsgid \"Zlate Moravce\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:83\nmsgid \"Zvolen\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:84\nmsgid \"Zarnovica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:85\nmsgid \"Ziar nad Hronom\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:86\nmsgid \"Zilina\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:8\nmsgid \"Banska Bystrica region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:9\nmsgid \"Bratislava region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:10\nmsgid \"Kosice region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:11\nmsgid \"Nitra region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:12\nmsgid \"Presov region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:13\nmsgid \"Trencin region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:14\nmsgid \"Trnava region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:15\nmsgid \"Zilina region\"\nmsgstr \"\"\n\n#: tr/forms.py:21\nmsgid \"Enter a postal code in the format XXXXX.\"\nmsgstr \"\"\n\n#: tr/forms.py:42\nmsgid \"Phone numbers must be in 0XXX XXX XXXX format.\"\nmsgstr \"\"\n\n#: tr/forms.py:69\nmsgid \"Enter a valid Turkish Identification number.\"\nmsgstr \"\"\n\n#: tr/forms.py:70\nmsgid \"Turkish Identification number must be 11 digits.\"\nmsgstr \"\"\n\n#: us/forms.py:21\nmsgid \"Enter a zip code in the format XXXXX or XXXXX-XXXX.\"\nmsgstr \"\"\n\n#: us/forms.py:59\nmsgid \"Enter a valid U.S. Social Security number in XXX-XX-XXXX format.\"\nmsgstr \"\"\n\n#: us/forms.py:92\nmsgid \"Enter a U.S. state or territory.\"\nmsgstr \"\"\n\n#: us/models.py:8\nmsgid \"U.S. state (two uppercase letters)\"\nmsgstr \"\"\n\n#: us/models.py:17\nmsgid \"U.S. postal code (two uppercase letters)\"\nmsgstr \"\"\n\n#: us/models.py:26\nmsgid \"Phone number\"\nmsgstr \"\"\n\n#: uy/forms.py:29\nmsgid \"Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.\"\nmsgstr \"\"\n\n#: uy/forms.py:31\nmsgid \"Enter a valid CI number.\"\nmsgstr \"\"\n\n#: za/forms.py:22\nmsgid \"Enter a valid South African ID number\"\nmsgstr \"\"\n\n#: za/forms.py:56\nmsgid \"Enter a valid South African postal code\"\nmsgstr \"\"\n\n#: za/za_provinces.py:4\nmsgid \"Eastern Cape\"\nmsgstr \"\"\n\n#: za/za_provinces.py:5\nmsgid \"Free State\"\nmsgstr \"\"\n\n#: za/za_provinces.py:6\nmsgid \"Gauteng\"\nmsgstr \"\"\n\n#: za/za_provinces.py:7\nmsgid \"KwaZulu-Natal\"\nmsgstr \"\"\n\n#: za/za_provinces.py:8\nmsgid \"Limpopo\"\nmsgstr \"\"\n\n#: za/za_provinces.py:9\nmsgid \"Mpumalanga\"\nmsgstr \"\"\n\n#: za/za_provinces.py:10\nmsgid \"Northern Cape\"\nmsgstr \"\"\n\n#: za/za_provinces.py:11\nmsgid \"North West\"\nmsgstr \"\"\n\n#: za/za_provinces.py:12\nmsgid \"Western Cape\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/locale/te/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# bhaskar teja yerneni <prudhviy@gmail.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-10-17 09:17+0000\\n\"\n\"Last-Translator: bhaskar teja yerneni <prudhviy@gmail.com>\\n\"\n\"Language-Team: Telugu (http://www.transifex.com/projects/p/django/language/\"\n\"te/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: te\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: ar/forms.py:30\nmsgid \"Enter a postal code in the format NNNN or ANNNNAAA.\"\nmsgstr \"దయచెసి తపాలు సంహిత  NNNN లెక ANNNNAAA రూపలవన్యములొ ఇవ్వండి\"\n\n#: ar/forms.py:52 br/forms.py:95 br/forms.py:134 pe/forms.py:27 pe/forms.py:55\nmsgid \"This field requires only numbers.\"\nmsgstr \"ఈ క్షేత్రములో కేవలము అంకెలు మాత్రమే సమర్పించగలరు \"\n\n#: ar/forms.py:53\nmsgid \"This field requires 7 or 8 digits.\"\nmsgstr \"ఈ క్షేత్రములో కేవలము 7 లేక 8 అంకములు మాత్రమే సమర్పించగలరు.\"\n\n#: ar/forms.py:82\nmsgid \"Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.\"\nmsgstr \"దయచేసి సరైన CUIT(XX-XXXXXXXX-X లెక XXXXXXXXXXXX రూపలవన్యం) ఇవ్వండి.\"\n\n#: ar/forms.py:83\nmsgid \"Invalid CUIT.\"\nmsgstr \"సరికాని  CUIT.\"\n\n#: ar/forms.py:84\nmsgid \"Invalid legal type. Type must be 27, 20, 23 or 30.\"\nmsgstr \"\"\n\n#: at/at_states.py:5\nmsgid \"Burgenland\"\nmsgstr \"బుర్గెన్లాండ్\"\n\n#: at/at_states.py:6\nmsgid \"Carinthia\"\nmsgstr \"కారింథియా\"\n\n#: at/at_states.py:7\nmsgid \"Lower Austria\"\nmsgstr \"లొవర్ ఆస్ట్రియ\"\n\n#: at/at_states.py:8\nmsgid \"Upper Austria\"\nmsgstr \"అప్పర్ ఆస్ట్రియ\"\n\n#: at/at_states.py:9\nmsgid \"Salzburg\"\nmsgstr \"సాల్సబర్గ్\"\n\n#: at/at_states.py:10\nmsgid \"Styria\"\nmsgstr \"స్టైరియా\"\n\n#: at/at_states.py:11\nmsgid \"Tyrol\"\nmsgstr \"టైరొల్\"\n\n#: at/at_states.py:12\nmsgid \"Vorarlberg\"\nmsgstr \"వొరార్లబెర్గ్\"\n\n#: at/at_states.py:13\nmsgid \"Vienna\"\nmsgstr \"వియెన్నా\"\n\n#: at/forms.py:22 ch/forms.py:22 no/forms.py:19\nmsgid \"Enter a zip code in the format XXXX.\"\nmsgstr \"దయచేసి తపాలు సంహిత XXXX రూపలవన్యములొ ఇవ్వండి.\"\n\n#: at/forms.py:50\nmsgid \"Enter a valid Austrian Social Security Number in XXXX XXXXXX format.\"\nmsgstr \"దయచేసి సరైన ఆస్ట్రేలియన్ సొషల్ సెక్యురిటి (XXXX XXXXXX రూపలవన్యము) సంఖ్య ఇవ్వండి.\"\n\n#: au/forms.py:26\nmsgid \"Enter a 4 digit postcode.\"\nmsgstr \"\"\n\n#: au/models.py:9\nmsgid \"Australian State\"\nmsgstr \"\"\n\n#: au/models.py:19\nmsgid \"Australian Postcode\"\nmsgstr \"\"\n\n#: au/models.py:33\nmsgid \"Australian Phone number\"\nmsgstr \"\"\n\n#: be/be_provinces.py:5\nmsgid \"Antwerp\"\nmsgstr \"అంత్వేర్ప్ \"\n\n#: be/be_provinces.py:6\nmsgid \"Brussels\"\nmsgstr \"బ్రుస్సేల్స్ \"\n\n#: be/be_provinces.py:7\nmsgid \"East Flanders\"\nmsgstr \"తూర్పు ఫ్లన్దేర్స్ \"\n\n#: be/be_provinces.py:8\nmsgid \"Flemish Brabant\"\nmsgstr \"ఫ్లెమిష్  బ్రబంట్\"\n\n#: be/be_provinces.py:9\nmsgid \"Hainaut\"\nmsgstr \"హైనుట్ \"\n\n#: be/be_provinces.py:10\nmsgid \"Liege\"\nmsgstr \"లిఎగే \"\n\n#: be/be_provinces.py:11 nl/nl_provinces.py:9\nmsgid \"Limburg\"\nmsgstr \"లింబర్గ్\"\n\n#: be/be_provinces.py:12\nmsgid \"Luxembourg\"\nmsgstr \"\"\n\n#: be/be_provinces.py:13\nmsgid \"Namur\"\nmsgstr \"నాముర్\"\n\n#: be/be_provinces.py:14\nmsgid \"Walloon Brabant\"\nmsgstr \"వాల్లూన్  బ్రబంట్ \"\n\n#: be/be_provinces.py:15\nmsgid \"West Flanders\"\nmsgstr \"పశ్చిమ ఫ్లన్దేర్స్ \"\n\n#: be/be_regions.py:5\nmsgid \"Brussels Capital Region\"\nmsgstr \"బ్రుస్సేల్స్ రాజధాని ప్రదేశము \"\n\n#: be/be_regions.py:6\nmsgid \"Flemish Region\"\nmsgstr \"ఫ్లెమిష్  ప్రదేశము\"\n\n#: be/be_regions.py:7\nmsgid \"Wallonia\"\nmsgstr \"వాల్లోనియా \"\n\n#: be/forms.py:25\nmsgid \"Enter a valid postal code in the range and format 1XXX - 9XXX.\"\nmsgstr \"\"\n\n#: be/forms.py:48\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\nmsgstr \"\"\n\n#: br/forms.py:22\nmsgid \"Enter a zip code in the format XXXXX-XXX.\"\nmsgstr \"దయచేసి తపాలు సంహిత XXXXX-XXX రూపలవన్యములొ ఇవ్వండి.\"\n\n#: br/forms.py:31\nmsgid \"Phone numbers must be in XX-XXXX-XXXX format.\"\nmsgstr \"దూరవాణి సంఖ్య XX-XXXX-XXXX రూపలావన్యములొ ఉండాలి.\"\n\n#: br/forms.py:58\nmsgid \"\"\n\"Select a valid brazilian state. That state is not one of the available \"\n\"states.\"\nmsgstr \"సరైన బ్రజిలియన్ రజ్యము ఏర్పర్చండి. ఈ రజ్యం లభ్యమైన రజ్యాలొ లెదు.\"\n\n#: br/forms.py:93\nmsgid \"Invalid CPF number.\"\nmsgstr \"చెల్లని CPF సంఖ్య\"\n\n#: br/forms.py:94\nmsgid \"This field requires at most 11 digits or 14 characters.\"\nmsgstr \"\"\n\n#: br/forms.py:133\nmsgid \"Invalid CNPJ number.\"\nmsgstr \"చెల్లని CNPJ సంఖ్య\"\n\n#: br/forms.py:135\nmsgid \"This field requires at least 14 digits\"\nmsgstr \"\"\n\n#: ca/forms.py:29\nmsgid \"Enter a postal code in the format XXX XXX.\"\nmsgstr \"దయచేసి తపాలు సంహిత XXX XXX రూపలవన్యములొ ఇవ్వండి.\"\n\n#: ca/forms.py:47 us/forms.py:30\nmsgid \"Phone numbers must be in XXX-XXX-XXXX format.\"\nmsgstr \"\"\n\n#: ca/forms.py:69\nmsgid \"Enter a Canadian province or territory.\"\nmsgstr \"\"\n\n#: ca/forms.py:110\nmsgid \"Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.\"\nmsgstr \"దయచేసి సరైన కనెడియన్ సొషల్ ఇన్షురన్స్ (XXX-XXX-XXX రూపలవన్యము) సంఖ్య ఇవ్వండి.\"\n\n#: ch/ch_states.py:5\nmsgid \"Aargau\"\nmsgstr \"ఆర్గౌ\"\n\n#: ch/ch_states.py:6\nmsgid \"Appenzell Innerrhoden\"\nmsgstr \"ఆప్పెంజెల్ ఈన్నెర్హొడెన్\"\n\n#: ch/ch_states.py:7\nmsgid \"Appenzell Ausserrhoden\"\nmsgstr \"ఆప్పెంజెల్ ఆఉస్సెర్హొడెన్\"\n\n#: ch/ch_states.py:8\nmsgid \"Basel-Stadt\"\nmsgstr \"బసెల్-స్టద్ట్\"\n\n#: ch/ch_states.py:9\nmsgid \"Basel-Land\"\nmsgstr \"బసెల్-లాండ్\"\n\n#: ch/ch_states.py:10\nmsgid \"Berne\"\nmsgstr \"బర్న్\"\n\n#: ch/ch_states.py:11\nmsgid \"Fribourg\"\nmsgstr \"ఫ్రిబౌర్గ్\"\n\n#: ch/ch_states.py:12\nmsgid \"Geneva\"\nmsgstr \"జెనీవా\"\n\n#: ch/ch_states.py:13\nmsgid \"Glarus\"\nmsgstr \"గ్లారస్\"\n\n#: ch/ch_states.py:14\nmsgid \"Graubuenden\"\nmsgstr \"గ్రౌబెండెన్\"\n\n#: ch/ch_states.py:15\nmsgid \"Jura\"\nmsgstr \"జుర\"\n\n#: ch/ch_states.py:16\nmsgid \"Lucerne\"\nmsgstr \"లుకర్న్\"\n\n#: ch/ch_states.py:17\nmsgid \"Neuchatel\"\nmsgstr \"న్యుకటెల్\"\n\n#: ch/ch_states.py:18\nmsgid \"Nidwalden\"\nmsgstr \"నిడ్వాల్డెన్\"\n\n#: ch/ch_states.py:19\nmsgid \"Obwalden\"\nmsgstr \"ఒబ్వాల్డెన్\"\n\n#: ch/ch_states.py:20\nmsgid \"Schaffhausen\"\nmsgstr \"షఫౌసెన్\"\n\n#: ch/ch_states.py:21\nmsgid \"Schwyz\"\nmsgstr \"ష్విజ్\"\n\n#: ch/ch_states.py:22\nmsgid \"Solothurn\"\nmsgstr \"సొలొథర్న్\"\n\n#: ch/ch_states.py:23\nmsgid \"St. Gallen\"\nmsgstr \"స్త్.గాలెన్\"\n\n#: ch/ch_states.py:24\nmsgid \"Thurgau\"\nmsgstr \"తర్గౌ\"\n\n#: ch/ch_states.py:25\nmsgid \"Ticino\"\nmsgstr \"తికినొ\"\n\n#: ch/ch_states.py:26\nmsgid \"Uri\"\nmsgstr \"ఉరి\"\n\n#: ch/ch_states.py:27\nmsgid \"Valais\"\nmsgstr \"వలె\"\n\n#: ch/ch_states.py:28\nmsgid \"Vaud\"\nmsgstr \"వౌడ్\"\n\n#: ch/ch_states.py:29\nmsgid \"Zug\"\nmsgstr \"జుగ్గ\"\n\n#: ch/ch_states.py:30\nmsgid \"Zurich\"\nmsgstr \"జురిక్\"\n\n#: ch/forms.py:37\nmsgid \"Phone numbers must be in 0XX XXX XX XX format.\"\nmsgstr \"\"\n\n#: ch/forms.py:68\nmsgid \"\"\n\"Enter a valid Swiss identity or passport card number in X1234567<0 or \"\n\"1234567890 format.\"\nmsgstr \"\"\n\"దయచేసి సరైన స్విస్సు గుర్తు లెక పాస్పొర్టు సంఖ్య ఇవ్వండి (X1234567<0 లెక 1234567890 \"\n\"రూపలావన్యము)\"\n\n#: cl/forms.py:32\nmsgid \"Enter a valid Chilean RUT.\"\nmsgstr \"దయచేసి సరైన  చిలి RUT ఇవ్వండి.\"\n\n#: cl/forms.py:33\nmsgid \"Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.\"\nmsgstr \"సరైన చిలి RUT (XX.XXX.XXX-X రూపలవన్యము) సంఖ్య ఇవ్వండి.\"\n\n#: cl/forms.py:34\nmsgid \"The Chilean RUT is not valid.\"\nmsgstr \"మీరు ఇచ్చిన చిలి RUT చెల్లదు.\"\n\n#: cn/forms.py:84\nmsgid \"Enter a post code in the format XXXXXX.\"\nmsgstr \"\"\n\n#: cn/forms.py:105\nmsgid \"ID Card Number consists of 15 or 18 digits.\"\nmsgstr \"\"\n\n#: cn/forms.py:106\nmsgid \"Invalid ID Card Number: Wrong checksum\"\nmsgstr \"\"\n\n#: cn/forms.py:107\nmsgid \"Invalid ID Card Number: Wrong birthdate\"\nmsgstr \"\"\n\n#: cn/forms.py:108\nmsgid \"Invalid ID Card Number: Wrong location code\"\nmsgstr \"\"\n\n#: cn/forms.py:193\nmsgid \"Enter a valid phone number.\"\nmsgstr \"\"\n\n#: cn/forms.py:210\nmsgid \"Enter a valid cell number.\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:8\nmsgid \"Prague\"\nmsgstr \"ప్రెగ్\"\n\n#: cz/cz_regions.py:9\nmsgid \"Central Bohemian Region\"\nmsgstr \"మధ్య బోహేమియన్ ప్రదేశము \"\n\n#: cz/cz_regions.py:10\nmsgid \"South Bohemian Region\"\nmsgstr \"దక్షిణ బోహేమియన్ ప్రదేశము \"\n\n#: cz/cz_regions.py:11\nmsgid \"Pilsen Region\"\nmsgstr \"పిల్సేన్ ప్రదేశము\"\n\n#: cz/cz_regions.py:12\nmsgid \"Carlsbad Region\"\nmsgstr \"కార్ల్సబాద్ \"\n\n#: cz/cz_regions.py:13\nmsgid \"Usti Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:14\nmsgid \"Liberec Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:15\nmsgid \"Hradec Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:16\nmsgid \"Pardubice Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:17\nmsgid \"Vysocina Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:18\nmsgid \"South Moravian Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:19\nmsgid \"Olomouc Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:20\nmsgid \"Zlin Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:21\nmsgid \"Moravian-Silesian Region\"\nmsgstr \"\"\n\n#: cz/forms.py:32 sk/forms.py:33\nmsgid \"Enter a postal code in the format XXXXX or XXX XX.\"\nmsgstr \"దయచేసి తపాలు సంహిత  (XXXXX లెక XXX XX రూపలవన్యములొ )ఇవ్వండి.\"\n\n#: cz/forms.py:52\nmsgid \"Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.\"\nmsgstr \"\"\n\n#: cz/forms.py:53\nmsgid \"Enter a valid birth number.\"\nmsgstr \"దయచేసి సరియిన పుట్టిన తేదిను ఇవ్వండి \"\n\n#: cz/forms.py:102\nmsgid \"Enter a valid IC number.\"\nmsgstr \"\"\n\n#: de/de_states.py:5\nmsgid \"Baden-Wuerttemberg\"\nmsgstr \"భాడెన్-వెర్తెంబెర్గ్\"\n\n#: de/de_states.py:6\nmsgid \"Bavaria\"\nmsgstr \"బవారియా\"\n\n#: de/de_states.py:7\nmsgid \"Berlin\"\nmsgstr \"బెర్లిన్\"\n\n#: de/de_states.py:8\nmsgid \"Brandenburg\"\nmsgstr \"బ్రాండెంబర్గ్\"\n\n#: de/de_states.py:9\nmsgid \"Bremen\"\nmsgstr \"బ్రెమెన్\"\n\n#: de/de_states.py:10\nmsgid \"Hamburg\"\nmsgstr \"హంబర్గ్\"\n\n#: de/de_states.py:11\nmsgid \"Hessen\"\nmsgstr \"హెస్సెన్\"\n\n#: de/de_states.py:12\nmsgid \"Mecklenburg-Western Pomerania\"\nmsgstr \"మెక్లెంబర్గ్-పశ్చిమ ఫొమెరనియా\"\n\n#: de/de_states.py:13\nmsgid \"Lower Saxony\"\nmsgstr \"లౌఎర్ సాక్సొని\"\n\n#: de/de_states.py:14\nmsgid \"North Rhine-Westphalia\"\nmsgstr \"ఉత్తర రైన్-వెస్టఫలియా\"\n\n#: de/de_states.py:15\nmsgid \"Rhineland-Palatinate\"\nmsgstr \"రైనెలాండ్-ఫలాటినట్\"\n\n#: de/de_states.py:16\nmsgid \"Saarland\"\nmsgstr \"సార్లాండ్\"\n\n#: de/de_states.py:17\nmsgid \"Saxony\"\nmsgstr \"సాక్సొని\"\n\n#: de/de_states.py:18\nmsgid \"Saxony-Anhalt\"\nmsgstr \"సాక్సొని-అనాట్\"\n\n#: de/de_states.py:19\nmsgid \"Schleswig-Holstein\"\nmsgstr \"శ్లెజ్విగ్-హొల్సటైన్\"\n\n#: de/de_states.py:20\nmsgid \"Thuringia\"\nmsgstr \"థురింగియా\"\n\n#: de/forms.py:20 fi/forms.py:18 fr/forms.py:20\nmsgid \"Enter a zip code in the format XXXXX.\"\nmsgstr \"దయచేసి తపాలు సంహిత XXXXX రూపలవన్యములొ ఇవ్వండి.\"\n\n#: de/forms.py:46\nmsgid \"\"\n\"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"format.\"\nmsgstr \"\"\n\"దయచేసి సరైన జర్మన్ గుర్తు చీట్లు (XXXXXXXXXXX-XXXXXXX-XXXXXXX-X రూపలవన్యము) సంఖ్య \"\n\"ఇవ్వండి.\"\n\n#: es/es_provinces.py:5\nmsgid \"Araba\"\nmsgstr \"\"\n\n#: es/es_provinces.py:6\nmsgid \"Albacete\"\nmsgstr \"అల్బాసెట్\"\n\n#: es/es_provinces.py:7\nmsgid \"Alacant\"\nmsgstr \"అలకంట్\"\n\n#: es/es_provinces.py:8\nmsgid \"Almeria\"\nmsgstr \"అల్మిరియా\"\n\n#: es/es_provinces.py:9\nmsgid \"Avila\"\nmsgstr \"అవిల\"\n\n#: es/es_provinces.py:10\nmsgid \"Badajoz\"\nmsgstr \"బడాజొజ్జ్\"\n\n#: es/es_provinces.py:11\nmsgid \"Illes Balears\"\nmsgstr \"ఇల్లెస్ బలేర్స్\"\n\n#: es/es_provinces.py:12\nmsgid \"Barcelona\"\nmsgstr \"బార్సిలొనా\"\n\n#: es/es_provinces.py:13\nmsgid \"Burgos\"\nmsgstr \"బర్గొస్\"\n\n#: es/es_provinces.py:14\nmsgid \"Caceres\"\nmsgstr \"కసిరెస్\"\n\n#: es/es_provinces.py:15\nmsgid \"Cadiz\"\nmsgstr \"కడిజ్\"\n\n#: es/es_provinces.py:16\nmsgid \"Castello\"\nmsgstr \"kasTello\"\n\n#: es/es_provinces.py:17\nmsgid \"Ciudad Real\"\nmsgstr \"సియుడాడ్ రియాల్\"\n\n#: es/es_provinces.py:18\nmsgid \"Cordoba\"\nmsgstr \"కొర్డొబా\"\n\n#: es/es_provinces.py:19\nmsgid \"A Coruna\"\nmsgstr \"ఆ కొరున్యా\"\n\n#: es/es_provinces.py:20\nmsgid \"Cuenca\"\nmsgstr \"కువెంకా\"\n\n#: es/es_provinces.py:21\nmsgid \"Girona\"\nmsgstr \"గిరొనా\"\n\n#: es/es_provinces.py:22\nmsgid \"Granada\"\nmsgstr \"గ్రనడా\"\n\n#: es/es_provinces.py:23\nmsgid \"Guadalajara\"\nmsgstr \"గువడలజర\"\n\n#: es/es_provinces.py:24\nmsgid \"Guipuzkoa\"\nmsgstr \"గువిపుజకొవ\"\n\n#: es/es_provinces.py:25\nmsgid \"Huelva\"\nmsgstr \"హువెల్వ\"\n\n#: es/es_provinces.py:26\nmsgid \"Huesca\"\nmsgstr \"హుఎస్కా\"\n\n#: es/es_provinces.py:27\nmsgid \"Jaen\"\nmsgstr \"జేన్\"\n\n#: es/es_provinces.py:28\nmsgid \"Leon\"\nmsgstr \"లియొన్\"\n\n#: es/es_provinces.py:29\nmsgid \"Lleida\"\nmsgstr \"లైడ\"\n\n#: es/es_provinces.py:30 es/es_regions.py:17\nmsgid \"La Rioja\"\nmsgstr \"ల రిఒజ\"\n\n#: es/es_provinces.py:31\nmsgid \"Lugo\"\nmsgstr \"లుగొ\"\n\n#: es/es_provinces.py:32 es/es_regions.py:18\nmsgid \"Madrid\"\nmsgstr \"మాడ్రిడ్\"\n\n#: es/es_provinces.py:33\nmsgid \"Malaga\"\nmsgstr \"మలగా\"\n\n#: es/es_provinces.py:34\nmsgid \"Murcia\"\nmsgstr \"మర్కియ\"\n\n#: es/es_provinces.py:35\nmsgid \"Navarre\"\nmsgstr \"నవర్రె\"\n\n#: es/es_provinces.py:36\nmsgid \"Ourense\"\nmsgstr \"ఔరెన్సె\"\n\n#: es/es_provinces.py:37\nmsgid \"Asturias\"\nmsgstr \"అస్టురియాస్\"\n\n#: es/es_provinces.py:38\nmsgid \"Palencia\"\nmsgstr \"పలెన్శియా\"\n\n#: es/es_provinces.py:39\nmsgid \"Las Palmas\"\nmsgstr \"లా పామాస్\"\n\n#: es/es_provinces.py:40\nmsgid \"Pontevedra\"\nmsgstr \"పొంటెవెడెర\"\n\n#: es/es_provinces.py:41\nmsgid \"Salamanca\"\nmsgstr \"సలమంక\"\n\n#: es/es_provinces.py:42\nmsgid \"Santa Cruz de Tenerife\"\nmsgstr \"సాంట క్రుజ్ ద టెనెరిఫె\"\n\n#: es/es_provinces.py:43 es/es_regions.py:11\nmsgid \"Cantabria\"\nmsgstr \"కంటబ్రియా\"\n\n#: es/es_provinces.py:44\nmsgid \"Segovia\"\nmsgstr \"సెగొవియా\"\n\n#: es/es_provinces.py:45\nmsgid \"Seville\"\nmsgstr \"సెవియా\"\n\n#: es/es_provinces.py:46\nmsgid \"Soria\"\nmsgstr \"సొరియా\"\n\n#: es/es_provinces.py:47\nmsgid \"Tarragona\"\nmsgstr \"టర్రగొన\"\n\n#: es/es_provinces.py:48\nmsgid \"Teruel\"\nmsgstr \"టెరువెల్\"\n\n#: es/es_provinces.py:49\nmsgid \"Toledo\"\nmsgstr \"టొలిడొ\"\n\n#: es/es_provinces.py:50\nmsgid \"Valencia\"\nmsgstr \"వెలెన్షియా\"\n\n#: es/es_provinces.py:51\nmsgid \"Valladolid\"\nmsgstr \"వల్లడొలిడ్\"\n\n#: es/es_provinces.py:52\nmsgid \"Bizkaia\"\nmsgstr \"బిజ్కైయా\"\n\n#: es/es_provinces.py:53\nmsgid \"Zamora\"\nmsgstr \"జమొర\"\n\n#: es/es_provinces.py:54\nmsgid \"Zaragoza\"\nmsgstr \"జరగొసా\"\n\n#: es/es_provinces.py:55\nmsgid \"Ceuta\"\nmsgstr \"క్యుట\"\n\n#: es/es_provinces.py:56\nmsgid \"Melilla\"\nmsgstr \"మెలిల్ల్యా\"\n\n#: es/es_regions.py:5\nmsgid \"Andalusia\"\nmsgstr \"అండలుసియా\"\n\n#: es/es_regions.py:6\nmsgid \"Aragon\"\nmsgstr \"ఎరొగొన్\"\n\n#: es/es_regions.py:7\nmsgid \"Principality of Asturias\"\nmsgstr \"ప్రిన్సిపాలిటి ఒఫ్ ఆస్టురియాస్\"\n\n#: es/es_regions.py:8\nmsgid \"Balearic Islands\"\nmsgstr \"బలెయారిక్ ద్వీపాలు\"\n\n#: es/es_regions.py:9\nmsgid \"Basque Country\"\nmsgstr \"బాస్క్ దెశం\"\n\n#: es/es_regions.py:10\nmsgid \"Canary Islands\"\nmsgstr \"కనరి ద్వీపాలు\"\n\n#: es/es_regions.py:12\nmsgid \"Castile-La Mancha\"\nmsgstr \"కస్తిల్-ల మంక\"\n\n#: es/es_regions.py:13\nmsgid \"Castile and Leon\"\nmsgstr \"కస్టిల్ మరియు లియొన్\"\n\n#: es/es_regions.py:14\nmsgid \"Catalonia\"\nmsgstr \"కటలొనియా\"\n\n#: es/es_regions.py:15\nmsgid \"Extremadura\"\nmsgstr \"ఎక్స్ట్రీమదుర\"\n\n#: es/es_regions.py:16\nmsgid \"Galicia\"\nmsgstr \"గలిషియా\"\n\n#: es/es_regions.py:19\nmsgid \"Region of Murcia\"\nmsgstr \"మర్కియ రాజ్యము\"\n\n#: es/es_regions.py:20\nmsgid \"Foral Community of Navarre\"\nmsgstr \"ఫొరల్  కమ్యునిటి ఒఫ్ నావర్రె\"\n\n#: es/es_regions.py:21\nmsgid \"Valencian Community\"\nmsgstr \"వాలెన్షియన్ కమ్యునిటి\"\n\n#: es/forms.py:26\nmsgid \"Enter a valid postal code in the range and format 01XXX - 52XXX.\"\nmsgstr \"\"\n\n#: es/forms.py:46\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or \"\n\"9XXXXXXXX.\"\nmsgstr \"\"\n\"దయచేసి సరైన దూరవాణి సంఖ్య ఇవ్వండి (6XXXXXXXX, 8XXXXXXXX లెక 9XXXXXXXX రూపలావన్యము)\"\n\n#: es/forms.py:73\nmsgid \"Please enter a valid NIF, NIE, or CIF.\"\nmsgstr \"దయచేసి సరైన NIF, NIE లెక CIF ఇవ్వండి .\"\n\n#: es/forms.py:74\nmsgid \"Please enter a valid NIF or NIE.\"\nmsgstr \"దయచేసి సరైన NIF లెక NIEఇవ్వండి.\"\n\n#: es/forms.py:75\nmsgid \"Invalid checksum for NIF.\"\nmsgstr \"చెల్లని  NIF నియంతృలెక్యం.\"\n\n#: es/forms.py:76\nmsgid \"Invalid checksum for NIE.\"\nmsgstr \"చెల్లని  NIE నియంతృలెక్యం.\"\n\n#: es/forms.py:77\nmsgid \"Invalid checksum for CIF.\"\nmsgstr \"చెల్లని  CIF నియంతృలెక్యం.\"\n\n#: es/forms.py:149\nmsgid \"\"\n\"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.\"\nmsgstr \"దయచేసి సరైన  కొఠీ లెక్య సంఖ్య ఇవ్వండి (XXXX-XXXX-XX-XXXXXXXXXX రూపలావన్యము)\"\n\n#: es/forms.py:150\nmsgid \"Invalid checksum for bank account number.\"\nmsgstr \"చెల్లని  కొఠీ లెక్క సంఖ్య నియంతృలెక్యం.\"\n\n#: fi/forms.py:33\nmsgid \"Enter a valid Finnish social security number.\"\nmsgstr \"దయచెసి సరైన ఫిన్నిష్ సొషల్ సెక్యురిటి సంఖ్య ఇవ్వండి.\"\n\n#: fr/forms.py:35\nmsgid \"Phone numbers must be in 0X XX XX XX XX format.\"\nmsgstr \"\"\n\n#: gb/forms.py:25\nmsgid \"Enter a valid postcode.\"\nmsgstr \"దయచేసి సరైన తపాలు సంహిత ఇవ్వండి.\"\n\n#: gb/gb_regions.py:11\nmsgid \"Bedfordshire\"\nmsgstr \"బెడ్ఫర్డషైర్\"\n\n#: gb/gb_regions.py:12\nmsgid \"Buckinghamshire\"\nmsgstr \"బఖింఘమషైర్\"\n\n#: gb/gb_regions.py:14\nmsgid \"Cheshire\"\nmsgstr \"చెషైర్\"\n\n#: gb/gb_regions.py:15\nmsgid \"Cornwall and Isles of Scilly\"\nmsgstr \"కార్న్వాల్ మరియు సిసిల్లీ ద్వీపాలు\"\n\n#: gb/gb_regions.py:16\nmsgid \"Cumbria\"\nmsgstr \"కంబ్రియా\"\n\n#: gb/gb_regions.py:17\nmsgid \"Derbyshire\"\nmsgstr \"డెర్బీషైర్\"\n\n#: gb/gb_regions.py:18\nmsgid \"Devon\"\nmsgstr \"డెవొన్\"\n\n#: gb/gb_regions.py:19\nmsgid \"Dorset\"\nmsgstr \"డొర్సెట్\"\n\n#: gb/gb_regions.py:20\nmsgid \"Durham\"\nmsgstr \"డుర్హం\"\n\n#: gb/gb_regions.py:21\nmsgid \"East Sussex\"\nmsgstr \"తూర్పు  సుస్సెక్స\"\n\n#: gb/gb_regions.py:22\nmsgid \"Essex\"\nmsgstr \"ఎసెక్స\"\n\n#: gb/gb_regions.py:23\nmsgid \"Gloucestershire\"\nmsgstr \"గ్లౌసెస్తెరషైర్\"\n\n#: gb/gb_regions.py:24\nmsgid \"Greater London\"\nmsgstr \"గ్రెటర్ లండన్\"\n\n#: gb/gb_regions.py:25\nmsgid \"Greater Manchester\"\nmsgstr \"గ్రెటర్ మాంచెస్టర్\"\n\n#: gb/gb_regions.py:26\nmsgid \"Hampshire\"\nmsgstr \"హాంపషైర్\"\n\n#: gb/gb_regions.py:27\nmsgid \"Hertfordshire\"\nmsgstr \"హెర్ట్ఫొర్డషైర్\"\n\n#: gb/gb_regions.py:28\nmsgid \"Kent\"\nmsgstr \"కెంట్\"\n\n#: gb/gb_regions.py:29\nmsgid \"Lancashire\"\nmsgstr \"లెంకషైర్\"\n\n#: gb/gb_regions.py:30\nmsgid \"Leicestershire\"\nmsgstr \"లెసెటర్షర్\"\n\n#: gb/gb_regions.py:31\nmsgid \"Lincolnshire\"\nmsgstr \"లింకన్షర్\"\n\n#: gb/gb_regions.py:32\nmsgid \"Merseyside\"\nmsgstr \"మర్సీసైడ్\"\n\n#: gb/gb_regions.py:33\nmsgid \"Norfolk\"\nmsgstr \"నార్ఫొల్క\"\n\n#: gb/gb_regions.py:34\nmsgid \"North Yorkshire\"\nmsgstr \"ఉత్తర యొర్కషైర్\"\n\n#: gb/gb_regions.py:35\nmsgid \"Northamptonshire\"\nmsgstr \"నార్తంప్టొనషైర్\"\n\n#: gb/gb_regions.py:36\nmsgid \"Northumberland\"\nmsgstr \"నార్థంబెర్లాండ్\"\n\n#: gb/gb_regions.py:37\nmsgid \"Nottinghamshire\"\nmsgstr \"నాటింఘమషైర్\"\n\n#: gb/gb_regions.py:38\nmsgid \"Oxfordshire\"\nmsgstr \"ఆక్ష్ఫర్డషైర్\"\n\n#: gb/gb_regions.py:39\nmsgid \"Shropshire\"\nmsgstr \"ష్రొపషైర్\"\n\n#: gb/gb_regions.py:40\nmsgid \"Somerset\"\nmsgstr \"సొమర్సెట్\"\n\n#: gb/gb_regions.py:41\nmsgid \"South Yorkshire\"\nmsgstr \"దక్షిణ యొర్కషైర్\"\n\n#: gb/gb_regions.py:42\nmsgid \"Staffordshire\"\nmsgstr \"స్టఫ్ఫొర్డషైర్\"\n\n#: gb/gb_regions.py:43\nmsgid \"Suffolk\"\nmsgstr \"సఫ్ఫొల్క\"\n\n#: gb/gb_regions.py:44\nmsgid \"Surrey\"\nmsgstr \"సుర్రెయ్\"\n\n#: gb/gb_regions.py:45\nmsgid \"Tyne and Wear\"\nmsgstr \"టైన్ మరియు వెర్\"\n\n#: gb/gb_regions.py:46\nmsgid \"Warwickshire\"\nmsgstr \"వార్విక్షైర్\"\n\n#: gb/gb_regions.py:47\nmsgid \"West Midlands\"\nmsgstr \"పశ్చిమ మిడ్లాండ్స\"\n\n#: gb/gb_regions.py:48\nmsgid \"West Sussex\"\nmsgstr \"పశ్చిమ ససెక్స\"\n\n#: gb/gb_regions.py:49\nmsgid \"West Yorkshire\"\nmsgstr \"పశ్చిమ యొర్కషైరె\"\n\n#: gb/gb_regions.py:50\nmsgid \"Wiltshire\"\nmsgstr \"విల్టషైర్\"\n\n#: gb/gb_regions.py:51\nmsgid \"Worcestershire\"\nmsgstr \"వొర్సెస్టషైర్\"\n\n#: gb/gb_regions.py:55\nmsgid \"County Antrim\"\nmsgstr \"కౌంటీ అంట్రిం\"\n\n#: gb/gb_regions.py:56\nmsgid \"County Armagh\"\nmsgstr \"కౌంటీ అర్మాఘ్\"\n\n#: gb/gb_regions.py:57\nmsgid \"County Down\"\nmsgstr \"కౌంటీ డౌన్\"\n\n#: gb/gb_regions.py:58\nmsgid \"County Fermanagh\"\nmsgstr \"కౌంటీ ఫెర్మనాఘ్\"\n\n#: gb/gb_regions.py:59\nmsgid \"County Londonderry\"\nmsgstr \"కౌంటీ లొండొండెర్రీ\"\n\n#: gb/gb_regions.py:60\nmsgid \"County Tyrone\"\nmsgstr \"కౌంటీ టైరొన్\"\n\n#: gb/gb_regions.py:64\nmsgid \"Clwyd\"\nmsgstr \"క్ల్వైడ్\"\n\n#: gb/gb_regions.py:65\nmsgid \"Dyfed\"\nmsgstr \"డైఫెద్\"\n\n#: gb/gb_regions.py:66\nmsgid \"Gwent\"\nmsgstr \"గ్వెంట్\"\n\n#: gb/gb_regions.py:67\nmsgid \"Gwynedd\"\nmsgstr \"గ్వైనెడ్\"\n\n#: gb/gb_regions.py:68\nmsgid \"Mid Glamorgan\"\nmsgstr \"మిడ్ గ్లమార్గాను\"\n\n#: gb/gb_regions.py:69\nmsgid \"Powys\"\nmsgstr \"పొవిస్\"\n\n#: gb/gb_regions.py:70\nmsgid \"South Glamorgan\"\nmsgstr \"దక్షిణ గ్లమార్గాను\"\n\n#: gb/gb_regions.py:71\nmsgid \"West Glamorgan\"\nmsgstr \"పశ్చిమ గ్లమార్గాను\"\n\n#: gb/gb_regions.py:75\nmsgid \"Borders\"\nmsgstr \"బార్డర్స్\"\n\n#: gb/gb_regions.py:76\nmsgid \"Central Scotland\"\nmsgstr \"మధ్యస్థమైన  స్కాట్లాండ్\"\n\n#: gb/gb_regions.py:77\nmsgid \"Dumfries and Galloway\"\nmsgstr \"డుంఫ్రిఎస్ మరియు గెలొవెస్\"\n\n#: gb/gb_regions.py:78\nmsgid \"Fife\"\nmsgstr \"ఫిఫె\"\n\n#: gb/gb_regions.py:79\nmsgid \"Grampian\"\nmsgstr \"గ్రాంపియన్\"\n\n#: gb/gb_regions.py:80\nmsgid \"Highland\"\nmsgstr \"హైలాండ్\"\n\n#: gb/gb_regions.py:81\nmsgid \"Lothian\"\nmsgstr \"లొతియన్\"\n\n#: gb/gb_regions.py:82\nmsgid \"Orkney Islands\"\nmsgstr \"ఓర్క్నీ ద్వీపాలు\"\n\n#: gb/gb_regions.py:83\nmsgid \"Shetland Islands\"\nmsgstr \"షెట్లాండ్ ద్వీపాలు\"\n\n#: gb/gb_regions.py:84\nmsgid \"Strathclyde\"\nmsgstr \"స్త్రట్తక్లైడ్\"\n\n#: gb/gb_regions.py:85\nmsgid \"Tayside\"\nmsgstr \"టేసైడ్\"\n\n#: gb/gb_regions.py:86\nmsgid \"Western Isles\"\nmsgstr \"వెస్టెర్న ద్వీపాలు\"\n\n#: gb/gb_regions.py:90\nmsgid \"England\"\nmsgstr \"ఇంగ్లాండ్\"\n\n#: gb/gb_regions.py:91\nmsgid \"Northern Ireland\"\nmsgstr \"నార్తెర్న ఐర్లాండ్\"\n\n#: gb/gb_regions.py:92\nmsgid \"Scotland\"\nmsgstr \"స్కాట్లాండ్\"\n\n#: gb/gb_regions.py:93\nmsgid \"Wales\"\nmsgstr \"వెల్స్\"\n\n#: hk/forms.py:37\n#, python-format\nmsgid \"Phone number should not start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:40\n#, python-format\nmsgid \"Phone number must be in one of the following formats: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:42\n#, python-format\nmsgid \"Phone number should start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hr/forms.py:76\nmsgid \"Enter a valid 13 digit JMBG\"\nmsgstr \"\"\n\n#: hr/forms.py:77\nmsgid \"Error in date segment\"\nmsgstr \"\"\n\n#: hr/forms.py:123\nmsgid \"Enter a valid 11 digit OIB\"\nmsgstr \"\"\n\n#: hr/forms.py:152 id/forms.py:112\nmsgid \"Enter a valid vehicle license plate number\"\nmsgstr \"\"\n\n#: hr/forms.py:153\nmsgid \"Enter a valid location code\"\nmsgstr \"\"\n\n#: hr/forms.py:154\nmsgid \"Number part cannot be zero\"\nmsgstr \"\"\n\n#: hr/forms.py:190\nmsgid \"Enter a valid 5 digit postal code\"\nmsgstr \"\"\n\n#: hr/forms.py:218 id/forms.py:72 nl/forms.py:56\nmsgid \"Enter a valid phone number\"\nmsgstr \"దయచెసి సరైన దూరవాణి సంఖ్య ఇవ్వండి\"\n\n#: hr/forms.py:219\nmsgid \"Enter a valid area or mobile network code\"\nmsgstr \"\"\n\n#: hr/forms.py:220\nmsgid \"The phone nubmer is too long\"\nmsgstr \"\"\n\n#: hr/forms.py:258\nmsgid \"Enter a valid 19 digit JMBAG starting with 601983\"\nmsgstr \"\"\n\n#: hr/forms.py:259\nmsgid \"Card issue number cannot be zero\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:14\nmsgid \"Grad Zagreb\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:15\nmsgid \"Bjelovarsko-bilogorska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:16\nmsgid \"Brodsko-posavska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:17\nmsgid \"Dubrovačko-neretvanska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:18\nmsgid \"Istarska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:19\nmsgid \"Karlovačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:20\nmsgid \"Koprivničko-križevačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:21\nmsgid \"Krapinsko-zagorska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:22\nmsgid \"Ličko-senjska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:23\nmsgid \"Međimurska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:24\nmsgid \"Osječko-baranjska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:25\nmsgid \"Požeško-slavonska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:26\nmsgid \"Primorsko-goranska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:27\nmsgid \"Sisačko-moslavačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:28\nmsgid \"Splitsko-dalmatinska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:29\nmsgid \"Šibensko-kninska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:30\nmsgid \"Varaždinska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:31\nmsgid \"Virovitičko-podravska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:32\nmsgid \"Vukovarsko-srijemska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:33\nmsgid \"Zadarska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:34\nmsgid \"Zagrebačka županija\"\nmsgstr \"\"\n\n#: id/forms.py:31\nmsgid \"Enter a valid post code\"\nmsgstr \"దయచేసి సరియిన తపాలా సంక్యను ఇవ్వండి \"\n\n#: id/forms.py:176\nmsgid \"Enter a valid NIK/KTP number\"\nmsgstr \"దయచేసి సరియిన NIK/KTP సంక్యను ఇవ్వండి \"\n\n#: id/id_choices.py:15\nmsgid \"Aceh\"\nmsgstr \"\"\n\n#: id/id_choices.py:16 id/id_choices.py:79\nmsgid \"Bali\"\nmsgstr \"బాలి \"\n\n#: id/id_choices.py:17 id/id_choices.py:51\nmsgid \"Banten\"\nmsgstr \"\"\n\n#: id/id_choices.py:18 id/id_choices.py:60\nmsgid \"Bengkulu\"\nmsgstr \"\"\n\n#: id/id_choices.py:19 id/id_choices.py:53\nmsgid \"Yogyakarta\"\nmsgstr \"\"\n\n#: id/id_choices.py:20 id/id_choices.py:57\nmsgid \"Jakarta\"\nmsgstr \"జకార్త\"\n\n#: id/id_choices.py:21 id/id_choices.py:81\nmsgid \"Gorontalo\"\nmsgstr \"గోరోంటలో\"\n\n#: id/id_choices.py:22 id/id_choices.py:63\nmsgid \"Jambi\"\nmsgstr \"జాంబి \"\n\n#: id/id_choices.py:23\nmsgid \"Jawa Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:24\nmsgid \"Jawa Tengah\"\nmsgstr \"\"\n\n#: id/id_choices.py:25\nmsgid \"Jawa Timur\"\nmsgstr \"\"\n\n#: id/id_choices.py:26 id/id_choices.py:94\nmsgid \"Kalimantan Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:27 id/id_choices.py:72\nmsgid \"Kalimantan Selatan\"\nmsgstr \"\"\n\n#: id/id_choices.py:28 id/id_choices.py:95\nmsgid \"Kalimantan Tengah\"\nmsgstr \"\"\n\n#: id/id_choices.py:29 id/id_choices.py:96\nmsgid \"Kalimantan Timur\"\nmsgstr \"\"\n\n#: id/id_choices.py:30\nmsgid \"Kepulauan Bangka-Belitung\"\nmsgstr \"\"\n\n#: id/id_choices.py:31 id/id_choices.py:68\nmsgid \"Kepulauan Riau\"\nmsgstr \"\"\n\n#: id/id_choices.py:32 id/id_choices.py:61\nmsgid \"Lampung\"\nmsgstr \"\"\n\n#: id/id_choices.py:33 id/id_choices.py:76\nmsgid \"Maluku\"\nmsgstr \"\"\n\n#: id/id_choices.py:34 id/id_choices.py:77\nmsgid \"Maluku Utara\"\nmsgstr \"\"\n\n#: id/id_choices.py:35\nmsgid \"Nusa Tenggara Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:36\nmsgid \"Nusa Tenggara Timur\"\nmsgstr \"\"\n\n#: id/id_choices.py:37\nmsgid \"Papua\"\nmsgstr \"\"\n\n#: id/id_choices.py:38\nmsgid \"Papua Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:39 id/id_choices.py:66\nmsgid \"Riau\"\nmsgstr \"\"\n\n#: id/id_choices.py:40 id/id_choices.py:74\nmsgid \"Sulawesi Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:41 id/id_choices.py:75\nmsgid \"Sulawesi Selatan\"\nmsgstr \"\"\n\n#: id/id_choices.py:42 id/id_choices.py:82\nmsgid \"Sulawesi Tengah\"\nmsgstr \"\"\n\n#: id/id_choices.py:43 id/id_choices.py:85\nmsgid \"Sulawesi Tenggara\"\nmsgstr \"\"\n\n#: id/id_choices.py:44\nmsgid \"Sulawesi Utara\"\nmsgstr \"\"\n\n#: id/id_choices.py:45 id/id_choices.py:58\nmsgid \"Sumatera Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:46 id/id_choices.py:62\nmsgid \"Sumatera Selatan\"\nmsgstr \"\"\n\n#: id/id_choices.py:47 id/id_choices.py:64\nmsgid \"Sumatera Utara\"\nmsgstr \"\"\n\n#: id/id_choices.py:52\nmsgid \"Magelang\"\nmsgstr \"\"\n\n#: id/id_choices.py:54\nmsgid \"Surakarta - Solo\"\nmsgstr \"\"\n\n#: id/id_choices.py:55\nmsgid \"Madiun\"\nmsgstr \"\"\n\n#: id/id_choices.py:56\nmsgid \"Kediri\"\nmsgstr \"\"\n\n#: id/id_choices.py:59\nmsgid \"Tapanuli\"\nmsgstr \"\"\n\n#: id/id_choices.py:65\nmsgid \"Nanggroe Aceh Darussalam\"\nmsgstr \"\"\n\n#: id/id_choices.py:67\nmsgid \"Kepulauan Bangka Belitung\"\nmsgstr \"\"\n\n#: id/id_choices.py:69\nmsgid \"Corps Consulate\"\nmsgstr \"\"\n\n#: id/id_choices.py:70\nmsgid \"Corps Diplomatic\"\nmsgstr \"\"\n\n#: id/id_choices.py:71\nmsgid \"Bandung\"\nmsgstr \"\"\n\n#: id/id_choices.py:73\nmsgid \"Sulawesi Utara Daratan\"\nmsgstr \"\"\n\n#: id/id_choices.py:78\nmsgid \"NTT - Timor\"\nmsgstr \"\"\n\n#: id/id_choices.py:80\nmsgid \"Sulawesi Utara Kepulauan\"\nmsgstr \"\"\n\n#: id/id_choices.py:83\nmsgid \"NTB - Lombok\"\nmsgstr \"\"\n\n#: id/id_choices.py:84\nmsgid \"Papua dan Papua Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:86\nmsgid \"Cirebon\"\nmsgstr \"\"\n\n#: id/id_choices.py:87\nmsgid \"NTB - Sumbawa\"\nmsgstr \"\"\n\n#: id/id_choices.py:88\nmsgid \"NTT - Flores\"\nmsgstr \"\"\n\n#: id/id_choices.py:89\nmsgid \"NTT - Sumba\"\nmsgstr \"\"\n\n#: id/id_choices.py:90\nmsgid \"Bogor\"\nmsgstr \"\"\n\n#: id/id_choices.py:91\nmsgid \"Pekalongan\"\nmsgstr \"\"\n\n#: id/id_choices.py:92\nmsgid \"Semarang\"\nmsgstr \"\"\n\n#: id/id_choices.py:93\nmsgid \"Pati\"\nmsgstr \"\"\n\n#: id/id_choices.py:97\nmsgid \"Surabaya\"\nmsgstr \"\"\n\n#: id/id_choices.py:98\nmsgid \"Madura\"\nmsgstr \"\"\n\n#: id/id_choices.py:99\nmsgid \"Malang\"\nmsgstr \"\"\n\n#: id/id_choices.py:100\nmsgid \"Jember\"\nmsgstr \"\"\n\n#: id/id_choices.py:101\nmsgid \"Banyumas\"\nmsgstr \"\"\n\n#: id/id_choices.py:102\nmsgid \"Federal Government\"\nmsgstr \"\"\n\n#: id/id_choices.py:103\nmsgid \"Bojonegoro\"\nmsgstr \"\"\n\n#: id/id_choices.py:104\nmsgid \"Purwakarta\"\nmsgstr \"\"\n\n#: id/id_choices.py:105\nmsgid \"Sidoarjo\"\nmsgstr \"\"\n\n#: id/id_choices.py:106\nmsgid \"Garut\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:8\nmsgid \"Antrim\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:9\nmsgid \"Armagh\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:10\nmsgid \"Carlow\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:11\nmsgid \"Cavan\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:12\nmsgid \"Clare\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:13\nmsgid \"Cork\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:14\nmsgid \"Derry\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:15\nmsgid \"Donegal\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:16\nmsgid \"Down\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:17\nmsgid \"Dublin\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:18\nmsgid \"Fermanagh\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:19\nmsgid \"Galway\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:20\nmsgid \"Kerry\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:21\nmsgid \"Kildare\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:22\nmsgid \"Kilkenny\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:23\nmsgid \"Laois\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:24\nmsgid \"Leitrim\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:25\nmsgid \"Limerick\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:26\nmsgid \"Longford\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:27\nmsgid \"Louth\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:28\nmsgid \"Mayo\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:29\nmsgid \"Meath\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:30\nmsgid \"Monaghan\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:31\nmsgid \"Offaly\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:32\nmsgid \"Roscommon\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:33\nmsgid \"Sligo\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:34\nmsgid \"Tipperary\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:35\nmsgid \"Tyrone\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:36\nmsgid \"Waterford\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:37\nmsgid \"Westmeath\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:38\nmsgid \"Wexford\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:39\nmsgid \"Wicklow\"\nmsgstr \"\"\n\n#: il/forms.py:32\nmsgid \"Enter a postal code in the format XXXXX\"\nmsgstr \"\"\n\n#: il/forms.py:51\nmsgid \"Enter a valid ID number.\"\nmsgstr \"\"\n\n#: in_/forms.py:41\nmsgid \"Enter a zip code in the format XXXXXX or XXX XXX.\"\nmsgstr \"\"\n\n#: in_/forms.py:64\nmsgid \"Enter an Indian state or territory.\"\nmsgstr \"\"\n\n#: in_/forms.py:103\nmsgid \"Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.\"\nmsgstr \"\"\n\n#: is_/forms.py:22\nmsgid \"\"\n\"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.\"\nmsgstr \"దయచేసి సరైన ఐస్లాండిక్ గుర్తు(XXXXXX-XXXX రూపలవన్యము) సంఖ్య ఇవ్వండి.\"\n\n#: is_/forms.py:23\nmsgid \"The Icelandic identification number is not valid.\"\nmsgstr \"చెల్లని ఐస్లాండిక్ గుర్తు సంఖ్య.\"\n\n#: it/forms.py:21\nmsgid \"Enter a valid zip code.\"\nmsgstr \"దయచేసి సరైన తపాలు సంహిత ఇవ్వండి.\"\n\n#: it/forms.py:48\nmsgid \"Enter a valid Social Security number.\"\nmsgstr \"దయచేసి సరైన సొషల్ సెక్యురిటి సంఖ్య ఇవ్వండి.\"\n\n#: it/forms.py:73\nmsgid \"Enter a valid VAT number.\"\nmsgstr \"దయచేసి సరైన VAT సంఖ్య  ఇవ్వండి.\"\n\n#: jp/forms.py:19\nmsgid \"Enter a postal code in the format XXXXXXX or XXX-XXXX.\"\nmsgstr \"దయచేసి తపాలు సంహిత  (XXXXX-XXX లెక XXX-XXXX రూపలవన్యము ) ఇవ్వండి.\"\n\n#: jp/jp_prefectures.py:4\nmsgid \"Hokkaido\"\nmsgstr \"హొకైడొ\"\n\n#: jp/jp_prefectures.py:5\nmsgid \"Aomori\"\nmsgstr \"ఒమొరి\"\n\n#: jp/jp_prefectures.py:6\nmsgid \"Iwate\"\nmsgstr \"ఇవాటె\"\n\n#: jp/jp_prefectures.py:7\nmsgid \"Miyagi\"\nmsgstr \"మియాగి\"\n\n#: jp/jp_prefectures.py:8\nmsgid \"Akita\"\nmsgstr \"అకిట\"\n\n#: jp/jp_prefectures.py:9\nmsgid \"Yamagata\"\nmsgstr \"యమగాట\"\n\n#: jp/jp_prefectures.py:10\nmsgid \"Fukushima\"\nmsgstr \"ఫుకుషిమ\"\n\n#: jp/jp_prefectures.py:11\nmsgid \"Ibaraki\"\nmsgstr \"ఇబరాకి\"\n\n#: jp/jp_prefectures.py:12\nmsgid \"Tochigi\"\nmsgstr \"టొచిగి\"\n\n#: jp/jp_prefectures.py:13\nmsgid \"Gunma\"\nmsgstr \"గున్మ\"\n\n#: jp/jp_prefectures.py:14\nmsgid \"Saitama\"\nmsgstr \"సైతమా\"\n\n#: jp/jp_prefectures.py:15\nmsgid \"Chiba\"\nmsgstr \"చిబ\"\n\n#: jp/jp_prefectures.py:16\nmsgid \"Tokyo\"\nmsgstr \"టొకియొ\"\n\n#: jp/jp_prefectures.py:17\nmsgid \"Kanagawa\"\nmsgstr \"కనగావా\"\n\n#: jp/jp_prefectures.py:18\nmsgid \"Yamanashi\"\nmsgstr \"యమనాషి\"\n\n#: jp/jp_prefectures.py:19\nmsgid \"Nagano\"\nmsgstr \"నగానొ\"\n\n#: jp/jp_prefectures.py:20\nmsgid \"Niigata\"\nmsgstr \"నీగాట\"\n\n#: jp/jp_prefectures.py:21\nmsgid \"Toyama\"\nmsgstr \"టొయామా\"\n\n#: jp/jp_prefectures.py:22\nmsgid \"Ishikawa\"\nmsgstr \"ఇషికావా\"\n\n#: jp/jp_prefectures.py:23\nmsgid \"Fukui\"\nmsgstr \"ఫుకుయి\"\n\n#: jp/jp_prefectures.py:24\nmsgid \"Gifu\"\nmsgstr \"గిఫు\"\n\n#: jp/jp_prefectures.py:25\nmsgid \"Shizuoka\"\nmsgstr \"షిజుఒక\"\n\n#: jp/jp_prefectures.py:26\nmsgid \"Aichi\"\nmsgstr \"ఐచి\"\n\n#: jp/jp_prefectures.py:27\nmsgid \"Mie\"\nmsgstr \"మి\"\n\n#: jp/jp_prefectures.py:28\nmsgid \"Shiga\"\nmsgstr \"షిగ\"\n\n#: jp/jp_prefectures.py:29\nmsgid \"Kyoto\"\nmsgstr \"క్యొటొ\"\n\n#: jp/jp_prefectures.py:30\nmsgid \"Osaka\"\nmsgstr \"ఒసాకా\"\n\n#: jp/jp_prefectures.py:31\nmsgid \"Hyogo\"\nmsgstr \"హ్యొగొ\"\n\n#: jp/jp_prefectures.py:32\nmsgid \"Nara\"\nmsgstr \"నారా\"\n\n#: jp/jp_prefectures.py:33\nmsgid \"Wakayama\"\nmsgstr \"వకయామా\"\n\n#: jp/jp_prefectures.py:34\nmsgid \"Tottori\"\nmsgstr \"టొట్టొరి\"\n\n#: jp/jp_prefectures.py:35\nmsgid \"Shimane\"\nmsgstr \"షిమానె\"\n\n#: jp/jp_prefectures.py:36\nmsgid \"Okayama\"\nmsgstr \"ఒకయామా\"\n\n#: jp/jp_prefectures.py:37\nmsgid \"Hiroshima\"\nmsgstr \"హిరొషిమా\"\n\n#: jp/jp_prefectures.py:38\nmsgid \"Yamaguchi\"\nmsgstr \"యామాగుచ్చి\"\n\n#: jp/jp_prefectures.py:39\nmsgid \"Tokushima\"\nmsgstr \"టొకుషిమా\"\n\n#: jp/jp_prefectures.py:40\nmsgid \"Kagawa\"\nmsgstr \"కగావా\"\n\n#: jp/jp_prefectures.py:41\nmsgid \"Ehime\"\nmsgstr \"ఎహిమె\"\n\n#: jp/jp_prefectures.py:42\nmsgid \"Kochi\"\nmsgstr \"కొచి\"\n\n#: jp/jp_prefectures.py:43\nmsgid \"Fukuoka\"\nmsgstr \"ఫుకొకు\"\n\n#: jp/jp_prefectures.py:44\nmsgid \"Saga\"\nmsgstr \"సగా\"\n\n#: jp/jp_prefectures.py:45\nmsgid \"Nagasaki\"\nmsgstr \"నాగాసాకి\"\n\n#: jp/jp_prefectures.py:46\nmsgid \"Kumamoto\"\nmsgstr \"కుమమొటొ\"\n\n#: jp/jp_prefectures.py:47\nmsgid \"Oita\"\nmsgstr \"ఒయిటొ\"\n\n#: jp/jp_prefectures.py:48\nmsgid \"Miyazaki\"\nmsgstr \"మియజాకి\"\n\n#: jp/jp_prefectures.py:49\nmsgid \"Kagoshima\"\nmsgstr \"కాగొషిమా\"\n\n#: jp/jp_prefectures.py:50\nmsgid \"Okinawa\"\nmsgstr \"ఒకినావా\"\n\n#: kw/forms.py:27\nmsgid \"Enter a valid Kuwaiti Civil ID number\"\nmsgstr \"\"\n\n#: mk/forms.py:18\nmsgid \"\"\n\"Identity card numbers must contain either 4 to 7 digits or an uppercase \"\n\"letter and 7 digits.\"\nmsgstr \"\"\n\n#: mk/forms.py:57 si/forms.py:24\nmsgid \"This field should contain exactly 13 digits.\"\nmsgstr \"\"\n\n#: mk/forms.py:58\nmsgid \"The first 7 digits of the UMCN must represent a valid past date.\"\nmsgstr \"\"\n\n#: mk/forms.py:59\nmsgid \"The UMCN is not valid.\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:10\nmsgid \"Aerodrom\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:11\nmsgid \"Aračinovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:12\nmsgid \"Berovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:13\nmsgid \"Bitola\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:14\nmsgid \"Bogdanci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:15\nmsgid \"Bogovinje\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:16\nmsgid \"Bosilovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:17\nmsgid \"Brvenica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:18\nmsgid \"Butel\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:19\nmsgid \"Valandovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:20\nmsgid \"Vasilevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:21\nmsgid \"Vevčani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:22\nmsgid \"Veles\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:23\nmsgid \"Vinica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:24\nmsgid \"Vraneštica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:25\nmsgid \"Vrapčište\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:26\nmsgid \"Gazi Baba\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:27\nmsgid \"Gevgelija\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:28\nmsgid \"Gostivar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:29\nmsgid \"Gradsko\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:30\nmsgid \"Debar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:31\nmsgid \"Debarca\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:32\nmsgid \"Delčevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:33\nmsgid \"Demir Kapija\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:34\nmsgid \"Demir Hisar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:35\nmsgid \"Dolneni\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:36\nmsgid \"Drugovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:37\nmsgid \"Gjorče Petrov\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:38\nmsgid \"Želino\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:39\nmsgid \"Zajas\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:40\nmsgid \"Zelenikovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:41\nmsgid \"Zrnovci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:42\nmsgid \"Ilinden\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:43\nmsgid \"Jegunovce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:44\nmsgid \"Kavadarci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:45\nmsgid \"Karbinci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:46\nmsgid \"Karpoš\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:47\nmsgid \"Kisela Voda\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:48\nmsgid \"Kičevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:49\nmsgid \"Konče\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:50\nmsgid \"Koćani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:51\nmsgid \"Kratovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:52\nmsgid \"Kriva Palanka\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:53\nmsgid \"Krivogaštani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:54\nmsgid \"Kruševo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:55\nmsgid \"Kumanovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:56\nmsgid \"Lipkovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:57\nmsgid \"Lozovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:58\nmsgid \"Mavrovo i Rostuša\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:59\nmsgid \"Makedonska Kamenica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:60\nmsgid \"Makedonski Brod\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:61\nmsgid \"Mogila\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:62\nmsgid \"Negotino\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:63\nmsgid \"Novaci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:64\nmsgid \"Novo Selo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:65\nmsgid \"Oslomej\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:66\nmsgid \"Ohrid\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:67\nmsgid \"Petrovec\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:68\nmsgid \"Pehčevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:69\nmsgid \"Plasnica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:70\nmsgid \"Prilep\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:71\nmsgid \"Probištip\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:72\nmsgid \"Radoviš\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:73\nmsgid \"Rankovce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:74\nmsgid \"Resen\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:75\nmsgid \"Rosoman\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:76\nmsgid \"Saraj\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:77\nmsgid \"Sveti Nikole\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:78\nmsgid \"Sopište\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:79\nmsgid \"Star Dojran\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:80\nmsgid \"Staro Nagoričane\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:81\nmsgid \"Struga\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:82\nmsgid \"Strumica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:83\nmsgid \"Studeničani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:84\nmsgid \"Tearce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:85\nmsgid \"Tetovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:86\nmsgid \"Centar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:87\nmsgid \"Centar-Župa\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:88\nmsgid \"Čair\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:89\nmsgid \"Čaška\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:90\nmsgid \"Češinovo-Obleševo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:91\nmsgid \"Čučer-Sandevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:92\nmsgid \"Štip\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:93\nmsgid \"Šuto Orizari\"\nmsgstr \"\"\n\n#: mk/models.py:11\nmsgid \"Macedonian identity card number\"\nmsgstr \"\"\n\n#: mk/models.py:25\nmsgid \"A Macedonian municipality (2 character code)\"\nmsgstr \"\"\n\n#: mk/models.py:35\nmsgid \"Unique master citizen number (13 digits)\"\nmsgstr \"\"\n\n#: mx/forms.py:67\nmsgid \"Enter a valid zip code in the format XXXXX.\"\nmsgstr \"\"\n\n#: mx/forms.py:110\nmsgid \"Enter a valid RFC.\"\nmsgstr \"\"\n\n#: mx/forms.py:111\nmsgid \"Invalid checksum for RFC.\"\nmsgstr \"\"\n\n#: mx/forms.py:191\nmsgid \"Enter a valid CURP.\"\nmsgstr \"\"\n\n#: mx/forms.py:192\nmsgid \"Invalid checksum for CURP.\"\nmsgstr \"\"\n\n#: mx/models.py:14\nmsgid \"Mexico state (three uppercase letters)\"\nmsgstr \"\"\n\n#: mx/models.py:27\nmsgid \"Mexico zip code\"\nmsgstr \"\"\n\n#: mx/models.py:44\nmsgid \"Mexican RFC\"\nmsgstr \"\"\n\n#: mx/models.py:61\nmsgid \"Mexican CURP\"\nmsgstr \"\"\n\n#: mx/mx_states.py:14\nmsgid \"Aguascalientes\"\nmsgstr \"అగూస్కలియెంటెస్\"\n\n#: mx/mx_states.py:15\nmsgid \"Baja California\"\nmsgstr \"బాహా కాలిఫొర్నియ\"\n\n#: mx/mx_states.py:16\nmsgid \"Baja California Sur\"\nmsgstr \"బాహా కాలిఫొర్నియ సుర్\"\n\n#: mx/mx_states.py:17\nmsgid \"Campeche\"\nmsgstr \"కంపెచె\"\n\n#: mx/mx_states.py:18\nmsgid \"Chihuahua\"\nmsgstr \"చిహువహువ\"\n\n#: mx/mx_states.py:19\nmsgid \"Chiapas\"\nmsgstr \"చియపస్\"\n\n#: mx/mx_states.py:20\nmsgid \"Coahuila\"\nmsgstr \"కోహుయిల\"\n\n#: mx/mx_states.py:21\nmsgid \"Colima\"\nmsgstr \"కొలిమ\"\n\n#: mx/mx_states.py:22\nmsgid \"Distrito Federal\"\nmsgstr \"డిస్ట్రిటొ ఫెడ్రల్\"\n\n#: mx/mx_states.py:23\nmsgid \"Durango\"\nmsgstr \"డురంగొ\"\n\n#: mx/mx_states.py:24\nmsgid \"Guerrero\"\nmsgstr \"గువెర్రెరొ\"\n\n#: mx/mx_states.py:25\nmsgid \"Guanajuato\"\nmsgstr \"గువనజువటొ\"\n\n#: mx/mx_states.py:26\nmsgid \"Hidalgo\"\nmsgstr \"హిడల్గొ\"\n\n#: mx/mx_states.py:27\nmsgid \"Jalisco\"\nmsgstr \"జలిస్కొ\"\n\n#: mx/mx_states.py:28\nmsgid \"Estado de México\"\nmsgstr \"ఏస్తడొ డ మెక్సికొ\"\n\n#: mx/mx_states.py:29\nmsgid \"Michoacán\"\nmsgstr \"మికోకన్\"\n\n#: mx/mx_states.py:30\nmsgid \"Morelos\"\nmsgstr \"మొరెలొస్\"\n\n#: mx/mx_states.py:31\nmsgid \"Nayarit\"\nmsgstr \"నయరిట్\"\n\n#: mx/mx_states.py:32\nmsgid \"Nuevo León\"\nmsgstr \"నుఎవొ లియొన్\"\n\n#: mx/mx_states.py:33\nmsgid \"Oaxaca\"\nmsgstr \"ఓక్సక\"\n\n#: mx/mx_states.py:34\nmsgid \"Puebla\"\nmsgstr \"పువెబ్ల\"\n\n#: mx/mx_states.py:35\nmsgid \"Querétaro\"\nmsgstr \"కువెరెటరొ\"\n\n#: mx/mx_states.py:36\nmsgid \"Quintana Roo\"\nmsgstr \"క్వింటన రూ\"\n\n#: mx/mx_states.py:37\nmsgid \"Sinaloa\"\nmsgstr \"సినలో\"\n\n#: mx/mx_states.py:38\nmsgid \"San Luis Potosí\"\nmsgstr \"సన్ లువిస్ పొటొసి\"\n\n#: mx/mx_states.py:39\nmsgid \"Sonora\"\nmsgstr \"సొనొర\"\n\n#: mx/mx_states.py:40\nmsgid \"Tabasco\"\nmsgstr \"టబస్కొ\"\n\n#: mx/mx_states.py:41\nmsgid \"Tamaulipas\"\nmsgstr \"టమౌలిపాస్\"\n\n#: mx/mx_states.py:42\nmsgid \"Tlaxcala\"\nmsgstr \"లక్స్కాలా\"\n\n#: mx/mx_states.py:43\nmsgid \"Veracruz\"\nmsgstr \"వెరక్రుజ్\"\n\n#: mx/mx_states.py:44\nmsgid \"Yucatán\"\nmsgstr \"యుకటన్\"\n\n#: mx/mx_states.py:45\nmsgid \"Zacatecas\"\nmsgstr \"జకటెకాస్\"\n\n#: nl/forms.py:26\nmsgid \"Enter a valid postal code\"\nmsgstr \"దయచేసి సరైన  తపాలు సంహిత ఇవ్వండి\"\n\n#: nl/forms.py:82\nmsgid \"Enter a valid SoFi number\"\nmsgstr \"దయచేసి సరైన SoFi సంఖ్య  ఇవ్వండి.\"\n\n#: nl/nl_provinces.py:4\nmsgid \"Drenthe\"\nmsgstr \"డ్రెంత్\"\n\n#: nl/nl_provinces.py:5\nmsgid \"Flevoland\"\nmsgstr \"ఫ్లెవొలాండ్\"\n\n#: nl/nl_provinces.py:6\nmsgid \"Friesland\"\nmsgstr \"ఫ్రియెస్లాండ్\"\n\n#: nl/nl_provinces.py:7\nmsgid \"Gelderland\"\nmsgstr \"జెల్దెర్లాండ్\"\n\n#: nl/nl_provinces.py:8\nmsgid \"Groningen\"\nmsgstr \"గ్రొనింజెన్\"\n\n#: nl/nl_provinces.py:10\nmsgid \"Noord-Brabant\"\nmsgstr \"నొర్డ్-బ్రబంట్\"\n\n#: nl/nl_provinces.py:11\nmsgid \"Noord-Holland\"\nmsgstr \"నొర్డ్-హలాండ్\"\n\n#: nl/nl_provinces.py:12\nmsgid \"Overijssel\"\nmsgstr \"ఒవెరిస్సెల్\"\n\n#: nl/nl_provinces.py:13\nmsgid \"Utrecht\"\nmsgstr \"యూట్రెక్\"\n\n#: nl/nl_provinces.py:14\nmsgid \"Zeeland\"\nmsgstr \"జీలాండ్\"\n\n#: nl/nl_provinces.py:15\nmsgid \"Zuid-Holland\"\nmsgstr \"జుఇడ్-హాలాండ్\"\n\n#: no/forms.py:39\nmsgid \"Enter a valid Norwegian social security number.\"\nmsgstr \"దయచెసి సరైన నార్వెజియన్ సొషల్ సెక్యురిటి సంఖ్య ఇవ్వండి.\"\n\n#: pe/forms.py:28\nmsgid \"This field requires 8 digits.\"\nmsgstr \"\"\n\n#: pe/forms.py:56\nmsgid \"This field requires 11 digits.\"\nmsgstr \"\"\n\n#: pl/forms.py:42\nmsgid \"National Identification Number consists of 11 digits.\"\nmsgstr \"\"\n\n#: pl/forms.py:43\nmsgid \"Wrong checksum for the National Identification Number.\"\nmsgstr \"చెల్లని రష్ట్ర గుర్తు సంఖ్య నియంతృలెక్యము\"\n\n#: pl/forms.py:79\nmsgid \"National ID Card Number consists of 3 letters and 6 digits.\"\nmsgstr \"\"\n\n#: pl/forms.py:80\nmsgid \"Wrong checksum for the National ID Card Number.\"\nmsgstr \"\"\n\n#: pl/forms.py:131\nmsgid \"\"\n\"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or \"\n\"XXXXXXXXXX.\"\nmsgstr \"\"\n\n#: pl/forms.py:132\nmsgid \"Wrong checksum for the Tax Number (NIP).\"\nmsgstr \"చెల్లని పన్ను సంఖ్య (ణీఫ్)నియంతృలెక్యము\"\n\n#: pl/forms.py:171\nmsgid \"National Business Register Number (REGON) consists of 9 or 14 digits.\"\nmsgstr \"\"\n\n#: pl/forms.py:172\nmsgid \"Wrong checksum for the National Business Register Number (REGON).\"\nmsgstr \"చెల్లని రష్ట్ర వ్వవహార లెక్క పట్టి సంఖ్య నియంతృలెక్యము (REGON).\"\n\n#: pl/forms.py:212\nmsgid \"Enter a postal code in the format XX-XXX.\"\nmsgstr \"దయచేసి తపాలు సంహిత  XX-XXX రూపలవన్యములొ ఇవ్వండి.\"\n\n#: pl/pl_voivodeships.py:8\nmsgid \"Lower Silesia\"\nmsgstr \"లౌఎర్ సిలెసియ\"\n\n#: pl/pl_voivodeships.py:9\nmsgid \"Kuyavia-Pomerania\"\nmsgstr \"కుయవియ-పొమెరానియ\"\n\n#: pl/pl_voivodeships.py:10\nmsgid \"Lublin\"\nmsgstr \"లబ్లిన్\"\n\n#: pl/pl_voivodeships.py:11\nmsgid \"Lubusz\"\nmsgstr \"లుబుస్\"\n\n#: pl/pl_voivodeships.py:12\nmsgid \"Lodz\"\nmsgstr \"లొడ్జ్\"\n\n#: pl/pl_voivodeships.py:13\nmsgid \"Lesser Poland\"\nmsgstr \"లెస్సెర్ పొలాండ్\"\n\n#: pl/pl_voivodeships.py:14\nmsgid \"Masovia\"\nmsgstr \"మసొవియ\"\n\n#: pl/pl_voivodeships.py:15\nmsgid \"Opole\"\nmsgstr \"ఒపొల్\"\n\n#: pl/pl_voivodeships.py:16\nmsgid \"Subcarpatia\"\nmsgstr \"సుబ్కర్పతియ\"\n\n#: pl/pl_voivodeships.py:17\nmsgid \"Podlasie\"\nmsgstr \"పొడ్లసి\"\n\n#: pl/pl_voivodeships.py:18\nmsgid \"Pomerania\"\nmsgstr \"పొమెరానియా\"\n\n#: pl/pl_voivodeships.py:19\nmsgid \"Silesia\"\nmsgstr \"సిలెసియా\"\n\n#: pl/pl_voivodeships.py:20\nmsgid \"Swietokrzyskie\"\nmsgstr \"స్విటొక్ర్జిస్కియె\"\n\n#: pl/pl_voivodeships.py:21\nmsgid \"Warmia-Masuria\"\nmsgstr \"వర్మియ-మాసురియా\"\n\n#: pl/pl_voivodeships.py:22\nmsgid \"Greater Poland\"\nmsgstr \"గ్రేటెర్ పొలాండ్\"\n\n#: pl/pl_voivodeships.py:23\nmsgid \"West Pomerania\"\nmsgstr \"పశ్చిమ పొమెరనియా\"\n\n#: pt/forms.py:19\nmsgid \"Enter a zip code in the format XXXX-XXX.\"\nmsgstr \"\"\n\n#: pt/forms.py:39\nmsgid \"Phone numbers must have 9 digits, or start by + or 00.\"\nmsgstr \"\"\n\n#: ro/forms.py:22\nmsgid \"Enter a valid CIF.\"\nmsgstr \"దయచేసి సరైన CIF ఇవ్వండి.\"\n\n#: ro/forms.py:59\nmsgid \"Enter a valid CNP.\"\nmsgstr \"దయచేసి సరైన CNP ఇవ్వండి.\"\n\n#: ro/forms.py:143\nmsgid \"Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format\"\nmsgstr \"దయచేసి సరైన IBAN (ROXX-XXXX-XXXX-XXXX-XXXX రూపలవన్యము) ఇవ్వండి.\"\n\n#: ro/forms.py:175\nmsgid \"Phone numbers must be in XXXX-XXXXXX format.\"\nmsgstr \"దూరవాణి సంఖ్య XXXX-XXXXXX రూపలవన్యములొ ఇవ్వాలి.\"\n\n#: ro/forms.py:200\nmsgid \"Enter a valid postal code in the format XXXXXX\"\nmsgstr \"దయచేసి సరైన తపాలు సంహిత  XXXXXX రూపలవన్యములొ ఇవ్వండి.\"\n\n#: ru/forms.py:37\nmsgid \"Enter a postal code in the format XXXXXX.\"\nmsgstr \"\"\n\n#: ru/forms.py:50\nmsgid \"Enter a passport number in the format XXXX XXXXXX.\"\nmsgstr \"\"\n\n#: ru/forms.py:63\nmsgid \"Enter a passport number in the format XX XXXXXXX.\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:10\nmsgid \"Central Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:11\nmsgid \"South Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:12\nmsgid \"North-West Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:13\nmsgid \"Far-East Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:14\nmsgid \"Siberian Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:15\nmsgid \"Ural Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:16\nmsgid \"Privolzhsky Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:17\nmsgid \"North-Caucasian Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:21\nmsgid \"Moskva\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:22\nmsgid \"Saint-Peterburg\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:23\nmsgid \"Moskovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:24\nmsgid \"Adygeya, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:25\nmsgid \"Bashkortostan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:26\nmsgid \"Buryatia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:27\nmsgid \"Altay, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:28\nmsgid \"Dagestan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:29\nmsgid \"Ingushskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:30\nmsgid \"Kabardino-Balkarskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:31\nmsgid \"Kalmykia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:32\nmsgid \"Karachaevo-Cherkesskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:33\nmsgid \"Karelia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:34\nmsgid \"Komi, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:35\nmsgid \"Mariy Ehl, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:36\nmsgid \"Mordovia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:37\nmsgid \"Sakha, Respublika (Yakutiya)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:38\nmsgid \"Severnaya Osetia, Respublika (Alania)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:39\nmsgid \"Tatarstan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:40\nmsgid \"Tyva, Respublika (Tuva)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:41\nmsgid \"Udmurtskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:42\nmsgid \"Khakassiya, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:43\nmsgid \"Chechenskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:44\nmsgid \"Chuvashskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:45\nmsgid \"Altayskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:46\nmsgid \"Zabaykalskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:47\nmsgid \"Kamchatskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:48\nmsgid \"Krasnodarskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:49\nmsgid \"Krasnoyarskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:50\nmsgid \"Permskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:51\nmsgid \"Primorskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:52\nmsgid \"Stavropol'siyy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:53\nmsgid \"Khabarovskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:54\nmsgid \"Amurskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:55\nmsgid \"Arkhangel'skaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:56\nmsgid \"Astrakhanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:57\nmsgid \"Belgorodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:58\nmsgid \"Bryanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:59\nmsgid \"Vladimirskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:60\nmsgid \"Volgogradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:61\nmsgid \"Vologodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:62\nmsgid \"Voronezhskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:63\nmsgid \"Ivanovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:64\nmsgid \"Irkutskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:65\nmsgid \"Kaliningradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:66\nmsgid \"Kaluzhskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:67\nmsgid \"Kemerovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:68\nmsgid \"Kirovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:69\nmsgid \"Kostromskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:70\nmsgid \"Kurganskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:71\nmsgid \"Kurskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:72\nmsgid \"Leningradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:73\nmsgid \"Lipeckaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:74\nmsgid \"Magadanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:75\nmsgid \"Murmanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:76\nmsgid \"Nizhegorodskaja oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:77\nmsgid \"Novgorodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:78\nmsgid \"Novosibirskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:79\nmsgid \"Omskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:80\nmsgid \"Orenburgskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:81\nmsgid \"Orlovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:82\nmsgid \"Penzenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:83\nmsgid \"Pskovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:84\nmsgid \"Rostovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:85\nmsgid \"Rjazanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:86\nmsgid \"Samarskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:87\nmsgid \"Saratovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:88\nmsgid \"Sakhalinskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:89\nmsgid \"Sverdlovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:90\nmsgid \"Smolenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:91\nmsgid \"Tambovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:92\nmsgid \"Tverskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:93\nmsgid \"Tomskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:94\nmsgid \"Tul'skaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:95\nmsgid \"Tyumenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:96\nmsgid \"Ul'ianovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:97\nmsgid \"Chelyabinskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:98\nmsgid \"Yaroslavskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:99\nmsgid \"Evreyskaya avtonomnaja oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:100\nmsgid \"Neneckiy autonomnyy okrug\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:101\nmsgid \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:102\nmsgid \"Chukotskiy avtonomnyy okrug\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:103\nmsgid \"Yamalo-Neneckiy avtonomnyy okrug\"\nmsgstr \"\"\n\n#: se/forms.py:54\nmsgid \"Enter a valid Swedish organisation number.\"\nmsgstr \"\"\n\n#: se/forms.py:111\nmsgid \"Enter a valid Swedish personal identity number.\"\nmsgstr \"\"\n\n#: se/forms.py:112\nmsgid \"Co-ordination numbers are not allowed.\"\nmsgstr \"\"\n\n#: se/forms.py:154\nmsgid \"Enter a Swedish postal code in the format XXXXX.\"\nmsgstr \"\"\n\n#: se/se_counties.py:16\nmsgid \"Stockholm\"\nmsgstr \"\"\n\n#: se/se_counties.py:17\nmsgid \"Västerbotten\"\nmsgstr \"\"\n\n#: se/se_counties.py:18\nmsgid \"Norrbotten\"\nmsgstr \"\"\n\n#: se/se_counties.py:19\nmsgid \"Uppsala\"\nmsgstr \"\"\n\n#: se/se_counties.py:20\nmsgid \"Södermanland\"\nmsgstr \"\"\n\n#: se/se_counties.py:21\nmsgid \"Östergötland\"\nmsgstr \"\"\n\n#: se/se_counties.py:22\nmsgid \"Jönköping\"\nmsgstr \"\"\n\n#: se/se_counties.py:23\nmsgid \"Kronoberg\"\nmsgstr \"\"\n\n#: se/se_counties.py:24\nmsgid \"Kalmar\"\nmsgstr \"\"\n\n#: se/se_counties.py:25\nmsgid \"Gotland\"\nmsgstr \"\"\n\n#: se/se_counties.py:26\nmsgid \"Blekinge\"\nmsgstr \"\"\n\n#: se/se_counties.py:27\nmsgid \"Skåne\"\nmsgstr \"\"\n\n#: se/se_counties.py:28\nmsgid \"Halland\"\nmsgstr \"\"\n\n#: se/se_counties.py:29\nmsgid \"Västra Götaland\"\nmsgstr \"\"\n\n#: se/se_counties.py:30\nmsgid \"Värmland\"\nmsgstr \"\"\n\n#: se/se_counties.py:31\nmsgid \"Örebro\"\nmsgstr \"\"\n\n#: se/se_counties.py:32\nmsgid \"Västmanland\"\nmsgstr \"\"\n\n#: se/se_counties.py:33\nmsgid \"Dalarna\"\nmsgstr \"\"\n\n#: se/se_counties.py:34\nmsgid \"Gävleborg\"\nmsgstr \"\"\n\n#: se/se_counties.py:35\nmsgid \"Västernorrland\"\nmsgstr \"\"\n\n#: se/se_counties.py:36\nmsgid \"Jämtland\"\nmsgstr \"\"\n\n#: si/forms.py:25\nmsgid \"The first 7 digits of the EMSO must represent a valid past date.\"\nmsgstr \"\"\n\n#: si/forms.py:26\nmsgid \"The EMSO is not valid.\"\nmsgstr \"\"\n\n#: si/forms.py:86\nmsgid \"Enter a valid tax number in form SIXXXXXXXX\"\nmsgstr \"\"\n\n#: si/forms.py:151\nmsgid \"Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:8\nmsgid \"Banska Bystrica\"\nmsgstr \"బన్స్క బైస్ట్రిక\"\n\n#: sk/sk_districts.py:9\nmsgid \"Banska Stiavnica\"\nmsgstr \"బన్స్క స్టీవ్నిక\"\n\n#: sk/sk_districts.py:10\nmsgid \"Bardejov\"\nmsgstr \"భర్డెజొవ్\"\n\n#: sk/sk_districts.py:11\nmsgid \"Banovce nad Bebravou\"\nmsgstr \"బనొవ్స నడ్ బెబ్రవౌ\"\n\n#: sk/sk_districts.py:12\nmsgid \"Brezno\"\nmsgstr \"బ్రెజ్నొ\"\n\n#: sk/sk_districts.py:13\nmsgid \"Bratislava I\"\nmsgstr \"బ్రాటిస్లావా I\"\n\n#: sk/sk_districts.py:14\nmsgid \"Bratislava II\"\nmsgstr \"బ్రాటిస్లావా II \"\n\n#: sk/sk_districts.py:15\nmsgid \"Bratislava III\"\nmsgstr \"బ్రాటిస్లావా III\"\n\n#: sk/sk_districts.py:16\nmsgid \"Bratislava IV\"\nmsgstr \"బ్రాటిస్లావా IV\"\n\n#: sk/sk_districts.py:17\nmsgid \"Bratislava V\"\nmsgstr \"బ్రాటిస్లావా V\"\n\n#: sk/sk_districts.py:18\nmsgid \"Bytca\"\nmsgstr \"బిట్స\"\n\n#: sk/sk_districts.py:19\nmsgid \"Cadca\"\nmsgstr \"కడ్క\"\n\n#: sk/sk_districts.py:20\nmsgid \"Detva\"\nmsgstr \"దెట్వ\"\n\n#: sk/sk_districts.py:21\nmsgid \"Dolny Kubin\"\nmsgstr \"డొల్ని కుబిన్\"\n\n#: sk/sk_districts.py:22\nmsgid \"Dunajska Streda\"\nmsgstr \"డునజస్క స్ట్రెడ\"\n\n#: sk/sk_districts.py:23\nmsgid \"Galanta\"\nmsgstr \"గలంటా\"\n\n#: sk/sk_districts.py:24\nmsgid \"Gelnica\"\nmsgstr \"గెల్నికా\"\n\n#: sk/sk_districts.py:25\nmsgid \"Hlohovec\"\nmsgstr \"లొహొవెక్\"\n\n#: sk/sk_districts.py:26\nmsgid \"Humenne\"\nmsgstr \"హుమీనె\"\n\n#: sk/sk_districts.py:27\nmsgid \"Ilava\"\nmsgstr \"ఇలావ\"\n\n#: sk/sk_districts.py:28\nmsgid \"Kezmarok\"\nmsgstr \"కెజ్మరొక్\"\n\n#: sk/sk_districts.py:29\nmsgid \"Komarno\"\nmsgstr \"కొమార్నొ\"\n\n#: sk/sk_districts.py:30\nmsgid \"Kosice I\"\nmsgstr \"కొసైస్ I\"\n\n#: sk/sk_districts.py:31\nmsgid \"Kosice II\"\nmsgstr \"కొసైస్ II\"\n\n#: sk/sk_districts.py:32\nmsgid \"Kosice III\"\nmsgstr \"కొసైస్ III\"\n\n#: sk/sk_districts.py:33\nmsgid \"Kosice IV\"\nmsgstr \"కొసైస్ IV\"\n\n#: sk/sk_districts.py:34\nmsgid \"Kosice - okolie\"\nmsgstr \"కొసైస్ - ఒకొలి\"\n\n#: sk/sk_districts.py:35\nmsgid \"Krupina\"\nmsgstr \"క్రుపిన\"\n\n#: sk/sk_districts.py:36\nmsgid \"Kysucke Nove Mesto\"\nmsgstr \"kysuke nove mesto\"\n\n#: sk/sk_districts.py:37\nmsgid \"Levice\"\nmsgstr \"లెవిస్\"\n\n#: sk/sk_districts.py:38\nmsgid \"Levoca\"\nmsgstr \"లెవొక\"\n\n#: sk/sk_districts.py:39\nmsgid \"Liptovsky Mikulas\"\nmsgstr \"లిప్టొవ్స్కి మికులాస్\"\n\n#: sk/sk_districts.py:40\nmsgid \"Lucenec\"\nmsgstr \"లుసెనెక్\"\n\n#: sk/sk_districts.py:41\nmsgid \"Malacky\"\nmsgstr \"మలకీ\"\n\n#: sk/sk_districts.py:42\nmsgid \"Martin\"\nmsgstr \"మార్టిన్\"\n\n#: sk/sk_districts.py:43\nmsgid \"Medzilaborce\"\nmsgstr \"మెద్జిలబొర్స్\"\n\n#: sk/sk_districts.py:44\nmsgid \"Michalovce\"\nmsgstr \"మిషాలొవ్సె\"\n\n#: sk/sk_districts.py:45\nmsgid \"Myjava\"\nmsgstr \"మైజావా\"\n\n#: sk/sk_districts.py:46\nmsgid \"Namestovo\"\nmsgstr \"నేంస్తొవొ\"\n\n#: sk/sk_districts.py:47\nmsgid \"Nitra\"\nmsgstr \"నిట్రా\"\n\n#: sk/sk_districts.py:48\nmsgid \"Nove Mesto nad Vahom\"\nmsgstr \"నొవె మెస్టొ నడ్ వాహొం\"\n\n#: sk/sk_districts.py:49\nmsgid \"Nove Zamky\"\nmsgstr \"నొవె జంకి\"\n\n#: sk/sk_districts.py:50\nmsgid \"Partizanske\"\nmsgstr \"పర్తిజన్స్కె\"\n\n#: sk/sk_districts.py:51\nmsgid \"Pezinok\"\nmsgstr \"పెజినొక్\"\n\n#: sk/sk_districts.py:52\nmsgid \"Piestany\"\nmsgstr \"పిఎస్టాని\"\n\n#: sk/sk_districts.py:53\nmsgid \"Poltar\"\nmsgstr \"పొల్టర్\"\n\n#: sk/sk_districts.py:54\nmsgid \"Poprad\"\nmsgstr \"పొప్రడ్\"\n\n#: sk/sk_districts.py:55\nmsgid \"Povazska Bystrica\"\nmsgstr \"పొవజ్స్క బ్య్స్ట్రిక\"\n\n#: sk/sk_districts.py:56\nmsgid \"Presov\"\nmsgstr \"ప్రెసొవ్\"\n\n#: sk/sk_districts.py:57\nmsgid \"Prievidza\"\nmsgstr \"ప్రిఎవిద్జ\"\n\n#: sk/sk_districts.py:58\nmsgid \"Puchov\"\nmsgstr \"పుచొవ్\"\n\n#: sk/sk_districts.py:59\nmsgid \"Revuca\"\nmsgstr \"రెవుక\"\n\n#: sk/sk_districts.py:60\nmsgid \"Rimavska Sobota\"\nmsgstr \"రిమవ్స్క సొబొట\"\n\n#: sk/sk_districts.py:61\nmsgid \"Roznava\"\nmsgstr \"రొజ్నవ\"\n\n#: sk/sk_districts.py:62\nmsgid \"Ruzomberok\"\nmsgstr \"రుజొంబెరొక్\"\n\n#: sk/sk_districts.py:63\nmsgid \"Sabinov\"\nmsgstr \"సబినొవ్\"\n\n#: sk/sk_districts.py:64\nmsgid \"Senec\"\nmsgstr \"సెనెక్\"\n\n#: sk/sk_districts.py:65\nmsgid \"Senica\"\nmsgstr \"సెనికా\"\n\n#: sk/sk_districts.py:66\nmsgid \"Skalica\"\nmsgstr \"స్కాలికా\"\n\n#: sk/sk_districts.py:67\nmsgid \"Snina\"\nmsgstr \"స్నిన\"\n\n#: sk/sk_districts.py:68\nmsgid \"Sobrance\"\nmsgstr \"సొబ్రన్సె\"\n\n#: sk/sk_districts.py:69\nmsgid \"Spisska Nova Ves\"\nmsgstr \"స్పిస్స్కా నొవ వెస్\"\n\n#: sk/sk_districts.py:70\nmsgid \"Stara Lubovna\"\nmsgstr \"స్టరలుబ్నొవ\"\n\n#: sk/sk_districts.py:71\nmsgid \"Stropkov\"\nmsgstr \"స్ట్రొప్కొవ్\"\n\n#: sk/sk_districts.py:72\nmsgid \"Svidnik\"\nmsgstr \"స్విడ్నిక్\"\n\n#: sk/sk_districts.py:73\nmsgid \"Sala\"\nmsgstr \"సాలా\"\n\n#: sk/sk_districts.py:74\nmsgid \"Topolcany\"\nmsgstr \"టొపొల్కొని\"\n\n#: sk/sk_districts.py:75\nmsgid \"Trebisov\"\nmsgstr \"ట్రెబిసొవ్\"\n\n#: sk/sk_districts.py:76\nmsgid \"Trencin\"\nmsgstr \"త్రెంకిన్\"\n\n#: sk/sk_districts.py:77\nmsgid \"Trnava\"\nmsgstr \"నావా\"\n\n#: sk/sk_districts.py:78\nmsgid \"Turcianske Teplice\"\nmsgstr \"టుర్చీన్స్కె టెప్లిచె\"\n\n#: sk/sk_districts.py:79\nmsgid \"Tvrdosin\"\nmsgstr \"దొసిన్\"\n\n#: sk/sk_districts.py:80\nmsgid \"Velky Krtis\"\nmsgstr \"వెల్కై రిటిస్\"\n\n#: sk/sk_districts.py:81\nmsgid \"Vranov nad Toplou\"\nmsgstr \"వ్రనొవ్ నాడ్ టొప్లౌ\"\n\n#: sk/sk_districts.py:82\nmsgid \"Zlate Moravce\"\nmsgstr \"జ్లటె మొరావ్సె\"\n\n#: sk/sk_districts.py:83\nmsgid \"Zvolen\"\nmsgstr \"జ్వొలెన్\"\n\n#: sk/sk_districts.py:84\nmsgid \"Zarnovica\"\nmsgstr \"జార్నొవిక\"\n\n#: sk/sk_districts.py:85\nmsgid \"Ziar nad Hronom\"\nmsgstr \"జీర్ నాడ్ రొనొం\"\n\n#: sk/sk_districts.py:86\nmsgid \"Zilina\"\nmsgstr \"జిలిన\"\n\n#: sk/sk_regions.py:8\nmsgid \"Banska Bystrica region\"\nmsgstr \"భన్స్క భైస్త్రిక రాజ్యం\"\n\n#: sk/sk_regions.py:9\nmsgid \"Bratislava region\"\nmsgstr \"బ్రాటిస్లావ రాజ్యము\"\n\n#: sk/sk_regions.py:10\nmsgid \"Kosice region\"\nmsgstr \"కొసైస్ రాజ్యము\"\n\n#: sk/sk_regions.py:11\nmsgid \"Nitra region\"\nmsgstr \"నిట్రా రాజ్యము\"\n\n#: sk/sk_regions.py:12\nmsgid \"Presov region\"\nmsgstr \"ప్రెసావు రాజ్యము\"\n\n#: sk/sk_regions.py:13\nmsgid \"Trencin region\"\nmsgstr \"ట్రెంకిన్ రాజ్యము\"\n\n#: sk/sk_regions.py:14\nmsgid \"Trnava region\"\nmsgstr \"ట్ర్నావా రాజ్యము\"\n\n#: sk/sk_regions.py:15\nmsgid \"Zilina region\"\nmsgstr \"జిలిన రాజ్యము\"\n\n#: tr/forms.py:21\nmsgid \"Enter a postal code in the format XXXXX.\"\nmsgstr \"\"\n\n#: tr/forms.py:42\nmsgid \"Phone numbers must be in 0XXX XXX XXXX format.\"\nmsgstr \"\"\n\n#: tr/forms.py:69\nmsgid \"Enter a valid Turkish Identification number.\"\nmsgstr \"\"\n\n#: tr/forms.py:70\nmsgid \"Turkish Identification number must be 11 digits.\"\nmsgstr \"\"\n\n#: us/forms.py:21\nmsgid \"Enter a zip code in the format XXXXX or XXXXX-XXXX.\"\nmsgstr \"దయచేసి తపాలు సంహిత  (XXXXX లెక XXXXX-XXXX రూపలవన్యము) ఇవ్వండి.\"\n\n#: us/forms.py:59\nmsgid \"Enter a valid U.S. Social Security number in XXX-XX-XXXX format.\"\nmsgstr \"దయచేసి సరైన అమెరిక సొషల్ సెక్యురిటి (XXX-XX-XXXX రూపలవన్యము) సంఖ్య ఇవ్వండి.\"\n\n#: us/forms.py:92\nmsgid \"Enter a U.S. state or territory.\"\nmsgstr \"\"\n\n#: us/models.py:8\nmsgid \"U.S. state (two uppercase letters)\"\nmsgstr \"అమెరికా రాజ్యము\"\n\n#: us/models.py:17\nmsgid \"U.S. postal code (two uppercase letters)\"\nmsgstr \"\"\n\n#: us/models.py:26\nmsgid \"Phone number\"\nmsgstr \"ఫోన్ నంబరు\"\n\n#: uy/forms.py:29\nmsgid \"Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.\"\nmsgstr \"\"\n\n#: uy/forms.py:31\nmsgid \"Enter a valid CI number.\"\nmsgstr \"\"\n\n#: za/forms.py:22\nmsgid \"Enter a valid South African ID number\"\nmsgstr \"దయచేసి సరైన దక్షిణ ఆఫ్రిక  ఐడ్ ఇవ్వండి.\"\n\n#: za/forms.py:56\nmsgid \"Enter a valid South African postal code\"\nmsgstr \"దయచేసి సరైన దక్షిణ ఆఫ్రిక తపాలు సాంహిత ఇవ్వండి.\"\n\n#: za/za_provinces.py:4\nmsgid \"Eastern Cape\"\nmsgstr \"తూర్పు కెప్\"\n\n#: za/za_provinces.py:5\nmsgid \"Free State\"\nmsgstr \"ఫ్రీ స్టెట్\"\n\n#: za/za_provinces.py:6\nmsgid \"Gauteng\"\nmsgstr \"గౌటెంగ్\"\n\n#: za/za_provinces.py:7\nmsgid \"KwaZulu-Natal\"\nmsgstr \"క్వజులు-నటాల్\"\n\n#: za/za_provinces.py:8\nmsgid \"Limpopo\"\nmsgstr \"లింపొపొ\"\n\n#: za/za_provinces.py:9\nmsgid \"Mpumalanga\"\nmsgstr \"పుమలంగ\"\n\n#: za/za_provinces.py:10\nmsgid \"Northern Cape\"\nmsgstr \"naarterna kEp\"\n\n#: za/za_provinces.py:11\nmsgid \"North West\"\nmsgstr \"\"\n\n#: za/za_provinces.py:12\nmsgid \"Western Cape\"\nmsgstr \"పశ్చిమ కెప్\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/locale/th/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Suteepat Damrongyingsupab <monkeycrew_topza@hotmail.com>, 2012.\n# Vichai Vongvorakul <vongvichai@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-10-17 09:17+0000\\n\"\n\"Last-Translator: Suteepat Damrongyingsupab <monkeycrew_topza@hotmail.com>\\n\"\n\"Language-Team: Thai (http://www.transifex.com/projects/p/django/language/\"\n\"th/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: th\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: ar/forms.py:30\nmsgid \"Enter a postal code in the format NNNN or ANNNNAAA.\"\nmsgstr \"กรุณาใส่รหัสไปรษณีย์ ในรูปแบบของ NNNN หรือ ANNNNAAA  \"\n\n#: ar/forms.py:52 br/forms.py:95 br/forms.py:134 pe/forms.py:27 pe/forms.py:55\nmsgid \"This field requires only numbers.\"\nmsgstr \"ฟิลด์นี้ต้องการเฉพาะตัวเลขเท่านั้น\"\n\n#: ar/forms.py:53\nmsgid \"This field requires 7 or 8 digits.\"\nmsgstr \"ฟิลด์นี้ต้องการตัวเลขจำนวน 7 หรือ 8 หลัก\"\n\n#: ar/forms.py:82\nmsgid \"Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.\"\nmsgstr \"ใส่ CUIT ในรูปของ XX-XXXXXXXX-X หรือ XXXXXXXXXXXX\"\n\n#: ar/forms.py:83\nmsgid \"Invalid CUIT.\"\nmsgstr \"CUIT ไม่สมบูรณ์\"\n\n#: ar/forms.py:84\nmsgid \"Invalid legal type. Type must be 27, 20, 23 or 30.\"\nmsgstr \"\"\n\n#: at/at_states.py:5\nmsgid \"Burgenland\"\nmsgstr \"เบอร์เกินแลนด์\"\n\n#: at/at_states.py:6\nmsgid \"Carinthia\"\nmsgstr \"คารินเธีย\"\n\n#: at/at_states.py:7\nmsgid \"Lower Austria\"\nmsgstr \"ออสเตรียใต้\"\n\n#: at/at_states.py:8\nmsgid \"Upper Austria\"\nmsgstr \"ออสเตรียเหนือ\"\n\n#: at/at_states.py:9\nmsgid \"Salzburg\"\nmsgstr \"แซลซ์เบิร์ก\"\n\n#: at/at_states.py:10\nmsgid \"Styria\"\nmsgstr \"สไตเรีย\"\n\n#: at/at_states.py:11\nmsgid \"Tyrol\"\nmsgstr \"ไทรอล\"\n\n#: at/at_states.py:12\nmsgid \"Vorarlberg\"\nmsgstr \"โวราร์ลเบิร์ก\"\n\n#: at/at_states.py:13\nmsgid \"Vienna\"\nmsgstr \"เวียนนา\"\n\n#: at/forms.py:22 ch/forms.py:22 no/forms.py:19\nmsgid \"Enter a zip code in the format XXXX.\"\nmsgstr \"ใส่รหัสไปรษณีย์ในรูปแบบของ XXXX\"\n\n#: at/forms.py:50\nmsgid \"Enter a valid Austrian Social Security Number in XXXX XXXXXX format.\"\nmsgstr \"ใส่หมายเลขประกันสังคมออสเตรีย ในรูปแบบ XXXX XXXXXX \"\n\n#: au/forms.py:26\nmsgid \"Enter a 4 digit postcode.\"\nmsgstr \"ใส่หมายเลขรหัสไปรษณีย์ 4 หลัก\"\n\n#: au/models.py:9\nmsgid \"Australian State\"\nmsgstr \"รัฐออสเตรเลีย\"\n\n#: au/models.py:19\nmsgid \"Australian Postcode\"\nmsgstr \"ออสเตรเลียไปรษณีย์\"\n\n#: au/models.py:33\nmsgid \"Australian Phone number\"\nmsgstr \"หมายเลขโทรศัพท์ของออสเตรเลีย\"\n\n#: be/be_provinces.py:5\nmsgid \"Antwerp\"\nmsgstr \"แอนต์เวิร์ป\"\n\n#: be/be_provinces.py:6\nmsgid \"Brussels\"\nmsgstr \"กรุงบรัสเซลส์\"\n\n#: be/be_provinces.py:7\nmsgid \"East Flanders\"\nmsgstr \"ฟลานเดอร์ตะวันออก\"\n\n#: be/be_provinces.py:8\nmsgid \"Flemish Brabant\"\nmsgstr \"ฟลามส์บราบานต์\"\n\n#: be/be_provinces.py:9\nmsgid \"Hainaut\"\nmsgstr \"แอโน\"\n\n#: be/be_provinces.py:10\nmsgid \"Liege\"\nmsgstr \"ไลกี\"\n\n#: be/be_provinces.py:11 nl/nl_provinces.py:9\nmsgid \"Limburg\"\nmsgstr \"ลิมเบอร์ก\"\n\n#: be/be_provinces.py:12\nmsgid \"Luxembourg\"\nmsgstr \"ลักเซมเบิร์ก\"\n\n#: be/be_provinces.py:13\nmsgid \"Namur\"\nmsgstr \"นามูร์\"\n\n#: be/be_provinces.py:14\nmsgid \"Walloon Brabant\"\nmsgstr \"วัลลูนบราแบนต์\"\n\n#: be/be_provinces.py:15\nmsgid \"West Flanders\"\nmsgstr \"ฟลานเดอร์ตะวันตก\"\n\n#: be/be_regions.py:5\nmsgid \"Brussels Capital Region\"\nmsgstr \"เขตเมืองหลวงบรัสเซลส์\"\n\n#: be/be_regions.py:6\nmsgid \"Flemish Region\"\nmsgstr \"เขตฟลามส์\"\n\n#: be/be_regions.py:7\nmsgid \"Wallonia\"\nmsgstr \"เขตวัลลูน\"\n\n#: be/forms.py:25\nmsgid \"Enter a valid postal code in the range and format 1XXX - 9XXX.\"\nmsgstr \"โปรดใส่รหัสไปรษณีย์ที่ถูกต้องทั้งระยะช่วงและรูปแบบ 1XXX - 9XXX.\"\n\n#: be/forms.py:48\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\nmsgstr \"\"\n\"โปรดใส่หมายเลขโทรศัพท์ในรูปแบบใดรูปแบบหนึ่ง ดังต่อไปนี้ 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\n\n#: br/forms.py:22\nmsgid \"Enter a zip code in the format XXXXX-XXX.\"\nmsgstr \"ใส่รหัสไปรษณีย์ในรูปแบบ XXXXX-XXX \"\n\n#: br/forms.py:31\nmsgid \"Phone numbers must be in XX-XXXX-XXXX format.\"\nmsgstr \"ใส่หมายเลขโทรศัพท์ในรูปแบบ XX-XXXX-XXXX \"\n\n#: br/forms.py:58\nmsgid \"\"\n\"Select a valid brazilian state. That state is not one of the available \"\n\"states.\"\nmsgstr \"เลือกชื่อเมืองของบราซิล\"\n\n#: br/forms.py:93\nmsgid \"Invalid CPF number.\"\nmsgstr \"ตัวเลข CPF ไม่สมบูรณ์\"\n\n#: br/forms.py:94\nmsgid \"This field requires at most 11 digits or 14 characters.\"\nmsgstr \"ฟิลด์นี้ต้องการตัวเลขมากที่สุด 11 หรือ 14 ตัว\"\n\n#: br/forms.py:133\nmsgid \"Invalid CNPJ number.\"\nmsgstr \"ตัวเลข CNPJ ไม่สมบูรณ์\"\n\n#: br/forms.py:135\nmsgid \"This field requires at least 14 digits\"\nmsgstr \"ฟิลด์นี้ต้องการตัวเลขอย่างน้อย 14 หลัก\"\n\n#: ca/forms.py:29\nmsgid \"Enter a postal code in the format XXX XXX.\"\nmsgstr \"ใส่รหัสไปรษณีย์ในรูปแบบ XXX XXX \"\n\n#: ca/forms.py:47 us/forms.py:30\nmsgid \"Phone numbers must be in XXX-XXX-XXXX format.\"\nmsgstr \"หมายเลขโทรศัพท์จะต้องอยู่ในรูปแบบ XXX-XXX-XXXX\"\n\n#: ca/forms.py:69\nmsgid \"Enter a Canadian province or territory.\"\nmsgstr \"\"\n\n#: ca/forms.py:110\nmsgid \"Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.\"\nmsgstr \"ใส่หมายเลขของบัตรประกันสังคมแคนาดา ในรูปแบบ XXX-XXX-XXX \"\n\n#: ch/ch_states.py:5\nmsgid \"Aargau\"\nmsgstr \"อาร์เกา\"\n\n#: ch/ch_states.py:6\nmsgid \"Appenzell Innerrhoden\"\nmsgstr \"แอพเพ็นเซล อินเนอร์ฮอเดน\"\n\n#: ch/ch_states.py:7\nmsgid \"Appenzell Ausserrhoden\"\nmsgstr \"แอพเพ็นเซล ออสเซอร์ฮอเดน\"\n\n#: ch/ch_states.py:8\nmsgid \"Basel-Stadt\"\nmsgstr \"บาเซิล-ชตัดท์\"\n\n#: ch/ch_states.py:9\nmsgid \"Basel-Land\"\nmsgstr \"บาเซิล-ชตัดท์\"\n\n#: ch/ch_states.py:10\nmsgid \"Berne\"\nmsgstr \"เบอร์เน\"\n\n#: ch/ch_states.py:11\nmsgid \"Fribourg\"\nmsgstr \"ฟรายบวก\"\n\n#: ch/ch_states.py:12\nmsgid \"Geneva\"\nmsgstr \"เจนีวา\"\n\n#: ch/ch_states.py:13\nmsgid \"Glarus\"\nmsgstr \"กลารัส\"\n\n#: ch/ch_states.py:14\nmsgid \"Graubuenden\"\nmsgstr \"เกาบึนเดน\"\n\n#: ch/ch_states.py:15\nmsgid \"Jura\"\nmsgstr \"จูรา\"\n\n#: ch/ch_states.py:16\nmsgid \"Lucerne\"\nmsgstr \"ลูเซิร์น\"\n\n#: ch/ch_states.py:17\nmsgid \"Neuchatel\"\nmsgstr \"นูชาเทล\"\n\n#: ch/ch_states.py:18\nmsgid \"Nidwalden\"\nmsgstr \"นิดวาลเดน\"\n\n#: ch/ch_states.py:19\nmsgid \"Obwalden\"\nmsgstr \"ออบวาลเดน\"\n\n#: ch/ch_states.py:20\nmsgid \"Schaffhausen\"\nmsgstr \"ชัฟเฮาซัน\"\n\n#: ch/ch_states.py:21\nmsgid \"Schwyz\"\nmsgstr \"ชวิซ\"\n\n#: ch/ch_states.py:22\nmsgid \"Solothurn\"\nmsgstr \"โซโลเธิร์น\"\n\n#: ch/ch_states.py:23\nmsgid \"St. Gallen\"\nmsgstr \"เซนท์ กัลเลน\"\n\n#: ch/ch_states.py:24\nmsgid \"Thurgau\"\nmsgstr \"เธอร์เกอ\"\n\n#: ch/ch_states.py:25\nmsgid \"Ticino\"\nmsgstr \"ทีชิโน\"\n\n#: ch/ch_states.py:26\nmsgid \"Uri\"\nmsgstr \"ยูริ\"\n\n#: ch/ch_states.py:27\nmsgid \"Valais\"\nmsgstr \"วาเล\"\n\n#: ch/ch_states.py:28\nmsgid \"Vaud\"\nmsgstr \"วอด\"\n\n#: ch/ch_states.py:29\nmsgid \"Zug\"\nmsgstr \"ซูก\"\n\n#: ch/ch_states.py:30\nmsgid \"Zurich\"\nmsgstr \"ซูริค\"\n\n#: ch/forms.py:37\nmsgid \"Phone numbers must be in 0XX XXX XX XX format.\"\nmsgstr \"\"\n\n#: ch/forms.py:68\nmsgid \"\"\n\"Enter a valid Swiss identity or passport card number in X1234567<0 or \"\n\"1234567890 format.\"\nmsgstr \"\"\n\"ใส่หมายเลขประจำตัวประชาชนหรือหมายเลขพาสปอร์ต ในรูปแบบ X1234567<0 หรือ 1234567890\"\n\n#: cl/forms.py:32\nmsgid \"Enter a valid Chilean RUT.\"\nmsgstr \"ใส่ RUT ของชิลีที่ถูกต้อง\"\n\n#: cl/forms.py:33\nmsgid \"Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.\"\nmsgstr \"ใส่หมายเลข RUT ของชิลีที่ถูกต้องในรูปแบบ XX.XXX.XXX-X.\"\n\n#: cl/forms.py:34\nmsgid \"The Chilean RUT is not valid.\"\nmsgstr \"RUT ของชิลีไม่ถูกต้อง\"\n\n#: cn/forms.py:84\nmsgid \"Enter a post code in the format XXXXXX.\"\nmsgstr \"ป้อนรหัสที่โพสต์ในรูปแบบ XXXXXX\"\n\n#: cn/forms.py:105\nmsgid \"ID Card Number consists of 15 or 18 digits.\"\nmsgstr \"หมายเลขบัตรประจำตัวประกอบด้วย 15 หรือ 18 หลัก\"\n\n#: cn/forms.py:106\nmsgid \"Invalid ID Card Number: Wrong checksum\"\nmsgstr \"หมายเลขบัตรประจำตัวประชาชนไม่ถูกต้อง: checksum ผิด\"\n\n#: cn/forms.py:107\nmsgid \"Invalid ID Card Number: Wrong birthdate\"\nmsgstr \"หมายเลขบัตรประจำตัวไม่ถูกต้อง: วันเกิดผิด\"\n\n#: cn/forms.py:108\nmsgid \"Invalid ID Card Number: Wrong location code\"\nmsgstr \"หมายเลขบัตร IDไม่ถูกต้อง: รหัสสถานที่ตั้งผิด\"\n\n#: cn/forms.py:193\nmsgid \"Enter a valid phone number.\"\nmsgstr \"ใส่หมายเลขโทรศัพท์ที่ถูกต้อง\"\n\n#: cn/forms.py:210\nmsgid \"Enter a valid cell number.\"\nmsgstr \"ใส่เลขที่เซลล์ที่ถูกต้อง\"\n\n#: cz/cz_regions.py:8\nmsgid \"Prague\"\nmsgstr \"เมืองปราก\"\n\n#: cz/cz_regions.py:9\nmsgid \"Central Bohemian Region\"\nmsgstr \"เขตเซ็นทรัลโบฮีเมีย\"\n\n#: cz/cz_regions.py:10\nmsgid \"South Bohemian Region\"\nmsgstr \"เขตเซาท์โบฮีเมีย\"\n\n#: cz/cz_regions.py:11\nmsgid \"Pilsen Region\"\nmsgstr \"เขตเปิลเซน\"\n\n#: cz/cz_regions.py:12\nmsgid \"Carlsbad Region\"\nmsgstr \"เขตคาร์ลสแบด\"\n\n#: cz/cz_regions.py:13\nmsgid \"Usti Region\"\nmsgstr \"เขตอูสตีนาดลาเบม\"\n\n#: cz/cz_regions.py:14\nmsgid \"Liberec Region\"\nmsgstr \"เขตลีเบเรซ\"\n\n#: cz/cz_regions.py:15\nmsgid \"Hradec Region\"\nmsgstr \"เขตฮราเดตส์กราลอเว\"\n\n#: cz/cz_regions.py:16\nmsgid \"Pardubice Region\"\nmsgstr \"เขตปาร์ดูบีตเซ\"\n\n#: cz/cz_regions.py:17\nmsgid \"Vysocina Region\"\nmsgstr \"เขตวีซอชีนา\"\n\n#: cz/cz_regions.py:18\nmsgid \"South Moravian Region\"\nmsgstr \"เขตเซาท์มอเรเวีย\"\n\n#: cz/cz_regions.py:19\nmsgid \"Olomouc Region\"\nmsgstr \"เขตออลอโมตซ์\"\n\n#: cz/cz_regions.py:20\nmsgid \"Zlin Region\"\nmsgstr \"เขตซลีน\"\n\n#: cz/cz_regions.py:21\nmsgid \"Moravian-Silesian Region\"\nmsgstr \"เขตมอเรเวีย-ไซลีเชีย\"\n\n#: cz/forms.py:32 sk/forms.py:33\nmsgid \"Enter a postal code in the format XXXXX or XXX XX.\"\nmsgstr \"กรุณาใส่รหัสไปรษณีย์ในรูปของ XXXXX หรือ XXX XX \"\n\n#: cz/forms.py:52\nmsgid \"Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.\"\nmsgstr \"ใส่เลขที่เกิดในรูปแบบ XXXXXX / XXXX หรือ XXXXXXXXXX\"\n\n#: cz/forms.py:53\nmsgid \"Enter a valid birth number.\"\nmsgstr \"ใส่เลขที่เกิดให้ถูกต้อง\"\n\n#: cz/forms.py:102\nmsgid \"Enter a valid IC number.\"\nmsgstr \"ใส่หมายเลข IC ที่ถูกต้อง\"\n\n#: de/de_states.py:5\nmsgid \"Baden-Wuerttemberg\"\nmsgstr \"บาเดิน-เวือร์ทเทมแบร์ก\"\n\n#: de/de_states.py:6\nmsgid \"Bavaria\"\nmsgstr \"บาวาเรีย\"\n\n#: de/de_states.py:7\nmsgid \"Berlin\"\nmsgstr \"เบอร์ลิน\"\n\n#: de/de_states.py:8\nmsgid \"Brandenburg\"\nmsgstr \"บรานเดนเบิร์ก\"\n\n#: de/de_states.py:9\nmsgid \"Bremen\"\nmsgstr \"เบรเมน\"\n\n#: de/de_states.py:10\nmsgid \"Hamburg\"\nmsgstr \"ฮัมบูร์ก\"\n\n#: de/de_states.py:11\nmsgid \"Hessen\"\nmsgstr \"เฮสส์\"\n\n#: de/de_states.py:12\nmsgid \"Mecklenburg-Western Pomerania\"\nmsgstr \"เม็กเลนเบิร์กตะวันตก-โพเมราเนีย\"\n\n#: de/de_states.py:13\nmsgid \"Lower Saxony\"\nmsgstr \"แซกโซนีล่าง\"\n\n#: de/de_states.py:14\nmsgid \"North Rhine-Westphalia\"\nmsgstr \"ไรน์ เวสท์ฟาเลีย เหนือ\"\n\n#: de/de_states.py:15\nmsgid \"Rhineland-Palatinate\"\nmsgstr \"ไรน์แลนด์-พาลาทิเนต\"\n\n#: de/de_states.py:16\nmsgid \"Saarland\"\nmsgstr \"ซาร์แลนด์\"\n\n#: de/de_states.py:17\nmsgid \"Saxony\"\nmsgstr \"แซกโซนี\"\n\n#: de/de_states.py:18\nmsgid \"Saxony-Anhalt\"\nmsgstr \"แซกโซนี-แอเฮาท์\"\n\n#: de/de_states.py:19\nmsgid \"Schleswig-Holstein\"\nmsgstr \"ชเลสวิก-โฮลชไตน์\"\n\n#: de/de_states.py:20\nmsgid \"Thuringia\"\nmsgstr \"เธอร์ริงเกีย\"\n\n#: de/forms.py:20 fi/forms.py:18 fr/forms.py:20\nmsgid \"Enter a zip code in the format XXXXX.\"\nmsgstr \"ใส่รหัสไปรษณ๊ย์ ในรูปแบบ XXXXX\"\n\n#: de/forms.py:46\nmsgid \"\"\n\"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"format.\"\nmsgstr \"ใส่หมายเลขประจำตัวประชาชนเยอรมันในรูปแบบ XXXXXXXXXXX-XXXXXXX-XXXXXXX-X\"\n\n#: es/es_provinces.py:5\nmsgid \"Araba\"\nmsgstr \"\"\n\n#: es/es_provinces.py:6\nmsgid \"Albacete\"\nmsgstr \"อัลบาเซเต\"\n\n#: es/es_provinces.py:7\nmsgid \"Alacant\"\nmsgstr \"อลาแคนท์\"\n\n#: es/es_provinces.py:8\nmsgid \"Almeria\"\nmsgstr \"อัลมีเรีย\"\n\n#: es/es_provinces.py:9\nmsgid \"Avila\"\nmsgstr \"อบียา\"\n\n#: es/es_provinces.py:10\nmsgid \"Badajoz\"\nmsgstr \"บาดาจอซ\"\n\n#: es/es_provinces.py:11\nmsgid \"Illes Balears\"\nmsgstr \"หมู่เกาะแบลีแอริก\"\n\n#: es/es_provinces.py:12\nmsgid \"Barcelona\"\nmsgstr \"บาเซโลนา\"\n\n#: es/es_provinces.py:13\nmsgid \"Burgos\"\nmsgstr \"เบอร์โกซ\"\n\n#: es/es_provinces.py:14\nmsgid \"Caceres\"\nmsgstr \"กาเซเรส\"\n\n#: es/es_provinces.py:15\nmsgid \"Cadiz\"\nmsgstr \"คาดิซ\"\n\n#: es/es_provinces.py:16\nmsgid \"Castello\"\nmsgstr \"คาสเทลโล\"\n\n#: es/es_provinces.py:17\nmsgid \"Ciudad Real\"\nmsgstr \"ซิวดัด เรอัล\"\n\n#: es/es_provinces.py:18\nmsgid \"Cordoba\"\nmsgstr \"คอร์โดบา\"\n\n#: es/es_provinces.py:19\nmsgid \"A Coruna\"\nmsgstr \"ลา คอรุนญ่า\"\n\n#: es/es_provinces.py:20\nmsgid \"Cuenca\"\nmsgstr \"เกวงกา\"\n\n#: es/es_provinces.py:21\nmsgid \"Girona\"\nmsgstr \"จีโรนา\"\n\n#: es/es_provinces.py:22\nmsgid \"Granada\"\nmsgstr \"กรานาดา\"\n\n#: es/es_provinces.py:23\nmsgid \"Guadalajara\"\nmsgstr \"กวาดาลาฮารา\"\n\n#: es/es_provinces.py:24\nmsgid \"Guipuzkoa\"\nmsgstr \"กีปุซโกอา\"\n\n#: es/es_provinces.py:25\nmsgid \"Huelva\"\nmsgstr \"อูเอลบา\"\n\n#: es/es_provinces.py:26\nmsgid \"Huesca\"\nmsgstr \"อวยสกา\"\n\n#: es/es_provinces.py:27\nmsgid \"Jaen\"\nmsgstr \"คาเอน \"\n\n#: es/es_provinces.py:28\nmsgid \"Leon\"\nmsgstr \"ลีออน\"\n\n#: es/es_provinces.py:29\nmsgid \"Lleida\"\nmsgstr \"เยย์ดา\"\n\n#: es/es_provinces.py:30 es/es_regions.py:17\nmsgid \"La Rioja\"\nmsgstr \"ลา ริโอฮา\"\n\n#: es/es_provinces.py:31\nmsgid \"Lugo\"\nmsgstr \"ลูโก\"\n\n#: es/es_provinces.py:32 es/es_regions.py:18\nmsgid \"Madrid\"\nmsgstr \"มาดริด\"\n\n#: es/es_provinces.py:33\nmsgid \"Malaga\"\nmsgstr \"มายอกา\"\n\n#: es/es_provinces.py:34\nmsgid \"Murcia\"\nmsgstr \"มูร์เซีย\"\n\n#: es/es_provinces.py:35\nmsgid \"Navarre\"\nmsgstr \"นาวาร์\"\n\n#: es/es_provinces.py:36\nmsgid \"Ourense\"\nmsgstr \"โอเรนเซ\"\n\n#: es/es_provinces.py:37\nmsgid \"Asturias\"\nmsgstr \"อัสตูเรียส\"\n\n#: es/es_provinces.py:38\nmsgid \"Palencia\"\nmsgstr \"ปาเลนเซีย\"\n\n#: es/es_provinces.py:39\nmsgid \"Las Palmas\"\nmsgstr \"ลาส พัลมาส\"\n\n#: es/es_provinces.py:40\nmsgid \"Pontevedra\"\nmsgstr \"ปอนเตเบดรา\"\n\n#: es/es_provinces.py:41\nmsgid \"Salamanca\"\nmsgstr \"ซาลามังกา\"\n\n#: es/es_provinces.py:42\nmsgid \"Santa Cruz de Tenerife\"\nmsgstr \"ซานตาครูซ ดา เตริเนเฟ\"\n\n#: es/es_provinces.py:43 es/es_regions.py:11\nmsgid \"Cantabria\"\nmsgstr \"กันตาเบรีย\"\n\n#: es/es_provinces.py:44\nmsgid \"Segovia\"\nmsgstr \"เซโกเบีย\"\n\n#: es/es_provinces.py:45\nmsgid \"Seville\"\nmsgstr \"เซบียา\"\n\n#: es/es_provinces.py:46\nmsgid \"Soria\"\nmsgstr \"โซเรีย\"\n\n#: es/es_provinces.py:47\nmsgid \"Tarragona\"\nmsgstr \"ตาร์ราโกนา\"\n\n#: es/es_provinces.py:48\nmsgid \"Teruel\"\nmsgstr \"เตรวยล์\"\n\n#: es/es_provinces.py:49\nmsgid \"Toledo\"\nmsgstr \"โตเลโด\"\n\n#: es/es_provinces.py:50\nmsgid \"Valencia\"\nmsgstr \"บาเลนเซีย\"\n\n#: es/es_provinces.py:51\nmsgid \"Valladolid\"\nmsgstr \"บายาโดลิด\"\n\n#: es/es_provinces.py:52\nmsgid \"Bizkaia\"\nmsgstr \"บิสกาเอีย\"\n\n#: es/es_provinces.py:53\nmsgid \"Zamora\"\nmsgstr \"ซาโมรา\"\n\n#: es/es_provinces.py:54\nmsgid \"Zaragoza\"\nmsgstr \"ซาราโกซา\"\n\n#: es/es_provinces.py:55\nmsgid \"Ceuta\"\nmsgstr \"เซวตา\"\n\n#: es/es_provinces.py:56\nmsgid \"Melilla\"\nmsgstr \"เมลียา\"\n\n#: es/es_regions.py:5\nmsgid \"Andalusia\"\nmsgstr \"อันดาลูเซีย\"\n\n#: es/es_regions.py:6\nmsgid \"Aragon\"\nmsgstr \"อะรากอน\"\n\n#: es/es_regions.py:7\nmsgid \"Principality of Asturias\"\nmsgstr \"ราชรัฐอัสตูเรียส\"\n\n#: es/es_regions.py:8\nmsgid \"Balearic Islands\"\nmsgstr \"หมู่เกาะแบลีแอริก\"\n\n#: es/es_regions.py:9\nmsgid \"Basque Country\"\nmsgstr \"แคว้นบาสค์\"\n\n#: es/es_regions.py:10\nmsgid \"Canary Islands\"\nmsgstr \"หมู่เกาะคะเนรี\"\n\n#: es/es_regions.py:12\nmsgid \"Castile-La Mancha\"\nmsgstr \"กัสตียา-ลามันชา\"\n\n#: es/es_regions.py:13\nmsgid \"Castile and Leon\"\nmsgstr \"คาสตีลและเลออน\"\n\n#: es/es_regions.py:14\nmsgid \"Catalonia\"\nmsgstr \"คาเทโลเนีย\"\n\n#: es/es_regions.py:15\nmsgid \"Extremadura\"\nmsgstr \"เอกเตรมาดูรา\"\n\n#: es/es_regions.py:16\nmsgid \"Galicia\"\nmsgstr \"กาลิเซีย\"\n\n#: es/es_regions.py:19\nmsgid \"Region of Murcia\"\nmsgstr \"แคว้น มูเซียร์\"\n\n#: es/es_regions.py:20\nmsgid \"Foral Community of Navarre\"\nmsgstr \"แคว้นกฎบัตรนาวาร์ \"\n\n#: es/es_regions.py:21\nmsgid \"Valencian Community\"\nmsgstr \"แคว้นบาเลนเซีย\"\n\n#: es/forms.py:26\nmsgid \"Enter a valid postal code in the range and format 01XXX - 52XXX.\"\nmsgstr \"ใส่รหัสไปรษณีย์ในรูปของ 01XXX - 52XXX \"\n\n#: es/forms.py:46\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or \"\n\"9XXXXXXXX.\"\nmsgstr \"ใส่เบอร์โทรศัพท์ในรูปของ 6XXXXXXXX, 8XXXXXXXX หรือ 9XXXXXXXX \"\n\n#: es/forms.py:73\nmsgid \"Please enter a valid NIF, NIE, or CIF.\"\nmsgstr \"กรุณาใส่ NIF, NIE, หรือ CIF \"\n\n#: es/forms.py:74\nmsgid \"Please enter a valid NIF or NIE.\"\nmsgstr \"กรุณาใส่ NIF หรือ NIE\"\n\n#: es/forms.py:75\nmsgid \"Invalid checksum for NIF.\"\nmsgstr \"ผลรวมตรวจสอบ สำหรับ NIF ผิดพลาด\"\n\n#: es/forms.py:76\nmsgid \"Invalid checksum for NIE.\"\nmsgstr \"ผลรวมตรวจสอบ สำหรับ NIE ผิดพลาด\"\n\n#: es/forms.py:77\nmsgid \"Invalid checksum for CIF.\"\nmsgstr \"ผลรวมตรวจสอบ สำหรับ CIF ผิดพลาด\"\n\n#: es/forms.py:149\nmsgid \"\"\n\"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.\"\nmsgstr \"กรุณาใส่หมายเลขบัญชีในรูปแบบ XXXX-XXXX-XX-XXXXXXXXXX\"\n\n#: es/forms.py:150\nmsgid \"Invalid checksum for bank account number.\"\nmsgstr \"ผลรวมตรวจสอบ สำหรับบัญชีธนาคารผิดพลาด\"\n\n#: fi/forms.py:33\nmsgid \"Enter a valid Finnish social security number.\"\nmsgstr \"ใส่หมายเลขประกันสังคมฟินแลนด์\"\n\n#: fr/forms.py:35\nmsgid \"Phone numbers must be in 0X XX XX XX XX format.\"\nmsgstr \"หมายเลขโทรศัพท์จะต้องอยู่ในรูปแบบ 0x XX XX XX XX\"\n\n#: gb/forms.py:25\nmsgid \"Enter a valid postcode.\"\nmsgstr \"ใส่รหัสไปรษณีย์\"\n\n#: gb/gb_regions.py:11\nmsgid \"Bedfordshire\"\nmsgstr \"เบดฟอร์ดเชียร์\"\n\n#: gb/gb_regions.py:12\nmsgid \"Buckinghamshire\"\nmsgstr \"บัคกิ้งแฮมเชียร์\"\n\n#: gb/gb_regions.py:14\nmsgid \"Cheshire\"\nmsgstr \"ชีเชียร์\"\n\n#: gb/gb_regions.py:15\nmsgid \"Cornwall and Isles of Scilly\"\nmsgstr \"คอนวอลล์ และไฮเซลส์แห่งซิลลี\"\n\n#: gb/gb_regions.py:16\nmsgid \"Cumbria\"\nmsgstr \"คัมเบรีย\"\n\n#: gb/gb_regions.py:17\nmsgid \"Derbyshire\"\nmsgstr \"เดอร์บีเชียร์\"\n\n#: gb/gb_regions.py:18\nmsgid \"Devon\"\nmsgstr \"เดวอน\"\n\n#: gb/gb_regions.py:19\nmsgid \"Dorset\"\nmsgstr \"ดอร์เซท\"\n\n#: gb/gb_regions.py:20\nmsgid \"Durham\"\nmsgstr \"เดอร์แรม\"\n\n#: gb/gb_regions.py:21\nmsgid \"East Sussex\"\nmsgstr \"ซัสเซ็กซ์ ตะวันออก\"\n\n#: gb/gb_regions.py:22\nmsgid \"Essex\"\nmsgstr \"เอสเซ็กซ์\"\n\n#: gb/gb_regions.py:23\nmsgid \"Gloucestershire\"\nmsgstr \"กลอสเตอร์เชียร์\"\n\n#: gb/gb_regions.py:24\nmsgid \"Greater London\"\nmsgstr \"เกรตเตอร์ ลอนดอน\"\n\n#: gb/gb_regions.py:25\nmsgid \"Greater Manchester\"\nmsgstr \"เกรตเตอร์ แมนเชสเตอร์\"\n\n#: gb/gb_regions.py:26\nmsgid \"Hampshire\"\nmsgstr \"แฮมเชียร์\"\n\n#: gb/gb_regions.py:27\nmsgid \"Hertfordshire\"\nmsgstr \"เฮิร์ทฟอร์ดเชียร์\"\n\n#: gb/gb_regions.py:28\nmsgid \"Kent\"\nmsgstr \"เคนท์\"\n\n#: gb/gb_regions.py:29\nmsgid \"Lancashire\"\nmsgstr \"แลงคาเชียร์\"\n\n#: gb/gb_regions.py:30\nmsgid \"Leicestershire\"\nmsgstr \"เลสเตอร์เชียร์\"\n\n#: gb/gb_regions.py:31\nmsgid \"Lincolnshire\"\nmsgstr \"ลินคอล์นเชียร์\"\n\n#: gb/gb_regions.py:32\nmsgid \"Merseyside\"\nmsgstr \"เมอร์ซี่ไซด์\"\n\n#: gb/gb_regions.py:33\nmsgid \"Norfolk\"\nmsgstr \"นอร์ฟอล์ก\"\n\n#: gb/gb_regions.py:34\nmsgid \"North Yorkshire\"\nmsgstr \"ยอร์กเชียร์เหนือ\"\n\n#: gb/gb_regions.py:35\nmsgid \"Northamptonshire\"\nmsgstr \"นอร์ทแฮมตันเชียร์\"\n\n#: gb/gb_regions.py:36\nmsgid \"Northumberland\"\nmsgstr \"นอร์ทฮัมเบอร์แลนด์\"\n\n#: gb/gb_regions.py:37\nmsgid \"Nottinghamshire\"\nmsgstr \"นอตติ้งแฮมเชียร์\"\n\n#: gb/gb_regions.py:38\nmsgid \"Oxfordshire\"\nmsgstr \"ออกซ์ฟอร์ดเชียร์\"\n\n#: gb/gb_regions.py:39\nmsgid \"Shropshire\"\nmsgstr \"ชรอพเชียร์\"\n\n#: gb/gb_regions.py:40\nmsgid \"Somerset\"\nmsgstr \"ซอมเมอร์เซท\"\n\n#: gb/gb_regions.py:41\nmsgid \"South Yorkshire\"\nmsgstr \"ยอร์กเชียร์ ใต้\"\n\n#: gb/gb_regions.py:42\nmsgid \"Staffordshire\"\nmsgstr \"สตาฟฟอร์ดเชียร์\"\n\n#: gb/gb_regions.py:43\nmsgid \"Suffolk\"\nmsgstr \"ซัฟฟอล์ก\"\n\n#: gb/gb_regions.py:44\nmsgid \"Surrey\"\nmsgstr \"เซอร์รี่\"\n\n#: gb/gb_regions.py:45\nmsgid \"Tyne and Wear\"\nmsgstr \"ไทน์ และ เวียร์\"\n\n#: gb/gb_regions.py:46\nmsgid \"Warwickshire\"\nmsgstr \"วอร์วิกเชียร์\"\n\n#: gb/gb_regions.py:47\nmsgid \"West Midlands\"\nmsgstr \"มิดแลนด์ ตะวันตก\"\n\n#: gb/gb_regions.py:48\nmsgid \"West Sussex\"\nmsgstr \"ซัสเซ็กซ์ ตะวันตก\"\n\n#: gb/gb_regions.py:49\nmsgid \"West Yorkshire\"\nmsgstr \"ยอร์กเชียร์ ตะวันตก\"\n\n#: gb/gb_regions.py:50\nmsgid \"Wiltshire\"\nmsgstr \"วิลท์เชียร์\"\n\n#: gb/gb_regions.py:51\nmsgid \"Worcestershire\"\nmsgstr \"วอร์เซสเตอร์เชียร์\"\n\n#: gb/gb_regions.py:55\nmsgid \"County Antrim\"\nmsgstr \"แอนทริม\"\n\n#: gb/gb_regions.py:56\nmsgid \"County Armagh\"\nmsgstr \"อามาห์\"\n\n#: gb/gb_regions.py:57\nmsgid \"County Down\"\nmsgstr \"ดาวน์\"\n\n#: gb/gb_regions.py:58\nmsgid \"County Fermanagh\"\nmsgstr \"เฟอร์มานาห์\"\n\n#: gb/gb_regions.py:59\nmsgid \"County Londonderry\"\nmsgstr \"ลอนดอนเดอร์รี่\"\n\n#: gb/gb_regions.py:60\nmsgid \"County Tyrone\"\nmsgstr \"ไทโรน\"\n\n#: gb/gb_regions.py:64\nmsgid \"Clwyd\"\nmsgstr \"คลูวิด\"\n\n#: gb/gb_regions.py:65\nmsgid \"Dyfed\"\nmsgstr \"ดิฟฟิด\"\n\n#: gb/gb_regions.py:66\nmsgid \"Gwent\"\nmsgstr \"เกวนท์\"\n\n#: gb/gb_regions.py:67\nmsgid \"Gwynedd\"\nmsgstr \"กวินนืดด์\"\n\n#: gb/gb_regions.py:68\nmsgid \"Mid Glamorgan\"\nmsgstr \"กลามอร์แกนกลาง\"\n\n#: gb/gb_regions.py:69\nmsgid \"Powys\"\nmsgstr \"โพวิส\"\n\n#: gb/gb_regions.py:70\nmsgid \"South Glamorgan\"\nmsgstr \"กลามอร์แกน ใต้\"\n\n#: gb/gb_regions.py:71\nmsgid \"West Glamorgan\"\nmsgstr \"กลามอร์แกน ตะวันตก\"\n\n#: gb/gb_regions.py:75\nmsgid \"Borders\"\nmsgstr \"บอร์เดอส์\"\n\n#: gb/gb_regions.py:76\nmsgid \"Central Scotland\"\nmsgstr \"สกอตแลนด์กลาง\"\n\n#: gb/gb_regions.py:77\nmsgid \"Dumfries and Galloway\"\nmsgstr \"ดัมฟรายส์และแกลโลเวย์\"\n\n#: gb/gb_regions.py:78\nmsgid \"Fife\"\nmsgstr \"ไฟฟ์\"\n\n#: gb/gb_regions.py:79\nmsgid \"Grampian\"\nmsgstr \"แกรมเพียน\"\n\n#: gb/gb_regions.py:80\nmsgid \"Highland\"\nmsgstr \"ไฮแลนด์\"\n\n#: gb/gb_regions.py:81\nmsgid \"Lothian\"\nmsgstr \"ลอเธียน\"\n\n#: gb/gb_regions.py:82\nmsgid \"Orkney Islands\"\nmsgstr \"เกาะออร์กนี่\"\n\n#: gb/gb_regions.py:83\nmsgid \"Shetland Islands\"\nmsgstr \"เกาะเชตแลนด์\"\n\n#: gb/gb_regions.py:84\nmsgid \"Strathclyde\"\nmsgstr \"สเตรทไคลด์\"\n\n#: gb/gb_regions.py:85\nmsgid \"Tayside\"\nmsgstr \"เทย์ไซด์\"\n\n#: gb/gb_regions.py:86\nmsgid \"Western Isles\"\nmsgstr \"ไอเซลส์ตะวันออก\"\n\n#: gb/gb_regions.py:90\nmsgid \"England\"\nmsgstr \"อังกฤษ\"\n\n#: gb/gb_regions.py:91\nmsgid \"Northern Ireland\"\nmsgstr \"ไอร์แลนด์เหนือ\"\n\n#: gb/gb_regions.py:92\nmsgid \"Scotland\"\nmsgstr \"สกอตต์แลนด์\"\n\n#: gb/gb_regions.py:93\nmsgid \"Wales\"\nmsgstr \"เวลส์\"\n\n#: hk/forms.py:37\n#, python-format\nmsgid \"Phone number should not start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:40\n#, python-format\nmsgid \"Phone number must be in one of the following formats: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:42\n#, python-format\nmsgid \"Phone number should start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hr/forms.py:76\nmsgid \"Enter a valid 13 digit JMBG\"\nmsgstr \"ใส่รหัส JMBG ที่ถูกต้อง 13 หลัก\"\n\n#: hr/forms.py:77\nmsgid \"Error in date segment\"\nmsgstr \"ส่วนของวันที่ผิดพลาด\"\n\n#: hr/forms.py:123\nmsgid \"Enter a valid 11 digit OIB\"\nmsgstr \"ใส่ที่รหัส OIB จำนวน 11 หลักที่ถูกต้อง\"\n\n#: hr/forms.py:152 id/forms.py:112\nmsgid \"Enter a valid vehicle license plate number\"\nmsgstr \"ใส่เลขแผ่นป้ายทะเนียนรถให้ถูกต้อง\"\n\n#: hr/forms.py:153\nmsgid \"Enter a valid location code\"\nmsgstr \"ใส่รหัสที่ถูกต้องสถานที่\"\n\n#: hr/forms.py:154\nmsgid \"Number part cannot be zero\"\nmsgstr \"ตัวเลขจะต้องไม่เป็นศูนย์\"\n\n#: hr/forms.py:190\nmsgid \"Enter a valid 5 digit postal code\"\nmsgstr \"ใส่รหัสไปรษณีย์ที่ถูกต้อง 5 หลัก\"\n\n#: hr/forms.py:218 id/forms.py:72 nl/forms.py:56\nmsgid \"Enter a valid phone number\"\nmsgstr \"ใส่หมายเลขโทรศัพท์\"\n\n#: hr/forms.py:219\nmsgid \"Enter a valid area or mobile network code\"\nmsgstr \"ใส่รหัสพื้นที่ที่ถูกต้องหรือรหัสเครือข่ายมือถือ\"\n\n#: hr/forms.py:220\nmsgid \"The phone nubmer is too long\"\nmsgstr \"จำนวนเลขโทรศัพท์ยาวเกินไป\"\n\n#: hr/forms.py:258\nmsgid \"Enter a valid 19 digit JMBAG starting with 601983\"\nmsgstr \"ใส่ที่ถูกต้อง 19 JMBAG หลักที่ขึ้นต้นด้วย 601983\"\n\n#: hr/forms.py:259\nmsgid \"Card issue number cannot be zero\"\nmsgstr \"หมายเลขวันที่ออกบัตรไม่สามารถเป็นศูนย์\"\n\n#: hr/hr_choices.py:14\nmsgid \"Grad Zagreb\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:15\nmsgid \"Bjelovarsko-bilogorska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:16\nmsgid \"Brodsko-posavska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:17\nmsgid \"Dubrovačko-neretvanska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:18\nmsgid \"Istarska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:19\nmsgid \"Karlovačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:20\nmsgid \"Koprivničko-križevačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:21\nmsgid \"Krapinsko-zagorska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:22\nmsgid \"Ličko-senjska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:23\nmsgid \"Međimurska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:24\nmsgid \"Osječko-baranjska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:25\nmsgid \"Požeško-slavonska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:26\nmsgid \"Primorsko-goranska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:27\nmsgid \"Sisačko-moslavačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:28\nmsgid \"Splitsko-dalmatinska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:29\nmsgid \"Šibensko-kninska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:30\nmsgid \"Varaždinska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:31\nmsgid \"Virovitičko-podravska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:32\nmsgid \"Vukovarsko-srijemska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:33\nmsgid \"Zadarska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:34\nmsgid \"Zagrebačka županija\"\nmsgstr \"\"\n\n#: id/forms.py:31\nmsgid \"Enter a valid post code\"\nmsgstr \"ใส่รหัสที่ไปรษณีย์ให้ถูกต้อง\"\n\n#: id/forms.py:176\nmsgid \"Enter a valid NIK/KTP number\"\nmsgstr \"ใส่หมายเลข NIK / KTP ที่ถูกต้อง\"\n\n#: id/id_choices.py:15\nmsgid \"Aceh\"\nmsgstr \"เขตปกครองพิเศษอาเจะห์\"\n\n#: id/id_choices.py:16 id/id_choices.py:79\nmsgid \"Bali\"\nmsgstr \"จังหวัดบาหลี\"\n\n#: id/id_choices.py:17 id/id_choices.py:51\nmsgid \"Banten\"\nmsgstr \"จังหวัดบันเตน\"\n\n#: id/id_choices.py:18 id/id_choices.py:60\nmsgid \"Bengkulu\"\nmsgstr \"จังหวัดเบงกูลู\"\n\n#: id/id_choices.py:19 id/id_choices.py:53\nmsgid \"Yogyakarta\"\nmsgstr \"เขตปกครองพิเศษย็อกยาการ์ตา\"\n\n#: id/id_choices.py:20 id/id_choices.py:57\nmsgid \"Jakarta\"\nmsgstr \"เขตนครหลวงพิเศษจาการ์ตา\"\n\n#: id/id_choices.py:21 id/id_choices.py:81\nmsgid \"Gorontalo\"\nmsgstr \"จังหวัดโกรอนตาโล\"\n\n#: id/id_choices.py:22 id/id_choices.py:63\nmsgid \"Jambi\"\nmsgstr \"จังหวัดจัมบี\"\n\n#: id/id_choices.py:23\nmsgid \"Jawa Barat\"\nmsgstr \"จังหวัดชวาตะวันตก\"\n\n#: id/id_choices.py:24\nmsgid \"Jawa Tengah\"\nmsgstr \"จังหวัดชวากลาง\"\n\n#: id/id_choices.py:25\nmsgid \"Jawa Timur\"\nmsgstr \"จังหวัดชวาตะวันออก\"\n\n#: id/id_choices.py:26 id/id_choices.py:94\nmsgid \"Kalimantan Barat\"\nmsgstr \"จังหวัดกาลีมันตันตะวันตก\"\n\n#: id/id_choices.py:27 id/id_choices.py:72\nmsgid \"Kalimantan Selatan\"\nmsgstr \"จังหวัดกาลีมันตันใต้\"\n\n#: id/id_choices.py:28 id/id_choices.py:95\nmsgid \"Kalimantan Tengah\"\nmsgstr \"จังหวัดกาลีมันตันกลาง\"\n\n#: id/id_choices.py:29 id/id_choices.py:96\nmsgid \"Kalimantan Timur\"\nmsgstr \"จังหวัดกาลีมันตันตะวันออก\"\n\n#: id/id_choices.py:30\nmsgid \"Kepulauan Bangka-Belitung\"\nmsgstr \"หมู่เกาะบังกาเบลีตุง\"\n\n#: id/id_choices.py:31 id/id_choices.py:68\nmsgid \"Kepulauan Riau\"\nmsgstr \"หมู่เกาะเรียว\"\n\n#: id/id_choices.py:32 id/id_choices.py:61\nmsgid \"Lampung\"\nmsgstr \"จังหวัดลัมปุง\"\n\n#: id/id_choices.py:33 id/id_choices.py:76\nmsgid \"Maluku\"\nmsgstr \"จังหวัดมาลูกู\"\n\n#: id/id_choices.py:34 id/id_choices.py:77\nmsgid \"Maluku Utara\"\nmsgstr \"จังหวัดมาลูกูเหนือ\"\n\n#: id/id_choices.py:35\nmsgid \"Nusa Tenggara Barat\"\nmsgstr \"จังหวัดนูซาเต็งการาตะวันตก\"\n\n#: id/id_choices.py:36\nmsgid \"Nusa Tenggara Timur\"\nmsgstr \"จังหวัดนูซาเต็งการาตะวันออก\"\n\n#: id/id_choices.py:37\nmsgid \"Papua\"\nmsgstr \"จังหวัดปาปัว\"\n\n#: id/id_choices.py:38\nmsgid \"Papua Barat\"\nmsgstr \"จังหวัดปาปัวตะวันตก\"\n\n#: id/id_choices.py:39 id/id_choices.py:66\nmsgid \"Riau\"\nmsgstr \"จังหวัดเรียว\"\n\n#: id/id_choices.py:40 id/id_choices.py:74\nmsgid \"Sulawesi Barat\"\nmsgstr \"จังหวัดซูลาเวซีตะวันตก\"\n\n#: id/id_choices.py:41 id/id_choices.py:75\nmsgid \"Sulawesi Selatan\"\nmsgstr \"จังหวัดซูลาเวซีใต้\"\n\n#: id/id_choices.py:42 id/id_choices.py:82\nmsgid \"Sulawesi Tengah\"\nmsgstr \"จังหวัดซูลาเวซีกลาง\"\n\n#: id/id_choices.py:43 id/id_choices.py:85\nmsgid \"Sulawesi Tenggara\"\nmsgstr \"จังหวัดซูลาเวซีตะวันออกเฉียงใต้\"\n\n#: id/id_choices.py:44\nmsgid \"Sulawesi Utara\"\nmsgstr \"จังหวัดซูลาเวซีเหนือ\"\n\n#: id/id_choices.py:45 id/id_choices.py:58\nmsgid \"Sumatera Barat\"\nmsgstr \"จังหวัดสุมาตราตะวันตก\"\n\n#: id/id_choices.py:46 id/id_choices.py:62\nmsgid \"Sumatera Selatan\"\nmsgstr \"จังหวัดสุมาตราใต้\"\n\n#: id/id_choices.py:47 id/id_choices.py:64\nmsgid \"Sumatera Utara\"\nmsgstr \"จังหวัดสุมาตราเหนือ\"\n\n#: id/id_choices.py:52\nmsgid \"Magelang\"\nmsgstr \"\"\n\n#: id/id_choices.py:54\nmsgid \"Surakarta - Solo\"\nmsgstr \"\"\n\n#: id/id_choices.py:55\nmsgid \"Madiun\"\nmsgstr \"\"\n\n#: id/id_choices.py:56\nmsgid \"Kediri\"\nmsgstr \"\"\n\n#: id/id_choices.py:59\nmsgid \"Tapanuli\"\nmsgstr \"\"\n\n#: id/id_choices.py:65\nmsgid \"Nanggroe Aceh Darussalam\"\nmsgstr \"\"\n\n#: id/id_choices.py:67\nmsgid \"Kepulauan Bangka Belitung\"\nmsgstr \"\"\n\n#: id/id_choices.py:69\nmsgid \"Corps Consulate\"\nmsgstr \"\"\n\n#: id/id_choices.py:70\nmsgid \"Corps Diplomatic\"\nmsgstr \"\"\n\n#: id/id_choices.py:71\nmsgid \"Bandung\"\nmsgstr \"\"\n\n#: id/id_choices.py:73\nmsgid \"Sulawesi Utara Daratan\"\nmsgstr \"\"\n\n#: id/id_choices.py:78\nmsgid \"NTT - Timor\"\nmsgstr \"\"\n\n#: id/id_choices.py:80\nmsgid \"Sulawesi Utara Kepulauan\"\nmsgstr \"\"\n\n#: id/id_choices.py:83\nmsgid \"NTB - Lombok\"\nmsgstr \"\"\n\n#: id/id_choices.py:84\nmsgid \"Papua dan Papua Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:86\nmsgid \"Cirebon\"\nmsgstr \"\"\n\n#: id/id_choices.py:87\nmsgid \"NTB - Sumbawa\"\nmsgstr \"\"\n\n#: id/id_choices.py:88\nmsgid \"NTT - Flores\"\nmsgstr \"\"\n\n#: id/id_choices.py:89\nmsgid \"NTT - Sumba\"\nmsgstr \"\"\n\n#: id/id_choices.py:90\nmsgid \"Bogor\"\nmsgstr \"\"\n\n#: id/id_choices.py:91\nmsgid \"Pekalongan\"\nmsgstr \"\"\n\n#: id/id_choices.py:92\nmsgid \"Semarang\"\nmsgstr \"\"\n\n#: id/id_choices.py:93\nmsgid \"Pati\"\nmsgstr \"\"\n\n#: id/id_choices.py:97\nmsgid \"Surabaya\"\nmsgstr \"\"\n\n#: id/id_choices.py:98\nmsgid \"Madura\"\nmsgstr \"\"\n\n#: id/id_choices.py:99\nmsgid \"Malang\"\nmsgstr \"\"\n\n#: id/id_choices.py:100\nmsgid \"Jember\"\nmsgstr \"\"\n\n#: id/id_choices.py:101\nmsgid \"Banyumas\"\nmsgstr \"\"\n\n#: id/id_choices.py:102\nmsgid \"Federal Government\"\nmsgstr \"\"\n\n#: id/id_choices.py:103\nmsgid \"Bojonegoro\"\nmsgstr \"\"\n\n#: id/id_choices.py:104\nmsgid \"Purwakarta\"\nmsgstr \"\"\n\n#: id/id_choices.py:105\nmsgid \"Sidoarjo\"\nmsgstr \"\"\n\n#: id/id_choices.py:106\nmsgid \"Garut\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:8\nmsgid \"Antrim\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:9\nmsgid \"Armagh\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:10\nmsgid \"Carlow\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:11\nmsgid \"Cavan\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:12\nmsgid \"Clare\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:13\nmsgid \"Cork\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:14\nmsgid \"Derry\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:15\nmsgid \"Donegal\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:16\nmsgid \"Down\"\nmsgstr \"ลง\"\n\n#: ie/ie_counties.py:17\nmsgid \"Dublin\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:18\nmsgid \"Fermanagh\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:19\nmsgid \"Galway\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:20\nmsgid \"Kerry\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:21\nmsgid \"Kildare\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:22\nmsgid \"Kilkenny\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:23\nmsgid \"Laois\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:24\nmsgid \"Leitrim\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:25\nmsgid \"Limerick\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:26\nmsgid \"Longford\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:27\nmsgid \"Louth\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:28\nmsgid \"Mayo\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:29\nmsgid \"Meath\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:30\nmsgid \"Monaghan\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:31\nmsgid \"Offaly\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:32\nmsgid \"Roscommon\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:33\nmsgid \"Sligo\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:34\nmsgid \"Tipperary\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:35\nmsgid \"Tyrone\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:36\nmsgid \"Waterford\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:37\nmsgid \"Westmeath\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:38\nmsgid \"Wexford\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:39\nmsgid \"Wicklow\"\nmsgstr \"\"\n\n#: il/forms.py:32\nmsgid \"Enter a postal code in the format XXXXX\"\nmsgstr \"ใส่รหัสไปรษณีย์ในรูปแบบ XXXXX\"\n\n#: il/forms.py:51\nmsgid \"Enter a valid ID number.\"\nmsgstr \"ป้อนหมายเลขรหัสที่ถูกต้อง\"\n\n#: in_/forms.py:41\nmsgid \"Enter a zip code in the format XXXXXX or XXX XXX.\"\nmsgstr \"ใส่รหัสไปรษณีย์ในรูปแบบ XXXXXX หรือ XXX XXX\"\n\n#: in_/forms.py:64\nmsgid \"Enter an Indian state or territory.\"\nmsgstr \"ป้อนอินเดียนรัฐหรือดินแดน\"\n\n#: in_/forms.py:103\nmsgid \"Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.\"\nmsgstr \"หมายเลขโทรศัพท์จะต้องอยู่ในรูปแบบ 02X-03X หรือ 8X-7X หรือ 04X-6X\"\n\n#: is_/forms.py:22\nmsgid \"\"\n\"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.\"\nmsgstr \"ใส่หมายเลขประจำตัวประชาชนไอซ์แลนด์ในรูปของ XXXXXX-XXXX\"\n\n#: is_/forms.py:23\nmsgid \"The Icelandic identification number is not valid.\"\nmsgstr \"หมายเลขประจำตัวประชาชนไอซ์แลนด์ไม่ถูกต้อง\"\n\n#: it/forms.py:21\nmsgid \"Enter a valid zip code.\"\nmsgstr \"ใส่รหัสไปรษณีย์\"\n\n#: it/forms.py:48\nmsgid \"Enter a valid Social Security number.\"\nmsgstr \"ใส่หมายเลขประกันสังคม\"\n\n#: it/forms.py:73\nmsgid \"Enter a valid VAT number.\"\nmsgstr \"กรอกหมายเลขภาษีมูลค่าเพิ่มที่ถูต้อง\"\n\n#: jp/forms.py:19\nmsgid \"Enter a postal code in the format XXXXXXX or XXX-XXXX.\"\nmsgstr \"ใส่รหัสไปรษณีย์ในรูปของ XXXXXXX หรือ XXX-XXXX\"\n\n#: jp/jp_prefectures.py:4\nmsgid \"Hokkaido\"\nmsgstr \"ฮอกไกโด\"\n\n#: jp/jp_prefectures.py:5\nmsgid \"Aomori\"\nmsgstr \"อาโอโมริ\"\n\n#: jp/jp_prefectures.py:6\nmsgid \"Iwate\"\nmsgstr \"อิวาเตะ\"\n\n#: jp/jp_prefectures.py:7\nmsgid \"Miyagi\"\nmsgstr \"มิยากิ\"\n\n#: jp/jp_prefectures.py:8\nmsgid \"Akita\"\nmsgstr \"อากิตะ\"\n\n#: jp/jp_prefectures.py:9\nmsgid \"Yamagata\"\nmsgstr \"ยามากาตา\"\n\n#: jp/jp_prefectures.py:10\nmsgid \"Fukushima\"\nmsgstr \"ฟุกุชิมา\"\n\n#: jp/jp_prefectures.py:11\nmsgid \"Ibaraki\"\nmsgstr \"อิบารากิ\"\n\n#: jp/jp_prefectures.py:12\nmsgid \"Tochigi\"\nmsgstr \"โตชิกิ\"\n\n#: jp/jp_prefectures.py:13\nmsgid \"Gunma\"\nmsgstr \"กันมา\"\n\n#: jp/jp_prefectures.py:14\nmsgid \"Saitama\"\nmsgstr \"ไซตามะ\"\n\n#: jp/jp_prefectures.py:15\nmsgid \"Chiba\"\nmsgstr \"ชิบะ\"\n\n#: jp/jp_prefectures.py:16\nmsgid \"Tokyo\"\nmsgstr \"โตเกียว\"\n\n#: jp/jp_prefectures.py:17\nmsgid \"Kanagawa\"\nmsgstr \"คะนะงะวะ\"\n\n#: jp/jp_prefectures.py:18\nmsgid \"Yamanashi\"\nmsgstr \"ยามานาชิ\"\n\n#: jp/jp_prefectures.py:19\nmsgid \"Nagano\"\nmsgstr \"นากาโนะ\"\n\n#: jp/jp_prefectures.py:20\nmsgid \"Niigata\"\nmsgstr \"นีงะตะ\"\n\n#: jp/jp_prefectures.py:21\nmsgid \"Toyama\"\nmsgstr \"โทยามะ\"\n\n#: jp/jp_prefectures.py:22\nmsgid \"Ishikawa\"\nmsgstr \"อิชิคาวะ\"\n\n#: jp/jp_prefectures.py:23\nmsgid \"Fukui\"\nmsgstr \"ฟูกุอิ\"\n\n#: jp/jp_prefectures.py:24\nmsgid \"Gifu\"\nmsgstr \"กิฟู\"\n\n#: jp/jp_prefectures.py:25\nmsgid \"Shizuoka\"\nmsgstr \"ชิซูโอกะ\"\n\n#: jp/jp_prefectures.py:26\nmsgid \"Aichi\"\nmsgstr \"อะอิชิ\"\n\n#: jp/jp_prefectures.py:27\nmsgid \"Mie\"\nmsgstr \"มิเอะ\"\n\n#: jp/jp_prefectures.py:28\nmsgid \"Shiga\"\nmsgstr \"ชิกะ\"\n\n#: jp/jp_prefectures.py:29\nmsgid \"Kyoto\"\nmsgstr \"เกียวโต\"\n\n#: jp/jp_prefectures.py:30\nmsgid \"Osaka\"\nmsgstr \"โอซากา\"\n\n#: jp/jp_prefectures.py:31\nmsgid \"Hyogo\"\nmsgstr \"เฮียวโงะ\"\n\n#: jp/jp_prefectures.py:32\nmsgid \"Nara\"\nmsgstr \"นาระ\"\n\n#: jp/jp_prefectures.py:33\nmsgid \"Wakayama\"\nmsgstr \"วากะยามะ\"\n\n#: jp/jp_prefectures.py:34\nmsgid \"Tottori\"\nmsgstr \"ทตโตะริ\"\n\n#: jp/jp_prefectures.py:35\nmsgid \"Shimane\"\nmsgstr \"ชิมาเนะ\"\n\n#: jp/jp_prefectures.py:36\nmsgid \"Okayama\"\nmsgstr \"โอกะยามะ\"\n\n#: jp/jp_prefectures.py:37\nmsgid \"Hiroshima\"\nmsgstr \"ฮิโรชิมา\"\n\n#: jp/jp_prefectures.py:38\nmsgid \"Yamaguchi\"\nmsgstr \"ยามากุชิ\"\n\n#: jp/jp_prefectures.py:39\nmsgid \"Tokushima\"\nmsgstr \"โตกุชิมะ\"\n\n#: jp/jp_prefectures.py:40\nmsgid \"Kagawa\"\nmsgstr \"คากะวะ\"\n\n#: jp/jp_prefectures.py:41\nmsgid \"Ehime\"\nmsgstr \"อิฮิเมะ\"\n\n#: jp/jp_prefectures.py:42\nmsgid \"Kochi\"\nmsgstr \"โคจิ\"\n\n#: jp/jp_prefectures.py:43\nmsgid \"Fukuoka\"\nmsgstr \"ฟุกุโอกะ\"\n\n#: jp/jp_prefectures.py:44\nmsgid \"Saga\"\nmsgstr \"ซากะ\"\n\n#: jp/jp_prefectures.py:45\nmsgid \"Nagasaki\"\nmsgstr \"นากะซากิ\"\n\n#: jp/jp_prefectures.py:46\nmsgid \"Kumamoto\"\nmsgstr \"คุมะโมโตะ\"\n\n#: jp/jp_prefectures.py:47\nmsgid \"Oita\"\nmsgstr \"โออิตะ\"\n\n#: jp/jp_prefectures.py:48\nmsgid \"Miyazaki\"\nmsgstr \"มิยาซากิ\"\n\n#: jp/jp_prefectures.py:49\nmsgid \"Kagoshima\"\nmsgstr \"คาโกชิมา\"\n\n#: jp/jp_prefectures.py:50\nmsgid \"Okinawa\"\nmsgstr \"โอคินาวะ\"\n\n#: kw/forms.py:27\nmsgid \"Enter a valid Kuwaiti Civil ID number\"\nmsgstr \"ใส่รหัสประจำตัวโยธาคูเวตที่ถูกต้อง\"\n\n#: mk/forms.py:18\nmsgid \"\"\n\"Identity card numbers must contain either 4 to 7 digits or an uppercase \"\n\"letter and 7 digits.\"\nmsgstr \"หมายเลขบัตรประจำตัวประชาชนจะต้องมีทั้ง 4 ถึง 7 หลักหรือตัวอักษรตัวพิมพ์ใหญ่และ 7 หลัก\"\n\n#: mk/forms.py:57 si/forms.py:24\nmsgid \"This field should contain exactly 13 digits.\"\nmsgstr \"ฟิลด์นี้ควรมีตัวเลข 13 หลัก\"\n\n#: mk/forms.py:58\nmsgid \"The first 7 digits of the UMCN must represent a valid past date.\"\nmsgstr \"รหัส 7 หลักแรกของ UMCN ต้องเป็นตัวเลขที่ถูกต้องของวันที่ผ่านมา\"\n\n#: mk/forms.py:59\nmsgid \"The UMCN is not valid.\"\nmsgstr \"UMCN ไม่ถูกต้อง\"\n\n#: mk/mk_choices.py:10\nmsgid \"Aerodrom\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:11\nmsgid \"Aračinovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:12\nmsgid \"Berovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:13\nmsgid \"Bitola\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:14\nmsgid \"Bogdanci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:15\nmsgid \"Bogovinje\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:16\nmsgid \"Bosilovo\"\nmsgstr \"ใส่หมายเลขรหัสไปรษณีย์ 4 หลัก\"\n\n#: mk/mk_choices.py:17\nmsgid \"Brvenica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:18\nmsgid \"Butel\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:19\nmsgid \"Valandovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:20\nmsgid \"Vasilevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:21\nmsgid \"Vevčani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:22\nmsgid \"Veles\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:23\nmsgid \"Vinica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:24\nmsgid \"Vraneštica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:25\nmsgid \"Vrapčište\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:26\nmsgid \"Gazi Baba\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:27\nmsgid \"Gevgelija\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:28\nmsgid \"Gostivar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:29\nmsgid \"Gradsko\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:30\nmsgid \"Debar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:31\nmsgid \"Debarca\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:32\nmsgid \"Delčevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:33\nmsgid \"Demir Kapija\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:34\nmsgid \"Demir Hisar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:35\nmsgid \"Dolneni\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:36\nmsgid \"Drugovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:37\nmsgid \"Gjorče Petrov\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:38\nmsgid \"Želino\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:39\nmsgid \"Zajas\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:40\nmsgid \"Zelenikovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:41\nmsgid \"Zrnovci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:42\nmsgid \"Ilinden\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:43\nmsgid \"Jegunovce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:44\nmsgid \"Kavadarci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:45\nmsgid \"Karbinci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:46\nmsgid \"Karpoš\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:47\nmsgid \"Kisela Voda\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:48\nmsgid \"Kičevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:49\nmsgid \"Konče\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:50\nmsgid \"Koćani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:51\nmsgid \"Kratovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:52\nmsgid \"Kriva Palanka\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:53\nmsgid \"Krivogaštani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:54\nmsgid \"Kruševo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:55\nmsgid \"Kumanovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:56\nmsgid \"Lipkovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:57\nmsgid \"Lozovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:58\nmsgid \"Mavrovo i Rostuša\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:59\nmsgid \"Makedonska Kamenica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:60\nmsgid \"Makedonski Brod\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:61\nmsgid \"Mogila\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:62\nmsgid \"Negotino\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:63\nmsgid \"Novaci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:64\nmsgid \"Novo Selo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:65\nmsgid \"Oslomej\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:66\nmsgid \"Ohrid\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:67\nmsgid \"Petrovec\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:68\nmsgid \"Pehčevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:69\nmsgid \"Plasnica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:70\nmsgid \"Prilep\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:71\nmsgid \"Probištip\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:72\nmsgid \"Radoviš\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:73\nmsgid \"Rankovce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:74\nmsgid \"Resen\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:75\nmsgid \"Rosoman\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:76\nmsgid \"Saraj\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:77\nmsgid \"Sveti Nikole\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:78\nmsgid \"Sopište\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:79\nmsgid \"Star Dojran\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:80\nmsgid \"Staro Nagoričane\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:81\nmsgid \"Struga\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:82\nmsgid \"Strumica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:83\nmsgid \"Studeničani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:84\nmsgid \"Tearce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:85\nmsgid \"Tetovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:86\nmsgid \"Centar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:87\nmsgid \"Centar-Župa\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:88\nmsgid \"Čair\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:89\nmsgid \"Čaška\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:90\nmsgid \"Češinovo-Obleševo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:91\nmsgid \"Čučer-Sandevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:92\nmsgid \"Štip\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:93\nmsgid \"Šuto Orizari\"\nmsgstr \"\"\n\n#: mk/models.py:11\nmsgid \"Macedonian identity card number\"\nmsgstr \"บัตรประจำตัวของมาซิโดเนีย\"\n\n#: mk/models.py:25\nmsgid \"A Macedonian municipality (2 character code)\"\nmsgstr \"เทศบาลมาซิโดเนีย (รหัสตัวอักษร 2)\"\n\n#: mk/models.py:35\nmsgid \"Unique master citizen number (13 digits)\"\nmsgstr \"เลขประจำตัวประชาชาติ (13 หลัก)\"\n\n#: mx/forms.py:67\nmsgid \"Enter a valid zip code in the format XXXXX.\"\nmsgstr \"ป้อนรหัสไปรษณีย์ที่ถูกต้องในรูปแบบ XXXXX\"\n\n#: mx/forms.py:110\nmsgid \"Enter a valid RFC.\"\nmsgstr \"ใส่ RFC ที่ถูกต้อง \"\n\n#: mx/forms.py:111\nmsgid \"Invalid checksum for RFC.\"\nmsgstr \"checksum ของ RFC ไม่ถูกต้อง\"\n\n#: mx/forms.py:191\nmsgid \"Enter a valid CURP.\"\nmsgstr \"ป้อน CURP ที่ถูกต้อง\"\n\n#: mx/forms.py:192\nmsgid \"Invalid checksum for CURP.\"\nmsgstr \"checksum ของ CURP ไม่ถูกต้อง\"\n\n#: mx/models.py:14\nmsgid \"Mexico state (three uppercase letters)\"\nmsgstr \"เม็กซิโกรัฐ (สามตัวอักษรพิมพ์ใหญ่)\"\n\n#: mx/models.py:27\nmsgid \"Mexico zip code\"\nmsgstr \"รหัสไปรษณีย์เม็กซิโก\"\n\n#: mx/models.py:44\nmsgid \"Mexican RFC\"\nmsgstr \"RFC เม็กซิกัน\"\n\n#: mx/models.py:61\nmsgid \"Mexican CURP\"\nmsgstr \"CURP เม็กซิกัน\"\n\n#: mx/mx_states.py:14\nmsgid \"Aguascalientes\"\nmsgstr \"อากวัสกาเลียนเตส\"\n\n#: mx/mx_states.py:15\nmsgid \"Baja California\"\nmsgstr \"บาจา แคลิฟอร์เนีย\"\n\n#: mx/mx_states.py:16\nmsgid \"Baja California Sur\"\nmsgstr \"บาฮากาลิฟอร์เนียซูร์\"\n\n#: mx/mx_states.py:17\nmsgid \"Campeche\"\nmsgstr \"กัมเปเช\"\n\n#: mx/mx_states.py:18\nmsgid \"Chihuahua\"\nmsgstr \"ชีวาวา\"\n\n#: mx/mx_states.py:19\nmsgid \"Chiapas\"\nmsgstr \"เชียปัส\"\n\n#: mx/mx_states.py:20\nmsgid \"Coahuila\"\nmsgstr \"โกอาวีลา\"\n\n#: mx/mx_states.py:21\nmsgid \"Colima\"\nmsgstr \"โคลิมา\"\n\n#: mx/mx_states.py:22\nmsgid \"Distrito Federal\"\nmsgstr \"เม็กซิโก ซิตี้\"\n\n#: mx/mx_states.py:23\nmsgid \"Durango\"\nmsgstr \"ดูรังโก\"\n\n#: mx/mx_states.py:24\nmsgid \"Guerrero\"\nmsgstr \"เกร์เรโร\"\n\n#: mx/mx_states.py:25\nmsgid \"Guanajuato\"\nmsgstr \"กวานาวาโต\"\n\n#: mx/mx_states.py:26\nmsgid \"Hidalgo\"\nmsgstr \"ฮิดาลโก\"\n\n#: mx/mx_states.py:27\nmsgid \"Jalisco\"\nmsgstr \"จาลิสโค\"\n\n#: mx/mx_states.py:28\nmsgid \"Estado de México\"\nmsgstr \"เม็กซิโก\"\n\n#: mx/mx_states.py:29\nmsgid \"Michoacán\"\nmsgstr \"มิโชอากัง\"\n\n#: mx/mx_states.py:30\nmsgid \"Morelos\"\nmsgstr \"มอเรโลส\"\n\n#: mx/mx_states.py:31\nmsgid \"Nayarit\"\nmsgstr \"นายาริต\"\n\n#: mx/mx_states.py:32\nmsgid \"Nuevo León\"\nmsgstr \"นวยโวเลออง\"\n\n#: mx/mx_states.py:33\nmsgid \"Oaxaca\"\nmsgstr \"โออาซากา\"\n\n#: mx/mx_states.py:34\nmsgid \"Puebla\"\nmsgstr \"ปวยบลา\"\n\n#: mx/mx_states.py:35\nmsgid \"Querétaro\"\nmsgstr \"กิเรตาโร\"\n\n#: mx/mx_states.py:36\nmsgid \"Quintana Roo\"\nmsgstr \"กินตานาโร\"\n\n#: mx/mx_states.py:37\nmsgid \"Sinaloa\"\nmsgstr \"ซีนาโลอา\"\n\n#: mx/mx_states.py:38\nmsgid \"San Luis Potosí\"\nmsgstr \"ซันลุยส์โปโตซี\"\n\n#: mx/mx_states.py:39\nmsgid \"Sonora\"\nmsgstr \"โซโนร่า\"\n\n#: mx/mx_states.py:40\nmsgid \"Tabasco\"\nmsgstr \"ทาบาสโค\"\n\n#: mx/mx_states.py:41\nmsgid \"Tamaulipas\"\nmsgstr \"ตาเมาลีปัส\"\n\n#: mx/mx_states.py:42\nmsgid \"Tlaxcala\"\nmsgstr \"ตลัซกาลา\"\n\n#: mx/mx_states.py:43\nmsgid \"Veracruz\"\nmsgstr \"เวรากรูซ\"\n\n#: mx/mx_states.py:44\nmsgid \"Yucatán\"\nmsgstr \"ยูกาตัง\"\n\n#: mx/mx_states.py:45\nmsgid \"Zacatecas\"\nmsgstr \"ซากาเตกัส\"\n\n#: nl/forms.py:26\nmsgid \"Enter a valid postal code\"\nmsgstr \"ใส่รหัสไปรษณีย์\"\n\n#: nl/forms.py:82\nmsgid \"Enter a valid SoFi number\"\nmsgstr \"กรอกหมายเลขประจำตัวประชาชน\"\n\n#: nl/nl_provinces.py:4\nmsgid \"Drenthe\"\nmsgstr \"แดรนด์\"\n\n#: nl/nl_provinces.py:5\nmsgid \"Flevoland\"\nmsgstr \"เฟลโวแลนด์\"\n\n#: nl/nl_provinces.py:6\nmsgid \"Friesland\"\nmsgstr \"ฟรายส์แลนด์\"\n\n#: nl/nl_provinces.py:7\nmsgid \"Gelderland\"\nmsgstr \"เกลเดอร์แลนด์\"\n\n#: nl/nl_provinces.py:8\nmsgid \"Groningen\"\nmsgstr \"เกรอนิงเกน\"\n\n#: nl/nl_provinces.py:10\nmsgid \"Noord-Brabant\"\nmsgstr \"นอร์ด บราเบนต์\"\n\n#: nl/nl_provinces.py:11\nmsgid \"Noord-Holland\"\nmsgstr \"นอร์ด ฮอลแลนด์\"\n\n#: nl/nl_provinces.py:12\nmsgid \"Overijssel\"\nmsgstr \"โอเวอรีเซล\"\n\n#: nl/nl_provinces.py:13\nmsgid \"Utrecht\"\nmsgstr \"อูเทรซ์ค\"\n\n#: nl/nl_provinces.py:14\nmsgid \"Zeeland\"\nmsgstr \"ซีแลนด์\"\n\n#: nl/nl_provinces.py:15\nmsgid \"Zuid-Holland\"\nmsgstr \"ซูด ฮอลแลนด์\"\n\n#: no/forms.py:39\nmsgid \"Enter a valid Norwegian social security number.\"\nmsgstr \"ใส่หมายเลขประกันสังคมนอร์เวย์\"\n\n#: pe/forms.py:28\nmsgid \"This field requires 8 digits.\"\nmsgstr \"ข่องนี้ต้องการตัวเลข 8 ตัว\"\n\n#: pe/forms.py:56\nmsgid \"This field requires 11 digits.\"\nmsgstr \"ช่องนี้ต้องการตัวเลข 11 ตัว\"\n\n#: pl/forms.py:42\nmsgid \"National Identification Number consists of 11 digits.\"\nmsgstr \"บัตรประจำตัวประชาประกอบด้วยตัวเลข 11 ตัว\"\n\n#: pl/forms.py:43\nmsgid \"Wrong checksum for the National Identification Number.\"\nmsgstr \"ผลรวมตรวจสอบของหมายเลขประจำตัวประชาชนผิดพลาด\"\n\n#: pl/forms.py:79\nmsgid \"National ID Card Number consists of 3 letters and 6 digits.\"\nmsgstr \"บัตรประจำตัวประชาชนประกอบด้วย 3 ตัวอักษรและเลข 6 หลัก\"\n\n#: pl/forms.py:80\nmsgid \"Wrong checksum for the National ID Card Number.\"\nmsgstr \"checksum ไม่ถูกต้องของบัตรประจำตัวประชาชน\"\n\n#: pl/forms.py:131\nmsgid \"\"\n\"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or \"\n\"XXXXXXXXXX.\"\nmsgstr \"ใส่เลขที่ภาษี (NIP) ในรูปแบบ XXX-XXX-XX-XX, XXX-XX-XX-XXX หรือ XXXXXXXXXX\"\n\n#: pl/forms.py:132\nmsgid \"Wrong checksum for the Tax Number (NIP).\"\nmsgstr \"ผลรวมตรวจสอบสำหรับหมายเลขผู้เสียภาษี (NIP) ผิดพลาด.\"\n\n#: pl/forms.py:171\nmsgid \"National Business Register Number (REGON) consists of 9 or 14 digits.\"\nmsgstr \"รหัสสมาชิกธุรกิจแห่งชาติ (REGON) ประกอบด้วย 9 หรือ 14 หลัก\"\n\n#: pl/forms.py:172\nmsgid \"Wrong checksum for the National Business Register Number (REGON).\"\nmsgstr \"ผลรวมตรวจสอบ National Business Register Number (REGON) ผิดพลาด.\"\n\n#: pl/forms.py:212\nmsgid \"Enter a postal code in the format XX-XXX.\"\nmsgstr \"ใส่รหัสไปรษณีย์ในรูปของ XX-XXX\"\n\n#: pl/pl_voivodeships.py:8\nmsgid \"Lower Silesia\"\nmsgstr \"ซิลเลสเซียใต้\"\n\n#: pl/pl_voivodeships.py:9\nmsgid \"Kuyavia-Pomerania\"\nmsgstr \"คูยาเวีย-โพเมราเนีย\"\n\n#: pl/pl_voivodeships.py:10\nmsgid \"Lublin\"\nmsgstr \"ลูบลิน\"\n\n#: pl/pl_voivodeships.py:11\nmsgid \"Lubusz\"\nmsgstr \"ลูเบิส์ช\"\n\n#: pl/pl_voivodeships.py:12\nmsgid \"Lodz\"\nmsgstr \"ลอดซ์\"\n\n#: pl/pl_voivodeships.py:13\nmsgid \"Lesser Poland\"\nmsgstr \"เลสเซอร์โปแลนด์\"\n\n#: pl/pl_voivodeships.py:14\nmsgid \"Masovia\"\nmsgstr \"มาโซเวีย\"\n\n#: pl/pl_voivodeships.py:15\nmsgid \"Opole\"\nmsgstr \"โอโปล์\"\n\n#: pl/pl_voivodeships.py:16\nmsgid \"Subcarpatia\"\nmsgstr \"ซับคาเพเทีย\"\n\n#: pl/pl_voivodeships.py:17\nmsgid \"Podlasie\"\nmsgstr \"พอดลาซีย์\"\n\n#: pl/pl_voivodeships.py:18\nmsgid \"Pomerania\"\nmsgstr \"โพเมราเนีย\"\n\n#: pl/pl_voivodeships.py:19\nmsgid \"Silesia\"\nmsgstr \"ซิลเลสเซีย\"\n\n#: pl/pl_voivodeships.py:20\nmsgid \"Swietokrzyskie\"\nmsgstr \"สเวียตโตเชียตสกี\"\n\n#: pl/pl_voivodeships.py:21\nmsgid \"Warmia-Masuria\"\nmsgstr \"วอร์เมีย มาซูเรีย\"\n\n#: pl/pl_voivodeships.py:22\nmsgid \"Greater Poland\"\nmsgstr \"เกรทเธอร์โปแลนด์\"\n\n#: pl/pl_voivodeships.py:23\nmsgid \"West Pomerania\"\nmsgstr \"โพเมราเนียตะวันตก\"\n\n#: pt/forms.py:19\nmsgid \"Enter a zip code in the format XXXX-XXX.\"\nmsgstr \"ใส่รหัสไปรษณีย์ในรูปแบบ XXXX-XXX\"\n\n#: pt/forms.py:39\nmsgid \"Phone numbers must have 9 digits, or start by + or 00.\"\nmsgstr \"หมายเลขโทรศัพท์ต้องมี 9 หลักหรือเริ่มต้นด้วยการ + หรือ 00\"\n\n#: ro/forms.py:22\nmsgid \"Enter a valid CIF.\"\nmsgstr \"กรุณาใส่ CIF\"\n\n#: ro/forms.py:59\nmsgid \"Enter a valid CNP.\"\nmsgstr \"กรุณาใส่ CNP\"\n\n#: ro/forms.py:143\nmsgid \"Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format\"\nmsgstr \"ใส่หมายเลข IBAN ในรูปแบบ ROXX-XXXX-XXXX-XXXX-XXXX-XXXX\"\n\n#: ro/forms.py:175\nmsgid \"Phone numbers must be in XXXX-XXXXXX format.\"\nmsgstr \"หมายเลขโทรศัพท์ต้องอยู่ในรูปแบบ XXXX-XXXXXX\"\n\n#: ro/forms.py:200\nmsgid \"Enter a valid postal code in the format XXXXXX\"\nmsgstr \"กรุณาใส่รหัสไปรษณีย์ในรูปของ XXXXXX\"\n\n#: ru/forms.py:37\nmsgid \"Enter a postal code in the format XXXXXX.\"\nmsgstr \"ใส่รหัสไปรษณีย์ในรูปแบบ XXXXXX\"\n\n#: ru/forms.py:50\nmsgid \"Enter a passport number in the format XXXX XXXXXX.\"\nmsgstr \"ป้อนเลขที่หนังสือเดินทางในรูปแบบ XXXX XXXXXX\"\n\n#: ru/forms.py:63\nmsgid \"Enter a passport number in the format XX XXXXXXX.\"\nmsgstr \"ป้อนเลขที่หนังสือเดินทางในรูปแบบ XX XXXXXXX\"\n\n#: ru/ru_regions.py:10\nmsgid \"Central Federal County\"\nmsgstr \"มณฑลกลางสหรัฐ\"\n\n#: ru/ru_regions.py:11\nmsgid \"South Federal County\"\nmsgstr \"มณฑลทางใต้ของรัฐบาลกลาง\"\n\n#: ru/ru_regions.py:12\nmsgid \"North-West Federal County\"\nmsgstr \"North-West มณฑลแห่งชาติ\"\n\n#: ru/ru_regions.py:13\nmsgid \"Far-East Federal County\"\nmsgstr \"Far-East County ชาติ\"\n\n#: ru/ru_regions.py:14\nmsgid \"Siberian Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:15\nmsgid \"Ural Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:16\nmsgid \"Privolzhsky Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:17\nmsgid \"North-Caucasian Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:21\nmsgid \"Moskva\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:22\nmsgid \"Saint-Peterburg\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:23\nmsgid \"Moskovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:24\nmsgid \"Adygeya, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:25\nmsgid \"Bashkortostan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:26\nmsgid \"Buryatia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:27\nmsgid \"Altay, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:28\nmsgid \"Dagestan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:29\nmsgid \"Ingushskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:30\nmsgid \"Kabardino-Balkarskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:31\nmsgid \"Kalmykia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:32\nmsgid \"Karachaevo-Cherkesskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:33\nmsgid \"Karelia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:34\nmsgid \"Komi, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:35\nmsgid \"Mariy Ehl, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:36\nmsgid \"Mordovia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:37\nmsgid \"Sakha, Respublika (Yakutiya)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:38\nmsgid \"Severnaya Osetia, Respublika (Alania)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:39\nmsgid \"Tatarstan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:40\nmsgid \"Tyva, Respublika (Tuva)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:41\nmsgid \"Udmurtskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:42\nmsgid \"Khakassiya, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:43\nmsgid \"Chechenskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:44\nmsgid \"Chuvashskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:45\nmsgid \"Altayskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:46\nmsgid \"Zabaykalskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:47\nmsgid \"Kamchatskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:48\nmsgid \"Krasnodarskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:49\nmsgid \"Krasnoyarskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:50\nmsgid \"Permskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:51\nmsgid \"Primorskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:52\nmsgid \"Stavropol'siyy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:53\nmsgid \"Khabarovskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:54\nmsgid \"Amurskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:55\nmsgid \"Arkhangel'skaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:56\nmsgid \"Astrakhanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:57\nmsgid \"Belgorodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:58\nmsgid \"Bryanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:59\nmsgid \"Vladimirskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:60\nmsgid \"Volgogradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:61\nmsgid \"Vologodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:62\nmsgid \"Voronezhskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:63\nmsgid \"Ivanovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:64\nmsgid \"Irkutskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:65\nmsgid \"Kaliningradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:66\nmsgid \"Kaluzhskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:67\nmsgid \"Kemerovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:68\nmsgid \"Kirovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:69\nmsgid \"Kostromskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:70\nmsgid \"Kurganskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:71\nmsgid \"Kurskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:72\nmsgid \"Leningradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:73\nmsgid \"Lipeckaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:74\nmsgid \"Magadanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:75\nmsgid \"Murmanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:76\nmsgid \"Nizhegorodskaja oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:77\nmsgid \"Novgorodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:78\nmsgid \"Novosibirskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:79\nmsgid \"Omskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:80\nmsgid \"Orenburgskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:81\nmsgid \"Orlovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:82\nmsgid \"Penzenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:83\nmsgid \"Pskovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:84\nmsgid \"Rostovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:85\nmsgid \"Rjazanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:86\nmsgid \"Samarskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:87\nmsgid \"Saratovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:88\nmsgid \"Sakhalinskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:89\nmsgid \"Sverdlovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:90\nmsgid \"Smolenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:91\nmsgid \"Tambovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:92\nmsgid \"Tverskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:93\nmsgid \"Tomskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:94\nmsgid \"Tul'skaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:95\nmsgid \"Tyumenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:96\nmsgid \"Ul'ianovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:97\nmsgid \"Chelyabinskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:98\nmsgid \"Yaroslavskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:99\nmsgid \"Evreyskaya avtonomnaja oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:100\nmsgid \"Neneckiy autonomnyy okrug\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:101\nmsgid \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:102\nmsgid \"Chukotskiy avtonomnyy okrug\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:103\nmsgid \"Yamalo-Neneckiy avtonomnyy okrug\"\nmsgstr \"\"\n\n#: se/forms.py:54\nmsgid \"Enter a valid Swedish organisation number.\"\nmsgstr \"ใส่รหัสองค์กรของสวีเดนที่ถูกต้อง\"\n\n#: se/forms.py:111\nmsgid \"Enter a valid Swedish personal identity number.\"\nmsgstr \"ใส่หมายเลขประจำตัวประชาชนสวีเดนที่ถูกต้อง\"\n\n#: se/forms.py:112\nmsgid \"Co-ordination numbers are not allowed.\"\nmsgstr \"หมายเลข Co-ordination ไม่ได้รับอนุญาต\"\n\n#: se/forms.py:154\nmsgid \"Enter a Swedish postal code in the format XXXXX.\"\nmsgstr \"ป้อนรหัสไปรษณีย์ของสวีเดนในรูปแบบ XXXXX\"\n\n#: se/se_counties.py:16\nmsgid \"Stockholm\"\nmsgstr \"\"\n\n#: se/se_counties.py:17\nmsgid \"Västerbotten\"\nmsgstr \"\"\n\n#: se/se_counties.py:18\nmsgid \"Norrbotten\"\nmsgstr \"\"\n\n#: se/se_counties.py:19\nmsgid \"Uppsala\"\nmsgstr \"\"\n\n#: se/se_counties.py:20\nmsgid \"Södermanland\"\nmsgstr \"\"\n\n#: se/se_counties.py:21\nmsgid \"Östergötland\"\nmsgstr \"\"\n\n#: se/se_counties.py:22\nmsgid \"Jönköping\"\nmsgstr \"\"\n\n#: se/se_counties.py:23\nmsgid \"Kronoberg\"\nmsgstr \"\"\n\n#: se/se_counties.py:24\nmsgid \"Kalmar\"\nmsgstr \"\"\n\n#: se/se_counties.py:25\nmsgid \"Gotland\"\nmsgstr \"\"\n\n#: se/se_counties.py:26\nmsgid \"Blekinge\"\nmsgstr \"\"\n\n#: se/se_counties.py:27\nmsgid \"Skåne\"\nmsgstr \"\"\n\n#: se/se_counties.py:28\nmsgid \"Halland\"\nmsgstr \"\"\n\n#: se/se_counties.py:29\nmsgid \"Västra Götaland\"\nmsgstr \"\"\n\n#: se/se_counties.py:30\nmsgid \"Värmland\"\nmsgstr \"\"\n\n#: se/se_counties.py:31\nmsgid \"Örebro\"\nmsgstr \"\"\n\n#: se/se_counties.py:32\nmsgid \"Västmanland\"\nmsgstr \"\"\n\n#: se/se_counties.py:33\nmsgid \"Dalarna\"\nmsgstr \"\"\n\n#: se/se_counties.py:34\nmsgid \"Gävleborg\"\nmsgstr \"\"\n\n#: se/se_counties.py:35\nmsgid \"Västernorrland\"\nmsgstr \"\"\n\n#: se/se_counties.py:36\nmsgid \"Jämtland\"\nmsgstr \"\"\n\n#: si/forms.py:25\nmsgid \"The first 7 digits of the EMSO must represent a valid past date.\"\nmsgstr \"รหัส 7 หลักแรกของ EMSO ต้องเป็นตัวเลขถูกต้องของวันที่ผ่านมา\"\n\n#: si/forms.py:26\nmsgid \"The EMSO is not valid.\"\nmsgstr \"EMSO ไม่ถูกต้อง\"\n\n#: si/forms.py:86\nmsgid \"Enter a valid tax number in form SIXXXXXXXX\"\nmsgstr \"ใส่เลขที่ภาษีที่ถูกต้องในรูปแบบ SIXXXXXXXX\"\n\n#: si/forms.py:151\nmsgid \"Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.\"\nmsgstr \"ป้อนหมายเลขโทรศัพท์ในรูปแบบ +386 XXXXXXXX หรือ 0XXXXXXXX\"\n\n#: sk/sk_districts.py:8\nmsgid \"Banska Bystrica\"\nmsgstr \"แคว้น บันสคา บิสทิคา\"\n\n#: sk/sk_districts.py:9\nmsgid \"Banska Stiavnica\"\nmsgstr \"แคว้น บันสคา สเตรียนิคา\"\n\n#: sk/sk_districts.py:10\nmsgid \"Bardejov\"\nmsgstr \"บาเดโยฟ\"\n\n#: sk/sk_districts.py:11\nmsgid \"Banovce nad Bebravou\"\nmsgstr \"บานอฟเซ นาด เบบราวู\"\n\n#: sk/sk_districts.py:12\nmsgid \"Brezno\"\nmsgstr \"เบรซโน\"\n\n#: sk/sk_districts.py:13\nmsgid \"Bratislava I\"\nmsgstr \"บราทิสลาวา หนึ่ง\"\n\n#: sk/sk_districts.py:14\nmsgid \"Bratislava II\"\nmsgstr \"บราทิสลาวา สอง\"\n\n#: sk/sk_districts.py:15\nmsgid \"Bratislava III\"\nmsgstr \"บราทิสลาวา สาม\"\n\n#: sk/sk_districts.py:16\nmsgid \"Bratislava IV\"\nmsgstr \"บราทิสลาวา สี่\"\n\n#: sk/sk_districts.py:17\nmsgid \"Bratislava V\"\nmsgstr \"บราทิสลาวา ห้า\"\n\n#: sk/sk_districts.py:18\nmsgid \"Bytca\"\nmsgstr \"ไบต์กา\"\n\n#: sk/sk_districts.py:19\nmsgid \"Cadca\"\nmsgstr \"คัดคา\"\n\n#: sk/sk_districts.py:20\nmsgid \"Detva\"\nmsgstr \"เดทวา\"\n\n#: sk/sk_districts.py:21\nmsgid \"Dolny Kubin\"\nmsgstr \"ดอลนี่ คูบิน\"\n\n#: sk/sk_districts.py:22\nmsgid \"Dunajska Streda\"\nmsgstr \"ดูนูซกา สเตรดา\"\n\n#: sk/sk_districts.py:23\nmsgid \"Galanta\"\nmsgstr \"กาลันตา\"\n\n#: sk/sk_districts.py:24\nmsgid \"Gelnica\"\nmsgstr \"เกลนิคา\"\n\n#: sk/sk_districts.py:25\nmsgid \"Hlohovec\"\nmsgstr \"ลอเวคช์\"\n\n#: sk/sk_districts.py:26\nmsgid \"Humenne\"\nmsgstr \"ฮูเมนเน\"\n\n#: sk/sk_districts.py:27\nmsgid \"Ilava\"\nmsgstr \"อิลลาวา\"\n\n#: sk/sk_districts.py:28\nmsgid \"Kezmarok\"\nmsgstr \"เคซมารอก\"\n\n#: sk/sk_districts.py:29\nmsgid \"Komarno\"\nmsgstr \"โคมาร์โน\"\n\n#: sk/sk_districts.py:30\nmsgid \"Kosice I\"\nmsgstr \"แคว้น โคซิเซ หนึ่ง\"\n\n#: sk/sk_districts.py:31\nmsgid \"Kosice II\"\nmsgstr \"แคว้น โคซิเซ สอง\"\n\n#: sk/sk_districts.py:32\nmsgid \"Kosice III\"\nmsgstr \"แคว้น โคซิเซ สาม\"\n\n#: sk/sk_districts.py:33\nmsgid \"Kosice IV\"\nmsgstr \"แคว้น โคซิเซ สี่\"\n\n#: sk/sk_districts.py:34\nmsgid \"Kosice - okolie\"\nmsgstr \"แคว้น โคซิเซ โอโคไล\"\n\n#: sk/sk_districts.py:35\nmsgid \"Krupina\"\nmsgstr \"ครูพินา\"\n\n#: sk/sk_districts.py:36\nmsgid \"Kysucke Nove Mesto\"\nmsgstr \"เคียสเซียก โนฟ เมสโต\"\n\n#: sk/sk_districts.py:37\nmsgid \"Levice\"\nmsgstr \"เลวิซ\"\n\n#: sk/sk_districts.py:38\nmsgid \"Levoca\"\nmsgstr \"เลโวคา\"\n\n#: sk/sk_districts.py:39\nmsgid \"Liptovsky Mikulas\"\nmsgstr \"ลิบโตสกี มิคูลาส\"\n\n#: sk/sk_districts.py:40\nmsgid \"Lucenec\"\nmsgstr \"ลูเซินเนค\"\n\n#: sk/sk_districts.py:41\nmsgid \"Malacky\"\nmsgstr \"มาเลคสกี\"\n\n#: sk/sk_districts.py:42\nmsgid \"Martin\"\nmsgstr \"มาร์ติน\"\n\n#: sk/sk_districts.py:43\nmsgid \"Medzilaborce\"\nmsgstr \"เม็ดซิลลาบอร์ซ\"\n\n#: sk/sk_districts.py:44\nmsgid \"Michalovce\"\nmsgstr \"มิคัลโลฟเซอ\"\n\n#: sk/sk_districts.py:45\nmsgid \"Myjava\"\nmsgstr \"มียาวา\"\n\n#: sk/sk_districts.py:46\nmsgid \"Namestovo\"\nmsgstr \"เนเมสโตโว\"\n\n#: sk/sk_districts.py:47\nmsgid \"Nitra\"\nmsgstr \"นิทรา\"\n\n#: sk/sk_districts.py:48\nmsgid \"Nove Mesto nad Vahom\"\nmsgstr \"โนเฟ เมสโต นาด วาห์อม\"\n\n#: sk/sk_districts.py:49\nmsgid \"Nove Zamky\"\nmsgstr \"โนเฟ ซามกี\"\n\n#: sk/sk_districts.py:50\nmsgid \"Partizanske\"\nmsgstr \"ปาร์ติซานเก\"\n\n#: sk/sk_districts.py:51\nmsgid \"Pezinok\"\nmsgstr \"เปซินอก\"\n\n#: sk/sk_districts.py:52\nmsgid \"Piestany\"\nmsgstr \"เปียสตานี\"\n\n#: sk/sk_districts.py:53\nmsgid \"Poltar\"\nmsgstr \"พอลต้าร์\"\n\n#: sk/sk_districts.py:54\nmsgid \"Poprad\"\nmsgstr \"ป็อบปราด\"\n\n#: sk/sk_districts.py:55\nmsgid \"Povazska Bystrica\"\nmsgstr \"โปวาสคา บิสทิคา\"\n\n#: sk/sk_districts.py:56\nmsgid \"Presov\"\nmsgstr \"แคว้น พรีซอฟ\"\n\n#: sk/sk_districts.py:57\nmsgid \"Prievidza\"\nmsgstr \"เปรียวิซา\"\n\n#: sk/sk_districts.py:58\nmsgid \"Puchov\"\nmsgstr \"ปูชอพ\"\n\n#: sk/sk_districts.py:59\nmsgid \"Revuca\"\nmsgstr \"เรวูก้า\"\n\n#: sk/sk_districts.py:60\nmsgid \"Rimavska Sobota\"\nmsgstr \"ริมาฟสกา โซโบตา\"\n\n#: sk/sk_districts.py:61\nmsgid \"Roznava\"\nmsgstr \"รอซนาวา\"\n\n#: sk/sk_districts.py:62\nmsgid \"Ruzomberok\"\nmsgstr \"บูซอมเบรอก\"\n\n#: sk/sk_districts.py:63\nmsgid \"Sabinov\"\nmsgstr \"ซาบินอฟ\"\n\n#: sk/sk_districts.py:64\nmsgid \"Senec\"\nmsgstr \"เซเนค\"\n\n#: sk/sk_districts.py:65\nmsgid \"Senica\"\nmsgstr \"เซนิก้า\"\n\n#: sk/sk_districts.py:66\nmsgid \"Skalica\"\nmsgstr \"สคาลิก้า\"\n\n#: sk/sk_districts.py:67\nmsgid \"Snina\"\nmsgstr \"สนินา\"\n\n#: sk/sk_districts.py:68\nmsgid \"Sobrance\"\nmsgstr \"โซบรานเซ\"\n\n#: sk/sk_districts.py:69\nmsgid \"Spisska Nova Ves\"\nmsgstr \"สปิสสกา โนวา เวส\"\n\n#: sk/sk_districts.py:70\nmsgid \"Stara Lubovna\"\nmsgstr \"สตรารา ลูโบฟนา\"\n\n#: sk/sk_districts.py:71\nmsgid \"Stropkov\"\nmsgstr \"สตรอปคอฟ\"\n\n#: sk/sk_districts.py:72\nmsgid \"Svidnik\"\nmsgstr \"สวิดนิก\"\n\n#: sk/sk_districts.py:73\nmsgid \"Sala\"\nmsgstr \"ซาลา\"\n\n#: sk/sk_districts.py:74\nmsgid \"Topolcany\"\nmsgstr \"โทพอลคานี่\"\n\n#: sk/sk_districts.py:75\nmsgid \"Trebisov\"\nmsgstr \"เทรบิซอฟ\"\n\n#: sk/sk_districts.py:76\nmsgid \"Trencin\"\nmsgstr \"เทรนซิน\"\n\n#: sk/sk_districts.py:77\nmsgid \"Trnava\"\nmsgstr \"แคว้น ทนาวา\"\n\n#: sk/sk_districts.py:78\nmsgid \"Turcianske Teplice\"\nmsgstr \"เทอเซียนสเค เตปลิเซ\"\n\n#: sk/sk_districts.py:79\nmsgid \"Tvrdosin\"\nmsgstr \"ทวาโดซิน\"\n\n#: sk/sk_districts.py:80\nmsgid \"Velky Krtis\"\nmsgstr \"เวลเค เคอติส\"\n\n#: sk/sk_districts.py:81\nmsgid \"Vranov nad Toplou\"\nmsgstr \"วรานอฟ นาด ท็อปพลู\"\n\n#: sk/sk_districts.py:82\nmsgid \"Zlate Moravce\"\nmsgstr \"สตาเต โทราฟเซ\"\n\n#: sk/sk_districts.py:83\nmsgid \"Zvolen\"\nmsgstr \"ซโวเลน\"\n\n#: sk/sk_districts.py:84\nmsgid \"Zarnovica\"\nmsgstr \"ซาร์โนวีก้า\"\n\n#: sk/sk_districts.py:85\nmsgid \"Ziar nad Hronom\"\nmsgstr \"ไซอาร์ นาด โฮนอม\"\n\n#: sk/sk_districts.py:86\nmsgid \"Zilina\"\nmsgstr \"ซิลินา\"\n\n#: sk/sk_regions.py:8\nmsgid \"Banska Bystrica region\"\nmsgstr \"แคว้น บันสคา บิสทิคา\"\n\n#: sk/sk_regions.py:9\nmsgid \"Bratislava region\"\nmsgstr \"แคว้น บราทิสลาวา\"\n\n#: sk/sk_regions.py:10\nmsgid \"Kosice region\"\nmsgstr \"แคว้น โคซิเซ\"\n\n#: sk/sk_regions.py:11\nmsgid \"Nitra region\"\nmsgstr \"แคว้น นิทรา\"\n\n#: sk/sk_regions.py:12\nmsgid \"Presov region\"\nmsgstr \"แคว้น พรีซอฟ\"\n\n#: sk/sk_regions.py:13\nmsgid \"Trencin region\"\nmsgstr \"แคว้น เทรนซิน\"\n\n#: sk/sk_regions.py:14\nmsgid \"Trnava region\"\nmsgstr \"แคว้น ทนาวา\"\n\n#: sk/sk_regions.py:15\nmsgid \"Zilina region\"\nmsgstr \"แคว้น ซิลินา\"\n\n#: tr/forms.py:21\nmsgid \"Enter a postal code in the format XXXXX.\"\nmsgstr \"ใส่รหัสไปรษณีย์ในรูปแบบ XXXXX\"\n\n#: tr/forms.py:42\nmsgid \"Phone numbers must be in 0XXX XXX XXXX format.\"\nmsgstr \"หมายเลขโทรศัพท์จะต้องอยู่ในรูปแบบ 0XXX xxx xxxx\"\n\n#: tr/forms.py:69\nmsgid \"Enter a valid Turkish Identification number.\"\nmsgstr \"ใส่หมายเลขประจำตัวที่ถูกต้องตุรกี\"\n\n#: tr/forms.py:70\nmsgid \"Turkish Identification number must be 11 digits.\"\nmsgstr \"หมายเลขประจำตัวประชาชนตุรกีจะต้องเป็น 11 หลัก\"\n\n#: us/forms.py:21\nmsgid \"Enter a zip code in the format XXXXX or XXXXX-XXXX.\"\nmsgstr \"ใส่รหัสไปรษณีย์ในรูปของ XXXXX หรือ XXXXX-XXXX\"\n\n#: us/forms.py:59\nmsgid \"Enter a valid U.S. Social Security number in XXX-XX-XXXX format.\"\nmsgstr \"ใส่หมายเลขประกันสังคมอเมริกา\"\n\n#: us/forms.py:92\nmsgid \"Enter a U.S. state or territory.\"\nmsgstr \"ป้อนสหรัฐอเมริการัฐหรือดินแดน\"\n\n#: us/models.py:8\nmsgid \"U.S. state (two uppercase letters)\"\nmsgstr \"รัฐในสหรัฐ (ตัวอักษรใหญ่ 2 ตัว)\"\n\n#: us/models.py:17\nmsgid \"U.S. postal code (two uppercase letters)\"\nmsgstr \"รหัสไปรษณีย์สหรัฐ (สองตัวอักษรพิมพ์ใหญ่)\"\n\n#: us/models.py:26\nmsgid \"Phone number\"\nmsgstr \"หมายเลขโทรศัพท์\"\n\n#: uy/forms.py:29\nmsgid \"Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.\"\nmsgstr \"ใส่หมายเลข CI ที่ถูกต้องในรูปแบบ X.XXX.XXX-X, XXXXXXX-X หรือ XXXXXXXX\"\n\n#: uy/forms.py:31\nmsgid \"Enter a valid CI number.\"\nmsgstr \"ใส่หมายเลข CI ที่ถูกต้อง\"\n\n#: za/forms.py:22\nmsgid \"Enter a valid South African ID number\"\nmsgstr \"ใส่หมายเลขประจำตัวประชาชนแอฟริกาใต้\"\n\n#: za/forms.py:56\nmsgid \"Enter a valid South African postal code\"\nmsgstr \"ใส่รหัสไปรษณีย์แอฟริกาใต้\"\n\n#: za/za_provinces.py:4\nmsgid \"Eastern Cape\"\nmsgstr \"อิสเทิร์นแคป\"\n\n#: za/za_provinces.py:5\nmsgid \"Free State\"\nmsgstr \"ฟรีเสตต์\"\n\n#: za/za_provinces.py:6\nmsgid \"Gauteng\"\nmsgstr \"กัวเตง\"\n\n#: za/za_provinces.py:7\nmsgid \"KwaZulu-Natal\"\nmsgstr \"ควาซูลา-เนทาล\"\n\n#: za/za_provinces.py:8\nmsgid \"Limpopo\"\nmsgstr \"ลิมโพโพ\"\n\n#: za/za_provinces.py:9\nmsgid \"Mpumalanga\"\nmsgstr \"มูมาลากา\"\n\n#: za/za_provinces.py:10\nmsgid \"Northern Cape\"\nmsgstr \"นอร์ทเทิร์นแคป\"\n\n#: za/za_provinces.py:11\nmsgid \"North West\"\nmsgstr \"นอร์ทเวสต์\"\n\n#: za/za_provinces.py:12\nmsgid \"Western Cape\"\nmsgstr \"เวสต์เทิร์นแคป\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/locale/tr/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Metin Amiroff <amiroff@gmail.com>, 2011-2012.\n# Murat Çorlu <muratcorlu@gmail.com>, 2012.\n# Murat Sahin <martinamca@gmail.com>, 2011, 2012.\n# Ozan  <uobasar@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-11-05 13:25+0000\\n\"\n\"Last-Translator: Metin Amiroff <amiroff@gmail.com>\\n\"\n\"Language-Team: Turkish (http://www.transifex.com/projects/p/django/language/\"\n\"tr/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: tr\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: ar/forms.py:30\nmsgid \"Enter a postal code in the format NNNN or ANNNNAAA.\"\nmsgstr \"NNNN ya da ANNNNAAA formatında bir posta kodu yazın.\"\n\n#: ar/forms.py:52 br/forms.py:95 br/forms.py:134 pe/forms.py:27 pe/forms.py:55\nmsgid \"This field requires only numbers.\"\nmsgstr \"Bu alan sadece rakam gerektirmektedir.\"\n\n#: ar/forms.py:53\nmsgid \"This field requires 7 or 8 digits.\"\nmsgstr \"Bu alan 7 veya 8 rakam gerektirmektedir.\"\n\n#: ar/forms.py:82\nmsgid \"Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.\"\nmsgstr \"XX-XXXXXXXX-X ya da XXXXXXXXXXXX formatında bir CUIT girin.\"\n\n#: ar/forms.py:83\nmsgid \"Invalid CUIT.\"\nmsgstr \"Geçersiz CUIT.\"\n\n#: ar/forms.py:84\nmsgid \"Invalid legal type. Type must be 27, 20, 23 or 30.\"\nmsgstr \"Yanlış tür. Tür 27, 20, 23 veya 30 olabilir.\"\n\n#: at/at_states.py:5\nmsgid \"Burgenland\"\nmsgstr \"Burgenland\"\n\n#: at/at_states.py:6\nmsgid \"Carinthia\"\nmsgstr \"Carinthia\"\n\n#: at/at_states.py:7\nmsgid \"Lower Austria\"\nmsgstr \"Alt Avusturya\"\n\n#: at/at_states.py:8\nmsgid \"Upper Austria\"\nmsgstr \"Üst Avusturya\"\n\n#: at/at_states.py:9\nmsgid \"Salzburg\"\nmsgstr \"Salzburg\"\n\n#: at/at_states.py:10\nmsgid \"Styria\"\nmsgstr \"Styria\"\n\n#: at/at_states.py:11\nmsgid \"Tyrol\"\nmsgstr \"Tyrol\"\n\n#: at/at_states.py:12\nmsgid \"Vorarlberg\"\nmsgstr \"Vorarlberg\"\n\n#: at/at_states.py:13\nmsgid \"Vienna\"\nmsgstr \"Vyana\"\n\n#: at/forms.py:22 ch/forms.py:22 no/forms.py:19\nmsgid \"Enter a zip code in the format XXXX.\"\nmsgstr \"XXXX formatında posta kodu girin.\"\n\n#: at/forms.py:50\nmsgid \"Enter a valid Austrian Social Security Number in XXXX XXXXXX format.\"\nmsgstr \"\"\n\"Lütfen XXXX XXXXXX formatında geçerli bir Avusturya Sosyal Güvenlik Numarası \"\n\"giriniz.\"\n\n#: au/forms.py:26\nmsgid \"Enter a 4 digit postcode.\"\nmsgstr \"4 rakamlı postakodunu girin.\"\n\n#: au/models.py:9\nmsgid \"Australian State\"\nmsgstr \"Avustralya Eyaleti\"\n\n#: au/models.py:19\nmsgid \"Australian Postcode\"\nmsgstr \"Avustralya Posta Kodu\"\n\n#: au/models.py:33\nmsgid \"Australian Phone number\"\nmsgstr \"Avustralya Telefon Numarası\"\n\n#: be/be_provinces.py:5\nmsgid \"Antwerp\"\nmsgstr \"Antwerp\"\n\n#: be/be_provinces.py:6\nmsgid \"Brussels\"\nmsgstr \"Brüksel\"\n\n#: be/be_provinces.py:7\nmsgid \"East Flanders\"\nmsgstr \"Doğu Flanders\"\n\n#: be/be_provinces.py:8\nmsgid \"Flemish Brabant\"\nmsgstr \"Flemish Brabant\"\n\n#: be/be_provinces.py:9\nmsgid \"Hainaut\"\nmsgstr \"Hainaut\"\n\n#: be/be_provinces.py:10\nmsgid \"Liege\"\nmsgstr \"Liege\"\n\n#: be/be_provinces.py:11 nl/nl_provinces.py:9\nmsgid \"Limburg\"\nmsgstr \"Limburg\"\n\n#: be/be_provinces.py:12\nmsgid \"Luxembourg\"\nmsgstr \"Lüksemburg\"\n\n#: be/be_provinces.py:13\nmsgid \"Namur\"\nmsgstr \"Namur\"\n\n#: be/be_provinces.py:14\nmsgid \"Walloon Brabant\"\nmsgstr \"Walloon Brabant\"\n\n#: be/be_provinces.py:15\nmsgid \"West Flanders\"\nmsgstr \"Batı Flanders\"\n\n#: be/be_regions.py:5\nmsgid \"Brussels Capital Region\"\nmsgstr \"Brüksel Başkent Bölgesi\"\n\n#: be/be_regions.py:6\nmsgid \"Flemish Region\"\nmsgstr \"Flemish Bölgesi\"\n\n#: be/be_regions.py:7\nmsgid \"Wallonia\"\nmsgstr \"Vallonya\"\n\n#: be/forms.py:25\nmsgid \"Enter a valid postal code in the range and format 1XXX - 9XXX.\"\nmsgstr \"\"\n\"Lütfen 1XXX - 9XXX şeklinde ve aralığında geçerli bir posta kodu giriniz.\"\n\n#: be/forms.py:48\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\nmsgstr \"\"\n\"Lütfen altta verilen formatlardan birisinde geçerli bir telefon numarası \"\n\"giriniz: 0x xxx xx xx, 0xx xx xx xx, 04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.\"\n\"xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx veya \"\n\"04xxxxxxxx.\"\n\n#: br/forms.py:22\nmsgid \"Enter a zip code in the format XXXXX-XXX.\"\nmsgstr \"XXXXX-XXX formatında posta kodu girin.\"\n\n#: br/forms.py:31\nmsgid \"Phone numbers must be in XX-XXXX-XXXX format.\"\nmsgstr \"Telefon numaraları XX-XXXX-XXXX formatında olmalıdır.\"\n\n#: br/forms.py:58\nmsgid \"\"\n\"Select a valid brazilian state. That state is not one of the available \"\n\"states.\"\nmsgstr \"\"\n\"Lütfen geçerli bir Brezilya bölgesi seçin. Seçilen bölge mevcutlar arasında \"\n\"yoktur.\"\n\n#: br/forms.py:93\nmsgid \"Invalid CPF number.\"\nmsgstr \"Geçersiz CPF numarası.\"\n\n#: br/forms.py:94\nmsgid \"This field requires at most 11 digits or 14 characters.\"\nmsgstr \"Bu en fazla 11 rakam veya 14 karakter gerektirmektedir.\"\n\n#: br/forms.py:133\nmsgid \"Invalid CNPJ number.\"\nmsgstr \"Geçersiz CNPJ numarası.\"\n\n#: br/forms.py:135\nmsgid \"This field requires at least 14 digits\"\nmsgstr \"Bu alan en az 14 rakam gerektirmektedir\"\n\n#: ca/forms.py:29\nmsgid \"Enter a postal code in the format XXX XXX.\"\nmsgstr \"XXX XXX formatında posta kodunu girin.\"\n\n#: ca/forms.py:47 us/forms.py:30\nmsgid \"Phone numbers must be in XXX-XXX-XXXX format.\"\nmsgstr \"Telefon numaraları XXX-XXX-XXXX formatında olmalıdır.\"\n\n#: ca/forms.py:69\nmsgid \"Enter a Canadian province or territory.\"\nmsgstr \"Kanada belde veya bölge adı giriniz.\"\n\n#: ca/forms.py:110\nmsgid \"Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.\"\nmsgstr \"\"\n\"Lütfen XXX-XXX-XXX formatında geçerli bir Kanada Sosyal Güvenlik Numarası \"\n\"girin.\"\n\n#: ch/ch_states.py:5\nmsgid \"Aargau\"\nmsgstr \"Aargau\"\n\n#: ch/ch_states.py:6\nmsgid \"Appenzell Innerrhoden\"\nmsgstr \"Appenzell Innerrhoden\"\n\n#: ch/ch_states.py:7\nmsgid \"Appenzell Ausserrhoden\"\nmsgstr \"Appenzell Ausserrhoden\"\n\n#: ch/ch_states.py:8\nmsgid \"Basel-Stadt\"\nmsgstr \"Basel-Stadt\"\n\n#: ch/ch_states.py:9\nmsgid \"Basel-Land\"\nmsgstr \"Basel-Land\"\n\n#: ch/ch_states.py:10\nmsgid \"Berne\"\nmsgstr \"Berne\"\n\n#: ch/ch_states.py:11\nmsgid \"Fribourg\"\nmsgstr \"Fribourg\"\n\n#: ch/ch_states.py:12\nmsgid \"Geneva\"\nmsgstr \"Cenevre\"\n\n#: ch/ch_states.py:13\nmsgid \"Glarus\"\nmsgstr \"Glarus\"\n\n#: ch/ch_states.py:14\nmsgid \"Graubuenden\"\nmsgstr \"Graubuenden\"\n\n#: ch/ch_states.py:15\nmsgid \"Jura\"\nmsgstr \"Jura\"\n\n#: ch/ch_states.py:16\nmsgid \"Lucerne\"\nmsgstr \"Lucerne\"\n\n#: ch/ch_states.py:17\nmsgid \"Neuchatel\"\nmsgstr \"Neuchatel\"\n\n#: ch/ch_states.py:18\nmsgid \"Nidwalden\"\nmsgstr \"Nidwalden\"\n\n#: ch/ch_states.py:19\nmsgid \"Obwalden\"\nmsgstr \"Obwalden\"\n\n#: ch/ch_states.py:20\nmsgid \"Schaffhausen\"\nmsgstr \"Schaffhausen\"\n\n#: ch/ch_states.py:21\nmsgid \"Schwyz\"\nmsgstr \"Schwyz\"\n\n#: ch/ch_states.py:22\nmsgid \"Solothurn\"\nmsgstr \"Solothurn\"\n\n#: ch/ch_states.py:23\nmsgid \"St. Gallen\"\nmsgstr \"St. Gallen\"\n\n#: ch/ch_states.py:24\nmsgid \"Thurgau\"\nmsgstr \"Thurgau\"\n\n#: ch/ch_states.py:25\nmsgid \"Ticino\"\nmsgstr \"Ticino\"\n\n#: ch/ch_states.py:26\nmsgid \"Uri\"\nmsgstr \"Uri\"\n\n#: ch/ch_states.py:27\nmsgid \"Valais\"\nmsgstr \"Valais\"\n\n#: ch/ch_states.py:28\nmsgid \"Vaud\"\nmsgstr \"Vaud\"\n\n#: ch/ch_states.py:29\nmsgid \"Zug\"\nmsgstr \"Zug\"\n\n#: ch/ch_states.py:30\nmsgid \"Zurich\"\nmsgstr \"Zürih\"\n\n#: ch/forms.py:37\nmsgid \"Phone numbers must be in 0XX XXX XX XX format.\"\nmsgstr \"Telefon numarası 0XX XXX XX XX formatında olmalıdır.\"\n\n#: ch/forms.py:68\nmsgid \"\"\n\"Enter a valid Swiss identity or passport card number in X1234567<0 or \"\n\"1234567890 format.\"\nmsgstr \"\"\n\"Lütfen X1234567<0 veya 1234567890 formatında geçerli bir İsviçre kimlik veya \"\n\"pasaport numarası giriniz.\"\n\n#: cl/forms.py:32\nmsgid \"Enter a valid Chilean RUT.\"\nmsgstr \"Geçerli bir Şili RUT numarası girin.\"\n\n#: cl/forms.py:33\nmsgid \"Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.\"\nmsgstr \"Geçerli bir Şili RUT numarası girin. Format: XX.XXX.XXX-X.\"\n\n#: cl/forms.py:34\nmsgid \"The Chilean RUT is not valid.\"\nmsgstr \"Şili  RUT numarası geçersizdir.\"\n\n#: cn/forms.py:84\nmsgid \"Enter a post code in the format XXXXXX.\"\nmsgstr \"XXXXXX formatında bir posta kodu yazın.\"\n\n#: cn/forms.py:105\nmsgid \"ID Card Number consists of 15 or 18 digits.\"\nmsgstr \"ID Kartı Numarası 15 veya 18 basamaktan oluşur.\"\n\n#: cn/forms.py:106\nmsgid \"Invalid ID Card Number: Wrong checksum\"\nmsgstr \"Geçersiz Kimlik Kartı Numarası: Yanlış sağlama toplamı\"\n\n#: cn/forms.py:107\nmsgid \"Invalid ID Card Number: Wrong birthdate\"\nmsgstr \"Geçersiz Kimlik Kartı Numarası: Hatalı doğum tarihi\"\n\n#: cn/forms.py:108\nmsgid \"Invalid ID Card Number: Wrong location code\"\nmsgstr \"Geçersiz Kimlik Kartı Numarası: Hatalı konum kodu\"\n\n#: cn/forms.py:193\nmsgid \"Enter a valid phone number.\"\nmsgstr \"Geçerli bir telefon numarası girin.\"\n\n#: cn/forms.py:210\nmsgid \"Enter a valid cell number.\"\nmsgstr \"Geçerli bir cep telefonu numarası girin.\"\n\n#: cz/cz_regions.py:8\nmsgid \"Prague\"\nmsgstr \"Prag\"\n\n#: cz/cz_regions.py:9\nmsgid \"Central Bohemian Region\"\nmsgstr \"Merkezi Bohemia Bölgesi\"\n\n#: cz/cz_regions.py:10\nmsgid \"South Bohemian Region\"\nmsgstr \"Güney Bohemia Bölgesi\"\n\n#: cz/cz_regions.py:11\nmsgid \"Pilsen Region\"\nmsgstr \"Pilsen Bölgesi\"\n\n#: cz/cz_regions.py:12\nmsgid \"Carlsbad Region\"\nmsgstr \"Carlsbad Bölgesi\"\n\n#: cz/cz_regions.py:13\nmsgid \"Usti Region\"\nmsgstr \"Usti Bölgesi\"\n\n#: cz/cz_regions.py:14\nmsgid \"Liberec Region\"\nmsgstr \"Liberec Bölgesi\"\n\n#: cz/cz_regions.py:15\nmsgid \"Hradec Region\"\nmsgstr \"Hradec Bölgesi\"\n\n#: cz/cz_regions.py:16\nmsgid \"Pardubice Region\"\nmsgstr \"Pardubice Bölgesi\"\n\n#: cz/cz_regions.py:17\nmsgid \"Vysocina Region\"\nmsgstr \"Vysocina Bölgesi\"\n\n#: cz/cz_regions.py:18\nmsgid \"South Moravian Region\"\nmsgstr \"South Moravian Bölgesi\"\n\n#: cz/cz_regions.py:19\nmsgid \"Olomouc Region\"\nmsgstr \"Olomouc Bölgesi\"\n\n#: cz/cz_regions.py:20\nmsgid \"Zlin Region\"\nmsgstr \"Zlin Bölgesi\"\n\n#: cz/cz_regions.py:21\nmsgid \"Moravian-Silesian Region\"\nmsgstr \"Moravian-Silesian Bölgesi\"\n\n#: cz/forms.py:32 sk/forms.py:33\nmsgid \"Enter a postal code in the format XXXXX or XXX XX.\"\nmsgstr \"XXXXX ya da XXX XX formatında bir posta kodu girin.\"\n\n#: cz/forms.py:52\nmsgid \"Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.\"\nmsgstr \"\"\n\"XXXXXX/XXXX veya XXXXXXXXXX formatında geçerli bir doğum numarası girin.\"\n\n#: cz/forms.py:53\nmsgid \"Enter a valid birth number.\"\nmsgstr \"Geçerli bir doğum numarası girin.\"\n\n#: cz/forms.py:102\nmsgid \"Enter a valid IC number.\"\nmsgstr \"Geçerli bir IC numarası girin.\"\n\n#: de/de_states.py:5\nmsgid \"Baden-Wuerttemberg\"\nmsgstr \"Baden-Wuerttemberg\"\n\n#: de/de_states.py:6\nmsgid \"Bavaria\"\nmsgstr \"Bavaria\"\n\n#: de/de_states.py:7\nmsgid \"Berlin\"\nmsgstr \"Berlin\"\n\n#: de/de_states.py:8\nmsgid \"Brandenburg\"\nmsgstr \"Brandenburg\"\n\n#: de/de_states.py:9\nmsgid \"Bremen\"\nmsgstr \"Bremen\"\n\n#: de/de_states.py:10\nmsgid \"Hamburg\"\nmsgstr \"Hamburg\"\n\n#: de/de_states.py:11\nmsgid \"Hessen\"\nmsgstr \"Hessen\"\n\n#: de/de_states.py:12\nmsgid \"Mecklenburg-Western Pomerania\"\nmsgstr \"Mecklenburg-Batı Pomerania\"\n\n#: de/de_states.py:13\nmsgid \"Lower Saxony\"\nmsgstr \"Alt Saxony\"\n\n#: de/de_states.py:14\nmsgid \"North Rhine-Westphalia\"\nmsgstr \"North Rhine-Westphalia\"\n\n#: de/de_states.py:15\nmsgid \"Rhineland-Palatinate\"\nmsgstr \"Rhineland-Palatinate\"\n\n#: de/de_states.py:16\nmsgid \"Saarland\"\nmsgstr \"Saarland\"\n\n#: de/de_states.py:17\nmsgid \"Saxony\"\nmsgstr \"Saxony\"\n\n#: de/de_states.py:18\nmsgid \"Saxony-Anhalt\"\nmsgstr \"Saxony-Anhalt\"\n\n#: de/de_states.py:19\nmsgid \"Schleswig-Holstein\"\nmsgstr \"Schleswig-Holstein\"\n\n#: de/de_states.py:20\nmsgid \"Thuringia\"\nmsgstr \"Thuringia\"\n\n#: de/forms.py:20 fi/forms.py:18 fr/forms.py:20\nmsgid \"Enter a zip code in the format XXXXX.\"\nmsgstr \"XXXXX formatında posta kodu girin.\"\n\n#: de/forms.py:46\nmsgid \"\"\n\"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"format.\"\nmsgstr \"\"\n\"Lütfen XXXXXXXXXXX-XXXXXXX-XXXXXXX-X formatında geçerli bir Alman kimlik \"\n\"numarası giriniz.\"\n\n#: es/es_provinces.py:5\nmsgid \"Araba\"\nmsgstr \"Araba\"\n\n#: es/es_provinces.py:6\nmsgid \"Albacete\"\nmsgstr \"Albacete\"\n\n#: es/es_provinces.py:7\nmsgid \"Alacant\"\nmsgstr \"Alacant\"\n\n#: es/es_provinces.py:8\nmsgid \"Almeria\"\nmsgstr \"Almeria\"\n\n#: es/es_provinces.py:9\nmsgid \"Avila\"\nmsgstr \"Avila\"\n\n#: es/es_provinces.py:10\nmsgid \"Badajoz\"\nmsgstr \"Badajoz\"\n\n#: es/es_provinces.py:11\nmsgid \"Illes Balears\"\nmsgstr \"Illes Balears\"\n\n#: es/es_provinces.py:12\nmsgid \"Barcelona\"\nmsgstr \"Barselona\"\n\n#: es/es_provinces.py:13\nmsgid \"Burgos\"\nmsgstr \"Burgos\"\n\n#: es/es_provinces.py:14\nmsgid \"Caceres\"\nmsgstr \"Caceres\"\n\n#: es/es_provinces.py:15\nmsgid \"Cadiz\"\nmsgstr \"Cadiz\"\n\n#: es/es_provinces.py:16\nmsgid \"Castello\"\nmsgstr \"Castello\"\n\n#: es/es_provinces.py:17\nmsgid \"Ciudad Real\"\nmsgstr \"Ciudad Real\"\n\n#: es/es_provinces.py:18\nmsgid \"Cordoba\"\nmsgstr \"Cordoba\"\n\n#: es/es_provinces.py:19\nmsgid \"A Coruna\"\nmsgstr \"A Coruna\"\n\n#: es/es_provinces.py:20\nmsgid \"Cuenca\"\nmsgstr \"Cuenca\"\n\n#: es/es_provinces.py:21\nmsgid \"Girona\"\nmsgstr \"Girona\"\n\n#: es/es_provinces.py:22\nmsgid \"Granada\"\nmsgstr \"Granada\"\n\n#: es/es_provinces.py:23\nmsgid \"Guadalajara\"\nmsgstr \"Guadalajara\"\n\n#: es/es_provinces.py:24\nmsgid \"Guipuzkoa\"\nmsgstr \"Guipuzkoa\"\n\n#: es/es_provinces.py:25\nmsgid \"Huelva\"\nmsgstr \"Huelva\"\n\n#: es/es_provinces.py:26\nmsgid \"Huesca\"\nmsgstr \"Huesca\"\n\n#: es/es_provinces.py:27\nmsgid \"Jaen\"\nmsgstr \"Jaen\"\n\n#: es/es_provinces.py:28\nmsgid \"Leon\"\nmsgstr \"Leon\"\n\n#: es/es_provinces.py:29\nmsgid \"Lleida\"\nmsgstr \"Lleida\"\n\n#: es/es_provinces.py:30 es/es_regions.py:17\nmsgid \"La Rioja\"\nmsgstr \"La Rioja\"\n\n#: es/es_provinces.py:31\nmsgid \"Lugo\"\nmsgstr \"Lugo\"\n\n#: es/es_provinces.py:32 es/es_regions.py:18\nmsgid \"Madrid\"\nmsgstr \"Madrid\"\n\n#: es/es_provinces.py:33\nmsgid \"Malaga\"\nmsgstr \"Malaga\"\n\n#: es/es_provinces.py:34\nmsgid \"Murcia\"\nmsgstr \"Murcia\"\n\n#: es/es_provinces.py:35\nmsgid \"Navarre\"\nmsgstr \"Navarre\"\n\n#: es/es_provinces.py:36\nmsgid \"Ourense\"\nmsgstr \"Ourense\"\n\n#: es/es_provinces.py:37\nmsgid \"Asturias\"\nmsgstr \"Asturias\"\n\n#: es/es_provinces.py:38\nmsgid \"Palencia\"\nmsgstr \"Palencia\"\n\n#: es/es_provinces.py:39\nmsgid \"Las Palmas\"\nmsgstr \"Las Palmas\"\n\n#: es/es_provinces.py:40\nmsgid \"Pontevedra\"\nmsgstr \"Pontevedra\"\n\n#: es/es_provinces.py:41\nmsgid \"Salamanca\"\nmsgstr \"Salamanca\"\n\n#: es/es_provinces.py:42\nmsgid \"Santa Cruz de Tenerife\"\nmsgstr \"Santa Cruz de Tenerife\"\n\n#: es/es_provinces.py:43 es/es_regions.py:11\nmsgid \"Cantabria\"\nmsgstr \"Cantabria\"\n\n#: es/es_provinces.py:44\nmsgid \"Segovia\"\nmsgstr \"Segovia\"\n\n#: es/es_provinces.py:45\nmsgid \"Seville\"\nmsgstr \"Seville\"\n\n#: es/es_provinces.py:46\nmsgid \"Soria\"\nmsgstr \"Soria\"\n\n#: es/es_provinces.py:47\nmsgid \"Tarragona\"\nmsgstr \"Tarragona\"\n\n#: es/es_provinces.py:48\nmsgid \"Teruel\"\nmsgstr \"Teruel\"\n\n#: es/es_provinces.py:49\nmsgid \"Toledo\"\nmsgstr \"Toledo\"\n\n#: es/es_provinces.py:50\nmsgid \"Valencia\"\nmsgstr \"Valencia\"\n\n#: es/es_provinces.py:51\nmsgid \"Valladolid\"\nmsgstr \"Valladolid\"\n\n#: es/es_provinces.py:52\nmsgid \"Bizkaia\"\nmsgstr \"Bizkaia\"\n\n#: es/es_provinces.py:53\nmsgid \"Zamora\"\nmsgstr \"Zamora\"\n\n#: es/es_provinces.py:54\nmsgid \"Zaragoza\"\nmsgstr \"Zaragoza\"\n\n#: es/es_provinces.py:55\nmsgid \"Ceuta\"\nmsgstr \"Ceuta\"\n\n#: es/es_provinces.py:56\nmsgid \"Melilla\"\nmsgstr \"Melilla\"\n\n#: es/es_regions.py:5\nmsgid \"Andalusia\"\nmsgstr \"Andalusia\"\n\n#: es/es_regions.py:6\nmsgid \"Aragon\"\nmsgstr \"Aragon\"\n\n#: es/es_regions.py:7\nmsgid \"Principality of Asturias\"\nmsgstr \"Principality of Asturias\"\n\n#: es/es_regions.py:8\nmsgid \"Balearic Islands\"\nmsgstr \"Balearic Adaları\"\n\n#: es/es_regions.py:9\nmsgid \"Basque Country\"\nmsgstr \"Basque Country\"\n\n#: es/es_regions.py:10\nmsgid \"Canary Islands\"\nmsgstr \"Canary Adaları\"\n\n#: es/es_regions.py:12\nmsgid \"Castile-La Mancha\"\nmsgstr \"Castile-La Mancha\"\n\n#: es/es_regions.py:13\nmsgid \"Castile and Leon\"\nmsgstr \"Castile ve Leon\"\n\n#: es/es_regions.py:14\nmsgid \"Catalonia\"\nmsgstr \"Catalonia\"\n\n#: es/es_regions.py:15\nmsgid \"Extremadura\"\nmsgstr \"Extremadura\"\n\n#: es/es_regions.py:16\nmsgid \"Galicia\"\nmsgstr \"Galicia\"\n\n#: es/es_regions.py:19\nmsgid \"Region of Murcia\"\nmsgstr \"Murcia Bölgesi\"\n\n#: es/es_regions.py:20\nmsgid \"Foral Community of Navarre\"\nmsgstr \"Foral Community of Navarre\"\n\n#: es/es_regions.py:21\nmsgid \"Valencian Community\"\nmsgstr \"Valencian Community\"\n\n#: es/forms.py:26\nmsgid \"Enter a valid postal code in the range and format 01XXX - 52XXX.\"\nmsgstr \"01XXX - 52XXX aralığında ve formatında geçerli bir posta kodu girin.\"\n\n#: es/forms.py:46\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or \"\n\"9XXXXXXXX.\"\nmsgstr \"\"\n\"6XXXXXXXX, 8XXXXXXXX ya da 9XXXXXXXX formatlarından birisine uyan geçerli \"\n\"bir posta kodu girin.\"\n\n#: es/forms.py:73\nmsgid \"Please enter a valid NIF, NIE, or CIF.\"\nmsgstr \"Lütfen geçerli bir NIF, NIE ya da CIF girin.\"\n\n#: es/forms.py:74\nmsgid \"Please enter a valid NIF or NIE.\"\nmsgstr \"Lütfen geçerli bir NIF ya da NIE girin.\"\n\n#: es/forms.py:75\nmsgid \"Invalid checksum for NIF.\"\nmsgstr \"Yanlış NIF sağlama toplamı.\"\n\n#: es/forms.py:76\nmsgid \"Invalid checksum for NIE.\"\nmsgstr \"Yanlış NIE sağlama toplamı.\"\n\n#: es/forms.py:77\nmsgid \"Invalid checksum for CIF.\"\nmsgstr \"Yanlış CIF sağlama toplamı.\"\n\n#: es/forms.py:149\nmsgid \"\"\n\"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.\"\nmsgstr \"\"\n\"Lütfen XXXX-XXXX-XX-XXXXXXXXXX formatında geçerli bir banka hesabı numarası \"\n\"girin.\"\n\n#: es/forms.py:150\nmsgid \"Invalid checksum for bank account number.\"\nmsgstr \"Banka hesabı numarası için geçersiz sağlama toplamı.\"\n\n#: fi/forms.py:33\nmsgid \"Enter a valid Finnish social security number.\"\nmsgstr \"Geçerli bir Finlandiya sosyal güvenlik numarası girin.\"\n\n#: fr/forms.py:35\nmsgid \"Phone numbers must be in 0X XX XX XX XX format.\"\nmsgstr \"Telefon numaraları 0X XX XX XX XX formatında olmalıdır.\"\n\n#: gb/forms.py:25\nmsgid \"Enter a valid postcode.\"\nmsgstr \"Geçerli bir posta kodu girin.\"\n\n#: gb/gb_regions.py:11\nmsgid \"Bedfordshire\"\nmsgstr \"Bedfordshire\"\n\n#: gb/gb_regions.py:12\nmsgid \"Buckinghamshire\"\nmsgstr \"Buckinghamshire\"\n\n#: gb/gb_regions.py:14\nmsgid \"Cheshire\"\nmsgstr \"Cheshire\"\n\n#: gb/gb_regions.py:15\nmsgid \"Cornwall and Isles of Scilly\"\nmsgstr \"Cornwall ve Scilly Adaları\"\n\n#: gb/gb_regions.py:16\nmsgid \"Cumbria\"\nmsgstr \"Cumbria\"\n\n#: gb/gb_regions.py:17\nmsgid \"Derbyshire\"\nmsgstr \"Derbyshire\"\n\n#: gb/gb_regions.py:18\nmsgid \"Devon\"\nmsgstr \"Devon\"\n\n#: gb/gb_regions.py:19\nmsgid \"Dorset\"\nmsgstr \"Dorset\"\n\n#: gb/gb_regions.py:20\nmsgid \"Durham\"\nmsgstr \"Durham\"\n\n#: gb/gb_regions.py:21\nmsgid \"East Sussex\"\nmsgstr \"Doğu  Sussex\"\n\n#: gb/gb_regions.py:22\nmsgid \"Essex\"\nmsgstr \"c\"\n\n#: gb/gb_regions.py:23\nmsgid \"Gloucestershire\"\nmsgstr \"c\"\n\n#: gb/gb_regions.py:24\nmsgid \"Greater London\"\nmsgstr \"Greater London\"\n\n#: gb/gb_regions.py:25\nmsgid \"Greater Manchester\"\nmsgstr \"Greater Manchester\"\n\n#: gb/gb_regions.py:26\nmsgid \"Hampshire\"\nmsgstr \"Hampshire\"\n\n#: gb/gb_regions.py:27\nmsgid \"Hertfordshire\"\nmsgstr \"Hertfordshire\"\n\n#: gb/gb_regions.py:28\nmsgid \"Kent\"\nmsgstr \"Kent\"\n\n#: gb/gb_regions.py:29\nmsgid \"Lancashire\"\nmsgstr \"Lancashire\"\n\n#: gb/gb_regions.py:30\nmsgid \"Leicestershire\"\nmsgstr \"Leicestershire\"\n\n#: gb/gb_regions.py:31\nmsgid \"Lincolnshire\"\nmsgstr \"Lincolnshire\"\n\n#: gb/gb_regions.py:32\nmsgid \"Merseyside\"\nmsgstr \"Merseyside\"\n\n#: gb/gb_regions.py:33\nmsgid \"Norfolk\"\nmsgstr \"Norfolk\"\n\n#: gb/gb_regions.py:34\nmsgid \"North Yorkshire\"\nmsgstr \"North Yorkshire\"\n\n#: gb/gb_regions.py:35\nmsgid \"Northamptonshire\"\nmsgstr \"Northamptonshire\"\n\n#: gb/gb_regions.py:36\nmsgid \"Northumberland\"\nmsgstr \"Northumberland\"\n\n#: gb/gb_regions.py:37\nmsgid \"Nottinghamshire\"\nmsgstr \"Nottinghamshire\"\n\n#: gb/gb_regions.py:38\nmsgid \"Oxfordshire\"\nmsgstr \"Oxfordshire\"\n\n#: gb/gb_regions.py:39\nmsgid \"Shropshire\"\nmsgstr \"Shropshire\"\n\n#: gb/gb_regions.py:40\nmsgid \"Somerset\"\nmsgstr \"Somerset\"\n\n#: gb/gb_regions.py:41\nmsgid \"South Yorkshire\"\nmsgstr \"South Yorkshire\"\n\n#: gb/gb_regions.py:42\nmsgid \"Staffordshire\"\nmsgstr \"Staffordshire\"\n\n#: gb/gb_regions.py:43\nmsgid \"Suffolk\"\nmsgstr \"Suffolk\"\n\n#: gb/gb_regions.py:44\nmsgid \"Surrey\"\nmsgstr \"Surrey\"\n\n#: gb/gb_regions.py:45\nmsgid \"Tyne and Wear\"\nmsgstr \"Tyne and Wear\"\n\n#: gb/gb_regions.py:46\nmsgid \"Warwickshire\"\nmsgstr \"Warwickshire\"\n\n#: gb/gb_regions.py:47\nmsgid \"West Midlands\"\nmsgstr \"West Midlands\"\n\n#: gb/gb_regions.py:48\nmsgid \"West Sussex\"\nmsgstr \"West Sussex\"\n\n#: gb/gb_regions.py:49\nmsgid \"West Yorkshire\"\nmsgstr \"West Yorkshire\"\n\n#: gb/gb_regions.py:50\nmsgid \"Wiltshire\"\nmsgstr \"Wiltshire\"\n\n#: gb/gb_regions.py:51\nmsgid \"Worcestershire\"\nmsgstr \"Worcestershire\"\n\n#: gb/gb_regions.py:55\nmsgid \"County Antrim\"\nmsgstr \"County Antrim\"\n\n#: gb/gb_regions.py:56\nmsgid \"County Armagh\"\nmsgstr \"County Armagh\"\n\n#: gb/gb_regions.py:57\nmsgid \"County Down\"\nmsgstr \"County Down\"\n\n#: gb/gb_regions.py:58\nmsgid \"County Fermanagh\"\nmsgstr \"County Fermanagh\"\n\n#: gb/gb_regions.py:59\nmsgid \"County Londonderry\"\nmsgstr \"County Londonderry\"\n\n#: gb/gb_regions.py:60\nmsgid \"County Tyrone\"\nmsgstr \"County Tyrone\"\n\n#: gb/gb_regions.py:64\nmsgid \"Clwyd\"\nmsgstr \"Clwyd\"\n\n#: gb/gb_regions.py:65\nmsgid \"Dyfed\"\nmsgstr \"Dyfed\"\n\n#: gb/gb_regions.py:66\nmsgid \"Gwent\"\nmsgstr \"Gwent\"\n\n#: gb/gb_regions.py:67\nmsgid \"Gwynedd\"\nmsgstr \"Gwynedd\"\n\n#: gb/gb_regions.py:68\nmsgid \"Mid Glamorgan\"\nmsgstr \"Orta Glamorgan\"\n\n#: gb/gb_regions.py:69\nmsgid \"Powys\"\nmsgstr \"Powys\"\n\n#: gb/gb_regions.py:70\nmsgid \"South Glamorgan\"\nmsgstr \"Kuzey Glamorgan\"\n\n#: gb/gb_regions.py:71\nmsgid \"West Glamorgan\"\nmsgstr \"Batı Glamorgan\"\n\n#: gb/gb_regions.py:75\nmsgid \"Borders\"\nmsgstr \"Borders\"\n\n#: gb/gb_regions.py:76\nmsgid \"Central Scotland\"\nmsgstr \"Merkezi İskoçya\"\n\n#: gb/gb_regions.py:77\nmsgid \"Dumfries and Galloway\"\nmsgstr \"Dumfries ve Galloway\"\n\n#: gb/gb_regions.py:78\nmsgid \"Fife\"\nmsgstr \"Fife\"\n\n#: gb/gb_regions.py:79\nmsgid \"Grampian\"\nmsgstr \"Grampian\"\n\n#: gb/gb_regions.py:80\nmsgid \"Highland\"\nmsgstr \"Highland\"\n\n#: gb/gb_regions.py:81\nmsgid \"Lothian\"\nmsgstr \"Lothian\"\n\n#: gb/gb_regions.py:82\nmsgid \"Orkney Islands\"\nmsgstr \"Orkney Adaları\"\n\n#: gb/gb_regions.py:83\nmsgid \"Shetland Islands\"\nmsgstr \"Shetland Adaları\"\n\n#: gb/gb_regions.py:84\nmsgid \"Strathclyde\"\nmsgstr \"Strathclyde\"\n\n#: gb/gb_regions.py:85\nmsgid \"Tayside\"\nmsgstr \"Tayside\"\n\n#: gb/gb_regions.py:86\nmsgid \"Western Isles\"\nmsgstr \"Batı Adaları\"\n\n#: gb/gb_regions.py:90\nmsgid \"England\"\nmsgstr \"England\"\n\n#: gb/gb_regions.py:91\nmsgid \"Northern Ireland\"\nmsgstr \"Kuzey İrlanda\"\n\n#: gb/gb_regions.py:92\nmsgid \"Scotland\"\nmsgstr \"İskoçya\"\n\n#: gb/gb_regions.py:93\nmsgid \"Wales\"\nmsgstr \"Wales\"\n\n#: hk/forms.py:37\n#, python-format\nmsgid \"Phone number should not start with one of the followings: %s.\"\nmsgstr \"Telefon numarası bunlardan herhangi birisi ile başlayamaz: %s.\"\n\n#: hk/forms.py:40\n#, python-format\nmsgid \"Phone number must be in one of the following formats: %s.\"\nmsgstr \"Telefon numarası bu formatlardan birisinde olmalıdır: %s.\"\n\n#: hk/forms.py:42\n#, python-format\nmsgid \"Phone number should start with one of the followings: %s.\"\nmsgstr \"Telefon numarası bunlardan herhangi birisi ile başlamalıdır: %s.\"\n\n#: hr/forms.py:76\nmsgid \"Enter a valid 13 digit JMBG\"\nmsgstr \"Geçerli bir 13 haneli JMBG girin\"\n\n#: hr/forms.py:77\nmsgid \"Error in date segment\"\nmsgstr \"Tarih bölümünde hata\"\n\n#: hr/forms.py:123\nmsgid \"Enter a valid 11 digit OIB\"\nmsgstr \"Geçerli bir 11 haneli ÖİB girin\"\n\n#: hr/forms.py:152 id/forms.py:112\nmsgid \"Enter a valid vehicle license plate number\"\nmsgstr \"Geçerli bir araç plaka numarası girin\"\n\n#: hr/forms.py:153\nmsgid \"Enter a valid location code\"\nmsgstr \"Geçerli bir konum kodu girin\"\n\n#: hr/forms.py:154\nmsgid \"Number part cannot be zero\"\nmsgstr \"Numara bölümü sıfır olamaz.\"\n\n#: hr/forms.py:190\nmsgid \"Enter a valid 5 digit postal code\"\nmsgstr \"Geçerli bir 5 rakamlı postakodu girin.\"\n\n#: hr/forms.py:218 id/forms.py:72 nl/forms.py:56\nmsgid \"Enter a valid phone number\"\nmsgstr \"Geçerli bir telefon numarası girin\"\n\n#: hr/forms.py:219\nmsgid \"Enter a valid area or mobile network code\"\nmsgstr \"Geçerli bir alan veya mobil ağ kodu girin\"\n\n#: hr/forms.py:220\nmsgid \"The phone nubmer is too long\"\nmsgstr \"Telefon numarası çok uzun.\"\n\n#: hr/forms.py:258\nmsgid \"Enter a valid 19 digit JMBAG starting with 601983\"\nmsgstr \"601983 ile başlayan geçerli bir 19 basamaklı JMBAG girin\"\n\n#: hr/forms.py:259\nmsgid \"Card issue number cannot be zero\"\nmsgstr \"Kart sorunu numarası sıfır olamaz\"\n\n#: hr/hr_choices.py:14\nmsgid \"Grad Zagreb\"\nmsgstr \"Grad Zagreb\"\n\n#: hr/hr_choices.py:15\nmsgid \"Bjelovarsko-bilogorska županija\"\nmsgstr \"Bjelovarsko-bilogorska županija\"\n\n#: hr/hr_choices.py:16\nmsgid \"Brodsko-posavska županija\"\nmsgstr \"Brodsko-posavska županija\"\n\n#: hr/hr_choices.py:17\nmsgid \"Dubrovačko-neretvanska županija\"\nmsgstr \"Dubrovačko-neretvanska županija\"\n\n#: hr/hr_choices.py:18\nmsgid \"Istarska županija\"\nmsgstr \"Istarska županija\"\n\n#: hr/hr_choices.py:19\nmsgid \"Karlovačka županija\"\nmsgstr \"Karlovačka županija\"\n\n#: hr/hr_choices.py:20\nmsgid \"Koprivničko-križevačka županija\"\nmsgstr \"Koprivničko-križevačka županija\"\n\n#: hr/hr_choices.py:21\nmsgid \"Krapinsko-zagorska županija\"\nmsgstr \"Krapinsko-zagorska županija\"\n\n#: hr/hr_choices.py:22\nmsgid \"Ličko-senjska županija\"\nmsgstr \"Ličko-senjska županija\"\n\n#: hr/hr_choices.py:23\nmsgid \"Međimurska županija\"\nmsgstr \"Međimurska županija\"\n\n#: hr/hr_choices.py:24\nmsgid \"Osječko-baranjska županija\"\nmsgstr \"Osječko-baranjska županija\"\n\n#: hr/hr_choices.py:25\nmsgid \"Požeško-slavonska županija\"\nmsgstr \"Požeško-slavonska županija\"\n\n#: hr/hr_choices.py:26\nmsgid \"Primorsko-goranska županija\"\nmsgstr \"Primorsko-goranska županija\"\n\n#: hr/hr_choices.py:27\nmsgid \"Sisačko-moslavačka županija\"\nmsgstr \"Sisačko-moslavačka županija\"\n\n#: hr/hr_choices.py:28\nmsgid \"Splitsko-dalmatinska županija\"\nmsgstr \"Splitsko-dalmatinska županija\"\n\n#: hr/hr_choices.py:29\nmsgid \"Šibensko-kninska županija\"\nmsgstr \"Šibensko-kninska županija\"\n\n#: hr/hr_choices.py:30\nmsgid \"Varaždinska županija\"\nmsgstr \"Varaždinska županija\"\n\n#: hr/hr_choices.py:31\nmsgid \"Virovitičko-podravska županija\"\nmsgstr \"Virovitičko-podravska županija\"\n\n#: hr/hr_choices.py:32\nmsgid \"Vukovarsko-srijemska županija\"\nmsgstr \"Vukovarsko-srijemska županija\"\n\n#: hr/hr_choices.py:33\nmsgid \"Zadarska županija\"\nmsgstr \"Zadarska županija\"\n\n#: hr/hr_choices.py:34\nmsgid \"Zagrebačka županija\"\nmsgstr \"Zagrebačka županija\"\n\n#: id/forms.py:31\nmsgid \"Enter a valid post code\"\nmsgstr \"Geçerli bir posta kodu girin\"\n\n#: id/forms.py:176\nmsgid \"Enter a valid NIK/KTP number\"\nmsgstr \"Geçerli bir NIK/KTP numarası girin\"\n\n#: id/id_choices.py:15\nmsgid \"Aceh\"\nmsgstr \"Aceh\"\n\n#: id/id_choices.py:16 id/id_choices.py:79\nmsgid \"Bali\"\nmsgstr \"Bali\"\n\n#: id/id_choices.py:17 id/id_choices.py:51\nmsgid \"Banten\"\nmsgstr \"Banten\"\n\n#: id/id_choices.py:18 id/id_choices.py:60\nmsgid \"Bengkulu\"\nmsgstr \"Bengkulu\"\n\n#: id/id_choices.py:19 id/id_choices.py:53\nmsgid \"Yogyakarta\"\nmsgstr \"Yogyakarta\"\n\n#: id/id_choices.py:20 id/id_choices.py:57\nmsgid \"Jakarta\"\nmsgstr \"Jakarta\"\n\n#: id/id_choices.py:21 id/id_choices.py:81\nmsgid \"Gorontalo\"\nmsgstr \"Gorontalo\"\n\n#: id/id_choices.py:22 id/id_choices.py:63\nmsgid \"Jambi\"\nmsgstr \"Jambi\"\n\n#: id/id_choices.py:23\nmsgid \"Jawa Barat\"\nmsgstr \"Jawa Barat\"\n\n#: id/id_choices.py:24\nmsgid \"Jawa Tengah\"\nmsgstr \"Jawa Tengah\"\n\n#: id/id_choices.py:25\nmsgid \"Jawa Timur\"\nmsgstr \"Jawa Timur\"\n\n#: id/id_choices.py:26 id/id_choices.py:94\nmsgid \"Kalimantan Barat\"\nmsgstr \"Kalimantan Barat\"\n\n#: id/id_choices.py:27 id/id_choices.py:72\nmsgid \"Kalimantan Selatan\"\nmsgstr \"Kalimantan Selatan\"\n\n#: id/id_choices.py:28 id/id_choices.py:95\nmsgid \"Kalimantan Tengah\"\nmsgstr \"Kalimantan Tengah\"\n\n#: id/id_choices.py:29 id/id_choices.py:96\nmsgid \"Kalimantan Timur\"\nmsgstr \"Kalimantan Timur\"\n\n#: id/id_choices.py:30\nmsgid \"Kepulauan Bangka-Belitung\"\nmsgstr \"Kepulauan Bangka-Belitung\"\n\n#: id/id_choices.py:31 id/id_choices.py:68\nmsgid \"Kepulauan Riau\"\nmsgstr \"Kepulauan Riau\"\n\n#: id/id_choices.py:32 id/id_choices.py:61\nmsgid \"Lampung\"\nmsgstr \"Lampung\"\n\n#: id/id_choices.py:33 id/id_choices.py:76\nmsgid \"Maluku\"\nmsgstr \"Maluku\"\n\n#: id/id_choices.py:34 id/id_choices.py:77\nmsgid \"Maluku Utara\"\nmsgstr \"Maluku Utara\"\n\n#: id/id_choices.py:35\nmsgid \"Nusa Tenggara Barat\"\nmsgstr \"Nusa Tenggara Barat\"\n\n#: id/id_choices.py:36\nmsgid \"Nusa Tenggara Timur\"\nmsgstr \"Nusa Tenggara Timur\"\n\n#: id/id_choices.py:37\nmsgid \"Papua\"\nmsgstr \"Papua\"\n\n#: id/id_choices.py:38\nmsgid \"Papua Barat\"\nmsgstr \"Papua Barat\"\n\n#: id/id_choices.py:39 id/id_choices.py:66\nmsgid \"Riau\"\nmsgstr \"Riau\"\n\n#: id/id_choices.py:40 id/id_choices.py:74\nmsgid \"Sulawesi Barat\"\nmsgstr \"Sulawesi Barat\"\n\n#: id/id_choices.py:41 id/id_choices.py:75\nmsgid \"Sulawesi Selatan\"\nmsgstr \"Sulawesi Selatan\"\n\n#: id/id_choices.py:42 id/id_choices.py:82\nmsgid \"Sulawesi Tengah\"\nmsgstr \"Sulawesi Tengah\"\n\n#: id/id_choices.py:43 id/id_choices.py:85\nmsgid \"Sulawesi Tenggara\"\nmsgstr \"Sulawesi Tenggara\"\n\n#: id/id_choices.py:44\nmsgid \"Sulawesi Utara\"\nmsgstr \"Sulawesi Utara\"\n\n#: id/id_choices.py:45 id/id_choices.py:58\nmsgid \"Sumatera Barat\"\nmsgstr \"Sumatera Barat\"\n\n#: id/id_choices.py:46 id/id_choices.py:62\nmsgid \"Sumatera Selatan\"\nmsgstr \"Sumatera Selatan\"\n\n#: id/id_choices.py:47 id/id_choices.py:64\nmsgid \"Sumatera Utara\"\nmsgstr \"Sumatera Utara\"\n\n#: id/id_choices.py:52\nmsgid \"Magelang\"\nmsgstr \"Magelang\"\n\n#: id/id_choices.py:54\nmsgid \"Surakarta - Solo\"\nmsgstr \"Surakarta - Solo\"\n\n#: id/id_choices.py:55\nmsgid \"Madiun\"\nmsgstr \"Madiun\"\n\n#: id/id_choices.py:56\nmsgid \"Kediri\"\nmsgstr \"Kediri\"\n\n#: id/id_choices.py:59\nmsgid \"Tapanuli\"\nmsgstr \"Tapanuli\"\n\n#: id/id_choices.py:65\nmsgid \"Nanggroe Aceh Darussalam\"\nmsgstr \"Nanggroe Aceh Darussalam\"\n\n#: id/id_choices.py:67\nmsgid \"Kepulauan Bangka Belitung\"\nmsgstr \"Kepulauan Bangka Belitung\"\n\n#: id/id_choices.py:69\nmsgid \"Corps Consulate\"\nmsgstr \"Corps Consulate\"\n\n#: id/id_choices.py:70\nmsgid \"Corps Diplomatic\"\nmsgstr \"Corps Diplomatic\"\n\n#: id/id_choices.py:71\nmsgid \"Bandung\"\nmsgstr \"Bandung\"\n\n#: id/id_choices.py:73\nmsgid \"Sulawesi Utara Daratan\"\nmsgstr \"Sulawesi Utara Daratan\"\n\n#: id/id_choices.py:78\nmsgid \"NTT - Timor\"\nmsgstr \"NTT - Timor\"\n\n#: id/id_choices.py:80\nmsgid \"Sulawesi Utara Kepulauan\"\nmsgstr \"Sulawesi Utara Kepulauan\"\n\n#: id/id_choices.py:83\nmsgid \"NTB - Lombok\"\nmsgstr \"NTB - Lombok\"\n\n#: id/id_choices.py:84\nmsgid \"Papua dan Papua Barat\"\nmsgstr \"Papua dan Papua Barat\"\n\n#: id/id_choices.py:86\nmsgid \"Cirebon\"\nmsgstr \"Cirebon\"\n\n#: id/id_choices.py:87\nmsgid \"NTB - Sumbawa\"\nmsgstr \"NTB - Sumbawa\"\n\n#: id/id_choices.py:88\nmsgid \"NTT - Flores\"\nmsgstr \"NTT - Flores\"\n\n#: id/id_choices.py:89\nmsgid \"NTT - Sumba\"\nmsgstr \"NTT - Sumba\"\n\n#: id/id_choices.py:90\nmsgid \"Bogor\"\nmsgstr \"Bogor\"\n\n#: id/id_choices.py:91\nmsgid \"Pekalongan\"\nmsgstr \"Pekalongan\"\n\n#: id/id_choices.py:92\nmsgid \"Semarang\"\nmsgstr \"Semarang\"\n\n#: id/id_choices.py:93\nmsgid \"Pati\"\nmsgstr \"Pati\"\n\n#: id/id_choices.py:97\nmsgid \"Surabaya\"\nmsgstr \"Surabaya\"\n\n#: id/id_choices.py:98\nmsgid \"Madura\"\nmsgstr \"Madura\"\n\n#: id/id_choices.py:99\nmsgid \"Malang\"\nmsgstr \"Malang\"\n\n#: id/id_choices.py:100\nmsgid \"Jember\"\nmsgstr \"Jember\"\n\n#: id/id_choices.py:101\nmsgid \"Banyumas\"\nmsgstr \"Banyumas\"\n\n#: id/id_choices.py:102\nmsgid \"Federal Government\"\nmsgstr \"Federal Hükümet\"\n\n#: id/id_choices.py:103\nmsgid \"Bojonegoro\"\nmsgstr \"Bojonegoro\"\n\n#: id/id_choices.py:104\nmsgid \"Purwakarta\"\nmsgstr \"Purwakarta\"\n\n#: id/id_choices.py:105\nmsgid \"Sidoarjo\"\nmsgstr \"Sidoarjo\"\n\n#: id/id_choices.py:106\nmsgid \"Garut\"\nmsgstr \"Garut\"\n\n#: ie/ie_counties.py:8\nmsgid \"Antrim\"\nmsgstr \"Antrim\"\n\n#: ie/ie_counties.py:9\nmsgid \"Armagh\"\nmsgstr \"Armagh\"\n\n#: ie/ie_counties.py:10\nmsgid \"Carlow\"\nmsgstr \"Carlow\"\n\n#: ie/ie_counties.py:11\nmsgid \"Cavan\"\nmsgstr \"Cavan\"\n\n#: ie/ie_counties.py:12\nmsgid \"Clare\"\nmsgstr \"Clare\"\n\n#: ie/ie_counties.py:13\nmsgid \"Cork\"\nmsgstr \"Cork\"\n\n#: ie/ie_counties.py:14\nmsgid \"Derry\"\nmsgstr \"Derry\"\n\n#: ie/ie_counties.py:15\nmsgid \"Donegal\"\nmsgstr \"Donegal\"\n\n#: ie/ie_counties.py:16\nmsgid \"Down\"\nmsgstr \"Down\"\n\n#: ie/ie_counties.py:17\nmsgid \"Dublin\"\nmsgstr \"Dublin\"\n\n#: ie/ie_counties.py:18\nmsgid \"Fermanagh\"\nmsgstr \"Fermanagh\"\n\n#: ie/ie_counties.py:19\nmsgid \"Galway\"\nmsgstr \"Galway\"\n\n#: ie/ie_counties.py:20\nmsgid \"Kerry\"\nmsgstr \"Kerry\"\n\n#: ie/ie_counties.py:21\nmsgid \"Kildare\"\nmsgstr \"Kildare\"\n\n#: ie/ie_counties.py:22\nmsgid \"Kilkenny\"\nmsgstr \"Kilkenny\"\n\n#: ie/ie_counties.py:23\nmsgid \"Laois\"\nmsgstr \"Laois\"\n\n#: ie/ie_counties.py:24\nmsgid \"Leitrim\"\nmsgstr \"Leitrim\"\n\n#: ie/ie_counties.py:25\nmsgid \"Limerick\"\nmsgstr \"Limerick\"\n\n#: ie/ie_counties.py:26\nmsgid \"Longford\"\nmsgstr \"Longford\"\n\n#: ie/ie_counties.py:27\nmsgid \"Louth\"\nmsgstr \"Louth\"\n\n#: ie/ie_counties.py:28\nmsgid \"Mayo\"\nmsgstr \"Mayo\"\n\n#: ie/ie_counties.py:29\nmsgid \"Meath\"\nmsgstr \"Meath\"\n\n#: ie/ie_counties.py:30\nmsgid \"Monaghan\"\nmsgstr \"Monaghan\"\n\n#: ie/ie_counties.py:31\nmsgid \"Offaly\"\nmsgstr \"Offaly\"\n\n#: ie/ie_counties.py:32\nmsgid \"Roscommon\"\nmsgstr \"Roscommon\"\n\n#: ie/ie_counties.py:33\nmsgid \"Sligo\"\nmsgstr \"Sligo\"\n\n#: ie/ie_counties.py:34\nmsgid \"Tipperary\"\nmsgstr \"Tipperary\"\n\n#: ie/ie_counties.py:35\nmsgid \"Tyrone\"\nmsgstr \"Tyrone\"\n\n#: ie/ie_counties.py:36\nmsgid \"Waterford\"\nmsgstr \"Waterford\"\n\n#: ie/ie_counties.py:37\nmsgid \"Westmeath\"\nmsgstr \"Westmeath\"\n\n#: ie/ie_counties.py:38\nmsgid \"Wexford\"\nmsgstr \"Wexford\"\n\n#: ie/ie_counties.py:39\nmsgid \"Wicklow\"\nmsgstr \"Wicklow\"\n\n#: il/forms.py:32\nmsgid \"Enter a postal code in the format XXXXX\"\nmsgstr \"XXXXX formatında bir posta kodu giriniz\"\n\n#: il/forms.py:51\nmsgid \"Enter a valid ID number.\"\nmsgstr \"Geçerli bir kimlik numarası giriniz.\"\n\n#: in_/forms.py:41\nmsgid \"Enter a zip code in the format XXXXXX or XXX XXX.\"\nmsgstr \"XXXXXX veya XXX XXX biçiminde bir posta kodu girin.\"\n\n#: in_/forms.py:64\nmsgid \"Enter an Indian state or territory.\"\nmsgstr \"Bir Hintli eyaleti veya bölgesi girin.\"\n\n#: in_/forms.py:103\nmsgid \"Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.\"\nmsgstr \"\"\n\"Telefon numaraları 02X-8X veya 03X-7X veya 04X-6X formatında olmalıdır.\"\n\n#: is_/forms.py:22\nmsgid \"\"\n\"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.\"\nmsgstr \"Geçerli bir İzlanda kimlik numarası girin. Format: XXXXXX-XXXX.\"\n\n#: is_/forms.py:23\nmsgid \"The Icelandic identification number is not valid.\"\nmsgstr \"Geçersiz İzlanda kimlik numarası.\"\n\n#: it/forms.py:21\nmsgid \"Enter a valid zip code.\"\nmsgstr \"Geçerli bir posta kodu girin.\"\n\n#: it/forms.py:48\nmsgid \"Enter a valid Social Security number.\"\nmsgstr \"Geçerli bir Sosyal Güvenlik numarası girin.\"\n\n#: it/forms.py:73\nmsgid \"Enter a valid VAT number.\"\nmsgstr \"Geçerli bir VAT girin.\"\n\n#: jp/forms.py:19\nmsgid \"Enter a postal code in the format XXXXXXX or XXX-XXXX.\"\nmsgstr \"XXXXXXX  ya da XXX-XXXX formatında bir posta kodu girin.\"\n\n#: jp/jp_prefectures.py:4\nmsgid \"Hokkaido\"\nmsgstr \"Hokkaido\"\n\n#: jp/jp_prefectures.py:5\nmsgid \"Aomori\"\nmsgstr \"Aomori\"\n\n#: jp/jp_prefectures.py:6\nmsgid \"Iwate\"\nmsgstr \"Iwate\"\n\n#: jp/jp_prefectures.py:7\nmsgid \"Miyagi\"\nmsgstr \"Miyagi\"\n\n#: jp/jp_prefectures.py:8\nmsgid \"Akita\"\nmsgstr \"Akita\"\n\n#: jp/jp_prefectures.py:9\nmsgid \"Yamagata\"\nmsgstr \"Yamagata\"\n\n#: jp/jp_prefectures.py:10\nmsgid \"Fukushima\"\nmsgstr \"Fukushima\"\n\n#: jp/jp_prefectures.py:11\nmsgid \"Ibaraki\"\nmsgstr \"Ibaraki\"\n\n#: jp/jp_prefectures.py:12\nmsgid \"Tochigi\"\nmsgstr \"Tochigi\"\n\n#: jp/jp_prefectures.py:13\nmsgid \"Gunma\"\nmsgstr \"Gunma\"\n\n#: jp/jp_prefectures.py:14\nmsgid \"Saitama\"\nmsgstr \"Saitama\"\n\n#: jp/jp_prefectures.py:15\nmsgid \"Chiba\"\nmsgstr \"Chiba\"\n\n#: jp/jp_prefectures.py:16\nmsgid \"Tokyo\"\nmsgstr \"Tokyo\"\n\n#: jp/jp_prefectures.py:17\nmsgid \"Kanagawa\"\nmsgstr \"Kanagawa\"\n\n#: jp/jp_prefectures.py:18\nmsgid \"Yamanashi\"\nmsgstr \"Yamanashi\"\n\n#: jp/jp_prefectures.py:19\nmsgid \"Nagano\"\nmsgstr \"Nagano\"\n\n#: jp/jp_prefectures.py:20\nmsgid \"Niigata\"\nmsgstr \"Niigata\"\n\n#: jp/jp_prefectures.py:21\nmsgid \"Toyama\"\nmsgstr \"Toyama\"\n\n#: jp/jp_prefectures.py:22\nmsgid \"Ishikawa\"\nmsgstr \"Ishikawa\"\n\n#: jp/jp_prefectures.py:23\nmsgid \"Fukui\"\nmsgstr \"Fukui\"\n\n#: jp/jp_prefectures.py:24\nmsgid \"Gifu\"\nmsgstr \"Gifu\"\n\n#: jp/jp_prefectures.py:25\nmsgid \"Shizuoka\"\nmsgstr \"Shizuoka\"\n\n#: jp/jp_prefectures.py:26\nmsgid \"Aichi\"\nmsgstr \"Aichi\"\n\n#: jp/jp_prefectures.py:27\nmsgid \"Mie\"\nmsgstr \"Mie\"\n\n#: jp/jp_prefectures.py:28\nmsgid \"Shiga\"\nmsgstr \"Shiga\"\n\n#: jp/jp_prefectures.py:29\nmsgid \"Kyoto\"\nmsgstr \"Kyoto\"\n\n#: jp/jp_prefectures.py:30\nmsgid \"Osaka\"\nmsgstr \"Osaka\"\n\n#: jp/jp_prefectures.py:31\nmsgid \"Hyogo\"\nmsgstr \"Hyogo\"\n\n#: jp/jp_prefectures.py:32\nmsgid \"Nara\"\nmsgstr \"Nara\"\n\n#: jp/jp_prefectures.py:33\nmsgid \"Wakayama\"\nmsgstr \"Wakayama\"\n\n#: jp/jp_prefectures.py:34\nmsgid \"Tottori\"\nmsgstr \"Tottori\"\n\n#: jp/jp_prefectures.py:35\nmsgid \"Shimane\"\nmsgstr \"Shimane\"\n\n#: jp/jp_prefectures.py:36\nmsgid \"Okayama\"\nmsgstr \"Okayama\"\n\n#: jp/jp_prefectures.py:37\nmsgid \"Hiroshima\"\nmsgstr \"Hiroshima\"\n\n#: jp/jp_prefectures.py:38\nmsgid \"Yamaguchi\"\nmsgstr \"Yamaguchi\"\n\n#: jp/jp_prefectures.py:39\nmsgid \"Tokushima\"\nmsgstr \"Tokushima\"\n\n#: jp/jp_prefectures.py:40\nmsgid \"Kagawa\"\nmsgstr \"Kagawa\"\n\n#: jp/jp_prefectures.py:41\nmsgid \"Ehime\"\nmsgstr \"Ehime\"\n\n#: jp/jp_prefectures.py:42\nmsgid \"Kochi\"\nmsgstr \"Kochi\"\n\n#: jp/jp_prefectures.py:43\nmsgid \"Fukuoka\"\nmsgstr \"Fukuoka\"\n\n#: jp/jp_prefectures.py:44\nmsgid \"Saga\"\nmsgstr \"Saga\"\n\n#: jp/jp_prefectures.py:45\nmsgid \"Nagasaki\"\nmsgstr \"Nagasaki\"\n\n#: jp/jp_prefectures.py:46\nmsgid \"Kumamoto\"\nmsgstr \"Kumamoto\"\n\n#: jp/jp_prefectures.py:47\nmsgid \"Oita\"\nmsgstr \"Oita\"\n\n#: jp/jp_prefectures.py:48\nmsgid \"Miyazaki\"\nmsgstr \"Miyazaki\"\n\n#: jp/jp_prefectures.py:49\nmsgid \"Kagoshima\"\nmsgstr \"Kagoshima\"\n\n#: jp/jp_prefectures.py:50\nmsgid \"Okinawa\"\nmsgstr \"Okinawa\"\n\n#: kw/forms.py:27\nmsgid \"Enter a valid Kuwaiti Civil ID number\"\nmsgstr \"Geçerli bir Kuveyt kimlik numarası girin\"\n\n#: mk/forms.py:18\nmsgid \"\"\n\"Identity card numbers must contain either 4 to 7 digits or an uppercase \"\n\"letter and 7 digits.\"\nmsgstr \"\"\n\"Kimlik kartı numaraları 4 ila 7 basamak veya büyük harf ve 7 basamak \"\n\"içermelidir.\"\n\n#: mk/forms.py:57 si/forms.py:24\nmsgid \"This field should contain exactly 13 digits.\"\nmsgstr \"Bu alan tam 13 basamak içermelidir.\"\n\n#: mk/forms.py:58\nmsgid \"The first 7 digits of the UMCN must represent a valid past date.\"\nmsgstr \"UMCN'nin ilk 7 basamaği geçerli bir geçmiş tarihi ifade etmelidir.\"\n\n#: mk/forms.py:59\nmsgid \"The UMCN is not valid.\"\nmsgstr \"UMCN geçerli değil.\"\n\n#: mk/mk_choices.py:10\nmsgid \"Aerodrom\"\nmsgstr \"Aerodrom\"\n\n#: mk/mk_choices.py:11\nmsgid \"Aračinovo\"\nmsgstr \"Aračinovo\"\n\n#: mk/mk_choices.py:12\nmsgid \"Berovo\"\nmsgstr \"Berovo\"\n\n#: mk/mk_choices.py:13\nmsgid \"Bitola\"\nmsgstr \"Bitola\"\n\n#: mk/mk_choices.py:14\nmsgid \"Bogdanci\"\nmsgstr \"Bogdanci\"\n\n#: mk/mk_choices.py:15\nmsgid \"Bogovinje\"\nmsgstr \"Bogovinje\"\n\n#: mk/mk_choices.py:16\nmsgid \"Bosilovo\"\nmsgstr \"Bosilovo\"\n\n#: mk/mk_choices.py:17\nmsgid \"Brvenica\"\nmsgstr \"Brvenica\"\n\n#: mk/mk_choices.py:18\nmsgid \"Butel\"\nmsgstr \"Butel\"\n\n#: mk/mk_choices.py:19\nmsgid \"Valandovo\"\nmsgstr \"Valandovo\"\n\n#: mk/mk_choices.py:20\nmsgid \"Vasilevo\"\nmsgstr \"Vasilevo\"\n\n#: mk/mk_choices.py:21\nmsgid \"Vevčani\"\nmsgstr \"Vevčani\"\n\n#: mk/mk_choices.py:22\nmsgid \"Veles\"\nmsgstr \"Veles\"\n\n#: mk/mk_choices.py:23\nmsgid \"Vinica\"\nmsgstr \"Vinica\"\n\n#: mk/mk_choices.py:24\nmsgid \"Vraneštica\"\nmsgstr \"Vraneštica\"\n\n#: mk/mk_choices.py:25\nmsgid \"Vrapčište\"\nmsgstr \"Vrapčište\"\n\n#: mk/mk_choices.py:26\nmsgid \"Gazi Baba\"\nmsgstr \"Gazi Baba\"\n\n#: mk/mk_choices.py:27\nmsgid \"Gevgelija\"\nmsgstr \"Gevgelija\"\n\n#: mk/mk_choices.py:28\nmsgid \"Gostivar\"\nmsgstr \"Gostivar\"\n\n#: mk/mk_choices.py:29\nmsgid \"Gradsko\"\nmsgstr \"Gradsko\"\n\n#: mk/mk_choices.py:30\nmsgid \"Debar\"\nmsgstr \"Debar\"\n\n#: mk/mk_choices.py:31\nmsgid \"Debarca\"\nmsgstr \"Debarca\"\n\n#: mk/mk_choices.py:32\nmsgid \"Delčevo\"\nmsgstr \"Delčevo\"\n\n#: mk/mk_choices.py:33\nmsgid \"Demir Kapija\"\nmsgstr \"Demir Kapija\"\n\n#: mk/mk_choices.py:34\nmsgid \"Demir Hisar\"\nmsgstr \"Demir Hisar\"\n\n#: mk/mk_choices.py:35\nmsgid \"Dolneni\"\nmsgstr \"Dolneni\"\n\n#: mk/mk_choices.py:36\nmsgid \"Drugovo\"\nmsgstr \"Drugovo\"\n\n#: mk/mk_choices.py:37\nmsgid \"Gjorče Petrov\"\nmsgstr \"Gjorče Petrov\"\n\n#: mk/mk_choices.py:38\nmsgid \"Želino\"\nmsgstr \"Želino\"\n\n#: mk/mk_choices.py:39\nmsgid \"Zajas\"\nmsgstr \"Zajas\"\n\n#: mk/mk_choices.py:40\nmsgid \"Zelenikovo\"\nmsgstr \"Zelenikovo\"\n\n#: mk/mk_choices.py:41\nmsgid \"Zrnovci\"\nmsgstr \"Zrnovci\"\n\n#: mk/mk_choices.py:42\nmsgid \"Ilinden\"\nmsgstr \"Ilinden\"\n\n#: mk/mk_choices.py:43\nmsgid \"Jegunovce\"\nmsgstr \"Jegunovce\"\n\n#: mk/mk_choices.py:44\nmsgid \"Kavadarci\"\nmsgstr \"Kavadarci\"\n\n#: mk/mk_choices.py:45\nmsgid \"Karbinci\"\nmsgstr \"Karbinci\"\n\n#: mk/mk_choices.py:46\nmsgid \"Karpoš\"\nmsgstr \"Karpoš\"\n\n#: mk/mk_choices.py:47\nmsgid \"Kisela Voda\"\nmsgstr \"Kisela Voda\"\n\n#: mk/mk_choices.py:48\nmsgid \"Kičevo\"\nmsgstr \"Kičevo\"\n\n#: mk/mk_choices.py:49\nmsgid \"Konče\"\nmsgstr \"Konče\"\n\n#: mk/mk_choices.py:50\nmsgid \"Koćani\"\nmsgstr \"Koćani\"\n\n#: mk/mk_choices.py:51\nmsgid \"Kratovo\"\nmsgstr \"Kratovo\"\n\n#: mk/mk_choices.py:52\nmsgid \"Kriva Palanka\"\nmsgstr \"Kriva Palanka\"\n\n#: mk/mk_choices.py:53\nmsgid \"Krivogaštani\"\nmsgstr \"Krivogaštani\"\n\n#: mk/mk_choices.py:54\nmsgid \"Kruševo\"\nmsgstr \"Kruševo\"\n\n#: mk/mk_choices.py:55\nmsgid \"Kumanovo\"\nmsgstr \"Kumanovo\"\n\n#: mk/mk_choices.py:56\nmsgid \"Lipkovo\"\nmsgstr \"Lipkovo\"\n\n#: mk/mk_choices.py:57\nmsgid \"Lozovo\"\nmsgstr \"Lozovo\"\n\n#: mk/mk_choices.py:58\nmsgid \"Mavrovo i Rostuša\"\nmsgstr \"Mavrovo i Rostuša\"\n\n#: mk/mk_choices.py:59\nmsgid \"Makedonska Kamenica\"\nmsgstr \"Makedonska Kamenica\"\n\n#: mk/mk_choices.py:60\nmsgid \"Makedonski Brod\"\nmsgstr \"Makedonski Brod\"\n\n#: mk/mk_choices.py:61\nmsgid \"Mogila\"\nmsgstr \"Mogila\"\n\n#: mk/mk_choices.py:62\nmsgid \"Negotino\"\nmsgstr \"Negotino\"\n\n#: mk/mk_choices.py:63\nmsgid \"Novaci\"\nmsgstr \"Novaci\"\n\n#: mk/mk_choices.py:64\nmsgid \"Novo Selo\"\nmsgstr \"Novo Selo\"\n\n#: mk/mk_choices.py:65\nmsgid \"Oslomej\"\nmsgstr \"Oslomej\"\n\n#: mk/mk_choices.py:66\nmsgid \"Ohrid\"\nmsgstr \"Ohrid\"\n\n#: mk/mk_choices.py:67\nmsgid \"Petrovec\"\nmsgstr \"Petrovec\"\n\n#: mk/mk_choices.py:68\nmsgid \"Pehčevo\"\nmsgstr \"Pehčevo\"\n\n#: mk/mk_choices.py:69\nmsgid \"Plasnica\"\nmsgstr \"Plasnica\"\n\n#: mk/mk_choices.py:70\nmsgid \"Prilep\"\nmsgstr \"Prilep\"\n\n#: mk/mk_choices.py:71\nmsgid \"Probištip\"\nmsgstr \"Probištip\"\n\n#: mk/mk_choices.py:72\nmsgid \"Radoviš\"\nmsgstr \"Radoviš\"\n\n#: mk/mk_choices.py:73\nmsgid \"Rankovce\"\nmsgstr \"Rankovce\"\n\n#: mk/mk_choices.py:74\nmsgid \"Resen\"\nmsgstr \"Resen\"\n\n#: mk/mk_choices.py:75\nmsgid \"Rosoman\"\nmsgstr \"Rosoman\"\n\n#: mk/mk_choices.py:76\nmsgid \"Saraj\"\nmsgstr \"Saraj\"\n\n#: mk/mk_choices.py:77\nmsgid \"Sveti Nikole\"\nmsgstr \"Sveti Nikole\"\n\n#: mk/mk_choices.py:78\nmsgid \"Sopište\"\nmsgstr \"Sopište\"\n\n#: mk/mk_choices.py:79\nmsgid \"Star Dojran\"\nmsgstr \"Star Dojran\"\n\n#: mk/mk_choices.py:80\nmsgid \"Staro Nagoričane\"\nmsgstr \"Staro Nagoričane\"\n\n#: mk/mk_choices.py:81\nmsgid \"Struga\"\nmsgstr \"Struga\"\n\n#: mk/mk_choices.py:82\nmsgid \"Strumica\"\nmsgstr \"Strumica\"\n\n#: mk/mk_choices.py:83\nmsgid \"Studeničani\"\nmsgstr \"Studeničani\"\n\n#: mk/mk_choices.py:84\nmsgid \"Tearce\"\nmsgstr \"Tearce\"\n\n#: mk/mk_choices.py:85\nmsgid \"Tetovo\"\nmsgstr \"Tetovo\"\n\n#: mk/mk_choices.py:86\nmsgid \"Centar\"\nmsgstr \"Centar\"\n\n#: mk/mk_choices.py:87\nmsgid \"Centar-Župa\"\nmsgstr \"Centar-Župa\"\n\n#: mk/mk_choices.py:88\nmsgid \"Čair\"\nmsgstr \"Čair\"\n\n#: mk/mk_choices.py:89\nmsgid \"Čaška\"\nmsgstr \"Čaška\"\n\n#: mk/mk_choices.py:90\nmsgid \"Češinovo-Obleševo\"\nmsgstr \"Češinovo-Obleševo\"\n\n#: mk/mk_choices.py:91\nmsgid \"Čučer-Sandevo\"\nmsgstr \"Čučer-Sandevo\"\n\n#: mk/mk_choices.py:92\nmsgid \"Štip\"\nmsgstr \"Štip\"\n\n#: mk/mk_choices.py:93\nmsgid \"Šuto Orizari\"\nmsgstr \"Šuto Orizari\"\n\n#: mk/models.py:11\nmsgid \"Macedonian identity card number\"\nmsgstr \"Makedon kimlik kartı numarası\"\n\n#: mk/models.py:25\nmsgid \"A Macedonian municipality (2 character code)\"\nmsgstr \"Bir Makedon Belediye (2 karakter kodu)\"\n\n#: mk/models.py:35\nmsgid \"Unique master citizen number (13 digits)\"\nmsgstr \"Benzersiz ana vatandaşlık numarası (13 haneli)\"\n\n#: mx/forms.py:67\nmsgid \"Enter a valid zip code in the format XXXXX.\"\nmsgstr \"XXXXX biçiminde geçerli bir posta kodu girin.\"\n\n#: mx/forms.py:110\nmsgid \"Enter a valid RFC.\"\nmsgstr \"Geçerli bir RFC girin.\"\n\n#: mx/forms.py:111\nmsgid \"Invalid checksum for RFC.\"\nmsgstr \"RFC için geçersiz sağlama.\"\n\n#: mx/forms.py:191\nmsgid \"Enter a valid CURP.\"\nmsgstr \"Geçerli bir CURP girin.\"\n\n#: mx/forms.py:192\nmsgid \"Invalid checksum for CURP.\"\nmsgstr \"CURP için geçersiz sağlama.\"\n\n#: mx/models.py:14\nmsgid \"Mexico state (three uppercase letters)\"\nmsgstr \"Meksika devleti (üç büyük harf)\"\n\n#: mx/models.py:27\nmsgid \"Mexico zip code\"\nmsgstr \"Meksika posta kodu\"\n\n#: mx/models.py:44\nmsgid \"Mexican RFC\"\nmsgstr \"Meksika RFC\"\n\n#: mx/models.py:61\nmsgid \"Mexican CURP\"\nmsgstr \"Meksika CURP\"\n\n#: mx/mx_states.py:14\nmsgid \"Aguascalientes\"\nmsgstr \"Aguascalientes\"\n\n#: mx/mx_states.py:15\nmsgid \"Baja California\"\nmsgstr \"Baja California\"\n\n#: mx/mx_states.py:16\nmsgid \"Baja California Sur\"\nmsgstr \"Baja California Sur\"\n\n#: mx/mx_states.py:17\nmsgid \"Campeche\"\nmsgstr \"Campeche\"\n\n#: mx/mx_states.py:18\nmsgid \"Chihuahua\"\nmsgstr \"Chihuahua\"\n\n#: mx/mx_states.py:19\nmsgid \"Chiapas\"\nmsgstr \"Chiapas\"\n\n#: mx/mx_states.py:20\nmsgid \"Coahuila\"\nmsgstr \"Coahuila\"\n\n#: mx/mx_states.py:21\nmsgid \"Colima\"\nmsgstr \"Colima\"\n\n#: mx/mx_states.py:22\nmsgid \"Distrito Federal\"\nmsgstr \"Distrito Federal\"\n\n#: mx/mx_states.py:23\nmsgid \"Durango\"\nmsgstr \"Durango\"\n\n#: mx/mx_states.py:24\nmsgid \"Guerrero\"\nmsgstr \"Guerrero\"\n\n#: mx/mx_states.py:25\nmsgid \"Guanajuato\"\nmsgstr \"Guanajuato\"\n\n#: mx/mx_states.py:26\nmsgid \"Hidalgo\"\nmsgstr \"Hidalgo\"\n\n#: mx/mx_states.py:27\nmsgid \"Jalisco\"\nmsgstr \"Jalisco\"\n\n#: mx/mx_states.py:28\nmsgid \"Estado de México\"\nmsgstr \"Estado de México\"\n\n#: mx/mx_states.py:29\nmsgid \"Michoacán\"\nmsgstr \"Michoacán\"\n\n#: mx/mx_states.py:30\nmsgid \"Morelos\"\nmsgstr \"Morelos\"\n\n#: mx/mx_states.py:31\nmsgid \"Nayarit\"\nmsgstr \"Nayarit\"\n\n#: mx/mx_states.py:32\nmsgid \"Nuevo León\"\nmsgstr \"Nuevo León\"\n\n#: mx/mx_states.py:33\nmsgid \"Oaxaca\"\nmsgstr \"Oaxaca\"\n\n#: mx/mx_states.py:34\nmsgid \"Puebla\"\nmsgstr \"Puebla\"\n\n#: mx/mx_states.py:35\nmsgid \"Querétaro\"\nmsgstr \"Querétaro\"\n\n#: mx/mx_states.py:36\nmsgid \"Quintana Roo\"\nmsgstr \"Quintana Roo\"\n\n#: mx/mx_states.py:37\nmsgid \"Sinaloa\"\nmsgstr \"Sinaloa\"\n\n#: mx/mx_states.py:38\nmsgid \"San Luis Potosí\"\nmsgstr \"San Luis Potosí\"\n\n#: mx/mx_states.py:39\nmsgid \"Sonora\"\nmsgstr \"Sonora\"\n\n#: mx/mx_states.py:40\nmsgid \"Tabasco\"\nmsgstr \"Tabasco\"\n\n#: mx/mx_states.py:41\nmsgid \"Tamaulipas\"\nmsgstr \"Tamaulipas\"\n\n#: mx/mx_states.py:42\nmsgid \"Tlaxcala\"\nmsgstr \"Tlaxcala\"\n\n#: mx/mx_states.py:43\nmsgid \"Veracruz\"\nmsgstr \"Veracruz\"\n\n#: mx/mx_states.py:44\nmsgid \"Yucatán\"\nmsgstr \"Yucatán\"\n\n#: mx/mx_states.py:45\nmsgid \"Zacatecas\"\nmsgstr \"Zacatecas\"\n\n#: nl/forms.py:26\nmsgid \"Enter a valid postal code\"\nmsgstr \"Geçerli bir posta kodu girin\"\n\n#: nl/forms.py:82\nmsgid \"Enter a valid SoFi number\"\nmsgstr \"Geçerli bir SoFi numarası girin\"\n\n#: nl/nl_provinces.py:4\nmsgid \"Drenthe\"\nmsgstr \"Drenthe\"\n\n#: nl/nl_provinces.py:5\nmsgid \"Flevoland\"\nmsgstr \"Flevoland\"\n\n#: nl/nl_provinces.py:6\nmsgid \"Friesland\"\nmsgstr \"Friesland\"\n\n#: nl/nl_provinces.py:7\nmsgid \"Gelderland\"\nmsgstr \"Gelderland\"\n\n#: nl/nl_provinces.py:8\nmsgid \"Groningen\"\nmsgstr \"Groningen\"\n\n#: nl/nl_provinces.py:10\nmsgid \"Noord-Brabant\"\nmsgstr \"Noord-Brabant\"\n\n#: nl/nl_provinces.py:11\nmsgid \"Noord-Holland\"\nmsgstr \"Noord-Holland\"\n\n#: nl/nl_provinces.py:12\nmsgid \"Overijssel\"\nmsgstr \"Overijssel\"\n\n#: nl/nl_provinces.py:13\nmsgid \"Utrecht\"\nmsgstr \"Utrecht\"\n\n#: nl/nl_provinces.py:14\nmsgid \"Zeeland\"\nmsgstr \"Zeeland\"\n\n#: nl/nl_provinces.py:15\nmsgid \"Zuid-Holland\"\nmsgstr \"Zuid-Holland\"\n\n#: no/forms.py:39\nmsgid \"Enter a valid Norwegian social security number.\"\nmsgstr \"Geçerli bir Norveç Sosyal Güvenlik numarası girin.\"\n\n#: pe/forms.py:28\nmsgid \"This field requires 8 digits.\"\nmsgstr \"Bu alan 8 rakam gerektirmektedir.\"\n\n#: pe/forms.py:56\nmsgid \"This field requires 11 digits.\"\nmsgstr \"Bu alan 11 rakam gerektirmektedir.\"\n\n#: pl/forms.py:42\nmsgid \"National Identification Number consists of 11 digits.\"\nmsgstr \"Ulusal Kimlik Numarası 11 rakamdan oluşmaktadır.\"\n\n#: pl/forms.py:43\nmsgid \"Wrong checksum for the National Identification Number.\"\nmsgstr \"Ulusal Kimlik Numarası için geçersiz sağlama toplamı.\"\n\n#: pl/forms.py:79\nmsgid \"National ID Card Number consists of 3 letters and 6 digits.\"\nmsgstr \"Ulusal Kimlik Kartı Numarası 3 harf ve 6 rakamdan oluşur.\"\n\n#: pl/forms.py:80\nmsgid \"Wrong checksum for the National ID Card Number.\"\nmsgstr \"Ulusal Kimlik Kartı Numarası yanlış sağlama toplamı.\"\n\n#: pl/forms.py:131\nmsgid \"\"\n\"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or \"\n\"XXXXXXXXXX.\"\nmsgstr \"\"\n\"XXX-XXX-XX-XX, XXX-XX-XX-XXX veya XXXXXXXXXX biçiminde bir vergi numarası \"\n\"alanı (NIP) girin.\"\n\n#: pl/forms.py:132\nmsgid \"Wrong checksum for the Tax Number (NIP).\"\nmsgstr \"Vergi Numarası (NIP) için geçersiz sağlama toplamı.\"\n\n#: pl/forms.py:171\nmsgid \"National Business Register Number (REGON) consists of 9 or 14 digits.\"\nmsgstr \"Ulusal İş Kayıt Numarası (REGON) 9 veya 17 rakamdan oluşmaktadır.\"\n\n#: pl/forms.py:172\nmsgid \"Wrong checksum for the National Business Register Number (REGON).\"\nmsgstr \"Ulusal İş Kayıt Numarası (REGON) için geçersiz sağlama toplamı.\"\n\n#: pl/forms.py:212\nmsgid \"Enter a postal code in the format XX-XXX.\"\nmsgstr \"XX-XXX formatında bir posta kodu girin.\"\n\n#: pl/pl_voivodeships.py:8\nmsgid \"Lower Silesia\"\nmsgstr \"Alt Silesia\"\n\n#: pl/pl_voivodeships.py:9\nmsgid \"Kuyavia-Pomerania\"\nmsgstr \"Kuyavia-Pomerania\"\n\n#: pl/pl_voivodeships.py:10\nmsgid \"Lublin\"\nmsgstr \"Lublin\"\n\n#: pl/pl_voivodeships.py:11\nmsgid \"Lubusz\"\nmsgstr \"Lubusz\"\n\n#: pl/pl_voivodeships.py:12\nmsgid \"Lodz\"\nmsgstr \"Lodz\"\n\n#: pl/pl_voivodeships.py:13\nmsgid \"Lesser Poland\"\nmsgstr \"Küçük Polonya\"\n\n#: pl/pl_voivodeships.py:14\nmsgid \"Masovia\"\nmsgstr \"Masovia\"\n\n#: pl/pl_voivodeships.py:15\nmsgid \"Opole\"\nmsgstr \"Opole\"\n\n#: pl/pl_voivodeships.py:16\nmsgid \"Subcarpatia\"\nmsgstr \"Subcarpatia\"\n\n#: pl/pl_voivodeships.py:17\nmsgid \"Podlasie\"\nmsgstr \"Podlasie\"\n\n#: pl/pl_voivodeships.py:18\nmsgid \"Pomerania\"\nmsgstr \"Pomerania\"\n\n#: pl/pl_voivodeships.py:19\nmsgid \"Silesia\"\nmsgstr \"Silesia\"\n\n#: pl/pl_voivodeships.py:20\nmsgid \"Swietokrzyskie\"\nmsgstr \"Swietokrzyskie\"\n\n#: pl/pl_voivodeships.py:21\nmsgid \"Warmia-Masuria\"\nmsgstr \"Warmia-Masuria\"\n\n#: pl/pl_voivodeships.py:22\nmsgid \"Greater Poland\"\nmsgstr \"Büyük Polonya\"\n\n#: pl/pl_voivodeships.py:23\nmsgid \"West Pomerania\"\nmsgstr \"Batı Pomerania\"\n\n#: pt/forms.py:19\nmsgid \"Enter a zip code in the format XXXX-XXX.\"\nmsgstr \"XXXX-XXX formatında posta kodu girin.\"\n\n#: pt/forms.py:39\nmsgid \"Phone numbers must have 9 digits, or start by + or 00.\"\nmsgstr \"\"\n\"Telefon numaraları 9 rakamdan oluşmalı, veyahut + veya 00 ile başlamalıdır.\"\n\n#: ro/forms.py:22\nmsgid \"Enter a valid CIF.\"\nmsgstr \"Geçerli bir CIF girin.\"\n\n#: ro/forms.py:59\nmsgid \"Enter a valid CNP.\"\nmsgstr \"Geçerli bir CNP girin.\"\n\n#: ro/forms.py:143\nmsgid \"Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format\"\nmsgstr \"ROXX-XXXX-XXXX-XXXX-XXXX-XXXX formatında geçerli bir IBAN giriniz\"\n\n#: ro/forms.py:175\nmsgid \"Phone numbers must be in XXXX-XXXXXX format.\"\nmsgstr \"Telefon numaraları XXXX-XXXXXX formatında olmalıdır.\"\n\n#: ro/forms.py:200\nmsgid \"Enter a valid postal code in the format XXXXXX\"\nmsgstr \"XXXXXX formatında bir posta kodu girin.\"\n\n#: ru/forms.py:37\nmsgid \"Enter a postal code in the format XXXXXX.\"\nmsgstr \"XXXXXX biçiminde bir posta kodunu girin.\"\n\n#: ru/forms.py:50\nmsgid \"Enter a passport number in the format XXXX XXXXXX.\"\nmsgstr \"XXXX XXXXXX biçiminde bir pasaport numarası girin.\"\n\n#: ru/forms.py:63\nmsgid \"Enter a passport number in the format XX XXXXXXX.\"\nmsgstr \"XX XXXXXXX biçiminde bir pasaport numarası girin.\"\n\n#: ru/ru_regions.py:10\nmsgid \"Central Federal County\"\nmsgstr \"Merkez Federal İlçe\"\n\n#: ru/ru_regions.py:11\nmsgid \"South Federal County\"\nmsgstr \"Güney Federal İlçe\"\n\n#: ru/ru_regions.py:12\nmsgid \"North-West Federal County\"\nmsgstr \"Kuzey-Batı Federal İlçe\"\n\n#: ru/ru_regions.py:13\nmsgid \"Far-East Federal County\"\nmsgstr \"Uzak-Doğu Federal İlçe\"\n\n#: ru/ru_regions.py:14\nmsgid \"Siberian Federal County\"\nmsgstr \"Sibirya Federal Vilayeti\"\n\n#: ru/ru_regions.py:15\nmsgid \"Ural Federal County\"\nmsgstr \"Ural Federal Vilayeti\"\n\n#: ru/ru_regions.py:16\nmsgid \"Privolzhsky Federal County\"\nmsgstr \"Privolzhsky Federal Vilayeti\"\n\n#: ru/ru_regions.py:17\nmsgid \"North-Caucasian Federal County\"\nmsgstr \"Kuzey Kafkasya Federal Vilayeti\"\n\n#: ru/ru_regions.py:21\nmsgid \"Moskva\"\nmsgstr \"Moskova\"\n\n#: ru/ru_regions.py:22\nmsgid \"Saint-Peterburg\"\nmsgstr \"Sankt Petersburg\"\n\n#: ru/ru_regions.py:23\nmsgid \"Moskovskaya oblast'\"\nmsgstr \"Moskova bölgesi\"\n\n#: ru/ru_regions.py:24\nmsgid \"Adygeya, Respublika\"\nmsgstr \"Adıgeya Cumhuriyyeti\"\n\n#: ru/ru_regions.py:25\nmsgid \"Bashkortostan, Respublika\"\nmsgstr \"Başkortostan Cumhuriyyeti\"\n\n#: ru/ru_regions.py:26\nmsgid \"Buryatia, Respublika\"\nmsgstr \"Buryatiya Cumhuriyyeti\"\n\n#: ru/ru_regions.py:27\nmsgid \"Altay, Respublika\"\nmsgstr \"Altay Cumhuriyyeti\"\n\n#: ru/ru_regions.py:28\nmsgid \"Dagestan, Respublika\"\nmsgstr \"Dağıstan, Respublika\"\n\n#: ru/ru_regions.py:29\nmsgid \"Ingushskaya Respublika\"\nmsgstr \"Ingushskaya Respublika\"\n\n#: ru/ru_regions.py:30\nmsgid \"Kabardino-Balkarskaya Respublika\"\nmsgstr \"Kabardey-Balkarskaya Respublika\"\n\n#: ru/ru_regions.py:31\nmsgid \"Kalmykia, Respublika\"\nmsgstr \"Kalmykia, Respublika\"\n\n#: ru/ru_regions.py:32\nmsgid \"Karachaevo-Cherkesskaya Respublika\"\nmsgstr \"Karaçay-Çerkezya Respublika\"\n\n#: ru/ru_regions.py:33\nmsgid \"Karelia, Respublika\"\nmsgstr \"Karelya, Respublika\"\n\n#: ru/ru_regions.py:34\nmsgid \"Komi, Respublika\"\nmsgstr \"Komi, Respublika\"\n\n#: ru/ru_regions.py:35\nmsgid \"Mariy Ehl, Respublika\"\nmsgstr \"Mari Ehl, Respublika\"\n\n#: ru/ru_regions.py:36\nmsgid \"Mordovia, Respublika\"\nmsgstr \"Mordovya, Respublika\"\n\n#: ru/ru_regions.py:37\nmsgid \"Sakha, Respublika (Yakutiya)\"\nmsgstr \"Saha, Respublika (Takutistan)\"\n\n#: ru/ru_regions.py:38\nmsgid \"Severnaya Osetia, Respublika (Alania)\"\nmsgstr \"Severnaya Osetya, Respublika (Alania)\"\n\n#: ru/ru_regions.py:39\nmsgid \"Tatarstan, Respublika\"\nmsgstr \"Tataristan, Respublika\"\n\n#: ru/ru_regions.py:40\nmsgid \"Tyva, Respublika (Tuva)\"\nmsgstr \"Tuva, Respublika (Tuva)\"\n\n#: ru/ru_regions.py:41\nmsgid \"Udmurtskaya Respublika\"\nmsgstr \"Udmurtskaya Respublika\"\n\n#: ru/ru_regions.py:42\nmsgid \"Khakassiya, Respublika\"\nmsgstr \"Khakassiya, Respublika\"\n\n#: ru/ru_regions.py:43\nmsgid \"Chechenskaya Respublika\"\nmsgstr \"Çeçenya Respublika\"\n\n#: ru/ru_regions.py:44\nmsgid \"Chuvashskaya Respublika\"\nmsgstr \"Chuvashskaya Respublika\"\n\n#: ru/ru_regions.py:45\nmsgid \"Altayskiy Kray\"\nmsgstr \"Altayskiy Kray\"\n\n#: ru/ru_regions.py:46\nmsgid \"Zabaykalskiy Kray\"\nmsgstr \"Zabaykalskiy Kray\"\n\n#: ru/ru_regions.py:47\nmsgid \"Kamchatskiy Kray\"\nmsgstr \"Kamchatskiy Kray\"\n\n#: ru/ru_regions.py:48\nmsgid \"Krasnodarskiy Kray\"\nmsgstr \"Krasnodarskiy Kray\"\n\n#: ru/ru_regions.py:49\nmsgid \"Krasnoyarskiy Kray\"\nmsgstr \"Krasnoyarskiy Kray\"\n\n#: ru/ru_regions.py:50\nmsgid \"Permskiy Kray\"\nmsgstr \"Permskiy Kray\"\n\n#: ru/ru_regions.py:51\nmsgid \"Primorskiy Kray\"\nmsgstr \"Primorskiy Kray\"\n\n#: ru/ru_regions.py:52\nmsgid \"Stavropol'siyy Kray\"\nmsgstr \"Stavropol'siyy Kray\"\n\n#: ru/ru_regions.py:53\nmsgid \"Khabarovskiy Kray\"\nmsgstr \"Khabarovskiy Kray\"\n\n#: ru/ru_regions.py:54\nmsgid \"Amurskaya oblast'\"\nmsgstr \"Amurskaya oblast'\"\n\n#: ru/ru_regions.py:55\nmsgid \"Arkhangel'skaya oblast'\"\nmsgstr \"Arkhangel'skaya oblast'\"\n\n#: ru/ru_regions.py:56\nmsgid \"Astrakhanskaya oblast'\"\nmsgstr \"Astrakhanskaya oblast'\"\n\n#: ru/ru_regions.py:57\nmsgid \"Belgorodskaya oblast'\"\nmsgstr \"Belgorodskaya oblast'\"\n\n#: ru/ru_regions.py:58\nmsgid \"Bryanskaya oblast'\"\nmsgstr \"Bryanskaya oblast'\"\n\n#: ru/ru_regions.py:59\nmsgid \"Vladimirskaya oblast'\"\nmsgstr \"Vladimirskaya oblast'\"\n\n#: ru/ru_regions.py:60\nmsgid \"Volgogradskaya oblast'\"\nmsgstr \"Volgogradskaya oblast'\"\n\n#: ru/ru_regions.py:61\nmsgid \"Vologodskaya oblast'\"\nmsgstr \"Vologodskaya oblast'\"\n\n#: ru/ru_regions.py:62\nmsgid \"Voronezhskaya oblast'\"\nmsgstr \"Voronezhskaya oblast'\"\n\n#: ru/ru_regions.py:63\nmsgid \"Ivanovskaya oblast'\"\nmsgstr \"Ivanovskaya oblast'\"\n\n#: ru/ru_regions.py:64\nmsgid \"Irkutskaya oblast'\"\nmsgstr \"Irkutskaya oblast'\"\n\n#: ru/ru_regions.py:65\nmsgid \"Kaliningradskaya oblast'\"\nmsgstr \"Kaliningradskaya oblast'\"\n\n#: ru/ru_regions.py:66\nmsgid \"Kaluzhskaya oblast'\"\nmsgstr \"Kaluzhskaya oblast'\"\n\n#: ru/ru_regions.py:67\nmsgid \"Kemerovskaya oblast'\"\nmsgstr \"Kemerovo bölgesi\"\n\n#: ru/ru_regions.py:68\nmsgid \"Kirovskaya oblast'\"\nmsgstr \"Kirov bölgesi\"\n\n#: ru/ru_regions.py:69\nmsgid \"Kostromskaya oblast'\"\nmsgstr \"Kostromskaya bölgesi\"\n\n#: ru/ru_regions.py:70\nmsgid \"Kurganskaya oblast'\"\nmsgstr \"Kurganskaya bölgesi\"\n\n#: ru/ru_regions.py:71\nmsgid \"Kurskaya oblast'\"\nmsgstr \"Kursk bölgesi\"\n\n#: ru/ru_regions.py:72\nmsgid \"Leningradskaya oblast'\"\nmsgstr \"Leningrad bölgesi\"\n\n#: ru/ru_regions.py:73\nmsgid \"Lipeckaya oblast'\"\nmsgstr \"Lipeck bölgesi\"\n\n#: ru/ru_regions.py:74\nmsgid \"Magadanskaya oblast'\"\nmsgstr \"Magadansk bölgesi\"\n\n#: ru/ru_regions.py:75\nmsgid \"Murmanskaya oblast'\"\nmsgstr \"Murmansk bölgesi\"\n\n#: ru/ru_regions.py:76\nmsgid \"Nizhegorodskaja oblast'\"\nmsgstr \"Nizhegorodsk bölgesi\"\n\n#: ru/ru_regions.py:77\nmsgid \"Novgorodskaya oblast'\"\nmsgstr \"Novgorod bölgesi\"\n\n#: ru/ru_regions.py:78\nmsgid \"Novosibirskaya oblast'\"\nmsgstr \"Novosibirsk bölgesi\"\n\n#: ru/ru_regions.py:79\nmsgid \"Omskaya oblast'\"\nmsgstr \"Omsk bölgesi\"\n\n#: ru/ru_regions.py:80\nmsgid \"Orenburgskaya oblast'\"\nmsgstr \"Orenburgsk bölgesi\"\n\n#: ru/ru_regions.py:81\nmsgid \"Orlovskaya oblast'\"\nmsgstr \"Orlovsk bölgesi\"\n\n#: ru/ru_regions.py:82\nmsgid \"Penzenskaya oblast'\"\nmsgstr \"Penzenskaya bölgesi\"\n\n#: ru/ru_regions.py:83\nmsgid \"Pskovskaya oblast'\"\nmsgstr \"Pskovskaya bölgesi\"\n\n#: ru/ru_regions.py:84\nmsgid \"Rostovskaya oblast'\"\nmsgstr \"Rostov bölgesi\"\n\n#: ru/ru_regions.py:85\nmsgid \"Rjazanskaya oblast'\"\nmsgstr \"Rjazan bölgesi\"\n\n#: ru/ru_regions.py:86\nmsgid \"Samarskaya oblast'\"\nmsgstr \"Samara bölgesi\"\n\n#: ru/ru_regions.py:87\nmsgid \"Saratovskaya oblast'\"\nmsgstr \"Saratov bölgesi\"\n\n#: ru/ru_regions.py:88\nmsgid \"Sakhalinskaya oblast'\"\nmsgstr \"Sakhalinsk bölgesi\"\n\n#: ru/ru_regions.py:89\nmsgid \"Sverdlovskaya oblast'\"\nmsgstr \"Sverdlovsk bölgesi\"\n\n#: ru/ru_regions.py:90\nmsgid \"Smolenskaya oblast'\"\nmsgstr \"Smolensk bölgesi\"\n\n#: ru/ru_regions.py:91\nmsgid \"Tambovskaya oblast'\"\nmsgstr \"Tambov bölgesi\"\n\n#: ru/ru_regions.py:92\nmsgid \"Tverskaya oblast'\"\nmsgstr \"Tversk bölgesi\"\n\n#: ru/ru_regions.py:93\nmsgid \"Tomskaya oblast'\"\nmsgstr \"Tomsk bölgesi\"\n\n#: ru/ru_regions.py:94\nmsgid \"Tul'skaya oblast'\"\nmsgstr \"Tula bölgesi\"\n\n#: ru/ru_regions.py:95\nmsgid \"Tyumenskaya oblast'\"\nmsgstr \"Tyumen bölgesi\"\n\n#: ru/ru_regions.py:96\nmsgid \"Ul'ianovskaya oblast'\"\nmsgstr \"Ul'ianovskaya bölgesi\"\n\n#: ru/ru_regions.py:97\nmsgid \"Chelyabinskaya oblast'\"\nmsgstr \"Chelyabinsk bölgesi\"\n\n#: ru/ru_regions.py:98\nmsgid \"Yaroslavskaya oblast'\"\nmsgstr \"Yaroslavl bölgesi\"\n\n#: ru/ru_regions.py:99\nmsgid \"Evreyskaya avtonomnaja oblast'\"\nmsgstr \"Evreyskaya özerk bölgesi\"\n\n#: ru/ru_regions.py:100\nmsgid \"Neneckiy autonomnyy okrug\"\nmsgstr \"Neneckiy özerk bölgesi\"\n\n#: ru/ru_regions.py:101\nmsgid \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\nmsgstr \"Khanty-Mansiyskiy özerk bölgesi\"\n\n#: ru/ru_regions.py:102\nmsgid \"Chukotskiy avtonomnyy okrug\"\nmsgstr \"Chukotskiy özerk bölgesi\"\n\n#: ru/ru_regions.py:103\nmsgid \"Yamalo-Neneckiy avtonomnyy okrug\"\nmsgstr \"Yamalo-Neneckiy özerk bölgesi\"\n\n#: se/forms.py:54\nmsgid \"Enter a valid Swedish organisation number.\"\nmsgstr \"Geçerli bir İsveç organizasyon numarası girin.\"\n\n#: se/forms.py:111\nmsgid \"Enter a valid Swedish personal identity number.\"\nmsgstr \"Geçerli bir İsveç kimlik numarası girin.\"\n\n#: se/forms.py:112\nmsgid \"Co-ordination numbers are not allowed.\"\nmsgstr \"Kordinat numaralarına izin verilmemektedir\"\n\n#: se/forms.py:154\nmsgid \"Enter a Swedish postal code in the format XXXXX.\"\nmsgstr \"XXXXX formatında geçerli bir İsveç posta kodu girin.\"\n\n#: se/se_counties.py:16\nmsgid \"Stockholm\"\nmsgstr \"Stockholm\"\n\n#: se/se_counties.py:17\nmsgid \"Västerbotten\"\nmsgstr \"Västerbotten\"\n\n#: se/se_counties.py:18\nmsgid \"Norrbotten\"\nmsgstr \"Norrbotten\"\n\n#: se/se_counties.py:19\nmsgid \"Uppsala\"\nmsgstr \"Uppsala\"\n\n#: se/se_counties.py:20\nmsgid \"Södermanland\"\nmsgstr \"Södermanland\"\n\n#: se/se_counties.py:21\nmsgid \"Östergötland\"\nmsgstr \"Östergötland\"\n\n#: se/se_counties.py:22\nmsgid \"Jönköping\"\nmsgstr \"Jönköping\"\n\n#: se/se_counties.py:23\nmsgid \"Kronoberg\"\nmsgstr \"Kronoberg\"\n\n#: se/se_counties.py:24\nmsgid \"Kalmar\"\nmsgstr \"Kalmar\"\n\n#: se/se_counties.py:25\nmsgid \"Gotland\"\nmsgstr \"Gotland\"\n\n#: se/se_counties.py:26\nmsgid \"Blekinge\"\nmsgstr \"Blekinge\"\n\n#: se/se_counties.py:27\nmsgid \"Skåne\"\nmsgstr \"Skåne\"\n\n#: se/se_counties.py:28\nmsgid \"Halland\"\nmsgstr \"Halland\"\n\n#: se/se_counties.py:29\nmsgid \"Västra Götaland\"\nmsgstr \"Västra Götaland\"\n\n#: se/se_counties.py:30\nmsgid \"Värmland\"\nmsgstr \"Värmland\"\n\n#: se/se_counties.py:31\nmsgid \"Örebro\"\nmsgstr \"Örebro\"\n\n#: se/se_counties.py:32\nmsgid \"Västmanland\"\nmsgstr \"Västmanland\"\n\n#: se/se_counties.py:33\nmsgid \"Dalarna\"\nmsgstr \"Dalarna\"\n\n#: se/se_counties.py:34\nmsgid \"Gävleborg\"\nmsgstr \"Gävleborg\"\n\n#: se/se_counties.py:35\nmsgid \"Västernorrland\"\nmsgstr \"Västernorrland\"\n\n#: se/se_counties.py:36\nmsgid \"Jämtland\"\nmsgstr \"Jämtland\"\n\n#: si/forms.py:25\nmsgid \"The first 7 digits of the EMSO must represent a valid past date.\"\nmsgstr \"EMSO'nun ilk 7 basamaği geçerli bir geçmiş tarihi ifade etmelidir.\"\n\n#: si/forms.py:26\nmsgid \"The EMSO is not valid.\"\nmsgstr \"EMSO geçerli değil.\"\n\n#: si/forms.py:86\nmsgid \"Enter a valid tax number in form SIXXXXXXXX\"\nmsgstr \"SIXXXXXXXX biçiminde geçerli bir vergi numarası girin\"\n\n#: si/forms.py:151\nmsgid \"Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.\"\nmsgstr \"+386 XXXXXXXX veya 0XXXXXXXX biçiminde telefon numarasını girin.\"\n\n#: sk/sk_districts.py:8\nmsgid \"Banska Bystrica\"\nmsgstr \"Banska Bystrica\"\n\n#: sk/sk_districts.py:9\nmsgid \"Banska Stiavnica\"\nmsgstr \"Banska Stiavnica\"\n\n#: sk/sk_districts.py:10\nmsgid \"Bardejov\"\nmsgstr \"Bardejov\"\n\n#: sk/sk_districts.py:11\nmsgid \"Banovce nad Bebravou\"\nmsgstr \"Banovce nad Bebravou\"\n\n#: sk/sk_districts.py:12\nmsgid \"Brezno\"\nmsgstr \"Brezno\"\n\n#: sk/sk_districts.py:13\nmsgid \"Bratislava I\"\nmsgstr \"Bratislava I\"\n\n#: sk/sk_districts.py:14\nmsgid \"Bratislava II\"\nmsgstr \"Bratislava II\"\n\n#: sk/sk_districts.py:15\nmsgid \"Bratislava III\"\nmsgstr \"Bratislava III\"\n\n#: sk/sk_districts.py:16\nmsgid \"Bratislava IV\"\nmsgstr \"Bratislava IV\"\n\n#: sk/sk_districts.py:17\nmsgid \"Bratislava V\"\nmsgstr \"Bratislava V\"\n\n#: sk/sk_districts.py:18\nmsgid \"Bytca\"\nmsgstr \"Bytca\"\n\n#: sk/sk_districts.py:19\nmsgid \"Cadca\"\nmsgstr \"Cadca\"\n\n#: sk/sk_districts.py:20\nmsgid \"Detva\"\nmsgstr \"Detva\"\n\n#: sk/sk_districts.py:21\nmsgid \"Dolny Kubin\"\nmsgstr \"Dolny Kubin\"\n\n#: sk/sk_districts.py:22\nmsgid \"Dunajska Streda\"\nmsgstr \"Dunajska Streda\"\n\n#: sk/sk_districts.py:23\nmsgid \"Galanta\"\nmsgstr \"Galanta\"\n\n#: sk/sk_districts.py:24\nmsgid \"Gelnica\"\nmsgstr \"Gelnica\"\n\n#: sk/sk_districts.py:25\nmsgid \"Hlohovec\"\nmsgstr \"Hlohovec\"\n\n#: sk/sk_districts.py:26\nmsgid \"Humenne\"\nmsgstr \"Humenne\"\n\n#: sk/sk_districts.py:27\nmsgid \"Ilava\"\nmsgstr \"Ilava\"\n\n#: sk/sk_districts.py:28\nmsgid \"Kezmarok\"\nmsgstr \"Kezmarok\"\n\n#: sk/sk_districts.py:29\nmsgid \"Komarno\"\nmsgstr \"Komarno\"\n\n#: sk/sk_districts.py:30\nmsgid \"Kosice I\"\nmsgstr \"Kosice I\"\n\n#: sk/sk_districts.py:31\nmsgid \"Kosice II\"\nmsgstr \"Kosice II\"\n\n#: sk/sk_districts.py:32\nmsgid \"Kosice III\"\nmsgstr \"Kosice III\"\n\n#: sk/sk_districts.py:33\nmsgid \"Kosice IV\"\nmsgstr \"Kosice IV\"\n\n#: sk/sk_districts.py:34\nmsgid \"Kosice - okolie\"\nmsgstr \"Kosice - okolie\"\n\n#: sk/sk_districts.py:35\nmsgid \"Krupina\"\nmsgstr \"Krupina\"\n\n#: sk/sk_districts.py:36\nmsgid \"Kysucke Nove Mesto\"\nmsgstr \"Kysucke Nove Mesto\"\n\n#: sk/sk_districts.py:37\nmsgid \"Levice\"\nmsgstr \"Levice\"\n\n#: sk/sk_districts.py:38\nmsgid \"Levoca\"\nmsgstr \"Levoca\"\n\n#: sk/sk_districts.py:39\nmsgid \"Liptovsky Mikulas\"\nmsgstr \"Liptovsky Mikulas\"\n\n#: sk/sk_districts.py:40\nmsgid \"Lucenec\"\nmsgstr \"Lucenec\"\n\n#: sk/sk_districts.py:41\nmsgid \"Malacky\"\nmsgstr \"Malacky\"\n\n#: sk/sk_districts.py:42\nmsgid \"Martin\"\nmsgstr \"Martin\"\n\n#: sk/sk_districts.py:43\nmsgid \"Medzilaborce\"\nmsgstr \"Medzilaborce\"\n\n#: sk/sk_districts.py:44\nmsgid \"Michalovce\"\nmsgstr \"Michalovce\"\n\n#: sk/sk_districts.py:45\nmsgid \"Myjava\"\nmsgstr \"Myjava\"\n\n#: sk/sk_districts.py:46\nmsgid \"Namestovo\"\nmsgstr \"Namestovo\"\n\n#: sk/sk_districts.py:47\nmsgid \"Nitra\"\nmsgstr \"Nitra\"\n\n#: sk/sk_districts.py:48\nmsgid \"Nove Mesto nad Vahom\"\nmsgstr \"Nove Mesto nad Vahom\"\n\n#: sk/sk_districts.py:49\nmsgid \"Nove Zamky\"\nmsgstr \"Nove Zamky\"\n\n#: sk/sk_districts.py:50\nmsgid \"Partizanske\"\nmsgstr \"Partizanske\"\n\n#: sk/sk_districts.py:51\nmsgid \"Pezinok\"\nmsgstr \"Pezinok\"\n\n#: sk/sk_districts.py:52\nmsgid \"Piestany\"\nmsgstr \"Piestany\"\n\n#: sk/sk_districts.py:53\nmsgid \"Poltar\"\nmsgstr \"Poltar\"\n\n#: sk/sk_districts.py:54\nmsgid \"Poprad\"\nmsgstr \"Poprad\"\n\n#: sk/sk_districts.py:55\nmsgid \"Povazska Bystrica\"\nmsgstr \"Povazska Bystrica\"\n\n#: sk/sk_districts.py:56\nmsgid \"Presov\"\nmsgstr \"Presov\"\n\n#: sk/sk_districts.py:57\nmsgid \"Prievidza\"\nmsgstr \"Prievidza\"\n\n#: sk/sk_districts.py:58\nmsgid \"Puchov\"\nmsgstr \"Puchov\"\n\n#: sk/sk_districts.py:59\nmsgid \"Revuca\"\nmsgstr \"Revuca\"\n\n#: sk/sk_districts.py:60\nmsgid \"Rimavska Sobota\"\nmsgstr \"Rimavska Sobota\"\n\n#: sk/sk_districts.py:61\nmsgid \"Roznava\"\nmsgstr \"Roznava\"\n\n#: sk/sk_districts.py:62\nmsgid \"Ruzomberok\"\nmsgstr \"Ruzomberok\"\n\n#: sk/sk_districts.py:63\nmsgid \"Sabinov\"\nmsgstr \"Sabinov\"\n\n#: sk/sk_districts.py:64\nmsgid \"Senec\"\nmsgstr \"Senec\"\n\n#: sk/sk_districts.py:65\nmsgid \"Senica\"\nmsgstr \"Senica\"\n\n#: sk/sk_districts.py:66\nmsgid \"Skalica\"\nmsgstr \"Skalica\"\n\n#: sk/sk_districts.py:67\nmsgid \"Snina\"\nmsgstr \"Snina\"\n\n#: sk/sk_districts.py:68\nmsgid \"Sobrance\"\nmsgstr \"Sobrance\"\n\n#: sk/sk_districts.py:69\nmsgid \"Spisska Nova Ves\"\nmsgstr \"Spisska Nova Ves\"\n\n#: sk/sk_districts.py:70\nmsgid \"Stara Lubovna\"\nmsgstr \"Stara Lubovna\"\n\n#: sk/sk_districts.py:71\nmsgid \"Stropkov\"\nmsgstr \"Stropkov\"\n\n#: sk/sk_districts.py:72\nmsgid \"Svidnik\"\nmsgstr \"Svidnik\"\n\n#: sk/sk_districts.py:73\nmsgid \"Sala\"\nmsgstr \"Sala\"\n\n#: sk/sk_districts.py:74\nmsgid \"Topolcany\"\nmsgstr \"Topolcany\"\n\n#: sk/sk_districts.py:75\nmsgid \"Trebisov\"\nmsgstr \"Trebisov\"\n\n#: sk/sk_districts.py:76\nmsgid \"Trencin\"\nmsgstr \"Trencin\"\n\n#: sk/sk_districts.py:77\nmsgid \"Trnava\"\nmsgstr \"Trnava\"\n\n#: sk/sk_districts.py:78\nmsgid \"Turcianske Teplice\"\nmsgstr \"Turcianske Teplice\"\n\n#: sk/sk_districts.py:79\nmsgid \"Tvrdosin\"\nmsgstr \"Tvrdosin\"\n\n#: sk/sk_districts.py:80\nmsgid \"Velky Krtis\"\nmsgstr \"Velky Krtis\"\n\n#: sk/sk_districts.py:81\nmsgid \"Vranov nad Toplou\"\nmsgstr \"Vranov nad Toplou\"\n\n#: sk/sk_districts.py:82\nmsgid \"Zlate Moravce\"\nmsgstr \"Zlate Moravce\"\n\n#: sk/sk_districts.py:83\nmsgid \"Zvolen\"\nmsgstr \"Zvolen\"\n\n#: sk/sk_districts.py:84\nmsgid \"Zarnovica\"\nmsgstr \"Zarnovica\"\n\n#: sk/sk_districts.py:85\nmsgid \"Ziar nad Hronom\"\nmsgstr \"Ziar nad Hronom\"\n\n#: sk/sk_districts.py:86\nmsgid \"Zilina\"\nmsgstr \"Zilina\"\n\n#: sk/sk_regions.py:8\nmsgid \"Banska Bystrica region\"\nmsgstr \"Banska Bystrica bölgesi\"\n\n#: sk/sk_regions.py:9\nmsgid \"Bratislava region\"\nmsgstr \"Bratislava region\"\n\n#: sk/sk_regions.py:10\nmsgid \"Kosice region\"\nmsgstr \"Kosice bölgesi\"\n\n#: sk/sk_regions.py:11\nmsgid \"Nitra region\"\nmsgstr \"Nitra region\"\n\n#: sk/sk_regions.py:12\nmsgid \"Presov region\"\nmsgstr \"Presov bölgesi\"\n\n#: sk/sk_regions.py:13\nmsgid \"Trencin region\"\nmsgstr \"Trencin bölgesi\"\n\n#: sk/sk_regions.py:14\nmsgid \"Trnava region\"\nmsgstr \"Trnava bölgesi\"\n\n#: sk/sk_regions.py:15\nmsgid \"Zilina region\"\nmsgstr \"Zilina bölgesi\"\n\n#: tr/forms.py:21\nmsgid \"Enter a postal code in the format XXXXX.\"\nmsgstr \"XXXXX formatında bir posta kodu giriniz.\"\n\n#: tr/forms.py:42\nmsgid \"Phone numbers must be in 0XXX XXX XXXX format.\"\nmsgstr \"Telefon numaraları 0XXX XXX XXXX formatında olmalıdır.\"\n\n#: tr/forms.py:69\nmsgid \"Enter a valid Turkish Identification number.\"\nmsgstr \"Lütfen geçerli TC kimlik numarası giriniz.\"\n\n#: tr/forms.py:70\nmsgid \"Turkish Identification number must be 11 digits.\"\nmsgstr \"TC kimlik numarası 11 karakterden oluşmaktadır.\"\n\n#: us/forms.py:21\nmsgid \"Enter a zip code in the format XXXXX or XXXXX-XXXX.\"\nmsgstr \"XXXXX ya da XXXXX-XXXX biçiminde bir posta kodu yazın.\"\n\n#: us/forms.py:59\nmsgid \"Enter a valid U.S. Social Security number in XXX-XX-XXXX format.\"\nmsgstr \"\"\n\"XXX-XX-XXXX formatında geçerli bir A.B.D. Sosyal Güvenlik Numarası giriniz.\"\n\n#: us/forms.py:92\nmsgid \"Enter a U.S. state or territory.\"\nmsgstr \"ABD devlet veya bölge adı girin.\"\n\n#: us/models.py:8\nmsgid \"U.S. state (two uppercase letters)\"\nmsgstr \"Şehir Kodu (iki karakter)\"\n\n#: us/models.py:17\nmsgid \"U.S. postal code (two uppercase letters)\"\nmsgstr \"A.B.D. posta kodu (iki büyük harf)\"\n\n#: us/models.py:26\nmsgid \"Phone number\"\nmsgstr \"Telefon numarası\"\n\n#: uy/forms.py:29\nmsgid \"Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.\"\nmsgstr \"X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX formatında geçerli bir CI girin.\"\n\n#: uy/forms.py:31\nmsgid \"Enter a valid CI number.\"\nmsgstr \"Geçerli bir CI numarası girin.\"\n\n#: za/forms.py:22\nmsgid \"Enter a valid South African ID number\"\nmsgstr \"Geçerli bir Güney Afrika Cumhuriyeti kimlik numarası girin\"\n\n#: za/forms.py:56\nmsgid \"Enter a valid South African postal code\"\nmsgstr \"Geçerli bir Güney Afrika Cumhuriyeti posta kodu girin\"\n\n#: za/za_provinces.py:4\nmsgid \"Eastern Cape\"\nmsgstr \"Doğu Cape\"\n\n#: za/za_provinces.py:5\nmsgid \"Free State\"\nmsgstr \"Free State\"\n\n#: za/za_provinces.py:6\nmsgid \"Gauteng\"\nmsgstr \"Gauteng\"\n\n#: za/za_provinces.py:7\nmsgid \"KwaZulu-Natal\"\nmsgstr \"KwaZulu-Natal\"\n\n#: za/za_provinces.py:8\nmsgid \"Limpopo\"\nmsgstr \"Limpopo\"\n\n#: za/za_provinces.py:9\nmsgid \"Mpumalanga\"\nmsgstr \"Mpumalanga\"\n\n#: za/za_provinces.py:10\nmsgid \"Northern Cape\"\nmsgstr \"Northern Cape\"\n\n#: za/za_provinces.py:11\nmsgid \"North West\"\nmsgstr \"Kuzey Batı\"\n\n#: za/za_provinces.py:12\nmsgid \"Western Cape\"\nmsgstr \"Batı Cape\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/locale/uk/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Sergey Lysach <sergikoff88@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-10-17 09:17+0000\\n\"\n\"Last-Translator: Sergey Lysach <sergikoff88@gmail.com>\\n\"\n\"Language-Team: Ukrainian (http://www.transifex.com/projects/p/django/\"\n\"language/uk/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: uk\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: ar/forms.py:30\nmsgid \"Enter a postal code in the format NNNN or ANNNNAAA.\"\nmsgstr \"Введіть поштовий індекс у форматі NNNN або ANNNNAAA.\"\n\n#: ar/forms.py:52 br/forms.py:95 br/forms.py:134 pe/forms.py:27 pe/forms.py:55\nmsgid \"This field requires only numbers.\"\nmsgstr \"В це поле можна вводити тільки числа.\"\n\n#: ar/forms.py:53\nmsgid \"This field requires 7 or 8 digits.\"\nmsgstr \"В це поле можна вводити тільки 7 або 8 цифр.\"\n\n#: ar/forms.py:82\nmsgid \"Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.\"\nmsgstr \"Введіть правильний CUIT у форматі XX-XXXXXXXX-X або XXXXXXXXXXXX.\"\n\n#: ar/forms.py:83\nmsgid \"Invalid CUIT.\"\nmsgstr \"Невірний CUIT.\"\n\n#: ar/forms.py:84\nmsgid \"Invalid legal type. Type must be 27, 20, 23 or 30.\"\nmsgstr \"\"\n\n#: at/at_states.py:5\nmsgid \"Burgenland\"\nmsgstr \"Бургенленд\"\n\n#: at/at_states.py:6\nmsgid \"Carinthia\"\nmsgstr \"Каринтія\"\n\n#: at/at_states.py:7\nmsgid \"Lower Austria\"\nmsgstr \"Нижня Австрія\"\n\n#: at/at_states.py:8\nmsgid \"Upper Austria\"\nmsgstr \"Верхня Австрія\"\n\n#: at/at_states.py:9\nmsgid \"Salzburg\"\nmsgstr \"Зальцбург\"\n\n#: at/at_states.py:10\nmsgid \"Styria\"\nmsgstr \"Штирія\"\n\n#: at/at_states.py:11\nmsgid \"Tyrol\"\nmsgstr \"Тіроль\"\n\n#: at/at_states.py:12\nmsgid \"Vorarlberg\"\nmsgstr \"Форарльберг\"\n\n#: at/at_states.py:13\nmsgid \"Vienna\"\nmsgstr \"Відень\"\n\n#: at/forms.py:22 ch/forms.py:22 no/forms.py:19\nmsgid \"Enter a zip code in the format XXXX.\"\nmsgstr \"Введіть поштовий індекс у форматі ХХХХ.\"\n\n#: at/forms.py:50\nmsgid \"Enter a valid Austrian Social Security Number in XXXX XXXXXX format.\"\nmsgstr \"\"\n\"Введіть правильний австрійський номер соціального страхування в форматі XXXX \"\n\"XXXXXX.\"\n\n#: au/forms.py:26\nmsgid \"Enter a 4 digit postcode.\"\nmsgstr \"\"\n\n#: au/models.py:9\nmsgid \"Australian State\"\nmsgstr \"\"\n\n#: au/models.py:19\nmsgid \"Australian Postcode\"\nmsgstr \"\"\n\n#: au/models.py:33\nmsgid \"Australian Phone number\"\nmsgstr \"\"\n\n#: be/be_provinces.py:5\nmsgid \"Antwerp\"\nmsgstr \"\"\n\n#: be/be_provinces.py:6\nmsgid \"Brussels\"\nmsgstr \"Брюссель\"\n\n#: be/be_provinces.py:7\nmsgid \"East Flanders\"\nmsgstr \"\"\n\n#: be/be_provinces.py:8\nmsgid \"Flemish Brabant\"\nmsgstr \"\"\n\n#: be/be_provinces.py:9\nmsgid \"Hainaut\"\nmsgstr \"\"\n\n#: be/be_provinces.py:10\nmsgid \"Liege\"\nmsgstr \"Льєж\"\n\n#: be/be_provinces.py:11 nl/nl_provinces.py:9\nmsgid \"Limburg\"\nmsgstr \"Лімбурґ\"\n\n#: be/be_provinces.py:12\nmsgid \"Luxembourg\"\nmsgstr \"Люксембург\"\n\n#: be/be_provinces.py:13\nmsgid \"Namur\"\nmsgstr \"\"\n\n#: be/be_provinces.py:14\nmsgid \"Walloon Brabant\"\nmsgstr \"\"\n\n#: be/be_provinces.py:15\nmsgid \"West Flanders\"\nmsgstr \"\"\n\n#: be/be_regions.py:5\nmsgid \"Brussels Capital Region\"\nmsgstr \"\"\n\n#: be/be_regions.py:6\nmsgid \"Flemish Region\"\nmsgstr \"\"\n\n#: be/be_regions.py:7\nmsgid \"Wallonia\"\nmsgstr \"\"\n\n#: be/forms.py:25\nmsgid \"Enter a valid postal code in the range and format 1XXX - 9XXX.\"\nmsgstr \"\"\n\n#: be/forms.py:48\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\nmsgstr \"\"\n\n#: br/forms.py:22\nmsgid \"Enter a zip code in the format XXXXX-XXX.\"\nmsgstr \"Введіть поштовий індекс у форматі XXXXX-XXX.\"\n\n#: br/forms.py:31\nmsgid \"Phone numbers must be in XX-XXXX-XXXX format.\"\nmsgstr \"Телефонні номери мають бути у форматі XX-XXXX-XXXX.\"\n\n#: br/forms.py:58\nmsgid \"\"\n\"Select a valid brazilian state. That state is not one of the available \"\n\"states.\"\nmsgstr \"\"\n\"Оберіть правильний бразильський штат. Штата, який ви обрали, не має серед \"\n\"представлених тут.\"\n\n#: br/forms.py:93\nmsgid \"Invalid CPF number.\"\nmsgstr \"Помилковий номер CPF.\"\n\n#: br/forms.py:94\nmsgid \"This field requires at most 11 digits or 14 characters.\"\nmsgstr \"Це поле вимагає максимум 11 цифр або 14 символів.\"\n\n#: br/forms.py:133\nmsgid \"Invalid CNPJ number.\"\nmsgstr \"Помилковий номер CNPJ.\"\n\n#: br/forms.py:135\nmsgid \"This field requires at least 14 digits\"\nmsgstr \"Це поле вимагає як мінімум 14 цифр\"\n\n#: ca/forms.py:29\nmsgid \"Enter a postal code in the format XXX XXX.\"\nmsgstr \"Введіть поштовий індекс у форматі XXX XXX.\"\n\n#: ca/forms.py:47 us/forms.py:30\nmsgid \"Phone numbers must be in XXX-XXX-XXXX format.\"\nmsgstr \"\"\n\n#: ca/forms.py:69\nmsgid \"Enter a Canadian province or territory.\"\nmsgstr \"\"\n\n#: ca/forms.py:110\nmsgid \"Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.\"\nmsgstr \"\"\n\"Введіть правильний канадський номер соціального страхування у форматі XXX-\"\n\"XXX-XXX.\"\n\n#: ch/ch_states.py:5\nmsgid \"Aargau\"\nmsgstr \"Ааргау\"\n\n#: ch/ch_states.py:6\nmsgid \"Appenzell Innerrhoden\"\nmsgstr \"Аппенцелль Іннерходен\"\n\n#: ch/ch_states.py:7\nmsgid \"Appenzell Ausserrhoden\"\nmsgstr \"Аппенцелль Ауссеррходен\"\n\n#: ch/ch_states.py:8\nmsgid \"Basel-Stadt\"\nmsgstr \"Базель\"\n\n#: ch/ch_states.py:9\nmsgid \"Basel-Land\"\nmsgstr \"Базель-Ленд\"\n\n#: ch/ch_states.py:10\nmsgid \"Berne\"\nmsgstr \"Берн\"\n\n#: ch/ch_states.py:11\nmsgid \"Fribourg\"\nmsgstr \"Фрібург\"\n\n#: ch/ch_states.py:12\nmsgid \"Geneva\"\nmsgstr \"Женева\"\n\n#: ch/ch_states.py:13\nmsgid \"Glarus\"\nmsgstr \"Гларус\"\n\n#: ch/ch_states.py:14\nmsgid \"Graubuenden\"\nmsgstr \"Граубюнден\"\n\n#: ch/ch_states.py:15\nmsgid \"Jura\"\nmsgstr \"Юра\"\n\n#: ch/ch_states.py:16\nmsgid \"Lucerne\"\nmsgstr \"Люцерн\"\n\n#: ch/ch_states.py:17\nmsgid \"Neuchatel\"\nmsgstr \"Невшатель\"\n\n#: ch/ch_states.py:18\nmsgid \"Nidwalden\"\nmsgstr \"Нідвальден\"\n\n#: ch/ch_states.py:19\nmsgid \"Obwalden\"\nmsgstr \"Обвальден\"\n\n#: ch/ch_states.py:20\nmsgid \"Schaffhausen\"\nmsgstr \"Шафхаузен\"\n\n#: ch/ch_states.py:21\nmsgid \"Schwyz\"\nmsgstr \"Швіц\"\n\n#: ch/ch_states.py:22\nmsgid \"Solothurn\"\nmsgstr \"Золотурн\"\n\n#: ch/ch_states.py:23\nmsgid \"St. Gallen\"\nmsgstr \"Санкт-Галлен\"\n\n#: ch/ch_states.py:24\nmsgid \"Thurgau\"\nmsgstr \"Тургау\"\n\n#: ch/ch_states.py:25\nmsgid \"Ticino\"\nmsgstr \"Тичино\"\n\n#: ch/ch_states.py:26\nmsgid \"Uri\"\nmsgstr \"Урі\"\n\n#: ch/ch_states.py:27\nmsgid \"Valais\"\nmsgstr \"Вале\"\n\n#: ch/ch_states.py:28\nmsgid \"Vaud\"\nmsgstr \"Во\"\n\n#: ch/ch_states.py:29\nmsgid \"Zug\"\nmsgstr \"Цуг\"\n\n#: ch/ch_states.py:30\nmsgid \"Zurich\"\nmsgstr \"Цюріх\"\n\n#: ch/forms.py:37\nmsgid \"Phone numbers must be in 0XX XXX XX XX format.\"\nmsgstr \"\"\n\n#: ch/forms.py:68\nmsgid \"\"\n\"Enter a valid Swiss identity or passport card number in X1234567<0 or \"\n\"1234567890 format.\"\nmsgstr \"\"\n\"Введіть вірний номер посвідчення особи або паспорту у форматі X1234567<0 або \"\n\"1234567890.\"\n\n#: cl/forms.py:32\nmsgid \"Enter a valid Chilean RUT.\"\nmsgstr \"Введіть вірний чилійський RUT.\"\n\n#: cl/forms.py:33\nmsgid \"Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.\"\nmsgstr \"Введіть вірний чилійський RUT. Формат: XX.XXX.XXX-X.\"\n\n#: cl/forms.py:34\nmsgid \"The Chilean RUT is not valid.\"\nmsgstr \"Чилійський RUT не правильний.\"\n\n#: cn/forms.py:84\nmsgid \"Enter a post code in the format XXXXXX.\"\nmsgstr \"\"\n\n#: cn/forms.py:105\nmsgid \"ID Card Number consists of 15 or 18 digits.\"\nmsgstr \"\"\n\n#: cn/forms.py:106\nmsgid \"Invalid ID Card Number: Wrong checksum\"\nmsgstr \"\"\n\n#: cn/forms.py:107\nmsgid \"Invalid ID Card Number: Wrong birthdate\"\nmsgstr \"\"\n\n#: cn/forms.py:108\nmsgid \"Invalid ID Card Number: Wrong location code\"\nmsgstr \"\"\n\n#: cn/forms.py:193\nmsgid \"Enter a valid phone number.\"\nmsgstr \"\"\n\n#: cn/forms.py:210\nmsgid \"Enter a valid cell number.\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:8\nmsgid \"Prague\"\nmsgstr \"Прага\"\n\n#: cz/cz_regions.py:9\nmsgid \"Central Bohemian Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:10\nmsgid \"South Bohemian Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:11\nmsgid \"Pilsen Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:12\nmsgid \"Carlsbad Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:13\nmsgid \"Usti Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:14\nmsgid \"Liberec Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:15\nmsgid \"Hradec Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:16\nmsgid \"Pardubice Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:17\nmsgid \"Vysocina Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:18\nmsgid \"South Moravian Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:19\nmsgid \"Olomouc Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:20\nmsgid \"Zlin Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:21\nmsgid \"Moravian-Silesian Region\"\nmsgstr \"\"\n\n#: cz/forms.py:32 sk/forms.py:33\nmsgid \"Enter a postal code in the format XXXXX or XXX XX.\"\nmsgstr \"Введіть поштовий індекс у форматі XXXXX або XXX XX.\"\n\n#: cz/forms.py:52\nmsgid \"Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.\"\nmsgstr \"\"\n\n#: cz/forms.py:53\nmsgid \"Enter a valid birth number.\"\nmsgstr \"\"\n\n#: cz/forms.py:102\nmsgid \"Enter a valid IC number.\"\nmsgstr \"\"\n\n#: de/de_states.py:5\nmsgid \"Baden-Wuerttemberg\"\nmsgstr \"Баден-Вюртемберг\"\n\n#: de/de_states.py:6\nmsgid \"Bavaria\"\nmsgstr \"Баварія\"\n\n#: de/de_states.py:7\nmsgid \"Berlin\"\nmsgstr \"Берлін\"\n\n#: de/de_states.py:8\nmsgid \"Brandenburg\"\nmsgstr \"Бранденбург\"\n\n#: de/de_states.py:9\nmsgid \"Bremen\"\nmsgstr \"Бремен\"\n\n#: de/de_states.py:10\nmsgid \"Hamburg\"\nmsgstr \"Гамбург\"\n\n#: de/de_states.py:11\nmsgid \"Hessen\"\nmsgstr \"Гессен\"\n\n#: de/de_states.py:12\nmsgid \"Mecklenburg-Western Pomerania\"\nmsgstr \"Мекленбург — Передня Померанія\"\n\n#: de/de_states.py:13\nmsgid \"Lower Saxony\"\nmsgstr \"Нижня Саксонія\"\n\n#: de/de_states.py:14\nmsgid \"North Rhine-Westphalia\"\nmsgstr \"Північний Рейн – Вестфалія\"\n\n#: de/de_states.py:15\nmsgid \"Rhineland-Palatinate\"\nmsgstr \"Райнланд-Пфальц\"\n\n#: de/de_states.py:16\nmsgid \"Saarland\"\nmsgstr \"Саарланд\"\n\n#: de/de_states.py:17\nmsgid \"Saxony\"\nmsgstr \"Саксонія\"\n\n#: de/de_states.py:18\nmsgid \"Saxony-Anhalt\"\nmsgstr \"Саксонія-Ангальт\"\n\n#: de/de_states.py:19\nmsgid \"Schleswig-Holstein\"\nmsgstr \"Шлезвіг-Гольштайн\"\n\n#: de/de_states.py:20\nmsgid \"Thuringia\"\nmsgstr \"Тюрінгія\"\n\n#: de/forms.py:20 fi/forms.py:18 fr/forms.py:20\nmsgid \"Enter a zip code in the format XXXXX.\"\nmsgstr \"Введіть поштовий індекс у форматі XXXXX.\"\n\n#: de/forms.py:46\nmsgid \"\"\n\"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"format.\"\nmsgstr \"\"\n\"Введіть правильний номер німецького посвідчення особи в форматі XXXXXXXXXXX-\"\n\"XXXXXXX-XXXXXXX-X \"\n\n#: es/es_provinces.py:5\nmsgid \"Araba\"\nmsgstr \"\"\n\n#: es/es_provinces.py:6\nmsgid \"Albacete\"\nmsgstr \"Альбасете\"\n\n#: es/es_provinces.py:7\nmsgid \"Alacant\"\nmsgstr \"Аліканте\"\n\n#: es/es_provinces.py:8\nmsgid \"Almeria\"\nmsgstr \"Альмерія\"\n\n#: es/es_provinces.py:9\nmsgid \"Avila\"\nmsgstr \"Авіла\"\n\n#: es/es_provinces.py:10\nmsgid \"Badajoz\"\nmsgstr \"Бадахос\"\n\n#: es/es_provinces.py:11\nmsgid \"Illes Balears\"\nmsgstr \"Балеарські острови\"\n\n#: es/es_provinces.py:12\nmsgid \"Barcelona\"\nmsgstr \"Барселона\"\n\n#: es/es_provinces.py:13\nmsgid \"Burgos\"\nmsgstr \"Бургос\"\n\n#: es/es_provinces.py:14\nmsgid \"Caceres\"\nmsgstr \"Касерес\"\n\n#: es/es_provinces.py:15\nmsgid \"Cadiz\"\nmsgstr \"Кадіс\"\n\n#: es/es_provinces.py:16\nmsgid \"Castello\"\nmsgstr \"Кастельйон\"\n\n#: es/es_provinces.py:17\nmsgid \"Ciudad Real\"\nmsgstr \"Сьюдад-Реаль\"\n\n#: es/es_provinces.py:18\nmsgid \"Cordoba\"\nmsgstr \"Кордова\"\n\n#: es/es_provinces.py:19\nmsgid \"A Coruna\"\nmsgstr \"Ла-Корунья\"\n\n#: es/es_provinces.py:20\nmsgid \"Cuenca\"\nmsgstr \"Куенка\"\n\n#: es/es_provinces.py:21\nmsgid \"Girona\"\nmsgstr \"Жірона\"\n\n#: es/es_provinces.py:22\nmsgid \"Granada\"\nmsgstr \"Гранада\"\n\n#: es/es_provinces.py:23\nmsgid \"Guadalajara\"\nmsgstr \"Гвадалахара\"\n\n#: es/es_provinces.py:24\nmsgid \"Guipuzkoa\"\nmsgstr \"Гіпускоа\"\n\n#: es/es_provinces.py:25\nmsgid \"Huelva\"\nmsgstr \"Уельва\"\n\n#: es/es_provinces.py:26\nmsgid \"Huesca\"\nmsgstr \"Уеска\"\n\n#: es/es_provinces.py:27\nmsgid \"Jaen\"\nmsgstr \"Хаен\"\n\n#: es/es_provinces.py:28\nmsgid \"Leon\"\nmsgstr \"Леон\"\n\n#: es/es_provinces.py:29\nmsgid \"Lleida\"\nmsgstr \"Льєйда\"\n\n#: es/es_provinces.py:30 es/es_regions.py:17\nmsgid \"La Rioja\"\nmsgstr \"Ла-Ріоха\"\n\n#: es/es_provinces.py:31\nmsgid \"Lugo\"\nmsgstr \"Луго\"\n\n#: es/es_provinces.py:32 es/es_regions.py:18\nmsgid \"Madrid\"\nmsgstr \"Мадрід\"\n\n#: es/es_provinces.py:33\nmsgid \"Malaga\"\nmsgstr \"Малага\"\n\n#: es/es_provinces.py:34\nmsgid \"Murcia\"\nmsgstr \"Мурсія\"\n\n#: es/es_provinces.py:35\nmsgid \"Navarre\"\nmsgstr \"Наварра\"\n\n#: es/es_provinces.py:36\nmsgid \"Ourense\"\nmsgstr \"Оренсе\"\n\n#: es/es_provinces.py:37\nmsgid \"Asturias\"\nmsgstr \"Астурія\"\n\n#: es/es_provinces.py:38\nmsgid \"Palencia\"\nmsgstr \"Паленсія\"\n\n#: es/es_provinces.py:39\nmsgid \"Las Palmas\"\nmsgstr \"Лас-Пальмас\"\n\n#: es/es_provinces.py:40\nmsgid \"Pontevedra\"\nmsgstr \"Понтеведра\"\n\n#: es/es_provinces.py:41\nmsgid \"Salamanca\"\nmsgstr \"Саламанка\"\n\n#: es/es_provinces.py:42\nmsgid \"Santa Cruz de Tenerife\"\nmsgstr \"Санта-Крус-де-Тенерифе\"\n\n#: es/es_provinces.py:43 es/es_regions.py:11\nmsgid \"Cantabria\"\nmsgstr \"Кантабрія\"\n\n#: es/es_provinces.py:44\nmsgid \"Segovia\"\nmsgstr \"Сеговія\"\n\n#: es/es_provinces.py:45\nmsgid \"Seville\"\nmsgstr \"Севілья\"\n\n#: es/es_provinces.py:46\nmsgid \"Soria\"\nmsgstr \"Сорія\"\n\n#: es/es_provinces.py:47\nmsgid \"Tarragona\"\nmsgstr \"Таррагона\"\n\n#: es/es_provinces.py:48\nmsgid \"Teruel\"\nmsgstr \"Теруель\"\n\n#: es/es_provinces.py:49\nmsgid \"Toledo\"\nmsgstr \"Толедо\"\n\n#: es/es_provinces.py:50\nmsgid \"Valencia\"\nmsgstr \"Валенсія\"\n\n#: es/es_provinces.py:51\nmsgid \"Valladolid\"\nmsgstr \"Вальядолід\"\n\n#: es/es_provinces.py:52\nmsgid \"Bizkaia\"\nmsgstr \"Біскайя\"\n\n#: es/es_provinces.py:53\nmsgid \"Zamora\"\nmsgstr \"Самора\"\n\n#: es/es_provinces.py:54\nmsgid \"Zaragoza\"\nmsgstr \"Сарагоса\"\n\n#: es/es_provinces.py:55\nmsgid \"Ceuta\"\nmsgstr \"Сеута\"\n\n#: es/es_provinces.py:56\nmsgid \"Melilla\"\nmsgstr \"Мелілья\"\n\n#: es/es_regions.py:5\nmsgid \"Andalusia\"\nmsgstr \"Андалусія\"\n\n#: es/es_regions.py:6\nmsgid \"Aragon\"\nmsgstr \"Арагон\"\n\n#: es/es_regions.py:7\nmsgid \"Principality of Asturias\"\nmsgstr \"Астурія\"\n\n#: es/es_regions.py:8\nmsgid \"Balearic Islands\"\nmsgstr \"Балеарські острови\"\n\n#: es/es_regions.py:9\nmsgid \"Basque Country\"\nmsgstr \"Країна Басків (Еускаді)\"\n\n#: es/es_regions.py:10\nmsgid \"Canary Islands\"\nmsgstr \"Канарські острови\"\n\n#: es/es_regions.py:12\nmsgid \"Castile-La Mancha\"\nmsgstr \"Кастилія — Ла-Манча\"\n\n#: es/es_regions.py:13\nmsgid \"Castile and Leon\"\nmsgstr \"Кастилія і Леон\"\n\n#: es/es_regions.py:14\nmsgid \"Catalonia\"\nmsgstr \"Каталонія\"\n\n#: es/es_regions.py:15\nmsgid \"Extremadura\"\nmsgstr \"Естремадура\"\n\n#: es/es_regions.py:16\nmsgid \"Galicia\"\nmsgstr \"Галісія\"\n\n#: es/es_regions.py:19\nmsgid \"Region of Murcia\"\nmsgstr \"Мурсія\"\n\n#: es/es_regions.py:20\nmsgid \"Foral Community of Navarre\"\nmsgstr \"Наварра\"\n\n#: es/es_regions.py:21\nmsgid \"Valencian Community\"\nmsgstr \"Валенсія\"\n\n#: es/forms.py:26\nmsgid \"Enter a valid postal code in the range and format 01XXX - 52XXX.\"\nmsgstr \"Введіть правильний поштовий індекс в диапазоні формату 01XXX - 52XXX.\"\n\n#: es/forms.py:46\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or \"\n\"9XXXXXXXX.\"\nmsgstr \"\"\n\"Введіть правильний номер телефону в одному з форматів 6XXXXXXXX,8XXXXXXXX or \"\n\"9XXXXXXXX.\"\n\n#: es/forms.py:73\nmsgid \"Please enter a valid NIF, NIE, or CIF.\"\nmsgstr \"Будь ласка введіть правильний NIF, NIE, або CIF.\"\n\n#: es/forms.py:74\nmsgid \"Please enter a valid NIF or NIE.\"\nmsgstr \"Будь ласка введіть правильний NIF або NIE\"\n\n#: es/forms.py:75\nmsgid \"Invalid checksum for NIF.\"\nmsgstr \"Помилкова контрольна сума для NIF.\"\n\n#: es/forms.py:76\nmsgid \"Invalid checksum for NIE.\"\nmsgstr \"Помилкова контрольна сума для NIE.\"\n\n#: es/forms.py:77\nmsgid \"Invalid checksum for CIF.\"\nmsgstr \"Помилкова контрольна сума для CIF.\"\n\n#: es/forms.py:149\nmsgid \"\"\n\"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.\"\nmsgstr \"\"\n\"Будь ласка, введіть правильний номер банківського рахунку у форматі XXXX-\"\n\"XXXX-XX-XXXXXXXXXX.\"\n\n#: es/forms.py:150\nmsgid \"Invalid checksum for bank account number.\"\nmsgstr \"Помилкова контрольна сума для номеру банківського рахунку.\"\n\n#: fi/forms.py:33\nmsgid \"Enter a valid Finnish social security number.\"\nmsgstr \"Введіть правильний номер фінського соціального страхування.\"\n\n#: fr/forms.py:35\nmsgid \"Phone numbers must be in 0X XX XX XX XX format.\"\nmsgstr \"\"\n\n#: gb/forms.py:25\nmsgid \"Enter a valid postcode.\"\nmsgstr \"Уведіть правильний поштовий індекс.\"\n\n#: gb/gb_regions.py:11\nmsgid \"Bedfordshire\"\nmsgstr \"Бедфордшір\"\n\n#: gb/gb_regions.py:12\nmsgid \"Buckinghamshire\"\nmsgstr \"Бакінгемшир\"\n\n#: gb/gb_regions.py:14\nmsgid \"Cheshire\"\nmsgstr \"Чешир\"\n\n#: gb/gb_regions.py:15\nmsgid \"Cornwall and Isles of Scilly\"\nmsgstr \"Корнуолл\"\n\n#: gb/gb_regions.py:16\nmsgid \"Cumbria\"\nmsgstr \"Камбрія\"\n\n#: gb/gb_regions.py:17\nmsgid \"Derbyshire\"\nmsgstr \"Дербішир\"\n\n#: gb/gb_regions.py:18\nmsgid \"Devon\"\nmsgstr \"Девон\"\n\n#: gb/gb_regions.py:19\nmsgid \"Dorset\"\nmsgstr \"Дорсет\"\n\n#: gb/gb_regions.py:20\nmsgid \"Durham\"\nmsgstr \"Дарем\"\n\n#: gb/gb_regions.py:21\nmsgid \"East Sussex\"\nmsgstr \"Східний Сассекс\"\n\n#: gb/gb_regions.py:22\nmsgid \"Essex\"\nmsgstr \"Ессекс\"\n\n#: gb/gb_regions.py:23\nmsgid \"Gloucestershire\"\nmsgstr \"Глостершир\"\n\n#: gb/gb_regions.py:24\nmsgid \"Greater London\"\nmsgstr \"Великий Лондон\"\n\n#: gb/gb_regions.py:25\nmsgid \"Greater Manchester\"\nmsgstr \"Великий Манчестер\"\n\n#: gb/gb_regions.py:26\nmsgid \"Hampshire\"\nmsgstr \"Хемпшир\"\n\n#: gb/gb_regions.py:27\nmsgid \"Hertfordshire\"\nmsgstr \"Хартфордшир\"\n\n#: gb/gb_regions.py:28\nmsgid \"Kent\"\nmsgstr \"Кент\"\n\n#: gb/gb_regions.py:29\nmsgid \"Lancashire\"\nmsgstr \"Ланкашир\"\n\n#: gb/gb_regions.py:30\nmsgid \"Leicestershire\"\nmsgstr \"Лестершир\"\n\n#: gb/gb_regions.py:31\nmsgid \"Lincolnshire\"\nmsgstr \"Лінкольншир\"\n\n#: gb/gb_regions.py:32\nmsgid \"Merseyside\"\nmsgstr \"Мерсісайд\"\n\n#: gb/gb_regions.py:33\nmsgid \"Norfolk\"\nmsgstr \"Норфолк\"\n\n#: gb/gb_regions.py:34\nmsgid \"North Yorkshire\"\nmsgstr \"Північний Йоркшир\"\n\n#: gb/gb_regions.py:35\nmsgid \"Northamptonshire\"\nmsgstr \"Нортгемптоншир\"\n\n#: gb/gb_regions.py:36\nmsgid \"Northumberland\"\nmsgstr \"Нортумберленд\"\n\n#: gb/gb_regions.py:37\nmsgid \"Nottinghamshire\"\nmsgstr \"Ноттінгемшир\"\n\n#: gb/gb_regions.py:38\nmsgid \"Oxfordshire\"\nmsgstr \"Оксфордшир\"\n\n#: gb/gb_regions.py:39\nmsgid \"Shropshire\"\nmsgstr \"Шропшир\"\n\n#: gb/gb_regions.py:40\nmsgid \"Somerset\"\nmsgstr \"Сомерсет\"\n\n#: gb/gb_regions.py:41\nmsgid \"South Yorkshire\"\nmsgstr \"Південний Йоркшир\"\n\n#: gb/gb_regions.py:42\nmsgid \"Staffordshire\"\nmsgstr \"Стаффордшир\"\n\n#: gb/gb_regions.py:43\nmsgid \"Suffolk\"\nmsgstr \"Саффолк\"\n\n#: gb/gb_regions.py:44\nmsgid \"Surrey\"\nmsgstr \"Суррей\"\n\n#: gb/gb_regions.py:45\nmsgid \"Tyne and Wear\"\nmsgstr \"Тайн-енд-Уїр\"\n\n#: gb/gb_regions.py:46\nmsgid \"Warwickshire\"\nmsgstr \"Варвікшир\"\n\n#: gb/gb_regions.py:47\nmsgid \"West Midlands\"\nmsgstr \"Уест Мідлендс\"\n\n#: gb/gb_regions.py:48\nmsgid \"West Sussex\"\nmsgstr \"Західний Сассекс\"\n\n#: gb/gb_regions.py:49\nmsgid \"West Yorkshire\"\nmsgstr \"Західний Йоркшир\"\n\n#: gb/gb_regions.py:50\nmsgid \"Wiltshire\"\nmsgstr \"Уілтшир\"\n\n#: gb/gb_regions.py:51\nmsgid \"Worcestershire\"\nmsgstr \"Вустершир\"\n\n#: gb/gb_regions.py:55\nmsgid \"County Antrim\"\nmsgstr \"Графство Антрім\"\n\n#: gb/gb_regions.py:56\nmsgid \"County Armagh\"\nmsgstr \"Графство Арма\"\n\n#: gb/gb_regions.py:57\nmsgid \"County Down\"\nmsgstr \"Графство Даун\"\n\n#: gb/gb_regions.py:58\nmsgid \"County Fermanagh\"\nmsgstr \"Графство Фєрмана\"\n\n#: gb/gb_regions.py:59\nmsgid \"County Londonderry\"\nmsgstr \"Графство Лондондеррі\"\n\n#: gb/gb_regions.py:60\nmsgid \"County Tyrone\"\nmsgstr \"Графство Тірон\"\n\n#: gb/gb_regions.py:64\nmsgid \"Clwyd\"\nmsgstr \"Клуід\"\n\n#: gb/gb_regions.py:65\nmsgid \"Dyfed\"\nmsgstr \"Давєд\"\n\n#: gb/gb_regions.py:66\nmsgid \"Gwent\"\nmsgstr \"Гвєнт\"\n\n#: gb/gb_regions.py:67\nmsgid \"Gwynedd\"\nmsgstr \"Гвінед\"\n\n#: gb/gb_regions.py:68\nmsgid \"Mid Glamorgan\"\nmsgstr \"Мід Гламорган\"\n\n#: gb/gb_regions.py:69\nmsgid \"Powys\"\nmsgstr \"Поуіс\"\n\n#: gb/gb_regions.py:70\nmsgid \"South Glamorgan\"\nmsgstr \"Південний Гламорган\"\n\n#: gb/gb_regions.py:71\nmsgid \"West Glamorgan\"\nmsgstr \"Західний Гламорган\"\n\n#: gb/gb_regions.py:75\nmsgid \"Borders\"\nmsgstr \"Бордерс\"\n\n#: gb/gb_regions.py:76\nmsgid \"Central Scotland\"\nmsgstr \"Центральна Шотландія\"\n\n#: gb/gb_regions.py:77\nmsgid \"Dumfries and Galloway\"\nmsgstr \"Дамфріс і Галлоуей\"\n\n#: gb/gb_regions.py:78\nmsgid \"Fife\"\nmsgstr \"Файф\"\n\n#: gb/gb_regions.py:79\nmsgid \"Grampian\"\nmsgstr \"Гремпіан\"\n\n#: gb/gb_regions.py:80\nmsgid \"Highland\"\nmsgstr \"Хайленд\"\n\n#: gb/gb_regions.py:81\nmsgid \"Lothian\"\nmsgstr \"Лотіан\"\n\n#: gb/gb_regions.py:82\nmsgid \"Orkney Islands\"\nmsgstr \"Оркнейські острови\"\n\n#: gb/gb_regions.py:83\nmsgid \"Shetland Islands\"\nmsgstr \"Шетлендські острови\"\n\n#: gb/gb_regions.py:84\nmsgid \"Strathclyde\"\nmsgstr \"Стресклайд\"\n\n#: gb/gb_regions.py:85\nmsgid \"Tayside\"\nmsgstr \"Тейсайд\"\n\n#: gb/gb_regions.py:86\nmsgid \"Western Isles\"\nmsgstr \"Західні острови\"\n\n#: gb/gb_regions.py:90\nmsgid \"England\"\nmsgstr \"Англія\"\n\n#: gb/gb_regions.py:91\nmsgid \"Northern Ireland\"\nmsgstr \"Північна Ірландія\"\n\n#: gb/gb_regions.py:92\nmsgid \"Scotland\"\nmsgstr \"Шотландія\"\n\n#: gb/gb_regions.py:93\nmsgid \"Wales\"\nmsgstr \"Уельс\"\n\n#: hk/forms.py:37\n#, python-format\nmsgid \"Phone number should not start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:40\n#, python-format\nmsgid \"Phone number must be in one of the following formats: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:42\n#, python-format\nmsgid \"Phone number should start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hr/forms.py:76\nmsgid \"Enter a valid 13 digit JMBG\"\nmsgstr \"\"\n\n#: hr/forms.py:77\nmsgid \"Error in date segment\"\nmsgstr \"\"\n\n#: hr/forms.py:123\nmsgid \"Enter a valid 11 digit OIB\"\nmsgstr \"\"\n\n#: hr/forms.py:152 id/forms.py:112\nmsgid \"Enter a valid vehicle license plate number\"\nmsgstr \"\"\n\n#: hr/forms.py:153\nmsgid \"Enter a valid location code\"\nmsgstr \"\"\n\n#: hr/forms.py:154\nmsgid \"Number part cannot be zero\"\nmsgstr \"\"\n\n#: hr/forms.py:190\nmsgid \"Enter a valid 5 digit postal code\"\nmsgstr \"\"\n\n#: hr/forms.py:218 id/forms.py:72 nl/forms.py:56\nmsgid \"Enter a valid phone number\"\nmsgstr \"Введіть правильний номер телефону.\"\n\n#: hr/forms.py:219\nmsgid \"Enter a valid area or mobile network code\"\nmsgstr \"\"\n\n#: hr/forms.py:220\nmsgid \"The phone nubmer is too long\"\nmsgstr \"\"\n\n#: hr/forms.py:258\nmsgid \"Enter a valid 19 digit JMBAG starting with 601983\"\nmsgstr \"\"\n\n#: hr/forms.py:259\nmsgid \"Card issue number cannot be zero\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:14\nmsgid \"Grad Zagreb\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:15\nmsgid \"Bjelovarsko-bilogorska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:16\nmsgid \"Brodsko-posavska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:17\nmsgid \"Dubrovačko-neretvanska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:18\nmsgid \"Istarska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:19\nmsgid \"Karlovačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:20\nmsgid \"Koprivničko-križevačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:21\nmsgid \"Krapinsko-zagorska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:22\nmsgid \"Ličko-senjska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:23\nmsgid \"Međimurska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:24\nmsgid \"Osječko-baranjska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:25\nmsgid \"Požeško-slavonska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:26\nmsgid \"Primorsko-goranska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:27\nmsgid \"Sisačko-moslavačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:28\nmsgid \"Splitsko-dalmatinska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:29\nmsgid \"Šibensko-kninska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:30\nmsgid \"Varaždinska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:31\nmsgid \"Virovitičko-podravska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:32\nmsgid \"Vukovarsko-srijemska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:33\nmsgid \"Zadarska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:34\nmsgid \"Zagrebačka županija\"\nmsgstr \"\"\n\n#: id/forms.py:31\nmsgid \"Enter a valid post code\"\nmsgstr \"\"\n\n#: id/forms.py:176\nmsgid \"Enter a valid NIK/KTP number\"\nmsgstr \"\"\n\n#: id/id_choices.py:15\nmsgid \"Aceh\"\nmsgstr \"\"\n\n#: id/id_choices.py:16 id/id_choices.py:79\nmsgid \"Bali\"\nmsgstr \"\"\n\n#: id/id_choices.py:17 id/id_choices.py:51\nmsgid \"Banten\"\nmsgstr \"\"\n\n#: id/id_choices.py:18 id/id_choices.py:60\nmsgid \"Bengkulu\"\nmsgstr \"\"\n\n#: id/id_choices.py:19 id/id_choices.py:53\nmsgid \"Yogyakarta\"\nmsgstr \"\"\n\n#: id/id_choices.py:20 id/id_choices.py:57\nmsgid \"Jakarta\"\nmsgstr \"Джакарта\"\n\n#: id/id_choices.py:21 id/id_choices.py:81\nmsgid \"Gorontalo\"\nmsgstr \"\"\n\n#: id/id_choices.py:22 id/id_choices.py:63\nmsgid \"Jambi\"\nmsgstr \"\"\n\n#: id/id_choices.py:23\nmsgid \"Jawa Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:24\nmsgid \"Jawa Tengah\"\nmsgstr \"\"\n\n#: id/id_choices.py:25\nmsgid \"Jawa Timur\"\nmsgstr \"\"\n\n#: id/id_choices.py:26 id/id_choices.py:94\nmsgid \"Kalimantan Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:27 id/id_choices.py:72\nmsgid \"Kalimantan Selatan\"\nmsgstr \"\"\n\n#: id/id_choices.py:28 id/id_choices.py:95\nmsgid \"Kalimantan Tengah\"\nmsgstr \"\"\n\n#: id/id_choices.py:29 id/id_choices.py:96\nmsgid \"Kalimantan Timur\"\nmsgstr \"\"\n\n#: id/id_choices.py:30\nmsgid \"Kepulauan Bangka-Belitung\"\nmsgstr \"\"\n\n#: id/id_choices.py:31 id/id_choices.py:68\nmsgid \"Kepulauan Riau\"\nmsgstr \"\"\n\n#: id/id_choices.py:32 id/id_choices.py:61\nmsgid \"Lampung\"\nmsgstr \"\"\n\n#: id/id_choices.py:33 id/id_choices.py:76\nmsgid \"Maluku\"\nmsgstr \"\"\n\n#: id/id_choices.py:34 id/id_choices.py:77\nmsgid \"Maluku Utara\"\nmsgstr \"\"\n\n#: id/id_choices.py:35\nmsgid \"Nusa Tenggara Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:36\nmsgid \"Nusa Tenggara Timur\"\nmsgstr \"\"\n\n#: id/id_choices.py:37\nmsgid \"Papua\"\nmsgstr \"\"\n\n#: id/id_choices.py:38\nmsgid \"Papua Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:39 id/id_choices.py:66\nmsgid \"Riau\"\nmsgstr \"\"\n\n#: id/id_choices.py:40 id/id_choices.py:74\nmsgid \"Sulawesi Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:41 id/id_choices.py:75\nmsgid \"Sulawesi Selatan\"\nmsgstr \"\"\n\n#: id/id_choices.py:42 id/id_choices.py:82\nmsgid \"Sulawesi Tengah\"\nmsgstr \"\"\n\n#: id/id_choices.py:43 id/id_choices.py:85\nmsgid \"Sulawesi Tenggara\"\nmsgstr \"\"\n\n#: id/id_choices.py:44\nmsgid \"Sulawesi Utara\"\nmsgstr \"\"\n\n#: id/id_choices.py:45 id/id_choices.py:58\nmsgid \"Sumatera Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:46 id/id_choices.py:62\nmsgid \"Sumatera Selatan\"\nmsgstr \"\"\n\n#: id/id_choices.py:47 id/id_choices.py:64\nmsgid \"Sumatera Utara\"\nmsgstr \"\"\n\n#: id/id_choices.py:52\nmsgid \"Magelang\"\nmsgstr \"\"\n\n#: id/id_choices.py:54\nmsgid \"Surakarta - Solo\"\nmsgstr \"\"\n\n#: id/id_choices.py:55\nmsgid \"Madiun\"\nmsgstr \"\"\n\n#: id/id_choices.py:56\nmsgid \"Kediri\"\nmsgstr \"\"\n\n#: id/id_choices.py:59\nmsgid \"Tapanuli\"\nmsgstr \"\"\n\n#: id/id_choices.py:65\nmsgid \"Nanggroe Aceh Darussalam\"\nmsgstr \"\"\n\n#: id/id_choices.py:67\nmsgid \"Kepulauan Bangka Belitung\"\nmsgstr \"\"\n\n#: id/id_choices.py:69\nmsgid \"Corps Consulate\"\nmsgstr \"\"\n\n#: id/id_choices.py:70\nmsgid \"Corps Diplomatic\"\nmsgstr \"\"\n\n#: id/id_choices.py:71\nmsgid \"Bandung\"\nmsgstr \"\"\n\n#: id/id_choices.py:73\nmsgid \"Sulawesi Utara Daratan\"\nmsgstr \"\"\n\n#: id/id_choices.py:78\nmsgid \"NTT - Timor\"\nmsgstr \"\"\n\n#: id/id_choices.py:80\nmsgid \"Sulawesi Utara Kepulauan\"\nmsgstr \"\"\n\n#: id/id_choices.py:83\nmsgid \"NTB - Lombok\"\nmsgstr \"\"\n\n#: id/id_choices.py:84\nmsgid \"Papua dan Papua Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:86\nmsgid \"Cirebon\"\nmsgstr \"\"\n\n#: id/id_choices.py:87\nmsgid \"NTB - Sumbawa\"\nmsgstr \"\"\n\n#: id/id_choices.py:88\nmsgid \"NTT - Flores\"\nmsgstr \"\"\n\n#: id/id_choices.py:89\nmsgid \"NTT - Sumba\"\nmsgstr \"\"\n\n#: id/id_choices.py:90\nmsgid \"Bogor\"\nmsgstr \"\"\n\n#: id/id_choices.py:91\nmsgid \"Pekalongan\"\nmsgstr \"\"\n\n#: id/id_choices.py:92\nmsgid \"Semarang\"\nmsgstr \"\"\n\n#: id/id_choices.py:93\nmsgid \"Pati\"\nmsgstr \"\"\n\n#: id/id_choices.py:97\nmsgid \"Surabaya\"\nmsgstr \"\"\n\n#: id/id_choices.py:98\nmsgid \"Madura\"\nmsgstr \"\"\n\n#: id/id_choices.py:99\nmsgid \"Malang\"\nmsgstr \"\"\n\n#: id/id_choices.py:100\nmsgid \"Jember\"\nmsgstr \"\"\n\n#: id/id_choices.py:101\nmsgid \"Banyumas\"\nmsgstr \"\"\n\n#: id/id_choices.py:102\nmsgid \"Federal Government\"\nmsgstr \"\"\n\n#: id/id_choices.py:103\nmsgid \"Bojonegoro\"\nmsgstr \"\"\n\n#: id/id_choices.py:104\nmsgid \"Purwakarta\"\nmsgstr \"\"\n\n#: id/id_choices.py:105\nmsgid \"Sidoarjo\"\nmsgstr \"\"\n\n#: id/id_choices.py:106\nmsgid \"Garut\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:8\nmsgid \"Antrim\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:9\nmsgid \"Armagh\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:10\nmsgid \"Carlow\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:11\nmsgid \"Cavan\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:12\nmsgid \"Clare\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:13\nmsgid \"Cork\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:14\nmsgid \"Derry\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:15\nmsgid \"Donegal\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:16\nmsgid \"Down\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:17\nmsgid \"Dublin\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:18\nmsgid \"Fermanagh\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:19\nmsgid \"Galway\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:20\nmsgid \"Kerry\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:21\nmsgid \"Kildare\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:22\nmsgid \"Kilkenny\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:23\nmsgid \"Laois\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:24\nmsgid \"Leitrim\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:25\nmsgid \"Limerick\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:26\nmsgid \"Longford\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:27\nmsgid \"Louth\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:28\nmsgid \"Mayo\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:29\nmsgid \"Meath\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:30\nmsgid \"Monaghan\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:31\nmsgid \"Offaly\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:32\nmsgid \"Roscommon\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:33\nmsgid \"Sligo\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:34\nmsgid \"Tipperary\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:35\nmsgid \"Tyrone\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:36\nmsgid \"Waterford\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:37\nmsgid \"Westmeath\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:38\nmsgid \"Wexford\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:39\nmsgid \"Wicklow\"\nmsgstr \"\"\n\n#: il/forms.py:32\nmsgid \"Enter a postal code in the format XXXXX\"\nmsgstr \"\"\n\n#: il/forms.py:51\nmsgid \"Enter a valid ID number.\"\nmsgstr \"\"\n\n#: in_/forms.py:41\nmsgid \"Enter a zip code in the format XXXXXX or XXX XXX.\"\nmsgstr \"\"\n\n#: in_/forms.py:64\nmsgid \"Enter an Indian state or territory.\"\nmsgstr \"\"\n\n#: in_/forms.py:103\nmsgid \"Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.\"\nmsgstr \"\"\n\n#: is_/forms.py:22\nmsgid \"\"\n\"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.\"\nmsgstr \"\"\n\"Введіть правильний номер ісландського посвідчення особи. Формат: XXXXXX-XXXX.\"\n\n#: is_/forms.py:23\nmsgid \"The Icelandic identification number is not valid.\"\nmsgstr \"Номер ісландського посвідчення особи не вірний.\"\n\n#: it/forms.py:21\nmsgid \"Enter a valid zip code.\"\nmsgstr \"Введіть правильну поштову адресу.\"\n\n#: it/forms.py:48\nmsgid \"Enter a valid Social Security number.\"\nmsgstr \"Введіть правильний номер соціального страхування\"\n\n#: it/forms.py:73\nmsgid \"Enter a valid VAT number.\"\nmsgstr \"Введіть правильний номер VAT.\"\n\n#: jp/forms.py:19\nmsgid \"Enter a postal code in the format XXXXXXX or XXX-XXXX.\"\nmsgstr \"Введіть поштовий індекс у форматі XXXXXXX or XXX-XXXX.\"\n\n#: jp/jp_prefectures.py:4\nmsgid \"Hokkaido\"\nmsgstr \"Хоккайдо\"\n\n#: jp/jp_prefectures.py:5\nmsgid \"Aomori\"\nmsgstr \"Аоморі\"\n\n#: jp/jp_prefectures.py:6\nmsgid \"Iwate\"\nmsgstr \"Івате\"\n\n#: jp/jp_prefectures.py:7\nmsgid \"Miyagi\"\nmsgstr \"Міяґі\"\n\n#: jp/jp_prefectures.py:8\nmsgid \"Akita\"\nmsgstr \"Акіта\"\n\n#: jp/jp_prefectures.py:9\nmsgid \"Yamagata\"\nmsgstr \"Ямаґата\"\n\n#: jp/jp_prefectures.py:10\nmsgid \"Fukushima\"\nmsgstr \"Фукусіма\"\n\n#: jp/jp_prefectures.py:11\nmsgid \"Ibaraki\"\nmsgstr \"Ібаракі\"\n\n#: jp/jp_prefectures.py:12\nmsgid \"Tochigi\"\nmsgstr \"Тотіґі\"\n\n#: jp/jp_prefectures.py:13\nmsgid \"Gunma\"\nmsgstr \"Ґумма\"\n\n#: jp/jp_prefectures.py:14\nmsgid \"Saitama\"\nmsgstr \"Сайтама\"\n\n#: jp/jp_prefectures.py:15\nmsgid \"Chiba\"\nmsgstr \"Тіба\"\n\n#: jp/jp_prefectures.py:16\nmsgid \"Tokyo\"\nmsgstr \"Токіо\"\n\n#: jp/jp_prefectures.py:17\nmsgid \"Kanagawa\"\nmsgstr \"Канаґава\"\n\n#: jp/jp_prefectures.py:18\nmsgid \"Yamanashi\"\nmsgstr \"Яманасі\"\n\n#: jp/jp_prefectures.py:19\nmsgid \"Nagano\"\nmsgstr \"Наґано\"\n\n#: jp/jp_prefectures.py:20\nmsgid \"Niigata\"\nmsgstr \"Ніїґата\"\n\n#: jp/jp_prefectures.py:21\nmsgid \"Toyama\"\nmsgstr \"Тояма\"\n\n#: jp/jp_prefectures.py:22\nmsgid \"Ishikawa\"\nmsgstr \"Ісікава\"\n\n#: jp/jp_prefectures.py:23\nmsgid \"Fukui\"\nmsgstr \"Фукуї\"\n\n#: jp/jp_prefectures.py:24\nmsgid \"Gifu\"\nmsgstr \"Ґіфу\"\n\n#: jp/jp_prefectures.py:25\nmsgid \"Shizuoka\"\nmsgstr \"Сідзуока\"\n\n#: jp/jp_prefectures.py:26\nmsgid \"Aichi\"\nmsgstr \"Аїті\"\n\n#: jp/jp_prefectures.py:27\nmsgid \"Mie\"\nmsgstr \"Міє\"\n\n#: jp/jp_prefectures.py:28\nmsgid \"Shiga\"\nmsgstr \"Сіґа\"\n\n#: jp/jp_prefectures.py:29\nmsgid \"Kyoto\"\nmsgstr \"Кіото\"\n\n#: jp/jp_prefectures.py:30\nmsgid \"Osaka\"\nmsgstr \"Осака\"\n\n#: jp/jp_prefectures.py:31\nmsgid \"Hyogo\"\nmsgstr \"Хьоґо\"\n\n#: jp/jp_prefectures.py:32\nmsgid \"Nara\"\nmsgstr \"Нара\"\n\n#: jp/jp_prefectures.py:33\nmsgid \"Wakayama\"\nmsgstr \"Вакаяма\"\n\n#: jp/jp_prefectures.py:34\nmsgid \"Tottori\"\nmsgstr \"Тотторі\"\n\n#: jp/jp_prefectures.py:35\nmsgid \"Shimane\"\nmsgstr \"Сімане\"\n\n#: jp/jp_prefectures.py:36\nmsgid \"Okayama\"\nmsgstr \"Окаяма\"\n\n#: jp/jp_prefectures.py:37\nmsgid \"Hiroshima\"\nmsgstr \"Хіросіма\"\n\n#: jp/jp_prefectures.py:38\nmsgid \"Yamaguchi\"\nmsgstr \"Ямаґуті\"\n\n#: jp/jp_prefectures.py:39\nmsgid \"Tokushima\"\nmsgstr \"Токусіма\"\n\n#: jp/jp_prefectures.py:40\nmsgid \"Kagawa\"\nmsgstr \"Каґава\"\n\n#: jp/jp_prefectures.py:41\nmsgid \"Ehime\"\nmsgstr \"Ехіме\"\n\n#: jp/jp_prefectures.py:42\nmsgid \"Kochi\"\nmsgstr \"Коті\"\n\n#: jp/jp_prefectures.py:43\nmsgid \"Fukuoka\"\nmsgstr \"Фукуока\"\n\n#: jp/jp_prefectures.py:44\nmsgid \"Saga\"\nmsgstr \"Саґа\"\n\n#: jp/jp_prefectures.py:45\nmsgid \"Nagasaki\"\nmsgstr \"Наґасакі\"\n\n#: jp/jp_prefectures.py:46\nmsgid \"Kumamoto\"\nmsgstr \"Кумамото\"\n\n#: jp/jp_prefectures.py:47\nmsgid \"Oita\"\nmsgstr \"Оїта\"\n\n#: jp/jp_prefectures.py:48\nmsgid \"Miyazaki\"\nmsgstr \"Міядзакі\"\n\n#: jp/jp_prefectures.py:49\nmsgid \"Kagoshima\"\nmsgstr \"Каґосіма\"\n\n#: jp/jp_prefectures.py:50\nmsgid \"Okinawa\"\nmsgstr \"Окінава\"\n\n#: kw/forms.py:27\nmsgid \"Enter a valid Kuwaiti Civil ID number\"\nmsgstr \"\"\n\n#: mk/forms.py:18\nmsgid \"\"\n\"Identity card numbers must contain either 4 to 7 digits or an uppercase \"\n\"letter and 7 digits.\"\nmsgstr \"\"\n\n#: mk/forms.py:57 si/forms.py:24\nmsgid \"This field should contain exactly 13 digits.\"\nmsgstr \"\"\n\n#: mk/forms.py:58\nmsgid \"The first 7 digits of the UMCN must represent a valid past date.\"\nmsgstr \"\"\n\n#: mk/forms.py:59\nmsgid \"The UMCN is not valid.\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:10\nmsgid \"Aerodrom\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:11\nmsgid \"Aračinovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:12\nmsgid \"Berovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:13\nmsgid \"Bitola\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:14\nmsgid \"Bogdanci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:15\nmsgid \"Bogovinje\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:16\nmsgid \"Bosilovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:17\nmsgid \"Brvenica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:18\nmsgid \"Butel\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:19\nmsgid \"Valandovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:20\nmsgid \"Vasilevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:21\nmsgid \"Vevčani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:22\nmsgid \"Veles\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:23\nmsgid \"Vinica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:24\nmsgid \"Vraneštica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:25\nmsgid \"Vrapčište\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:26\nmsgid \"Gazi Baba\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:27\nmsgid \"Gevgelija\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:28\nmsgid \"Gostivar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:29\nmsgid \"Gradsko\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:30\nmsgid \"Debar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:31\nmsgid \"Debarca\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:32\nmsgid \"Delčevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:33\nmsgid \"Demir Kapija\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:34\nmsgid \"Demir Hisar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:35\nmsgid \"Dolneni\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:36\nmsgid \"Drugovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:37\nmsgid \"Gjorče Petrov\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:38\nmsgid \"Želino\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:39\nmsgid \"Zajas\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:40\nmsgid \"Zelenikovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:41\nmsgid \"Zrnovci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:42\nmsgid \"Ilinden\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:43\nmsgid \"Jegunovce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:44\nmsgid \"Kavadarci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:45\nmsgid \"Karbinci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:46\nmsgid \"Karpoš\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:47\nmsgid \"Kisela Voda\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:48\nmsgid \"Kičevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:49\nmsgid \"Konče\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:50\nmsgid \"Koćani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:51\nmsgid \"Kratovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:52\nmsgid \"Kriva Palanka\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:53\nmsgid \"Krivogaštani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:54\nmsgid \"Kruševo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:55\nmsgid \"Kumanovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:56\nmsgid \"Lipkovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:57\nmsgid \"Lozovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:58\nmsgid \"Mavrovo i Rostuša\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:59\nmsgid \"Makedonska Kamenica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:60\nmsgid \"Makedonski Brod\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:61\nmsgid \"Mogila\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:62\nmsgid \"Negotino\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:63\nmsgid \"Novaci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:64\nmsgid \"Novo Selo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:65\nmsgid \"Oslomej\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:66\nmsgid \"Ohrid\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:67\nmsgid \"Petrovec\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:68\nmsgid \"Pehčevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:69\nmsgid \"Plasnica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:70\nmsgid \"Prilep\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:71\nmsgid \"Probištip\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:72\nmsgid \"Radoviš\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:73\nmsgid \"Rankovce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:74\nmsgid \"Resen\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:75\nmsgid \"Rosoman\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:76\nmsgid \"Saraj\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:77\nmsgid \"Sveti Nikole\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:78\nmsgid \"Sopište\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:79\nmsgid \"Star Dojran\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:80\nmsgid \"Staro Nagoričane\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:81\nmsgid \"Struga\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:82\nmsgid \"Strumica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:83\nmsgid \"Studeničani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:84\nmsgid \"Tearce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:85\nmsgid \"Tetovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:86\nmsgid \"Centar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:87\nmsgid \"Centar-Župa\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:88\nmsgid \"Čair\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:89\nmsgid \"Čaška\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:90\nmsgid \"Češinovo-Obleševo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:91\nmsgid \"Čučer-Sandevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:92\nmsgid \"Štip\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:93\nmsgid \"Šuto Orizari\"\nmsgstr \"\"\n\n#: mk/models.py:11\nmsgid \"Macedonian identity card number\"\nmsgstr \"\"\n\n#: mk/models.py:25\nmsgid \"A Macedonian municipality (2 character code)\"\nmsgstr \"\"\n\n#: mk/models.py:35\nmsgid \"Unique master citizen number (13 digits)\"\nmsgstr \"\"\n\n#: mx/forms.py:67\nmsgid \"Enter a valid zip code in the format XXXXX.\"\nmsgstr \"\"\n\n#: mx/forms.py:110\nmsgid \"Enter a valid RFC.\"\nmsgstr \"\"\n\n#: mx/forms.py:111\nmsgid \"Invalid checksum for RFC.\"\nmsgstr \"\"\n\n#: mx/forms.py:191\nmsgid \"Enter a valid CURP.\"\nmsgstr \"\"\n\n#: mx/forms.py:192\nmsgid \"Invalid checksum for CURP.\"\nmsgstr \"\"\n\n#: mx/models.py:14\nmsgid \"Mexico state (three uppercase letters)\"\nmsgstr \"\"\n\n#: mx/models.py:27\nmsgid \"Mexico zip code\"\nmsgstr \"\"\n\n#: mx/models.py:44\nmsgid \"Mexican RFC\"\nmsgstr \"\"\n\n#: mx/models.py:61\nmsgid \"Mexican CURP\"\nmsgstr \"\"\n\n#: mx/mx_states.py:14\nmsgid \"Aguascalientes\"\nmsgstr \"Аґуаскальєнтес\"\n\n#: mx/mx_states.py:15\nmsgid \"Baja California\"\nmsgstr \"Нижня Каліфорнія Північна\"\n\n#: mx/mx_states.py:16\nmsgid \"Baja California Sur\"\nmsgstr \"Нижня Каліфорнія Південна\"\n\n#: mx/mx_states.py:17\nmsgid \"Campeche\"\nmsgstr \"Кампече\"\n\n#: mx/mx_states.py:18\nmsgid \"Chihuahua\"\nmsgstr \"Чіуауа\"\n\n#: mx/mx_states.py:19\nmsgid \"Chiapas\"\nmsgstr \"Чіапас\"\n\n#: mx/mx_states.py:20\nmsgid \"Coahuila\"\nmsgstr \"Коауїла\"\n\n#: mx/mx_states.py:21\nmsgid \"Colima\"\nmsgstr \"Коліма\"\n\n#: mx/mx_states.py:22\nmsgid \"Distrito Federal\"\nmsgstr \"Федеральний округ\"\n\n#: mx/mx_states.py:23\nmsgid \"Durango\"\nmsgstr \"Дуранго\"\n\n#: mx/mx_states.py:24\nmsgid \"Guerrero\"\nmsgstr \"Ґерреро\"\n\n#: mx/mx_states.py:25\nmsgid \"Guanajuato\"\nmsgstr \"Ґуанахуато\"\n\n#: mx/mx_states.py:26\nmsgid \"Hidalgo\"\nmsgstr \"Ідальґо\"\n\n#: mx/mx_states.py:27\nmsgid \"Jalisco\"\nmsgstr \"Халіско\"\n\n#: mx/mx_states.py:28\nmsgid \"Estado de México\"\nmsgstr \"Мехіко\"\n\n#: mx/mx_states.py:29\nmsgid \"Michoacán\"\nmsgstr \"Мічоакан\"\n\n#: mx/mx_states.py:30\nmsgid \"Morelos\"\nmsgstr \"Морелос\"\n\n#: mx/mx_states.py:31\nmsgid \"Nayarit\"\nmsgstr \"Наяріт\"\n\n#: mx/mx_states.py:32\nmsgid \"Nuevo León\"\nmsgstr \"Нуево-Леон\"\n\n#: mx/mx_states.py:33\nmsgid \"Oaxaca\"\nmsgstr \"Оахака\"\n\n#: mx/mx_states.py:34\nmsgid \"Puebla\"\nmsgstr \"Пуебла\"\n\n#: mx/mx_states.py:35\nmsgid \"Querétaro\"\nmsgstr \"Керетаро\"\n\n#: mx/mx_states.py:36\nmsgid \"Quintana Roo\"\nmsgstr \"Кінтана-Роо\"\n\n#: mx/mx_states.py:37\nmsgid \"Sinaloa\"\nmsgstr \"Сіналоа\"\n\n#: mx/mx_states.py:38\nmsgid \"San Luis Potosí\"\nmsgstr \"Сан-Луїс-Потосі\"\n\n#: mx/mx_states.py:39\nmsgid \"Sonora\"\nmsgstr \"Сонора\"\n\n#: mx/mx_states.py:40\nmsgid \"Tabasco\"\nmsgstr \"Табаско\"\n\n#: mx/mx_states.py:41\nmsgid \"Tamaulipas\"\nmsgstr \"Тамауліпас\"\n\n#: mx/mx_states.py:42\nmsgid \"Tlaxcala\"\nmsgstr \"Тлашкала\"\n\n#: mx/mx_states.py:43\nmsgid \"Veracruz\"\nmsgstr \"Веракрус\"\n\n#: mx/mx_states.py:44\nmsgid \"Yucatán\"\nmsgstr \"Юкатан\"\n\n#: mx/mx_states.py:45\nmsgid \"Zacatecas\"\nmsgstr \"Сакатекас\"\n\n#: nl/forms.py:26\nmsgid \"Enter a valid postal code\"\nmsgstr \"Уведіть правильний поштовий індекс.\"\n\n#: nl/forms.py:82\nmsgid \"Enter a valid SoFi number\"\nmsgstr \"Введіть правильний номер SoFi.\"\n\n#: nl/nl_provinces.py:4\nmsgid \"Drenthe\"\nmsgstr \"Дренте\"\n\n#: nl/nl_provinces.py:5\nmsgid \"Flevoland\"\nmsgstr \"Флеволанд\"\n\n#: nl/nl_provinces.py:6\nmsgid \"Friesland\"\nmsgstr \"Фризляндія\"\n\n#: nl/nl_provinces.py:7\nmsgid \"Gelderland\"\nmsgstr \"Ґельдерланд\"\n\n#: nl/nl_provinces.py:8\nmsgid \"Groningen\"\nmsgstr \"Ґронінґен\"\n\n#: nl/nl_provinces.py:10\nmsgid \"Noord-Brabant\"\nmsgstr \"Північний Брабант\"\n\n#: nl/nl_provinces.py:11\nmsgid \"Noord-Holland\"\nmsgstr \"Північна Голландія\"\n\n#: nl/nl_provinces.py:12\nmsgid \"Overijssel\"\nmsgstr \"Оверейсел\"\n\n#: nl/nl_provinces.py:13\nmsgid \"Utrecht\"\nmsgstr \"Утрехт\"\n\n#: nl/nl_provinces.py:14\nmsgid \"Zeeland\"\nmsgstr \"Зеландія\"\n\n#: nl/nl_provinces.py:15\nmsgid \"Zuid-Holland\"\nmsgstr \"Південна Голландія\"\n\n#: no/forms.py:39\nmsgid \"Enter a valid Norwegian social security number.\"\nmsgstr \"Введіть правильний номер норвезького соціального страхування.\"\n\n#: pe/forms.py:28\nmsgid \"This field requires 8 digits.\"\nmsgstr \"В це поле можна ввести тільки 8 цифр.\"\n\n#: pe/forms.py:56\nmsgid \"This field requires 11 digits.\"\nmsgstr \"В це поле можна ввести тільки 11 цифр.\"\n\n#: pl/forms.py:42\nmsgid \"National Identification Number consists of 11 digits.\"\nmsgstr \"Національний ідентифікаційний номер складається з 11 цифр.\"\n\n#: pl/forms.py:43\nmsgid \"Wrong checksum for the National Identification Number.\"\nmsgstr \"Помилкова контрольна сума для Національного ідентифікаційного номера\"\n\n#: pl/forms.py:79\nmsgid \"National ID Card Number consists of 3 letters and 6 digits.\"\nmsgstr \"\"\n\n#: pl/forms.py:80\nmsgid \"Wrong checksum for the National ID Card Number.\"\nmsgstr \"\"\n\n#: pl/forms.py:131\nmsgid \"\"\n\"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or \"\n\"XXXXXXXXXX.\"\nmsgstr \"\"\n\n#: pl/forms.py:132\nmsgid \"Wrong checksum for the Tax Number (NIP).\"\nmsgstr \"Помилкова контрольна сума для податкового номеру (NIP).\"\n\n#: pl/forms.py:171\nmsgid \"National Business Register Number (REGON) consists of 9 or 14 digits.\"\nmsgstr \"\"\n\n#: pl/forms.py:172\nmsgid \"Wrong checksum for the National Business Register Number (REGON).\"\nmsgstr \"\"\n\"Помилкова контрольна сума для Національного ділового реєстраційного номеру \"\n\"(REGON).\"\n\n#: pl/forms.py:212\nmsgid \"Enter a postal code in the format XX-XXX.\"\nmsgstr \"Введіть поштовий індекс у форматі XX-XXX.\"\n\n#: pl/pl_voivodeships.py:8\nmsgid \"Lower Silesia\"\nmsgstr \"Нижньосілезьке\"\n\n#: pl/pl_voivodeships.py:9\nmsgid \"Kuyavia-Pomerania\"\nmsgstr \"Куявсько-Поморське\"\n\n#: pl/pl_voivodeships.py:10\nmsgid \"Lublin\"\nmsgstr \"Люблінське\"\n\n#: pl/pl_voivodeships.py:11\nmsgid \"Lubusz\"\nmsgstr \"Любуське\"\n\n#: pl/pl_voivodeships.py:12\nmsgid \"Lodz\"\nmsgstr \"Лодзинське\"\n\n#: pl/pl_voivodeships.py:13\nmsgid \"Lesser Poland\"\nmsgstr \"Малопольське\"\n\n#: pl/pl_voivodeships.py:14\nmsgid \"Masovia\"\nmsgstr \"Мазовецьке\"\n\n#: pl/pl_voivodeships.py:15\nmsgid \"Opole\"\nmsgstr \"Опольське\"\n\n#: pl/pl_voivodeships.py:16\nmsgid \"Subcarpatia\"\nmsgstr \"Підкарпатське\"\n\n#: pl/pl_voivodeships.py:17\nmsgid \"Podlasie\"\nmsgstr \"Підляське\"\n\n#: pl/pl_voivodeships.py:18\nmsgid \"Pomerania\"\nmsgstr \"Поморське\"\n\n#: pl/pl_voivodeships.py:19\nmsgid \"Silesia\"\nmsgstr \"Сілезьке\"\n\n#: pl/pl_voivodeships.py:20\nmsgid \"Swietokrzyskie\"\nmsgstr \"Свентокшиське\"\n\n#: pl/pl_voivodeships.py:21\nmsgid \"Warmia-Masuria\"\nmsgstr \"Вармінсько-Мазурське\"\n\n#: pl/pl_voivodeships.py:22\nmsgid \"Greater Poland\"\nmsgstr \"Великопольське\"\n\n#: pl/pl_voivodeships.py:23\nmsgid \"West Pomerania\"\nmsgstr \"Західнопоморське\"\n\n#: pt/forms.py:19\nmsgid \"Enter a zip code in the format XXXX-XXX.\"\nmsgstr \"\"\n\n#: pt/forms.py:39\nmsgid \"Phone numbers must have 9 digits, or start by + or 00.\"\nmsgstr \"\"\n\n#: ro/forms.py:22\nmsgid \"Enter a valid CIF.\"\nmsgstr \"Введіть правильний CIF.\"\n\n#: ro/forms.py:59\nmsgid \"Enter a valid CNP.\"\nmsgstr \"Введіть правильний CNP.\"\n\n#: ro/forms.py:143\nmsgid \"Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format\"\nmsgstr \"Введіть правильний IBAN в форматі ROXX-XXXX-XXXX-XXXX-XXXX-XXXX\"\n\n#: ro/forms.py:175\nmsgid \"Phone numbers must be in XXXX-XXXXXX format.\"\nmsgstr \"Телефонні номери мають бути у форматі XXX-XXX-XXXX.\"\n\n#: ro/forms.py:200\nmsgid \"Enter a valid postal code in the format XXXXXX\"\nmsgstr \"Введіть правильний поштовий індекс у форматі XXXXXX\"\n\n#: ru/forms.py:37\nmsgid \"Enter a postal code in the format XXXXXX.\"\nmsgstr \"\"\n\n#: ru/forms.py:50\nmsgid \"Enter a passport number in the format XXXX XXXXXX.\"\nmsgstr \"\"\n\n#: ru/forms.py:63\nmsgid \"Enter a passport number in the format XX XXXXXXX.\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:10\nmsgid \"Central Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:11\nmsgid \"South Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:12\nmsgid \"North-West Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:13\nmsgid \"Far-East Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:14\nmsgid \"Siberian Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:15\nmsgid \"Ural Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:16\nmsgid \"Privolzhsky Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:17\nmsgid \"North-Caucasian Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:21\nmsgid \"Moskva\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:22\nmsgid \"Saint-Peterburg\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:23\nmsgid \"Moskovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:24\nmsgid \"Adygeya, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:25\nmsgid \"Bashkortostan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:26\nmsgid \"Buryatia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:27\nmsgid \"Altay, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:28\nmsgid \"Dagestan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:29\nmsgid \"Ingushskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:30\nmsgid \"Kabardino-Balkarskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:31\nmsgid \"Kalmykia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:32\nmsgid \"Karachaevo-Cherkesskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:33\nmsgid \"Karelia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:34\nmsgid \"Komi, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:35\nmsgid \"Mariy Ehl, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:36\nmsgid \"Mordovia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:37\nmsgid \"Sakha, Respublika (Yakutiya)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:38\nmsgid \"Severnaya Osetia, Respublika (Alania)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:39\nmsgid \"Tatarstan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:40\nmsgid \"Tyva, Respublika (Tuva)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:41\nmsgid \"Udmurtskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:42\nmsgid \"Khakassiya, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:43\nmsgid \"Chechenskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:44\nmsgid \"Chuvashskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:45\nmsgid \"Altayskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:46\nmsgid \"Zabaykalskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:47\nmsgid \"Kamchatskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:48\nmsgid \"Krasnodarskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:49\nmsgid \"Krasnoyarskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:50\nmsgid \"Permskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:51\nmsgid \"Primorskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:52\nmsgid \"Stavropol'siyy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:53\nmsgid \"Khabarovskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:54\nmsgid \"Amurskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:55\nmsgid \"Arkhangel'skaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:56\nmsgid \"Astrakhanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:57\nmsgid \"Belgorodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:58\nmsgid \"Bryanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:59\nmsgid \"Vladimirskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:60\nmsgid \"Volgogradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:61\nmsgid \"Vologodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:62\nmsgid \"Voronezhskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:63\nmsgid \"Ivanovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:64\nmsgid \"Irkutskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:65\nmsgid \"Kaliningradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:66\nmsgid \"Kaluzhskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:67\nmsgid \"Kemerovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:68\nmsgid \"Kirovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:69\nmsgid \"Kostromskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:70\nmsgid \"Kurganskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:71\nmsgid \"Kurskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:72\nmsgid \"Leningradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:73\nmsgid \"Lipeckaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:74\nmsgid \"Magadanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:75\nmsgid \"Murmanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:76\nmsgid \"Nizhegorodskaja oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:77\nmsgid \"Novgorodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:78\nmsgid \"Novosibirskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:79\nmsgid \"Omskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:80\nmsgid \"Orenburgskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:81\nmsgid \"Orlovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:82\nmsgid \"Penzenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:83\nmsgid \"Pskovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:84\nmsgid \"Rostovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:85\nmsgid \"Rjazanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:86\nmsgid \"Samarskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:87\nmsgid \"Saratovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:88\nmsgid \"Sakhalinskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:89\nmsgid \"Sverdlovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:90\nmsgid \"Smolenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:91\nmsgid \"Tambovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:92\nmsgid \"Tverskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:93\nmsgid \"Tomskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:94\nmsgid \"Tul'skaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:95\nmsgid \"Tyumenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:96\nmsgid \"Ul'ianovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:97\nmsgid \"Chelyabinskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:98\nmsgid \"Yaroslavskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:99\nmsgid \"Evreyskaya avtonomnaja oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:100\nmsgid \"Neneckiy autonomnyy okrug\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:101\nmsgid \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:102\nmsgid \"Chukotskiy avtonomnyy okrug\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:103\nmsgid \"Yamalo-Neneckiy avtonomnyy okrug\"\nmsgstr \"\"\n\n#: se/forms.py:54\nmsgid \"Enter a valid Swedish organisation number.\"\nmsgstr \"\"\n\n#: se/forms.py:111\nmsgid \"Enter a valid Swedish personal identity number.\"\nmsgstr \"\"\n\n#: se/forms.py:112\nmsgid \"Co-ordination numbers are not allowed.\"\nmsgstr \"\"\n\n#: se/forms.py:154\nmsgid \"Enter a Swedish postal code in the format XXXXX.\"\nmsgstr \"\"\n\n#: se/se_counties.py:16\nmsgid \"Stockholm\"\nmsgstr \"\"\n\n#: se/se_counties.py:17\nmsgid \"Västerbotten\"\nmsgstr \"\"\n\n#: se/se_counties.py:18\nmsgid \"Norrbotten\"\nmsgstr \"\"\n\n#: se/se_counties.py:19\nmsgid \"Uppsala\"\nmsgstr \"\"\n\n#: se/se_counties.py:20\nmsgid \"Södermanland\"\nmsgstr \"\"\n\n#: se/se_counties.py:21\nmsgid \"Östergötland\"\nmsgstr \"\"\n\n#: se/se_counties.py:22\nmsgid \"Jönköping\"\nmsgstr \"\"\n\n#: se/se_counties.py:23\nmsgid \"Kronoberg\"\nmsgstr \"\"\n\n#: se/se_counties.py:24\nmsgid \"Kalmar\"\nmsgstr \"\"\n\n#: se/se_counties.py:25\nmsgid \"Gotland\"\nmsgstr \"\"\n\n#: se/se_counties.py:26\nmsgid \"Blekinge\"\nmsgstr \"\"\n\n#: se/se_counties.py:27\nmsgid \"Skåne\"\nmsgstr \"\"\n\n#: se/se_counties.py:28\nmsgid \"Halland\"\nmsgstr \"\"\n\n#: se/se_counties.py:29\nmsgid \"Västra Götaland\"\nmsgstr \"\"\n\n#: se/se_counties.py:30\nmsgid \"Värmland\"\nmsgstr \"\"\n\n#: se/se_counties.py:31\nmsgid \"Örebro\"\nmsgstr \"\"\n\n#: se/se_counties.py:32\nmsgid \"Västmanland\"\nmsgstr \"\"\n\n#: se/se_counties.py:33\nmsgid \"Dalarna\"\nmsgstr \"\"\n\n#: se/se_counties.py:34\nmsgid \"Gävleborg\"\nmsgstr \"\"\n\n#: se/se_counties.py:35\nmsgid \"Västernorrland\"\nmsgstr \"\"\n\n#: se/se_counties.py:36\nmsgid \"Jämtland\"\nmsgstr \"\"\n\n#: si/forms.py:25\nmsgid \"The first 7 digits of the EMSO must represent a valid past date.\"\nmsgstr \"\"\n\n#: si/forms.py:26\nmsgid \"The EMSO is not valid.\"\nmsgstr \"\"\n\n#: si/forms.py:86\nmsgid \"Enter a valid tax number in form SIXXXXXXXX\"\nmsgstr \"\"\n\n#: si/forms.py:151\nmsgid \"Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:8\nmsgid \"Banska Bystrica\"\nmsgstr \"Банська Бистриця\"\n\n#: sk/sk_districts.py:9\nmsgid \"Banska Stiavnica\"\nmsgstr \"Банська Шт'явниця\"\n\n#: sk/sk_districts.py:10\nmsgid \"Bardejov\"\nmsgstr \"Бардейов\"\n\n#: sk/sk_districts.py:11\nmsgid \"Banovce nad Bebravou\"\nmsgstr \"Бановце-над-Бебравоу\"\n\n#: sk/sk_districts.py:12\nmsgid \"Brezno\"\nmsgstr \"Брезно\"\n\n#: sk/sk_districts.py:13\nmsgid \"Bratislava I\"\nmsgstr \"Братіслава I\"\n\n#: sk/sk_districts.py:14\nmsgid \"Bratislava II\"\nmsgstr \"Братіслава II\"\n\n#: sk/sk_districts.py:15\nmsgid \"Bratislava III\"\nmsgstr \"Братіслава III\"\n\n#: sk/sk_districts.py:16\nmsgid \"Bratislava IV\"\nmsgstr \"Братіслава IV\"\n\n#: sk/sk_districts.py:17\nmsgid \"Bratislava V\"\nmsgstr \"Братіслава V\"\n\n#: sk/sk_districts.py:18\nmsgid \"Bytca\"\nmsgstr \"Бітча\"\n\n#: sk/sk_districts.py:19\nmsgid \"Cadca\"\nmsgstr \"Чадца\"\n\n#: sk/sk_districts.py:20\nmsgid \"Detva\"\nmsgstr \"Детва\"\n\n#: sk/sk_districts.py:21\nmsgid \"Dolny Kubin\"\nmsgstr \"Долни Кубін\"\n\n#: sk/sk_districts.py:22\nmsgid \"Dunajska Streda\"\nmsgstr \"Дунайська Стреда\"\n\n#: sk/sk_districts.py:23\nmsgid \"Galanta\"\nmsgstr \"Галанта\"\n\n#: sk/sk_districts.py:24\nmsgid \"Gelnica\"\nmsgstr \"Гелница\"\n\n#: sk/sk_districts.py:25\nmsgid \"Hlohovec\"\nmsgstr \"Глоговець\"\n\n#: sk/sk_districts.py:26\nmsgid \"Humenne\"\nmsgstr \"Гуменне\"\n\n#: sk/sk_districts.py:27\nmsgid \"Ilava\"\nmsgstr \"Ілава\"\n\n#: sk/sk_districts.py:28\nmsgid \"Kezmarok\"\nmsgstr \"Кежмарок\"\n\n#: sk/sk_districts.py:29\nmsgid \"Komarno\"\nmsgstr \"Комарно\"\n\n#: sk/sk_districts.py:30\nmsgid \"Kosice I\"\nmsgstr \"Кошице I\"\n\n#: sk/sk_districts.py:31\nmsgid \"Kosice II\"\nmsgstr \"Кошице II\"\n\n#: sk/sk_districts.py:32\nmsgid \"Kosice III\"\nmsgstr \"Кошице III\"\n\n#: sk/sk_districts.py:33\nmsgid \"Kosice IV\"\nmsgstr \"Кошице IV\"\n\n#: sk/sk_districts.py:34\nmsgid \"Kosice - okolie\"\nmsgstr \"Кошице - периферія\"\n\n#: sk/sk_districts.py:35\nmsgid \"Krupina\"\nmsgstr \"Крупіна\"\n\n#: sk/sk_districts.py:36\nmsgid \"Kysucke Nove Mesto\"\nmsgstr \"Кошицький край\"\n\n#: sk/sk_districts.py:37\nmsgid \"Levice\"\nmsgstr \"Левіце\"\n\n#: sk/sk_districts.py:38\nmsgid \"Levoca\"\nmsgstr \"Левоча\"\n\n#: sk/sk_districts.py:39\nmsgid \"Liptovsky Mikulas\"\nmsgstr \"Ліптовскі Мікулаш\"\n\n#: sk/sk_districts.py:40\nmsgid \"Lucenec\"\nmsgstr \"Лученєць\"\n\n#: sk/sk_districts.py:41\nmsgid \"Malacky\"\nmsgstr \"Малацькі\"\n\n#: sk/sk_districts.py:42\nmsgid \"Martin\"\nmsgstr \"Мартін\"\n\n#: sk/sk_districts.py:43\nmsgid \"Medzilaborce\"\nmsgstr \"Мєдзілаборце\"\n\n#: sk/sk_districts.py:44\nmsgid \"Michalovce\"\nmsgstr \"Міхаловце\"\n\n#: sk/sk_districts.py:45\nmsgid \"Myjava\"\nmsgstr \"Міява\"\n\n#: sk/sk_districts.py:46\nmsgid \"Namestovo\"\nmsgstr \"Намєстово\"\n\n#: sk/sk_districts.py:47\nmsgid \"Nitra\"\nmsgstr \"Нітра\"\n\n#: sk/sk_districts.py:48\nmsgid \"Nove Mesto nad Vahom\"\nmsgstr \"Нове Мєсто-над-Вагом\"\n\n#: sk/sk_districts.py:49\nmsgid \"Nove Zamky\"\nmsgstr \"Нове Замкі\"\n\n#: sk/sk_districts.py:50\nmsgid \"Partizanske\"\nmsgstr \"Партизанське\"\n\n#: sk/sk_districts.py:51\nmsgid \"Pezinok\"\nmsgstr \"Пєзінок\"\n\n#: sk/sk_districts.py:52\nmsgid \"Piestany\"\nmsgstr \"П'єштяни\"\n\n#: sk/sk_districts.py:53\nmsgid \"Poltar\"\nmsgstr \"Полтар\"\n\n#: sk/sk_districts.py:54\nmsgid \"Poprad\"\nmsgstr \"Попрад\"\n\n#: sk/sk_districts.py:55\nmsgid \"Povazska Bystrica\"\nmsgstr \"Поважська Бистриця\"\n\n#: sk/sk_districts.py:56\nmsgid \"Presov\"\nmsgstr \"Прєшов\"\n\n#: sk/sk_districts.py:57\nmsgid \"Prievidza\"\nmsgstr \"Пр'євідза\"\n\n#: sk/sk_districts.py:58\nmsgid \"Puchov\"\nmsgstr \"Пухов\"\n\n#: sk/sk_districts.py:59\nmsgid \"Revuca\"\nmsgstr \"Рєвуца\"\n\n#: sk/sk_districts.py:60\nmsgid \"Rimavska Sobota\"\nmsgstr \"Рімавська Собота\"\n\n#: sk/sk_districts.py:61\nmsgid \"Roznava\"\nmsgstr \"Рожнява\"\n\n#: sk/sk_districts.py:62\nmsgid \"Ruzomberok\"\nmsgstr \"Ружомберок\"\n\n#: sk/sk_districts.py:63\nmsgid \"Sabinov\"\nmsgstr \"Сабінов\"\n\n#: sk/sk_districts.py:64\nmsgid \"Senec\"\nmsgstr \"Сєнєц\"\n\n#: sk/sk_districts.py:65\nmsgid \"Senica\"\nmsgstr \"Сєніца\"\n\n#: sk/sk_districts.py:66\nmsgid \"Skalica\"\nmsgstr \"Скаліца\"\n\n#: sk/sk_districts.py:67\nmsgid \"Snina\"\nmsgstr \"Сніна\"\n\n#: sk/sk_districts.py:68\nmsgid \"Sobrance\"\nmsgstr \"Собранце\"\n\n#: sk/sk_districts.py:69\nmsgid \"Spisska Nova Ves\"\nmsgstr \"Спішська Нова Вєс\"\n\n#: sk/sk_districts.py:70\nmsgid \"Stara Lubovna\"\nmsgstr \"Стара Любовня\"\n\n#: sk/sk_districts.py:71\nmsgid \"Stropkov\"\nmsgstr \"Стропков\"\n\n#: sk/sk_districts.py:72\nmsgid \"Svidnik\"\nmsgstr \"Свіднік\"\n\n#: sk/sk_districts.py:73\nmsgid \"Sala\"\nmsgstr \"Шаля\"\n\n#: sk/sk_districts.py:74\nmsgid \"Topolcany\"\nmsgstr \"Топольчани\"\n\n#: sk/sk_districts.py:75\nmsgid \"Trebisov\"\nmsgstr \"Требішов\"\n\n#: sk/sk_districts.py:76\nmsgid \"Trencin\"\nmsgstr \"Трєнчін\"\n\n#: sk/sk_districts.py:77\nmsgid \"Trnava\"\nmsgstr \"Трнава\"\n\n#: sk/sk_districts.py:78\nmsgid \"Turcianske Teplice\"\nmsgstr \"Турч'янське Тепліце\"\n\n#: sk/sk_districts.py:79\nmsgid \"Tvrdosin\"\nmsgstr \"Тврдошін\"\n\n#: sk/sk_districts.py:80\nmsgid \"Velky Krtis\"\nmsgstr \"Вельки Кртіш\"\n\n#: sk/sk_districts.py:81\nmsgid \"Vranov nad Toplou\"\nmsgstr \"Вранов-над-Топльеу\"\n\n#: sk/sk_districts.py:82\nmsgid \"Zlate Moravce\"\nmsgstr \"Злате Моравце\"\n\n#: sk/sk_districts.py:83\nmsgid \"Zvolen\"\nmsgstr \"Зволен\"\n\n#: sk/sk_districts.py:84\nmsgid \"Zarnovica\"\nmsgstr \"Жарновиця\"\n\n#: sk/sk_districts.py:85\nmsgid \"Ziar nad Hronom\"\nmsgstr \"Ж'яр-над-Гроном\"\n\n#: sk/sk_districts.py:86\nmsgid \"Zilina\"\nmsgstr \"Жиліна\"\n\n#: sk/sk_regions.py:8\nmsgid \"Banska Bystrica region\"\nmsgstr \"Банкобистрицький край\"\n\n#: sk/sk_regions.py:9\nmsgid \"Bratislava region\"\nmsgstr \"Братиславський край\"\n\n#: sk/sk_regions.py:10\nmsgid \"Kosice region\"\nmsgstr \"Кошицький край\"\n\n#: sk/sk_regions.py:11\nmsgid \"Nitra region\"\nmsgstr \"Нітранський край\"\n\n#: sk/sk_regions.py:12\nmsgid \"Presov region\"\nmsgstr \"Прєшовський край\"\n\n#: sk/sk_regions.py:13\nmsgid \"Trencin region\"\nmsgstr \"Тренчин\"\n\n#: sk/sk_regions.py:14\nmsgid \"Trnava region\"\nmsgstr \"Трнава\"\n\n#: sk/sk_regions.py:15\nmsgid \"Zilina region\"\nmsgstr \"Жилінський край\"\n\n#: tr/forms.py:21\nmsgid \"Enter a postal code in the format XXXXX.\"\nmsgstr \"\"\n\n#: tr/forms.py:42\nmsgid \"Phone numbers must be in 0XXX XXX XXXX format.\"\nmsgstr \"\"\n\n#: tr/forms.py:69\nmsgid \"Enter a valid Turkish Identification number.\"\nmsgstr \"\"\n\n#: tr/forms.py:70\nmsgid \"Turkish Identification number must be 11 digits.\"\nmsgstr \"\"\n\n#: us/forms.py:21\nmsgid \"Enter a zip code in the format XXXXX or XXXXX-XXXX.\"\nmsgstr \"Введіть поштовий індекс у форматі XXXXX або XXXXX-XXXX.\"\n\n#: us/forms.py:59\nmsgid \"Enter a valid U.S. Social Security number in XXX-XX-XXXX format.\"\nmsgstr \"\"\n\"Введіть правильний номер соціального забезпення США в форматі XXX-XX-XXXX.\"\n\n#: us/forms.py:92\nmsgid \"Enter a U.S. state or territory.\"\nmsgstr \"\"\n\n#: us/models.py:8\nmsgid \"U.S. state (two uppercase letters)\"\nmsgstr \"Штат Сполучених Штатів Америки (дві великіх букви)\"\n\n#: us/models.py:17\nmsgid \"U.S. postal code (two uppercase letters)\"\nmsgstr \"\"\n\n#: us/models.py:26\nmsgid \"Phone number\"\nmsgstr \"Телефонний номер\"\n\n#: uy/forms.py:29\nmsgid \"Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.\"\nmsgstr \"\"\n\n#: uy/forms.py:31\nmsgid \"Enter a valid CI number.\"\nmsgstr \"\"\n\n#: za/forms.py:22\nmsgid \"Enter a valid South African ID number\"\nmsgstr \"Введіть правильний Південно-Африканський ідентифікаційний номер\"\n\n#: za/forms.py:56\nmsgid \"Enter a valid South African postal code\"\nmsgstr \"Введіть правильний поштовий індекс Південної Африки\"\n\n#: za/za_provinces.py:4\nmsgid \"Eastern Cape\"\nmsgstr \"Східна Капська\"\n\n#: za/za_provinces.py:5\nmsgid \"Free State\"\nmsgstr \"Вільна країна\"\n\n#: za/za_provinces.py:6\nmsgid \"Gauteng\"\nmsgstr \"Гаутенг\"\n\n#: za/za_provinces.py:7\nmsgid \"KwaZulu-Natal\"\nmsgstr \"КваЗулу-Наталь\"\n\n#: za/za_provinces.py:8\nmsgid \"Limpopo\"\nmsgstr \"Лімпопо\"\n\n#: za/za_provinces.py:9\nmsgid \"Mpumalanga\"\nmsgstr \"Мпумаланга\"\n\n#: za/za_provinces.py:10\nmsgid \"Northern Cape\"\nmsgstr \"Північна Капська\"\n\n#: za/za_provinces.py:11\nmsgid \"North West\"\nmsgstr \"Північно-Західна\"\n\n#: za/za_provinces.py:12\nmsgid \"Western Cape\"\nmsgstr \"Західна Капська\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/locale/vi/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-10-17 09:17+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Vietnamese (http://www.transifex.com/projects/p/django/\"\n\"language/vi/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: vi\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: ar/forms.py:30\nmsgid \"Enter a postal code in the format NNNN or ANNNNAAA.\"\nmsgstr \"Hãy nhập mã bưu điện theo mẫu NNNN hoặc ANNNNAAA.\"\n\n#: ar/forms.py:52 br/forms.py:95 br/forms.py:134 pe/forms.py:27 pe/forms.py:55\nmsgid \"This field requires only numbers.\"\nmsgstr \"Điền một chữ số duy nhất.\"\n\n#: ar/forms.py:53\nmsgid \"This field requires 7 or 8 digits.\"\nmsgstr \"Bạn cần điền 7 hoặc 8 chữ số.\"\n\n#: ar/forms.py:82\nmsgid \"Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.\"\nmsgstr \"Hãy nhập CUIT hợp lệ theo dạng XX-XXXXXXXX-X hoặc XXXXXXXXXXXX.\"\n\n#: ar/forms.py:83\nmsgid \"Invalid CUIT.\"\nmsgstr \"CUIT không hợp lệ.\"\n\n#: ar/forms.py:84\nmsgid \"Invalid legal type. Type must be 27, 20, 23 or 30.\"\nmsgstr \"\"\n\n#: at/at_states.py:5\nmsgid \"Burgenland\"\nmsgstr \"\"\n\n#: at/at_states.py:6\nmsgid \"Carinthia\"\nmsgstr \"\"\n\n#: at/at_states.py:7\nmsgid \"Lower Austria\"\nmsgstr \"\"\n\n#: at/at_states.py:8\nmsgid \"Upper Austria\"\nmsgstr \"\"\n\n#: at/at_states.py:9\nmsgid \"Salzburg\"\nmsgstr \"\"\n\n#: at/at_states.py:10\nmsgid \"Styria\"\nmsgstr \"\"\n\n#: at/at_states.py:11\nmsgid \"Tyrol\"\nmsgstr \"\"\n\n#: at/at_states.py:12\nmsgid \"Vorarlberg\"\nmsgstr \"\"\n\n#: at/at_states.py:13\nmsgid \"Vienna\"\nmsgstr \"Thành phố Viên\"\n\n#: at/forms.py:22 ch/forms.py:22 no/forms.py:19\nmsgid \"Enter a zip code in the format XXXX.\"\nmsgstr \"Hãy nhập mã bưu điện theo dạng XXXX.\"\n\n#: at/forms.py:50\nmsgid \"Enter a valid Austrian Social Security Number in XXXX XXXXXX format.\"\nmsgstr \"Hãy nhập số an sinh xã hội của nước Áo theo dạng XXXX XXXXXX.\"\n\n#: au/forms.py:26\nmsgid \"Enter a 4 digit postcode.\"\nmsgstr \"\"\n\n#: au/models.py:9\nmsgid \"Australian State\"\nmsgstr \"\"\n\n#: au/models.py:19\nmsgid \"Australian Postcode\"\nmsgstr \"\"\n\n#: au/models.py:33\nmsgid \"Australian Phone number\"\nmsgstr \"\"\n\n#: be/be_provinces.py:5\nmsgid \"Antwerp\"\nmsgstr \"\"\n\n#: be/be_provinces.py:6\nmsgid \"Brussels\"\nmsgstr \"\"\n\n#: be/be_provinces.py:7\nmsgid \"East Flanders\"\nmsgstr \"\"\n\n#: be/be_provinces.py:8\nmsgid \"Flemish Brabant\"\nmsgstr \"\"\n\n#: be/be_provinces.py:9\nmsgid \"Hainaut\"\nmsgstr \"\"\n\n#: be/be_provinces.py:10\nmsgid \"Liege\"\nmsgstr \"\"\n\n#: be/be_provinces.py:11 nl/nl_provinces.py:9\nmsgid \"Limburg\"\nmsgstr \"\"\n\n#: be/be_provinces.py:12\nmsgid \"Luxembourg\"\nmsgstr \"\"\n\n#: be/be_provinces.py:13\nmsgid \"Namur\"\nmsgstr \"\"\n\n#: be/be_provinces.py:14\nmsgid \"Walloon Brabant\"\nmsgstr \"\"\n\n#: be/be_provinces.py:15\nmsgid \"West Flanders\"\nmsgstr \"\"\n\n#: be/be_regions.py:5\nmsgid \"Brussels Capital Region\"\nmsgstr \"\"\n\n#: be/be_regions.py:6\nmsgid \"Flemish Region\"\nmsgstr \"\"\n\n#: be/be_regions.py:7\nmsgid \"Wallonia\"\nmsgstr \"\"\n\n#: be/forms.py:25\nmsgid \"Enter a valid postal code in the range and format 1XXX - 9XXX.\"\nmsgstr \"\"\n\n#: be/forms.py:48\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\nmsgstr \"\"\n\n#: br/forms.py:22\nmsgid \"Enter a zip code in the format XXXXX-XXX.\"\nmsgstr \"Hãy nhập mã bưu điện theo dạng XXXXX-XXX.\"\n\n#: br/forms.py:31\nmsgid \"Phone numbers must be in XX-XXXX-XXXX format.\"\nmsgstr \"Số điện thoại phải dưới dạng XX-XXXX-XXXX.\"\n\n#: br/forms.py:58\nmsgid \"\"\n\"Select a valid brazilian state. That state is not one of the available \"\n\"states.\"\nmsgstr \"\"\n\n#: br/forms.py:93\nmsgid \"Invalid CPF number.\"\nmsgstr \"Số CPF không hợp lệ.\"\n\n#: br/forms.py:94\nmsgid \"This field requires at most 11 digits or 14 characters.\"\nmsgstr \"Điền nhiều nhất là 11 chữ số hoặc 14 kí tự.\"\n\n#: br/forms.py:133\nmsgid \"Invalid CNPJ number.\"\nmsgstr \"Số CNPJ không hợp lệ.\"\n\n#: br/forms.py:135\nmsgid \"This field requires at least 14 digits\"\nmsgstr \"Bạn phải cần điền ít nhất là 14 chữ số.\"\n\n#: ca/forms.py:29\nmsgid \"Enter a postal code in the format XXX XXX.\"\nmsgstr \"Hãy nhập mã bưu điện theo dạng XXX XXX.\"\n\n#: ca/forms.py:47 us/forms.py:30\nmsgid \"Phone numbers must be in XXX-XXX-XXXX format.\"\nmsgstr \"\"\n\n#: ca/forms.py:69\nmsgid \"Enter a Canadian province or territory.\"\nmsgstr \"\"\n\n#: ca/forms.py:110\nmsgid \"Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.\"\nmsgstr \"\"\n\n#: ch/ch_states.py:5\nmsgid \"Aargau\"\nmsgstr \"\"\n\n#: ch/ch_states.py:6\nmsgid \"Appenzell Innerrhoden\"\nmsgstr \"\"\n\n#: ch/ch_states.py:7\nmsgid \"Appenzell Ausserrhoden\"\nmsgstr \"\"\n\n#: ch/ch_states.py:8\nmsgid \"Basel-Stadt\"\nmsgstr \"\"\n\n#: ch/ch_states.py:9\nmsgid \"Basel-Land\"\nmsgstr \"\"\n\n#: ch/ch_states.py:10\nmsgid \"Berne\"\nmsgstr \"\"\n\n#: ch/ch_states.py:11\nmsgid \"Fribourg\"\nmsgstr \"\"\n\n#: ch/ch_states.py:12\nmsgid \"Geneva\"\nmsgstr \"\"\n\n#: ch/ch_states.py:13\nmsgid \"Glarus\"\nmsgstr \"\"\n\n#: ch/ch_states.py:14\nmsgid \"Graubuenden\"\nmsgstr \"\"\n\n#: ch/ch_states.py:15\nmsgid \"Jura\"\nmsgstr \"\"\n\n#: ch/ch_states.py:16\nmsgid \"Lucerne\"\nmsgstr \"\"\n\n#: ch/ch_states.py:17\nmsgid \"Neuchatel\"\nmsgstr \"\"\n\n#: ch/ch_states.py:18\nmsgid \"Nidwalden\"\nmsgstr \"\"\n\n#: ch/ch_states.py:19\nmsgid \"Obwalden\"\nmsgstr \"\"\n\n#: ch/ch_states.py:20\nmsgid \"Schaffhausen\"\nmsgstr \"\"\n\n#: ch/ch_states.py:21\nmsgid \"Schwyz\"\nmsgstr \"\"\n\n#: ch/ch_states.py:22\nmsgid \"Solothurn\"\nmsgstr \"\"\n\n#: ch/ch_states.py:23\nmsgid \"St. Gallen\"\nmsgstr \"\"\n\n#: ch/ch_states.py:24\nmsgid \"Thurgau\"\nmsgstr \"\"\n\n#: ch/ch_states.py:25\nmsgid \"Ticino\"\nmsgstr \"\"\n\n#: ch/ch_states.py:26\nmsgid \"Uri\"\nmsgstr \"\"\n\n#: ch/ch_states.py:27\nmsgid \"Valais\"\nmsgstr \"\"\n\n#: ch/ch_states.py:28\nmsgid \"Vaud\"\nmsgstr \"\"\n\n#: ch/ch_states.py:29\nmsgid \"Zug\"\nmsgstr \"\"\n\n#: ch/ch_states.py:30\nmsgid \"Zurich\"\nmsgstr \"Thành phố Zurich\"\n\n#: ch/forms.py:37\nmsgid \"Phone numbers must be in 0XX XXX XX XX format.\"\nmsgstr \"\"\n\n#: ch/forms.py:68\nmsgid \"\"\n\"Enter a valid Swiss identity or passport card number in X1234567<0 or \"\n\"1234567890 format.\"\nmsgstr \"\"\n\n#: cl/forms.py:32\nmsgid \"Enter a valid Chilean RUT.\"\nmsgstr \"\"\n\n#: cl/forms.py:33\nmsgid \"Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.\"\nmsgstr \"\"\n\n#: cl/forms.py:34\nmsgid \"The Chilean RUT is not valid.\"\nmsgstr \"\"\n\n#: cn/forms.py:84\nmsgid \"Enter a post code in the format XXXXXX.\"\nmsgstr \"\"\n\n#: cn/forms.py:105\nmsgid \"ID Card Number consists of 15 or 18 digits.\"\nmsgstr \"\"\n\n#: cn/forms.py:106\nmsgid \"Invalid ID Card Number: Wrong checksum\"\nmsgstr \"\"\n\n#: cn/forms.py:107\nmsgid \"Invalid ID Card Number: Wrong birthdate\"\nmsgstr \"\"\n\n#: cn/forms.py:108\nmsgid \"Invalid ID Card Number: Wrong location code\"\nmsgstr \"\"\n\n#: cn/forms.py:193\nmsgid \"Enter a valid phone number.\"\nmsgstr \"\"\n\n#: cn/forms.py:210\nmsgid \"Enter a valid cell number.\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:8\nmsgid \"Prague\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:9\nmsgid \"Central Bohemian Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:10\nmsgid \"South Bohemian Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:11\nmsgid \"Pilsen Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:12\nmsgid \"Carlsbad Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:13\nmsgid \"Usti Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:14\nmsgid \"Liberec Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:15\nmsgid \"Hradec Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:16\nmsgid \"Pardubice Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:17\nmsgid \"Vysocina Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:18\nmsgid \"South Moravian Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:19\nmsgid \"Olomouc Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:20\nmsgid \"Zlin Region\"\nmsgstr \"\"\n\n#: cz/cz_regions.py:21\nmsgid \"Moravian-Silesian Region\"\nmsgstr \"\"\n\n#: cz/forms.py:32 sk/forms.py:33\nmsgid \"Enter a postal code in the format XXXXX or XXX XX.\"\nmsgstr \"\"\n\n#: cz/forms.py:52\nmsgid \"Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.\"\nmsgstr \"\"\n\n#: cz/forms.py:53\nmsgid \"Enter a valid birth number.\"\nmsgstr \"\"\n\n#: cz/forms.py:102\nmsgid \"Enter a valid IC number.\"\nmsgstr \"\"\n\n#: de/de_states.py:5\nmsgid \"Baden-Wuerttemberg\"\nmsgstr \"\"\n\n#: de/de_states.py:6\nmsgid \"Bavaria\"\nmsgstr \"\"\n\n#: de/de_states.py:7\nmsgid \"Berlin\"\nmsgstr \"Berlin\"\n\n#: de/de_states.py:8\nmsgid \"Brandenburg\"\nmsgstr \"\"\n\n#: de/de_states.py:9\nmsgid \"Bremen\"\nmsgstr \"\"\n\n#: de/de_states.py:10\nmsgid \"Hamburg\"\nmsgstr \"Hamburg\"\n\n#: de/de_states.py:11\nmsgid \"Hessen\"\nmsgstr \"\"\n\n#: de/de_states.py:12\nmsgid \"Mecklenburg-Western Pomerania\"\nmsgstr \"\"\n\n#: de/de_states.py:13\nmsgid \"Lower Saxony\"\nmsgstr \"\"\n\n#: de/de_states.py:14\nmsgid \"North Rhine-Westphalia\"\nmsgstr \"\"\n\n#: de/de_states.py:15\nmsgid \"Rhineland-Palatinate\"\nmsgstr \"\"\n\n#: de/de_states.py:16\nmsgid \"Saarland\"\nmsgstr \"\"\n\n#: de/de_states.py:17\nmsgid \"Saxony\"\nmsgstr \"Bang Saxony\"\n\n#: de/de_states.py:18\nmsgid \"Saxony-Anhalt\"\nmsgstr \"\"\n\n#: de/de_states.py:19\nmsgid \"Schleswig-Holstein\"\nmsgstr \"\"\n\n#: de/de_states.py:20\nmsgid \"Thuringia\"\nmsgstr \"\"\n\n#: de/forms.py:20 fi/forms.py:18 fr/forms.py:20\nmsgid \"Enter a zip code in the format XXXXX.\"\nmsgstr \"Hãy nhập mã bưu điện theo mẫu XXXXX.\"\n\n#: de/forms.py:46\nmsgid \"\"\n\"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"format.\"\nmsgstr \"\"\n\n#: es/es_provinces.py:5\nmsgid \"Araba\"\nmsgstr \"\"\n\n#: es/es_provinces.py:6\nmsgid \"Albacete\"\nmsgstr \"\"\n\n#: es/es_provinces.py:7\nmsgid \"Alacant\"\nmsgstr \"\"\n\n#: es/es_provinces.py:8\nmsgid \"Almeria\"\nmsgstr \"\"\n\n#: es/es_provinces.py:9\nmsgid \"Avila\"\nmsgstr \"\"\n\n#: es/es_provinces.py:10\nmsgid \"Badajoz\"\nmsgstr \"\"\n\n#: es/es_provinces.py:11\nmsgid \"Illes Balears\"\nmsgstr \"\"\n\n#: es/es_provinces.py:12\nmsgid \"Barcelona\"\nmsgstr \"\"\n\n#: es/es_provinces.py:13\nmsgid \"Burgos\"\nmsgstr \"\"\n\n#: es/es_provinces.py:14\nmsgid \"Caceres\"\nmsgstr \"\"\n\n#: es/es_provinces.py:15\nmsgid \"Cadiz\"\nmsgstr \"\"\n\n#: es/es_provinces.py:16\nmsgid \"Castello\"\nmsgstr \"\"\n\n#: es/es_provinces.py:17\nmsgid \"Ciudad Real\"\nmsgstr \"\"\n\n#: es/es_provinces.py:18\nmsgid \"Cordoba\"\nmsgstr \"\"\n\n#: es/es_provinces.py:19\nmsgid \"A Coruna\"\nmsgstr \"\"\n\n#: es/es_provinces.py:20\nmsgid \"Cuenca\"\nmsgstr \"\"\n\n#: es/es_provinces.py:21\nmsgid \"Girona\"\nmsgstr \"\"\n\n#: es/es_provinces.py:22\nmsgid \"Granada\"\nmsgstr \"\"\n\n#: es/es_provinces.py:23\nmsgid \"Guadalajara\"\nmsgstr \"\"\n\n#: es/es_provinces.py:24\nmsgid \"Guipuzkoa\"\nmsgstr \"\"\n\n#: es/es_provinces.py:25\nmsgid \"Huelva\"\nmsgstr \"\"\n\n#: es/es_provinces.py:26\nmsgid \"Huesca\"\nmsgstr \"\"\n\n#: es/es_provinces.py:27\nmsgid \"Jaen\"\nmsgstr \"\"\n\n#: es/es_provinces.py:28\nmsgid \"Leon\"\nmsgstr \"\"\n\n#: es/es_provinces.py:29\nmsgid \"Lleida\"\nmsgstr \"\"\n\n#: es/es_provinces.py:30 es/es_regions.py:17\nmsgid \"La Rioja\"\nmsgstr \"\"\n\n#: es/es_provinces.py:31\nmsgid \"Lugo\"\nmsgstr \"\"\n\n#: es/es_provinces.py:32 es/es_regions.py:18\nmsgid \"Madrid\"\nmsgstr \"\"\n\n#: es/es_provinces.py:33\nmsgid \"Malaga\"\nmsgstr \"\"\n\n#: es/es_provinces.py:34\nmsgid \"Murcia\"\nmsgstr \"\"\n\n#: es/es_provinces.py:35\nmsgid \"Navarre\"\nmsgstr \"\"\n\n#: es/es_provinces.py:36\nmsgid \"Ourense\"\nmsgstr \"\"\n\n#: es/es_provinces.py:37\nmsgid \"Asturias\"\nmsgstr \"\"\n\n#: es/es_provinces.py:38\nmsgid \"Palencia\"\nmsgstr \"\"\n\n#: es/es_provinces.py:39\nmsgid \"Las Palmas\"\nmsgstr \"\"\n\n#: es/es_provinces.py:40\nmsgid \"Pontevedra\"\nmsgstr \"\"\n\n#: es/es_provinces.py:41\nmsgid \"Salamanca\"\nmsgstr \"\"\n\n#: es/es_provinces.py:42\nmsgid \"Santa Cruz de Tenerife\"\nmsgstr \"\"\n\n#: es/es_provinces.py:43 es/es_regions.py:11\nmsgid \"Cantabria\"\nmsgstr \"\"\n\n#: es/es_provinces.py:44\nmsgid \"Segovia\"\nmsgstr \"\"\n\n#: es/es_provinces.py:45\nmsgid \"Seville\"\nmsgstr \"\"\n\n#: es/es_provinces.py:46\nmsgid \"Soria\"\nmsgstr \"\"\n\n#: es/es_provinces.py:47\nmsgid \"Tarragona\"\nmsgstr \"\"\n\n#: es/es_provinces.py:48\nmsgid \"Teruel\"\nmsgstr \"\"\n\n#: es/es_provinces.py:49\nmsgid \"Toledo\"\nmsgstr \"\"\n\n#: es/es_provinces.py:50\nmsgid \"Valencia\"\nmsgstr \"\"\n\n#: es/es_provinces.py:51\nmsgid \"Valladolid\"\nmsgstr \"\"\n\n#: es/es_provinces.py:52\nmsgid \"Bizkaia\"\nmsgstr \"\"\n\n#: es/es_provinces.py:53\nmsgid \"Zamora\"\nmsgstr \"\"\n\n#: es/es_provinces.py:54\nmsgid \"Zaragoza\"\nmsgstr \"\"\n\n#: es/es_provinces.py:55\nmsgid \"Ceuta\"\nmsgstr \"\"\n\n#: es/es_provinces.py:56\nmsgid \"Melilla\"\nmsgstr \"\"\n\n#: es/es_regions.py:5\nmsgid \"Andalusia\"\nmsgstr \"\"\n\n#: es/es_regions.py:6\nmsgid \"Aragon\"\nmsgstr \"\"\n\n#: es/es_regions.py:7\nmsgid \"Principality of Asturias\"\nmsgstr \"\"\n\n#: es/es_regions.py:8\nmsgid \"Balearic Islands\"\nmsgstr \"\"\n\n#: es/es_regions.py:9\nmsgid \"Basque Country\"\nmsgstr \"\"\n\n#: es/es_regions.py:10\nmsgid \"Canary Islands\"\nmsgstr \"\"\n\n#: es/es_regions.py:12\nmsgid \"Castile-La Mancha\"\nmsgstr \"\"\n\n#: es/es_regions.py:13\nmsgid \"Castile and Leon\"\nmsgstr \"\"\n\n#: es/es_regions.py:14\nmsgid \"Catalonia\"\nmsgstr \"\"\n\n#: es/es_regions.py:15\nmsgid \"Extremadura\"\nmsgstr \"\"\n\n#: es/es_regions.py:16\nmsgid \"Galicia\"\nmsgstr \"\"\n\n#: es/es_regions.py:19\nmsgid \"Region of Murcia\"\nmsgstr \"\"\n\n#: es/es_regions.py:20\nmsgid \"Foral Community of Navarre\"\nmsgstr \"\"\n\n#: es/es_regions.py:21\nmsgid \"Valencian Community\"\nmsgstr \"\"\n\n#: es/forms.py:26\nmsgid \"Enter a valid postal code in the range and format 01XXX - 52XXX.\"\nmsgstr \"Hãy nhập mã số bưu điện hợp lệ theo dạng 01XXX - 52XXX.\"\n\n#: es/forms.py:46\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or \"\n\"9XXXXXXXX.\"\nmsgstr \"\"\n\"Hãy nhập số điện thoại hợp lệ theo dạng 6XXXXXXXX, 8XXXXXXXX hoặc 9XXXXXXXX.\"\n\n#: es/forms.py:73\nmsgid \"Please enter a valid NIF, NIE, or CIF.\"\nmsgstr \"Hãy nhập NIF, NIE, hoặc CIF hợp lệ.\"\n\n#: es/forms.py:74\nmsgid \"Please enter a valid NIF or NIE.\"\nmsgstr \"Hãy nhập NIF hoặc NIE hợp lệ.\"\n\n#: es/forms.py:75\nmsgid \"Invalid checksum for NIF.\"\nmsgstr \"\"\n\n#: es/forms.py:76\nmsgid \"Invalid checksum for NIE.\"\nmsgstr \"\"\n\n#: es/forms.py:77\nmsgid \"Invalid checksum for CIF.\"\nmsgstr \"\"\n\n#: es/forms.py:149\nmsgid \"\"\n\"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.\"\nmsgstr \"Hãy nhập số tài khoản ngân hàng theo dạng XXXX-XXXX-XX-XXXXXXXXXX.\"\n\n#: es/forms.py:150\nmsgid \"Invalid checksum for bank account number.\"\nmsgstr \"\"\n\n#: fi/forms.py:33\nmsgid \"Enter a valid Finnish social security number.\"\nmsgstr \"\"\n\n#: fr/forms.py:35\nmsgid \"Phone numbers must be in 0X XX XX XX XX format.\"\nmsgstr \"\"\n\n#: gb/forms.py:25\nmsgid \"Enter a valid postcode.\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:11\nmsgid \"Bedfordshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:12\nmsgid \"Buckinghamshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:14\nmsgid \"Cheshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:15\nmsgid \"Cornwall and Isles of Scilly\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:16\nmsgid \"Cumbria\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:17\nmsgid \"Derbyshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:18\nmsgid \"Devon\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:19\nmsgid \"Dorset\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:20\nmsgid \"Durham\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:21\nmsgid \"East Sussex\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:22\nmsgid \"Essex\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:23\nmsgid \"Gloucestershire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:24\nmsgid \"Greater London\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:25\nmsgid \"Greater Manchester\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:26\nmsgid \"Hampshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:27\nmsgid \"Hertfordshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:28\nmsgid \"Kent\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:29\nmsgid \"Lancashire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:30\nmsgid \"Leicestershire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:31\nmsgid \"Lincolnshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:32\nmsgid \"Merseyside\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:33\nmsgid \"Norfolk\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:34\nmsgid \"North Yorkshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:35\nmsgid \"Northamptonshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:36\nmsgid \"Northumberland\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:37\nmsgid \"Nottinghamshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:38\nmsgid \"Oxfordshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:39\nmsgid \"Shropshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:40\nmsgid \"Somerset\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:41\nmsgid \"South Yorkshire\"\nmsgstr \"Vùng South Yorkshire\"\n\n#: gb/gb_regions.py:42\nmsgid \"Staffordshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:43\nmsgid \"Suffolk\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:44\nmsgid \"Surrey\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:45\nmsgid \"Tyne and Wear\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:46\nmsgid \"Warwickshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:47\nmsgid \"West Midlands\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:48\nmsgid \"West Sussex\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:49\nmsgid \"West Yorkshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:50\nmsgid \"Wiltshire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:51\nmsgid \"Worcestershire\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:55\nmsgid \"County Antrim\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:56\nmsgid \"County Armagh\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:57\nmsgid \"County Down\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:58\nmsgid \"County Fermanagh\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:59\nmsgid \"County Londonderry\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:60\nmsgid \"County Tyrone\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:64\nmsgid \"Clwyd\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:65\nmsgid \"Dyfed\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:66\nmsgid \"Gwent\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:67\nmsgid \"Gwynedd\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:68\nmsgid \"Mid Glamorgan\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:69\nmsgid \"Powys\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:70\nmsgid \"South Glamorgan\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:71\nmsgid \"West Glamorgan\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:75\nmsgid \"Borders\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:76\nmsgid \"Central Scotland\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:77\nmsgid \"Dumfries and Galloway\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:78\nmsgid \"Fife\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:79\nmsgid \"Grampian\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:80\nmsgid \"Highland\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:81\nmsgid \"Lothian\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:82\nmsgid \"Orkney Islands\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:83\nmsgid \"Shetland Islands\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:84\nmsgid \"Strathclyde\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:85\nmsgid \"Tayside\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:86\nmsgid \"Western Isles\"\nmsgstr \"\"\n\n#: gb/gb_regions.py:90\nmsgid \"England\"\nmsgstr \"Nước Anh\"\n\n#: gb/gb_regions.py:91\nmsgid \"Northern Ireland\"\nmsgstr \"Bắc Ai-len\"\n\n#: gb/gb_regions.py:92\nmsgid \"Scotland\"\nmsgstr \"Sccotland\"\n\n#: gb/gb_regions.py:93\nmsgid \"Wales\"\nmsgstr \"Xứ Wale\"\n\n#: hk/forms.py:37\n#, python-format\nmsgid \"Phone number should not start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:40\n#, python-format\nmsgid \"Phone number must be in one of the following formats: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:42\n#, python-format\nmsgid \"Phone number should start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hr/forms.py:76\nmsgid \"Enter a valid 13 digit JMBG\"\nmsgstr \"\"\n\n#: hr/forms.py:77\nmsgid \"Error in date segment\"\nmsgstr \"\"\n\n#: hr/forms.py:123\nmsgid \"Enter a valid 11 digit OIB\"\nmsgstr \"\"\n\n#: hr/forms.py:152 id/forms.py:112\nmsgid \"Enter a valid vehicle license plate number\"\nmsgstr \"\"\n\n#: hr/forms.py:153\nmsgid \"Enter a valid location code\"\nmsgstr \"\"\n\n#: hr/forms.py:154\nmsgid \"Number part cannot be zero\"\nmsgstr \"\"\n\n#: hr/forms.py:190\nmsgid \"Enter a valid 5 digit postal code\"\nmsgstr \"\"\n\n#: hr/forms.py:218 id/forms.py:72 nl/forms.py:56\nmsgid \"Enter a valid phone number\"\nmsgstr \"Hãy nhập số điện thoại có hiệu lực\"\n\n#: hr/forms.py:219\nmsgid \"Enter a valid area or mobile network code\"\nmsgstr \"\"\n\n#: hr/forms.py:220\nmsgid \"The phone nubmer is too long\"\nmsgstr \"\"\n\n#: hr/forms.py:258\nmsgid \"Enter a valid 19 digit JMBAG starting with 601983\"\nmsgstr \"\"\n\n#: hr/forms.py:259\nmsgid \"Card issue number cannot be zero\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:14\nmsgid \"Grad Zagreb\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:15\nmsgid \"Bjelovarsko-bilogorska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:16\nmsgid \"Brodsko-posavska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:17\nmsgid \"Dubrovačko-neretvanska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:18\nmsgid \"Istarska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:19\nmsgid \"Karlovačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:20\nmsgid \"Koprivničko-križevačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:21\nmsgid \"Krapinsko-zagorska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:22\nmsgid \"Ličko-senjska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:23\nmsgid \"Međimurska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:24\nmsgid \"Osječko-baranjska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:25\nmsgid \"Požeško-slavonska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:26\nmsgid \"Primorsko-goranska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:27\nmsgid \"Sisačko-moslavačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:28\nmsgid \"Splitsko-dalmatinska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:29\nmsgid \"Šibensko-kninska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:30\nmsgid \"Varaždinska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:31\nmsgid \"Virovitičko-podravska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:32\nmsgid \"Vukovarsko-srijemska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:33\nmsgid \"Zadarska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:34\nmsgid \"Zagrebačka županija\"\nmsgstr \"\"\n\n#: id/forms.py:31\nmsgid \"Enter a valid post code\"\nmsgstr \"\"\n\n#: id/forms.py:176\nmsgid \"Enter a valid NIK/KTP number\"\nmsgstr \"\"\n\n#: id/id_choices.py:15\nmsgid \"Aceh\"\nmsgstr \"\"\n\n#: id/id_choices.py:16 id/id_choices.py:79\nmsgid \"Bali\"\nmsgstr \"\"\n\n#: id/id_choices.py:17 id/id_choices.py:51\nmsgid \"Banten\"\nmsgstr \"\"\n\n#: id/id_choices.py:18 id/id_choices.py:60\nmsgid \"Bengkulu\"\nmsgstr \"\"\n\n#: id/id_choices.py:19 id/id_choices.py:53\nmsgid \"Yogyakarta\"\nmsgstr \"\"\n\n#: id/id_choices.py:20 id/id_choices.py:57\nmsgid \"Jakarta\"\nmsgstr \"\"\n\n#: id/id_choices.py:21 id/id_choices.py:81\nmsgid \"Gorontalo\"\nmsgstr \"\"\n\n#: id/id_choices.py:22 id/id_choices.py:63\nmsgid \"Jambi\"\nmsgstr \"\"\n\n#: id/id_choices.py:23\nmsgid \"Jawa Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:24\nmsgid \"Jawa Tengah\"\nmsgstr \"\"\n\n#: id/id_choices.py:25\nmsgid \"Jawa Timur\"\nmsgstr \"\"\n\n#: id/id_choices.py:26 id/id_choices.py:94\nmsgid \"Kalimantan Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:27 id/id_choices.py:72\nmsgid \"Kalimantan Selatan\"\nmsgstr \"\"\n\n#: id/id_choices.py:28 id/id_choices.py:95\nmsgid \"Kalimantan Tengah\"\nmsgstr \"\"\n\n#: id/id_choices.py:29 id/id_choices.py:96\nmsgid \"Kalimantan Timur\"\nmsgstr \"\"\n\n#: id/id_choices.py:30\nmsgid \"Kepulauan Bangka-Belitung\"\nmsgstr \"\"\n\n#: id/id_choices.py:31 id/id_choices.py:68\nmsgid \"Kepulauan Riau\"\nmsgstr \"\"\n\n#: id/id_choices.py:32 id/id_choices.py:61\nmsgid \"Lampung\"\nmsgstr \"\"\n\n#: id/id_choices.py:33 id/id_choices.py:76\nmsgid \"Maluku\"\nmsgstr \"\"\n\n#: id/id_choices.py:34 id/id_choices.py:77\nmsgid \"Maluku Utara\"\nmsgstr \"\"\n\n#: id/id_choices.py:35\nmsgid \"Nusa Tenggara Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:36\nmsgid \"Nusa Tenggara Timur\"\nmsgstr \"\"\n\n#: id/id_choices.py:37\nmsgid \"Papua\"\nmsgstr \"\"\n\n#: id/id_choices.py:38\nmsgid \"Papua Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:39 id/id_choices.py:66\nmsgid \"Riau\"\nmsgstr \"\"\n\n#: id/id_choices.py:40 id/id_choices.py:74\nmsgid \"Sulawesi Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:41 id/id_choices.py:75\nmsgid \"Sulawesi Selatan\"\nmsgstr \"\"\n\n#: id/id_choices.py:42 id/id_choices.py:82\nmsgid \"Sulawesi Tengah\"\nmsgstr \"\"\n\n#: id/id_choices.py:43 id/id_choices.py:85\nmsgid \"Sulawesi Tenggara\"\nmsgstr \"\"\n\n#: id/id_choices.py:44\nmsgid \"Sulawesi Utara\"\nmsgstr \"\"\n\n#: id/id_choices.py:45 id/id_choices.py:58\nmsgid \"Sumatera Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:46 id/id_choices.py:62\nmsgid \"Sumatera Selatan\"\nmsgstr \"\"\n\n#: id/id_choices.py:47 id/id_choices.py:64\nmsgid \"Sumatera Utara\"\nmsgstr \"\"\n\n#: id/id_choices.py:52\nmsgid \"Magelang\"\nmsgstr \"\"\n\n#: id/id_choices.py:54\nmsgid \"Surakarta - Solo\"\nmsgstr \"\"\n\n#: id/id_choices.py:55\nmsgid \"Madiun\"\nmsgstr \"\"\n\n#: id/id_choices.py:56\nmsgid \"Kediri\"\nmsgstr \"\"\n\n#: id/id_choices.py:59\nmsgid \"Tapanuli\"\nmsgstr \"\"\n\n#: id/id_choices.py:65\nmsgid \"Nanggroe Aceh Darussalam\"\nmsgstr \"\"\n\n#: id/id_choices.py:67\nmsgid \"Kepulauan Bangka Belitung\"\nmsgstr \"\"\n\n#: id/id_choices.py:69\nmsgid \"Corps Consulate\"\nmsgstr \"\"\n\n#: id/id_choices.py:70\nmsgid \"Corps Diplomatic\"\nmsgstr \"\"\n\n#: id/id_choices.py:71\nmsgid \"Bandung\"\nmsgstr \"\"\n\n#: id/id_choices.py:73\nmsgid \"Sulawesi Utara Daratan\"\nmsgstr \"\"\n\n#: id/id_choices.py:78\nmsgid \"NTT - Timor\"\nmsgstr \"\"\n\n#: id/id_choices.py:80\nmsgid \"Sulawesi Utara Kepulauan\"\nmsgstr \"\"\n\n#: id/id_choices.py:83\nmsgid \"NTB - Lombok\"\nmsgstr \"\"\n\n#: id/id_choices.py:84\nmsgid \"Papua dan Papua Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:86\nmsgid \"Cirebon\"\nmsgstr \"\"\n\n#: id/id_choices.py:87\nmsgid \"NTB - Sumbawa\"\nmsgstr \"\"\n\n#: id/id_choices.py:88\nmsgid \"NTT - Flores\"\nmsgstr \"\"\n\n#: id/id_choices.py:89\nmsgid \"NTT - Sumba\"\nmsgstr \"\"\n\n#: id/id_choices.py:90\nmsgid \"Bogor\"\nmsgstr \"\"\n\n#: id/id_choices.py:91\nmsgid \"Pekalongan\"\nmsgstr \"\"\n\n#: id/id_choices.py:92\nmsgid \"Semarang\"\nmsgstr \"\"\n\n#: id/id_choices.py:93\nmsgid \"Pati\"\nmsgstr \"\"\n\n#: id/id_choices.py:97\nmsgid \"Surabaya\"\nmsgstr \"\"\n\n#: id/id_choices.py:98\nmsgid \"Madura\"\nmsgstr \"\"\n\n#: id/id_choices.py:99\nmsgid \"Malang\"\nmsgstr \"\"\n\n#: id/id_choices.py:100\nmsgid \"Jember\"\nmsgstr \"\"\n\n#: id/id_choices.py:101\nmsgid \"Banyumas\"\nmsgstr \"\"\n\n#: id/id_choices.py:102\nmsgid \"Federal Government\"\nmsgstr \"\"\n\n#: id/id_choices.py:103\nmsgid \"Bojonegoro\"\nmsgstr \"\"\n\n#: id/id_choices.py:104\nmsgid \"Purwakarta\"\nmsgstr \"\"\n\n#: id/id_choices.py:105\nmsgid \"Sidoarjo\"\nmsgstr \"\"\n\n#: id/id_choices.py:106\nmsgid \"Garut\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:8\nmsgid \"Antrim\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:9\nmsgid \"Armagh\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:10\nmsgid \"Carlow\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:11\nmsgid \"Cavan\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:12\nmsgid \"Clare\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:13\nmsgid \"Cork\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:14\nmsgid \"Derry\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:15\nmsgid \"Donegal\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:16\nmsgid \"Down\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:17\nmsgid \"Dublin\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:18\nmsgid \"Fermanagh\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:19\nmsgid \"Galway\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:20\nmsgid \"Kerry\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:21\nmsgid \"Kildare\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:22\nmsgid \"Kilkenny\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:23\nmsgid \"Laois\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:24\nmsgid \"Leitrim\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:25\nmsgid \"Limerick\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:26\nmsgid \"Longford\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:27\nmsgid \"Louth\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:28\nmsgid \"Mayo\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:29\nmsgid \"Meath\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:30\nmsgid \"Monaghan\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:31\nmsgid \"Offaly\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:32\nmsgid \"Roscommon\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:33\nmsgid \"Sligo\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:34\nmsgid \"Tipperary\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:35\nmsgid \"Tyrone\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:36\nmsgid \"Waterford\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:37\nmsgid \"Westmeath\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:38\nmsgid \"Wexford\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:39\nmsgid \"Wicklow\"\nmsgstr \"\"\n\n#: il/forms.py:32\nmsgid \"Enter a postal code in the format XXXXX\"\nmsgstr \"\"\n\n#: il/forms.py:51\nmsgid \"Enter a valid ID number.\"\nmsgstr \"\"\n\n#: in_/forms.py:41\nmsgid \"Enter a zip code in the format XXXXXX or XXX XXX.\"\nmsgstr \"\"\n\n#: in_/forms.py:64\nmsgid \"Enter an Indian state or territory.\"\nmsgstr \"\"\n\n#: in_/forms.py:103\nmsgid \"Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.\"\nmsgstr \"\"\n\n#: is_/forms.py:22\nmsgid \"\"\n\"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.\"\nmsgstr \"\"\n\n#: is_/forms.py:23\nmsgid \"The Icelandic identification number is not valid.\"\nmsgstr \"\"\n\n#: it/forms.py:21\nmsgid \"Enter a valid zip code.\"\nmsgstr \"Hãy nhập mã bưu điện hợp lệ.\"\n\n#: it/forms.py:48\nmsgid \"Enter a valid Social Security number.\"\nmsgstr \"Hãy nhập số Bảo hiểm Xã hội hợp lệ.\"\n\n#: it/forms.py:73\nmsgid \"Enter a valid VAT number.\"\nmsgstr \"Hãy nhập số VAT hợp lệ.\"\n\n#: jp/forms.py:19\nmsgid \"Enter a postal code in the format XXXXXXX or XXX-XXXX.\"\nmsgstr \"Hãy nhập mã bưu điện theo dạng XXXXXXX hoặc XXX-XXXX.\"\n\n#: jp/jp_prefectures.py:4\nmsgid \"Hokkaido\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:5\nmsgid \"Aomori\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:6\nmsgid \"Iwate\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:7\nmsgid \"Miyagi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:8\nmsgid \"Akita\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:9\nmsgid \"Yamagata\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:10\nmsgid \"Fukushima\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:11\nmsgid \"Ibaraki\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:12\nmsgid \"Tochigi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:13\nmsgid \"Gunma\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:14\nmsgid \"Saitama\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:15\nmsgid \"Chiba\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:16\nmsgid \"Tokyo\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:17\nmsgid \"Kanagawa\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:18\nmsgid \"Yamanashi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:19\nmsgid \"Nagano\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:20\nmsgid \"Niigata\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:21\nmsgid \"Toyama\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:22\nmsgid \"Ishikawa\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:23\nmsgid \"Fukui\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:24\nmsgid \"Gifu\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:25\nmsgid \"Shizuoka\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:26\nmsgid \"Aichi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:27\nmsgid \"Mie\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:28\nmsgid \"Shiga\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:29\nmsgid \"Kyoto\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:30\nmsgid \"Osaka\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:31\nmsgid \"Hyogo\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:32\nmsgid \"Nara\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:33\nmsgid \"Wakayama\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:34\nmsgid \"Tottori\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:35\nmsgid \"Shimane\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:36\nmsgid \"Okayama\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:37\nmsgid \"Hiroshima\"\nmsgstr \"Thành phố Hirosima\"\n\n#: jp/jp_prefectures.py:38\nmsgid \"Yamaguchi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:39\nmsgid \"Tokushima\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:40\nmsgid \"Kagawa\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:41\nmsgid \"Ehime\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:42\nmsgid \"Kochi\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:43\nmsgid \"Fukuoka\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:44\nmsgid \"Saga\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:45\nmsgid \"Nagasaki\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:46\nmsgid \"Kumamoto\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:47\nmsgid \"Oita\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:48\nmsgid \"Miyazaki\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:49\nmsgid \"Kagoshima\"\nmsgstr \"\"\n\n#: jp/jp_prefectures.py:50\nmsgid \"Okinawa\"\nmsgstr \"Thành phố Okinawa\"\n\n#: kw/forms.py:27\nmsgid \"Enter a valid Kuwaiti Civil ID number\"\nmsgstr \"\"\n\n#: mk/forms.py:18\nmsgid \"\"\n\"Identity card numbers must contain either 4 to 7 digits or an uppercase \"\n\"letter and 7 digits.\"\nmsgstr \"\"\n\n#: mk/forms.py:57 si/forms.py:24\nmsgid \"This field should contain exactly 13 digits.\"\nmsgstr \"\"\n\n#: mk/forms.py:58\nmsgid \"The first 7 digits of the UMCN must represent a valid past date.\"\nmsgstr \"\"\n\n#: mk/forms.py:59\nmsgid \"The UMCN is not valid.\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:10\nmsgid \"Aerodrom\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:11\nmsgid \"Aračinovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:12\nmsgid \"Berovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:13\nmsgid \"Bitola\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:14\nmsgid \"Bogdanci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:15\nmsgid \"Bogovinje\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:16\nmsgid \"Bosilovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:17\nmsgid \"Brvenica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:18\nmsgid \"Butel\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:19\nmsgid \"Valandovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:20\nmsgid \"Vasilevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:21\nmsgid \"Vevčani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:22\nmsgid \"Veles\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:23\nmsgid \"Vinica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:24\nmsgid \"Vraneštica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:25\nmsgid \"Vrapčište\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:26\nmsgid \"Gazi Baba\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:27\nmsgid \"Gevgelija\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:28\nmsgid \"Gostivar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:29\nmsgid \"Gradsko\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:30\nmsgid \"Debar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:31\nmsgid \"Debarca\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:32\nmsgid \"Delčevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:33\nmsgid \"Demir Kapija\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:34\nmsgid \"Demir Hisar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:35\nmsgid \"Dolneni\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:36\nmsgid \"Drugovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:37\nmsgid \"Gjorče Petrov\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:38\nmsgid \"Želino\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:39\nmsgid \"Zajas\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:40\nmsgid \"Zelenikovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:41\nmsgid \"Zrnovci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:42\nmsgid \"Ilinden\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:43\nmsgid \"Jegunovce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:44\nmsgid \"Kavadarci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:45\nmsgid \"Karbinci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:46\nmsgid \"Karpoš\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:47\nmsgid \"Kisela Voda\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:48\nmsgid \"Kičevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:49\nmsgid \"Konče\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:50\nmsgid \"Koćani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:51\nmsgid \"Kratovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:52\nmsgid \"Kriva Palanka\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:53\nmsgid \"Krivogaštani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:54\nmsgid \"Kruševo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:55\nmsgid \"Kumanovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:56\nmsgid \"Lipkovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:57\nmsgid \"Lozovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:58\nmsgid \"Mavrovo i Rostuša\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:59\nmsgid \"Makedonska Kamenica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:60\nmsgid \"Makedonski Brod\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:61\nmsgid \"Mogila\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:62\nmsgid \"Negotino\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:63\nmsgid \"Novaci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:64\nmsgid \"Novo Selo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:65\nmsgid \"Oslomej\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:66\nmsgid \"Ohrid\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:67\nmsgid \"Petrovec\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:68\nmsgid \"Pehčevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:69\nmsgid \"Plasnica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:70\nmsgid \"Prilep\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:71\nmsgid \"Probištip\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:72\nmsgid \"Radoviš\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:73\nmsgid \"Rankovce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:74\nmsgid \"Resen\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:75\nmsgid \"Rosoman\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:76\nmsgid \"Saraj\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:77\nmsgid \"Sveti Nikole\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:78\nmsgid \"Sopište\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:79\nmsgid \"Star Dojran\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:80\nmsgid \"Staro Nagoričane\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:81\nmsgid \"Struga\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:82\nmsgid \"Strumica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:83\nmsgid \"Studeničani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:84\nmsgid \"Tearce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:85\nmsgid \"Tetovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:86\nmsgid \"Centar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:87\nmsgid \"Centar-Župa\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:88\nmsgid \"Čair\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:89\nmsgid \"Čaška\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:90\nmsgid \"Češinovo-Obleševo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:91\nmsgid \"Čučer-Sandevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:92\nmsgid \"Štip\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:93\nmsgid \"Šuto Orizari\"\nmsgstr \"\"\n\n#: mk/models.py:11\nmsgid \"Macedonian identity card number\"\nmsgstr \"\"\n\n#: mk/models.py:25\nmsgid \"A Macedonian municipality (2 character code)\"\nmsgstr \"\"\n\n#: mk/models.py:35\nmsgid \"Unique master citizen number (13 digits)\"\nmsgstr \"\"\n\n#: mx/forms.py:67\nmsgid \"Enter a valid zip code in the format XXXXX.\"\nmsgstr \"\"\n\n#: mx/forms.py:110\nmsgid \"Enter a valid RFC.\"\nmsgstr \"\"\n\n#: mx/forms.py:111\nmsgid \"Invalid checksum for RFC.\"\nmsgstr \"\"\n\n#: mx/forms.py:191\nmsgid \"Enter a valid CURP.\"\nmsgstr \"\"\n\n#: mx/forms.py:192\nmsgid \"Invalid checksum for CURP.\"\nmsgstr \"\"\n\n#: mx/models.py:14\nmsgid \"Mexico state (three uppercase letters)\"\nmsgstr \"\"\n\n#: mx/models.py:27\nmsgid \"Mexico zip code\"\nmsgstr \"\"\n\n#: mx/models.py:44\nmsgid \"Mexican RFC\"\nmsgstr \"\"\n\n#: mx/models.py:61\nmsgid \"Mexican CURP\"\nmsgstr \"\"\n\n#: mx/mx_states.py:14\nmsgid \"Aguascalientes\"\nmsgstr \"\"\n\n#: mx/mx_states.py:15\nmsgid \"Baja California\"\nmsgstr \"\"\n\n#: mx/mx_states.py:16\nmsgid \"Baja California Sur\"\nmsgstr \"\"\n\n#: mx/mx_states.py:17\nmsgid \"Campeche\"\nmsgstr \"\"\n\n#: mx/mx_states.py:18\nmsgid \"Chihuahua\"\nmsgstr \"\"\n\n#: mx/mx_states.py:19\nmsgid \"Chiapas\"\nmsgstr \"\"\n\n#: mx/mx_states.py:20\nmsgid \"Coahuila\"\nmsgstr \"\"\n\n#: mx/mx_states.py:21\nmsgid \"Colima\"\nmsgstr \"\"\n\n#: mx/mx_states.py:22\nmsgid \"Distrito Federal\"\nmsgstr \"\"\n\n#: mx/mx_states.py:23\nmsgid \"Durango\"\nmsgstr \"\"\n\n#: mx/mx_states.py:24\nmsgid \"Guerrero\"\nmsgstr \"\"\n\n#: mx/mx_states.py:25\nmsgid \"Guanajuato\"\nmsgstr \"\"\n\n#: mx/mx_states.py:26\nmsgid \"Hidalgo\"\nmsgstr \"\"\n\n#: mx/mx_states.py:27\nmsgid \"Jalisco\"\nmsgstr \"\"\n\n#: mx/mx_states.py:28\nmsgid \"Estado de México\"\nmsgstr \"\"\n\n#: mx/mx_states.py:29\nmsgid \"Michoacán\"\nmsgstr \"\"\n\n#: mx/mx_states.py:30\nmsgid \"Morelos\"\nmsgstr \"\"\n\n#: mx/mx_states.py:31\nmsgid \"Nayarit\"\nmsgstr \"\"\n\n#: mx/mx_states.py:32\nmsgid \"Nuevo León\"\nmsgstr \"\"\n\n#: mx/mx_states.py:33\nmsgid \"Oaxaca\"\nmsgstr \"\"\n\n#: mx/mx_states.py:34\nmsgid \"Puebla\"\nmsgstr \"\"\n\n#: mx/mx_states.py:35\nmsgid \"Querétaro\"\nmsgstr \"\"\n\n#: mx/mx_states.py:36\nmsgid \"Quintana Roo\"\nmsgstr \"\"\n\n#: mx/mx_states.py:37\nmsgid \"Sinaloa\"\nmsgstr \"\"\n\n#: mx/mx_states.py:38\nmsgid \"San Luis Potosí\"\nmsgstr \"\"\n\n#: mx/mx_states.py:39\nmsgid \"Sonora\"\nmsgstr \"\"\n\n#: mx/mx_states.py:40\nmsgid \"Tabasco\"\nmsgstr \"\"\n\n#: mx/mx_states.py:41\nmsgid \"Tamaulipas\"\nmsgstr \"\"\n\n#: mx/mx_states.py:42\nmsgid \"Tlaxcala\"\nmsgstr \"\"\n\n#: mx/mx_states.py:43\nmsgid \"Veracruz\"\nmsgstr \"\"\n\n#: mx/mx_states.py:44\nmsgid \"Yucatán\"\nmsgstr \"\"\n\n#: mx/mx_states.py:45\nmsgid \"Zacatecas\"\nmsgstr \"\"\n\n#: nl/forms.py:26\nmsgid \"Enter a valid postal code\"\nmsgstr \"Hãy nhập mã bưu điện có hiệu lực\"\n\n#: nl/forms.py:82\nmsgid \"Enter a valid SoFi number\"\nmsgstr \"Hãy nhập số SoFi hợp lệ\"\n\n#: nl/nl_provinces.py:4\nmsgid \"Drenthe\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:5\nmsgid \"Flevoland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:6\nmsgid \"Friesland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:7\nmsgid \"Gelderland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:8\nmsgid \"Groningen\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:10\nmsgid \"Noord-Brabant\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:11\nmsgid \"Noord-Holland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:12\nmsgid \"Overijssel\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:13\nmsgid \"Utrecht\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:14\nmsgid \"Zeeland\"\nmsgstr \"\"\n\n#: nl/nl_provinces.py:15\nmsgid \"Zuid-Holland\"\nmsgstr \"\"\n\n#: no/forms.py:39\nmsgid \"Enter a valid Norwegian social security number.\"\nmsgstr \"Hãy nhập số an sinh xã hội có hiệu lực\"\n\n#: pe/forms.py:28\nmsgid \"This field requires 8 digits.\"\nmsgstr \"Bạn cần điền 8 chữ số.\"\n\n#: pe/forms.py:56\nmsgid \"This field requires 11 digits.\"\nmsgstr \"Bạn cần điền 11 chữ số.\"\n\n#: pl/forms.py:42\nmsgid \"National Identification Number consists of 11 digits.\"\nmsgstr \"Số CMTND gồm 11 chữ số\"\n\n#: pl/forms.py:43\nmsgid \"Wrong checksum for the National Identification Number.\"\nmsgstr \"\"\n\n#: pl/forms.py:79\nmsgid \"National ID Card Number consists of 3 letters and 6 digits.\"\nmsgstr \"\"\n\n#: pl/forms.py:80\nmsgid \"Wrong checksum for the National ID Card Number.\"\nmsgstr \"\"\n\n#: pl/forms.py:131\nmsgid \"\"\n\"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or \"\n\"XXXXXXXXXX.\"\nmsgstr \"\"\n\n#: pl/forms.py:132\nmsgid \"Wrong checksum for the Tax Number (NIP).\"\nmsgstr \"\"\n\n#: pl/forms.py:171\nmsgid \"National Business Register Number (REGON) consists of 9 or 14 digits.\"\nmsgstr \"\"\n\n#: pl/forms.py:172\nmsgid \"Wrong checksum for the National Business Register Number (REGON).\"\nmsgstr \"\"\n\n#: pl/forms.py:212\nmsgid \"Enter a postal code in the format XX-XXX.\"\nmsgstr \"Hãy nhập mã bưu điện theo mẫu XX-XXX\"\n\n#: pl/pl_voivodeships.py:8\nmsgid \"Lower Silesia\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:9\nmsgid \"Kuyavia-Pomerania\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:10\nmsgid \"Lublin\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:11\nmsgid \"Lubusz\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:12\nmsgid \"Lodz\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:13\nmsgid \"Lesser Poland\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:14\nmsgid \"Masovia\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:15\nmsgid \"Opole\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:16\nmsgid \"Subcarpatia\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:17\nmsgid \"Podlasie\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:18\nmsgid \"Pomerania\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:19\nmsgid \"Silesia\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:20\nmsgid \"Swietokrzyskie\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:21\nmsgid \"Warmia-Masuria\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:22\nmsgid \"Greater Poland\"\nmsgstr \"\"\n\n#: pl/pl_voivodeships.py:23\nmsgid \"West Pomerania\"\nmsgstr \"\"\n\n#: pt/forms.py:19\nmsgid \"Enter a zip code in the format XXXX-XXX.\"\nmsgstr \"\"\n\n#: pt/forms.py:39\nmsgid \"Phone numbers must have 9 digits, or start by + or 00.\"\nmsgstr \"\"\n\n#: ro/forms.py:22\nmsgid \"Enter a valid CIF.\"\nmsgstr \"\"\n\n#: ro/forms.py:59\nmsgid \"Enter a valid CNP.\"\nmsgstr \"\"\n\n#: ro/forms.py:143\nmsgid \"Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format\"\nmsgstr \"\"\n\n#: ro/forms.py:175\nmsgid \"Phone numbers must be in XXXX-XXXXXX format.\"\nmsgstr \"\"\n\n#: ro/forms.py:200\nmsgid \"Enter a valid postal code in the format XXXXXX\"\nmsgstr \"\"\n\n#: ru/forms.py:37\nmsgid \"Enter a postal code in the format XXXXXX.\"\nmsgstr \"\"\n\n#: ru/forms.py:50\nmsgid \"Enter a passport number in the format XXXX XXXXXX.\"\nmsgstr \"\"\n\n#: ru/forms.py:63\nmsgid \"Enter a passport number in the format XX XXXXXXX.\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:10\nmsgid \"Central Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:11\nmsgid \"South Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:12\nmsgid \"North-West Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:13\nmsgid \"Far-East Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:14\nmsgid \"Siberian Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:15\nmsgid \"Ural Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:16\nmsgid \"Privolzhsky Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:17\nmsgid \"North-Caucasian Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:21\nmsgid \"Moskva\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:22\nmsgid \"Saint-Peterburg\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:23\nmsgid \"Moskovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:24\nmsgid \"Adygeya, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:25\nmsgid \"Bashkortostan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:26\nmsgid \"Buryatia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:27\nmsgid \"Altay, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:28\nmsgid \"Dagestan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:29\nmsgid \"Ingushskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:30\nmsgid \"Kabardino-Balkarskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:31\nmsgid \"Kalmykia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:32\nmsgid \"Karachaevo-Cherkesskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:33\nmsgid \"Karelia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:34\nmsgid \"Komi, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:35\nmsgid \"Mariy Ehl, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:36\nmsgid \"Mordovia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:37\nmsgid \"Sakha, Respublika (Yakutiya)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:38\nmsgid \"Severnaya Osetia, Respublika (Alania)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:39\nmsgid \"Tatarstan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:40\nmsgid \"Tyva, Respublika (Tuva)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:41\nmsgid \"Udmurtskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:42\nmsgid \"Khakassiya, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:43\nmsgid \"Chechenskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:44\nmsgid \"Chuvashskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:45\nmsgid \"Altayskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:46\nmsgid \"Zabaykalskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:47\nmsgid \"Kamchatskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:48\nmsgid \"Krasnodarskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:49\nmsgid \"Krasnoyarskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:50\nmsgid \"Permskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:51\nmsgid \"Primorskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:52\nmsgid \"Stavropol'siyy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:53\nmsgid \"Khabarovskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:54\nmsgid \"Amurskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:55\nmsgid \"Arkhangel'skaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:56\nmsgid \"Astrakhanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:57\nmsgid \"Belgorodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:58\nmsgid \"Bryanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:59\nmsgid \"Vladimirskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:60\nmsgid \"Volgogradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:61\nmsgid \"Vologodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:62\nmsgid \"Voronezhskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:63\nmsgid \"Ivanovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:64\nmsgid \"Irkutskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:65\nmsgid \"Kaliningradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:66\nmsgid \"Kaluzhskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:67\nmsgid \"Kemerovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:68\nmsgid \"Kirovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:69\nmsgid \"Kostromskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:70\nmsgid \"Kurganskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:71\nmsgid \"Kurskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:72\nmsgid \"Leningradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:73\nmsgid \"Lipeckaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:74\nmsgid \"Magadanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:75\nmsgid \"Murmanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:76\nmsgid \"Nizhegorodskaja oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:77\nmsgid \"Novgorodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:78\nmsgid \"Novosibirskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:79\nmsgid \"Omskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:80\nmsgid \"Orenburgskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:81\nmsgid \"Orlovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:82\nmsgid \"Penzenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:83\nmsgid \"Pskovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:84\nmsgid \"Rostovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:85\nmsgid \"Rjazanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:86\nmsgid \"Samarskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:87\nmsgid \"Saratovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:88\nmsgid \"Sakhalinskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:89\nmsgid \"Sverdlovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:90\nmsgid \"Smolenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:91\nmsgid \"Tambovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:92\nmsgid \"Tverskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:93\nmsgid \"Tomskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:94\nmsgid \"Tul'skaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:95\nmsgid \"Tyumenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:96\nmsgid \"Ul'ianovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:97\nmsgid \"Chelyabinskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:98\nmsgid \"Yaroslavskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:99\nmsgid \"Evreyskaya avtonomnaja oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:100\nmsgid \"Neneckiy autonomnyy okrug\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:101\nmsgid \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:102\nmsgid \"Chukotskiy avtonomnyy okrug\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:103\nmsgid \"Yamalo-Neneckiy avtonomnyy okrug\"\nmsgstr \"\"\n\n#: se/forms.py:54\nmsgid \"Enter a valid Swedish organisation number.\"\nmsgstr \"\"\n\n#: se/forms.py:111\nmsgid \"Enter a valid Swedish personal identity number.\"\nmsgstr \"\"\n\n#: se/forms.py:112\nmsgid \"Co-ordination numbers are not allowed.\"\nmsgstr \"\"\n\n#: se/forms.py:154\nmsgid \"Enter a Swedish postal code in the format XXXXX.\"\nmsgstr \"\"\n\n#: se/se_counties.py:16\nmsgid \"Stockholm\"\nmsgstr \"\"\n\n#: se/se_counties.py:17\nmsgid \"Västerbotten\"\nmsgstr \"\"\n\n#: se/se_counties.py:18\nmsgid \"Norrbotten\"\nmsgstr \"\"\n\n#: se/se_counties.py:19\nmsgid \"Uppsala\"\nmsgstr \"\"\n\n#: se/se_counties.py:20\nmsgid \"Södermanland\"\nmsgstr \"\"\n\n#: se/se_counties.py:21\nmsgid \"Östergötland\"\nmsgstr \"\"\n\n#: se/se_counties.py:22\nmsgid \"Jönköping\"\nmsgstr \"\"\n\n#: se/se_counties.py:23\nmsgid \"Kronoberg\"\nmsgstr \"\"\n\n#: se/se_counties.py:24\nmsgid \"Kalmar\"\nmsgstr \"\"\n\n#: se/se_counties.py:25\nmsgid \"Gotland\"\nmsgstr \"\"\n\n#: se/se_counties.py:26\nmsgid \"Blekinge\"\nmsgstr \"\"\n\n#: se/se_counties.py:27\nmsgid \"Skåne\"\nmsgstr \"\"\n\n#: se/se_counties.py:28\nmsgid \"Halland\"\nmsgstr \"\"\n\n#: se/se_counties.py:29\nmsgid \"Västra Götaland\"\nmsgstr \"\"\n\n#: se/se_counties.py:30\nmsgid \"Värmland\"\nmsgstr \"\"\n\n#: se/se_counties.py:31\nmsgid \"Örebro\"\nmsgstr \"\"\n\n#: se/se_counties.py:32\nmsgid \"Västmanland\"\nmsgstr \"\"\n\n#: se/se_counties.py:33\nmsgid \"Dalarna\"\nmsgstr \"\"\n\n#: se/se_counties.py:34\nmsgid \"Gävleborg\"\nmsgstr \"\"\n\n#: se/se_counties.py:35\nmsgid \"Västernorrland\"\nmsgstr \"\"\n\n#: se/se_counties.py:36\nmsgid \"Jämtland\"\nmsgstr \"\"\n\n#: si/forms.py:25\nmsgid \"The first 7 digits of the EMSO must represent a valid past date.\"\nmsgstr \"\"\n\n#: si/forms.py:26\nmsgid \"The EMSO is not valid.\"\nmsgstr \"\"\n\n#: si/forms.py:86\nmsgid \"Enter a valid tax number in form SIXXXXXXXX\"\nmsgstr \"\"\n\n#: si/forms.py:151\nmsgid \"Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:8\nmsgid \"Banska Bystrica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:9\nmsgid \"Banska Stiavnica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:10\nmsgid \"Bardejov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:11\nmsgid \"Banovce nad Bebravou\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:12\nmsgid \"Brezno\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:13\nmsgid \"Bratislava I\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:14\nmsgid \"Bratislava II\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:15\nmsgid \"Bratislava III\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:16\nmsgid \"Bratislava IV\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:17\nmsgid \"Bratislava V\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:18\nmsgid \"Bytca\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:19\nmsgid \"Cadca\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:20\nmsgid \"Detva\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:21\nmsgid \"Dolny Kubin\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:22\nmsgid \"Dunajska Streda\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:23\nmsgid \"Galanta\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:24\nmsgid \"Gelnica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:25\nmsgid \"Hlohovec\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:26\nmsgid \"Humenne\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:27\nmsgid \"Ilava\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:28\nmsgid \"Kezmarok\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:29\nmsgid \"Komarno\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:30\nmsgid \"Kosice I\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:31\nmsgid \"Kosice II\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:32\nmsgid \"Kosice III\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:33\nmsgid \"Kosice IV\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:34\nmsgid \"Kosice - okolie\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:35\nmsgid \"Krupina\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:36\nmsgid \"Kysucke Nove Mesto\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:37\nmsgid \"Levice\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:38\nmsgid \"Levoca\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:39\nmsgid \"Liptovsky Mikulas\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:40\nmsgid \"Lucenec\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:41\nmsgid \"Malacky\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:42\nmsgid \"Martin\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:43\nmsgid \"Medzilaborce\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:44\nmsgid \"Michalovce\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:45\nmsgid \"Myjava\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:46\nmsgid \"Namestovo\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:47\nmsgid \"Nitra\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:48\nmsgid \"Nove Mesto nad Vahom\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:49\nmsgid \"Nove Zamky\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:50\nmsgid \"Partizanske\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:51\nmsgid \"Pezinok\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:52\nmsgid \"Piestany\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:53\nmsgid \"Poltar\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:54\nmsgid \"Poprad\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:55\nmsgid \"Povazska Bystrica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:56\nmsgid \"Presov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:57\nmsgid \"Prievidza\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:58\nmsgid \"Puchov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:59\nmsgid \"Revuca\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:60\nmsgid \"Rimavska Sobota\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:61\nmsgid \"Roznava\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:62\nmsgid \"Ruzomberok\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:63\nmsgid \"Sabinov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:64\nmsgid \"Senec\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:65\nmsgid \"Senica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:66\nmsgid \"Skalica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:67\nmsgid \"Snina\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:68\nmsgid \"Sobrance\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:69\nmsgid \"Spisska Nova Ves\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:70\nmsgid \"Stara Lubovna\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:71\nmsgid \"Stropkov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:72\nmsgid \"Svidnik\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:73\nmsgid \"Sala\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:74\nmsgid \"Topolcany\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:75\nmsgid \"Trebisov\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:76\nmsgid \"Trencin\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:77\nmsgid \"Trnava\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:78\nmsgid \"Turcianske Teplice\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:79\nmsgid \"Tvrdosin\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:80\nmsgid \"Velky Krtis\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:81\nmsgid \"Vranov nad Toplou\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:82\nmsgid \"Zlate Moravce\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:83\nmsgid \"Zvolen\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:84\nmsgid \"Zarnovica\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:85\nmsgid \"Ziar nad Hronom\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:86\nmsgid \"Zilina\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:8\nmsgid \"Banska Bystrica region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:9\nmsgid \"Bratislava region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:10\nmsgid \"Kosice region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:11\nmsgid \"Nitra region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:12\nmsgid \"Presov region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:13\nmsgid \"Trencin region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:14\nmsgid \"Trnava region\"\nmsgstr \"\"\n\n#: sk/sk_regions.py:15\nmsgid \"Zilina region\"\nmsgstr \"\"\n\n#: tr/forms.py:21\nmsgid \"Enter a postal code in the format XXXXX.\"\nmsgstr \"\"\n\n#: tr/forms.py:42\nmsgid \"Phone numbers must be in 0XXX XXX XXXX format.\"\nmsgstr \"\"\n\n#: tr/forms.py:69\nmsgid \"Enter a valid Turkish Identification number.\"\nmsgstr \"\"\n\n#: tr/forms.py:70\nmsgid \"Turkish Identification number must be 11 digits.\"\nmsgstr \"\"\n\n#: us/forms.py:21\nmsgid \"Enter a zip code in the format XXXXX or XXXXX-XXXX.\"\nmsgstr \"Hãy nhập mã bưu điện theo mẫu XXXXX hoặc XXXXX-XXXX\"\n\n#: us/forms.py:59\nmsgid \"Enter a valid U.S. Social Security number in XXX-XX-XXXX format.\"\nmsgstr \"Hãy nhập số an sinh xã hội dưới dạng XXX-XX-XXXX\"\n\n#: us/forms.py:92\nmsgid \"Enter a U.S. state or territory.\"\nmsgstr \"\"\n\n#: us/models.py:8\nmsgid \"U.S. state (two uppercase letters)\"\nmsgstr \"\"\n\n#: us/models.py:17\nmsgid \"U.S. postal code (two uppercase letters)\"\nmsgstr \"\"\n\n#: us/models.py:26\nmsgid \"Phone number\"\nmsgstr \"Số điện thoại\"\n\n#: uy/forms.py:29\nmsgid \"Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.\"\nmsgstr \"\"\n\n#: uy/forms.py:31\nmsgid \"Enter a valid CI number.\"\nmsgstr \"\"\n\n#: za/forms.py:22\nmsgid \"Enter a valid South African ID number\"\nmsgstr \"\"\n\n#: za/forms.py:56\nmsgid \"Enter a valid South African postal code\"\nmsgstr \"Hãy nhập mã bưu điện Nam Phi có hiệu lực\"\n\n#: za/za_provinces.py:4\nmsgid \"Eastern Cape\"\nmsgstr \"\"\n\n#: za/za_provinces.py:5\nmsgid \"Free State\"\nmsgstr \"\"\n\n#: za/za_provinces.py:6\nmsgid \"Gauteng\"\nmsgstr \"\"\n\n#: za/za_provinces.py:7\nmsgid \"KwaZulu-Natal\"\nmsgstr \"\"\n\n#: za/za_provinces.py:8\nmsgid \"Limpopo\"\nmsgstr \"\"\n\n#: za/za_provinces.py:9\nmsgid \"Mpumalanga\"\nmsgstr \"\"\n\n#: za/za_provinces.py:10\nmsgid \"Northern Cape\"\nmsgstr \"\"\n\n#: za/za_provinces.py:11\nmsgid \"North West\"\nmsgstr \"Tây Bắc\"\n\n#: za/za_provinces.py:12\nmsgid \"Western Cape\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/locale/zh_CN/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Daniel Duan <DaNmarner@gmail.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Lele Long <schemacs@gmail.com>, 2011.\n# slene <vslene@gmail.com>, 2011.\n# 磊 施 <leiarix@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-12-02 12:58+0000\\n\"\n\"Last-Translator: 磊 施 <leiarix@gmail.com>\\n\"\n\"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/django/\"\n\"language/zh_CN/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: zh_CN\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: ar/forms.py:30\nmsgid \"Enter a postal code in the format NNNN or ANNNNAAA.\"\nmsgstr \"以 NNNN 或 ANNNNAAA 的格式输入一个邮政编码。\"\n\n#: ar/forms.py:52 br/forms.py:95 br/forms.py:134 pe/forms.py:27 pe/forms.py:55\nmsgid \"This field requires only numbers.\"\nmsgstr \"这个字段只能输入数字。\"\n\n#: ar/forms.py:53\nmsgid \"This field requires 7 or 8 digits.\"\nmsgstr \"这个字段要求输入 7 或 8 位数字。\"\n\n#: ar/forms.py:82\nmsgid \"Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.\"\nmsgstr \"以 XX-XXXXXXXX-X 或 XXXXXXXXXXXX 的格式输入一个有效的 CUIT。\"\n\n#: ar/forms.py:83\nmsgid \"Invalid CUIT.\"\nmsgstr \"无效 CUIT。\"\n\n#: ar/forms.py:84\nmsgid \"Invalid legal type. Type must be 27, 20, 23 or 30.\"\nmsgstr \"\"\n\n#: at/at_states.py:5\nmsgid \"Burgenland\"\nmsgstr \"布尔根兰州\"\n\n#: at/at_states.py:6\nmsgid \"Carinthia\"\nmsgstr \"卡林西亚\"\n\n#: at/at_states.py:7\nmsgid \"Lower Austria\"\nmsgstr \"下奥地利州\"\n\n#: at/at_states.py:8\nmsgid \"Upper Austria\"\nmsgstr \"上奥地利州\"\n\n#: at/at_states.py:9\nmsgid \"Salzburg\"\nmsgstr \"萨尔茨堡\"\n\n#: at/at_states.py:10\nmsgid \"Styria\"\nmsgstr \"施蒂里亚语\"\n\n#: at/at_states.py:11\nmsgid \"Tyrol\"\nmsgstr \"蒂罗尔\"\n\n#: at/at_states.py:12\nmsgid \"Vorarlberg\"\nmsgstr \"福拉尔贝格州\"\n\n#: at/at_states.py:13\nmsgid \"Vienna\"\nmsgstr \"维也纳\"\n\n#: at/forms.py:22 ch/forms.py:22 no/forms.py:19\nmsgid \"Enter a zip code in the format XXXX.\"\nmsgstr \"以 XXXX 的格式输入一个邮政编码。\"\n\n#: at/forms.py:50\nmsgid \"Enter a valid Austrian Social Security Number in XXXX XXXXXX format.\"\nmsgstr \"以  XXXX XXXXXX 的格式输入一个有效的奥地利社会保障号码。\"\n\n#: au/forms.py:26\nmsgid \"Enter a 4 digit postcode.\"\nmsgstr \"输入一个4位邮政编码\"\n\n#: au/models.py:9\nmsgid \"Australian State\"\nmsgstr \"澳大利亚州\"\n\n#: au/models.py:19\nmsgid \"Australian Postcode\"\nmsgstr \"澳大利亚邮政编码\"\n\n#: au/models.py:33\nmsgid \"Australian Phone number\"\nmsgstr \"澳大利亚电话号码\"\n\n#: be/be_provinces.py:5\nmsgid \"Antwerp\"\nmsgstr \"安特卫普\"\n\n#: be/be_provinces.py:6\nmsgid \"Brussels\"\nmsgstr \"布鲁塞尔\"\n\n#: be/be_provinces.py:7\nmsgid \"East Flanders\"\nmsgstr \"东佛兰德\"\n\n#: be/be_provinces.py:8\nmsgid \"Flemish Brabant\"\nmsgstr \"佛兰芒布拉班特\"\n\n#: be/be_provinces.py:9\nmsgid \"Hainaut\"\nmsgstr \"厄诺\"\n\n#: be/be_provinces.py:10\nmsgid \"Liege\"\nmsgstr \"列日\"\n\n#: be/be_provinces.py:11 nl/nl_provinces.py:9\nmsgid \"Limburg\"\nmsgstr \"林堡\"\n\n#: be/be_provinces.py:12\nmsgid \"Luxembourg\"\nmsgstr \"卢森堡\"\n\n#: be/be_provinces.py:13\nmsgid \"Namur\"\nmsgstr \"纳慕尔\"\n\n#: be/be_provinces.py:14\nmsgid \"Walloon Brabant\"\nmsgstr \"瓦隆布拉邦\"\n\n#: be/be_provinces.py:15\nmsgid \"West Flanders\"\nmsgstr \"西佛兰德\"\n\n#: be/be_regions.py:5\nmsgid \"Brussels Capital Region\"\nmsgstr \"布鲁塞尔首都区域\"\n\n#: be/be_regions.py:6\nmsgid \"Flemish Region\"\nmsgstr \"法阑德斯地区\"\n\n#: be/be_regions.py:7\nmsgid \"Wallonia\"\nmsgstr \"瓦龙\"\n\n#: be/forms.py:25\nmsgid \"Enter a valid postal code in the range and format 1XXX - 9XXX.\"\nmsgstr \"请输入有效的邮政编码，范围和格式为 1XXX - 9XXX\"\n\n#: be/forms.py:48\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\nmsgstr \"\"\n\"请输入以下格式之一的有效电话号码：0x xxx xx xx, 0xx xx xx xx, 04xx xx xx xx, \"\n\"0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.xx.xx.xx, 04xx.\"\n\"xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\n\n#: br/forms.py:22\nmsgid \"Enter a zip code in the format XXXXX-XXX.\"\nmsgstr \"以 XXXXX-XXX 的格式输入一个邮政编码。\"\n\n#: br/forms.py:31\nmsgid \"Phone numbers must be in XX-XXXX-XXXX format.\"\nmsgstr \"电话号码必须为 XXX-XXX-XXXX 格式。\"\n\n#: br/forms.py:58\nmsgid \"\"\n\"Select a valid brazilian state. That state is not one of the available \"\n\"states.\"\nmsgstr \"选择一个有效的巴西州。该州并不是现有的州。\"\n\n#: br/forms.py:93\nmsgid \"Invalid CPF number.\"\nmsgstr \"无效的 CPF 号码。\"\n\n#: br/forms.py:94\nmsgid \"This field requires at most 11 digits or 14 characters.\"\nmsgstr \"该字段要求填写最多 11 位数字或 14 个字符。\"\n\n#: br/forms.py:133\nmsgid \"Invalid CNPJ number.\"\nmsgstr \"无效的 CNPJ 号码。\"\n\n#: br/forms.py:135\nmsgid \"This field requires at least 14 digits\"\nmsgstr \"这个字段要求至少 14 位数字\"\n\n#: ca/forms.py:29\nmsgid \"Enter a postal code in the format XXX XXX.\"\nmsgstr \"以 XXX XXX 的格式输入一个邮政编码。\"\n\n#: ca/forms.py:47 us/forms.py:30\nmsgid \"Phone numbers must be in XXX-XXX-XXXX format.\"\nmsgstr \"电话号码的格式必须是 XXX-XXX-XXXX。\"\n\n#: ca/forms.py:69\nmsgid \"Enter a Canadian province or territory.\"\nmsgstr \"\"\n\n#: ca/forms.py:110\nmsgid \"Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.\"\nmsgstr \"以 XXX-XXX-XXX 的格式输入一个有效的加拿大社会保障号码。\"\n\n#: ch/ch_states.py:5\nmsgid \"Aargau\"\nmsgstr \"阿尔高州\"\n\n#: ch/ch_states.py:6\nmsgid \"Appenzell Innerrhoden\"\nmsgstr \"内阿彭策尔半州\"\n\n#: ch/ch_states.py:7\nmsgid \"Appenzell Ausserrhoden\"\nmsgstr \"外阿彭策尔半州\"\n\n#: ch/ch_states.py:8\nmsgid \"Basel-Stadt\"\nmsgstr \"巴塞尔城半州\"\n\n#: ch/ch_states.py:9\nmsgid \"Basel-Land\"\nmsgstr \"巴塞尔乡半州\"\n\n#: ch/ch_states.py:10\nmsgid \"Berne\"\nmsgstr \"伯尔尼州\"\n\n#: ch/ch_states.py:11\nmsgid \"Fribourg\"\nmsgstr \"弗里堡州\"\n\n#: ch/ch_states.py:12\nmsgid \"Geneva\"\nmsgstr \"日内瓦州\"\n\n#: ch/ch_states.py:13\nmsgid \"Glarus\"\nmsgstr \"格拉鲁斯州\"\n\n#: ch/ch_states.py:14\nmsgid \"Graubuenden\"\nmsgstr \"格劳宾登州\"\n\n#: ch/ch_states.py:15\nmsgid \"Jura\"\nmsgstr \"汝拉州\"\n\n#: ch/ch_states.py:16\nmsgid \"Lucerne\"\nmsgstr \"琉森州\"\n\n#: ch/ch_states.py:17\nmsgid \"Neuchatel\"\nmsgstr \"纳沙特尔州\"\n\n#: ch/ch_states.py:18\nmsgid \"Nidwalden\"\nmsgstr \"下瓦尔登州\"\n\n#: ch/ch_states.py:19\nmsgid \"Obwalden\"\nmsgstr \"上瓦尔登州\"\n\n#: ch/ch_states.py:20\nmsgid \"Schaffhausen\"\nmsgstr \"沙夫豪森州\"\n\n#: ch/ch_states.py:21\nmsgid \"Schwyz\"\nmsgstr \"施维茨州\"\n\n#: ch/ch_states.py:22\nmsgid \"Solothurn\"\nmsgstr \"索洛图恩州\"\n\n#: ch/ch_states.py:23\nmsgid \"St. Gallen\"\nmsgstr \"圣加仑州\"\n\n#: ch/ch_states.py:24\nmsgid \"Thurgau\"\nmsgstr \"图尔高州\"\n\n#: ch/ch_states.py:25\nmsgid \"Ticino\"\nmsgstr \"提契诺州\"\n\n#: ch/ch_states.py:26\nmsgid \"Uri\"\nmsgstr \"乌里州\"\n\n#: ch/ch_states.py:27\nmsgid \"Valais\"\nmsgstr \"瓦莱州\"\n\n#: ch/ch_states.py:28\nmsgid \"Vaud\"\nmsgstr \"沃州\"\n\n#: ch/ch_states.py:29\nmsgid \"Zug\"\nmsgstr \"楚格州\"\n\n#: ch/ch_states.py:30\nmsgid \"Zurich\"\nmsgstr \"苏黎世州\"\n\n#: ch/forms.py:37\nmsgid \"Phone numbers must be in 0XX XXX XX XX format.\"\nmsgstr \"\"\n\n#: ch/forms.py:68\nmsgid \"\"\n\"Enter a valid Swiss identity or passport card number in X1234567<0 or \"\n\"1234567890 format.\"\nmsgstr \"\"\n\"输入一个有效的瑞士身份证号码或者护照卡号，格式为 X1234567<0 或 1234567890\"\n\n#: cl/forms.py:32\nmsgid \"Enter a valid Chilean RUT.\"\nmsgstr \"输入一个有效的 Chilean RUT。\"\n\n#: cl/forms.py:33\nmsgid \"Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.\"\nmsgstr \"输入一个有效的 Chilean RUT。格式为 XX.XXX.XXX-X。\"\n\n#: cl/forms.py:34\nmsgid \"The Chilean RUT is not valid.\"\nmsgstr \"Chilean RUT 无效。\"\n\n#: cn/forms.py:84\nmsgid \"Enter a post code in the format XXXXXX.\"\nmsgstr \"以XXXXXX的格式输入一个邮政编码。\"\n\n#: cn/forms.py:105\nmsgid \"ID Card Number consists of 15 or 18 digits.\"\nmsgstr \"\"\n\n#: cn/forms.py:106\nmsgid \"Invalid ID Card Number: Wrong checksum\"\nmsgstr \"\"\n\n#: cn/forms.py:107\nmsgid \"Invalid ID Card Number: Wrong birthdate\"\nmsgstr \"\"\n\n#: cn/forms.py:108\nmsgid \"Invalid ID Card Number: Wrong location code\"\nmsgstr \"\"\n\n#: cn/forms.py:193\nmsgid \"Enter a valid phone number.\"\nmsgstr \"输入一个可用的电话号码。\"\n\n#: cn/forms.py:210\nmsgid \"Enter a valid cell number.\"\nmsgstr \"输入一个可用的移动电话号码。\"\n\n#: cz/cz_regions.py:8\nmsgid \"Prague\"\nmsgstr \"布拉格\"\n\n#: cz/cz_regions.py:9\nmsgid \"Central Bohemian Region\"\nmsgstr \"波希米亚中部地区\"\n\n#: cz/cz_regions.py:10\nmsgid \"South Bohemian Region\"\nmsgstr \"南波希米亚地区\"\n\n#: cz/cz_regions.py:11\nmsgid \"Pilsen Region\"\nmsgstr \"比尔森地区\"\n\n#: cz/cz_regions.py:12\nmsgid \"Carlsbad Region\"\nmsgstr \"卡尔斯巴德地区\"\n\n#: cz/cz_regions.py:13\nmsgid \"Usti Region\"\nmsgstr \"乌斯季地区\"\n\n#: cz/cz_regions.py:14\nmsgid \"Liberec Region\"\nmsgstr \"利贝雷茨地区\"\n\n#: cz/cz_regions.py:15\nmsgid \"Hradec Region\"\nmsgstr \"赫拉德茨地区\"\n\n#: cz/cz_regions.py:16\nmsgid \"Pardubice Region\"\nmsgstr \"帕尔杜比采地区\"\n\n#: cz/cz_regions.py:17\nmsgid \"Vysocina Region\"\nmsgstr \"維索基納\"\n\n#: cz/cz_regions.py:18\nmsgid \"South Moravian Region\"\nmsgstr \"南摩拉维亚地区\"\n\n#: cz/cz_regions.py:19\nmsgid \"Olomouc Region\"\nmsgstr \"奥洛穆茨地区\"\n\n#: cz/cz_regions.py:20\nmsgid \"Zlin Region\"\nmsgstr \"兹林地区\"\n\n#: cz/cz_regions.py:21\nmsgid \"Moravian-Silesian Region\"\nmsgstr \"摩拉维亚，西里西亚地区\"\n\n#: cz/forms.py:32 sk/forms.py:33\nmsgid \"Enter a postal code in the format XXXXX or XXX XX.\"\nmsgstr \"以 XXXXX 或 XX XXX 的格式输入一个邮政编码。\"\n\n#: cz/forms.py:52\nmsgid \"Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.\"\nmsgstr \"以 x\"\n\n#: cz/forms.py:53\nmsgid \"Enter a valid birth number.\"\nmsgstr \"输入一个有效的出生码。\"\n\n#: cz/forms.py:102\nmsgid \"Enter a valid IC number.\"\nmsgstr \"输入一个有效的 IC 号码。\"\n\n#: de/de_states.py:5\nmsgid \"Baden-Wuerttemberg\"\nmsgstr \"巴登符腾堡州\"\n\n#: de/de_states.py:6\nmsgid \"Bavaria\"\nmsgstr \"巴伐利亚\"\n\n#: de/de_states.py:7\nmsgid \"Berlin\"\nmsgstr \"柏林\"\n\n#: de/de_states.py:8\nmsgid \"Brandenburg\"\nmsgstr \"勃兰登堡\"\n\n#: de/de_states.py:9\nmsgid \"Bremen\"\nmsgstr \"不来梅\"\n\n#: de/de_states.py:10\nmsgid \"Hamburg\"\nmsgstr \"汉堡\"\n\n#: de/de_states.py:11\nmsgid \"Hessen\"\nmsgstr \"黑森州\"\n\n#: de/de_states.py:12\nmsgid \"Mecklenburg-Western Pomerania\"\nmsgstr \"梅克伦堡-西部米拉尼亚\"\n\n#: de/de_states.py:13\nmsgid \"Lower Saxony\"\nmsgstr \"下萨克森\"\n\n#: de/de_states.py:14\nmsgid \"North Rhine-Westphalia\"\nmsgstr \"北莱茵-威斯特法伦州\"\n\n#: de/de_states.py:15\nmsgid \"Rhineland-Palatinate\"\nmsgstr \"莱茵河法耳茨地区\"\n\n#: de/de_states.py:16\nmsgid \"Saarland\"\nmsgstr \"萨尔州\"\n\n#: de/de_states.py:17\nmsgid \"Saxony\"\nmsgstr \"萨克森\"\n\n#: de/de_states.py:18\nmsgid \"Saxony-Anhalt\"\nmsgstr \"萨克森-安哈尔特\"\n\n#: de/de_states.py:19\nmsgid \"Schleswig-Holstein\"\nmsgstr \"石勒苏益格-荷尔斯泰因\"\n\n#: de/de_states.py:20\nmsgid \"Thuringia\"\nmsgstr \"图林根州\"\n\n#: de/forms.py:20 fi/forms.py:18 fr/forms.py:20\nmsgid \"Enter a zip code in the format XXXXX.\"\nmsgstr \"以 XXXXX 的格式输入一个邮政编码。\"\n\n#: de/forms.py:46\nmsgid \"\"\n\"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"format.\"\nmsgstr \"以 XXXXXXXXXXX-XXXXXXX-XXXXXXX-X 的格式输入一个有效的德国身份证号码。\"\n\n#: es/es_provinces.py:5\nmsgid \"Araba\"\nmsgstr \"\"\n\n#: es/es_provinces.py:6\nmsgid \"Albacete\"\nmsgstr \"阿尔巴塞特\"\n\n#: es/es_provinces.py:7\nmsgid \"Alacant\"\nmsgstr \"Alacant\"\n\n#: es/es_provinces.py:8\nmsgid \"Almeria\"\nmsgstr \"阿尔梅里亚\"\n\n#: es/es_provinces.py:9\nmsgid \"Avila\"\nmsgstr \"阿维拉\"\n\n#: es/es_provinces.py:10\nmsgid \"Badajoz\"\nmsgstr \"巴达霍斯\"\n\n#: es/es_provinces.py:11\nmsgid \"Illes Balears\"\nmsgstr \"巴利阿里群岛\"\n\n#: es/es_provinces.py:12\nmsgid \"Barcelona\"\nmsgstr \"巴塞罗那\"\n\n#: es/es_provinces.py:13\nmsgid \"Burgos\"\nmsgstr \"布尔戈斯\"\n\n#: es/es_provinces.py:14\nmsgid \"Caceres\"\nmsgstr \"卡塞雷斯\"\n\n#: es/es_provinces.py:15\nmsgid \"Cadiz\"\nmsgstr \"卡迪斯\"\n\n#: es/es_provinces.py:16\nmsgid \"Castello\"\nmsgstr \"卡斯特罗\"\n\n#: es/es_provinces.py:17\nmsgid \"Ciudad Real\"\nmsgstr \"Ciudad Real\"\n\n#: es/es_provinces.py:18\nmsgid \"Cordoba\"\nmsgstr \"科尔多瓦\"\n\n#: es/es_provinces.py:19\nmsgid \"A Coruna\"\nmsgstr \"拉科鲁尼亚\"\n\n#: es/es_provinces.py:20\nmsgid \"Cuenca\"\nmsgstr \"昆卡\"\n\n#: es/es_provinces.py:21\nmsgid \"Girona\"\nmsgstr \"西罗纳\"\n\n#: es/es_provinces.py:22\nmsgid \"Granada\"\nmsgstr \"格拉纳达\"\n\n#: es/es_provinces.py:23\nmsgid \"Guadalajara\"\nmsgstr \"瓜达拉哈拉\"\n\n#: es/es_provinces.py:24\nmsgid \"Guipuzkoa\"\nmsgstr \"Guipuzkoa\"\n\n#: es/es_provinces.py:25\nmsgid \"Huelva\"\nmsgstr \"韦尔瓦\"\n\n#: es/es_provinces.py:26\nmsgid \"Huesca\"\nmsgstr \"韦斯卡\"\n\n#: es/es_provinces.py:27\nmsgid \"Jaen\"\nmsgstr \"哈恩\"\n\n#: es/es_provinces.py:28\nmsgid \"Leon\"\nmsgstr \"里昂\"\n\n#: es/es_provinces.py:29\nmsgid \"Lleida\"\nmsgstr \"Lleida\"\n\n#: es/es_provinces.py:30 es/es_regions.py:17\nmsgid \"La Rioja\"\nmsgstr \"里欧哈\"\n\n#: es/es_provinces.py:31\nmsgid \"Lugo\"\nmsgstr \"卢戈\"\n\n#: es/es_provinces.py:32 es/es_regions.py:18\nmsgid \"Madrid\"\nmsgstr \"马德里\"\n\n#: es/es_provinces.py:33\nmsgid \"Malaga\"\nmsgstr \"马拉加\"\n\n#: es/es_provinces.py:34\nmsgid \"Murcia\"\nmsgstr \"穆尔西亚\"\n\n#: es/es_provinces.py:35\nmsgid \"Navarre\"\nmsgstr \"纳瓦拉\"\n\n#: es/es_provinces.py:36\nmsgid \"Ourense\"\nmsgstr \"奥伦塞\"\n\n#: es/es_provinces.py:37\nmsgid \"Asturias\"\nmsgstr \"阿斯图里亚斯\"\n\n#: es/es_provinces.py:38\nmsgid \"Palencia\"\nmsgstr \"帕伦西亚\"\n\n#: es/es_provinces.py:39\nmsgid \"Las Palmas\"\nmsgstr \"拉斯帕尔马斯\"\n\n#: es/es_provinces.py:40\nmsgid \"Pontevedra\"\nmsgstr \"庞特维德拉\"\n\n#: es/es_provinces.py:41\nmsgid \"Salamanca\"\nmsgstr \"萨拉曼卡\"\n\n#: es/es_provinces.py:42\nmsgid \"Santa Cruz de Tenerife\"\nmsgstr \"圣克鲁斯-德特内里费\"\n\n#: es/es_provinces.py:43 es/es_regions.py:11\nmsgid \"Cantabria\"\nmsgstr \"坎塔布利亚\"\n\n#: es/es_provinces.py:44\nmsgid \"Segovia\"\nmsgstr \"塞戈维亚\"\n\n#: es/es_provinces.py:45\nmsgid \"Seville\"\nmsgstr \"塞维利亚\"\n\n#: es/es_provinces.py:46\nmsgid \"Soria\"\nmsgstr \"索里亚\"\n\n#: es/es_provinces.py:47\nmsgid \"Tarragona\"\nmsgstr \"塔拉戈纳\"\n\n#: es/es_provinces.py:48\nmsgid \"Teruel\"\nmsgstr \"特鲁埃尔\"\n\n#: es/es_provinces.py:49\nmsgid \"Toledo\"\nmsgstr \"托莱多\"\n\n#: es/es_provinces.py:50\nmsgid \"Valencia\"\nmsgstr \"瓦伦西亚\"\n\n#: es/es_provinces.py:51\nmsgid \"Valladolid\"\nmsgstr \"巴利亚多利德\"\n\n#: es/es_provinces.py:52\nmsgid \"Bizkaia\"\nmsgstr \"Bizkaia\"\n\n#: es/es_provinces.py:53\nmsgid \"Zamora\"\nmsgstr \"萨莫拉\"\n\n#: es/es_provinces.py:54\nmsgid \"Zaragoza\"\nmsgstr \"萨拉戈萨\"\n\n#: es/es_provinces.py:55\nmsgid \"Ceuta\"\nmsgstr \"休达\"\n\n#: es/es_provinces.py:56\nmsgid \"Melilla\"\nmsgstr \"梅利利亚\"\n\n#: es/es_regions.py:5\nmsgid \"Andalusia\"\nmsgstr \"安达卢西亚\"\n\n#: es/es_regions.py:6\nmsgid \"Aragon\"\nmsgstr \"阿拉贡\"\n\n#: es/es_regions.py:7\nmsgid \"Principality of Asturias\"\nmsgstr \"摩纳哥的阿斯图里亚斯\"\n\n#: es/es_regions.py:8\nmsgid \"Balearic Islands\"\nmsgstr \"巴利阿里群岛\"\n\n#: es/es_regions.py:9\nmsgid \"Basque Country\"\nmsgstr \"巴斯克地区\"\n\n#: es/es_regions.py:10\nmsgid \"Canary Islands\"\nmsgstr \"加纳利群岛\"\n\n#: es/es_regions.py:12\nmsgid \"Castile-La Mancha\"\nmsgstr \"卡斯蒂利亚-拉曼恰\"\n\n#: es/es_regions.py:13\nmsgid \"Castile and Leon\"\nmsgstr \"卡斯蒂利亚和莱昂\"\n\n#: es/es_regions.py:14\nmsgid \"Catalonia\"\nmsgstr \"加泰隆尼亚\"\n\n#: es/es_regions.py:15\nmsgid \"Extremadura\"\nmsgstr \"埃斯特雷马杜拉\"\n\n#: es/es_regions.py:16\nmsgid \"Galicia\"\nmsgstr \"加利西亚\"\n\n#: es/es_regions.py:19\nmsgid \"Region of Murcia\"\nmsgstr \"穆尔西亚地区\"\n\n#: es/es_regions.py:20\nmsgid \"Foral Community of Navarre\"\nmsgstr \"Foral Community of Navarre\"\n\n#: es/es_regions.py:21\nmsgid \"Valencian Community\"\nmsgstr \"巴伦西亚社区\"\n\n#: es/forms.py:26\nmsgid \"Enter a valid postal code in the range and format 01XXX - 52XXX.\"\nmsgstr \"以 01XXX - 52XXX 的格式输入一个有效范围之内的邮政编码。\"\n\n#: es/forms.py:46\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or \"\n\"9XXXXXXXX.\"\nmsgstr \"以 6XXXXXXXX, 8XXXXXXXX 或 9XXXXXXXX 的格式输入一个有效的电话号码。\"\n\n#: es/forms.py:73\nmsgid \"Please enter a valid NIF, NIE, or CIF.\"\nmsgstr \"请输入一个有效的 NIF、NIE 或 CIF。\"\n\n#: es/forms.py:74\nmsgid \"Please enter a valid NIF or NIE.\"\nmsgstr \"请输入一个有效的 NIF 或 NIE 。\"\n\n#: es/forms.py:75\nmsgid \"Invalid checksum for NIF.\"\nmsgstr \"无效的 NIF 校验和。\"\n\n#: es/forms.py:76\nmsgid \"Invalid checksum for NIE.\"\nmsgstr \"无效的 NIE 校验和。\"\n\n#: es/forms.py:77\nmsgid \"Invalid checksum for CIF.\"\nmsgstr \"无效的 CIF 校验和。\"\n\n#: es/forms.py:149\nmsgid \"\"\n\"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.\"\nmsgstr \"请输入一个有效的银行帐号，格式为 XXXX-XXXX-XX-XXXXXXXXXX。\"\n\n#: es/forms.py:150\nmsgid \"Invalid checksum for bank account number.\"\nmsgstr \"无效的银行帐号校验和。\"\n\n#: fi/forms.py:33\nmsgid \"Enter a valid Finnish social security number.\"\nmsgstr \"输入一个有效的芬兰社会保障号码。\"\n\n#: fr/forms.py:35\nmsgid \"Phone numbers must be in 0X XX XX XX XX format.\"\nmsgstr \"电话号码必须为 XXXX-XXXXXX 格式。\"\n\n#: gb/forms.py:25\nmsgid \"Enter a valid postcode.\"\nmsgstr \"输入一个有效的邮政编码。\"\n\n#: gb/gb_regions.py:11\nmsgid \"Bedfordshire\"\nmsgstr \"Bedfordshire\"\n\n#: gb/gb_regions.py:12\nmsgid \"Buckinghamshire\"\nmsgstr \"白金汉郡\"\n\n#: gb/gb_regions.py:14\nmsgid \"Cheshire\"\nmsgstr \"柴郡\"\n\n#: gb/gb_regions.py:15\nmsgid \"Cornwall and Isles of Scilly\"\nmsgstr \"Cornwall and Isles of Scilly\"\n\n#: gb/gb_regions.py:16\nmsgid \"Cumbria\"\nmsgstr \"坎布里亚\"\n\n#: gb/gb_regions.py:17\nmsgid \"Derbyshire\"\nmsgstr \"Derbyshire\"\n\n#: gb/gb_regions.py:18\nmsgid \"Devon\"\nmsgstr \"德宏\"\n\n#: gb/gb_regions.py:19\nmsgid \"Dorset\"\nmsgstr \"多塞特\"\n\n#: gb/gb_regions.py:20\nmsgid \"Durham\"\nmsgstr \"达勒姆\"\n\n#: gb/gb_regions.py:21\nmsgid \"East Sussex\"\nmsgstr \"东苏塞克斯\"\n\n#: gb/gb_regions.py:22\nmsgid \"Essex\"\nmsgstr \"埃塞克斯\"\n\n#: gb/gb_regions.py:23\nmsgid \"Gloucestershire\"\nmsgstr \"格洛斯特\"\n\n#: gb/gb_regions.py:24\nmsgid \"Greater London\"\nmsgstr \"大伦敦\"\n\n#: gb/gb_regions.py:25\nmsgid \"Greater Manchester\"\nmsgstr \"大曼彻斯特\"\n\n#: gb/gb_regions.py:26\nmsgid \"Hampshire\"\nmsgstr \"新罕布什尔州\"\n\n#: gb/gb_regions.py:27\nmsgid \"Hertfordshire\"\nmsgstr \"赫特福德郡\"\n\n#: gb/gb_regions.py:28\nmsgid \"Kent\"\nmsgstr \"肯特\"\n\n#: gb/gb_regions.py:29\nmsgid \"Lancashire\"\nmsgstr \"兰开夏\"\n\n#: gb/gb_regions.py:30\nmsgid \"Leicestershire\"\nmsgstr \"莱斯特郡\"\n\n#: gb/gb_regions.py:31\nmsgid \"Lincolnshire\"\nmsgstr \"林肯郡\"\n\n#: gb/gb_regions.py:32\nmsgid \"Merseyside\"\nmsgstr \"Merseyside\"\n\n#: gb/gb_regions.py:33\nmsgid \"Norfolk\"\nmsgstr \"诺福克\"\n\n#: gb/gb_regions.py:34\nmsgid \"North Yorkshire\"\nmsgstr \"北约克郡\"\n\n#: gb/gb_regions.py:35\nmsgid \"Northamptonshire\"\nmsgstr \"北安普敦郡\"\n\n#: gb/gb_regions.py:36\nmsgid \"Northumberland\"\nmsgstr \"诺森伯兰\"\n\n#: gb/gb_regions.py:37\nmsgid \"Nottinghamshire\"\nmsgstr \"诺丁汉\"\n\n#: gb/gb_regions.py:38\nmsgid \"Oxfordshire\"\nmsgstr \"牛津郡\"\n\n#: gb/gb_regions.py:39\nmsgid \"Shropshire\"\nmsgstr \"什罗普郡\"\n\n#: gb/gb_regions.py:40\nmsgid \"Somerset\"\nmsgstr \"萨默塞特\"\n\n#: gb/gb_regions.py:41\nmsgid \"South Yorkshire\"\nmsgstr \"南约克郡\"\n\n#: gb/gb_regions.py:42\nmsgid \"Staffordshire\"\nmsgstr \"斯塔福德\"\n\n#: gb/gb_regions.py:43\nmsgid \"Suffolk\"\nmsgstr \"萨福克\"\n\n#: gb/gb_regions.py:44\nmsgid \"Surrey\"\nmsgstr \"萨里\"\n\n#: gb/gb_regions.py:45\nmsgid \"Tyne and Wear\"\nmsgstr \"Tyne and Wear\"\n\n#: gb/gb_regions.py:46\nmsgid \"Warwickshire\"\nmsgstr \"沃里克郡\"\n\n#: gb/gb_regions.py:47\nmsgid \"West Midlands\"\nmsgstr \"西米德兰地区\"\n\n#: gb/gb_regions.py:48\nmsgid \"West Sussex\"\nmsgstr \"西萨塞克斯\"\n\n#: gb/gb_regions.py:49\nmsgid \"West Yorkshire\"\nmsgstr \"西约克郡\"\n\n#: gb/gb_regions.py:50\nmsgid \"Wiltshire\"\nmsgstr \"威尔特郡\"\n\n#: gb/gb_regions.py:51\nmsgid \"Worcestershire\"\nmsgstr \"伍斯特郡\"\n\n#: gb/gb_regions.py:55\nmsgid \"County Antrim\"\nmsgstr \"安特里姆郡\"\n\n#: gb/gb_regions.py:56\nmsgid \"County Armagh\"\nmsgstr \"阿玛县\"\n\n#: gb/gb_regions.py:57\nmsgid \"County Down\"\nmsgstr \"County Down\"\n\n#: gb/gb_regions.py:58\nmsgid \"County Fermanagh\"\nmsgstr \"弗马纳县\"\n\n#: gb/gb_regions.py:59\nmsgid \"County Londonderry\"\nmsgstr \"伦敦德里县\"\n\n#: gb/gb_regions.py:60\nmsgid \"County Tyrone\"\nmsgstr \"泰隆郡\"\n\n#: gb/gb_regions.py:64\nmsgid \"Clwyd\"\nmsgstr \"Clwyd\"\n\n#: gb/gb_regions.py:65\nmsgid \"Dyfed\"\nmsgstr \"Dyfed\"\n\n#: gb/gb_regions.py:66\nmsgid \"Gwent\"\nmsgstr \"Gwent\"\n\n#: gb/gb_regions.py:67\nmsgid \"Gwynedd\"\nmsgstr \"Gwynedd\"\n\n#: gb/gb_regions.py:68\nmsgid \"Mid Glamorgan\"\nmsgstr \"中格拉摩根\"\n\n#: gb/gb_regions.py:69\nmsgid \"Powys\"\nmsgstr \"Powys\"\n\n#: gb/gb_regions.py:70\nmsgid \"South Glamorgan\"\nmsgstr \"南格拉摩根\"\n\n#: gb/gb_regions.py:71\nmsgid \"West Glamorgan\"\nmsgstr \"西格拉摩根\"\n\n#: gb/gb_regions.py:75\nmsgid \"Borders\"\nmsgstr \"Borders\"\n\n#: gb/gb_regions.py:76\nmsgid \"Central Scotland\"\nmsgstr \"中苏格兰\"\n\n#: gb/gb_regions.py:77\nmsgid \"Dumfries and Galloway\"\nmsgstr \"邓弗里斯和加洛韦\"\n\n#: gb/gb_regions.py:78\nmsgid \"Fife\"\nmsgstr \"法伊夫\"\n\n#: gb/gb_regions.py:79\nmsgid \"Grampian\"\nmsgstr \"嘉林\"\n\n#: gb/gb_regions.py:80\nmsgid \"Highland\"\nmsgstr \"高原\"\n\n#: gb/gb_regions.py:81\nmsgid \"Lothian\"\nmsgstr \"洛锡安\"\n\n#: gb/gb_regions.py:82\nmsgid \"Orkney Islands\"\nmsgstr \"康威离岛\"\n\n#: gb/gb_regions.py:83\nmsgid \"Shetland Islands\"\nmsgstr \"设得兰群岛\"\n\n#: gb/gb_regions.py:84\nmsgid \"Strathclyde\"\nmsgstr \"斯特拉思克莱德\"\n\n#: gb/gb_regions.py:85\nmsgid \"Tayside\"\nmsgstr \"泰赛德\"\n\n#: gb/gb_regions.py:86\nmsgid \"Western Isles\"\nmsgstr \"西岛\"\n\n#: gb/gb_regions.py:90\nmsgid \"England\"\nmsgstr \"英格兰\"\n\n#: gb/gb_regions.py:91\nmsgid \"Northern Ireland\"\nmsgstr \"北爱尔兰\"\n\n#: gb/gb_regions.py:92\nmsgid \"Scotland\"\nmsgstr \"苏格兰\"\n\n#: gb/gb_regions.py:93\nmsgid \"Wales\"\nmsgstr \"威尔斯\"\n\n#: hk/forms.py:37\n#, python-format\nmsgid \"Phone number should not start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:40\n#, python-format\nmsgid \"Phone number must be in one of the following formats: %s.\"\nmsgstr \"\"\n\n#: hk/forms.py:42\n#, python-format\nmsgid \"Phone number should start with one of the followings: %s.\"\nmsgstr \"\"\n\n#: hr/forms.py:76\nmsgid \"Enter a valid 13 digit JMBG\"\nmsgstr \"\"\n\n#: hr/forms.py:77\nmsgid \"Error in date segment\"\nmsgstr \"\"\n\n#: hr/forms.py:123\nmsgid \"Enter a valid 11 digit OIB\"\nmsgstr \"\"\n\n#: hr/forms.py:152 id/forms.py:112\nmsgid \"Enter a valid vehicle license plate number\"\nmsgstr \"输入一个有效的车牌号码\"\n\n#: hr/forms.py:153\nmsgid \"Enter a valid location code\"\nmsgstr \"输入一个可用的地区代码\"\n\n#: hr/forms.py:154\nmsgid \"Number part cannot be zero\"\nmsgstr \"\"\n\n#: hr/forms.py:190\nmsgid \"Enter a valid 5 digit postal code\"\nmsgstr \"\"\n\n#: hr/forms.py:218 id/forms.py:72 nl/forms.py:56\nmsgid \"Enter a valid phone number\"\nmsgstr \"输入一个有效的电话号码\"\n\n#: hr/forms.py:219\nmsgid \"Enter a valid area or mobile network code\"\nmsgstr \"\"\n\n#: hr/forms.py:220\nmsgid \"The phone nubmer is too long\"\nmsgstr \"\"\n\n#: hr/forms.py:258\nmsgid \"Enter a valid 19 digit JMBAG starting with 601983\"\nmsgstr \"\"\n\n#: hr/forms.py:259\nmsgid \"Card issue number cannot be zero\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:14\nmsgid \"Grad Zagreb\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:15\nmsgid \"Bjelovarsko-bilogorska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:16\nmsgid \"Brodsko-posavska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:17\nmsgid \"Dubrovačko-neretvanska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:18\nmsgid \"Istarska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:19\nmsgid \"Karlovačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:20\nmsgid \"Koprivničko-križevačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:21\nmsgid \"Krapinsko-zagorska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:22\nmsgid \"Ličko-senjska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:23\nmsgid \"Međimurska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:24\nmsgid \"Osječko-baranjska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:25\nmsgid \"Požeško-slavonska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:26\nmsgid \"Primorsko-goranska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:27\nmsgid \"Sisačko-moslavačka županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:28\nmsgid \"Splitsko-dalmatinska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:29\nmsgid \"Šibensko-kninska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:30\nmsgid \"Varaždinska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:31\nmsgid \"Virovitičko-podravska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:32\nmsgid \"Vukovarsko-srijemska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:33\nmsgid \"Zadarska županija\"\nmsgstr \"\"\n\n#: hr/hr_choices.py:34\nmsgid \"Zagrebačka županija\"\nmsgstr \"\"\n\n#: id/forms.py:31\nmsgid \"Enter a valid post code\"\nmsgstr \"输入一个有效的邮政编码\"\n\n#: id/forms.py:176\nmsgid \"Enter a valid NIK/KTP number\"\nmsgstr \"输入一个有效的 NIK/KTP 号码\"\n\n#: id/id_choices.py:15\nmsgid \"Aceh\"\nmsgstr \"亚齐\"\n\n#: id/id_choices.py:16 id/id_choices.py:79\nmsgid \"Bali\"\nmsgstr \"巴厘岛\"\n\n#: id/id_choices.py:17 id/id_choices.py:51\nmsgid \"Banten\"\nmsgstr \"万丹国\"\n\n#: id/id_choices.py:18 id/id_choices.py:60\nmsgid \"Bengkulu\"\nmsgstr \"明古鲁\"\n\n#: id/id_choices.py:19 id/id_choices.py:53\nmsgid \"Yogyakarta\"\nmsgstr \"日惹\"\n\n#: id/id_choices.py:20 id/id_choices.py:57\nmsgid \"Jakarta\"\nmsgstr \"雅加达\"\n\n#: id/id_choices.py:21 id/id_choices.py:81\nmsgid \"Gorontalo\"\nmsgstr \"哥伦打洛\"\n\n#: id/id_choices.py:22 id/id_choices.py:63\nmsgid \"Jambi\"\nmsgstr \"占碑\"\n\n#: id/id_choices.py:23\nmsgid \"Jawa Barat\"\nmsgstr \"西爪哇\"\n\n#: id/id_choices.py:24\nmsgid \"Jawa Tengah\"\nmsgstr \"中爪哇\"\n\n#: id/id_choices.py:25\nmsgid \"Jawa Timur\"\nmsgstr \"爪哇帖木儿\"\n\n#: id/id_choices.py:26 id/id_choices.py:94\nmsgid \"Kalimantan Barat\"\nmsgstr \"西加里曼丹\"\n\n#: id/id_choices.py:27 id/id_choices.py:72\nmsgid \"Kalimantan Selatan\"\nmsgstr \"南加里曼丹\"\n\n#: id/id_choices.py:28 id/id_choices.py:95\nmsgid \"Kalimantan Tengah\"\nmsgstr \"中加里曼丹\"\n\n#: id/id_choices.py:29 id/id_choices.py:96\nmsgid \"Kalimantan Timur\"\nmsgstr \"东加里曼丹\"\n\n#: id/id_choices.py:30\nmsgid \"Kepulauan Bangka-Belitung\"\nmsgstr \"邦加勿里洞群岛\"\n\n#: id/id_choices.py:31 id/id_choices.py:68\nmsgid \"Kepulauan Riau\"\nmsgstr \"廖内群岛\"\n\n#: id/id_choices.py:32 id/id_choices.py:61\nmsgid \"Lampung\"\nmsgstr \"楠榜\"\n\n#: id/id_choices.py:33 id/id_choices.py:76\nmsgid \"Maluku\"\nmsgstr \"马鲁古群岛\"\n\n#: id/id_choices.py:34 id/id_choices.py:77\nmsgid \"Maluku Utara\"\nmsgstr \"北马鲁古\"\n\n#: id/id_choices.py:35\nmsgid \"Nusa Tenggara Barat\"\nmsgstr \"西努沙登加拉\"\n\n#: id/id_choices.py:36\nmsgid \"Nusa Tenggara Timur\"\nmsgstr \"东努沙登加拉\"\n\n#: id/id_choices.py:37\nmsgid \"Papua\"\nmsgstr \"巴布亚\"\n\n#: id/id_choices.py:38\nmsgid \"Papua Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:39 id/id_choices.py:66\nmsgid \"Riau\"\nmsgstr \"廖内群岛\"\n\n#: id/id_choices.py:40 id/id_choices.py:74\nmsgid \"Sulawesi Barat\"\nmsgstr \"苏拉威西巴拉\"\n\n#: id/id_choices.py:41 id/id_choices.py:75\nmsgid \"Sulawesi Selatan\"\nmsgstr \"\"\n\n#: id/id_choices.py:42 id/id_choices.py:82\nmsgid \"Sulawesi Tengah\"\nmsgstr \"\"\n\n#: id/id_choices.py:43 id/id_choices.py:85\nmsgid \"Sulawesi Tenggara\"\nmsgstr \"\"\n\n#: id/id_choices.py:44\nmsgid \"Sulawesi Utara\"\nmsgstr \"\"\n\n#: id/id_choices.py:45 id/id_choices.py:58\nmsgid \"Sumatera Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:46 id/id_choices.py:62\nmsgid \"Sumatera Selatan\"\nmsgstr \"\"\n\n#: id/id_choices.py:47 id/id_choices.py:64\nmsgid \"Sumatera Utara\"\nmsgstr \"\"\n\n#: id/id_choices.py:52\nmsgid \"Magelang\"\nmsgstr \"\"\n\n#: id/id_choices.py:54\nmsgid \"Surakarta - Solo\"\nmsgstr \"\"\n\n#: id/id_choices.py:55\nmsgid \"Madiun\"\nmsgstr \"\"\n\n#: id/id_choices.py:56\nmsgid \"Kediri\"\nmsgstr \"\"\n\n#: id/id_choices.py:59\nmsgid \"Tapanuli\"\nmsgstr \"\"\n\n#: id/id_choices.py:65\nmsgid \"Nanggroe Aceh Darussalam\"\nmsgstr \"\"\n\n#: id/id_choices.py:67\nmsgid \"Kepulauan Bangka Belitung\"\nmsgstr \"\"\n\n#: id/id_choices.py:69\nmsgid \"Corps Consulate\"\nmsgstr \"\"\n\n#: id/id_choices.py:70\nmsgid \"Corps Diplomatic\"\nmsgstr \"\"\n\n#: id/id_choices.py:71\nmsgid \"Bandung\"\nmsgstr \"\"\n\n#: id/id_choices.py:73\nmsgid \"Sulawesi Utara Daratan\"\nmsgstr \"\"\n\n#: id/id_choices.py:78\nmsgid \"NTT - Timor\"\nmsgstr \"\"\n\n#: id/id_choices.py:80\nmsgid \"Sulawesi Utara Kepulauan\"\nmsgstr \"\"\n\n#: id/id_choices.py:83\nmsgid \"NTB - Lombok\"\nmsgstr \"\"\n\n#: id/id_choices.py:84\nmsgid \"Papua dan Papua Barat\"\nmsgstr \"\"\n\n#: id/id_choices.py:86\nmsgid \"Cirebon\"\nmsgstr \"\"\n\n#: id/id_choices.py:87\nmsgid \"NTB - Sumbawa\"\nmsgstr \"\"\n\n#: id/id_choices.py:88\nmsgid \"NTT - Flores\"\nmsgstr \"\"\n\n#: id/id_choices.py:89\nmsgid \"NTT - Sumba\"\nmsgstr \"\"\n\n#: id/id_choices.py:90\nmsgid \"Bogor\"\nmsgstr \"\"\n\n#: id/id_choices.py:91\nmsgid \"Pekalongan\"\nmsgstr \"\"\n\n#: id/id_choices.py:92\nmsgid \"Semarang\"\nmsgstr \"\"\n\n#: id/id_choices.py:93\nmsgid \"Pati\"\nmsgstr \"\"\n\n#: id/id_choices.py:97\nmsgid \"Surabaya\"\nmsgstr \"\"\n\n#: id/id_choices.py:98\nmsgid \"Madura\"\nmsgstr \"\"\n\n#: id/id_choices.py:99\nmsgid \"Malang\"\nmsgstr \"\"\n\n#: id/id_choices.py:100\nmsgid \"Jember\"\nmsgstr \"\"\n\n#: id/id_choices.py:101\nmsgid \"Banyumas\"\nmsgstr \"\"\n\n#: id/id_choices.py:102\nmsgid \"Federal Government\"\nmsgstr \"\"\n\n#: id/id_choices.py:103\nmsgid \"Bojonegoro\"\nmsgstr \"\"\n\n#: id/id_choices.py:104\nmsgid \"Purwakarta\"\nmsgstr \"\"\n\n#: id/id_choices.py:105\nmsgid \"Sidoarjo\"\nmsgstr \"\"\n\n#: id/id_choices.py:106\nmsgid \"Garut\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:8\nmsgid \"Antrim\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:9\nmsgid \"Armagh\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:10\nmsgid \"Carlow\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:11\nmsgid \"Cavan\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:12\nmsgid \"Clare\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:13\nmsgid \"Cork\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:14\nmsgid \"Derry\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:15\nmsgid \"Donegal\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:16\nmsgid \"Down\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:17\nmsgid \"Dublin\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:18\nmsgid \"Fermanagh\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:19\nmsgid \"Galway\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:20\nmsgid \"Kerry\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:21\nmsgid \"Kildare\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:22\nmsgid \"Kilkenny\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:23\nmsgid \"Laois\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:24\nmsgid \"Leitrim\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:25\nmsgid \"Limerick\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:26\nmsgid \"Longford\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:27\nmsgid \"Louth\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:28\nmsgid \"Mayo\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:29\nmsgid \"Meath\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:30\nmsgid \"Monaghan\"\nmsgstr \"莫纳亨（爱尔兰东北部郡）\"\n\n#: ie/ie_counties.py:31\nmsgid \"Offaly\"\nmsgstr \"\"\n\n#: ie/ie_counties.py:32\nmsgid \"Roscommon\"\nmsgstr \"罗斯哥蒙\"\n\n#: ie/ie_counties.py:33\nmsgid \"Sligo\"\nmsgstr \"斯莱戈\"\n\n#: ie/ie_counties.py:34\nmsgid \"Tipperary\"\nmsgstr \"蒂帕雷里\"\n\n#: ie/ie_counties.py:35\nmsgid \"Tyrone\"\nmsgstr \"泰隆\"\n\n#: ie/ie_counties.py:36\nmsgid \"Waterford\"\nmsgstr \"沃特福德\"\n\n#: ie/ie_counties.py:37\nmsgid \"Westmeath\"\nmsgstr \"韦斯特米斯\"\n\n#: ie/ie_counties.py:38\nmsgid \"Wexford\"\nmsgstr \"韦克斯福德\"\n\n#: ie/ie_counties.py:39\nmsgid \"Wicklow\"\nmsgstr \"维克罗\"\n\n#: il/forms.py:32\nmsgid \"Enter a postal code in the format XXXXX\"\nmsgstr \"以 XXXXX 格式输入一个邮政编码。\"\n\n#: il/forms.py:51\nmsgid \"Enter a valid ID number.\"\nmsgstr \"输入一个有效的 ID 号码。\"\n\n#: in_/forms.py:41\nmsgid \"Enter a zip code in the format XXXXXX or XXX XXX.\"\nmsgstr \"\"\n\n#: in_/forms.py:64\nmsgid \"Enter an Indian state or territory.\"\nmsgstr \"\"\n\n#: in_/forms.py:103\nmsgid \"Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.\"\nmsgstr \"\"\n\n#: is_/forms.py:22\nmsgid \"\"\n\"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.\"\nmsgstr \"输入一个有效的冰岛身份证号码。格式为 XXXXXX-XXXX 。\"\n\n#: is_/forms.py:23\nmsgid \"The Icelandic identification number is not valid.\"\nmsgstr \"无效的冰岛身份证号码。\"\n\n#: it/forms.py:21\nmsgid \"Enter a valid zip code.\"\nmsgstr \"输入一个有效的邮政编码。\"\n\n#: it/forms.py:48\nmsgid \"Enter a valid Social Security number.\"\nmsgstr \"输入一个有效的社会保障号码。\"\n\n#: it/forms.py:73\nmsgid \"Enter a valid VAT number.\"\nmsgstr \"输入一个有效的 VAT 号码。\"\n\n#: jp/forms.py:19\nmsgid \"Enter a postal code in the format XXXXXXX or XXX-XXXX.\"\nmsgstr \"以 XXXXXXX 或 XXX-XXXX 的格式输入一个邮政编码。\"\n\n#: jp/jp_prefectures.py:4\nmsgid \"Hokkaido\"\nmsgstr \"北海道\"\n\n#: jp/jp_prefectures.py:5\nmsgid \"Aomori\"\nmsgstr \"青森\"\n\n#: jp/jp_prefectures.py:6\nmsgid \"Iwate\"\nmsgstr \"岩手\"\n\n#: jp/jp_prefectures.py:7\nmsgid \"Miyagi\"\nmsgstr \"宫城\"\n\n#: jp/jp_prefectures.py:8\nmsgid \"Akita\"\nmsgstr \"秋田\"\n\n#: jp/jp_prefectures.py:9\nmsgid \"Yamagata\"\nmsgstr \"山形\"\n\n#: jp/jp_prefectures.py:10\nmsgid \"Fukushima\"\nmsgstr \"福岛\"\n\n#: jp/jp_prefectures.py:11\nmsgid \"Ibaraki\"\nmsgstr \"茨城\"\n\n#: jp/jp_prefectures.py:12\nmsgid \"Tochigi\"\nmsgstr \"枥木\"\n\n#: jp/jp_prefectures.py:13\nmsgid \"Gunma\"\nmsgstr \"群马\"\n\n#: jp/jp_prefectures.py:14\nmsgid \"Saitama\"\nmsgstr \"埼玉\"\n\n#: jp/jp_prefectures.py:15\nmsgid \"Chiba\"\nmsgstr \"千叶\"\n\n#: jp/jp_prefectures.py:16\nmsgid \"Tokyo\"\nmsgstr \"东京\"\n\n#: jp/jp_prefectures.py:17\nmsgid \"Kanagawa\"\nmsgstr \"神奈川\"\n\n#: jp/jp_prefectures.py:18\nmsgid \"Yamanashi\"\nmsgstr \"山梨\"\n\n#: jp/jp_prefectures.py:19\nmsgid \"Nagano\"\nmsgstr \"长野\"\n\n#: jp/jp_prefectures.py:20\nmsgid \"Niigata\"\nmsgstr \"新舄\"\n\n#: jp/jp_prefectures.py:21\nmsgid \"Toyama\"\nmsgstr \"富山\"\n\n#: jp/jp_prefectures.py:22\nmsgid \"Ishikawa\"\nmsgstr \"石川\"\n\n#: jp/jp_prefectures.py:23\nmsgid \"Fukui\"\nmsgstr \"福井\"\n\n#: jp/jp_prefectures.py:24\nmsgid \"Gifu\"\nmsgstr \"岐阜\"\n\n#: jp/jp_prefectures.py:25\nmsgid \"Shizuoka\"\nmsgstr \"静冈\"\n\n#: jp/jp_prefectures.py:26\nmsgid \"Aichi\"\nmsgstr \"爱知\"\n\n#: jp/jp_prefectures.py:27\nmsgid \"Mie\"\nmsgstr \"三重\"\n\n#: jp/jp_prefectures.py:28\nmsgid \"Shiga\"\nmsgstr \"滋贺\"\n\n#: jp/jp_prefectures.py:29\nmsgid \"Kyoto\"\nmsgstr \"京都\"\n\n#: jp/jp_prefectures.py:30\nmsgid \"Osaka\"\nmsgstr \"大坂\"\n\n#: jp/jp_prefectures.py:31\nmsgid \"Hyogo\"\nmsgstr \"兵库\"\n\n#: jp/jp_prefectures.py:32\nmsgid \"Nara\"\nmsgstr \"奈良\"\n\n#: jp/jp_prefectures.py:33\nmsgid \"Wakayama\"\nmsgstr \"和歌山\"\n\n#: jp/jp_prefectures.py:34\nmsgid \"Tottori\"\nmsgstr \"鸟取\"\n\n#: jp/jp_prefectures.py:35\nmsgid \"Shimane\"\nmsgstr \"岛根\"\n\n#: jp/jp_prefectures.py:36\nmsgid \"Okayama\"\nmsgstr \"冈山\"\n\n#: jp/jp_prefectures.py:37\nmsgid \"Hiroshima\"\nmsgstr \"广岛\"\n\n#: jp/jp_prefectures.py:38\nmsgid \"Yamaguchi\"\nmsgstr \"山口\"\n\n#: jp/jp_prefectures.py:39\nmsgid \"Tokushima\"\nmsgstr \"德岛\"\n\n#: jp/jp_prefectures.py:40\nmsgid \"Kagawa\"\nmsgstr \"香川\"\n\n#: jp/jp_prefectures.py:41\nmsgid \"Ehime\"\nmsgstr \"爱媛\"\n\n#: jp/jp_prefectures.py:42\nmsgid \"Kochi\"\nmsgstr \"高知\"\n\n#: jp/jp_prefectures.py:43\nmsgid \"Fukuoka\"\nmsgstr \"福冈\"\n\n#: jp/jp_prefectures.py:44\nmsgid \"Saga\"\nmsgstr \"佐贺\"\n\n#: jp/jp_prefectures.py:45\nmsgid \"Nagasaki\"\nmsgstr \"长崎\"\n\n#: jp/jp_prefectures.py:46\nmsgid \"Kumamoto\"\nmsgstr \"熊本\"\n\n#: jp/jp_prefectures.py:47\nmsgid \"Oita\"\nmsgstr \"大分\"\n\n#: jp/jp_prefectures.py:48\nmsgid \"Miyazaki\"\nmsgstr \"宫崎\"\n\n#: jp/jp_prefectures.py:49\nmsgid \"Kagoshima\"\nmsgstr \"鹿儿岛\"\n\n#: jp/jp_prefectures.py:50\nmsgid \"Okinawa\"\nmsgstr \"冲绳岛\"\n\n#: kw/forms.py:27\nmsgid \"Enter a valid Kuwaiti Civil ID number\"\nmsgstr \"\"\n\n#: mk/forms.py:18\nmsgid \"\"\n\"Identity card numbers must contain either 4 to 7 digits or an uppercase \"\n\"letter and 7 digits.\"\nmsgstr \"\"\n\n#: mk/forms.py:57 si/forms.py:24\nmsgid \"This field should contain exactly 13 digits.\"\nmsgstr \"\"\n\n#: mk/forms.py:58\nmsgid \"The first 7 digits of the UMCN must represent a valid past date.\"\nmsgstr \"\"\n\n#: mk/forms.py:59\nmsgid \"The UMCN is not valid.\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:10\nmsgid \"Aerodrom\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:11\nmsgid \"Aračinovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:12\nmsgid \"Berovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:13\nmsgid \"Bitola\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:14\nmsgid \"Bogdanci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:15\nmsgid \"Bogovinje\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:16\nmsgid \"Bosilovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:17\nmsgid \"Brvenica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:18\nmsgid \"Butel\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:19\nmsgid \"Valandovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:20\nmsgid \"Vasilevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:21\nmsgid \"Vevčani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:22\nmsgid \"Veles\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:23\nmsgid \"Vinica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:24\nmsgid \"Vraneštica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:25\nmsgid \"Vrapčište\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:26\nmsgid \"Gazi Baba\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:27\nmsgid \"Gevgelija\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:28\nmsgid \"Gostivar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:29\nmsgid \"Gradsko\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:30\nmsgid \"Debar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:31\nmsgid \"Debarca\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:32\nmsgid \"Delčevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:33\nmsgid \"Demir Kapija\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:34\nmsgid \"Demir Hisar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:35\nmsgid \"Dolneni\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:36\nmsgid \"Drugovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:37\nmsgid \"Gjorče Petrov\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:38\nmsgid \"Želino\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:39\nmsgid \"Zajas\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:40\nmsgid \"Zelenikovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:41\nmsgid \"Zrnovci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:42\nmsgid \"Ilinden\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:43\nmsgid \"Jegunovce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:44\nmsgid \"Kavadarci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:45\nmsgid \"Karbinci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:46\nmsgid \"Karpoš\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:47\nmsgid \"Kisela Voda\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:48\nmsgid \"Kičevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:49\nmsgid \"Konče\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:50\nmsgid \"Koćani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:51\nmsgid \"Kratovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:52\nmsgid \"Kriva Palanka\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:53\nmsgid \"Krivogaštani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:54\nmsgid \"Kruševo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:55\nmsgid \"Kumanovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:56\nmsgid \"Lipkovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:57\nmsgid \"Lozovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:58\nmsgid \"Mavrovo i Rostuša\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:59\nmsgid \"Makedonska Kamenica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:60\nmsgid \"Makedonski Brod\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:61\nmsgid \"Mogila\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:62\nmsgid \"Negotino\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:63\nmsgid \"Novaci\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:64\nmsgid \"Novo Selo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:65\nmsgid \"Oslomej\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:66\nmsgid \"Ohrid\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:67\nmsgid \"Petrovec\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:68\nmsgid \"Pehčevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:69\nmsgid \"Plasnica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:70\nmsgid \"Prilep\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:71\nmsgid \"Probištip\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:72\nmsgid \"Radoviš\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:73\nmsgid \"Rankovce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:74\nmsgid \"Resen\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:75\nmsgid \"Rosoman\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:76\nmsgid \"Saraj\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:77\nmsgid \"Sveti Nikole\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:78\nmsgid \"Sopište\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:79\nmsgid \"Star Dojran\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:80\nmsgid \"Staro Nagoričane\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:81\nmsgid \"Struga\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:82\nmsgid \"Strumica\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:83\nmsgid \"Studeničani\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:84\nmsgid \"Tearce\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:85\nmsgid \"Tetovo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:86\nmsgid \"Centar\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:87\nmsgid \"Centar-Župa\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:88\nmsgid \"Čair\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:89\nmsgid \"Čaška\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:90\nmsgid \"Češinovo-Obleševo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:91\nmsgid \"Čučer-Sandevo\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:92\nmsgid \"Štip\"\nmsgstr \"\"\n\n#: mk/mk_choices.py:93\nmsgid \"Šuto Orizari\"\nmsgstr \"\"\n\n#: mk/models.py:11\nmsgid \"Macedonian identity card number\"\nmsgstr \"\"\n\n#: mk/models.py:25\nmsgid \"A Macedonian municipality (2 character code)\"\nmsgstr \"\"\n\n#: mk/models.py:35\nmsgid \"Unique master citizen number (13 digits)\"\nmsgstr \"\"\n\n#: mx/forms.py:67\nmsgid \"Enter a valid zip code in the format XXXXX.\"\nmsgstr \"\"\n\n#: mx/forms.py:110\nmsgid \"Enter a valid RFC.\"\nmsgstr \"\"\n\n#: mx/forms.py:111\nmsgid \"Invalid checksum for RFC.\"\nmsgstr \"\"\n\n#: mx/forms.py:191\nmsgid \"Enter a valid CURP.\"\nmsgstr \"\"\n\n#: mx/forms.py:192\nmsgid \"Invalid checksum for CURP.\"\nmsgstr \"\"\n\n#: mx/models.py:14\nmsgid \"Mexico state (three uppercase letters)\"\nmsgstr \"\"\n\n#: mx/models.py:27\nmsgid \"Mexico zip code\"\nmsgstr \"\"\n\n#: mx/models.py:44\nmsgid \"Mexican RFC\"\nmsgstr \"\"\n\n#: mx/models.py:61\nmsgid \"Mexican CURP\"\nmsgstr \"\"\n\n#: mx/mx_states.py:14\nmsgid \"Aguascalientes\"\nmsgstr \"阿瓜斯卡连特斯\"\n\n#: mx/mx_states.py:15\nmsgid \"Baja California\"\nmsgstr \"下加利福尼亚州\"\n\n#: mx/mx_states.py:16\nmsgid \"Baja California Sur\"\nmsgstr \"巴哈加利福尼亚\"\n\n#: mx/mx_states.py:17\nmsgid \"Campeche\"\nmsgstr \"坎佩切\"\n\n#: mx/mx_states.py:18\nmsgid \"Chihuahua\"\nmsgstr \"奇瓦瓦\"\n\n#: mx/mx_states.py:19\nmsgid \"Chiapas\"\nmsgstr \"恰帕斯\"\n\n#: mx/mx_states.py:20\nmsgid \"Coahuila\"\nmsgstr \"科阿韦拉\"\n\n#: mx/mx_states.py:21\nmsgid \"Colima\"\nmsgstr \"科利马\"\n\n#: mx/mx_states.py:22\nmsgid \"Distrito Federal\"\nmsgstr \"联邦区\"\n\n#: mx/mx_states.py:23\nmsgid \"Durango\"\nmsgstr \"杜兰戈\"\n\n#: mx/mx_states.py:24\nmsgid \"Guerrero\"\nmsgstr \"格雷罗\"\n\n#: mx/mx_states.py:25\nmsgid \"Guanajuato\"\nmsgstr \"Guanajuato\"\n\n#: mx/mx_states.py:26\nmsgid \"Hidalgo\"\nmsgstr \"伊达尔戈\"\n\n#: mx/mx_states.py:27\nmsgid \"Jalisco\"\nmsgstr \"哈利斯科州\"\n\n#: mx/mx_states.py:28\nmsgid \"Estado de México\"\nmsgstr \"Estado de México\"\n\n#: mx/mx_states.py:29\nmsgid \"Michoacán\"\nmsgstr \"米却肯州\"\n\n#: mx/mx_states.py:30\nmsgid \"Morelos\"\nmsgstr \"莫雷洛斯\"\n\n#: mx/mx_states.py:31\nmsgid \"Nayarit\"\nmsgstr \"纳亚里特\"\n\n#: mx/mx_states.py:32\nmsgid \"Nuevo León\"\nmsgstr \"新莱昂州\"\n\n#: mx/mx_states.py:33\nmsgid \"Oaxaca\"\nmsgstr \"瓦哈卡\"\n\n#: mx/mx_states.py:34\nmsgid \"Puebla\"\nmsgstr \"普埃布拉\"\n\n#: mx/mx_states.py:35\nmsgid \"Querétaro\"\nmsgstr \"克雷塔罗\"\n\n#: mx/mx_states.py:36\nmsgid \"Quintana Roo\"\nmsgstr \"金塔纳罗奥\"\n\n#: mx/mx_states.py:37\nmsgid \"Sinaloa\"\nmsgstr \"锡那罗亚州\"\n\n#: mx/mx_states.py:38\nmsgid \"San Luis Potosí\"\nmsgstr \"圣路易斯波托西\"\n\n#: mx/mx_states.py:39\nmsgid \"Sonora\"\nmsgstr \"索诺拉\"\n\n#: mx/mx_states.py:40\nmsgid \"Tabasco\"\nmsgstr \"塔巴斯科\"\n\n#: mx/mx_states.py:41\nmsgid \"Tamaulipas\"\nmsgstr \"塔毛利帕斯\"\n\n#: mx/mx_states.py:42\nmsgid \"Tlaxcala\"\nmsgstr \"特拉斯卡拉\"\n\n#: mx/mx_states.py:43\nmsgid \"Veracruz\"\nmsgstr \"韦拉克鲁斯\"\n\n#: mx/mx_states.py:44\nmsgid \"Yucatán\"\nmsgstr \"尤卡坦\"\n\n#: mx/mx_states.py:45\nmsgid \"Zacatecas\"\nmsgstr \"萨卡特卡斯\"\n\n#: nl/forms.py:26\nmsgid \"Enter a valid postal code\"\nmsgstr \"输入一个有效的邮政编码\"\n\n#: nl/forms.py:82\nmsgid \"Enter a valid SoFi number\"\nmsgstr \"输入一个有效的 SoFi 号码\"\n\n#: nl/nl_provinces.py:4\nmsgid \"Drenthe\"\nmsgstr \"德伦特省\"\n\n#: nl/nl_provinces.py:5\nmsgid \"Flevoland\"\nmsgstr \"Flevoland\"\n\n#: nl/nl_provinces.py:6\nmsgid \"Friesland\"\nmsgstr \"菲仕兰\"\n\n#: nl/nl_provinces.py:7\nmsgid \"Gelderland\"\nmsgstr \"格尔德兰\"\n\n#: nl/nl_provinces.py:8\nmsgid \"Groningen\"\nmsgstr \"格罗宁根\"\n\n#: nl/nl_provinces.py:10\nmsgid \"Noord-Brabant\"\nmsgstr \"北布拉邦\"\n\n#: nl/nl_provinces.py:11\nmsgid \"Noord-Holland\"\nmsgstr \"北荷兰\"\n\n#: nl/nl_provinces.py:12\nmsgid \"Overijssel\"\nmsgstr \"艾瑟尔\"\n\n#: nl/nl_provinces.py:13\nmsgid \"Utrecht\"\nmsgstr \"乌得勒支\"\n\n#: nl/nl_provinces.py:14\nmsgid \"Zeeland\"\nmsgstr \"Zeeland\"\n\n#: nl/nl_provinces.py:15\nmsgid \"Zuid-Holland\"\nmsgstr \"南荷兰省\"\n\n#: no/forms.py:39\nmsgid \"Enter a valid Norwegian social security number.\"\nmsgstr \"请输入一个有效的挪威社会保障号码。\"\n\n#: pe/forms.py:28\nmsgid \"This field requires 8 digits.\"\nmsgstr \"这个字段要求填写 8 位数字。\"\n\n#: pe/forms.py:56\nmsgid \"This field requires 11 digits.\"\nmsgstr \"这个字段要求填写 11 位数字。\"\n\n#: pl/forms.py:42\nmsgid \"National Identification Number consists of 11 digits.\"\nmsgstr \"国家身份证号码由 11 位数字组成。\"\n\n#: pl/forms.py:43\nmsgid \"Wrong checksum for the National Identification Number.\"\nmsgstr \"国家身份证号码校验和错误。\"\n\n#: pl/forms.py:79\nmsgid \"National ID Card Number consists of 3 letters and 6 digits.\"\nmsgstr \"\"\n\n#: pl/forms.py:80\nmsgid \"Wrong checksum for the National ID Card Number.\"\nmsgstr \"\"\n\n#: pl/forms.py:131\nmsgid \"\"\n\"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or \"\n\"XXXXXXXXXX.\"\nmsgstr \"\"\n\n#: pl/forms.py:132\nmsgid \"Wrong checksum for the Tax Number (NIP).\"\nmsgstr \"税号（NIP）校验和错误。\"\n\n#: pl/forms.py:171\nmsgid \"National Business Register Number (REGON) consists of 9 or 14 digits.\"\nmsgstr \"国家商业注册号码（REGON）由 9 位或 14 位数字组成。\"\n\n#: pl/forms.py:172\nmsgid \"Wrong checksum for the National Business Register Number (REGON).\"\nmsgstr \"国家商业注册号码（REGON）校验和错误。\"\n\n#: pl/forms.py:212\nmsgid \"Enter a postal code in the format XX-XXX.\"\nmsgstr \"以 XX-XXX 的格式输入一个邮政编码。\"\n\n#: pl/pl_voivodeships.py:8\nmsgid \"Lower Silesia\"\nmsgstr \"下西里西亚\"\n\n#: pl/pl_voivodeships.py:9\nmsgid \"Kuyavia-Pomerania\"\nmsgstr \"Kuyavia-Pomerania\"\n\n#: pl/pl_voivodeships.py:10\nmsgid \"Lublin\"\nmsgstr \"卢布林\"\n\n#: pl/pl_voivodeships.py:11\nmsgid \"Lubusz\"\nmsgstr \"Lubusz\"\n\n#: pl/pl_voivodeships.py:12\nmsgid \"Lodz\"\nmsgstr \"罗兹\"\n\n#: pl/pl_voivodeships.py:13\nmsgid \"Lesser Poland\"\nmsgstr \"Lesser Poland\"\n\n#: pl/pl_voivodeships.py:14\nmsgid \"Masovia\"\nmsgstr \"马佐夫舍\"\n\n#: pl/pl_voivodeships.py:15\nmsgid \"Opole\"\nmsgstr \"奥波莱\"\n\n#: pl/pl_voivodeships.py:16\nmsgid \"Subcarpatia\"\nmsgstr \"Subcarpatia\"\n\n#: pl/pl_voivodeships.py:17\nmsgid \"Podlasie\"\nmsgstr \"Podlasie\"\n\n#: pl/pl_voivodeships.py:18\nmsgid \"Pomerania\"\nmsgstr \"波美拉尼亚\"\n\n#: pl/pl_voivodeships.py:19\nmsgid \"Silesia\"\nmsgstr \"西里西亚\"\n\n#: pl/pl_voivodeships.py:20\nmsgid \"Swietokrzyskie\"\nmsgstr \"Swietokrzyskie\"\n\n#: pl/pl_voivodeships.py:21\nmsgid \"Warmia-Masuria\"\nmsgstr \"Warmia-Masuria\"\n\n#: pl/pl_voivodeships.py:22\nmsgid \"Greater Poland\"\nmsgstr \"Greater Poland\"\n\n#: pl/pl_voivodeships.py:23\nmsgid \"West Pomerania\"\nmsgstr \"西波美拉尼亚\"\n\n#: pt/forms.py:19\nmsgid \"Enter a zip code in the format XXXX-XXX.\"\nmsgstr \"以 XXXX-XXX 格式输入一个邮政编码。\"\n\n#: pt/forms.py:39\nmsgid \"Phone numbers must have 9 digits, or start by + or 00.\"\nmsgstr \"电话号码必须是9位数，以 + 或 00 开头。\"\n\n#: ro/forms.py:22\nmsgid \"Enter a valid CIF.\"\nmsgstr \"输入一个有效的 CIF。\"\n\n#: ro/forms.py:59\nmsgid \"Enter a valid CNP.\"\nmsgstr \"输入一个有效的 CNP。\"\n\n#: ro/forms.py:143\nmsgid \"Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format\"\nmsgstr \"以 ROXX-XXXX-XXXX-XXXX-XXXX-XXXX 格式输入一个有效的 IBAN\"\n\n#: ro/forms.py:175\nmsgid \"Phone numbers must be in XXXX-XXXXXX format.\"\nmsgstr \"电话号码必须为 XXXX-XXXXXX 格式。\"\n\n#: ro/forms.py:200\nmsgid \"Enter a valid postal code in the format XXXXXX\"\nmsgstr \"以 XXXXXX 的格式输入一个邮政编码\"\n\n#: ru/forms.py:37\nmsgid \"Enter a postal code in the format XXXXXX.\"\nmsgstr \"\"\n\n#: ru/forms.py:50\nmsgid \"Enter a passport number in the format XXXX XXXXXX.\"\nmsgstr \"\"\n\n#: ru/forms.py:63\nmsgid \"Enter a passport number in the format XX XXXXXXX.\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:10\nmsgid \"Central Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:11\nmsgid \"South Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:12\nmsgid \"North-West Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:13\nmsgid \"Far-East Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:14\nmsgid \"Siberian Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:15\nmsgid \"Ural Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:16\nmsgid \"Privolzhsky Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:17\nmsgid \"North-Caucasian Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:21\nmsgid \"Moskva\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:22\nmsgid \"Saint-Peterburg\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:23\nmsgid \"Moskovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:24\nmsgid \"Adygeya, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:25\nmsgid \"Bashkortostan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:26\nmsgid \"Buryatia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:27\nmsgid \"Altay, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:28\nmsgid \"Dagestan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:29\nmsgid \"Ingushskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:30\nmsgid \"Kabardino-Balkarskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:31\nmsgid \"Kalmykia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:32\nmsgid \"Karachaevo-Cherkesskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:33\nmsgid \"Karelia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:34\nmsgid \"Komi, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:35\nmsgid \"Mariy Ehl, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:36\nmsgid \"Mordovia, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:37\nmsgid \"Sakha, Respublika (Yakutiya)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:38\nmsgid \"Severnaya Osetia, Respublika (Alania)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:39\nmsgid \"Tatarstan, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:40\nmsgid \"Tyva, Respublika (Tuva)\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:41\nmsgid \"Udmurtskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:42\nmsgid \"Khakassiya, Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:43\nmsgid \"Chechenskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:44\nmsgid \"Chuvashskaya Respublika\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:45\nmsgid \"Altayskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:46\nmsgid \"Zabaykalskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:47\nmsgid \"Kamchatskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:48\nmsgid \"Krasnodarskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:49\nmsgid \"Krasnoyarskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:50\nmsgid \"Permskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:51\nmsgid \"Primorskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:52\nmsgid \"Stavropol'siyy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:53\nmsgid \"Khabarovskiy Kray\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:54\nmsgid \"Amurskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:55\nmsgid \"Arkhangel'skaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:56\nmsgid \"Astrakhanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:57\nmsgid \"Belgorodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:58\nmsgid \"Bryanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:59\nmsgid \"Vladimirskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:60\nmsgid \"Volgogradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:61\nmsgid \"Vologodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:62\nmsgid \"Voronezhskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:63\nmsgid \"Ivanovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:64\nmsgid \"Irkutskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:65\nmsgid \"Kaliningradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:66\nmsgid \"Kaluzhskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:67\nmsgid \"Kemerovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:68\nmsgid \"Kirovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:69\nmsgid \"Kostromskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:70\nmsgid \"Kurganskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:71\nmsgid \"Kurskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:72\nmsgid \"Leningradskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:73\nmsgid \"Lipeckaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:74\nmsgid \"Magadanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:75\nmsgid \"Murmanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:76\nmsgid \"Nizhegorodskaja oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:77\nmsgid \"Novgorodskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:78\nmsgid \"Novosibirskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:79\nmsgid \"Omskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:80\nmsgid \"Orenburgskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:81\nmsgid \"Orlovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:82\nmsgid \"Penzenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:83\nmsgid \"Pskovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:84\nmsgid \"Rostovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:85\nmsgid \"Rjazanskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:86\nmsgid \"Samarskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:87\nmsgid \"Saratovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:88\nmsgid \"Sakhalinskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:89\nmsgid \"Sverdlovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:90\nmsgid \"Smolenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:91\nmsgid \"Tambovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:92\nmsgid \"Tverskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:93\nmsgid \"Tomskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:94\nmsgid \"Tul'skaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:95\nmsgid \"Tyumenskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:96\nmsgid \"Ul'ianovskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:97\nmsgid \"Chelyabinskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:98\nmsgid \"Yaroslavskaya oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:99\nmsgid \"Evreyskaya avtonomnaja oblast'\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:100\nmsgid \"Neneckiy autonomnyy okrug\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:101\nmsgid \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:102\nmsgid \"Chukotskiy avtonomnyy okrug\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:103\nmsgid \"Yamalo-Neneckiy avtonomnyy okrug\"\nmsgstr \"\"\n\n#: se/forms.py:54\nmsgid \"Enter a valid Swedish organisation number.\"\nmsgstr \"输入一个有效的瑞典机构编号。\"\n\n#: se/forms.py:111\nmsgid \"Enter a valid Swedish personal identity number.\"\nmsgstr \"输入一个瑞典个人身份证号码。\"\n\n#: se/forms.py:112\nmsgid \"Co-ordination numbers are not allowed.\"\nmsgstr \"统筹号码是不允许的。\"\n\n#: se/forms.py:154\nmsgid \"Enter a Swedish postal code in the format XXXXX.\"\nmsgstr \"以 XXXXX 格式输入一个瑞典邮政编码。\"\n\n#: se/se_counties.py:16\nmsgid \"Stockholm\"\nmsgstr \"斯德哥尔摩\"\n\n#: se/se_counties.py:17\nmsgid \"Västerbotten\"\nmsgstr \"\"\n\n#: se/se_counties.py:18\nmsgid \"Norrbotten\"\nmsgstr \"\"\n\n#: se/se_counties.py:19\nmsgid \"Uppsala\"\nmsgstr \"乌普萨拉\"\n\n#: se/se_counties.py:20\nmsgid \"Södermanland\"\nmsgstr \"\"\n\n#: se/se_counties.py:21\nmsgid \"Östergötland\"\nmsgstr \"\"\n\n#: se/se_counties.py:22\nmsgid \"Jönköping\"\nmsgstr \"\"\n\n#: se/se_counties.py:23\nmsgid \"Kronoberg\"\nmsgstr \"\"\n\n#: se/se_counties.py:24\nmsgid \"Kalmar\"\nmsgstr \"\"\n\n#: se/se_counties.py:25\nmsgid \"Gotland\"\nmsgstr \"\"\n\n#: se/se_counties.py:26\nmsgid \"Blekinge\"\nmsgstr \"\"\n\n#: se/se_counties.py:27\nmsgid \"Skåne\"\nmsgstr \"\"\n\n#: se/se_counties.py:28\nmsgid \"Halland\"\nmsgstr \"\"\n\n#: se/se_counties.py:29\nmsgid \"Västra Götaland\"\nmsgstr \"\"\n\n#: se/se_counties.py:30\nmsgid \"Värmland\"\nmsgstr \"\"\n\n#: se/se_counties.py:31\nmsgid \"Örebro\"\nmsgstr \"\"\n\n#: se/se_counties.py:32\nmsgid \"Västmanland\"\nmsgstr \"\"\n\n#: se/se_counties.py:33\nmsgid \"Dalarna\"\nmsgstr \"\"\n\n#: se/se_counties.py:34\nmsgid \"Gävleborg\"\nmsgstr \"\"\n\n#: se/se_counties.py:35\nmsgid \"Västernorrland\"\nmsgstr \"\"\n\n#: se/se_counties.py:36\nmsgid \"Jämtland\"\nmsgstr \"\"\n\n#: si/forms.py:25\nmsgid \"The first 7 digits of the EMSO must represent a valid past date.\"\nmsgstr \"\"\n\n#: si/forms.py:26\nmsgid \"The EMSO is not valid.\"\nmsgstr \"\"\n\n#: si/forms.py:86\nmsgid \"Enter a valid tax number in form SIXXXXXXXX\"\nmsgstr \"\"\n\n#: si/forms.py:151\nmsgid \"Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.\"\nmsgstr \"\"\n\n#: sk/sk_districts.py:8\nmsgid \"Banska Bystrica\"\nmsgstr \"班斯卡-比斯特里察\"\n\n#: sk/sk_districts.py:9\nmsgid \"Banska Stiavnica\"\nmsgstr \"Banska Stiavnica\"\n\n#: sk/sk_districts.py:10\nmsgid \"Bardejov\"\nmsgstr \"Bardejov\"\n\n#: sk/sk_districts.py:11\nmsgid \"Banovce nad Bebravou\"\nmsgstr \"Banovce nad Bebravou\"\n\n#: sk/sk_districts.py:12\nmsgid \"Brezno\"\nmsgstr \"布雷兹诺\"\n\n#: sk/sk_districts.py:13\nmsgid \"Bratislava I\"\nmsgstr \"Bratislava I\"\n\n#: sk/sk_districts.py:14\nmsgid \"Bratislava II\"\nmsgstr \"Bratislava II\"\n\n#: sk/sk_districts.py:15\nmsgid \"Bratislava III\"\nmsgstr \"Bratislava III\"\n\n#: sk/sk_districts.py:16\nmsgid \"Bratislava IV\"\nmsgstr \"Bratislava IV\"\n\n#: sk/sk_districts.py:17\nmsgid \"Bratislava V\"\nmsgstr \"Bratislava V\"\n\n#: sk/sk_districts.py:18\nmsgid \"Bytca\"\nmsgstr \"比特恰\"\n\n#: sk/sk_districts.py:19\nmsgid \"Cadca\"\nmsgstr \"Cadca\"\n\n#: sk/sk_districts.py:20\nmsgid \"Detva\"\nmsgstr \"代特瓦\"\n\n#: sk/sk_districts.py:21\nmsgid \"Dolny Kubin\"\nmsgstr \"Dolny Kubin\"\n\n#: sk/sk_districts.py:22\nmsgid \"Dunajska Streda\"\nmsgstr \"Dunajska Streda\"\n\n#: sk/sk_districts.py:23\nmsgid \"Galanta\"\nmsgstr \"加兰塔\"\n\n#: sk/sk_districts.py:24\nmsgid \"Gelnica\"\nmsgstr \"盖尔尼察\"\n\n#: sk/sk_districts.py:25\nmsgid \"Hlohovec\"\nmsgstr \"赫洛霍韦茨\"\n\n#: sk/sk_districts.py:26\nmsgid \"Humenne\"\nmsgstr \"Humenne\"\n\n#: sk/sk_districts.py:27\nmsgid \"Ilava\"\nmsgstr \"伊拉瓦\"\n\n#: sk/sk_districts.py:28\nmsgid \"Kezmarok\"\nmsgstr \"Kezmarok\"\n\n#: sk/sk_districts.py:29\nmsgid \"Komarno\"\nmsgstr \"Komarno\"\n\n#: sk/sk_districts.py:30\nmsgid \"Kosice I\"\nmsgstr \"Kosice I\"\n\n#: sk/sk_districts.py:31\nmsgid \"Kosice II\"\nmsgstr \"Kosice II\"\n\n#: sk/sk_districts.py:32\nmsgid \"Kosice III\"\nmsgstr \"Kosice III\"\n\n#: sk/sk_districts.py:33\nmsgid \"Kosice IV\"\nmsgstr \"Kosice IV\"\n\n#: sk/sk_districts.py:34\nmsgid \"Kosice - okolie\"\nmsgstr \"Kosice - okolie\"\n\n#: sk/sk_districts.py:35\nmsgid \"Krupina\"\nmsgstr \"克鲁皮纳\"\n\n#: sk/sk_districts.py:36\nmsgid \"Kysucke Nove Mesto\"\nmsgstr \"Kysucke Nove Mesto\"\n\n#: sk/sk_districts.py:37\nmsgid \"Levice\"\nmsgstr \"Levice\"\n\n#: sk/sk_districts.py:38\nmsgid \"Levoca\"\nmsgstr \"勒沃卡\"\n\n#: sk/sk_districts.py:39\nmsgid \"Liptovsky Mikulas\"\nmsgstr \"Liptovsky Mikulas\"\n\n#: sk/sk_districts.py:40\nmsgid \"Lucenec\"\nmsgstr \"Lucenec\"\n\n#: sk/sk_districts.py:41\nmsgid \"Malacky\"\nmsgstr \"Malacky\"\n\n#: sk/sk_districts.py:42\nmsgid \"Martin\"\nmsgstr \"Martin\"\n\n#: sk/sk_districts.py:43\nmsgid \"Medzilaborce\"\nmsgstr \"梅济拉博尔采\"\n\n#: sk/sk_districts.py:44\nmsgid \"Michalovce\"\nmsgstr \"Michalovce\"\n\n#: sk/sk_districts.py:45\nmsgid \"Myjava\"\nmsgstr \"Myjava\"\n\n#: sk/sk_districts.py:46\nmsgid \"Namestovo\"\nmsgstr \"纳梅斯托沃\"\n\n#: sk/sk_districts.py:47\nmsgid \"Nitra\"\nmsgstr \"尼特拉\"\n\n#: sk/sk_districts.py:48\nmsgid \"Nove Mesto nad Vahom\"\nmsgstr \"Nove Mesto nad Vahom\"\n\n#: sk/sk_districts.py:49\nmsgid \"Nove Zamky\"\nmsgstr \"Nove Zamky\"\n\n#: sk/sk_districts.py:50\nmsgid \"Partizanske\"\nmsgstr \"帕帝查斯葛\"\n\n#: sk/sk_districts.py:51\nmsgid \"Pezinok\"\nmsgstr \"佩兹那克市\"\n\n#: sk/sk_districts.py:52\nmsgid \"Piestany\"\nmsgstr \"Piestany\"\n\n#: sk/sk_districts.py:53\nmsgid \"Poltar\"\nmsgstr \"波尔塔尔\"\n\n#: sk/sk_districts.py:54\nmsgid \"Poprad\"\nmsgstr \"Poprad\"\n\n#: sk/sk_districts.py:55\nmsgid \"Povazska Bystrica\"\nmsgstr \"Povazska Bystrica\"\n\n#: sk/sk_districts.py:56\nmsgid \"Presov\"\nmsgstr \"普雷绍夫\"\n\n#: sk/sk_districts.py:57\nmsgid \"Prievidza\"\nmsgstr \"Prievidza\"\n\n#: sk/sk_districts.py:58\nmsgid \"Puchov\"\nmsgstr \"Puchov\"\n\n#: sk/sk_districts.py:59\nmsgid \"Revuca\"\nmsgstr \"Revuca\"\n\n#: sk/sk_districts.py:60\nmsgid \"Rimavska Sobota\"\nmsgstr \"Rimavska Sobota\"\n\n#: sk/sk_districts.py:61\nmsgid \"Roznava\"\nmsgstr \"罗日尼亚瓦\"\n\n#: sk/sk_districts.py:62\nmsgid \"Ruzomberok\"\nmsgstr \"Ruzomberok\"\n\n#: sk/sk_districts.py:63\nmsgid \"Sabinov\"\nmsgstr \"Sabinov\"\n\n#: sk/sk_districts.py:64\nmsgid \"Senec\"\nmsgstr \"塞内茨\"\n\n#: sk/sk_districts.py:65\nmsgid \"Senica\"\nmsgstr \"Senica\"\n\n#: sk/sk_districts.py:66\nmsgid \"Skalica\"\nmsgstr \"Skalica\"\n\n#: sk/sk_districts.py:67\nmsgid \"Snina\"\nmsgstr \"Snina\"\n\n#: sk/sk_districts.py:68\nmsgid \"Sobrance\"\nmsgstr \"索布兰采\"\n\n#: sk/sk_districts.py:69\nmsgid \"Spisska Nova Ves\"\nmsgstr \"Spisska Nova Ves\"\n\n#: sk/sk_districts.py:70\nmsgid \"Stara Lubovna\"\nmsgstr \"Stara Lubovna\"\n\n#: sk/sk_districts.py:71\nmsgid \"Stropkov\"\nmsgstr \"Stropkov\"\n\n#: sk/sk_districts.py:72\nmsgid \"Svidnik\"\nmsgstr \"斯维德尼克\"\n\n#: sk/sk_districts.py:73\nmsgid \"Sala\"\nmsgstr \"撒拉族\"\n\n#: sk/sk_districts.py:74\nmsgid \"Topolcany\"\nmsgstr \"Topolcany\"\n\n#: sk/sk_districts.py:75\nmsgid \"Trebisov\"\nmsgstr \"特雷比绍夫\"\n\n#: sk/sk_districts.py:76\nmsgid \"Trencin\"\nmsgstr \"特伦钦\"\n\n#: sk/sk_districts.py:77\nmsgid \"Trnava\"\nmsgstr \"Trnava\"\n\n#: sk/sk_districts.py:78\nmsgid \"Turcianske Teplice\"\nmsgstr \"Turcianske Teplice\"\n\n#: sk/sk_districts.py:79\nmsgid \"Tvrdosin\"\nmsgstr \"Tvrdosin\"\n\n#: sk/sk_districts.py:80\nmsgid \"Velky Krtis\"\nmsgstr \"Velky Krtis\"\n\n#: sk/sk_districts.py:81\nmsgid \"Vranov nad Toplou\"\nmsgstr \"Vranov nad Toplou\"\n\n#: sk/sk_districts.py:82\nmsgid \"Zlate Moravce\"\nmsgstr \"兹拉特莫拉夫采\"\n\n#: sk/sk_districts.py:83\nmsgid \"Zvolen\"\nmsgstr \"兹沃伦\"\n\n#: sk/sk_districts.py:84\nmsgid \"Zarnovica\"\nmsgstr \"扎尔诺维察\"\n\n#: sk/sk_districts.py:85\nmsgid \"Ziar nad Hronom\"\nmsgstr \"Ziar nad Hronom\"\n\n#: sk/sk_districts.py:86\nmsgid \"Zilina\"\nmsgstr \"日利纳\"\n\n#: sk/sk_regions.py:8\nmsgid \"Banska Bystrica region\"\nmsgstr \"班斯卡-比斯特里察地区\"\n\n#: sk/sk_regions.py:9\nmsgid \"Bratislava region\"\nmsgstr \"布拉迪斯拉发地区\"\n\n#: sk/sk_regions.py:10\nmsgid \"Kosice region\"\nmsgstr \"科希策地区\"\n\n#: sk/sk_regions.py:11\nmsgid \"Nitra region\"\nmsgstr \"尼特拉地区\"\n\n#: sk/sk_regions.py:12\nmsgid \"Presov region\"\nmsgstr \"普雷绍夫地区\"\n\n#: sk/sk_regions.py:13\nmsgid \"Trencin region\"\nmsgstr \"特伦钦地区\"\n\n#: sk/sk_regions.py:14\nmsgid \"Trnava region\"\nmsgstr \"特尔纳瓦地区\"\n\n#: sk/sk_regions.py:15\nmsgid \"Zilina region\"\nmsgstr \"日利纳地区\"\n\n#: tr/forms.py:21\nmsgid \"Enter a postal code in the format XXXXX.\"\nmsgstr \"以 XXXXX 的格式输入一个邮政编码。\"\n\n#: tr/forms.py:42\nmsgid \"Phone numbers must be in 0XXX XXX XXXX format.\"\nmsgstr \"电话号码的格式必须是 0XXX XXX XXXX 。\"\n\n#: tr/forms.py:69\nmsgid \"Enter a valid Turkish Identification number.\"\nmsgstr \"输入一个有效的土耳其身份证号码。\"\n\n#: tr/forms.py:70\nmsgid \"Turkish Identification number must be 11 digits.\"\nmsgstr \"土耳其身份证号码必须为11位数字。\"\n\n#: us/forms.py:21\nmsgid \"Enter a zip code in the format XXXXX or XXXXX-XXXX.\"\nmsgstr \"以 XXXXX 或 XXXXX-XXX 的格式输入一个邮政编码。\"\n\n#: us/forms.py:59\nmsgid \"Enter a valid U.S. Social Security number in XXX-XX-XXXX format.\"\nmsgstr \"以 XXX-XX-XXXX 的格式输入一个有效的美国社会保障号码。\"\n\n#: us/forms.py:92\nmsgid \"Enter a U.S. state or territory.\"\nmsgstr \"输入一个美国州或领地名称。\"\n\n#: us/models.py:8\nmsgid \"U.S. state (two uppercase letters)\"\nmsgstr \"美国州名(两个大写字母)\"\n\n#: us/models.py:17\nmsgid \"U.S. postal code (two uppercase letters)\"\nmsgstr \"美国邮政编码（两个小写字母）\"\n\n#: us/models.py:26\nmsgid \"Phone number\"\nmsgstr \"电话号码\"\n\n#: uy/forms.py:29\nmsgid \"Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.\"\nmsgstr \"以 X.XXX.XXX-X,XXXXXXX-X 或 XXXXXXXX 格式输入一个有效的 CI 号码\"\n\n#: uy/forms.py:31\nmsgid \"Enter a valid CI number.\"\nmsgstr \"输入一个有效的 CI 号码\"\n\n#: za/forms.py:22\nmsgid \"Enter a valid South African ID number\"\nmsgstr \"请输入一个有效的南非身份证号码。\"\n\n#: za/forms.py:56\nmsgid \"Enter a valid South African postal code\"\nmsgstr \"输入一个有效的南非邮政编码\"\n\n#: za/za_provinces.py:4\nmsgid \"Eastern Cape\"\nmsgstr \"东开普省\"\n\n#: za/za_provinces.py:5\nmsgid \"Free State\"\nmsgstr \"Free State\"\n\n#: za/za_provinces.py:6\nmsgid \"Gauteng\"\nmsgstr \"豪登省\"\n\n#: za/za_provinces.py:7\nmsgid \"KwaZulu-Natal\"\nmsgstr \"夸祖卢-纳塔尔\"\n\n#: za/za_provinces.py:8\nmsgid \"Limpopo\"\nmsgstr \"林波波河\"\n\n#: za/za_provinces.py:9\nmsgid \"Mpumalanga\"\nmsgstr \"姆普马兰加省\"\n\n#: za/za_provinces.py:10\nmsgid \"Northern Cape\"\nmsgstr \"北开普省\"\n\n#: za/za_provinces.py:11\nmsgid \"North West\"\nmsgstr \"西北\"\n\n#: za/za_provinces.py:12\nmsgid \"Western Cape\"\nmsgstr \"西开普\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/locale/zh_TW/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# ming hsien tzang <tzangms@gmail.com>, 2011.\n# quantum9876 <quantum9876@gmail.com>, 2011.\n# tcc <tcchou@tcchou.org>, 2011.\n#   <yyc1217@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-11-27 01:24+0000\\n\"\n\"Last-Translator: yyc1217 <yyc1217@gmail.com>\\n\"\n\"Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/django/\"\n\"language/zh_TW/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: zh_TW\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: ar/forms.py:30\nmsgid \"Enter a postal code in the format NNNN or ANNNNAAA.\"\nmsgstr \"以 NNNN 或 ANNNNAAA的格式輸入郵遞區號。\"\n\n#: ar/forms.py:52 br/forms.py:95 br/forms.py:134 pe/forms.py:27 pe/forms.py:55\nmsgid \"This field requires only numbers.\"\nmsgstr \"此欄位只允許輸入數字\"\n\n#: ar/forms.py:53\nmsgid \"This field requires 7 or 8 digits.\"\nmsgstr \"此欄位需要 7~8 位數\"\n\n#: ar/forms.py:82\nmsgid \"Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.\"\nmsgstr \"以 XX-XXXXXXXX-X 或 XXXXXXXXXXXX 的格式輸入CUIT 。\"\n\n#: ar/forms.py:83\nmsgid \"Invalid CUIT.\"\nmsgstr \"無效的 CUIT\"\n\n#: ar/forms.py:84\nmsgid \"Invalid legal type. Type must be 27, 20, 23 or 30.\"\nmsgstr \"無效的格式. 格式必須為27, 20, 23 或 30.\"\n\n#: at/at_states.py:5\nmsgid \"Burgenland\"\nmsgstr \"布爾根蘭\"\n\n#: at/at_states.py:6\nmsgid \"Carinthia\"\nmsgstr \"凱恩藤州\"\n\n#: at/at_states.py:7\nmsgid \"Lower Austria\"\nmsgstr \"下奧地利州\"\n\n#: at/at_states.py:8\nmsgid \"Upper Austria\"\nmsgstr \"上奧地利州\"\n\n#: at/at_states.py:9\nmsgid \"Salzburg\"\nmsgstr \"薩爾茨堡\"\n\n#: at/at_states.py:10\nmsgid \"Styria\"\nmsgstr \"施蒂利亞州\"\n\n#: at/at_states.py:11\nmsgid \"Tyrol\"\nmsgstr \"蒂羅爾州\"\n\n#: at/at_states.py:12\nmsgid \"Vorarlberg\"\nmsgstr \"福拉爾貝格州\"\n\n#: at/at_states.py:13\nmsgid \"Vienna\"\nmsgstr \"維也納州\"\n\n#: at/forms.py:22 ch/forms.py:22 no/forms.py:19\nmsgid \"Enter a zip code in the format XXXX.\"\nmsgstr \"用 XXXX 的格式輸入郵遞區號。\"\n\n#: at/forms.py:50\nmsgid \"Enter a valid Austrian Social Security Number in XXXX XXXXXX format.\"\nmsgstr \"以  XXXX XXXXXX 的格式輸入奧地利社會安全號碼。\"\n\n#: au/forms.py:26\nmsgid \"Enter a 4 digit postcode.\"\nmsgstr \"輸入一個4碼的郵遞區號\"\n\n#: au/models.py:9\nmsgid \"Australian State\"\nmsgstr \"澳洲\"\n\n#: au/models.py:19\nmsgid \"Australian Postcode\"\nmsgstr \"澳洲郵遞區號\"\n\n#: au/models.py:33\nmsgid \"Australian Phone number\"\nmsgstr \"澳洲電話號碼\"\n\n#: be/be_provinces.py:5\nmsgid \"Antwerp\"\nmsgstr \"安特衛普\"\n\n#: be/be_provinces.py:6\nmsgid \"Brussels\"\nmsgstr \"布魯塞爾\"\n\n#: be/be_provinces.py:7\nmsgid \"East Flanders\"\nmsgstr \"東佛蘭德省\"\n\n#: be/be_provinces.py:8\nmsgid \"Flemish Brabant\"\nmsgstr \"法蘭德斯-布拉班特省\"\n\n#: be/be_provinces.py:9\nmsgid \"Hainaut\"\nmsgstr \"埃諾省\"\n\n#: be/be_provinces.py:10\nmsgid \"Liege\"\nmsgstr \"烈日省\"\n\n#: be/be_provinces.py:11 nl/nl_provinces.py:9\nmsgid \"Limburg\"\nmsgstr \"林堡\"\n\n#: be/be_provinces.py:12\nmsgid \"Luxembourg\"\nmsgstr \"盧森堡\"\n\n#: be/be_provinces.py:13\nmsgid \"Namur\"\nmsgstr \"那慕爾\"\n\n#: be/be_provinces.py:14\nmsgid \"Walloon Brabant\"\nmsgstr \"布拉班特-瓦隆\"\n\n#: be/be_provinces.py:15\nmsgid \"West Flanders\"\nmsgstr \"西佛蘭德省\"\n\n#: be/be_regions.py:5\nmsgid \"Brussels Capital Region\"\nmsgstr \"布魯塞爾\"\n\n#: be/be_regions.py:6\nmsgid \"Flemish Region\"\nmsgstr \"法蘭德斯區\"\n\n#: be/be_regions.py:7\nmsgid \"Wallonia\"\nmsgstr \"瓦隆\"\n\n#: be/forms.py:25\nmsgid \"Enter a valid postal code in the range and format 1XXX - 9XXX.\"\nmsgstr \"以 1XXX - 9XXX 為範圍、格式輸入郵遞區號。\"\n\n#: be/forms.py:48\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 0x xxx xx xx, 0xx xx xx xx, \"\n\"04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, 04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.\"\n\"xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx or 04xxxxxxxx.\"\nmsgstr \"\"\n\"以 0x xxx xx xx, 0xx xx xx xx, 04xx xx xx xx, 0x/xxx.xx.xx, 0xx/xx.xx.xx, \"\n\"04xx/xx.xx.xx, 0x.xxx.xx.xx, 0xx.xx.xx.xx, 04xx.xx.xx.xx, 0xxxxxxxx 或 \"\n\"04xxxxxxxx 其中之一為格式，輸入電話號碼。\"\n\n#: br/forms.py:22\nmsgid \"Enter a zip code in the format XXXXX-XXX.\"\nmsgstr \"用 XXXXX-XXX 的格式輸入郵遞區號。\"\n\n#: br/forms.py:31\nmsgid \"Phone numbers must be in XX-XXXX-XXXX format.\"\nmsgstr \"電話號碼必須是 XX-XXXX-XXXX 格式。\"\n\n#: br/forms.py:58\nmsgid \"\"\n\"Select a valid brazilian state. That state is not one of the available \"\n\"states.\"\nmsgstr \"您輸入的不是正確的州。請選擇一個位於巴西的管轄州。\"\n\n#: br/forms.py:93\nmsgid \"Invalid CPF number.\"\nmsgstr \"無效的 CPF 號碼。\"\n\n#: br/forms.py:94\nmsgid \"This field requires at most 11 digits or 14 characters.\"\nmsgstr \"此欄必須輸入 11 位數的數字，或 14 個字母。\"\n\n#: br/forms.py:133\nmsgid \"Invalid CNPJ number.\"\nmsgstr \"無效的 CNPJ 號碼。\"\n\n#: br/forms.py:135\nmsgid \"This field requires at least 14 digits\"\nmsgstr \"此欄必須至少有 14 位數。\"\n\n#: ca/forms.py:29\nmsgid \"Enter a postal code in the format XXX XXX.\"\nmsgstr \"以 XXX XXX 為格式輸入郵遞區號。\"\n\n#: ca/forms.py:47 us/forms.py:30\nmsgid \"Phone numbers must be in XXX-XXX-XXXX format.\"\nmsgstr \"電話號碼必須是 XX-XXXX-XXXX 格式。\"\n\n#: ca/forms.py:69\nmsgid \"Enter a Canadian province or territory.\"\nmsgstr \"\"\n\n#: ca/forms.py:110\nmsgid \"Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.\"\nmsgstr \"以 XXX-XXX-XXX 為格式輸入加拿大社會保險號碼。\"\n\n#: ch/ch_states.py:5\nmsgid \"Aargau\"\nmsgstr \"阿爾高州\"\n\n#: ch/ch_states.py:6\nmsgid \"Appenzell Innerrhoden\"\nmsgstr \"內亞本塞州\"\n\n#: ch/ch_states.py:7\nmsgid \"Appenzell Ausserrhoden\"\nmsgstr \"外阿彭策爾\"\n\n#: ch/ch_states.py:8\nmsgid \"Basel-Stadt\"\nmsgstr \"巴澤爾城市\"\n\n#: ch/ch_states.py:9\nmsgid \"Basel-Land\"\nmsgstr \"巴澤爾鄉村\"\n\n#: ch/ch_states.py:10\nmsgid \"Berne\"\nmsgstr \"伯恩\"\n\n#: ch/ch_states.py:11\nmsgid \"Fribourg\"\nmsgstr \"弗里堡\"\n\n#: ch/ch_states.py:12\nmsgid \"Geneva\"\nmsgstr \"日內瓦\"\n\n#: ch/ch_states.py:13\nmsgid \"Glarus\"\nmsgstr \"格拉魯斯\"\n\n#: ch/ch_states.py:14\nmsgid \"Graubuenden\"\nmsgstr \"格勞賓登\"\n\n#: ch/ch_states.py:15\nmsgid \"Jura\"\nmsgstr \"汝拉\"\n\n#: ch/ch_states.py:16\nmsgid \"Lucerne\"\nmsgstr \"琉森\"\n\n#: ch/ch_states.py:17\nmsgid \"Neuchatel\"\nmsgstr \"納沙泰爾\"\n\n#: ch/ch_states.py:18\nmsgid \"Nidwalden\"\nmsgstr \"下瓦爾登\"\n\n#: ch/ch_states.py:19\nmsgid \"Obwalden\"\nmsgstr \"上瓦爾登\"\n\n#: ch/ch_states.py:20\nmsgid \"Schaffhausen\"\nmsgstr \"沙夫豪森\"\n\n#: ch/ch_states.py:21\nmsgid \"Schwyz\"\nmsgstr \"施維茨\"\n\n#: ch/ch_states.py:22\nmsgid \"Solothurn\"\nmsgstr \"索洛圖恩\"\n\n#: ch/ch_states.py:23\nmsgid \"St. Gallen\"\nmsgstr \"聖加侖\"\n\n#: ch/ch_states.py:24\nmsgid \"Thurgau\"\nmsgstr \"圖爾高州\"\n\n#: ch/ch_states.py:25\nmsgid \"Ticino\"\nmsgstr \"提契諾\"\n\n#: ch/ch_states.py:26\nmsgid \"Uri\"\nmsgstr \"烏裡州\"\n\n#: ch/ch_states.py:27\nmsgid \"Valais\"\nmsgstr \"瓦萊\"\n\n#: ch/ch_states.py:28\nmsgid \"Vaud\"\nmsgstr \"沃\"\n\n#: ch/ch_states.py:29\nmsgid \"Zug\"\nmsgstr \"楚格\"\n\n#: ch/ch_states.py:30\nmsgid \"Zurich\"\nmsgstr \"蘇黎世\"\n\n#: ch/forms.py:37\nmsgid \"Phone numbers must be in 0XX XXX XX XX format.\"\nmsgstr \"電話號碼必須為格式0XX XXX XX XX.\"\n\n#: ch/forms.py:68\nmsgid \"\"\n\"Enter a valid Swiss identity or passport card number in X1234567<0 or \"\n\"1234567890 format.\"\nmsgstr \"\"\n\"以格式為 X1234567<0 或 1234567890 輸入一個有效的瑞士身份證號碼或者或是護照號\"\n\"碼。\"\n\n#: cl/forms.py:32\nmsgid \"Enter a valid Chilean RUT.\"\nmsgstr \"請輸入智利 RUT。\"\n\n#: cl/forms.py:33\nmsgid \"Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.\"\nmsgstr \"以 XX.XXX.XXX-x 為格式輸入智利RUT。\"\n\n#: cl/forms.py:34\nmsgid \"The Chilean RUT is not valid.\"\nmsgstr \"輸入的智利 RUT 無效。\"\n\n#: cn/forms.py:84\nmsgid \"Enter a post code in the format XXXXXX.\"\nmsgstr \"輸入一個XXXXXX格式的郵遞區號\"\n\n#: cn/forms.py:105\nmsgid \"ID Card Number consists of 15 or 18 digits.\"\nmsgstr \"包含15或18碼的ID卡號\"\n\n#: cn/forms.py:106\nmsgid \"Invalid ID Card Number: Wrong checksum\"\nmsgstr \"驗證ID卡號: 錯誤的校驗碼\"\n\n#: cn/forms.py:107\nmsgid \"Invalid ID Card Number: Wrong birthdate\"\nmsgstr \"驗證ID卡號: 錯誤的出生日\"\n\n#: cn/forms.py:108\nmsgid \"Invalid ID Card Number: Wrong location code\"\nmsgstr \"驗證ID卡號: 錯誤的區域碼\"\n\n#: cn/forms.py:193\nmsgid \"Enter a valid phone number.\"\nmsgstr \"輸入有效的電話號碼\"\n\n#: cn/forms.py:210\nmsgid \"Enter a valid cell number.\"\nmsgstr \"輸入有效的手機號碼\"\n\n#: cz/cz_regions.py:8\nmsgid \"Prague\"\nmsgstr \"布拉格\"\n\n#: cz/cz_regions.py:9\nmsgid \"Central Bohemian Region\"\nmsgstr \"中波希米亞州\"\n\n#: cz/cz_regions.py:10\nmsgid \"South Bohemian Region\"\nmsgstr \"南波希米亞州\"\n\n#: cz/cz_regions.py:11\nmsgid \"Pilsen Region\"\nmsgstr \"比爾森州\"\n\n#: cz/cz_regions.py:12\nmsgid \"Carlsbad Region\"\nmsgstr \"卡羅維發利州\"\n\n#: cz/cz_regions.py:13\nmsgid \"Usti Region\"\nmsgstr \"烏斯季州\"\n\n#: cz/cz_regions.py:14\nmsgid \"Liberec Region\"\nmsgstr \"利貝雷茨州\"\n\n#: cz/cz_regions.py:15\nmsgid \"Hradec Region\"\nmsgstr \"赫拉德茨-克拉洛韋州\"\n\n#: cz/cz_regions.py:16\nmsgid \"Pardubice Region\"\nmsgstr \"帕爾杜比采州\"\n\n#: cz/cz_regions.py:17\nmsgid \"Vysocina Region\"\nmsgstr \"維索基納州\"\n\n#: cz/cz_regions.py:18\nmsgid \"South Moravian Region\"\nmsgstr \"南摩拉維亞州\"\n\n#: cz/cz_regions.py:19\nmsgid \"Olomouc Region\"\nmsgstr \"奧洛穆茨州\"\n\n#: cz/cz_regions.py:20\nmsgid \"Zlin Region\"\nmsgstr \"茲林州\"\n\n#: cz/cz_regions.py:21\nmsgid \"Moravian-Silesian Region\"\nmsgstr \"摩拉維亞-西里西亞州\"\n\n#: cz/forms.py:32 sk/forms.py:33\nmsgid \"Enter a postal code in the format XXXXX or XXX XX.\"\nmsgstr \"以 XXXXX 或 XXX XX 的格式輸入郵遞區號。\"\n\n#: cz/forms.py:52\nmsgid \"Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.\"\nmsgstr \"以 XXXXXX/XXXX 或 XXXXXXXXXX 輸入出生日期。\"\n\n#: cz/forms.py:53\nmsgid \"Enter a valid birth number.\"\nmsgstr \"請輸入正確的出生日期。\"\n\n#: cz/forms.py:102\nmsgid \"Enter a valid IC number.\"\nmsgstr \"請輸入正確的 IC 號碼。\"\n\n#: de/de_states.py:5\nmsgid \"Baden-Wuerttemberg\"\nmsgstr \"巴登符騰堡\"\n\n#: de/de_states.py:6\nmsgid \"Bavaria\"\nmsgstr \"巴伐利亞\"\n\n#: de/de_states.py:7\nmsgid \"Berlin\"\nmsgstr \"柏林\"\n\n#: de/de_states.py:8\nmsgid \"Brandenburg\"\nmsgstr \"勃蘭登堡\"\n\n#: de/de_states.py:9\nmsgid \"Bremen\"\nmsgstr \"布萊梅\"\n\n#: de/de_states.py:10\nmsgid \"Hamburg\"\nmsgstr \"漢堡\"\n\n#: de/de_states.py:11\nmsgid \"Hessen\"\nmsgstr \"黑森\"\n\n#: de/de_states.py:12\nmsgid \"Mecklenburg-Western Pomerania\"\nmsgstr \"梅克倫堡-前波莫瑞\"\n\n#: de/de_states.py:13\nmsgid \"Lower Saxony\"\nmsgstr \"下薩克森\"\n\n#: de/de_states.py:14\nmsgid \"North Rhine-Westphalia\"\nmsgstr \"北萊茵-威斯特法倫\"\n\n#: de/de_states.py:15\nmsgid \"Rhineland-Palatinate\"\nmsgstr \"萊茵蘭-普法爾茨\"\n\n#: de/de_states.py:16\nmsgid \"Saarland\"\nmsgstr \"薩爾蘭\"\n\n#: de/de_states.py:17\nmsgid \"Saxony\"\nmsgstr \"薩克森\"\n\n#: de/de_states.py:18\nmsgid \"Saxony-Anhalt\"\nmsgstr \"薩克森-安哈爾特\"\n\n#: de/de_states.py:19\nmsgid \"Schleswig-Holstein\"\nmsgstr \"石勒蘇益格-荷爾斯泰因\"\n\n#: de/de_states.py:20\nmsgid \"Thuringia\"\nmsgstr \"圖林根\"\n\n#: de/forms.py:20 fi/forms.py:18 fr/forms.py:20\nmsgid \"Enter a zip code in the format XXXXX.\"\nmsgstr \"用 XXXXX 的格式輸入郵遞區號。\"\n\n#: de/forms.py:46\nmsgid \"\"\n\"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X \"\n\"format.\"\nmsgstr \"以 XXXXXXXXXXX-XXXXXXX-XXXXXXX-X 的格式輸入德國身份證字號。\"\n\n#: es/es_provinces.py:5\nmsgid \"Araba\"\nmsgstr \"\"\n\n#: es/es_provinces.py:6\nmsgid \"Albacete\"\nmsgstr \"阿爾瓦塞特\"\n\n#: es/es_provinces.py:7\nmsgid \"Alacant\"\nmsgstr \"阿利坎特\"\n\n#: es/es_provinces.py:8\nmsgid \"Almeria\"\nmsgstr \"阿爾梅里亞\"\n\n#: es/es_provinces.py:9\nmsgid \"Avila\"\nmsgstr \"阿維拉\"\n\n#: es/es_provinces.py:10\nmsgid \"Badajoz\"\nmsgstr \"巴達霍斯\"\n\n#: es/es_provinces.py:11\nmsgid \"Illes Balears\"\nmsgstr \"巴利阿里群島\"\n\n#: es/es_provinces.py:12\nmsgid \"Barcelona\"\nmsgstr \"巴塞羅那\"\n\n#: es/es_provinces.py:13\nmsgid \"Burgos\"\nmsgstr \"布爾戈斯\"\n\n#: es/es_provinces.py:14\nmsgid \"Caceres\"\nmsgstr \"卡塞雷斯\"\n\n#: es/es_provinces.py:15\nmsgid \"Cadiz\"\nmsgstr \"加迪斯\"\n\n#: es/es_provinces.py:16\nmsgid \"Castello\"\nmsgstr \"城堡\"\n\n#: es/es_provinces.py:17\nmsgid \"Ciudad Real\"\nmsgstr \"雷亞爾\"\n\n#: es/es_provinces.py:18\nmsgid \"Cordoba\"\nmsgstr \"科多巴\"\n\n#: es/es_provinces.py:19\nmsgid \"A Coruna\"\nmsgstr \"拉科魯納\"\n\n#: es/es_provinces.py:20\nmsgid \"Cuenca\"\nmsgstr \"昆卡\"\n\n#: es/es_provinces.py:21\nmsgid \"Girona\"\nmsgstr \"赫羅納\"\n\n#: es/es_provinces.py:22\nmsgid \"Granada\"\nmsgstr \"格拉納達\"\n\n#: es/es_provinces.py:23\nmsgid \"Guadalajara\"\nmsgstr \"瓜達拉哈拉\"\n\n#: es/es_provinces.py:24\nmsgid \"Guipuzkoa\"\nmsgstr \"吉普斯夸\"\n\n#: es/es_provinces.py:25\nmsgid \"Huelva\"\nmsgstr \"韋爾瓦\"\n\n#: es/es_provinces.py:26\nmsgid \"Huesca\"\nmsgstr \"韋斯卡\"\n\n#: es/es_provinces.py:27\nmsgid \"Jaen\"\nmsgstr \"哈恩\"\n\n#: es/es_provinces.py:28\nmsgid \"Leon\"\nmsgstr \"里昂\"\n\n#: es/es_provinces.py:29\nmsgid \"Lleida\"\nmsgstr \"萊里達\"\n\n#: es/es_provinces.py:30 es/es_regions.py:17\nmsgid \"La Rioja\"\nmsgstr \"里奧夏\"\n\n#: es/es_provinces.py:31\nmsgid \"Lugo\"\nmsgstr \"盧戈\"\n\n#: es/es_provinces.py:32 es/es_regions.py:18\nmsgid \"Madrid\"\nmsgstr \"馬德里\"\n\n#: es/es_provinces.py:33\nmsgid \"Malaga\"\nmsgstr \"馬拉加\"\n\n#: es/es_provinces.py:34\nmsgid \"Murcia\"\nmsgstr \"穆爾西亞\"\n\n#: es/es_provinces.py:35\nmsgid \"Navarre\"\nmsgstr \"納瓦拉\"\n\n#: es/es_provinces.py:36\nmsgid \"Ourense\"\nmsgstr \"奥倫斯\"\n\n#: es/es_provinces.py:37\nmsgid \"Asturias\"\nmsgstr \"阿斯杜里亞斯\"\n\n#: es/es_provinces.py:38\nmsgid \"Palencia\"\nmsgstr \"帕倫西亞\"\n\n#: es/es_provinces.py:39\nmsgid \"Las Palmas\"\nmsgstr \"洛斯卡布斯\"\n\n#: es/es_provinces.py:40\nmsgid \"Pontevedra\"\nmsgstr \"蓬特韋德拉\"\n\n#: es/es_provinces.py:41\nmsgid \"Salamanca\"\nmsgstr \"薩拉曼卡\"\n\n#: es/es_provinces.py:42\nmsgid \"Santa Cruz de Tenerife\"\nmsgstr \"聖克魯斯-德特內裡費\"\n\n#: es/es_provinces.py:43 es/es_regions.py:11\nmsgid \"Cantabria\"\nmsgstr \"坎塔布里亞\"\n\n#: es/es_provinces.py:44\nmsgid \"Segovia\"\nmsgstr \"塞哥維亞\"\n\n#: es/es_provinces.py:45\nmsgid \"Seville\"\nmsgstr \"塞維利亞\"\n\n#: es/es_provinces.py:46\nmsgid \"Soria\"\nmsgstr \"索里亞\"\n\n#: es/es_provinces.py:47\nmsgid \"Tarragona\"\nmsgstr \"塔拉戈納\"\n\n#: es/es_provinces.py:48\nmsgid \"Teruel\"\nmsgstr \"特魯埃爾\"\n\n#: es/es_provinces.py:49\nmsgid \"Toledo\"\nmsgstr \"托萊多\"\n\n#: es/es_provinces.py:50\nmsgid \"Valencia\"\nmsgstr \"巴倫西亞\"\n\n#: es/es_provinces.py:51\nmsgid \"Valladolid\"\nmsgstr \"瓦利阿多里德\"\n\n#: es/es_provinces.py:52\nmsgid \"Bizkaia\"\nmsgstr \"巴斯克\"\n\n#: es/es_provinces.py:53\nmsgid \"Zamora\"\nmsgstr \"薩莫拉\"\n\n#: es/es_provinces.py:54\nmsgid \"Zaragoza\"\nmsgstr \"薩拉戈薩\"\n\n#: es/es_provinces.py:55\nmsgid \"Ceuta\"\nmsgstr \"休達\"\n\n#: es/es_provinces.py:56\nmsgid \"Melilla\"\nmsgstr \"梅利利亞\"\n\n#: es/es_regions.py:5\nmsgid \"Andalusia\"\nmsgstr \"安達魯西亞\"\n\n#: es/es_regions.py:6\nmsgid \"Aragon\"\nmsgstr \"阿拉貢\"\n\n#: es/es_regions.py:7\nmsgid \"Principality of Asturias\"\nmsgstr \"Principality of Asturias\"\n\n#: es/es_regions.py:8\nmsgid \"Balearic Islands\"\nmsgstr \"巴利阿里群島\"\n\n#: es/es_regions.py:9\nmsgid \"Basque Country\"\nmsgstr \"巴斯克地區\"\n\n#: es/es_regions.py:10\nmsgid \"Canary Islands\"\nmsgstr \"加那利群島\"\n\n#: es/es_regions.py:12\nmsgid \"Castile-La Mancha\"\nmsgstr \"卡斯提爾-拉曼查\"\n\n#: es/es_regions.py:13\nmsgid \"Castile and Leon\"\nmsgstr \"卡斯蒂利亞和里昂\"\n\n#: es/es_regions.py:14\nmsgid \"Catalonia\"\nmsgstr \"加泰隆尼亞\"\n\n#: es/es_regions.py:15\nmsgid \"Extremadura\"\nmsgstr \"艾司德雷馬度\"\n\n#: es/es_regions.py:16\nmsgid \"Galicia\"\nmsgstr \"加利西亞\"\n\n#: es/es_regions.py:19\nmsgid \"Region of Murcia\"\nmsgstr \"穆爾西亞地區\"\n\n#: es/es_regions.py:20\nmsgid \"Foral Community of Navarre\"\nmsgstr \"納瓦爾王國\"\n\n#: es/es_regions.py:21\nmsgid \"Valencian Community\"\nmsgstr \"瓦倫西亞自治區\"\n\n#: es/forms.py:26\nmsgid \"Enter a valid postal code in the range and format 01XXX - 52XXX.\"\nmsgstr \"輸入範圍 01XXX - 52XXX 的郵遞區號。\"\n\n#: es/forms.py:46\nmsgid \"\"\n\"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or \"\n\"9XXXXXXXX.\"\nmsgstr \"以 6XXXXXXXX, 8XXXXXXXX 或 9XXXXXXXX 的格式輸入電話號碼。\"\n\n#: es/forms.py:73\nmsgid \"Please enter a valid NIF, NIE, or CIF.\"\nmsgstr \"輸入正確的 NIF, NIE 或 CIF。\"\n\n#: es/forms.py:74\nmsgid \"Please enter a valid NIF or NIE.\"\nmsgstr \"輸入正確的 NIF 或 NIE。\"\n\n#: es/forms.py:75\nmsgid \"Invalid checksum for NIF.\"\nmsgstr \"無效的 NIF 校驗和。\"\n\n#: es/forms.py:76\nmsgid \"Invalid checksum for NIE.\"\nmsgstr \"無效的 NIE 校驗和。\"\n\n#: es/forms.py:77\nmsgid \"Invalid checksum for CIF.\"\nmsgstr \"無效的 CIF 校驗和。\"\n\n#: es/forms.py:149\nmsgid \"\"\n\"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.\"\nmsgstr \"請輸入一個有效的銀行值帳號，格式為 XXXX-XXXX-XX-XXXXXXXXXX。\"\n\n#: es/forms.py:150\nmsgid \"Invalid checksum for bank account number.\"\nmsgstr \"無效的銀行帳號校驗和。\"\n\n#: fi/forms.py:33\nmsgid \"Enter a valid Finnish social security number.\"\nmsgstr \"請輸入一個有效的芬蘭社會保險號碼。\"\n\n#: fr/forms.py:35\nmsgid \"Phone numbers must be in 0X XX XX XX XX format.\"\nmsgstr \"以 0X XX XX XX XX 的格式輸入電話號碼。\"\n\n#: gb/forms.py:25\nmsgid \"Enter a valid postcode.\"\nmsgstr \"輸入有效的郵遞區號\"\n\n#: gb/gb_regions.py:11\nmsgid \"Bedfordshire\"\nmsgstr \"貝德福郡\"\n\n#: gb/gb_regions.py:12\nmsgid \"Buckinghamshire\"\nmsgstr \"白金漢郡\"\n\n#: gb/gb_regions.py:14\nmsgid \"Cheshire\"\nmsgstr \"柴郡\"\n\n#: gb/gb_regions.py:15\nmsgid \"Cornwall and Isles of Scilly\"\nmsgstr \"康瓦爾和錫利群島\"\n\n#: gb/gb_regions.py:16\nmsgid \"Cumbria\"\nmsgstr \"坎布里亞郡\"\n\n#: gb/gb_regions.py:17\nmsgid \"Derbyshire\"\nmsgstr \"德比郡\"\n\n#: gb/gb_regions.py:18\nmsgid \"Devon\"\nmsgstr \"德文郡\"\n\n#: gb/gb_regions.py:19\nmsgid \"Dorset\"\nmsgstr \"多實郡\"\n\n#: gb/gb_regions.py:20\nmsgid \"Durham\"\nmsgstr \"達拉謨\"\n\n#: gb/gb_regions.py:21\nmsgid \"East Sussex\"\nmsgstr \"東薩塞克斯郡\"\n\n#: gb/gb_regions.py:22\nmsgid \"Essex\"\nmsgstr \"雅息士郡\"\n\n#: gb/gb_regions.py:23\nmsgid \"Gloucestershire\"\nmsgstr \"告羅士打郡\"\n\n#: gb/gb_regions.py:24\nmsgid \"Greater London\"\nmsgstr \"大倫敦\"\n\n#: gb/gb_regions.py:25\nmsgid \"Greater Manchester\"\nmsgstr \"大曼徹斯特郡\"\n\n#: gb/gb_regions.py:26\nmsgid \"Hampshire\"\nmsgstr \"漢普郡\"\n\n#: gb/gb_regions.py:27\nmsgid \"Hertfordshire\"\nmsgstr \"哈特福郡\"\n\n#: gb/gb_regions.py:28\nmsgid \"Kent\"\nmsgstr \"肯特郡\"\n\n#: gb/gb_regions.py:29\nmsgid \"Lancashire\"\nmsgstr \"蘭開夏\"\n\n#: gb/gb_regions.py:30\nmsgid \"Leicestershire\"\nmsgstr \"萊斯特郡\"\n\n#: gb/gb_regions.py:31\nmsgid \"Lincolnshire\"\nmsgstr \"林肯郡\"\n\n#: gb/gb_regions.py:32\nmsgid \"Merseyside\"\nmsgstr \"默西塞德郡\"\n\n#: gb/gb_regions.py:33\nmsgid \"Norfolk\"\nmsgstr \"諾福克郡\"\n\n#: gb/gb_regions.py:34\nmsgid \"North Yorkshire\"\nmsgstr \"北約克郡\"\n\n#: gb/gb_regions.py:35\nmsgid \"Northamptonshire\"\nmsgstr \"北安普敦郡\"\n\n#: gb/gb_regions.py:36\nmsgid \"Northumberland\"\nmsgstr \"諾森伯蘭郡\"\n\n#: gb/gb_regions.py:37\nmsgid \"Nottinghamshire\"\nmsgstr \"諾丁罕郡\"\n\n#: gb/gb_regions.py:38\nmsgid \"Oxfordshire\"\nmsgstr \"牛津郡\"\n\n#: gb/gb_regions.py:39\nmsgid \"Shropshire\"\nmsgstr \"施洛普郡\"\n\n#: gb/gb_regions.py:40\nmsgid \"Somerset\"\nmsgstr \"森麻實郡\"\n\n#: gb/gb_regions.py:41\nmsgid \"South Yorkshire\"\nmsgstr \"南約克郡\"\n\n#: gb/gb_regions.py:42\nmsgid \"Staffordshire\"\nmsgstr \"斯塔福郡\"\n\n#: gb/gb_regions.py:43\nmsgid \"Suffolk\"\nmsgstr \"沙福郡\"\n\n#: gb/gb_regions.py:44\nmsgid \"Surrey\"\nmsgstr \"舒梨郡\"\n\n#: gb/gb_regions.py:45\nmsgid \"Tyne and Wear\"\nmsgstr \"泰恩-威爾郡\"\n\n#: gb/gb_regions.py:46\nmsgid \"Warwickshire\"\nmsgstr \"瓦立克郡\"\n\n#: gb/gb_regions.py:47\nmsgid \"West Midlands\"\nmsgstr \"西密德蘭\"\n\n#: gb/gb_regions.py:48\nmsgid \"West Sussex\"\nmsgstr \"西薩塞克斯郡\"\n\n#: gb/gb_regions.py:49\nmsgid \"West Yorkshire\"\nmsgstr \"西約克郡\"\n\n#: gb/gb_regions.py:50\nmsgid \"Wiltshire\"\nmsgstr \"威爾特郡\"\n\n#: gb/gb_regions.py:51\nmsgid \"Worcestershire\"\nmsgstr \"伍斯特郡\"\n\n#: gb/gb_regions.py:55\nmsgid \"County Antrim\"\nmsgstr \"安特里姆郡\"\n\n#: gb/gb_regions.py:56\nmsgid \"County Armagh\"\nmsgstr \"阿馬郡\"\n\n#: gb/gb_regions.py:57\nmsgid \"County Down\"\nmsgstr \"唐郡\"\n\n#: gb/gb_regions.py:58\nmsgid \"County Fermanagh\"\nmsgstr \"弗馬納郡\"\n\n#: gb/gb_regions.py:59\nmsgid \"County Londonderry\"\nmsgstr \"倫敦德里郡\"\n\n#: gb/gb_regions.py:60\nmsgid \"County Tyrone\"\nmsgstr \"蒂龍郡\"\n\n#: gb/gb_regions.py:64\nmsgid \"Clwyd\"\nmsgstr \"克盧伊德\"\n\n#: gb/gb_regions.py:65\nmsgid \"Dyfed\"\nmsgstr \"戴菲德\"\n\n#: gb/gb_regions.py:66\nmsgid \"Gwent\"\nmsgstr \"格溫特\"\n\n#: gb/gb_regions.py:67\nmsgid \"Gwynedd\"\nmsgstr \"圭內斯\"\n\n#: gb/gb_regions.py:68\nmsgid \"Mid Glamorgan\"\nmsgstr \"中格拉摩根\"\n\n#: gb/gb_regions.py:69\nmsgid \"Powys\"\nmsgstr \"波伊斯\"\n\n#: gb/gb_regions.py:70\nmsgid \"South Glamorgan\"\nmsgstr \"南格拉摩根\"\n\n#: gb/gb_regions.py:71\nmsgid \"West Glamorgan\"\nmsgstr \"西格拉摩根\"\n\n#: gb/gb_regions.py:75\nmsgid \"Borders\"\nmsgstr \"博德斯\"\n\n#: gb/gb_regions.py:76\nmsgid \"Central Scotland\"\nmsgstr \"中央蘇格蘭\"\n\n#: gb/gb_regions.py:77\nmsgid \"Dumfries and Galloway\"\nmsgstr \"鄧弗里斯-加洛韋\"\n\n#: gb/gb_regions.py:78\nmsgid \"Fife\"\nmsgstr \"法夫\"\n\n#: gb/gb_regions.py:79\nmsgid \"Grampian\"\nmsgstr \"嘉林邊\"\n\n#: gb/gb_regions.py:80\nmsgid \"Highland\"\nmsgstr \"高地 (蘇格蘭行政區)\"\n\n#: gb/gb_regions.py:81\nmsgid \"Lothian\"\nmsgstr \"洛錫安\"\n\n#: gb/gb_regions.py:82\nmsgid \"Orkney Islands\"\nmsgstr \"奧克尼群島\"\n\n#: gb/gb_regions.py:83\nmsgid \"Shetland Islands\"\nmsgstr \"昔德蘭群島\"\n\n#: gb/gb_regions.py:84\nmsgid \"Strathclyde\"\nmsgstr \"斯特拉思克萊德\"\n\n#: gb/gb_regions.py:85\nmsgid \"Tayside\"\nmsgstr \"泰賽德\"\n\n#: gb/gb_regions.py:86\nmsgid \"Western Isles\"\nmsgstr \"埃利安錫爾\"\n\n#: gb/gb_regions.py:90\nmsgid \"England\"\nmsgstr \"英格蘭\"\n\n#: gb/gb_regions.py:91\nmsgid \"Northern Ireland\"\nmsgstr \"北愛爾蘭\"\n\n#: gb/gb_regions.py:92\nmsgid \"Scotland\"\nmsgstr \"蘇格蘭\"\n\n#: gb/gb_regions.py:93\nmsgid \"Wales\"\nmsgstr \"威爾斯\"\n\n#: hk/forms.py:37\n#, python-format\nmsgid \"Phone number should not start with one of the followings: %s.\"\nmsgstr \"電話號碼開頭不應為下列任一項： %s\"\n\n#: hk/forms.py:40\n#, python-format\nmsgid \"Phone number must be in one of the following formats: %s.\"\nmsgstr \"電話號碼的格式必須為下列任一項： %s\"\n\n#: hk/forms.py:42\n#, python-format\nmsgid \"Phone number should start with one of the followings: %s.\"\nmsgstr \"電話號碼開頭應為下列任一項： %s\"\n\n#: hr/forms.py:76\nmsgid \"Enter a valid 13 digit JMBG\"\nmsgstr \"輸入一個有效的13碼JMBG\"\n\n#: hr/forms.py:77\nmsgid \"Error in date segment\"\nmsgstr \"日期區間錯誤\"\n\n#: hr/forms.py:123\nmsgid \"Enter a valid 11 digit OIB\"\nmsgstr \"輸入一個有效的11碼OIB\"\n\n#: hr/forms.py:152 id/forms.py:112\nmsgid \"Enter a valid vehicle license plate number\"\nmsgstr \"輸入正確的居住許可號碼。\"\n\n#: hr/forms.py:153\nmsgid \"Enter a valid location code\"\nmsgstr \"輸入有效的位置碼\"\n\n#: hr/forms.py:154\nmsgid \"Number part cannot be zero\"\nmsgstr \"不可含0\"\n\n#: hr/forms.py:190\nmsgid \"Enter a valid 5 digit postal code\"\nmsgstr \"輸入有效的5碼郵遞區號\"\n\n#: hr/forms.py:218 id/forms.py:72 nl/forms.py:56\nmsgid \"Enter a valid phone number\"\nmsgstr \"輸入正確的電話號碼。\"\n\n#: hr/forms.py:219\nmsgid \"Enter a valid area or mobile network code\"\nmsgstr \"輸入有效的區域或行動網路碼\"\n\n#: hr/forms.py:220\nmsgid \"The phone nubmer is too long\"\nmsgstr \"電話號碼太長\"\n\n#: hr/forms.py:258\nmsgid \"Enter a valid 19 digit JMBAG starting with 601983\"\nmsgstr \"輸入一個從601983開始的有效19碼JMBAG\"\n\n#: hr/forms.py:259\nmsgid \"Card issue number cannot be zero\"\nmsgstr \"卡片的 issue 碼不得為0\"\n\n#: hr/hr_choices.py:14\nmsgid \"Grad Zagreb\"\nmsgstr \"Grad Zagreb\"\n\n#: hr/hr_choices.py:15\nmsgid \"Bjelovarsko-bilogorska županija\"\nmsgstr \"Bjelovarsko-bilogorska županija\"\n\n#: hr/hr_choices.py:16\nmsgid \"Brodsko-posavska županija\"\nmsgstr \"Brodsko-posavska županija\"\n\n#: hr/hr_choices.py:17\nmsgid \"Dubrovačko-neretvanska županija\"\nmsgstr \"Dubrovačko-neretvanska županija\"\n\n#: hr/hr_choices.py:18\nmsgid \"Istarska županija\"\nmsgstr \"Istarska županija\"\n\n#: hr/hr_choices.py:19\nmsgid \"Karlovačka županija\"\nmsgstr \"Karlovačka županija\"\n\n#: hr/hr_choices.py:20\nmsgid \"Koprivničko-križevačka županija\"\nmsgstr \"Koprivničko-križevačka županija\"\n\n#: hr/hr_choices.py:21\nmsgid \"Krapinsko-zagorska županija\"\nmsgstr \"Krapinsko-zagorska županija\"\n\n#: hr/hr_choices.py:22\nmsgid \"Ličko-senjska županija\"\nmsgstr \"Ličko-senjska županija\"\n\n#: hr/hr_choices.py:23\nmsgid \"Međimurska županija\"\nmsgstr \"Međimurska županija\"\n\n#: hr/hr_choices.py:24\nmsgid \"Osječko-baranjska županija\"\nmsgstr \"Osječko-baranjska županija\"\n\n#: hr/hr_choices.py:25\nmsgid \"Požeško-slavonska županija\"\nmsgstr \"Požeško-slavonska županija\"\n\n#: hr/hr_choices.py:26\nmsgid \"Primorsko-goranska županija\"\nmsgstr \"Primorsko-goranska županija\"\n\n#: hr/hr_choices.py:27\nmsgid \"Sisačko-moslavačka županija\"\nmsgstr \"Sisačko-moslavačka županija\"\n\n#: hr/hr_choices.py:28\nmsgid \"Splitsko-dalmatinska županija\"\nmsgstr \"Splitsko-dalmatinska županija\"\n\n#: hr/hr_choices.py:29\nmsgid \"Šibensko-kninska županija\"\nmsgstr \"Šibensko-kninska županija\"\n\n#: hr/hr_choices.py:30\nmsgid \"Varaždinska županija\"\nmsgstr \"Varaždinska županija\"\n\n#: hr/hr_choices.py:31\nmsgid \"Virovitičko-podravska županija\"\nmsgstr \"Virovitičko-podravska županija\"\n\n#: hr/hr_choices.py:32\nmsgid \"Vukovarsko-srijemska županija\"\nmsgstr \"Vukovarsko-srijemska županija\"\n\n#: hr/hr_choices.py:33\nmsgid \"Zadarska županija\"\nmsgstr \"Zadarska županija\"\n\n#: hr/hr_choices.py:34\nmsgid \"Zagrebačka županija\"\nmsgstr \"Zagrebačka županija\"\n\n#: id/forms.py:31\nmsgid \"Enter a valid post code\"\nmsgstr \"輸入正確的郵遞區號。\"\n\n#: id/forms.py:176\nmsgid \"Enter a valid NIK/KTP number\"\nmsgstr \"輸入正確的 NIK/KTP 號碼。\"\n\n#: id/id_choices.py:15\nmsgid \"Aceh\"\nmsgstr \"亞齊特別行政區\"\n\n#: id/id_choices.py:16 id/id_choices.py:79\nmsgid \"Bali\"\nmsgstr \"峇里省\"\n\n#: id/id_choices.py:17 id/id_choices.py:51\nmsgid \"Banten\"\nmsgstr \"萬丹省\"\n\n#: id/id_choices.py:18 id/id_choices.py:60\nmsgid \"Bengkulu\"\nmsgstr \"明古魯省\"\n\n#: id/id_choices.py:19 id/id_choices.py:53\nmsgid \"Yogyakarta\"\nmsgstr \"日惹市\"\n\n#: id/id_choices.py:20 id/id_choices.py:57\nmsgid \"Jakarta\"\nmsgstr \"雅加達首都特區\"\n\n#: id/id_choices.py:21 id/id_choices.py:81\nmsgid \"Gorontalo\"\nmsgstr \"哥倫打洛省\"\n\n#: id/id_choices.py:22 id/id_choices.py:63\nmsgid \"Jambi\"\nmsgstr \"占碑省\"\n\n#: id/id_choices.py:23\nmsgid \"Jawa Barat\"\nmsgstr \"西爪哇省\"\n\n#: id/id_choices.py:24\nmsgid \"Jawa Tengah\"\nmsgstr \"中爪哇省\"\n\n#: id/id_choices.py:25\nmsgid \"Jawa Timur\"\nmsgstr \"東爪哇省\"\n\n#: id/id_choices.py:26 id/id_choices.py:94\nmsgid \"Kalimantan Barat\"\nmsgstr \"西加里曼丹省\"\n\n#: id/id_choices.py:27 id/id_choices.py:72\nmsgid \"Kalimantan Selatan\"\nmsgstr \"南加里曼丹省\"\n\n#: id/id_choices.py:28 id/id_choices.py:95\nmsgid \"Kalimantan Tengah\"\nmsgstr \"中加里曼丹省\"\n\n#: id/id_choices.py:29 id/id_choices.py:96\nmsgid \"Kalimantan Timur\"\nmsgstr \"東加里曼丹省\"\n\n#: id/id_choices.py:30\nmsgid \"Kepulauan Bangka-Belitung\"\nmsgstr \"邦加-勿里洞省\"\n\n#: id/id_choices.py:31 id/id_choices.py:68\nmsgid \"Kepulauan Riau\"\nmsgstr \"廖內群島省\"\n\n#: id/id_choices.py:32 id/id_choices.py:61\nmsgid \"Lampung\"\nmsgstr \"楠榜省\"\n\n#: id/id_choices.py:33 id/id_choices.py:76\nmsgid \"Maluku\"\nmsgstr \"馬魯古省\"\n\n#: id/id_choices.py:34 id/id_choices.py:77\nmsgid \"Maluku Utara\"\nmsgstr \"北馬魯古省\"\n\n#: id/id_choices.py:35\nmsgid \"Nusa Tenggara Barat\"\nmsgstr \"西努沙登加拉省\"\n\n#: id/id_choices.py:36\nmsgid \"Nusa Tenggara Timur\"\nmsgstr \"東努沙登加拉省\"\n\n#: id/id_choices.py:37\nmsgid \"Papua\"\nmsgstr \"巴布亞省\"\n\n#: id/id_choices.py:38\nmsgid \"Papua Barat\"\nmsgstr \"西巴布亞省\"\n\n#: id/id_choices.py:39 id/id_choices.py:66\nmsgid \"Riau\"\nmsgstr \"廖內省\"\n\n#: id/id_choices.py:40 id/id_choices.py:74\nmsgid \"Sulawesi Barat\"\nmsgstr \"西蘇拉威西省\"\n\n#: id/id_choices.py:41 id/id_choices.py:75\nmsgid \"Sulawesi Selatan\"\nmsgstr \"南蘇拉威西省\"\n\n#: id/id_choices.py:42 id/id_choices.py:82\nmsgid \"Sulawesi Tengah\"\nmsgstr \"中蘇拉威西省\"\n\n#: id/id_choices.py:43 id/id_choices.py:85\nmsgid \"Sulawesi Tenggara\"\nmsgstr \"東南蘇拉威西省\"\n\n#: id/id_choices.py:44\nmsgid \"Sulawesi Utara\"\nmsgstr \"北蘇拉威西省\"\n\n#: id/id_choices.py:45 id/id_choices.py:58\nmsgid \"Sumatera Barat\"\nmsgstr \"西蘇門答臘省\"\n\n#: id/id_choices.py:46 id/id_choices.py:62\nmsgid \"Sumatera Selatan\"\nmsgstr \"中蘇門答臘省\"\n\n#: id/id_choices.py:47 id/id_choices.py:64\nmsgid \"Sumatera Utara\"\nmsgstr \"北蘇門答臘省\"\n\n#: id/id_choices.py:52\nmsgid \"Magelang\"\nmsgstr \"馬格朗\"\n\n#: id/id_choices.py:54\nmsgid \"Surakarta - Solo\"\nmsgstr \"梭羅市\"\n\n#: id/id_choices.py:55\nmsgid \"Madiun\"\nmsgstr \"茉莉芬\"\n\n#: id/id_choices.py:56\nmsgid \"Kediri\"\nmsgstr \"練義里\"\n\n#: id/id_choices.py:59\nmsgid \"Tapanuli\"\nmsgstr \"塔帕努里\"\n\n#: id/id_choices.py:65\nmsgid \"Nanggroe Aceh Darussalam\"\nmsgstr \"亞齊達魯薩蘭特區\"\n\n#: id/id_choices.py:67\nmsgid \"Kepulauan Bangka Belitung\"\nmsgstr \"邦加勿裡洞群島\"\n\n#: id/id_choices.py:69\nmsgid \"Corps Consulate\"\nmsgstr \"領事團\"\n\n#: id/id_choices.py:70\nmsgid \"Corps Diplomatic\"\nmsgstr \"外交使團\"\n\n#: id/id_choices.py:71\nmsgid \"Bandung\"\nmsgstr \"萬隆\"\n\n#: id/id_choices.py:73\nmsgid \"Sulawesi Utara Daratan\"\nmsgstr \"蘇拉威西北內地\"\n\n#: id/id_choices.py:78\nmsgid \"NTT - Timor\"\nmsgstr \"東努沙登加拉省 - 帝汶\"\n\n#: id/id_choices.py:80\nmsgid \"Sulawesi Utara Kepulauan\"\nmsgstr \"蘇拉威西群島\"\n\n#: id/id_choices.py:83\nmsgid \"NTB - Lombok\"\nmsgstr \"西努沙登加拉省 - 龍目\"\n\n#: id/id_choices.py:84\nmsgid \"Papua dan Papua Barat\"\nmsgstr \"巴布亞和西巴布亞\"\n\n#: id/id_choices.py:86\nmsgid \"Cirebon\"\nmsgstr \"井里汶\"\n\n#: id/id_choices.py:87\nmsgid \"NTB - Sumbawa\"\nmsgstr \"西努沙登加拉省 - 松巴哇\"\n\n#: id/id_choices.py:88\nmsgid \"NTT - Flores\"\nmsgstr \"東努沙登加拉省 - 弗洛勒斯\"\n\n#: id/id_choices.py:89\nmsgid \"NTT - Sumba\"\nmsgstr \"東努沙登加拉省 - 松巴\"\n\n#: id/id_choices.py:90\nmsgid \"Bogor\"\nmsgstr \"茂物\"\n\n#: id/id_choices.py:91\nmsgid \"Pekalongan\"\nmsgstr \"北加浪岸\"\n\n#: id/id_choices.py:92\nmsgid \"Semarang\"\nmsgstr \"三寶壟\"\n\n#: id/id_choices.py:93\nmsgid \"Pati\"\nmsgstr \"帕蒂\"\n\n#: id/id_choices.py:97\nmsgid \"Surabaya\"\nmsgstr \"泗水\"\n\n#: id/id_choices.py:98\nmsgid \"Madura\"\nmsgstr \"馬杜拉\"\n\n#: id/id_choices.py:99\nmsgid \"Malang\"\nmsgstr \"馬朗\"\n\n#: id/id_choices.py:100\nmsgid \"Jember\"\nmsgstr \"任抹\"\n\n#: id/id_choices.py:101\nmsgid \"Banyumas\"\nmsgstr \"班尤馬\"\n\n#: id/id_choices.py:102\nmsgid \"Federal Government\"\nmsgstr \"聯合政府\"\n\n#: id/id_choices.py:103\nmsgid \"Bojonegoro\"\nmsgstr \"新埔頭\"\n\n#: id/id_choices.py:104\nmsgid \"Purwakarta\"\nmsgstr \"普瓦卡達\"\n\n#: id/id_choices.py:105\nmsgid \"Sidoarjo\"\nmsgstr \"詩都阿佐\"\n\n#: id/id_choices.py:106\nmsgid \"Garut\"\nmsgstr \"牙律\"\n\n#: ie/ie_counties.py:8\nmsgid \"Antrim\"\nmsgstr \"安特里姆郡\"\n\n#: ie/ie_counties.py:9\nmsgid \"Armagh\"\nmsgstr \"阿馬郡\"\n\n#: ie/ie_counties.py:10\nmsgid \"Carlow\"\nmsgstr \"卡婁郡\"\n\n#: ie/ie_counties.py:11\nmsgid \"Cavan\"\nmsgstr \"卡文郡\"\n\n#: ie/ie_counties.py:12\nmsgid \"Clare\"\nmsgstr \"克萊爾郡\"\n\n#: ie/ie_counties.py:13\nmsgid \"Cork\"\nmsgstr \"科克郡\"\n\n#: ie/ie_counties.py:14\nmsgid \"Derry\"\nmsgstr \"德里\"\n\n#: ie/ie_counties.py:15\nmsgid \"Donegal\"\nmsgstr \"當尼戈爾郡\"\n\n#: ie/ie_counties.py:16\nmsgid \"Down\"\nmsgstr \"唐郡\"\n\n#: ie/ie_counties.py:17\nmsgid \"Dublin\"\nmsgstr \"都柏林郡\"\n\n#: ie/ie_counties.py:18\nmsgid \"Fermanagh\"\nmsgstr \"弗馬納郡\"\n\n#: ie/ie_counties.py:19\nmsgid \"Galway\"\nmsgstr \"高維郡\"\n\n#: ie/ie_counties.py:20\nmsgid \"Kerry\"\nmsgstr \"凱瑞郡\"\n\n#: ie/ie_counties.py:21\nmsgid \"Kildare\"\nmsgstr \"基爾代爾郡\"\n\n#: ie/ie_counties.py:22\nmsgid \"Kilkenny\"\nmsgstr \"基爾肯尼郡\"\n\n#: ie/ie_counties.py:23\nmsgid \"Laois\"\nmsgstr \"利施郡\"\n\n#: ie/ie_counties.py:24\nmsgid \"Leitrim\"\nmsgstr \"利特里姆郡\"\n\n#: ie/ie_counties.py:25\nmsgid \"Limerick\"\nmsgstr \"利默里克郡\"\n\n#: ie/ie_counties.py:26\nmsgid \"Longford\"\nmsgstr \"朗福德郡\"\n\n#: ie/ie_counties.py:27\nmsgid \"Louth\"\nmsgstr \"勞斯郡\"\n\n#: ie/ie_counties.py:28\nmsgid \"Mayo\"\nmsgstr \"梅歐郡\"\n\n#: ie/ie_counties.py:29\nmsgid \"Meath\"\nmsgstr \"西米斯郡\"\n\n#: ie/ie_counties.py:30\nmsgid \"Monaghan\"\nmsgstr \"莫納亨郡\"\n\n#: ie/ie_counties.py:31\nmsgid \"Offaly\"\nmsgstr \"奧法利郡\"\n\n#: ie/ie_counties.py:32\nmsgid \"Roscommon\"\nmsgstr \"羅斯康門郡\"\n\n#: ie/ie_counties.py:33\nmsgid \"Sligo\"\nmsgstr \"斯萊戈郡\"\n\n#: ie/ie_counties.py:34\nmsgid \"Tipperary\"\nmsgstr \"蒂珀雷里郡\"\n\n#: ie/ie_counties.py:35\nmsgid \"Tyrone\"\nmsgstr \"蒂龍郡\"\n\n#: ie/ie_counties.py:36\nmsgid \"Waterford\"\nmsgstr \"沃特福德郡\"\n\n#: ie/ie_counties.py:37\nmsgid \"Westmeath\"\nmsgstr \"西米斯郡\"\n\n#: ie/ie_counties.py:38\nmsgid \"Wexford\"\nmsgstr \"韋克斯福德\"\n\n#: ie/ie_counties.py:39\nmsgid \"Wicklow\"\nmsgstr \"威克洛郡\"\n\n#: il/forms.py:32\nmsgid \"Enter a postal code in the format XXXXX\"\nmsgstr \"以 XXXXX 的格式輸入郵遞區號。\"\n\n#: il/forms.py:51\nmsgid \"Enter a valid ID number.\"\nmsgstr \"請輸入正確的 ID 號碼。\"\n\n#: in_/forms.py:41\nmsgid \"Enter a zip code in the format XXXXXX or XXX XXX.\"\nmsgstr \"以XXXXXX或XXX XXX的格式輸入郵遞區號\"\n\n#: in_/forms.py:64\nmsgid \"Enter an Indian state or territory.\"\nmsgstr \"輸入印度的州或區域\"\n\n#: in_/forms.py:103\nmsgid \"Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.\"\nmsgstr \"電話號碼需為 02X-8X 或 03X-7X 或 04X-6X 格式\"\n\n#: is_/forms.py:22\nmsgid \"\"\n\"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.\"\nmsgstr \"用 XXXXXX-XXXX 的格式輸入冰島身份證號碼。\"\n\n#: is_/forms.py:23\nmsgid \"The Icelandic identification number is not valid.\"\nmsgstr \"無效的冰島身份證號碼。\"\n\n#: it/forms.py:21\nmsgid \"Enter a valid zip code.\"\nmsgstr \"請輸入正確的郵遞區號。\"\n\n#: it/forms.py:48\nmsgid \"Enter a valid Social Security number.\"\nmsgstr \"請輸入正確的社會安全號碼。\"\n\n#: it/forms.py:73\nmsgid \"Enter a valid VAT number.\"\nmsgstr \"請輸入正確的 VAT 號碼。\"\n\n#: jp/forms.py:19\nmsgid \"Enter a postal code in the format XXXXXXX or XXX-XXXX.\"\nmsgstr \"用 XXXXXXX 或 XXX-XXXX 的格式輸入郵遞區號。\"\n\n#: jp/jp_prefectures.py:4\nmsgid \"Hokkaido\"\nmsgstr \"北海道\"\n\n#: jp/jp_prefectures.py:5\nmsgid \"Aomori\"\nmsgstr \"青森\"\n\n#: jp/jp_prefectures.py:6\nmsgid \"Iwate\"\nmsgstr \"岩手\"\n\n#: jp/jp_prefectures.py:7\nmsgid \"Miyagi\"\nmsgstr \"宮城縣\"\n\n#: jp/jp_prefectures.py:8\nmsgid \"Akita\"\nmsgstr \"秋田\"\n\n#: jp/jp_prefectures.py:9\nmsgid \"Yamagata\"\nmsgstr \"山形\"\n\n#: jp/jp_prefectures.py:10\nmsgid \"Fukushima\"\nmsgstr \"福島\"\n\n#: jp/jp_prefectures.py:11\nmsgid \"Ibaraki\"\nmsgstr \"茨城\"\n\n#: jp/jp_prefectures.py:12\nmsgid \"Tochigi\"\nmsgstr \"櫪木\"\n\n#: jp/jp_prefectures.py:13\nmsgid \"Gunma\"\nmsgstr \"群馬\"\n\n#: jp/jp_prefectures.py:14\nmsgid \"Saitama\"\nmsgstr \"埼玉\"\n\n#: jp/jp_prefectures.py:15\nmsgid \"Chiba\"\nmsgstr \"千葉\"\n\n#: jp/jp_prefectures.py:16\nmsgid \"Tokyo\"\nmsgstr \"東京\"\n\n#: jp/jp_prefectures.py:17\nmsgid \"Kanagawa\"\nmsgstr \"神奈川\"\n\n#: jp/jp_prefectures.py:18\nmsgid \"Yamanashi\"\nmsgstr \"山梨\"\n\n#: jp/jp_prefectures.py:19\nmsgid \"Nagano\"\nmsgstr \"長野\"\n\n#: jp/jp_prefectures.py:20\nmsgid \"Niigata\"\nmsgstr \"新瀉\"\n\n#: jp/jp_prefectures.py:21\nmsgid \"Toyama\"\nmsgstr \"富山\"\n\n#: jp/jp_prefectures.py:22\nmsgid \"Ishikawa\"\nmsgstr \"石川\"\n\n#: jp/jp_prefectures.py:23\nmsgid \"Fukui\"\nmsgstr \"福井\"\n\n#: jp/jp_prefectures.py:24\nmsgid \"Gifu\"\nmsgstr \"岐阜\"\n\n#: jp/jp_prefectures.py:25\nmsgid \"Shizuoka\"\nmsgstr \"靜岡\"\n\n#: jp/jp_prefectures.py:26\nmsgid \"Aichi\"\nmsgstr \"愛知\"\n\n#: jp/jp_prefectures.py:27\nmsgid \"Mie\"\nmsgstr \"三重\"\n\n#: jp/jp_prefectures.py:28\nmsgid \"Shiga\"\nmsgstr \"滋賀\"\n\n#: jp/jp_prefectures.py:29\nmsgid \"Kyoto\"\nmsgstr \"京都\"\n\n#: jp/jp_prefectures.py:30\nmsgid \"Osaka\"\nmsgstr \"大阪\"\n\n#: jp/jp_prefectures.py:31\nmsgid \"Hyogo\"\nmsgstr \"兵庫\"\n\n#: jp/jp_prefectures.py:32\nmsgid \"Nara\"\nmsgstr \"奈良\"\n\n#: jp/jp_prefectures.py:33\nmsgid \"Wakayama\"\nmsgstr \"和歌山\"\n\n#: jp/jp_prefectures.py:34\nmsgid \"Tottori\"\nmsgstr \"鳥取\"\n\n#: jp/jp_prefectures.py:35\nmsgid \"Shimane\"\nmsgstr \"島根\"\n\n#: jp/jp_prefectures.py:36\nmsgid \"Okayama\"\nmsgstr \"岡山\"\n\n#: jp/jp_prefectures.py:37\nmsgid \"Hiroshima\"\nmsgstr \"廣島\"\n\n#: jp/jp_prefectures.py:38\nmsgid \"Yamaguchi\"\nmsgstr \"山口\"\n\n#: jp/jp_prefectures.py:39\nmsgid \"Tokushima\"\nmsgstr \"德島\"\n\n#: jp/jp_prefectures.py:40\nmsgid \"Kagawa\"\nmsgstr \"香川\"\n\n#: jp/jp_prefectures.py:41\nmsgid \"Ehime\"\nmsgstr \"愛媛縣\"\n\n#: jp/jp_prefectures.py:42\nmsgid \"Kochi\"\nmsgstr \"高知\"\n\n#: jp/jp_prefectures.py:43\nmsgid \"Fukuoka\"\nmsgstr \"福岡\"\n\n#: jp/jp_prefectures.py:44\nmsgid \"Saga\"\nmsgstr \"左賀\"\n\n#: jp/jp_prefectures.py:45\nmsgid \"Nagasaki\"\nmsgstr \"長崎\"\n\n#: jp/jp_prefectures.py:46\nmsgid \"Kumamoto\"\nmsgstr \"熊本\"\n\n#: jp/jp_prefectures.py:47\nmsgid \"Oita\"\nmsgstr \"大分\"\n\n#: jp/jp_prefectures.py:48\nmsgid \"Miyazaki\"\nmsgstr \"宫崎\"\n\n#: jp/jp_prefectures.py:49\nmsgid \"Kagoshima\"\nmsgstr \"鹿兒島\"\n\n#: jp/jp_prefectures.py:50\nmsgid \"Okinawa\"\nmsgstr \"琉球\"\n\n#: kw/forms.py:27\nmsgid \"Enter a valid Kuwaiti Civil ID number\"\nmsgstr \"請輸入一個正確的科威特身分證號碼。\"\n\n#: mk/forms.py:18\nmsgid \"\"\n\"Identity card numbers must contain either 4 to 7 digits or an uppercase \"\n\"letter and 7 digits.\"\nmsgstr \"識別卡號不是包含4到7碼，就是1個大寫字母和7碼\"\n\n#: mk/forms.py:57 si/forms.py:24\nmsgid \"This field should contain exactly 13 digits.\"\nmsgstr \"此欄位應包含13碼。\"\n\n#: mk/forms.py:58\nmsgid \"The first 7 digits of the UMCN must represent a valid past date.\"\nmsgstr \"UMCN開頭7碼必須為一個有效的過去日期\"\n\n#: mk/forms.py:59\nmsgid \"The UMCN is not valid.\"\nmsgstr \"UMCN 無效\"\n\n#: mk/mk_choices.py:10\nmsgid \"Aerodrom\"\nmsgstr \"Aerodrom\"\n\n#: mk/mk_choices.py:11\nmsgid \"Aračinovo\"\nmsgstr \"Aračinovo\"\n\n#: mk/mk_choices.py:12\nmsgid \"Berovo\"\nmsgstr \"Berovo\"\n\n#: mk/mk_choices.py:13\nmsgid \"Bitola\"\nmsgstr \"Bitola\"\n\n#: mk/mk_choices.py:14\nmsgid \"Bogdanci\"\nmsgstr \"Bogdanci\"\n\n#: mk/mk_choices.py:15\nmsgid \"Bogovinje\"\nmsgstr \"Bogovinje\"\n\n#: mk/mk_choices.py:16\nmsgid \"Bosilovo\"\nmsgstr \"Bosilovo\"\n\n#: mk/mk_choices.py:17\nmsgid \"Brvenica\"\nmsgstr \"Brvenica\"\n\n#: mk/mk_choices.py:18\nmsgid \"Butel\"\nmsgstr \"Butel\"\n\n#: mk/mk_choices.py:19\nmsgid \"Valandovo\"\nmsgstr \"Valandovo\"\n\n#: mk/mk_choices.py:20\nmsgid \"Vasilevo\"\nmsgstr \"Vasilevo\"\n\n#: mk/mk_choices.py:21\nmsgid \"Vevčani\"\nmsgstr \"Vevčani\"\n\n#: mk/mk_choices.py:22\nmsgid \"Veles\"\nmsgstr \"Veles\"\n\n#: mk/mk_choices.py:23\nmsgid \"Vinica\"\nmsgstr \"Vinica\"\n\n#: mk/mk_choices.py:24\nmsgid \"Vraneštica\"\nmsgstr \"Vraneštica\"\n\n#: mk/mk_choices.py:25\nmsgid \"Vrapčište\"\nmsgstr \"Vrapčište\"\n\n#: mk/mk_choices.py:26\nmsgid \"Gazi Baba\"\nmsgstr \"Gazi Baba\"\n\n#: mk/mk_choices.py:27\nmsgid \"Gevgelija\"\nmsgstr \"Gevgelija\"\n\n#: mk/mk_choices.py:28\nmsgid \"Gostivar\"\nmsgstr \"Gostivar\"\n\n#: mk/mk_choices.py:29\nmsgid \"Gradsko\"\nmsgstr \"Gradsko\"\n\n#: mk/mk_choices.py:30\nmsgid \"Debar\"\nmsgstr \"Debar\"\n\n#: mk/mk_choices.py:31\nmsgid \"Debarca\"\nmsgstr \"Debarca\"\n\n#: mk/mk_choices.py:32\nmsgid \"Delčevo\"\nmsgstr \"Delčevo\"\n\n#: mk/mk_choices.py:33\nmsgid \"Demir Kapija\"\nmsgstr \"Demir Kapija\"\n\n#: mk/mk_choices.py:34\nmsgid \"Demir Hisar\"\nmsgstr \"Demir Hisar\"\n\n#: mk/mk_choices.py:35\nmsgid \"Dolneni\"\nmsgstr \"Dolneni\"\n\n#: mk/mk_choices.py:36\nmsgid \"Drugovo\"\nmsgstr \"Drugovo\"\n\n#: mk/mk_choices.py:37\nmsgid \"Gjorče Petrov\"\nmsgstr \"Gjorče Petrov\"\n\n#: mk/mk_choices.py:38\nmsgid \"Želino\"\nmsgstr \"Želino\"\n\n#: mk/mk_choices.py:39\nmsgid \"Zajas\"\nmsgstr \"Zajas\"\n\n#: mk/mk_choices.py:40\nmsgid \"Zelenikovo\"\nmsgstr \"Zelenikovo\"\n\n#: mk/mk_choices.py:41\nmsgid \"Zrnovci\"\nmsgstr \"Zrnovci\"\n\n#: mk/mk_choices.py:42\nmsgid \"Ilinden\"\nmsgstr \"Ilinden\"\n\n#: mk/mk_choices.py:43\nmsgid \"Jegunovce\"\nmsgstr \"Jegunovce\"\n\n#: mk/mk_choices.py:44\nmsgid \"Kavadarci\"\nmsgstr \"Kavadarci\"\n\n#: mk/mk_choices.py:45\nmsgid \"Karbinci\"\nmsgstr \"Karbinci\"\n\n#: mk/mk_choices.py:46\nmsgid \"Karpoš\"\nmsgstr \"Karpoš\"\n\n#: mk/mk_choices.py:47\nmsgid \"Kisela Voda\"\nmsgstr \"Kisela Voda\"\n\n#: mk/mk_choices.py:48\nmsgid \"Kičevo\"\nmsgstr \"Kičevo\"\n\n#: mk/mk_choices.py:49\nmsgid \"Konče\"\nmsgstr \"Konče\"\n\n#: mk/mk_choices.py:50\nmsgid \"Koćani\"\nmsgstr \"Koćani\"\n\n#: mk/mk_choices.py:51\nmsgid \"Kratovo\"\nmsgstr \"Kratovo\"\n\n#: mk/mk_choices.py:52\nmsgid \"Kriva Palanka\"\nmsgstr \"Kriva Palanka\"\n\n#: mk/mk_choices.py:53\nmsgid \"Krivogaštani\"\nmsgstr \"Krivogaštani\"\n\n#: mk/mk_choices.py:54\nmsgid \"Kruševo\"\nmsgstr \"Kruševo\"\n\n#: mk/mk_choices.py:55\nmsgid \"Kumanovo\"\nmsgstr \"Kumanovo\"\n\n#: mk/mk_choices.py:56\nmsgid \"Lipkovo\"\nmsgstr \"Lipkovo\"\n\n#: mk/mk_choices.py:57\nmsgid \"Lozovo\"\nmsgstr \"Lozovo\"\n\n#: mk/mk_choices.py:58\nmsgid \"Mavrovo i Rostuša\"\nmsgstr \"Mavrovo i Rostuša\"\n\n#: mk/mk_choices.py:59\nmsgid \"Makedonska Kamenica\"\nmsgstr \"Makedonska Kamenica\"\n\n#: mk/mk_choices.py:60\nmsgid \"Makedonski Brod\"\nmsgstr \"Makedonski Brod\"\n\n#: mk/mk_choices.py:61\nmsgid \"Mogila\"\nmsgstr \"Mogila\"\n\n#: mk/mk_choices.py:62\nmsgid \"Negotino\"\nmsgstr \"Negotino\"\n\n#: mk/mk_choices.py:63\nmsgid \"Novaci\"\nmsgstr \"Novaci\"\n\n#: mk/mk_choices.py:64\nmsgid \"Novo Selo\"\nmsgstr \"Novo Selo\"\n\n#: mk/mk_choices.py:65\nmsgid \"Oslomej\"\nmsgstr \"Oslomej\"\n\n#: mk/mk_choices.py:66\nmsgid \"Ohrid\"\nmsgstr \"Ohrid\"\n\n#: mk/mk_choices.py:67\nmsgid \"Petrovec\"\nmsgstr \"Petrovec\"\n\n#: mk/mk_choices.py:68\nmsgid \"Pehčevo\"\nmsgstr \"Pehčevo\"\n\n#: mk/mk_choices.py:69\nmsgid \"Plasnica\"\nmsgstr \"Plasnica\"\n\n#: mk/mk_choices.py:70\nmsgid \"Prilep\"\nmsgstr \"Prilep\"\n\n#: mk/mk_choices.py:71\nmsgid \"Probištip\"\nmsgstr \"Probištip\"\n\n#: mk/mk_choices.py:72\nmsgid \"Radoviš\"\nmsgstr \"Radoviš\"\n\n#: mk/mk_choices.py:73\nmsgid \"Rankovce\"\nmsgstr \"Rankovce\"\n\n#: mk/mk_choices.py:74\nmsgid \"Resen\"\nmsgstr \"Resen\"\n\n#: mk/mk_choices.py:75\nmsgid \"Rosoman\"\nmsgstr \"Rosoman\"\n\n#: mk/mk_choices.py:76\nmsgid \"Saraj\"\nmsgstr \"Saraj\"\n\n#: mk/mk_choices.py:77\nmsgid \"Sveti Nikole\"\nmsgstr \"Sveti Nikole\"\n\n#: mk/mk_choices.py:78\nmsgid \"Sopište\"\nmsgstr \"Sopište\"\n\n#: mk/mk_choices.py:79\nmsgid \"Star Dojran\"\nmsgstr \"Star Dojran\"\n\n#: mk/mk_choices.py:80\nmsgid \"Staro Nagoričane\"\nmsgstr \"Staro Nagoričane\"\n\n#: mk/mk_choices.py:81\nmsgid \"Struga\"\nmsgstr \"Struga\"\n\n#: mk/mk_choices.py:82\nmsgid \"Strumica\"\nmsgstr \"Strumica\"\n\n#: mk/mk_choices.py:83\nmsgid \"Studeničani\"\nmsgstr \"Studeničani\"\n\n#: mk/mk_choices.py:84\nmsgid \"Tearce\"\nmsgstr \"Tearce\"\n\n#: mk/mk_choices.py:85\nmsgid \"Tetovo\"\nmsgstr \"Tetovo\"\n\n#: mk/mk_choices.py:86\nmsgid \"Centar\"\nmsgstr \"Centar\"\n\n#: mk/mk_choices.py:87\nmsgid \"Centar-Župa\"\nmsgstr \"Centar-Župa\"\n\n#: mk/mk_choices.py:88\nmsgid \"Čair\"\nmsgstr \"Čair\"\n\n#: mk/mk_choices.py:89\nmsgid \"Čaška\"\nmsgstr \"Čaška\"\n\n#: mk/mk_choices.py:90\nmsgid \"Češinovo-Obleševo\"\nmsgstr \"Češinovo-Obleševo\"\n\n#: mk/mk_choices.py:91\nmsgid \"Čučer-Sandevo\"\nmsgstr \"Čučer-Sandevo\"\n\n#: mk/mk_choices.py:92\nmsgid \"Štip\"\nmsgstr \"Štip\"\n\n#: mk/mk_choices.py:93\nmsgid \"Šuto Orizari\"\nmsgstr \"Šuto Orizari\"\n\n#: mk/models.py:11\nmsgid \"Macedonian identity card number\"\nmsgstr \"馬其頓識別卡號\"\n\n#: mk/models.py:25\nmsgid \"A Macedonian municipality (2 character code)\"\nmsgstr \"\"\n\n#: mk/models.py:35\nmsgid \"Unique master citizen number (13 digits)\"\nmsgstr \"Unique master citizen number (13 碼)\"\n\n#: mx/forms.py:67\nmsgid \"Enter a valid zip code in the format XXXXX.\"\nmsgstr \"輸入格式為 XXXXX 的有效郵遞區號\"\n\n#: mx/forms.py:110\nmsgid \"Enter a valid RFC.\"\nmsgstr \"輸入有效的 RFC\"\n\n#: mx/forms.py:111\nmsgid \"Invalid checksum for RFC.\"\nmsgstr \"無效的 RFC 校驗碼\"\n\n#: mx/forms.py:191\nmsgid \"Enter a valid CURP.\"\nmsgstr \"輸入有效的CURP\"\n\n#: mx/forms.py:192\nmsgid \"Invalid checksum for CURP.\"\nmsgstr \"無效的 CURP 校驗碼\"\n\n#: mx/models.py:14\nmsgid \"Mexico state (three uppercase letters)\"\nmsgstr \"墨西哥州 (3個大寫字母)\"\n\n#: mx/models.py:27\nmsgid \"Mexico zip code\"\nmsgstr \"墨西哥的郵遞區號\"\n\n#: mx/models.py:44\nmsgid \"Mexican RFC\"\nmsgstr \"墨西哥的 RFC\"\n\n#: mx/models.py:61\nmsgid \"Mexican CURP\"\nmsgstr \"墨西哥的 CURP\"\n\n#: mx/mx_states.py:14\nmsgid \"Aguascalientes\"\nmsgstr \"阿瓜斯卡連特斯\"\n\n#: mx/mx_states.py:15\nmsgid \"Baja California\"\nmsgstr \"下加利福尼亞州\"\n\n#: mx/mx_states.py:16\nmsgid \"Baja California Sur\"\nmsgstr \"南下加利福尼亞州\"\n\n#: mx/mx_states.py:17\nmsgid \"Campeche\"\nmsgstr \"坎佩切州\"\n\n#: mx/mx_states.py:18\nmsgid \"Chihuahua\"\nmsgstr \"奇瓦瓦\"\n\n#: mx/mx_states.py:19\nmsgid \"Chiapas\"\nmsgstr \"恰帕斯州\"\n\n#: mx/mx_states.py:20\nmsgid \"Coahuila\"\nmsgstr \"科阿韋拉州\"\n\n#: mx/mx_states.py:21\nmsgid \"Colima\"\nmsgstr \"科利馬\"\n\n#: mx/mx_states.py:22\nmsgid \"Distrito Federal\"\nmsgstr \"聯邦區\"\n\n#: mx/mx_states.py:23\nmsgid \"Durango\"\nmsgstr \"杜蘭戈\"\n\n#: mx/mx_states.py:24\nmsgid \"Guerrero\"\nmsgstr \"格雷羅州\"\n\n#: mx/mx_states.py:25\nmsgid \"Guanajuato\"\nmsgstr \"瓜納華托\"\n\n#: mx/mx_states.py:26\nmsgid \"Hidalgo\"\nmsgstr \"伊達爾戈\"\n\n#: mx/mx_states.py:27\nmsgid \"Jalisco\"\nmsgstr \"哈利斯科\"\n\n#: mx/mx_states.py:28\nmsgid \"Estado de México\"\nmsgstr \"Estado de México\"\n\n#: mx/mx_states.py:29\nmsgid \"Michoacán\"\nmsgstr \"米却肯\"\n\n#: mx/mx_states.py:30\nmsgid \"Morelos\"\nmsgstr \"莫雷洛斯\"\n\n#: mx/mx_states.py:31\nmsgid \"Nayarit\"\nmsgstr \"納亞里特\"\n\n#: mx/mx_states.py:32\nmsgid \"Nuevo León\"\nmsgstr \"新萊昂\"\n\n#: mx/mx_states.py:33\nmsgid \"Oaxaca\"\nmsgstr \"瓦哈卡州\"\n\n#: mx/mx_states.py:34\nmsgid \"Puebla\"\nmsgstr \"普埃布拉\"\n\n#: mx/mx_states.py:35\nmsgid \"Querétaro\"\nmsgstr \"克雷塔羅\"\n\n#: mx/mx_states.py:36\nmsgid \"Quintana Roo\"\nmsgstr \"金塔納羅奧\"\n\n#: mx/mx_states.py:37\nmsgid \"Sinaloa\"\nmsgstr \"錫那羅亞州\"\n\n#: mx/mx_states.py:38\nmsgid \"San Luis Potosí\"\nmsgstr \"聖路易斯波托西\"\n\n#: mx/mx_states.py:39\nmsgid \"Sonora\"\nmsgstr \"索諾拉\"\n\n#: mx/mx_states.py:40\nmsgid \"Tabasco\"\nmsgstr \"塔巴斯科\"\n\n#: mx/mx_states.py:41\nmsgid \"Tamaulipas\"\nmsgstr \"塔毛利帕斯\"\n\n#: mx/mx_states.py:42\nmsgid \"Tlaxcala\"\nmsgstr \"特拉斯卡拉\"\n\n#: mx/mx_states.py:43\nmsgid \"Veracruz\"\nmsgstr \"韋拉克魯斯\"\n\n#: mx/mx_states.py:44\nmsgid \"Yucatán\"\nmsgstr \"尤卡坦\"\n\n#: mx/mx_states.py:45\nmsgid \"Zacatecas\"\nmsgstr \"薩卡特卡斯\"\n\n#: nl/forms.py:26\nmsgid \"Enter a valid postal code\"\nmsgstr \"請輸入有效的郵遞區號。\"\n\n#: nl/forms.py:82\nmsgid \"Enter a valid SoFi number\"\nmsgstr \"請輸入有效的 SoFi 號碼。\"\n\n#: nl/nl_provinces.py:4\nmsgid \"Drenthe\"\nmsgstr \"德倫特省\"\n\n#: nl/nl_provinces.py:5\nmsgid \"Flevoland\"\nmsgstr \"弗萊福蘭\"\n\n#: nl/nl_provinces.py:6\nmsgid \"Friesland\"\nmsgstr \"弗里斯蘭\"\n\n#: nl/nl_provinces.py:7\nmsgid \"Gelderland\"\nmsgstr \"吉德蘭省\"\n\n#: nl/nl_provinces.py:8\nmsgid \"Groningen\"\nmsgstr \"格羅寧根\"\n\n#: nl/nl_provinces.py:10\nmsgid \"Noord-Brabant\"\nmsgstr \"北布拉班特\"\n\n#: nl/nl_provinces.py:11\nmsgid \"Noord-Holland\"\nmsgstr \"北荷蘭\"\n\n#: nl/nl_provinces.py:12\nmsgid \"Overijssel\"\nmsgstr \"上艾瑟爾\"\n\n#: nl/nl_provinces.py:13\nmsgid \"Utrecht\"\nmsgstr \"烏特勒支\"\n\n#: nl/nl_provinces.py:14\nmsgid \"Zeeland\"\nmsgstr \"西蘭省\"\n\n#: nl/nl_provinces.py:15\nmsgid \"Zuid-Holland\"\nmsgstr \"南荷蘭\"\n\n#: no/forms.py:39\nmsgid \"Enter a valid Norwegian social security number.\"\nmsgstr \"請輸入一個有效的挪威社會保險號碼。\"\n\n#: pe/forms.py:28\nmsgid \"This field requires 8 digits.\"\nmsgstr \"這個欄位是必須是 8 位數字。\"\n\n#: pe/forms.py:56\nmsgid \"This field requires 11 digits.\"\nmsgstr \"這個欄位是必須是 11 位數字。\"\n\n#: pl/forms.py:42\nmsgid \"National Identification Number consists of 11 digits.\"\nmsgstr \"國家身份證號碼由 11 位數字值組成。\"\n\n#: pl/forms.py:43\nmsgid \"Wrong checksum for the National Identification Number.\"\nmsgstr \"國家身份證號碼校驗和錯誤。\"\n\n#: pl/forms.py:79\nmsgid \"National ID Card Number consists of 3 letters and 6 digits.\"\nmsgstr \"\"\n\n#: pl/forms.py:80\nmsgid \"Wrong checksum for the National ID Card Number.\"\nmsgstr \"錯誤的國家ID卡號校驗碼\"\n\n#: pl/forms.py:131\nmsgid \"\"\n\"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or \"\n\"XXXXXXXXXX.\"\nmsgstr \"\"\n\"輸入格式為 XXX-XXX-XX-XX, XXX-XX-XX-XXX 或 XXXXXXXXXX 的傳真號碼區域(NIP)\"\n\n#: pl/forms.py:132\nmsgid \"Wrong checksum for the Tax Number (NIP).\"\nmsgstr \"税號（NIP）校驗和錯誤。\"\n\n#: pl/forms.py:171\nmsgid \"National Business Register Number (REGON) consists of 9 or 14 digits.\"\nmsgstr \"國家身分證號碼必須由 9 或 14 位數組成。\"\n\n#: pl/forms.py:172\nmsgid \"Wrong checksum for the National Business Register Number (REGON).\"\nmsgstr \"國家商標註冊號碼（REGON）由 7 位或 9 位数字組成。\"\n\n#: pl/forms.py:212\nmsgid \"Enter a postal code in the format XX-XXX.\"\nmsgstr \"用 XX-XXX 的格式輸入郵遞區號。\"\n\n#: pl/pl_voivodeships.py:8\nmsgid \"Lower Silesia\"\nmsgstr \"下西里西亞省\"\n\n#: pl/pl_voivodeships.py:9\nmsgid \"Kuyavia-Pomerania\"\nmsgstr \"庫亞維-濱海省\"\n\n#: pl/pl_voivodeships.py:10\nmsgid \"Lublin\"\nmsgstr \"盧布林\"\n\n#: pl/pl_voivodeships.py:11\nmsgid \"Lubusz\"\nmsgstr \"盧布斯卡省\"\n\n#: pl/pl_voivodeships.py:12\nmsgid \"Lodz\"\nmsgstr \"洛次\"\n\n#: pl/pl_voivodeships.py:13\nmsgid \"Lesser Poland\"\nmsgstr \"小波蘭省\"\n\n#: pl/pl_voivodeships.py:14\nmsgid \"Masovia\"\nmsgstr \"瑪佐維亞\"\n\n#: pl/pl_voivodeships.py:15\nmsgid \"Opole\"\nmsgstr \"奧波萊\"\n\n#: pl/pl_voivodeships.py:16\nmsgid \"Subcarpatia\"\nmsgstr \"外喀爾巴阡州\"\n\n#: pl/pl_voivodeships.py:17\nmsgid \"Podlasie\"\nmsgstr \"波德拉謝\"\n\n#: pl/pl_voivodeships.py:18\nmsgid \"Pomerania\"\nmsgstr \"波美拉尼亞\"\n\n#: pl/pl_voivodeships.py:19\nmsgid \"Silesia\"\nmsgstr \"西利西亞\"\n\n#: pl/pl_voivodeships.py:20\nmsgid \"Swietokrzyskie\"\nmsgstr \"聖十字省\"\n\n#: pl/pl_voivodeships.py:21\nmsgid \"Warmia-Masuria\"\nmsgstr \"瓦爾米亞-馬祖里\"\n\n#: pl/pl_voivodeships.py:22\nmsgid \"Greater Poland\"\nmsgstr \"大波蘭\"\n\n#: pl/pl_voivodeships.py:23\nmsgid \"West Pomerania\"\nmsgstr \"西波美拉尼亞省\"\n\n#: pt/forms.py:19\nmsgid \"Enter a zip code in the format XXXX-XXX.\"\nmsgstr \"用 XXXXX-XXX 的格式輸入郵遞區號。\"\n\n#: pt/forms.py:39\nmsgid \"Phone numbers must have 9 digits, or start by + or 00.\"\nmsgstr \"電話號碼必須有 9 位數，或以 + 或 00 開頭。\"\n\n#: ro/forms.py:22\nmsgid \"Enter a valid CIF.\"\nmsgstr \"輸入有效的 CIF。\"\n\n#: ro/forms.py:59\nmsgid \"Enter a valid CNP.\"\nmsgstr \"輸入有效的 CNP。\"\n\n#: ro/forms.py:143\nmsgid \"Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format\"\nmsgstr \"以 ROXX-XXXX-XXXX-XXXX-XXXX-XXXX 的格式輸入一個有效的 IBAN。\"\n\n#: ro/forms.py:175\nmsgid \"Phone numbers must be in XXXX-XXXXXX format.\"\nmsgstr \"電話號碼必須是 XXXX-XXXXXX 格式。\"\n\n#: ro/forms.py:200\nmsgid \"Enter a valid postal code in the format XXXXXX\"\nmsgstr \"用 XXXXXX 的格式輸入郵遞區號。\"\n\n#: ru/forms.py:37\nmsgid \"Enter a postal code in the format XXXXXX.\"\nmsgstr \"輸入格式為 XXXXXX 有效郵遞區號。\"\n\n#: ru/forms.py:50\nmsgid \"Enter a passport number in the format XXXX XXXXXX.\"\nmsgstr \"輸入格式為 XXXX XXXXXX 的護照號碼。\"\n\n#: ru/forms.py:63\nmsgid \"Enter a passport number in the format XX XXXXXXX.\"\nmsgstr \"輸入格式為 XX XXXXXXX 的護照號碼。\"\n\n#: ru/ru_regions.py:10\nmsgid \"Central Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:11\nmsgid \"South Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:12\nmsgid \"North-West Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:13\nmsgid \"Far-East Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:14\nmsgid \"Siberian Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:15\nmsgid \"Ural Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:16\nmsgid \"Privolzhsky Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:17\nmsgid \"North-Caucasian Federal County\"\nmsgstr \"\"\n\n#: ru/ru_regions.py:21\nmsgid \"Moskva\"\nmsgstr \"莫斯科\"\n\n#: ru/ru_regions.py:22\nmsgid \"Saint-Peterburg\"\nmsgstr \"聖彼德斯堡\"\n\n#: ru/ru_regions.py:23\nmsgid \"Moskovskaya oblast'\"\nmsgstr \"Moskovskaya 區\"\n\n#: ru/ru_regions.py:24\nmsgid \"Adygeya, Respublika\"\nmsgstr \"Adygeya, Respublika\"\n\n#: ru/ru_regions.py:25\nmsgid \"Bashkortostan, Respublika\"\nmsgstr \"Bashkortostan, Respublika\"\n\n#: ru/ru_regions.py:26\nmsgid \"Buryatia, Respublika\"\nmsgstr \"Buryatia, Respublika\"\n\n#: ru/ru_regions.py:27\nmsgid \"Altay, Respublika\"\nmsgstr \"Altay, Respublika\"\n\n#: ru/ru_regions.py:28\nmsgid \"Dagestan, Respublika\"\nmsgstr \"Dagestan, Respublika\"\n\n#: ru/ru_regions.py:29\nmsgid \"Ingushskaya Respublika\"\nmsgstr \"Ingushskaya Respublika\"\n\n#: ru/ru_regions.py:30\nmsgid \"Kabardino-Balkarskaya Respublika\"\nmsgstr \"Kabardino-Balkarskaya Respublika\"\n\n#: ru/ru_regions.py:31\nmsgid \"Kalmykia, Respublika\"\nmsgstr \"Kalmykia, Respublika\"\n\n#: ru/ru_regions.py:32\nmsgid \"Karachaevo-Cherkesskaya Respublika\"\nmsgstr \"Karachaevo-Cherkesskaya Respublika\"\n\n#: ru/ru_regions.py:33\nmsgid \"Karelia, Respublika\"\nmsgstr \"Karelia, Respublika\"\n\n#: ru/ru_regions.py:34\nmsgid \"Komi, Respublika\"\nmsgstr \"Komi, Respublika\"\n\n#: ru/ru_regions.py:35\nmsgid \"Mariy Ehl, Respublika\"\nmsgstr \"Mariy Ehl, Respublika\"\n\n#: ru/ru_regions.py:36\nmsgid \"Mordovia, Respublika\"\nmsgstr \"Mordovia, Respublika\"\n\n#: ru/ru_regions.py:37\nmsgid \"Sakha, Respublika (Yakutiya)\"\nmsgstr \"Sakha, Respublika (Yakutiya)\"\n\n#: ru/ru_regions.py:38\nmsgid \"Severnaya Osetia, Respublika (Alania)\"\nmsgstr \"Severnaya Osetia, Respublika (Alania)\"\n\n#: ru/ru_regions.py:39\nmsgid \"Tatarstan, Respublika\"\nmsgstr \"Tatarstan, Respublika\"\n\n#: ru/ru_regions.py:40\nmsgid \"Tyva, Respublika (Tuva)\"\nmsgstr \"Tyva, Respublika (Tuva)\"\n\n#: ru/ru_regions.py:41\nmsgid \"Udmurtskaya Respublika\"\nmsgstr \"Udmurtskaya Respublika\"\n\n#: ru/ru_regions.py:42\nmsgid \"Khakassiya, Respublika\"\nmsgstr \"Khakassiya, Respublika\"\n\n#: ru/ru_regions.py:43\nmsgid \"Chechenskaya Respublika\"\nmsgstr \"Chechenskaya Respublika\"\n\n#: ru/ru_regions.py:44\nmsgid \"Chuvashskaya Respublika\"\nmsgstr \"Chuvashskaya Respublika\"\n\n#: ru/ru_regions.py:45\nmsgid \"Altayskiy Kray\"\nmsgstr \"Altayskiy Kray\"\n\n#: ru/ru_regions.py:46\nmsgid \"Zabaykalskiy Kray\"\nmsgstr \"Zabaykalskiy Kray\"\n\n#: ru/ru_regions.py:47\nmsgid \"Kamchatskiy Kray\"\nmsgstr \"Kamchatskiy Kray\"\n\n#: ru/ru_regions.py:48\nmsgid \"Krasnodarskiy Kray\"\nmsgstr \"Krasnodarskiy Kray\"\n\n#: ru/ru_regions.py:49\nmsgid \"Krasnoyarskiy Kray\"\nmsgstr \"Krasnoyarskiy Kray\"\n\n#: ru/ru_regions.py:50\nmsgid \"Permskiy Kray\"\nmsgstr \"Permskiy Kray\"\n\n#: ru/ru_regions.py:51\nmsgid \"Primorskiy Kray\"\nmsgstr \"Primorskiy Kray\"\n\n#: ru/ru_regions.py:52\nmsgid \"Stavropol'siyy Kray\"\nmsgstr \"Stavropol'siyy Kray\"\n\n#: ru/ru_regions.py:53\nmsgid \"Khabarovskiy Kray\"\nmsgstr \"Khabarovskiy Kray\"\n\n#: ru/ru_regions.py:54\nmsgid \"Amurskaya oblast'\"\nmsgstr \"Amurskaya 區\"\n\n#: ru/ru_regions.py:55\nmsgid \"Arkhangel'skaya oblast'\"\nmsgstr \"Arkhangel'skaya 區\"\n\n#: ru/ru_regions.py:56\nmsgid \"Astrakhanskaya oblast'\"\nmsgstr \"Astrakhanskaya 區\"\n\n#: ru/ru_regions.py:57\nmsgid \"Belgorodskaya oblast'\"\nmsgstr \"Belgorodskaya 區\"\n\n#: ru/ru_regions.py:58\nmsgid \"Bryanskaya oblast'\"\nmsgstr \"Bryanskaya 區\"\n\n#: ru/ru_regions.py:59\nmsgid \"Vladimirskaya oblast'\"\nmsgstr \"Vladimirskaya 區\"\n\n#: ru/ru_regions.py:60\nmsgid \"Volgogradskaya oblast'\"\nmsgstr \"Volgogradskaya 區\"\n\n#: ru/ru_regions.py:61\nmsgid \"Vologodskaya oblast'\"\nmsgstr \"Vologodskaya 區\"\n\n#: ru/ru_regions.py:62\nmsgid \"Voronezhskaya oblast'\"\nmsgstr \"Voronezhskaya 區\"\n\n#: ru/ru_regions.py:63\nmsgid \"Ivanovskaya oblast'\"\nmsgstr \"Ivanovskaya 區\"\n\n#: ru/ru_regions.py:64\nmsgid \"Irkutskaya oblast'\"\nmsgstr \"Irkutskaya 區\"\n\n#: ru/ru_regions.py:65\nmsgid \"Kaliningradskaya oblast'\"\nmsgstr \"Kaliningradskaya 區\"\n\n#: ru/ru_regions.py:66\nmsgid \"Kaluzhskaya oblast'\"\nmsgstr \"Kaluzhskaya 區\"\n\n#: ru/ru_regions.py:67\nmsgid \"Kemerovskaya oblast'\"\nmsgstr \"Kemerovskaya 區\"\n\n#: ru/ru_regions.py:68\nmsgid \"Kirovskaya oblast'\"\nmsgstr \"Kirovskaya 區\"\n\n#: ru/ru_regions.py:69\nmsgid \"Kostromskaya oblast'\"\nmsgstr \"Kostromskaya 區\"\n\n#: ru/ru_regions.py:70\nmsgid \"Kurganskaya oblast'\"\nmsgstr \"Kurganskaya 區\"\n\n#: ru/ru_regions.py:71\nmsgid \"Kurskaya oblast'\"\nmsgstr \"Kurskaya 區\"\n\n#: ru/ru_regions.py:72\nmsgid \"Leningradskaya oblast'\"\nmsgstr \"Leningradskaya 區\"\n\n#: ru/ru_regions.py:73\nmsgid \"Lipeckaya oblast'\"\nmsgstr \"Lipeckaya 區\"\n\n#: ru/ru_regions.py:74\nmsgid \"Magadanskaya oblast'\"\nmsgstr \"Magadanskaya 區\"\n\n#: ru/ru_regions.py:75\nmsgid \"Murmanskaya oblast'\"\nmsgstr \"Murmanskaya 區\"\n\n#: ru/ru_regions.py:76\nmsgid \"Nizhegorodskaja oblast'\"\nmsgstr \"Nizhegorodskaja 區\"\n\n#: ru/ru_regions.py:77\nmsgid \"Novgorodskaya oblast'\"\nmsgstr \"Novgorodskaya 區\"\n\n#: ru/ru_regions.py:78\nmsgid \"Novosibirskaya oblast'\"\nmsgstr \"Novosibirskaya 區\"\n\n#: ru/ru_regions.py:79\nmsgid \"Omskaya oblast'\"\nmsgstr \"Omskaya 區\"\n\n#: ru/ru_regions.py:80\nmsgid \"Orenburgskaya oblast'\"\nmsgstr \"Orenburgskaya 區\"\n\n#: ru/ru_regions.py:81\nmsgid \"Orlovskaya oblast'\"\nmsgstr \"Orlovskaya 區\"\n\n#: ru/ru_regions.py:82\nmsgid \"Penzenskaya oblast'\"\nmsgstr \"Penzenskaya 區\"\n\n#: ru/ru_regions.py:83\nmsgid \"Pskovskaya oblast'\"\nmsgstr \"Pskovskaya 區\"\n\n#: ru/ru_regions.py:84\nmsgid \"Rostovskaya oblast'\"\nmsgstr \"Rostovskaya 區\"\n\n#: ru/ru_regions.py:85\nmsgid \"Rjazanskaya oblast'\"\nmsgstr \"Rjazanskaya 區\"\n\n#: ru/ru_regions.py:86\nmsgid \"Samarskaya oblast'\"\nmsgstr \"Samarskaya 區\"\n\n#: ru/ru_regions.py:87\nmsgid \"Saratovskaya oblast'\"\nmsgstr \"Saratovskaya 區\"\n\n#: ru/ru_regions.py:88\nmsgid \"Sakhalinskaya oblast'\"\nmsgstr \"Sakhalinskaya 區\"\n\n#: ru/ru_regions.py:89\nmsgid \"Sverdlovskaya oblast'\"\nmsgstr \"Sverdlovskaya 區\"\n\n#: ru/ru_regions.py:90\nmsgid \"Smolenskaya oblast'\"\nmsgstr \"Smolenskaya 區\"\n\n#: ru/ru_regions.py:91\nmsgid \"Tambovskaya oblast'\"\nmsgstr \"Tambovskaya 區\"\n\n#: ru/ru_regions.py:92\nmsgid \"Tverskaya oblast'\"\nmsgstr \"Tverskaya 區\"\n\n#: ru/ru_regions.py:93\nmsgid \"Tomskaya oblast'\"\nmsgstr \"Tomskaya 區\"\n\n#: ru/ru_regions.py:94\nmsgid \"Tul'skaya oblast'\"\nmsgstr \"Tul'skaya 區\"\n\n#: ru/ru_regions.py:95\nmsgid \"Tyumenskaya oblast'\"\nmsgstr \"Tyumenskaya 區\"\n\n#: ru/ru_regions.py:96\nmsgid \"Ul'ianovskaya oblast'\"\nmsgstr \"Ul'ianovskaya 區\"\n\n#: ru/ru_regions.py:97\nmsgid \"Chelyabinskaya oblast'\"\nmsgstr \"Chelyabinskaya 區\"\n\n#: ru/ru_regions.py:98\nmsgid \"Yaroslavskaya oblast'\"\nmsgstr \"Yaroslavskaya 區\"\n\n#: ru/ru_regions.py:99\nmsgid \"Evreyskaya avtonomnaja oblast'\"\nmsgstr \"Evreyskaya avtonomnaja 區\"\n\n#: ru/ru_regions.py:100\nmsgid \"Neneckiy autonomnyy okrug\"\nmsgstr \"Neneckiy autonomnyy okrug\"\n\n#: ru/ru_regions.py:101\nmsgid \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\nmsgstr \"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\"\n\n#: ru/ru_regions.py:102\nmsgid \"Chukotskiy avtonomnyy okrug\"\nmsgstr \"Chukotskiy avtonomnyy okrug\"\n\n#: ru/ru_regions.py:103\nmsgid \"Yamalo-Neneckiy avtonomnyy okrug\"\nmsgstr \"Yamalo-Neneckiy avtonomnyy okrug\"\n\n#: se/forms.py:54\nmsgid \"Enter a valid Swedish organisation number.\"\nmsgstr \"輸入有效的 SoFi 號碼\"\n\n#: se/forms.py:111\nmsgid \"Enter a valid Swedish personal identity number.\"\nmsgstr \"請輸入一個有效的芬蘭社會保險號碼。\"\n\n#: se/forms.py:112\nmsgid \"Co-ordination numbers are not allowed.\"\nmsgstr \"請勿輸入配位數。\"\n\n#: se/forms.py:154\nmsgid \"Enter a Swedish postal code in the format XXXXX.\"\nmsgstr \"用 XX-XXX 的格式輸入郵遞區號。\"\n\n#: se/se_counties.py:16\nmsgid \"Stockholm\"\nmsgstr \"斯德哥爾摩省\"\n\n#: se/se_counties.py:17\nmsgid \"Västerbotten\"\nmsgstr \"西博滕省\"\n\n#: se/se_counties.py:18\nmsgid \"Norrbotten\"\nmsgstr \"北博滕省\"\n\n#: se/se_counties.py:19\nmsgid \"Uppsala\"\nmsgstr \"烏普薩拉省\"\n\n#: se/se_counties.py:20\nmsgid \"Södermanland\"\nmsgstr \"南曼蘭省\"\n\n#: se/se_counties.py:21\nmsgid \"Östergötland\"\nmsgstr \"東約特蘭省\"\n\n#: se/se_counties.py:22\nmsgid \"Jönköping\"\nmsgstr \"延雪平省\"\n\n#: se/se_counties.py:23\nmsgid \"Kronoberg\"\nmsgstr \"克魯努貝里省\"\n\n#: se/se_counties.py:24\nmsgid \"Kalmar\"\nmsgstr \"卡爾馬\"\n\n#: se/se_counties.py:25\nmsgid \"Gotland\"\nmsgstr \"哥德蘭省\"\n\n#: se/se_counties.py:26\nmsgid \"Blekinge\"\nmsgstr \"布萊金厄省\"\n\n#: se/se_counties.py:27\nmsgid \"Skåne\"\nmsgstr \"斯科訥省\"\n\n#: se/se_counties.py:28\nmsgid \"Halland\"\nmsgstr \"哈蘭省\"\n\n#: se/se_counties.py:29\nmsgid \"Västra Götaland\"\nmsgstr \"西約塔蘭省\"\n\n#: se/se_counties.py:30\nmsgid \"Värmland\"\nmsgstr \"韋姆蘭省\"\n\n#: se/se_counties.py:31\nmsgid \"Örebro\"\nmsgstr \"厄勒布魯\"\n\n#: se/se_counties.py:32\nmsgid \"Västmanland\"\nmsgstr \"西曼蘭省\"\n\n#: se/se_counties.py:33\nmsgid \"Dalarna\"\nmsgstr \"達拉納省\"\n\n#: se/se_counties.py:34\nmsgid \"Gävleborg\"\nmsgstr \"耶夫勒堡省\"\n\n#: se/se_counties.py:35\nmsgid \"Västernorrland\"\nmsgstr \"西諾爾蘭省\"\n\n#: se/se_counties.py:36\nmsgid \"Jämtland\"\nmsgstr \"耶姆特蘭省\"\n\n#: si/forms.py:25\nmsgid \"The first 7 digits of the EMSO must represent a valid past date.\"\nmsgstr \"EMSO的前7碼必須代表一個有效的過去日期\"\n\n#: si/forms.py:26\nmsgid \"The EMSO is not valid.\"\nmsgstr \"EMSO 無效。\"\n\n#: si/forms.py:86\nmsgid \"Enter a valid tax number in form SIXXXXXXXX\"\nmsgstr \"輸入有效的傳真號碼如SIXXXXXXXX\"\n\n#: si/forms.py:151\nmsgid \"Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.\"\nmsgstr \"輸入電話號碼如 +386XXXXXXXX 或 0XXXXXXXX。\"\n\n#: sk/sk_districts.py:8\nmsgid \"Banska Bystrica\"\nmsgstr \"班斯卡·比斯特理察\"\n\n#: sk/sk_districts.py:9\nmsgid \"Banska Stiavnica\"\nmsgstr \"斯洛伐克\"\n\n#: sk/sk_districts.py:10\nmsgid \"Bardejov\"\nmsgstr \"巴爾傑約夫\"\n\n#: sk/sk_districts.py:11\nmsgid \"Banovce nad Bebravou\"\nmsgstr \"巴諾維採\"\n\n#: sk/sk_districts.py:12\nmsgid \"Brezno\"\nmsgstr \"佈雷日諾\"\n\n#: sk/sk_districts.py:13\nmsgid \"Bratislava I\"\nmsgstr \"布拉提斯拉瓦 I\"\n\n#: sk/sk_districts.py:14\nmsgid \"Bratislava II\"\nmsgstr \"布拉提斯拉瓦 II\"\n\n#: sk/sk_districts.py:15\nmsgid \"Bratislava III\"\nmsgstr \"布拉提斯拉瓦 III\"\n\n#: sk/sk_districts.py:16\nmsgid \"Bratislava IV\"\nmsgstr \"布拉提斯拉瓦 IV\"\n\n#: sk/sk_districts.py:17\nmsgid \"Bratislava V\"\nmsgstr \"布拉提斯拉瓦 V\"\n\n#: sk/sk_districts.py:18\nmsgid \"Bytca\"\nmsgstr \"比特察\"\n\n#: sk/sk_districts.py:19\nmsgid \"Cadca\"\nmsgstr \"恰德察\"\n\n#: sk/sk_districts.py:20\nmsgid \"Detva\"\nmsgstr \"德特瓦\"\n\n#: sk/sk_districts.py:21\nmsgid \"Dolny Kubin\"\nmsgstr \"下庫賓\"\n\n#: sk/sk_districts.py:22\nmsgid \"Dunajska Streda\"\nmsgstr \"多瑙-斯特雷達\"\n\n#: sk/sk_districts.py:23\nmsgid \"Galanta\"\nmsgstr \"加蘭塔\"\n\n#: sk/sk_districts.py:24\nmsgid \"Gelnica\"\nmsgstr \"格爾尼察\"\n\n#: sk/sk_districts.py:25\nmsgid \"Hlohovec\"\nmsgstr \"赫洛霍維克\"\n\n#: sk/sk_districts.py:26\nmsgid \"Humenne\"\nmsgstr \"胡門內\"\n\n#: sk/sk_districts.py:27\nmsgid \"Ilava\"\nmsgstr \"伊拉瓦\"\n\n#: sk/sk_districts.py:28\nmsgid \"Kezmarok\"\nmsgstr \"科日馬諾克\"\n\n#: sk/sk_districts.py:29\nmsgid \"Komarno\"\nmsgstr \"科馬爾諾\"\n\n#: sk/sk_districts.py:30\nmsgid \"Kosice I\"\nmsgstr \"科希策 I\"\n\n#: sk/sk_districts.py:31\nmsgid \"Kosice II\"\nmsgstr \"科希策 II\"\n\n#: sk/sk_districts.py:32\nmsgid \"Kosice III\"\nmsgstr \"科希策 III\"\n\n#: sk/sk_districts.py:33\nmsgid \"Kosice IV\"\nmsgstr \"科希策 IV\"\n\n#: sk/sk_districts.py:34\nmsgid \"Kosice - okolie\"\nmsgstr \"科希策郊區\"\n\n#: sk/sk_districts.py:35\nmsgid \"Krupina\"\nmsgstr \"克魯皮納\"\n\n#: sk/sk_districts.py:36\nmsgid \"Kysucke Nove Mesto\"\nmsgstr \"庫舒基-新梅斯托\"\n\n#: sk/sk_districts.py:37\nmsgid \"Levice\"\nmsgstr \"勒維採\"\n\n#: sk/sk_districts.py:38\nmsgid \"Levoca\"\nmsgstr \"利沃察\"\n\n#: sk/sk_districts.py:39\nmsgid \"Liptovsky Mikulas\"\nmsgstr \"利普托夫-米庫拉什\"\n\n#: sk/sk_districts.py:40\nmsgid \"Lucenec\"\nmsgstr \"盧採內克\"\n\n#: sk/sk_districts.py:41\nmsgid \"Malacky\"\nmsgstr \"馬拉基\"\n\n#: sk/sk_districts.py:42\nmsgid \"Martin\"\nmsgstr \"馬丁\"\n\n#: sk/sk_districts.py:43\nmsgid \"Medzilaborce\"\nmsgstr \"梅捷拉博採\"\n\n#: sk/sk_districts.py:44\nmsgid \"Michalovce\"\nmsgstr \"米海洛夫策\"\n\n#: sk/sk_districts.py:45\nmsgid \"Myjava\"\nmsgstr \"米亞瓦\"\n\n#: sk/sk_districts.py:46\nmsgid \"Namestovo\"\nmsgstr \"納梅斯托沃\"\n\n#: sk/sk_districts.py:47\nmsgid \"Nitra\"\nmsgstr \"尼特拉\"\n\n#: sk/sk_districts.py:48\nmsgid \"Nove Mesto nad Vahom\"\nmsgstr \"新梅斯托\"\n\n#: sk/sk_districts.py:49\nmsgid \"Nove Zamky\"\nmsgstr \"新紮姆基\"\n\n#: sk/sk_districts.py:50\nmsgid \"Partizanske\"\nmsgstr \"帕蒂桑斯克\"\n\n#: sk/sk_districts.py:51\nmsgid \"Pezinok\"\nmsgstr \"佩茲諾克\"\n\n#: sk/sk_districts.py:52\nmsgid \"Piestany\"\nmsgstr \"皮爾斯恰尼\"\n\n#: sk/sk_districts.py:53\nmsgid \"Poltar\"\nmsgstr \"波塔爾\"\n\n#: sk/sk_districts.py:54\nmsgid \"Poprad\"\nmsgstr \"波普拉德\"\n\n#: sk/sk_districts.py:55\nmsgid \"Povazska Bystrica\"\nmsgstr \"瓦赫河畔比斯特里察\"\n\n#: sk/sk_districts.py:56\nmsgid \"Presov\"\nmsgstr \"普雷紹夫\"\n\n#: sk/sk_districts.py:57\nmsgid \"Prievidza\"\nmsgstr \"普列維扎\"\n\n#: sk/sk_districts.py:58\nmsgid \"Puchov\"\nmsgstr \"普霍夫\"\n\n#: sk/sk_districts.py:59\nmsgid \"Revuca\"\nmsgstr \"雷烏察\"\n\n#: sk/sk_districts.py:60\nmsgid \"Rimavska Sobota\"\nmsgstr \"里馬夫斯卡-索博塔\"\n\n#: sk/sk_districts.py:61\nmsgid \"Roznava\"\nmsgstr \"羅日納瓦\"\n\n#: sk/sk_districts.py:62\nmsgid \"Ruzomberok\"\nmsgstr \"魯容貝羅克\"\n\n#: sk/sk_districts.py:63\nmsgid \"Sabinov\"\nmsgstr \"薩比諾夫\"\n\n#: sk/sk_districts.py:64\nmsgid \"Senec\"\nmsgstr \"塞內克\"\n\n#: sk/sk_districts.py:65\nmsgid \"Senica\"\nmsgstr \"塞尼察\"\n\n#: sk/sk_districts.py:66\nmsgid \"Skalica\"\nmsgstr \"斯卡利察\"\n\n#: sk/sk_districts.py:67\nmsgid \"Snina\"\nmsgstr \"斯尼納\"\n\n#: sk/sk_districts.py:68\nmsgid \"Sobrance\"\nmsgstr \"索布蘭策\"\n\n#: sk/sk_districts.py:69\nmsgid \"Spisska Nova Ves\"\nmsgstr \"斯皮什斯卡新村\"\n\n#: sk/sk_districts.py:70\nmsgid \"Stara Lubovna\"\nmsgstr \"盧博夫納\"\n\n#: sk/sk_districts.py:71\nmsgid \"Stropkov\"\nmsgstr \"斯特羅普科夫\"\n\n#: sk/sk_districts.py:72\nmsgid \"Svidnik\"\nmsgstr \"斯維德尼克\"\n\n#: sk/sk_districts.py:73\nmsgid \"Sala\"\nmsgstr \"薩拉\"\n\n#: sk/sk_districts.py:74\nmsgid \"Topolcany\"\nmsgstr \"托波爾卡尼\"\n\n#: sk/sk_districts.py:75\nmsgid \"Trebisov\"\nmsgstr \"特雷比紹夫\"\n\n#: sk/sk_districts.py:76\nmsgid \"Trencin\"\nmsgstr \"特倫欽\"\n\n#: sk/sk_districts.py:77\nmsgid \"Trnava\"\nmsgstr \"特爾納瓦\"\n\n#: sk/sk_districts.py:78\nmsgid \"Turcianske Teplice\"\nmsgstr \"特普利採\"\n\n#: sk/sk_districts.py:79\nmsgid \"Tvrdosin\"\nmsgstr \"圖多辛\"\n\n#: sk/sk_districts.py:80\nmsgid \"Velky Krtis\"\nmsgstr \"大克爾季什\"\n\n#: sk/sk_districts.py:81\nmsgid \"Vranov nad Toplou\"\nmsgstr \"弗拉諾夫\"\n\n#: sk/sk_districts.py:82\nmsgid \"Zlate Moravce\"\nmsgstr \"莫拉維採\"\n\n#: sk/sk_districts.py:83\nmsgid \"Zvolen\"\nmsgstr \"茲沃倫\"\n\n#: sk/sk_districts.py:84\nmsgid \"Zarnovica\"\nmsgstr \"扎諾維採\"\n\n#: sk/sk_districts.py:85\nmsgid \"Ziar nad Hronom\"\nmsgstr \"日阿爾\"\n\n#: sk/sk_districts.py:86\nmsgid \"Zilina\"\nmsgstr \"日利纳\"\n\n#: sk/sk_regions.py:8\nmsgid \"Banska Bystrica region\"\nmsgstr \"班斯卡·比斯特理察州\"\n\n#: sk/sk_regions.py:9\nmsgid \"Bratislava region\"\nmsgstr \"布拉提斯拉瓦州\"\n\n#: sk/sk_regions.py:10\nmsgid \"Kosice region\"\nmsgstr \"科希策州\"\n\n#: sk/sk_regions.py:11\nmsgid \"Nitra region\"\nmsgstr \"尼特拉州\"\n\n#: sk/sk_regions.py:12\nmsgid \"Presov region\"\nmsgstr \"普列索夫州\"\n\n#: sk/sk_regions.py:13\nmsgid \"Trencin region\"\nmsgstr \"特倫欽州\"\n\n#: sk/sk_regions.py:14\nmsgid \"Trnava region\"\nmsgstr \"特爾納瓦州\"\n\n#: sk/sk_regions.py:15\nmsgid \"Zilina region\"\nmsgstr \"日利納州\"\n\n#: tr/forms.py:21\nmsgid \"Enter a postal code in the format XXXXX.\"\nmsgstr \"用 XX-XXX 的格式輸入郵遞區號。\"\n\n#: tr/forms.py:42\nmsgid \"Phone numbers must be in 0XXX XXX XXXX format.\"\nmsgstr \"電話號碼必須是 XXXX-XXXXXX 格式。\"\n\n#: tr/forms.py:69\nmsgid \"Enter a valid Turkish Identification number.\"\nmsgstr \"請輸入一個有效的土耳其身份證號碼。\"\n\n#: tr/forms.py:70\nmsgid \"Turkish Identification number must be 11 digits.\"\nmsgstr \"國家身份證號碼必須由 11 位數字值組成。\"\n\n#: us/forms.py:21\nmsgid \"Enter a zip code in the format XXXXX or XXXXX-XXXX.\"\nmsgstr \"以 XXXXX 或 XXXXX-XXXX 的格式輸入一個郵遞區號。\"\n\n#: us/forms.py:59\nmsgid \"Enter a valid U.S. Social Security number in XXX-XX-XXXX format.\"\nmsgstr \"以 XXX-XX-XXXX 的格式輸入一有效的美国身份證字號。\"\n\n#: us/forms.py:92\nmsgid \"Enter a U.S. state or territory.\"\nmsgstr \"輸入美國州名。\"\n\n#: us/models.py:8\nmsgid \"U.S. state (two uppercase letters)\"\nmsgstr \"美國州名 (兩個大寫字母)\"\n\n#: us/models.py:17\nmsgid \"U.S. postal code (two uppercase letters)\"\nmsgstr \"美國郵遞區號 (兩個大寫字母)\"\n\n#: us/models.py:26\nmsgid \"Phone number\"\nmsgstr \"電話號碼\"\n\n#: uy/forms.py:29\nmsgid \"Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.\"\nmsgstr \"以 XX-XXXXXXXX-X 或 XXXXXXXXXXXX 的格式输入一個有效的 CUIT。\"\n\n#: uy/forms.py:31\nmsgid \"Enter a valid CI number.\"\nmsgstr \"輸入有效的 CI 號碼。\"\n\n#: za/forms.py:22\nmsgid \"Enter a valid South African ID number\"\nmsgstr \"請輸入一個有效的南非身份證號碼。\"\n\n#: za/forms.py:56\nmsgid \"Enter a valid South African postal code\"\nmsgstr \"輸入一個有效的南非郵遞區號。\"\n\n#: za/za_provinces.py:4\nmsgid \"Eastern Cape\"\nmsgstr \"東開普省\"\n\n#: za/za_provinces.py:5\nmsgid \"Free State\"\nmsgstr \"自由邦省\"\n\n#: za/za_provinces.py:6\nmsgid \"Gauteng\"\nmsgstr \"豪登省\"\n\n#: za/za_provinces.py:7\nmsgid \"KwaZulu-Natal\"\nmsgstr \"誇祖魯-納塔爾省\"\n\n#: za/za_provinces.py:8\nmsgid \"Limpopo\"\nmsgstr \"林波波省\"\n\n#: za/za_provinces.py:9\nmsgid \"Mpumalanga\"\nmsgstr \"普馬蘭加省\"\n\n#: za/za_provinces.py:10\nmsgid \"Northern Cape\"\nmsgstr \"北開普省\"\n\n#: za/za_provinces.py:11\nmsgid \"North West\"\nmsgstr \"西北省\"\n\n#: za/za_provinces.py:12\nmsgid \"Western Cape\"\nmsgstr \"西開普省\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/mk/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/mk/forms.py",
    "content": "from __future__ import absolute_import, unicode_literals\n\nimport datetime\n\nfrom django.core.validators import EMPTY_VALUES\nfrom django.forms import ValidationError\nfrom django.forms.fields import RegexField, Select\nfrom django.utils.translation import ugettext_lazy as _\n\nfrom django.contrib.localflavor.mk.mk_choices import MK_MUNICIPALITIES\n\n\nclass MKIdentityCardNumberField(RegexField):\n    \"\"\"\n    A Macedonian ID card number. Accepts both old and new format.\n    \"\"\"\n    default_error_messages = {\n        'invalid': _('Identity card numbers must contain'\n                     ' either 4 to 7 digits or an uppercase letter and 7 digits.'),\n    }\n\n    def __init__(self, *args, **kwargs):\n        kwargs['min_length'] = None\n        kwargs['max_length'] = 8\n        regex = r'(^[A-Z]{1}\\d{7}$)|(^\\d{4,7}$)'\n        super(MKIdentityCardNumberField, self).__init__(regex, *args, **kwargs)\n\n\nclass MKMunicipalitySelect(Select):\n    \"\"\"\n    A form ``Select`` widget that uses a list of Macedonian municipalities as\n    choices. The label is the name of the municipality and the value\n    is a 2 character code for the municipality.\n    \"\"\"\n\n    def __init__(self, attrs=None):\n        super(MKMunicipalitySelect, self).__init__(attrs, choices = MK_MUNICIPALITIES)\n\n\nclass UMCNField(RegexField):\n    \"\"\"\n    A form field that validates input as a unique master citizen\n    number.\n\n    The format of the unique master citizen number has been kept the same from\n    Yugoslavia. It is still in use in other countries as well, it is not applicable\n    solely in Macedonia. For more information see:\n    https://secure.wikimedia.org/wikipedia/en/wiki/Unique_Master_Citizen_Number\n\n    A value will pass validation if it complies to the following rules:\n\n    * Consists of exactly 13 digits\n    * The first 7 digits represent a valid past date in the format DDMMYYY\n    * The last digit of the UMCN passes a checksum test\n    \"\"\"\n    default_error_messages = {\n        'invalid': _('This field should contain exactly 13 digits.'),\n        'date': _('The first 7 digits of the UMCN must represent a valid past date.'),\n        'checksum': _('The UMCN is not valid.'),\n    }\n\n    def __init__(self, *args, **kwargs):\n        kwargs['min_length'] = None\n        kwargs['max_length'] = 13\n        super(UMCNField, self).__init__(r'^\\d{13}$', *args, **kwargs)\n\n    def clean(self, value):\n        value = super(UMCNField, self).clean(value)\n\n        if value in EMPTY_VALUES:\n            return ''\n\n        if not self._validate_date_part(value):\n            raise ValidationError(self.error_messages['date'])\n        if self._validate_checksum(value):\n            return value\n        else:\n            raise ValidationError(self.error_messages['checksum'])\n\n    def _validate_checksum(self, value):\n        a,b,c,d,e,f,g,h,i,j,k,l,K = [int(digit) for digit in  value]\n        m = 11 - (( 7*(a+g) + 6*(b+h) + 5*(c+i) + 4*(d+j) + 3*(e+k) + 2*(f+l)) % 11)\n        if (m >= 1 and m <= 9) and K == m:\n            return True\n        elif m == 11 and K == 0:\n            return True\n        else:\n            return False\n\n    def _validate_date_part(self, value):\n        daypart, monthpart, yearpart = int(value[:2]), int(value[2:4]), int(value[4:7])\n        if yearpart >= 800:\n            yearpart += 1000\n        else:\n            yearpart += 2000\n        try:\n            date = datetime.datetime(year = yearpart, month = monthpart, day = daypart).date()\n        except ValueError:\n            return False\n        if date >= datetime.datetime.now().date():\n            return False\n        return True\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/mk/mk_choices.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nMacedonian municipalities per the reorganization from 2004.\n\"\"\"\nfrom __future__ import unicode_literals\n\nfrom django.utils.translation import ugettext_lazy as _\n\nMK_MUNICIPALITIES = (\n    ('AD', _('Aerodrom')),\n    ('AR', _('Aračinovo')),\n    ('BR', _('Berovo')),\n    ('TL', _('Bitola')),\n    ('BG', _('Bogdanci')),\n    ('VJ', _('Bogovinje')),\n    ('BS', _('Bosilovo')),\n    ('BN', _('Brvenica')),\n    ('BU', _('Butel')),\n    ('VA', _('Valandovo')),\n    ('VL', _('Vasilevo')),\n    ('VV', _('Vevčani')),\n    ('VE', _('Veles')),\n    ('NI', _('Vinica')),\n    ('VC', _('Vraneštica')),\n    ('VH', _('Vrapčište')),\n    ('GB', _('Gazi Baba')),\n    ('GV', _('Gevgelija')),\n    ('GT', _('Gostivar')),\n    ('GR', _('Gradsko')),\n    ('DB', _('Debar')),\n    ('DA', _('Debarca')),\n    ('DL', _('Delčevo')),\n    ('DK', _('Demir Kapija')),\n    ('DM', _('Demir Hisar')),\n    ('DE', _('Dolneni')),\n    ('DR', _('Drugovo')),\n    ('GP', _('Gjorče Petrov')),\n    ('ZE', _('Želino')),\n    ('ZA', _('Zajas')),\n    ('ZK', _('Zelenikovo')),\n    ('ZR', _('Zrnovci')),\n    ('IL', _('Ilinden')),\n    ('JG', _('Jegunovce')),\n    ('AV', _('Kavadarci')),\n    ('KB', _('Karbinci')),\n    ('KX', _('Karpoš')),\n    ('VD', _('Kisela Voda')),\n    ('KH', _('Kičevo')),\n    ('KN', _('Konče')),\n    ('OC', _('Koćani')),\n    ('KY', _('Kratovo')),\n    ('KZ', _('Kriva Palanka')),\n    ('KG', _('Krivogaštani')),\n    ('KS', _('Kruševo')),\n    ('UM', _('Kumanovo')),\n    ('LI', _('Lipkovo')),\n    ('LO', _('Lozovo')),\n    ('MR', _('Mavrovo i Rostuša')),\n    ('MK', _('Makedonska Kamenica')),\n    ('MD', _('Makedonski Brod')),\n    ('MG', _('Mogila')),\n    ('NG', _('Negotino')),\n    ('NV', _('Novaci')),\n    ('NS', _('Novo Selo')),\n    ('OS', _('Oslomej')),\n    ('OD', _('Ohrid')),\n    ('PE', _('Petrovec')),\n    ('PH', _('Pehčevo')),\n    ('PN', _('Plasnica')),\n    ('PP', _('Prilep')),\n    ('PT', _('Probištip')),\n    ('RV', _('Radoviš')),\n    ('RN', _('Rankovce')),\n    ('RE', _('Resen')),\n    ('RO', _('Rosoman')),\n    ('AJ', _('Saraj')),\n    ('SL', _('Sveti Nikole')),\n    ('SS', _('Sopište')),\n    ('SD', _('Star Dojran')),\n    ('NA', _('Staro Nagoričane')),\n    ('UG', _('Struga')),\n    ('RU', _('Strumica')),\n    ('SU', _('Studeničani')),\n    ('TR', _('Tearce')),\n    ('ET', _('Tetovo')),\n    ('CE', _('Centar')),\n    ('CZ', _('Centar-Župa')),\n    ('CI', _('Čair')),\n    ('CA', _('Čaška')),\n    ('CH', _('Češinovo-Obleševo')),\n    ('CS', _('Čučer-Sandevo')),\n    ('ST', _('Štip')),\n    ('SO', _('Šuto Orizari')),\n)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/mk/models.py",
    "content": "from django.db.models.fields import CharField\nfrom django.utils.translation import ugettext_lazy as _\n\nfrom django.contrib.localflavor.mk.mk_choices import MK_MUNICIPALITIES\nfrom django.contrib.localflavor.mk.forms import (UMCNField as UMCNFormField,\n    MKIdentityCardNumberField as MKIdentityCardNumberFormField)\n\n\nclass MKIdentityCardNumberField(CharField):\n\n    description = _(\"Macedonian identity card number\")\n\n    def __init__(self, *args, **kwargs):\n        kwargs['max_length'] = 8\n        super(MKIdentityCardNumberField, self).__init__(*args, **kwargs)\n\n    def formfield(self, **kwargs):\n        defaults = {'form_class' : MKIdentityCardNumberFormField}\n        defaults.update(kwargs)\n        return super(MKIdentityCardNumberField, self).formfield(**defaults)\n\n\nclass MKMunicipalityField(CharField):\n\n    description = _(\"A Macedonian municipality (2 character code)\")\n\n    def __init__(self, *args, **kwargs):\n        kwargs['choices'] = MK_MUNICIPALITIES\n        kwargs['max_length'] = 2\n        super(MKMunicipalityField, self).__init__(*args, **kwargs)\n\n\nclass UMCNField(CharField):\n\n    description = _(\"Unique master citizen number (13 digits)\")\n\n    def __init__(self, *args, **kwargs):\n        kwargs['max_length'] = 13\n        super(UMCNField, self).__init__(*args, **kwargs)\n\n    def formfield(self, **kwargs):\n        defaults = {'form_class' : UMCNFormField}\n        defaults.update(kwargs)\n        return super(UMCNField, self).formfield(**defaults)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/mx/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/mx/forms.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nMexican-specific form helpers.\n\"\"\"\nfrom __future__ import unicode_literals\nimport re\n\nfrom django.forms import ValidationError\nfrom django.forms.fields import Select, RegexField\nfrom django.utils import six\nfrom django.utils.translation import ugettext_lazy as _\nfrom django.core.validators import EMPTY_VALUES\nfrom django.contrib.localflavor.mx.mx_states import STATE_CHOICES\n\nDATE_RE = r'\\d{2}((01|03|05|07|08|10|12)(0[1-9]|[12]\\d|3[01])|02(0[1-9]|[12]\\d)|(04|06|09|11)(0[1-9]|[12]\\d|30))'\n\n\"\"\"\nThis is the list of inconvenient words according to the `Anexo IV` of the\ndocument described in the next link:\n    http://www.sisi.org.mx/jspsi/documentos/2005/seguimiento/06101/0610100162005_065.doc\n\"\"\"\n\nRFC_INCONVENIENT_WORDS = [\n    'BUEI', 'BUEY', 'CACA', 'CACO', 'CAGA', 'CAGO', 'CAKA', 'CAKO',\n    'COGE', 'COJA', 'COJE', 'COJI', 'COJO', 'CULO', 'FETO', 'GUEY',\n    'JOTO', 'KACA', 'KACO', 'KAGA', 'KAGO', 'KOGE', 'KOJO', 'KAKA',\n    'KULO', 'MAME', 'MAMO', 'MEAR', 'MEAS', 'MEON', 'MION', 'MOCO',\n    'MULA', 'PEDA', 'PEDO', 'PENE', 'PUTA', 'PUTO', 'QULO', 'RATA',\n    'RUIN',\n]\n\n\"\"\"\nThis is the list of inconvenient words according to the `Anexo 2` of the\ndocument described in the next link:\n    http://portal.veracruz.gob.mx/pls/portal/url/ITEM/444112558A57C6E0E040A8C02E00695C\n\"\"\"\nCURP_INCONVENIENT_WORDS = [\n   'BACA', 'BAKA', 'BUEI', 'BUEY', 'CACA', 'CACO', 'CAGA', 'CAGO',\n   'CAKA', 'CAKO', 'COGE', 'COGI', 'COJA', 'COJE', 'COJI', 'COJO',\n   'COLA', 'CULO', 'FALO', 'FETO', 'GETA', 'GUEI', 'GUEY', 'JETA',\n   'JOTO', 'KACA', 'KACO', 'KAGA', 'KAGO', 'KAKA', 'KAKO', 'KOGE',\n   'KOGI', 'KOJA', 'KOJE', 'KOJI', 'KOJO', 'KOLA', 'KULO', 'LILO',\n   'LOCA', 'LOCO', 'LOKA', 'LOKO', 'MAME', 'MAMO', 'MEAR', 'MEAS',\n   'MEON', 'MIAR', 'MION', 'MOCO', 'MOKO', 'MULA', 'MULO', 'NACA',\n   'NACO', 'PEDA', 'PEDO', 'PENE', 'PIPI', 'PITO', 'POPO', 'PUTA',\n   'PUTO', 'QULO', 'RATA', 'ROBA', 'ROBE', 'ROBO', 'RUIN', 'SENO',\n   'TETA', 'VACA', 'VAGA', 'VAGO', 'VAKA', 'VUEI', 'VUEY', 'WUEI',\n   'WUEY',\n]\n\nclass MXStateSelect(Select):\n    \"\"\"\n    A Select widget that uses a list of Mexican states as its choices.\n    \"\"\"\n    def __init__(self, attrs=None):\n        super(MXStateSelect, self).__init__(attrs, choices=STATE_CHOICES)\n\n\nclass MXZipCodeField(RegexField):\n    \"\"\"\n    A form field that accepts a Mexican Zip Code.\n\n    More info about this:\n        http://en.wikipedia.org/wiki/List_of_postal_codes_in_Mexico\n    \"\"\"\n    default_error_messages = {\n        'invalid': _('Enter a valid zip code in the format XXXXX.'),\n    }\n\n    def __init__(self, *args, **kwargs):\n        zip_code_re = r'^(0[1-9]|[1][0-6]|[2-9]\\d)(\\d{3})$'\n        super(MXZipCodeField, self).__init__(zip_code_re, *args, **kwargs)\n\n\nclass MXRFCField(RegexField):\n    \"\"\"\n    A form field that validates a Mexican *Registro Federal de Contribuyentes*\n    for either `Persona física` or `Persona moral`.\n\n    The Persona física RFC string is integrated by a juxtaposition of\n    characters following the next pattern:\n\n        =====  ======  ===========================================\n        Index  Format  Accepted Characters\n        =====  ======  ===========================================\n        1      X       Any letter\n        2      X       Any vowel\n        3-4    XX      Any letter\n        5-10   YYMMDD  Any valid date\n        11-12  XX      Any letter or number between 0 and 9\n        13     X       Any digit between 0 and 9 or the letter *A*\n        =====  ======  ===========================================\n\n    The Persona moral RFC string is integrated by a juxtaposition of\n    characters following the next pattern:\n\n        =====  ======  ============================================\n        Index  Format  Accepted Characters\n        =====  ======  ============================================\n        1-3    XXX     Any letter including *&* and *Ñ* chars\n        4-9    YYMMDD  Any valid date\n        10-11  XX      Any letter or number between 0 and 9\n        12     X       Any number between 0 and 9 or the letter *A*\n        =====  ======  ============================================\n\n    More info about this:\n        http://es.wikipedia.org/wiki/Registro_Federal_de_Contribuyentes_(M%C3%A9xico)\n    \"\"\"\n    default_error_messages = {\n        'invalid': _('Enter a valid RFC.'),\n        'invalid_checksum': _('Invalid checksum for RFC.'),\n    }\n\n    def __init__(self, min_length=9, max_length=13, *args, **kwargs):\n        rfc_re = re.compile(r'^([A-Z&Ññ]{3}|[A-Z][AEIOU][A-Z]{2})%s([A-Z0-9]{2}[0-9A])?$' % DATE_RE,\n                            re.IGNORECASE)\n        super(MXRFCField, self).__init__(rfc_re, min_length=min_length,\n                                         max_length=max_length, *args, **kwargs)\n\n    def clean(self, value):\n        value = super(MXRFCField, self).clean(value)\n        if value in EMPTY_VALUES:\n            return ''\n        value = value.upper()\n        if self._has_homoclave(value):\n            if not value[-1] == self._checksum(value[:-1]):\n                raise ValidationError(self.default_error_messages['invalid_checksum'])\n        if self._has_inconvenient_word(value):\n            raise ValidationError(self.default_error_messages['invalid'])\n        return value\n\n    def _has_homoclave(self, rfc):\n        \"\"\"\n        This check is done due to the existance of RFCs without a *homoclave*\n        since the current algorithm to calculate it had not been created for\n        the first RFCs ever in Mexico.\n        \"\"\"\n        rfc_without_homoclave_re = re.compile(r'^[A-Z&Ññ]{3,4}%s$' % DATE_RE,\n                                              re.IGNORECASE)\n        return not rfc_without_homoclave_re.match(rfc)\n\n    def _checksum(self, rfc):\n        \"\"\"\n        More info about this procedure:\n            www.sisi.org.mx/jspsi/documentos/2005/seguimiento/06101/0610100162005_065.doc\n        \"\"\"\n        chars = '0123456789ABCDEFGHIJKLMN&OPQRSTUVWXYZ-Ñ'\n        if len(rfc) == 11:\n            rfc = '-' + rfc\n\n        sum_ = sum(i * chars.index(c) for i, c in zip(reversed(range(14)), rfc))\n        checksum = 11 - sum_ % 11\n\n        if checksum == 10:\n            return 'A'\n        elif checksum == 11:\n            return '0'\n\n        return six.text_type(checksum)\n\n    def _has_inconvenient_word(self, rfc):\n        first_four = rfc[:4]\n        return first_four in RFC_INCONVENIENT_WORDS\n\n\nclass MXCURPField(RegexField):\n    \"\"\"\n    A field that validates a Mexican Clave Única de Registro de Población.\n\n    The CURP is integrated by a juxtaposition of characters following the next\n    pattern:\n\n        =====  ======  ===================================================\n        Index  Format  Accepted Characters\n        =====  ======  ===================================================\n        1      X       Any letter\n        2      X       Any vowel\n        3-4    XX      Any letter\n        5-10   YYMMDD  Any valid date\n        11     X       Either `H` or `M`, depending on the person's gender\n        12-13  XX      Any valid acronym for a state in Mexico\n        14-16  XXX     Any consonant\n        17     X       Any number between 0 and 9 or any letter\n        18     X       Any number between 0 and 9\n        =====  ======  ===================================================\n\n    More info about this:\n        http://www.condusef.gob.mx/index.php/clave-unica-de-registro-de-poblacion-curp\n    \"\"\"\n    default_error_messages = {\n        'invalid': _('Enter a valid CURP.'),\n        'invalid_checksum': _('Invalid checksum for CURP.'),\n    }\n\n    def __init__(self, min_length=18, max_length=18, *args, **kwargs):\n        states_re = r'(AS|BC|BS|CC|CL|CM|CS|CH|DF|DG|GT|GR|HG|JC|MC|MN|MS|NT|NL|OC|PL|QT|QR|SP|SL|SR|TC|TS|TL|VZ|YN|ZS|NE)'\n        consonants_re = r'[B-DF-HJ-NP-TV-Z]'\n        curp_re = (r'^[A-Z][AEIOU][A-Z]{2}%s[HM]%s%s{3}[0-9A-Z]\\d$' %\n                   (DATE_RE, states_re, consonants_re))\n        curp_re = re.compile(curp_re, re.IGNORECASE)\n        super(MXCURPField, self).__init__(curp_re, min_length=min_length,\n                                          max_length=max_length, *args, **kwargs)\n\n    def clean(self, value):\n        value = super(MXCURPField, self).clean(value)\n        if value in EMPTY_VALUES:\n            return ''\n        value = value.upper()\n        if value[-1] != self._checksum(value[:-1]):\n            raise ValidationError(self.default_error_messages['invalid_checksum'])\n        if self._has_inconvenient_word(value):\n            raise ValidationError(self.default_error_messages['invalid'])\n        return value\n\n    def _checksum(self, value):\n        chars = '0123456789ABCDEFGHIJKLMN&OPQRSTUVWXYZ'\n\n        s = sum(i * chars.index(c) for i, c in zip(reversed(range(19)), value))\n        checksum = 10 - s % 10\n\n        if checksum == 10:\n            return '0'\n        return six.text_type(checksum)\n\n    def _has_inconvenient_word(self, curp):\n        first_four = curp[:4]\n        return first_four in CURP_INCONVENIENT_WORDS\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/mx/models.py",
    "content": "from django.utils.translation import ugettext_lazy as _\nfrom django.db.models.fields import CharField\n\nfrom django.contrib.localflavor.mx.mx_states import STATE_CHOICES\nfrom django.contrib.localflavor.mx.forms import (MXRFCField as MXRFCFormField,\n    MXZipCodeField as MXZipCodeFormField, MXCURPField as MXCURPFormField)\n\n\nclass MXStateField(CharField):\n    \"\"\"\n    A model field that stores the three-letter Mexican state abbreviation in the\n    database.\n    \"\"\"\n    description = _(\"Mexico state (three uppercase letters)\")\n\n    def __init__(self, *args, **kwargs):\n        kwargs['choices'] = STATE_CHOICES\n        kwargs['max_length'] = 3\n        super(MXStateField, self).__init__(*args, **kwargs)\n\n\nclass MXZipCodeField(CharField):\n    \"\"\"\n    A model field that forms represent as a forms.MXZipCodeField field and\n    stores the five-digit Mexican zip code.\n    \"\"\"\n    description = _(\"Mexico zip code\")\n\n    def __init__(self, *args, **kwargs):\n        kwargs['max_length'] = 5\n        super(MXZipCodeField, self).__init__(*args, **kwargs)\n\n    def formfield(self, **kwargs):\n        defaults = {'form_class': MXZipCodeFormField}\n        defaults.update(kwargs)\n        return super(MXZipCodeField, self).formfield(**defaults)\n\n\nclass MXRFCField(CharField):\n    \"\"\"\n    A model field that forms represent as a forms.MXRFCField field and\n    stores the value of a valid Mexican RFC.\n    \"\"\"\n    description = _(\"Mexican RFC\")\n\n    def __init__(self, *args, **kwargs):\n        kwargs['max_length'] = 13\n        super(MXRFCField, self).__init__(*args, **kwargs)\n\n    def formfield(self, **kwargs):\n        defaults = {'form_class': MXRFCFormField}\n        defaults.update(kwargs)\n        return super(MXRFCField, self).formfield(**defaults)\n\n\nclass MXCURPField(CharField):\n    \"\"\"\n    A model field that forms represent as a forms.MXCURPField field and\n    stores the value of a valid Mexican CURP.\n    \"\"\"\n    description = _(\"Mexican CURP\")\n\n    def __init__(self, *args, **kwargs):\n        kwargs['max_length'] = 18\n        super(MXCURPField, self).__init__(*args, **kwargs)\n\n    def formfield(self, **kwargs):\n        defaults = {'form_class': MXCURPFormField}\n        defaults.update(kwargs)\n        return super(MXCURPField, self).formfield(**defaults)"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/mx/mx_states.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nA list of Mexican states for use as `choices` in a formfield.\n\nThis exists in this standalone file so that it's only imported into memory\nwhen explicitly needed.\n\"\"\"\nfrom __future__ import unicode_literals\n\nfrom django.utils.translation import ugettext_lazy as _\n\n# All 31 states, plus the `Distrito Federal`.\nSTATE_CHOICES = (\n    ('AGU', _('Aguascalientes')),\n    ('BCN', _('Baja California')),\n    ('BCS', _('Baja California Sur')),\n    ('CAM', _('Campeche')),\n    ('CHH', _('Chihuahua')),\n    ('CHP', _('Chiapas')),\n    ('COA', _('Coahuila')),\n    ('COL', _('Colima')),\n    ('DIF', _('Distrito Federal')),\n    ('DUR', _('Durango')),\n    ('GRO', _('Guerrero')),\n    ('GUA', _('Guanajuato')),\n    ('HID', _('Hidalgo')),\n    ('JAL', _('Jalisco')),\n    ('MEX', _('Estado de México')),\n    ('MIC', _('Michoacán')),\n    ('MOR', _('Morelos')),\n    ('NAY', _('Nayarit')),\n    ('NLE', _('Nuevo León')),\n    ('OAX', _('Oaxaca')),\n    ('PUE', _('Puebla')),\n    ('QUE', _('Querétaro')),\n    ('ROO', _('Quintana Roo')),\n    ('SIN', _('Sinaloa')),\n    ('SLP', _('San Luis Potosí')),\n    ('SON', _('Sonora')),\n    ('TAB', _('Tabasco')),\n    ('TAM', _('Tamaulipas')),\n    ('TLA', _('Tlaxcala')),\n    ('VER', _('Veracruz')),\n    ('YUC', _('Yucatán')),\n    ('ZAC', _('Zacatecas')),\n)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/nl/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/nl/forms.py",
    "content": "\"\"\"\nNL-specific Form helpers\n\"\"\"\n\nfrom __future__ import absolute_import, unicode_literals\n\nimport re\n\nfrom django.contrib.localflavor.nl.nl_provinces import PROVINCE_CHOICES\nfrom django.core.validators import EMPTY_VALUES\nfrom django.forms import ValidationError\nfrom django.forms.fields import Field, Select\nfrom django.utils.encoding import smart_text\nfrom django.utils.translation import ugettext_lazy as _\n\n\npc_re = re.compile('^\\d{4}[A-Z]{2}$')\nsofi_re = re.compile('^\\d{9}$')\nnumeric_re = re.compile('^\\d+$')\n\nclass NLZipCodeField(Field):\n    \"\"\"\n    A Dutch postal code field.\n    \"\"\"\n    default_error_messages = {\n        'invalid': _('Enter a valid postal code'),\n    }\n\n    def clean(self, value):\n        super(NLZipCodeField, self).clean(value)\n        if value in EMPTY_VALUES:\n            return ''\n\n        value = value.strip().upper().replace(' ', '')\n        if not pc_re.search(value):\n            raise ValidationError(self.error_messages['invalid'])\n\n        if int(value[:4]) < 1000:\n            raise ValidationError(self.error_messages['invalid'])\n\n        return '%s %s' % (value[:4], value[4:])\n\nclass NLProvinceSelect(Select):\n    \"\"\"\n    A Select widget that uses a list of provinces of the Netherlands as its\n    choices.\n    \"\"\"\n    def __init__(self, attrs=None):\n        super(NLProvinceSelect, self).__init__(attrs, choices=PROVINCE_CHOICES)\n\nclass NLPhoneNumberField(Field):\n    \"\"\"\n    A Dutch telephone number field.\n    \"\"\"\n    default_error_messages = {\n        'invalid': _('Enter a valid phone number'),\n    }\n\n    def clean(self, value):\n        super(NLPhoneNumberField, self).clean(value)\n        if value in EMPTY_VALUES:\n            return ''\n\n        phone_nr = re.sub('[\\-\\s\\(\\)]', '', smart_text(value))\n\n        if len(phone_nr) == 10 and numeric_re.search(phone_nr):\n            return value\n\n        if phone_nr[:3] == '+31' and len(phone_nr) == 12 and \\\n           numeric_re.search(phone_nr[3:]):\n            return value\n\n        raise ValidationError(self.error_messages['invalid'])\n\nclass NLSoFiNumberField(Field):\n    \"\"\"\n    A Dutch social security number (SoFi/BSN) field.\n\n    http://nl.wikipedia.org/wiki/Sofinummer\n    \"\"\"\n    default_error_messages = {\n        'invalid': _('Enter a valid SoFi number'),\n    }\n\n    def clean(self, value):\n        super(NLSoFiNumberField, self).clean(value)\n        if value in EMPTY_VALUES:\n            return ''\n\n        if not sofi_re.search(value):\n            raise ValidationError(self.error_messages['invalid'])\n\n        if int(value) == 0:\n            raise ValidationError(self.error_messages['invalid'])\n\n        checksum = 0\n        for i in range(9, 1, -1):\n            checksum += int(value[9-i]) * i\n        checksum -= int(value[-1])\n\n        if checksum % 11 != 0:\n            raise ValidationError(self.error_messages['invalid'])\n\n        return value\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/nl/nl_provinces.py",
    "content": "from django.utils.translation import ugettext_lazy as _\n\nPROVINCE_CHOICES = (\n    ('DR', _('Drenthe')),\n    ('FL', _('Flevoland')),\n    ('FR', _('Friesland')),\n    ('GL', _('Gelderland')),\n    ('GR', _('Groningen')),\n    ('LB', _('Limburg')),\n    ('NB', _('Noord-Brabant')),\n    ('NH', _('Noord-Holland')),\n    ('OV', _('Overijssel')),\n    ('UT', _('Utrecht')),\n    ('ZE', _('Zeeland')),\n    ('ZH', _('Zuid-Holland')),\n)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/no/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/no/forms.py",
    "content": "\"\"\"\nNorwegian-specific Form helpers\n\"\"\"\n\nfrom __future__ import absolute_import, unicode_literals\n\nimport re\nimport datetime\n\nfrom django.contrib.localflavor.no.no_municipalities import MUNICIPALITY_CHOICES\nfrom django.core.validators import EMPTY_VALUES\nfrom django.forms import ValidationError\nfrom django.forms.fields import Field, RegexField, Select\nfrom django.utils.translation import ugettext_lazy as _\n\n\nclass NOZipCodeField(RegexField):\n    default_error_messages = {\n        'invalid': _('Enter a zip code in the format XXXX.'),\n    }\n\n    def __init__(self, max_length=None, min_length=None, *args, **kwargs):\n        super(NOZipCodeField, self).__init__(r'^\\d{4}$',\n            max_length, min_length, *args, **kwargs)\n\nclass NOMunicipalitySelect(Select):\n    \"\"\"\n    A Select widget that uses a list of Norwegian municipalities (fylker)\n    as its choices.\n    \"\"\"\n    def __init__(self, attrs=None):\n        super(NOMunicipalitySelect, self).__init__(attrs, choices=MUNICIPALITY_CHOICES)\n\nclass NOSocialSecurityNumber(Field):\n    \"\"\"\n    Algorithm is documented at http://no.wikipedia.org/wiki/Personnummer\n    \"\"\"\n    default_error_messages = {\n        'invalid': _('Enter a valid Norwegian social security number.'),\n    }\n\n    def clean(self, value):\n        super(NOSocialSecurityNumber, self).clean(value)\n        if value in EMPTY_VALUES:\n            return ''\n\n        if not re.match(r'^\\d{11}$', value):\n            raise ValidationError(self.error_messages['invalid'])\n\n        day = int(value[:2])\n        month = int(value[2:4])\n        year2 = int(value[4:6])\n\n        inum = int(value[6:9])\n        self.birthday = None\n        try:\n            if 000 <= inum < 500:\n                self.birthday = datetime.date(1900+year2, month, day)\n            if 500 <= inum < 750 and year2 > 54:\n                self.birthday = datetime.date(1800+year2, month, day)\n            if 500 <= inum < 1000 and year2 < 40:\n                self.birthday = datetime.date(2000+year2, month, day)\n            if 900 <= inum < 1000 and year2 > 39:\n                self.birthday = datetime.date(1900+year2, month, day)\n        except ValueError:\n            raise ValidationError(self.error_messages['invalid'])\n\n        sexnum = int(value[8])\n        if sexnum % 2 == 0:\n            self.gender = 'F'\n        else:\n            self.gender = 'M'\n\n        digits = map(int, list(value))\n        weight_1 = [3, 7, 6, 1, 8, 9, 4, 5, 2, 1, 0]\n        weight_2 = [5, 4, 3, 2, 7, 6, 5, 4, 3, 2, 1]\n\n        def multiply_reduce(aval, bval):\n            return sum([(a * b) for (a, b) in zip(aval, bval)])\n\n        if multiply_reduce(digits, weight_1) % 11 != 0:\n            raise ValidationError(self.error_messages['invalid'])\n        if multiply_reduce(digits, weight_2) % 11 != 0:\n            raise ValidationError(self.error_messages['invalid'])\n\n        return value\n\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/no/no_municipalities.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nAn alphabetical list of Norwegian municipalities (fylker) fro use as `choices`\nin a formfield.\n\nThis exists in this standalone file so that it's on ly imported into memory\nwhen explicitly needed.\n\"\"\"\nfrom __future__ import unicode_literals\n\nMUNICIPALITY_CHOICES = (\n    ('akershus', 'Akershus'),\n    ('austagder', 'Aust-Agder'),\n    ('buskerud', 'Buskerud'),\n    ('finnmark', 'Finnmark'),\n    ('hedmark', 'Hedmark'),\n    ('hordaland', 'Hordaland'),\n    ('janmayen', 'Jan Mayen'),\n    ('moreogromsdal', 'Møre og Romsdal'),\n    ('nordtrondelag', 'Nord-Trøndelag'),\n    ('nordland', 'Nordland'),\n    ('oppland', 'Oppland'),\n    ('oslo', 'Oslo'),\n    ('rogaland', 'Rogaland'),\n    ('sognogfjordane', 'Sogn og Fjordane'),\n    ('svalbard', 'Svalbard'),\n    ('sortrondelag', 'Sør-Trøndelag'),\n    ('telemark', 'Telemark'),\n    ('troms', 'Troms'),\n    ('vestagder', 'Vest-Agder'),\n    ('vestfold', 'Vestfold'),\n    ('ostfold', 'Østfold')\n)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/pe/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/pe/forms.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nPE-specific Form helpers.\n\"\"\"\n\nfrom __future__ import absolute_import, unicode_literals\n\nfrom django.contrib.localflavor.pe.pe_region import REGION_CHOICES\nfrom django.core.validators import EMPTY_VALUES\nfrom django.forms import ValidationError\nfrom django.forms.fields import RegexField, CharField, Select\nfrom django.utils.translation import ugettext_lazy as _\n\n\nclass PERegionSelect(Select):\n    \"\"\"\n    A Select widget that uses a list of Peruvian Regions as its choices.\n    \"\"\"\n    def __init__(self, attrs=None):\n        super(PERegionSelect, self).__init__(attrs, choices=REGION_CHOICES)\n\nclass PEDNIField(CharField):\n    \"\"\"\n    A field that validates `Documento Nacional de IdentidadŽ (DNI) numbers.\n    \"\"\"\n    default_error_messages = {\n        'invalid': _(\"This field requires only numbers.\"),\n        'max_digits': _(\"This field requires 8 digits.\"),\n    }\n\n    def __init__(self, max_length=8, min_length=8, *args, **kwargs):\n        super(PEDNIField, self).__init__(max_length, min_length, *args,\n                **kwargs)\n\n    def clean(self, value):\n        \"\"\"\n        Value must be a string in the XXXXXXXX formats.\n        \"\"\"\n        value = super(PEDNIField, self).clean(value)\n        if value in EMPTY_VALUES:\n            return ''\n        if not value.isdigit():\n            raise ValidationError(self.error_messages['invalid'])\n        if len(value) != 8:\n            raise ValidationError(self.error_messages['max_digits'])\n\n        return value\n\nclass PERUCField(RegexField):\n    \"\"\"\n    This field validates a RUC (Registro Unico de Contribuyentes). A RUC is of\n    the form XXXXXXXXXXX.\n    \"\"\"\n    default_error_messages = {\n        'invalid': _(\"This field requires only numbers.\"),\n        'max_digits': _(\"This field requires 11 digits.\"),\n    }\n\n    def __init__(self, max_length=11, min_length=11, *args, **kwargs):\n        super(PERUCField, self).__init__(max_length, min_length, *args,\n            **kwargs)\n\n    def clean(self, value):\n        \"\"\"\n        Value must be an 11-digit number.\n        \"\"\"\n        value = super(PERUCField, self).clean(value)\n        if value in EMPTY_VALUES:\n            return ''\n        if not value.isdigit():\n            raise ValidationError(self.error_messages['invalid'])\n        if len(value) != 11:\n            raise ValidationError(self.error_messages['max_digits'])\n        return value\n\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/pe/pe_region.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nA list of Peru regions as `choices` in a formfield.\n\nThis exists in this standalone file so that it's only imported into memory\nwhen explicitly needed.\n\"\"\"\nfrom __future__ import unicode_literals\n\nREGION_CHOICES = (\n    ('AMA', 'Amazonas'),\n    ('ANC', 'Ancash'),\n    ('APU', 'Apurímac'),\n    ('ARE', 'Arequipa'),\n    ('AYA', 'Ayacucho'),\n    ('CAJ', 'Cajamarca'),\n    ('CAL', 'Callao'),\n    ('CUS', 'Cusco'),\n    ('HUV', 'Huancavelica'),\n    ('HUC', 'Huánuco'),\n    ('ICA', 'Ica'),\n    ('JUN', 'Junín'),\n    ('LAL', 'La Libertad'),\n    ('LAM', 'Lambayeque'),\n    ('LIM', 'Lima'),\n    ('LOR', 'Loreto'),\n    ('MDD', 'Madre de Dios'),\n    ('MOQ', 'Moquegua'),\n    ('PAS', 'Pasco'),\n    ('PIU', 'Piura'),\n    ('PUN', 'Puno'),\n    ('SAM', 'San Martín'),\n    ('TAC', 'Tacna'),\n    ('TUM', 'Tumbes'),\n    ('UCA', 'Ucayali'),\n)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/pl/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/pl/forms.py",
    "content": "\"\"\"\nPolish-specific form helpers\n\"\"\"\n\nfrom __future__ import absolute_import, unicode_literals\n\nimport re\n\nfrom django.contrib.localflavor.pl.pl_administrativeunits import ADMINISTRATIVE_UNIT_CHOICES\nfrom django.contrib.localflavor.pl.pl_voivodeships import VOIVODESHIP_CHOICES\nfrom django.core.validators import EMPTY_VALUES\nfrom django.forms import ValidationError\nfrom django.forms.fields import Select, RegexField\nfrom django.utils.translation import ugettext_lazy as _\n\n\nclass PLProvinceSelect(Select):\n    \"\"\"\n    A select widget with list of Polish administrative provinces as choices.\n    \"\"\"\n    def __init__(self, attrs=None):\n        super(PLProvinceSelect, self).__init__(attrs, choices=VOIVODESHIP_CHOICES)\n\nclass PLCountySelect(Select):\n    \"\"\"\n    A select widget with list of Polish administrative units as choices.\n    \"\"\"\n    def __init__(self, attrs=None):\n        super(PLCountySelect, self).__init__(attrs, choices=ADMINISTRATIVE_UNIT_CHOICES)\n\nclass PLPESELField(RegexField):\n    \"\"\"\n    A form field that validates as Polish Identification Number (PESEL).\n\n    Checks the following rules:\n        * the length consist of 11 digits\n        * has a valid checksum\n\n    The algorithm is documented at http://en.wikipedia.org/wiki/PESEL.\n    \"\"\"\n    default_error_messages = {\n        'invalid': _('National Identification Number consists of 11 digits.'),\n        'checksum': _('Wrong checksum for the National Identification Number.'),\n    }\n\n    def __init__(self, max_length=None, min_length=None, *args, **kwargs):\n        super(PLPESELField, self).__init__(r'^\\d{11}$',\n            max_length, min_length, *args, **kwargs)\n\n    def clean(self, value):\n        super(PLPESELField, self).clean(value)\n        if value in EMPTY_VALUES:\n            return ''\n        if not self.has_valid_checksum(value):\n            raise ValidationError(self.error_messages['checksum'])\n        return '%s' % value\n\n    def has_valid_checksum(self, number):\n        \"\"\"\n        Calculates a checksum with the provided algorithm.\n        \"\"\"\n        multiple_table = (1, 3, 7, 9, 1, 3, 7, 9, 1, 3, 1)\n        result = 0\n        for i in range(len(number)):\n            result += int(number[i]) * multiple_table[i]\n        return result % 10 == 0\n\nclass PLNationalIDCardNumberField(RegexField):\n    \"\"\"\n    A form field that validates as Polish National ID Card Number.\n\n    Checks the following rules:\n        * the length consist of 3 letter and 6 digits\n        * has a valid checksum\n\n    The algorithm is documented at http://en.wikipedia.org/wiki/Polish_identity_card.\n    \"\"\"\n    default_error_messages = {\n        'invalid': _('National ID Card Number consists of 3 letters and 6 digits.'),\n        'checksum': _('Wrong checksum for the National ID Card Number.'),\n    }\n\n    def __init__(self, max_length=None, min_length=None, *args, **kwargs):\n        super(PLNationalIDCardNumberField, self).__init__(r'^[A-Za-z]{3}\\d{6}$',\n            max_length, min_length, *args, **kwargs)\n\n    def clean(self,value):\n        super(PLNationalIDCardNumberField, self).clean(value)\n        if value in EMPTY_VALUES:\n            return ''\n\n        value = value.upper()\n\n        if not self.has_valid_checksum(value):\n            raise ValidationError(self.error_messages['checksum'])\n        return '%s' % value\n\n    def has_valid_checksum(self, number):\n        \"\"\"\n        Calculates a checksum with the provided algorithm.\n        \"\"\"\n        letter_dict = {'A': 10, 'B': 11, 'C': 12, 'D': 13,\n                       'E': 14, 'F': 15, 'G': 16, 'H': 17,\n                       'I': 18, 'J': 19, 'K': 20, 'L': 21,\n                       'M': 22, 'N': 23, 'O': 24, 'P': 25,\n                       'Q': 26, 'R': 27, 'S': 28, 'T': 29,\n                       'U': 30, 'V': 31, 'W': 32, 'X': 33,\n                       'Y': 34, 'Z': 35}\n\n        # convert letters to integer values\n        int_table = [(not c.isdigit()) and letter_dict[c] or int(c)\n                     for c in number]\n\n        multiple_table = (7, 3, 1, -1, 7, 3, 1, 7, 3)\n        result = 0\n        for i in range(len(int_table)):\n            result += int_table[i] * multiple_table[i]\n\n        return result % 10 == 0\n\n\nclass PLNIPField(RegexField):\n    \"\"\"\n    A form field that validates as Polish Tax Number (NIP).\n    Valid forms are: XXX-YYY-YY-YY, XXX-YY-YY-YYY or XXXYYYYYYY.\n\n    Checksum algorithm based on documentation at\n    http://wipos.p.lodz.pl/zylla/ut/nip-rego.html\n    \"\"\"\n    default_error_messages = {\n        'invalid': _('Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or XXXXXXXXXX.'),\n        'checksum': _('Wrong checksum for the Tax Number (NIP).'),\n    }\n\n    def __init__(self, max_length=None, min_length=None, *args, **kwargs):\n        super(PLNIPField, self).__init__(r'^\\d{3}-\\d{3}-\\d{2}-\\d{2}$|^\\d{3}-\\d{2}-\\d{2}-\\d{3}$|^\\d{10}$',\n            max_length, min_length, *args, **kwargs)\n\n    def clean(self,value):\n        super(PLNIPField, self).clean(value)\n        if value in EMPTY_VALUES:\n            return ''\n        value = re.sub(\"[-]\", \"\", value)\n        if not self.has_valid_checksum(value):\n            raise ValidationError(self.error_messages['checksum'])\n        return '%s' % value\n\n    def has_valid_checksum(self, number):\n        \"\"\"\n        Calculates a checksum with the provided algorithm.\n        \"\"\"\n        multiple_table = (6, 5, 7, 2, 3, 4, 5, 6, 7)\n        result = 0\n        for i in range(len(number)-1):\n            result += int(number[i]) * multiple_table[i]\n\n        result %= 11\n        if result == int(number[-1]):\n            return True\n        else:\n            return False\n\nclass PLREGONField(RegexField):\n    \"\"\"\n    A form field that validates its input is a REGON number.\n\n    Valid regon number consists of 9 or 14 digits.\n    See http://www.stat.gov.pl/bip/regon_ENG_HTML.htm for more information.\n    \"\"\"\n    default_error_messages = {\n        'invalid': _('National Business Register Number (REGON) consists of 9 or 14 digits.'),\n        'checksum': _('Wrong checksum for the National Business Register Number (REGON).'),\n    }\n\n    def __init__(self, max_length=None, min_length=None, *args, **kwargs):\n        super(PLREGONField, self).__init__(r'^\\d{9,14}$',\n            max_length, min_length, *args, **kwargs)\n\n    def clean(self,value):\n        super(PLREGONField, self).clean(value)\n        if value in EMPTY_VALUES:\n            return ''\n        if not self.has_valid_checksum(value):\n            raise ValidationError(self.error_messages['checksum'])\n        return '%s' % value\n\n    def has_valid_checksum(self, number):\n        \"\"\"\n        Calculates a checksum with the provided algorithm.\n        \"\"\"\n        weights = (\n            (8, 9, 2, 3, 4, 5, 6, 7, -1),\n            (2, 4, 8, 5, 0, 9, 7, 3, 6, 1, 2, 4, 8, -1),\n            (8, 9, 2, 3, 4, 5, 6, 7, -1, 0, 0, 0, 0, 0),\n        )\n\n        weights = [table for table in weights if len(table) == len(number)]\n\n        for table in weights:\n            checksum = sum([int(n) * w for n, w in zip(number, table)])\n            if checksum % 11 % 10:\n                return False\n\n        return bool(weights)\n\nclass PLPostalCodeField(RegexField):\n    \"\"\"\n    A form field that validates as Polish postal code.\n    Valid code is XX-XXX where X is digit.\n    \"\"\"\n    default_error_messages = {\n        'invalid': _('Enter a postal code in the format XX-XXX.'),\n    }\n\n    def __init__(self, max_length=None, min_length=None, *args, **kwargs):\n        super(PLPostalCodeField, self).__init__(r'^\\d{2}-\\d{3}$',\n            max_length, min_length, *args, **kwargs)\n\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/pl/pl_administrativeunits.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nPolish administrative units as in http://pl.wikipedia.org/wiki/Podzia%C5%82_administracyjny_Polski\n\"\"\"\nfrom __future__ import unicode_literals\n\n\nADMINISTRATIVE_UNIT_CHOICES = (\n    ('wroclaw', 'Wrocław'),\n    ('jeleniagora', 'Jelenia Góra'),\n    ('legnica', 'Legnica'),\n    ('boleslawiecki', 'bolesławiecki'),\n    ('dzierzoniowski', 'dzierżoniowski'),\n    ('glogowski', 'głogowski'),\n    ('gorowski', 'górowski'),\n    ('jaworski', 'jaworski'),\n    ('jeleniogorski', 'jeleniogórski'),\n    ('kamiennogorski', 'kamiennogórski'),\n    ('klodzki', 'kłodzki'),\n    ('legnicki', 'legnicki'),\n    ('lubanski', 'lubański'),\n    ('lubinski', 'lubiński'),\n    ('lwowecki', 'lwówecki'),\n    ('milicki', 'milicki'),\n    ('olesnicki', 'oleśnicki'),\n    ('olawski', 'oławski'),\n    ('polkowicki', 'polkowicki'),\n    ('strzelinski', 'strzeliński'),\n    ('sredzki', 'średzki'),\n    ('swidnicki', 'świdnicki'),\n    ('trzebnicki', 'trzebnicki'),\n    ('walbrzyski', 'wałbrzyski'),\n    ('wolowski', 'wołowski'),\n    ('wroclawski', 'wrocławski'),\n    ('zabkowicki', 'ząbkowicki'),\n    ('zgorzelecki', 'zgorzelecki'),\n    ('zlotoryjski', 'złotoryjski'),\n    ('bydgoszcz', 'Bydgoszcz'),\n    ('torun', 'Toruń'),\n    ('wloclawek', 'Włocławek'),\n    ('grudziadz', 'Grudziądz'),\n    ('aleksandrowski', 'aleksandrowski'),\n    ('brodnicki', 'brodnicki'),\n    ('bydgoski', 'bydgoski'),\n    ('chelminski', 'chełmiński'),\n    ('golubsko-dobrzynski', 'golubsko-dobrzyński'),\n    ('grudziadzki', 'grudziądzki'),\n    ('inowroclawski', 'inowrocławski'),\n    ('lipnowski', 'lipnowski'),\n    ('mogilenski', 'mogileński'),\n    ('nakielski', 'nakielski'),\n    ('radziejowski', 'radziejowski'),\n    ('rypinski', 'rypiński'),\n    ('sepolenski', 'sępoleński'),\n    ('swiecki', 'świecki'),\n    ('torunski', 'toruński'),\n    ('tucholski', 'tucholski'),\n    ('wabrzeski', 'wąbrzeski'),\n    ('wloclawski', 'wrocławski'),\n    ('zninski', 'źniński'),\n    ('lublin', 'Lublin'),\n    ('biala-podlaska', 'Biała Podlaska'),\n    ('chelm', 'Chełm'),\n    ('zamosc', 'Zamość'),\n    ('bialski', 'bialski'),\n    ('bilgorajski', 'biłgorajski'),\n    ('chelmski', 'chełmski'),\n    ('hrubieszowski', 'hrubieszowski'),\n    ('janowski', 'janowski'),\n    ('krasnostawski', 'krasnostawski'),\n    ('krasnicki', 'kraśnicki'),\n    ('lubartowski', 'lubartowski'),\n    ('lubelski', 'lubelski'),\n    ('leczynski', 'łęczyński'),\n    ('lukowski', 'łukowski'),\n    ('opolski', 'opolski'),\n    ('parczewski', 'parczewski'),\n    ('pulawski', 'puławski'),\n    ('radzynski', 'radzyński'),\n    ('rycki', 'rycki'),\n    ('swidnicki', 'świdnicki'),\n    ('tomaszowski', 'tomaszowski'),\n    ('wlodawski', 'włodawski'),\n    ('zamojski', 'zamojski'),\n    ('gorzow-wielkopolski', 'Gorzów Wielkopolski'),\n    ('zielona-gora', 'Zielona Góra'),\n    ('gorzowski', 'gorzowski'),\n    ('krosnienski', 'krośnieński'),\n    ('miedzyrzecki', 'międzyrzecki'),\n    ('nowosolski', 'nowosolski'),\n    ('slubicki', 'słubicki'),\n    ('strzelecko-drezdenecki', 'strzelecko-drezdenecki'),\n    ('sulecinski', 'suleńciński'),\n    ('swiebodzinski', 'świebodziński'),\n    ('wschowski', 'wschowski'),\n    ('zielonogorski', 'zielonogórski'),\n    ('zaganski', 'żagański'),\n    ('zarski', 'żarski'),\n    ('lodz', 'Łódź'),\n    ('piotrkow-trybunalski', 'Piotrków Trybunalski'),\n    ('skierniewice', 'Skierniewice'),\n    ('belchatowski', 'bełchatowski'),\n    ('brzezinski', 'brzeziński'),\n    ('kutnowski', 'kutnowski'),\n    ('laski', 'łaski'),\n    ('leczycki', 'łęczycki'),\n    ('lowicki', 'łowicki'),\n    ('lodzki wschodni', 'łódzki wschodni'),\n    ('opoczynski', 'opoczyński'),\n    ('pabianicki', 'pabianicki'),\n    ('pajeczanski', 'pajęczański'),\n    ('piotrkowski', 'piotrkowski'),\n    ('poddebicki', 'poddębicki'),\n    ('radomszczanski', 'radomszczański'),\n    ('rawski', 'rawski'),\n    ('sieradzki', 'sieradzki'),\n    ('skierniewicki', 'skierniewicki'),\n    ('tomaszowski', 'tomaszowski'),\n    ('wielunski', 'wieluński'),\n    ('wieruszowski', 'wieruszowski'),\n    ('zdunskowolski', 'zduńskowolski'),\n    ('zgierski', 'zgierski'),\n    ('krakow', 'Kraków'),\n    ('tarnow', 'Tarnów'),\n    ('nowy-sacz', 'Nowy Sącz'),\n    ('bochenski', 'bocheński'),\n    ('brzeski', 'brzeski'),\n    ('chrzanowski', 'chrzanowski'),\n    ('dabrowski', 'dąbrowski'),\n    ('gorlicki', 'gorlicki'),\n    ('krakowski', 'krakowski'),\n    ('limanowski', 'limanowski'),\n    ('miechowski', 'miechowski'),\n    ('myslenicki', 'myślenicki'),\n    ('nowosadecki', 'nowosądecki'),\n    ('nowotarski', 'nowotarski'),\n    ('olkuski', 'olkuski'),\n    ('oswiecimski', 'oświęcimski'),\n    ('proszowicki', 'proszowicki'),\n    ('suski', 'suski'),\n    ('tarnowski', 'tarnowski'),\n    ('tatrzanski', 'tatrzański'),\n    ('wadowicki', 'wadowicki'),\n    ('wielicki', 'wielicki'),\n    ('warszawa', 'Warszawa'),\n    ('ostroleka', 'Ostrołęka'),\n    ('plock', 'Płock'),\n    ('radom', 'Radom'),\n    ('siedlce', 'Siedlce'),\n    ('bialobrzeski', 'białobrzeski'),\n    ('ciechanowski', 'ciechanowski'),\n    ('garwolinski', 'garwoliński'),\n    ('gostyninski', 'gostyniński'),\n    ('grodziski', 'grodziski'),\n    ('grojecki', 'grójecki'),\n    ('kozienicki', 'kozenicki'),\n    ('legionowski', 'legionowski'),\n    ('lipski', 'lipski'),\n    ('losicki', 'łosicki'),\n    ('makowski', 'makowski'),\n    ('minski', 'miński'),\n    ('mlawski', 'mławski'),\n    ('nowodworski', 'nowodworski'),\n    ('ostrolecki', 'ostrołęcki'),\n    ('ostrowski', 'ostrowski'),\n    ('otwocki', 'otwocki'),\n    ('piaseczynski', 'piaseczyński'),\n    ('plocki', 'płocki'),\n    ('plonski', 'płoński'),\n    ('pruszkowski', 'pruszkowski'),\n    ('przasnyski', 'przasnyski'),\n    ('przysuski', 'przysuski'),\n    ('pultuski', 'pułtuski'),\n    ('radomski', 'radomski'),\n    ('siedlecki', 'siedlecki'),\n    ('sierpecki', 'sierpecki'),\n    ('sochaczewski', 'sochaczewski'),\n    ('sokolowski', 'sokołowski'),\n    ('szydlowiecki', 'szydłowiecki'),\n    ('warszawski-zachodni', 'warszawski zachodni'),\n    ('wegrowski', 'węgrowski'),\n    ('wolominski', 'wołomiński'),\n    ('wyszkowski', 'wyszkowski'),\n    ('zwolenski', 'zwoleński'),\n    ('zurominski', 'żuromiński'),\n    ('zyrardowski', 'żyrardowski'),\n    ('opole', 'Opole'),\n    ('brzeski', 'brzeski'),\n    ('glubczycki', 'głubczyski'),\n    ('kedzierzynsko-kozielski', 'kędzierzyński-kozielski'),\n    ('kluczborski', 'kluczborski'),\n    ('krapkowicki', 'krapkowicki'),\n    ('namyslowski', 'namysłowski'),\n    ('nyski', 'nyski'),\n    ('oleski', 'oleski'),\n    ('opolski', 'opolski'),\n    ('prudnicki', 'prudnicki'),\n    ('strzelecki', 'strzelecki'),\n    ('rzeszow', 'Rzeszów'),\n    ('krosno', 'Krosno'),\n    ('przemysl', 'Przemyśl'),\n    ('tarnobrzeg', 'Tarnobrzeg'),\n    ('bieszczadzki', 'bieszczadzki'),\n    ('brzozowski', 'brzozowski'),\n    ('debicki', 'dębicki'),\n    ('jaroslawski', 'jarosławski'),\n    ('jasielski', 'jasielski'),\n    ('kolbuszowski', 'kolbuszowski'),\n    ('krosnienski', 'krośnieński'),\n    ('leski', 'leski'),\n    ('lezajski', 'leżajski'),\n    ('lubaczowski', 'lubaczowski'),\n    ('lancucki', 'łańcucki'),\n    ('mielecki', 'mielecki'),\n    ('nizanski', 'niżański'),\n    ('przemyski', 'przemyski'),\n    ('przeworski', 'przeworski'),\n    ('ropczycko-sedziszowski', 'ropczycko-sędziszowski'),\n    ('rzeszowski', 'rzeszowski'),\n    ('sanocki', 'sanocki'),\n    ('stalowowolski', 'stalowowolski'),\n    ('strzyzowski', 'strzyżowski'),\n    ('tarnobrzeski', 'tarnobrzeski'),\n    ('bialystok', 'Białystok'),\n    ('lomza', 'Łomża'),\n    ('suwalki', 'Suwałki'),\n    ('augustowski', 'augustowski'),\n    ('bialostocki', 'białostocki'),\n    ('bielski', 'bielski'),\n    ('grajewski', 'grajewski'),\n    ('hajnowski', 'hajnowski'),\n    ('kolnenski', 'kolneński'),\n    ('łomzynski', 'łomżyński'),\n    ('moniecki', 'moniecki'),\n    ('sejnenski', 'sejneński'),\n    ('siemiatycki', 'siematycki'),\n    ('sokolski', 'sokólski'),\n    ('suwalski', 'suwalski'),\n    ('wysokomazowiecki', 'wysokomazowiecki'),\n    ('zambrowski', 'zambrowski'),\n    ('gdansk', 'Gdańsk'),\n    ('gdynia', 'Gdynia'),\n    ('slupsk', 'Słupsk'),\n    ('sopot', 'Sopot'),\n    ('bytowski', 'bytowski'),\n    ('chojnicki', 'chojnicki'),\n    ('czluchowski', 'człuchowski'),\n    ('kartuski', 'kartuski'),\n    ('koscierski', 'kościerski'),\n    ('kwidzynski', 'kwidzyński'),\n    ('leborski', 'lęborski'),\n    ('malborski', 'malborski'),\n    ('nowodworski', 'nowodworski'),\n    ('gdanski', 'gdański'),\n    ('pucki', 'pucki'),\n    ('slupski', 'słupski'),\n    ('starogardzki', 'starogardzki'),\n    ('sztumski', 'sztumski'),\n    ('tczewski', 'tczewski'),\n    ('wejherowski', 'wejcherowski'),\n    ('katowice', 'Katowice'),\n    ('bielsko-biala', 'Bielsko-Biała'),\n    ('bytom', 'Bytom'),\n    ('chorzow', 'Chorzów'),\n    ('czestochowa', 'Częstochowa'),\n    ('dabrowa-gornicza', 'Dąbrowa Górnicza'),\n    ('gliwice', 'Gliwice'),\n    ('jastrzebie-zdroj', 'Jastrzębie Zdrój'),\n    ('jaworzno', 'Jaworzno'),\n    ('myslowice', 'Mysłowice'),\n    ('piekary-slaskie', 'Piekary Śląskie'),\n    ('ruda-slaska', 'Ruda Śląska'),\n    ('rybnik', 'Rybnik'),\n    ('siemianowice-slaskie', 'Siemianowice Śląskie'),\n    ('sosnowiec', 'Sosnowiec'),\n    ('swietochlowice', 'Świętochłowice'),\n    ('tychy', 'Tychy'),\n    ('zabrze', 'Zabrze'),\n    ('zory', 'Żory'),\n    ('bedzinski', 'będziński'),\n    ('bielski', 'bielski'),\n    ('bierunsko-ledzinski', 'bieruńsko-lędziński'),\n    ('cieszynski', 'cieszyński'),\n    ('czestochowski', 'częstochowski'),\n    ('gliwicki', 'gliwicki'),\n    ('klobucki', 'kłobucki'),\n    ('lubliniecki', 'lubliniecki'),\n    ('mikolowski', 'mikołowski'),\n    ('myszkowski', 'myszkowski'),\n    ('pszczynski', 'pszczyński'),\n    ('raciborski', 'raciborski'),\n    ('rybnicki', 'rybnicki'),\n    ('tarnogorski', 'tarnogórski'),\n    ('wodzislawski', 'wodzisławski'),\n    ('zawiercianski', 'zawierciański'),\n    ('zywiecki', 'żywiecki'),\n    ('kielce', 'Kielce'),\n    ('buski', 'buski'),\n    ('jedrzejowski', 'jędrzejowski'),\n    ('kazimierski', 'kazimierski'),\n    ('kielecki', 'kielecki'),\n    ('konecki', 'konecki'),\n    ('opatowski', 'opatowski'),\n    ('ostrowiecki', 'ostrowiecki'),\n    ('pinczowski', 'pińczowski'),\n    ('sandomierski', 'sandomierski'),\n    ('skarzyski', 'skarżyski'),\n    ('starachowicki', 'starachowicki'),\n    ('staszowski', 'staszowski'),\n    ('wloszczowski', 'włoszczowski'),\n    ('olsztyn', 'Olsztyn'),\n    ('elblag', 'Elbląg'),\n    ('bartoszycki', 'bartoszycki'),\n    ('braniewski', 'braniewski'),\n    ('dzialdowski', 'działdowski'),\n    ('elblaski', 'elbląski'),\n    ('elcki', 'ełcki'),\n    ('gizycki', 'giżycki'),\n    ('goldapski', 'gołdapski'),\n    ('ilawski', 'iławski'),\n    ('ketrzynski', 'kętrzyński'),\n    ('lidzbarski', 'lidzbarski'),\n    ('mragowski', 'mrągowski'),\n    ('nidzicki', 'nidzicki'),\n    ('nowomiejski', 'nowomiejski'),\n    ('olecki', 'olecki'),\n    ('olsztynski', 'olsztyński'),\n    ('ostrodzki', 'ostródzki'),\n    ('piski', 'piski'),\n    ('szczycienski', 'szczycieński'),\n    ('wegorzewski', 'węgorzewski'),\n    ('poznan', 'Poznań'),\n    ('kalisz', 'Kalisz'),\n    ('konin', 'Konin'),\n    ('leszno', 'Leszno'),\n    ('chodzieski', 'chodziejski'),\n    ('czarnkowsko-trzcianecki', 'czarnkowsko-trzcianecki'),\n    ('gnieznienski', 'gnieźnieński'),\n    ('gostynski', 'gostyński'),\n    ('grodziski', 'grodziski'),\n    ('jarocinski', 'jarociński'),\n    ('kaliski', 'kaliski'),\n    ('kepinski', 'kępiński'),\n    ('kolski', 'kolski'),\n    ('koninski', 'koniński'),\n    ('koscianski', 'kościański'),\n    ('krotoszynski', 'krotoszyński'),\n    ('leszczynski', 'leszczyński'),\n    ('miedzychodzki', 'międzychodzki'),\n    ('nowotomyski', 'nowotomyski'),\n    ('obornicki', 'obornicki'),\n    ('ostrowski', 'ostrowski'),\n    ('ostrzeszowski', 'ostrzeszowski'),\n    ('pilski', 'pilski'),\n    ('pleszewski', 'pleszewski'),\n    ('poznanski', 'poznański'),\n    ('rawicki', 'rawicki'),\n    ('slupecki', 'słupecki'),\n    ('szamotulski', 'szamotulski'),\n    ('sredzki', 'średzki'),\n    ('sremski', 'śremski'),\n    ('turecki', 'turecki'),\n    ('wagrowiecki', 'wągrowiecki'),\n    ('wolsztynski', 'wolsztyński'),\n    ('wrzesinski', 'wrzesiński'),\n    ('zlotowski', 'złotowski'),\n    ('bialogardzki', 'białogardzki'),\n    ('choszczenski', 'choszczeński'),\n    ('drawski', 'drawski'),\n    ('goleniowski', 'goleniowski'),\n    ('gryficki', 'gryficki'),\n    ('gryfinski', 'gryfiński'),\n    ('kamienski', 'kamieński'),\n    ('kolobrzeski', 'kołobrzeski'),\n    ('koszalinski', 'koszaliński'),\n    ('lobeski', 'łobeski'),\n    ('mysliborski', 'myśliborski'),\n    ('policki', 'policki'),\n    ('pyrzycki', 'pyrzycki'),\n    ('slawienski', 'sławieński'),\n    ('stargardzki', 'stargardzki'),\n    ('szczecinecki', 'szczecinecki'),\n    ('swidwinski', 'świdwiński'),\n    ('walecki', 'wałecki'),\n)\n\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/pl/pl_voivodeships.py",
    "content": "\"\"\"\nPolish voivodeship as in http://en.wikipedia.org/wiki/Poland#Administrative_division\n\"\"\"\n\nfrom django.utils.translation import ugettext_lazy as _\n\nVOIVODESHIP_CHOICES = (\n    ('lower_silesia', _('Lower Silesia')),\n    ('kuyavia-pomerania', _('Kuyavia-Pomerania')),\n    ('lublin', _('Lublin')),\n    ('lubusz', _('Lubusz')),\n    ('lodz', _('Lodz')),\n    ('lesser_poland', _('Lesser Poland')),\n    ('masovia', _('Masovia')),\n    ('opole', _('Opole')),\n    ('subcarpatia', _('Subcarpatia')),\n    ('podlasie', _('Podlasie')),\n    ('pomerania', _('Pomerania')),\n    ('silesia', _('Silesia')),\n    ('swietokrzyskie', _('Swietokrzyskie')),\n    ('warmia-masuria', _('Warmia-Masuria')),\n    ('greater_poland', _('Greater Poland')),\n    ('west_pomerania', _('West Pomerania')),\n)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/pt/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/pt/forms.py",
    "content": "\"\"\"\nPT-specific Form helpers\n\"\"\"\nfrom __future__ import unicode_literals\n\nimport re\n\nfrom django.core.validators import EMPTY_VALUES\nfrom django.forms import ValidationError\nfrom django.forms.fields import Field, RegexField\nfrom django.utils.encoding import smart_text\nfrom django.utils.translation import ugettext_lazy as _\n\nphone_digits_re = re.compile(r'^(\\d{9}|(00|\\+)\\d*)$')\n\n\nclass PTZipCodeField(RegexField):\n    default_error_messages = {\n        'invalid': _('Enter a zip code in the format XXXX-XXX.'),\n    }\n\n    def __init__(self, max_length=None, min_length=None, *args, **kwargs):\n        super(PTZipCodeField, self).__init__(r'^(\\d{4}-\\d{3}|\\d{7})$',\n            max_length, min_length, *args, **kwargs)\n\n    def clean(self,value):\n        cleaned = super(PTZipCodeField, self).clean(value)\n        if len(cleaned) == 7:\n           return '%s-%s' % (cleaned[:4],cleaned[4:])\n        else:\n           return cleaned\n\nclass PTPhoneNumberField(Field):\n    \"\"\"\n    Validate local Portuguese phone number (including international ones)\n    It should have 9 digits (may include spaces) or start by 00 or + (international)\n    \"\"\"\n    default_error_messages = {\n        'invalid': _('Phone numbers must have 9 digits, or start by + or 00.'),\n    }\n\n    def clean(self, value):\n        super(PTPhoneNumberField, self).clean(value)\n        if value in EMPTY_VALUES:\n            return ''\n        value = re.sub('(\\.|\\s)', '', smart_text(value))\n        m = phone_digits_re.search(value)\n        if m:\n            return '%s' % value\n        raise ValidationError(self.error_messages['invalid'])\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/py/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/py/forms.py",
    "content": "\"\"\"\nPY-specific Form helpers.\n\"\"\"\n\nfrom __future__ import absolute_import\n\nfrom django.contrib.localflavor.py.py_department import DEPARTMENT_CHOICES, DEPARTMENT_ROMAN_CHOICES\nfrom django.forms.fields import Select\n\n\nclass PyDepartmentSelect(Select):\n    \"\"\"\n    A Select widget with a list of Paraguayan departments as choices.\n    \"\"\"\n    def __init__(self, attrs=None):\n        super(PyDepartmentSelect, self).__init__(attrs, choices=DEPARTMENT_CHOICES)\n\n\nclass PyNumberedDepartmentSelect(Select):\n    \"\"\"\n    A Select widget with a roman numbered list of Paraguayan departments as choices.\n    \"\"\"\n    def __init__(self, attrs=None):\n        super(PyNumberedDepartmentSelect, self).__init__(attrs, choices=DEPARTMENT_ROMAN_CHOICES)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/py/py_department.py",
    "content": "# -*- coding: utf-8 -*-\n\n# http://www.statoids.com/upy.html\nfrom __future__ import unicode_literals\n\nDEPARTMENT_CHOICES = (\n    ('AG', 'Alto Paraguay'),\n    ('AA', 'Alto Paraná'),\n    ('AM', 'Amambay'),\n    ('AS', 'Asunción'),\n    ('BQ', 'Boquerón'),\n    ('CG', 'Caaguazú'),\n    ('CZ', 'Caazapá'),\n    ('CY', 'Canindeyú'),\n    ('CE', 'Central'),\n    ('CN', 'Concepción'),\n    ('CR', 'Cordillera'),\n    ('GU', 'Guairá'),\n    ('IT', 'Itapúa'),\n    ('MI', 'Misiones'),\n    ('NE', 'Ñeembucú'),\n    ('PG', 'Paraguarí'),\n    ('PH', 'Pdte. Hayes'),\n    ('SP', 'San Pedro'),\n)\n\nDEPARTMENT_ROMAN_CHOICES = (\n    ('CN', 'I Concepción'),\n    ('SP', 'II San Pedro'),\n    ('CR', 'III Cordillera'),\n    ('GU', 'IV Guairá'),\n    ('CG', 'V Caaguazú'),\n    ('CZ', 'VI Caazapá'),\n    ('IT', 'VII Itapúa'),\n    ('MI', 'VIII Misiones'),\n    ('PG', 'IX Paraguarí'),\n    ('AA', 'X Alto Paraná'),\n    ('CE', 'XI Central'),\n    ('NE', 'XII Ñeembucú'),\n    ('AM', 'XIII Amambay'),\n    ('CY', 'XIV Canindeyú'),\n    ('PH', 'XV Pdte. Hayes'),\n    ('AG', 'XVI Alto Paraguay'),\n    ('BQ', 'XVII Boquerón'),\n    ('AS', 'XVIII Asunción'),\n)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/ro/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/ro/forms.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nRomanian specific form helpers.\n\"\"\"\nfrom __future__ import absolute_import, unicode_literals\n\nimport datetime\n\nfrom django.contrib.localflavor.ro.ro_counties import COUNTIES_CHOICES\nfrom django.core.validators import EMPTY_VALUES\nfrom django.forms import ValidationError, Field, RegexField, Select\nfrom django.utils.translation import ugettext_lazy as _\n\n\nclass ROCIFField(RegexField):\n    \"\"\"\n    A Romanian fiscal identity code (CIF) field\n\n    For CIF validation algorithm see http://www.validari.ro/cui.html\n    \"\"\"\n    default_error_messages = {\n        'invalid': _(\"Enter a valid CIF.\"),\n    }\n\n    def __init__(self, max_length=10, min_length=2, *args, **kwargs):\n        super(ROCIFField, self).__init__(r'^(RO)?[0-9]{2,10}', max_length,\n                min_length, *args, **kwargs)\n\n    def clean(self, value):\n        \"\"\"\n        CIF validation\n        \"\"\"\n        value = super(ROCIFField, self).clean(value)\n        if value in EMPTY_VALUES:\n            return ''\n        # strip RO part\n        if value[0:2] == 'RO':\n            value = value[2:]\n        key = '753217532'[::-1]\n        value = value[::-1]\n        key_iter = iter(key)\n        checksum = 0\n        for digit in value[1:]:\n            checksum += int(digit) * int(next(key_iter))\n        checksum = checksum * 10 % 11\n        if checksum == 10:\n            checksum = 0\n        if checksum != int(value[0]):\n            raise ValidationError(self.error_messages['invalid'])\n        return value[::-1]\n\nclass ROCNPField(RegexField):\n    \"\"\"\n    A Romanian personal identity code (CNP) field\n\n    For CNP validation algorithm see http://www.validari.ro/cnp.html\n    \"\"\"\n    default_error_messages = {\n        'invalid': _(\"Enter a valid CNP.\"),\n    }\n\n    def __init__(self, max_length=13, min_length=13, *args, **kwargs):\n        super(ROCNPField, self).__init__(r'^[1-9][0-9]{12}', max_length,\n            min_length, *args, **kwargs)\n\n    def clean(self, value):\n        \"\"\"\n        CNP validations\n        \"\"\"\n        value = super(ROCNPField, self).clean(value)\n        if value in EMPTY_VALUES:\n            return ''\n        # check birthdate digits\n        try:\n            datetime.date(int(value[1:3]), int(value[3:5]), int(value[5:7]))\n        except ValueError:\n            raise ValidationError(self.error_messages['invalid'])\n        # checksum\n        key = '279146358279'\n        checksum = 0\n        value_iter = iter(value)\n        for digit in key:\n            checksum += int(digit) * int(next(value_iter))\n        checksum %= 11\n        if checksum == 10:\n            checksum = 1\n        if checksum != int(value[12]):\n            raise ValidationError(self.error_messages['invalid'])\n        return value\n\nclass ROCountyField(Field):\n    \"\"\"\n    A form field that validates its input is a Romanian county name or\n    abbreviation. It normalizes the input to the standard vehicle registration\n    abbreviation for the given county\n\n    WARNING: This field will only accept names written with diacritics; consider\n    using ROCountySelect if this behavior is unnaceptable for you\n    Example:\n        Argeş => valid\n        Arges => invalid\n    \"\"\"\n    default_error_messages = {\n        'invalid': 'Enter a Romanian county code or name.',\n    }\n\n    def clean(self, value):\n        super(ROCountyField, self).clean(value)\n        if value in EMPTY_VALUES:\n            return ''\n        try:\n            value = value.strip().upper()\n        except AttributeError:\n            pass\n        # search for county code\n        for entry in COUNTIES_CHOICES:\n            if value in entry:\n                return value\n        # search for county name\n        normalized_CC = []\n        for entry in COUNTIES_CHOICES:\n            normalized_CC.append((entry[0], entry[1].upper()))\n        for entry in normalized_CC:\n            if entry[1] == value:\n                return entry[0]\n        raise ValidationError(self.error_messages['invalid'])\n\nclass ROCountySelect(Select):\n    \"\"\"\n    A Select widget that uses a list of Romanian counties (judete) as its\n    choices.\n    \"\"\"\n    def __init__(self, attrs=None):\n        super(ROCountySelect, self).__init__(attrs, choices=COUNTIES_CHOICES)\n\nclass ROIBANField(RegexField):\n    \"\"\"\n    Romanian International Bank Account Number (IBAN) field\n\n    For Romanian IBAN validation algorithm see http://validari.ro/iban.html\n    \"\"\"\n    default_error_messages = {\n        'invalid': _('Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format'),\n    }\n\n    def __init__(self, max_length=40, min_length=24, *args, **kwargs):\n        super(ROIBANField, self).__init__(r'^[0-9A-Za-z\\-\\s]{24,40}$',\n                max_length, min_length, *args, **kwargs)\n\n    def clean(self, value):\n        \"\"\"\n        Strips - and spaces, performs country code and checksum validation\n        \"\"\"\n        value = super(ROIBANField, self).clean(value)\n        if value in EMPTY_VALUES:\n            return ''\n        value = value.replace('-', '')\n        value = value.replace(' ', '')\n        value = value.upper()\n        if value[0:2] != 'RO':\n            raise ValidationError(self.error_messages['invalid'])\n        numeric_format = ''\n        for char in value[4:] + value[0:4]:\n            if char.isalpha():\n                numeric_format += str(ord(char) - 55)\n            else:\n                numeric_format += char\n        if int(numeric_format) % 97 != 1:\n            raise ValidationError(self.error_messages['invalid'])\n        return value\n\nclass ROPhoneNumberField(RegexField):\n    \"\"\"Romanian phone number field\"\"\"\n    default_error_messages = {\n        'invalid': _('Phone numbers must be in XXXX-XXXXXX format.'),\n    }\n\n    def __init__(self, max_length=20, min_length=10, *args, **kwargs):\n        super(ROPhoneNumberField, self).__init__(r'^[0-9\\-\\(\\)\\s]{10,20}$',\n                max_length, min_length, *args, **kwargs)\n\n    def clean(self, value):\n        \"\"\"\n        Strips -, (, ) and spaces. Checks the final length.\n        \"\"\"\n        value = super(ROPhoneNumberField, self).clean(value)\n        if value in EMPTY_VALUES:\n            return ''\n        value = value.replace('-', '')\n        value = value.replace('(', '')\n        value = value.replace(')', '')\n        value = value.replace(' ', '')\n        if len(value) != 10:\n            raise ValidationError(self.error_messages['invalid'])\n        return value\n\nclass ROPostalCodeField(RegexField):\n    \"\"\"Romanian postal code field.\"\"\"\n    default_error_messages = {\n        'invalid': _('Enter a valid postal code in the format XXXXXX'),\n    }\n\n    def __init__(self, max_length=6, min_length=6, *args, **kwargs):\n        super(ROPostalCodeField, self).__init__(r'^[0-9][0-8][0-9]{4}$',\n                max_length, min_length, *args, **kwargs)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/ro/ro_counties.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nA list of Romanian counties as `choices` in a formfield.\n\nThis exists as a standalone file so that it's only imported into memory when\nexplicitly needed.\n\"\"\"\nfrom __future__ import unicode_literals\n\nCOUNTIES_CHOICES = (\n    ('AB', 'Alba'),\n    ('AR', 'Arad'),\n    ('AG', 'Argeş'),\n    ('BC', 'Bacău'),\n    ('BH', 'Bihor'),\n    ('BN', 'Bistriţa-Năsăud'),\n    ('BT', 'Botoşani'),\n    ('BV', 'Braşov'),\n    ('BR', 'Brăila'),\n    ('B',  'Bucureşti'),\n    ('BZ', 'Buzău'),\n    ('CS', 'Caraş-Severin'),\n    ('CL', 'Călăraşi'),\n    ('CJ', 'Cluj'),\n    ('CT', 'Constanţa'),\n    ('CV', 'Covasna'),\n    ('DB', 'Dâmboviţa'),\n    ('DJ', 'Dolj'),\n    ('GL', 'Galaţi'),\n    ('GR', 'Giurgiu'),\n    ('GJ', 'Gorj'),\n    ('HR', 'Harghita'),\n    ('HD', 'Hunedoara'),\n    ('IL', 'Ialomiţa'),\n    ('IS', 'Iaşi'),\n    ('IF', 'Ilfov'),\n    ('MM', 'Maramureş'),\n    ('MH', 'Mehedinţi'),\n    ('MS', 'Mureş'),\n    ('NT', 'Neamţ'),\n    ('OT', 'Olt'),\n    ('PH', 'Prahova'),\n    ('SM', 'Satu Mare'),\n    ('SJ', 'Sălaj'),\n    ('SB', 'Sibiu'),\n    ('SV', 'Suceava'),\n    ('TR', 'Teleorman'),\n    ('TM', 'Timiş'),\n    ('TL', 'Tulcea'),\n    ('VS', 'Vaslui'),\n    ('VL', 'Vâlcea'),\n    ('VN', 'Vrancea'),\n)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/ru/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/ru/forms.py",
    "content": "\"\"\"\nRussian-specific forms helpers\n\"\"\"\nfrom __future__ import absolute_import, unicode_literals\n\nimport re\n\nfrom django.contrib.localflavor.ru.ru_regions import RU_COUNTY_CHOICES, RU_REGIONS_CHOICES\nfrom django.forms.fields import RegexField, Select\nfrom django.utils.translation import ugettext_lazy as _\n\n\nphone_digits_re = re.compile(r'^(?:[78]-?)?(\\d{3})[-\\.]?(\\d{3})[-\\.]?(\\d{4})$')\n\nclass RUCountySelect(Select):\n    \"\"\"\n    A Select widget that uses a list of Russian Counties as its choices.\n    \"\"\"\n    def __init__(self, attrs=None):\n        super(RUCountySelect, self).__init__(attrs, choices=RU_COUNTY_CHOICES)\n\n\nclass RURegionSelect(Select):\n    \"\"\"\n    A Select widget that uses a list of Russian Regions as its choices.\n    \"\"\"\n    def __init__(self, attrs=None):\n        super(RURegionSelect, self).__init__(attrs, choices=RU_REGIONS_CHOICES)\n\n\nclass RUPostalCodeField(RegexField):\n    \"\"\"\n    Russian Postal code field.\n    Format: XXXXXX, where X is any digit, and first digit is not zero.\n    \"\"\"\n    default_error_messages = {\n        'invalid': _('Enter a postal code in the format XXXXXX.'),\n    }\n    def __init__(self, max_length=None, min_length=None, *args, **kwargs):\n        super(RUPostalCodeField, self).__init__(r'^\\d{6}$',\n            max_length, min_length, *args, **kwargs)\n\n\nclass RUPassportNumberField(RegexField):\n    \"\"\"\n    Russian internal passport number format:\n    XXXX XXXXXX where X - any digit.\n    \"\"\"\n    default_error_messages = {\n        'invalid': _('Enter a passport number in the format XXXX XXXXXX.'),\n    }\n    def __init__(self, max_length=None, min_length=None, *args, **kwargs):\n        super(RUPassportNumberField, self).__init__(r'^\\d{4} \\d{6}$',\n            max_length, min_length, *args, **kwargs)\n\n\nclass RUAlienPassportNumberField(RegexField):\n    \"\"\"\n    Russian alien's passport number format:\n    XX XXXXXXX where X - any digit.\n    \"\"\"\n    default_error_messages = {\n        'invalid': _('Enter a passport number in the format XX XXXXXXX.'),\n    }\n    def __init__(self, max_length=None, min_length=None, *args, **kwargs):\n        super(RUAlienPassportNumberField, self).__init__(r'^\\d{2} \\d{7}$',\n            max_length, min_length, *args, **kwargs)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/ru/ru_regions.py",
    "content": "# -*- encoding: utf-8 -*-\n\"\"\"\nSources:\n    http://ru.wikipedia.org/wiki/Коды_субъектов_Российской_Федерации\n    http://ru.wikipedia.org/wiki/Федеральные_округа_Российской_Федерации\n\"\"\"\nfrom django.utils.translation import ugettext_lazy as _\n\nRU_COUNTY_CHOICES = (\n    (\"Central Federal County\", _(\"Central Federal County\")),\n    (\"South Federal County\", _(\"South Federal County\")),\n    (\"North-West Federal County\", _(\"North-West Federal County\")),\n    (\"Far-East Federal County\", _(\"Far-East Federal County\")),\n    (\"Siberian Federal County\", _(\"Siberian Federal County\")),\n    (\"Ural Federal County\", _(\"Ural Federal County\")),\n    (\"Privolzhsky Federal County\", _(\"Privolzhsky Federal County\")),\n    (\"North-Caucasian Federal County\", _(\"North-Caucasian Federal County\"))\n)\n\nRU_REGIONS_CHOICES = (\n    (\"77\", _(\"Moskva\")),\n    (\"78\", _(\"Saint-Peterburg\")),\n    (\"50\", _(\"Moskovskaya oblast'\")),\n    (\"01\", _(\"Adygeya, Respublika\")),\n    (\"02\", _(\"Bashkortostan, Respublika\")),\n    (\"03\", _(\"Buryatia, Respublika\")),\n    (\"04\", _(\"Altay, Respublika\")),\n    (\"05\", _(\"Dagestan, Respublika\")),\n    (\"06\", _(\"Ingushskaya Respublika\")),\n    (\"07\", _(\"Kabardino-Balkarskaya Respublika\")),\n    (\"08\", _(\"Kalmykia, Respublika\")),\n    (\"09\", _(\"Karachaevo-Cherkesskaya Respublika\")),\n    (\"10\", _(\"Karelia, Respublika\")),\n    (\"11\", _(\"Komi, Respublika\")),\n    (\"12\", _(\"Mariy Ehl, Respublika\")),\n    (\"13\", _(\"Mordovia, Respublika\")),\n    (\"14\", _(\"Sakha, Respublika (Yakutiya)\")),\n    (\"15\", _(\"Severnaya Osetia, Respublika (Alania)\")),\n    (\"16\", _(\"Tatarstan, Respublika\")),\n    (\"17\", _(\"Tyva, Respublika (Tuva)\")),\n    (\"18\", _(\"Udmurtskaya Respublika\")),\n    (\"19\", _(\"Khakassiya, Respublika\")),\n    (\"95\", _(\"Chechenskaya Respublika\")),\n    (\"21\", _(\"Chuvashskaya Respublika\")),\n    (\"22\", _(\"Altayskiy Kray\")),\n    (\"80\", _(\"Zabaykalskiy Kray\")),\n    (\"82\", _(\"Kamchatskiy Kray\")),\n    (\"23\", _(\"Krasnodarskiy Kray\")),\n    (\"24\", _(\"Krasnoyarskiy Kray\")),\n    (\"81\", _(\"Permskiy Kray\")),\n    (\"25\", _(\"Primorskiy Kray\")),\n    (\"26\", _(\"Stavropol'siyy Kray\")),\n    (\"27\", _(\"Khabarovskiy Kray\")),\n    (\"28\", _(\"Amurskaya oblast'\")),\n    (\"29\", _(\"Arkhangel'skaya oblast'\")),\n    (\"30\", _(\"Astrakhanskaya oblast'\")),\n    (\"31\", _(\"Belgorodskaya oblast'\")),\n    (\"32\", _(\"Bryanskaya oblast'\")),\n    (\"33\", _(\"Vladimirskaya oblast'\")),\n    (\"34\", _(\"Volgogradskaya oblast'\")),\n    (\"35\", _(\"Vologodskaya oblast'\")),\n    (\"36\", _(\"Voronezhskaya oblast'\")),\n    (\"37\", _(\"Ivanovskaya oblast'\")),\n    (\"38\", _(\"Irkutskaya oblast'\")),\n    (\"39\", _(\"Kaliningradskaya oblast'\")),\n    (\"40\", _(\"Kaluzhskaya oblast'\")),\n    (\"42\", _(\"Kemerovskaya oblast'\")),\n    (\"43\", _(\"Kirovskaya oblast'\")),\n    (\"44\", _(\"Kostromskaya oblast'\")),\n    (\"45\", _(\"Kurganskaya oblast'\")),\n    (\"46\", _(\"Kurskaya oblast'\")),\n    (\"47\", _(\"Leningradskaya oblast'\")),\n    (\"48\", _(\"Lipeckaya oblast'\")),\n    (\"49\", _(\"Magadanskaya oblast'\")),\n    (\"51\", _(\"Murmanskaya oblast'\")),\n    (\"52\", _(\"Nizhegorodskaja oblast'\")),\n    (\"53\", _(\"Novgorodskaya oblast'\")),\n    (\"54\", _(\"Novosibirskaya oblast'\")),\n    (\"55\", _(\"Omskaya oblast'\")),\n    (\"56\", _(\"Orenburgskaya oblast'\")),\n    (\"57\", _(\"Orlovskaya oblast'\")),\n    (\"58\", _(\"Penzenskaya oblast'\")),\n    (\"60\", _(\"Pskovskaya oblast'\")),\n    (\"61\", _(\"Rostovskaya oblast'\")),\n    (\"62\", _(\"Rjazanskaya oblast'\")),\n    (\"63\", _(\"Samarskaya oblast'\")),\n    (\"64\", _(\"Saratovskaya oblast'\")),\n    (\"65\", _(\"Sakhalinskaya oblast'\")),\n    (\"66\", _(\"Sverdlovskaya oblast'\")),\n    (\"67\", _(\"Smolenskaya oblast'\")),\n    (\"68\", _(\"Tambovskaya oblast'\")),\n    (\"69\", _(\"Tverskaya oblast'\")),\n    (\"70\", _(\"Tomskaya oblast'\")),\n    (\"71\", _(\"Tul'skaya oblast'\")),\n    (\"72\", _(\"Tyumenskaya oblast'\")),\n    (\"73\", _(\"Ul'ianovskaya oblast'\")),\n    (\"74\", _(\"Chelyabinskaya oblast'\")),\n    (\"76\", _(\"Yaroslavskaya oblast'\")),\n    (\"79\", _(\"Evreyskaya avtonomnaja oblast'\")),\n    (\"83\", _(\"Neneckiy autonomnyy okrug\")),\n    (\"86\", _(\"Khanty-Mansiyskiy avtonomnyy okrug - Yugra\")),\n    (\"87\", _(\"Chukotskiy avtonomnyy okrug\")),\n    (\"89\", _(\"Yamalo-Neneckiy avtonomnyy okrug\"))\n)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/se/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/se/forms.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nSwedish specific Form helpers\n\"\"\"\nfrom __future__ import absolute_import, unicode_literals\n\nimport re\n\nfrom django import forms\nfrom django.utils.translation import ugettext_lazy as _\nfrom django.core.validators import EMPTY_VALUES\nfrom django.contrib.localflavor.se.se_counties import COUNTY_CHOICES\nfrom django.contrib.localflavor.se.utils import (id_number_checksum,\n    validate_id_birthday, format_personal_id_number, valid_organisation,\n    format_organisation_number)\n\n\n__all__ = ('SECountySelect', 'SEOrganisationNumberField',\n    'SEPersonalIdentityNumberField', 'SEPostalCodeField')\n\nSWEDISH_ID_NUMBER = re.compile(r'^(?P<century>\\d{2})?(?P<year>\\d{2})(?P<month>\\d{2})(?P<day>\\d{2})(?P<sign>[\\-+])?(?P<serial>\\d{3})(?P<checksum>\\d)$')\nSE_POSTAL_CODE = re.compile(r'^[1-9]\\d{2} ?\\d{2}$')\n\nclass SECountySelect(forms.Select):\n    \"\"\"\n    A Select form widget that uses a list of the Swedish counties (län) as its\n    choices.\n\n    The cleaned value is the official county code -- see\n    http://en.wikipedia.org/wiki/Counties_of_Sweden for a list.\n    \"\"\"\n\n    def __init__(self, attrs=None):\n        super(SECountySelect, self).__init__(attrs=attrs,\n                                             choices=COUNTY_CHOICES)\n\nclass SEOrganisationNumberField(forms.CharField):\n    \"\"\"\n    A form field that validates input as a Swedish organisation number\n    (organisationsnummer).\n\n    It accepts the same input as SEPersonalIdentityField (for sole\n    proprietorships (enskild firma). However, co-ordination numbers are not\n    accepted.\n\n    It also accepts ordinary Swedish organisation numbers with the format\n    NNNNNNNNNN.\n\n    The return value will be YYYYMMDDXXXX for sole proprietors, and NNNNNNNNNN\n    for other organisations.\n    \"\"\"\n\n    default_error_messages = {\n        'invalid': _('Enter a valid Swedish organisation number.'),\n    }\n\n    def clean(self, value):\n        value = super(SEOrganisationNumberField, self).clean(value)\n\n        if value in EMPTY_VALUES:\n            return ''\n\n        match = SWEDISH_ID_NUMBER.match(value)\n        if not match:\n            raise forms.ValidationError(self.error_messages['invalid'])\n\n        gd = match.groupdict()\n\n        # Compare the calculated value with the checksum\n        if id_number_checksum(gd) != int(gd['checksum']):\n            raise forms.ValidationError(self.error_messages['invalid'])\n\n        # First: check if this is a real organisation_number\n        if valid_organisation(gd):\n            return format_organisation_number(gd)\n\n        # Is this a single properitor (enskild firma)?\n        try:\n            birth_day = validate_id_birthday(gd, False)\n            return format_personal_id_number(birth_day, gd)\n        except ValueError:\n            raise forms.ValidationError(self.error_messages['invalid'])\n\n\nclass SEPersonalIdentityNumberField(forms.CharField):\n    \"\"\"\n    A form field that validates input as a Swedish personal identity number\n    (personnummer).\n\n    The correct formats are YYYYMMDD-XXXX, YYYYMMDDXXXX, YYMMDD-XXXX,\n    YYMMDDXXXX and YYMMDD+XXXX.\n\n    A + indicates that the person is older than 100 years, which will be taken\n    into consideration when the date is validated.\n\n    The checksum will be calculated and checked. The birth date is checked to\n    be a valid date.\n\n    By default, co-ordination numbers (samordningsnummer) will be accepted. To\n    only allow real personal identity numbers, pass the keyword argument\n    coordination_number=False to the constructor.\n\n    The cleaned value will always have the format YYYYMMDDXXXX.\n    \"\"\"\n\n    def __init__(self, coordination_number=True, *args, **kwargs):\n        self.coordination_number = coordination_number\n        super(SEPersonalIdentityNumberField, self).__init__(*args, **kwargs)\n\n    default_error_messages = {\n        'invalid': _('Enter a valid Swedish personal identity number.'),\n        'coordination_number': _('Co-ordination numbers are not allowed.'),\n    }\n\n    def clean(self, value):\n        value = super(SEPersonalIdentityNumberField, self).clean(value)\n\n        if value in EMPTY_VALUES:\n            return ''\n\n        match = SWEDISH_ID_NUMBER.match(value)\n        if match is None:\n            raise forms.ValidationError(self.error_messages['invalid'])\n\n        gd = match.groupdict()\n\n        # compare the calculated value with the checksum\n        if id_number_checksum(gd) != int(gd['checksum']):\n            raise forms.ValidationError(self.error_messages['invalid'])\n\n        # check for valid birthday\n        try:\n            birth_day = validate_id_birthday(gd)\n        except ValueError:\n            raise forms.ValidationError(self.error_messages['invalid'])\n\n        # make sure that co-ordination numbers do not pass if not allowed\n        if not self.coordination_number and int(gd['day']) > 60:\n            raise forms.ValidationError(self.error_messages['coordination_number'])\n\n        return format_personal_id_number(birth_day, gd)\n\n\nclass SEPostalCodeField(forms.RegexField):\n    \"\"\"\n    A form field that validates input as a Swedish postal code (postnummer).\n    Valid codes consist of five digits (XXXXX). The number can optionally be\n    formatted with a space after the third digit (XXX XX).\n\n    The cleaned value will never contain the space.\n    \"\"\"\n\n    default_error_messages = {\n        'invalid': _('Enter a Swedish postal code in the format XXXXX.'),\n    }\n\n    def __init__(self, *args, **kwargs):\n        super(SEPostalCodeField, self).__init__(SE_POSTAL_CODE, *args, **kwargs)\n\n    def clean(self, value):\n        return super(SEPostalCodeField, self).clean(value).replace(' ', '')\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/se/se_counties.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nAn alphabetical list of Swedish counties, sorted by codes.\n\nhttp://en.wikipedia.org/wiki/Counties_of_Sweden\n\nThis exists in this standalone file so that it's only imported into memory\nwhen explicitly needed.\n\n\"\"\"\nfrom __future__ import unicode_literals\n\nfrom django.utils.translation import ugettext_lazy as _\n\nCOUNTY_CHOICES = (\n    ('AB', _('Stockholm')),\n    ('AC', _('Västerbotten')),\n    ('BD', _('Norrbotten')),\n    ('C', _('Uppsala')),\n    ('D', _('Södermanland')),\n    ('E', _('Östergötland')),\n    ('F', _('Jönköping')),\n    ('G', _('Kronoberg')),\n    ('H', _('Kalmar')),\n    ('I', _('Gotland')),\n    ('K', _('Blekinge')),\n    ('M', _('Skåne')),\n    ('N', _('Halland')),\n    ('O', _('Västra Götaland')),\n    ('S', _('Värmland')),\n    ('T', _('Örebro')),\n    ('U', _('Västmanland')),\n    ('W', _('Dalarna')),\n    ('X', _('Gävleborg')),\n    ('Y', _('Västernorrland')),\n    ('Z', _('Jämtland')),\n)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/se/utils.py",
    "content": "import datetime\nfrom django.utils import six\n\ndef id_number_checksum(gd):\n    \"\"\"\n    Calculates a Swedish ID number checksum, using the\n    \"Luhn\"-algoritm\n    \"\"\"\n    n = s = 0\n    for c in (gd['year'] + gd['month'] + gd['day'] + gd['serial']):\n        tmp = ((n % 2) and 1 or 2) * int(c)\n\n        if tmp > 9:\n            tmp = sum([int(i) for i in str(tmp)])\n\n        s += tmp\n        n += 1\n\n    if (s % 10) == 0:\n        return 0\n\n    return (((s // 10) + 1) * 10) - s\n\ndef validate_id_birthday(gd, fix_coordination_number_day=True):\n    \"\"\"\n    Validates the birth_day and returns the datetime.date object for\n    the birth_day.\n\n    If the date is an invalid birth day, a ValueError will be raised.\n    \"\"\"\n\n    today = datetime.date.today()\n\n    day = int(gd['day'])\n    if fix_coordination_number_day and day > 60:\n        day -= 60\n\n    if gd['century'] is None:\n\n        # The century was not specified, and need to be calculated from todays date\n        current_year = today.year\n        year = int(today.strftime('%Y')) - int(today.strftime('%y')) + int(gd['year'])\n\n        if ('%s%s%02d' % (gd['year'], gd['month'], day)) > today.strftime('%y%m%d'):\n            year -= 100\n\n        # If the person is older than 100 years\n        if gd['sign'] == '+':\n            year -= 100\n    else:\n        year = int(gd['century'] + gd['year'])\n\n        # Make sure the year is valid\n        # There are no swedish personal identity numbers where year < 1800\n        if year < 1800:\n            raise ValueError\n\n    # ValueError will be raise for invalid dates\n    birth_day = datetime.date(year, int(gd['month']), day)\n\n    # birth_day must not be in the future\n    if birth_day > today:\n        raise ValueError\n\n    return birth_day\n\ndef format_personal_id_number(birth_day, gd):\n    # birth_day.strftime cannot be used, since it does not support dates < 1900\n    return six.text_type(str(birth_day.year) + gd['month'] + gd['day'] + gd['serial'] + gd['checksum'])\n\ndef format_organisation_number(gd):\n    if gd['century'] is None:\n        century = ''\n    else:\n        century = gd['century']\n\n    return six.text_type(century + gd['year'] + gd['month'] + gd['day'] + gd['serial'] + gd['checksum'])\n\ndef valid_organisation(gd):\n    return gd['century'] in (None, 16) and \\\n        int(gd['month']) >= 20 and \\\n        gd['sign'] in (None, '-') and \\\n        gd['year'][0] in ('2', '5', '7', '8', '9') # group identifier\n\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/si/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/si/forms.py",
    "content": "\"\"\"\nSlovenian specific form helpers.\n\"\"\"\n\nfrom __future__ import absolute_import, unicode_literals\n\nimport datetime\nimport re\n\nfrom django.contrib.localflavor.si.si_postalcodes import SI_POSTALCODES_CHOICES\nfrom django.core.validators import EMPTY_VALUES\nfrom django.forms import ValidationError\nfrom django.forms.fields import CharField, Select, ChoiceField\nfrom django.utils.translation import ugettext_lazy as _\n\n\nclass SIEMSOField(CharField):\n    \"\"\"A form for validating Slovenian personal identification number.\n\n    Additionally stores gender, nationality and birthday to self.info dictionary.\n    \"\"\"\n\n    default_error_messages = {\n        'invalid': _('This field should contain exactly 13 digits.'),\n        'date': _('The first 7 digits of the EMSO must represent a valid past date.'),\n        'checksum': _('The EMSO is not valid.'),\n    }\n    emso_regex = re.compile('^(\\d{2})(\\d{2})(\\d{3})(\\d{2})(\\d{3})(\\d)$')\n\n    def clean(self, value):\n        super(SIEMSOField, self).clean(value)\n        if value in EMPTY_VALUES:\n            return ''\n\n        value = value.strip()\n\n        m = self.emso_regex.match(value)\n        if m is None:\n            raise ValidationError(self.default_error_messages['invalid'])\n\n        # Validate EMSO\n        s = 0\n        int_values = [int(i) for i in value]\n        for a, b in zip(int_values, list(range(7, 1, -1)) * 2):\n            s += a * b\n        chk = s % 11\n        if chk == 0:\n            K = 0\n        else:\n            K = 11 - chk\n\n        if K == 10 or int_values[-1] != K:\n            raise ValidationError(self.default_error_messages['checksum'])\n\n        # Extract extra info in the identification number\n        day, month, year, nationality, gender, chksum = [int(i) for i in m.groups()]\n\n        if year < 890:\n            year += 2000\n        else:\n            year += 1000\n\n        # validate birthday\n        try:\n            birthday = datetime.date(year, month, day)\n        except ValueError:\n            raise ValidationError(self.error_messages['date'])\n        if datetime.date.today() < birthday:\n            raise ValidationError(self.error_messages['date'])\n\n        self.info = {\n            'gender': gender < 500 and 'male' or 'female',\n            'birthdate': birthday,\n            'nationality': nationality,\n        }\n        return value\n\n\nclass SITaxNumberField(CharField):\n    \"\"\"Slovenian tax number field.\n\n    Valid input is SIXXXXXXXX or XXXXXXXX where X is a number.\n    \"\"\"\n\n    default_error_messages = {\n        'invalid': _('Enter a valid tax number in form SIXXXXXXXX'),\n    }\n    sitax_regex = re.compile('^(?:SI)?([1-9]\\d{7})$')\n\n    def clean(self, value):\n        super(SITaxNumberField, self).clean(value)\n        if value in EMPTY_VALUES:\n            return ''\n\n        value = value.strip()\n\n        m = self.sitax_regex.match(value)\n        if m is None:\n            raise ValidationError(self.default_error_messages['invalid'])\n        value = m.groups()[0]\n\n        # Validate Tax number\n        s = 0\n        int_values = [int(i) for i in value]\n        for a, b in zip(int_values, range(8, 1, -1)):\n            s += a * b\n        chk = 11 - (s % 11)\n        if chk == 10:\n            chk = 0\n\n        if int_values[-1] != chk:\n            raise ValidationError(self.default_error_messages['invalid'])\n\n        return value\n\n\nclass SIPostalCodeField(ChoiceField):\n    \"\"\"Slovenian post codes field.\n    \"\"\"\n\n    def __init__(self, *args, **kwargs):\n        kwargs.setdefault('choices', SI_POSTALCODES_CHOICES)\n        super(SIPostalCodeField, self).__init__(*args, **kwargs)\n\n\nclass SIPostalCodeSelect(Select):\n    \"\"\"A Select widget that uses Slovenian postal codes as its choices.\n    \"\"\"\n    def __init__(self, attrs=None):\n        super(SIPostalCodeSelect, self).__init__(attrs,\n            choices=SI_POSTALCODES_CHOICES)\n\n\nclass SIPhoneNumberField(CharField):\n    \"\"\"Slovenian phone number field.\n\n    Phone number must contain at least local area code.\n    Country code can be present.\n\n    Examples:\n\n    * +38640XXXXXX\n    * 0038640XXXXXX\n    * 040XXXXXX\n    * 01XXXXXX\n    * 0590XXXXX\n\n    \"\"\"\n\n    default_error_messages = {\n        'invalid': _('Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.'),\n    }\n    phone_regex = re.compile('^(?:(?:00|\\+)386|0)(\\d{7,8})$')\n\n    def clean(self, value):\n        super(SIPhoneNumberField, self).clean(value)\n        if value in EMPTY_VALUES:\n            return ''\n\n        value = value.replace(' ', '').replace('-', '').replace('/', '')\n        m = self.phone_regex.match(value)\n\n        if m is None:\n            raise ValidationError(self.default_error_messages['invalid'])\n        return m.groups()[0]\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/si/si_postalcodes.py",
    "content": "# *-* coding: utf-8 *-*\nfrom __future__ import unicode_literals\n\nSI_POSTALCODES = [\n    (1000, 'Ljubljana'),\n    (1215, 'Medvode'),\n    (1216, 'Smlednik'),\n    (1217, 'Vodice'),\n    (1218, 'Komenda'),\n    (1219, 'Laze v Tuhinju'),\n    (1221, 'Motnik'),\n    (1222, 'Trojane'),\n    (1223, 'Blagovica'),\n    (1225, 'Lukovica'),\n    (1230, 'Dom\\u017eale'),\n    (1233, 'Dob'),\n    (1234, 'Menge\\u0161'),\n    (1235, 'Radomlje'),\n    (1236, 'Trzin'),\n    (1241, 'Kamnik'),\n    (1242, 'Stahovica'),\n    (1251, 'Morav\\u010de'),\n    (1252, 'Va\\u010de'),\n    (1262, 'Dol pri Ljubljani'),\n    (1270, 'Litija'),\n    (1272, 'Pol\\u0161nik'),\n    (1273, 'Dole pri Litiji'),\n    (1274, 'Gabrovka'),\n    (1275, '\\u0160martno pri Litiji'),\n    (1276, 'Primskovo'),\n    (1281, 'Kresnice'),\n    (1282, 'Sava'),\n    (1290, 'Grosuplje'),\n    (1291, '\\u0160kofljica'),\n    (1292, 'Ig'),\n    (1293, '\\u0160marje - Sap'),\n    (1294, 'Vi\\u0161nja Gora'),\n    (1295, 'Ivan\\u010dna Gorica'),\n    (1296, '\\u0160entvid pri Sti\\u010dni'),\n    (1301, 'Krka'),\n    (1303, 'Zagradec'),\n    (1310, 'Ribnica'),\n    (1311, 'Turjak'),\n    (1312, 'Videm - Dobrepolje'),\n    (1313, 'Struge'),\n    (1314, 'Rob'),\n    (1315, 'Velike La\\u0161\\u010de'),\n    (1316, 'Ortnek'),\n    (1317, 'Sodra\\u017eica'),\n    (1318, 'Lo\\u0161ki Potok'),\n    (1319, 'Draga'),\n    (1330, 'Ko\\u010devje'),\n    (1331, 'Dolenja vas'),\n    (1332, 'Stara Cerkev'),\n    (1336, 'Kostel'),\n    (1337, 'Osilnica'),\n    (1338, 'Ko\\u010devska Reka'),\n    (1351, 'Brezovica pri Ljubljani'),\n    (1352, 'Preserje'),\n    (1353, 'Borovnica'),\n    (1354, 'Horjul'),\n    (1355, 'Polhov Gradec'),\n    (1356, 'Dobrova'),\n    (1357, 'Notranje Gorice'),\n    (1358, 'Log pri Brezovici'),\n    (1360, 'Vrhnika'),\n    (1370, 'Logatec'),\n    (1372, 'Hotedr\\u0161ica'),\n    (1373, 'Rovte'),\n    (1380, 'Cerknica'),\n    (1381, 'Rakek'),\n    (1382, 'Begunje pri Cerknici'),\n    (1384, 'Grahovo'),\n    (1385, 'Nova vas'),\n    (1386, 'Stari trg pri Lo\\u017eu'),\n    (1410, 'Zagorje ob Savi'),\n    (1411, 'Izlake'),\n    (1412, 'Kisovec'),\n    (1413, '\\u010cem\\u0161enik'),\n    (1414, 'Podkum'),\n    (1420, 'Trbovlje'),\n    (1423, 'Dobovec'),\n    (1430, 'Hrastnik'),\n    (1431, 'Dol pri Hrastniku'),\n    (1432, 'Zidani Most'),\n    (1433, 'Rade\\u010de'),\n    (1434, 'Loka pri Zidanem Mostu'),\n    (2000, 'Maribor'),\n    (2201, 'Zgornja Kungota'),\n    (2204, 'Miklav\\u017e na Dravskem polju'),\n    (2205, 'Star\\u0161e'),\n    (2206, 'Marjeta na Dravskem polju'),\n    (2208, 'Pohorje'),\n    (2211, 'Pesnica pri Mariboru'),\n    (2212, '\\u0160entilj v Slovenskih goricah'),\n    (2213, 'Zgornja Velka'),\n    (2214, 'Sladki vrh'),\n    (2215, 'Cer\\u0161ak'),\n    (2221, 'Jarenina'),\n    (2222, 'Jakobski Dol'),\n    (2223, 'Jurovski Dol'),\n    (2229, 'Male\\u010dnik'),\n    (2230, 'Lenart v Slovenskih goricah'),\n    (2231, 'Pernica'),\n    (2232, 'Voli\\u010dina'),\n    (2233, 'Sveta Ana v Slovenskih goricah'),\n    (2234, 'Benedikt'),\n    (2235, 'Sveta Trojica v Slovenskih goricah'),\n    (2236, 'Cerkvenjak'),\n    (2241, 'Spodnji Duplek'),\n    (2242, 'Zgornja Korena'),\n    (2250, 'Ptuj'),\n    (2252, 'Dornava'),\n    (2253, 'Destrnik'),\n    (2254, 'Trnovska vas'),\n    (2255, 'Vitomarci'),\n    (2256, 'Jur\\u0161inci'),\n    (2257, 'Polen\\u0161ak'),\n    (2258, 'Sveti Toma\\u017e'),\n    (2259, 'Ivanjkovci'),\n    (2270, 'Ormo\\u017e'),\n    (2272, 'Gori\\u0161nica'),\n    (2273, 'Podgorci'),\n    (2274, 'Velika Nedelja'),\n    (2275, 'Miklav\\u017e pri Ormo\\u017eu'),\n    (2276, 'Kog'),\n    (2277, 'Sredi\\u0161\\u010de ob Dravi'),\n    (2281, 'Markovci'),\n    (2282, 'Cirkulane'),\n    (2283, 'Zavr\\u010d'),\n    (2284, 'Videm pri Ptuju'),\n    (2285, 'Zgornji Leskovec'),\n    (2286, 'Podlehnik'),\n    (2287, '\\u017detale'),\n    (2288, 'Hajdina'),\n    (2289, 'Stoperce'),\n    (2310, 'Slovenska Bistrica'),\n    (2311, 'Ho\\u010de'),\n    (2312, 'Orehova vas'),\n    (2313, 'Fram'),\n    (2314, 'Zgornja Polskava'),\n    (2315, '\\u0160martno na Pohorju'),\n    (2316, 'Zgornja Lo\\u017enica'),\n    (2317, 'Oplotnica'),\n    (2318, 'Laporje'),\n    (2319, 'Polj\\u010dane'),\n    (2321, 'Makole'),\n    (2322, 'Maj\\u0161perk'),\n    (2323, 'Ptujska Gora'),\n    (2324, 'Lovrenc na Dravskem polju'),\n    (2325, 'Kidri\\u010devo'),\n    (2326, 'Cirkovce'),\n    (2327, 'Ra\\u010de'),\n    (2331, 'Pragersko'),\n    (2341, 'Limbu\\u0161'),\n    (2342, 'Ru\\u0161e'),\n    (2343, 'Fala'),\n    (2344, 'Lovrenc na Pohorju'),\n    (2345, 'Bistrica ob Dravi'),\n    (2351, 'Kamnica'),\n    (2352, 'Selnica ob Dravi'),\n    (2353, 'Sv. Duh na Ostrem Vrhu'),\n    (2354, 'Bresternica'),\n    (2360, 'Radlje ob Dravi'),\n    (2361, 'O\\u017ebalt'),\n    (2362, 'Kapla'),\n    (2363, 'Podvelka'),\n    (2364, 'Ribnica na Pohorju'),\n    (2365, 'Vuhred'),\n    (2366, 'Muta'),\n    (2367, 'Vuzenica'),\n    (2370, 'Dravograd'),\n    (2371, 'Trbonje'),\n    (2372, 'Libeli\\u010de'),\n    (2373, '\\u0160entjan\\u017e pri Dravogradu'),\n    (2380, 'Slovenj Gradec'),\n    (2381, 'Podgorje pri Slovenj Gradcu'),\n    (2382, 'Mislinja'),\n    (2383, '\\u0160martno pri Slovenj Gradcu'),\n    (2390, 'Ravne na Koro\\u0161kem'),\n    (2391, 'Prevalje'),\n    (2392, 'Me\\u017eica'),\n    (2393, '\\u010crna na Koro\\u0161kem'),\n    (2394, 'Kotlje'),\n    (3000, 'Celje'),\n    (3201, '\\u0160martno v Ro\\u017eni dolini'),\n    (3202, 'Ljube\\u010dna'),\n    (3203, 'Nova Cerkev'),\n    (3204, 'Dobrna'),\n    (3205, 'Vitanje'),\n    (3206, 'Stranice'),\n    (3210, 'Slovenske Konjice'),\n    (3211, '\\u0160kofja vas'),\n    (3212, 'Vojnik'),\n    (3213, 'Frankolovo'),\n    (3214, 'Zre\\u010de'),\n    (3215, 'Lo\\u010de'),\n    (3220, '\\u0160tore'),\n    (3221, 'Teharje'),\n    (3222, 'Dramlje'),\n    (3223, 'Loka pri \\u017dusmu'),\n    (3224, 'Dobje pri Planini'),\n    (3225, 'Planina pri Sevnici'),\n    (3230, '\\u0160entjur'),\n    (3231, 'Grobelno'),\n    (3232, 'Ponikva'),\n    (3233, 'Kalobje'),\n    (3240, '\\u0160marje pri Jel\\u0161ah'),\n    (3241, 'Podplat'),\n    (3250, 'Roga\\u0161ka Slatina'),\n    (3252, 'Rogatec'),\n    (3253, 'Pristava pri Mestinju'),\n    (3254, 'Pod\\u010detrtek'),\n    (3255, 'Bu\\u010de'),\n    (3256, 'Bistrica ob Sotli'),\n    (3257, 'Podsreda'),\n    (3260, 'Kozje'),\n    (3261, 'Lesi\\u010dno'),\n    (3262, 'Prevorje'),\n    (3263, 'Gorica pri Slivnici'),\n    (3264, 'Sveti \\u0160tefan'),\n    (3270, 'La\\u0161ko'),\n    (3271, '\\u0160entrupert'),\n    (3272, 'Rimske Toplice'),\n    (3273, 'Jurklo\\u0161ter'),\n    (3301, 'Petrov\\u010de'),\n    (3302, 'Gri\\u017ee'),\n    (3303, 'Gomilsko'),\n    (3304, 'Tabor'),\n    (3305, 'Vransko'),\n    (3310, '\\u017dalec'),\n    (3311, '\\u0160empeter v Savinjski dolini'),\n    (3312, 'Prebold'),\n    (3313, 'Polzela'),\n    (3314, 'Braslov\\u010de'),\n    (3320, 'Velenje - dostava'),\n    (3322, 'Velenje - po\\u0161tni predali'),\n    (3325, '\\u0160o\\u0161tanj'),\n    (3326, 'Topol\\u0161ica'),\n    (3327, '\\u0160martno ob Paki'),\n    (3330, 'Mozirje'),\n    (3331, 'Nazarje'),\n    (3332, 'Re\\u010dica ob Savinji'),\n    (3333, 'Ljubno ob Savinji'),\n    (3334, 'Lu\\u010de'),\n    (3335, 'Sol\\u010dava'),\n    (3341, '\\u0160martno ob Dreti'),\n    (3342, 'Gornji Grad'),\n    (4000, 'Kranj'),\n    (4201, 'Zgornja Besnica'),\n    (4202, 'Naklo'),\n    (4203, 'Duplje'),\n    (4204, 'Golnik'),\n    (4205, 'Preddvor'),\n    (4206, 'Zgornje Jezersko'),\n    (4207, 'Cerklje na Gorenjskem'),\n    (4208, '\\u0160en\\u010dur'),\n    (4209, '\\u017dabnica'),\n    (4210, 'Brnik - aerodrom'),\n    (4211, 'Mav\\u010di\\u010de'),\n    (4212, 'Visoko'),\n    (4220, '\\u0160kofja Loka'),\n    (4223, 'Poljane nad \\u0160kofjo Loko'),\n    (4224, 'Gorenja vas'),\n    (4225, 'Sovodenj'),\n    (4226, '\\u017diri'),\n    (4227, 'Selca'),\n    (4228, '\\u017delezniki'),\n    (4229, 'Sorica'),\n    (4240, 'Radovljica'),\n    (4243, 'Brezje'),\n    (4244, 'Podnart'),\n    (4245, 'Kropa'),\n    (4246, 'Kamna Gorica'),\n    (4247, 'Zgornje Gorje'),\n    (4248, 'Lesce'),\n    (4260, 'Bled'),\n    (4263, 'Bohinjska Bela'),\n    (4264, 'Bohinjska Bistrica'),\n    (4265, 'Bohinjsko jezero'),\n    (4267, 'Srednja vas v Bohinju'),\n    (4270, 'Jesenice'),\n    (4273, 'Blejska Dobrava'),\n    (4274, '\\u017dirovnica'),\n    (4275, 'Begunje na Gorenjskem'),\n    (4276, 'Hru\\u0161ica'),\n    (4280, 'Kranjska Gora'),\n    (4281, 'Mojstrana'),\n    (4282, 'Gozd Martuljek'),\n    (4283, 'Rate\\u010de - Planica'),\n    (4290, 'Tr\\u017ei\\u010d'),\n    (4294, 'Kri\\u017ee'),\n    (5000, 'Nova Gorica'),\n    (5210, 'Deskle'),\n    (5211, 'Kojsko'),\n    (5212, 'Dobrovo v Brdih'),\n    (5213, 'Kanal'),\n    (5214, 'Kal nad Kanalom'),\n    (5215, 'Ro\\u010dinj'),\n    (5216, 'Most na So\\u010di'),\n    (5220, 'Tolmin'),\n    (5222, 'Kobarid'),\n    (5223, 'Breginj'),\n    (5224, 'Srpenica'),\n    (5230, 'Bovec'),\n    (5231, 'Log pod Mangartom'),\n    (5232, 'So\\u010da'),\n    (5242, 'Grahovo ob Ba\\u010di'),\n    (5243, 'Podbrdo'),\n    (5250, 'Solkan'),\n    (5251, 'Grgar'),\n    (5252, 'Trnovo pri Gorici'),\n    (5253, '\\u010cepovan'),\n    (5261, '\\u0160empas'),\n    (5262, '\\u010crni\\u010de'),\n    (5263, 'Dobravlje'),\n    (5270, 'Ajdov\\u0161\\u010dina'),\n    (5271, 'Vipava'),\n    (5272, 'Podnanos'),\n    (5273, 'Col'),\n    (5274, '\\u010crni Vrh nad Idrijo'),\n    (5275, 'Godovi\\u010d'),\n    (5280, 'Idrija'),\n    (5281, 'Spodnja Idrija'),\n    (5282, 'Cerkno'),\n    (5283, 'Slap ob Idrijci'),\n    (5290, '\\u0160empeter pri Gorici'),\n    (5291, 'Miren'),\n    (5292, 'Ren\\u010de'),\n    (5293, 'Vol\\u010dja Draga'),\n    (5294, 'Dornberk'),\n    (5295, 'Branik'),\n    (5296, 'Kostanjevica na Krasu'),\n    (5297, 'Prva\\u010dina'),\n    (6000, 'Koper'),\n    (6210, 'Se\\u017eana'),\n    (6215, 'Diva\\u010da'),\n    (6216, 'Podgorje'),\n    (6217, 'Vremski Britof'),\n    (6219, 'Lokev'),\n    (6221, 'Dutovlje'),\n    (6222, '\\u0160tanjel'),\n    (6223, 'Komen'),\n    (6224, 'Seno\\u017ee\\u010de'),\n    (6225, 'Hru\\u0161evje'),\n    (6230, 'Postojna'),\n    (6232, 'Planina'),\n    (6240, 'Kozina'),\n    (6242, 'Materija'),\n    (6243, 'Obrov'),\n    (6244, 'Podgrad'),\n    (6250, 'Ilirska Bistrica'),\n    (6251, 'Ilirska Bistrica - Trnovo'),\n    (6253, 'Kne\\u017eak'),\n    (6254, 'Jel\\u0161ane'),\n    (6255, 'Prem'),\n    (6256, 'Ko\\u0161ana'),\n    (6257, 'Pivka'),\n    (6258, 'Prestranek'),\n    (6271, 'Dekani'),\n    (6272, 'Gra\\u010di\\u0161\\u010de'),\n    (6273, 'Marezige'),\n    (6274, '\\u0160marje'),\n    (6275, '\\u010crni Kal'),\n    (6276, 'Pobegi'),\n    (6280, 'Ankaran - Ancarano'),\n    (6281, '\\u0160kofije'),\n    (6310, 'Izola - Isola'),\n    (6320, 'Portoro\\u017e - Portorose'),\n    (6330, 'Piran - Pirano'),\n    (6333, 'Se\\u010dovlje - Sicciole'),\n    (8000, 'Novo mesto'),\n    (8210, 'Trebnje'),\n    (8211, 'Dobrni\\u010d'),\n    (8212, 'Velika Loka'),\n    (8213, 'Veliki Gaber'),\n    (8216, 'Mirna Pe\\u010d'),\n    (8220, '\\u0160marje\\u0161ke Toplice'),\n    (8222, 'Oto\\u010dec'),\n    (8230, 'Mokronog'),\n    (8231, 'Trebelno'),\n    (8232, '\\u0160entrupert'),\n    (8233, 'Mirna'),\n    (8250, 'Bre\\u017eice'),\n    (8251, '\\u010cate\\u017e ob Savi'),\n    (8253, 'Arti\\u010de'),\n    (8254, 'Globoko'),\n    (8255, 'Pi\\u0161ece'),\n    (8256, 'Sromlje'),\n    (8257, 'Dobova'),\n    (8258, 'Kapele'),\n    (8259, 'Bizeljsko'),\n    (8261, 'Jesenice na Dolenjskem'),\n    (8262, 'Kr\\u0161ka vas'),\n    (8263, 'Cerklje ob Krki'),\n    (8270, 'Kr\\u0161ko'),\n    (8272, 'Zdole'),\n    (8273, 'Leskovec pri Kr\\u0161kem'),\n    (8274, 'Raka'),\n    (8275, '\\u0160kocjan'),\n    (8276, 'Bu\\u010dka'),\n    (8280, 'Brestanica'),\n    (8281, 'Senovo'),\n    (8282, 'Koprivnica'),\n    (8283, 'Blanca'),\n    (8290, 'Sevnica'),\n    (8292, 'Zabukovje'),\n    (8293, 'Studenec'),\n    (8294, 'Bo\\u0161tanj'),\n    (8295, 'Tr\\u017ei\\u0161\\u010de'),\n    (8296, 'Krmelj'),\n    (8297, '\\u0160entjan\\u017e'),\n    (8310, '\\u0160entjernej'),\n    (8311, 'Kostanjevica na Krki'),\n    (8312, 'Podbo\\u010dje'),\n    (8321, 'Brusnice'),\n    (8322, 'Stopi\\u010de'),\n    (8323, 'Ur\\u0161na sela'),\n    (8330, 'Metlika'),\n    (8331, 'Suhor'),\n    (8332, 'Gradac'),\n    (8333, 'Semi\\u010d'),\n    (8340, '\\u010crnomelj'),\n    (8341, 'Adle\\u0161i\\u010di'),\n    (8342, 'Stari trg ob Kolpi'),\n    (8343, 'Dragatu\\u0161'),\n    (8344, 'Vinica pri \\u010crnomlju'),\n    (8350, 'Dolenjske Toplice'),\n    (8351, 'Stra\\u017ea'),\n    (8360, '\\u017du\\u017eemberk'),\n    (8361, 'Dvor'),\n    (8362, 'Hinje'),\n    (9000, 'Murska Sobota'),\n    (9201, 'Puconci'),\n    (9202, 'Ma\\u010dkovci'),\n    (9203, 'Petrovci'),\n    (9204, '\\u0160alovci'),\n    (9205, 'Hodo\\u0161 - Hodos'),\n    (9206, 'Kri\\u017eevci'),\n    (9207, 'Prosenjakovci - Partosfalva'),\n    (9208, 'Fokovci'),\n    (9220, 'Lendava - Lendva'),\n    (9221, 'Martjanci'),\n    (9222, 'Bogojina'),\n    (9223, 'Dobrovnik - Dobronak'),\n    (9224, 'Turni\\u0161\\u010de'),\n    (9225, 'Velika Polana'),\n    (9226, 'Moravske Toplice'),\n    (9227, 'Kobilje'),\n    (9231, 'Beltinci'),\n    (9232, '\\u010cren\\u0161ovci'),\n    (9233, 'Odranci'),\n    (9240, 'Ljutomer'),\n    (9241, 'Ver\\u017eej'),\n    (9242, 'Kri\\u017eevci pri Ljutomeru'),\n    (9243, 'Mala Nedelja'),\n    (9244, 'Sveti Jurij ob \\u0160\\u010davnici'),\n    (9245, 'Spodnji Ivanjci'),\n    (9250, 'Gornja Radgona'),\n    (9251, 'Ti\\u0161ina'),\n    (9252, 'Radenci'),\n    (9253, 'Apa\\u010de'),\n    (9261, 'Cankova'),\n    (9262, 'Roga\\u0161ovci'),\n    (9263, 'Kuzma'),\n    (9264, 'Grad'),\n    (9265, 'Bodonci'),\n]\n\nSI_POSTALCODES_CHOICES = sorted(SI_POSTALCODES, key=lambda k: k[1])\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/sk/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/sk/forms.py",
    "content": "\"\"\"\nSlovak-specific form helpers\n\"\"\"\n\nfrom __future__ import absolute_import, unicode_literals\n\nfrom django.contrib.localflavor.sk.sk_districts import DISTRICT_CHOICES\nfrom django.contrib.localflavor.sk.sk_regions import REGION_CHOICES\nfrom django.forms.fields import Select, RegexField\nfrom django.utils.translation import ugettext_lazy as _\n\n\nclass SKRegionSelect(Select):\n    \"\"\"\n    A select widget widget with list of Slovak regions as choices.\n    \"\"\"\n    def __init__(self, attrs=None):\n        super(SKRegionSelect, self).__init__(attrs, choices=REGION_CHOICES)\n\nclass SKDistrictSelect(Select):\n    \"\"\"\n    A select widget with list of Slovak districts as choices.\n    \"\"\"\n    def __init__(self, attrs=None):\n        super(SKDistrictSelect, self).__init__(attrs, choices=DISTRICT_CHOICES)\n\nclass SKPostalCodeField(RegexField):\n    \"\"\"\n    A form field that validates its input as Slovak postal code.\n    Valid form is XXXXX or XXX XX, where X represents integer.\n    \"\"\"\n    default_error_messages = {\n        'invalid': _('Enter a postal code in the format XXXXX or XXX XX.'),\n    }\n\n    def __init__(self, max_length=None, min_length=None, *args, **kwargs):\n        super(SKPostalCodeField, self).__init__(r'^\\d{5}$|^\\d{3} \\d{2}$',\n            max_length, min_length, *args, **kwargs)\n\n    def clean(self, value):\n        \"\"\"\n        Validates the input and returns a string that contains only numbers.\n        Returns an empty string for empty values.\n        \"\"\"\n        v = super(SKPostalCodeField, self).clean(value)\n        return v.replace(' ', '')\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/sk/sk_districts.py",
    "content": "\"\"\"\nSlovak districts according to http://sk.wikipedia.org/wiki/Administrat%C3%ADvne_%C4%8Dlenenie_Slovenska\n\"\"\"\n\nfrom django.utils.translation import ugettext_lazy as _\n\nDISTRICT_CHOICES = (\n    ('BB', _('Banska Bystrica')),\n    ('BS', _('Banska Stiavnica')),\n    ('BJ', _('Bardejov')),\n    ('BN', _('Banovce nad Bebravou')),\n    ('BR', _('Brezno')),\n    ('BA1', _('Bratislava I')),\n    ('BA2', _('Bratislava II')),\n    ('BA3', _('Bratislava III')),\n    ('BA4', _('Bratislava IV')),\n    ('BA5', _('Bratislava V')),\n    ('BY', _('Bytca')),\n    ('CA', _('Cadca')),\n    ('DT', _('Detva')),\n    ('DK', _('Dolny Kubin')),\n    ('DS', _('Dunajska Streda')),\n    ('GA', _('Galanta')),\n    ('GL', _('Gelnica')),\n    ('HC', _('Hlohovec')),\n    ('HE', _('Humenne')),\n    ('IL', _('Ilava')),\n    ('KK', _('Kezmarok')),\n    ('KN', _('Komarno')),\n    ('KE1', _('Kosice I')),\n    ('KE2', _('Kosice II')),\n    ('KE3', _('Kosice III')),\n    ('KE4', _('Kosice IV')),\n    ('KEO', _('Kosice - okolie')),\n    ('KA', _('Krupina')),\n    ('KM', _('Kysucke Nove Mesto')),\n    ('LV', _('Levice')),\n    ('LE', _('Levoca')),\n    ('LM', _('Liptovsky Mikulas')),\n    ('LC', _('Lucenec')),\n    ('MA', _('Malacky')),\n    ('MT', _('Martin')),\n    ('ML', _('Medzilaborce')),\n    ('MI', _('Michalovce')),\n    ('MY', _('Myjava')),\n    ('NO', _('Namestovo')),\n    ('NR', _('Nitra')),\n    ('NM', _('Nove Mesto nad Vahom')),\n    ('NZ', _('Nove Zamky')),\n    ('PE', _('Partizanske')),\n    ('PK', _('Pezinok')),\n    ('PN', _('Piestany')),\n    ('PT', _('Poltar')),\n    ('PP', _('Poprad')),\n    ('PB', _('Povazska Bystrica')),\n    ('PO', _('Presov')),\n    ('PD', _('Prievidza')),\n    ('PU', _('Puchov')),\n    ('RA', _('Revuca')),\n    ('RS', _('Rimavska Sobota')),\n    ('RV', _('Roznava')),\n    ('RK', _('Ruzomberok')),\n    ('SB', _('Sabinov')),\n    ('SC', _('Senec')),\n    ('SE', _('Senica')),\n    ('SI', _('Skalica')),\n    ('SV', _('Snina')),\n    ('SO', _('Sobrance')),\n    ('SN', _('Spisska Nova Ves')),\n    ('SL', _('Stara Lubovna')),\n    ('SP', _('Stropkov')),\n    ('SK', _('Svidnik')),\n    ('SA', _('Sala')),\n    ('TO', _('Topolcany')),\n    ('TV', _('Trebisov')),\n    ('TN', _('Trencin')),\n    ('TT', _('Trnava')),\n    ('TR', _('Turcianske Teplice')),\n    ('TS', _('Tvrdosin')),\n    ('VK', _('Velky Krtis')),\n    ('VT', _('Vranov nad Toplou')),\n    ('ZM', _('Zlate Moravce')),\n    ('ZV', _('Zvolen')),\n    ('ZC', _('Zarnovica')),\n    ('ZH', _('Ziar nad Hronom')),\n    ('ZA', _('Zilina')),\n)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/sk/sk_regions.py",
    "content": "\"\"\"\nSlovak regions according to http://sk.wikipedia.org/wiki/Administrat%C3%ADvne_%C4%8Dlenenie_Slovenska\n\"\"\"\n\nfrom django.utils.translation import ugettext_lazy as _\n\nREGION_CHOICES = (\n    ('BB', _('Banska Bystrica region')),\n    ('BA', _('Bratislava region')),\n    ('KE', _('Kosice region')),\n    ('NR', _('Nitra region')),\n    ('PO', _('Presov region')),\n    ('TN', _('Trencin region')),\n    ('TT', _('Trnava region')),\n    ('ZA', _('Zilina region')),\n)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/tr/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/tr/forms.py",
    "content": "\"\"\"\nTR-specific Form helpers\n\"\"\"\n\nfrom __future__ import absolute_import, unicode_literals\n\nimport re\n\nfrom django.contrib.localflavor.tr.tr_provinces import PROVINCE_CHOICES\nfrom django.core.validators import EMPTY_VALUES\nfrom django.forms import ValidationError\nfrom django.forms.fields import Field, RegexField, Select, CharField\nfrom django.utils.encoding import smart_text\nfrom django.utils.translation import ugettext_lazy as _\n\n\nphone_digits_re = re.compile(r'^(\\+90|0)? ?(([1-9]\\d{2})|\\([1-9]\\d{2}\\)) ?([2-9]\\d{2} ?\\d{2} ?\\d{2})$')\n\nclass TRPostalCodeField(RegexField):\n    default_error_messages = {\n        'invalid': _('Enter a postal code in the format XXXXX.'),\n    }\n\n    def __init__(self, max_length=5, min_length=5, *args, **kwargs):\n        super(TRPostalCodeField, self).__init__(r'^\\d{5}$',\n            max_length, min_length, *args, **kwargs)\n\n    def clean(self, value):\n        value = super(TRPostalCodeField, self).clean(value)\n        if value in EMPTY_VALUES:\n            return ''\n        if len(value) != 5:\n            raise ValidationError(self.error_messages['invalid'])\n        province_code = int(value[:2])\n        if province_code == 0 or province_code > 81:\n            raise ValidationError(self.error_messages['invalid'])\n        return value\n\n\nclass TRPhoneNumberField(CharField):\n    default_error_messages = {\n        'invalid': _('Phone numbers must be in 0XXX XXX XXXX format.'),\n    }\n\n    def clean(self, value):\n        super(TRPhoneNumberField, self).clean(value)\n        if value in EMPTY_VALUES:\n            return ''\n        value = re.sub('(\\(|\\)|\\s+)', '', smart_text(value))\n        m = phone_digits_re.search(value)\n        if m:\n            return '%s%s' % (m.group(2), m.group(4))\n        raise ValidationError(self.error_messages['invalid'])\n\nclass TRIdentificationNumberField(Field):\n    \"\"\"\n    A Turkey Identification Number number.\n    See: http://tr.wikipedia.org/wiki/T%C3%BCrkiye_Cumhuriyeti_Kimlik_Numaras%C4%B1\n\n    Checks the following rules to determine whether the number is valid:\n\n        * The number is 11-digits.\n        * First digit is not 0.\n        * Conforms to the following two formula:\n          (sum(1st, 3rd, 5th, 7th, 9th)*7 - sum(2nd,4th,6th,8th)) % 10 = 10th digit\n          sum(1st to 10th) % 10 = 11th digit\n    \"\"\"\n    default_error_messages = {\n        'invalid': _('Enter a valid Turkish Identification number.'),\n        'not_11': _('Turkish Identification number must be 11 digits.'),\n    }\n\n    def clean(self, value):\n        super(TRIdentificationNumberField, self).clean(value)\n        if value in EMPTY_VALUES:\n            return ''\n        if len(value) != 11:\n            raise ValidationError(self.error_messages['not_11'])\n        if not re.match(r'^\\d{11}$', value):\n            raise ValidationError(self.error_messages['invalid'])\n        if int(value[0]) == 0:\n            raise ValidationError(self.error_messages['invalid'])\n        chksum = (sum([int(value[i]) for i in range(0, 9, 2)]) * 7 -\n                          sum([int(value[i]) for i in range(1, 9, 2)])) % 10\n        if chksum != int(value[9]) or \\\n           (sum([int(value[i]) for i in range(10)]) % 10) != int(value[10]):\n            raise ValidationError(self.error_messages['invalid'])\n        return value\n\nclass TRProvinceSelect(Select):\n    \"\"\"\n    A Select widget that uses a list of provinces in Turkey as its choices.\n    \"\"\"\n    def __init__(self, attrs=None):\n        super(TRProvinceSelect, self).__init__(attrs, choices=PROVINCE_CHOICES)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/tr/tr_provinces.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nThis exists in this standalone file so that it's only imported into memory\nwhen explicitly needed.\n\"\"\"\nfrom __future__ import unicode_literals\n\nPROVINCE_CHOICES = (\n    ('01', ('Adana')),\n    ('02', ('Adıyaman')),\n    ('03', ('Afyonkarahisar')),\n    ('04', ('Ağrı')),\n    ('68', ('Aksaray')),\n    ('05', ('Amasya')),\n    ('06', ('Ankara')),\n    ('07', ('Antalya')),\n    ('75', ('Ardahan')),\n    ('08', ('Artvin')),\n    ('09', ('Aydın')),\n    ('10', ('Balıkesir')),\n    ('74', ('Bartın')),\n    ('72', ('Batman')),\n    ('69', ('Bayburt')),\n    ('11', ('Bilecik')),\n    ('12', ('Bingöl')),\n    ('13', ('Bitlis')),\n    ('14', ('Bolu')),\n    ('15', ('Burdur')),\n    ('16', ('Bursa')),\n    ('17', ('Çanakkale')),\n    ('18', ('Çankırı')),\n    ('19', ('Çorum')),\n    ('20', ('Denizli')),\n    ('21', ('Diyarbakır')),\n    ('81', ('Düzce')),\n    ('22', ('Edirne')),\n    ('23', ('Elazığ')),\n    ('24', ('Erzincan')),\n    ('25', ('Erzurum')),\n    ('26', ('Eskişehir')),\n    ('27', ('Gaziantep')),\n    ('28', ('Giresun')),\n    ('29', ('Gümüşhane')),\n    ('30', ('Hakkari')),\n    ('31', ('Hatay')),\n    ('76', ('Iğdır')),\n    ('32', ('Isparta')),\n    ('33', ('Mersin')),\n    ('34', ('İstanbul')),\n    ('35', ('İzmir')),\n    ('78', ('Karabük')),\n    ('36', ('Kars')),\n    ('37', ('Kastamonu')),\n    ('38', ('Kayseri')),\n    ('39', ('Kırklareli')),\n    ('40', ('Kırşehir')),\n    ('41', ('Kocaeli')),\n    ('42', ('Konya')),\n    ('43', ('Kütahya')),\n    ('44', ('Malatya')),\n    ('45', ('Manisa')),\n    ('46', ('Kahramanmaraş')),\n    ('70', ('Karaman')),\n    ('71', ('Kırıkkale')),\n    ('79', ('Kilis')),\n    ('47', ('Mardin')),\n    ('48', ('Muğla')),\n    ('49', ('Muş')),\n    ('50', ('Nevşehir')),\n    ('51', ('Niğde')),\n    ('52', ('Ordu')),\n    ('80', ('Osmaniye')),\n    ('53', ('Rize')),\n    ('54', ('Sakarya')),\n    ('55', ('Samsun')),\n    ('56', ('Siirt')),\n    ('57', ('Sinop')),\n    ('58', ('Sivas')),\n    ('73', ('Şırnak')),\n    ('59', ('Tekirdağ')),\n    ('60', ('Tokat')),\n    ('61', ('Trabzon')),\n    ('62', ('Tunceli')),\n    ('63', ('Şanlıurfa')),\n    ('64', ('Uşak')),\n    ('65', ('Van')),\n    ('77', ('Yalova')),\n    ('66', ('Yozgat')),\n    ('67', ('Zonguldak')),\n)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/uk/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/uk/forms.py",
    "content": "from django.contrib.localflavor.gb import forms\n\nimport warnings\nwarnings.warn(\n    'The \"UK\" prefix for United Kingdom has been deprecated in favour of the '\n    'GB code. Please use the new GB-prefixed names.', DeprecationWarning)\n\nUKPostcodeField = forms.GBPostcodeField\nUKCountySelect = forms.GBCountySelect\nUKNationSelect = forms.GBNationSelect\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/uk/uk_regions.py",
    "content": "from django.contrib.localflavor.gb.gb_regions import (\n    ENGLAND_REGION_CHOICES, NORTHERN_IRELAND_REGION_CHOICES,\n    WALES_REGION_CHOICES, SCOTTISH_REGION_CHOICES, GB_NATIONS_CHOICES,\n    GB_REGION_CHOICES)\n\nimport warnings\nwarnings.warn(\n    'The \"UK\" prefix for United Kingdom has been deprecated in favour of the '\n    'GB code. Please use the new GB-prefixed names.', DeprecationWarning)\n\nUK_NATIONS_CHOICES = GB_NATIONS_CHOICES\nUK_REGION_CHOICES  = GB_REGION_CHOICES\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/us/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/us/forms.py",
    "content": "\"\"\"\nUSA-specific Form helpers\n\"\"\"\n\nfrom __future__ import absolute_import, unicode_literals\n\nimport re\n\nfrom django.core.validators import EMPTY_VALUES\nfrom django.forms import ValidationError\nfrom django.forms.fields import Field, RegexField, Select, CharField\nfrom django.utils.encoding import smart_text\nfrom django.utils.translation import ugettext_lazy as _\n\n\nphone_digits_re = re.compile(r'^(?:1-?)?(\\d{3})[-\\.]?(\\d{3})[-\\.]?(\\d{4})$')\nssn_re = re.compile(r\"^(?P<area>\\d{3})[-\\ ]?(?P<group>\\d{2})[-\\ ]?(?P<serial>\\d{4})$\")\n\nclass USZipCodeField(RegexField):\n    default_error_messages = {\n        'invalid': _('Enter a zip code in the format XXXXX or XXXXX-XXXX.'),\n    }\n\n    def __init__(self, max_length=None, min_length=None, *args, **kwargs):\n        super(USZipCodeField, self).__init__(r'^\\d{5}(?:-\\d{4})?$',\n            max_length, min_length, *args, **kwargs)\n\nclass USPhoneNumberField(CharField):\n    default_error_messages = {\n        'invalid': _('Phone numbers must be in XXX-XXX-XXXX format.'),\n    }\n\n    def clean(self, value):\n        super(USPhoneNumberField, self).clean(value)\n        if value in EMPTY_VALUES:\n            return ''\n        value = re.sub('(\\(|\\)|\\s+)', '', smart_text(value))\n        m = phone_digits_re.search(value)\n        if m:\n            return '%s-%s-%s' % (m.group(1), m.group(2), m.group(3))\n        raise ValidationError(self.error_messages['invalid'])\n\nclass USSocialSecurityNumberField(Field):\n    \"\"\"\n    A United States Social Security number.\n\n    Checks the following rules to determine whether the number is valid:\n\n        * Conforms to the XXX-XX-XXXX format.\n        * No group consists entirely of zeroes.\n        * The leading group is not \"666\" (block \"666\" will never be allocated).\n        * The number is not in the promotional block 987-65-4320 through\n          987-65-4329, which are permanently invalid.\n        * The number is not one known to be invalid due to otherwise widespread\n          promotional use or distribution (e.g., the Woolworth's number or the\n          1962 promotional number).\n    \"\"\"\n    default_error_messages = {\n        'invalid': _('Enter a valid U.S. Social Security number in XXX-XX-XXXX format.'),\n    }\n\n    def clean(self, value):\n        super(USSocialSecurityNumberField, self).clean(value)\n        if value in EMPTY_VALUES:\n            return ''\n        match = re.match(ssn_re, value)\n        if not match:\n            raise ValidationError(self.error_messages['invalid'])\n        area, group, serial = match.groupdict()['area'], match.groupdict()['group'], match.groupdict()['serial']\n\n        # First pass: no blocks of all zeroes.\n        if area == '000' or \\\n           group == '00' or \\\n           serial == '0000':\n            raise ValidationError(self.error_messages['invalid'])\n\n        # Second pass: promotional and otherwise permanently invalid numbers.\n        if area == '666' or \\\n           (area == '987' and group == '65' and 4320 <= int(serial) <= 4329) or \\\n           value == '078-05-1120' or \\\n           value == '219-09-9999':\n            raise ValidationError(self.error_messages['invalid'])\n        return '%s-%s-%s' % (area, group, serial)\n\nclass USStateField(Field):\n    \"\"\"\n    A form field that validates its input is a U.S. state name or abbreviation.\n    It normalizes the input to the standard two-leter postal service\n    abbreviation for the given state.\n    \"\"\"\n    default_error_messages = {\n        'invalid': _('Enter a U.S. state or territory.'),\n    }\n\n    def clean(self, value):\n        from .us_states import STATES_NORMALIZED\n        super(USStateField, self).clean(value)\n        if value in EMPTY_VALUES:\n            return ''\n        try:\n            value = value.strip().lower()\n        except AttributeError:\n            pass\n        else:\n            try:\n                return STATES_NORMALIZED[value.strip().lower()]\n            except KeyError:\n                pass\n        raise ValidationError(self.error_messages['invalid'])\n\nclass USStateSelect(Select):\n    \"\"\"\n    A Select widget that uses a list of U.S. states/territories as its choices.\n    \"\"\"\n    def __init__(self, attrs=None):\n        from .us_states import STATE_CHOICES\n        super(USStateSelect, self).__init__(attrs, choices=STATE_CHOICES)\n\nclass USPSSelect(Select):\n    \"\"\"\n    A Select widget that uses a list of US Postal Service codes as its\n    choices.\n    \"\"\"\n    def __init__(self, attrs=None):\n        from .us_states import USPS_CHOICES\n        super(USPSSelect, self).__init__(attrs, choices=USPS_CHOICES)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/us/models.py",
    "content": "from django.utils.translation import ugettext_lazy as _\nfrom django.db.models.fields import CharField\nfrom django.contrib.localflavor.us.us_states import STATE_CHOICES\nfrom django.contrib.localflavor.us.us_states import USPS_CHOICES\n\nclass USStateField(CharField):\n\n    description = _(\"U.S. state (two uppercase letters)\")\n\n    def __init__(self, *args, **kwargs):\n        kwargs['choices'] = STATE_CHOICES\n        kwargs['max_length'] = 2\n        super(USStateField, self).__init__(*args, **kwargs)\n\nclass USPostalCodeField(CharField):\n\n    description = _(\"U.S. postal code (two uppercase letters)\")\n\n    def __init__(self, *args, **kwargs):\n        kwargs['choices'] = USPS_CHOICES\n        kwargs['max_length'] = 2\n        super(USPostalCodeField, self).__init__(*args, **kwargs)\n\nclass PhoneNumberField(CharField):\n\n    description = _(\"Phone number\")\n\n    def __init__(self, *args, **kwargs):\n        kwargs['max_length'] = 20\n        super(PhoneNumberField, self).__init__(*args, **kwargs)\n\n    def formfield(self, **kwargs):\n        from django.contrib.localflavor.us.forms import USPhoneNumberField\n        defaults = {'form_class': USPhoneNumberField}\n        defaults.update(kwargs)\n        return super(PhoneNumberField, self).formfield(**defaults)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/us/us_states.py",
    "content": "\"\"\"\nA mapping of state misspellings/abbreviations to normalized\nabbreviations, and alphabetical lists of US states, territories,\nmilitary mail regions and non-US states to which the US provides\npostal service.\n\nThis exists in this standalone file so that it's only imported into memory\nwhen explicitly needed.\n\"\"\"\n\n# The 48 contiguous states, plus the District of Columbia.\nCONTIGUOUS_STATES = (\n    ('AL', 'Alabama'),\n    ('AZ', 'Arizona'),\n    ('AR', 'Arkansas'),\n    ('CA', 'California'),\n    ('CO', 'Colorado'),\n    ('CT', 'Connecticut'),\n    ('DE', 'Delaware'),\n    ('DC', 'District of Columbia'),\n    ('FL', 'Florida'),\n    ('GA', 'Georgia'),\n    ('ID', 'Idaho'),\n    ('IL', 'Illinois'),\n    ('IN', 'Indiana'),\n    ('IA', 'Iowa'),\n    ('KS', 'Kansas'),\n    ('KY', 'Kentucky'),\n    ('LA', 'Louisiana'),\n    ('ME', 'Maine'),\n    ('MD', 'Maryland'),\n    ('MA', 'Massachusetts'),\n    ('MI', 'Michigan'),\n    ('MN', 'Minnesota'),\n    ('MS', 'Mississippi'),\n    ('MO', 'Missouri'),\n    ('MT', 'Montana'),\n    ('NE', 'Nebraska'),\n    ('NV', 'Nevada'),\n    ('NH', 'New Hampshire'),\n    ('NJ', 'New Jersey'),\n    ('NM', 'New Mexico'),\n    ('NY', 'New York'),\n    ('NC', 'North Carolina'),\n    ('ND', 'North Dakota'),\n    ('OH', 'Ohio'),\n    ('OK', 'Oklahoma'),\n    ('OR', 'Oregon'),\n    ('PA', 'Pennsylvania'),\n    ('RI', 'Rhode Island'),\n    ('SC', 'South Carolina'),\n    ('SD', 'South Dakota'),\n    ('TN', 'Tennessee'),\n    ('TX', 'Texas'),\n    ('UT', 'Utah'),\n    ('VT', 'Vermont'),\n    ('VA', 'Virginia'),\n    ('WA', 'Washington'),\n    ('WV', 'West Virginia'),\n    ('WI', 'Wisconsin'),\n    ('WY', 'Wyoming'),\n)\n\n# All 50 states, plus the District of Columbia.\nUS_STATES = (\n    ('AL', 'Alabama'),\n    ('AK', 'Alaska'),\n    ('AZ', 'Arizona'),\n    ('AR', 'Arkansas'),\n    ('CA', 'California'),\n    ('CO', 'Colorado'),\n    ('CT', 'Connecticut'),\n    ('DE', 'Delaware'),\n    ('DC', 'District of Columbia'),\n    ('FL', 'Florida'),\n    ('GA', 'Georgia'),\n    ('HI', 'Hawaii'),\n    ('ID', 'Idaho'),\n    ('IL', 'Illinois'),\n    ('IN', 'Indiana'),\n    ('IA', 'Iowa'),\n    ('KS', 'Kansas'),\n    ('KY', 'Kentucky'),\n    ('LA', 'Louisiana'),\n    ('ME', 'Maine'),\n    ('MD', 'Maryland'),\n    ('MA', 'Massachusetts'),\n    ('MI', 'Michigan'),\n    ('MN', 'Minnesota'),\n    ('MS', 'Mississippi'),\n    ('MO', 'Missouri'),\n    ('MT', 'Montana'),\n    ('NE', 'Nebraska'),\n    ('NV', 'Nevada'),\n    ('NH', 'New Hampshire'),\n    ('NJ', 'New Jersey'),\n    ('NM', 'New Mexico'),\n    ('NY', 'New York'),\n    ('NC', 'North Carolina'),\n    ('ND', 'North Dakota'),\n    ('OH', 'Ohio'),\n    ('OK', 'Oklahoma'),\n    ('OR', 'Oregon'),\n    ('PA', 'Pennsylvania'),\n    ('RI', 'Rhode Island'),\n    ('SC', 'South Carolina'),\n    ('SD', 'South Dakota'),\n    ('TN', 'Tennessee'),\n    ('TX', 'Texas'),\n    ('UT', 'Utah'),\n    ('VT', 'Vermont'),\n    ('VA', 'Virginia'),\n    ('WA', 'Washington'),\n    ('WV', 'West Virginia'),\n    ('WI', 'Wisconsin'),\n    ('WY', 'Wyoming'),\n)\n\n# Non-state territories.\nUS_TERRITORIES = (\n    ('AS', 'American Samoa'),\n    ('GU', 'Guam'),\n    ('MP', 'Northern Mariana Islands'),\n    ('PR', 'Puerto Rico'),\n    ('VI', 'Virgin Islands'),\n)\n\n# Military postal \"states\". Note that 'AE' actually encompasses\n# Europe, Canada, Africa and the Middle East.\nARMED_FORCES_STATES = (\n    ('AA', 'Armed Forces Americas'),\n    ('AE', 'Armed Forces Europe'),\n    ('AP', 'Armed Forces Pacific'),\n)\n\n# Non-US locations serviced by USPS (under Compact of Free\n# Association).\nCOFA_STATES = (\n    ('FM', 'Federated States of Micronesia'),\n    ('MH', 'Marshall Islands'),\n    ('PW', 'Palau'),\n)\n\n# Obsolete abbreviations (no longer US territories/USPS service, or\n# code changed).\nOBSOLETE_STATES = (\n    ('CM', 'Commonwealth of the Northern Mariana Islands'), # Is now 'MP'\n    ('CZ', 'Panama Canal Zone'),                            # Reverted to Panama 1979\n    ('PI', 'Philippine Islands'),                           # Philippine independence 1946\n    ('TT', 'Trust Territory of the Pacific Islands'),       # Became the independent COFA states + Northern Mariana Islands 1979-1994\n)\n\n\n# All US states and territories plus DC and military mail.\nSTATE_CHOICES = tuple(sorted(US_STATES + US_TERRITORIES + ARMED_FORCES_STATES, key=lambda obj: obj[1]))\n\n# All US Postal Service locations.\nUSPS_CHOICES = tuple(sorted(US_STATES + US_TERRITORIES + ARMED_FORCES_STATES + COFA_STATES, key=lambda obj: obj[1]))\n\nSTATES_NORMALIZED = {\n    'ak': 'AK',\n    'al': 'AL',\n    'ala': 'AL',\n    'alabama': 'AL',\n    'alaska': 'AK',\n    'american samao': 'AS',\n    'american samoa': 'AS',\n    'ar': 'AR',\n    'ariz': 'AZ',\n    'arizona': 'AZ',\n    'ark': 'AR',\n    'arkansas': 'AR',\n    'as': 'AS',\n    'az': 'AZ',\n    'ca': 'CA',\n    'calf': 'CA',\n    'calif': 'CA',\n    'california': 'CA',\n    'co': 'CO',\n    'colo': 'CO',\n    'colorado': 'CO',\n    'conn': 'CT',\n    'connecticut': 'CT',\n    'ct': 'CT',\n    'dc': 'DC',\n    'de': 'DE',\n    'del': 'DE',\n    'delaware': 'DE',\n    'deleware': 'DE',\n    'district of columbia': 'DC',\n    'fl': 'FL',\n    'fla': 'FL',\n    'florida': 'FL',\n    'ga': 'GA',\n    'georgia': 'GA',\n    'gu': 'GU',\n    'guam': 'GU',\n    'hawaii': 'HI',\n    'hi': 'HI',\n    'ia': 'IA',\n    'id': 'ID',\n    'idaho': 'ID',\n    'il': 'IL',\n    'ill': 'IL',\n    'illinois': 'IL',\n    'in': 'IN',\n    'ind': 'IN',\n    'indiana': 'IN',\n    'iowa': 'IA',\n    'kan': 'KS',\n    'kans': 'KS',\n    'kansas': 'KS',\n    'kentucky': 'KY',\n    'ks': 'KS',\n    'ky': 'KY',\n    'la': 'LA',\n    'louisiana': 'LA',\n    'ma': 'MA',\n    'maine': 'ME',\n    'marianas islands': 'MP',\n    'marianas islands of the pacific': 'MP',\n    'marinas islands of the pacific': 'MP',\n    'maryland': 'MD',\n    'mass': 'MA',\n    'massachusetts': 'MA',\n    'massachussetts': 'MA',\n    'md': 'MD',\n    'me': 'ME',\n    'mi': 'MI',\n    'mich': 'MI',\n    'michigan': 'MI',\n    'minn': 'MN',\n    'minnesota': 'MN',\n    'miss': 'MS',\n    'mississippi': 'MS',\n    'missouri': 'MO',\n    'mn': 'MN',\n    'mo': 'MO',\n    'mont': 'MT',\n    'montana': 'MT',\n    'mp': 'MP',\n    'ms': 'MS',\n    'mt': 'MT',\n    'n d': 'ND',\n    'n dak': 'ND',\n    'n h': 'NH',\n    'n j': 'NJ',\n    'n m': 'NM',\n    'n mex': 'NM',\n    'nc': 'NC',\n    'nd': 'ND',\n    'ne': 'NE',\n    'neb': 'NE',\n    'nebr': 'NE',\n    'nebraska': 'NE',\n    'nev': 'NV',\n    'nevada': 'NV',\n    'new hampshire': 'NH',\n    'new jersey': 'NJ',\n    'new mexico': 'NM',\n    'new york': 'NY',\n    'nh': 'NH',\n    'nj': 'NJ',\n    'nm': 'NM',\n    'nmex': 'NM',\n    'north carolina': 'NC',\n    'north dakota': 'ND',\n    'northern mariana islands': 'MP',\n    'nv': 'NV',\n    'ny': 'NY',\n    'oh': 'OH',\n    'ohio': 'OH',\n    'ok': 'OK',\n    'okla': 'OK',\n    'oklahoma': 'OK',\n    'or': 'OR',\n    'ore': 'OR',\n    'oreg': 'OR',\n    'oregon': 'OR',\n    'pa': 'PA',\n    'penn': 'PA',\n    'pennsylvania': 'PA',\n    'pr': 'PR',\n    'puerto rico': 'PR',\n    'rhode island': 'RI',\n    'ri': 'RI',\n    's dak': 'SD',\n    'sc': 'SC',\n    'sd': 'SD',\n    'sdak': 'SD',\n    'south carolina': 'SC',\n    'south dakota': 'SD',\n    'tenn': 'TN',\n    'tennessee': 'TN',\n    'territory of hawaii': 'HI',\n    'tex': 'TX',\n    'texas': 'TX',\n    'tn': 'TN',\n    'tx': 'TX',\n    'us virgin islands': 'VI',\n    'usvi': 'VI',\n    'ut': 'UT',\n    'utah': 'UT',\n    'va': 'VA',\n    'vermont': 'VT',\n    'vi': 'VI',\n    'viginia': 'VA',\n    'virgin islands': 'VI',\n    'virgina': 'VA',\n    'virginia': 'VA',\n    'vt': 'VT',\n    'w va': 'WV',\n    'wa': 'WA',\n    'wash': 'WA',\n    'washington': 'WA',\n    'west virginia': 'WV',\n    'wi': 'WI',\n    'wis': 'WI',\n    'wisc': 'WI',\n    'wisconsin': 'WI',\n    'wv': 'WV',\n    'wva': 'WV',\n    'wy': 'WY',\n    'wyo': 'WY',\n    'wyoming': 'WY',\n}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/uy/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/uy/forms.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nUY-specific form helpers.\n\"\"\"\n\nfrom __future__ import absolute_import, unicode_literals\n\nfrom django.core.validators import EMPTY_VALUES\nfrom django.forms.fields import Select, RegexField\nfrom django.forms import ValidationError\nfrom django.utils.translation import ugettext_lazy as _\nfrom django.contrib.localflavor.uy.util import get_validation_digit\n\n\nclass UYDepartamentSelect(Select):\n    \"\"\"\n    A Select widget that uses a list of Uruguayan departaments as its choices.\n    \"\"\"\n    def __init__(self, attrs=None):\n        from django.contrib.localflavor.uy.uy_departaments import DEPARTAMENT_CHOICES\n        super(UYDepartamentSelect, self).__init__(attrs, choices=DEPARTAMENT_CHOICES)\n\n\nclass UYCIField(RegexField):\n    \"\"\"\n    A field that validates Uruguayan 'Cedula de identidad' (CI) numbers.\n    \"\"\"\n    default_error_messages = {\n        'invalid': _(\"Enter a valid CI number in X.XXX.XXX-X,\"\n                     \"XXXXXXX-X or XXXXXXXX format.\"),\n        'invalid_validation_digit': _(\"Enter a valid CI number.\"),\n    }\n\n    def __init__(self, *args, **kwargs):\n        super(UYCIField, self).__init__(r'(?P<num>(\\d{6,7}|(\\d\\.)?\\d{3}\\.\\d{3}))-?(?P<val>\\d)',\n                                        *args, **kwargs)\n\n    def clean(self, value):\n        \"\"\"\n        Validates format and validation digit.\n\n        The official format is [X.]XXX.XXX-X but usually dots and/or slash are\n        omitted so, when validating, those characters are ignored if found in\n        the correct place. The three typically used formats are supported:\n        [X]XXXXXXX, [X]XXXXXX-X and [X.]XXX.XXX-X.\n        \"\"\"\n\n        value = super(UYCIField, self).clean(value)\n        if value in EMPTY_VALUES:\n            return ''\n        match = self.regex.match(value)\n        if not match:\n            raise ValidationError(self.error_messages['invalid'])\n\n        number = int(match.group('num').replace('.', ''))\n        validation_digit = int(match.group('val'))\n\n        if not validation_digit == get_validation_digit(number):\n            raise ValidationError(self.error_messages['invalid_validation_digit'])\n\n        return value\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/uy/util.py",
    "content": "# -*- coding: utf-8 -*-\n\ndef get_validation_digit(number):\n    \"\"\" Calculates the validation digit for the given number. \"\"\"\n    sum = 0\n    dvs = [4, 3, 6, 7, 8, 9, 2]\n    number = str(number)\n\n    for i in range(0, len(number)):\n        sum = (int(number[-1 - i]) * dvs[i] + sum) % 10\n\n    return (10-sum) % 10\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/uy/uy_departaments.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"A list of Urguayan departaments as `choices` in a formfield.\"\"\"\nfrom __future__ import unicode_literals\n\nDEPARTAMENT_CHOICES = (\n    ('G', 'Artigas'),\n    ('A', 'Canelones'),\n    ('E', 'Cerro Largo'),\n    ('L', 'Colonia'),\n    ('Q', 'Durazno'),\n    ('N', 'Flores'),\n    ('O', 'Florida'),\n    ('P', 'Lavalleja'),\n    ('B', 'Maldonado'),\n    ('S', 'Montevideo'),\n    ('I', 'Paysandú'),\n    ('J', 'Río Negro'),\n    ('F', 'Rivera'),\n    ('C', 'Rocha'),\n    ('H', 'Salto'),\n    ('M', 'San José'),\n    ('K', 'Soriano'),\n    ('R', 'Tacuarembó'),\n    ('D', 'Treinta y Tres'),\n)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/za/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/za/forms.py",
    "content": "\"\"\"\nSouth Africa-specific Form helpers\n\"\"\"\nfrom __future__ import unicode_literals\n\nfrom django.core.validators import EMPTY_VALUES\nfrom django.forms import ValidationError\nfrom django.forms.fields import CharField, RegexField\nfrom django.utils.checksums import luhn\nfrom django.utils.translation import gettext as _\nimport re\nfrom datetime import date\n\nid_re = re.compile(r'^(?P<yy>\\d\\d)(?P<mm>\\d\\d)(?P<dd>\\d\\d)(?P<mid>\\d{4})(?P<end>\\d{3})')\n\nclass ZAIDField(CharField):\n    \"\"\"A form field for South African ID numbers -- the checksum is validated\n    using the Luhn checksum, and uses a simlistic (read: not entirely accurate)\n    check for the birthdate\n    \"\"\"\n    default_error_messages = {\n        'invalid': _('Enter a valid South African ID number'),\n    }\n\n    def clean(self, value):\n        super(ZAIDField, self).clean(value)\n\n        if value in EMPTY_VALUES:\n            return ''\n\n        # strip spaces and dashes\n        value = value.strip().replace(' ', '').replace('-', '')\n\n        match = re.match(id_re, value)\n\n        if not match:\n            raise ValidationError(self.error_messages['invalid'])\n\n        g = match.groupdict()\n\n        try:\n            # The year 2000 is conveniently a leapyear.\n            # This algorithm will break in xx00 years which aren't leap years\n            # There is no way to guess the century of a ZA ID number\n            d = date(int(g['yy']) + 2000, int(g['mm']), int(g['dd']))\n        except ValueError:\n            raise ValidationError(self.error_messages['invalid'])\n\n        if not luhn(value):\n            raise ValidationError(self.error_messages['invalid'])\n\n        return value\n\nclass ZAPostCodeField(RegexField):\n    default_error_messages = {\n        'invalid': _('Enter a valid South African postal code'),\n    }\n\n    def __init__(self, max_length=None, min_length=None, *args, **kwargs):\n        super(ZAPostCodeField, self).__init__(r'^\\d{4}$',\n            max_length, min_length, *args, **kwargs)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/localflavor/za/za_provinces.py",
    "content": "from django.utils.translation import gettext_lazy as _\n\nPROVINCE_CHOICES = (\n    ('EC', _('Eastern Cape')),\n    ('FS', _('Free State')),\n    ('GP', _('Gauteng')),\n    ('KN', _('KwaZulu-Natal')),\n    ('LP', _('Limpopo')),\n    ('MP', _('Mpumalanga')),\n    ('NC', _('Northern Cape')),\n    ('NW', _('North West')),\n    ('WC', _('Western Cape')),\n)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/markup/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/markup/models.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/markup/templatetags/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/markup/templatetags/markup.py",
    "content": "\"\"\"\nSet of \"markup\" template filters for Django.  These filters transform plain text\nmarkup syntaxes to HTML; currently there is support for:\n\n    * Textile, which requires the PyTextile library available at\n      http://loopcore.com/python-textile/\n\n    * Markdown, which requires the Python-markdown library from\n      http://www.freewisdom.org/projects/python-markdown\n\n    * reStructuredText, which requires docutils from http://docutils.sf.net/\n\"\"\"\n\nfrom django import template\nfrom django.conf import settings\nfrom django.utils.encoding import force_bytes, force_text\nfrom django.utils.safestring import mark_safe\n\nregister = template.Library()\n\n@register.filter(is_safe=True)\ndef textile(value):\n    try:\n        import textile\n    except ImportError:\n        if settings.DEBUG:\n            raise template.TemplateSyntaxError(\"Error in 'textile' filter: The Python textile library isn't installed.\")\n        return force_text(value)\n    else:\n        return mark_safe(force_text(textile.textile(force_bytes(value), encoding='utf-8', output='utf-8')))\n\n@register.filter(is_safe=True)\ndef markdown(value, arg=''):\n    \"\"\"\n    Runs Markdown over a given value, optionally using various\n    extensions python-markdown supports.\n\n    Syntax::\n\n        {{ value|markdown:\"extension1_name,extension2_name...\" }}\n\n    To enable safe mode, which strips raw HTML and only returns HTML\n    generated by actual Markdown syntax, pass \"safe\" as the first\n    extension in the list.\n\n    If the version of Markdown in use does not support extensions,\n    they will be silently ignored.\n\n    \"\"\"\n    import warnings\n    warnings.warn('The markdown filter has been deprecated',\n                  category=DeprecationWarning)\n    try:\n        import markdown\n    except ImportError:\n        if settings.DEBUG:\n            raise template.TemplateSyntaxError(\"Error in 'markdown' filter: The Python markdown library isn't installed.\")\n        return force_text(value)\n    else:\n        markdown_vers = getattr(markdown, \"version_info\", 0)\n        if markdown_vers < (2, 1):\n            if settings.DEBUG:\n                raise template.TemplateSyntaxError(\n                    \"Error in 'markdown' filter: Django does not support versions of the Python markdown library < 2.1.\")\n            return force_text(value)\n        else:\n            extensions = [e for e in arg.split(\",\") if e]\n            if extensions and extensions[0] == \"safe\":\n                extensions = extensions[1:]\n                return mark_safe(markdown.markdown(\n                    force_text(value), extensions, safe_mode=True, enable_attributes=False))\n            else:\n                return mark_safe(markdown.markdown(\n                    force_text(value), extensions, safe_mode=False))\n\n@register.filter(is_safe=True)\ndef restructuredtext(value):\n    import warnings\n    warnings.warn('The restructuredtext filter has been deprecated',\n                  category=DeprecationWarning)\n    try:\n        from docutils.core import publish_parts\n    except ImportError:\n        if settings.DEBUG:\n            raise template.TemplateSyntaxError(\"Error in 'restructuredtext' filter: The Python docutils library isn't installed.\")\n        return force_text(value)\n    else:\n        docutils_settings = getattr(settings, \"RESTRUCTUREDTEXT_FILTER_SETTINGS\", {})\n        parts = publish_parts(source=force_bytes(value), writer_name=\"html4css1\", settings_overrides=docutils_settings)\n        return mark_safe(force_text(parts[\"fragment\"]))\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/markup/tests.py",
    "content": "# Quick tests for the markup templatetags (django.contrib.markup)\nimport re\nimport warnings\n\nfrom django.template import Template, Context\nfrom django import test\nfrom django.utils import unittest\nfrom django.utils.html import escape\n\ntry:\n    import textile\nexcept ImportError:\n    textile = None\n\ntry:\n    import markdown\n    markdown_version = getattr(markdown, \"version_info\", 0)\nexcept ImportError:\n    markdown = None\n\ntry:\n    import docutils\nexcept ImportError:\n    docutils = None\n\nclass Templates(test.TestCase):\n\n    textile_content = \"\"\"Paragraph 1\n\nParagraph 2 with \"quotes\" and @code@\"\"\"\n\n    markdown_content = \"\"\"Paragraph 1\n\n## An h2\"\"\"\n\n    rest_content = \"\"\"Paragraph 1\n\nParagraph 2 with a link_\n\n.. _link: http://www.example.com/\"\"\"\n\n    def setUp(self):\n        self.save_warnings_state()\n        warnings.filterwarnings('ignore', category=DeprecationWarning, module='django.contrib.markup')\n\n    def tearDown(self):\n        self.restore_warnings_state()\n\n    @unittest.skipUnless(textile, 'textile not installed')\n    def test_textile(self):\n        t = Template(\"{% load markup %}{{ textile_content|textile }}\")\n        rendered = t.render(Context({'textile_content':self.textile_content})).strip()\n        self.assertEqual(rendered.replace('\\t', ''), \"\"\"<p>Paragraph 1</p>\n\n<p>Paragraph 2 with &#8220;quotes&#8221; and <code>code</code></p>\"\"\")\n\n    @unittest.skipIf(textile, 'textile is installed')\n    def test_no_textile(self):\n        t = Template(\"{% load markup %}{{ textile_content|textile }}\")\n        rendered = t.render(Context({'textile_content':self.textile_content})).strip()\n        self.assertEqual(rendered, escape(self.textile_content))\n\n    @unittest.skipUnless(markdown and markdown_version >= (2,1), 'markdown >= 2.1 not installed')\n    def test_markdown(self):\n        t = Template(\"{% load markup %}{{ markdown_content|markdown }}\")\n        rendered = t.render(Context({'markdown_content':self.markdown_content})).strip()\n        pattern = re.compile(\"\"\"<p>Paragraph 1\\s*</p>\\s*<h2>\\s*An h2</h2>\"\"\")\n        self.assertTrue(pattern.match(rendered))\n\n    @unittest.skipUnless(markdown and markdown_version >= (2,1), 'markdown >= 2.1 not installed')\n    def test_markdown_attribute_disable(self):\n        t = Template(\"{% load markup %}{{ markdown_content|markdown:'safe' }}\")\n        markdown_content = \"{@onclick=alert('hi')}some paragraph\"\n        rendered = t.render(Context({'markdown_content':markdown_content})).strip()\n        self.assertTrue('@' in rendered)\n\n    @unittest.skipUnless(markdown and markdown_version >= (2,1), 'markdown >= 2.1 not installed')\n    def test_markdown_attribute_enable(self):\n        t = Template(\"{% load markup %}{{ markdown_content|markdown }}\")\n        markdown_content = \"{@onclick=alert('hi')}some paragraph\"\n        rendered = t.render(Context({'markdown_content':markdown_content})).strip()\n        self.assertFalse('@' in rendered)\n\n    @unittest.skipIf(markdown, 'markdown is installed')\n    def test_no_markdown(self):\n        t = Template(\"{% load markup %}{{ markdown_content|markdown }}\")\n        rendered = t.render(Context({'markdown_content':self.markdown_content})).strip()\n        self.assertEqual(rendered, self.markdown_content)\n\n    @unittest.skipUnless(docutils, 'docutils not installed')\n    def test_docutils(self):\n        t = Template(\"{% load markup %}{{ rest_content|restructuredtext }}\")\n        rendered = t.render(Context({'rest_content':self.rest_content})).strip()\n        # Different versions of docutils return slightly different HTML\n        try:\n            # Docutils v0.4 and earlier\n            self.assertEqual(rendered, \"\"\"<p>Paragraph 1</p>\n<p>Paragraph 2 with a <a class=\"reference\" href=\"http://www.example.com/\">link</a></p>\"\"\")\n        except AssertionError:\n            # Docutils from SVN (which will become 0.5)\n            self.assertEqual(rendered, \"\"\"<p>Paragraph 1</p>\n<p>Paragraph 2 with a <a class=\"reference external\" href=\"http://www.example.com/\">link</a></p>\"\"\")\n\n    @unittest.skipIf(docutils, 'docutils is installed')\n    def test_no_docutils(self):\n        t = Template(\"{% load markup %}{{ rest_content|restructuredtext }}\")\n        rendered = t.render(Context({'rest_content':self.rest_content})).strip()\n        self.assertEqual(rendered, self.rest_content)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/__init__.py",
    "content": "from __future__ import absolute_import\n\nfrom django.contrib.messages.api import *\nfrom django.contrib.messages.constants import *\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/api.py",
    "content": "from django.contrib.messages import constants\nfrom django.contrib.messages.storage import default_storage\n\n__all__ = (\n    'add_message', 'get_messages',\n    'get_level', 'set_level',\n    'debug', 'info', 'success', 'warning', 'error',\n)\n\n\nclass MessageFailure(Exception):\n    pass\n\n\ndef add_message(request, level, message, extra_tags='', fail_silently=False):\n    \"\"\"\n    Attempts to add a message to the request using the 'messages' app.\n    \"\"\"\n    if hasattr(request, '_messages'):\n        return request._messages.add(level, message, extra_tags)\n    if not fail_silently:\n        raise MessageFailure('You cannot add messages without installing '\n                    'django.contrib.messages.middleware.MessageMiddleware')\n\n\ndef get_messages(request):\n    \"\"\"\n    Returns the message storage on the request if it exists, otherwise returns\n    an empty list.\n    \"\"\"\n    if hasattr(request, '_messages'):\n        return request._messages\n    else:\n        return []\n\n\ndef get_level(request):\n    \"\"\"\n    Returns the minimum level of messages to be recorded.\n\n    The default level is the ``MESSAGE_LEVEL`` setting. If this is not found,\n    the ``INFO`` level is used.\n    \"\"\"\n    if hasattr(request, '_messages'):\n        storage = request._messages\n    else:\n        storage = default_storage(request)\n    return storage.level\n\n\ndef set_level(request, level):\n    \"\"\"\n    Sets the minimum level of messages to be recorded, returning ``True`` if\n    the level was recorded successfully.\n\n    If set to ``None``, the default level will be used (see the ``get_level``\n    method).\n    \"\"\"\n    if not hasattr(request, '_messages'):\n        return False\n    request._messages.level = level\n    return True\n\n\ndef debug(request, message, extra_tags='', fail_silently=False):\n    \"\"\"\n    Adds a message with the ``DEBUG`` level.\n    \"\"\"\n    add_message(request, constants.DEBUG, message, extra_tags=extra_tags,\n                fail_silently=fail_silently)\n\n\ndef info(request, message, extra_tags='', fail_silently=False):\n    \"\"\"\n    Adds a message with the ``INFO`` level.\n    \"\"\"\n    add_message(request, constants.INFO, message, extra_tags=extra_tags,\n                fail_silently=fail_silently)\n\n\ndef success(request, message, extra_tags='', fail_silently=False):\n    \"\"\"\n    Adds a message with the ``SUCCESS`` level.\n    \"\"\"\n    add_message(request, constants.SUCCESS, message, extra_tags=extra_tags,\n                fail_silently=fail_silently)\n\n\ndef warning(request, message, extra_tags='', fail_silently=False):\n    \"\"\"\n    Adds a message with the ``WARNING`` level.\n    \"\"\"\n    add_message(request, constants.WARNING, message, extra_tags=extra_tags,\n                fail_silently=fail_silently)\n\n\ndef error(request, message, extra_tags='', fail_silently=False):\n    \"\"\"\n    Adds a message with the ``ERROR`` level.\n    \"\"\"\n    add_message(request, constants.ERROR, message, extra_tags=extra_tags,\n                fail_silently=fail_silently)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/constants.py",
    "content": "DEBUG = 10\nINFO = 20\nSUCCESS = 25\nWARNING = 30\nERROR = 40\n\nDEFAULT_TAGS = {\n    DEBUG: 'debug',\n    INFO: 'info',\n    SUCCESS: 'success',\n    WARNING: 'warning',\n    ERROR: 'error',\n}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/context_processors.py",
    "content": "from django.contrib.messages.api import get_messages\n\n\ndef messages(request):\n    \"\"\"\n    Returns a lazy 'messages' context variable.\n    \"\"\"\n    return {'messages': get_messages(request)}\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/ar/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Ossama Khayat <okhayat@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:16+0000\\n\"\n\"Last-Translator: Ossama Khayat <okhayat@gmail.com>\\n\"\n\"Language-Team: Arabic (http://www.transifex.com/projects/p/django/language/\"\n\"ar/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ar\\n\"\n\"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 \"\n\"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"رسالة فارغة\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/az/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Ali Ismayilov <ali@ismailov.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:16+0000\\n\"\n\"Last-Translator: Ali Ismayilov <ali@ismailov.info>\\n\"\n\"Language-Team: Azerbaijani (http://www.transifex.com/projects/p/django/\"\n\"language/az/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: az\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"tənbəl mesaj\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/be/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-08-11 10:22+0000\\n\"\n\"Last-Translator: Павал Клёк <yehekim@gmail.com>\\n\"\n\"Language-Team: Belarusian (http://www.transifex.com/projects/p/django/\"\n\"language/be/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: be\\n\"\n\"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"паведамленьне з адкладзеным перакладам\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/bg/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Todor Lubenov <tlubenov@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:16+0000\\n\"\n\"Last-Translator: Todor Lubenov <tlubenov@gmail.com>\\n\"\n\"Language-Team: Bulgarian (http://www.transifex.com/projects/p/django/\"\n\"language/bg/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: bg\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"подсказващо съобщение\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/bn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <rafi.tahmid@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-09-06 21:47+0000\\n\"\n\"Last-Translator: tahmidrafi <rafi.tahmid@gmail.com>\\n\"\n\"Language-Team: Bengali (http://www.transifex.com/projects/p/django/language/\"\n\"bn/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: bn\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"লেজি মেসেজ\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/br/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Fulup  <fulup.jakez@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-06-29 10:58+0000\\n\"\n\"Last-Translator: Fulup <fulup.jakez@gmail.com>\\n\"\n\"Language-Team: Breton (http://www.transifex.com/projects/p/django/language/\"\n\"br/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: br\\n\"\n\"Plural-Forms: nplurals=2; plural=(n > 1);\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"kemennadenn \\\"lazy\\\"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/bs/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:16+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Bosnian (http://www.transifex.com/projects/p/django/language/\"\n\"bs/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: bs\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"lijena poruka\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/ca/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:16+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Catalan (http://www.transifex.com/projects/p/django/language/\"\n\"ca/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ca\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"missatge gandul\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/cs/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:16+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Czech (http://www.transifex.com/projects/p/django/language/\"\n\"cs/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: cs\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"opožděně vyhodnocená zpráva\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/cy/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2011-01-19 15:38+0000\\n\"\n\"Last-Translator: Django team\\n\"\n\"Language-Team: Welsh (http://www.transifex.com/projects/p/django/language/\"\n\"cy/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: cy\\n\"\n\"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != \"\n\"11) ? 2 : 3;\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/da/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:16+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Danish (http://www.transifex.com/projects/p/django/language/\"\n\"da/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: da\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"doven meddelelse\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/de/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:16+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: German (http://www.transifex.com/projects/p/django/language/\"\n\"de/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: de\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"Lazy Nachricht\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/el/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Dimitris Glezos <glezos@indifex.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:16+0000\\n\"\n\"Last-Translator: Dimitris Glezos <glezos@transifex.com>\\n\"\n\"Language-Team: Greek (http://www.transifex.com/projects/p/django/language/\"\n\"el/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: el\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"lazy μήνυμα\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/en/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:16+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: English <en@li.org>\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: en\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"lazy message\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/en_GB/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# jon_atkinson <jon@jonatkinson.co.uk>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:16+0000\\n\"\n\"Last-Translator: jon_atkinson <jon@jonatkinson.co.uk>\\n\"\n\"Language-Team: English (United Kingdom) (http://www.transifex.com/projects/p/\"\n\"django/language/en_GB/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: en_GB\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"lazy message\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/eo/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Baptiste  <bapdarth@yahoo.fr>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:16+0000\\n\"\n\"Last-Translator: Baptiste <baptiste+transifex@darthenay.fr>\\n\"\n\"Language-Team: Esperanto (http://www.transifex.com/projects/p/django/\"\n\"language/eo/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: eo\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"pigra mesaĝo\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/es/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:16+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Spanish (http://www.transifex.com/projects/p/django/language/\"\n\"es/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: es\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"mensaje vago\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/es_AR/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:16+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/\"\n\"django/language/es_AR/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: es_AR\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"mensaje lazy\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/es_MX/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Abraham Estrada <abraham.estrada@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:16+0000\\n\"\n\"Last-Translator: Abraham Estrada <abraham.estrada@gmail.com>\\n\"\n\"Language-Team: Spanish (Mexico) (http://www.transifex.com/projects/p/django/\"\n\"language/es_MX/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: es_MX\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"mensaje flojo\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/et/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# madisvain <madisvain@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:16+0000\\n\"\n\"Last-Translator: madisvain <madisvain@gmail.com>\\n\"\n\"Language-Team: Estonian (http://www.transifex.com/projects/p/django/language/\"\n\"et/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: et\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"laisk sõnum\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/eu/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Aitzol Naberan <anaberan@codesyntax.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-03-09 11:07+0000\\n\"\n\"Last-Translator: Aitzol Naberan <anaberan@codesyntax.com>\\n\"\n\"Language-Team: Basque (http://www.transifex.com/projects/p/django/language/\"\n\"eu/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: eu\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"mezu nagia\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/fa/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Ali Nikneshan <ali@nikneshan.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:16+0000\\n\"\n\"Last-Translator: Ali Nikneshan <ali@nikneshan.com>\\n\"\n\"Language-Team: Persian (http://www.transifex.com/projects/p/django/language/\"\n\"fa/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: fa\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"پیغام با تاخیر\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/fi/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:16+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Finnish (http://www.transifex.com/projects/p/django/language/\"\n\"fi/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: fi\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"laiska viesti\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/fr/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:16+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: French (http://www.transifex.com/projects/p/django/language/\"\n\"fr/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: fr\\n\"\n\"Plural-Forms: nplurals=2; plural=(n > 1);\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"message « lazy »\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/fy_NL/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:43+0100\\n\"\n\"PO-Revision-Date: 2011-03-15 15:35+0000\\n\"\n\"Last-Translator: Django team\\n\"\n\"Language-Team: English <en@li.org>\\n\"\n\"Language: fy_NL\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1)\\n\"\n\n#: tests/base.py:100\nmsgid \"lazy message\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/ga/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:16+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Irish (http://www.transifex.com/projects/p/django/language/\"\n\"ga/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ga\\n\"\n\"Plural-Forms: nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : \"\n\"4);\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"teachtaireacht leisciúil\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/gl/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# fasouto <fsoutomoure@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:16+0000\\n\"\n\"Last-Translator: fasouto <fsoutomoure@gmail.com>\\n\"\n\"Language-Team: Galician (http://www.transifex.com/projects/p/django/language/\"\n\"gl/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: gl\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"mensaxe vago\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/he/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:16+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Hebrew (http://www.transifex.com/projects/p/django/language/\"\n\"he/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: he\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"הודעה 'עצלה'\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/hi/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Sandeep Satavlekar <sandysat@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:16+0000\\n\"\n\"Last-Translator: Sandeep Satavlekar <sandysat@gmail.com>\\n\"\n\"Language-Team: Hindi (http://www.transifex.com/projects/p/django/language/\"\n\"hi/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: hi\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"आलसी संदेश\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/hr/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:16+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Croatian (http://www.transifex.com/projects/p/django/language/\"\n\"hr/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: hr\\n\"\n\"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"lijena poruka (\\\"lazy message\\\")\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/hu/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Szilveszter Farkas <szilveszter.farkas@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:16+0000\\n\"\n\"Last-Translator: Szilveszter Farkas <szilveszter.farkas@gmail.com>\\n\"\n\"Language-Team: Hungarian (http://www.transifex.com/projects/p/django/\"\n\"language/hu/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: hu\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"lusta üzenet\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/ia/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Martijn Dekker <mcdutchie@hotmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-08-20 19:21+0000\\n\"\n\"Last-Translator: Martijn Dekker <mcdutchie@hotmail.com>\\n\"\n\"Language-Team: Interlingua (http://www.transifex.com/projects/p/django/\"\n\"language/ia/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ia\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"message pigre\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/id/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# rodin <romihardiyanto@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:16+0000\\n\"\n\"Last-Translator: rodin <romihardiyanto@gmail.com>\\n\"\n\"Language-Team: Indonesian (http://www.transifex.com/projects/p/django/\"\n\"language/id/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: id\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"pesan tidak segera\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/is/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Hafsteinn Einarsson <haffi67@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:16+0000\\n\"\n\"Last-Translator: Hafsteinn Einarsson <haffi67@gmail.com>\\n\"\n\"Language-Team: Icelandic (http://www.transifex.com/projects/p/django/\"\n\"language/is/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: is\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"letiboð\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/it/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:16+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Italian (http://www.transifex.com/projects/p/django/language/\"\n\"it/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: it\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"messaggio lazy\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/ja/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:16+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Japanese (http://www.transifex.com/projects/p/django/language/\"\n\"ja/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ja\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"遅延メッセージ\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/ka/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# avsd05 <avsd05@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:16+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Georgian (http://www.transifex.com/projects/p/django/language/\"\n\"ka/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ka\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"\\\"ზარმაცი\\\" შეტყობინება\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/kk/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <germanilyin@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:16+0000\\n\"\n\"Last-Translator: yun_man_ger <germanilyin@gmail.com>\\n\"\n\"Language-Team: Kazakh (http://www.transifex.com/projects/p/django/language/\"\n\"kk/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: kk\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"еріншек хабар\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/km/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:43+0100\\n\"\n\"PO-Revision-Date: 2011-03-15 15:34+0000\\n\"\n\"Last-Translator: Django team\\n\"\n\"Language-Team: English <en@li.org>\\n\"\n\"Language: km\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=1; plural=0\\n\"\n\n#: tests/base.py:100\nmsgid \"lazy message\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/kn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2011-01-19 15:38+0000\\n\"\n\"Last-Translator: Django team\\n\"\n\"Language-Team: Kannada (http://www.transifex.com/projects/p/django/language/\"\n\"kn/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: kn\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/ko/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:16+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Korean (http://www.transifex.com/projects/p/django/language/\"\n\"ko/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ko\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"늦게 번역되는(lazy) 메시지\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/lt/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# lauris <lauris@runbox.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:16+0000\\n\"\n\"Last-Translator: lauris <lauris@runbox.com>\\n\"\n\"Language-Team: Lithuanian (http://www.transifex.com/projects/p/django/\"\n\"language/lt/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: lt\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n\"\n\"%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"Uždelsta žinutė\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/lv/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:16+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Latvian (http://www.transifex.com/projects/p/django/language/\"\n\"lv/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: lv\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : \"\n\"2);\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"ziņojums (slinkais)\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/mk/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:16+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Macedonian (http://www.transifex.com/projects/p/django/\"\n\"language/mk/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: mk\\n\"\n\"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"мрзлива порака\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/ml/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:16+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Malayalam (http://www.transifex.com/projects/p/django/\"\n\"language/ml/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ml\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"അലസ സന്ദേശം\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/mn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Анхбаяр Анхаа <l.ankhbayar@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:16+0000\\n\"\n\"Last-Translator: Анхбаяр Анхаа <l.ankhbayar@gmail.com>\\n\"\n\"Language-Team: Mongolian (http://www.transifex.com/projects/p/django/\"\n\"language/mn/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: mn\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"Удаан мессеж\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/nb/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <sigurdga-transifex@sigurdga.no>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-03-12 14:51+0000\\n\"\n\"Last-Translator: Sigurd Gartmann <sigurdga-transifex@sigurdga.no>\\n\"\n\"Language-Team: Norwegian Bokmål (http://www.transifex.com/projects/p/django/\"\n\"language/nb/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: nb\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"«lazy»-melding\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/ne/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Sagar Chalise <chalisesagar@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:16+0000\\n\"\n\"Last-Translator: Sagar Chalise <chalisesagar@gmail.com>\\n\"\n\"Language-Team: Nepali (http://www.transifex.com/projects/p/django/language/\"\n\"ne/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ne\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"सम सन्देश\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/nl/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Tino de Bruijn <tinodb@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:16+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Dutch (http://www.transifex.com/projects/p/django/language/\"\n\"nl/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: nl\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"later vertaald bericht\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/nn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:16+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Norwegian Nynorsk (http://www.transifex.com/projects/p/django/\"\n\"language/nn/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: nn\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"lat melding\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/pa/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:16+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Panjabi (Punjabi) (http://www.transifex.com/projects/p/django/\"\n\"language/pa/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: pa\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/pl/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:16+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Polish (http://www.transifex.com/projects/p/django/language/\"\n\"pl/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: pl\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 \"\n\"|| n%100>=20) ? 1 : 2);\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"testowa wiadomość z opóźnioną ewaluacją\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/pt/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:16+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Portuguese (http://www.transifex.com/projects/p/django/\"\n\"language/pt/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: pt\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"mensagem lazy\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/pt_BR/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:16+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Portuguese (Brazil) <django-l10n-portuguese@googlegroups.\"\n\"com>\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: pt_BR\\n\"\n\"Plural-Forms: nplurals=2; plural=(n > 1);\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"mensagem lazy\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/ro/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Daniel Ursache-Dogariu <contact@danniel.net>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:16+0000\\n\"\n\"Last-Translator: Daniel Ursache-Dogariu <contact@danniel.net>\\n\"\n\"Language-Team: Romanian (http://www.transifex.com/projects/p/django/language/\"\n\"ro/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ro\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?\"\n\"2:1));\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"mesaj întârziat\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/ru/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:16+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Russian (http://www.transifex.com/projects/p/django/language/\"\n\"ru/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ru\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"сообщение с отложенным переводом\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/sk/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:16+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Slovak (http://www.transifex.com/projects/p/django/language/\"\n\"sk/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sk\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"lenivá správa\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/sl/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <>, 2012.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-10-31 19:07+0000\\n\"\n\"Last-Translator: mateju <>\\n\"\n\"Language-Team: Slovenian (http://www.transifex.com/projects/p/django/\"\n\"language/sl/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sl\\n\"\n\"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n\"\n\"%100==4 ? 2 : 3);\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"leno sporočilo\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/sq/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Besnik <besnik@programeshqip.org>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:16+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Albanian (http://www.transifex.com/projects/p/django/language/\"\n\"sq/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sq\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"mesazh i vagullt\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/sr/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:16+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Serbian (http://www.transifex.com/projects/p/django/language/\"\n\"sr/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sr\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"порука\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/sr_Latn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:16+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/django/\"\n\"language/sr@latin/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sr@latin\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"poruka\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/sv/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Andreas Pelme <andreas@pelme.se>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:16+0000\\n\"\n\"Last-Translator: Andreas Pelme <andreas@pelme.se>\\n\"\n\"Language-Team: Swedish (http://www.transifex.com/projects/p/django/language/\"\n\"sv/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sv\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"\\\"lazy\\\"-meddelande\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/sw/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-07-06 18:49+0000\\n\"\n\"Last-Translator: machaku <bmachaku@gmail.com>\\n\"\n\"Language-Team: Swahili (http://www.transifex.com/projects/p/django/language/\"\n\"sw/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sw\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"ujumbe wa kivivu\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/ta/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2011-01-19 15:38+0000\\n\"\n\"Last-Translator: Django team\\n\"\n\"Language-Team: Tamil (http://www.transifex.com/projects/p/django/language/\"\n\"ta/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ta\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/te/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# bhaskar teja yerneni <prudhviy@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:16+0000\\n\"\n\"Last-Translator: bhaskar teja yerneni <prudhviy@gmail.com>\\n\"\n\"Language-Team: Telugu (http://www.transifex.com/projects/p/django/language/\"\n\"te/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: te\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"మందమైన సందేశం\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/th/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Kowit Charoenratchatabhan <kowito@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:16+0000\\n\"\n\"Last-Translator: Kowit Charoenratchatabhan <kowit.s.c@gmail.com>\\n\"\n\"Language-Team: Thai (http://www.transifex.com/projects/p/django/language/\"\n\"th/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: th\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"ข้อความเฉื่อย\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/tr/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:16+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Turkish (http://www.transifex.com/projects/p/django/language/\"\n\"tr/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: tr\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"tembel mesaj\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/tt/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Azat Khasanshin <lordofbazuks@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:16+0000\\n\"\n\"Last-Translator: Azat Khasanshin <lordofbazuks@gmail.com>\\n\"\n\"Language-Team: Tatar (http://www.transifex.com/projects/p/django/language/\"\n\"tt/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: tt\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"ялкау хәбәр\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/uk/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Sergey Lysach <sergikoff88@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-03-11 17:13+0000\\n\"\n\"Last-Translator: Sergey Lysach <sergikoff88@gmail.com>\\n\"\n\"Language-Team: Ukrainian (http://www.transifex.com/projects/p/django/\"\n\"language/uk/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: uk\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"повідомлення з відкладеним перекладом\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/ur/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Mansoorulhaq Mansoor <mansoorulhaq1986@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:16+0000\\n\"\n\"Last-Translator: Mansoorulhaq Mansoor <mansoorulhaq1986@gmail.com>\\n\"\n\"Language-Team: Urdu (http://www.transifex.com/projects/p/django/language/\"\n\"ur/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ur\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"سست پیغام\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/vi/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Vuong Nguyen <autalpha@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:16+0000\\n\"\n\"Last-Translator: Vuong Nguyen <autalpha@gmail.com>\\n\"\n\"Language-Team: Vietnamese (http://www.transifex.com/projects/p/django/\"\n\"language/vi/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: vi\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"tin nhắn lười biếng\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/zh_CN/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Lele Long <schemacs@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:16+0000\\n\"\n\"Last-Translator: Lele Long <schemacs@gmail.com>\\n\"\n\"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/django/\"\n\"language/zh_CN/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: zh_CN\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"惰性翻译的消息\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/locale/zh_TW/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# ming hsien tzang <tzangms@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:16+0000\\n\"\n\"Last-Translator: ming hsien tzang <tzangms@gmail.com>\\n\"\n\"Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/django/\"\n\"language/zh_TW/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: zh_TW\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: tests/base.py:101\nmsgid \"lazy message\"\nmsgstr \"惰式訊息\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/middleware.py",
    "content": "from django.conf import settings\nfrom django.contrib.messages.storage import default_storage\n\n\nclass MessageMiddleware(object):\n    \"\"\"\n    Middleware that handles temporary messages.\n    \"\"\"\n\n    def process_request(self, request):\n        request._messages = default_storage(request)\n\n    def process_response(self, request, response):\n        \"\"\"\n        Updates the storage backend (i.e., saves the messages).\n\n        If not all messages could not be stored and ``DEBUG`` is ``True``, a\n        ``ValueError`` is raised.\n        \"\"\"\n        # A higher middleware layer may return a request which does not contain\n        # messages storage, so make no assumption that it will be there.\n        if hasattr(request, '_messages'):\n            unstored_messages = request._messages.update(response)\n            if unstored_messages and settings.DEBUG:\n                raise ValueError('Not all temporary messages could be stored.')\n        return response\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/models.py",
    "content": "# Models module required so tests are discovered.\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/storage/__init__.py",
    "content": "from django.conf import settings\nfrom django.core.exceptions import ImproperlyConfigured\nfrom django.utils.importlib import import_module\n\n\ndef get_storage(import_path):\n    \"\"\"\n    Imports the message storage class described by import_path, where\n    import_path is the full Python path to the class.\n    \"\"\"\n    try:\n        dot = import_path.rindex('.')\n    except ValueError:\n        raise ImproperlyConfigured(\"%s isn't a Python path.\" % import_path)\n    module, classname = import_path[:dot], import_path[dot + 1:]\n    try:\n        mod = import_module(module)\n    except ImportError as e:\n        raise ImproperlyConfigured('Error importing module %s: \"%s\"' %\n                                   (module, e))\n    try:\n        return getattr(mod, classname)\n    except AttributeError:\n        raise ImproperlyConfigured('Module \"%s\" does not define a \"%s\" '\n                                   'class.' % (module, classname))\n\n\n# Callable with the same interface as the storage classes i.e.  accepts a\n# 'request' object.  It is wrapped in a lambda to stop 'settings' being used at\n# the module level\ndefault_storage = lambda request: get_storage(settings.MESSAGE_STORAGE)(request)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/storage/base.py",
    "content": "from __future__ import unicode_literals\n\nfrom django.conf import settings\nfrom django.utils.encoding import force_text, python_2_unicode_compatible\nfrom django.contrib.messages import constants, utils\n\n\nLEVEL_TAGS = utils.get_level_tags()\n\n\n@python_2_unicode_compatible\nclass Message(object):\n    \"\"\"\n    Represents an actual message that can be stored in any of the supported\n    storage classes (typically session- or cookie-based) and rendered in a view\n    or template.\n    \"\"\"\n\n    def __init__(self, level, message, extra_tags=None):\n        self.level = int(level)\n        self.message = message\n        self.extra_tags = extra_tags\n\n    def _prepare(self):\n        \"\"\"\n        Prepares the message for serialization by forcing the ``message``\n        and ``extra_tags`` to unicode in case they are lazy translations.\n\n        Known \"safe\" types (None, int, etc.) are not converted (see Django's\n        ``force_text`` implementation for details).\n        \"\"\"\n        self.message = force_text(self.message, strings_only=True)\n        self.extra_tags = force_text(self.extra_tags, strings_only=True)\n\n    def __eq__(self, other):\n        return isinstance(other, Message) and self.level == other.level and \\\n                                              self.message == other.message\n\n    def __str__(self):\n        return force_text(self.message)\n\n    def _get_tags(self):\n        label_tag = force_text(LEVEL_TAGS.get(self.level, ''),\n                                  strings_only=True)\n        extra_tags = force_text(self.extra_tags, strings_only=True)\n        if extra_tags and label_tag:\n            return ' '.join([extra_tags, label_tag])\n        elif extra_tags:\n            return extra_tags\n        elif label_tag:\n            return label_tag\n        return ''\n    tags = property(_get_tags)\n\n\nclass BaseStorage(object):\n    \"\"\"\n    This is the base backend for temporary message storage.\n\n    This is not a complete class; to be a usable storage backend, it must be\n    subclassed and the two methods ``_get`` and ``_store`` overridden.\n    \"\"\"\n\n    def __init__(self, request, *args, **kwargs):\n        self.request = request\n        self._queued_messages = []\n        self.used = False\n        self.added_new = False\n        super(BaseStorage, self).__init__(*args, **kwargs)\n\n    def __len__(self):\n        return len(self._loaded_messages) + len(self._queued_messages)\n\n    def __iter__(self):\n        self.used = True\n        if self._queued_messages:\n            self._loaded_messages.extend(self._queued_messages)\n            self._queued_messages = []\n        return iter(self._loaded_messages)\n\n    def __contains__(self, item):\n        return item in self._loaded_messages or item in self._queued_messages\n\n    @property\n    def _loaded_messages(self):\n        \"\"\"\n        Returns a list of loaded messages, retrieving them first if they have\n        not been loaded yet.\n        \"\"\"\n        if not hasattr(self, '_loaded_data'):\n            messages, all_retrieved = self._get()\n            self._loaded_data = messages or []\n        return self._loaded_data\n\n    def _get(self, *args, **kwargs):\n        \"\"\"\n        Retrieves a list of stored messages. Returns a tuple of the messages\n        and a flag indicating whether or not all the messages originally\n        intended to be stored in this storage were, in fact, stored and\n        retrieved; e.g., ``(messages, all_retrieved)``.\n\n        **This method must be implemented by a subclass.**\n\n        If it is possible to tell if the backend was not used (as opposed to\n        just containing no messages) then ``None`` should be returned in\n        place of ``messages``.\n        \"\"\"\n        raise NotImplementedError()\n\n    def _store(self, messages, response, *args, **kwargs):\n        \"\"\"\n        Stores a list of messages, returning a list of any messages which could\n        not be stored.\n\n        One type of object must be able to be stored, ``Message``.\n\n        **This method must be implemented by a subclass.**\n        \"\"\"\n        raise NotImplementedError()\n\n    def _prepare_messages(self, messages):\n        \"\"\"\n        Prepares a list of messages for storage.\n        \"\"\"\n        for message in messages:\n            message._prepare()\n\n    def update(self, response):\n        \"\"\"\n        Stores all unread messages.\n\n        If the backend has yet to be iterated, previously stored messages will\n        be stored again. Otherwise, only messages added after the last\n        iteration will be stored.\n        \"\"\"\n        self._prepare_messages(self._queued_messages)\n        if self.used:\n            return self._store(self._queued_messages, response)\n        elif self.added_new:\n            messages = self._loaded_messages + self._queued_messages\n            return self._store(messages, response)\n\n    def add(self, level, message, extra_tags=''):\n        \"\"\"\n        Queues a message to be stored.\n\n        The message is only queued if it contained something and its level is\n        not less than the recording level (``self.level``).\n        \"\"\"\n        if not message:\n            return\n        # Check that the message level is not less than the recording level.\n        level = int(level)\n        if level < self.level:\n            return\n        # Add the message.\n        self.added_new = True\n        message = Message(level, message, extra_tags=extra_tags)\n        self._queued_messages.append(message)\n\n    def _get_level(self):\n        \"\"\"\n        Returns the minimum recorded level.\n\n        The default level is the ``MESSAGE_LEVEL`` setting. If this is\n        not found, the ``INFO`` level is used.\n        \"\"\"\n        if not hasattr(self, '_level'):\n            self._level = getattr(settings, 'MESSAGE_LEVEL', constants.INFO)\n        return self._level\n\n    def _set_level(self, value=None):\n        \"\"\"\n        Sets a custom minimum recorded level.\n\n        If set to ``None``, the default level will be used (see the\n        ``_get_level`` method).\n        \"\"\"\n        if value is None and hasattr(self, '_level'):\n            del self._level\n        else:\n            self._level = int(value)\n\n    level = property(_get_level, _set_level, _set_level)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/storage/cookie.py",
    "content": "import json\n\nfrom django.conf import settings\nfrom django.contrib.messages.storage.base import BaseStorage, Message\nfrom django.http import SimpleCookie\nfrom django.utils.crypto import salted_hmac, constant_time_compare\nfrom django.utils.safestring import SafeData, mark_safe\nfrom django.utils import six\n\n\nclass MessageEncoder(json.JSONEncoder):\n    \"\"\"\n    Compactly serializes instances of the ``Message`` class as JSON.\n    \"\"\"\n    message_key = '__json_message'\n\n    def default(self, obj):\n        if isinstance(obj, Message):\n            # Using 0/1 here instead of False/True to produce more compact json\n            is_safedata = 1 if isinstance(obj.message, SafeData) else 0\n            message = [self.message_key, is_safedata, obj.level, obj.message]\n            if obj.extra_tags:\n                message.append(obj.extra_tags)\n            return message\n        return super(MessageEncoder, self).default(obj)\n\n\nclass MessageDecoder(json.JSONDecoder):\n    \"\"\"\n    Decodes JSON that includes serialized ``Message`` instances.\n    \"\"\"\n\n    def process_messages(self, obj):\n        if isinstance(obj, list) and obj:\n            if obj[0] == MessageEncoder.message_key:\n                if len(obj) == 3:\n                    # Compatibility with previously-encoded messages\n                    return Message(*obj[1:])\n                if obj[1]:\n                    obj[3] = mark_safe(obj[3])\n                return Message(*obj[2:])\n            return [self.process_messages(item) for item in obj]\n        if isinstance(obj, dict):\n            return dict([(key, self.process_messages(value))\n                         for key, value in six.iteritems(obj)])\n        return obj\n\n    def decode(self, s, **kwargs):\n        decoded = super(MessageDecoder, self).decode(s, **kwargs)\n        return self.process_messages(decoded)\n\nclass CookieStorage(BaseStorage):\n    \"\"\"\n    Stores messages in a cookie.\n    \"\"\"\n    cookie_name = 'messages'\n    # uwsgi's default configuration enforces a maximum size of 4kb for all the\n    # HTTP headers. In order to leave some room for other cookies and headers,\n    # restrict the session cookie to 1/2 of 4kb. See #18781.\n    max_cookie_size = 2048\n    not_finished = '__messagesnotfinished__'\n\n    def _get(self, *args, **kwargs):\n        \"\"\"\n        Retrieves a list of messages from the messages cookie.  If the\n        not_finished sentinel value is found at the end of the message list,\n        remove it and return a result indicating that not all messages were\n        retrieved by this storage.\n        \"\"\"\n        data = self.request.COOKIES.get(self.cookie_name)\n        messages = self._decode(data)\n        all_retrieved = not (messages and messages[-1] == self.not_finished)\n        if messages and not all_retrieved:\n            # remove the sentinel value\n            messages.pop()\n        return messages, all_retrieved\n\n    def _update_cookie(self, encoded_data, response):\n        \"\"\"\n        Either sets the cookie with the encoded data if there is any data to\n        store, or deletes the cookie.\n        \"\"\"\n        if encoded_data:\n            response.set_cookie(self.cookie_name, encoded_data,\n                domain=settings.SESSION_COOKIE_DOMAIN)\n        else:\n            response.delete_cookie(self.cookie_name,\n                domain=settings.SESSION_COOKIE_DOMAIN)\n\n    def _store(self, messages, response, remove_oldest=True, *args, **kwargs):\n        \"\"\"\n        Stores the messages to a cookie, returning a list of any messages which\n        could not be stored.\n\n        If the encoded data is larger than ``max_cookie_size``, removes\n        messages until the data fits (these are the messages which are\n        returned), and add the not_finished sentinel value to indicate as much.\n        \"\"\"\n        unstored_messages = []\n        encoded_data = self._encode(messages)\n        if self.max_cookie_size:\n            # data is going to be stored eventually by SimpleCookie, which\n            # adds it's own overhead, which we must account for.\n            cookie = SimpleCookie() # create outside the loop\n            def stored_length(val):\n                return len(cookie.value_encode(val)[1])\n\n            while encoded_data and stored_length(encoded_data) > self.max_cookie_size:\n                if remove_oldest:\n                    unstored_messages.append(messages.pop(0))\n                else:\n                    unstored_messages.insert(0, messages.pop())\n                encoded_data = self._encode(messages + [self.not_finished],\n                                            encode_empty=unstored_messages)\n        self._update_cookie(encoded_data, response)\n        return unstored_messages\n\n    def _hash(self, value):\n        \"\"\"\n        Creates an HMAC/SHA1 hash based on the value and the project setting's\n        SECRET_KEY, modified to make it unique for the present purpose.\n        \"\"\"\n        key_salt = 'django.contrib.messages'\n        return salted_hmac(key_salt, value).hexdigest()\n\n    def _encode(self, messages, encode_empty=False):\n        \"\"\"\n        Returns an encoded version of the messages list which can be stored as\n        plain text.\n\n        Since the data will be retrieved from the client-side, the encoded data\n        also contains a hash to ensure that the data was not tampered with.\n        \"\"\"\n        if messages or encode_empty:\n            encoder = MessageEncoder(separators=(',', ':'))\n            value = encoder.encode(messages)\n            return '%s$%s' % (self._hash(value), value)\n\n    def _decode(self, data):\n        \"\"\"\n        Safely decodes a encoded text stream back into a list of messages.\n\n        If the encoded text stream contained an invalid hash or was in an\n        invalid format, ``None`` is returned.\n        \"\"\"\n        if not data:\n            return None\n        bits = data.split('$', 1)\n        if len(bits) == 2:\n            hash, value = bits\n            if constant_time_compare(hash, self._hash(value)):\n                try:\n                    # If we get here (and the JSON decode works), everything is\n                    # good. In any other case, drop back and return None.\n                    return json.loads(value, cls=MessageDecoder)\n                except ValueError:\n                    pass\n        # Mark the data as used (so it gets removed) since something was wrong\n        # with the data.\n        self.used = True\n        return None\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/storage/fallback.py",
    "content": "from django.contrib.messages.storage.base import BaseStorage\nfrom django.contrib.messages.storage.cookie import CookieStorage\nfrom django.contrib.messages.storage.session import SessionStorage\n\nclass FallbackStorage(BaseStorage):\n    \"\"\"\n    Tries to store all messages in the first backend, storing any unstored\n    messages in each subsequent backend backend.\n    \"\"\"\n    storage_classes = (CookieStorage, SessionStorage)\n\n    def __init__(self, *args, **kwargs):\n        super(FallbackStorage, self).__init__(*args, **kwargs)\n        self.storages = [storage_class(*args, **kwargs)\n                         for storage_class in self.storage_classes]\n        self._used_storages = set()\n\n    def _get(self, *args, **kwargs):\n        \"\"\"\n        Gets a single list of messages from all storage backends.\n        \"\"\"\n        all_messages = []\n        for storage in self.storages:\n            messages, all_retrieved = storage._get()\n            # If the backend hasn't been used, no more retrieval is necessary.\n            if messages is None:\n                break\n            if messages:\n                self._used_storages.add(storage)\n            all_messages.extend(messages)\n            # If this storage class contained all the messages, no further\n            # retrieval is necessary\n            if all_retrieved:\n                break\n        return all_messages, all_retrieved\n\n    def _store(self, messages, response, *args, **kwargs):\n        \"\"\"\n        Stores the messages, returning any unstored messages after trying all\n        backends.\n\n        For each storage backend, any messages not stored are passed on to the\n        next backend.\n        \"\"\"\n        for storage in self.storages:\n            if messages:\n                messages = storage._store(messages, response,\n                                          remove_oldest=False)\n            # Even if there are no more messages, continue iterating to ensure\n            # storages which contained messages are flushed.\n            elif storage in self._used_storages:\n                storage._store([], response)\n                self._used_storages.remove(storage)\n        return messages\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/storage/session.py",
    "content": "from django.contrib.messages.storage.base import BaseStorage\n\n\nclass SessionStorage(BaseStorage):\n    \"\"\"\n    Stores messages in the session (that is, django.contrib.sessions).\n    \"\"\"\n    session_key = '_messages'\n\n    def __init__(self, request, *args, **kwargs):\n        assert hasattr(request, 'session'), \"The session-based temporary \"\\\n            \"message storage requires session middleware to be installed, \"\\\n            \"and come before the message middleware in the \"\\\n            \"MIDDLEWARE_CLASSES list.\"\n        super(SessionStorage, self).__init__(request, *args, **kwargs)\n\n    def _get(self, *args, **kwargs):\n        \"\"\"\n        Retrieves a list of messages from the request's session.  This storage\n        always stores everything it is given, so return True for the\n        all_retrieved flag.\n        \"\"\"\n        return self.request.session.get(self.session_key), True\n\n    def _store(self, messages, response, *args, **kwargs):\n        \"\"\"\n        Stores a list of messages to the request's session.\n        \"\"\"\n        if messages:\n            self.request.session[self.session_key] = messages\n        else:\n            self.request.session.pop(self.session_key, None)\n        return []\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/tests/__init__.py",
    "content": "from django.contrib.messages.tests.cookie import CookieTest\nfrom django.contrib.messages.tests.fallback import FallbackTest\nfrom django.contrib.messages.tests.middleware import MiddlewareTest\nfrom django.contrib.messages.tests.session import SessionTest\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/tests/base.py",
    "content": "from django import http\nfrom django.conf import settings, global_settings\nfrom django.contrib.messages import constants, utils, get_level, set_level\nfrom django.contrib.messages.api import MessageFailure\nfrom django.contrib.messages.storage import default_storage, base\nfrom django.contrib.messages.storage.base import Message\nfrom django.core.urlresolvers import reverse\nfrom django.test import TestCase\nfrom django.test.utils import override_settings\nfrom django.utils.translation import ugettext_lazy\nfrom django.utils.unittest import skipIf\n\n\ndef skipUnlessAuthIsInstalled(func):\n    return skipIf(\n        'django.contrib.auth' not in settings.INSTALLED_APPS,\n        \"django.contrib.auth isn't installed\")(func)\n\n\ndef add_level_messages(storage):\n    \"\"\"\n    Adds 6 messages from different levels (including a custom one) to a storage\n    instance.\n    \"\"\"\n    storage.add(constants.INFO, 'A generic info message')\n    storage.add(29, 'Some custom level')\n    storage.add(constants.DEBUG, 'A debugging message', extra_tags='extra-tag')\n    storage.add(constants.WARNING, 'A warning')\n    storage.add(constants.ERROR, 'An error')\n    storage.add(constants.SUCCESS, 'This was a triumph.')\n\n\nclass override_settings_tags(override_settings):\n     def enable(self):\n        super(override_settings_tags, self).enable()\n        # LEVEL_TAGS is a constant defined in the\n        # django.contrib.messages.storage.base module, so after changing\n        # settings.MESSAGE_TAGS, we need to update that constant too.\n        self.old_level_tags = base.LEVEL_TAGS\n        base.LEVEL_TAGS = utils.get_level_tags()\n     def disable(self):\n        super(override_settings_tags, self).disable()\n        base.LEVEL_TAGS = self.old_level_tags\n\n\nclass BaseTest(TestCase):\n    storage_class = default_storage\n    urls = 'django.contrib.messages.tests.urls'\n    levels = {\n        'debug': constants.DEBUG,\n        'info': constants.INFO,\n        'success': constants.SUCCESS,\n        'warning': constants.WARNING,\n        'error': constants.ERROR,\n    }\n\n    def setUp(self):\n        self.settings_override = override_settings_tags(\n            TEMPLATE_DIRS   = (),\n            TEMPLATE_CONTEXT_PROCESSORS = global_settings.TEMPLATE_CONTEXT_PROCESSORS,\n            MESSAGE_TAGS    = '',\n            MESSAGE_STORAGE = '%s.%s' % (self.storage_class.__module__,\n                                         self.storage_class.__name__),\n        )\n        self.settings_override.enable()\n\n    def tearDown(self):\n        self.settings_override.disable()\n\n    def get_request(self):\n        return http.HttpRequest()\n\n    def get_response(self):\n        return http.HttpResponse()\n\n    def get_storage(self, data=None):\n        \"\"\"\n        Returns the storage backend, setting its loaded data to the ``data``\n        argument.\n\n        This method avoids the storage ``_get`` method from getting called so\n        that other parts of the storage backend can be tested independent of\n        the message retrieval logic.\n        \"\"\"\n        storage = self.storage_class(self.get_request())\n        storage._loaded_data = data or []\n        return storage\n\n    def test_add(self):\n        storage = self.get_storage()\n        self.assertFalse(storage.added_new)\n        storage.add(constants.INFO, 'Test message 1')\n        self.assertTrue(storage.added_new)\n        storage.add(constants.INFO, 'Test message 2', extra_tags='tag')\n        self.assertEqual(len(storage), 2)\n\n    def test_add_lazy_translation(self):\n        storage = self.get_storage()\n        response = self.get_response()\n\n        storage.add(constants.INFO, ugettext_lazy('lazy message'))\n        storage.update(response)\n\n        storing = self.stored_messages_count(storage, response)\n        self.assertEqual(storing, 1)\n\n    def test_no_update(self):\n        storage = self.get_storage()\n        response = self.get_response()\n        storage.update(response)\n        storing = self.stored_messages_count(storage, response)\n        self.assertEqual(storing, 0)\n\n    def test_add_update(self):\n        storage = self.get_storage()\n        response = self.get_response()\n\n        storage.add(constants.INFO, 'Test message 1')\n        storage.add(constants.INFO, 'Test message 1', extra_tags='tag')\n        storage.update(response)\n\n        storing = self.stored_messages_count(storage, response)\n        self.assertEqual(storing, 2)\n\n    def test_existing_add_read_update(self):\n        storage = self.get_existing_storage()\n        response = self.get_response()\n\n        storage.add(constants.INFO, 'Test message 3')\n        list(storage)   # Simulates a read\n        storage.update(response)\n\n        storing = self.stored_messages_count(storage, response)\n        self.assertEqual(storing, 0)\n\n    def test_existing_read_add_update(self):\n        storage = self.get_existing_storage()\n        response = self.get_response()\n\n        list(storage)   # Simulates a read\n        storage.add(constants.INFO, 'Test message 3')\n        storage.update(response)\n\n        storing = self.stored_messages_count(storage, response)\n        self.assertEqual(storing, 1)\n\n    @override_settings(MESSAGE_LEVEL=constants.DEBUG)\n    def test_full_request_response_cycle(self):\n        \"\"\"\n        With the message middleware enabled, tests that messages are properly\n        stored and then retrieved across the full request/redirect/response\n        cycle.\n        \"\"\"\n        data = {\n            'messages': ['Test message %d' % x for x in range(5)],\n        }\n        show_url = reverse('django.contrib.messages.tests.urls.show')\n        for level in ('debug', 'info', 'success', 'warning', 'error'):\n            add_url = reverse('django.contrib.messages.tests.urls.add',\n                              args=(level,))\n            response = self.client.post(add_url, data, follow=True)\n            self.assertRedirects(response, show_url)\n            self.assertTrue('messages' in response.context)\n            messages = [Message(self.levels[level], msg) for msg in\n                                                         data['messages']]\n            self.assertEqual(list(response.context['messages']), messages)\n            for msg in data['messages']:\n                self.assertContains(response, msg)\n\n    @override_settings(MESSAGE_LEVEL=constants.DEBUG)\n    def test_with_template_response(self):\n        data = {\n            'messages': ['Test message %d' % x for x in range(5)],\n        }\n        show_url = reverse('django.contrib.messages.tests.urls.show_template_response')\n        for level in self.levels.keys():\n            add_url = reverse('django.contrib.messages.tests.urls.add_template_response',\n                              args=(level,))\n            response = self.client.post(add_url, data, follow=True)\n            self.assertRedirects(response, show_url)\n            self.assertTrue('messages' in response.context)\n            for msg in data['messages']:\n                self.assertContains(response, msg)\n\n            # there shouldn't be any messages on second GET request\n            response = self.client.get(show_url)\n            for msg in data['messages']:\n                self.assertNotContains(response, msg)\n\n    @override_settings(MESSAGE_LEVEL=constants.DEBUG)\n    def test_multiple_posts(self):\n        \"\"\"\n        Tests that messages persist properly when multiple POSTs are made\n        before a GET.\n        \"\"\"\n        data = {\n            'messages': ['Test message %d' % x for x in range(5)],\n        }\n        show_url = reverse('django.contrib.messages.tests.urls.show')\n        messages = []\n        for level in ('debug', 'info', 'success', 'warning', 'error'):\n            messages.extend([Message(self.levels[level], msg) for msg in\n                                                             data['messages']])\n            add_url = reverse('django.contrib.messages.tests.urls.add',\n                              args=(level,))\n            self.client.post(add_url, data)\n        response = self.client.get(show_url)\n        self.assertTrue('messages' in response.context)\n        self.assertEqual(list(response.context['messages']), messages)\n        for msg in data['messages']:\n            self.assertContains(response, msg)\n\n    @override_settings(\n        INSTALLED_APPS=filter(\n            lambda app:app!='django.contrib.messages', settings.INSTALLED_APPS),\n        MIDDLEWARE_CLASSES=filter(\n            lambda m:'MessageMiddleware' not in m, settings.MIDDLEWARE_CLASSES),\n        TEMPLATE_CONTEXT_PROCESSORS=filter(\n            lambda p:'context_processors.messages' not in p,\n                 settings.TEMPLATE_CONTEXT_PROCESSORS),\n        MESSAGE_LEVEL=constants.DEBUG\n    )\n    def test_middleware_disabled(self):\n        \"\"\"\n        Tests that, when the middleware is disabled, an exception is raised\n        when one attempts to store a message.\n        \"\"\"\n        data = {\n            'messages': ['Test message %d' % x for x in range(5)],\n        }\n        show_url = reverse('django.contrib.messages.tests.urls.show')\n        for level in ('debug', 'info', 'success', 'warning', 'error'):\n            add_url = reverse('django.contrib.messages.tests.urls.add',\n                              args=(level,))\n            self.assertRaises(MessageFailure, self.client.post, add_url,\n                              data, follow=True)\n\n    @override_settings(\n        INSTALLED_APPS=filter(\n            lambda app:app!='django.contrib.messages', settings.INSTALLED_APPS),\n        MIDDLEWARE_CLASSES=filter(\n            lambda m:'MessageMiddleware' not in m, settings.MIDDLEWARE_CLASSES),\n        TEMPLATE_CONTEXT_PROCESSORS=filter(\n            lambda p:'context_processors.messages' not in p,\n                 settings.TEMPLATE_CONTEXT_PROCESSORS),\n        MESSAGE_LEVEL=constants.DEBUG\n    )\n    def test_middleware_disabled_fail_silently(self):\n        \"\"\"\n        Tests that, when the middleware is disabled, an exception is not\n        raised if 'fail_silently' = True\n        \"\"\"\n        data = {\n            'messages': ['Test message %d' % x for x in range(5)],\n            'fail_silently': True,\n        }\n        show_url = reverse('django.contrib.messages.tests.urls.show')\n        for level in ('debug', 'info', 'success', 'warning', 'error'):\n            add_url = reverse('django.contrib.messages.tests.urls.add',\n                              args=(level,))\n            response = self.client.post(add_url, data, follow=True)\n            self.assertRedirects(response, show_url)\n            self.assertFalse('messages' in response.context)\n\n    def stored_messages_count(self, storage, response):\n        \"\"\"\n        Returns the number of messages being stored after a\n        ``storage.update()`` call.\n        \"\"\"\n        raise NotImplementedError('This method must be set by a subclass.')\n\n    def test_get(self):\n        raise NotImplementedError('This method must be set by a subclass.')\n\n    def get_existing_storage(self):\n        return self.get_storage([Message(constants.INFO, 'Test message 1'),\n                                 Message(constants.INFO, 'Test message 2',\n                                              extra_tags='tag')])\n\n    def test_existing_read(self):\n        \"\"\"\n        Tests that reading the existing storage doesn't cause the data to be\n        lost.\n        \"\"\"\n        storage = self.get_existing_storage()\n        self.assertFalse(storage.used)\n        # After iterating the storage engine directly, the used flag is set.\n        data = list(storage)\n        self.assertTrue(storage.used)\n        # The data does not disappear because it has been iterated.\n        self.assertEqual(data, list(storage))\n\n    def test_existing_add(self):\n        storage = self.get_existing_storage()\n        self.assertFalse(storage.added_new)\n        storage.add(constants.INFO, 'Test message 3')\n        self.assertTrue(storage.added_new)\n\n    def test_default_level(self):\n        # get_level works even with no storage on the request.\n        request = self.get_request()\n        self.assertEqual(get_level(request), constants.INFO)\n\n        # get_level returns the default level if it hasn't been set.\n        storage = self.get_storage()\n        request._messages = storage\n        self.assertEqual(get_level(request), constants.INFO)\n\n        # Only messages of sufficient level get recorded.\n        add_level_messages(storage)\n        self.assertEqual(len(storage), 5)\n\n    def test_low_level(self):\n        request = self.get_request()\n        storage = self.storage_class(request)\n        request._messages = storage\n\n        self.assertTrue(set_level(request, 5))\n        self.assertEqual(get_level(request), 5)\n\n        add_level_messages(storage)\n        self.assertEqual(len(storage), 6)\n\n    def test_high_level(self):\n        request = self.get_request()\n        storage = self.storage_class(request)\n        request._messages = storage\n\n        self.assertTrue(set_level(request, 30))\n        self.assertEqual(get_level(request), 30)\n\n        add_level_messages(storage)\n        self.assertEqual(len(storage), 2)\n\n    @override_settings(MESSAGE_LEVEL=29)\n    def test_settings_level(self):\n        request = self.get_request()\n        storage = self.storage_class(request)\n\n        self.assertEqual(get_level(request), 29)\n\n        add_level_messages(storage)\n        self.assertEqual(len(storage), 3)\n\n    def test_tags(self):\n        storage = self.get_storage()\n        storage.level = 0\n        add_level_messages(storage)\n        tags = [msg.tags for msg in storage]\n        self.assertEqual(tags,\n                         ['info', '', 'extra-tag debug', 'warning', 'error',\n                          'success'])\n\n    @override_settings_tags(MESSAGE_TAGS={\n            constants.INFO: 'info',\n            constants.DEBUG: '',\n            constants.WARNING: '',\n            constants.ERROR: 'bad',\n            29: 'custom',\n        }\n    )\n    def test_custom_tags(self):\n        storage = self.get_storage()\n        storage.level = 0\n        add_level_messages(storage)\n        tags = [msg.tags for msg in storage]\n        self.assertEqual(tags,\n                     ['info', 'custom', 'extra-tag', '', 'bad', 'success'])\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/tests/cookie.py",
    "content": "import json\n\nfrom django.contrib.messages import constants\nfrom django.contrib.messages.tests.base import BaseTest\nfrom django.contrib.messages.storage.cookie import (CookieStorage,\n    MessageEncoder, MessageDecoder)\nfrom django.contrib.messages.storage.base import Message\nfrom django.test.utils import override_settings\nfrom django.utils.safestring import SafeData, mark_safe\n\n\ndef set_cookie_data(storage, messages, invalid=False, encode_empty=False):\n    \"\"\"\n    Sets ``request.COOKIES`` with the encoded data and removes the storage\n    backend's loaded data cache.\n    \"\"\"\n    encoded_data = storage._encode(messages, encode_empty=encode_empty)\n    if invalid:\n        # Truncate the first character so that the hash is invalid.\n        encoded_data = encoded_data[1:]\n    storage.request.COOKIES = {CookieStorage.cookie_name: encoded_data}\n    if hasattr(storage, '_loaded_data'):\n        del storage._loaded_data\n\n\ndef stored_cookie_messages_count(storage, response):\n    \"\"\"\n    Returns an integer containing the number of messages stored.\n    \"\"\"\n    # Get a list of cookies, excluding ones with a max-age of 0 (because\n    # they have been marked for deletion).\n    cookie = response.cookies.get(storage.cookie_name)\n    if not cookie or cookie['max-age'] == 0:\n        return 0\n    data = storage._decode(cookie.value)\n    if not data:\n        return 0\n    if data[-1] == CookieStorage.not_finished:\n        data.pop()\n    return len(data)\n\n\n@override_settings(SESSION_COOKIE_DOMAIN='.example.com')\nclass CookieTest(BaseTest):\n    storage_class = CookieStorage\n\n    def stored_messages_count(self, storage, response):\n        return stored_cookie_messages_count(storage, response)\n\n    def test_get(self):\n        storage = self.storage_class(self.get_request())\n        # Set initial data.\n        example_messages = ['test', 'me']\n        set_cookie_data(storage, example_messages)\n        # Test that the message actually contains what we expect.\n        self.assertEqual(list(storage), example_messages)\n\n    def test_domain(self):\n        \"\"\"\n        Ensure that CookieStorage honors SESSION_COOKIE_DOMAIN.\n        Refs #15618.\n        \"\"\"\n        # Test before the messages have been consumed\n        storage = self.get_storage()\n        response = self.get_response()\n        storage.add(constants.INFO, 'test')\n        storage.update(response)\n        self.assertTrue('test' in response.cookies['messages'].value)\n        self.assertEqual(response.cookies['messages']['domain'], '.example.com')\n        self.assertEqual(response.cookies['messages']['expires'], '')\n\n        # Test after the messages have been consumed\n        storage = self.get_storage()\n        response = self.get_response()\n        storage.add(constants.INFO, 'test')\n        for m in storage:\n            pass # Iterate through the storage to simulate consumption of messages.\n        storage.update(response)\n        self.assertEqual(response.cookies['messages'].value, '')\n        self.assertEqual(response.cookies['messages']['domain'], '.example.com')\n        self.assertEqual(response.cookies['messages']['expires'], 'Thu, 01-Jan-1970 00:00:00 GMT')\n\n    def test_get_bad_cookie(self):\n        request = self.get_request()\n        storage = self.storage_class(request)\n        # Set initial (invalid) data.\n        example_messages = ['test', 'me']\n        set_cookie_data(storage, example_messages, invalid=True)\n        # Test that the message actually contains what we expect.\n        self.assertEqual(list(storage), [])\n\n    def test_max_cookie_length(self):\n        \"\"\"\n        Tests that, if the data exceeds what is allowed in a cookie, older\n        messages are removed before saving (and returned by the ``update``\n        method).\n        \"\"\"\n        storage = self.get_storage()\n        response = self.get_response()\n\n        # When storing as a cookie, the cookie has constant overhead of approx\n        # 54 chars, and each message has a constant overhead of about 37 chars\n        # and a variable overhead of zero in the best case. We aim for a message\n        # size which will fit 4 messages into the cookie, but not 5.\n        # See also FallbackTest.test_session_fallback\n        msg_size = int((CookieStorage.max_cookie_size - 54) / 4.5 - 37)\n        for i in range(5):\n            storage.add(constants.INFO, str(i) * msg_size)\n        unstored_messages = storage.update(response)\n\n        cookie_storing = self.stored_messages_count(storage, response)\n        self.assertEqual(cookie_storing, 4)\n\n        self.assertEqual(len(unstored_messages), 1)\n        self.assertTrue(unstored_messages[0].message == '0' * msg_size)\n\n    def test_json_encoder_decoder(self):\n        \"\"\"\n        Tests that a complex nested data structure containing Message\n        instances is properly encoded/decoded by the custom JSON\n        encoder/decoder classes.\n        \"\"\"\n        messages = [\n            {\n                'message': Message(constants.INFO, 'Test message'),\n                'message_list': [Message(constants.INFO, 'message %s') \\\n                                 for x in range(5)] + [{'another-message': \\\n                                 Message(constants.ERROR, 'error')}],\n            },\n            Message(constants.INFO, 'message %s'),\n        ]\n        encoder = MessageEncoder(separators=(',', ':'))\n        value = encoder.encode(messages)\n        decoded_messages = json.loads(value, cls=MessageDecoder)\n        self.assertEqual(messages, decoded_messages)\n\n    def test_safedata(self):\n        \"\"\"\n        Tests that a message containing SafeData is keeping its safe status when\n        retrieved from the message storage.\n        \"\"\"\n        def encode_decode(data):\n            message = Message(constants.DEBUG, data)\n            encoded = storage._encode(message)\n            decoded = storage._decode(encoded)\n            return decoded.message\n\n        storage = self.get_storage()\n\n        self.assertIsInstance(\n            encode_decode(mark_safe(\"<b>Hello Django!</b>\")), SafeData)\n        self.assertNotIsInstance(\n            encode_decode(\"<b>Hello Django!</b>\"), SafeData)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/tests/fallback.py",
    "content": "from django.contrib.messages import constants\nfrom django.contrib.messages.storage.fallback import (FallbackStorage,\n    CookieStorage)\nfrom django.contrib.messages.tests.base import BaseTest\nfrom django.contrib.messages.tests.cookie import (set_cookie_data,\n    stored_cookie_messages_count)\nfrom django.contrib.messages.tests.session import (set_session_data,\n    stored_session_messages_count)\n\n\nclass FallbackTest(BaseTest):\n    storage_class = FallbackStorage\n\n    def get_request(self):\n        self.session = {}\n        request = super(FallbackTest, self).get_request()\n        request.session = self.session\n        return request\n\n    def get_cookie_storage(self, storage):\n        return storage.storages[-2]\n\n    def get_session_storage(self, storage):\n        return storage.storages[-1]\n\n    def stored_cookie_messages_count(self, storage, response):\n        return stored_cookie_messages_count(self.get_cookie_storage(storage),\n                                            response)\n\n    def stored_session_messages_count(self, storage, response):\n        return stored_session_messages_count(self.get_session_storage(storage))\n\n    def stored_messages_count(self, storage, response):\n        \"\"\"\n        Return the storage totals from both cookie and session backends.\n        \"\"\"\n        total = (self.stored_cookie_messages_count(storage, response) +\n                 self.stored_session_messages_count(storage, response))\n        return total\n\n    def test_get(self):\n        request = self.get_request()\n        storage = self.storage_class(request)\n        cookie_storage = self.get_cookie_storage(storage)\n\n        # Set initial cookie data.\n        example_messages = [str(i) for i in range(5)]\n        set_cookie_data(cookie_storage, example_messages)\n\n        # Overwrite the _get method of the fallback storage to prove it is not\n        # used (it would cause a TypeError: 'NoneType' object is not callable).\n        self.get_session_storage(storage)._get = None\n\n        # Test that the message actually contains what we expect.\n        self.assertEqual(list(storage), example_messages)\n\n    def test_get_empty(self):\n        request = self.get_request()\n        storage = self.storage_class(request)\n\n        # Overwrite the _get method of the fallback storage to prove it is not\n        # used (it would cause a TypeError: 'NoneType' object is not callable).\n        self.get_session_storage(storage)._get = None\n\n        # Test that the message actually contains what we expect.\n        self.assertEqual(list(storage), [])\n\n    def test_get_fallback(self):\n        request = self.get_request()\n        storage = self.storage_class(request)\n        cookie_storage = self.get_cookie_storage(storage)\n        session_storage = self.get_session_storage(storage)\n\n        # Set initial cookie and session data.\n        example_messages = [str(i) for i in range(5)]\n        set_cookie_data(cookie_storage, example_messages[:4] +\n                        [CookieStorage.not_finished])\n        set_session_data(session_storage, example_messages[4:])\n\n        # Test that the message actually contains what we expect.\n        self.assertEqual(list(storage), example_messages)\n\n    def test_get_fallback_only(self):\n        request = self.get_request()\n        storage = self.storage_class(request)\n        cookie_storage = self.get_cookie_storage(storage)\n        session_storage = self.get_session_storage(storage)\n\n        # Set initial cookie and session data.\n        example_messages = [str(i) for i in range(5)]\n        set_cookie_data(cookie_storage, [CookieStorage.not_finished],\n                        encode_empty=True)\n        set_session_data(session_storage, example_messages)\n\n        # Test that the message actually contains what we expect.\n        self.assertEqual(list(storage), example_messages)\n\n    def test_flush_used_backends(self):\n        request = self.get_request()\n        storage = self.storage_class(request)\n        cookie_storage = self.get_cookie_storage(storage)\n        session_storage = self.get_session_storage(storage)\n\n        # Set initial cookie and session data.\n        set_cookie_data(cookie_storage, ['cookie', CookieStorage.not_finished])\n        set_session_data(session_storage, ['session'])\n\n        # When updating, previously used but no longer needed backends are\n        # flushed.\n        response = self.get_response()\n        list(storage)\n        storage.update(response)\n        session_storing = self.stored_session_messages_count(storage, response)\n        self.assertEqual(session_storing, 0)\n\n    def test_no_fallback(self):\n        \"\"\"\n        Confirms that:\n\n        (1) A short number of messages whose data size doesn't exceed what is\n        allowed in a cookie will all be stored in the CookieBackend.\n\n        (2) If the CookieBackend can store all messages, the SessionBackend\n        won't be written to at all.\n        \"\"\"\n        storage = self.get_storage()\n        response = self.get_response()\n\n        # Overwrite the _store method of the fallback storage to prove it isn't\n        # used (it would cause a TypeError: 'NoneType' object is not callable).\n        self.get_session_storage(storage)._store = None\n\n        for i in range(5):\n            storage.add(constants.INFO, str(i) * 100)\n        storage.update(response)\n\n        cookie_storing = self.stored_cookie_messages_count(storage, response)\n        self.assertEqual(cookie_storing, 5)\n        session_storing = self.stored_session_messages_count(storage, response)\n        self.assertEqual(session_storing, 0)\n\n    def test_session_fallback(self):\n        \"\"\"\n        Confirms that, if the data exceeds what is allowed in a cookie,\n        messages which did not fit are stored in the SessionBackend.\n        \"\"\"\n        storage = self.get_storage()\n        response = self.get_response()\n\n        # see comment in CookieText.test_cookie_max_length\n        msg_size = int((CookieStorage.max_cookie_size - 54) / 4.5 - 37)\n        for i in range(5):\n            storage.add(constants.INFO, str(i) * msg_size)\n        storage.update(response)\n\n        cookie_storing = self.stored_cookie_messages_count(storage, response)\n        self.assertEqual(cookie_storing, 4)\n        session_storing = self.stored_session_messages_count(storage, response)\n        self.assertEqual(session_storing, 1)\n\n    def test_session_fallback_only(self):\n        \"\"\"\n        Confirms that large messages, none of which fit in a cookie, are stored\n        in the SessionBackend (and nothing is stored in the CookieBackend).\n        \"\"\"\n        storage = self.get_storage()\n        response = self.get_response()\n\n        storage.add(constants.INFO, 'x' * 5000)\n        storage.update(response)\n\n        cookie_storing = self.stored_cookie_messages_count(storage, response)\n        self.assertEqual(cookie_storing, 0)\n        session_storing = self.stored_session_messages_count(storage, response)\n        self.assertEqual(session_storing, 1)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/tests/middleware.py",
    "content": "from django import http\nfrom django.contrib.messages.middleware import MessageMiddleware\nfrom django.utils import unittest\n\n\nclass MiddlewareTest(unittest.TestCase):\n\n    def setUp(self):\n        self.middleware = MessageMiddleware()\n\n    def test_response_without_messages(self):\n        \"\"\"\n        Makes sure that the response middleware is tolerant of messages not\n        existing on request.\n        \"\"\"\n        request = http.HttpRequest()\n        response = http.HttpResponse()\n        self.middleware.process_response(request, response)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/tests/session.py",
    "content": "from django.contrib.messages import constants\nfrom django.contrib.messages.tests.base import BaseTest\nfrom django.contrib.messages.storage.base import Message\nfrom django.contrib.messages.storage.session import SessionStorage\nfrom django.utils.safestring import SafeData, mark_safe\n\n\ndef set_session_data(storage, messages):\n    \"\"\"\n    Sets the messages into the backend request's session and remove the\n    backend's loaded data cache.\n    \"\"\"\n    storage.request.session[storage.session_key] = messages\n    if hasattr(storage, '_loaded_data'):\n        del storage._loaded_data\n\n\ndef stored_session_messages_count(storage):\n    data = storage.request.session.get(storage.session_key, [])\n    return len(data)\n\n\nclass SessionTest(BaseTest):\n    storage_class = SessionStorage\n\n    def get_request(self):\n        self.session = {}\n        request = super(SessionTest, self).get_request()\n        request.session = self.session\n        return request\n\n    def stored_messages_count(self, storage, response):\n        return stored_session_messages_count(storage)\n\n    def test_get(self):\n        storage = self.storage_class(self.get_request())\n        # Set initial data.\n        example_messages = ['test', 'me']\n        set_session_data(storage, example_messages)\n        # Test that the message actually contains what we expect.\n        self.assertEqual(list(storage), example_messages)\n\n    def test_safedata(self):\n        \"\"\"\n        Tests that a message containing SafeData is keeping its safe status when\n        retrieved from the message storage.\n        \"\"\"\n        storage = self.get_storage()\n\n        message = Message(constants.DEBUG, mark_safe(\"<b>Hello Django!</b>\"))\n        set_session_data(storage, [message])\n        self.assertIsInstance(list(storage)[0].message, SafeData)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/tests/urls.py",
    "content": "from django.conf.urls import patterns\nfrom django.contrib import messages\nfrom django.core.urlresolvers import reverse\nfrom django.http import HttpResponseRedirect, HttpResponse\nfrom django.template import RequestContext, Template\nfrom django.template.response import TemplateResponse\nfrom django.views.decorators.cache import never_cache\n\nTEMPLATE = \"\"\"{% if messages %}\n<ul class=\"messages\">\n    {% for message in messages %}\n    <li{% if message.tags %} class=\"{{ message.tags }}\"{% endif %}>\n        {{ message }}\n    </li>\n    {% endfor %}\n</ul>\n{% endif %}\n\"\"\"\n\n@never_cache\ndef add(request, message_type):\n    # don't default to False here, because we want to test that it defaults\n    # to False if unspecified\n    fail_silently = request.POST.get('fail_silently', None)\n    for msg in request.POST.getlist('messages'):\n        if fail_silently is not None:\n            getattr(messages, message_type)(request, msg,\n                                            fail_silently=fail_silently)\n        else:\n            getattr(messages, message_type)(request, msg)\n\n    show_url = reverse('django.contrib.messages.tests.urls.show')\n    return HttpResponseRedirect(show_url)\n\n@never_cache\ndef add_template_response(request, message_type):\n    for msg in request.POST.getlist('messages'):\n        getattr(messages, message_type)(request, msg)\n\n    show_url = reverse('django.contrib.messages.tests.urls.show_template_response')\n    return HttpResponseRedirect(show_url)\n\n@never_cache\ndef show(request):\n    t = Template(TEMPLATE)\n    return HttpResponse(t.render(RequestContext(request)))\n\n@never_cache\ndef show_template_response(request):\n    return TemplateResponse(request, Template(TEMPLATE))\n\nurlpatterns = patterns('',\n    ('^add/(debug|info|success|warning|error)/$', add),\n    ('^show/$', show),\n    ('^template_response/add/(debug|info|success|warning|error)/$', add_template_response),\n    ('^template_response/show/$', show_template_response),\n)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/messages/utils.py",
    "content": "from django.conf import settings\nfrom django.contrib.messages import constants\n\n\ndef get_level_tags():\n    \"\"\"\n    Returns the message level tags.\n    \"\"\"\n    level_tags = constants.DEFAULT_TAGS.copy()\n    level_tags.update(getattr(settings, 'MESSAGE_TAGS', {}))\n    return level_tags\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/admin.py",
    "content": "\nfrom django.contrib import admin\nfrom django.contrib.redirects.models import Redirect\n\nclass RedirectAdmin(admin.ModelAdmin):\n    list_display = ('old_path', 'new_path')\n    list_filter = ('site',)\n    search_fields = ('old_path', 'new_path')\n    radio_fields = {'site': admin.VERTICAL}\n\nadmin.site.register(Redirect, RedirectAdmin)"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/ar/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:39+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Arabic (http://www.transifex.com/projects/p/django/language/\"\n\"ar/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ar\\n\"\n\"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 \"\n\"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"إعادة التوجيه من\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"يجب أن يكون هذا مساراً مطلقاً وبدون اسم النطاق. مثال: '/events/search/'.\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"إعادة التوجيه إلى\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"\"\n\"يجب أن يكون هذا مسارا مطلقا (كما هو أعلاه) أو عنوانا كاملا يبدأ بالمقطع \"\n\"'http://'.\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"إعادة التوجيه\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"إعادات التوجيه\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/az/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Ali Ismayilov <ali@ismailov.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Ali Ismayilov <ali@ismailov.info>\\n\"\n\"Language-Team: Azerbaijani (http://www.transifex.com/projects/p/django/\"\n\"language/az/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: az\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"buradan yönəlt\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"\"\n\"Domen ünvanını çıxmaqla bu, mütləq ünvan kimi göstərilməlidir. Məsələn, \\\"/\"\n\"events/search/\\\".\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"bura yönəlt\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"\"\n\"Bu həm mütləq ünvan (yuxarıdakı kimi) ola bilər, həm də \\\"http://\\\" ilə \"\n\"başlayan tam URL ola bilər.\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"yönəlt\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"yönəldir\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/be/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-08-11 11:08+0000\\n\"\n\"Last-Translator: Павал Клёк <yehekim@gmail.com>\\n\"\n\"Language-Team: Belarusian (http://www.transifex.com/projects/p/django/\"\n\"language/be/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: be\\n\"\n\"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"накіраваць з\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"\"\n\"Тут мусіць быць поўны шлях бяз назвы дамэна. Прыклад: «/events/search/».\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"накіраваць да\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"\"\n\"Тут, як і ўверсе, мусіць быць поўны шлях, або поўная сеціўная спасылка, якая \"\n\"пачынаецца з «http://».\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"накіраваньне\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"накіраваньні\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/bg/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:39+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Bulgarian (http://www.transifex.com/projects/p/django/\"\n\"language/bg/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: bg\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"препратка от\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"\"\n\"Това трябва да бъде абсолютен път, без името на домейна.  Пример: '/events/\"\n\"search/'.\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"препратка към\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"\"\n\"Това може да бъде или абсолютен път (като горното) или пълен URL, започващ с \"\n\"'http://'.\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"препратка\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"препратки\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/bn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:39+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Bengali (http://www.transifex.com/projects/p/django/language/\"\n\"bn/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: bn\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"রিডাইরেক্ট করা হবে\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"\"\n\"এর মান অবশ্যই এবসল্যুট পথ, ডোমেইন নাম বাদ দিয়ে, হতে হবে, উদাহরণঃ '/events/\"\n\"search/'।\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"রিডাইরেক্ট করুন\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"এর মান এবসল্যুট পথ (উপরের মত) অথবা পুরো URL পাথ ('http://' সহ) হতে পারে।\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"রিডাইরেক্ট\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"রিডাইরেক্ট\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/br/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Fulup  <fulup.jakez@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-06-29 10:56+0000\\n\"\n\"Last-Translator: Fulup <fulup.jakez@gmail.com>\\n\"\n\"Language-Team: Breton (http://www.transifex.com/projects/p/django/language/\"\n\"br/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: br\\n\"\n\"Plural-Forms: nplurals=2; plural=(n > 1);\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"adkaset eus\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"adkas da\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"adkas\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"adkasoù\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/bs/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:39+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Bosnian (http://www.transifex.com/projects/p/django/language/\"\n\"bs/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: bs\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"preusmjeren sa\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"\"\n\"Ovo mora biti apsolutna putanja bez imena domena. Na primjer: '/events/\"\n\"search/'.\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"preusmjeri ka\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"\"\n\"Ovo može biti ili apsolutna putanja (kao gore) ili pun URL koji počinje sa \"\n\"'http://'.\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"preusmjeravanje\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"preusmjeravanja\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/ca/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:39+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Catalan (http://www.transifex.com/projects/p/django/language/\"\n\"ca/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ca\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"redirecció des de\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"\"\n\"Aquesta ruta hauria de ser un camí absolut, excloent-ne el nom del domini. \"\n\"Exemple '/events/search/'.\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"redirigir a\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"\"\n\"Això pot ser bé una ruta absoluta (com a sobre) o una URL completa que \"\n\"comenci per 'http://'.\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"redirecció\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"redireccions\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/cs/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:39+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Czech (http://www.transifex.com/projects/p/django/language/\"\n\"cs/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: cs\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"přesměrovat z\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"\"\n\"Toto by měla být absolutní cesta bez domény. Příklad: \\\"/udalosti/hledat/\\\".\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"přesměrovat na\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"\"\n\"Toto může být buď absolutní cesta (jako nahoře) nebo plné URL začínající na \"\n\"\\\"http://\\\".\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"přesměrování\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"přesměrování\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/cy/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Maredudd ap Gwyndaf <maredudd@maredudd.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-08-03 14:11+0000\\n\"\n\"Last-Translator: Maredudd ap Gwyndaf <maredudd@maredudd.com>\\n\"\n\"Language-Team: Welsh (http://www.transifex.com/projects/p/django/language/\"\n\"cy/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: cy\\n\"\n\"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != \"\n\"11) ? 2 : 3;\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"ailgyfeirio o\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"\"\n\"Dylai hon fod yn lwybr absoliwt, heb yr enw parth. Er enghraifft: '/\"\n\"digwyddiadau/chwilio/'.\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"ailgyfeirio i\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"\"\n\"Gellir fod naill ai yn lwybr absoliwt (fel uchod) neu URL llawn yn dechrau â \"\n\"'http://'.\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"ailgyfeiriad\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"ailgyfeiriadau\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/da/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:39+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Danish (http://www.transifex.com/projects/p/django/language/\"\n\"da/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: da\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"rediriger fra\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"\"\n\"Dette skal være en absolut sti uden domænenavnet. For eksempel: '/nyheder/\"\n\"soeg/'\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"rediriger til\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"\"\n\"Dette kan enten være en absolut sti (som ovenfor), eller en komplet URL \"\n\"startende med 'http://'\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"rediriger\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"redirigeringer\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/de/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:39+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: German (http://www.transifex.com/projects/p/django/language/\"\n\"de/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: de\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"Umleitung von\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"\"\n\"Hier sollte ein absoluter Pfad stehen, ohne den Domainnamen. Beispiel: '/\"\n\"events/search/'.\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"Umleitung nach\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"\"\n\"Hier muss entweder ein absoluter Pfad oder eine komplette URL mit http:// am \"\n\"Anfang stehen.\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"Umleitung\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"Umleitungen\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/el/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:39+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Greek (http://www.transifex.com/projects/p/django/language/\"\n\"el/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: el\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"ανακατεύθυνση από\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"\"\n\"Αυτό πρέπει να είναι ένα απόλυτο μονοπάτι, με εξαίρεση το όνομα χώρου. \"\n\"Παράδειγμα: '/events/search/'.\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"ανακατεύθυνση προς\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"\"\n\"Αυτό πρέπει να είναι ένα απόλυτο μονοπάτι (όπως παραπάνω), ή ένα πλήρες URL \"\n\"που αρχίζει με 'http://'.\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"ανακατεύθυνση\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"ανακατευθύνσεις\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/en/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:39+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: English <en@li.org>\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: en\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"redirect from\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"redirect to\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"redirect\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"redirects\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/en_GB/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Ross Poulton <ross@rossp.org>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Ross Poulton <ross@rossp.org>\\n\"\n\"Language-Team: English (United Kingdom) (http://www.transifex.com/projects/p/\"\n\"django/language/en_GB/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: en_GB\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"redirect from\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"redirect to\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"redirect\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"redirects\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/eo/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Baptiste  <bapdarth@yahoo.fr>, 2011.\n#   <kristjan.schmidt@googlemail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Baptiste <baptiste+transifex@darthenay.fr>\\n\"\n\"Language-Team: Esperanto (http://www.transifex.com/projects/p/django/\"\n\"language/eo/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: eo\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"alidirekto de\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"\"\n\"Tio ĉi devus esti absoluta vojo, escepte de la retregionan nomon. Ekzemplo: \"\n\"'/eventoj/serĉo/'.\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"alidirekto al\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"\"\n\"Tio ĉi povas esti aŭ absoluta vojo (kiel supre), aŭ URL komencante kun \"\n\"'http://'.\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"alidirekto\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"alidirektoj\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/es/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Spanish (http://www.transifex.com/projects/p/django/language/\"\n\"es/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: es\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"redirigir desde\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"\"\n\"Esta ruta debería ser absoluta, excluyendo el nombre de dominio. Ejemplo: '/\"\n\"events/search/'.\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"redirigir a\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"\"\n\"Esto puede ser bien una ruta absoluta (como antes) o una URL completa que \"\n\"empiece con 'http://'.\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"redirección\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"redirecciones\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/es_AR/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/\"\n\"django/language/es_AR/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: es_AR\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"redirigir desde\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"\"\n\"Esta ruta debe ser absoluta, excluyendo el nombre de dominio. Ejemplo: '/\"\n\"events/search/'.\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"redirigir a\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"\"\n\"Esto puede ser bien una ruta absoluta (como arriba) o una URL completa que \"\n\"empiece con 'http://'.\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"redirección\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"redirecciones\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/es_MX/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Abraham Estrada <abraham.estrada@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Spanish (Mexico) (http://www.transifex.com/projects/p/django/\"\n\"language/es_MX/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: es_MX\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"redirigir desde\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"\"\n\"Esta ruta debe ser absoluta, excluyendo el nombre del dominio. Ejemplo: '/\"\n\"events/search/'.\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"redirigir a\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"\"\n\"Esto puede ser bien una ruta absoluta (como arriba) o una URL completa que \"\n\"empiece con 'http://'.\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"redirigir\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"redirecciona\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/et/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:39+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Estonian (http://www.transifex.com/projects/p/django/language/\"\n\"et/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: et\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"ümbersuunatav asukoht\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"\"\n\"See peaks olema absoluutne asukoht, v.a. domeeninimi. Näide: '/events/\"\n\"search/'.\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"suuna aadressile\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"\"\n\"See võib olla kas absoluutne asukoht (nagu ülemine) või täielik URL algusega \"\n\"'http://'.\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"suunamine\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"suunamised\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/eu/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:39+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Basque (http://www.transifex.com/projects/p/django/language/\"\n\"eu/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: eu\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"nondik berbidalia\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"\"\n\"Honek 'bide' absolutua izan beharko luke, dominio izena kenduta. 'Adibidez: \"\n\"events/search/'.\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"Nora berbidali\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"\"\n\"Hau 'bide' absolutua (goian bezala) edo URL osoa , 'http://'-rekin hasiz, \"\n\"izan daiteke.\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"berbidali\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"berbidali\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/fa/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Persian (http://www.transifex.com/projects/p/django/language/\"\n\"fa/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: fa\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"فرم ارسال به نشانی جدید\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"می‌بایست یک مسیر مطلق و بدون نام دامنه باشد. مانند: '/events/search/'.\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"ارسال به نشانی\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"\"\n\"می‌تواند یک مسیر مطلق (همانند بالا) و یا یک آدرس کامل با 'http://‎' باشد.\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"باز-ارسال\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"باز-ارسال‌ها\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/fi/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:39+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Finnish (http://www.transifex.com/projects/p/django/language/\"\n\"fi/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: fi\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"ohjaa osoitteesta\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"\"\n\"Tässä on käytettävä absoluuttista polkua ilman verkkotunnusta. Esimerkki: '/\"\n\"tapahtumat/haku/'.\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"ohjaa osoitteeseen\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"\"\n\"Tässä on käytettävä joko absoluuttista polkua (kuten yllä) tai täydellistä \"\n\"'http://'-alkuista URL-osoitetta.\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"edelleenohjaus\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"edelleenohjaukset\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/fr/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:39+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: French (http://www.transifex.com/projects/p/django/language/\"\n\"fr/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: fr\\n\"\n\"Plural-Forms: nplurals=2; plural=(n > 1);\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"redirigé depuis\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"\"\n\"Ceci doit être un chemin absolu, sans nom de domaine. Par exemple, « /\"\n\"evenements/rechercher/ ».\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"redirigé vers\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"\"\n\"Ceci peut être soit un chemin absolu (voir ci-dessus) soit une URL complète \"\n\"débutant par « http:// ».\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"redirige\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"redirige\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/fy_NL/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:43+0100\\n\"\n\"PO-Revision-Date: 2011-03-15 15:46+0000\\n\"\n\"Last-Translator: Django team\\n\"\n\"Language-Team: English <en@li.org>\\n\"\n\"Language: fy_NL\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1)\\n\"\n\n#: models.py:7\nmsgid \"redirect from\"\nmsgstr \"\"\n\n#: models.py:8\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"\"\n\n#: models.py:9\nmsgid \"redirect to\"\nmsgstr \"\"\n\n#: models.py:10\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"\"\n\n#: models.py:13\nmsgid \"redirect\"\nmsgstr \"\"\n\n#: models.py:14\nmsgid \"redirects\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/ga/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Irish (http://www.transifex.com/projects/p/django/language/\"\n\"ga/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ga\\n\"\n\"Plural-Forms: nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : \"\n\"4);\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"atreoraigh ó\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"Teastaíonn dearbhchosán gan ainm fearainn. Sampla '/events/search/'.\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"atreoraigh go dtí\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"Is féidir dearbhchosán nó URL lán ag tosnú le 'http://'.\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"athsheol\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"atreoraithe\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/gl/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:39+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Galician (http://www.transifex.com/projects/p/django/language/\"\n\"gl/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: gl\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"orixe da redirección\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"\"\n\"Debe ser unha ruta absoluta, sen o nome de dominio. Exemplo: '/events/\"\n\"search/'\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"destino da redirección\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"\"\n\"Pode ser unha ruta absoluta (coma a de enriba) ou un URL completo que empece \"\n\"por 'http://'\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"redirección\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"redireccións\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/he/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:39+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Hebrew (http://www.transifex.com/projects/p/django/language/\"\n\"he/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: he\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"הפניה מ\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"זה אמור להיות נתיב מלא, ללא שם המתחם. לדוגמא: '/‎/events/search'.\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"הפניה אל\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"יכול להיות נתיב מלא (כנ\\\"ל) או URL מלא המתחיל ב'http://'.\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"הפניה\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"הפניות\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/hi/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Sandeep Satavlekar <sandysat@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Sandeep Satavlekar <sandysat@gmail.com>\\n\"\n\"Language-Team: Hindi (http://www.transifex.com/projects/p/django/language/\"\n\"hi/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: hi\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"से अनुप्रेषित\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"\"\n\"डोमेन नाम को छोड़कर बाकि सब संपूर्ण पथ होना चाहिए | उदाहरण:   '/events/search'\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"को अनुप्रेषित\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"\"\n\"यह या तो एक संपूर्ण पथ  (जैसा ऊपर निर्दिष्ट किया हैं ) हो सकता है या  'http://' के साथ \"\n\"शुरू होनेवाला पूर्ण URL हो सकता है.\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"पुनः प्रेषित\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"पुनः प्रेषित\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/hr/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:39+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Croatian (http://www.transifex.com/projects/p/django/language/\"\n\"hr/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: hr\\n\"\n\"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"preusmjeri od\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"\"\n\"Ovo bi trebala biti apsolutna putanja, bez imena domene. Primjer: '/events/\"\n\"search/'.\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"preusmjeri na\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"\"\n\"Ovo može biti ili apsolutna putanja (kao gore) ili potpuni URL koji počinje \"\n\"sa 'http://'\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"preusmjeri\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"preusmjeravanja\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/hu/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Hungarian (http://www.transifex.com/projects/p/django/\"\n\"language/hu/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: hu\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"átirányítva innen\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"\"\n\"Ennek abszolút elérési útnak kell lennie, a tartománynév nélkül. Példa: '/\"\n\"events/search/'\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"átirányítva ide\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"\"\n\"Ennek vagy abszolút elérési útnak kell lennie (mint fentebb), vagy teljes \"\n\"URL-nek 'http://'-vel kezdve.\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"átirányítás\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"átirányít\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/id/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# rodin <romihardiyanto@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: rodin <romihardiyanto@gmail.com>\\n\"\n\"Language-Team: Indonesian (http://www.transifex.com/projects/p/django/\"\n\"language/id/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: id\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"pengalihan dari\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"\"\n\"Harus berupa lokasi absolut, tanpa nama domain. Contoh: '/events/search/'.\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"pengalihan ke\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"\"\n\"Dapat berupa lokasi absolut (seperti di atas) atau URL lengkap yang dimulai \"\n\"dengan 'http://'.\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"pengalihan\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"pengalihan\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/is/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Icelandic (http://www.transifex.com/projects/p/django/\"\n\"language/is/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: is\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"vísun frá\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"Þetta þarf að vera full slóð án lénsins. Dæmi: '/events/search/'.\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"vísa á\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"\"\n\"Þetta getur verið full slóð (eins og hér að ofan) eða veffang með 'http://' \"\n\"fremst.\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"vísun\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"vísanir\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/it/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Italian (http://www.transifex.com/projects/p/django/language/\"\n\"it/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: it\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"redirezione da\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"\"\n\"Deve essere un percorso assoluto, senza nome di dominio. Esempio: '/events/\"\n\"search/'.\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"redirezione verso\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"\"\n\"Può essere un percorso assoluto (come sopra) o una URL completa che inizia \"\n\"con 'http://'.\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"redirezione\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"redirezioni\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/ja/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Japanese (http://www.transifex.com/projects/p/django/language/\"\n\"ja/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ja\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"リダイレクト元\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"'/events/search/' のように、ドメイン名を除いた絶対パスにします。 \"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"リダイレクト先\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"上記のような絶対パスか、 'http://' で始まる完全な URL にします。\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"リダイレクト\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"リダイレクト\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/ka/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:39+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Georgian (http://www.transifex.com/projects/p/django/language/\"\n\"ka/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ka\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"გადამისამართება გვერდიდან\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"\"\n\"უნდა იყოს აბსოლუტური გზა დომენის სახელის გარეშე. მაგალითი: '/events/search/'.\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"გადამისამართება გვერდზე\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"\"\n\"უნდა იყოს აბსოლუტური გზა (როგორც ზემოთ) ან სრული URL, რომელიც იწყება \"\n\"'http://' სტრიქონით.\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"გადამისამართება\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"გადამისამართებები\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/kk/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <germanilyin@gmail.com>, 2011.\n#   <zhazira.mt@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: yun_man_ger <germanilyin@gmail.com>\\n\"\n\"Language-Team: Kazakh (http://www.transifex.com/projects/p/django/language/\"\n\"kk/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: kk\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \" бағыттау (қайдан)\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"Бұл домен атаусыз абсолюттік жол болу керек. Мысал: '/events/search/'.\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"бағыттау (қайда)\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"\"\n\"Бұл абсолюттік жол немесе 'http://'-мен басталатын толық URL бола алады.\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"қайта бағыттау\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"қайта бағыттаулар\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/km/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: English <en@li.org>\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: km\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"នាំចេញពី\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"\"\n\"គួរតែជាផ្លូវពេញ (absolute path) ហើយមិនបញ្ជូលឈ្មោះ ដមែន (domain name​)។​ឧទាហរណ៍ '/\"\n\"events/search/'។\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"នាំចេញទៅ\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"អាចជាផ្លូវពេញ (absolute path) ឬក៏ URL ទាំងមូលដែលចាប់ផ្តើមជាមួយ 'http://'។\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"នាំចេញ\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"នាំចេញ\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/kn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Kannada (http://www.transifex.com/projects/p/django/language/\"\n\"kn/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: kn\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"ಪುನರ್ನಿರ್ದೇಶನ ಇಲ್ಲಿಂದ->\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"ಇದು ಡೊಮೈನ್ ಹೊರತುಪಡಿಸಿದ ಸಂಪೂರ್ಣ ಪಥವಾಗಿರಬೇಕು ಉದಾ.'/events/search/'.\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"ಪುನರ್ನಿರ್ದೇಶನ ಇಲ್ಲಿಗೆ->\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"\"\n\"ಇದು ಮೇಲಿನಂತೆ ಸಂಪೂರ್ಣ ಪಥವಾದರೂ ಆಗಿರಬಹುದು ಅಥವಾ 'http://'ದಿಂದ ಆರಂಭವಾಗುವ ಸಂಪೂರ್ಣ \"\n\"URL ಆಗಿರಬಹುದು.\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"ಪುನರ್ನಿರ್ದೇಶನ\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"ಪುನರ್ನಿರ್ದೇಶನ(ಗಳು)\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/ko/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Korean (http://www.transifex.com/projects/p/django/language/\"\n\"ko/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ko\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"에서 재전송\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"도메인명을 제외한 절대경로로 입력하세요. 예: '/events/search/'\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"(으)로 재전송\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"절대경로와 URL('http://' 포함) 모두 가능합니다.\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"재전송\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"재전송\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/lt/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Lithuanian (http://www.transifex.com/projects/p/django/\"\n\"language/lt/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: lt\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n\"\n\"%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"nukreiptas (redirect) iš\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"\"\n\"Turi būti absoliutus adresas neįtraukiant domaino. Pavyzdžiui: '/events/\"\n\"search/'.\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"nukreipti(redirect) į\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"\"\n\"Gali būti absoliutus adresas (kaip viršuj) arba pilnas URL pradedant \"\n\"'http://'.\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"nukreipti\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"nukreipia\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/lv/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Latvian (http://www.transifex.com/projects/p/django/language/\"\n\"lv/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: lv\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : \"\n\"2);\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"pārvirzīt(redirect) no\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"\"\n\"Tam jābūt absolūtajam ceļam, atskaitot domēna vārdu. Piemēram: '/notikumi/\"\n\"meklet/'.\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"pārvirzīt(redirect) uz\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"\"\n\"Šis var būt vai nu absolūtais ceļš (kā augstāk) vai pilnais URL, kas sākas \"\n\"ar 'http://'.\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"pārvirzīt\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"pārvirzījumi\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/mk/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Macedonian (http://www.transifex.com/projects/p/django/\"\n\"language/mk/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: mk\\n\"\n\"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"пренасочи од\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"\"\n\"Ова треба да биде апсолутна патека без името на домејнот. На пр. „/nastani/\"\n\"prebaraj/“.\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"пренасочи кон\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"\"\n\"Ова може да биде или апсолутна патека (како погоре) или цела адреса \"\n\"почувајќи со „http://“.\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"пренасочување\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"пренасочувања\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/ml/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Malayalam (http://www.transifex.com/projects/p/django/\"\n\"language/ml/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ml\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"പഴയ വിലാസം\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"\"\n\"ഇത് ഡൊമൈന്‍ നാമം ഉള്‍പ്പെടാത്ത ഒരു കേവലമാര്‍ഗം (വിലാസം) ആവണം. ഉദാ: '/events/search/'.\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"പുതിയ വിലാസം\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"ഇതൊരു കേവല മാര്‍ഗമോ 'http://' എന്നു തുടങ്ങുന്ന പൂര്‍ണ്ണ വിലാസമോ (URL) ആവാം\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"വിലാസമാറ്റം\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"വിലാസമാറ്റങ്ങള്‍\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/mn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Анхбаяр Анхаа <l.ankhbayar@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Анхбаяр Анхаа <l.ankhbayar@gmail.com>\\n\"\n\"Language-Team: Mongolian (http://www.transifex.com/projects/p/django/\"\n\"language/mn/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: mn\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"redirect хаанаас\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"\"\n\"Энэ нь домэйн нэр агуулаагүй абсолют зам байх ёстой. Жишээ нь: '/events/\"\n\"search/'.\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"redirect хаашаа\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"\"\n\"Энэ нь (дээрхийн нэгэн адил) абсолют зам юм уу 'http://' гэж эхэлсэн бүтэн \"\n\"URL байж болно. \"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"redirect\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"redirect-ууд\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/nb/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <sigurdga-transifex@sigurdga.no>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-03-12 21:48+0000\\n\"\n\"Last-Translator: Sigurd Gartmann <sigurdga-transifex@sigurdga.no>\\n\"\n\"Language-Team: Norwegian Bokmål (http://www.transifex.com/projects/p/django/\"\n\"language/nb/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: nb\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"omadresser fra\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"\"\n\"Dette bør være en fullstendig sti uten domenenavn. Eksempel: «/hendelser/\"\n\"finn/»\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"omadresser til\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"\"\n\"Dette kan enten være en fullstendig sti (som over), eller en fullstendig \"\n\"nettadresse som starter med «http://».\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"omadressering\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"omadresseringer\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/ne/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Paras Nath Chaudhary <opnchaudhary@gmail.com>, 2012.\n# Sagar Chalise <chalisesagar@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-10-04 11:29+0000\\n\"\n\"Last-Translator: Paras Nath Chaudhary <opnchaudhary@gmail.com>\\n\"\n\"Language-Team: Nepali (http://www.transifex.com/projects/p/django/language/\"\n\"ne/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ne\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"बाटो फेर्ने फरम\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"यो डोमेन नाम छोडेर, पूर्ण बाटो हुनुपर्छ । उदाहरण : '/events/search'\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"बाटो फेर्नेको लागि\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"\"\n\"यो कि (माथीको जस्तै )पूर्ण  बाटो हुनुपर्छ  वा 'http://' बाट  सुरुभएको पुरा हुनुपर्छ । \"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"बाटो फेर्ने\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"बाटो फेर्ने\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/nl/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:39+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Dutch (http://www.transifex.com/projects/p/django/language/\"\n\"nl/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: nl\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"omgeleid via\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"\"\n\"Dit moet een absoluut pad zijn, zonder de domeinnaam. Bijvoorbeeld: '/events/\"\n\"search/'.\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"omleiden naar\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"\"\n\"Dit kan een absoluut pad (zoals hierboven) zijn of een volledige URL \"\n\"beginnend met 'http://'.\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"omleiding\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"omleidingen\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/nn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Norwegian Nynorsk (http://www.transifex.com/projects/p/django/\"\n\"language/nn/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: nn\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"omadresser frå\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"\"\n\"Dette bør vere ein fullstendig sti utan domenenavn. Døme: '/hendingar/finn/\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"omadresser til\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"\"\n\"Dette kan enten vere ein fullstendig sti (som over), eller ei fullstendig \"\n\"nettadresse som startar med 'http://'\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"omadressering\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"omadresseringar\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/pa/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Panjabi (Punjabi) (http://www.transifex.com/projects/p/django/\"\n\"language/pa/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: pa\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"ਰੀ-ਡਾਇਰੈਕਟ\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/pl/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Polish (http://www.transifex.com/projects/p/django/language/\"\n\"pl/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: pl\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 \"\n\"|| n%100>=20) ? 1 : 2);\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"przekieruj z\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"Podaj pełną ścieżkę bez nazwy domeny. Przykład: '/events/search/'.\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"przekierowanie do\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"Ścieżka jak wyżej lub pełny URL z http://\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"przekieruj\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"przekierowania\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/pt/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Nuno Mariz <nmariz@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Nuno Mariz <nmariz@gmail.com>\\n\"\n\"Language-Team: Portuguese (http://www.transifex.com/projects/p/django/\"\n\"language/pt/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: pt\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"redirecionar de\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"\"\n\"Isto deverá ser um caminho absoluto, excluindo o domínio. Exemplo: '/events/\"\n\"search/'.\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"redirecionar para\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"\"\n\"Isto poderá ser um caminho absoluto (como acima) ou um URL completo começado \"\n\"por 'http://'.\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"redirecionar\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"redireciona\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/pt_BR/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Portuguese (Brazil) <django-l10n-portuguese@googlegroups.\"\n\"com>\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: pt_BR\\n\"\n\"Plural-Forms: nplurals=2; plural=(n > 1);\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"redirecionar de\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"\"\n\"Isso deve ser um caminho absoluto, excluindo o nome de domínio. Exemplo: '/\"\n\"eventos/busca/'.\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"redirecionar para\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"\"\n\"Pode ser um caminho absoluto (como acima) ou uma URL completa, começando com \"\n\"'http://'.\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"redirecionar\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"redirecionamentos\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/ro/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Daniel Ursache-Dogariu <contact@danniel.net>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Daniel Ursache-Dogariu <contact@danniel.net>\\n\"\n\"Language-Team: Romanian (http://www.transifex.com/projects/p/django/language/\"\n\"ro/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ro\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?\"\n\"2:1));\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"redirecționat de la \"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"\"\n\"Aceasta ar trebui să fie o cale absolută, excluzând numele de domeniu. \"\n\"Exemplu: '/evenimente/cautare/'.\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"redirecționat către\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"\"\n\"Aceasta poate fi o cale absolută (ca mai sus) sau un URL complet, începând \"\n\"cu 'http://'.\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"redirecționare\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"redirecționări\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/ru/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Russian (http://www.transifex.com/projects/p/django/language/\"\n\"ru/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ru\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"перенаправить с\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"\"\n\"Это должен быть абсолютный путь без доменного имени. Пример: '/events/\"\n\"search/'.\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"перенаправить на\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"\"\n\"Это должен быть либо абсолютный путь (как выше), либо полный URL, \"\n\"начинающийся с 'http://'.\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"перенаправление\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"перенаправления\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/sk/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Slovak (http://www.transifex.com/projects/p/django/language/\"\n\"sk/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sk\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"presmerovať z\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"\"\n\"Tu by sa mala použiť absolútna cesta bez názvu domény. Napríklad: '/events/\"\n\"search/'.\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"presmerovať na\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"\"\n\"Toto môže byť buď absolútna cesta (ako vyššie) alebo úplné URL začínajúce na \"\n\"'http://'.\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"presmerovanie\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"presmerovania\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/sl/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-10-31 19:45+0000\\n\"\n\"Last-Translator: mateju <>\\n\"\n\"Language-Team: Slovenian (http://www.transifex.com/projects/p/django/\"\n\"language/sl/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sl\\n\"\n\"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n\"\n\"%100==4 ? 2 : 3);\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"preusmeri iz\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"\"\n\"Pot mora biti navedena absolutno in brez imena domene. Primer: '/events/\"\n\"search/'.\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"preusmeri na\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"\"\n\"Pot je lahko navedena absolutno (kot zgoraj) ali pa kot popoln naslov URL, \"\n\"začet z 'http://'.\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"preusmeri\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"preusmeritve\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/sq/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Besnik <besnik@programeshqip.org>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Albanian (http://www.transifex.com/projects/p/django/language/\"\n\"sq/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sq\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"ridrejtim prej\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"\"\n\"Ky do të duhej të ishte shteg absolut, pa emrin e përkatësisë. Për shembull: \"\n\"'/ngjarje/kërkim/'.\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"ridrejtim te\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"\"\n\"Ky mund të jerë shteg absolut (si më sipër) ose URL e plotë që fillon me \"\n\"'http://'.\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"ridrejtim\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"ridrejtime\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/sr/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Serbian (http://www.transifex.com/projects/p/django/language/\"\n\"sr/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sr\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"преусмерен са\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"\"\n\"Ово мора бити апсолутна путања без имена домена. На пример: '/events/\"\n\"search/'.\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"преусмери ка\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"\"\n\"Ово може бити или апсолутна путања (као горе) или пун URL који почиње са \"\n\"'http://'.\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"преусмеравање\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"преусмеравања\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/sr_Latn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/django/\"\n\"language/sr@latin/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sr@latin\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"preusmeren sa\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"\"\n\"Ovo mora biti apsolutna putanja bez imena domena. Na primer: '/events/\"\n\"search/'.\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"preusmeri ka\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"\"\n\"Ovo može biti ili apsolutna putanja (kao gore) ili pun URL koji počinje sa \"\n\"'http://'.\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"preusmeravanje\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"preusmeravanja\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/sv/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Swedish (http://www.transifex.com/projects/p/django/language/\"\n\"sv/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sv\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"omdirigera från\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"\"\n\"Detta bör vara en absolut sökväg utan domännamnet. Exempel: '/handelser/\"\n\"sok/'.\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"omdirigera till\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"\"\n\"Detta kan vara antingen en absolut sökväg (som ovan) eller en fullständig \"\n\"URL som börjar med 'http://'.\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"omdirigera\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"omdirigeringar\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/sw/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-03-16 18:53+0000\\n\"\n\"Last-Translator: machaku <bmachaku@gmail.com>\\n\"\n\"Language-Team: Swahili (http://www.transifex.com/projects/p/django/language/\"\n\"sw/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sw\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"elekeza upya kutoka\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"\"\n\"Hii inatakiwa kuwa njia kamili, ukiondo jina la domeini. Mfano:'/matukio/\"\n\"tafuta/'.\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"elekeza upya kwenda\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"\"\n\"Hii inaweza kuwa njia kamili (kama hapo juu) or URL kamili yenye 'http://'.\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"maelekezo upya\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"maelekezo upya\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/ta/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Tamil (http://www.transifex.com/projects/p/django/language/\"\n\"ta/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ta\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"லிருந்து திசைமாற்று\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"\"\n\"இது ஒரு முழுமையான பாதையாக இருக்கவேண்டும். இணையத்தளப்பெயராக இருக்கக்கூடாது. உதாரணம்:'/\"\n\"events/search/'.\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"திரும்ப அனுப்பு\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"\"\n\"இது முழுமையான பாதையாக (மேலே உள்ளது போல) அல்லது  \\\"http\\\"//\\\" என தொடங்கும் வலை  \"\n\"முகவரியாக இருக்கலாம்.\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"திரும்ப அனுப்பு\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"திரும்ப அனுப்புகிறது. \"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/te/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Telugu (http://www.transifex.com/projects/p/django/language/\"\n\"te/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: te\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/th/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Thai (http://www.transifex.com/projects/p/django/language/\"\n\"th/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: th\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"เปลี่ยนทิศทางจาก\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"พาธไม่รวมโดเมน ตัวอย่าง : '/events/search/'\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"เปลี่ยนทิศทางไปที่\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"มันอาจจะเป็นพาธหรือ URL แบบเต็มที่ขึ้นต้นด้วย 'http://'.\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"เปลี่ยนทิศทาง\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"เปลี่ยนทิศทาง\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/tr/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Turkish (http://www.transifex.com/projects/p/django/language/\"\n\"tr/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: tr\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"eski adres\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"\"\n\"Buraya tam dosya yolu, alan adı kullanılmadan yazılmalı. Örnek: '/events/\"\n\"search/'.\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"yeni adres\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"\"\n\"Buraya tam dosya yolu (yukarıdaki gibi), ya da 'http://' ile başlayan tam \"\n\"adres yazılmalı.\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"yönlendirme\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"yönlendirmeler\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/tt/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Azat Khasanshin <lordofbazuks@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Azat Khasanshin <lordofbazuks@gmail.com>\\n\"\n\"Language-Team: Tatar (http://www.transifex.com/projects/p/django/language/\"\n\"tt/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: tt\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"бу сәхифәдән юнәлтергә:\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"\"\n\"Бу домен исеменнән тыш абсолүт юл булырга тиеш. Мәсәлән: '/events/search/'.\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"бу сәхифәгә юнәлтергә:\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"\"\n\"Бу я абсолүт юл (өстәге кебек), я 'http://' белән башланган тулы URL булырга \"\n\"тиеш.\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"юнәлтү\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"юнәлтүләр\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/uk/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Ukrainian (http://www.transifex.com/projects/p/django/\"\n\"language/uk/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: uk\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"перенаправлення з\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"\"\n\"Це повинен бути абсолютний шлях, виключаючи ім'я домену. Приклад: '/events/\"\n\"search/'.\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"перенаправлення до\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"\"\n\"Це може бути або абсолютний шлях (як вище), або повний URL, який починається \"\n\"з 'http://'.\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"перенаправлення\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"перенаправлення\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/ur/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Mansoorulhaq Mansoor <mansoorulhaq1986@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Mansoorulhaq Mansoor <mansoorulhaq1986@gmail.com>\\n\"\n\"Language-Team: Urdu (http://www.transifex.com/projects/p/django/language/\"\n\"ur/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ur\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"سے ری ڈائریکٹ\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"یہ مطلق پاتھ ھونا چاھئے، بغیر ڈومین نام کے۔ مثلاً '/events/search/'\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"ری ڈائریکٹ از طرف\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"\"\n\"یہ مطلق پاتھ ھو سکتا ھے (جیسے اوپر ھے) یا مکمل یو آر ایل (URL) بمع 'http://'۔\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"ری ڈائریکٹ\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"ری ڈائیکٹس\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/vi/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Vietnamese (http://www.transifex.com/projects/p/django/\"\n\"language/vi/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: vi\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"Chuyển hướng từ\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"\"\n\"Đây phải là đường dẫn tuyệt đối, không bao gồm tên miền. Ví dụ: '/events/\"\n\"search/'.\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"Chuyển hướng tới\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"\"\n\"Đây có thể là đường dẫn tuyệt đối hoặc địa chỉ đầy đủ bắt đầu với 'http://'\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"Chuyển hướng\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"Chuyển hướng\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/zh_CN/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:39+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/django/\"\n\"language/zh_CN/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: zh_CN\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"重定向自\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"应该是一个绝对路径，不包括域名。例如：'/events/search/'。\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"重定向到\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"可以是绝对路径（同上）或以'http://'起始的全URL。\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"重定向\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"重定向\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/locale/zh_TW/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:39+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/django/\"\n\"language/zh_TW/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: zh_TW\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: models.py:9\nmsgid \"redirect from\"\nmsgstr \"重導向自\"\n\n#: models.py:10\nmsgid \"\"\n\"This should be an absolute path, excluding the domain name. Example: '/\"\n\"events/search/'.\"\nmsgstr \"應該是一個絕對路徑，不包括網域。例如：'/events/search/'。\"\n\n#: models.py:11\nmsgid \"redirect to\"\nmsgstr \"重導向到\"\n\n#: models.py:12\nmsgid \"\"\n\"This can be either an absolute path (as above) or a full URL starting with \"\n\"'http://'.\"\nmsgstr \"此可為一絕對路徑 (如上) 或一個以 'http://' 開頭的完整 URL。\"\n\n#: models.py:15\nmsgid \"redirect\"\nmsgstr \"重導向\"\n\n#: models.py:16\nmsgid \"redirects\"\nmsgstr \"重導向\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/middleware.py",
    "content": "from __future__ import unicode_literals\n\nfrom django.conf import settings\nfrom django.contrib.redirects.models import Redirect\nfrom django.contrib.sites.models import get_current_site\nfrom django.core.exceptions import ImproperlyConfigured\nfrom django import http\n\n\nclass RedirectFallbackMiddleware(object):\n    def __init__(self):\n        if 'django.contrib.sites' not in settings.INSTALLED_APPS:\n            raise ImproperlyConfigured(\n                \"You cannot use RedirectFallbackMiddleware when \"\n                \"django.contrib.sites is not installed.\"\n            )\n\n    def process_response(self, request, response):\n        if response.status_code != 404:\n            return response # No need to check for a redirect for non-404 responses.\n\n        full_path = request.get_full_path()\n        current_site = get_current_site(request)\n\n        r = None\n        try:\n            r = Redirect.objects.get(site=current_site, old_path=full_path)\n        except Redirect.DoesNotExist:\n            pass\n        if settings.APPEND_SLASH and not request.path.endswith('/'):\n            # Try appending a trailing slash.\n            path_len = len(request.path)\n            full_path = full_path[:path_len] + '/' + full_path[path_len:]\n            try:\n                r = Redirect.objects.get(site=current_site, old_path=full_path)\n            except Redirect.DoesNotExist:\n                pass\n        if r is not None:\n            if r.new_path == '':\n                return http.HttpResponseGone()\n            return http.HttpResponsePermanentRedirect(r.new_path)\n\n        # No redirect was found. Return the response.\n        return response\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/models.py",
    "content": "from django.db import models\nfrom django.contrib.sites.models import Site\nfrom django.utils.translation import ugettext_lazy as _\nfrom django.utils.encoding import python_2_unicode_compatible\n\n@python_2_unicode_compatible\nclass Redirect(models.Model):\n    site = models.ForeignKey(Site)\n    old_path = models.CharField(_('redirect from'), max_length=200, db_index=True,\n        help_text=_(\"This should be an absolute path, excluding the domain name. Example: '/events/search/'.\"))\n    new_path = models.CharField(_('redirect to'), max_length=200, blank=True,\n        help_text=_(\"This can be either an absolute path (as above) or a full URL starting with 'http://'.\"))\n\n    class Meta:\n        verbose_name = _('redirect')\n        verbose_name_plural = _('redirects')\n        db_table = 'django_redirect'\n        unique_together=(('site', 'old_path'),)\n        ordering = ('old_path',)\n\n    def __str__(self):\n        return \"%s ---> %s\" % (self.old_path, self.new_path)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/redirects/tests.py",
    "content": "from django.conf import settings\nfrom django.contrib.sites.models import Site\nfrom django.core.exceptions import ImproperlyConfigured\nfrom django.test import TestCase\nfrom django.test.utils import override_settings\nfrom django.utils import six\n\nfrom .middleware import RedirectFallbackMiddleware\nfrom .models import Redirect\n\n\n@override_settings(\n    APPEND_SLASH=False,\n    MIDDLEWARE_CLASSES=list(settings.MIDDLEWARE_CLASSES) +\n        ['django.contrib.redirects.middleware.RedirectFallbackMiddleware'],\n    SITE_ID=1,\n)\nclass RedirectTests(TestCase):\n\n    def setUp(self):\n        self.site = Site.objects.get(pk=settings.SITE_ID)\n\n    def test_model(self):\n        r1 = Redirect.objects.create(\n            site=self.site, old_path='/initial', new_path='/new_target')\n        self.assertEqual(six.text_type(r1), \"/initial ---> /new_target\")\n\n    def test_redirect(self):\n        Redirect.objects.create(\n            site=self.site, old_path='/initial', new_path='/new_target')\n        response = self.client.get('/initial')\n        self.assertRedirects(response,\n            '/new_target', status_code=301, target_status_code=404)\n\n    @override_settings(APPEND_SLASH=True)\n    def test_redirect_with_append_slash(self):\n        Redirect.objects.create(\n            site=self.site, old_path='/initial/', new_path='/new_target/')\n        response = self.client.get('/initial')\n        self.assertRedirects(response,\n            '/new_target/', status_code=301, target_status_code=404)\n\n    @override_settings(APPEND_SLASH=True)\n    def test_redirect_with_append_slash_and_query_string(self):\n        Redirect.objects.create(\n            site=self.site, old_path='/initial/?foo', new_path='/new_target/')\n        response = self.client.get('/initial?foo')\n        self.assertRedirects(response,\n            '/new_target/', status_code=301, target_status_code=404)\n\n    def test_response_gone(self):\n        \"\"\"When the redirect target is '', return a 410\"\"\"\n        Redirect.objects.create(\n            site=self.site, old_path='/initial', new_path='')\n        response = self.client.get('/initial')\n        self.assertEqual(response.status_code, 410)\n\n    @override_settings(\n        INSTALLED_APPS=[app for app in settings.INSTALLED_APPS\n                        if app != 'django.contrib.sites'])\n    def test_sites_not_installed(self):\n        with self.assertRaises(ImproperlyConfigured):\n            RedirectFallbackMiddleware()\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/backends/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/backends/base.py",
    "content": "from __future__ import unicode_literals\n\nimport base64\nfrom datetime import datetime, timedelta\ntry:\n    from django.utils.six.moves import cPickle as pickle\nexcept ImportError:\n    import pickle\nimport string\n\nfrom django.conf import settings\nfrom django.core.exceptions import SuspiciousOperation\nfrom django.utils.crypto import constant_time_compare\nfrom django.utils.crypto import get_random_string\nfrom django.utils.crypto import salted_hmac\nfrom django.utils import timezone\nfrom django.utils.encoding import force_bytes\n\n# session_key should not be case sensitive because some backends can store it\n# on case insensitive file systems.\nVALID_KEY_CHARS = string.ascii_lowercase + string.digits\n\nclass CreateError(Exception):\n    \"\"\"\n    Used internally as a consistent exception type to catch from save (see the\n    docstring for SessionBase.save() for details).\n    \"\"\"\n    pass\n\nclass SessionBase(object):\n    \"\"\"\n    Base class for all Session classes.\n    \"\"\"\n    TEST_COOKIE_NAME = 'testcookie'\n    TEST_COOKIE_VALUE = 'worked'\n\n    def __init__(self, session_key=None):\n        self._session_key = session_key\n        self.accessed = False\n        self.modified = False\n\n    def __contains__(self, key):\n        return key in self._session\n\n    def __getitem__(self, key):\n        return self._session[key]\n\n    def __setitem__(self, key, value):\n        self._session[key] = value\n        self.modified = True\n\n    def __delitem__(self, key):\n        del self._session[key]\n        self.modified = True\n\n    def get(self, key, default=None):\n        return self._session.get(key, default)\n\n    def pop(self, key, *args):\n        self.modified = self.modified or key in self._session\n        return self._session.pop(key, *args)\n\n    def setdefault(self, key, value):\n        if key in self._session:\n            return self._session[key]\n        else:\n            self.modified = True\n            self._session[key] = value\n            return value\n\n    def set_test_cookie(self):\n        self[self.TEST_COOKIE_NAME] = self.TEST_COOKIE_VALUE\n\n    def test_cookie_worked(self):\n        return self.get(self.TEST_COOKIE_NAME) == self.TEST_COOKIE_VALUE\n\n    def delete_test_cookie(self):\n        del self[self.TEST_COOKIE_NAME]\n\n    def _hash(self, value):\n        key_salt = \"django.contrib.sessions\" + self.__class__.__name__\n        return salted_hmac(key_salt, value).hexdigest()\n\n    def encode(self, session_dict):\n        \"Returns the given session dictionary pickled and encoded as a string.\"\n        pickled = pickle.dumps(session_dict, pickle.HIGHEST_PROTOCOL)\n        hash = self._hash(pickled)\n        return base64.b64encode(hash.encode() + b\":\" + pickled).decode('ascii')\n\n    def decode(self, session_data):\n        encoded_data = base64.b64decode(force_bytes(session_data))\n        try:\n            # could produce ValueError if there is no ':'\n            hash, pickled = encoded_data.split(b':', 1)\n            expected_hash = self._hash(pickled)\n            if not constant_time_compare(hash.decode(), expected_hash):\n                raise SuspiciousOperation(\"Session data corrupted\")\n            else:\n                return pickle.loads(pickled)\n        except Exception:\n            # ValueError, SuspiciousOperation, unpickling exceptions. If any of\n            # these happen, just return an empty dictionary (an empty session).\n            return {}\n\n    def update(self, dict_):\n        self._session.update(dict_)\n        self.modified = True\n\n    def has_key(self, key):\n        return key in self._session\n\n    def keys(self):\n        return self._session.keys()\n\n    def values(self):\n        return self._session.values()\n\n    def items(self):\n        return self._session.items()\n\n    def iterkeys(self):\n        return self._session.iterkeys()\n\n    def itervalues(self):\n        return self._session.itervalues()\n\n    def iteritems(self):\n        return self._session.iteritems()\n\n    def clear(self):\n        # To avoid unnecessary persistent storage accesses, we set up the\n        # internals directly (loading data wastes time, since we are going to\n        # set it to an empty dict anyway).\n        self._session_cache = {}\n        self.accessed = True\n        self.modified = True\n\n    def _get_new_session_key(self):\n        \"Returns session key that isn't being used.\"\n        while True:\n            session_key = get_random_string(32, VALID_KEY_CHARS)\n            if not self.exists(session_key):\n                break\n        return session_key\n\n    def _get_or_create_session_key(self):\n        if self._session_key is None:\n            self._session_key = self._get_new_session_key()\n        return self._session_key\n\n    def _get_session_key(self):\n        return self._session_key\n\n    session_key = property(_get_session_key)\n\n    def _get_session(self, no_load=False):\n        \"\"\"\n        Lazily loads session from storage (unless \"no_load\" is True, when only\n        an empty dict is stored) and stores it in the current instance.\n        \"\"\"\n        self.accessed = True\n        try:\n            return self._session_cache\n        except AttributeError:\n            if self.session_key is None or no_load:\n                self._session_cache = {}\n            else:\n                self._session_cache = self.load()\n        return self._session_cache\n\n    _session = property(_get_session)\n\n    def get_expiry_age(self, **kwargs):\n        \"\"\"Get the number of seconds until the session expires.\n\n        Optionally, this function accepts `modification` and `expiry` keyword\n        arguments specifying the modification and expiry of the session.\n        \"\"\"\n        try:\n            modification = kwargs['modification']\n        except KeyError:\n            modification = timezone.now()\n        # Make the difference between \"expiry=None passed in kwargs\" and\n        # \"expiry not passed in kwargs\", in order to guarantee not to trigger\n        # self.load() when expiry is provided.\n        try:\n            expiry = kwargs['expiry']\n        except KeyError:\n            expiry = self.get('_session_expiry')\n\n        if not expiry:   # Checks both None and 0 cases\n            return settings.SESSION_COOKIE_AGE\n        if not isinstance(expiry, datetime):\n            return expiry\n        delta = expiry - modification\n        return delta.days * 86400 + delta.seconds\n\n    def get_expiry_date(self, **kwargs):\n        \"\"\"Get session the expiry date (as a datetime object).\n\n        Optionally, this function accepts `modification` and `expiry` keyword\n        arguments specifying the modification and expiry of the session.\n        \"\"\"\n        try:\n            modification = kwargs['modification']\n        except KeyError:\n            modification = timezone.now()\n        # Same comment as in get_expiry_age\n        try:\n            expiry = kwargs['expiry']\n        except KeyError:\n            expiry = self.get('_session_expiry')\n\n        if isinstance(expiry, datetime):\n            return expiry\n        if not expiry:   # Checks both None and 0 cases\n            expiry = settings.SESSION_COOKIE_AGE\n        return modification + timedelta(seconds=expiry)\n\n    def set_expiry(self, value):\n        \"\"\"\n        Sets a custom expiration for the session. ``value`` can be an integer,\n        a Python ``datetime`` or ``timedelta`` object or ``None``.\n\n        If ``value`` is an integer, the session will expire after that many\n        seconds of inactivity. If set to ``0`` then the session will expire on\n        browser close.\n\n        If ``value`` is a ``datetime`` or ``timedelta`` object, the session\n        will expire at that specific future time.\n\n        If ``value`` is ``None``, the session uses the global session expiry\n        policy.\n        \"\"\"\n        if value is None:\n            # Remove any custom expiration for this session.\n            try:\n                del self['_session_expiry']\n            except KeyError:\n                pass\n            return\n        if isinstance(value, timedelta):\n            value = timezone.now() + value\n        self['_session_expiry'] = value\n\n    def get_expire_at_browser_close(self):\n        \"\"\"\n        Returns ``True`` if the session is set to expire when the browser\n        closes, and ``False`` if there's an expiry date. Use\n        ``get_expiry_date()`` or ``get_expiry_age()`` to find the actual expiry\n        date/age, if there is one.\n        \"\"\"\n        if self.get('_session_expiry') is None:\n            return settings.SESSION_EXPIRE_AT_BROWSER_CLOSE\n        return self.get('_session_expiry') == 0\n\n    def flush(self):\n        \"\"\"\n        Removes the current session data from the database and regenerates the\n        key.\n        \"\"\"\n        self.clear()\n        self.delete()\n        self.create()\n\n    def cycle_key(self):\n        \"\"\"\n        Creates a new session key, whilst retaining the current session data.\n        \"\"\"\n        data = self._session_cache\n        key = self.session_key\n        self.create()\n        self._session_cache = data\n        self.delete(key)\n\n    # Methods that child classes must implement.\n\n    def exists(self, session_key):\n        \"\"\"\n        Returns True if the given session_key already exists.\n        \"\"\"\n        raise NotImplementedError\n\n    def create(self):\n        \"\"\"\n        Creates a new session instance. Guaranteed to create a new object with\n        a unique key and will have saved the result once (with empty data)\n        before the method returns.\n        \"\"\"\n        raise NotImplementedError\n\n    def save(self, must_create=False):\n        \"\"\"\n        Saves the session data. If 'must_create' is True, a new session object\n        is created (otherwise a CreateError exception is raised). Otherwise,\n        save() can update an existing object with the same key.\n        \"\"\"\n        raise NotImplementedError\n\n    def delete(self, session_key=None):\n        \"\"\"\n        Deletes the session data under this key. If the key is None, the\n        current session key value is used.\n        \"\"\"\n        raise NotImplementedError\n\n    def load(self):\n        \"\"\"\n        Loads the session data and returns a dictionary.\n        \"\"\"\n        raise NotImplementedError\n\n    @classmethod\n    def clear_expired(cls):\n        \"\"\"\n        Remove expired sessions from the session store.\n\n        If this operation isn't possible on a given backend, it should raise\n        NotImplementedError. If it isn't necessary, because the backend has\n        a built-in expiration mechanism, it should be a no-op.\n        \"\"\"\n        raise NotImplementedError\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/backends/cache.py",
    "content": "from django.conf import settings\nfrom django.contrib.sessions.backends.base import SessionBase, CreateError\nfrom django.core.cache import get_cache\nfrom django.utils.six.moves import xrange\n\nKEY_PREFIX = \"django.contrib.sessions.cache\"\n\n\nclass SessionStore(SessionBase):\n    \"\"\"\n    A cache-based session store.\n    \"\"\"\n    def __init__(self, session_key=None):\n        self._cache = get_cache(settings.SESSION_CACHE_ALIAS)\n        super(SessionStore, self).__init__(session_key)\n\n    @property\n    def cache_key(self):\n        return KEY_PREFIX + self._get_or_create_session_key()\n\n    def load(self):\n        try:\n            session_data = self._cache.get(self.cache_key, None)\n        except Exception:\n            # Some backends (e.g. memcache) raise an exception on invalid\n            # cache keys. If this happens, reset the session. See #17810.\n            session_data = None\n        if session_data is not None:\n            return session_data\n        self.create()\n        return {}\n\n    def create(self):\n        # Because a cache can fail silently (e.g. memcache), we don't know if\n        # we are failing to create a new session because of a key collision or\n        # because the cache is missing. So we try for a (large) number of times\n        # and then raise an exception. That's the risk you shoulder if using\n        # cache backing.\n        for i in xrange(10000):\n            self._session_key = self._get_new_session_key()\n            try:\n                self.save(must_create=True)\n            except CreateError:\n                continue\n            self.modified = True\n            return\n        raise RuntimeError(\"Unable to create a new session key.\")\n\n    def save(self, must_create=False):\n        if must_create:\n            func = self._cache.add\n        else:\n            func = self._cache.set\n        result = func(self.cache_key,\n                      self._get_session(no_load=must_create),\n                      self.get_expiry_age())\n        if must_create and not result:\n            raise CreateError\n\n    def exists(self, session_key):\n        return (KEY_PREFIX + session_key) in self._cache\n\n    def delete(self, session_key=None):\n        if session_key is None:\n            if self.session_key is None:\n                return\n            session_key = self.session_key\n        self._cache.delete(KEY_PREFIX + session_key)\n\n    @classmethod\n    def clear_expired(cls):\n        pass\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/backends/cached_db.py",
    "content": "\"\"\"\nCached, database-backed sessions.\n\"\"\"\n\nfrom django.contrib.sessions.backends.db import SessionStore as DBStore\nfrom django.core.cache import cache\nfrom django.core.exceptions import SuspiciousOperation\nfrom django.utils import timezone\n\nKEY_PREFIX = \"django.contrib.sessions.cached_db\"\n\n\nclass SessionStore(DBStore):\n    \"\"\"\n    Implements cached, database backed sessions.\n    \"\"\"\n\n    def __init__(self, session_key=None):\n        super(SessionStore, self).__init__(session_key)\n\n    @property\n    def cache_key(self):\n        return KEY_PREFIX + self._get_or_create_session_key()\n\n    def load(self):\n        try:\n            data = cache.get(self.cache_key, None)\n        except Exception:\n            # Some backends (e.g. memcache) raise an exception on invalid\n            # cache keys. If this happens, reset the session. See #17810.\n            data = None\n\n        if data is None:\n            # Duplicate DBStore.load, because we need to keep track\n            # of the expiry date to set it properly in the cache.\n            try:\n                s = Session.objects.get(\n                    session_key=self.session_key,\n                    expire_date__gt=timezone.now()\n                )\n                data = self.decode(s.session_data)\n                cache.set(self.cache_key, data,\n                    self.get_expiry_age(expiry=s.expire_date))\n            except (Session.DoesNotExist, SuspiciousOperation):\n                self.create()\n                data = {}\n        return data\n\n    def exists(self, session_key):\n        if (KEY_PREFIX + session_key) in cache:\n            return True\n        return super(SessionStore, self).exists(session_key)\n\n    def save(self, must_create=False):\n        super(SessionStore, self).save(must_create)\n        cache.set(self.cache_key, self._session, self.get_expiry_age())\n\n    def delete(self, session_key=None):\n        super(SessionStore, self).delete(session_key)\n        if session_key is None:\n            if self.session_key is None:\n                return\n            session_key = self.session_key\n        cache.delete(KEY_PREFIX + session_key)\n\n    def flush(self):\n        \"\"\"\n        Removes the current session data from the database and regenerates the\n        key.\n        \"\"\"\n        self.clear()\n        self.delete(self.session_key)\n        self.create()\n\n\n# At bottom to avoid circular import\nfrom django.contrib.sessions.models import Session\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/backends/db.py",
    "content": "from django.contrib.sessions.backends.base import SessionBase, CreateError\nfrom django.core.exceptions import SuspiciousOperation\nfrom django.db import IntegrityError, transaction, router\nfrom django.utils import timezone\n\n\nclass SessionStore(SessionBase):\n    \"\"\"\n    Implements database session store.\n    \"\"\"\n    def __init__(self, session_key=None):\n        super(SessionStore, self).__init__(session_key)\n\n    def load(self):\n        try:\n            s = Session.objects.get(\n                session_key=self.session_key,\n                expire_date__gt=timezone.now()\n            )\n            return self.decode(s.session_data)\n        except (Session.DoesNotExist, SuspiciousOperation):\n            self.create()\n            return {}\n\n    def exists(self, session_key):\n        return Session.objects.filter(session_key=session_key).exists()\n\n    def create(self):\n        while True:\n            self._session_key = self._get_new_session_key()\n            try:\n                # Save immediately to ensure we have a unique entry in the\n                # database.\n                self.save(must_create=True)\n            except CreateError:\n                # Key wasn't unique. Try again.\n                continue\n            self.modified = True\n            self._session_cache = {}\n            return\n\n    def save(self, must_create=False):\n        \"\"\"\n        Saves the current session data to the database. If 'must_create' is\n        True, a database error will be raised if the saving operation doesn't\n        create a *new* entry (as opposed to possibly updating an existing\n        entry).\n        \"\"\"\n        obj = Session(\n            session_key=self._get_or_create_session_key(),\n            session_data=self.encode(self._get_session(no_load=must_create)),\n            expire_date=self.get_expiry_date()\n        )\n        using = router.db_for_write(Session, instance=obj)\n        sid = transaction.savepoint(using=using)\n        try:\n            obj.save(force_insert=must_create, using=using)\n        except IntegrityError:\n            if must_create:\n                transaction.savepoint_rollback(sid, using=using)\n                raise CreateError\n            raise\n\n    def delete(self, session_key=None):\n        if session_key is None:\n            if self.session_key is None:\n                return\n            session_key = self.session_key\n        try:\n            Session.objects.get(session_key=session_key).delete()\n        except Session.DoesNotExist:\n            pass\n\n    @classmethod\n    def clear_expired(cls):\n        Session.objects.filter(expire_date__lt=timezone.now()).delete()\n        transaction.commit_unless_managed()\n\n\n# At bottom to avoid circular import\nfrom django.contrib.sessions.models import Session\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/backends/file.py",
    "content": "import datetime\nimport errno\nimport os\nimport tempfile\n\nfrom django.conf import settings\nfrom django.contrib.sessions.backends.base import SessionBase, CreateError, VALID_KEY_CHARS\nfrom django.core.exceptions import SuspiciousOperation, ImproperlyConfigured\nfrom django.utils import timezone\n\nclass SessionStore(SessionBase):\n    \"\"\"\n    Implements a file based session store.\n    \"\"\"\n    def __init__(self, session_key=None):\n        self.storage_path = type(self)._get_storage_path()\n        self.file_prefix = settings.SESSION_COOKIE_NAME\n        super(SessionStore, self).__init__(session_key)\n\n    @classmethod\n    def _get_storage_path(cls):\n        try:\n            return cls._storage_path\n        except AttributeError:\n            storage_path = getattr(settings, \"SESSION_FILE_PATH\", None)\n            if not storage_path:\n                storage_path = tempfile.gettempdir()\n\n            # Make sure the storage path is valid.\n            if not os.path.isdir(storage_path):\n                raise ImproperlyConfigured(\n                    \"The session storage path %r doesn't exist. Please set your\"\n                    \" SESSION_FILE_PATH setting to an existing directory in which\"\n                    \" Django can store session data.\" % storage_path)\n\n            cls._storage_path = storage_path\n            return storage_path\n\n    def _key_to_file(self, session_key=None):\n        \"\"\"\n        Get the file associated with this session key.\n        \"\"\"\n        if session_key is None:\n            session_key = self._get_or_create_session_key()\n\n        # Make sure we're not vulnerable to directory traversal. Session keys\n        # should always be md5s, so they should never contain directory\n        # components.\n        if not set(session_key).issubset(set(VALID_KEY_CHARS)):\n            raise SuspiciousOperation(\n                \"Invalid characters in session key\")\n\n        return os.path.join(self.storage_path, self.file_prefix + session_key)\n\n    def _last_modification(self):\n        \"\"\"\n        Return the modification time of the file storing the session's content.\n        \"\"\"\n        modification = os.stat(self._key_to_file()).st_mtime\n        if settings.USE_TZ:\n            modification = datetime.datetime.utcfromtimestamp(modification)\n            modification = modification.replace(tzinfo=timezone.utc)\n        else:\n            modification = datetime.datetime.fromtimestamp(modification)\n        return modification\n\n    def load(self):\n        session_data = {}\n        try:\n            with open(self._key_to_file(), \"rb\") as session_file:\n                file_data = session_file.read()\n            # Don't fail if there is no data in the session file.\n            # We may have opened the empty placeholder file.\n            if file_data:\n                try:\n                    session_data = self.decode(file_data)\n                except (EOFError, SuspiciousOperation):\n                    self.create()\n\n                # Remove expired sessions.\n                expiry_age = self.get_expiry_age(\n                    modification=self._last_modification(),\n                    expiry=session_data.get('_session_expiry'))\n                if expiry_age < 0:\n                    session_data = {}\n                    self.delete()\n                    self.create()\n        except IOError:\n            self.create()\n        return session_data\n\n    def create(self):\n        while True:\n            self._session_key = self._get_new_session_key()\n            try:\n                self.save(must_create=True)\n            except CreateError:\n                continue\n            self.modified = True\n            self._session_cache = {}\n            return\n\n    def save(self, must_create=False):\n        # Get the session data now, before we start messing\n        # with the file it is stored within.\n        session_data = self._get_session(no_load=must_create)\n\n        session_file_name = self._key_to_file()\n\n        try:\n            # Make sure the file exists.  If it does not already exist, an\n            # empty placeholder file is created.\n            flags = os.O_WRONLY | os.O_CREAT | getattr(os, 'O_BINARY', 0)\n            if must_create:\n                flags |= os.O_EXCL\n            fd = os.open(session_file_name, flags)\n            os.close(fd)\n\n        except OSError as e:\n            if must_create and e.errno == errno.EEXIST:\n                raise CreateError\n            raise\n\n        # Write the session file without interfering with other threads\n        # or processes.  By writing to an atomically generated temporary\n        # file and then using the atomic os.rename() to make the complete\n        # file visible, we avoid having to lock the session file, while\n        # still maintaining its integrity.\n        #\n        # Note: Locking the session file was explored, but rejected in part\n        # because in order to be atomic and cross-platform, it required a\n        # long-lived lock file for each session, doubling the number of\n        # files in the session storage directory at any given time.  This\n        # rename solution is cleaner and avoids any additional overhead\n        # when reading the session data, which is the more common case\n        # unless SESSION_SAVE_EVERY_REQUEST = True.\n        #\n        # See ticket #8616.\n        dir, prefix = os.path.split(session_file_name)\n\n        try:\n            output_file_fd, output_file_name = tempfile.mkstemp(dir=dir,\n                prefix=prefix + '_out_')\n            renamed = False\n            try:\n                try:\n                    os.write(output_file_fd, self.encode(session_data).encode())\n                finally:\n                    os.close(output_file_fd)\n                os.rename(output_file_name, session_file_name)\n                renamed = True\n            finally:\n                if not renamed:\n                    os.unlink(output_file_name)\n\n        except (OSError, IOError, EOFError):\n            pass\n\n    def exists(self, session_key):\n        return os.path.exists(self._key_to_file(session_key))\n\n    def delete(self, session_key=None):\n        if session_key is None:\n            if self.session_key is None:\n                return\n            session_key = self.session_key\n        try:\n            os.unlink(self._key_to_file(session_key))\n        except OSError:\n            pass\n\n    def clean(self):\n        pass\n\n    @classmethod\n    def clear_expired(cls):\n        storage_path = cls._get_storage_path()\n        file_prefix = settings.SESSION_COOKIE_NAME\n\n        for session_file in os.listdir(storage_path):\n            if not session_file.startswith(file_prefix):\n                continue\n            session_key = session_file[len(file_prefix):]\n            session = cls(session_key)\n            # When an expired session is loaded, its file is removed, and a\n            # new file is immediately created. Prevent this by disabling\n            # the create() method.\n            session.create = lambda: None\n            session.load()\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/backends/signed_cookies.py",
    "content": "try:\n    from django.utils.six.moves import cPickle as pickle\nexcept ImportError:\n    import pickle\n\nfrom django.conf import settings\nfrom django.core import signing\n\nfrom django.contrib.sessions.backends.base import SessionBase\n\n\nclass PickleSerializer(object):\n    \"\"\"\n    Simple wrapper around pickle to be used in signing.dumps and\n    signing.loads.\n    \"\"\"\n    def dumps(self, obj):\n        return pickle.dumps(obj, pickle.HIGHEST_PROTOCOL)\n\n    def loads(self, data):\n        return pickle.loads(data)\n\n\nclass SessionStore(SessionBase):\n\n    def load(self):\n        \"\"\"\n        We load the data from the key itself instead of fetching from\n        some external data store. Opposite of _get_session_key(),\n        raises BadSignature if signature fails.\n        \"\"\"\n        try:\n            return signing.loads(self.session_key,\n                serializer=PickleSerializer,\n                # This doesn't handle non-default expiry dates, see #19201\n                max_age=settings.SESSION_COOKIE_AGE,\n                salt='django.contrib.sessions.backends.signed_cookies')\n        except (signing.BadSignature, ValueError):\n            self.create()\n        return {}\n\n    def create(self):\n        \"\"\"\n        To create a new key, we simply make sure that the modified flag is set\n        so that the cookie is set on the client for the current request.\n        \"\"\"\n        self.modified = True\n\n    def save(self, must_create=False):\n        \"\"\"\n        To save, we get the session key as a securely signed string and then\n        set the modified flag so that the cookie is set on the client for the\n        current request.\n        \"\"\"\n        self._session_key = self._get_session_key()\n        self.modified = True\n\n    def exists(self, session_key=None):\n        \"\"\"\n        This method makes sense when you're talking to a shared resource, but\n        it doesn't matter when you're storing the information in the client's\n        cookie.\n        \"\"\"\n        return False\n\n    def delete(self, session_key=None):\n        \"\"\"\n        To delete, we clear the session key and the underlying data structure\n        and set the modified flag so that the cookie is set on the client for\n        the current request.\n        \"\"\"\n        self._session_key = ''\n        self._session_cache = {}\n        self.modified = True\n\n    def cycle_key(self):\n        \"\"\"\n        Keeps the same data but with a new key.  To do this, we just have to\n        call ``save()`` and it will automatically save a cookie with a new key\n        at the end of the request.\n        \"\"\"\n        self.save()\n\n    def _get_session_key(self):\n        \"\"\"\n        Most session backends don't need to override this method, but we do,\n        because instead of generating a random string, we want to actually\n        generate a secure url-safe Base64-encoded string of data as our\n        session key.\n        \"\"\"\n        session_cache = getattr(self, '_session_cache', {})\n        return signing.dumps(session_cache, compress=True,\n            salt='django.contrib.sessions.backends.signed_cookies',\n            serializer=PickleSerializer)\n\n    @classmethod\n    def clear_expired(cls):\n        pass\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/ar/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Arabic (http://www.transifex.com/projects/p/django/language/\"\n\"ar/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ar\\n\"\n\"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 \"\n\"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"مفتاح الجلسة\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"بيانات الجلسة\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"تاريخ الانتهاء\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"جلسة\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"جلسات\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/az/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Ali Ismayilov <ali@ismailov.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Ali Ismayilov <ali@ismailov.info>\\n\"\n\"Language-Team: Azerbaijani (http://www.transifex.com/projects/p/django/\"\n\"language/az/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: az\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"seans açarı\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"seansın verilənləri\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"bitmə tarixi\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"seans\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"seanslar\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/be/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-08-11 11:08+0000\\n\"\n\"Last-Translator: Павал Клёк <yehekim@gmail.com>\\n\"\n\"Language-Team: Belarusian (http://www.transifex.com/projects/p/django/\"\n\"language/be/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: be\\n\"\n\"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"ключ сэансу\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"зьвесткі сэансу\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"тэрмін\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"сэсія\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"сэсіі\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/bg/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Bulgarian (http://www.transifex.com/projects/p/django/\"\n\"language/bg/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: bg\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"ключ на сесията\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"данни от сесията\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"дата на валидност\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"сесия\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"сесии\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/bn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Bengali (http://www.transifex.com/projects/p/django/language/\"\n\"bn/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: bn\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"সেশন কি\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"সেশন ডাটা\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"মেয়াদ শেষের তারিখ\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"সেশন\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"সেশনসমূহ\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/br/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Fulup  <fulup.jakez@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-06-29 11:09+0000\\n\"\n\"Last-Translator: Fulup <fulup.jakez@gmail.com>\\n\"\n\"Language-Team: Breton (http://www.transifex.com/projects/p/django/language/\"\n\"br/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: br\\n\"\n\"Plural-Forms: nplurals=2; plural=(n > 1);\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"dalc'h\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"dalc'hoù\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/bs/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Bosnian (http://www.transifex.com/projects/p/django/language/\"\n\"bs/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: bs\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"ključ sesije\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"podaci sesije\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"datum isteka\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"sesija\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"sesije\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/ca/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Catalan (http://www.transifex.com/projects/p/django/language/\"\n\"ca/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ca\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"clau de la sessió\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"dades de la sessió\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"data de caducitat\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"sessió\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"sessions\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/cs/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Czech (http://www.transifex.com/projects/p/django/language/\"\n\"cs/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: cs\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"klíč sezení\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"data sezení\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"datum expirace\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"sezení\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"sezení\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/cy/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Welsh (http://www.transifex.com/projects/p/django/language/\"\n\"cy/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: cy\\n\"\n\"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != \"\n\"11) ? 2 : 3;\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"goriad sesiwn\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"data sesiwn\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"dyddiad darfod\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"sesiwn\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"sesiynau\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/da/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Danish (http://www.transifex.com/projects/p/django/language/\"\n\"da/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: da\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"sessionsnøgle\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"sessionsdata\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"udløbsdato\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"session\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"sessioner\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/de/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: German (http://www.transifex.com/projects/p/django/language/\"\n\"de/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: de\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"Sitzungs-ID\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"Sitzungsdaten\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"Verfallsdatum\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"Sitzung\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"Sitzungen\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/el/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Greek (http://www.transifex.com/projects/p/django/language/\"\n\"el/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: el\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"κλειδί συνεδρίας\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"δεδομένα συνεδρίας\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"ημερομηνία λήξης\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"συνεδρία\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"συνεδρίες\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/en/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: English <en@li.org>\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: en\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"session key\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"session data\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"expire date\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"session\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"sessions\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/en_GB/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Ross Poulton <ross@rossp.org>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Ross Poulton <ross@rossp.org>\\n\"\n\"Language-Team: English (United Kingdom) (http://www.transifex.com/projects/p/\"\n\"django/language/en_GB/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: en_GB\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"session key\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"session data\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"expire date\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"session\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"sessions\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/eo/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <kristjan.schmidt@googlemail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: kristjan <kristjan.schmidt@googlemail.com>\\n\"\n\"Language-Team: Esperanto (http://www.transifex.com/projects/p/django/\"\n\"language/eo/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: eo\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"seanco-ŝlosilo\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"seanco-datumo\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"senvalidiĝ-dato\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"seanco\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"seancoj\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/es/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Spanish (http://www.transifex.com/projects/p/django/language/\"\n\"es/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: es\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"clave de sesión\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"datos de sesión\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"fecha de caducidad\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"sesión\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"sesiones\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/es_AR/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/\"\n\"django/language/es_AR/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: es_AR\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"clave de sesión\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"datos de la sesión\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"fecha de caducidad\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"sesión\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"sesiones\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/es_MX/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Abraham Estrada <abraham.estrada@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Spanish (Mexico) (http://www.transifex.com/projects/p/django/\"\n\"language/es_MX/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: es_MX\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"clave de sesión\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"datos de la sesión\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"fecha de caducidad\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"período de sesiones\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"sesiones\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/et/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Estonian (http://www.transifex.com/projects/p/django/language/\"\n\"et/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: et\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"sessioonivõti\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"sessiooni andmed\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"kehtivusaja lõpp\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"sessioon\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"sessioonid\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/eu/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Basque (http://www.transifex.com/projects/p/django/language/\"\n\"eu/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: eu\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"sesioaren giltza\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"sesioaren data\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"amaiera data\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"sesioa\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"sesioak\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/fa/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Persian (http://www.transifex.com/projects/p/django/language/\"\n\"fa/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: fa\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"کلید نشست\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"اطلاعات نشست\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"تاریخ انقضاء\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"نشست\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"نشست‌ها\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/fi/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Finnish (http://www.transifex.com/projects/p/django/language/\"\n\"fi/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: fi\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"istunnon avain\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"istunnon tiedot\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"vanhenee\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"istunto\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"istunnot\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/fr/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: French (http://www.transifex.com/projects/p/django/language/\"\n\"fr/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: fr\\n\"\n\"Plural-Forms: nplurals=2; plural=(n > 1);\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"clé de session\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"données de session\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"date d'expiration\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"session\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"sessions\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/fy_NL/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:43+0100\\n\"\n\"PO-Revision-Date: 2011-03-15 15:45+0000\\n\"\n\"Last-Translator: Django team\\n\"\n\"Language-Team: English <en@li.org>\\n\"\n\"Language: fy_NL\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1)\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/ga/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Irish (http://www.transifex.com/projects/p/django/language/\"\n\"ga/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ga\\n\"\n\"Plural-Forms: nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : \"\n\"4);\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"eochair an seisiún\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"sonraíocht an seisiún\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"Data dul as feidhm\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"seisiún\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"seisúin\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/gl/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Galician (http://www.transifex.com/projects/p/django/language/\"\n\"gl/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: gl\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"clave da sesión\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"datos da sesión\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"data de caducidade\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"sesión\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"sesións\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/he/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Hebrew (http://www.transifex.com/projects/p/django/language/\"\n\"he/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: he\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"מפתח התחברות (session key)\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"מידע התחברות (session data)\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"תאריך פג תוקף\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"התחברות\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"התחברויות\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/hi/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Sandeep Satavlekar <sandysat@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Sandeep Satavlekar <sandysat@gmail.com>\\n\"\n\"Language-Team: Hindi (http://www.transifex.com/projects/p/django/language/\"\n\"hi/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: hi\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"सत्र कुंजी\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"सत्र सामग्री\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"समाप्ति तिथी\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"सत्र\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"सत्रें\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/hr/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Croatian (http://www.transifex.com/projects/p/django/language/\"\n\"hr/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: hr\\n\"\n\"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"session ključ (key)\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"session podaci\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"ističe na datum\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"session\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"sessions\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/hu/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Hungarian (http://www.transifex.com/projects/p/django/\"\n\"language/hu/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: hu\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"munkamenet kulcs\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"munkamenet adat\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"lejárat dátuma\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"munkamenet\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"munkamenetek\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/id/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# rodin <romihardiyanto@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: rodin <romihardiyanto@gmail.com>\\n\"\n\"Language-Team: Indonesian (http://www.transifex.com/projects/p/django/\"\n\"language/id/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: id\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"kunci sesi\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"data sesi\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"tanggal kedaluwarsa\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"sesi\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"sesi\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/is/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Icelandic (http://www.transifex.com/projects/p/django/\"\n\"language/is/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: is\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"setulykill\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"setugögn\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"fyrningardagsetning\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"seta\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"setur\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/it/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Italian (http://www.transifex.com/projects/p/django/language/\"\n\"it/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: it\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"chiave di sessione\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"dati di sessione\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"data di scadenza\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"sessione\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"sessioni\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/ja/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Japanese (http://www.transifex.com/projects/p/django/language/\"\n\"ja/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ja\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"セッションキー\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"セッションデータ\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"有効期限\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"セッション\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"セッション\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/ka/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Georgian (http://www.transifex.com/projects/p/django/language/\"\n\"ka/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ka\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"სესიის გასაღები\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"სესიის მონაცემები\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"ამოწურვის თარიღი\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"სესია\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"სესიები\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/kk/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <germanilyin@gmail.com>, 2011.\n#   <zhazira.mt@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Zhazira <zhazira.mt@gmail.com>\\n\"\n\"Language-Team: Kazakh (http://www.transifex.com/projects/p/django/language/\"\n\"kk/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: kk\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"сессия кілті\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"сессия деректері\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"істен шығу уақыты\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"сессия\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"сессиялар\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/km/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: English <en@li.org>\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: km\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"លេខសំគាល់​រយះពេល​ពិនិត្យ​ចូល\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"ទិន្នន័យរយះពេល​ពិនិត្យ​ចូល\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"ហួសពេលកំណត់\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"រយះពេល​ពិនិត្យ​ចូល\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"រយះពេល​ពិនិត្យ​ចូល\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/kn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Kannada (http://www.transifex.com/projects/p/django/language/\"\n\"kn/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: kn\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"ಅಧಿವೇಶನದ ಕೀಲಿಕೈ\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"ಅಧಿವೇಶನದ ದತ್ತಾಂಶ\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"ಅವಧಿಮೀರುವ ದಿನಾಂಕ\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"ಅಧಿವೇಶನ\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"ಅಧಿವೇಶನಗಳು\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/ko/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Korean (http://www.transifex.com/projects/p/django/language/\"\n\"ko/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ko\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"세션 키\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"세션 날짜\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"유효날짜\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"세션\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"세션\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/lt/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Lithuanian (http://www.transifex.com/projects/p/django/\"\n\"language/lt/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: lt\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n\"\n\"%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"sesijos raktas\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"sesijos data\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"galiojima data\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"sesija\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"sesijos\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/lv/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Latvian (http://www.transifex.com/projects/p/django/language/\"\n\"lv/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: lv\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : \"\n\"2);\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"sesijas atslēga\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"sesijas dati\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"izbeigšanās datums\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"sesija\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"sesijas\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/mk/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Macedonian (http://www.transifex.com/projects/p/django/\"\n\"language/mk/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: mk\\n\"\n\"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"клуч на сесијата\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"податоци од сесијата\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"датум на истекување\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"сесија\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"сесии\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/ml/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Malayalam (http://www.transifex.com/projects/p/django/\"\n\"language/ml/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ml\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"സെഷന്‍ കീ\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"സെഷന്‍ വിവരം\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"കാലാവധി (തീയതി)\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"സെഷന്‍\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"സെഷനുകള്‍\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/mn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Анхбаяр Анхаа <l.ankhbayar@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Анхбаяр Анхаа <l.ankhbayar@gmail.com>\\n\"\n\"Language-Team: Mongolian (http://www.transifex.com/projects/p/django/\"\n\"language/mn/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: mn\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"session түлхүүр\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"session өгөгдөл\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"дуусах хугацаа\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"session\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"session-ууд\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/nb/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n#   <jonklo@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-03-12 14:10+0000\\n\"\n\"Last-Translator: jonklo <jonklo@gmail.com>\\n\"\n\"Language-Team: Norwegian Bokmål (http://www.transifex.com/projects/p/django/\"\n\"language/nb/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: nb\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"øktnøkkel\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"øktdata\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"utløpsdato\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"økt\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"økter\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/ne/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Paras Nath Chaudhary <opnchaudhary@gmail.com>, 2012.\n# Sagar Chalise <chalisesagar@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-09-29 04:33+0000\\n\"\n\"Last-Translator: Paras Nath Chaudhary <opnchaudhary@gmail.com>\\n\"\n\"Language-Team: Nepali (http://www.transifex.com/projects/p/django/language/\"\n\"ne/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ne\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"अवधि साँचो\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"अवधि विवरण\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"खारेज मिति\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"अवधि\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"अवधिहरु\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/nl/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Dutch (http://www.transifex.com/projects/p/django/language/\"\n\"nl/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: nl\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"sessiesleutel\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"sessiegegevens\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"verloopdatum\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"sessie\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"sessies\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/nn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Norwegian Nynorsk (http://www.transifex.com/projects/p/django/\"\n\"language/nn/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: nn\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"sesjonsnøkkel\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"sesjonsdata\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"utløpsdato\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"sesjon\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"sesjonar\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/pa/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Panjabi (Punjabi) (http://www.transifex.com/projects/p/django/\"\n\"language/pa/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: pa\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"ਸ਼ੈਸ਼ਨ ਕੁੰਜੀ\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"ਸ਼ੈਸ਼ਨ ਡਾਟਾ\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"ਮਿਆਦ ਮਿਤੀ\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"ਸ਼ੈਸ਼ਨ\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"ਸ਼ੈਸ਼ਨ\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/pl/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Polish (http://www.transifex.com/projects/p/django/language/\"\n\"pl/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: pl\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 \"\n\"|| n%100>=20) ? 1 : 2);\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"klucz sesji\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"data sesji\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"data wygaśnięcia sesji\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"sesja\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"sesje\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/pt/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Portuguese (http://www.transifex.com/projects/p/django/\"\n\"language/pt/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: pt\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"chave da sessão\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"dados da sessão\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"data de expiração\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"sessão\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"sessões\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/pt_BR/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Portuguese (Brazil) <django-l10n-portuguese@googlegroups.\"\n\"com>\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: pt_BR\\n\"\n\"Plural-Forms: nplurals=2; plural=(n > 1);\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"chave da sessão\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"dados da sessão\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"data de expiração\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"sessão\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"sessões\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/ro/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Daniel Ursache-Dogariu <contact@danniel.net>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Daniel Ursache-Dogariu <contact@danniel.net>\\n\"\n\"Language-Team: Romanian (http://www.transifex.com/projects/p/django/language/\"\n\"ro/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ro\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?\"\n\"2:1));\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"cheie sesiune\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"date sesiune\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"dată expirare\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"sesiune\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"sesiuni\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/ru/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Russian (http://www.transifex.com/projects/p/django/language/\"\n\"ru/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ru\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"ключ сессии\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"данные сессии\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"дата окончания\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"сессия\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"сессии\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/sk/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Slovak (http://www.transifex.com/projects/p/django/language/\"\n\"sk/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sk\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"kľúč relácie\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"údaje relácie\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"dátum vypršania platnosti\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"relácia\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"relácie\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/sl/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-10-31 19:46+0000\\n\"\n\"Last-Translator: mateju <>\\n\"\n\"Language-Team: Slovenian (http://www.transifex.com/projects/p/django/\"\n\"language/sl/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sl\\n\"\n\"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n\"\n\"%100==4 ? 2 : 3);\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"ključ seje\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"podatki seje\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"čas preteka\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"seja\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"seje\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/sq/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Besnik <besnik@programeshqip.org>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Albanian (http://www.transifex.com/projects/p/django/language/\"\n\"sq/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sq\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"kyç sesioni\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"të dhëna sesioni\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"datë skadimi\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"sesion\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"sesione\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/sr/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Serbian (http://www.transifex.com/projects/p/django/language/\"\n\"sr/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sr\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"кључ сесије\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"подаци сесије\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"датум застаревања\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"сесија\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"сесије\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/sr_Latn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/django/\"\n\"language/sr@latin/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sr@latin\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"ključ sesije\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"podaci sesije\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"datum zastarevanja\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"sesija\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"sesije\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/sv/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Swedish (http://www.transifex.com/projects/p/django/language/\"\n\"sv/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sv\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"sessionsnyckel\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"sessionsdata\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"utgångsdatum\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"session\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"sessioner\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/sw/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-03-09 19:39+0000\\n\"\n\"Last-Translator: machaku <bmachaku@gmail.com>\\n\"\n\"Language-Team: Swahili (http://www.transifex.com/projects/p/django/language/\"\n\"sw/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sw\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"ufunguo wa kipindi\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"data za kipindi\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"tarehe ya mwisho ya matumizi\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"kipindi\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"vipindi\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/ta/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Tamil (http://www.transifex.com/projects/p/django/language/\"\n\"ta/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ta\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"அமர்வு குறியீ\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"அமர்வு தகவல்\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"காலாவதியாகும் தேதி\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"அமர்வு\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"அமர்வுகள்\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/te/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# bhaskar teja yerneni <prudhviy@gmail.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: bhaskar teja yerneni <prudhviy@gmail.com>\\n\"\n\"Language-Team: Telugu (http://www.transifex.com/projects/p/django/language/\"\n\"te/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: te\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"భాగము తాళంచెవి\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"భాగము దత్తం\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"కాలం చెల్లు తేది.\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"భాగము\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"భాగములు\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/th/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Thai (http://www.transifex.com/projects/p/django/language/\"\n\"th/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: th\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"เซสชันคีย์\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"ข้อมูลเซสชัน\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"วันหมดอายุ\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"เซสชัน\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"เซสชัน\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/tr/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Turkish (http://www.transifex.com/projects/p/django/language/\"\n\"tr/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: tr\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"oturum anahtarı\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"oturum bilgisi\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"bitiş tarihi\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"oturum\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"oturumlar\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/tt/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Azat Khasanshin <lordofbazuks@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Azat Khasanshin <lordofbazuks@gmail.com>\\n\"\n\"Language-Team: Tatar (http://www.transifex.com/projects/p/django/language/\"\n\"tt/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: tt\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"эш сеансы ачкычы\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"эш сеансы бирелмәләре\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"искерү көне\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"эш сеансы\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"эш сеанслары\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/uk/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Ukrainian (http://www.transifex.com/projects/p/django/\"\n\"language/uk/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: uk\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"ключ сесії\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"дані сесії\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"термін придатності\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"сесія\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"сесії\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/ur/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Mansoorulhaq Mansoor <mansoorulhaq1986@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Mansoorulhaq Mansoor <mansoorulhaq1986@gmail.com>\\n\"\n\"Language-Team: Urdu (http://www.transifex.com/projects/p/django/language/\"\n\"ur/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ur\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"کلید نشست\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"نشست کا ڈیٹا\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"مدت ختم ھونے کی تاریخ\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"نشست\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"نشستیں\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/vi/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Tran Van <vantxm@yahoo.co.uk>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Tran Van <vantxm@yahoo.co.uk>\\n\"\n\"Language-Team: Vietnamese (http://www.transifex.com/projects/p/django/\"\n\"language/vi/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: vi\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"Mã phiên\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"Dữ liệu phiên\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"Ngày hết hạn\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"Phiên\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"Phiên\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/zh_CN/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/django/\"\n\"language/zh_CN/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: zh_CN\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"会话密钥\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"会话数据\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"过期时间\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"会话\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"会话\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/locale/zh_TW/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:40+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/django/\"\n\"language/zh_TW/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: zh_TW\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: models.py:38\nmsgid \"session key\"\nmsgstr \"session 鍵值\"\n\n#: models.py:40\nmsgid \"session data\"\nmsgstr \"session 資料\"\n\n#: models.py:41\nmsgid \"expire date\"\nmsgstr \"到期日期\"\n\n#: models.py:46\nmsgid \"session\"\nmsgstr \"session\"\n\n#: models.py:47\nmsgid \"sessions\"\nmsgstr \"sessions\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/management/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/management/commands/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/management/commands/clearsessions.py",
    "content": "from django.conf import settings\nfrom django.core.management.base import NoArgsCommand\nfrom django.utils.importlib import import_module\n\n\nclass Command(NoArgsCommand):\n    help = \"Can be run as a cronjob or directly to clean out expired sessions (only with the database backend at the moment).\"\n\n    def handle_noargs(self, **options):\n        engine = import_module(settings.SESSION_ENGINE)\n        try:\n            engine.SessionStore.clear_expired()\n        except NotImplementedError:\n            self.stderr.write(\"Session engine '%s' doesn't support clearing \"\n                              \"expired sessions.\\n\" % settings.SESSION_ENGINE)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/middleware.py",
    "content": "import time\n\nfrom django.conf import settings\nfrom django.utils.cache import patch_vary_headers\nfrom django.utils.http import cookie_date\nfrom django.utils.importlib import import_module\n\nclass SessionMiddleware(object):\n    def process_request(self, request):\n        engine = import_module(settings.SESSION_ENGINE)\n        session_key = request.COOKIES.get(settings.SESSION_COOKIE_NAME, None)\n        request.session = engine.SessionStore(session_key)\n\n    def process_response(self, request, response):\n        \"\"\"\n        If request.session was modified, or if the configuration is to save the\n        session every time, save the changes and set a session cookie.\n        \"\"\"\n        try:\n            accessed = request.session.accessed\n            modified = request.session.modified\n        except AttributeError:\n            pass\n        else:\n            if accessed:\n                patch_vary_headers(response, ('Cookie',))\n            if modified or settings.SESSION_SAVE_EVERY_REQUEST:\n                if request.session.get_expire_at_browser_close():\n                    max_age = None\n                    expires = None\n                else:\n                    max_age = request.session.get_expiry_age()\n                    expires_time = time.time() + max_age\n                    expires = cookie_date(expires_time)\n                # Save the session data and refresh the client cookie.\n                # Skip session save for 500 responses, refs #3881.\n                if response.status_code != 500:\n                    request.session.save()\n                    response.set_cookie(settings.SESSION_COOKIE_NAME,\n                            request.session.session_key, max_age=max_age,\n                            expires=expires, domain=settings.SESSION_COOKIE_DOMAIN,\n                            path=settings.SESSION_COOKIE_PATH,\n                            secure=settings.SESSION_COOKIE_SECURE or None,\n                            httponly=settings.SESSION_COOKIE_HTTPONLY or None)\n        return response\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/models.py",
    "content": "from django.db import models\nfrom django.utils.translation import ugettext_lazy as _\n\n\nclass SessionManager(models.Manager):\n    def encode(self, session_dict):\n        \"\"\"\n        Returns the given session dictionary pickled and encoded as a string.\n        \"\"\"\n        return SessionStore().encode(session_dict)\n\n    def save(self, session_key, session_dict, expire_date):\n        s = self.model(session_key, self.encode(session_dict), expire_date)\n        if session_dict:\n            s.save()\n        else:\n            s.delete() # Clear sessions with no data.\n        return s\n\n\nclass Session(models.Model):\n    \"\"\"\n    Django provides full support for anonymous sessions. The session\n    framework lets you store and retrieve arbitrary data on a\n    per-site-visitor basis. It stores data on the server side and\n    abstracts the sending and receiving of cookies. Cookies contain a\n    session ID -- not the data itself.\n\n    The Django sessions framework is entirely cookie-based. It does\n    not fall back to putting session IDs in URLs. This is an intentional\n    design decision. Not only does that behavior make URLs ugly, it makes\n    your site vulnerable to session-ID theft via the \"Referer\" header.\n\n    For complete documentation on using Sessions in your code, consult\n    the sessions documentation that is shipped with Django (also available\n    on the Django Web site).\n    \"\"\"\n    session_key = models.CharField(_('session key'), max_length=40,\n                                   primary_key=True)\n    session_data = models.TextField(_('session data'))\n    expire_date = models.DateTimeField(_('expire date'), db_index=True)\n    objects = SessionManager()\n\n    class Meta:\n        db_table = 'django_session'\n        verbose_name = _('session')\n        verbose_name_plural = _('sessions')\n\n    def get_decoded(self):\n        return SessionStore().decode(self.session_data)\n\n\n# At bottom to avoid circular import\nfrom django.contrib.sessions.backends.db import SessionStore\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sessions/tests.py",
    "content": "from datetime import timedelta\nimport os\nimport shutil\nimport string\nimport tempfile\nimport warnings\n\nfrom django.conf import settings\nfrom django.contrib.sessions.backends.db import SessionStore as DatabaseSession\nfrom django.contrib.sessions.backends.cache import SessionStore as CacheSession\nfrom django.contrib.sessions.backends.cached_db import SessionStore as CacheDBSession\nfrom django.contrib.sessions.backends.file import SessionStore as FileSession\nfrom django.contrib.sessions.backends.signed_cookies import SessionStore as CookieSession\nfrom django.contrib.sessions.models import Session\nfrom django.contrib.sessions.middleware import SessionMiddleware\nfrom django.core.cache import get_cache\nfrom django.core import management\nfrom django.core.exceptions import ImproperlyConfigured, SuspiciousOperation\nfrom django.http import HttpResponse\nfrom django.test import TestCase, RequestFactory\nfrom django.test.utils import override_settings\nfrom django.utils import six\nfrom django.utils import timezone\nfrom django.utils import unittest\n\n\nclass SessionTestsMixin(object):\n    # This does not inherit from TestCase to avoid any tests being run with this\n    # class, which wouldn't work, and to allow different TestCase subclasses to\n    # be used.\n\n    backend = None  # subclasses must specify\n\n    def setUp(self):\n        self.session = self.backend()\n\n    def tearDown(self):\n        # NB: be careful to delete any sessions created; stale sessions fill up\n        # the /tmp (with some backends) and eventually overwhelm it after lots\n        # of runs (think buildbots)\n        self.session.delete()\n\n    def test_new_session(self):\n        self.assertFalse(self.session.modified)\n        self.assertFalse(self.session.accessed)\n\n    def test_get_empty(self):\n        self.assertEqual(self.session.get('cat'), None)\n\n    def test_store(self):\n        self.session['cat'] = \"dog\"\n        self.assertTrue(self.session.modified)\n        self.assertEqual(self.session.pop('cat'), 'dog')\n\n    def test_pop(self):\n        self.session['some key'] = 'exists'\n        # Need to reset these to pretend we haven't accessed it:\n        self.accessed = False\n        self.modified = False\n\n        self.assertEqual(self.session.pop('some key'), 'exists')\n        self.assertTrue(self.session.accessed)\n        self.assertTrue(self.session.modified)\n        self.assertEqual(self.session.get('some key'), None)\n\n    def test_pop_default(self):\n        self.assertEqual(self.session.pop('some key', 'does not exist'),\n                         'does not exist')\n        self.assertTrue(self.session.accessed)\n        self.assertFalse(self.session.modified)\n\n    def test_setdefault(self):\n        self.assertEqual(self.session.setdefault('foo', 'bar'), 'bar')\n        self.assertEqual(self.session.setdefault('foo', 'baz'), 'bar')\n        self.assertTrue(self.session.accessed)\n        self.assertTrue(self.session.modified)\n\n    def test_update(self):\n        self.session.update({'update key': 1})\n        self.assertTrue(self.session.accessed)\n        self.assertTrue(self.session.modified)\n        self.assertEqual(self.session.get('update key', None), 1)\n\n    def test_has_key(self):\n        self.session['some key'] = 1\n        self.session.modified = False\n        self.session.accessed = False\n        self.assertIn('some key', self.session)\n        self.assertTrue(self.session.accessed)\n        self.assertFalse(self.session.modified)\n\n    def test_values(self):\n        self.assertEqual(list(self.session.values()), [])\n        self.assertTrue(self.session.accessed)\n        self.session['some key'] = 1\n        self.assertEqual(list(self.session.values()), [1])\n\n    def test_iterkeys(self):\n        self.session['x'] = 1\n        self.session.modified = False\n        self.session.accessed = False\n        i = six.iterkeys(self.session)\n        self.assertTrue(hasattr(i, '__iter__'))\n        self.assertTrue(self.session.accessed)\n        self.assertFalse(self.session.modified)\n        self.assertEqual(list(i), ['x'])\n\n    def test_itervalues(self):\n        self.session['x'] = 1\n        self.session.modified = False\n        self.session.accessed = False\n        i = six.itervalues(self.session)\n        self.assertTrue(hasattr(i, '__iter__'))\n        self.assertTrue(self.session.accessed)\n        self.assertFalse(self.session.modified)\n        self.assertEqual(list(i), [1])\n\n    def test_iteritems(self):\n        self.session['x'] = 1\n        self.session.modified = False\n        self.session.accessed = False\n        i = six.iteritems(self.session)\n        self.assertTrue(hasattr(i, '__iter__'))\n        self.assertTrue(self.session.accessed)\n        self.assertFalse(self.session.modified)\n        self.assertEqual(list(i), [('x', 1)])\n\n    def test_clear(self):\n        self.session['x'] = 1\n        self.session.modified = False\n        self.session.accessed = False\n        self.assertEqual(list(self.session.items()), [('x', 1)])\n        self.session.clear()\n        self.assertEqual(list(self.session.items()), [])\n        self.assertTrue(self.session.accessed)\n        self.assertTrue(self.session.modified)\n\n    def test_save(self):\n        if (hasattr(self.session, '_cache') and'DummyCache' in\n            settings.CACHES[settings.SESSION_CACHE_ALIAS]['BACKEND']):\n            raise unittest.SkipTest(\"Session saving tests require a real cache backend\")\n        self.session.save()\n        self.assertTrue(self.session.exists(self.session.session_key))\n\n    def test_delete(self):\n        self.session.save()\n        self.session.delete(self.session.session_key)\n        self.assertFalse(self.session.exists(self.session.session_key))\n\n    def test_flush(self):\n        self.session['foo'] = 'bar'\n        self.session.save()\n        prev_key = self.session.session_key\n        self.session.flush()\n        self.assertFalse(self.session.exists(prev_key))\n        self.assertNotEqual(self.session.session_key, prev_key)\n        self.assertTrue(self.session.modified)\n        self.assertTrue(self.session.accessed)\n\n    def test_cycle(self):\n        self.session['a'], self.session['b'] = 'c', 'd'\n        self.session.save()\n        prev_key = self.session.session_key\n        prev_data = list(self.session.items())\n        self.session.cycle_key()\n        self.assertNotEqual(self.session.session_key, prev_key)\n        self.assertEqual(list(self.session.items()), prev_data)\n\n    def test_invalid_key(self):\n        # Submitting an invalid session key (either by guessing, or if the db has\n        # removed the key) results in a new key being generated.\n        try:\n            session = self.backend('1')\n            try:\n                session.save()\n            except AttributeError:\n                self.fail(\"The session object did not save properly.  Middleware may be saving cache items without namespaces.\")\n            self.assertNotEqual(session.session_key, '1')\n            self.assertEqual(session.get('cat'), None)\n            session.delete()\n        finally:\n            # Some backends leave a stale cache entry for the invalid\n            # session key; make sure that entry is manually deleted\n            session.delete('1')\n\n    def test_session_key_is_read_only(self):\n        def set_session_key(session):\n            session.session_key = session._get_new_session_key()\n        self.assertRaises(AttributeError, set_session_key, self.session)\n\n    # Custom session expiry\n    def test_default_expiry(self):\n        # A normal session has a max age equal to settings\n        self.assertEqual(self.session.get_expiry_age(), settings.SESSION_COOKIE_AGE)\n\n        # So does a custom session with an idle expiration time of 0 (but it'll\n        # expire at browser close)\n        self.session.set_expiry(0)\n        self.assertEqual(self.session.get_expiry_age(), settings.SESSION_COOKIE_AGE)\n\n    def test_custom_expiry_seconds(self):\n        modification = timezone.now()\n\n        self.session.set_expiry(10)\n\n        date = self.session.get_expiry_date(modification=modification)\n        self.assertEqual(date, modification + timedelta(seconds=10))\n\n        age = self.session.get_expiry_age(modification=modification)\n        self.assertEqual(age, 10)\n\n    def test_custom_expiry_timedelta(self):\n        modification = timezone.now()\n\n        # Mock timezone.now, because set_expiry calls it on this code path.\n        original_now = timezone.now\n        try:\n            timezone.now = lambda: modification\n            self.session.set_expiry(timedelta(seconds=10))\n        finally:\n            timezone.now = original_now\n\n        date = self.session.get_expiry_date(modification=modification)\n        self.assertEqual(date, modification + timedelta(seconds=10))\n\n        age = self.session.get_expiry_age(modification=modification)\n        self.assertEqual(age, 10)\n\n    def test_custom_expiry_datetime(self):\n        modification = timezone.now()\n\n        self.session.set_expiry(modification + timedelta(seconds=10))\n\n        date = self.session.get_expiry_date(modification=modification)\n        self.assertEqual(date, modification + timedelta(seconds=10))\n\n        age = self.session.get_expiry_age(modification=modification)\n        self.assertEqual(age, 10)\n\n    def test_custom_expiry_reset(self):\n        self.session.set_expiry(None)\n        self.session.set_expiry(10)\n        self.session.set_expiry(None)\n        self.assertEqual(self.session.get_expiry_age(), settings.SESSION_COOKIE_AGE)\n\n    def test_get_expire_at_browser_close(self):\n        # Tests get_expire_at_browser_close with different settings and different\n        # set_expiry calls\n        with override_settings(SESSION_EXPIRE_AT_BROWSER_CLOSE=False):\n            self.session.set_expiry(10)\n            self.assertFalse(self.session.get_expire_at_browser_close())\n\n            self.session.set_expiry(0)\n            self.assertTrue(self.session.get_expire_at_browser_close())\n\n            self.session.set_expiry(None)\n            self.assertFalse(self.session.get_expire_at_browser_close())\n\n        with override_settings(SESSION_EXPIRE_AT_BROWSER_CLOSE=True):\n            self.session.set_expiry(10)\n            self.assertFalse(self.session.get_expire_at_browser_close())\n\n            self.session.set_expiry(0)\n            self.assertTrue(self.session.get_expire_at_browser_close())\n\n            self.session.set_expiry(None)\n            self.assertTrue(self.session.get_expire_at_browser_close())\n\n    def test_decode(self):\n        # Ensure we can decode what we encode\n        data = {'a test key': 'a test value'}\n        encoded = self.session.encode(data)\n        self.assertEqual(self.session.decode(encoded), data)\n\n    def test_actual_expiry(self):\n        # Regression test for #19200\n        old_session_key = None\n        new_session_key = None\n        try:\n            self.session['foo'] = 'bar'\n            self.session.set_expiry(-timedelta(seconds=10))\n            self.session.save()\n            old_session_key = self.session.session_key\n            # With an expiry date in the past, the session expires instantly.\n            new_session = self.backend(self.session.session_key)\n            new_session_key = new_session.session_key\n            self.assertNotIn('foo', new_session)\n        finally:\n            self.session.delete(old_session_key)\n            self.session.delete(new_session_key)\n\n\nclass DatabaseSessionTests(SessionTestsMixin, TestCase):\n\n    backend = DatabaseSession\n\n    def test_session_get_decoded(self):\n        \"\"\"\n        Test we can use Session.get_decoded to retrieve data stored\n        in normal way\n        \"\"\"\n        self.session['x'] = 1\n        self.session.save()\n\n        s = Session.objects.get(session_key=self.session.session_key)\n\n        self.assertEqual(s.get_decoded(), {'x': 1})\n\n    def test_sessionmanager_save(self):\n        \"\"\"\n        Test SessionManager.save method\n        \"\"\"\n        # Create a session\n        self.session['y'] = 1\n        self.session.save()\n\n        s = Session.objects.get(session_key=self.session.session_key)\n        # Change it\n        Session.objects.save(s.session_key, {'y': 2}, s.expire_date)\n        # Clear cache, so that it will be retrieved from DB\n        del self.session._session_cache\n        self.assertEqual(self.session['y'], 2)\n\n    @override_settings(SESSION_ENGINE=\"django.contrib.sessions.backends.db\")\n    def test_clearsessions_command(self):\n        \"\"\"\n        Test clearsessions command for clearing expired sessions.\n        \"\"\"\n        self.assertEqual(0, Session.objects.count())\n\n        # One object in the future\n        self.session['foo'] = 'bar'\n        self.session.set_expiry(3600)\n        self.session.save()\n\n        # One object in the past\n        other_session = self.backend()\n        other_session['foo'] = 'bar'\n        other_session.set_expiry(-3600)\n        other_session.save()\n\n        # Two sessions are in the database before clearsessions...\n        self.assertEqual(2, Session.objects.count())\n        management.call_command('clearsessions')\n        # ... and one is deleted.\n        self.assertEqual(1, Session.objects.count())\n\n\n@override_settings(USE_TZ=True)\nclass DatabaseSessionWithTimeZoneTests(DatabaseSessionTests):\n    pass\n\n\nclass CacheDBSessionTests(SessionTestsMixin, TestCase):\n\n    backend = CacheDBSession\n\n    @unittest.skipIf('DummyCache' in\n        settings.CACHES[settings.SESSION_CACHE_ALIAS]['BACKEND'],\n        \"Session saving tests require a real cache backend\")\n    def test_exists_searches_cache_first(self):\n        self.session.save()\n        with self.assertNumQueries(0):\n            self.assertTrue(self.session.exists(self.session.session_key))\n\n    def test_load_overlong_key(self):\n        # Some backends might issue a warning\n        with warnings.catch_warnings():\n            warnings.simplefilter(\"ignore\")\n            self.session._session_key = (string.ascii_letters + string.digits) * 20\n            self.assertEqual(self.session.load(), {})\n\n\n@override_settings(USE_TZ=True)\nclass CacheDBSessionWithTimeZoneTests(CacheDBSessionTests):\n    pass\n\n\n# Don't need DB flushing for these tests, so can use unittest.TestCase as base class\nclass FileSessionTests(SessionTestsMixin, unittest.TestCase):\n\n    backend = FileSession\n\n    def setUp(self):\n        # Do file session tests in an isolated directory, and kill it after we're done.\n        self.original_session_file_path = settings.SESSION_FILE_PATH\n        self.temp_session_store = settings.SESSION_FILE_PATH = tempfile.mkdtemp()\n        # Reset the file session backend's internal caches\n        if hasattr(self.backend, '_storage_path'):\n            del self.backend._storage_path\n        super(FileSessionTests, self).setUp()\n\n    def tearDown(self):\n        super(FileSessionTests, self).tearDown()\n        settings.SESSION_FILE_PATH = self.original_session_file_path\n        shutil.rmtree(self.temp_session_store)\n\n    @override_settings(\n        SESSION_FILE_PATH=\"/if/this/directory/exists/you/have/a/weird/computer\")\n    def test_configuration_check(self):\n        del self.backend._storage_path\n        # Make sure the file backend checks for a good storage dir\n        self.assertRaises(ImproperlyConfigured, self.backend)\n\n    def test_invalid_key_backslash(self):\n        # Ensure we don't allow directory-traversal\n        self.assertRaises(SuspiciousOperation,\n                          self.backend(\"a\\\\b\\\\c\").load)\n\n    def test_invalid_key_forwardslash(self):\n        # Ensure we don't allow directory-traversal\n        self.assertRaises(SuspiciousOperation,\n                          self.backend(\"a/b/c\").load)\n\n    @override_settings(SESSION_ENGINE=\"django.contrib.sessions.backends.file\")\n    def test_clearsessions_command(self):\n        \"\"\"\n        Test clearsessions command for clearing expired sessions.\n        \"\"\"\n        storage_path = self.backend._get_storage_path()\n        file_prefix = settings.SESSION_COOKIE_NAME\n\n        def count_sessions():\n            return len([session_file for session_file in os.listdir(storage_path)\n                                     if session_file.startswith(file_prefix)])\n\n        self.assertEqual(0, count_sessions())\n\n        # One object in the future\n        self.session['foo'] = 'bar'\n        self.session.set_expiry(3600)\n        self.session.save()\n\n        # One object in the past\n        other_session = self.backend()\n        other_session['foo'] = 'bar'\n        other_session.set_expiry(-3600)\n        other_session.save()\n\n        # Two sessions are in the filesystem before clearsessions...\n        self.assertEqual(2, count_sessions())\n        management.call_command('clearsessions')\n        # ... and one is deleted.\n        self.assertEqual(1, count_sessions())\n\n\nclass CacheSessionTests(SessionTestsMixin, unittest.TestCase):\n\n    backend = CacheSession\n\n    def test_load_overlong_key(self):\n        # Some backends might issue a warning\n        with warnings.catch_warnings():\n            warnings.simplefilter(\"ignore\")\n            self.session._session_key = (string.ascii_letters + string.digits) * 20\n            self.assertEqual(self.session.load(), {})\n\n    def test_default_cache(self):\n        self.session.save()\n        self.assertNotEqual(get_cache('default').get(self.session.cache_key), None)\n\n    @override_settings(CACHES={\n        'default': {\n            'BACKEND': 'django.core.cache.backends.dummy.DummyCache',\n        },\n        'sessions': {\n            'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',\n        },\n    }, SESSION_CACHE_ALIAS='sessions')\n    def test_non_default_cache(self):\n        self.session.save()\n        self.assertEqual(get_cache('default').get(self.session.cache_key), None)\n        self.assertNotEqual(get_cache('sessions').get(self.session.cache_key), None)\n\n\nclass SessionMiddlewareTests(unittest.TestCase):\n\n    @override_settings(SESSION_COOKIE_SECURE=True)\n    def test_secure_session_cookie(self):\n        request = RequestFactory().get('/')\n        response = HttpResponse('Session test')\n        middleware = SessionMiddleware()\n\n        # Simulate a request the modifies the session\n        middleware.process_request(request)\n        request.session['hello'] = 'world'\n\n        # Handle the response through the middleware\n        response = middleware.process_response(request, response)\n        self.assertTrue(\n            response.cookies[settings.SESSION_COOKIE_NAME]['secure'])\n\n    @override_settings(SESSION_COOKIE_HTTPONLY=True)\n    def test_httponly_session_cookie(self):\n        request = RequestFactory().get('/')\n        response = HttpResponse('Session test')\n        middleware = SessionMiddleware()\n\n        # Simulate a request the modifies the session\n        middleware.process_request(request)\n        request.session['hello'] = 'world'\n\n        # Handle the response through the middleware\n        response = middleware.process_response(request, response)\n        self.assertTrue(\n            response.cookies[settings.SESSION_COOKIE_NAME]['httponly'])\n        self.assertIn('httponly',\n            str(response.cookies[settings.SESSION_COOKIE_NAME]))\n\n    @override_settings(SESSION_COOKIE_HTTPONLY=False)\n    def test_no_httponly_session_cookie(self):\n        request = RequestFactory().get('/')\n        response = HttpResponse('Session test')\n        middleware = SessionMiddleware()\n\n        # Simulate a request the modifies the session\n        middleware.process_request(request)\n        request.session['hello'] = 'world'\n\n        # Handle the response through the middleware\n        response = middleware.process_response(request, response)\n        self.assertFalse(response.cookies[settings.SESSION_COOKIE_NAME]['httponly'])\n\n        self.assertNotIn('httponly',\n                         str(response.cookies[settings.SESSION_COOKIE_NAME]))\n\n    def test_session_save_on_500(self):\n        request = RequestFactory().get('/')\n        response = HttpResponse('Horrible error')\n        response.status_code = 500\n        middleware = SessionMiddleware()\n\n        # Simulate a request the modifies the session\n        middleware.process_request(request)\n        request.session['hello'] = 'world'\n\n        # Handle the response through the middleware\n        response = middleware.process_response(request, response)\n\n        # Check that the value wasn't saved above.\n        self.assertNotIn('hello', request.session.load())\n\n\nclass CookieSessionTests(SessionTestsMixin, TestCase):\n\n    backend = CookieSession\n\n    def test_save(self):\n        \"\"\"\n        This test tested exists() in the other session backends, but that\n        doesn't make sense for us.\n        \"\"\"\n        pass\n\n    def test_cycle(self):\n        \"\"\"\n        This test tested cycle_key() which would create a new session\n        key for the same session data. But we can't invalidate previously\n        signed cookies (other than letting them expire naturally) so\n        testing for this behavior is meaningless.\n        \"\"\"\n        pass\n\n    @unittest.expectedFailure\n    def test_actual_expiry(self):\n        # The cookie backend doesn't handle non-default expiry dates, see #19201\n        super(CookieSessionTests, self).test_actual_expiry()\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sitemaps/__init__.py",
    "content": "from django.contrib.sites.models import Site\nfrom django.core import urlresolvers, paginator\nfrom django.core.exceptions import ImproperlyConfigured\ntry:\n    from urllib.parse import urlencode\n    from urllib.request import urlopen\nexcept ImportError:     # Python 2\n    from urllib import urlencode, urlopen\n\nPING_URL = \"http://www.google.com/webmasters/tools/ping\"\n\nclass SitemapNotFound(Exception):\n    pass\n\ndef ping_google(sitemap_url=None, ping_url=PING_URL):\n    \"\"\"\n    Alerts Google that the sitemap for the current site has been updated.\n    If sitemap_url is provided, it should be an absolute path to the sitemap\n    for this site -- e.g., '/sitemap.xml'. If sitemap_url is not provided, this\n    function will attempt to deduce it by using urlresolvers.reverse().\n    \"\"\"\n    if sitemap_url is None:\n        try:\n            # First, try to get the \"index\" sitemap URL.\n            sitemap_url = urlresolvers.reverse('django.contrib.sitemaps.views.index')\n        except urlresolvers.NoReverseMatch:\n            try:\n                # Next, try for the \"global\" sitemap URL.\n                sitemap_url = urlresolvers.reverse('django.contrib.sitemaps.views.sitemap')\n            except urlresolvers.NoReverseMatch:\n                pass\n\n    if sitemap_url is None:\n        raise SitemapNotFound(\"You didn't provide a sitemap_url, and the sitemap URL couldn't be auto-detected.\")\n\n    from django.contrib.sites.models import Site\n    current_site = Site.objects.get_current()\n    url = \"http://%s%s\" % (current_site.domain, sitemap_url)\n    params = urlencode({'sitemap':url})\n    urlopen(\"%s?%s\" % (ping_url, params))\n\nclass Sitemap(object):\n    # This limit is defined by Google. See the index documentation at\n    # http://sitemaps.org/protocol.php#index.\n    limit = 50000\n\n    # If protocol is None, the URLs in the sitemap will use the protocol\n    # with which the sitemap was requested.\n    protocol = None\n\n    def __get(self, name, obj, default=None):\n        try:\n            attr = getattr(self, name)\n        except AttributeError:\n            return default\n        if callable(attr):\n            return attr(obj)\n        return attr\n\n    def items(self):\n        return []\n\n    def location(self, obj):\n        return obj.get_absolute_url()\n\n    def _get_paginator(self):\n        return paginator.Paginator(self.items(), self.limit)\n    paginator = property(_get_paginator)\n\n    def get_urls(self, page=1, site=None, protocol=None):\n        # Determine protocol\n        if self.protocol is not None:\n            protocol = self.protocol\n        if protocol is None:\n            protocol = 'http'\n\n        # Determine domain\n        if site is None:\n            if Site._meta.installed:\n                try:\n                    site = Site.objects.get_current()\n                except Site.DoesNotExist:\n                    pass\n            if site is None:\n                raise ImproperlyConfigured(\"To use sitemaps, either enable the sites framework or pass a Site/RequestSite object in your view.\")\n        domain = site.domain\n\n        urls = []\n        for item in self.paginator.page(page).object_list:\n            loc = \"%s://%s%s\" % (protocol, domain, self.__get('location', item))\n            priority = self.__get('priority', item, None)\n            url_info = {\n                'item':       item,\n                'location':   loc,\n                'lastmod':    self.__get('lastmod', item, None),\n                'changefreq': self.__get('changefreq', item, None),\n                'priority':   str(priority is not None and priority or ''),\n            }\n            urls.append(url_info)\n        return urls\n\nclass FlatPageSitemap(Sitemap):\n    def items(self):\n        current_site = Site.objects.get_current()\n        return current_site.flatpage_set.filter(registration_required=False)\n\nclass GenericSitemap(Sitemap):\n    priority = None\n    changefreq = None\n\n    def __init__(self, info_dict, priority=None, changefreq=None):\n        self.queryset = info_dict['queryset']\n        self.date_field = info_dict.get('date_field', None)\n        self.priority = priority\n        self.changefreq = changefreq\n\n    def items(self):\n        # Make sure to return a clone; we don't want premature evaluation.\n        return self.queryset.filter()\n\n    def lastmod(self, item):\n        if self.date_field is not None:\n            return getattr(item, self.date_field)\n        return None\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sitemaps/management/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/sitemaps/management/commands/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/sitemaps/management/commands/ping_google.py",
    "content": "from django.core.management.base import BaseCommand\nfrom django.contrib.sitemaps import ping_google\n\n\nclass Command(BaseCommand):\n    help = \"Ping Google with an updated sitemap, pass optional url of sitemap\"\n\n    def execute(self, *args, **options):\n        if len(args) == 1:\n            sitemap_url = args[0]\n        else:\n            sitemap_url = None\n        ping_google(sitemap_url=sitemap_url)\n\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sitemaps/models.py",
    "content": "# This file intentionally left blank"
  },
  {
    "path": "Django-1.5.1/django/contrib/sitemaps/templates/sitemap.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n{% spaceless %}\n{% for url in urlset %}\n  <url>\n    <loc>{{ url.location }}</loc>\n    {% if url.lastmod %}<lastmod>{{ url.lastmod|date:\"Y-m-d\" }}</lastmod>{% endif %}\n    {% if url.changefreq %}<changefreq>{{ url.changefreq }}</changefreq>{% endif %}\n    {% if url.priority %}<priority>{{ url.priority }}</priority>{% endif %}\n   </url>\n{% endfor %}\n{% endspaceless %}\n</urlset>\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sitemaps/templates/sitemap_index.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<sitemapindex xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n{% for location in sitemaps %}<sitemap><loc>{{ location }}</loc></sitemap>{% endfor %}\n</sitemapindex>\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sitemaps/tests/__init__.py",
    "content": "from .flatpages import FlatpagesSitemapTests\nfrom .generic import GenericViewsSitemapTests\nfrom .http import HTTPSitemapTests\nfrom .https import HTTPSSitemapTests, HTTPSDetectionSitemapTests\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sitemaps/tests/base.py",
    "content": "from django.contrib.auth.models import User\nfrom django.contrib.sites.models import Site\nfrom django.core.cache import cache\nfrom django.db import models\nfrom django.test import TestCase\n\n\nclass TestModel(models.Model):\n    \"A test model for \"\n    name = models.CharField(max_length=100)\n\n    class Meta:\n        app_label = 'sitemaps'\n\n    def __unicode__(self):\n        return self.name\n\n    def get_absolute_url(self):\n        return '/testmodel/%s/' % self.id\n\n\nclass SitemapTestsBase(TestCase):\n    protocol = 'http'\n    domain = 'example.com' if Site._meta.installed else 'testserver'\n    urls = 'django.contrib.sitemaps.tests.urls.http'\n\n    def setUp(self):\n        self.base_url = '%s://%s' % (self.protocol, self.domain)\n        self.old_Site_meta_installed = Site._meta.installed\n        cache.clear()\n        # Create an object for sitemap content.\n        TestModel.objects.create(name='Test Object')\n\n    def tearDown(self):\n        Site._meta.installed = self.old_Site_meta_installed\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sitemaps/tests/flatpages.py",
    "content": "from __future__ import unicode_literals\n\nfrom django.conf import settings\nfrom django.utils.unittest import skipUnless\n\nfrom .base import SitemapTestsBase\n\nclass FlatpagesSitemapTests(SitemapTestsBase):\n\n    @skipUnless(\"django.contrib.flatpages\" in settings.INSTALLED_APPS,\n                \"django.contrib.flatpages app not installed.\")\n    def test_flatpage_sitemap(self):\n        \"Basic FlatPage sitemap test\"\n\n        # Import FlatPage inside the test so that when django.contrib.flatpages\n        # is not installed we don't get problems trying to delete Site\n        # objects (FlatPage has an M2M to Site, Site.delete() tries to\n        # delete related objects, but the M2M table doesn't exist.\n        from django.contrib.flatpages.models import FlatPage\n\n        public = FlatPage.objects.create(\n            url='/public/',\n            title='Public Page',\n            enable_comments=True,\n            registration_required=False,\n        )\n        public.sites.add(settings.SITE_ID)\n        private = FlatPage.objects.create(\n            url='/private/',\n            title='Private Page',\n            enable_comments=True,\n            registration_required=True\n        )\n        private.sites.add(settings.SITE_ID)\n        response = self.client.get('/flatpages/sitemap.xml')\n        # Public flatpage should be in the sitemap\n        self.assertContains(response, '<loc>%s%s</loc>' % (self.base_url, public.url))\n        # Private flatpage should not be in the sitemap\n        self.assertNotContains(response, '<loc>%s%s</loc>' % (self.base_url, private.url))\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sitemaps/tests/generic.py",
    "content": "from __future__ import unicode_literals\n\nfrom django.test.utils import override_settings\n\nfrom .base import TestModel, SitemapTestsBase\n\n\n@override_settings(ABSOLUTE_URL_OVERRIDES={})\nclass GenericViewsSitemapTests(SitemapTestsBase):\n\n    def test_generic_sitemap(self):\n        \"A minimal generic sitemap can be rendered\"\n        response = self.client.get('/generic/sitemap.xml')\n        expected = ''\n        for pk in TestModel.objects.values_list(\"id\", flat=True):\n            expected += \"<url><loc>%s/testmodel/%s/</loc></url>\" % (self.base_url, pk)\n        expected_content = \"\"\"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n%s\n</urlset>\n\"\"\" % expected\n        self.assertXMLEqual(response.content.decode('utf-8'), expected_content)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sitemaps/tests/http.py",
    "content": "from __future__ import unicode_literals\n\nimport os\nfrom datetime import date\n\nfrom django.conf import settings\nfrom django.contrib.sitemaps import Sitemap, GenericSitemap\nfrom django.contrib.sites.models import Site\nfrom django.core.exceptions import ImproperlyConfigured\nfrom django.test.utils import override_settings\nfrom django.utils.unittest import skipUnless\nfrom django.utils.formats import localize\nfrom django.utils._os import upath\nfrom django.utils.translation import activate, deactivate\n\nfrom .base import TestModel, SitemapTestsBase\n\n\nclass HTTPSitemapTests(SitemapTestsBase):\n\n    def test_simple_sitemap_index(self):\n        \"A simple sitemap index can be rendered\"\n        response = self.client.get('/simple/index.xml')\n        expected_content = \"\"\"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<sitemapindex xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n<sitemap><loc>%s/simple/sitemap-simple.xml</loc></sitemap>\n</sitemapindex>\n\"\"\" % self.base_url\n        self.assertXMLEqual(response.content.decode('utf-8'), expected_content)\n\n    @override_settings(\n        TEMPLATE_DIRS=(os.path.join(os.path.dirname(upath(__file__)), 'templates'),)\n    )\n    def test_simple_sitemap_custom_index(self):\n        \"A simple sitemap index can be rendered with a custom template\"\n        response = self.client.get('/simple/custom-index.xml')\n        expected_content = \"\"\"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- This is a customised template -->\n<sitemapindex xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n<sitemap><loc>%s/simple/sitemap-simple.xml</loc></sitemap>\n</sitemapindex>\n\"\"\" % self.base_url\n        self.assertXMLEqual(response.content.decode('utf-8'), expected_content)\n\n\n    def test_simple_sitemap_section(self):\n        \"A simple sitemap section can be rendered\"\n        response = self.client.get('/simple/sitemap-simple.xml')\n        expected_content = \"\"\"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n<url><loc>%s/location/</loc><lastmod>%s</lastmod><changefreq>never</changefreq><priority>0.5</priority></url>\n</urlset>\n\"\"\" % (self.base_url, date.today())\n        self.assertXMLEqual(response.content.decode('utf-8'), expected_content)\n\n    def test_simple_sitemap(self):\n        \"A simple sitemap can be rendered\"\n        response = self.client.get('/simple/sitemap.xml')\n        expected_content = \"\"\"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n<url><loc>%s/location/</loc><lastmod>%s</lastmod><changefreq>never</changefreq><priority>0.5</priority></url>\n</urlset>\n\"\"\" % (self.base_url, date.today())\n        self.assertXMLEqual(response.content.decode('utf-8'), expected_content)\n\n    @override_settings(\n        TEMPLATE_DIRS=(os.path.join(os.path.dirname(upath(__file__)), 'templates'),)\n    )\n    def test_simple_custom_sitemap(self):\n        \"A simple sitemap can be rendered with a custom template\"\n        response = self.client.get('/simple/custom-sitemap.xml')\n        expected_content = \"\"\"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- This is a customised template -->\n<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n<url><loc>%s/location/</loc><lastmod>%s</lastmod><changefreq>never</changefreq><priority>0.5</priority></url>\n</urlset>\n\"\"\" % (self.base_url, date.today())\n        self.assertXMLEqual(response.content.decode('utf-8'), expected_content)\n\n    @skipUnless(settings.USE_I18N, \"Internationalization is not enabled\")\n    @override_settings(USE_L10N=True)\n    def test_localized_priority(self):\n        \"The priority value should not be localized (Refs #14164)\"\n        activate('fr')\n        self.assertEqual('0,3', localize(0.3))\n\n        # Retrieve the sitemap. Check that priorities\n        # haven't been rendered in localized format\n        response = self.client.get('/simple/sitemap.xml')\n        self.assertContains(response, '<priority>0.5</priority>')\n        self.assertContains(response, '<lastmod>%s</lastmod>' % date.today())\n        deactivate()\n\n    def test_requestsite_sitemap(self):\n        # Make sure hitting the flatpages sitemap without the sites framework\n        # installed doesn't raise an exception\n        Site._meta.installed = False\n        response = self.client.get('/simple/sitemap.xml')\n        expected_content = \"\"\"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n<url><loc>http://testserver/location/</loc><lastmod>%s</lastmod><changefreq>never</changefreq><priority>0.5</priority></url>\n</urlset>\n\"\"\" % date.today()\n        self.assertXMLEqual(response.content.decode('utf-8'), expected_content)\n\n    @skipUnless(\"django.contrib.sites\" in settings.INSTALLED_APPS,\n                \"django.contrib.sites app not installed.\")\n    def test_sitemap_get_urls_no_site_1(self):\n        \"\"\"\n        Check we get ImproperlyConfigured if we don't pass a site object to\n        Sitemap.get_urls and no Site objects exist\n        \"\"\"\n        Site.objects.all().delete()\n        self.assertRaises(ImproperlyConfigured, Sitemap().get_urls)\n\n    def test_sitemap_get_urls_no_site_2(self):\n        \"\"\"\n        Check we get ImproperlyConfigured when we don't pass a site object to\n        Sitemap.get_urls if Site objects exists, but the sites framework is not\n        actually installed.\n        \"\"\"\n        Site._meta.installed = False\n        self.assertRaises(ImproperlyConfigured, Sitemap().get_urls)\n\n    def test_sitemap_item(self):\n        \"\"\"\n        Check to make sure that the raw item is included with each\n        Sitemap.get_url() url result.\n        \"\"\"\n        test_sitemap = GenericSitemap({'queryset': TestModel.objects.all()})\n        def is_testmodel(url):\n            return isinstance(url['item'], TestModel)\n        item_in_url_info = all(map(is_testmodel, test_sitemap.get_urls()))\n        self.assertTrue(item_in_url_info)\n\n    def test_cached_sitemap_index(self):\n        \"\"\"\n        Check that a cached sitemap index can be rendered (#2713).\n        \"\"\"\n        response = self.client.get('/cached/index.xml')\n        expected_content = \"\"\"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<sitemapindex xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n<sitemap><loc>%s/cached/sitemap-simple.xml</loc></sitemap>\n</sitemapindex>\n\"\"\" % self.base_url\n        self.assertXMLEqual(response.content.decode('utf-8'), expected_content)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sitemaps/tests/https.py",
    "content": "from __future__ import unicode_literals\n\nfrom datetime import date\n\nfrom django.test.utils import override_settings\n\nfrom .base import SitemapTestsBase\n\nclass HTTPSSitemapTests(SitemapTestsBase):\n    protocol = 'https'\n    urls = 'django.contrib.sitemaps.tests.urls.https'\n\n    def test_secure_sitemap_index(self):\n        \"A secure sitemap index can be rendered\"\n        response = self.client.get('/secure/index.xml')\n        expected_content = \"\"\"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<sitemapindex xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n<sitemap><loc>%s/secure/sitemap-simple.xml</loc></sitemap>\n</sitemapindex>\n\"\"\" % self.base_url\n        self.assertXMLEqual(response.content.decode('utf-8'), expected_content)\n\n    def test_secure_sitemap_section(self):\n        \"A secure sitemap section can be rendered\"\n        response = self.client.get('/secure/sitemap-simple.xml')\n        expected_content = \"\"\"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n<url><loc>%s/location/</loc><lastmod>%s</lastmod><changefreq>never</changefreq><priority>0.5</priority></url>\n</urlset>\n\"\"\" % (self.base_url, date.today())\n        self.assertXMLEqual(response.content.decode('utf-8'), expected_content)\n\n\n@override_settings(SECURE_PROXY_SSL_HEADER=False)\nclass HTTPSDetectionSitemapTests(SitemapTestsBase):\n    extra = {'wsgi.url_scheme': 'https'}\n\n    def test_sitemap_index_with_https_request(self):\n        \"A sitemap index requested in HTTPS is rendered with HTTPS links\"\n        response = self.client.get('/simple/index.xml', **self.extra)\n        expected_content = \"\"\"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<sitemapindex xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n<sitemap><loc>%s/simple/sitemap-simple.xml</loc></sitemap>\n</sitemapindex>\n\"\"\" % self.base_url.replace('http://', 'https://')\n        self.assertXMLEqual(response.content.decode('utf-8'), expected_content)\n\n    def test_sitemap_section_with_https_request(self):\n        \"A sitemap section requested in HTTPS is rendered with HTTPS links\"\n        response = self.client.get('/simple/sitemap-simple.xml', **self.extra)\n        expected_content = \"\"\"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n<url><loc>%s/location/</loc><lastmod>%s</lastmod><changefreq>never</changefreq><priority>0.5</priority></url>\n</urlset>\n\"\"\" % (self.base_url.replace('http://', 'https://'), date.today())\n        self.assertXMLEqual(response.content.decode('utf-8'), expected_content)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sitemaps/tests/templates/custom_sitemap.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- This is a customised template -->\n<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n{% spaceless %}\n{% for url in urlset %}\n  <url>\n    <loc>{{ url.location }}</loc>\n    {% if url.lastmod %}<lastmod>{{ url.lastmod|date:\"Y-m-d\" }}</lastmod>{% endif %}\n    {% if url.changefreq %}<changefreq>{{ url.changefreq }}</changefreq>{% endif %}\n    {% if url.priority %}<priority>{{ url.priority }}</priority>{% endif %}\n  </url>\n{% endfor %}\n{% endspaceless %}\n</urlset>\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sitemaps/tests/templates/custom_sitemap_index.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- This is a customised template -->\n<sitemapindex xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n{% for location in sitemaps %}<sitemap><loc>{{ location }}</loc></sitemap>{% endfor %}\n</sitemapindex>\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sitemaps/tests/urls/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/sitemaps/tests/urls/http.py",
    "content": "from datetime import datetime\nfrom django.conf.urls import patterns, url\nfrom django.contrib.sitemaps import Sitemap, GenericSitemap, FlatPageSitemap, views\nfrom django.contrib.auth.models import User\nfrom django.views.decorators.cache import cache_page\n\nfrom django.contrib.sitemaps.tests.base import TestModel\n\n\nclass SimpleSitemap(Sitemap):\n    changefreq = \"never\"\n    priority = 0.5\n    location = '/location/'\n    lastmod = datetime.now()\n\n    def items(self):\n        return [object()]\n\nsimple_sitemaps = {\n    'simple': SimpleSitemap,\n}\n\ngeneric_sitemaps = {\n    'generic': GenericSitemap({'queryset': TestModel.objects.all()}),\n}\n\nflatpage_sitemaps = {\n    'flatpages': FlatPageSitemap,\n}\n\nurlpatterns = patterns('django.contrib.sitemaps.views',\n    (r'^simple/index\\.xml$', 'index', {'sitemaps': simple_sitemaps}),\n    (r'^simple/custom-index\\.xml$', 'index',\n        {'sitemaps': simple_sitemaps, 'template_name': 'custom_sitemap_index.xml'}),\n    (r'^simple/sitemap-(?P<section>.+)\\.xml$', 'sitemap',\n        {'sitemaps': simple_sitemaps}),\n    (r'^simple/sitemap\\.xml$', 'sitemap', {'sitemaps': simple_sitemaps}),\n    (r'^simple/custom-sitemap\\.xml$', 'sitemap',\n        {'sitemaps': simple_sitemaps, 'template_name': 'custom_sitemap.xml'}),\n    (r'^generic/sitemap\\.xml$', 'sitemap', {'sitemaps': generic_sitemaps}),\n    (r'^flatpages/sitemap\\.xml$', 'sitemap', {'sitemaps': flatpage_sitemaps}),\n    url(r'^cached/index\\.xml$', cache_page(1)(views.index),\n        {'sitemaps': simple_sitemaps, 'sitemap_url_name': 'cached_sitemap'}),\n    url(r'^cached/sitemap-(?P<section>.+)\\.xml', cache_page(1)(views.sitemap),\n        {'sitemaps': simple_sitemaps}, name='cached_sitemap')\n)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sitemaps/tests/urls/https.py",
    "content": "from django.conf.urls import patterns\n\nfrom .http import SimpleSitemap\n\nclass HTTPSSitemap(SimpleSitemap):\n    protocol = 'https'\n\nsecure_sitemaps = {\n    'simple': HTTPSSitemap,\n}\n\nurlpatterns = patterns('django.contrib.sitemaps.views',\n    (r'^secure/index\\.xml$', 'index', {'sitemaps': secure_sitemaps}),\n    (r'^secure/sitemap-(?P<section>.+)\\.xml$', 'sitemap',\n        {'sitemaps': secure_sitemaps}),\n)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sitemaps/views.py",
    "content": "import warnings\n\nfrom django.contrib.sites.models import get_current_site\nfrom django.core import urlresolvers\nfrom django.core.paginator import EmptyPage, PageNotAnInteger\nfrom django.http import Http404\nfrom django.template.response import TemplateResponse\nfrom django.utils import six\n\ndef index(request, sitemaps,\n          template_name='sitemap_index.xml', content_type='application/xml',\n          sitemap_url_name='django.contrib.sitemaps.views.sitemap',\n          mimetype=None):\n\n    if mimetype:\n        warnings.warn(\"The mimetype keyword argument is deprecated, use \"\n            \"content_type instead\", PendingDeprecationWarning, stacklevel=2)\n        content_type = mimetype\n\n    req_protocol = 'https' if request.is_secure() else 'http'\n    req_site = get_current_site(request)\n\n    sites = []\n    for section, site in sitemaps.items():\n        if callable(site):\n            site = site()\n        protocol = req_protocol if site.protocol is None else site.protocol\n        sitemap_url = urlresolvers.reverse(\n                sitemap_url_name, kwargs={'section': section})\n        absolute_url = '%s://%s%s' % (protocol, req_site.domain, sitemap_url)\n        sites.append(absolute_url)\n        for page in range(2, site.paginator.num_pages + 1):\n            sites.append('%s?p=%s' % (absolute_url, page))\n\n    return TemplateResponse(request, template_name, {'sitemaps': sites},\n                            content_type=content_type)\n\ndef sitemap(request, sitemaps, section=None,\n            template_name='sitemap.xml', content_type='application/xml',\n            mimetype=None):\n\n    if mimetype:\n        warnings.warn(\"The mimetype keyword argument is deprecated, use \"\n            \"content_type instead\", PendingDeprecationWarning, stacklevel=2)\n        content_type = mimetype\n\n    req_protocol = 'https' if request.is_secure() else 'http'\n    req_site = get_current_site(request)\n\n    if section is not None:\n        if section not in sitemaps:\n            raise Http404(\"No sitemap available for section: %r\" % section)\n        maps = [sitemaps[section]]\n    else:\n        maps = list(six.itervalues(sitemaps))\n    page = request.GET.get(\"p\", 1)\n\n    urls = []\n    for site in maps:\n        try:\n            if callable(site):\n                site = site()\n            urls.extend(site.get_urls(page=page, site=req_site,\n                                      protocol=req_protocol))\n        except EmptyPage:\n            raise Http404(\"Page %s empty\" % page)\n        except PageNotAnInteger:\n            raise Http404(\"No page '%s'\" % page)\n    return TemplateResponse(request, template_name, {'urlset': urls},\n                            content_type=content_type)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/admin.py",
    "content": "from django.contrib import admin\nfrom django.contrib.sites.models import Site\n\n\nclass SiteAdmin(admin.ModelAdmin):\n    list_display = ('domain', 'name')\n    search_fields = ('domain', 'name')\n\nadmin.site.register(Site, SiteAdmin)"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/ar/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:48+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Arabic (http://www.transifex.com/projects/p/django/language/\"\n\"ar/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ar\\n\"\n\"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 \"\n\"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"اسم النطاق\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"اسم العرض\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"موقع\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"المواقع\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/az/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Ali Ismayilov <ali@ismailov.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:49+0000\\n\"\n\"Last-Translator: Ali Ismayilov <ali@ismailov.info>\\n\"\n\"Language-Team: Azerbaijani (http://www.transifex.com/projects/p/django/\"\n\"language/az/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: az\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"domen\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"adı\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"sayt\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"saytlar\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/be/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-08-11 11:08+0000\\n\"\n\"Last-Translator: Павал Клёк <yehekim@gmail.com>\\n\"\n\"Language-Team: Belarusian (http://www.transifex.com/projects/p/django/\"\n\"language/be/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: be\\n\"\n\"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"назва дамэна\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"бачная назва\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"сайт\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"сайты\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/bg/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:49+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Bulgarian (http://www.transifex.com/projects/p/django/\"\n\"language/bg/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: bg\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"име на домейна\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"наименование\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"сайт\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"сайтове\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/bn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:49+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Bengali (http://www.transifex.com/projects/p/django/language/\"\n\"bn/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: bn\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"ডোমেইন নাম\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"ডিসপ্লে নাম\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"সাইট\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"সাইটসমূহ\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/br/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Fulup  <fulup.jakez@gmail.com>, 2012.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-06-29 10:55+0000\\n\"\n\"Last-Translator: Fulup <fulup.jakez@gmail.com>\\n\"\n\"Language-Team: Breton (http://www.transifex.com/projects/p/django/language/\"\n\"br/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: br\\n\"\n\"Plural-Forms: nplurals=2; plural=(n > 1);\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"anv domani\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"anv da ziskouez\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"lec'hienn\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"lec'hiennoù\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/bs/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:49+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Bosnian (http://www.transifex.com/projects/p/django/language/\"\n\"bs/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: bs\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"ime domena\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"prikazano ime\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"sajt\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"sajtovi\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/ca/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:49+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Catalan (http://www.transifex.com/projects/p/django/language/\"\n\"ca/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ca\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"nom del domini\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"nom per mostrar\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"lloc\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"llocs\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/cs/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:49+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Czech (http://www.transifex.com/projects/p/django/language/\"\n\"cs/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: cs\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"název domény\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"zobrazený název\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"web\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"weby\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/cy/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:49+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Welsh (http://www.transifex.com/projects/p/django/language/\"\n\"cy/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: cy\\n\"\n\"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != \"\n\"11) ? 2 : 3;\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"parth-enw\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"enw arddangos\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"safle\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"safleoedd\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/da/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:49+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Danish (http://www.transifex.com/projects/p/django/language/\"\n\"da/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: da\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"domænenavn\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"vist navn\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"website\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"websites\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/de/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:49+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: German (http://www.transifex.com/projects/p/django/language/\"\n\"de/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: de\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"Domainname\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"Anzeigename\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"Site\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"Sites\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/el/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:49+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Greek (http://www.transifex.com/projects/p/django/language/\"\n\"el/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: el\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"όνομα χώρου\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"εμφανιζόμενο όνομα\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"ιστότοπος\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"ιστότοποι\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/en/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:49+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: English <en@li.org>\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: en\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"domain name\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"display name\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"site\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"sites\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/en_GB/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Ross Poulton <ross@rossp.org>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:49+0000\\n\"\n\"Last-Translator: Ross Poulton <ross@rossp.org>\\n\"\n\"Language-Team: English (United Kingdom) (http://www.transifex.com/projects/p/\"\n\"django/language/en_GB/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: en_GB\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"domain name\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"display name\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"site\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"sites\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/eo/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <kristjan.schmidt@googlemail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:49+0000\\n\"\n\"Last-Translator: kristjan <kristjan.schmidt@googlemail.com>\\n\"\n\"Language-Team: Esperanto (http://www.transifex.com/projects/p/django/\"\n\"language/eo/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: eo\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"domajna nomo\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"vidiga nomo\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"retejo\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"retejoj\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/es/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:49+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Spanish (http://www.transifex.com/projects/p/django/language/\"\n\"es/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: es\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"nombre de dominio\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"nombre para mostrar\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"sitio\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"sitios\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/es_AR/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:49+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/\"\n\"django/language/es_AR/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: es_AR\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"nombre de dominio\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"nombre para visualizar\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"sitio\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"sitios\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/es_MX/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Abraham Estrada <abraham.estrada@gmail.com>, 2011.\n# Carlos  Castro <carmoicast@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:49+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Spanish (Mexico) (http://www.transifex.com/projects/p/django/\"\n\"language/es_MX/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: es_MX\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"nombre del dominio\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"nombre visible\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"sitio\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"sitios\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/et/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:49+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Estonian (http://www.transifex.com/projects/p/django/language/\"\n\"et/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: et\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"domeeninimi\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"hüüdnimi\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"sait\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"saidid\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/eu/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:48+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Basque (http://www.transifex.com/projects/p/django/language/\"\n\"eu/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: eu\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"dominio izena\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"erakusteko izena\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"web gunea\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"web guneak\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/fa/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:49+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Persian (http://www.transifex.com/projects/p/django/language/\"\n\"fa/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: fa\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"نام دامنه\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"نام نمایش داده شده\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"وبگاه\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"وبگاه‌ها\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/fi/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:49+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Finnish (http://www.transifex.com/projects/p/django/language/\"\n\"fi/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: fi\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"verkkotunnus\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"näyttönimi\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"sivusto\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"sivustot\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/fr/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:49+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: French (http://www.transifex.com/projects/p/django/language/\"\n\"fr/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: fr\\n\"\n\"Plural-Forms: nplurals=2; plural=(n > 1);\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"nom de domaine\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"nom à afficher\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"site\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"sites\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/fy_NL/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-03-23 02:43+0100\\n\"\n\"PO-Revision-Date: 2011-03-15 15:49+0000\\n\"\n\"Last-Translator: Django team\\n\"\n\"Language-Team: English <en@li.org>\\n\"\n\"Language: fy_NL\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1)\\n\"\n\n#: models.py:37\nmsgid \"domain name\"\nmsgstr \"\"\n\n#: models.py:38\nmsgid \"display name\"\nmsgstr \"\"\n\n#: models.py:43\nmsgid \"site\"\nmsgstr \"\"\n\n#: models.py:44\nmsgid \"sites\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/ga/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:49+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Irish (http://www.transifex.com/projects/p/django/language/\"\n\"ga/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ga\\n\"\n\"Plural-Forms: nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : \"\n\"4);\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"ainm fearainn\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"ainm taispeáinta\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"suíomh\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"suíomhanna\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/gl/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:49+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Galician (http://www.transifex.com/projects/p/django/language/\"\n\"gl/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: gl\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"dominio\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"nome\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"sitio\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"sitios\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/he/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:49+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Hebrew (http://www.transifex.com/projects/p/django/language/\"\n\"he/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: he\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"שם מתחם\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"שם לתצוגה\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"אתר\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"אתרים\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/hi/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:49+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Hindi (http://www.transifex.com/projects/p/django/language/\"\n\"hi/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: hi\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"डोमेन नाम\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"प्रदर्शन नाम\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"साइट\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"साइट\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/hr/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:49+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Croatian (http://www.transifex.com/projects/p/django/language/\"\n\"hr/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: hr\\n\"\n\"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"ime domene\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"ime za prikaz\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"stranica\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"stranice\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/hu/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:49+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Hungarian (http://www.transifex.com/projects/p/django/\"\n\"language/hu/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: hu\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"tartománynév\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"megjelenítendő név\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"honlap\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"honlapok\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/id/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:49+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Indonesian (http://www.transifex.com/projects/p/django/\"\n\"language/id/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: id\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"nama domain\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"nama yang ditampilkan\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"situs\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"situs\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/is/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:49+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Icelandic (http://www.transifex.com/projects/p/django/\"\n\"language/is/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: is\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"lén\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"birtingarnafn\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"vefur\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"vefir\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/it/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:49+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Italian (http://www.transifex.com/projects/p/django/language/\"\n\"it/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: it\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"nome di dominio\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"nome visualizzato\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"sito\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"siti\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/ja/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:49+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Japanese (http://www.transifex.com/projects/p/django/language/\"\n\"ja/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ja\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"ドメイン名\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"表示名\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"サイト\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"サイト\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/ka/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:49+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Georgian (http://www.transifex.com/projects/p/django/language/\"\n\"ka/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ka\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"დომენის სახელი\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"საჩვენებელი სახელი\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"საიტი\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"საიტები\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/kk/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n#   <germanilyin@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:49+0000\\n\"\n\"Last-Translator: yun_man_ger <germanilyin@gmail.com>\\n\"\n\"Language-Team: Kazakh (http://www.transifex.com/projects/p/django/language/\"\n\"kk/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: kk\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"домналық атауы\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"бейнелеу атауы\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"сайт\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"сайттар\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/km/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:49+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: English <en@li.org>\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: km\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"ឈ្មោះដមែន\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"ឈ្មោះសំរាប់បង្ហាញ\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"គេហទំព័រ\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"គេហទំព័រ\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/kn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:49+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Kannada (http://www.transifex.com/projects/p/django/language/\"\n\"kn/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: kn\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"ಡೊಮೈನ್  ಹೆಸರು\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"ತೋರಿಸುವ ಹೆಸರು\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"ತಾಣ\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"ತಾಣಗಳು\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/ko/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:49+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Korean (http://www.transifex.com/projects/p/django/language/\"\n\"ko/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ko\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"도메인 명\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"표시명\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"사이트\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"사이트(들)\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/lt/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Kostas  <tamosiunas@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:49+0000\\n\"\n\"Last-Translator: mar <m@mar.lt>\\n\"\n\"Language-Team: Lithuanian (http://www.transifex.com/projects/p/django/\"\n\"language/lt/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: lt\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n\"\n\"%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"domeno vardas\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"rodomas vardas\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"svetainė\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"svetainės\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/lv/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# edgars <edgars.jekabsons@gmail.com>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:49+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Latvian (http://www.transifex.com/projects/p/django/language/\"\n\"lv/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: lv\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : \"\n\"2);\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"domēna vārds\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"attēlojamais vārds\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"vietne\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"vietnes\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/mk/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:49+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Macedonian (http://www.transifex.com/projects/p/django/\"\n\"language/mk/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: mk\\n\"\n\"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"домејн\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"име кое се прикажува\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"сајт\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"сајтови\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/ml/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:49+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Malayalam (http://www.transifex.com/projects/p/django/\"\n\"language/ml/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ml\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"ഡൊമൈന്‍ നാമം\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"പ്രദര്‍ശന നാമം\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"സൈറ്റ്\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"സൈറ്റുകള്‍\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/mn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Анхбаяр Анхаа <l.ankhbayar@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:49+0000\\n\"\n\"Last-Translator: Анхбаяр Анхаа <l.ankhbayar@gmail.com>\\n\"\n\"Language-Team: Mongolian (http://www.transifex.com/projects/p/django/\"\n\"language/mn/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: mn\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"домэйн нэр\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"Харагдах нэр \"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"сайт\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"сайтууд\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/nb/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:49+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Norwegian Bokmål (http://www.transifex.com/projects/p/django/\"\n\"language/nb/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: nb\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"domenenavn\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"visningsnavn\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"nettsted\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"nettsteder\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/ne/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Sagar Chalise <chalisesagar@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:49+0000\\n\"\n\"Last-Translator: Sagar Chalise <chalisesagar@gmail.com>\\n\"\n\"Language-Team: Nepali (http://www.transifex.com/projects/p/django/language/\"\n\"ne/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ne\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"डोमेनको नाम\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"देखिने नाम\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"साइट\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"साइटहरु\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/nl/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:49+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Dutch (http://www.transifex.com/projects/p/django/language/\"\n\"nl/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: nl\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"domeinnaam\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"weergavenaam\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"site\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"sites\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/nn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:49+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Norwegian Nynorsk (http://www.transifex.com/projects/p/django/\"\n\"language/nn/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: nn\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"domenenamn\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"visingsnamn\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"nettstad\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"nettstader\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/pa/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:49+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Panjabi (Punjabi) (http://www.transifex.com/projects/p/django/\"\n\"language/pa/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: pa\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"ਡੋਮੇਨ ਨਾਂ\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"ਵੇਖਾਉਣ ਲਈ ਨਾਂ\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"ਸਾਈਟ\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"ਸਾਈਟਾਂ\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/pl/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:49+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Polish (http://www.transifex.com/projects/p/django/language/\"\n\"pl/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: pl\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 \"\n\"|| n%100>=20) ? 1 : 2);\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"nazwa domeny\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"wyświetlana nazwa\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"strona\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"strony\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/pt/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:49+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Portuguese (http://www.transifex.com/projects/p/django/\"\n\"language/pt/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: pt\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"nome do domínio\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"mostrar nome\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"site\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"sites\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/pt_BR/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:49+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Portuguese (Brazil) <django-l10n-portuguese@googlegroups.\"\n\"com>\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: pt_BR\\n\"\n\"Plural-Forms: nplurals=2; plural=(n > 1);\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"nome do domínio\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"nome para exibição\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"site\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"sites\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/ro/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Daniel Ursache-Dogariu <contact@danniel.net>, 2011.\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:49+0000\\n\"\n\"Last-Translator: Daniel Ursache-Dogariu <contact@danniel.net>\\n\"\n\"Language-Team: Romanian (http://www.transifex.com/projects/p/django/language/\"\n\"ro/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ro\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?\"\n\"2:1));\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"nume domeniu\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"nume afișat\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"sit\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"situri\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/ru/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:49+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Russian (http://www.transifex.com/projects/p/django/language/\"\n\"ru/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ru\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"доменное имя\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"выводимое имя\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"сайт\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"сайты\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/sk/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:49+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Slovak (http://www.transifex.com/projects/p/django/language/\"\n\"sk/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sk\\n\"\n\"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"názov domény\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"zobrazené meno\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"stránka\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"weby\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/sl/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-10-31 19:51+0000\\n\"\n\"Last-Translator: mateju <>\\n\"\n\"Language-Team: Slovenian (http://www.transifex.com/projects/p/django/\"\n\"language/sl/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sl\\n\"\n\"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n\"\n\"%100==4 ? 2 : 3);\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"ime domene\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"prikazano ime\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"stran\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"strani\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/sq/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Besnik <besnik@programeshqip.org>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:49+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Albanian (http://www.transifex.com/projects/p/django/language/\"\n\"sq/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sq\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"emër përkatësie\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"emër shfaqjeje\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"site\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"site-e\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/sr/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:49+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Serbian (http://www.transifex.com/projects/p/django/language/\"\n\"sr/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sr\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"име домена\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"приказано име\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"сајт\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"сајтови\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/sr_Latn/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:49+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/django/\"\n\"language/sr@latin/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sr@latin\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"ime domena\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"prikazano ime\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"sajt\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"sajtovi\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/sv/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:49+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Swedish (http://www.transifex.com/projects/p/django/language/\"\n\"sv/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sv\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"domännamn\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"visningsnamn\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"webbplats\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"webbplatser\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/sw/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-03-09 16:07+0000\\n\"\n\"Last-Translator: machaku <bmachaku@gmail.com>\\n\"\n\"Language-Team: Swahili (http://www.transifex.com/projects/p/django/language/\"\n\"sw/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: sw\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"jina la domeini\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"jina la kujionesha\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"tovuti\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"tovuti\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/ta/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:49+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Tamil (http://www.transifex.com/projects/p/django/language/\"\n\"ta/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ta\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"களப் பெயர்\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"காட்டும்  பெயர்\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"வலைத்தளம்\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"வலைத்தளங்கள்\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/te/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:49+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Telugu (http://www.transifex.com/projects/p/django/language/\"\n\"te/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: te\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"డొమైన్ నామము\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"కనిపిచ్చే పేరు\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"సైట్\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"సైట్లు\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/th/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:49+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Thai (http://www.transifex.com/projects/p/django/language/\"\n\"th/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: th\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"ชื่อโดเมน\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"ชื่อที่แสดง\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"ไซต์\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"ไซต์\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/tr/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:49+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Turkish (http://www.transifex.com/projects/p/django/language/\"\n\"tr/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: tr\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"alan adı\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"görünen isim\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"site\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"siteler\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/tt/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Azat Khasanshin <lordofbazuks@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:49+0000\\n\"\n\"Last-Translator: Azat Khasanshin <lordofbazuks@gmail.com>\\n\"\n\"Language-Team: Tatar (http://www.transifex.com/projects/p/django/language/\"\n\"tt/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: tt\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"домен исеме\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"чагылдырылган исем\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"сайт\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"сайтлар\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/uk/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:49+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Ukrainian (http://www.transifex.com/projects/p/django/\"\n\"language/uk/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: uk\\n\"\n\"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n\"\n\"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"доменне ім'я\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"відображуване ім'я\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"сайт\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"сайти\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/ur/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Mansoorulhaq Mansoor <mansoorulhaq1986@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:49+0000\\n\"\n\"Last-Translator: Mansoorulhaq Mansoor <mansoorulhaq1986@gmail.com>\\n\"\n\"Language-Team: Urdu (http://www.transifex.com/projects/p/django/language/\"\n\"ur/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: ur\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"ڈومین کا نام\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"ظاھر ھونے والا نام\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"سائٹ\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"سائٹس\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/vi/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\n# Tran  <hongdiepkien@gmail.com>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:49+0000\\n\"\n\"Last-Translator: Tran <hongdiepkien@gmail.com>\\n\"\n\"Language-Team: Vietnamese (http://www.transifex.com/projects/p/django/\"\n\"language/vi/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: vi\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"Tên miền\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"Tên hiển thị\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"trang web\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"các trang web\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/zh_CN/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:49+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/django/\"\n\"language/zh_CN/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: zh_CN\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"域名\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"显示名称\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"站点\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"站点\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/locale/zh_TW/LC_MESSAGES/django.po",
    "content": "# This file is distributed under the same license as the Django package.\n#\n# Translators:\n# Jannis Leidel <jannis@leidel.info>, 2011.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2012-10-15 10:57+0200\\n\"\n\"PO-Revision-Date: 2012-02-14 13:49+0000\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/django/\"\n\"language/zh_TW/)\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: zh_TW\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\n#: models.py:39\nmsgid \"domain name\"\nmsgstr \"網域名稱\"\n\n#: models.py:40\nmsgid \"display name\"\nmsgstr \"顯示名稱\"\n\n#: models.py:45\nmsgid \"site\"\nmsgstr \"網站\"\n\n#: models.py:46\nmsgid \"sites\"\nmsgstr \"網站\"\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/management.py",
    "content": "\"\"\"\nCreates the default Site object.\n\"\"\"\n\nfrom django.db.models import signals\nfrom django.db import connections\nfrom django.db import router\nfrom django.contrib.sites.models import Site\nfrom django.contrib.sites import models as site_app\nfrom django.core.management.color import no_style\n\ndef create_default_site(app, created_models, verbosity, db, **kwargs):\n    # Only create the default sites in databases where Django created the table\n    if Site in created_models and router.allow_syncdb(db, Site) :\n        # The default settings set SITE_ID = 1, and some tests in Django's test\n        # suite rely on this value. However, if database sequences are reused\n        # (e.g. in the test suite after flush/syncdb), it isn't guaranteed that\n        # the next id will be 1, so we coerce it. See #15573 and #16353. This\n        # can also crop up outside of tests - see #15346.\n        if verbosity >= 2:\n            print(\"Creating example.com Site object\")\n        Site(pk=1, domain=\"example.com\", name=\"example.com\").save(using=db)\n\n        # We set an explicit pk instead of relying on auto-incrementation,\n        # so we need to reset the database sequence. See #17415.\n        sequence_sql = connections[db].ops.sequence_reset_sql(no_style(), [Site])\n        if sequence_sql:\n            if verbosity >= 2:\n                print(\"Resetting sequence\")\n            cursor = connections[db].cursor()\n            for command in sequence_sql:\n                cursor.execute(command)\n\n    Site.objects.clear_cache()\n\nsignals.post_syncdb.connect(create_default_site, sender=site_app)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/managers.py",
    "content": "from django.conf import settings\nfrom django.db import models\nfrom django.db.models.fields import FieldDoesNotExist\n\nclass CurrentSiteManager(models.Manager):\n    \"Use this to limit objects to those associated with the current site.\"\n    def __init__(self, field_name=None):\n        super(CurrentSiteManager, self).__init__()\n        self.__field_name = field_name\n        self.__is_validated = False\n        \n    def _validate_field_name(self):\n        field_names = self.model._meta.get_all_field_names()\n        \n        # If a custom name is provided, make sure the field exists on the model\n        if self.__field_name is not None and self.__field_name not in field_names:\n            raise ValueError(\"%s couldn't find a field named %s in %s.\" % \\\n                (self.__class__.__name__, self.__field_name, self.model._meta.object_name))\n        \n        # Otherwise, see if there is a field called either 'site' or 'sites'\n        else:\n            for potential_name in ['site', 'sites']:\n                if potential_name in field_names:\n                    self.__field_name = potential_name\n                    self.__is_validated = True\n                    break\n        \n        # Now do a type check on the field (FK or M2M only)\n        try:\n            field = self.model._meta.get_field(self.__field_name)\n            if not isinstance(field, (models.ForeignKey, models.ManyToManyField)):\n                raise TypeError(\"%s must be a ForeignKey or ManyToManyField.\" %self.__field_name)\n        except FieldDoesNotExist:\n            raise ValueError(\"%s couldn't find a field named %s in %s.\" % \\\n                    (self.__class__.__name__, self.__field_name, self.model._meta.object_name))\n        self.__is_validated = True\n    \n    def get_query_set(self):\n        if not self.__is_validated:\n            self._validate_field_name()\n        return super(CurrentSiteManager, self).get_query_set().filter(**{self.__field_name + '__id__exact': settings.SITE_ID})\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/models.py",
    "content": "from django.db import models\nfrom django.utils.translation import ugettext_lazy as _\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\nSITE_CACHE = {}\n\n\nclass SiteManager(models.Manager):\n\n    def get_current(self):\n        \"\"\"\n        Returns the current ``Site`` based on the SITE_ID in the\n        project's settings. The ``Site`` object is cached the first\n        time it's retrieved from the database.\n        \"\"\"\n        from django.conf import settings\n        try:\n            sid = settings.SITE_ID\n        except AttributeError:\n            from django.core.exceptions import ImproperlyConfigured\n            raise ImproperlyConfigured(\"You're using the Django \\\"sites framework\\\" without having set the SITE_ID setting. Create a site in your database and set the SITE_ID setting to fix this error.\")\n        try:\n            current_site = SITE_CACHE[sid]\n        except KeyError:\n            current_site = self.get(pk=sid)\n            SITE_CACHE[sid] = current_site\n        return current_site\n\n    def clear_cache(self):\n        \"\"\"Clears the ``Site`` object cache.\"\"\"\n        global SITE_CACHE\n        SITE_CACHE = {}\n\n\n@python_2_unicode_compatible\nclass Site(models.Model):\n\n    domain = models.CharField(_('domain name'), max_length=100)\n    name = models.CharField(_('display name'), max_length=50)\n    objects = SiteManager()\n\n    class Meta:\n        db_table = 'django_site'\n        verbose_name = _('site')\n        verbose_name_plural = _('sites')\n        ordering = ('domain',)\n\n    def __str__(self):\n        return self.domain\n\n    def save(self, *args, **kwargs):\n        super(Site, self).save(*args, **kwargs)\n        # Cached information will likely be incorrect now.\n        if self.id in SITE_CACHE:\n            del SITE_CACHE[self.id]\n\n    def delete(self):\n        pk = self.pk\n        super(Site, self).delete()\n        try:\n            del SITE_CACHE[pk]\n        except KeyError:\n            pass\n\n\n@python_2_unicode_compatible\nclass RequestSite(object):\n    \"\"\"\n    A class that shares the primary interface of Site (i.e., it has\n    ``domain`` and ``name`` attributes) but gets its data from a Django\n    HttpRequest object rather than from a database.\n\n    The save() and delete() methods raise NotImplementedError.\n    \"\"\"\n    def __init__(self, request):\n        self.domain = self.name = request.get_host()\n\n    def __str__(self):\n        return self.domain\n\n    def save(self, force_insert=False, force_update=False):\n        raise NotImplementedError('RequestSite cannot be saved.')\n\n    def delete(self):\n        raise NotImplementedError('RequestSite cannot be deleted.')\n\n\ndef get_current_site(request):\n    \"\"\"\n    Checks if contrib.sites is installed and returns either the current\n    ``Site`` object or a ``RequestSite`` object based on the request.\n    \"\"\"\n    if Site._meta.installed:\n        current_site = Site.objects.get_current()\n    else:\n        current_site = RequestSite(request)\n    return current_site\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/sites/tests.py",
    "content": "from __future__ import unicode_literals\n\nfrom django.conf import settings\nfrom django.contrib.sites.models import Site, RequestSite, get_current_site\nfrom django.core.exceptions import ObjectDoesNotExist\nfrom django.http import HttpRequest\nfrom django.test import TestCase\nfrom django.test.utils import override_settings\n\n\nclass SitesFrameworkTests(TestCase):\n\n    def setUp(self):\n        Site(id=settings.SITE_ID, domain=\"example.com\", name=\"example.com\").save()\n        self.old_Site_meta_installed = Site._meta.installed\n        Site._meta.installed = True\n\n    def tearDown(self):\n        Site._meta.installed = self.old_Site_meta_installed\n\n    def test_save_another(self):\n        # Regression for #17415\n        # On some backends the sequence needs reset after save with explicit ID.\n        # Test that there is no sequence collisions by saving another site.\n        Site(domain=\"example2.com\", name=\"example2.com\").save()\n\n    def test_site_manager(self):\n        # Make sure that get_current() does not return a deleted Site object.\n        s = Site.objects.get_current()\n        self.assertTrue(isinstance(s, Site))\n        s.delete()\n        self.assertRaises(ObjectDoesNotExist, Site.objects.get_current)\n\n    def test_site_cache(self):\n        # After updating a Site object (e.g. via the admin), we shouldn't return a\n        # bogus value from the SITE_CACHE.\n        site = Site.objects.get_current()\n        self.assertEqual(\"example.com\", site.name)\n        s2 = Site.objects.get(id=settings.SITE_ID)\n        s2.name = \"Example site\"\n        s2.save()\n        site = Site.objects.get_current()\n        self.assertEqual(\"Example site\", site.name)\n\n    @override_settings(ALLOWED_HOSTS=['example.com'])\n    def test_get_current_site(self):\n        # Test that the correct Site object is returned\n        request = HttpRequest()\n        request.META = {\n            \"SERVER_NAME\": \"example.com\",\n            \"SERVER_PORT\": \"80\",\n        }\n        site = get_current_site(request)\n        self.assertTrue(isinstance(site, Site))\n        self.assertEqual(site.id, settings.SITE_ID)\n\n        # Test that an exception is raised if the sites framework is installed\n        # but there is no matching Site\n        site.delete()\n        self.assertRaises(ObjectDoesNotExist, get_current_site, request)\n\n        # A RequestSite is returned if the sites framework is not installed\n        Site._meta.installed = False\n        site = get_current_site(request)\n        self.assertTrue(isinstance(site, RequestSite))\n        self.assertEqual(site.name, \"example.com\")\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/staticfiles/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/staticfiles/finders.py",
    "content": "import os\nfrom django.conf import settings\nfrom django.core.exceptions import ImproperlyConfigured\nfrom django.core.files.storage import default_storage, Storage, FileSystemStorage\nfrom django.utils.datastructures import SortedDict\nfrom django.utils.functional import empty, memoize, LazyObject\nfrom django.utils.importlib import import_module\nfrom django.utils._os import safe_join\nfrom django.utils import six\n\nfrom django.contrib.staticfiles import utils\nfrom django.contrib.staticfiles.storage import AppStaticStorage\n\n_finders = SortedDict()\n\n\nclass BaseFinder(object):\n    \"\"\"\n    A base file finder to be used for custom staticfiles finder classes.\n    \"\"\"\n    def find(self, path, all=False):\n        \"\"\"\n        Given a relative file path this ought to find an\n        absolute file path.\n\n        If the ``all`` parameter is ``False`` (default) only\n        the first found file path will be returned; if set\n        to ``True`` a list of all found files paths is returned.\n        \"\"\"\n        raise NotImplementedError()\n\n    def list(self, ignore_patterns):\n        \"\"\"\n        Given an optional list of paths to ignore, this should return\n        a two item iterable consisting of the relative path and storage\n        instance.\n        \"\"\"\n        raise NotImplementedError()\n\n\nclass FileSystemFinder(BaseFinder):\n    \"\"\"\n    A static files finder that uses the ``STATICFILES_DIRS`` setting\n    to locate files.\n    \"\"\"\n    def __init__(self, apps=None, *args, **kwargs):\n        # List of locations with static files\n        self.locations = []\n        # Maps dir paths to an appropriate storage instance\n        self.storages = SortedDict()\n        if not isinstance(settings.STATICFILES_DIRS, (list, tuple)):\n            raise ImproperlyConfigured(\n                \"Your STATICFILES_DIRS setting is not a tuple or list; \"\n                \"perhaps you forgot a trailing comma?\")\n        for root in settings.STATICFILES_DIRS:\n            if isinstance(root, (list, tuple)):\n                prefix, root = root\n            else:\n                prefix = ''\n            if os.path.abspath(settings.STATIC_ROOT) == os.path.abspath(root):\n                raise ImproperlyConfigured(\n                    \"The STATICFILES_DIRS setting should \"\n                    \"not contain the STATIC_ROOT setting\")\n            if (prefix, root) not in self.locations:\n                self.locations.append((prefix, root))\n        for prefix, root in self.locations:\n            filesystem_storage = FileSystemStorage(location=root)\n            filesystem_storage.prefix = prefix\n            self.storages[root] = filesystem_storage\n        super(FileSystemFinder, self).__init__(*args, **kwargs)\n\n    def find(self, path, all=False):\n        \"\"\"\n        Looks for files in the extra locations\n        as defined in ``STATICFILES_DIRS``.\n        \"\"\"\n        matches = []\n        for prefix, root in self.locations:\n            matched_path = self.find_location(root, path, prefix)\n            if matched_path:\n                if not all:\n                    return matched_path\n                matches.append(matched_path)\n        return matches\n\n    def find_location(self, root, path, prefix=None):\n        \"\"\"\n        Finds a requested static file in a location, returning the found\n        absolute path (or ``None`` if no match).\n        \"\"\"\n        if prefix:\n            prefix = '%s%s' % (prefix, os.sep)\n            if not path.startswith(prefix):\n                return None\n            path = path[len(prefix):]\n        path = safe_join(root, path)\n        if os.path.exists(path):\n            return path\n\n    def list(self, ignore_patterns):\n        \"\"\"\n        List all files in all locations.\n        \"\"\"\n        for prefix, root in self.locations:\n            storage = self.storages[root]\n            for path in utils.get_files(storage, ignore_patterns):\n                yield path, storage\n\n\nclass AppDirectoriesFinder(BaseFinder):\n    \"\"\"\n    A static files finder that looks in the directory of each app as\n    specified in the source_dir attribute of the given storage class.\n    \"\"\"\n    storage_class = AppStaticStorage\n\n    def __init__(self, apps=None, *args, **kwargs):\n        # The list of apps that are handled\n        self.apps = []\n        # Mapping of app module paths to storage instances\n        self.storages = SortedDict()\n        if apps is None:\n            apps = settings.INSTALLED_APPS\n        for app in apps:\n            app_storage = self.storage_class(app)\n            if os.path.isdir(app_storage.location):\n                self.storages[app] = app_storage\n                if app not in self.apps:\n                    self.apps.append(app)\n        super(AppDirectoriesFinder, self).__init__(*args, **kwargs)\n\n    def list(self, ignore_patterns):\n        \"\"\"\n        List all files in all app storages.\n        \"\"\"\n        for storage in six.itervalues(self.storages):\n            if storage.exists(''):  # check if storage location exists\n                for path in utils.get_files(storage, ignore_patterns):\n                    yield path, storage\n\n    def find(self, path, all=False):\n        \"\"\"\n        Looks for files in the app directories.\n        \"\"\"\n        matches = []\n        for app in self.apps:\n            match = self.find_in_app(app, path)\n            if match:\n                if not all:\n                    return match\n                matches.append(match)\n        return matches\n\n    def find_in_app(self, app, path):\n        \"\"\"\n        Find a requested static file in an app's static locations.\n        \"\"\"\n        storage = self.storages.get(app, None)\n        if storage:\n            if storage.prefix:\n                prefix = '%s%s' % (storage.prefix, os.sep)\n                if not path.startswith(prefix):\n                    return None\n                path = path[len(prefix):]\n            # only try to find a file if the source dir actually exists\n            if storage.exists(path):\n                matched_path = storage.path(path)\n                if matched_path:\n                    return matched_path\n\n\nclass BaseStorageFinder(BaseFinder):\n    \"\"\"\n    A base static files finder to be used to extended\n    with an own storage class.\n    \"\"\"\n    storage = None\n\n    def __init__(self, storage=None, *args, **kwargs):\n        if storage is not None:\n            self.storage = storage\n        if self.storage is None:\n            raise ImproperlyConfigured(\"The staticfiles storage finder %r \"\n                                       \"doesn't have a storage class \"\n                                       \"assigned.\" % self.__class__)\n        # Make sure we have an storage instance here.\n        if not isinstance(self.storage, (Storage, LazyObject)):\n            self.storage = self.storage()\n        super(BaseStorageFinder, self).__init__(*args, **kwargs)\n\n    def find(self, path, all=False):\n        \"\"\"\n        Looks for files in the default file storage, if it's local.\n        \"\"\"\n        try:\n            self.storage.path('')\n        except NotImplementedError:\n            pass\n        else:\n            if self.storage.exists(path):\n                match = self.storage.path(path)\n                if all:\n                    match = [match]\n                return match\n        return []\n\n    def list(self, ignore_patterns):\n        \"\"\"\n        List all files of the storage.\n        \"\"\"\n        for path in utils.get_files(self.storage, ignore_patterns):\n            yield path, self.storage\n\n\nclass DefaultStorageFinder(BaseStorageFinder):\n    \"\"\"\n    A static files finder that uses the default storage backend.\n    \"\"\"\n    storage = default_storage\n\n    def __init__(self, *args, **kwargs):\n        super(DefaultStorageFinder, self).__init__(*args, **kwargs)\n        base_location = getattr(self.storage, 'base_location', empty)\n        if not base_location:\n            raise ImproperlyConfigured(\"The storage backend of the \"\n                                       \"staticfiles finder %r doesn't have \"\n                                       \"a valid location.\" % self.__class__)\n\n\ndef find(path, all=False):\n    \"\"\"\n    Find a static file with the given path using all enabled finders.\n\n    If ``all`` is ``False`` (default), return the first matching\n    absolute path (or ``None`` if no match). Otherwise return a list.\n    \"\"\"\n    matches = []\n    for finder in get_finders():\n        result = finder.find(path, all=all)\n        if not all and result:\n            return result\n        if not isinstance(result, (list, tuple)):\n            result = [result]\n        matches.extend(result)\n    if matches:\n        return matches\n    # No match.\n    return all and [] or None\n\n\ndef get_finders():\n    for finder_path in settings.STATICFILES_FINDERS:\n        yield get_finder(finder_path)\n\n\ndef _get_finder(import_path):\n    \"\"\"\n    Imports the staticfiles finder class described by import_path, where\n    import_path is the full Python path to the class.\n    \"\"\"\n    module, attr = import_path.rsplit('.', 1)\n    try:\n        mod = import_module(module)\n    except ImportError as e:\n        raise ImproperlyConfigured('Error importing module %s: \"%s\"' %\n                                   (module, e))\n    try:\n        Finder = getattr(mod, attr)\n    except AttributeError:\n        raise ImproperlyConfigured('Module \"%s\" does not define a \"%s\" '\n                                   'class.' % (module, attr))\n    if not issubclass(Finder, BaseFinder):\n        raise ImproperlyConfigured('Finder \"%s\" is not a subclass of \"%s\"' %\n                                   (Finder, BaseFinder))\n    return Finder()\nget_finder = memoize(_get_finder, _finders, 1)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/staticfiles/handlers.py",
    "content": "try:\n    from urllib.parse import urlparse\n    from urllib.request import url2pathname\nexcept ImportError:     # Python 2\n    from urllib import url2pathname\n    from urlparse import urlparse\n\nfrom django.conf import settings\nfrom django.core.handlers.base import get_path_info\nfrom django.core.handlers.wsgi import WSGIHandler\n\nfrom django.contrib.staticfiles import utils\nfrom django.contrib.staticfiles.views import serve\n\nclass StaticFilesHandler(WSGIHandler):\n    \"\"\"\n    WSGI middleware that intercepts calls to the static files directory, as\n    defined by the STATIC_URL setting, and serves those files.\n    \"\"\"\n    def __init__(self, application, base_dir=None):\n        self.application = application\n        if base_dir:\n            self.base_dir = base_dir\n        else:\n            self.base_dir = self.get_base_dir()\n        self.base_url = urlparse(self.get_base_url())\n        super(StaticFilesHandler, self).__init__()\n\n    def get_base_dir(self):\n        return settings.STATIC_ROOT\n\n    def get_base_url(self):\n        utils.check_settings()\n        return settings.STATIC_URL\n\n    def _should_handle(self, path):\n        \"\"\"\n        Checks if the path should be handled. Ignores the path if:\n\n        * the host is provided as part of the base_url\n        * the request's path isn't under the media path (or equal)\n        \"\"\"\n        return path.startswith(self.base_url[2]) and not self.base_url[1]\n\n    def file_path(self, url):\n        \"\"\"\n        Returns the relative path to the media file on disk for the given URL.\n        \"\"\"\n        relative_url = url[len(self.base_url[2]):]\n        return url2pathname(relative_url)\n\n    def serve(self, request):\n        \"\"\"\n        Actually serves the request path.\n        \"\"\"\n        return serve(request, self.file_path(request.path), insecure=True)\n\n    def get_response(self, request):\n        from django.http import Http404\n\n        if self._should_handle(request.path):\n            try:\n                return self.serve(request)\n            except Http404 as e:\n                if settings.DEBUG:\n                    from django.views import debug\n                    return debug.technical_404_response(request, e)\n        return super(StaticFilesHandler, self).get_response(request)\n\n    def __call__(self, environ, start_response):\n        if not self._should_handle(get_path_info(environ)):\n            return self.application(environ, start_response)\n        return super(StaticFilesHandler, self).__call__(environ, start_response)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/staticfiles/management/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/staticfiles/management/commands/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/staticfiles/management/commands/collectstatic.py",
    "content": "from __future__ import unicode_literals\n\nimport os\nimport sys\nfrom optparse import make_option\n\nfrom django.core.files.storage import FileSystemStorage\nfrom django.core.management.base import CommandError, NoArgsCommand\nfrom django.utils.encoding import smart_text\nfrom django.utils.datastructures import SortedDict\nfrom django.utils.six.moves import input\n\nfrom django.contrib.staticfiles import finders, storage\n\n\nclass Command(NoArgsCommand):\n    \"\"\"\n    Command that allows to copy or symlink static files from different\n    locations to the settings.STATIC_ROOT.\n    \"\"\"\n    option_list = NoArgsCommand.option_list + (\n        make_option('--noinput',\n            action='store_false', dest='interactive', default=True,\n            help=\"Do NOT prompt the user for input of any kind.\"),\n        make_option('--no-post-process',\n            action='store_false', dest='post_process', default=True,\n            help=\"Do NOT post process collected files.\"),\n        make_option('-i', '--ignore', action='append', default=[],\n            dest='ignore_patterns', metavar='PATTERN',\n            help=\"Ignore files or directories matching this glob-style \"\n                \"pattern. Use multiple times to ignore more.\"),\n        make_option('-n', '--dry-run',\n            action='store_true', dest='dry_run', default=False,\n            help=\"Do everything except modify the filesystem.\"),\n        make_option('-c', '--clear',\n            action='store_true', dest='clear', default=False,\n            help=\"Clear the existing files using the storage \"\n                 \"before trying to copy or link the original file.\"),\n        make_option('-l', '--link',\n            action='store_true', dest='link', default=False,\n            help=\"Create a symbolic link to each file instead of copying.\"),\n        make_option('--no-default-ignore', action='store_false',\n            dest='use_default_ignore_patterns', default=True,\n            help=\"Don't ignore the common private glob-style patterns 'CVS', \"\n                \"'.*' and '*~'.\"),\n    )\n    help = \"Collect static files in a single location.\"\n    requires_model_validation = False\n\n    def __init__(self, *args, **kwargs):\n        super(NoArgsCommand, self).__init__(*args, **kwargs)\n        self.copied_files = []\n        self.symlinked_files = []\n        self.unmodified_files = []\n        self.post_processed_files = []\n        self.storage = storage.staticfiles_storage\n        try:\n            self.storage.path('')\n        except NotImplementedError:\n            self.local = False\n        else:\n            self.local = True\n        # Use ints for file times (ticket #14665), if supported\n        if hasattr(os, 'stat_float_times'):\n            os.stat_float_times(False)\n\n    def set_options(self, **options):\n        \"\"\"\n        Set instance variables based on an options dict\n        \"\"\"\n        self.interactive = options['interactive']\n        self.verbosity = int(options.get('verbosity', 1))\n        self.symlink = options['link']\n        self.clear = options['clear']\n        self.dry_run = options['dry_run']\n        ignore_patterns = options['ignore_patterns']\n        if options['use_default_ignore_patterns']:\n            ignore_patterns += ['CVS', '.*', '*~']\n        self.ignore_patterns = list(set(ignore_patterns))\n        self.post_process = options['post_process']\n\n    def collect(self):\n        \"\"\"\n        Perform the bulk of the work of collectstatic.\n\n        Split off from handle_noargs() to facilitate testing.\n        \"\"\"\n        if self.symlink:\n            if sys.platform == 'win32':\n                raise CommandError(\"Symlinking is not supported by this \"\n                                   \"platform (%s).\" % sys.platform)\n            if not self.local:\n                raise CommandError(\"Can't symlink to a remote destination.\")\n\n        if self.clear:\n            self.clear_dir('')\n\n        if self.symlink:\n            handler = self.link_file\n        else:\n            handler = self.copy_file\n\n        found_files = SortedDict()\n        for finder in finders.get_finders():\n            for path, storage in finder.list(self.ignore_patterns):\n                # Prefix the relative path if the source storage contains it\n                if getattr(storage, 'prefix', None):\n                    prefixed_path = os.path.join(storage.prefix, path)\n                else:\n                    prefixed_path = path\n\n                if prefixed_path not in found_files:\n                    found_files[prefixed_path] = (storage, path)\n                    handler(path, prefixed_path, storage)\n\n        # Here we check if the storage backend has a post_process\n        # method and pass it the list of modified files.\n        if self.post_process and hasattr(self.storage, 'post_process'):\n            processor = self.storage.post_process(found_files,\n                                                  dry_run=self.dry_run)\n            for original_path, processed_path, processed in processor:\n                if processed:\n                    self.log(\"Post-processed '%s' as '%s\" %\n                             (original_path, processed_path), level=1)\n                    self.post_processed_files.append(original_path)\n                else:\n                    self.log(\"Skipped post-processing '%s'\" % original_path)\n\n        return {\n            'modified': self.copied_files + self.symlinked_files,\n            'unmodified': self.unmodified_files,\n            'post_processed': self.post_processed_files,\n        }\n\n    def handle_noargs(self, **options):\n        self.set_options(**options)\n        # Warn before doing anything more.\n        if (isinstance(self.storage, FileSystemStorage) and\n                self.storage.location):\n            destination_path = self.storage.location\n            destination_display = ':\\n\\n    %s' % destination_path\n        else:\n            destination_path = None\n            destination_display = '.'\n\n        if self.clear:\n            clear_display = 'This will DELETE EXISTING FILES!'\n        else:\n            clear_display = 'This will overwrite existing files!'\n\n        if self.interactive:\n            confirm = input(\"\"\"\nYou have requested to collect static files at the destination\nlocation as specified in your settings%s\n\n%s\nAre you sure you want to do this?\n\nType 'yes' to continue, or 'no' to cancel: \"\"\"\n% (destination_display, clear_display))\n            if confirm != 'yes':\n                raise CommandError(\"Collecting static files cancelled.\")\n\n        collected = self.collect()\n        modified_count = len(collected['modified'])\n        unmodified_count = len(collected['unmodified'])\n        post_processed_count = len(collected['post_processed'])\n\n        if self.verbosity >= 1:\n            template = (\"\\n%(modified_count)s %(identifier)s %(action)s\"\n                        \"%(destination)s%(unmodified)s%(post_processed)s.\\n\")\n            summary = template % {\n                'modified_count': modified_count,\n                'identifier': 'static file' + (modified_count != 1 and 's' or ''),\n                'action': self.symlink and 'symlinked' or 'copied',\n                'destination': (destination_path and \" to '%s'\"\n                                % destination_path or ''),\n                'unmodified': (collected['unmodified'] and ', %s unmodified'\n                               % unmodified_count or ''),\n                'post_processed': (collected['post_processed'] and\n                                   ', %s post-processed'\n                                   % post_processed_count or ''),\n            }\n            self.stdout.write(summary)\n\n    def log(self, msg, level=2):\n        \"\"\"\n        Small log helper\n        \"\"\"\n        if self.verbosity >= level:\n            self.stdout.write(msg)\n\n    def clear_dir(self, path):\n        \"\"\"\n        Deletes the given relative path using the destination storage backend.\n        \"\"\"\n        dirs, files = self.storage.listdir(path)\n        for f in files:\n            fpath = os.path.join(path, f)\n            if self.dry_run:\n                self.log(\"Pretending to delete '%s'\" %\n                         smart_text(fpath), level=1)\n            else:\n                self.log(\"Deleting '%s'\" % smart_text(fpath), level=1)\n                self.storage.delete(fpath)\n        for d in dirs:\n            self.clear_dir(os.path.join(path, d))\n\n    def delete_file(self, path, prefixed_path, source_storage):\n        \"\"\"\n        Checks if the target file should be deleted if it already exists\n        \"\"\"\n        if self.storage.exists(prefixed_path):\n            try:\n                # When was the target file modified last time?\n                target_last_modified = \\\n                    self.storage.modified_time(prefixed_path)\n            except (OSError, NotImplementedError, AttributeError):\n                # The storage doesn't support ``modified_time`` or failed\n                pass\n            else:\n                try:\n                    # When was the source file modified last time?\n                    source_last_modified = source_storage.modified_time(path)\n                except (OSError, NotImplementedError, AttributeError):\n                    pass\n                else:\n                    # The full path of the target file\n                    if self.local:\n                        full_path = self.storage.path(prefixed_path)\n                    else:\n                        full_path = None\n                    # Skip the file if the source file is younger\n                    if target_last_modified >= source_last_modified:\n                        if not ((self.symlink and full_path\n                                 and not os.path.islink(full_path)) or\n                                (not self.symlink and full_path\n                                 and os.path.islink(full_path))):\n                            if prefixed_path not in self.unmodified_files:\n                                self.unmodified_files.append(prefixed_path)\n                            self.log(\"Skipping '%s' (not modified)\" % path)\n                            return False\n            # Then delete the existing file if really needed\n            if self.dry_run:\n                self.log(\"Pretending to delete '%s'\" % path)\n            else:\n                self.log(\"Deleting '%s'\" % path)\n                self.storage.delete(prefixed_path)\n        return True\n\n    def link_file(self, path, prefixed_path, source_storage):\n        \"\"\"\n        Attempt to link ``path``\n        \"\"\"\n        # Skip this file if it was already copied earlier\n        if prefixed_path in self.symlinked_files:\n            return self.log(\"Skipping '%s' (already linked earlier)\" % path)\n        # Delete the target file if needed or break\n        if not self.delete_file(path, prefixed_path, source_storage):\n            return\n        # The full path of the source file\n        source_path = source_storage.path(path)\n        # Finally link the file\n        if self.dry_run:\n            self.log(\"Pretending to link '%s'\" % source_path, level=1)\n        else:\n            self.log(\"Linking '%s'\" % source_path, level=1)\n            full_path = self.storage.path(prefixed_path)\n            try:\n                os.makedirs(os.path.dirname(full_path))\n            except OSError:\n                pass\n            os.symlink(source_path, full_path)\n        if prefixed_path not in self.symlinked_files:\n            self.symlinked_files.append(prefixed_path)\n\n    def copy_file(self, path, prefixed_path, source_storage):\n        \"\"\"\n        Attempt to copy ``path`` with storage\n        \"\"\"\n        # Skip this file if it was already copied earlier\n        if prefixed_path in self.copied_files:\n            return self.log(\"Skipping '%s' (already copied earlier)\" % path)\n        # Delete the target file if needed or break\n        if not self.delete_file(path, prefixed_path, source_storage):\n            return\n        # The full path of the source file\n        source_path = source_storage.path(path)\n        # Finally start copying\n        if self.dry_run:\n            self.log(\"Pretending to copy '%s'\" % source_path, level=1)\n        else:\n            self.log(\"Copying '%s'\" % source_path, level=1)\n            if self.local:\n                full_path = self.storage.path(prefixed_path)\n                try:\n                    os.makedirs(os.path.dirname(full_path))\n                except OSError:\n                    pass\n            with source_storage.open(path) as source_file:\n                self.storage.save(prefixed_path, source_file)\n        if not prefixed_path in self.copied_files:\n            self.copied_files.append(prefixed_path)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/staticfiles/management/commands/findstatic.py",
    "content": "from __future__ import unicode_literals\n\nimport os\nfrom optparse import make_option\nfrom django.core.management.base import LabelCommand\nfrom django.utils.encoding import smart_text\n\nfrom django.contrib.staticfiles import finders\n\nclass Command(LabelCommand):\n    help = \"Finds the absolute paths for the given static file(s).\"\n    args = \"[file ...]\"\n    label = 'static file'\n    option_list = LabelCommand.option_list + (\n        make_option('--first', action='store_false', dest='all', default=True,\n                    help=\"Only return the first match for each static file.\"),\n    )\n\n    def handle_label(self, path, **options):\n        verbosity = int(options.get('verbosity', 1))\n        result = finders.find(path, all=options['all'])\n        path = smart_text(path)\n        if result:\n            if not isinstance(result, (list, tuple)):\n                result = [result]\n            output = '\\n  '.join(\n                (smart_text(os.path.realpath(path)) for path in result))\n            self.stdout.write(\"Found '%s' here:\\n  %s\" % (path, output))\n        else:\n            if verbosity >= 1:\n                self.stderr.write(\"No matching file found for '%s'.\" % path)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/staticfiles/management/commands/runserver.py",
    "content": "from optparse import make_option\n\nfrom django.conf import settings\nfrom django.core.management.commands.runserver import Command as RunserverCommand\n\nfrom django.contrib.staticfiles.handlers import StaticFilesHandler\n\nclass Command(RunserverCommand):\n    option_list = RunserverCommand.option_list + (\n        make_option('--nostatic', action=\"store_false\", dest='use_static_handler', default=True,\n            help='Tells Django to NOT automatically serve static files at STATIC_URL.'),\n        make_option('--insecure', action=\"store_true\", dest='insecure_serving', default=False,\n            help='Allows serving static files even if DEBUG is False.'),\n    )\n    help = \"Starts a lightweight Web server for development and also serves static files.\"\n\n    def get_handler(self, *args, **options):\n        \"\"\"\n        Returns the static files serving handler wrapping the default handler,\n        if static files should be served. Otherwise just returns the default\n        handler.\n\n        \"\"\"\n        handler = super(Command, self).get_handler(*args, **options)\n        use_static_handler = options.get('use_static_handler', True)\n        insecure_serving = options.get('insecure_serving', False)\n        if use_static_handler and (settings.DEBUG or insecure_serving):\n            return StaticFilesHandler(handler)\n        return handler\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/staticfiles/models.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/staticfiles/storage.py",
    "content": "from __future__ import unicode_literals\nimport hashlib\nimport os\nimport posixpath\nimport re\ntry:\n    from urllib.parse import unquote, urlsplit, urlunsplit, urldefrag\nexcept ImportError:     # Python 2\n    from urllib import unquote\n    from urlparse import urlsplit, urlunsplit, urldefrag\n\nfrom django.conf import settings\nfrom django.core.cache import (get_cache, InvalidCacheBackendError,\n                               cache as default_cache)\nfrom django.core.exceptions import ImproperlyConfigured\nfrom django.core.files.base import ContentFile\nfrom django.core.files.storage import FileSystemStorage, get_storage_class\nfrom django.utils.datastructures import SortedDict\nfrom django.utils.encoding import force_bytes, force_text\nfrom django.utils.functional import LazyObject\nfrom django.utils.importlib import import_module\nfrom django.utils._os import upath\n\nfrom django.contrib.staticfiles.utils import check_settings, matches_patterns\n\n\nclass StaticFilesStorage(FileSystemStorage):\n    \"\"\"\n    Standard file system storage for static files.\n\n    The defaults for ``location`` and ``base_url`` are\n    ``STATIC_ROOT`` and ``STATIC_URL``.\n    \"\"\"\n    def __init__(self, location=None, base_url=None, *args, **kwargs):\n        if location is None:\n            location = settings.STATIC_ROOT\n        if base_url is None:\n            base_url = settings.STATIC_URL\n        check_settings(base_url)\n        super(StaticFilesStorage, self).__init__(location, base_url,\n                                                 *args, **kwargs)\n\n    def path(self, name):\n        if not self.location:\n            raise ImproperlyConfigured(\"You're using the staticfiles app \"\n                                       \"without having set the STATIC_ROOT \"\n                                       \"setting to a filesystem path.\")\n        return super(StaticFilesStorage, self).path(name)\n\n\nclass CachedFilesMixin(object):\n    default_template = \"\"\"url(\"%s\")\"\"\"\n    patterns = (\n        (\"*.css\", (\n            r\"\"\"(url\\(['\"]{0,1}\\s*(.*?)[\"']{0,1}\\))\"\"\",\n            (r\"\"\"(@import\\s*[\"']\\s*(.*?)[\"'])\"\"\", \"\"\"@import url(\"%s\")\"\"\"),\n        )),\n    )\n\n    def __init__(self, *args, **kwargs):\n        super(CachedFilesMixin, self).__init__(*args, **kwargs)\n        try:\n            self.cache = get_cache('staticfiles')\n        except InvalidCacheBackendError:\n            # Use the default backend\n            self.cache = default_cache\n        self._patterns = SortedDict()\n        for extension, patterns in self.patterns:\n            for pattern in patterns:\n                if isinstance(pattern, (tuple, list)):\n                    pattern, template = pattern\n                else:\n                    template = self.default_template\n                compiled = re.compile(pattern)\n                self._patterns.setdefault(extension, []).append((compiled, template))\n\n    def file_hash(self, name, content=None):\n        \"\"\"\n        Retuns a hash of the file with the given name and optional content.\n        \"\"\"\n        if content is None:\n            return None\n        md5 = hashlib.md5()\n        for chunk in content.chunks():\n            md5.update(chunk)\n        return md5.hexdigest()[:12]\n\n    def hashed_name(self, name, content=None):\n        parsed_name = urlsplit(unquote(name))\n        clean_name = parsed_name.path.strip()\n        opened = False\n        if content is None:\n            if not self.exists(clean_name):\n                raise ValueError(\"The file '%s' could not be found with %r.\" %\n                                 (clean_name, self))\n            try:\n                content = self.open(clean_name)\n            except IOError:\n                # Handle directory paths and fragments\n                return name\n            opened = True\n        try:\n            file_hash = self.file_hash(clean_name, content)\n        finally:\n            if opened:\n                content.close()\n        path, filename = os.path.split(clean_name)\n        root, ext = os.path.splitext(filename)\n        if file_hash is not None:\n            file_hash = \".%s\" % file_hash\n        hashed_name = os.path.join(path, \"%s%s%s\" %\n                                   (root, file_hash, ext))\n        unparsed_name = list(parsed_name)\n        unparsed_name[2] = hashed_name\n        # Special casing for a @font-face hack, like url(myfont.eot?#iefix\")\n        # http://www.fontspring.com/blog/the-new-bulletproof-font-face-syntax\n        if '?#' in name and not unparsed_name[3]:\n            unparsed_name[2] += '?'\n        return urlunsplit(unparsed_name)\n\n    def cache_key(self, name):\n        return 'staticfiles:%s' % hashlib.md5(force_bytes(name)).hexdigest()\n\n    def url(self, name, force=False):\n        \"\"\"\n        Returns the real URL in DEBUG mode.\n        \"\"\"\n        if settings.DEBUG and not force:\n            hashed_name, fragment = name, ''\n        else:\n            clean_name, fragment = urldefrag(name)\n            if urlsplit(clean_name).path.endswith('/'):  # don't hash paths\n                hashed_name = name\n            else:\n                cache_key = self.cache_key(name)\n                hashed_name = self.cache.get(cache_key)\n                if hashed_name is None:\n                    hashed_name = self.hashed_name(clean_name).replace('\\\\', '/')\n                    # set the cache if there was a miss\n                    # (e.g. if cache server goes down)\n                    self.cache.set(cache_key, hashed_name)\n\n        final_url = super(CachedFilesMixin, self).url(hashed_name)\n\n        # Special casing for a @font-face hack, like url(myfont.eot?#iefix\")\n        # http://www.fontspring.com/blog/the-new-bulletproof-font-face-syntax\n        query_fragment = '?#' in name  # [sic!]\n        if fragment or query_fragment:\n            urlparts = list(urlsplit(final_url))\n            if fragment and not urlparts[4]:\n                urlparts[4] = fragment\n            if query_fragment and not urlparts[3]:\n                urlparts[2] += '?'\n            final_url = urlunsplit(urlparts)\n\n        return unquote(final_url)\n\n    def url_converter(self, name, template=None):\n        \"\"\"\n        Returns the custom URL converter for the given file name.\n        \"\"\"\n        if template is None:\n            template = self.default_template\n\n        def converter(matchobj):\n            \"\"\"\n            Converts the matched URL depending on the parent level (`..`)\n            and returns the normalized and hashed URL using the url method\n            of the storage.\n            \"\"\"\n            matched, url = matchobj.groups()\n            # Completely ignore http(s) prefixed URLs,\n            # fragments and data-uri URLs\n            if url.startswith(('#', 'http:', 'https:', 'data:', '//')):\n                return matched\n            name_parts = name.split(os.sep)\n            # Using posix normpath here to remove duplicates\n            url = posixpath.normpath(url)\n            url_parts = url.split('/')\n            parent_level, sub_level = url.count('..'), url.count('/')\n            if url.startswith('/'):\n                sub_level -= 1\n                url_parts = url_parts[1:]\n            if parent_level or not url.startswith('/'):\n                start, end = parent_level + 1, parent_level\n            else:\n                if sub_level:\n                    if sub_level == 1:\n                        parent_level -= 1\n                    start, end = parent_level, 1\n                else:\n                    start, end = 1, sub_level - 1\n            joined_result = '/'.join(name_parts[:-start] + url_parts[end:])\n            hashed_url = self.url(unquote(joined_result), force=True)\n            file_name = hashed_url.split('/')[-1:]\n            relative_url = '/'.join(url.split('/')[:-1] + file_name)\n\n            # Return the hashed version to the file\n            return template % unquote(relative_url)\n\n        return converter\n\n    def post_process(self, paths, dry_run=False, **options):\n        \"\"\"\n        Post process the given list of files (called from collectstatic).\n\n        Processing is actually two separate operations:\n\n        1. renaming files to include a hash of their content for cache-busting,\n           and copying those files to the target storage.\n        2. adjusting files which contain references to other files so they\n           refer to the cache-busting filenames.\n\n        If either of these are performed on a file, then that file is considered\n        post-processed.\n        \"\"\"\n        # don't even dare to process the files if we're in dry run mode\n        if dry_run:\n            return\n\n        # where to store the new paths\n        hashed_paths = {}\n\n        # build a list of adjustable files\n        matches = lambda path: matches_patterns(path, self._patterns.keys())\n        adjustable_paths = [path for path in paths if matches(path)]\n\n        # then sort the files by the directory level\n        path_level = lambda name: len(name.split(os.sep))\n        for name in sorted(paths.keys(), key=path_level, reverse=True):\n\n            # use the original, local file, not the copied-but-unprocessed\n            # file, which might be somewhere far away, like S3\n            storage, path = paths[name]\n            with storage.open(path) as original_file:\n\n                # generate the hash with the original content, even for\n                # adjustable files.\n                hashed_name = self.hashed_name(name, original_file)\n\n                # then get the original's file content..\n                if hasattr(original_file, 'seek'):\n                    original_file.seek(0)\n\n                hashed_file_exists = self.exists(hashed_name)\n                processed = False\n\n                # ..to apply each replacement pattern to the content\n                if name in adjustable_paths:\n                    content = original_file.read().decode(settings.FILE_CHARSET)\n                    for patterns in self._patterns.values():\n                        for pattern, template in patterns:\n                            converter = self.url_converter(name, template)\n                            content = pattern.sub(converter, content)\n                    if hashed_file_exists:\n                        self.delete(hashed_name)\n                    # then save the processed result\n                    content_file = ContentFile(force_bytes(content))\n                    saved_name = self._save(hashed_name, content_file)\n                    hashed_name = force_text(saved_name.replace('\\\\', '/'))\n                    processed = True\n                else:\n                    # or handle the case in which neither processing nor\n                    # a change to the original file happened\n                    if not hashed_file_exists:\n                        processed = True\n                        saved_name = self._save(hashed_name, original_file)\n                        hashed_name = force_text(saved_name.replace('\\\\', '/'))\n\n                # and then set the cache accordingly\n                hashed_paths[self.cache_key(name.replace('\\\\', '/'))] = hashed_name\n                yield name, hashed_name, processed\n\n        # Finally set the cache\n        self.cache.set_many(hashed_paths)\n\n\nclass CachedStaticFilesStorage(CachedFilesMixin, StaticFilesStorage):\n    \"\"\"\n    A static file system storage backend which also saves\n    hashed copies of the files it saves.\n    \"\"\"\n    pass\n\n\nclass AppStaticStorage(FileSystemStorage):\n    \"\"\"\n    A file system storage backend that takes an app module and works\n    for the ``static`` directory of it.\n    \"\"\"\n    prefix = None\n    source_dir = 'static'\n\n    def __init__(self, app, *args, **kwargs):\n        \"\"\"\n        Returns a static file storage if available in the given app.\n        \"\"\"\n        # app is the actual app module\n        mod = import_module(app)\n        mod_path = os.path.dirname(upath(mod.__file__))\n        location = os.path.join(mod_path, self.source_dir)\n        super(AppStaticStorage, self).__init__(location, *args, **kwargs)\n\n\nclass ConfiguredStorage(LazyObject):\n    def _setup(self):\n        self._wrapped = get_storage_class(settings.STATICFILES_STORAGE)()\n\nstaticfiles_storage = ConfiguredStorage()\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/staticfiles/templatetags/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/staticfiles/templatetags/staticfiles.py",
    "content": "from django import template\nfrom django.templatetags.static import StaticNode\nfrom django.contrib.staticfiles.storage import staticfiles_storage\n\nregister = template.Library()\n\n\nclass StaticFilesNode(StaticNode):\n\n    def url(self, context):\n        path = self.path.resolve(context)\n        return staticfiles_storage.url(path)\n\n\n@register.tag('static')\ndef do_static(parser, token):\n    \"\"\"\n    A template tag that returns the URL to a file\n    using staticfiles' storage backend\n\n    Usage::\n\n        {% static path [as varname] %}\n\n    Examples::\n\n        {% static \"myapp/css/base.css\" %}\n        {% static variable_with_path %}\n        {% static \"myapp/css/base.css\" as admin_base_css %}\n        {% static variable_with_path as varname %}\n\n    \"\"\"\n    return StaticFilesNode.handle_token(parser, token)\n\n\ndef static(path):\n    return staticfiles_storage.url(path)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/staticfiles/urls.py",
    "content": "from django.conf import settings\nfrom django.conf.urls.static import static\n\nurlpatterns = []\n\ndef staticfiles_urlpatterns(prefix=None):\n    \"\"\"\n    Helper function to return a URL pattern for serving static files.\n    \"\"\"\n    if prefix is None:\n        prefix = settings.STATIC_URL\n    return static(prefix, view='django.contrib.staticfiles.views.serve')\n\n# Only append if urlpatterns are empty\nif settings.DEBUG and not urlpatterns:\n    urlpatterns += staticfiles_urlpatterns()\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/staticfiles/utils.py",
    "content": "import os\nimport fnmatch\nfrom django.conf import settings\nfrom django.core.exceptions import ImproperlyConfigured\n\ndef matches_patterns(path, patterns=None):\n    \"\"\"\n    Return True or False depending on whether the ``path`` should be\n    ignored (if it matches any pattern in ``ignore_patterns``).\n    \"\"\"\n    if patterns is None:\n        patterns = []\n    for pattern in patterns:\n        if fnmatch.fnmatchcase(path, pattern):\n            return True\n    return False\n\ndef get_files(storage, ignore_patterns=None, location=''):\n    \"\"\"\n    Recursively walk the storage directories yielding the paths\n    of all files that should be copied.\n    \"\"\"\n    if ignore_patterns is None:\n        ignore_patterns = []\n    directories, files = storage.listdir(location)\n    for fn in files:\n        if matches_patterns(fn, ignore_patterns):\n            continue\n        if location:\n            fn = os.path.join(location, fn)\n        yield fn\n    for dir in directories:\n        if matches_patterns(dir, ignore_patterns):\n            continue\n        if location:\n            dir = os.path.join(location, dir)\n        for fn in get_files(storage, ignore_patterns, dir):\n            yield fn\n\ndef check_settings(base_url=None):\n    \"\"\"\n    Checks if the staticfiles settings have sane values.\n\n    \"\"\"\n    if base_url is None:\n        base_url = settings.STATIC_URL\n    if not base_url:\n        raise ImproperlyConfigured(\n            \"You're using the staticfiles app \"\n            \"without having set the required STATIC_URL setting.\")\n    if settings.MEDIA_URL == base_url:\n        raise ImproperlyConfigured(\"The MEDIA_URL and STATIC_URL \"\n                                   \"settings must have different values\")\n    if ((settings.MEDIA_ROOT and settings.STATIC_ROOT) and\n            (settings.MEDIA_ROOT == settings.STATIC_ROOT)):\n        raise ImproperlyConfigured(\"The MEDIA_ROOT and STATIC_ROOT \"\n                                   \"settings must have different values\")\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/staticfiles/views.py",
    "content": "\"\"\"\nViews and functions for serving static files. These are only to be used during\ndevelopment, and SHOULD NOT be used in a production setting.\n\n\"\"\"\nimport os\nimport posixpath\ntry:\n    from urllib.parse import unquote\nexcept ImportError:     # Python 2\n    from urllib import unquote\n\nfrom django.conf import settings\nfrom django.core.exceptions import ImproperlyConfigured\nfrom django.http import Http404\nfrom django.views import static\n\nfrom django.contrib.staticfiles import finders\n\ndef serve(request, path, document_root=None, insecure=False, **kwargs):\n    \"\"\"\n    Serve static files below a given point in the directory structure or\n    from locations inferred from the staticfiles finders.\n\n    To use, put a URL pattern such as::\n\n        (r'^(?P<path>.*)$', 'django.contrib.staticfiles.views.serve')\n\n    in your URLconf.\n\n    It uses the django.views.static view to serve the found files.\n    \"\"\"\n    if not settings.DEBUG and not insecure:\n        raise ImproperlyConfigured(\"The staticfiles view can only be used in \"\n                                   \"debug mode or if the --insecure \"\n                                   \"option of 'runserver' is used\")\n    normalized_path = posixpath.normpath(unquote(path)).lstrip('/')\n    absolute_path = finders.find(normalized_path)\n    if not absolute_path:\n        if path.endswith('/') or path == '':\n            raise Http404(\"Directory indexes are not allowed here.\")\n        raise Http404(\"'%s' could not be found\" % path)\n    document_root, path = os.path.split(absolute_path)\n    return static.serve(request, path, document_root=document_root, **kwargs)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/syndication/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/syndication/views.py",
    "content": "from __future__ import unicode_literals\n\nfrom calendar import timegm\n\nfrom django.conf import settings\nfrom django.contrib.sites.models import get_current_site\nfrom django.core.exceptions import ImproperlyConfigured, ObjectDoesNotExist\nfrom django.http import HttpResponse, Http404\nfrom django.template import loader, TemplateDoesNotExist, RequestContext\nfrom django.utils import feedgenerator, tzinfo\nfrom django.utils.encoding import force_text, iri_to_uri, smart_text\nfrom django.utils.html import escape\nfrom django.utils.http import http_date\nfrom django.utils import six\nfrom django.utils.timezone import is_naive\n\n\ndef add_domain(domain, url, secure=False):\n    protocol = 'https' if secure else 'http'\n    if url.startswith('//'):\n        # Support network-path reference (see #16753) - RSS requires a protocol\n        url = '%s:%s' % (protocol, url)\n    elif not (url.startswith('http://')\n            or url.startswith('https://')\n            or url.startswith('mailto:')):\n        url = iri_to_uri('%s://%s%s' % (protocol, domain, url))\n    return url\n\n\nclass FeedDoesNotExist(ObjectDoesNotExist):\n    pass\n\n\nclass Feed(object):\n    feed_type = feedgenerator.DefaultFeed\n    title_template = None\n    description_template = None\n\n    def __call__(self, request, *args, **kwargs):\n        try:\n            obj = self.get_object(request, *args, **kwargs)\n        except ObjectDoesNotExist:\n            raise Http404('Feed object does not exist.')\n        feedgen = self.get_feed(obj, request)\n        response = HttpResponse(content_type=feedgen.mime_type)\n        if hasattr(self, 'item_pubdate'):\n            # if item_pubdate is defined for the feed, set header so as\n            # ConditionalGetMiddleware is able to send 304 NOT MODIFIED\n            response['Last-Modified'] = http_date(\n                timegm(feedgen.latest_post_date().utctimetuple()))\n        feedgen.write(response, 'utf-8')\n        return response\n\n    def item_title(self, item):\n        # Titles should be double escaped by default (see #6533)\n        return escape(force_text(item))\n\n    def item_description(self, item):\n        return force_text(item)\n\n    def item_link(self, item):\n        try:\n            return item.get_absolute_url()\n        except AttributeError:\n            raise ImproperlyConfigured('Give your %s class a get_absolute_url() method, or define an item_link() method in your Feed class.' % item.__class__.__name__)\n\n    def __get_dynamic_attr(self, attname, obj, default=None):\n        try:\n            attr = getattr(self, attname)\n        except AttributeError:\n            return default\n        if callable(attr):\n            # Check co_argcount rather than try/excepting the function and\n            # catching the TypeError, because something inside the function\n            # may raise the TypeError. This technique is more accurate.\n            try:\n                code = six.get_function_code(attr)\n            except AttributeError:\n                code = six.get_function_code(attr.__call__)\n            if code.co_argcount == 2:       # one argument is 'self'\n                return attr(obj)\n            else:\n                return attr()\n        return attr\n\n    def feed_extra_kwargs(self, obj):\n        \"\"\"\n        Returns an extra keyword arguments dictionary that is used when\n        initializing the feed generator.\n        \"\"\"\n        return {}\n\n    def item_extra_kwargs(self, item):\n        \"\"\"\n        Returns an extra keyword arguments dictionary that is used with\n        the `add_item` call of the feed generator.\n        \"\"\"\n        return {}\n\n    def get_object(self, request, *args, **kwargs):\n        return None\n\n    def get_feed(self, obj, request):\n        \"\"\"\n        Returns a feedgenerator.DefaultFeed object, fully populated, for\n        this feed. Raises FeedDoesNotExist for invalid parameters.\n        \"\"\"\n        current_site = get_current_site(request)\n\n        link = self.__get_dynamic_attr('link', obj)\n        link = add_domain(current_site.domain, link, request.is_secure())\n\n        feed = self.feed_type(\n            title = self.__get_dynamic_attr('title', obj),\n            subtitle = self.__get_dynamic_attr('subtitle', obj),\n            link = link,\n            description = self.__get_dynamic_attr('description', obj),\n            language = settings.LANGUAGE_CODE,\n            feed_url = add_domain(\n                current_site.domain,\n                self.__get_dynamic_attr('feed_url', obj) or request.path,\n                request.is_secure(),\n            ),\n            author_name = self.__get_dynamic_attr('author_name', obj),\n            author_link = self.__get_dynamic_attr('author_link', obj),\n            author_email = self.__get_dynamic_attr('author_email', obj),\n            categories = self.__get_dynamic_attr('categories', obj),\n            feed_copyright = self.__get_dynamic_attr('feed_copyright', obj),\n            feed_guid = self.__get_dynamic_attr('feed_guid', obj),\n            ttl = self.__get_dynamic_attr('ttl', obj),\n            **self.feed_extra_kwargs(obj)\n        )\n\n        title_tmp = None\n        if self.title_template is not None:\n            try:\n                title_tmp = loader.get_template(self.title_template)\n            except TemplateDoesNotExist:\n                pass\n\n        description_tmp = None\n        if self.description_template is not None:\n            try:\n                description_tmp = loader.get_template(self.description_template)\n            except TemplateDoesNotExist:\n                pass\n\n        for item in self.__get_dynamic_attr('items', obj):\n            if title_tmp is not None:\n                title = title_tmp.render(RequestContext(request, {'obj': item, 'site': current_site}))\n            else:\n                title = self.__get_dynamic_attr('item_title', item)\n            if description_tmp is not None:\n                description = description_tmp.render(RequestContext(request, {'obj': item, 'site': current_site}))\n            else:\n                description = self.__get_dynamic_attr('item_description', item)\n            link = add_domain(\n                current_site.domain,\n                self.__get_dynamic_attr('item_link', item),\n                request.is_secure(),\n            )\n            enc = None\n            enc_url = self.__get_dynamic_attr('item_enclosure_url', item)\n            if enc_url:\n                enc = feedgenerator.Enclosure(\n                    url = smart_text(enc_url),\n                    length = smart_text(self.__get_dynamic_attr('item_enclosure_length', item)),\n                    mime_type = smart_text(self.__get_dynamic_attr('item_enclosure_mime_type', item))\n                )\n            author_name = self.__get_dynamic_attr('item_author_name', item)\n            if author_name is not None:\n                author_email = self.__get_dynamic_attr('item_author_email', item)\n                author_link = self.__get_dynamic_attr('item_author_link', item)\n            else:\n                author_email = author_link = None\n\n            pubdate = self.__get_dynamic_attr('item_pubdate', item)\n            if pubdate and is_naive(pubdate):\n                ltz = tzinfo.LocalTimezone(pubdate)\n                pubdate = pubdate.replace(tzinfo=ltz)\n\n            feed.add_item(\n                title = title,\n                link = link,\n                description = description,\n                unique_id = self.__get_dynamic_attr('item_guid', item, link),\n                enclosure = enc,\n                pubdate = pubdate,\n                author_name = author_name,\n                author_email = author_email,\n                author_link = author_link,\n                categories = self.__get_dynamic_attr('item_categories', item),\n                item_copyright = self.__get_dynamic_attr('item_copyright', item),\n                **self.item_extra_kwargs(item)\n            )\n        return feed\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/webdesign/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/webdesign/lorem_ipsum.py",
    "content": "\"\"\"\nUtility functions for generating \"lorem ipsum\" Latin text.\n\"\"\"\n\nfrom __future__ import unicode_literals\n\nimport random\n\nCOMMON_P = 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.'\n\nWORDS = ('exercitationem', 'perferendis', 'perspiciatis', 'laborum', 'eveniet',\n        'sunt', 'iure', 'nam', 'nobis', 'eum', 'cum', 'officiis', 'excepturi',\n        'odio', 'consectetur', 'quasi', 'aut', 'quisquam', 'vel', 'eligendi',\n        'itaque', 'non', 'odit', 'tempore', 'quaerat', 'dignissimos',\n        'facilis', 'neque', 'nihil', 'expedita', 'vitae', 'vero', 'ipsum',\n        'nisi', 'animi', 'cumque', 'pariatur', 'velit', 'modi', 'natus',\n        'iusto', 'eaque', 'sequi', 'illo', 'sed', 'ex', 'et', 'voluptatibus',\n        'tempora', 'veritatis', 'ratione', 'assumenda', 'incidunt', 'nostrum',\n        'placeat', 'aliquid', 'fuga', 'provident', 'praesentium', 'rem',\n        'necessitatibus', 'suscipit', 'adipisci', 'quidem', 'possimus',\n        'voluptas', 'debitis', 'sint', 'accusantium', 'unde', 'sapiente',\n        'voluptate', 'qui', 'aspernatur', 'laudantium', 'soluta', 'amet',\n        'quo', 'aliquam', 'saepe', 'culpa', 'libero', 'ipsa', 'dicta',\n        'reiciendis', 'nesciunt', 'doloribus', 'autem', 'impedit', 'minima',\n        'maiores', 'repudiandae', 'ipsam', 'obcaecati', 'ullam', 'enim',\n        'totam', 'delectus', 'ducimus', 'quis', 'voluptates', 'dolores',\n        'molestiae', 'harum', 'dolorem', 'quia', 'voluptatem', 'molestias',\n        'magni', 'distinctio', 'omnis', 'illum', 'dolorum', 'voluptatum', 'ea',\n        'quas', 'quam', 'corporis', 'quae', 'blanditiis', 'atque', 'deserunt',\n        'laboriosam', 'earum', 'consequuntur', 'hic', 'cupiditate',\n        'quibusdam', 'accusamus', 'ut', 'rerum', 'error', 'minus', 'eius',\n        'ab', 'ad', 'nemo', 'fugit', 'officia', 'at', 'in', 'id', 'quos',\n        'reprehenderit', 'numquam', 'iste', 'fugiat', 'sit', 'inventore',\n        'beatae', 'repellendus', 'magnam', 'recusandae', 'quod', 'explicabo',\n        'doloremque', 'aperiam', 'consequatur', 'asperiores', 'commodi',\n        'optio', 'dolor', 'labore', 'temporibus', 'repellat', 'veniam',\n        'architecto', 'est', 'esse', 'mollitia', 'nulla', 'a', 'similique',\n        'eos', 'alias', 'dolore', 'tenetur', 'deleniti', 'porro', 'facere',\n        'maxime', 'corrupti')\n\nCOMMON_WORDS = ('lorem', 'ipsum', 'dolor', 'sit', 'amet', 'consectetur',\n        'adipisicing', 'elit', 'sed', 'do', 'eiusmod', 'tempor', 'incididunt',\n        'ut', 'labore', 'et', 'dolore', 'magna', 'aliqua')\n\ndef sentence():\n    \"\"\"\n    Returns a randomly generated sentence of lorem ipsum text.\n\n    The first word is capitalized, and the sentence ends in either a period or\n    question mark. Commas are added at random.\n    \"\"\"\n    # Determine the number of comma-separated sections and number of words in\n    # each section for this sentence.\n    sections = [' '.join(random.sample(WORDS, random.randint(3, 12))) for i in range(random.randint(1, 5))]\n    s = ', '.join(sections)\n    # Convert to sentence case and add end punctuation.\n    return '%s%s%s' % (s[0].upper(), s[1:], random.choice('?.'))\n\ndef paragraph():\n    \"\"\"\n    Returns a randomly generated paragraph of lorem ipsum text.\n\n    The paragraph consists of between 1 and 4 sentences, inclusive.\n    \"\"\"\n    return ' '.join([sentence() for i in range(random.randint(1, 4))])\n\ndef paragraphs(count, common=True):\n    \"\"\"\n    Returns a list of paragraphs as returned by paragraph().\n\n    If `common` is True, then the first paragraph will be the standard\n    'lorem ipsum' paragraph. Otherwise, the first paragraph will be random\n    Latin text. Either way, subsequent paragraphs will be random Latin text.\n    \"\"\"\n    paras = []\n    for i in range(count):\n        if common and i == 0:\n            paras.append(COMMON_P)\n        else:\n            paras.append(paragraph())\n    return paras\n\ndef words(count, common=True):\n    \"\"\"\n    Returns a string of `count` lorem ipsum words separated by a single space.\n\n    If `common` is True, then the first 19 words will be the standard\n    'lorem ipsum' words. Otherwise, all words will be selected randomly.\n    \"\"\"\n    if common:\n        word_list = list(COMMON_WORDS)\n    else:\n        word_list = []\n    c = len(word_list)\n    if count > c:\n        count -= c\n        while count > 0:\n            c = min(count, len(WORDS))\n            count -= c\n            word_list += random.sample(WORDS, c)\n    else:\n        word_list = word_list[:count]\n    return ' '.join(word_list)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/webdesign/models.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/webdesign/templatetags/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/contrib/webdesign/templatetags/webdesign.py",
    "content": "from __future__ import unicode_literals\n\nfrom django.contrib.webdesign.lorem_ipsum import words, paragraphs\nfrom django import template\n\nregister = template.Library()\n\nclass LoremNode(template.Node):\n    def __init__(self, count, method, common):\n        self.count, self.method, self.common = count, method, common\n\n    def render(self, context):\n        try:\n            count = int(self.count.resolve(context))\n        except (ValueError, TypeError):\n            count = 1\n        if self.method == 'w':\n            return words(count, common=self.common)\n        else:\n            paras = paragraphs(count, common=self.common)\n        if self.method == 'p':\n            paras = ['<p>%s</p>' % p for p in paras]\n        return '\\n\\n'.join(paras)\n\n@register.tag\ndef lorem(parser, token):\n    \"\"\"\n    Creates random Latin text useful for providing test data in templates.\n\n    Usage format::\n\n        {% lorem [count] [method] [random] %}\n\n    ``count`` is a number (or variable) containing the number of paragraphs or\n    words to generate (default is 1).\n\n    ``method`` is either ``w`` for words, ``p`` for HTML paragraphs, ``b`` for\n    plain-text paragraph blocks (default is ``b``).\n\n    ``random`` is the word ``random``, which if given, does not use the common\n    paragraph (starting \"Lorem ipsum dolor sit amet, consectetuer...\").\n\n    Examples:\n        * ``{% lorem %}`` will output the common \"lorem ipsum\" paragraph\n        * ``{% lorem 3 p %}`` will output the common \"lorem ipsum\" paragraph\n          and two random paragraphs each wrapped in HTML ``<p>`` tags\n        * ``{% lorem 2 w random %}`` will output two random latin words\n    \"\"\"\n    bits = list(token.split_contents())\n    tagname = bits[0]\n    # Random bit\n    common = bits[-1] != 'random'\n    if not common:\n        bits.pop()\n    # Method bit\n    if bits[-1] in ('w', 'p', 'b'):\n        method = bits.pop()\n    else:\n        method = 'b'\n    # Count bit\n    if len(bits) > 1:\n        count = bits.pop()\n    else:\n        count = '1'\n    count = parser.compile_filter(count)\n    if len(bits) != 1:\n        raise template.TemplateSyntaxError(\"Incorrect format for %r tag\" % tagname)\n    return LoremNode(count, method, common)\n"
  },
  {
    "path": "Django-1.5.1/django/contrib/webdesign/tests.py",
    "content": "# -*- coding: utf-8 -*-\nfrom __future__ import unicode_literals\n\nimport unittest\n\nfrom django.contrib.webdesign.lorem_ipsum import *\nfrom django.template import loader, Context\n\n\nclass WebdesignTest(unittest.TestCase):\n\n    def test_words(self):\n        self.assertEqual(words(7), 'lorem ipsum dolor sit amet consectetur adipisicing')\n\n    def test_paragraphs(self):\n        self.assertEqual(paragraphs(1),\n                         ['Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.'])\n\n    def test_lorem_tag(self):\n        t = loader.get_template_from_string(\"{% load webdesign %}{% lorem 3 w %}\")\n        self.assertEqual(t.render(Context({})),\n                         'lorem ipsum dolor')\n"
  },
  {
    "path": "Django-1.5.1/django/core/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/core/cache/__init__.py",
    "content": "\"\"\"\nCaching framework.\n\nThis package defines set of cache backends that all conform to a simple API.\nIn a nutshell, a cache is a set of values -- which can be any object that\nmay be pickled -- identified by string keys.  For the complete API, see\nthe abstract BaseCache class in django.core.cache.backends.base.\n\nClient code should not access a cache backend directly; instead it should\neither use the \"cache\" variable made available here, or it should use the\nget_cache() function made available here. get_cache() takes a backend URI\n(e.g. \"memcached://127.0.0.1:11211/\") and returns an instance of a backend\ncache class.\n\nSee docs/topics/cache.txt for information on the public API.\n\"\"\"\ntry:\n    from urllib.parse import parse_qsl\nexcept ImportError:     # Python 2\n    from urlparse import parse_qsl\n\nfrom django.conf import settings\nfrom django.core import signals\nfrom django.core.cache.backends.base import (\n    InvalidCacheBackendError, CacheKeyWarning, BaseCache)\nfrom django.core.exceptions import ImproperlyConfigured\nfrom django.utils import importlib\n\n__all__ = [\n    'get_cache', 'cache', 'DEFAULT_CACHE_ALIAS'\n]\n\n# Name for use in settings file --> name of module in \"backends\" directory.\n# Any backend scheme that is not in this dictionary is treated as a Python\n# import path to a custom backend.\nBACKENDS = {\n    五种缓存方案\n    'memcached': 'memcached',\n    'locmem': 'locmem',\n    'file': 'filebased',\n    'db': 'db',\n    'dummy': 'dummy',\n}\n\nDEFAULT_CACHE_ALIAS = 'default' 默认\n\n不懂\ndef parse_backend_uri(backend_uri):\n    \"\"\"\n    Converts the \"backend_uri\" into a cache scheme ('db', 'memcached', etc), a\n    host and any extra params that are required for the backend. Returns a\n    (scheme, host, params) tuple.\n    \"\"\"\n    if backend_uri.find(':') == -1:\n        raise InvalidCacheBackendError(\"Backend URI must start with scheme://\")\n\n    scheme, rest = backend_uri.split(':', 1)\n    if not rest.startswith('//'):\n        raise InvalidCacheBackendError(\"Backend URI must start with scheme://\")\n\n    host = rest[2:]\n    qpos = rest.find('?')\n\n    if qpos != -1:\n        params = dict(parse_qsl(rest[qpos+1:]))\n        host = rest[2:qpos]\n    else:\n        params = {}\n    if host.endswith('/'):\n        host = host[:-1]\n\n    return scheme, host, params\n\nif DEFAULT_CACHE_ALIAS not in settings.CACHES: 如果没有 CACHES 中没有 default\n    raise ImproperlyConfigured(\"You must define a '%s' cache\" % DEFAULT_CACHE_ALIAS)\n\n解析后端缓存设置, backend 是 setting 中指定的某个机制\ndef parse_backend_conf(backend, **kwargs):\n    \"\"\"\n    Helper function to parse the backend configuration\n    that doesn't use the URI notation.\n    \"\"\"\n    # Try to get the CACHES entry for the given backend name first\n    conf = settings.CACHES.get(backend, None) 获取设置 backend 应该是 default\n\n    if conf is not None:\n        args = conf.copy()\n        args.update(kwargs)\n        backend = args.pop('BACKEND') \n        location = args.pop('LOCATION', '') \n        return backend, location, args\n\n    else:\n        try:\n            # Trying to import the given backend, in case it's a dotted path\n            mod_path, cls_name = backend.rsplit('.', 1)\n            mod = importlib.import_module(mod_path)\n            backend_cls = getattr(mod, cls_name)\n        except (AttributeError, ImportError, ValueError):\n            raise InvalidCacheBackendError(\"Could not find backend '%s'\" % backend)\n\n        location = kwargs.pop('LOCATION', '')\n        return backend, location, kwargs\n\n动态加载缓存机制\ndef get_cache(backend, **kwargs):\n    \"\"\"\n    Function to load a cache backend dynamically. This is flexible by design\n    to allow different use cases:\n\n    To load a backend with the old URI-based notation::\n\n        cache = get_cache('locmem://')\n\n    To load a backend that is pre-defined in the settings::\n\n        cache = get_cache('default')\n\n    To load a backend with its dotted import path,\n    including arbitrary options::\n\n        cache = get_cache('django.core.cache.backends.memcached.MemcachedCache', **{\n            'LOCATION': '127.0.0.1:11211', 'TIMEOUT': 30,\n        })\n\n    \"\"\"\n    try:\n        if '://' in backend: 太过简单的检测\n            # for backwards compatibility\n            backend, location, params = parse_backend_uri(backend)\n\n            if backend in BACKENDS:\n                backend = 'django.core.cache.backends.%s' % BACKENDS[backend]\n\n            params.update(kwargs)\n            mod = importlib.import_module(backend)\n            backend_cls = mod.CacheClass 厉害, 每个模块中都有一个 CacheClass\n        else:\n            backend, location, params = parse_backend_conf(backend, **kwargs)\n            mod_path, cls_name = backend.rsplit('.', 1)\n            mod = importlib.import_module(mod_path)\n            backend_cls = getattr(mod, cls_name)\n\n    except (AttributeError, ImportError) as e:\n        raise InvalidCacheBackendError(\n            \"Could not find backend '%s': %s\" % (backend, e))\n\n    cache = backend_cls(location, params)\n\n    # Some caches -- python-memcached in particular -- need to do a cleanup at the\n    # end of a request cycle. If the cache provides a close() method, wire it up\n    # here.\n    if hasattr(cache, 'close'):\n        signals.request_finished.connect(cache.close) 不懂 \n    return cache\n\ncache = get_cache(DEFAULT_CACHE_ALIAS)\n\n"
  },
  {
    "path": "Django-1.5.1/django/core/cache/backends/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/core/cache/backends/base.py",
    "content": "\"Base Cache class.\"\nfrom __future__ import unicode_literals\n\nimport warnings\n\nfrom django.core.exceptions import ImproperlyConfigured, DjangoRuntimeWarning\nfrom django.utils.importlib import import_module\n\nclass InvalidCacheBackendError(ImproperlyConfigured):\n    pass\n\nclass CacheKeyWarning(DjangoRuntimeWarning):\n    pass\n\n\n# Memcached does not accept keys longer than this.\nMEMCACHE_MAX_KEY_LENGTH = 250 key 的长度有限制\n\ndef default_key_func(key, key_prefix, version):\n    \"\"\"\n    默认的 key 函数\n    Default function to generate keys.\n\n    Constructs the key used by all other methods. By default it prepends\n    the `key_prefix'. KEY_FUNCTION can be used to specify an alternate\n    function with custom key making behavior.\n    \"\"\"\n    return '%s:%s:%s' % (key_prefix, version, key)\n\ndef get_key_func(key_func):\n    \"\"\"\n    Function to decide which key function to use. 决定使用哪种 key 函数\n\n    Defaults to ``default_key_func``.\n    \"\"\"\n    if key_func is not None:\n        if callable(key_func):\n            return key_func\n        else:\n            key_func_module_path, key_func_name = key_func.rsplit('.', 1)\n            key_func_module = import_module(key_func_module_path) 模块路径\n            return getattr(key_func_module, key_func_name)          函数的名字\n    return default_key_func\n\nclass BaseCache(object):\n    def __init__(self, params):\n        timeout = params.get('timeout', params.get('TIMEOUT', 300)) 超时时间\n\n        try:\n            timeout = int(timeout)\n        except (ValueError, TypeError):\n            timeout = 300\n\n        self.default_timeout = timeout\n\n        options = params.get('OPTIONS', {})\n\n        最大的条目数有限制\n        max_entries = params.get('max_entries', options.get('MAX_ENTRIES', 300))\n\n        try:\n            self._max_entries = int(max_entries)\n        except (ValueError, TypeError):\n            self._max_entries = 300\n\n        不懂\n        cull_frequency = params.get('cull_frequency', options.get('CULL_FREQUENCY', 3))\n\n        try:\n            self._cull_frequency = int(cull_frequency)\n        except (ValueError, TypeError):\n            self._cull_frequency = 3\n\n        self.key_prefix = params.get('KEY_PREFIX', '')\n        self.version = params.get('VERSION', 1)\n        self.key_func = get_key_func(params.get('KEY_FUNCTION', None))\n\n    def make_key(self, key, version=None):\n        key 生成器\n        \"\"\"Constructs the key used by all other methods. By default it\n        uses the key_func to generate a key (which, by default,\n        prepends the `key_prefix' and 'version'). An different key\n        function can be provided at the time of cache construction;\n        alternatively, you can subclass the cache backend to provide\n        custom key making behavior.\n        \"\"\"\n        if version is None:\n            version = self.version\n\n        new_key = self.key_func(key, self.key_prefix, version)\n        return new_key\n\n    def add(self, key, value, timeout=None, version=None):\n        \"\"\"\n        在某个 key 中存储 value\n        Set a value in the cache if the key does not already exist. If\n        timeout is given, that timeout will be used for the key; otherwise\n        the default cache timeout will be used.\n\n        如果存储成功, 返回 true\n        Returns True if the value was stored, False otherwise. \n        \"\"\"\n        raise NotImplementedError\n\n    def get(self, key, default=None, version=None):\n        \"\"\"\n        读 value\n        Fetch a given key from the cache. If the key does not exist, return\n        default, which itself defaults to None.\n        \"\"\"\n        raise NotImplementedError\n\n    def set(self, key, value, timeout=None, version=None):\n        \"\"\"\n        Set a value in the cache. If timeout is given, that timeout will be\n        used for the key; otherwise the default cache timeout will be used.\n        \"\"\"\n        raise NotImplementedError\n\n    def delete(self, key, version=None):\n        \"\"\"\n        Delete a key from the cache, failing silently.\n        \"\"\"\n        raise NotImplementedError\n\n    def get_many(self, keys, version=None):\n        \"\"\"\n        返回一堆\n        Fetch a bunch of keys from the cache. For certain backends (memcached,\n        pgsql) this can be *much* faster when fetching multiple values.\n\n        Returns a dict mapping each key in keys to its value. If the given\n        key is missing, it will be missing from the response dict.\n        \"\"\"\n        d = {}\n        for k in keys:\n            val = self.get(k, version=version)\n            if val is not None:\n                d[k] = val\n        return d\n\n    def has_key(self, key, version=None):\n        \"\"\"\n        是否存在此 key\n        Returns True if the key is in the cache and has not expired.\n        \"\"\"\n        return self.get(key, version=version) is not None\n\n    def incr(self, key, delta=1, version=None):\n        \"\"\"\n        简单的 +1 操作\n        Add delta to value in the cache. If the key does not exist, raise a\n        ValueError exception.\n        \"\"\"\n        value = self.get(key, version=version)\n        if value is None:\n            raise ValueError(\"Key '%s' not found\" % key)\n        new_value = value + delta\n        self.set(key, new_value, version=version)\n        return new_value\n\n    def decr(self, key, delta=1, version=None):\n        \"\"\"\n        简单的 -1 操作\n        Subtract delta from value in the cache. If the key does not exist, raise\n        a ValueError exception.\n        \"\"\"\n        return self.incr(key, -delta, version=version)\n\n    def __contains__(self, key):\n        \"\"\"\n        Returns True if the key is in the cache and has not expired.\n        \"\"\"\n        # This is a separate method, rather than just a copy of has_key(),\n        # so that it always has the same functionality as has_key(), even\n        # if a subclass overrides it.\n        return self.has_key(key)\n\n    def set_many(self, data, timeout=None, version=None):\n        \"\"\"\n        Set a bunch of values in the cache at once from a dict of key/value\n        pairs.  For certain backends (memcached), this is much more efficient\n        than calling set() multiple times.\n\n        If timeout is given, that timeout will be used for the key; otherwise\n        the default cache timeout will be used.\n        \"\"\"\n        for key, value in data.items():\n            self.set(key, value, timeout=timeout, version=version)\n\n    def delete_many(self, keys, version=None):\n        \"\"\"\n        Set a bunch of values in the cache at once.  For certain backends\n        (memcached), this is much more efficient than calling delete() multiple\n        times.\n        \"\"\"\n        for key in keys:\n            self.delete(key, version=version)\n\n    def clear(self):\n        删除所有\n        \"\"\"Remove *all* values from the cache at once.\"\"\"\n        raise NotImplementedError\n\n    def validate_key(self, key):\n        \"\"\"\n        Warn about keys that would not be portable to the memcached\n        backend. This encourages (but does not force) writing backend-portable\n        cache code.\n\n        \"\"\" key 的长度不能过长\n        if len(key) > MEMCACHE_MAX_KEY_LENGTH:\n            warnings.warn('Cache key will cause errors if used with memcached: '\n                    '%s (longer than %s)' % (key, MEMCACHE_MAX_KEY_LENGTH),\n                    CacheKeyWarning)\n\n        for char in key:\n            if ord(char) < 33 or ord(char) == 127:\n                warnings.warn('Cache key contains characters that will cause '\n                        'errors if used with memcached: %r' % key,\n                              CacheKeyWarning)\n                \n\n    def incr_version(self, key, delta=1, version=None):\n        \"\"\"Adds delta to the cache version for the supplied key. Returns the\n        new version.\n        \"\"\"\n        if version is None:\n            version = self.version\n\n        value = self.get(key, version=version)\n        if value is None:\n            raise ValueError(\"Key '%s' not found\" % key)\n\n        self.set(key, value, version=version+delta)\n        self.delete(key, version=version)\n        return version+delta\n\n    def decr_version(self, key, delta=1, version=None):\n        \"\"\"Substracts delta from the cache version for the supplied key. Returns\n        the new version.\n        \"\"\"\n        return self.incr_version(key, -delta, version)\n"
  },
  {
    "path": "Django-1.5.1/django/core/cache/backends/db.py",
    "content": "\"Database cache backend.\"\n基于数据库的缓存\n\nimport base64\nimport time\nfrom datetime import datetime\n\ntry:\n    from django.utils.six.moves import cPickle as pickle\nexcept ImportError:\n    import pickle\n\nfrom django.conf import settings\nfrom django.core.cache.backends.base import BaseCache\nfrom django.db import connections, router, transaction, DatabaseError\nfrom django.utils import timezone, six\nfrom django.utils.encoding import force_bytes\n\n\nclass Options(object):\n    \"\"\"A class that will quack like a Django model _meta class.\n\n    This allows cache operations to be controlled by the router\n    \"\"\"\n    def __init__(self, table):\n        self.db_table = table\n        self.app_label = 'django_cache'\n        self.module_name = 'cacheentry'\n        self.verbose_name = 'cache entry'\n        self.verbose_name_plural = 'cache entries'\n        self.object_name =  'CacheEntry'\n        self.abstract = False\n        self.managed = True\n        self.proxy = False\n\nclass BaseDatabaseCache(BaseCache): 多了一个 table\n    def __init__(self, table, params):\n        BaseCache.__init__(self, params)\n        self._table = table\n\n        class CacheEntry(object):\n            _meta = Options(table)\n\n        self.cache_model_class = CacheEntry 缓存模块类\n\nclass DatabaseCache(BaseDatabaseCache):\n\n    # This class uses cursors provided by the database connection. This means\n    # it reads expiration values as aware or naive datetimes depending on the\n    # value of USE_TZ. They must be compared to aware or naive representations\n    # of \"now\" respectively.\n\n    # But it bypasses the ORM for write operations. As a consequence, aware\n    # datetimes aren't made naive for databases that don't support time zones. 市区\n\n    # We work around this problem by always using naive datetimes when writing\n    # expiration values 过期值, in UTC when USE_TZ = True and in local time otherwise.\n\n    def get(self, key, default=None, version=None):\n        key = self.make_key(key, version=version)\n        self.validate_key(key)\n\n        self.cache_model_class 不懂\n        db = router.db_for_read(self.cache_model_class)\n        table = connections[db].ops.quote_name(self._table)\n        cursor = connections[db].cursor() 游标\n\n        cursor.execute(\"SELECT cache_key, value, expires FROM %s \"\n                       \"WHERE cache_key = %%s\" % table, [key]) table\n\n        row = cursor.fetchone() 取一个\n\n        if row is None: 空集\n            return default\n\n        now = timezone.now()\n\n        row[2] 是时间\n        if row[2] < now: 事件比较新\n            db = router.db_for_write(self.cache_model_class)\n            cursor = connections[db].cursor()\n\n            cursor.execute(\"DELETE FROM %s \"\n                           \"WHERE cache_key = %%s\" % table, [key])\n\n            transaction.commit_unless_managed(using=db) 事务\n\n            return default\n\n        value = connections[db].ops.process_clob(row[1])\n        return pickle.loads(base64.b64decode(force_bytes(value))) base64 编码\n\n    def set(self, key, value, timeout=None, version=None):\n        key = self.make_key(key, version=version)\n        self.validate_key(key)\n        self._base_set('set', key, value, timeout)\n\n    def add(self, key, value, timeout=None, version=None):\n        key = self.make_key(key, version=version)\n        self.validate_key(key)\n        return self._base_set('add', key, value, timeout)\n\n    def _base_set(self, mode, key, value, timeout=None):\n\n        if timeout is None: timeout 是超时的时间, 过了这个时间, 就没有效果了\n            timeout = self.default_timeout\n\n                    db_for_read?\n        db = router.db_for_write(self.cache_model_class)\n        table = connections[db].ops.quote_name(self._table)\n        cursor = connections[db].cursor()\n\n        cursor.execute(\"SELECT COUNT(*) FROM %s\" % table)\n\n        num = cursor.fetchone()[0]\n        now = timezone.now()\n        now = now.replace(microsecond=0)\n\n        if settings.USE_TZ: #use timezone\n            exp = datetime.utcfromtimestamp(time.time() + timeout) \n        else:\n            exp = datetime.fromtimestamp(time.time() + timeout)\n\n        exp = exp.replace(microsecond=0)\n\n        最大条目\n        if num > self._max_entries:\n            self._cull(db, cursor, now)\n\n        pickled = pickle.dumps(value, pickle.HIGHEST_PROTOCOL)\n        b64encoded = base64.b64encode(pickled)\n        # The DB column is expecting a string, so make sure the value is a\n        # string, not bytes. Refs #19274.\n        if six.PY3:\n            b64encoded = b64encoded.decode('latin1')\n        cursor.execute(\"SELECT cache_key, expires FROM %s \"\n                       \"WHERE cache_key = %%s\" % table, [key])\n\n        try:\n            result = cursor.fetchone()\n            if result and (mode == 'set' or\n                    (mode == 'add' and result[1] < now)): 更新 result[1] < now 表示超时\n                cursor.execute(\"UPDATE %s SET value = %%s, expires = %%s \"\n                               \"WHERE cache_key = %%s\" % table,\n                               [b64encoded, connections[db].ops.value_to_db_datetime(exp), key])\n            else: 没有条目, 可能需要更新\n                cursor.execute(\"INSERT INTO %s (cache_key, value, expires) \"\n                               \"VALUES (%%s, %%s, %%s)\" % table,\n                               [key, b64encoded, connections[db].ops.value_to_db_datetime(exp)])\n        except DatabaseError:\n            # To be threadsafe, updates/inserts are allowed to fail silently\n            transaction.rollback_unless_managed(using=db)\n            return False\n        else:\n            transaction.commit_unless_managed(using=db)\n            return True\n\n    def delete(self, key, version=None):\n        key = self.make_key(key, version=version)\n        self.validate_key(key)\n\n        db = router.db_for_write(self.cache_model_class)\n        table = connections[db].ops.quote_name(self._table)\n        cursor = connections[db].cursor()\n\n        cursor.execute(\"DELETE FROM %s WHERE cache_key = %%s\" % table, [key])\n        transaction.commit_unless_managed(using=db)\n\n    def has_key(self, key, version=None):\n        key = self.make_key(key, version=version)\n        self.validate_key(key)\n\n        db = router.db_for_read(self.cache_model_class)\n        table = connections[db].ops.quote_name(self._table)\n        cursor = connections[db].cursor()\n\n        if settings.USE_TZ:\n            now = datetime.utcnow()\n        else:\n            now = datetime.now()\n        now = now.replace(microsecond=0)\n        cursor.execute(\"SELECT cache_key FROM %s \"\n                       \"WHERE cache_key = %%s and expires > %%s\" % table,\n                       [key, connections[db].ops.value_to_db_datetime(now)])\n        return cursor.fetchone() is not None\n\n    def _cull(self, db, cursor, now):\n        if self._cull_frequency == 0:\n            self.clear()\n        else:\n            # When USE_TZ is True, 'now' will be an aware datetime in UTC.\n            now = now.replace(tzinfo=None)\n            table = connections[db].ops.quote_name(self._table)\n\n            删除超时的记录\n            cursor.execute(\"DELETE FROM %s WHERE expires < %%s\" % table,\n                           [connections[db].ops.value_to_db_datetime(now)])\n\n            cursor.execute(\"SELECT COUNT(*) FROM %s\" % table)\n            num = cursor.fetchone()[0]\n\n            如果没有超时的记录\n            if num > self._max_entries: \n                cull_num = num // self._cull_frequency\n                cursor.execute(\n                    connections[db].ops.cache_key_culling_sql() % table,\n                    [cull_num])\n                cursor.execute(\"DELETE FROM %s \"\n                               \"WHERE cache_key < %%s\" % table,\n                               [cursor.fetchone()[0]])\n                \n    def clear(self):\n        db = router.db_for_write(self.cache_model_class)\n        table = connections[db].ops.quote_name(self._table)\n        cursor = connections[db].cursor()\n        cursor.execute('DELETE FROM %s' % table)\n\n# For backwards compatibility\nclass CacheClass(DatabaseCache):\n    pass\n"
  },
  {
    "path": "Django-1.5.1/django/core/cache/backends/dummy.py",
    "content": "\"Dummy cache backend\"\n什么都不干, 向后兼容所用??\nfrom django.core.cache.backends.base import BaseCache\n\nclass DummyCache(BaseCache):\n    def __init__(self, host, *args, **kwargs):\n        BaseCache.__init__(self, *args, **kwargs)\n\n    def add(self, key, value, timeout=None, version=None):\n        key = self.make_key(key, version=version)\n        self.validate_key(key)\n        return True\n\n    def get(self, key, default=None, version=None):\n        key = self.make_key(key, version=version)\n        self.validate_key(key)\n        return default\n\n    def set(self, key, value, timeout=None, version=None):\n        key = self.make_key(key, version=version)\n        self.validate_key(key)\n\n    def delete(self, key, version=None):\n        key = self.make_key(key, version=version)\n        self.validate_key(key)\n\n    def get_many(self, keys, version=None):\n        return {}\n\n    def has_key(self, key, version=None):\n        key = self.make_key(key, version=version)\n        self.validate_key(key)\n        return False\n\n    def set_many(self, data, timeout=0, version=None):\n        pass\n\n    def delete_many(self, keys, version=None):\n        pass\n\n    def clear(self):\n        pass\n\n# For backwards compatibility\nclass CacheClass(DummyCache):\n    pass\n"
  },
  {
    "path": "Django-1.5.1/django/core/cache/backends/filebased.py",
    "content": "\"File-based cache backend\"\n基于文件的缓存\n\nimport hashlib\nimport os\nimport shutil 删除所有文件\nimport time\ntry:\n    from django.utils.six.moves import cPickle as pickle\nexcept ImportError:\n    import pickle\n\nfrom django.core.cache.backends.base import BaseCache\nfrom django.utils.encoding import force_bytes\n\nclass FileBasedCache(BaseCache):\n    def __init__(self, dir, params):\n        BaseCache.__init__(self, params)\n        self._dir = dir\n        if not os.path.exists(self._dir):\n            self._createdir()\n\n    def add(self, key, value, timeout=None, version=None):\n        if self.has_key(key, version=version):\n            return False\n\n        self.set(key, value, timeout, version=version)\n        return True\n\n    def get(self, key, default=None, version=None):\n        key = self.make_key(key, version=version)\n        self.validate_key(key)\n\n        fname = self._key_to_file(key)\n        try:\n            with open(fname, 'rb') as f: 文件对象\n                exp = pickle.load(f) 获取过期时间\n                now = time.time()\n\n                if exp < now: 已经过期\n                    self._delete(fname)\n\n                else:\n                    return pickle.load(f)\n\n        except (IOError, OSError, EOFError, pickle.PickleError):\n            pass\n        return default\n\n    def set(self, key, value, timeout=None, version=None):\n        key = self.make_key(key, version=version)\n        self.validate_key(key)\n\n        fname = self._key_to_file(key)\n        dirname = os.path.dirname(fname)\n\n        if timeout is None:\n            timeout = self.default_timeout\n\n        self._cull()\n\n        try:\n            if not os.path.exists(dirname):\n                os.makedirs(dirname)\n\n            with open(fname, 'wb') as f:\n                now = time.time()\n                pickle.dump(now + timeout, f, pickle.HIGHEST_PROTOCOL)\n                pickle.dump(value, f, pickle.HIGHEST_PROTOCOL)\n        except (IOError, OSError):\n            pass\n\n    def delete(self, key, version=None):\n        key = self.make_key(key, version=version)\n        self.validate_key(key)\n        try:\n            self._delete(self._key_to_file(key))\n        except (IOError, OSError):\n            pass\n\n    def _delete(self, fname):\n        os.remove(fname)\n        try:\n            # Remove the 2 subdirs if they're empty\n            dirname = os.path.dirname(fname)\n            os.rmdir(dirname)\n            os.rmdir(os.path.dirname(dirname))\n        except (IOError, OSError):\n            pass\n\n    def has_key(self, key, version=None):\n        key = self.make_key(key, version=version)\n        self.validate_key(key)\n        fname = self._key_to_file(key)\n\n        try:\n            with open(fname, 'rb') as f:\n                exp = pickle.load(f)\n            now = time.time()\n            if exp < now:\n                self._delete(fname)\n                return False\n            else:\n                return True\n        except (IOError, OSError, EOFError, pickle.PickleError):\n            return False\n\n    def _cull(self):\n        if int(self._num_entries) < self._max_entries:\n            return\n\n        try:\n            filelist = sorted(os.listdir(self._dir))    _dir 记录了目录\n        except (IOError, OSError):\n            return\n\n        if self._cull_frequency == 0:\n            doomed = filelist\n        else:                                                   返回下标和值\n            doomed = [os.path.join(self._dir, k) for (i, k) in enumerate(filelist) if i % self._cull_frequency == 0]\n\n        for topdir in doomed:\n            try:\n                for root, _, files in os.walk(topdir): topdir 中的缓存文件全部删除\n                    for f in files:\n                        self._delete(os.path.join(root, f))\n            except (IOError, OSError):\n                pass\n\n    def _createdir(self):\n        try:\n            os.makedirs(self._dir)\n        except OSError:\n            raise EnvironmentError(\"Cache directory '%s' does not exist and could not be created'\" % self._dir)\n\n    def _key_to_file(self, key):\n        \"\"\"\n        filename --> md5\n        Convert the filename into an md5 string. We'll turn the first couple\n        bits of the path into directory prefixes to be nice to filesystems\n        that have problems with large numbers of files in a directory.\n\n        Thus, a cache key of \"foo\" gets turnned into a file named\n        ``{cache-dir}ac/bd/18db4cc2f85cedef654fccc4a4d8``.\n        \"\"\"\n        path = hashlib.md5(force_bytes(key)).hexdigest()\n        path = os.path.join(path[:2], path[2:4], path[4:]) 有意思\n        return os.path.join(self._dir, path)\n\n    def _get_num_entries(self):\n        count = 0\n        for _,_,files in os.walk(self._dir):\n            count += len(files)\n        return count\n    _num_entries = property(_get_num_entries) 为了方便访问\n\n    def clear(self):\n        try:\n            shutil.rmtree(self._dir)\n        except (IOError, OSError):\n            pass\n\n# For backwards compatibility\nclass CacheClass(FileBasedCache):\n    pass\n"
  },
  {
    "path": "Django-1.5.1/django/core/cache/backends/locmem.py",
    "content": "\"Thread-safe in-memory cache backend.\"\n线程安全内存缓存方案\n\nDjango 内部实现\n\nimport time\ntry:\n    from django.utils.six.moves import cPickle as pickle\nexcept ImportError:\n    import pickle\n\nfrom django.core.cache.backends.base import BaseCache\nfrom django.utils.synch import RWLock\n\n# Global in-memory store of cache data. Keyed by name, to provide\n# multiple named local memory caches.\n\n_caches = {} 缓存\n_expire_info = {} 过期信息\n_locks = {}     锁锁\n\nclass LocMemCache(BaseCache):\n    def __init__(self, name, params):\n        BaseCache.__init__(self, params)\n        global _caches, _expire_info, _locks\n        self._cache = _caches.setdefault(name, {})\n        self._expire_info = _expire_info.setdefault(name, {})\n        self._lock = _locks.setdefault(name, RWLock()) 读写锁\n\n    def add(self, key, value, timeout=None, version=None):\n\n        key = self.make_key(key, version=version)\n        self.validate_key(key)\n\n        with self._lock.writer(): 写锁\n            exp = self._expire_info.get(key) 获取过期时间\n\n            if exp is None or exp <= time.time(): 已经过期\n                try:\n                    pickled = pickle.dumps(value, pickle.HIGHEST_PROTOCOL)\n                    self._set(key, pickled, timeout)\n                    return True\n                except pickle.PickleError:\n                    pass\n            return False\n\n    def get(self, key, default=None, version=None):\n        key = self.make_key(key, version=version)\n        self.validate_key(key)\n\n        with self._lock.reader(): 读锁\n            exp = self._expire_info.get(key)\n\n            if exp is None:\n                return default\n            elif exp > time.time(): 没有过期\n                try:\n                    pickled = self._cache[key]\n                    return pickle.loads(pickled)\n                except pickle.PickleError:\n                    return default\n\n        with self._lock.writer(): 写锁, 因为过期了\n            try:\n                del self._cache[key]\n                del self._expire_info[key]\n            except KeyError:\n                pass\n            return default\n\n    def _set(self, key, value, timeout=None):\n        if len(self._cache) >= self._max_entries:\n            self._cull() 挑出\n\n        if timeout is None:\n            timeout = self.default_timeout\n\n        self._cache[key] = value\n        self._expire_info[key] = time.time() + timeout\n\n    def set(self, key, value, timeout=None, version=None):\n        key = self.make_key(key, version=version)\n        self.validate_key(key)\n\n        with self._lock.writer(): 写锁\n            try:\n                pickled = pickle.dumps(value, pickle.HIGHEST_PROTOCOL)\n                self._set(key, pickled, timeout)\n            except pickle.PickleError:\n                pass\n\n    不懂, 有什么用\n    def incr(self, key, delta=1, version=None):\n        value = self.get(key, version=version)\n\n        if value is None:\n            raise ValueError(\"Key '%s' not found\" % key)\n\n        new_value = value + delta\n        key = self.make_key(key, version=version)\n\n        with self._lock.writer():\n            try:\n                pickled = pickle.dumps(new_value, pickle.HIGHEST_PROTOCOL)\n                self._cache[key] = pickled\n            except pickle.PickleError:\n                pass\n\n        return new_value\n\n    def has_key(self, key, version=None):\n        key = self.make_key(key, version=version)\n        self.validate_key(key)\n\n        with self._lock.reader():\n            exp = self._expire_info.get(key)\n\n            if exp is None:\n                return False\n            elif exp > time.time():\n                return True\n\n        with self._lock.writer(): 写锁, 过期\n            try:\n                del self._cache[key]\n                del self._expire_info[key]\n            except KeyError:\n                pass\n            return False\n\n    def _cull(self):\n        if self._cull_frequency == 0: _cull_frequency 没有设置, 全部删除\n            self.clear()\n        else:\n            doomed = [k for (i, k) in enumerate(self._cache) if i % self._cull_frequency == 0]\n\n            for k in doomed:\n                self._delete(k)\n\n    def _delete(self, key):\n        删除缓存和过期信息\n        try:\n            del self._cache[key]\n        except KeyError:\n            pass\n\n        try:\n            del self._expire_info[key]\n        except KeyError:\n            pass\n\n    def delete(self, key, version=None):\n        key = self.make_key(key, version=version)\n        self.validate_key(key)\n\n        with self._lock.writer(): 写锁\n            self._delete(key)\n\n    def clear(self):\n        self._cache.clear()\n        self._expire_info.clear()\n\n# For backwards compatibility\nclass CacheClass(LocMemCache):\n    pass\n"
  },
  {
    "path": "Django-1.5.1/django/core/cache/backends/memcached.py",
    "content": "\"Memcached cache backend\"\n\nimport time\nfrom threading import local\n\nfrom django.core.cache.backends.base import BaseCache, InvalidCacheBackendError\n\nfrom django.utils import six\nfrom django.utils.encoding import force_str\n\nclass BaseMemcachedCache(BaseCache):\n    def __init__(self, server, params, library, value_not_found_exception):\n        super(BaseMemcachedCache, self).__init__(params)\n        if isinstance(server, six.string_types):\n            self._servers = server.split(';')\n        else:\n            self._servers = server\n\n        # The exception type to catch from the underlying library for a key\n        # that was not found. This is a ValueError for python-memcache,\n        # pylibmc.NotFound for pylibmc, and cmemcache will return None without\n        # raising an exception.\n        self.LibraryValueNotFoundException = value_not_found_exception\n\n        self._lib = library\n        self._options = params.get('OPTIONS', None)\n\n    @property\n    def _cache(self):\n        \"\"\"\n        Implements transparent thread-safe access to a memcached client.\n        \"\"\"\n        if getattr(self, '_client', None) is None:\n            self._client = self._lib.Client(self._servers)\n\n        return self._client\n\n    def _get_memcache_timeout(self, timeout):\n        \"\"\"\n        Memcached deals with long (> 30 days) timeouts in a special\n        way. Call this function to obtain a safe value for your timeout.\n        \"\"\"\n        timeout = timeout or self.default_timeout\n        if timeout > 2592000: # 60*60*24*30, 30 days\n            # See http://code.google.com/p/memcached/wiki/FAQ\n            # \"You can set expire times up to 30 days in the future. After that\n            # memcached interprets it as a date, and will expire the item after\n            # said date. This is a simple (but obscure) mechanic.\"\n            #\n            # This means that we have to switch to absolute timestamps.\n            timeout += int(time.time())\n        return int(timeout)\n\n    def make_key(self, key, version=None):\n        # Python 2 memcache requires the key to be a byte string.\n        return force_str(super(BaseMemcachedCache, self).make_key(key, version))\n\n    def add(self, key, value, timeout=0, version=None):\n        key = self.make_key(key, version=version)\n        return self._cache.add(key, value, self._get_memcache_timeout(timeout))\n\n    def get(self, key, default=None, version=None):\n        key = self.make_key(key, version=version)\n        val = self._cache.get(key)\n        if val is None:\n            return default\n        return val\n\n    def set(self, key, value, timeout=0, version=None):\n        key = self.make_key(key, version=version)\n        self._cache.set(key, value, self._get_memcache_timeout(timeout))\n\n    def delete(self, key, version=None):\n        key = self.make_key(key, version=version)\n        self._cache.delete(key)\n\n    def get_many(self, keys, version=None):\n        new_keys = map(lambda x: self.make_key(x, version=version), keys)\n        ret = self._cache.get_multi(new_keys)\n        if ret:\n            _ = {}\n            m = dict(zip(new_keys, keys))\n            for k, v in ret.items():\n                _[m[k]] = v\n            ret = _\n        return ret\n\n    def close(self, **kwargs):\n        self._cache.disconnect_all()\n\n    def incr(self, key, delta=1, version=None):\n        key = self.make_key(key, version=version)\n        # memcached doesn't support a negative delta\n        if delta < 0:\n            return self._cache.decr(key, -delta)\n        try:\n            val = self._cache.incr(key, delta)\n\n        # python-memcache responds to incr on non-existent keys by\n        # raising a ValueError, pylibmc by raising a pylibmc.NotFound\n        # and Cmemcache returns None. In all cases,\n        # we should raise a ValueError though.\n        except self.LibraryValueNotFoundException:\n            val = None\n        if val is None:\n            raise ValueError(\"Key '%s' not found\" % key)\n        return val\n\n    def decr(self, key, delta=1, version=None):\n        key = self.make_key(key, version=version)\n        # memcached doesn't support a negative delta\n        if delta < 0:\n            return self._cache.incr(key, -delta)\n        try:\n            val = self._cache.decr(key, delta)\n\n        # python-memcache responds to incr on non-existent keys by\n        # raising a ValueError, pylibmc by raising a pylibmc.NotFound\n        # and Cmemcache returns None. In all cases,\n        # we should raise a ValueError though.\n        except self.LibraryValueNotFoundException:\n            val = None\n        if val is None:\n            raise ValueError(\"Key '%s' not found\" % key)\n        return val\n\n    def set_many(self, data, timeout=0, version=None):\n        safe_data = {}\n        for key, value in data.items():\n            key = self.make_key(key, version=version)\n            safe_data[key] = value\n        self._cache.set_multi(safe_data, self._get_memcache_timeout(timeout))\n\n    def delete_many(self, keys, version=None):\n        l = lambda x: self.make_key(x, version=version)\n        self._cache.delete_multi(map(l, keys))\n\n    def clear(self):\n        self._cache.flush_all()\n\nclass CacheClass(BaseMemcachedCache):\n    def __init__(self, server, params):\n        import warnings\n        warnings.warn(\n            \"memcached.CacheClass has been split into memcached.MemcachedCache and memcached.PyLibMCCache. Please update your cache backend setting.\",\n            DeprecationWarning\n        )\n        try:\n            import memcache\n        except ImportError:\n            raise InvalidCacheBackendError(\n                \"Memcached cache backend requires either the 'memcache' or 'cmemcache' library\"\n                )\n        super(CacheClass, self).__init__(server, params,\n                                         library=memcache,\n                                         value_not_found_exception=ValueError)\n\nclass MemcachedCache(BaseMemcachedCache):\n    \"An implementation of a cache binding using python-memcached\"\n    def __init__(self, server, params):\n        import memcache\n        super(MemcachedCache, self).__init__(server, params,\n                                             library=memcache,\n                                             value_not_found_exception=ValueError)\n\nclass PyLibMCCache(BaseMemcachedCache):\n    \"An implementation of a cache binding using pylibmc\"\n    def __init__(self, server, params):\n        import pylibmc\n        self._local = local()\n        super(PyLibMCCache, self).__init__(server, params,\n                                           library=pylibmc,\n                                           value_not_found_exception=pylibmc.NotFound)\n\n    @property\n    def _cache(self):\n        # PylibMC uses cache options as the 'behaviors' attribute.\n        # It also needs to use threadlocals, because some versions of\n        # PylibMC don't play well with the GIL.\n        client = getattr(self._local, 'client', None)\n        if client:\n            return client\n\n        client = self._lib.Client(self._servers)\n        if self._options:\n            client.behaviors = self._options\n\n        self._local.client = client\n\n        return client\n"
  },
  {
    "path": "Django-1.5.1/django/core/context_processors.py",
    "content": "\"\"\"\nA set of request processors that return dictionaries to be merged into a\ntemplate context. Each function takes the request object as its only parameter\nand returns a dictionary to add to the context.\n\nThese are referenced from the setting TEMPLATE_CONTEXT_PROCESSORS and used by\nRequestContext.\n\"\"\"\nfrom __future__ import unicode_literals\n\nfrom django.conf import settings\nfrom django.middleware.csrf import get_token\nfrom django.utils import six\nfrom django.utils.encoding import smart_text\nfrom django.utils.functional import lazy\n\n\ndef csrf(request):\n    \"\"\"\n    Context processor that provides a CSRF token, or the string 'NOTPROVIDED' if\n    it has not been provided by either a view decorator or the middleware\n    \"\"\"\n    def _get_val():\n        token = get_token(request)\n        if token is None:\n            # In order to be able to provide debugging info in the\n            # case of misconfiguration, we use a sentinel value\n            # instead of returning an empty dict.\n            return 'NOTPROVIDED'\n        else:\n            return smart_text(token)\n    _get_val = lazy(_get_val, six.text_type)\n\n    return {'csrf_token': _get_val() }\n\ndef debug(request):\n    \"Returns context variables helpful for debugging.\"\n    context_extras = {}\n    if settings.DEBUG and request.META.get('REMOTE_ADDR') in settings.INTERNAL_IPS:\n        context_extras['debug'] = True\n        from django.db import connection\n        context_extras['sql_queries'] = connection.queries\n    return context_extras\n\ndef i18n(request):\n    from django.utils import translation\n\n    context_extras = {}\n    context_extras['LANGUAGES'] = settings.LANGUAGES\n    context_extras['LANGUAGE_CODE'] = translation.get_language()\n    context_extras['LANGUAGE_BIDI'] = translation.get_language_bidi()\n\n    return context_extras\n\ndef tz(request):\n    from django.utils import timezone\n\n    return {'TIME_ZONE': timezone.get_current_timezone_name()}\n\ndef static(request):\n    \"\"\"\n    Adds static-related context variables to the context.\n\n    \"\"\"\n    return {'STATIC_URL': settings.STATIC_URL}\n\ndef media(request):\n    \"\"\"\n    Adds media-related context variables to the context.\n\n    \"\"\"\n    return {'MEDIA_URL': settings.MEDIA_URL}\n\ndef request(request):\n    return {'request': request}\n"
  },
  {
    "path": "Django-1.5.1/django/core/exceptions.py",
    "content": "\"\"\"\nGlobal Django exception and warning classes.\n\"\"\"\nfrom functools import reduce\n\n\nclass DjangoRuntimeWarning(RuntimeWarning):\n    pass\n\n\nclass ObjectDoesNotExist(Exception):\n    \"The requested object does not exist\"\n    silent_variable_failure = True\n\n\nclass MultipleObjectsReturned(Exception):\n    \"The query returned multiple objects when only one was expected.\"\n    pass\n\n\nclass SuspiciousOperation(Exception):\n    \"The user did something suspicious\"\n    pass\n\n\nclass PermissionDenied(Exception):\n    \"The user did not have permission to do that\"\n    pass\n\n\nclass ViewDoesNotExist(Exception):\n    \"The requested view does not exist\"\n    pass\n\n\nclass MiddlewareNotUsed(Exception):\n    \"This middleware is not used in this server configuration\"\n    pass\n\n\nclass ImproperlyConfigured(Exception):\n    \"Django is somehow improperly configured\"\n    pass\n\n\nclass FieldError(Exception):\n    \"\"\"Some kind of problem with a model field.\"\"\"\n    pass\n\n\nNON_FIELD_ERRORS = '__all__'\n\n\nclass ValidationError(Exception):\n    \"\"\"An error while validating data.\"\"\"\n    def __init__(self, message, code=None, params=None):\n        import operator\n        from django.utils.encoding import force_text\n        \"\"\"\n        ValidationError can be passed any object that can be printed (usually\n        a string), a list of objects or a dictionary.\n        \"\"\"\n        if isinstance(message, dict):\n            self.message_dict = message\n            # Reduce each list of messages into a single list.\n            message = reduce(operator.add, message.values())\n\n        if isinstance(message, list):\n            self.messages = [force_text(msg) for msg in message]\n        else:\n            self.code = code\n            self.params = params\n            message = force_text(message)\n            self.messages = [message]\n\n    def __str__(self):\n        # This is needed because, without a __str__(), printing an exception\n        # instance would result in this:\n        # AttributeError: ValidationError instance has no attribute 'args'\n        # See http://www.python.org/doc/current/tut/node10.html#handling\n        if hasattr(self, 'message_dict'):\n            return repr(self.message_dict)\n        return repr(self.messages)\n\n    def __repr__(self):\n        if hasattr(self, 'message_dict'):\n            return 'ValidationError(%s)' % repr(self.message_dict)\n        return 'ValidationError(%s)' % repr(self.messages)\n\n    def update_error_dict(self, error_dict):\n        if hasattr(self, 'message_dict'):\n            if error_dict:\n                for k, v in self.message_dict.items():\n                    error_dict.setdefault(k, []).extend(v)\n            else:\n                error_dict = self.message_dict\n        else:\n            error_dict[NON_FIELD_ERRORS] = self.messages\n        return error_dict\n"
  },
  {
    "path": "Django-1.5.1/django/core/files/__init__.py",
    "content": "from django.core.files.base import File\n"
  },
  {
    "path": "Django-1.5.1/django/core/files/base.py",
    "content": "from __future__ import unicode_literals\n\nimport os\nfrom io import BytesIO, StringIO, UnsupportedOperation\n\nfrom django.utils.encoding import smart_text\nfrom django.core.files.utils import FileProxyMixin\nfrom django.utils import six\nfrom django.utils.encoding import force_bytes, python_2_unicode_compatible\n\n@python_2_unicode_compatible\nclass File(FileProxyMixin):\n    DEFAULT_CHUNK_SIZE = 64 * 2**10\n\n    def __init__(self, file, name=None):\n        self.file = file\n        if name is None:\n            name = getattr(file, 'name', None)\n\n        self.name = name\n\n        if hasattr(file, 'mode'):\n            self.mode = file.mode\n\n    def __str__(self):\n        return smart_text(self.name or '')\n\n    def __repr__(self):\n        return \"<%s: %s>\" % (self.__class__.__name__, self or \"None\")\n\n    def __bool__(self):\n        return bool(self.name)\n\n    def __nonzero__(self):      # Python 2 compatibility\n        return type(self).__bool__(self)\n\n    def __len__(self):\n        return self.size\n\n    def _get_size(self):\n        if not hasattr(self, '_size'):\n\n            提供三种方法得到文件大小, 并设置\n            if hasattr(self.file, 'size'):\n                self._size = self.file.size\n\n            elif hasattr(self.file, 'name') and os.path.exists(self.file.name):\n                self._size = os.path.getsize(self.file.name)\n\n            elif hasattr(self.file, 'tell') and hasattr(self.file, 'seek'):\n                pos = self.file.tell()\n                self.file.seek(0, os.SEEK_END)\n                self._size = self.file.tell()\n                self.file.seek(pos)\n            else:\n                raise AttributeError(\"Unable to determine the file's size.\")\n\n        return self._size\n\n    def _set_size(self, size):\n        self._size = size\n\n    size = property(_get_size, _set_size) 方便\n\n    def _get_closed(self):\n        return not self.file or self.file.closed\n    closed = property(_get_closed)\n\n    def chunks(self, chunk_size=None):\n        \"\"\"\n        读取文件, 依次返回数据块\n        Read the file and yield chucks of ``chunk_size`` bytes (defaults to\n        ``UploadedFile.DEFAULT_CHUNK_SIZE``).\n        \"\"\"\n        if not chunk_size:\n            chunk_size = self.DEFAULT_CHUNK_SIZE\n\n        try:\n            self.seek(0)\n        except (AttributeError, UnsupportedOperation):\n            pass\n\n        while True:\n            data = self.read(chunk_size) 不懂，根本没有read 方法，子类实现\n            if not data:\n                break\n            yield data\n\n    def multiple_chunks(self, chunk_size=None):\n        \"\"\"\n        Returns ``True`` if you can expect multiple chunks.\n\n        NB: If a particular file representation is in memory, subclasses should\n        always return ``False`` -- there's no good reason to read from memory in\n        chunks.\n        \"\"\"\n        if not chunk_size:\n            chunk_size = self.DEFAULT_CHUNK_SIZE\n        return self.size > chunk_size\n\n    def __iter__(self):\n        # Iterate over this file-like object by newlines\n        buffer_ = None\n        for chunk in self.chunks():\n            chunk_buffer = BytesIO(chunk)\n\n            for line in chunk_buffer:\n                if buffer_:\n                    line = buffer_ + line\n                    buffer_ = None\n\n                # If this is the end of a line, yield\n                # otherwise, wait for the next round\n                if line[-1] in ('\\n', '\\r'):\n                    yield line\n                else:\n                    buffer_ = line\n                每次都返回一行\n\n        if buffer_ is not None:\n            yield buffer_\n            最后返回剩下的\n\n    def __enter__(self):\n        return self\n\n    def __exit__(self, exc_type, exc_value, tb):\n        self.close() 实际上关闭文件\n\n    def open(self, mode=None):\n        if not self.closed:\n            self.seek(0) 如果没有关闭, 调整指针\n        elif self.name and os.path.exists(self.name):\n            self.file = open(self.name, mode or self.mode)\n        else:\n            raise ValueError(\"The file cannot be reopened.\")\n\n    def close(self):\n        self.file.close()\n\n@python_2_unicode_compatible\nclass ContentFile(File):\n    \"\"\"\n    非真正文件, 只是包含文件内容\n    A File-like object that takes just raw content, rather than an actual file. \n    \"\"\"\n    def __init__(self, content, name=None):\n        if six.PY3:\n            stream_class = StringIO if isinstance(content, six.text_type) else BytesIO\n        else:\n            stream_class = BytesIO\n\n            content = force_bytes(content)\n            \n        super(ContentFile, self).__init__(stream_class(content), name=name)\n        self.size = len(content)\n\n    def __str__(self):\n        return 'Raw content'\n\n    def __bool__(self):\n        return True\n\n    def __nonzero__(self):      # Python 2 compatibility\n        return type(self).__bool__(self)\n\n    def open(self, mode=None):\n        self.seek(0)\n\n    def close(self):\n        pass\n"
  },
  {
    "path": "Django-1.5.1/django/core/files/images.py",
    "content": "\"\"\"\nUtility functions for handling images.\n\nRequires PIL, as you might imagine.\n\"\"\"\n\nfrom django.core.files import File\n\n图像文件\nclass ImageFile(File):\n    \"\"\"\n    A mixin for use alongside django.core.files.base.File, which provides\n    additional features for dealing with images.\n    \"\"\"\n    def _get_width(self):\n        return self._get_image_dimensions()[0]\n    width = property(_get_width)\n\n    def _get_height(self):\n        return self._get_image_dimensions()[1]\n    height = property(_get_height)\n\n    def _get_image_dimensions(self):\n        if not hasattr(self, '_dimensions_cache'):\n            close = self.closed\n            self.open()\n            self._dimensions_cache = get_image_dimensions(self, close=close)\n        return self._dimensions_cache\n\ndef get_image_dimensions(file_or_path, close=False):\n    \"\"\"\n    Returns the (width, height) of an image, given an open file or a path.  Set\n    'close' to True to close the file at the end if it is initially in an open\n    state.\n    \"\"\"\n    # Try to import PIL in either of the two ways it can end up installed.\n    try:\n        from PIL import ImageFile as PILImageFile\n    except ImportError:\n        import ImageFile as PILImageFile\n\n    p = PILImageFile.Parser()\n    if hasattr(file_or_path, 'read'):\n        file = file_or_path\n        file_pos = file.tell()\n        file.seek(0)\n    else:\n        file = open(file_or_path, 'rb')\n        close = True\n    try:\n        # Most of the time PIL only needs a small chunk to parse the image and\n        # get the dimensions, but with some TIFF files PIL needs to parse the\n        # whole file.\n        chunk_size = 1024\n        while 1:\n            data = file.read(chunk_size)\n            if not data:\n                break\n            p.feed(data)\n            if p.image:\n                return p.image.size\n            chunk_size = chunk_size*2\n        return None\n    finally:\n        if close:\n            file.close()\n        else:\n            file.seek(file_pos)\n"
  },
  {
    "path": "Django-1.5.1/django/core/files/locks.py",
    "content": "\"\"\"\nPortable file locking utilities.\n便携文件锁工具\n\nBased partially on example by Jonathan Feignberg <jdf@pobox.com> in the Python\nCookbook, licensed under the Python Software License.\n\n    http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65203\n\nExample Usage::\n\n    >>> from django.core.files import locks\n    >>> with open('./file', 'wb') as f:\n    ...     locks.lock(f, locks.LOCK_EX)\n    ...     f.write('Django')\n\"\"\"\n\n__all__ = ('LOCK_EX','LOCK_SH','LOCK_NB','lock','unlock')\n\nsystem_type = None\n\ntry:\n    import win32con\n    import win32file\n    import pywintypes\n    LOCK_EX = win32con.LOCKFILE_EXCLUSIVE_LOCK\n    LOCK_SH = 0\n    LOCK_NB = win32con.LOCKFILE_FAIL_IMMEDIATELY\n    __overlapped = pywintypes.OVERLAPPED()\n    system_type = 'nt'\nexcept (ImportError, AttributeError):\n    pass\n\ntry:\n    import fcntl\n    LOCK_EX = fcntl.LOCK_EX\n    LOCK_SH = fcntl.LOCK_SH\n    LOCK_NB = fcntl.LOCK_NB\n    system_type = 'posix'\nexcept (ImportError, AttributeError):\n    pass\n\ndef fd(f):\n    \"\"\"Get a filedescriptor from something which could be a file or an fd.\"\"\"\n    return hasattr(f, 'fileno') and f.fileno() or f 文件描述符\n\n文件锁函数\nif system_type == 'nt':\n    def lock(file, flags):\n        hfile = win32file._get_osfhandle(fd(file))\n        win32file.LockFileEx(hfile, flags, 0, -0x10000, __overlapped)\n\n    def unlock(file):\n        hfile = win32file._get_osfhandle(fd(file))\n        win32file.UnlockFileEx(hfile, 0, -0x10000, __overlapped)\n\nelif system_type == 'posix':\n    def lock(file, flags):\n        fcntl.lockf(fd(file), flags)\n\n    def unlock(file):\n        fcntl.lockf(fd(file), fcntl.LOCK_UN)\nelse:\n    # File locking is not supported.\n    LOCK_EX = LOCK_SH = LOCK_NB = None\n\n    # Dummy functions that don't do anything.\n    def lock(file, flags):\n        pass\n\n    def unlock(file):\n        pass\n"
  },
  {
    "path": "Django-1.5.1/django/core/files/move.py",
    "content": "\"\"\"\nMove a file in the safest way possible::\n\n    >>> from django.core.files.move import file_move_safe\n    >>> file_move_safe(\"/tmp/old_file\", \"/tmp/new_file\")\n\"\"\"\n\nimport os\nfrom django.core.files import locks\n\ntry:\n    from shutil import copystat\nexcept ImportError:\n    import stat\n    def copystat(src, dst):\n        \"\"\"Copy all stat info (mode bits, atime and mtime) from src to dst\"\"\"\n        st = os.stat(src)\n        mode = stat.S_IMODE(st.st_mode)\n\n        if hasattr(os, 'utime'):\n            os.utime(dst, (st.st_atime, st.st_mtime))\n\n        if hasattr(os, 'chmod'):\n            os.chmod(dst, mode)\n\n__all__ = ['file_move_safe']\n\ndef _samefile(src, dst):\n    # Macintosh, Unix. 苹果\n    if hasattr(os.path,'samefile'):\n        try:\n            return os.path.samefile(src, dst)\n        except OSError:\n            return False\n\n    # All other platforms: check for same pathname.\n    return (os.path.normcase(os.path.abspath(src)) ==\n            os.path.normcase(os.path.abspath(dst)))\n\ndef file_move_safe(old_file_name, new_file_name, chunk_size = 1024*64, allow_overwrite=False):\n    \"\"\"\n    Moves a file from one location to another in the safest way possible.\n\n    First, tries ``os.rename``, which is simple but will break across filesystems.\n    If that fails, streams manually from one file to another in pure Python.\n\n    If the destination file exists and ``allow_overwrite`` is ``False``, this\n    function will throw an ``IOError``.\n    \"\"\"\n\n    # There's no reason to move if we don't have to.\n    if _samefile(old_file_name, new_file_name):\n        return\n\n    try:\n        os.rename(old_file_name, new_file_name)\n        return\n    except OSError:\n        # This will happen with os.rename if moving to another filesystem 跨文件系统会出错\n        # or when moving opened files on certain operating systems\n        pass\n\n    # first open the old file, so that it won't go away\n    with open(old_file_name, 'rb') as old_file:\n        # now open the new file, not forgetting allow_overwrite\n        fd = os.open(new_file_name, os.O_WRONLY | os.O_CREAT | getattr(os, 'O_BINARY', 0) |\n                                    (not allow_overwrite and os.O_EXCL or 0))\n        try:\n            locks.lock(fd, locks.LOCK_EX)\n            current_chunk = None\n            while current_chunk != b'':\n                current_chunk = old_file.read(chunk_size)\n                os.write(fd, current_chunk)\n        finally:\n            locks.unlock(fd)\n            os.close(fd)\n    copystat(old_file_name, new_file_name)\n\n    try:\n        os.remove(old_file_name)\n    except OSError as e:\n        # Certain operating systems (Cygwin and Windows) \n        # fail when deleting opened files, ignore it.  (For the \n        # systems where this happens, temporary files will be auto-deleted\n        # on close anyway.)\n        if getattr(e, 'winerror', 0) != 32 and getattr(e, 'errno', 0) != 13:\n            raise\n"
  },
  {
    "path": "Django-1.5.1/django/core/files/storage.py",
    "content": "import os\nimport errno\ntry:\n    from urllib.parse import urljoin\nexcept ImportError:     # Python 2\n    from urlparse import urljoin\nimport itertools\nfrom datetime import datetime\n\nfrom django.conf import settings\nfrom django.core.exceptions import ImproperlyConfigured, SuspiciousOperation\nfrom django.core.files import locks, File\nfrom django.core.files.move import file_move_safe\nfrom django.utils.encoding import force_text, filepath_to_uri\nfrom django.utils.functional import LazyObject\nfrom django.utils.importlib import import_module\nfrom django.utils.text import get_valid_filename\nfrom django.utils._os import safe_join, abspathu\n\n应该是用于文件上传存储\n\n__all__ = ('Storage', 'FileSystemStorage', 'DefaultStorage', 'default_storage')\n\nclass Storage(object):\n    \"\"\"\n    A base storage class, providing some default behaviors that all other\n    storage systems can inherit or override, as necessary.\n    \"\"\"\n\n    # The following methods represent a public interface to private methods.\n    # These shouldn't be overridden by subclasses unless absolutely necessary.\n\n    def open(self, name, mode='rb'):\n        \"\"\"\n        Retrieves the specified file from storage.\n        \"\"\"\n        return self._open(name, mode)\n\n    def save(self, name, content):\n        \"\"\"\n        Saves new content to the file specified by name. The content should be a\n        proper File object, ready to be read from the beginning.\n        \"\"\"\n        # Get the proper name for the file, as it will actually be saved.\n        if name is None:\n            name = content.name\n\n        name = self.get_available_name(name)\n        name = self._save(name, content)\n\n        # Store filenames with forward slashes, even on Windows\n        return force_text(name.replace('\\\\', '/'))\n\n    # These methods are part of the public API, with default implementations.\n\n    def get_valid_name(self, name):\n        \"\"\"\n        Returns a filename, based on the provided filename, that's suitable for\n        use in the target storage system.\n        \"\"\"\n        return get_valid_filename(name)\n\n    def get_available_name(self, name):\n        \"\"\"\n        Returns a filename that's free on the target storage system, and\n        available for new content to be written to.\n        \"\"\"\n        dir_name, file_name = os.path.split(name)\n        file_root, file_ext = os.path.splitext(file_name)\n        # If the filename already exists, add an underscore and a number (before\n        # the file extension, if one exists) to the filename until the generated\n        # filename doesn't exist.\n        count = itertools.count(1)\n        while self.exists(name):\n            # file_ext includes the dot.\n            name = os.path.join(dir_name, \"%s_%s%s\" % (file_root, next(count), file_ext))\n\n        return name\n\n    def path(self, name):\n        \"\"\"\n        Returns a local filesystem path where the file can be retrieved using\n        Python's built-in open() function. Storage systems that can't be\n        accessed using open() should *not* implement this method.\n        返回本地文件\n        \"\"\"\n        raise NotImplementedError(\"This backend doesn't support absolute paths.\")\n\n    # The following methods form the public API for storage systems, but with\n    # no default implementations. Subclasses must implement *all* of these.\n\n    def delete(self, name):\n        \"\"\"\n        Deletes the specified file from the storage system.\n        \"\"\"\n        raise NotImplementedError()\n\n    def exists(self, name):\n        \"\"\"\n        Returns True if a file referened by the given name already exists in the\n        storage system, or False if the name is available for a new file.\n        \"\"\"\n        raise NotImplementedError()\n\n    def listdir(self, path):\n        \"\"\"\n        Lists the contents of the specified path, returning a 2-tuple of lists;\n        the first item being directories, the second item being files.\n        \"\"\"\n        raise NotImplementedError()\n\n    def size(self, name):\n        \"\"\"\n        Returns the total size, in bytes, of the file specified by name.\n        \"\"\"\n        raise NotImplementedError()\n\n    def url(self, name):\n        \"\"\"\n        Returns an absolute URL where the file's contents can be accessed\n        directly by a Web browser.\n        \"\"\"\n        raise NotImplementedError()\n\n    def accessed_time(self, name):\n        \"\"\"\n        Returns the last accessed time (as datetime object) of the file\n        specified by name.\n        \"\"\"\n        raise NotImplementedError()\n\n    def created_time(self, name):\n        \"\"\"\n        Returns the creation time (as datetime object) of the file\n        specified by name.\n        \"\"\"\n        raise NotImplementedError()\n\n    def modified_time(self, name):\n        \"\"\"\n        Returns the last modified time (as datetime object) of the file\n        specified by name.\n        \"\"\"\n        raise NotImplementedError()\n\nclass FileSystemStorage(Storage):\n    \"\"\"\n    Standard filesystem storage\n    \"\"\"\n\n    def __init__(self, location=None, base_url=None):\n        if location is None:\n            location = settings.MEDIA_ROOT 默认是 media_root zhi指定的路径\n        self.base_location = location\n        self.location = abspathu(self.base_location)\n        if base_url is None:\n            base_url = settings.MEDIA_URL\n        self.base_url = base_url\n\n    def _open(self, name, mode='rb'):\n        return File(open(self.path(name), mode))\n\n    def _save(self, name, content):\n        full_path = self.path(name)\n\n        # Create any intermediate directories that do not exist.\n        # Note that there is a race between os.path.exists and os.makedirs:\n        # if os.makedirs fails with EEXIST, the directory was created\n        # concurrently, and we can continue normally. Refs #16082.\n        directory = os.path.dirname(full_path)\n\n        if not os.path.exists(directory):\n            try:\n                os.makedirs(directory)\n            except OSError as e:\n                if e.errno != errno.EEXIST:\n                    raise\n\n        if not os.path.isdir(directory):\n            raise IOError(\"%s exists and is not a directory.\" % directory)\n\n        # There's a potential race condition between get_available_name and\n        # saving the file; it's possible that two threads might return the\n        # same name, at which point all sorts of fun happens. So we need to\n        # try to create the file, but if it already exists we have to go back\n        # to get_available_name() and try again.\n\n        while True:\n            try:\n                # This file has a file path that we can move.\n                if hasattr(content, 'temporary_file_path'):\n                    file_move_safe(content.temporary_file_path(), full_path)\n                    content.close()\n\n                # This is a normal uploadedfile that we can stream.\n                else:\n                    # This fun binary flag incantation makes os.open throw an\n                    # OSError if the file already exists before we open it.\n                    flags = (os.O_WRONLY | os.O_CREAT | os.O_EXCL |\n                             getattr(os, 'O_BINARY', 0))\n                    # The current umask value is masked out by os.open!\n                    fd = os.open(full_path, flags, 0o666)\n                    try:\n                        locks.lock(fd, locks.LOCK_EX)\n                        _file = None\n                        for chunk in content.chunks():\n                            if _file is None:\n                                mode = 'wb' if isinstance(chunk, bytes) else 'wt'\n                                _file = os.fdopen(fd, mode)\n                            _file.write(chunk)\n                    finally:\n                        locks.unlock(fd)\n                        if _file is not None:\n                            _file.close()\n                        else:\n                            os.close(fd)\n            except OSError as e:\n                if e.errno == errno.EEXIST:\n                    # Ooops, the file exists. We need a new file name.\n                    name = self.get_available_name(name)\n                    full_path = self.path(name)\n                else:\n                    raise\n            else:\n                # OK, the file save worked. Break out of the loop.\n                break\n\n        if settings.FILE_UPLOAD_PERMISSIONS is not None:\n            os.chmod(full_path, settings.FILE_UPLOAD_PERMISSIONS)\n\n        return name\n\n    def delete(self, name):\n        name = self.path(name)\n        # If the file exists, delete it from the filesystem.\n        # Note that there is a race between os.path.exists and os.remove:\n        # if os.remove fails with ENOENT, the file was removed\n        # concurrently, and we can continue normally.\n        if os.path.exists(name):\n            try:\n                os.remove(name)\n            except OSError as e:\n                if e.errno != errno.ENOENT:\n                    raise\n\n    def exists(self, name):\n        return os.path.exists(self.path(name))\n\n    def listdir(self, path):\n        path = self.path(path)\n        directories, files = [], []\n        for entry in os.listdir(path):\n            if os.path.isdir(os.path.join(path, entry)):\n                directories.append(entry)\n            else:\n                files.append(entry)\n        return directories, files\n\n    def path(self, name):\n        try:\n            path = safe_join(self.location, name)\n        except ValueError:\n            raise SuspiciousOperation(\"Attempted access to '%s' denied.\" % name)\n        return os.path.normpath(path)\n\n    def size(self, name):\n        return os.path.getsize(self.path(name))\n\n    def url(self, name):\n        if self.base_url is None:\n            raise ValueError(\"This file is not accessible via a URL.\")\n        return urljoin(self.base_url, filepath_to_uri(name))\n\n    def accessed_time(self, name):\n        return datetime.fromtimestamp(os.path.getatime(self.path(name)))\n\n    def created_time(self, name):\n        return datetime.fromtimestamp(os.path.getctime(self.path(name)))\n\n    def modified_time(self, name):\n        return datetime.fromtimestamp(os.path.getmtime(self.path(name)))\n\ndef get_storage_class(import_path=None):\n    if import_path is None:\n        import_path = settings.DEFAULT_FILE_STORAGE\n    try:\n        dot = import_path.rindex('.')\n    except ValueError:\n        raise ImproperlyConfigured(\"%s isn't a storage module.\" % import_path)\n    module, classname = import_path[:dot], import_path[dot+1:]\n    try:\n        mod = import_module(module)\n    except ImportError as e:\n        raise ImproperlyConfigured('Error importing storage module %s: \"%s\"' % (module, e))\n    try:\n        return getattr(mod, classname)\n    except AttributeError:\n        raise ImproperlyConfigured('Storage module \"%s\" does not define a \"%s\" class.' % (module, classname))\n\nclass DefaultStorage(LazyObject):\n    def _setup(self):\n        self._wrapped = get_storage_class()()\n\ndefault_storage = DefaultStorage()\n"
  },
  {
    "path": "Django-1.5.1/django/core/files/temp.py",
    "content": "\"\"\"\nThe temp module provides a NamedTemporaryFile that can be re-opened on any\nplatform. Most platforms use the standard Python tempfile.TemporaryFile class,\nbut MS Windows users are given a custom class.\n\nThis is needed because in Windows NT, the default implementation of\nNamedTemporaryFile uses the O_TEMPORARY flag, and thus cannot be reopened [1].\n\n1: http://mail.python.org/pipermail/python-list/2005-December/359474.html\n\"\"\"\n\nimport os\nimport tempfile\nfrom django.core.files.utils import FileProxyMixin\n\n__all__ = ('NamedTemporaryFile', 'gettempdir',)\n\nif os.name == 'nt':\n    class TemporaryFile(FileProxyMixin):\n        \"\"\"\n        Temporary file object constructor that works in Windows and supports\n        reopening of the temporary file in windows.\n        可以重复打开的 tempfile\n        \"\"\"\n        def __init__(self, mode='w+b', bufsize=-1, suffix='', prefix='',\n                dir=None):\n            fd, name = tempfile.mkstemp(suffix=suffix, prefix=prefix,\n                                          dir=dir)\n            self.name = name\n            self.file = os.fdopen(fd, mode, bufsize)\n            self.close_called = False\n\n        # Because close can be called during shutdown\n        # we need to cache os.unlink and access it\n        # as self.unlink only\n        unlink = os.unlink\n\n        def close(self):\n            if not self.close_called:\n                self.close_called = True\n                try:\n                    self.file.close()\n                except (OSError, IOError):\n                    pass\n                try:\n                    self.unlink(self.name)\n                except (OSError):\n                    pass\n\n        def __del__(self):\n            self.close()\n\n    NamedTemporaryFile = TemporaryFile\nelse:\n    NamedTemporaryFile = tempfile.NamedTemporaryFile\n\ngettempdir = tempfile.gettempdir\n"
  },
  {
    "path": "Django-1.5.1/django/core/files/uploadedfile.py",
    "content": "\"\"\"\nClasses representing uploaded files.\n\"\"\"\n\n上传文件对象\n\nimport os\nfrom io import BytesIO\n\nfrom django.conf import settings\nfrom django.core.files.base import File\nfrom django.core.files import temp as tempfile\nfrom django.utils.encoding import force_str\n\n__all__ = ('UploadedFile', 'TemporaryUploadedFile', 'InMemoryUploadedFile',\n           'SimpleUploadedFile')\n\nclass UploadedFile(File): \n    \"\"\"\n    A abstract uploaded file (``TemporaryUploadedFile`` and\n    ``InMemoryUploadedFile`` are the built-in concrete subclasses).\n\n    An ``UploadedFile`` object behaves somewhat like a file object 和一般文件有点像, 可能不是文件对象 and\n    represents some file data that the user submitted with a form.\n    \"\"\"\n    DEFAULT_CHUNK_SIZE = 64 * 2**10\n\n    def __init__(self, file=None, name=None, content_type=None, size=None, charset=None):\n        super(UploadedFile, self).__init__(file, name)\n        self.size = size\n        self.content_type = content_type\n        self.charset = charset\n\n    def __repr__(self):\n        return force_str(\"<%s: %s (%s)>\" % (\n            self.__class__.__name__, self.name, self.content_type))\n\n    def _get_name(self):\n        return self._name\n\n    def _set_name(self, name):\n        # Sanitize the file name so that it can't be dangerous.\n        if name is not None:\n            # Just use the basename of the file -- anything else is dangerous.\n            name = os.path.basename(name)\n\n            # File names longer than 255 characters can cause problems on older OSes.\n            if len(name) > 255:\n                name, ext = os.path.splitext(name)\n                name = name[:255 - len(ext)] + ext\n\n        self._name = name\n\n    name = property(_get_name, _set_name)\n\nclass TemporaryUploadedFile(UploadedFile):\n    \"\"\"\n    A file uploaded to a temporary location (i.e. stream-to-disk).\n    \"\"\"\n    def __init__(self, name, content_type, size, charset):\n        if settings.FILE_UPLOAD_TEMP_DIR: 在 settings 中可以设置临时文件的路径\n            file = tempfile.NamedTemporaryFile(suffix='.upload',\n                dir=settings.FILE_UPLOAD_TEMP_DIR)\n        else:\n            file = tempfile.NamedTemporaryFile(suffix='.upload')\n        super(TemporaryUploadedFile, self).__init__(file, name, content_type, size, charset)\n\n    def temporary_file_path(self):\n        \"\"\"\n        Returns the full path of this file.\n        \"\"\"\n        return self.file.name\n\n    def close(self):\n        try:\n            return self.file.close()\n        except OSError as e:\n            if e.errno != 2:\n                # Means the file was moved or deleted before the tempfile\n                # could unlink it.  Still sets self.file.close_called and\n                # calls self.file.file.close() before the exception\n                raise\n\nclass InMemoryUploadedFile(UploadedFile):\n    \"\"\"\n    A file uploaded into memory (i.e. stream-to-memory).\n    \"\"\"\n    def __init__(self, file, field_name, name, content_type, size, charset):\n        super(InMemoryUploadedFile, self).__init__(file, name, content_type, size, charset)\n        self.field_name = field_name\n\n    def open(self, mode=None):\n        self.file.seek(0)\n\n    def close(self):\n        pass\n\n    def chunks(self, chunk_size=None):\n        self.file.seek(0)\n        yield self.read()\n\n    def multiple_chunks(self, chunk_size=None):\n        # Since it's in memory, we'll never have multiple chunks.\n        return False\n\n\nclass SimpleUploadedFile(InMemoryUploadedFile):\n    \"\"\"\n    A simple representation of a file, which just has content, size, and a name.\n    \"\"\"\n    def __init__(self, name, content, content_type='text/plain'):\n        content = content or b''\n        super(SimpleUploadedFile, self).__init__(BytesIO(content), None, name,\n                                                 content_type, len(content), None)\n\n    def from_dict(cls, file_dict):\n        \"\"\"\n        Creates a SimpleUploadedFile object from\n        a dictionary object with the following keys:\n           - filename\n           - content-type\n           - content\n        \"\"\"\n        return cls(file_dict['filename'],\n                   file_dict['content'],\n                   file_dict.get('content-type', 'text/plain'))\n    from_dict = classmethod(from_dict)\n"
  },
  {
    "path": "Django-1.5.1/django/core/files/uploadhandler.py",
    "content": "\"\"\"\nBase file upload handler classes, and the built-in concrete subclasses\n\"\"\"\n\nfrom __future__ import unicode_literals\n\nfrom io import BytesIO\n\nfrom django.conf import settings\nfrom django.core.exceptions import ImproperlyConfigured\nfrom django.core.files.uploadedfile import TemporaryUploadedFile, InMemoryUploadedFile\nfrom django.utils import importlib\nfrom django.utils.encoding import python_2_unicode_compatible\n\n__all__ = ['UploadFileException','StopUpload', 'SkipFile', 'FileUploadHandler',\n           'TemporaryFileUploadHandler', 'MemoryFileUploadHandler',\n           'load_handler', 'StopFutureHandlers']\n\nclass UploadFileException(Exception):\n    \"\"\"\n    Any error having to do with uploading files.\n    \"\"\"\n    pass\n\n@python_2_unicode_compatible\nclass StopUpload(UploadFileException):\n    \"\"\"\n    This exception is raised when an upload must abort.\n    \"\"\"\n    def __init__(self, connection_reset=False):\n        \"\"\"\n        If ``connection_reset`` is ``True``, Django knows will halt the upload\n        without consuming the rest of the upload. This will cause the browser to\n        show a \"connection reset\" error.\n        \"\"\"\n        self.connection_reset = connection_reset\n\n    def __str__(self):\n        if self.connection_reset:\n            return 'StopUpload: Halt current upload.'\n        else:\n            return 'StopUpload: Consume request data, then halt.'\n\nclass SkipFile(UploadFileException):\n    \"\"\"\n    This exception is raised by an upload handler that wants to skip a given file.\n    \"\"\"\n    pass\n\nclass StopFutureHandlers(UploadFileException):\n    \"\"\"\n    Upload handers that have handled a file and do not want future handlers to\n    run should raise this exception instead of returning None.\n    \"\"\"\n    pass\n\n基础类\nclass FileUploadHandler(object):\n    \"\"\"\n    Base class for streaming upload handlers. \n    \"\"\"\n    chunk_size = 64 * 2 ** 10 #: The default chunk size is 64 KB.\n\n    def __init__(self, request=None):\n        self.file_name = None\n        self.content_type = None\n        self.content_length = None\n        self.charset = None\n        self.request = request\n\n    def handle_raw_input(self, input_data, META, content_length, boundary, encoding=None):\n        \"\"\"\n        Handle the raw input from the client.\n\n        Parameters:\n\n            :input_data:\n                An object that supports reading via .read().\n            :META:\n                ``request.META``.\n            :content_length:\n                The (integer) value of the Content-Length header from the\n                client.\n            :boundary: The boundary from the Content-Type header. Be sure to\n                prepend two '--'.\n        \"\"\"\n        pass\n\n    def new_file(self, field_name, file_name, content_type, content_length, charset=None):\n        \"\"\"\n        Signal that a new file has been started.\n\n        Warning: As with any data from the client, you should not trust\n        content_length (and sometimes won't even get it).\n        \"\"\"\n        self.field_name = field_name\n        self.file_name = file_name\n        self.content_type = content_type\n        self.content_length = content_length\n        self.charset = charset\n\n    def receive_data_chunk(self, raw_data, start):\n        \"\"\"\n        Receive data from the streamed upload parser. ``start`` is the position\n        in the file of the chunk.\n        \"\"\"\n        raise NotImplementedError()\n\n    def file_complete(self, file_size):\n        \"\"\"\n        Signal that a file has completed. File size corresponds to the actual\n        size accumulated by all the chunks.\n\n        Subclasses should return a valid ``UploadedFile`` object.\n        \"\"\"\n        raise NotImplementedError()\n\n    def upload_complete(self):\n        \"\"\"\n        Signal that the upload is complete. Subclasses should perform cleanup\n        that is necessary for this handler.\n        \"\"\"\n        pass\n\nclass TemporaryFileUploadHandler(FileUploadHandler):\n    \"\"\"\n    Upload handler that streams data into a temporary file. 将上传文件导出临时文件\n    \"\"\"\n    def __init__(self, *args, **kwargs):\n        super(TemporaryFileUploadHandler, self).__init__(*args, **kwargs)\n\n    def new_file(self, file_name, *args, **kwargs):\n        \"\"\"\n        Create the file object to append to as data is coming in.\n        \"\"\"\n        super(TemporaryFileUploadHandler, self).new_file(file_name, *args, **kwargs)\n        self.file = TemporaryUploadedFile(self.file_name, self.content_type, 0, self.charset)\n\n    def receive_data_chunk(self, raw_data, start):\n        self.file.write(raw_data)\n\n    def file_complete(self, file_size):\n        self.file.seek(0)\n        self.file.size = file_size\n        return self.file\n\nclass MemoryFileUploadHandler(FileUploadHandler):\n    \"\"\"\n    File upload handler to stream uploads into memory (used for small files). 直接在内存中存放上传文件\n    \"\"\"\n\n    def handle_raw_input(self, input_data, META, content_length, boundary, encoding=None):\n        \"\"\"\n        Use the content_length to signal whether or not this handler should be in use.\n        \"\"\"\n        # Check the content-length header to see if we should\n        # If the post is too large, we cannot use the Memory handler.\n        if content_length > settings.FILE_UPLOAD_MAX_MEMORY_SIZE:\n            self.activated = False\n        else:\n            self.activated = True\n\n    def new_file(self, *args, **kwargs):\n        super(MemoryFileUploadHandler, self).new_file(*args, **kwargs)\n        if self.activated:\n            self.file = BytesIO()\n            raise StopFutureHandlers()\n\n    def receive_data_chunk(self, raw_data, start):\n        \"\"\"\n        Add the data to the BytesIO file.\n        \"\"\"\n        if self.activated:\n            self.file.write(raw_data)\n        else:\n            return raw_data\n\n    def file_complete(self, file_size):\n        \"\"\"\n        Return a file object if we're activated.\n        \"\"\"\n        if not self.activated:\n            return\n\n        self.file.seek(0)\n        return InMemoryUploadedFile(\n            file = self.file,\n            field_name = self.field_name,\n            name = self.file_name,\n            content_type = self.content_type,\n            size = file_size,\n            charset = self.charset\n        )\n\n\ndef load_handler(path, *args, **kwargs):\n    \"\"\"\n    Given a path to a handler, return an instance of that handler.\n\n    用法\n    E.g.::\n        >>> load_handler('django.core.files.uploadhandler.TemporaryFileUploadHandler', request)\n        <TemporaryFileUploadHandler object at 0x...>\n\n    \"\"\"\n    i = path.rfind('.')\n    module, attr = path[:i], path[i+1:]\n    try:\n        mod = importlib.import_module(module)\n    except ImportError as e:\n        raise ImproperlyConfigured('Error importing upload handler module %s: \"%s\"' % (module, e))\n    except ValueError:\n        raise ImproperlyConfigured('Error importing upload handler module.'\n            'Is FILE_UPLOAD_HANDLERS a correctly defined list or tuple?')\n    try:\n        cls = getattr(mod, attr)\n    except AttributeError:\n        raise ImproperlyConfigured('Module \"%s\" does not define a \"%s\" upload handler backend' % (module, attr))\n    return cls(*args, **kwargs)\n"
  },
  {
    "path": "Django-1.5.1/django/core/files/utils.py",
    "content": "class FileProxyMixin(object):\n    \"\"\"\n    A mixin class used to forward file methods to an underlaying file\n    object.  The internal file object has to be called \"file\"::\n\n        class FileProxy(FileProxyMixin):\n            def __init__(self, file):\n                self.file = file good\n    \"\"\"\n\n    encoding = property(lambda self: self.file.encoding)\n    fileno = property(lambda self: self.file.fileno)\n    flush = property(lambda self: self.file.flush)\n    isatty = property(lambda self: self.file.isatty)\n    newlines = property(lambda self: self.file.newlines)\n    read = property(lambda self: self.file.read)\n    readinto = property(lambda self: self.file.readinto)\n    readline = property(lambda self: self.file.readline)\n    readlines = property(lambda self: self.file.readlines)\n    seek = property(lambda self: self.file.seek)\n    softspace = property(lambda self: self.file.softspace)\n    tell = property(lambda self: self.file.tell)\n    truncate = property(lambda self: self.file.truncate)\n    write = property(lambda self: self.file.write)\n    writelines = property(lambda self: self.file.writelines)\n    xreadlines = property(lambda self: self.file.xreadlines)\n\n\n    def __iter__(self):\n        return iter(self.file)\n"
  },
  {
    "path": "Django-1.5.1/django/core/handlers/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/core/handlers/base.py",
    "content": "from __future__ import unicode_literals\n\nimport logging\nimport sys\nimport types\n\nfrom django import http\nfrom django.conf import settings\nfrom django.core import exceptions\nfrom django.core import urlresolvers\nfrom django.core import signals\nfrom django.utils.encoding import force_text\nfrom django.utils.importlib import import_module\nfrom django.utils import six\nfrom django.views import debug\n\nlogger = logging.getLogger('django.request')\n\n# 好经典的 handler\nclass BaseHandler(object):\n    # Changes that are always applied to a response (in this order).\n    response_fixes = [\n        http.fix_location_header,\n        http.conditional_content_removal,\n        http.fix_IE_for_attach,\n        http.fix_IE_for_vary,\n    ]\n\n    初始化函数, 初始化请求中间件, 视图中间件, 模版中间件, 响应中间件和异常中间件.\n    def __init__(self):\n        self._request_middleware = self._view_middleware =\n            self._template_response_middleware =\n            self._response_middleware =\n            self._exception_middleware = None  视图, 模版相应, 相应, 异常中间件, 请求中间件\n\n    根据 mysite.settings.py 中的 `MIDDLEWARE_CLASSES` 添加所有的中间件.\n    def load_middleware(self):\n        \"\"\"\n        Populate middleware lists from settings.MIDDLEWARE_CLASSES.\n\n        从 settings 中加载各种中间件\n\n        Must be called after the environment is fixed (see __call__ in subclasses).\n        \"\"\"\n        # 初始化四种中间件\n        self._view_middleware = []\n        self._template_response_middleware = []\n        self._response_middleware = []\n        self._exception_middleware = []\n\n        # 临时的请求中间件, 因为在加入中间件的过程中, 可能会出现异常, 而出现异常都导致加载中间件的不成功, 因此将 self._request_middleware 的赋值放在最后, 表示已经成功.\n        request_middleware = []\n\n        # settings.MIDDLEWARE_CLASSES 设置项指定需要预装的中间件\n        for middleware_path in settings.MIDDLEWARE_CLASSES:\n            try:\n                mw_module, mw_classname = middleware_path.rsplit('.', 1)\n            except ValueError:\n                raise exceptions.ImproperlyConfigured('%s isn\\'t a middleware module' % middleware_path)\n\n            try:\n                尝试导入中间件所在模块.\n                mod = import_module(mw_module)\n            except ImportError as e:\n                raise exceptions.ImproperlyConfigured('Error importing middleware %s: \"%s\"' % (mw_module, e))\n\n            try:\n                尝试得到某种中间件类\n                mw_class = getattr(mod, mw_classname)\n            except AttributeError:\n                raise exceptions.ImproperlyConfigured('Middleware module \"%s\" does not define a \"%s\" class' % (mw_module, mw_classname))\n\n            try:\n                尝试实例化\n                mw_instance = mw_class()\n            except exceptions.MiddlewareNotUsed:\n                continue\n\n            和 urllib 的处理方法类似: 请求预处理, 视图处理?, 模版处理, 相应处理, 错误处理(详见我的 urllib 源码剖析)\n            if hasattr(mw_instance, 'process_request'):\n                # 这里 request_middleware 用的是 append(), 这里是有讲究的:\n                # django 规定, 多个请求中间件调用的次序是其出现的次序, 下同\n                request_middleware.append(mw_instance.process_request)\n\n            if hasattr(mw_instance, 'process_view'):\n                self._view_middleware.append(mw_instance.process_view)\n\n            if hasattr(mw_instance, 'process_template_response'):\n                # 这里 _template_response_middleware 用的是 insert() 头插法, 这里是有讲究的:\n                # django 规定, 多个模版相应中间件调用的次序是其出现次序的逆序, 下同\n                self._template_response_middleware.insert(0, mw_instance.process_template_response)\n\n            if hasattr(mw_instance, 'process_response'):\n                self._response_middleware.insert(0, mw_instance.process_response)\n\n            if hasattr(mw_instance, 'process_exception'):\n                self._exception_middleware.insert(0, mw_instance.process_exception)\n\n        # We only assign to this when initialization is complete as it is used\n        # as a flag for initialization being complete.\n        # 结束的标识, 表明中间件加载成功\n        self._request_middleware = request_middleware\n\n    # 处理请求的函数, 并返回 response\n    def get_response(self, request):\n        \"Returns an HttpResponse object for the given HttpRequest\"\n        根据请求, 得到响应\n\n        try:\n            为该线程提供默认的 url 处理器\n            # Setup default url resolver for this thread, this code is outside\n            # the try/except so we don't get a spurious \"unbound local\n            # variable\" exception in the event an exception is raised before\n            # resolver is set\n\n            #ROOT_URLCONF = 'mysite.urls'\n            urlconf = settings.ROOT_URLCONF\n\n            # set_urlconf() 会设置 url 配置即 settings.ROOT_URLCONF\n            urlresolvers.set_urlconf(urlconf)\n\n            # 实例化 RegexURLResolver, 暂且将其理解为一个 url 的匹配处理器, 下节展开\n            resolver = urlresolvers.RegexURLResolver(r'^/', urlconf)\n\n            try:\n                response = None\n\n                # Apply request middleware 调用请求中间件\n                for middleware_method in self._request_middleware:\n                    response = middleware_method(request)\n\n                    # 如果此 response 有效, 即不走下面的逻辑\n                    if response:\n                        break\n\n                # 如果没有结果\n                if response is None:\n                    # 尝试 request 中是否有 urlconf, 一般没有, 可以忽略此段代码!!!\n                    if hasattr(request, 'urlconf'):\n                        # Reset url resolver with a custom urlconf. 自定义的 urlconf\n                        urlconf = request.urlconf\n                        urlresolvers.set_urlconf(urlconf)\n                        resolver = urlresolvers.RegexURLResolver(r'^/', urlconf)\n                    # 调用 RegexURLResolver.resolve(), 可以理解为启动匹配的函数; 返回 ResolverMatch 实例\n                    resolver_match = resolver.resolve(request.path_info)\n\n                    # resolver_match 对象中存储了有用的信息, 譬如 callback 就是我们在 views.py 中定义的函数.\n                    callback, callback_args, callback_kwargs = resolver_match\n\n                    # 将返回的 resolver_match 挂钩到 request\n                    request.resolver_match = resolver_match\n\n                    # Apply view middleware 调用视图中间件\n                    for middleware_method in self._view_middleware:\n                        response = middleware_method(request, callback, callback_args, callback_kwargs)\n\n                        # 如果此 response 有效, 即不走下面的逻辑\n                        if response:\n                            break\n\n                # response 还是为空\n                if response is None:\n                    try:\n                        # 这里调用的是真正的处理函数, 我们一般在 view.py 中定义这些函数\n                        response = callback(request, *callback_args, **callback_kwargs)\n\n                    except Exception as e:\n                        # If the view raised an exception, run it through exception\n                        # middleware, and if the exception middleware returns a\n                        # response, use that. Otherwise, reraise the exception.\n\n                        # 出现异常, 调用异常中间件\n                        for middleware_method in self._exception_middleware:\n                            response = middleware_method(request, e)\n\n                            # 如果此 response 有效, 即不走下面的逻辑\n                            if response:\n                                break\n\n                        if response is None:\n                            raise\n\n                # response 还是为空, 可能就要异常了\n                # Complain if the view returned None (a common error).\n                if response is None:\n                    if isinstance(callback, types.FunctionType):    # FBV\n                        view_name = callback.__name__\n                    else:                                           # CBV\n                        view_name = callback.__class__.__name__ + '.__call__'\n                    raise ValueError(\"The view %s.%s didn't return an HttpResponse object.\" % (callback.__module__, view_name))\n\n                # If the response supports deferred rendering, apply template\n                # response middleware and the render the response 如果 response 实现了 render, 那么渲染返回.\n                if hasattr(response, 'render') and callable(response.render):\n                    for middleware_method in self._template_response_middleware:\n                        response = middleware_method(request, response)\n                    response = response.render()\n\n            except http.Http404 as e:\n                logger.warning('Not Found: %s', request.path,\n                            extra={\n                                'status_code': 404,\n                                'request': request\n                            })\n\n                # 如果是调试下, 直接要返回 404 页面\n                if settings.DEBUG:\n                    response = debug.technical_404_response(request, e)\n                else:\n                    try:\n                        # 非调试模式下, 获取 url 处理器的默认 404 处理\n                        callback, param_dict = resolver.resolve404()\n                        response = callback(request, **param_dict)\n                    except:\n                        signals.got_request_exception.send(sender=self.__class__, request=request)\n                        response = self.handle_uncaught_exception(request, resolver, sys.exc_info())\n\n            # 访问拒绝\n            except exceptions.PermissionDenied:\n                logger.warning(\n                    'Forbidden (Permission denied): %s', request.path,\n                    extra={\n                        'status_code': 403,\n                        'request': request\n                    })\n                try:\n                    callback, param_dict = resolver.resolve403()\n                    response = callback(request, **param_dict)\n                except:\n                    signals.got_request_exception.send(\n                            sender=self.__class__, request=request)\n                    response = self.handle_uncaught_exception(request,\n                            resolver, sys.exc_info())\n\n            except SystemExit:\n                # Allow sys.exit() to actually exit. See tickets #1023 and #4701\n                raise\n\n            except: # Handle everything else, including SuspiciousOperation, etc.\n                # Get the exception info now, in case another exception is thrown later.\n                signals.got_request_exception.send(sender=self.__class__, request=request)\n                response = self.handle_uncaught_exception(request, resolver, sys.exc_info())\n        finally:\n            # Reset URLconf for this thread on the way out for complete\n            # isolation of request.urlconf 重置, 因为前面有两种 url resolver 的可能, 拒绝混淆\n            urlresolvers.set_urlconf(None)\n\n        try:\n            # Apply response middleware, regardless of the response 调用响应中间件\n            for middleware_method in self._response_middleware:\n                response = middleware_method(request, response)\n\n            response = self.apply_response_fixes(request, response)\n\n        except: # Any exception should be gathered and handled\n            signals.got_request_exception.send(sender=self.__class__, request=request)\n            response = self.handle_uncaught_exception(request, resolver, sys.exc_info())\n\n        return response\n\n    def handle_uncaught_exception(self, request, resolver, exc_info):\n        \"\"\"\n        处理未能捕捉的错误\n\n        Processing for any otherwise uncaught exceptions (those that will\n        generate HTTP 500 responses). Can be overridden by subclasses who want\n        customised 500 handling. 子类中可以重写 500 状态的处理\n\n        Be *very* careful when overriding this because the error could be\n        caused by anything, so assuming something like the database is always\n        available would be an error.\n        \"\"\"\n        if settings.DEBUG_PROPAGATE_EXCEPTIONS:\n            raise\n\n        logger.error('Internal Server Error: %s', request.path,\n            exc_info=exc_info,\n            extra={\n                'status_code': 500,\n                'request': request\n            }\n        )\n\n        调试模式特殊处理\n        if settings.DEBUG:\n            return debug.technical_500_response(request, *exc_info)\n\n        # If Http500 handler is not installed, re-raise last exception 如果http500 处理器都没有安装, 可能会崩溃\n        if resolver.urlconf_module is None:\n            six.reraise(*exc_info)\n\n        # Return an HttpResponse that displays a friendly error message.\n        #这是自定义的 500 处理器\n        callback, param_dict = resolver.resolve500()\n        return callback(request, **param_dict)\n\n    def apply_response_fixes(self, request, response):\n        \"\"\"\n        Applies each of the functions in self.response_fixes to the request and\n        response, modifying the response in the process. Returns the new\n        response.\n        \"\"\"\n        for func in self.response_fixes:\n            response = func(request, response)\n        return response\n\n\ndef get_path_info(environ):\n    \"\"\"\n    将 HTTP 请求的路径转换成 unicode\n    Returns the HTTP request's PATH_INFO as a unicode string.\n    \"\"\"\n    path_info = environ.get('PATH_INFO', str('/'))\n    # Under Python 3, strings in environ are decoded with ISO-8859-1;\n    # re-encode to recover the original bytestring provided by the webserver.\n    if six.PY3:\n        path_info = path_info.encode('iso-8859-1')\n    # It'd be better to implement URI-to-IRI decoding, see #19508.\n    return path_info.decode('utf-8')\n\n\ndef get_script_name(environ):\n    \"\"\"\n    返回 HTTP 请求的脚本\n    Returns the equivalent of the HTTP request's SCRIPT_NAME environment\n    variable. If Apache mod_rewrite has been used, returns what would have been\n    the script name prior to any rewriting (so it's the script name as seen\n    from the client's perspective), unless the FORCE_SCRIPT_NAME setting is\n    set (to anything).\n    \"\"\"\n    if settings.FORCE_SCRIPT_NAME is not None:\n        return force_text(settings.FORCE_SCRIPT_NAME)\n\n    # If Apache's mod_rewrite had a whack at the URL, Apache set either\n    # SCRIPT_URL or REDIRECT_URL to the full resource URL before applying any\n    # rewrites. Unfortunately not every Web server (lighttpd!) passes this\n    # information through all the time, so FORCE_SCRIPT_NAME, above, is still\n    # needed.\n    script_url = environ.get('SCRIPT_URL', environ.get('REDIRECT_URL', str('')))\n    if script_url:\n        script_name = script_url[:-len(environ.get('PATH_INFO', str('')))]\n    else:\n        script_name = environ.get('SCRIPT_NAME', str(''))\n    # Under Python 3, strings in environ are decoded with ISO-8859-1;\n    # re-encode to recover the original bytestring provided by the webserver.\n    if six.PY3:\n        script_name = script_name.encode('iso-8859-1')\n    # It'd be better to implement URI-to-IRI decoding, see #19508.\n    return script_name.decode('utf-8')\n"
  },
  {
    "path": "Django-1.5.1/django/core/handlers/wsgi.py",
    "content": "from __future__ import unicode_literals\n\nimport codecs\nimport logging\nimport sys\nfrom io import BytesIO\nfrom threading import Lock\n\nfrom django import http\nfrom django.core import signals\nfrom django.core.handlers import base\nfrom django.core.urlresolvers import set_script_prefix\nfrom django.utils import datastructures\nfrom django.utils.encoding import force_str, force_text, iri_to_uri\n\nlogger = logging.getLogger('django.request')\n\n\n# See http://www.iana.org/assignments/http-status-codes\nSTATUS_CODE_TEXT = {\n    100: 'CONTINUE',\n    101: 'SWITCHING PROTOCOLS',\n    102: 'PROCESSING',\n    200: 'OK',\n    201: 'CREATED',\n    202: 'ACCEPTED',\n    203: 'NON-AUTHORITATIVE INFORMATION',\n    204: 'NO CONTENT',\n    205: 'RESET CONTENT',\n    206: 'PARTIAL CONTENT',\n    207: 'MULTI-STATUS',\n    208: 'ALREADY REPORTED',\n    226: 'IM USED',\n    300: 'MULTIPLE CHOICES',\n    301: 'MOVED PERMANENTLY',\n    302: 'FOUND',\n    303: 'SEE OTHER',\n    304: 'NOT MODIFIED',\n    305: 'USE PROXY',\n    306: 'RESERVED',\n    307: 'TEMPORARY REDIRECT',\n    400: 'BAD REQUEST',\n    401: 'UNAUTHORIZED',\n    402: 'PAYMENT REQUIRED',\n    403: 'FORBIDDEN',\n    404: 'NOT FOUND',\n    405: 'METHOD NOT ALLOWED',\n    406: 'NOT ACCEPTABLE',\n    407: 'PROXY AUTHENTICATION REQUIRED',\n    408: 'REQUEST TIMEOUT',\n    409: 'CONFLICT',\n    410: 'GONE',\n    411: 'LENGTH REQUIRED',\n    412: 'PRECONDITION FAILED',\n    413: 'REQUEST ENTITY TOO LARGE',\n    414: 'REQUEST-URI TOO LONG',\n    415: 'UNSUPPORTED MEDIA TYPE',\n    416: 'REQUESTED RANGE NOT SATISFIABLE',\n    417: 'EXPECTATION FAILED',\n    422: 'UNPROCESSABLE ENTITY',\n    423: 'LOCKED',\n    424: 'FAILED DEPENDENCY',\n    426: 'UPGRADE REQUIRED',\n    500: 'INTERNAL SERVER ERROR',\n    501: 'NOT IMPLEMENTED',\n    502: 'BAD GATEWAY',\n    503: 'SERVICE UNAVAILABLE',\n    504: 'GATEWAY TIMEOUT',\n    505: 'HTTP VERSION NOT SUPPORTED',\n    506: 'VARIANT ALSO NEGOTIATES',\n    507: 'INSUFFICIENT STORAGE',\n    508: 'LOOP DETECTED',\n    510: 'NOT EXTENDED',\n}\n\nclass LimitedStream(object):\n    '''\n    LimitedStream wraps another stream in order to not allow reading from it 不允许读\n    past specified amount of bytes.\n    '''\n    def __init__(self, stream, limit, buf_size=64 * 1024 * 1024):\n        self.stream = stream\n        self.remaining = limit\n        self.buffer = b''\n        self.buf_size = buf_size\n\n    def _read_limited(self, size=None):\n        if size is None or size > self.remaining:\n            size = self.remaining\n        if size == 0:\n            return b''\n        result = self.stream.read(size)\n        self.remaining -= len(result)\n        return result\n\n    def read(self, size=None):\n        if size is None:\n            result = self.buffer + self._read_limited()\n            self.buffer = b''\n\n        elif size < len(self.buffer):\n            result = self.buffer[:size]\n            self.buffer = self.buffer[size:]\n\n        else: # size >= len(self.buffer) 只能读一部分\n            result = self.buffer + self._read_limited(size - len(self.buffer))\n            self.buffer = b''\n        return result\n\n    def readline(self, size=None):\n        while b'\\n' not in self.buffer and \\\n              (size is None or len(self.buffer) < size):\n            # 直到读到 \\n 为止\n            if size:\n                # since size is not None here, len(self.buffer) < size\n                chunk = self._read_limited(size - len(self.buffer))\n            else:\n                chunk = self._read_limited()\n\n            if not chunk:\n                break\n\n            self.buffer += chunk\n\n        sio = BytesIO(self.buffer)\n        if size:\n            line = sio.readline(size)\n        else:\n            line = sio.readline()\n\n        self.buffer = sio.read() # 把剩下的数据放入 buffer\n        return line\n\n继承自 http.HttpRequest\nclass WSGIRequest(http.HttpRequest):\n    def __init__(self, environ): # 要传入环境变量\n        script_name = base.get_script_name(environ) # 脚本\n        path_info = base.get_path_info(environ)     # 路径\n\n        if not path_info or path_info == script_name:\n            # Sometimes PATH_INFO exists, but is empty (e.g. accessing\n            # the SCRIPT_NAME URL without a trailing slash). We really need to\n            # operate as if they'd requested '/'. Not amazingly nice to force\n            # the path like this, but should be harmless.\n            #\n            # (The comparison of path_info to script_name is to work around an\n            # apparent bug in flup 1.0.1. See Django ticket #8490).\n            path_info = '/'\n\n        self.environ = environ\n        self.path_info = path_info\n        self.path = '%s%s' % (script_name, path_info)\n\n        self.META = environ\n        self.META['PATH_INFO'] = path_info\n        self.META['SCRIPT_NAME'] = script_name\n        self.method = environ['REQUEST_METHOD'].upper()\n\n        _, content_params = self._parse_content_type(self.META.get('CONTENT_TYPE', '')) # 分析请求内容类型\n\n        if 'charset' in content_params:\n            try:\n                codecs.lookup(content_params['charset'])\n            except LookupError:\n                pass\n            else:\n                self.encoding = content_params['charset']\n\n        self._post_parse_error = False\n\n        try:\n            content_length = int(self.environ.get('CONTENT_LENGTH')) # 长度\n        except (ValueError, TypeError):\n            content_length = 0\n\n        self._stream = LimitedStream(self.environ['wsgi.input'], content_length)\n        self._read_started = False\n\n    def _is_secure(self):\n        return 'wsgi.url_scheme' in self.environ and self.environ['wsgi.url_scheme'] == 'https' # url 的方案是否安全的方案\n\n    def _parse_content_type(self, ctype):\n        \"\"\"\n        Media Types parsing according to RFC 2616, section 3.7.\n\n        Returns the data type and parameters. For example:\n        Input: \"text/plain; charset=iso-8859-1\"\n        Output: ('text/plain', {'charset': 'iso-8859-1'})\n        \"\"\"\n        content_type, _, params = ctype.partition(';')\n        content_params = {}\n\n        for parameter in params.split(';'):\n            k, _, v = parameter.strip().partition('=')\n            content_params[k] = v\n        return content_type, content_params\n\n    def _get_request(self):\n        if not hasattr(self, '_request'):\n            self._request = datastructures.MergeDict(self.POST, self.GET) # 合并字典\n        return self._request\n\n    def _get_get(self):\n        if not hasattr(self, '_get'):\n            # The WSGI spec says 'QUERY_STRING' may be absent.\n            self._get = http.QueryDict(self.environ.get('QUERY_STRING', ''), encoding=self._encoding) # 获取 get query string\n\n        return self._get\n\n    def _set_get(self, get):\n        self._get = get\n\n    def _get_post(self):\n        if not hasattr(self, '_post'):\n            self._load_post_and_files()\n        return self._post\n\n    def _set_post(self, post):\n        self._post = post\n\n    def _get_cookies(self):\n        if not hasattr(self, '_cookies'):\n            self._cookies = http.parse_cookie(self.environ.get('HTTP_COOKIE', ''))\n        return self._cookies\n\n    def _set_cookies(self, cookies):\n        self._cookies = cookies\n\n    def _get_files(self):\n        if not hasattr(self, '_files'):\n            self._load_post_and_files()\n        return self._files\n\n    # 很有意思的设计 http://docs.python.org/2/library/functions.html#property\n    GET = property(_get_get, _set_get)\n    POST = property(_get_post, _set_post)\n    COOKIES = property(_get_cookies, _set_cookies)\n    FILES = property(_get_files)\n    REQUEST = property(_get_request)\n\n# 继承, 但只实现了 __call__ 方法, 方便使用\nclass WSGIHandler(base.BaseHandler):\n    initLock = Lock()\n\n    # 关于此, 日后展开, 可以将其视为一个代表 http 请求的类\n    request_class = WSGIRequest\n\n    # WSGIHandler 也可以作为函数来调用\n    def __call__(self, environ, start_response):\n        # Set up middleware if needed. We couldn't do this earlier, because\n        # settings weren't available.\n\n        # 这里的检测: 因为 self._request_middleware 是最后才设定的, 所以如果为空,\n        # 很可能是因为 self.load_middleware() 没有调用成功.\n        if self._request_middleware is None:\n            with self.initLock:\n                try:\n                    # Check that middleware is still uninitialised.\n                    if self._request_middleware is None:\n                        因为 load_middleware() 可能没有调用, 调用一次.\n                        self.load_middleware()\n                except:\n                    # Unload whatever middleware we got\n                    self._request_middleware = None\n                    raise\n\n        set_script_prefix(base.get_script_name(environ))\n        signls.request_started.send(sender=self.__class__) # __class__ 代表自己的类\n\n        try:\n            # 实例化 request_class = WSGIRequest, 将在日后文章中展开, 可以将其视为一个代表 http 请求的类\n            request = self.request_class(environ)\n\n        except UnicodeDecodeError:\n            logger.warning('Bad Request (UnicodeDecodeError)',\n                exc_info=sys.exc_info(),\n                extra={\n                    'status_code': 400,\n                }\n            )\n            response = http.HttpResponseBadRequest()\n        else:\n            # 调用 self.get_response(), 将会返回一个相应对象 response\n            response = self.get_response(request)\n\n        # 将 self 挂钩到 response 对象\n        response._handler_class = self.__class__\n\n        try:\n            status_text = STATUS_CODE_TEXT[response.status_code]\n        except KeyError:\n            status_text = 'UNKNOWN STATUS CODE'\n\n         # 状态码\n        status = '%s %s' % (response.status_code, status_text)\n\n        response_headers = [(str(k), str(v)) for k, v in response.items()]\n\n        # 对于每个一个 cookie, 都在 header 中设置: Set-cookie xxx=yyy\n        for c in response.cookies.values():\n            response_headers.append((str('Set-Cookie'), str(c.output(header=''))))\n\n        # start_response() 操作已经在上节中介绍了\n        start_response(force_str(status), response_headers)\n\n        # 成功返回相应对象\n        return response\n"
  },
  {
    "path": "Django-1.5.1/django/core/mail/__init__.py",
    "content": "\"\"\"\nTools for sending email.\n\"\"\"\nfrom __future__ import unicode_literals\n\nfrom django.conf import settings\nfrom django.core.exceptions import ImproperlyConfigured\nfrom django.utils.importlib import import_module\n\n# Imported for backwards compatibility, and for the sake\n# of a cleaner namespace. These symbols used to be in\n# django/core/mail.py before the introduction of email\n# backends and the subsequent reorganization (See #10355)\nfrom django.core.mail.utils import CachedDnsName, DNS_NAME\nfrom django.core.mail.message import (\n    EmailMessage, EmailMultiAlternatives,\n    SafeMIMEText, SafeMIMEMultipart,\n    DEFAULT_ATTACHMENT_MIME_TYPE, make_msgid,\n    BadHeaderError, forbid_multi_line_headers)\n\n\ndef get_connection(backend=None, fail_silently=False, **kwds):\n    \"\"\"Load an email backend and return an instance of it.\n\n    If backend is None (default) settings.EMAIL_BACKEND is used.\n\n    Both fail_silently and other keyword arguments are used in the\n    constructor of the backend.\n    \"\"\"\n    path = backend or settings.EMAIL_BACKEND\n    try:\n        mod_name, klass_name = path.rsplit('.', 1)\n        mod = import_module(mod_name)\n    except ImportError as e:\n        raise ImproperlyConfigured(('Error importing email backend module %s: \"%s\"'\n                                    % (mod_name, e)))\n    try:\n        klass = getattr(mod, klass_name)\n    except AttributeError:\n        raise ImproperlyConfigured(('Module \"%s\" does not define a '\n                                    '\"%s\" class' % (mod_name, klass_name)))\n    return klass(fail_silently=fail_silently, **kwds)\n\n\ndef send_mail(subject, message, from_email, recipient_list,\n              fail_silently=False, auth_user=None, auth_password=None,\n              connection=None):\n    \"\"\"\n    Easy wrapper for sending a single message to a recipient list. All members\n    of the recipient list will see the other recipients in the 'To' field.\n\n    If auth_user is None, the EMAIL_HOST_USER setting is used.\n    If auth_password is None, the EMAIL_HOST_PASSWORD setting is used.\n\n    Note: The API for this method is frozen. New code wanting to extend the\n    functionality should use the EmailMessage class directly.\n    \"\"\"\n    connection = connection or get_connection(username=auth_user,\n                                    password=auth_password,\n                                    fail_silently=fail_silently)\n    return EmailMessage(subject, message, from_email, recipient_list,\n                        connection=connection).send()\n\n\ndef send_mass_mail(datatuple, fail_silently=False, auth_user=None,\n                   auth_password=None, connection=None):\n    \"\"\"\n    Given a datatuple of (subject, message, from_email, recipient_list), sends\n    each message to each recipient list. Returns the number of emails sent.\n\n    If from_email is None, the DEFAULT_FROM_EMAIL setting is used.\n    If auth_user and auth_password are set, they're used to log in.\n    If auth_user is None, the EMAIL_HOST_USER setting is used.\n    If auth_password is None, the EMAIL_HOST_PASSWORD setting is used.\n\n    Note: The API for this method is frozen. New code wanting to extend the\n    functionality should use the EmailMessage class directly.\n    \"\"\"\n    connection = connection or get_connection(username=auth_user,\n                                    password=auth_password,\n                                    fail_silently=fail_silently)\n    messages = [EmailMessage(subject, message, sender, recipient,\n                             connection=connection)\n                for subject, message, sender, recipient in datatuple]\n    return connection.send_messages(messages)\n\n\ndef mail_admins(subject, message, fail_silently=False, connection=None,\n                html_message=None):\n    \"\"\"Sends a message to the admins, as defined by the ADMINS setting.\"\"\"\n    if not settings.ADMINS:\n        return\n    mail = EmailMultiAlternatives('%s%s' % (settings.EMAIL_SUBJECT_PREFIX, subject),\n                message, settings.SERVER_EMAIL, [a[1] for a in settings.ADMINS],\n                connection=connection)\n    if html_message:\n        mail.attach_alternative(html_message, 'text/html')\n    mail.send(fail_silently=fail_silently)\n\n\ndef mail_managers(subject, message, fail_silently=False, connection=None,\n                  html_message=None):\n    \"\"\"Sends a message to the managers, as defined by the MANAGERS setting.\"\"\"\n    if not settings.MANAGERS:\n        return\n    mail = EmailMultiAlternatives('%s%s' % (settings.EMAIL_SUBJECT_PREFIX, subject),\n                message, settings.SERVER_EMAIL, [a[1] for a in settings.MANAGERS],\n                connection=connection)\n    if html_message:\n        mail.attach_alternative(html_message, 'text/html')\n    mail.send(fail_silently=fail_silently)\n"
  },
  {
    "path": "Django-1.5.1/django/core/mail/backends/__init__.py",
    "content": "# Mail backends shipped with Django.\n"
  },
  {
    "path": "Django-1.5.1/django/core/mail/backends/base.py",
    "content": "\"\"\"Base email backend class.\"\"\"\n\nclass BaseEmailBackend(object):\n    \"\"\"\n    Base class for email backend implementations.\n\n    Subclasses must at least overwrite send_messages().\n    \"\"\"\n    def __init__(self, fail_silently=False, **kwargs):\n        self.fail_silently = fail_silently\n\n    def open(self):\n        \"\"\"Open a network connection.\n\n        This method can be overwritten by backend implementations to\n        open a network connection.\n\n        It's up to the backend implementation to track the status of\n        a network connection if it's needed by the backend.\n\n        This method can be called by applications to force a single\n        network connection to be used when sending mails. See the\n        send_messages() method of the SMTP backend for a reference\n        implementation.\n\n        The default implementation does nothing.\n        \"\"\"\n        pass\n\n    def close(self):\n        \"\"\"Close a network connection.\"\"\"\n        pass\n\n    def send_messages(self, email_messages):\n        \"\"\"\n        Sends one or more EmailMessage objects and returns the number of email\n        messages sent.\n        \"\"\"\n        raise NotImplementedError\n"
  },
  {
    "path": "Django-1.5.1/django/core/mail/backends/console.py",
    "content": "\"\"\"\nEmail backend that writes messages to console instead of sending them.\n\"\"\"\nimport sys\nimport threading\n\nfrom django.core.mail.backends.base import BaseEmailBackend\n\nclass EmailBackend(BaseEmailBackend):\n    def __init__(self, *args, **kwargs):\n        self.stream = kwargs.pop('stream', sys.stdout)\n        self._lock = threading.RLock()\n        super(EmailBackend, self).__init__(*args, **kwargs)\n\n    def send_messages(self, email_messages):\n        \"\"\"Write all messages to the stream in a thread-safe way.\"\"\"\n        if not email_messages:\n            return\n        with self._lock:\n            try:\n                stream_created = self.open()\n                for message in email_messages:\n                    self.stream.write('%s\\n' % message.message().as_string())\n                    self.stream.write('-' * 79)\n                    self.stream.write('\\n')\n                    self.stream.flush()  # flush after each message\n                if stream_created:\n                    self.close()\n            except:\n                if not self.fail_silently:\n                    raise\n        return len(email_messages)\n"
  },
  {
    "path": "Django-1.5.1/django/core/mail/backends/dummy.py",
    "content": "\"\"\"\nDummy email backend that does nothing.\n\"\"\"\n\nfrom django.core.mail.backends.base import BaseEmailBackend\n\nclass EmailBackend(BaseEmailBackend):\n    def send_messages(self, email_messages):\n        return len(email_messages)\n"
  },
  {
    "path": "Django-1.5.1/django/core/mail/backends/filebased.py",
    "content": "\"\"\"Email backend that writes messages to a file.\"\"\"\n\nimport datetime\nimport os\n\nfrom django.conf import settings\nfrom django.core.exceptions import ImproperlyConfigured\nfrom django.core.mail.backends.console import EmailBackend as ConsoleEmailBackend\nfrom django.utils import six\n\nclass EmailBackend(ConsoleEmailBackend):\n    def __init__(self, *args, **kwargs):\n        self._fname = None\n        if 'file_path' in kwargs:\n            self.file_path = kwargs.pop('file_path')\n        else:\n            self.file_path = getattr(settings, 'EMAIL_FILE_PATH',None)\n        # Make sure self.file_path is a string.\n        if not isinstance(self.file_path, six.string_types):\n            raise ImproperlyConfigured('Path for saving emails is invalid: %r' % self.file_path)\n        self.file_path = os.path.abspath(self.file_path)\n        # Make sure that self.file_path is an directory if it exists.\n        if os.path.exists(self.file_path) and not os.path.isdir(self.file_path):\n            raise ImproperlyConfigured('Path for saving email messages exists, but is not a directory: %s' % self.file_path)\n        # Try to create it, if it not exists.\n        elif not os.path.exists(self.file_path):\n            try:\n                os.makedirs(self.file_path)\n            except OSError as err:\n                raise ImproperlyConfigured('Could not create directory for saving email messages: %s (%s)' % (self.file_path, err))\n        # Make sure that self.file_path is writable.\n        if not os.access(self.file_path, os.W_OK):\n            raise ImproperlyConfigured('Could not write to directory: %s' % self.file_path)\n        # Finally, call super().\n        # Since we're using the console-based backend as a base,\n        # force the stream to be None, so we don't default to stdout\n        kwargs['stream'] = None\n        super(EmailBackend, self).__init__(*args, **kwargs)\n\n    def _get_filename(self):\n        \"\"\"Return a unique file name.\"\"\"\n        if self._fname is None:\n            timestamp = datetime.datetime.now().strftime(\"%Y%m%d-%H%M%S\")\n            fname = \"%s-%s.log\" % (timestamp, abs(id(self)))\n            self._fname = os.path.join(self.file_path, fname)\n        return self._fname\n\n    def open(self):\n        if self.stream is None:\n            self.stream = open(self._get_filename(), 'a')\n            return True\n        return False\n\n    def close(self):\n        try:\n            if self.stream is not None:\n                self.stream.close()\n        finally:\n            self.stream = None\n\n"
  },
  {
    "path": "Django-1.5.1/django/core/mail/backends/locmem.py",
    "content": "\"\"\"\nBackend for test environment.\n\"\"\"\n\nfrom django.core import mail\nfrom django.core.mail.backends.base import BaseEmailBackend\n\nclass EmailBackend(BaseEmailBackend):\n    \"\"\"A email backend for use during test sessions.\n\n    The test connection stores email messages in a dummy outbox,\n    rather than sending them out on the wire.\n\n    The dummy outbox is accessible through the outbox instance attribute.\n    \"\"\"\n    def __init__(self, *args, **kwargs):\n        super(EmailBackend, self).__init__(*args, **kwargs)\n        if not hasattr(mail, 'outbox'):\n            mail.outbox = []\n\n    def send_messages(self, messages):\n        \"\"\"Redirect messages to the dummy outbox\"\"\"\n        for message in messages:  # .message() triggers header validation\n            message.message()\n        mail.outbox.extend(messages)\n        return len(messages)\n"
  },
  {
    "path": "Django-1.5.1/django/core/mail/backends/smtp.py",
    "content": "\"\"\"SMTP email backend class.\"\"\"\nimport smtplib\nimport ssl\nimport threading\n\nfrom django.conf import settings\nfrom django.core.mail.backends.base import BaseEmailBackend\nfrom django.core.mail.utils import DNS_NAME\nfrom django.core.mail.message import sanitize_address\nfrom django.utils.encoding import force_bytes\n\n\nclass EmailBackend(BaseEmailBackend):\n    \"\"\"\n    A wrapper that manages the SMTP network connection.\n    \"\"\"\n    def __init__(self, host=None, port=None, username=None, password=None,\n                 use_tls=None, fail_silently=False, **kwargs):\n        super(EmailBackend, self).__init__(fail_silently=fail_silently)\n        self.host = host or settings.EMAIL_HOST\n        self.port = port or settings.EMAIL_PORT\n        if username is None:\n            self.username = settings.EMAIL_HOST_USER\n        else:\n            self.username = username\n        if password is None:\n            self.password = settings.EMAIL_HOST_PASSWORD\n        else:\n            self.password = password\n        if use_tls is None:\n            self.use_tls = settings.EMAIL_USE_TLS\n        else:\n            self.use_tls = use_tls\n        self.connection = None\n        self._lock = threading.RLock()\n\n    def open(self):\n        \"\"\"\n        Ensures we have a connection to the email server. Returns whether or\n        not a new connection was required (True or False).\n        \"\"\"\n        if self.connection:\n            # Nothing to do if the connection is already open.\n            return False\n        try:\n            # If local_hostname is not specified, socket.getfqdn() gets used.\n            # For performance, we use the cached FQDN for local_hostname.\n            self.connection = smtplib.SMTP(self.host, self.port,\n                                           local_hostname=DNS_NAME.get_fqdn())\n            if self.use_tls:\n                self.connection.ehlo()\n                self.connection.starttls()\n                self.connection.ehlo()\n            if self.username and self.password:\n                self.connection.login(self.username, self.password)\n            return True\n        except:\n            if not self.fail_silently:\n                raise\n\n    def close(self):\n        \"\"\"Closes the connection to the email server.\"\"\"\n        if self.connection is None:\n            return\n        try:\n            try:\n                self.connection.quit()\n            except (ssl.SSLError, smtplib.SMTPServerDisconnected):\n                # This happens when calling quit() on a TLS connection\n                # sometimes, or when the connection was already disconnected\n                # by the server.\n                self.connection.close()\n            except:\n                if self.fail_silently:\n                    return\n                raise\n        finally:\n            self.connection = None\n\n    def send_messages(self, email_messages):\n        \"\"\"\n        Sends one or more EmailMessage objects and returns the number of email\n        messages sent.\n        \"\"\"\n        if not email_messages:\n            return\n        with self._lock:\n            new_conn_created = self.open()\n            if not self.connection:\n                # We failed silently on open().\n                # Trying to send would be pointless.\n                return\n            num_sent = 0\n            for message in email_messages:\n                sent = self._send(message)\n                if sent:\n                    num_sent += 1\n            if new_conn_created:\n                self.close()\n        return num_sent\n\n    def _send(self, email_message):\n        \"\"\"A helper method that does the actual sending.\"\"\"\n        if not email_message.recipients():\n            return False\n        from_email = sanitize_address(email_message.from_email, email_message.encoding)\n        recipients = [sanitize_address(addr, email_message.encoding)\n                      for addr in email_message.recipients()]\n        message = email_message.message()\n        charset = message.get_charset().get_output_charset() if message.get_charset() else 'utf-8'\n        try:\n            self.connection.sendmail(from_email, recipients,\n                    force_bytes(message.as_string(), charset))\n        except:\n            if not self.fail_silently:\n                raise\n            return False\n        return True\n"
  },
  {
    "path": "Django-1.5.1/django/core/mail/message.py",
    "content": "from __future__ import unicode_literals\n\nimport mimetypes\nimport os\nimport random\nimport sys\nimport time\nfrom email import charset as Charset, encoders as Encoders\nfrom email.generator import Generator\nfrom email.mime.text import MIMEText\nfrom email.mime.multipart import MIMEMultipart\nfrom email.mime.base import MIMEBase\nfrom email.header import Header\nfrom email.utils import formatdate, getaddresses, formataddr, parseaddr\n\nfrom django.conf import settings\nfrom django.core.mail.utils import DNS_NAME\nfrom django.utils.encoding import force_text\nfrom django.utils import six\n\n\n# Don't BASE64-encode UTF-8 messages so that we avoid unwanted attention from\n# some spam filters.\nCharset.add_charset('utf-8', Charset.SHORTEST, None, 'utf-8')\n\n# Default MIME type to use on attachments (if it is not explicitly given\n# and cannot be guessed).\nDEFAULT_ATTACHMENT_MIME_TYPE = 'application/octet-stream'\n\n\nclass BadHeaderError(ValueError):\n    pass\n\n\n# Copied from Python standard library, with the following modifications:\n# * Used cached hostname for performance.\n# * Added try/except to support lack of getpid() in Jython (#5496).\ndef make_msgid(idstring=None):\n    \"\"\"Returns a string suitable for RFC 2822 compliant Message-ID, e.g:\n\n    <20020201195627.33539.96671@nightshade.la.mastaler.com>\n\n    Optional idstring if given is a string used to strengthen the\n    uniqueness of the message id.\n    \"\"\"\n    timeval = time.time()\n    utcdate = time.strftime('%Y%m%d%H%M%S', time.gmtime(timeval))\n    try:\n        pid = os.getpid()\n    except AttributeError:\n        # No getpid() in Jython, for example.\n        pid = 1\n    randint = random.randrange(100000)\n    if idstring is None:\n        idstring = ''\n    else:\n        idstring = '.' + idstring\n    idhost = DNS_NAME\n    msgid = '<%s.%s.%s%s@%s>' % (utcdate, pid, randint, idstring, idhost)\n    return msgid\n\n\n# Header names that contain structured address data (RFC #5322)\nADDRESS_HEADERS = set([\n    'from',\n    'sender',\n    'reply-to',\n    'to',\n    'cc',\n    'bcc',\n    'resent-from',\n    'resent-sender',\n    'resent-to',\n    'resent-cc',\n    'resent-bcc',\n])\n\n\ndef forbid_multi_line_headers(name, val, encoding):\n    \"\"\"Forbids multi-line headers, to prevent header injection.\"\"\"\n    encoding = encoding or settings.DEFAULT_CHARSET\n    val = force_text(val)\n    if '\\n' in val or '\\r' in val:\n        raise BadHeaderError(\"Header values can't contain newlines (got %r for header %r)\" % (val, name))\n    try:\n        val.encode('ascii')\n    except UnicodeEncodeError:\n        if name.lower() in ADDRESS_HEADERS:\n            val = ', '.join(sanitize_address(addr, encoding)\n                for addr in getaddresses((val,)))\n        else:\n            val = Header(val, encoding).encode()\n    else:\n        if name.lower() == 'subject':\n            val = Header(val).encode()\n    return str(name), val\n\n\ndef sanitize_address(addr, encoding):\n    if isinstance(addr, six.string_types):\n        addr = parseaddr(force_text(addr))\n    nm, addr = addr\n    # This try-except clause is needed on Python 3 < 3.2.4\n    # http://bugs.python.org/issue14291\n    try:\n        nm = Header(nm, encoding).encode()\n    except UnicodeEncodeError:\n        nm = Header(nm, 'utf-8').encode()\n    try:\n        addr.encode('ascii')\n    except UnicodeEncodeError:  # IDN\n        if '@' in addr:\n            localpart, domain = addr.split('@', 1)\n            localpart = str(Header(localpart, encoding))\n            domain = domain.encode('idna').decode('ascii')\n            addr = '@'.join([localpart, domain])\n        else:\n            addr = Header(addr, encoding).encode()\n    return formataddr((nm, addr))\n\n\nclass SafeMIMEText(MIMEText):\n\n    def __init__(self, text, subtype, charset):\n        self.encoding = charset\n        MIMEText.__init__(self, text, subtype, charset)\n\n    def __setitem__(self, name, val):\n        name, val = forbid_multi_line_headers(name, val, self.encoding)\n        MIMEText.__setitem__(self, name, val)\n\n    def as_string(self, unixfrom=False):\n        \"\"\"Return the entire formatted message as a string.\n        Optional `unixfrom' when True, means include the Unix From_ envelope\n        header.\n\n        This overrides the default as_string() implementation to not mangle\n        lines that begin with 'From '. See bug #13433 for details.\n        \"\"\"\n        fp = six.StringIO()\n        g = Generator(fp, mangle_from_ = False)\n        if sys.version_info < (2, 6, 6) and isinstance(self._payload, six.text_type):\n            # Workaround for http://bugs.python.org/issue1368247\n            self._payload = self._payload.encode(self._charset.output_charset)\n        g.flatten(self, unixfrom=unixfrom)\n        return fp.getvalue()\n\n\nclass SafeMIMEMultipart(MIMEMultipart):\n\n    def __init__(self, _subtype='mixed', boundary=None, _subparts=None, encoding=None, **_params):\n        self.encoding = encoding\n        MIMEMultipart.__init__(self, _subtype, boundary, _subparts, **_params)\n\n    def __setitem__(self, name, val):\n        name, val = forbid_multi_line_headers(name, val, self.encoding)\n        MIMEMultipart.__setitem__(self, name, val)\n\n    def as_string(self, unixfrom=False):\n        \"\"\"Return the entire formatted message as a string.\n        Optional `unixfrom' when True, means include the Unix From_ envelope\n        header.\n\n        This overrides the default as_string() implementation to not mangle\n        lines that begin with 'From '. See bug #13433 for details.\n        \"\"\"\n        fp = six.StringIO()\n        g = Generator(fp, mangle_from_ = False)\n        g.flatten(self, unixfrom=unixfrom)\n        return fp.getvalue()\n\n\nclass EmailMessage(object):\n    \"\"\"\n    A container for email information.\n    \"\"\"\n    content_subtype = 'plain'\n    mixed_subtype = 'mixed'\n    encoding = None     # None => use settings default\n\n    def __init__(self, subject='', body='', from_email=None, to=None, bcc=None,\n                 connection=None, attachments=None, headers=None, cc=None):\n        \"\"\"\n        Initialize a single email message (which can be sent to multiple\n        recipients).\n\n        All strings used to create the message can be unicode strings\n        (or UTF-8 bytestrings). The SafeMIMEText class will handle any\n        necessary encoding conversions.\n        \"\"\"\n        if to:\n            assert not isinstance(to, six.string_types), '\"to\" argument must be a list or tuple'\n            self.to = list(to)\n        else:\n            self.to = []\n        if cc:\n            assert not isinstance(cc, six.string_types), '\"cc\" argument must be a list or tuple'\n            self.cc = list(cc)\n        else:\n            self.cc = []\n        if bcc:\n            assert not isinstance(bcc, six.string_types), '\"bcc\" argument must be a list or tuple'\n            self.bcc = list(bcc)\n        else:\n            self.bcc = []\n        self.from_email = from_email or settings.DEFAULT_FROM_EMAIL\n        self.subject = subject\n        self.body = body\n        self.attachments = attachments or []\n        self.extra_headers = headers or {}\n        self.connection = connection\n\n    def get_connection(self, fail_silently=False):\n        from django.core.mail import get_connection\n        if not self.connection:\n            self.connection = get_connection(fail_silently=fail_silently)\n        return self.connection\n\n    def message(self):\n        encoding = self.encoding or settings.DEFAULT_CHARSET\n        msg = SafeMIMEText(self.body, self.content_subtype, encoding)\n        msg = self._create_message(msg)\n        msg['Subject'] = self.subject\n        msg['From'] = self.extra_headers.get('From', self.from_email)\n        msg['To'] = self.extra_headers.get('To', ', '.join(self.to))\n        if self.cc:\n            msg['Cc'] = ', '.join(self.cc)\n\n        # Email header names are case-insensitive (RFC 2045), so we have to\n        # accommodate that when doing comparisons.\n        header_names = [key.lower() for key in self.extra_headers]\n        if 'date' not in header_names:\n            msg['Date'] = formatdate()\n        if 'message-id' not in header_names:\n            msg['Message-ID'] = make_msgid()\n        for name, value in self.extra_headers.items():\n            if name.lower() in ('from', 'to'):  # From and To are already handled\n                continue\n            msg[name] = value\n        return msg\n\n    def recipients(self):\n        \"\"\"\n        Returns a list of all recipients of the email (includes direct\n        addressees as well as Cc and Bcc entries).\n        \"\"\"\n        return self.to + self.cc + self.bcc\n\n    def send(self, fail_silently=False):\n        \"\"\"Sends the email message.\"\"\"\n        if not self.recipients():\n            # Don't bother creating the network connection if there's nobody to\n            # send to.\n            return 0\n        return self.get_connection(fail_silently).send_messages([self])\n\n    def attach(self, filename=None, content=None, mimetype=None):\n        \"\"\"\n        Attaches a file with the given filename and content. The filename can\n        be omitted and the mimetype is guessed, if not provided.\n\n        If the first parameter is a MIMEBase subclass it is inserted directly\n        into the resulting message attachments.\n        \"\"\"\n        if isinstance(filename, MIMEBase):\n            assert content == mimetype == None\n            self.attachments.append(filename)\n        else:\n            assert content is not None\n            self.attachments.append((filename, content, mimetype))\n\n    def attach_file(self, path, mimetype=None):\n        \"\"\"Attaches a file from the filesystem.\"\"\"\n        filename = os.path.basename(path)\n        with open(path, 'rb') as f:\n            content = f.read()\n        self.attach(filename, content, mimetype)\n\n    def _create_message(self, msg):\n        return self._create_attachments(msg)\n\n    def _create_attachments(self, msg):\n        if self.attachments:\n            encoding = self.encoding or settings.DEFAULT_CHARSET\n            body_msg = msg\n            msg = SafeMIMEMultipart(_subtype=self.mixed_subtype, encoding=encoding)\n            if self.body:\n                msg.attach(body_msg)\n            for attachment in self.attachments:\n                if isinstance(attachment, MIMEBase):\n                    msg.attach(attachment)\n                else:\n                    msg.attach(self._create_attachment(*attachment))\n        return msg\n\n    def _create_mime_attachment(self, content, mimetype):\n        \"\"\"\n        Converts the content, mimetype pair into a MIME attachment object.\n        \"\"\"\n        basetype, subtype = mimetype.split('/', 1)\n        if basetype == 'text':\n            encoding = self.encoding or settings.DEFAULT_CHARSET\n            attachment = SafeMIMEText(content, subtype, encoding)\n        else:\n            # Encode non-text attachments with base64.\n            attachment = MIMEBase(basetype, subtype)\n            attachment.set_payload(content)\n            Encoders.encode_base64(attachment)\n        return attachment\n\n    def _create_attachment(self, filename, content, mimetype=None):\n        \"\"\"\n        Converts the filename, content, mimetype triple into a MIME attachment\n        object.\n        \"\"\"\n        if mimetype is None:\n            mimetype, _ = mimetypes.guess_type(filename)\n            if mimetype is None:\n                mimetype = DEFAULT_ATTACHMENT_MIME_TYPE\n        attachment = self._create_mime_attachment(content, mimetype)\n        if filename:\n            try:\n                filename.encode('ascii')\n            except UnicodeEncodeError:\n                if not six.PY3:\n                    filename = filename.encode('utf-8')\n                filename = ('utf-8', '', filename)\n            attachment.add_header('Content-Disposition', 'attachment',\n                                  filename=filename)\n        return attachment\n\n\nclass EmailMultiAlternatives(EmailMessage):\n    \"\"\"\n    A version of EmailMessage that makes it easy to send multipart/alternative\n    messages. For example, including text and HTML versions of the text is\n    made easier.\n    \"\"\"\n    alternative_subtype = 'alternative'\n\n    def __init__(self, subject='', body='', from_email=None, to=None, bcc=None,\n            connection=None, attachments=None, headers=None, alternatives=None,\n            cc=None):\n        \"\"\"\n        Initialize a single email message (which can be sent to multiple\n        recipients).\n\n        All strings used to create the message can be unicode strings (or UTF-8\n        bytestrings). The SafeMIMEText class will handle any necessary encoding\n        conversions.\n        \"\"\"\n        super(EmailMultiAlternatives, self).__init__(subject, body, from_email, to, bcc, connection, attachments, headers, cc)\n        self.alternatives = alternatives or []\n\n    def attach_alternative(self, content, mimetype):\n        \"\"\"Attach an alternative content representation.\"\"\"\n        assert content is not None\n        assert mimetype is not None\n        self.alternatives.append((content, mimetype))\n\n    def _create_message(self, msg):\n        return self._create_attachments(self._create_alternatives(msg))\n\n    def _create_alternatives(self, msg):\n        encoding = self.encoding or settings.DEFAULT_CHARSET\n        if self.alternatives:\n            body_msg = msg\n            msg = SafeMIMEMultipart(_subtype=self.alternative_subtype, encoding=encoding)\n            if self.body:\n                msg.attach(body_msg)\n            for alternative in self.alternatives:\n                msg.attach(self._create_mime_attachment(*alternative))\n        return msg\n"
  },
  {
    "path": "Django-1.5.1/django/core/mail/utils.py",
    "content": "\"\"\"\nEmail message and email sending related helper functions.\n\"\"\"\n\nimport socket\n\n\n# Cache the hostname, but do it lazily: socket.getfqdn() can take a couple of\n# seconds, which slows down the restart of the server.\nclass CachedDnsName(object):\n    def __str__(self):\n        return self.get_fqdn()\n\n    def get_fqdn(self):\n        if not hasattr(self, '_fqdn'):\n            self._fqdn = socket.getfqdn()\n        return self._fqdn\n\nDNS_NAME = CachedDnsName()\n"
  },
  {
    "path": "Django-1.5.1/django/core/management/__init__.py",
    "content": "import collections\nimport os\nimport sys\nfrom optparse import OptionParser, NO_DEFAULT\nimport imp\nimport warnings\n\nfrom django.core.exceptions import ImproperlyConfigured\nfrom django.core.management.base import BaseCommand, CommandError, handle_default_options\nfrom django.core.management.color import color_style\nfrom django.utils.importlib import import_module\nfrom django.utils._os import upath\nfrom django.utils import six\n\n# For backwards compatibility: get_version() used to be in this module.\nfrom django import get_version\n\n# A cache of loaded commands, so that call_command\n# doesn't have to reload every time it's called.\n_commands = None #先缓冲一个命令, 不用每次都构建\n\ndef find_commands(management_dir):\n    \"\"\"\n    命令管理的目录, 得到所有的命令\n    Given a path to a management directory, returns a list of all the command\n    names that are available.\n\n    Returns an empty list if no commands are defined.\n    \"\"\"\n    command_dir = os.path.join(management_dir, 'commands')\n    try:\n        return [f[:-3] for f in os.listdir(command_dir)\n                if not f.startswith('_') and f.endswith('.py')]\n    except OSError:\n        return []\n\ndef find_management_module(app_name):\n    \"\"\"\n    根据 app_name 返回里面所包含的 management module 路径\n    Determines the path to the management module for the given app_name,\n    without actually importing the application or the management module.\n\n    Raises ImportError if the management module cannot be found for any reason.\n    \"\"\"\n    parts = app_name.split('.')\n    parts.append('management')\n    parts.reverse()\n    part = parts.pop()\n    path = None\n\n    # When using manage.py, the project module is added to the path,\n    # loaded, then removed from the path. This means that\n    # testproject.testapp.models can be loaded in future, even if\n    # testproject isn't in the path. When looking for the management\n    # module, we need look for the case where the project name is part\n    # of the app_name but the project directory itself isn't on the path.\n    try:\n        f, path, descr = imp.find_module(part, path)\n    except ImportError as e:\n        if os.path.basename(os.getcwd()) != part:\n            raise e\n    else:\n        if f:\n            f.close()\n\n    while parts:\n        part = parts.pop()\n        f, path, descr = imp.find_module(part, path and [path] or None)\n        if f:\n            f.close()\n    return path\n\ndef load_command_class(app_name, name):\n    \"\"\"\n    Given a command name and an application name, returns the Command\n    class instance. All errors raised by the import process\n    (ImportError, AttributeError) are allowed to propagate.\n    \"\"\"\n    # 项目中直接导入:\n    # import django.management.commands.runserver\n    module = import_module('%s.management.commands.%s' % (app_name, name))\n    return module.Command()\n\ndef get_commands():\n    \"\"\"\n    Returns a dictionary mapping command names to their callback applications.\n\n    This works by looking for a management.commands package in django.core, and\n    in each installed application -- if a commands package exists, all commands\n    in that package are registered.\n\n    Core commands are always included. If a settings module has been\n    specified, user-defined commands will also be included.\n\n    The dictionary is in the format {command_name: app_name}. Key-value\n    pairs from this dictionary can then be used in calls to\n    load_command_class(app_name, command_name)\n\n    If a specific version of a command must be loaded (e.g., with the\n    startapp command), the instantiated module can be placed in the\n    dictionary in place of the application name.\n\n    The dictionary is cached on the first call and reused on subsequent\n    calls.\n    \"\"\"\n    global _commands 全局\n    if _commands is None:\n        # __path__ 一般包含了当前的路径: http://www.cnblogs.com/no13bus/archive/2013/03/14/2958618.html\n        # __path__ 可以做为包内的搜索路径的更变\n                        # {name:app_name}\n        _commands = dict([(name, 'django.core') for name in find_commands(__path__[0])])\n\n        # Find the installed apps\n        from django.conf import settings\n\n        try:\n            apps = settings.INSTALLED_APPS # 默认是为空的\n        except ImproperlyConfigured:\n            # Still useful for commands that do not require functional settings,\n            # like startproject or help\n            apps = []\n\n        # Find and load the management module for each installed app.\n        # 不懂, 每个 app 都有自己的 management\n        for app_name in apps:\n            try:\n                path = find_management_module(app_name)\n                _commands.update(dict([(name, app_name)\n                                       for name in find_commands(path)]))\n            except ImportError:\n                pass # No management module - ignore this app\n\n    return _commands\n\ndef call_command(name, *args, **options):\n    \"\"\"\n    命令执行的入口\n    Calls the given command, with the given options and args/kwargs.\n\n    This is the primary API you should use for calling specific commands.\n\n    Some examples:\n        call_command('syncdb')\n        call_command('shell', plain=True)\n        call_command('sqlall', 'myapp')\n    \"\"\"\n    # Load the command object.\n    try:\n        app_name = get_commands()[name]\n    except KeyError:\n        raise CommandError(\"Unknown command: %r\" % name)\n\n    if isinstance(app_name, BaseCommand):\n        # If the command is already loaded, use it directly.\n        klass = app_name\n    else:\n        klass = load_command_class(app_name, name) # 如果没有被加载, 需要导入并返回 command 类\n\n    # Grab out a list of defaults from the options. optparse does this for us\n    # when the script runs from the command line, but since call_command can\n    # be called programatically, we need to simulate the loading and handling\n    # of defaults (see #10080 for details).\n\n    defaults = {}\n    for opt in klass.option_list:\n        if opt.default is NO_DEFAULT:\n            defaults[opt.dest] = None\n        else:\n            defaults[opt.dest] = opt.default\n    defaults.update(options)\n\n    return klass.execute(*args, **defaults) 真正的执行\n\nclass LaxOptionParser(OptionParser):\n    \"\"\"\n    An option parser that doesn't raise any errors on unknown options.\n\n    This is needed because the --settings and --pythonpath options affect\n    the commands (and thus the options) that are available to the user.\n    \"\"\"\n    def error(self, msg):\n        pass\n\n    def print_help(self):\n        \"\"\"Output nothing.\n\n        The lax options are included in the normal option parser, so under\n        normal usage, we don't need to print the lax options.\n        \"\"\"\n        pass\n\n    def print_lax_help(self):\n        \"\"\"Output the basic options available to every command.\n\n        This just redirects to the default print_help() behavior.\n        \"\"\"\n        OptionParser.print_help(self)\n\n    def _process_args(self, largs, rargs, values):\n        \"\"\"\n        Overrides OptionParser._process_args to exclusively handle default\n        options and ignore args and other options.\n\n        This overrides the behavior of the super class, which stop parsing\n        at the first unrecognized option.\n        \"\"\"\n        while rargs:\n            arg = rargs[0]\n            try:\n                if arg[0:2] == \"--\" and len(arg) > 2:\n                    # process a single long option (possibly with value(s))\n                    # the superclass code pops the arg off rargs\n                    self._process_long_opt(rargs, values)\n\n                elif arg[:1] == \"-\" and len(arg) > 1:\n                    # process a cluster of short options (possibly with\n                    # value(s) for the last one only)\n                    # the superclass code pops the arg off rargs\n                    self._process_short_opts(rargs, values)\n\n                else:\n                    # it's either a non-default option or an arg\n                    # either way, add it to the args list so we can keep\n                    # dealing with options\n                    del rargs[0]\n                    raise Exception\n            except:\n                largs.append(arg)\n\nclass ManagementUtility(object):\n    \"\"\"\n    Encapsulates the logic of the django-admin.py and manage.py utilities.\n\n    A ManagementUtility has a number of commands, which can be manipulated\n    by editing the self.commands dictionary.\n    \"\"\"\n    def __init__(self, argv=None):\n        self.argv = argv or sys.argv[:]                 提取参数\n        self.prog_name = os.path.basename(self.argv[0]) 脚本本身, 是 dj_andmin 或者 manage.py\n\n    def main_help_text(self, commands_only=False):\n        \"\"\"\n        Returns the script's main help text, as a string.\n        \"\"\"\n        if commands_only:\n            usage = sorted(get_commands().keys())\n        else:\n            usage = [\n                \"\",\n                \"Type '%s help <subcommand>' for help on a specific subcommand.\" % self.prog_name,\n                \"\",\n                \"Available subcommands:\",\n            ]\n            commands_dict = collections.defaultdict(lambda: [])\n\n            for name, app in six.iteritems(get_commands()):\n                if app == 'django.core':\n                    app = 'django'\n                else:\n                    app = app.rpartition('.')[-1]\n\n                commands_dict[app].append(name)\n\n            style = color_style()\n\n            for app in sorted(commands_dict.keys()):\n                usage.append(\"\")\n                usage.append(style.NOTICE(\"[%s]\" % app))\n                for name in sorted(commands_dict[app]):\n                    usage.append(\"    %s\" % name)\n\n        return '\\n'.join(usage)\n\n    def fetch_command(self, subcommand):\n        \"\"\"\n        Tries to fetch the given subcommand, printing a message with the\n        appropriate command called from the command line (usually\n        \"django-admin.py\" or \"manage.py\") if it can't be found.\n        \"\"\"\n        try:\n            app_name = get_commands()[subcommand]\n        except KeyError:\n            sys.stderr.write(\"Unknown command: %r\\nType '%s help' for usage.\\n\" % \\\n                (subcommand, self.prog_name))\n            sys.exit(1)\n        if isinstance(app_name, BaseCommand):\n            # If the command is already loaded, use it directly.\n            klass = app_name\n        else:\n            klass = load_command_class(app_name, subcommand)\n        return klass\n\n    def autocomplete(self):\n        \"\"\"\n        Output completion suggestions for BASH.\n\n        The output of this function is passed to BASH's `COMREPLY` variable and\n        treated as completion suggestions. `COMREPLY` expects a space\n        separated string as the result.\n\n        The `COMP_WORDS` and `COMP_CWORD` BASH environment variables are used\n        to get information about the cli input. Please refer to the BASH\n        man-page for more information about this variables.\n\n        Subcommand options are saved as pairs. A pair consists of\n        the long option string (e.g. '--exclude') and a boolean\n        value indicating if the option requires arguments. When printing to\n        stdout, a equal sign is appended to options which require arguments.\n\n        Note: If debugging this function, it is recommended to write the debug\n        output in a separate file. Otherwise the debug output will be treated\n        and formatted as potential completion suggestions.\n        \"\"\"\n        # Don't complete if user hasn't sourced bash_completion file.\n        if 'DJANGO_AUTO_COMPLETE' not in os.environ:\n            return\n\n        cwords = os.environ['COMP_WORDS'].split()[1:]\n        cword = int(os.environ['COMP_CWORD'])\n\n        try:\n            curr = cwords[cword-1]\n        except IndexError:\n            curr = ''\n\n        subcommands = list(get_commands()) + ['help']\n        options = [('--help', None)]\n\n        # subcommand\n        if cword == 1:\n            print(' '.join(sorted(filter(lambda x: x.startswith(curr), subcommands))))\n\n        # subcommand options\n        # special case: the 'help' subcommand has no options\n        elif cwords[0] in subcommands and cwords[0] != 'help':\n            subcommand_cls = self.fetch_command(cwords[0])\n            # special case: 'runfcgi' stores additional options as\n            # 'key=value' pairs\n            if cwords[0] == 'runfcgi':\n                from django.core.servers.fastcgi import FASTCGI_OPTIONS\n                options += [(k, 1) for k in FASTCGI_OPTIONS]\n\n            # special case: add the names of installed apps to options 特殊处理, 这些命令需要返回已经安装的 app\n            elif cwords[0] in ('dumpdata', 'sql', 'sqlall', 'sqlclear',\n                    'sqlcustom', 'sqlindexes', 'sqlsequencereset', 'test'):\n                try:\n                    from django.conf import settings\n                    # Get the last part of the dotted path as the app name.\n                    options += [(a.split('.')[-1], 0) for a in settings.INSTALLED_APPS]\n                except ImportError:\n                    # Fail silently if DJANGO_SETTINGS_MODULE isn't set. The\n                    # user will find out once they execute the command.\n                    pass\n\n            # option_list\n            options += [(s_opt.get_opt_string(), s_opt.nargs) for s_opt in\n                        subcommand_cls.option_list]\n\n            # filter out previously specified options from available options\n            prev_opts = [x.split('=')[0] for x in cwords[1:cword-1]]\n            options = [opt for opt in options if opt[0] not in prev_opts]\n\n            # filter options by current input\n            options = sorted([(k, v) for k, v in options if k.startswith(curr)])\n            for option in options:\n                opt_label = option[0]\n                # append '=' to options which require args\n                if option[1]:\n                    opt_label += '='\n                print(opt_label)\n        sys.exit(1)\n\n    def execute(self):\n        \"\"\"\n        Given the command-line arguments, this figures out which subcommand is\n        being run, creates a parser appropriate to that command, and runs it.\n        \"\"\"\n        # Preprocess options to extract --settings and --pythonpath.\n        # These options could affect the commands that are available, so they\n        # must be processed early.\n        parser = LaxOptionParser(usage=\"%prog subcommand [options] [args]\",\n                                 version=get_version(),\n                                 option_list=BaseCommand.option_list)\n        self.autocomplete()\n        try:\n            # 预处理某些选项, 这些不属于子命令\n            # %prog subcommand [options] [args] 分析脚本的参数, 为的是提取出\n            # x.py subcommand --setting xxx 中的 --setting xxx, 必须提前处理\n            # 在 BaseCommand 中就有 --settings 和 --pythonpath 选项.\n            options, args = parser.parse_args(self.argv)\n            handle_default_options(options)\n        except:\n            pass # Ignore any option errors at this point.\n\n        try:\n            # argv[0] 是脚本名, argv[1] 是子命令\n            subcommand = self.argv[1] 命令\n        except IndexError:\n            subcommand = 'help' # Display help if no arguments were given.\n\n        if subcommand == 'help':\n            if len(args) <= 2: # 直接返回 x.py 对应的帮助文档\n                parser.print_lax_help()\n                sys.stdout.write(self.main_help_text() + '\\n')\n\n            elif args[2] == '--commands': # 只返回所有的命令\n                sys.stdout.write(self.main_help_text(commands_only=True) + '\\n')\n            else:\n                self.fetch_command(args[2]).print_help(self.prog_name, args[2])\n\n        elif subcommand == 'version':\n            sys.stdout.write(parser.get_version() + '\\n')\n\n        # Special-cases: We want 'django-admin.py --version' and\n        # 'django-admin.py --help' to work, for backwards compatibility. 向后兼容\n        elif self.argv[1:] == ['--version']:\n            # LaxOptionParser already takes care of printing the version.\n            pass\n\n        elif self.argv[1:] in (['--help'], ['-h']):\n            parser.print_lax_help()\n            sys.stdout.write(self.main_help_text() + '\\n')\n        else:\n            self.fetch_command(subcommand).run_from_argv(self.argv) # 所有的命令调用都从 run_from_argv()\n\ndef setup_environ(settings_mod, original_settings_path=None):\n    \"\"\"\n    deprecated\n    Configures the runtime environment. This can also be used by external\n    scripts wanting to set up a similar environment to manage.py.\n    Returns the project directory (assuming the passed settings module is\n    directly in the project directory).\n\n    The \"original_settings_path\" parameter is optional, but recommended, since\n    trying to work out the original path from the module can be problematic.\n    \"\"\"\n    warnings.warn(\n        \"The 'setup_environ' function is deprecated, \"\n        \"you likely need to update your 'manage.py'; \"\n        \"please see the Django 1.4 release notes \"\n        \"(https://docs.djangoproject.com/en/dev/releases/1.4/).\",\n        DeprecationWarning)\n\n    # Add this project to sys.path so that it's importable in the conventional\n    # way. For example, if this file (manage.py) lives in a directory\n    # \"myproject\", this code would add \"/path/to/myproject\" to sys.path.\n    if '__init__.py' in upath(settings_mod.__file__):\n        p = os.path.dirname(upath(settings_mod.__file__))\n    else:\n        p = upath(settings_mod.__file__)\n    project_directory, settings_filename = os.path.split(p)\n    if project_directory == os.curdir or not project_directory:\n        project_directory = os.getcwd()\n    project_name = os.path.basename(project_directory)\n\n    # Strip filename suffix to get the module name.\n    settings_name = os.path.splitext(settings_filename)[0]\n\n    # Strip $py for Jython compiled files (like settings$py.class)\n    if settings_name.endswith(\"$py\"):\n        settings_name = settings_name[:-3]\n\n    # Set DJANGO_SETTINGS_MODULE appropriately.\n    if original_settings_path:\n        os.environ['DJANGO_SETTINGS_MODULE'] = original_settings_path\n    else:\n        # If DJANGO_SETTINGS_MODULE is already set, use it.\n        os.environ['DJANGO_SETTINGS_MODULE'] = os.environ.get(\n            'DJANGO_SETTINGS_MODULE',\n            '%s.%s' % (project_name, settings_name)\n        )\n\n    # Import the project module. We add the parent directory to PYTHONPATH to\n    # avoid some of the path errors new users can have.\n    sys.path.append(os.path.join(project_directory, os.pardir))\n    import_module(project_name)\n    sys.path.pop()\n\n    return project_directory\n\ndef execute_from_command_line(argv=None):\n    \"\"\"\n    A simple method that runs a ManagementUtility.\n    \"\"\"\n    utility = ManagementUtility(argv)\n    utility.execute()\n\ndef execute_manager(settings_mod, argv=None):\n    \"\"\"\n    deprecated\n    Like execute_from_command_line(), but for use by manage.py, a\n    project-specific django-admin.py utility.\n    \"\"\"\n    warnings.warn(\n        \"The 'execute_manager' function is deprecated, \"\n        \"you likely need to update your 'manage.py'; \"\n        \"please see the Django 1.4 release notes \"\n        \"(https://docs.djangoproject.com/en/dev/releases/1.4/).\",\n        DeprecationWarning)\n\n    setup_environ(settings_mod)\n    utility = ManagementUtility(argv)\n    utility.execute()\n\n# 这是 manage.py 中的代码, 有线索: 这就是调用了 excute_from_command_line\n\"\"\"\nimport os\nimport sys\n\nif __name__ == \"__main__\":\n    os.environ.setdefault(\"DJANGO_SETTINGS_MODULE\", \"tomato.settings\")\n\n    from django.core.management import execute_from_command_line\n\n    execute_from_command_line(sys.argv)\n\"\"\"\n\n# dj_andmin.py 的就更简单了:\n\"\"\"\n#!/usr/bin/env python\nfrom django.core import management\n\nif __name__ == \"__main__\":\n    management.execute_from_command_line()\n\"\"\"\n\n区别在于: manage.py 会更有针对性, 因为从上面可以看出, 它导入了具体项目的 settings, 而 dj_andmin.py 却没有.\n所以在尚未有项目存在的时候, 更多的使用 dj_andmin.py 脚本; 否则更多的使用 manage.py\n"
  },
  {
    "path": "Django-1.5.1/django/core/management/base.py",
    "content": "\"\"\"\nBase classes for writing management commands (named commands which can\nbe executed through ``django-admin.py`` or ``manage.py``).\n\n命令基础类, 可以被 django-admin.py 或者 manage.py 执行\n\"\"\"\nimport os\nimport sys\n\nfrom optparse import make_option, OptionParser\nimport traceback\n\nimport django\nfrom django.core.exceptions import ImproperlyConfigured\nfrom django.core.management.color import color_style\nfrom django.utils.encoding import force_str\nfrom django.utils.six import StringIO\n\n\nclass CommandError(Exception):\n    \"\"\"\n    Exception class indicating a problem while executing a management\n    command.\n\n    If this exception is raised during the execution of a management\n    command, it will be caught and turned into a nicely-printed error\n    message to the appropriate output stream (i.e., stderr); as a\n    result, raising this exception (with a sensible description of the\n    error) is the preferred way to indicate that something has gone\n    wrong in the execution of a command.\n\n    \"\"\"\n    pass\n\n\ndef handle_default_options(options):\n    \"\"\"\n    Include any default options that all commands should accept here\n    so that ManagementUtility can handle them before searching for\n    user commands.\n    options 已经分析 --settings 和 --pythonpath, 经由 OptionParser 解析后会将 settings 和 pythonpath 转化为自己的属性, 可以直接访问\n    譬如:\n    dj_admin.py --settings /home/settings.py\n    parser = OptionParser(xxx)\n    parser.add_option([\"--settings\",\"/home/settings.py\"])\n    parser.settings == /home/settings.py\n\n    \"\"\"\n    导入 settings 设置到系统环境中\n    if options.settings:\n        os.environ['DJANGO_SETTINGS_MODULE'] = options.settings\n\n    如果有需要, 可以插入 python path\n    if options.pythonpath:\n        sys.path.insert(0, options.pythonpath)\n\n\nclass OutputWrapper(object):\n    \"\"\"\n    Wrapper around stdout/stderr 标准输入输出\n    \"\"\"\n    def __init__(self, out, style_func=None, ending='\\n'):\n        self._out = out\n        self.style_func = None\n\n        if hasattr(out, 'isatty') and out.isatty(): 如果是一个终端才设置自定义输出格式\n            self.style_func = style_func\n\n        self.ending = ending\n\n    def __getattr__(self, name):\n        return getattr(self._out, name)\n\n    def write(self, msg, style_func=None, ending=None):\n        ending = ending is None and self.ending or ending\n\n        if ending and not msg.endswith(ending):\n            msg += ending\n\n        防止 style_func 和 self.style_func 都为空, 自定义一个空处理 lambda\n        style_func = [f for f in (style_func, self.style_func, lambda x:x)\n                      if f is not None][0]\n\n        self._out.write(force_str(style_func(msg)))\n\n\nclass BaseCommand(object):\n    \"\"\"\n    The base class from which all management commands ultimately\n    derive. 必须都继承这个类\n\n    Use this class if you want access to all of the mechanisms which\n    parse the command-line arguments and work out what code to call in\n    response; if you don't need to change any of that behavior,\n    consider using one of the subclasses defined in this file.\n\n    If you are interested in overriding/customizing various aspects of\n    the command-parsing and -execution behavior, the normal flow works\n    as follows:\n\n    两者都是调用 run_from_argv() 函数\n    1. ``django-admin.py`` or ``manage.py`` loads the command class\n       and calls its ``run_from_argv()`` method.\n\n\n    run_from_argv --> create_parser --> execute\n    2. The ``run_from_argv()`` method calls ``create_parser()`` to get\n       an ``OptionParser`` for the arguments, parses them, performs\n       any environment changes requested by options like\n       ``pythonpath``, and then calls the ``execute()`` method,\n       passing the parsed arguments.\n\n    execute --> handle()\n    3. The ``execute()`` method attempts to carry out the command by\n       calling the ``handle()`` method with the parsed arguments; any\n       output produced by ``handle()`` will be printed to standard\n       output and, if the command is intended to produce a block of\n       SQL statements, will be wrapped in ``BEGIN`` and ``COMMIT``.\n\n    4. If ``handle()`` or ``execute()`` raised any exception (e.g.\n       ``CommandError``), ``run_from_argv()`` will  instead print an error\n       message to ``stderr``.\n\n    子类是从 handle() 开始的, 逻辑放在 handle 里\n    Thus, the ``handle()`` method is typically the starting point for\n    subclasses; many built-in commands and command types either place\n    all of their logic in ``handle()``, or perform some additional\n    parsing work in ``handle()`` and then delegate from it to more\n    specialized methods as needed.\n\n    Several attributes affect behavior at various steps along the way:\n\n    ``args`` 参数\n        A string listing the arguments accepted by the command,\n        suitable for use in help messages; e.g., a command which takes\n        a list of application names might set this to '<appname\n        appname ...>'.\n\n    ``can_import_settings`` 是否导入 settings\n        A boolean indicating whether the command needs to be able to\n        import Django settings; if ``True``, ``execute()`` will verify\n        that this is possible before proceeding. Default value is\n        ``True``.\n\n    ``help`` 帮助\n        A short description of the command, which will be printed in\n        help messages.\n\n    ``option_list`` 用于解析参数\n        This is the list of ``optparse`` options which will be fed\n        into the command's ``OptionParser`` for parsing arguments.\n\n    ``output_transaction`` 是否输出 sql 事务\n        A boolean indicating whether the command outputs SQL\n        statements; if ``True``, the output will automatically be\n        wrapped with ``BEGIN;`` and ``COMMIT;``. Default value is\n        ``False``.\n\n    ``requires_model_validation`` 在执行前会检测命令的有效性\n        A boolean; if ``True``, validation of installed models will be\n        performed prior to executing the command. Default value is\n        ``True``. To validate an individual application's models\n        rather than all applications' models, call\n        ``self.validate(app)`` from ``handle()``, where ``app`` is the\n        application's Python module.\n\n    \"\"\"\n    # Metadata about this command.\n    option_list = (\n        make_option('-v', '--verbosity', action='store', dest='verbosity', default='1',\n            type='choice', choices=['0', '1', '2', '3'],\n            help='Verbosity level; 0=minimal output, 1=normal output, 2=verbose output, 3=very verbose output'),\n\n        make_option('--settings',\n            help='The Python path to a settings module, e.g. \"myproject.settings.main\". If this isn\\'t provided, the DJANGO_SETTINGS_MODULE environment variable will be used.'),\n        make_option('--pythonpath',\n            help='A directory to add to the Python path, e.g. \"/home/djangoprojects/myproject\".'),\n        make_option('--traceback', action='store_true',\n            help='Print traceback on exception'),\n    )\n    help = ''\n    args = ''\n\n    # Configuration shortcuts that alter various logic.\n    can_import_settings = True\n    requires_model_validation = True\n    output_transaction = False  # Whether to wrap the output in a \"BEGIN; COMMIT;\"\n\n    def __init__(self):\n        self.style = color_style() 颜色?\n\n    def get_version(self):\n        \"\"\"\n        Return the Django version, which should be correct for all\n        built-in Django commands. User-supplied commands should\n        override this method.\n\n        \"\"\"\n        return django.get_version()\n\n    def usage(self, subcommand):\n        \"\"\"\n        返回剪短的提示\n        Return a brief description of how to use this command, by\n        default from the attribute ``self.help``.\n\n        \"\"\"\n        usage = '%%prog %s [options] %s' % (subcommand, self.args)\n        if self.help:\n            return '%s\\n\\n%s' % (usage, self.help)\n        else:\n            return usage\n\n    def create_parser(self, prog_name, subcommand):\n        \"\"\"\n        创建并返回解析器, 用于解析命令的参数\n        Create and return the ``OptionParser`` which will be used to\n        parse the arguments to this command.\n\n        \"\"\"\n        # OptionParser 是 python 内置的, 用于命令 option 的管理\n        return OptionParser(prog=prog_name,\n                            usage=self.usage(subcommand),\n                            version=self.get_version(),\n                            option_list=self.option_list)\n\n    def print_help(self, prog_name, subcommand):\n        \"\"\"\n        Print the help message for this command, derived from\n        ``self.usage()``.\n\n        \"\"\"\n        parser = self.create_parser(prog_name, subcommand) 创建 OptionParser, 并从中 print_help\n        parser.print_help()\n\n    # step 1\n    def run_from_argv(self, argv):\n        \"\"\"\n        Set up any environment changes requested (e.g., Python path\n        and Django settings), then run this command. If the\n        command raises a ``CommandError``, intercept it and print it sensibly\n        to stderr.\n        \"\"\"\n        # 不懂, 没有看到 stdout stderr 被传入到这个函数中\n        parser = self.create_parser(argv[0], argv[1]) # 创建解析器, 返回 OptionParser\n        options, args = parser.parse_args(argv[2:]) 解析参数\n\n        handle_default_options(options) 导入 setting 等\n\n        try:\n            # step 2\n            self.execute(*args, **options.__dict__)\n        except Exception as e:\n            # self.stderr is not guaranteed to be set here\n            stderr = getattr(self, 'stderr', OutputWrapper(sys.stderr, self.style.ERROR))\n            if options.traceback:\n                stderr.write(traceback.format_exc())\n            else:\n                stderr.write('%s: %s' % (e.__class__.__name__, e))\n            sys.exit(1)\n\n    def execute(self, *args, **options):\n        \"\"\"\n        Try to execute this command, performing model validation if\n        needed (as controlled by the attribute\n        ``self.requires_model_validation``, except if force-skipped).\n        \"\"\"\n\n        # Switch to English, because django-admin.py creates database content\n        # like permissions, and those shouldn't contain any translations.\n        # But only do this if we can assume we have a working settings file,\n        # because django.utils.translation requires settings.\n        saved_lang = None\n        self.stdout = OutputWrapper(options.get('stdout', sys.stdout))\n        self.stderr = OutputWrapper(options.get('stderr', sys.stderr), self.style.ERROR)\n\n        if self.can_import_settings:\n            from django.utils import translation\n            saved_lang = translation.get_language()\n            translation.activate('en-us')\n\n        try:\n            if self.requires_model_validation and not options.get('skip_validation'): 如果需要就检测有效性\n                self.validate()\n\n            output = self.handle(*args, **options)\n\n            if output:\n                if self.output_transaction: 需要打印事务\n                    # This needs to be imported here, because it relies on\n                    # settings.\n                    from django.db import connections, DEFAULT_DB_ALIAS\n                    connection = connections[options.get('database', DEFAULT_DB_ALIAS)]\n                    if connection.ops.start_transaction_sql():\n                        self.stdout.write(self.style.SQL_KEYWORD(connection.ops.start_transaction_sql()))\n\n                self.stdout.write(output)\n\n                if self.output_transaction:\n                    self.stdout.write('\\n' + self.style.SQL_KEYWORD(\"COMMIT;\"))\n        finally:\n            if saved_lang is not None:\n                translation.activate(saved_lang)\n\n    def validate(self, app=None, display_num_errors=False):\n        \"\"\"\n        有效性检测\n        Validates the given app, raising CommandError for any errors.\n\n        If app is None, then this will validate all installed apps.\n\n        \"\"\"\n        from django.core.management.validation import get_validation_errors\n\n        s = StringIO()\n\n        num_errors = get_validation_errors(s, app)\n\n        if num_errors:\n            s.seek(0)\n            error_text = s.read()\n            raise CommandError(\"One or more models did not validate:\\n%s\" % error_text)\n        if display_num_errors:\n            self.stdout.write(\"%s error%s found\" % (num_errors, num_errors != 1 and 's' or ''))\n\n    def handle(self, *args, **options):\n        \"\"\"\n        真正的逻辑\n        The actual logic of the command. Subclasses must implement\n        this method.\n\n        \"\"\"\n        raise NotImplementedError()\n\n\nclass AppCommand(BaseCommand):\n    \"\"\"\n    带有 app_name 的命令\n    A management command which takes one or more installed application\n    names as arguments, and does something with each of them.\n\n    handle_app() 只会执行一次\n    Rather than implementing ``handle()``, subclasses must implement\n    ``handle_app()``, which will be called once for each application.\n\n    \"\"\"\n    args = '<appname appname ...>'\n\n    def handle(self, *app_labels, **options):\n        from django.db import models\n\n        if not app_labels:\n            raise CommandError('Enter at least one appname.')\n\n        try:\n            app_list = [models.get_app(app_label) for app_label in app_labels]\n        except (ImproperlyConfigured, ImportError) as e:\n            raise CommandError(\"%s. Are you sure your INSTALLED_APPS setting is correct?\" % e)\n\n        output = []\n        for app in app_list:\n            app_output = self.handle_app(app, **options)\n\n            if app_output:\n                output.append(app_output)\n\n        return '\\n'.join(output)\n\n    def handle_app(self, app, **options):\n        \"\"\"\n        Perform the command's actions for ``app``, which will be the\n        Python module corresponding to an application name given on\n        the command line.\n\n        \"\"\"\n        raise NotImplementedError()\n\n\nclass LabelCommand(BaseCommand):\n    \"\"\"\n    不懂, 不知道具体有什么用\n    A management command which takes one or more arbitrary arguments\n    (labels) on the command line, and does something with each of\n    them.\n\n    Rather than implementing ``handle()``, subclasses must implement\n    ``handle_label()``, which will be called once for each label.\n\n    If the arguments should be names of installed applications, use\n    ``AppCommand`` instead.\n\n    \"\"\"\n    args = '<label label ...>'\n    label = 'label'\n\n    def handle(self, *labels, **options):\n        if not labels:\n            raise CommandError('Enter at least one %s.' % self.label)\n\n        output = []\n        for label in labels:\n            label_output = self.handle_label(label, **options)\n\n            if label_output:\n                output.append(label_output)\n\n        return '\\n'.join(output)\n\n    def handle_label(self, label, **options):\n        \"\"\"\n        Perform the command's actions for ``label``, which will be the\n        string as given on the command line.\n\n        \"\"\"\n        raise NotImplementedError()\n\n\nclass NoArgsCommand(BaseCommand):\n    \"\"\"\n    没有任何的参数\n    A command which takes no arguments on the command line.\n\n    Rather than implementing ``handle()``, subclasses must implement\n    ``handle_noargs()``; ``handle()`` itself is overridden to ensure\n    no arguments are passed to the command.\n\n    Attempting to pass arguments will raise ``CommandError``.\n\n    \"\"\"\n    args = ''\n\n    def handle(self, *args, **options):\n        if args:\n            raise CommandError(\"Command doesn't accept any arguments\")\n        return self.handle_noargs(**options)\n\n    def handle_noargs(self, **options):\n        \"\"\"\n        Perform this command's actions.\n\n        \"\"\"\n        raise NotImplementedError()\n"
  },
  {
    "path": "Django-1.5.1/django/core/management/color.py",
    "content": "\"\"\"\nSets up the terminal color scheme.\n\"\"\"\n\nimport os\nimport sys\n\nfrom django.utils import termcolors\n\ndef supports_color():\n    \"\"\"\n    Returns True if the running system's terminal supports color, and False\n    otherwise.\n    \"\"\"\n    unsupported_platform = (sys.platform in ('win32', 'Pocket PC'))\n    # isatty is not always implemented, #6223.\n    is_a_tty = hasattr(sys.stdout, 'isatty') and sys.stdout.isatty()\n    if unsupported_platform or not is_a_tty:\n        return False\n    return True\n\ndef color_style():\n    \"\"\"Returns a Style object with the Django color scheme.\"\"\"\n    if not supports_color():\n        style = no_style()\n    else:\n        DJANGO_COLORS = os.environ.get('DJANGO_COLORS', '')\n        color_settings = termcolors.parse_color_setting(DJANGO_COLORS)\n        if color_settings:\n            class dummy: pass\n            style = dummy()\n            # The nocolor palette has all available roles.\n            # Use that pallete as the basis for populating\n            # the palette as defined in the environment.\n            for role in termcolors.PALETTES[termcolors.NOCOLOR_PALETTE]:\n                format = color_settings.get(role,{})\n                setattr(style, role, termcolors.make_style(**format))\n            # For backwards compatibility,\n            # set style for ERROR_OUTPUT == ERROR\n            style.ERROR_OUTPUT = style.ERROR\n        else:\n            style = no_style()\n    return style\n\ndef no_style():\n    \"\"\"Returns a Style object that has no colors.\"\"\"\n    class dummy:\n        def __getattr__(self, attr):\n            return lambda x: x\n    return dummy()\n"
  },
  {
    "path": "Django-1.5.1/django/core/management/commands/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/core/management/commands/cleanup.py",
    "content": "import warnings\n\nfrom django.contrib.sessions.management.commands import clearsessions\n\n\nclass Command(clearsessions.Command):\n    def handle_noargs(self, **options):\n        warnings.warn(\n            \"The `cleanup` command has been deprecated in favor of `clearsessions`.\",\n            PendingDeprecationWarning)\n        super(Command, self).handle_noargs(**options)\n"
  },
  {
    "path": "Django-1.5.1/django/core/management/commands/compilemessages.py",
    "content": "from __future__ import unicode_literals\n\nimport codecs\nimport os\nimport sys\nfrom optparse import make_option\nfrom django.core.management.base import BaseCommand, CommandError\nfrom django.utils._os import npath\n\ndef has_bom(fn):\n    with open(fn, 'rb') as f:\n        sample = f.read(4)\n    return sample[:3] == b'\\xef\\xbb\\xbf' or \\\n            sample.startswith(codecs.BOM_UTF16_LE) or \\\n            sample.startswith(codecs.BOM_UTF16_BE)\n\ndef compile_messages(stderr, locale=None):\n    basedirs = [os.path.join('conf', 'locale'), 'locale']\n    if os.environ.get('DJANGO_SETTINGS_MODULE'):\n        from django.conf import settings\n        basedirs.extend(settings.LOCALE_PATHS)\n\n    # Gather existing directories.\n    basedirs = set(map(os.path.abspath, filter(os.path.isdir, basedirs)))\n\n    if not basedirs:\n        raise CommandError(\"This script should be run from the Django Git checkout or your project or app tree, or with the settings module specified.\")\n\n    for basedir in basedirs:\n        if locale:\n            basedir = os.path.join(basedir, locale, 'LC_MESSAGES')\n        for dirpath, dirnames, filenames in os.walk(basedir):\n            for f in filenames:\n                if f.endswith('.po'):\n                    stderr.write('processing file %s in %s\\n' % (f, dirpath))\n                    fn = os.path.join(dirpath, f)\n                    if has_bom(fn):\n                        raise CommandError(\"The %s file has a BOM (Byte Order Mark). Django only supports .po files encoded in UTF-8 and without any BOM.\" % fn)\n                    pf = os.path.splitext(fn)[0]\n                    # Store the names of the .mo and .po files in an environment\n                    # variable, rather than doing a string replacement into the\n                    # command, so that we can take advantage of shell quoting, to\n                    # quote any malicious characters/escaping.\n                    # See http://cyberelk.net/tim/articles/cmdline/ar01s02.html\n                    os.environ['djangocompilemo'] = npath(pf + '.mo')\n                    os.environ['djangocompilepo'] = npath(pf + '.po')\n                    if sys.platform == 'win32': # Different shell-variable syntax\n                        cmd = 'msgfmt --check-format -o \"%djangocompilemo%\" \"%djangocompilepo%\"'\n                    else:\n                        cmd = 'msgfmt --check-format -o \"$djangocompilemo\" \"$djangocompilepo\"'\n                    os.system(cmd)\n\n\nclass Command(BaseCommand):\n    option_list = BaseCommand.option_list + (\n        make_option('--locale', '-l', dest='locale',\n            help='The locale to process. Default is to process all.'),\n    )\n    help = 'Compiles .po files to .mo files for use with builtin gettext support.'\n\n    requires_model_validation = False\n    can_import_settings = False\n\n    def handle(self, **options):\n        locale = options.get('locale')\n        compile_messages(self.stderr, locale=locale)\n"
  },
  {
    "path": "Django-1.5.1/django/core/management/commands/createcachetable.py",
    "content": "from optparse import make_option\n\nfrom django.core.cache.backends.db import BaseDatabaseCache\nfrom django.core.management.base import LabelCommand, CommandError\nfrom django.db import connections, router, transaction, models, DEFAULT_DB_ALIAS\nfrom django.db.utils import DatabaseError\nfrom django.utils.encoding import force_text\n\n\nclass Command(LabelCommand):\n    help = \"Creates the table needed to use the SQL cache backend.\"\n    args = \"<tablename>\"\n    label = 'tablename'\n\n    option_list = LabelCommand.option_list + (\n        make_option('--database', action='store', dest='database',\n            default=DEFAULT_DB_ALIAS, help='Nominates a database onto '\n                'which the cache table will be installed. '\n                'Defaults to the \"default\" database.'),\n    )\n\n    requires_model_validation = False\n\n    def handle_label(self, tablename, **options):\n        db = options.get('database')\n        cache = BaseDatabaseCache(tablename, {})\n        if not router.allow_syncdb(db, cache.cache_model_class):\n            return\n        connection = connections[db]\n        fields = (\n            # \"key\" is a reserved word in MySQL, so use \"cache_key\" instead.\n            models.CharField(name='cache_key', max_length=255, unique=True, primary_key=True),\n            models.TextField(name='value'),\n            models.DateTimeField(name='expires', db_index=True),\n        )\n        table_output = []\n        index_output = []\n        qn = connection.ops.quote_name\n        for f in fields:\n            field_output = [qn(f.name), f.db_type(connection=connection)]\n            field_output.append(\"%sNULL\" % (not f.null and \"NOT \" or \"\"))\n            if f.primary_key:\n                field_output.append(\"PRIMARY KEY\")\n            elif f.unique:\n                field_output.append(\"UNIQUE\")\n            if f.db_index:\n                unique = f.unique and \"UNIQUE \" or \"\"\n                index_output.append(\"CREATE %sINDEX %s ON %s (%s);\" % \\\n                    (unique, qn('%s_%s' % (tablename, f.name)), qn(tablename),\n                    qn(f.name)))\n            table_output.append(\" \".join(field_output))\n        full_statement = [\"CREATE TABLE %s (\" % qn(tablename)]\n        for i, line in enumerate(table_output):\n            full_statement.append('    %s%s' % (line, i < len(table_output)-1 and ',' or ''))\n        full_statement.append(');')\n        curs = connection.cursor()\n        try:\n            curs.execute(\"\\n\".join(full_statement))\n        except DatabaseError as e:\n            transaction.rollback_unless_managed(using=db)\n            raise CommandError(\n                \"Cache table '%s' could not be created.\\nThe error was: %s.\" %\n                    (tablename, force_text(e)))\n        for statement in index_output:\n            curs.execute(statement)\n        transaction.commit_unless_managed(using=db)\n"
  },
  {
    "path": "Django-1.5.1/django/core/management/commands/dbshell.py",
    "content": "from optparse import make_option\n\nfrom django.core.management.base import BaseCommand, CommandError\nfrom django.db import connections, DEFAULT_DB_ALIAS\n\nclass Command(BaseCommand):\n    help = (\"Runs the command-line client for specified database, or the \"\n        \"default database if none is provided.\")\n\n    option_list = BaseCommand.option_list + (\n        make_option('--database', action='store', dest='database',\n            default=DEFAULT_DB_ALIAS, help='Nominates a database onto which to '\n                'open a shell.  Defaults to the \"default\" database.'),\n    )\n\n    requires_model_validation = False\n\n    def handle(self, **options):\n        connection = connections[options.get('database')]\n        try:\n            connection.client.runshell()\n        except OSError:\n            # Note that we're assuming OSError means that the client program\n            # isn't installed. There's a possibility OSError would be raised\n            # for some other reason, in which case this error message would be\n            # inaccurate. Still, this message catches the common case.\n            raise CommandError('You appear not to have the %r program installed or on your path.' % \\\n                connection.client.executable_name)\n"
  },
  {
    "path": "Django-1.5.1/django/core/management/commands/diffsettings.py",
    "content": "from django.core.management.base import NoArgsCommand\n\ndef module_to_dict(module, omittable=lambda k: k.startswith('_')):\n    \"Converts a module namespace to a Python dictionary. Used by get_settings_diff.\"\n    return dict([(k, repr(v)) for k, v in module.__dict__.items() if not omittable(k)])\n\nclass Command(NoArgsCommand):\n    help = \"\"\"Displays differences between the current settings.py and Django's\n    default settings. Settings that don't appear in the defaults are\n    followed by \"###\".\"\"\"\n\n    requires_model_validation = False\n\n    def handle_noargs(self, **options):\n        # Inspired by Postfix's \"postconf -n\".\n        from django.conf import settings, global_settings\n\n        # Because settings are imported lazily, we need to explicitly load them.\n        settings._setup()\n\n        user_settings = module_to_dict(settings._wrapped)\n        default_settings = module_to_dict(global_settings)\n\n        output = []\n        for key in sorted(user_settings.keys()):\n            if key not in default_settings:\n                output.append(\"%s = %s  ###\" % (key, user_settings[key]))\n            elif user_settings[key] != default_settings[key]:\n                output.append(\"%s = %s\" % (key, user_settings[key]))\n        return '\\n'.join(output)\n"
  },
  {
    "path": "Django-1.5.1/django/core/management/commands/dumpdata.py",
    "content": "from django.core.exceptions import ImproperlyConfigured\nfrom django.core.management.base import BaseCommand, CommandError\nfrom django.core import serializers\nfrom django.db import router, DEFAULT_DB_ALIAS\nfrom django.utils.datastructures import SortedDict\n\nfrom optparse import make_option\n\nclass Command(BaseCommand):\n    option_list = BaseCommand.option_list + (\n        make_option('--format', default='json', dest='format',\n            help='Specifies the output serialization format for fixtures.'),\n        make_option('--indent', default=None, dest='indent', type='int',\n            help='Specifies the indent level to use when pretty-printing output'),\n        make_option('--database', action='store', dest='database',\n            default=DEFAULT_DB_ALIAS, help='Nominates a specific database to dump '\n                'fixtures from. Defaults to the \"default\" database.'),\n        make_option('-e', '--exclude', dest='exclude',action='append', default=[],\n            help='An appname or appname.ModelName to exclude (use multiple --exclude to exclude multiple apps/models).'),\n        make_option('-n', '--natural', action='store_true', dest='use_natural_keys', default=False,\n            help='Use natural keys if they are available.'),\n        make_option('-a', '--all', action='store_true', dest='use_base_manager', default=False,\n            help=\"Use Django's base manager to dump all models stored in the database, including those that would otherwise be filtered or modified by a custom manager.\"),\n    )\n    help = (\"Output the contents of the database as a fixture of the given \"\n            \"format (using each model's default manager unless --all is \"\n            \"specified).\")\n    args = '[appname appname.ModelName ...]'\n\n    def handle(self, *app_labels, **options):\n        from django.db.models import get_app, get_apps, get_model\n\n        format = options.get('format')\n        indent = options.get('indent')\n        using = options.get('database')\n        excludes = options.get('exclude')\n        show_traceback = options.get('traceback')\n        use_natural_keys = options.get('use_natural_keys')\n        use_base_manager = options.get('use_base_manager')\n\n        excluded_apps = set()\n        excluded_models = set()\n        for exclude in excludes:\n            if '.' in exclude:\n                app_label, model_name = exclude.split('.', 1)\n                model_obj = get_model(app_label, model_name)\n                if not model_obj:\n                    raise CommandError('Unknown model in excludes: %s' % exclude)\n                excluded_models.add(model_obj)\n            else:\n                try:\n                    app_obj = get_app(exclude)\n                    excluded_apps.add(app_obj)\n                except ImproperlyConfigured:\n                    raise CommandError('Unknown app in excludes: %s' % exclude)\n\n        if len(app_labels) == 0:\n            app_list = SortedDict((app, None) for app in get_apps() if app not in excluded_apps)\n        else:\n            app_list = SortedDict()\n            for label in app_labels:\n                try:\n                    app_label, model_label = label.split('.')\n                    try:\n                        app = get_app(app_label)\n                    except ImproperlyConfigured:\n                        raise CommandError(\"Unknown application: %s\" % app_label)\n                    if app in excluded_apps:\n                        continue\n                    model = get_model(app_label, model_label)\n                    if model is None:\n                        raise CommandError(\"Unknown model: %s.%s\" % (app_label, model_label))\n\n                    if app in app_list.keys():\n                        if app_list[app] and model not in app_list[app]:\n                            app_list[app].append(model)\n                    else:\n                        app_list[app] = [model]\n                except ValueError:\n                    # This is just an app - no model qualifier\n                    app_label = label\n                    try:\n                        app = get_app(app_label)\n                    except ImproperlyConfigured:\n                        raise CommandError(\"Unknown application: %s\" % app_label)\n                    if app in excluded_apps:\n                        continue\n                    app_list[app] = None\n\n        # Check that the serialization format exists; this is a shortcut to\n        # avoid collating all the objects and _then_ failing.\n        if format not in serializers.get_public_serializer_formats():\n            raise CommandError(\"Unknown serialization format: %s\" % format)\n\n        try:\n            serializers.get_serializer(format)\n        except KeyError:\n            raise CommandError(\"Unknown serialization format: %s\" % format)\n\n        def get_objects():\n            # Collate the objects to be serialized.\n            for model in sort_dependencies(app_list.items()):\n                if model in excluded_models:\n                    continue\n                if not model._meta.proxy and router.allow_syncdb(using, model):\n                    if use_base_manager:\n                        objects = model._base_manager\n                    else:\n                        objects = model._default_manager\n                    for obj in objects.using(using).\\\n                            order_by(model._meta.pk.name).iterator():\n                        yield obj\n\n        try:\n            self.stdout.ending = None\n            serializers.serialize(format, get_objects(), indent=indent,\n                    use_natural_keys=use_natural_keys, stream=self.stdout)\n        except Exception as e:\n            if show_traceback:\n                raise\n            raise CommandError(\"Unable to serialize database: %s\" % e)\n\ndef sort_dependencies(app_list):\n    \"\"\"Sort a list of app,modellist pairs into a single list of models.\n\n    The single list of models is sorted so that any model with a natural key\n    is serialized before a normal model, and any model with a natural key\n    dependency has it's dependencies serialized first.\n    \"\"\"\n    from django.db.models import get_model, get_models\n    # Process the list of models, and get the list of dependencies\n    model_dependencies = []\n    models = set()\n    for app, model_list in app_list:\n        if model_list is None:\n            model_list = get_models(app)\n\n        for model in model_list:\n            models.add(model)\n            # Add any explicitly defined dependencies\n            if hasattr(model, 'natural_key'):\n                deps = getattr(model.natural_key, 'dependencies', [])\n                if deps:\n                    deps = [get_model(*d.split('.')) for d in deps]\n            else:\n                deps = []\n\n            # Now add a dependency for any FK or M2M relation with\n            # a model that defines a natural key\n            for field in model._meta.fields:\n                if hasattr(field.rel, 'to'):\n                    rel_model = field.rel.to\n                    if hasattr(rel_model, 'natural_key') and rel_model != model:\n                        deps.append(rel_model)\n            for field in model._meta.many_to_many:\n                rel_model = field.rel.to\n                if hasattr(rel_model, 'natural_key') and rel_model != model:\n                    deps.append(rel_model)\n            model_dependencies.append((model, deps))\n\n    model_dependencies.reverse()\n    # Now sort the models to ensure that dependencies are met. This\n    # is done by repeatedly iterating over the input list of models.\n    # If all the dependencies of a given model are in the final list,\n    # that model is promoted to the end of the final list. This process\n    # continues until the input list is empty, or we do a full iteration\n    # over the input models without promoting a model to the final list.\n    # If we do a full iteration without a promotion, that means there are\n    # circular dependencies in the list.\n    model_list = []\n    while model_dependencies:\n        skipped = []\n        changed = False\n        while model_dependencies:\n            model, deps = model_dependencies.pop()\n\n            # If all of the models in the dependency list are either already\n            # on the final model list, or not on the original serialization list,\n            # then we've found another model with all it's dependencies satisfied.\n            found = True\n            for candidate in ((d not in models or d in model_list) for d in deps):\n                if not candidate:\n                    found = False\n            if found:\n                model_list.append(model)\n                changed = True\n            else:\n                skipped.append((model, deps))\n        if not changed:\n            raise CommandError(\"Can't resolve dependencies for %s in serialized app list.\" %\n                ', '.join('%s.%s' % (model._meta.app_label, model._meta.object_name)\n                for model, deps in sorted(skipped, key=lambda obj: obj[0].__name__))\n            )\n        model_dependencies = skipped\n\n    return model_list\n"
  },
  {
    "path": "Django-1.5.1/django/core/management/commands/flush.py",
    "content": "from optparse import make_option\n\nfrom django.conf import settings\nfrom django.db import connections, router, transaction, models, DEFAULT_DB_ALIAS\nfrom django.core.management import call_command\nfrom django.core.management.base import NoArgsCommand, CommandError\nfrom django.core.management.color import no_style\nfrom django.core.management.sql import sql_flush, emit_post_sync_signal\nfrom django.utils.importlib import import_module\nfrom django.utils.six.moves import input\n\n\nclass Command(NoArgsCommand):\n    option_list = NoArgsCommand.option_list + (\n        make_option('--noinput', action='store_false', dest='interactive', default=True,\n            help='Tells Django to NOT prompt the user for input of any kind.'),\n        make_option('--database', action='store', dest='database',\n            default=DEFAULT_DB_ALIAS, help='Nominates a database to flush. '\n                'Defaults to the \"default\" database.'),\n        make_option('--no-initial-data', action='store_false', dest='load_initial_data', default=True,\n \t\t            help='Tells Django not to load any initial data after database synchronization.'),\n    )\n    help = ('Returns the database to the state it was in immediately after '\n           'syncdb was executed. This means that all data will be removed '\n           'from the database, any post-synchronization handlers will be '\n           're-executed, and the initial_data fixture will be re-installed.')\n\n    def handle_noargs(self, **options):\n        db = options.get('database')\n        connection = connections[db]\n        verbosity = int(options.get('verbosity'))\n        interactive = options.get('interactive')\n        # 'reset_sequences' is a stealth option\n        reset_sequences = options.get('reset_sequences', True)\n\n        self.style = no_style()\n\n        # Import the 'management' module within each installed app, to register\n        # dispatcher events.\n        for app_name in settings.INSTALLED_APPS:\n            try:\n                import_module('.management', app_name)\n            except ImportError:\n                pass\n\n        sql_list = sql_flush(self.style, connection, only_django=True, reset_sequences=reset_sequences)\n\n        if interactive:\n            confirm = input(\"\"\"You have requested a flush of the database.\nThis will IRREVERSIBLY DESTROY all data currently in the %r database,\nand return each table to the state it was in after syncdb.\nAre you sure you want to do this?\n\n    Type 'yes' to continue, or 'no' to cancel: \"\"\" % connection.settings_dict['NAME'])\n        else:\n            confirm = 'yes'\n\n        if confirm == 'yes':\n            try:\n                cursor = connection.cursor()\n                for sql in sql_list:\n                    cursor.execute(sql)\n            except Exception as e:\n                transaction.rollback_unless_managed(using=db)\n                raise CommandError(\"\"\"Database %s couldn't be flushed. Possible reasons:\n  * The database isn't running or isn't configured correctly.\n  * At least one of the expected database tables doesn't exist.\n  * The SQL was invalid.\nHint: Look at the output of 'django-admin.py sqlflush'. That's the SQL this command wasn't able to run.\nThe full error: %s\"\"\" % (connection.settings_dict['NAME'], e))\n            transaction.commit_unless_managed(using=db)\n\n            # Emit the post sync signal. This allows individual\n            # applications to respond as if the database had been\n            # sync'd from scratch.\n            all_models = []\n            for app in models.get_apps():\n                all_models.extend([\n                    m for m in models.get_models(app, include_auto_created=True)\n                    if router.allow_syncdb(db, m)\n                ])\n            emit_post_sync_signal(set(all_models), verbosity, interactive, db)\n\n            # Reinstall the initial_data fixture.\n            kwargs = options.copy()\n            kwargs['database'] = db\n            if options.get('load_initial_data'):\n                # Reinstall the initial_data fixture.\n                call_command('loaddata', 'initial_data', **options)\n\n        else:\n            self.stdout.write(\"Flush cancelled.\\n\")\n"
  },
  {
    "path": "Django-1.5.1/django/core/management/commands/inspectdb.py",
    "content": "from __future__ import unicode_literals\n\nimport keyword\nimport re\nfrom optparse import make_option\n\nfrom django.core.management.base import NoArgsCommand, CommandError\nfrom django.db import connections, DEFAULT_DB_ALIAS\nfrom django.utils import six\n\nclass Command(NoArgsCommand):\n    help = \"Introspects the database tables in the given database and outputs a Django model module.\"\n\n    option_list = NoArgsCommand.option_list + (\n        make_option('--database', action='store', dest='database',\n            default=DEFAULT_DB_ALIAS, help='Nominates a database to '\n                'introspect.  Defaults to using the \"default\" database.'),\n    )\n\n    requires_model_validation = False\n\n    db_module = 'django.db'\n\n    def handle_noargs(self, **options):\n        try:\n            for line in self.handle_inspection(options):\n                self.stdout.write(\"%s\\n\" % line)\n        except NotImplementedError:\n            raise CommandError(\"Database inspection isn't supported for the currently selected database backend.\")\n\n    def handle_inspection(self, options):\n        connection = connections[options.get('database')]\n        # 'table_name_filter' is a stealth option\n        table_name_filter = options.get('table_name_filter')\n\n        table2model = lambda table_name: table_name.title().replace('_', '').replace(' ', '').replace('-', '')\n        strip_prefix = lambda s: s.startswith(\"u'\") and s[1:] or s\n\n        cursor = connection.cursor()\n        yield \"# This is an auto-generated Django model module.\"\n        yield \"# You'll have to do the following manually to clean this up:\"\n        yield \"#     * Rearrange models' order\"\n        yield \"#     * Make sure each model has one field with primary_key=True\"\n        yield \"# Feel free to rename the models, but don't rename db_table values or field names.\"\n        yield \"#\"\n        yield \"# Also note: You'll have to insert the output of 'django-admin.py sqlcustom [appname]'\"\n        yield \"# into your database.\"\n        yield \"from __future__ import unicode_literals\"\n        yield ''\n        yield 'from %s import models' % self.db_module\n        yield ''\n        known_models = []\n        for table_name in connection.introspection.table_names(cursor):\n            if table_name_filter is not None and callable(table_name_filter):\n                if not table_name_filter(table_name):\n                    continue\n            yield 'class %s(models.Model):' % table2model(table_name)\n            known_models.append(table2model(table_name))\n            try:\n                relations = connection.introspection.get_relations(cursor, table_name)\n            except NotImplementedError:\n                relations = {}\n            try:\n                indexes = connection.introspection.get_indexes(cursor, table_name)\n            except NotImplementedError:\n                indexes = {}\n            used_column_names = [] # Holds column names used in the table so far\n            for i, row in enumerate(connection.introspection.get_table_description(cursor, table_name)):\n                comment_notes = [] # Holds Field notes, to be displayed in a Python comment.\n                extra_params = {}  # Holds Field parameters such as 'db_column'.\n                column_name = row[0]\n                is_relation = i in relations\n\n                att_name, params, notes = self.normalize_col_name(\n                    column_name, used_column_names, is_relation)\n                extra_params.update(params)\n                comment_notes.extend(notes)\n\n                used_column_names.append(att_name)\n\n                # Add primary_key and unique, if necessary.\n                if column_name in indexes:\n                    if indexes[column_name]['primary_key']:\n                        extra_params['primary_key'] = True\n                    elif indexes[column_name]['unique']:\n                        extra_params['unique'] = True\n\n                if is_relation:\n                    rel_to = relations[i][1] == table_name and \"'self'\" or table2model(relations[i][1])\n                    if rel_to in known_models:\n                        field_type = 'ForeignKey(%s' % rel_to\n                    else:\n                        field_type = \"ForeignKey('%s'\" % rel_to\n                else:\n                    # Calling `get_field_type` to get the field type string and any\n                    # additional paramters and notes.\n                    field_type, field_params, field_notes = self.get_field_type(connection, table_name, row)\n                    extra_params.update(field_params)\n                    comment_notes.extend(field_notes)\n\n                    field_type += '('\n\n                # Don't output 'id = meta.AutoField(primary_key=True)', because\n                # that's assumed if it doesn't exist.\n                if att_name == 'id' and field_type == 'AutoField(' and extra_params == {'primary_key': True}:\n                    continue\n\n                # Add 'null' and 'blank', if the 'null_ok' flag was present in the\n                # table description.\n                if row[6]: # If it's NULL...\n                    extra_params['blank'] = True\n                    if not field_type in ('TextField(', 'CharField('):\n                        extra_params['null'] = True\n\n                field_desc = '%s = models.%s' % (att_name, field_type)\n                if extra_params:\n                    if not field_desc.endswith('('):\n                        field_desc += ', '\n                    field_desc += ', '.join([\n                        '%s=%s' % (k, strip_prefix(repr(v)))\n                        for k, v in extra_params.items()])\n                field_desc += ')'\n                if comment_notes:\n                    field_desc += ' # ' + ' '.join(comment_notes)\n                yield '    %s' % field_desc\n            for meta_line in self.get_meta(table_name):\n                yield meta_line\n\n    def normalize_col_name(self, col_name, used_column_names, is_relation):\n        \"\"\"\n        Modify the column name to make it Python-compatible as a field name\n        \"\"\"\n        field_params = {}\n        field_notes = []\n\n        new_name = col_name.lower()\n        if new_name != col_name:\n            field_notes.append('Field name made lowercase.')\n\n        if is_relation:\n            if new_name.endswith('_id'):\n                new_name = new_name[:-3]\n            else:\n                field_params['db_column'] = col_name\n\n        new_name, num_repl = re.subn(r'\\W', '_', new_name)\n        if num_repl > 0:\n            field_notes.append('Field renamed to remove unsuitable characters.')\n\n        if new_name.find('__') >= 0:\n            while new_name.find('__') >= 0:\n                new_name = new_name.replace('__', '_')\n            if col_name.lower().find('__') >= 0:\n                # Only add the comment if the double underscore was in the original name\n                field_notes.append(\"Field renamed because it contained more than one '_' in a row.\")\n\n        if new_name.startswith('_'):\n            new_name = 'field%s' % new_name\n            field_notes.append(\"Field renamed because it started with '_'.\")\n\n        if new_name.endswith('_'):\n            new_name = '%sfield' % new_name\n            field_notes.append(\"Field renamed because it ended with '_'.\")\n\n        if keyword.iskeyword(new_name):\n            new_name += '_field'\n            field_notes.append('Field renamed because it was a Python reserved word.')\n\n        if new_name[0].isdigit():\n            new_name = 'number_%s' % new_name\n            field_notes.append(\"Field renamed because it wasn't a valid Python identifier.\")\n\n        if new_name in used_column_names:\n            num = 0\n            while '%s_%d' % (new_name, num) in used_column_names:\n                num += 1\n            new_name = '%s_%d' % (new_name, num)\n            field_notes.append('Field renamed because of name conflict.')\n\n        if col_name != new_name and field_notes:\n            field_params['db_column'] = col_name\n\n        return new_name, field_params, field_notes\n\n    def get_field_type(self, connection, table_name, row):\n        \"\"\"\n        Given the database connection, the table name, and the cursor row\n        description, this routine will return the given field type name, as\n        well as any additional keyword parameters and notes for the field.\n        \"\"\"\n        field_params = {}\n        field_notes = []\n\n        try:\n            field_type = connection.introspection.get_field_type(row[1], row)\n        except KeyError:\n            field_type = 'TextField'\n            field_notes.append('This field type is a guess.')\n\n        # This is a hook for DATA_TYPES_REVERSE to return a tuple of\n        # (field_type, field_params_dict).\n        if type(field_type) is tuple:\n            field_type, new_params = field_type\n            field_params.update(new_params)\n\n        # Add max_length for all CharFields.\n        if field_type == 'CharField' and row[3]:\n            field_params['max_length'] = row[3]\n\n        if field_type == 'DecimalField':\n            field_params['max_digits'] = row[4]\n            field_params['decimal_places'] = row[5]\n\n        return field_type, field_params, field_notes\n\n    def get_meta(self, table_name):\n        \"\"\"\n        Return a sequence comprising the lines of code necessary\n        to construct the inner Meta class for the model corresponding\n        to the given database table name.\n        \"\"\"\n        return [\"    class Meta:\",\n                \"        db_table = '%s'\" % table_name,\n                \"\"]\n"
  },
  {
    "path": "Django-1.5.1/django/core/management/commands/loaddata.py",
    "content": "from __future__ import unicode_literals\n\nimport sys\nimport os\nimport gzip\nimport zipfile\nfrom optparse import make_option\nimport traceback\n\nfrom django.conf import settings\nfrom django.core import serializers\nfrom django.core.management.base import BaseCommand, CommandError\nfrom django.core.management.color import no_style\nfrom django.db import (connections, router, transaction, DEFAULT_DB_ALIAS,\n      IntegrityError, DatabaseError)\nfrom django.db.models import get_apps\nfrom django.utils.encoding import force_text\nfrom django.utils._os import upath\nfrom itertools import product\n\ntry:\n    import bz2\n    has_bz2 = True\nexcept ImportError:\n    has_bz2 = False\n\n\nclass Command(BaseCommand):\n    help = 'Installs the named fixture(s) in the database.'\n    args = \"fixture [fixture ...]\"\n\n    option_list = BaseCommand.option_list + (\n        make_option('--database', action='store', dest='database',\n            default=DEFAULT_DB_ALIAS, help='Nominates a specific database to load '\n                'fixtures into. Defaults to the \"default\" database.'),\n        make_option('--ignorenonexistent', '-i', action='store_true', dest='ignore',\n            default=False, help='Ignores entries in the serialized data for fields'\n                                ' that do not currently exist on the model.'),\n    )\n\n    def handle(self, *fixture_labels, **options):\n\n        ignore = options.get('ignore')\n        using = options.get('database')\n\n        connection = connections[using]\n\n        if not len(fixture_labels):\n            raise CommandError(\n                \"No database fixture specified. Please provide the path of at \"\n                \"least one fixture in the command line.\"\n            )\n\n        verbosity = int(options.get('verbosity'))\n        show_traceback = options.get('traceback')\n\n        # commit is a stealth option - it isn't really useful as\n        # a command line option, but it can be useful when invoking\n        # loaddata from within another script.\n        # If commit=True, loaddata will use its own transaction;\n        # if commit=False, the data load SQL will become part of\n        # the transaction in place when loaddata was invoked.\n        commit = options.get('commit', True)\n\n        # Keep a count of the installed objects and fixtures\n        fixture_count = 0\n        loaded_object_count = 0\n        fixture_object_count = 0\n        models = set()\n\n        humanize = lambda dirname: \"'%s'\" % dirname if dirname else 'absolute path'\n\n        # Get a cursor (even though we don't need one yet). This has\n        # the side effect of initializing the test database (if\n        # it isn't already initialized).\n        cursor = connection.cursor()\n\n        # Start transaction management. All fixtures are installed in a\n        # single transaction to ensure that all references are resolved.\n        if commit:\n            transaction.commit_unless_managed(using=using)\n            transaction.enter_transaction_management(using=using)\n            transaction.managed(True, using=using)\n\n        class SingleZipReader(zipfile.ZipFile):\n            def __init__(self, *args, **kwargs):\n                zipfile.ZipFile.__init__(self, *args, **kwargs)\n                if settings.DEBUG:\n                    assert len(self.namelist()) == 1, \"Zip-compressed fixtures must contain only one file.\"\n            def read(self):\n                return zipfile.ZipFile.read(self, self.namelist()[0])\n\n        compression_types = {\n            None:   open,\n            'gz':   gzip.GzipFile,\n            'zip':  SingleZipReader\n        }\n        if has_bz2:\n            compression_types['bz2'] = bz2.BZ2File\n\n        app_module_paths = []\n        for app in get_apps():\n            if hasattr(app, '__path__'):\n                # It's a 'models/' subpackage\n                for path in app.__path__:\n                    app_module_paths.append(upath(path))\n            else:\n                # It's a models.py module\n                app_module_paths.append(upath(app.__file__))\n\n        app_fixtures = [os.path.join(os.path.dirname(path), 'fixtures') for path in app_module_paths]\n\n        try:\n            with connection.constraint_checks_disabled():\n                for fixture_label in fixture_labels:\n                    parts = fixture_label.split('.')\n\n                    if len(parts) > 1 and parts[-1] in compression_types:\n                        compression_formats = [parts[-1]]\n                        parts = parts[:-1]\n                    else:\n                        compression_formats = compression_types.keys()\n\n                    if len(parts) == 1:\n                        fixture_name = parts[0]\n                        formats = serializers.get_public_serializer_formats()\n                    else:\n                        fixture_name, format = '.'.join(parts[:-1]), parts[-1]\n                        if format in serializers.get_public_serializer_formats():\n                            formats = [format]\n                        else:\n                            formats = []\n\n                    if formats:\n                        if verbosity >= 2:\n                            self.stdout.write(\"Loading '%s' fixtures...\" % fixture_name)\n                    else:\n                        raise CommandError(\n                            \"Problem installing fixture '%s': %s is not a known serialization format.\" %\n                                (fixture_name, format))\n\n                    if os.path.isabs(fixture_name):\n                        fixture_dirs = [fixture_name]\n                    else:\n                        fixture_dirs = app_fixtures + list(settings.FIXTURE_DIRS) + ['']\n\n                    for fixture_dir in fixture_dirs:\n                        if verbosity >= 2:\n                            self.stdout.write(\"Checking %s for fixtures...\" % humanize(fixture_dir))\n\n                        label_found = False\n                        for combo in product([using, None], formats, compression_formats):\n                            database, format, compression_format = combo\n                            file_name = '.'.join(\n                                p for p in [\n                                    fixture_name, database, format, compression_format\n                                ]\n                                if p\n                            )\n\n                            if verbosity >= 3:\n                                self.stdout.write(\"Trying %s for %s fixture '%s'...\" % \\\n                                    (humanize(fixture_dir), file_name, fixture_name))\n                            full_path = os.path.join(fixture_dir, file_name)\n                            open_method = compression_types[compression_format]\n                            try:\n                                fixture = open_method(full_path, 'r')\n                            except IOError:\n                                if verbosity >= 2:\n                                    self.stdout.write(\"No %s fixture '%s' in %s.\" % \\\n                                        (format, fixture_name, humanize(fixture_dir)))\n                            else:\n                                try:\n                                    if label_found:\n                                        raise CommandError(\"Multiple fixtures named '%s' in %s. Aborting.\" %\n                                            (fixture_name, humanize(fixture_dir)))\n\n                                    fixture_count += 1\n                                    objects_in_fixture = 0\n                                    loaded_objects_in_fixture = 0\n                                    if verbosity >= 2:\n                                        self.stdout.write(\"Installing %s fixture '%s' from %s.\" % \\\n                                            (format, fixture_name, humanize(fixture_dir)))\n\n                                    objects = serializers.deserialize(format, fixture, using=using, ignorenonexistent=ignore)\n\n                                    for obj in objects:\n                                        objects_in_fixture += 1\n                                        if router.allow_syncdb(using, obj.object.__class__):\n                                            loaded_objects_in_fixture += 1\n                                            models.add(obj.object.__class__)\n                                            try:\n                                                obj.save(using=using)\n                                            except (DatabaseError, IntegrityError) as e:\n                                                e.args = (\"Could not load %(app_label)s.%(object_name)s(pk=%(pk)s): %(error_msg)s\" % {\n                                                        'app_label': obj.object._meta.app_label,\n                                                        'object_name': obj.object._meta.object_name,\n                                                        'pk': obj.object.pk,\n                                                        'error_msg': force_text(e)\n                                                    },)\n                                                raise\n\n                                    loaded_object_count += loaded_objects_in_fixture\n                                    fixture_object_count += objects_in_fixture\n                                    label_found = True\n                                except Exception as e:\n                                    if not isinstance(e, CommandError):\n                                        e.args = (\"Problem installing fixture '%s': %s\" % (full_path, e),)\n                                    raise\n                                finally:\n                                    fixture.close()\n\n                                # If the fixture we loaded contains 0 objects, assume that an\n                                # error was encountered during fixture loading.\n                                if objects_in_fixture == 0:\n                                    raise CommandError(\n                                        \"No fixture data found for '%s'. (File format may be invalid.)\" %\n                                            (fixture_name))\n\n            # Since we disabled constraint checks, we must manually check for\n            # any invalid keys that might have been added\n            table_names = [model._meta.db_table for model in models]\n            try:\n                connection.check_constraints(table_names=table_names)\n            except Exception as e:\n                e.args = (\"Problem installing fixtures: %s\" % e,)\n                raise\n\n        except (SystemExit, KeyboardInterrupt):\n            raise\n        except Exception as e:\n            if commit:\n                transaction.rollback(using=using)\n                transaction.leave_transaction_management(using=using)\n            raise\n\n        # If we found even one object in a fixture, we need to reset the\n        # database sequences.\n        if loaded_object_count > 0:\n            sequence_sql = connection.ops.sequence_reset_sql(no_style(), models)\n            if sequence_sql:\n                if verbosity >= 2:\n                    self.stdout.write(\"Resetting sequences\\n\")\n                for line in sequence_sql:\n                    cursor.execute(line)\n\n        if commit:\n            transaction.commit(using=using)\n            transaction.leave_transaction_management(using=using)\n\n        if verbosity >= 1:\n            if fixture_object_count == loaded_object_count:\n                self.stdout.write(\"Installed %d object(s) from %d fixture(s)\" % (\n                    loaded_object_count, fixture_count))\n            else:\n                self.stdout.write(\"Installed %d object(s) (of %d) from %d fixture(s)\" % (\n                    loaded_object_count, fixture_object_count, fixture_count))\n\n        # Close the DB connection. This is required as a workaround for an\n        # edge case in MySQL: if the same connection is used to\n        # create tables, load data, and query, the query can return\n        # incorrect results. See Django #7572, MySQL #37735.\n        if commit:\n            connection.close()\n"
  },
  {
    "path": "Django-1.5.1/django/core/management/commands/makemessages.py",
    "content": "import fnmatch\nimport glob\nimport os\nimport re\nimport sys\nfrom itertools import dropwhile\nfrom optparse import make_option\nfrom subprocess import PIPE, Popen\n\nimport django\nfrom django.core.management.base import CommandError, NoArgsCommand\nfrom django.utils.text import get_text_list\nfrom django.utils.jslex import prepare_js_for_gettext\n\nplural_forms_re = re.compile(r'^(?P<value>\"Plural-Forms.+?\\\\n\")\\s*$', re.MULTILINE | re.DOTALL)\nSTATUS_OK = 0\n\ndef handle_extensions(extensions=('html',), ignored=('py',)):\n    \"\"\"\n    Organizes multiple extensions that are separated with commas or passed by\n    using --extension/-e multiple times. Note that the .py extension is ignored\n    here because of the way non-*.py files are handled in make_messages() (they\n    are copied to file.ext.py files to trick xgettext to parse them as Python\n    files).\n\n    For example: running 'django-admin makemessages -e js,txt -e xhtml -a'\n    would result in an extension list: ['.js', '.txt', '.xhtml']\n\n    >>> handle_extensions(['.html', 'html,js,py,py,py,.py', 'py,.py'])\n    set(['.html', '.js'])\n    >>> handle_extensions(['.html, txt,.tpl'])\n    set(['.html', '.tpl', '.txt'])\n    \"\"\"\n    ext_list = []\n    for ext in extensions:\n        ext_list.extend(ext.replace(' ', '').split(','))\n    for i, ext in enumerate(ext_list):\n        if not ext.startswith('.'):\n            ext_list[i] = '.%s' % ext_list[i]\n    return set([x for x in ext_list if x.strip('.') not in ignored])\n\ndef _popen(cmd):\n    \"\"\"\n    Friendly wrapper around Popen for Windows\n    \"\"\"\n    p = Popen(cmd, shell=True, stdout=PIPE, stderr=PIPE, close_fds=os.name != 'nt', universal_newlines=True)\n    output, errors = p.communicate()\n    return output, errors, p.returncode\n\ndef find_files(root, ignore_patterns, verbosity, stdout=sys.stdout, symlinks=False):\n    \"\"\"\n    Helper function to get all files in the given root.\n    \"\"\"\n    dir_suffix = '%s*' % os.sep\n    norm_patterns = [p[:-len(dir_suffix)] if p.endswith(dir_suffix) else p for p in ignore_patterns]\n    all_files = []\n    for dirpath, dirnames, filenames in os.walk(root, topdown=True, followlinks=symlinks):\n        for dirname in dirnames[:]:\n            if is_ignored(os.path.normpath(os.path.join(dirpath, dirname)), norm_patterns):\n                dirnames.remove(dirname)\n                if verbosity > 1:\n                    stdout.write('ignoring directory %s\\n' % dirname)\n        for filename in filenames:\n            if is_ignored(os.path.normpath(os.path.join(dirpath, filename)), ignore_patterns):\n                if verbosity > 1:\n                    stdout.write('ignoring file %s in %s\\n' % (filename, dirpath))\n            else:\n                all_files.extend([(dirpath, filename)])\n    all_files.sort()\n    return all_files\n\ndef is_ignored(path, ignore_patterns):\n    \"\"\"\n    Helper function to check if the given path should be ignored or not.\n    \"\"\"\n    for pattern in ignore_patterns:\n        if fnmatch.fnmatchcase(path, pattern):\n            return True\n    return False\n\ndef copy_plural_forms(msgs, locale, domain, verbosity, stdout=sys.stdout):\n    \"\"\"\n    Copies plural forms header contents from a Django catalog of locale to\n    the msgs string, inserting it at the right place. msgs should be the\n    contents of a newly created .po file.\n    \"\"\"\n    django_dir = os.path.normpath(os.path.join(os.path.dirname(django.__file__)))\n    if domain == 'djangojs':\n        domains = ('djangojs', 'django')\n    else:\n        domains = ('django',)\n    for domain in domains:\n        django_po = os.path.join(django_dir, 'conf', 'locale', locale, 'LC_MESSAGES', '%s.po' % domain)\n        if os.path.exists(django_po):\n            with open(django_po, 'rU') as fp:\n                m = plural_forms_re.search(fp.read())\n            if m:\n                if verbosity > 1:\n                    stdout.write(\"copying plural forms: %s\\n\" % m.group('value'))\n                lines = []\n                seen = False\n                for line in msgs.split('\\n'):\n                    if not line and not seen:\n                        line = '%s\\n' % m.group('value')\n                        seen = True\n                    lines.append(line)\n                msgs = '\\n'.join(lines)\n                break\n    return msgs\n\ndef write_pot_file(potfile, msgs, file, work_file, is_templatized):\n    \"\"\"\n    Write the :param potfile: POT file with the :param msgs: contents,\n    previously making sure its format is valid.\n    \"\"\"\n    if is_templatized:\n        old = '#: ' + work_file[2:]\n        new = '#: ' + file[2:]\n        msgs = msgs.replace(old, new)\n    if os.path.exists(potfile):\n        # Strip the header\n        msgs = '\\n'.join(dropwhile(len, msgs.split('\\n')))\n    else:\n        msgs = msgs.replace('charset=CHARSET', 'charset=UTF-8')\n    with open(potfile, 'a') as fp:\n        fp.write(msgs)\n\ndef process_file(file, dirpath, potfile, domain, verbosity,\n                 extensions, wrap, location, stdout=sys.stdout):\n    \"\"\"\n    Extract translatable literals from :param file: for :param domain:\n    creating or updating the :param potfile: POT file.\n\n    Uses the xgettext GNU gettext utility.\n    \"\"\"\n\n    from django.utils.translation import templatize\n\n    if verbosity > 1:\n        stdout.write('processing file %s in %s\\n' % (file, dirpath))\n    _, file_ext = os.path.splitext(file)\n    if domain == 'djangojs' and file_ext in extensions:\n        is_templatized = True\n        orig_file = os.path.join(dirpath, file)\n        with open(orig_file) as fp:\n            src_data = fp.read()\n        src_data = prepare_js_for_gettext(src_data)\n        thefile = '%s.c' % file\n        work_file = os.path.join(dirpath, thefile)\n        with open(work_file, \"w\") as fp:\n            fp.write(src_data)\n        cmd = (\n            'xgettext -d %s -L C %s %s --keyword=gettext_noop '\n            '--keyword=gettext_lazy --keyword=ngettext_lazy:1,2 '\n            '--keyword=pgettext:1c,2 --keyword=npgettext:1c,2,3 '\n            '--from-code UTF-8 --add-comments=Translators -o - \"%s\"' %\n            (domain, wrap, location, work_file))\n    elif domain == 'django' and (file_ext == '.py' or file_ext in extensions):\n        thefile = file\n        orig_file = os.path.join(dirpath, file)\n        is_templatized = file_ext in extensions\n        if is_templatized:\n            with open(orig_file, \"rU\") as fp:\n                src_data = fp.read()\n            thefile = '%s.py' % file\n            content = templatize(src_data, orig_file[2:])\n            with open(os.path.join(dirpath, thefile), \"w\") as fp:\n                fp.write(content)\n        work_file = os.path.join(dirpath, thefile)\n        cmd = (\n            'xgettext -d %s -L Python %s %s --keyword=gettext_noop '\n            '--keyword=gettext_lazy --keyword=ngettext_lazy:1,2 '\n            '--keyword=ugettext_noop --keyword=ugettext_lazy '\n            '--keyword=ungettext_lazy:1,2 --keyword=pgettext:1c,2 '\n            '--keyword=npgettext:1c,2,3 --keyword=pgettext_lazy:1c,2 '\n            '--keyword=npgettext_lazy:1c,2,3 --from-code UTF-8 '\n            '--add-comments=Translators -o - \"%s\"' %\n            (domain, wrap, location, work_file))\n    else:\n        return\n    msgs, errors, status = _popen(cmd)\n    if errors:\n        if status != STATUS_OK:\n            if is_templatized:\n                os.unlink(work_file)\n            if os.path.exists(potfile):\n                os.unlink(potfile)\n            raise CommandError(\n                \"errors happened while running xgettext on %s\\n%s\" %\n                (file, errors))\n        elif verbosity > 0:\n            # Print warnings\n            stdout.write(errors)\n    if msgs:\n        write_pot_file(potfile, msgs, orig_file, work_file, is_templatized)\n    if is_templatized:\n        os.unlink(work_file)\n\ndef write_po_file(pofile, potfile, domain, locale, verbosity, stdout,\n                  copy_pforms, wrap, location, no_obsolete):\n    \"\"\"\n    Creates of updates the :param pofile: PO file for :param domain: and :param\n    locale:.  Uses contents of the existing :param potfile:.\n\n    Uses mguniq, msgmerge, and msgattrib GNU gettext utilities.\n    \"\"\"\n    msgs, errors, status = _popen('msguniq %s %s --to-code=utf-8 \"%s\"' %\n                                    (wrap, location, potfile))\n    if errors:\n        if status != STATUS_OK:\n            os.unlink(potfile)\n            raise CommandError(\n                \"errors happened while running msguniq\\n%s\" % errors)\n        elif verbosity > 0:\n            stdout.write(errors)\n\n    if os.path.exists(pofile):\n        with open(potfile, 'w') as fp:\n            fp.write(msgs)\n        msgs, errors, status = _popen('msgmerge %s %s -q \"%s\" \"%s\"' %\n                                        (wrap, location, pofile, potfile))\n        if errors:\n            if status != STATUS_OK:\n                os.unlink(potfile)\n                raise CommandError(\n                    \"errors happened while running msgmerge\\n%s\" % errors)\n            elif verbosity > 0:\n                stdout.write(errors)\n    elif copy_pforms:\n        msgs = copy_plural_forms(msgs, locale, domain, verbosity, stdout)\n    msgs = msgs.replace(\n        \"#. #-#-#-#-#  %s.pot (PACKAGE VERSION)  #-#-#-#-#\\n\" % domain, \"\")\n    with open(pofile, 'w') as fp:\n        fp.write(msgs)\n    os.unlink(potfile)\n    if no_obsolete:\n        msgs, errors, status = _popen(\n            'msgattrib %s %s -o \"%s\" --no-obsolete \"%s\"' %\n            (wrap, location, pofile, pofile))\n        if errors:\n            if status != STATUS_OK:\n                raise CommandError(\n                    \"errors happened while running msgattrib\\n%s\" % errors)\n            elif verbosity > 0:\n                stdout.write(errors)\n\ndef make_messages(locale=None, domain='django', verbosity=1, all=False,\n        extensions=None, symlinks=False, ignore_patterns=None, no_wrap=False,\n        no_location=False, no_obsolete=False, stdout=sys.stdout):\n    \"\"\"\n    Uses the ``locale/`` directory from the Django Git tree or an\n    application/project to process all files with translatable literals for\n    the :param domain: domain and :param locale: locale.\n    \"\"\"\n    # Need to ensure that the i18n framework is enabled\n    from django.conf import settings\n    if settings.configured:\n        settings.USE_I18N = True\n    else:\n        settings.configure(USE_I18N = True)\n\n    if ignore_patterns is None:\n        ignore_patterns = []\n\n    invoked_for_django = False\n    if os.path.isdir(os.path.join('conf', 'locale')):\n        localedir = os.path.abspath(os.path.join('conf', 'locale'))\n        invoked_for_django = True\n        # Ignoring all contrib apps\n        ignore_patterns += ['contrib/*']\n    elif os.path.isdir('locale'):\n        localedir = os.path.abspath('locale')\n    else:\n        raise CommandError(\"This script should be run from the Django Git \"\n                \"tree or your project or app tree. If you did indeed run it \"\n                \"from the Git checkout or your project or application, \"\n                \"maybe you are just missing the conf/locale (in the django \"\n                \"tree) or locale (for project and application) directory? It \"\n                \"is not created automatically, you have to create it by hand \"\n                \"if you want to enable i18n for your project or application.\")\n\n    if domain not in ('django', 'djangojs'):\n        raise CommandError(\"currently makemessages only supports domains 'django' and 'djangojs'\")\n\n    if (locale is None and not all) or domain is None:\n        message = \"Type '%s help %s' for usage information.\" % (os.path.basename(sys.argv[0]), sys.argv[1])\n        raise CommandError(message)\n\n    # We require gettext version 0.15 or newer.\n    output, errors, status = _popen('xgettext --version')\n    if status != STATUS_OK:\n        raise CommandError(\"Error running xgettext. Note that Django \"\n                    \"internationalization requires GNU gettext 0.15 or newer.\")\n    match = re.search(r'(?P<major>\\d+)\\.(?P<minor>\\d+)', output)\n    if match:\n        xversion = (int(match.group('major')), int(match.group('minor')))\n        if xversion < (0, 15):\n            raise CommandError(\"Django internationalization requires GNU \"\n                    \"gettext 0.15 or newer. You are using version %s, please \"\n                    \"upgrade your gettext toolset.\" % match.group())\n\n    locales = []\n    if locale is not None:\n        locales.append(str(locale))\n    elif all:\n        locale_dirs = filter(os.path.isdir, glob.glob('%s/*' % localedir))\n        locales = [os.path.basename(l) for l in locale_dirs]\n\n    wrap = '--no-wrap' if no_wrap else ''\n    location = '--no-location' if no_location else ''\n\n    for locale in locales:\n        if verbosity > 0:\n            stdout.write(\"processing language %s\\n\" % locale)\n        basedir = os.path.join(localedir, locale, 'LC_MESSAGES')\n        if not os.path.isdir(basedir):\n            os.makedirs(basedir)\n\n        pofile = os.path.join(basedir, '%s.po' % str(domain))\n        potfile = os.path.join(basedir, '%s.pot' % str(domain))\n\n        if os.path.exists(potfile):\n            os.unlink(potfile)\n\n        for dirpath, file in find_files(\".\", ignore_patterns, verbosity,\n                stdout, symlinks=symlinks):\n            process_file(file, dirpath, potfile, domain, verbosity, extensions,\n                    wrap, location, stdout)\n\n        if os.path.exists(potfile):\n            write_po_file(pofile, potfile, domain, locale, verbosity, stdout,\n                    not invoked_for_django, wrap, location, no_obsolete)\n\n\nclass Command(NoArgsCommand):\n    option_list = NoArgsCommand.option_list + (\n        make_option('--locale', '-l', default=None, dest='locale',\n            help='Creates or updates the message files for the given locale (e.g. pt_BR).'),\n        make_option('--domain', '-d', default='django', dest='domain',\n            help='The domain of the message files (default: \"django\").'),\n        make_option('--all', '-a', action='store_true', dest='all',\n            default=False, help='Updates the message files for all existing locales.'),\n        make_option('--extension', '-e', dest='extensions',\n            help='The file extension(s) to examine (default: \"html,txt\", or \"js\" if the domain is \"djangojs\"). Separate multiple extensions with commas, or use -e multiple times.',\n            action='append'),\n        make_option('--symlinks', '-s', action='store_true', dest='symlinks',\n            default=False, help='Follows symlinks to directories when examining source code and templates for translation strings.'),\n        make_option('--ignore', '-i', action='append', dest='ignore_patterns',\n            default=[], metavar='PATTERN', help='Ignore files or directories matching this glob-style pattern. Use multiple times to ignore more.'),\n        make_option('--no-default-ignore', action='store_false', dest='use_default_ignore_patterns',\n            default=True, help=\"Don't ignore the common glob-style patterns 'CVS', '.*' and '*~'.\"),\n        make_option('--no-wrap', action='store_true', dest='no_wrap',\n            default=False, help=\"Don't break long message lines into several lines\"),\n        make_option('--no-location', action='store_true', dest='no_location',\n            default=False, help=\"Don't write '#: filename:line' lines\"),\n        make_option('--no-obsolete', action='store_true', dest='no_obsolete',\n            default=False, help=\"Remove obsolete message strings\"),\n    )\n    help = (\"Runs over the entire source tree of the current directory and \"\n\"pulls out all strings marked for translation. It creates (or updates) a message \"\n\"file in the conf/locale (in the django tree) or locale (for projects and \"\n\"applications) directory.\\n\\nYou must run this command with one of either the \"\n\"--locale or --all options.\")\n\n    requires_model_validation = False\n    can_import_settings = False\n\n    def handle_noargs(self, *args, **options):\n        locale = options.get('locale')\n        domain = options.get('domain')\n        verbosity = int(options.get('verbosity'))\n        process_all = options.get('all')\n        extensions = options.get('extensions')\n        symlinks = options.get('symlinks')\n        ignore_patterns = options.get('ignore_patterns')\n        if options.get('use_default_ignore_patterns'):\n            ignore_patterns += ['CVS', '.*', '*~']\n        ignore_patterns = list(set(ignore_patterns))\n        no_wrap = options.get('no_wrap')\n        no_location = options.get('no_location')\n        no_obsolete = options.get('no_obsolete')\n        if domain == 'djangojs':\n            exts = extensions if extensions else ['js']\n        else:\n            exts = extensions if extensions else ['html', 'txt']\n        extensions = handle_extensions(exts)\n\n        if verbosity > 1:\n            self.stdout.write('examining files with the extensions: %s\\n'\n                             % get_text_list(list(extensions), 'and'))\n\n        make_messages(locale, domain, verbosity, process_all, extensions,\n            symlinks, ignore_patterns, no_wrap, no_location, no_obsolete, self.stdout)\n"
  },
  {
    "path": "Django-1.5.1/django/core/management/commands/runfcgi.py",
    "content": "from django.core.management.base import BaseCommand\n\nclass Command(BaseCommand):\n    help = \"Runs this project as a FastCGI application. Requires flup.\"\n    args = '[various KEY=val options, use `runfcgi help` for help]'\n\n    def handle(self, *args, **options):\n        from django.conf import settings\n        from django.utils import translation\n        # Activate the current language, because it won't get activated later.\n        try:\n            translation.activate(settings.LANGUAGE_CODE)\n        except AttributeError:\n            pass\n        from django.core.servers.fastcgi import runfastcgi\n        runfastcgi(args)\n        \n    def usage(self, subcommand):\n        from django.core.servers.fastcgi import FASTCGI_HELP\n        return FASTCGI_HELP\n"
  },
  {
    "path": "Django-1.5.1/django/core/management/commands/runserver.py",
    "content": "from optparse import make_option\nfrom datetime import datetime\nimport os\nimport re\nimport sys\nimport socket\n\nfrom django.core.management.base import BaseCommand, CommandError\nfrom django.core.servers.basehttp import run, WSGIServerException, get_internal_wsgi_application\nfrom django.utils import autoreload\n\nnaiveip_re = re.compile(r\"\"\"^(?:\n(?P<addr>\n    (?P<ipv4>\\d{1,3}(?:\\.\\d{1,3}){3}) |         # IPv4 address\n    (?P<ipv6>\\[[a-fA-F0-9:]+\\]) |               # IPv6 address\n    (?P<fqdn>[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*) # FQDN\n):)?(?P<port>\\d+)$\"\"\", re.X)\nDEFAULT_PORT = \"8000\"\n\n\nclass Command(BaseCommand):\n    option_list = BaseCommand.option_list + (\n        make_option('--ipv6', '-6', action='store_true', dest='use_ipv6', default=False,\n            help='Tells Django to use a IPv6 address.'),\n        make_option('--nothreading', action='store_false', dest='use_threading', default=True,\n            help='Tells Django to NOT use threading.'),\n        make_option('--noreload', action='store_false', dest='use_reloader', default=True,\n            help='Tells Django to NOT use the auto-reloader.'),\n    )\n    help = \"Starts a lightweight Web server for development.\"\n    args = '[optional port number, or ipaddr:port]'\n\n    # Validation is called explicitly each time the server is reloaded.\n    requires_model_validation = False\n\n    def get_handler(self, *args, **options):\n        # 获取内部的 WSGIhandler\n        \"\"\"\n        Returns the default WSGI handler for the runner.\n        \"\"\"\n        return get_internal_wsgi_application()\n\n    def handle(self, addrport='', *args, **options):\n        self.use_ipv6 = options.get('use_ipv6')\n        if self.use_ipv6 and not socket.has_ipv6:\n            raise CommandError('Your Python does not support IPv6.')\n        if args:\n            raise CommandError('Usage is runserver %s' % self.args)\n        self._raw_ipv6 = False\n        if not addrport:\n            self.addr = ''\n            self.port = DEFAULT_PORT\n        else:\n            m = re.match(naiveip_re, addrport)\n            if m is None:\n                raise CommandError('\"%s\" is not a valid port number '\n                                   'or address:port pair.' % addrport)\n            self.addr, _ipv4, _ipv6, _fqdn, self.port = m.groups()\n            if not self.port.isdigit():\n                raise CommandError(\"%r is not a valid port number.\" % self.port)\n            if self.addr:\n                if _ipv6:\n                    self.addr = self.addr[1:-1]\n                    self.use_ipv6 = True\n                    self._raw_ipv6 = True\n                elif self.use_ipv6 and not _fqdn:\n                    raise CommandError('\"%s\" is not a valid IPv6 address.' % self.addr)\n        if not self.addr:\n            self.addr = self.use_ipv6 and '::1' or '127.0.0.1'\n            self._raw_ipv6 = bool(self.use_ipv6)\n        self.run(*args, **options)\n\n    def run(self, *args, **options):\n        \"\"\"\n        Runs the server, using the autoreloader if needed\n        \"\"\"\n        use_reloader = options.get('use_reloader')\n\n        if use_reloader:\n            autoreload.main(self.inner_run, args, options)\n        else:\n            self.inner_run(*args, **options)\n\n    def inner_run(self, *args, **options):\n        from django.conf import settings\n        from django.utils import translation\n\n        threading = options.get('use_threading')\n        shutdown_message = options.get('shutdown_message', '')\n        quit_command = (sys.platform == 'win32') and 'CTRL-BREAK' or 'CONTROL-C'\n\n        self.stdout.write(\"Validating models...\\n\\n\")\n        self.validate(display_num_errors=True)\n        self.stdout.write((\n            \"%(started_at)s\\n\"\n            \"Django version %(version)s, using settings %(settings)r\\n\"\n            \"Development server is running at http://%(addr)s:%(port)s/\\n\"\n            \"Quit the server with %(quit_command)s.\\n\"\n        ) % {\n            \"started_at\": datetime.now().strftime('%B %d, %Y - %X'),\n            \"version\": self.get_version(),\n            \"settings\": settings.SETTINGS_MODULE,\n            \"addr\": self._raw_ipv6 and '[%s]' % self.addr or self.addr,\n            \"port\": self.port,\n            \"quit_command\": quit_command,\n        })\n        # django.core.management.base forces the locale to en-us. We should\n        # set it up correctly for the first request (particularly important\n        # in the \"--noreload\" case).\n        translation.activate(settings.LANGUAGE_CODE)\n\n        try:\n            handler = self.get_handler(*args, **options)\n            run(self.addr, int(self.port), handler,\n                ipv6=self.use_ipv6, threading=threading)\n        except WSGIServerException as e:\n            # Use helpful error messages instead of ugly tracebacks.\n            ERRORS = {\n                13: \"You don't have permission to access that port.\",\n                98: \"That port is already in use.\",\n                99: \"That IP address can't be assigned-to.\",\n            }\n            try:\n                error_text = ERRORS[e.args[0].args[0]]\n            except (AttributeError, KeyError):\n                error_text = str(e)\n            self.stderr.write(\"Error: %s\" % error_text)\n            # Need to use an OS exit because sys.exit doesn't work in a thread\n            os._exit(1)\n        except KeyboardInterrupt:\n            if shutdown_message:\n                self.stdout.write(shutdown_message)\n            sys.exit(0)\n\n\n# Kept for backward compatibility\nBaseRunserverCommand = Command\n"
  },
  {
    "path": "Django-1.5.1/django/core/management/commands/shell.py",
    "content": "import os\nfrom django.core.management.base import NoArgsCommand\nfrom optparse import make_option\n\n\nclass Command(NoArgsCommand):\n    shells = ['ipython', 'bpython']\n\n    option_list = NoArgsCommand.option_list + (\n        make_option('--plain', action='store_true', dest='plain',\n            help='Tells Django to use plain Python, not IPython or bpython.'),\n        make_option('-i', '--interface', action='store', type='choice', choices=shells,\n                    dest='interface',\n            help='Specify an interactive interpreter interface. Available options: \"ipython\" and \"bpython\"'),\n\n    )\n    help = \"Runs a Python interactive interpreter. Tries to use IPython or bpython, if one of them is available.\"\n    requires_model_validation = False\n\n    def ipython(self):\n        try:\n            from IPython import embed\n            embed()\n        except ImportError:\n            # IPython < 0.11\n            # Explicitly pass an empty list as arguments, because otherwise\n            # IPython would use sys.argv from this script.\n            try:\n                from IPython.Shell import IPShell\n                shell = IPShell(argv=[])\n                shell.mainloop()\n            except ImportError:\n                # IPython not found at all, raise ImportError\n                raise\n\n    def bpython(self):\n        import bpython\n        bpython.embed()\n\n    def run_shell(self, shell=None):\n        available_shells = [shell] if shell else self.shells\n\n        for shell in available_shells:\n            try:\n                return getattr(self, shell)()\n            except ImportError:\n                pass\n        raise ImportError\n\n    def handle_noargs(self, **options):\n        # XXX: (Temporary) workaround for ticket #1796: force early loading of all\n        # models from installed apps.\n        from django.db.models.loading import get_models\n        get_models()\n\n        use_plain = options.get('plain', False)\n        interface = options.get('interface', None)\n\n        try:\n            if use_plain:\n                # Don't bother loading IPython, because the user wants plain Python.\n                raise ImportError\n\n            self.run_shell(shell=interface)\n        except ImportError:\n            import code\n            # Set up a dictionary to serve as the environment for the shell, so\n            # that tab completion works on objects that are imported at runtime.\n            # See ticket 5082.\n            imported_objects = {}\n            try:  # Try activating rlcompleter, because it's handy.\n                import readline\n            except ImportError:\n                pass\n            else:\n                # We don't have to wrap the following import in a 'try', because\n                # we already know 'readline' was imported successfully.\n                import rlcompleter\n                readline.set_completer(rlcompleter.Completer(imported_objects).complete)\n                readline.parse_and_bind(\"tab:complete\")\n\n            # We want to honor both $PYTHONSTARTUP and .pythonrc.py, so follow system\n            # conventions and get $PYTHONSTARTUP first then .pythonrc.py.\n            if not use_plain:\n                for pythonrc in (os.environ.get(\"PYTHONSTARTUP\"),\n                                 os.path.expanduser('~/.pythonrc.py')):\n                    if pythonrc and os.path.isfile(pythonrc):\n                        try:\n                            with open(pythonrc) as handle:\n                                exec(compile(handle.read(), pythonrc, 'exec'))\n                        except NameError:\n                            pass\n            code.interact(local=imported_objects)\n"
  },
  {
    "path": "Django-1.5.1/django/core/management/commands/sql.py",
    "content": "from __future__ import unicode_literals\n\nfrom optparse import make_option\n\nfrom django.core.management.base import AppCommand\nfrom django.core.management.sql import sql_create\nfrom django.db import connections, DEFAULT_DB_ALIAS\n\nclass Command(AppCommand):\n    help = \"Prints the CREATE TABLE SQL statements for the given app name(s).\"\n\n    option_list = AppCommand.option_list + (\n        make_option('--database', action='store', dest='database',\n            default=DEFAULT_DB_ALIAS, help='Nominates a database to print the '\n                'SQL for.  Defaults to the \"default\" database.'),\n    )\n\n    output_transaction = True\n\n    def handle_app(self, app, **options):\n        return '\\n'.join(sql_create(app, self.style, connections[options.get('database')]))\n"
  },
  {
    "path": "Django-1.5.1/django/core/management/commands/sqlall.py",
    "content": "from __future__ import unicode_literals\n\nfrom optparse import make_option\n\nfrom django.core.management.base import AppCommand\nfrom django.core.management.sql import sql_all\nfrom django.db import connections, DEFAULT_DB_ALIAS\n\n\nclass Command(AppCommand):\n    help = \"Prints the CREATE TABLE, custom SQL and CREATE INDEX SQL statements for the given model module name(s).\"\n\n    option_list = AppCommand.option_list + (\n        make_option('--database', action='store', dest='database',\n            default=DEFAULT_DB_ALIAS, help='Nominates a database to print the '\n                'SQL for.  Defaults to the \"default\" database.'),\n    )\n\n    output_transaction = True\n\n    def handle_app(self, app, **options):\n        return '\\n'.join(sql_all(app, self.style, connections[options.get('database')]))\n"
  },
  {
    "path": "Django-1.5.1/django/core/management/commands/sqlclear.py",
    "content": "from __future__ import unicode_literals\n\nfrom optparse import make_option\n\nfrom django.core.management.base import AppCommand\nfrom django.core.management.sql import sql_delete\nfrom django.db import connections, DEFAULT_DB_ALIAS\n\nclass Command(AppCommand):\n    help = \"Prints the DROP TABLE SQL statements for the given app name(s).\"\n\n    option_list = AppCommand.option_list + (\n        make_option('--database', action='store', dest='database',\n            default=DEFAULT_DB_ALIAS, help='Nominates a database to print the '\n                'SQL for.  Defaults to the \"default\" database.'),\n    )\n\n    output_transaction = True\n\n    def handle_app(self, app, **options):\n        return '\\n'.join(sql_delete(app, self.style, connections[options.get('database')]))\n"
  },
  {
    "path": "Django-1.5.1/django/core/management/commands/sqlcustom.py",
    "content": "from __future__ import unicode_literals\n\nfrom optparse import make_option\n\nfrom django.core.management.base import AppCommand\nfrom django.core.management.sql import sql_custom\nfrom django.db import connections, DEFAULT_DB_ALIAS\n\nclass Command(AppCommand):\n    help = \"Prints the custom table modifying SQL statements for the given app name(s).\"\n\n    option_list = AppCommand.option_list + (\n        make_option('--database', action='store', dest='database',\n            default=DEFAULT_DB_ALIAS, help='Nominates a database to print the '\n                'SQL for.  Defaults to the \"default\" database.'),\n    )\n\n    output_transaction = True\n\n    def handle_app(self, app, **options):\n        return '\\n'.join(sql_custom(app, self.style, connections[options.get('database')]))\n"
  },
  {
    "path": "Django-1.5.1/django/core/management/commands/sqlflush.py",
    "content": "from __future__ import unicode_literals\n\nfrom optparse import make_option\n\nfrom django.core.management.base import NoArgsCommand\nfrom django.core.management.sql import sql_flush\nfrom django.db import connections, DEFAULT_DB_ALIAS\n\nclass Command(NoArgsCommand):\n    help = \"Returns a list of the SQL statements required to return all tables in the database to the state they were in just after they were installed.\"\n\n    option_list = NoArgsCommand.option_list + (\n        make_option('--database', action='store', dest='database',\n            default=DEFAULT_DB_ALIAS, help='Nominates a database to print the '\n                'SQL for.  Defaults to the \"default\" database.'),\n    )\n\n    output_transaction = True\n\n    def handle_noargs(self, **options):\n        return '\\n'.join(sql_flush(self.style, connections[options.get('database')], only_django=True))\n"
  },
  {
    "path": "Django-1.5.1/django/core/management/commands/sqlindexes.py",
    "content": "from __future__ import unicode_literals\n\nfrom optparse import make_option\n\nfrom django.core.management.base import AppCommand\nfrom django.core.management.sql import sql_indexes\nfrom django.db import connections, DEFAULT_DB_ALIAS\n\nclass Command(AppCommand):\n    help = \"Prints the CREATE INDEX SQL statements for the given model module name(s).\"\n\n    option_list = AppCommand.option_list + (\n        make_option('--database', action='store', dest='database',\n            default=DEFAULT_DB_ALIAS, help='Nominates a database to print the '\n                'SQL for.  Defaults to the \"default\" database.'),\n\n    )\n\n    output_transaction = True\n\n    def handle_app(self, app, **options):\n        return '\\n'.join(sql_indexes(app, self.style, connections[options.get('database')]))\n"
  },
  {
    "path": "Django-1.5.1/django/core/management/commands/sqlinitialdata.py",
    "content": "from django.core.management.base import AppCommand, CommandError\n\nclass Command(AppCommand):\n    help = \"RENAMED: see 'sqlcustom'\"\n\n    def handle(self, *apps, **options):\n        raise CommandError(\"This command has been renamed. Use the 'sqlcustom' command instead.\")\n"
  },
  {
    "path": "Django-1.5.1/django/core/management/commands/sqlsequencereset.py",
    "content": "from __future__ import unicode_literals\n\nfrom optparse import make_option\n\nfrom django.core.management.base import AppCommand\nfrom django.db import connections, models, DEFAULT_DB_ALIAS\n\nclass Command(AppCommand):\n    help = 'Prints the SQL statements for resetting sequences for the given app name(s).'\n\n    option_list = AppCommand.option_list + (\n        make_option('--database', action='store', dest='database',\n            default=DEFAULT_DB_ALIAS, help='Nominates a database to print the '\n                'SQL for.  Defaults to the \"default\" database.'),\n\n    )\n\n    output_transaction = True\n\n    def handle_app(self, app, **options):\n        connection = connections[options.get('database')]\n        return '\\n'.join(connection.ops.sequence_reset_sql(self.style, models.get_models(app, include_auto_created=True)))\n"
  },
  {
    "path": "Django-1.5.1/django/core/management/commands/startapp.py",
    "content": "from django.core.management.base import CommandError\nfrom django.core.management.templates import TemplateCommand\nfrom django.utils.importlib import import_module\n\n\nclass Command(TemplateCommand):\n    help = (\"Creates a Django app directory structure for the given app \"\n            \"name in the current directory or optionally in the given \"\n            \"directory.\")\n\n    def handle(self, app_name=None, target=None, **options):\n        if app_name is None:\n            raise CommandError(\"you must provide an app name\")\n\n        # Check that the app_name cannot be imported.\n        try:\n            import_module(app_name)\n        except ImportError:\n            pass\n        else:\n            raise CommandError(\"%r conflicts with the name of an existing \"\n                               \"Python module and cannot be used as an app \"\n                               \"name. Please try another name.\" % app_name)\n\n        super(Command, self).handle('app', app_name, target, **options)\n"
  },
  {
    "path": "Django-1.5.1/django/core/management/commands/startproject.py",
    "content": "from django.core.management.base import CommandError\nfrom django.core.management.templates import TemplateCommand\nfrom django.utils.crypto import get_random_string\nfrom django.utils.importlib import import_module\n\n\nclass Command(TemplateCommand):\n    help = (\"Creates a Django project directory structure for the given \"\n            \"project name in the current directory or optionally in the \"\n            \"given directory.\")\n\n    def handle(self, project_name=None, target=None, *args, **options):\n        if project_name is None:\n            raise CommandError(\"you must provide a project name\")\n\n        # Check that the project_name cannot be imported.\n        try:\n            import_module(project_name) #  检测是否有重复\n        except ImportError:\n            pass\n        else:\n            # 如果导入成功, 将异常\n            raise CommandError(\"%r conflicts with the name of an existing \"\n                               \"Python module and cannot be used as a \"\n                               \"project name. Please try another name.\" %\n                               project_name)\n\n        # Create a random SECRET_KEY hash to put it in the main settings.\n        chars = 'abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*(-_=+)'\n        options['secret_key'] = get_random_string(50, chars)\n\n        super(Command, self).handle('project', project_name, target, **options)\n"
  },
  {
    "path": "Django-1.5.1/django/core/management/commands/syncdb.py",
    "content": "from optparse import make_option\nimport traceback\n\nfrom django.conf import settings\nfrom django.core.management import call_command\nfrom django.core.management.base import NoArgsCommand\nfrom django.core.management.color import no_style\nfrom django.core.management.sql import custom_sql_for_model, emit_post_sync_signal\nfrom django.db import connections, router, transaction, models, DEFAULT_DB_ALIAS\nfrom django.utils.datastructures import SortedDict\nfrom django.utils.importlib import import_module\n\n\nclass Command(NoArgsCommand):\n    option_list = NoArgsCommand.option_list + (\n        make_option('--noinput', action='store_false', dest='interactive', default=True,\n            help='Tells Django to NOT prompt the user for input of any kind.'),\n        make_option('--no-initial-data', action='store_false', dest='load_initial_data', default=True,\n            help='Tells Django not to load any initial data after database synchronization.'),\n        make_option('--database', action='store', dest='database',\n            default=DEFAULT_DB_ALIAS, help='Nominates a database to synchronize. '\n                'Defaults to the \"default\" database.'),\n    )\n    help = \"Create the database tables for all apps in INSTALLED_APPS whose tables haven't already been created.\"\n\n    def handle_noargs(self, **options):\n\n        verbosity = int(options.get('verbosity'))\n        interactive = options.get('interactive')\n        show_traceback = options.get('traceback')\n        load_initial_data = options.get('load_initial_data')\n\n        self.style = no_style()\n\n        # Import the 'management' module within each installed app, to register\n        # dispatcher events.\n        for app_name in settings.INSTALLED_APPS:\n            try:\n                import_module('.management', app_name)\n            except ImportError as exc:\n                # This is slightly hackish. We want to ignore ImportErrors\n                # if the \"management\" module itself is missing -- but we don't\n                # want to ignore the exception if the management module exists\n                # but raises an ImportError for some reason. The only way we\n                # can do this is to check the text of the exception. Note that\n                # we're a bit broad in how we check the text, because different\n                # Python implementations may not use the same text.\n                # CPython uses the text \"No module named management\"\n                # PyPy uses \"No module named myproject.myapp.management\"\n                msg = exc.args[0]\n                if not msg.startswith('No module named') or 'management' not in msg:\n                    raise\n\n        db = options.get('database')\n        connection = connections[db]\n        cursor = connection.cursor()\n\n        # Get a list of already installed *models* so that references work right.\n        tables = connection.introspection.table_names()\n        seen_models = connection.introspection.installed_models(tables)\n        created_models = set()\n        pending_references = {}\n\n        # Build the manifest of apps and models that are to be synchronized\n        all_models = [\n            (app.__name__.split('.')[-2],\n                [m for m in models.get_models(app, include_auto_created=True)\n                if router.allow_syncdb(db, m)])\n            for app in models.get_apps()\n        ]\n\n        def model_installed(model):\n            opts = model._meta\n            converter = connection.introspection.table_name_converter\n            return not ((converter(opts.db_table) in tables) or\n                (opts.auto_created and converter(opts.auto_created._meta.db_table) in tables))\n\n        manifest = SortedDict(\n            (app_name, list(filter(model_installed, model_list)))\n            for app_name, model_list in all_models\n        )\n\n        # Create the tables for each model\n        if verbosity >= 1:\n            self.stdout.write(\"Creating tables ...\\n\")\n        for app_name, model_list in manifest.items():\n            for model in model_list:\n                # Create the model's database table, if it doesn't already exist.\n                if verbosity >= 3:\n                    self.stdout.write(\"Processing %s.%s model\\n\" % (app_name, model._meta.object_name))\n                sql, references = connection.creation.sql_create_model(model, self.style, seen_models)\n                seen_models.add(model)\n                created_models.add(model)\n                for refto, refs in references.items():\n                    pending_references.setdefault(refto, []).extend(refs)\n                    if refto in seen_models:\n                        sql.extend(connection.creation.sql_for_pending_references(refto, self.style, pending_references))\n                sql.extend(connection.creation.sql_for_pending_references(model, self.style, pending_references))\n                if verbosity >= 1 and sql:\n                    self.stdout.write(\"Creating table %s\\n\" % model._meta.db_table)\n                for statement in sql:\n                    cursor.execute(statement)\n                tables.append(connection.introspection.table_name_converter(model._meta.db_table))\n\n        transaction.commit_unless_managed(using=db)\n\n        # Send the post_syncdb signal, so individual apps can do whatever they need\n        # to do at this point.\n        emit_post_sync_signal(created_models, verbosity, interactive, db)\n\n        # The connection may have been closed by a syncdb handler.\n        cursor = connection.cursor()\n\n        # Install custom SQL for the app (but only if this\n        # is a model we've just created)\n        if verbosity >= 1:\n            self.stdout.write(\"Installing custom SQL ...\\n\")\n        for app_name, model_list in manifest.items():\n            for model in model_list:\n                if model in created_models:\n                    custom_sql = custom_sql_for_model(model, self.style, connection)\n                    if custom_sql:\n                        if verbosity >= 2:\n                            self.stdout.write(\"Installing custom SQL for %s.%s model\\n\" % (app_name, model._meta.object_name))\n                        try:\n                            for sql in custom_sql:\n                                cursor.execute(sql)\n                        except Exception as e:\n                            self.stderr.write(\"Failed to install custom SQL for %s.%s model: %s\\n\" % \\\n                                                (app_name, model._meta.object_name, e))\n                            if show_traceback:\n                                traceback.print_exc()\n                            transaction.rollback_unless_managed(using=db)\n                        else:\n                            transaction.commit_unless_managed(using=db)\n                    else:\n                        if verbosity >= 3:\n                            self.stdout.write(\"No custom SQL for %s.%s model\\n\" % (app_name, model._meta.object_name))\n\n        if verbosity >= 1:\n            self.stdout.write(\"Installing indexes ...\\n\")\n        # Install SQL indices for all newly created models\n        for app_name, model_list in manifest.items():\n            for model in model_list:\n                if model in created_models:\n                    index_sql = connection.creation.sql_indexes_for_model(model, self.style)\n                    if index_sql:\n                        if verbosity >= 2:\n                            self.stdout.write(\"Installing index for %s.%s model\\n\" % (app_name, model._meta.object_name))\n                        try:\n                            for sql in index_sql:\n                                cursor.execute(sql)\n                        except Exception as e:\n                            self.stderr.write(\"Failed to install index for %s.%s model: %s\\n\" % \\\n                                                (app_name, model._meta.object_name, e))\n                            transaction.rollback_unless_managed(using=db)\n                        else:\n                            transaction.commit_unless_managed(using=db)\n\n        # Load initial_data fixtures (unless that has been disabled)\n        if load_initial_data:\n            call_command('loaddata', 'initial_data', verbosity=verbosity,\n                         database=db, skip_validation=True)\n"
  },
  {
    "path": "Django-1.5.1/django/core/management/commands/test.py",
    "content": "import logging\nimport sys\nimport os\nfrom optparse import make_option, OptionParser\n\nfrom django.conf import settings\nfrom django.core.management.base import BaseCommand\nfrom django.test.utils import get_runner\n\n\nclass Command(BaseCommand):\n    option_list = BaseCommand.option_list + (\n        make_option('--noinput',\n            action='store_false', dest='interactive', default=True,\n            help='Tells Django to NOT prompt the user for input of any kind.'),\n        make_option('--failfast',\n            action='store_true', dest='failfast', default=False,\n            help='Tells Django to stop running the test suite after first '\n                 'failed test.'),\n        make_option('--testrunner',\n            action='store', dest='testrunner',\n            help='Tells Django to use specified test runner class instead of '\n                 'the one specified by the TEST_RUNNER setting.'),\n        make_option('--liveserver',\n            action='store', dest='liveserver', default=None,\n            help='Overrides the default address where the live server (used '\n                 'with LiveServerTestCase) is expected to run from. The '\n                 'default value is localhost:8081.'),\n    )\n    help = ('Runs the test suite for the specified applications, or the '\n            'entire site if no apps are specified.')\n    args = '[appname ...]'\n\n    requires_model_validation = False\n\n    def __init__(self):\n        self.test_runner = None\n        super(Command, self).__init__()\n\n    def run_from_argv(self, argv):\n        \"\"\"\n        Pre-parse the command line to extract the value of the --testrunner\n        option. This allows a test runner to define additional command line\n        arguments.\n        \"\"\"\n        option = '--testrunner='\n        for arg in argv[2:]:\n            if arg.startswith(option):\n                self.test_runner = arg[len(option):]\n                break\n        super(Command, self).run_from_argv(argv)\n\n    def create_parser(self, prog_name, subcommand):\n        test_runner_class = get_runner(settings, self.test_runner)\n        options = self.option_list + getattr(\n            test_runner_class, 'option_list', ())\n        return OptionParser(prog=prog_name,\n                            usage=self.usage(subcommand),\n                            version=self.get_version(),\n                            option_list=options)\n\n    def execute(self, *args, **options):\n        if int(options['verbosity']) > 0:\n            # ensure that deprecation warnings are displayed during testing\n            # the following state is assumed:\n            # logging.capturewarnings is true\n            # a \"default\" level warnings filter has been added for\n            # DeprecationWarning. See django.conf.LazySettings._configure_logging\n            logger = logging.getLogger('py.warnings')\n            handler = logging.StreamHandler()\n            logger.addHandler(handler)\n        super(Command, self).execute(*args, **options)\n        if int(options['verbosity']) > 0:\n            # remove the testing-specific handler\n            logger.removeHandler(handler)\n\n    def handle(self, *test_labels, **options):\n        from django.conf import settings\n        from django.test.utils import get_runner\n\n        TestRunner = get_runner(settings, options.get('testrunner'))\n        options['verbosity'] = int(options.get('verbosity'))\n\n        if options.get('liveserver') is not None:\n            os.environ['DJANGO_LIVE_TEST_SERVER_ADDRESS'] = options['liveserver']\n            del options['liveserver']\n\n        test_runner = TestRunner(**options)\n        failures = test_runner.run_tests(test_labels)\n\n        if failures:\n            sys.exit(bool(failures))\n"
  },
  {
    "path": "Django-1.5.1/django/core/management/commands/testserver.py",
    "content": "from django.core.management.base import BaseCommand\n\nfrom optparse import make_option\n\nclass Command(BaseCommand):\n    option_list = BaseCommand.option_list + (\n        make_option('--noinput', action='store_false', dest='interactive', default=True,\n            help='Tells Django to NOT prompt the user for input of any kind.'),\n        make_option('--addrport', action='store', dest='addrport',\n            type='string', default='',\n            help='port number or ipaddr:port to run the server on'),\n        make_option('--ipv6', '-6', action='store_true', dest='use_ipv6', default=False,\n            help='Tells Django to use a IPv6 address.'),\n    )\n    help = 'Runs a development server with data from the given fixture(s).'\n    args = '[fixture ...]'\n\n    requires_model_validation = False\n\n    def handle(self, *fixture_labels, **options):\n        from django.core.management import call_command\n        from django.db import connection\n\n        verbosity = int(options.get('verbosity'))\n        interactive = options.get('interactive')\n        addrport = options.get('addrport')\n\n        # Create a test database.\n        db_name = connection.creation.create_test_db(verbosity=verbosity, autoclobber=not interactive)\n\n        # Import the fixture data into the test database.\n        call_command('loaddata', *fixture_labels, **{'verbosity': verbosity})\n\n        # Run the development server. Turn off auto-reloading because it causes\n        # a strange error -- it causes this handle() method to be called\n        # multiple times.\n        shutdown_message = '\\nServer stopped.\\nNote that the test database, %r, has not been deleted. You can explore it on your own.' % db_name\n        use_threading = connection.features.test_db_allows_multiple_connections\n        call_command('runserver',\n            addrport=addrport,\n            shutdown_message=shutdown_message,\n            use_reloader=False,\n            use_ipv6=options['use_ipv6'],\n            use_threading=use_threading\n        )\n"
  },
  {
    "path": "Django-1.5.1/django/core/management/commands/validate.py",
    "content": "from django.core.management.base import NoArgsCommand\n\n\nclass Command(NoArgsCommand):\n    help = \"Validates all installed models.\"\n\n    requires_model_validation = False\n\n    def handle_noargs(self, **options):\n        self.validate(display_num_errors=True)\n"
  },
  {
    "path": "Django-1.5.1/django/core/management/sql.py",
    "content": "from __future__ import unicode_literals\n\nimport codecs\nimport os\nimport re\n\nfrom django.conf import settings\nfrom django.core.management.base import CommandError\nfrom django.db import models\nfrom django.db.models import get_models\nfrom django.utils._os import upath\n\n\ndef sql_create(app, style, connection):\n    \"Returns a list of the CREATE TABLE SQL statements for the given app.\"\n\n    if connection.settings_dict['ENGINE'] == 'django.db.backends.dummy':\n        # This must be the \"dummy\" database backend, which means the user\n        # hasn't set ENGINE for the database.\n        raise CommandError(\"Django doesn't know which syntax to use for your SQL statements,\\n\" +\n            \"because you haven't properly specified the ENGINE setting for the database.\\n\" +\n            \"see: https://docs.djangoproject.com/en/dev/ref/settings/#databases\")\n\n    # Get installed models, so we generate REFERENCES right.\n    # We trim models from the current app so that the sqlreset command does not\n    # generate invalid SQL (leaving models out of known_models is harmless, so\n    # we can be conservative).\n    app_models = models.get_models(app, include_auto_created=True)\n    final_output = []\n    tables = connection.introspection.table_names()\n    known_models = set([model for model in connection.introspection.installed_models(tables) if model not in app_models])\n    pending_references = {}\n\n    for model in app_models:\n        output, references = connection.creation.sql_create_model(model, style, known_models)\n        final_output.extend(output)\n        for refto, refs in references.items():\n            pending_references.setdefault(refto, []).extend(refs)\n            if refto in known_models:\n                final_output.extend(connection.creation.sql_for_pending_references(refto, style, pending_references))\n        final_output.extend(connection.creation.sql_for_pending_references(model, style, pending_references))\n        # Keep track of the fact that we've created the table for this model.\n        known_models.add(model)\n\n    # Handle references to tables that are from other apps\n    # but don't exist physically.\n    not_installed_models = set(pending_references.keys())\n    if not_installed_models:\n        alter_sql = []\n        for model in not_installed_models:\n            alter_sql.extend(['-- ' + sql for sql in\n                connection.creation.sql_for_pending_references(model, style, pending_references)])\n        if alter_sql:\n            final_output.append('-- The following references should be added but depend on non-existent tables:')\n            final_output.extend(alter_sql)\n\n    return final_output\n\n\ndef sql_delete(app, style, connection):\n    \"Returns a list of the DROP TABLE SQL statements for the given app.\"\n\n    # This should work even if a connection isn't available\n    try:\n        cursor = connection.cursor()\n    except:\n        cursor = None\n\n    # Figure out which tables already exist\n    if cursor:\n        table_names = connection.introspection.table_names(cursor)\n    else:\n        table_names = []\n\n    output = []\n\n    # Output DROP TABLE statements for standard application tables.\n    to_delete = set()\n\n    references_to_delete = {}\n    app_models = models.get_models(app, include_auto_created=True)\n    for model in app_models:\n        if cursor and connection.introspection.table_name_converter(model._meta.db_table) in table_names:\n            # The table exists, so it needs to be dropped\n            opts = model._meta\n            for f in opts.local_fields:\n                if f.rel and f.rel.to not in to_delete:\n                    references_to_delete.setdefault(f.rel.to, []).append((model, f))\n\n            to_delete.add(model)\n\n    for model in app_models:\n        if connection.introspection.table_name_converter(model._meta.db_table) in table_names:\n            output.extend(connection.creation.sql_destroy_model(model, references_to_delete, style))\n\n    # Close database connection explicitly, in case this output is being piped\n    # directly into a database client, to avoid locking issues.\n    if cursor:\n        cursor.close()\n        connection.close()\n\n    return output[::-1]  # Reverse it, to deal with table dependencies.\n\n\ndef sql_flush(style, connection, only_django=False, reset_sequences=True):\n    \"\"\"\n    Returns a list of the SQL statements used to flush the database.\n\n    If only_django is True, then only table names that have associated Django\n    models and are in INSTALLED_APPS will be included.\n    \"\"\"\n    if only_django:\n        tables = connection.introspection.django_table_names(only_existing=True)\n    else:\n        tables = connection.introspection.table_names()\n    seqs = connection.introspection.sequence_list() if reset_sequences else ()\n    statements = connection.ops.sql_flush(style, tables, seqs)\n    return statements\n\n\ndef sql_custom(app, style, connection):\n    \"Returns a list of the custom table modifying SQL statements for the given app.\"\n    output = []\n\n    app_models = get_models(app)\n\n    for model in app_models:\n        output.extend(custom_sql_for_model(model, style, connection))\n\n    return output\n\n\ndef sql_indexes(app, style, connection):\n    \"Returns a list of the CREATE INDEX SQL statements for all models in the given app.\"\n    output = []\n    for model in models.get_models(app):\n        output.extend(connection.creation.sql_indexes_for_model(model, style))\n    return output\n\n\ndef sql_all(app, style, connection):\n    \"Returns a list of CREATE TABLE SQL, initial-data inserts, and CREATE INDEX SQL for the given module.\"\n    return sql_create(app, style, connection) + sql_custom(app, style, connection) + sql_indexes(app, style, connection)\n\n\ndef _split_statements(content):\n    comment_re = re.compile(r\"^((?:'[^']*'|[^'])*?)--.*$\")\n    statements = []\n    statement = []\n    for line in content.split(\"\\n\"):\n        cleaned_line = comment_re.sub(r\"\\1\", line).strip()\n        if not cleaned_line:\n            continue\n        statement.append(cleaned_line)\n        if cleaned_line.endswith(\";\"):\n            statements.append(\" \".join(statement))\n            statement = []\n    return statements\n\n\ndef custom_sql_for_model(model, style, connection):\n    opts = model._meta\n    app_dir = os.path.normpath(os.path.join(os.path.dirname(upath(models.get_app(model._meta.app_label).__file__)), 'sql'))\n    output = []\n\n    # Post-creation SQL should come before any initial SQL data is loaded.\n    # However, this should not be done for models that are unmanaged or\n    # for fields that are part of a parent model (via model inheritance).\n    if opts.managed:\n        post_sql_fields = [f for f in opts.local_fields if hasattr(f, 'post_create_sql')]\n        for f in post_sql_fields:\n            output.extend(f.post_create_sql(style, model._meta.db_table))\n\n    # Find custom SQL, if it's available.\n    backend_name = connection.settings_dict['ENGINE'].split('.')[-1]\n    sql_files = [os.path.join(app_dir, \"%s.%s.sql\" % (opts.object_name.lower(), backend_name)),\n                 os.path.join(app_dir, \"%s.sql\" % opts.object_name.lower())]\n    for sql_file in sql_files:\n        if os.path.exists(sql_file):\n            with codecs.open(sql_file, 'U', encoding=settings.FILE_CHARSET) as fp:\n                # Some backends can't execute more than one SQL statement at a time,\n                # so split into separate statements.\n                output.extend(_split_statements(fp.read()))\n    return output\n\n\ndef emit_post_sync_signal(created_models, verbosity, interactive, db):\n    # Emit the post_sync signal for every application.\n    for app in models.get_apps():\n        app_name = app.__name__.split('.')[-2]\n        if verbosity >= 2:\n            print(\"Running post-sync handlers for application %s\" % app_name)\n        models.signals.post_syncdb.send(sender=app, app=app,\n            created_models=created_models, verbosity=verbosity,\n            interactive=interactive, db=db)\n"
  },
  {
    "path": "Django-1.5.1/django/core/management/templates.py",
    "content": "import cgi\nimport errno\nimport mimetypes\nimport os\nimport posixpath\nimport re\nimport shutil\nimport stat\nimport sys\nimport tempfile\ntry:\n    from urllib.request import urlretrieve\nexcept ImportError:     # Python 2\n    from urllib import urlretrieve\n\nfrom optparse import make_option\nfrom os import path\n\nimport django\nfrom django.template import Template, Context\nfrom django.utils import archive\nfrom django.utils._os import rmtree_errorhandler\nfrom django.core.management.base import BaseCommand, CommandError\nfrom django.core.management.commands.makemessages import handle_extensions\n\n\n_drive_re = re.compile('^([a-z]):', re.I)\n_url_drive_re = re.compile('^([a-z])[:|]', re.I)\n\n\nclass TemplateCommand(BaseCommand):\n    \"\"\"\n    Copies either\n        a Django application layout template or  app 模版\n        a Django project                         django 项目模版\n    layout template into the specified directory.\n\n    :param style: A color style object (see django.core.management.color).\n    :param app_or_project: The string 'app' or 'project'.\n    :param name: The name of the application or project.\n    :param directory: The directory to which the template should be copied.\n    :param options: The additional variables passed to project or app templates\n    \"\"\"\n    args = \"[name] [optional destination directory]\"\n\n    option_list = BaseCommand.option_list + (\n\n        # 可以制定 template. 不懂 extension 和 name 有什么用, 请参考:\n        \"\"\"\n        When Django copies the project template files, it also renders certain files through the template engine:\n        the files whose extensions match the --extension option (py by default) and the files whose names are\n        passed with the --name option. The template context used is:\n\n        Any option passed to the startapp command (among the command’s supported options)\n        project_name – the project name as passed to the command\n        project_directory – the full path of the newly created project\n        secret_key – a random key for the SECRET_KEY setting\n        docs_version – the version of the documentation: 'dev' or '1.x'\n        Please also see the rendering warning as mentioned for startapp.\n        \"\"\"\n        make_option('--template',\n                    action='store', dest='template',\n                    help='The dotted import path to load the template from.'),\n\n        猜测: --extension 表示需要渲染的文件扩展名, 默认是 .py\n        make_option('--extension', '-e', dest='extensions',\n                    action='append', default=['py'],\n                    help='The file extension(s) to render (default: \"py\"). '\n                         'Separate multiple extensions with commas, or use '\n                         '-e multiple times.'),\n\n        猜测: --name 指定某个特定的文件名\n        make_option('--name', '-n', dest='files',\n                    action='append', default=[],\n                    help='The file name(s) to render. '\n                         'Separate multiple extensions with commas, or use '\n                         '-n multiple times.')\n        )\n\n    requires_model_validation = False\n\n    # Can't import settings during this command, because they haven't\n    # necessarily been created. 尚未创建 settings, 不能导入 settings\n    can_import_settings = False\n\n    # The supported URL schemes\n    url_schemes = ['http', 'https', 'ftp']\n\n    def handle(self, app_or_project, name, target=None, **options):\n        self.app_or_project = app_or_project\n        self.paths_to_remove = []\n        self.verbosity = int(options.get('verbosity'))\n\n        # If it's not a valid directory name.\n        if not re.search(r'^[_a-zA-Z]\\w*$', name):\n\n            # Provide a smart error message, depending on the error.\n            if not re.search(r'^[_a-zA-Z]', name): 如果不是以字母或者下划线开头\n                message = ('make sure the name begins '\n                           'with a letter or underscore')\n            else:   可能有其他字符\n                message = 'use only numbers, letters and underscores'\n\n            raise CommandError(\"%r is not a valid %s name. Please %s.\" %\n                               (name, app_or_project, message))\n\n        # if some directory is given, make sure it's nicely expanded\n        if target is None: 目标目录\n            top_dir = path.join(os.getcwd(), name)\n\n            try:\n                os.makedirs(top_dir)\n            except OSError as e:\n                if e.errno == errno.EEXIST:\n                    message = \"'%s' already exists\" % top_dir\n                else:\n                    message = e\n                raise CommandError(message)\n\n        else:\n            top_dir = os.path.abspath(path.expanduser(target))\n\n            if not os.path.exists(top_dir):\n                raise CommandError(\"Destination directory '%s' does not \"\n                                   \"exist, please create it first.\" % top_dir)\n\n        extensions = tuple(\n            handle_extensions(options.get('extensions'), ignored=()))\n\n        extra_files = []\n        for file in options.get('files'):\n            extra_files.extend(map(lambda x: x.strip(), file.split(',')))\n\n        在 django 的中带有项目的模版, 只要 render 后就可以得到某个具体项目的代码\n        if self.verbosity >= 2:\n            self.stdout.write(\"Rendering %s template files with \"\n                              \"extensions: %s\\n\" %\n                              (app_or_project, ', '.join(extensions)))\n\n            self.stdout.write(\"Rendering %s template files with \"\n                              \"filenames: %s\\n\" %\n                              (app_or_project, ', '.join(extra_files)))\n\n        base_name = '%s_name' % app_or_project\n        base_subdir = '%s_template' % app_or_project\n        base_directory = '%s_directory' % app_or_project\n\n        context = Context(dict(options, **{\n            base_name: name,\n            base_directory: top_dir,\n        }), autoescape=False)\n\n        # Setup a stub settings environment for template rendering\n        from django.conf import settings # 此处的 settings 是 LazySettings 的对象\n\n        configured 可以获取全局的默认设置\n        if not settings.configured:\n            settings.configure() #调用 settings 对象的配置函数\n\n        template_dir = self.handle_template(options.get('template'),\n                                            base_subdir)\n        prefix_length = len(template_dir) + 1\n\n        # 从 django 中得到 tempdir, 然后依次读取其中的文件 render\n        for root, dirs, files in os.walk(template_dir):\n\n            path_rest = root[prefix_length:]\n            relative_dir = path_rest.replace(base_name, name)\n            if relative_dir:\n                target_dir = path.join(top_dir, relative_dir)\n                if not path.exists(target_dir):\n                    os.mkdir(target_dir)\n\n            for dirname in dirs[:]:\n                if dirname.startswith('.') or dirname == '__pycache__':\n                    dirs.remove(dirname)\n\n            for filename in files:\n                if filename.endswith(('.pyo', '.pyc', '.py.class')):\n                    # Ignore some files as they cause various breakages.\n                    continue\n\n                old_path = path.join(root, filename)\n                new_path = path.join(top_dir, relative_dir,\n                                     filename.replace(base_name, name))\n\n                if path.exists(new_path):\n                    raise CommandError(\"%s already exists, overlaying a \"\n                                       \"project or app into an existing \"\n                                       \"directory won't replace conflicting \"\n                                       \"files\" % new_path)\n\n                # Only render the Python files, as we don't want to\n                # accidentally render Django templates files\n                with open(old_path, 'rb') as template_file:\n                    content = template_file.read()\n\n                if filename.endswith(extensions) or filename in extra_files:\n                    content = content.decode('utf-8')\n                    template = Template(content)\n                    content = template.render(context)\n                    content = content.encode('utf-8')\n\n                with open(new_path, 'wb') as new_file:\n                    new_file.write(content)\n\n                if self.verbosity >= 2:\n                    self.stdout.write(\"Creating %s\\n\" % new_path)\n                try:\n                    shutil.copymode(old_path, new_path)\n                    self.make_writeable(new_path)\n                except OSError:\n                    self.stderr.write(\n                        \"Notice: Couldn't set permission bits on %s. You're \"\n                        \"probably using an uncommon filesystem setup. No \"\n                        \"problem.\" % new_path, self.style.NOTICE)\n\n        if self.paths_to_remove:\n            if self.verbosity >= 2:\n                self.stdout.write(\"Cleaning up temporary files.\\n\")\n            for path_to_remove in self.paths_to_remove:\n                if path.isfile(path_to_remove):\n                    os.remove(path_to_remove)\n                else:\n                    shutil.rmtree(path_to_remove,\n                                  onerror=rmtree_errorhandler)\n\n    def handle_template(self, template, subdir):\n        \"\"\"\n        Determines where the app or project templates are.\n        Use django.__path__[0] as the default because we don't\n        know into which directory Django has been installed.\n\n        决定项目的模版\n        \"\"\"\n        if template is None:\n            return path.join(django.__path__[0], 'conf', subdir)\n        else:\n            if template.startswith('file://'): 本地文件\n                template = template[7:]\n\n            expanded_template = path.expanduser(template)\n            expanded_template = path.normpath(expanded_template)\n\n            if path.isdir(expanded_template): 是否为目录\n                return expanded_template\n\n            # 还可以网络下载\n            if self.is_url(template):\n                # downloads the file and returns the path\n                absolute_path = self.download(template)\n            else:\n                absolute_path = path.abspath(expanded_template)\n\n            if path.exists(absolute_path):\n                return self.extract(absolute_path)\n\n        raise CommandError(\"couldn't handle %s template %s.\" %\n                           (self.app_or_project, template))\n\n    def download(self, url):\n        \"\"\"\n        Downloads the given URL and returns the file name.\n        \"\"\"\n        def cleanup_url(url):\n            tmp = url.rstrip('/')\n            filename = tmp.split('/')[-1]\n\n            if url.endswith('/'):\n                display_url  = tmp + '/'\n            else:\n                display_url = url\n\n            return filename, display_url\n\n        prefix = 'django_%s_template_' % self.app_or_project\n        tempdir = tempfile.mkdtemp(prefix=prefix, suffix='_download')\n        self.paths_to_remove.append(tempdir)\n        filename, display_url = cleanup_url(url)\n\n        if self.verbosity >= 2:\n            self.stdout.write(\"Downloading %s\\n\" % display_url)\n        try:\n            # 用的是 urllib 中的 urlretrieve 函数, 可以从网络下载某个资源\n            the_path, info = urlretrieve(url, path.join(tempdir, filename))\n\n        except IOError as e:\n            raise CommandError(\"couldn't download URL %s to %s: %s\" %\n                               (url, filename, e))\n\n        used_name = the_path.split('/')[-1]\n\n        # Trying to get better name from response headers\n        content_disposition = info.get('content-disposition')\n\n        if content_disposition:\n            _, params = cgi.parse_header(content_disposition)\n            guessed_filename = params.get('filename') or used_name\n        else:\n            guessed_filename = used_name\n\n        # Falling back to content type guessing\n        ext = self.splitext(guessed_filename)[1]\n        content_type = info.get('content-type')\n\n        if not ext and content_type:\n            ext = mimetypes.guess_extension(content_type)\n            if ext:\n                guessed_filename += ext\n\n        # Move the temporary file to a filename that has better\n        # chances of being recognnized by the archive utils\n        if used_name != guessed_filename:\n            guessed_path = path.join(tempdir, guessed_filename)\n            shutil.move(the_path, guessed_path) # rename\n            return guessed_path\n\n        # Giving up\n        return the_path\n\n    def splitext(self, the_path):\n        \"\"\"\n        Like os.path.splitext, but takes off .tar, too\n        \"\"\"\n        base, ext = posixpath.splitext(the_path)\n        if base.lower().endswith('.tar'):\n            ext = base[-4:] + ext\n            base = base[:-4]\n        return base, ext\n\n    def extract(self, filename):\n        \"\"\"\n        Extracts the given file to a temporarily and returns\n        the path of the directory with the extracted content.\n        \"\"\"\n        prefix = 'django_%s_template_' % self.app_or_project\n        tempdir = tempfile.mkdtemp(prefix=prefix, suffix='_extract')\n        self.paths_to_remove.append(tempdir)\n        if self.verbosity >= 2:\n            self.stdout.write(\"Extracting %s\\n\" % filename)\n        try:\n            archive.extract(filename, tempdir)\n            return tempdir\n        except (archive.ArchiveException, IOError) as e:\n            raise CommandError(\"couldn't extract file %s to %s: %s\" %\n                               (filename, tempdir, e))\n\n    def is_url(self, template):\n        \"\"\"\n        Returns True if the name looks like a URL\n        \"\"\"\n        if ':' not in template:\n            return False\n        scheme = template.split(':', 1)[0].lower()\n        return scheme in self.url_schemes\n\n    def make_writeable(self, filename):\n        \"\"\"\n        Make sure that the file is writeable.\n        Useful if our source is read-only.\n        \"\"\"\n        if sys.platform.startswith('java'):\n            # On Jython there is no os.access()\n            return\n\n        if not os.access(filename, os.W_OK):\n            st = os.stat(filename)\n            new_permissions = stat.S_IMODE(st.st_mode) | stat.S_IWUSR\n            os.chmod(filename, new_permissions)\n"
  },
  {
    "path": "Django-1.5.1/django/core/management/validation.py",
    "content": "import collections\nimport sys\n\nfrom django.conf import settings\nfrom django.core.management.color import color_style\nfrom django.utils.encoding import force_str\nfrom django.utils.itercompat import is_iterable\nfrom django.utils import six\n\n\nclass ModelErrorCollection:\n    def __init__(self, outfile=sys.stdout):\n        self.errors = []\n        self.outfile = outfile\n        self.style = color_style()\n\n    def add(self, context, error):\n        self.errors.append((context, error))\n        self.outfile.write(self.style.ERROR(force_str(\"%s: %s\\n\" % (context, error))))\n\n\ndef get_validation_errors(outfile, app=None):\n    \"\"\"\n    Validates all models that are part of the specified app. If no app name is provided,\n    validates all models of all installed apps. Writes errors, if any, to outfile.\n    Returns number of errors.\n    \"\"\"\n    from django.db import models, connection\n    from django.db.models.loading import get_app_errors\n    from django.db.models.fields.related import RelatedObject\n    from django.db.models.deletion import SET_NULL, SET_DEFAULT\n\n    e = ModelErrorCollection(outfile)\n\n    for (app_name, error) in get_app_errors().items():\n        e.add(app_name, error)\n\n    for cls in models.get_models(app, include_swapped=True):\n        opts = cls._meta\n\n        # Check swappable attribute.\n        if opts.swapped:\n            try:\n                app_label, model_name = opts.swapped.split('.')\n            except ValueError:\n                e.add(opts, \"%s is not of the form 'app_label.app_name'.\" % opts.swappable)\n                continue\n            if not models.get_model(app_label, model_name):\n                e.add(opts, \"Model has been swapped out for '%s' which has not been installed or is abstract.\" % opts.swapped)\n            # No need to perform any other validation checks on a swapped model.\n            continue\n\n        # If this is the current User model, check known validation problems with User models\n        if settings.AUTH_USER_MODEL == '%s.%s' % (opts.app_label, opts.object_name):\n            # Check that the USERNAME FIELD isn't included in REQUIRED_FIELDS.\n            if cls.USERNAME_FIELD in cls.REQUIRED_FIELDS:\n                e.add(opts, 'The field named as the USERNAME_FIELD should not be included in REQUIRED_FIELDS on a swappable User model.')\n\n            # Check that the username field is unique\n            if not opts.get_field(cls.USERNAME_FIELD).unique:\n                e.add(opts, 'The USERNAME_FIELD must be unique. Add unique=True to the field parameters.')\n\n        # Model isn't swapped; do field-specific validation.\n        for f in opts.local_fields:\n            if f.name == 'id' and not f.primary_key and opts.pk.name == 'id':\n                e.add(opts, '\"%s\": You can\\'t use \"id\" as a field name, because each model automatically gets an \"id\" field if none of the fields have primary_key=True. You need to either remove/rename your \"id\" field or add primary_key=True to a field.' % f.name)\n            if f.name.endswith('_'):\n                e.add(opts, '\"%s\": Field names cannot end with underscores, because this would lead to ambiguous queryset filters.' % f.name)\n            if (f.primary_key and f.null and\n                    not connection.features.interprets_empty_strings_as_nulls):\n                # We cannot reliably check this for backends like Oracle which\n                # consider NULL and '' to be equal (and thus set up\n                # character-based fields a little differently).\n                e.add(opts, '\"%s\": Primary key fields cannot have null=True.' % f.name)\n            if isinstance(f, models.CharField):\n                try:\n                    max_length = int(f.max_length)\n                    if max_length <= 0:\n                        e.add(opts, '\"%s\": CharFields require a \"max_length\" attribute that is a positive integer.' % f.name)\n                except (ValueError, TypeError):\n                    e.add(opts, '\"%s\": CharFields require a \"max_length\" attribute that is a positive integer.' % f.name)\n            if isinstance(f, models.DecimalField):\n                decimalp_ok, mdigits_ok = False, False\n                decimalp_msg = '\"%s\": DecimalFields require a \"decimal_places\" attribute that is a non-negative integer.'\n                try:\n                    decimal_places = int(f.decimal_places)\n                    if decimal_places < 0:\n                        e.add(opts, decimalp_msg % f.name)\n                    else:\n                        decimalp_ok = True\n                except (ValueError, TypeError):\n                    e.add(opts, decimalp_msg % f.name)\n                mdigits_msg = '\"%s\": DecimalFields require a \"max_digits\" attribute that is a positive integer.'\n                try:\n                    max_digits = int(f.max_digits)\n                    if max_digits <= 0:\n                        e.add(opts,  mdigits_msg % f.name)\n                    else:\n                        mdigits_ok = True\n                except (ValueError, TypeError):\n                    e.add(opts, mdigits_msg % f.name)\n                invalid_values_msg = '\"%s\": DecimalFields require a \"max_digits\" attribute value that is greater than or equal to the value of the \"decimal_places\" attribute.'\n                if decimalp_ok and mdigits_ok:\n                    if decimal_places > max_digits:\n                        e.add(opts, invalid_values_msg % f.name)\n            if isinstance(f, models.FileField) and not f.upload_to:\n                e.add(opts, '\"%s\": FileFields require an \"upload_to\" attribute.' % f.name)\n            if isinstance(f, models.ImageField):\n                # Try to import PIL in either of the two ways it can end up installed.\n                try:\n                    from PIL import Image\n                except ImportError:\n                    try:\n                        import Image\n                    except ImportError:\n                        e.add(opts, '\"%s\": To use ImageFields, you need to install the Python Imaging Library. Get it at http://www.pythonware.com/products/pil/ .' % f.name)\n            if isinstance(f, models.BooleanField) and getattr(f, 'null', False):\n                e.add(opts, '\"%s\": BooleanFields do not accept null values. Use a NullBooleanField instead.' % f.name)\n            if isinstance(f, models.FilePathField) and not (f.allow_files or f.allow_folders):\n                e.add(opts, '\"%s\": FilePathFields must have either allow_files or allow_folders set to True.' % f.name)\n            if f.choices:\n                if isinstance(f.choices, six.string_types) or not is_iterable(f.choices):\n                    e.add(opts, '\"%s\": \"choices\" should be iterable (e.g., a tuple or list).' % f.name)\n                else:\n                    for c in f.choices:\n                        if not isinstance(c, (list, tuple)) or len(c) != 2:\n                            e.add(opts, '\"%s\": \"choices\" should be a sequence of two-tuples.' % f.name)\n            if f.db_index not in (None, True, False):\n                e.add(opts, '\"%s\": \"db_index\" should be either None, True or False.' % f.name)\n\n            # Perform any backend-specific field validation.\n            connection.validation.validate_field(e, opts, f)\n\n            # Check if the on_delete behavior is sane\n            if f.rel and hasattr(f.rel, 'on_delete'):\n                if f.rel.on_delete == SET_NULL and not f.null:\n                    e.add(opts, \"'%s' specifies on_delete=SET_NULL, but cannot be null.\" % f.name)\n                elif f.rel.on_delete == SET_DEFAULT and not f.has_default():\n                    e.add(opts, \"'%s' specifies on_delete=SET_DEFAULT, but has no default value.\" % f.name)\n\n            # Check to see if the related field will clash with any existing\n            # fields, m2m fields, m2m related objects or related objects\n            if f.rel:\n                if f.rel.to not in models.get_models():\n                    # If the related model is swapped, provide a hint;\n                    # otherwise, the model just hasn't been installed.\n                    if not isinstance(f.rel.to, six.string_types) and f.rel.to._meta.swapped:\n                        e.add(opts, \"'%s' defines a relation with the model '%s.%s', which has been swapped out. Update the relation to point at settings.%s.\" % (f.name, f.rel.to._meta.app_label, f.rel.to._meta.object_name, f.rel.to._meta.swappable))\n                    else:\n                        e.add(opts, \"'%s' has a relation with model %s, which has either not been installed or is abstract.\" % (f.name, f.rel.to))\n                # it is a string and we could not find the model it refers to\n                # so skip the next section\n                if isinstance(f.rel.to, six.string_types):\n                    continue\n\n                # Make sure the related field specified by a ForeignKey is unique\n                if not f.rel.to._meta.get_field(f.rel.field_name).unique:\n                    e.add(opts, \"Field '%s' under model '%s' must have a unique=True constraint.\" % (f.rel.field_name, f.rel.to.__name__))\n\n                rel_opts = f.rel.to._meta\n                rel_name = RelatedObject(f.rel.to, cls, f).get_accessor_name()\n                rel_query_name = f.related_query_name()\n                if not f.rel.is_hidden():\n                    for r in rel_opts.fields:\n                        if r.name == rel_name:\n                            e.add(opts, \"Accessor for field '%s' clashes with field '%s.%s'. Add a related_name argument to the definition for '%s'.\" % (f.name, rel_opts.object_name, r.name, f.name))\n                        if r.name == rel_query_name:\n                            e.add(opts, \"Reverse query name for field '%s' clashes with field '%s.%s'. Add a related_name argument to the definition for '%s'.\" % (f.name, rel_opts.object_name, r.name, f.name))\n                    for r in rel_opts.local_many_to_many:\n                        if r.name == rel_name:\n                            e.add(opts, \"Accessor for field '%s' clashes with m2m field '%s.%s'. Add a related_name argument to the definition for '%s'.\" % (f.name, rel_opts.object_name, r.name, f.name))\n                        if r.name == rel_query_name:\n                            e.add(opts, \"Reverse query name for field '%s' clashes with m2m field '%s.%s'. Add a related_name argument to the definition for '%s'.\" % (f.name, rel_opts.object_name, r.name, f.name))\n                    for r in rel_opts.get_all_related_many_to_many_objects():\n                        if r.get_accessor_name() == rel_name:\n                            e.add(opts, \"Accessor for field '%s' clashes with related m2m field '%s.%s'. Add a related_name argument to the definition for '%s'.\" % (f.name, rel_opts.object_name, r.get_accessor_name(), f.name))\n                        if r.get_accessor_name() == rel_query_name:\n                            e.add(opts, \"Reverse query name for field '%s' clashes with related m2m field '%s.%s'. Add a related_name argument to the definition for '%s'.\" % (f.name, rel_opts.object_name, r.get_accessor_name(), f.name))\n                    for r in rel_opts.get_all_related_objects():\n                        if r.field is not f:\n                            if r.get_accessor_name() == rel_name:\n                                e.add(opts, \"Accessor for field '%s' clashes with related field '%s.%s'. Add a related_name argument to the definition for '%s'.\" % (f.name, rel_opts.object_name, r.get_accessor_name(), f.name))\n                            if r.get_accessor_name() == rel_query_name:\n                                e.add(opts, \"Reverse query name for field '%s' clashes with related field '%s.%s'. Add a related_name argument to the definition for '%s'.\" % (f.name, rel_opts.object_name, r.get_accessor_name(), f.name))\n\n        seen_intermediary_signatures = []\n        for i, f in enumerate(opts.local_many_to_many):\n            # Check to see if the related m2m field will clash with any\n            # existing fields, m2m fields, m2m related objects or related\n            # objects\n            if f.rel.to not in models.get_models():\n                # If the related model is swapped, provide a hint;\n                # otherwise, the model just hasn't been installed.\n                if not isinstance(f.rel.to, six.string_types) and f.rel.to._meta.swapped:\n                    e.add(opts, \"'%s' defines a relation with the model '%s.%s', which has been swapped out. Update the relation to point at settings.%s.\" % (f.name, f.rel.to._meta.app_label, f.rel.to._meta.object_name, f.rel.to._meta.swappable))\n                else:\n                    e.add(opts, \"'%s' has an m2m relation with model %s, which has either not been installed or is abstract.\" % (f.name, f.rel.to))\n\n                # it is a string and we could not find the model it refers to\n                # so skip the next section\n                if isinstance(f.rel.to, six.string_types):\n                    continue\n\n            # Check that the field is not set to unique.  ManyToManyFields do not support unique.\n            if f.unique:\n                e.add(opts, \"ManyToManyFields cannot be unique.  Remove the unique argument on '%s'.\" % f.name)\n\n            if f.rel.through is not None and not isinstance(f.rel.through, six.string_types):\n                from_model, to_model = cls, f.rel.to\n                if from_model == to_model and f.rel.symmetrical and not f.rel.through._meta.auto_created:\n                    e.add(opts, \"Many-to-many fields with intermediate tables cannot be symmetrical.\")\n                seen_from, seen_to, seen_self = False, False, 0\n                for inter_field in f.rel.through._meta.fields:\n                    rel_to = getattr(inter_field.rel, 'to', None)\n                    if from_model == to_model:  # relation to self\n                        if rel_to == from_model:\n                            seen_self += 1\n                        if seen_self > 2:\n                            e.add(opts, \"Intermediary model %s has more than \"\n                                \"two foreign keys to %s, which is ambiguous \"\n                                \"and is not permitted.\" % (\n                                    f.rel.through._meta.object_name,\n                                    from_model._meta.object_name\n                                )\n                            )\n                    else:\n                        if rel_to == from_model:\n                            if seen_from:\n                                e.add(opts, \"Intermediary model %s has more \"\n                                    \"than one foreign key to %s, which is \"\n                                    \"ambiguous and is not permitted.\" % (\n                                        f.rel.through._meta.object_name,\n                                         from_model._meta.object_name\n                                     )\n                                 )\n                            else:\n                                seen_from = True\n                        elif rel_to == to_model:\n                            if seen_to:\n                                e.add(opts, \"Intermediary model %s has more \"\n                                    \"than one foreign key to %s, which is \"\n                                    \"ambiguous and is not permitted.\" % (\n                                        f.rel.through._meta.object_name,\n                                        rel_to._meta.object_name\n                                    )\n                                )\n                            else:\n                                seen_to = True\n                if f.rel.through not in models.get_models(include_auto_created=True):\n                    e.add(opts, \"'%s' specifies an m2m relation through model \"\n                        \"%s, which has not been installed.\" % (f.name, f.rel.through)\n                    )\n                signature = (f.rel.to, cls, f.rel.through)\n                if signature in seen_intermediary_signatures:\n                    e.add(opts, \"The model %s has two manually-defined m2m \"\n                        \"relations through the model %s, which is not \"\n                        \"permitted. Please consider using an extra field on \"\n                        \"your intermediary model instead.\" % (\n                            cls._meta.object_name,\n                            f.rel.through._meta.object_name\n                        )\n                    )\n                else:\n                    seen_intermediary_signatures.append(signature)\n                if not f.rel.through._meta.auto_created:\n                    seen_related_fk, seen_this_fk = False, False\n                    for field in f.rel.through._meta.fields:\n                        if field.rel:\n                            if not seen_related_fk and field.rel.to == f.rel.to:\n                                seen_related_fk = True\n                            elif field.rel.to == cls:\n                                seen_this_fk = True\n                    if not seen_related_fk or not seen_this_fk:\n                        e.add(opts, \"'%s' is a manually-defined m2m relation \"\n                            \"through model %s, which does not have foreign keys \"\n                            \"to %s and %s\" % (f.name, f.rel.through._meta.object_name,\n                                f.rel.to._meta.object_name, cls._meta.object_name)\n                        )\n            elif isinstance(f.rel.through, six.string_types):\n                e.add(opts, \"'%s' specifies an m2m relation through model %s, \"\n                    \"which has not been installed\" % (f.name, f.rel.through)\n                )\n\n            rel_opts = f.rel.to._meta\n            rel_name = RelatedObject(f.rel.to, cls, f).get_accessor_name()\n            rel_query_name = f.related_query_name()\n            # If rel_name is none, there is no reverse accessor (this only\n            # occurs for symmetrical m2m relations to self). If this is the\n            # case, there are no clashes to check for this field, as there are\n            # no reverse descriptors for this field.\n            if rel_name is not None:\n                for r in rel_opts.fields:\n                    if r.name == rel_name:\n                        e.add(opts, \"Accessor for m2m field '%s' clashes with field '%s.%s'. Add a related_name argument to the definition for '%s'.\" % (f.name, rel_opts.object_name, r.name, f.name))\n                    if r.name == rel_query_name:\n                        e.add(opts, \"Reverse query name for m2m field '%s' clashes with field '%s.%s'. Add a related_name argument to the definition for '%s'.\" % (f.name, rel_opts.object_name, r.name, f.name))\n                for r in rel_opts.local_many_to_many:\n                    if r.name == rel_name:\n                        e.add(opts, \"Accessor for m2m field '%s' clashes with m2m field '%s.%s'. Add a related_name argument to the definition for '%s'.\" % (f.name, rel_opts.object_name, r.name, f.name))\n                    if r.name == rel_query_name:\n                        e.add(opts, \"Reverse query name for m2m field '%s' clashes with m2m field '%s.%s'. Add a related_name argument to the definition for '%s'.\" % (f.name, rel_opts.object_name, r.name, f.name))\n                for r in rel_opts.get_all_related_many_to_many_objects():\n                    if r.field is not f:\n                        if r.get_accessor_name() == rel_name:\n                            e.add(opts, \"Accessor for m2m field '%s' clashes with related m2m field '%s.%s'. Add a related_name argument to the definition for '%s'.\" % (f.name, rel_opts.object_name, r.get_accessor_name(), f.name))\n                        if r.get_accessor_name() == rel_query_name:\n                            e.add(opts, \"Reverse query name for m2m field '%s' clashes with related m2m field '%s.%s'. Add a related_name argument to the definition for '%s'.\" % (f.name, rel_opts.object_name, r.get_accessor_name(), f.name))\n                for r in rel_opts.get_all_related_objects():\n                    if r.get_accessor_name() == rel_name:\n                        e.add(opts, \"Accessor for m2m field '%s' clashes with related field '%s.%s'. Add a related_name argument to the definition for '%s'.\" % (f.name, rel_opts.object_name, r.get_accessor_name(), f.name))\n                    if r.get_accessor_name() == rel_query_name:\n                        e.add(opts, \"Reverse query name for m2m field '%s' clashes with related field '%s.%s'. Add a related_name argument to the definition for '%s'.\" % (f.name, rel_opts.object_name, r.get_accessor_name(), f.name))\n\n        # Check ordering attribute.\n        if opts.ordering:\n            for field_name in opts.ordering:\n                if field_name == '?':\n                    continue\n                if field_name.startswith('-'):\n                    field_name = field_name[1:]\n                if opts.order_with_respect_to and field_name == '_order':\n                    continue\n                # Skip ordering in the format field1__field2 (FIXME: checking\n                # this format would be nice, but it's a little fiddly).\n                if '__' in field_name:\n                    continue\n                # Skip ordering on pk. This is always a valid order_by field\n                # but is an alias and therefore won't be found by opts.get_field.\n                if field_name == 'pk':\n                    continue\n                try:\n                    opts.get_field(field_name, many_to_many=False)\n                except models.FieldDoesNotExist:\n                    e.add(opts, '\"ordering\" refers to \"%s\", a field that doesn\\'t exist.' % field_name)\n\n        # Check unique_together.\n        for ut in opts.unique_together:\n            validate_local_fields(e, opts, \"unique_together\", ut)\n        if not isinstance(opts.index_together, collections.Sequence):\n            e.add(opts, '\"index_together\" must a sequence')\n        else:\n            for it in opts.index_together:\n                validate_local_fields(e, opts, \"index_together\", it)\n\n    return len(e.errors)\n\n\ndef validate_local_fields(e, opts, field_name, fields):\n    from django.db import models\n\n    if not isinstance(fields, collections.Sequence):\n        e.add(opts, 'all %s elements must be sequences' % field_name)\n    else:\n        for field in fields:\n            try:\n                f = opts.get_field(field, many_to_many=True)\n            except models.FieldDoesNotExist:\n                e.add(opts, '\"%s\" refers to %s, a field that doesn\\'t exist.' % (field_name, field))\n            else:\n                if isinstance(f.rel, models.ManyToManyRel):\n                    e.add(opts, '\"%s\" refers to %s. ManyToManyFields are not supported in %s.' % (field_name, f.name, field_name))\n                if f not in opts.local_fields:\n                    e.add(opts, '\"%s\" refers to %s. This is not in the same model as the %s statement.' % (field_name, f.name, field_name))\n"
  },
  {
    "path": "Django-1.5.1/django/core/paginator.py",
    "content": "from math import ceil\n\nfrom django.utils import six\n\n\nclass InvalidPage(Exception):\n    pass\n\nclass PageNotAnInteger(InvalidPage):\n    pass\n\nclass EmptyPage(InvalidPage):\n    pass\n\nclass Paginator(object):\n    def __init__(self, object_list, per_page, orphans=0, allow_empty_first_page=True):\n        self.object_list = object_list\n        self.per_page = int(per_page)\n        self.orphans = int(orphans)\n        self.allow_empty_first_page = allow_empty_first_page\n        self._num_pages = self._count = None\n\n    def validate_number(self, number):\n        \"Validates the given 1-based page number.\"\n        try:\n            number = int(number)\n        except (TypeError, ValueError):\n            raise PageNotAnInteger('That page number is not an integer')\n        if number < 1:\n            raise EmptyPage('That page number is less than 1')\n        if number > self.num_pages:\n            if number == 1 and self.allow_empty_first_page:\n                pass\n            else:\n                raise EmptyPage('That page contains no results')\n        return number\n\n    def page(self, number):\n        \"Returns a Page object for the given 1-based page number.\"\n        number = self.validate_number(number)\n        bottom = (number - 1) * self.per_page\n        top = bottom + self.per_page\n        if top + self.orphans >= self.count:\n            top = self.count\n        return Page(self.object_list[bottom:top], number, self)\n\n    def _get_count(self):\n        \"Returns the total number of objects, across all pages.\"\n        if self._count is None:\n            try:\n                self._count = self.object_list.count()\n            except (AttributeError, TypeError):\n                # AttributeError if object_list has no count() method.\n                # TypeError if object_list.count() requires arguments\n                # (i.e. is of type list).\n                self._count = len(self.object_list)\n        return self._count\n    count = property(_get_count)\n\n    def _get_num_pages(self):\n        \"Returns the total number of pages.\"\n        if self._num_pages is None:\n            if self.count == 0 and not self.allow_empty_first_page:\n                self._num_pages = 0\n            else:\n                hits = max(1, self.count - self.orphans)\n                self._num_pages = int(ceil(hits / float(self.per_page)))\n        return self._num_pages\n    num_pages = property(_get_num_pages)\n\n    def _get_page_range(self):\n        \"\"\"\n        Returns a 1-based range of pages for iterating through within\n        a template for loop.\n        \"\"\"\n        return range(1, self.num_pages + 1)\n    page_range = property(_get_page_range)\n\nQuerySetPaginator = Paginator # For backwards-compatibility.\n\nclass Page(object):\n    def __init__(self, object_list, number, paginator):\n        self.object_list = object_list\n        self.number = number\n        self.paginator = paginator\n\n    def __repr__(self):\n        return '<Page %s of %s>' % (self.number, self.paginator.num_pages)\n\n    def __len__(self):\n        return len(self.object_list)\n\n    def __getitem__(self, index):\n        if not isinstance(index, (slice,) + six.integer_types):\n            raise TypeError\n        # The object_list is converted to a list so that if it was a QuerySet\n        # it won't be a database hit per __getitem__.\n        return list(self.object_list)[index]\n\n    # The following four methods are only necessary for Python <2.6\n    # compatibility (this class could just extend 2.6's collections.Sequence).\n\n    def __iter__(self):\n        i = 0\n        try:\n            while True:\n                v = self[i]\n                yield v\n                i += 1\n        except IndexError:\n            return\n\n    def __contains__(self, value):\n        for v in self:\n            if v == value:\n                return True\n        return False\n\n    def index(self, value):\n        for i, v in enumerate(self):\n            if v == value:\n                return i\n        raise ValueError\n\n    def count(self, value):\n        return sum([1 for v in self if v == value])\n\n    # End of compatibility methods.\n\n    def has_next(self):\n        return self.number < self.paginator.num_pages\n\n    def has_previous(self):\n        return self.number > 1\n\n    def has_other_pages(self):\n        return self.has_previous() or self.has_next()\n\n    def next_page_number(self):\n        return self.paginator.validate_number(self.number + 1)\n\n    def previous_page_number(self):\n        return self.paginator.validate_number(self.number - 1)\n\n    def start_index(self):\n        \"\"\"\n        Returns the 1-based index of the first object on this page,\n        relative to total objects in the paginator.\n        \"\"\"\n        # Special case, return zero if no items.\n        if self.paginator.count == 0:\n            return 0\n        return (self.paginator.per_page * (self.number - 1)) + 1\n\n    def end_index(self):\n        \"\"\"\n        Returns the 1-based index of the last object on this page,\n        relative to total objects found (hits).\n        \"\"\"\n        # Special case for the last page because there can be orphans.\n        if self.number == self.paginator.num_pages:\n            return self.paginator.count\n        return self.number * self.paginator.per_page\n"
  },
  {
    "path": "Django-1.5.1/django/core/serializers/__init__.py",
    "content": "\"\"\"\nInterfaces for serializing Django objects.\n\nUsage::\n\n    from django.core import serializers\n    json = serializers.serialize(\"json\", some_query_set)\n    objects = list(serializers.deserialize(\"json\", json))\n\nTo add your own serializers, use the SERIALIZATION_MODULES setting::\n\n    SERIALIZATION_MODULES = {\n        \"csv\" : \"path.to.csv.serializer\",\n        \"txt\" : \"path.to.txt.serializer\",\n    }\n\n\"\"\"\n\nfrom django.conf import settings\nfrom django.utils import importlib\nfrom django.utils import six\nfrom django.core.serializers.base import SerializerDoesNotExist\n\n# Built-in serializers\nBUILTIN_SERIALIZERS = {\n    \"xml\"    : \"django.core.serializers.xml_serializer\",\n    \"python\" : \"django.core.serializers.python\",\n    \"json\"   : \"django.core.serializers.json\",\n}\n\n# Check for PyYaml and register the serializer if it's available.\ntry:\n    import yaml\n    BUILTIN_SERIALIZERS[\"yaml\"] = \"django.core.serializers.pyyaml\"\nexcept ImportError:\n    pass\n\n_serializers = {}\n\ndef register_serializer(format, serializer_module, serializers=None):\n    \"\"\"Register a new serializer.\n\n    ``serializer_module`` should be the fully qualified module name\n    for the serializer.\n\n    If ``serializers`` is provided, the registration will be added\n    to the provided dictionary.\n\n    If ``serializers`` is not provided, the registration will be made\n    directly into the global register of serializers. Adding serializers\n    directly is not a thread-safe operation.\n    \"\"\"\n    if serializers is None and not _serializers:\n        _load_serializers()\n    module = importlib.import_module(serializer_module)\n    if serializers is None:\n        _serializers[format] = module\n    else:\n        serializers[format] = module\n\ndef unregister_serializer(format):\n    \"Unregister a given serializer. This is not a thread-safe operation.\"\n    if not _serializers:\n        _load_serializers()\n    if format not in _serializers:\n        raise SerializerDoesNotExist(format)\n    del _serializers[format]\n\ndef get_serializer(format):\n    if not _serializers:\n        _load_serializers()\n    if format not in _serializers:\n        raise SerializerDoesNotExist(format)\n    return _serializers[format].Serializer\n\ndef get_serializer_formats():\n    if not _serializers:\n        _load_serializers()\n    return list(_serializers)\n\ndef get_public_serializer_formats():\n    if not _serializers:\n        _load_serializers()\n    return [k for k, v in six.iteritems(_serializers) if not v.Serializer.internal_use_only]\n\ndef get_deserializer(format):\n    if not _serializers:\n        _load_serializers()\n    if format not in _serializers:\n        raise SerializerDoesNotExist(format)\n    return _serializers[format].Deserializer\n\ndef serialize(format, queryset, **options):\n    \"\"\"\n    Serialize a queryset (or any iterator that returns database objects) using\n    a certain serializer.\n    \"\"\"\n    s = get_serializer(format)()\n    s.serialize(queryset, **options)\n    return s.getvalue()\n\ndef deserialize(format, stream_or_string, **options):\n    \"\"\"\n    Deserialize a stream or a string. Returns an iterator that yields ``(obj,\n    m2m_relation_dict)``, where ``obj`` is a instantiated -- but *unsaved* --\n    object, and ``m2m_relation_dict`` is a dictionary of ``{m2m_field_name :\n    list_of_related_objects}``.\n    \"\"\"\n    d = get_deserializer(format)\n    return d(stream_or_string, **options)\n\ndef _load_serializers():\n    \"\"\"\n    Register built-in and settings-defined serializers. This is done lazily so\n    that user code has a chance to (e.g.) set up custom settings without\n    needing to be careful of import order.\n    \"\"\"\n    global _serializers\n    serializers = {}\n    for format in BUILTIN_SERIALIZERS:\n        register_serializer(format, BUILTIN_SERIALIZERS[format], serializers)\n    if hasattr(settings, \"SERIALIZATION_MODULES\"):\n        for format in settings.SERIALIZATION_MODULES:\n            register_serializer(format, settings.SERIALIZATION_MODULES[format], serializers)\n    _serializers = serializers\n"
  },
  {
    "path": "Django-1.5.1/django/core/serializers/base.py",
    "content": "\"\"\"\nModule for abstract serializer/unserializer base classes.\n\"\"\"\n\nfrom django.db import models\nfrom django.utils.encoding import smart_text\nfrom django.utils import six\n\nclass SerializerDoesNotExist(KeyError):\n    \"\"\"The requested serializer was not found.\"\"\"\n    pass\n\nclass SerializationError(Exception):\n    \"\"\"Something bad happened during serialization.\"\"\"\n    pass\n\nclass DeserializationError(Exception):\n    \"\"\"Something bad happened during deserialization.\"\"\"\n    pass\n\nclass Serializer(object):\n    \"\"\"\n    Abstract serializer base class.\n    \"\"\"\n\n    # Indicates if the implemented serializer is only available for\n    # internal Django use.\n    internal_use_only = False\n\n    def serialize(self, queryset, **options):\n        \"\"\"\n        Serialize a queryset.\n        \"\"\"\n        self.options = options\n\n        self.stream = options.pop(\"stream\", six.StringIO())\n        self.selected_fields = options.pop(\"fields\", None)\n        self.use_natural_keys = options.pop(\"use_natural_keys\", False)\n\n        self.start_serialization()\n        self.first = True\n        for obj in queryset:\n            self.start_object(obj)\n            # Use the concrete parent class' _meta instead of the object's _meta\n            # This is to avoid local_fields problems for proxy models. Refs #17717.\n            concrete_model = obj._meta.concrete_model\n            for field in concrete_model._meta.local_fields:\n                if field.serialize:\n                    if field.rel is None:\n                        if self.selected_fields is None or field.attname in self.selected_fields:\n                            self.handle_field(obj, field)\n                    else:\n                        if self.selected_fields is None or field.attname[:-3] in self.selected_fields:\n                            self.handle_fk_field(obj, field)\n            for field in concrete_model._meta.many_to_many:\n                if field.serialize:\n                    if self.selected_fields is None or field.attname in self.selected_fields:\n                        self.handle_m2m_field(obj, field)\n            self.end_object(obj)\n            if self.first:\n                self.first = False\n        self.end_serialization()\n        return self.getvalue()\n\n    def start_serialization(self):\n        \"\"\"\n        Called when serializing of the queryset starts.\n        \"\"\"\n        raise NotImplementedError\n\n    def end_serialization(self):\n        \"\"\"\n        Called when serializing of the queryset ends.\n        \"\"\"\n        pass\n\n    def start_object(self, obj):\n        \"\"\"\n        Called when serializing of an object starts.\n        \"\"\"\n        raise NotImplementedError\n\n    def end_object(self, obj):\n        \"\"\"\n        Called when serializing of an object ends.\n        \"\"\"\n        pass\n\n    def handle_field(self, obj, field):\n        \"\"\"\n        Called to handle each individual (non-relational) field on an object.\n        \"\"\"\n        raise NotImplementedError\n\n    def handle_fk_field(self, obj, field):\n        \"\"\"\n        Called to handle a ForeignKey field.\n        \"\"\"\n        raise NotImplementedError\n\n    def handle_m2m_field(self, obj, field):\n        \"\"\"\n        Called to handle a ManyToManyField.\n        \"\"\"\n        raise NotImplementedError\n\n    def getvalue(self):\n        \"\"\"\n        Return the fully serialized queryset (or None if the output stream is\n        not seekable).\n        \"\"\"\n        if callable(getattr(self.stream, 'getvalue', None)):\n            return self.stream.getvalue()\n\nclass Deserializer(six.Iterator):\n    \"\"\"\n    Abstract base deserializer class.\n    \"\"\"\n\n    def __init__(self, stream_or_string, **options):\n        \"\"\"\n        Init this serializer given a stream or a string\n        \"\"\"\n        self.options = options\n        if isinstance(stream_or_string, six.string_types):\n            self.stream = six.StringIO(stream_or_string)\n        else:\n            self.stream = stream_or_string\n        # hack to make sure that the models have all been loaded before\n        # deserialization starts (otherwise subclass calls to get_model()\n        # and friends might fail...)\n        models.get_apps()\n\n    def __iter__(self):\n        return self\n\n    def __next__(self):\n        \"\"\"Iteration iterface -- return the next item in the stream\"\"\"\n        raise NotImplementedError\n\nclass DeserializedObject(object):\n    \"\"\"\n    A deserialized model.\n\n    Basically a container for holding the pre-saved deserialized data along\n    with the many-to-many data saved with the object.\n\n    Call ``save()`` to save the object (with the many-to-many data) to the\n    database; call ``save(save_m2m=False)`` to save just the object fields\n    (and not touch the many-to-many stuff.)\n    \"\"\"\n\n    def __init__(self, obj, m2m_data=None):\n        self.object = obj\n        self.m2m_data = m2m_data\n\n    def __repr__(self):\n        return \"<DeserializedObject: %s.%s(pk=%s)>\" % (\n            self.object._meta.app_label, self.object._meta.object_name, self.object.pk)\n\n    def save(self, save_m2m=True, using=None):\n        # Call save on the Model baseclass directly. This bypasses any\n        # model-defined save. The save is also forced to be raw.\n        # This ensures that the data that is deserialized is literally\n        # what came from the file, not post-processed by pre_save/save\n        # methods.\n        models.Model.save_base(self.object, using=using, raw=True)\n        if self.m2m_data and save_m2m:\n            for accessor_name, object_list in self.m2m_data.items():\n                setattr(self.object, accessor_name, object_list)\n\n        # prevent a second (possibly accidental) call to save() from saving\n        # the m2m data twice.\n        self.m2m_data = None\n"
  },
  {
    "path": "Django-1.5.1/django/core/serializers/json.py",
    "content": "\"\"\"\nSerialize data to/from JSON\n\"\"\"\n\n# Avoid shadowing the standard library json module\nfrom __future__ import absolute_import\n\nimport datetime\nimport decimal\nimport json\n\nfrom django.core.serializers.base import DeserializationError\nfrom django.core.serializers.python import Serializer as PythonSerializer\nfrom django.core.serializers.python import Deserializer as PythonDeserializer\nfrom django.utils import six\nfrom django.utils.timezone import is_aware\n\nclass Serializer(PythonSerializer):\n    \"\"\"\n    Convert a queryset to JSON.\n    \"\"\"\n    internal_use_only = False\n\n    def start_serialization(self):\n        if json.__version__.split('.') >= ['2', '1', '3']:\n            # Use JS strings to represent Python Decimal instances (ticket #16850)\n            self.options.update({'use_decimal': False})\n        self._current = None\n        self.json_kwargs = self.options.copy()\n        self.json_kwargs.pop('stream', None)\n        self.json_kwargs.pop('fields', None)\n        self.stream.write(\"[\")\n\n    def end_serialization(self):\n        if self.options.get(\"indent\"):\n            self.stream.write(\"\\n\")\n        self.stream.write(\"]\")\n        if self.options.get(\"indent\"):\n            self.stream.write(\"\\n\")\n\n    def end_object(self, obj):\n        # self._current has the field data\n        indent = self.options.get(\"indent\")\n        if not self.first:\n            self.stream.write(\",\")\n            if not indent:\n                self.stream.write(\" \")\n        if indent:\n            self.stream.write(\"\\n\")\n        json.dump(self.get_dump_object(obj), self.stream,\n                  cls=DjangoJSONEncoder, **self.json_kwargs)\n        self._current = None\n\n    def getvalue(self):\n        # Grand-parent super\n        return super(PythonSerializer, self).getvalue()\n\n\ndef Deserializer(stream_or_string, **options):\n    \"\"\"\n    Deserialize a stream or string of JSON data.\n    \"\"\"\n    if not isinstance(stream_or_string, (bytes, six.string_types)):\n        stream_or_string = stream_or_string.read()\n    if isinstance(stream_or_string, bytes):\n        stream_or_string = stream_or_string.decode('utf-8')\n    try:\n        objects = json.loads(stream_or_string)\n        for obj in PythonDeserializer(objects, **options):\n            yield obj\n    except GeneratorExit:\n        raise\n    except Exception as e:\n        # Map to deserializer error\n        raise DeserializationError(e)\n\n\nclass DjangoJSONEncoder(json.JSONEncoder):\n    \"\"\"\n    JSONEncoder subclass that knows how to encode date/time and decimal types.\n    \"\"\"\n    def default(self, o):\n        # See \"Date Time String Format\" in the ECMA-262 specification.\n        if isinstance(o, datetime.datetime):\n            r = o.isoformat()\n            if o.microsecond:\n                r = r[:23] + r[26:]\n            if r.endswith('+00:00'):\n                r = r[:-6] + 'Z'\n            return r\n        elif isinstance(o, datetime.date):\n            return o.isoformat()\n        elif isinstance(o, datetime.time):\n            if is_aware(o):\n                raise ValueError(\"JSON can't represent timezone-aware times.\")\n            r = o.isoformat()\n            if o.microsecond:\n                r = r[:12]\n            return r\n        elif isinstance(o, decimal.Decimal):\n            return str(o)\n        else:\n            return super(DjangoJSONEncoder, self).default(o)\n\n# Older, deprecated class name (for backwards compatibility purposes).\nDateTimeAwareJSONEncoder = DjangoJSONEncoder\n\n"
  },
  {
    "path": "Django-1.5.1/django/core/serializers/python.py",
    "content": "\"\"\"\nA Python \"serializer\". Doesn't do much serializing per se -- just converts to\nand from basic Python data types (lists, dicts, strings, etc.). Useful as a basis for\nother serializers.\n\"\"\"\nfrom __future__ import unicode_literals\n\nfrom django.conf import settings\nfrom django.core.serializers import base\nfrom django.db import models, DEFAULT_DB_ALIAS\nfrom django.utils.encoding import smart_text, is_protected_type\nfrom django.utils import six\n\n\nclass Serializer(base.Serializer):\n    \"\"\"\n    Serializes a QuerySet to basic Python objects.\n    \"\"\"\n\n    internal_use_only = True\n\n    def start_serialization(self):\n        self._current = None\n        self.objects = []\n\n    def end_serialization(self):\n        pass\n\n    def start_object(self, obj):\n        self._current = {}\n\n    def end_object(self, obj):\n        self.objects.append(self.get_dump_object(obj))\n        self._current = None\n\n    def get_dump_object(self, obj):\n        return {\n            \"pk\": smart_text(obj._get_pk_val(), strings_only=True),\n            \"model\": smart_text(obj._meta),\n            \"fields\": self._current\n        }\n\n    def handle_field(self, obj, field):\n        value = field._get_val_from_obj(obj)\n        # Protected types (i.e., primitives like None, numbers, dates,\n        # and Decimals) are passed through as is. All other values are\n        # converted to string first.\n        if is_protected_type(value):\n            self._current[field.name] = value\n        else:\n            self._current[field.name] = field.value_to_string(obj)\n\n    def handle_fk_field(self, obj, field):\n        if self.use_natural_keys and hasattr(field.rel.to, 'natural_key'):\n            related = getattr(obj, field.name)\n            if related:\n                value = related.natural_key()\n            else:\n                value = None\n        else:\n            value = getattr(obj, field.get_attname())\n        self._current[field.name] = value\n\n    def handle_m2m_field(self, obj, field):\n        if field.rel.through._meta.auto_created:\n            if self.use_natural_keys and hasattr(field.rel.to, 'natural_key'):\n                m2m_value = lambda value: value.natural_key()\n            else:\n                m2m_value = lambda value: smart_text(value._get_pk_val(), strings_only=True)\n            self._current[field.name] = [m2m_value(related)\n                               for related in getattr(obj, field.name).iterator()]\n\n    def getvalue(self):\n        return self.objects\n\n\ndef Deserializer(object_list, **options):\n    \"\"\"\n    Deserialize simple Python objects back into Django ORM instances.\n\n    It's expected that you pass the Python objects themselves (instead of a\n    stream or a string) to the constructor\n    \"\"\"\n    db = options.pop('using', DEFAULT_DB_ALIAS)\n    ignore = options.pop('ignorenonexistent', False)\n\n    models.get_apps()\n    for d in object_list:\n        # Look up the model and starting build a dict of data for it.\n        Model = _get_model(d[\"model\"])\n        data = {Model._meta.pk.attname: Model._meta.pk.to_python(d[\"pk\"])}\n        m2m_data = {}\n        model_fields = Model._meta.get_all_field_names()\n\n        # Handle each field\n        for (field_name, field_value) in six.iteritems(d[\"fields\"]):\n\n            if ignore and field_name not in model_fields:\n                # skip fields no longer on model\n                continue\n\n            if isinstance(field_value, str):\n                field_value = smart_text(field_value, options.get(\"encoding\", settings.DEFAULT_CHARSET), strings_only=True)\n\n            field = Model._meta.get_field(field_name)\n\n            # Handle M2M relations\n            if field.rel and isinstance(field.rel, models.ManyToManyRel):\n                if hasattr(field.rel.to._default_manager, 'get_by_natural_key'):\n                    def m2m_convert(value):\n                        if hasattr(value, '__iter__') and not isinstance(value, six.text_type):\n                            return field.rel.to._default_manager.db_manager(db).get_by_natural_key(*value).pk\n                        else:\n                            return smart_text(field.rel.to._meta.pk.to_python(value))\n                else:\n                    m2m_convert = lambda v: smart_text(field.rel.to._meta.pk.to_python(v))\n                m2m_data[field.name] = [m2m_convert(pk) for pk in field_value]\n\n            # Handle FK fields\n            elif field.rel and isinstance(field.rel, models.ManyToOneRel):\n                if field_value is not None:\n                    if hasattr(field.rel.to._default_manager, 'get_by_natural_key'):\n                        if hasattr(field_value, '__iter__') and not isinstance(field_value, six.text_type):\n                            obj = field.rel.to._default_manager.db_manager(db).get_by_natural_key(*field_value)\n                            value = getattr(obj, field.rel.field_name)\n                            # If this is a natural foreign key to an object that\n                            # has a FK/O2O as the foreign key, use the FK value\n                            if field.rel.to._meta.pk.rel:\n                                value = value.pk\n                        else:\n                            value = field.rel.to._meta.get_field(field.rel.field_name).to_python(field_value)\n                        data[field.attname] = value\n                    else:\n                        data[field.attname] = field.rel.to._meta.get_field(field.rel.field_name).to_python(field_value)\n                else:\n                    data[field.attname] = None\n\n            # Handle all other fields\n            else:\n                data[field.name] = field.to_python(field_value)\n\n        yield base.DeserializedObject(Model(**data), m2m_data)\n\ndef _get_model(model_identifier):\n    \"\"\"\n    Helper to look up a model from an \"app_label.module_name\" string.\n    \"\"\"\n    try:\n        Model = models.get_model(*model_identifier.split(\".\"))\n    except TypeError:\n        Model = None\n    if Model is None:\n        raise base.DeserializationError(\"Invalid model identifier: '%s'\" % model_identifier)\n    return Model\n"
  },
  {
    "path": "Django-1.5.1/django/core/serializers/pyyaml.py",
    "content": "\"\"\"\nYAML serializer.\n\nRequires PyYaml (http://pyyaml.org/), but that's checked for in __init__.\n\"\"\"\n\nimport decimal\nimport yaml\nfrom io import StringIO\n\nfrom django.db import models\nfrom django.core.serializers.base import DeserializationError\nfrom django.core.serializers.python import Serializer as PythonSerializer\nfrom django.core.serializers.python import Deserializer as PythonDeserializer\nfrom django.utils import six\n\n\nclass DjangoSafeDumper(yaml.SafeDumper):\n    def represent_decimal(self, data):\n        return self.represent_scalar('tag:yaml.org,2002:str', str(data))\n\nDjangoSafeDumper.add_representer(decimal.Decimal, DjangoSafeDumper.represent_decimal)\n\nclass Serializer(PythonSerializer):\n    \"\"\"\n    Convert a queryset to YAML.\n    \"\"\"\n\n    internal_use_only = False\n\n    def handle_field(self, obj, field):\n        # A nasty special case: base YAML doesn't support serialization of time\n        # types (as opposed to dates or datetimes, which it does support). Since\n        # we want to use the \"safe\" serializer for better interoperability, we\n        # need to do something with those pesky times. Converting 'em to strings\n        # isn't perfect, but it's better than a \"!!python/time\" type which would\n        # halt deserialization under any other language.\n        if isinstance(field, models.TimeField) and getattr(obj, field.name) is not None:\n            self._current[field.name] = str(getattr(obj, field.name))\n        else:\n            super(Serializer, self).handle_field(obj, field)\n\n    def end_serialization(self):\n        yaml.dump(self.objects, self.stream, Dumper=DjangoSafeDumper, **self.options)\n\n    def getvalue(self):\n        # Grand-parent super\n        return super(PythonSerializer, self).getvalue()\n\ndef Deserializer(stream_or_string, **options):\n    \"\"\"\n    Deserialize a stream or string of YAML data.\n    \"\"\"\n    if isinstance(stream_or_string, bytes):\n        stream_or_string = stream_or_string.decode('utf-8')\n    if isinstance(stream_or_string, six.string_types):\n        stream = StringIO(stream_or_string)\n    else:\n        stream = stream_or_string\n    try:\n        for obj in PythonDeserializer(yaml.safe_load(stream), **options):\n            yield obj\n    except GeneratorExit:\n        raise\n    except Exception as e:\n        # Map to deserializer error\n        raise DeserializationError(e)\n"
  },
  {
    "path": "Django-1.5.1/django/core/serializers/xml_serializer.py",
    "content": "\"\"\"\nXML serializer.\n\"\"\"\n\nfrom __future__ import unicode_literals\n\nfrom django.conf import settings\nfrom django.core.serializers import base\nfrom django.db import models, DEFAULT_DB_ALIAS\nfrom django.utils.xmlutils import SimplerXMLGenerator\nfrom django.utils.encoding import smart_text\nfrom xml.dom import pulldom\nfrom xml.sax import handler\nfrom xml.sax.expatreader import ExpatParser as _ExpatParser\n\nclass Serializer(base.Serializer):\n    \"\"\"\n    Serializes a QuerySet to XML.\n    \"\"\"\n\n    def indent(self, level):\n        if self.options.get('indent', None) is not None:\n            self.xml.ignorableWhitespace('\\n' + ' ' * self.options.get('indent', None) * level)\n\n    def start_serialization(self):\n        \"\"\"\n        Start serialization -- open the XML document and the root element.\n        \"\"\"\n        self.xml = SimplerXMLGenerator(self.stream, self.options.get(\"encoding\", settings.DEFAULT_CHARSET))\n        self.xml.startDocument()\n        self.xml.startElement(\"django-objects\", {\"version\" : \"1.0\"})\n\n    def end_serialization(self):\n        \"\"\"\n        End serialization -- end the document.\n        \"\"\"\n        self.indent(0)\n        self.xml.endElement(\"django-objects\")\n        self.xml.endDocument()\n\n    def start_object(self, obj):\n        \"\"\"\n        Called as each object is handled.\n        \"\"\"\n        if not hasattr(obj, \"_meta\"):\n            raise base.SerializationError(\"Non-model object (%s) encountered during serialization\" % type(obj))\n\n        self.indent(1)\n        obj_pk = obj._get_pk_val()\n        if obj_pk is None:\n            attrs = {\"model\": smart_text(obj._meta),}\n        else:\n            attrs = {\n                \"pk\": smart_text(obj._get_pk_val()),\n                \"model\": smart_text(obj._meta),\n            }\n\n        self.xml.startElement(\"object\", attrs)\n\n    def end_object(self, obj):\n        \"\"\"\n        Called after handling all fields for an object.\n        \"\"\"\n        self.indent(1)\n        self.xml.endElement(\"object\")\n\n    def handle_field(self, obj, field):\n        \"\"\"\n        Called to handle each field on an object (except for ForeignKeys and\n        ManyToManyFields)\n        \"\"\"\n        self.indent(2)\n        self.xml.startElement(\"field\", {\n            \"name\" : field.name,\n            \"type\" : field.get_internal_type()\n        })\n\n        # Get a \"string version\" of the object's data.\n        if getattr(obj, field.name) is not None:\n            self.xml.characters(field.value_to_string(obj))\n        else:\n            self.xml.addQuickElement(\"None\")\n\n        self.xml.endElement(\"field\")\n\n    def handle_fk_field(self, obj, field):\n        \"\"\"\n        Called to handle a ForeignKey (we need to treat them slightly\n        differently from regular fields).\n        \"\"\"\n        self._start_relational_field(field)\n        related_att = getattr(obj, field.get_attname())\n        if related_att is not None:\n            if self.use_natural_keys and hasattr(field.rel.to, 'natural_key'):\n                related = getattr(obj, field.name)\n                # If related object has a natural key, use it\n                related = related.natural_key()\n                # Iterable natural keys are rolled out as subelements\n                for key_value in related:\n                    self.xml.startElement(\"natural\", {})\n                    self.xml.characters(smart_text(key_value))\n                    self.xml.endElement(\"natural\")\n            else:\n                self.xml.characters(smart_text(related_att))\n        else:\n            self.xml.addQuickElement(\"None\")\n        self.xml.endElement(\"field\")\n\n    def handle_m2m_field(self, obj, field):\n        \"\"\"\n        Called to handle a ManyToManyField. Related objects are only\n        serialized as references to the object's PK (i.e. the related *data*\n        is not dumped, just the relation).\n        \"\"\"\n        if field.rel.through._meta.auto_created:\n            self._start_relational_field(field)\n            if self.use_natural_keys and hasattr(field.rel.to, 'natural_key'):\n                # If the objects in the m2m have a natural key, use it\n                def handle_m2m(value):\n                    natural = value.natural_key()\n                    # Iterable natural keys are rolled out as subelements\n                    self.xml.startElement(\"object\", {})\n                    for key_value in natural:\n                        self.xml.startElement(\"natural\", {})\n                        self.xml.characters(smart_text(key_value))\n                        self.xml.endElement(\"natural\")\n                    self.xml.endElement(\"object\")\n            else:\n                def handle_m2m(value):\n                    self.xml.addQuickElement(\"object\", attrs={\n                        'pk' : smart_text(value._get_pk_val())\n                    })\n            for relobj in getattr(obj, field.name).iterator():\n                handle_m2m(relobj)\n\n            self.xml.endElement(\"field\")\n\n    def _start_relational_field(self, field):\n        \"\"\"\n        Helper to output the <field> element for relational fields\n        \"\"\"\n        self.indent(2)\n        self.xml.startElement(\"field\", {\n            \"name\" : field.name,\n            \"rel\"  : field.rel.__class__.__name__,\n            \"to\"   : smart_text(field.rel.to._meta),\n        })\n\nclass Deserializer(base.Deserializer):\n    \"\"\"\n    Deserialize XML.\n    \"\"\"\n\n    def __init__(self, stream_or_string, **options):\n        super(Deserializer, self).__init__(stream_or_string, **options)\n        self.event_stream = pulldom.parse(self.stream, self._make_parser())\n        self.db = options.pop('using', DEFAULT_DB_ALIAS)\n\n    def _make_parser(self):\n        \"\"\"Create a hardened XML parser (no custom/external entities).\"\"\"\n        return DefusedExpatParser()\n\n    def __next__(self):\n        for event, node in self.event_stream:\n            if event == \"START_ELEMENT\" and node.nodeName == \"object\":\n                self.event_stream.expandNode(node)\n                return self._handle_object(node)\n        raise StopIteration\n\n    def _handle_object(self, node):\n        \"\"\"\n        Convert an <object> node to a DeserializedObject.\n        \"\"\"\n        # Look up the model using the model loading mechanism. If this fails,\n        # bail.\n        Model = self._get_model_from_node(node, \"model\")\n\n        # Start building a data dictionary from the object.\n        # If the node is missing the pk set it to None\n        if node.hasAttribute(\"pk\"):\n            pk = node.getAttribute(\"pk\")\n        else:\n            pk = None\n\n        data = {Model._meta.pk.attname : Model._meta.pk.to_python(pk)}\n\n        # Also start building a dict of m2m data (this is saved as\n        # {m2m_accessor_attribute : [list_of_related_objects]})\n        m2m_data = {}\n\n        # Deseralize each field.\n        for field_node in node.getElementsByTagName(\"field\"):\n            # If the field is missing the name attribute, bail (are you\n            # sensing a pattern here?)\n            field_name = field_node.getAttribute(\"name\")\n            if not field_name:\n                raise base.DeserializationError(\"<field> node is missing the 'name' attribute\")\n\n            # Get the field from the Model. This will raise a\n            # FieldDoesNotExist if, well, the field doesn't exist, which will\n            # be propagated correctly.\n            field = Model._meta.get_field(field_name)\n\n            # As is usually the case, relation fields get the special treatment.\n            if field.rel and isinstance(field.rel, models.ManyToManyRel):\n                m2m_data[field.name] = self._handle_m2m_field_node(field_node, field)\n            elif field.rel and isinstance(field.rel, models.ManyToOneRel):\n                data[field.attname] = self._handle_fk_field_node(field_node, field)\n            else:\n                if field_node.getElementsByTagName('None'):\n                    value = None\n                else:\n                    value = field.to_python(getInnerText(field_node).strip())\n                data[field.name] = value\n\n        # Return a DeserializedObject so that the m2m data has a place to live.\n        return base.DeserializedObject(Model(**data), m2m_data)\n\n    def _handle_fk_field_node(self, node, field):\n        \"\"\"\n        Handle a <field> node for a ForeignKey\n        \"\"\"\n        # Check if there is a child node named 'None', returning None if so.\n        if node.getElementsByTagName('None'):\n            return None\n        else:\n            if hasattr(field.rel.to._default_manager, 'get_by_natural_key'):\n                keys = node.getElementsByTagName('natural')\n                if keys:\n                    # If there are 'natural' subelements, it must be a natural key\n                    field_value = [getInnerText(k).strip() for k in keys]\n                    obj = field.rel.to._default_manager.db_manager(self.db).get_by_natural_key(*field_value)\n                    obj_pk = getattr(obj, field.rel.field_name)\n                    # If this is a natural foreign key to an object that\n                    # has a FK/O2O as the foreign key, use the FK value\n                    if field.rel.to._meta.pk.rel:\n                        obj_pk = obj_pk.pk\n                else:\n                    # Otherwise, treat like a normal PK\n                    field_value = getInnerText(node).strip()\n                    obj_pk = field.rel.to._meta.get_field(field.rel.field_name).to_python(field_value)\n                return obj_pk\n            else:\n                field_value = getInnerText(node).strip()\n                return field.rel.to._meta.get_field(field.rel.field_name).to_python(field_value)\n\n    def _handle_m2m_field_node(self, node, field):\n        \"\"\"\n        Handle a <field> node for a ManyToManyField.\n        \"\"\"\n        if hasattr(field.rel.to._default_manager, 'get_by_natural_key'):\n            def m2m_convert(n):\n                keys = n.getElementsByTagName('natural')\n                if keys:\n                    # If there are 'natural' subelements, it must be a natural key\n                    field_value = [getInnerText(k).strip() for k in keys]\n                    obj_pk = field.rel.to._default_manager.db_manager(self.db).get_by_natural_key(*field_value).pk\n                else:\n                    # Otherwise, treat like a normal PK value.\n                    obj_pk = field.rel.to._meta.pk.to_python(n.getAttribute('pk'))\n                return obj_pk\n        else:\n            m2m_convert = lambda n: field.rel.to._meta.pk.to_python(n.getAttribute('pk'))\n        return [m2m_convert(c) for c in node.getElementsByTagName(\"object\")]\n\n    def _get_model_from_node(self, node, attr):\n        \"\"\"\n        Helper to look up a model from a <object model=...> or a <field\n        rel=... to=...> node.\n        \"\"\"\n        model_identifier = node.getAttribute(attr)\n        if not model_identifier:\n            raise base.DeserializationError(\n                \"<%s> node is missing the required '%s' attribute\" \\\n                    % (node.nodeName, attr))\n        try:\n            Model = models.get_model(*model_identifier.split(\".\"))\n        except TypeError:\n            Model = None\n        if Model is None:\n            raise base.DeserializationError(\n                \"<%s> node has invalid model identifier: '%s'\" % \\\n                    (node.nodeName, model_identifier))\n        return Model\n\n\ndef getInnerText(node):\n    \"\"\"\n    Get all the inner text of a DOM node (recursively).\n    \"\"\"\n    # inspired by http://mail.python.org/pipermail/xml-sig/2005-March/011022.html\n    inner_text = []\n    for child in node.childNodes:\n        if child.nodeType == child.TEXT_NODE or child.nodeType == child.CDATA_SECTION_NODE:\n            inner_text.append(child.data)\n        elif child.nodeType == child.ELEMENT_NODE:\n            inner_text.extend(getInnerText(child))\n        else:\n           pass\n    return \"\".join(inner_text)\n\n\n# Below code based on Christian Heimes' defusedxml\n\n\nclass DefusedExpatParser(_ExpatParser):\n    \"\"\"\n    An expat parser hardened against XML bomb attacks.\n\n    Forbids DTDs, external entity references\n\n    \"\"\"\n    def __init__(self, *args, **kwargs):\n        _ExpatParser.__init__(self, *args, **kwargs)\n        self.setFeature(handler.feature_external_ges, False)\n        self.setFeature(handler.feature_external_pes, False)\n\n    def start_doctype_decl(self, name, sysid, pubid, has_internal_subset):\n        raise DTDForbidden(name, sysid, pubid)\n\n    def entity_decl(self, name, is_parameter_entity, value, base,\n                    sysid, pubid, notation_name):\n        raise EntitiesForbidden(name, value, base, sysid, pubid, notation_name)\n\n    def unparsed_entity_decl(self, name, base, sysid, pubid, notation_name):\n        # expat 1.2\n        raise EntitiesForbidden(name, None, base, sysid, pubid, notation_name)\n\n    def external_entity_ref_handler(self, context, base, sysid, pubid):\n        raise ExternalReferenceForbidden(context, base, sysid, pubid)\n\n    def reset(self):\n        _ExpatParser.reset(self)\n        parser = self._parser\n        parser.StartDoctypeDeclHandler = self.start_doctype_decl\n        parser.EntityDeclHandler = self.entity_decl\n        parser.UnparsedEntityDeclHandler = self.unparsed_entity_decl\n        parser.ExternalEntityRefHandler = self.external_entity_ref_handler\n\n\nclass DefusedXmlException(ValueError):\n    \"\"\"Base exception.\"\"\"\n    def __repr__(self):\n        return str(self)\n\n\nclass DTDForbidden(DefusedXmlException):\n    \"\"\"Document type definition is forbidden.\"\"\"\n    def __init__(self, name, sysid, pubid):\n        super(DTDForbidden, self).__init__()\n        self.name = name\n        self.sysid = sysid\n        self.pubid = pubid\n\n    def __str__(self):\n        tpl = \"DTDForbidden(name='{}', system_id={!r}, public_id={!r})\"\n        return tpl.format(self.name, self.sysid, self.pubid)\n\n\nclass EntitiesForbidden(DefusedXmlException):\n    \"\"\"Entity definition is forbidden.\"\"\"\n    def __init__(self, name, value, base, sysid, pubid, notation_name):\n        super(EntitiesForbidden, self).__init__()\n        self.name = name\n        self.value = value\n        self.base = base\n        self.sysid = sysid\n        self.pubid = pubid\n        self.notation_name = notation_name\n\n    def __str__(self):\n        tpl = \"EntitiesForbidden(name='{}', system_id={!r}, public_id={!r})\"\n        return tpl.format(self.name, self.sysid, self.pubid)\n\n\nclass ExternalReferenceForbidden(DefusedXmlException):\n    \"\"\"Resolving an external reference is forbidden.\"\"\"\n    def __init__(self, context, base, sysid, pubid):\n        super(ExternalReferenceForbidden, self).__init__()\n        self.context = context\n        self.base = base\n        self.sysid = sysid\n        self.pubid = pubid\n\n    def __str__(self):\n        tpl = \"ExternalReferenceForbidden(system_id='{}', public_id={})\"\n        return tpl.format(self.sysid, self.pubid)\n"
  },
  {
    "path": "Django-1.5.1/django/core/servers/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/core/servers/basehttp.py",
    "content": "\"\"\"\nHTTP server that implements the Python WSGI protocol (PEP 333, rev 1.21).\n\n实现 WSGI 的接口\n\nBased on wsgiref.simple_server which is part of the standard library since 2.5.\n\nThis is a simple server for use in testing or debugging Django apps. It hasn't\nbeen reviewed for security issues. DON'T USE IT FOR PRODUCTION USE!\n\n内部服务器专用, 不能用于产品级的应用\n\"\"\"\n\nfrom __future__ import unicode_literals\n\n\nimport os\nimport socket\nimport sys\nimport traceback\n\ntry:\n    from urllib.parse import urljoin\nexcept ImportError:     # Python 2\n    from urlparse import urljoin\n\nfrom django.utils.six.moves import socketserver\nfrom wsgiref import simple_server\nfrom wsgiref.util import FileWrapper   # for backwards compatibility\n\nimport django\nfrom django.core.exceptions import ImproperlyConfigured\nfrom django.core.management.color import color_style\nfrom django.core.wsgi import get_wsgi_application\nfrom django.utils.importlib import import_module\n\n__all__ = ['WSGIServer', 'WSGIRequestHandler']\n\n\n\ndef get_internal_wsgi_application():\n    \"\"\"\n    会在项目的 settings 中指定 WSGI_APPLICATION.\n\n    ...\n    # Python dotted path to the WSGI application used by Django's runserver.\n    WSGI_APPLICATION = 'projectname.wsgi.application'\n    wsgi.py 中会创建 application 对象\n    ...\n\n    Loads and returns the WSGI application as configured by the user in\n    ``settings.WSGI_APPLICATION``. With the default ``startproject`` layout,\n    this will be the ``application`` object in ``projectname/wsgi.py``.\n\n    This function, and the ``WSGI_APPLICATION`` setting itself, are only useful\n    for Django's internal servers (runserver, runfcgi); external WSGI servers\n    should just be configured to point to the correct application object\n    directly.\n\n    If settings.WSGI_APPLICATION is not set (is ``None``), we just return\n    whatever ``django.core.wsgi.get_wsgi_application`` returns.\n\n    \"\"\"\n    from django.conf import settings\n    app_path = getattr(settings, '')\n\n    if app_path is None:\n        return get_wsgi_application() #可能在 settings　中会丢失 WSGI_APPLICATION, 那么从 django 中加载默认\n\n    module_name, attr = app_path.rsplit('.', 1)\n\n    try:\n        mod = import_module(module_name) #尝试导入\n    except ImportError as e:\n        raise ImproperlyConfigured(\n            \"WSGI application '%s' could not be loaded; \"\n            \"could not import module '%s': %s\" % (app_path, module_name, e))\n\n    try:\n        app = getattr(mod, attr) # application = get_wsgi_application() in wsgi.py\n\n    except AttributeError as e:\n        raise ImproperlyConfigured(\n            \"WSGI application '%s' could not be loaded; \"\n            \"can't find '%s' in module '%s': %s\"\n            % (app_path, attr, module_name, e))\n\n    return app\n\n\nclass WSGIServerException(Exception):\n    pass\n\n\nclass ServerHandler(simple_server.ServerHandler, object):\n    error_status = str(\"500 INTERNAL SERVER ERROR\")\n\n    def write(self, data):\n        \"\"\"'write()' callable as specified by PEP 3333\"\"\"\n\n        assert isinstance(data, bytes), \"write() argument must be bytestring\"\n\n        if not self.status: 必须有 status\n            raise AssertionError(\"write() before start_response()\")\n\n        elif not self.headers_sent: #先发送 header\n            # Before the first output, send the stored headers\n            self.bytes_sent = len(data)    # make sure we know content-length\n            self.send_headers()\n        else:\n            self.bytes_sent += len(data)\n\n        # XXX check Content-Length and truncate if too many bytes written? 是否需要分段发送过大的数据?\n\n        # If data is too large, socket will choke, 窒息死掉 so write chunks no larger\n        # than 32MB at a time.\n\n        分片发送\n        length = len(data)\n        if length > 33554432:\n            offset = 0\n            while offset < length:\n                chunk_size = min(33554432, length)\n                self._write(data[offset:offset+chunk_size])\n                self._flush()\n                offset += chunk_size\n        else:\n            self._write(data)\n            self._flush()\n\n    def error_output(self, environ, start_response):\n        super(ServerHandler, self).error_output(environ, start_response)\n        return ['\\n'.join(traceback.format_exception(*sys.exc_info()))]\n\n    # Backport of http://hg.python.org/cpython/rev/d5af1b235dab. See #16241.\n    # This can be removed when support for Python <= 2.7.3 is deprecated.\n    def finish_response(self):\n        try:\n            if not self.result_is_file() or not self.sendfile():\n                for data in self.result:\n                    self.write(data)\n                self.finish_content()\n        finally:\n            self.close()\n\n\nclass WSGIServer(simple_server.WSGIServer, object):\n    \"\"\"BaseHTTPServer that implements the Python WSGI protocol\"\"\" 实现 WSGI\n\n    def __init__(self, *args, **kwargs):\n        if kwargs.pop('ipv6', False):\n            self.address_family = socket.AF_INET6\n        super(WSGIServer, self).__init__(*args, **kwargs)\n\n    def server_bind(self):\n        \"\"\"Override server_bind to store the server name.\"\"\"\n        try:\n            super(WSGIServer, self).server_bind()\n        except Exception as e:\n            raise WSGIServerException(e)\n        self.setup_environ()\n\n\nclass WSGIRequestHandler(simple_server.WSGIRequestHandler, object):\n\n    def __init__(self, *args, **kwargs):\n        from django.conf import settings\n        self.admin_static_prefix = urljoin(settings.STATIC_URL, 'admin/')\n        # We set self.path to avoid crashes in log_message() on unsupported\n        # requests (like \"OPTIONS\").\n        self.path = ''\n        self.style = color_style()\n        super(WSGIRequestHandler, self).__init__(*args, **kwargs)\n\n    def address_string(self):\n        # Short-circuit parent method to not call socket.getfqdn\n        return self.client_address[0]\n\n    def log_message(self, format, *args):\n        # Don't bother logging requests for admin images or the favicon.\n        if (self.path.startswith(self.admin_static_prefix)\n                or self.path == '/favicon.ico'):\n            return\n\n        msg = \"[%s] %s\\n\" % (self.log_date_time_string(), format % args)\n\n        # Utilize terminal colors, if available\n        if args[1][0] == '2':\n            # Put 2XX first, since it should be the common case\n            msg = self.style.HTTP_SUCCESS(msg)\n        elif args[1][0] == '1':\n            msg = self.style.HTTP_INFO(msg)\n        elif args[1] == '304':\n            msg = self.style.HTTP_NOT_MODIFIED(msg)\n        elif args[1][0] == '3':\n            msg = self.style.HTTP_REDIRECT(msg)\n        elif args[1] == '404':\n            msg = self.style.HTTP_NOT_FOUND(msg)\n        elif args[1][0] == '4':\n            msg = self.style.HTTP_BAD_REQUEST(msg)\n        else:\n            # Any 5XX, or any other response\n            msg = self.style.HTTP_SERVER_ERROR(msg)\n\n        sys.stderr.write(msg)\n\n\ndef run(addr, port, wsgi_handler, ipv6=False, threading=False):\n    server_address = (addr, port)\n\n    if threading:\n        httpd_cls = type(str('WSGIServer'), (socketserver.ThreadingMixIn, WSGIServer), {})\n    else:\n        httpd_cls = WSGIServer\n\n    httpd = httpd_cls(server_address, WSGIRequestHandler, ipv6=ipv6)\n    httpd.set_app(wsgi_handler)\n    httpd.serve_forever() 永久运行\n"
  },
  {
    "path": "Django-1.5.1/django/core/servers/fastcgi.py",
    "content": "\"\"\"\nFastCGI (or SCGI, or AJP1.3 ...) server that implements the WSGI protocol.\n\nUses the flup python package: http://www.saddi.com/software/flup/\n\nThis is a adaptation of the flup package to add FastCGI server support\nto run Django apps from Web servers that support the FastCGI protocol.\nThis module can be run standalone or from the django-admin / manage.py\nscripts using the \"runfcgi\" directive.\n\nRun with the extra option \"help\" for a list of additional options you can\npass to this server.\n\"\"\"\n\nimport os\nimport sys\nfrom django.utils import importlib\n\n__version__ = \"0.1\"\n__all__ = [\"runfastcgi\"]\n\nFASTCGI_OPTIONS = {\n    'protocol': 'fcgi',\n    'host': None,\n    'port': None,\n    'socket': None,\n    'method': 'fork',\n    'daemonize': None,\n    'workdir': '/',\n    'pidfile': None,\n    'maxspare': 5,\n    'minspare': 2,\n    'maxchildren': 50,\n    'maxrequests': 0,\n    'debug': None,\n    'outlog': None,\n    'errlog': None,\n    'umask': None,\n}\n\nFASTCGI_HELP = r\"\"\"\n  Run this project as a fastcgi (or some other protocol supported\n  by flup) application. To do this, the flup package from\n  http://www.saddi.com/software/flup/ is required.\n\n   runfcgi [options] [fcgi settings]\n\nOptional Fcgi settings: (setting=value)\n  protocol=PROTOCOL    fcgi, scgi, ajp, ... (default %(protocol)s)\n  host=HOSTNAME        hostname to listen on.\n  port=PORTNUM         port to listen on.\n  socket=FILE          UNIX socket to listen on.\n  method=IMPL          prefork or threaded (default %(method)s).\n  maxrequests=NUMBER   number of requests a child handles before it is\n                       killed and a new child is forked (0 = no limit).\n  maxspare=NUMBER      max number of spare processes / threads (default %(maxspare)s).\n  minspare=NUMBER      min number of spare processes / threads (default %(minspare)s).\n  maxchildren=NUMBER   hard limit number of processes / threads (default %(maxchildren)s).\n  daemonize=BOOL       whether to detach from terminal.\n  pidfile=FILE         write the spawned process-id to this file.\n  workdir=DIRECTORY    change to this directory when daemonizing (default %(workdir)s).\n  debug=BOOL           set to true to enable flup tracebacks.\n  outlog=FILE          write stdout to this file.\n  errlog=FILE          write stderr to this file.\n  umask=UMASK          umask to use when daemonizing, in octal notation (default 022).\n\nExamples:\n  Run a \"standard\" fastcgi process on a file-descriptor\n  (for Web servers which spawn your processes for you)\n    $ manage.py runfcgi method=threaded\n\n  Run a scgi server on a TCP host/port\n    $ manage.py runfcgi protocol=scgi method=prefork host=127.0.0.1 port=8025\n\n  Run a fastcgi server on a UNIX domain socket (posix platforms only)\n    $ manage.py runfcgi method=prefork socket=/tmp/fcgi.sock\n\n  Run a fastCGI as a daemon and write the spawned PID in a file\n    $ manage.py runfcgi socket=/tmp/fcgi.sock method=prefork \\\n        daemonize=true pidfile=/var/run/django-fcgi.pid\n\n\"\"\" % FASTCGI_OPTIONS\n\ndef fastcgi_help(message=None):\n    print(FASTCGI_HELP)\n    if message:\n        print(message)\n    return False\n\ndef runfastcgi(argset=[], **kwargs):\n    options = FASTCGI_OPTIONS.copy()\n    options.update(kwargs)\n    for x in argset:\n        if \"=\" in x:\n            k, v = x.split('=', 1)\n        else:\n            k, v = x, True\n        options[k.lower()] = v\n\n    if \"help\" in options:\n        return fastcgi_help()\n\n    try:\n        import flup\n    except ImportError as e:\n        sys.stderr.write(\"ERROR: %s\\n\" % e)\n        sys.stderr.write(\"  Unable to load the flup package.  In order to run django\\n\")\n        sys.stderr.write(\"  as a FastCGI application, you will need to get flup from\\n\")\n        sys.stderr.write(\"  http://www.saddi.com/software/flup/   If you've already\\n\")\n        sys.stderr.write(\"  installed flup, then make sure you have it in your PYTHONPATH.\\n\")\n        return False\n\n    flup_module = 'server.' + options['protocol']\n\n    if options['method'] in ('prefork', 'fork'):\n        wsgi_opts = {\n            'maxSpare': int(options[\"maxspare\"]),\n            'minSpare': int(options[\"minspare\"]),\n            'maxChildren': int(options[\"maxchildren\"]),\n            'maxRequests': int(options[\"maxrequests\"]),\n        }\n        flup_module += '_fork'\n    elif options['method'] in ('thread', 'threaded'):\n        wsgi_opts = {\n            'maxSpare': int(options[\"maxspare\"]),\n            'minSpare': int(options[\"minspare\"]),\n            'maxThreads': int(options[\"maxchildren\"]),\n        }\n    else:\n        return fastcgi_help(\"ERROR: Implementation must be one of prefork or \"\n                            \"thread.\")\n\n    wsgi_opts['debug'] = options['debug'] is not None\n\n    try:\n        module = importlib.import_module('.%s' % flup_module, 'flup')\n        WSGIServer = module.WSGIServer\n    except Exception:\n        print(\"Can't import flup.\" + flup_module)\n        return False\n\n    # Prep up and go\n    from django.core.servers.basehttp import get_internal_wsgi_application\n\n    if options[\"host\"] and options[\"port\"] and not options[\"socket\"]:\n        wsgi_opts['bindAddress'] = (options[\"host\"], int(options[\"port\"]))\n    elif options[\"socket\"] and not options[\"host\"] and not options[\"port\"]:\n        wsgi_opts['bindAddress'] = options[\"socket\"]\n    elif not options[\"socket\"] and not options[\"host\"] and not options[\"port\"]:\n        wsgi_opts['bindAddress'] = None\n    else:\n        return fastcgi_help(\"Invalid combination of host, port, socket.\")\n\n    if options[\"daemonize\"] is None:\n        # Default to daemonizing if we're running on a socket/named pipe.\n        daemonize = (wsgi_opts['bindAddress'] is not None)\n    else:\n        if options[\"daemonize\"].lower() in ('true', 'yes', 't'):\n            daemonize = True\n        elif options[\"daemonize\"].lower() in ('false', 'no', 'f'):\n            daemonize = False\n        else:\n            return fastcgi_help(\"ERROR: Invalid option for daemonize \"\n                                \"parameter.\")\n\n    daemon_kwargs = {}\n    if options['outlog']:\n        daemon_kwargs['out_log'] = options['outlog']\n    if options['errlog']:\n        daemon_kwargs['err_log'] = options['errlog']\n    if options['umask']:\n        daemon_kwargs['umask'] = int(options['umask'], 8)\n\n    if daemonize:\n        from django.utils.daemonize import become_daemon\n        become_daemon(our_home_dir=options[\"workdir\"], **daemon_kwargs)\n\n    if options[\"pidfile\"]:\n        with open(options[\"pidfile\"], \"w\") as fp:\n            fp.write(\"%d\\n\" % os.getpid())\n\n    WSGIServer(get_internal_wsgi_application(), **wsgi_opts).run()\n\nif __name__ == '__main__':\n    runfastcgi(sys.argv[1:])\n"
  },
  {
    "path": "Django-1.5.1/django/core/signals.py",
    "content": "from django.dispatch import Signal\n\nrequest_started = Signal()\nrequest_finished = Signal()\ngot_request_exception = Signal(providing_args=[\"request\"])\n"
  },
  {
    "path": "Django-1.5.1/django/core/signing.py",
    "content": "\"\"\"\nFunctions for creating and restoring url-safe signed JSON objects.\n\nThe format used looks like this:\n\n>>> signing.dumps(\"hello\")\n'ImhlbGxvIg:1QaUZC:YIye-ze3TTx7gtSv422nZA4sgmk'\n\nThere are two components here, separated by a ':'. The first component is a\nURLsafe base64 encoded JSON of the object passed to dumps(). The second\ncomponent is a base64 encoded hmac/SHA1 hash of \"$first_component:$secret\"\n\nsigning.loads(s) checks the signature and returns the deserialised object.\nIf the signature fails, a BadSignature exception is raised.\n\n>>> signing.loads(\"ImhlbGxvIg:1QaUZC:YIye-ze3TTx7gtSv422nZA4sgmk\")\nu'hello'\n>>> signing.loads(\"ImhlbGxvIg:1QaUZC:YIye-ze3TTx7gtSv422nZA4sgmk-modified\")\n...\nBadSignature: Signature failed: ImhlbGxvIg:1QaUZC:YIye-ze3TTx7gtSv422nZA4sgmk-modified\n\nYou can optionally compress the JSON prior to base64 encoding it to save\nspace, using the compress=True argument. This checks if compression actually\nhelps and only applies compression if the result is a shorter string:\n\n>>> signing.dumps(range(1, 20), compress=True)\n'.eJwFwcERACAIwLCF-rCiILN47r-GyZVJsNgkxaFxoDgxcOHGxMKD_T7vhAml:1QaUaL:BA0thEZrp4FQVXIXuOvYJtLJSrQ'\n\nThe fact that the string is compressed is signalled by the prefixed '.' at the\nstart of the base64 JSON.\n\nThere are 65 url-safe characters: the 64 used by url-safe base64 and the ':'.\nThese functions make use of all of them.\n\"\"\"\n\nfrom __future__ import unicode_literals\n\nimport base64\nimport json\nimport time\nimport zlib\n\nfrom django.conf import settings\nfrom django.core.exceptions import ImproperlyConfigured\nfrom django.utils import baseconv\nfrom django.utils.crypto import constant_time_compare, salted_hmac\nfrom django.utils.encoding import force_bytes, force_str, force_text\nfrom django.utils.importlib import import_module\n\n\nclass BadSignature(Exception):\n    \"\"\"\n    Signature does not match\n    \"\"\"\n    pass\n\n\nclass SignatureExpired(BadSignature):\n    \"\"\"\n    Signature timestamp is older than required max_age\n    \"\"\"\n    pass\n\n\ndef b64_encode(s):\n    return base64.urlsafe_b64encode(s).strip(b'=')\n\n\ndef b64_decode(s):\n    pad = b'=' * (-len(s) % 4)\n    return base64.urlsafe_b64decode(s + pad)\n\n\ndef base64_hmac(salt, value, key):\n    return b64_encode(salted_hmac(salt, value, key).digest())\n\n\ndef get_cookie_signer(salt='django.core.signing.get_cookie_signer'):\n    modpath = settings.SIGNING_BACKEND\n    module, attr = modpath.rsplit('.', 1)\n    try:\n        mod = import_module(module)\n    except ImportError as e:\n        raise ImproperlyConfigured(\n            'Error importing cookie signer %s: \"%s\"' % (modpath, e))\n    try:\n        Signer = getattr(mod, attr)\n    except AttributeError as e:\n        raise ImproperlyConfigured(\n            'Error importing cookie signer %s: \"%s\"' % (modpath, e))\n    return Signer('django.http.cookies' + settings.SECRET_KEY, salt=salt)\n\n\nclass JSONSerializer(object):\n    \"\"\"\n    Simple wrapper around json to be used in signing.dumps and\n    signing.loads.\n    \"\"\"\n    def dumps(self, obj):\n        return json.dumps(obj, separators=(',', ':')).encode('latin-1')\n\n    def loads(self, data):\n        return json.loads(data.decode('latin-1'))\n\n\ndef dumps(obj, key=None, salt='django.core.signing', serializer=JSONSerializer, compress=False):\n    \"\"\"\n    Returns URL-safe, sha1 signed base64 compressed JSON string. If key is\n    None, settings.SECRET_KEY is used instead.\n\n    If compress is True (not the default) checks if compressing using zlib can\n    save some space. Prepends a '.' to signify compression. This is included\n    in the signature, to protect against zip bombs.\n\n    Salt can be used to namespace the hash, so that a signed string is\n    only valid for a given namespace. Leaving this at the default\n    value or re-using a salt value across different parts of your\n    application without good cause is a security risk.\n\n    The serializer is expected to return a bytestring.\n    \"\"\"\n    data = serializer().dumps(obj)\n\n    # Flag for if it's been compressed or not\n    is_compressed = False\n\n    if compress:\n        # Avoid zlib dependency unless compress is being used\n        compressed = zlib.compress(data)\n        if len(compressed) < (len(data) - 1):\n            data = compressed\n            is_compressed = True\n    base64d = b64_encode(data)\n    if is_compressed:\n        base64d = b'.' + base64d\n    return TimestampSigner(key, salt=salt).sign(base64d)\n\n\ndef loads(s, key=None, salt='django.core.signing', serializer=JSONSerializer, max_age=None):\n    \"\"\"\n    Reverse of dumps(), raises BadSignature if signature fails.\n\n    The serializer is expected to accept a bytestring.\n    \"\"\"\n    # TimestampSigner.unsign always returns unicode but base64 and zlib\n    # compression operate on bytes.\n    base64d = force_bytes(TimestampSigner(key, salt=salt).unsign(s, max_age=max_age))\n    decompress = False\n    if base64d[:1] == b'.':\n        # It's compressed; uncompress it first\n        base64d = base64d[1:]\n        decompress = True\n    data = b64_decode(base64d)\n    if decompress:\n        data = zlib.decompress(data)\n    return serializer().loads(data)\n\n\nclass Signer(object):\n\n    def __init__(self, key=None, sep=':', salt=None):\n        # Use of native strings in all versions of Python\n        self.sep = str(sep)\n        self.key = str(key or settings.SECRET_KEY)\n        self.salt = str(salt or\n            '%s.%s' % (self.__class__.__module__, self.__class__.__name__))\n\n    def signature(self, value):\n        signature = base64_hmac(self.salt + 'signer', value, self.key)\n        # Convert the signature from bytes to str only on Python 3\n        return force_str(signature)\n\n    def sign(self, value):\n        value = force_str(value)\n        return str('%s%s%s') % (value, self.sep, self.signature(value))\n\n    def unsign(self, signed_value):\n        signed_value = force_str(signed_value)\n        if not self.sep in signed_value:\n            raise BadSignature('No \"%s\" found in value' % self.sep)\n        value, sig = signed_value.rsplit(self.sep, 1)\n        if constant_time_compare(sig, self.signature(value)):\n            return force_text(value)\n        raise BadSignature('Signature \"%s\" does not match' % sig)\n\n\nclass TimestampSigner(Signer):\n\n    def timestamp(self):\n        return baseconv.base62.encode(int(time.time()))\n\n    def sign(self, value):\n        value = force_str(value)\n        value = str('%s%s%s') % (value, self.sep, self.timestamp())\n        return super(TimestampSigner, self).sign(value)\n\n    def unsign(self, value, max_age=None):\n        result =  super(TimestampSigner, self).unsign(value)\n        value, timestamp = result.rsplit(self.sep, 1)\n        timestamp = baseconv.base62.decode(timestamp)\n        if max_age is not None:\n            # Check timestamp is not older than max_age\n            age = time.time() - timestamp\n            if age > max_age:\n                raise SignatureExpired(\n                    'Signature age %s > %s seconds' % (age, max_age))\n        return value\n"
  },
  {
    "path": "Django-1.5.1/django/core/urlresolvers.py",
    "content": "\"\"\"\nThis module converts requested URLs to callback view functions.\n\nRegexURLResolver is the main class here. Its resolve() method takes a URL (as\na string) and returns a tuple in this format:\n\n    (view_function, function_args, function_kwargs)\n\"\"\"\nfrom __future__ import unicode_literals\n\nimport re\nfrom threading import local\n\nfrom django.http import Http404\nfrom django.core.exceptions import ImproperlyConfigured, ViewDoesNotExist\nfrom django.utils.datastructures import MultiValueDict\nfrom django.utils.encoding import force_str, force_text, iri_to_uri\nfrom django.utils.functional import memoize, lazy\nfrom django.utils.http import urlquote\nfrom django.utils.importlib import import_module\nfrom django.utils.module_loading import module_has_submodule\nfrom django.utils.regex_helper import normalize\nfrom django.utils import six\nfrom django.utils.translation import get_language\n\n_resolver_cache = {} # Maps URLconf modules to RegexURLResolver instances. URLconf RegexURLResolver映射\n\n_ns_resolver_cache = {} # Maps namespaces to RegexURLResolver instances.   namespaces RegexURLResolver 映射\n\n_callable_cache = {} # Maps view and url pattern names to their view functions. view url pattern view functions 映射\n\n# SCRIPT_NAME prefixes for each thread are stored here. If there's no entry for\n# the current thread (which is the only one we ever access), it is assumed to\n# be empty.\n_prefixes = local() # 该线程全局变量\n\n# Overridden URLconfs for each thread are stored here.\n_urlconfs = local() # 该线程全局变量\n\n# 处理器匹配结果类, 当匹配成功的时候会实例化\nclass ResolverMatch(object):\n    def __init__(self, func, args, kwargs, url_name=None, app_name=None, namespaces=None):\n        self.func = func\n        self.args = args\n        self.kwargs = kwargs\n        self.app_name = app_name\n\n        if namespaces:\n            self.namespaces = [x for x in namespaces if x]\n        else:\n            self.namespaces = []\n\n        if not url_name:\n            if not hasattr(func, '__name__'):\n                # An instance of a callable class\n                url_name = '.'.join([func.__class__.__module__, func.__class__.__name__])\n            else:\n                # A function\n                url_name = '.'.join([func.__module__, func.__name__])\n\n        self.url_name = url_name\n\n    @property\n    def namespace(self):\n        return ':'.join(self.namespaces)\n\n    @property\n    def view_name(self):\n        return ':'.join([ x for x in [ self.namespace, self.url_name ]  if x ])\n\n    def __getitem__(self, index):\n        # (self.func, self.args, self.kwargs) 012\n        return (self.func, self.args, self.kwargs)[index]\n\n    def __repr__(self):\n        return \"ResolverMatch(func=%s, args=%s, kwargs=%s, url_name='%s', app_name='%s', namespace='%s')\" % (\n            self.func, self.args, self.kwargs, self.url_name, self.app_name, self.namespace)\n\nclass Resolver404(Http404):\n    pass\n\nclass NoReverseMatch(Exception):\n    # Don't make this raise an error when used in a template.\n    silent_variable_failure = True\n\ndef get_callable(lookup_view, can_fail=False):\n    \"\"\"\n    将函数的字符串版本转换成一个可调用的函数, 主要是从各个 app 中搜索相关的 view\n\n    Convert a string version of a function name to the callable object.\n\n    If the lookup_view is not an import path, it is assumed to be a URL pattern\n    label and the original string is returned.\n\n    If can_fail is True, lookup_view might be a URL pattern label, so errors\n    during the import fail and the string is returned.\n    \"\"\"\n    if not callable(lookup_view):\n        # def get_mod_func(callback):\n        # # Converts 'django.views.news.stories.story_detail' to\n        # # ['django.views.news.stories', 'story_detail']\n        mod_name, func_name = get_mod_func(lookup_view)\n\n        if func_name == '':\n            return lookup_view\n\n        try:\n            mod = import_module(mod_name) 尝试导入模块\n        except ImportError:\n            parentmod, submod = get_mod_func(mod_name)\n\n            if (not can_fail and submod != '' and\n                    not module_has_submodule(import_module(parentmod), submod)):\n                raise ViewDoesNotExist(\n                    \"Could not import %s. Parent module %s does not exist.\" %\n                    (lookup_view, mod_name))\n\n            if not can_fail:\n                raise\n\n        else:\n            try:\n                lookup_view = getattr(mod, func_name)\n\n                # 不能调用, 异常\n                if not callable(lookup_view):\n                    raise ViewDoesNotExist(\n                        \"Could not import %s.%s. View is not callable.\" %\n                        (mod_name, func_name))\n\n            except AttributeError:\n                if not can_fail:\n                    raise ViewDoesNotExist(\n                        \"Could not import %s. View does not exist in module %s.\" %\n                        (lookup_view, mod_name))\n    return lookup_view\n\nget_callable = memoize(get_callable, _callable_cache, 1)\n\n# 获取 URL 匹配处理器\ndef get_resolver(urlconf):\n    # 如果为空, 导入 settings 中的 ROOT_URLCONF\n    if urlconf is None:\n        from django.conf import settings\n        urlconf = settings.ROOT_URLCONF\n    return RegexURLResolver(r'^/', urlconf)\n\nget_resolver = memoize(get_resolver, _resolver_cache, 1)\n\ndef get_ns_resolver(ns_pattern, resolver):\n    # Build a namespaced resolver for the given parent urlconf pattern.\n    # This makes it possible to have captured parameters in the parent\n    # urlconf pattern.\n    ns_resolver = RegexURLResolver(ns_pattern,\n                                          resolver.url_patterns)\n    return RegexURLResolver(r'^/', [ns_resolver])\n\nget_ns_resolver = memoize(get_ns_resolver, _ns_resolver_cache, 2)\n\ndef get_mod_func(callback):\n    # Converts 'django.views.news.stories.story_detail' to\n    # ['django.views.news.stories', 'story_detail']\n    try:\n        dot = callback.rindex('.')\n    except ValueError:\n        return callback, ''\n    return callback[:dot], callback[dot+1:]\n\nclass LocaleRegexProvider(object):\n    \"\"\"\n    区域相关的正则表达式, 会根据地区的不同返回不同的正则表达式, django 内部维护. 在一般英文的 url 中用处不大.\n\n    A mixin to provide a default regex property which can vary by active\n    language.\n    \"\"\"\n    def __init__(self, regex):\n        # regex is either a string representing a regular expression, or a\n        # translatable string (using ugettext_lazy) representing a regular\n        # expression.\n        self._regex = regex\n        self._regex_dict = {}\n\n    @property\n    def regex(self):\n        \"\"\"\n        Returns a compiled regular expression, depending upon the activated\n        language-code.\n        \"\"\"\n        language_code = get_language()\n\n        if language_code not in self._regex_dict:\n            if isinstance(self._regex, six.string_types):\n                regex = self._regex\n            else:\n                regex = force_text(self._regex)\n            try:\n                compiled_regex = re.compile(regex, re.UNICODE)\n            except re.error as e:\n                raise ImproperlyConfigured(\n                    '\"%s\" is not a valid regular expression: %s' %\n                    (regex, six.text_type(e)))\n\n            self._regex_dict[language_code] = compiled_regex\n\n        return self._regex_dict[language_code]\n\n# URL 正则匹配类, 用于执行正则匹配\nclass RegexURLPattern(LocaleRegexProvider):\n    def __init__(self, regex, callback, default_args=None, name=None):\n        LocaleRegexProvider.__init__(self, regex)\n        # callback is either a string like 'foo.views.news.stories.story_detail'\n        # which represents the path to a module and a view function name, or a\n        # callable object (view).\n        if callable(callback):\n            self._callback = callback #设置回调\n        else:\n            self._callback = None\n            self._callback_str = callback #如果不可调用设置回调的字符串版本\n\n        self.default_args = default_args or {}\n        self.name = name\n\n    def __repr__(self):\n        return force_str('<%s %s %s>' % (self.__class__.__name__, self.name, self.regex.pattern))\n\n    def add_prefix(self, prefix):\n        \"\"\"\n        Adds the prefix string to a string-based callback.\n        \"\"\"\n        if not prefix or not hasattr(self, '_callback_str'):\n            return\n\n        self._callback_str = prefix + '.' + self._callback_str\n\n    # 执行正则匹配\n    def resolve(self, path):\n        match = self.regex.search(path) # 搜索\n        if match:\n            # If there are any named groups, use those as kwargs, ignoring\n            # non-named groups. Otherwise, pass all non-named arguments as\n            # positional arguments.\n            # match.groupdict() 返回正则表达式中匹配的变量以及其值, 需要了解 python 中正则表达式的使用\n            kwargs = match.groupdict()\n            if kwargs:\n                args = ()\n            else:\n                args = match.groups()\n\n            # In both cases, pass any extra_kwargs as **kwargs.\n            kwargs.update(self.default_args)\n\n            # 成功, 返回匹配结果类; 否则返回 None\n            return ResolverMatch(self.callback, args, kwargs, self.name)\n\n    # 对 callback 进行修饰, 如果 self._callback 不是一个可调用的对象, 则可能还是一个字符串, 需要解析得到可调用的对象\n    @property\n    def callback(self):\n        if self._callback is not None:\n            return self._callback\n\n        self._callback = get_callable(self._callback_str)\n        return self._callback\n\n# URL 正则处理器类, 需要和 RegexURLPattert URL正则匹配类 区分开来:\n# 实际上, RegexURLResolver 中有包含 RegexURLPattern 实例和 RegexURLResolver 实例的集合.\nclass RegexURLResolver(LocaleRegexProvider):\n    def __init__(self, regex, urlconf_name, default_kwargs=None, app_name=None, namespace=None):\n        LocaleRegexProvider.__init__(self, regex)\n\n        # urlconf_name is a string representing the module containing URLconfs.\n        # url 配置文件所在的文件\n        self.urlconf_name = urlconf_name\n\n        if not isinstance(urlconf_name, six.string_types):\n            self._urlconf_module = self.urlconf_name\n\n        self.callback = None\n        self.default_kwargs = default_kwargs or {}\n        self.namespace = namespace\n        self.app_name = app_name\n        self._reverse_dict = {}\n        self._namespace_dict = {}\n        self._app_dict = {}\n\n    def __repr__(self):\n        if isinstance(self.urlconf_name, list) and len(self.urlconf_name):\n            # Don't bother to output the whole list, it can be huge\n            urlconf_repr = '<%s list>' % self.urlconf_name[0].__class__.__name__\n        else:\n            urlconf_repr = repr(self.urlconf_name)\n        return str('<%s %s (%s:%s) %s>') % (\n            self.__class__.__name__, urlconf_repr, self.app_name,\n            self.namespace, self.regex.pattern)\n\n    def _populate(self):\n        lookups = MultiValueDict() # key-list\n        namespaces = {}\n        apps = {}\n        language_code = get_language()\n\n        for pattern in reversed(self.url_patterns): # def url_patterns(self): 从模块中加载 urlpatterns\n\n            # pattern 是 RegexURLPattern 类型\n            p_pattern = pattern.regex.pattern\n\n            if p_pattern.startswith('^'):\n                p_pattern = p_pattern[1:]\n\n            if isinstance(pattern, RegexURLResolver): # 如果就是本身类 RegexURLResolver 的一个实例\n                if pattern.namespace:\n                    namespaces[pattern.namespace] = (p_pattern, pattern)\n\n                    if pattern.app_name:                    # 设置为空\n                        apps.setdefault(pattern.app_name, [] ).append(pattern.namespace)\n\n                else:  # 如果就是本身类 RegexURLResolver 的一个实例, 但不存在命名空间\n                    parent = normalize(pattern.regex.pattern)\n\n                    for name in pattern.reverse_dict:\n\n                        for matches, pat, defaults in pattern.reverse_dict.getlist(name):\n\n                            new_matches = []\n\n                            for piece, p_args in parent:\n                                new_matches.extend([(piece + suffix, p_args + args) for (suffix, args) in matches])\n                            lookups.appendlist(name, (new_matches, p_pattern + pat, dict(defaults, **pattern.default_kwargs)))\n\n                    for namespace, (prefix, sub_pattern) in pattern.namespace_dict.items():\n                        namespaces[namespace] = (p_pattern + prefix, sub_pattern)\n\n                    for app_name, namespace_list in pattern.app_dict.items():\n                        apps.setdefault(app_name, []).extend(namespace_list)\n\n            else:\n                bits = normalize(p_pattern)\n                lookups.appendlist(pattern.callback, (bits, p_pattern, pattern.default_args))\n                if pattern.name is not None:\n                    lookups.appendlist(pattern.name, (bits, p_pattern, pattern.default_args))\n\n        self._reverse_dict[language_code] = lookups\n        self._namespace_dict[language_code] = namespaces\n        self._app_dict[language_code] = apps\n\n    @property\n    def reverse_dict(self):\n        language_code = get_language()\n        if language_code not in self._reverse_dict:\n            self._populate()\n        return self._reverse_dict[language_code]\n\n    @property\n    def namespace_dict(self):\n        language_code = get_language()\n        if language_code not in self._namespace_dict:\n            self._populate()\n        return self._namespace_dict[language_code]\n\n    @property\n    def app_dict(self):\n        language_code = get_language()\n\n        if language_code not in self._app_dict:\n            self._populate()\n\n        return self._app_dict[language_code]\n\n    # 最关键的函数\n    def resolve(self, path):\n\n        tried = []\n\n        # regex 在 RegexURLResolver 中表示前缀\n        match = self.regex.search(path)\n\n        if match:\n            # 去除前缀\n            new_path = path[match.end():]\n\n            for pattern in self.url_patterns: # 穷举所有的 url pattern\n                # pattern 是 RegexURLPattern 实例\n                try:\n\n\"\"\"在 RegexURLResolver.resolve() 中的一句: sub_match = pattern.resolve(new_path) 最为关键.\n从上面 patterns() 函数的作用知道, pattern 可以是 RegexURLPattern 对象或者 RegexURLResolver 对象. 当为 RegexURLResolver 对象的时候, 就是启动子 url 匹配处理器, 于是又回到了上面.\n\nRegexURLPattern 和 RegexURLResolver 都有一个 resolve() 函数, 所以, 下面的一句 resolve() 调用, 可以是调用 RegexURLPattern.resolve() 或者 RegexURLResolver.resolve()\"\"\"\n\n                    # 返回 ResolverMatch 实例\n                    sub_match = pattern.resolve(new_path)\n\n                except Resolver404 as e:\n                    # 搜集已经尝试过的匹配器, 在出错的页面中会显示错误信息\n                    sub_tried = e.args[0].get('tried')\n\n                    if sub_tried is not None:\n                        tried.extend([[pattern] + t for t in sub_tried])\n                    else:\n                        tried.append([pattern])\n                else:\n                    # 是否成功匹配\n                    if sub_match:\n                        # match.groupdict()\n                        # Return a dictionary containing all the named subgroups of the match,\n                        # keyed by the subgroup name.\n\n                        # 如果在 urls.py 的正则表达式中使用了变量, match.groupdict() 返回即为变量和值.\n                        sub_match_dict = dict(match.groupdict(), **self.default_kwargs)\n\n                        sub_match_dict.update(sub_match.kwargs)\n\n                        # 返回 ResolverMatch 对象, 如你所知, 得到此对象将可以执行真正的逻辑操作, 即 views.py 内定义的函数.\n                        return ResolverMatch(sub_match.func,\n                            sub_match.args, sub_match_dict,\n                            sub_match.url_name, self.app_name or sub_match.app_name,\n                            [self.namespace] + sub_match.namespaces)\n\n                    tried.append([pattern])\n\n            # 如果没有匹配成功的项目, 将异常\n            raise Resolver404({'tried': tried, 'path': new_path})\n\n        raise Resolver404({'path' : path})\n\n    # 修饰 urlconf_module, 返回 self._urlconf_module, 即 urlpatterns 变量所在的文件\n    @property\n    def urlconf_module(self):\n        try:\n            return self._urlconf_module\n        except AttributeError:\n            self._urlconf_module = import_module(self.urlconf_name)\n            return self._urlconf_module\n\n    # 返回指定文件中的 urlpatterns 变量\n    @property\n    def url_patterns(self):\n        patterns = getattr(self.urlconf_module, \"urlpatterns\", self.urlconf_module)\n        try:\n            iter(patterns) # 是否可以迭代\n        except TypeError:\n            raise ImproperlyConfigured(\"The included urlconf %s doesn't have any patterns in it\" % self.urlconf_name)\n\n        # patterns 实际上是 RegexURLPattern 对象和 RegexURLResolver 对象的集合\n        return patterns\n\n    def _resolve_special(self, view_type):\n        callback = getattr(self.urlconf_module, 'handler%s' % view_type, None)\n        if not callback:\n            # No handler specified in file; use default\n            # Lazy import, since django.urls imports this file\n            from django.conf import urls\n            callback = getattr(urls, 'handler%s' % view_type)\n        return get_callable(callback), {}\n\n    def resolve403(self):\n        return self._resolve_special('403')\n\n    def resolve404(self):\n        return self._resolve_special('404')\n\n    def resolve500(self):\n        return self._resolve_special('500')\n\n    def reverse(self, lookup_view, *args, **kwargs):\n        return self._reverse_with_prefix(lookup_view, '', *args, **kwargs)\n\n    def _reverse_with_prefix(self, lookup_view, _prefix, *args, **kwargs):\n        if args and kwargs:\n            raise ValueError(\"Don't mix *args and **kwargs in call to reverse()!\")\n        try:\n            lookup_view = get_callable(lookup_view, True)\n        except (ImportError, AttributeError) as e:\n            raise NoReverseMatch(\"Error importing '%s': %s.\" % (lookup_view, e))\n        possibilities = self.reverse_dict.getlist(lookup_view)\n\n        prefix_norm, prefix_args = normalize(urlquote(_prefix))[0]\n        for possibility, pattern, defaults in possibilities:\n            for result, params in possibility:\n                if args:\n                    if len(args) != len(params) + len(prefix_args):\n                        continue\n                    unicode_args = [force_text(val) for val in args]\n                    candidate = (prefix_norm + result) % dict(zip(prefix_args + params, unicode_args))\n                else:\n                    if set(kwargs.keys()) | set(defaults.keys()) != set(params) | set(defaults.keys()) | set(prefix_args):\n                        continue\n                    matches = True\n                    for k, v in defaults.items():\n                        if kwargs.get(k, v) != v:\n                            matches = False\n                            break\n                    if not matches:\n                        continue\n                    unicode_kwargs = dict([(k, force_text(v)) for (k, v) in kwargs.items()])\n                    candidate = (prefix_norm.replace('%', '%%') + result) % unicode_kwargs\n                if re.search('^%s%s' % (prefix_norm, pattern), candidate, re.UNICODE):\n                    return candidate\n        # lookup_view can be URL label, or dotted path, or callable, Any of\n        # these can be passed in at the top, but callables are not friendly in\n        # error messages.\n        m = getattr(lookup_view, '__module__', None)\n        n = getattr(lookup_view, '__name__', None)\n        if m is not None and n is not None:\n            lookup_view_s = \"%s.%s\" % (m, n)\n        else:\n            lookup_view_s = lookup_view\n        raise NoReverseMatch(\"Reverse for '%s' with arguments '%s' and keyword \"\n                \"arguments '%s' not found.\" % (lookup_view_s, args, kwargs))\n\nclass LocaleRegexURLResolver(RegexURLResolver):\n    \"\"\"\n    A URL resolver that always matches the active language code as URL prefix.\n\n    Rather than taking a regex argument, we just override the ``regex``\n    function to always return the active language-code as regex.\n    \"\"\"\n    def __init__(self, urlconf_name, default_kwargs=None, app_name=None, namespace=None):\n        super(LocaleRegexURLResolver, self).__init__(\n            None, urlconf_name, default_kwargs, app_name, namespace)\n\n    @property\n    def regex(self):\n        language_code = get_language()\n        if language_code not in self._regex_dict:\n            regex_compiled = re.compile('^%s/' % language_code, re.UNICODE)\n            self._regex_dict[language_code] = regex_compiled\n        return self._regex_dict[language_code]\n\n# path: url\n# urlconf: urlpatterns 所在的文件\ndef resolve(path, urlconf=None):\n    # 如果没有指定 urlconf, 调用 get_urlconf() 获取\n    if urlconf is None:\n        urlconf = get_urlconf()\n\n    # get_resolver() 会返回 RegexURLResolver 实例, 即 url 匹配处理器\n    # 并调用 RegexURLResolver.resolve(path) 启动解析过程\n    return get_resolver(urlconf).resolve(path)\n\ndef reverse(viewname, urlconf=None, args=None, kwargs=None, prefix=None, current_app=None):\n    if urlconf is None:\n        urlconf = get_urlconf()\n    resolver = get_resolver(urlconf)\n    args = args or []\n    kwargs = kwargs or {}\n\n    if prefix is None:\n        prefix = get_script_prefix()\n\n    if not isinstance(viewname, six.string_types):\n        view = viewname\n    else:\n        parts = viewname.split(':')\n        parts.reverse()\n        view = parts[0]\n        path = parts[1:]\n\n        resolved_path = []\n        ns_pattern = ''\n        while path:\n            ns = path.pop()\n\n            # Lookup the name to see if it could be an app identifier\n            try:\n                app_list = resolver.app_dict[ns]\n                # Yes! Path part matches an app in the current Resolver\n                if current_app and current_app in app_list:\n                    # If we are reversing for a particular app,\n                    # use that namespace\n                    ns = current_app\n                elif ns not in app_list:\n                    # The name isn't shared by one of the instances\n                    # (i.e., the default) so just pick the first instance\n                    # as the default.\n                    ns = app_list[0]\n            except KeyError:\n                pass\n\n            try:\n                extra, resolver = resolver.namespace_dict[ns]\n                resolved_path.append(ns)\n                ns_pattern = ns_pattern + extra\n            except KeyError as key:\n                if resolved_path:\n                    raise NoReverseMatch(\n                        \"%s is not a registered namespace inside '%s'\" %\n                        (key, ':'.join(resolved_path)))\n                else:\n                    raise NoReverseMatch(\"%s is not a registered namespace\" %\n                                         key)\n        if ns_pattern:\n            resolver = get_ns_resolver(ns_pattern, resolver)\n\n    return iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs))\n\nreverse_lazy = lazy(reverse, str)\n\ndef clear_url_caches():\n    global _resolver_cache\n    global _ns_resolver_cache\n    global _callable_cache\n    _resolver_cache.clear()\n    _ns_resolver_cache.clear()\n    _callable_cache.clear()\n\ndef set_script_prefix(prefix):\n    \"\"\"\n    Sets the script prefix for the current thread.\n    \"\"\"\n    if not prefix.endswith('/'):\n        prefix += '/'\n    _prefixes.value = prefix\n\ndef get_script_prefix():\n    \"\"\"\n    Returns the currently active script prefix. Useful for client code that\n    wishes to construct their own URLs manually (although accessing the request\n    instance is normally going to be a lot cleaner).\n    \"\"\"\n    return getattr(_prefixes, \"value\", '/')\n\ndef set_urlconf(urlconf_name):\n    \"\"\"\n    设置当前线程的 urlconf\n\n    Sets the URLconf for the current thread (overriding the default one in\n    settings). Set to None to revert back to the default.\n    \"\"\"\n    if urlconf_name:\n        # _urlconfs 是该线程的全局变量\n        _urlconfs.value = urlconf_name\n    else:\n        if hasattr(_urlconfs, \"value\"):\n            del _urlconfs.value\n\ndef get_urlconf(default=None):\n    \"\"\"\n    全局变量 _urlconfs 是一个 python 文件, 读取\n    Returns the root URLconf to use for the current thread if it has been\n    changed from the default one.\n    \"\"\"\n    return getattr(_urlconfs, \"value\", default)\n\ndef is_valid_path(path, urlconf=None):\n    \"\"\"\n    Returns True if the given path resolves against the default URL resolver,\n    False otherwise.\n\n    This is a convenience method to make working with \"is this a match?\" cases\n    easier, avoiding unnecessarily indented try...except blocks.\n    \"\"\"\n    try:\n        resolve(path, urlconf)\n        return True\n    except Resolver404:\n        return False\n"
  },
  {
    "path": "Django-1.5.1/django/core/validators.py",
    "content": "from __future__ import unicode_literals\n\nimport re\ntry:\n    from urllib.parse import urlsplit, urlunsplit\nexcept ImportError:     # Python 2\n    from urlparse import urlsplit, urlunsplit\n\nfrom django.core.exceptions import ValidationError\nfrom django.utils.translation import ugettext_lazy as _\nfrom django.utils.encoding import force_text\nfrom django.utils.ipv6 import is_valid_ipv6_address\nfrom django.utils import six\n\n# These values, if given to validate(), will trigger the self.required check.\nEMPTY_VALUES = (None, '', [], (), {})\n\n\nclass RegexValidator(object):\n    regex = ''\n    message = _('Enter a valid value.')\n    code = 'invalid'\n\n    def __init__(self, regex=None, message=None, code=None):\n        if regex is not None:\n            self.regex = regex\n        if message is not None:\n            self.message = message\n        if code is not None:\n            self.code = code\n\n        # Compile the regex if it was not passed pre-compiled.\n        if isinstance(self.regex, six.string_types):\n            self.regex = re.compile(self.regex)\n\n    def __call__(self, value):\n        \"\"\"\n        Validates that the input matches the regular expression.\n        \"\"\"\n        if not self.regex.search(force_text(value)):\n            raise ValidationError(self.message, code=self.code)\n\n\nclass URLValidator(RegexValidator):\n    regex = re.compile(\n        r'^(?:http|ftp)s?://'  # http:// or https://\n        r'(?:(?:[A-Z0-9](?:[A-Z0-9-]{0,61}[A-Z0-9])?\\.)+(?:[A-Z]{2,6}\\.?|[A-Z0-9-]{2,}\\.?)|'  # domain...\n        r'localhost|'  # localhost...\n        r'\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}|'  # ...or ipv4\n        r'\\[?[A-F0-9]*:[A-F0-9:]+\\]?)'  # ...or ipv6\n        r'(?::\\d+)?'  # optional port\n        r'(?:/?|[/?]\\S+)$', re.IGNORECASE)\n\n    def __call__(self, value):\n        try:\n            super(URLValidator, self).__call__(value)\n        except ValidationError as e:\n            # Trivial case failed. Try for possible IDN domain\n            if value:\n                value = force_text(value)\n                scheme, netloc, path, query, fragment = urlsplit(value)\n                try:\n                    netloc = netloc.encode('idna').decode('ascii')  # IDN -> ACE\n                except UnicodeError:  # invalid domain part\n                    raise e\n                url = urlunsplit((scheme, netloc, path, query, fragment))\n                super(URLValidator, self).__call__(url)\n            else:\n                raise\n        else:\n            url = value\n\n\ndef validate_integer(value):\n    try:\n        int(value)\n    except (ValueError, TypeError):\n        raise ValidationError('')\n\n\nclass EmailValidator(RegexValidator):\n\n    def __call__(self, value):\n        try:\n            super(EmailValidator, self).__call__(value)\n        except ValidationError as e:\n            # Trivial case failed. Try for possible IDN domain-part\n            if value and '@' in value:\n                parts = value.split('@')\n                try:\n                    parts[-1] = parts[-1].encode('idna').decode('ascii')\n                except UnicodeError:\n                    raise e\n                super(EmailValidator, self).__call__('@'.join(parts))\n            else:\n                raise\n\nemail_re = re.compile(\n    r\"(^[-!#$%&'*+/=?^_`{}|~0-9A-Z]+(\\.[-!#$%&'*+/=?^_`{}|~0-9A-Z]+)*\"  # dot-atom\n    # quoted-string, see also http://tools.ietf.org/html/rfc2822#section-3.2.5\n    r'|^\"([\\001-\\010\\013\\014\\016-\\037!#-\\[\\]-\\177]|\\\\[\\001-\\011\\013\\014\\016-\\177])*\"'\n    r')@((?:[A-Z0-9](?:[A-Z0-9-]{0,61}[A-Z0-9])?\\.)+(?:[A-Z]{2,6}\\.?|[A-Z0-9-]{2,}\\.?)$)'  # domain\n    r'|\\[(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)(\\.(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)){3}\\]$', re.IGNORECASE)  # literal form, ipv4 address (SMTP 4.1.3)\nvalidate_email = EmailValidator(email_re, _('Enter a valid email address.'), 'invalid')\n\nslug_re = re.compile(r'^[-a-zA-Z0-9_]+$')\nvalidate_slug = RegexValidator(slug_re, _(\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"), 'invalid')\n\nipv4_re = re.compile(r'^(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)(\\.(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)){3}$')\nvalidate_ipv4_address = RegexValidator(ipv4_re, _('Enter a valid IPv4 address.'), 'invalid')\n\n\ndef validate_ipv6_address(value):\n    if not is_valid_ipv6_address(value):\n        raise ValidationError(_('Enter a valid IPv6 address.'), code='invalid')\n\n\ndef validate_ipv46_address(value):\n    try:\n        validate_ipv4_address(value)\n    except ValidationError:\n        try:\n            validate_ipv6_address(value)\n        except ValidationError:\n            raise ValidationError(_('Enter a valid IPv4 or IPv6 address.'), code='invalid')\n\nip_address_validator_map = {\n    'both': ([validate_ipv46_address], _('Enter a valid IPv4 or IPv6 address.')),\n    'ipv4': ([validate_ipv4_address], _('Enter a valid IPv4 address.')),\n    'ipv6': ([validate_ipv6_address], _('Enter a valid IPv6 address.')),\n}\n\n\ndef ip_address_validators(protocol, unpack_ipv4):\n    \"\"\"\n    Depending on the given parameters returns the appropriate validators for\n    the GenericIPAddressField.\n\n    This code is here, because it is exactly the same for the model and the form field.\n    \"\"\"\n    if protocol != 'both' and unpack_ipv4:\n        raise ValueError(\n            \"You can only use `unpack_ipv4` if `protocol` is set to 'both'\")\n    try:\n        return ip_address_validator_map[protocol.lower()]\n    except KeyError:\n        raise ValueError(\"The protocol '%s' is unknown. Supported: %s\"\n                         % (protocol, list(ip_address_validator_map)))\n\ncomma_separated_int_list_re = re.compile('^[\\d,]+$')\nvalidate_comma_separated_integer_list = RegexValidator(comma_separated_int_list_re, _('Enter only digits separated by commas.'), 'invalid')\n\n\nclass BaseValidator(object):\n    compare = lambda self, a, b: a is not b\n    clean = lambda self, x: x\n    message = _('Ensure this value is %(limit_value)s (it is %(show_value)s).')\n    code = 'limit_value'\n\n    def __init__(self, limit_value):\n        self.limit_value = limit_value\n\n    def __call__(self, value):\n        cleaned = self.clean(value)\n        params = {'limit_value': self.limit_value, 'show_value': cleaned}\n        if self.compare(cleaned, self.limit_value):\n            raise ValidationError(\n                self.message % params,\n                code=self.code,\n                params=params,\n            )\n\n\nclass MaxValueValidator(BaseValidator):\n    compare = lambda self, a, b: a > b\n    message = _('Ensure this value is less than or equal to %(limit_value)s.')\n    code = 'max_value'\n\n\nclass MinValueValidator(BaseValidator):\n    compare = lambda self, a, b: a < b\n    message = _('Ensure this value is greater than or equal to %(limit_value)s.')\n    code = 'min_value'\n\n\nclass MinLengthValidator(BaseValidator):\n    compare = lambda self, a, b: a < b\n    clean = lambda self, x: len(x)\n    message = _('Ensure this value has at least %(limit_value)d characters (it has %(show_value)d).')\n    code = 'min_length'\n\n\nclass MaxLengthValidator(BaseValidator):\n    compare = lambda self, a, b: a > b\n    clean = lambda self, x: len(x)\n    message = _('Ensure this value has at most %(limit_value)d characters (it has %(show_value)d).')\n    code = 'max_length'\n"
  },
  {
    "path": "Django-1.5.1/django/core/wsgi.py",
    "content": "from django.core.handlers.wsgi import WSGIHandler\n\n\ndef get_wsgi_application():\n    \"\"\"\n    The public interface to Django's WSGI support. Should return a WSGI\n    callable.\n\n    Allows us to avoid making django.core.handlers.WSGIHandler public API, in\n    case the internal WSGI implementation changes or moves in the future.\n\n    \"\"\"\n    \"\"\"\n    # 继承, 但只实现了 __call__ 方法, 方便使用\n    class WSGIHandler(base.BaseHandler):\n    \"\"\"\n    return WSGIHandler()\n"
  },
  {
    "path": "Django-1.5.1/django/core/xheaders.py",
    "content": "\"\"\"\nPages in Django can are served up with custom HTTP headers containing useful\ninformation about those pages -- namely, the content type and object ID.\n\nThis module contains utility functions for retrieving and doing interesting\nthings with these special \"X-Headers\" (so called because the HTTP spec demands\nthat custom headers are prefixed with \"X-\").\n\nNext time you're at slashdot.org, watch out for X-Fry and X-Bender. :)\n\"\"\"\n\ndef populate_xheaders(request, response, model, object_id):\n    \"\"\"\n    Adds the \"X-Object-Type\" and \"X-Object-Id\" headers to the given\n    HttpResponse according to the given model and object_id -- but only if the\n    given HttpRequest object has an IP address within the INTERNAL_IPS setting\n    or if the request is from a logged in staff member.\n    \"\"\"\n    from django.conf import settings\n    if (request.META.get('REMOTE_ADDR') in settings.INTERNAL_IPS\n            or (hasattr(request, 'user') and request.user.is_active\n                and request.user.is_staff)):\n        response['X-Object-Type'] = \"%s.%s\" % (model._meta.app_label, model._meta.object_name.lower())\n        response['X-Object-Id'] = str(object_id)\n"
  },
  {
    "path": "Django-1.5.1/django/db/__init__.py",
    "content": "from django.conf import settings\nfrom django.core import signals\nfrom django.core.exceptions import ImproperlyConfigured\nfrom django.db.utils import (ConnectionHandler, ConnectionRouter,\n    load_backend, DEFAULT_DB_ALIAS, DatabaseError, IntegrityError)\n\n__all__ = ('backend', 'connection', 'connections', 'router', 'DatabaseError',\n    'IntegrityError', 'DEFAULT_DB_ALIAS')\n\n\nif settings.DATABASES and DEFAULT_DB_ALIAS not in settings.DATABASES:\n    raise ImproperlyConfigured(\"You must define a '%s' database\" % DEFAULT_DB_ALIAS)\n\n# 加载解析 settings.DATABASES\nconnections = ConnectionHandler(settings.DATABASES)\n\n# 作用不大\nrouter = ConnectionRouter(settings.DATABASE_ROUTERS) 经查 settings.DATABASE_ROUTERS 为空???\n\n# `connection`, `DatabaseError` and `IntegrityError` are convenient aliases\n# for backend bits.\n\n# DatabaseWrapper.__init__() takes a dictionary, not a settings module, so\n# we manually create the dictionary from the settings, passing only the\n# settings that the database backends care about. Note that TIME_ZONE is used\n# by the PostgreSQL backends.\n# We load all these up for backwards compatibility, you should use\n# connections['default'] instead.\nclass DefaultConnectionProxy(object):\n    \"\"\"\n    Proxy for accessing the default DatabaseWrapper object's attributes. If you\n    need to access the DatabaseWrapper object itself, use\n    connections[DEFAULT_DB_ALIAS] instead.\n    \"\"\"\n    def __getattr__(self, item):\n        return getattr(connections[DEFAULT_DB_ALIAS], item)\n\n    def __setattr__(self, name, value):\n        return setattr(connections[DEFAULT_DB_ALIAS], name, value)\n\nconnection = DefaultConnectionProxy()\nbackend = load_backend(connection.settings_dict['ENGINE'])\n\n# Register an event that closes the database connection\n# when a Django request is finished.\ndef close_connection(**kwargs):\n    # Avoid circular imports\n    from django.db import transaction\n    for conn in connections:\n        # If an error happens here the connection will be left in broken\n        # state. Once a good db connection is again available, the\n        # connection state will be cleaned up.\n        transaction.abort(conn)\n        connections[conn].close()\nsignals.request_finished.connect(close_connection)\n\n# Register an event that resets connection.queries\n# when a Django request is started.\ndef reset_queries(**kwargs):\n    for conn in connections.all():\n        conn.queries = []\nsignals.request_started.connect(reset_queries)\n\n# Register an event that rolls back the connections\n# when a Django request has an exception.\ndef _rollback_on_exception(**kwargs):\n    from django.db import transaction\n    for conn in connections:\n        try:\n            transaction.rollback_unless_managed(using=conn)\n        except DatabaseError:\n            pass\nsignals.got_request_exception.connect(_rollback_on_exception)\n"
  },
  {
    "path": "Django-1.5.1/django/db/backends/__init__.py",
    "content": "from django.db.utils import DatabaseError\n\ntry:\n    from django.utils.six.moves import _thread as thread\nexcept ImportError:\n    from django.utils.six.moves import _dummy_thread as thread\nfrom contextlib import contextmanager\n\nfrom django.conf import settings\nfrom django.db import DEFAULT_DB_ALIAS\nfrom django.db.backends import util\nfrom django.db.transaction import TransactionManagementError\nfrom django.utils.functional import cached_property\nfrom django.utils.importlib import import_module\nfrom django.utils import six\nfrom django.utils.timezone import is_aware\n\n数据库包装类, 关于的数据库的基本操作函数\nclass BaseDatabaseWrapper(object):\n    \"\"\"\n    Represents a database connection.\n\n    表示一个打开的数据库\n    \"\"\"\n    ops = None\n    vendor = 'unknown'\n\n    def __init__(self, settings_dict, alias=DEFAULT_DB_ALIAS,\n                 allow_thread_sharing=False):\n        # `settings_dict` should be a dictionary containing keys such as\n        # NAME, USER, etc. It's called `settings_dict` instead of `settings`\n        # to disambiguate it from Django settings modules.\n\n        # settints_dict 包含数据库名, 用户名, 密码等\n        self.connection = None\n        self.queries = [] #查询集\n        self.settings_dict = settings_dict\n        self.alias = alias\n        self.use_debug_cursor = None\n\n        # Transaction related attributes 事务相关的属性\n        self.transaction_state = []\n        self.savepoint_state = 0\n        self._dirty = None\n        self._thread_ident = thread.get_ident()\n        self.allow_thread_sharing = allow_thread_sharing\n\n    # 都是针对 self.alias 的操作\n    # ==\n    def __eq__(self, other):\n        return self.alias == other.alias\n\n    # !==\n    def __ne__(self, other):\n        return not self == other\n\n    # http://docs.python.org/2/reference/datamodel.html#object.__hash__\n    # Called by built-in function hash() and for operations on members of hashed collections including set, frozenset, and dict. __hash__() should return an integer.\n    # If a class does not define a __cmp__() or __eq__() method it should not define a __hash__() operation either; if it defines __cmp__() or __eq__() but not __hash__(), its instances will not be usable in hashed collections.\n    def __hash__(self):\n        return hash(self.alias)\n\n    def _commit(self):\n        if self.connection is not None:\n            return self.connection.commit()\n\n    # 回滚\n    def _rollback(self):\n        if self.connection is not None:\n            return self.connection.rollback()\n\n    # 不懂, 进入事务管理和退出事务管理\n    def _enter_transaction_management(self, managed):\n        \"\"\"\n        A hook for backend-specific changes required when entering manual\n        transaction handling.\n        \"\"\"\n        pass\n\n    def _leave_transaction_management(self, managed):\n        \"\"\"\n        A hook for backend-specific changes required when leaving manual\n        transaction handling. Will usually be implemented only when\n        _enter_transaction_management() is also required.\n        \"\"\"\n        pass\n\n    def _savepoint(self, sid):\n        # self.features 未知属性\n        if not self.features.uses_savepoints:\n            return\n        self.cursor().execute(self.ops.savepoint_create_sql(sid))\n\n    def _savepoint_rollback(self, sid):\n        if not self.features.uses_savepoints:\n            return\n        self.cursor().execute(self.ops.savepoint_rollback_sql(sid))\n\n    def _savepoint_commit(self, sid):\n        if not self.features.uses_savepoints:\n            return\n        self.cursor().execute(self.ops.savepoint_commit_sql(sid))\n\n    def abort(self):\n        \"\"\"\n        Roll back any ongoing transaction and clean the transaction state\n        stack.\n        \"\"\"\n        if self._dirty:\n            self._rollback()\n            self._dirty = False\n\n        # 脏数据: 在数据库技术中,脏数据在临时更新（脏读）中产生。事务A更新了某个数据项X，但是由于某种原因，事务A出现了问题，于是要把A回滚。但是在回滚之前，另一个事务B读取了数据项X的值(A更新后)，A回滚了事务，数据项恢复了原值。事务B读取的就是数据项X的就是一个“临时”的值，就是脏数据。\n        # 简单来说就是, B 读取了临时数据\n\n        while self.transaction_state:\n            self.leave_transaction_management()\n\n    def enter_transaction_management(self, managed=True):\n        \"\"\"\n        Enters transaction management for a running thread. It must be balanced with\n        the appropriate leave_transaction_management call, since the actual state is\n        managed as a stack. 这里有管理栈的概念\n\n        和 self.leave_transaction_management 必须成对调用\n\n        The state and dirty flag are carried over from the surrounding block or\n        from the settings, if there is no surrounding block (dirty is always false\n        when no current block is running).\n        \"\"\"\n        if self.transaction_state:\n            self.transaction_state.append(self.transaction_state[-1]) #压入最后一个 state\n        else:\n            self.transaction_state.append(settings.TRANSACTIONS_MANAGED)\n\n        if self._dirty is None:\n            self._dirty = False\n\n        self._enter_transaction_management(managed) #真正的进入\n\n    def leave_transaction_management(self):\n        \"\"\"\n        Leaves transaction management for a running thread. A dirty flag is carried\n        over to the surrounding block, as a commit will commit all changes, even\n        those from outside. (Commits are on connection level.)\n        \"\"\"\n        if self.transaction_state:\n            del self.transaction_state[-1] #删除最后一项\n        else:\n            raise TransactionManagementError(\n                \"This code isn't under transaction management\")\n\n        # We will pass the next status (after leaving the previous state\n        # behind) to subclass hook.\n        self._leave_transaction_management(self.is_managed())\n        if self._dirty:\n            self.rollback()\n            raise TransactionManagementError(\n                \"Transaction managed block ended with pending COMMIT/ROLLBACK\")\n        self._dirty = False\n\n    def validate_thread_sharing(self):\n        \"\"\"\n        检测数据库并没有被其他的线程连接, 除非已经设置为所有线程可以共享\n\n        Validates that the connection isn't accessed by another thread than the\n        one which originally created it, unless the connection was explicitly\n        authorized to be shared between threads (via the `allow_thread_sharing`\n        property). Raises an exception if the validation fails.\n        \"\"\"\n        if (not self.allow_thread_sharing\n            and self._thread_ident != thread.get_ident()):\n                raise DatabaseError(\"DatabaseWrapper objects created in a \"\n                    \"thread can only be used in that same thread. The object \"\n                    \"with alias '%s' was created in thread id %s and this is \"\n                    \"thread id %s.\"\n                    % (self.alias, self._thread_ident, thread.get_ident()))\n\n    def is_dirty(self):\n        \"\"\"\n        Returns True if the current transaction requires a commit for changes to\n        happen.\n        \"\"\"\n        return self._dirty\n\n    def set_dirty(self):\n        \"\"\"\n        Sets a dirty flag for the current thread and code streak. This can be used\n        to decide in a managed block of code to decide whether there are open\n        changes waiting for commit.\n        \"\"\"\n        if self._dirty is not None:\n            self._dirty = True\n        else:\n            raise TransactionManagementError(\"This code isn't under transaction \"\n                \"management\") #事务中才有脏数据的概念\n\n    def set_clean(self):\n        \"\"\"\n        Resets a dirty flag for the current thread and code streak. This can be used\n        to decide in a managed block of code to decide whether a commit or rollback\n        should happen.\n        \"\"\"\n        if self._dirty is not None:\n            self._dirty = False\n        else:\n            raise TransactionManagementError(\"This code isn't under transaction management\")\n        self.clean_savepoints()\n\n    def clean_savepoints(self):\n        self.savepoint_state = 0\n\n    def is_managed(self):\n        \"\"\"\n        Checks whether the transaction manager is in manual or in auto state.\n\n        是在人工状态下还是自动状态下, 不懂\n        \"\"\"\n        if self.transaction_state:\n            return self.transaction_state[-1]\n        return settings.TRANSACTIONS_MANAGED\n\n    def managed(self, flag=True):\n        \"\"\"\n        Puts the transaction manager into a manual state: managed transactions have\n        to be committed explicitly by the user. If you switch off transaction\n        management and there is a pending commit/rollback, the data will be\n        commited.\n        \"\"\"\n        top = self.transaction_state\n        if top:\n            top[-1] = flag\n            if not flag and self.is_dirty():\n                self._commit()\n                self.set_clean()\n        else:\n            raise TransactionManagementError(\"This code isn't under transaction \"\n                \"management\")\n\n    def commit_unless_managed(self):\n        \"\"\"\n        Commits changes if the system is not in managed transaction mode.\n        \"\"\"\n        self.validate_thread_sharing()\n        if not self.is_managed():\n            self._commit()\n            self.clean_savepoints()\n        else:\n            self.set_dirty()\n\n    def rollback_unless_managed(self):\n        \"\"\"\n        除非在管理状态下才进行回滚, 不懂\n        Rolls back changes if the system is not in managed transaction mode.\n        \"\"\"\n        self.validate_thread_sharing()\n        if not self.is_managed():\n            self._rollback()\n        else:\n            self.set_dirty() #设置脏数据, 因为在事务管理中\n\n    def commit(self):\n        \"\"\"\n        Does the commit itself and resets the dirty flag.\n        \"\"\"\n        self.validate_thread_sharing()\n        self._commit()\n        self.set_clean()\n\n    def rollback(self):\n        \"\"\"\n        This function does the rollback itself and resets the dirty flag.\n        \"\"\"\n        self.validate_thread_sharing()\n        self._rollback()\n        self.set_clean()\n\n    def savepoint(self):\n        \"\"\"\n        Creates a savepoint (if supported and required by the backend) inside the\n        current transaction. Returns an identifier for the savepoint that will be\n        used for the subsequent rollback or commit.\n        \"\"\"\n        thread_ident = thread.get_ident() 获取线程的标识\n\n        self.savepoint_state += 1\n\n        tid = str(thread_ident).replace('-', '')\n        sid = \"s%s_x%d\" % (tid, self.savepoint_state)\n        self._savepoint(sid)\n        return sid\n\n    def savepoint_rollback(self, sid):\n        \"\"\"\n        Rolls back the most recent savepoint (if one exists). Does nothing if\n        savepoints are not supported.\n        \"\"\"\n        self.validate_thread_sharing()\n        if self.savepoint_state:\n            self._savepoint_rollback(sid)\n\n    def savepoint_commit(self, sid):\n        \"\"\"\n        Commits the most recent savepoint (if one exists). Does nothing if\n        savepoints are not supported.\n        \"\"\"\n        self.validate_thread_sharing()\n        if self.savepoint_state:\n            self._savepoint_commit(sid)\n\n    @contextmanager 不懂\n    def constraint_checks_disabled(self):\n        disabled = self.disable_constraint_checking()\n        try:\n            yield\n        finally:\n            if disabled:\n                self.enable_constraint_checking()\n\n    # 取消约束\n    def disable_constraint_checking(self): # constraint 约束\n        \"\"\"\n        Backends can implement as needed to temporarily disable foreign key constraint\n        checking.\n        \"\"\"\n        pass\n\n    # 启动约束\n    def enable_constraint_checking(self):\n        \"\"\"\n        Backends can implement as needed to re-enable foreign key constraint checking.\n        \"\"\"\n        pass\n\n    # 检查约束\n    def check_constraints(self, table_names=None):\n        \"\"\"\n        Backends can override this method if they can apply constraint checking (e.g. via \"SET CONSTRAINTS\n        ALL IMMEDIATE\"). Should raise an IntegrityError if any invalid foreign key references are encountered.\n        \"\"\"\n        pass\n\n    def close(self):\n        self.validate_thread_sharing()\n        if self.connection is not None:\n            self.connection.close()\n            self.connection = None\n\n    def cursor(self):\n        self.validate_thread_sharing()\n        if (self.use_debug_cursor or\n            (self.use_debug_cursor is None and settings.DEBUG)):\n            cursor = self.make_debug_cursor(self._cursor())\n        else:\n            # 如果是非调试模式, 需要使用专用的游标类\n            cursor = util.CursorWrapper(self._cursor(), self)\n        return cursor\n\n    def make_debug_cursor(self, cursor):\n        return util.CursorDebugWrapper(cursor, self)\n\n数据库特性\nclass BaseDatabaseFeatures(object):\n    allows_group_by_pk = False\n\n    # True if django.db.backend.utils.typecast_timestamp is used on values\n    # returned from dates() calls.\n    needs_datetime_string_cast = True\n\n    empty_fetchmany_value = []\n    update_can_self_select = True\n\n    # Does the backend distinguish between '' and None?\n    interprets_empty_strings_as_nulls = False #是否将空字符串转换为 NULL\n    \"\"\"\n    说明：\n    1、等价于没有任何值、是未知数。\n    2、NULL与0、空字符串、空格都不同。\n    3、对空值做加、减、乘、除等运算操作，结果仍为空。\n    4、NULL的处理使用NVL函数。\n    5、比较时使用关键字用“is null”和“is not null”。\n    6、空值不能被索引，所以查询时有些符合条件的数据可能查不出来，count(*)中，用nvl(列名,0)处理后再查。\n    7、排序时比其他数据都大（索引默认是降序排列，小→大），所以NULL值总是排在最后。\n    \"\"\"\n\n    # Does the backend allow inserting duplicate rows 重复的行 when a unique_together\n    # constraint exists, but one of the unique_together columns is NULL?\n    # 当列为 null 时候是否可以重复\n    ignores_nulls_in_unique_constraints = True\n\n    can_use_chunked_reads = True\n    can_return_id_from_insert = False\n    has_bulk_insert = False\n    uses_autocommit = False\n    uses_savepoints = False\n    can_combine_inserts_with_and_without_auto_increment_pk = False\n\n    # If True, don't use integer foreign keys referring to, e.g., positive\n    # integer 正整数 primary keys. 举个例子\n    related_fields_match_type = False\n    allow_sliced_subqueries = True\n    has_select_for_update = False\n    has_select_for_update_nowait = False\n\n    supports_select_related = True\n\n    # Does the default test database allow multiple connections?\n    # Usually an indication that the test database is in-memory\n    test_db_allows_multiple_connections = True\n\n    # Can an object be saved without an explicit primary key?\n    supports_unspecified_pk = False\n\n    # Can a fixture contain forward references? i.e., are\n    # FK constraints checked at the end of transaction, or\n    # at the end of each save operation?\n    supports_forward_references = True\n\n    # Does a dirty transaction need to be rolled back\n    # before the cursor can be used again?\n    requires_rollback_on_dirty_transaction = False\n\n    # Does the backend allow very long model names without error?\n    supports_long_model_names = True\n\n    # Is there a REAL datatype in addition to floats/doubles?\n    has_real_datatype = False\n    supports_subqueries_in_group_by = True\n    supports_bitwise_or = True\n\n    # Do time/datetime fields have microsecond precision?\n    supports_microsecond_precision = True\n\n    # Does the __regex lookup support backreferencing and grouping?\n    supports_regex_backreferencing = True\n\n    # Can date/datetime lookups be performed using a string?\n    supports_date_lookup_using_string = True\n\n    # Can datetimes with timezones be used?\n    supports_timezones = True\n\n    # When performing a GROUP BY, is an ORDER BY NULL required\n    # to remove any ordering?\n    requires_explicit_null_ordering_when_grouping = False\n\n    # Is there a 1000 item limit on query parameters?\n    supports_1000_query_parameters = True\n\n    # Can an object have a primary key of 0? MySQL says No. MySQL 不允许使用 0 作为主键\n    allows_primary_key_0 = True\n\n    # Do we need to NULL a ForeignKey out, or can the constraint check be\n    # deferred\n    # 外键约束可否延迟检测\n    can_defer_constraint_checks = False\n\n    # date_interval_sql can properly handle mixed Date/DateTime fields and timedeltas\n    supports_mixed_date_datetime_comparisons = True\n\n    # Does the backend support tablespaces? Default to False because it isn't\n    # in the SQL standard.\n    supports_tablespaces = False\n\n    # Does the backend reset sequences between tests?\n    supports_sequence_reset = True\n\n    # Confirm support for introspected foreign keys\n    # Every database can do this reliably, except MySQL,\n    # which can't do it for MyISAM tables\n    can_introspect_foreign_keys = True\n\n    # Support for the DISTINCT ON clause\n    can_distinct_on_fields = False\n\n    def __init__(self, connection):\n        self.connection = connection\n\n    @cached_property\n    def supports_transactions(self):\n        \"Confirm support for transactions\"\n        try:\n            # Make sure to run inside a managed transaction block,\n            # otherwise autocommit will cause the confimation to\n            # fail.\n            self.connection.enter_transaction_management()\n            self.connection.managed(True)\n            cursor = self.connection.cursor()\n            cursor.execute('CREATE TABLE ROLLBACK_TEST (X INT)')\n            self.connection._commit()\n            cursor.execute('INSERT INTO ROLLBACK_TEST (X) VALUES (8)')\n            self.connection._rollback()\n            cursor.execute('SELECT COUNT(X) FROM ROLLBACK_TEST')\n            count, = cursor.fetchone()\n            cursor.execute('DROP TABLE ROLLBACK_TEST')\n            self.connection._commit()\n            self.connection._dirty = False\n        finally:\n            self.connection.leave_transaction_management()\n        return count == 0\n\n    @cached_property\n    def supports_stddev(self):\n        \"Confirm support for STDDEV and related stats functions\"\n        class StdDevPop(object):\n            sql_function = 'STDDEV_POP'\n\n        try:\n            self.connection.ops.check_aggregate_support(StdDevPop())\n            return True\n        except NotImplementedError:\n            return False\n\n数据库操作类\nclass BaseDatabaseOperations(object):\n    \"\"\"\n    This class encapsulates 压缩 all backend-specific differences, such as the way\n    a backend performs ordering or calculates the ID of a recently-inserted\n    row.\n    \"\"\"\n    compiler_module = \"django.db.models.sql.compiler\"\n\n    def __init__(self, connection):\n        self.connection = connection\n        self._cache = None\n\n    def autoinc_sql(self, table, column):\n        \"\"\"\n        auto inscream sql\n\n        Returns any SQL needed to support auto-incrementing primary keys, or\n        None if no SQL is necessary.\n\n        This SQL is executed when a table is created.\n        \"\"\"\n        return None\n\n    def bulk_batch_size(self, fields, objs):\n        \"\"\"\n        Returns the maximum allowed batch size for the backend. The fields\n        are the fields going to be inserted in the batch, the objs contains\n        all the objects to be inserted.\n        \"\"\"\n        return len(objs)\n\n    def cache_key_culling_sql(self):\n        \"\"\"\n        Returns a SQL query that retrieves the first cache key greater than the\n        n smallest.\n\n        This is used by the 'db' cache backend to determine where to start\n        culling.\n        用于数据库换存\n        \"\"\"\n        return \"SELECT cache_key FROM %s ORDER BY cache_key LIMIT 1 OFFSET %%s\"\n\n    def date_extract_sql(self, lookup_type, field_name):\n        \"\"\"\n        Given a lookup_type of 'year', 'month' or 'day', returns the SQL that\n        extracts a value from the given date field field_name.\n        \"\"\"\n        raise NotImplementedError()\n\n    def date_interval_sql(self, sql, connector, timedelta):\n        \"\"\"\n        Implements the date interval functionality 日期间隔 for expressions\n        \"\"\"\n        raise NotImplementedError()\n\n    def date_trunc_sql(self, lookup_type, field_name):\n        \"\"\"\n        Given a lookup_type of 'year', 'month' or 'day', returns the SQL that\n        truncates the given date field field_name to a DATE object with only\n        the given specificity.\n\n        将日期截断 不懂\n        \"\"\"\n        raise NotImplementedError()\n\n    # 时间映射成 sql\n    def datetime_cast_sql(self):\n        \"\"\"\n        Returns the SQL necessary to cast a datetime value so that it will be\n        retrieved as a Python datetime object instead of a string.\n\n        将 python datetime 转换为字符串?\n\n        This SQL should include a '%s' in place of the field's name.\n        \"\"\"\n        return \"%s\"\n\n    def deferrable_sql(self):\n        \"\"\"\n        Returns the SQL necessary to make a constraint \"initially deferred\"\n        during a CREATE TABLE statement.\n        \"\"\"\n        return ''\n\n    # 检测是否 distinct\n    def distinct_sql(self, fields):\n        \"\"\"\n        Returns an SQL DISTINCT clause which removes duplicate rows from the\n        result set. If any fields are given, only the given fields are being\n        checked for duplicates.\n        \"\"\"\n\n        if fields:\n            raise NotImplementedError('DISTINCT ON fields is not supported by this database backend')\n        else:\n            return 'DISTINCT'\n\n    def drop_foreignkey_sql(self):\n        \"\"\"\n        Returns the SQL command that drops a foreign key.\n        \"\"\"\n        return \"DROP CONSTRAINT\"\n\n    def drop_sequence_sql(self, table):\n        \"\"\"\n        Returns any SQL necessary to drop the sequence for the given table. 删除\n        Returns None if no SQL is necessary.\n        \"\"\"\n        return None\n\n    def fetch_returned_insert_id(self, cursor):\n        \"\"\"\n        对于指定的游标, 返回最新创建的 id\n        Given a cursor object that has just performed an INSERT...RETURNING\n        statement into a table that has an auto-incrementing ID, returns the\n        newly created ID.\n        \"\"\"\n        return cursor.fetchone()[0]\n\n    def field_cast_sql(self, db_type):\n        \"\"\"\n        Given a column type (e.g. 'BLOB', 'VARCHAR'), returns the SQL necessary\n        to cast it before using it in a WHERE statement. Note that the\n        resulting string should contain a '%s' placeholder for the column being\n        searched against.\n        \"\"\"\n        return '%s'\n\n    def force_no_ordering(self):\n        \"\"\"\n        强制无序\n\n        Returns a list used in the \"ORDER BY\" clause to force no ordering at\n        all. Returning an empty list means that nothing will be included in the\n        ordering.\n        \"\"\"\n        return []\n\n    def for_update_sql(self, nowait=False):\n        \"\"\"\n        Returns the FOR UPDATE SQL clause to lock rows for an update operation.\n        \"\"\"\n        if nowait:\n            return 'FOR UPDATE NOWAIT'\n        else:\n            return 'FOR UPDATE'\n\n    def fulltext_search_sql(self, field_name):\n        \"\"\"\n        Returns the SQL WHERE clause to use in order to perform a full-text\n        search of the given field_name. Note that the resulting string should\n        contain a '%s' placeholder for the value being searched against.\n        \"\"\"\n        raise NotImplementedError('Full-text search is not implemented for this database backend')\n\n    不懂\n    def last_executed_query(self, cursor, sql, params):\n        \"\"\"\n        返回最后执行的 sql\n        Returns a string of the query last executed by the given cursor, with\n        placeholders replaced with actual values.\n\n        `sql` is the raw query containing placeholders, and `params` is the\n        sequence of parameters. These are used by default, but this method\n        exists for database backends to provide a better implementation\n        according to their own quoting schemes.\n        \"\"\"\n        from django.utils.encoding import force_text\n\n        # Convert params to contain Unicode values.\n        # 可以得到提示 force_text() 是将字符串转换为 unicode\n        to_unicode = lambda s: force_text(s, strings_only=True, errors='replace')\n        if isinstance(params, (list, tuple)):\n            u_params = tuple([to_unicode(val) for val in params])\n        else:\n            u_params = dict([(to_unicode(k), to_unicode(v)) for k, v in params.items()])\n\n        return force_text(sql) % u_params\n\n    def last_insert_id(self, cursor, table_name, pk_name):\n        \"\"\"\n        返回最新创建的 id\n        Given a cursor object that has just performed an INSERT statement into\n        a table that has an auto-incrementing ID, returns the newly created ID.\n\n        This method also receives the table name and the name of the primary-key\n        column.\n        \"\"\"\n        return cursor.lastrowid\n\n    def lookup_cast(self, lookup_type):\n        \"\"\"\n        \"contains\", \"like\" 语句\n\n        Returns the string to use in a query when performing lookups\n        (\"contains\", \"like\", etc). The resulting string should contain a '%s'\n        placeholder for the column being searched against.\n        \"\"\"\n        return \"%s\"\n\n    def max_in_list_size(self):\n        \"\"\"\n        a single 'IN' 的最大容量\n\n        Returns the maximum number of items that can be passed in a single 'IN'\n        list condition, or None if the backend does not impose a limit.\n        \"\"\"\n        return None\n\n    def max_name_length(self):\n        \"\"\"\n        Returns the maximum length of table and column names, or None if there\n        is no limit.\n        \"\"\"\n        return None\n\n    def no_limit_value(self):\n        \"\"\"\n        Returns the value to use for the LIMIT when we are wanting \"LIMIT\n        infinity\". Returns None if the limit clause can be omitted in this case.\n        \"\"\"\n        raise NotImplementedError\n\n    def pk_default_value(self):\n        \"\"\"\n        主键的默认值\n\n        Returns the value to use during an INSERT statement to specify that\n        the field should use its default value.\n        \"\"\"\n        return 'DEFAULT'\n\n    def process_clob(self, value):\n        \"\"\"\n        Returns the value of a CLOB column, for backends that return a locator\n        object that requires additional processing.\n        \"\"\"\n        return value\n\n    def return_insert_id(self):\n        \"\"\"\n        For backends that support returning the last insert ID as part\n        of an insert query, this method returns the SQL and params to\n        append to the INSERT query. The returned fragment should\n        contain a format string to hold the appropriate column.\n        \"\"\"\n        pass\n\n    def compiler(self, compiler_name):\n        \"\"\"\n        Returns the SQLCompiler class corresponding to the given name,\n        in the namespace corresponding to the `compiler_module` attribute\n        on this backend.\n        \"\"\"\n        if self._cache is None:\n            self._cache = import_module(self.compiler_module)\n        return getattr(self._cache, compiler_name)\n\n    def quote_name(self, name):\n        \"\"\"\n        Returns a quoted version of the given table, index or column name. Does\n        not quote the given name if it's already been quoted.\n        \"\"\"\n        raise NotImplementedError()\n\n    def random_function_sql(self):\n        \"\"\"\n        Returns a SQL expression that returns a random value.\n        \"\"\"\n        return 'RANDOM()' 默认使用这个函数\n\n    def regex_lookup(self, lookup_type):\n        \"\"\"\n        正则表达式创造, 返回 sql\n        Returns the string to use in a query when performing regular expression\n        lookups (using \"regex\" or \"iregex\"). The resulting string should\n        contain a '%s' placeholder for the column being searched against.\n\n        If the feature is not supported (or part of it is not supported), a\n        NotImplementedError exception can be raised.\n        \"\"\"\n        raise NotImplementedError\n\n    def savepoint_create_sql(self, sid):\n        \"\"\"\n        Returns the SQL for starting a new savepoint. Only required if the\n        \"uses_savepoints\" feature is True. The \"sid\" parameter is a string\n        for the savepoint id.\n        \"\"\"\n        raise NotImplementedError\n\n    def savepoint_commit_sql(self, sid):\n        \"\"\"\n        Returns the SQL for committing the given savepoint.\n        \"\"\"\n        raise NotImplementedError\n\n    def savepoint_rollback_sql(self, sid):\n        \"\"\"\n        Returns the SQL for rolling back the given savepoint.\n        \"\"\"\n        raise NotImplementedError\n\n    def set_time_zone_sql(self):\n        \"\"\"\n        Returns the SQL that will set the connection's time zone.\n\n        Returns '' if the backend doesn't support time zones.\n        \"\"\"\n        return ''\n\n    不懂\n    def sql_flush(self, style, tables, sequences):\n        \"\"\"\n        Returns a list of SQL statements required to remove all data from\n        the given database tables (without actually removing the tables\n        themselves).\n\n        The returned value also includes SQL statements required to reset DB\n        sequences passed in :param sequences:.\n\n        The `style` argument is a Style object as returned by either\n        color_style() or no_style() in django.core.management.color.\n        \"\"\"\n        raise NotImplementedError()\n\n    不懂\n    def sequence_reset_by_name_sql(self, style, sequences):\n        \"\"\"\n        Returns a list of the SQL statements required to reset sequences\n        passed in :param sequences:.\n\n        The `style` argument is a Style object as returned by either\n        color_style() or no_style() in django.core.management.color.\n        \"\"\"\n        return []\n    不懂\n    def sequence_reset_sql(self, style, model_list):\n        \"\"\"\n        Returns a list of the SQL statements required to reset sequences for\n        the given models.\n\n        The `style` argument is a Style object as returned by either\n        color_style() or no_style() in django.core.management.color.\n        \"\"\"\n        return []  # No sequence reset required by default.\n\n    # 事务开始的语句\n    def start_transaction_sql(self):\n        \"\"\"\n        Returns the SQL statement required to start a transaction.\n        \"\"\"\n        return \"BEGIN;\"\n    # 事务结束的语句\n    def end_transaction_sql(self, success=True):\n        if not success:\n            return \"ROLLBACK;\"\n        return \"COMMIT;\"\n\n    def tablespace_sql(self, tablespace, inline=False):\n        \"\"\"\n        Returns the SQL that will be used in a query to define the tablespace.\n\n        Returns '' if the backend doesn't support tablespaces.\n\n        If inline is True, the SQL is appended to a row; otherwise it's appended\n        to the entire CREATE TABLE or CREATE INDEX statement.\n        \"\"\"\n        return ''\n\n    # 对 like 语句的处理, 将 _　和　％　转义\n    def prep_for_like_query(self, x):\n        \"\"\"Prepares a value for use in a LIKE query.\"\"\"\n        from django.utils.encoding import force_text\n        return force_text(x).replace(\"\\\\\", \"\\\\\\\\\").replace(\"%\", \"\\%\").replace(\"_\", \"\\_\")\n\n    # Same as prep_for_like_query(), but called for \"iexact\" matches, which\n    # need not necessarily be implemented using \"LIKE\" in the backend.\n    prep_for_iexact_query = prep_for_like_query\n\n    # 自动增长的主键的检查\n    def validate_autopk_value(self, value):\n        \"\"\"\n        Certain backends do not accept some values for \"serial\" fields\n        (for example zero in MySQL). This method will raise a ValueError\n        if the value is invalid, otherwise returns validated value.\n        \"\"\"\n        return value\n\n    def value_to_db_date(self, value):\n        \"\"\"\n        Transform a date value to an object compatible with what is expected\n        by the backend driver for date columns.\n        \"\"\"\n        if value is None:\n            return None\n        return six.text_type(value)\n\n    def value_to_db_datetime(self, value):\n        \"\"\"\n        Transform a datetime value to an object compatible with what is expected\n        by the backend driver for datetime columns.\n        \"\"\"\n        if value is None:\n            return None\n        return six.text_type(value)\n\n    def value_to_db_time(self, value):\n        \"\"\"\n        Transform a time value to an object compatible with what is expected\n        by the backend driver for time columns.\n        \"\"\"\n        if value is None:\n            return None\n        if is_aware(value):\n            raise ValueError(\"Django does not support timezone-aware times.\")\n        return six.text_type(value)\n\n    def value_to_db_decimal(self, value, max_digits, decimal_places):\n        \"\"\"\n        Transform a decimal.Decimal value to an object compatible with what is\n        expected by the backend driver for decimal (numeric) columns.\n        \"\"\"\n        if value is None:\n            return None\n        return util.format_number(value, max_digits, decimal_places)\n\n    def year_lookup_bounds(self, value):\n        \"\"\"\n        有些搜索是按年来搜索\n\n        Returns a two-elements list with the lower and upper bound to be used\n        with a BETWEEN operator to query a field value using a year lookup\n\n        `value` is an int, containing the looked-up year.\n        \"\"\"\n        first = '%s-01-01 00:00:00'\n        second = '%s-12-31 23:59:59.999999'\n        return [first % value, second % value]\n\n    def year_lookup_bounds_for_date_field(self, value):\n        \"\"\"\n        Returns a two-elements list with the lower and upper bound to be used\n        with a BETWEEN operator to query a DateField value using a year lookup\n\n        `value` is an int, containing the looked-up year.\n\n        By default, it just calls `self.year_lookup_bounds`. Some backends need\n        this hook because on their DB date fields can't be compared to values\n        which include a time part.\n        \"\"\"\n        return self.year_lookup_bounds(value)\n\n    def convert_values(self, value, field):\n        \"\"\"\n        将数据库返回的是数据类型转换为持久化对象\n\n        Coerce the value returned by the database backend into a consistent type\n        that is compatible with the field type.\n        \"\"\"\n        if value is None:\n            return value\n\n        internal_type = field.get_internal_type()\n\n        if internal_type == 'FloatField':\n            return float(value)\n        elif (internal_type and (internal_type.endswith('IntegerField')\n                                 or internal_type == 'AutoField')):\n            return int(value)\n\n        return value\n\n    聚合函数检测\n    def check_aggregate_support(self, aggregate_func):\n        \"\"\"Check that the backend supports the provided aggregate\n\n        This is used on specific backends to rule out known aggregates\n        that are known to have faulty implementations. If the named\n        aggregate function has a known problem, the backend should\n        raise NotImplementedError.\n        \"\"\"\n        pass\n\n    def combine_expression(self, connector, sub_expressions):\n        \"\"\"Combine a list of subexpressions into a single expression, using\n        the provided connecting operator. This is required because operators\n        can vary between backends (e.g., Oracle with %% and &) and between\n        subexpression types (e.g., date expressions)\n        \"\"\"\n        conn = ' %s ' % connector\n        return conn.join(sub_expressions)\n\n    def modify_insert_params(self, placeholders, params):\n        \"\"\"Allow modification of insert parameters. Needed for Oracle Spatial\n        backend due to #10888.\n        \"\"\"\n        return params\n\n数据库内部方法类\nclass BaseDatabaseIntrospection(object):\n    \"\"\"\n    This class encapsulates all backend-specific introspection utilities\n\n    包装内部方法\n    \"\"\"\n    data_types_reverse = {}\n\n    def __init__(self, connection):\n        self.connection = connection\n\n    def get_field_type(self, data_type, description):\n        \"\"\"Hook for a database backend to use the cursor description to\n        match a Django field type to a database column.\n\n        For Oracle, the column data_type on its own is insufficient to\n        distinguish between a FloatField and IntegerField, for example.\"\"\"\n        return self.data_types_reverse[data_type]\n\n    def table_name_converter(self, name):\n        \"\"\"Apply a conversion to the name for the purposes of comparison.\n\n        The default table name converter is for case sensitive comparison.\n        \"\"\"\n        return name\n\n    def table_names(self, cursor=None):\n        \"\"\"\n        返回数据库中的所有表名\n\n        Returns a list of names of all tables that exist in the database.\n        The returned table list is sorted by Python's default sorting. We\n        do NOT use database's ORDER BY here to avoid subtle differences\n        in sorting order between databases.\n        \"\"\"\n        if cursor is None:\n            cursor = self.connection.cursor()\n        return sorted(self.get_table_list(cursor))\n\n    def get_table_list(self, cursor):\n        \"\"\"\n        Returns an unsorted list of names of all tables that exist in the\n        database.\n        \"\"\"\n        raise NotImplementedError\n\n    def django_table_names(self, only_existing=False):\n        \"\"\"\n        返回与 Django 有关且已经在 INSTALLED_APPS 中标明的\n\n        Returns a list of all table names that have associated Django models and\n        are in INSTALLED_APPS.\n\n        不懂, 什么叫确实存在于数据库的表?\n        If only_existing is True, the resulting list will only include the tables\n\n        that actually exist in the database.\n        \"\"\"\n\n        from django.db import models, router\n        tables = set()\n\n        for app in models.get_apps():\n            for model in models.get_models(app):\n\n                if not model._meta.managed: #为什么\n                    continue\n                if not router.allow_syncdb(self.connection.alias, model):\n                    continue\n\n                tables.add(model._meta.db_table)\n                tables.update([f.m2m_db_table() for f in model._meta.local_many_to_many])\n\n        tables = list(tables)\n\n        if only_existing:\n            existing_tables = self.table_names()\n            tables = [\n                t\n                for t in tables\n                if self.table_name_converter(t) in existing_tables\n            ]\n        return tables\n\n    不懂\n    def installed_models(self, tables):\n        \"Returns a set of all models represented by the provided list of table names.\"\n        from django.db import models, router\n\n        all_models = []\n\n        for app in models.get_apps():\n            for model in models.get_models(app):\n                if router.allow_syncdb(self.connection.alias, model):\n                    all_models.append(model)\n\n        tables = list(map(self.table_name_converter, tables))\n\n        return set([\n            m for m in all_models\n            if self.table_name_converter(m._meta.db_table) in tables\n        ])\n\n    def sequence_list(self):\n        不懂, 返回数据库所有模块的数据库序列???\n        \"Returns a list of information about all DB sequences for all models in all apps.\"\n        from django.db import models, router\n\n        apps = models.get_apps()\n        sequence_list = []\n\n        for app in apps:\n            for model in models.get_models(app):\n\n                if not model._meta.managed:\n                    continue\n\n                if model._meta.swapped:\n                    continue\n\n                if not router.allow_syncdb(self.connection.alias, model):\n                    continue\n\n                for f in model._meta.local_fields:\n                    if isinstance(f, models.AutoField):\n                        sequence_list.append({'table': model._meta.db_table, 'column': f.column})\n                        break  # Only one AutoField is allowed per model, so don't bother continuing.\n\n                for f in model._meta.local_many_to_many:\n                    # If this is an m2m using an intermediate table,\n                    # we don't need to reset the sequence.\n                    if f.rel.through is None:\n                        sequence_list.append({'table': f.m2m_db_table(), 'column': None})\n\n        return sequence_list\n\n    def get_key_columns(self, cursor, table_name):\n        \"\"\"\n        返回 (column_name, referenced_table_name,referenced_column_name)\n\n        Backends can override this to return a list of (column_name, referenced_table_name,\n        referenced_column_name) for all key columns in given table.\n        \"\"\"\n        raise NotImplementedError\n\n    def get_primary_key_column(self, cursor, table_name):\n        \"\"\"\n        返回表的主键\n\n        Returns the name of the primary key column for the given table.\n        \"\"\"\n        for column in six.iteritems(self.get_indexes(cursor, table_name)):\n            if column[1]['primary_key']: column 应该是个复杂的数据结构, 而且不怎么结构化, 直接用数组来访问???\n                return column[0]\n\n        return None\n\n    def get_indexes(self, cursor, table_name):\n        \"\"\"\n        返回索引 fieldname -> infodict\n\n        Returns a dictionary of indexed fieldname -> infodict for the given\n        table, where each infodict is in the format:\n            {'primary_key': boolean representing whether it's the primary key,\n             'unique': boolean representing whether it's a unique index}\n\n        Only single-column indexes are introspected.\n        \"\"\"\n        raise NotImplementedError\n\n数据库客户端类\nclass BaseDatabaseClient(object):\n    \"\"\"\n    This class encapsulates all backend-specific methods for opening a\n    client shell.\n\n    客户端打开方法\n    \"\"\"\n    # This should be a string representing the name of the executable\n    # (e.g., \"psql\"). Subclasses must override this.\n    executable_name = None\n\n    def __init__(self, connection):\n        # connection is an instance of BaseDatabaseWrapper.\n        self.connection = connection\n\n    def runshell(self):\n        raise NotImplementedError()\n\n数据库有效性检测类\nclass BaseDatabaseValidation(object):\n    \"\"\"\n    This class encapsualtes all backend-specific model validation.\n\n    模块有效性检测\n    \"\"\"\n    def __init__(self, connection):\n        self.connection = connection\n\n    def validate_field(self, errors, opts, f):\n        \"By default, there is no backend-specific validation\"\n        pass\n"
  },
  {
    "path": "Django-1.5.1/django/db/backends/creation.py",
    "content": "import hashlib\nimport sys\nimport time\n\nfrom django.conf import settings\nfrom django.db.utils import load_backend\nfrom django.utils.encoding import force_bytes\nfrom django.utils.six.moves import input\n\n# The prefix to put on the default database name when creating\n# the test database.\nTEST_DATABASE_PREFIX = 'test_'\n\n\nclass BaseDatabaseCreation(object):\n    \"\"\"\n    This class encapsulates all backend-specific differences that pertain to\n    database *creation*, such as the column types to use for particular Django\n    Fields, the SQL used to create and destroy tables, and the creation and\n    destruction of test databases.\n    \"\"\"\n    data_types = {}\n\n    def __init__(self, connection):\n        self.connection = connection\n\n    def _digest(self, *args):\n        \"\"\"\n        Generates a 32-bit digest of a set of arguments that can be used to\n        shorten identifying names.\n\n        产生标识, 不懂\n        \"\"\"\n        h = hashlib.md5()\n        for arg in args:\n            h.update(force_bytes(arg))\n        return h.hexdigest()[:8]\n\n    根据 model 产生创建表的 SQL 语句\n    def sql_create_model(self, model, style, known_models=set()):\n        \"\"\"\n        Returns the SQL required to create a single model, as a tuple of:\n            (list_of_sql, pending_references_dict)\n        \"\"\"\n        opts = model._meta\n\n        if not opts.managed or opts.proxy or opts.swapped:\n            return [], {}\n\n        final_output = []\n        table_output = []\n        pending_references = {}\n        qn = self.connection.ops.quote_name\n        for f in opts.local_fields:\n            col_type = f.db_type(connection=self.connection)\n            tablespace = f.db_tablespace or opts.db_tablespace\n\n            if col_type is None:\n                # Skip ManyToManyFields, because they're not represented as\n                # database columns in this table.\n                continue\n\n            # Make the definition (e.g. 'foo VARCHAR(30)') for this field.\n            字段的类型\n            field_output = [style.SQL_FIELD(qn(f.column)),\n                style.SQL_COLTYPE(col_type)]\n\n            # Oracle treats the empty string ('') as null, so coerce the null\n            # option whenever '' is a possible value.\n            null = f.null\n\n            if (f.empty_strings_allowed and not f.primary_key and\n                    self.connection.features.interprets_empty_strings_as_nulls):\n                null = True\n\n            字段的属性等\n            if not null:\n                field_output.append(style.SQL_KEYWORD('NOT NULL'))\n\n            if f.primary_key:\n                field_output.append(style.SQL_KEYWORD('PRIMARY KEY'))\n\n            elif f.unique:\n                field_output.append(style.SQL_KEYWORD('UNIQUE'))\n\n            if tablespace and f.unique:\n                # We must specify the index tablespace inline, because we\n                # won't be generating a CREATE INDEX statement for this field.\n                tablespace_sql = self.connection.ops.tablespace_sql(\n                    tablespace, inline=True)\n                if tablespace_sql:\n                    field_output.append(tablespace_sql)\n            if f.rel:\n                ref_output, pending = self.sql_for_inline_foreign_key_references(\n                    f, known_models, style)\n\n                if pending:\n                    # 外键字段被加入 pending_references??? 不懂\n                    pending_references.setdefault(f.rel.to, []).append(\n                        (model, f))\n                else:\n                    field_output.extend(ref_output)\n\n            table_output.append(' '.join(field_output))\n\n        创建表的语句\n        for field_constraints in opts.unique_together:\n            table_output.append(style.SQL_KEYWORD('UNIQUE') + ' (%s)' %\n                \", \".join(\n                    [style.SQL_FIELD(qn(opts.get_field(f).column))\n                     for f in field_constraints]))\n        创建表的语句\n        full_statement = [style.SQL_KEYWORD('CREATE TABLE') + ' ' +\n                          style.SQL_TABLE(qn(opts.db_table)) + ' (']\n\n        将所有的字段放入 CREATE TABLE () 中\n        for i, line in enumerate(table_output):  # Combine and add commas.\n            full_statement.append(\n                '    %s%s' % (line, i < len(table_output) - 1 and ',' or ''))\n\n        full_statement.append(')')\n\n        如果允许表空间\n        if opts.db_tablespace:\n            tablespace_sql = self.connection.ops.tablespace_sql(\n                opts.db_tablespace)\n            if tablespace_sql:\n                full_statement.append(tablespace_sql)\n\n        full_statement.append(';')\n        final_output.append('\\n'.join(full_statement))\n\n        if opts.has_auto_field:\n            # Add any extra SQL needed to support auto-incrementing primary\n            # keys.\n            auto_column = opts.auto_field.db_column or opts.auto_field.name\n            autoinc_sql = self.connection.ops.autoinc_sql(opts.db_table,\n                                                          auto_column)\n            if autoinc_sql:\n                for stmt in autoinc_sql:\n                    final_output.append(stmt)\n\n        return final_output, pending_references\n\n    返回外键约束的小片段语句\n    def sql_for_inline_foreign_key_references(self, field, known_models, style):\n        \"\"\"\n        Return the SQL snippet defining the foreign key reference for a field.\n        \"\"\"\n        qn = self.connection.ops.quote_name\n        if field.rel.to in known_models:\n            output = [style.SQL_KEYWORD('REFERENCES') + ' ' +\n                style.SQL_TABLE(qn(field.rel.to._meta.db_table)) + ' (' +\n                style.SQL_FIELD(qn(field.rel.to._meta.get_field(\n                    field.rel.field_name).column)) + ')' +\n                self.connection.ops.deferrable_sql()\n            ]\n            pending = False\n        else:\n            # We haven't yet created the table to which this field\n            # is related, so save it for later.\n            output = []\n            pending = True\n\n        return output, pending\n\n    返回修改表语句, 为了添加外键约束\n    def sql_for_pending_references(self, model, style, pending_references):\n        \"\"\"\n        Returns any ALTER TABLE statements to add constraints after the fact.\n        \"\"\"\n        from django.db.backends.util import truncate_name\n\n        opts = model._meta\n        if not opts.managed or opts.proxy or opts.swapped:\n            return []\n\n        qn = self.connection.ops.quote_name ''\n        final_output = []\n        if model in pending_references:\n            for rel_class, f in pending_references[model]:\n                rel_opts = rel_class._meta\n                r_table = rel_opts.db_table\n                r_col = f.column\n                table = opts.db_table\n                col = opts.get_field(f.rel.field_name).column\n                # For MySQL, r_name must be unique in the first 64 characters.\n                # So we are careful with character usage here.\n                r_name = '%s_refs_%s_%s' % (\n                    r_col, col, self._digest(r_table, table))\n                final_output.append(style.SQL_KEYWORD('ALTER TABLE') +\n                    ' %s ADD CONSTRAINT %s FOREIGN KEY (%s) REFERENCES %s (%s)%s;' %\n                    (qn(r_table), qn(truncate_name(\n                        r_name, self.connection.ops.max_name_length())),\n                    qn(r_col), qn(table), qn(col),\n                    self.connection.ops.deferrable_sql()))\n\n            del pending_references[model]\n        return final_output\n\n    生成创建索引语句\n    def sql_indexes_for_model(self, model, style):\n        \"\"\"\n        Returns the CREATE INDEX SQL statements for a single model.\n        \"\"\"\n        if not model._meta.managed or model._meta.proxy or model._meta.swapped:\n            return []\n\n        output = []\n        \"\"\"\n        多处地方看到:\n        opts = model._meta\n        opts.local_fields...\n        \"\"\"\n        for f in model._meta.local_fields:\n            output.extend(self.sql_indexes_for_field(model, f, style))\n\n        for fs in model._meta.index_together:\n            fields = [model._meta.get_field_by_name(f)[0] for f in fs]\n            output.extend(self.sql_indexes_for_fields(model, fields, style))\n        return output\n\n    def sql_indexes_for_field(self, model, f, style):\n        \"\"\"\n        sql_indexes_for_model 的辅助函数\n\n        Return the CREATE INDEX SQL statements for a single model field.\n        \"\"\"\n        if f.db_index and not f.unique:\n            return self.sql_indexes_for_fields(model, [f], style)\n        else:\n            return []\n\n    def sql_indexes_for_fields(self, model, fields, style):\n        \"\"\"\n        sql_indexes_for_field 的辅助函数\n        \"\"\"\n        from django.db.backends.util import truncate_name\n\n        if len(fields) == 1 and fields[0].db_tablespace:\n            tablespace_sql = self.connection.ops.tablespace_sql(fields[0].db_tablespace)\n        elif model._meta.db_tablespace:\n            tablespace_sql = self.connection.ops.tablespace_sql(model._meta.db_tablespace)\n        else:\n            tablespace_sql = \"\"\n        if tablespace_sql:\n            tablespace_sql = \" \" + tablespace_sql\n\n        field_names = []\n        qn = self.connection.ops.quote_name\n        for f in fields:\n            field_names.append(style.SQL_FIELD(qn(f.column)))\n\n        index_name = \"%s_%s\" % (model._meta.db_table, self._digest([f.name for f in fields]))\n\n        return [\n            style.SQL_KEYWORD(\"CREATE INDEX\") + \" \" +\n            style.SQL_TABLE(qn(truncate_name(index_name, self.connection.ops.max_name_length()))) + \" \" +\n            style.SQL_KEYWORD(\"ON\") + \" \" +\n            style.SQL_TABLE(qn(model._meta.db_table)) + \" \" +\n            \"(%s)\" % style.SQL_FIELD(\", \".join(field_names)) +\n            \"%s;\" % tablespace_sql,\n        ]\n\n    生成删除表的 SQL 语句, 删除约束\n    def sql_destroy_model(self, model, references_to_delete, style):\n        \"\"\"\n        Return the DROP TABLE and restraint dropping statements for a single\n        model.\n        \"\"\"\n        if not model._meta.managed or model._meta.proxy or model._meta.swapped:\n            return []\n\n        # Drop the table now\n        qn = self.connection.ops.quote_name\n\n        输出信息\n        output = ['%s %s;' % (style.SQL_KEYWORD('DROP TABLE'),\n                              style.SQL_TABLE(qn(model._meta.db_table)))]\n\n        删除约束??? 不懂: 关于为什么在删除表过后还要删除约束: http://bbs.csdn.net/topics/380254293\n        if model in references_to_delete:\n            output.extend(self.sql_remove_table_constraints(\n                model, references_to_delete, style))\n\n        删除自增键??? 不懂\n        if model._meta.has_auto_field:\n            ds = self.connection.ops.drop_sequence_sql(model._meta.db_table)\n            if ds:\n                output.append(ds)\n\n        return output\n\n    def sql_remove_table_constraints(self, model, references_to_delete, style):\n\n        from django.db.backends.util import truncate_name\n\n        if not model._meta.managed or model._meta.proxy or model._meta.swapped:\n            return []\n\n        output = []\n\n        qn = self.connection.ops.quote_name ''\n\n        for rel_class, f in references_to_delete[model]:\n            table = rel_class._meta.db_table\n            col = f.column\n            r_table = model._meta.db_table\n            r_col = model._meta.get_field(f.rel.field_name).column\n\n            r_name = '%s_refs_%s_%s' % (\n                col, r_col, self._digest(table, r_table))\n\n            output.append('%s %s %s %s;' % \\\n                (style.SQL_KEYWORD('ALTER TABLE'),\n                style.SQL_TABLE(qn(table)),\n                style.SQL_KEYWORD(self.connection.ops.drop_foreignkey_sql()),\n                style.SQL_FIELD(qn(truncate_name(\n                    r_name, self.connection.ops.max_name_length())))))\n\n        del references_to_delete[model] 在引用列表中删除\n        return output\n\n    def create_test_db(self, verbosity=1, autoclobber=False):\n        \"\"\"\n        创建测试数据库, 当数据库已经存在的时候提示用户\n\n        Creates a test database, prompting the user for confirmation if the\n        database already exists. Returns the name of the test database created.\n        \"\"\"\n        # Don't import django.core.management if it isn't needed.\n        from django.core.management import call_command\n\n        test_database_name = self._get_test_db_name()\n\n        if verbosity >= 1:\n            test_db_repr = ''\n            if verbosity >= 2:\n                test_db_repr = \" ('%s')\" % test_database_name\n            print(\"Creating test database for alias '%s'%s...\" % (\n                self.connection.alias, test_db_repr))\n\n        self._create_test_db(verbosity, autoclobber)\n\n        self.connection.close()\n        self.connection.settings_dict[\"NAME\"] = test_database_name\n\n        # Report syncdb messages at one level lower than that requested.\n        # This ensures we don't get flooded with messages during testing\n        # (unless you really ask to be flooded)\n\n        # from django.core.management import call_command\n        # def call_command(name, *args, **options): 命令执行的入口\n        call_command('syncdb',\n            verbosity=max(verbosity - 1, 0),\n            interactive=False, 交互???\n            database=self.connection.alias,\n            load_initial_data=False)\n\n        # We need to then do a flush to ensure that any data installed by\n        # custom SQL has been removed. The only test data should come from\n        # test fixtures, or autogenerated from post_syncdb triggers.\n        # This has the side effect of loading initial data (which was\n        # intentionally skipped in the syncdb).\n        call_command('flush',\n            verbosity=max(verbosity - 1, 0),\n            interactive=False,\n            database=self.connection.alias)\n\n        # 如果换存策略是基于数据库的, 就创建数据库缓存\n        from django.core.cache import get_cache\n        from django.core.cache.backends.db import BaseDatabaseCache\n        for cache_alias in settings.CACHES:\n\n            cache = get_cache(cache_alias)\n\n            if isinstance(cache, BaseDatabaseCache):\n                call_command('createcachetable', cache._table,\n                             database=self.connection.alias)\n\n        # Get a cursor (even though we don't need one yet). This has\n        # the side effect of initializing the test database.\n        self.connection.cursor() # Create a cursor on which queries may be performed.\n\n        return test_database_name\n\n    def _get_test_db_name(self):\n        \"\"\"\n        Internal implementation - returns the name of the test DB that will be\n        created. Only useful when called from create_test_db() and\n        _create_test_db() and when no external munging is done with the 'NAME'\n        or 'TEST_NAME' settings.\n        \"\"\"\n        if self.connection.settings_dict['TEST_NAME']:\n            return self.connection.settings_dict['TEST_NAME']\n        return TEST_DATABASE_PREFIX + self.connection.settings_dict['NAME']\n\n    def _create_test_db(self, verbosity, autoclobber):\n        \"\"\"\n        Internal implementation - creates the test db tables.\n        \"\"\"\n        suffix = self.sql_table_creation_suffix()\n\n        # 在 create_test_db() 已经调用了一次, 在调用一次浪费???\n        test_database_name = self._get_test_db_name()\n\n        qn = self.connection.ops.quote_name\n\n        # Create the test database and connect to it. We need to autocommit\n        # if the database supports it because PostgreSQL doesn't allow\n        # CREATE/DROP DATABASE statements within transactions.\n        cursor = self.connection.cursor()\n\n        self._prepare_for_test_db_ddl()\n        try:\n            cursor.execute(\n                \"CREATE DATABASE %s %s\" % (qn(test_database_name), suffix))\n        except Exception as e:\n            sys.stderr.write(\n                \"Got an error creating the test database: %s\\n\" % e)\n            if not autoclobber:\n                confirm = input(\n                    \"Type 'yes' if you would like to try deleting the test \"\n                    \"database '%s', or 'no' to cancel: \" % test_database_name)\n            if autoclobber or confirm == 'yes':\n                try:\n                    if verbosity >= 1:\n                        print(\"Destroying old test database '%s'...\"\n                              % self.connection.alias)\n                    cursor.execute(\n                        \"DROP DATABASE %s\" % qn(test_database_name))\n                    cursor.execute(\n                        \"CREATE DATABASE %s %s\" % (qn(test_database_name),\n                                                   suffix))\n                except Exception as e:\n                    sys.stderr.write(\n                        \"Got an error recreating the test database: %s\\n\" % e)\n                    sys.exit(2)\n            else:\n                print(\"Tests cancelled.\")\n                sys.exit(1)\n\n        \"\"\"\n        补充知识:\n        python中try/except/else/finally语句的完整格式如下所示：\n        try:\n             Normal execution block\n        except A:\n             Exception A handle\n        except B:\n             Exception B handle\n        except:\n             Other exception handle\n        else:\n             if no exception,get here\n        finally:\n             print(\"finally\")\n        \"\"\"\n\n        return test_database_name\n\n    def destroy_test_db(self, old_database_name, verbosity=1):\n        \"\"\"\n        Destroy a test database, prompting the user for confirmation if the\n        database already exists.\n        \"\"\"\n        self.connection.close()\n        test_database_name = self.connection.settings_dict['NAME']\n        if verbosity >= 1:\n            test_db_repr = ''\n            if verbosity >= 2:\n                test_db_repr = \" ('%s')\" % test_database_name\n            print(\"Destroying test database for alias '%s'%s...\" % (\n                self.connection.alias, test_db_repr))\n\n        # Temporarily use a new connection and a copy of the settings dict.\n        # This prevents the production database from being exposed to potential\n        # child threads while (or after) the test database is destroyed.\n        # Refs #10868 and #17786.\n        settings_dict = self.connection.settings_dict.copy()\n        settings_dict['NAME'] = old_database_name\n        backend = load_backend(settings_dict['ENGINE'])\n        new_connection = backend.DatabaseWrapper(\n                             settings_dict,\n                             alias='__destroy_test_db__',\n                             allow_thread_sharing=False)\n        new_connection.creation._destroy_test_db(test_database_name, verbosity)\n\n    def _destroy_test_db(self, test_database_name, verbosity):\n        \"\"\"\n        Internal implementation - remove the test db tables.\n        \"\"\"\n        # Remove the test database to clean up after\n        # ourselves. Connect to the previous database (not the test database)\n        # to do so, because it's not allowed to delete a database while being\n        # connected to it.\n        cursor = self.connection.cursor()\n        self._prepare_for_test_db_ddl()\n        # Wait to avoid \"database is being accessed by other users\" errors.\n        time.sleep(1)\n        cursor.execute(\"DROP DATABASE %s\"\n                       % self.connection.ops.quote_name(test_database_name))\n        self.connection.close()\n\n    def set_autocommit(self):\n        \"\"\"\n        Make sure a connection is in autocommit mode. - Deprecated, not used\n        anymore by Django code. Kept for compatibility with user code that\n        might use it.\n        \"\"\"\n        pass\n\n    def _prepare_for_test_db_ddl(self):\n        \"\"\"\n        内部实现, 在test 被删除之前的工作\n\n        Internal implementation - Hook for tasks that should be performed\n        before the ``CREATE DATABASE``/``DROP DATABASE`` clauses used by\n        testing code to create/ destroy test databases. Needed e.g. in\n        PostgreSQL to rollback and close any active transaction.\n        \"\"\"\n        pass\n\n    def sql_table_creation_suffix(self):\n        \"\"\"\n        创建 test 数据库的后缀语句\\\n\n        SQL to append to the end of the test table creation statements.\n        \"\"\"\n        return ''\n\n    def test_db_signature(self):\n        \"\"\"\n        返回标识数据库的签名\n\n        Returns a tuple with elements of self.connection.settings_dict (a\n        DATABASES setting value) that uniquely identify a database\n        accordingly to the RDBMS particularities.\n        \"\"\"\n        settings_dict = self.connection.settings_dict\n        # 如此签名\n        return (\n            settings_dict['HOST'],\n            settings_dict['PORT'],\n            settings_dict['ENGINE'],\n            settings_dict['NAME']\n        )\n"
  },
  {
    "path": "Django-1.5.1/django/db/backends/dummy/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/db/backends/dummy/base.py",
    "content": "\"\"\"\nDummy database backend for Django.\n\nDjango uses this if the database ENGINE setting is empty (None or empty string).\n\nEach of these API functions, except connection.close(), raises\nImproperlyConfigured.\n\"\"\"\n\nfrom django.core.exceptions import ImproperlyConfigured\nfrom django.db.backends import *\nfrom django.db.backends.creation import BaseDatabaseCreation\n\ndef complain(*args, **kwargs):\n    raise ImproperlyConfigured(\"settings.DATABASES is improperly configured. \"\n                               \"Please supply the ENGINE value. Check \"\n                               \"settings documentation for more details.\")\n\ndef ignore(*args, **kwargs):\n    pass\n\nclass DatabaseError(Exception):\n    pass\n\nclass IntegrityError(DatabaseError):\n    pass\n\nclass DatabaseOperations(BaseDatabaseOperations):\n    quote_name = complain\n\nclass DatabaseClient(BaseDatabaseClient):\n    runshell = complain\n\nclass DatabaseCreation(BaseDatabaseCreation):\n    create_test_db = ignore\n    destroy_test_db = ignore\n\nclass DatabaseIntrospection(BaseDatabaseIntrospection):\n    get_table_list = complain\n    get_table_description = complain\n    get_relations = complain\n    get_indexes = complain\n    get_key_columns = complain\n\nclass DatabaseWrapper(BaseDatabaseWrapper):\n    operators = {}\n    # Override the base class implementations with null\n    # implementations. Anything that tries to actually\n    # do something raises complain; anything that tries\n    # to rollback or undo something raises ignore.\n    _commit = complain\n    _rollback = ignore\n    enter_transaction_management = complain\n    leave_transaction_management = ignore\n    set_dirty = complain\n    set_clean = complain\n    commit_unless_managed = complain\n    rollback_unless_managed = ignore\n    savepoint = ignore\n    savepoint_commit = complain\n    savepoint_rollback = ignore\n    close = ignore\n    cursor = complain\n\n    def __init__(self, *args, **kwargs):\n        super(DatabaseWrapper, self).__init__(*args, **kwargs)\n\n        self.features = BaseDatabaseFeatures(self)\n        self.ops = DatabaseOperations(self)\n        self.client = DatabaseClient(self)\n        self.creation = DatabaseCreation(self)\n        self.introspection = DatabaseIntrospection(self)\n        self.validation = BaseDatabaseValidation(self)\n"
  },
  {
    "path": "Django-1.5.1/django/db/backends/mysql/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/db/backends/mysql/base.py",
    "content": "\"\"\"\nMySQL database backend for Django.\n\nRequires MySQLdb: http://sourceforge.net/projects/mysql-python\n\"\"\"\nfrom __future__ import unicode_literals\n\nimport datetime\nimport re\nimport sys\nimport warnings\n\ntry:\n    # django 的 mysql 模块依赖 MySQLdb\n    import MySQLdb as Database\nexcept ImportError as e:\n    from django.core.exceptions import ImproperlyConfigured\n    raise ImproperlyConfigured(\"Error loading MySQLdb module: %s\" % e)\n\nfrom django.utils.functional import cached_property\n\n# We want version (1, 2, 1, 'final', 2) or later. We can't just use\n# lexicographic ordering in this check because then (1, 2, 1, 'gamma')\n# inadvertently passes the version test.\n\n# 版本\nversion = Database.version_info\n\nif (version < (1, 2, 1) or (version[:3] == (1, 2, 1) and\n        (len(version) < 5 or version[3] != 'final' or version[4] < 2))):\n    from django.core.exceptions import ImproperlyConfigured\n    raise ImproperlyConfigured(\"MySQLdb-1.2.1p2 or newer is required; you have %s\" % Database.__version__)\n\n# 依赖\nfrom MySQLdb.converters import conversions, Thing2Literal\nfrom MySQLdb.constants import FIELD_TYPE, CLIENT\n\nfrom django.db import utils\nfrom django.db.backends import *\nfrom django.db.backends.signals import connection_created\nfrom django.db.backends.mysql.client import DatabaseClient\nfrom django.db.backends.mysql.creation import DatabaseCreation\nfrom django.db.backends.mysql.introspection import DatabaseIntrospection\nfrom django.db.backends.mysql.validation import DatabaseValidation\nfrom django.utils.encoding import force_str\nfrom django.utils.functional import cached_property\nfrom django.utils.safestring import SafeBytes, SafeText\nfrom django.utils import six\nfrom django.utils import timezone\n\n# Raise exceptions for database warnings if DEBUG is on\nfrom django.conf import settings\nif settings.DEBUG:\n    warnings.filterwarnings(\"error\", category=Database.Warning)\n\n# 都由 MySQLdb 内部实现\nDatabaseError = Database.DatabaseError\nIntegrityError = Database.IntegrityError\n\n# It's impossible to import datetime_or_None directly from MySQLdb.times\nparse_datetime = conversions[FIELD_TYPE.DATETIME]\n\ndef parse_datetime_with_timezone_support(value):\n    dt = parse_datetime(value)\n    # Confirm that dt is naive before overwriting its tzinfo.\n    if dt is not None and settings.USE_TZ and timezone.is_naive(dt):\n        dt = dt.replace(tzinfo=timezone.utc)\n    return dt\n\ndef adapt_datetime_with_timezone_support(value, conv):\n    # Equivalent to DateTimeField.get_db_prep_value. Used only by raw SQL.\n    if settings.USE_TZ:\n        if timezone.is_naive(value):\n            warnings.warn(\"MySQL received a naive datetime (%s)\"\n                          \" while time zone support is active.\" % value,\n                          RuntimeWarning)\n            default_timezone = timezone.get_default_timezone()\n            value = timezone.make_aware(value, default_timezone)\n        value = value.astimezone(timezone.utc).replace(tzinfo=None)\n    return Thing2Literal(value.strftime(\"%Y-%m-%d %H:%M:%S\"), conv)\n\n# MySQLdb-1.2.1 returns TIME columns as timedelta -- they are more like\n# timedelta in terms of actual behavior as they are signed and include days --\n# and Django expects time, so we still need to override that. We also need to\n# add special handling for SafeText and SafeBytes as MySQLdb's type\n# checking is too tight to catch those (see Django ticket #6052).\n# Finally, MySQLdb always returns naive datetime objects. However, when\n# timezone support is active, Django expects timezone-aware datetime objects.\ndjango_conversions = conversions.copy()\ndjango_conversions.update({\n    FIELD_TYPE.TIME: util.typecast_time,\n    FIELD_TYPE.DECIMAL: util.typecast_decimal,\n    FIELD_TYPE.NEWDECIMAL: util.typecast_decimal,\n    FIELD_TYPE.DATETIME: parse_datetime_with_timezone_support,\n    datetime.datetime: adapt_datetime_with_timezone_support,\n})\n\n# This should match the numerical portion of the version numbers (we can treat\n# versions like 5.0.24 and 5.0.24a as the same). Based on the list of version\n# at http://dev.mysql.com/doc/refman/4.1/en/news.html and\n# http://dev.mysql.com/doc/refman/5.0/en/news.html .\nserver_version_re = re.compile(r'(\\d{1,2})\\.(\\d{1,2})\\.(\\d{1,2})')\n\n# MySQLdb-1.2.1 and newer automatically makes use of SHOW WARNINGS on\n# MySQL-4.1 and newer, so the MysqlDebugWrapper is unnecessary. Since the\n# point is to raise Warnings as exceptions, this can be done with the Python\n# warning module, and this is setup when the connection is created, and the\n# standard util.CursorDebugWrapper can be used. Also, using sql_mode\n# TRADITIONAL will automatically cause most warnings to be treated as errors.\n\n# tips: 好似 DatabaseFeatures,DatabaseOperations,DatabaseWrapper 都不在这里, 这些类在 django.db.backends.__init__.py 中定义\nclass CursorWrapper(object):\n    关于什么是游标: 游标（cursor）是系统为用户开设的一个数据缓冲区，存放SQL语句的执行结果。每个游标区都有一个名字。用户可以用SQL语句逐一从游标中获取记录，并赋给主变量，交由主语言进一步处理。\n\n    \"\"\"\n    对 MySQLdb 中普通 cursor 类的包装, 用以捕捉特俗的异常\n\n    A thin wrapper around MySQLdb's normal cursor class so that we can catch\n    particular exception instances and reraise them with the right types.\n\n    be stuck to 受困于\n\n    Implemented as a wrapper, rather than a subclass, so that we aren't stuck\n    to the particular underlying representation 底层表述 returned by Connection.cursor().\n    \"\"\"\n    codes_for_integrityerror = (1048,)\n\n    def __init__(self, cursor):\n        self.cursor = cursor\n\n    def execute(self, query, args=None):\n        try:\n            return self.cursor.execute(query, args)\n\n        # 内部错误的类型一些在 MySQLdb 中定义, 一些在 django.utils 中定义\n        except Database.IntegrityError as e:\n            six.reraise(utils.IntegrityError, utils.IntegrityError(*tuple(e.args)), sys.exc_info()[2])\n\n        except Database.OperationalError as e:\n            # Map some error codes to IntegrityError, since they seem to be\n            # misclassified and Django would prefer the more logical place.\n            if e[0] in self.codes_for_integrityerror:\n\n                IntegrityError 和 DatabaseError 有什么不同?\n                six.reraise(utils.IntegrityError, utils.IntegrityError(*tuple(e.args)), sys.exc_info()[2])\n\n            six.reraise(utils.DatabaseError, utils.DatabaseError(*tuple(e.args)), sys.exc_info()[2])\n\n        except Database.DatabaseError as e:\n            six.reraise(utils.DatabaseError, utils.DatabaseError(*tuple(e.args)), sys.exc_info()[2])\n\n    def executemany(self, query, args):\n        try:\n            return self.cursor.executemany(query, args)\n\n        except Database.IntegrityError as e:\n            six.reraise(utils.IntegrityError, utils.IntegrityError(*tuple(e.args)), sys.exc_info()[2])\n\n        except Database.OperationalError as e:\n            # Map some error codes to IntegrityError, since they seem to be\n            # misclassified and Django would prefer the more logical place.\n            if e[0] in self.codes_for_integrityerror:\n                six.reraise(utils.IntegrityError, utils.IntegrityError(*tuple(e.args)), sys.exc_info()[2])\n            six.reraise(utils.DatabaseError, utils.DatabaseError(*tuple(e.args)), sys.exc_info()[2])\n        except Database.DatabaseError as e:\n            six.reraise(utils.DatabaseError, utils.DatabaseError(*tuple(e.args)), sys.exc_info()[2])\n\n    def __getattr__(self, attr):\n        if attr in self.__dict__:\n            return self.__dict__[attr]\n        else:\n            return getattr(self.cursor, attr)\n\n    def __iter__(self):\n        return iter(self.cursor)\n\nclass DatabaseFeatures(BaseDatabaseFeatures):\n    empty_fetchmany_value = ()\n    update_can_self_select = False\n    allows_group_by_pk = True\n    related_fields_match_type = True\n    allow_sliced_subqueries = False\n    has_bulk_insert = True\n    has_select_for_update = True\n    has_select_for_update_nowait = False\n    supports_forward_references = False\n    supports_long_model_names = False\n    supports_microsecond_precision = False\n    supports_regex_backreferencing = False\n    supports_date_lookup_using_string = False\n    supports_timezones = False\n    requires_explicit_null_ordering_when_grouping = True\n    allows_primary_key_0 = False\n    uses_savepoints = True\n\n    def __init__(self, connection):\n        super(DatabaseFeatures, self).__init__(connection)\n\n    @cached_property\n    内部测试函数\n    def _mysql_storage_engine(self):\n        \"Internal method used in Django tests. Don't rely on this from your code\"\n        cursor = self.connection.cursor()\n        cursor.execute('CREATE TABLE INTROSPECT_TEST (X INT)')\n        # This command is MySQL specific; the second column\n        # will tell you the default table type of the created\n        # table. Since all Django's test tables will have the same\n        # table type, that's enough to evaluate the feature.\n        cursor.execute(\"SHOW TABLE STATUS WHERE Name='INTROSPECT_TEST'\")\n        result = cursor.fetchone()\n        cursor.execute('DROP TABLE INTROSPECT_TEST')\n        return result[1]\n\n    @cached_property\n    def can_introspect_foreign_keys(self):\n        \"Confirm support for introspected foreign keys\"\n        return self._mysql_storage_engine != 'MyISAM'\n\nclass DatabaseOperations(BaseDatabaseOperations):\n    compiler_module = \"django.db.backends.mysql.compiler\"\n\n    def date_extract_sql(self, lookup_type, field_name):\n        # http://dev.mysql.com/doc/mysql/en/date-and-time-functions.html\n        if lookup_type == 'week_day':\n            # DAYOFWEEK() returns an integer, 1-7, Sunday=1.\n            # Note: WEEKDAY() returns 0-6, Monday=0.\n            return \"DAYOFWEEK(%s)\" % field_name\n        else:\n            return \"EXTRACT(%s FROM %s)\" % (lookup_type.upper(), field_name)\n\n    def date_trunc_sql(self, lookup_type, field_name):\n        fields = ['year', 'month', 'day', 'hour', 'minute', 'second']\n        format = ('%%Y-', '%%m', '-%%d', ' %%H:', '%%i', ':%%s') # Use double percents to escape.因为本身有一个 %,所以需要 double\n\n        format_def = ('0000-', '01', '-01', ' 00:', '00', ':00')\n        try:\n            i = fields.index(lookup_type) + 1\n        except ValueError:\n            sql = field_name\n        else:\n            format_str = ''.join([f for f in format[:i]] + [f for f in format_def[i:]])\n            sql = \"CAST(DATE_FORMAT(%s, '%s') AS DATETIME)\" % (field_name, format_str)\n        return sql\n\n    def date_interval_sql(self, sql, connector, timedelta):\n        return \"(%s %s INTERVAL '%d 0:0:%d:%d' DAY_MICROSECOND)\" % (sql, connector,\n                timedelta.days, timedelta.seconds, timedelta.microseconds)\n\n    # 删除外键\n    def drop_foreignkey_sql(self):\n        return \"DROP FOREIGN KEY\"\n\n    def force_no_ordering(self):\n        \"\"\"\n        \"ORDER BY NULL\" prevents MySQL from implicitly ordering by grouped\n        columns. If no ordering would otherwise be applied, we don't want any\n        implicit sorting going on.\n        \"\"\"\n        return [\"NULL\"]\n\n    # 全文索引\n    def fulltext_search_sql(self, field_name):\n        return 'MATCH (%s) AGAINST (%%s IN BOOLEAN MODE)' % field_name\n\n    def last_executed_query(self, cursor, sql, params):\n        MySQLdb 有未公开文档的 _last_executed 属性, 存储了以已经执行的 sql\n        # With MySQLdb, cursor objects have an (undocumented) \"_last_executed\"\n        # attribute where the exact query sent to the database is saved.\n        # See MySQLdb/cursors.py in the source distribution.\n        return cursor._last_executed.decode('utf-8')\n\n    最大的数\n    def no_limit_value(self):\n        # 2**64 - 1, as recommended by the MySQL documentation\n        return 18446744073709551615\n\n    ''\n    def quote_name(self, name):\n        if name.startswith(\"`\") and name.endswith(\"`\"):\n            return name # Quoting once is enough.\n        return \"`%s`\" % name\n\n    任意值函数\n    def random_function_sql(self):\n        return 'RAND()'\n\n    def sql_flush(self, style, tables, sequences):\n        https://docs.djangoproject.com/en/dev/ref/django-admin/#django-admin-flush\n        MySQL 有 TRUNCATE() 函数\n        # NB: The generated SQL below is specific to MySQL\n        # 'TRUNCATE x;', 'TRUNCATE y;', 'TRUNCATE z;'... style SQL statements\n        # to clear all tables of all data\n        if tables:\n            sql = ['SET FOREIGN_KEY_CHECKS = 0;']\n\n            for table in tables:\n                sql.append('%s %s;' % (style.SQL_KEYWORD('TRUNCATE'), style.SQL_FIELD(self.quote_name(table))))\n\n            sql.append('SET FOREIGN_KEY_CHECKS = 1;')\n            sql.extend(self.sequence_reset_by_name_sql(style, sequences))\n            return sql\n        else:\n            return []\n\n    def sequence_reset_by_name_sql(self, style, sequences):\n        # Truncate already resets the AUTO_INCREMENT field from\n        # MySQL version 5.0.13 onwards. Refs #16961.\n        if self.connection.mysql_version < (5, 0, 13):\n            return [\"%s %s %s %s %s;\" % \\\n                    (style.SQL_KEYWORD('ALTER'),\n                    style.SQL_KEYWORD('TABLE'),\n                    style.SQL_TABLE(self.quote_name(sequence['table'])),\n                    style.SQL_KEYWORD('AUTO_INCREMENT'),\n                    style.SQL_FIELD('= 1'),\n                    ) for sequence in sequences]\n        else:\n            return []\n\n    # 自动增长主键检测, MySQL 不允许出现 0\n    def validate_autopk_value(self, value):\n        # MySQLism: zero in AUTO_INCREMENT field does not work. Refs #17653.\n        if value == 0:\n            raise ValueError('The database backend does not accept 0 as a '\n                             'value for AutoField.')\n        return value\n\n    def value_to_db_datetime(self, value):\n        if value is None:\n            return None\n\n        不懂, 什么是 tz-aware\n        # MySQL doesn't support tz-aware datetimes 不支持 tz-aware 类型的时间\n        if timezone.is_aware(value):\n            if settings.USE_TZ:\n                value = value.astimezone(timezone.utc).replace(tzinfo=None)\n            else:\n                raise ValueError(\"MySQL backend does not support timezone-aware datetimes when USE_TZ is False.\")\n\n        # MySQL doesn't support microseconds 不支持微秒\n        return six.text_type(value.replace(microsecond=0))\n\n    def value_to_db_time(self, value):\n        if value is None:\n            return None\n\n        # MySQL doesn't support tz-aware times\n        if timezone.is_aware(value):\n            raise ValueError(\"MySQL backend does not support timezone-aware times.\")\n\n        # MySQL doesn't support microseconds\n        return six.text_type(value.replace(microsecond=0))\n\n    def year_lookup_bounds(self, value):\n        # Again, no microseconds 不支持微秒\n        first = '%s-01-01 00:00:00'\n        second = '%s-12-31 23:59:59.99'\n        return [first % value, second % value]\n\n    最长的表名, 字段名长度和表名长度限制都是64\n    def max_name_length(self):\n        return 64\n\n    批量插入\n    def bulk_insert_sql(self, fields, num_values):\n        items_sql = \"(%s)\" % \", \".join([\"%s\"] * len(fields))\n        return \"VALUES \" + \", \".join([items_sql] * num_values)\n\n    # savepoint 就是为每一步的操作的都设定一个标记, 方便回滚\n    def savepoint_create_sql(self, sid):\n        return \"SAVEPOINT %s\" % sid\n\n    def savepoint_commit_sql(self, sid):\n        return \"RELEASE SAVEPOINT %s\" % sid\n\n    回滚到....\n    def savepoint_rollback_sql(self, sid):\n        return \"ROLLBACK TO SAVEPOINT %s\" % sid\n\nclass DatabaseWrapper(BaseDatabaseWrapper):\n    vendor = 'mysql'\n\n    # 操作\n    operators = {\n        'exact': '= %s',\n        'iexact': 'LIKE %s',\n        'contains': 'LIKE BINARY %s',\n        'icontains': 'LIKE %s',\n        'regex': 'REGEXP BINARY %s',\n        'iregex': 'REGEXP %s',\n        'gt': '> %s',\n        'gte': '>= %s',\n        'lt': '< %s',\n        'lte': '<= %s',\n        'startswith': 'LIKE BINARY %s',\n        'endswith': 'LIKE BINARY %s',\n        'istartswith': 'LIKE %s',\n        'iendswith': 'LIKE %s',\n    }\n\n    def __init__(self, *args, **kwargs):\n        super(DatabaseWrapper, self).__init__(*args, **kwargs)\n\n        self.server_version = None\n\n        self.features = DatabaseFeatures(self)\n        self.ops = DatabaseOperations(self)\n        self.client = DatabaseClient(self)\n        self.creation = DatabaseCreation(self) #数据库创建器, from django.db.backends.mysql.creation import DatabaseCreation\n        self.introspection = DatabaseIntrospection(self)\n\n        self.validation = DatabaseValidation(self)\n\n    def _valid_connection(self):\n        if self.connection is not None:\n            try:\n                self.connection.ping()\n                return True\n            except DatabaseError:\n                self.connection.close()\n                self.connection = None\n        return False\n\n    def _cursor(self):\n        new_connection = False\n        if not self._valid_connection():\n            new_connection = True\n            kwargs = {\n                'conv': django_conversions,\n                'charset': 'utf8',\n                'use_unicode': True,\n            }\n\n            settings_dict = self.settings_dict\n\n            if settings_dict['USER']:\n                kwargs['user'] = settings_dict['USER']\n\n            if settings_dict['NAME']:\n                kwargs['db'] = settings_dict['NAME']\n\n            if settings_dict['PASSWORD']:\n                kwargs['passwd'] = force_str(settings_dict['PASSWORD'])\n\n            if settings_dict['HOST'].startswith('/'):\n                kwargs['unix_socket'] = settings_dict['HOST']\n\n            elif settings_dict['HOST']:\n                kwargs['host'] = settings_dict['HOST']\n\n            if settings_dict['PORT']:\n                kwargs['port'] = int(settings_dict['PORT'])\n\n            # We need the number of potentially affected rows after an\n            # \"UPDATE\", not the number of changed rows.\n            kwargs['client_flag'] = CLIENT.FOUND_ROWS\n            kwargs.update(settings_dict['OPTIONS'])\n\n            # 此处设置 connection, 已经有 MySQL 内部实现\n            self.connection = Database.connect(**kwargs)\n\n            self.connection.encoders[SafeText] = self.connection.encoders[six.text_type]\n\n            self.connection.encoders[SafeBytes] = self.connection.encoders[bytes]\n\n            connection_created.send(sender=self.__class__, connection=self)\n\n        cursor = self.connection.cursor() 获取游标\n\n        if new_connection:\n            \"\"\"\n            另外还可以用\"WHERE auto_col IS NULL\"条件选择出新插入的行，即在INSERT后马上用:\n            SELECT * FROM t WHERE a IS NULL;\n            选 择出来的将是新插入的行，而非真正的满足\"a IS NULL\"条件的行。但你要是再执行一次上述查询，则返回的又变成了真正的满足\"a IS NULL\"条件的行，由于a是主键，因此肯定会返回空集。这看上去很诡异是吗，不过MySQL也不想这么干，但ODBC标准里曾有这种用法，为了支持 ODBC，MySQL也是没办法啊。不过可以将SQL_AUTO_IS_NULL设为0来禁止这一用法。\n            \"\"\"\n            # SQL_AUTO_IS_NULL in MySQL controls whether an AUTO_INCREMENT column\n            # on a recently-inserted row will return when the field is tested for\n            # NULL.  Disabling this value brings this aspect of MySQL in line with\n            # SQL standards.\n            cursor.execute('SET SQL_AUTO_IS_NULL = 0')\n        return CursorWrapper(cursor)\n\n    def _rollback(self):\n        try:\n            BaseDatabaseWrapper._rollback(self)\n        except Database.NotSupportedError:\n            pass\n\n    @cached_property\n    def mysql_version(self):\n        if not self.server_version:\n            new_connection = False\n            if not self._valid_connection():\n                # Ensure we have a connection with the DB by using a temporary\n                # cursor\n                new_connection = True\n                self.cursor().close()\n            server_info = self.connection.get_server_info()\n            if new_connection:\n                # Make sure we close the connection\n                self.connection.close()\n                self.connection = None\n            m = server_version_re.match(server_info)\n            if not m:\n                raise Exception('Unable to determine MySQL version from version string %r' % server_info)\n            self.server_version = tuple([int(x) for x in m.groups()])\n        return self.server_version\n\n    关闭外键约束\n    def disable_constraint_checking(self):\n        \"\"\"\n        Disables foreign key checks, primarily for use in adding rows with forward references. Always returns True,\n        to indicate constraint checks need to be re-enabled.\n\n        MySQL还原数据库，禁用和启用外键约束的方法(FOREIGN_KEY_CHECKS)\n        有时还原数据库时，因为表有约束导致40014错误，可以通过关闭外键约束，还原成功时再启用.\n\n        禁用\n        SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0\n\n        启用\n        SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS\n        \"\"\"\n        self.cursor().execute('SET foreign_key_checks=0')\n        return True\n\n    def enable_constraint_checking(self):\n        \"\"\"\n        Re-enable foreign key checks after they have been disabled.\n        \"\"\"\n        self.cursor().execute('SET foreign_key_checks=1')\n\n    def check_constraints(self, table_names=None):\n        \"\"\"\n        用在 disable_constraint_checking 和 enable_constraint_checking 之间, 为的是看是否在外键约束关闭期间是否有不合法的数据进入.\n\n        Checks each table name in `table_names` for rows with invalid foreign key references. This method is\n        intended to be used in conjunction with 连接 `disable_constraint_checking()` and `enable_constraint_checking()`, to\n        determine if rows with invalid references were entered while constraint checks were off.\n\n        Raises an IntegrityError on the first invalid foreign key reference encountered (if any) and provides\n        detailed information about the invalid reference in the error message.\n\n        Backends can override this method if they can more directly apply constraint checking (e.g. via \"SET CONSTRAINTS\n        ALL IMMEDIATE\")\n        \"\"\"\n        cursor = self.cursor()\n        if table_names is None:\n            table_names = self.introspection.table_names(cursor)\n\n        for table_name in table_names:\n            primary_key_column_name = self.introspection.get_primary_key_column(cursor, table_name)\n\n            if not primary_key_column_name: 没有主键\n                continue\n\n            key_columns = self.introspection.get_key_columns(cursor, table_name)\n\n            for column_name, referenced_table_name, referenced_column_name in key_columns:\n\n                # 检测外键不丢失\n                cursor.execute(\"\"\"\n                    SELECT REFERRING.`%s`, REFERRING.`%s` FROM `%s` as REFERRING\n                    LEFT JOIN `%s` as REFERRED\n                    ON (REFERRING.`%s` = REFERRED.`%s`)\n                    WHERE REFERRING.`%s` IS NOT NULL AND REFERRED.`%s` IS NULL\"\"\"\n                    % (primary_key_column_name, column_name, table_name, referenced_table_name,\n                    column_name, referenced_column_name, column_name, referenced_column_name))\n\n                # 出现错误, 需要报错. 一般是外键丢失, 或者主键无效\n                for bad_row in cursor.fetchall():\n                    raise utils.IntegrityError(\"The row in table '%s' with primary key '%s' has an invalid \"\n                        \"foreign key: %s.%s contains a value '%s' that does not have a corresponding value in %s.%s.\"\n                        % (table_name, bad_row[0],\n                        table_name, column_name, bad_row[1],\n                        referenced_table_name, referenced_column_name))\n"
  },
  {
    "path": "Django-1.5.1/django/db/backends/mysql/client.py",
    "content": "import os\nimport sys\n\nfrom django.db.backends import BaseDatabaseClient\n\nclass DatabaseClient(BaseDatabaseClient):\n    executable_name = 'mysql'\n\n    def runshell(self):\n        # 可能是 self.connection 内部有默认的设置\n        settings_dict = self.connection.settings_dict\n        args = [self.executable_name]\n\n        db = settings_dict['OPTIONS'].get('db', settings_dict['NAME'])\n        user = settings_dict['OPTIONS'].get('user', settings_dict['USER'])\n        passwd = settings_dict['OPTIONS'].get('passwd', settings_dict['PASSWORD'])\n        host = settings_dict['OPTIONS'].get('host', settings_dict['HOST'])\n        port = settings_dict['OPTIONS'].get('port', settings_dict['PORT'])\n        defaults_file = settings_dict['OPTIONS'].get('read_default_file')\n        # Seems to be no good way to set sql_mode with CLI.\n\n        if defaults_file:\n            args += [\"--defaults-file=%s\" % defaults_file]\n        if user:\n            args += [\"--user=%s\" % user]\n        if passwd:\n            args += [\"--password=%s\" % passwd]\n        if host:\n            if '/' in host:\n                args += [\"--socket=%s\" % host]\n            else:\n                args += [\"--host=%s\" % host]\n        if port:\n            args += [\"--port=%s\" % port]\n        if db:\n            args += [db]\n\n        if os.name == 'nt':\n            sys.exit(os.system(\" \".join(args)))\n        else:\n            os.execvp(self.executable_name, args)\n\n"
  },
  {
    "path": "Django-1.5.1/django/db/backends/mysql/compiler.py",
    "content": "try:\n    from itertools import zip_longest\nexcept ImportError:\n    from itertools import izip_longest as zip_longest\n\nfrom django.db.models.sql import compiler\n\n\nclass SQLCompiler(compiler.SQLCompiler):\n    def resolve_columns(self, row, fields=()):\n        values = []\n        index_extra_select = len(self.query.extra_select)\n        for value, field in zip_longest(row[index_extra_select:], fields):\n            if (field and field.get_internal_type() in (\"BooleanField\", \"NullBooleanField\") and\n                value in (0, 1)):\n                value = bool(value)\n            values.append(value)\n        return row[:index_extra_select] + tuple(values)\n\nclass SQLInsertCompiler(compiler.SQLInsertCompiler, SQLCompiler):\n    pass\n\nclass SQLDeleteCompiler(compiler.SQLDeleteCompiler, SQLCompiler):\n    pass\n\nclass SQLUpdateCompiler(compiler.SQLUpdateCompiler, SQLCompiler):\n    pass\n\nclass SQLAggregateCompiler(compiler.SQLAggregateCompiler, SQLCompiler):\n    pass\n\nclass SQLDateCompiler(compiler.SQLDateCompiler, SQLCompiler):\n    pass\n"
  },
  {
    "path": "Django-1.5.1/django/db/backends/mysql/creation.py",
    "content": "from django.db.backends.creation import BaseDatabaseCreation\n\nclass DatabaseCreation(BaseDatabaseCreation):\n    # This dictionary maps Field objects to their associated MySQL column\n    # types, as strings. Column-type strings can contain format strings; they'll\n    # be interpolated against the values of Field.__dict__ before being output.\n    # If a column type is set to None, it won't be included in the output.\n    data_types = {\n        'AutoField':         'integer AUTO_INCREMENT',\n        'BooleanField':      'bool',\n        'CharField':         'varchar(%(max_length)s)',\n        'CommaSeparatedIntegerField': 'varchar(%(max_length)s)',\n        'DateField':         'date',\n        'DateTimeField':     'datetime',\n        'DecimalField':      'numeric(%(max_digits)s, %(decimal_places)s)',\n        'FileField':         'varchar(%(max_length)s)',\n        'FilePathField':     'varchar(%(max_length)s)',\n        'FloatField':        'double precision',\n        'IntegerField':      'integer',\n        'BigIntegerField':   'bigint',\n        'IPAddressField':    'char(15)',\n        'GenericIPAddressField': 'char(39)',\n        'NullBooleanField':  'bool',\n        'OneToOneField':     'integer',\n        'PositiveIntegerField': 'integer UNSIGNED',\n        'PositiveSmallIntegerField': 'smallint UNSIGNED',\n        'SlugField':         'varchar(%(max_length)s)',\n        'SmallIntegerField': 'smallint',\n        'TextField':         'longtext',\n        'TimeField':         'time',\n    }\n\n    def sql_table_creation_suffix(self):\n        suffix = []\n        if self.connection.settings_dict['TEST_CHARSET']:\n            suffix.append('CHARACTER SET %s' % self.connection.settings_dict['TEST_CHARSET'])\n        if self.connection.settings_dict['TEST_COLLATION']:\n            suffix.append('COLLATE %s' % self.connection.settings_dict['TEST_COLLATION'])\n        return ' '.join(suffix)\n\n    def sql_for_inline_foreign_key_references(self, field, known_models, style):\n        \"All inline references are pending under MySQL\"\n        return [], True\n\n    def sql_for_inline_many_to_many_references(self, model, field, style):\n        from django.db import models\n        opts = model._meta\n        qn = self.connection.ops.quote_name\n\n        table_output = [\n            '    %s %s %s,' %\n                (style.SQL_FIELD(qn(field.m2m_column_name())),\n                style.SQL_COLTYPE(models.ForeignKey(model).db_type(connection=self.connection)),\n                style.SQL_KEYWORD('NOT NULL')),\n            '    %s %s %s,' %\n            (style.SQL_FIELD(qn(field.m2m_reverse_name())),\n            style.SQL_COLTYPE(models.ForeignKey(field.rel.to).db_type(connection=self.connection)),\n            style.SQL_KEYWORD('NOT NULL'))\n        ]\n        deferred = [\n            (field.m2m_db_table(), field.m2m_column_name(), opts.db_table,\n                opts.pk.column),\n            (field.m2m_db_table(), field.m2m_reverse_name(),\n                field.rel.to._meta.db_table, field.rel.to._meta.pk.column)\n            ]\n        return table_output, deferred\n"
  },
  {
    "path": "Django-1.5.1/django/db/backends/mysql/introspection.py",
    "content": "import re\nfrom .base import FIELD_TYPE\n\nfrom django.db.backends import BaseDatabaseIntrospection\n\n\nforeign_key_re = re.compile(r\"\\sCONSTRAINT `[^`]*` FOREIGN KEY \\(`([^`]*)`\\) REFERENCES `([^`]*)` \\(`([^`]*)`\\)\")\n\nclass DatabaseIntrospection(BaseDatabaseIntrospection):\n    一一对应起来\n    data_types_reverse = {\n        FIELD_TYPE.BLOB: 'TextField',\n        FIELD_TYPE.CHAR: 'CharField',\n        FIELD_TYPE.DECIMAL: 'DecimalField',\n        FIELD_TYPE.NEWDECIMAL: 'DecimalField',\n        FIELD_TYPE.DATE: 'DateField',\n        FIELD_TYPE.DATETIME: 'DateTimeField',\n        FIELD_TYPE.DOUBLE: 'FloatField',\n        FIELD_TYPE.FLOAT: 'FloatField',\n        FIELD_TYPE.INT24: 'IntegerField',\n        FIELD_TYPE.LONG: 'IntegerField',\n        FIELD_TYPE.LONGLONG: 'BigIntegerField',\n        FIELD_TYPE.SHORT: 'IntegerField',\n        FIELD_TYPE.STRING: 'CharField',\n        FIELD_TYPE.TIMESTAMP: 'DateTimeField',\n        FIELD_TYPE.TINY: 'IntegerField',\n        FIELD_TYPE.TINY_BLOB: 'TextField',\n        FIELD_TYPE.MEDIUM_BLOB: 'TextField',\n        FIELD_TYPE.LONG_BLOB: 'TextField',\n        FIELD_TYPE.VAR_STRING: 'CharField',\n    }\n\n    def get_table_list(self, cursor):\n        \"Returns a list of table names in the current database.\"\n        cursor.execute(\"SHOW TABLES\")\n        return [row[0] for row in cursor.fetchall()]\n\n    def get_table_description(self, cursor, table_name):\n        \"\"\"\n        Returns a description of the table, with the DB-API cursor.description interface.\"\n        \"\"\"\n        # varchar length returned by cursor.description is an internal length,\n        # not visible length (#5725), use information_schema database to fix this\n        cursor.execute(\"\"\"\n            SELECT column_name, character_maximum_length FROM information_schema.columns\n            WHERE table_name = %s AND table_schema = DATABASE()\n                AND character_maximum_length IS NOT NULL\"\"\", [table_name])\n        length_map = dict(cursor.fetchall())\n\n        cursor.execute(\"SELECT * FROM %s LIMIT 1\" % self.connection.ops.quote_name(table_name))\n        return [line[:3] + (length_map.get(line[0], line[3]),) + line[4:]\n            for line in cursor.description]\n\n    def _name_to_index(self, cursor, table_name):\n        \"\"\"\n        Returns a dictionary of {field_name: field_index} for the given table.\n        Indexes are 0-based.\n        \"\"\"\n        return dict([(d[0], i) for i, d in enumerate(self.get_table_description(cursor, table_name))])\n\n    def get_relations(self, cursor, table_name):\n        \"\"\"\n        Returns a dictionary of {field_index: (field_index_other_table, other_table)}\n        representing all relationships to the given table. Indexes are 0-based.\n        \"\"\"\n        my_field_dict = self._name_to_index(cursor, table_name)\n        constraints = self.get_key_columns(cursor, table_name)\n        relations = {}\n        for my_fieldname, other_table, other_field in constraints:\n            other_field_index = self._name_to_index(cursor, other_table)[other_field]\n            my_field_index = my_field_dict[my_fieldname]\n            relations[my_field_index] = (other_field_index, other_table)\n        return relations\n\n    def get_key_columns(self, cursor, table_name):\n        \"\"\"\n        Returns a list of (column_name, referenced_table_name, referenced_column_name) for all\n        key columns in given table.\n        \"\"\"\n        key_columns = []\n        cursor.execute(\"\"\"\n            SELECT column_name, referenced_table_name, referenced_column_name\n            FROM information_schema.key_column_usage\n            WHERE table_name = %s\n                AND table_schema = DATABASE()\n                AND referenced_table_name IS NOT NULL\n                AND referenced_column_name IS NOT NULL\"\"\", [table_name])\n        key_columns.extend(cursor.fetchall())\n        return key_columns\n\n    def get_indexes(self, cursor, table_name):\n        cursor.execute(\"SHOW INDEX FROM %s\" % self.connection.ops.quote_name(table_name))\n        # Do a two-pass search for indexes: on first pass check which indexes\n        # are multicolumn, on second pass check which single-column indexes\n        # are present.\n        rows = list(cursor.fetchall())\n        multicol_indexes = set()\n        for row in rows:\n            if row[3] > 1:\n                multicol_indexes.add(row[2])\n        indexes = {}\n        for row in rows:\n            if row[2] in multicol_indexes:\n                continue\n            indexes[row[4]] = {'primary_key': (row[2] == 'PRIMARY'), 'unique': not bool(row[1])}\n        return indexes\n\n"
  },
  {
    "path": "Django-1.5.1/django/db/backends/mysql/validation.py",
    "content": "from django.db.backends import BaseDatabaseValidation\n\nclass DatabaseValidation(BaseDatabaseValidation):\n    def validate_field(self, errors, opts, f):\n        \"\"\"\n        MySQL has the following field length restriction:\n        No character (varchar) fields can have a length exceeding 255\n        characters if they have a unique index on them.\n        \"\"\"\n        from django.db import models\n        varchar_fields = (models.CharField, models.CommaSeparatedIntegerField,\n                models.SlugField)\n        if isinstance(f, varchar_fields) and f.max_length > 255 and f.unique:\n            msg = '\"%(name)s\": %(cls)s cannot have a \"max_length\" greater than 255 when using \"unique=True\".'\n            errors.add(opts, msg % {'name': f.name, 'cls': f.__class__.__name__})\n"
  },
  {
    "path": "Django-1.5.1/django/db/backends/oracle/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/db/backends/oracle/base.py",
    "content": "\"\"\"\nOracle database backend for Django.\n\nRequires cx_Oracle: http://cx-oracle.sourceforge.net/\n\"\"\"\nfrom __future__ import unicode_literals\n\nimport datetime\nimport decimal\nimport sys\nimport warnings\n\ndef _setup_environment(environ):\n    import platform\n    # Cygwin requires some special voodoo to set the environment variables\n    # properly so that Oracle will see them.\n    if platform.system().upper().startswith('CYGWIN'):\n        try:\n            import ctypes\n        except ImportError as e:\n            from django.core.exceptions import ImproperlyConfigured\n            raise ImproperlyConfigured(\"Error loading ctypes: %s; \"\n                                       \"the Oracle backend requires ctypes to \"\n                                       \"operate correctly under Cygwin.\" % e)\n        kernel32 = ctypes.CDLL('kernel32')\n        for name, value in environ:\n            kernel32.SetEnvironmentVariableA(name, value)\n    else:\n        import os\n        os.environ.update(environ)\n\n_setup_environment([\n    # Oracle takes client-side character set encoding from the environment.\n    ('NLS_LANG', '.UTF8'),\n    # This prevents unicode from getting mangled by getting encoded into the\n    # potentially non-unicode database character set.\n    ('ORA_NCHAR_LITERAL_REPLACE', 'TRUE'),\n])\n\n\ntry:\n    import cx_Oracle as Database\nexcept ImportError as e:\n    from django.core.exceptions import ImproperlyConfigured\n    raise ImproperlyConfigured(\"Error loading cx_Oracle module: %s\" % e)\n\nfrom django.conf import settings\nfrom django.db import utils\nfrom django.db.backends import *\nfrom django.db.backends.signals import connection_created\nfrom django.db.backends.oracle.client import DatabaseClient\nfrom django.db.backends.oracle.creation import DatabaseCreation\nfrom django.db.backends.oracle.introspection import DatabaseIntrospection\nfrom django.utils.encoding import force_bytes, force_text\nfrom django.utils import six\nfrom django.utils import timezone\n\nDatabaseError = Database.DatabaseError\nIntegrityError = Database.IntegrityError\n\n# Check whether cx_Oracle was compiled with the WITH_UNICODE option if cx_Oracle is pre-5.1. This will\n# also be True for cx_Oracle 5.1 and in Python 3.0. See #19606\nif int(Database.version.split('.', 1)[0]) >= 5 and \\\n        (int(Database.version.split('.', 2)[1]) >= 1 or\n         not hasattr(Database, 'UNICODE')):\n    convert_unicode = force_text\nelse:\n    convert_unicode = force_bytes\n\n\nclass DatabaseFeatures(BaseDatabaseFeatures):\n    empty_fetchmany_value = ()\n    needs_datetime_string_cast = False\n    interprets_empty_strings_as_nulls = True\n    uses_savepoints = True\n    has_select_for_update = True\n    has_select_for_update_nowait = True\n    can_return_id_from_insert = True\n    allow_sliced_subqueries = False\n    supports_subqueries_in_group_by = False\n    supports_transactions = True\n    supports_timezones = False\n    supports_bitwise_or = False\n    can_defer_constraint_checks = True\n    ignores_nulls_in_unique_constraints = False\n    has_bulk_insert = True\n    supports_tablespaces = True\n    supports_sequence_reset = False\n\nclass DatabaseOperations(BaseDatabaseOperations):\n    compiler_module = \"django.db.backends.oracle.compiler\"\n\n    def autoinc_sql(self, table, column):\n        # To simulate auto-incrementing primary keys in Oracle, we have to\n        # create a sequence and a trigger.\n        sq_name = self._get_sequence_name(table)\n        tr_name = self._get_trigger_name(table)\n        tbl_name = self.quote_name(table)\n        col_name = self.quote_name(column)\n        sequence_sql = \"\"\"\nDECLARE\n    i INTEGER;\nBEGIN\n    SELECT COUNT(*) INTO i FROM USER_CATALOG\n        WHERE TABLE_NAME = '%(sq_name)s' AND TABLE_TYPE = 'SEQUENCE';\n    IF i = 0 THEN\n        EXECUTE IMMEDIATE 'CREATE SEQUENCE \"%(sq_name)s\"';\n    END IF;\nEND;\n/\"\"\" % locals()\n        trigger_sql = \"\"\"\nCREATE OR REPLACE TRIGGER \"%(tr_name)s\"\nBEFORE INSERT ON %(tbl_name)s\nFOR EACH ROW\nWHEN (new.%(col_name)s IS NULL)\n    BEGIN\n        SELECT \"%(sq_name)s\".nextval\n        INTO :new.%(col_name)s FROM dual;\n    END;\n/\"\"\" % locals()\n        return sequence_sql, trigger_sql\n\n    def cache_key_culling_sql(self):\n        return \"\"\"\n            SELECT cache_key\n              FROM (SELECT cache_key, rank() OVER (ORDER BY cache_key) AS rank FROM %s)\n             WHERE rank = %%s + 1\n        \"\"\"\n\n    def date_extract_sql(self, lookup_type, field_name):\n        # http://download-east.oracle.com/docs/cd/B10501_01/server.920/a96540/functions42a.htm#1017163\n        if lookup_type == 'week_day':\n            # TO_CHAR(field, 'D') returns an integer from 1-7, where 1=Sunday.\n            return \"TO_CHAR(%s, 'D')\" % field_name\n        else:\n            return \"EXTRACT(%s FROM %s)\" % (lookup_type, field_name)\n\n    def date_interval_sql(self, sql, connector, timedelta):\n        \"\"\"\n        Implements the interval functionality for expressions\n        format for Oracle:\n        (datefield + INTERVAL '3 00:03:20.000000' DAY(1) TO SECOND(6))\n        \"\"\"\n        minutes, seconds = divmod(timedelta.seconds, 60)\n        hours, minutes = divmod(minutes, 60)\n        days = str(timedelta.days)\n        day_precision = len(days)\n        fmt = \"(%s %s INTERVAL '%s %02d:%02d:%02d.%06d' DAY(%d) TO SECOND(6))\"\n        return fmt % (sql, connector, days, hours, minutes, seconds,\n                timedelta.microseconds, day_precision)\n\n    def date_trunc_sql(self, lookup_type, field_name):\n        # Oracle uses TRUNC() for both dates and numbers.\n        # http://download-east.oracle.com/docs/cd/B10501_01/server.920/a96540/functions155a.htm#SQLRF06151\n        if lookup_type == 'day':\n            sql = 'TRUNC(%s)' % field_name\n        else:\n            sql = \"TRUNC(%s, '%s')\" % (field_name, lookup_type)\n        return sql\n\n    def convert_values(self, value, field):\n        if isinstance(value, Database.LOB):\n            value = value.read()\n            if field and field.get_internal_type() == 'TextField':\n                value = force_text(value)\n\n        # Oracle stores empty strings as null. We need to undo this in\n        # order to adhere to the Django convention of using the empty\n        # string instead of null, but only if the field accepts the\n        # empty string.\n        if value is None and field and field.empty_strings_allowed:\n            value = ''\n        # Convert 1 or 0 to True or False\n        elif value in (1, 0) and field and field.get_internal_type() in ('BooleanField', 'NullBooleanField'):\n            value = bool(value)\n        # Force floats to the correct type\n        elif value is not None and field and field.get_internal_type() == 'FloatField':\n            value = float(value)\n        # Convert floats to decimals\n        elif value is not None and field and field.get_internal_type() == 'DecimalField':\n            value = util.typecast_decimal(field.format_number(value))\n        # cx_Oracle always returns datetime.datetime objects for\n        # DATE and TIMESTAMP columns, but Django wants to see a\n        # python datetime.date, .time, or .datetime.  We use the type\n        # of the Field to determine which to cast to, but it's not\n        # always available.\n        # As a workaround, we cast to date if all the time-related\n        # values are 0, or to time if the date is 1/1/1900.\n        # This could be cleaned a bit by adding a method to the Field\n        # classes to normalize values from the database (the to_python\n        # method is used for validation and isn't what we want here).\n        elif isinstance(value, Database.Timestamp):\n            if field and field.get_internal_type() == 'DateTimeField':\n                pass\n            elif field and field.get_internal_type() == 'DateField':\n                value = value.date()\n            elif field and field.get_internal_type() == 'TimeField' or (value.year == 1900 and value.month == value.day == 1):\n                value = value.time()\n            elif value.hour == value.minute == value.second == value.microsecond == 0:\n                value = value.date()\n        return value\n\n    def datetime_cast_sql(self):\n        return \"TO_TIMESTAMP(%s, 'YYYY-MM-DD HH24:MI:SS.FF')\"\n\n    def deferrable_sql(self):\n        return \" DEFERRABLE INITIALLY DEFERRED\"\n\n    def drop_sequence_sql(self, table):\n        return \"DROP SEQUENCE %s;\" % self.quote_name(self._get_sequence_name(table))\n\n    def fetch_returned_insert_id(self, cursor):\n        return int(cursor._insert_id_var.getvalue())\n\n    def field_cast_sql(self, db_type):\n        if db_type and db_type.endswith('LOB'):\n            return \"DBMS_LOB.SUBSTR(%s)\"\n        else:\n            return \"%s\"\n\n    def last_executed_query(self, cursor, sql, params):\n        # http://cx-oracle.sourceforge.net/html/cursor.html#Cursor.statement\n        # The DB API definition does not define this attribute.\n        if six.PY3:\n            return cursor.statement\n        else:\n            query = cursor.statement\n            return query if isinstance(query, unicode) else query.decode(\"utf-8\")\n\n    def last_insert_id(self, cursor, table_name, pk_name):\n        sq_name = self._get_sequence_name(table_name)\n        cursor.execute('SELECT \"%s\".currval FROM dual' % sq_name)\n        return cursor.fetchone()[0]\n\n    def lookup_cast(self, lookup_type):\n        if lookup_type in ('iexact', 'icontains', 'istartswith', 'iendswith'):\n            return \"UPPER(%s)\"\n        return \"%s\"\n\n    def max_in_list_size(self):\n        return 1000\n\n    def max_name_length(self):\n        return 30\n\n    def prep_for_iexact_query(self, x):\n        return x\n\n    def process_clob(self, value):\n        if value is None:\n            return ''\n        return force_text(value.read())\n\n    def quote_name(self, name):\n        # SQL92 requires delimited (quoted) names to be case-sensitive.  When\n        # not quoted, Oracle has case-insensitive behavior for identifiers, but\n        # always defaults to uppercase.\n        # We simplify things by making Oracle identifiers always uppercase.\n        if not name.startswith('\"') and not name.endswith('\"'):\n            name = '\"%s\"' % util.truncate_name(name.upper(),\n                                               self.max_name_length())\n        # Oracle puts the query text into a (query % args) construct, so % signs\n        # in names need to be escaped. The '%%' will be collapsed back to '%' at\n        # that stage so we aren't really making the name longer here.\n        name = name.replace('%','%%')\n        return name.upper()\n\n    def random_function_sql(self):\n        return \"DBMS_RANDOM.RANDOM\"\n\n    def regex_lookup_9(self, lookup_type):\n        raise NotImplementedError(\"Regexes are not supported in Oracle before version 10g.\")\n\n    def regex_lookup_10(self, lookup_type):\n        if lookup_type == 'regex':\n            match_option = \"'c'\"\n        else:\n            match_option = \"'i'\"\n        return 'REGEXP_LIKE(%%s, %%s, %s)' % match_option\n\n    def regex_lookup(self, lookup_type):\n        # If regex_lookup is called before it's been initialized, then create\n        # a cursor to initialize it and recur.\n        self.connection.cursor()\n        return self.connection.ops.regex_lookup(lookup_type)\n\n    def return_insert_id(self):\n        return \"RETURNING %s INTO %%s\", (InsertIdVar(),)\n\n    def savepoint_create_sql(self, sid):\n        return convert_unicode(\"SAVEPOINT \" + self.quote_name(sid))\n\n    def savepoint_rollback_sql(self, sid):\n        return convert_unicode(\"ROLLBACK TO SAVEPOINT \" + self.quote_name(sid))\n\n    def sql_flush(self, style, tables, sequences):\n        # Return a list of 'TRUNCATE x;', 'TRUNCATE y;',\n        # 'TRUNCATE z;'... style SQL statements\n        if tables:\n            # Oracle does support TRUNCATE, but it seems to get us into\n            # FK referential trouble, whereas DELETE FROM table works.\n            sql = ['%s %s %s;' % \\\n                    (style.SQL_KEYWORD('DELETE'),\n                     style.SQL_KEYWORD('FROM'),\n                     style.SQL_FIELD(self.quote_name(table)))\n                    for table in tables]\n            # Since we've just deleted all the rows, running our sequence\n            # ALTER code will reset the sequence to 0.\n            sql.extend(self.sequence_reset_by_name_sql(style, sequences))\n            return sql\n        else:\n            return []\n\n    def sequence_reset_by_name_sql(self, style, sequences):\n        sql = []\n        for sequence_info in sequences:\n            sequence_name = self._get_sequence_name(sequence_info['table'])\n            table_name = self.quote_name(sequence_info['table'])\n            column_name = self.quote_name(sequence_info['column'] or 'id')\n            query = _get_sequence_reset_sql() % {'sequence': sequence_name,\n                                                    'table': table_name,\n                                                    'column': column_name}\n            sql.append(query)\n        return sql\n\n    def sequence_reset_sql(self, style, model_list):\n        from django.db import models\n        output = []\n        query = _get_sequence_reset_sql()\n        for model in model_list:\n            for f in model._meta.local_fields:\n                if isinstance(f, models.AutoField):\n                    table_name = self.quote_name(model._meta.db_table)\n                    sequence_name = self._get_sequence_name(model._meta.db_table)\n                    column_name = self.quote_name(f.column)\n                    output.append(query % {'sequence': sequence_name,\n                                           'table': table_name,\n                                           'column': column_name})\n                    # Only one AutoField is allowed per model, so don't\n                    # continue to loop\n                    break\n            for f in model._meta.many_to_many:\n                if not f.rel.through:\n                    table_name = self.quote_name(f.m2m_db_table())\n                    sequence_name = self._get_sequence_name(f.m2m_db_table())\n                    column_name = self.quote_name('id')\n                    output.append(query % {'sequence': sequence_name,\n                                           'table': table_name,\n                                           'column': column_name})\n        return output\n\n    def start_transaction_sql(self):\n        return ''\n\n    def tablespace_sql(self, tablespace, inline=False):\n        if inline:\n            return \"USING INDEX TABLESPACE %s\" % self.quote_name(tablespace)\n        else:\n            return \"TABLESPACE %s\" % self.quote_name(tablespace)\n\n    def value_to_db_datetime(self, value):\n        if value is None:\n            return None\n\n        # Oracle doesn't support tz-aware datetimes\n        if timezone.is_aware(value):\n            if settings.USE_TZ:\n                value = value.astimezone(timezone.utc).replace(tzinfo=None)\n            else:\n                raise ValueError(\"Oracle backend does not support timezone-aware datetimes when USE_TZ is False.\")\n\n        return six.text_type(value)\n\n    def value_to_db_time(self, value):\n        if value is None:\n            return None\n\n        if isinstance(value, six.string_types):\n            return datetime.datetime.strptime(value, '%H:%M:%S')\n\n        # Oracle doesn't support tz-aware times\n        if timezone.is_aware(value):\n            raise ValueError(\"Oracle backend does not support timezone-aware times.\")\n\n        return datetime.datetime(1900, 1, 1, value.hour, value.minute,\n                                 value.second, value.microsecond)\n\n    def year_lookup_bounds_for_date_field(self, value):\n        first = '%s-01-01'\n        second = '%s-12-31'\n        return [first % value, second % value]\n\n    def combine_expression(self, connector, sub_expressions):\n        \"Oracle requires special cases for %% and & operators in query expressions\"\n        if connector == '%%':\n            return 'MOD(%s)' % ','.join(sub_expressions)\n        elif connector == '&':\n            return 'BITAND(%s)' % ','.join(sub_expressions)\n        elif connector == '|':\n            raise NotImplementedError(\"Bit-wise or is not supported in Oracle.\")\n        return super(DatabaseOperations, self).combine_expression(connector, sub_expressions)\n\n    def _get_sequence_name(self, table):\n        name_length = self.max_name_length() - 3\n        return '%s_SQ' % util.truncate_name(table, name_length).upper()\n\n    def _get_trigger_name(self, table):\n        name_length = self.max_name_length() - 3\n        return '%s_TR' % util.truncate_name(table, name_length).upper()\n\n    def bulk_insert_sql(self, fields, num_values):\n        items_sql = \"SELECT %s FROM DUAL\" % \", \".join([\"%s\"] * len(fields))\n        return \" UNION ALL \".join([items_sql] * num_values)\n\n\nclass _UninitializedOperatorsDescriptor(object):\n\n    def __get__(self, instance, owner):\n        # If connection.operators is looked up before a connection has been\n        # created, transparently initialize connection.operators to avert an\n        # AttributeError.\n        if instance is None:\n            raise AttributeError(\"operators not available as class attribute\")\n        # Creating a cursor will initialize the operators.\n        instance.cursor().close()\n        return instance.__dict__['operators']\n\n\nclass DatabaseWrapper(BaseDatabaseWrapper):\n    vendor = 'oracle'\n    operators = _UninitializedOperatorsDescriptor()\n\n    _standard_operators = {\n        'exact': '= %s',\n        'iexact': '= UPPER(%s)',\n        'contains': \"LIKE TRANSLATE(%s USING NCHAR_CS) ESCAPE TRANSLATE('\\\\' USING NCHAR_CS)\",\n        'icontains': \"LIKE UPPER(TRANSLATE(%s USING NCHAR_CS)) ESCAPE TRANSLATE('\\\\' USING NCHAR_CS)\",\n        'gt': '> %s',\n        'gte': '>= %s',\n        'lt': '< %s',\n        'lte': '<= %s',\n        'startswith': \"LIKE TRANSLATE(%s USING NCHAR_CS) ESCAPE TRANSLATE('\\\\' USING NCHAR_CS)\",\n        'endswith': \"LIKE TRANSLATE(%s USING NCHAR_CS) ESCAPE TRANSLATE('\\\\' USING NCHAR_CS)\",\n        'istartswith': \"LIKE UPPER(TRANSLATE(%s USING NCHAR_CS)) ESCAPE TRANSLATE('\\\\' USING NCHAR_CS)\",\n        'iendswith': \"LIKE UPPER(TRANSLATE(%s USING NCHAR_CS)) ESCAPE TRANSLATE('\\\\' USING NCHAR_CS)\",\n    }\n\n    _likec_operators = _standard_operators.copy()\n    _likec_operators.update({\n        'contains': \"LIKEC %s ESCAPE '\\\\'\",\n        'icontains': \"LIKEC UPPER(%s) ESCAPE '\\\\'\",\n        'startswith': \"LIKEC %s ESCAPE '\\\\'\",\n        'endswith': \"LIKEC %s ESCAPE '\\\\'\",\n        'istartswith': \"LIKEC UPPER(%s) ESCAPE '\\\\'\",\n        'iendswith': \"LIKEC UPPER(%s) ESCAPE '\\\\'\",\n    })\n\n    def __init__(self, *args, **kwargs):\n        super(DatabaseWrapper, self).__init__(*args, **kwargs)\n\n        self.oracle_version = None\n        self.features = DatabaseFeatures(self)\n        use_returning_into = self.settings_dict[\"OPTIONS\"].get('use_returning_into', True)\n        self.features.can_return_id_from_insert = use_returning_into\n        self.ops = DatabaseOperations(self)\n        self.client = DatabaseClient(self)\n        self.creation = DatabaseCreation(self)\n        self.introspection = DatabaseIntrospection(self)\n        self.validation = BaseDatabaseValidation(self)\n\n    def check_constraints(self, table_names=None):\n        \"\"\"\n        To check constraints, we set constraints to immediate. Then, when, we're done we must ensure they\n        are returned to deferred.\n        \"\"\"\n        self.cursor().execute('SET CONSTRAINTS ALL IMMEDIATE')\n        self.cursor().execute('SET CONSTRAINTS ALL DEFERRED')\n\n    def _valid_connection(self):\n        return self.connection is not None\n\n    def _connect_string(self):\n        settings_dict = self.settings_dict\n        if not settings_dict['HOST'].strip():\n            settings_dict['HOST'] = 'localhost'\n        if settings_dict['PORT'].strip():\n            dsn = Database.makedsn(settings_dict['HOST'],\n                                   int(settings_dict['PORT']),\n                                   settings_dict['NAME'])\n        else:\n            dsn = settings_dict['NAME']\n        return \"%s/%s@%s\" % (settings_dict['USER'],\n                             settings_dict['PASSWORD'], dsn)\n\n    def _cursor(self):\n        cursor = None\n        if not self._valid_connection():\n            conn_string = convert_unicode(self._connect_string())\n            conn_params = self.settings_dict['OPTIONS'].copy()\n            if 'use_returning_into' in conn_params:\n                del conn_params['use_returning_into']\n            self.connection = Database.connect(conn_string, **conn_params)\n            cursor = FormatStylePlaceholderCursor(self.connection)\n            # Set the territory first. The territory overrides NLS_DATE_FORMAT\n            # and NLS_TIMESTAMP_FORMAT to the territory default. When all of\n            # these are set in single statement it isn't clear what is supposed\n            # to happen.\n            cursor.execute(\"ALTER SESSION SET NLS_TERRITORY = 'AMERICA'\")\n            # Set oracle date to ansi date format.  This only needs to execute\n            # once when we create a new connection. We also set the Territory\n            # to 'AMERICA' which forces Sunday to evaluate to a '1' in\n            # TO_CHAR().\n            cursor.execute(\n                \"ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS'\"\n                \" NLS_TIMESTAMP_FORMAT = 'YYYY-MM-DD HH24:MI:SS.FF'\"\n                + (\" TIME_ZONE = 'UTC'\" if settings.USE_TZ else ''))\n\n            if 'operators' not in self.__dict__:\n                # Ticket #14149: Check whether our LIKE implementation will\n                # work for this connection or we need to fall back on LIKEC.\n                # This check is performed only once per DatabaseWrapper\n                # instance per thread, since subsequent connections will use\n                # the same settings.\n                try:\n                    cursor.execute(\"SELECT 1 FROM DUAL WHERE DUMMY %s\"\n                                   % self._standard_operators['contains'],\n                                   ['X'])\n                except utils.DatabaseError:\n                    self.operators = self._likec_operators\n                else:\n                    self.operators = self._standard_operators\n\n            try:\n                self.oracle_version = int(self.connection.version.split('.')[0])\n                # There's no way for the DatabaseOperations class to know the\n                # currently active Oracle version, so we do some setups here.\n                # TODO: Multi-db support will need a better solution (a way to\n                # communicate the current version).\n                if self.oracle_version <= 9:\n                    self.ops.regex_lookup = self.ops.regex_lookup_9\n                else:\n                    self.ops.regex_lookup = self.ops.regex_lookup_10\n            except ValueError:\n                pass\n            try:\n                self.connection.stmtcachesize = 20\n            except:\n                # Django docs specify cx_Oracle version 4.3.1 or higher, but\n                # stmtcachesize is available only in 4.3.2 and up.\n                pass\n            connection_created.send(sender=self.__class__, connection=self)\n        if not cursor:\n            cursor = FormatStylePlaceholderCursor(self.connection)\n        return cursor\n\n    # Oracle doesn't support savepoint commits.  Ignore them.\n    def _savepoint_commit(self, sid):\n        pass\n\n    def _commit(self):\n        if self.connection is not None:\n            try:\n                return self.connection.commit()\n            except Database.IntegrityError as e:\n                # In case cx_Oracle implements (now or in a future version)\n                # raising this specific exception\n                six.reraise(utils.IntegrityError, utils.IntegrityError(*tuple(e.args)), sys.exc_info()[2])\n            except Database.DatabaseError as e:\n                # cx_Oracle 5.0.4 raises a cx_Oracle.DatabaseError exception\n                # with the following attributes and values:\n                #  code = 2091\n                #  message = 'ORA-02091: transaction rolled back\n                #            'ORA-02291: integrity constraint (TEST_DJANGOTEST.SYS\n                #               _C00102056) violated - parent key not found'\n                # We convert that particular case to our IntegrityError exception\n                x = e.args[0]\n                if hasattr(x, 'code') and hasattr(x, 'message') \\\n                   and x.code == 2091 and 'ORA-02291' in x.message:\n                    six.reraise(utils.IntegrityError, utils.IntegrityError(*tuple(e.args)), sys.exc_info()[2])\n                six.reraise(utils.DatabaseError, utils.DatabaseError(*tuple(e.args)), sys.exc_info()[2])\n\n\nclass OracleParam(object):\n    \"\"\"\n    Wrapper object for formatting parameters for Oracle. If the string\n    representation of the value is large enough (greater than 4000 characters)\n    the input size needs to be set as CLOB. Alternatively, if the parameter\n    has an `input_size` attribute, then the value of the `input_size` attribute\n    will be used instead. Otherwise, no input size will be set for the\n    parameter when executing the query.\n    \"\"\"\n\n    def __init__(self, param, cursor, strings_only=False):\n        # With raw SQL queries, datetimes can reach this function\n        # without being converted by DateTimeField.get_db_prep_value.\n        if settings.USE_TZ and isinstance(param, datetime.datetime):\n            if timezone.is_naive(param):\n                warnings.warn(\"Oracle received a naive datetime (%s)\"\n                              \" while time zone support is active.\" % param,\n                              RuntimeWarning)\n                default_timezone = timezone.get_default_timezone()\n                param = timezone.make_aware(param, default_timezone)\n            param = param.astimezone(timezone.utc).replace(tzinfo=None)\n\n        # Oracle doesn't recognize True and False correctly in Python 3.\n        # The conversion done below works both in 2 and 3.\n        if param is True:\n            param = \"1\"\n        elif param is False:\n            param = \"0\"\n        if hasattr(param, 'bind_parameter'):\n            self.force_bytes = param.bind_parameter(cursor)\n        else:\n            self.force_bytes = convert_unicode(param, cursor.charset,\n                                             strings_only)\n        if hasattr(param, 'input_size'):\n            # If parameter has `input_size` attribute, use that.\n            self.input_size = param.input_size\n        elif isinstance(param, six.string_types) and len(param) > 4000:\n            # Mark any string param greater than 4000 characters as a CLOB.\n            self.input_size = Database.CLOB\n        else:\n            self.input_size = None\n\n\nclass VariableWrapper(object):\n    \"\"\"\n    An adapter class for cursor variables that prevents the wrapped object\n    from being converted into a string when used to instanciate an OracleParam.\n    This can be used generally for any other object that should be passed into\n    Cursor.execute as-is.\n    \"\"\"\n\n    def __init__(self, var):\n        self.var = var\n\n    def bind_parameter(self, cursor):\n        return self.var\n\n    def __getattr__(self, key):\n        return getattr(self.var, key)\n\n    def __setattr__(self, key, value):\n        if key == 'var':\n            self.__dict__[key] = value\n        else:\n            setattr(self.var, key, value)\n\n\nclass InsertIdVar(object):\n    \"\"\"\n    A late-binding cursor variable that can be passed to Cursor.execute\n    as a parameter, in order to receive the id of the row created by an\n    insert statement.\n    \"\"\"\n\n    def bind_parameter(self, cursor):\n        param = cursor.cursor.var(Database.NUMBER)\n        cursor._insert_id_var = param\n        return param\n\n\nclass FormatStylePlaceholderCursor(object):\n    \"\"\"\n    Django uses \"format\" (e.g. '%s') style placeholders, but Oracle uses \":var\"\n    style. This fixes it -- but note that if you want to use a literal \"%s\" in\n    a query, you'll need to use \"%%s\".\n\n    We also do automatic conversion between Unicode on the Python side and\n    UTF-8 -- for talking to Oracle -- in here.\n    \"\"\"\n    charset = 'utf-8'\n\n    def __init__(self, connection):\n        self.cursor = connection.cursor()\n        # Necessary to retrieve decimal values without rounding error.\n        self.cursor.numbersAsStrings = True\n        # Default arraysize of 1 is highly sub-optimal.\n        self.cursor.arraysize = 100\n\n    def _format_params(self, params):\n        return tuple([OracleParam(p, self, True) for p in params])\n\n    def _guess_input_sizes(self, params_list):\n        sizes = [None] * len(params_list[0])\n        for params in params_list:\n            for i, value in enumerate(params):\n                if value.input_size:\n                    sizes[i] = value.input_size\n        self.setinputsizes(*sizes)\n\n    def _param_generator(self, params):\n        return [p.force_bytes for p in params]\n\n    def execute(self, query, params=None):\n        if params is None:\n            params = []\n        else:\n            params = self._format_params(params)\n        args = [(':arg%d' % i) for i in range(len(params))]\n        # cx_Oracle wants no trailing ';' for SQL statements.  For PL/SQL, it\n        # it does want a trailing ';' but not a trailing '/'.  However, these\n        # characters must be included in the original query in case the query\n        # is being passed to SQL*Plus.\n        if query.endswith(';') or query.endswith('/'):\n            query = query[:-1]\n        query = convert_unicode(query % tuple(args), self.charset)\n        self._guess_input_sizes([params])\n        try:\n            return self.cursor.execute(query, self._param_generator(params))\n        except Database.IntegrityError as e:\n            six.reraise(utils.IntegrityError, utils.IntegrityError(*tuple(e.args)), sys.exc_info()[2])\n        except Database.DatabaseError as e:\n            # cx_Oracle <= 4.4.0 wrongly raises a DatabaseError for ORA-01400.\n            if hasattr(e.args[0], 'code') and e.args[0].code == 1400 and not isinstance(e, IntegrityError):\n                six.reraise(utils.IntegrityError, utils.IntegrityError(*tuple(e.args)), sys.exc_info()[2])\n            six.reraise(utils.DatabaseError, utils.DatabaseError(*tuple(e.args)), sys.exc_info()[2])\n\n    def executemany(self, query, params=None):\n        # cx_Oracle doesn't support iterators, convert them to lists\n        if params is not None and not isinstance(params, (list, tuple)):\n            params = list(params)\n        try:\n            args = [(':arg%d' % i) for i in range(len(params[0]))]\n        except (IndexError, TypeError):\n            # No params given, nothing to do\n            return None\n        # cx_Oracle wants no trailing ';' for SQL statements.  For PL/SQL, it\n        # it does want a trailing ';' but not a trailing '/'.  However, these\n        # characters must be included in the original query in case the query\n        # is being passed to SQL*Plus.\n        if query.endswith(';') or query.endswith('/'):\n            query = query[:-1]\n        query = convert_unicode(query % tuple(args), self.charset)\n        formatted = [self._format_params(i) for i in params]\n        self._guess_input_sizes(formatted)\n        try:\n            return self.cursor.executemany(query,\n                                [self._param_generator(p) for p in formatted])\n        except Database.IntegrityError as e:\n            six.reraise(utils.IntegrityError, utils.IntegrityError(*tuple(e.args)), sys.exc_info()[2])\n        except Database.DatabaseError as e:\n            # cx_Oracle <= 4.4.0 wrongly raises a DatabaseError for ORA-01400.\n            if hasattr(e.args[0], 'code') and e.args[0].code == 1400 and not isinstance(e, IntegrityError):\n                six.reraise(utils.IntegrityError, utils.IntegrityError(*tuple(e.args)), sys.exc_info()[2])\n            six.reraise(utils.DatabaseError, utils.DatabaseError(*tuple(e.args)), sys.exc_info()[2])\n\n    def fetchone(self):\n        row = self.cursor.fetchone()\n        if row is None:\n            return row\n        return _rowfactory(row, self.cursor)\n\n    def fetchmany(self, size=None):\n        if size is None:\n            size = self.arraysize\n        return tuple([_rowfactory(r, self.cursor)\n                      for r in self.cursor.fetchmany(size)])\n\n    def fetchall(self):\n        return tuple([_rowfactory(r, self.cursor)\n                      for r in self.cursor.fetchall()])\n\n    def var(self, *args):\n        return VariableWrapper(self.cursor.var(*args))\n\n    def arrayvar(self, *args):\n        return VariableWrapper(self.cursor.arrayvar(*args))\n\n    def __getattr__(self, attr):\n        if attr in self.__dict__:\n            return self.__dict__[attr]\n        else:\n            return getattr(self.cursor, attr)\n\n    def __iter__(self):\n        return CursorIterator(self.cursor)\n\n\nclass CursorIterator(six.Iterator):\n\n    \"\"\"Cursor iterator wrapper that invokes our custom row factory.\"\"\"\n\n    def __init__(self, cursor):\n        self.cursor = cursor\n        self.iter = iter(cursor)\n\n    def __iter__(self):\n        return self\n\n    def __next__(self):\n        return _rowfactory(next(self.iter), self.cursor)\n\n\ndef _rowfactory(row, cursor):\n    # Cast numeric values as the appropriate Python type based upon the\n    # cursor description, and convert strings to unicode.\n    casted = []\n    for value, desc in zip(row, cursor.description):\n        if value is not None and desc[1] is Database.NUMBER:\n            precision, scale = desc[4:6]\n            if scale == -127:\n                if precision == 0:\n                    # NUMBER column: decimal-precision floating point\n                    # This will normally be an integer from a sequence,\n                    # but it could be a decimal value.\n                    if '.' in value:\n                        value = decimal.Decimal(value)\n                    else:\n                        value = int(value)\n                else:\n                    # FLOAT column: binary-precision floating point.\n                    # This comes from FloatField columns.\n                    value = float(value)\n            elif precision > 0:\n                # NUMBER(p,s) column: decimal-precision fixed point.\n                # This comes from IntField and DecimalField columns.\n                if scale == 0:\n                    value = int(value)\n                else:\n                    value = decimal.Decimal(value)\n            elif '.' in value:\n                # No type information. This normally comes from a\n                # mathematical expression in the SELECT list. Guess int\n                # or Decimal based on whether it has a decimal point.\n                value = decimal.Decimal(value)\n            else:\n                value = int(value)\n        # datetimes are returned as TIMESTAMP, except the results\n        # of \"dates\" queries, which are returned as DATETIME.\n        elif desc[1] in (Database.TIMESTAMP, Database.DATETIME):\n            # Confirm that dt is naive before overwriting its tzinfo.\n            if settings.USE_TZ and value is not None and timezone.is_naive(value):\n                value = value.replace(tzinfo=timezone.utc)\n        elif desc[1] in (Database.STRING, Database.FIXED_CHAR,\n                         Database.LONG_STRING):\n            value = to_unicode(value)\n        casted.append(value)\n    return tuple(casted)\n\n\ndef to_unicode(s):\n    \"\"\"\n    Convert strings to Unicode objects (and return all other data types\n    unchanged).\n    \"\"\"\n    if isinstance(s, six.string_types):\n        return force_text(s)\n    return s\n\n\ndef _get_sequence_reset_sql():\n    # TODO: colorize this SQL code with style.SQL_KEYWORD(), etc.\n    return \"\"\"\nDECLARE\n    table_value integer;\n    seq_value integer;\nBEGIN\n    SELECT NVL(MAX(%(column)s), 0) INTO table_value FROM %(table)s;\n    SELECT NVL(last_number - cache_size, 0) INTO seq_value FROM user_sequences\n           WHERE sequence_name = '%(sequence)s';\n    WHILE table_value > seq_value LOOP\n        SELECT \"%(sequence)s\".nextval INTO seq_value FROM dual;\n    END LOOP;\nEND;\n/\"\"\"\n"
  },
  {
    "path": "Django-1.5.1/django/db/backends/oracle/client.py",
    "content": "import os\nimport sys\n\nfrom django.db.backends import BaseDatabaseClient\n\nclass DatabaseClient(BaseDatabaseClient):\n    executable_name = 'sqlplus'\n\n    def runshell(self):\n        conn_string = self.connection._connect_string()\n        args = [self.executable_name, \"-L\", conn_string]\n        if os.name == 'nt':\n            sys.exit(os.system(\" \".join(args)))\n        else:\n            os.execvp(self.executable_name, args)\n\n"
  },
  {
    "path": "Django-1.5.1/django/db/backends/oracle/compiler.py",
    "content": "from django.db.models.sql import compiler\n# The izip_longest was renamed to zip_longest in py3\ntry:\n    from itertools import zip_longest\nexcept ImportError:\n    from itertools import izip_longest as zip_longest\n\n\nclass SQLCompiler(compiler.SQLCompiler):\n    def resolve_columns(self, row, fields=()):\n        # If this query has limit/offset information, then we expect the\n        # first column to be an extra \"_RN\" column that we need to throw\n        # away.\n        if self.query.high_mark is not None or self.query.low_mark:\n            rn_offset = 1\n        else:\n            rn_offset = 0\n        index_start = rn_offset + len(self.query.extra_select)\n        values = [self.query.convert_values(v, None, connection=self.connection)\n                  for v in row[rn_offset:index_start]]\n        for value, field in zip_longest(row[index_start:], fields):\n            values.append(self.query.convert_values(value, field, connection=self.connection))\n        return tuple(values)\n\n    def as_sql(self, with_limits=True, with_col_aliases=False):\n        \"\"\"\n        Creates the SQL for this query. Returns the SQL string and list\n        of parameters.  This is overriden from the original Query class\n        to handle the additional SQL Oracle requires to emulate LIMIT\n        and OFFSET.\n\n        If 'with_limits' is False, any limit/offset information is not\n        included in the query.\n        \"\"\"\n        if with_limits and self.query.low_mark == self.query.high_mark:\n            return '', ()\n\n        # The `do_offset` flag indicates whether we need to construct\n        # the SQL needed to use limit/offset with Oracle.\n        do_offset = with_limits and (self.query.high_mark is not None\n                                     or self.query.low_mark)\n        if not do_offset:\n            sql, params = super(SQLCompiler, self).as_sql(with_limits=False,\n                    with_col_aliases=with_col_aliases)\n        else:\n            sql, params = super(SQLCompiler, self).as_sql(with_limits=False,\n                                                    with_col_aliases=True)\n\n            # Wrap the base query in an outer SELECT * with boundaries on\n            # the \"_RN\" column.  This is the canonical way to emulate LIMIT\n            # and OFFSET on Oracle.\n            high_where = ''\n            if self.query.high_mark is not None:\n                high_where = 'WHERE ROWNUM <= %d' % (self.query.high_mark,)\n            sql = 'SELECT * FROM (SELECT ROWNUM AS \"_RN\", \"_SUB\".* FROM (%s) \"_SUB\" %s) WHERE \"_RN\" > %d' % (sql, high_where, self.query.low_mark)\n\n        return sql, params\n\n\nclass SQLInsertCompiler(compiler.SQLInsertCompiler, SQLCompiler):\n    pass\n\nclass SQLDeleteCompiler(compiler.SQLDeleteCompiler, SQLCompiler):\n    pass\n\nclass SQLUpdateCompiler(compiler.SQLUpdateCompiler, SQLCompiler):\n    pass\n\nclass SQLAggregateCompiler(compiler.SQLAggregateCompiler, SQLCompiler):\n    pass\n\nclass SQLDateCompiler(compiler.SQLDateCompiler, SQLCompiler):\n    pass\n"
  },
  {
    "path": "Django-1.5.1/django/db/backends/oracle/creation.py",
    "content": "import sys\nimport time\nfrom django.db.backends.creation import BaseDatabaseCreation\nfrom django.utils.six.moves import input\n\nTEST_DATABASE_PREFIX = 'test_'\nPASSWORD = 'Im_a_lumberjack'\n\nclass DatabaseCreation(BaseDatabaseCreation):\n    # This dictionary maps Field objects to their associated Oracle column\n    # types, as strings. Column-type strings can contain format strings; they'll\n    # be interpolated against the values of Field.__dict__ before being output.\n    # If a column type is set to None, it won't be included in the output.\n    #\n    # Any format strings starting with \"qn_\" are quoted before being used in the\n    # output (the \"qn_\" prefix is stripped before the lookup is performed.\n\n    data_types = {\n        'AutoField':                    'NUMBER(11)',\n        'BooleanField':                 'NUMBER(1) CHECK (%(qn_column)s IN (0,1))',\n        'CharField':                    'NVARCHAR2(%(max_length)s)',\n        'CommaSeparatedIntegerField':   'VARCHAR2(%(max_length)s)',\n        'DateField':                    'DATE',\n        'DateTimeField':                'TIMESTAMP',\n        'DecimalField':                 'NUMBER(%(max_digits)s, %(decimal_places)s)',\n        'FileField':                    'NVARCHAR2(%(max_length)s)',\n        'FilePathField':                'NVARCHAR2(%(max_length)s)',\n        'FloatField':                   'DOUBLE PRECISION',\n        'IntegerField':                 'NUMBER(11)',\n        'BigIntegerField':              'NUMBER(19)',\n        'IPAddressField':               'VARCHAR2(15)',\n        'GenericIPAddressField':        'VARCHAR2(39)',\n        'NullBooleanField':             'NUMBER(1) CHECK ((%(qn_column)s IN (0,1)) OR (%(qn_column)s IS NULL))',\n        'OneToOneField':                'NUMBER(11)',\n        'PositiveIntegerField':         'NUMBER(11) CHECK (%(qn_column)s >= 0)',\n        'PositiveSmallIntegerField':    'NUMBER(11) CHECK (%(qn_column)s >= 0)',\n        'SlugField':                    'NVARCHAR2(%(max_length)s)',\n        'SmallIntegerField':            'NUMBER(11)',\n        'TextField':                    'NCLOB',\n        'TimeField':                    'TIMESTAMP',\n        'URLField':                     'VARCHAR2(%(max_length)s)',\n    }\n\n    def __init__(self, connection):\n        super(DatabaseCreation, self).__init__(connection)\n\n    def _create_test_db(self, verbosity=1, autoclobber=False):\n        TEST_NAME = self._test_database_name()\n        TEST_USER = self._test_database_user()\n        TEST_PASSWD = self._test_database_passwd()\n        TEST_TBLSPACE = self._test_database_tblspace()\n        TEST_TBLSPACE_TMP = self._test_database_tblspace_tmp()\n\n        parameters = {\n            'dbname': TEST_NAME,\n            'user': TEST_USER,\n            'password': TEST_PASSWD,\n            'tblspace': TEST_TBLSPACE,\n            'tblspace_temp': TEST_TBLSPACE_TMP,\n        }\n\n        cursor = self.connection.cursor()\n        if self._test_database_create():\n            try:\n                self._execute_test_db_creation(cursor, parameters, verbosity)\n            except Exception as e:\n                sys.stderr.write(\"Got an error creating the test database: %s\\n\" % e)\n                if not autoclobber:\n                    confirm = input(\"It appears the test database, %s, already exists. Type 'yes' to delete it, or 'no' to cancel: \" % TEST_NAME)\n                if autoclobber or confirm == 'yes':\n                    try:\n                        if verbosity >= 1:\n                            print(\"Destroying old test database '%s'...\" % self.connection.alias)\n                        self._execute_test_db_destruction(cursor, parameters, verbosity)\n                        self._execute_test_db_creation(cursor, parameters, verbosity)\n                    except Exception as e:\n                        sys.stderr.write(\"Got an error recreating the test database: %s\\n\" % e)\n                        sys.exit(2)\n                else:\n                    print(\"Tests cancelled.\")\n                    sys.exit(1)\n\n        if self._test_user_create():\n            if verbosity >= 1:\n                print(\"Creating test user...\")\n            try:\n                self._create_test_user(cursor, parameters, verbosity)\n            except Exception as e:\n                sys.stderr.write(\"Got an error creating the test user: %s\\n\" % e)\n                if not autoclobber:\n                    confirm = input(\"It appears the test user, %s, already exists. Type 'yes' to delete it, or 'no' to cancel: \" % TEST_USER)\n                if autoclobber or confirm == 'yes':\n                    try:\n                        if verbosity >= 1:\n                            print(\"Destroying old test user...\")\n                        self._destroy_test_user(cursor, parameters, verbosity)\n                        if verbosity >= 1:\n                            print(\"Creating test user...\")\n                        self._create_test_user(cursor, parameters, verbosity)\n                    except Exception as e:\n                        sys.stderr.write(\"Got an error recreating the test user: %s\\n\" % e)\n                        sys.exit(2)\n                else:\n                    print(\"Tests cancelled.\")\n                    sys.exit(1)\n\n        self.connection.settings_dict['SAVED_USER'] = self.connection.settings_dict['USER']\n        self.connection.settings_dict['SAVED_PASSWORD'] = self.connection.settings_dict['PASSWORD']\n        self.connection.settings_dict['TEST_USER'] = self.connection.settings_dict['USER'] = TEST_USER\n        self.connection.settings_dict['PASSWORD'] = TEST_PASSWD\n\n        return self.connection.settings_dict['NAME']\n\n    def _destroy_test_db(self, test_database_name, verbosity=1):\n        \"\"\"\n        Destroy a test database, prompting the user for confirmation if the\n        database already exists. Returns the name of the test database created.\n        \"\"\"\n        TEST_NAME = self._test_database_name()\n        TEST_USER = self._test_database_user()\n        TEST_PASSWD = self._test_database_passwd()\n        TEST_TBLSPACE = self._test_database_tblspace()\n        TEST_TBLSPACE_TMP = self._test_database_tblspace_tmp()\n\n        self.connection.settings_dict['USER'] = self.connection.settings_dict['SAVED_USER']\n        self.connection.settings_dict['PASSWORD'] = self.connection.settings_dict['SAVED_PASSWORD']\n\n        parameters = {\n            'dbname': TEST_NAME,\n            'user': TEST_USER,\n            'password': TEST_PASSWD,\n            'tblspace': TEST_TBLSPACE,\n            'tblspace_temp': TEST_TBLSPACE_TMP,\n        }\n\n        cursor = self.connection.cursor()\n        time.sleep(1) # To avoid \"database is being accessed by other users\" errors.\n        if self._test_user_create():\n            if verbosity >= 1:\n                print('Destroying test user...')\n            self._destroy_test_user(cursor, parameters, verbosity)\n        if self._test_database_create():\n            if verbosity >= 1:\n                print('Destroying test database tables...')\n            self._execute_test_db_destruction(cursor, parameters, verbosity)\n        self.connection.close()\n\n    def _execute_test_db_creation(self, cursor, parameters, verbosity):\n        if verbosity >= 2:\n            print(\"_create_test_db(): dbname = %s\" % parameters['dbname'])\n        statements = [\n            \"\"\"CREATE TABLESPACE %(tblspace)s\n               DATAFILE '%(tblspace)s.dbf' SIZE 20M\n               REUSE AUTOEXTEND ON NEXT 10M MAXSIZE 200M\n            \"\"\",\n            \"\"\"CREATE TEMPORARY TABLESPACE %(tblspace_temp)s\n               TEMPFILE '%(tblspace_temp)s.dbf' SIZE 20M\n               REUSE AUTOEXTEND ON NEXT 10M MAXSIZE 100M\n            \"\"\",\n        ]\n        self._execute_statements(cursor, statements, parameters, verbosity)\n\n    def _create_test_user(self, cursor, parameters, verbosity):\n        if verbosity >= 2:\n            print(\"_create_test_user(): username = %s\" % parameters['user'])\n        statements = [\n            \"\"\"CREATE USER %(user)s\n               IDENTIFIED BY %(password)s\n               DEFAULT TABLESPACE %(tblspace)s\n               TEMPORARY TABLESPACE %(tblspace_temp)s\n            \"\"\",\n            \"\"\"GRANT CONNECT, RESOURCE TO %(user)s\"\"\",\n        ]\n        self._execute_statements(cursor, statements, parameters, verbosity)\n\n    def _execute_test_db_destruction(self, cursor, parameters, verbosity):\n        if verbosity >= 2:\n            print(\"_execute_test_db_destruction(): dbname=%s\" % parameters['dbname'])\n        statements = [\n            'DROP TABLESPACE %(tblspace)s INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS',\n            'DROP TABLESPACE %(tblspace_temp)s INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS',\n            ]\n        self._execute_statements(cursor, statements, parameters, verbosity)\n\n    def _destroy_test_user(self, cursor, parameters, verbosity):\n        if verbosity >= 2:\n            print(\"_destroy_test_user(): user=%s\" % parameters['user'])\n            print(\"Be patient.  This can take some time...\")\n        statements = [\n            'DROP USER %(user)s CASCADE',\n        ]\n        self._execute_statements(cursor, statements, parameters, verbosity)\n\n    def _execute_statements(self, cursor, statements, parameters, verbosity):\n        for template in statements:\n            stmt = template % parameters\n            if verbosity >= 2:\n                print(stmt)\n            try:\n                cursor.execute(stmt)\n            except Exception as err:\n                sys.stderr.write(\"Failed (%s)\\n\" % (err))\n                raise\n\n    def _test_database_name(self):\n        name = TEST_DATABASE_PREFIX + self.connection.settings_dict['NAME']\n        try:\n            if self.connection.settings_dict['TEST_NAME']:\n                name = self.connection.settings_dict['TEST_NAME']\n        except AttributeError:\n            pass\n        return name\n\n    def _test_database_create(self):\n        return self.connection.settings_dict.get('TEST_CREATE', True)\n\n    def _test_user_create(self):\n        return self.connection.settings_dict.get('TEST_USER_CREATE', True)\n\n    def _test_database_user(self):\n        name = TEST_DATABASE_PREFIX + self.connection.settings_dict['USER']\n        try:\n            if self.connection.settings_dict['TEST_USER']:\n                name = self.connection.settings_dict['TEST_USER']\n        except KeyError:\n            pass\n        return name\n\n    def _test_database_passwd(self):\n        name = PASSWORD\n        try:\n            if self.connection.settings_dict['TEST_PASSWD']:\n                name = self.connection.settings_dict['TEST_PASSWD']\n        except KeyError:\n            pass\n        return name\n\n    def _test_database_tblspace(self):\n        name = TEST_DATABASE_PREFIX + self.connection.settings_dict['NAME']\n        try:\n            if self.connection.settings_dict['TEST_TBLSPACE']:\n                name = self.connection.settings_dict['TEST_TBLSPACE']\n        except KeyError:\n            pass\n        return name\n\n    def _test_database_tblspace_tmp(self):\n        name = TEST_DATABASE_PREFIX + self.connection.settings_dict['NAME'] + '_temp'\n        try:\n            if self.connection.settings_dict['TEST_TBLSPACE_TMP']:\n                name = self.connection.settings_dict['TEST_TBLSPACE_TMP']\n        except KeyError:\n            pass\n        return name\n\n    def _get_test_db_name(self):\n        \"\"\"\n        We need to return the 'production' DB name to get the test DB creation\n        machinery to work. This isn't a great deal in this case because DB\n        names as handled by Django haven't real counterparts in Oracle.\n        \"\"\"\n        return self.connection.settings_dict['NAME']\n\n    def test_db_signature(self):\n        settings_dict = self.connection.settings_dict\n        return (\n            settings_dict['HOST'],\n            settings_dict['PORT'],\n            settings_dict['ENGINE'],\n            settings_dict['NAME'],\n            self._test_database_user(),\n        )\n\n    def set_autocommit(self):\n        self.connection.connection.autocommit = True\n"
  },
  {
    "path": "Django-1.5.1/django/db/backends/oracle/introspection.py",
    "content": "from django.db.backends import BaseDatabaseIntrospection\nimport cx_Oracle\nimport re\n\nforeign_key_re = re.compile(r\"\\sCONSTRAINT `[^`]*` FOREIGN KEY \\(`([^`]*)`\\) REFERENCES `([^`]*)` \\(`([^`]*)`\\)\")\n\nclass DatabaseIntrospection(BaseDatabaseIntrospection):\n    # Maps type objects to Django Field types.\n    data_types_reverse = {\n        cx_Oracle.CLOB: 'TextField',\n        cx_Oracle.DATETIME: 'DateField',\n        cx_Oracle.FIXED_CHAR: 'CharField',\n        cx_Oracle.NCLOB: 'TextField',\n        cx_Oracle.NUMBER: 'DecimalField',\n        cx_Oracle.STRING: 'CharField',\n        cx_Oracle.TIMESTAMP: 'DateTimeField',\n    }\n\n    try:\n        data_types_reverse[cx_Oracle.NATIVE_FLOAT] = 'FloatField'\n    except AttributeError:\n        pass\n\n    try:\n        data_types_reverse[cx_Oracle.UNICODE] = 'CharField'\n    except AttributeError:\n        pass\n\n    def get_field_type(self, data_type, description):\n        # If it's a NUMBER with scale == 0, consider it an IntegerField\n        if data_type == cx_Oracle.NUMBER and description[5] == 0:\n            if description[4] > 11:\n                return 'BigIntegerField'\n            else:\n                return 'IntegerField'\n        else:\n            return super(DatabaseIntrospection, self).get_field_type(\n                data_type, description)\n\n    def get_table_list(self, cursor):\n        \"Returns a list of table names in the current database.\"\n        cursor.execute(\"SELECT TABLE_NAME FROM USER_TABLES\")\n        return [row[0].lower() for row in cursor.fetchall()]\n\n    def get_table_description(self, cursor, table_name):\n        \"Returns a description of the table, with the DB-API cursor.description interface.\"\n        cursor.execute(\"SELECT * FROM %s WHERE ROWNUM < 2\" % self.connection.ops.quote_name(table_name))\n        description = []\n        for desc in cursor.description:\n            description.append((desc[0].lower(),) + desc[1:])\n        return description\n\n    def table_name_converter(self, name):\n        \"Table name comparison is case insensitive under Oracle\"\n        return name.lower()\n\n    def _name_to_index(self, cursor, table_name):\n        \"\"\"\n        Returns a dictionary of {field_name: field_index} for the given table.\n        Indexes are 0-based.\n        \"\"\"\n        return dict([(d[0], i) for i, d in enumerate(self.get_table_description(cursor, table_name))])\n\n    def get_relations(self, cursor, table_name):\n        \"\"\"\n        Returns a dictionary of {field_index: (field_index_other_table, other_table)}\n        representing all relationships to the given table. Indexes are 0-based.\n        \"\"\"\n        table_name = table_name.upper()\n        cursor.execute(\"\"\"\n    SELECT ta.column_id - 1, tb.table_name, tb.column_id - 1\n    FROM   user_constraints, USER_CONS_COLUMNS ca, USER_CONS_COLUMNS cb,\n           user_tab_cols ta, user_tab_cols tb\n    WHERE  user_constraints.table_name = %s AND\n           ta.table_name = user_constraints.table_name AND\n           ta.column_name = ca.column_name AND\n           ca.table_name = ta.table_name AND\n           user_constraints.constraint_name = ca.constraint_name AND\n           user_constraints.r_constraint_name = cb.constraint_name AND\n           cb.table_name = tb.table_name AND\n           cb.column_name = tb.column_name AND\n           ca.position = cb.position\"\"\", [table_name])\n\n        relations = {}\n        for row in cursor.fetchall():\n            relations[row[0]] = (row[2], row[1].lower())\n        return relations\n\n    def get_indexes(self, cursor, table_name):\n        sql = \"\"\"\n    SELECT LOWER(uic1.column_name) AS column_name,\n           CASE user_constraints.constraint_type\n               WHEN 'P' THEN 1 ELSE 0\n           END AS is_primary_key,\n           CASE user_indexes.uniqueness\n               WHEN 'UNIQUE' THEN 1 ELSE 0\n           END AS is_unique\n    FROM   user_constraints, user_indexes, user_ind_columns uic1\n    WHERE  user_constraints.constraint_type (+) = 'P'\n      AND  user_constraints.index_name (+) = uic1.index_name\n      AND  user_indexes.uniqueness (+) = 'UNIQUE'\n      AND  user_indexes.index_name (+) = uic1.index_name\n      AND  uic1.table_name = UPPER(%s)\n      AND  uic1.column_position = 1\n      AND  NOT EXISTS (\n              SELECT 1\n              FROM   user_ind_columns uic2\n              WHERE  uic2.index_name = uic1.index_name\n                AND  uic2.column_position = 2\n           )\n        \"\"\"\n        cursor.execute(sql, [table_name])\n        indexes = {}\n        for row in cursor.fetchall():\n            indexes[row[0]] = {'primary_key': bool(row[1]),\n                               'unique': bool(row[2])}\n        return indexes\n"
  },
  {
    "path": "Django-1.5.1/django/db/backends/postgresql_psycopg2/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/db/backends/postgresql_psycopg2/base.py",
    "content": "\"\"\"\nPostgreSQL database backend for Django.\n\nRequires psycopg 2: http://initd.org/projects/psycopg2\n\"\"\"\nimport logging\nimport sys\n\nfrom django.db import utils\nfrom django.db.backends import *\nfrom django.db.backends.signals import connection_created\nfrom django.db.backends.postgresql_psycopg2.operations import DatabaseOperations\nfrom django.db.backends.postgresql_psycopg2.client import DatabaseClient\nfrom django.db.backends.postgresql_psycopg2.creation import DatabaseCreation\nfrom django.db.backends.postgresql_psycopg2.version import get_version\nfrom django.db.backends.postgresql_psycopg2.introspection import DatabaseIntrospection\nfrom django.utils.encoding import force_str\nfrom django.utils.safestring import SafeText, SafeBytes\nfrom django.utils import six\nfrom django.utils.timezone import utc\n\ntry:\n    import psycopg2 as Database\n    import psycopg2.extensions\nexcept ImportError as e:\n    from django.core.exceptions import ImproperlyConfigured\n    raise ImproperlyConfigured(\"Error loading psycopg2 module: %s\" % e)\n\nDatabaseError = Database.DatabaseError\nIntegrityError = Database.IntegrityError\n\npsycopg2.extensions.register_type(psycopg2.extensions.UNICODE)\npsycopg2.extensions.register_adapter(SafeBytes, psycopg2.extensions.QuotedString)\npsycopg2.extensions.register_adapter(SafeText, psycopg2.extensions.QuotedString)\n\nlogger = logging.getLogger('django.db.backends')\n\ndef utc_tzinfo_factory(offset):\n    if offset != 0:\n        raise AssertionError(\"database connection isn't set to UTC\")\n    return utc\n\nclass CursorWrapper(object):\n    \"\"\"\n    A thin wrapper around psycopg2's normal cursor class so that we can catch\n    particular exception instances and reraise them with the right types.\n    \"\"\"\n\n    def __init__(self, cursor):\n        self.cursor = cursor\n\n    def execute(self, query, args=None):\n        try:\n            return self.cursor.execute(query, args)\n        except Database.IntegrityError as e:\n            six.reraise(utils.IntegrityError, utils.IntegrityError(*tuple(e.args)), sys.exc_info()[2])\n        except Database.DatabaseError as e:\n            six.reraise(utils.DatabaseError, utils.DatabaseError(*tuple(e.args)), sys.exc_info()[2])\n\n    def executemany(self, query, args):\n        try:\n            return self.cursor.executemany(query, args)\n        except Database.IntegrityError as e:\n            six.reraise(utils.IntegrityError, utils.IntegrityError(*tuple(e.args)), sys.exc_info()[2])\n        except Database.DatabaseError as e:\n            six.reraise(utils.DatabaseError, utils.DatabaseError(*tuple(e.args)), sys.exc_info()[2])\n\n    def __getattr__(self, attr):\n        if attr in self.__dict__:\n            return self.__dict__[attr]\n        else:\n            return getattr(self.cursor, attr)\n\n    def __iter__(self):\n        return iter(self.cursor)\n\nclass DatabaseFeatures(BaseDatabaseFeatures):\n    needs_datetime_string_cast = False\n    can_return_id_from_insert = True\n    requires_rollback_on_dirty_transaction = True\n    has_real_datatype = True\n    can_defer_constraint_checks = True\n    has_select_for_update = True\n    has_select_for_update_nowait = True\n    has_bulk_insert = True\n    supports_tablespaces = True\n    supports_transactions = True\n    can_distinct_on_fields = True\n\nclass DatabaseWrapper(BaseDatabaseWrapper):\n    vendor = 'postgresql'\n    operators = {\n        'exact': '= %s',\n        'iexact': '= UPPER(%s)',\n        'contains': 'LIKE %s',\n        'icontains': 'LIKE UPPER(%s)',\n        'regex': '~ %s',\n        'iregex': '~* %s',\n        'gt': '> %s',\n        'gte': '>= %s',\n        'lt': '< %s',\n        'lte': '<= %s',\n        'startswith': 'LIKE %s',\n        'endswith': 'LIKE %s',\n        'istartswith': 'LIKE UPPER(%s)',\n        'iendswith': 'LIKE UPPER(%s)',\n    }\n\n    def __init__(self, *args, **kwargs):\n        super(DatabaseWrapper, self).__init__(*args, **kwargs)\n\n        self.features = DatabaseFeatures(self)\n        autocommit = self.settings_dict[\"OPTIONS\"].get('autocommit', False)\n        self.features.uses_autocommit = autocommit\n        if autocommit:\n            level = psycopg2.extensions.ISOLATION_LEVEL_AUTOCOMMIT\n        else:\n            level = psycopg2.extensions.ISOLATION_LEVEL_READ_COMMITTED\n        self._set_isolation_level(level)\n        self.ops = DatabaseOperations(self)\n        self.client = DatabaseClient(self)\n        self.creation = DatabaseCreation(self)\n        self.introspection = DatabaseIntrospection(self)\n        self.validation = BaseDatabaseValidation(self)\n        self._pg_version = None\n\n    def check_constraints(self, table_names=None):\n        \"\"\"\n        To check constraints, we set constraints to immediate. Then, when, we're done we must ensure they\n        are returned to deferred.\n        \"\"\"\n        self.cursor().execute('SET CONSTRAINTS ALL IMMEDIATE')\n        self.cursor().execute('SET CONSTRAINTS ALL DEFERRED')\n\n    def close(self):\n        self.validate_thread_sharing()\n        if self.connection is None:\n            return\n\n        try:\n            self.connection.close()\n            self.connection = None\n        except Database.Error:\n            # In some cases (database restart, network connection lost etc...)\n            # the connection to the database is lost without giving Django a\n            # notification. If we don't set self.connection to None, the error\n            # will occur a every request.\n            self.connection = None\n            logger.warning('psycopg2 error while closing the connection.',\n                exc_info=sys.exc_info()\n            )\n            raise\n\n    def _get_pg_version(self):\n        if self._pg_version is None:\n            self._pg_version = get_version(self.connection)\n        return self._pg_version\n    pg_version = property(_get_pg_version)\n\n    def _cursor(self):\n        settings_dict = self.settings_dict\n        if self.connection is None:\n            if not settings_dict['NAME']:\n                from django.core.exceptions import ImproperlyConfigured\n                raise ImproperlyConfigured(\n                    \"settings.DATABASES is improperly configured. \"\n                    \"Please supply the NAME value.\")\n            conn_params = {\n                'database': settings_dict['NAME'],\n            }\n            conn_params.update(settings_dict['OPTIONS'])\n            if 'autocommit' in conn_params:\n                del conn_params['autocommit']\n            if settings_dict['USER']:\n                conn_params['user'] = settings_dict['USER']\n            if settings_dict['PASSWORD']:\n                conn_params['password'] = force_str(settings_dict['PASSWORD'])\n            if settings_dict['HOST']:\n                conn_params['host'] = settings_dict['HOST']\n            if settings_dict['PORT']:\n                conn_params['port'] = settings_dict['PORT']\n            self.connection = Database.connect(**conn_params)\n            self.connection.set_client_encoding('UTF8')\n            tz = 'UTC' if settings.USE_TZ else settings_dict.get('TIME_ZONE')\n            if tz:\n                try:\n                    get_parameter_status = self.connection.get_parameter_status\n                except AttributeError:\n                    # psycopg2 < 2.0.12 doesn't have get_parameter_status\n                    conn_tz = None\n                else:\n                    conn_tz = get_parameter_status('TimeZone')\n\n                if conn_tz != tz:\n                    # Set the time zone in autocommit mode (see #17062)\n                    self.connection.set_isolation_level(\n                            psycopg2.extensions.ISOLATION_LEVEL_AUTOCOMMIT)\n                    self.connection.cursor().execute(\n                            self.ops.set_time_zone_sql(), [tz])\n            self.connection.set_isolation_level(self.isolation_level)\n            self._get_pg_version()\n            connection_created.send(sender=self.__class__, connection=self)\n        cursor = self.connection.cursor()\n        cursor.tzinfo_factory = utc_tzinfo_factory if settings.USE_TZ else None\n        return CursorWrapper(cursor)\n\n    def _enter_transaction_management(self, managed):\n        \"\"\"\n        Switch the isolation level when needing transaction support, so that\n        the same transaction is visible across all the queries.\n        \"\"\"\n        if self.features.uses_autocommit and managed and not self.isolation_level:\n            self._set_isolation_level(psycopg2.extensions.ISOLATION_LEVEL_READ_COMMITTED)\n\n    def _leave_transaction_management(self, managed):\n        \"\"\"\n        If the normal operating mode is \"autocommit\", switch back to that when\n        leaving transaction management.\n        \"\"\"\n        if self.features.uses_autocommit and not managed and self.isolation_level:\n            self._set_isolation_level(psycopg2.extensions.ISOLATION_LEVEL_AUTOCOMMIT)\n\n    def _set_isolation_level(self, level):\n        \"\"\"\n        Do all the related feature configurations for changing isolation\n        levels. This doesn't touch the uses_autocommit feature, since that\n        controls the movement *between* isolation levels.\n        \"\"\"\n        assert level in range(5)\n        try:\n            if self.connection is not None:\n                self.connection.set_isolation_level(level)\n        finally:\n            self.isolation_level = level\n            self.features.uses_savepoints = bool(level)\n\n    def _commit(self):\n        if self.connection is not None:\n            try:\n                return self.connection.commit()\n            except Database.IntegrityError as e:\n                six.reraise(utils.IntegrityError, utils.IntegrityError(*tuple(e.args)), sys.exc_info()[2])\n"
  },
  {
    "path": "Django-1.5.1/django/db/backends/postgresql_psycopg2/client.py",
    "content": "import os\nimport sys\n\nfrom django.db.backends import BaseDatabaseClient\n\nclass DatabaseClient(BaseDatabaseClient):\n    executable_name = 'psql'\n\n    def runshell(self):\n        settings_dict = self.connection.settings_dict\n        args = [self.executable_name]\n        if settings_dict['USER']:\n            args += [\"-U\", settings_dict['USER']]\n        if settings_dict['HOST']:\n            args.extend([\"-h\", settings_dict['HOST']])\n        if settings_dict['PORT']:\n            args.extend([\"-p\", str(settings_dict['PORT'])])\n        args += [settings_dict['NAME']]\n        if os.name == 'nt':\n            sys.exit(os.system(\" \".join(args)))\n        else:\n            os.execvp(self.executable_name, args)\n\n"
  },
  {
    "path": "Django-1.5.1/django/db/backends/postgresql_psycopg2/creation.py",
    "content": "import psycopg2.extensions\n\nfrom django.db.backends.creation import BaseDatabaseCreation\nfrom django.db.backends.util import truncate_name\n\n\nclass DatabaseCreation(BaseDatabaseCreation):\n    # This dictionary maps Field objects to their associated PostgreSQL column\n    # types, as strings. Column-type strings can contain format strings; they'll\n    # be interpolated against the values of Field.__dict__ before being output.\n    # If a column type is set to None, it won't be included in the output.\n    data_types = {\n        'AutoField':         'serial',\n        'BooleanField':      'boolean',\n        'CharField':         'varchar(%(max_length)s)',\n        'CommaSeparatedIntegerField': 'varchar(%(max_length)s)',\n        'DateField':         'date',\n        'DateTimeField':     'timestamp with time zone',\n        'DecimalField':      'numeric(%(max_digits)s, %(decimal_places)s)',\n        'FileField':         'varchar(%(max_length)s)',\n        'FilePathField':     'varchar(%(max_length)s)',\n        'FloatField':        'double precision',\n        'IntegerField':      'integer',\n        'BigIntegerField':   'bigint',\n        'IPAddressField':    'inet',\n        'GenericIPAddressField': 'inet',\n        'NullBooleanField':  'boolean',\n        'OneToOneField':     'integer',\n        'PositiveIntegerField': 'integer CHECK (\"%(column)s\" >= 0)',\n        'PositiveSmallIntegerField': 'smallint CHECK (\"%(column)s\" >= 0)',\n        'SlugField':         'varchar(%(max_length)s)',\n        'SmallIntegerField': 'smallint',\n        'TextField':         'text',\n        'TimeField':         'time',\n    }\n\n    def sql_table_creation_suffix(self):\n        assert self.connection.settings_dict['TEST_COLLATION'] is None, \"PostgreSQL does not support collation setting at database creation time.\"\n        if self.connection.settings_dict['TEST_CHARSET']:\n            return \"WITH ENCODING '%s'\" % self.connection.settings_dict['TEST_CHARSET']\n        return ''\n\n    def sql_indexes_for_field(self, model, f, style):\n        output = []\n        if f.db_index or f.unique:\n            qn = self.connection.ops.quote_name\n            db_table = model._meta.db_table\n            tablespace = f.db_tablespace or model._meta.db_tablespace\n            if tablespace:\n                tablespace_sql = self.connection.ops.tablespace_sql(tablespace)\n                if tablespace_sql:\n                    tablespace_sql = ' ' + tablespace_sql\n            else:\n                tablespace_sql = ''\n\n            def get_index_sql(index_name, opclass=''):\n                return (style.SQL_KEYWORD('CREATE INDEX') + ' ' +\n                        style.SQL_TABLE(qn(truncate_name(index_name,self.connection.ops.max_name_length()))) + ' ' +\n                        style.SQL_KEYWORD('ON') + ' ' +\n                        style.SQL_TABLE(qn(db_table)) + ' ' +\n                        \"(%s%s)\" % (style.SQL_FIELD(qn(f.column)), opclass) +\n                        \"%s;\" % tablespace_sql)\n\n            if not f.unique:\n                output = [get_index_sql('%s_%s' % (db_table, f.column))]\n\n            # Fields with database column types of `varchar` and `text` need\n            # a second index that specifies their operator class, which is\n            # needed when performing correct LIKE queries outside the\n            # C locale. See #12234.\n            db_type = f.db_type(connection=self.connection)\n            if db_type.startswith('varchar'):\n                output.append(get_index_sql('%s_%s_like' % (db_table, f.column),\n                                            ' varchar_pattern_ops'))\n            elif db_type.startswith('text'):\n                output.append(get_index_sql('%s_%s_like' % (db_table, f.column),\n                                            ' text_pattern_ops'))\n        return output\n\n    def set_autocommit(self):\n        self._prepare_for_test_db_ddl()\n\n    def _prepare_for_test_db_ddl(self):\n        \"\"\"Rollback and close the active transaction.\"\"\"\n        self.connection.connection.rollback()\n        self.connection.connection.set_isolation_level(\n                psycopg2.extensions.ISOLATION_LEVEL_AUTOCOMMIT)\n"
  },
  {
    "path": "Django-1.5.1/django/db/backends/postgresql_psycopg2/introspection.py",
    "content": "from __future__ import unicode_literals\n\nfrom django.db.backends import BaseDatabaseIntrospection\n\n\nclass DatabaseIntrospection(BaseDatabaseIntrospection):\n    # Maps type codes to Django Field types.\n    data_types_reverse = {\n        16: 'BooleanField',\n        20: 'BigIntegerField',\n        21: 'SmallIntegerField',\n        23: 'IntegerField',\n        25: 'TextField',\n        700: 'FloatField',\n        701: 'FloatField',\n        869: 'GenericIPAddressField',\n        1042: 'CharField', # blank-padded\n        1043: 'CharField',\n        1082: 'DateField',\n        1083: 'TimeField',\n        1114: 'DateTimeField',\n        1184: 'DateTimeField',\n        1266: 'TimeField',\n        1700: 'DecimalField',\n    }\n        \n    def get_table_list(self, cursor):\n        \"Returns a list of table names in the current database.\"\n        cursor.execute(\"\"\"\n            SELECT c.relname\n            FROM pg_catalog.pg_class c\n            LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace\n            WHERE c.relkind IN ('r', 'v', '')\n                AND n.nspname NOT IN ('pg_catalog', 'pg_toast')\n                AND pg_catalog.pg_table_is_visible(c.oid)\"\"\")\n        return [row[0] for row in cursor.fetchall()]\n\n    def get_table_description(self, cursor, table_name):\n        \"Returns a description of the table, with the DB-API cursor.description interface.\"\n        # As cursor.description does not return reliably the nullable property,\n        # we have to query the information_schema (#7783)\n        cursor.execute(\"\"\"\n            SELECT column_name, is_nullable\n            FROM information_schema.columns\n            WHERE table_name = %s\"\"\", [table_name])\n        null_map = dict(cursor.fetchall())\n        cursor.execute(\"SELECT * FROM %s LIMIT 1\" % self.connection.ops.quote_name(table_name))\n        return [line[:6] + (null_map[line[0]]=='YES',)\n                for line in cursor.description]\n\n    def get_relations(self, cursor, table_name):\n        \"\"\"\n        Returns a dictionary of {field_index: (field_index_other_table, other_table)}\n        representing all relationships to the given table. Indexes are 0-based.\n        \"\"\"\n        cursor.execute(\"\"\"\n            SELECT con.conkey, con.confkey, c2.relname\n            FROM pg_constraint con, pg_class c1, pg_class c2\n            WHERE c1.oid = con.conrelid\n                AND c2.oid = con.confrelid\n                AND c1.relname = %s\n                AND con.contype = 'f'\"\"\", [table_name])\n        relations = {}\n        for row in cursor.fetchall():\n            # row[0] and row[1] are single-item lists, so grab the single item.\n            relations[row[0][0] - 1] = (row[1][0] - 1, row[2])\n        return relations\n\n    def get_indexes(self, cursor, table_name):\n        # This query retrieves each index on the given table, including the\n        # first associated field name\n        cursor.execute(\"\"\"\n            SELECT attr.attname, idx.indkey, idx.indisunique, idx.indisprimary\n            FROM pg_catalog.pg_class c, pg_catalog.pg_class c2,\n                pg_catalog.pg_index idx, pg_catalog.pg_attribute attr\n            WHERE c.oid = idx.indrelid\n                AND idx.indexrelid = c2.oid\n                AND attr.attrelid = c.oid\n                AND attr.attnum = idx.indkey[0]\n                AND c.relname = %s\"\"\", [table_name])\n        indexes = {}\n        for row in cursor.fetchall():\n            # row[1] (idx.indkey) is stored in the DB as an array. It comes out as\n            # a string of space-separated integers. This designates the field\n            # indexes (1-based) of the fields that have indexes on the table.\n            # Here, we skip any indexes across multiple fields.\n            if ' ' in row[1]:\n                continue\n            indexes[row[0]] = {'primary_key': row[3], 'unique': row[2]}\n        return indexes\n"
  },
  {
    "path": "Django-1.5.1/django/db/backends/postgresql_psycopg2/operations.py",
    "content": "from __future__ import unicode_literals\n\nfrom django.db.backends import BaseDatabaseOperations\n\n\nclass DatabaseOperations(BaseDatabaseOperations):\n    def __init__(self, connection):\n        super(DatabaseOperations, self).__init__(connection)\n\n    def date_extract_sql(self, lookup_type, field_name):\n        # http://www.postgresql.org/docs/8.0/static/functions-datetime.html#FUNCTIONS-DATETIME-EXTRACT\n        if lookup_type == 'week_day':\n            # For consistency across backends, we return Sunday=1, Saturday=7.\n            return \"EXTRACT('dow' FROM %s) + 1\" % field_name\n        else:\n            return \"EXTRACT('%s' FROM %s)\" % (lookup_type, field_name)\n\n    def date_interval_sql(self, sql, connector, timedelta):\n        \"\"\"\n        implements the interval functionality for expressions\n        format for Postgres:\n            (datefield + interval '3 days 200 seconds 5 microseconds')\n        \"\"\"\n        modifiers = []\n        if timedelta.days:\n            modifiers.append('%s days' % timedelta.days)\n        if timedelta.seconds:\n            modifiers.append('%s seconds' % timedelta.seconds)\n        if timedelta.microseconds:\n            modifiers.append('%s microseconds' % timedelta.microseconds)\n        mods = ' '.join(modifiers)\n        conn = ' %s ' % connector\n        return '(%s)' % conn.join([sql, 'interval \\'%s\\'' % mods])\n\n    def date_trunc_sql(self, lookup_type, field_name):\n        # http://www.postgresql.org/docs/8.0/static/functions-datetime.html#FUNCTIONS-DATETIME-TRUNC\n        return \"DATE_TRUNC('%s', %s)\" % (lookup_type, field_name)\n\n    def deferrable_sql(self):\n        return \" DEFERRABLE INITIALLY DEFERRED\"\n\n    def lookup_cast(self, lookup_type):\n        lookup = '%s'\n\n        # Cast text lookups to text to allow things like filter(x__contains=4)\n        if lookup_type in ('iexact', 'contains', 'icontains', 'startswith',\n                           'istartswith', 'endswith', 'iendswith'):\n            lookup = \"%s::text\"\n\n        # Use UPPER(x) for case-insensitive lookups; it's faster.\n        if lookup_type in ('iexact', 'icontains', 'istartswith', 'iendswith'):\n            lookup = 'UPPER(%s)' % lookup\n\n        return lookup\n\n    def field_cast_sql(self, db_type):\n        if db_type == 'inet':\n            return 'HOST(%s)'\n        return '%s'\n\n    def last_insert_id(self, cursor, table_name, pk_name):\n        # Use pg_get_serial_sequence to get the underlying sequence name\n        # from the table name and column name (available since PostgreSQL 8)\n        cursor.execute(\"SELECT CURRVAL(pg_get_serial_sequence('%s','%s'))\" % (\n            self.quote_name(table_name), pk_name))\n        return cursor.fetchone()[0]\n\n    def no_limit_value(self):\n        return None\n\n    def quote_name(self, name):\n        if name.startswith('\"') and name.endswith('\"'):\n            return name # Quoting once is enough.\n        return '\"%s\"' % name\n\n    def set_time_zone_sql(self):\n        return \"SET TIME ZONE %s\"\n\n    def sql_flush(self, style, tables, sequences):\n        if tables:\n            # Perform a single SQL 'TRUNCATE x, y, z...;' statement.  It allows\n            # us to truncate tables referenced by a foreign key in any other\n            # table.\n            sql = ['%s %s;' % \\\n                (style.SQL_KEYWORD('TRUNCATE'),\n                    style.SQL_FIELD(', '.join([self.quote_name(table) for table in tables]))\n            )]\n            sql.extend(self.sequence_reset_by_name_sql(style, sequences))\n            return sql\n        else:\n            return []\n\n    def sequence_reset_by_name_sql(self, style, sequences):\n        # 'ALTER SEQUENCE sequence_name RESTART WITH 1;'... style SQL statements\n        # to reset sequence indices\n        sql = []\n        for sequence_info in sequences:\n            table_name = sequence_info['table']\n            column_name = sequence_info['column']\n            if not (column_name and len(column_name) > 0):\n                # This will be the case if it's an m2m using an autogenerated\n                # intermediate table (see BaseDatabaseIntrospection.sequence_list)\n                column_name = 'id'\n            sql.append(\"%s setval(pg_get_serial_sequence('%s','%s'), 1, false);\" % \\\n                (style.SQL_KEYWORD('SELECT'),\n                style.SQL_TABLE(self.quote_name(table_name)),\n                style.SQL_FIELD(column_name))\n            )\n        return sql\n\n    def tablespace_sql(self, tablespace, inline=False):\n        if inline:\n            return \"USING INDEX TABLESPACE %s\" % self.quote_name(tablespace)\n        else:\n            return \"TABLESPACE %s\" % self.quote_name(tablespace)\n\n    def sequence_reset_sql(self, style, model_list):\n        from django.db import models\n        output = []\n        qn = self.quote_name\n        for model in model_list:\n            # Use `coalesce` to set the sequence for each model to the max pk value if there are records,\n            # or 1 if there are none. Set the `is_called` property (the third argument to `setval`) to true\n            # if there are records (as the max pk value is already in use), otherwise set it to false.\n            # Use pg_get_serial_sequence to get the underlying sequence name from the table name\n            # and column name (available since PostgreSQL 8)\n\n            for f in model._meta.local_fields:\n                if isinstance(f, models.AutoField):\n                    output.append(\"%s setval(pg_get_serial_sequence('%s','%s'), coalesce(max(%s), 1), max(%s) %s null) %s %s;\" % \\\n                        (style.SQL_KEYWORD('SELECT'),\n                        style.SQL_TABLE(qn(model._meta.db_table)),\n                        style.SQL_FIELD(f.column),\n                        style.SQL_FIELD(qn(f.column)),\n                        style.SQL_FIELD(qn(f.column)),\n                        style.SQL_KEYWORD('IS NOT'),\n                        style.SQL_KEYWORD('FROM'),\n                        style.SQL_TABLE(qn(model._meta.db_table))))\n                    break # Only one AutoField is allowed per model, so don't bother continuing.\n            for f in model._meta.many_to_many:\n                if not f.rel.through:\n                    output.append(\"%s setval(pg_get_serial_sequence('%s','%s'), coalesce(max(%s), 1), max(%s) %s null) %s %s;\" % \\\n                        (style.SQL_KEYWORD('SELECT'),\n                        style.SQL_TABLE(qn(f.m2m_db_table())),\n                        style.SQL_FIELD('id'),\n                        style.SQL_FIELD(qn('id')),\n                        style.SQL_FIELD(qn('id')),\n                        style.SQL_KEYWORD('IS NOT'),\n                        style.SQL_KEYWORD('FROM'),\n                        style.SQL_TABLE(qn(f.m2m_db_table()))))\n        return output\n\n    def savepoint_create_sql(self, sid):\n        return \"SAVEPOINT %s\" % sid\n\n    def savepoint_commit_sql(self, sid):\n        return \"RELEASE SAVEPOINT %s\" % sid\n\n    def savepoint_rollback_sql(self, sid):\n        return \"ROLLBACK TO SAVEPOINT %s\" % sid\n\n    def prep_for_iexact_query(self, x):\n        return x\n\n    def check_aggregate_support(self, aggregate):\n        \"\"\"Check that the backend fully supports the provided aggregate.\n\n        The implementation of population statistics (STDDEV_POP and VAR_POP)\n        under Postgres 8.2 - 8.2.4 is known to be faulty. Raise\n        NotImplementedError if this is the database in use.\n        \"\"\"\n        if aggregate.sql_function in ('STDDEV_POP', 'VAR_POP'):\n            pg_version = self.connection.pg_version\n            if pg_version >= 80200 and pg_version <= 80204:\n                raise NotImplementedError('PostgreSQL 8.2 to 8.2.4 is known to have a faulty implementation of %s. Please upgrade your version of PostgreSQL.' % aggregate.sql_function)\n\n    def max_name_length(self):\n        \"\"\"\n        Returns the maximum length of an identifier.\n\n        Note that the maximum length of an identifier is 63 by default, but can\n        be changed by recompiling PostgreSQL after editing the NAMEDATALEN\n        macro in src/include/pg_config_manual.h .\n\n        This implementation simply returns 63, but can easily be overridden by a\n        custom database backend that inherits most of its behavior from this one.\n        \"\"\"\n\n        return 63\n\n    def distinct_sql(self, fields):\n        if fields:\n            return 'DISTINCT ON (%s)' % ', '.join(fields)\n        else:\n            return 'DISTINCT'\n\n    def last_executed_query(self, cursor, sql, params):\n        # http://initd.org/psycopg/docs/cursor.html#cursor.query\n        # The query attribute is a Psycopg extension to the DB API 2.0.\n        if cursor.query is not None:\n            return cursor.query.decode('utf-8')\n        return None\n\n    def return_insert_id(self):\n        return \"RETURNING %s\", ()\n\n    def bulk_insert_sql(self, fields, num_values):\n        items_sql = \"(%s)\" % \", \".join([\"%s\"] * len(fields))\n        return \"VALUES \" + \", \".join([items_sql] * num_values)\n"
  },
  {
    "path": "Django-1.5.1/django/db/backends/postgresql_psycopg2/version.py",
    "content": "\"\"\"\nExtracts the version of the PostgreSQL server.\n\"\"\"\n\nimport re\n\n# This reg-exp is intentionally fairly flexible here.\n# Needs to be able to handle stuff like:\n#   PostgreSQL 8.3.6\n#   EnterpriseDB 8.3\n#   PostgreSQL 8.3 beta4\n#   PostgreSQL 8.4beta1\nVERSION_RE = re.compile(r'\\S+ (\\d+)\\.(\\d+)\\.?(\\d+)?')\n\n\ndef _parse_version(text):\n    \"Internal parsing method. Factored out for testing purposes.\"\n    major, major2, minor = VERSION_RE.search(text).groups()\n    try:\n        return int(major) * 10000 + int(major2) * 100 + int(minor)\n    except (ValueError, TypeError):\n        return int(major) * 10000 +  int(major2) * 100\n\ndef get_version(connection):\n    \"\"\"\n    Returns an integer representing the major, minor and revision number of the\n    server. Format is the one used for the return value of libpq\n    PQServerVersion()/``server_version`` connection attribute (available in\n    newer psycopg2 versions.)\n\n    For example, 80304 for 8.3.4. The last two digits will be 00 in the case of\n    releases (e.g., 80400 for 'PostgreSQL 8.4') or in the case of beta and\n    prereleases (e.g. 90100 for 'PostgreSQL 9.1beta2').\n\n    PQServerVersion()/``server_version`` doesn't execute a query so try that\n    first, then fallback to a ``SELECT version()`` query.\n    \"\"\"\n    if hasattr(connection, 'server_version'):\n        return connection.server_version\n    else:\n        cursor = connection.cursor()\n        cursor.execute(\"SELECT version()\")\n        return _parse_version(cursor.fetchone()[0])\n"
  },
  {
    "path": "Django-1.5.1/django/db/backends/signals.py",
    "content": "from django.dispatch import Signal\n\nconnection_created = Signal(providing_args=[\"connection\"])\n"
  },
  {
    "path": "Django-1.5.1/django/db/backends/sqlite3/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/db/backends/sqlite3/base.py",
    "content": "\"\"\"\nSQLite3 backend for django.\n\nWorks with either the pysqlite2 module or the sqlite3 module in the\nstandard library.\n\"\"\"\nfrom __future__ import unicode_literals\n\nimport datetime\nimport decimal\nimport warnings\nimport re\nimport sys\n\nfrom django.db import utils\nfrom django.db.backends import *\nfrom django.db.backends.signals import connection_created\nfrom django.db.backends.sqlite3.client import DatabaseClient\nfrom django.db.backends.sqlite3.creation import DatabaseCreation\nfrom django.db.backends.sqlite3.introspection import DatabaseIntrospection\nfrom django.utils.dateparse import parse_date, parse_datetime, parse_time\nfrom django.utils.functional import cached_property\nfrom django.utils.safestring import SafeBytes\nfrom django.utils import six\nfrom django.utils import timezone\n\ntry:\n    try:\n        from pysqlite2 import dbapi2 as Database\n    except ImportError:\n        from sqlite3 import dbapi2 as Database\nexcept ImportError as exc:\n    from django.core.exceptions import ImproperlyConfigured\n    raise ImproperlyConfigured(\"Error loading either pysqlite2 or sqlite3 modules (tried in that order): %s\" % exc)\n\n\nDatabaseError = Database.DatabaseError\nIntegrityError = Database.IntegrityError\n\ndef parse_datetime_with_timezone_support(value):\n    dt = parse_datetime(value)\n    # Confirm that dt is naive before overwriting its tzinfo.\n    if dt is not None and settings.USE_TZ and timezone.is_naive(dt):\n        dt = dt.replace(tzinfo=timezone.utc)\n    return dt\n\ndef adapt_datetime_with_timezone_support(value):\n    # Equivalent to DateTimeField.get_db_prep_value. Used only by raw SQL.\n    if settings.USE_TZ:\n        if timezone.is_naive(value):\n            warnings.warn(\"SQLite received a naive datetime (%s)\"\n                          \" while time zone support is active.\" % value,\n                          RuntimeWarning)\n            default_timezone = timezone.get_default_timezone()\n            value = timezone.make_aware(value, default_timezone)\n        value = value.astimezone(timezone.utc).replace(tzinfo=None)\n    return value.isoformat(str(\" \"))\n\ndef decoder(conv_func):\n    \"\"\" The Python sqlite3 interface returns always byte strings.\n        This function converts the received value to a regular string before\n        passing it to the receiver function.\n    \"\"\"\n    return lambda s: conv_func(s.decode('utf-8'))\n\nDatabase.register_converter(str(\"bool\"), decoder(lambda s: s == '1'))\nDatabase.register_converter(str(\"time\"), decoder(parse_time))\nDatabase.register_converter(str(\"date\"), decoder(parse_date))\nDatabase.register_converter(str(\"datetime\"), decoder(parse_datetime_with_timezone_support))\nDatabase.register_converter(str(\"timestamp\"), decoder(parse_datetime_with_timezone_support))\nDatabase.register_converter(str(\"TIMESTAMP\"), decoder(parse_datetime_with_timezone_support))\nDatabase.register_converter(str(\"decimal\"), decoder(util.typecast_decimal))\n\nDatabase.register_adapter(datetime.datetime, adapt_datetime_with_timezone_support)\nDatabase.register_adapter(decimal.Decimal, util.rev_typecast_decimal)\nif Database.version_info >= (2, 4, 1):\n    # Starting in 2.4.1, the str type is not accepted anymore, therefore,\n    # we convert all str objects to Unicode\n    # As registering a adapter for a primitive type causes a small\n    # slow-down, this adapter is only registered for sqlite3 versions\n    # needing it (Python 2.6 and up).\n    Database.register_adapter(str, lambda s: s.decode('utf-8'))\n    Database.register_adapter(SafeBytes, lambda s: s.decode('utf-8'))\n\nclass DatabaseFeatures(BaseDatabaseFeatures):\n    # SQLite cannot handle us only partially reading from a cursor's result set\n    # and then writing the same rows to the database in another cursor. This\n    # setting ensures we always read result sets fully into memory all in one\n    # go.\n    can_use_chunked_reads = False\n    test_db_allows_multiple_connections = False\n    supports_unspecified_pk = True\n    supports_timezones = False\n    supports_1000_query_parameters = False\n    supports_mixed_date_datetime_comparisons = False\n    has_bulk_insert = True\n    can_combine_inserts_with_and_without_auto_increment_pk = False\n\n    @cached_property\n    def supports_stddev(self):\n        \"\"\"Confirm support for STDDEV and related stats functions\n\n        SQLite supports STDDEV as an extension package; so\n        connection.ops.check_aggregate_support() can't unilaterally\n        rule out support for STDDEV. We need to manually check\n        whether the call works.\n        \"\"\"\n        cursor = self.connection.cursor()\n        cursor.execute('CREATE TABLE STDDEV_TEST (X INT)')\n        try:\n            cursor.execute('SELECT STDDEV(*) FROM STDDEV_TEST')\n            has_support = True\n        except utils.DatabaseError:\n            has_support = False\n        cursor.execute('DROP TABLE STDDEV_TEST')\n        return has_support\n\nclass DatabaseOperations(BaseDatabaseOperations):\n    def bulk_batch_size(self, fields, objs):\n        \"\"\"\n        SQLite has a compile-time default (SQLITE_LIMIT_VARIABLE_NUMBER) of\n        999 variables per query.\n\n        If there is just single field to insert, then we can hit another\n        limit, SQLITE_MAX_COMPOUND_SELECT which defaults to 500.\n        \"\"\"\n        limit = 999 if len(fields) > 1 else 500\n        return (limit // len(fields)) if len(fields) > 0 else len(objs)\n\n    def date_extract_sql(self, lookup_type, field_name):\n        # sqlite doesn't support extract, so we fake it with the user-defined\n        # function django_extract that's registered in connect(). Note that\n        # single quotes are used because this is a string (and could otherwise\n        # cause a collision with a field name).\n        return \"django_extract('%s', %s)\" % (lookup_type.lower(), field_name)\n\n    def date_interval_sql(self, sql, connector, timedelta):\n        # It would be more straightforward if we could use the sqlite strftime\n        # function, but it does not allow for keeping six digits of fractional\n        # second information, nor does it allow for formatting date and datetime\n        # values differently. So instead we register our own function that\n        # formats the datetime combined with the delta in a manner suitable\n        # for comparisons.\n        return  'django_format_dtdelta(%s, \"%s\", \"%d\", \"%d\", \"%d\")' % (sql,\n            connector, timedelta.days, timedelta.seconds, timedelta.microseconds)\n\n    def date_trunc_sql(self, lookup_type, field_name):\n        # sqlite doesn't support DATE_TRUNC, so we fake it with a user-defined\n        # function django_date_trunc that's registered in connect(). Note that\n        # single quotes are used because this is a string (and could otherwise\n        # cause a collision with a field name).\n        return \"django_date_trunc('%s', %s)\" % (lookup_type.lower(), field_name)\n\n    def drop_foreignkey_sql(self):\n        return \"\"\n\n    def pk_default_value(self):\n        return \"NULL\"\n\n    def quote_name(self, name):\n        if name.startswith('\"') and name.endswith('\"'):\n            return name # Quoting once is enough.\n        return '\"%s\"' % name\n\n    def no_limit_value(self):\n        return -1\n\n    def sql_flush(self, style, tables, sequences):\n        # NB: The generated SQL below is specific to SQLite\n        # Note: The DELETE FROM... SQL generated below works for SQLite databases\n        # because constraints don't exist\n        sql = ['%s %s %s;' % \\\n                (style.SQL_KEYWORD('DELETE'),\n                 style.SQL_KEYWORD('FROM'),\n                 style.SQL_FIELD(self.quote_name(table))\n                 ) for table in tables]\n        # Note: No requirement for reset of auto-incremented indices (cf. other\n        # sql_flush() implementations). Just return SQL at this point\n        return sql\n\n    def value_to_db_datetime(self, value):\n        if value is None:\n            return None\n\n        # SQLite doesn't support tz-aware datetimes\n        if timezone.is_aware(value):\n            if settings.USE_TZ:\n                value = value.astimezone(timezone.utc).replace(tzinfo=None)\n            else:\n                raise ValueError(\"SQLite backend does not support timezone-aware datetimes when USE_TZ is False.\")\n\n        return six.text_type(value)\n\n    def value_to_db_time(self, value):\n        if value is None:\n            return None\n\n        # SQLite doesn't support tz-aware datetimes\n        if timezone.is_aware(value):\n            raise ValueError(\"SQLite backend does not support timezone-aware times.\")\n\n        return six.text_type(value)\n\n    def year_lookup_bounds(self, value):\n        first = '%s-01-01'\n        second = '%s-12-31 23:59:59.999999'\n        return [first % value, second % value]\n\n    def convert_values(self, value, field):\n        \"\"\"SQLite returns floats when it should be returning decimals,\n        and gets dates and datetimes wrong.\n        For consistency with other backends, coerce when required.\n        \"\"\"\n        internal_type = field.get_internal_type()\n        if internal_type == 'DecimalField':\n            return util.typecast_decimal(field.format_number(value))\n        elif internal_type and internal_type.endswith('IntegerField') or internal_type == 'AutoField':\n            return int(value)\n        elif internal_type == 'DateField':\n            return parse_date(value)\n        elif internal_type == 'DateTimeField':\n            return parse_datetime_with_timezone_support(value)\n        elif internal_type == 'TimeField':\n            return parse_time(value)\n\n        # No field, or the field isn't known to be a decimal or integer\n        return value\n\n    def bulk_insert_sql(self, fields, num_values):\n        res = []\n        res.append(\"SELECT %s\" % \", \".join(\n            \"%%s AS %s\" % self.quote_name(f.column) for f in fields\n        ))\n        res.extend([\"UNION ALL SELECT %s\" % \", \".join([\"%s\"] * len(fields))] * (num_values - 1))\n        return \" \".join(res)\n\nclass DatabaseWrapper(BaseDatabaseWrapper):\n    vendor = 'sqlite'\n    # SQLite requires LIKE statements to include an ESCAPE clause if the value\n    # being escaped has a percent or underscore in it.\n    # See http://www.sqlite.org/lang_expr.html for an explanation.\n    operators = {\n        'exact': '= %s',\n        'iexact': \"LIKE %s ESCAPE '\\\\'\",\n        'contains': \"LIKE %s ESCAPE '\\\\'\",\n        'icontains': \"LIKE %s ESCAPE '\\\\'\",\n        'regex': 'REGEXP %s',\n        'iregex': \"REGEXP '(?i)' || %s\",\n        'gt': '> %s',\n        'gte': '>= %s',\n        'lt': '< %s',\n        'lte': '<= %s',\n        'startswith': \"LIKE %s ESCAPE '\\\\'\",\n        'endswith': \"LIKE %s ESCAPE '\\\\'\",\n        'istartswith': \"LIKE %s ESCAPE '\\\\'\",\n        'iendswith': \"LIKE %s ESCAPE '\\\\'\",\n    }\n\n    def __init__(self, *args, **kwargs):\n        super(DatabaseWrapper, self).__init__(*args, **kwargs)\n\n        self.features = DatabaseFeatures(self)\n        self.ops = DatabaseOperations(self)\n        self.client = DatabaseClient(self)\n        self.creation = DatabaseCreation(self)\n        self.introspection = DatabaseIntrospection(self)\n        self.validation = BaseDatabaseValidation(self)\n\n    def _sqlite_create_connection(self):\n        settings_dict = self.settings_dict\n        if not settings_dict['NAME']:\n            from django.core.exceptions import ImproperlyConfigured\n            raise ImproperlyConfigured(\n                \"settings.DATABASES is improperly configured. \"\n                \"Please supply the NAME value.\")\n        kwargs = {\n            'database': settings_dict['NAME'],\n            'detect_types': Database.PARSE_DECLTYPES | Database.PARSE_COLNAMES,\n        }\n        kwargs.update(settings_dict['OPTIONS'])\n        # Always allow the underlying SQLite connection to be shareable\n        # between multiple threads. The safe-guarding will be handled at a\n        # higher level by the `BaseDatabaseWrapper.allow_thread_sharing`\n        # property. This is necessary as the shareability is disabled by\n        # default in pysqlite and it cannot be changed once a connection is\n        # opened.\n        if 'check_same_thread' in kwargs and kwargs['check_same_thread']:\n            warnings.warn(\n                'The `check_same_thread` option was provided and set to '\n                'True. It will be overriden with False. Use the '\n                '`DatabaseWrapper.allow_thread_sharing` property instead '\n                'for controlling thread shareability.',\n                RuntimeWarning\n            )\n        kwargs.update({'check_same_thread': False})\n        self.connection = Database.connect(**kwargs)\n        # Register extract, date_trunc, and regexp functions.\n        self.connection.create_function(\"django_extract\", 2, _sqlite_extract)\n        self.connection.create_function(\"django_date_trunc\", 2, _sqlite_date_trunc)\n        self.connection.create_function(\"regexp\", 2, _sqlite_regexp)\n        self.connection.create_function(\"django_format_dtdelta\", 5, _sqlite_format_dtdelta)\n        connection_created.send(sender=self.__class__, connection=self)\n\n    def _cursor(self):\n        if self.connection is None:\n            self._sqlite_create_connection()\n        return self.connection.cursor(factory=SQLiteCursorWrapper)\n\n    def check_constraints(self, table_names=None):\n        \"\"\"\n        Checks each table name in `table_names` for rows with invalid foreign key references. This method is\n        intended to be used in conjunction with `disable_constraint_checking()` and `enable_constraint_checking()`, to\n        determine if rows with invalid references were entered while constraint checks were off.\n\n        Raises an IntegrityError on the first invalid foreign key reference encountered (if any) and provides\n        detailed information about the invalid reference in the error message.\n\n        Backends can override this method if they can more directly apply constraint checking (e.g. via \"SET CONSTRAINTS\n        ALL IMMEDIATE\")\n        \"\"\"\n        cursor = self.cursor()\n        if table_names is None:\n            table_names = self.introspection.table_names(cursor)\n        for table_name in table_names:\n            primary_key_column_name = self.introspection.get_primary_key_column(cursor, table_name)\n            if not primary_key_column_name:\n                continue\n            key_columns = self.introspection.get_key_columns(cursor, table_name)\n            for column_name, referenced_table_name, referenced_column_name in key_columns:\n                cursor.execute(\"\"\"\n                    SELECT REFERRING.`%s`, REFERRING.`%s` FROM `%s` as REFERRING\n                    LEFT JOIN `%s` as REFERRED\n                    ON (REFERRING.`%s` = REFERRED.`%s`)\n                    WHERE REFERRING.`%s` IS NOT NULL AND REFERRED.`%s` IS NULL\"\"\"\n                    % (primary_key_column_name, column_name, table_name, referenced_table_name,\n                    column_name, referenced_column_name, column_name, referenced_column_name))\n                for bad_row in cursor.fetchall():\n                    raise utils.IntegrityError(\"The row in table '%s' with primary key '%s' has an invalid \"\n                        \"foreign key: %s.%s contains a value '%s' that does not have a corresponding value in %s.%s.\"\n                        % (table_name, bad_row[0], table_name, column_name, bad_row[1],\n                        referenced_table_name, referenced_column_name))\n\n    def close(self):\n        self.validate_thread_sharing()\n        # If database is in memory, closing the connection destroys the\n        # database. To prevent accidental data loss, ignore close requests on\n        # an in-memory db.\n        if self.settings_dict['NAME'] != \":memory:\":\n            BaseDatabaseWrapper.close(self)\n\nFORMAT_QMARK_REGEX = re.compile(r'(?<!%)%s')\n\nclass SQLiteCursorWrapper(Database.Cursor):\n    \"\"\"\n    Django uses \"format\" style placeholders, but pysqlite2 uses \"qmark\" style.\n    This fixes it -- but note that if you want to use a literal \"%s\" in a query,\n    you'll need to use \"%%s\".\n    \"\"\"\n    def execute(self, query, params=()):\n        query = self.convert_query(query)\n        try:\n            return Database.Cursor.execute(self, query, params)\n        except Database.IntegrityError as e:\n            six.reraise(utils.IntegrityError, utils.IntegrityError(*tuple(e.args)), sys.exc_info()[2])\n        except Database.DatabaseError as e:\n            six.reraise(utils.DatabaseError, utils.DatabaseError(*tuple(e.args)), sys.exc_info()[2])\n\n    def executemany(self, query, param_list):\n        query = self.convert_query(query)\n        try:\n            return Database.Cursor.executemany(self, query, param_list)\n        except Database.IntegrityError as e:\n            six.reraise(utils.IntegrityError, utils.IntegrityError(*tuple(e.args)), sys.exc_info()[2])\n        except Database.DatabaseError as e:\n            six.reraise(utils.DatabaseError, utils.DatabaseError(*tuple(e.args)), sys.exc_info()[2])\n\n    def convert_query(self, query):\n        return FORMAT_QMARK_REGEX.sub('?', query).replace('%%','%')\n\ndef _sqlite_extract(lookup_type, dt):\n    if dt is None:\n        return None\n    try:\n        dt = util.typecast_timestamp(dt)\n    except (ValueError, TypeError):\n        return None\n    if lookup_type == 'week_day':\n        return (dt.isoweekday() % 7) + 1\n    else:\n        return getattr(dt, lookup_type)\n\ndef _sqlite_date_trunc(lookup_type, dt):\n    try:\n        dt = util.typecast_timestamp(dt)\n    except (ValueError, TypeError):\n        return None\n    if lookup_type == 'year':\n        return \"%i-01-01 00:00:00\" % dt.year\n    elif lookup_type == 'month':\n        return \"%i-%02i-01 00:00:00\" % (dt.year, dt.month)\n    elif lookup_type == 'day':\n        return \"%i-%02i-%02i 00:00:00\" % (dt.year, dt.month, dt.day)\n\ndef _sqlite_format_dtdelta(dt, conn, days, secs, usecs):\n    try:\n        dt = util.typecast_timestamp(dt)\n        delta = datetime.timedelta(int(days), int(secs), int(usecs))\n        if conn.strip() == '+':\n            dt = dt + delta\n        else:\n            dt = dt - delta\n    except (ValueError, TypeError):\n        return None\n    # typecast_timestamp returns a date or a datetime without timezone.\n    # It will be formatted as \"%Y-%m-%d\" or \"%Y-%m-%d %H:%M:%S[.%f]\"\n    return str(dt)\n\ndef _sqlite_regexp(re_pattern, re_string):\n    return bool(re.search(re_pattern, re_string))\n"
  },
  {
    "path": "Django-1.5.1/django/db/backends/sqlite3/client.py",
    "content": "import os\nimport sys\n\nfrom django.db.backends import BaseDatabaseClient\n\nclass DatabaseClient(BaseDatabaseClient):\n    executable_name = 'sqlite3'\n\n    def runshell(self):\n        args = [self.executable_name,\n                self.connection.settings_dict['NAME']]\n        if os.name == 'nt':\n            sys.exit(os.system(\" \".join(args)))\n        else:\n            os.execvp(self.executable_name, args)\n\n"
  },
  {
    "path": "Django-1.5.1/django/db/backends/sqlite3/creation.py",
    "content": "import os\nimport sys\nfrom django.db.backends.creation import BaseDatabaseCreation\nfrom django.utils.six.moves import input\n\nclass DatabaseCreation(BaseDatabaseCreation):\n    # SQLite doesn't actually support most of these types, but it \"does the right\n    # thing\" given more verbose field definitions, so leave them as is so that\n    # schema inspection is more useful.\n    data_types = {\n        'AutoField':                    'integer',\n        'BooleanField':                 'bool',\n        'CharField':                    'varchar(%(max_length)s)',\n        'CommaSeparatedIntegerField':   'varchar(%(max_length)s)',\n        'DateField':                    'date',\n        'DateTimeField':                'datetime',\n        'DecimalField':                 'decimal',\n        'FileField':                    'varchar(%(max_length)s)',\n        'FilePathField':                'varchar(%(max_length)s)',\n        'FloatField':                   'real',\n        'IntegerField':                 'integer',\n        'BigIntegerField':              'bigint',\n        'IPAddressField':               'char(15)',\n        'GenericIPAddressField':        'char(39)',\n        'NullBooleanField':             'bool',\n        'OneToOneField':                'integer',\n        'PositiveIntegerField':         'integer unsigned',\n        'PositiveSmallIntegerField':    'smallint unsigned',\n        'SlugField':                    'varchar(%(max_length)s)',\n        'SmallIntegerField':            'smallint',\n        'TextField':                    'text',\n        'TimeField':                    'time',\n    }\n\n    def sql_for_pending_references(self, model, style, pending_references):\n        \"SQLite3 doesn't support constraints\"\n        return []\n\n    def sql_remove_table_constraints(self, model, references_to_delete, style):\n        \"SQLite3 doesn't support constraints\"\n        return []\n\n    def _get_test_db_name(self):\n        test_database_name = self.connection.settings_dict['TEST_NAME']\n        if test_database_name and test_database_name != ':memory:':\n            return test_database_name\n        return ':memory:'\n\n    def _create_test_db(self, verbosity, autoclobber):\n        test_database_name = self._get_test_db_name()\n        if test_database_name != ':memory:':\n            # Erase the old test database\n            if verbosity >= 1:\n                print(\"Destroying old test database '%s'...\" % self.connection.alias)\n            if os.access(test_database_name, os.F_OK):\n                if not autoclobber:\n                    confirm = input(\"Type 'yes' if you would like to try deleting the test database '%s', or 'no' to cancel: \" % test_database_name)\n                if autoclobber or confirm == 'yes':\n                    try:\n                        os.remove(test_database_name)\n                    except Exception as e:\n                        sys.stderr.write(\"Got an error deleting the old test database: %s\\n\" % e)\n                        sys.exit(2)\n                else:\n                    print(\"Tests cancelled.\")\n                    sys.exit(1)\n        return test_database_name\n\n    def _destroy_test_db(self, test_database_name, verbosity):\n        if test_database_name and test_database_name != \":memory:\":\n            # Remove the SQLite database file\n            os.remove(test_database_name)\n\n    def set_autocommit(self):\n        self.connection.connection.isolation_level = None\n\n    def test_db_signature(self):\n        \"\"\"\n        Returns a tuple that uniquely identifies a test database.\n\n        This takes into account the special cases of \":memory:\" and \"\" for\n        SQLite since the databases will be distinct despite having the same\n        TEST_NAME. See http://www.sqlite.org/inmemorydb.html\n        \"\"\"\n        settings_dict = self.connection.settings_dict\n        test_dbname = self._get_test_db_name()\n        sig = [self.connection.settings_dict['NAME']]\n        if test_dbname == ':memory:':\n            sig.append(self.connection.alias)\n        return tuple(sig)\n"
  },
  {
    "path": "Django-1.5.1/django/db/backends/sqlite3/introspection.py",
    "content": "import re\nfrom django.db.backends import BaseDatabaseIntrospection\n\nfield_size_re = re.compile(r'^\\s*(?:var)?char\\s*\\(\\s*(\\d+)\\s*\\)\\s*$')\n\ndef get_field_size(name):\n    \"\"\" Extract the size number from a \"varchar(11)\" type name \"\"\"\n    m = field_size_re.search(name)\n    return int(m.group(1)) if m else None\n\n\n# This light wrapper \"fakes\" a dictionary interface, because some SQLite data\n# types include variables in them -- e.g. \"varchar(30)\" -- and can't be matched\n# as a simple dictionary lookup.\nclass FlexibleFieldLookupDict(object):\n    # Maps SQL types to Django Field types. Some of the SQL types have multiple\n    # entries here because SQLite allows for anything and doesn't normalize the\n    # field type; it uses whatever was given.\n    base_data_types_reverse = {\n        'bool': 'BooleanField',\n        'boolean': 'BooleanField',\n        'smallint': 'SmallIntegerField',\n        'smallint unsigned': 'PositiveSmallIntegerField',\n        'smallinteger': 'SmallIntegerField',\n        'int': 'IntegerField',\n        'integer': 'IntegerField',\n        'bigint': 'BigIntegerField',\n        'integer unsigned': 'PositiveIntegerField',\n        'decimal': 'DecimalField',\n        'real': 'FloatField',\n        'text': 'TextField',\n        'char': 'CharField',\n        'date': 'DateField',\n        'datetime': 'DateTimeField',\n        'time': 'TimeField',\n    }\n\n    def __getitem__(self, key):\n        key = key.lower()\n        try:\n            return self.base_data_types_reverse[key]\n        except KeyError:\n            size = get_field_size(key)\n            if size is not None:\n                return ('CharField', {'max_length': size})\n            raise KeyError\n\nclass DatabaseIntrospection(BaseDatabaseIntrospection):\n    data_types_reverse = FlexibleFieldLookupDict()\n\n    def get_table_list(self, cursor):\n        \"Returns a list of table names in the current database.\"\n        # Skip the sqlite_sequence system table used for autoincrement key\n        # generation.\n        cursor.execute(\"\"\"\n            SELECT name FROM sqlite_master\n            WHERE type='table' AND NOT name='sqlite_sequence'\n            ORDER BY name\"\"\")\n        return [row[0] for row in cursor.fetchall()]\n\n    def get_table_description(self, cursor, table_name):\n        \"Returns a description of the table, with the DB-API cursor.description interface.\"\n        return [(info['name'], info['type'], None, info['size'], None, None,\n                 info['null_ok']) for info in self._table_info(cursor, table_name)]\n\n    def get_relations(self, cursor, table_name):\n        \"\"\"\n        Returns a dictionary of {field_index: (field_index_other_table, other_table)}\n        representing all relationships to the given table. Indexes are 0-based.\n        \"\"\"\n\n        # Dictionary of relations to return\n        relations = {}\n\n        # Schema for this table\n        cursor.execute(\"SELECT sql FROM sqlite_master WHERE tbl_name = %s AND type = %s\", [table_name, \"table\"])\n        results = cursor.fetchone()[0].strip()\n        results = results[results.index('(')+1:results.rindex(')')]\n\n        # Walk through and look for references to other tables. SQLite doesn't\n        # really have enforced references, but since it echoes out the SQL used\n        # to create the table we can look for REFERENCES statements used there.\n        for field_index, field_desc in enumerate(results.split(',')):\n            field_desc = field_desc.strip()\n            if field_desc.startswith(\"UNIQUE\"):\n                continue\n\n            m = re.search('references (.*) \\([\"|](.*)[\"|]\\)', field_desc, re.I)\n            if not m:\n                continue\n\n            table, column = [s.strip('\"') for s in m.groups()]\n\n            cursor.execute(\"SELECT sql FROM sqlite_master WHERE tbl_name = %s\", [table])\n            result = cursor.fetchall()[0]\n            other_table_results = result[0].strip()\n            li, ri = other_table_results.index('('), other_table_results.rindex(')')\n            other_table_results = other_table_results[li+1:ri]\n\n\n            for other_index, other_desc in enumerate(other_table_results.split(',')):\n                other_desc = other_desc.strip()\n                if other_desc.startswith('UNIQUE'):\n                    continue\n\n                name = other_desc.split(' ', 1)[0].strip('\"')\n                if name == column:\n                    relations[field_index] = (other_index, table)\n                    break\n\n        return relations\n\n    def get_key_columns(self, cursor, table_name):\n        \"\"\"\n        Returns a list of (column_name, referenced_table_name, referenced_column_name) for all\n        key columns in given table.\n        \"\"\"\n        key_columns = []\n\n        # Schema for this table\n        cursor.execute(\"SELECT sql FROM sqlite_master WHERE tbl_name = %s AND type = %s\", [table_name, \"table\"])\n        results = cursor.fetchone()[0].strip()\n        results = results[results.index('(')+1:results.rindex(')')]\n\n        # Walk through and look for references to other tables. SQLite doesn't\n        # really have enforced references, but since it echoes out the SQL used\n        # to create the table we can look for REFERENCES statements used there.\n        for field_index, field_desc in enumerate(results.split(',')):\n            field_desc = field_desc.strip()\n            if field_desc.startswith(\"UNIQUE\"):\n                continue\n\n            m = re.search('\"(.*)\".*references (.*) \\([\"|](.*)[\"|]\\)', field_desc, re.I)\n            if not m:\n                continue\n\n            # This will append (column_name, referenced_table_name, referenced_column_name) to key_columns\n            key_columns.append(tuple([s.strip('\"') for s in m.groups()]))\n\n        return key_columns\n\n    def get_indexes(self, cursor, table_name):\n        indexes = {}\n        for info in self._table_info(cursor, table_name):\n            if info['pk'] != 0:\n                indexes[info['name']] = {'primary_key': True,\n                                         'unique': False}\n        cursor.execute('PRAGMA index_list(%s)' % self.connection.ops.quote_name(table_name))\n        # seq, name, unique\n        for index, unique in [(field[1], field[2]) for field in cursor.fetchall()]:\n            cursor.execute('PRAGMA index_info(%s)' % self.connection.ops.quote_name(index))\n            info = cursor.fetchall()\n            # Skip indexes across multiple fields\n            if len(info) != 1:\n                continue\n            name = info[0][2] # seqno, cid, name\n            indexes[name] = {'primary_key': False,\n                             'unique': unique}\n        return indexes\n\n    def get_primary_key_column(self, cursor, table_name):\n        \"\"\"\n        Get the column name of the primary key for the given table.\n        \"\"\"\n        # Don't use PRAGMA because that causes issues with some transactions\n        cursor.execute(\"SELECT sql FROM sqlite_master WHERE tbl_name = %s AND type = %s\", [table_name, \"table\"])\n        results = cursor.fetchone()[0].strip()\n        results = results[results.index('(')+1:results.rindex(')')]\n        for field_desc in results.split(','):\n            field_desc = field_desc.strip()\n            m = re.search('\"(.*)\".*PRIMARY KEY$', field_desc)\n            if m:\n                return m.groups()[0]\n        return None\n\n    def _table_info(self, cursor, name):\n        cursor.execute('PRAGMA table_info(%s)' % self.connection.ops.quote_name(name))\n        # cid, name, type, notnull, dflt_value, pk\n        return [{'name': field[1],\n                 'type': field[2],\n                 'size': get_field_size(field[2]),\n                 'null_ok': not field[3],\n                 'pk': field[5]     # undocumented\n                 } for field in cursor.fetchall()]\n"
  },
  {
    "path": "Django-1.5.1/django/db/backends/util.py",
    "content": "from __future__ import unicode_literals\n\nimport datetime\nimport decimal\nimport hashlib\nimport logging\nfrom time import time\n\nfrom django.conf import settings\nfrom django.utils.encoding import force_bytes\nfrom django.utils.timezone import utc\n\n\nlogger = logging.getLogger('django.db.backends')\n\n\nclass CursorWrapper(object):\n    def __init__(self, cursor, db):\n        self.cursor = cursor\n        self.db = db\n\n    def set_dirty(self):\n        if self.db.is_managed():\n            self.db.set_dirty()\n\n    def __getattr__(self, attr):\n        if attr in ('execute', 'executemany', 'callproc'):\n            self.set_dirty()\n        return getattr(self.cursor, attr)\n\n    def __iter__(self):\n        return iter(self.cursor)\n\n\nclass CursorDebugWrapper(CursorWrapper):\n\n    def execute(self, sql, params=()):\n        self.set_dirty()\n        start = time()\n        try:\n            return self.cursor.execute(sql, params)\n        finally:\n            stop = time()\n            duration = stop - start\n            sql = self.db.ops.last_executed_query(self.cursor, sql, params)\n            self.db.queries.append({\n                'sql': sql,\n                'time': \"%.3f\" % duration,\n            })\n            logger.debug('(%.3f) %s; args=%s' % (duration, sql, params),\n                extra={'duration': duration, 'sql': sql, 'params': params}\n            )\n\n    def executemany(self, sql, param_list):\n        self.set_dirty()\n        start = time()\n        try:\n            return self.cursor.executemany(sql, param_list)\n        finally:\n            stop = time()\n            duration = stop - start\n            try:\n                times = len(param_list)\n            except TypeError:           # param_list could be an iterator\n                times = '?'\n            self.db.queries.append({\n                'sql': '%s times: %s' % (times, sql),\n                'time': \"%.3f\" % duration,\n            })\n            logger.debug('(%.3f) %s; args=%s' % (duration, sql, param_list),\n                extra={'duration': duration, 'sql': sql, 'params': param_list}\n            )\n\n\n###############################################\n# Converters from database (string) to Python #\n###############################################\n\ndef typecast_date(s):\n    return s and datetime.date(*map(int, s.split('-'))) or None # returns None if s is null\n\ndef typecast_time(s): # does NOT store time zone information\n    if not s: return None\n    hour, minutes, seconds = s.split(':')\n    if '.' in seconds: # check whether seconds have a fractional part\n        seconds, microseconds = seconds.split('.')\n    else:\n        microseconds = '0'\n    return datetime.time(int(hour), int(minutes), int(seconds), int(float('.'+microseconds) * 1000000))\n\ndef typecast_timestamp(s): # does NOT store time zone information\n    # \"2005-07-29 15:48:00.590358-05\"\n    # \"2005-07-29 09:56:00-05\"\n    if not s: return None\n    if not ' ' in s: return typecast_date(s)\n    d, t = s.split()\n    # Extract timezone information, if it exists. Currently we just throw\n    # it away, but in the future we may make use of it.\n    if '-' in t:\n        t, tz = t.split('-', 1)\n        tz = '-' + tz\n    elif '+' in t:\n        t, tz = t.split('+', 1)\n        tz = '+' + tz\n    else:\n        tz = ''\n    dates = d.split('-')\n    times = t.split(':')\n    seconds = times[2]\n    if '.' in seconds: # check whether seconds have a fractional part\n        seconds, microseconds = seconds.split('.')\n    else:\n        microseconds = '0'\n    tzinfo = utc if settings.USE_TZ else None\n    return datetime.datetime(int(dates[0]), int(dates[1]), int(dates[2]),\n        int(times[0]), int(times[1]), int(seconds),\n        int((microseconds + '000000')[:6]), tzinfo)\n\ndef typecast_decimal(s):\n    if s is None or s == '':\n        return None\n    return decimal.Decimal(s)\n\n###############################################\n# Converters from Python to database (string) #\n###############################################\n\ndef rev_typecast_decimal(d):\n    if d is None:\n        return None\n    return str(d)\n\ndef truncate_name(name, length=None, hash_len=4):\n    \"\"\"Shortens a string to a repeatable mangled version with the given length.\n    \"\"\"\n    if length is None or len(name) <= length:\n        return name\n\n    hsh = hashlib.md5(force_bytes(name)).hexdigest()[:hash_len]\n    return '%s%s' % (name[:length-hash_len], hsh)\n\ndef format_number(value, max_digits, decimal_places):\n    \"\"\"\n    Formats a number into a string with the requisite number of digits and\n    decimal places.\n    \"\"\"\n    if isinstance(value, decimal.Decimal):\n        context = decimal.getcontext().copy()\n        context.prec = max_digits\n        return '%s' % str(value.quantize(decimal.Decimal(\".1\") ** decimal_places, context=context))\n    else:\n        return \"%.*f\" % (decimal_places, value)\n"
  },
  {
    "path": "Django-1.5.1/django/db/models/__init__.py",
    "content": "from django.conf import settings\nfrom django.core.exceptions import ObjectDoesNotExist, ImproperlyConfigured\nfrom django.db import connection\nfrom django.db.models.loading import get_apps, get_app, get_models, get_model, register_models\nfrom django.db.models.query import Q\nfrom django.db.models.expressions import F\nfrom django.db.models.manager import Manager\nfrom django.db.models.base import Model\nfrom django.db.models.aggregates import *\nfrom django.db.models.fields import *\nfrom django.db.models.fields.subclassing import SubfieldBase\nfrom django.db.models.fields.files import FileField, ImageField\nfrom django.db.models.fields.related import ForeignKey, OneToOneField, ManyToManyField, ManyToOneRel, ManyToManyRel, OneToOneRel\nfrom django.db.models.deletion import CASCADE, PROTECT, SET, SET_NULL, SET_DEFAULT, DO_NOTHING, ProtectedError\nfrom django.db.models import signals\nfrom django.utils.decorators import wraps\n\n\ndef permalink(func):\n    \"\"\"\n    Decorator that calls urlresolvers.reverse() to return a URL using\n    parameters returned by the decorated function \"func\".\n\n    \"func\" should be a function that returns a tuple in one of the\n    following formats:\n        (viewname, viewargs)\n        (viewname, viewargs, viewkwargs)\n    \"\"\"\n    from django.core.urlresolvers import reverse\n    @wraps(func)\n    def inner(*args, **kwargs):\n        bits = func(*args, **kwargs)\n        return reverse(bits[0], None, *bits[1:3])\n    return inner\n"
  },
  {
    "path": "Django-1.5.1/django/db/models/aggregates.py",
    "content": "\"\"\"\nClasses to represent the definitions of aggregate functions.\n\"\"\"\n\nclass Aggregate(object):\n    \"\"\"\n    Default Aggregate definition.\n    \"\"\"\n    def __init__(self, lookup, **extra):\n        \"\"\"Instantiate a new aggregate.\n\n         * lookup is the field on which the aggregate operates.\n         * extra is a dictionary of additional data to provide for the\n           aggregate definition\n\n        Also utilizes the class variables:\n         * name, the identifier for this aggregate function.\n        \"\"\"\n        self.lookup = lookup\n        self.extra = extra\n\n    def _default_alias(self):\n        return '%s__%s' % (self.lookup, self.name.lower())\n    default_alias = property(_default_alias)\n\n    def add_to_query(self, query, alias, col, source, is_summary):\n        \"\"\"Add the aggregate to the nominated query.\n\n        This method is used to convert the generic Aggregate definition into a\n        backend-specific definition.\n\n         * query is the backend-specific query instance to which the aggregate\n           is to be added.\n         * col is a column reference describing the subject field\n           of the aggregate. It can be an alias, or a tuple describing\n           a table and column name.\n         * source is the underlying field or aggregate definition for\n           the column reference. If the aggregate is not an ordinal or\n           computed type, this reference is used to determine the coerced\n           output type of the aggregate.\n         * is_summary is a boolean that is set True if the aggregate is a\n           summary value rather than an annotation.\n        \"\"\"\n        klass = getattr(query.aggregates_module, self.name)\n        aggregate = klass(col, source=source, is_summary=is_summary, **self.extra)\n        query.aggregates[alias] = aggregate\n\nclass Avg(Aggregate):\n    name = 'Avg'\n\nclass Count(Aggregate):\n    name = 'Count'\n\nclass Max(Aggregate):\n    name = 'Max'\n\nclass Min(Aggregate):\n    name = 'Min'\n\nclass StdDev(Aggregate):\n    name = 'StdDev'\n\nclass Sum(Aggregate):\n    name = 'Sum'\n\nclass Variance(Aggregate):\n    name = 'Variance'\n"
  },
  {
    "path": "Django-1.5.1/django/db/models/base.py",
    "content": "from __future__ import unicode_literals\n\nimport copy\nimport sys\nfrom functools import update_wrapper\nfrom django.utils.six.moves import zip\n\nimport django.db.models.manager  # Imported to register signal handler.\nfrom django.conf import settings\nfrom django.core.exceptions import (ObjectDoesNotExist,\n    MultipleObjectsReturned, FieldError, ValidationError, NON_FIELD_ERRORS)\nfrom django.core import validators\nfrom django.db.models.fields import AutoField, FieldDoesNotExist\nfrom django.db.models.fields.related import (ManyToOneRel,\n    OneToOneField, add_lazy_relation)\nfrom django.db import (router, transaction, DatabaseError,\n    DEFAULT_DB_ALIAS)\nfrom django.db.models.query import Q\nfrom django.db.models.query_utils import DeferredAttribute, deferred_class_factory\nfrom django.db.models.deletion import Collector\nfrom django.db.models.options import Options\nfrom django.db.models import signals\nfrom django.db.models.loading import register_models, get_model\nfrom django.utils.translation import ugettext_lazy as _\nfrom django.utils.functional import curry\nfrom django.utils.encoding import force_str, force_text\nfrom django.utils import six\nfrom django.utils.text import get_text_list, capfirst\n\n\ndef subclass_exception(name, parents, module, attached_to=None):\n    \"\"\"\n    Create exception subclass. Used by ModelBase below.\n\n    If 'attached_to' is supplied, the exception will be created in a way that\n    allows it to be pickled, assuming the returned exception class will be added\n    as an attribute to the 'attached_to' class.\n    \"\"\"\n    class_dict = {'__module__': module}\n    if attached_to is not None:\n        def __reduce__(self):\n            # Exceptions are special - they've got state that isn't\n            # in self.__dict__. We assume it is all in self.args.\n            return (unpickle_inner_exception, (attached_to, name), self.args)\n\n        def __setstate__(self, args):\n            self.args = args\n\n        class_dict['__reduce__'] = __reduce__\n        class_dict['__setstate__'] = __setstate__\n\n    return type(name, parents, class_dict)\n\nModelBase 是一种类型\nclass ModelBase(type):\n    \"\"\"\n    Metaclass for all models.\n    \"\"\"\n    def __new__(cls, name, bases, attrs):\n        super_new = super(ModelBase, cls).__new__\n\n        # six.with_metaclass() inserts an extra class called 'NewBase' in the\n        # inheritance tree: Model -> NewBase -> object. But the initialization\n        # should be executed only once for a given model class.\n\n        # attrs will never be empty for classes declared in the standard way\n        # (ie. with the `class` keyword). This is quite robust.\n        if name == 'NewBase' and attrs == {}:\n            return super_new(cls, name, bases, attrs)\n\n        # Also ensure initialization is only performed for subclasses of Model\n        # (excluding Model class itself).\n        parents = [b for b in bases if isinstance(b, ModelBase) and\n                not (b.__name__ == 'NewBase' and b.__mro__ == (b, object))]\n\n        if not parents:\n            return super_new(cls, name, bases, attrs)\n\n        # Create the class.\n        module = attrs.pop('__module__')\n        new_class = super_new(cls, name, bases, {'__module__': module}) 新建类\n\n        # 从参数 attrs 中获取 Meta 属性\n        attr_meta = attrs.pop('Meta', None)\n\n        abstract = getattr(attr_meta, 'abstract', False)\n\n        if not attr_meta: 如果 attr_meta 为空\n            \"\"\"\n            此处关于 Meta, 它是一个类, 可以在定义模块的时候, 添加需要的选项\n            class OrderedPerson(Person):\n                class Meta:\n                    ordering = [\"last_name\"]\n                    proxy = True\n\n            更多关于 Meta 参见:\n            https://docs.djangoproject.com/en/dev/topics/db/models/\n\n            所以在这里 meta = new_class.Meta\n            \"\"\"\n            meta = getattr(new_class, 'Meta', None)\n        else:\n            否则 meta 就是从参数 attrs 中获得的 Meta\n            meta = attr_meta\n\n        base_meta = getattr(new_class, '_meta', None)\n\n        \"\"\"\n        有关 app_label 参见:\n        Options.app_label\n        If a model exists outside of the standard locations (models.py or a models package in an app), the model must define which app it is part of:\n                `app_label = 'myapp'\n        \"\"\"\n\n        if getattr(meta, 'app_label', None) is None:\n            计算得出应用名\n            # Figure out the app_label by looking one level up.\n            # For 'django.contrib.sites.models', this would be 'sites'.\n            model_module = sys.modules[new_class.__module__]\n            kwargs = {\"app_label\": model_module.__name__.split('.')[-2]}\n        else:\n            kwargs = {}\n\n        \"\"\"new_class._meta 在这里添加, 值为 Options 对象\"\"\"\n        new_class.add_to_class('_meta', Options(meta, **kwargs))\n\n        if not abstract:\n            new_class.add_to_class('DoesNotExist', subclass_exception(str('DoesNotExist'),\n                    tuple(x.DoesNotExist\n                          for x in parents if hasattr(x, '_meta') and not x._meta.abstract)\n                    or (ObjectDoesNotExist,),\n                    module, attached_to=new_class))\n\n            new_class.add_to_class('MultipleObjectsReturned', subclass_exception(str('MultipleObjectsReturned'),\n                    tuple(x.MultipleObjectsReturned\n                          for x in parents if hasattr(x, '_meta') and not x._meta.abstract)\n                    or (MultipleObjectsReturned,),\n                    module, attached_to=new_class))\n\n            if base_meta and not base_meta.abstract:\n                # Non-abstract child classes inherit some attributes from their\n                # non-abstract parent (unless an ABC comes before it in the\n                # method resolution order).\n                if not hasattr(meta, 'ordering'):\n                    new_class._meta.ordering = base_meta.ordering\n\n                if not hasattr(meta, 'get_latest_by'):\n                    new_class._meta.get_latest_by = base_meta.get_latest_by\n\n        # 更多关于 models proxy 请参见: https://docs.djangoproject.com/en/dev/topics/db/models/#proxy-models\n        is_proxy = new_class._meta.proxy\n\n        # If the model is a proxy, ensure that the base class\n        # hasn't been swapped out.\n        if is_proxy and base_meta and base_meta.swapped:\n            raise TypeError(\"%s cannot proxy the swapped model '%s'.\" % (name, base_meta.swapped))\n\n        # 每一个 model 都有一个 manager, 在 django.db.models.manager 中定义\n        if getattr(new_class, '_default_manager', None):\n            if not is_proxy:\n                # Multi-table inheritance doesn't inherit default manager from\n                # parents.\n                new_class._default_manager = None\n                new_class._base_manager = None\n            else:\n                # Proxy classes do inherit parent's default manager, if none is\n                # set explicitly. 管理器继承自父类\n                new_class._default_manager = new_class._default_manager._copy_to_model(new_class)\n                new_class._base_manager = new_class._base_manager._copy_to_model(new_class)\n\n        # Bail out early if we have already created this class.\n        m = get_model(new_class._meta.app_label, name,\n                      seed_cache=False, only_installed=False)\n        if m is not None:\n            return m\n\n        将所有的属性都添加到 new_class 中\n        # Add all attributes to the class.\n        for obj_name, obj in attrs.items():\n            new_class.add_to_class(obj_name, obj)\n\n        # All the fields of any type declared on this model\n        new_fields = new_class._meta.local_fields + \\\n                     new_class._meta.local_many_to_many + \\\n                     new_class._meta.virtual_fields\n        field_names = set([f.name for f in new_fields])\n\n        # Basic setup for proxy models.\n        if is_proxy: 如果这个类的代理选项为真\n            base = None\n\n            for parent in [cls for cls in parents if hasattr(cls, '_meta')]:\n                if parent._meta.abstract:\n                    if parent._meta.fields:\n                        raise TypeError(\"Abstract base class containing model fields not permitted for proxy model '%s'.\" % name)\n                    else:\n                        continue\n                if base is not None:\n                    raise TypeError(\"Proxy model '%s' has more than one non-abstract model base class.\" % name)\n                else:\n                    base = parent\n\n            if base is None:\n                    raise TypeError(\"Proxy model '%s' has no non-abstract model base class.\" % name)\n\n            if (new_class._meta.local_fields or\n                    new_class._meta.local_many_to_many):\n                raise FieldError(\"Proxy model '%s' contains model fields.\" % name)\n\n            new_class._meta.setup_proxy(base)\n            new_class._meta.concrete_model = base._meta.concrete_model\n        else:\n            new_class._meta.concrete_model = new_class\n\n        # Do the appropriate setup for any model parents.\n        o2o_map = dict([(f.rel.to, f) for f in new_class._meta.local_fields\n                if isinstance(f, OneToOneField)])\n\n        将父类中的 fields 整合到 new_class 中\n        for base in parents:\n            original_base = base\n            if not hasattr(base, '_meta'):\n                # Things without _meta aren't functional models, so they're\n                # uninteresting parents.\n                continue\n\n            parent_fields = base._meta.local_fields + base._meta.local_many_to_many\n            # Check for clashes between locally declared fields and those\n            # on the base classes (we cannot handle shadowed fields at the\n            # moment).\n            for field in parent_fields:\n                if field.name in field_names:\n                    raise FieldError('Local field %r in class %r clashes '\n                                     'with field of similar name from '\n                                     'base class %r' %\n                                        (field.name, name, base.__name__))\n\n            # 更多关于 meta.abstract 请参见: https://docs.djangoproject.com/en/dev/topics/db/models/#abstract-base-classes\n            if not base._meta.abstract:\n                # Concrete classes...\n                base = base._meta.concrete_model\n\n                if base in o2o_map:\n                    field = o2o_map[base]\n\n                elif not is_proxy:\n                    # 创建一个指向父模块的属性\n                    attr_name = '%s_ptr' % base._meta.module_name\n                    field = OneToOneField(base, name=attr_name,\n                            auto_created=True, parent_link=True)\n\n                    # 放在子模块 new_class 中\n                    new_class.add_to_class(attr_name, field)\n                else:\n                    field = None\n\n                # 在子模块 new_class.parents 中添加此属性.\n                new_class._meta.parents[base] = field\n            else:\n                # .. and abstract ones.\n                for field in parent_fields:\n                    new_class.add_to_class(field.name, copy.deepcopy(field))\n\n                # Pass any non-abstract parent classes onto child.\n                new_class._meta.parents.update(base._meta.parents)\n\n            # Inherit managers from the abstract base classes.\n            new_class.copy_managers(base._meta.abstract_managers)\n\n            # Proxy models inherit the non-abstract managers from their base,\n            # unless they have redefined any of them.\n            if is_proxy:\n                new_class.copy_managers(original_base._meta.concrete_managers)\n\n            # Inherit virtual fields (like GenericForeignKey) from the parent\n            # class\n            for field in base._meta.virtual_fields:\n                if base._meta.abstract and field.name in field_names:\n                    raise FieldError('Local field %r in class %r clashes '\\\n                                     'with field of similar name from '\\\n                                     'abstract base class %r' % \\\n                                        (field.name, name, base.__name__))\n                new_class.add_to_class(field.name, copy.deepcopy(field))\n\n        if abstract:\n            # Abstract base models can't be instantiated and don't appear in\n            # the list of models for an app. We do the final setup for them a\n            # little differently from normal models.\n            attr_meta.abstract = False ???\n            new_class.Meta = attr_meta\n            return new_class\n\n        new_class._prepare()\n        register_models(new_class._meta.app_label, new_class)\n\n        # Because of the way imports happen (recursively), we may or may not be\n        # the first time this model tries to register with the framework. There\n        # should only be one class for each model, so we always return the\n        # registered version.\n        return get_model(new_class._meta.app_label, name,\n                         seed_cache=False, only_installed=False)\n\n    非成员函数\n    --------\n\n    辅助 __new__\n    def copy_managers(cls, base_managers):\n        # This is in-place sorting of an Options attribute, but that's fine.\n        base_managers.sort()\n        for _, mgr_name, manager in base_managers:\n            val = getattr(cls, mgr_name, None)\n            if not val or val is manager:\n                new_manager = manager._copy_to_model(cls)\n                cls.add_to_class(mgr_name, new_manager)\n\n    为 cls 设置值为 value 的 name 属性, 如果 value 有 contribute_to_class() 函数将会被调用.\n    def add_to_class(cls, name, value):\n        if hasattr(value, 'contribute_to_class'):\n            value.contribute_to_class(cls, name)\n        else:\n            setattr(cls, name, value)\n\n    def _prepare(cls):\n        \"\"\"\n        Creates some methods once self._meta has been populated.\n        \"\"\"\n        opts = cls._meta\n        opts._prepare(cls)\n\n        if opts.order_with_respect_to:\n            cls.get_next_in_order = curry(cls._get_next_or_previous_in_order, is_next=True)\n            cls.get_previous_in_order = curry(cls._get_next_or_previous_in_order, is_next=False)\n\n            # defer creating accessors on the foreign class until we are\n            # certain it has been created\n            def make_foreign_order_accessors(field, model, cls):\n                setattr(\n                    field.rel.to,\n                    'get_%s_order' % cls.__name__.lower(),\n                    curry(method_get_order, cls)\n                )\n                setattr(\n                    field.rel.to,\n                    'set_%s_order' % cls.__name__.lower(),\n                    curry(method_set_order, cls)\n                )\n            add_lazy_relation(\n                cls,\n                opts.order_with_respect_to,\n                opts.order_with_respect_to.rel.to,\n                make_foreign_order_accessors\n            )\n\n        # Give the class a docstring -- its definition. 创建一些说明文档\n        if cls.__doc__ is None:\n            cls.__doc__ = \"%s(%s)\" % (cls.__name__, \", \".join([f.attname for f in opts.fields]))\n\n        if hasattr(cls, 'get_absolute_url'):\n            cls.get_absolute_url = update_wrapper(curry(get_absolute_url, opts, cls.get_absolute_url),\n                                                  cls.get_absolute_url)\n\n        signals.class_prepared.send(sender=cls)\n\n\nclass ModelState(object):\n    \"\"\"\n    A class for storing instance state\n    \"\"\"\n    def __init__(self, db=None):\n        self.db = db\n        # If true, uniqueness validation checks will consider this a new, as-yet-unsaved object.\n        如果为真, 唯一性检测对象将会被视为新的未被保存\n\n        # Necessary for correct validation of new instances of objects with explicit (non-auto) PKs.\n        # This impacts validation only; it has no effect on the actual save.\n        self.adding = True\n\n\"\"\"\n!!! 在 django.db.models.manager 中有线索.\n\n??? 在调试 django 的时候, 发现一个奇怪的现象: 在 eclipse 中看到如下\n\nclass Model(six.with_metaclass(ModelBase)):\n    objects = django.db.models.manager.Manager()\n    DoesNotExist = Exception\n    MultipleObjectsReturned = Exception\n    _deferred = False\n    def __init__(self, *args, **kwargs):\n        ....\n\n但是明显下面的 Model 并没有定义前面三个成员变量, 不知道是什么时候加入的???\n\n我们经常会用到下面的语句:\n\nmodelobject.objects.all() 来获取表中所有的数据, 其中 objects 就是上面 Model.objects 属性.\n\"\"\"\n\nclass Model(six.with_metaclass(ModelBase)):\n    _deferred = False\n\n    def __init__(self, *args, **kwargs):\n        signals.pre_init.send(sender=self.__class__, args=args, kwargs=kwargs)\n\n        # Set up the storage for instance state\n        self._state = ModelState()\n\n        # There is a rather weird disparity 不一致 here; if kwargs, it's set, then args\n        # overrides it. It should be one or the other; don't duplicate the work\n        # The reason for the kwargs check is that standard iterator passes in by\n        # args, and instantiation for iteration is 33% faster.\n\n        # 上述说明是说, args 和 kwargs 可能会出现选项的重复, 应该尽量使用 kwargs, 因为迭代和实例化的速度都快\n\n        args_len = len(args)\n        if args_len > len(self._meta.fields):\n            # Daft, but matches old exception sans the err msg.\n            raise IndexError(\"Number of args exceeds number of fields\")\n\n        fields_iter = iter(self._meta.fields) fields 迭代器\n\n        if not kwargs:\n            # The ordering of the zip calls matter - zip throws StopIteration\n            # when an iter throws it. So if the first iter throws it, the second\n            # is *not* consumed. We rely on this, so don't change the order\n            # without changing the logic.\n            for val, field in zip(args, fields_iter):\n                setattr(self, field.attname, val)\n        else:\n            # Slower, kwargs-ready version. 将 kwargs 中重复的的选项去掉\n            for val, field in zip(args, fields_iter):\n                setattr(self, field.attname, val)\n                kwargs.pop(field.name, None)\n                # Maintain compatibility with existing calls.\n                if isinstance(field.rel, ManyToOneRel):\n                    kwargs.pop(field.attname, None)\n\n        # Now we're left with the unprocessed fields that *must* come from\n        # keywords, or default.\n\n        for field in fields_iter:\n            is_related_object = False\n\n            # This slightly odd construct is so that we can access any\n            # data-descriptor object (DeferredAttribute) without triggering its\n            # __get__ method.\n            if (field.attname not in kwargs and\n                    isinstance(self.__class__.__dict__.get(field.attname), DeferredAttribute)):\n                # This field will be populated on request.\n                continue\n\n            if kwargs:\n                if isinstance(field.rel, ManyToOneRel):\n                    try:\n                        # Assume object instance was passed in.\n                        rel_obj = kwargs.pop(field.name)\n                        is_related_object = True\n                    except KeyError:\n                        try:\n                            # Object instance wasn't passed in -- must be an ID.\n                            val = kwargs.pop(field.attname)\n                        except KeyError:\n                            val = field.get_default()\n                    else:\n                        # Object instance was passed in. Special case: You can\n                        # pass in \"None\" for related objects if it's allowed.\n                        if rel_obj is None and field.null:\n                            val = None\n                else:\n                    try:\n                        val = kwargs.pop(field.attname)\n                    except KeyError:\n                        # This is done with an exception rather than the\n                        # default argument on pop because we don't want\n                        # get_default() to be evaluated, and then not used.\n                        # Refs #12057.\n                        val = field.get_default()\n            else:\n                val = field.get_default()\n\n            if is_related_object:\n                # If we are passed a related instance, set it using the\n                # field.name instead of field.attname (e.g. \"user\" instead of\n                # \"user_id\") so that the object gets properly cached (and type\n                # checked) by the RelatedObjectDescriptor.\n                setattr(self, field.name, rel_obj)\n            else:\n                setattr(self, field.attname, val)\n\n        if kwargs:\n            for prop in list(kwargs):\n                try:\n                    if isinstance(getattr(self.__class__, prop), property):\n                        setattr(self, prop, kwargs.pop(prop))\n                except AttributeError:\n                    pass\n            if kwargs:\n                raise TypeError(\"'%s' is an invalid keyword argument for this function\" % list(kwargs)[0])\n        super(Model, self).__init__()\n        signals.post_init.send(sender=self.__class__, instance=self)\n\n    def __repr__(self):\n        try:\n            u = six.text_type(self)\n        except (UnicodeEncodeError, UnicodeDecodeError):\n            u = '[Bad Unicode data]'\n        return force_str('<%s: %s>' % (self.__class__.__name__, u))\n\n    def __str__(self):\n        if not six.PY3 and hasattr(self, '__unicode__'):\n            if type(self).__unicode__ == Model.__str__:\n                klass_name = type(self).__name__\n                raise RuntimeError(\"%s.__unicode__ is aliased to __str__. Did\"\n                                   \" you apply @python_2_unicode_compatible\"\n                                   \" without defining __str__?\" % klass_name)\n            return force_text(self).encode('utf-8')\n        return '%s object' % self.__class__.__name__\n\n    def __eq__(self, other):\n        return isinstance(other, self.__class__) and self._get_pk_val() == other._get_pk_val()\n\n    def __ne__(self, other):\n        return not self.__eq__(other)\n\n    def __hash__(self):\n        return hash(self._get_pk_val())\n\n    def __reduce__(self):\n        \"\"\"\n        Provides pickling support. Normally, this just dispatches to Python's\n        standard handling. However, for models with deferred field loading, we\n        need to do things manually, as they're dynamically created classes and\n        only module-level classes can be pickled by the default path.\n        \"\"\"\n        if not self._deferred:\n            return super(Model, self).__reduce__()\n        data = self.__dict__\n        defers = []\n        for field in self._meta.fields:\n            if isinstance(self.__class__.__dict__.get(field.attname),\n                    DeferredAttribute):\n                defers.append(field.attname)\n        model = self._meta.proxy_for_model\n        return (model_unpickle, (model, defers), data)\n\n    # 获取主键值, 主键值可能是未被设置的\n    def _get_pk_val(self, meta=None):\n        if not meta:\n            meta = self._meta\n        return getattr(self, meta.pk.attname)\n\n    # 设置主键值, 等于是给 self 动态添加属性\n    def _set_pk_val(self, value):\n        return setattr(self, self._meta.pk.attname, value)\n\n    descriptor\n    pk = property(_get_pk_val, _set_pk_val)\n\n    def serializable_value(self, field_name):\n        \"\"\"\n        Returns the value of the field name for this instance. If the field is\n        a foreign key, returns the id value, instead of the object. If there's\n        no Field object with this name on the model, the model attribute's\n        value is returned directly.\n\n        Used to serialize a field's value (in the serializer, or form output,\n        for example). Normally, you would just access the attribute directly\n        and not use this method.\n        \"\"\"\n        try:\n            field = self._meta.get_field_by_name(field_name)[0]\n        except FieldDoesNotExist:\n            return getattr(self, field_name)\n        return getattr(self, field.attname)\n\n    def save(self, force_insert=False, force_update=False, using=None,\n             update_fields=None):\n        \"\"\"\n        Saves the current instance. Override this in a subclass if you want to\n        control the saving process.\n\n        The 'force_insert' and 'force_update' parameters can be used to insist\n        that the \"save\" must be an SQL insert or update (or equivalent for\n        non-SQL backends), respectively. Normally, they should not be set.\n\n        一般来说, force_update 和 update_fi 集合elds 集合一般不会设置\n        \"\"\"\n        using = using or router.db_for_write(self.__class__, instance=self)\n        if force_insert and (force_update or update_fields):\n            不能强制同时插入和更新\n            raise ValueError(\"Cannot force both insert and updating in model saving.\")\n\n        if update_fields is not None:\n            # If update_fields is empty, skip the save. We do also check for\n            # no-op saves later on for inheritance cases. This bailout is\n            # still needed for skipping signal sending.\n            if len(update_fields) == 0:\n                return\n\n            update_fields = frozenset(update_fields)\n            field_names = set()\n\n            for field in self._meta.fields:\n\n                # 如果 field 不是主键\n                if not field.primary_key: !!!主键是不允许修改的\n                    field_names.add(field.name)\n\n                    # 当 Field.field_name 和 Field.attname 不同时, field 是外键\n                    if field.name != field.attname:\n                        field_names.add(field.attname)\n\n            求出非 model 的表属性, 即不存在的非法属性\n            non_model_fields = update_fields.difference(field_names)\n\n            如果不为空, 异常\n            if non_model_fields:\n                raise ValueError(\"The following fields do not exist in this \"\n                                 \"model or are m2m fields: %s\"\n                                 % ', '.join(non_model_fields))\n\n        # If saving to the same database, and this model is deferred, then\n        # automatically do a \"update_fields\" save on the loaded fields.\n        model 的存储可能被延迟\n        elif not force_insert and self._deferred and using == self._state.db:\n            field_names = set()\n\n            for field in self._meta.fields:\n                # !!! 主键是不允许修改的\n                if not field.primary_key and not hasattr(field, 'through'):\n                    field_names.add(field.attname)\n\n            算出需要推迟的表属性, 内部是如何实现的?\n            deferred_fields = [\n                f.attname for f in self._meta.fields\n                if f.attname not in self.__dict__\n                   and isinstance(self.__class__.__dict__[f.attname],\n                                  DeferredAttribute)]\n\n            # field_names - deferred_fields 得到需要立即存储的表属性\n            loaded_fields = field_names.difference(deferred_fields)\n\n            if loaded_fields:\n                update_fields = frozenset(loaded_fields)\n\n        self.save_base(using=using, force_insert=force_insert,\n                       force_update=force_update, update_fields=update_fields)\n    save.alters_data = True\n\n    def save_base(self, raw=False, cls=None, origin=None, force_insert=False,\n                  force_update=False, using=None, update_fields=None):\n        \"\"\"\n        子类不能重写\n\n        Does the heavy-lifting 繁重的 involved in saving. Subclasses shouldn't need to\n        override this method. It's separate from save() in order to hide the\n        need for overrides of save() to pass around internal-only parameters\n        ('raw', 'cls', and 'origin').\n        \"\"\"\n        using = using or router.db_for_write(self.__class__, instance=self)\n        assert not (force_insert and (force_update or update_fields))\n        assert update_fields is None or len(update_fields) > 0\n\n        if cls is None: 可以为空\n            cls = self.__class__\n            meta = cls._meta\n            if not meta.proxy:\n                origin = cls\n        else:\n            meta = cls._meta\n\n        if origin and not meta.auto_created:\n            signals.pre_save.send(sender=origin, instance=self, raw=raw, using=using,\n                                  update_fields=update_fields)\n\n        # If we are in a raw save, save the object exactly as presented.\n        # That means that we don't try to be smart about saving attributes\n        # that might have come from the parent class - we just save the\n        # attributes we have been given to the class we have been given.\n        # We also go through this process to defer the save of proxy objects\n        # to their actual underlying model.\n        if not raw or meta.proxy:\n\n            if meta.proxy:\n                org = cls\n            else:\n                org = None\n\n            for parent, field in meta.parents.items():\n                # At this point, parent's primary key field may be unknown\n                # (for example, from administration form which doesn't fill\n                # this field). If so, fill it.\n                if field and getattr(self, parent._meta.pk.attname) is None and getattr(self, field.attname) is not None:\n                    setattr(self, parent._meta.pk.attname, getattr(self, field.attname))\n\n                对父类 model 执行 save_base() ???\n                self.save_base(cls=parent, origin=org, using=using,\n                               update_fields=update_fields)\n\n                if field:\n                    setattr(self, field.attname, self._get_pk_val(parent._meta))\n                    # Since we didn't have an instance of the parent handy, we\n                    # set attname directly, bypassing the descriptor.\n                    # Invalidate the related object cache, in case it's been\n                    # accidentally populated. A fresh instance will be\n                    # re-built from the database if necessary.\n                    cache_name = field.get_cache_name()\n                    if hasattr(self, cache_name):\n                        delattr(self, cache_name)\n\n            if meta.proxy:\n                return\n\n        if not meta.proxy:\n            non_pks = [f for f in meta.local_fields if not f.primary_key]\n\n            if update_fields:\n                non_pks = [f for f in non_pks if f.name in update_fields or f.attname in update_fields]\n\n            # First, try an UPDATE. If that doesn't update anything, do an INSERT.\n            # 直接获取主键的值, 如果没有设置, 将会返回 None\n            pk_val = self._get_pk_val(meta)\n\n            # pk_set 标记 pk_val 是否为空\n            pk_set = pk_val is not None\n\n            # 记录是否存在标记\n            record_exists = True\n\n            manager = cls._base_manager\n\n            # 如果存在主键, 则执行更新操作\n            if pk_set:\n                # Determine if we should do an update (pk already exists, forced update,\n                # no force_insert)\n                if ((force_update or update_fields) or (not force_insert and\n                        manager.using(using).filter(pk=pk_val).exists())):\n\n                    if force_update or non_pks:\n                        # 整理更新信息, Field.pre_save() 只返回需要更新的值\n                        values = [(f, None, (raw and getattr(self, f.attname) or f.pre_save(self, False))) for f in non_pks]\n\n                        if values:\n                            # 执行更新\n                            rows = manager.using(using).filter(pk=pk_val)._update(values)\n\n                            # 强制跟新失败, 并没有影响任何的表项\n                            if force_update and not rows:\n                                raise DatabaseError(\"Forced update did not affect any rows.\")\n\n                            # update_fields 中的更新并没有影响任何的表项\n                            if update_fields and not rows:\n                                raise DatabaseError(\"Save with update_fields did not affect any rows.\")\n                else:\n                    record_exists = False\n\n            if not pk_set or not record_exists:\n                if meta.order_with_respect_to:\n                    # If this is a model with an order_with_respect_to\n                    # autopopulate the _order field\n                    field = meta.order_with_respect_to\n                    order_value = manager.using(using).filter(**{field.name: getattr(self, field.attname)}).count()\n                    self._order = order_value\n\n                fields = meta.local_fields\n\n                if not pk_set:\n                    # 异常: 主键不存在又提供 force_update, 矛盾\n                    if force_update or update_fields:\n                        raise ValueError(\"Cannot force an update in save() with no primary key.\")\n\n                    # 筛选出表中自动填写的属性\n                    fields = [f for f in fields if not isinstance(f, AutoField)]\n\n                # 只好执行插入操作\n                record_exists = False\n\n                # 是否更新主键的值\n                update_pk = bool(meta.has_auto_field and not pk_set)\n\n                # 真正执行插入操作\n                result = manager._insert([self], fields=fields, return_id=update_pk, using=using, raw=raw)\n\n                if update_pk:\n                    setattr(self, meta.pk.attname, result)\n\n            # 数据库 commit\n            transaction.commit_unless_managed(using=using)\n\n\n        self._state.db = using\n        # Once saved, this is no longer a to-be-added instance.\n        self._state.adding = False\n\n        # Signal that the save is complete\n        if origin and not meta.auto_created:\n            signals.post_save.send(sender=origin, instance=self, created=(not record_exists),\n                                   update_fields=update_fields, raw=raw, using=using)\n\n    save_base.alters_data = True\n\n    # 借助 Collector 类实现\n    def delete(self, using=None):\n        using = using or router.db_for_write(self.__class__, instance=self)\n        assert self._get_pk_val() is not None, \"%s object can't be deleted because its %s attribute is set to None.\" % (self._meta.object_name, self._meta.pk.attname)\n\n        借助了 Collector 类\n        collector = Collector(using=using)\n        collector.collect([self])\n        collector.delete()\n\n    delete.alters_data = True\n\n    def _get_FIELD_display(self, field):\n        value = getattr(self, field.attname)\n        return force_text(dict(field.flatchoices).get(value, value), strings_only=True)\n\n    def _get_next_or_previous_by_FIELD(self, field, is_next, **kwargs):\n        if not self.pk:\n            raise ValueError(\"get_next/get_previous cannot be used on unsaved objects.\")\n\n        op = is_next and 'gt' or 'lt'\n        order = not is_next and '-' or '' 排序\n        param = force_text(getattr(self, field.attname))\n\n        q = Q(**{'%s__%s' % (field.name, op): param})\n        q = q | Q(**{field.name: param, 'pk__%s' % op: self.pk})\n        qs = self.__class__._default_manager.using(self._state.db).filter(**kwargs).filter(q).order_by('%s%s' % (order, field.name), '%spk' % order)\n\n        try:\n            return qs[0]\n\n        except IndexError:\n            raise self.DoesNotExist(\"%s matching query does not exist.\" % self.__class__._meta.object_name)\n\n    def _get_next_or_previous_in_order(self, is_next):\n        cachename = \"__%s_order_cache\" % is_next\n\n        if not hasattr(self, cachename):\n            op = is_next and 'gt' or 'lt'\n            order = not is_next and '-_order' or '_order'\n            order_field = self._meta.order_with_respect_to\n\n            obj = self._default_manager.filter(**{\n                order_field.name: getattr(self, order_field.attname)\n            }).filter(**{\n                '_order__%s' % op: self._default_manager.values('_order').filter(**{\n                    self._meta.pk.name: self.pk\n                })\n            }).order_by(order)[:1].get()\n            setattr(self, cachename, obj)\n        return getattr(self, cachename)\n\n    def prepare_database_save(self, unused):\n        return self.pk\n\n    def clean(self):\n        \"\"\"\n        Hook for doing any extra model-wide validation after clean() has been\n        called on every field by self.clean_fields. Any ValidationError raised\n        by this method will not be associated with a particular field; it will\n        have a special-case association with the field defined by NON_FIELD_ERRORS.\n        \"\"\"\n        pass\n\n    def validate_unique(self, exclude=None):\n        \"\"\"\n        Checks unique constraints on the model and raises ``ValidationError``\n        if any failed.\n        \"\"\"\n        unique_checks, date_checks = self._get_unique_checks(exclude=exclude)\n\n        errors = self._perform_unique_checks(unique_checks)\n        date_errors = self._perform_date_checks(date_checks)\n\n        for k, v in date_errors.items():\n            errors.setdefault(k, []).extend(v)\n\n        if errors:\n            raise ValidationError(errors)\n\n    def _get_unique_checks(self, exclude=None):\n        \"\"\"\n        Gather a list of checks to perform. Since validate_unique could be\n        called from a ModelForm, some fields may have been excluded; we can't\n        perform a unique check on a model that is missing fields involved\n        in that check.\n        Fields that did not validate should also be excluded, but they need\n        to be passed in via the exclude argument.\n        \"\"\"\n        if exclude is None: exclude 可能为空, 但必须把它转为 list\n            exclude = []\n\n        # 唯一性检测\n        unique_checks = []\n\n        unique_togethers = [(self.__class__, self._meta.unique_together)]\n        for parent_class in self._meta.parents.keys():\n            if parent_class._meta.unique_together:\n                unique_togethers.append((parent_class, parent_class._meta.unique_together))\n\n        for model_class, unique_together in unique_togethers:\n            for check in unique_together:\n                for name in check:\n                    # If this is an excluded field, don't add this check.\n                    if name in exclude:\n                        break\n                else:\n                    unique_checks.append((model_class, tuple(check)))\n\n        # 日期检测\n        # These are checks for the unique_for_<date/year/month>.\n        date_checks = []\n\n        # Gather a list of checks for fields declared as unique and add them to\n        # the list of checks.\n\n        fields_with_class = [(self.__class__, self._meta.local_fields)]\n        for parent_class in self._meta.parents.keys():\n            fields_with_class.append((parent_class, parent_class._meta.local_fields))\n\n        for model_class, fields in fields_with_class:\n            for f in fields:\n                name = f.name\n                if name in exclude:\n                    continue\n                if f.unique:\n                    unique_checks.append((model_class, (name,)))\n                if f.unique_for_date and f.unique_for_date not in exclude:\n                    date_checks.append((model_class, 'date', name, f.unique_for_date))\n                if f.unique_for_year and f.unique_for_year not in exclude:\n                    date_checks.append((model_class, 'year', name, f.unique_for_year))\n                if f.unique_for_month and f.unique_for_month not in exclude:\n                    date_checks.append((model_class, 'month', name, f.unique_for_month))\n        return unique_checks, date_checks\n\n    def _perform_unique_checks(self, unique_checks):\n        errors = {}\n\n        for model_class, unique_check in unique_checks:\n            # Try to look up an existing object with the same values as this\n            # object's values for all the unique field.\n\n            lookup_kwargs = {}\n            for field_name in unique_check:\n                f = self._meta.get_field(field_name)\n                lookup_value = getattr(self, f.attname)\n\n                if lookup_value is None:\n                    # no value, skip the lookup\n                    continue\n\n                if f.primary_key and not self._state.adding:\n                    # no need to check for unique primary key when editing\n                    continue\n\n                加入到表中\n                lookup_kwargs[str(field_name)] = lookup_value\n\n            # some fields were skipped, no reason to do the check\n            if len(unique_check) != len(lookup_kwargs):\n                continue\n\n            qs = model_class._default_manager.filter(**lookup_kwargs)\n\n            # Exclude the current object from the query if we are editing an\n            # instance (as opposed to creating a new one)\n            # Note that we need to use the pk as defined by model_class, not\n            # self.pk. These can be different fields because model inheritance\n            # allows single model to have effectively multiple primary keys.\n            # Refs #17615.\n            model_class_pk = self._get_pk_val(model_class._meta)\n            if not self._state.adding and model_class_pk is not None:\n                qs = qs.exclude(pk=model_class_pk)\n\n            if qs.exists():\n                if len(unique_check) == 1:\n                    key = unique_check[0]\n                else:\n                    key = NON_FIELD_ERRORS\n                errors.setdefault(key, []).append(self.unique_error_message(model_class, unique_check))\n\n        return errors\n\n    def _perform_date_checks(self, date_checks):\n        errors = {}\n        for model_class, lookup_type, field, unique_for in date_checks:\n            lookup_kwargs = {}\n            # there's a ticket to add a date lookup, we can remove this special\n            # case if that makes it's way in\n            date = getattr(self, unique_for)\n            if date is None:\n                continue\n            if lookup_type == 'date':\n                lookup_kwargs['%s__day' % unique_for] = date.day\n                lookup_kwargs['%s__month' % unique_for] = date.month\n                lookup_kwargs['%s__year' % unique_for] = date.year\n            else:\n                lookup_kwargs['%s__%s' % (unique_for, lookup_type)] = getattr(date, lookup_type)\n            lookup_kwargs[field] = getattr(self, field)\n\n            qs = model_class._default_manager.filter(**lookup_kwargs)\n            # Exclude the current object from the query if we are editing an\n            # instance (as opposed to creating a new one)\n            if not self._state.adding and self.pk is not None:\n                qs = qs.exclude(pk=self.pk)\n\n            if qs.exists():\n                errors.setdefault(field, []).append(\n                    self.date_error_message(lookup_type, field, unique_for)\n                )\n        return errors\n\n    def date_error_message(self, lookup_type, field, unique_for):\n        opts = self._meta\n        return _(\"%(field_name)s must be unique for %(date_field)s %(lookup)s.\") % {\n            'field_name': six.text_type(capfirst(opts.get_field(field).verbose_name)),\n            'date_field': six.text_type(capfirst(opts.get_field(unique_for).verbose_name)),\n            'lookup': lookup_type,\n        }\n\n    def unique_error_message(self, model_class, unique_check):\n        opts = model_class._meta\n        model_name = capfirst(opts.verbose_name)\n\n        # A unique field\n        if len(unique_check) == 1:\n            field_name = unique_check[0]\n            field = opts.get_field(field_name)\n            field_label = capfirst(field.verbose_name)\n            # Insert the error into the error dict, very sneaky\n            return field.error_messages['unique'] % {\n                'model_name': six.text_type(model_name),\n                'field_label': six.text_type(field_label)\n            }\n        # unique_together\n        else:\n            field_labels = [capfirst(opts.get_field(f).verbose_name) for f in unique_check]\n            field_labels = get_text_list(field_labels, _('and'))\n            return _(\"%(model_name)s with this %(field_label)s already exists.\") % {\n                'model_name': six.text_type(model_name),\n                'field_label': six.text_type(field_labels)\n            }\n\n    执行所有的检测\n    def full_clean(self, exclude=None):\n        \"\"\"\n        Calls clean_fields, clean, and validate_unique, on the model,\n        and raises a ``ValidationError`` for any errors that occured.\n        \"\"\"\n        errors = {}\n        if exclude is None:\n            exclude = []\n\n        try:\n            self.clean_fields(exclude=exclude)\n        except ValidationError as e:\n            errors = e.update_error_dict(errors)\n\n        # Form.clean() is run even if other validation fails, so do the\n        # same with Model.clean() for consistency.\n        try:\n            self.clean()\n        except ValidationError as e:\n            errors = e.update_error_dict(errors)\n\n        # Run unique checks, but only for fields that passed validation.\n        for name in errors.keys():\n            if name != NON_FIELD_ERRORS and name not in exclude:\n                exclude.append(name)\n\n        try:\n            self.validate_unique(exclude=exclude)\n        except ValidationError as e:\n            errors = e.update_error_dict(errors)\n\n        if errors:\n            raise ValidationError(errors)\n\n    def clean_fields(self, exclude=None):\n        \"\"\"\n        Cleans all fields and raises a ValidationError containing message_dict\n        of all validation errors if any occur.\n        \"\"\"\n        if exclude is None:\n            exclude = []\n\n        errors = {}\n        for f in self._meta.fields:\n            if f.name in exclude:\n                continue\n\n            # Skip validation for empty fields with blank=True. The developer\n            # is responsible for making sure they have a valid value.\n            raw_value = getattr(self, f.attname)\n            if f.blank and raw_value in validators.EMPTY_VALUES: 空的\n                continue\n            try:\n                setattr(self, f.attname, f.clean(raw_value, self))\n            except ValidationError as e:\n                errors[f.name] = e.messages\n\n        if errors:\n            raise ValidationError(errors)\n\n\n############################################\n# HELPER FUNCTIONS (CURRIED MODEL METHODS) #\n############################################\n\n# ORDERING METHODS #########################\n\ndef method_set_order(ordered_obj, self, id_list, using=None):\n    if using is None:\n        using = DEFAULT_DB_ALIAS\n    rel_val = getattr(self, ordered_obj._meta.order_with_respect_to.rel.field_name)\n    order_name = ordered_obj._meta.order_with_respect_to.name\n    # FIXME: It would be nice if there was an \"update many\" version of update\n    # for situations like this.\n    for i, j in enumerate(id_list):\n        ordered_obj.objects.filter(**{'pk': j, order_name: rel_val}).update(_order=i)\n    transaction.commit_unless_managed(using=using)\n\n\ndef method_get_order(ordered_obj, self):\n    rel_val = getattr(self, ordered_obj._meta.order_with_respect_to.rel.field_name)\n    order_name = ordered_obj._meta.order_with_respect_to.name\n    pk_name = ordered_obj._meta.pk.name\n    return [r[pk_name] for r in\n            ordered_obj.objects.filter(**{order_name: rel_val}).values(pk_name)]\n\n\n##############################################\n# HELPER FUNCTIONS (CURRIED MODEL FUNCTIONS) #\n##############################################\n\ndef get_absolute_url(opts, func, self, *args, **kwargs):\n    return settings.ABSOLUTE_URL_OVERRIDES.get('%s.%s' % (opts.app_label, opts.module_name), func)(self, *args, **kwargs)\n\n\n########\n# MISC #\n########\n\nclass Empty(object):\n    pass\n\n\ndef model_unpickle(model, attrs):\n    \"\"\"\n    Used to unpickle Model subclasses with deferred fields.\n    \"\"\"\n    cls = deferred_class_factory(model, attrs)\n    return cls.__new__(cls)\nmodel_unpickle.__safe_for_unpickle__ = True\n\n\ndef unpickle_inner_exception(klass, exception_name):\n    # Get the exception class from the class it is attached to:\n    exception = getattr(klass, exception_name)\n    return exception.__new__(exception)\n"
  },
  {
    "path": "Django-1.5.1/django/db/models/constants.py",
    "content": "\"\"\"\nConstants used across the ORM in general.\n\"\"\"\n\n# Separator used to split filter strings apart.\nLOOKUP_SEP = '__'\n\n"
  },
  {
    "path": "Django-1.5.1/django/db/models/deletion.py",
    "content": "from functools import wraps\nfrom operator import attrgetter\n\nfrom django.db import connections, transaction, IntegrityError\nfrom django.db.models import signals, sql\nfrom django.utils.datastructures import SortedDict\nfrom django.utils import six\n\n\nclass ProtectedError(IntegrityError):\n    def __init__(self, msg, protected_objects):\n        self.protected_objects = protected_objects\n        super(ProtectedError, self).__init__(msg, protected_objects)\n\n级联\ndef CASCADE(collector, field, sub_objs, using):\n    # Collector.collect() 原型\n    # def collect(self, objs, source=None, nullable=False, collect_related=True, source_attr=None, reverse_dependency=False)\n    collector.collect(sub_objs, source=field.rel.to,\n                      source_attr=field.name, nullable=field.null)\n\n    # 如果 field.null 为真, 外键将被设置为 null\n    if field.null and not connections[using].features.can_defer_constraint_checks:\n        collector.add_field_update(field, None, sub_objs)\n\n\ndef PROTECT(collector, field, sub_objs, using):\n    raise ProtectedError(\"Cannot delete some instances of model '%s' because \"\n        \"they are referenced through a protected foreign key: '%s.%s'\" % (\n            field.rel.to.__name__, sub_objs[0].__class__.__name__, field.name\n        ),\n        sub_objs\n    )\n\n\ndef SET(value):\n    if callable(value):\n        def set_on_delete(collector, field, sub_objs, using):\n            collector.add_field_update(field, value(), sub_objs)\n    else:\n        def set_on_delete(collector, field, sub_objs, using):\n            collector.add_field_update(field, value, sub_objs)\n    return set_on_delete\n\n\nSET_NULL = SET(None)\n\n\ndef SET_DEFAULT(collector, field, sub_objs, using):\n    collector.add_field_update(field, field.get_default(), sub_objs)\n\n\ndef DO_NOTHING(collector, field, sub_objs, using):\n    pass\n\n\ndef force_managed(func):\n    @wraps(func)\n    def decorated(self, *args, **kwargs):\n\n        尝试进入事务\n        if not transaction.is_managed(using=self.using):\n            transaction.enter_transaction_management(using=self.using)\n            forced_managed = True\n        else:\n            forced_managed = False\n\n        try:\n            执行删除\n            func(self, *args, **kwargs)\n\n            数据库的 commit 操作\n            if forced_managed:\n                transaction.commit(using=self.using)\n            else:\n                transaction.commit_unless_managed(using=self.using)\n        finally:\n            结束事务\n            if forced_managed:\n                transaction.leave_transaction_management(using=self.using)\n    return decorated\n\nCollector 是一个数据库条目对象收集器, 可以用各种`添加`函数添加各种 queryset, 在添加后需要调用 Collector.delete() 函数, 它会执行真正的删除操作.\nCollector.delete() 依托 django.db.models.sql 模块工作.\nclass Collector(object):\n    def __init__(self, using):\n        self.using = using\n\n        # Initially, {model: set([instances])}, later values become lists.\n        self.data = {}\n\n        self.batches = {} # {model: {field: set([instances])}}\n        self.field_updates = {} # {model: {(field, value): set([instances])}}\n\n        # fast_deletes is a list of queryset-likes that can be deleted without\n        # fetching the objects into memory.\n        self.fast_deletes = []\n\n        # Tracks deletion-order dependency for databases without transactions\n        # or ability to defer constraint checks. Only concrete model classes\n        # should be included, as the dependencies exist only between actual\n        # database tables; proxy models are represented here by their concrete\n        # parent.\n        self.dependencies = {} # {model: set([models])} 依赖模块\n\n    在容器中添加对象\n    def add(self, objs, source=None, nullable=False, reverse_dependency=False):\n        \"\"\"\n        Adds 'objs' to the collection of objects to be deleted.  If the call is\n        the result of a cascade, 'source' should be the model that caused it,\n        and 'nullable' should be set to True if the relation can be null.\n\n        Returns a list of all objects that were not already collected.\n        \"\"\"\n        if not objs:\n            return []\n\n        new_objs = []\n        model = objs[0].__class__\n        instances = self.data.setdefault(model, set())\n\n        for obj in objs:\n            if obj not in instances:\n                new_objs.append(obj)\n\n        instances.update(new_objs)\n\n        # Nullable relationships can be ignored -- they are nulled out before\n        # deleting, and therefore do not affect the order in which objects have\n        # to be deleted.\n        if source is not None and not nullable:\n            if reverse_dependency:\n                source, model = model, source\n            self.dependencies.setdefault(\n                source._meta.concrete_model, set()).add(model._meta.concrete_model)\n        return new_objs\n\n    批量删除, 不是真正的删除, 而是直接放入到 list 中待删除\n    def add_batch(self, model, field, objs):\n        \"\"\"\n        Schedules a batch delete. 计划批量删除. Every instance of 'model' that is related to\n        an instance of 'obj' through 'field' will be deleted. 级联删除?\n        \"\"\"\n        self.batches.setdefault(model, {}).setdefault(field, set()).update(objs)\n\n    def add_field_update(self, field, value, objs):\n        \"\"\"\n        Schedules a field update. 'objs' must be a homogenous iterable\n        collection of model instances (e.g. a QuerySet).\n        \"\"\"\n        if not objs:\n            return\n\n        model = objs[0].__class__\n        self.field_updates.setdefault(\n            model, {}).setdefault(\n            (field, value), set()).update(objs)\n\n    判断是否可以快速删除, 不懂内部机制\n    def can_fast_delete(self, objs, from_field=None):\n        # 参数说明\n        # objs: QuerySet 对象\n        # from_field: 外键\n\n        \"\"\"\n        Determines if the objects in the given queryset-like can be\n        fast-deleted.\n\n        当不存在级联, 不存在父模块, 不存在信号监听的对象时候, 会返回真\n\n        This can be done if there are no cascades, no\n        parents and no signal listeners for the object class.\n\n        The 'from_field' tells where we are coming from - we need this to\n        determine if the objects are in fact to be deleted. Allows also\n        skipping parent -> child -> parent chain preventing fast delete of\n        the child.\n        \"\"\"\n        # from_field 所指一般为外键, 外键的 on_delete() 不为 CASCADE() 即可能是 DO_NOTHING() 或者其他用户自定义的函数, 此时不能快速删除\n        if from_field and from_field.rel.on_delete is not CASCADE:\n            return False\n\n        # 如果 QuerySet 对象没有指定模块和 _raw_delete() 方法, 则无法快速删除\n        if not (hasattr(objs, 'model') and hasattr(objs, '_raw_delete')):\n            return False\n\n        # QuerySet 对象的模块没有被监听, 则无法快速删除\n        model = objs.model\n        if (signals.pre_delete.has_listeners(model)\n                or signals.post_delete.has_listeners(model)\n                or signals.m2m_changed.has_listeners(model)):\n            return False\n\n        # The use of from_field comes from the need to avoid cascade back to\n        # parent when parent delete is cascading to child.\n        opts = model._meta\n\n        # 如果存在父模块且 from_field 就是和父模块关联的属性, 则无法快速删除.\n        # 下面的 link 是 OneToOneField 或者 ManyToManyField, 详见 django.db.models.base.py\n        if any(link != from_field for link in opts.concrete_model._meta.parents.values()):\n            return False\n\n        # Foreign keys pointing to this model, both from m2m and other\n        # models.\n        for related in opts.get_all_related_objects(\n            include_hidden=True, include_proxy_eq=True):\n            # 联系 django.db.models.related 中的 ***Rel 类, 默认会把 rel.on_delete() 设置为 CASCADE() 函数\n            if related.field.rel.on_delete is not DO_NOTHING:\n                return False\n\n        # GFK deletes\n        for relation in opts.many_to_many:\n            if not relation.rel.through: #当无外置多对多管理表的时候\n                return False\n        return True\n\n    只收集不删除\n    def collect(self, objs, source=None, nullable=False, collect_related=True,\n        source_attr=None, reverse_dependency=False):\n        \"\"\"\n        Adds 'objs' to the collection of objects to be deleted as well as all\n        parent instances.  'objs' must be a homogenous iterable collection of\n        model instances (e.g. a QuerySet).\n\n        If 'collect_related' is True,\n        related objects will be handled by their respective on_delete handler.\n\n        If the call is the result of a cascade, 'source' should be the model\n        that caused it and 'nullable' should be set to True, if the relation\n        can be null.\n\n        If 'reverse_dependency' is True, 'source' will be deleted before the\n        current model, rather than after. (Needed for cascading to parent\n        models, the one case in which the cascade follows the forwards\n        direction of an FK rather than the reverse direction.)\n        \"\"\"\n        if self.can_fast_delete(objs):\n            self.fast_deletes.append(objs)\n            return\n\n        返回新增加的需要删除的 objs\n        new_objs = self.add(objs, source, nullable,\n                            reverse_dependency=reverse_dependency)\n        if not new_objs:\n            return\n\n        model = new_objs[0].__class__\n\n        # Recursively collect concrete model's parent models, but not their\n        # related objects. These will be found by meta.get_all_related_objects()\n        concrete_model = model._meta.concrete_model\n\n        迭代所有的父模块\n        for ptr in six.itervalues(concrete_model._meta.parents):\n            if ptr:\n                # FIXME: This seems to be buggy and execute a query for each\n                # parent object fetch. We have the parent data in the obj,\n                # but we don't have a nice way to turn that data into parent\n                # object instance.\n                递归调用之前需要获取父对象\n                parent_objs = [getattr(obj ptr.name) for obj in new_objs]\n\n                递归调用\n                self.collect(parent_objs, source=model,\n                             source_attr=ptr.rel.related_name,\n                             collect_related=False,\n                             reverse_dependency=True)\n\n        是否级联\n        if collect_related:\n            # get_all_related_objects() 返回属性关联对象 RelatedObject list\n            for related in model._meta.get_all_related_objects(\n                    include_hidden=True, include_proxy_eq=True):\n\n                field = related.field\n\n                 # 如果什么都不做, 循环继续\n                if field.rel.on_delete == DO_NOTHING:\n                    continue\n\n                # 找出所有关联表中的表项, 类似于下面的 SQL 语句:\n                # select * from self where new_objs.id in (select id from related)\n                sub_objs = self.related_objects(related, new_objs)\n\n                # can_fast_delete() 返回真的其中一个条件就是关联表中没有外键, 也就是说关联表中已经不存在级联了\n                if self.can_fast_delete(sub_objs, from_field=field):\n                    self.fast_deletes.append(sub_objs)\n                # 如果关联表中还存在级联, 需要再次 collect()\n                elif sub_objs:\n                    field.rel.on_delete(self, field, sub_objs, self.using)\n\n            # TODO This entire block is only needed as a special case to\n            # support cascade-deletes for GenericRelation. It should be\n            # removed/fixed when the ORM gains a proper abstraction for virtual\n            # or composite fields, and GFKs are reworked to fit into that.\n            for relation in model._meta.many_to_many:\n                if not relation.rel.through:\n                    sub_objs = relation.bulk_related_objects(new_objs, self.using)\n                    self.collect(sub_objs,\n                                 source=model,\n                                 source_attr=relation.rel.related_name,\n                                 nullable=True)\n\n    def related_objects(self, related, objs):\n        \"\"\"\n        Gets a QuerySet of objects related to ``objs`` via the relation ``related``.\n        \"\"\"\n\n\"\"\"        有关 __in 参见如下:\n        In a given list.\n        Example:\n\n        Entry.objects.filter(id__in=[1, 3, 4])\"\"\"\n\n        return related.model._base_manager.using(self.using).filter(\n            **{\"%s__in\" % related.field.name: objs}\n        )\n\n    def instances_with_model(self):\n        for model, instances in six.iteritems(self.data):\n            for obj in instances:\n                yield model, obj\n\n    def sort(self):\n        sorted_models = []\n        concrete_models = set()\n        models = list(self.data)\n        while len(sorted_models) < len(models):\n            found = False\n            for model in models:\n                if model in sorted_models:\n                    continue\n                dependencies = self.dependencies.get(model._meta.concrete_model)\n                if not (dependencies and dependencies.difference(concrete_models)):\n                    sorted_models.append(model)\n                    concrete_models.add(model._meta.concrete_model)\n                    found = True\n            if not found:\n                return\n        self.data = SortedDict([(model, self.data[model])\n                                for model in sorted_models])\n\n    force_managed 修饰器是为了能再删除的时候能够进入事务\n    @force_managed\n    def delete(self):\n        # sort instance collections\n        for model, instances in self.data.items():\n            self.data[model] = sorted(instances, key=attrgetter(\"pk\"))\n\n        # if possible, bring the models in an order suitable for databases that\n        # don't support transactions or cannot defer constraint checks until the\n        # end of a transaction.\n        self.sort()\n\n        # send pre_delete signals\n        for model, obj in self.instances_with_model():\n            if not model._meta.auto_created: 如果不是自动创建的??? 会发送信号, 为什么发送信号???\n                signals.pre_delete.send(\n                    sender=model, instance=obj, using=self.using\n                )\n\n        # fast deletes\n        for qs in self.fast_deletes:\n            # 调用的 QuerySet._raw_delete(), 其会调用 sql.DeleteQuery()\n            qs._raw_delete(using=self.using)\n\n        # update fields 为什么要更新???\n        for model, instances_for_fieldvalues in six.iteritems(self.field_updates):\n            query = sql.UpdateQuery(model)\n            for (field, value), instances in six.iteritems(instances_for_fieldvalues):\n                query.update_batch([obj.pk for obj in instances],\n                                   {field.name: value}, self.using)\n\n        # reverse instance collections\n        for instances in six.itervalues(self.data): six.itervalues() 只迭代值, 默认会迭代 key\n            instances.reverse()\n\n        # delete batches\n        for model, batches in six.iteritems(self.batches):\n            query = sql.DeleteQuery(model)\n            for field, instances in six.iteritems(batches):\n                query.delete_batch([obj.pk for obj in instances], self.using, field)\n\n        # delete instances\n        for model, instances in six.iteritems(self.data):\n            query = sql.DeleteQuery(model)\n            pk_list = [obj.pk for obj in instances]\n            query.delete_batch(pk_list, self.using)\n\n        # send post_delete signals\n        for model, obj in self.instances_with_model():\n            if not model._meta.auto_created:\n                signals.post_delete.send(\n                    sender=model, instance=obj, using=self.using\n                )\n\n        # update collected instances\n        for model, instances_for_fieldvalues in six.iteritems(self.field_updates):\n            for (field, value), instances in six.iteritems(instances_for_fieldvalues):\n                for obj in instances:\n                    setattr(obj, field.attname, value)\n\n        for model, instances in six.iteritems(self.data):\n            for instance in instances:\n                setattr(instance, model._meta.pk.attname, None)\n"
  },
  {
    "path": "Django-1.5.1/django/db/models/expressions.py",
    "content": "import datetime\nfrom django.utils import tree\n\nclass ExpressionNode(tree.Node):\n    \"\"\"\n    Base class for all query expressions.\n    \"\"\"\n    # Arithmetic connectors\n    ADD = '+'\n    SUB = '-'\n    MUL = '*'\n    DIV = '/'\n    MOD = '%%'  # This is a quoted % operator - it is quoted\n                # because it can be used in strings that also\n                # have parameter substitution.\n\n    # Bitwise operators - note that these are generated by .bitand()\n    # and .bitor(), the '&' and '|' are reserved for boolean operator\n    # usage.\n    BITAND = '&'\n    BITOR = '|'\n\n    def __init__(self, children=None, connector=None, negated=False):\n        if children is not None and len(children) > 1 and connector is None:\n            raise TypeError('You have to specify a connector.')\n        super(ExpressionNode, self).__init__(children, connector, negated)\n\n    def _combine(self, other, connector, reversed, node=None):\n        if isinstance(other, datetime.timedelta):\n            return DateModifierNode([self, other], connector)\n\n        if reversed:\n            obj = ExpressionNode([other], connector)\n            obj.add(node or self, connector)\n        else:\n            obj = node or ExpressionNode([self], connector)\n            obj.add(other, connector)\n        return obj\n\n    ###################\n    # VISITOR METHODS #\n    ###################\n\n    def prepare(self, evaluator, query, allow_joins):\n        return evaluator.prepare_node(self, query, allow_joins)\n\n    def evaluate(self, evaluator, qn, connection):\n        return evaluator.evaluate_node(self, qn, connection)\n\n    #############\n    # OPERATORS #\n    #############\n\n    def __add__(self, other):\n        return self._combine(other, self.ADD, False)\n\n    def __sub__(self, other):\n        return self._combine(other, self.SUB, False)\n\n    def __mul__(self, other):\n        return self._combine(other, self.MUL, False)\n\n    def __truediv__(self, other):\n        return self._combine(other, self.DIV, False)\n\n    def __div__(self, other):  # Python 2 compatibility\n        return type(self).__truediv__(self, other)\n\n    def __mod__(self, other):\n        return self._combine(other, self.MOD, False)\n\n    def __and__(self, other):\n        raise NotImplementedError(\n            \"Use .bitand() and .bitor() for bitwise logical operations.\"\n        )\n\n    def bitand(self, other):\n        return self._combine(other, self.BITAND, False)\n\n    def __or__(self, other):\n        raise NotImplementedError(\n            \"Use .bitand() and .bitor() for bitwise logical operations.\"\n        )\n\n    def bitor(self, other):\n        return self._combine(other, self.BITOR, False)\n\n    def __radd__(self, other):\n        return self._combine(other, self.ADD, True)\n\n    def __rsub__(self, other):\n        return self._combine(other, self.SUB, True)\n\n    def __rmul__(self, other):\n        return self._combine(other, self.MUL, True)\n\n    def __rtruediv__(self, other):\n        return self._combine(other, self.DIV, True)\n\n    def __rdiv__(self, other):  # Python 2 compatibility\n        return type(self).__rtruediv__(self, other)\n\n    def __rmod__(self, other):\n        return self._combine(other, self.MOD, True)\n\n    def __rand__(self, other):\n        raise NotImplementedError(\n            \"Use .bitand() and .bitor() for bitwise logical operations.\"\n        )\n\n    def __ror__(self, other):\n        raise NotImplementedError(\n            \"Use .bitand() and .bitor() for bitwise logical operations.\"\n        )\n\n    def prepare_database_save(self, unused):\n        return self\n\nclass F(ExpressionNode):\n    \"\"\"\n    An expression representing the value of the given field.\n    \"\"\"\n    def __init__(self, name):\n        super(F, self).__init__(None, None, False)\n        self.name = name\n\n    def __deepcopy__(self, memodict):\n        obj = super(F, self).__deepcopy__(memodict)\n        obj.name = self.name\n        return obj\n\n    def prepare(self, evaluator, query, allow_joins):\n        return evaluator.prepare_leaf(self, query, allow_joins)\n\n    def evaluate(self, evaluator, qn, connection):\n        return evaluator.evaluate_leaf(self, qn, connection)\n\nclass DateModifierNode(ExpressionNode):\n    \"\"\"\n    Node that implements the following syntax:\n    filter(end_date__gt=F('start_date') + datetime.timedelta(days=3, seconds=200))\n\n    which translates into:\n    POSTGRES:\n        WHERE end_date > (start_date + INTERVAL '3 days 200 seconds')\n\n    MYSQL:\n        WHERE end_date > (start_date + INTERVAL '3 0:0:200:0' DAY_MICROSECOND)\n\n    ORACLE:\n        WHERE end_date > (start_date + INTERVAL '3 00:03:20.000000' DAY(1) TO SECOND(6))\n\n    SQLITE:\n        WHERE end_date > django_format_dtdelta(start_date, \"+\" \"3\", \"200\", \"0\")\n        (A custom function is used in order to preserve six digits of fractional\n        second information on sqlite, and to format both date and datetime values.)\n\n    Note that microsecond comparisons are not well supported with MySQL, since\n    MySQL does not store microsecond information.\n\n    Only adding and subtracting timedeltas is supported, attempts to use other\n    operations raise a TypeError.\n    \"\"\"\n    def __init__(self, children, connector, negated=False):\n        if len(children) != 2:\n            raise TypeError('Must specify a node and a timedelta.')\n        if not isinstance(children[1], datetime.timedelta):\n            raise TypeError('Second child must be a timedelta.')\n        if connector not in (self.ADD, self.SUB):\n            raise TypeError('Connector must be + or -, not %s' % connector)\n        super(DateModifierNode, self).__init__(children, connector, negated)\n\n    def evaluate(self, evaluator, qn, connection):\n        return evaluator.evaluate_date_modifier_node(self, qn, connection)\n"
  },
  {
    "path": "Django-1.5.1/django/db/models/fields/__init__.py",
    "content": "from __future__ import unicode_literals\n\nimport copy\nimport datetime\nimport decimal\nimport math\nimport warnings\nfrom itertools import tee\n\nfrom django.db import connection\nfrom django.db.models.query_utils import QueryWrapper\nfrom django.conf import settings\nfrom django import forms\nfrom django.core import exceptions, validators\nfrom django.utils.datastructures import DictWrapper\nfrom django.utils.dateparse import parse_date, parse_datetime, parse_time\nfrom django.utils.functional import curry, total_ordering\nfrom django.utils.itercompat import is_iterator\nfrom django.utils.text import capfirst\nfrom django.utils import timezone\nfrom django.utils.translation import ugettext_lazy as _\nfrom django.utils.encoding import smart_text, force_text\nfrom django.utils.ipv6 import clean_ipv6_address\nfrom django.utils import six\n\nclass NOT_PROVIDED:\n    pass\n\n# The values to use for \"blank\" in SelectFields. Will be appended to the start\n# of most \"choices\" lists.\nBLANK_CHOICE_DASH = [(\"\", \"---------\")]\nBLANK_CHOICE_NONE = [(\"\", \"None\")]\n\nclass FieldDoesNotExist(Exception):\n    pass\n\n# A guide to Field parameters:\n#   字段的名字\n#   * name:      The name of the field specifed in the model.\n\n    当被用于外键的时候, 需要添加后缀 _id\n#   * attname:   The attribute to use on the model object. This is the same as\n#                \"name\", except in the case of ForeignKeys, where \"_id\" is\n#                appended.\n    列名\n#   * db_column: The db_column specified in the model (or None).\n\n    和 attname 一样, 除非 db_column 指定了\n#   * column:    The database column for this field. This is the same as\n#                \"attname\", except if db_column is specified.\n#\n# Code that introspects values, or does other dynamic things, should use\n# attname. For example, this gets the primary key value of object \"obj\":\n#\n#     getattr(obj, opts.pk.attname)\n\n@total_ordering\nclass Field(object):\n\n    所有字段的父类\n    \"\"\"Base class for all field types\"\"\"\n\n    # Designates whether empty strings fundamentally are allowed at the\n    # database level.\n    empty_strings_allowed = True\n\n    # These track each time a Field instance is created. Used to retain order.\n    # The auto_creation_counter is used for fields that Django implicitly\n    # creates, creation_counter is used for all user-specified fields.\n    creation_counter = 0       # 用户创建的字段\n    auto_creation_counter = -1 # django 隐式创建的字段\n\n    default_validators = [] # Default set of validators 默认有效性检测器\n\n    default_error_messages = {\n        'invalid_choice': _('Value %r is not a valid choice.'),\n        'null': _('This field cannot be null.'),\n        'blank': _('This field cannot be blank.'),\n        'unique': _('%(model_name)s with this %(field_label)s '\n                    'already exists.'),\n    }\n\n    描述\n    # Generic field type description, usually overriden by subclasses\n    def _description(self):\n        return _('Field of type: %(field_type)s') % {\n            'field_type': self.__class__.__name__\n        }\n    方便访问\n    description = property(_description)\n\n    def __init__(self, verbose_name=None, name=None, primary_key=False,\n            max_length=None, unique=False, blank=False, null=False,\n            db_index=False, rel=None, default=NOT_PROVIDED, editable=True,\n            serialize=True, unique_for_date=None, unique_for_month=None,\n            unique_for_year=None, choices=None, help_text='', db_column=None,\n            db_tablespace=None, auto_created=False, validators=[],\n            error_messages=None):\n\n        # 关于诸多设置, 请参见: https://docs.djangoproject.com/en/dev/howto/custom-model-fields/\n        self.name = name\n        self.verbose_name = verbose_name\n\n        # 应该只是一个 bool 值\n        self.primary_key = primary_key\n\n        self.max_length, self._unique = max_length, unique\n        self.blank, self.null = blank, null\n        self.rel = rel\n        self.default = default\n        self.editable = editable\n        self.serialize = serialize\n        self.unique_for_date, self.unique_for_month = (unique_for_date,\n                                                       unique_for_month)\n        self.unique_for_year = unique_for_year\n        self._choices = choices or []\n        self.help_text = help_text\n        self.db_column = db_column\n        self.db_tablespace = db_tablespace or settings.DEFAULT_INDEX_TABLESPACE\n        self.auto_created = auto_created\n\n        # Set db_index to True if the field has a relationship and doesn't\n        # explicitly set db_index.\n        self.db_index = db_index\n\n        当出现 model 出现继承关系的时候, 可能父类和子类的数据会在不同的表中存储, 两个表之间用主键关联, 这就是 OnetoOne Field\n        # Adjust the appropriate creation counter, and save our local copy.\n        if auto_created:\n            self.creation_counter = Field.auto_creation_counter\n            Field.auto_creation_counter -= 1\n        else:\n            self.creation_counter = Field.creation_counter\n            Field.creation_counter += 1\n\n        self.validators = self.default_validators + validators\n\n        messages = {}\n        for c in reversed(self.__class__.__mro__):\n            messages.update(getattr(c, 'default_error_messages', {}))\n        messages.update(error_messages or {})\n        self.error_messages = messages\n\n    为排序做准备\n    def __eq__(self, other):\n        # Needed for @total_ordering\n        if isinstance(other, Field):\n            return self.creation_counter == other.creation_counter\n        return NotImplemented\n\n    def __lt__(self, other):\n        # This is needed because bisect does not take a comparison function.\n        if isinstance(other, Field):\n            return self.creation_counter < other.creation_counter\n        return NotImplemented\n\n    def __hash__(self):\n        return hash(self.creation_counter)\n\n    def __deepcopy__(self, memodict):\n        不需要深度复制, 只复制了一部分\n        # We don't have to deepcopy very much here, since most things are not\n        # intended to be altered after initial creation.\n        obj = copy.copy(self)\n        if self.rel:\n            obj.rel = copy.copy(self.rel)\n        memodict[id(self)] = obj\n        return obj\n\n    def to_python(self, value):\n        \"\"\"\n        转换为 python 中的串\n        Converts the input value into the expected Python data type, raising\n        django.core.exceptions.ValidationError if the data can't be converted.\n        Returns the converted value. Subclasses should override this.\n        \"\"\"\n        return value ???\n\n    def run_validators(self, value):\n        if value in validators.EMPTY_VALUES: 空不许要检测\n            return\n\n        errors = []\n        for v in self.validators:\n            try:\n                v(value) 检测, 异常\n            except exceptions.ValidationError as e:\n                if hasattr(e, 'code') and e.code in self.error_messages:\n                    message = self.error_messages[e.code]\n                    if e.params:\n                        message = message % e.params\n                    errors.append(message)\n                else:\n                    errors.extend(e.messages)\n        if errors:\n            raise exceptions.ValidationError(errors)\n\n    def validate(self, value, model_instance):\n        \"\"\"\n        Validates value and throws ValidationError. Subclasses should override\n        this to provide validation logic.\n\n        子类需要提供具体的逻辑\n        \"\"\"\n        if not self.editable:\n            # Skip validation for non-editable fields.\n            return\n\n        if self._choices and value not in validators.EMPTY_VALUES:\n            for option_key, option_value in self.choices:\n                if isinstance(option_value, (list, tuple)):\n                    # This is an optgroup, so look inside the group for\n                    # options.\n                    for optgroup_key, optgroup_value in option_value:\n                        if value == optgroup_key:\n                            return\n                elif value == option_key:\n                    return\n            msg = self.error_messages['invalid_choice'] % value\n            raise exceptions.ValidationError(msg)\n\n        if value is None and not self.null:\n            raise exceptions.ValidationError(self.error_messages['null'])\n\n        if not self.blank and value in validators.EMPTY_VALUES:\n            raise exceptions.ValidationError(self.error_messages['blank'])\n\n    def clean(self, value, model_instance):\n        \"\"\"\n        Convert the value's type and run validation. Validation errors\n        from to_python and validate are propagated. The correct value is\n        returned if no error is raised.\n        \"\"\"\n        value = self.to_python(value) 转换为 python 字符串\n        self.validate(value, model_instance) 有效性检测\n        self.run_validators(value) 各种检测器\n        return value\n\n    def db_type(self, connection):\n        \"\"\"\n        Returns the database column data type for this field, for the provided\n        connection.\n        \"\"\"\n        # The default implementation of this method looks at the\n        # backend-specific DATA_TYPES dictionary, looking up the field by its\n        # \"internal type\".\n        #\n        # A Field class can implement the get_internal_type() method to specify\n        # which *preexisting* Django Field class it's most similar to -- i.e.,\n        # a custom field might be represented by a TEXT column type, which is\n        # the same as the TextField Django field type, which means the custom\n        # field's get_internal_type() returns 'TextField'.\n        #\n        # But the limitation of the get_internal_type() / data_types approach\n        # is that it cannot handle database column types that aren't already\n        # mapped to one of the built-in Django field types. In this case, you\n        # can implement db_type() instead of get_internal_type() to specify\n        # exactly which wacky database column type you want to use.\n\n        # from django.utils.datastructures import DictWrapper\n        data = DictWrapper(self.__dict__, connection.ops.quote_name, \"qn_\")\n        try:\n            return (connection.creation.data_types[self.get_internal_type()]\n                    % data)\n        except KeyError:\n            return None\n\n    @property\n    def unique(self):\n        return self._unique or self.primary_key\n\n    def set_attributes_from_name(self, name):\n        if not self.name:\n            self.name = name\n        self.attname, self.column = self.get_attname_column()\n        if self.verbose_name is None and self.name:\n            self.verbose_name = self.name.replace('_', ' ')\n\n    def contribute_to_class(self, cls, name):\n        self.set_attributes_from_name(name)\n        self.model = cls\n        cls._meta.add_field(self)\n        if self.choices:\n            setattr(cls, 'get_%s_display' % self.name,\n                    curry(cls._get_FIELD_display, field=self))\n\n    def get_attname(self):\n        return self.name\n\n    def get_attname_column(self):\n        attname = self.get_attname()\n        column = self.db_column or attname\n        return attname, column\n\n    def get_cache_name(self):\n        return '_%s_cache' % self.name\n\n    def get_internal_type(self):\n        return self.__class__.__name__\n\n    def pre_save(self, model_instance, add):\n        \"\"\"\n        Returns field's value just before saving.\n        \"\"\"\n        return getattr(model_instance, self.attname)\n\n    def get_prep_value(self, value):\n        \"\"\"\n        Perform preliminary non-db specific value checks and conversions.\n        \"\"\"\n        return value\n\n    def get_db_prep_value(self, value, connection, prepared=False):\n        \"\"\"Returns field's value prepared for interacting with the database\n        backend.\n\n        Used by the default implementations of ``get_db_prep_save``and\n        `get_db_prep_lookup```\n        \"\"\"\n        if not prepared:\n            value = self.get_prep_value(value)\n        return value\n\n    def get_db_prep_save(self, value, connection):\n        \"\"\"\n        Returns field's value prepared for saving into a database.\n        \"\"\"\n        return self.get_db_prep_value(value, connection=connection,\n                                      prepared=False)\n\n    def get_prep_lookup(self, lookup_type, value):\n        \"\"\"\n        Perform preliminary non-db specific lookup checks and conversions\n        \"\"\"\n        if hasattr(value, 'prepare'):\n            return value.prepare()\n        if hasattr(value, '_prepare'):\n            return value._prepare()\n\n        if lookup_type in (\n                'regex', 'iregex', 'month', 'day', 'week_day', 'search',\n                'contains', 'icontains', 'iexact', 'startswith', 'istartswith',\n                'endswith', 'iendswith', 'isnull'\n            ):\n            return value\n        elif lookup_type in ('exact', 'gt', 'gte', 'lt', 'lte'):\n            return self.get_prep_value(value)\n        elif lookup_type in ('range', 'in'):\n            return [self.get_prep_value(v) for v in value]\n        elif lookup_type == 'year':\n            try:\n                return int(value)\n            except ValueError:\n                raise ValueError(\"The __year lookup type requires an integer \"\n                                 \"argument\")\n\n        raise TypeError(\"Field has invalid lookup: %s\" % lookup_type)\n\n    def get_db_prep_lookup(self, lookup_type, value, connection,\n                           prepared=False):\n        \"\"\"\n        Returns field's value prepared for database lookup.\n\n        根据搜索需求不同需要格式化数据\n        \"\"\"\n        if not prepared:\n            value = self.get_prep_lookup(lookup_type, value)\n\n        if hasattr(value, 'get_compiler'):\n            value = value.get_compiler(connection=connection)\n\n        if hasattr(value, 'as_sql') or hasattr(value, '_as_sql'):\n            # If the value has a relabel_aliases method, it will need to\n            # be invoked before the final SQL is evaluated\n            if hasattr(value, 'relabel_aliases'):\n                return value\n            if hasattr(value, 'as_sql'):\n                sql, params = value.as_sql()\n            else:\n                sql, params = value._as_sql(connection=connection)\n            return QueryWrapper(('(%s)' % sql), params)\n\n        if lookup_type in ('regex', 'iregex', 'month', 'day', 'week_day',\n                           'search'):\n            return [value]\n        elif lookup_type in ('exact', 'gt', 'gte', 'lt', 'lte'):\n            return [self.get_db_prep_value(value, connection=connection,\n                                           prepared=prepared)]\n        elif lookup_type in ('range', 'in'):\n            return [self.get_db_prep_value(v, connection=connection,\n                                           prepared=prepared) for v in value]\n        elif lookup_type in ('contains', 'icontains'):\n            return [\"%%%s%%\" % connection.ops.prep_for_like_query(value)]\n        elif lookup_type == 'iexact':\n            return [connection.ops.prep_for_iexact_query(value)]\n        elif lookup_type in ('startswith', 'istartswith'):\n            return [\"%s%%\" % connection.ops.prep_for_like_query(value)]\n        elif lookup_type in ('endswith', 'iendswith'):\n            return [\"%%%s\" % connection.ops.prep_for_like_query(value)]\n        elif lookup_type == 'isnull':\n            return []\n        elif lookup_type == 'year':\n            if self.get_internal_type() == 'DateField':\n                return connection.ops.year_lookup_bounds_for_date_field(value)\n            else:\n                return connection.ops.year_lookup_bounds(value)\n\n    def has_default(self):\n        \"\"\"\n        Returns a boolean of whether this field has a default value.\n        \"\"\"\n        return self.default is not NOT_PROVIDED\n\n    def get_default(self):\n        \"\"\"\n        Returns the default value for this field. 返回默认值\n        \"\"\"\n        if self.has_default():\n            if callable(self.default):\n                return self.default()\n\n            return force_text(self.default, strings_only=True)\n\n        if (not self.empty_strings_allowed or (self.null and\n                   not connection.features.interprets_empty_strings_as_nulls)):\n            return None\n        return \"\"\n\n    def get_validator_unique_lookup_type(self):\n        return '%s__exact' % self.name\n\n    def get_choices(self, include_blank=True, blank_choice=BLANK_CHOICE_DASH):\n        \"\"\"Returns choices with a default blank choices included, for use\n        as SelectField choices for this field.\"\"\"\n        first_choice = include_blank and blank_choice or []\n        if self.choices:\n            return first_choice + list(self.choices)\n        rel_model = self.rel.to\n        if hasattr(self.rel, 'get_related_field'):\n            lst = [(getattr(x, self.rel.get_related_field().attname),\n                        smart_text(x))\n                   for x in rel_model._default_manager.complex_filter(\n                       self.rel.limit_choices_to)]\n        else:\n            lst = [(x._get_pk_val(), smart_text(x))\n                   for x in rel_model._default_manager.complex_filter(\n                       self.rel.limit_choices_to)]\n        return first_choice + lst\n\n    def get_choices_default(self):\n        return self.get_choices()\n\n    def get_flatchoices(self, include_blank=True,\n                        blank_choice=BLANK_CHOICE_DASH):\n        \"\"\"\n        Returns flattened choices with a default blank choice included.\n        \"\"\"\n        first_choice = include_blank and blank_choice or []\n        return first_choice + list(self.flatchoices)\n\n    def _get_val_from_obj(self, obj):\n        if obj is not None:\n            return getattr(obj, self.attname)\n        else:\n            return self.get_default()\n\n    def value_to_string(self, obj):\n        \"\"\"\n        Returns a string value of this field from the passed obj.\n        This is used by the serialization framework.\n        \"\"\"\n        return smart_text(self._get_val_from_obj(obj))\n\n    def bind(self, fieldmapping, original, bound_field_class):\n        return bound_field_class(self, fieldmapping, original)\n\n    def _get_choices(self):\n        if is_iterator(self._choices):\n            choices, self._choices = tee(self._choices)\n            return choices\n        else:\n            return self._choices\n    choices = property(_get_choices)\n\n    def _get_flatchoices(self):\n        \"\"\"Flattened version of choices tuple.\"\"\"\n        flat = []\n        for choice, value in self.choices:\n            if isinstance(value, (list, tuple)):\n                flat.extend(value)\n            else:\n                flat.append((choice,value))\n        return flat\n    flatchoices = property(_get_flatchoices)\n\n    def save_form_data(self, instance, data):\n        setattr(instance, self.name, data)\n\n    返回数据库对应属性的表单字段\n    def formfield(self, form_class=forms.CharField, **kwargs):\n        \"\"\"\n        Returns a django.forms.Field instance for this database Field.\n        \"\"\"\n        defaults = {'required': not self.blank,\n                    'label': capfirst(self.verbose_name),\n                    'help_text': self.help_text}\n\n        if self.has_default():\n            if callable(self.default):\n                defaults['initial'] = self.default\n                defaults['show_hidden_initial'] = True\n            else:\n                defaults['initial'] = self.get_default()\n\n        if self.choices:\n            # Fields with choices get special treatment.\n            include_blank = (self.blank or\n                             not (self.has_default() or 'initial' in kwargs))\n            defaults['choices'] = self.get_choices(include_blank=include_blank)\n            defaults['coerce'] = self.to_python\n\n            if self.null:\n                defaults['empty_value'] = None\n\n            form_class = forms.TypedChoiceField\n            # Many of the subclass-specific formfield arguments (min_value,\n            # max_value) don't apply for choice fields, so be sure to only pass\n            # the values that TypedChoiceField will understand.\n            for k in list(kwargs):\n                if k not in ('coerce', 'empty_value', 'choices', 'required',\n                             'widget', 'label', 'initial', 'help_text',\n                             'error_messages', 'show_hidden_initial'): 住需要某些键\n                    del kwargs[k]\n        defaults.update(kwargs)\n        return form_class(**defaults)\n\n    def value_from_object(self, obj):\n        \"\"\"\n        返回给定的模块中的字段\n        Returns the value of this field in the given model instance.\n        \"\"\"\n        return getattr(obj, self.attname)\n\n    def __repr__(self):\n        \"\"\"\n        Displays the module, class and name of the field.\n        \"\"\"\n        path = '%s.%s' % (self.__class__.__module__, self.__class__.__name__)\n        name = getattr(self, 'name', None)\n        if name is not None:\n            return '<%s: %s>' % (path, name)\n        return '<%s>' % path\n\nclass AutoField(Field):\n    description = _(\"Integer\")\n\n    empty_strings_allowed = False\n    default_error_messages = {\n        'invalid': _(\"'%s' value must be an integer.\"),\n    }\n\n    def __init__(self, *args, **kwargs):\n        assert kwargs.get('primary_key', False) is True, \\\n               \"%ss must have primary_key=True.\" % self.__class__.__name__\n        kwargs['blank'] = True\n        Field.__init__(self, *args, **kwargs)\n\n    def get_internal_type(self):\n        return \"AutoField\"\n\n    def to_python(self, value):\n        if value is None:\n            return value\n        try:\n            return int(value)\n        except (TypeError, ValueError):\n            msg = self.error_messages['invalid'] % value\n            raise exceptions.ValidationError(msg)\n\n    def validate(self, value, model_instance):\n        pass\n\n    def get_db_prep_value(self, value, connection, prepared=False):\n        if not prepared:\n            value = self.get_prep_value(value)\n            value = connection.ops.validate_autopk_value(value)\n        return value\n\n    def get_prep_value(self, value):\n        if value is None:\n            return None\n        return int(value)\n\n    def contribute_to_class(self, cls, name):\n        assert not cls._meta.has_auto_field, \\\n               \"A model can't have more than one AutoField.\"\n        super(AutoField, self).contribute_to_class(cls, name)\n        cls._meta.has_auto_field = True\n        cls._meta.auto_field = self\n\n    def formfield(self, **kwargs):\n        return None\n\nclass BooleanField(Field):\n    empty_strings_allowed = False\n    default_error_messages = {\n        'invalid': _(\"'%s' value must be either True or False.\"),\n    }\n    description = _(\"Boolean (Either True or False)\")\n\n    def __init__(self, *args, **kwargs):\n        kwargs['blank'] = True\n        if 'default' not in kwargs and not kwargs.get('null'):\n            kwargs['default'] = False\n        Field.__init__(self, *args, **kwargs)\n\n    def get_internal_type(self):\n        return \"BooleanField\"\n\n    def to_python(self, value):\n        if value in (True, False):\n            # if value is 1 or 0 than it's equal to True or False, but we want\n            # to return a true bool for semantic reasons.\n            return bool(value)\n        if value in ('t', 'True', '1'):\n            return True\n        if value in ('f', 'False', '0'):\n            return False\n        msg = self.error_messages['invalid'] % value\n        raise exceptions.ValidationError(msg)\n\n    def get_prep_lookup(self, lookup_type, value):\n        # Special-case handling for filters coming from a Web request (e.g. the\n        # admin interface). Only works for scalar values (not lists). If you're\n        # passing in a list, you might as well make things the right type when\n        # constructing the list.\n        if value in ('1', '0'):\n            value = bool(int(value))\n        return super(BooleanField, self).get_prep_lookup(lookup_type, value)\n\n    def get_prep_value(self, value):\n        if value is None:\n            return None\n        return bool(value)\n\n    def formfield(self, **kwargs):\n        # Unlike most fields, BooleanField figures out include_blank from\n        # self.null instead of self.blank.\n        if self.choices:\n            include_blank = (self.null or\n                             not (self.has_default() or 'initial' in kwargs))\n            defaults = {'choices': self.get_choices(\n                                       include_blank=include_blank)}\n        else:\n            defaults = {'form_class': forms.BooleanField}\n        defaults.update(kwargs)\n        return super(BooleanField, self).formfield(**defaults)\n\nclass CharField(Field):\n    description = _(\"String (up to %(max_length)s)\")\n\n    def __init__(self, *args, **kwargs):\n        super(CharField, self).__init__(*args, **kwargs)\n        self.validators.append(validators.MaxLengthValidator(self.max_length)) #添加长度检测工具\n\n    def get_internal_type(self):\n        return \"CharField\"\n\n    def to_python(self, value):\n        if isinstance(value, six.string_types) or value is None:\n            return value\n        return smart_text(value)\n\n    def get_prep_value(self, value):\n        return self.to_python(value)\n\n    def formfield(self, **kwargs):\n        # Passing max_length to forms.CharField means that the value's length\n        # will be validated twice. This is considered acceptable since we want\n        # the value in the form field (to pass into widget for example).\n        defaults = {'max_length': self.max_length}\n        defaults.update(kwargs)\n        return super(CharField, self).formfield(**defaults)\n\n# TODO: Maybe move this into contrib, because it's specialized.\nclass CommaSeparatedIntegerField(CharField):\n    default_validators = [validators.validate_comma_separated_integer_list]\n    description = _(\"Comma-separated integers\")\n\n    def formfield(self, **kwargs):\n        defaults = {\n            'error_messages': {\n                'invalid': _('Enter only digits separated by commas.'),\n            }\n        }\n        defaults.update(kwargs)\n        return super(CommaSeparatedIntegerField, self).formfield(**defaults)\n\nclass DateField(Field):\n    empty_strings_allowed = False\n    default_error_messages = {\n        'invalid': _(\"'%s' value has an invalid date format. It must be \"\n                     \"in YYYY-MM-DD format.\"),\n        'invalid_date': _(\"'%s' value has the correct format (YYYY-MM-DD) \"\n                          \"but it is an invalid date.\"),\n    }\n    description = _(\"Date (without time)\")\n\n    def __init__(self, verbose_name=None, name=None, auto_now=False,\n                 auto_now_add=False, **kwargs):\n        self.auto_now, self.auto_now_add = auto_now, auto_now_add\n        if auto_now or auto_now_add:\n            kwargs['editable'] = False\n            kwargs['blank'] = True\n        Field.__init__(self, verbose_name, name, **kwargs)\n\n    def get_internal_type(self):\n        return \"DateField\"\n\n    def to_python(self, value):\n        if value is None:\n            return value\n        if isinstance(value, datetime.datetime):\n            if settings.USE_TZ and timezone.is_aware(value):\n                # Convert aware datetimes to the default time zone\n                # before casting them to dates (#17742).\n                default_timezone = timezone.get_default_timezone()\n                value = timezone.make_naive(value, default_timezone)\n            return value.date()\n        if isinstance(value, datetime.date):\n            return value\n\n        try:\n            parsed = parse_date(value)\n            if parsed is not None:\n                return parsed\n        except ValueError:\n            msg = self.error_messages['invalid_date'] % value\n            raise exceptions.ValidationError(msg)\n\n        msg = self.error_messages['invalid'] % value\n        raise exceptions.ValidationError(msg)\n\n    def pre_save(self, model_instance, add):\n        if self.auto_now or (self.auto_now_add and add):\n            value = datetime.date.today()\n            setattr(model_instance, self.attname, value)\n            return value\n        else:\n            return super(DateField, self).pre_save(model_instance, add)\n\n    def contribute_to_class(self, cls, name):\n        super(DateField,self).contribute_to_class(cls, name)\n        if not self.null:\n            setattr(cls, 'get_next_by_%s' % self.name,\n                curry(cls._get_next_or_previous_by_FIELD, field=self,\n                      is_next=True))\n            setattr(cls, 'get_previous_by_%s' % self.name,\n                curry(cls._get_next_or_previous_by_FIELD, field=self,\n                      is_next=False))\n\n    def get_prep_lookup(self, lookup_type, value):\n        # For \"__month\", \"__day\", and \"__week_day\" lookups, convert the value\n        # to an int so the database backend always sees a consistent type.\n        if lookup_type in ('month', 'day', 'week_day'):\n            return int(value)\n        return super(DateField, self).get_prep_lookup(lookup_type, value)\n\n    def get_prep_value(self, value):\n        return self.to_python(value)\n\n    def get_db_prep_value(self, value, connection, prepared=False):\n        # Casts dates into the format expected by the backend\n        if not prepared:\n            value = self.get_prep_value(value)\n        return connection.ops.value_to_db_date(value)\n\n    def value_to_string(self, obj):\n        val = self._get_val_from_obj(obj)\n        return '' if val is None else val.isoformat()\n\n    def formfield(self, **kwargs):\n        defaults = {'form_class': forms.DateField}\n        defaults.update(kwargs)\n        return super(DateField, self).formfield(**defaults)\n\nclass DateTimeField(DateField):\n    empty_strings_allowed = False\n    default_error_messages = {\n        'invalid': _(\"'%s' value has an invalid format. It must be in \"\n                     \"YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ] format.\"),\n        'invalid_date': _(\"'%s' value has the correct format \"\n                          \"(YYYY-MM-DD) but it is an invalid date.\"),\n        'invalid_datetime': _(\"'%s' value has the correct format \"\n                              \"(YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) \"\n                              \"but it is an invalid date/time.\"),\n    }\n    description = _(\"Date (with time)\")\n\n    # __init__ is inherited from DateField\n\n    def get_internal_type(self):\n        return \"DateTimeField\"\n\n    def to_python(self, value):\n        if value is None:\n            return value\n        if isinstance(value, datetime.datetime):\n            return value\n        if isinstance(value, datetime.date):\n            value = datetime.datetime(value.year, value.month, value.day)\n            if settings.USE_TZ:\n                # For backwards compatibility, interpret naive datetimes in\n                # local time. This won't work during DST change, but we can't\n                # do much about it, so we let the exceptions percolate up the\n                # call stack.\n                warnings.warn(\"DateTimeField received a naive datetime (%s)\"\n                              \" while time zone support is active.\" % value,\n                              RuntimeWarning)\n                default_timezone = timezone.get_default_timezone()\n                value = timezone.make_aware(value, default_timezone)\n            return value\n\n        try:\n            parsed = parse_datetime(value)\n            if parsed is not None:\n                return parsed\n        except ValueError:\n            msg = self.error_messages['invalid_datetime'] % value\n            raise exceptions.ValidationError(msg)\n\n        try:\n            parsed = parse_date(value)\n            if parsed is not None:\n                return datetime.datetime(parsed.year, parsed.month, parsed.day)\n        except ValueError:\n            msg = self.error_messages['invalid_date'] % value\n            raise exceptions.ValidationError(msg)\n\n        msg = self.error_messages['invalid'] % value\n        raise exceptions.ValidationError(msg)\n\n    def pre_save(self, model_instance, add):\n        if self.auto_now or (self.auto_now_add and add):\n            value = timezone.now()\n            setattr(model_instance, self.attname, value)\n            return value\n        else:\n            return super(DateTimeField, self).pre_save(model_instance, add)\n\n    # contribute_to_class is inherited from DateField, it registers\n    # get_next_by_FOO and get_prev_by_FOO\n\n    # get_prep_lookup is inherited from DateField\n\n    def get_prep_value(self, value):\n        value = self.to_python(value)\n        if value is not None and settings.USE_TZ and timezone.is_naive(value):\n            # For backwards compatibility, interpret naive datetimes in local\n            # time. This won't work during DST change, but we can't do much\n            # about it, so we let the exceptions percolate up the call stack.\n            warnings.warn(\"DateTimeField received a naive datetime (%s)\"\n                          \" while time zone support is active.\" % value,\n                          RuntimeWarning)\n            default_timezone = timezone.get_default_timezone()\n            value = timezone.make_aware(value, default_timezone)\n        return value\n\n    def get_db_prep_value(self, value, connection, prepared=False):\n        # Casts datetimes into the format expected by the backend\n        if not prepared:\n            value = self.get_prep_value(value)\n        return connection.ops.value_to_db_datetime(value)\n\n    def value_to_string(self, obj):\n        val = self._get_val_from_obj(obj)\n        return '' if val is None else val.isoformat()\n\n    def formfield(self, **kwargs):\n        defaults = {'form_class': forms.DateTimeField}\n        defaults.update(kwargs)\n        return super(DateTimeField, self).formfield(**defaults)\n\nclass DecimalField(Field):\n    empty_strings_allowed = False\n    default_error_messages = {\n        'invalid': _(\"'%s' value must be a decimal number.\"),\n    }\n    description = _(\"Decimal number\")\n\n    def __init__(self, verbose_name=None, name=None, max_digits=None,\n                 decimal_places=None, **kwargs):\n        self.max_digits, self.decimal_places = max_digits, decimal_places\n        Field.__init__(self, verbose_name, name, **kwargs)\n\n    def get_internal_type(self):\n        return \"DecimalField\"\n\n    def to_python(self, value):\n        if value is None:\n            return value\n        try:\n            return decimal.Decimal(value)\n        except decimal.InvalidOperation:\n            msg = self.error_messages['invalid'] % value\n            raise exceptions.ValidationError(msg)\n\n    def _format(self, value):\n        if isinstance(value, six.string_types) or value is None:\n            return value\n        else:\n            return self.format_number(value)\n\n    def format_number(self, value):\n        \"\"\"\n        Formats a number into a string with the requisite number of digits and\n        decimal places.\n        \"\"\"\n        # Method moved to django.db.backends.util.\n        #\n        # It is preserved because it is used by the oracle backend\n        # (django.db.backends.oracle.query), and also for\n        # backwards-compatibility with any external code which may have used\n        # this method.\n        from django.db.backends import util\n        return util.format_number(value, self.max_digits, self.decimal_places)\n\n    def get_db_prep_save(self, value, connection):\n        return connection.ops.value_to_db_decimal(self.to_python(value),\n                self.max_digits, self.decimal_places)\n\n    def get_prep_value(self, value):\n        return self.to_python(value)\n\n    def formfield(self, **kwargs):\n        defaults = {\n            'max_digits': self.max_digits,\n            'decimal_places': self.decimal_places,\n            'form_class': forms.DecimalField,\n        }\n        defaults.update(kwargs)\n        return super(DecimalField, self).formfield(**defaults)\n\nclass EmailField(CharField):\n    default_validators = [validators.validate_email]\n    description = _(\"Email address\")\n\n    def __init__(self, *args, **kwargs):\n        # max_length should be overridden to 254 characters to be fully\n        # compliant with RFCs 3696 and 5321\n\n        kwargs['max_length'] = kwargs.get('max_length', 75)\n        CharField.__init__(self, *args, **kwargs)\n\n    def formfield(self, **kwargs):\n        # As with CharField, this will cause email validation to be performed\n        # twice.\n        defaults = {\n            'form_class': forms.EmailField,\n        }\n        defaults.update(kwargs)\n        return super(EmailField, self).formfield(**defaults)\n\nclass FilePathField(Field):\n    description = _(\"File path\")\n\n    def __init__(self, verbose_name=None, name=None, path='', match=None,\n                 recursive=False, allow_files=True, allow_folders=False, **kwargs):\n        self.path, self.match, self.recursive = path, match, recursive\n        self.allow_files, self.allow_folders =  allow_files, allow_folders\n        kwargs['max_length'] = kwargs.get('max_length', 100)\n        Field.__init__(self, verbose_name, name, **kwargs)\n\n    def formfield(self, **kwargs):\n        defaults = {\n            'path': self.path,\n            'match': self.match,\n            'recursive': self.recursive,\n            'form_class': forms.FilePathField,\n            'allow_files': self.allow_files,\n            'allow_folders': self.allow_folders,\n        }\n        defaults.update(kwargs)\n        return super(FilePathField, self).formfield(**defaults)\n\n    def get_internal_type(self):\n        return \"FilePathField\"\n\nclass FloatField(Field):\n    empty_strings_allowed = False\n    default_error_messages = {\n        'invalid': _(\"'%s' value must be a float.\"),\n    }\n    description = _(\"Floating point number\")\n\n    def get_prep_value(self, value):\n        if value is None:\n            return None\n        return float(value)\n\n    def get_internal_type(self):\n        return \"FloatField\"\n\n    def to_python(self, value):\n        if value is None:\n            return value\n        try:\n            return float(value)\n        except (TypeError, ValueError):\n            msg = self.error_messages['invalid'] % value\n            raise exceptions.ValidationError(msg)\n\n    def formfield(self, **kwargs):\n        defaults = {'form_class': forms.FloatField}\n        defaults.update(kwargs)\n        return super(FloatField, self).formfield(**defaults)\n\nclass IntegerField(Field):\n    empty_strings_allowed = False\n    default_error_messages = {\n        'invalid': _(\"'%s' value must be an integer.\"),\n    }\n    description = _(\"Integer\")\n\n    def get_prep_value(self, value):\n        if value is None:\n            return None\n        return int(value)\n\n    def get_prep_lookup(self, lookup_type, value):\n        if ((lookup_type == 'gte' or lookup_type == 'lt')\n            and isinstance(value, float)):\n            value = math.ceil(value)\n        return super(IntegerField, self).get_prep_lookup(lookup_type, value)\n\n    def get_internal_type(self):\n        return \"IntegerField\"\n\n    def to_python(self, value):\n        if value is None:\n            return value\n        try:\n            return int(value)\n        except (TypeError, ValueError):\n            msg = self.error_messages['invalid'] % value\n            raise exceptions.ValidationError(msg)\n\n    def formfield(self, **kwargs):\n        defaults = {'form_class': forms.IntegerField}\n        defaults.update(kwargs)\n        return super(IntegerField, self).formfield(**defaults)\n\nclass BigIntegerField(IntegerField):\n    empty_strings_allowed = False\n    description = _(\"Big (8 byte) integer\")\n    MAX_BIGINT = 9223372036854775807\n\n    def get_internal_type(self):\n        return \"BigIntegerField\"\n\n    def formfield(self, **kwargs):\n        defaults = {'min_value': -BigIntegerField.MAX_BIGINT - 1,\n                    'max_value': BigIntegerField.MAX_BIGINT}\n        defaults.update(kwargs)\n        return super(BigIntegerField, self).formfield(**defaults)\n\nclass IPAddressField(Field):\n    empty_strings_allowed = False\n    description = _(\"IPv4 address\")\n\n    def __init__(self, *args, **kwargs):\n        kwargs['max_length'] = 15\n        Field.__init__(self, *args, **kwargs)\n\n    def get_internal_type(self):\n        return \"IPAddressField\"\n\n    def formfield(self, **kwargs):\n        defaults = {'form_class': forms.IPAddressField}\n        defaults.update(kwargs)\n        return super(IPAddressField, self).formfield(**defaults)\n\nclass GenericIPAddressField(Field):\n    empty_strings_allowed = True\n    description = _(\"IP address\")\n    default_error_messages = {}\n\n    def __init__(self, verbose_name=None, name=None, protocol='both',\n                 unpack_ipv4=False, *args, **kwargs):\n        self.unpack_ipv4 = unpack_ipv4\n        self.default_validators, invalid_error_message = \\\n            validators.ip_address_validators(protocol, unpack_ipv4)\n        self.default_error_messages['invalid'] = invalid_error_message\n        kwargs['max_length'] = 39\n        Field.__init__(self, verbose_name, name, *args, **kwargs)\n\n    def get_internal_type(self):\n        return \"GenericIPAddressField\"\n\n    def to_python(self, value):\n        if value and ':' in value:\n            return clean_ipv6_address(value,\n                self.unpack_ipv4, self.error_messages['invalid'])\n        return value\n\n    def get_db_prep_value(self, value, connection, prepared=False):\n        if not prepared:\n            value = self.get_prep_value(value)\n        return value or None\n\n    def get_prep_value(self, value):\n        if value and ':' in value:\n            try:\n                return clean_ipv6_address(value, self.unpack_ipv4)\n            except exceptions.ValidationError:\n                pass\n        return value\n\n    def formfield(self, **kwargs):\n        defaults = {'form_class': forms.GenericIPAddressField}\n        defaults.update(kwargs)\n        return super(GenericIPAddressField, self).formfield(**defaults)\n\n\nclass NullBooleanField(Field):\n    empty_strings_allowed = False\n    default_error_messages = {\n        'invalid': _(\"'%s' value must be either None, True or False.\"),\n    }\n    description = _(\"Boolean (Either True, False or None)\")\n\n    def __init__(self, *args, **kwargs):\n        kwargs['null'] = True\n        kwargs['blank'] = True\n        Field.__init__(self, *args, **kwargs)\n\n    def get_internal_type(self):\n        return \"NullBooleanField\"\n\n    def to_python(self, value):\n        if value is None:\n            return None\n        if value in (True, False):\n            return bool(value)\n        if value in ('None',):\n            return None\n        if value in ('t', 'True', '1'):\n            return True\n        if value in ('f', 'False', '0'):\n            return False\n        msg = self.error_messages['invalid'] % value\n        raise exceptions.ValidationError(msg)\n\n    def get_prep_lookup(self, lookup_type, value):\n        # Special-case handling for filters coming from a Web request (e.g. the\n        # admin interface). Only works for scalar values (not lists). If you're\n        # passing in a list, you might as well make things the right type when\n        # constructing the list.\n        if value in ('1', '0'):\n            value = bool(int(value))\n        return super(NullBooleanField, self).get_prep_lookup(lookup_type,\n                                                             value)\n\n    def get_prep_value(self, value):\n        if value is None:\n            return None\n        return bool(value)\n\n    def formfield(self, **kwargs):\n        defaults = {\n            'form_class': forms.NullBooleanField,\n            'required': not self.blank,\n            'label': capfirst(self.verbose_name),\n            'help_text': self.help_text}\n        defaults.update(kwargs)\n        return super(NullBooleanField, self).formfield(**defaults)\n\nclass PositiveIntegerField(IntegerField):\n    description = _(\"Positive integer\")\n\n    def get_internal_type(self):\n        return \"PositiveIntegerField\"\n\n    def formfield(self, **kwargs):\n        defaults = {'min_value': 0}\n        defaults.update(kwargs)\n        return super(PositiveIntegerField, self).formfield(**defaults)\n\nclass PositiveSmallIntegerField(IntegerField):\n    description = _(\"Positive small integer\")\n\n    def get_internal_type(self):\n        return \"PositiveSmallIntegerField\"\n\n    def formfield(self, **kwargs):\n        defaults = {'min_value': 0}\n        defaults.update(kwargs)\n        return super(PositiveSmallIntegerField, self).formfield(**defaults)\n\nclass SlugField(CharField):\n    description = _(\"Slug (up to %(max_length)s)\")\n\n    def __init__(self, *args, **kwargs):\n        kwargs['max_length'] = kwargs.get('max_length', 50)\n        # Set db_index=True unless it's been set manually.\n        if 'db_index' not in kwargs:\n            kwargs['db_index'] = True\n        super(SlugField, self).__init__(*args, **kwargs)\n\n    def get_internal_type(self):\n        return \"SlugField\"\n\n    def formfield(self, **kwargs):\n        defaults = {'form_class': forms.SlugField}\n        defaults.update(kwargs)\n        return super(SlugField, self).formfield(**defaults)\n\nclass SmallIntegerField(IntegerField):\n    description = _(\"Small integer\")\n\n    def get_internal_type(self):\n        return \"SmallIntegerField\"\n\nclass TextField(Field):\n    description = _(\"Text\")\n\n    def get_internal_type(self):\n        return \"TextField\"\n\n    def get_prep_value(self, value):\n        if isinstance(value, six.string_types) or value is None:\n            return value\n        return smart_text(value)\n\n    def formfield(self, **kwargs):\n        defaults = {'widget': forms.Textarea}\n        defaults.update(kwargs)\n        return super(TextField, self).formfield(**defaults)\n\nclass TimeField(Field):\n    empty_strings_allowed = False\n    default_error_messages = {\n        'invalid': _(\"'%s' value has an invalid format. It must be in \"\n                     \"HH:MM[:ss[.uuuuuu]] format.\"),\n        'invalid_time': _(\"'%s' value has the correct format \"\n                          \"(HH:MM[:ss[.uuuuuu]]) but it is an invalid time.\"),\n    }\n    description = _(\"Time\")\n\n    def __init__(self, verbose_name=None, name=None, auto_now=False,\n                 auto_now_add=False, **kwargs):\n        self.auto_now, self.auto_now_add = auto_now, auto_now_add\n        if auto_now or auto_now_add:\n            kwargs['editable'] = False\n            kwargs['blank'] = True\n        Field.__init__(self, verbose_name, name, **kwargs)\n\n    def get_internal_type(self):\n        return \"TimeField\"\n\n    def to_python(self, value):\n        if value is None:\n            return None\n        if isinstance(value, datetime.time):\n            return value\n        if isinstance(value, datetime.datetime):\n            # Not usually a good idea to pass in a datetime here (it loses\n            # information), but this can be a side-effect of interacting with a\n            # database backend (e.g. Oracle), so we'll be accommodating.\n            return value.time()\n\n        try:\n            parsed = parse_time(value)\n            if parsed is not None:\n                return parsed\n        except ValueError:\n            msg = self.error_messages['invalid_time'] % value\n            raise exceptions.ValidationError(msg)\n\n        msg = self.error_messages['invalid'] % value\n        raise exceptions.ValidationError(msg)\n\n    def pre_save(self, model_instance, add):\n        if self.auto_now or (self.auto_now_add and add):\n            value = datetime.datetime.now().time()\n            setattr(model_instance, self.attname, value)\n            return value\n        else:\n            return super(TimeField, self).pre_save(model_instance, add)\n\n    def get_prep_value(self, value):\n        return self.to_python(value)\n\n    def get_db_prep_value(self, value, connection, prepared=False):\n        # Casts times into the format expected by the backend\n        if not prepared:\n            value = self.get_prep_value(value)\n        return connection.ops.value_to_db_time(value)\n\n    def value_to_string(self, obj):\n        val = self._get_val_from_obj(obj)\n        return '' if val is None else val.isoformat()\n\n    def formfield(self, **kwargs):\n        defaults = {'form_class': forms.TimeField}\n        defaults.update(kwargs)\n        return super(TimeField, self).formfield(**defaults)\n\nclass URLField(CharField):\n    description = _(\"URL\")\n\n    def __init__(self, verbose_name=None, name=None, **kwargs):\n        kwargs['max_length'] = kwargs.get('max_length', 200)\n        CharField.__init__(self, verbose_name, name, **kwargs)\n        self.validators.append(validators.URLValidator())\n\n    def formfield(self, **kwargs):\n        # As with CharField, this will cause URL validation to be performed\n        # twice.\n        defaults = {\n            'form_class': forms.URLField,\n        }\n        defaults.update(kwargs)\n        return super(URLField, self).formfield(**defaults)\n"
  },
  {
    "path": "Django-1.5.1/django/db/models/fields/files.py",
    "content": "import datetime\nimport os\n\nfrom django import forms\nfrom django.db.models.fields import Field\nfrom django.core.files.base import File\nfrom django.core.files.storage import default_storage\nfrom django.core.files.images import ImageFile\nfrom django.db.models import signals\nfrom django.utils.encoding import force_str, force_text\nfrom django.utils import six\nfrom django.utils.translation import ugettext_lazy as _\n\nclass FieldFile(File):\n    def __init__(self, instance, field, name):\n        super(FieldFile, self).__init__(None, name)\n        self.instance = instance\n        self.field = field\n        self.storage = field.storage\n        self._committed = True\n\n    def __eq__(self, other):\n        # Older code may be expecting FileField values to be simple strings.\n        # By overriding the == operator, it can remain backwards compatibility.\n        if hasattr(other, 'name'):\n            return self.name == other.name\n        return self.name == other\n\n    def __ne__(self, other):\n        return not self.__eq__(other)\n\n    def __hash__(self):\n        return hash(self.name)\n\n    # The standard File contains most of the necessary properties, but\n    # FieldFiles can be instantiated without a name, so that needs to\n    # be checked for here.\n\n    def _require_file(self):\n        if not self:\n            raise ValueError(\"The '%s' attribute has no file associated with it.\" % self.field.name)\n\n    def _get_file(self):\n        self._require_file()\n        if not hasattr(self, '_file') or self._file is None:\n            self._file = self.storage.open(self.name, 'rb')\n        return self._file\n\n    def _set_file(self, file):\n        self._file = file\n\n    def _del_file(self):\n        del self._file\n\n    file = property(_get_file, _set_file, _del_file)\n\n    def _get_path(self):\n        self._require_file()\n        return self.storage.path(self.name)\n    path = property(_get_path)\n\n    def _get_url(self):\n        self._require_file()\n        return self.storage.url(self.name)\n    url = property(_get_url)\n\n    def _get_size(self):\n        self._require_file()\n        if not self._committed:\n            return self.file.size\n        return self.storage.size(self.name)\n    size = property(_get_size)\n\n    def open(self, mode='rb'):\n        self._require_file()\n        self.file.open(mode)\n    # open() doesn't alter the file's contents, but it does reset the pointer\n    open.alters_data = True\n\n    # In addition to the standard File API, FieldFiles have extra methods\n    # to further manipulate the underlying file, as well as update the\n    # associated model instance.\n\n    def save(self, name, content, save=True):\n        name = self.field.generate_filename(self.instance, name)\n        self.name = self.storage.save(name, content)\n        setattr(self.instance, self.field.name, self.name)\n\n        # Update the filesize cache\n        self._size = content.size\n        self._committed = True\n\n        # Save the object because it has changed, unless save is False\n        if save:\n            self.instance.save()\n    save.alters_data = True\n\n    def delete(self, save=True):\n        # Only close the file if it's already open, which we know by the\n        # presence of self._file\n        if hasattr(self, '_file'):\n            self.close()\n            del self.file\n\n        self.storage.delete(self.name)\n\n        self.name = None\n        setattr(self.instance, self.field.name, self.name)\n\n        # Delete the filesize cache\n        if hasattr(self, '_size'):\n            del self._size\n        self._committed = False\n\n        if save:\n            self.instance.save()\n    delete.alters_data = True\n\n    def _get_closed(self):\n        file = getattr(self, '_file', None)\n        return file is None or file.closed\n    closed = property(_get_closed)\n\n    def close(self):\n        file = getattr(self, '_file', None)\n        if file is not None:\n            file.close()\n\n    def __getstate__(self):\n        # FieldFile needs access to its associated model field and an instance\n        # it's attached to in order to work properly, but the only necessary\n        # data to be pickled is the file's name itself. Everything else will\n        # be restored later, by FileDescriptor below.\n        return {'name': self.name, 'closed': False, '_committed': True, '_file': None}\n\nclass FileDescriptor(object):\n    \"\"\"\n    The descriptor for the file attribute on the model instance. Returns a\n    FieldFile when accessed so you can do stuff like::\n\n        >>> instance.file.size\n\n    Assigns a file object on assignment so you can do::\n\n        >>> instance.file = File(...)\n\n    \"\"\"\n    def __init__(self, field):\n        self.field = field\n\n    def __get__(self, instance=None, owner=None):\n        if instance is None:\n            raise AttributeError(\n                \"The '%s' attribute can only be accessed from %s instances.\"\n                % (self.field.name, owner.__name__))\n\n        # This is slightly complicated, so worth an explanation.\n        # instance.file`needs to ultimately return some instance of `File`,\n        # probably a subclass. Additionally, this returned object needs to have\n        # the FieldFile API so that users can easily do things like\n        # instance.file.path and have that delegated to the file storage engine.\n        # Easy enough if we're strict about assignment in __set__, but if you\n        # peek below you can see that we're not. So depending on the current\n        # value of the field we have to dynamically construct some sort of\n        # \"thing\" to return.\n\n        # The instance dict contains whatever was originally assigned\n        # in __set__.\n        file = instance.__dict__[self.field.name]\n\n        # If this value is a string (instance.file = \"path/to/file\") or None\n        # then we simply wrap it with the appropriate attribute class according\n        # to the file field. [This is FieldFile for FileFields and\n        # ImageFieldFile for ImageFields; it's also conceivable that user\n        # subclasses might also want to subclass the attribute class]. This\n        # object understands how to convert a path to a file, and also how to\n        # handle None.\n        if isinstance(file, six.string_types) or file is None:\n            attr = self.field.attr_class(instance, self.field, file)\n            instance.__dict__[self.field.name] = attr\n\n        # Other types of files may be assigned as well, but they need to have\n        # the FieldFile interface added to the. Thus, we wrap any other type of\n        # File inside a FieldFile (well, the field's attr_class, which is\n        # usually FieldFile).\n        elif isinstance(file, File) and not isinstance(file, FieldFile):\n            file_copy = self.field.attr_class(instance, self.field, file.name)\n            file_copy.file = file\n            file_copy._committed = False\n            instance.__dict__[self.field.name] = file_copy\n\n        # Finally, because of the (some would say boneheaded) way pickle works,\n        # the underlying FieldFile might not actually itself have an associated\n        # file. So we need to reset the details of the FieldFile in those cases.\n        elif isinstance(file, FieldFile) and not hasattr(file, 'field'):\n            file.instance = instance\n            file.field = self.field\n            file.storage = self.field.storage\n\n        # That was fun, wasn't it?\n        return instance.__dict__[self.field.name]\n\n    def __set__(self, instance, value):\n        instance.__dict__[self.field.name] = value\n\nclass FileField(Field):\n\n    # The class to wrap instance attributes in. Accessing the file object off\n    # the instance will always return an instance of attr_class.\n    attr_class = FieldFile\n\n    # The descriptor to use for accessing the attribute off of the class.\n    descriptor_class = FileDescriptor\n\n    description = _(\"File\")\n\n    def __init__(self, verbose_name=None, name=None, upload_to='', storage=None, **kwargs):\n        for arg in ('primary_key', 'unique'):\n            if arg in kwargs:\n                raise TypeError(\"'%s' is not a valid argument for %s.\" % (arg, self.__class__))\n\n        self.storage = storage or default_storage\n        self.upload_to = upload_to\n        if callable(upload_to):\n            self.generate_filename = upload_to\n\n        kwargs['max_length'] = kwargs.get('max_length', 100)\n        super(FileField, self).__init__(verbose_name, name, **kwargs)\n\n    def get_internal_type(self):\n        return \"FileField\"\n\n    def get_prep_lookup(self, lookup_type, value):\n        if hasattr(value, 'name'):\n            value = value.name\n        return super(FileField, self).get_prep_lookup(lookup_type, value)\n\n    def get_prep_value(self, value):\n        \"Returns field's value prepared for saving into a database.\"\n        # Need to convert File objects provided via a form to unicode for database insertion\n        if value is None:\n            return None\n        return six.text_type(value)\n\n    def pre_save(self, model_instance, add):\n        \"Returns field's value just before saving.\"\n        file = super(FileField, self).pre_save(model_instance, add)\n        if file and not file._committed:\n            # Commit the file to storage prior to saving the model\n            file.save(file.name, file, save=False)\n        return file\n\n    def contribute_to_class(self, cls, name):\n        super(FileField, self).contribute_to_class(cls, name)\n        setattr(cls, self.name, self.descriptor_class(self))\n\n    def get_directory_name(self):\n        return os.path.normpath(force_text(datetime.datetime.now().strftime(force_str(self.upload_to))))\n\n    def get_filename(self, filename):\n        return os.path.normpath(self.storage.get_valid_name(os.path.basename(filename)))\n\n    def generate_filename(self, instance, filename):\n        return os.path.join(self.get_directory_name(), self.get_filename(filename))\n\n    def save_form_data(self, instance, data):\n        # Important: None means \"no change\", other false value means \"clear\"\n        # This subtle distinction (rather than a more explicit marker) is\n        # needed because we need to consume values that are also sane for a\n        # regular (non Model-) Form to find in its cleaned_data dictionary.\n        if data is not None:\n            # This value will be converted to unicode and stored in the\n            # database, so leaving False as-is is not acceptable.\n            if not data:\n                data = ''\n            setattr(instance, self.name, data)\n\n    def formfield(self, **kwargs):\n        defaults = {'form_class': forms.FileField, 'max_length': self.max_length}\n        # If a file has been provided previously, then the form doesn't require\n        # that a new file is provided this time.\n        # The code to mark the form field as not required is used by\n        # form_for_instance, but can probably be removed once form_for_instance\n        # is gone. ModelForm uses a different method to check for an existing file.\n        if 'initial' in kwargs:\n            defaults['required'] = False\n        defaults.update(kwargs)\n        return super(FileField, self).formfield(**defaults)\n\nclass ImageFileDescriptor(FileDescriptor):\n    \"\"\"\n    Just like the FileDescriptor, but for ImageFields. The only difference is\n    assigning the width/height to the width_field/height_field, if appropriate.\n    \"\"\"\n    def __set__(self, instance, value):\n        previous_file = instance.__dict__.get(self.field.name)\n        super(ImageFileDescriptor, self).__set__(instance, value)\n\n        # To prevent recalculating image dimensions when we are instantiating\n        # an object from the database (bug #11084), only update dimensions if\n        # the field had a value before this assignment.  Since the default\n        # value for FileField subclasses is an instance of field.attr_class,\n        # previous_file will only be None when we are called from\n        # Model.__init__().  The ImageField.update_dimension_fields method\n        # hooked up to the post_init signal handles the Model.__init__() cases.\n        # Assignment happening outside of Model.__init__() will trigger the\n        # update right here.\n        if previous_file is not None:\n            self.field.update_dimension_fields(instance, force=True)\n\nclass ImageFieldFile(ImageFile, FieldFile):\n\n    def delete(self, save=True):\n        # Clear the image dimensions cache\n        if hasattr(self, '_dimensions_cache'):\n            del self._dimensions_cache\n        super(ImageFieldFile, self).delete(save)\n\nclass ImageField(FileField):\n    attr_class = ImageFieldFile\n    descriptor_class = ImageFileDescriptor\n    description = _(\"Image\")\n\n    def __init__(self, verbose_name=None, name=None, width_field=None,\n            height_field=None, **kwargs):\n        self.width_field, self.height_field = width_field, height_field\n        super(ImageField, self).__init__(verbose_name, name, **kwargs)\n\n    def contribute_to_class(self, cls, name):\n        super(ImageField, self).contribute_to_class(cls, name)\n        # Attach update_dimension_fields so that dimension fields declared\n        # after their corresponding image field don't stay cleared by\n        # Model.__init__, see bug #11196.\n        signals.post_init.connect(self.update_dimension_fields, sender=cls)\n\n    def update_dimension_fields(self, instance, force=False, *args, **kwargs):\n        \"\"\"\n        Updates field's width and height fields, if defined.\n\n        This method is hooked up to model's post_init signal to update\n        dimensions after instantiating a model instance.  However, dimensions\n        won't be updated if the dimensions fields are already populated.  This\n        avoids unnecessary recalculation when loading an object from the\n        database.\n\n        Dimensions can be forced to update with force=True, which is how\n        ImageFileDescriptor.__set__ calls this method.\n        \"\"\"\n        # Nothing to update if the field doesn't have have dimension fields.\n        has_dimension_fields = self.width_field or self.height_field\n        if not has_dimension_fields:\n            return\n\n        # getattr will call the ImageFileDescriptor's __get__ method, which\n        # coerces the assigned value into an instance of self.attr_class\n        # (ImageFieldFile in this case).\n        file = getattr(instance, self.attname)\n\n        # Nothing to update if we have no file and not being forced to update.\n        if not file and not force:\n            return\n\n        dimension_fields_filled = not(\n            (self.width_field and not getattr(instance, self.width_field))\n            or (self.height_field and not getattr(instance, self.height_field))\n        )\n        # When both dimension fields have values, we are most likely loading\n        # data from the database or updating an image field that already had\n        # an image stored.  In the first case, we don't want to update the\n        # dimension fields because we are already getting their values from the\n        # database.  In the second case, we do want to update the dimensions\n        # fields and will skip this return because force will be True since we\n        # were called from ImageFileDescriptor.__set__.\n        if dimension_fields_filled and not force:\n            return\n\n        # file should be an instance of ImageFieldFile or should be None.\n        if file:\n            width = file.width\n            height = file.height\n        else:\n            # No file, so clear dimensions fields.\n            width = None\n            height = None\n\n        # Update the width and height fields.\n        if self.width_field:\n            setattr(instance, self.width_field, width)\n        if self.height_field:\n            setattr(instance, self.height_field, height)\n\n    def formfield(self, **kwargs):\n        defaults = {'form_class': forms.ImageField}\n        defaults.update(kwargs)\n        return super(ImageField, self).formfield(**defaults)\n"
  },
  {
    "path": "Django-1.5.1/django/db/models/fields/proxy.py",
    "content": "\"\"\"\nField-like classes that aren't really fields. It's easier to use objects that\nhave the same attributes as fields sometimes (avoids a lot of special casing).\n\"\"\"\n\nfrom django.db.models import fields\n\nclass OrderWrt(fields.IntegerField):\n    \"\"\"\n    A proxy for the _order database field that is used when\n    Meta.order_with_respect_to is specified.\n    \"\"\"\n\n    def __init__(self, *args, **kwargs):\n        kwargs['name'] = '_order'\n        kwargs['editable'] = False\n        super(OrderWrt, self).__init__(*args, **kwargs)\n"
  },
  {
    "path": "Django-1.5.1/django/db/models/fields/related.py",
    "content": "from operator import attrgetter\n\nfrom django.db import connection, connections, router\nfrom django.db.backends import util\nfrom django.db.models import signals, get_model\nfrom django.db.models.fields import (AutoField, Field, IntegerField,\n    PositiveIntegerField, PositiveSmallIntegerField, FieldDoesNotExist)\nfrom django.db.models.related import RelatedObject\nfrom django.db.models.query import QuerySet\nfrom django.db.models.query_utils import QueryWrapper\nfrom django.db.models.deletion import CASCADE\nfrom django.utils.encoding import smart_text\nfrom django.utils import six\nfrom django.utils.translation import ugettext_lazy as _, string_concat\nfrom django.utils.functional import curry, cached_property\nfrom django.core import exceptions\nfrom django import forms\n\n\nRECURSIVE_RELATIONSHIP_CONSTANT = 'self'\n\npending_lookups = {}  有待查找的 models\n\n\ndef add_lazy_relation(cls, field, relation, operation):\n    \"\"\"\n    Adds a lookup on ``cls`` when a related field is defined using a string,\n    i.e.::\n\n        class MyModel(Model):\n            fk = ForeignKey(\"AnotherModel\") 通过字符串查找类\n\n    This string can be:\n\n        * RECURSIVE_RELATIONSHIP_CONSTANT (i.e. \"self\") to indicate a recursive\n          relation. 引用自己的外键\n\n        * The name of a model (i.e \"AnotherModel\") to indicate another model in\n          the same app. 字符串\n\n        * An app-label and model name (i.e. \"someapp.AnotherModel\") to indicate\n          another model in a different app. 比如appname.model_name\n\n    If the other model hasn't yet been loaded -- almost a given if you're using\n    lazy relationships -- then the relation won't be set up until the\n    class_prepared signal fires at the end of model initialization.\n\n    operation is the work that must be performed once the relation can be resolved.\n    \"\"\"\n    # Check for recursive relations\n    if relation == RECURSIVE_RELATIONSHIP_CONSTANT:\n        app_label = cls._meta.app_label\n        model_name = cls.__name__\n\n    else:\n        # Look for an \"app.Model\" relation\n\n        if isinstance(relation, six.string_types):\n            try:\n                app_label, model_name = relation.split(\".\")\n            except ValueError:\n                # If we can't split, assume a model in current app\n                app_label = cls._meta.app_label\n                model_name = relation\n        else:\n            # it's actually a model class\n            app_label = relation._meta.app_label\n            model_name = relation._meta.object_name\n\n    # Try to look up the related model, and if it's already loaded resolve the\n    # string right away. If get_model returns None, it means that the related\n    # model isn't loaded yet, so we need to pend the relation until the class\n    # is prepared.\n    model = get_model(app_label, model_name,\n                      seed_cache=False, only_installed=False)\n    if model:\n        operation(field, model, cls)\n    else:\n        key = (app_label, model_name)\n        value = (cls, field, operation)\n        pending_lookups.setdefault(key, []).append(value)\n\n\ndef do_pending_lookups(sender, **kwargs):\n    \"\"\"\n    Handle any pending relations to the sending model. Sent from class_prepared.\n    \"\"\"\n    key = (sender._meta.app_label, sender.__name__)\n    for cls, field, operation in pending_lookups.pop(key, []):\n        operation(field, sender, cls)\n\n注册函数\nsignals.class_prepared.connect(do_pending_lookups)\n\n\n#HACK\nclass RelatedField(object):\n    def contribute_to_class(self, cls, name):\n        sup = super(RelatedField, self)\n\n        # Store the opts for related_query_name()\n        self.opts = cls._meta\n\n        if hasattr(sup, 'contribute_to_class'): 如果有\n            sup.contribute_to_class(cls, name)\n\n        if not cls._meta.abstract and self.rel.related_name:\n            self.rel.related_name = self.rel.related_name % {\n                    'class': cls.__name__.lower(),\n                    'app_label': cls._meta.app_label.lower(),\n                }\n\n        other = self.rel.to\n        if isinstance(other, six.string_types) or other._meta.pk is None: 没有设置主键\n            def resolve_related_class(field, model, cls):\n                field.rel.to = model #relate to 比如 foreignkey 中会用到\n                field.do_related_class(model, cls)\n            add_lazy_relation(cls, self, other, resolve_related_class)\n        else:\n            self.do_related_class(other, cls)\n\n    设置关联表名\n    def set_attributes_from_rel(self):\n        设置关联属性名\n        self.name = self.name or (self.rel.to._meta.object_name.lower() + '_' + self.rel.to._meta.pk.name)\n\n        verbose_name 详细的名称\n        if self.verbose_name is None:\n            self.verbose_name = self.rel.to._meta.verbose_name\n\n        self.rel.field_name = self.rel.field_name or self.rel.to._meta.pk.name\n\n\n    def do_related_class(self, other, cls):\n        self.set_attributes_from_rel()\n        self.related = RelatedObject(other, cls, self)\n        if not cls._meta.abstract:\n            子类实现\n            self.contribute_to_related_class(other, self.related)\n\n    搜索预备工作, 格式化值\n    def get_prep_lookup(self, lookup_type, value):\n        if hasattr(value, 'prepare'):\n            return value.prepare()\n\n        if hasattr(value, '_prepare'):\n            return value._prepare()\n\n        # FIXME: lt and gt are explicitly allowed to make\n        # get_(next/prev)_by_date work; other lookups are not allowed since that\n        # gets messy pretty quick. This is a good candidate for some refactoring\n        # in the future.\n        if lookup_type in ['exact', 'gt', 'lt', 'gte', 'lte']:\n            return self._pk_trace(value, 'get_prep_lookup', lookup_type)\n        if lookup_type in ('range', 'in'):\n            return [self._pk_trace(v, 'get_prep_lookup', lookup_type) for v in value]\n        elif lookup_type == 'isnull':\n            return []\n        raise TypeError(\"Related Field has invalid lookup: %s\" % lookup_type)\n\n    def get_db_prep_lookup(self, lookup_type, value, connection, prepared=False):\n        if not prepared:\n            value = self.get_prep_lookup(lookup_type, value)\n\n        if hasattr(value, 'get_compiler'):\n            value = value.get_compiler(connection=connection)\n\n        if hasattr(value, 'as_sql') or hasattr(value, '_as_sql'):\n            # If the value has a relabel_aliases method, it will need to\n            # be invoked before the final SQL is evaluated\n            if hasattr(value, 'relabel_aliases'):\n                return value\n            if hasattr(value, 'as_sql'):\n                sql, params = value.as_sql()\n            else:\n                sql, params = value._as_sql(connection=connection)\n            return QueryWrapper(('(%s)' % sql), params)\n\n        # FIXME: lt and gt are explicitly allowed to make\n        # get_(next/prev)_by_date work; other lookups are not allowed since that\n        # gets messy pretty quick. This is a good candidate for some refactoring\n        # in the future.\n        if lookup_type in ['exact', 'gt', 'lt', 'gte', 'lte']:\n            return [self._pk_trace(value, 'get_db_prep_lookup', lookup_type,\n                            connection=connection, prepared=prepared)]\n        if lookup_type in ('range', 'in'):\n            return [self._pk_trace(v, 'get_db_prep_lookup', lookup_type,\n                            connection=connection, prepared=prepared)\n                    for v in value]\n        elif lookup_type == 'isnull':\n            return []\n        raise TypeError(\"Related Field has invalid lookup: %s\" % lookup_type)\n\n    取出主键, 有可能主键是某个对象, 必须得到能够比较的值\n    def _pk_trace(self, value, prep_func, lookup_type, **kwargs):\n        # Value may be a primary key, or an object held in a relation.\n        # If it is an object, then we need to get the primary key value for\n        # that object. In certain conditions (especially one-to-one relations),\n        # the primary key may itself be an object - so we need to keep drilling\n        # down until we hit a value that can be used for a comparison.\n        v = value\n\n        # In the case of an FK to 'self', this check allows to_field to be used\n        # for both forwards and reverse lookups across the FK. (For normal FKs,\n        # it's only relevant for forward lookups).\n        if isinstance(v, self.rel.to):\n            field_name = getattr(self.rel, \"field_name\", None)\n        else:\n            field_name = None\n        try:\n            while True:\n                if field_name is None:\n                    field_name = v._meta.pk.name\n                v = getattr(v, field_name)\n                field_name = None\n        except AttributeError:\n            pass\n        except exceptions.ObjectDoesNotExist:\n            v = None\n\n        field = self\n        while field.rel:\n            if hasattr(field.rel, 'field_name'):\n                field = field.rel.to._meta.get_field(field.rel.field_name)\n            else:\n                field = field.rel.to._meta.pk\n\n        if lookup_type in ('range', 'in'):\n            v = [v]\n        v = getattr(field, prep_func)(lookup_type, v, **kwargs)\n        if isinstance(v, list):\n            v = v[0]\n        return v\n\n    def related_query_name(self):\n        # This method defines the name that can be used to identify this\n        # related object in a table-spanning query. It uses the lower-cased\n        # object_name by default, but this can be overridden with the\n        # \"related_name\" option.\n        return self.rel.related_name or self.opts.object_name.lower()\n\n\nclass SingleRelatedObjectDescriptor(object):\n    关联表属性???\n    # This class provides the functionality that makes the related-object\n    # managers available as attributes on a model class, for fields that have\n    # a single \"remote\" value, on the class pointed to by a related field.\n    # In the example \"place.restaurant\", the restaurant attribute is a\n    # SingleRelatedObjectDescriptor instance.\n    def __init__(self, related):\n        self.related = related 关联表\n        self.cache_name = related.get_cache_name()\n\n    def is_cached(self, instance):\n        return hasattr(instance, self.cache_name)\n\n    def get_query_set(self, **db_hints):\n        db = router.db_for_read(self.related.model, **db_hints) 不懂\n        return self.related.model._base_manager.using(db)\n\n    def get_prefetch_query_set(self, instances):\n        rel_obj_attr = attrgetter(self.related.field.attname)\n        instance_attr = lambda obj: obj._get_pk_val()\n        instances_dict = dict((instance_attr(inst), inst) for inst in instances)\n        params = {'%s__pk__in' % self.related.field.name: list(instances_dict)}\n        qs = self.get_query_set(instance=instances[0]).filter(**params)\n\n        # Since we're going to assign directly in the cache,\n        # we must manage the reverse relation cache manually.\n        rel_obj_cache_name = self.related.field.get_cache_name()\n\n        for rel_obj in qs:\n            instance = instances_dict[rel_obj_attr(rel_obj)]\n            setattr(rel_obj, rel_obj_cache_name, instance)\n\n        return qs, rel_obj_attr, instance_attr, True, self.cache_name\n\n    不懂\n    def __get__(self, instance, instance_type=None):\n        if instance is None:\n            return self\n        try:\n            rel_obj = getattr(instance, self.cache_name)\n        except AttributeError:\n            related_pk = instance._get_pk_val()\n            if related_pk is None:\n                rel_obj = None\n            else:\n                params = {'%s__pk' % self.related.field.name: related_pk}\n                try:\n                    rel_obj = self.get_query_set(instance=instance).get(**params)\n                except self.related.model.DoesNotExist:\n                    rel_obj = None\n                else:\n                    setattr(rel_obj, self.related.field.get_cache_name(), instance)\n            setattr(instance, self.cache_name, rel_obj)\n        if rel_obj is None:\n            raise self.related.model.DoesNotExist\n        else:\n            return rel_obj\n\n    def __set__(self, instance, value):\n        if instance is None:\n            raise AttributeError(\"%s must be accessed via instance\" % self.related.opts.object_name)\n\n        # The similarity of the code below to the code in\n        # ReverseSingleRelatedObjectDescriptor is annoying, but there's a bunch\n        # of small differences that would make a common base class convoluted.\n\n        # If null=True, we can assign null here, but otherwise the value needs\n        # to be an instance of the related class.\n        if value is None and self.related.field.null == False:\n            raise ValueError('Cannot assign None: \"%s.%s\" does not allow null values.' %\n                                (instance._meta.object_name, self.related.get_accessor_name()))\n        elif value is not None and not isinstance(value, self.related.model):\n            raise ValueError('Cannot assign \"%r\": \"%s.%s\" must be a \"%s\" instance.' %\n                                (value, instance._meta.object_name,\n                                 self.related.get_accessor_name(), self.related.opts.object_name))\n        elif value is not None:\n            if instance._state.db is None:\n                instance._state.db = router.db_for_write(instance.__class__, instance=value)\n            elif value._state.db is None:\n                value._state.db = router.db_for_write(value.__class__, instance=instance)\n            elif value._state.db is not None and instance._state.db is not None:\n                if not router.allow_relation(value, instance):\n                    raise ValueError('Cannot assign \"%r\": instance is on database \"%s\", value is on database \"%s\"' %\n                                        (value, instance._state.db, value._state.db))\n\n        related_pk = getattr(instance, self.related.field.rel.get_related_field().attname)\n\n        if related_pk is None:\n            raise ValueError('Cannot assign \"%r\": \"%s\" instance isn\\'t saved in the database.' %\n                                (value, instance._meta.object_name))\n\n        # Set the value of the related field to the value of the related object's related field\n        setattr(value, self.related.field.attname, related_pk)\n\n        # Since we already know what the related object is, seed the related\n        # object caches now, too. This avoids another db hit if you get the\n        # object you just set.\n        setattr(instance, self.cache_name, value)\n        setattr(value, self.related.field.get_cache_name(), instance)\n\n\nclass ReverseSingleRelatedObjectDescriptor(object):\n    # This class provides the functionality that makes the related-object\n    # managers available as attributes on a model class, for fields that have\n    # a single \"remote\" value, on the class that defines the related field.\n    # In the example \"choice.poll\", the poll attribute is a\n    # ReverseSingleRelatedObjectDescriptor instance.\n    def __init__(self, field_with_rel):\n        self.field = field_with_rel\n        self.cache_name = self.field.get_cache_name()\n\n    def is_cached(self, instance):\n        return hasattr(instance, self.cache_name)\n\n    def get_query_set(self, **db_hints):\n        db = router.db_for_read(self.field.rel.to, **db_hints)\n        rel_mgr = self.field.rel.to._default_manager\n        # If the related manager indicates that it should be used for\n        # related fields, respect that.\n        if getattr(rel_mgr, 'use_for_related_fields', False):\n            return rel_mgr.using(db)\n        else:\n            return QuerySet(self.field.rel.to).using(db)\n\n    def get_prefetch_query_set(self, instances):\n        other_field = self.field.rel.get_related_field()\n        rel_obj_attr = attrgetter(other_field.attname)\n        instance_attr = attrgetter(self.field.attname)\n        instances_dict = dict((instance_attr(inst), inst) for inst in instances)\n        if other_field.rel:\n            params = {'%s__pk__in' % self.field.rel.field_name: list(instances_dict)}\n        else:\n            params = {'%s__in' % self.field.rel.field_name: list(instances_dict)}\n        qs = self.get_query_set(instance=instances[0]).filter(**params)\n        # Since we're going to assign directly in the cache,\n        # we must manage the reverse relation cache manually.\n        if not self.field.rel.multiple:\n            rel_obj_cache_name = self.field.related.get_cache_name()\n            for rel_obj in qs:\n                instance = instances_dict[rel_obj_attr(rel_obj)]\n                setattr(rel_obj, rel_obj_cache_name, instance)\n        return qs, rel_obj_attr, instance_attr, True, self.cache_name\n\n    def __get__(self, instance, instance_type=None):\n        if instance is None:\n            return self\n        try:\n            rel_obj = getattr(instance, self.cache_name)\n        except AttributeError:\n            val = getattr(instance, self.field.attname)\n            if val is None:\n                rel_obj = None\n            else:\n                other_field = self.field.rel.get_related_field()\n                if other_field.rel:\n                    params = {'%s__%s' % (self.field.rel.field_name, other_field.rel.field_name): val}\n                else:\n                    params = {'%s__exact' % self.field.rel.field_name: val}\n                qs = self.get_query_set(instance=instance)\n                # Assuming the database enforces foreign keys, this won't fail.\n                rel_obj = qs.get(**params)\n                if not self.field.rel.multiple:\n                    setattr(rel_obj, self.field.related.get_cache_name(), instance)\n            setattr(instance, self.cache_name, rel_obj)\n        if rel_obj is None and not self.field.null:\n            raise self.field.rel.to.DoesNotExist\n        else:\n            return rel_obj\n\n    def __set__(self, instance, value):\n        if instance is None:\n            raise AttributeError(\"%s must be accessed via instance\" % self.field.name)\n\n        # If null=True, we can assign null here, but otherwise the value needs\n        # to be an instance of the related class.\n        if value is None and self.field.null == False:\n            raise ValueError('Cannot assign None: \"%s.%s\" does not allow null values.' %\n                                (instance._meta.object_name, self.field.name))\n        elif value is not None and not isinstance(value, self.field.rel.to):\n            raise ValueError('Cannot assign \"%r\": \"%s.%s\" must be a \"%s\" instance.' %\n                                (value, instance._meta.object_name,\n                                 self.field.name, self.field.rel.to._meta.object_name))\n        elif value is not None:\n            if instance._state.db is None:\n                instance._state.db = router.db_for_write(instance.__class__, instance=value)\n            elif value._state.db is None:\n                value._state.db = router.db_for_write(value.__class__, instance=instance)\n            elif value._state.db is not None and instance._state.db is not None:\n                if not router.allow_relation(value, instance):\n                    raise ValueError('Cannot assign \"%r\": instance is on database \"%s\", value is on database \"%s\"' %\n                                        (value, instance._state.db, value._state.db))\n\n        # If we're setting the value of a OneToOneField to None, we need to clear\n        # out the cache on any old related object. Otherwise, deleting the\n        # previously-related object will also cause this object to be deleted,\n        # which is wrong.\n        if value is None:\n            # Look up the previously-related object, which may still be available\n            # since we've not yet cleared out the related field.\n            # Use the cache directly, instead of the accessor; if we haven't\n            # populated the cache, then we don't care - we're only accessing\n            # the object to invalidate the accessor cache, so there's no\n            # need to populate the cache just to expire it again.\n            related = getattr(instance, self.cache_name, None)\n\n            # If we've got an old related object, we need to clear out its\n            # cache. This cache also might not exist if the related object\n            # hasn't been accessed yet.\n            if related is not None:\n                setattr(related, self.field.related.get_cache_name(), None)\n\n        # Set the value of the related field\n        try:\n            val = getattr(value, self.field.rel.get_related_field().attname)\n        except AttributeError:\n            val = None\n        setattr(instance, self.field.attname, val)\n\n        # Since we already know what the related object is, seed the related\n        # object caches now, too. This avoids another db hit if you get the\n        # object you just set.\n        setattr(instance, self.cache_name, value)\n        if value is not None and not self.field.rel.multiple:\n            setattr(value, self.field.related.get_cache_name(), instance)\n\n\nclass ForeignRelatedObjectsDescriptor(object):\n    # This class provides the functionality that makes the related-object\n    # managers available as attributes on a model class, for fields that have\n    # multiple \"remote\" values and have a ForeignKey pointed at them by\n    # some other model. In the example \"poll.choice_set\", the choice_set\n    # attribute is a ForeignRelatedObjectsDescriptor instance.\n    def __init__(self, related):\n        self.related = related   # RelatedObject instance\n\n    def __get__(self, instance, instance_type=None):\n        if instance is None:\n            return self\n\n        return self.related_manager_cls(instance)\n\n    def __set__(self, instance, value):\n        if instance is None:\n            raise AttributeError(\"Manager must be accessed via instance\")\n\n        manager = self.__get__(instance)\n        # If the foreign key can support nulls, then completely clear the related set.\n        # Otherwise, just move the named objects into the set.\n        if self.related.field.null:\n            manager.clear()\n        manager.add(*value)\n\n    @cached_property\n    def related_manager_cls(self):\n        # Dynamically create a class that subclasses the related model's default\n        # manager.\n        superclass = self.related.model._default_manager.__class__\n        rel_field = self.related.field\n        rel_model = self.related.model\n        attname = rel_field.rel.get_related_field().attname\n\n        class RelatedManager(superclass):\n            def __init__(self, instance):\n                super(RelatedManager, self).__init__()\n                self.instance = instance\n                self.core_filters = {\n                    '%s__%s' % (rel_field.name, attname): getattr(instance, attname)\n                }\n                self.model = rel_model\n\n            def get_query_set(self):\n                try:\n                    return self.instance._prefetched_objects_cache[rel_field.related_query_name()]\n                except (AttributeError, KeyError):\n                    db = self._db or router.db_for_read(self.model, instance=self.instance)\n                    qs = super(RelatedManager, self).get_query_set().using(db).filter(**self.core_filters)\n                    val = getattr(self.instance, attname)\n                    if val is None or val == '' and connections[db].features.interprets_empty_strings_as_nulls:\n                        # We don't want to use qs.none() here, see #19652\n                        return qs.filter(pk__in=[])\n                    qs._known_related_objects = {rel_field: {self.instance.pk: self.instance}}\n                    return qs\n\n            def get_prefetch_query_set(self, instances):\n                rel_obj_attr = attrgetter(rel_field.attname)\n                instance_attr = attrgetter(attname)\n                instances_dict = dict((instance_attr(inst), inst) for inst in instances)\n                db = self._db or router.db_for_read(self.model, instance=instances[0])\n                query = {'%s__%s__in' % (rel_field.name, attname): list(instances_dict)}\n                qs = super(RelatedManager, self).get_query_set().using(db).filter(**query)\n                # Since we just bypassed this class' get_query_set(), we must manage\n                # the reverse relation manually.\n                for rel_obj in qs:\n                    instance = instances_dict[rel_obj_attr(rel_obj)]\n                    setattr(rel_obj, rel_field.name, instance)\n                cache_name = rel_field.related_query_name()\n                return qs, rel_obj_attr, instance_attr, False, cache_name\n\n            def add(self, *objs):\n                for obj in objs:\n                    if not isinstance(obj, self.model):\n                        raise TypeError(\"'%s' instance expected, got %r\" % (self.model._meta.object_name, obj))\n                    setattr(obj, rel_field.name, self.instance)\n                    obj.save()\n            add.alters_data = True\n\n            def create(self, **kwargs):\n                kwargs[rel_field.name] = self.instance\n                db = router.db_for_write(self.model, instance=self.instance)\n                return super(RelatedManager, self.db_manager(db)).create(**kwargs)\n            create.alters_data = True\n\n            def get_or_create(self, **kwargs):\n                # Update kwargs with the related object that this\n                # ForeignRelatedObjectsDescriptor knows about.\n                kwargs[rel_field.name] = self.instance\n                db = router.db_for_write(self.model, instance=self.instance)\n                return super(RelatedManager, self.db_manager(db)).get_or_create(**kwargs)\n            get_or_create.alters_data = True\n\n            # remove() and clear() are only provided if the ForeignKey can have a value of null.\n            if rel_field.null:\n                def remove(self, *objs):\n                    val = getattr(self.instance, attname)\n                    for obj in objs:\n                        # Is obj actually part of this descriptor set?\n                        if getattr(obj, rel_field.attname) == val:\n                            setattr(obj, rel_field.name, None)\n                            obj.save()\n                        else:\n                            raise rel_field.rel.to.DoesNotExist(\"%r is not related to %r.\" % (obj, self.instance))\n                remove.alters_data = True\n\n                def clear(self):\n                    self.update(**{rel_field.name: None})\n                clear.alters_data = True\n\n        return RelatedManager\n\n\ndef create_many_related_manager(superclass, rel):\n    \"\"\"Creates a manager that subclasses 'superclass' (which is a Manager)\n    and adds behavior for many-to-many related objects.\"\"\"\n    class ManyRelatedManager(superclass):\n        def __init__(self, model=None, query_field_name=None, instance=None, symmetrical=None,\n                     source_field_name=None, target_field_name=None, reverse=False,\n                     through=None, prefetch_cache_name=None):\n            super(ManyRelatedManager, self).__init__()\n            self.model = model\n            self.query_field_name = query_field_name\n            self.core_filters = {'%s__pk' % query_field_name: instance._get_pk_val()}\n            self.instance = instance\n            self.symmetrical = symmetrical\n            self.source_field_name = source_field_name\n            self.target_field_name = target_field_name\n            self.reverse = reverse\n            self.through = through\n            self.prefetch_cache_name = prefetch_cache_name\n            self._fk_val = self._get_fk_val(instance, source_field_name)\n            if self._fk_val is None:\n                raise ValueError('\"%r\" needs to have a value for field \"%s\" before '\n                                 'this many-to-many relationship can be used.' %\n                                 (instance, source_field_name))\n            # Even if this relation is not to pk, we require still pk value.\n            # The wish is that the instance has been already saved to DB,\n            # although having a pk value isn't a guarantee of that.\n            if instance.pk is None:\n                raise ValueError(\"%r instance needs to have a primary key value before \"\n                                 \"a many-to-many relationship can be used.\" %\n                                 instance.__class__.__name__)\n\n        def _get_fk_val(self, obj, field_name):\n            \"\"\"\n            Returns the correct value for this relationship's foreign key. This\n            might be something else than pk value when to_field is used.\n            \"\"\"\n            if not self.through:\n                # Make custom m2m fields with no through model defined usable.\n                return obj.pk\n            fk = self.through._meta.get_field(field_name)\n            if fk.rel.field_name and fk.rel.field_name != fk.rel.to._meta.pk.attname:\n                attname = fk.rel.get_related_field().get_attname()\n                return fk.get_prep_lookup('exact', getattr(obj, attname))\n            else:\n                return obj.pk\n\n        def get_query_set(self):\n            try:\n                return self.instance._prefetched_objects_cache[self.prefetch_cache_name]\n            except (AttributeError, KeyError):\n                db = self._db or router.db_for_read(self.instance.__class__, instance=self.instance)\n                return super(ManyRelatedManager, self).get_query_set().using(db)._next_is_sticky().filter(**self.core_filters)\n\n        def get_prefetch_query_set(self, instances):\n            instance = instances[0]\n            from django.db import connections\n            db = self._db or router.db_for_read(instance.__class__, instance=instance)\n            query = {'%s__pk__in' % self.query_field_name:\n                         set(obj._get_pk_val() for obj in instances)}\n            qs = super(ManyRelatedManager, self).get_query_set().using(db)._next_is_sticky().filter(**query)\n\n            # M2M: need to annotate the query in order to get the primary model\n            # that the secondary model was actually related to. We know that\n            # there will already be a join on the join table, so we can just add\n            # the select.\n\n            # For non-autocreated 'through' models, can't assume we are\n            # dealing with PK values.\n            fk = self.through._meta.get_field(self.source_field_name)\n            source_col = fk.column\n            join_table = self.through._meta.db_table\n            connection = connections[db]\n            qn = connection.ops.quote_name\n            qs = qs.extra(select={'_prefetch_related_val':\n                                      '%s.%s' % (qn(join_table), qn(source_col))})\n            select_attname = fk.rel.get_related_field().get_attname()\n            return (qs,\n                    attrgetter('_prefetch_related_val'),\n                    attrgetter(select_attname),\n                    False,\n                    self.prefetch_cache_name)\n\n        # If the ManyToMany relation has an intermediary model,\n        # the add and remove methods do not exist.\n        if rel.through._meta.auto_created:\n            def add(self, *objs):\n                self._add_items(self.source_field_name, self.target_field_name, *objs)\n\n                # If this is a symmetrical m2m relation to self, add the mirror entry in the m2m table\n                if self.symmetrical:\n                    self._add_items(self.target_field_name, self.source_field_name, *objs)\n            add.alters_data = True\n\n            def remove(self, *objs):\n                self._remove_items(self.source_field_name, self.target_field_name, *objs)\n\n                # If this is a symmetrical m2m relation to self, remove the mirror entry in the m2m table\n                if self.symmetrical:\n                    self._remove_items(self.target_field_name, self.source_field_name, *objs)\n            remove.alters_data = True\n\n        def clear(self):\n            self._clear_items(self.source_field_name)\n\n            # If this is a symmetrical m2m relation to self, clear the mirror entry in the m2m table\n            if self.symmetrical:\n                self._clear_items(self.target_field_name)\n        clear.alters_data = True\n\n        def create(self, **kwargs):\n            # This check needs to be done here, since we can't later remove this\n            # from the method lookup table, as we do with add and remove.\n            if not self.through._meta.auto_created:\n                opts = self.through._meta\n                raise AttributeError(\"Cannot use create() on a ManyToManyField which specifies an intermediary model. Use %s.%s's Manager instead.\" % (opts.app_label, opts.object_name))\n            db = router.db_for_write(self.instance.__class__, instance=self.instance)\n            new_obj = super(ManyRelatedManager, self.db_manager(db)).create(**kwargs)\n            self.add(new_obj)\n            return new_obj\n        create.alters_data = True\n\n        def get_or_create(self, **kwargs):\n            db = router.db_for_write(self.instance.__class__, instance=self.instance)\n            obj, created = \\\n                super(ManyRelatedManager, self.db_manager(db)).get_or_create(**kwargs)\n            # We only need to add() if created because if we got an object back\n            # from get() then the relationship already exists.\n            if created:\n                self.add(obj)\n            return obj, created\n        get_or_create.alters_data = True\n\n        def _add_items(self, source_field_name, target_field_name, *objs):\n            # source_field_name: the PK fieldname in join table for the source object\n            # target_field_name: the PK fieldname in join table for the target object\n            # *objs - objects to add. Either object instances, or primary keys of object instances.\n\n            # If there aren't any objects, there is nothing to do.\n            from django.db.models import Model\n            if objs:\n                new_ids = set()\n                for obj in objs:\n                    if isinstance(obj, self.model):\n                        if not router.allow_relation(obj, self.instance):\n                            raise ValueError('Cannot add \"%r\": instance is on database \"%s\", value is on database \"%s\"' %\n                                               (obj, self.instance._state.db, obj._state.db))\n                        fk_val = self._get_fk_val(obj, target_field_name)\n                        if fk_val is None:\n                            raise ValueError('Cannot add \"%r\": the value for field \"%s\" is None' %\n                                             (obj, target_field_name))\n                        new_ids.add(self._get_fk_val(obj, target_field_name))\n                    elif isinstance(obj, Model):\n                        raise TypeError(\"'%s' instance expected, got %r\" % (self.model._meta.object_name, obj))\n                    else:\n                        new_ids.add(obj)\n                db = router.db_for_write(self.through, instance=self.instance)\n                vals = self.through._default_manager.using(db).values_list(target_field_name, flat=True)\n                vals = vals.filter(**{\n                    source_field_name: self._fk_val,\n                    '%s__in' % target_field_name: new_ids,\n                })\n                new_ids = new_ids - set(vals)\n\n                if self.reverse or source_field_name == self.source_field_name:\n                    # Don't send the signal when we are inserting the\n                    # duplicate data row for symmetrical reverse entries.\n                    signals.m2m_changed.send(sender=self.through, action='pre_add',\n                        instance=self.instance, reverse=self.reverse,\n                        model=self.model, pk_set=new_ids, using=db)\n                # Add the ones that aren't there already\n                self.through._default_manager.using(db).bulk_create([\n                    self.through(**{\n                        '%s_id' % source_field_name: self._fk_val,\n                        '%s_id' % target_field_name: obj_id,\n                    })\n                    for obj_id in new_ids\n                ])\n\n                if self.reverse or source_field_name == self.source_field_name:\n                    # Don't send the signal when we are inserting the\n                    # duplicate data row for symmetrical reverse entries.\n                    signals.m2m_changed.send(sender=self.through, action='post_add',\n                        instance=self.instance, reverse=self.reverse,\n                        model=self.model, pk_set=new_ids, using=db)\n\n        def _remove_items(self, source_field_name, target_field_name, *objs):\n            # source_field_name: the PK colname in join table for the source object\n            # target_field_name: the PK colname in join table for the target object\n            # *objs - objects to remove\n\n            # If there aren't any objects, there is nothing to do.\n            if objs:\n                # Check that all the objects are of the right type\n                old_ids = set()\n                for obj in objs:\n                    if isinstance(obj, self.model):\n                        old_ids.add(self._get_fk_val(obj, target_field_name))\n                    else:\n                        old_ids.add(obj)\n                # Work out what DB we're operating on\n                db = router.db_for_write(self.through, instance=self.instance)\n                # Send a signal to the other end if need be.\n                if self.reverse or source_field_name == self.source_field_name:\n                    # Don't send the signal when we are deleting the\n                    # duplicate data row for symmetrical reverse entries.\n                    signals.m2m_changed.send(sender=self.through, action=\"pre_remove\",\n                        instance=self.instance, reverse=self.reverse,\n                        model=self.model, pk_set=old_ids, using=db)\n                # Remove the specified objects from the join table\n                self.through._default_manager.using(db).filter(**{\n                    source_field_name: self._fk_val,\n                    '%s__in' % target_field_name: old_ids\n                }).delete()\n                if self.reverse or source_field_name == self.source_field_name:\n                    # Don't send the signal when we are deleting the\n                    # duplicate data row for symmetrical reverse entries.\n                    signals.m2m_changed.send(sender=self.through, action=\"post_remove\",\n                        instance=self.instance, reverse=self.reverse,\n                        model=self.model, pk_set=old_ids, using=db)\n\n        def _clear_items(self, source_field_name):\n            db = router.db_for_write(self.through, instance=self.instance)\n            # source_field_name: the PK colname in join table for the source object\n            if self.reverse or source_field_name == self.source_field_name:\n                # Don't send the signal when we are clearing the\n                # duplicate data rows for symmetrical reverse entries.\n                signals.m2m_changed.send(sender=self.through, action=\"pre_clear\",\n                    instance=self.instance, reverse=self.reverse,\n                    model=self.model, pk_set=None, using=db)\n            self.through._default_manager.using(db).filter(**{\n                source_field_name: self._fk_val\n            }).delete()\n            if self.reverse or source_field_name == self.source_field_name:\n                # Don't send the signal when we are clearing the\n                # duplicate data rows for symmetrical reverse entries.\n                signals.m2m_changed.send(sender=self.through, action=\"post_clear\",\n                    instance=self.instance, reverse=self.reverse,\n                    model=self.model, pk_set=None, using=db)\n\n    return ManyRelatedManager\n\n\nclass ManyRelatedObjectsDescriptor(object):\n    # This class provides the functionality that makes the related-object\n    # managers available as attributes on a model class, for fields that have\n    # multiple \"remote\" values and have a ManyToManyField pointed at them by\n    # some other model (rather than having a ManyToManyField themselves).\n    # In the example \"publication.article_set\", the article_set attribute is a\n    # ManyRelatedObjectsDescriptor instance.\n    def __init__(self, related):\n        self.related = related   # RelatedObject instance\n\n    @cached_property\n    def related_manager_cls(self):\n        # Dynamically create a class that subclasses the related\n        # model's default manager.\n        return create_many_related_manager(\n            self.related.model._default_manager.__class__,\n            self.related.field.rel\n        )\n\n    def __get__(self, instance, instance_type=None):\n        if instance is None:\n            return self\n\n        rel_model = self.related.model\n\n        manager = self.related_manager_cls(\n            model=rel_model,\n            query_field_name=self.related.field.name,\n            prefetch_cache_name=self.related.field.related_query_name(),\n            instance=instance,\n            symmetrical=False,\n            source_field_name=self.related.field.m2m_reverse_field_name(),\n            target_field_name=self.related.field.m2m_field_name(),\n            reverse=True,\n            through=self.related.field.rel.through,\n        )\n\n        return manager\n\n    def __set__(self, instance, value):\n        if instance is None:\n            raise AttributeError(\"Manager must be accessed via instance\")\n\n        if not self.related.field.rel.through._meta.auto_created:\n            opts = self.related.field.rel.through._meta\n            raise AttributeError(\"Cannot set values on a ManyToManyField which specifies an intermediary model. Use %s.%s's Manager instead.\" % (opts.app_label, opts.object_name))\n\n        manager = self.__get__(instance)\n        manager.clear()\n        manager.add(*value)\n\n\nclass ReverseManyRelatedObjectsDescriptor(object):\n    # This class provides the functionality that makes the related-object\n    # managers available as attributes on a model class, for fields that have\n    # multiple \"remote\" values and have a ManyToManyField defined in their\n    # model (rather than having another model pointed *at* them).\n    # In the example \"article.publications\", the publications attribute is a\n    # ReverseManyRelatedObjectsDescriptor instance.\n    def __init__(self, m2m_field):\n        self.field = m2m_field\n\n    @property\n    def through(self):\n        # through is provided so that you have easy access to the through\n        # model (Book.authors.through) for inlines, etc. This is done as\n        # a property to ensure that the fully resolved value is returned.\n        return self.field.rel.through\n\n    @cached_property\n    def related_manager_cls(self):\n        # Dynamically create a class that subclasses the related model's\n        # default manager.\n        return create_many_related_manager(\n            self.field.rel.to._default_manager.__class__,\n            self.field.rel\n        )\n\n    def __get__(self, instance, instance_type=None):\n        if instance is None:\n            return self\n\n        manager = self.related_manager_cls(\n            model=self.field.rel.to,\n            query_field_name=self.field.related_query_name(),\n            prefetch_cache_name=self.field.name,\n            instance=instance,\n            symmetrical=self.field.rel.symmetrical,\n            source_field_name=self.field.m2m_field_name(),\n            target_field_name=self.field.m2m_reverse_field_name(),\n            reverse=False,\n            through=self.field.rel.through,\n        )\n\n        return manager\n\n    def __set__(self, instance, value):\n        if instance is None:\n            raise AttributeError(\"Manager must be accessed via instance\")\n\n        if not self.field.rel.through._meta.auto_created:\n            opts = self.field.rel.through._meta\n            raise AttributeError(\"Cannot set values on a ManyToManyField which specifies an intermediary model.  Use %s.%s's Manager instead.\" % (opts.app_label, opts.object_name))\n\n        manager = self.__get__(instance)\n        manager.clear()\n        manager.add(*value)\n\n多对一关系类, 记录了外键关联表的信息, 包括 model, field_name 等.\nclass ManyToOneRel(object):\n    def __init__(self, to, field_name, related_name=None, limit_choices_to=None,\n        parent_link=False, on_delete=None):\n\n        # 参数说明\n        # to: model\n        # field_name: 属性名, 一般是属性名\n        # related_name: 关联表名, 如果未设置, 会自动生成\n        \"\"\"有关 parent_link 参见:\n        OneToOneField.parent_link\n        When True and used in a model which inherits from another (concrete) model, indicates that this field should be used as the link back to the parent class, rather than the extra OneToOneField which would normally be implicitly created by subclassing.\"\"\"\n        # on_delete: 即外键所在表删除的时候, 外键该如何设置, 是删除包含外键的表项, 还是设置为 NULL\n\n        try:\n            to._meta\n        except AttributeError:  # to._meta doesn't exist, so it must be RECURSIVE_RELATIONSHIP_CONSTANT\n            assert isinstance(to, six.string_types), \"'to' must be either a model, a model name or the string %r\" % RECURSIVE_RELATIONSHIP_CONSTANT\n\n        self.to, self.field_name = to, field_name\n        self.related_name = related_name 关联名\n\n        if limit_choices_to is None:\n            limit_choices_to = {}\n        self.limit_choices_to = limit_choices_to\n\n        self.multiple = True #和 class OneToOneRel 区分的属性\n\n        self.parent_link = parent_link\n        self.on_delete = on_delete\n\n    def is_hidden(self):\n        \"Should the related object be hidden?\"\n        return self.related_name and self.related_name[-1] == '+'\n\n    在关联表中取得属性, 在 __init__ 中同时设定了关联表和关联属性\n    def get_related_field(self):\n        \"\"\"\n        Returns the Field in the 'to' object to which this relationship is\n        tied.\n        \"\"\"\n        data = self.to._meta.get_field_by_name(self.field_name)\n\n        if not data[2]:\n            raise FieldDoesNotExist(\"No related field named '%s'\" %\n                    self.field_name)\n        return data[0]\n\n一对一关系类, 几乎和多对一关系类一样, 只是 OneToOneRel.multiple 属性为 false.\nclass OneToOneRel(ManyToOneRel):\n    def __init__(self, to, field_name, related_name=None, limit_choices_to=None,\n        parent_link=False, on_delete=None):\n        super(OneToOneRel, self).__init__(to, field_name,\n                related_name=related_name, limit_choices_to=limit_choices_to,\n                parent_link=parent_link, on_delete=on_delete\n        )\n        self.multiple = False\n\n\nclass ManyToManyRel(object):\n    def __init__(self, to, related_name=None, limit_choices_to=None,\n            symmetrical=True, through=None):\n        self.to = to\n        self.related_name = related_name\n        if limit_choices_to is None:\n            limit_choices_to = {}\n        self.limit_choices_to = limit_choices_to\n        self.symmetrical = symmetrical\n        self.multiple = True\n        self.through = through\n\n    def is_hidden(self):\n        \"Should the related object be hidden?\"\n        return self.related_name and self.related_name[-1] == '+'\n\n    def get_related_field(self):\n        \"\"\"\n        Returns the field in the to' object to which this relationship is tied\n        (this is always the primary key on the target model). Provided for\n        symmetry with ManyToOneRel.\n        \"\"\"\n        # 直接返回主键\n        return self.to._meta.pk\n\n注意到 foreignkey 类也是一个 field, 这就不难理解了. 因为外键也可以是表中一个属性.\nclass ForeignKey(RelatedField, Field):\n    empty_strings_allowed = False\n    default_error_messages = {\n        'invalid': _('Model %(model)s with pk %(pk)r does not exist.')\n    }\n    description = _(\"Foreign Key (type determined by related field)\")\n\n    # to 表示需要关联的表, to_field 关联的属性, rel_class 应该是关联的类型, 默认是一对多\n    def __init__(self, to, to_field=None, rel_class=ManyToOneRel, **kwargs):\n\n        try:\n            to_name = to._meta.object_name.lower()\n        except AttributeError:  # to._meta doesn't exist, so it must be RECURSIVE_RELATIONSHIP_CONSTANT\n            assert isinstance(to, six.string_types), \"%s(%r) is invalid. First parameter to ForeignKey must be either a model, a model name, or the string %r\" % (self.__class__.__name__, to, RECURSIVE_RELATIONSHIP_CONSTANT)\n\n        else: 成功\n            assert not to._meta.abstract, \"%s cannot define a relation with abstract class %s\" % (self.__class__.__name__, to._meta.object_name)\n            # For backwards compatibility purposes, we need to *try* and set\n            # the to_field during FK construction. It won't be guaranteed to\n            # be correct until contribute_to_class is called. Refs #12190.\n\n            # to_field 缺省值为关联表中的主键\n            to_field = to_field or (to._meta.pk and to._meta.pk.name)\n\n        你可以在 Foreign() 构造过程中设定 verbose_name 详细名称\n        kwargs['verbose_name'] = kwargs.get('verbose_name', None)\n\n        if 'db_index' not in kwargs:\n            kwargs['db_index'] = True\n\n        看吧, rel 在这里, 原来 rel 里保存着下面的东西\n        kwargs['rel'] = rel_class(to, to_field,\n            related_name=kwargs.pop('related_name', None),\n            limit_choices_to=kwargs.pop('limit_choices_to', None),\n            parent_link=kwargs.pop('parent_link', False),\n            on_delete=kwargs.pop('on_delete', CASCADE), #tips: 联系 django.db.models.deletion, CASCADE() 级联函数???\n        )\n        Field.__init__(self, **kwargs)\n\n    检测\n    def validate(self, value, model_instance):\n        if self.rel.parent_link:\n            return\n\n        super(ForeignKey, self).validate(value, model_instance)\n        if value is None:\n            return\n\n        using = router.db_for_read(model_instance.__class__, instance=model_instance)\n\n        qs = self.rel.to._default_manager.using(using).filter(\n                **{self.rel.field_name: value}\n             )\n\n        # self.rel.limit_choices_to 的作用: A dictionary of lookup arguments and values (see Making queries) that limit the available admin or ModelForm choices for this object.\n        qs = qs.complex_filter(self.rel.limit_choices_to)\n\n        if not qs.exists():\n            raise exceptions.ValidationError(self.error_messages['invalid'] % {\n                'model': self.rel.to._meta.verbose_name, 'pk': value})\n\n    def get_attname(self):\n        # self.name 是关联属性名, 在 RelatedObject 中定义, self.attname 是当属性为外键的时候才会设置成 XXX_id 的形式\n        return '%s_id' % self.name\n\n    def get_validator_unique_lookup_type(self):\n        return '%s__%s__exact' % (self.name, self.rel.get_related_field().name)\n\n    def get_default(self):\n        \"Here we check if the default value is an object and return the to_field if so.\"\n        field_default = super(ForeignKey, self).get_default()\n\n        if isinstance(field_default, self.rel.to):\n            return getattr(field_default, self.rel.get_related_field().attname)\n\n        return field_default\n\n    # 有关 get_db_prep_save(): Same as the above, but called when the Field value must be saved to the database. 当数据需要保存的时候会调用. As the default implementation just calls get_db_prep_value(), you shouldn’t need to implement this method unless your custom field needs a special conversion when being saved that is not the same as the conversion used for normal query parameters (which is implemented by get_db_prep_value()).\n    def get_db_prep_save(self, value, connection):\n        if value == '' or value == None:\n            return None\n        else:\n            return self.rel.get_related_field().get_db_prep_save(value,\n                connection=connection)\n\n    def value_to_string(self, obj):\n        if not obj:\n            # In required many-to-one fields with only one available choice,\n            # select that one available choice. Note: For SelectFields\n            # we have to check that the length of choices is *2*, not 1,\n            # because SelectFields always have an initial \"blank\" value.\n            if not self.blank and self.choices:\n                choice_list = self.get_choices_default()\n                if len(choice_list) == 2:\n                    return smart_text(choice_list[1][0])\n        return Field.value_to_string(self, obj)\n\n    不懂\n    def contribute_to_class(self, cls, name):\n        super(ForeignKey, self).contribute_to_class(cls, name)\n\n        往 cls 中添加属性, 值是 ReverseSingleRelatedObjectDescriptor() 对象\n        setattr(cls, self.name, ReverseSingleRelatedObjectDescriptor(self))\n\n        if isinstance(self.rel.to, six.string_types):\n            target = self.rel.to 如果只是个字符串\n        else:\n            target = self.rel.to._meta.db_table\n        cls._meta.duplicate_targets[self.column] = (target, \"o2m\")\n    不懂\n    def contribute_to_related_class(self, cls, related):\n        # Internal FK's - i.e., those with a related name ending with '+' -\n        # and swapped models don't get a related descriptor.\n        if not self.rel.is_hidden() and not related.model._meta.swapped:\n            setattr(cls, related.get_accessor_name(), ForeignRelatedObjectsDescriptor(related))\n            if self.rel.limit_choices_to:\n                cls._meta.related_fkey_lookups.append(self.rel.limit_choices_to)\n        if self.rel.field_name is None:\n            self.rel.field_name = cls._meta.pk.name\n\n    和表单有关\n    def formfield(self, **kwargs):\n        db = kwargs.pop('using', None)\n        if isinstance(self.rel.to, six.string_types):\n            raise ValueError(\"Cannot create form field for %r yet, because \"\n                             \"its related model %r has not been loaded yet\" %\n                             (self.name, self.rel.to))\n        defaults = {\n            'form_class': forms.ModelChoiceField,\n            'queryset': self.rel.to._default_manager.using(db).complex_filter(self.rel.limit_choices_to),\n            'to_field_name': self.rel.field_name,\n        }\n        defaults.update(kwargs)\n        return super(ForeignKey, self).formfield(**defaults)\n\n    def db_type(self, connection):\n        # The database column type of a ForeignKey is the column type\n        # of the field to which it points. An exception is if the ForeignKey\n        # points to an AutoField/PositiveIntegerField/PositiveSmallIntegerField,\n        # in which case the column type is simply that of an IntegerField.\n        # If the database needs similar types for key fields however, the only\n        # thing we can do is making AutoField an IntegerField.\n        rel_field = self.rel.get_related_field()\n        if (isinstance(rel_field, AutoField) or\n                (not connection.features.related_fields_match_type and\n                isinstance(rel_field, (PositiveIntegerField,\n                                       PositiveSmallIntegerField)))):\n            return IntegerField().db_type(connection=connection)\n        return rel_field.db_type(connection=connection)\n\nOneToOneField 和 ForeignKey 非常相似, 直接继承, 添加唯一约束, 当一个表属性过多, 可以用两个表来表示, 这时候需要用到 OneToOneField\nclass OneToOneField(ForeignKey):\n    \"\"\"\n    A OneToOneField is essentially the same as a ForeignKey, with the exception\n    that always carries a \"unique\" constraint with it and the reverse relation\n    always returns the object pointed to (since there will only ever be one),\n    rather than returning a list.\n    \"\"\"\n    description = _(\"One-to-one relationship\")\n\n    def __init__(self, to, to_field=None, **kwargs):\n        kwargs['unique'] = True 与 ForeignKey 的不同之处\n        super(OneToOneField, self).__init__(to, to_field, OneToOneRel, **kwargs)\n\n    def contribute_to_related_class(self, cls, related):\n        setattr(cls, related.get_accessor_name(),\n                SingleRelatedObjectDescriptor(related))\n\n    def formfield(self, **kwargs):\n        if self.rel.parent_link:\n            return None\n        return super(OneToOneField, self).formfield(**kwargs)\n\n    def save_form_data(self, instance, data):\n        if isinstance(data, self.rel.to):\n            setattr(instance, self.name, data)\n        else:\n            setattr(instance, self.attname, data)\n\n当一个多对多的关联出现, 且未由 through 指定外部自定义管理表的时候, 此函数会被调用创建一个多对多管理表\ndef create_many_to_many_intermediary_model(field, klass):\n    from django.db import models\n    managed = True\n    if isinstance(field.rel.to, six.string_types) and field.rel.to != RECURSIVE_RELATIONSHIP_CONSTANT:\n        to_model = field.rel.to\n        to = to_model.split('.')[-1]\n\n        def set_managed(field, model, cls):\n            field.rel.through._meta.managed = model._meta.managed or cls._meta.managed\n\n        通过字符串查找\n        add_lazy_relation(klass, field, to_model, set_managed)\n\n    elif isinstance(field.rel.to, six.string_types):\n        to = klass._meta.object_name\n        to_model = klass\n        managed = klass._meta.managed\n    else:\n        to = field.rel.to._meta.object_name\n        to_model = field.rel.to\n        managed = klass._meta.managed or to_model._meta.managed\n\n    name = '%s_%s' % (klass._meta.object_name, field.name)\n\n    if field.rel.to == RECURSIVE_RELATIONSHIP_CONSTANT or to == klass._meta.object_name: 自己和自己关联\n        from_ = 'from_%s' % to.lower()\n        to = 'to_%s' % to.lower()\n    else:\n        from_ = klass._meta.object_name.lower()\n        to = to.lower()\n\n    meta = type('Meta', (object,), {\n        'db_table': field._get_m2m_db_table(klass._meta),\n\n        # 有关 managed 选项:\n        # https://docs.djangoproject.com/en/dev/ref/models/options/#managed\n        'managed': managed,\n\n        'auto_created': klass,\n        'app_label': klass._meta.app_label,\n        'db_tablespace': klass._meta.db_tablespace,\n        'unique_together': (from_, to),\n        'verbose_name': '%(from)s-%(to)s relationship' % {'from': from_, 'to': to},\n        'verbose_name_plural': '%(from)s-%(to)s relationships' % {'from': from_, 'to': to},\n    })\n\n    # Construct and return the new class. 返回动态创建的 model\n    return type(name, (models.Model,), {\n        'Meta': meta,\n        '__module__': klass.__module__,\n        from_: models.ForeignKey(klass, related_name='%s+' % name, db_tablespace=field.db_tablespace),\n        to: models.ForeignKey(to_model, related_name='%s+' % name, db_tablespace=field.db_tablespace)\n    })\n\nclass ManyToManyField(RelatedField, Field):\n    description = _(\"Many-to-many relationship\")\n\n    def __init__(self, to, **kwargs):\n        try:\n            # 不能在抽象模块中定义多对多的关系\n            assert not to._meta.abstract, \"%s cannot define a relation with abstract class %s\" % (self.__class__.__name__, to._meta.object_name)\n        except AttributeError:  # to._meta doesn't exist, so it must be RECURSIVE_RELATIONSHIP_CONSTANT\n            assert isinstance(to, six.string_types), \"%s(%r) is invalid. First parameter to ManyToManyField must be either a model, a model name, or the string %r\" % (self.__class__.__name__, to, RECURSIVE_RELATIONSHIP_CONSTANT)\n            # Python 2.6 and earlier require dictionary keys to be of str type,\n            # not unicode and class names must be ASCII (in Python 2.x), so we\n            # forcibly coerce it here (breaks early if there's a problem).\n            to = str(to)\n\n        # 详细名\n        kwargs['verbose_name'] = kwargs.get('verbose_name', None)\n\n        # 创建一个多对多关系类实例\n        kwargs['rel'] = ManyToManyRel(to,\n            related_name=kwargs.pop('related_name', None),\n            limit_choices_to=kwargs.pop('limit_choices_to', None),\n            symmetrical=kwargs.pop('symmetrical', to == RECURSIVE_RELATIONSHIP_CONSTANT),\n            through=kwargs.pop('through', None))\n\n        这个参数应该很关键\n        self.db_table = kwargs.pop('db_table', None)\n\n        \"\"\"\n        有关 through:\n        ManyToManyField.through\n        Django will automatically generate a table to manage many-to-many relationships. However, if you want to manually specify the intermediary table, you can use the through option to specify the Django model that represents the intermediate table that you want to use.\n        The most common use for this option is when you want to associate extra data with a many-to-many relationship.\n        \"\"\"\n\n        if kwargs['rel'].through is not None:\n            \"\"\"\n            有关 db_table:\n            ManyToManyField.db_table\n            The name of the table to create for storing the many-to-many data. If this is not provided, Django will assume a default name based upon the names of: the table for the model defining the relationship and the name of the field itself.\n            \"\"\"\n            assert self.db_table is None, \"Cannot specify a db_table if an intermediary model is used.\" 当通过 through 指定一个外部的 model 来管理多对多联系时, 不需要指定 db_table\n\n        Field.__init__(self, **kwargs)\n\n        msg = _('Hold down \"Control\", or \"Command\" on a Mac, to select more than one.')\n        self.help_text = string_concat(self.help_text, ' ', msg)\n\n    def get_choices_default(self):\n        return Field.get_choices(self, include_blank=False)\n\n    获取管理多对多的表, 从自动生成的或者 through 指定的 model 中获得, opts 参数是当前两者都没指定的时候使用\n    def _get_m2m_db_table(self, opts):\n        \"Function that can be curried to provide the m2m table name for this relation\"\n        if self.rel.through is not None:\n            return self.rel.through._meta.db_table\n        elif self.db_table:\n            return self.db_table\n        else:\n            return util.truncate_name('%s_%s' % (opts.db_table, self.name),\n                                      connection.ops.max_name_length())\n\n    def _get_m2m_attr(self, related, attr):\n        \"Function that can be curried to provide the source accessor or DB column name for the m2m table\"\n        cache_attr = '_m2m_%s_cache' % attr\n        if hasattr(self, cache_attr):\n            return getattr(self, cache_attr)\n        for f in self.rel.through._meta.fields:\n            if hasattr(f, 'rel') and f.rel and f.rel.to == related.model:\n                setattr(self, cache_attr, getattr(f, attr))\n                return getattr(self, cache_attr)\n\n    def _get_m2m_reverse_attr(self, related, attr):\n        \"Function that can be curried to provide the related accessor or DB column name for the m2m table\"\n        cache_attr = '_m2m_reverse_%s_cache' % attr\n        if hasattr(self, cache_attr):\n            return getattr(self, cache_attr)\n        found = False\n        for f in self.rel.through._meta.fields:\n            if hasattr(f, 'rel') and f.rel and f.rel.to == related.parent_model:\n                if related.model == related.parent_model:\n                    # If this is an m2m-intermediate to self,\n                    # the first foreign key you find will be\n                    # the source column. Keep searching for\n                    # the second foreign key.\n                    if found:\n                        setattr(self, cache_attr, getattr(f, attr))\n                        break\n                    else:\n                        found = True\n                else:\n                    setattr(self, cache_attr, getattr(f, attr))\n                    break\n        return getattr(self, cache_attr)\n\n    def value_to_string(self, obj):\n        data = ''\n        if obj:\n            qs = getattr(obj, self.name).all()\n            data = [instance._get_pk_val() for instance in qs]\n        else:\n            # In required many-to-many fields with only one available choice,\n            # select that one available choice.\n            if not self.blank:\n                choices_list = self.get_choices_default()\n                if len(choices_list) == 1:\n                    data = [choices_list[0][0]]\n        return smart_text(data)\n\n    # 不懂, 有什么用: 有关 contribute_to_class() 方法的讨论: http://stackoverflow.com/questions/2357528/explanation-of-contribute-to-class\n    def contribute_to_class(self, cls, name):\n        # To support multiple relations to self, it's useful to have a non-None\n        # related name on symmetrical relations for internal reasons. The\n        # concept doesn't make a lot of sense externally (\"you want me to\n        # specify *what* on my non-reversible relation?!\"), so we set it up\n        # automatically. The funky name reduces the chance of an accidental\n        # clash.\n        if self.rel.symmetrical and (self.rel.to == \"self\" or self.rel.to == cls._meta.object_name):\n            self.rel.related_name = \"%s_rel_+\" % name\n\n        super(ManyToManyField, self).contribute_to_class(cls, name)\n\n        # The intermediate m2m model is not auto created if:\n        #  1) There is a manually specified intermediate, or\n        #  2) The class owning the m2m field is abstract.\n        #  3) The class owning the m2m field has been swapped out.\n\n        # 如果未指定 rel.through 选项,\n        # cls 不为抽象模块,\n        # 且 XXX (不懂 cls._meta.swapped 即 Options.swapped 属性有什么用 ???)\n        # 即自动创建一个多对多管理表\n        if not self.rel.through and not cls._meta.abstract and not cls._meta.swapped:\n            self.rel.through = create_many_to_many_intermediary_model(self, cls)\n\n        # Add the descriptor for the m2m relation\n        setattr(cls, self.name, ReverseManyRelatedObjectsDescriptor(self))\n\n        # Set up the accessor for the m2m table name for the relation\n        self.m2m_db_table = curry(self._get_m2m_db_table, cls._meta)\n\n        # Populate some necessary rel arguments so that cross-app relations\n        # work correctly.\n        if isinstance(self.rel.through, six.string_types):\n            def resolve_through_model(field, model, cls):\n                field.rel.through = model\n            add_lazy_relation(cls, self, self.rel.through, resolve_through_model)\n\n        if isinstance(self.rel.to, six.string_types):\n            target = self.rel.to\n        else:\n            target = self.rel.to._meta.db_table\n        cls._meta.duplicate_targets[self.column] = (target, \"m2m\")\n\n    def contribute_to_related_class(self, cls, related):\n        # Internal M2Ms (i.e., those with a related name ending with '+')\n        # and swapped models don't get a related descriptor.\n        if not self.rel.is_hidden() and not related.model._meta.swapped:\n            setattr(cls, related.get_accessor_name(), ManyRelatedObjectsDescriptor(related))\n\n        # Set up the accessors for the column names on the m2m table\n        self.m2m_column_name = curry(self._get_m2m_attr, related, 'column')\n        self.m2m_reverse_name = curry(self._get_m2m_reverse_attr, related, 'column')\n\n        self.m2m_field_name = curry(self._get_m2m_attr, related, 'name')\n        self.m2m_reverse_field_name = curry(self._get_m2m_reverse_attr, related, 'name')\n\n        get_m2m_rel = curry(self._get_m2m_attr, related, 'rel')\n        self.m2m_target_field_name = lambda: get_m2m_rel().field_name\n        get_m2m_reverse_rel = curry(self._get_m2m_reverse_attr, related, 'rel')\n        self.m2m_reverse_target_field_name = lambda: get_m2m_reverse_rel().field_name\n\n    def set_attributes_from_rel(self):\n        pass\n\n    def value_from_object(self, obj):\n        \"Returns the value of this field in the given model instance.\"\n        return getattr(obj, self.attname).all()\n\n    def save_form_data(self, instance, data):\n        setattr(instance, self.attname, data)\n\n    和表单有关\n    def formfield(self, **kwargs):\n        db = kwargs.pop('using', None)\n        defaults = {\n            'form_class': forms.ModelMultipleChoiceField,\n            'queryset': self.rel.to._default_manager.using(db).complex_filter(self.rel.limit_choices_to)\n        }\n        defaults.update(kwargs)\n        # If initial is passed in, it's a list of related objects, but the\n        # MultipleChoiceField takes a list of IDs.\n        if defaults.get('initial') is not None:\n            initial = defaults['initial']\n            if callable(initial):\n                initial = initial()\n            defaults['initial'] = [i._get_pk_val() for i in initial]\n        return super(ManyToManyField, self).formfield(**defaults)\n\n    def db_type(self, connection):\n        # A ManyToManyField is not represented by a single column,\n        # so return None.\n        return None\n"
  },
  {
    "path": "Django-1.5.1/django/db/models/fields/subclassing.py",
    "content": "\"\"\"\nConvenience routines for creating non-trivial Field subclasses, as well as\nbackwards compatibility utilities.\n\nAdd SubfieldBase as the metaclass for your Field subclass, implement\nto_python() and the other necessary methods and everything will work\nseamlessly.\n\"\"\"\n\nclass SubfieldBase(type):\n    \"\"\"\n    A metaclass for custom Field subclasses. This ensures the model's attribute\n    has the descriptor protocol attached to it.\n    \"\"\"\n    def __new__(cls, name, bases, attrs):\n        new_class = super(SubfieldBase, cls).__new__(cls, name, bases, attrs)\n        new_class.contribute_to_class = make_contrib(\n            new_class, attrs.get('contribute_to_class')\n        )\n        return new_class\n\nclass Creator(object):\n    \"\"\"\n    A placeholder class that provides a way to set the attribute on the model.\n    \"\"\"\n    def __init__(self, field):\n        self.field = field\n\n    def __get__(self, obj, type=None):\n        if obj is None:\n            raise AttributeError('Can only be accessed via an instance.')\n        return obj.__dict__[self.field.name]\n\n    def __set__(self, obj, value):\n        obj.__dict__[self.field.name] = self.field.to_python(value)\n\ndef make_contrib(superclass, func=None):\n    \"\"\"\n    Returns a suitable contribute_to_class() method for the Field subclass.\n\n    If 'func' is passed in, it is the existing contribute_to_class() method on\n    the subclass and it is called before anything else. It is assumed in this\n    case that the existing contribute_to_class() calls all the necessary\n    superclass methods.\n    \"\"\"\n    def contribute_to_class(self, cls, name):\n        if func:\n            func(self, cls, name)\n        else:\n            super(superclass, self).contribute_to_class(cls, name)\n        setattr(cls, self.name, Creator(self))\n\n    return contribute_to_class\n"
  },
  {
    "path": "Django-1.5.1/django/db/models/loading.py",
    "content": "\"Utilities for loading models and the modules that contain them.\"\n\nfrom django.conf import settings\nfrom django.core.exceptions import ImproperlyConfigured\nfrom django.utils.datastructures import SortedDict\nfrom django.utils.importlib import import_module\nfrom django.utils.module_loading import module_has_submodule\nfrom django.utils._os import upath\nfrom django.utils import six\n\nimport imp\nimport sys\nimport os\n\n__all__ = ('get_apps', 'get_app', 'get_models', 'get_model', 'register_models',\n        'load_app', 'app_cache_ready')\n\n\nclass AppCache(object):\n    \"\"\"\n    A cache that stores installed applications and their models. Used to\n    provide reverse-relations and for app introspection (e.g. admin).\n    \"\"\"\n    # Use the Borg pattern to share state between all instances. Details at\n    # http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/66531.\n    __shared_state = dict(\n        # Keys of app_store are the model modules for each application.\n        app_store=SortedDict(),\n\n        # Mapping of installed app_labels to model modules for that app.\n        app_labels={},\n\n        # Mapping of app_labels to a dictionary of model names to model code.\n        # May contain apps that are not installed.\n        app_models=SortedDict(),\n\n        # Mapping of app_labels to errors raised when trying to import the app.\n        app_errors={},\n\n        # -- Everything below here is only used when populating the cache --\n        loaded=False,\n        handled={},\n        postponed=[],\n        nesting_level=0,\n        _get_models_cache={},\n    )\n\n    def __init__(self):\n        self.__dict__ = self.__shared_state\n\n    def _populate(self):\n        \"\"\"\n        Fill in all the cache information. This method is threadsafe, in the\n        sense that every caller will see the same state upon return, and if the\n        cache is already initialised, it does no work.\n        \"\"\"\n        if self.loaded:\n            return\n        # Note that we want to use the import lock here - the app loading is\n        # in many cases initiated implicitly by importing, and thus it is\n        # possible to end up in deadlock when one thread initiates loading\n        # without holding the importer lock and another thread then tries to\n        # import something which also launches the app loading. For details of\n        # this situation see #18251.\n        imp.acquire_lock()\n        try:\n            if self.loaded:\n                return\n            for app_name in settings.INSTALLED_APPS:\n                if app_name in self.handled:\n                    continue\n                self.load_app(app_name, True)\n            if not self.nesting_level:\n                for app_name in self.postponed:\n                    self.load_app(app_name)\n                self.loaded = True\n        finally:\n            imp.release_lock()\n\n    def _label_for(self, app_mod):\n        \"\"\"\n        Return app_label for given models module.\n\n        \"\"\"\n        return app_mod.__name__.split('.')[-2]\n\n    def load_app(self, app_name, can_postpone=False):\n        \"\"\"\n        Loads the app with the provided fully qualified name, and returns the\n        model module.\n        \"\"\"\n        self.handled[app_name] = None\n        self.nesting_level += 1\n        app_module = import_module(app_name)\n        try:\n            models = import_module('.models', app_name)\n        except ImportError:\n            self.nesting_level -= 1\n            # If the app doesn't have a models module, we can just ignore the\n            # ImportError and return no models for it.\n            if not module_has_submodule(app_module, 'models'):\n                return None\n            # But if the app does have a models module, we need to figure out\n            # whether to suppress or propagate the error. If can_postpone is\n            # True then it may be that the package is still being imported by\n            # Python and the models module isn't available yet. So we add the\n            # app to the postponed list and we'll try it again after all the\n            # recursion has finished (in populate). If can_postpone is False\n            # then it's time to raise the ImportError.\n            else:\n                if can_postpone:\n                    self.postponed.append(app_name)\n                    return None\n                else:\n                    raise\n\n        self.nesting_level -= 1\n        if models not in self.app_store:\n            self.app_store[models] = len(self.app_store)\n            self.app_labels[self._label_for(models)] = models\n        return models\n\n    def app_cache_ready(self):\n        \"\"\"\n        Returns true if the model cache is fully populated.\n\n        Useful for code that wants to cache the results of get_models() for\n        themselves once it is safe to do so.\n        \"\"\"\n        return self.loaded\n\n    def get_apps(self):\n        \"Returns a list of all installed modules that contain models.\"\n        self._populate()\n\n        # Ensure the returned list is always in the same order (with new apps\n        # added at the end). This avoids unstable ordering on the admin app\n        # list page, for example.\n        apps = [(v, k) for k, v in self.app_store.items()]\n        apps.sort()\n        return [elt[1] for elt in apps]\n\n    def get_app(self, app_label, emptyOK=False):\n        \"\"\"\n        Returns the module containing the models for the given app_label. If\n        the app has no models in it and 'emptyOK' is True, returns None.\n        \"\"\"\n        self._populate()\n        imp.acquire_lock()\n        try:\n            for app_name in settings.INSTALLED_APPS:\n                if app_label == app_name.split('.')[-1]:\n                    mod = self.load_app(app_name, False)\n                    if mod is None:\n                        if emptyOK:\n                            return None\n                        raise ImproperlyConfigured(\"App with label %s is missing a models.py module.\" % app_label)\n                    else:\n                        return mod\n            raise ImproperlyConfigured(\"App with label %s could not be found\" % app_label)\n        finally:\n            imp.release_lock()\n\n    def get_app_errors(self):\n        \"Returns the map of known problems with the INSTALLED_APPS.\"\n        self._populate()\n        return self.app_errors\n\n    def get_models(self, app_mod=None,\n                   include_auto_created=False, include_deferred=False,\n                   only_installed=True, include_swapped=False):\n        \"\"\"\n        Given a module containing models, returns a list of the models.\n        Otherwise returns a list of all installed models.\n\n        By default, auto-created models (i.e., m2m models without an\n        explicit intermediate table) are not included. However, if you\n        specify include_auto_created=True, they will be.\n\n        By default, models created to satisfy deferred attribute\n        queries are *not* included in the list of models. However, if\n        you specify include_deferred, they will be.\n\n        By default, models that aren't part of installed apps will *not*\n        be included in the list of models. However, if you specify\n        only_installed=False, they will be.\n\n        By default, models that have been swapped out will *not* be\n        included in the list of models. However, if you specify\n        include_swapped, they will be.\n        \"\"\"\n        cache_key = (app_mod, include_auto_created, include_deferred, only_installed, include_swapped)\n        try:\n            return self._get_models_cache[cache_key]\n        except KeyError:\n            pass\n        self._populate()\n        if app_mod:\n            if app_mod in self.app_store:\n                app_list = [self.app_models.get(self._label_for(app_mod),\n                                                SortedDict())]\n            else:\n                app_list = []\n        else:\n            if only_installed:\n                app_list = [self.app_models.get(app_label, SortedDict())\n                            for app_label in six.iterkeys(self.app_labels)]\n            else:\n                app_list = six.itervalues(self.app_models)\n        model_list = []\n        for app in app_list:\n            model_list.extend(\n                model for model in app.values()\n                if ((not model._deferred or include_deferred) and\n                    (not model._meta.auto_created or include_auto_created) and\n                    (not model._meta.swapped or include_swapped))\n            )\n        self._get_models_cache[cache_key] = model_list\n        return model_list\n\n    def get_model(self, app_label, model_name,\n                  seed_cache=True, only_installed=True):\n        \"\"\"\n        Returns the model matching the given app_label and case-insensitive\n        model_name.\n\n        Returns None if no model is found.\n        \"\"\"\n        if seed_cache:\n            self._populate()\n        if only_installed and app_label not in self.app_labels:\n            return None\n        return self.app_models.get(app_label, SortedDict()).get(model_name.lower())\n\n    def register_models(self, app_label, *models):\n        \"\"\"\n        Register a set of models as belonging to an app.\n        \"\"\"\n        for model in models:\n            # Store as 'name: model' pair in a dictionary\n            # in the app_models dictionary\n            model_name = model._meta.object_name.lower()\n            model_dict = self.app_models.setdefault(app_label, SortedDict())\n            if model_name in model_dict:\n                # The same model may be imported via different paths (e.g.\n                # appname.models and project.appname.models). We use the source\n                # filename as a means to detect identity.\n                fname1 = os.path.abspath(upath(sys.modules[model.__module__].__file__))\n                fname2 = os.path.abspath(upath(sys.modules[model_dict[model_name].__module__].__file__))\n                # Since the filename extension could be .py the first time and\n                # .pyc or .pyo the second time, ignore the extension when\n                # comparing.\n                if os.path.splitext(fname1)[0] == os.path.splitext(fname2)[0]:\n                    continue\n            model_dict[model_name] = model\n        self._get_models_cache.clear()\n\ncache = AppCache()\n\n# These methods were always module level, so are kept that way for backwards\n# compatibility.\nget_apps = cache.get_apps\nget_app = cache.get_app\nget_app_errors = cache.get_app_errors\nget_models = cache.get_models\nget_model = cache.get_model\nregister_models = cache.register_models\nload_app = cache.load_app\napp_cache_ready = cache.app_cache_ready\n"
  },
  {
    "path": "Django-1.5.1/django/db/models/manager.py",
    "content": "import copy\nfrom django.db import router\nfrom django.db.models.query import QuerySet, EmptyQuerySet, insert_query, RawQuerySet\nfrom django.db.models import signals\nfrom django.db.models.fields import FieldDoesNotExist\n\n这个函数确保每一个 model 都有一个管理器\ndef ensure_default_manager(sender, **kwargs):\n    \"\"\"\n    Ensures that a Model subclass contains a default manager  and sets the\n    _default_manager attribute on the class. Also sets up the _base_manager\n    points to a plain Manager instance (which could be the same as\n    _default_manager if it's not a subclass of Manager).\n    \"\"\"\n    cls = sender\n\n    if cls._meta.abstract:\n        setattr(cls, 'objects', AbstractManagerDescriptor(cls))\n        return\n\n    elif cls._meta.swapped:\n        setattr(cls, 'objects', SwappedManagerDescriptor(cls))\n        return\n\n    if not getattr(cls, '_default_manager', None):\n        # Create the default manager, if needed.\n        try:\n            cls._meta.get_field('objects')\n            raise ValueError(\"Model %s must specify a custom Manager, because it has a field named 'objects'\" % cls.__name__)\n\n        except FieldDoesNotExist:\n            pass\n\n        # 关键的一步, 将一个 Manager 实例挂钩到 cls.objects\n        cls.add_to_class('objects', Manager())\n        cls._base_manager = cls.objects\n\n    elif not getattr(cls, '_base_manager', None):\n\n        default_mgr = cls._default_manager.__class__\n\n        if (default_mgr is Manager or\n                getattr(default_mgr, \"use_for_related_fields\", False)):\n            cls._base_manager = cls._default_manager\n\n        else:\n            # Default manager isn't a plain Manager class, or a suitable\n            # replacement, so we walk up the base class hierarchy until we hit\n            # something appropriate.\n            for base_class in default_mgr.mro()[1:]:\n                if (base_class is Manager or\n                        getattr(base_class, \"use_for_related_fields\", False)):\n                    cls.add_to_class('_base_manager', base_class())\n                    return\n            raise AssertionError(\"Should never get here. Please report a bug, including your model and model manager setup.\")\n\n注册了 ensure_default_manager() 函数\nsignals.class_prepared.connect(ensure_default_manager)\n\n# class Manager 一个摆着好看的类, 它强烈的依赖于 Query,QuerySet, 真正工作的是后者.\nclass Manager(object):\n    # Tracks each time a Manager instance is created. Used to retain order.\n    creation_counter = 0\n\n    def __init__(self):\n        super(Manager, self).__init__()\n        self._set_creation_counter()\n        self.model = None\n        self._inherited = False\n        self._db = None\n\n    # contribute_to_class() 函数经常见到, 他的作用是将自己挂钩到一个目的对象, 或者将目的对象挂钩自己.\n    def contribute_to_class(self, model, name):\n        # TODO: Use weakref because of possible memory leak / circular reference.\n        self.model = model\n        # Only contribute the manager if the model is concrete\n        if model._meta.abstract:\n            setattr(model, name, AbstractManagerDescriptor(model))\n        elif model._meta.swapped:\n            setattr(model, name, SwappedManagerDescriptor(model))\n        else:\n        # if not model._meta.abstract and not model._meta.swapped:\n            setattr(model, name, ManagerDescriptor(self))\n\n        if not getattr(model, '_default_manager', None) or self.creation_counter < model._default_manager.creation_counter:\n            model._default_manager = self\n\n        if model._meta.abstract or (self._inherited and not self.model._meta.proxy):\n            model._meta.abstract_managers.append((self.creation_counter, name,\n                    self))\n        else:\n            model._meta.concrete_managers.append((self.creation_counter, name,\n                self))\n\n    def _set_creation_counter(self):\n        \"\"\"\n        Sets the creation counter value for this instance and increments the\n        class-level copy.\n        \"\"\"\n        # creation_counter 是类的一个静态变量\n        self.creation_counter = Manager.creation_counter\n        Manager.creation_counter += 1 自增1\n\n    def _copy_to_model(self, model):\n        \"\"\"\n        Makes a copy of the manager and assigns it to 'model', which should be\n        a child of the existing model (used when inheriting a manager from an\n        abstract base class).\n        \"\"\"\n        assert issubclass(model, self.model)\n        mgr = copy.copy(self)\n        mgr._set_creation_counter()\n        mgr.model = model\n        mgr._inherited = True\n        return mgr\n\n    def db_manager(self, using):\n        obj = copy.copy(self)\n        obj._db = using\n        return obj\n\n    @property\n    def db(self):\n        return self._db or router.db_for_read(self.model)\n\n    #######################\n    # PROXIES TO QUERYSET #\n    #######################\n\n    def get_empty_query_set(self):\n        return EmptyQuerySet(self.model, using=self._db)\n\n    # 返回的是一个 QuerySet 对象, 子类可以重写这个方法\n    def get_query_set(self):\n        \"\"\"Returns a new QuerySet object.  Subclasses can override this method\n        to easily customize the behavior of the Manager.\n        \"\"\"\n        return QuerySet(self.model, using=self._db)\n\n    def none(self):\n        return self.get_empty_query_set()\n\n    def all(self):\n        return self.get_query_set()\n\n    def count(self):\n        return self.get_query_set().count()\n\n    def dates(self, *args, **kwargs):\n        return self.get_query_set().dates(*args, **kwargs)\n\n    def distinct(self, *args, **kwargs):\n        return self.get_query_set().distinct(*args, **kwargs)\n\n    def extra(self, *args, **kwargs):\n        return self.get_query_set().extra(*args, **kwargs)\n\n    def get(self, *args, **kwargs):\n        return self.get_query_set().get(*args, **kwargs)\n\n    def get_or_create(self, **kwargs):\n        return self.get_query_set().get_or_create(**kwargs)\n\n    def create(self, **kwargs):\n        return self.get_query_set().create(**kwargs)\n\n    def bulk_create(self, *args, **kwargs):\n        return self.get_query_set().bulk_create(*args, **kwargs)\n\n    def filter(self, *args, **kwargs):\n        return self.get_query_set().filter(*args, **kwargs)\n\n    def aggregate(self, *args, **kwargs):\n        return self.get_query_set().aggregate(*args, **kwargs)\n\n    def annotate(self, *args, **kwargs):\n        return self.get_query_set().annotate(*args, **kwargs)\n\n    def complex_filter(self, *args, **kwargs):\n        return self.get_query_set().complex_filter(*args, **kwargs)\n\n    def exclude(self, *args, **kwargs):\n        return self.get_query_set().exclude(*args, **kwargs)\n\n    def in_bulk(self, *args, **kwargs):\n        return self.get_query_set().in_bulk(*args, **kwargs)\n\n    def iterator(self, *args, **kwargs):\n        return self.get_query_set().iterator(*args, **kwargs)\n\n    def latest(self, *args, **kwargs):\n        return self.get_query_set().latest(*args, **kwargs)\n\n    def order_by(self, *args, **kwargs):\n        return self.get_query_set().order_by(*args, **kwargs)\n\n    def select_for_update(self, *args, **kwargs):\n        return self.get_query_set().select_for_update(*args, **kwargs)\n\n    def select_related(self, *args, **kwargs):\n        return self.get_query_set().select_related(*args, **kwargs)\n\n    def prefetch_related(self, *args, **kwargs):\n        return self.get_query_set().prefetch_related(*args, **kwargs)\n\n    def values(self, *args, **kwargs):\n        return self.get_query_set().values(*args, **kwargs)\n\n    def values_list(self, *args, **kwargs):\n        return self.get_query_set().values_list(*args, **kwargs)\n\n    def update(self, *args, **kwargs):\n        return self.get_query_set().update(*args, **kwargs)\n\n    将记录翻转\n    def reverse(self, *args, **kwargs):\n        return self.get_query_set().reverse(*args, **kwargs)\n\n    def defer(self, *args, **kwargs):\n        return self.get_query_set().defer(*args, **kwargs)\n\n    def only(self, *args, **kwargs):\n        return self.get_query_set().only(*args, **kwargs)\n\n    def using(self, *args, **kwargs):\n        return self.get_query_set().using(*args, **kwargs)\n\n    def exists(self, *args, **kwargs):\n        return self.get_query_set().exists(*args, **kwargs)\n\n    def _insert(self, objs, fields, **kwargs):\n        return insert_query(self.model, objs, fields, **kwargs)\n\n    def _update(self, values, **kwargs):\n        return self.get_query_set()._update(values, **kwargs)\n\n    def raw(self, raw_query, params=None, *args, **kwargs):\n        return RawQuerySet(raw_query=raw_query, model=self.model, params=params, using=self._db, *args, **kwargs)\n\n\nclass ManagerDescriptor(object):\n    # This class ensures managers aren't accessible via model instances.\n    # For example, Poll.objects works, but poll_obj.objects raises AttributeError.\n    def __init__(self, manager):\n        self.manager = manager\n\n    def __get__(self, instance, type=None):\n        if instance != None:\n            raise AttributeError(\"Manager isn't accessible via %s instances\" % type.__name__)\n        return self.manager\n\n\nclass AbstractManagerDescriptor(object):\n    # This class provides a better error message when you try to access a\n    # manager on an abstract model.\n    def __init__(self, model):\n        self.model = model\n\n    def __get__(self, instance, type=None):\n        raise AttributeError(\"Manager isn't available; %s is abstract\" % (\n            self.model._meta.object_name,\n        ))\n\n\nclass SwappedManagerDescriptor(object):\n    # This class provides a better error message when you try to access a\n    # manager on a swapped model.\n    def __init__(self, model):\n        self.model = model\n\n    def __get__(self, instance, type=None):\n        raise AttributeError(\"Manager isn't available; %s has been swapped for '%s'\" % (\n            self.model._meta.object_name, self.model._meta.swapped\n        ))\n\n\nclass EmptyManager(Manager):\n    def get_query_set(self):\n        return self.get_empty_query_set()\n"
  },
  {
    "path": "Django-1.5.1/django/db/models/options.py",
    "content": "from __future__ import unicode_literals\n\nimport re\nfrom bisect import bisect\n\nfrom django.conf import settings\nfrom django.db.models.related import RelatedObject\nfrom django.db.models.fields.related import ManyToManyRel\nfrom django.db.models.fields import AutoField, FieldDoesNotExist\nfrom django.db.models.fields.proxy import OrderWrt\nfrom django.db.models.loading import get_models, app_cache_ready\nfrom django.utils import six\nfrom django.utils.datastructures import SortedDict\nfrom django.utils.encoding import force_text, smart_text, python_2_unicode_compatible\nfrom django.utils.translation import activate, deactivate_all, get_language, string_concat\n\n# Calculate the verbose_name by converting from InitialCaps to \"lowercase with spaces\".\nget_verbose_name = lambda class_name: re.sub('(((?<=[a-z])[A-Z])|([A-Z](?![A-Z]|$)))', ' \\\\1', class_name).lower().strip()\n\nDEFAULT_NAMES = ('verbose_name', 'verbose_name_plural', 'db_table', 'ordering',\n                 'unique_together', 'permissions', 'get_latest_by',\n                 'order_with_respect_to', 'app_label', 'db_tablespace',\n                 'abstract', 'managed', 'proxy', 'swappable', 'auto_created',\n                 'index_together')\n\nOptions 类记录了一个模块几乎所有的的信息, 属性, 外键, 模块名, 父模块等等, 可以轻松管理(设置获取)一个模块内的属性的信息.\n@python_2_unicode_compatible\nclass Options(object):\n    # app_label 模块名\n    def __init__(self, meta, app_label=None):\n        # 将多对多属性和其他属性分开存储, 是什么原因???\n        self.local_fields, self.local_many_to_many = [], []\n\n        self.virtual_fields = []\n        self.module_name, self.verbose_name = None, None\n        self.verbose_name_plural = None\n        self.db_table = ''\n        self.ordering = []\n        self.unique_together = []\n        self.index_together = []\n        self.permissions = []\n        self.object_name, self.app_label = None, app_label\n        self.get_latest_by = None\n        self.order_with_respect_to = None\n        self.db_tablespace = settings.DEFAULT_TABLESPACE\n        self.admin = None\n        self.meta = meta\n        self.pk = None\n        self.has_auto_field, self.auto_field = False, None\n        self.abstract = False\n        self.managed = True\n        self.proxy = False\n\n        # For any class that is a proxy (including automatically created\n        # classes for deferred object loading), proxy_for_model tells us\n        # which class this model is proxying. Note that proxy_for_model\n        # can create a chain of proxy models. For non-proxy models, the\n        # variable is always None.\n        self.proxy_for_model = None\n\n        # For any non-abstract class, the concrete class is the model\n        # in the end of the proxy_for_model chain. In particular, for\n        # concrete models, the concrete_model is always the class itself.\n        self.concrete_model = None\n\n        self.swappable = None\n        self.parents = SortedDict()\n\n        # 如果两个属性同时关联两个外部表, 比如两个外键的时候, 需要创建一个集合.\n        self.duplicate_targets = {}\n\n        self.auto_created = False\n\n        # To handle various inheritance situations, we need to track where\n        # managers came from (concrete or abstract base classes).\n        self.abstract_managers = []\n        self.concrete_managers = []\n\n        # List of all lookups defined in ForeignKey 'limit_choices_to' options\n        # from *other* models. Needed for some admin checks. Internal use only.\n        # 仅供内部使用\n        self.related_fkey_lookups = []\n\n    def contribute_to_class(self, cls, name):\n        # 参数说明\n        # cls: 是一个 model 实例\n        # name: model 的名字\n\n        from django.db import connection\n        from django.db.backends.util import truncate_name\n\n        # 将自己挂钩到 cls._meta, 即挂钩到一个 model\n        cls._meta = self\n\n        # 是否已经安装\n        self.installed = re.sub('\\.models$', '', cls.__module__) in settings.INSTALLED_APPS\n\n        # First, construct the default values for these options.\n        self.object_name = cls.__name__\n        self.module_name = self.object_name.lower()\n        self.verbose_name = get_verbose_name(self.object_name)\n\n        # Next, apply any overridden values from 'class Meta'.\n        # 将数据从 slef.meta 中拷贝出来\n        if self.meta:\n            meta_attrs = self.meta.__dict__.copy()\n            for name in self.meta.__dict__:\n                # Ignore any private attributes that Django doesn't care about.\n                # NOTE: We can't modify a dictionary's contents while looping\n                # over it, so we loop over the *original* dictionary instead.\n                if name.startswith('_'):\n                    del meta_attrs[name]\n\n            for attr_name in DEFAULT_NAMES:\n                if attr_name in meta_attrs:\n                    setattr(self, attr_name, meta_attrs.pop(attr_name))\n\n                elif hasattr(self.meta, attr_name):\n                    setattr(self, attr_name, getattr(self.meta, attr_name))\n\n            # unique_together can be either a tuple of tuples, or a single\n            # tuple of two strings. Normalize it to a tuple of tuples, so that\n            # calling code can uniformly expect that.\n            ut = meta_attrs.pop('unique_together', self.unique_together)\n            if ut and not isinstance(ut[0], (tuple, list)):\n                ut = (ut,)\n            self.unique_together = ut\n\n            # verbose_name_plural is a special case because it uses a 's'\n            # by default.\n            # 详细名称的复数 ???\n            if self.verbose_name_plural is None:\n                self.verbose_name_plural = string_concat(self.verbose_name, 's')\n\n            # Any leftover attributes must be invalid.\n            # 除了以上属性, 其他都是无效的, 异常\n            if meta_attrs != {}:\n                raise TypeError(\"'class Meta' got invalid attribute(s): %s\" % ','.join(meta_attrs.keys()))\n        else:\n            self.verbose_name_plural = string_concat(self.verbose_name, 's')\n\n        # 居然直接删除, 是因为所有的属性都已经拷贝出来了???\n        del self.meta\n\n        # If the db_table wasn't provided, use the app_label + module_name.\n        if not self.db_table:\n            self.db_table = \"%s_%s\" % (self.app_label, self.module_name)\n            self.db_table = truncate_name(self.db_table, connection.ops.max_name_length())\n\n    def _prepare(self, model):\n        # 排序的属性\n        if self.order_with_respect_to:\n            self.order_with_respect_to = self.get_field(self.order_with_respect_to)\n\n            self.ordering = ('_order',)\n            model.add_to_class('_order', OrderWrt())\n        else:\n            self.order_with_respect_to = None\n\n        if self.pk is None:\n            if self.parents:\n                # Promote 促进, 提升 the first parent link in lieu of adding yet another\n                # field.\n                field = next(six.itervalues(self.parents))\n\n                # Look for a local field with the same name as the\n                # first parent link. If a local field has already been\n                # created, use it instead of promoting the parent\n                already_created = [fld for fld in self.local_fields if fld.name == field.name]\n\n                if already_created:\n                    field = already_created[0]\n\n                field.primary_key = True\n                self.setup_pk(field)\n            else:\n                auto = AutoField(verbose_name='ID', primary_key=True,\n                        auto_created=True)\n                model.add_to_class('id', auto)\n\n        # 如果两个属性同时关联两个外部表, 比如两个外键的时候, 需要创建一个集合.\n        # Determine any sets of fields that are pointing to the same targets\n        # (e.g. two ForeignKeys to the same remote model). The query\n        # construction code needs to know this. At the end of this,\n        # self.duplicate_targets will map each duplicate field column to the\n        # columns it duplicates.\n        collections = {}\n        for column, target in six.iteritems(self.duplicate_targets):\n\n            try:\n                collections[target].add(column)\n            except KeyError:\n                collections[target] = set([column])\n\n        self.duplicate_targets = {}\n        for elt in six.itervalues(collections):\n            if len(elt) == 1:\n                continue\n\n            for column in elt:\n                # elt_set - set([column])\n                self.duplicate_targets[column] = elt.difference(set([column]))\n\n    def add_field(self, field):\n        # Insert the given field in the order in which it was created, using\n        # the \"creation_counter\" attribute of the field.\n        # Move many-to-many related fields from self.fields into\n        # self.many_to_many.\n\n        # 重申一遍, field.rel 是 ***Rel 类, 在 django.db.models.fields.related.py 中可见找到\n        if field.rel and isinstance(field.rel, ManyToManyRel):\n            # 在 self.local_many_to_many 表中添加记录\n            self.local_many_to_many.insert(bisect(self.local_many_to_many, field), field)\n\n            if hasattr(self, '_m2m_cache'):\n                del self._m2m_cache\n        else:\n            # 其他情况插入 self.local_fields 表中,\n            self.local_fields.insert(bisect(self.local_fields, field), field)\n            self.setup_pk(field)\n\n            if hasattr(self, '_field_cache'):\n                del self._field_cache\n                del self._field_name_cache\n        \"\"\"\n        从上面可以看出,\n         - self.local_many_to_many list 记录的是外部的属性, 可以是外键\n         - self.local_fields 记录的是本表自己的属性\n        \"\"\"\n\n        if hasattr(self, '_name_map'):\n            del self._name_map\n\n    ???\n    def add_virtual_field(self, field):\n        self.virtual_fields.append(field)\n\n    def setup_pk(self, field):\n        if not self.pk and field.primary_key:\n            self.pk = field\n            field.serialize = False\n\n    def pk_index(self):\n        \"\"\"\n        Returns the index of the primary key field in the self.fields list.\n        \"\"\"\n        return self.fields.index(self.pk)\n\n    代理 ???\n    def setup_proxy(self, target):\n        \"\"\"\n        Does the internal setup so that the current model is a proxy for\n        \"target\".\n        \"\"\"\n        self.pk = target._meta.pk\n        self.proxy_for_model = target\n        self.db_table = target._meta.db_table\n\n    def __repr__(self):\n        return '<Options for %s>' % self.object_name\n\n    def __str__(self):\n        return \"%s.%s\" % (smart_text(self.app_label), smart_text(self.module_name))\n\n    def verbose_name_raw(self):\n        \"\"\"\n        There are a few places where the untranslated verbose name is needed\n        (so that we get the same value regardless of currently active\n        locale).\n        \"\"\"\n        lang = get_language()\n        deactivate_all()\n        raw = force_text(self.verbose_name)\n        activate(lang)\n        return raw\n    verbose_name_raw = property(verbose_name_raw)\n\n    ???\n    def _swapped(self):\n        \"\"\"\n        Has this model been swapped out for another? If so, return the model\n        name of the replacement; otherwise, return None.\n\n        For historical reasons, model name lookups using get_model() are\n        case insensitive, so we make sure we are case insensitive here.\n        \"\"\"\n        if self.swappable:\n            model_label = '%s.%s' % (self.app_label, self.object_name.lower())\n            swapped_for = getattr(settings, self.swappable, None)\n            if swapped_for:\n                try:\n                    swapped_label, swapped_object = swapped_for.split('.')\n                except ValueError:\n                    # setting not in the format app_label.model_name\n                    # raising ImproperlyConfigured here causes problems with\n                    # test cleanup code - instead it is raised in get_user_model\n                    # or as part of validation.\n                    return swapped_for\n\n                if '%s.%s' % (swapped_label, swapped_object.lower()) not in (None, model_label):\n                    return swapped_for\n        return None\n    swapped = property(_swapped)\n\n    def _fields(self):\n        \"\"\"\n        返回这个模块的所有属性\n\n        The getter for self.fields. This returns the list of field objects\n        available to this model (including through parent models).\n\n        Callers are not permitted to modify this list, since it's a reference\n        to this instance (not a copy).\n        \"\"\"\n        try:\n            # 在上面没有看到 self._field_name_cache ???\n            self._field_name_cache\n        except AttributeError:\n            # 如果出错, 在这里修复\n            self._fill_fields_cache()\n        return self._field_name_cache\n    # 方便访问, 修饰器\n    fields = property(_fields)\n\n    def get_fields_with_model(self):\n        \"\"\"\n        返回属性-模块对, 容易区分那个属性属于哪个类\n\n        Returns a sequence of (field, model) pairs for all fields. The \"model\"\n        element is None for fields on the current model. Mostly of use when\n        constructing queries so that we know which model a field belongs to.\n        \"\"\"\n        try:\n            self._field_cache\n        except AttributeError:\n            # 如果出错, 在这里修复\n            self._fill_fields_cache()\n        return self._field_cache\n\n    def _fill_fields_cache(self):\n        cache = []\n\n        # 先收集父模块的所有属性\n        for parent in self.parents:\n            # parent._meta.get_fields_with_model() 就是调用这个 Options 类的 get_fields_with_model() 方法\n            for field, model in parent._meta.get_fields_with_model():\n                if model:\n                    cache.append((field, model))\n                else:\n                    cache.append((field, parent))\n\n        # 再收集自己的属性\n        cache.extend([(f, None) for f in self.local_fields])\n        self._field_cache = tuple(cache)\n\n        # self._field_name_cache 只记录表属性名\n        self._field_name_cache = [x for x, _ in cache]\n\n    def _many_to_many(self):\n        try:\n            self._m2m_cache\n        except AttributeError:\n            # 如果出错, 在这里修复\n            self._fill_m2m_cache()\n        return list(self._m2m_cache)\n    many_to_many = property(_many_to_many)\n\n    def get_m2m_with_model(self):\n        \"\"\"\n        The many-to-many version of get_fields_with_model().\n        \"\"\"\n        try:\n            self._m2m_cache\n        except AttributeError:\n            # 如果出错, 在这里修复\n            self._fill_m2m_cache()\n        return list(six.iteritems(self._m2m_cache))\n\n    def _fill_m2m_cache(self):\n        cache = SortedDict()\n\n        # 先收集父模块的所有 many_to_many 属性\n        for parent in self.parents:\n            for field, model in parent._meta.get_m2m_with_model():\n                if model:\n                    cache[field] = model\n                else:\n                    cache[field] = parent\n\n        # 再收集自己的 many_to_many 属性\n        for field in self.local_many_to_many:\n            cache[field] = None\n        self._m2m_cache = cache\n\n    def get_field(self, name, many_to_many=True):\n        \"\"\"\n        Returns the requested field by name. Raises FieldDoesNotExist on error.\n        \"\"\"\n        # 三目运算符的语句\n        to_search = many_to_many and (self.fields + self.many_to_many) or self.fields\n\n        for f in to_search:\n            if f.name == name:\n                return f\n        raise FieldDoesNotExist('%s has no field named %r' % (self.object_name, name))\n\n    def get_field_by_name(self, name):\n        \"\"\"\n        Returns the (field_object, model, direct, m2m), where field_object is\n        the Field instance for the given name, model is the model containing\n        this field (None for local fields), direct is True if the field exists\n        on this model, and m2m is True for many-to-many relations. When\n        'direct' is False, 'field_object' is the corresponding RelatedObject\n        for this field (since the field doesn't have an instance associated\n        with it).\n\n        Uses a cache internally, so after the first access, this is very fast.\n        \"\"\"\n        try:\n            try:\n                return self._name_map[name]\n            except AttributeError:\n                cache = self.init_name_map()\n                return cache[name]\n        except KeyError:\n            raise FieldDoesNotExist('%s has no field named %r'\n                    % (self.object_name, name))\n\n    def get_all_field_names(self):\n        \"\"\"\n        Returns a list of all field names that are possible for this model\n        (including reverse relation names). This is used for pretty printing\n        debugging output (a list of choices), so any internal-only field names\n        are not included.\n        \"\"\"\n        try:\n            cache = self._name_map\n        except AttributeError:\n            cache = self.init_name_map()\n        names = sorted(cache.keys())\n        # Internal-only names end with \"+\" (symmetrical m2m related names being\n        # the main example). Trim them.\n        return [val for val in names if not val.endswith('+')]\n\n    def init_name_map(self):\n        \"\"\"\n        Initialises the field name -> field object mapping.\n        \"\"\"\n        cache = {}\n        # We intentionally handle related m2m objects first so that symmetrical\n        # m2m accessor names can be overridden, if necessary.\n        for f, model in self.get_all_related_m2m_objects_with_model():\n            cache[f.field.related_query_name()] = (f, model, False, True)\n\n        for f, model in self.get_all_related_objects_with_model():\n            cache[f.field.related_query_name()] = (f, model, False, False)\n\n        for f, model in self.get_m2m_with_model():\n            cache[f.name] = (f, model, True, True)\n\n        for f, model in self.get_fields_with_model():\n            cache[f.name] = (f, model, True, False)\n\n        ???\n        if app_cache_ready():\n            self._name_map = cache\n\n        return cache\n\n    def get_add_permission(self):\n        return 'add_%s' % self.object_name.lower()\n\n    def get_change_permission(self):\n        return 'change_%s' % self.object_name.lower()\n\n    def get_delete_permission(self):\n        return 'delete_%s' % self.object_name.lower()\n\n###########################\n下面的六个方法给我的感觉是核心, 但现在还不知道作用在哪里 ???\n猜测: 返回关联集合的对象, Model 类型 ???\n###########################\n\n    def get_all_related_objects(self, local_only=False, include_hidden=False,\n                                include_proxy_eq=False):\n        return [k for k, v in self.get_all_related_objects_with_model(\n                local_only=local_only, include_hidden=include_hidden,\n                include_proxy_eq=include_proxy_eq)]\n\n    def get_all_related_objects_with_model(self, local_only=False,\n                                           include_hidden=False,\n                                           include_proxy_eq=False):\n        \"\"\"\n        Returns a list of (related-object, model) pairs. Similar to\n        get_fields_with_model().\n        \"\"\"\n        try:\n            self._related_objects_cache\n        except AttributeError:\n            # 如果出错, 在这里修复\n            self._fill_related_objects_cache()\n\n        predicates = []\n\n        if local_only:\n            predicates.append(lambda k, v: not v)\n        if not include_hidden:\n            predicates.append(lambda k, v: not k.field.rel.is_hidden())\n\n        cache = (self._related_objects_proxy_cache if include_proxy_eq\n                 else self._related_objects_cache)\n        return [t for t in cache.items() if all(p(*t) for p in predicates)] #p(*t) p 是一个函数, all 表示要满足所有的条件\n\n    def _fill_related_objects_cache(self):\n        cache = SortedDict()\n        parent_list = self.get_parent_list()\n\n        for parent in self.parents:\n            for obj, model in parent._meta.get_all_related_objects_with_model(include_hidden=True):\n\n                if (obj.field.creation_counter < 0 or obj.field.rel.parent_link) and obj.model not in parent_list:\n                    continue\n\n                if not model:\n                    cache[obj] = parent\n                else:\n                    cache[obj] = model\n\n        # Collect also objects which are in relation to some proxy child/parent of self.\n        proxy_cache = cache.copy()\n        for klass in get_models(include_auto_created=True, only_installed=False):\n            if not klass._meta.swapped:\n                # 遍历所有的表内属性\n                for f in klass._meta.local_fields:\n                    if f.rel and not isinstance(f.rel.to, six.string_types):\n                        # 如果属性所关联的表是自己\n                        if self == f.rel.to._meta:\n                            cache[RelatedObject(f.rel.to, klass, f)] = None\n                            proxy_cache[RelatedObject(f.rel.to, klass, f)] = None\n                        # 关于 self.concrete_model 参见 self.__init__() 中的说明\n                        elif self.concrete_model == f.rel.to._meta.concrete_model:\n                            proxy_cache[RelatedObject(f.rel.to, klass, f)] = None\n        # 从上面来看, cache 记录的是一个键为 RelatedObject, 值为 None 的映射. 而 RelatedObject 中记录了属性关联表的信息.\n        self._related_objects_cache = cache\n        self._related_objects_proxy_cache = proxy_cache\n\n    def get_all_related_many_to_many_objects(self, local_only=False):\n        try:\n            cache = self._related_many_to_many_cache\n        except AttributeError:\n            cache = self._fill_related_many_to_many_cache()\n        if local_only:\n            return [k for k, v in cache.items() if not v]\n        return list(cache)\n\n    def get_all_related_m2m_objects_with_model(self):\n        \"\"\"\n        Returns a list of (related-m2m-object, model) pairs. Similar to\n        get_fields_with_model().\n        \"\"\"\n        try:\n            cache = self._related_many_to_many_cache\n        except AttributeError:\n            cache = self._fill_related_many_to_many_cache()\n        return list(six.iteritems(cache))\n\n    def _fill_related_many_to_many_cache(self):\n        cache = SortedDict()\n        parent_list = self.get_parent_list()\n        for parent in self.parents:\n            for obj, model in parent._meta.get_all_related_m2m_objects_with_model():\n                if obj.field.creation_counter < 0 and obj.model not in parent_list:\n                    continue\n                if not model:\n                    cache[obj] = parent\n                else:\n                    cache[obj] = model\n        for klass in get_models(only_installed=False):\n            if not klass._meta.swapped:\n                for f in klass._meta.local_many_to_many:\n                    if (f.rel\n                            and not isinstance(f.rel.to, six.string_types)\n                            and self == f.rel.to._meta):\n                        cache[RelatedObject(f.rel.to, klass, f)] = None\n        if app_cache_ready():\n            self._related_many_to_many_cache = cache\n        return cache\n\n    def get_base_chain(self, model):\n        \"\"\"\n        Returns a list of parent classes leading to 'model' (order from closet\n        to most distant ancestor). This has to handle the case were 'model' is\n        a granparent or even more distant relation.\n        \"\"\"\n        if not self.parents:\n            return\n        if model in self.parents:\n            return [model]\n        for parent in self.parents:\n            res = parent._meta.get_base_chain(model)\n            if res:\n                res.insert(0, parent)\n                return res\n        raise TypeError('%r is not an ancestor of this model'\n                % model._meta.module_name)\n\n    def get_parent_list(self):\n        \"\"\"\n        Returns a list of all the ancestor of this model as a list. Useful for\n        determining if something is an ancestor, regardless of lineage.\n        \"\"\"\n        result = set()\n        for parent in self.parents:\n            result.add(parent)\n            # 添加父亲的父亲\n            result.update(parent._meta.get_parent_list())\n        return result\n    ???\n    def get_ancestor_link(self, ancestor):\n        \"\"\"\n        Returns the field on the current model which points to the given\n        \"ancestor\". This is possible an indirect link (a pointer to a parent\n        model, which points, eventually, to the ancestor). Used when\n        constructing table joins for model inheritance.\n\n        Returns None if the model isn't an ancestor of this one.\n        \"\"\"\n        # 如果直接能再 parents 中找到\n        if ancestor in self.parents:\n            return self.parents[ancestor]\n\n        for parent in self.parents:\n            # Tries to get a link field from the immediate parent\n            # 跨代连接问题\n            parent_link = parent._meta.get_ancestor_link(ancestor)\n            if parent_link:\n                # In case of a proxied model, the first link\n                # of the chain to the ancestor is that parent\n                # links\n                return self.parents[parent] or parent_link\n\n    def get_ordered_objects(self):\n        \"Returns a list of Options objects that are ordered with respect to this object.\"\n        if not hasattr(self, '_ordered_objects'):\n            objects = []\n            # TODO\n            #for klass in get_models(get_app(self.app_label)):\n            #    opts = klass._meta\n            #    if opts.order_with_respect_to and opts.order_with_respect_to.rel \\\n            #        and self == opts.order_with_respect_to.rel.to._meta:\n            #        objects.append(opts)\n            self._ordered_objects = objects\n        return self._ordered_objects\n"
  },
  {
    "path": "Django-1.5.1/django/db/models/query.py",
    "content": "\"\"\"\nThe main QuerySet implementation. This provides the public API for the ORM.\n\"\"\"\n\nimport copy\nimport itertools\nimport sys\nimport warnings\n\nfrom django.core import exceptions\nfrom django.db import connections, router, transaction, IntegrityError\nfrom django.db.models.constants import LOOKUP_SEP\nfrom django.db.models.fields import AutoField\nfrom django.db.models.query_utils import (Q, select_related_descend,\n    deferred_class_factory, InvalidQuery)\nfrom django.db.models.deletion import Collector\nfrom django.db.models import sql\nfrom django.utils.functional import partition\nfrom django.utils import six\n\n# Used to control how many objects are worked with at once in some cases (e.g.\n# when deleting objects).\nCHUNK_SIZE = 100\nITER_CHUNK_SIZE = CHUNK_SIZE\n\n# The maximum number of items to display in a QuerySet.__repr__\nREPR_OUTPUT_SIZE = 20\n\n# Pull into this namespace for backwards compatibility.\nEmptyResultSet = sql.EmptyResultSet\n\nclass QuerySet(object):\n    \"\"\"\n    Represents a lazy database lookup for a set of objects.\n    \"\"\"\n    def __init__(self, model=None, query=None, using=None):\n        self.model = model\n\n        # EmptyQuerySet instantiates QuerySet with model as None\n        # self._db == using == \"default\" !!!!\n        self._db = using\n\n        self.query = query or sql.Query(self.model) 可以是 Query 对象\n\n        self._result_cache = None\n        self._iter = None\n        self._sticky_filter = False\n        self._for_write = False\n        self._prefetch_related_lookups = []\n        self._prefetch_done = False\n        self._known_related_objects = {}        # {rel_field, {pk: rel_obj}}\n\n    ########################\n    # PYTHON MAGIC METHODS #\n    ########################\n\n    def __deepcopy__(self, memo):\n        \"\"\"\n        Deep copy of a QuerySet doesn't populate the cache\n        不拷贝 ('_iter','_result_cache')\n        \"\"\"\n        # 实例化\n        obj = self.__class__()\n\n        for k,v in self.__dict__.items():\n            if k in ('_iter','_result_cache'):\n                obj.__dict__[k] = None\n            else:\n                obj.__dict__[k] = copy.deepcopy(v, memo)\n\n        return obj\n\n    def __getstate__(self):\n        \"\"\"\n        Allows the QuerySet to be pickled.\n        \"\"\"\n        # Force the cache to be fully populated.\n        len(self)\n\n        obj_dict = self.__dict__.copy()\n        obj_dict['_iter'] = None\n        return obj_dict\n\n    def __repr__(self):\n        # REPR_OUTPUT_SIZE == 20, 最多输出 20 项\n        data = list(self[:REPR_OUTPUT_SIZE + 1])\n        if len(data) > REPR_OUTPUT_SIZE:\n            data[-1] = \"...(remaining elements truncated)...\"\n        return repr(data)\n\n    def __len__(self):\n        # Since __len__ is called quite frequently (for example, as part of\n        # list(qs), we make some effort here to be as efficient as possible\n        # whilst not messing up any existing iterators against the QuerySet.\n        if self._result_cache is None:\n            # QuerySet._result_cache 是在这里赋值\n            if self._iter:\n                self._result_cache = list(self._iter)\n            else:\n                self._result_cache = list(self.iterator())\n\n        elif self._iter:\n            self._result_cache.extend(self._iter)\n\n        # 如果有关联表, 也需要预提取, 他会填充 self._result_cache\n        if self._prefetch_related_lookups and not self._prefetch_done:\n            self._prefetch_related_objects()\n\n        return len(self._result_cache)\n\n    def __iter__(self):\n        # 如果没有预提取, 调用 __len__(), 因为他做的事情一样, 为的是减少代码\n        if self._prefetch_related_lookups and not self._prefetch_done:\n\n            # We need all the results in order to be able to do the prefetch\n            # in one go. To minimize code duplication, we use the __len__\n            # code path which also forces this, and also does the prefetch\n            len(self)\n\n        # 如果还是空\n        if self._result_cache is None:\n            self._iter = self.iterator()\n            这个时候, self._result_cache 依旧是空的,\n            self._result_cache = []\n\n        if self._iter:\n            return self._result_iter()\n\n        # Python's list iterator is better than our version when we're just\n        # iterating over the cache.\n        return iter(self._result_cache)\n\n    # 结果迭代器\n    def _result_iter(self):\n        pos = 0\n        while 1:\n            upper = len(self._result_cache)\n            while pos < upper:\n                # python yield 产生一个结果返回\n                yield self._result_cache[pos]\n                pos = pos + 1\n\n            # 如果 self._iter 为空, 将停止迭代, 引起迭代异常\n            if not self._iter:\n                raise StopIteration\n\n            # 调用 self._fill_cache() 加载数据\n            if len(self._result_cache) <= pos:\n                self._fill_cache()\n    \"\"\"\n    将缓存填满\n    def _fill_cache(self, num=None):\n        if self._iter:\n            try:\n                for i in range(num or ITER_CHUNK_SIZE):\n                    self._result_cache.append(next(self._iter))\n            except StopIteration:\n                self._iter = None\n    \"\"\"\n\n    def __bool__(self):\n\n        # 如果没有预提取, 调用 __len__(), 因为他做的事情一样, 为的是减少代码\n        if self._prefetch_related_lookups and not self._prefetch_done:\n            # We need all the results in order to be able to do the prefetch\n            # in one go. To minimize code duplication, we use the __len__\n            # code path which also forces this, and also does the prefetch\n            len(self)\n\n        if self._result_cache is not None:\n            return bool(self._result_cache)\n\n        try:\n            # 试着迭代\n            next(iter(self))\n        except StopIteration:\n            return False\n\n        return True\n\n    def __nonzero__(self):      # Python 2 compatibility\n        return type(self).__bool__(self)\n\n    def __contains__(self, val):\n        # a in (a,b,c) !!!\n        # The 'in' operator works without this method, due to __iter__. This\n        # implementation exists only to shortcut the creation of Model\n        # instances, by bailing out early if we find a matching element.\n        pos = 0\n        if self._result_cache is not None:\n            if val in self._result_cache:\n                return True\n            elif self._iter is None:\n                # iterator is exhausted, so we have our answer\n                return False\n            # remember not to check these again:\n            pos = len(self._result_cache)\n        else:\n            # We need to start filling the result cache out. The following\n            # ensures that self._iter is not None and self._result_cache is not\n            # None\n            it = iter(self)\n\n        # Carry on, one result at a time.\n        while True:\n            if len(self._result_cache) <= pos:\n                self._fill_cache(num=1)\n            if self._iter is None:\n                # we ran out of items\n                return False\n            if self._result_cache[pos] == val:\n                return True\n            pos += 1\n\n    def __getitem__(self, k):\n        \"\"\"\n        检索所有的表项, 可能还需要切割.\n        Retrieves an item or slice from the set of results.\n        \"\"\"\n\n        # k 可能是一个整数或者是 slice 对象, 要分开处理.\n        if not isinstance(k, (slice,) + six.integer_types):\n            raise TypeError\n\n        assert ((not isinstance(k, slice) and (k >= 0))\n                or (isinstance(k, slice) and (k.start is None or k.start >= 0)\n                    and (k.stop is None or k.stop >= 0))), \\\n                \"Negative indexing is not supported.\"\n\n        if self._result_cache is not None:\n            if self._iter is not None:\n                # The result cache has only been partially populated, so we may\n                # need to fill it out a bit more.\n                if isinstance(k, slice):\n                    if k.stop is not None:\n                        # Some people insist on passing in strings here.\n                        bound = int(k.stop)\n                    else:\n                        bound = None\n                else:\n                    bound = k + 1\n\n                if len(self._result_cache) < bound:\n                    self._fill_cache(bound - len(self._result_cache))\n\n            return self._result_cache[k]\n\n        if isinstance(k, slice):\n\n            # 拷贝一份??\n            qs = self._clone()\n\n            if k.start is not None:\n                start = int(k.start)\n            else:\n                start = None\n\n            if k.stop is not None:\n                stop = int(k.stop)\n            else:\n                stop = None\n\n            qs.query.set_limits(start, stop)\n            return k.step and list(qs)[::k.step] or qs\n        try:\n            qs = self._clone()\n            qs.query.set_limits(k, k + 1)\n            return list(qs)[0]\n        except self.model.DoesNotExist as e:\n            raise IndexError(e.args)\n???\n    def __and__(self, other):\n        self._merge_sanity_check(other)\n\n        if isinstance(other, EmptyQuerySet):\n            return other._clone()\n\n        combined = self._clone()\n        combined._merge_known_related_objects(other)\n        combined.query.combine(other.query, sql.AND)\n        return combined\n???\n    def __or__(self, other):\n        self._merge_sanity_check(other)\n        combined = self._clone()\n        if isinstance(other, EmptyQuerySet):\n            return combined\n        combined._merge_known_related_objects(other)\n        combined.query.combine(other.query, sql.OR)\n        return combined\n\n    ####################################\n    # METHODS THAT DO DATABASE QUERIES # 数据库查询方法\n    ####################################\n\n    def iterator(self):\n        \"\"\"\n        An iterator over the results from applying this QuerySet to the\n        database.\n        \"\"\"\n        fill_cache = False\n        if connections[self.db].features.supports_select_related:\n            fill_cache = self.query.select_related ???\n\n        if isinstance(fill_cache, dict):\n            requested = fill_cache\n        else:\n            requested = None\n\n        # 应为递归深度\n        max_depth = self.query.max_depth\n\n        extra_select = list(self.query.extra_select)\n        aggregate_select = list(self.query.aggregate_select)\n\n        only_load = self.query.get_loaded_field_names()\n\n        if not fill_cache:\n            fields = self.model._meta.fields\n\n        load_fields = []\n\n        # If only/defer clauses have been specified,\n        # build the list of fields that are to be loaded.\n        if only_load:\n            for field, model in self.model._meta.get_fields_with_model():\n                if model is None:\n                    model = self.model\n\n                try:\n                    if field.name in only_load[model]:\n                        # Add a field that has been explicitly included\n                        load_fields.append(field.name)\n\n                except KeyError:\n                    # Model wasn't explicitly listed in the only_load table\n                    # Therefore, we need to load all fields from this model\n                    load_fields.append(field.name)\n\n        index_start = len(extra_select)\n        aggregate_start = index_start + len(load_fields or self.model._meta.fields)\n\n        skip = None\n        if load_fields and not fill_cache:\n            # Some fields have been deferred, so we have to initialise\n            # via keyword arguments.\n            skip = set()\n            init_list = []\n            for field in fields:\n                if field.name not in load_fields:\n                    skip.add(field.attname)\n                else:\n                    init_list.append(field.attname)\n\n            model_cls = deferred_class_factory(self.model, skip)\n\n        # Cache db and model outside the loop\n        db = self.db\n        model = self.model\n        compiler = self.query.get_compiler(using=db)\n\n        if fill_cache:\n            klass_info = get_klass_info(model, max_depth=max_depth,\n                                        requested=requested, only_load=only_load)\n\n        for row in compiler.results_iter():\n            if fill_cache:\n                obj, _ = get_cached_row(row, index_start, db, klass_info,\n                                        offset=len(aggregate_select))\n            else:\n                # Omit aggregates in object creation.\n                row_data = row[index_start:aggregate_start]\n                if skip:\n                    obj = model_cls(**dict(zip(init_list, row_data)))\n                else:\n                    obj = model(*row_data)\n\n                # Store the source database of the object\n                obj._state.db = db\n                # This object came from the database; it's not being added.\n                obj._state.adding = False\n\n            if extra_select:\n                for i, k in enumerate(extra_select):\n                    setattr(obj, k, row[i])\n\n            # Add the aggregates to the model\n            if aggregate_select:\n                for i, aggregate in enumerate(aggregate_select):\n                    setattr(obj, aggregate, row[i + aggregate_start])\n\n            # Add the known related objects to the model, if there are any\n            if self._known_related_objects:\n                for field, rel_objs in self._known_related_objects.items():\n                    pk = getattr(obj, field.get_attname())\n                    try:\n                        rel_obj = rel_objs[pk]\n                    except KeyError:\n                        pass               # may happen in qs1 | qs2 scenarios\n                    else:\n                        setattr(obj, field.name, rel_obj)\n\n            yield obj\n\n    def aggregate(self, *args, **kwargs):\n        \"\"\"\n        Returns a dictionary containing the calculations (aggregation)\n        over the current queryset\n\n        If args is present the expression is passed as a kwarg using\n        the Aggregate object's default alias.\n        \"\"\"\n        if self.query.distinct_fields:\n            raise NotImplementedError(\"aggregate() + distinct(fields) not implemented.\")\n\n        for arg in args:\n            kwargs[arg.default_alias] = arg\n\n        query = self.query.clone()\n\n        for (alias, aggregate_expr) in kwargs.items():\n            query.add_aggregate(aggregate_expr, self.model, alias,\n                is_summary=True)\n\n        return query.get_aggregation(using=self.db)\n\n    def count(self):\n        \"\"\"\n        Performs a SELECT COUNT() and returns the number of records as an\n        integer.\n\n        If the QuerySet is already fully cached this simply returns the length\n        of the cached results set to avoid multiple SELECT COUNT(*) calls.\n        \"\"\"\n        # 如果结果已经被缓存\n        if self._result_cache is not None and not self._iter:\n            return len(self._result_cache)\n\n        return self.query.get_count(using=self.db)\n\n    def get(self, *args, **kwargs):\n        \"\"\"\n        Performs the query and returns a single object matching the given\n        keyword arguments.\n        \"\"\"\n        clone = self.filter(*args, **kwargs)\n\n        if self.query.can_filter():\n            clone = clone.order_by()\n\n        num = len(clone)\n        if num == 1:\n            return clone._result_cache[0]\n\n        # 如果结果不存在, 将异常\n        if not num:\n            raise self.model.DoesNotExist(\n                \"%s matching query does not exist. \"\n                \"Lookup parameters were %s\" %\n                (self.model._meta.object_name, kwargs))\n\n        raise self.model.MultipleObjectsReturned(\n            \"get() returned more than one %s -- it returned %s! \"\n            \"Lookup parameters were %s\" %\n            (self.model._meta.object_name, num, kwargs))\n\n    def create(self, **kwargs):\n        \"\"\"\n        Creates a new object with the given kwargs, saving it to the database\n        and returning the created object.\n        \"\"\"\n        # 实例化???\n        obj = self.model(**kwargs)\n        self._for_write = True\n        obj.save(force_insert=True, using=self.db)\n        return obj\n???\n    def bulk_create(self, objs, batch_size=None):\n        \"\"\"\n        Inserts each of the instances into the database. This does *not* call\n        save() on each of the instances, does not send any pre/post save\n        signals, and does not set the primary key attribute if it is an\n        autoincrement field.\n        \"\"\"\n        # So this case is fun. When you bulk insert you don't get the primary\n        # keys back (if it's an autoincrement), so you can't insert into the\n        # child tables which references this. There are two workarounds, 1)\n        # this could be implemented if you didn't have an autoincrement pk,\n        # and 2) you could do it by doing O(n) normal inserts into the parent\n        # tables to get the primary keys back, and then doing a single bulk\n        # insert into the childmost table. Some databases might allow doing\n        # this by using RETURNING clause for the insert query. We're punting\n        # on these for now because they are relatively rare cases.\n        assert batch_size is None or batch_size > 0\n\n        如果 model 为子模块\n        if self.model._meta.parents:\n            raise ValueError(\"Can't bulk create an inherited model\")\n\n        if not objs:\n            return objs\n\n        self._for_write = True\n        connection = connections[self.db]\n        fields = self.model._meta.local_fields\n\n        if not transaction.is_managed(using=self.db):\n            transaction.enter_transaction_management(using=self.db)\n            forced_managed = True\n        else:\n            forced_managed = False\n\n        try:\n            # 如果存在自增变量\n            if (connection.features.can_combine_inserts_with_and_without_auto_increment_pk\n                and self.model._meta.has_auto_field):\n                self._batched_insert(objs, fields, batch_size)\n            else:\n                # 有主键和无主键\n                objs_with_pk, objs_without_pk = partition(lambda o: o.pk is None, objs)\n\n                if objs_with_pk:\n                    self._batched_insert(objs_with_pk, fields, batch_size)\n\n                if objs_without_pk:\n                    # 过滤非 AutoField 属性\n                    fields= [f for f in fields if not isinstance(f, AutoField)]\n                    self._batched_insert(objs_without_pk, fields, batch_size)\n\n            if forced_managed:\n                transaction.commit(using=self.db)\n            else:\n                transaction.commit_unless_managed(using=self.db)\n        finally:\n            if forced_managed:\n                transaction.leave_transaction_management(using=self.db)\n\n        return objs\n???\n    def get_or_create(self, **kwargs):\n        \"\"\"\n        Looks up an object with the given kwargs, creating one if necessary.\n        Returns a tuple of (object, created), where created is a boolean\n        specifying whether an object was created.\n        \"\"\"\n        assert kwargs, \\\n                'get_or_create() must be passed at least one keyword argument'\n        defaults = kwargs.pop('defaults', {})\n        lookup = kwargs.copy()\n\n        for f in self.model._meta.fields:\n            if f.attname in lookup:\n                lookup[f.name] = lookup.pop(f.attname)\n\n        try:\n            self._for_write = True\n            return self.get(**lookup), False\n        except self.model.DoesNotExist:\n            try:\n                # 不存在, 可能需要创建一个返回 ???\n                params = dict([(k, v) for k, v in kwargs.items() if '__' not in k])\n                params.update(defaults)\n                obj = self.model(**params)\n                sid = transaction.savepoint(using=self.db)\n                obj.save(force_insert=True, using=self.db)\n                transaction.savepoint_commit(sid, using=self.db)\n                return obj, True\n            except IntegrityError as e:\n                transaction.savepoint_rollback(sid, using=self.db)\n                exc_info = sys.exc_info()\n                try:\n                    return self.get(**lookup), False\n                except self.model.DoesNotExist:\n                    # Re-raise the IntegrityError with its original traceback.\n                    six.reraise(*exc_info)\n\n    def latest(self, field_name=None):\n        \"\"\"\n        Returns the latest object, according to the model's 'get_latest_by'\n        option or optional given field_name.\n        \"\"\"\n        # 或者由 field_name 指定或者 option.get_latest_by 指定\n        latest_by = field_name or self.model._meta.get_latest_by\n\n        assert bool(latest_by), \"latest() requires either a field_name parameter or 'get_latest_by' in the model\"\n\n        assert self.query.can_filter(), \\\n                \"Cannot change a query once a slice has been taken.\"\n        obj = self._clone()\n        obj.query.set_limits(high=1)\n        obj.query.clear_ordering()\n        obj.query.add_ordering('-%s' % latest_by) 降序\n        return obj.get()\n\n    def in_bulk(self, id_list):\n        \"\"\"\n        Returns a dictionary mapping each of the given IDs to the object with\n        that ID.\n        \"\"\"\n        assert self.query.can_filter(), \\\n                \"Cannot use 'limit' or 'offset' with in_bulk\"\n\n        if not id_list:\n            return {}\n\n        qs = self.filter(pk__in=id_list).order_by()\n        return dict([(obj._get_pk_val(), obj) for obj in qs])\n\n    def delete(self):\n        \"\"\"\n        Deletes the records in the current QuerySet.\n        \"\"\"\n        assert self.query.can_filter(), \\\n                \"Cannot use 'limit' or 'offset' with delete.\"\n\n        del_query = self._clone()\n\n        # The delete is actually 2 queries - one to find related objects,\n        # and one to delete. Make sure that the discovery of related\n        # objects is performed on the same database as the deletion.\n        del_query._for_write = True\n\n        # Disable non-supported fields.\n        del_query.query.select_for_update = False\n        del_query.query.select_related = False\n        del_query.query.clear_ordering(force_empty=True)\n\n        collector = Collector(using=del_query.db) # 实例化\n        collector.collect(del_query) # 收集本实例中的 queryset\n        collector.delete() # 执行删除\n\n        # Clear the result cache, in case this QuerySet gets reused.\n        self._result_cache = None\n    delete.alters_data = True\n\n    def _raw_delete(self, using):\n        \"\"\"\n        Deletes objects found from the given queryset in single direct SQL\n        query. No signals are sent, and there is no protection for cascades.没有级联\n        \"\"\"\n        # 直接实例化调用删除\n        sql.DeleteQuery(self.model).delete_qs(self, using)\n\n    _raw_delete.alters_data = True\n\n# 更新方方法, 更新过后需要清空结果集缓存\n    def update(self, **kwargs):\n        \"\"\"\n        Updates all elements in the current QuerySet, setting all the given\n        fields to the appropriate values.\n        \"\"\"\n        assert self.query.can_filter(), \\\n                \"Cannot update a query once a slice has been taken.\"\n        self._for_write = True\n        query = self.query.clone(sql.UpdateQuery)\n        query.add_update_values(kwargs)\n\n        # 进入事务\n        if not transaction.is_managed(using=self.db):\n            transaction.enter_transaction_management(using=self.db)\n            forced_managed = True\n        else:\n            forced_managed = False\n\n        try:\n            执行更新\n            rows = query.get_compiler(self.db).execute_sql(None)\n            if forced_managed:\n                transaction.commit(using=self.db)\n            else:\n                transaction.commit_unless_managed(using=self.db)\n        finally:\n            if forced_managed:\n                transaction.leave_transaction_management(using=self.db)\n        # 更新后, 会清空结果集缓存\n        self._result_cache = None\n        return rows\n\n    update.alters_data = True\n\n    def _update(self, values):\n        \"\"\"\n        参数只接收具体的实例 accepts field objects instead of field names.\n\n        A version of update that accepts field objects instead of field names.\n        Used primarily for model saving and not intended for use by general\n        code (it requires too much poking around at model internals to be\n        useful at that level).\n        \"\"\"\n        assert self.query.can_filter(), \\\n                \"Cannot update a query once a slice has been taken.\"\n\n        query = self.query.clone(sql.UpdateQuery)\n\n        query.add_update_fields(values)\n        # 更新后, 会清空结果集缓存\n        self._result_cache = None\n\n        # 直接实例化调用删除\n        return query.get_compiler(self.db).execute_sql(None)\n    _update.alters_data = True\n\n    def exists(self):\n        # 如果没有缓存结果, 需要直接查询\n        if self._result_cache is None:\n            return self.query.has_results(using=self.db)\n\n        return bool(self._result_cache)\n\n    def _prefetch_related_objects(self):\n        # This method can only be called once the result cache has been filled.\n        只能被调用一次???\n        prefetch_related_objects(self._result_cache, self._prefetch_related_lookups)\n        # 预提取完成\n        self._prefetch_done = True\n\n    ##################################################\n    # PUBLIC METHODS THAT RETURN A QUERYSET SUBCLASS # 公开的方法\n    ##################################################\n\n    def values(self, *fields):\n        return self._clone(klass=ValuesQuerySet, setup=True, _fields=fields)\n\n    def values_list(self, *fields, **kwargs):\n        flat = kwargs.pop('flat', False)\n\n        if kwargs:\n            raise TypeError('Unexpected keyword arguments to values_list: %s'\n                    % (list(kwargs),))\n\n        if flat and len(fields) > 1:\n            raise TypeError(\"'flat' is not valid when values_list is called with more than one field.\")\n\n        return self._clone(klass=ValuesListQuerySet, setup=True, flat=flat,\n                _fields=fields)\n\n    def dates(self, field_name, kind, order='ASC'):\n        \"\"\"\n        Returns a list of datetime objects representing all available dates for\n        the given field_name, scoped to 'kind'.\n        \"\"\"\n        assert kind in (\"month\", \"year\", \"day\"), \\\n                \"'kind' must be one of 'year', 'month' or 'day'.\"\n\n        assert order in ('ASC', 'DESC'), \\\n                \"'order' must be either 'ASC' or 'DESC'.\"\n\n        return self._clone(klass=DateQuerySet, setup=True,\n                _field_name=field_name, _kind=kind, _order=order)\n\n    def none(self):\n        \"\"\"\n        Returns an empty QuerySet.\n        \"\"\"\n        return self._clone(klass=EmptyQuerySet)\n\n    ##################################################################\n    # PUBLIC METHODS THAT ALTER ATTRIBUTES AND RETURN A NEW QUERYSET #\n    ##################################################################\n\n    def all(self):\n        \"\"\"\n        只对自己做一次拷贝操作\n        Returns a new QuerySet that is a copy of the current one. This allows a\n        QuerySet to proxy for a model manager in some cases.\n        \"\"\"\n        return self._clone()\n\n    def filter(self, *args, **kwargs):\n        \"\"\"\n        在现有的 QuerySet 结果集中再次过滤\n\n        Returns a new QuerySet instance with the args ANDed to the existing\n        set.\n        \"\"\"\n        return self._filter_or_exclude(False, *args, **kwargs)\n\n    def exclude(self, *args, **kwargs):\n        \"\"\"\n        Returns a new QuerySet instance with NOT (args) ANDed to the existing\n        set.\n        \"\"\"\n        return self._filter_or_exclude(True, *args, **kwargs)\n???\n    def _filter_or_exclude(self, negate, *args, **kwargs):\n        if args or kwargs:\n            assert self.query.can_filter(), \\\n                    \"Cannot filter a query once a slice has been taken.\"\n\n        clone = self._clone()\n        if negate:\n            clone.query.add_q(~Q(*args, **kwargs))\n        else:\n            clone.query.add_q(Q(*args, **kwargs))\n        return clone\n\n    def complex_filter(self, filter_obj):\n        \"\"\"\n        Returns a new QuerySet instance with filter_obj added to the filters.\n\n        filter_obj can be a Q object (or anything with an add_to_query()\n        method) or a dictionary of keyword lookup arguments.\n\n        This exists to support framework features such as 'limit_choices_to',\n        and usually it will be more natural to use other methods.\n        \"\"\"\n        if isinstance(filter_obj, Q) or hasattr(filter_obj, 'add_to_query'):\n            clone = self._clone()\n            clone.query.add_q(filter_obj)\n            return clone\n        else:\n            return self._filter_or_exclude(None, **filter_obj)\n\n    def select_for_update(self, **kwargs):\n        \"\"\"\n        有关 update lock:\n        For index records the search encounters, SELECT ... FOR UPDATE blocks other sessions from doing SELECT ... LOCK IN SHARE MODE or from reading in certain transaction isolation levels. Consistent reads will ignore any locks set on the records that exist in the read view. (Old versions of a record cannot be locked; they will be reconstructed by applying undo logs on an in-memory copy of the record.)\n\n        Returns a new QuerySet instance that will select objects with a\n        FOR UPDATE lock.\n        \"\"\"\n        # Default to false for nowait\n        nowait = kwargs.pop('nowait', False)\n        obj = self._clone()\n        obj.query.select_for_update = True\n        obj.query.select_for_update_nowait = nowait\n        return obj\n\n    def select_related(self, *fields, **kwargs):\n        \"\"\"\n        Returns a new QuerySet instance that will select related objects.\n\n        If fields are specified, they must be ForeignKey fields and only those\n        related objects are included in the selection.\n        \"\"\"\n        if 'depth' in kwargs:\n            warnings.warn('The \"depth\" keyword argument has been deprecated.\\n'\n                    'Use related field names instead.', PendingDeprecationWarning)\n\n        depth = kwargs.pop('depth', 0)\n        if kwargs:\n            raise TypeError('Unexpected keyword arguments to select_related: %s'\n                    % (list(kwargs),))\n\n        obj = self._clone()\n\n        if fields:\n            if depth:\n                raise TypeError('Cannot pass both \"depth\" and fields to select_related()')\n            obj.query.add_select_related(fields)\n        else:\n            obj.query.select_related = True\n\n        if depth:\n            obj.query.max_depth = depth\n\n        return obj\n\n    def prefetch_related(self, *lookups):\n        \"\"\"\n        Returns a new QuerySet instance that will prefetch the specified\n        Many-To-One and Many-To-Many related objects when the QuerySet is\n        evaluated.\n\n        When prefetch_related() is called more than once, the list of lookups to\n        prefetch is appended to. If prefetch_related(None) is called, the\n        the list is cleared.\n        \"\"\"\n        clone = self._clone()\n        if lookups == (None,):\n            clone._prefetch_related_lookups = []\n        else:\n            clone._prefetch_related_lookups.extend(lookups)\n\n        return clone\n\n    def dup_select_related(self, other):\n        \"\"\"\n        Copies the related selection status from the QuerySet 'other' to the\n        current QuerySet.\n        \"\"\"\n        self.query.select_related = other.query.select_related\n???\n    def annotate(self, *args, **kwargs):\n        \"\"\"\n        Return a query set in which the returned objects have been annotated\n        with data aggregated from related fields.\n        \"\"\"\n        for arg in args:\n            if arg.default_alias in kwargs:\n                raise ValueError(\"The named annotation '%s' conflicts with the \"\n                                 \"default name for another annotation.\"\n                                 % arg.default_alias)\n            kwargs[arg.default_alias] = arg\n\n        names = getattr(self, '_fields', None)\n        if names is None:\n            names = set(self.model._meta.get_all_field_names())\n\n        for aggregate in kwargs:\n            if aggregate in names:\n                raise ValueError(\"The annotation '%s' conflicts with a field on \"\n                    \"the model.\" % aggregate)\n\n        obj = self._clone()\n\n        obj._setup_aggregate_query(list(kwargs))\n\n        # Add the aggregates to the query\n        for (alias, aggregate_expr) in kwargs.items():\n            obj.query.add_aggregate(aggregate_expr, self.model, alias,\n                is_summary=False)\n\n        return obj\n\n    def order_by(self, *field_names):\n        \"\"\"\n        Returns a new QuerySet instance with the ordering changed.\n        \"\"\"\n        assert self.query.can_filter(), \\\n                \"Cannot reorder a query once a slice has been taken.\"\n        obj = self._clone()\n        obj.query.clear_ordering()\n        obj.query.add_ordering(*field_names)\n        return obj\n\n    记录唯一\n    def distinct(self, *field_names):\n        \"\"\"\n        Returns a new QuerySet instance that will select only distinct results.\n        \"\"\"\n        assert self.query.can_filter(), \\\n                \"Cannot create distinct fields once a slice has been taken.\"\n\n        obj = self._clone()\n\n        obj.query.add_distinct_fields(*field_names)\n        return obj\n\n    def extra(self, select=None, where=None, params=None, tables=None,\n              order_by=None, select_params=None):\n        \"\"\"\n        Adds extra SQL fragments to the query.\n        \"\"\"\n        assert self.query.can_filter(), \\\n                \"Cannot change a query once a slice has been taken\"\n\n        clone = self._clone()\n        clone.query.add_extra(select, select_params, where, params, tables, order_by)\n\n        return clone\n\n    def reverse(self):\n        \"\"\"\n        Reverses the ordering of the QuerySet.\n        \"\"\"\n        clone = self._clone()\n        clone.query.standard_ordering = not clone.query.standard_ordering\n        return clone\n\n    def defer(self, *fields):\n        \"\"\"\n        延迟数据的加载, 怎么实现的?\n        Defers the loading of data for certain fields until they are accessed.\n        The set of fields to defer is added to any existing set of deferred\n        fields. The only exception to this is if None is passed in as the only\n        parameter, in which case all deferrals are removed (None acts as a\n        reset option).\n        \"\"\"\n        clone = self._clone()\n\n        添加或者删除需要延迟加载的属性\n        if fields == (None,):\n            clone.query.clear_deferred_loading()\n        else:\n            clone.query.add_deferred_loading(fields)\n        return clone\n\n    def only(self, *fields):\n        \"\"\"\n        立即加载, 和 defer() 对应\n\n        Essentially, the opposite of defer. Only the fields passed into this\n        method and that are not already specified as deferred are loaded\n        immediately when the queryset is evaluated.\n        \"\"\"\n        if fields == (None,):\n            # Can only pass None to defer(), not only(), as the rest option.\n            # That won't stop people trying to do this, so let's be explicit.\n            raise TypeError(\"Cannot pass None as an argument to only().\")\n\n        clone = self._clone()\n        clone.query.add_immediate_loading(fields)\n        return clone\n\n    def using(self, alias):\n        \"\"\"\n        选择使用什么数据库引擎, 会经常遇到 _db,db,alias,using 的字眼, 做详细解释:\n        _db,db,alias,using 当作为变量时候所指的东西都一样, 是一个字符串的形式:\n\n        在 settings.py 中会有数据库的设置项:\n        DATABASES = {\n        'default': {\n                ******\n            }\n        }\n        这里, _db,db,alias,using 所指定的就是 'default'\n\n        Selects which database this QuerySet should excecute its query against.\n        \"\"\"\n        clone = self._clone()\n        clone._db = alias\n        return clone\n\n    ###################################\n    # PUBLIC INTROSPECTION ATTRIBUTES #\n    ###################################\n\n    def ordered(self):\n        \"\"\"\n        Returns True if the QuerySet is ordered -- i.e. has an order_by()\n        clause or a default ordering on the model.\n        \"\"\"\n        if self.query.extra_order_by or self.query.order_by:\n            return True\n\n        elif self.query.default_ordering and self.query.model._meta.ordering:\n            return True\n\n        else:\n            return False\n    ordered = property(ordered)\n\n    @property\n    def db(self):\n        \"Return the database that will be used if this query is executed now\"\n        if self._for_write:\n            return self._db or router.db_for_write(self.model)\n        return self._db or router.db_for_read(self.model)\n\n    ###################\n    # PRIVATE METHODS # 私有方法, 内部使用\n    ###################\n    def _batched_insert(self, objs, fields, batch_size):\n        \"\"\"\n        A little helper method for bulk_insert to insert the bulk one batch\n        at a time. Inserts recursively a batch from the front of the bulk and\n        then _batched_insert() the remaining objects again.\n        \"\"\"\n        if not objs:\n            return\n\n        ops = connections[self.db].ops\n        batch_size = (batch_size or max(ops.bulk_batch_size(fields, objs), 1))\n\n        for batch in [objs[i:i+batch_size]\n                      for i in range(0, len(objs), batch_size)]:\n            self.model._base_manager._insert(batch, fields=fields,\n                                             using=self.db)\n\n    def _clone(self, klass=None, setup=False, **kwargs):\n        if klass is None:\n            # 如果 klass 为空, 将被设置为自己\n            klass = self.__class__\n\n        query = self.query.clone()\n\n        if self._sticky_filter:\n            query.filter_is_sticky = True\n\n        # 实例化\n        c = klass(model=self.model, query=query, using=self._db)\n\n        c._for_write = self._for_write\n        c._prefetch_related_lookups = self._prefetch_related_lookups[:]\n        c._known_related_objects = self._known_related_objects\n        c.__dict__.update(kwargs)\n\n        if setup and hasattr(c, '_setup_query'):\n            c._setup_query()\n\n        return c\n\n    将缓存填满\n    def _fill_cache(self, num=None):\n        \"\"\"\n        Fills the result cache with 'num' more entries (or until the results\n        iterator is exhausted).\n        \"\"\"\n        if self._iter:\n            try:\n                for i in range(num or ITER_CHUNK_SIZE):\n                    self._result_cache.append(next(self._iter))\n            except StopIteration:\n                self._iter = None\n\n    def _next_is_sticky(self):\n        \"\"\"\n        Indicates that the next filter call and the one following that should\n        be treated as a single filter. This is only important when it comes to\n        determining when to reuse tables for many-to-many filters. Required so\n        that we can filter naturally on the results of related managers.\n\n        This doesn't return a clone of the current QuerySet (it returns\n        \"self\"). The method is only used internally and should be immediately\n        followed by a filter() that does create a clone.\n        \"\"\"\n        self._sticky_filter = True\n        return self\n\n    def _merge_sanity_check(self, other):\n        \"\"\"\n        Checks that we are merging two comparable QuerySet classes. By default\n        this does nothing, but see the ValuesQuerySet for an example of where\n        it's useful.\n        \"\"\"\n        pass\n\n    def _merge_known_related_objects(self, other):\n        \"\"\"\n        Keep track of all known related objects from either QuerySet instance.\n        \"\"\"\n        for field, objects in other._known_related_objects.items():\n            self._known_related_objects.setdefault(field, {}).update(objects)\n\n    def _setup_aggregate_query(self, aggregates):\n        \"\"\"\n        Prepare the query for computing a result that contains aggregate annotations.\n        \"\"\"\n        opts = self.model._meta\n        if self.query.group_by is None:\n            field_names = [f.attname for f in opts.fields]\n            self.query.add_fields(field_names, False)\n            self.query.set_group_by()\n\n    def _prepare(self):\n        return self\n\n    def _as_sql(self, connection):\n        \"\"\"\n        Returns the internal query's SQL and parameters (as a tuple).\n        \"\"\"\n        # 返回主键属性\n        obj = self.values(\"pk\")\n\n        if obj._db is None or connection == connections[obj._db]:\n            return obj.query.get_compiler(connection=connection).as_nested_sql()\n\n        raise ValueError(\"Can't do subqueries with queries on different DBs.\")\n\n    # When used as part of a nested query, a queryset will never be an \"always\n    # empty\" result.\n    value_annotation = True\n\n\"\"\"\na ValuesQuerySet — a QuerySet subclass that returns dictionaries when used as an iterable, rather than model-instance objects.\n\nEach of those dictionaries represents an object, with the keys corresponding to the attribute names of model objects.\n\nThis example compares the dictionaries of values() with the normal model objects:\n\n# This list contains a Blog object.\n>>> Blog.objects.filter(name__startswith='Beatles')\n[<Blog: Beatles Blog>]\n\n# This list contains a dictionary.\n>>> Blog.objects.filter(name__startswith='Beatles').values()\n[{'id': 1, 'name': 'Beatles Blog', 'tagline': 'All the latest Beatles news.'}]\n\"\"\"\nclass ValuesQuerySet(QuerySet):\n    def __init__(self, *args, **kwargs):\n        super(ValuesQuerySet, self).__init__(*args, **kwargs)\n\n        # select_related isn't supported in values(). (FIXME -#3358)\n        self.query.select_related = False\n\n        # QuerySet.clone() will also set up the _fields attribute with the\n        # names of the model fields to select.\n\n    def iterator(self):\n        # Purge any extra columns that haven't been explicitly asked for\n        extra_names = list(self.query.extra_select)\n        field_names = self.field_names\n        aggregate_names = list(self.query.aggregate_select)\n\n        names = extra_names + field_names + aggregate_names\n\n        for row in self.query.get_compiler(self.db).results_iter():\n            # 产生一个字典结果返回\n            yield dict(zip(names, row))\n\n    没作用的\n    def delete(self):\n        # values().delete() doesn't work currently - make sure it raises an\n        # user friendly error.\n        raise TypeError(\"Queries with .values() or .values_list() applied \"\n                        \"can't be deleted\")\n\n    def _setup_query(self):\n        \"\"\"\n        Constructs the field_names list that the values query will be\n        retrieving.\n\n        Called by the _clone() method after initializing the rest of the\n        instance.\n        \"\"\"\n        self.query.clear_deferred_loading()\n        self.query.clear_select_fields()\n\n        if self._fields:\n            self.extra_names = []\n            self.aggregate_names = []\n\n            if not self.query.extra and not self.query.aggregates:\n                # Short cut - if there are no extra or aggregates, then\n                # the values() clause must be just field names.\n                self.field_names = list(self._fields)\n\n            else:\n                self.query.default_cols = False\n                self.field_names = []\n\n                遍历, 将 fields 分门别类\n                for f in self._fields:\n                    # we inspect the full extra_select list since we might\n                    # be adding back an extra select item that we hadn't\n                    # had selected previously.\n                    if f in self.query.extra:\n                        self.extra_names.append(f)\n\n                    elif f in self.query.aggregate_select:\n                        self.aggregate_names.append(f)\n\n                    else:\n                        self.field_names.append(f)\n        else:\n            # Default to all fields.\n            self.extra_names = None\n            self.field_names = [f.attname for f in self.model._meta.fields]\n            self.aggregate_names = None\n\n        self.query.select = []\n\n        if self.extra_names is not None:\n            self.query.set_extra_mask(self.extra_names)\n\n        self.query.add_fields(self.field_names, True)\n\n        if self.aggregate_names is not None:\n            self.query.set_aggregate_mask(self.aggregate_names)\n\n    def _clone(self, klass=None, setup=False, **kwargs):\n        \"\"\"\n        Cloning a ValuesQuerySet preserves the current fields.\n        \"\"\"\n        c = super(ValuesQuerySet, self)._clone(klass, **kwargs)\n\n        if not hasattr(c, '_fields'):\n            # Only clone self._fields if _fields wasn't passed into the cloning\n            # call directly.\n            c._fields = self._fields[:]\n        c.field_names = self.field_names\n        c.extra_names = self.extra_names\n        c.aggregate_names = self.aggregate_names\n        if setup and hasattr(c, '_setup_query'):\n            c._setup_query()\n        return c\n\n    def _merge_sanity_check(self, other):\n        super(ValuesQuerySet, self)._merge_sanity_check(other)\n        if (set(self.extra_names) != set(other.extra_names) or\n                set(self.field_names) != set(other.field_names) or\n                self.aggregate_names != other.aggregate_names):\n            raise TypeError(\"Merging '%s' classes must involve the same values in each case.\"\n                    % self.__class__.__name__)\n\n    def _setup_aggregate_query(self, aggregates):\n        \"\"\"\n        Prepare the query for computing a result that contains aggregate annotations.\n        \"\"\"\n        self.query.set_group_by()\n\n        if self.aggregate_names is not None:\n            self.aggregate_names.extend(aggregates)\n            self.query.set_aggregate_mask(self.aggregate_names)\n\n        super(ValuesQuerySet, self)._setup_aggregate_query(aggregates)\n\n    def _as_sql(self, connection):\n        \"\"\"\n        For ValueQuerySet (and subclasses like ValuesListQuerySet), they can\n        only be used as nested queries if they're already set up to select only\n        a single field (in which case, that is the field column that is\n        returned). This differs from QuerySet.as_sql(), where the column to\n        select is set up by Django.\n        \"\"\"\n        if ((self._fields and len(self._fields) > 1) or\n                (not self._fields and len(self.model._meta.fields) > 1)):\n            raise TypeError('Cannot use a multi-field %s as a filter value.'\n                    % self.__class__.__name__)\n\n        obj = self._clone()\n        if obj._db is None or connection == connections[obj._db]:\n            return obj.query.get_compiler(connection=connection).as_nested_sql()\n        raise ValueError(\"Can't do subqueries with queries on different DBs.\")\n\n    def _prepare(self):\n        \"\"\"\n        Validates that we aren't trying to do a query like\n        value__in=qs.values('value1', 'value2'), which isn't valid.\n        \"\"\"\n        if ((self._fields and len(self._fields) > 1) or\n                (not self._fields and len(self.model._meta.fields) > 1)):\n            raise TypeError('Cannot use a multi-field %s as a filter value.'\n                    % self.__class__.__name__)\n        return self\n\n\nclass ValuesListQuerySet(ValuesQuerySet):\n    def iterator(self):\n        if self.flat and len(self._fields) == 1:\n            for row in self.query.get_compiler(self.db).results_iter():\n                yield row[0]\n        elif not self.query.extra_select and not self.query.aggregate_select:\n            for row in self.query.get_compiler(self.db).results_iter():\n                yield tuple(row)\n        else:\n            # When extra(select=...) or an annotation is involved, the extra\n            # cols are always at the start of the row, and we need to reorder\n            # the fields to match the order in self._fields.\n            extra_names = list(self.query.extra_select)\n            field_names = self.field_names\n            aggregate_names = list(self.query.aggregate_select)\n\n            names = extra_names + field_names + aggregate_names\n\n            # If a field list has been specified, use it. Otherwise, use the\n            # full list of fields, including extras and aggregates.\n            if self._fields:\n                fields = list(self._fields) + [f for f in aggregate_names if f not in self._fields]\n            else:\n                fields = names\n\n            for row in self.query.get_compiler(self.db).results_iter():\n                data = dict(zip(names, row))\n                yield tuple([data[f] for f in fields])\n\n    def _clone(self, *args, **kwargs):\n        clone = super(ValuesListQuerySet, self)._clone(*args, **kwargs)\n        if not hasattr(clone, \"flat\"):\n            # Only assign flat if the clone didn't already get it from kwargs\n            clone.flat = self.flat\n        return clone\n\n\nclass DateQuerySet(QuerySet):\n    def iterator(self):\n        return self.query.get_compiler(self.db).results_iter()\n\n    def _setup_query(self):\n        \"\"\"\n        Sets up any special features of the query attribute.\n\n        Called by the _clone() method after initializing the rest of the\n        instance.\n        \"\"\"\n        self.query.clear_deferred_loading()\n        self.query = self.query.clone(klass=sql.DateQuery, setup=True)\n        self.query.select = []\n        self.query.add_date_select(self._field_name, self._kind, self._order)\n\n    def _clone(self, klass=None, setup=False, **kwargs):\n        c = super(DateQuerySet, self)._clone(klass, False, **kwargs)\n        c._field_name = self._field_name\n        c._kind = self._kind\n        if setup and hasattr(c, '_setup_query'):\n            c._setup_query()\n        return c\n\n\nclass EmptyQuerySet(QuerySet):\n    def __init__(self, model=None, query=None, using=None):\n        super(EmptyQuerySet, self).__init__(model, query, using)\n        self._result_cache = []\n\n    def __and__(self, other):\n        return self._clone()\n\n    def __or__(self, other):\n        return other._clone()\n\n    def count(self):\n        return 0\n\n    def delete(self):\n        pass\n\n    def _clone(self, klass=None, setup=False, **kwargs):\n        c = super(EmptyQuerySet, self)._clone(klass, setup=setup, **kwargs)\n        c._result_cache = []\n        return c\n\n    def iterator(self):\n        # This slightly odd construction is because we need an empty generator\n        # (it raises StopIteration immediately).\n        yield next(iter([]))\n\n    def all(self):\n        \"\"\"\n        Always returns EmptyQuerySet.\n        \"\"\"\n        return self\n\n    def filter(self, *args, **kwargs):\n        \"\"\"\n        Always returns EmptyQuerySet.\n        \"\"\"\n        return self\n\n    def exclude(self, *args, **kwargs):\n        \"\"\"\n        Always returns EmptyQuerySet.\n        \"\"\"\n        return self\n\n    def complex_filter(self, filter_obj):\n        \"\"\"\n        Always returns EmptyQuerySet.\n        \"\"\"\n        return self\n\n    def select_related(self, *fields, **kwargs):\n        \"\"\"\n        Always returns EmptyQuerySet.\n        \"\"\"\n        return self\n\n    def annotate(self, *args, **kwargs):\n        \"\"\"\n        Always returns EmptyQuerySet.\n        \"\"\"\n        return self\n\n    def order_by(self, *field_names):\n        \"\"\"\n        Always returns EmptyQuerySet.\n        \"\"\"\n        return self\n\n    def distinct(self, *field_names):\n        \"\"\"\n        Always returns EmptyQuerySet.\n        \"\"\"\n        return self\n\n    def extra(self, select=None, where=None, params=None, tables=None,\n              order_by=None, select_params=None):\n        \"\"\"\n        Always returns EmptyQuerySet.\n        \"\"\"\n        assert self.query.can_filter(), \\\n                \"Cannot change a query once a slice has been taken\"\n        return self\n\n    def reverse(self):\n        \"\"\"\n        Always returns EmptyQuerySet.\n        \"\"\"\n        return self\n\n    def defer(self, *fields):\n        \"\"\"\n        Always returns EmptyQuerySet.\n        \"\"\"\n        return self\n\n    def only(self, *fields):\n        \"\"\"\n        Always returns EmptyQuerySet.\n        \"\"\"\n        return self\n\n    def update(self, **kwargs):\n        \"\"\"\n        Don't update anything.\n        \"\"\"\n        return 0\n\n    def aggregate(self, *args, **kwargs):\n        \"\"\"\n        Return a dict mapping the aggregate names to None\n        \"\"\"\n        for arg in args:\n            kwargs[arg.default_alias] = arg\n        return dict([(key, None) for key in kwargs])\n\n    def values(self, *fields):\n        \"\"\"\n        Always returns EmptyQuerySet.\n        \"\"\"\n        return self\n\n    def values_list(self, *fields, **kwargs):\n        \"\"\"\n        Always returns EmptyQuerySet.\n        \"\"\"\n        return self\n\n    # EmptyQuerySet is always an empty result in where-clauses (and similar\n    # situations).\n    value_annotation = False\n\ndef get_klass_info(klass, max_depth=0, cur_depth=0, requested=None,\n                   only_load=None, local_only=False):\n    \"\"\"\n    Helper function that recursively 递归 returns an information for a klass, to be\n    used in get_cached_row.  It exists just to compute this information only\n    once for entire queryset. Otherwise it would be computed for each row, which\n    leads to poor perfomance on large querysets.\n\n    Arguments:\n     * klass - the class to retrieve (and instantiate)\n     * max_depth - the maximum depth to which a select_related()\n       relationship should be explored.\n     * cur_depth - the current depth in the select_related() tree.\n       Used in recursive calls to determin if we should dig deeper.\n     * requested - A dictionary describing the select_related() tree\n       that is to be retrieved. keys are field names; values are\n       dictionaries describing the keys on that related object that\n       are themselves to be select_related().\n     * only_load - if the query has had only() or defer() applied,\n       this is the list of field names that will be returned. If None,\n       the full field list for `klass` can be assumed.\n     * local_only - Only populate local fields. This is used when\n       following reverse select-related relations\n    \"\"\"\n    if max_depth and requested is None and cur_depth > max_depth:\n        # We've recursed deeply enough; stop now.\n        return None\n\n    if only_load:\n        load_fields = only_load.get(klass) or set()\n        # When we create the object, we will also be creating populating\n        # all the parent classes, so traverse the parent classes looking\n        # for fields that must be included on load.\n        for parent in klass._meta.get_parent_list():\n            fields = only_load.get(parent)\n            if fields:\n                load_fields.update(fields)\n    else:\n        load_fields = None\n\n    if load_fields:\n        # Handle deferred fields.\n        skip = set()\n        init_list = []\n        # Build the list of fields that *haven't* been requested\n        for field, model in klass._meta.get_fields_with_model():\n            if field.name not in load_fields:\n                skip.add(field.attname)\n            elif local_only and model is not None:\n                continue\n            else:\n                init_list.append(field.attname)\n        # Retrieve all the requested fields\n        field_count = len(init_list)\n        if skip:\n            klass = deferred_class_factory(klass, skip)\n            field_names = init_list\n        else:\n            field_names = ()\n    else:\n        # Load all fields on klass\n\n        # We trying to not populate field_names variable for perfomance reason.\n        # If field_names variable is set, it is used to instantiate desired fields,\n        # by passing **dict(zip(field_names, fields)) as kwargs to Model.__init__ method.\n        # But kwargs version of Model.__init__ is slower, so we should avoid using\n        # it when it is not really neccesary.\n        if local_only and len(klass._meta.local_fields) != len(klass._meta.fields):\n            field_count = len(klass._meta.local_fields)\n            field_names = [f.attname for f in klass._meta.local_fields]\n        else:\n            field_count = len(klass._meta.fields)\n            field_names = ()\n\n    restricted = requested is not None\n\n    related_fields = []\n    for f in klass._meta.fields:\n        if select_related_descend(f, restricted, requested, load_fields):\n            if restricted:\n                next = requested[f.name]\n            else:\n                next = None\n            klass_info = get_klass_info(f.rel.to, max_depth=max_depth, cur_depth=cur_depth+1,\n                                        requested=next, only_load=only_load)\n            related_fields.append((f, klass_info))\n\n    reverse_related_fields = []\n    if restricted:\n        for o in klass._meta.get_all_related_objects():\n            if o.field.unique and select_related_descend(o.field, restricted, requested,\n                                                         only_load.get(o.model), reverse=True):\n                next = requested[o.field.related_query_name()]\n                klass_info = get_klass_info(o.model, max_depth=max_depth, cur_depth=cur_depth+1,\n                                            requested=next, only_load=only_load, local_only=True)\n                reverse_related_fields.append((o.field, klass_info))\n    if field_names:\n        pk_idx = field_names.index(klass._meta.pk.attname)\n    else:\n        pk_idx = klass._meta.pk_index()\n\n    return klass, field_names, field_count, related_fields, reverse_related_fields, pk_idx\n\n\ndef get_cached_row(row, index_start, using,  klass_info, offset=0):\n    \"\"\"\n    Helper function that recursively returns an object with the specified\n    related attributes already populated.\n\n    This method may be called recursively to populate deep select_related()\n    clauses.\n\n    Arguments:\n         * row - the row of data returned by the database cursor\n         * index_start - the index of the row at which data for this\n           object is known to start\n         * offset - the number of additional fields that are known to\n           exist in row for `klass`. This usually means the number of\n           annotated results on `klass`.\n        * using - the database alias on which the query is being executed.\n         * klass_info - result of the get_klass_info function\n    \"\"\"\n    if klass_info is None:\n        return None\n    klass, field_names, field_count, related_fields, reverse_related_fields, pk_idx = klass_info\n\n    fields = row[index_start : index_start + field_count]\n    # If the pk column is None (or the Oracle equivalent ''), then the related\n    # object must be non-existent - set the relation to None.\n    if fields[pk_idx] == None or fields[pk_idx] == '':\n        obj = None\n    elif field_names:\n        obj = klass(**dict(zip(field_names, fields)))\n    else:\n        obj = klass(*fields)\n\n    # If an object was retrieved, set the database state.\n    if obj:\n        obj._state.db = using\n        obj._state.adding = False\n\n    # Instantiate related fields\n    index_end = index_start + field_count + offset\n    # Iterate over each related object, populating any\n    # select_related() fields\n    for f, klass_info in related_fields:\n        # Recursively retrieve the data for the related object\n        cached_row = get_cached_row(row, index_end, using, klass_info)\n        # If the recursive descent found an object, populate the\n        # descriptor caches relevant to the object\n        if cached_row:\n            rel_obj, index_end = cached_row\n            if obj is not None:\n                # If the base object exists, populate the\n                # descriptor cache\n                setattr(obj, f.get_cache_name(), rel_obj)\n            if f.unique and rel_obj is not None:\n                # If the field is unique, populate the\n                # reverse descriptor cache on the related object\n                setattr(rel_obj, f.related.get_cache_name(), obj)\n\n    # Now do the same, but for reverse related objects.\n    # Only handle the restricted case - i.e., don't do a depth\n    # descent into reverse relations unless explicitly requested\n    for f, klass_info in reverse_related_fields:\n        # Recursively retrieve the data for the related object\n        cached_row = get_cached_row(row, index_end, using, klass_info)\n        # If the recursive descent found an object, populate the\n        # descriptor caches relevant to the object\n        if cached_row:\n            rel_obj, index_end = cached_row\n            if obj is not None:\n                # If the field is unique, populate the\n                # reverse descriptor cache\n                setattr(obj, f.related.get_cache_name(), rel_obj)\n            if rel_obj is not None:\n                # If the related object exists, populate\n                # the descriptor cache.\n                setattr(rel_obj, f.get_cache_name(), obj)\n                # Now populate all the non-local field values on the related\n                # object. If this object has deferred fields, we need to use\n                # the opts from the original model to get non-local fields\n                # correctly.\n                opts = rel_obj._meta\n                if getattr(rel_obj, '_deferred'):\n                    opts = opts.proxy_for_model._meta\n                for rel_field, rel_model in opts.get_fields_with_model():\n                    if rel_model is not None:\n                        setattr(rel_obj, rel_field.attname, getattr(obj, rel_field.attname))\n                        # populate the field cache for any related object\n                        # that has already been retrieved\n                        if rel_field.rel:\n                            try:\n                                cached_obj = getattr(obj, rel_field.get_cache_name())\n                                setattr(rel_obj, rel_field.get_cache_name(), cached_obj)\n                            except AttributeError:\n                                # Related object hasn't been cached yet\n                                pass\n    return obj, index_end\n\n\nclass RawQuerySet(object):\n    \"\"\"\n    Provides an iterator which converts the results of raw SQL queries into\n    annotated model instances.\n    \"\"\"\n    def __init__(self, raw_query, model=None, query=None, params=None,\n        translations=None, using=None):\n        self.raw_query = raw_query\n        self.model = model\n        self._db = using\n        self.query = query or sql.RawQuery(sql=raw_query, using=self.db, params=params)\n        self.params = params or ()\n        self.translations = translations or {}\n\n    def __iter__(self):\n        # Mapping of attrnames to row column positions. Used for constructing\n        # the model using kwargs, needed when not all model's fields are present\n        # in the query.\n        model_init_field_names = {}\n        # A list of tuples of (column name, column position). Used for\n        # annotation fields.\n        annotation_fields = []\n\n        # Cache some things for performance reasons outside the loop.\n        db = self.db\n        compiler = connections[db].ops.compiler('SQLCompiler')(\n            self.query, connections[db], db\n        )\n        need_resolv_columns = hasattr(compiler, 'resolve_columns')\n\n        query = iter(self.query)\n\n        # Find out which columns are model's fields, and which ones should be\n        # annotated to the model.\n        for pos, column in enumerate(self.columns):\n            if column in self.model_fields:\n                model_init_field_names[self.model_fields[column].attname] = pos\n            else:\n                annotation_fields.append((column, pos))\n\n        # Find out which model's fields are not present in the query.\n        skip = set()\n        for field in self.model._meta.fields:\n            if field.attname not in model_init_field_names:\n                skip.add(field.attname)\n        if skip:\n            if self.model._meta.pk.attname in skip:\n                raise InvalidQuery('Raw query must include the primary key')\n            model_cls = deferred_class_factory(self.model, skip)\n        else:\n            model_cls = self.model\n            # All model's fields are present in the query. So, it is possible\n            # to use *args based model instantation. For each field of the model,\n            # record the query column position matching that field.\n            model_init_field_pos = []\n            for field in self.model._meta.fields:\n                model_init_field_pos.append(model_init_field_names[field.attname])\n        if need_resolv_columns:\n            fields = [self.model_fields.get(c, None) for c in self.columns]\n        # Begin looping through the query values.\n        for values in query:\n            if need_resolv_columns:\n                values = compiler.resolve_columns(values, fields)\n            # Associate fields to values\n            if skip:\n                model_init_kwargs = {}\n                for attname, pos in six.iteritems(model_init_field_names):\n                    model_init_kwargs[attname] = values[pos]\n                instance = model_cls(**model_init_kwargs)\n            else:\n                model_init_args = [values[pos] for pos in model_init_field_pos]\n                instance = model_cls(*model_init_args)\n            if annotation_fields:\n                for column, pos in annotation_fields:\n                    setattr(instance, column, values[pos])\n\n            instance._state.db = db\n            instance._state.adding = False\n\n            yield instance\n\n    def __repr__(self):\n        return \"<RawQuerySet: %r>\" % (self.raw_query % tuple(self.params))\n\n    def __getitem__(self, k):\n        return list(self)[k]\n\n    @property\n    def db(self):\n        \"Return the database that will be used if this query is executed now\"\n        return self._db or router.db_for_read(self.model)\n\n    def using(self, alias):\n        \"\"\"\n        Selects which database this Raw QuerySet should excecute it's query against.\n        \"\"\"\n        return RawQuerySet(self.raw_query, model=self.model,\n                query=self.query.clone(using=alias),\n                params=self.params, translations=self.translations,\n                using=alias)\n\n    @property\n    def columns(self):\n        \"\"\"\n        A list of model field names in the order they'll appear in the\n        query results.\n        \"\"\"\n        if not hasattr(self, '_columns'):\n            self._columns = self.query.get_columns()\n\n            # Adjust any column names which don't match field names\n            for (query_name, model_name) in self.translations.items():\n                try:\n                    index = self._columns.index(query_name)\n                    self._columns[index] = model_name\n                except ValueError:\n                    # Ignore translations for non-existant column names\n                    pass\n\n        return self._columns\n\n    @property\n    def model_fields(self):\n        \"\"\"\n        A dict mapping column names to model field names.\n        \"\"\"\n        if not hasattr(self, '_model_fields'):\n            converter = connections[self.db].introspection.table_name_converter\n            self._model_fields = {}\n            for field in self.model._meta.fields:\n                name, column = field.get_attname_column()\n                self._model_fields[converter(column)] = field\n        return self._model_fields\n\n\ndef insert_query(model, objs, fields, return_id=False, raw=False, using=None):\n    \"\"\"\n    Inserts a new record for the given model. This provides an interface to\n    the InsertQuery class and is how Model.save() is implemented. It is not\n    part of the public API.\n    \"\"\"\n    query = sql.InsertQuery(model)\n    query.insert_values(fields, objs, raw=raw)\n    return query.get_compiler(using=using).execute_sql(return_id)\n\n\ndef prefetch_related_objects(result_cache, related_lookups):\n    \"\"\"\n    Helper function for prefetch_related functionality\n\n    Populates prefetched objects caches for a list of results\n    from a QuerySet\n    \"\"\"\n    if len(result_cache) == 0:\n        return # nothing to do\n\n    model = result_cache[0].__class__\n\n    # We need to be able to dynamically add to the list of prefetch_related\n    # lookups that we look up (see below).  So we need some book keeping to\n    # ensure we don't do duplicate work.\n    done_lookups = set() # list of lookups like foo__bar__baz\n    done_queries = {}    # dictionary of things like 'foo__bar': [results]\n\n    auto_lookups = [] # we add to this as we go through.\n    followed_descriptors = set() # recursion protection\n\n    all_lookups = itertools.chain(related_lookups, auto_lookups)\n    for lookup in all_lookups:\n        if lookup in done_lookups:\n            # We've done exactly this already, skip the whole thing\n            continue\n        done_lookups.add(lookup)\n\n        # Top level, the list of objects to decorate is the result cache\n        # from the primary QuerySet. It won't be for deeper levels.\n        obj_list = result_cache\n\n        attrs = lookup.split(LOOKUP_SEP)\n        for level, attr in enumerate(attrs):\n            # Prepare main instances\n            if len(obj_list) == 0:\n                break\n\n            good_objects = True\n            for obj in obj_list:\n                if not hasattr(obj, '_prefetched_objects_cache'):\n                    try:\n                        obj._prefetched_objects_cache = {}\n                    except AttributeError:\n                        # Must be in a QuerySet subclass that is not returning\n                        # Model instances, either in Django or 3rd\n                        # party. prefetch_related() doesn't make sense, so quit\n                        # now.\n                        good_objects = False\n                        break\n                else:\n                    # We already did this list\n                    break\n            if not good_objects:\n                break\n\n            # Descend down tree\n\n            # We assume that objects retrieved are homogenous (which is the premise\n            # of prefetch_related), so what applies to first object applies to all.\n            first_obj = obj_list[0]\n            prefetcher, descriptor, attr_found, is_fetched = get_prefetcher(first_obj, attr)\n\n            if not attr_found:\n                raise AttributeError(\"Cannot find '%s' on %s object, '%s' is an invalid \"\n                                     \"parameter to prefetch_related()\" %\n                                     (attr, first_obj.__class__.__name__, lookup))\n\n            if level == len(attrs) - 1 and prefetcher is None:\n                # Last one, this *must* resolve to something that supports\n                # prefetching, otherwise there is no point adding it and the\n                # developer asking for it has made a mistake.\n                raise ValueError(\"'%s' does not resolve to a item that supports \"\n                                 \"prefetching - this is an invalid parameter to \"\n                                 \"prefetch_related().\" % lookup)\n\n            if prefetcher is not None and not is_fetched:\n                # Check we didn't do this already\n                current_lookup = LOOKUP_SEP.join(attrs[0:level+1])\n                if current_lookup in done_queries:\n                    obj_list = done_queries[current_lookup]\n                else:\n                    obj_list, additional_prl = prefetch_one_level(obj_list, prefetcher, attr)\n                    # We need to ensure we don't keep adding lookups from the\n                    # same relationships to stop infinite recursion. So, if we\n                    # are already on an automatically added lookup, don't add\n                    # the new lookups from relationships we've seen already.\n                    if not (lookup in auto_lookups and\n                            descriptor in followed_descriptors):\n                        for f in additional_prl:\n                            new_prl = LOOKUP_SEP.join([current_lookup, f])\n                            auto_lookups.append(new_prl)\n                        done_queries[current_lookup] = obj_list\n                    followed_descriptors.add(descriptor)\n            else:\n                # Either a singly related object that has already been fetched\n                # (e.g. via select_related), or hopefully some other property\n                # that doesn't support prefetching but needs to be traversed.\n\n                # We replace the current list of parent objects with the list\n                # of related objects, filtering out empty or missing values so\n                # that we can continue with nullable or reverse relations.\n                new_obj_list = []\n                for obj in obj_list:\n                    try:\n                        new_obj = getattr(obj, attr)\n                    except exceptions.ObjectDoesNotExist:\n                        continue\n                    if new_obj is None:\n                        continue\n                    new_obj_list.append(new_obj)\n                obj_list = new_obj_list\n\n\ndef get_prefetcher(instance, attr):\n    \"\"\"\n    For the attribute 'attr' on the given instance, finds\n    an object that has a get_prefetch_query_set().\n    Returns a 4 tuple containing:\n    (the object with get_prefetch_query_set (or None),\n     the descriptor object representing this relationship (or None),\n     a boolean that is False if the attribute was not found at all,\n     a boolean that is True if the attribute has already been fetched)\n    \"\"\"\n    prefetcher = None\n    attr_found = False\n    is_fetched = False\n\n    # For singly related objects, we have to avoid getting the attribute\n    # from the object, as this will trigger the query. So we first try\n    # on the class, in order to get the descriptor object.\n    rel_obj_descriptor = getattr(instance.__class__, attr, None)\n    if rel_obj_descriptor is None:\n        try:\n            rel_obj = getattr(instance, attr)\n            attr_found = True\n        except AttributeError:\n            pass\n    else:\n        attr_found = True\n        if rel_obj_descriptor:\n            # singly related object, descriptor object has the\n            # get_prefetch_query_set() method.\n            if hasattr(rel_obj_descriptor, 'get_prefetch_query_set'):\n                prefetcher = rel_obj_descriptor\n                if rel_obj_descriptor.is_cached(instance):\n                    is_fetched = True\n            else:\n                # descriptor doesn't support prefetching, so we go ahead and get\n                # the attribute on the instance rather than the class to\n                # support many related managers\n                rel_obj = getattr(instance, attr)\n                if hasattr(rel_obj, 'get_prefetch_query_set'):\n                    prefetcher = rel_obj\n    return prefetcher, rel_obj_descriptor, attr_found, is_fetched\n\n\ndef prefetch_one_level(instances, prefetcher, attname):\n    \"\"\"\n    Helper function for prefetch_related_objects\n\n    Runs prefetches on all instances using the prefetcher object,\n    assigning results to relevant caches in instance.\n\n    The prefetched objects are returned, along with any additional\n    prefetches that must be done due to prefetch_related lookups\n    found from default managers.\n    \"\"\"\n    # prefetcher must have a method get_prefetch_query_set() which takes a list\n    # of instances, and returns a tuple:\n\n    # (queryset of instances of self.model that are related to passed in instances,\n    #  callable that gets value to be matched for returned instances,\n    #  callable that gets value to be matched for passed in instances,\n    #  boolean that is True for singly related objects,\n    #  cache name to assign to).\n\n    # The 'values to be matched' must be hashable as they will be used\n    # in a dictionary.\n\n    rel_qs, rel_obj_attr, instance_attr, single, cache_name =\\\n        prefetcher.get_prefetch_query_set(instances)\n    # We have to handle the possibility that the default manager itself added\n    # prefetch_related lookups to the QuerySet we just got back. We don't want to\n    # trigger the prefetch_related functionality by evaluating the query.\n    # Rather, we need to merge in the prefetch_related lookups.\n    additional_prl = getattr(rel_qs, '_prefetch_related_lookups', [])\n    if additional_prl:\n        # Don't need to clone because the manager should have given us a fresh\n        # instance, so we access an internal instead of using public interface\n        # for performance reasons.\n        rel_qs._prefetch_related_lookups = []\n\n    all_related_objects = list(rel_qs)\n\n    rel_obj_cache = {}\n    for rel_obj in all_related_objects:\n        rel_attr_val = rel_obj_attr(rel_obj)\n        rel_obj_cache.setdefault(rel_attr_val, []).append(rel_obj)\n\n    for obj in instances:\n        instance_attr_val = instance_attr(obj)\n        vals = rel_obj_cache.get(instance_attr_val, [])\n        if single:\n            # Need to assign to single cache on instance\n            setattr(obj, cache_name, vals[0] if vals else None)\n        else:\n            # Multi, attribute represents a manager with an .all() method that\n            # returns a QuerySet\n            qs = getattr(obj, attname).all()\n            qs._result_cache = vals\n            # We don't want the individual qs doing prefetch_related now, since we\n            # have merged this into the current work.\n            qs._prefetch_done = True\n            obj._prefetched_objects_cache[cache_name] = qs\n    return all_related_objects, additional_prl\n"
  },
  {
    "path": "Django-1.5.1/django/db/models/query_utils.py",
    "content": "\"\"\"\nVarious data structures used in query construction.\n\nFactored out from django.db.models.query to avoid making the main module very\nlarge and/or so that they can be used by other modules without getting into\ncircular import difficulties.\n\"\"\"\nfrom __future__ import unicode_literals\n\nfrom django.db.backends import util\nfrom django.utils import six\nfrom django.utils import tree\n\n\nclass InvalidQuery(Exception):\n    \"\"\"\n    The query passed to raw isn't a safe query to use with raw.\n    \"\"\"\n    pass\n\n\nclass QueryWrapper(object):\n    \"\"\"\n    A type that indicates the contents are an SQL fragment and the associate\n    parameters. Can be used to pass opaque data to a where-clause, for example.\n    \"\"\"\n    def __init__(self, sql, params):\n        self.data = sql, params\n\n    def as_sql(self, qn=None, connection=None):\n        return self.data\n\nclass Q(tree.Node):\n    \"\"\"\n    Encapsulates filters as objects that can then be combined logically (using\n    & and |).\n    \"\"\"\n    # Connection types\n    AND = 'AND'\n    OR = 'OR'\n    default = AND\n\n    def __init__(self, *args, **kwargs):\n        super(Q, self).__init__(children=list(args) + list(six.iteritems(kwargs)))\n\n    def _combine(self, other, conn):\n        if not isinstance(other, Q):\n            raise TypeError(other)\n        obj = type(self)()\n        obj.add(self, conn)\n        obj.add(other, conn)\n        return obj\n\n    def __or__(self, other):\n        return self._combine(other, self.OR)\n\n    def __and__(self, other):\n        return self._combine(other, self.AND)\n\n    def __invert__(self):\n        obj = type(self)()\n        obj.add(self, self.AND)\n        obj.negate()\n        return obj\n\nclass DeferredAttribute(object):\n    \"\"\"\n    A wrapper for a deferred-loading field. When the value is read from this\n    object the first time, the query is executed.\n    \"\"\"\n    def __init__(self, field_name, model):\n        self.field_name = field_name\n\n    def __get__(self, instance, owner):\n        \"\"\"\n        Retrieves and caches the value from the datastore on the first lookup.\n        Returns the cached value.\n        \"\"\"\n        from django.db.models.fields import FieldDoesNotExist\n        non_deferred_model = instance._meta.proxy_for_model\n        opts = non_deferred_model._meta\n\n        assert instance is not None\n        data = instance.__dict__\n        if data.get(self.field_name, self) is self:\n            # self.field_name is the attname of the field, but only() takes the\n            # actual name, so we need to translate it here.\n            try:\n                f = opts.get_field_by_name(self.field_name)[0]\n            except FieldDoesNotExist:\n                f = [f for f in opts.fields\n                     if f.attname == self.field_name][0]\n            name = f.name\n            # Lets see if the field is part of the parent chain. If so we\n            # might be able to reuse the already loaded value. Refs #18343.\n            val = self._check_parent_chain(instance, name)\n            if val is None:\n                # We use only() instead of values() here because we want the\n                # various data coersion methods (to_python(), etc.) to be\n                # called here.\n                val = getattr(\n                    non_deferred_model._base_manager.only(name).using(\n                        instance._state.db).get(pk=instance.pk),\n                    self.field_name\n                )\n            data[self.field_name] = val\n        return data[self.field_name]\n\n    def __set__(self, instance, value):\n        \"\"\"\n        Deferred loading attributes can be set normally (which means there will\n        never be a database lookup involved.\n        \"\"\"\n        instance.__dict__[self.field_name] = value\n\n    def _check_parent_chain(self, instance, name):\n        \"\"\"\n        Check if the field value can be fetched from a parent field already\n        loaded in the instance. This can be done if the to-be fetched\n        field is a primary key field.\n        \"\"\"\n        opts = instance._meta\n        f = opts.get_field_by_name(name)[0]\n        link_field = opts.get_ancestor_link(f.model)\n        if f.primary_key and f != link_field:\n            return getattr(instance, link_field.attname)\n        return None\n\n\ndef select_related_descend(field, restricted, requested, load_fields, reverse=False):\n    \"\"\"\n    Returns True if this field should be used to descend deeper for\n    select_related() purposes. Used by both the query construction code\n    (sql.query.fill_related_selections()) and the model instance creation code\n    (query.get_klass_info()).\n\n    Arguments:\n     * field - the field to be checked\n     * restricted - a boolean field, indicating if the field list has been\n       manually restricted using a requested clause)\n     * requested - The select_related() dictionary.\n     * load_fields - the set of fields to be loaded on this model\n     * reverse - boolean, True if we are checking a reverse select related\n    \"\"\"\n    if not field.rel:\n        return False\n    if field.rel.parent_link and not reverse:\n        return False\n    if restricted:\n        if reverse and field.related_query_name() not in requested:\n            return False\n        if not reverse and field.name not in requested:\n            return False\n    if not restricted and field.null:\n        return False\n    if load_fields:\n        if field.name not in load_fields:\n            if restricted and field.name in requested:\n                raise InvalidQuery(\"Field %s.%s cannot be both deferred\"\n                                   \" and traversed using select_related\"\n                                   \" at the same time.\" %\n                                   (field.model._meta.object_name, field.name))\n            return False\n    return True\n\n# This function is needed because data descriptors must be defined on a class\n# object, not an instance, to have any effect.\n\ndef deferred_class_factory(model, attrs):\n    \"\"\"\n    Returns a class object that is a copy of \"model\" with the specified \"attrs\"\n    being replaced with DeferredAttribute objects. The \"pk_value\" ties the\n    deferred attributes to a particular instance of the model.\n    \"\"\"\n    class Meta:\n        proxy = True\n        app_label = model._meta.app_label\n\n    # The app_cache wants a unique name for each model, otherwise the new class\n    # won't be created (we get an old one back). Therefore, we generate the\n    # name using the passed in attrs. It's OK to reuse an existing class\n    # object if the attrs are identical.\n    name = \"%s_Deferred_%s\" % (model.__name__, '_'.join(sorted(list(attrs))))\n    name = util.truncate_name(name, 80, 32)\n\n    overrides = dict([(attr, DeferredAttribute(attr, model))\n            for attr in attrs])\n    overrides[\"Meta\"] = Meta\n    overrides[\"__module__\"] = model.__module__\n    overrides[\"_deferred\"] = True\n    return type(str(name), (model,), overrides)\n\n# The above function is also used to unpickle model instances with deferred\n# fields.\ndeferred_class_factory.__safe_for_unpickling__ = True\n"
  },
  {
    "path": "Django-1.5.1/django/db/models/related.py",
    "content": "from django.utils.encoding import smart_text\nfrom django.db.models.fields import BLANK_CHOICE_DASH\n\nclass BoundRelatedObject(object):\n    def __init__(self, related_object, field_mapping, original):\n        self.relation = related_object\n        self.field_mappings = field_mapping[related_object.name]\n\n    def template_name(self):\n        raise NotImplementedError\n\n    def __repr__(self):\n        return repr(self.__dict__)\n\nclass RelatedObject(object):\n    def __init__(self, parent_model, model, field):\n        self.parent_model = parent_model\n        self.model = model\n        self.opts = model._meta\n        self.field = field\n        self.name = '%s:%s' % (self.opts.app_label, self.opts.module_name)\n        self.var_name = self.opts.object_name.lower()\n\n    def get_choices(self, include_blank=True, blank_choice=BLANK_CHOICE_DASH,\n                    limit_to_currently_related=False):\n        \"\"\"Returns choices with a default blank choices included, for use\n        as SelectField choices for this field.\n\n        Analogue of django.db.models.fields.Field.get_choices, provided\n        initially for utilisation by RelatedFieldListFilter.\n        \"\"\"\n        first_choice = include_blank and blank_choice or []\n        queryset = self.model._default_manager.all()\n        if limit_to_currently_related:\n            queryset = queryset.complex_filter(\n                {'%s__isnull' % self.parent_model._meta.module_name: False})\n        lst = [(x._get_pk_val(), smart_text(x)) for x in queryset]\n        return first_choice + lst\n\n    def get_db_prep_lookup(self, lookup_type, value, connection, prepared=False):\n        # Defer to the actual field definition for db prep\n        return self.field.get_db_prep_lookup(lookup_type, value,\n                        connection=connection, prepared=prepared)\n\n    def editable_fields(self):\n        \"Get the fields in this class that should be edited inline.\"\n        return [f for f in self.opts.fields + self.opts.many_to_many if f.editable and f != self.field]\n\n    def __repr__(self):\n        return \"<RelatedObject: %s related to %s>\" % (self.name, self.field.name)\n\n    def bind(self, field_mapping, original, bound_related_object_class=BoundRelatedObject):\n        return bound_related_object_class(self, field_mapping, original)\n\n    def get_accessor_name(self):\n        # This method encapsulates the logic that decides what name to give an\n        # accessor descriptor that retrieves related many-to-one or\n        # many-to-many objects. It uses the lower-cased object_name + \"_set\",\n        # but this can be overridden with the \"related_name\" option.\n        if self.field.rel.multiple:\n            # If this is a symmetrical m2m relation on self, there is no reverse accessor.\n            if getattr(self.field.rel, 'symmetrical', False) and self.model == self.parent_model:\n                return None\n            return self.field.rel.related_name or (self.opts.object_name.lower() + '_set')\n        else:\n            return self.field.rel.related_name or (self.opts.object_name.lower())\n\n    def get_cache_name(self):\n        return \"_%s_cache\" % self.get_accessor_name()\n"
  },
  {
    "path": "Django-1.5.1/django/db/models/signals.py",
    "content": "from django.dispatch import Signal\n\nclass_prepared = Signal(providing_args=[\"class\"])\n\npre_init = Signal(providing_args=[\"instance\", \"args\", \"kwargs\"])\npost_init = Signal(providing_args=[\"instance\"])\n\npre_save = Signal(providing_args=[\"instance\", \"raw\", \"using\", \"update_fields\"])\npost_save = Signal(providing_args=[\"instance\", \"raw\", \"created\", \"using\", \"update_fields\"])\n\npre_delete = Signal(providing_args=[\"instance\", \"using\"])\npost_delete = Signal(providing_args=[\"instance\", \"using\"])\n\npost_syncdb = Signal(providing_args=[\"class\", \"app\", \"created_models\", \"verbosity\", \"interactive\"])\n\nm2m_changed = Signal(providing_args=[\"action\", \"instance\", \"reverse\", \"model\", \"pk_set\", \"using\"])\n"
  },
  {
    "path": "Django-1.5.1/django/db/models/sql/__init__.py",
    "content": "from __future__ import absolute_import\n\nfrom django.db.models.sql.datastructures import EmptyResultSet\nfrom django.db.models.sql.subqueries import *\nfrom django.db.models.sql.query import *\nfrom django.db.models.sql.where import AND, OR\n\n\n__all__ = ['Query', 'AND', 'OR', 'EmptyResultSet']\n"
  },
  {
    "path": "Django-1.5.1/django/db/models/sql/aggregates.py",
    "content": "\"\"\"\nClasses to represent the default SQL aggregate functions\n\"\"\"\n\nfrom django.db.models.fields import IntegerField, FloatField\n\n# Fake fields used to identify aggregate types in data-conversion operations.\nordinal_aggregate_field = IntegerField()\ncomputed_aggregate_field = FloatField()\n\nclass Aggregate(object):\n    \"\"\"\n    Default SQL Aggregate.\n    \"\"\"\n    is_ordinal = False\n    is_computed = False\n    sql_template = '%(function)s(%(field)s)'\n\n    def __init__(self, col, source=None, is_summary=False, **extra):\n        \"\"\"Instantiate an SQL aggregate\n\n         * col is a column reference describing the subject field\n           of the aggregate. It can be an alias, or a tuple describing\n           a table and column name.\n         * source is the underlying field or aggregate definition for\n           the column reference. If the aggregate is not an ordinal or\n           computed type, this reference is used to determine the coerced\n           output type of the aggregate.\n         * extra is a dictionary of additional data to provide for the\n           aggregate definition\n\n        Also utilizes the class variables:\n         * sql_function, the name of the SQL function that implements the\n           aggregate.\n         * sql_template, a template string that is used to render the\n           aggregate into SQL.\n         * is_ordinal, a boolean indicating if the output of this aggregate\n           is an integer (e.g., a count)\n         * is_computed, a boolean indicating if this output of this aggregate\n           is a computed float (e.g., an average), regardless of the input\n           type.\n\n        \"\"\"\n        self.col = col\n        self.source = source\n        self.is_summary = is_summary\n        self.extra = extra\n\n        # Follow the chain of aggregate sources back until you find an\n        # actual field, or an aggregate that forces a particular output\n        # type. This type of this field will be used to coerce values\n        # retrieved from the database.\n        tmp = self\n\n        while tmp and isinstance(tmp, Aggregate):\n            if getattr(tmp, 'is_ordinal', False):\n                tmp = ordinal_aggregate_field\n            elif getattr(tmp, 'is_computed', False):\n                tmp = computed_aggregate_field\n            else:\n                tmp = tmp.source\n\n        self.field = tmp\n\n    def relabel_aliases(self, change_map):\n        if isinstance(self.col, (list, tuple)):\n            self.col = (change_map.get(self.col[0], self.col[0]), self.col[1])\n\n    渲染为 sql 语句\n    def as_sql(self, qn, connection):\n        \"Return the aggregate, rendered as SQL.\"\n\n        if hasattr(self.col, 'as_sql'):\n            field_name = self.col.as_sql(qn, connection)\n        elif isinstance(self.col, (list, tuple)):\n            field_name = '.'.join([qn(c) for c in self.col])\n        else:\n            field_name = self.col\n\n        params = {\n            'function': self.sql_function,\n            'field': field_name\n        }\n        params.update(self.extra)\n\n        return self.sql_template % params\n\n\nclass Avg(Aggregate):\n    is_computed = True\n    sql_function = 'AVG'\n\nclass Count(Aggregate):\n    is_ordinal = True\n    sql_function = 'COUNT'\n    sql_template = '%(function)s(%(distinct)s%(field)s)'\n\n    def __init__(self, col, distinct=False, **extra):\n        super(Count, self).__init__(col, distinct=distinct and 'DISTINCT ' or '', **extra)\n\nclass Max(Aggregate):\n    sql_function = 'MAX'\n\nclass Min(Aggregate):\n    sql_function = 'MIN'\n\nclass StdDev(Aggregate):\n    is_computed = True\n\n    def __init__(self, col, sample=False, **extra):\n        super(StdDev, self).__init__(col, **extra)\n        self.sql_function = sample and 'STDDEV_SAMP' or 'STDDEV_POP'\n\nclass Sum(Aggregate):\n    sql_function = 'SUM'\n\nclass Variance(Aggregate):\n    is_computed = True\n\n    def __init__(self, col, sample=False, **extra):\n        super(Variance, self).__init__(col, **extra)\n        self.sql_function = sample and 'VAR_SAMP' or 'VAR_POP'\n"
  },
  {
    "path": "Django-1.5.1/django/db/models/sql/compiler.py",
    "content": "from django.utils.six.moves import zip\n\nfrom django.core.exceptions import FieldError\nfrom django.db import transaction\nfrom django.db.backends.util import truncate_name\nfrom django.db.models.constants import LOOKUP_SEP\nfrom django.db.models.query_utils import select_related_descend\nfrom django.db.models.sql.constants import (SINGLE, MULTI, ORDER_DIR,\n        GET_ITERATOR_CHUNK_SIZE)\nfrom django.db.models.sql.datastructures import EmptyResultSet\nfrom django.db.models.sql.expressions import SQLEvaluator\nfrom django.db.models.sql.query import get_order_dir, Query\nfrom django.db.utils import DatabaseError\nfrom django.utils import six\n\n\nclass SQLCompiler(object):\n    def __init__(self, query, connection, using):\n        self.query = query\n        self.connection = connection\n        self.using = using\n        self.quote_cache = {}\n\n    def pre_sql_setup(self):\n        \"\"\"\n        Does any necessary class setup immediately prior to producing SQL. This\n        is for things that can't necessarily be done in __init__ because we\n        might not have all the pieces in place at that time.\n        # TODO: after the query has been executed, the altered state should be\n        # cleaned. We are not using a clone() of the query here.\n        \"\"\"\n        if not self.query.tables:\n            self.query.join((None, self.query.model._meta.db_table, None, None))\n\n        if (not self.query.select and self.query.default_cols and not\n                self.query.included_inherited_models):\n            self.query.setup_inherited_models()\n\n        if self.query.select_related and not self.query.related_select_cols:\n            self.fill_related_selections()\n\n    def quote_name_unless_alias(self, name):\n        \"\"\"\n        A wrapper around connection.ops.quote_name that doesn't quote aliases\n        for table names. This avoids problems with some SQL dialects that treat\n        quoted strings specially (e.g. PostgreSQL).\n        \"\"\"\n        if name in self.quote_cache:\n            return self.quote_cache[name]\n        if ((name in self.query.alias_map and name not in self.query.table_map) or\n                name in self.query.extra_select):\n            self.quote_cache[name] = name\n            return name\n        r = self.connection.ops.quote_name(name)\n        self.quote_cache[name] = r\n        return r\n\n    def as_sql(self, with_limits=True, with_col_aliases=False):\n        \"\"\"\n        Creates the SQL for this query. Returns the SQL string and list of\n        parameters.\n\n        If 'with_limits' is False, any limit/offset information is not included\n        in the query.\n        \"\"\"\n        if with_limits and self.query.low_mark == self.query.high_mark:\n            return '', ()\n\n        self.pre_sql_setup()\n        # After executing the query, we must get rid of any joins the query\n        # setup created. So, take note of alias counts before the query ran.\n        # However we do not want to get rid of stuff done in pre_sql_setup(),\n        # as the pre_sql_setup will modify query state in a way that forbids\n        # another run of it.\n        self.refcounts_before = self.query.alias_refcount.copy()\n        out_cols = self.get_columns(with_col_aliases)\n        ordering, ordering_group_by = self.get_ordering()\n\n        distinct_fields = self.get_distinct()\n\n        # This must come after 'select', 'ordering' and 'distinct' -- see\n        # docstring of get_from_clause() for details.\n        from_, f_params = self.get_from_clause()\n\n        qn = self.quote_name_unless_alias\n\n        where, w_params = self.query.where.as_sql(qn=qn, connection=self.connection)\n        having, h_params = self.query.having.as_sql(qn=qn, connection=self.connection)\n        params = []\n        for val in six.itervalues(self.query.extra_select):\n            params.extend(val[1])\n\n        result = ['SELECT']\n\n        if self.query.distinct:\n            result.append(self.connection.ops.distinct_sql(distinct_fields))\n\n        result.append(', '.join(out_cols + self.query.ordering_aliases))\n\n        result.append('FROM')\n        result.extend(from_)\n        params.extend(f_params)\n\n        if where:\n            result.append('WHERE %s' % where)\n            params.extend(w_params)\n\n        grouping, gb_params = self.get_grouping(ordering_group_by)\n        if grouping:\n            if distinct_fields:\n                raise NotImplementedError(\n                    \"annotate() + distinct(fields) not implemented.\")\n            if not ordering:\n                ordering = self.connection.ops.force_no_ordering()\n            result.append('GROUP BY %s' % ', '.join(grouping))\n            params.extend(gb_params)\n\n        if having:\n            result.append('HAVING %s' % having)\n            params.extend(h_params)\n\n        if ordering:\n            result.append('ORDER BY %s' % ', '.join(ordering))\n\n        if with_limits:\n            if self.query.high_mark is not None:\n                result.append('LIMIT %d' % (self.query.high_mark - self.query.low_mark))\n            if self.query.low_mark:\n                if self.query.high_mark is None:\n                    val = self.connection.ops.no_limit_value()\n                    if val:\n                        result.append('LIMIT %d' % val)\n                result.append('OFFSET %d' % self.query.low_mark)\n\n        if self.query.select_for_update and self.connection.features.has_select_for_update:\n            # If we've been asked for a NOWAIT query but the backend does not support it,\n            # raise a DatabaseError otherwise we could get an unexpected deadlock.\n            nowait = self.query.select_for_update_nowait\n            if nowait and not self.connection.features.has_select_for_update_nowait:\n                raise DatabaseError('NOWAIT is not supported on this database backend.')\n            result.append(self.connection.ops.for_update_sql(nowait=nowait))\n\n        # Finally do cleanup - get rid of the joins we created above.\n        self.query.reset_refcounts(self.refcounts_before)\n\n        return ' '.join(result), tuple(params)\n\n    def as_nested_sql(self):\n        \"\"\"\n        Perform the same functionality as the as_sql() method, returning an\n        SQL string and parameters. However, the alias prefixes are bumped\n        beforehand (in a copy -- the current query isn't changed), and any\n        ordering is removed if the query is unsliced.\n\n        Used when nesting this query inside another.\n        \"\"\"\n        obj = self.query.clone()\n        if obj.low_mark == 0 and obj.high_mark is None:\n            # If there is no slicing in use, then we can safely drop all ordering\n            obj.clear_ordering(True)\n        obj.bump_prefix()\n        return obj.get_compiler(connection=self.connection).as_sql()\n\n    def get_columns(self, with_aliases=False):\n        \"\"\"\n        Returns the list of columns to use in the select statement. If no\n        columns have been specified, returns all columns relating to fields in\n        the model.\n\n        If 'with_aliases' is true, any column names that are duplicated\n        (without the table names) are given unique aliases. This is needed in\n        some cases to avoid ambiguity with nested queries.\n        \"\"\"\n        qn = self.quote_name_unless_alias\n        qn2 = self.connection.ops.quote_name\n        result = ['(%s) AS %s' % (col[0], qn2(alias)) for alias, col in six.iteritems(self.query.extra_select)]\n        aliases = set(self.query.extra_select.keys())\n        if with_aliases:\n            col_aliases = aliases.copy()\n        else:\n            col_aliases = set()\n        if self.query.select:\n            only_load = self.deferred_to_columns()\n            for col in self.query.select:\n                if isinstance(col, (list, tuple)):\n                    alias, column = col\n                    table = self.query.alias_map[alias].table_name\n                    if table in only_load and column not in only_load[table]:\n                        continue\n                    r = '%s.%s' % (qn(alias), qn(column))\n                    if with_aliases:\n                        if col[1] in col_aliases:\n                            c_alias = 'Col%d' % len(col_aliases)\n                            result.append('%s AS %s' % (r, c_alias))\n                            aliases.add(c_alias)\n                            col_aliases.add(c_alias)\n                        else:\n                            result.append('%s AS %s' % (r, qn2(col[1])))\n                            aliases.add(r)\n                            col_aliases.add(col[1])\n                    else:\n                        result.append(r)\n                        aliases.add(r)\n                        col_aliases.add(col[1])\n                else:\n                    result.append(col.as_sql(qn, self.connection))\n\n                    if hasattr(col, 'alias'):\n                        aliases.add(col.alias)\n                        col_aliases.add(col.alias)\n\n        elif self.query.default_cols:\n            cols, new_aliases = self.get_default_columns(with_aliases,\n                    col_aliases)\n            result.extend(cols)\n            aliases.update(new_aliases)\n\n        max_name_length = self.connection.ops.max_name_length()\n        result.extend([\n            '%s%s' % (\n                aggregate.as_sql(qn, self.connection),\n                alias is not None\n                    and ' AS %s' % qn(truncate_name(alias, max_name_length))\n                    or ''\n            )\n            for alias, aggregate in self.query.aggregate_select.items()\n        ])\n\n        for table, col in self.query.related_select_cols:\n            r = '%s.%s' % (qn(table), qn(col))\n            if with_aliases and col in col_aliases:\n                c_alias = 'Col%d' % len(col_aliases)\n                result.append('%s AS %s' % (r, c_alias))\n                aliases.add(c_alias)\n                col_aliases.add(c_alias)\n            else:\n                result.append(r)\n                aliases.add(r)\n                col_aliases.add(col)\n\n        self._select_aliases = aliases\n        return result\n\n    def get_default_columns(self, with_aliases=False, col_aliases=None,\n            start_alias=None, opts=None, as_pairs=False, local_only=False):\n        \"\"\"\n        Computes the default columns for selecting every field in the base\n        model. Will sometimes be called to pull in related models (e.g. via\n        select_related), in which case \"opts\" and \"start_alias\" will be given\n        to provide a starting point for the traversal.\n\n        Returns a list of strings, quoted appropriately for use in SQL\n        directly, as well as a set of aliases used in the select statement (if\n        'as_pairs' is True, returns a list of (alias, col_name) pairs instead\n        of strings as the first component and None as the second component).\n        \"\"\"\n        result = []\n        if opts is None:\n            opts = self.query.model._meta\n        qn = self.quote_name_unless_alias\n        qn2 = self.connection.ops.quote_name\n        aliases = set()\n        only_load = self.deferred_to_columns()\n\n        if start_alias:\n            seen = {None: start_alias}\n        for field, model in opts.get_fields_with_model():\n            # For local fields (even if through proxy) the model should\n            # be None.\n            if model == opts.concrete_model:\n                model = None\n            if local_only and model is not None:\n                continue\n            if start_alias:\n                try:\n                    alias = seen[model]\n                except KeyError:\n                    link_field = opts.get_ancestor_link(model)\n                    alias = self.query.join((start_alias, model._meta.db_table,\n                            link_field.column, model._meta.pk.column))\n                    seen[model] = alias\n            else:\n                # If we're starting from the base model of the queryset, the\n                # aliases will have already been set up in pre_sql_setup(), so\n                # we can save time here.\n                alias = self.query.included_inherited_models[model]\n            table = self.query.alias_map[alias].table_name\n            if table in only_load and field.column not in only_load[table]:\n                continue\n            if as_pairs:\n                result.append((alias, field.column))\n                aliases.add(alias)\n                continue\n            if with_aliases and field.column in col_aliases:\n                c_alias = 'Col%d' % len(col_aliases)\n                result.append('%s.%s AS %s' % (qn(alias),\n                    qn2(field.column), c_alias))\n                col_aliases.add(c_alias)\n                aliases.add(c_alias)\n            else:\n                r = '%s.%s' % (qn(alias), qn2(field.column))\n                result.append(r)\n                aliases.add(r)\n                if with_aliases:\n                    col_aliases.add(field.column)\n        return result, aliases\n\n    def get_distinct(self):\n        \"\"\"\n        Returns a quoted list of fields to use in DISTINCT ON part of the query.\n\n        Note that this method can alter the tables in the query, and thus it\n        must be called before get_from_clause().\n        \"\"\"\n        qn = self.quote_name_unless_alias\n        qn2 = self.connection.ops.quote_name\n        result = []\n        opts = self.query.model._meta\n\n        for name in self.query.distinct_fields:\n            parts = name.split(LOOKUP_SEP)\n            field, col, alias, _, _ = self._setup_joins(parts, opts, None)\n            col, alias = self._final_join_removal(col, alias)\n            result.append(\"%s.%s\" % (qn(alias), qn2(col)))\n        return result\n\n\n    def get_ordering(self):\n        \"\"\"\n        Returns a tuple containing a list representing the SQL elements in the\n        \"order by\" clause, and the list of SQL elements that need to be added\n        to the GROUP BY clause as a result of the ordering.\n\n        Also sets the ordering_aliases attribute on this instance to a list of\n        extra aliases needed in the select.\n\n        Determining the ordering SQL can change the tables we need to include,\n        so this should be run *before* get_from_clause().\n        \"\"\"\n        if self.query.extra_order_by:\n            ordering = self.query.extra_order_by\n        elif not self.query.default_ordering:\n            ordering = self.query.order_by\n        else:\n            ordering = (self.query.order_by\n                        or self.query.model._meta.ordering\n                        or [])\n        qn = self.quote_name_unless_alias\n        qn2 = self.connection.ops.quote_name\n        distinct = self.query.distinct\n        select_aliases = self._select_aliases\n        result = []\n        group_by = []\n        ordering_aliases = []\n        if self.query.standard_ordering:\n            asc, desc = ORDER_DIR['ASC']\n        else:\n            asc, desc = ORDER_DIR['DESC']\n\n        # It's possible, due to model inheritance, that normal usage might try\n        # to include the same field more than once in the ordering. We track\n        # the table/column pairs we use and discard any after the first use.\n        processed_pairs = set()\n\n        for field in ordering:\n            if field == '?':\n                result.append(self.connection.ops.random_function_sql())\n                continue\n            if isinstance(field, int):\n                if field < 0:\n                    order = desc\n                    field = -field\n                else:\n                    order = asc\n                result.append('%s %s' % (field, order))\n                group_by.append((str(field), []))\n                continue\n            col, order = get_order_dir(field, asc)\n            if col in self.query.aggregate_select:\n                result.append('%s %s' % (qn(col), order))\n                continue\n            if '.' in field:\n                # This came in through an extra(order_by=...) addition. Pass it\n                # on verbatim.\n                table, col = col.split('.', 1)\n                if (table, col) not in processed_pairs:\n                    elt = '%s.%s' % (qn(table), col)\n                    processed_pairs.add((table, col))\n                    if not distinct or elt in select_aliases:\n                        result.append('%s %s' % (elt, order))\n                        group_by.append((elt, []))\n            elif get_order_dir(field)[0] not in self.query.extra_select:\n                # 'col' is of the form 'field' or 'field1__field2' or\n                # '-field1__field2__field', etc.\n                for table, col, order in self.find_ordering_name(field,\n                        self.query.model._meta, default_order=asc):\n                    if (table, col) not in processed_pairs:\n                        elt = '%s.%s' % (qn(table), qn2(col))\n                        processed_pairs.add((table, col))\n                        if distinct and elt not in select_aliases:\n                            ordering_aliases.append(elt)\n                        result.append('%s %s' % (elt, order))\n                        group_by.append((elt, []))\n            else:\n                elt = qn2(col)\n                if distinct and col not in select_aliases:\n                    ordering_aliases.append(elt)\n                result.append('%s %s' % (elt, order))\n                group_by.append(self.query.extra_select[col])\n        self.query.ordering_aliases = ordering_aliases\n        return result, group_by\n\n    def find_ordering_name(self, name, opts, alias=None, default_order='ASC',\n            already_seen=None):\n        \"\"\"\n        Returns the table alias (the name might be ambiguous, the alias will\n        not be) and column name for ordering by the given 'name' parameter.\n        The 'name' is of the form 'field1__field2__...__fieldN'.\n        \"\"\"\n        name, order = get_order_dir(name, default_order)\n        pieces = name.split(LOOKUP_SEP)\n        field, col, alias, joins, opts = self._setup_joins(pieces, opts, alias)\n\n        # If we get to this point and the field is a relation to another model,\n        # append the default ordering for that model.\n        if field.rel and len(joins) > 1 and opts.ordering:\n            # Firstly, avoid infinite loops.\n            if not already_seen:\n                already_seen = set()\n            join_tuple = tuple([self.query.alias_map[j].table_name for j in joins])\n            if join_tuple in already_seen:\n                raise FieldError('Infinite loop caused by ordering.')\n            already_seen.add(join_tuple)\n\n            results = []\n            for item in opts.ordering:\n                results.extend(self.find_ordering_name(item, opts, alias,\n                        order, already_seen))\n            return results\n        col, alias = self._final_join_removal(col, alias)\n        return [(alias, col, order)]\n\n    def _setup_joins(self, pieces, opts, alias):\n        \"\"\"\n        A helper method for get_ordering and get_distinct. This method will\n        call query.setup_joins, handle refcounts and then promote the joins.\n\n        Note that get_ordering and get_distinct must produce same target\n        columns on same input, as the prefixes of get_ordering and get_distinct\n        must match. Executing SQL where this is not true is an error.\n        \"\"\"\n        if not alias:\n            alias = self.query.get_initial_alias()\n        field, target, opts, joins, _, _ = self.query.setup_joins(pieces,\n                opts, alias, False)\n        # We will later on need to promote those joins that were added to the\n        # query afresh above.\n        joins_to_promote = [j for j in joins if self.query.alias_refcount[j] < 2]\n        alias = joins[-1]\n        col = target.column\n        if not field.rel:\n            # To avoid inadvertent trimming of a necessary alias, use the\n            # refcount to show that we are referencing a non-relation field on\n            # the model.\n            self.query.ref_alias(alias)\n\n        # Must use left outer joins for nullable fields and their relations.\n        # Ordering or distinct must not affect the returned set, and INNER\n        # JOINS for nullable fields could do this.\n        self.query.promote_joins(joins_to_promote)\n        return field, col, alias, joins, opts\n\n    def _final_join_removal(self, col, alias):\n        \"\"\"\n        A helper method for get_distinct and get_ordering. This method will\n        trim extra not-needed joins from the tail of the join chain.\n\n        This is very similar to what is done in trim_joins, but we will\n        trim LEFT JOINS here. It would be a good idea to consolidate this\n        method and query.trim_joins().\n        \"\"\"\n        if alias:\n            while 1:\n                join = self.query.alias_map[alias]\n                if col != join.rhs_join_col:\n                    break\n                self.query.unref_alias(alias)\n                alias = join.lhs_alias\n                col = join.lhs_join_col\n        return col, alias\n\n    def get_from_clause(self):\n        \"\"\"\n        Returns a list of strings that are joined together to go after the\n        \"FROM\" part of the query, as well as a list any extra parameters that\n        need to be included. Sub-classes, can override this to create a\n        from-clause via a \"select\".\n\n        This should only be called after any SQL construction methods that\n        might change the tables we need. This means the select columns,\n        ordering and distinct must be done first.\n        \"\"\"\n        result = []\n        qn = self.quote_name_unless_alias\n        qn2 = self.connection.ops.quote_name\n        first = True\n        for alias in self.query.tables:\n            if not self.query.alias_refcount[alias]:\n                continue\n            try:\n                name, alias, join_type, lhs, lhs_col, col, nullable = self.query.alias_map[alias]\n            except KeyError:\n                # Extra tables can end up in self.tables, but not in the\n                # alias_map if they aren't in a join. That's OK. We skip them.\n                continue\n            alias_str = (alias != name and ' %s' % alias or '')\n            if join_type and not first:\n                result.append('%s %s%s ON (%s.%s = %s.%s)'\n                        % (join_type, qn(name), alias_str, qn(lhs),\n                           qn2(lhs_col), qn(alias), qn2(col)))\n            else:\n                connector = not first and ', ' or ''\n                result.append('%s%s%s' % (connector, qn(name), alias_str))\n            first = False\n        for t in self.query.extra_tables:\n            alias, unused = self.query.table_alias(t)\n            # Only add the alias if it's not already present (the table_alias()\n            # calls increments the refcount, so an alias refcount of one means\n            # this is the only reference.\n            if alias not in self.query.alias_map or self.query.alias_refcount[alias] == 1:\n                connector = not first and ', ' or ''\n                result.append('%s%s' % (connector, qn(alias)))\n                first = False\n        return result, []\n\n    def get_grouping(self, ordering_group_by):\n        \"\"\"\n        Returns a tuple representing the SQL elements in the \"group by\" clause.\n        \"\"\"\n        qn = self.quote_name_unless_alias\n        result, params = [], []\n        if self.query.group_by is not None:\n            select_cols = self.query.select + self.query.related_select_cols\n            if (len(self.query.model._meta.fields) == len(self.query.select)\n                    and self.connection.features.allows_group_by_pk):\n                self.query.group_by = [\n                    (self.query.model._meta.db_table, self.query.model._meta.pk.column)\n                ]\n                select_cols = []\n            seen = set()\n            cols = self.query.group_by + select_cols\n            for col in cols:\n                if isinstance(col, (list, tuple)):\n                    sql = '%s.%s' % (qn(col[0]), qn(col[1]))\n                elif hasattr(col, 'as_sql'):\n                    sql = col.as_sql(qn, self.connection)\n                else:\n                    sql = '(%s)' % str(col)\n                if sql not in seen:\n                    result.append(sql)\n                    seen.add(sql)\n\n            # Still, we need to add all stuff in ordering (except if the backend can\n            # group by just by PK).\n            if ordering_group_by and not self.connection.features.allows_group_by_pk:\n                for order, order_params in ordering_group_by:\n                    # Even if we have seen the same SQL string, it might have\n                    # different params, so, we add same SQL in \"has params\" case.\n                    if order not in seen or params:\n                        result.append(order)\n                        params.extend(order_params)\n                        seen.add(order)\n\n            # Unconditionally add the extra_select items.\n            for extra_select, extra_params in self.query.extra_select.values():\n                sql = '(%s)' % str(extra_select)\n                result.append(sql)\n                params.extend(extra_params)\n\n        return result, params\n\n    def fill_related_selections(self, opts=None, root_alias=None, cur_depth=1,\n            used=None, requested=None, restricted=None, nullable=None,\n            dupe_set=None, avoid_set=None):\n        \"\"\"\n        Fill in the information needed for a select_related query. The current\n        depth is measured as the number of connections away from the root model\n        (for example, cur_depth=1 means we are looking at models with direct\n        connections to the root model).\n        \"\"\"\n        if not restricted and self.query.max_depth and cur_depth > self.query.max_depth:\n            # We've recursed far enough; bail out.\n            return\n\n        if not opts:\n            opts = self.query.get_meta()\n            root_alias = self.query.get_initial_alias()\n            self.query.related_select_cols = []\n            self.query.related_select_fields = []\n        if not used:\n            used = set()\n        if dupe_set is None:\n            dupe_set = set()\n        if avoid_set is None:\n            avoid_set = set()\n        orig_dupe_set = dupe_set\n        only_load = self.query.get_loaded_field_names()\n\n        # Setup for the case when only particular related fields should be\n        # included in the related selection.\n        if requested is None:\n            if isinstance(self.query.select_related, dict):\n                requested = self.query.select_related\n                restricted = True\n            else:\n                restricted = False\n\n        for f, model in opts.get_fields_with_model():\n            # The get_fields_with_model() returns None for fields that live\n            # in the field's local model. So, for those fields we want to use\n            # the f.model - that is the field's local model.\n            field_model = model or f.model\n            if not select_related_descend(f, restricted, requested,\n                                          only_load.get(field_model)):\n                continue\n            # The \"avoid\" set is aliases we want to avoid just for this\n            # particular branch of the recursion. They aren't permanently\n            # forbidden from reuse in the related selection tables (which is\n            # what \"used\" specifies).\n            avoid = avoid_set.copy()\n            dupe_set = orig_dupe_set.copy()\n            table = f.rel.to._meta.db_table\n            promote = nullable or f.null\n            if model:\n                int_opts = opts\n                alias = root_alias\n                alias_chain = []\n                for int_model in opts.get_base_chain(model):\n                    # Proxy model have elements in base chain\n                    # with no parents, assign the new options\n                    # object and skip to the next base in that\n                    # case\n                    if not int_opts.parents[int_model]:\n                        int_opts = int_model._meta\n                        continue\n                    lhs_col = int_opts.parents[int_model].column\n                    dedupe = lhs_col in opts.duplicate_targets\n                    if dedupe:\n                        avoid.update(self.query.dupe_avoidance.get((id(opts), lhs_col),\n                                ()))\n                        dupe_set.add((opts, lhs_col))\n                    int_opts = int_model._meta\n                    alias = self.query.join((alias, int_opts.db_table, lhs_col,\n                            int_opts.pk.column), exclusions=used,\n                            promote=promote)\n                    alias_chain.append(alias)\n                    for (dupe_opts, dupe_col) in dupe_set:\n                        self.query.update_dupe_avoidance(dupe_opts, dupe_col, alias)\n            else:\n                alias = root_alias\n\n            dedupe = f.column in opts.duplicate_targets\n            if dupe_set or dedupe:\n                avoid.update(self.query.dupe_avoidance.get((id(opts), f.column), ()))\n                if dedupe:\n                    dupe_set.add((opts, f.column))\n\n            alias = self.query.join((alias, table, f.column,\n                    f.rel.get_related_field().column),\n                    exclusions=used.union(avoid), promote=promote)\n            used.add(alias)\n            columns, aliases = self.get_default_columns(start_alias=alias,\n                    opts=f.rel.to._meta, as_pairs=True)\n            self.query.related_select_cols.extend(columns)\n            self.query.related_select_fields.extend(f.rel.to._meta.fields)\n            if restricted:\n                next = requested.get(f.name, {})\n            else:\n                next = False\n            new_nullable = f.null or promote\n            for dupe_opts, dupe_col in dupe_set:\n                self.query.update_dupe_avoidance(dupe_opts, dupe_col, alias)\n            self.fill_related_selections(f.rel.to._meta, alias, cur_depth + 1,\n                    used, next, restricted, new_nullable, dupe_set, avoid)\n\n        if restricted:\n            related_fields = [\n                (o.field, o.model)\n                for o in opts.get_all_related_objects()\n                if o.field.unique\n            ]\n            for f, model in related_fields:\n                if not select_related_descend(f, restricted, requested,\n                                              only_load.get(model), reverse=True):\n                    continue\n                # The \"avoid\" set is aliases we want to avoid just for this\n                # particular branch of the recursion. They aren't permanently\n                # forbidden from reuse in the related selection tables (which is\n                # what \"used\" specifies).\n                avoid = avoid_set.copy()\n                dupe_set = orig_dupe_set.copy()\n                table = model._meta.db_table\n\n                int_opts = opts\n                alias = root_alias\n                alias_chain = []\n                chain = opts.get_base_chain(f.rel.to)\n                if chain is not None:\n                    for int_model in chain:\n                        # Proxy model have elements in base chain\n                        # with no parents, assign the new options\n                        # object and skip to the next base in that\n                        # case\n                        if not int_opts.parents[int_model]:\n                            int_opts = int_model._meta\n                            continue\n                        lhs_col = int_opts.parents[int_model].column\n                        dedupe = lhs_col in opts.duplicate_targets\n                        if dedupe:\n                            avoid.update((self.query.dupe_avoidance.get(id(opts), lhs_col),\n                                ()))\n                            dupe_set.add((opts, lhs_col))\n                        int_opts = int_model._meta\n                        alias = self.query.join(\n                            (alias, int_opts.db_table, lhs_col, int_opts.pk.column),\n                            exclusions=used, promote=True, reuse=used\n                        )\n                        alias_chain.append(alias)\n                        for dupe_opts, dupe_col in dupe_set:\n                            self.query.update_dupe_avoidance(dupe_opts, dupe_col, alias)\n                    dedupe = f.column in opts.duplicate_targets\n                    if dupe_set or dedupe:\n                        avoid.update(self.query.dupe_avoidance.get((id(opts), f.column), ()))\n                        if dedupe:\n                            dupe_set.add((opts, f.column))\n                alias = self.query.join(\n                    (alias, table, f.rel.get_related_field().column, f.column),\n                    exclusions=used.union(avoid),\n                    promote=True\n                )\n                used.add(alias)\n                columns, aliases = self.get_default_columns(start_alias=alias,\n                    opts=model._meta, as_pairs=True, local_only=True)\n                self.query.related_select_cols.extend(columns)\n                self.query.related_select_fields.extend(model._meta.fields)\n\n                next = requested.get(f.related_query_name(), {})\n                # Use True here because we are looking at the _reverse_ side of\n                # the relation, which is always nullable.\n                new_nullable = True\n\n                self.fill_related_selections(model._meta, table, cur_depth+1,\n                    used, next, restricted, new_nullable)\n\n    def deferred_to_columns(self):\n        \"\"\"\n        Converts the self.deferred_loading data structure to mapping of table\n        names to sets of column names which are to be loaded. Returns the\n        dictionary.\n        \"\"\"\n        columns = {}\n        self.query.deferred_to_data(columns, self.query.deferred_to_columns_cb)\n        return columns\n\n    def results_iter(self):\n        \"\"\"\n        Returns an iterator over the results from executing this query.\n        \"\"\"\n        resolve_columns = hasattr(self, 'resolve_columns')\n        fields = None\n        has_aggregate_select = bool(self.query.aggregate_select)\n        # Set transaction dirty if we're using SELECT FOR UPDATE to ensure\n        # a subsequent commit/rollback is executed, so any database locks\n        # are released.\n        if self.query.select_for_update and transaction.is_managed(self.using):\n            transaction.set_dirty(self.using)\n        for rows in self.execute_sql(MULTI):\n            for row in rows:\n                if resolve_columns:\n                    if fields is None:\n                        # We only set this up here because\n                        # related_select_fields isn't populated until\n                        # execute_sql() has been called.\n\n                        # We also include types of fields of related models that\n                        # will be included via select_related() for the benefit\n                        # of MySQL/MySQLdb when boolean fields are involved\n                        # (#15040).\n\n                        # This code duplicates the logic for the order of fields\n                        # found in get_columns(). It would be nice to clean this up.\n                        if self.query.select_fields:\n                            fields = self.query.select_fields\n                        else:\n                            fields = self.query.model._meta.fields\n                        fields = fields + self.query.related_select_fields\n\n                        # If the field was deferred, exclude it from being passed\n                        # into `resolve_columns` because it wasn't selected.\n                        only_load = self.deferred_to_columns()\n                        if only_load:\n                            db_table = self.query.model._meta.db_table\n                            fields = [f for f in fields if db_table in only_load and\n                                      f.column in only_load[db_table]]\n                    row = self.resolve_columns(row, fields)\n\n                if has_aggregate_select:\n                    aggregate_start = len(self.query.extra_select) + len(self.query.select)\n                    aggregate_end = aggregate_start + len(self.query.aggregate_select)\n                    row = tuple(row[:aggregate_start]) + tuple([\n                        self.query.resolve_aggregate(value, aggregate, self.connection)\n                        for (alias, aggregate), value\n                        in zip(self.query.aggregate_select.items(), row[aggregate_start:aggregate_end])\n                    ]) + tuple(row[aggregate_end:])\n\n                yield row\n\n    def execute_sql(self, result_type=MULTI):\n        \"\"\"\n        Run the query against the database and returns the result(s). The\n        return value is a single data item if result_type is SINGLE, or an\n        iterator over the results if the result_type is MULTI.\n\n        result_type is either MULTI (use fetchmany() to retrieve all rows),\n        SINGLE (only retrieve a single row), or None. In this last case, the\n        cursor is returned if any query is executed, since it's used by\n        subclasses such as InsertQuery). It's possible, however, that no query\n        is needed, as the filters describe an empty set. In that case, None is\n        returned, to avoid any unnecessary database interaction.\n        \"\"\"\n        try:\n            sql, params = self.as_sql()\n            if not sql:\n                raise EmptyResultSet\n        except EmptyResultSet:\n            if result_type == MULTI:\n                return iter([])\n            else:\n                return\n\n        cursor = self.connection.cursor()\n        cursor.execute(sql, params)\n\n        if not result_type:\n            return cursor\n        if result_type == SINGLE:\n            if self.query.ordering_aliases:\n                return cursor.fetchone()[:-len(self.query.ordering_aliases)]\n            return cursor.fetchone()\n\n        # The MULTI case.\n        if self.query.ordering_aliases:\n            result = order_modified_iter(cursor, len(self.query.ordering_aliases),\n                    self.connection.features.empty_fetchmany_value)\n        else:\n            result = iter((lambda: cursor.fetchmany(GET_ITERATOR_CHUNK_SIZE)),\n                    self.connection.features.empty_fetchmany_value)\n        if not self.connection.features.can_use_chunked_reads:\n            # If we are using non-chunked reads, we return the same data\n            # structure as normally, but ensure it is all read into memory\n            # before going any further.\n            return list(result)\n        return result\n\n\nclass SQLInsertCompiler(SQLCompiler):\n    def placeholder(self, field, val):\n        if field is None:\n            # A field value of None means the value is raw.\n            return val\n        elif hasattr(field, 'get_placeholder'):\n            # Some fields (e.g. geo fields) need special munging before\n            # they can be inserted.\n            return field.get_placeholder(val, self.connection)\n        else:\n            # Return the common case for the placeholder\n            return '%s'\n\n    def as_sql(self):\n        # We don't need quote_name_unless_alias() here, since these are all\n        # going to be column names (so we can avoid the extra overhead).\n        qn = self.connection.ops.quote_name\n        opts = self.query.model._meta\n        result = ['INSERT INTO %s' % qn(opts.db_table)]\n\n        has_fields = bool(self.query.fields)\n        fields = self.query.fields if has_fields else [opts.pk]\n        result.append('(%s)' % ', '.join([qn(f.column) for f in fields]))\n\n        if has_fields:\n            params = values = [\n                [\n                    f.get_db_prep_save(getattr(obj, f.attname) if self.query.raw else f.pre_save(obj, True), connection=self.connection)\n                    for f in fields\n                ]\n                for obj in self.query.objs\n            ]\n        else:\n            values = [[self.connection.ops.pk_default_value()] for obj in self.query.objs]\n            params = [[]]\n            fields = [None]\n        can_bulk = (not any(hasattr(field, \"get_placeholder\") for field in fields) and\n            not self.return_id and self.connection.features.has_bulk_insert)\n\n        if can_bulk:\n            placeholders = [[\"%s\"] * len(fields)]\n        else:\n            placeholders = [\n                [self.placeholder(field, v) for field, v in zip(fields, val)]\n                for val in values\n            ]\n            # Oracle Spatial needs to remove some values due to #10888\n            params = self.connection.ops.modify_insert_params(placeholders, params)\n        if self.return_id and self.connection.features.can_return_id_from_insert:\n            params = params[0]\n            col = \"%s.%s\" % (qn(opts.db_table), qn(opts.pk.column))\n            result.append(\"VALUES (%s)\" % \", \".join(placeholders[0]))\n            r_fmt, r_params = self.connection.ops.return_insert_id()\n            # Skip empty r_fmt to allow subclasses to customize behaviour for\n            # 3rd party backends. Refs #19096.\n            if r_fmt:\n                result.append(r_fmt % col)\n                params += r_params\n            return [(\" \".join(result), tuple(params))]\n        if can_bulk:\n            result.append(self.connection.ops.bulk_insert_sql(fields, len(values)))\n            return [(\" \".join(result), tuple([v for val in values for v in val]))]\n        else:\n            return [\n                (\" \".join(result + [\"VALUES (%s)\" % \", \".join(p)]), vals)\n                for p, vals in zip(placeholders, params)\n            ]\n\n    def execute_sql(self, return_id=False):\n        assert not (return_id and len(self.query.objs) != 1)\n        self.return_id = return_id\n        cursor = self.connection.cursor()\n        for sql, params in self.as_sql():\n            cursor.execute(sql, params)\n        if not (return_id and cursor):\n            return\n        if self.connection.features.can_return_id_from_insert:\n            return self.connection.ops.fetch_returned_insert_id(cursor)\n        return self.connection.ops.last_insert_id(cursor,\n                self.query.model._meta.db_table, self.query.model._meta.pk.column)\n\n\nclass SQLDeleteCompiler(SQLCompiler):\n    def as_sql(self):\n        \"\"\"\n        Creates the SQL for this query. Returns the SQL string and list of\n        parameters.\n        \"\"\"\n        assert len(self.query.tables) == 1, \\\n                \"Can only delete from one table at a time.\"\n        qn = self.quote_name_unless_alias\n        result = ['DELETE FROM %s' % qn(self.query.tables[0])]\n        where, params = self.query.where.as_sql(qn=qn, connection=self.connection)\n        if where:\n            result.append('WHERE %s' % where)\n        return ' '.join(result), tuple(params)\n\nclass SQLUpdateCompiler(SQLCompiler):\n    def as_sql(self):\n        \"\"\"\n        Creates the SQL for this query. Returns the SQL string and list of\n        parameters.\n        \"\"\"\n        self.pre_sql_setup()\n        if not self.query.values:\n            return '', ()\n        table = self.query.tables[0]\n        qn = self.quote_name_unless_alias\n        result = ['UPDATE %s' % qn(table)]\n        result.append('SET')\n        values, update_params = [], []\n        for field, model, val in self.query.values:\n            if hasattr(val, 'prepare_database_save'):\n                val = val.prepare_database_save(field)\n            else:\n                val = field.get_db_prep_save(val, connection=self.connection)\n\n            # Getting the placeholder for the field.\n            if hasattr(field, 'get_placeholder'):\n                placeholder = field.get_placeholder(val, self.connection)\n            else:\n                placeholder = '%s'\n\n            if hasattr(val, 'evaluate'):\n                val = SQLEvaluator(val, self.query, allow_joins=False)\n            name = field.column\n            if hasattr(val, 'as_sql'):\n                sql, params = val.as_sql(qn, self.connection)\n                values.append('%s = %s' % (qn(name), sql))\n                update_params.extend(params)\n            elif val is not None:\n                values.append('%s = %s' % (qn(name), placeholder))\n                update_params.append(val)\n            else:\n                values.append('%s = NULL' % qn(name))\n        if not values:\n            return '', ()\n        result.append(', '.join(values))\n        where, params = self.query.where.as_sql(qn=qn, connection=self.connection)\n        if where:\n            result.append('WHERE %s' % where)\n        return ' '.join(result), tuple(update_params + params)\n\n    def execute_sql(self, result_type):\n        \"\"\"\n        Execute the specified update. Returns the number of rows affected by\n        the primary update query. The \"primary update query\" is the first\n        non-empty query that is executed. Row counts for any subsequent,\n        related queries are not available.\n        \"\"\"\n        cursor = super(SQLUpdateCompiler, self).execute_sql(result_type)\n        rows = cursor and cursor.rowcount or 0\n        is_empty = cursor is None\n        del cursor\n        for query in self.query.get_related_updates():\n            aux_rows = query.get_compiler(self.using).execute_sql(result_type)\n            if is_empty:\n                rows = aux_rows\n                is_empty = False\n        return rows\n\n    def pre_sql_setup(self):\n        \"\"\"\n        If the update depends on results from other tables, we need to do some\n        munging of the \"where\" conditions to match the format required for\n        (portable) SQL updates. That is done here.\n\n        Further, if we are going to be running multiple updates, we pull out\n        the id values to update at this point so that they don't change as a\n        result of the progressive updates.\n        \"\"\"\n        self.query.select_related = False\n        self.query.clear_ordering(True)\n        super(SQLUpdateCompiler, self).pre_sql_setup()\n        count = self.query.count_active_tables()\n        if not self.query.related_updates and count == 1:\n            return\n\n        # We need to use a sub-select in the where clause to filter on things\n        # from other tables.\n        query = self.query.clone(klass=Query)\n        query.bump_prefix()\n        query.extra = {}\n        query.select = []\n        query.add_fields([query.model._meta.pk.name])\n        # Recheck the count - it is possible that fiddling with the select\n        # fields above removes tables from the query. Refs #18304.\n        count = query.count_active_tables()\n        if not self.query.related_updates and count == 1:\n            return\n\n        must_pre_select = count > 1 and not self.connection.features.update_can_self_select\n\n        # Now we adjust the current query: reset the where clause and get rid\n        # of all the tables we don't need (since they're in the sub-select).\n        self.query.where = self.query.where_class()\n        if self.query.related_updates or must_pre_select:\n            # Either we're using the idents in multiple update queries (so\n            # don't want them to change), or the db backend doesn't support\n            # selecting from the updating table (e.g. MySQL).\n            idents = []\n            for rows in query.get_compiler(self.using).execute_sql(MULTI):\n                idents.extend([r[0] for r in rows])\n            self.query.add_filter(('pk__in', idents))\n            self.query.related_ids = idents\n        else:\n            # The fast path. Filters and updates in one query.\n            self.query.add_filter(('pk__in', query))\n        for alias in self.query.tables[1:]:\n            self.query.alias_refcount[alias] = 0\n\nclass SQLAggregateCompiler(SQLCompiler):\n    def as_sql(self, qn=None):\n        \"\"\"\n        Creates the SQL for this query. Returns the SQL string and list of\n        parameters.\n        \"\"\"\n        if qn is None:\n            qn = self.quote_name_unless_alias\n\n        sql = ('SELECT %s FROM (%s) subquery' % (\n            ', '.join([\n                aggregate.as_sql(qn, self.connection)\n                for aggregate in self.query.aggregate_select.values()\n            ]),\n            self.query.subquery)\n        )\n        params = self.query.sub_params\n        return (sql, params)\n\nclass SQLDateCompiler(SQLCompiler):\n    def results_iter(self):\n        \"\"\"\n        Returns an iterator over the results from executing this query.\n        \"\"\"\n        resolve_columns = hasattr(self, 'resolve_columns')\n        if resolve_columns:\n            from django.db.models.fields import DateTimeField\n            fields = [DateTimeField()]\n        else:\n            from django.db.backends.util import typecast_timestamp\n            needs_string_cast = self.connection.features.needs_datetime_string_cast\n\n        offset = len(self.query.extra_select)\n        for rows in self.execute_sql(MULTI):\n            for row in rows:\n                date = row[offset]\n                if resolve_columns:\n                    date = self.resolve_columns(row, fields)[offset]\n                elif needs_string_cast:\n                    date = typecast_timestamp(str(date))\n                yield date\n\n\ndef order_modified_iter(cursor, trim, sentinel):\n    \"\"\"\n    Yields blocks of rows from a cursor. We use this iterator in the special\n    case when extra output columns have been added to support ordering\n    requirements. We must trim those extra columns before anything else can use\n    the results, since they're only needed to make the SQL valid.\n    \"\"\"\n    for rows in iter((lambda: cursor.fetchmany(GET_ITERATOR_CHUNK_SIZE)),\n            sentinel):\n        yield [r[:-trim] for r in rows]\n"
  },
  {
    "path": "Django-1.5.1/django/db/models/sql/constants.py",
    "content": "\"\"\"\nConstants specific to the SQL storage portion of the ORM.\n\"\"\"\n\nfrom collections import namedtuple\nimport re\n\n# Valid query types (a set is used for speedy lookups). These are (currently)\n# considered SQL-specific; other storage systems may choose to use different\n# lookup types.\nQUERY_TERMS = set([\n    'exact', 'iexact', 'contains', 'icontains', 'gt', 'gte', 'lt', 'lte', 'in',\n    'startswith', 'istartswith', 'endswith', 'iendswith', 'range', 'year',\n    'month', 'day', 'week_day', 'isnull', 'search', 'regex', 'iregex',\n])\n\n# Size of each \"chunk\" for get_iterator calls.\n# Larger values are slightly faster at the expense of more storage space.\nGET_ITERATOR_CHUNK_SIZE = 100\n\n# Constants to make looking up tuple values clearer.\n# Join lists (indexes into the tuples that are values in the alias_map\n# dictionary in the Query class).\nJoinInfo = namedtuple('JoinInfo',\n                      'table_name rhs_alias join_type lhs_alias '\n                      'lhs_join_col rhs_join_col nullable')\n\n# How many results to expect from a cursor.execute call\nMULTI = 'multi'\nSINGLE = 'single'\n\nORDER_PATTERN = re.compile(r'\\?|[-+]?[.\\w]+$')\nORDER_DIR = {\n    'ASC': ('ASC', 'DESC'),\n    'DESC': ('DESC', 'ASC'),\n}\n"
  },
  {
    "path": "Django-1.5.1/django/db/models/sql/datastructures.py",
    "content": "\"\"\"\nUseful auxilliary data structures for query construction. Not useful outside\nthe SQL domain.\n\"\"\"\n\nclass EmptyResultSet(Exception):\n    pass\n\nclass MultiJoin(Exception):\n    \"\"\"\n    Used by join construction code to indicate the point at which a\n    multi-valued join was attempted (if the caller wants to treat that\n    exceptionally).\n    \"\"\"\n    def __init__(self, level):\n        self.level = level\n\nclass Empty(object):\n    pass\n\nclass RawValue(object):\n    def __init__(self, value):\n        self.value = value\n\nclass Date(object):\n    \"\"\"\n    Add a date selection column.\n    \"\"\"\n    def __init__(self, col, lookup_type):\n        self.col = col\n        self.lookup_type = lookup_type\n\n    def relabel_aliases(self, change_map):\n        c = self.col\n        if isinstance(c, (list, tuple)):\n            self.col = (change_map.get(c[0], c[0]), c[1])\n\n    def as_sql(self, qn, connection):\n        if isinstance(self.col, (list, tuple)):\n            col = '%s.%s' % tuple([qn(c) for c in self.col])\n        else:\n            col = self.col\n        return connection.ops.date_trunc_sql(self.lookup_type, col)\n"
  },
  {
    "path": "Django-1.5.1/django/db/models/sql/expressions.py",
    "content": "from django.core.exceptions import FieldError\nfrom django.db.models.constants import LOOKUP_SEP\nfrom django.db.models.fields import FieldDoesNotExist\n\nclass SQLEvaluator(object):\n    def __init__(self, expression, query, allow_joins=True, reuse=None):\n        self.expression = expression\n        self.opts = query.get_meta()\n        self.cols = []\n\n        self.contains_aggregate = False\n        self.reuse = reuse\n        self.expression.prepare(self, query, allow_joins)\n\n    def prepare(self):\n        return self\n\n    def as_sql(self, qn, connection):\n        return self.expression.evaluate(self, qn, connection)\n\n    def relabel_aliases(self, change_map):\n        new_cols = []\n        for node, col in self.cols:\n            if hasattr(col, \"relabel_aliases\"):\n                col.relabel_aliases(change_map)\n                new_cols.append((node, col))\n            else:\n                new_cols.append((node,\n                                (change_map.get(col[0], col[0]), col[1])))\n        self.cols = new_cols\n\n    #####################################################\n    # Vistor methods for initial expression preparation #\n    #####################################################\n\n    def prepare_node(self, node, query, allow_joins):\n        for child in node.children:\n            if hasattr(child, 'prepare'):\n                child.prepare(self, query, allow_joins)\n\n    def prepare_leaf(self, node, query, allow_joins):\n        if not allow_joins and LOOKUP_SEP in node.name:\n            raise FieldError(\"Joined field references are not permitted in this query\")\n\n        field_list = node.name.split(LOOKUP_SEP)\n        if (len(field_list) == 1 and\n            node.name in query.aggregate_select.keys()):\n            self.contains_aggregate = True\n            self.cols.append((node, query.aggregate_select[node.name]))\n        else:\n            try:\n                dupe_multis = False if self.reuse is None else True\n                field, source, opts, join_list, last, _ = query.setup_joins(\n                    field_list, query.get_meta(), query.get_initial_alias(),\n                    dupe_multis, can_reuse=self.reuse)\n                col, _, join_list = query.trim_joins(source, join_list, last, False)\n                if self.reuse is not None:\n                    self.reuse.update(join_list)\n                self.cols.append((node, (join_list[-1], col)))\n            except FieldDoesNotExist:\n                raise FieldError(\"Cannot resolve keyword %r into field. \"\n                                 \"Choices are: %s\" % (self.name,\n                                                      [f.name for f in self.opts.fields]))\n\n    ##################################################\n    # Vistor methods for final expression evaluation #\n    ##################################################\n\n    def evaluate_node(self, node, qn, connection):\n        expressions = []\n        expression_params = []\n        for child in node.children:\n            if hasattr(child, 'evaluate'):\n                sql, params = child.evaluate(self, qn, connection)\n            else:\n                sql, params = '%s', (child,)\n\n            if len(getattr(child, 'children', [])) > 1:\n                format = '(%s)'\n            else:\n                format = '%s'\n\n            if sql:\n                expressions.append(format % sql)\n                expression_params.extend(params)\n\n        return connection.ops.combine_expression(node.connector, expressions), expression_params\n\n    def evaluate_leaf(self, node, qn, connection):\n        col = None\n        for n, c in self.cols:\n            if n is node:\n                col = c\n                break\n        if col is None:\n            raise ValueError(\"Given node not found\")\n        if hasattr(col, 'as_sql'):\n            return col.as_sql(qn, connection), ()\n        else:\n            return '%s.%s' % (qn(col[0]), qn(col[1])), ()\n\n    def evaluate_date_modifier_node(self, node, qn, connection):\n        timedelta = node.children.pop()\n        sql, params = self.evaluate_node(node, qn, connection)\n\n        if timedelta.days == 0 and timedelta.seconds == 0 and \\\n                timedelta.microseconds == 0:\n            return sql, params\n\n        return connection.ops.date_interval_sql(sql, node.connector, timedelta), params\n"
  },
  {
    "path": "Django-1.5.1/django/db/models/sql/query.py",
    "content": "\"\"\"\n为 QuerySet 创建 sql 语句\n\nCreate SQL statements for QuerySets.\n\nThe code in here encapsulates all of the SQL construction so that QuerySets\nthemselves do not have to (and could be backed by things other than SQL\ndatabases). The abstraction barrier only works one way: this module has to know\nall about the internals of models in order to get the information it needs.\n\"\"\"\n\nimport copy\n\nfrom django.utils.datastructures import SortedDict\nfrom django.utils.encoding import force_text\nfrom django.utils.tree import Node\nfrom django.utils import six\nfrom django.db import connections, DEFAULT_DB_ALIAS\nfrom django.db.models import signals\nfrom django.db.models.constants import LOOKUP_SEP\nfrom django.db.models.expressions import ExpressionNode\nfrom django.db.models.fields import FieldDoesNotExist\nfrom django.db.models.sql import aggregates as base_aggregates_module\nfrom django.db.models.sql.constants import (QUERY_TERMS, ORDER_DIR, SINGLE,\n        ORDER_PATTERN, JoinInfo)\nfrom django.db.models.sql.datastructures import EmptyResultSet, Empty, MultiJoin\nfrom django.db.models.sql.expressions import SQLEvaluator\nfrom django.db.models.sql.where import (WhereNode, Constraint, EverythingNode,\n    ExtraWhere, AND, OR)\nfrom django.core.exceptions import FieldError\n\n__all__ = ['Query', 'RawQuery']\n\nSQL 语句查询\nclass RawQuery(object):\n    \"\"\"\n    A single raw SQL query\n    \"\"\"\n\n    def __init__(self, sql, using, params=None):\n        ???\n        self.params = params or ()\n        self.sql = sql\n        self.using = using\n        self.cursor = None\n\n        # Mirror some properties of a normal query so that\n        # the compiler can be used to process results.\n        self.low_mark, self.high_mark = 0, None  # Used for offset/limit\n        self.extra_select = {}\n        self.aggregate_select = {}\n\n    拷贝\n    def clone(self, using):\n        return RawQuery(self.sql, using, params=self.params)\n\n    将返回结果转化为持久对象\n    def convert_values(self, value, field, connection):\n        \"\"\"Convert the database-returned value into a type that is consistent\n        across database backends.\n\n        By default, this defers to the underlying backend operations, but\n        it can be overridden by Query classes for specific backends.\n        \"\"\"\n        # 在 django.db.backends.__init__.py 中定义\n        return connection.ops.convert_values(value, field)\n\n\n    # 获取列名\n    def get_columns(self):\n        if self.cursor is None:\n            self._execute_query()\n\n        converter = connections[self.using].introspection.table_name_converter\n\n        return [converter(column_meta[0])\n                for column_meta in self.cursor.description]\n\n    def __iter__(self):\n        # Always execute a new query for a new iterator.\n        # This could be optimized with a cache at the expense of RAM.\n        self._execute_query()\n\n        if not connections[self.using].features.can_use_chunked_reads:\n            # If the database can't use chunked reads we need to make sure we\n            # evaluate the entire query up front.\n            result = list(self.cursor)\n        else:\n            result = self.cursor\n\n        return iter(result)\n\n    def __repr__(self):\n        return \"<RawQuery: %r>\" % (self.sql % tuple(self.params))\n\n    def _execute_query(self):\n        self.cursor = connections[self.using].cursor()\n        self.cursor.execute(self.sql, self.params) 通过游标执行查询, 此后, self.cursor 便有数据\n\n\nclass Query(object):\n    \"\"\"\n    A single SQL query.\n    \"\"\"\n    # SQL join types. These are part of the class because their string forms\n    # vary from database to database and can be customised by a subclass.\n    INNER = 'INNER JOIN'\n    LOUTER = 'LEFT OUTER JOIN'\n\n    alias_prefix = 'T'\n\n    \"\"\"\n    查询关键字:\n\n    QUERY_TERMS = set([\n    'exact', 'iexact', 'contains', 'icontains', 'gt', 'gte', 'lt', 'lte', 'in',\n    'startswith', 'istartswith', 'endswith', 'iendswith', 'range', 'year',\n    'month', 'day', 'week_day', 'isnull', 'search', 'regex', 'iregex',\n    ])\n    \"\"\"\n    query_terms = QUERY_TERMS\n\n    # 指定应该一个默认的聚集函数模块\n    aggregates_module = base_aggregates_module\n\n    # 有关 SQLCompiler 的资料不多.\n    compiler = 'SQLCompiler'\n\n    def __init__(self, model, where=WhereNode):\n        self.model = model\n\n        别名引用计数\n        self.alias_refcount = {}\n\n        # self.alias_map 是关于连接最重要的数据结构, 键即为连接的表\n        # alias_map is the most important data structure regarding joins 有关连接.\n        # It's used for recording which joins exist in the query and what\n        # type they are. The key is the alias of the joined table (possibly\n        # the table name) and the value is JoinInfo from constants.py.\n        self.alias_map = {}\n\n        self.table_map = {}     # Maps table names to list of aliases.\n\n        self.join_map = {}\n\n        self.default_cols = True\n        self.default_ordering = True\n        self.standard_ordering = True\n        self.ordering_aliases = []\n        self.related_select_fields = []\n        self.dupe_avoidance = {}\n        self.used_aliases = set()\n        self.filter_is_sticky = False\n        self.included_inherited_models = {}\n\n        # SQL-related attributes\n        self.select = []\n\n        # For each to-be-selected field in self.select there must be a\n        # corresponding entry in self.select - git seems to need this.\n        self.select_fields = []\n\n        self.tables = []    # Aliases in the order they are created.\n        self.where = where()\n        self.where_class = where\n        self.group_by = None\n        self.having = where()\n        self.order_by = []\n        self.low_mark, self.high_mark = 0, None  # Used for offset/limit\n        self.distinct = False\n        self.distinct_fields = []\n        self.select_for_update = False\n        self.select_for_update_nowait = False\n\n        \"\"\"\n        这应为级联查询, 有关 self.select_related 参看如下: select_related()\n        Returns a QuerySet that will automatically “follow” foreign-key relationships, selecting that additional related-object data when it executes its query. This is a performance booster which results in (sometimes much) larger queries but means later use of foreign-key relationships won’t require database queries.\n\n        select_related works by creating an SQL join and including the fields of the related object in the SELECT statement. For this reason, select_related gets the related objects in the same database query. However, to avoid the much larger result set that would result from joining across a ‘many’ relationship, select_related is limited to single-valued relationships - foreign key and one-to-one.\n        \"\"\"\n        self.select_related = False\n\n        # 需要级联查询的属性\n        self.related_select_cols = []\n\n        # SQL aggregate-related attributes 聚合属性\n        self.aggregates = SortedDict() # Maps alias -> SQL aggregate function\n        self.aggregate_select_mask = None\n        self._aggregate_select_cache = None\n\n        # Arbitrary maximum limit for select_related. Prevents infinite\n        # recursion. Can be changed by the depth parameter to select_related().\n        可以理解为级联查询的深度, 就像 DFS 的深度一样\n        self.max_depth = 5\n\n        # These are for extensions. The contents are more or less appended\n        # verbatim to the appropriate clause.\n        self.extra = SortedDict()  # Maps col_alias -> (col_sql, params).\n        self.extra_select_mask = None\n        self._extra_select_cache = None\n\n        self.extra_tables = ()\n        self.extra_order_by = ()\n\n        # A tuple that is a set of model field names and either True, if these\n        # are the fields to defer, or False if these are the only fields to\n        # load.\n        self.deferred_loading = (set(), True)\n\n    def __str__(self):\n        \"\"\"\n        Returns the query as a string of SQL with the parameter values\n        substituted in (use sql_with_params() to see the unsubstituted string).\n\n        Parameter values won't necessarily be quoted correctly, since that is\n        done by the database interface at execution time.\n        \"\"\"\n        sql, params = self.sql_with_params()\n        return sql % params\n\n    不懂\n    def sql_with_params(self):\n        \"\"\"\n        Returns the query as an SQL string and the parameters that will be\n        subsituted into the query.\n        \"\"\"\n        return self.get_compiler(DEFAULT_DB_ALIAS).as_sql()\n\n    def __deepcopy__(self, memo):\n        result = self.clone(memo=memo)\n        memo[id(self)] = result\n        return result\n\n    def __getstate__(self):\n        \"\"\"\n        Pickling support.\n        \"\"\"\n        obj_dict = self.__dict__.copy()\n        obj_dict['related_select_fields'] = []\n        obj_dict['related_select_cols'] = []\n\n        如果属性已经指定, 就只查询指定的属性\n        # Fields can't be pickled, so if a field list has been\n        # specified, we pickle the list of field names instead.\n        # None is also a possible value; that can pass as-is\n        obj_dict['select_fields'] = [\n            f is not None and f.name or None\n            for f in obj_dict['select_fields']\n        ]\n        return obj_dict\n\n    def __setstate__(self, obj_dict):\n        \"\"\"\n        Unpickling support.\n        \"\"\"\n        # Rebuild list of field instances\n        opts = obj_dict['model']._meta\n        obj_dict['select_fields'] = [\n            name is not None and opts.get_field(name) or None\n            for name in obj_dict['select_fields']\n        ]\n\n        self.__dict__.update(obj_dict)\n\n    def prepare(self):\n        return self\n\n    构造编译器, 不懂\n    def get_compiler(self, using=None, connection=None):\n        if using is None and connection is None:\n            需要指定 using 或者 connection\n            raise ValueError(\"Need either using or connection\")\n\n        已经指定 using, 直接获取 DatabaseWrapper\n        if using:\n            connection = connections[using]\n???\n        # Check that the compiler will be able to execute the query\n        for alias, aggregate in self.aggregate_select.items():\n            connection.ops.check_aggregate_support(aggregate)\n\n        构造一个 SQL 编译器\n        return connection.ops.compiler(self.compiler)(self, connection, using)\n\n    返回 model._meta\n    def get_meta(self):\n        \"\"\"\n        Returns the Options instance (the model._meta) from which to start\n        processing. Normally, this is self.model._meta, but it can be changed\n        by subclasses.\n        \"\"\"\n        return self.model._meta\n\n    def clone(self, klass=None, memo=None, **kwargs):\n        \"\"\"\n        Creates a copy of the current instance. The 'kwargs' parameter can be\n        used by clients to update attributes after copying has taken place.\n        \"\"\"\n        obj = Empty()\n        obj.__class__ = klass or self.__class__\n        obj.model = self.model\n        obj.alias_refcount = self.alias_refcount.copy()\n        obj.alias_map = self.alias_map.copy()\n        obj.table_map = self.table_map.copy()\n        obj.join_map = self.join_map.copy()\n        obj.default_cols = self.default_cols\n        obj.default_ordering = self.default_ordering\n        obj.standard_ordering = self.standard_ordering\n        obj.included_inherited_models = self.included_inherited_models.copy()\n        obj.ordering_aliases = []\n        obj.select_fields = self.select_fields[:]\n        obj.related_select_fields = self.related_select_fields[:]\n        obj.dupe_avoidance = self.dupe_avoidance.copy()\n        obj.select = self.select[:]\n        obj.tables = self.tables[:]\n        obj.where = copy.deepcopy(self.where, memo=memo)\n        obj.where_class = self.where_class\n        if self.group_by is None:\n            obj.group_by = None\n        else:\n            obj.group_by = self.group_by[:]\n        obj.having = copy.deepcopy(self.having, memo=memo)\n        obj.order_by = self.order_by[:]\n        obj.low_mark, obj.high_mark = self.low_mark, self.high_mark\n        obj.distinct = self.distinct\n        obj.distinct_fields = self.distinct_fields[:]\n        obj.select_for_update = self.select_for_update\n        obj.select_for_update_nowait = self.select_for_update_nowait\n        obj.select_related = self.select_related\n        obj.related_select_cols = []\n        obj.aggregates = copy.deepcopy(self.aggregates, memo=memo)\n        if self.aggregate_select_mask is None:\n            obj.aggregate_select_mask = None\n        else:\n            obj.aggregate_select_mask = self.aggregate_select_mask.copy()\n        # _aggregate_select_cache cannot be copied, as doing so breaks the\n        # (necessary) state in which both aggregates and\n        # _aggregate_select_cache point to the same underlying objects.\n        # It will get re-populated in the cloned queryset the next time it's\n        # used.\n        obj._aggregate_select_cache = None\n        obj.max_depth = self.max_depth\n        obj.extra = self.extra.copy()\n        if self.extra_select_mask is None:\n            obj.extra_select_mask = None\n        else:\n            obj.extra_select_mask = self.extra_select_mask.copy()\n        if self._extra_select_cache is None:\n            obj._extra_select_cache = None\n        else:\n            obj._extra_select_cache = self._extra_select_cache.copy()\n        obj.extra_tables = self.extra_tables\n        obj.extra_order_by = self.extra_order_by\n        obj.deferred_loading = copy.deepcopy(self.deferred_loading, memo=memo)\n        if self.filter_is_sticky and self.used_aliases:\n            obj.used_aliases = self.used_aliases.copy()\n        else:\n            obj.used_aliases = set()\n        obj.filter_is_sticky = False\n\n        obj.__dict__.update(kwargs)\n        if hasattr(obj, '_setup_query'):\n            obj._setup_query()\n        return obj\n\n    def convert_values(self, value, field, connection):\n        \"\"\"Convert the database-returned value into a type that is consistent\n        across database backends.\n\n        By default, this defers to the underlying backend operations, but\n        it can be overridden by Query classes for specific backends.\n        \"\"\"\n        # 从 BaseDatabaseOperation.convert_values() 的实现来看, 只实现了 interger,float,autofield 的转换, 其他的只是简单的返回而已.\n\n        return connection.ops.convert_values(value, field)\n\n    将聚合的结果转化为持久化类型\n    def resolve_aggregate(self, value, aggregate, connection):\n        \"\"\"Resolve the value of aggregates returned by the database to\n        consistent (and reasonable) types.\n\n        This is required because of the predisposition of certain backends\n        to return Decimal and long types when they are not needed.\n        \"\"\"\n        if value is None:\n            if aggregate.is_ordinal:\n                return 0\n            # Return None as-is\n            return value\n        elif aggregate.is_ordinal:\n            # Any ordinal aggregate (e.g., count) returns an int\n            return int(value)\n        elif aggregate.is_computed:\n            # Any computed aggregate (e.g., avg) returns a float\n            return float(value)\n        else:\n            # Return value depends on the type of the field being processed.\n            return self.convert_values(value, aggregate.field, connection)\n\n    完全不懂\n    def get_aggregation(self, using):\n        \"\"\"\n        Returns the dictionary with the values of the existing aggregations.\n        \"\"\"\n        if not self.aggregate_select:\n            return {}\n\n        # If there is a group by clause, aggregating does not add useful\n        # information but retrieves only the first row. Aggregate\n        # over the subquery instead.\n        if self.group_by is not None:\n            from django.db.models.sql.subqueries import AggregateQuery\n            query = AggregateQuery(self.model)\n\n            obj = self.clone()\n\n            # Remove any aggregates marked for reduction from the subquery\n            # and move them to the outer AggregateQuery.\n            # 试着将 self 中的 aggregate_select 填入 query.aggregate_select 中.\n            for alias, aggregate in self.aggregate_select.items():\n                if aggregate.is_summary:\n                    query.aggregate_select[alias] = aggregate\n                    del obj.aggregate_select[alias]\n\n            try:\n                query.add_subquery(obj, using)\n            except EmptyResultSet:\n                return dict(\n                    (alias, None)\n                    for alias in query.aggregate_select\n                )\n        else:\n            query = self\n            self.select = []\n            self.default_cols = False\n            self.extra = {}\n            self.remove_inherited_models()\n\n        query.clear_ordering(True)\n        query.clear_limits()\n        query.select_for_update = False\n        query.select_related = False\n        query.related_select_cols = []\n        query.related_select_fields = []\n\n        result = query.get_compiler(using).execute_sql(SINGLE)\n\n        if result is None:\n            result = [None for q in query.aggregate_select.items()]\n\n        return dict([\n            (alias, self.resolve_aggregate(val, aggregate, connection=connections[using]))\n            for (alias, aggregate), val\n            in zip(query.aggregate_select.items(), result)\n        ])\n\n    def get_count(self, using):\n        \"\"\"\n        执行 count()\n\n        Performs a COUNT() query using the current filter constraints.\n        \"\"\"\n        obj = self.clone()\n\n        if len(self.select) > 1 or self.aggregate_select or (self.distinct and self.distinct_fields):\n            # If a select clause exists, then the query has already started to\n            # specify the columns that are to be returned.\n            已经指定需要返回的属性, 这时候需要用到子查询\n            # In this case, we need to use a subquery to evaluate the count.\n            from django.db.models.sql.subqueries import AggregateQuery\n\n            # subquery = *self\n            subquery = obj\n            subquery.clear_ordering(True)\n            subquery.clear_limits()\n\n            构造一个聚合查询实例\n            obj = AggregateQuery(obj.model)\n\n            try:\n                obj.add_subquery(subquery, using=using)\n            except EmptyResultSet:\n                # add_subquery evaluates the query, if it's an EmptyResultSet\n                # then there are can be no results, and therefore there the\n                # count is obviously 0\n                return 0\n\n        添加总计属性??? 不懂\n        obj.add_count_column()\n\n        获取结果\n        number = obj.get_aggregation(using=using)[None]\n\n        # Apply offset and limit constraints manually, since using LIMIT/OFFSET\n        # in SQL (in variants that provide them) doesn't change the COUNT\n        # output.\n        可能 SQL 中会有 limit 或者 offset 关键字\n        number = max(0, number - self.low_mark)\n        if self.high_mark is not None:\n            number = min(number, self.high_mark - self.low_mark)\n\n        return number\n\n    测试是否有查询结果???\n    def has_results(self, using):\n        q = self.clone()\n\n        # 为什么要清楚 SELECT 果???\n        q.clear_select_clause()\n\n        q.add_extra({'a': 1}, None, None, None, None, None)\n        q.set_extra_mask(['a'])\n        q.clear_ordering(True)\n        q.set_limits(high=1)\n        compiler = q.get_compiler(using=using)\n        return bool(compiler.execute_sql(SINGLE))\n\n    合并结果??? 不懂\n    def combine(self, rhs, connector):\n        \"\"\"\n        Merge the 'rhs' query into the current one (with any 'rhs' effects\n        being applied *after* (that is, \"to the right of\") anything in the\n        current query. 'rhs' is not modified during a call to this function.\n\n        The 'connector' parameter describes how to connect filters from the\n        'rhs' query.\n        \"\"\"\n        不可以结合两个不同的模块 model\n        assert self.model == rhs.model, \\\n                \"Cannot combine queries on two different base models.\"\n        assert self.can_filter(), \\\n                \"Cannot combine queries once a slice has been taken.\"\n        assert self.distinct == rhs.distinct, \\\n            \"Cannot combine a unique query with a non-unique query.\"\n        assert self.distinct_fields == rhs.distinct_fields, \\\n            \"Cannot combine queries with different distinct fields.\"\n\n        self.remove_inherited_models()\n\n        # Work out how to relabel the rhs aliases, if necessary.\n        change_map = {}\n        used = set()\n        conjunction = (connector == AND)\n\n        # Add the joins in the rhs query into the new query.\n        first = True\n\n        for alias in rhs.tables:\n            if not rhs.alias_refcount[alias]: 别名引用计数\n                # An unused alias.\n                continue\n\n            table, _, join_type, lhs, lhs_col, col, _ = rhs.alias_map[alias]\n            promote = join_type == self.LOUTER\n\n            # If the left side of the join was already relabeled, use the\n            # updated alias.\n            lhs = change_map.get(lhs, lhs)\n\n            new_alias = self.join((lhs, table, lhs_col, col),\n                    conjunction and not first, used, promote, not conjunction)\n            used.add(new_alias)\n            change_map[alias] = new_alias\n            first = False\n\n        # So that we don't exclude valid results in an \"or\" query combination,\n        # all joins exclusive to either the lhs or the rhs must be converted\n        # to an outer join.\n        if not conjunction:\n\n            都是集合\n            l_tables = set(self.tables)\n            r_tables = set(rhs.tables)\n\n            # Update r_tables aliases.\n            for alias in change_map:\n                if alias in r_tables:\n                    # r_tables may contain entries that have a refcount of 0\n                    # if the query has references to a table that can be\n                    # trimmed because only the foreign key is used.\n                    # We only need to fix the aliases for the tables that\n                    # actually have aliases.\n\n                    if rhs.alias_refcount[alias]:\n                        r_tables.remove(alias) 删除某个别名\n                        r_tables.add(change_map[alias])\n\n            # Find aliases that are exclusive to rhs or lhs.\n            # These are promoted to outer joins.\n            outer_tables = (l_tables | r_tables) - (l_tables & r_tables) 两个集合求异\n\n            for alias in outer_tables:\n                # Again, some of the tables won't have aliases due to\n                # the trimming of unnecessary tables.\n                if self.alias_refcount.get(alias) or rhs.alias_refcount.get(alias):\n                    self.promote_joins([alias], True)\n\n        # Now relabel a copy of the rhs where-clause and add it to the current\n        # one.\n        if rhs.where:\n            w = copy.deepcopy(rhs.where)\n            w.relabel_aliases(change_map)\n            if not self.where:\n                # Since 'self' matches everything, add an explicit \"include\n                # everything\" where-constraint so that connections between the\n                # where clauses won't exclude valid results.\n                self.where.add(EverythingNode(), AND)\n        elif self.where:\n            # rhs has an empty where clause.\n            w = self.where_class()\n            w.add(EverythingNode(), AND)\n        else:\n            w = self.where_class()\n        self.where.add(w, connector)\n\n        # Selection columns and extra extensions are those provided by 'rhs'.\n        self.select = []\n        for col in rhs.select:\n            if isinstance(col, (list, tuple)):\n                self.select.append((change_map.get(col[0], col[0]), col[1]))\n            else:\n                item = copy.deepcopy(col)\n                item.relabel_aliases(change_map)\n                self.select.append(item)\n\n        self.select_fields = rhs.select_fields[:]\n\n        if connector == OR:\n            # It would be nice to be able to handle this, but the queries don't\n            # really make sense (or return consistent value sets). Not worth\n            # the extra complexity when you can write a real query instead.\n            if self.extra and rhs.extra:\n                raise ValueError(\"When merging querysets using 'or', you \"\n                        \"cannot have extra(select=...) on both sides.\")\n        self.extra.update(rhs.extra)\n        extra_select_mask = set()\n\n        if self.extra_select_mask is not None:\n            extra_select_mask.update(self.extra_select_mask)\n\n        if rhs.extra_select_mask is not None:\n            extra_select_mask.update(rhs.extra_select_mask)\n\n        if extra_select_mask:\n            self.set_extra_mask(extra_select_mask)\n\n        self.extra_tables += rhs.extra_tables\n\n        # Ordering uses the 'rhs' ordering, unless it has none, in which case\n        # the current ordering is used.\n        self.order_by = rhs.order_by and rhs.order_by[:] or self.order_by\n        self.extra_order_by = rhs.extra_order_by or self.extra_order_by\n\n    不懂\n    def deferred_to_data(self, target, callback):\n        \"\"\"\n        Converts the self.deferred_loading data structure to an alternate data\n        structure, describing the field that *will* be loaded. This is used to\n        compute the columns to select from the database and also by the\n        QuerySet class to work out which fields are being initialised on each\n        model. Models that have all their fields included aren't mentioned in\n        the result, only those that have field restrictions in place.\n\n        The \"target\" parameter is the instance that is populated (in place).\n        The \"callback\" is a function that is called whenever a (model, field)\n        pair need to be added to \"target\". It accepts three parameters:\n        \"target\", and the model and list of fields being added for that model.\n        \"\"\"\n        field_names, defer = self.deferred_loading 被延迟加载的数据\n\n        if not field_names:\n            return\n\n        orig_opts = self.model._meta\n        seen = {}\n\n        # model:set(fields)\n        must_include = {orig_opts.concrete_model: set([orig_opts.pk])}\n\n        for field_name in field_names:\n\n            # LOOKUP_SEP = '__' 为什么会有这个???\n            parts = field_name.split(LOOKUP_SEP)\n\n            # 当前的 model\n            cur_model = self.model\n\n            # 当前的 _meta\n            opts = orig_opts\n\n            for name in parts[:-1]:\n                old_model = cur_model\n\n                # Options.get_field_by_name\n                # Returns the (field_object, model, direct, m2m)\n                source = opts.get_field_by_name(name)[0]\n\n                if is_reverse_o2o(source):\n                    cur_model = source.model\n                else:\n                    cur_model = source.rel.to\n\n                opts = cur_model._meta\n\n                # Even if we're \"just passing through\" this model, we must add\n                # both the current model's pk and the related reference field\n                # (if it's not a reverse relation) to the things we select.\n                if not is_reverse_o2o(source):\n                    must_include[old_model].add(source)\n\n                add_to_dict(must_include, cur_model, opts.pk)\n\n            field, model, _, _ = opts.get_field_by_name(parts[-1])\n\n            if model is None:\n                model = cur_model\n\n            if not is_reverse_o2o(field):\n                add_to_dict(seen, model, field)\n\n        if defer:\n            # We need to load all fields for each model, except those that\n            # appear in \"seen\" (for all models that appear in \"seen\"). The only\n            # slight complexity here is handling fields that exist on parent\n            # models.\n            workset = {}\n\n            for model, values in six.iteritems(seen):\n                for field, m in model._meta.get_fields_with_model():\n                    if field in values:\n                        continue\n                    add_to_dict(workset, m or model, field)\n\n            for model, values in six.iteritems(must_include):\n                # If we haven't included a model in workset, we don't add the\n                # corresponding must_include fields for that model, since an\n                # empty set means \"include all fields\". That's why there's no\n                # \"else\" branch here.\n                if model in workset:\n                    workset[model].update(values)\n\n            for model, values in six.iteritems(workset):\n                callback(target, model, values)\n        else:\n            for model, values in six.iteritems(must_include):\n                if model in seen:\n                    seen[model].update(values)\n                else:\n                    # As we've passed through this model, but not explicitly\n                    # included any fields, we have to make sure it's mentioned\n                    # so that only the \"must include\" fields are pulled in.\n                    seen[model] = values\n            # Now ensure that every model in the inheritance chain is mentioned\n            # in the parent list. Again, it must be mentioned to ensure that\n            # only \"must include\" fields are pulled in.\n            for model in orig_opts.get_parent_list():\n                if model not in seen:\n                    seen[model] = set()\n            for model, values in six.iteritems(seen):\n                callback(target, model, values)\n\n    不懂\n    def deferred_to_columns_cb(self, target, model, fields):\n        \"\"\"\n        Callback used by deferred_to_columns(). The \"target\" parameter should\n        be a set instance.\n        \"\"\"\n        table = model._meta.db_table\n        if table not in target:\n            target[table] = set()\n\n        for field in fields:\n            target[table].add(field.column)\n\n\n    def table_alias(self, table_name, create=False):\n        \"\"\"\n        Returns a table alias for the given table_name and whether this is a\n        new alias or not.\n\n        If 'create' is true, a new alias is always created. Otherwise, the\n        most recently created alias for the table (if one exists) is reused.\n        \"\"\"\n        current = self.table_map.get(table_name)\n        if not create and current: 如果存在此别名\n            alias = current[0]\n            self.alias_refcount[alias] += 1 需要新增引用计数\n            return alias, False\n\n        # Create a new alias for this table. 需要为表新增别名\n        if current: 如果参数 create 为真, 就新增别名\n            alias = '%s%d' % (self.alias_prefix, len(self.alias_map) + 1)\n            current.append(alias)\n        else: current 不存在, 需要新增键值\n            # The first occurence of a table uses the table name directly.\n            alias = table_name\n            self.table_map[alias] = [alias]\n\n        self.alias_refcount[alias] = 1\n        self.tables.append(alias) 在表中添加 alias 表\n        return alias, True\n\n    新增表别名引用计数\n    def ref_alias(self, alias):\n        \"\"\" Increases the reference count for this alias. \"\"\"\n        self.alias_refcount[alias] += 1\n\n    减少表别名引用计数\n    def unref_alias(self, alias, amount=1):\n        \"\"\" Decreases the reference count for this alias. \"\"\"\n        self.alias_refcount[alias] -= amount\n\n\n    def promote_joins(self, aliases, unconditional=False):\n        \"\"\"\n        Promotes recursively the join type of given aliases and its children to\n        an outer join. If 'unconditional' is False, the join is only promoted if\n        it is nullable or the parent join is an outer join.\n\n        Note about join promotion: When promoting any alias, we make sure all\n        joins which start from that alias are promoted, too. When adding a join\n        in join(), we make sure any join added to already existing L OUTER join\n        is generated as LOUTER. This ensures we don't ever have broken join\n        chains which contain first a LOUTER join, then an INNER JOIN, that is\n        this kind of join should never be generated: a LOUTER b INNER c. The\n        reason for avoiding this type of join chain is that the INNER after\n        the LOUTER will effectively remove any effect the LOUTER had.\n        \"\"\"\n        aliases = list(aliases)\n\n        while aliases:\n\n            alias = aliases.pop(0)\n\n            if self.alias_map[alias].rhs_join_col is None:\n                # This is the base table (first FROM entry) - this table\n                # isn't really joined at all in the query, so we should not\n                # alter its join type.\n                continue\n\n            parent_alias = self.alias_map[alias].lhs_alias\n\n            parent_louter = (parent_alias\n                and self.alias_map[parent_alias].join_type == self.LOUTER)\n\n            already_louter = self.alias_map[alias].join_type == self.LOUTER\n\n            if ((unconditional or self.alias_map[alias].nullable\n                 or parent_louter) and not already_louter):\n                data = self.alias_map[alias]._replace(join_type=self.LOUTER)\n                self.alias_map[alias] = data\n\n                # Join type of 'alias' changed, so re-examine all aliases that\n                # refer to this one.\n                aliases.extend(\n                    join for join in self.alias_map.keys()\n                    if (self.alias_map[join].lhs_alias == alias\n                        and join not in aliases))\n\n    def reset_refcounts(self, to_counts):\n        \"\"\"\n        This method will reset reference counts for aliases so that they match\n        the value passed in :param to_counts:.\n        \"\"\"\n        for alias, cur_refcount in self.alias_refcount.copy().items():\n            unref_amount = cur_refcount - to_counts.get(alias, 0) 计算需要减少的次数\n            self.unref_alias(alias, unref_amount)\n\n    def promote_unused_aliases(self, initial_refcounts, used_aliases):\n        \"\"\"\n        Given a \"before\" copy of the alias_refcounts dictionary (as\n        'initial_refcounts') and a collection of aliases that may have been\n        changed or created, works out which aliases have been created since\n        then and which ones haven't been used and promotes all of those\n        aliases, plus any children of theirs in the alias tree, to outer joins.\n        \"\"\"\n        for alias in self.tables:\n            if alias in used_aliases and (alias not in initial_refcounts or\n                    self.alias_refcount[alias] == initial_refcounts[alias]):\n                self.promote_joins([alias])\n\n    def change_aliases(self, change_map):\n        \"\"\"\n        Changes the aliases in change_map (which maps old-alias -> new-alias),\n\n        relabelling any references to them in select columns and the where\n        clause.\n        \"\"\"\n        assert set(change_map.keys()).intersection(set(change_map.values())) == set()\n\n        # 1. Update references in \"select\" (normal columns plus aliases),\n        # \"group by\", \"where\" and \"having\".\n        self.where.relabel_aliases(change_map)\n        self.having.relabel_aliases(change_map)\n        for columns in [self.select, self.group_by or []]:\n            for pos, col in enumerate(columns):\n                if isinstance(col, (list, tuple)):\n                    old_alias = col[0]\n                    columns[pos] = (change_map.get(old_alias, old_alias), col[1])\n                else:\n                    col.relabel_aliases(change_map)\n        for mapping in [self.aggregates]:\n            for key, col in mapping.items():\n                if isinstance(col, (list, tuple)):\n                    old_alias = col[0]\n                    mapping[key] = (change_map.get(old_alias, old_alias), col[1])\n                else:\n                    col.relabel_aliases(change_map)\n\n        # 2. Rename the alias in the internal table/alias datastructures.\n        for k, aliases in self.join_map.items():\n            aliases = tuple([change_map.get(a, a) for a in aliases])\n            self.join_map[k] = aliases\n        for old_alias, new_alias in six.iteritems(change_map):\n            alias_data = self.alias_map[old_alias]\n            alias_data = alias_data._replace(rhs_alias=new_alias)\n            self.alias_refcount[new_alias] = self.alias_refcount[old_alias]\n            del self.alias_refcount[old_alias]\n            self.alias_map[new_alias] = alias_data\n            del self.alias_map[old_alias]\n\n            table_aliases = self.table_map[alias_data.table_name]\n            for pos, alias in enumerate(table_aliases):\n                if alias == old_alias:\n                    table_aliases[pos] = new_alias\n                    break\n            for pos, alias in enumerate(self.tables):\n                if alias == old_alias:\n                    self.tables[pos] = new_alias\n                    break\n        for key, alias in self.included_inherited_models.items():\n            if alias in change_map:\n                self.included_inherited_models[key] = change_map[alias]\n\n        # 3. Update any joins that refer to the old alias.\n        for alias, data in six.iteritems(self.alias_map):\n            lhs = data.lhs_alias\n            if lhs in change_map:\n                data = data._replace(lhs_alias=change_map[lhs])\n                self.alias_map[alias] = data\n\n    def bump_prefix(self, exceptions=()):\n        \"\"\"\n        Changes the alias prefix to the next letter in the alphabet and\n        relabels all the aliases. Even tables that previously had no alias will\n        get an alias after this call (it's mostly used for nested queries and\n        the outer query will already be using the non-aliased table name).\n\n        Subclasses who create their own prefix should override this method to\n        produce a similar result (a new prefix and relabelled aliases).\n\n        The 'exceptions' parameter is a container that holds alias names which\n        should not be changed.\n        \"\"\"\n        current = ord(self.alias_prefix)\n        assert current < ord('Z')\n        prefix = chr(current + 1)\n        self.alias_prefix = prefix\n        change_map = SortedDict()\n        for pos, alias in enumerate(self.tables):\n            if alias in exceptions:\n                continue\n            new_alias = '%s%d' % (prefix, pos)\n            change_map[alias] = new_alias\n            self.tables[pos] = new_alias\n        self.change_aliases(change_map)\n\n    def get_initial_alias(self):\n        \"\"\"\n        Returns the first alias for this query, after increasing its reference\n        count.\n        \"\"\"\n        if self.tables:\n            alias = self.tables[0]\n            self.ref_alias(alias)\n        else:\n            alias = self.join((None, self.model._meta.db_table, None, None))\n        return alias\n\n    def count_active_tables(self):\n        \"\"\"\n        Returns the number of tables in this query with a non-zero reference\n        count. Note that after execution, the reference counts are zeroed, so\n        tables added in compiler will not be seen by this method.\n        \"\"\"\n        return len([1 for count in self.alias_refcount.values() if count])\n\n    def join(self, connection, always_create=False, exclusions=(),\n            promote=False, outer_if_first=False, nullable=False, reuse=None):\n        \"\"\"\n        Returns an alias for the join in 'connection', either reusing an\n        existing alias for that join or creating a new one. 'connection' is a\n        tuple (lhs, table, lhs_col, col) where 'lhs' is either an existing\n        table alias or a table name. The join correspods to the SQL equivalent\n        of::\n\n            lhs.lhs_col = table.col\n\n        If 'always_create' is True and 'reuse' is None, a new alias is always\n        created, regardless of whether one already exists or not.\n\n        If 'always_create' is True and 'reuse' is a set, an alias in 'reuse' that\n        matches the connection will be returned, if possible.\n\n        If 'always_create' is False, the first existing alias that matches the\n        'connection' is returned, if any. Otherwise a new join is created.\n\n        If 'exclusions' is specified, it is something satisfying the container\n        protocol (\"foo in exclusions\" must work) and specifies a list of\n        aliases that should not be returned, even if they satisfy the join.\n\n        If 'promote' is True, the join type for the alias will be LOUTER (if\n        the alias previously existed, the join type will be promoted from INNER\n        to LOUTER, if necessary).\n\n        If 'outer_if_first' is True and a new join is created, it will have the\n        LOUTER join type. This is used when joining certain types of querysets\n        and Q-objects together.\n\n        A join is always created as LOUTER if the lhs alias is LOUTER to make\n        sure we do not generate chains like a LOUTER b INNER c.\n\n        If 'nullable' is True, the join can potentially involve NULL values and\n        is a candidate for promotion (to \"left outer\") when combining querysets.\n        \"\"\"\n        lhs, table, lhs_col, col = connection\n        if lhs in self.alias_map:\n            lhs_table = self.alias_map[lhs].table_name\n        else:\n            lhs_table = lhs\n\n        if reuse and always_create and table in self.table_map:\n            # Convert the 'reuse' to case to be \"exclude everything but the\n            # reusable set, minus exclusions, for this table\".\n            exclusions = set(self.table_map[table]).difference(reuse).union(set(exclusions))\n            always_create = False\n        t_ident = (lhs_table, table, lhs_col, col)\n        if not always_create:\n            for alias in self.join_map.get(t_ident, ()):\n                if alias not in exclusions:\n                    if lhs_table and not self.alias_refcount[self.alias_map[alias].lhs_alias]:\n                        # The LHS of this join tuple is no longer part of the\n                        # query, so skip this possibility.\n                        continue\n                    if self.alias_map[alias].lhs_alias != lhs:\n                        continue\n                    self.ref_alias(alias)\n                    if promote or (lhs and self.alias_map[lhs].join_type == self.LOUTER):\n                        self.promote_joins([alias])\n                    return alias\n\n        # No reuse is possible, so we need a new alias.\n        alias, _ = self.table_alias(table, True)\n        if not lhs:\n            # Not all tables need to be joined to anything. No join type\n            # means the later columns are ignored.\n            join_type = None\n        elif (promote or outer_if_first\n              or self.alias_map[lhs].join_type == self.LOUTER):\n            # We need to use LOUTER join if asked by promote or outer_if_first,\n            # or if the LHS table is left-joined in the query. Adding inner join\n            # to an existing outer join effectively cancels the effect of the\n            # outer join.\n            join_type = self.LOUTER\n        else:\n            join_type = self.INNER\n        join = JoinInfo(table, alias, join_type, lhs, lhs_col, col, nullable)\n        self.alias_map[alias] = join\n        if t_ident in self.join_map:\n            self.join_map[t_ident] += (alias,)\n        else:\n            self.join_map[t_ident] = (alias,)\n        return alias\n\n    def setup_inherited_models(self):\n        \"\"\"\n        If the model that is the basis for this QuerySet inherits other models,\n        we need to ensure that those other models have their tables included in\n        the query.\n\n        如果此子模块 model 是从另一个模块中继承而来, 则需要包含父模块的表\n\n        We do this as a separate step so that subclasses know which\n        tables are going to be active in the query, without needing to compute\n        all the select columns (this method is called from pre_sql_setup(),\n        whereas column determination is a later part, and side-effect, of\n        as_sql()).\n        \"\"\"\n        # Skip all proxy models\n        opts = self.model._meta.concrete_model._meta\n        root_alias = self.tables[0]\n        seen = {None: root_alias}\n\n        for field, model in opts.get_fields_with_model():\n            if model not in seen:\n                link_field = opts.get_ancestor_link(model)\n                seen[model] = self.join((root_alias, model._meta.db_table,\n                        link_field.column, model._meta.pk.column))\n\n        self.included_inherited_models = seen\n\n    def remove_inherited_models(self):\n        \"\"\"\n        Undoes the effects of setup_inherited_models(). Should be called\n        whenever select columns (self.select) are set explicitly.\n        \"\"\"\n        for key, alias in self.included_inherited_models.items():\n            if key:\n                别名引用计数-1\n                self.unref_alias(alias)\n\n        # 清空继承模块\n        self.included_inherited_models = {}\n\n    def need_force_having(self, q_object):\n        \"\"\"\n        Returns whether or not all elements of this q_object need to be put\n        together in the HAVING clause.\n        \"\"\"\n        for child in q_object.children:\n            if isinstance(child, Node):\n                if self.need_force_having(child):\n                    return True\n            else:\n                if child[0].split(LOOKUP_SEP)[0] in self.aggregates:\n                    return True\n        return False\n\n    def add_aggregate(self, aggregate, model, alias, is_summary):\n        \"\"\"\n        Adds a single aggregate expression to the Query\n        \"\"\"\n        opts = model._meta\n\n        field_list = aggregate.lookup.split(LOOKUP_SEP)\n\n        if len(field_list) == 1 and aggregate.lookup in self.aggregates:\n            # Aggregate is over an annotation\n            field_name = field_list[0]\n            col = field_name\n            source = self.aggregates[field_name]\n\n            if not is_summary:\n                raise FieldError(\"Cannot compute %s('%s'): '%s' is an aggregate\" % (\n                    aggregate.name, field_name, field_name))\n\n        elif ((len(field_list) > 1) or\n            (field_list[0] not in [i.name for i in opts.fields]) or\n            self.group_by is None or\n            not is_summary):\n            # If:\n            #   - the field descriptor has more than one part (foo__bar), or\n            #   - the field descriptor is referencing an m2m/m2o field, or\n            #   - this is a reference to a model field (possibly inherited), or\n            #   - this is an annotation over a model field\n            # then we need to explore the joins that are required.\n\n            field, source, opts, join_list, last, _ = self.setup_joins(\n                field_list, opts, self.get_initial_alias(), False)\n\n            # Process the join chain to see if it can be trimmed\n            col, _, join_list = self.trim_joins(source, join_list, last, False)\n\n            # If the aggregate references a model or field that requires a join,\n            # those joins must be LEFT OUTER - empty join rows must be returned\n            # in order for zeros to be returned for those aggregates.\n            self.promote_joins(join_list, True)\n\n            col = (join_list[-1], col)\n        else:\n            # The simplest cases. No joins required -\n            # just reference the provided column alias.\n            field_name = field_list[0]\n            source = opts.get_field(field_name)\n            col = field_name\n\n        # Add the aggregate to the query\n        aggregate.add_to_query(self, alias, col=col, source=source, is_summary=is_summary)\n\n    def add_filter(self, filter_expr, connector=AND, negate=False, trim=False,\n            can_reuse=None, process_extras=True, force_having=False):\n        \"\"\"\n        Add a single filter to the query. The 'filter_expr' is a pair:\n        (filter_string, value). E.g. ('name__contains', 'fred')\n\n        有关 exclude() 请参看: https://docs.djangoproject.com/en/dev/ref/models/querysets/#exclude\n\n        `This example excludes all entries whose pub_date is later than 2005-1-3 AND whose headline is “Hello”:\n        `Entry.objects.exclude(pub_date__gt=datetime.date(2005, 1, 3), headline='Hello')\n\n        If 'negate' is True, this is an exclude() filter. It's important to\n        note that this method does not negate anything in the where-clause\n        object when inserting the filter constraints. This is because negated\n        filters often require multiple calls to add_filter() and the negation\n        should only happen once. So the caller is responsible for this (the\n        caller will normally be add_q(), so that as an example).\n\n        If 'trim' is True, we automatically trim the final join group (used\n        internally when constructing nested queries).\n\n        If 'can_reuse' is a set, we are processing a component of a\n        multi-component filter (e.g. filter(Q1, Q2)). In this case, 'can_reuse'\n        will be a set of table aliases that can be reused in this filter, even\n        if we would otherwise force the creation of new aliases for a join\n        (needed for nested Q-filters). The set is updated by this method.\n\n        If 'process_extras' is set, any extra filters returned from the table\n        joining process will be processed. This parameter is set to False\n        during the processing of extra filters to avoid infinite recursion.\n        \"\"\"\n        arg, value = filter_expr\n        parts = arg.split(LOOKUP_SEP)\n\n        if not parts:\n            raise FieldError(\"Cannot parse keyword query %r\" % arg)\n\n        # Work out the lookup type and remove it from the end of 'parts',\n        # if necessary.\n        lookup_type = 'exact' # Default lookup type\n        num_parts = len(parts)\n\n        if (len(parts) > 1 and parts[-1] in self.query_terms\n            and arg not in self.aggregates):\n            # Traverse 遍历 the lookup query to distinguish related fields from\n            # lookup types.\n            lookup_model = self.model\n\n            for counter, field_name in enumerate(parts):\n                try:\n                    lookup_field = lookup_model._meta.get_field(field_name) 查找属性\n                except FieldDoesNotExist:\n                    # Not a field. Bail out.\n                    lookup_type = parts.pop()\n                    break\n\n                # Unless we're at the end of the list of lookups, let's attempt\n                # to continue traversing relations.\n                if (counter + 1) < num_parts:\n                    try:\n                        lookup_model = lookup_field.rel.to\n                    except AttributeError:\n                        # Not a related field. Bail out.\n                        lookup_type = parts.pop()\n                        break\n\n        # By default, this is a WHERE clause. If an aggregate is referenced\n        # in the value, the filter will be promoted to a HAVING\n        having_clause = False\n\n        # Interpret '__exact=None' as the sql 'is NULL'; otherwise, reject all\n        # uses of None as a query value.\n        如果是 exact 查询选项, 就必须有值\n        if value is None:\n            if lookup_type != 'exact':\n                raise ValueError(\"Cannot use None as a query value\")\n            lookup_type = 'isnull'\n            value = True\n\n        elif callable(value): 值还可以是可调用的对象\n            value = value()\n\n        elif isinstance(value, ExpressionNode): 还可以是一个查询表达式???\n            # If value is a query expression, evaluate it\n            value = SQLEvaluator(value, self, reuse=can_reuse)\n            having_clause = value.contains_aggregate\n\n        # For Oracle '' is equivalent to null. The check needs to be done\n        # at this stage because join promotion can't be done at compiler\n        # stage. Using DEFAULT_DB_ALIAS isn't nice, but it is the best we\n        # can do here. Similar thing is done in is_nullable(), too.\n        if (connections[DEFAULT_DB_ALIAS].features.interprets_empty_strings_as_nulls and\n                lookup_type == 'exact' and value == ''):\n            value = True\n            lookup_type = 'isnull'\n\n        for alias, aggregate in self.aggregates.items():\n            if alias in (parts[0], LOOKUP_SEP.join(parts)):\n                entry = self.where_class()\n                entry.add((aggregate, lookup_type, value), AND)\n                if negate:\n                    entry.negate()\n                self.having.add(entry, connector)\n                return\n\n        opts = self.get_meta()\n        alias = self.get_initial_alias()\n        allow_many = trim or not negate\n\n        try:\n            field, target, opts, join_list, last, extra_filters = self.setup_joins(\n                    parts, opts, alias, True, allow_many, allow_explicit_fk=True,\n                    can_reuse=can_reuse, negate=negate,\n                    process_extras=process_extras)\n        except MultiJoin as e:\n            self.split_exclude(filter_expr, LOOKUP_SEP.join(parts[:e.level]),\n                    can_reuse)\n            return\n\n        table_promote = False\n        join_promote = False\n\n        # isnull: Takes either True or False, which correspond to SQL queries of IS NULL and IS NOT NULL, respectively.\n        if (lookup_type == 'isnull' and value is True and not negate and\n                len(join_list) > 1):\n            # If the comparison is against NULL, we may need to use some left\n            # outer joins when creating the join chain. This is only done when\n            # needed, as it's less efficient at the database level.\n            self.promote_joins(join_list)\n            join_promote = True\n\n        # Process the join list to see if we can remove any inner joins from\n        # the far end (fewer tables in a query is better).\n        nonnull_comparison = (lookup_type == 'isnull' and value is False)\n        col, alias, join_list = self.trim_joins(target, join_list, last, trim,\n                nonnull_comparison)\n\n        if connector == OR:\n            # Some joins may need to be promoted when adding a new filter to a\n            # disjunction. We walk the list of new joins and where it diverges\n            # from any previous joins (ref count is 1 in the table list), we\n            # make the new additions (and any existing ones not used in the new\n            # join list) an outer join.\n            join_it = iter(join_list)\n            table_it = iter(self.tables)\n            next(join_it), next(table_it)\n            unconditional = False\n            for join in join_it:\n                table = next(table_it)\n                # Once we hit an outer join, all subsequent joins must\n                # also be promoted, regardless of whether they have been\n                # promoted as a result of this pass through the tables.\n                unconditional = (unconditional or\n                    self.alias_map[join].join_type == self.LOUTER)\n                if join == table and self.alias_refcount[join] > 1:\n                    # We have more than one reference to this join table.\n                    # This means that we are dealing with two different query\n                    # subtrees, so we don't need to do any join promotion.\n                    continue\n                join_promote = join_promote or self.promote_joins([join], unconditional)\n                if table != join:\n                    table_promote = self.promote_joins([table])\n                # We only get here if we have found a table that exists\n                # in the join list, but isn't on the original tables list.\n                # This means we've reached the point where we only have\n                # new tables, so we can break out of this promotion loop.\n                break\n            self.promote_joins(join_it, join_promote)\n            self.promote_joins(table_it, table_promote or join_promote)\n\n        if having_clause or force_having:\n            if (alias, col) not in self.group_by:\n                self.group_by.append((alias, col))\n            self.having.add((Constraint(alias, col, field), lookup_type, value),\n                connector)\n        else:\n            self.where.add((Constraint(alias, col, field), lookup_type, value),\n                connector)\n\n        if negate:\n            self.promote_joins(join_list)\n            if lookup_type != 'isnull':\n                if len(join_list) > 1:\n                    for j_alias in join_list:\n                        if self.alias_map[j_alias].join_type == self.LOUTER:\n                            j_col = self.alias_map[j_alias].rhs_join_col\n                            # The join promotion logic should never produce\n                            # a LOUTER join for the base join - assert that.\n                            assert j_col is not None\n                            entry = self.where_class()\n                            entry.add(\n                                (Constraint(j_alias, j_col, None), 'isnull', True),\n                                AND\n                            )\n                            entry.negate()\n                            self.where.add(entry, AND)\n                            break\n                if self.is_nullable(field):\n                    # In SQL NULL = anyvalue returns unknown, and NOT unknown\n                    # is still unknown. However, in Python None = anyvalue is False\n                    # (and not False is True...), and we want to return this Python's\n                    # view of None handling. So we need to specifically exclude the\n                    # NULL values, and because we are inside NOT branch they will\n                    # be included in the final resultset. We are essentially creating\n                    # SQL like this here: NOT (col IS NOT NULL), where the first NOT\n                    # is added in upper layers of the code.\n                    self.where.add((Constraint(alias, col, None), 'isnull', False), AND)\n\n        if can_reuse is not None:\n            can_reuse.update(join_list)\n        if process_extras:\n            for filter in extra_filters:\n                self.add_filter(filter, negate=negate, can_reuse=can_reuse,\n                        process_extras=False)\n\n    def add_q(self, q_object, used_aliases=None, force_having=False):\n        \"\"\"\n        Adds a Q-object to the current filter.\n\n        Can also be used to add anything that has an 'add_to_query()' method.\n        \"\"\"\n        if used_aliases is None:\n            used_aliases = self.used_aliases\n\n        if hasattr(q_object, 'add_to_query'):\n            # Complex custom objects are responsible for adding themselves.\n            q_object.add_to_query(self, used_aliases)\n\n        else:\n            if self.where and q_object.connector != AND and len(q_object) > 1:\n                self.where.start_subtree(AND)\n                subtree = True\n            else:\n                subtree = False\n\n            connector = AND\n            if q_object.connector == OR and not force_having:\n                force_having = self.need_force_having(q_object)\n\n            for child in q_object.children:\n                if connector == OR:\n                    refcounts_before = self.alias_refcount.copy()\n                if force_having:\n                    self.having.start_subtree(connector)\n                else:\n                    self.where.start_subtree(connector)\n                if isinstance(child, Node):\n                    self.add_q(child, used_aliases, force_having=force_having)\n                else:\n                    self.add_filter(child, connector, q_object.negated,\n                            can_reuse=used_aliases, force_having=force_having)\n                if force_having:\n                    self.having.end_subtree()\n                else:\n                    self.where.end_subtree()\n\n                if connector == OR:\n                    # Aliases that were newly added or not used at all need to\n                    # be promoted to outer joins if they are nullable relations.\n                    # (they shouldn't turn the whole conditional into the empty\n                    # set just because they don't match anything).\n                    self.promote_unused_aliases(refcounts_before, used_aliases)\n                connector = q_object.connector\n\n            if q_object.negated:\n                self.where.negate()\n\n            if subtree:\n                self.where.end_subtree()\n\n        if self.filter_is_sticky:\n            self.used_aliases = used_aliases\n\n    def setup_joins(self, names, opts, alias, dupe_multis, allow_many=True,\n            allow_explicit_fk=False, can_reuse=None, negate=False,\n            process_extras=True):\n        \"\"\"\n        Compute the necessary table joins for the passage through the fields\n        given in 'names'.\n\n        'opts' is the Options class for the current model\n        (which gives the table we are joining to),\n\n        'alias' is the alias for the\n        table we are joining to.\n        If dupe_multis is True, any many-to-many or\n        many-to-one joins will always create a new alias (necessary for\n        disjunctive filters).\n\n        If can_reuse is not None, it's a list of aliases\n        that can be reused in these joins (nothing else can be reused in this\n        case).\n\n        Finally, 'negate' is used in the same sense as for add_filter()\n        -- it indicates an exclude() filter, or something similar. It is only\n        passed in here so that it can be passed to a field's extra_filter() for\n        customized behavior.\n\n        Returns the final field involved in the join, the target database\n        column (used for any 'where' constraint), the final 'opts' value and the\n        list of tables joined.\n        \"\"\"\n        joins = [alias]\n        last = [0]\n        dupe_set = set()\n        exclusions = set()\n        extra_filters = []\n        int_alias = None\n        for pos, name in enumerate(names):\n            if int_alias is not None:\n                exclusions.add(int_alias)\n            exclusions.add(alias)\n            last.append(len(joins))\n            if name == 'pk':\n                name = opts.pk.name\n            try:\n                field, model, direct, m2m = opts.get_field_by_name(name)\n            except FieldDoesNotExist:\n                for f in opts.fields:\n                    if allow_explicit_fk and name == f.attname:\n                        # XXX: A hack to allow foo_id to work in values() for\n                        # backwards compatibility purposes. If we dropped that\n                        # feature, this could be removed.\n                        field, model, direct, m2m = opts.get_field_by_name(f.name)\n                        break\n                else:\n                    names = opts.get_all_field_names() + list(self.aggregate_select)\n                    raise FieldError(\"Cannot resolve keyword %r into field. \"\n                            \"Choices are: %s\" % (name, \", \".join(names)))\n\n            if not allow_many and (m2m or not direct):\n                for alias in joins:\n                    self.unref_alias(alias)\n                raise MultiJoin(pos + 1)\n            if model:\n                # The field lives on a base class of the current model.\n                # Skip the chain of proxy to the concrete proxied model\n                proxied_model = opts.concrete_model\n\n                for int_model in opts.get_base_chain(model):\n                    if int_model is proxied_model:\n                        opts = int_model._meta\n                    else:\n                        lhs_col = opts.parents[int_model].column\n                        dedupe = lhs_col in opts.duplicate_targets\n                        if dedupe:\n                            exclusions.update(self.dupe_avoidance.get(\n                                    (id(opts), lhs_col), ()))\n                            dupe_set.add((opts, lhs_col))\n                        opts = int_model._meta\n                        alias = self.join((alias, opts.db_table, lhs_col,\n                                opts.pk.column), exclusions=exclusions)\n                        joins.append(alias)\n                        exclusions.add(alias)\n                        for (dupe_opts, dupe_col) in dupe_set:\n                            self.update_dupe_avoidance(dupe_opts, dupe_col,\n                                    alias)\n            cached_data = opts._join_cache.get(name)\n            orig_opts = opts\n            dupe_col = direct and field.column or field.field.column\n            dedupe = dupe_col in opts.duplicate_targets\n            if dupe_set or dedupe:\n                if dedupe:\n                    dupe_set.add((opts, dupe_col))\n                exclusions.update(self.dupe_avoidance.get((id(opts), dupe_col),\n                        ()))\n\n            if process_extras and hasattr(field, 'extra_filters'):\n                extra_filters.extend(field.extra_filters(names, pos, negate))\n            if direct:\n                if m2m:\n                    # Many-to-many field defined on the current model.\n                    if cached_data:\n                        (table1, from_col1, to_col1, table2, from_col2,\n                                to_col2, opts, target) = cached_data\n                    else:\n                        table1 = field.m2m_db_table()\n                        from_col1 = opts.get_field_by_name(\n                            field.m2m_target_field_name())[0].column\n                        to_col1 = field.m2m_column_name()\n                        opts = field.rel.to._meta\n                        table2 = opts.db_table\n                        from_col2 = field.m2m_reverse_name()\n                        to_col2 = opts.get_field_by_name(\n                            field.m2m_reverse_target_field_name())[0].column\n                        target = opts.pk\n                        orig_opts._join_cache[name] = (table1, from_col1,\n                                to_col1, table2, from_col2, to_col2, opts,\n                                target)\n\n                    int_alias = self.join((alias, table1, from_col1, to_col1),\n                            dupe_multis, exclusions, nullable=True,\n                            reuse=can_reuse)\n                    if int_alias == table2 and from_col2 == to_col2:\n                        joins.append(int_alias)\n                        alias = int_alias\n                    else:\n                        alias = self.join(\n                                (int_alias, table2, from_col2, to_col2),\n                                dupe_multis, exclusions, nullable=True,\n                                reuse=can_reuse)\n                        joins.extend([int_alias, alias])\n                elif field.rel:\n                    # One-to-one or many-to-one field\n                    if cached_data:\n                        (table, from_col, to_col, opts, target) = cached_data\n                    else:\n                        opts = field.rel.to._meta\n                        target = field.rel.get_related_field()\n                        table = opts.db_table\n                        from_col = field.column\n                        to_col = target.column\n                        orig_opts._join_cache[name] = (table, from_col, to_col,\n                                opts, target)\n\n                    alias = self.join((alias, table, from_col, to_col),\n                                      exclusions=exclusions,\n                                      nullable=self.is_nullable(field))\n                    joins.append(alias)\n                else:\n                    # Non-relation fields.\n                    target = field\n                    break\n            else:\n                orig_field = field\n                field = field.field\n                if m2m:\n                    # Many-to-many field defined on the target model.\n                    if cached_data:\n                        (table1, from_col1, to_col1, table2, from_col2,\n                                to_col2, opts, target) = cached_data\n                    else:\n                        table1 = field.m2m_db_table()\n                        from_col1 = opts.get_field_by_name(\n                            field.m2m_reverse_target_field_name())[0].column\n                        to_col1 = field.m2m_reverse_name()\n                        opts = orig_field.opts\n                        table2 = opts.db_table\n                        from_col2 = field.m2m_column_name()\n                        to_col2 = opts.get_field_by_name(\n                            field.m2m_target_field_name())[0].column\n                        target = opts.pk\n                        orig_opts._join_cache[name] = (table1, from_col1,\n                                to_col1, table2, from_col2, to_col2, opts,\n                                target)\n\n                    int_alias = self.join((alias, table1, from_col1, to_col1),\n                            dupe_multis, exclusions, nullable=True,\n                            reuse=can_reuse)\n                    alias = self.join((int_alias, table2, from_col2, to_col2),\n                            dupe_multis, exclusions, nullable=True,\n                            reuse=can_reuse)\n                    joins.extend([int_alias, alias])\n                else:\n                    # One-to-many field (ForeignKey defined on the target model)\n                    if cached_data:\n                        (table, from_col, to_col, opts, target) = cached_data\n                    else:\n                        local_field = opts.get_field_by_name(\n                                field.rel.field_name)[0]\n                        opts = orig_field.opts\n                        table = opts.db_table\n                        from_col = local_field.column\n                        to_col = field.column\n                        # In case of a recursive FK, use the to_field for\n                        # reverse lookups as well\n                        if orig_field.model is local_field.model:\n                            target = opts.get_field_by_name(\n                                field.rel.field_name)[0]\n                        else:\n                            target = opts.pk\n                        orig_opts._join_cache[name] = (table, from_col, to_col,\n                                opts, target)\n\n                    alias = self.join((alias, table, from_col, to_col),\n                            dupe_multis, exclusions, nullable=True,\n                            reuse=can_reuse)\n                    joins.append(alias)\n\n            for (dupe_opts, dupe_col) in dupe_set:\n                if int_alias is None:\n                    to_avoid = alias\n                else:\n                    to_avoid = int_alias\n                self.update_dupe_avoidance(dupe_opts, dupe_col, to_avoid)\n\n        if pos != len(names) - 1:\n            if pos == len(names) - 2:\n                raise FieldError(\"Join on field %r not permitted. Did you misspell %r for the lookup type?\" % (name, names[pos + 1]))\n            else:\n                raise FieldError(\"Join on field %r not permitted.\" % name)\n\n        return field, target, opts, joins, last, extra_filters\n\n    def trim_joins(self, target, join_list, last, trim, nonnull_check=False):\n        \"\"\"\n        Sometimes joins at the end of a multi-table sequence can be trimmed. If\n        the final join is against the same column as we are comparing against,\n        and is an inner join, we can go back one step in a join chain and\n        compare against the LHS of the join instead (and then repeat the\n        optimization). The result, potentially, involves fewer table joins.\n\n        The 'target' parameter is the final field being joined to, 'join_list'\n        is the full list of join aliases.\n\n        The 'last' list contains offsets into 'join_list', corresponding to\n        each component of the filter. Many-to-many relations, for example, add\n        two tables to the join list and we want to deal with both tables the\n        same way, so 'last' has an entry for the first of the two tables and\n        then the table immediately after the second table, in that case.\n\n        The 'trim' parameter forces the final piece of the join list to be\n        trimmed before anything. See the documentation of add_filter() for\n        details about this.\n\n        The 'nonnull_check' parameter is True when we are using inner joins\n        between tables explicitly to exclude NULL entries. In that case, the\n        tables shouldn't be trimmed, because the very action of joining to them\n        alters the result set.\n\n        Returns the final active column and table alias and the new active\n        join_list.\n        \"\"\"\n        final = len(join_list)\n        penultimate = last.pop()\n        if penultimate == final:\n            penultimate = last.pop()\n        if trim and final > 1:\n            extra = join_list[penultimate:]\n            join_list = join_list[:penultimate]\n            final = penultimate\n            penultimate = last.pop()\n            col = self.alias_map[extra[0]].lhs_join_col\n            for alias in extra:\n                self.unref_alias(alias)\n        else:\n            col = target.column\n        alias = join_list[-1]\n        while final > 1:\n            join = self.alias_map[alias]\n            if (col != join.rhs_join_col or join.join_type != self.INNER or\n                    nonnull_check):\n                break\n            self.unref_alias(alias)\n            alias = join.lhs_alias\n            col = join.lhs_join_col\n            join_list.pop()\n            final -= 1\n            if final == penultimate:\n                penultimate = last.pop()\n        return col, alias, join_list\n\n    def update_dupe_avoidance(self, opts, col, alias):\n        \"\"\"\n        For a column that is one of multiple pointing to the same table, update\n        the internal data structures to note that this alias shouldn't be used\n        for those other columns.\n        \"\"\"\n        ident = id(opts)\n        for name in opts.duplicate_targets[col]:\n            try:\n                self.dupe_avoidance[ident, name].add(alias)\n            except KeyError:\n                self.dupe_avoidance[ident, name] = set([alias])\n\n    def split_exclude(self, filter_expr, prefix, can_reuse):\n        \"\"\"\n        When doing an exclude against any kind of N-to-many relation, we need\n        to use a subquery. This method constructs the nested query, given the\n        original exclude filter (filter_expr) and the portion up to the first\n        N-to-many relation field.\n        \"\"\"\n        query = Query(self.model)\n        query.add_filter(filter_expr)\n        query.bump_prefix()\n        query.clear_ordering(True)\n        query.set_start(prefix)\n        # Adding extra check to make sure the selected field will not be null\n        # since we are adding a IN <subquery> clause. This prevents the\n        # database from tripping over IN (...,NULL,...) selects and returning\n        # nothing\n        alias, col = query.select[0]\n        query.where.add((Constraint(alias, col, None), 'isnull', False), AND)\n\n        self.add_filter(('%s__in' % prefix, query), negate=True, trim=True,\n                can_reuse=can_reuse)\n\n        # If there's more than one join in the inner query (before any initial\n        # bits were trimmed -- which means the last active table is more than\n        # two places into the alias list), we need to also handle the\n        # possibility that the earlier joins don't match anything by adding a\n        # comparison to NULL (e.g. in\n        # Tag.objects.exclude(parent__parent__name='t1'), a tag with no parent\n        # would otherwise be overlooked).\n        active_positions = len([count for count\n                                in query.alias_refcount.items() if count])\n        if active_positions > 1:\n            self.add_filter(('%s__isnull' % prefix, False), negate=True,\n                    trim=True, can_reuse=can_reuse)\n\n    def set_limits(self, low=None, high=None):\n        \"\"\"\n        Adjusts the limits on the rows retrieved. We use low/high to set these,\n        as it makes it more Pythonic to read and write. When the SQL query is\n        created, they are converted to the appropriate offset and limit values.\n\n        Any limits passed in here are applied relative to the existing\n        constraints. So low is added to the current low value and both will be\n        clamped to any existing high value.\n        \"\"\"\n        if high is not None:\n            if self.high_mark is not None:\n                self.high_mark = min(self.high_mark, self.low_mark + high)\n            else:\n                self.high_mark = self.low_mark + high\n        if low is not None:\n            if self.high_mark is not None:\n                self.low_mark = min(self.high_mark, self.low_mark + low)\n            else:\n                self.low_mark = self.low_mark + low\n\n    def clear_limits(self):\n        \"\"\"\n        Clears any existing limits.\n        \"\"\"\n        self.low_mark, self.high_mark = 0, None\n\n    def can_filter(self):\n        \"\"\"\n        Returns True if adding filters to this instance is still possible.\n\n        Typically, this means no limits or offsets have been put on the results.\n        \"\"\"\n        return not self.low_mark and self.high_mark is None\n\n    def clear_select_clause(self):\n        \"\"\"\n        Removes all fields from SELECT clause. 清楚所有的 SELECT 结果\n        \"\"\"\n        self.select = []\n        self.select_fields = []\n        self.default_cols = False\n        self.select_related = False\n        self.set_extra_mask(())\n        self.set_aggregate_mask(())\n\n    def clear_select_fields(self):\n        \"\"\"\n        Clears the list of fields to select (but not extra_select columns).\n        Some queryset types completely replace any existing list of select\n        columns.\n        \"\"\"\n        self.select = []\n        self.select_fields = []\n\n    def add_distinct_fields(self, *field_names):\n        \"\"\"\n        Adds and resolves the given fields to the query's \"distinct on\" clause.\n        \"\"\"\n        self.distinct_fields = field_names\n        self.distinct = True\n\n    def add_fields(self, field_names, allow_m2m=True):\n        \"\"\"\n        Adds the given (model) fields to the select set. The field names are\n        added in the order specified.\n        \"\"\"\n        alias = self.get_initial_alias()\n        opts = self.get_meta()\n\n        try:\n            for name in field_names:\n                field, target, u2, joins, u3, u4 = self.setup_joins(\n                        name.split(LOOKUP_SEP), opts, alias, False, allow_m2m,\n                        True)\n\n                final_alias = joins[-1]\n\n                col = target.column\n\n                if len(joins) > 1:\n                    join = self.alias_map[final_alias]\n                    if col == join.rhs_join_col:\n                        self.unref_alias(final_alias)\n                        final_alias = join.lhs_alias\n                        col = join.lhs_join_col\n                        joins = joins[:-1]\n\n                self.promote_joins(joins[1:])\n\n                self.select.append((final_alias, col))\n                self.select_fields.append(field)\n        except MultiJoin:\n            raise FieldError(\"Invalid field name: '%s'\" % name)\n        except FieldError:\n            if LOOKUP_SEP in name:\n                # For lookups spanning over relationships, show the error\n                # from the model on which the lookup failed.\n                raise\n            else:\n                names = sorted(opts.get_all_field_names() + list(self.extra)\n                               + list(self.aggregate_select))\n                raise FieldError(\"Cannot resolve keyword %r into field. \"\n                                 \"Choices are: %s\" % (name, \", \".join(names)))\n        self.remove_inherited_models()\n\n    def add_ordering(self, *ordering):\n        \"\"\"\n        Adds items from the 'ordering' sequence to the query's \"order by\"\n        clause. These items are either field names (not column names) --\n        possibly with a direction prefix ('-' or '?') -- or ordinals,\n        corresponding to column positions in the 'select' list.\n\n        If 'ordering' is empty, all ordering is cleared from the query.\n        \"\"\"\n        errors = []\n        for item in ordering:\n            if not ORDER_PATTERN.match(item):\n                errors.append(item)\n        if errors:\n            raise FieldError('Invalid order_by arguments: %s' % errors)\n        if ordering:\n            self.order_by.extend(ordering)\n        else:\n            self.default_ordering = False\n\n    def clear_ordering(self, force_empty=False):\n        \"\"\"\n        Removes any ordering settings. If 'force_empty' is True, there will be\n        no ordering in the resulting query (not even the model's default).\n        \"\"\"\n        self.order_by = []\n        self.extra_order_by = ()\n        if force_empty:\n            self.default_ordering = False\n\n    def set_group_by(self):\n        \"\"\"\n        Expands the GROUP BY clause required by the query.\n\n        This will usually be the set of all non-aggregate fields in the\n        return data. If the database backend supports grouping by the\n        primary key, and the query would be equivalent, the optimization\n        will be made automatically.\n        \"\"\"\n        self.group_by = []\n\n        for sel in self.select:\n            self.group_by.append(sel)\n\n    def add_count_column(self):\n        \"\"\"\n        Converts the query to do count(...) or count(distinct(pk)) in order to\n        get its size.\n        \"\"\"\n        if not self.distinct:\n            if not self.select:\n                count = self.aggregates_module.Count('*', is_summary=True)\n            else:\n                assert len(self.select) == 1, \\\n                        \"Cannot add count col with multiple cols in 'select': %r\" % self.select\n                count = self.aggregates_module.Count(self.select[0])\n        else:\n            opts = self.model._meta\n            if not self.select:\n                count = self.aggregates_module.Count((self.join((None, opts.db_table, None, None)), opts.pk.column),\n                                         is_summary=True, distinct=True)\n            else:\n                # Because of SQL portability issues, multi-column, distinct\n                # counts need a sub-query -- see get_count() for details.\n                assert len(self.select) == 1, \\\n                        \"Cannot add count col with multiple cols in 'select'.\"\n\n                count = self.aggregates_module.Count(self.select[0], distinct=True)\n            # Distinct handling is done in Count(), so don't do it at this\n            # level.\n            self.distinct = False\n\n        # Set only aggregate to be the count column. 只设置聚合属性为总计 cont\n        ???\n        # Clear out the select cache to reflect the new unmasked aggregates.\n        self.aggregates = {None: count}\n        self.set_aggregate_mask(None)\n        self.group_by = None\n\n    def add_select_related(self, fields):\n        \"\"\"\n        Sets up the select_related data structure so that we only select\n        certain related models (as opposed to all models, when\n        self.select_related=True).\n        \"\"\"\n        field_dict = {}\n        for field in fields:\n            d = field_dict\n            for part in field.split(LOOKUP_SEP):\n                d = d.setdefault(part, {})\n        self.select_related = field_dict\n        self.related_select_cols = []\n        self.related_select_fields = []\n\n    def add_extra(self, select, select_params, where, params, tables, order_by):\n        \"\"\"\n        Adds data to the various extra_* attributes for user-created additions\n        to the query.\n        \"\"\"\n        if select:\n            # We need to pair any placeholder markers in the 'select'\n            # dictionary with their parameters in 'select_params' so that\n            # subsequent updates to the select dictionary also adjust the\n            # parameters appropriately.\n            select_pairs = SortedDict()\n            if select_params:\n                param_iter = iter(select_params)\n            else:\n                param_iter = iter([])\n            for name, entry in select.items():\n                entry = force_text(entry)\n                entry_params = []\n                pos = entry.find(\"%s\")\n                while pos != -1:\n                    entry_params.append(next(param_iter))\n                    pos = entry.find(\"%s\", pos + 2)\n                select_pairs[name] = (entry, entry_params)\n            # This is order preserving, since self.extra_select is a SortedDict.\n            self.extra.update(select_pairs)\n        if where or params:\n            self.where.add(ExtraWhere(where, params), AND)\n        if tables:\n            self.extra_tables += tuple(tables)\n        if order_by:\n            self.extra_order_by = order_by\n\n    def clear_deferred_loading(self):\n        \"\"\"\n        Remove any fields from the deferred loading set.\n        \"\"\"\n        self.deferred_loading = (set(), True)\n\n    def add_deferred_loading(self, field_names):\n        \"\"\"\n        Add the given list of model field names to the set of fields to\n        exclude from loading from the database when automatic column selection\n        is done. The new field names are added to any existing field names that\n        are deferred (or removed from any existing field names that are marked\n        as the only ones for immediate loading).\n        \"\"\"\n        # Fields on related models are stored in the literal double-underscore\n        # format, so that we can use a set datastructure. We do the foo__bar\n        # splitting and handling when computing the SQL colum names (as part of\n        # get_columns()).\n        existing, defer = self.deferred_loading\n        if defer:\n            # Add to existing deferred names.\n            self.deferred_loading = existing.union(field_names), True\n        else:\n            # Remove names from the set of any existing \"immediate load\" names.\n            self.deferred_loading = existing.difference(field_names), False\n\n    def add_immediate_loading(self, field_names):\n        \"\"\"\n        Add the given list of model field names to the set of fields to\n        retrieve when the SQL is executed (\"immediate loading\" fields). The\n        field names replace any existing immediate loading field names. If\n        there are field names already specified for deferred loading, those\n        names are removed from the new field_names before storing the new names\n        for immediate loading. (That is, immediate loading overrides any\n        existing immediate values, but respects existing deferrals.)\n        \"\"\"\n        existing, defer = self.deferred_loading\n        field_names = set(field_names)\n        if 'pk' in field_names:\n            field_names.remove('pk')\n            field_names.add(self.model._meta.pk.name)\n\n        if defer:\n            # Remove any existing deferred names from the current set before\n            # setting the new names.\n            self.deferred_loading = field_names.difference(existing), False\n        else:\n            # Replace any existing \"immediate load\" field names.\n            self.deferred_loading = field_names, False\n\n    def get_loaded_field_names(self):\n        \"\"\"\n        If any fields are marked to be deferred, returns a dictionary mapping\n        models to a set of names in those fields that will be loaded. If a\n        model is not in the returned dictionary, none of it's fields are\n        deferred.\n\n        If no fields are marked for deferral, returns an empty dictionary.\n        \"\"\"\n        # We cache this because we call this function multiple times\n        # (compiler.fill_related_selections, query.iterator)\n        try:\n            return self._loaded_field_names_cache\n        except AttributeError:\n            collection = {}\n            self.deferred_to_data(collection, self.get_loaded_field_names_cb)\n            self._loaded_field_names_cache = collection\n            return collection\n\n    def get_loaded_field_names_cb(self, target, model, fields):\n        \"\"\"\n        Callback used by get_deferred_field_names().\n        \"\"\"\n        target[model] = set([f.name for f in fields])\n\n    def set_aggregate_mask(self, names):\n        \"Set the mask of aggregates that will actually be returned by the SELECT\"\n        if names is None:\n            self.aggregate_select_mask = None\n        else:\n            self.aggregate_select_mask = set(names)\n        self._aggregate_select_cache = None\n\n    def set_extra_mask(self, names):\n        \"\"\"\n        Set the mask of extra select items that will be returned by SELECT,\n        we don't actually remove them from the Query since they might be used\n        later\n        \"\"\"\n        if names is None:\n            self.extra_select_mask = None\n        else:\n            self.extra_select_mask = set(names)\n        self._extra_select_cache = None\n\n    def _aggregate_select(self):\n        \"\"\"The SortedDict of aggregate columns that are not masked, and should\n        be used in the SELECT clause.\n\n        This result is cached for optimization purposes.\n        \"\"\"\n        if self._aggregate_select_cache is not None:\n            return self._aggregate_select_cache\n        elif self.aggregate_select_mask is not None:\n            self._aggregate_select_cache = SortedDict([\n                (k,v) for k,v in self.aggregates.items()\n                if k in self.aggregate_select_mask\n            ])\n            return self._aggregate_select_cache\n        else:\n            return self.aggregates\n    aggregate_select = property(_aggregate_select)\n\n    def _extra_select(self):\n        if self._extra_select_cache is not None:\n            return self._extra_select_cache\n        elif self.extra_select_mask is not None:\n            self._extra_select_cache = SortedDict([\n                (k,v) for k,v in self.extra.items()\n                if k in self.extra_select_mask\n            ])\n            return self._extra_select_cache\n        else:\n            return self.extra\n    extra_select = property(_extra_select)\n\n    def set_start(self, start):\n        \"\"\"\n        Sets the table from which to start joining. The start position is\n        specified by the related attribute from the base model. This will\n        automatically set to the select column to be the column linked from the\n        previous table.\n\n        This method is primarily for internal use and the error checking isn't\n        as friendly as add_filter(). Mostly useful for querying directly\n        against the join table of many-to-many relation in a subquery.\n        \"\"\"\n        opts = self.model._meta\n        alias = self.get_initial_alias()\n        field, col, opts, joins, last, extra = self.setup_joins(\n                start.split(LOOKUP_SEP), opts, alias, False)\n        select_col = self.alias_map[joins[1]].lhs_join_col\n        select_alias = alias\n\n        # The call to setup_joins added an extra reference to everything in\n        # joins. Reverse that.\n        for alias in joins:\n            self.unref_alias(alias)\n\n        # We might be able to trim some joins from the front of this query,\n        # providing that we only traverse \"always equal\" connections (i.e. rhs\n        # is *always* the same value as lhs).\n        for alias in joins[1:]:\n            join_info = self.alias_map[alias]\n            if (join_info.lhs_join_col != select_col\n                    or join_info.join_type != self.INNER):\n                break\n            self.unref_alias(select_alias)\n            select_alias = join_info.rhs_alias\n            select_col = join_info.rhs_join_col\n        self.select = [(select_alias, select_col)]\n        self.remove_inherited_models()\n\n    def is_nullable(self, field):\n        \"\"\"\n        A helper to check if the given field should be treated as nullable.\n\n        Some backends treat '' as null and Django treats such fields as\n        nullable for those backends. In such situations field.null can be\n        False even if we should treat the field as nullable.\n        \"\"\"\n        # We need to use DEFAULT_DB_ALIAS here, as QuerySet does not have\n        # (nor should it have) knowledge of which connection is going to be\n        # used. The proper fix would be to defer all decisions where\n        # is_nullable() is needed to the compiler stage, but that is not easy\n        # to do currently.\n        if ((connections[DEFAULT_DB_ALIAS].features.interprets_empty_strings_as_nulls)\n            and field.empty_strings_allowed):\n            return True\n        else:\n            return field.null\n\ndef get_order_dir(field, default='ASC'):\n    \"\"\"\n    Returns the field name and direction for an order specification. For\n    example, '-foo' is returned as ('foo', 'DESC').\n\n    The 'default' param is used to indicate which way no prefix (or a '+'\n    prefix) should sort. The '-' prefix always sorts the opposite way.\n    \"\"\"\n    dirn = ORDER_DIR[default]\n    if field[0] == '-':\n        return field[1:], dirn[1]\n    return field, dirn[0]\n\n\ndef setup_join_cache(sender, **kwargs):\n    \"\"\"\n    The information needed to join between model fields is something that is\n    invariant over the life of the model, so we cache it in the model's Options\n    class, rather than recomputing it all the time.\n\n    This method initialises the (empty) cache when the model is created.\n    \"\"\"\n    sender._meta._join_cache = {}\n\nsignals.class_prepared.connect(setup_join_cache)\n\ndef add_to_dict(data, key, value):\n    \"\"\"\n    A helper function to add \"value\" to the set of values for \"key\", whether or\n    not \"key\" already exists.\n    \"\"\"\n    if key in data:\n        data[key].add(value)\n    else:\n        data[key] = set([value])\n\ndef is_reverse_o2o(field):\n    \"\"\"\n    A little helper to check if the given field is reverse-o2o. The field is\n    expected to be some sort of relation field or related object.\n    \"\"\"\n    return not hasattr(field, 'rel') and field.field.unique\n"
  },
  {
    "path": "Django-1.5.1/django/db/models/sql/subqueries.py",
    "content": "\"\"\"\nQuery subclasses which provide extra functionality beyond simple data retrieval.\n\"\"\"\n\nfrom django.core.exceptions import FieldError\nfrom django.db import connections\nfrom django.db.models.constants import LOOKUP_SEP\nfrom django.db.models.fields import DateField, FieldDoesNotExist\nfrom django.db.models.sql.constants import *\nfrom django.db.models.sql.datastructures import Date\nfrom django.db.models.sql.query import Query\nfrom django.db.models.sql.where import AND, Constraint\nfrom django.utils.datastructures import SortedDict\nfrom django.utils.functional import Promise\nfrom django.utils.encoding import force_text\nfrom django.utils import six\n\n\n__all__ = ['DeleteQuery', 'UpdateQuery', 'InsertQuery', 'DateQuery',\n        'AggregateQuery']\n\nclass DeleteQuery(Query):\n    \"\"\"\n    Delete queries are done through this class, since they are more constrained\n    than general queries.\n    \"\"\"\n\n    compiler = 'SQLDeleteCompiler'\n\n    def do_query(self, table, where, using):\n        self.tables = [table]\n        self.where = where\n        self.get_compiler(using).execute_sql(None)\n\n    def delete_batch(self, pk_list, using, field=None):\n        \"\"\"\n        Set up and execute delete queries for all the objects in pk_list.\n\n        More than one physical query may be executed if there are a\n        lot of values in pk_list.\n        \"\"\"\n        if not field:\n            field = self.model._meta.pk\n        for offset in range(0, len(pk_list), GET_ITERATOR_CHUNK_SIZE):\n            where = self.where_class()\n            where.add((Constraint(None, field.column, field), 'in',\n                    pk_list[offset:offset + GET_ITERATOR_CHUNK_SIZE]), AND)\n            self.do_query(self.model._meta.db_table, where, using=using)\n\n    def delete_qs(self, query, using):\n        \"\"\"\n        Delete the queryset in one SQL query (if possible). For simple queries\n        this is done by copying the query.query.where to self.query, for\n        complex queries by using subquery.\n        \"\"\"\n        innerq = query.query\n        # Make sure the inner query has at least one table in use.\n        innerq.get_initial_alias()\n        # The same for our new query.\n        self.get_initial_alias()\n        innerq_used_tables = [t for t in innerq.tables\n                              if innerq.alias_refcount[t]]\n        if ((not innerq_used_tables or innerq_used_tables == self.tables)\n            and not len(innerq.having)):\n            # There is only the base table in use in the query, and there are\n            # no aggregate filtering going on.\n            self.where = innerq.where\n        else:\n            pk = query.model._meta.pk\n            if not connections[using].features.update_can_self_select:\n                # We can't do the delete using subquery.\n                values = list(query.values_list('pk', flat=True))\n                if not values:\n                    return\n                self.delete_batch(values, using)\n                return\n            else:\n                innerq.clear_select_clause()\n                innerq.select, innerq.select_fields = [(self.get_initial_alias(), pk.column)], [None]\n                values = innerq\n            where = self.where_class()\n            where.add((Constraint(None, pk.column, pk), 'in', values), AND)\n            self.where = where\n        self.get_compiler(using).execute_sql(None)\n\n\nclass UpdateQuery(Query):\n    \"\"\"\n    Represents an \"update\" SQL query.\n    \"\"\"\n\n    compiler = 'SQLUpdateCompiler'\n\n    def __init__(self, *args, **kwargs):\n        super(UpdateQuery, self).__init__(*args, **kwargs)\n        self._setup_query()\n\n    def _setup_query(self):\n        \"\"\"\n        Runs on initialization and after cloning. Any attributes that would\n        normally be set in __init__ should go in here, instead, so that they\n        are also set up after a clone() call.\n        \"\"\"\n        self.values = []\n        self.related_ids = None\n        if not hasattr(self, 'related_updates'):\n            self.related_updates = {}\n\n    def clone(self, klass=None, **kwargs):\n        return super(UpdateQuery, self).clone(klass,\n                related_updates=self.related_updates.copy(), **kwargs)\n\n    def update_batch(self, pk_list, values, using):\n        pk_field = self.model._meta.pk\n        self.add_update_values(values)\n        for offset in range(0, len(pk_list), GET_ITERATOR_CHUNK_SIZE):\n            self.where = self.where_class()\n            self.where.add((Constraint(None, pk_field.column, pk_field), 'in',\n                    pk_list[offset:offset + GET_ITERATOR_CHUNK_SIZE]),\n                    AND)\n            self.get_compiler(using).execute_sql(None)\n\n    def add_update_values(self, values):\n        \"\"\"\n        Convert a dictionary of field name to value mappings into an update\n        query. This is the entry point for the public update() method on\n        querysets.\n        \"\"\"\n        values_seq = []\n        for name, val in six.iteritems(values):\n            field, model, direct, m2m = self.model._meta.get_field_by_name(name)\n            if not direct or m2m:\n                raise FieldError('Cannot update model field %r (only non-relations and foreign keys permitted).' % field)\n            if model:\n                self.add_related_update(model, field, val)\n                continue\n            values_seq.append((field, model, val))\n        return self.add_update_fields(values_seq)\n\n    def add_update_fields(self, values_seq):\n        \"\"\"\n        Turn a sequence of (field, model, value) triples into an update query.\n        Used by add_update_values() as well as the \"fast\" update path when\n        saving models.\n        \"\"\"\n        # Check that no Promise object passes to the query. Refs #10498.\n        values_seq = [(value[0], value[1], force_text(value[2]))\n                      if isinstance(value[2], Promise) else value\n                      for value in values_seq]\n        self.values.extend(values_seq)\n\n    def add_related_update(self, model, field, value):\n        \"\"\"\n        Adds (name, value) to an update query for an ancestor model.\n\n        Updates are coalesced so that we only run one update query per ancestor.\n        \"\"\"\n        try:\n            self.related_updates[model].append((field, None, value))\n        except KeyError:\n            self.related_updates[model] = [(field, None, value)]\n\n    def get_related_updates(self):\n        \"\"\"\n        Returns a list of query objects: one for each update required to an\n        ancestor model. Each query will have the same filtering conditions as\n        the current query but will only update a single table.\n        \"\"\"\n        if not self.related_updates:\n            return []\n        result = []\n        for model, values in six.iteritems(self.related_updates):\n            query = UpdateQuery(model)\n            query.values = values\n            if self.related_ids is not None:\n                query.add_filter(('pk__in', self.related_ids))\n            result.append(query)\n        return result\n\nclass InsertQuery(Query):\n    compiler = 'SQLInsertCompiler'\n\n    def __init__(self, *args, **kwargs):\n        super(InsertQuery, self).__init__(*args, **kwargs)\n        self.fields = []\n        self.objs = []\n\n    def clone(self, klass=None, **kwargs):\n        extras = {\n            'fields': self.fields[:],\n            'objs': self.objs[:],\n            'raw': self.raw,\n        }\n        extras.update(kwargs)\n        return super(InsertQuery, self).clone(klass, **extras)\n\n    def insert_values(self, fields, objs, raw=False):\n        \"\"\"\n        Set up the insert query from the 'insert_values' dictionary. The\n        dictionary gives the model field names and their target values.\n\n        If 'raw_values' is True, the values in the 'insert_values' dictionary\n        are inserted directly into the query, rather than passed as SQL\n        parameters. This provides a way to insert NULL and DEFAULT keywords\n        into the query, for example.\n        \"\"\"\n        self.fields = fields\n        # Check that no Promise object reaches the DB. Refs #10498.\n        for field in fields:\n            for obj in objs:\n                value = getattr(obj, field.attname)\n                if isinstance(value, Promise):\n                    setattr(obj, field.attname, force_text(value))\n        self.objs = objs\n        self.raw = raw\n\nclass DateQuery(Query):\n    \"\"\"\n    A DateQuery is a normal query, except that it specifically selects a single\n    date field. This requires some special handling when converting the results\n    back to Python objects, so we put it in a separate class.\n    \"\"\"\n\n    compiler = 'SQLDateCompiler'\n\n    def add_date_select(self, field_name, lookup_type, order='ASC'):\n        \"\"\"\n        Converts the query into a date extraction query.\n        \"\"\"\n        try:\n            result = self.setup_joins(\n                field_name.split(LOOKUP_SEP),\n                self.get_meta(),\n                self.get_initial_alias(),\n                False\n            )\n        except FieldError:\n            raise FieldDoesNotExist(\"%s has no field named '%s'\" % (\n                self.model._meta.object_name, field_name\n            ))\n        field = result[0]\n        assert isinstance(field, DateField), \"%r isn't a DateField.\" \\\n                % field.name\n        alias = result[3][-1]\n        select = Date((alias, field.column), lookup_type)\n        self.clear_select_clause()\n        self.select, self.select_fields = [select], [None]\n        self.distinct = True\n        self.order_by = order == 'ASC' and [1] or [-1]\n\n        if field.null:\n            self.add_filter((\"%s__isnull\" % field_name, False))\n\nclass AggregateQuery(Query):\n    \"\"\"\n    An AggregateQuery takes another query as a parameter to the FROM\n    clause and only selects the elements in the provided list.\n    \"\"\"\n\n    compiler = 'SQLAggregateCompiler'\n\n    def add_subquery(self, query, using):\n        self.subquery, self.sub_params = query.get_compiler(using).as_sql(with_col_aliases=True)\n"
  },
  {
    "path": "Django-1.5.1/django/db/models/sql/where.py",
    "content": "\"\"\"\nCode to manage the creation and SQL rendering of 'where' constraints.\n\"\"\"\n\nfrom __future__ import absolute_import\n\nimport datetime\nfrom itertools import repeat\n\nfrom django.utils import tree\nfrom django.db.models.fields import Field\nfrom django.db.models.sql.datastructures import EmptyResultSet\nfrom django.db.models.sql.aggregates import Aggregate\nfrom django.utils.itercompat import is_iterator\nfrom django.utils.six.moves import xrange\n\n# Connection types\nAND = 'AND'\nOR = 'OR'\n\nclass EmptyShortCircuit(Exception):\n    \"\"\"\n    Internal exception used to indicate that a \"matches nothing\" node should be\n    added to the where-clause.\n    \"\"\"\n    pass\n\nclass WhereNode(tree.Node):\n    \"\"\"\n    Used to represent the SQL where-clause.\n\n    The class is tied to the Query class that created it (in order to create\n    the correct SQL).\n\n    The children in this tree are usually either Q-like objects or lists of\n    [table_alias, field_name, db_type, lookup_type, value_annotation, params].\n    However, a child could also be any class with as_sql() and relabel_aliases() methods.\n    \"\"\"\n    default = AND\n\n    def add(self, data, connector):\n        \"\"\"\n        Add a node to the where-tree. If the data is a list or tuple, it is\n        expected to be of the form (obj, lookup_type, value), where obj is\n        a Constraint object, and is then slightly munged before being stored\n        (to avoid storing any reference to field objects). Otherwise, the 'data'\n        is stored unchanged and can be any class with an 'as_sql()' method.\n        \"\"\"\n        if not isinstance(data, (list, tuple)):\n            super(WhereNode, self).add(data, connector)\n            return\n\n        obj, lookup_type, value = data\n        if is_iterator(value):\n            # Consume any generators immediately, so that we can determine\n            # emptiness and transform any non-empty values correctly.\n            value = list(value)\n\n        # The \"value_annotation\" parameter is used to pass auxilliary information\n        # about the value(s) to the query construction. Specifically, datetime\n        # and empty values need special handling. Other types could be used\n        # here in the future (using Python types is suggested for consistency).\n        if isinstance(value, datetime.datetime):\n            value_annotation = datetime.datetime\n        elif hasattr(value, 'value_annotation'):\n            value_annotation = value.value_annotation\n        else:\n            value_annotation = bool(value)\n\n        if hasattr(obj, \"prepare\"):\n            value = obj.prepare(lookup_type, value)\n\n        super(WhereNode, self).add(\n                (obj, lookup_type, value_annotation, value), connector)\n\n    def as_sql(self, qn, connection):\n        \"\"\"\n        Returns the SQL version of the where clause and the value to be\n        substituted in. Returns '', [] if this node matches everything,\n        None, [] if this node is empty, and raises EmptyResultSet if this\n        node can't match anything.\n        \"\"\"\n        # Note that the logic here is made slightly more complex than\n        # necessary because there are two kind of empty nodes: Nodes\n        # containing 0 children, and nodes that are known to match everything.\n        # A match-everything node is different than empty node (which also\n        # technically matches everything) for backwards compatibility reasons.\n        # Refs #5261.\n        result = []\n        result_params = []\n        everything_childs, nothing_childs = 0, 0\n        non_empty_childs = len(self.children)\n\n        for child in self.children:\n            try:\n                if hasattr(child, 'as_sql'):\n                    sql, params = child.as_sql(qn=qn, connection=connection)\n                else:\n                    # A leaf node in the tree.\n                    sql, params = self.make_atom(child, qn, connection)\n            except EmptyResultSet:\n                nothing_childs += 1\n            else:\n                if sql:\n                    result.append(sql)\n                    result_params.extend(params)\n                else:\n                    if sql is None:\n                        # Skip empty childs totally.\n                        non_empty_childs -= 1\n                        continue\n                    everything_childs += 1\n            # Check if this node matches nothing or everything.\n            # First check the amount of full nodes and empty nodes\n            # to make this node empty/full.\n            if self.connector == AND:\n                full_needed, empty_needed = non_empty_childs, 1\n            else:\n                full_needed, empty_needed = 1, non_empty_childs\n            # Now, check if this node is full/empty using the\n            # counts.\n            if empty_needed - nothing_childs <= 0:\n                if self.negated:\n                    return '', []\n                else:\n                    raise EmptyResultSet\n            if full_needed - everything_childs <= 0:\n                if self.negated:\n                    raise EmptyResultSet\n                else:\n                    return '', []\n\n        if non_empty_childs == 0:\n            # All the child nodes were empty, so this one is empty, too.\n            return None, []\n        conn = ' %s ' % self.connector\n        sql_string = conn.join(result)\n        if sql_string:\n            if self.negated:\n                # Some backends (Oracle at least) need parentheses\n                # around the inner SQL in the negated case, even if the\n                # inner SQL contains just a single expression.\n                sql_string = 'NOT (%s)' % sql_string\n            elif len(result) > 1:\n                sql_string = '(%s)' % sql_string\n        return sql_string, result_params\n\n    def make_atom(self, child, qn, connection):\n        \"\"\"\n        Turn a tuple (Constraint(table_alias, column_name, db_type),\n        lookup_type, value_annotation, params) into valid SQL.\n\n        The first item of the tuple may also be an Aggregate.\n\n        Returns the string for the SQL fragment and the parameters to use for\n        it.\n        \"\"\"\n        lvalue, lookup_type, value_annotation, params_or_value = child\n        if isinstance(lvalue, Constraint):\n            try:\n                lvalue, params = lvalue.process(lookup_type, params_or_value, connection)\n            except EmptyShortCircuit:\n                raise EmptyResultSet\n        elif isinstance(lvalue, Aggregate):\n            params = lvalue.field.get_db_prep_lookup(lookup_type, params_or_value, connection)\n        else:\n            raise TypeError(\"'make_atom' expects a Constraint or an Aggregate \"\n                            \"as the first item of its 'child' argument.\")\n\n        if isinstance(lvalue, tuple):\n            # A direct database column lookup.\n            field_sql = self.sql_for_columns(lvalue, qn, connection)\n        else:\n            # A smart object with an as_sql() method.\n            field_sql = lvalue.as_sql(qn, connection)\n\n        if value_annotation is datetime.datetime:\n            cast_sql = connection.ops.datetime_cast_sql()\n        else:\n            cast_sql = '%s'\n\n        if hasattr(params, 'as_sql'):\n            extra, params = params.as_sql(qn, connection)\n            cast_sql = ''\n        else:\n            extra = ''\n\n        if (len(params) == 1 and params[0] == '' and lookup_type == 'exact'\n            and connection.features.interprets_empty_strings_as_nulls):\n            lookup_type = 'isnull'\n            value_annotation = True\n\n        if lookup_type in connection.operators:\n            format = \"%s %%s %%s\" % (connection.ops.lookup_cast(lookup_type),)\n            return (format % (field_sql,\n                              connection.operators[lookup_type] % cast_sql,\n                              extra), params)\n\n        if lookup_type == 'in':\n            if not value_annotation:\n                raise EmptyResultSet\n            if extra:\n                return ('%s IN %s' % (field_sql, extra), params)\n            max_in_list_size = connection.ops.max_in_list_size()\n            if max_in_list_size and len(params) > max_in_list_size:\n                # Break up the params list into an OR of manageable chunks.\n                in_clause_elements = ['(']\n                for offset in xrange(0, len(params), max_in_list_size):\n                    if offset > 0:\n                        in_clause_elements.append(' OR ')\n                    in_clause_elements.append('%s IN (' % field_sql)\n                    group_size = min(len(params) - offset, max_in_list_size)\n                    param_group = ', '.join(repeat('%s', group_size))\n                    in_clause_elements.append(param_group)\n                    in_clause_elements.append(')')\n                in_clause_elements.append(')')\n                return ''.join(in_clause_elements), params\n            else:\n                return ('%s IN (%s)' % (field_sql,\n                                        ', '.join(repeat('%s', len(params)))),\n                        params)\n        elif lookup_type in ('range', 'year'):\n            return ('%s BETWEEN %%s and %%s' % field_sql, params)\n        elif lookup_type in ('month', 'day', 'week_day'):\n            return ('%s = %%s' % connection.ops.date_extract_sql(lookup_type, field_sql),\n                    params)\n        elif lookup_type == 'isnull':\n            return ('%s IS %sNULL' % (field_sql,\n                (not value_annotation and 'NOT ' or '')), ())\n        elif lookup_type == 'search':\n            return (connection.ops.fulltext_search_sql(field_sql), params)\n        elif lookup_type in ('regex', 'iregex'):\n            return connection.ops.regex_lookup(lookup_type) % (field_sql, cast_sql), params\n\n        raise TypeError('Invalid lookup_type: %r' % lookup_type)\n\n    def sql_for_columns(self, data, qn, connection):\n        \"\"\"\n        Returns the SQL fragment used for the left-hand side of a column\n        constraint (for example, the \"T1.foo\" portion in the clause\n        \"WHERE ... T1.foo = 6\").\n        \"\"\"\n        table_alias, name, db_type = data\n        if table_alias:\n            lhs = '%s.%s' % (qn(table_alias), qn(name))\n        else:\n            lhs = qn(name)\n        return connection.ops.field_cast_sql(db_type) % lhs\n\n    def relabel_aliases(self, change_map, node=None):\n        \"\"\"\n        Relabels the alias values of any children. 'change_map' is a dictionary\n        mapping old (current) alias values to the new values.\n        \"\"\"\n        if not node:\n            node = self\n        for pos, child in enumerate(node.children):\n            if hasattr(child, 'relabel_aliases'):\n                child.relabel_aliases(change_map)\n            elif isinstance(child, tree.Node):\n                self.relabel_aliases(change_map, child)\n            elif isinstance(child, (list, tuple)):\n                if isinstance(child[0], (list, tuple)):\n                    elt = list(child[0])\n                    if elt[0] in change_map:\n                        elt[0] = change_map[elt[0]]\n                        node.children[pos] = (tuple(elt),) + child[1:]\n                else:\n                    child[0].relabel_aliases(change_map)\n\n                # Check if the query value also requires relabelling\n                if hasattr(child[3], 'relabel_aliases'):\n                    child[3].relabel_aliases(change_map)\n\nclass EverythingNode(object):\n    \"\"\"\n    A node that matches everything.\n    \"\"\"\n\n    def as_sql(self, qn=None, connection=None):\n        return '', []\n\n    def relabel_aliases(self, change_map, node=None):\n        return\n\nclass NothingNode(object):\n    \"\"\"\n    A node that matches nothing.\n    \"\"\"\n    def as_sql(self, qn=None, connection=None):\n        raise EmptyResultSet\n\n    def relabel_aliases(self, change_map, node=None):\n        return\n\nclass ExtraWhere(object):\n    def __init__(self, sqls, params):\n        self.sqls = sqls\n        self.params = params\n\n    def as_sql(self, qn=None, connection=None):\n        sqls = [\"(%s)\" % sql for sql in self.sqls]\n        return \" AND \".join(sqls), tuple(self.params or ())\n\nclass Constraint(object):\n    \"\"\"\n    An object that can be passed to WhereNode.add() and knows how to\n    pre-process itself prior to including in the WhereNode.\n    \"\"\"\n    def __init__(self, alias, col, field):\n        self.alias, self.col, self.field = alias, col, field\n\n    def __getstate__(self):\n        \"\"\"Save the state of the Constraint for pickling.\n\n        Fields aren't necessarily pickleable, because they can have\n        callable default values. So, instead of pickling the field\n        store a reference so we can restore it manually\n        \"\"\"\n        obj_dict = self.__dict__.copy()\n        if self.field:\n            obj_dict['model'] = self.field.model\n            obj_dict['field_name'] = self.field.name\n        del obj_dict['field']\n        return obj_dict\n\n    def __setstate__(self, data):\n        \"\"\"Restore the constraint \"\"\"\n        model = data.pop('model', None)\n        field_name = data.pop('field_name', None)\n        self.__dict__.update(data)\n        if model is not None:\n            self.field = model._meta.get_field(field_name)\n        else:\n            self.field = None\n\n    def prepare(self, lookup_type, value):\n        if self.field:\n            return self.field.get_prep_lookup(lookup_type, value)\n        return value\n\n    def process(self, lookup_type, value, connection):\n        \"\"\"\n        Returns a tuple of data suitable for inclusion in a WhereNode\n        instance.\n        \"\"\"\n        # Because of circular imports, we need to import this here.\n        from django.db.models.base import ObjectDoesNotExist\n        try:\n            if self.field:\n                params = self.field.get_db_prep_lookup(lookup_type, value,\n                    connection=connection, prepared=True)\n                db_type = self.field.db_type(connection=connection)\n            else:\n                # This branch is used at times when we add a comparison to NULL\n                # (we don't really want to waste time looking up the associated\n                # field object at the calling location).\n                params = Field().get_db_prep_lookup(lookup_type, value,\n                    connection=connection, prepared=True)\n                db_type = None\n        except ObjectDoesNotExist:\n            raise EmptyShortCircuit\n\n        return (self.alias, self.col, db_type), params\n\n    def relabel_aliases(self, change_map):\n        if self.alias in change_map:\n            self.alias = change_map[self.alias]\n"
  },
  {
    "path": "Django-1.5.1/django/db/transaction.py",
    "content": "\"\"\"\nThis module implements a transaction manager that can be used to define\ntransaction handling in a request or view function. It is used by transaction\ncontrol middleware and decorators.\n\nThe transaction manager can be in managed or in auto state. Auto state means the\nsystem is using a commit-on-save strategy (actually it's more like\ncommit-on-change). As soon as the .save() or .delete() (or related) methods are\ncalled, a commit is made.\n\nManaged transactions don't do those commits, but will need some kind of manual\nor implicit commits or rollbacks.\n\"\"\"\n\nfrom functools import wraps\n\nfrom django.db import connections, DEFAULT_DB_ALIAS\n\n\nclass TransactionManagementError(Exception):\n    \"\"\"\n    This exception is thrown when something bad happens with transaction\n    management.\n    \"\"\"\n    pass\n\ndef abort(using=None):\n    \"\"\"\n    Roll back any ongoing transactions and clean the transaction management\n    state of the connection.\n\n    This method is to be used only in cases where using balanced\n    leave_transaction_management() calls isn't possible. For example after a\n    request has finished, the transaction state isn't known, yet the connection\n    must be cleaned up for the next request.\n    \"\"\"\n    if using is None:\n        using = DEFAULT_DB_ALIAS\n    connection = connections[using]\n    connection.abort()\n\ndef enter_transaction_management(managed=True, using=None):\n    \"\"\"\n    Enters transaction management for a running thread. It must be balanced with\n    the appropriate leave_transaction_management call, since the actual state is\n    managed as a stack.\n\n    The state and dirty flag are carried over from the surrounding block or\n    from the settings, if there is no surrounding block (dirty is always false\n    when no current block is running).\n    \"\"\"\n    if using is None:\n        using = DEFAULT_DB_ALIAS\n    connection = connections[using]\n    connection.enter_transaction_management(managed)\n\ndef leave_transaction_management(using=None):\n    \"\"\"\n    Leaves transaction management for a running thread. A dirty flag is carried\n    over to the surrounding block, as a commit will commit all changes, even\n    those from outside. (Commits are on connection level.)\n    \"\"\"\n    if using is None:\n        using = DEFAULT_DB_ALIAS\n    connection = connections[using]\n    connection.leave_transaction_management()\n\ndef is_dirty(using=None):\n    \"\"\"\n    Returns True if the current transaction requires a commit for changes to\n    happen.\n    \"\"\"\n    if using is None:\n        using = DEFAULT_DB_ALIAS\n    connection = connections[using]\n    return connection.is_dirty()\n\ndef set_dirty(using=None):\n    \"\"\"\n    Sets a dirty flag for the current thread and code streak. This can be used\n    to decide in a managed block of code to decide whether there are open\n    changes waiting for commit.\n    \"\"\"\n    if using is None:\n        using = DEFAULT_DB_ALIAS\n    connection = connections[using]\n    connection.set_dirty()\n\ndef set_clean(using=None):\n    \"\"\"\n    Resets a dirty flag for the current thread and code streak. This can be used\n    to decide in a managed block of code to decide whether a commit or rollback\n    should happen.\n    \"\"\"\n    if using is None:\n        using = DEFAULT_DB_ALIAS\n    connection = connections[using]\n    connection.set_clean()\n\ndef clean_savepoints(using=None):\n    if using is None:\n        using = DEFAULT_DB_ALIAS\n    connection = connections[using]\n    connection.clean_savepoints()\n\ndef is_managed(using=None):\n    \"\"\"\n    Checks whether the transaction manager is in manual or in auto state.\n    \"\"\"\n    if using is None:\n        using = DEFAULT_DB_ALIAS\n    connection = connections[using]\n    return connection.is_managed()\n\ndef managed(flag=True, using=None):\n    \"\"\"\n    Puts the transaction manager into a manual state: managed transactions have\n    to be committed explicitly by the user. If you switch off transaction\n    management and there is a pending commit/rollback, the data will be\n    commited.\n    \"\"\"\n    if using is None:\n        using = DEFAULT_DB_ALIAS\n    connection = connections[using]\n    connection.managed(flag)\n\ndef commit_unless_managed(using=None):\n    \"\"\"\n    Commits changes if the system is not in managed transaction mode.\n    \"\"\"\n    if using is None:\n        using = DEFAULT_DB_ALIAS\n    connection = connections[using]\n    connection.commit_unless_managed()\n\ndef rollback_unless_managed(using=None):\n    \"\"\"\n    Rolls back changes if the system is not in managed transaction mode.\n    \"\"\"\n    if using is None:\n        using = DEFAULT_DB_ALIAS\n    connection = connections[using]\n    connection.rollback_unless_managed()\n\ndef commit(using=None):\n    \"\"\"\n    Does the commit itself and resets the dirty flag.\n    \"\"\"\n    if using is None:\n        using = DEFAULT_DB_ALIAS\n    connection = connections[using]\n    connection.commit()\n\ndef rollback(using=None):\n    \"\"\"\n    This function does the rollback itself and resets the dirty flag.\n    \"\"\"\n    if using is None:\n        using = DEFAULT_DB_ALIAS\n    connection = connections[using]\n    connection.rollback()\n\ndef savepoint(using=None):\n    \"\"\"\n    Creates a savepoint (if supported and required by the backend) inside the\n    current transaction. Returns an identifier for the savepoint that will be\n    used for the subsequent rollback or commit.\n    \"\"\"\n    if using is None:\n        using = DEFAULT_DB_ALIAS\n    connection = connections[using]\n    return connection.savepoint()\n\ndef savepoint_rollback(sid, using=None):\n    \"\"\"\n    Rolls back the most recent savepoint (if one exists). Does nothing if\n    savepoints are not supported.\n    \"\"\"\n    if using is None:\n        using = DEFAULT_DB_ALIAS\n    connection = connections[using]\n    connection.savepoint_rollback(sid)\n\ndef savepoint_commit(sid, using=None):\n    \"\"\"\n    Commits the most recent savepoint (if one exists). Does nothing if\n    savepoints are not supported.\n    \"\"\"\n    if using is None:\n        using = DEFAULT_DB_ALIAS\n    connection = connections[using]\n    connection.savepoint_commit(sid)\n\n##############\n# DECORATORS #\n##############\n\nclass Transaction(object):\n    \"\"\"\n    Acts as either a decorator, or a context manager.  If it's a decorator it\n    takes a function and returns a wrapped function.  If it's a contextmanager\n    it's used with the ``with`` statement.  In either event entering/exiting\n    are called before and after, respectively, the function/block is executed.\n\n    autocommit, commit_on_success, and commit_manually contain the\n    implementations of entering and exiting.\n    \"\"\"\n    def __init__(self, entering, exiting, using):\n        self.entering = entering\n        self.exiting = exiting\n        self.using = using\n\n    def __enter__(self):\n        self.entering(self.using)\n\n    def __exit__(self, exc_type, exc_value, traceback):\n        self.exiting(exc_value, self.using)\n\n    def __call__(self, func):\n        @wraps(func)\n        def inner(*args, **kwargs):\n            with self:\n                return func(*args, **kwargs)\n        return inner\n\ndef _transaction_func(entering, exiting, using):\n    \"\"\"\n    Takes 3 things, an entering function (what to do to start this block of\n    transaction management), an exiting function (what to do to end it, on both\n    success and failure, and using which can be: None, indiciating using is\n    DEFAULT_DB_ALIAS, a callable, indicating that using is DEFAULT_DB_ALIAS and\n    to return the function already wrapped.\n\n    Returns either a Transaction objects, which is both a decorator and a\n    context manager, or a wrapped function, if using is a callable.\n    \"\"\"\n    # Note that although the first argument is *called* `using`, it\n    # may actually be a function; @autocommit and @autocommit('foo')\n    # are both allowed forms.\n    if using is None:\n        using = DEFAULT_DB_ALIAS\n    if callable(using):\n        return Transaction(entering, exiting, DEFAULT_DB_ALIAS)(using)\n    return Transaction(entering, exiting, using)\n\n\ndef autocommit(using=None):\n    \"\"\"\n    Decorator that activates commit on save. This is Django's default behavior;\n    this decorator is useful if you globally activated transaction management in\n    your settings file and want the default behavior in some view functions.\n    \"\"\"\n    def entering(using):\n        enter_transaction_management(managed=False, using=using)\n        managed(False, using=using)\n\n    def exiting(exc_value, using):\n        leave_transaction_management(using=using)\n\n    return _transaction_func(entering, exiting, using)\n\ndef commit_on_success(using=None):\n    \"\"\"\n    This decorator activates commit on response. This way, if the view function\n    runs successfully, a commit is made; if the viewfunc produces an exception,\n    a rollback is made. This is one of the most common ways to do transaction\n    control in Web apps.\n    \"\"\"\n    def entering(using):\n        enter_transaction_management(using=using)\n        managed(True, using=using)\n\n    def exiting(exc_value, using):\n        try:\n            if exc_value is not None:\n                if is_dirty(using=using):\n                    rollback(using=using)\n            else:\n                if is_dirty(using=using):\n                    try:\n                        commit(using=using)\n                    except:\n                        rollback(using=using)\n                        raise\n        finally:\n            leave_transaction_management(using=using)\n\n    return _transaction_func(entering, exiting, using)\n\ndef commit_manually(using=None):\n    \"\"\"\n    Decorator that activates manual transaction control. It just disables\n    automatic transaction control and doesn't do any commit/rollback of its\n    own -- it's up to the user to call the commit and rollback functions\n    themselves.\n    \"\"\"\n    def entering(using):\n        enter_transaction_management(using=using)\n        managed(True, using=using)\n\n    def exiting(exc_value, using):\n        leave_transaction_management(using=using)\n\n    return _transaction_func(entering, exiting, using)\n"
  },
  {
    "path": "Django-1.5.1/django/db/utils.py",
    "content": "import os\nimport pkgutil\nfrom threading import local\n\nfrom django.conf import settings\nfrom django.core.exceptions import ImproperlyConfigured\nfrom django.utils.importlib import import_module\nfrom django.utils._os import upath\nfrom django.utils import six\n\n\nDEFAULT_DB_ALIAS = 'default'\n\n# Define some exceptions that mirror the PEP249 interface.\n# We will rethrow any backend-specific errors using these\n# common wrappers\nclass DatabaseError(Exception):\n    pass\n\nclass IntegrityError(DatabaseError):\n    pass\n\n导入数据库后端模块\ndef load_backend(backend_name):\n    # Look for a fully qualified database backend name\n    try:\n        # 导入模块 django.db.backends, 一般会在这里成功返回, 除非指定了未知的数据库后端名\n        return import_module('.base', backend_name)\n    except ImportError as e_user:\n        # The database backend wasn't found. Display a helpful error message\n        # listing all possible (built-in) database backends.\n        backend_dir = os.path.join(os.path.dirname(upath(__file__)), 'backends')\n        try:\n            # 内建的数据库后端驱动, 除了 dummy\n            builtin_backends = [\n                name for _, name, ispkg in pkgutil.iter_modules([backend_dir])\n                if ispkg and name != 'dummy']\n\n        except EnvironmentError:\n            builtin_backends = []\n\n        # 查看是否给定的 backend_name 在内建的后端驱动中, 如果没有\n        if backend_name not in ['django.db.backends.%s' % b for b in\n                                builtin_backends]:\n            # 异常\n            backend_reprs = map(repr, sorted(builtin_backends))\n            error_msg = (\"%r isn't an available database backend.\\n\"\n                         \"Try using 'django.db.backends.XXX', where XXX \"\n                         \"is one of:\\n    %s\\nError was: %s\" %\n                         (backend_name, \", \".join(backend_reprs), e_user))\n            raise ImproperlyConfigured(error_msg)\n        else:\n            # If there's some other error, this must be an error in Django\n            raise\n\n\nclass ConnectionDoesNotExist(Exception):\n    pass\n\n解析并存储 settings.DATABASES\nclass ConnectionHandler(object):\n    # 在 django.db.__init__ 中有一句:\n    # connections = ConnectionHandler(settings.DATABASES)\n    # 可见, ConnectionHandler.databases == settings.DATABASES\n    def __init__(self, databases):\n        if not databases:\n            # 如果没有设置数据库, 将安装无用的数据库后端驱动\n            self.databases = {\n                DEFAULT_DB_ALIAS: {\n                    'ENGINE': 'django.db.backends.dummy',\n                },\n            }\n        else:\n            self.databases = databases\n\n        # 线程本地数据, 为该线程分配一个数据变量\n        self._connections = local()\n\n    def ensure_defaults(self, alias):\n        \"\"\"\n        当没有数据库设置的时候, 会被调用\n        Puts the defaults into the settings dictionary for a given connection\n        where no settings is provided.\n        \"\"\"\n        try:\n            conn = self.databases[alias]\n        except KeyError:\n            raise ConnectionDoesNotExist(\"The connection %s doesn't exist\" % alias)\n\n        # 防止 ENGINE 没有设置\n        conn.setdefault('ENGINE', 'django.db.backends.dummy')\n\n        # 看似多余的一项检测\n        if conn['ENGINE'] == 'django.db.backends.' or not conn['ENGINE']:\n            conn['ENGINE'] = 'django.db.backends.dummy'\n\n        conn.setdefault('OPTIONS', {})\n\n        conn.setdefault('TIME_ZONE', 'UTC' if settings.USE_TZ else settings.TIME_ZONE)\n\n        # 如果 ['NAME', 'USER', 'PASSWORD', 'HOST', 'PORT'] 都没有指定, 则默认为空\n        for setting in ['NAME', 'USER', 'PASSWORD', 'HOST', 'PORT']:\n            conn.setdefault(setting, '')\n\n        # 如果 ['TEST_CHARSET', 'TEST_COLLATION', 'TEST_NAME', 'TEST_MIRROR'] 没有指定, 默认为 None\n        for setting in ['TEST_CHARSET', 'TEST_COLLATION', 'TEST_NAME', 'TEST_MIRROR']:\n            conn.setdefault(setting, None)\n\n    def __getitem__(self, alias):\n        # alias 别名\n        if hasattr(self._connections, alias):\n            return getattr(self._connections, alias)\n\n        如果没有, 会尝试加载\n        self.ensure_defaults(alias)\n\n        db = self.databases[alias]\n\n        backend = load_backend(db['ENGINE'])\n\n        # self._connections 中的每一项都是 DatabaseWrapper 实例\n        conn = backend.DatabaseWrapper(db, alias)\n        setattr(self._connections, alias, conn)\n        return conn\n\n    def __setitem__(self, key, value):\n        setattr(self._connections, key, value)\n\n    def __iter__(self):\n        return iter(self.databases)\n\n    def all(self):\n        return [self[alias] for alias in self]\n\n\nclass ConnectionRouter(object):\n    def __init__(self, routers):\n\n        self.routers = []\n\n        for r in routers:\n            if isinstance(r, six.string_types):\n\n                try:\n                    module_name, klass_name = r.rsplit('.', 1)\n                    module = import_module(module_name) 导入模块\n                except ImportError as e:\n                    raise ImproperlyConfigured('Error importing database router %s: \"%s\"' % (klass_name, e))\n\n                try:\n                    router_class = getattr(module, klass_name)\n                except AttributeError:\n                    raise ImproperlyConfigured('Module \"%s\" does not define a database router name \"%s\"' % (module, klass_name))\n                else:\n                    router = router_class()\n            else:\n                router = r\n            self.routers.append(router)\n\n    def _router_func(action):\n        def _route_db(self, model, **hints):\n            chosen_db = None\n            for router in self.routers:\n                try:\n                    method = getattr(router, action)\n                except AttributeError:\n                    # If the router doesn't have a method, skip to the next one.\n                    pass\n                else:\n                    chosen_db = method(model, **hints)\n                    if chosen_db:\n                        return chosen_db\n            try:\n                return hints['instance']._state.db or DEFAULT_DB_ALIAS\n            except KeyError:\n                return DEFAULT_DB_ALIAS\n        return _route_db\n\n    db_for_read = _router_func('db_for_read')\n    db_for_write = _router_func('db_for_write')\n\n    def allow_relation(self, obj1, obj2, **hints):\n        for router in self.routers:\n            try:\n                method = router.allow_relation\n            except AttributeError:\n                # If the router doesn't have a method, skip to the next one.\n                pass\n            else:\n                allow = method(obj1, obj2, **hints)\n                if allow is not None:\n                    return allow\n        return obj1._state.db == obj2._state.db\n\n    def allow_syncdb(self, db, model):\n        for router in self.routers:\n            try:\n                method = router.allow_syncdb\n            except AttributeError:\n                # If the router doesn't have a method, skip to the next one.\n                pass\n            else:\n                allow = method(db, model)\n                if allow is not None:\n                    return allow\n        return True\n"
  },
  {
    "path": "Django-1.5.1/django/dispatch/__init__.py",
    "content": "\"\"\"Multi-consumer multi-producer dispatching mechanism\n\nOriginally based on pydispatch (BSD) http://pypi.python.org/pypi/PyDispatcher/2.0.1\nSee license.txt for original license.\n\nHeavily modified for Django's purposes. 有重大修改\n\"\"\"\n\nfrom django.dispatch.dispatcher import Signal, receiver"
  },
  {
    "path": "Django-1.5.1/django/dispatch/dispatcher.py",
    "content": "import weakref\nimport threading\n\nfrom django.dispatch import saferef\nfrom django.utils.six.moves import xrange\n\nWEAKREF_TYPES = (weakref.ReferenceType, saferef.BoundMethodWeakref)\n\ndef _make_id(target):\n    if hasattr(target, '__func__'):\n        return (id(target.__self__), id(target.__func__))\n    return id(target)\n\nclass Signal(object):\n    \"\"\"\n    Base class for all signals\n\n    Internal attributes:\n\n        receivers\n            { receriverkey (id) : weakref(receiver) }\n    \"\"\"\n\n    def __init__(self, providing_args=None):\n        \"\"\"\n        Create a new signal.\n\n        providing_args\n            A list of the arguments this signal can pass along in a send() call. 列表\n        \"\"\"\n        self.receivers = []\n        if providing_args is None:\n            providing_args = []\n\n        self.providing_args = set(providing_args) 去重复\n        self.lock = threading.Lock()# A factory function that returns a new primitive lock object.\n\n    def connect(self, receiver, sender=None, weak=True, dispatch_uid=None):\n        \"\"\"\n        Connect receiver to sender for signal. 发送信号\n\n        Arguments:\n\n            receiver 函数或者对象函数\n                A function or an instance method which is to receive signals.\n                Receivers must be hashable objects.\n\n                If weak is True, then receiver must be weak-referencable (more\n                precisely saferef.safeRef() must be able to create a reference\n                to the receiver).\n\n                Receivers must be able to accept keyword arguments.\n\n                If receivers have a dispatch_uid attribute, the receiver will\n                not be added if another receiver already exists with that\n                dispatch_uid.\n\n            sender 发送器\n                The sender to which the receiver should respond. Must either be\n                of type Signal, or None to receive events from any sender.\n\n            weak\n                Whether to use weak references to the receiver. By default, the\n                module will attempt to use weak references to the receiver\n                objects. If this parameter is false, then strong references will\n                be used.\n\n            dispatch_uid 标志调度器的 id\n                An identifier used to uniquely identify a particular instance of\n                a receiver. This will usually be a string, though it may be\n                anything hashable.\n        \"\"\"\n        from django.conf import settings\n\n        # If DEBUG is on, check that we got a good receiver\n        if settings.DEBUG:\n            import inspect 调试, receiver 必须是可调用的\n            assert callable(receiver), \"Signal receivers must be callable.\"\n\n            # Check for **kwargs\n            # Not all callables are inspectable with getargspec, so we'll\n            # try a couple different ways but in the end fall back on assuming\n            # it is -- we don't want to prevent registration of valid but weird\n            # callables.\n            try:\n                argspec = inspect.getargspec(receiver)\n            except TypeError:\n                try:\n                    argspec = inspect.getargspec(receiver.__call__)\n                except (TypeError, AttributeError):\n                    argspec = None\n            if argspec:\n                assert argspec[2] is not None, \\\n                    \"Signal receivers must accept keyword arguments (**kwargs).\" 必须要接收字典\n\n        if dispatch_uid:\n            lookup_key = (dispatch_uid, _make_id(sender))\n        else:\n            lookup_key = (_make_id(receiver), _make_id(sender))\n\n        if weak:\n            receiver = saferef.safeRef(receiver, onDelete=self._remove_receiver)\n\n        如果在 receivers 中已经存在, 就退出; 如果不存在, 需要添加到 receivers 中\n        with self.lock:\n            for r_key, _ in self.receivers:\n                if r_key == lookup_key:\n                    break\n            else:\n                self.receivers.append((lookup_key, receiver))\n\n                connect 是加入到 receivers 中, disconnect 是从 receivers 中删除\n    def disconnect(self, receiver=None, sender=None, weak=True, dispatch_uid=None):\n        \"\"\"\n        Disconnect receiver from sender for signal.\n\n        If weak references are used, disconnect need not be called. The receiver\n        will be remove from dispatch automatically.\n\n        Arguments:\n\n            receiver\n                The registered receiver to disconnect. May be none if\n                dispatch_uid is specified.\n\n            sender\n                The registered sender to disconnect\n\n            weak\n                The weakref state to disconnect\n\n            dispatch_uid\n                the unique identifier of the receiver to disconnect\n        \"\"\"\n        dispatch_uid 是可以计算的\n        if dispatch_uid:\n            lookup_key = (dispatch_uid, _make_id(sender))\n        else:\n            lookup_key = (_make_id(receiver), _make_id(sender))\n\n        with self.lock:\n            for index in xrange(len(self.receivers)):\n                (r_key, _) = self.receivers[index]\n                if r_key == lookup_key:\n                    del self.receivers[index]\n                    break\n\n    def has_listeners(self, sender=None):\n        return bool(self._live_receivers(_make_id(sender)))\n\n    def send(self, sender, **named):\n        \"\"\"\n        Send signal from sender to all connected receivers.\n\n        If any receiver raises an error, the error propagates 传播 back through send,\n        terminating the dispatch loop, so it is quite possible to not have all\n        receivers called if a raises an error.当其中一个 receiver 出现错误时, 会导致后面的 receiver 不能接受信号\n\n        Arguments:\n\n            sender\n                The sender of the signal Either a specific object or None.\n\n            named\n                Named arguments which will be passed to receivers.\n\n        Returns a list of tuple pairs [(receiver, response), ... ].\n        \"\"\"\n        responses = []\n        if not self.receivers:\n            return responses\n\n        for receiver in self._live_receivers(_make_id(sender)):\n            response = receiver(signal=self, sender=sender, **named)\n            responses.append((receiver, response))\n        return responses\n\n    def send_robust(self, sender, **named):\n        \"\"\"\n        相对 send, 捕捉了错误\n        Send signal from sender to all connected receivers catching errors.\n\n        Arguments:\n\n            sender\n                The sender of the signal. Can be any python object (normally one\n                registered with a connect if you actually want something to\n                occur).\n\n            named\n                Named arguments which will be passed to receivers. These\n                arguments must be a subset of the argument names defined in\n                providing_args.\n\n        Return a list of tuple pairs [(receiver, response), ... ]. May raise\n        DispatcherKeyError.\n\n        If any receiver raises an error (specifically any subclass of\n        Exception), the error instance is returned as the result for that\n        receiver.\n        \"\"\"\n        responses = []\n        if not self.receivers:\n            return responses\n\n        # Call each receiver with whatever arguments it can accept.\n        # Return a list of tuple pairs [(receiver, response), ... ].\n        for receiver in self._live_receivers(_make_id(sender)):\n            try:\n                response = receiver(signal=self, sender=sender, **named)\n            except Exception as err:\n                responses.append((receiver, err))\n            else:\n                responses.append((receiver, response))\n        return responses\n\n    def _live_receivers(self, senderkey):\n        \"\"\"\n        Filter sequence of receivers to get resolved, live receivers. 过滤无用的 receivers\n\n        This checks for weak references and resolves them, then returning only\n        live receivers.\n        \"\"\"\n        可能在每次发信号之前都要重生 receivers 中的每一个 receiver\n        none_senderkey = _make_id(None)\n        receivers = []\n\n        for (receiverkey, r_senderkey), receiver in self.receivers:\n            if r_senderkey == none_senderkey or r_senderkey == senderkey:\n                if isinstance(receiver, WEAKREF_TYPES):\n                    # Dereference the weak reference.\n                    receiver = receiver()\n                    if receiver is not None:\n                        receivers.append(receiver)\n                else:\n                    receivers.append(receiver)\n        return receivers\n\n    def _remove_receiver(self, receiver):\n        \"\"\"\n        Remove dead receivers from connections.\n        \"\"\"\n\n        with self.lock:\n            to_remove = []\n            for key, connected_receiver in self.receivers:\n                if connected_receiver == receiver:\n                    to_remove.append(key)\n\n            for key in to_remove:\n                last_idx = len(self.receivers) - 1\n                # enumerate in reverse order so that indexes are valid even\n                # after we delete some items\n                for idx, (r_key, _) in enumerate(reversed(self.receivers)):\n                    if r_key == key:\n                        del self.receivers[last_idx-idx]\n\n修饰器\ndef receiver(signal, **kwargs):\n    \"\"\"\n    A decorator for connecting receivers to signals. Used by passing in the\n    signal (or list of signals) and keyword arguments to connect::\n\n        @receiver(post_save, sender=MyModel)\n        def signal_receiver(sender, **kwargs):\n            ...\n\n        @receiver([post_save, post_delete], sender=MyModel)\n        def signals_receiver(sender, **kwargs):\n            ...\n\n    \"\"\"\n    def _decorator(func):\n        if isinstance(signal, (list, tuple)): 如果是列表或者 tuple\n            for s in signal:\n                s.connect(func, **kwargs) kwargs = self, receiver, sender=None, weak=True, dispatch_uid=None\n\n        else:\n            signal.connect(func, **kwargs)\n        return func\n    return _decorator\n"
  },
  {
    "path": "Django-1.5.1/django/dispatch/license.txt",
    "content": "django.dispatch was originally forked from PyDispatcher.\n\nPyDispatcher License:\n\n    Copyright (c) 2001-2003, Patrick K. O'Brien and Contributors\n    All rights reserved.\n    \n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n    \n        Redistributions of source code must retain the above copyright\n        notice, this list of conditions and the following disclaimer.\n    \n        Redistributions in binary form must reproduce the above\n        copyright notice, this list of conditions and the following\n        disclaimer in the documentation and/or other materials\n        provided with the distribution.\n    \n        The name of Patrick K. O'Brien, or the name of any Contributor,\n        may not be used to endorse or promote products derived from this \n        software without specific prior written permission.\n    \n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    COPYRIGHT HOLDERS AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n    INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n    (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n    SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\n    HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\n    STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n    ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED\n    OF THE POSSIBILITY OF SUCH DAMAGE. \n\n"
  },
  {
    "path": "Django-1.5.1/django/dispatch/saferef.py",
    "content": "\"\"\"\n\"Safe weakrefs\", originally from pyDispatcher.\n\nProvides a way to safely weakref any function, including bound methods (which\naren't handled by the core weakref module).\n\"\"\"\n\nimport traceback\nimport weakref 弱引用\n\ndef safeRef(target, onDelete = None):\n    \"\"\"Return a *safe* weak reference to a callable target\n\n    target -- the object to be weakly referenced, if it's a\n        bound method reference, will create a BoundMethodWeakref,\n        otherwise creates a simple weakref.\n    onDelete -- if provided, will have a hard reference stored\n        to the callable to be called after the safe reference\n        goes out of scope with the reference object, (either a\n        weakref or a BoundMethodWeakref) as argument.\n    \"\"\"\n    if hasattr(target, '__self__'):\n        if target.__self__ is not None:\n            # Turn a bound method into a BoundMethodWeakref instance.\n            # Keep track of these instances for lookup by disconnect().\n\n            assert hasattr(target, '__func__'), \"\"\"safeRef target %r has __self__, but no __func__, don't know how to create reference\"\"\"%( target,)\n\n            reference = get_bound_method_weakref(\n                target=target,\n                onDelete=onDelete\n            )\n            return reference\n\n    if callable(onDelete):\n        return weakref.ref(target, onDelete)\n    else:\n        return weakref.ref( target ) 返回 target 的弱引用对象\n\nclass BoundMethodWeakref(object):\n    \"\"\"'Safe' and reusable weak references to instance methods\n\n    BoundMethodWeakref objects provide a mechanism for\n    referencing a bound method without requiring that the\n    method object itself (which is normally a transient\n    object) is kept alive.  Instead, the BoundMethodWeakref\n    object keeps weak references to both the object and the\n    function which together define the instance method.\n\n    Attributes:\n        key -- the identity key for the reference, calculated\n            by the class's calculateKey method applied to the\n            target instance method\n\n        deletionMethods -- sequence of callable objects taking\n            single argument, a reference to this object which\n            will be called when *either* the target object or\n            target function is garbage collected (i.e. when\n            this object becomes invalid).  These are specified\n            as the onDelete parameters of safeRef calls.\n        weakSelf -- weak reference to the target object\n        weakFunc -- weak reference to the target function\n\n    Class Attributes:\n        _allInstances -- class attribute pointing to all live\n            BoundMethodWeakref objects indexed by the class's\n            calculateKey(target) method applied to the target\n            objects.  This weak value dictionary is used to\n            short-circuit creation so that multiple references\n            to the same (object, function) pair produce the\n            same BoundMethodWeakref instance.\n\n    \"\"\"\n\n    _allInstances = weakref.WeakValueDictionary()\n\n    def __new__( cls, target, onDelete=None, *arguments,**named ):\n        \"\"\"Create new instance or return current instance\n\n        Basically this method of construction allows us to\n        short-circuit creation of references to already-\n        referenced instance methods.  The key corresponding\n        to the target is calculated, and if there is already\n        an existing reference, that is returned, with its\n        deletionMethods attribute updated.  Otherwise the\n        new instance is created and registered in the table\n        of already-referenced methods.\n        \"\"\"\n        key = cls.calculateKey(target)\n        current =cls._allInstances.get(key)\n\n        if current is not None: 存在\n            current.deletionMethods.append( onDelete)\n            return current\n\n        else:不存在, 需要新建和插入\n            base = super( BoundMethodWeakref, cls).__new__( cls )\n            cls._allInstances[key] = base\n            base.__init__( target, onDelete, *arguments,**named) 调用初始化函数\n            return base\n\n    def __init__(self, target, onDelete=None):\n        \"\"\"Return a weak-reference-like instance for a bound method\n\n        target -- the instance-method target for the weak\n            reference, must have __self__ and __func__ attributes\n            and be reconstructable via:\n\n                target.__func__.__get__( target.__self__ )\n\n            which is true of built-in instance methods.\n\n        onDelete -- optional callback which will be called\n            when this weak reference ceases to be valid\n            (i.e. either the object or the function is garbage\n            collected).  Should take a single argument,\n            which will be passed a pointer to this object.\n        \"\"\"\n\n        def remove(weak, self=self):\n            \"\"\"Set self.isDead to true when method or instance is destroyed\"\"\"\n            methods = self.deletionMethods[:]\n            del self.deletionMethods[:]\n\n            try:\n                del self.__class__._allInstances[ self.key ]\n            except KeyError:\n                pass\n\n            for function in methods:\n                try:\n                    if callable( function ):\n                        function( self ) 如果可以调用, 调用\n                except Exception as e:\n                    try:\n                        traceback.print_exc()\n                    except AttributeError:\n                        print('Exception during saferef %s cleanup function %s: %s' % (\n                            self, function, e)\n                        )\n\n        self.deletionMethods = [onDelete] 替换\n        self.key = self.calculateKey( target )\n\n        self.weakSelf = weakref.ref(target.__self__, remove)\n        self.weakFunc = weakref.ref(target.__func__, remove)\n\n        self.selfName = str(target.__self__)\n        self.funcName = str(target.__func__.__name__)\n\n    def calculateKey( cls, target ): 这不是一个类方法, 因为没有 self\n        \"\"\"Calculate the reference key for this reference\n\n        Currently this is a two-tuple of the id()'s of the\n        target object and the target function respectively.\n        \"\"\"\n        return (id(target.__self__),id(target.__func__)) 所有要求 target 必须要有 __self__ 和 __func__ 两个属性\n\n    calculateKey = classmethod( calculateKey )\n\n    def __str__(self):\n        \"\"\"Give a friendly representation of the object\"\"\"\n        return \"\"\"%s( %s.%s )\"\"\"%(\n            self.__class__.__name__,\n            self.selfName,\n            self.funcName,\n        )\n\n    __repr__ = __str__\n\n    def __hash__(self):\n        return hash(self.key)\n\n    def __bool__( self ):\n        \"\"\"Whether we are still a valid reference\"\"\"\n        return self() is not None\n\n    def __nonzero__(self):      # Python 2 compatibility\n        return type(self).__bool__(self)\n\n    def __eq__(self, other):\n        \"\"\"Compare with another reference\"\"\"\n        if not isinstance(other, self.__class__):\n            return self.__class__ == type(other)\n        return self.key == other.key\n\n    def __call__(self):\n        \"\"\"Return a strong reference to the bound method\n\n        If the target cannot be retrieved, then will\n        return None, otherwise returns a bound instance\n        method for our object and function.\n\n        Note:\n            You may call this method any number of times,\n            as it does not invalidate the reference.\n        \"\"\"\n        target = self.weakSelf()\n        if target is not None:\n            function = self.weakFunc()\n            if function is not None:\n                return function.__get__(target) function 是    self.weakFunc = weakref.ref(target.__func__, remove) 的结果\n        return None\n\nclass BoundNonDescriptorMethodWeakref(BoundMethodWeakref):\n    \"\"\"A specialized BoundMethodWeakref, for platforms where instance methods\n    are not descriptors.\n\n    It assumes that the function name and the target attribute name are the\n    same, instead of assuming that the function is a descriptor. This approach\n    is equally fast, but not 100% reliable because functions can be stored on an\n    attribute named differenty than the function's name such as in:\n\n    class A: pass\n    def foo(self): return \"foo\"\n    A.bar = foo\n\n    But this shouldn't be a common use case. So, on platforms where methods\n    aren't descriptors (such as Jython) this implementation has the advantage\n    of working in the most cases.\n    \"\"\"\n    def __init__(self, target, onDelete=None):\n        \"\"\"Return a weak-reference-like instance for a bound method\n\n        target -- the instance-method target for the weak\n            reference, must have __self__ and __func__ attributes\n            and be reconstructable via:\n                target.__func__.__get__( target.__self__ )\n\n            which is true of built-in instance methods.\n\n        onDelete -- optional callback which will be called\n            when this weak reference ceases to be valid\n            (i.e. either the object or the function is garbage\n            collected).  Should take a single argument,\n            which will be passed a pointer to this object.\n        \"\"\"\n        assert getattr(target.__self__, target.__name__) == target, \\\n               (\"method %s isn't available as the attribute %s of %s\" %\n                (target, target.__name__, target.__self__))\n\n        super(BoundNonDescriptorMethodWeakref, self).__init__(target, onDelete)\n\n    def __call__(self):\n        \"\"\"Return a strong reference to the bound method\n\n        If the target cannot be retrieved, then will\n        return None, otherwise returns a bound instance\n        method for our object and function.\n\n        Note:\n            You may call this method any number of times,\n            as it does not invalidate the reference.\n        \"\"\"\n        target = self.weakSelf()\n        if target is not None:\n            function = self.weakFunc()\n            if function is not None:\n                # Using partial() would be another option, but it erases the\n                # \"signature\" of the function. That is, after a function is\n                # curried, the inspect module can't be used to determine how\n                # many arguments the function expects, nor what keyword\n                # arguments it supports, and pydispatcher needs this\n                # information.\n                return getattr(target, function.__name__)\n        return None\n\ndef get_bound_method_weakref(target, onDelete):\n    \"\"\"Instantiates the appropiate BoundMethodWeakRef, depending on the details of\n    the underlying class method implementation\"\"\"\n    if hasattr(target, '__get__'):\n        # target method is a descriptor, so the default implementation works:\n        return BoundMethodWeakref(target=target, onDelete=onDelete)\n    else:\n        # no luck, use the alternative implementation:\n        return BoundNonDescriptorMethodWeakref(target=target, onDelete=onDelete)\n"
  },
  {
    "path": "Django-1.5.1/django/forms/__init__.py",
    "content": "\"\"\"\nDjango validation and HTML form handling.\n\nTODO:\n    Default value for field\n    Field labels\n    Nestable Forms\n    FatalValidationError -- short-circuits all other validators on a form\n    ValidationWarning\n    \"This form field requires foo.js\" and form.js_includes()\n\"\"\"\n\nfrom __future__ import absolute_import\n\nfrom django.core.exceptions import ValidationError\nfrom django.forms.fields import *\nfrom django.forms.forms import *\nfrom django.forms.models import *\nfrom django.forms.widgets import *\n"
  },
  {
    "path": "Django-1.5.1/django/forms/extras/__init__.py",
    "content": "from __future__ import absolute_import\n\nfrom django.forms.extras.widgets import *\n"
  },
  {
    "path": "Django-1.5.1/django/forms/extras/widgets.py",
    "content": "\"\"\"\nExtra HTML Widget classes\n\"\"\"\nfrom __future__ import unicode_literals\n\nimport datetime\nimport re\n\nfrom django.forms.widgets import Widget, Select\nfrom django.utils import datetime_safe\nfrom django.utils.dates import MONTHS\nfrom django.utils.safestring import mark_safe\nfrom django.utils.formats import get_format\nfrom django.utils import six\nfrom django.conf import settings\n\n__all__ = ('SelectDateWidget',)\n\nRE_DATE = re.compile(r'(\\d{4})-(\\d\\d?)-(\\d\\d?)$')\n\ndef _parse_date_fmt():\n    fmt = get_format('DATE_FORMAT')\n    escaped = False\n    output = []\n    for char in fmt:\n        if escaped:\n            escaped = False\n        elif char == '\\\\':\n            escaped = True\n        elif char in 'Yy':\n            output.append('year')\n            #if not self.first_select: self.first_select = 'year'\n        elif char in 'bEFMmNn':\n            output.append('month')\n            #if not self.first_select: self.first_select = 'month'\n        elif char in 'dj':\n            output.append('day')\n            #if not self.first_select: self.first_select = 'day'\n    return output\n\nclass SelectDateWidget(Widget):\n    \"\"\"\n    A Widget that splits date input into three <select> boxes.\n\n    This also serves as an example of a Widget that has more than one HTML\n    element and hence implements value_from_datadict.\n    \"\"\"\n    none_value = (0, '---')\n    month_field = '%s_month'\n    day_field = '%s_day'\n    year_field = '%s_year'\n\n    def __init__(self, attrs=None, years=None, required=True):\n        # years is an optional list/tuple of years to use in the \"year\" select box.\n        self.attrs = attrs or {}\n        self.required = required\n        if years:\n            self.years = years\n        else:\n            this_year = datetime.date.today().year\n            self.years = range(this_year, this_year+10)\n\n    def render(self, name, value, attrs=None):\n        try:\n            year_val, month_val, day_val = value.year, value.month, value.day\n        except AttributeError:\n            year_val = month_val = day_val = None\n            if isinstance(value, six.string_types):\n                if settings.USE_L10N:\n                    try:\n                        input_format = get_format('DATE_INPUT_FORMATS')[0]\n                        v = datetime.datetime.strptime(value, input_format)\n                        year_val, month_val, day_val = v.year, v.month, v.day\n                    except ValueError:\n                        pass\n                else:\n                    match = RE_DATE.match(value)\n                    if match:\n                        year_val, month_val, day_val = [int(v) for v in match.groups()]\n        choices = [(i, i) for i in self.years]\n        year_html = self.create_select(name, self.year_field, value, year_val, choices)\n        choices = list(six.iteritems(MONTHS))\n        month_html = self.create_select(name, self.month_field, value, month_val, choices)\n        choices = [(i, i) for i in range(1, 32)]\n        day_html = self.create_select(name, self.day_field, value, day_val,  choices)\n\n        output = []\n        for field in _parse_date_fmt():\n            if field == 'year':\n                output.append(year_html)\n            elif field == 'month':\n                output.append(month_html)\n            elif field == 'day':\n                output.append(day_html)\n        return mark_safe('\\n'.join(output))\n\n    def id_for_label(self, id_):\n        first_select = None\n        field_list = _parse_date_fmt()\n        if field_list:\n            first_select = field_list[0]\n        if first_select is not None:\n            return '%s_%s' % (id_, first_select)\n        else:\n            return '%s_month' % id_\n\n    def value_from_datadict(self, data, files, name):\n        y = data.get(self.year_field % name)\n        m = data.get(self.month_field % name)\n        d = data.get(self.day_field % name)\n        if y == m == d == \"0\":\n            return None\n        if y and m and d:\n            if settings.USE_L10N:\n                input_format = get_format('DATE_INPUT_FORMATS')[0]\n                try:\n                    date_value = datetime.date(int(y), int(m), int(d))\n                except ValueError:\n                    return '%s-%s-%s' % (y, m, d)\n                else:\n                    date_value = datetime_safe.new_date(date_value)\n                    return date_value.strftime(input_format)\n            else:\n                return '%s-%s-%s' % (y, m, d)\n        return data.get(name, None)\n\n    def create_select(self, name, field, value, val, choices):\n        if 'id' in self.attrs:\n            id_ = self.attrs['id']\n        else:\n            id_ = 'id_%s' % name\n        if not (self.required and val):\n            choices.insert(0, self.none_value)\n        local_attrs = self.build_attrs(id=field % id_)\n        s = Select(choices=choices)\n        select_html = s.render(field % name, val, local_attrs)\n        return select_html\n\n    def _has_changed(self, initial, data):\n        try:\n            input_format = get_format('DATE_INPUT_FORMATS')[0]\n            data = datetime_safe.datetime.strptime(data, input_format).date()\n        except (TypeError, ValueError):\n            pass\n        return super(SelectDateWidget, self)._has_changed(initial, data)\n"
  },
  {
    "path": "Django-1.5.1/django/forms/fields.py",
    "content": "\"\"\"\nField classes.\n\"\"\"\n\nfrom __future__ import absolute_import, unicode_literals\n\nimport copy\nimport datetime\nimport os\nimport re\ntry:\n    from urllib.parse import urlsplit, urlunsplit\nexcept ImportError:     # Python 2\n    from urlparse import urlsplit, urlunsplit\n\nfrom decimal import Decimal, DecimalException\nfrom io import BytesIO\n\nfrom django.core import validators\nfrom django.core.exceptions import ValidationError\nfrom django.forms.util import ErrorList, from_current_timezone, to_current_timezone\n\nfrom django.forms.widgets import (TextInput, PasswordInput, HiddenInput,\n    MultipleHiddenInput, ClearableFileInput, CheckboxInput, Select,\n    NullBooleanSelect, SelectMultiple, DateInput, DateTimeInput, TimeInput,\n    SplitDateTimeWidget, SplitHiddenDateTimeWidget, FILE_INPUT_CONTRADICTION)\n\nfrom django.utils import formats\nfrom django.utils.encoding import smart_text, force_text\nfrom django.utils.ipv6 import clean_ipv6_address\nfrom django.utils import six\nfrom django.utils.translation import ugettext_lazy as _\n\n# Provide this import for backwards compatibility. 向后兼容\nfrom django.core.validators import EMPTY_VALUES\n\n\n所有的 form 表单类型 type\n__all__ = ( \n    'Field', 'CharField', 'IntegerField',\n    'DateField', 'TimeField', 'DateTimeField', 'TimeField',\n    'RegexField', 'EmailField', 'FileField', 'ImageField', 'URLField',\n    'BooleanField', 'NullBooleanField', 'ChoiceField', 'MultipleChoiceField',\n    'ComboField', 'MultiValueField', 'FloatField', 'DecimalField',\n    'SplitDateTimeField', 'IPAddressField', 'GenericIPAddressField', 'FilePathField',\n    'SlugField', 'TypedChoiceField', 'TypedMultipleChoiceField'\n)\n\n\nclass Field(object):\n    默认是 TextInput\n    widget = TextInput # Default widget to use when rendering this type of Field.  \n\n    csrf\n    hidden_widget = HiddenInput # Default widget to use when rendering this as \"hidden\". \n\n    验证器\n    default_validators = [] # Default set of validators\n\n    default_error_messages = {\n        'required': _('This field is required.'),\n        'invalid': _('Enter a valid value.'),\n    }\n\n    # Tracks each time a Field instance is created. Used to retain order.\n    creation_counter = 0 没生成一个表单需要+1\n\n    def __init__(self, required=True, widget=None, label=None, initial=None,\n                 help_text=None, error_messages=None, show_hidden_initial=False,\n                 validators=[], localize=False):\n        是否必须的\n        # required -- Boolean that specifies whether the field is required.\n        #             True by default. \n\n        部件类型 the default widget is TextInput.\n        # widget -- A Widget class, or instance of a Widget class, that should\n        #           be used for this Field when displaying it. Each Field has a\n        #           default Widget that it'll use if you don't specify this. In\n        #           most cases, the default widget is TextInput.\n\n        A verbose name for this field\n        # label -- A verbose name for this field, for use in displaying this\n        #          field in a form. By default, Django will use a \"pretty\"\n        #          version of the form field name, if the Field is part of a\n        #          Form.\n\n        初始值\n        # initial -- A value to use in this Field's initial display. This value\n        #            is *not* used as a fallback if data isn't given.\n\n        帮助文本\n        # help_text -- An optional string to use as \"help text\" for this Field.\n\n        出错信息\n        # error_messages -- An optional dictionary to override the default\n        #                   messages that the field will raise.\n\n        是否需要渲染隐藏部件, 一般是 csrf\n        # show_hidden_initial -- Boolean that specifies if it is needed to render a\n        #                        hidden widget with initial value after widget.\n\n        验证器, 验证值是否有效\n        # validators -- List of addtional validators to use\n\n        未知\n        # localize -- Boolean that specifies if the field should be localized.\n\n        if label is not None:\n            label = smart_text(label)\n\n        self.required, self.label, self.initial = required, label, initial\n\n        self.show_hidden_initial = show_hidden_initial\n\n        if help_text is None:\n            self.help_text = ''\n        else:\n            self.help_text = smart_text(help_text)\n\n        widget = widget or self.widget\n\n        if isinstance(widget, type): 也可以直接提供类型, 会自动实例化\n            widget = widget()\n\n        # Trigger the localization machinery if needed.\n        self.localize = localize\n\n        if self.localize:\n            widget.is_localized = True\n\n        是否显示\n        # Let the widget know whether it should display as required.\n        widget.is_required = self.required\n\n        会返回一个 key/value 的字典, HTML 属性\n        # Hook into self.widget_attrs() for any Field-specific HTML attributes.\n        extra_attrs = self.widget_attrs(widget)\n\n        if extra_attrs:\n            widget.attrs.update(extra_attrs) 加入到 widget 的 attrs\n\n        self.widget = widget\n\n        不懂, 这是什么用法\n        # Increase the creation counter, and save our local copy.\n        self.creation_counter = Field.creation_counter\n        Field.creation_counter += 1\n\n        __mro__ (class baseclass type)\n        messages = {}\n        for c in reversed(self.__class__.__mro__): \n            #将父类中的 default_error_messages 全部加入\n            messages.update(getattr(c, 'default_error_messages', {})) \n\n        messages.update(error_messages or {})\n        self.error_messages = messages\n\n        #func list\n        self.validators = self.default_validators + validators \n\n    def prepare_value(self, value):\n        return value\n\n    def to_python(self, value):\n        return value\n\n    def validate(self, value):\n        #如果 value 为空且设置为必须的\n        if value in validators.EMPTY_VALUES and self.required:\n            raise ValidationError(self.error_messages['required'])\n\n    def run_validators(self, value):\n        if value in validators.EMPTY_VALUES:\n            return\n\n        errors = []\n        #一个个验证\n        for v in self.validators:\n            try:\n                v(value)  \n            except ValidationError as e:\n                if hasattr(e, 'code') and e.code in self.error_messages:\n                    message = self.error_messages[e.code]\n\n                    if e.params:\n                        message = message % e.params\n\n                    errors.append(message)\n                else:\n                    errors.extend(e.messages)\n        异常\n        if errors:\n            raise ValidationError(errors) \n\n    def clean(self, value):\n        \"\"\"\n        确认 value 的有效性\n        Validates the given value and returns its \"cleaned\" value as an\n        appropriate Python object.\n\n        Raises ValidationError for any errors.\n        \"\"\"\n        value = self.to_python(value)\n        self.validate(value)\n        self.run_validators(value)\n        return value\n\n    def bound_data(self, data, initial):\n        \"\"\"\n        Return the value that should be shown for this field on render of a\n        bound form, given the submitted POST data for the field and the initial\n        data, if any.\n\n        For most fields, this will simply be data; FileFields need to handle it\n        a bit differently.\n        \"\"\"\n        return data\n\n    def widget_attrs(self, widget):\n        \"\"\"\n        Given a Widget instance (*not* a Widget class), returns a dictionary of\n        any HTML attributes that should be added to the Widget, based on this\n        Field.\n        \"\"\"\n        return {}\n\n    def __deepcopy__(self, memo):\n        result = copy.copy(self)\n        memo[id(self)] = result\n        result.widget = copy.deepcopy(self.widget, memo)\n        result.validators = self.validators[:]\n        return result\n\nclass CharField(Field):\n    def __init__(self, max_length=None, min_length=None, *args, **kwargs):\n\n        self.max_length, self.min_length = max_length, min_length\n\n        super(CharField, self).__init__(*args, **kwargs)\n\n        if min_length is not None:\n            self.validators.append(validators.MinLengthValidator(min_length))\n\n        if max_length is not None:\n            self.validators.append(validators.MaxLengthValidator(max_length))\n\n    def to_python(self, value):\n        \"Returns a Unicode object.\"\n        if value in validators.EMPTY_VALUES:\n            return ''\n        return smart_text(value)\n\n    def widget_attrs(self, widget):\n        attrs = super(CharField, self).widget_attrs(widget) 空\n\n        if self.max_length is not None and isinstance(widget, TextInput):\n            # The HTML attribute is maxlength, not max_length.\n            attrs.update({'maxlength': str(self.max_length)})\n\n        return attrs\n\nclass IntegerField(Field):\n    default_error_messages = {\n        'invalid': _('Enter a whole number.'),\n        'max_value': _('Ensure this value is less than or equal to %(limit_value)s.'),\n        'min_value': _('Ensure this value is greater than or equal to %(limit_value)s.'),\n    }\n\n    def __init__(self, max_value=None, min_value=None, *args, **kwargs):\n        self.max_value, self.min_value = max_value, min_value\n        super(IntegerField, self).__init__(*args, **kwargs)\n\n        if max_value is not None:\n            self.validators.append(validators.MaxValueValidator(max_value))\n\n        if min_value is not None:\n            self.validators.append(validators.MinValueValidator(min_value))\n\n    def to_python(self, value):\n        \"\"\"\n        Validates that int() can be called on the input. Returns the result\n        of int(). Returns None for empty values.\n        \"\"\"\n        value = super(IntegerField, self).to_python(value)\n        if value in validators.EMPTY_VALUES:\n            return None\n        if self.localize:\n            value = formats.sanitize_separators(value)\n        try:\n            value = int(str(value))\n        except (ValueError, TypeError):\n            raise ValidationError(self.error_messages['invalid'])\n        return value\n\nclass FloatField(IntegerField):\n    default_error_messages = {\n        'invalid': _('Enter a number.'),\n    }\n\n    def to_python(self, value):\n        \"\"\"\n        Validates that float() can be called on the input. Returns the result\n        of float(). Returns None for empty values.\n        \"\"\"\n        value = super(IntegerField, self).to_python(value)\n        if value in validators.EMPTY_VALUES:\n            return None\n\n        if self.localize:\n            value = formats.sanitize_separators(value)\n\n        try:\n            value = float(value)\n        except (ValueError, TypeError):\n            raise ValidationError(self.error_messages['invalid'])\n        return value\n\nclass DecimalField(Field):\n    default_error_messages = {\n        'invalid': _('Enter a number.'),\n        'max_value': _('Ensure this value is less than or equal to %(limit_value)s.'),\n        'min_value': _('Ensure this value is greater than or equal to %(limit_value)s.'),\n        'max_digits': _('Ensure that there are no more than %s digits in total.'),\n        'max_decimal_places': _('Ensure that there are no more than %s decimal places.'),\n        'max_whole_digits': _('Ensure that there are no more than %s digits before the decimal point.')\n    }\n\n    def __init__(self, max_value=None, min_value=None, max_digits=None, decimal_places=None, *args, **kwargs):\n        self.max_value, self.min_value = max_value, min_value\n        self.max_digits, self.decimal_places = max_digits, decimal_places\n        Field.__init__(self, *args, **kwargs)\n\n        if max_value is not None:\n            self.validators.append(validators.MaxValueValidator(max_value))\n        if min_value is not None:\n            self.validators.append(validators.MinValueValidator(min_value))\n\n    def to_python(self, value):\n        \"\"\"\n        Validates that the input is a decimal number. Returns a Decimal\n        instance. Returns None for empty values. Ensures that there are no more\n        than max_digits in the number, and no more than decimal_places digits\n        after the decimal point.\n        \"\"\"\n        if value in validators.EMPTY_VALUES:\n            return None\n        if self.localize:\n            value = formats.sanitize_separators(value)\n        value = smart_text(value).strip()\n        try:\n            value = Decimal(value)\n        except DecimalException:\n            raise ValidationError(self.error_messages['invalid'])\n        return value\n\n    def validate(self, value):\n        super(DecimalField, self).validate(value)\n        if value in validators.EMPTY_VALUES:\n            return\n        # Check for NaN, Inf and -Inf values. We can't compare directly for NaN,\n        # since it is never equal to itself. However, NaN is the only value that\n        # isn't equal to itself, so we can use this to identify NaN\n        if value != value or value == Decimal(\"Inf\") or value == Decimal(\"-Inf\"):\n            raise ValidationError(self.error_messages['invalid'])\n        sign, digittuple, exponent = value.as_tuple()\n        decimals = abs(exponent)\n        # digittuple doesn't include any leading zeros.\n        digits = len(digittuple)\n        if decimals > digits:\n            # We have leading zeros up to or past the decimal point.  Count\n            # everything past the decimal point as a digit.  We do not count\n            # 0 before the decimal point as a digit since that would mean\n            # we would not allow max_digits = decimal_places.\n            digits = decimals\n        whole_digits = digits - decimals\n\n        if self.max_digits is not None and digits > self.max_digits:\n            raise ValidationError(self.error_messages['max_digits'] % self.max_digits)\n        if self.decimal_places is not None and decimals > self.decimal_places:\n            raise ValidationError(self.error_messages['max_decimal_places'] % self.decimal_places)\n        if self.max_digits is not None and self.decimal_places is not None and whole_digits > (self.max_digits - self.decimal_places):\n            raise ValidationError(self.error_messages['max_whole_digits'] % (self.max_digits - self.decimal_places))\n        return value\n\n时间域基类\nclass BaseTemporalField(Field):\n\n    def __init__(self, input_formats=None, *args, **kwargs):\n        super(BaseTemporalField, self).__init__(*args, **kwargs)\n        if input_formats is not None:\n            self.input_formats = input_formats\n\n    def to_python(self, value):\n        # Try to coerce the value to unicode.\n        unicode_value = force_text(value, strings_only=True)\n\n        if isinstance(unicode_value, six.text_type):\n            value = unicode_value.strip()\n\n        # If unicode, try to strptime against each input format.\n        if isinstance(value, six.text_type):\n            for format in self.input_formats:\n                try:\n                    return self.strptime(value, format)\n                except (ValueError, TypeError):\n                    continue\n        raise ValidationError(self.error_messages['invalid'])\n\n    def strptime(self, value, format):\n        raise NotImplementedError('Subclasses must define this method.')\n\nclass DateField(BaseTemporalField):\n    widget = DateInput\n    input_formats = formats.get_format_lazy('DATE_INPUT_FORMATS')\n    default_error_messages = {\n        'invalid': _('Enter a valid date.'),\n    }\n\n    def to_python(self, value):\n        \"\"\"\n        Validates that the input can be converted to a date. Returns a Python\n        datetime.date object.\n        \"\"\"\n        if value in validators.EMPTY_VALUES:\n            return None\n        if isinstance(value, datetime.datetime):\n            return value.date()\n        if isinstance(value, datetime.date):\n            return value\n        return super(DateField, self).to_python(value)\n\n    def strptime(self, value, format):\n        return datetime.datetime.strptime(value, format).date()\n\nclass TimeField(BaseTemporalField):\n    widget = TimeInput\n    input_formats = formats.get_format_lazy('TIME_INPUT_FORMATS')\n    default_error_messages = {\n        'invalid': _('Enter a valid time.')\n    }\n\n    def to_python(self, value):\n        \"\"\"\n        Validates that the input can be converted to a time. Returns a Python\n        datetime.time object.\n        \"\"\"\n        if value in validators.EMPTY_VALUES:\n            return None\n        if isinstance(value, datetime.time):\n            return value\n        return super(TimeField, self).to_python(value)\n\n    def strptime(self, value, format):\n        return datetime.datetime.strptime(value, format).time()\n\nclass DateTimeField(BaseTemporalField):\n    widget = DateTimeInput\n    input_formats = formats.get_format_lazy('DATETIME_INPUT_FORMATS')\n    default_error_messages = {\n        'invalid': _('Enter a valid date/time.'),\n    }\n\n    def prepare_value(self, value):\n        if isinstance(value, datetime.datetime):\n            value = to_current_timezone(value)\n        return value\n\n    def to_python(self, value):\n        \"\"\"\n        Validates that the input can be converted to a datetime. Returns a\n        Python datetime.datetime object.\n        \"\"\"\n        if value in validators.EMPTY_VALUES:\n            return None\n        if isinstance(value, datetime.datetime):\n            return from_current_timezone(value)\n        if isinstance(value, datetime.date):\n            result = datetime.datetime(value.year, value.month, value.day)\n            return from_current_timezone(result)\n        if isinstance(value, list):\n            # Input comes from a SplitDateTimeWidget, for example. So, it's two\n            # components: date and time.\n            if len(value) != 2:\n                raise ValidationError(self.error_messages['invalid'])\n            if value[0] in validators.EMPTY_VALUES and value[1] in validators.EMPTY_VALUES:\n                return None\n            value = '%s %s' % tuple(value)\n        result = super(DateTimeField, self).to_python(value)\n        return from_current_timezone(result)\n\n    def strptime(self, value, format):\n        return datetime.datetime.strptime(value, format)\n\nclass RegexField(CharField):\n    def __init__(self, regex, max_length=None, min_length=None, error_message=None, *args, **kwargs):\n        \"\"\"\n        regex can be either a string or a compiled regular expression object.\n        error_message is an optional error message to use, if\n        'Enter a valid value' is too generic for you.\n        \"\"\"\n        # error_message is just kept for backwards compatibility:\n        if error_message:\n            error_messages = kwargs.get('error_messages') or {}\n            error_messages['invalid'] = error_message\n            kwargs['error_messages'] = error_messages\n        super(RegexField, self).__init__(max_length, min_length, *args, **kwargs)\n        self._set_regex(regex)\n\n    def _get_regex(self):\n        return self._regex\n\n    def _set_regex(self, regex):\n        if isinstance(regex, six.string_types):\n            regex = re.compile(regex, re.UNICODE)\n        self._regex = regex\n        if hasattr(self, '_regex_validator') and self._regex_validator in self.validators:\n            self.validators.remove(self._regex_validator)\n        self._regex_validator = validators.RegexValidator(regex=regex)\n        self.validators.append(self._regex_validator)\n\n    regex = property(_get_regex, _set_regex)\n\nclass EmailField(CharField):\n    default_error_messages = {\n        'invalid': _('Enter a valid email address.'),\n    }\n    default_validators = [validators.validate_email]\n\n    def clean(self, value):\n        value = self.to_python(value).strip()\n        return super(EmailField, self).clean(value)\n\nclass FileField(Field):\n    widget = ClearableFileInput\n    default_error_messages = {\n        'invalid': _(\"No file was submitted. Check the encoding type on the form.\"),\n        'missing': _(\"No file was submitted.\"),\n        'empty': _(\"The submitted file is empty.\"),\n        'max_length': _('Ensure this filename has at most %(max)d characters (it has %(length)d).'),\n        'contradiction': _('Please either submit a file or check the clear checkbox, not both.')\n    }\n\n    def __init__(self, *args, **kwargs):\n        self.max_length = kwargs.pop('max_length', None)\n        self.allow_empty_file = kwargs.pop('allow_empty_file', False)\n        super(FileField, self).__init__(*args, **kwargs)\n\n    def to_python(self, data):\n        if data in validators.EMPTY_VALUES:\n            return None\n\n        # UploadedFile objects should have name and size attributes.\n        try:\n            file_name = data.name\n            file_size = data.size\n        except AttributeError:\n            raise ValidationError(self.error_messages['invalid'])\n\n        if self.max_length is not None and len(file_name) > self.max_length:\n            error_values =  {'max': self.max_length, 'length': len(file_name)}\n            raise ValidationError(self.error_messages['max_length'] % error_values)\n        if not file_name:\n            raise ValidationError(self.error_messages['invalid'])\n        if not self.allow_empty_file and not file_size:\n            raise ValidationError(self.error_messages['empty'])\n\n        return data\n\n    def clean(self, data, initial=None):\n        # If the widget got contradictory inputs, we raise a validation error\n        if data is FILE_INPUT_CONTRADICTION:\n            raise ValidationError(self.error_messages['contradiction'])\n        # False means the field value should be cleared; further validation is\n        # not needed.\n        if data is False:\n            if not self.required:\n                return False\n            # If the field is required, clearing is not possible (the widget\n            # shouldn't return False data in that case anyway). False is not\n            # in validators.EMPTY_VALUES; if a False value makes it this far\n            # it should be validated from here on out as None (so it will be\n            # caught by the required check).\n            data = None\n        if not data and initial:\n            return initial\n        return super(FileField, self).clean(data)\n\n    def bound_data(self, data, initial):\n        if data in (None, FILE_INPUT_CONTRADICTION):\n            return initial\n        return data\n\nclass ImageField(FileField):\n    default_error_messages = {\n        'invalid_image': _(\"Upload a valid image. The file you uploaded was either not an image or a corrupted image.\"),\n    }\n\n    def to_python(self, data):\n        \"\"\"\n        Checks that the file-upload field data contains a valid image (GIF, JPG,\n        PNG, possibly others -- whatever the Python Imaging Library supports).\n        \"\"\"\n        f = super(ImageField, self).to_python(data)\n        if f is None:\n            return None\n\n        # Try to import PIL in either of the two ways it can end up installed.\n        try:\n            from PIL import Image\n        except ImportError:\n            import Image\n\n        # We need to get a file object for PIL. We might have a path or we might\n        # have to read the data into memory.\n        if hasattr(data, 'temporary_file_path'):\n            file = data.temporary_file_path()\n        else:\n            if hasattr(data, 'read'):\n                file = BytesIO(data.read())\n            else:\n                file = BytesIO(data['content'])\n\n        try:\n            # load() could spot a truncated JPEG, but it loads the entire\n            # image in memory, which is a DoS vector. See #3848 and #18520.\n            # verify() must be called immediately after the constructor.\n            Image.open(file).verify()\n        except ImportError:\n            # Under PyPy, it is possible to import PIL. However, the underlying\n            # _imaging C module isn't available, so an ImportError will be\n            # raised. Catch and re-raise.\n            raise\n        except Exception: # Python Imaging Library doesn't recognize it as an image\n            raise ValidationError(self.error_messages['invalid_image'])\n        if hasattr(f, 'seek') and callable(f.seek):\n            f.seek(0)\n        return f\n\nclass URLField(CharField):\n    default_error_messages = {\n        'invalid': _('Enter a valid URL.'),\n    }\n\n    def __init__(self, max_length=None, min_length=None, *args, **kwargs):\n        super(URLField, self).__init__(max_length, min_length, *args, **kwargs)\n        self.validators.append(validators.URLValidator())\n\n    def to_python(self, value):\n\n        def split_url(url):\n            \"\"\"\n            Returns a list of url parts via ``urlparse.urlsplit`` (or raises a\n            ``ValidationError`` exception for certain).\n            \"\"\"\n            try:\n                return list(urlsplit(url))\n            except ValueError:\n                # urlparse.urlsplit can raise a ValueError with some\n                # misformatted URLs.\n                raise ValidationError(self.error_messages['invalid'])\n\n        value = super(URLField, self).to_python(value)\n        if value:\n            url_fields = split_url(value)\n            if not url_fields[0]:\n                # If no URL scheme given, assume http://\n                url_fields[0] = 'http'\n            if not url_fields[1]:\n                # Assume that if no domain is provided, that the path segment\n                # contains the domain.\n                url_fields[1] = url_fields[2]\n                url_fields[2] = ''\n                # Rebuild the url_fields list, since the domain segment may now\n                # contain the path too.\n                url_fields = split_url(urlunsplit(url_fields))\n            if not url_fields[2]:\n                # the path portion may need to be added before query params\n                url_fields[2] = '/'\n            value = urlunsplit(url_fields)\n        return value\n\nclass BooleanField(Field):\n    widget = CheckboxInput\n\n    def to_python(self, value):\n        \"\"\"Returns a Python boolean object.\"\"\"\n        # Explicitly check for the string 'False', which is what a hidden field\n        # will submit for False. Also check for '0', since this is what\n        # RadioSelect will provide. Because bool(\"True\") == bool('1') == True,\n        # we don't need to handle that explicitly.\n        if isinstance(value, six.string_types) and value.lower() in ('false', '0'):\n            value = False\n        else:\n            value = bool(value)\n        value = super(BooleanField, self).to_python(value)\n        if not value and self.required:\n            raise ValidationError(self.error_messages['required'])\n        return value\n\nclass NullBooleanField(BooleanField):\n    \"\"\"\n    A field whose valid values are None, True and False. Invalid values are\n    cleaned to None.\n    \"\"\"\n    widget = NullBooleanSelect\n\n    def to_python(self, value):\n        \"\"\"\n        Explicitly checks for the string 'True' and 'False', which is what a\n        hidden field will submit for True and False, and for '1' and '0', which\n        is what a RadioField will submit. Unlike the Booleanfield we need to\n        explicitly check for True, because we are not using the bool() function\n        \"\"\"\n        if value in (True, 'True', '1'):\n            return True\n        elif value in (False, 'False', '0'):\n            return False\n        else:\n            return None\n\n    def validate(self, value):\n        pass\n\nclass ChoiceField(Field):\n    widget = Select\n    default_error_messages = {\n        'invalid_choice': _('Select a valid choice. %(value)s is not one of the available choices.'),\n    }\n\n    def __init__(self, choices=(), required=True, widget=None, label=None,\n                 initial=None, help_text=None, *args, **kwargs):\n        super(ChoiceField, self).__init__(required=required, widget=widget, label=label,\n                                        initial=initial, help_text=help_text, *args, **kwargs)\n        self.choices = choices\n\n    def __deepcopy__(self, memo):\n        result = super(ChoiceField, self).__deepcopy__(memo)\n        result._choices = copy.deepcopy(self._choices, memo)\n        return result\n\n    def _get_choices(self):\n        return self._choices\n\n    def _set_choices(self, value):\n        # Setting choices also sets the choices on the widget.\n        # choices can be any iterable, but we call list() on it because\n        # it will be consumed more than once.\n        self._choices = self.widget.choices = list(value)\n\n    choices = property(_get_choices, _set_choices)\n\n    def to_python(self, value):\n        \"Returns a Unicode object.\"\n        if value in validators.EMPTY_VALUES:\n            return ''\n        return smart_text(value)\n\n    def validate(self, value):\n        \"\"\"\n        Validates that the input is in self.choices.\n        \"\"\"\n        super(ChoiceField, self).validate(value)\n        if value and not self.valid_value(value):\n            raise ValidationError(self.error_messages['invalid_choice'] % {'value': value})\n\n    def valid_value(self, value):\n        \"Check to see if the provided value is a valid choice\"\n        for k, v in self.choices:\n            if isinstance(v, (list, tuple)):\n                # This is an optgroup, so look inside the group for options\n                for k2, v2 in v:\n                    if value == smart_text(k2):\n                        return True\n            else:\n                if value == smart_text(k):\n                    return True\n        return False\n\nclass TypedChoiceField(ChoiceField):\n    def __init__(self, *args, **kwargs):\n        self.coerce = kwargs.pop('coerce', lambda val: val)\n        self.empty_value = kwargs.pop('empty_value', '')\n        super(TypedChoiceField, self).__init__(*args, **kwargs)\n\n    def to_python(self, value):\n        \"\"\"\n        Validates that the value is in self.choices and can be coerced to the\n        right type.\n        \"\"\"\n        value = super(TypedChoiceField, self).to_python(value)\n        super(TypedChoiceField, self).validate(value)\n        if value == self.empty_value or value in validators.EMPTY_VALUES:\n            return self.empty_value\n        try:\n            value = self.coerce(value)\n        except (ValueError, TypeError, ValidationError):\n            raise ValidationError(self.error_messages['invalid_choice'] % {'value': value})\n        return value\n\n    def validate(self, value):\n        pass\n\nclass MultipleChoiceField(ChoiceField):\n    hidden_widget = MultipleHiddenInput\n    widget = SelectMultiple\n    default_error_messages = {\n        'invalid_choice': _('Select a valid choice. %(value)s is not one of the available choices.'),\n        'invalid_list': _('Enter a list of values.'),\n    }\n\n    def to_python(self, value):\n        if not value:\n            return []\n        elif not isinstance(value, (list, tuple)):\n            raise ValidationError(self.error_messages['invalid_list'])\n        return [smart_text(val) for val in value]\n\n    def validate(self, value):\n        \"\"\"\n        Validates that the input is a list or tuple.\n        \"\"\"\n        if self.required and not value:\n            raise ValidationError(self.error_messages['required'])\n        # Validate that each value in the value list is in self.choices.\n        for val in value:\n            if not self.valid_value(val):\n                raise ValidationError(self.error_messages['invalid_choice'] % {'value': val})\n\nclass TypedMultipleChoiceField(MultipleChoiceField):\n    def __init__(self, *args, **kwargs):\n        self.coerce = kwargs.pop('coerce', lambda val: val)\n        self.empty_value = kwargs.pop('empty_value', [])\n        super(TypedMultipleChoiceField, self).__init__(*args, **kwargs)\n\n    def to_python(self, value):\n        \"\"\"\n        Validates that the values are in self.choices and can be coerced to the\n        right type.\n        \"\"\"\n        value = super(TypedMultipleChoiceField, self).to_python(value)\n        super(TypedMultipleChoiceField, self).validate(value)\n        if value == self.empty_value or value in validators.EMPTY_VALUES:\n            return self.empty_value\n        new_value = []\n        for choice in value:\n            try:\n                new_value.append(self.coerce(choice))\n            except (ValueError, TypeError, ValidationError):\n                raise ValidationError(self.error_messages['invalid_choice'] % {'value': choice})\n        return new_value\n\n    def validate(self, value):\n        pass\n\nclass ComboField(Field):\n    \"\"\"\n    多个方法过滤: 构造多个 field 对象, 分别调用各自的 clean, 从而达到自定义的效果.\n    A Field whose clean() method calls multiple Field clean() methods.\n    \"\"\"\n    def __init__(self, fields=(), *args, **kwargs):\n        super(ComboField, self).__init__(*args, **kwargs)\n        # Set 'required' to False on the individual fields, because the\n        # required validation will be handled by ComboField, not by those\n        # individual fields.\n        for f in fields:\n            f.required = False\n        self.fields = fields\n\n    def clean(self, value):\n        \"\"\"\n        Validates the given value against all of self.fields, which is a\n        list of Field instances.\n        \"\"\"\n        #self.fields 是 Field 的实例列表\n        super(ComboField, self).clean(value)\n\n        for field in self.fields:\n            value = field.clean(value)\n\n        return value\n\nclass MultiValueField(Field):\n    \"\"\"\n    A Field that aggregates the logic of multiple Fields.\n\n    Its clean() method takes a \"decompressed\" list of values, which are then\n    cleaned into a single value according to self.fields. Each value in\n    this list is cleaned by the corresponding field -- the first value is\n    cleaned by the first field, the second value is cleaned by the second\n    field, etc. Once all fields are cleaned, the list of clean values is\n    \"compressed\" into a single value.\n\n    Subclasses should not have to implement clean(). Instead, they must\n    implement compress(), which takes a list of valid values and returns a\n    \"compressed\" version of those values -- a single value.\n\n    You'll probably want to use this with MultiWidget.\n    \"\"\"\n    default_error_messages = {\n        'invalid': _('Enter a list of values.'),\n    }\n\n    def __init__(self, fields=(), *args, **kwargs):\n        super(MultiValueField, self).__init__(*args, **kwargs)\n        # Set 'required' to False on the individual fields, because the\n        # required validation will be handled by MultiValueField, not by those\n        # individual fields.\n        for f in fields:\n            f.required = False\n        self.fields = fields\n\n    def validate(self, value):\n        pass\n\n    def clean(self, value):\n        \"\"\"\n        Validates every value in the given list. A value is validated against\n        the corresponding Field in self.fields.\n\n        For example, if this MultiValueField was instantiated with\n        fields=(DateField(), TimeField()), clean() would call\n        DateField.clean(value[0]) and TimeField.clean(value[1]).\n        \"\"\"\n        clean_data = []\n        errors = ErrorList()\n        if not value or isinstance(value, (list, tuple)):\n            if not value or not [v for v in value if v not in validators.EMPTY_VALUES]:\n                if self.required:\n                    raise ValidationError(self.error_messages['required'])\n                else:\n                    return self.compress([])\n        else:\n            raise ValidationError(self.error_messages['invalid'])\n        for i, field in enumerate(self.fields):\n            try:\n                field_value = value[i]\n            except IndexError:\n                field_value = None\n            if self.required and field_value in validators.EMPTY_VALUES:\n                raise ValidationError(self.error_messages['required'])\n            try:\n                clean_data.append(field.clean(field_value))\n            except ValidationError as e:\n                # Collect all validation errors in a single list, which we'll\n                # raise at the end of clean(), rather than raising a single\n                # exception for the first error we encounter.\n                errors.extend(e.messages)\n        if errors:\n            raise ValidationError(errors)\n\n        out = self.compress(clean_data)\n        self.validate(out)\n        self.run_validators(out)\n        return out\n\n    def compress(self, data_list):\n        \"\"\"\n        Returns a single value for the given list of values. The values can be\n        assumed to be valid.\n\n        For example, if this MultiValueField was instantiated with\n        fields=(DateField(), TimeField()), this might return a datetime\n        object created by combining the date and time in data_list.\n        \"\"\"\n        raise NotImplementedError('Subclasses must implement this method.')\n\nclass FilePathField(ChoiceField):\n    def __init__(self, path, match=None, recursive=False, allow_files=True,\n                 allow_folders=False, required=True, widget=None, label=None,\n                 initial=None, help_text=None, *args, **kwargs):\n\n        self.path, self.match, self.recursive = path, match, recursive\n\n        self.allow_files, self.allow_folders = allow_files, allow_folders\n\n        super(FilePathField, self).__init__(choices=(), required=required,\n            widget=widget, label=label, initial=initial, help_text=help_text,\n            *args, **kwargs)\n\n        if self.required:\n            self.choices = []\n        else:\n            self.choices = [(\"\", \"---------\")]\n\n        if self.match is not None:\n            self.match_re = re.compile(self.match)\n\n        if recursive:\n            for root, dirs, files in sorted(os.walk(self.path)):\n                if self.allow_files:\n                    for f in files:\n                        if self.match is None or self.match_re.search(f):\n                            f = os.path.join(root, f)\n                            self.choices.append((f, f.replace(path, \"\", 1)))\n                if self.allow_folders:\n                    for f in dirs:\n                        if f == '__pycache__':\n                            continue\n                        if self.match is None or self.match_re.search(f):\n                            f = os.path.join(root, f)\n                            self.choices.append((f, f.replace(path, \"\", 1)))\n        else:\n            try:\n                for f in sorted(os.listdir(self.path)):\n                    if f == '__pycache__':\n                        continue\n                    full_file = os.path.join(self.path, f)\n                    if (((self.allow_files and os.path.isfile(full_file)) or\n                        (self.allow_folders and os.path.isdir(full_file))) and\n                        (self.match is None or self.match_re.search(f))):\n                        self.choices.append((full_file, f))\n            except OSError:\n                pass\n\n        self.widget.choices = self.choices\n\nclass SplitDateTimeField(MultiValueField):\n    widget = SplitDateTimeWidget\n    hidden_widget = SplitHiddenDateTimeWidget\n    default_error_messages = {\n        'invalid_date': _('Enter a valid date.'),\n        'invalid_time': _('Enter a valid time.'),\n    }\n\n    def __init__(self, input_date_formats=None, input_time_formats=None, *args, **kwargs):\n        errors = self.default_error_messages.copy()\n        if 'error_messages' in kwargs:\n            errors.update(kwargs['error_messages'])\n        localize = kwargs.get('localize', False)\n        fields = (\n            DateField(input_formats=input_date_formats,\n                      error_messages={'invalid': errors['invalid_date']},\n                      localize=localize),\n            TimeField(input_formats=input_time_formats,\n                      error_messages={'invalid': errors['invalid_time']},\n                      localize=localize),\n        )\n        super(SplitDateTimeField, self).__init__(fields, *args, **kwargs)\n\n    def compress(self, data_list):\n        if data_list:\n            # Raise a validation error if time or date is empty\n            # (possible if SplitDateTimeField has required=False).\n            if data_list[0] in validators.EMPTY_VALUES:\n                raise ValidationError(self.error_messages['invalid_date'])\n            if data_list[1] in validators.EMPTY_VALUES:\n                raise ValidationError(self.error_messages['invalid_time'])\n            result = datetime.datetime.combine(*data_list)\n            return from_current_timezone(result)\n        return None\n\n\nclass IPAddressField(CharField):\n    default_error_messages = {\n        'invalid': _('Enter a valid IPv4 address.'),\n    }\n\n    default_validators = [validators.validate_ipv4_address] 内置的 IPv4 地址检测器\n\n\nclass GenericIPAddressField(CharField):\n    default_error_messages = {}\n\n    def __init__(self, protocol='both', unpack_ipv4=False, *args, **kwargs):\n        self.unpack_ipv4 = unpack_ipv4\n        self.default_validators, invalid_error_message = \\\n            validators.ip_address_validators(protocol, unpack_ipv4)\n        self.default_error_messages['invalid'] = invalid_error_message\n        super(GenericIPAddressField, self).__init__(*args, **kwargs)\n\n    def to_python(self, value):\n        if value in validators.EMPTY_VALUES:\n            return ''\n        if value and ':' in value:\n                return clean_ipv6_address(value,\n                    self.unpack_ipv4, self.error_messages['invalid'])\n        return value\n\n\nclass SlugField(CharField):\n    default_error_messages = {\n        'invalid': _(\"Enter a valid 'slug' consisting of letters, numbers,\"\n                     \" underscores or hyphens.\"),\n    }\n    default_validators = [validators.validate_slug]\n"
  },
  {
    "path": "Django-1.5.1/django/forms/forms.py",
    "content": "\"\"\"\nForm classes\n表单类\n\"\"\"\n\"\"\"\nfrom django import forms\n\nclass ContactForm(forms.Form):\n    subject = forms.CharField(max_length=100)\n    message = forms.CharField()\n    sender = forms.EmailField()\n    cc_myself = forms.BooleanField(required=False)\n\nfrom django.shortcuts import render\nfrom django.http import HttpResponseRedirect\n\ndef contact(request):\n    if request.method == 'POST': # If the form has been submitted...\n        form = ContactForm(request.POST) # A form bound to the POST data\n        if form.is_valid(): # All validation rules pass\n            # Process the data in form.cleaned_data\n            # ...\n            return HttpResponseRedirect('/thanks/') # Redirect after POST\n    else:\n        form = ContactForm() # An unbound form\n\n    return render(request, 'contact.html', {\n        'form': form,\n    })\n\"\"\"\n\nfrom __future__ import absolute_import, unicode_literals\n\nimport copy\n\nfrom django.core.exceptions import ValidationError\nfrom django.forms.fields import Field, FileField\nfrom django.forms.util import flatatt, ErrorDict, ErrorList\nfrom django.forms.widgets import Media, media_property, TextInput, Textarea\nfrom django.utils.datastructures import SortedDict\nfrom django.utils.html import conditional_escape, format_html\nfrom django.utils.encoding import smart_text, force_text, python_2_unicode_compatible\nfrom django.utils.safestring import mark_safe\nfrom django.utils import six\n\n\n__all__ = ('BaseForm', 'Form')\n\nNON_FIELD_ERRORS = '__all__'\n\ndef pretty_name(name):\n    \"\"\"Converts 'first_name' to 'First name'\"\"\"\n    if not name:\n        return ''\n    return name.replace('_', ' ').capitalize()\n\ndef get_declared_fields(bases, attrs, with_base_fields=True):\n    \"\"\"\n    Create a list of form field instances from the passed in 'attrs', plus any\n    similar fields on the base classes (in 'bases'). This is used by both the\n    Form and ModelForm metclasses.\n\n    If 'with_base_fields' is True, all fields from the bases are used.\n    Otherwise, only fields in the 'declared_fields' attribute on the bases are\n    used. The distinction is useful in ModelForm subclassing.\n    Also integrates any additional media definitions\n    \"\"\"\n    fields = [(field_name, attrs.pop(field_name)) for field_name, obj in list(six.iteritems(attrs)) if isinstance(obj, Field)]\n    fields.sort(key=lambda x: x[1].creation_counter) 原地算法, 是根据创建的顺序来创建\n\n    # If this class is subclassing another Form, add that Form's fields.\n    # Note that we loop over the bases in *reverse*. This is necessary in\n    # order to preserve the correct order of fields.\n    if with_base_fields:\n        for base in bases[::-1]:\n            if hasattr(base, 'base_fields'): 如果有 base_fields 这个属性, 迭代, 添加到 fields 中\n                fields = list(six.iteritems(base.base_fields)) + fields\n    else:\n        for base in bases[::-1]:\n            if hasattr(base, 'declared_fields'):\n                fields = list(six.iteritems(base.declared_fields)) + fields\n\n    return SortedDict(fields) 不懂\n\nclass DeclarativeFieldsMetaclass(type):\n    \"\"\"\n    Metaclass that converts Field attributes to a dictionary called\n    'base_fields', taking into account parent class 'base_fields' as well.\n    \"\"\"\n    def __new__(cls, name, bases, attrs): #object.__new__(cls[, ...])\n        attrs['base_fields'] = get_declared_fields(bases, attrs)\n\n        new_class = super(DeclarativeFieldsMetaclass,\n                     cls).__new__(cls, name, bases, attrs)\n\n        if 'media' not in attrs:\n            new_class.media = media_property(new_class)\n\n        return new_class\n\n@python_2_unicode_compatible\nclass BaseForm(object):\n    # This is the main implementation of all the Form logic. Note that this\n    # class is different than Form. See the comments by the Form class for more\n    # information. Any improvements to the form API should be made to *this*\n    # class, not to the Form class. \n    需要做更改, 尽好在这个类中修改\n    def __init__(self, data=None, files=None, auto_id='id_%s', prefix=None,\n                 initial=None, error_class=ErrorList, label_suffix=':',\n                 empty_permitted=False):\n        不懂, data 有什么用?\n        self.is_bound = data is not None or files is not None\n        self.data = data or {}\n        self.files = files or {}\n        self.auto_id = auto_id\n        self.prefix = prefix\n        self.initial = initial or {} 字典\n        self.error_class = error_class\n        self.label_suffix = label_suffix\n        self.empty_permitted = empty_permitted\n        self._errors = None # Stores the errors after clean() has been called.\n        self._changed_data = None\n\n        # The base_fields class attribute is the *class-wide* definition of\n        # fields. Because a particular *instance* of the class might want to\n        # alter self.fields, we create self.fields here by copying base_fields.\n        # Instances should always modify self.fields; they should not modify\n        # self.base_fields.\n        将 self.base_fields 中的 fields 复制进 self.field\n        self.fields 是字典\n        \n        self.fields = copy.deepcopy(self.base_fields) 不懂: 此为子类所需要重新设置的 self.base_fields\n\n    def __str__(self):\n        return self.as_table() 经常在 template 中用到的函数\n\n    def __iter__(self):\n        for name in self.fields:\n            yield self[name]\n\n    def __getitem__(self, name):\n        \"Returns a BoundField with the given name.\"\n        try:\n            field = self.fields[name]\n        except KeyError:\n            raise KeyError('Key %r not found in Form' % name)\n        return BoundField(self, field, name)\n\n    def _get_errors(self):\n        \"Returns an ErrorDict for the data provided for the form\"\n        if self._errors is None:\n            self.full_clean()\n        return self._errors\n    errors = property(_get_errors)\n\n    def is_valid(self):\n        \"\"\"\n        Returns True if the form has no errors. Otherwise, False. If errors are\n        being ignored, returns False.\n        \"\"\"\n        return self.is_bound and not bool(self.errors) 会自动检查所有数据\n\n    def add_prefix(self, field_name):\n        \"\"\"\n        Returns the field name with a prefix appended, if this Form has a\n        prefix set.\n\n        Subclasses may wish to override. 重写\n        \"\"\"\n        return self.prefix and ('%s-%s' % (self.prefix, field_name)) or field_name\n\n    def add_initial_prefix(self, field_name):\n        \"\"\"\n        Add a 'initial' prefix for checking dynamic initial values\n        \"\"\"\n        return 'initial-%s' % self.add_prefix(field_name)\n\n    def _html_output(self, normal_row, error_row, row_ender, help_text_html, errors_on_separate_row):\n        \"Helper function for outputting HTML. Used by as_table(), as_ul(), as_p().\"\n        #Used by as_table(), as_ul(), as_p().\n        top_errors = self.non_field_errors() # Errors that should be displayed above all fields.\n        output, hidden_fields = [], []\n\n        for name, field in self.fields.items():\n            html_class_attr = ''\n\n            bf = self[name] 已经重载 __getitem__ bf = boundfield\n\n            bf_errors = self.error_class([conditional_escape(error) for error in bf.errors]) # Escape and cache in local variable.\n\n            if bf.is_hidden:\n                if bf_errors:\n                    top_errors.extend(['(Hidden field %s) %s' % (name, force_text(e)) for e in bf_errors])\n\n                hidden_fields.append(six.text_type(bf))\n            else:\n                # Create a 'class=\"...\"' atribute if the row should have any\n                # CSS classes applied.\n                css_classes = bf.css_classes()\n                if css_classes:\n                    html_class_attr = ' class=\"%s\"' % css_classes\n\n                if errors_on_separate_row and bf_errors:\n                    output.append(error_row % force_text(bf_errors))\n\n                if bf.label:\n                    label = conditional_escape(force_text(bf.label))\n                    # Only add the suffix if the label does not end in\n                    # punctuation.\n                    if self.label_suffix:\n                        if label[-1] not in ':?.!':\n                            label = format_html('{0}{1}', label, self.label_suffix)\n                    label = bf.label_tag(label) or ''\n                else:\n                    label = ''\n\n                if field.help_text:\n                    help_text = help_text_html % force_text(field.help_text)\n                else:\n                    help_text = ''\n\n                output.append(normal_row % {\n                    'errors': force_text(bf_errors),\n                    'label': force_text(label),\n                    'field': six.text_type(bf),\n                    'help_text': help_text,\n                    'html_class_attr': html_class_attr\n                }) 不懂\n\n        if top_errors:\n            output.insert(0, error_row % force_text(top_errors))\n\n        if hidden_fields: # Insert any hidden fields in the last row.\n            str_hidden = ''.join(hidden_fields)\n            if output:\n                last_row = output[-1]\n                # Chop off the trailing row_ender (e.g. '</td></tr>') and\n                # insert the hidden fields.\n                if not last_row.endswith(row_ender):\n                    # This can happen in the as_p() case (and possibly others\n                    # that users write): if there are only top errors, we may\n                    # not be able to conscript the last row for our purposes,\n                    # so insert a new, empty row.\n                    last_row = (normal_row % {'errors': '', 'label': '',\n                                              'field': '', 'help_text':'',\n                                              'html_class_attr': html_class_attr})\n                    output.append(last_row) 最后一行, 不懂\n\n                    # <tr><td>........</td></tr> 懂了\n                output[-1] = last_row[:-len(row_ender)] + str_hidden + row_ender\n            else:\n                # If there aren't any rows in the output, just append the\n                # hidden fields.\n                output.append(str_hidden)\n\n        return mark_safe('\\n'.join(output))\n\n    def as_table(self):\n        以表格的 HTML 返回,不包括 <table>\n        \"Returns this form rendered as HTML <tr>s -- excluding the <table></table>.\"\n        return self._html_output(\n            自动添加 lebel\n            normal_row = '<tr%(html_class_attr)s><th>%(label)s</th><td>%(errors)s%(field)s%(help_text)s</td></tr>',\n            error_row = '<tr><td colspan=\"2\">%s</td></tr>',\n            row_ender = '</td></tr>',\n            help_text_html = '<br /><span class=\"helptext\">%s</span>',\n            errors_on_separate_row = False)\n\n    def as_ul(self):\n        以标号 li 的形式返回\n        \"Returns this form rendered as HTML <li>s -- excluding the <ul></ul>.\"\n        return self._html_output(\n            normal_row = '<li%(html_class_attr)s>%(errors)s%(label)s %(field)s%(help_text)s</li>',\n            error_row = '<li>%s</li>',\n            row_ender = '</li>',\n            help_text_html = ' <span class=\"helptext\">%s</span>',\n            errors_on_separate_row = False)\n\n    def as_p(self):\n        以段落 p 的形式返回\n        \"Returns this form rendered as HTML <p>s.\"\n        return self._html_output(\n            normal_row = '<p%(html_class_attr)s>%(label)s %(field)s%(help_text)s</p>',\n            error_row = '%s',\n            row_ender = '</p>',\n            help_text_html = ' <span class=\"helptext\">%s</span>',\n            errors_on_separate_row = True)\n\n    def non_field_errors(self):\n        \"\"\"\n        Returns an ErrorList of errors that aren't associated with a particular\n        field -- i.e., from Form.clean(). Returns an empty ErrorList if there\n        are none.\n        \"\"\"\n        返回错误, \n        return self.errors.get(NON_FIELD_ERRORS, self.error_class())\n\n    def _raw_value(self, fieldname):\n        \"\"\"\n        Returns the raw_value for a particular field name. This is just a\n        convenient wrapper around widget.value_from_datadict.\n        \"\"\"\n        field = self.fields[fieldname]\n        prefix = self.add_prefix(fieldname)\n        return field.widget.value_from_datadict(self.data, self.files, prefix)\n\n    def full_clean(self):\n        \"\"\"\n        收集所有的数据, 放入 self.cleaned_data, 注意: 并没有检测数据的有效性, 并将错误填充到 self._errors\n\n        Cleans all of self.data and populates self._errors and\n        self.cleaned_data.\n        \"\"\"\n        self._errors = ErrorDict()\n        if not self.is_bound: # Stop further processing.\n            return\n\n        self.cleaned_data = {}\n        # If the form is permitted to be empty, and none of the form data has\n        # changed from the initial data, short circuit any validation.\n        if self.empty_permitted and not self.has_changed():\n            return\n\n        三个检测\n        self._clean_fields()\n        self._clean_form() 没做什么, 简单设置 clean_data, 在 _clean_fields 已经获取设置了\n        self._post_clean() 什么都没做\n\n        检测清理 fields 的数据\n    def _clean_fields(self):\n        遍历字典\n        for name, field in self.fields.items():\n            # value_from_datadict() gets the data from the data dictionaries.\n\n            # Each widget type knows how to retrieve its own data, because some\n\n            # widgets split data over several HTML fields. 懂了\n\n            value = field.widget.value_from_datadict(self.data, self.files, self.add_prefix(name))\n            try:\n                如果是 file 类型, 特殊处理\n                if isinstance(field, FileField):\n                    initial = self.initial.get(name, field.initial)\n                    value = field.clean(value, initial)\n                else:\n                    value = field.clean(value)\n\n                self.cleaned_data[name] = value\n\n                if hasattr(self, 'clean_%s' % name):\n                    value = getattr(self, 'clean_%s' % name)() 不懂, 应该为某种类型会有 clean_XXX 函数, 可以调用检测数据\n                    self.cleaned_data[name] = value\n\n            except ValidationError as e:\n                self._errors[name] = self.error_class(e.messages)\n                if name in self.cleaned_data:\n                    del self.cleaned_data[name]\n\n    def _clean_form(self):\n        try:\n            self.cleaned_data = self.clean() clean 没做什么\n        except ValidationError as e:\n            self._errors[NON_FIELD_ERRORS] = self.error_class(e.messages)\n\n    def _post_clean(self):\n        \"\"\"\n        An internal hook for performing additional cleaning after form cleaning\n        is complete. Used for model validation in model forms.\n        \"\"\"\n        pass\n\n    def clean(self):\n        \"\"\"\n        Hook for doing any extra form-wide cleaning after Field.clean() been\n        called on every field. Any ValidationError raised by this method will\n        not be associated with a particular field; it will have a special-case\n        association with the field named '__all__'.\n        \"\"\" \n        return self.cleaned_data 在 full_clean 中已经设置完毕\n\n    def has_changed(self):\n        \"\"\"\n        Returns True if data differs from initial.\n        \"\"\"\n        return bool(self.changed_data)\n\n    def _get_changed_data(self):\n        if self._changed_data is None:\n            self._changed_data = []\n            # XXX: For now we're asking the individual widgets whether or not the\n            # data has changed. It would probably be more efficient to hash the\n            # initial data, store it in a hidden field, and compare a hash of the\n            # submitted data, but we'd need a way to easily get the string value\n            # for a given field. Right now, that logic is embedded in the render\n            # method of each widget.\n            原理: 在 hidden field 中设置了某个值的 hash, 在新的数据提交的时候, 可以从输入的数据中做比较\n            for name, field in self.fields.items():\n                prefixed_name = self.add_prefix(name)\n                data_value = field.widget.value_from_datadict(self.data, self.files, prefixed_name)\n\n                if not field.show_hidden_initial: 如果隐藏隐藏域\n                    initial_value = self.initial.get(name, field.initial)\n                else:\n                    initial_prefixed_name = self.add_initial_prefix(name)\n                    hidden_widget = field.hidden_widget()\n                    initial_value = hidden_widget.value_from_datadict(\n                        self.data, self.files, initial_prefixed_name)\n\n                if field.widget._has_changed(initial_value, data_value):\n                    self._changed_data.append(name)\n        return self._changed_data\n\n    changed_data = property(_get_changed_data) changed_data 在这里设置\n\n    def _get_media(self):\n        \"\"\"\n        Provide a description of all media required to render the widgets on this form\n        \"\"\"\n        media = Media()\n        # values:如果是 list, 返回所有的值, 如果是 map, 返回值\n        for field in self.fields.values(): \n            media = media + field.widget.media\n        return media\n\n    media = property(_get_media)\n    # xxx = self.media\n\n    def is_multipart(self):\n        \"\"\"\n        Returns True if the form needs to be multipart-encoded, i.e. it has\n        FileInput. Otherwise, False.\n        检测是否需要 multipart-encoded, 也就是是否含有 FileInput\n        \"\"\"\n        for field in self.fields.values():\n            if field.widget.needs_multipart_form:\n                return True\n        return False\n\n        返回隐藏域\n    def hidden_fields(self):\n        \"\"\"\n        Returns a list of all the BoundField objects that are hidden fields.\n        Useful for manual form layout in templates.\n        \"\"\"\n\n        return [field for field in self if field.is_hidden]\n\n        返回可见域\n    def visible_fields(self):\n        \"\"\"\n        Returns a list of BoundField objects that aren't hidden fields.\n        The opposite of the hidden_fields() method.\n        \"\"\"\n        return [field for field in self if not field.is_hidden]\n\nclass Form(six.with_metaclass(DeclarativeFieldsMetaclass, BaseForm)):\n    \"A collection of Fields, plus their associated data.\"\n    # This is a separate class from BaseForm in order to abstract the way\n    # self.fields is specified. This class (Form) is the one that does the\n    # fancy metaclass stuff purely for the semantic sugar -- it allows one\n    # to define a form using declarative syntax.\n    # BaseForm itself has no way of designating self.fields.\n\n@python_2_unicode_compatible\nclass BoundField(object):\n\n    \"A Field plus data\"\n\n    def __init__(self, form, field, name):\n        self.form = form\n        self.field = field\n        self.name = name\n        self.html_name = form.add_prefix(name)\n        self.html_initial_name = form.add_initial_prefix(name)\n        self.html_initial_id = form.add_initial_prefix(self.auto_id)\n\n        if self.field.label is None: 起个名字\n            self.label = pretty_name(name)\n        else:\n            self.label = self.field.label\n\n        self.help_text = field.help_text or ''\n\n    def __str__(self):\n        \"\"\"Renders this field as an HTML widget.\"\"\"\n        if self.field.show_hidden_initial:\n            return self.as_widget() + self.as_hidden(only_initial=True)\n        return self.as_widget()\n\n    def __iter__(self):\n        \"\"\"\n        Yields rendered strings that comprise all widgets in this BoundField.\n\n        This really is only useful for RadioSelect widgets, so that you can\n        iterate over individual radio buttons in a template.\n        \"\"\"\n        for subwidget in self.field.widget.subwidgets(self.html_name, self.value()):\n            yield subwidget\n\n    def __len__(self):\n        return len(list(self.__iter__()))\n\n    def __getitem__(self, idx):\n        return list(self.__iter__())[idx]\n\n    def _errors(self):\n        \"\"\"\n        Returns an ErrorList for this field. Returns an empty ErrorList\n        if there are none.\n        \"\"\"\n        return self.form.errors.get(self.name, self.form.error_class())\n\n    errors = property(_errors)\n\n    def as_widget(self, widget=None, attrs=None, only_initial=False):\n        \"\"\"\n        Renders the field by rendering the passed widget, adding any HTML\n        attributes passed as attrs.  If no widget is specified, then the\n        field's default widget will be used.\n        \"\"\"\n        if not widget:\n            widget = self.field.widget\n\n        attrs = attrs or {}\n        auto_id = self.auto_id\n        if auto_id and 'id' not in attrs and 'id' not in widget.attrs:\n            if not only_initial:\n                attrs['id'] = auto_id\n            else:\n                attrs['id'] = self.html_initial_id\n\n        if not only_initial:\n            name = self.html_name\n        else:\n            name = self.html_initial_name\n        return widget.render(name, self.value(), attrs=attrs)\n\n    def as_text(self, attrs=None, **kwargs):\n        textbox\n\n        \"\"\"\n        Returns a string of HTML for representing this as an <input type=\"text\">.\n        \"\"\"\n        return self.as_widget(TextInput(), attrs, **kwargs)\n\n    def as_textarea(self, attrs=None, **kwargs):\n        textarea\n        \"Returns a string of HTML for representing this as a <textarea>.\"\n        return self.as_widget(Textarea(), attrs, **kwargs)\n\n    def as_hidden(self, attrs=None, **kwargs):\n        hidden area\n        \"\"\"\n        Returns a string of HTML for representing this as an <input type=\"hidden\">.\n        \"\"\"\n        return self.as_widget(self.field.hidden_widget(), attrs, **kwargs)\n\n    def _data(self):\n        获取数据\n        \"\"\"\n        Returns the data for this BoundField, or None if it wasn't given.\n        \"\"\"\n        return self.field.widget.value_from_datadict(self.form.data, self.form.files, self.html_name)\n    data = property(_data)\n\n    def value(self):\n        获取 value, 不懂, 这和上面的 _data 有什么不同\n        \"\"\"\n        Returns the value for this BoundField, using the initial value if\n        the form is not bound or the data otherwise.\n        \"\"\"\n        if not self.form.is_bound:\n            data = self.form.initial.get(self.name, self.field.initial) 初始值\n            if callable(data): 可能里面放着一个函数, 可以获取私有数据\n                data = data()\n        else:\n            data = self.field.bound_data(\n                self.data, self.form.initial.get(self.name, self.field.initial)\n            )\n\n        return self.field.prepare_value(data) 不懂, 应该是修饰数据\n\n    def label_tag(self, contents=None, attrs=None):\n        \"\"\"\n        'mark_safe'd to avoid HTML escaping\n\n        Wraps the given contents in a <label>, if the field has an ID attribute.\n        contents should be 'mark_safe'd to avoid HTML escaping. If contents\n        aren't given, uses the field's HTML-escaped label.\n\n        If attrs are given, they're used as HTML attributes on the <label> tag.\n        \"\"\"\n        contents = contents or conditional_escape(self.label)\n        widget = self.field.widget\n        id_ = widget.attrs.get('id') or self.auto_id\n        if id_:\n            attrs = attrs and flatatt(attrs) or ''\n            contents = format_html('<label for=\"{0}\"{1}>{2}</label>',\n                                   widget.id_for_label(id_), attrs, contents\n                                   )\n        return mark_safe(contents)\n\n    def css_classes(self, extra_classes=None):\n        我们可以得知, css 和 js 都是归 form 管理的\n        \"\"\"\n        Returns a string of space-separated CSS classes for this field.\n        \"\"\"\n        if hasattr(extra_classes, 'split'):\n            extra_classes = extra_classes.split()\n\n        extra_classes = set(extra_classes or [])\n\n        if self.errors and hasattr(self.form, 'error_css_class'):\n            extra_classes.add(self.form.error_css_class)\n\n        if self.field.required and hasattr(self.form, 'required_css_class'):\n            extra_classes.add(self.form.required_css_class)\n\n        return ' '.join(extra_classes)\n\n    def _is_hidden(self):\n        是否隐藏\n        \"Returns True if this BoundField's widget is hidden.\"\n        return self.field.widget.is_hidden\n\n    这种方法经常用到, 为的就是让内部的属性, 能够像正常名字的方法一样访问, 更友好\n    is_hidden = property(_is_hidden)\n\n\n    def _auto_id(self):\n        \"\"\"\n        Calculates and returns the ID attribute for this BoundField, if the\n        associated Form has specified auto_id. Returns an empty string otherwise.\n        \"\"\"\n        auto_id = self.form.auto_id\n        if auto_id and '%s' in smart_text(auto_id):\n            return smart_text(auto_id) % self.html_name\n        elif auto_id:\n            return self.html_name\n        return ''\n    auto_id = property(_auto_id)\n\n    def _id_for_label(self):\n        \"\"\"\n        Wrapper around the field widget's `id_for_label` method.\n        Useful, for example, for focusing on this field regardless of whether\n        it has a single widget or a MutiWidget.\n        \"\"\"\n        widget = self.field.widget\n        id_ = widget.attrs.get('id') or self.auto_id\n        return widget.id_for_label(id_)\n    id_for_label = property(_id_for_label)\n"
  },
  {
    "path": "Django-1.5.1/django/forms/formsets.py",
    "content": "from __future__ import absolute_import, unicode_literals\n\nfrom django.core.exceptions import ValidationError\nfrom django.forms import Form\nfrom django.forms.fields import IntegerField, BooleanField\nfrom django.forms.util import ErrorList\nfrom django.forms.widgets import Media, HiddenInput\nfrom django.utils.encoding import python_2_unicode_compatible\nfrom django.utils.safestring import mark_safe\nfrom django.utils import six\nfrom django.utils.six.moves import xrange\nfrom django.utils.translation import ugettext as _\n\n\n__all__ = ('BaseFormSet' ,'all_valid')\n\n# special field names\nTOTAL_FORM_COUNT = 'TOTAL_FORMS'\nINITIAL_FORM_COUNT = 'INITIAL_FORMS'\nMAX_NUM_FORM_COUNT = 'MAX_NUM_FORMS'\nORDERING_FIELD_NAME = 'ORDER'\nDELETION_FIELD_NAME = 'DELETE'\n\n# default maximum number of forms in a formset, to prevent memory exhaustion\nDEFAULT_MAX_NUM = 1000\n\nclass ManagementForm(Form):\n    \"\"\"\n    ``ManagementForm`` is used to keep track of how many form instances\n    are displayed on the page. If adding new forms via javascript, you should\n    increment the count field of this form as well.\n    \"\"\"\n    def __init__(self, *args, **kwargs):\n        self.base_fields[TOTAL_FORM_COUNT] = IntegerField(widget=HiddenInput)\n        self.base_fields[INITIAL_FORM_COUNT] = IntegerField(widget=HiddenInput)\n        self.base_fields[MAX_NUM_FORM_COUNT] = IntegerField(required=False, widget=HiddenInput)\n        super(ManagementForm, self).__init__(*args, **kwargs)\n\n@python_2_unicode_compatible\nclass BaseFormSet(object):\n    \"\"\"\n    A collection of instances of the same Form class.\n    同一类型的 form 集合\n    \"\"\"\n    def __init__(self, data=None, files=None, auto_id='id_%s', prefix=None,\n                 initial=None, error_class=ErrorList):\n        #data 和 files 用来绑定 postdata\n        self.is_bound = data is not None or files is not None\n\n        self.prefix = prefix or self.get_default_prefix()\n        self.auto_id = auto_id\n        self.data = data or {}\n        self.files = files or {}\n        self.initial = initial\n        self.error_class = error_class\n        self._errors = None\n        self._non_form_errors = None\n\n        看, 在构造函数就已经实例化所有的 form\n        # construct the forms in the formset\n        self._construct_forms()\n        |\n        |\n        \"\"\"\n        self.forms = []\n        for i in xrange(min(self.total_form_count(), self.absolute_max)):\n            self.forms.append(self._construct_form(i))\n        \"\"\"\n\n    def __str__(self):\n        return self.as_table()\n\n    def __iter__(self):\n        \"\"\"Yields the forms in the order they should be rendered\"\"\"\n        return iter(self.forms) 实际上迭代的是 forms \n\n    def __getitem__(self, index):\n        \"\"\"Returns the form at the given index, based on the rendering order\"\"\"\n        return self.forms[index]\n\n    def __len__(self):\n        return len(self.forms)\n\n    def __bool__(self):\n        \"\"\"All formsets have a management form which is not included in the length\"\"\"\n        return True\n\n    def __nonzero__(self):      # Python 2 compatibility\n        return type(self).__bool__(self)\n\n    @property\n    def management_form(self):\n        \"\"\"Returns the ManagementForm instance for this FormSet.\"\"\"\n        if self.is_bound:\n            form = ManagementForm(self.data, auto_id=self.auto_id, prefix=self.prefix) 构造\n\n            if not form.is_valid():\n                raise ValidationError('ManagementForm data is missing or has been tampered with')\n\n        else:\n            form = ManagementForm(auto_id=self.auto_id, prefix=self.prefix, initial={\n                TOTAL_FORM_COUNT: self.total_form_count(),\n                INITIAL_FORM_COUNT: self.initial_form_count(),\n                MAX_NUM_FORM_COUNT: self.max_num\n            })\n        return form\n\n    def total_form_count(self):\n        \"\"\"Returns the total number of forms in this FormSet.\"\"\"\n        if self.is_bound:\n            return self.management_form.cleaned_data[TOTAL_FORM_COUNT] 这种叫链式调用么, 不懂\n            如果已经绑定, 直接从 ManagementForm 中读取\n        else:\n            initial_forms = self.initial_form_count()\n            total_forms = initial_forms + self.\n\n            # Allow all existing related objects/inlines to be displayed,\n            # but don't allow extra beyond max_num.\n            if initial_forms > self.max_num >= 0:\n                total_forms = initial_forms\n            elif total_forms > self.max_num >= 0:\n                total_forms = self.max_num\n\n        return total_forms\n\n    def initial_form_count(self):\n        \"\"\"Returns the number of forms that are required in this FormSet.\"\"\"\n        if self.is_bound:\n            return self.management_form.cleaned_data[INITIAL_FORM_COUNT]\n        else:\n            # Use the length of the inital data if it's there, 0 otherwise.\n            initial_forms = self.initial and len(self.initial) or 0\n            if initial_forms > self.max_num >= 0:\n                initial_forms = self.max_num\n        return initial_forms\n\n    def _construct_forms(self):\n        在 self.initial 中存放了各种 form, 这个函数中实例话 self.initial 中的所有 form,\n        并将其放入到 self.form 中\n        # instantiate all the forms and put them in self.forms\n        self.forms = []\n        for i in xrange(min(self.total_form_count(), self.absolute_max)):\n            self.forms.append(self._construct_form(i))\n\n    def _construct_form(self, i, **kwargs):\n        \"\"\"\n        Instantiates and returns the i-th form instance in a formset.\n        \"\"\"\n        defaults = {\n            'auto_id': self.auto_id,\n            'prefix': self.add_prefix(i),\n            'error_class': self.error_class,\n            }\n\n        if self.is_bound:\n            defaults['data'] = self.data\n            defaults['files'] = self.files\n\n        if self.initial and not 'initial' in kwargs:\n            try:\n                defaults['initial'] = self.initial[i]\n            except IndexError:\n                pass\n\n        # Allow extra forms to be empty.\n        if i >= self.initial_form_count():\n            defaults['empty_permitted'] = True\n\n        defaults.update(kwargs)\n        form = self.form(**defaults) 不懂\n        self.add_fields(form, i)\n        return form\n\n    @property\n    def initial_forms(self):\n        \"\"\"Return a list of all the initial forms in this formset.\"\"\"\n        return self.forms[:self.initial_form_count()]\n\n    @property\n    def extra_forms(self):\n        \"\"\"Return a list of all the extra forms in this formset.\"\"\"\n        return self.forms[self.initial_form_count():]\n\n    @property\n    def empty_form(self):\n        form = self.form(\n            auto_id=self.auto_id,\n            prefix=self.add_prefix('__prefix__'),\n            empty_permitted=True,\n        )\n        self.add_fields(form, None)\n        return form\n\n    # Maybe this should just go away? 用处真的不大\n    @property\n    def cleaned_data(self):\n        \"\"\"\n        收集所有 forms 的数据, 放入到一个列表中, 每个元素都是一个字典\n        \n        Returns a list of form.cleaned_data dicts for every form in self.forms.\n        \"\"\"\n        if not self.is_valid(): 尚未有数据传入的时候, 异常\n            raise AttributeError(\"'%s' object has no attribute 'cleaned_data'\" % self.__class__.__name__)\n\n        return [form.cleaned_data for form in self.forms] 已经传入 POST 数据, 则可以从各个 form 中获取数据\n\n    @property\n    def deleted_forms(self):\n        \"\"\"\n        Returns a list of forms that have been marked for deletion. Raises an\n        AttributeError if deletion is not allowed.\n        \"\"\"\n        if not self.is_valid() or not self.can_delete:\n            raise AttributeError(\"'%s' object has no attribute 'deleted_forms'\" % self.__class__.__name__)\n\n        # construct _deleted_form_indexes which is just a list of form indexes\n        # that have had their deletion widget set to True\n        if not hasattr(self, '_deleted_form_indexes'):\n            self._deleted_form_indexes = []\n            for i in range(0, self.total_form_count()):\n                form = self.forms[i]\n                # if this is an extra form and hasn't changed, don't consider it\n                if i >= self.initial_form_count() and not form.has_changed():\n                    continue\n                if self._should_delete_form(form):\n                    self._deleted_form_indexes.append(i)\n        return [self.forms[i] for i in self._deleted_form_indexes]\n\n    @property\n    def ordered_forms(self):\n        \"\"\"\n        Returns a list of form in the order specified by the incoming data.\n        Raises an AttributeError if ordering is not allowed.\n        \"\"\"\n        if not self.is_valid() or not self.can_order:\n            raise AttributeError(\"'%s' object has no attribute 'ordered_forms'\" % self.__class__.__name__)\n        # Construct _ordering, which is a list of (form_index, order_field_value)\n        # tuples. After constructing this list, we'll sort it by order_field_value\n        # so we have a way to get to the form indexes in the order specified\n        # by the form data.\n        if not hasattr(self, '_ordering'):\n            self._ordering = []\n            for i in range(0, self.total_form_count()):\n                form = self.forms[i]\n                # if this is an extra form and hasn't changed, don't consider it\n                if i >= self.initial_form_count() and not form.has_changed():\n                    continue\n                # don't add data marked for deletion to self.ordered_data\n                if self.can_delete and self._should_delete_form(form):\n                    continue\n                self._ordering.append((i, form.cleaned_data[ORDERING_FIELD_NAME]))\n            # After we're done populating self._ordering, sort it.\n            # A sort function to order things numerically ascending, but\n            # None should be sorted below anything else. Allowing None as\n            # a comparison value makes it so we can leave ordering fields\n            # blank.\n            def compare_ordering_key(k):\n                if k[1] is None:\n                    return (1, 0) # +infinity, larger than any number\n                return (0, k[1])\n            self._ordering.sort(key=compare_ordering_key)\n\n        # Return a list of form.cleaned_data dicts in the order specified by\n        # the form data.\n        return [self.forms[i[0]] for i in self._ordering]\n\n    @classmethod\n    def get_default_prefix(cls):\n        return 'form'\n\n    def non_form_errors(self):\n        \"\"\"\n        Returns an ErrorList of errors that aren't associated with a particular\n        form -- i.e., from formset.clean(). Returns an empty ErrorList if there\n        are none.\n        \"\"\"\n        if self._non_form_errors is not None:\n            return self._non_form_errors\n        return self.error_class()\n\n    @property\n    def errors(self):\n        \"\"\"\n        Returns a list of form.errors for every form in self.forms.\n        \"\"\"\n        if self._errors is None:\n            self.full_clean()\n        return self._errors\n\n    def _should_delete_form(self, form):\n        \"\"\"\n        Returns whether or not the form was marked for deletion.\n        \"\"\"\n        return form.cleaned_data.get(DELETION_FIELD_NAME, False)\n\n    def is_valid(self):\n        \"\"\"\n        Returns True if every form in self.forms is valid.\n        \"\"\"\n        if not self.is_bound:\n            return False\n\n        # We loop over every form.errors here rather than short circuiting on the\n        # first failure to make sure validation gets triggered for every form.\n        forms_valid = True\n        err = self.errors\n        for i in range(0, self.total_form_count()):\n            form = self.forms[i]\n            if self.can_delete:\n                if self._should_delete_form(form):\n                    # This form is going to be deleted so any of its errors\n                    # should not cause the entire formset to be invalid.\n                    continue\n            forms_valid &= form.is_valid()\n        return forms_valid and not bool(self.non_form_errors())\n\n    def full_clean(self):\n        \"\"\"\n        Cleans all of self.data and populates self._errors.\n        \"\"\"\n        self._errors = []\n        if not self.is_bound: # Stop further processing. 没有数据\n            return\n\n        for i in range(0, self.total_form_count()):\n            form = self.forms[i]\n            \"\"\"\n            技巧:\n            def _get_errors(self):\n                \"Returns an ErrorDict for the data provided for the form\"\n                if self._errors is None:\n                    self.full_clean()\n                return self._errors\n            errors = property(_get_errors)\n            可以看 form.errors 其实是调用了 form.clean 函数, form.clean 会检测数据\n            \"\"\"\n            self._errors.append(form.errors) \n\n        # Give self.clean() a chance to do cross-form validation.\n        try:\n            self.clean()\n        except ValidationError as e:\n            self._non_form_errors = self.error_class(e.messages)\n\n    def clean(self):\n        \"\"\"\n        Hook for doing any extra formset-wide cleaning after Form.clean() has\n        been called on every form. Any ValidationError raised by this method\n        will not be associated with a particular form; it will be accesible\n        via formset.non_form_errors()\n        \"\"\"\n        pass\n\n    def has_changed(self):\n        \"\"\"\n        Returns true if data in any form differs from initial.\n        \"\"\"\n        return any(form.has_changed() for form in self)\n\n    def add_fields(self, form, index):\n        \"\"\"A hook for adding extra fields on to each form instance.\"\"\"\n        if self.can_order:\n            # Only pre-fill the ordering field for initial forms.\n            if index is not None and index < self.initial_form_count():\n                form.fields[ORDERING_FIELD_NAME] = IntegerField(label=_('Order'), initial=index+1, required=False) 整数域\n            else:   \n                form.fields[ORDERING_FIELD_NAME] = IntegerField(label=_('Order'), required=False)                   整数域\n\n        if self.can_delete:\n            form.fields[DELETION_FIELD_NAME] = BooleanField(label=_('Delete'), required=False)\n\n    def add_prefix(self, index):\n        return '%s-%s' % (self.prefix, index)\n\n    def is_multipart(self):\n        \"\"\"\n        Returns True if the formset needs to be multipart, i.e. it\n        has FileInput. Otherwise, False.\n        \"\"\"\n        if self.forms:\n            return self.forms[0].is_multipart()\n        else:\n            return self.empty_form.is_multipart()\n\n    @property\n    def media(self):\n        # All the forms on a FormSet are the same, so you only need to\n        # interrogate the first form for media.\n        if self.forms:\n            return self.forms[0].media\n        else:\n            return self.empty_form.media\n\n    def as_table(self):\n        \"Returns this formset rendered as HTML <tr>s -- excluding the <table></table>.\"\n        # XXX: there is no semantic division between forms here, there\n        # probably should be. It might make sense to render each form as a\n        # table row with each field as a td.\n        forms = ' '.join([form.as_table() for form in self])\n        return mark_safe('\\n'.join([six.text_type(self.management_form), forms]))\n\n    def as_p(self):\n        \"Returns this formset rendered as HTML <p>s.\"\n        forms = ' '.join([form.as_p() for form in self])\n        return mark_safe('\\n'.join([six.text_type(self.management_form), forms]))\n\n    def as_ul(self):\n        \"Returns this formset rendered as HTML <li>s.\"\n        forms = ' '.join([form.as_ul() for form in self])\n        return mark_safe('\\n'.join([six.text_type(self.management_form), forms]))\n\ndef formset_factory(form, formset=BaseFormSet, extra=1, can_order=False,\n                    can_delete=False, max_num=None):\n    \n    根据一个 form 构造一个表单集合\n    \"\"\"Return a FormSet for the given form class.\"\"\"\n    if max_num is None:\n        max_num = DEFAULT_MAX_NUM\n\n    # hard limit on forms instantiated, to prevent memory-exhaustion attacks\n    # limit defaults to DEFAULT_MAX_NUM, but developer can increase it via max_num\n    absolute_max = max(DEFAULT_MAX_NUM, max_num)\n    attrs = {'form': form, 'extra': extra,\n             'can_order': can_order, 'can_delete': can_delete,\n             'max_num': max_num, 'absolute_max': absolute_max}\n             \n    #返回一个类型: http://docs.python.org/2/library/functions.html#type\n    return type(form.__name__ + str('FormSet'), (formset,), attrs)\n                类的名字                        父类\n\ndef all_valid(formsets):\n    \"\"\"Returns true if every formset in formsets is valid.\"\"\"\n    valid = True\n    for formset in formsets:\n        if not formset.is_valid():\n            valid = False\n    return valid\n"
  },
  {
    "path": "Django-1.5.1/django/forms/models.py",
    "content": "\"\"\"\nHelper functions for creating Form classes from Django models\nand database field objects.\n\"\"\"\n\nfrom __future__ import absolute_import, unicode_literals\n\nfrom django.core.exceptions import ValidationError, NON_FIELD_ERRORS, FieldError\nfrom django.core.validators import EMPTY_VALUES\nfrom django.forms.fields import Field, ChoiceField\nfrom django.forms.forms import BaseForm, get_declared_fields\nfrom django.forms.formsets import BaseFormSet, formset_factory\nfrom django.forms.util import ErrorList\nfrom django.forms.widgets import (SelectMultiple, HiddenInput,\n    MultipleHiddenInput, media_property)\n\nfrom django.utils.encoding import smart_text, force_text\nfrom django.utils.datastructures import SortedDict\nfrom django.utils import six\nfrom django.utils.text import get_text_list, capfirst\nfrom django.utils.translation import ugettext_lazy as _, ugettext\n\n\n__all__ = (\n    'ModelForm', 'BaseModelForm', 'model_to_dict', 'fields_for_model',\n    'save_instance', 'ModelChoiceField', 'ModelMultipleChoiceField',\n)\n\ndef construct_instance(form, instance, fields=None, exclude=None):\n    \"\"\"\n    构造返回模板实例\n    Constructs and returns a model instance 模板实例 from the bound ``form``'s\n    ``cleaned_data``, but does not save the returned instance to the\n    database.\n    \"\"\"\n    from django.db import models\n    opts = instance._meta\n\n    cleaned_data = form.cleaned_data\n\n    file_field_list = []\n    for f in opts.fields:\n        if not f.editable or isinstance(f, models.AutoField) \\\n                or not f.name in cleaned_data:\n            continue\n        if fields is not None and f.name not in fields:\n            continue\n        if exclude and f.name in exclude:\n            continue\n\n        # Defer saving file-type fields until after the other fields, so a\n        # callable upload_to can use the values from other fields.\n        if isinstance(f, models.FileField):\n            file_field_list.append(f)\n        else:\n            f.save_form_data(instance, cleaned_data[f.name])\n\n    for f in file_field_list:\n        f.save_form_data(instance, cleaned_data[f.name])\n\n    return instance\n\n\n\ndef save_instance(form, instance, fields=None, fail_message='saved',commit=True, exclude=None, construct=True):\n    \"\"\"\n    保存 form 数据到数据库中\n    Saves bound Form ``form``'s cleaned_data into model instance ``instance``.\n\n    If commit=True, then the changes to ``instance`` will be saved to the\n    database. Returns ``instance``.\n\n    If construct=False, assume ``instance`` has already been constructed and\n    just needs to be saved.\n    \"\"\"\n    if construct:\n        instance = construct_instance(form, instance, fields, exclude)\n\n    opts = instance._meta\n    if form.errors: 如果 form 数据中有错误, 将异常\n        raise ValueError(\"The %s could not be %s because the data didn't\"\n                         \" validate.\" % (opts.object_name, fail_message))\n\n    # Wrap up the saving of m2m data as a function.\n    def save_m2m():\n        cleaned_data = form.cleaned_data\n        for f in opts.many_to_many:\n            if fields and f.name not in fields:\n                continue\n            if f.name in cleaned_data:\n                f.save_form_data(instance, cleaned_data[f.name])\n    if commit:\n        # If we are committing, save the instance and the m2m data immediately.\n        instance.save()\n        save_m2m()\n    else:\n        # We're not committing. Add a method to the form to allow deferred\n        # saving of m2m data.\n        form.save_m2m = save_m2m\n    return instance\n\n\n# ModelForms #################################################################\n\ndef model_to_dict(instance, fields=None, exclude=None):\n    \"\"\"\n    将 instance 内的数据处理为 dict\n    Returns a dict containing the data in ``instance`` suitable for passing as\n    a Form's ``initial`` keyword argument.\n\n    ``fields`` is an optional list of field names. If provided, only the named\n    fields will be included in the returned dict.\n\n    ``exclude`` is an optional list of field names. If provided, the named\n    fields will be excluded from the returned dict, even if they are listed in\n    the ``fields`` argument.\n    \"\"\"\n    # avoid a circular import\n    from django.db.models.fields.related import ManyToManyField\n    opts = instance._meta\n    data = {}\n\n    取出各个字段\n    for f in opts.fields + opts.many_to_many:\n        if not f.editable: 不可编辑\n            continue\n\n        if fields and not f.name in fields:\n            continue\n\n        if exclude and f.name in exclude:\n            continue\n        if isinstance(f, ManyToManyField):\n\n            # If the object doesn't have a primary key yet, just use an empty\n            # list for its m2m fields. Calling f.value_from_object will raise\n            # an exception.\n\n            如果是 many_to_many 类型的表, 可能要处理为 list\n            if instance.pk is None:\n                data[f.name] = []\n            else:\n                # MultipleChoiceWidget needs a list of pks, not object instances.\n                data[f.name] = list(f.value_from_object(instance).values_list('pk', flat=True))\n        else:\n            data[f.name] = f.value_from_object(instance)\n    \"\"\"\n    data = {\n        \"name\":\"zhangsan\",\n        \"age\":26,\n    }\n    \"\"\"\n    return data\n\ndef fields_for_model(model, fields=None, exclude=None, widgets=None, formfield_callback=None):\n    \"\"\"\n    Returns a ``SortedDict`` containing form fields for the given model.\n\n    ``fields`` is an optional list of field names. If provided, only the named\n    fields will be included in the returned fields.\n\n    ``exclude`` is an optional list of field names. If provided, the named\n    fields will be excluded from the returned fields, even if they are listed\n    in the ``fields`` argument.\n\n    ``widgets`` is a dictionary of model field names mapped to a widget\n\n    ``formfield_callback`` is a callable that takes a model field and returns\n    a form field.\n    \"\"\"\n    field_list = []\n    ignored = []\n    opts = model._meta\n\n    for f in sorted(opts.fields + opts.many_to_many):\n        if not f.editable:\n            continue\n        if fields is not None and not f.name in fields:\n            continue\n        if exclude and f.name in exclude:\n            continue\n\n        if widgets and f.name in widgets:\n            kwargs = {'widget': widgets[f.name]}\n        else:\n            kwargs = {}\n\n        if formfield_callback is None:\n            formfield = f.formfield(**kwargs)\n\n        elif not callable(formfield_callback):\n            raise TypeError('formfield_callback must be a function or callable')\n        else:\n            formfield = formfield_callback(f, **kwargs)\n\n        if formfield:\n            field_list.append((f.name, formfield))\n        else:\n            ignored.append(f.name)\n    field_dict = SortedDict(field_list)\n    if fields:\n        field_dict = SortedDict(\n            [(f, field_dict.get(f)) for f in fields\n                if ((not exclude) or (exclude and f not in exclude)) and (f not in ignored)]\n        )\n    return field_dict\n\nclass ModelFormOptions(object):\n    def __init__(self, options=None):\n        self.model = getattr(options, 'model', None)\n        self.fields = getattr(options, 'fields', None)\n        self.exclude = getattr(options, 'exclude', None)\n        self.widgets = getattr(options, 'widgets', None)\n\n\nclass ModelFormMetaclass(type):\n    def __new__(cls, name, bases, attrs):\n        formfield_callback = attrs.pop('formfield_callback', None)\n\n        try:\n            parents = [b for b in bases if issubclass(b, ModelForm)]\n        except NameError:\n            # We are defining ModelForm itself.\n            parents = None\n\n        #attrs 里有 fields\n        declared_fields = get_declared_fields(bases, attrs, False)\n        new_class = super(ModelFormMetaclass, cls).__new__(cls, name, bases,\n                attrs)\n\n        if not parents:\n            return new_class\n\n        if 'media' not in attrs:\n            new_class.media = media_property(new_class)\n\n        opts = new_class._meta = ModelFormOptions(getattr(new_class, 'Meta', None))\n\n        if opts.model:\n            # If a model is defined, extract form fields from it.\n            fields = fields_for_model(opts.model, opts.fields,\n                                      opts.exclude, opts.widgets, formfield_callback)\n            # make sure opts.fields doesn't specify an invalid field\n            none_model_fields = [k for k, v in six.iteritems(fields) if not v]\n            missing_fields = set(none_model_fields) - \\\n                             set(declared_fields.keys())\n            if missing_fields:\n                message = 'Unknown field(s) (%s) specified for %s'\n                message = message % (', '.join(missing_fields),\n                                     opts.model.__name__)\n                raise FieldError(message)\n            # Override default model fields with any custom declared ones\n            # (plus, include all the other declared fields).\n            fields.update(declared_fields)\n        else:\n            fields = declared_fields\n        new_class.declared_fields = declared_fields\n        new_class.base_fields = fields\n        return new_class\n\nBaseModelForm 也是 BaseForm\nclass BaseModelForm(BaseForm):\n    def __init__(self, data=None, files=None, auto_id='id_%s', prefix=None,\n                 initial=None, error_class=ErrorList, label_suffix=':',\n                 empty_permitted=False, instance=None):\n\n        opts = self._meta 不懂\n\n        if instance is None:\n            if opts.model is None:\n                raise ValueError('ModelForm has no model class specified.') \n                看, 必须要有个一个 model class 指定, 才能制造出对应的 form\n\n            如果  opts.model 被设置了, 我们可以实例化一个 model instance\n            # if we didn't get an instance, instantiate a new one\n            self.instance = opts.model()\n\n            从这里可以看出, 如果没有设置 instance 将会导致 object_data 为空\n            object_data = {} \n        else:\n            如果已经指定 instance\n            self.instance = instance \n            object_data = model_to_dict(instance, opts.fields, opts.exclude)\n\n        # if initial was provided, it should override the values from instance\n        if initial is not None:\n            object_data.update(initial) 看, object_data 就是 initial 初始值, 提供给 BaseForm\n\n        # self._validate_unique will be set to True by BaseModelForm.clean().\n        # It is False by default so overriding self.clean() and failing to call\n        # super will stop validate_unique from being called.\n        self._validate_unique = False                                       \n        super(BaseModelForm, self).__init__(data, files, auto_id, prefix, object_data,\n                                            error_class, label_suffix, empty_permitted)\n\n    def _update_errors(self, message_dict):\n        for k, v in message_dict.items(): 遍历\n            if k != NON_FIELD_ERRORS:\n                self._errors.setdefault(k, self.error_class()).extend(v)\n                # Remove the data from the cleaned_data dict since it was invalid\n                if k in self.cleaned_data:\n                    del self.cleaned_data[k]\n\n        if NON_FIELD_ERRORS in message_dict:\n            messages = message_dict[NON_FIELD_ERRORS]\n            self._errors.setdefault(NON_FIELD_ERRORS, self.error_class()).extend(messages)\n\n    def _get_validation_exclusions(self):\n        \"\"\"\n        For backwards-compatibility, several types of fields need to be\n        excluded from model validation. 为了向后兼容, 可能要忽略某些字段, 不懂\n\n        See the following tickets for\n        details: #12507, #12521, #12553\n        \"\"\"\n        exclude = []\n        # Build up a list of fields that should be excluded from model field\n        # validation and unique checks.\n        for f in self.instance._meta.fields:\n            field = f.name\n            # Exclude fields that aren't on the form. The developer may be\n            # adding these values to the model after form validation.\n\n            不在 self.fields 中的将被驱逐\n            if field not in self.fields:\n                exclude.append(f.name)\n\n            # Don't perform model validation on fields that were defined\n            # manually on the form and excluded via the ModelForm's Meta\n            # class. See #12901.\n            elif self._meta.fields and field not in self._meta.fields:\n                exclude.append(f.name)\n\n            elif self._meta.exclude and field in self._meta.exclude:\n                exclude.append(f.name)\n\n            # Exclude fields that failed form validation. There's no need for\n            # the model fields to validate them as well.\n            elif field in self._errors.keys():\n                exclude.append(f.name)\n\n            # Exclude empty fields that are not required by the form, if the\n            # underlying model field is required. This keeps the model field\n            # from raising a required error. Note: don't exclude the field from\n            # validation if the model field allows blanks. If it does, the blank\n            # value may be included in a unique check, so cannot be excluded\n            # from validation.\n\n            else:\n                form_field = self.fields[field]\n                field_value = self.cleaned_data.get(field, None)\n                if not f.blank and not form_field.required and field_value in EMPTY_VALUES:\n                    exclude.append(f.name)\n\n        return exclude\n\n    def clean(self):\n        self._validate_unique = True\n        return self.cleaned_data\n\n    def _post_clean(self):\n        opts = self._meta\n        # Update the model instance with self.cleaned_data.\n        self.instance = construct_instance(self, self.instance, opts.fields, opts.exclude)\n\n        exclude = self._get_validation_exclusions()\n\n        # Foreign Keys being used to represent inline relationships\n        # are excluded from basic field value validation. This is for two\n        # reasons: firstly, the value may not be supplied (#12507; the\n        # case of providing new values to the admin); secondly the\n        # object being referred to may not yet fully exist (#12749).\n        # However, these fields *must* be included in uniqueness checks,\n        # so this can't be part of _get_validation_exclusions().\n        for f_name, field in self.fields.items():\n            if isinstance(field, InlineForeignKeyField): 内联的 foreign key 将被驱逐\n                exclude.append(f_name)\n\n        # Clean the model instance's fields.\n        try:\n            self.instance.clean_fields(exclude=exclude) #Model 内部的方法\n        except ValidationError as e:\n            self._update_errors(e.message_dict)\n\n        # Call the model instance's clean method.\n        try:\n            self.instance.clean()\n        except ValidationError as e:\n            self._update_errors({NON_FIELD_ERRORS: e.messages})\n\n        # Validate uniqueness if needed.\n        if self._validate_unique:\n            self.validate_unique()\n\n    def validate_unique(self):\n        \"\"\"\n        Calls the instance's validate_unique() method and updates the form's\n        validation errors if any were raised.\n        \"\"\"\n        exclude = self._get_validation_exclusions()#Model 内部的方法\n        try:\n            self.instance.validate_unique(exclude=exclude)\n        except ValidationError as e:\n            self._update_errors(e.message_dict)\n\n    def save(self, commit=True):\n        \"\"\"\n        保存 form 中的数据到 db 中\n        Saves this ``form``'s cleaned_data into model instance\n        ``self.instance``.\n\n        If commit=True, then the changes to ``instance`` will be saved to the\n        database. Returns ``instance``.\n        \"\"\"\n        if self.instance.pk is None:\n            fail_message = 'created'\n        else:\n            fail_message = 'changed'\n\n        return save_instance(self, self.instance, self._meta.fields,\n                             fail_message, commit, construct=False)\n\n    save.alters_data = True\n\n继承ModelFormMetaclass, BaseModelForm, 但什么都不做\nclass ModelForm(six.with_metaclass(ModelFormMetaclass, BaseModelForm)):\n    pass\n\ndef modelform_factory(model, form=ModelForm, fields=None, exclude=None,formfield_callback=None,  widgets=None):\n    \"\"\"\n    返回模板表单, 根据模板推算名字, 返回新的类\n    Returns a ModelForm containing form fields for the given model.\n\n    ``fields`` is an optional list of field names. If provided, only the named\n    fields will be included in the returned fields.\n\n    ``exclude`` is an optional list of field names. If provided, the named\n    fields will be excluded from the returned fields, even if they are listed\n    in the ``fields`` argument.\n\n    ``widgets`` is a dictionary of model field names mapped to a widget.\n\n    ``formfield_callback`` is a callable that takes a model field and returns\n    a form field.\n    \"\"\"\n    # Create the inner Meta class. FIXME: ideally, we should be able to\n    # construct a ModelForm without creating and passing in a temporary\n    # inner class.\n\n    # Build up a list of attributes that the Meta object will have.\n    attrs = {'model': model}\n\n    if fields is not None:\n        attrs['fields'] = fields\n\n    if exclude is not None:\n        attrs['exclude'] = exclude\n        \n    if widgets is not None:\n        attrs['widgets'] = widgets\n\n    # If parent form class already has an inner Meta, the Meta we're\n    # creating needs to inherit from the parent's inner meta.\n    parent = (object,)\n    if hasattr(form, 'Meta'):\n        parent = (form.Meta, object)\n    Meta = type(str('Meta'), parent, attrs)\n\n    # Give this new form class a reasonable name.\n    class_name = model.__name__ + str('Form')\n\n    # Class attributes for the new form class.\n    form_class_attrs = {\n        'Meta': Meta,\n        'formfield_callback': formfield_callback\n    }\n\n    # Instatiate type(form) in order to use the same metaclass as form.\n    return type(form)(class_name, (form,), form_class_attrs) 语法不懂, 返回一个新的类\n\n# ModelFormSets ##############################################################\n\nclass BaseModelFormSet(BaseFormSet):\n    \"\"\"\n    A ``FormSet`` for editing a queryset and/or adding new objects to it.\n    \"\"\"\n    model = None\n\n    def __init__(self, data=None, files=None, auto_id='id_%s', prefix=None,\n                 queryset=None, **kwargs):\n        #看, 可以根据一个查询集来构造一个form\n        self.queryset = queryset\n\n        self.initial_extra = kwargs.pop('initial', None)\n        defaults = {'data': data, 'files': files, 'auto_id': auto_id, 'prefix': prefix}\n        defaults.update(kwargs)\n        super(BaseModelFormSet, self).__init__(**defaults)\n\n    def initial_form_count(self):\n        \"\"\"Returns the number of forms that are required in this FormSet.\"\"\"\n        if not (self.data or self.files):\n            return len(self.get_queryset())\n        return super(BaseModelFormSet, self).initial_form_count()\n\n    def _existing_object(self, pk):\n        if not hasattr(self, '_object_dict'): 构造一个 self.object_dict\n            self._object_dict = dict([(o.pk, o) for o in self.get_queryset()])\n        return self._object_dict.get(pk)\n\n    def _construct_form(self, i, **kwargs):\n        if self.is_bound and i < self.initial_form_count():\n            # Import goes here instead of module-level because importing\n            # django.db has side effects.\n            from django.db import connections\n\n            pk_key = \"%s-%s\" % (self.add_prefix(i), self.model._meta.pk.name)\n            pk = self.data[pk_key]\n            pk_field = self.model._meta.pk\n            pk = pk_field.get_db_prep_lookup('exact', pk,\n                connection=connections[self.get_queryset().db])\n\n            if isinstance(pk, list):\n                pk = pk[0] 只取第一个\n\n            kwargs['instance'] = self._existing_object(pk)\n\n        if i < self.initial_form_count() and not kwargs.get('instance'):\n            kwargs['instance'] = self.get_queryset()[i]\n            \n        if i >= self.initial_form_count() and self.initial_extra:\n            # Set initial values for extra forms\n            try:\n                kwargs['initial'] = self.initial_extra[i-self.initial_form_count()]\n            except IndexError:\n                pass\n\n        调用父类的 _construct_form 方法\n        return super(BaseModelFormSet, self)._construct_form(i, **kwargs)\n\n    def get_queryset(self):\n        if not hasattr(self, '_queryset'):\n            if self.queryset is not None:\n                qs = self.queryset\n            else:\n                qs = self.model._default_manager.get_query_set()\n\n            # If the queryset isn't already ordered we need to add an\n            # artificial ordering here to make sure that all formsets\n            # constructed from this queryset have the same form order.\n            if not qs.ordered:\n                qs = qs.order_by(self.model._meta.pk.name)\n\n            # Removed queryset limiting here. As per discussion re: #13023\n            # on django-dev, max_num should not prevent existing\n            # related objects/inlines from being displayed.\n            self._queryset = qs\n\n        return self._queryset\n\n    def save_new(self, form, commit=True):\n        \"\"\"Saves and returns a new model instance for the given form.\"\"\"\n        return form.save(commit=commit) BaseForm.save\n\n    def save_existing(self, form, instance, commit=True):\n        \"\"\"Saves and returns an existing model instance for the given form.\"\"\"\n        return form.save(commit=commit)\n\n    def save(self, commit=True):\n        \"\"\"Saves model instances for every form, adding and changing instances\n        as necessary, and returns the list of instances.\n        \"\"\"\n        if not commit:\n            self.saved_forms = []\n\n            def save_m2m():\n                for form in self.saved_forms:\n                    form.save_m2m()\n\n            self.save_m2m = save_m2m\n        return self.save_existing_objects(commit) + self.save_new_objects(commit)\n\n    def clean(self):\n        self.validate_unique()\n\n    def validate_unique(self):\n        # Collect unique_checks and date_checks to run from all the forms.\n        all_unique_checks = set()\n        all_date_checks = set()\n\n        收集每个 form 的字段\n        for form in self.forms:\n            if not form.is_valid():\n                continue\n            exclude = form._get_validation_exclusions()\n            unique_checks, date_checks = form.instance._get_unique_checks(exclude=exclude) 收集需要检查唯一性的字段\n            all_unique_checks = all_unique_checks.union(set(unique_checks))\n            all_date_checks = all_date_checks.union(set(date_checks))\n\n        errors = []\n\n        # Do each of the unique checks (unique and unique_together)\n        for uclass, unique_check in all_unique_checks:\n            seen_data = set()\n\n            for form in self.forms:\n                if not form.is_valid():\n                    continue\n\n                # get data for each field of each of unique_check\n                row_data = tuple([form.cleaned_data[field] for field in unique_check if field in form.cleaned_data])\n\n                if row_data and not None in row_data: 如果有需要将进行检测\n                    # if we've already seen it then we have a uniqueness failure\n                    if row_data in seen_data:\n                        # poke error messages into the right places and mark\n                        # the form as invalid\n                        errors.append(self.get_unique_error_message(unique_check))\n                        form._errors[NON_FIELD_ERRORS] = self.error_class([self.get_form_error()])\n                        # remove the data from the cleaned_data dict since it was invalid\n\n                        for field in unique_check:\n                            if field in form.cleaned_data:\n                                del form.cleaned_data[field]\n\n                    # mark the data as seen\n                    seen_data.add(row_data)\n\n        # iterate over each of the date checks now\n        for date_check in all_date_checks:\n            seen_data = set()\n            uclass, lookup, field, unique_for = date_check\n\n            for form in self.forms:\n                if not form.is_valid():\n                    continue\n\n                # see if we have data for both fields\n                if (form.cleaned_data and form.cleaned_data[field] is not None\n                    and form.cleaned_data[unique_for] is not None):  如果有需要将进行检测\n                    # if it's a date lookup we need to get the data for all the fields\n                    if lookup == 'date':\n                        date = form.cleaned_data[unique_for]\n                        date_data = (date.year, date.month, date.day)\n                    # otherwise it's just the attribute on the date/datetime\n                    # object\n                    else:\n                        date_data = (getattr(form.cleaned_data[unique_for], lookup),)\n                    data = (form.cleaned_data[field],) + date_data\n\n                    # if we've already seen it then we have a uniqueness failure\n                    if data in seen_data:\n                        # poke error messages into the right places and mark\n                        # the form as invalid\n                        errors.append(self.get_date_error_message(date_check))\n                        form._errors[NON_FIELD_ERRORS] = self.error_class([self.get_form_error()])\n                        # remove the data from the cleaned_data dict since it was invalid\n                        del form.cleaned_data[field]\n                    # mark the data as seen\n                    seen_data.add(data)\n        if errors:\n            raise ValidationError(errors)\n\n    def get_unique_error_message(self, unique_check):\n        if len(unique_check) == 1:\n            return ugettext(\"Please correct the duplicate data for %(field)s.\") % {\n                \"field\": unique_check[0],\n            }\n        else:\n            return ugettext(\"Please correct the duplicate data for %(field)s, \"\n                \"which must be unique.\") % {\n                    \"field\": get_text_list(unique_check, six.text_type(_(\"and\"))),\n                }\n\n    def get_date_error_message(self, date_check):\n        return ugettext(\"Please correct the duplicate data for %(field_name)s \"\n            \"which must be unique for the %(lookup)s in %(date_field)s.\") % {\n            'field_name': date_check[2],\n            'date_field': date_check[3],\n            'lookup': six.text_type(date_check[1]),\n        }\n\n    def get_form_error(self):\n        return ugettext(\"Please correct the duplicate values below.\")\n\n    def save_existing_objects(self, commit=True):\n        self.changed_objects = []\n        self.deleted_objects = []\n        if not self.initial_forms:\n            return []\n\n        saved_instances = []\n        try:\n            forms_to_delete = self.deleted_forms\n        except AttributeError:\n            forms_to_delete = []\n        for form in self.initial_forms:\n            pk_name = self._pk_field.name\n            raw_pk_value = form._raw_value(pk_name)\n\n            # clean() for different types of PK fields can sometimes return\n            # the model instance, and sometimes the PK. Handle either.\n            pk_value = form.fields[pk_name].clean(raw_pk_value)\n            pk_value = getattr(pk_value, 'pk', pk_value)\n\n            obj = self._existing_object(pk_value)\n            if form in forms_to_delete:\n                self.deleted_objects.append(obj)\n                obj.delete()\n                continue\n            if form.has_changed():\n                self.changed_objects.append((obj, form.changed_data))\n                saved_instances.append(self.save_existing(form, obj, commit=commit))\n                if not commit:\n                    self.saved_forms.append(form)\n        return saved_instances\n\n    def save_new_objects(self, commit=True):\n        self.new_objects = []\n        for form in self.extra_forms:\n            if not form.has_changed():\n                continue\n            # If someone has marked an add form for deletion, don't save the\n            # object.\n            if self.can_delete and self._should_delete_form(form):\n                continue\n            self.new_objects.append(self.save_new(form, commit=commit))\n            if not commit:\n                self.saved_forms.append(form)\n        return self.new_objects\n\n    def add_fields(self, form, index):\n        \"\"\"Add a hidden field for the object's primary key.\"\"\"\n        from django.db.models import AutoField, OneToOneField, ForeignKey\n        self._pk_field = pk = self.model._meta.pk\n        # If a pk isn't editable, then it won't be on the form, so we need to\n        # add it here so we can tell which object is which when we get the\n        # data back. Generally, pk.editable should be false, but for some\n        # reason, auto_created pk fields and AutoField's editable attribute is\n        # True, so check for that as well.\n        def pk_is_not_editable(pk):\n            return ((not pk.editable) or (pk.auto_created or isinstance(pk, AutoField))\n                or (pk.rel and pk.rel.parent_link and pk_is_not_editable(pk.rel.to._meta.pk)))\n        if pk_is_not_editable(pk) or pk.name not in form.fields:\n            if form.is_bound:\n                pk_value = form.instance.pk\n            else:\n                try:\n                    if index is not None:\n                        pk_value = self.get_queryset()[index].pk\n                    else:\n                        pk_value = None\n                except IndexError:\n                    pk_value = None\n            if isinstance(pk, OneToOneField) or isinstance(pk, ForeignKey):\n                qs = pk.rel.to._default_manager.get_query_set()\n            else:\n                qs = self.model._default_manager.get_query_set()\n            qs = qs.using(form.instance._state.db)\n            form.fields[self._pk_field.name] = ModelChoiceField(qs, initial=pk_value, required=False, widget=HiddenInput)\n        super(BaseModelFormSet, self).add_fields(form, index)\n\ndef modelformset_factory(model, form=ModelForm, formfield_callback=None,\n                         formset=BaseModelFormSet,\n                         extra=1, can_delete=False, can_order=False,\n                         max_num=None, fields=None, exclude=None):\n    \"\"\"\n    Returns a FormSet class for the given Django model class.\n    \"\"\"\n    form = modelform_factory(model, form=form, fields=fields, exclude=exclude,\n                             formfield_callback=formfield_callback)\n    FormSet = formset_factory(form, formset, extra=extra, max_num=max_num,\n                              can_order=can_order, can_delete=can_delete)\n    FormSet.model = model\n    return FormSet\n\n\n# InlineFormSets #############################################################\n\nclass BaseInlineFormSet(BaseModelFormSet):\n    \"\"\"A formset for child objects related to a parent.\"\"\"\n    def __init__(self, data=None, files=None, instance=None,\n                 save_as_new=False, prefix=None, queryset=None, **kwargs):\n        from django.db.models.fields.related import RelatedObject\n        if instance is None:\n            self.instance = self.fk.rel.to()\n        else:\n            self.instance = instance\n        self.save_as_new = save_as_new\n        # is there a better way to get the object descriptor?\n        self.rel_name = RelatedObject(self.fk.rel.to, self.model, self.fk).get_accessor_name()\n        if queryset is None:\n            queryset = self.model._default_manager\n        if self.instance.pk:\n            qs = queryset.filter(**{self.fk.name: self.instance})\n        else:\n            qs = queryset.filter(pk__in=[])\n        super(BaseInlineFormSet, self).__init__(data, files, prefix=prefix,\n                                                queryset=qs, **kwargs)\n\n    def initial_form_count(self):\n        if self.save_as_new:\n            return 0\n        return super(BaseInlineFormSet, self).initial_form_count()\n\n\n    def _construct_form(self, i, **kwargs):\n        form = super(BaseInlineFormSet, self)._construct_form(i, **kwargs)\n        if self.save_as_new:\n            # Remove the primary key from the form's data, we are only\n            # creating new instances\n            form.data[form.add_prefix(self._pk_field.name)] = None\n\n            # Remove the foreign key from the form's data\n            form.data[form.add_prefix(self.fk.name)] = None\n\n        # Set the fk value here so that the form can do its validation.\n        setattr(form.instance, self.fk.get_attname(), self.instance.pk)\n        return form\n\n    @classmethod\n    def get_default_prefix(cls):\n        from django.db.models.fields.related import RelatedObject\n        return RelatedObject(cls.fk.rel.to, cls.model, cls.fk).get_accessor_name().replace('+','')\n\n    def save_new(self, form, commit=True):\n        # Use commit=False so we can assign the parent key afterwards, then\n        # save the object.\n        obj = form.save(commit=False)\n        pk_value = getattr(self.instance, self.fk.rel.field_name)\n        setattr(obj, self.fk.get_attname(), getattr(pk_value, 'pk', pk_value))\n        if commit:\n            obj.save()\n        # form.save_m2m() can be called via the formset later on if commit=False\n        if commit and hasattr(form, 'save_m2m'):\n            form.save_m2m()\n        return obj\n\n    def add_fields(self, form, index):\n        super(BaseInlineFormSet, self).add_fields(form, index)\n        if self._pk_field == self.fk:\n            name = self._pk_field.name\n            kwargs = {'pk_field': True}\n        else:\n            # The foreign key field might not be on the form, so we poke at the\n            # Model field to get the label, since we need that for error messages.\n            name = self.fk.name\n            kwargs = {\n                'label': getattr(form.fields.get(name), 'label', capfirst(self.fk.verbose_name))\n            }\n            if self.fk.rel.field_name != self.fk.rel.to._meta.pk.name:\n                kwargs['to_field'] = self.fk.rel.field_name\n\n        form.fields[name] = InlineForeignKeyField(self.instance, **kwargs)\n\n        # Add the generated field to form._meta.fields if it's defined to make\n        # sure validation isn't skipped on that field.\n        if form._meta.fields:\n            if isinstance(form._meta.fields, tuple):\n                form._meta.fields = list(form._meta.fields)\n            form._meta.fields.append(self.fk.name)\n\n    def get_unique_error_message(self, unique_check):\n        unique_check = [field for field in unique_check if field != self.fk.name]\n        return super(BaseInlineFormSet, self).get_unique_error_message(unique_check)\n\n\ndef _get_foreign_key(parent_model, model, fk_name=None, can_fail=False):\n    \"\"\"\n    Finds and returns the ForeignKey from model to parent if there is one\n    (returns None if can_fail is True and no such field exists). If fk_name is\n    provided, assume it is the name of the ForeignKey field. Unles can_fail is\n    True, an exception is raised if there is no ForeignKey from model to\n    parent_model.\n    \"\"\"\n    # avoid circular import\n    from django.db.models import ForeignKey\n    opts = model._meta\n    if fk_name:\n        fks_to_parent = [f for f in opts.fields if f.name == fk_name]\n        if len(fks_to_parent) == 1:\n            fk = fks_to_parent[0]\n            if not isinstance(fk, ForeignKey) or \\\n                    (fk.rel.to != parent_model and\n                     fk.rel.to not in parent_model._meta.get_parent_list()):\n                raise Exception(\"fk_name '%s' is not a ForeignKey to %s\" % (fk_name, parent_model))\n        elif len(fks_to_parent) == 0:\n            raise Exception(\"%s has no field named '%s'\" % (model, fk_name))\n    else:\n        # Try to discover what the ForeignKey from model to parent_model is\n        fks_to_parent = [\n            f for f in opts.fields\n            if isinstance(f, ForeignKey)\n            and (f.rel.to == parent_model\n                or f.rel.to in parent_model._meta.get_parent_list())\n        ]\n        if len(fks_to_parent) == 1:\n            fk = fks_to_parent[0]\n        elif len(fks_to_parent) == 0:\n            if can_fail:\n                return\n            raise Exception(\"%s has no ForeignKey to %s\" % (model, parent_model))\n        else:\n            raise Exception(\"%s has more than 1 ForeignKey to %s\" % (model, parent_model))\n    return fk\n\n\ndef inlineformset_factory(parent_model, model, form=ModelForm,\n                          formset=BaseInlineFormSet, fk_name=None,\n                          fields=None, exclude=None,\n                          extra=3, can_order=False, can_delete=True, max_num=None,\n                          formfield_callback=None):\n    \"\"\"\n    Returns an ``InlineFormSet`` for the given kwargs.\n\n    You must provide ``fk_name`` if ``model`` has more than one ``ForeignKey``\n    to ``parent_model``.\n    \"\"\"\n    fk = _get_foreign_key(parent_model, model, fk_name=fk_name)\n    # enforce a max_num=1 when the foreign key to the parent model is unique.\n    if fk.unique:\n        max_num = 1\n    kwargs = {\n        'form': form,\n        'formfield_callback': formfield_callback,\n        'formset': formset,\n        'extra': extra,\n        'can_delete': can_delete,\n        'can_order': can_order,\n        'fields': fields,\n        'exclude': exclude,\n        'max_num': max_num,\n    }\n    FormSet = modelformset_factory(model, **kwargs)\n    FormSet.fk = fk\n    return FormSet\n\n\n# Fields #####################################################################\n\nclass InlineForeignKeyHiddenInput(HiddenInput):\n    def _has_changed(self, initial, data):\n        return False\n\nclass InlineForeignKeyField(Field):\n    \"\"\"\n    A basic integer field that deals with validating the given value to a\n    given parent instance in an inline.\n    \"\"\"\n    default_error_messages = {\n        'invalid_choice': _('The inline foreign key did not match the parent instance primary key.'),\n    }\n\n    def __init__(self, parent_instance, *args, **kwargs):\n        self.parent_instance = parent_instance\n        self.pk_field = kwargs.pop(\"pk_field\", False)\n        self.to_field = kwargs.pop(\"to_field\", None)\n        if self.parent_instance is not None:\n            if self.to_field:\n                kwargs[\"initial\"] = getattr(self.parent_instance, self.to_field)\n            else:\n                kwargs[\"initial\"] = self.parent_instance.pk\n        kwargs[\"required\"] = False\n        kwargs[\"widget\"] = InlineForeignKeyHiddenInput\n        super(InlineForeignKeyField, self).__init__(*args, **kwargs)\n\n    def clean(self, value):\n        if value in EMPTY_VALUES:\n            if self.pk_field:\n                return None\n            # if there is no value act as we did before.\n            return self.parent_instance\n        # ensure the we compare the values as equal types.\n        if self.to_field:\n            orig = getattr(self.parent_instance, self.to_field)\n        else:\n            orig = self.parent_instance.pk\n        if force_text(value) != force_text(orig):\n            raise ValidationError(self.error_messages['invalid_choice'])\n        return self.parent_instance\n\nclass ModelChoiceIterator(object):\n    def __init__(self, field):\n        self.field = field\n        self.queryset = field.queryset\n\n    def __iter__(self):\n        if self.field.empty_label is not None:\n            yield (\"\", self.field.empty_label)\n        if self.field.cache_choices:\n            if self.field.choice_cache is None:\n                self.field.choice_cache = [\n                    self.choice(obj) for obj in self.queryset.all()\n                ]\n            for choice in self.field.choice_cache:\n                yield choice\n        else:\n            for obj in self.queryset.all():\n                yield self.choice(obj)\n\n    def __len__(self):\n        return len(self.queryset)\n\n    def choice(self, obj):\n        return (self.field.prepare_value(obj), self.field.label_from_instance(obj))\n\nclass ModelChoiceField(ChoiceField):\n    \"\"\"A ChoiceField whose choices are a model QuerySet.\"\"\"\n    # This class is a subclass of ChoiceField for purity, but it doesn't\n    # actually use any of ChoiceField's implementation.\n    default_error_messages = {\n        'invalid_choice': _('Select a valid choice. That choice is not one of'\n                            ' the available choices.'),\n    }\n\n    def __init__(self, queryset, empty_label=\"---------\", cache_choices=False,\n                 required=True, widget=None, label=None, initial=None,\n                 help_text=None, to_field_name=None, *args, **kwargs):\n        if required and (initial is not None):\n            self.empty_label = None\n        else:\n            self.empty_label = empty_label\n        self.cache_choices = cache_choices\n\n        # Call Field instead of ChoiceField __init__() because we don't need\n        # ChoiceField.__init__().\n        Field.__init__(self, required, widget, label, initial, help_text,\n                       *args, **kwargs)\n        self.queryset = queryset\n        self.choice_cache = None\n        self.to_field_name = to_field_name\n\n    def __deepcopy__(self, memo):\n        result = super(ChoiceField, self).__deepcopy__(memo)\n        # Need to force a new ModelChoiceIterator to be created, bug #11183\n        result.queryset = result.queryset\n        return result\n\n    def _get_queryset(self):\n        return self._queryset\n\n    def _set_queryset(self, queryset):\n        self._queryset = queryset\n        self.widget.choices = self.choices\n\n    queryset = property(_get_queryset, _set_queryset)\n\n    # this method will be used to create object labels by the QuerySetIterator.\n    # Override it to customize the label.\n    def label_from_instance(self, obj):\n        \"\"\"\n        This method is used to convert objects into strings; it's used to\n        generate the labels for the choices presented by this object. Subclasses\n        can override this method to customize the display of the choices.\n        \"\"\"\n        return smart_text(obj)\n\n    def _get_choices(self):\n        # If self._choices is set, then somebody must have manually set\n        # the property self.choices. In this case, just return self._choices.\n        if hasattr(self, '_choices'):\n            return self._choices\n\n        # Otherwise, execute the QuerySet in self.queryset to determine the\n        # choices dynamically. Return a fresh ModelChoiceIterator that has not been\n        # consumed. Note that we're instantiating a new ModelChoiceIterator *each*\n        # time _get_choices() is called (and, thus, each time self.choices is\n        # accessed) so that we can ensure the QuerySet has not been consumed. This\n        # construct might look complicated but it allows for lazy evaluation of\n        # the queryset.\n        return ModelChoiceIterator(self)\n\n    choices = property(_get_choices, ChoiceField._set_choices)\n\n    def prepare_value(self, value):\n        if hasattr(value, '_meta'):\n            if self.to_field_name:\n                return value.serializable_value(self.to_field_name)\n            else:\n                return value.pk\n        return super(ModelChoiceField, self).prepare_value(value)\n\n    def to_python(self, value):\n        if value in EMPTY_VALUES:\n            return None\n        try:\n            key = self.to_field_name or 'pk'\n            value = self.queryset.get(**{key: value})\n        except (ValueError, self.queryset.model.DoesNotExist):\n            raise ValidationError(self.error_messages['invalid_choice'])\n        return value\n\n    def validate(self, value):\n        return Field.validate(self, value)\n\nclass ModelMultipleChoiceField(ModelChoiceField):\n    \"\"\"A MultipleChoiceField whose choices are a model QuerySet.\"\"\"\n    widget = SelectMultiple\n    hidden_widget = MultipleHiddenInput\n    default_error_messages = {\n        'list': _('Enter a list of values.'),\n        'invalid_choice': _('Select a valid choice. %s is not one of the'\n                            ' available choices.'),\n        'invalid_pk_value': _('\"%s\" is not a valid value for a primary key.')\n    }\n\n    def __init__(self, queryset, cache_choices=False, required=True,\n                 widget=None, label=None, initial=None,\n                 help_text=None, *args, **kwargs):\n        super(ModelMultipleChoiceField, self).__init__(queryset, None,\n            cache_choices, required, widget, label, initial, help_text,\n            *args, **kwargs)\n\n    def clean(self, value):\n        if self.required and not value:\n            raise ValidationError(self.error_messages['required'])\n        elif not self.required and not value:\n            return self.queryset.none()\n        if not isinstance(value, (list, tuple)):\n            raise ValidationError(self.error_messages['list'])\n        key = self.to_field_name or 'pk'\n        for pk in value:\n            try:\n                self.queryset.filter(**{key: pk})\n            except ValueError:\n                raise ValidationError(self.error_messages['invalid_pk_value'] % pk)\n        qs = self.queryset.filter(**{'%s__in' % key: value})\n        pks = set([force_text(getattr(o, key)) for o in qs])\n        for val in value:\n            if force_text(val) not in pks:\n                raise ValidationError(self.error_messages['invalid_choice'] % val)\n        # Since this overrides the inherited ModelChoiceField.clean\n        # we run custom validators here\n        self.run_validators(value)\n        return qs\n\n    def prepare_value(self, value):\n        if (hasattr(value, '__iter__') and\n                not isinstance(value, six.text_type) and\n                not hasattr(value, '_meta')):\n            return [super(ModelMultipleChoiceField, self).prepare_value(v) for v in value]\n        return super(ModelMultipleChoiceField, self).prepare_value(value)\n"
  },
  {
    "path": "Django-1.5.1/django/forms/util.py",
    "content": "from __future__ import unicode_literals\n\nfrom django.conf import settings\nfrom django.utils.html import format_html, format_html_join\nfrom django.utils.encoding import force_text, python_2_unicode_compatible\nfrom django.utils.safestring import mark_safe\nfrom django.utils import timezone\nfrom django.utils.translation import ugettext_lazy as _\n\n# Import ValidationError so that it can be imported from this\n# module to maintain backwards compatibility.\nfrom django.core.exceptions import ValidationError\n\ndef flatatt(attrs):\n    \"\"\"\n    Convert a dictionary of attributes to a single string.\n    The returned string will contain a leading space followed by key=\"value\",\n    XML-style pairs.  It is assumed that the keys do not need to be XML-escaped.\n    If the passed dictionary is empty, then return an empty string.\n\n    The result is passed through 'mark_safe'.\n    \"\"\"                         特地加了空格\n    return format_html_join('', ' {0}=\"{1}\"', sorted(attrs.items()))\n\n@python_2_unicode_compatible\nclass ErrorDict(dict):\n    \"\"\"\n    A collection of errors that knows how to display itself in various formats.\n\n    The dictionary keys are the field names, and the values are the errors.\n    \"\"\"\n    def __str__(self):\n        return self.as_ul()\n\n    def as_ul(self):\n        if not self: return ''\n        return format_html('<ul class=\"errorlist\">{0}</ul>',\n                           format_html_join('', '<li>{0}{1}</li>',\n                                            ((k, force_text(v))\n                                             for k, v in self.items())\n                           ))\n\n    def as_text(self):\n        return '\\n'.join(['* %s\\n%s' % (k, '\\n'.join(['  * %s' % force_text(i) for i in v])) for k, v in self.items()])\n\n@python_2_unicode_compatible\nclass ErrorList(list):\n    \"\"\"\n    A collection of errors that knows how to display itself in various formats.\n    \"\"\"\n    def __str__(self):\n        return self.as_ul()\n\n    def as_ul(self):\n        if not self: return ''\n        return format_html('<ul class=\"errorlist\">{0}</ul>',\n                           format_html_join('', '<li>{0}</li>',\n                                            ((force_text(e),) for e in self)\n                                            )\n                           )\n\n    def as_text(self):\n        if not self: return ''\n        return '\\n'.join(['* %s' % force_text(e) for e in self])\n\n    def __repr__(self):\n        return repr([force_text(e) for e in self])\n\n# Utilities for time zone support in DateTimeField et al.\n\ndef from_current_timezone(value):\n    \"\"\"\n    When time zone support is enabled, convert naive datetimes\n    entered in the current time zone to aware datetimes.\n    \"\"\"\n    if settings.USE_TZ and value is not None and timezone.is_naive(value):\n        current_timezone = timezone.get_current_timezone()\n        try:\n            return timezone.make_aware(value, current_timezone)\n        except Exception:\n            raise ValidationError(_('%(datetime)s couldn\\'t be interpreted '\n                                    'in time zone %(current_timezone)s; it '\n                                    'may be ambiguous or it may not exist.')\n                                  % {'datetime': value,\n                                     'current_timezone': current_timezone})\n    return value\n\ndef to_current_timezone(value):\n    \"\"\"\n    When time zone support is enabled, convert aware datetimes\n    to naive dateimes in the current time zone for display.\n    \"\"\"\n    if settings.USE_TZ and value is not None and timezone.is_aware(value):\n        current_timezone = timezone.get_current_timezone()\n        return timezone.make_naive(value, current_timezone)\n    return value\n"
  },
  {
    "path": "Django-1.5.1/django/forms/widgets.py",
    "content": "\"\"\"\nHTML Widget classes\n组件\n\"\"\"\n\nfrom __future__ import absolute_import, unicode_literals\n\nimport copy\nimport datetime\nfrom itertools import chain\ntry:\n    from urllib.parse import urljoin\nexcept ImportError:     # Python 2\n    from urlparse import urljoin\n\nfrom django.conf import settings\nfrom django.forms.util import flatatt, to_current_timezone\nfrom django.utils.datastructures import MultiValueDict, MergeDict\nfrom django.utils.html import conditional_escape, format_html, format_html_join\nfrom django.utils.translation import ugettext, ugettext_lazy\nfrom django.utils.encoding import force_text, python_2_unicode_compatible\nfrom django.utils.safestring import mark_safe\nfrom django.utils import datetime_safe, formats, six\n\n__all__ = (\n    'Media', 'MediaDefiningClass', 'Widget', 'TextInput', 'PasswordInput',\n    'HiddenInput', 'MultipleHiddenInput', 'ClearableFileInput',\n    'FileInput', 'DateInput', 'DateTimeInput', 'TimeInput', 'Textarea', 'CheckboxInput',\n    'Select', 'NullBooleanSelect', 'SelectMultiple', 'RadioSelect',\n    'CheckboxSelectMultiple', 'MultiWidget',\n    'SplitDateTimeWidget',\n)\n\nMEDIA_TYPES = ('css','js')\n\n添加 js css 资源, 合成 html\n@python_2_unicode_compatible\nclass Media(object):\n\n    def __init__(self, media=None, **kwargs):\n        if media:\n            media_attrs = media.__dict__\n        else:\n            media_attrs = kwargs\n\n        self._css = {}\n        self._js = []\n\n        # MEDIA_TYPES = ('css','js')\n        for name in MEDIA_TYPES:\n            getattr(self, 'add_' + name)(media_attrs.get(name, None))\n\n        # Any leftover attributes must be invalid.\n        # if media_attrs != {}:\n        #     raise TypeError(\"'class Media' has invalid attribute(s): %s\" % ','.join(media_attrs.keys()))\n\n    def __str__(self):\n        return self.render()\n\n    def render(self):\n        return mark_safe('\\n'.join(\n            chain(*[\n                getattr(self, 'render_' + name)() for name in MEDIA_TYPES # MEDIA_TYPES = ('css','js')\n                ])\n            ))\n\n    def render_js(self):\n        return [format_html('<script type=\"text/javascript\" src=\"{0}\"></script>', self.absolute_path(path)) for path in self._js]\n\n    def render_css(self):\n        # To keep rendering order consistent, we can't just iterate over items().\n        # We need to sort the keys, and iterate over the sorted list.\n        media = sorted(self._css.keys())\n        return chain(*[\n            列表推导\n            media 属性用于为不同的媒介类型规定不同的样式。\n                [format_html('<link href=\"{0}\" type=\"text/css\" media=\"{1}\" rel=\"stylesheet\" />', self.absolute_path(path), medium)\n                    for path in self._css[medium]]\n                for medium in media])\n\n    def absolute_path(self, path, prefix=None):\n        if path.startswith(('http://', 'https://', '/')):\n            return path 这里给出的是绝对的路径\n\n        这里可能是相对的路径, 所以要根据系统变量来推导\n        if prefix is None:\n            if settings.STATIC_URL is None:\n                 # backwards compatibility\n                prefix = settings.MEDIA_URL\n            else:\n                prefix = settings.STATIC_URL\n\n        return urljoin(prefix, path)\n\n    def __getitem__(self, name):\n        \"Returns a Media object that only contains media of the given type\"\n        if name in MEDIA_TYPES:\n            return Media(**{str(name): getattr(self, '_' + name)}) ** 是 kwargs\n        raise KeyError('Unknown media type \"%s\"' % name)\n\n    def add_js(self, data):\n        if data:\n            for path in data: 去重\n                if path not in self._js:\n                    self._js.append(path)\n\n    def add_css(self, data):\n        if data:\n            for medium, paths in data.items(): 去重\n                for path in paths:\n                    if not self._css.get(medium) or path not in self._css[medium]:\n                        self._css.setdefault(medium, []).append(path)\n\n    def __add__(self, other):\n        combined = Media()\n        for name in MEDIA_TYPES:\n            getattr(combined, 'add_' + name)(getattr(self, '_' + name, None))\n            getattr(combined, 'add_' + name)(getattr(other, '_' + name, None))\n        return combined\n\n返回内部的 _media 函数, 它会实例化一个 Media 对象\ndef media_property(cls):\n    def _media(self):\n        # Get the media property of the superclass, if it exists\n        sup_cls = super(cls, self)\n        try:\n            base = sup_cls.media\n        except AttributeError:\n            base = Media()\n\n        # Get the media definition for this class\n        definition = getattr(cls, 'Media', None)\n        if definition:\n            extend = getattr(definition, 'extend', True)\n            if extend:\n                if extend == True:\n                    m = base\n                else:\n                    m = Media()\n\n                    for medium in extend:\n                        m = m + base[medium]\n\n                return m + Media(definition)\n            else:\n                return Media(definition)\n        else:\n            return base\n\n    return property(_media) 这里实际上是返回 _media 函数, 放在类中可以当作属性访问\n\nclass MediaDefiningClass(type):\n    \"Metaclass for classes that can have media definitions\"\n    def __new__(cls, name, bases, attrs):\n        new_class = super(MediaDefiningClass, cls).__new__(cls, name, bases,\n                                                           attrs)\n        if 'media' not in attrs:\n            new_class.media = media_property(new_class)\n        return new_class\n\n@python_2_unicode_compatible\nclass SubWidget(object):\n    \"\"\"\n    Some widgets are made of multiple HTML elements -- namely, RadioSelect.\n\n    This is a class that represents the \"inner\" HTML element of a widget.\n    \"\"\"\n    def __init__(self, parent_widget, name, value, attrs, choices):\n        self.parent_widget = parent_widget\n        self.name, self.value = name, value\n        self.attrs, self.choices = attrs, choices\n\n    def __str__(self):\n        args = [self.name, self.value, self.attrs]\n        if self.choices:\n            args.append(self.choices)\n        return self.parent_widget.render(*args)\n\nclass Widget(six.with_metaclass(MediaDefiningClass)):\n    is_hidden = False          # Determines whether this corresponds to an <input type=\"hidden\">.\n    needs_multipart_form = False # Determines does this widget need multipart form files type\n    is_localized = False\n    is_required = False\n\n    def __init__(self, attrs=None):\n        if attrs is not None:\n            self.attrs = attrs.copy()\n        else:\n            self.attrs = {}\n\n    def __deepcopy__(self, memo):\n        不懂, 如何做深度复制\n        obj = copy.copy(self) copy 是一个模块\n        obj.attrs = self.attrs.copy()\n        memo[id(self)] = obj 赋值\n        return obj\n\n    def subwidgets(self, name, value, attrs=None, choices=()):\n        \"\"\"\n        弹出 subwidgets\n        Yields all \"subwidgets\" of this widget. Used only by RadioSelect to\n        allow template access to individual <input type=\"radio\"> buttons.\n\n        Arguments are the same as for render().\n        \"\"\"\n        yield SubWidget(self, name, value, attrs, choices)\n\n    def render(self, name, value, attrs=None):\n        \"\"\"\n        Returns this Widget rendered as HTML, as a Unicode string.\n\n        The 'value' given is not guaranteed to be valid input, so subclass\n        implementations should program defensively.\n        \"\"\"\n        raise NotImplementedError 父类没有实现\n\n    def build_attrs(self, extra_attrs=None, **kwargs):\n        \"Helper function for building an attribute dictionary.\"\n        属性字典, 可以更新\n        attrs = dict(self.attrs, **kwargs)\n        if extra_attrs:\n            attrs.update(extra_attrs)\n        return attrs\n\n    def value_from_datadict(self, data, files, name):\n        \"\"\"\n        Given a dictionary of data and this widget's name, returns the value\n        of this widget. Returns None if it's not provided.\n        \"\"\"\n        #data is key/value\n        return data.get(name, None)\n\n    def _has_changed(self, initial, data):\n        \"\"\"\n        Return True if data differs from initial.\n        \"\"\"\n        # For purposes of seeing whether something has changed, None is\n        # the same as an empty string, if the data or inital value we get\n        # is None, replace it w/ ''.\n        if data is None:\n            data_value = ''\n        else:\n            data_value = data\n\n        if initial is None:\n            initial_value = ''\n        else:\n            initial_value = initial\n\n        if force_text(initial_value) != force_text(data_value):\n            return True\n        return False\n\n    def id_for_label(self, id_):\n        \"\"\"\n        Returns the HTML ID attribute of this Widget for use by a <label>,\n        given the ID of the field. Returns None if no ID is available.\n\n        This hook is necessary because some widgets have multiple HTML\n        elements and, thus, multiple IDs. In that case, this method should\n        return an ID value that corresponds to the first ID in the widget's\n        tags.\n        \"\"\" \n        什么都没做\n        return id_\n\nclass Input(Widget):\n    \"\"\"\n    input 标签的父类\n    Base class for all <input> widgets (except type=   'checkbox' and\n    type='radio', which are special).\n    \"\"\"\n    子类定义\n    input_type = None # Subclasses must define this.\n\n    def _format_value(self, value):\n        if self.is_localized:\n            return formats.localize_input(value)\n        return value\n\n    def render(self, name, value, attrs=None):\n        if value is None:\n            value = ''\n\n        final_attrs = self.build_attrs(attrs, type=self.input_type, name=name)\n\n        if value != '':\n            # Only add the 'value' attribute if a value is non-empty.\n            final_attrs['value'] = force_text(self._format_value(value))\n        return format_html('<input{0} />', flatatt(final_attrs)) flatatt 能把 final_attrs 内的所有属性加入到 input 标签中\n\n\nclass TextInput(Input):\n    input_type = 'text'\n\n    def __init__(self, attrs=None):\n        if attrs is not None:\n            self.input_type = attrs.pop('type', self.input_type)\n        super(TextInput, self).__init__(attrs)\n\n\nclass PasswordInput(TextInput):\n    input_type = 'password'\n\n    def __init__(self, attrs=None, render_value=False):\n        super(PasswordInput, self).__init__(attrs)\n        self.render_value = render_value\n\n    def render(self, name, value, attrs=None):\n        if not self.render_value: value=None\n        return super(PasswordInput, self).render(name, value, attrs)\n\nclass HiddenInput(Input):\n    input_type = 'hidden'\n    is_hidden = True\n\nclass MultipleHiddenInput(HiddenInput):\n    \"\"\"\n    A widget that handles <input type=\"hidden\"> for fields that have a list\n    of values.\n    \"\"\"\n    def __init__(self, attrs=None, choices=()):\n        super(MultipleHiddenInput, self).__init__(attrs)\n        # choices can be any iterable\n        self.choices = choices\n\n    def render(self, name, value, attrs=None, choices=()):\n        if value is None: value = []\n        final_attrs = self.build_attrs(attrs, type=self.input_type, name=name)\n        id_ = final_attrs.get('id', None)\n        inputs = []\n        for i, v in enumerate(value):\n            input_attrs = dict(value=force_text(v), **final_attrs)\n            if id_:\n                # An ID attribute was given. Add a numeric index as a suffix\n                # so that the inputs don't all have the same ID attribute.\n                input_attrs['id'] = '%s_%s' % (id_, i)\n            inputs.append(format_html('<input{0} />', flatatt(input_attrs)))\n        return mark_safe('\\n'.join(inputs))\n\n    def value_from_datadict(self, data, files, name):\n        if isinstance(data, (MultiValueDict, MergeDict)):\n            return data.getlist(name)\n        return data.get(name, None)\n\nclass FileInput(Input):\n    input_type = 'file'\n    needs_multipart_form = True\n\n    def render(self, name, value, attrs=None):\n        return super(FileInput, self).render(name, None, attrs=attrs)\n\n    def value_from_datadict(self, data, files, name):\n        \"File widgets take data from FILES, not POST\"\n        return files.get(name, None)\n\n    def _has_changed(self, initial, data):\n        if data is None:\n            return False\n        return True\n\nFILE_INPUT_CONTRADICTION = object()\n\nclass ClearableFileInput(FileInput):\n    initial_text = ugettext_lazy('Currently')\n    input_text = ugettext_lazy('Change')\n    clear_checkbox_label = ugettext_lazy('Clear')\n\n    template_with_initial = '%(initial_text)s: %(initial)s %(clear_template)s<br />%(input_text)s: %(input)s'\n\n    template_with_clear = '%(clear)s <label for=\"%(clear_checkbox_id)s\">%(clear_checkbox_label)s</label>'\n\n    def clear_checkbox_name(self, name):\n        \"\"\"\n        Given the name of the file input, return the name of the clear checkbox\n        input.\n        \"\"\"\n        return name + '-clear'\n\n    def clear_checkbox_id(self, name):\n        \"\"\"\n        Given the name of the clear checkbox input, return the HTML id for it.\n        \"\"\"\n        return name + '_id'\n\n    def render(self, name, value, attrs=None):\n        substitutions = {\n            'initial_text': self.initial_text,\n            'input_text': self.input_text,\n            'clear_template': '',\n            'clear_checkbox_label': self.clear_checkbox_label,\n        }\n        template = '%(input)s'\n        substitutions['input'] = super(ClearableFileInput, self).render(name, value, attrs)\n\n        if value and hasattr(value, \"url\"):\n            template = self.template_with_initial\n            substitutions['initial'] = format_html('<a href=\"{0}\">{1}</a>',\n                                                   value.url,\n                                                   force_text(value))\n            if not self.is_required:\n                checkbox_name = self.clear_checkbox_name(name)\n                checkbox_id = self.clear_checkbox_id(checkbox_name)\n                substitutions['clear_checkbox_name'] = conditional_escape(checkbox_name)\n                substitutions['clear_checkbox_id'] = conditional_escape(checkbox_id)\n                substitutions['clear'] = CheckboxInput().render(checkbox_name, False, attrs={'id': checkbox_id})\n                substitutions['clear_template'] = self.template_with_clear % substitutions\n\n        return mark_safe(template % substitutions)\n\n    def value_from_datadict(self, data, files, name):\n        upload = super(ClearableFileInput, self).value_from_datadict(data, files, name)\n        if not self.is_required and CheckboxInput().value_from_datadict(\n            data, files, self.clear_checkbox_name(name)):\n            if upload:\n                # If the user contradicts themselves (uploads a new file AND\n                # checks the \"clear\" checkbox), we return a unique marker\n                # object that FileField will turn into a ValidationError.\n                return FILE_INPUT_CONTRADICTION\n            # False signals to clear any existing value, as opposed to just None\n            return False\n        return upload\n\nclass Textarea(Widget):\n    def __init__(self, attrs=None):\n        # The 'rows' and 'cols' attributes are required for HTML correctness.\n        default_attrs = {'cols': '40', 'rows': '10'} 默认大小属性\n\n        if attrs:\n            default_attrs.update(attrs)\n\n        super(Textarea, self).__init__(default_attrs)\n\n    def render(self, name, value, attrs=None):\n        if value is None: value = ''\n        final_attrs = self.build_attrs(attrs, name=name)\n        return format_html('<textarea{0}>\\r\\n{1}</textarea>',\n                           flatatt(final_attrs),\n                           force_text(value))\n\n\nclass DateInput(TextInput):\n    def __init__(self, attrs=None, format=None):\n        super(DateInput, self).__init__(attrs)\n        if format:\n            self.format = format\n            self.manual_format = True\n        else:\n            self.format = formats.get_format('DATE_INPUT_FORMATS')[0]\n            self.manual_format = False\n\n    def _format_value(self, value):\n        if self.is_localized and not self.manual_format:\n            return formats.localize_input(value)\n        elif hasattr(value, 'strftime'):\n            value = datetime_safe.new_date(value)\n            return value.strftime(self.format)\n        return value\n\n    def _has_changed(self, initial, data):\n        # If our field has show_hidden_initial=True, initial will be a string\n        # formatted by HiddenInput using formats.localize_input, which is not\n        # necessarily the format used for this widget. Attempt to convert it.\n        try:\n            input_format = formats.get_format('DATE_INPUT_FORMATS')[0]\n            initial = datetime.datetime.strptime(initial, input_format).date()\n        except (TypeError, ValueError):\n            pass\n        return super(DateInput, self)._has_changed(self._format_value(initial), data)\n\n\nclass DateTimeInput(TextInput):\n    def __init__(self, attrs=None, format=None):\n        super(DateTimeInput, self).__init__(attrs)\n        if format:\n            self.format = format\n            self.manual_format = True\n        else:\n            self.format = formats.get_format('DATETIME_INPUT_FORMATS')[0]\n            self.manual_format = False\n\n    def _format_value(self, value):\n        if self.is_localized and not self.manual_format:\n            return formats.localize_input(value)\n        elif hasattr(value, 'strftime'):\n            value = datetime_safe.new_datetime(value)\n            return value.strftime(self.format)\n        return value\n\n    def _has_changed(self, initial, data):\n        # If our field has show_hidden_initial=True, initial will be a string\n        # formatted by HiddenInput using formats.localize_input, which is not\n        # necessarily the format used for this widget. Attempt to convert it.\n        try:\n            input_format = formats.get_format('DATETIME_INPUT_FORMATS')[0]\n            initial = datetime.datetime.strptime(initial, input_format)\n        except (TypeError, ValueError):\n            pass\n        return super(DateTimeInput, self)._has_changed(self._format_value(initial), data)\n\n\nclass TimeInput(TextInput):\n    def __init__(self, attrs=None, format=None):\n        super(TimeInput, self).__init__(attrs)\n        if format:\n            self.format = format\n            self.manual_format = True\n        else:\n            self.format = formats.get_format('TIME_INPUT_FORMATS')[0]\n            self.manual_format = False\n\n    def _format_value(self, value):\n        if self.is_localized and not self.manual_format:\n            return formats.localize_input(value)\n        elif hasattr(value, 'strftime'):\n            return value.strftime(self.format)\n        return value\n\n    def _has_changed(self, initial, data):\n        # If our field has show_hidden_initial=True, initial will be a string\n        # formatted by HiddenInput using formats.localize_input, which is not\n        # necessarily the format used for this  widget. Attempt to convert it.\n        try:\n            input_format = formats.get_format('TIME_INPUT_FORMATS')[0]\n            initial = datetime.datetime.strptime(initial, input_format).time()\n        except (TypeError, ValueError):\n            pass\n        return super(TimeInput, self)._has_changed(self._format_value(initial), data)\n\n\n# Defined at module level so that CheckboxInput is picklable (#17976)\ndef boolean_check(v):\n    return not (v is False or v is None or v == '')\n\n\nclass CheckboxInput(Widget):\n    def __init__(self, attrs=None, check_test=None):\n        super(CheckboxInput, self).__init__(attrs)\n        # check_test is a callable that takes a value and returns True\n        # if the checkbox should be checked for that value.\n        self.check_test = boolean_check if check_test is None else check_test\n\n    def render(self, name, value, attrs=None):\n        final_attrs = self.build_attrs(attrs, type='checkbox', name=name)\n        if self.check_test(value):\n            final_attrs['checked'] = 'checked'\n        if not (value is True or value is False or value is None or value == ''):\n            # Only add the 'value' attribute if a value is non-empty.\n            final_attrs['value'] = force_text(value)\n        return format_html('<input{0} />', flatatt(final_attrs))\n\n    def value_from_datadict(self, data, files, name):\n        if name not in data:\n            # A missing value means False because HTML form submission does not\n            # send results for unselected checkboxes.\n            return False\n        value = data.get(name)\n        # Translate true and false strings to boolean values.\n        values = {'true': True, 'false': False}\n        if isinstance(value, six.string_types):\n            value = values.get(value.lower(), value)\n        return bool(value)\n\n    def _has_changed(self, initial, data):\n        # Sometimes data or initial could be None or '' which should be the\n        # same thing as False.\n        if initial == 'False':\n            # show_hidden_initial may have transformed False to 'False'\n            initial = False\n        return bool(initial) != bool(data)\n\nclass Select(Widget):\n    allow_multiple_selected = False\n\n    def __init__(self, attrs=None, choices=()):\n        super(Select, self).__init__(attrs)\n        # choices can be any iterable, but we may need to render this widget\n        # multiple times. Thus, collapse it into a list so it can be consumed\n        # more than once.\n        self.choices = list(choices)\n\n    def render(self, name, value, attrs=None, choices=()):\n        if value is None: value = ''\n        final_attrs = self.build_attrs(attrs, name=name)\n        output = [format_html('<select{0}>', flatatt(final_attrs))]\n        options = self.render_options(choices, [value])\n        if options:\n            output.append(options)\n        output.append('</select>')\n        return mark_safe('\\n'.join(output))\n\n    def render_option(self, selected_choices, option_value, option_label):\n        option_value = force_text(option_value)\n        if option_value in selected_choices:\n            selected_html = mark_safe(' selected=\"selected\"')\n            if not self.allow_multiple_selected:\n                # Only allow for a single selection.\n                selected_choices.remove(option_value)\n        else:\n            selected_html = ''\n        return format_html('<option value=\"{0}\"{1}>{2}</option>',\n                           option_value,\n                           selected_html,\n                           force_text(option_label))\n\n    def render_options(self, choices, selected_choices):\n        # Normalize to strings.\n        selected_choices = set(force_text(v) for v in selected_choices)\n        output = []\n        for option_value, option_label in chain(self.choices, choices):\n            if isinstance(option_label, (list, tuple)):\n                output.append(format_html('<optgroup label=\"{0}\">', force_text(option_value)))\n                for option in option_label:\n                    output.append(self.render_option(selected_choices, *option))\n                output.append('</optgroup>')\n            else:\n                output.append(self.render_option(selected_choices, option_value, option_label))\n        return '\\n'.join(output)\n\nclass NullBooleanSelect(Select):\n    \"\"\"\n    A Select Widget intended to be used with NullBooleanField.\n    \"\"\"\n    def __init__(self, attrs=None):\n        choices = (('1', ugettext_lazy('Unknown')),\n                   ('2', ugettext_lazy('Yes')),\n                   ('3', ugettext_lazy('No')))\n        super(NullBooleanSelect, self).__init__(attrs, choices)\n\n    def render(self, name, value, attrs=None, choices=()):\n        try:\n            value = {True: '2', False: '3', '2': '2', '3': '3'}[value]\n        except KeyError:\n            value = '1'\n        return super(NullBooleanSelect, self).render(name, value, attrs, choices)\n\n    def value_from_datadict(self, data, files, name):\n        value = data.get(name, None)\n        return {'2': True,\n                True: True,\n                'True': True,\n                '3': False,\n                'False': False,\n                False: False}.get(value, None)\n\n    def _has_changed(self, initial, data):\n        # For a NullBooleanSelect, None (unknown) and False (No)\n        # are not the same\n        if initial is not None:\n            initial = bool(initial)\n        if data is not None:\n            data = bool(data)\n        return initial != data\n\nclass SelectMultiple(Select):\n    allow_multiple_selected = True\n\n    def render(self, name, value, attrs=None, choices=()):\n        if value is None: value = []\n        final_attrs = self.build_attrs(attrs, name=name)\n        output = [format_html('<select multiple=\"multiple\"{0}>', flatatt(final_attrs))]\n        options = self.render_options(choices, value)\n        if options:\n            output.append(options)\n        output.append('</select>')\n        return mark_safe('\\n'.join(output))\n\n    def value_from_datadict(self, data, files, name):\n        if isinstance(data, (MultiValueDict, MergeDict)):\n            return data.getlist(name)\n        return data.get(name, None)\n\n    def _has_changed(self, initial, data):\n        if initial is None:\n            initial = []\n        if data is None:\n            data = []\n        if len(initial) != len(data):\n            return True\n        initial_set = set([force_text(value) for value in initial])\n        data_set = set([force_text(value) for value in data])\n        return data_set != initial_set\n\n@python_2_unicode_compatible\nclass RadioInput(SubWidget):\n    \"\"\"\n    An object used by RadioFieldRenderer that represents a single\n    <input type='radio'>.\n    \"\"\"\n\n    def __init__(self, name, value, attrs, choice, index):\n        self.name, self.value = name, value\n        self.attrs = attrs\n        self.choice_value = force_text(choice[0])\n        self.choice_label = force_text(choice[1])\n        self.index = index\n\n    def __str__(self):\n        return self.render()\n\n    def render(self, name=None, value=None, attrs=None, choices=()):\n        name = name or self.name\n        value = value or self.value\n        attrs = attrs or self.attrs\n        if 'id' in self.attrs:\n            label_for = format_html(' for=\"{0}_{1}\"', self.attrs['id'], self.index)\n        else:\n            label_for = ''\n        choice_label = force_text(self.choice_label)\n        return format_html('<label{0}>{1} {2}</label>', label_for, self.tag(), choice_label)\n\n    def is_checked(self):\n        return self.value == self.choice_value\n\n    def tag(self):\n        if 'id' in self.attrs:\n            self.attrs['id'] = '%s_%s' % (self.attrs['id'], self.index)\n        final_attrs = dict(self.attrs, type='radio', name=self.name, value=self.choice_value)\n        if self.is_checked():\n            final_attrs['checked'] = 'checked'\n        return format_html('<input{0} />', flatatt(final_attrs))\n\n@python_2_unicode_compatible\nclass RadioFieldRenderer(object):\n    \"\"\"\n    An object used by RadioSelect to enable customization of radio widgets.\n    \"\"\"\n\n    def __init__(self, name, value, attrs, choices):\n        self.name, self.value, self.attrs = name, value, attrs\n        self.choices = choices\n\n    def __iter__(self):\n        for i, choice in enumerate(self.choices):\n            yield RadioInput(self.name, self.value, self.attrs.copy(), choice, i)\n\n    def __getitem__(self, idx):\n        choice = self.choices[idx] # Let the IndexError propogate\n        return RadioInput(self.name, self.value, self.attrs.copy(), choice, idx)\n\n    def __str__(self):\n        return self.render()\n\n    def render(self):\n        \"\"\"Outputs a <ul> for this set of radio fields.\"\"\"\n        return format_html('<ul>\\n{0}\\n</ul>',\n                           format_html_join('\\n', '<li>{0}</li>',\n                                            [(force_text(w),) for w in self]\n                                            ))\n\nclass RadioSelect(Select):\n    renderer = RadioFieldRenderer\n\n    def __init__(self, *args, **kwargs):\n        # Override the default renderer if we were passed one.\n        renderer = kwargs.pop('renderer', None)\n        if renderer:\n            self.renderer = renderer\n        super(RadioSelect, self).__init__(*args, **kwargs)\n\n    def subwidgets(self, name, value, attrs=None, choices=()):\n        for widget in self.get_renderer(name, value, attrs, choices):\n            yield widget\n\n    def get_renderer(self, name, value, attrs=None, choices=()):\n        \"\"\"Returns an instance of the renderer.\"\"\"\n        if value is None: value = ''\n        str_value = force_text(value) # Normalize to string.\n        final_attrs = self.build_attrs(attrs)\n        choices = list(chain(self.choices, choices))\n        return self.renderer(name, str_value, final_attrs, choices)\n\n    def render(self, name, value, attrs=None, choices=()):\n        return self.get_renderer(name, value, attrs, choices).render()\n\n    def id_for_label(self, id_):\n        # RadioSelect is represented by multiple <input type=\"radio\"> fields,\n        # each of which has a distinct ID. The IDs are made distinct by a \"_X\"\n        # suffix, where X is the zero-based index of the radio field. Thus,\n        # the label for a RadioSelect should reference the first one ('_0').\n        if id_:\n            id_ += '_0'\n        return id_\n\nclass CheckboxSelectMultiple(SelectMultiple):\n    def render(self, name, value, attrs=None, choices=()):\n        if value is None: value = []\n        has_id = attrs and 'id' in attrs\n        final_attrs = self.build_attrs(attrs, name=name)\n        output = ['<ul>']\n        # Normalize to strings\n        str_values = set([force_text(v) for v in value])\n        for i, (option_value, option_label) in enumerate(chain(self.choices, choices)):\n            # If an ID attribute was given, add a numeric index as a suffix,\n            # so that the checkboxes don't all have the same ID attribute.\n            if has_id:\n                final_attrs = dict(final_attrs, id='%s_%s' % (attrs['id'], i))\n                label_for = format_html(' for=\"{0}\"', final_attrs['id'])\n            else:\n                label_for = ''\n\n            cb = CheckboxInput(final_attrs, check_test=lambda value: value in str_values)\n            option_value = force_text(option_value)\n            rendered_cb = cb.render(name, option_value)\n            option_label = force_text(option_label)\n            output.append(format_html('<li><label{0}>{1} {2}</label></li>',\n                                      label_for, rendered_cb, option_label))\n        output.append('</ul>')\n        return mark_safe('\\n'.join(output))\n\n    def id_for_label(self, id_):\n        # See the comment for RadioSelect.id_for_label()\n        if id_:\n            id_ += '_0'\n        return id_\n\nclass MultiWidget(Widget):\n    \"\"\"\n    A widget that is composed of multiple widgets.\n\n    Its render() method is different than other widgets', because it has to\n    figure out how to split a single value for display in multiple widgets.\n    The ``value`` argument can be one of two things:\n\n        * A list.\n        * A normal value (e.g., a string) that has been \"compressed\" from\n          a list of values.\n\n    In the second case -- i.e., if the value is NOT a list -- render() will\n    first \"decompress\" the value into a list before rendering it. It does so by\n    calling the decompress() method, which MultiWidget subclasses must\n    implement. This method takes a single \"compressed\" value and returns a\n    list.\n\n    When render() does its HTML rendering, each value in the list is rendered\n    with the corresponding widget -- the first value is rendered in the first\n    widget, the second value is rendered in the second widget, etc.\n\n    Subclasses may implement format_output(), which takes the list of rendered\n    widgets and returns a string of HTML that formats them any way you'd like.\n\n    You'll probably want to use this class with MultiValueField.\n    \"\"\"\n    def __init__(self, widgets, attrs=None):\n        self.widgets = [isinstance(w, type) and w() or w for w in widgets]\n        super(MultiWidget, self).__init__(attrs)\n\n    def render(self, name, value, attrs=None):\n        if self.is_localized:\n            for widget in self.widgets:\n                widget.is_localized = self.is_localized\n        # value is a list of values, each corresponding to a widget\n        # in self.widgets.\n        if not isinstance(value, list):\n            value = self.decompress(value)\n        output = []\n        final_attrs = self.build_attrs(attrs)\n        id_ = final_attrs.get('id', None)\n        for i, widget in enumerate(self.widgets):\n            try:\n                widget_value = value[i]\n            except IndexError:\n                widget_value = None\n            if id_:\n                final_attrs = dict(final_attrs, id='%s_%s' % (id_, i))\n            output.append(widget.render(name + '_%s' % i, widget_value, final_attrs))\n        return mark_safe(self.format_output(output))\n\n    def id_for_label(self, id_):\n        # See the comment for RadioSelect.id_for_label()\n        if id_:\n            id_ += '_0'\n        return id_\n\n    def value_from_datadict(self, data, files, name):\n        return [widget.value_from_datadict(data, files, name + '_%s' % i) for i, widget in enumerate(self.widgets)]\n\n    def _has_changed(self, initial, data):\n        if initial is None:\n            initial = ['' for x in range(0, len(data))]\n        else:\n            if not isinstance(initial, list):\n                initial = self.decompress(initial)\n        for widget, initial, data in zip(self.widgets, initial, data):\n            if widget._has_changed(initial, data):\n                return True\n        return False\n\n    def format_output(self, rendered_widgets):\n        \"\"\"\n        Given a list of rendered widgets (as strings), returns a Unicode string\n        representing the HTML for the whole lot.\n\n        This hook allows you to format the HTML design of the widgets, if\n        needed.\n        \"\"\"\n        return ''.join(rendered_widgets)\n\n    def decompress(self, value):\n        \"\"\"\n        Returns a list of decompressed values for the given compressed value.\n        The given value can be assumed to be valid, but not necessarily\n        non-empty.\n        \"\"\"\n        raise NotImplementedError('Subclasses must implement this method.')\n\n    def _get_media(self):\n        \"Media for a multiwidget is the combination of all media of the subwidgets\"\n        media = Media()\n        for w in self.widgets:\n            media = media + w.media\n        return media\n    media = property(_get_media)\n\n    def __deepcopy__(self, memo):\n        obj = super(MultiWidget, self).__deepcopy__(memo)\n        obj.widgets = copy.deepcopy(self.widgets)\n        return obj\n\nclass SplitDateTimeWidget(MultiWidget):\n    \"\"\"\n    A Widget that splits datetime input into two <input type=\"text\"> boxes.\n    \"\"\"\n\n    def __init__(self, attrs=None, date_format=None, time_format=None):\n        widgets = (DateInput(attrs=attrs, format=date_format),\n                   TimeInput(attrs=attrs, format=time_format))\n        super(SplitDateTimeWidget, self).__init__(widgets, attrs)\n\n    def decompress(self, value):\n        if value:\n            value = to_current_timezone(value)\n            return [value.date(), value.time().replace(microsecond=0)]\n        return [None, None]\n\nclass SplitHiddenDateTimeWidget(SplitDateTimeWidget):\n    \"\"\"\n    A Widget that splits datetime input into two <input type=\"hidden\"> inputs.\n    \"\"\"\n    is_hidden = True\n\n    def __init__(self, attrs=None, date_format=None, time_format=None):\n        super(SplitHiddenDateTimeWidget, self).__init__(attrs, date_format, time_format)\n        for widget in self.widgets:\n            widget.input_type = 'hidden'\n            widget.is_hidden = True\n"
  },
  {
    "path": "Django-1.5.1/django/http/__init__.py",
    "content": "from django.http.cookie import SimpleCookie, parse_cookie\nfrom django.http.request import (HttpRequest, QueryDict, UnreadablePostError,\n    build_request_repr)\nfrom django.http.response import (HttpResponse, StreamingHttpResponse,\n    CompatibleStreamingHttpResponse, HttpResponsePermanentRedirect,\n    HttpResponseRedirect, HttpResponseNotModified, HttpResponseBadRequest,\n    HttpResponseForbidden, HttpResponseNotFound, HttpResponseNotAllowed,\n    HttpResponseGone, HttpResponseServerError, Http404, BadHeaderError)\nfrom django.http.utils import (fix_location_header, conditional_content_removal,\n    fix_IE_for_attach, fix_IE_for_vary)\n"
  },
  {
    "path": "Django-1.5.1/django/http/cookie.py",
    "content": "from __future__ import absolute_import, unicode_literals\n\nfrom django.utils.encoding import force_str\nfrom django.utils import six\nfrom django.utils.six.moves import http_cookies\n\n\n# Some versions of Python 2.7 and later won't need this encoding bug fix:\n_cookie_encodes_correctly = http_cookies.SimpleCookie().value_encode(';') == (';', '\"\\\\073\"')\n# See ticket #13007, http://bugs.python.org/issue2193 and http://trac.edgewall.org/ticket/2256\n_tc = http_cookies.SimpleCookie()\ntry:\n    _tc.load(str('foo:bar=1'))\n    _cookie_allows_colon_in_names = True\nexcept http_cookies.CookieError:\n    _cookie_allows_colon_in_names = False\n\nif _cookie_encodes_correctly and _cookie_allows_colon_in_names:\n    SimpleCookie = http_cookies.SimpleCookie\nelse:\n    Morsel = http_cookies.Morsel\n\n    兼容各种浏览器的 cookie 处理, 因为可能每个浏览器对 cookie 的规定不同\n    class SimpleCookie(http_cookies.SimpleCookie):\n        if not _cookie_encodes_correctly:\n            def value_encode(self, val):\n                # Some browsers do not support quoted-string from RFC 2109,\n                # including some versions of Safari and Internet Explorer.\n                # These browsers split on ';', and some versions of Safari\n                # are known to split on ', '. Therefore, we encode ';' and ','\n\n                # SimpleCookie already does the hard work of encoding and decoding.\n                # It uses octal sequences like '\\\\012' for newline etc.\n                # and non-ASCII chars. We just make use of this mechanism, to\n                # avoid introducing two encoding schemes which would be confusing\n                # and especially awkward for javascript.\n\n                # NB, contrary to Python docs, value_encode returns a tuple containing\n                # (real val, encoded_val)\n                val, encoded = super(SimpleCookie, self).value_encode(val)\n\n                encoded = encoded.replace(\";\", \"\\\\073\").replace(\",\",\"\\\\054\")\n                # If encoded now contains any quoted chars, we need double quotes\n                # around the whole string.\n                if \"\\\\\" in encoded and not encoded.startswith('\"'):\n                    encoded = '\"' + encoded + '\"'\n\n                return val, encoded\n\n        if not _cookie_allows_colon_in_names:\n            def load(self, rawdata):\n                self.bad_cookies = set()\n                if not six.PY3 and isinstance(rawdata, six.text_type):\n                    rawdata = force_str(rawdata)\n                super(SimpleCookie, self).load(rawdata)\n                for key in self.bad_cookies:\n                    del self[key]\n\n            # override private __set() method:\n            # (needed for using our Morsel, and for laxness with CookieError\n            def _BaseCookie__set(self, key, real_value, coded_value):\n                key = force_str(key)\n                try:\n                    M = self.get(key, Morsel())\n                    M.set(key, real_value, coded_value)\n                    dict.__setitem__(self, key, M)\n                except http_cookies.CookieError:\n                    self.bad_cookies.add(key)\n                    dict.__setitem__(self, key, http_cookies.Morsel())\n\n解析 cookie\ndef parse_cookie(cookie):\n    if cookie == '':\n        return {}\n    if not isinstance(cookie, http_cookies.BaseCookie):\n        try:\n            c = SimpleCookie()\n            c.load(cookie)\n        except http_cookies.CookieError:\n            # Invalid cookie\n            return {}\n    else:\n        c = cookie\n    cookiedict = {}\n    for key in c.keys():\n        cookiedict[key] = c.get(key).value\n    return cookiedict\n"
  },
  {
    "path": "Django-1.5.1/django/http/multipartparser.py",
    "content": "\"\"\"\nMulti-part parsing for file uploads.\n\nExposes one class, ``MultiPartParser``, which feeds chunks of uploaded data to\nfile upload handlers for processing.\n\"\"\"\nfrom __future__ import unicode_literals\n\nimport base64\nimport cgi\n\nfrom django.conf import settings\nfrom django.core.exceptions import SuspiciousOperation\nfrom django.utils.datastructures import MultiValueDict\nfrom django.utils.encoding import force_text\nfrom django.utils import six\nfrom django.utils.text import unescape_entities\n\nfrom django.core.files.uploadhandler import StopUpload, SkipFile, StopFutureHandlers 这里是处理文件上传的方法\n\n__all__ = ('MultiPartParser', 'MultiPartParserError', 'InputStreamExhausted') #expose \n\nclass MultiPartParserError(Exception):\n    pass\n\nclass InputStreamExhausted(Exception):\n    \"\"\"\n    No more reads are allowed from this device.\n    \"\"\"\n    pass\n\nRAW = \"raw\"\nFILE = \"file\"\nFIELD = \"field\"\n\nclass MultiPartParser(object):\n    \"\"\"\n    A rfc2388 multipart/form-data parser.\n\n    ``MultiValueDict.parse()`` reads the input stream in ``chunk_size`` chunks\n    and returns a tuple of ``(MultiValueDict(POST), MultiValueDict(FILES))``.\n    \"\"\"\n    def __init__(self, META, input_data, upload_handlers, encoding=None):\n        \"\"\"\n        Initialize the MultiPartParser object.\n\n        :META:\n            The standard ``META`` dictionary in Django request objects. 字典\n        :input_data:\n            The raw post data, as a file-like object. post 数据\n        :upload_handler:\n            An UploadHandler instance that performs operations on the uploaded\n            data.\n        :encoding:\n            The encoding with which to treat the incoming data.\n        \"\"\"\n\n        #\n        # Content-Type should containt multipart and the boundary information.\n        #\n\n        content_type = META.get('HTTP_CONTENT_TYPE', META.get('CONTENT_TYPE', ''))\n        if not content_type.startswith('multipart/'):\n            raise MultiPartParserError('Invalid Content-Type: %s' % content_type) # invalid content-type multipart 是无效的\n\n        # Parse the header to get the boundary to split the parts. boundary 界限, 将数据分成就给部分\n        # parse_header  可以分析 HTTP 头的某一个部位\n        ctypes, opts = parse_header(content_type.encode('ascii')) \n        boundary = opts.get('boundary')\n        if not boundary or not cgi.valid_boundary(boundary):\n            raise MultiPartParserError('Invalid boundary in multipart: %s' % boundary)\n\n        # Content-Length should contain the length of the body we are about\n        # to receive.\n        try:\n            content_length = int(META.get('HTTP_CONTENT_LENGTH', META.get('CONTENT_LENGTH', 0)))\n        except (ValueError, TypeError):\n            content_length = 0\n\n        if content_length < 0:\n            # This means we shouldn't continue...raise an error.\n            raise MultiPartParserError(\"Invalid content length: %r\" % content_length)\n\n        if isinstance(boundary, six.text_type): # 转化为 ascii\n            boundary = boundary.encode('ascii')\n\n        self._boundary = boundary\n        self._input_data = input_data\n\n        # For compatibility with low-level network APIs (with 32-bit integers),\n        # the chunk size should be < 2^31, but still divisible by 4.\n        possible_sizes = [x.chunk_size for x in upload_handlers if x.chunk_size]\n        self._chunk_size = min([2**31-4] + possible_sizes)\n\n        self._meta = META #正常赋值\n        self._encoding = encoding or settings.DEFAULT_CHARSET# 如果没有,设定 setting 中的值\n        self._content_length = content_length   # 上面获取\n        self._upload_handlers = upload_handlers # 上面获取\n\n    def parse(self):\n        \"\"\"\n        Parse the POST data and break it into a FILES MultiValueDict and a POST\n        MultiValueDict.\n\n        Returns a tuple containing the POST and FILES dictionary, respectively.\n        \"\"\"\n        # We have to import QueryDict down here to avoid a circular import.\n        from django.http import QueryDict\n\n        encoding = self._encoding\n        handlers = self._upload_handlers\n\n        # HTTP spec says that Content-Length >= 0 is valid\n        # handling content-length == 0 before continuing\n        if self._content_length == 0:\n            return QueryDict('', encoding=self._encoding), MultiValueDict()\n\n        # See if the handler will want to take care of the parsing.\n        # This allows overriding everything if somebody wants it.\n        for handler in handlers:\n            result = handler.handle_raw_input(self._input_data,\n                                              self._meta,\n                                              self._content_length,\n                                              self._boundary,\n                                              encoding)\n            if result is not None:\n                return result[0], result[1] # 返回\n\n        # Create the data structures to be used later.\n        self._post = QueryDict('', mutable=True)\n        self._files = MultiValueDict()\n\n        # Instantiate the parser and stream:\n        stream = LazyStream(ChunkIter(self._input_data, self._chunk_size)) # 未知\n\n        # Whether or not to signal a file-completion at the beginning of the loop.\n        old_field_name = None\n        counters = [0] * len(handlers)\n\n        try:\n            for item_type, meta_data, field_stream in Parser(stream, self._boundary):\n                if old_field_name:\n                    # We run this at the beginning of the next loop\n                    # since we cannot be sure a file is complete until\n                    # we hit the next boundary/part of the multipart content.\n                    self.handle_file_complete(old_field_name, counters) 这里更新了 files\n                    old_field_name = None\n\n                try:\n                    disposition = meta_data['content-disposition'][1]\n                    field_name = disposition['name'].strip()\n                except (KeyError, IndexError, AttributeError):\n                    continue\n\n                transfer_encoding = meta_data.get('content-transfer-encoding')\n                if transfer_encoding is not None:\n                    transfer_encoding = transfer_encoding[0].strip()\n\n                field_name = force_text(field_name, encoding, errors='replace') 不懂\n\n                if item_type == FIELD:\n                    # This is a post field,  post 域 we can just set it in the post\n                    if transfer_encoding == 'base64':\n                        raw_data = field_stream.read() 开始读\n\n                        try:\n                            data = str(raw_data).decode('base64')\n                        except:\n                            data = raw_data \n\n                    else:\n                        data = field_stream.read()\n\n                    self._post.appendlist(field_name,\n                                          force_text(data, encoding, errors='replace'))\n\n                elif item_type == FILE:\n                    # This is a file, use the handler... 是一个文件\n                    file_name = disposition.get('filename')\n\n                    if not file_name:\n                        continue\n\n                    file_name = force_text(file_name, encoding, errors='replace') 不懂\n                    file_name = self.IE_sanitize(unescape_entities(file_name)) 跟 IE 有关\n\n                    content_type = meta_data.get('content-type', ('',))[0].strip()\n                    try:\n                        charset = meta_data.get('content-type', (0, {}))[1].get('charset', None)\n                    except:\n                        charset = None\n\n                    try:\n                        content_length = int(meta_data.get('content-length')[0])\n                    except (IndexError, TypeError, ValueError):\n                        content_length = None\n\n                    counters = [0] * len(handlers)\n                    try:\n                        for handler in handlers:\n                            try:\n                                handler.new_file(field_name, file_name,\n                                                 content_type, content_length,\n                                                 charset)\n                            except StopFutureHandlers:\n                                break\n\n                        for chunk in field_stream:\n                            if transfer_encoding == 'base64':\n                                # We only special-case base64 transfer encoding\n                                # We should always read base64 streams by multiple of 4\n                                over_bytes = len(chunk) % 4\n                                if over_bytes:\n                                    over_chunk = field_stream.read(4 - over_bytes)\n                                    chunk += over_chunk\n\n                                try:\n                                    chunk = base64.b64decode(chunk)\n                                except Exception as e:\n                                    # Since this is only a chunk, any error is an unfixable error.\n                                    raise MultiPartParserError(\"Could not decode base64 data: %r\" % e)\n\n                            for i, handler in enumerate(handlers):\n                                chunk_length = len(chunk)\n                                chunk = handler.receive_data_chunk(chunk,\n                                                                   counters[i])\n                                counters[i] += chunk_length\n                                if chunk is None:\n                                    # If the chunk received by the handler is None, then don't continue.\n                                    break\n\n                    except SkipFile:\n                        # Just use up the rest of this file...\n                        exhaust(field_stream)\n\n                    else:\n                        # Handle file upload completions on next iteration.\n                        old_field_name = field_name\n                else:\n                    # If this is neither a FIELD or a FILE, just exhaust the stream.\n                    exhaust(stream)\n        except StopUpload as e:\n            if not e.connection_reset:\n                exhaust(self._input_data)\n        else:\n            # Make sure that the request data is all fed\n            exhaust(self._input_data)\n\n        # Signal that the upload has completed.\n        for handler in handlers:\n            retval = handler.upload_complete()\n            if retval:\n                break\n\n        return self._post, self._files # 返回 post 数据和 file\n\n    处理文件的方法, 在这里会更新 _files\n    def handle_file_complete(self, old_field_name, counters):\n        \"\"\"\n        Handle all the signalling that takes place when a file is complete.\n        \"\"\"\n        for i, handler in enumerate(self._upload_handlers):\n            file_obj = handler.file_complete(counters[i])\n            if file_obj:\n                # If it returns a file object, then set the files dict.\n                self._files.appendlist(force_text(old_field_name,\n                                                     self._encoding,\n                                                     errors='replace'),\n                                       file_obj)\n                break\n\n    def IE_sanitize(self, filename):\n        \"\"\"Cleanup filename from Internet Explorer full paths.\"\"\" \n        return filename and filename[filename.rfind(\"\\\\\")+1:].strip() 可能只需要文件名,而不用其他的\n\n包装\nclass LazyStream(six.Iterator):\n    \"\"\"\n    The LazyStream wrapper allows one to get and \"unget\" bytes from a stream.\n\n    Given a producer object (an iterator that yields bytestrings), the\n    LazyStream object will support iteration, reading, and keeping a \"look-back\"\n    variable in case you need to \"unget\" some bytes.\n    \"\"\"\n    producer 就是 ChunkIter, ChunkIter 会依次读取数据块\n    def __init__(self, producer, length=None):\n        \"\"\"\n        Every LazyStream must have a producer when instantiated.\n\n        A producer is an iterable that returns a string each time it\n        is called.\n        \"\"\"\n        self._producer = producer\n        self._empty = False\n        self._leftover = b''\n        self.length = length\n        self.position = 0\n        self._remaining = length\n        self._unget_history = []\n\n    def tell(self): 返回文件指针的位置\n        return self.position\n\n    def read(self, size=None):\n        def parts():\n            remaining = (size is not None and [size] or [self._remaining])[0] 如果不为空,读取 size\n\n            # do the whole thing in one shot if no limit was provided.\n            if remaining is None:\n                yield b''.join(self)\n                return\n\n            # otherwise do some bookkeeping to return exactly enough\n            # of the stream and stashing any extra content we get from\n            # the producer\n            while remaining != 0:\n                assert remaining > 0, 'remaining bytes to read should never go negative'\n\n                chunk = next(self)\n\n                emitting = chunk[:remaining]\n                self.unget(chunk[remaining:])\n                remaining -= len(emitting)\n                yield emitting\n\n        out = b''.join(parts()) parts 是内部函数\n        return out\n\n    def __next__(self):\n        \"\"\"\n        Used when the exact number of bytes to read is unimportant.\n\n        This procedure just returns whatever is chunk is conveniently returned\n        from the iterator instead. Useful to avoid unnecessary bookkeeping if\n        performance is an issue.\n        \"\"\"\n        if self._leftover:\n            output = self._leftover\n            self._leftover = b''\n        else:\n            output = next(self._producer) 返回下一个数据块\n            self._unget_history = []\n        self.position += len(output)\n        return output\n\n    def close(self):\n        \"\"\"\n        Used to invalidate/disable this lazy stream.\n\n        Replaces the producer with an empty list. Any leftover bytes that have\n        already been read will still be reported upon read() and/or next().\n        \"\"\"\n        self._producer = []\n\n    def __iter__(self):\n        return self\n\n    def unget(self, bytes):\n        \"\"\"\n        又把数据吞回去\n        Places bytes back onto the front of the lazy stream.\n\n        Future calls to read() will return those bytes first. The\n        stream position and thus tell() will be rewound.\n        \"\"\"\n        if not bytes:\n            return\n        self._update_unget_history(len(bytes))\n        self.position -= len(bytes)\n        self._leftover = b''.join([bytes, self._leftover])\n\n    def _update_unget_history(self, num_bytes):\n        \"\"\"\n        Updates the unget history as a sanity check to see if we've pushed\n        back the same number of bytes in one chunk. If we keep ungetting the\n        same number of bytes many times (here, 50), we're mostly likely in an\n        infinite loop of some sort. This is usually caused by a\n        maliciously-malformed MIME request. 恶意\n        \"\"\"\n        self._unget_history = [num_bytes] + self._unget_history[:49]\n        number_equal = len([current_number for current_number in self._unget_history\n                            if current_number == num_bytes])\n\n        如果多次 unget 就要异常\n        if number_equal > 40:\n            raise SuspiciousOperation(\n                \"The multipart parser got stuck, which shouldn't happen with\"\n                \" normal uploaded files. Check for malicious upload activity;\"\n                \" if there is none, report this to the Django developers.\"\n            )\n\n数据块迭代\nclass ChunkIter(six.Iterator):\n    \"\"\"\n    An iterable that will yield chunks of data. Given a file-like object as the\n    constructor, this object will yield chunks of read operations from that\n    object.\n\n    yield chunks of read operations\n    \"\"\"\n    def __init__(self, flo, chunk_size=64 * 1024):\n        self.flo = flo\n        self.chunk_size = chunk_size\n\n        会读取下一个数据块\n    def __next__(self):\n        try:\n            data = self.flo.read(self.chunk_size)\n        except InputStreamExhausted:\n            raise StopIteration()\n        if data:\n            return data\n        else:\n            raise StopIteration()\n\n    def __iter__(self):\n        return self\n\n边界迭代,更高层的封装\nclass InterBoundaryIter(six.Iterator):\n    \"\"\"\n    A Producer that will iterate over boundaries. 边界迭代\n    \"\"\"\n    def __init__(self, stream, boundary):\n        self._stream = stream\n        self._boundary = boundary\n\n    def __iter__(self):\n        return self\n\n    def __next__(self):\n        try:\n            return LazyStream(BoundaryIter(self._stream, self._boundary))\n        except InputStreamExhausted:\n            raise StopIteration()\n\n对边界敏感\nclass BoundaryIter(six.Iterator):\n    \"\"\"\n    A Producer that is sensitive to boundaries. 对边界敏感\n\n    Will happily yield bytes until a boundary is found. Will yield the bytes\n    before the boundary, throw away the boundary bytes themselves, and push the\n    post-boundary bytes back on the stream. 返回边界前的 bytes\n\n    The future calls to next() after locating the boundary will raise a\n    StopIteration exception.\n    \"\"\"\n\n    def __init__(self, stream, boundary):\n        self._stream = stream\n        self._boundary = boundary\n        self._done = False\n\n        # rollback an additional six bytes because the format is like\n        # this: CRLF<boundary>[--CRLF] 换行\n        self._rollback = len(boundary) + 6\n\n        # Try to use mx fast string search if available. Otherwise\n        # use Python find. Wrap the latter for consistency.\n        unused_char = self._stream.read(1)\n\n        if not unused_char:\n            raise InputStreamExhausted()\n\n        self._stream.unget(unused_char)\n\n        try:\n            from mx.TextTools import FS\n            self._fs = FS(boundary).find\n        except ImportError:\n            self._fs = lambda data: data.find(boundary)\n\n    def __iter__(self):\n        return self\n\n    def __next__(self):\n        if self._done:\n            raise StopIteration()\n\n        stream = self._stream\n        rollback = self._rollback\n\n        bytes_read = 0\n        chunks = []\n\n        for bytes in stream:\n            bytes_read += len(bytes)\n            chunks.append(bytes)\n            if bytes_read > rollback:\n                break\n            if not bytes:\n                break\n        else:\n            self._done = True\n\n        if not chunks:\n            raise StopIteration()\n\n        chunk = b''.join(chunks)\n        boundary = self._find_boundary(chunk, len(chunk) < self._rollback)\n\n        if boundary:\n            end, next = boundary\n            stream.unget(chunk[next:])\n            self._done = True\n            return chunk[:end]\n        else:\n            # make sure we dont treat a partial boundary (and\n            # its separators) as data\n            if not chunk[:-rollback]:# and len(chunk) >= (len(self._boundary) + 6):\n                # There's nothing left, we should just return and mark as done.\n                self._done = True\n                return chunk\n            else:\n                stream.unget(chunk[-rollback:])\n                return chunk[:-rollback]\n\n    找到边界\n    def _find_boundary(self, data, eof = False):\n        \"\"\"\n        Finds a multipart boundary in data.\n\n        Should no boundry exist in the data None is returned instead. Otherwise\n        a tuple containing the indices of the following are returned:\n\n         * the end of current encapsulation\n         * the start of the next encapsulation\n        \"\"\"\n        index = self._fs(data)\n        if index < 0:\n            return None\n        else:\n            end = index\n            next = index + len(self._boundary)\n\n            # backup over CRLF 换行\n            last = max(0, end-1)\n            if data[last:last+1] == b'\\n':\n                end -= 1\n\n            last = max(0, end-1)\n            if data[last:last+1] == b'\\r':\n                end -= 1\n            return end, next\n\ndef exhaust(stream_or_iterable):\n    \"\"\" 抽干 stream 中的所有数据,一般在出错的时候用\n    Completely exhausts an iterator or stream.\n\n    Raise a MultiPartParserError if the argument is not a stream or an iterable.\n    \"\"\"\n    iterator = None\n    try:\n        iterator = iter(stream_or_iterable)\n    except TypeError:\n        iterator = ChunkIter(stream_or_iterable, 16384)\n\n    if iterator is None:\n        raise MultiPartParserError('multipartparser.exhaust() was passed a non-iterable or stream parameter')\n\n    for __ in iterator:\n        pass\n\ndef parse_boundary_stream(stream, max_header_size):\n    \"\"\"\n    Parses one and exactly one stream that encapsulates a boundary. 封装边界\n    \"\"\"\n    # Stream at beginning of header, look for end of header\n    # and parse it if found. The header must fit within one\n    # chunk.\n    读\n    chunk = stream.read(max_header_size)\n\n    # 'find' returns the top of these four bytes, so we'll\n    # need to munch them later to prevent them from polluting\n    # the payload.\n    header_end = chunk.find(b'\\r\\n\\r\\n')\n\n    分析 header 中的一行\n    def _parse_header(line):\n        main_value_pair, params = parse_header(line)\n        try:\n            name, value = main_value_pair.split(':', 1)\n        except:\n            raise ValueError(\"Invalid header: %r\" % line)\n        return name, (value, params)\n\n    if header_end == -1:\n        # we find no header, so we just mark this fact and pass on\n        # the stream verbatim\n        stream.unget(chunk)\n        return (RAW, {}, stream)\n\n    header = chunk[:header_end]\n\n    # here we place any excess chunk back onto the stream, as\n    # well as throwing away the CRLFCRLF bytes from above.\n    stream.unget(chunk[header_end + 4:])\n\n    TYPE = RAW\n    outdict = {}\n\n    # Eliminate blank lines\n    for line in header.split(b'\\r\\n'):\n        # This terminology (\"main value\" and \"dictionary of\n        # parameters\") is from the Python docs.\n        try:\n            name, (value, params) = _parse_header(line)\n        except:\n            continue\n\n        if name == 'content-disposition':\n            TYPE = FIELD\n            if params.get('filename'):\n                TYPE = FILE\n\n        outdict[name] = value, params\n\n    if TYPE == RAW:\n        stream.unget(chunk)\n\n    return (TYPE, outdict, stream)\n\nclass Parser(object):\n    def __init__(self, stream, boundary):\n        self._stream = stream\n        self._separator = b'--' + boundary\n\n    def __iter__(self):\n        boundarystream = InterBoundaryIter(self._stream, self._separator)\n        for sub_stream in boundarystream:\n            # Iterate over each part\n            yield parse_boundary_stream(sub_stream, 1024)\n\ndef parse_header(line):\n    \"\"\" Parse the header into a key-value.\n        Input (line): bytes, output: unicode for key/name, bytes for value which\n        will be decoded later\n    \"\"\"\n    plist = _parse_header_params(b';' + line)\n    key = plist.pop(0).lower().decode('ascii')\n    pdict = {}\n    for p in plist:\n        i = p.find(b'=')\n        if i >= 0:\n            name = p[:i].strip().lower().decode('ascii')\n            value = p[i+1:].strip()\n            if len(value) >= 2 and value[:1] == value[-1:] == b'\"':\n                value = value[1:-1]\n                value = value.replace(b'\\\\\\\\', b'\\\\').replace(b'\\\\\"', b'\"')\n            pdict[name] = value\n    return key, pdict\n\ndef _parse_header_params(s):\n    plist = []\n    while s[:1] == b';':\n        s = s[1:]\n        end = s.find(b';')\n        while end > 0 and s.count(b'\"', 0, end) % 2:\n            end = s.find(b';', end + 1)\n        if end < 0:\n            end = len(s)\n        f = s[:end]\n        plist.append(f.strip())\n        s = s[end:]\n    return plist\n"
  },
  {
    "path": "Django-1.5.1/django/http/request.py",
    "content": "from __future__ import absolute_import, unicode_literals\n\nimport copy\nimport os\nimport re\nimport sys\nimport warnings\nfrom io import BytesIO\nfrom pprint import pformat\ntry:\n    from urllib.parse import parse_qsl, urlencode, quote, urljoin\nexcept ImportError:\n    from urllib import urlencode, quote\n    from urlparse import parse_qsl, urljoin\n\nfrom django.conf import settings\nfrom django.core import signing\nfrom django.core.exceptions import SuspiciousOperation, ImproperlyConfigured\nfrom django.core.files import uploadhandler\nfrom django.http.multipartparser import MultiPartParser\nfrom django.utils import six\nfrom django.utils.datastructures import MultiValueDict, ImmutableList\nfrom django.utils.encoding import force_bytes, force_text, force_str, iri_to_uri\n\n\nRAISE_ERROR = object()\nabsolute_http_url_re = re.compile(r\"^https?://\", re.I)\nhost_validation_re = re.compile(r\"^([a-z0-9.-]+|\\[[a-f0-9]*:[a-f0-9:]+\\])(:\\d+)?$\")\n\n\nclass UnreadablePostError(IOError):\n    pass\n\n\nclass HttpRequest(object):\n    \"\"\"A basic HTTP request.\"\"\"\n\n    # The encoding used in GET/POST dicts. None means use default setting.\n    _encoding = None # get 和 post 的编码方法\n    _upload_handlers = [] # 上传句柄\n\n    def __init__(self):\n        # 检测在 view 中用到的各种 dict\n        self.GET, self.POST, self.COOKIES, self.META, self.FILES = {}, {}, {}, {}, {}\n\n        self.path = ''\n        self.path_info = ''\n        self.method = None # GET 还是 POST \n        self._post_parse_error = False\n\n    def __repr__(self):\n        # 直接打印一个 request 就是这样的结果\n        return build_request_repr(self)\n\n    返回主机\n    def get_host(self):\n        \"\"\"Returns the HTTP host using the environment or request headers.\"\"\"\n        # We try three options, in order of decreasing preference.\n        # 在 META 中搜寻或者直接在 header 中返回\n        if settings.USE_X_FORWARDED_HOST and (\n            'HTTP_X_FORWARDED_HOST' in self.META):\n            host = self.META['HTTP_X_FORWARDED_HOST']\n        elif 'HTTP_HOST' in self.META:\n            host = self.META['HTTP_HOST']\n        else:\n            # Reconstruct the host using the algorithm from PEP 333.\n            host = self.META['SERVER_NAME']\n            server_port = str(self.META['SERVER_PORT'])\n\n            if server_port != ('443' if self.is_secure() else '80'):\n                host = '%s:%s' % (host, server_port)\n\n        allowed_hosts = ['*'] if settings.DEBUG else settings.ALLOWED_HOSTS\n\n        if validate_host(host, allowed_hosts):\n            return host\n        else:\n            raise SuspiciousOperation(\n                \"Invalid HTTP_HOST header (you may need to set ALLOWED_HOSTS): %s\" % host)\n\n    def get_full_path(self):\n        # RFC 3986 requires query string arguments to be in the ASCII range.\n        # Rather than crash if this doesn't happen, we encode defensively.\n        return '%s%s' % (self.path, ('?' + iri_to_uri(self.META.get('QUERY_STRING', ''))) if self.META.get('QUERY_STRING', '') else '')\n\n    def get_signed_cookie(self, key, default=RAISE_ERROR, salt='', max_age=None):\n        \"\"\"\n        Attempts to return a signed cookie. If the signature fails or the\n        cookie has expired, raises an exception... unless you provide the\n        default argument in which case that value will be returned instead.\n        \"\"\"\n        try:\n            cookie_value = self.COOKIES[key] 尝试获取\n        except KeyError:\n            if default is not RAISE_ERROR:\n                return default\n            else:\n                raise\n\n        不懂, 签名 cookie  \n        try:\n            value = signing.get_cookie_signer(salt=key + salt).unsign(\n                cookie_value, max_age=max_age)\n        except signing.BadSignature:\n            if default is not RAISE_ERROR:\n                return default\n            else:\n                raise\n        return value\n\n    def build_absolute_uri(self, location=None):\n        \"\"\"\n        Builds an absolute URI from the location and the variables available in\n        this request. If no location is specified, the absolute URI is built on\n        ``request.get_full_path()``.\n        \"\"\"\n        if not location:\n            location = self.get_full_path()\n\n        if not absolute_http_url_re.match(location):\n            current_uri = '%s://%s%s' % ('https' if self.is_secure() else 'http',\n                                         self.get_host(), self.path)\n            location = urljoin(current_uri, location)\n        return iri_to_uri(location) # 我觉得 iri_to_uri 是对 uri 进行某种编码\n\n    def _is_secure(self):\n        return os.environ.get(\"HTTPS\") == \"on\" # 系统是否支持 https\n\n    def is_secure(self):\n        # First, check the SECURE_PROXY_SSL_HEADER setting.\n        if settings.SECURE_PROXY_SSL_HEADER:\n            try:\n                header, value = settings.SECURE_PROXY_SSL_HEADER\n            except ValueError:\n                raise ImproperlyConfigured('The SECURE_PROXY_SSL_HEADER setting must be a tuple containing two values.')\n            if self.META.get(header, None) == value:\n                return True\n\n        # Failing that, fall back to _is_secure(), which is a hook for 看来还有子类\n        # subclasses to implement.\n        return self._is_secure()\n\n    def is_ajax(self):\n        return self.META.get('HTTP_X_REQUESTED_WITH') == 'XMLHttpRequest' # 是否是 ajax, META 能之名好多的东西\n\n    @property\n    def encoding(self):返回 encoding\n        return self._encoding \n\n    @encoding.setter\n    def encoding(self, val): 设置 encoding\n        \"\"\"\n        Sets the encoding used for GET/POST accesses. If the GET or POST\n        dictionary has already been created, it is removed and recreated on the\n        next access (so that it is decoded correctly).\n        \"\"\"\n        self._encoding = val\n        if hasattr(self, '_get'):\n            del self._get\n        if hasattr(self, '_post'):\n            del self._post\n\n            上传句柄\n    def _initialize_handlers(self):\n        self._upload_handlers = [uploadhandler.load_handler(handler, self)\n                                 for handler in settings.FILE_UPLOAD_HANDLERS] 默认是没有 FILE_UPLOAD_HANDLERS 的\n\n    @property\n    def upload_handlers(self): 返回上传句柄\n        if not self._upload_handlers:\n            # If there are no upload handlers defined, initialize them from settings.\n            self._initialize_handlers()\n        return self._upload_handlers\n\n    @upload_handlers.setter\n    def upload_handlers(self, upload_handlers): 设置文件句柄\n        if hasattr(self, '_files'):\n            raise AttributeError(\"You cannot set the upload handlers after the upload has been processed.\")\n        self._upload_handlers = upload_handlers\n\n    def parse_file_upload(self, META, post_data): 上传文件\n        \"\"\"Returns a tuple of (POST QueryDict, FILES MultiValueDict).\"\"\"\n        self.upload_handlers = ImmutableList(\n            self.upload_handlers,\n            warning=\"You cannot alter upload handlers after the upload has been processed.\"\n        )\n        parser = MultiPartParser(META, post_data, self.upload_handlers, self.encoding) 核心的实现\n        return parser.parse()\n\n    @property\n    def body(self):\n        if not hasattr(self, '_body'):\n            if self._read_started:\n                raise Exception(\"You cannot access body after reading from request's data stream\")\n            try:\n                self._body = self.read() 不懂, 开始读取\n            except IOError as e:\n                six.reraise(UnreadablePostError, UnreadablePostError(*e.args), sys.exc_info()[2])\n            self._stream = BytesIO(self._body)\n        return self._body\n\n    @property\n    def raw_post_data(self):\n        warnings.warn('HttpRequest.raw_post_data has been deprecated. Use HttpRequest.body instead.', DeprecationWarning)\n        return self.body 直接返回\n\n    def _mark_post_parse_error(self):\n        self._post = QueryDict('')\n        self._files = MultiValueDict()\n        self._post_parse_error = True\n\n    def _load_post_and_files(self):\n        \"\"\"Populate self._post and self._files if the content-type is a form type\"\"\" 填充 _post 和 _files\n        if self.method != 'POST': 如果不是 POST  方法, 就简单处理返回\n            self._post, self._files = QueryDict('', encoding=self._encoding), MultiValueDict()\n            return\n\n        if self._read_started and not hasattr(self, '_body'): 没有读取数据, 直接简单处理, 返回\n            self._mark_post_parse_error()\n            return\n\n        if self.META.get('CONTENT_TYPE', '').startswith('multipart/form-data'):\n            if hasattr(self, '_body'):\n                # Use already read data\n                data = BytesIO(self._body)\n            else:\n                data = self\n\n            接收上传数据\n            try:\n                self._post, self._files = self.parse_file_upload(self.META, data)\n            except:\n                # An error occured while parsing POST data. Since when\n                # formatting the error the request handler might access\n                # self.POST, set self._post and self._file to prevent\n                # attempts to parse POST data again.\n                # Mark that an error occured. This allows self.__repr__ to\n                # be explicit about it instead of simply representing an\n                # empty POST\n                self._mark_post_parse_error()\n                raise\n        elif self.META.get('CONTENT_TYPE', '').startswith('application/x-www-form-urlencoded'):\n            self._post, self._files = QueryDict(self.body, encoding=self._encoding), MultiValueDict()\n        else:\n            self._post, self._files = QueryDict('', encoding=self._encoding), MultiValueDict()\n\n    ## File-like and iterator interface.\n    ##\n    ## Expects self._stream to be set to an appropriate source of bytes by\n    ## a corresponding request subclass (e.g. WSGIRequest).\n    ## Also when request data has already been read by request.POST or\n    ## request.body, self._stream points to a BytesIO instance\n    ## containing that data.\n\n    def read(self, *args, **kwargs):\n        self._read_started = True\n        # 在 def body(self): 中定义并设置了 self.stream\n        return self._stream.read(*args, **kwargs)\n\n    def readline(self, *args, **kwargs):\n        self._read_started = True\n        return self._stream.readline(*args, **kwargs)\n\n    def xreadlines(self):\n        while True:\n            buf = self.readline()\n            if not buf:\n                break\n            yield buf\n\n    __iter__ = xreadlines\n\n    def readlines(self):\n        return list(iter(self))\n\nMultiValueDict 是一个 key/list 的字典, QueryDict 是带有查询字符串的 key/list 字典, 一般是不可变的\nclass QueryDict(MultiValueDict): \n    \"\"\"\n    带有 query string 的 MultiValueDict\n    A specialized MultiValueDict that takes a query string when initialized.\n    This is immutable unless you create a copy of it.\n\n    Values retrieved from this class are converted from the given encoding\n    (DEFAULT_CHARSET by default) to unicode.\n    \"\"\"\n    # These are both reset in __init__, but is specified here at the class\n    # level so that unpickling will have valid values\n    _mutable = True\n    _encoding = None\n\n    def __init__(self, query_string, mutable=False, encoding=None):\n        super(QueryDict, self).__init__()  调用父类的初始化函数\n\n        if not encoding:\n            encoding = settings.DEFAULT_CHARSET\n        self.encoding = encoding\n\n        if six.PY3:\n            if isinstance(query_string, bytes):\n                # query_string contains URL-encoded data, a subset of ASCII.\n                query_string = query_string.decode()\n            for key, value in parse_qsl(query_string or '',\n                                        keep_blank_values=True,\n                                        encoding=encoding):\n                self.appendlist(key, value)\n        else:\n            for key, value in parse_qsl(query_string or '',\n                                        keep_blank_values=True):\n                self.appendlist(force_text(key, encoding, errors='replace'),\n                                force_text(value, encoding, errors='replace'))\n        self._mutable = mutable\n\n    @property\n    def encoding(self):\n        if self._encoding is None:\n            self._encoding = settings.DEFAULT_CHARSET\n        return self._encoding\n\n    @encoding.setter\n    def encoding(self, value):\n        self._encoding = value\n\n    def _assert_mutable(self):\n        if not self._mutable: 可变还是不可变\n            raise AttributeError(\"This QueryDict instance is immutable\")\n\n    def __setitem__(self, key, value):\n        self._assert_mutable() #可以设定为不可变 assert\n        key = bytes_to_text(key, self.encoding) 在插入前要进行编码\n        value = bytes_to_text(value, self.encoding)\n        super(QueryDict, self).__setitem__(key, value)\n\n    def __delitem__(self, key):\n        self._assert_mutable()\n        super(QueryDict, self).__delitem__(key)\n\n    def __copy__(self):\n        result = self.__class__('', mutable=True, encoding=self.encoding)\n        for key, value in six.iterlists(self):\n            result.setlist(key, value)\n        return result\n\n    def __deepcopy__(self, memo):\n        result = self.__class__('', mutable=True, encoding=self.encoding)\n        memo[id(self)] = result\n        for key, value in six.iterlists(self):\n            result.setlist(copy.deepcopy(key, memo), copy.deepcopy(value, memo))\n        return result\n\n    def setlist(self, key, list_):\n        self._assert_mutable()\n        key = bytes_to_text(key, self.encoding) 先各个编码\n        list_ = [bytes_to_text(elt, self.encoding) for elt in list_]\n        super(QueryDict, self).setlist(key, list_)\n\n    def setlistdefault(self, key, default_list=None):\n        self._assert_mutable()\n        return super(QueryDict, self).setlistdefault(key, default_list)\n\n    def appendlist(self, key, value):\n        self._assert_mutable()\n        key = bytes_to_text(key, self.encoding)\n        value = bytes_to_text(value, self.encoding)\n        super(QueryDict, self).appendlist(key, value)\n\n    def pop(self, key, *args):\n        self._assert_mutable()\n        return super(QueryDict, self).pop(key, *args)\n\n    def popitem(self):\n        self._assert_mutable()\n        return super(QueryDict, self).popitem()\n\n    def clear(self):\n        self._assert_mutable()\n        super(QueryDict, self).clear()\n\n    def setdefault(self, key, default=None):\n        self._assert_mutable()\n        key = bytes_to_text(key, self.encoding)\n        default = bytes_to_text(default, self.encoding)\n        return super(QueryDict, self).setdefault(key, default)\n\n    def copy(self):\n        \"\"\"Returns a mutable copy of this object.\"\"\"\n        return self.__deepcopy__({})\n\n    def urlencode(self, safe=None):\n        \"\"\"\n        Returns an encoded string of all query string arguments.\n\n        :arg safe: Used to specify characters which do not require quoting, for\n            example::\n\n                >>> q = QueryDict('', mutable=True)\n                >>> q['next'] = '/a&b/'\n                >>> q.urlencode()\n                'next=%2Fa%26b%2F'\n                >>> q.urlencode(safe='/')\n                'next=/a%26b/'\n\n        \"\"\"\n        output = []\n        if safe:\n            safe = force_bytes(safe, self.encoding)\n            encode = lambda k, v: '%s=%s' % ((quote(k, safe), quote(v, safe)))\n        else:\n            encode = lambda k, v: urlencode({k: v})\n        for k, list_ in self.lists():\n            k = force_bytes(k, self.encoding)\n            output.extend([encode(k, force_bytes(v, self.encoding))\n                           for v in list_])\n        return '&'.join(output)\n\n\ndef build_request_repr(request, path_override=None, GET_override=None,\n                       POST_override=None, COOKIES_override=None,\n                       META_override=None):\n    \"\"\"\n    Builds and returns the request's representation string. The request's\n    attributes may be overridden by pre-processed values.\n    \"\"\"\n    # Since this is called as part of error handling, we need to be very\n    # robust against potentially malformed input.\n    try:\n        get = (pformat(GET_override)\n               if GET_override is not None\n               else pformat(request.GET))\n    except Exception:\n        get = '<could not parse>'\n    if request._post_parse_error:\n        post = '<could not parse>'\n    else:\n        try:\n            post = (pformat(POST_override)\n                    if POST_override is not None\n                    else pformat(request.POST))\n        except Exception:\n            post = '<could not parse>'\n    try:\n        cookies = (pformat(COOKIES_override)\n                   if COOKIES_override is not None\n                   else pformat(request.COOKIES))\n    except Exception:\n        cookies = '<could not parse>'\n    try:\n        meta = (pformat(META_override)\n                if META_override is not None\n                else pformat(request.META))\n    except Exception:\n        meta = '<could not parse>'\n    path = path_override if path_override is not None else request.path\n    return force_str('<%s\\npath:%s,\\nGET:%s,\\nPOST:%s,\\nCOOKIES:%s,\\nMETA:%s>' %\n                     (request.__class__.__name__,\n                      path,\n                      six.text_type(get),\n                      six.text_type(post),\n                      six.text_type(cookies),\n                      six.text_type(meta)))\n\n\n# It's neither necessary nor appropriate to use\n# django.utils.encoding.smart_text for parsing URLs and form inputs. Thus,\n# this slightly more restricted function, used by QueryDict.\ndef bytes_to_text(s, encoding):\n    \"\"\"\n    Converts basestring objects to unicode, using the given encoding. Illegally\n    encoded input characters are replaced with Unicode \"unknown\" codepoint\n    (\\ufffd).\n\n    Returns any non-basestring objects without change.\n    \"\"\"\n    if isinstance(s, bytes):\n        return six.text_type(s, encoding, 'replace')\n    else:\n        return s\n\nallowed_hosts 允许自定义一些合法的 host\ndef validate_host(host, allowed_hosts 允许自定义一些合法的 host):\n    \"\"\"\n    Validate the given host header value for this site.\n\n    Check that the host looks valid and matches a host or host pattern in the\n    given list of ``allowed_hosts``. Any pattern beginning with a period\n    matches a domain and all its subdomains (e.g. ``.example.com`` matches\n    ``example.com`` and any subdomain), ``*`` matches anything, and anything\n    else must match exactly.\n\n    Return ``True`` for a valid host, ``False`` otherwise.\n\n    \"\"\"\n    # All validation is case-insensitive\n    host = host.lower()\n\n    # Basic sanity check\n    if not host_validation_re.match(host): 如果 host_validation_re 都不能满足, 直接返回 false\n        return False\n\n    # Validate only the domain part.\n    if host[-1] == ']':\n        # It's an IPv6 address without a port. ipv6 地址处理\n        domain = host\n    else:\n        domain = host.rsplit(':', 1)[0] 从右边开始切割\n\n    for pattern in allowed_hosts:\n        pattern = pattern.lower()\n        match = (\n            pattern == '*' or 可以用 * 表示接受所有的 host\n            pattern.startswith('.') and (\n                domain.endswith(pattern) or domain == pattern[1:]  部分相等\n                ) or\n            pattern == domain 完全相等\n            )\n        if match:\n            return True\n\n    return False\n"
  },
  {
    "path": "Django-1.5.1/django/http/response.py",
    "content": "from __future__ import absolute_import, unicode_literals\n\nimport datetime\nimport time\nimport warnings\nfrom email.header import Header\ntry:\n    from urllib.parse import urlparse\nexcept ImportError:\n    from urlparse import urlparse\n\nfrom django.conf import settings\nfrom django.core import signals\nfrom django.core import signing\nfrom django.core.exceptions import SuspiciousOperation\nfrom django.http.cookie import SimpleCookie\nfrom django.utils import six, timezone\nfrom django.utils.encoding import force_bytes, iri_to_uri\nfrom django.utils.http import cookie_date\nfrom django.utils.six.moves import map\n\n\nclass BadHeaderError(ValueError):\n    pass\n\n基础类\nclass HttpResponseBase(six.Iterator):\n    \"\"\"\n    An HTTP response base class with dictionary-accessed 字典访问 headers.\n\n    This class doesn't handle content. It should not be used directly.\n    这个类被处理内容, 要用他的子类\n    Use the HttpResponse and StreamingHttpResponse subclasses instead.\n    \"\"\"\n\n    status_code = 200\n\n    def __init__(self, content_type=None, status=None, mimetype=None):\n        # _headers is a mapping of the lower-case name to the original case of\n        # the header (required for working with legacy systems) and the header\n        # value. Both the name of the header and its value are ASCII strings.\n        self._headers = {}\n        self._charset = settings.DEFAULT_CHARSET\n        self._closable_objects = []\n\n        set by the handler.\n        # This parameter is set by the handler. It's necessary to preserve the\n        # historical behavior of request_finished.\n        self._handler_class = None\n\n        if mimetype:\n            warnings.warn(\"Using mimetype keyword argument is deprecated, use\"\n                          \" content_type instead\", PendingDeprecationWarning)\n            content_type = mimetype\n\n        if not content_type:\n            content_type = \"%s; charset=%s\" % (settings.DEFAULT_CONTENT_TYPE,\n                    self._charset) 设置默认的 charset\n\n        self.cookies = SimpleCookie() 应该返回要给空的 cookie dict\n\n        if status:\n            self.status_code = status\n\n        self['Content-Type'] = content_type\n\n    序列化 HTTP header, 得到一个字符串\n    def serialize_headers(self):\n        \"\"\"HTTP headers as a bytestring.\"\"\"\n        headers = [\n            ('%s: %s' % (key, value)).encode('us-ascii')\n            for key, value in self._headers.values()\n        ]\n        return b'\\r\\n'.join(headers)\n\n    if six.PY3:\n        __bytes__ = serialize_headers\n    else:\n        __str__ = serialize_headers\n\n    def _convert_to_charset(self, value, charset, mime_encode=False):\n        \"\"\"Converts headers key/value to ascii/latin1 native strings.\n\n        `charset` must be 'ascii' or 'latin-1'. If `mime_encode` is True and\n        `value` value can't be represented in the given charset, MIME-encoding\n        is applied.\n        \"\"\"\n        if not isinstance(value, (bytes, six.text_type)):\n            value = str(value)\n\n        try:\n            if six.PY3: 这里是为了 compatibility\n                if isinstance(value, str):  如果 value 是 str 类型, 那可以直接跳过, 如果是其他的类型, 要进行转换\n                    # Ensure string is valid in given charset\n                    value.encode(charset)  \n                else:\n                    # Convert bytestring using given charset\n                    value = value.decode(charset)\n            else:\n                if isinstance(value, str):\n                    # Ensure string is valid in given charset\n                    value.decode(charset)\n                else:\n                    # Convert unicode string to given charset\n                    value = value.encode(charset)\n\n        except UnicodeError as e:\n            if mime_encode:\n                # Wrapping in str() is a workaround for #12422 under Python 2.\n                value = str(Header(value, 'utf-8').encode())\n            else:\n                e.reason += ', HTTP response headers must be in %s format' % charset\n                raise\n\n        if str('\\n') in value or str('\\r') in value:\n            raise BadHeaderError(\"Header values can't contain newlines (got %r)\" % value)\n        return value\n\n    从下面可以看出, 对 response 的操作都是对其中 dict 的操作\n    def __setitem__(self, header, value): 这是字典的动作\n        header = self._convert_to_charset(header, 'ascii')\n        value = self._convert_to_charset(value, 'latin1', mime_encode=True)\n        self._headers[header.lower()] = (header, value) 其内部操作的是其成员变量 _headers\n\n    def __delitem__(self, header):\n        try:\n            del self._headers[header.lower()]\n        except KeyError:\n            pass\n\n    def __getitem__(self, header):\n        return self._headers[header.lower()][1] 比如 response[\"cookie\"]\n\n    def __getstate__(self):\n        # SimpleCookie is not pickeable with pickle.HIGHEST_PROTOCOL, so we\n        # serialise to a string instead\n        state = self.__dict__.copy()\n        state['cookies'] = str(state['cookies'])\n        return state\n\n    def __setstate__(self, state):\n        self.__dict__.update(state)\n        self.cookies = SimpleCookie(self.cookies)\n\n    def has_header(self, header):\n        \"\"\"Case-insensitive check for a header.\"\"\"\n        return header.lower() in self._headers\n\n    __contains__ = has_header\n\n    def items(self):\n        return self._headers.values() 返回 HTTP 头\n\n    def get(self, header, alternate=None):\n        return self._headers.get(header.lower(), (None, alternate))[1]\n\n    def set_cookie(self, key, value='', max_age=None, expires=None, path='/',\n                   domain=None, secure=False, httponly=False):\n        \"\"\"\n        Sets a cookie.\n\n        ``expires`` can be:\n        - a string in the correct format,\n        - a naive ``datetime.datetime`` object in UTC,\n        - an aware ``datetime.datetime`` object in any time zone.\n        If it is a ``datetime.datetime`` object then ``max_age`` will be calculated.\n\n        \"\"\"\n\n        \"\"\"\n        指定了coolie的生存期，默认情况下coolie是暂时存在的，他们存储的值只在浏览器会话期间存在，当用户推出浏览器后这些值也会丢失，\n        如果想让cookie存在一段时间，就要为expires属性设置为未来的一个过期日期。\n        现在已经被max-age属性所取代，max-age用秒来设置cookie的生存期。\n        \"\"\"\n        self.cookies[key] = value\n        if expires is not None:\n            if isinstance(expires, datetime.datetime):\n                if timezone.is_aware(expires):\n                    expires = timezone.make_naive(expires, timezone.utc)\n                delta = expires - expires.utcnow()\n                # Add one second so the date matches exactly (a fraction of\n                # time gets lost between converting to a timedelta and\n                # then the date string). 很讲究, 特别加上一秒时间以弥补其中花费的时间\n                delta = delta + datetime.timedelta(seconds=1)\n                # Just set max_age - the max_age logic will set expires.\n                expires = None\n                max_age = max(0, delta.days * 86400 + delta.seconds)\n            else:\n                SimpleCookie 的伟大之处\n                self.cookies[key]['expires'] = expires \n\n        if max_age is not None:\n            self.cookies[key]['max-age'] = max_age\n            # IE requires expires, so set it if hasn't been already.\n            if not expires:\n                self.cookies[key]['expires'] = cookie_date(time.time() +\n                                                           max_age) 如果没有 expires 就直接加上 max_age 已得到 expires\n\n        if path is not None:\n            self.cookies[key]['path'] = path\n\n        域名\n        if domain is not None:\n            self.cookies[key]['domain'] = domain\n\n        only used via HTTPS 在传输过程中, 会加密\n        if secure:\n            self.cookies[key]['secure'] = True\n\n        仅仅用于 http 或者 https\n        if httponly:\n            self.cookies[key]['httponly'] = True\n\n    def set_signed_cookie(self, key, value, salt='', **kwargs):\n        value = signing.get_cookie_signer(salt=key + salt).sign(value)\n        return self.set_cookie(key, value, **kwargs)\n\n    def delete_cookie(self, key, path='/', domain=None):\n        self.set_cookie(key, max_age=0, path=path, domain=domain,\n                        expires='Thu, 01-Jan-1970 00:00:00 GMT')\n\n    # Common methods used by subclasses\n\n    def make_bytes(self, value):\n        \"\"\"Turn a value into a bytestring encoded in the output charset.\"\"\"\n        # Per PEP 3333, this response body must be bytes. To avoid returning\n        # an instance of a subclass, this function returns `bytes(value)`.\n        # This doesn't make a copy when `value` already contains bytes.\n\n        # If content is already encoded (eg. gzip), assume bytes.\n        if self.has_header('Content-Encoding'):\n            return bytes(value)\n\n        # Handle string types -- we can't rely on force_bytes here because:\n        # - under Python 3 it attemps str conversion first\n        # - when self._charset != 'utf-8' it re-encodes the content\n        if isinstance(value, bytes):\n            return bytes(value)\n        if isinstance(value, six.text_type):\n            return bytes(value.encode(self._charset))\n\n        # Handle non-string types (#16494)\n        return force_bytes(value, self._charset)\n\n    def __iter__(self):\n        return self\n\n    def __next__(self):\n        # Subclasses must define self._iterator for this function.\n        return self.make_bytes(next(self._iterator)) 子类必须定义 self._iterator\n\n    # These methods partially implement the file-like object interface.\n    # See http://docs.python.org/lib/bltin-file-objects.html\n\n    # The WSGI server must call this method upon completion of the request. 在请求结束的时候, 要调用这个函数\n    # See http://blog.dscpl.com.au/2012/10/obligations-for-calling-close-on.html\n    def close(self):\n        for closable in self._closable_objects:\n            try:\n                closable.close()\n            except Exception:\n                pass\n        signals.request_finished.send(sender=self._handler_class)\n\n    def write(self, content):\n        raise Exception(\"This %s instance is not writable\" % self.__class__.__name__)\n\n    def flush(self):\n        pass\n\n    def tell(self):\n        raise Exception(\"This %s instance cannot tell its position\" % self.__class__.__name__)\n\n\nclass HttpResponse(HttpResponseBase):\n    \"\"\"\n    里面有一个 string, 不懂\n\n    An HTTP response class with a string as content. \n\n    This content that can be read, appended to or replaced.\n    \"\"\"\n\n    streaming = False\n\n    def __init__(self, content='', *args, **kwargs):\n        super(HttpResponse, self).__init__(*args, **kwargs)\n        # Content is a bytestring. See the `content` property methods.\n        self.content = content\n\n    def serialize(self):\n        返回整个 HTTP response 内容, 包括 HTTP header 和 content\n        \"\"\"Full HTTP message, including headers, as a bytestring.\"\"\"\n        return self.serialize_headers() + b'\\r\\n\\r\\n' + self.content \n\n    if six.PY3:\n        __bytes__ = serialize\n    else:\n        __str__ = serialize\n\n    不懂\n    def _consume_content(self):\n        # If the response was instantiated with an iterator, when its content\n        # is accessed, the iterator is going be exhausted and the content\n        # loaded in memory. At this point, it's better to abandon the original\n        # iterator and save the content for later reuse. This is a temporary\n        # solution. See the comment in __iter__ below for the long term plan.\n        if self._base_content_is_iter:\n            self.content = b''.join(self.make_bytes(e) for e in self._container)\n\n    @property\n    def content(self):\n        self._consume_content() 不懂, 和 _consume_content 的操作一样\n        return b''.join(self.make_bytes(e) for e in self._container) 把容器中的数据 join 起来\n\n    @content.setter\n    def content(self, value):\n        if hasattr(value, '__iter__') and not isinstance(value, (bytes, six.string_types)):\n            self._container = value\n            self._base_content_is_iter = True\n            if hasattr(value, 'close'):\n                self._closable_objects.append(value)\n        else:\n            self._container = [value]\n            self._base_content_is_iter = False\n\n    def __iter__(self):\n        # Raise a deprecation warning only if the content wasn't consumed yet,\n        # because the response may be intended to be streamed.\n        # Once the deprecation completes, iterators should be consumed upon\n        # assignment rather than upon access. The _consume_content method\n        # should be removed. See #6527.\n        if self._base_content_is_iter:\n            warnings.warn(\n                'Creating streaming responses with `HttpResponse` is '\n                'deprecated. Use `StreamingHttpResponse` instead '\n                'if you need the streaming behavior.',\n                PendingDeprecationWarning, stacklevel=2)\n        if not hasattr(self, '_iterator'):\n            self._iterator = iter(self._container)\n        return self\n\n    def write(self, content):\n        self._consume_content()\n        self._container.append(content)\n\n    def tell(self):\n        self._consume_content()\n        return len(self.content)\n\n\nclass StreamingHttpResponse(HttpResponseBase):\n    \"\"\"\n    A streaming HTTP response class with an iterator as content. 可迭代的内容\n\n    This should only be iterated once, when the response is streamed to the\n    client. However, it can be appended to or replaced with a new iterator\n    that wraps the original content (or yields entirely new content).\n    \"\"\"\n\n    streaming = True\n\n    def __init__(self, streaming_content=(), *args, **kwargs):\n        super(StreamingHttpResponse, self).__init__(*args, **kwargs)\n        # `streaming_content` should be an iterable of bytestrings.\n        # See the `streaming_content` property methods.\n        self.streaming_content = streaming_content\n\n    @property\n    def content(self):\n        raise AttributeError(\"This %s instance has no `content` attribute. \"\n            \"Use `streaming_content` instead.\" % self.__class__.__name__)\n\n    @property\n    def streaming_content(self):\n        return map(self.make_bytes, self._iterator)\n\n    @streaming_content.setter\n    def streaming_content(self, value):\n        # Ensure we can never iterate on \"value\" more than once.\n        self._iterator = iter(value)\n        if hasattr(value, 'close'):\n            self._closable_objects.append(value)\n\n\nclass CompatibleStreamingHttpResponse(StreamingHttpResponse):\n    \"\"\"\n    This class maintains compatibility with middleware that doesn't know how\n    to handle the content of a streaming response by exposing a `content`\n    attribute that will consume and cache the content iterator when accessed.\n\n    These responses will stream only if no middleware attempts to access the\n    `content` attribute. Otherwise, they will behave like a regular response,\n    and raise a `PendingDeprecationWarning`.\n    \"\"\"\n    @property\n    def content(self):\n        warnings.warn(\n            'Accessing the `content` attribute on a streaming response is '\n            'deprecated. Use the `streaming_content` attribute instead.',\n            PendingDeprecationWarning)\n        content = b''.join(self)\n        self.streaming_content = [content]\n        return content\n\n    @content.setter\n    def content(self, content):\n        warnings.warn(\n            'Accessing the `content` attribute on a streaming response is '\n            'deprecated. Use the `streaming_content` attribute instead.',\n            PendingDeprecationWarning)\n        self.streaming_content = [content]\n\n\nclass HttpResponseRedirectBase(HttpResponse):\n    allowed_schemes = ['http', 'https', 'ftp']\n\n    def __init__(self, redirect_to, *args, **kwargs):\n        parsed = urlparse(redirect_to)\n        if parsed.scheme and parsed.scheme not in self.allowed_schemes:\n            raise SuspiciousOperation(\"Unsafe redirect to URL with protocol '%s'\" % parsed.scheme)\n        super(HttpResponseRedirectBase, self).__init__(*args, **kwargs)\n        self['Location'] = iri_to_uri(redirect_to)\n\n\nclass HttpResponseRedirect(HttpResponseRedirectBase):\n    status_code = 302\n\n\nclass HttpResponsePermanentRedirect(HttpResponseRedirectBase):\n    status_code = 301\n\n\nclass HttpResponseNotModified(HttpResponse):\n    status_code = 304\n\n    def __init__(self, *args, **kwargs):\n        super(HttpResponseNotModified, self).__init__(*args, **kwargs)\n        del self['content-type']\n\n    @HttpResponse.content.setter\n    def content(self, value):\n        if value:\n            raise AttributeError(\"You cannot set content to a 304 (Not Modified) response\")\n        self._container = []\n        self._base_content_is_iter = False\n\n\nclass HttpResponseBadRequest(HttpResponse):\n    status_code = 400\n\n\nclass HttpResponseNotFound(HttpResponse):\n    status_code = 404\n\n\nclass HttpResponseForbidden(HttpResponse):\n    status_code = 403\n\n\nclass HttpResponseNotAllowed(HttpResponse):\n    status_code = 405\n\n    def __init__(self, permitted_methods, *args, **kwargs):\n        super(HttpResponseNotAllowed, self).__init__(*args, **kwargs)\n        self['Allow'] = ', '.join(permitted_methods)\n\n\nclass HttpResponseGone(HttpResponse):\n    status_code = 410\n\n\nclass HttpResponseServerError(HttpResponse):\n    status_code = 500\n\n\nclass Http404(Exception):\n    pass\n"
  },
  {
    "path": "Django-1.5.1/django/http/utils.py",
    "content": "\"\"\"\nFunctions that modify an HTTP request or response in some way.\n\"\"\"\n'''\n中间件,按文档说可以将此作为每个 response 都必须处理的中间件\n'''\n# This group of functions are run as part of the response handling, after\n# everything else, including all response middleware. Think of them as\n# \"compulsory response middleware\". Be careful about what goes here, because\n# it's a little fiddly to override this behavior, so they should be truly\n# universally applicable.\n\n# 主要是一些小工具,\ndef fix_location_header(request, response):\n    \"\"\"\n    绝对路径 URI\n    Ensures that we always use an absolute URI in any location header in the\n    response. This is required by RFC 2616, section 14.30.\n\n    Code constructing response objects is free to insert relative paths, as\n    this function converts them to absolute paths.\n    \"\"\"\n    if 'Location' in response and request.get_host():\n        response['Location'] = request.build_absolute_uri(response['Location'])\n    return response\n\n\ndef conditional_content_removal(request, response): 如果是 head 命令,移除 response 中的数据\n    \"\"\"\n    Removes the content of responses for HEAD requests, 1xx, 204 and 304\n    responses. Ensures compliance with RFC 2616, section 4.3.\n    \"\"\"\n    if 100 <= response.status_code < 200 or response.status_code in (204, 304):\n        if response.streaming:\n            response.streaming_content = []\n        else:\n            response.content = ''\n        response['Content-Length'] = '0'\n\n    if request.method == 'HEAD':\n        if response.streaming:\n            response.streaming_content = []\n            response.content = ''\n        else:\n    return response\n\ndef fix_IE_for_attach(request, response):\n    \"\"\"\n    This function will prevent Django from serving a Content-Disposition header\n    while expecting the browser to cache it (only when the browser is IE). This\n    leads to IE not allowing the client to download.\n    \"\"\"\n    useragent = request.META.get('HTTP_USER_AGENT', '').upper()\n    if 'MSIE' not in useragent and 'CHROMEFRAME' not in useragent:\n        return response\n\n    offending_headers = ('no-cache', 'no-store')\n    if response.has_header('Content-Disposition'):\n        try:\n            del response['Pragma']\n        except KeyError:\n            pass\n        if response.has_header('Cache-Control'):\n            cache_control_values = [value.strip() for value in\n                    response['Cache-Control'].split(',')\n                    if value.strip().lower() not in offending_headers]\n\n            if not len(cache_control_values):\n                del response['Cache-Control']\n            else:\n                response['Cache-Control'] = ', '.join(cache_control_values)\n\n    return response\n\n\ndef fix_IE_for_vary(request, response):\n    \"\"\"\n    This function will fix the bug reported at\n    http://support.microsoft.com/kb/824847/en-us?spid=8722&sid=global\n    by clearing the Vary header whenever the mime-type is not safe\n    enough for Internet Explorer to handle.  Poor thing.  IE 可能不能处理某些 header 中的 mime-type\n    \"\"\"\n    useragent = request.META.get('HTTP_USER_AGENT', '').upper()\n    if 'MSIE' not in useragent and 'CHROMEFRAME' not in useragent: # 如果既不是 IE 又不是 chrome\n        return response\n\n    # These mime-types that are decreed \"Vary-safe\" for IE: 专门为 IE 准备的\n    safe_mime_types = ('text/html', 'text/plain', 'text/sgml') # 这些是安全的类型 mime_type\n\n    # The first part of the Content-Type field will be the MIME type,\n    # everything after ';', such as character-set, can be ignored.\n    mime_type = response.get('Content-Type', '').partition(';')[0]\n\n    if mime_type not in safe_mime_types:\n        try:\n            del response['Vary']\n        except KeyError:\n            pass\n\n    return response\n"
  },
  {
    "path": "Django-1.5.1/django/middleware/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/middleware/cache.py",
    "content": "\"\"\"\nCache middleware. If enabled, each Django-powered page will be cached based on\nURL. The canonical way to enable cache middleware is to set\n``UpdateCacheMiddleware`` as your first piece of middleware, and\n``FetchFromCacheMiddleware`` as the last::\n\n这种设置方法:\n    MIDDLEWARE_CLASSES = [\n        'django.middleware.cache.UpdateCacheMiddleware',\n        ...\n        'django.middleware.cache.FetchFromCacheMiddleware'\n    ]\n\nThis is counter-intuitive, but correct: ``UpdateCacheMiddleware`` needs to run\nlast during the response phase, which processes middleware bottom-up;\n\n从这里可以得到提示是 middleware 在 response 的时候是从下往上执行的, 并不是直观的从上往下\n\n``FetchFromCacheMiddleware`` needs to run last during the request phase, which\nprocesses middleware top-down.\n\n从这里可以得到提示是 middleware 在 request 的时候是从上往下的执行的\n\nThe single-class ``CacheMiddleware`` can be used for some simple sites.\nHowever, if any other piece of middleware needs to affect the cache key, you'll\nneed to use the two-part ``UpdateCacheMiddleware`` and\n``FetchFromCacheMiddleware``. This'll most often happen when you're using\nDjango's ``LocaleMiddleware``.\n\nMore details about how the caching works:\n\n* Only GET or HEAD-requests with status code 200 are cached.\n\n* The number of seconds each page is stored for is set by the \"max-age\" section\n  of the response's \"Cache-Control\" header, falling back to the\n  CACHE_MIDDLEWARE_SECONDS setting if the section was not found.\n\nCACHE_MIDDLEWARE_SECONDS 控制着 cache 的时间\n\n* If CACHE_MIDDLEWARE_ANONYMOUS_ONLY is set to True, only anonymous requests\n  (i.e., those not made by a logged-in user) will be cached. This is a simple\n  and effective way of avoiding the caching of the Django admin (and any other\n  user-specific content).\n\n* This middleware expects that a HEAD request is answered with the same response\n  headers exactly like the corresponding GET request. 也即是返回一样的 header\n\n* When a hit occurs, a shallow copy of the original response object is returned\n  from process_request.\n\n* Pages will be cached based on the contents of the request headers listed in\n  the response's \"Vary\" header.\n\n* This middleware also sets ETag, Last-Modified, Expires and Cache-Control\n  headers on the response object.\n\n\"\"\"\n\nfrom django.conf import settings\n\n# 要看懂这个,还需要看懂 core.cache \nfrom django.core.cache import get_cache, DEFAULT_CACHE_ALIAS\nfrom django.utils.cache import get_cache_key, learn_cache_key, patch_response_headers, get_max_age\n\n\nclass UpdateCacheMiddleware(object):\n    \"\"\"\n    处理 response,必须放到第一个位置(从下到上,也就是说他会最后一个被执行)\n    Response-phase cache middleware that updates the cache if the response is\n    cacheable. 更新缓存\n\n    Must be used as part of the two-part update/fetch cache middleware.\n    UpdateCacheMiddleware must be the first piece of middleware in\n    MIDDLEWARE_CLASSES so that it'll get called last during the response phase.\n\n    UpdateCacheMiddleware 在 response 中会在最后才执行\n    \"\"\"\n    def __init__(self):\n        self.cache_timeout = settings.CACHE_MIDDLEWARE_SECONDS\n        self.key_prefix = settings.CACHE_MIDDLEWARE_KEY_PREFIX\n        self.cache_anonymous_only = getattr(settings, 'CACHE_MIDDLEWARE_ANONYMOUS_ONLY', False)\n        self.cache_alias = settings.CACHE_MIDDLEWARE_ALIAS\n        self.cache = get_cache(self.cache_alias)\n\n    def _session_accessed(self, request):\n        try:\n            return request.session.accessed\n        except AttributeError:\n            return False\n\n    def _should_update_cache(self, request, response):\n        if not hasattr(request, '_cache_update_cache') or not request._cache_update_cache:\n            return False\n\n        # 看不懂\n        # If the session has not been accessed otherwise, we don't want to\n        # cause it to be accessed here. If it hasn't been accessed, then the\n        # user's logged-in status has not affected the response anyway.\n        if self.cache_anonymous_only and self._session_accessed(request):\n            assert hasattr(request, 'user'), \"The Django cache middleware with CACHE_MIDDLEWARE_ANONYMOUS_ONLY=True requires authentication middleware to be installed. Edit your MIDDLEWARE_CLASSES setting to insert 'django.contrib.auth.middleware.AuthenticationMiddleware' before the CacheMiddleware.\"\n            if request.user.is_authenticated():\n                # cache_anonymous_only 设置了,那么只有未验证的用户才需要缓存\n                # Don't cache user-variable requests from authenticated users.\n                return False\n        return True\n\n    def process_response(self, request, response):\n        \"\"\"Sets the cache, if needed.\"\"\"\n        if not self._should_update_cache(request, response):\n            # We don't need to update the cache, just return.\n            return response\n\n        if response.streaming or response.status_code != 200: # 如果状态码不是 200,直接返回\n            return response\n\n        # Try to get the timeout from the \"max-age\" section of the \"Cache-\n        # Control\" header before reverting to using the default cache_timeout\n        # length.\n        timeout = get_max_age(response)\n        if timeout == None:\n            timeout = self.cache_timeout # 如果没有直接设置 settint 中默认的设置\n        elif timeout == 0:\n            # max-age was set to 0, don't bother caching.\n            return response # 如果是0,就不缓存了\n\n        patch_response_headers(response, timeout) # patch 修补, 修改时间用\n        if timeout:\n            cache_key = learn_cache_key(request, response, timeout, self.key_prefix, cache=self.cache)\n            if hasattr(response, 'render') and callable(response.render):\n                response.add_post_render_callback(\n                    lambda r: self.cache.set(cache_key, r, timeout)\n                )\n            else:\n                self.cache.set(cache_key, response, timeout)\n        return response\n\nclass FetchFromCacheMiddleware(object):\n    \"\"\"\n    处理 request,必须放到最后一个位置(从上到下,也就是说他会最后一个被执行)\n    Request-phase cache middleware that fetches a page from the cache. 在缓存中获取页面\n\n    Must be used as part of the two-part update/fetch cache middleware.\n    FetchFromCacheMiddleware must be the last piece of middleware in\n    MIDDLEWARE_CLASSES so that it'll get called last during the request phase.\n    \"\"\"\n\n    def __init__(self):\n        self.cache_timeout = settings.CACHE_MIDDLEWARE_SECONDS\n        self.key_prefix = settings.CACHE_MIDDLEWARE_KEY_PREFIX\n        self.cache_anonymous_only = getattr(settings, 'CACHE_MIDDLEWARE_ANONYMOUS_ONLY', False)\n        self.cache_alias = settings.CACHE_MIDDLEWARE_ALIAS\n        self.cache = get_cache(self.cache_alias)\n\n    def process_request(self, request):\n        \"\"\"\n        Checks whether the page is already cached and returns the cached\n        version if available.\n        \"\"\"\n        if not request.method in ('GET', 'HEAD'):\n            request._cache_update_cache = False\n            return None # Don't bother checking the cache.\n\n        # try and get the cached GET response  GEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEET\n        cache_key = get_cache_key(request, self.key_prefix, 'GET', cache=self.cache)\n        if cache_key is None:\n            request._cache_update_cache = True\n            return None # No cache information available, need to rebuild.\n\n        response = self.cache.get(cache_key, None)\n        # if it wasn't found and we are looking for a HEAD, try looking just for that HEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD\n        if response is None and request.method == 'HEAD':\n            cache_key = get_cache_key(request, self.key_prefix, 'HEAD', cache=self.cache)\n            response = self.cache.get(cache_key, None)\n\n        if response is None:\n            request._cache_update_cache = True\n            return None # No cache information available, need to rebuild.\n\n        # hit, return cached response\n        request._cache_update_cache = False\n        return response\n\n# 不懂用来做什么\nclass CacheMiddleware(UpdateCacheMiddleware, FetchFromCacheMiddleware):\n    \"\"\"\n    Cache middleware that provides basic behavior for many simple sites. 为简单的页面提供了基本的功能\n\n    Also used as the hook point for the cache decorator, which is generated\n    using the decorator-from-middleware utility.\n    \"\"\"\n    def __init__(self, cache_timeout=None, cache_anonymous_only=None, **kwargs):\n        # We need to differentiate between \"provided, but using default value\",\n        # and \"not provided\". If the value is provided using a default, then\n        # we fall back to system defaults. If it is not provided at all,\n        # we need to use middleware defaults.\n\n        cache_kwargs = {}\n\n        try:\n            self.key_prefix = kwargs['key_prefix']\n            if self.key_prefix is not None:\n                cache_kwargs['KEY_PREFIX'] = self.key_prefix\n            else:\n                self.key_prefix = ''\n        except KeyError:\n            self.key_prefix = settings.CACHE_MIDDLEWARE_KEY_PREFIX\n            cache_kwargs['KEY_PREFIX'] = self.key_prefix\n\n        try:\n            self.cache_alias = kwargs['cache_alias']\n            if self.cache_alias is None:\n                self.cache_alias = DEFAULT_CACHE_ALIAS\n            if cache_timeout is not None:\n                cache_kwargs['TIMEOUT'] = cache_timeout\n        except KeyError:\n            self.cache_alias = settings.CACHE_MIDDLEWARE_ALIAS\n            if cache_timeout is None:\n                cache_kwargs['TIMEOUT'] = settings.CACHE_MIDDLEWARE_SECONDS\n            else:\n                cache_kwargs['TIMEOUT'] = cache_timeout\n\n        if cache_anonymous_only is None:\n            self.cache_anonymous_only = getattr(settings, 'CACHE_MIDDLEWARE_ANONYMOUS_ONLY', False)\n        else:\n            self.cache_anonymous_only = cache_anonymous_only\n\n        self.cache = get_cache(self.cache_alias, **cache_kwargs)\n        self.cache_timeout = self.cache.default_timeout\n"
  },
  {
    "path": "Django-1.5.1/django/middleware/clickjacking.py",
    "content": "\"\"\"\nClickjacking Protection Middleware.\n\nThis module provides a middleware that implements protection against a\nmalicious site loading resources from your site in a hidden frame.\n\"\"\"\n\nfrom django.conf import settings\n\nclass XFrameOptionsMiddleware(object):\n    \"\"\"\n    Middleware that sets the X-Frame-Options HTTP header in HTTP responses.\n\n    Does not set the header if it's already set or if the response contains\n    a xframe_options_exempt value set to True.\n\n    By default, sets the X-Frame-Options header to 'SAMEORIGIN', meaning the\n    response can only be loaded on a frame within the same site. To prevent the\n    response from being loaded in a frame in any site, set X_FRAME_OPTIONS in\n    your project's Django settings to 'DENY'.\n\n    Note: older browsers will quietly ignore this header, thus other\n    clickjacking protection techniques should be used if protection in those\n    browsers is required.\n\n    http://en.wikipedia.org/wiki/Clickjacking#Server_and_client 用户纠正攻击\n    使用X-Frame-Options header 拒绝被嵌入框架\n\n\n    The X-Frame-Options HTTP response header can be used to indicate whether or not a browser should be allowed to render a page in a <frame> or <iframe>. \n    Sites can use this to avoid clickjacking attacks, by ensuring that their content is not embedded into other sites.\n    \"\"\"\n    def process_response(self, request, response):\n        # Don't set it if it's already in the response\n        if response.get('X-Frame-Options', None) is not None:\n            return response\n\n        # Don't set it if they used @xframe_options_exempt 免除\n        if getattr(response, 'xframe_options_exempt', False):\n            return response\n\n        response['X-Frame-Options'] = self.get_xframe_options_value(request,\n                                                                    response)\n        return response\n\n    def get_xframe_options_value(self, request, response):\n        \"\"\"\n        Gets the value to set for the X_FRAME_OPTIONS header.\n\n        By default this uses the value from the X_FRAME_OPTIONS Django\n        settings. If not found in settings, defaults to 'SAMEORIGIN'.\n\n        This method can be overridden if needed, allowing it to vary based on\n        the request or response.\n        \"\"\" \n        # 直接从 setting 中获取,如果没有,就使用默认值\n        return getattr(settings, 'X_FRAME_OPTIONS', 'SAMEORIGIN').upper()\n"
  },
  {
    "path": "Django-1.5.1/django/middleware/common.py",
    "content": "import hashlib\nimport logging\nimport re\n\nfrom django.conf import settings\nfrom django import http\nfrom django.core.mail import mail_managers\nfrom django.utils.http import urlquote\nfrom django.utils import six\nfrom django.core import urlresolvers\n\n\nlogger = logging.getLogger('django.request')\n\n\nclass CommonMiddleware(object):\n    \"\"\"\n    \"Common\" middleware for taking care of some basic operations:\n\n        - Forbids access to User-Agents in settings.DISALLOWED_USER_AGENTS \n          拒绝某些客户端\n\n        - URL rewriting: Based on the APPEND_SLASH and PREPEND_WWW settings,\n          this middleware appends missing slashes and/or prepends missing\n          \"www.\"s. \n          填补 www. 前缀\n\n            - If APPEND_SLASH is set and the initial URL doesn't end with a\n              slash, and it is not found in urlpatterns, a new URL is formed by\n              appending a slash at the end. If this new URL is found in\n              urlpatterns, then an HTTP-redirect is returned to this new URL;\n              otherwise the initial URL is processed as usual.\n\n              如果 APPEND_SLASH 设置了,且 url 不是以 / 结尾,则会填补 / 然后返回新的 url\n\n        - ETags: If the USE_ETAGS setting is set, ETags will be calculated from\n          the entire page content and Not Modified responses will be returned\n          appropriately.\n    \"\"\"\n\n    def process_request(self, request):\n        \"\"\"\n        Check for denied User-Agents and rewrite the URL based on\n        settings.APPEND_SLASH and settings.PREPEND_WWW\n        \"\"\"\n\n        # Check for denied User-Agents 检测被拒绝的客户端\n        if 'HTTP_USER_AGENT' in request.META:\n            for user_agent_regex in settings.DISALLOWED_USER_AGENTS:\n                if user_agent_regex.search(request.META['HTTP_USER_AGENT']):\n                    logger.warning('Forbidden (User agent): %s', request.path,\n                        extra={\n                            'status_code': 403,\n                            'request': request\n                        }\n                    )\n                    return http.HttpResponseForbidden('<h1>Forbidden</h1>')\n\n        # Check for a redirect based on settings.APPEND_SLASH \n        #看是否需要填补 www.\n        # and settings.PREPEND_WWW\n        host = request.get_host()\n        old_url = [host, request.path]\n        new_url = old_url[:]\n\n        if (settings.PREPEND_WWW and old_url[0] and\n                not old_url[0].startswith('www.')):\n            new_url[0] = 'www.' + old_url[0]\n\n        # Append a slash if APPEND_SLASH is set and the URL doesn't have a\n        # trailing slash and there is no pattern for the current path 填补 /\n        if settings.APPEND_SLASH and (not old_url[1].endswith('/')):\n            urlconf = getattr(request, 'urlconf', None)\n            if (not urlresolvers.is_valid_path(request.path_info, urlconf) and\n                    urlresolvers.is_valid_path(\"%s/\" % request.path_info, urlconf)):\n\n                    new_url[1] = new_url[1] + '/' # 填\n\n                if settings.DEBUG and request.method == 'POST':\n                    raise RuntimeError((\"\"\n                    \"You called this URL via POST, but the URL doesn't end \"\n                    \"in a slash and you have APPEND_SLASH set. Django can't \"\n                    \"redirect to the slash URL while maintaining POST data. \"\n                    \"Change your form to point to %s%s (note the trailing \"\n                    \"slash), or set APPEND_SLASH=False in your Django \"\n                    \"settings.\") % (new_url[0], new_url[1]))\n\n        if new_url == old_url:\n            # No redirects required.\n            return\n\n        if new_url[0]:\n            newurl = \"%s://%s%s\" % (\n                request.is_secure() and 'https' or 'http',\n                new_url[0], urlquote(new_url[1]))\n        else:\n            newurl = urlquote(new_url[1])\n\n        if request.META.get('QUERY_STRING', ''):\n            if six.PY3:\n                newurl += '?' + request.META['QUERY_STRING']\n            else:\n                # `query_string` is a bytestring. Appending it to the unicode\n                # string `newurl` will fail if it isn't ASCII-only. This isn't\n                # allowed; only broken software generates such query strings.\n                # Better drop the invalid query string than crash (#15152).\n                try:\n                    newurl += '?' + request.META['QUERY_STRING'].decode()\n                except UnicodeDecodeError:\n                    pass\n        return http.HttpResponsePermanentRedirect(newurl)\n\n    def process_response(self, request, response):\n        \"Send broken link emails and calculate the Etag, if needed.\"\n\n        # 如果返回 404,找不到资源\n        if response.status_code == 404:\n            if settings.SEND_BROKEN_LINK_EMAILS and not settings.DEBUG:\n                # If the referrer was from an internal link or a non-search-engine site,\n                # send a note to the managers.\n                domain = request.get_host()\n                referer = request.META.get('HTTP_REFERER', None)\n                is_internal = _is_internal_request(domain, referer)\n                path = request.get_full_path()\n\n                if referer and not _is_ignorable_404(path) and (is_internal or '?' not in referer):\n                    ua = request.META.get('HTTP_USER_AGENT', '<none>')\n                    ip = request.META.get('REMOTE_ADDR', '<none>')\n\n                    mail_managers(\"Broken %slink on %s\" % ((is_internal and 'INTERNAL ' or ''), domain),\n                        \"Referrer: %s\\nRequested URL: %s\\nUser agent: %s\\nIP address: %s\\n\" \\\n                                  % (referer, request.get_full_path(), ua, ip),\n                                  fail_silently=True)\n\n                    # mail_managers 会发送错误信息给开发者\n                return response\n\n        # Use ETags, if requested.\n        if settings.USE_ETAGS:\n            if response.has_header('ETag'):\n                etag = response['ETag']\n            elif response.streaming:\n                etag = None\n            else:\n                etag = '\"%s\"' % hashlib.md5(response.content).hexdigest()\n\n            if etag is not None:\n                if (200 <= response.status_code < 300\n                    and request.META.get('HTTP_IF_NONE_MATCH') == etag):\n                    cookies = response.cookies\n                    response = http.HttpResponseNotModified() #304\n                    response.cookies = cookies\n                else:\n                    response['ETag'] = etag\n\n        return response\n\ndef _is_ignorable_404(uri):\n    \"\"\"\n    Returns True if a 404 at the given URL *shouldn't* notify the site managers. 如果是 404 不通知开发人员或者管理人员,返回 true\n    \"\"\"\n    if getattr(settings, 'IGNORABLE_404_STARTS', ()):\n        import warnings\n        warnings.warn('The IGNORABLE_404_STARTS setting has been deprecated '\n                      'in favor of IGNORABLE_404_URLS.', DeprecationWarning)\n        # 如果以某些字符开头的 uri 且状态码是 404,就返回\n        for start in settings.IGNORABLE_404_STARTS:\n            if uri.startswith(start):\n                return True\n\n    if getattr(settings, 'IGNORABLE_404_ENDS', ()):\n        import warnings\n        warnings.warn('The IGNORABLE_404_ENDS setting has been deprecated '\n                      'in favor of IGNORABLE_404_URLS.', DeprecationWarning)\n        # 如果以某些字符的 uri 且状态码是 404,就返回\n        for end in settings.IGNORABLE_404_ENDS:\n            if uri.endswith(end):\n                return True\n    # 还有一个 IGNORABLE_404_URLS 设置,专门放置忽略 404 的uri.######## 不是真正的忽略\n    return any(pattern.search(uri) for pattern in settings.IGNORABLE_404_URLS)\n\ndef _is_internal_request(domain, referer):\n    \"\"\"\n    Returns true if the referring URL is the same domain as the current request.\n    判断是否为本站点的 url\n    \"\"\"\n    # Different subdomains are treated as different domains.\n    return referer is not None and re.match(\"^https?://%s/\" % re.escape(domain), referer)\n"
  },
  {
    "path": "Django-1.5.1/django/middleware/csrf.py",
    "content": "\"\"\"\nCross Site Request Forgery Middleware.\n\nThis module provides a middleware that implements protection\nagainst request forgeries 伪造 from other sites.\n\ncsrf 中间件,一般只处理 cookie\n在 form 如果是 post 处理的时候,会在 form 中添加隐藏域,目前还不知道是在哪里添加了这个隐藏域\n\"\"\"\nfrom __future__ import unicode_literals\n\nimport hashlib\nimport logging # This module defines functions and classes which implement a flexible event logging system for applications and libraries.\nimport re\nimport random\n\nfrom django.conf import settings\nfrom django.core.urlresolvers import get_callable\nfrom django.utils.cache import patch_vary_headers\nfrom django.utils.encoding import force_text\nfrom django.utils.http import same_origin\nfrom django.utils.crypto import constant_time_compare, get_random_string\n\n\nlogger = logging.getLogger('django.request')\n\nREASON_NO_REFERER = \"Referer checking failed - no Referer.\"\nREASON_BAD_REFERER = \"Referer checking failed - %s does not match %s.\"\nREASON_NO_CSRF_COOKIE = \"CSRF cookie not set.\"\nREASON_BAD_TOKEN = \"CSRF token missing or incorrect.\"\n\nCSRF_KEY_LENGTH = 32 # 默认 32 位\n\ndef _get_failure_view():\n    \"\"\"\n    Returns the view to be used for CSRF rejections\n    \"\"\"\n    # CSRF_FAILURE_VIEW  在 setting 中设定,返回 csrf 失败函数\n    return get_callable(settings.CSRF_FAILURE_VIEW)\n\n# 返回新的 csrf 字符串\ndef _get_new_csrf_key():\n    return get_random_string(CSRF_KEY_LENGTH)\n\n\ndef get_token(request):\n    \"\"\"\n    Returns the CSRF token required for a POST form. The token is an\n    alphanumeric  [alpha numeric 字母数字结合的] value.\n\n    A side effect of calling this function is to make the csrf_protect\n    decorator and the CsrfViewMiddleware add a CSRF cookie and a 'Vary: Cookie'\n    header to the outgoing response.  For this reason, you may need to use this\n    function lazily, as is done by the csrf context processor.\n    \"\"\"\n    # 提取请求中的 cstf token\n    request.META[\"CSRF_COOKIE_USED\"] = True\n    return request.META.get(\"CSRF_COOKIE\", None)\n\n\ndef _sanitize_token(token): # sanitize 使无害消毒\n    # Allow only alphanum\n    if len(token) > CSRF_KEY_LENGTH:\n        return _get_new_csrf_key()\n    token = re.sub('[^a-zA-Z0-9]+', '', force_text(token)) # sub re,new,text\n    if token == \"\":\n        # In case the cookie has been truncated to nothing at some point.\n        return _get_new_csrf_key()\n    return token\n\n# 中间件\nclass CsrfViewMiddleware(object):\n    \"\"\"\n    Middleware that requires a present and correct csrfmiddlewaretoken\n    for POST requests that have a CSRF cookie, and sets an outgoing\n    CSRF cookie.\n\n    This middleware should be used in conjunction with 与 ... 协作 the csrf_token template\n    tag.\n    \"\"\"\n    # The _accept and _reject methods currently only exist for the sake of the\n    # requires_csrf_token decorator. \n    # 只有 requires_csrf_token 修饰符到时候才可以使用\n    def _accept(self, request):\n        # Avoid checking the request twice by adding a custom attribute to\n        # request.  This will be relevant when both decorator and middleware\n        # are used.\n        request.csrf_processing_done = True\n        return None\n\n    # 返回错误页面\n    def _reject(self, request, reason):\n        return _get_failure_view()(request, reason=reason)\n\n    def process_view(self, request, callback, callback_args, callback_kwargs):\n\n        if getattr(request, 'csrf_processing_done', False):\n            return None\n\n        try:\n            csrf_token = _sanitize_token(\n                request.COOKIES[settings.CSRF_COOKIE_NAME])\n            # Use same token next time\n            request.META['CSRF_COOKIE'] = csrf_token # 设置 request 的 cookie ,为什么?\n        except KeyError:\n            csrf_token = None\n            # Generate token and store it in the request, so it's\n            # available to the view.\n            request.META[\"CSRF_COOKIE\"] = _get_new_csrf_key()\n\n        # Wait until request.META[\"CSRF_COOKIE\"] has been manipulated before\n        # bailing out, so that get_token still works\n        if getattr(callback, 'csrf_exempt', False): # exempt 免除.在 view 中可以添加 cstr_exempt 修饰,表示可以省略 csrf 的检测\n            return None\n\n        # Assume that anything not defined as 'safe' by RFC2616 needs protection\n        if request.method not in ('GET', 'HEAD', 'OPTIONS', 'TRACE'): # POST\n            if getattr(request, '_dont_enforce_csrf_checks', False):\n                # Mechanism to turn off CSRF checks for test suite.\n                # It comes after the creation of CSRF cookies, so that\n                # everything else continues to work exactly the same\n                # (e.g. cookies are sent, etc.), but before any\n                # branches that call reject().\n                return self._accept(request)\n\n            if request.is_secure():\n                # Suppose user visits http://example.com/\n                # An active network attacker (man-in-the-middle, MITM) sends a\n                # POST form that targets https://example.com/detonate-bomb/ and\n                # submits it via JavaScript.\n                #\n                # The attacker will need to provide a CSRF cookie and token, but\n                # that's no problem for a MITM and the session-independent\n                # nonce we're using. So the MITM can circumvent the CSRF\n                # protection. This is true for any HTTP connection, but anyone\n                # using HTTPS expects better! For this reason, for\n                # https://example.com/ we need additional protection that treats\n                # http://example.com/ as completely untrusted. Under HTTPS,\n                # Barth et al. found that the Referer header is missing for\n                # same-domain requests in only about 0.2% of cases or less, so\n                # we can use strict Referer checking.\n                referer = request.META.get('HTTP_REFERER')\n                if referer is None:\n                    logger.warning('Forbidden (%s): %s',\n                                   REASON_NO_REFERER, request.path,\n                        extra={\n                            'status_code': 403,\n                            'request': request,\n                        }\n                    )\n                    return self._reject(request, REASON_NO_REFERER)\n\n                # Note that request.get_host() includes the port.\n                good_referer = 'https://%s/' % request.get_host()\n                if not same_origin(referer, good_referer):\n                    reason = REASON_BAD_REFERER % (referer, good_referer)\n                    logger.warning('Forbidden (%s): %s', reason, request.path,\n                        extra={\n                            'status_code': 403,\n                            'request': request,\n                        }\n                    )\n                    return self._reject(request, reason)\n\n            if csrf_token is None:\n                # No CSRF cookie. For POST requests, we insist on a CSRF cookie,\n                # and in this way we can avoid all CSRF attacks, including login\n                # CSRF.\n                logger.warning('Forbidden (%s): %s',\n                               REASON_NO_CSRF_COOKIE, request.path,\n                    extra={\n                        'status_code': 403,\n                        'request': request,\n                    }\n                )\n                return self._reject(request, REASON_NO_CSRF_COOKIE)\n\n            # Check non-cookie token for match.\n            request_csrf_token = \"\"\n            if request.method == \"POST\":\n                request_csrf_token = request.POST.get('csrfmiddlewaretoken', '')\n\n            if request_csrf_token == \"\":\n                # Fall back to X-CSRFToken, to make things easier for AJAX,\n                # and possible for PUT/DELETE.\n                request_csrf_token = request.META.get('HTTP_X_CSRFTOKEN', '')\n\n                # 防止 timing-attack\n            if not constant_time_compare(request_csrf_token, csrf_token):\n                logger.warning('Forbidden (%s): %s',\n                               REASON_BAD_TOKEN, request.path,\n                    extra={\n                        'status_code': 403,\n                        'request': request,\n                    }\n                )\n                return self._reject(request, REASON_BAD_TOKEN)\n\n        return self._accept(request)\n\n    def process_response(self, request, response):\n        if getattr(response, 'csrf_processing_done', False):\n            return response\n\n        # If CSRF_COOKIE is unset, then CsrfViewMiddleware.process_view was\n        # never called, probaby because a request middleware returned a response\n        # (for example, contrib.auth redirecting to a login page).\n        if request.META.get(\"CSRF_COOKIE\") is None:\n            return response\n\n        if not request.META.get(\"CSRF_COOKIE_USED\", False):\n            return response\n\n        # Set the CSRF cookie even if it's already set, so we renew\n        # the expiry timer.\n        response.set_cookie(settings.CSRF_COOKIE_NAME,\n                            request.META[\"CSRF_COOKIE\"],\n                            max_age = 60 * 60 * 24 * 7 * 52,\n                            domain=settings.CSRF_COOKIE_DOMAIN,\n                            path=settings.CSRF_COOKIE_PATH,\n                            secure=settings.CSRF_COOKIE_SECURE\n                            )\n        # Content varies with the CSRF cookie, so set the Vary header.\n        patch_vary_headers(response, ('Cookie',))\n        response.csrf_processing_done = True\n        return response\n"
  },
  {
    "path": "Django-1.5.1/django/middleware/doc.py",
    "content": "from django.conf import settings\nfrom django import http\n\nclass XViewMiddleware(object):\n    \"\"\"返回 view 的响应函数,python 自己定义的 x-view header\n    Adds an X-View header to internal HEAD requests -- used by the documentation system.\n    \"\"\"\n    def process_view(self, request, view_func, view_args, view_kwargs):\n        \"\"\"\n        If the request method is HEAD and either the IP is internal or the\n        user is a logged-in staff member, quickly return with an x-header\n        indicating the view function.  This is used by the documentation module\n        to lookup the view function for an arbitrary page.\n        \"\"\"\n        assert hasattr(request, 'user'), (\n            \"The XView middleware requires authentication middleware to be \"\n            \"installed. Edit your MIDDLEWARE_CLASSES setting to insert \"\n            \"'django.contrib.auth.middleware.AuthenticationMiddleware'.\")\n        if request.method == 'HEAD' and (request.META.get('REMOTE_ADDR') in settings.INTERNAL_IPS or\n                                         (request.user.is_active and request.user.is_staff)):\n            response = http.HttpResponse()\n            response['X-View'] = \"%s.%s\" % (view_func.__module__, view_func.__name__)\n            return response\n"
  },
  {
    "path": "Django-1.5.1/django/middleware/gzip.py",
    "content": "import re\n\nfrom django.utils.text import compress_sequence, compress_string\nfrom django.utils.cache import patch_vary_headers\n\nre_accepts_gzip = re.compile(r'\\bgzip\\b')\n\nclass GZipMiddleware(object):\n    \"\"\" 压缩中间件\n    This middleware compresses content if the browser allows gzip compression.\n    It sets the Vary header accordingly, so that caches will base their storage\n    on the Accept-Encoding header.\n    \"\"\"\n    def process_response(self, request, response):\n        # It's not worth attempting to compress really short responses. 如果太过小的包就直接返回\n        if not response.streaming and len(response.content) < 200:\n            return response\n\n        patch_vary_headers(response, ('Accept-Encoding',))\n\n        # Avoid gzipping if we've already got a content-encoding.\n        if response.has_header('Content-Encoding'): #如果已经存在压缩编码处理,就直接放弃\n            return response\n\n        # MSIE have issues with gzipped response of various content types.\n        if \"msie\" in request.META.get('HTTP_USER_AGENT', '').lower():\n            ctype = response.get('Content-Type', '').lower()\n            if not ctype.startswith(\"text/\") or \"javascript\" in ctype:\n                return response\n\n        ae = request.META.get('HTTP_ACCEPT_ENCODING', '')\n        if not re_accepts_gzip.search(ae):\n            return response\n\n        if response.streaming:\n            # Delete the `Content-Length` header for streaming content, because 压缩后,content-length 应该会变小\n            # we won't know the compressed size until we stream it.\n            response.streaming_content = compress_sequence(response.streaming_content)\n            del response['Content-Length']\n        else:\n            # Return the compressed content only if it's actually shorter.\n            compressed_content = compress_string(response.content)\n            if len(compressed_content) >= len(response.content): #看值不值得压缩\n                return response\n            response.content = compressed_content\n            response['Content-Length'] = str(len(response.content))\n\n        if response.has_header('ETag'):\n            response['ETag'] = re.sub('\"$', ';gzip\"', response['ETag'])\n        response['Content-Encoding'] = 'gzip'\n\n        return response\n"
  },
  {
    "path": "Django-1.5.1/django/middleware/http.py",
    "content": "from django.utils.http import http_date, parse_http_date_safe\n\nclass ConditionalGetMiddleware(object):\n    \"\"\" 是否进行重定向相应\n    Handles conditional GET operations. If the response has a ETag or\n    Last-Modified header, and the request has If-None-Match or\n    If-Modified-Since, the response is replaced by an HttpNotModified.\n\n    Also sets the Date and Content-Length response-headers.\n    \"\"\"\n    def process_response(self, request, response):\n        response['Date'] = http_date()\n        if not response.streaming and not response.has_header('Content-Length'):\n            response['Content-Length'] = str(len(response.content))\n\n        if response.has_header('ETag'):\n            if_none_match = request.META.get('HTTP_IF_NONE_MATCH')\n            if if_none_match == response['ETag']:\n                # Setting the status is enough here. The response handling path\n                # automatically removes content for this status code (in\n                # http.conditional_content_removal()).\n                response.status_code = 304\n\n        # Last-Modified 用于指示最后修改的时间\n        if response.has_header('Last-Modified'):\n            if_modified_since = request.META.get('HTTP_IF_MODIFIED_SINCE')\n            if if_modified_since is not None:\n                if_modified_since = parse_http_date_safe(if_modified_since)\n            if if_modified_since is not None:\n                last_modified = parse_http_date_safe(response['Last-Modified'])\n                if last_modified is not None and last_modified <= if_modified_since:\n                    # Setting the status code is enough here (same reasons as\n                    # above).\n                    response.status_code = 304\n\n        return response\n"
  },
  {
    "path": "Django-1.5.1/django/middleware/locale.py",
    "content": "\"This is the locale selecting middleware that will look at accept headers\"\n\nfrom django.conf import settings\nfrom django.core.urlresolvers import (is_valid_path, get_resolver,\n                                      LocaleRegexURLResolver)\nfrom django.http import HttpResponseRedirect\nfrom django.utils.cache import patch_vary_headers\nfrom django.utils import translation\n\n\nclass LocaleMiddleware(object):\n    \"\"\" 区域语言\n    This is a very simple middleware that parses a request\n    and decides what translation object to install in the current\n    thread context. This allows pages to be dynamically\n    translated to the language the user desires (if the language\n    is available, of course).\n    \"\"\"\n    #提取请求中指明的语言\n    def process_request(self, request):\n        check_path = self.is_language_prefix_patterns_used()\n        language = translation.get_language_from_request(\n            request, check_path=check_path)\n        translation.activate(language)\n        request.LANGUAGE_CODE = translation.get_language()\n\n    #\n    def process_response(self, request, response):\n        language = translation.get_language()\n        if (response.status_code == 404 and\n                not translation.get_language_from_path(request.path_info)\n                    and self.is_language_prefix_patterns_used()):\n            urlconf = getattr(request, 'urlconf', None)\n            language_path = '/%s%s' % (language, request.path_info)\n            path_valid = is_valid_path(language_path, urlconf)\n            if (not path_valid and settings.APPEND_SLASH\n                    and not language_path.endswith('/')):\n                path_valid = is_valid_path(\"%s/\" % language_path, urlconf)\n\n            if path_valid:\n                language_url = \"%s://%s/%s%s\" % (\n                    request.is_secure() and 'https' or 'http',\n                    request.get_host(), language, request.get_full_path())\n                return HttpResponseRedirect(language_url)\n        translation.deactivate()\n\n        patch_vary_headers(response, ('Accept-Language',))\n        if 'Content-Language' not in response:\n            response['Content-Language'] = language\n        return response\n\n    def is_language_prefix_patterns_used(self):\n        \"\"\"\n        Returns `True` if the `LocaleRegexURLResolver` is used\n        at root level of the urlpatterns, else it returns `False`. 如果正则 URL 解析器启用,返回 true\n        \"\"\"\n        for url_pattern in get_resolver(None).url_patterns:\n            if isinstance(url_pattern, LocaleRegexURLResolver):\n                return True\n        return False\n"
  },
  {
    "path": "Django-1.5.1/django/middleware/transaction.py",
    "content": "from django.db import transaction\n\nclass TransactionMiddleware(object):\n    \"\"\" 数据库事物处理,只有 response 成功创建的时候数据库才执行一次 commit.如果出现异常,数据库可以 rollback\n    Transaction middleware. If this is enabled, each view function will be run\n    with commit_on_response activated - that way a save() doesn't do a direct\n    commit, the commit is done when a successful response is created. If an\n    exception happens, the database is rolled back.\n    \"\"\"\n    def process_request(self, request):\n        \"\"\"Enters transaction management\"\"\"\n        transaction.enter_transaction_management()\n        transaction.managed(True)\n\n    def process_exception(self, request, exception):\n        \"\"\"Rolls back the database and leaves transaction management\"\"\"\n        if transaction.is_dirty():\n            # This rollback might fail because of network failure for example.\n            # If rollback isn't possible it is impossible to clean the\n            # connection's state. So leave the connection in dirty state and\n            # let request_finished signal deal with cleaning the connection.\n            transaction.rollback()\n        transaction.leave_transaction_management()\n\n    def process_response(self, request, response):\n        \"\"\"Commits and leaves transaction management.\"\"\"\n        if transaction.is_managed():\n            if transaction.is_dirty():\n                # Note: it is possible that the commit fails. If the reason is\n                # closed connection or some similar reason, then there is\n                # little hope to proceed nicely. However, in some cases (\n                # deferred foreign key checks for exampl) it is still possible\n                # to rollback().\n                try:\n                    transaction.commit()\n                except Exception:\n                    # If the rollback fails, the transaction state will be\n                    # messed up. It doesn't matter, the connection will be set\n                    # to clean state after the request finishes. And, we can't\n                    # clean the state here properly even if we wanted to, the\n                    # connection is in transaction but we can't rollback...\n                    transaction.rollback()\n                    transaction.leave_transaction_management()\n                    raise\n            transaction.leave_transaction_management()\n        return response\n"
  },
  {
    "path": "Django-1.5.1/django/shortcuts/__init__.py",
    "content": "\"\"\"\nThis module collects helper functions and classes that \"span\" multiple levels\nof MVC. In other words, these functions/classes introduce controlled coupling\nfor convenience's sake. 耦合控制\n\"\"\"\nimport warnings\n\nfrom django.template import loader, RequestContext\nfrom django.http import HttpResponse, Http404\nfrom django.http import HttpResponseRedirect, HttpResponsePermanentRedirect\nfrom django.db.models.base import ModelBase\nfrom django.db.models.manager import Manager\nfrom django.db.models.query import QuerySet\nfrom django.core import urlresolvers\n\ndef render_to_response(*args, **kwargs):\n    \"\"\"\n    Returns a HttpResponse whose content is filled with the result of calling\n    django.template.loader.render_to_string() with the passed arguments.\n    \"\"\"\n    httpresponse_kwargs = {'content_type': kwargs.pop('content_type', None)}\n\n    mimetype = kwargs.pop('mimetype', None)\n    if mimetype:\n        warnings.warn(\"The mimetype keyword argument is deprecated, use \"\n            \"content_type instead\", PendingDeprecationWarning, stacklevel=2)\n        httpresponse_kwargs['content_type'] = mimetype\n\n    return HttpResponse(loader.render_to_string(*args, **kwargs), **httpresponse_kwargs)\n\ndef render(request, *args, **kwargs):\n    \"\"\"\n    Returns a HttpResponse whose content is filled with the result of calling\n    django.template.loader.render_to_string() with the passed arguments.\n    Uses a RequestContext by default.\n    \"\"\"\n    httpresponse_kwargs = {\n        'content_type': kwargs.pop('content_type', None),\n        'status': kwargs.pop('status', None),\n    }\n\n    # 不懂,上下文实例\n    if 'context_instance' in kwargs:\n        context_instance = kwargs.pop('context_instance')\n        if kwargs.get('current_app', None):\n            raise ValueError('If you provide a context_instance you must '\n                             'set its current_app before calling render()')\n    else:\n        current_app = kwargs.pop('current_app', None)\n        context_instance = RequestContext(request, current_app=current_app)\n\n    kwargs['context_instance'] = context_instance\n\n    # 从上一步可以看出 context_instance 被传入了 kwargs, 然后调用 httpresponse,秘密在后面\n    return HttpResponse(loader.render_to_string(*args, **kwargs),\n                        **httpresponse_kwargs)\n\ndef redirect(to, *args, **kwargs):\n    \"\"\"\n    和 HttpResponseRedirect 关联\n    Returns an HttpResponseRedirect to the apropriate URL for the arguments\n    passed.\n\n    The arguments could be:\n\n    参数可以是:\n    一个模块,会调用 get_absolute_url\n    一个视图名子,在 urlconf 中可以设置的\n    一个 url\n\n        * A model: the model's `get_absolute_url()` function will be called.\n\n        * A view name, possibly with arguments: `urlresolvers.reverse()` will\n          be used to reverse-resolve the name.\n\n        * A URL, which will be used as-is for the redirect location.\n\n    By default issues a temporary redirect; pass permanent=True to issue a\n    permanent redirect\n    \"\"\"\n    if kwargs.pop('permanent', False):\n        redirect_class = HttpResponsePermanentRedirec #放出一个暂时的重定向,\n    else:\n        redirect_class = HttpResponseRedirect # 永久的重定向\n\n    return redirect_class(resolve_url(to, *args, **kwargs))\n\ndef _get_queryset(klass):\n    \"\"\"\n    返回 klass 的结果集\n    Returns a QuerySet from a Model, Manager, or QuerySet. Created to make\n    get_object_or_404 and get_list_or_404 more DRY.\n\n    Raises a ValueError if klass is not a Model, Manager, or QuerySet.\n    \"\"\"\n    if isinstance(klass, QuerySet):\n        return klass\n    elif isinstance(klass, Manager):\n        manager = klass\n    elif isinstance(klass, ModelBase):\n        manager = klass._default_manager\n    else:\n        klass__name = klass.__name__ if isinstance(klass, type) \\\n                      else klass.__class__.__name__\n        raise ValueError(\"Object is of type '%s', but must be a Django Model, \"\n                         \"Manager, or QuerySet\" % klass__name)\n    return manager.all()\n\ndef get_object_or_404(klass, *args, **kwargs):\n    \"\"\"\n    会返回一个 queryset 中的对象,或者如果没有这个对象,就直接 404 \n    Uses get() to return an object, or raises a Http404 exception if the object\n    does not exist.\n\n    klass may be a Model, Manager, or QuerySet object. All other passed\n    arguments and keyword arguments are used in the get() query.\n\n    Note: Like with get(), an MultipleObjectsReturned will be raised if more than one\n    object is found.\n    \"\"\"\n    queryset = _get_queryset(klass)\n    try:\n        return queryset.get(*args, **kwargs)\n\n    except queryset.model.DoesNotExist:\n        raise Http404('No %s matches the given query.' % queryset.model._meta.object_name)\n\ndef get_list_or_404(klass, *args, **kwargs):\n    \"\"\"\n    和上面的函数差不多,只是 get 换成 filter,返回多个对象或者 404\n    Uses filter() to return a list of objects, or raise a Http404 exception if\n    the list is empty.\n\n    klass may be a Model, Manager, or QuerySet object. All other passed\n    arguments and keyword arguments are used in the filter() query.\n    \"\"\"\n    queryset = _get_queryset(klass)\n    obj_list = list(queryset.filter(*args, **kwargs))\n    if not obj_list:\n        raise Http404('No %s matches the given query.' % queryset.model._meta.object_name)\n    return obj_list\n\ndef resolve_url(to, *args, **kwargs):\n    \"\"\"\n    Return a URL appropriate for the arguments passed.\n\n    The arguments could be:\n\n        * A model: the model's `get_absolute_url()` function will be called.\n\n        * A view name, possibly with arguments: `urlresolvers.reverse()` will\n          be used to reverse-resolve the name.\n\n        * A URL, which will be returned as-is.\n\n    \"\"\"\n    # If it's a model, use get_absolute_url()\n    if hasattr(to, 'get_absolute_url'):\n        return to.get_absolute_url()\n\n    # Next try a reverse URL resolution.\n    try:\n        return urlresolvers.reverse(to, args=args, kwargs=kwargs)\n    except urlresolvers.NoReverseMatch:\n        # If this is a callable, re-raise.\n        if callable(to):\n            raise\n        # If this doesn't \"feel\" like a URL, re-raise.\n        if '/' not in to and '.' not in to:\n            raise\n\n    # Finally, fall back and assume it's a URL\n    return to\n"
  },
  {
    "path": "Django-1.5.1/django/template/__init__.py",
    "content": "\"\"\"\nThis is the Django template system.\n\nHow it works:\n\nThe Lexer.tokenize() function converts a template string (i.e., a string containing\nmarkup with custom template tags) to tokens, which can be either plain text\n(TOKEN_TEXT), variables (TOKEN_VAR) or block statements (TOKEN_BLOCK).\n\nThe Parser() class takes a list of tokens in its constructor, and its parse()\nmethod returns a compiled template -- which is, under the hood, a list of\nNode objects.\n\nEach Node is responsible for creating some sort of output -- e.g. simple text\n(TextNode), variable values in a given context (VariableNode), results of basic\nlogic (IfNode), results of looping (ForNode), or anything else. The core Node\ntypes are TextNode, VariableNode, IfNode and ForNode, but plugin modules can\ndefine their own custom node types.\n\nEach Node has a render() method, which takes a Context and returns a string of\nthe rendered node. For example, the render() method of a Variable Node returns\nthe variable's value as a string. The render() method of an IfNode returns the\nrendered output of whatever was inside the loop, recursively.\n\nThe Template class is a convenient wrapper that takes care of template\ncompilation and rendering.\n\nUsage:\n\nThe only thing you should ever use directly in this file is the Template class.\nCreate a compiled template object with a template_string, then call render()\nwith a context. In the compilation stage, the TemplateSyntaxError exception\nwill be raised if the template doesn't have proper syntax.\n\nSample code:\n\n>>> from django import template\n>>> s = u'<html>{% if test %}<h1>{{ varvalue }}</h1>{% endif %}</html>'\n>>> t = template.Template(s)\n\n(t is now a compiled template, and its render() method can be called multiple\ntimes with multiple contexts)\n\n>>> c = template.Context({'test':True, 'varvalue': 'Hello'})\n>>> t.render(c)\nu'<html><h1>Hello</h1></html>'\n>>> c = template.Context({'test':False, 'varvalue': 'Hello'})\n>>> t.render(c)\nu'<html></html>'\n\"\"\"\n\n# Template lexing symbols\nfrom django.template.base import (ALLOWED_VARIABLE_CHARS, BLOCK_TAG_END,\n    BLOCK_TAG_START, COMMENT_TAG_END, COMMENT_TAG_START,\n    FILTER_ARGUMENT_SEPARATOR, FILTER_SEPARATOR, SINGLE_BRACE_END,\n    SINGLE_BRACE_START, TOKEN_BLOCK, TOKEN_COMMENT, TOKEN_TEXT, TOKEN_VAR,\n    TRANSLATOR_COMMENT_MARK, UNKNOWN_SOURCE, VARIABLE_ATTRIBUTE_SEPARATOR,\n    VARIABLE_TAG_END, VARIABLE_TAG_START, filter_re, tag_re)\n\n# Exceptions\nfrom django.template.base import (ContextPopException, InvalidTemplateLibrary,\n    TemplateDoesNotExist, TemplateEncodingError, TemplateSyntaxError,\n    VariableDoesNotExist)\n\n# Template parts\nfrom django.template.base import (Context, FilterExpression, Lexer, Node,\n    NodeList, Parser, RequestContext, Origin, StringOrigin, Template,\n    TextNode, Token, TokenParser, Variable, VariableNode, constant_string,\n    filter_raw_string)\n\n# Compiling templates\nfrom django.template.base import (compile_string, resolve_variable,\n    unescape_string_literal, generic_tag_compiler)\n\n# Library management\nfrom django.template.base import (Library, add_to_builtins, builtins,\n    get_library, get_templatetags_modules, get_text_list, import_library,\n    libraries)\n\n__all__ = ('Template', 'Context', 'RequestContext', 'compile_string')\n"
  },
  {
    "path": "Django-1.5.1/django/template/base.py",
    "content": "from __future__ import absolute_import, unicode_literals\n\nimport re\nfrom functools import partial\nfrom inspect import getargspec\n\nfrom django.conf import settings\nfrom django.template.context import (Context, RequestContext,\n    ContextPopException)\nfrom django.utils.importlib import import_module\nfrom django.utils.itercompat import is_iterable\nfrom django.utils.text import (smart_split, unescape_string_literal,\n    get_text_list)\nfrom django.utils.encoding import force_str, force_text\nfrom django.utils.translation import ugettext_lazy, pgettext_lazy\nfrom django.utils.safestring import (SafeData, EscapeData, mark_safe,\n    mark_for_escaping)\nfrom django.utils.formats import localize\nfrom django.utils.html import escape\nfrom django.utils.module_loading import module_has_submodule\nfrom django.utils import six\nfrom django.utils.timezone import template_localtime\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\nTOKEN_TEXT = 0\nTOKEN_VAR = 1\nTOKEN_BLOCK = 2\nTOKEN_COMMENT = 3\nTOKEN_MAPPING = {\n    TOKEN_TEXT: 'Text',\n    TOKEN_VAR: 'Var',\n    TOKEN_BLOCK: 'Block',\n    TOKEN_COMMENT: 'Comment',\n}\n\n# template syntax constants\nFILTER_SEPARATOR = '|'\nFILTER_ARGUMENT_SEPARATOR = ':'\nVARIABLE_ATTRIBUTE_SEPARATOR = '.'\nBLOCK_TAG_START = '{%'\nBLOCK_TAG_END = '%}'\nVARIABLE_TAG_START = '{{'\nVARIABLE_TAG_END = '}}'\nCOMMENT_TAG_START = '{#'\nCOMMENT_TAG_END = '#}'\nTRANSLATOR_COMMENT_MARK = 'Translators'\nSINGLE_BRACE_START = '{'\nSINGLE_BRACE_END = '}'\n\nALLOWED_VARIABLE_CHARS = ('abcdefghijklmnopqrstuvwxyz'\n                         'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_.')\n\n# what to report as the origin for templates that come from non-loader sources\n# (e.g. strings)\nUNKNOWN_SOURCE = '<unknown source>'\n\n# match a variable or block tag and capture the entire tag, including start/end\n# delimiters\ntag_re = (re.compile('(%s.*?%s|%s.*?%s|%s.*?%s)' %\n          (re.escape(BLOCK_TAG_START), re.escape(BLOCK_TAG_END),\n           re.escape(VARIABLE_TAG_START), re.escape(VARIABLE_TAG_END),\n           re.escape(COMMENT_TAG_START), re.escape(COMMENT_TAG_END))))\n\n# global dictionary of libraries that have been loaded using get_library\nlibraries = {}\n# global list of libraries to load by default for a new parser\nbuiltins = []\n\n# True if TEMPLATE_STRING_IF_INVALID contains a format string (%s). None means\n# uninitialised.\ninvalid_var_format_string = None\n\nclass TemplateSyntaxError(Exception):\n    pass\n\nclass TemplateDoesNotExist(Exception):\n    pass\n\nclass TemplateEncodingError(Exception):\n    pass\n\n@python_2_unicode_compatible\nclass VariableDoesNotExist(Exception):\n\n    def __init__(self, msg, params=()):\n        self.msg = msg\n        self.params = params\n\n    def __str__(self):\n        return self.msg % tuple([force_text(p, errors='replace')\n                                 for p in self.params])\n\nclass InvalidTemplateLibrary(Exception):\n    pass\n\nclass Origin(object):\n    def __init__(self, name):\n        self.name = name\n\n    def reload(self):\n        raise NotImplementedError\n\n    def __str__(self):\n        return self.name\n\nclass StringOrigin(Origin):\n    def __init__(self, source):\n        super(StringOrigin, self).__init__(UNKNOWN_SOURCE)\n        self.source = source\n\n    def reload(self):\n        return self.source\n\nclass Template(object):\n    def __init__(self, template_string, origin=None,\n                 name='<Unknown Template>'):\n        try:\n            template_string = force_text(template_string)\n        except UnicodeDecodeError:\n            raise TemplateEncodingError(\"Templates can only be constructed \"\n                                        \"from unicode or UTF-8 strings.\")\n        if settings.TEMPLATE_DEBUG and origin is None:\n            origin = StringOrigin(template_string)\n        self.nodelist = compile_string(template_string, origin)\n        self.name = name\n\n    def __iter__(self):\n        for node in self.nodelist:\n            for subnode in node:\n                yield subnode\n\n    def _render(self, context):\n        return self.nodelist.render(context)\n\n    def render(self, context):\n        \"Display stage -- can be called many times\"\n        context.render_context.push()\n        try:\n            return self._render(context)\n        finally:\n            context.render_context.pop()\n\ndef compile_string(template_string, origin):\n    \"Compiles template_string into NodeList ready for rendering\"\n    if settings.TEMPLATE_DEBUG:\n        from django.template.debug import DebugLexer, DebugParser\n        lexer_class, parser_class = DebugLexer, DebugParser\n    else:\n        lexer_class, parser_class = Lexer, Parser\n    lexer = lexer_class(template_string, origin)\n    parser = parser_class(lexer.tokenize())\n    return parser.parse()\n\nclass Token(object):\n    def __init__(self, token_type, contents):\n        # token_type must be TOKEN_TEXT, TOKEN_VAR, TOKEN_BLOCK or\n        # TOKEN_COMMENT.\n        self.token_type, self.contents = token_type, contents\n        self.lineno = None\n\n    def __str__(self):\n        token_name = TOKEN_MAPPING[self.token_type]\n        return ('<%s token: \"%s...\">' %\n                (token_name, self.contents[:20].replace('\\n', '')))\n\n    def split_contents(self):\n        split = []\n        bits = iter(smart_split(self.contents))\n        for bit in bits:\n            # Handle translation-marked template pieces\n            if bit.startswith('_(\"') or bit.startswith(\"_('\"):\n                sentinal = bit[2] + ')'\n                trans_bit = [bit]\n                while not bit.endswith(sentinal):\n                    bit = next(bits)\n                    trans_bit.append(bit)\n                bit = ' '.join(trans_bit)\n            split.append(bit)\n        return split\n\nclass Lexer(object):\n    def __init__(self, template_string, origin):\n        self.template_string = template_string\n        self.origin = origin\n        self.lineno = 1\n        self.verbatim = False\n\n    def tokenize(self):\n        \"\"\"\n        Return a list of tokens from a given template_string.\n        \"\"\"\n        in_tag = False\n        result = []\n        for bit in tag_re.split(self.template_string):\n            if bit:\n                result.append(self.create_token(bit, in_tag))\n            in_tag = not in_tag\n        return result\n\n    def create_token(self, token_string, in_tag):\n        \"\"\"\n        Convert the given token string into a new Token object and return it.\n        If in_tag is True, we are processing something that matched a tag,\n        otherwise it should be treated as a literal string.\n        \"\"\"\n        if in_tag and token_string.startswith(BLOCK_TAG_START):\n            # The [2:-2] ranges below strip off *_TAG_START and *_TAG_END.\n            # We could do len(BLOCK_TAG_START) to be more \"correct\", but we've\n            # hard-coded the 2s here for performance. And it's not like\n            # the TAG_START values are going to change anytime, anyway.\n            block_content = token_string[2:-2].strip()\n            if self.verbatim and block_content == self.verbatim:\n                self.verbatim = False\n        if in_tag and not self.verbatim:\n            if token_string.startswith(VARIABLE_TAG_START):\n                token = Token(TOKEN_VAR, token_string[2:-2].strip())\n            elif token_string.startswith(BLOCK_TAG_START):\n                if block_content[:9] in ('verbatim', 'verbatim '):\n                    self.verbatim = 'end%s' % block_content\n                token = Token(TOKEN_BLOCK, block_content)\n            elif token_string.startswith(COMMENT_TAG_START):\n                content = ''\n                if token_string.find(TRANSLATOR_COMMENT_MARK):\n                    content = token_string[2:-2].strip()\n                token = Token(TOKEN_COMMENT, content)\n        else:\n            token = Token(TOKEN_TEXT, token_string)\n        token.lineno = self.lineno\n        self.lineno += token_string.count('\\n')\n        return token\n\nclass Parser(object):\n    def __init__(self, tokens):\n        self.tokens = tokens\n        self.tags = {}\n        self.filters = {}\n        for lib in builtins:\n            self.add_library(lib)\n\n    def parse(self, parse_until=None):\n        if parse_until is None:\n            parse_until = []\n        nodelist = self.create_nodelist()\n        while self.tokens:\n            token = self.next_token()\n            # Use the raw values here for TOKEN_* for a tiny performance boost.\n            if token.token_type == 0: # TOKEN_TEXT\n                self.extend_nodelist(nodelist, TextNode(token.contents), token)\n            elif token.token_type == 1: # TOKEN_VAR\n                if not token.contents:\n                    self.empty_variable(token)\n                filter_expression = self.compile_filter(token.contents)\n                var_node = self.create_variable_node(filter_expression)\n                self.extend_nodelist(nodelist, var_node, token)\n            elif token.token_type == 2: # TOKEN_BLOCK\n                try:\n                    command = token.contents.split()[0]\n                except IndexError:\n                    self.empty_block_tag(token)\n                if command in parse_until:\n                    # put token back on token list so calling\n                    # code knows why it terminated\n                    self.prepend_token(token)\n                    return nodelist\n                # execute callback function for this tag and append\n                # resulting node\n                self.enter_command(command, token)\n                try:\n                    compile_func = self.tags[command]\n                except KeyError:\n                    self.invalid_block_tag(token, command, parse_until)\n                try:\n                    compiled_result = compile_func(self, token)\n                except TemplateSyntaxError as e:\n                    if not self.compile_function_error(token, e):\n                        raise\n                self.extend_nodelist(nodelist, compiled_result, token)\n                self.exit_command()\n        if parse_until:\n            self.unclosed_block_tag(parse_until)\n        return nodelist\n\n    def skip_past(self, endtag):\n        while self.tokens:\n            token = self.next_token()\n            if token.token_type == TOKEN_BLOCK and token.contents == endtag:\n                return\n        self.unclosed_block_tag([endtag])\n\n    def create_variable_node(self, filter_expression):\n        return VariableNode(filter_expression)\n\n    def create_nodelist(self):\n        return NodeList()\n\n    def extend_nodelist(self, nodelist, node, token):\n        if node.must_be_first and nodelist:\n            try:\n                if nodelist.contains_nontext:\n                    raise AttributeError\n            except AttributeError:\n                raise TemplateSyntaxError(\"%r must be the first tag \"\n                                          \"in the template.\" % node)\n        if isinstance(nodelist, NodeList) and not isinstance(node, TextNode):\n            nodelist.contains_nontext = True\n        nodelist.append(node)\n\n    def enter_command(self, command, token):\n        pass\n\n    def exit_command(self):\n        pass\n\n    def error(self, token, msg):\n        return TemplateSyntaxError(msg)\n\n    def empty_variable(self, token):\n        raise self.error(token, \"Empty variable tag\")\n\n    def empty_block_tag(self, token):\n        raise self.error(token, \"Empty block tag\")\n\n    def invalid_block_tag(self, token, command, parse_until=None):\n        if parse_until:\n            raise self.error(token, \"Invalid block tag: '%s', expected %s\" %\n                (command, get_text_list([\"'%s'\" % p for p in parse_until])))\n        raise self.error(token, \"Invalid block tag: '%s'\" % command)\n\n    def unclosed_block_tag(self, parse_until):\n        raise self.error(None, \"Unclosed tags: %s \" % ', '.join(parse_until))\n\n    def compile_function_error(self, token, e):\n        pass\n\n    def next_token(self):\n        return self.tokens.pop(0)\n\n    def prepend_token(self, token):\n        self.tokens.insert(0, token)\n\n    def delete_first_token(self):\n        del self.tokens[0]\n\n    def add_library(self, lib):\n        self.tags.update(lib.tags)\n        self.filters.update(lib.filters)\n\n    def compile_filter(self, token):\n        \"\"\"\n        Convenient wrapper for FilterExpression\n        \"\"\"\n        return FilterExpression(token, self)\n\n    def find_filter(self, filter_name):\n        if filter_name in self.filters:\n            return self.filters[filter_name]\n        else:\n            raise TemplateSyntaxError(\"Invalid filter: '%s'\" % filter_name)\n\nclass TokenParser(object):\n    \"\"\"\n    Subclass this and implement the top() method to parse a template line.\n    When instantiating the parser, pass in the line from the Django template\n    parser.\n\n    The parser's \"tagname\" instance-variable stores the name of the tag that\n    the filter was called with.\n    \"\"\"\n    def __init__(self, subject):\n        self.subject = subject\n        self.pointer = 0\n        self.backout = []\n        self.tagname = self.tag()\n\n    def top(self):\n        \"\"\"\n        Overload this method to do the actual parsing and return the result.\n        \"\"\"\n        raise NotImplementedError()\n\n    def more(self):\n        \"\"\"\n        Returns True if there is more stuff in the tag.\n        \"\"\"\n        return self.pointer < len(self.subject)\n\n    def back(self):\n        \"\"\"\n        Undoes the last microparser. Use this for lookahead and backtracking.\n        \"\"\"\n        if not len(self.backout):\n            raise TemplateSyntaxError(\"back called without some previous \"\n                                      \"parsing\")\n        self.pointer = self.backout.pop()\n\n    def tag(self):\n        \"\"\"\n        A microparser that just returns the next tag from the line.\n        \"\"\"\n        subject = self.subject\n        i = self.pointer\n        if i >= len(subject):\n            raise TemplateSyntaxError(\"expected another tag, found \"\n                                      \"end of string: %s\" % subject)\n        p = i\n        while i < len(subject) and subject[i] not in (' ', '\\t'):\n            i += 1\n        s = subject[p:i]\n        while i < len(subject) and subject[i] in (' ', '\\t'):\n            i += 1\n        self.backout.append(self.pointer)\n        self.pointer = i\n        return s\n\n    def value(self):\n        \"\"\"\n        A microparser that parses for a value: some string constant or\n        variable name.\n        \"\"\"\n        subject = self.subject\n        i = self.pointer\n\n        def next_space_index(subject, i):\n            \"\"\"\n            Increment pointer until a real space (i.e. a space not within\n            quotes) is encountered\n            \"\"\"\n            while i < len(subject) and subject[i] not in (' ', '\\t'):\n                if subject[i] in ('\"', \"'\"):\n                    c = subject[i]\n                    i += 1\n                    while i < len(subject) and subject[i] != c:\n                        i += 1\n                    if i >= len(subject):\n                        raise TemplateSyntaxError(\"Searching for value. \"\n                            \"Unexpected end of string in column %d: %s\" %\n                            (i, subject))\n                i += 1\n            return i\n\n        if i >= len(subject):\n            raise TemplateSyntaxError(\"Searching for value. Expected another \"\n                                      \"value but found end of string: %s\" %\n                                      subject)\n        if subject[i] in ('\"', \"'\"):\n            p = i\n            i += 1\n            while i < len(subject) and subject[i] != subject[p]:\n                i += 1\n            if i >= len(subject):\n                raise TemplateSyntaxError(\"Searching for value. Unexpected \"\n                                          \"end of string in column %d: %s\" %\n                                          (i, subject))\n            i += 1\n\n            # Continue parsing until next \"real\" space,\n            # so that filters are also included\n            i = next_space_index(subject, i)\n\n            res = subject[p:i]\n            while i < len(subject) and subject[i] in (' ', '\\t'):\n                i += 1\n            self.backout.append(self.pointer)\n            self.pointer = i\n            return res\n        else:\n            p = i\n            i = next_space_index(subject, i)\n            s = subject[p:i]\n            while i < len(subject) and subject[i] in (' ', '\\t'):\n                i += 1\n            self.backout.append(self.pointer)\n            self.pointer = i\n            return s\n\n# This only matches constant *strings* (things in quotes or marked for\n# translation). Numbers are treated as variables for implementation reasons\n# (so that they retain their type when passed to filters).\nconstant_string = r\"\"\"\n(?:%(i18n_open)s%(strdq)s%(i18n_close)s|\n%(i18n_open)s%(strsq)s%(i18n_close)s|\n%(strdq)s|\n%(strsq)s)\n\"\"\" % {\n    'strdq': r'\"[^\"\\\\]*(?:\\\\.[^\"\\\\]*)*\"',  # double-quoted string\n    'strsq': r\"'[^'\\\\]*(?:\\\\.[^'\\\\]*)*'\",  # single-quoted string\n    'i18n_open': re.escape(\"_(\"),\n    'i18n_close': re.escape(\")\"),\n    }\nconstant_string = constant_string.replace(\"\\n\", \"\")\n\nfilter_raw_string = r\"\"\"\n^(?P<constant>%(constant)s)|\n^(?P<var>[%(var_chars)s]+|%(num)s)|\n (?:\\s*%(filter_sep)s\\s*\n     (?P<filter_name>\\w+)\n         (?:%(arg_sep)s\n             (?:\n              (?P<constant_arg>%(constant)s)|\n              (?P<var_arg>[%(var_chars)s]+|%(num)s)\n             )\n         )?\n )\"\"\" % {\n    'constant': constant_string,\n    'num': r'[-+\\.]?\\d[\\d\\.e]*',\n    'var_chars': \"\\w\\.\",\n    'filter_sep': re.escape(FILTER_SEPARATOR),\n    'arg_sep': re.escape(FILTER_ARGUMENT_SEPARATOR),\n  }\n\nfilter_re = re.compile(filter_raw_string, re.UNICODE | re.VERBOSE)\n\nclass FilterExpression(object):\n    \"\"\"\n    Parses a variable token and its optional filters (all as a single string),\n    and return a list of tuples of the filter name and arguments.\n    Sample::\n\n        >>> token = 'variable|default:\"Default value\"|date:\"Y-m-d\"'\n        >>> p = Parser('')\n        >>> fe = FilterExpression(token, p)\n        >>> len(fe.filters)\n        2\n        >>> fe.var\n        <Variable: 'variable'>\n\n    This class should never be instantiated outside of the\n    get_filters_from_token helper function.\n    \"\"\"\n    def __init__(self, token, parser):\n        self.token = token\n        matches = filter_re.finditer(token)\n        var_obj = None\n        filters = []\n        upto = 0\n        for match in matches:\n            start = match.start()\n            if upto != start:\n                raise TemplateSyntaxError(\"Could not parse some characters: \"\n                                          \"%s|%s|%s\" %\n                                          (token[:upto], token[upto:start],\n                                           token[start:]))\n            if var_obj is None:\n                var, constant = match.group(\"var\", \"constant\")\n                if constant:\n                    try:\n                        var_obj = Variable(constant).resolve({})\n                    except VariableDoesNotExist:\n                        var_obj = None\n                elif var is None:\n                    raise TemplateSyntaxError(\"Could not find variable at \"\n                                              \"start of %s.\" % token)\n                else:\n                    var_obj = Variable(var)\n            else:\n                filter_name = match.group(\"filter_name\")\n                args = []\n                constant_arg, var_arg = match.group(\"constant_arg\", \"var_arg\")\n                if constant_arg:\n                    args.append((False, Variable(constant_arg).resolve({})))\n                elif var_arg:\n                    args.append((True, Variable(var_arg)))\n                filter_func = parser.find_filter(filter_name)\n                self.args_check(filter_name, filter_func, args)\n                filters.append((filter_func, args))\n            upto = match.end()\n        if upto != len(token):\n            raise TemplateSyntaxError(\"Could not parse the remainder: '%s' \"\n                                      \"from '%s'\" % (token[upto:], token))\n\n        self.filters = filters\n        self.var = var_obj\n\n    def resolve(self, context, ignore_failures=False):\n        if isinstance(self.var, Variable):\n            try:\n                obj = self.var.resolve(context)\n            except VariableDoesNotExist:\n                if ignore_failures:\n                    obj = None\n                else:\n                    if settings.TEMPLATE_STRING_IF_INVALID:\n                        global invalid_var_format_string\n                        if invalid_var_format_string is None:\n                            invalid_var_format_string = '%s' in settings.TEMPLATE_STRING_IF_INVALID\n                        if invalid_var_format_string:\n                            return settings.TEMPLATE_STRING_IF_INVALID % self.var\n                        return settings.TEMPLATE_STRING_IF_INVALID\n                    else:\n                        obj = settings.TEMPLATE_STRING_IF_INVALID\n        else:\n            obj = self.var\n        for func, args in self.filters:\n            arg_vals = []\n            for lookup, arg in args:\n                if not lookup:\n                    arg_vals.append(mark_safe(arg))\n                else:\n                    arg_vals.append(arg.resolve(context))\n            if getattr(func, 'expects_localtime', False):\n                obj = template_localtime(obj, context.use_tz)\n            if getattr(func, 'needs_autoescape', False):\n                new_obj = func(obj, autoescape=context.autoescape, *arg_vals)\n            else:\n                new_obj = func(obj, *arg_vals)\n            if getattr(func, 'is_safe', False) and isinstance(obj, SafeData):\n                obj = mark_safe(new_obj)\n            elif isinstance(obj, EscapeData):\n                obj = mark_for_escaping(new_obj)\n            else:\n                obj = new_obj\n        return obj\n\n    def args_check(name, func, provided):\n        provided = list(provided)\n        plen = len(provided)\n        # Check to see if a decorator is providing the real function.\n        func = getattr(func, '_decorated_function', func)\n        args, varargs, varkw, defaults = getargspec(func)\n        # First argument is filter input.\n        args.pop(0)\n        if defaults:\n            nondefs = args[:-len(defaults)]\n        else:\n            nondefs = args\n        # Args without defaults must be provided.\n        try:\n            for arg in nondefs:\n                provided.pop(0)\n        except IndexError:\n            # Not enough\n            raise TemplateSyntaxError(\"%s requires %d arguments, %d provided\" %\n                                      (name, len(nondefs), plen))\n\n        # Defaults can be overridden.\n        defaults = defaults and list(defaults) or []\n        try:\n            for parg in provided:\n                defaults.pop(0)\n        except IndexError:\n            # Too many.\n            raise TemplateSyntaxError(\"%s requires %d arguments, %d provided\" %\n                                      (name, len(nondefs), plen))\n\n        return True\n    args_check = staticmethod(args_check)\n\n    def __str__(self):\n        return self.token\n\ndef resolve_variable(path, context):\n    \"\"\"\n    Returns the resolved variable, which may contain attribute syntax, within\n    the given context.\n\n    Deprecated; use the Variable class instead.\n    \"\"\"\n    return Variable(path).resolve(context)\n\nclass Variable(object):\n    \"\"\"\n    A template variable, resolvable against a given context. The variable may\n    be a hard-coded string (if it begins and ends with single or double quote\n    marks)::\n\n        >>> c = {'article': {'section':u'News'}}\n        >>> Variable('article.section').resolve(c)\n        u'News'\n        >>> Variable('article').resolve(c)\n        {'section': u'News'}\n        >>> class AClass: pass\n        >>> c = AClass()\n        >>> c.article = AClass()\n        >>> c.article.section = u'News'\n\n    (The example assumes VARIABLE_ATTRIBUTE_SEPARATOR is '.')\n    \"\"\"\n\n    def __init__(self, var):\n        self.var = var\n        self.literal = None\n        self.lookups = None\n        self.translate = False\n        self.message_context = None\n\n        try:\n            # First try to treat this variable as a number.\n            #\n            # Note that this could cause an OverflowError here that we're not\n            # catching. Since this should only happen at compile time, that's\n            # probably OK.\n            self.literal = float(var)\n\n            # So it's a float... is it an int? If the original value contained a\n            # dot or an \"e\" then it was a float, not an int.\n            if '.' not in var and 'e' not in var.lower():\n                self.literal = int(self.literal)\n\n            # \"2.\" is invalid\n            if var.endswith('.'):\n                raise ValueError\n\n        except ValueError:\n            # A ValueError means that the variable isn't a number.\n            if var.startswith('_(') and var.endswith(')'):\n                # The result of the lookup should be translated at rendering\n                # time.\n                self.translate = True\n                var = var[2:-1]\n            # If it's wrapped with quotes (single or double), then\n            # we're also dealing with a literal.\n            try:\n                self.literal = mark_safe(unescape_string_literal(var))\n            except ValueError:\n                # Otherwise we'll set self.lookups so that resolve() knows we're\n                # dealing with a bonafide variable\n                if var.find(VARIABLE_ATTRIBUTE_SEPARATOR + '_') > -1 or var[0] == '_':\n                    raise TemplateSyntaxError(\"Variables and attributes may \"\n                                              \"not begin with underscores: '%s'\" %\n                                              var)\n                self.lookups = tuple(var.split(VARIABLE_ATTRIBUTE_SEPARATOR))\n\n    def resolve(self, context):\n        \"\"\"Resolve this variable against a given context.\"\"\"\n        if self.lookups is not None:\n            # We're dealing with a variable that needs to be resolved\n            value = self._resolve_lookup(context)\n        else:\n            # We're dealing with a literal, so it's already been \"resolved\"\n            value = self.literal\n        if self.translate:\n            if self.message_context:\n                return pgettext_lazy(self.message_context, value)\n            else:\n                return ugettext_lazy(value)\n        return value\n\n    def __repr__(self):\n        return \"<%s: %r>\" % (self.__class__.__name__, self.var)\n\n    def __str__(self):\n        return self.var\n\n    def _resolve_lookup(self, context):\n        \"\"\"\n        Performs resolution of a real variable (i.e. not a literal) against the\n        given context.\n\n        As indicated by the method's name, this method is an implementation\n        detail and shouldn't be called by external code. Use Variable.resolve()\n        instead.\n        \"\"\"\n        current = context\n        try:  # catch-all for silent variable failures\n            for bit in self.lookups:\n                try:  # dictionary lookup\n                    current = current[bit]\n                except (TypeError, AttributeError, KeyError, ValueError):\n                    try:  # attribute lookup\n                        current = getattr(current, bit)\n                    except (TypeError, AttributeError):\n                        try:  # list-index lookup\n                            current = current[int(bit)]\n                        except (IndexError,  # list index out of range\n                                ValueError,  # invalid literal for int()\n                                KeyError,    # current is a dict without `int(bit)` key\n                                TypeError):  # unsubscriptable object\n                            raise VariableDoesNotExist(\"Failed lookup for key \"\n                                                       \"[%s] in %r\",\n                                                       (bit, current))  # missing attribute\n                if callable(current):\n                    if getattr(current, 'do_not_call_in_templates', False):\n                        pass\n                    elif getattr(current, 'alters_data', False):\n                        current = settings.TEMPLATE_STRING_IF_INVALID\n                    else:\n                        try: # method call (assuming no args required)\n                            current = current()\n                        except TypeError: # arguments *were* required\n                            # GOTCHA: This will also catch any TypeError\n                            # raised in the function itself.\n                            current = settings.TEMPLATE_STRING_IF_INVALID  # invalid method call\n        except Exception as e:\n            if getattr(e, 'silent_variable_failure', False):\n                current = settings.TEMPLATE_STRING_IF_INVALID\n            else:\n                raise\n\n        return current\n\nclass Node(object):\n    # Set this to True for nodes that must be first in the template (although\n    # they can be preceded by text nodes.\n    must_be_first = False\n    child_nodelists = ('nodelist',)\n\n    def render(self, context):\n        \"\"\"\n        Return the node rendered as a string.\n        \"\"\"\n        pass\n\n    def __iter__(self):\n        yield self\n\n    def get_nodes_by_type(self, nodetype):\n        \"\"\"\n        Return a list of all nodes (within this node and its nodelist)\n        of the given type\n        \"\"\"\n        nodes = []\n        if isinstance(self, nodetype):\n            nodes.append(self)\n        for attr in self.child_nodelists:\n            nodelist = getattr(self, attr, None)\n            if nodelist:\n                nodes.extend(nodelist.get_nodes_by_type(nodetype))\n        return nodes\n\nclass NodeList(list):\n    # Set to True the first time a non-TextNode is inserted by\n    # extend_nodelist().\n    contains_nontext = False\n\n    def render(self, context):\n        bits = []\n        for node in self:\n            if isinstance(node, Node):\n                bit = self.render_node(node, context)\n            else:\n                bit = node\n            bits.append(force_text(bit))\n        return mark_safe(''.join(bits))\n\n    def get_nodes_by_type(self, nodetype):\n        \"Return a list of all nodes of the given type\"\n        nodes = []\n        for node in self:\n            nodes.extend(node.get_nodes_by_type(nodetype))\n        return nodes\n\n    def render_node(self, node, context):\n        return node.render(context)\n\nclass TextNode(Node):\n    def __init__(self, s):\n        self.s = s\n\n    def __repr__(self):\n        return force_str(\"<Text Node: '%s'>\" % self.s[:25], 'ascii',\n                errors='replace')\n\n    def render(self, context):\n        return self.s\n\ndef _render_value_in_context(value, context):\n    \"\"\"\n    Converts any value to a string to become part of a rendered template. This\n    means escaping, if required, and conversion to a unicode object. If value\n    is a string, it is expected to have already been translated.\n    \"\"\"\n    value = template_localtime(value, use_tz=context.use_tz)\n    value = localize(value, use_l10n=context.use_l10n)\n    value = force_text(value)\n    if ((context.autoescape and not isinstance(value, SafeData)) or\n            isinstance(value, EscapeData)):\n        return escape(value)\n    else:\n        return value\n\nclass VariableNode(Node):\n    def __init__(self, filter_expression):\n        self.filter_expression = filter_expression\n\n    def __repr__(self):\n        return \"<Variable Node: %s>\" % self.filter_expression\n\n    def render(self, context):\n        try:\n            output = self.filter_expression.resolve(context)\n        except UnicodeDecodeError:\n            # Unicode conversion can fail sometimes for reasons out of our\n            # control (e.g. exception rendering). In that case, we fail\n            # quietly.\n            return ''\n        return _render_value_in_context(output, context)\n\n# Regex for token keyword arguments\nkwarg_re = re.compile(r\"(?:(\\w+)=)?(.+)\")\n\ndef token_kwargs(bits, parser, support_legacy=False):\n    \"\"\"\n    A utility method for parsing token keyword arguments.\n\n    :param bits: A list containing remainder of the token (split by spaces)\n        that is to be checked for arguments. Valid arguments will be removed\n        from this list.\n\n    :param support_legacy: If set to true ``True``, the legacy format\n        ``1 as foo`` will be accepted. Otherwise, only the standard ``foo=1``\n        format is allowed.\n\n    :returns: A dictionary of the arguments retrieved from the ``bits`` token\n        list.\n\n    There is no requirement for all remaining token ``bits`` to be keyword\n    arguments, so the dictionary will be returned as soon as an invalid\n    argument format is reached.\n    \"\"\"\n    if not bits:\n        return {}\n    match = kwarg_re.match(bits[0])\n    kwarg_format = match and match.group(1)\n    if not kwarg_format:\n        if not support_legacy:\n            return {}\n        if len(bits) < 3 or bits[1] != 'as':\n            return {}\n\n    kwargs = {}\n    while bits:\n        if kwarg_format:\n            match = kwarg_re.match(bits[0])\n            if not match or not match.group(1):\n                return kwargs\n            key, value = match.groups()\n            del bits[:1]\n        else:\n            if len(bits) < 3 or bits[1] != 'as':\n                return kwargs\n            key, value = bits[2], bits[0]\n            del bits[:3]\n        kwargs[key] = parser.compile_filter(value)\n        if bits and not kwarg_format:\n            if bits[0] != 'and':\n                return kwargs\n            del bits[:1]\n    return kwargs\n\ndef parse_bits(parser, bits, params, varargs, varkw, defaults,\n               takes_context, name):\n    \"\"\"\n    Parses bits for template tag helpers (simple_tag, include_tag and\n    assignment_tag), in particular by detecting syntax errors and by\n    extracting positional and keyword arguments.\n    \"\"\"\n    if takes_context:\n        if params[0] == 'context':\n            params = params[1:]\n        else:\n            raise TemplateSyntaxError(\n                \"'%s' is decorated with takes_context=True so it must \"\n                \"have a first argument of 'context'\" % name)\n    args = []\n    kwargs = {}\n    unhandled_params = list(params)\n    for bit in bits:\n        # First we try to extract a potential kwarg from the bit\n        kwarg = token_kwargs([bit], parser)\n        if kwarg:\n            # The kwarg was successfully extracted\n            param, value = list(six.iteritems(kwarg))[0]\n            if param not in params and varkw is None:\n                # An unexpected keyword argument was supplied\n                raise TemplateSyntaxError(\n                    \"'%s' received unexpected keyword argument '%s'\" %\n                    (name, param))\n            elif param in kwargs:\n                # The keyword argument has already been supplied once\n                raise TemplateSyntaxError(\n                    \"'%s' received multiple values for keyword argument '%s'\" %\n                    (name, param))\n            else:\n                # All good, record the keyword argument\n                kwargs[str(param)] = value\n                if param in unhandled_params:\n                    # If using the keyword syntax for a positional arg, then\n                    # consume it.\n                    unhandled_params.remove(param)\n        else:\n            if kwargs:\n                raise TemplateSyntaxError(\n                    \"'%s' received some positional argument(s) after some \"\n                    \"keyword argument(s)\" % name)\n            else:\n                # Record the positional argument\n                args.append(parser.compile_filter(bit))\n                try:\n                    # Consume from the list of expected positional arguments\n                    unhandled_params.pop(0)\n                except IndexError:\n                    if varargs is None:\n                        raise TemplateSyntaxError(\n                            \"'%s' received too many positional arguments\" %\n                            name)\n    if defaults is not None:\n        # Consider the last n params handled, where n is the\n        # number of defaults.\n        unhandled_params = unhandled_params[:-len(defaults)]\n    if unhandled_params:\n        # Some positional arguments were not supplied\n        raise TemplateSyntaxError(\n            \"'%s' did not receive value(s) for the argument(s): %s\" %\n            (name, \", \".join([\"'%s'\" % p for p in unhandled_params])))\n    return args, kwargs\n\ndef generic_tag_compiler(parser, token, params, varargs, varkw, defaults,\n                         name, takes_context, node_class):\n    \"\"\"\n    Returns a template.Node subclass.\n    \"\"\"\n    bits = token.split_contents()[1:]\n    args, kwargs = parse_bits(parser, bits, params, varargs, varkw,\n                              defaults, takes_context, name)\n    return node_class(takes_context, args, kwargs)\n\nclass TagHelperNode(Node):\n    \"\"\"\n    Base class for tag helper nodes such as SimpleNode, InclusionNode and\n    AssignmentNode. Manages the positional and keyword arguments to be passed\n    to the decorated function.\n    \"\"\"\n\n    def __init__(self, takes_context, args, kwargs):\n        self.takes_context = takes_context\n        self.args = args\n        self.kwargs = kwargs\n\n    def get_resolved_arguments(self, context):\n        resolved_args = [var.resolve(context) for var in self.args]\n        if self.takes_context:\n            resolved_args = [context] + resolved_args\n        resolved_kwargs = dict((k, v.resolve(context))\n                                for k, v in self.kwargs.items())\n        return resolved_args, resolved_kwargs\n\nclass Library(object):\n    def __init__(self):\n        self.filters = {}\n        self.tags = {}\n\n    def tag(self, name=None, compile_function=None):\n        if name is None and compile_function is None:\n            # @register.tag()\n            return self.tag_function\n        elif name is not None and compile_function is None:\n            if callable(name):\n                # @register.tag\n                return self.tag_function(name)\n            else:\n                # @register.tag('somename') or @register.tag(name='somename')\n                def dec(func):\n                    return self.tag(name, func)\n                return dec\n        elif name is not None and compile_function is not None:\n            # register.tag('somename', somefunc)\n            self.tags[name] = compile_function\n            return compile_function\n        else:\n            raise InvalidTemplateLibrary(\"Unsupported arguments to \"\n                \"Library.tag: (%r, %r)\", (name, compile_function))\n\n    def tag_function(self, func):\n        self.tags[getattr(func, \"_decorated_function\", func).__name__] = func\n        return func\n\n    def filter(self, name=None, filter_func=None, **flags):\n        if name is None and filter_func is None:\n            # @register.filter()\n            def dec(func):\n                return self.filter_function(func, **flags)\n            return dec\n\n        elif name is not None and filter_func is None:\n            if callable(name):\n                # @register.filter\n                return self.filter_function(name, **flags)\n            else:\n                # @register.filter('somename') or @register.filter(name='somename')\n                def dec(func):\n                    return self.filter(name, func, **flags)\n                return dec\n\n        elif name is not None and filter_func is not None:\n            # register.filter('somename', somefunc)\n            self.filters[name] = filter_func\n            for attr in ('expects_localtime', 'is_safe', 'needs_autoescape'):\n                if attr in flags:\n                    value = flags[attr]\n                    # set the flag on the filter for FilterExpression.resolve\n                    setattr(filter_func, attr, value)\n                    # set the flag on the innermost decorated function\n                    # for decorators that need it e.g. stringfilter\n                    if hasattr(filter_func, \"_decorated_function\"):\n                        setattr(filter_func._decorated_function, attr, value)\n            return filter_func\n        else:\n            raise InvalidTemplateLibrary(\"Unsupported arguments to \"\n                \"Library.filter: (%r, %r)\", (name, filter_func))\n\n    def filter_function(self, func, **flags):\n        name = getattr(func, \"_decorated_function\", func).__name__\n        return self.filter(name, func, **flags)\n\n    def simple_tag(self, func=None, takes_context=None, name=None):\n        def dec(func):\n            params, varargs, varkw, defaults = getargspec(func)\n\n            class SimpleNode(TagHelperNode):\n\n                def render(self, context):\n                    resolved_args, resolved_kwargs = self.get_resolved_arguments(context)\n                    return func(*resolved_args, **resolved_kwargs)\n\n            function_name = (name or\n                getattr(func, '_decorated_function', func).__name__)\n            compile_func = partial(generic_tag_compiler,\n                params=params, varargs=varargs, varkw=varkw,\n                defaults=defaults, name=function_name,\n                takes_context=takes_context, node_class=SimpleNode)\n            compile_func.__doc__ = func.__doc__\n            self.tag(function_name, compile_func)\n            return func\n\n        if func is None:\n            # @register.simple_tag(...)\n            return dec\n        elif callable(func):\n            # @register.simple_tag\n            return dec(func)\n        else:\n            raise TemplateSyntaxError(\"Invalid arguments provided to simple_tag\")\n\n    def assignment_tag(self, func=None, takes_context=None, name=None):\n        def dec(func):\n            params, varargs, varkw, defaults = getargspec(func)\n\n            class AssignmentNode(TagHelperNode):\n                def __init__(self, takes_context, args, kwargs, target_var):\n                    super(AssignmentNode, self).__init__(takes_context, args, kwargs)\n                    self.target_var = target_var\n\n                def render(self, context):\n                    resolved_args, resolved_kwargs = self.get_resolved_arguments(context)\n                    context[self.target_var] = func(*resolved_args, **resolved_kwargs)\n                    return ''\n\n            function_name = (name or\n                getattr(func, '_decorated_function', func).__name__)\n\n            def compile_func(parser, token):\n                bits = token.split_contents()[1:]\n                if len(bits) < 2 or bits[-2] != 'as':\n                    raise TemplateSyntaxError(\n                        \"'%s' tag takes at least 2 arguments and the \"\n                        \"second last argument must be 'as'\" % function_name)\n                target_var = bits[-1]\n                bits = bits[:-2]\n                args, kwargs = parse_bits(parser, bits, params,\n                    varargs, varkw, defaults, takes_context, function_name)\n                return AssignmentNode(takes_context, args, kwargs, target_var)\n\n            compile_func.__doc__ = func.__doc__\n            self.tag(function_name, compile_func)\n            return func\n\n        if func is None:\n            # @register.assignment_tag(...)\n            return dec\n        elif callable(func):\n            # @register.assignment_tag\n            return dec(func)\n        else:\n            raise TemplateSyntaxError(\"Invalid arguments provided to assignment_tag\")\n\n    def inclusion_tag(self, file_name, context_class=Context, takes_context=False, name=None):\n        def dec(func):\n            params, varargs, varkw, defaults = getargspec(func)\n\n            class InclusionNode(TagHelperNode):\n\n                def render(self, context):\n                    resolved_args, resolved_kwargs = self.get_resolved_arguments(context)\n                    _dict = func(*resolved_args, **resolved_kwargs)\n\n                    if not getattr(self, 'nodelist', False):\n                        from django.template.loader import get_template, select_template\n                        if isinstance(file_name, Template):\n                            t = file_name\n                        elif not isinstance(file_name, six.string_types) and is_iterable(file_name):\n                            t = select_template(file_name)\n                        else:\n                            t = get_template(file_name)\n                        self.nodelist = t.nodelist\n                    new_context = context_class(_dict, **{\n                        'autoescape': context.autoescape,\n                        'current_app': context.current_app,\n                        'use_l10n': context.use_l10n,\n                        'use_tz': context.use_tz,\n                    })\n                    # Copy across the CSRF token, if present, because\n                    # inclusion tags are often used for forms, and we need\n                    # instructions for using CSRF protection to be as simple\n                    # as possible.\n                    csrf_token = context.get('csrf_token', None)\n                    if csrf_token is not None:\n                        new_context['csrf_token'] = csrf_token\n                    return self.nodelist.render(new_context)\n\n            function_name = (name or\n                getattr(func, '_decorated_function', func).__name__)\n            compile_func = partial(generic_tag_compiler,\n                params=params, varargs=varargs, varkw=varkw,\n                defaults=defaults, name=function_name,\n                takes_context=takes_context, node_class=InclusionNode)\n            compile_func.__doc__ = func.__doc__\n            self.tag(function_name, compile_func)\n            return func\n        return dec\n\ndef is_library_missing(name):\n    \"\"\"Check if library that failed to load cannot be found under any\n    templatetags directory or does exist but fails to import.\n\n    Non-existing condition is checked recursively for each subpackage in cases\n    like <appdir>/templatetags/subpackage/package/module.py.\n    \"\"\"\n    # Don't bother to check if '.' is in name since any name will be prefixed\n    # with some template root.\n    path, module = name.rsplit('.', 1)\n    try:\n        package = import_module(path)\n        return not module_has_submodule(package, module)\n    except ImportError:\n        return is_library_missing(path)\n\ndef import_library(taglib_module):\n    \"\"\"\n    Load a template tag library module.\n\n    Verifies that the library contains a 'register' attribute, and\n    returns that attribute as the representation of the library\n    \"\"\"\n    try:\n        mod = import_module(taglib_module)\n    except ImportError as e:\n        # If the ImportError is because the taglib submodule does not exist,\n        # that's not an error that should be raised. If the submodule exists\n        # and raised an ImportError on the attempt to load it, that we want\n        # to raise.\n        if is_library_missing(taglib_module):\n            return None\n        else:\n            raise InvalidTemplateLibrary(\"ImportError raised loading %s: %s\" %\n                                         (taglib_module, e))\n    try:\n        return mod.register\n    except AttributeError:\n        raise InvalidTemplateLibrary(\"Template library %s does not have \"\n                                     \"a variable named 'register'\" %\n                                     taglib_module)\n\ntemplatetags_modules = []\n\ndef get_templatetags_modules():\n    \"\"\"\n    Return the list of all available template tag modules.\n\n    Caches the result for faster access.\n    \"\"\"\n    global templatetags_modules\n    if not templatetags_modules:\n        _templatetags_modules = []\n        # Populate list once per process. Mutate the local list first, and\n        # then assign it to the global name to ensure there are no cases where\n        # two threads try to populate it simultaneously.\n        for app_module in ['django'] + list(settings.INSTALLED_APPS):\n            try:\n                templatetag_module = '%s.templatetags' % app_module\n                import_module(templatetag_module)\n                _templatetags_modules.append(templatetag_module)\n            except ImportError:\n                continue\n        templatetags_modules = _templatetags_modules\n    return templatetags_modules\n\ndef get_library(library_name):\n    \"\"\"\n    Load the template library module with the given name.\n\n    If library is not already loaded loop over all templatetags modules\n    to locate it.\n\n    {% load somelib %} and {% load someotherlib %} loops twice.\n\n    Subsequent loads eg. {% load somelib %} in the same process will grab\n    the cached module from libraries.\n    \"\"\"\n    lib = libraries.get(library_name, None)\n    if not lib:\n        templatetags_modules = get_templatetags_modules()\n        tried_modules = []\n        for module in templatetags_modules:\n            taglib_module = '%s.%s' % (module, library_name)\n            tried_modules.append(taglib_module)\n            lib = import_library(taglib_module)\n            if lib:\n                libraries[library_name] = lib\n                break\n        if not lib:\n            raise InvalidTemplateLibrary(\"Template library %s not found, \"\n                                         \"tried %s\" %\n                                         (library_name,\n                                          ','.join(tried_modules)))\n    return lib\n\n\ndef add_to_builtins(module):\n    builtins.append(import_library(module))\n\n\nadd_to_builtins('django.template.defaulttags')\nadd_to_builtins('django.template.defaultfilters')\n"
  },
  {
    "path": "Django-1.5.1/django/template/context.py",
    "content": "from copy import copy\nfrom django.core.exceptions import ImproperlyConfigured\nfrom django.utils.importlib import import_module\n\n# Cache of actual callables.\n_standard_context_processors = None\n# We need the CSRF processor no matter what the user has in their settings,\n# because otherwise it is a security vulnerability, and we can't afford to leave\n# this to human error or failure to read migration instructions.\n_builtin_context_processors =  ('django.core.context_processors.csrf',)\n\nclass ContextPopException(Exception):\n    \"pop() has been called more times than push()\"\n    pass\n\nclass BaseContext(object):\n    def __init__(self, dict_=None):\n        self._reset_dicts(dict_)\n\n    def _reset_dicts(self, value=None):\n        builtins = {'True': True, 'False': False, 'None': None}\n        self.dicts = [builtins]\n        if value is not None:\n            self.dicts.append(value)\n\n    def __copy__(self):\n        duplicate = copy(super(BaseContext, self))\n        duplicate.dicts = self.dicts[:]\n        return duplicate\n\n    def __repr__(self):\n        return repr(self.dicts)\n\n    def __iter__(self):\n        for d in reversed(self.dicts):\n            yield d\n\n    def push(self):\n        d = {}\n        self.dicts.append(d)\n        return d\n\n    def pop(self):\n        if len(self.dicts) == 1:\n            raise ContextPopException\n        return self.dicts.pop()\n\n    def __setitem__(self, key, value):\n        \"Set a variable in the current context\"\n        self.dicts[-1][key] = value\n\n    def __getitem__(self, key):\n        \"Get a variable's value, starting at the current context and going upward\"\n        for d in reversed(self.dicts):\n            if key in d:\n                return d[key]\n        raise KeyError(key)\n\n    def __delitem__(self, key):\n        \"Delete a variable from the current context\"\n        del self.dicts[-1][key]\n\n    def has_key(self, key):\n        for d in self.dicts:\n            if key in d:\n                return True\n        return False\n\n    def __contains__(self, key):\n        return self.has_key(key)\n\n    def get(self, key, otherwise=None):\n        for d in reversed(self.dicts):\n            if key in d:\n                return d[key]\n        return otherwise\n\n    def new(self, values=None):\n        \"\"\"\n        Returns a new context with the same properties, but with only the\n        values given in 'values' stored.\n        \"\"\"\n        new_context = copy(self)\n        new_context._reset_dicts(values)\n        return new_context\n\nclass Context(BaseContext):\n    \"A stack container for variable context\"\n    def __init__(self, dict_=None, autoescape=True, current_app=None,\n            use_l10n=None, use_tz=None):\n        self.autoescape = autoescape\n        self.current_app = current_app\n        self.use_l10n = use_l10n\n        self.use_tz = use_tz\n        self.render_context = RenderContext()\n        super(Context, self).__init__(dict_)\n\n    def __copy__(self):\n        duplicate = super(Context, self).__copy__()\n        duplicate.render_context = copy(self.render_context)\n        return duplicate\n\n    def update(self, other_dict):\n        \"Pushes other_dict to the stack of dictionaries in the Context\"\n        if not hasattr(other_dict, '__getitem__'):\n            raise TypeError('other_dict must be a mapping (dictionary-like) object.')\n        self.dicts.append(other_dict)\n        return other_dict\n\nclass RenderContext(BaseContext):\n    \"\"\"\n    A stack container for storing Template state.\n\n    RenderContext simplifies the implementation of template Nodes by providing a\n    safe place to store state between invocations of a node's `render` method.\n\n    The RenderContext also provides scoping rules that are more sensible for\n    'template local' variables. The render context stack is pushed before each\n    template is rendered, creating a fresh scope with nothing in it. Name\n    resolution fails if a variable is not found at the top of the RequestContext\n    stack. Thus, variables are local to a specific template and don't affect the\n    rendering of other templates as they would if they were stored in the normal\n    template context.\n    \"\"\"\n    def __iter__(self):\n        for d in self.dicts[-1]:\n            yield d\n\n    def has_key(self, key):\n        return key in self.dicts[-1]\n\n    def get(self, key, otherwise=None):\n        d = self.dicts[-1]\n        if key in d:\n            return d[key]\n        return otherwise\n\n# This is a function rather than module-level procedural code because we only\n# want it to execute if somebody uses RequestContext.\ndef get_standard_processors():\n    from django.conf import settings\n    global _standard_context_processors\n    if _standard_context_processors is None:\n        processors = []\n        collect = []\n        collect.extend(_builtin_context_processors)\n        collect.extend(settings.TEMPLATE_CONTEXT_PROCESSORS)\n        for path in collect:\n            i = path.rfind('.')\n            module, attr = path[:i], path[i+1:]\n            try:\n                mod = import_module(module)\n            except ImportError as e:\n                raise ImproperlyConfigured('Error importing request processor module %s: \"%s\"' % (module, e))\n            try:\n                func = getattr(mod, attr)\n            except AttributeError:\n                raise ImproperlyConfigured('Module \"%s\" does not define a \"%s\" callable request processor' % (module, attr))\n            processors.append(func)\n        _standard_context_processors = tuple(processors)\n    return _standard_context_processors\n\nclass RequestContext(Context):\n    \"\"\"\n    This subclass of template.Context automatically populates itself using\n    the processors defined in TEMPLATE_CONTEXT_PROCESSORS.\n    Additional processors can be specified as a list of callables\n    using the \"processors\" keyword argument.\n    \"\"\"\n    def __init__(self, request, dict_=None, processors=None, current_app=None,\n            use_l10n=None, use_tz=None):\n        Context.__init__(self, dict_, current_app=current_app,\n                use_l10n=use_l10n, use_tz=use_tz)\n        if processors is None:\n            processors = ()\n        else:\n            processors = tuple(processors)\n        for processor in get_standard_processors() + processors:\n            self.update(processor(request))\n"
  },
  {
    "path": "Django-1.5.1/django/template/debug.py",
    "content": "from django.template.base import Lexer, Parser, tag_re, NodeList, VariableNode, TemplateSyntaxError\nfrom django.utils.encoding import force_text\nfrom django.utils.html import escape\nfrom django.utils.safestring import SafeData, EscapeData\nfrom django.utils.formats import localize\nfrom django.utils.timezone import template_localtime\n\n\nclass DebugLexer(Lexer):\n    def __init__(self, template_string, origin):\n        super(DebugLexer, self).__init__(template_string, origin)\n\n    def tokenize(self):\n        \"Return a list of tokens from a given template_string\"\n        result, upto = [], 0\n        for match in tag_re.finditer(self.template_string):\n            start, end = match.span()\n            if start > upto:\n                result.append(self.create_token(self.template_string[upto:start], (upto, start), False))\n                upto = start\n            result.append(self.create_token(self.template_string[start:end], (start, end), True))\n            upto = end\n        last_bit = self.template_string[upto:]\n        if last_bit:\n            result.append(self.create_token(last_bit, (upto, upto + len(last_bit)), False))\n        return result\n\n    def create_token(self, token_string, source, in_tag):\n        token = super(DebugLexer, self).create_token(token_string, in_tag)\n        token.source = self.origin, source\n        return token\n\nclass DebugParser(Parser):\n    def __init__(self, lexer):\n        super(DebugParser, self).__init__(lexer)\n        self.command_stack = []\n\n    def enter_command(self, command, token):\n        self.command_stack.append( (command, token.source) )\n\n    def exit_command(self):\n        self.command_stack.pop()\n\n    def error(self, token, msg):\n        return self.source_error(token.source, msg)\n\n    def source_error(self, source, msg):\n        e = TemplateSyntaxError(msg)\n        e.django_template_source = source\n        return e\n\n    def create_nodelist(self):\n        return DebugNodeList()\n\n    def create_variable_node(self, contents):\n        return DebugVariableNode(contents)\n\n    def extend_nodelist(self, nodelist, node, token):\n        node.source = token.source\n        super(DebugParser, self).extend_nodelist(nodelist, node, token)\n\n    def unclosed_block_tag(self, parse_until):\n        command, source = self.command_stack.pop()\n        msg = \"Unclosed tag '%s'. Looking for one of: %s \" % (command, ', '.join(parse_until))\n        raise self.source_error(source, msg)\n\n    def compile_function_error(self, token, e):\n        if not hasattr(e, 'django_template_source'):\n            e.django_template_source = token.source\n\nclass DebugNodeList(NodeList):\n    def render_node(self, node, context):\n        try:\n            return node.render(context)\n        except Exception as e:\n            if not hasattr(e, 'django_template_source'):\n                e.django_template_source = node.source\n            raise\n\n\nclass DebugVariableNode(VariableNode):\n    def render(self, context):\n        try:\n            output = self.filter_expression.resolve(context)\n            output = template_localtime(output, use_tz=context.use_tz)\n            output = localize(output, use_l10n=context.use_l10n)\n            output = force_text(output)\n        except UnicodeDecodeError:\n            return ''\n        except Exception as e:\n            if not hasattr(e, 'django_template_source'):\n                e.django_template_source = self.source\n            raise\n        if (context.autoescape and not isinstance(output, SafeData)) or isinstance(output, EscapeData):\n            return escape(output)\n        else:\n            return output\n"
  },
  {
    "path": "Django-1.5.1/django/template/defaultfilters.py",
    "content": "\"\"\"Default variable filters.\"\"\"\nfrom __future__ import unicode_literals\n\nimport re\nimport random as random_module\nimport unicodedata\nfrom decimal import Decimal, InvalidOperation, Context, ROUND_HALF_UP\nfrom functools import wraps\nfrom pprint import pformat\n\nfrom django.template.base import Variable, Library, VariableDoesNotExist\nfrom django.conf import settings\nfrom django.utils import formats\nfrom django.utils.dateformat import format, time_format\nfrom django.utils.encoding import force_text, iri_to_uri\nfrom django.utils.html import (conditional_escape, escapejs, fix_ampersands,\n    escape, urlize as urlize_impl, linebreaks, strip_tags)\nfrom django.utils.http import urlquote\nfrom django.utils.text import Truncator, wrap, phone2numeric\nfrom django.utils.safestring import mark_safe, SafeData, mark_for_escaping\nfrom django.utils import six\nfrom django.utils.timesince import timesince, timeuntil\nfrom django.utils.translation import ugettext, ungettext\nfrom django.utils.text import normalize_newlines\n\nregister = Library()\n\n#######################\n# STRING DECORATOR    #\n#######################\n\ndef stringfilter(func):\n    \"\"\"\n    Decorator for filters which should only receive unicode objects. The object\n    passed as the first positional argument will be converted to a unicode\n    object.\n    \"\"\"\n    def _dec(*args, **kwargs):\n        if args:\n            args = list(args)\n            args[0] = force_text(args[0])\n            if (isinstance(args[0], SafeData) and\n                getattr(_dec._decorated_function, 'is_safe', False)):\n                return mark_safe(func(*args, **kwargs))\n        return func(*args, **kwargs)\n\n    # Include a reference to the real function (used to check original\n    # arguments by the template parser, and to bear the 'is_safe' attribute\n    # when multiple decorators are applied).\n    _dec._decorated_function = getattr(func, '_decorated_function', func)\n\n    for attr in ('is_safe', 'needs_autoescape'):\n        if hasattr(func, attr):\n            import warnings\n            warnings.warn(\"Setting the %s attribute of a template filter \"\n                          \"function is deprecated; use @register.filter(%s=%s) \"\n                          \"instead\" % (attr, attr, getattr(func, attr)),\n                          DeprecationWarning)\n            setattr(_dec, attr, getattr(func, attr))\n\n    return wraps(func)(_dec)\n\n\n###################\n# STRINGS         #\n###################\n\n@register.filter(is_safe=True)\n@stringfilter\ndef addslashes(value):\n    \"\"\"\n    Adds slashes before quotes. Useful for escaping strings in CSV, for\n    example. Less useful for escaping JavaScript; use the ``escapejs``\n    filter instead.\n    \"\"\"\n    return value.replace('\\\\', '\\\\\\\\').replace('\"', '\\\\\"').replace(\"'\", \"\\\\'\")\n\n@register.filter(is_safe=True)\n@stringfilter\ndef capfirst(value):\n    \"\"\"Capitalizes the first character of the value.\"\"\"\n    return value and value[0].upper() + value[1:]\n\n@register.filter(\"escapejs\")\n@stringfilter\ndef escapejs_filter(value):\n    \"\"\"Hex encodes characters for use in JavaScript strings.\"\"\"\n    return escapejs(value)\n\n@register.filter(\"fix_ampersands\", is_safe=True)\n@stringfilter\ndef fix_ampersands_filter(value):\n    \"\"\"Replaces ampersands with ``&amp;`` entities.\"\"\"\n    return fix_ampersands(value)\n\n# Values for testing floatformat input against infinity and NaN representations,\n# which differ across platforms and Python versions.  Some (i.e. old Windows\n# ones) are not recognized by Decimal but we want to return them unchanged vs.\n# returning an empty string as we do for completely invalid input.  Note these\n# need to be built up from values that are not inf/nan, since inf/nan values do\n# not reload properly from .pyc files on Windows prior to some level of Python 2.5\n# (see Python Issue757815 and Issue1080440).\npos_inf = 1e200 * 1e200\nneg_inf = -1e200 * 1e200\nnan = (1e200 * 1e200) // (1e200 * 1e200)\nspecial_floats = [str(pos_inf), str(neg_inf), str(nan)]\n\n@register.filter(is_safe=True)\ndef floatformat(text, arg=-1):\n    \"\"\"\n    Displays a float to a specified number of decimal places.\n\n    If called without an argument, it displays the floating point number with\n    one decimal place -- but only if there's a decimal place to be displayed:\n\n    * num1 = 34.23234\n    * num2 = 34.00000\n    * num3 = 34.26000\n    * {{ num1|floatformat }} displays \"34.2\"\n    * {{ num2|floatformat }} displays \"34\"\n    * {{ num3|floatformat }} displays \"34.3\"\n\n    If arg is positive, it will always display exactly arg number of decimal\n    places:\n\n    * {{ num1|floatformat:3 }} displays \"34.232\"\n    * {{ num2|floatformat:3 }} displays \"34.000\"\n    * {{ num3|floatformat:3 }} displays \"34.260\"\n\n    If arg is negative, it will display arg number of decimal places -- but\n    only if there are places to be displayed:\n\n    * {{ num1|floatformat:\"-3\" }} displays \"34.232\"\n    * {{ num2|floatformat:\"-3\" }} displays \"34\"\n    * {{ num3|floatformat:\"-3\" }} displays \"34.260\"\n\n    If the input float is infinity or NaN, the (platform-dependent) string\n    representation of that value will be displayed.\n    \"\"\"\n\n    try:\n        input_val = force_text(text)\n        d = Decimal(input_val)\n    except UnicodeEncodeError:\n        return ''\n    except InvalidOperation:\n        if input_val in special_floats:\n            return input_val\n        try:\n            d = Decimal(force_text(float(text)))\n        except (ValueError, InvalidOperation, TypeError, UnicodeEncodeError):\n            return ''\n    try:\n        p = int(arg)\n    except ValueError:\n        return input_val\n\n    try:\n        m = int(d) - d\n    except (ValueError, OverflowError, InvalidOperation):\n        return input_val\n\n    if not m and p < 0:\n        return mark_safe(formats.number_format('%d' % (int(d)), 0))\n\n    if p == 0:\n        exp = Decimal(1)\n    else:\n        exp = Decimal('1.0') / (Decimal(10) ** abs(p))\n    try:\n        # Set the precision high enough to avoid an exception, see #15789.\n        tupl = d.as_tuple()\n        units = len(tupl[1]) - tupl[2]\n        prec = abs(p) + units + 1\n\n        # Avoid conversion to scientific notation by accessing `sign`, `digits`\n        # and `exponent` from `Decimal.as_tuple()` directly.\n        sign, digits, exponent = d.quantize(exp, ROUND_HALF_UP,\n            Context(prec=prec)).as_tuple()\n        digits = [six.text_type(digit) for digit in reversed(digits)]\n        while len(digits) <= abs(exponent):\n            digits.append('0')\n        digits.insert(-exponent, '.')\n        if sign:\n            digits.append('-')\n        number = ''.join(reversed(digits))\n        return mark_safe(formats.number_format(number, abs(p)))\n    except InvalidOperation:\n        return input_val\n\n@register.filter(is_safe=True)\n@stringfilter\ndef iriencode(value):\n    \"\"\"Escapes an IRI value for use in a URL.\"\"\"\n    return force_text(iri_to_uri(value))\n\n@register.filter(is_safe=True, needs_autoescape=True)\n@stringfilter\ndef linenumbers(value, autoescape=None):\n    \"\"\"Displays text with line numbers.\"\"\"\n    lines = value.split('\\n')\n    # Find the maximum width of the line count, for use with zero padding\n    # string format command\n    width = six.text_type(len(six.text_type(len(lines))))\n    if not autoescape or isinstance(value, SafeData):\n        for i, line in enumerate(lines):\n            lines[i] = (\"%0\" + width  + \"d. %s\") % (i + 1, line)\n    else:\n        for i, line in enumerate(lines):\n            lines[i] = (\"%0\" + width  + \"d. %s\") % (i + 1, escape(line))\n    return mark_safe('\\n'.join(lines))\n\n@register.filter(is_safe=True)\n@stringfilter\ndef lower(value):\n    \"\"\"Converts a string into all lowercase.\"\"\"\n    return value.lower()\n\n@register.filter(is_safe=False)\n@stringfilter\ndef make_list(value):\n    \"\"\"\n    Returns the value turned into a list.\n\n    For an integer, it's a list of digits.\n    For a string, it's a list of characters.\n    \"\"\"\n    return list(value)\n\n@register.filter(is_safe=True)\n@stringfilter\ndef slugify(value):\n    \"\"\"\n    Converts to lowercase, removes non-word characters (alphanumerics and\n    underscores) and converts spaces to hyphens. Also strips leading and\n    trailing whitespace.\n    \"\"\"\n    from django.utils.text import slugify\n    return slugify(value)\n\n@register.filter(is_safe=True)\ndef stringformat(value, arg):\n    \"\"\"\n    Formats the variable according to the arg, a string formatting specifier.\n\n    This specifier uses Python string formating syntax, with the exception that\n    the leading \"%\" is dropped.\n\n    See http://docs.python.org/lib/typesseq-strings.html for documentation\n    of Python string formatting\n    \"\"\"\n    try:\n        return (\"%\" + six.text_type(arg)) % value\n    except (ValueError, TypeError):\n        return \"\"\n\n@register.filter(is_safe=True)\n@stringfilter\ndef title(value):\n    \"\"\"Converts a string into titlecase.\"\"\"\n    t = re.sub(\"([a-z])'([A-Z])\", lambda m: m.group(0).lower(), value.title())\n    return re.sub(\"\\d([A-Z])\", lambda m: m.group(0).lower(), t)\n\n@register.filter(is_safe=True)\n@stringfilter\ndef truncatechars(value, arg):\n    \"\"\"\n    Truncates a string after a certain number of characters.\n\n    Argument: Number of characters to truncate after.\n    \"\"\"\n    try:\n        length = int(arg)\n    except ValueError: # Invalid literal for int().\n        return value # Fail silently.\n    return Truncator(value).chars(length)\n\n@register.filter(is_safe=True)\n@stringfilter\ndef truncatewords(value, arg):\n    \"\"\"\n    Truncates a string after a certain number of words.\n\n    Argument: Number of words to truncate after.\n\n    Newlines within the string are removed.\n    \"\"\"\n    try:\n        length = int(arg)\n    except ValueError: # Invalid literal for int().\n        return value # Fail silently.\n    return Truncator(value).words(length, truncate=' ...')\n\n@register.filter(is_safe=True)\n@stringfilter\ndef truncatewords_html(value, arg):\n    \"\"\"\n    Truncates HTML after a certain number of words.\n\n    Argument: Number of words to truncate after.\n\n    Newlines in the HTML are preserved.\n    \"\"\"\n    try:\n        length = int(arg)\n    except ValueError: # invalid literal for int()\n        return value # Fail silently.\n    return Truncator(value).words(length, html=True, truncate=' ...')\n\n@register.filter(is_safe=False)\n@stringfilter\ndef upper(value):\n    \"\"\"Converts a string into all uppercase.\"\"\"\n    return value.upper()\n\n@register.filter(is_safe=False)\n@stringfilter\ndef urlencode(value, safe=None):\n    \"\"\"\n    Escapes a value for use in a URL.\n\n    Takes an optional ``safe`` parameter used to determine the characters which\n    should not be escaped by Django's ``urlquote`` method. If not provided, the\n    default safe characters will be used (but an empty string can be provided\n    when *all* characters should be escaped).\n    \"\"\"\n    kwargs = {}\n    if safe is not None:\n        kwargs['safe'] = safe\n    return urlquote(value, **kwargs)\n\n@register.filter(is_safe=True, needs_autoescape=True)\n@stringfilter\ndef urlize(value, autoescape=None):\n    \"\"\"Converts URLs in plain text into clickable links.\"\"\"\n    return mark_safe(urlize_impl(value, nofollow=True, autoescape=autoescape))\n\n@register.filter(is_safe=True, needs_autoescape=True)\n@stringfilter\ndef urlizetrunc(value, limit, autoescape=None):\n    \"\"\"\n    Converts URLs into clickable links, truncating URLs to the given character\n    limit, and adding 'rel=nofollow' attribute to discourage spamming.\n\n    Argument: Length to truncate URLs to.\n    \"\"\"\n    return mark_safe(urlize_impl(value, trim_url_limit=int(limit), nofollow=True,\n                            autoescape=autoescape))\n\n@register.filter(is_safe=False)\n@stringfilter\ndef wordcount(value):\n    \"\"\"Returns the number of words.\"\"\"\n    return len(value.split())\n\n@register.filter(is_safe=True)\n@stringfilter\ndef wordwrap(value, arg):\n    \"\"\"\n    Wraps words at specified line length.\n\n    Argument: number of characters to wrap the text at.\n    \"\"\"\n    return wrap(value, int(arg))\n\n@register.filter(is_safe=True)\n@stringfilter\ndef ljust(value, arg):\n    \"\"\"\n    Left-aligns the value in a field of a given width.\n\n    Argument: field size.\n    \"\"\"\n    return value.ljust(int(arg))\n\n@register.filter(is_safe=True)\n@stringfilter\ndef rjust(value, arg):\n    \"\"\"\n    Right-aligns the value in a field of a given width.\n\n    Argument: field size.\n    \"\"\"\n    return value.rjust(int(arg))\n\n@register.filter(is_safe=True)\n@stringfilter\ndef center(value, arg):\n    \"\"\"Centers the value in a field of a given width.\"\"\"\n    return value.center(int(arg))\n\n@register.filter\n@stringfilter\ndef cut(value, arg):\n    \"\"\"\n    Removes all values of arg from the given string.\n    \"\"\"\n    safe = isinstance(value, SafeData)\n    value = value.replace(arg, '')\n    if safe and arg != ';':\n        return mark_safe(value)\n    return value\n\n###################\n# HTML STRINGS    #\n###################\n\n@register.filter(\"escape\", is_safe=True)\n@stringfilter\ndef escape_filter(value):\n    \"\"\"\n    Marks the value as a string that should not be auto-escaped.\n    \"\"\"\n    return mark_for_escaping(value)\n\n@register.filter(is_safe=True)\n@stringfilter\ndef force_escape(value):\n    \"\"\"\n    Escapes a string's HTML. This returns a new string containing the escaped\n    characters (as opposed to \"escape\", which marks the content for later\n    possible escaping).\n    \"\"\"\n    return escape(value)\n\n@register.filter(\"linebreaks\", is_safe=True, needs_autoescape=True)\n@stringfilter\ndef linebreaks_filter(value, autoescape=None):\n    \"\"\"\n    Replaces line breaks in plain text with appropriate HTML; a single\n    newline becomes an HTML line break (``<br />``) and a new line\n    followed by a blank line becomes a paragraph break (``</p>``).\n    \"\"\"\n    autoescape = autoescape and not isinstance(value, SafeData)\n    return mark_safe(linebreaks(value, autoescape))\n\n@register.filter(is_safe=True, needs_autoescape=True)\n@stringfilter\ndef linebreaksbr(value, autoescape=None):\n    \"\"\"\n    Converts all newlines in a piece of plain text to HTML line breaks\n    (``<br />``).\n    \"\"\"\n    autoescape = autoescape and not isinstance(value, SafeData)\n    value = normalize_newlines(value)\n    if autoescape:\n        value = escape(value)\n    return mark_safe(value.replace('\\n', '<br />'))\n\n@register.filter(is_safe=True)\n@stringfilter\ndef safe(value):\n    \"\"\"\n    Marks the value as a string that should not be auto-escaped.\n    \"\"\"\n    return mark_safe(value)\n\n@register.filter(is_safe=True)\ndef safeseq(value):\n    \"\"\"\n    A \"safe\" filter for sequences. Marks each element in the sequence,\n    individually, as safe, after converting them to unicode. Returns a list\n    with the results.\n    \"\"\"\n    return [mark_safe(force_text(obj)) for obj in value]\n\n@register.filter(is_safe=True)\n@stringfilter\ndef removetags(value, tags):\n    \"\"\"Removes a space separated list of [X]HTML tags from the output.\"\"\"\n    from django.utils.html import remove_tags\n    return remove_tags(value, tags)\n\n@register.filter(is_safe=True)\n@stringfilter\ndef striptags(value):\n    \"\"\"Strips all [X]HTML tags.\"\"\"\n    return strip_tags(value)\n\n###################\n# LISTS           #\n###################\n\n@register.filter(is_safe=False)\ndef dictsort(value, arg):\n    \"\"\"\n    Takes a list of dicts, returns that list sorted by the property given in\n    the argument.\n    \"\"\"\n    try:\n        return sorted(value, key=Variable(arg).resolve)\n    except (TypeError, VariableDoesNotExist):\n        return ''\n\n@register.filter(is_safe=False)\ndef dictsortreversed(value, arg):\n    \"\"\"\n    Takes a list of dicts, returns that list sorted in reverse order by the\n    property given in the argument.\n    \"\"\"\n    try:\n        return sorted(value, key=Variable(arg).resolve, reverse=True)\n    except (TypeError, VariableDoesNotExist):\n        return ''\n\n@register.filter(is_safe=False)\ndef first(value):\n    \"\"\"Returns the first item in a list.\"\"\"\n    try:\n        return value[0]\n    except IndexError:\n        return ''\n\n@register.filter(is_safe=True, needs_autoescape=True)\ndef join(value, arg, autoescape=None):\n    \"\"\"\n    Joins a list with a string, like Python's ``str.join(list)``.\n    \"\"\"\n    value = map(force_text, value)\n    if autoescape:\n        value = [conditional_escape(v) for v in value]\n    try:\n        data = conditional_escape(arg).join(value)\n    except AttributeError: # fail silently but nicely\n        return value\n    return mark_safe(data)\n\n@register.filter(is_safe=True)\ndef last(value):\n    \"Returns the last item in a list\"\n    try:\n        return value[-1]\n    except IndexError:\n        return ''\n\n@register.filter(is_safe=True)\ndef length(value):\n    \"\"\"Returns the length of the value - useful for lists.\"\"\"\n    try:\n        return len(value)\n    except (ValueError, TypeError):\n        return ''\n\n@register.filter(is_safe=False)\ndef length_is(value, arg):\n    \"\"\"Returns a boolean of whether the value's length is the argument.\"\"\"\n    try:\n        return len(value) == int(arg)\n    except (ValueError, TypeError):\n        return ''\n\n@register.filter(is_safe=True)\ndef random(value):\n    \"\"\"Returns a random item from the list.\"\"\"\n    return random_module.choice(value)\n\n@register.filter(\"slice\", is_safe=True)\ndef slice_filter(value, arg):\n    \"\"\"\n    Returns a slice of the list.\n\n    Uses the same syntax as Python's list slicing; see\n    http://diveintopython.org/native_data_types/lists.html#odbchelper.list.slice\n    for an introduction.\n    \"\"\"\n    try:\n        bits = []\n        for x in arg.split(':'):\n            if len(x) == 0:\n                bits.append(None)\n            else:\n                bits.append(int(x))\n        return value[slice(*bits)]\n\n    except (ValueError, TypeError):\n        return value # Fail silently.\n\n@register.filter(is_safe=True, needs_autoescape=True)\ndef unordered_list(value, autoescape=None):\n    \"\"\"\n    Recursively takes a self-nested list and returns an HTML unordered list --\n    WITHOUT opening and closing <ul> tags.\n\n    The list is assumed to be in the proper format. For example, if ``var``\n    contains: ``['States', ['Kansas', ['Lawrence', 'Topeka'], 'Illinois']]``,\n    then ``{{ var|unordered_list }}`` would return::\n\n        <li>States\n        <ul>\n                <li>Kansas\n                <ul>\n                        <li>Lawrence</li>\n                        <li>Topeka</li>\n                </ul>\n                </li>\n                <li>Illinois</li>\n        </ul>\n        </li>\n    \"\"\"\n    if autoescape:\n        escaper = conditional_escape\n    else:\n        escaper = lambda x: x\n    def convert_old_style_list(list_):\n        \"\"\"\n        Converts old style lists to the new easier to understand format.\n\n        The old list format looked like:\n            ['Item 1', [['Item 1.1', []], ['Item 1.2', []]]\n\n        And it is converted to:\n            ['Item 1', ['Item 1.1', 'Item 1.2]]\n        \"\"\"\n        if not isinstance(list_, (tuple, list)) or len(list_) != 2:\n            return list_, False\n        first_item, second_item = list_\n        if second_item == []:\n            return [first_item], True\n        try:\n            # see if second item is iterable\n            iter(second_item)\n        except TypeError:\n            return list_, False\n        old_style_list = True\n        new_second_item = []\n        for sublist in second_item:\n            item, old_style_list = convert_old_style_list(sublist)\n            if not old_style_list:\n                break\n            new_second_item.extend(item)\n        if old_style_list:\n            second_item = new_second_item\n        return [first_item, second_item], old_style_list\n    def _helper(list_, tabs=1):\n        indent = '\\t' * tabs\n        output = []\n\n        list_length = len(list_)\n        i = 0\n        while i < list_length:\n            title = list_[i]\n            sublist = ''\n            sublist_item = None\n            if isinstance(title, (list, tuple)):\n                sublist_item = title\n                title = ''\n            elif i < list_length - 1:\n                next_item = list_[i+1]\n                if next_item and isinstance(next_item, (list, tuple)):\n                    # The next item is a sub-list.\n                    sublist_item = next_item\n                    # We've processed the next item now too.\n                    i += 1\n            if sublist_item:\n                sublist = _helper(sublist_item, tabs+1)\n                sublist = '\\n%s<ul>\\n%s\\n%s</ul>\\n%s' % (indent, sublist,\n                                                         indent, indent)\n            output.append('%s<li>%s%s</li>' % (indent,\n                    escaper(force_text(title)), sublist))\n            i += 1\n        return '\\n'.join(output)\n    value, converted = convert_old_style_list(value)\n    return mark_safe(_helper(value))\n\n###################\n# INTEGERS        #\n###################\n\n@register.filter(is_safe=False)\ndef add(value, arg):\n    \"\"\"Adds the arg to the value.\"\"\"\n    try:\n        return int(value) + int(arg)\n    except (ValueError, TypeError):\n        try:\n            return value + arg\n        except Exception:\n            return ''\n\n@register.filter(is_safe=False)\ndef get_digit(value, arg):\n    \"\"\"\n    Given a whole number, returns the requested digit of it, where 1 is the\n    right-most digit, 2 is the second-right-most digit, etc. Returns the\n    original value for invalid input (if input or argument is not an integer,\n    or if argument is less than 1). Otherwise, output is always an integer.\n    \"\"\"\n    try:\n        arg = int(arg)\n        value = int(value)\n    except ValueError:\n        return value # Fail silently for an invalid argument\n    if arg < 1:\n        return value\n    try:\n        return int(str(value)[-arg])\n    except IndexError:\n        return 0\n\n###################\n# DATES           #\n###################\n\n@register.filter(expects_localtime=True, is_safe=False)\ndef date(value, arg=None):\n    \"\"\"Formats a date according to the given format.\"\"\"\n    if value in (None, ''):\n        return ''\n    if arg is None:\n        arg = settings.DATE_FORMAT\n    try:\n        return formats.date_format(value, arg)\n    except AttributeError:\n        try:\n            return format(value, arg)\n        except AttributeError:\n            return ''\n\n@register.filter(expects_localtime=True, is_safe=False)\ndef time(value, arg=None):\n    \"\"\"Formats a time according to the given format.\"\"\"\n    if value in (None, ''):\n        return ''\n    if arg is None:\n        arg = settings.TIME_FORMAT\n    try:\n        return formats.time_format(value, arg)\n    except AttributeError:\n        try:\n            return time_format(value, arg)\n        except AttributeError:\n            return ''\n\n@register.filter(\"timesince\", is_safe=False)\ndef timesince_filter(value, arg=None):\n    \"\"\"Formats a date as the time since that date (i.e. \"4 days, 6 hours\").\"\"\"\n    if not value:\n        return ''\n    try:\n        if arg:\n            return timesince(value, arg)\n        return timesince(value)\n    except (ValueError, TypeError):\n        return ''\n\n@register.filter(\"timeuntil\", is_safe=False)\ndef timeuntil_filter(value, arg=None):\n    \"\"\"Formats a date as the time until that date (i.e. \"4 days, 6 hours\").\"\"\"\n    if not value:\n        return ''\n    try:\n        return timeuntil(value, arg)\n    except (ValueError, TypeError):\n        return ''\n\n###################\n# LOGIC           #\n###################\n\n@register.filter(is_safe=False)\ndef default(value, arg):\n    \"\"\"If value is unavailable, use given default.\"\"\"\n    return value or arg\n\n@register.filter(is_safe=False)\ndef default_if_none(value, arg):\n    \"\"\"If value is None, use given default.\"\"\"\n    if value is None:\n        return arg\n    return value\n\n@register.filter(is_safe=False)\ndef divisibleby(value, arg):\n    \"\"\"Returns True if the value is devisible by the argument.\"\"\"\n    return int(value) % int(arg) == 0\n\n@register.filter(is_safe=False)\ndef yesno(value, arg=None):\n    \"\"\"\n    Given a string mapping values for true, false and (optionally) None,\n    returns one of those strings according to the value:\n\n    ==========  ======================  ==================================\n    Value       Argument                Outputs\n    ==========  ======================  ==================================\n    ``True``    ``\"yeah,no,maybe\"``     ``yeah``\n    ``False``   ``\"yeah,no,maybe\"``     ``no``\n    ``None``    ``\"yeah,no,maybe\"``     ``maybe``\n    ``None``    ``\"yeah,no\"``           ``\"no\"`` (converts None to False\n                                        if no mapping for None is given.\n    ==========  ======================  ==================================\n    \"\"\"\n    if arg is None:\n        arg = ugettext('yes,no,maybe')\n    bits = arg.split(',')\n    if len(bits) < 2:\n        return value # Invalid arg.\n    try:\n        yes, no, maybe = bits\n    except ValueError:\n        # Unpack list of wrong size (no \"maybe\" value provided).\n        yes, no, maybe = bits[0], bits[1], bits[1]\n    if value is None:\n        return maybe\n    if value:\n        return yes\n    return no\n\n###################\n# MISC            #\n###################\n\n@register.filter(is_safe=True)\ndef filesizeformat(bytes):\n    \"\"\"\n    Formats the value like a 'human-readable' file size (i.e. 13 KB, 4.1 MB,\n    102 bytes, etc).\n    \"\"\"\n    try:\n        bytes = float(bytes)\n    except (TypeError,ValueError,UnicodeDecodeError):\n        return ungettext(\"%(size)d byte\", \"%(size)d bytes\", 0) % {'size': 0}\n\n    filesize_number_format = lambda value: formats.number_format(round(value, 1), 1)\n\n    KB = 1<<10\n    MB = 1<<20\n    GB = 1<<30\n    TB = 1<<40\n    PB = 1<<50\n\n    if bytes < KB:\n        return ungettext(\"%(size)d byte\", \"%(size)d bytes\", bytes) % {'size': bytes}\n    if bytes < MB:\n        return ugettext(\"%s KB\") % filesize_number_format(bytes / KB)\n    if bytes < GB:\n        return ugettext(\"%s MB\") % filesize_number_format(bytes / MB)\n    if bytes < TB:\n        return ugettext(\"%s GB\") % filesize_number_format(bytes / GB)\n    if bytes < PB:\n        return ugettext(\"%s TB\") % filesize_number_format(bytes / TB)\n    return ugettext(\"%s PB\") % filesize_number_format(bytes / PB)\n\n@register.filter(is_safe=False)\ndef pluralize(value, arg='s'):\n    \"\"\"\n    Returns a plural suffix if the value is not 1. By default, 's' is used as\n    the suffix:\n\n    * If value is 0, vote{{ value|pluralize }} displays \"0 votes\".\n    * If value is 1, vote{{ value|pluralize }} displays \"1 vote\".\n    * If value is 2, vote{{ value|pluralize }} displays \"2 votes\".\n\n    If an argument is provided, that string is used instead:\n\n    * If value is 0, class{{ value|pluralize:\"es\" }} displays \"0 classes\".\n    * If value is 1, class{{ value|pluralize:\"es\" }} displays \"1 class\".\n    * If value is 2, class{{ value|pluralize:\"es\" }} displays \"2 classes\".\n\n    If the provided argument contains a comma, the text before the comma is\n    used for the singular case and the text after the comma is used for the\n    plural case:\n\n    * If value is 0, cand{{ value|pluralize:\"y,ies\" }} displays \"0 candies\".\n    * If value is 1, cand{{ value|pluralize:\"y,ies\" }} displays \"1 candy\".\n    * If value is 2, cand{{ value|pluralize:\"y,ies\" }} displays \"2 candies\".\n    \"\"\"\n    if not ',' in arg:\n        arg = ',' + arg\n    bits = arg.split(',')\n    if len(bits) > 2:\n        return ''\n    singular_suffix, plural_suffix = bits[:2]\n\n    try:\n        if int(value) != 1:\n            return plural_suffix\n    except ValueError: # Invalid string that's not a number.\n        pass\n    except TypeError: # Value isn't a string or a number; maybe it's a list?\n        try:\n            if len(value) != 1:\n                return plural_suffix\n        except TypeError: # len() of unsized object.\n            pass\n    return singular_suffix\n\n@register.filter(\"phone2numeric\", is_safe=True)\ndef phone2numeric_filter(value):\n    \"\"\"Takes a phone number and converts it in to its numerical equivalent.\"\"\"\n    return phone2numeric(value)\n\n@register.filter(is_safe=True)\ndef pprint(value):\n    \"\"\"A wrapper around pprint.pprint -- for debugging, really.\"\"\"\n    try:\n        return pformat(value)\n    except Exception as e:\n        return \"Error in formatting: %s\" % force_text(e, errors=\"replace\")\n"
  },
  {
    "path": "Django-1.5.1/django/template/defaulttags.py",
    "content": "\"\"\"Default tags used by the template system, available to all templates.\"\"\"\nfrom __future__ import unicode_literals\n\nimport sys\nimport re\nfrom datetime import datetime\nfrom itertools import groupby, cycle as itertools_cycle\n\nfrom django.conf import settings\nfrom django.template.base import (Node, NodeList, Template, Context, Library,\n    TemplateSyntaxError, VariableDoesNotExist, InvalidTemplateLibrary,\n    BLOCK_TAG_START, BLOCK_TAG_END, VARIABLE_TAG_START, VARIABLE_TAG_END,\n    SINGLE_BRACE_START, SINGLE_BRACE_END, COMMENT_TAG_START, COMMENT_TAG_END,\n    VARIABLE_ATTRIBUTE_SEPARATOR, get_library, token_kwargs, kwarg_re)\nfrom django.template.smartif import IfParser, Literal\nfrom django.template.defaultfilters import date\nfrom django.utils.encoding import smart_text\nfrom django.utils.safestring import mark_safe\nfrom django.utils.html import format_html\nfrom django.utils import six\nfrom django.utils import timezone\n\nregister = Library()\n\nclass AutoEscapeControlNode(Node):\n    \"\"\"Implements the actions of the autoescape tag.\"\"\"\n    def __init__(self, setting, nodelist):\n        self.setting, self.nodelist = setting, nodelist\n\n    def render(self, context):\n        old_setting = context.autoescape\n        context.autoescape = self.setting\n        output = self.nodelist.render(context)\n        context.autoescape = old_setting\n        if self.setting:\n            return mark_safe(output)\n        else:\n            return output\n\nclass CommentNode(Node):\n    def render(self, context):\n        return ''\n\nclass CsrfTokenNode(Node):\n    def render(self, context):\n        csrf_token = context.get('csrf_token', None)\n        if csrf_token:\n            if csrf_token == 'NOTPROVIDED':\n                return format_html(\"\")\n            else:\n                return format_html(\"<input type='hidden' name='csrfmiddlewaretoken' value='{0}' />\", csrf_token)\n        else:\n            # It's very probable that the token is missing because of\n            # misconfiguration, so we raise a warning\n            from django.conf import settings\n            if settings.DEBUG:\n                import warnings\n                warnings.warn(\"A {% csrf_token %} was used in a template, but the context did not provide the value.  This is usually caused by not using RequestContext.\")\n            return ''\n\nclass CycleNode(Node):\n    def __init__(self, cyclevars, variable_name=None, silent=False):\n        self.cyclevars = cyclevars\n        self.variable_name = variable_name\n        self.silent = silent\n\n    def render(self, context):\n        if self not in context.render_context:\n            # First time the node is rendered in template\n            context.render_context[self] = itertools_cycle(self.cyclevars)\n        cycle_iter = context.render_context[self]\n        value = next(cycle_iter).resolve(context)\n        if self.variable_name:\n            context[self.variable_name] = value\n        if self.silent:\n            return ''\n        return value\n\nclass DebugNode(Node):\n    def render(self, context):\n        from pprint import pformat\n        output = [pformat(val) for val in context]\n        output.append('\\n\\n')\n        output.append(pformat(sys.modules))\n        return ''.join(output)\n\nclass FilterNode(Node):\n    def __init__(self, filter_expr, nodelist):\n        self.filter_expr, self.nodelist = filter_expr, nodelist\n\n    def render(self, context):\n        output = self.nodelist.render(context)\n        # Apply filters.\n        context.update({'var': output})\n        filtered = self.filter_expr.resolve(context)\n        context.pop()\n        return filtered\n\nclass FirstOfNode(Node):\n    def __init__(self, vars):\n        self.vars = vars\n\n    def render(self, context):\n        for var in self.vars:\n            value = var.resolve(context, True)\n            if value:\n                return smart_text(value)\n        return ''\n\nclass ForNode(Node):\n    child_nodelists = ('nodelist_loop', 'nodelist_empty')\n\n    def __init__(self, loopvars, sequence, is_reversed, nodelist_loop, nodelist_empty=None):\n        self.loopvars, self.sequence = loopvars, sequence\n        self.is_reversed = is_reversed\n        self.nodelist_loop = nodelist_loop\n        if nodelist_empty is None:\n            self.nodelist_empty = NodeList()\n        else:\n            self.nodelist_empty = nodelist_empty\n\n    def __repr__(self):\n        reversed_text = self.is_reversed and ' reversed' or ''\n        return \"<For Node: for %s in %s, tail_len: %d%s>\" % \\\n            (', '.join(self.loopvars), self.sequence, len(self.nodelist_loop),\n             reversed_text)\n\n    def __iter__(self):\n        for node in self.nodelist_loop:\n            yield node\n        for node in self.nodelist_empty:\n            yield node\n\n    def render(self, context):\n        if 'forloop' in context:\n            parentloop = context['forloop']\n        else:\n            parentloop = {}\n        context.push()\n        try:\n            values = self.sequence.resolve(context, True)\n        except VariableDoesNotExist:\n            values = []\n        if values is None:\n            values = []\n        if not hasattr(values, '__len__'):\n            values = list(values)\n        len_values = len(values)\n        if len_values < 1:\n            context.pop()\n            return self.nodelist_empty.render(context)\n        nodelist = NodeList()\n        if self.is_reversed:\n            values = reversed(values)\n        unpack = len(self.loopvars) > 1\n        # Create a forloop value in the context.  We'll update counters on each\n        # iteration just below.\n        loop_dict = context['forloop'] = {'parentloop': parentloop}\n        for i, item in enumerate(values):\n            # Shortcuts for current loop iteration number.\n            loop_dict['counter0'] = i\n            loop_dict['counter'] = i+1\n            # Reverse counter iteration numbers.\n            loop_dict['revcounter'] = len_values - i\n            loop_dict['revcounter0'] = len_values - i - 1\n            # Boolean values designating first and last times through loop.\n            loop_dict['first'] = (i == 0)\n            loop_dict['last'] = (i == len_values - 1)\n\n            pop_context = False\n            if unpack:\n                # If there are multiple loop variables, unpack the item into\n                # them.\n                try:\n                    unpacked_vars = dict(zip(self.loopvars, item))\n                except TypeError:\n                    pass\n                else:\n                    pop_context = True\n                    context.update(unpacked_vars)\n            else:\n                context[self.loopvars[0]] = item\n            # In TEMPLATE_DEBUG mode provide source of the node which\n            # actually raised the exception\n            if settings.TEMPLATE_DEBUG:\n                for node in self.nodelist_loop:\n                    try:\n                        nodelist.append(node.render(context))\n                    except Exception as e:\n                        if not hasattr(e, 'django_template_source'):\n                            e.django_template_source = node.source\n                        raise\n            else:\n                for node in self.nodelist_loop:\n                    nodelist.append(node.render(context))\n            if pop_context:\n                # The loop variables were pushed on to the context so pop them\n                # off again. This is necessary because the tag lets the length\n                # of loopvars differ to the length of each set of items and we\n                # don't want to leave any vars from the previous loop on the\n                # context.\n                context.pop()\n        context.pop()\n        return nodelist.render(context)\n\nclass IfChangedNode(Node):\n    child_nodelists = ('nodelist_true', 'nodelist_false')\n\n    def __init__(self, nodelist_true, nodelist_false, *varlist):\n        self.nodelist_true, self.nodelist_false = nodelist_true, nodelist_false\n        self._last_seen = None\n        self._varlist = varlist\n        self._id = str(id(self))\n\n    def render(self, context):\n        if 'forloop' in context and self._id not in context['forloop']:\n            self._last_seen = None\n            context['forloop'][self._id] = 1\n        try:\n            if self._varlist:\n                # Consider multiple parameters.  This automatically behaves\n                # like an OR evaluation of the multiple variables.\n                compare_to = [var.resolve(context, True) for var in self._varlist]\n            else:\n                compare_to = self.nodelist_true.render(context)\n        except VariableDoesNotExist:\n            compare_to = None\n\n        if compare_to != self._last_seen:\n            self._last_seen = compare_to\n            content = self.nodelist_true.render(context)\n            return content\n        elif self.nodelist_false:\n            return self.nodelist_false.render(context)\n        return ''\n\nclass IfEqualNode(Node):\n    child_nodelists = ('nodelist_true', 'nodelist_false')\n\n    def __init__(self, var1, var2, nodelist_true, nodelist_false, negate):\n        self.var1, self.var2 = var1, var2\n        self.nodelist_true, self.nodelist_false = nodelist_true, nodelist_false\n        self.negate = negate\n\n    def __repr__(self):\n        return \"<IfEqualNode>\"\n\n    def render(self, context):\n        val1 = self.var1.resolve(context, True)\n        val2 = self.var2.resolve(context, True)\n        if (self.negate and val1 != val2) or (not self.negate and val1 == val2):\n            return self.nodelist_true.render(context)\n        return self.nodelist_false.render(context)\n\nclass IfNode(Node):\n\n    def __init__(self, conditions_nodelists):\n        self.conditions_nodelists = conditions_nodelists\n\n    def __repr__(self):\n        return \"<IfNode>\"\n\n    def __iter__(self):\n        for _, nodelist in self.conditions_nodelists:\n            for node in nodelist:\n                yield node\n\n    @property\n    def nodelist(self):\n        return NodeList(node for _, nodelist in self.conditions_nodelists for node in nodelist)\n\n    def render(self, context):\n        for condition, nodelist in self.conditions_nodelists:\n\n            if condition is not None:           # if / elif clause\n                try:\n                    match = condition.eval(context)\n                except VariableDoesNotExist:\n                    match = None\n            else:                               # else clause\n                match = True\n\n            if match:\n                return nodelist.render(context)\n\n        return ''\n\nclass RegroupNode(Node):\n    def __init__(self, target, expression, var_name):\n        self.target, self.expression = target, expression\n        self.var_name = var_name\n\n    def resolve_expression(self, obj, context):\n        # This method is called for each object in self.target. See regroup()\n        # for the reason why we temporarily put the object in the context.\n        context[self.var_name] = obj\n        return self.expression.resolve(context, True)\n\n    def render(self, context):\n        obj_list = self.target.resolve(context, True)\n        if obj_list == None:\n            # target variable wasn't found in context; fail silently.\n            context[self.var_name] = []\n            return ''\n        # List of dictionaries in the format:\n        # {'grouper': 'key', 'list': [list of contents]}.\n        context[self.var_name] = [\n            {'grouper': key, 'list': list(val)}\n            for key, val in\n            groupby(obj_list, lambda obj: self.resolve_expression(obj, context))\n        ]\n        return ''\n\ndef include_is_allowed(filepath):\n    for root in settings.ALLOWED_INCLUDE_ROOTS:\n        if filepath.startswith(root):\n            return True\n    return False\n\nclass SsiNode(Node):\n    def __init__(self, filepath, parsed):\n        self.filepath = filepath\n        self.parsed = parsed\n\n    def render(self, context):\n        filepath = self.filepath.resolve(context)\n\n        if not include_is_allowed(filepath):\n            if settings.DEBUG:\n                return \"[Didn't have permission to include file]\"\n            else:\n                return '' # Fail silently for invalid includes.\n        try:\n            with open(filepath, 'r') as fp:\n                output = fp.read()\n        except IOError:\n            output = ''\n        if self.parsed:\n            try:\n                t = Template(output, name=filepath)\n                return t.render(context)\n            except TemplateSyntaxError as e:\n                if settings.DEBUG:\n                    return \"[Included template had syntax error: %s]\" % e\n                else:\n                    return '' # Fail silently for invalid included templates.\n        return output\n\nclass LoadNode(Node):\n    def render(self, context):\n        return ''\n\nclass NowNode(Node):\n    def __init__(self, format_string):\n        self.format_string = format_string\n\n    def render(self, context):\n        tzinfo = timezone.get_current_timezone() if settings.USE_TZ else None\n        return date(datetime.now(tz=tzinfo), self.format_string)\n\nclass SpacelessNode(Node):\n    def __init__(self, nodelist):\n        self.nodelist = nodelist\n\n    def render(self, context):\n        from django.utils.html import strip_spaces_between_tags\n        return strip_spaces_between_tags(self.nodelist.render(context).strip())\n\nclass TemplateTagNode(Node):\n    mapping = {'openblock': BLOCK_TAG_START,\n               'closeblock': BLOCK_TAG_END,\n               'openvariable': VARIABLE_TAG_START,\n               'closevariable': VARIABLE_TAG_END,\n               'openbrace': SINGLE_BRACE_START,\n               'closebrace': SINGLE_BRACE_END,\n               'opencomment': COMMENT_TAG_START,\n               'closecomment': COMMENT_TAG_END,\n               }\n\n    def __init__(self, tagtype):\n        self.tagtype = tagtype\n\n    def render(self, context):\n        return self.mapping.get(self.tagtype, '')\n\nclass URLNode(Node):\n    def __init__(self, view_name, args, kwargs, asvar):\n        self.view_name = view_name\n        self.args = args\n        self.kwargs = kwargs\n        self.asvar = asvar\n\n    def render(self, context):\n        from django.core.urlresolvers import reverse, NoReverseMatch\n        args = [arg.resolve(context) for arg in self.args]\n        kwargs = dict([(smart_text(k, 'ascii'), v.resolve(context))\n                       for k, v in self.kwargs.items()])\n\n        view_name = self.view_name.resolve(context)\n\n        if not view_name:\n            raise NoReverseMatch(\"'url' requires a non-empty first argument. \"\n                \"The syntax changed in Django 1.5, see the docs.\")\n\n        # Try to look up the URL twice: once given the view name, and again\n        # relative to what we guess is the \"main\" app. If they both fail,\n        # re-raise the NoReverseMatch unless we're using the\n        # {% url ... as var %} construct in which case return nothing.\n        url = ''\n        try:\n            url = reverse(view_name, args=args, kwargs=kwargs, current_app=context.current_app)\n        except NoReverseMatch as e:\n            if settings.SETTINGS_MODULE:\n                project_name = settings.SETTINGS_MODULE.split('.')[0]\n                try:\n                    url = reverse(project_name + '.' + view_name,\n                              args=args, kwargs=kwargs,\n                              current_app=context.current_app)\n                except NoReverseMatch:\n                    if self.asvar is None:\n                        # Re-raise the original exception, not the one with\n                        # the path relative to the project. This makes a\n                        # better error message.\n                        raise e\n            else:\n                if self.asvar is None:\n                    raise e\n\n        if self.asvar:\n            context[self.asvar] = url\n            return ''\n        else:\n            return url\n\nclass VerbatimNode(Node):\n    def __init__(self, content):\n        self.content = content\n\n    def render(self, context):\n        return self.content\n\nclass WidthRatioNode(Node):\n    def __init__(self, val_expr, max_expr, max_width):\n        self.val_expr = val_expr\n        self.max_expr = max_expr\n        self.max_width = max_width\n\n    def render(self, context):\n        try:\n            value = self.val_expr.resolve(context)\n            max_value = self.max_expr.resolve(context)\n            max_width = int(self.max_width.resolve(context))\n        except VariableDoesNotExist:\n            return ''\n        except (ValueError, TypeError):\n            raise TemplateSyntaxError(\"widthratio final argument must be an number\")\n        try:\n            value = float(value)\n            max_value = float(max_value)\n            ratio = (value / max_value) * max_width\n        except ZeroDivisionError:\n            return '0'\n        except (ValueError, TypeError):\n            return ''\n        return str(int(round(ratio)))\n\nclass WithNode(Node):\n    def __init__(self, var, name, nodelist, extra_context=None):\n        self.nodelist = nodelist\n        # var and name are legacy attributes, being left in case they are used\n        # by third-party subclasses of this Node.\n        self.extra_context = extra_context or {}\n        if name:\n            self.extra_context[name] = var\n\n    def __repr__(self):\n        return \"<WithNode>\"\n\n    def render(self, context):\n        values = dict([(key, val.resolve(context)) for key, val in\n                       six.iteritems(self.extra_context)])\n        context.update(values)\n        output = self.nodelist.render(context)\n        context.pop()\n        return output\n\n@register.tag\ndef autoescape(parser, token):\n    \"\"\"\n    Force autoescape behavior for this block.\n    \"\"\"\n    args = token.contents.split()\n    if len(args) != 2:\n        raise TemplateSyntaxError(\"'autoescape' tag requires exactly one argument.\")\n    arg = args[1]\n    if arg not in ('on', 'off'):\n        raise TemplateSyntaxError(\"'autoescape' argument should be 'on' or 'off'\")\n    nodelist = parser.parse(('endautoescape',))\n    parser.delete_first_token()\n    return AutoEscapeControlNode((arg == 'on'), nodelist)\n\n@register.tag\ndef comment(parser, token):\n    \"\"\"\n    Ignores everything between ``{% comment %}`` and ``{% endcomment %}``.\n    \"\"\"\n    parser.skip_past('endcomment')\n    return CommentNode()\n\n@register.tag\ndef cycle(parser, token):\n    \"\"\"\n    Cycles among the given strings each time this tag is encountered.\n\n    Within a loop, cycles among the given strings each time through\n    the loop::\n\n        {% for o in some_list %}\n            <tr class=\"{% cycle 'row1' 'row2' %}\">\n                ...\n            </tr>\n        {% endfor %}\n\n    Outside of a loop, give the values a unique name the first time you call\n    it, then use that name each sucessive time through::\n\n            <tr class=\"{% cycle 'row1' 'row2' 'row3' as rowcolors %}\">...</tr>\n            <tr class=\"{% cycle rowcolors %}\">...</tr>\n            <tr class=\"{% cycle rowcolors %}\">...</tr>\n\n    You can use any number of values, separated by spaces. Commas can also\n    be used to separate values; if a comma is used, the cycle values are\n    interpreted as literal strings.\n\n    The optional flag \"silent\" can be used to prevent the cycle declaration\n    from returning any value::\n\n        {% for o in some_list %}\n            {% cycle 'row1' 'row2' as rowcolors silent %}\n            <tr class=\"{{ rowcolors }}\">{% include \"subtemplate.html \" %}</tr>\n        {% endfor %}\n\n    \"\"\"\n\n    # Note: This returns the exact same node on each {% cycle name %} call;\n    # that is, the node object returned from {% cycle a b c as name %} and the\n    # one returned from {% cycle name %} are the exact same object. This\n    # shouldn't cause problems (heh), but if it does, now you know.\n    #\n    # Ugly hack warning: This stuffs the named template dict into parser so\n    # that names are only unique within each template (as opposed to using\n    # a global variable, which would make cycle names have to be unique across\n    # *all* templates.\n\n    args = token.split_contents()\n\n    if len(args) < 2:\n        raise TemplateSyntaxError(\"'cycle' tag requires at least two arguments\")\n\n    if ',' in args[1]:\n        # Backwards compatibility: {% cycle a,b %} or {% cycle a,b as foo %}\n        # case.\n        args[1:2] = ['\"%s\"' % arg for arg in args[1].split(\",\")]\n\n    if len(args) == 2:\n        # {% cycle foo %} case.\n        name = args[1]\n        if not hasattr(parser, '_namedCycleNodes'):\n            raise TemplateSyntaxError(\"No named cycles in template. '%s' is not defined\" % name)\n        if not name in parser._namedCycleNodes:\n            raise TemplateSyntaxError(\"Named cycle '%s' does not exist\" % name)\n        return parser._namedCycleNodes[name]\n\n    as_form = False\n\n    if len(args) > 4:\n        # {% cycle ... as foo [silent] %} case.\n        if args[-3] == \"as\":\n            if args[-1] != \"silent\":\n                raise TemplateSyntaxError(\"Only 'silent' flag is allowed after cycle's name, not '%s'.\" % args[-1])\n            as_form = True\n            silent = True\n            args = args[:-1]\n        elif args[-2] == \"as\":\n            as_form = True\n            silent = False\n\n    if as_form:\n        name = args[-1]\n        values = [parser.compile_filter(arg) for arg in args[1:-2]]\n        node = CycleNode(values, name, silent=silent)\n        if not hasattr(parser, '_namedCycleNodes'):\n            parser._namedCycleNodes = {}\n        parser._namedCycleNodes[name] = node\n    else:\n        values = [parser.compile_filter(arg) for arg in args[1:]]\n        node = CycleNode(values)\n    return node\n\n@register.tag\ndef csrf_token(parser, token):\n    return CsrfTokenNode()\n\n@register.tag\ndef debug(parser, token):\n    \"\"\"\n    Outputs a whole load of debugging information, including the current\n    context and imported modules.\n\n    Sample usage::\n\n        <pre>\n            {% debug %}\n        </pre>\n    \"\"\"\n    return DebugNode()\n\n@register.tag('filter')\ndef do_filter(parser, token):\n    \"\"\"\n    Filters the contents of the block through variable filters.\n\n    Filters can also be piped through each other, and they can have\n    arguments -- just like in variable syntax.\n\n    Sample usage::\n\n        {% filter force_escape|lower %}\n            This text will be HTML-escaped, and will appear in lowercase.\n        {% endfilter %}\n\n    Note that the ``escape`` and ``safe`` filters are not acceptable arguments.\n    Instead, use the ``autoescape`` tag to manage autoescaping for blocks of\n    template code.\n    \"\"\"\n    _, rest = token.contents.split(None, 1)\n    filter_expr = parser.compile_filter(\"var|%s\" % (rest))\n    for func, unused in filter_expr.filters:\n        if getattr(func, '_decorated_function', func).__name__ in ('escape', 'safe'):\n            raise TemplateSyntaxError('\"filter %s\" is not permitted.  Use the \"autoescape\" tag instead.' % func.__name__)\n    nodelist = parser.parse(('endfilter',))\n    parser.delete_first_token()\n    return FilterNode(filter_expr, nodelist)\n\n@register.tag\ndef firstof(parser, token):\n    \"\"\"\n    Outputs the first variable passed that is not False, without escaping.\n\n    Outputs nothing if all the passed variables are False.\n\n    Sample usage::\n\n        {% firstof var1 var2 var3 %}\n\n    This is equivalent to::\n\n        {% if var1 %}\n            {{ var1|safe }}\n        {% else %}{% if var2 %}\n            {{ var2|safe }}\n        {% else %}{% if var3 %}\n            {{ var3|safe }}\n        {% endif %}{% endif %}{% endif %}\n\n    but obviously much cleaner!\n\n    You can also use a literal string as a fallback value in case all\n    passed variables are False::\n\n        {% firstof var1 var2 var3 \"fallback value\" %}\n\n    If you want to escape the output, use a filter tag::\n\n        {% filter force_escape %}\n            {% firstof var1 var2 var3 \"fallback value\" %}\n        {% endfilter %}\n\n    \"\"\"\n    bits = token.split_contents()[1:]\n    if len(bits) < 1:\n        raise TemplateSyntaxError(\"'firstof' statement requires at least one argument\")\n    return FirstOfNode([parser.compile_filter(bit) for bit in bits])\n\n@register.tag('for')\ndef do_for(parser, token):\n    \"\"\"\n    Loops over each item in an array.\n\n    For example, to display a list of athletes given ``athlete_list``::\n\n        <ul>\n        {% for athlete in athlete_list %}\n            <li>{{ athlete.name }}</li>\n        {% endfor %}\n        </ul>\n\n    You can loop over a list in reverse by using\n    ``{% for obj in list reversed %}``.\n\n    You can also unpack multiple values from a two-dimensional array::\n\n        {% for key,value in dict.items %}\n            {{ key }}: {{ value }}\n        {% endfor %}\n\n    The ``for`` tag can take an optional ``{% empty %}`` clause that will\n    be displayed if the given array is empty or could not be found::\n\n        <ul>\n          {% for athlete in athlete_list %}\n            <li>{{ athlete.name }}</li>\n          {% empty %}\n            <li>Sorry, no athletes in this list.</li>\n          {% endfor %}\n        <ul>\n\n    The above is equivalent to -- but shorter, cleaner, and possibly faster\n    than -- the following::\n\n        <ul>\n          {% if althete_list %}\n            {% for athlete in athlete_list %}\n              <li>{{ athlete.name }}</li>\n            {% endfor %}\n          {% else %}\n            <li>Sorry, no athletes in this list.</li>\n          {% endif %}\n        </ul>\n\n    The for loop sets a number of variables available within the loop:\n\n        ==========================  ================================================\n        Variable                    Description\n        ==========================  ================================================\n        ``forloop.counter``         The current iteration of the loop (1-indexed)\n        ``forloop.counter0``        The current iteration of the loop (0-indexed)\n        ``forloop.revcounter``      The number of iterations from the end of the\n                                    loop (1-indexed)\n        ``forloop.revcounter0``     The number of iterations from the end of the\n                                    loop (0-indexed)\n        ``forloop.first``           True if this is the first time through the loop\n        ``forloop.last``            True if this is the last time through the loop\n        ``forloop.parentloop``      For nested loops, this is the loop \"above\" the\n                                    current one\n        ==========================  ================================================\n\n    \"\"\"\n    bits = token.contents.split()\n    if len(bits) < 4:\n        raise TemplateSyntaxError(\"'for' statements should have at least four\"\n                                  \" words: %s\" % token.contents)\n\n    is_reversed = bits[-1] == 'reversed'\n    in_index = is_reversed and -3 or -2\n    if bits[in_index] != 'in':\n        raise TemplateSyntaxError(\"'for' statements should use the format\"\n                                  \" 'for x in y': %s\" % token.contents)\n\n    loopvars = re.split(r' *, *', ' '.join(bits[1:in_index]))\n    for var in loopvars:\n        if not var or ' ' in var:\n            raise TemplateSyntaxError(\"'for' tag received an invalid argument:\"\n                                      \" %s\" % token.contents)\n\n    sequence = parser.compile_filter(bits[in_index+1])\n    nodelist_loop = parser.parse(('empty', 'endfor',))\n    token = parser.next_token()\n    if token.contents == 'empty':\n        nodelist_empty = parser.parse(('endfor',))\n        parser.delete_first_token()\n    else:\n        nodelist_empty = None\n    return ForNode(loopvars, sequence, is_reversed, nodelist_loop, nodelist_empty)\n\ndef do_ifequal(parser, token, negate):\n    bits = list(token.split_contents())\n    if len(bits) != 3:\n        raise TemplateSyntaxError(\"%r takes two arguments\" % bits[0])\n    end_tag = 'end' + bits[0]\n    nodelist_true = parser.parse(('else', end_tag))\n    token = parser.next_token()\n    if token.contents == 'else':\n        nodelist_false = parser.parse((end_tag,))\n        parser.delete_first_token()\n    else:\n        nodelist_false = NodeList()\n    val1 = parser.compile_filter(bits[1])\n    val2 = parser.compile_filter(bits[2])\n    return IfEqualNode(val1, val2, nodelist_true, nodelist_false, negate)\n\n@register.tag\ndef ifequal(parser, token):\n    \"\"\"\n    Outputs the contents of the block if the two arguments equal each other.\n\n    Examples::\n\n        {% ifequal user.id comment.user_id %}\n            ...\n        {% endifequal %}\n\n        {% ifnotequal user.id comment.user_id %}\n            ...\n        {% else %}\n            ...\n        {% endifnotequal %}\n    \"\"\"\n    return do_ifequal(parser, token, False)\n\n@register.tag\ndef ifnotequal(parser, token):\n    \"\"\"\n    Outputs the contents of the block if the two arguments are not equal.\n    See ifequal.\n    \"\"\"\n    return do_ifequal(parser, token, True)\n\nclass TemplateLiteral(Literal):\n    def __init__(self, value, text):\n        self.value = value\n        self.text = text # for better error messages\n\n    def display(self):\n        return self.text\n\n    def eval(self, context):\n        return self.value.resolve(context, ignore_failures=True)\n\nclass TemplateIfParser(IfParser):\n    error_class = TemplateSyntaxError\n\n    def __init__(self, parser, *args, **kwargs):\n        self.template_parser = parser\n        super(TemplateIfParser, self).__init__(*args, **kwargs)\n\n    def create_var(self, value):\n        return TemplateLiteral(self.template_parser.compile_filter(value), value)\n\n@register.tag('if')\ndef do_if(parser, token):\n    \"\"\"\n    The ``{% if %}`` tag evaluates a variable, and if that variable is \"true\"\n    (i.e., exists, is not empty, and is not a false boolean value), the\n    contents of the block are output:\n\n    ::\n\n        {% if athlete_list %}\n            Number of athletes: {{ athlete_list|count }}\n        {% elif athlete_in_locker_room_list %}\n            Athletes should be out of the locker room soon!\n        {% else %}\n            No athletes.\n        {% endif %}\n\n    In the above, if ``athlete_list`` is not empty, the number of athletes will\n    be displayed by the ``{{ athlete_list|count }}`` variable.\n\n    As you can see, the ``if`` tag may take one or several `` {% elif %}``\n    clauses, as well as an ``{% else %}`` clause that will be displayed if all\n    previous conditions fail. These clauses are optional.\n\n    ``if`` tags may use ``or``, ``and`` or ``not`` to test a number of\n    variables or to negate a given variable::\n\n        {% if not athlete_list %}\n            There are no athletes.\n        {% endif %}\n\n        {% if athlete_list or coach_list %}\n            There are some athletes or some coaches.\n        {% endif %}\n\n        {% if athlete_list and coach_list %}\n            Both atheletes and coaches are available.\n        {% endif %}\n\n        {% if not athlete_list or coach_list %}\n            There are no athletes, or there are some coaches.\n        {% endif %}\n\n        {% if athlete_list and not coach_list %}\n            There are some athletes and absolutely no coaches.\n        {% endif %}\n\n    Comparison operators are also available, and the use of filters is also\n    allowed, for example::\n\n        {% if articles|length >= 5 %}...{% endif %}\n\n    Arguments and operators _must_ have a space between them, so\n    ``{% if 1>2 %}`` is not a valid if tag.\n\n    All supported operators are: ``or``, ``and``, ``in``, ``not in``\n    ``==`` (or ``=``), ``!=``, ``>``, ``>=``, ``<`` and ``<=``.\n\n    Operator precedence follows Python.\n    \"\"\"\n    # {% if ... %}\n    bits = token.split_contents()[1:]\n    condition = TemplateIfParser(parser, bits).parse()\n    nodelist = parser.parse(('elif', 'else', 'endif'))\n    conditions_nodelists = [(condition, nodelist)]\n    token = parser.next_token()\n\n    # {% elif ... %} (repeatable)\n    while token.contents.startswith('elif'):\n        bits = token.split_contents()[1:]\n        condition = TemplateIfParser(parser, bits).parse()\n        nodelist = parser.parse(('elif', 'else', 'endif'))\n        conditions_nodelists.append((condition, nodelist))\n        token = parser.next_token()\n\n    # {% else %} (optional)\n    if token.contents == 'else':\n        nodelist = parser.parse(('endif',))\n        conditions_nodelists.append((None, nodelist))\n        token = parser.next_token()\n\n    # {% endif %}\n    assert token.contents == 'endif'\n\n    return IfNode(conditions_nodelists)\n\n\n@register.tag\ndef ifchanged(parser, token):\n    \"\"\"\n    Checks if a value has changed from the last iteration of a loop.\n\n    The ``{% ifchanged %}`` block tag is used within a loop. It has two\n    possible uses.\n\n    1. Checks its own rendered contents against its previous state and only\n       displays the content if it has changed. For example, this displays a\n       list of days, only displaying the month if it changes::\n\n            <h1>Archive for {{ year }}</h1>\n\n            {% for date in days %}\n                {% ifchanged %}<h3>{{ date|date:\"F\" }}</h3>{% endifchanged %}\n                <a href=\"{{ date|date:\"M/d\"|lower }}/\">{{ date|date:\"j\" }}</a>\n            {% endfor %}\n\n    2. If given one or more variables, check whether any variable has changed.\n       For example, the following shows the date every time it changes, while\n       showing the hour if either the hour or the date has changed::\n\n            {% for date in days %}\n                {% ifchanged date.date %} {{ date.date }} {% endifchanged %}\n                {% ifchanged date.hour date.date %}\n                    {{ date.hour }}\n                {% endifchanged %}\n            {% endfor %}\n    \"\"\"\n    bits = token.contents.split()\n    nodelist_true = parser.parse(('else', 'endifchanged'))\n    token = parser.next_token()\n    if token.contents == 'else':\n        nodelist_false = parser.parse(('endifchanged',))\n        parser.delete_first_token()\n    else:\n        nodelist_false = NodeList()\n    values = [parser.compile_filter(bit) for bit in bits[1:]]\n    return IfChangedNode(nodelist_true, nodelist_false, *values)\n\n@register.tag\ndef ssi(parser, token):\n    \"\"\"\n    Outputs the contents of a given file into the page.\n\n    Like a simple \"include\" tag, the ``ssi`` tag includes the contents\n    of another file -- which must be specified using an absolute path --\n    in the current page::\n\n        {% ssi \"/home/html/ljworld.com/includes/right_generic.html\" %}\n\n    If the optional \"parsed\" parameter is given, the contents of the included\n    file are evaluated as template code, with the current context::\n\n        {% ssi \"/home/html/ljworld.com/includes/right_generic.html\" parsed %}\n    \"\"\"\n    bits = token.split_contents()\n    parsed = False\n    if len(bits) not in (2, 3):\n        raise TemplateSyntaxError(\"'ssi' tag takes one argument: the path to\"\n                                  \" the file to be included\")\n    if len(bits) == 3:\n        if bits[2] == 'parsed':\n            parsed = True\n        else:\n            raise TemplateSyntaxError(\"Second (optional) argument to %s tag\"\n                                      \" must be 'parsed'\" % bits[0])\n    filepath = parser.compile_filter(bits[1])\n    return SsiNode(filepath, parsed)\n\n@register.tag\ndef load(parser, token):\n    \"\"\"\n    Loads a custom template tag set.\n\n    For example, to load the template tags in\n    ``django/templatetags/news/photos.py``::\n\n        {% load news.photos %}\n\n    Can also be used to load an individual tag/filter from\n    a library::\n\n        {% load byline from news %}\n\n    \"\"\"\n    bits = token.contents.split()\n    if len(bits) >= 4 and bits[-2] == \"from\":\n        try:\n            taglib = bits[-1]\n            lib = get_library(taglib)\n        except InvalidTemplateLibrary as e:\n            raise TemplateSyntaxError(\"'%s' is not a valid tag library: %s\" %\n                                      (taglib, e))\n        else:\n            temp_lib = Library()\n            for name in bits[1:-2]:\n                if name in lib.tags:\n                    temp_lib.tags[name] = lib.tags[name]\n                    # a name could be a tag *and* a filter, so check for both\n                    if name in lib.filters:\n                        temp_lib.filters[name] = lib.filters[name]\n                elif name in lib.filters:\n                    temp_lib.filters[name] = lib.filters[name]\n                else:\n                    raise TemplateSyntaxError(\"'%s' is not a valid tag or filter in tag library '%s'\" %\n                                              (name, taglib))\n            parser.add_library(temp_lib)\n    else:\n        for taglib in bits[1:]:\n            # add the library to the parser\n            try:\n                lib = get_library(taglib)\n                parser.add_library(lib)\n            except InvalidTemplateLibrary as e:\n                raise TemplateSyntaxError(\"'%s' is not a valid tag library: %s\" %\n                                          (taglib, e))\n    return LoadNode()\n\n@register.tag\ndef now(parser, token):\n    \"\"\"\n    Displays the date, formatted according to the given string.\n\n    Uses the same format as PHP's ``date()`` function; see http://php.net/date\n    for all the possible values.\n\n    Sample usage::\n\n        It is {% now \"jS F Y H:i\" %}\n    \"\"\"\n    bits = token.split_contents()\n    if len(bits) != 2:\n        raise TemplateSyntaxError(\"'now' statement takes one argument\")\n    format_string = bits[1][1:-1]\n    return NowNode(format_string)\n\n@register.tag\ndef regroup(parser, token):\n    \"\"\"\n    Regroups a list of alike objects by a common attribute.\n\n    This complex tag is best illustrated by use of an example:  say that\n    ``people`` is a list of ``Person`` objects that have ``first_name``,\n    ``last_name``, and ``gender`` attributes, and you'd like to display a list\n    that looks like:\n\n        * Male:\n            * George Bush\n            * Bill Clinton\n        * Female:\n            * Margaret Thatcher\n            * Colendeeza Rice\n        * Unknown:\n            * Pat Smith\n\n    The following snippet of template code would accomplish this dubious task::\n\n        {% regroup people by gender as grouped %}\n        <ul>\n        {% for group in grouped %}\n            <li>{{ group.grouper }}\n            <ul>\n                {% for item in group.list %}\n                <li>{{ item }}</li>\n                {% endfor %}\n            </ul>\n        {% endfor %}\n        </ul>\n\n    As you can see, ``{% regroup %}`` populates a variable with a list of\n    objects with ``grouper`` and ``list`` attributes.  ``grouper`` contains the\n    item that was grouped by; ``list`` contains the list of objects that share\n    that ``grouper``.  In this case, ``grouper`` would be ``Male``, ``Female``\n    and ``Unknown``, and ``list`` is the list of people with those genders.\n\n    Note that ``{% regroup %}`` does not work when the list to be grouped is not\n    sorted by the key you are grouping by!  This means that if your list of\n    people was not sorted by gender, you'd need to make sure it is sorted\n    before using it, i.e.::\n\n        {% regroup people|dictsort:\"gender\" by gender as grouped %}\n\n    \"\"\"\n    firstbits = token.contents.split(None, 3)\n    if len(firstbits) != 4:\n        raise TemplateSyntaxError(\"'regroup' tag takes five arguments\")\n    target = parser.compile_filter(firstbits[1])\n    if firstbits[2] != 'by':\n        raise TemplateSyntaxError(\"second argument to 'regroup' tag must be 'by'\")\n    lastbits_reversed = firstbits[3][::-1].split(None, 2)\n    if lastbits_reversed[1][::-1] != 'as':\n        raise TemplateSyntaxError(\"next-to-last argument to 'regroup' tag must\"\n                                  \" be 'as'\")\n    var_name = lastbits_reversed[0][::-1]\n    # RegroupNode will take each item in 'target', put it in the context under\n    # 'var_name', evaluate 'var_name'.'expression' in the current context, and\n    # group by the resulting value. After all items are processed, it will\n    # save the final result in the context under 'var_name', thus clearing the\n    # temporary values. This hack is necessary because the template engine\n    # doesn't provide a context-aware equivalent of Python's getattr.\n    expression = parser.compile_filter(var_name +\n                                       VARIABLE_ATTRIBUTE_SEPARATOR +\n                                       lastbits_reversed[2][::-1])\n    return RegroupNode(target, expression, var_name)\n\n@register.tag\ndef spaceless(parser, token):\n    \"\"\"\n    Removes whitespace between HTML tags, including tab and newline characters.\n\n    Example usage::\n\n        {% spaceless %}\n            <p>\n                <a href=\"foo/\">Foo</a>\n            </p>\n        {% endspaceless %}\n\n    This example would return this HTML::\n\n        <p><a href=\"foo/\">Foo</a></p>\n\n    Only space between *tags* is normalized -- not space between tags and text.\n    In this example, the space around ``Hello`` won't be stripped::\n\n        {% spaceless %}\n            <strong>\n                Hello\n            </strong>\n        {% endspaceless %}\n    \"\"\"\n    nodelist = parser.parse(('endspaceless',))\n    parser.delete_first_token()\n    return SpacelessNode(nodelist)\n\n@register.tag\ndef templatetag(parser, token):\n    \"\"\"\n    Outputs one of the bits used to compose template tags.\n\n    Since the template system has no concept of \"escaping\", to display one of\n    the bits used in template tags, you must use the ``{% templatetag %}`` tag.\n\n    The argument tells which template bit to output:\n\n        ==================  =======\n        Argument            Outputs\n        ==================  =======\n        ``openblock``       ``{%``\n        ``closeblock``      ``%}``\n        ``openvariable``    ``{{``\n        ``closevariable``   ``}}``\n        ``openbrace``       ``{``\n        ``closebrace``      ``}``\n        ``opencomment``     ``{#``\n        ``closecomment``    ``#}``\n        ==================  =======\n    \"\"\"\n    bits = token.contents.split()\n    if len(bits) != 2:\n        raise TemplateSyntaxError(\"'templatetag' statement takes one argument\")\n    tag = bits[1]\n    if tag not in TemplateTagNode.mapping:\n        raise TemplateSyntaxError(\"Invalid templatetag argument: '%s'.\"\n                                  \" Must be one of: %s\" %\n                                  (tag, list(TemplateTagNode.mapping)))\n    return TemplateTagNode(tag)\n\n@register.tag\ndef url(parser, token):\n    \"\"\"\n    Returns an absolute URL matching given view with its parameters.\n\n    This is a way to define links that aren't tied to a particular URL\n    configuration::\n\n        {% url \"path.to.some_view\" arg1 arg2 %}\n\n        or\n\n        {% url \"path.to.some_view\" name1=value1 name2=value2 %}\n\n    The first argument is a path to a view. It can be an absolute Python path\n    or just ``app_name.view_name`` without the project name if the view is\n    located inside the project.\n\n    Other arguments are space-separated values that will be filled in place of\n    positional and keyword arguments in the URL. Don't mix positional and\n    keyword arguments.\n\n    All arguments for the URL should be present.\n\n    For example if you have a view ``app_name.client`` taking client's id and\n    the corresponding line in a URLconf looks like this::\n\n        ('^client/(\\d+)/$', 'app_name.client')\n\n    and this app's URLconf is included into the project's URLconf under some\n    path::\n\n        ('^clients/', include('project_name.app_name.urls'))\n\n    then in a template you can create a link for a certain client like this::\n\n        {% url \"app_name.client\" client.id %}\n\n    The URL will look like ``/clients/client/123/``.\n\n    The first argument can also be a named URL instead of the Python path to\n    the view callable. For example if the URLconf entry looks like this::\n\n        url('^client/(\\d+)/$', name='client-detail-view')\n\n    then in the template you can use::\n\n        {% url \"client-detail-view\" client.id %}\n\n    There is even another possible value type for the first argument. It can be\n    the name of a template variable that will be evaluated to obtain the view\n    name or the URL name, e.g.::\n\n        {% with view_path=\"app_name.client\" %}\n        {% url view_path client.id %}\n        {% endwith %}\n\n        or,\n\n        {% with url_name=\"client-detail-view\" %}\n        {% url url_name client.id %}\n        {% endwith %}\n\n    \"\"\"\n    bits = token.split_contents()\n    if len(bits) < 2:\n        raise TemplateSyntaxError(\"'%s' takes at least one argument\"\n                                  \" (path to a view)\" % bits[0])\n    try:\n        viewname = parser.compile_filter(bits[1])\n    except TemplateSyntaxError as exc:\n        exc.args = (exc.args[0] + \". \"\n                \"The syntax of 'url' changed in Django 1.5, see the docs.\"),\n        raise\n    args = []\n    kwargs = {}\n    asvar = None\n    bits = bits[2:]\n    if len(bits) >= 2 and bits[-2] == 'as':\n        asvar = bits[-1]\n        bits = bits[:-2]\n\n    if len(bits):\n        for bit in bits:\n            match = kwarg_re.match(bit)\n            if not match:\n                raise TemplateSyntaxError(\"Malformed arguments to url tag\")\n            name, value = match.groups()\n            if name:\n                kwargs[name] = parser.compile_filter(value)\n            else:\n                args.append(parser.compile_filter(value))\n\n    return URLNode(viewname, args, kwargs, asvar)\n\n@register.tag\ndef verbatim(parser, token):\n    \"\"\"\n    Stops the template engine from rendering the contents of this block tag.\n\n    Usage::\n\n        {% verbatim %}\n            {% don't process this %}\n        {% endverbatim %}\n\n    You can also designate a specific closing tag block (allowing the\n    unrendered use of ``{% endverbatim %}``)::\n\n        {% verbatim myblock %}\n            ...\n        {% endverbatim myblock %}\n    \"\"\"\n    nodelist = parser.parse(('endverbatim',))\n    parser.delete_first_token()\n    return VerbatimNode(nodelist.render(Context()))\n\n@register.tag\ndef widthratio(parser, token):\n    \"\"\"\n    For creating bar charts and such, this tag calculates the ratio of a given\n    value to a maximum value, and then applies that ratio to a constant.\n\n    For example::\n\n        <img src='bar.gif' height='10' width='{% widthratio this_value max_value max_width %}' />\n\n    If ``this_value`` is 175, ``max_value`` is 200, and ``max_width`` is 100,\n    the image in the above example will be 88 pixels wide\n    (because 175/200 = .875; .875 * 100 = 87.5 which is rounded up to 88).\n    \"\"\"\n    bits = token.contents.split()\n    if len(bits) != 4:\n        raise TemplateSyntaxError(\"widthratio takes three arguments\")\n    tag, this_value_expr, max_value_expr, max_width = bits\n\n    return WidthRatioNode(parser.compile_filter(this_value_expr),\n                          parser.compile_filter(max_value_expr),\n                          parser.compile_filter(max_width))\n\n@register.tag('with')\ndef do_with(parser, token):\n    \"\"\"\n    Adds one or more values to the context (inside of this block) for caching\n    and easy access.\n\n    For example::\n\n        {% with total=person.some_sql_method %}\n            {{ total }} object{{ total|pluralize }}\n        {% endwith %}\n\n    Multiple values can be added to the context::\n\n        {% with foo=1 bar=2 %}\n            ...\n        {% endwith %}\n\n    The legacy format of ``{% with person.some_sql_method as total %}`` is\n    still accepted.\n    \"\"\"\n    bits = token.split_contents()\n    remaining_bits = bits[1:]\n    extra_context = token_kwargs(remaining_bits, parser, support_legacy=True)\n    if not extra_context:\n        raise TemplateSyntaxError(\"%r expected at least one variable \"\n                                  \"assignment\" % bits[0])\n    if remaining_bits:\n        raise TemplateSyntaxError(\"%r received an invalid token: %r\" %\n                                  (bits[0], remaining_bits[0]))\n    nodelist = parser.parse(('endwith',))\n    parser.delete_first_token()\n    return WithNode(None, None, nodelist, extra_context=extra_context)\n"
  },
  {
    "path": "Django-1.5.1/django/template/loader.py",
    "content": "# Wrapper for loading templates from storage of some sort (e.g. filesystem, database).\n#\n# This uses the TEMPLATE_LOADERS setting, which is a list of loaders to use.\n# Each loader is expected to have this interface:\n#\n#    callable(name, dirs=[])\n#\n# name is the template name.\n# dirs is an optional list of directories to search instead of TEMPLATE_DIRS.\n#\n# The loader should return a tuple of (template_source, path). The path returned\n# might be shown to the user for debugging purposes, so it should identify where\n# the template was loaded from.\n#\n# A loader may return an already-compiled template instead of the actual\n# template source. In that case the path returned should be None, since the\n# path information is associated with the template during the compilation,\n# which has already been done.\n#\n# Each loader should have an \"is_usable\" attribute set. This is a boolean that\n# specifies whether the loader can be used in this Python installation. Each\n# loader is responsible for setting this when it's initialized.\n#\n# For example, the eggs loader (which is capable of loading templates from\n# Python eggs) sets is_usable to False if the \"pkg_resources\" module isn't\n# installed, because pkg_resources is necessary to read eggs.\n\nfrom django.core.exceptions import ImproperlyConfigured\nfrom django.template.base import Origin, Template, Context, TemplateDoesNotExist, add_to_builtins\nfrom django.utils.importlib import import_module\nfrom django.conf import settings\nfrom django.utils import six\n\ntemplate_source_loaders = None\n\nclass BaseLoader(object):\n    is_usable = False\n\n    def __init__(self, *args, **kwargs):\n        pass\n\n    def __call__(self, template_name, template_dirs=None):\n        return self.load_template(template_name, template_dirs)\n\n    def load_template(self, template_name, template_dirs=None):\n        source, display_name = self.load_template_source(template_name, template_dirs)\n        origin = make_origin(display_name, self.load_template_source, template_name, template_dirs)\n        try:\n            template = get_template_from_string(source, origin, template_name)\n            return template, None\n        except TemplateDoesNotExist:\n            # If compiling the template we found raises TemplateDoesNotExist, back off to\n            # returning the source and display name for the template we were asked to load.\n            # This allows for correct identification (later) of the actual template that does\n            # not exist.\n            return source, display_name\n\n    def load_template_source(self, template_name, template_dirs=None):\n        \"\"\"\n        Returns a tuple containing the source and origin for the given template\n        name.\n\n        \"\"\"\n        raise NotImplementedError\n\n    def reset(self):\n        \"\"\"\n        Resets any state maintained by the loader instance (e.g., cached\n        templates or cached loader modules).\n\n        \"\"\"\n        pass\n\nclass LoaderOrigin(Origin):\n    def __init__(self, display_name, loader, name, dirs):\n        super(LoaderOrigin, self).__init__(display_name)\n        self.loader, self.loadname, self.dirs = loader, name, dirs\n\n    def reload(self):\n        return self.loader(self.loadname, self.dirs)[0]\n\ndef make_origin(display_name, loader, name, dirs):\n    if settings.TEMPLATE_DEBUG and display_name:\n        return LoaderOrigin(display_name, loader, name, dirs)\n    else:\n        return None\n\ndef find_template_loader(loader):\n    if isinstance(loader, (tuple, list)):\n        loader, args = loader[0], loader[1:]\n    else:\n        args = []\n    if isinstance(loader, six.string_types):\n        module, attr = loader.rsplit('.', 1)\n        try:\n            mod = import_module(module)\n        except ImportError as e:\n            raise ImproperlyConfigured('Error importing template source loader %s: \"%s\"' % (loader, e))\n        try:\n            TemplateLoader = getattr(mod, attr)\n        except AttributeError as e:\n            raise ImproperlyConfigured('Error importing template source loader %s: \"%s\"' % (loader, e))\n\n        if hasattr(TemplateLoader, 'load_template_source'):\n            func = TemplateLoader(*args)\n        else:\n            # Try loading module the old way - string is full path to callable\n            if args:\n                raise ImproperlyConfigured(\"Error importing template source loader %s - can't pass arguments to function-based loader.\" % loader)\n            func = TemplateLoader\n\n        if not func.is_usable:\n            import warnings\n            warnings.warn(\"Your TEMPLATE_LOADERS setting includes %r, but your Python installation doesn't support that type of template loading. Consider removing that line from TEMPLATE_LOADERS.\" % loader)\n            return None\n        else:\n            return func\n    else:\n        raise ImproperlyConfigured('Loader does not define a \"load_template\" callable template source loader')\n\ndef find_template(name, dirs=None):\n    # Calculate template_source_loaders the first time the function is executed\n    # because putting this logic in the module-level namespace may cause\n    # circular import errors. See Django ticket #1292.\n    global template_source_loaders\n    if template_source_loaders is None:\n        loaders = []\n        for loader_name in settings.TEMPLATE_LOADERS:\n            loader = find_template_loader(loader_name)\n            if loader is not None:\n                loaders.append(loader)\n        template_source_loaders = tuple(loaders)\n    for loader in template_source_loaders:\n        try:\n            source, display_name = loader(name, dirs)\n            return (source, make_origin(display_name, loader, name, dirs))\n        except TemplateDoesNotExist:\n            pass\n    raise TemplateDoesNotExist(name)\n\ndef get_template(template_name):\n    \"\"\"\n    Returns a compiled Template object for the given template name,\n    handling template inheritance recursively.\n    \"\"\"\n    template, origin = find_template(template_name)\n    if not hasattr(template, 'render'):\n        # template needs to be compiled\n        template = get_template_from_string(template, origin, template_name)\n    return template\n\ndef get_template_from_string(source, origin=None, name=None):\n    \"\"\"\n    Returns a compiled Template object for the given template code,\n    handling template inheritance recursively.\n    \"\"\"\n    return Template(source, origin, name)\n\ndef render_to_string(template_name, dictionary=None, context_instance=None):\n    \"\"\"\n    Loads the given template_name and renders it with the given dictionary as\n    context. The template_name may be a string to load a single template using\n    get_template, or it may be a tuple to use select_template to find one of\n    the templates in the list. Returns a string.\n    \"\"\"\n    dictionary = dictionary or {}\n    if isinstance(template_name, (list, tuple)):\n        t = select_template(template_name)\n    else:\n        t = get_template(template_name)\n    if not context_instance:\n        return t.render(Context(dictionary))\n    # Add the dictionary to the context stack, ensuring it gets removed again\n    # to keep the context_instance in the same state it started in.\n    context_instance.update(dictionary)\n    try:\n        return t.render(context_instance)\n    finally:\n        context_instance.pop()\n\ndef select_template(template_name_list):\n    \"Given a list of template names, returns the first that can be loaded.\"\n    if not template_name_list:\n        raise TemplateDoesNotExist(\"No template names provided\")\n    not_found = []\n    for template_name in template_name_list:\n        try:\n            return get_template(template_name)\n        except TemplateDoesNotExist as e:\n            if e.args[0] not in not_found:\n                not_found.append(e.args[0])\n            continue\n    # If we get here, none of the templates could be loaded\n    raise TemplateDoesNotExist(', '.join(not_found))\n\nadd_to_builtins('django.template.loader_tags')\n"
  },
  {
    "path": "Django-1.5.1/django/template/loader_tags.py",
    "content": "from django.conf import settings\nfrom django.template.base import TemplateSyntaxError, Library, Node, TextNode,\\\n    token_kwargs, Variable\nfrom django.template.loader import get_template\nfrom django.utils.safestring import mark_safe\nfrom django.utils import six\n\nregister = Library()\n\nBLOCK_CONTEXT_KEY = 'block_context'\n\nclass ExtendsError(Exception):\n    pass\n\nclass BlockContext(object):\n    def __init__(self):\n        # Dictionary of FIFO queues.\n        self.blocks = {}\n\n    def add_blocks(self, blocks):\n        for name, block in six.iteritems(blocks):\n            if name in self.blocks:\n                self.blocks[name].insert(0, block)\n            else:\n                self.blocks[name] = [block]\n\n    def pop(self, name):\n        try:\n            return self.blocks[name].pop()\n        except (IndexError, KeyError):\n            return None\n\n    def push(self, name, block):\n        self.blocks[name].append(block)\n\n    def get_block(self, name):\n        try:\n            return self.blocks[name][-1]\n        except (IndexError, KeyError):\n            return None\n\nclass BlockNode(Node):\n    def __init__(self, name, nodelist, parent=None):\n        self.name, self.nodelist, self.parent = name, nodelist, parent\n\n    def __repr__(self):\n        return \"<Block Node: %s. Contents: %r>\" % (self.name, self.nodelist)\n\n    def render(self, context):\n        block_context = context.render_context.get(BLOCK_CONTEXT_KEY)\n        context.push()\n        if block_context is None:\n            context['block'] = self\n            result = self.nodelist.render(context)\n        else:\n            push = block = block_context.pop(self.name)\n            if block is None:\n                block = self\n            # Create new block so we can store context without thread-safety issues.\n            block = BlockNode(block.name, block.nodelist)\n            block.context = context\n            context['block'] = block\n            result = block.nodelist.render(context)\n            if push is not None:\n                block_context.push(self.name, push)\n        context.pop()\n        return result\n\n    def super(self):\n        render_context = self.context.render_context\n        if (BLOCK_CONTEXT_KEY in render_context and\n            render_context[BLOCK_CONTEXT_KEY].get_block(self.name) is not None):\n            return mark_safe(self.render(self.context))\n        return ''\n\nclass ExtendsNode(Node):\n    must_be_first = True\n\n    def __init__(self, nodelist, parent_name, template_dirs=None):\n        self.nodelist = nodelist\n        self.parent_name = parent_name\n        self.template_dirs = template_dirs\n        self.blocks = dict([(n.name, n) for n in nodelist.get_nodes_by_type(BlockNode)])\n\n    def __repr__(self):\n        return '<ExtendsNode: extends %s>' % self.parent_name.token\n\n    def get_parent(self, context):\n        parent = self.parent_name.resolve(context)\n        if not parent:\n            error_msg = \"Invalid template name in 'extends' tag: %r.\" % parent\n            if self.parent_name.filters or\\\n                    isinstance(self.parent_name.var, Variable):\n                error_msg += \" Got this from the '%s' variable.\" %\\\n                    self.parent_name.token\n            raise TemplateSyntaxError(error_msg)\n        if hasattr(parent, 'render'):\n            return parent # parent is a Template object\n        return get_template(parent)\n\n    def render(self, context):\n        compiled_parent = self.get_parent(context)\n\n        if BLOCK_CONTEXT_KEY not in context.render_context:\n            context.render_context[BLOCK_CONTEXT_KEY] = BlockContext()\n        block_context = context.render_context[BLOCK_CONTEXT_KEY]\n\n        # Add the block nodes from this node to the block context\n        block_context.add_blocks(self.blocks)\n\n        # If this block's parent doesn't have an extends node it is the root,\n        # and its block nodes also need to be added to the block context.\n        for node in compiled_parent.nodelist:\n            # The ExtendsNode has to be the first non-text node.\n            if not isinstance(node, TextNode):\n                if not isinstance(node, ExtendsNode):\n                    blocks = dict([(n.name, n) for n in\n                                   compiled_parent.nodelist.get_nodes_by_type(BlockNode)])\n                    block_context.add_blocks(blocks)\n                break\n\n        # Call Template._render explicitly so the parser context stays\n        # the same.\n        return compiled_parent._render(context)\n\nclass BaseIncludeNode(Node):\n    def __init__(self, *args, **kwargs):\n        self.extra_context = kwargs.pop('extra_context', {})\n        self.isolated_context = kwargs.pop('isolated_context', False)\n        super(BaseIncludeNode, self).__init__(*args, **kwargs)\n\n    def render_template(self, template, context):\n        values = dict([(name, var.resolve(context)) for name, var\n                       in six.iteritems(self.extra_context)])\n        if self.isolated_context:\n            return template.render(context.new(values))\n        context.update(values)\n        output = template.render(context)\n        context.pop()\n        return output\n\nclass ConstantIncludeNode(BaseIncludeNode):\n    def __init__(self, template_path, *args, **kwargs):\n        super(ConstantIncludeNode, self).__init__(*args, **kwargs)\n        try:\n            t = get_template(template_path)\n            self.template = t\n        except:\n            if settings.TEMPLATE_DEBUG:\n                raise\n            self.template = None\n\n    def render(self, context):\n        if not self.template:\n            return ''\n        return self.render_template(self.template, context)\n\nclass IncludeNode(BaseIncludeNode):\n    def __init__(self, template_name, *args, **kwargs):\n        super(IncludeNode, self).__init__(*args, **kwargs)\n        self.template_name = template_name\n\n    def render(self, context):\n        try:\n            template_name = self.template_name.resolve(context)\n            template = get_template(template_name)\n            return self.render_template(template, context)\n        except:\n            if settings.TEMPLATE_DEBUG:\n                raise\n            return ''\n\n@register.tag('block')\ndef do_block(parser, token):\n    \"\"\"\n    Define a block that can be overridden by child templates.\n    \"\"\"\n    bits = token.contents.split()\n    if len(bits) != 2:\n        raise TemplateSyntaxError(\"'%s' tag takes only one argument\" % bits[0])\n    block_name = bits[1]\n    # Keep track of the names of BlockNodes found in this template, so we can\n    # check for duplication.\n    try:\n        if block_name in parser.__loaded_blocks:\n            raise TemplateSyntaxError(\"'%s' tag with name '%s' appears more than once\" % (bits[0], block_name))\n        parser.__loaded_blocks.append(block_name)\n    except AttributeError: # parser.__loaded_blocks isn't a list yet\n        parser.__loaded_blocks = [block_name]\n    nodelist = parser.parse(('endblock',))\n\n    # This check is kept for backwards-compatibility. See #3100.\n    endblock = parser.next_token()\n    acceptable_endblocks = ('endblock', 'endblock %s' % block_name)\n    if endblock.contents not in acceptable_endblocks:\n        parser.invalid_block_tag(endblock, 'endblock', acceptable_endblocks)\n\n    return BlockNode(block_name, nodelist)\n\n@register.tag('extends')\ndef do_extends(parser, token):\n    \"\"\"\n    Signal that this template extends a parent template.\n\n    This tag may be used in two ways: ``{% extends \"base\" %}`` (with quotes)\n    uses the literal value \"base\" as the name of the parent template to extend,\n    or ``{% extends variable %}`` uses the value of ``variable`` as either the\n    name of the parent template to extend (if it evaluates to a string) or as\n    the parent tempate itelf (if it evaluates to a Template object).\n    \"\"\"\n    bits = token.split_contents()\n    if len(bits) != 2:\n        raise TemplateSyntaxError(\"'%s' takes one argument\" % bits[0])\n    parent_name = parser.compile_filter(bits[1])\n    nodelist = parser.parse()\n    if nodelist.get_nodes_by_type(ExtendsNode):\n        raise TemplateSyntaxError(\"'%s' cannot appear more than once in the same template\" % bits[0])\n    return ExtendsNode(nodelist, parent_name)\n\n@register.tag('include')\ndef do_include(parser, token):\n    \"\"\"\n    Loads a template and renders it with the current context. You can pass\n    additional context using keyword arguments.\n\n    Example::\n\n        {% include \"foo/some_include\" %}\n        {% include \"foo/some_include\" with bar=\"BAZZ!\" baz=\"BING!\" %}\n\n    Use the ``only`` argument to exclude the current context when rendering\n    the included template::\n\n        {% include \"foo/some_include\" only %}\n        {% include \"foo/some_include\" with bar=\"1\" only %}\n    \"\"\"\n    bits = token.split_contents()\n    if len(bits) < 2:\n        raise TemplateSyntaxError(\"%r tag takes at least one argument: the name of the template to be included.\" % bits[0])\n    options = {}\n    remaining_bits = bits[2:]\n    while remaining_bits:\n        option = remaining_bits.pop(0)\n        if option in options:\n            raise TemplateSyntaxError('The %r option was specified more '\n                                      'than once.' % option)\n        if option == 'with':\n            value = token_kwargs(remaining_bits, parser, support_legacy=False)\n            if not value:\n                raise TemplateSyntaxError('\"with\" in %r tag needs at least '\n                                          'one keyword argument.' % bits[0])\n        elif option == 'only':\n            value = True\n        else:\n            raise TemplateSyntaxError('Unknown argument for %r tag: %r.' %\n                                      (bits[0], option))\n        options[option] = value\n    isolated_context = options.get('only', False)\n    namemap = options.get('with', {})\n    path = bits[1]\n    if path[0] in ('\"', \"'\") and path[-1] == path[0]:\n        return ConstantIncludeNode(path[1:-1], extra_context=namemap,\n                                   isolated_context=isolated_context)\n    return IncludeNode(parser.compile_filter(bits[1]), extra_context=namemap,\n                       isolated_context=isolated_context)\n"
  },
  {
    "path": "Django-1.5.1/django/template/loaders/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/template/loaders/app_directories.py",
    "content": "\"\"\"\nWrapper for loading templates from \"templates\" directories in INSTALLED_APPS\npackages.\n\"\"\"\n\nimport os\nimport sys\n\nfrom django.conf import settings\nfrom django.core.exceptions import ImproperlyConfigured\nfrom django.template.base import TemplateDoesNotExist\nfrom django.template.loader import BaseLoader\nfrom django.utils._os import safe_join\nfrom django.utils.importlib import import_module\nfrom django.utils import six\n\n# At compile time, cache the directories to search.\nif not six.PY3:\n    fs_encoding = sys.getfilesystemencoding() or sys.getdefaultencoding()\napp_template_dirs = []\nfor app in settings.INSTALLED_APPS:\n    try:\n        mod = import_module(app)\n    except ImportError as e:\n        raise ImproperlyConfigured('ImportError %s: %s' % (app, e.args[0]))\n    template_dir = os.path.join(os.path.dirname(mod.__file__), 'templates')\n    if os.path.isdir(template_dir):\n        if not six.PY3:\n            template_dir = template_dir.decode(fs_encoding)\n        app_template_dirs.append(template_dir)\n\n# It won't change, so convert it to a tuple to save memory.\napp_template_dirs = tuple(app_template_dirs)\n\nclass Loader(BaseLoader):\n    is_usable = True\n\n    def get_template_sources(self, template_name, template_dirs=None):\n        \"\"\"\n        Returns the absolute paths to \"template_name\", when appended to each\n        directory in \"template_dirs\". Any paths that don't lie inside one of the\n        template dirs are excluded from the result set, for security reasons.\n        \"\"\"\n        if not template_dirs:\n            template_dirs = app_template_dirs\n        for template_dir in template_dirs:\n            try:\n                yield safe_join(template_dir, template_name)\n            except UnicodeDecodeError:\n                # The template dir name was a bytestring that wasn't valid UTF-8.\n                raise\n            except ValueError:\n                # The joined path was located outside of template_dir.\n                pass\n\n    def load_template_source(self, template_name, template_dirs=None):\n        for filepath in self.get_template_sources(template_name, template_dirs):\n            try:\n                with open(filepath, 'rb') as fp:\n                    return (fp.read().decode(settings.FILE_CHARSET), filepath)\n            except IOError:\n                pass\n        raise TemplateDoesNotExist(template_name)\n"
  },
  {
    "path": "Django-1.5.1/django/template/loaders/cached.py",
    "content": "\"\"\"\nWrapper class that takes a list of template loaders as an argument and attempts\nto load templates from them in order, caching the result.\n\"\"\"\n\nimport hashlib\nfrom django.template.base import TemplateDoesNotExist\nfrom django.template.loader import BaseLoader, get_template_from_string, find_template_loader, make_origin\nfrom django.utils.encoding import force_bytes\n\nclass Loader(BaseLoader):\n    is_usable = True\n\n    def __init__(self, loaders):\n        self.template_cache = {}\n        self._loaders = loaders\n        self._cached_loaders = []\n\n    @property\n    def loaders(self):\n        # Resolve loaders on demand to avoid circular imports\n        if not self._cached_loaders:\n            # Set self._cached_loaders atomically. Otherwise, another thread\n            # could see an incomplete list. See #17303.\n            cached_loaders = []\n            for loader in self._loaders:\n                cached_loaders.append(find_template_loader(loader))\n            self._cached_loaders = cached_loaders\n        return self._cached_loaders\n\n    def find_template(self, name, dirs=None):\n        for loader in self.loaders:\n            try:\n                template, display_name = loader(name, dirs)\n                return (template, make_origin(display_name, loader, name, dirs))\n            except TemplateDoesNotExist:\n                pass\n        raise TemplateDoesNotExist(name)\n\n    def load_template(self, template_name, template_dirs=None):\n        key = template_name\n        if template_dirs:\n            # If template directories were specified, use a hash to differentiate\n            key = '-'.join([template_name, hashlib.sha1(force_bytes('|'.join(template_dirs))).hexdigest()])\n\n        if key not in self.template_cache:\n            template, origin = self.find_template(template_name, template_dirs)\n            if not hasattr(template, 'render'):\n                try:\n                    template = get_template_from_string(template, origin, template_name)\n                except TemplateDoesNotExist:\n                    # If compiling the template we found raises TemplateDoesNotExist,\n                    # back off to returning the source and display name for the template\n                    # we were asked to load. This allows for correct identification (later)\n                    # of the actual template that does not exist.\n                    return template, origin\n            self.template_cache[key] = template\n        return self.template_cache[key], None\n\n    def reset(self):\n        \"Empty the template cache.\"\n        self.template_cache.clear()\n"
  },
  {
    "path": "Django-1.5.1/django/template/loaders/eggs.py",
    "content": "# Wrapper for loading templates from eggs via pkg_resources.resource_string.\nfrom __future__ import unicode_literals\n\ntry:\n    from pkg_resources import resource_string\nexcept ImportError:\n    resource_string = None\n\nfrom django.conf import settings\nfrom django.template.base import TemplateDoesNotExist\nfrom django.template.loader import BaseLoader\nfrom django.utils import six\n\nclass Loader(BaseLoader):\n    is_usable = resource_string is not None\n\n    def load_template_source(self, template_name, template_dirs=None):\n        \"\"\"\n        Loads templates from Python eggs via pkg_resource.resource_string.\n\n        For every installed app, it tries to get the resource (app, template_name).\n        \"\"\"\n        if resource_string is not None:\n            pkg_name = 'templates/' + template_name\n            for app in settings.INSTALLED_APPS:\n                try:\n                    resource = resource_string(app, pkg_name)\n                except Exception:\n                    continue\n                if not six.PY3:\n                    resource = resource.decode(settings.FILE_CHARSET)\n                return (resource, 'egg:%s:%s' % (app, pkg_name))\n        raise TemplateDoesNotExist(template_name)\n"
  },
  {
    "path": "Django-1.5.1/django/template/loaders/filesystem.py",
    "content": "\"\"\"\nWrapper for loading templates from the filesystem.\n\"\"\"\n\nfrom django.conf import settings\nfrom django.template.base import TemplateDoesNotExist\nfrom django.template.loader import BaseLoader\nfrom django.utils._os import safe_join\n\nclass Loader(BaseLoader):\n    is_usable = True\n\n    def get_template_sources(self, template_name, template_dirs=None):\n        \"\"\"\n        Returns the absolute paths to \"template_name\", when appended to each\n        directory in \"template_dirs\". Any paths that don't lie inside one of the\n        template dirs are excluded from the result set, for security reasons.\n        \"\"\"\n        if not template_dirs:\n            template_dirs = settings.TEMPLATE_DIRS\n        for template_dir in template_dirs:\n            try:\n                yield safe_join(template_dir, template_name)\n            except UnicodeDecodeError:\n                # The template dir name was a bytestring that wasn't valid UTF-8.\n                raise\n            except ValueError:\n                # The joined path was located outside of this particular\n                # template_dir (it might be inside another one, so this isn't\n                # fatal).\n                pass\n\n    def load_template_source(self, template_name, template_dirs=None):\n        tried = []\n        for filepath in self.get_template_sources(template_name, template_dirs):\n            try:\n                with open(filepath, 'rb') as fp:\n                    return (fp.read().decode(settings.FILE_CHARSET), filepath)\n            except IOError:\n                tried.append(filepath)\n        if tried:\n            error_msg = \"Tried %s\" % tried\n        else:\n            error_msg = \"Your TEMPLATE_DIRS setting is empty. Change it to point to at least one template directory.\"\n        raise TemplateDoesNotExist(error_msg)\n    load_template_source.is_usable = True\n"
  },
  {
    "path": "Django-1.5.1/django/template/response.py",
    "content": "from django.http import HttpResponse\nfrom django.template import loader, Context, RequestContext\nfrom django.utils import six\n\n\nclass ContentNotRenderedError(Exception):\n    pass\n\n\nclass SimpleTemplateResponse(HttpResponse):\n    rendering_attrs = ['template_name', 'context_data', '_post_render_callbacks']\n\n    def __init__(self, template, context=None, content_type=None, status=None,\n            mimetype=None):\n        # It would seem obvious to call these next two members 'template' and\n        # 'context', but those names are reserved as part of the test Client\n        # API. To avoid the name collision, we use tricky-to-debug problems\n        self.template_name = template\n        self.context_data = context\n\n        self._post_render_callbacks = []\n\n        # content argument doesn't make sense here because it will be replaced\n        # with rendered template so we always pass empty string in order to\n        # prevent errors and provide shorter signature.\n        super(SimpleTemplateResponse, self).__init__('', content_type, status,\n                                                     mimetype)\n\n        # _is_rendered tracks whether the template and context has been baked\n        # into a final response.\n        # Super __init__ doesn't know any better than to set self.content to\n        # the empty string we just gave it, which wrongly sets _is_rendered\n        # True, so we initialize it to False after the call to super __init__.\n        self._is_rendered = False\n\n    def __getstate__(self):\n        \"\"\"Pickling support function.\n\n        Ensures that the object can't be pickled before it has been\n        rendered, and that the pickled state only includes rendered\n        data, not the data used to construct the response.\n        \"\"\"\n        obj_dict = super(SimpleTemplateResponse, self).__getstate__()\n        if not self._is_rendered:\n            raise ContentNotRenderedError('The response content must be '\n                                          'rendered before it can be pickled.')\n        for attr in self.rendering_attrs:\n            if attr in obj_dict:\n                del obj_dict[attr]\n\n        return obj_dict\n\n    def resolve_template(self, template):\n        \"Accepts a template object, path-to-template or list of paths\"\n        if isinstance(template, (list, tuple)):\n            return loader.select_template(template)\n        elif isinstance(template, six.string_types):\n            return loader.get_template(template)\n        else:\n            return template\n\n    def resolve_context(self, context):\n        \"\"\"Converts context data into a full Context object\n        (assuming it isn't already a Context object).\n        \"\"\"\n        if isinstance(context, Context):\n            return context\n        else:\n            return Context(context)\n\n    @property\n    def rendered_content(self):\n        \"\"\"Returns the freshly rendered content for the template and context\n        described by the TemplateResponse.\n\n        This *does not* set the final content of the response. To set the\n        response content, you must either call render(), or set the\n        content explicitly using the value of this property.\n        \"\"\"\n        template = self.resolve_template(self.template_name)\n        context = self.resolve_context(self.context_data)\n        content = template.render(context)\n        return content\n\n    def add_post_render_callback(self, callback):\n        \"\"\"Adds a new post-rendering callback.\n\n        If the response has already been rendered,\n        invoke the callback immediately.\n        \"\"\"\n        if self._is_rendered:\n            callback(self)\n        else:\n            self._post_render_callbacks.append(callback)\n\n    def render(self):\n        \"\"\"Renders (thereby finalizing) the content of the response.\n\n        If the content has already been rendered, this is a no-op.\n\n        Returns the baked response instance.\n        \"\"\"\n        retval = self\n        if not self._is_rendered:\n            self.content = self.rendered_content\n            for post_callback in self._post_render_callbacks:\n                newretval = post_callback(retval)\n                if newretval is not None:\n                    retval = newretval\n        return retval\n\n    @property\n    def is_rendered(self):\n        return self._is_rendered\n\n    def __iter__(self):\n        if not self._is_rendered:\n            raise ContentNotRenderedError('The response content must be '\n                                          'rendered before it can be iterated over.')\n        return super(SimpleTemplateResponse, self).__iter__()\n\n    @property\n    def content(self):\n        if not self._is_rendered:\n            raise ContentNotRenderedError('The response content must be '\n                                          'rendered before it can be accessed.')\n        return super(SimpleTemplateResponse, self).content\n\n    @content.setter\n    def content(self, value):\n        \"\"\"Sets the content for the response\n        \"\"\"\n        HttpResponse.content.fset(self, value)\n        self._is_rendered = True\n\n\nclass TemplateResponse(SimpleTemplateResponse):\n    rendering_attrs = SimpleTemplateResponse.rendering_attrs + \\\n        ['_request', '_current_app']\n\n    def __init__(self, request, template, context=None, content_type=None,\n            status=None, mimetype=None, current_app=None):\n        # self.request gets over-written by django.test.client.Client - and\n        # unlike context_data and template_name the _request should not\n        # be considered part of the public API.\n        self._request = request\n        # As a convenience we'll allow callers to provide current_app without\n        # having to avoid needing to create the RequestContext directly\n        self._current_app = current_app\n        super(TemplateResponse, self).__init__(\n            template, context, content_type, status, mimetype)\n\n    def resolve_context(self, context):\n        \"\"\"Convert context data into a full RequestContext object\n        (assuming it isn't already a Context object).\n        \"\"\"\n        if isinstance(context, Context):\n            return context\n        return RequestContext(self._request, context, current_app=self._current_app)\n"
  },
  {
    "path": "Django-1.5.1/django/template/smartif.py",
    "content": "\"\"\"\nParser and utilities for the smart 'if' tag\n\"\"\"\n\n# Using a simple top down parser, as described here:\n#    http://effbot.org/zone/simple-top-down-parsing.htm.\n# 'led' = left denotation\n# 'nud' = null denotation\n# 'bp' = binding power (left = lbp, right = rbp)\n\nclass TokenBase(object):\n    \"\"\"\n    Base class for operators and literals, mainly for debugging and for throwing\n    syntax errors.\n    \"\"\"\n    id = None # node/token type name\n    value = None # used by literals\n    first = second = None # used by tree nodes\n\n    def nud(self, parser):\n        # Null denotation - called in prefix context\n        raise parser.error_class(\n            \"Not expecting '%s' in this position in if tag.\" % self.id\n        )\n\n    def led(self, left, parser):\n        # Left denotation - called in infix context\n        raise parser.error_class(\n            \"Not expecting '%s' as infix operator in if tag.\" % self.id\n        )\n\n    def display(self):\n        \"\"\"\n        Returns what to display in error messages for this node\n        \"\"\"\n        return self.id\n\n    def __repr__(self):\n        out = [str(x) for x in [self.id, self.first, self.second] if x is not None]\n        return \"(\" + \" \".join(out) + \")\"\n\n\ndef infix(bp, func):\n    \"\"\"\n    Creates an infix operator, given a binding power and a function that\n    evaluates the node\n    \"\"\"\n    class Operator(TokenBase):\n        lbp = bp\n\n        def led(self, left, parser):\n            self.first = left\n            self.second = parser.expression(bp)\n            return self\n\n        def eval(self, context):\n            try:\n                return func(context, self.first, self.second)\n            except Exception:\n                # Templates shouldn't throw exceptions when rendering.  We are\n                # most likely to get exceptions for things like {% if foo in bar\n                # %} where 'bar' does not support 'in', so default to False\n                return False\n\n    return Operator\n\n\ndef prefix(bp, func):\n    \"\"\"\n    Creates a prefix operator, given a binding power and a function that\n    evaluates the node.\n    \"\"\"\n    class Operator(TokenBase):\n        lbp = bp\n\n        def nud(self, parser):\n            self.first = parser.expression(bp)\n            self.second = None\n            return self\n\n        def eval(self, context):\n            try:\n                return func(context, self.first)\n            except Exception:\n                return False\n\n    return Operator\n\n\n# Operator precedence follows Python.\n# NB - we can get slightly more accurate syntax error messages by not using the\n# same object for '==' and '='.\n# We defer variable evaluation to the lambda to ensure that terms are\n# lazily evaluated using Python's boolean parsing logic.\nOPERATORS = {\n    'or': infix(6, lambda context, x, y: x.eval(context) or y.eval(context)),\n    'and': infix(7, lambda context, x, y: x.eval(context) and y.eval(context)),\n    'not': prefix(8, lambda context, x: not x.eval(context)),\n    'in': infix(9, lambda context, x, y: x.eval(context) in y.eval(context)),\n    'not in': infix(9, lambda context, x, y: x.eval(context) not in y.eval(context)),\n    '=': infix(10, lambda context, x, y: x.eval(context) == y.eval(context)),\n    '==': infix(10, lambda context, x, y: x.eval(context) == y.eval(context)),\n    '!=': infix(10, lambda context, x, y: x.eval(context) != y.eval(context)),\n    '>': infix(10, lambda context, x, y: x.eval(context) > y.eval(context)),\n    '>=': infix(10, lambda context, x, y: x.eval(context) >= y.eval(context)),\n    '<': infix(10, lambda context, x, y: x.eval(context) < y.eval(context)),\n    '<=': infix(10, lambda context, x, y: x.eval(context) <= y.eval(context)),\n}\n\n# Assign 'id' to each:\nfor key, op in OPERATORS.items():\n    op.id = key\n\n\nclass Literal(TokenBase):\n    \"\"\"\n    A basic self-resolvable object similar to a Django template variable.\n    \"\"\"\n    # IfParser uses Literal in create_var, but TemplateIfParser overrides\n    # create_var so that a proper implementation that actually resolves\n    # variables, filters etc is used.\n    id = \"literal\"\n    lbp = 0\n\n    def __init__(self, value):\n        self.value = value\n\n    def display(self):\n        return repr(self.value)\n\n    def nud(self, parser):\n        return self\n\n    def eval(self, context):\n        return self.value\n\n    def __repr__(self):\n        return \"(%s %r)\" % (self.id, self.value)\n\n\nclass EndToken(TokenBase):\n    lbp = 0\n\n    def nud(self, parser):\n        raise parser.error_class(\"Unexpected end of expression in if tag.\")\n\nEndToken = EndToken()\n\n\nclass IfParser(object):\n    error_class = ValueError\n\n    def __init__(self, tokens):\n        # pre-pass necessary to turn  'not','in' into single token\n        l = len(tokens)\n        mapped_tokens = []\n        i = 0\n        while i < l:\n            token = tokens[i]\n            if token == \"not\" and i + 1 < l and tokens[i+1] == \"in\":\n                token = \"not in\"\n                i += 1 # skip 'in'\n            mapped_tokens.append(self.translate_token(token))\n            i += 1\n\n        self.tokens = mapped_tokens\n        self.pos = 0\n        self.current_token = self.next_token()\n\n    def translate_token(self, token):\n        try:\n            op = OPERATORS[token]\n        except (KeyError, TypeError):\n            return self.create_var(token)\n        else:\n            return op()\n\n    def next_token(self):\n        if self.pos >= len(self.tokens):\n            return EndToken\n        else:\n            retval = self.tokens[self.pos]\n            self.pos += 1\n            return retval\n\n    def parse(self):\n        retval = self.expression()\n        # Check that we have exhausted all the tokens\n        if self.current_token is not EndToken:\n            raise self.error_class(\"Unused '%s' at end of if expression.\" %\n                                   self.current_token.display())\n        return retval\n\n    def expression(self, rbp=0):\n        t = self.current_token\n        self.current_token = self.next_token()\n        left = t.nud(self)\n        while rbp < self.current_token.lbp:\n            t = self.current_token\n            self.current_token = self.next_token()\n            left = t.led(left, self)\n        return left\n\n    def create_var(self, value):\n        return Literal(value)\n"
  },
  {
    "path": "Django-1.5.1/django/templatetags/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/templatetags/cache.py",
    "content": "from __future__ import unicode_literals\n\nimport hashlib\nfrom django.template import Library, Node, TemplateSyntaxError, Variable, VariableDoesNotExist\nfrom django.template import resolve_variable\nfrom django.core.cache import cache\nfrom django.utils.encoding import force_bytes\nfrom django.utils.http import urlquote\n\nregister = Library()\n\nclass CacheNode(Node):\n    def __init__(self, nodelist, expire_time_var, fragment_name, vary_on):\n        self.nodelist = nodelist\n        self.expire_time_var = Variable(expire_time_var)\n        self.fragment_name = fragment_name\n        self.vary_on = vary_on\n\n    def render(self, context):\n        try:\n            expire_time = self.expire_time_var.resolve(context)\n        except VariableDoesNotExist:\n            raise TemplateSyntaxError('\"cache\" tag got an unknown variable: %r' % self.expire_time_var.var)\n        try:\n            expire_time = int(expire_time)\n        except (ValueError, TypeError):\n            raise TemplateSyntaxError('\"cache\" tag got a non-integer timeout value: %r' % expire_time)\n        # Build a key for this fragment and all vary-on's.\n        key = ':'.join([urlquote(resolve_variable(var, context)) for var in self.vary_on])\n        args = hashlib.md5(force_bytes(key))\n        cache_key = 'template.cache.%s.%s' % (self.fragment_name, args.hexdigest())\n        value = cache.get(cache_key)\n        if value is None:\n            value = self.nodelist.render(context)\n            cache.set(cache_key, value, expire_time)\n        return value\n\n@register.tag('cache')\ndef do_cache(parser, token):\n    \"\"\"\n    This will cache the contents of a template fragment for a given amount\n    of time.\n\n    Usage::\n\n        {% load cache %}\n        {% cache [expire_time] [fragment_name] %}\n            .. some expensive processing ..\n        {% endcache %}\n\n    This tag also supports varying by a list of arguments::\n\n        {% load cache %}\n        {% cache [expire_time] [fragment_name] [var1] [var2] .. %}\n            .. some expensive processing ..\n        {% endcache %}\n\n    Each unique set of arguments will result in a unique cache entry.\n    \"\"\"\n    nodelist = parser.parse(('endcache',))\n    parser.delete_first_token()\n    tokens = token.contents.split()\n    if len(tokens) < 3:\n        raise TemplateSyntaxError(\"'%r' tag requires at least 2 arguments.\" % tokens[0])\n    return CacheNode(nodelist, tokens[1], tokens[2], tokens[3:])\n"
  },
  {
    "path": "Django-1.5.1/django/templatetags/future.py",
    "content": "from django.template import Library\nfrom django.template.defaulttags import url as default_url, ssi as default_ssi\n\nregister = Library()\n\n@register.tag\ndef ssi(parser, token):\n    # Used for deprecation path during 1.3/1.4, will be removed in 2.0\n    return default_ssi(parser, token)\n\n@register.tag\ndef url(parser, token):\n    # Used for deprecation path during 1.3/1.4, will be removed in 2.0\n    return default_url(parser, token)\n"
  },
  {
    "path": "Django-1.5.1/django/templatetags/i18n.py",
    "content": "from __future__ import unicode_literals\nimport re\n\nfrom django.template import (Node, Variable, TemplateSyntaxError,\n    TokenParser, Library, TOKEN_TEXT, TOKEN_VAR)\nfrom django.template.base import _render_value_in_context\nfrom django.template.defaulttags import token_kwargs\nfrom django.utils import six\nfrom django.utils import translation\n\n\nregister = Library()\n\n\nclass GetAvailableLanguagesNode(Node):\n    def __init__(self, variable):\n        self.variable = variable\n\n    def render(self, context):\n        from django.conf import settings\n        context[self.variable] = [(k, translation.ugettext(v)) for k, v in settings.LANGUAGES]\n        return ''\n\n\nclass GetLanguageInfoNode(Node):\n    def __init__(self, lang_code, variable):\n        self.lang_code = Variable(lang_code)\n        self.variable = variable\n\n    def render(self, context):\n        lang_code = self.lang_code.resolve(context)\n        context[self.variable] = translation.get_language_info(lang_code)\n        return ''\n\n\nclass GetLanguageInfoListNode(Node):\n    def __init__(self, languages, variable):\n        self.languages = Variable(languages)\n        self.variable = variable\n\n    def get_language_info(self, language):\n        # ``language`` is either a language code string or a sequence\n        # with the language code as its first item\n        if len(language[0]) > 1:\n            return translation.get_language_info(language[0])\n        else:\n            return translation.get_language_info(str(language))\n\n    def render(self, context):\n        langs = self.languages.resolve(context)\n        context[self.variable] = [self.get_language_info(lang) for lang in langs]\n        return ''\n\n\nclass GetCurrentLanguageNode(Node):\n    def __init__(self, variable):\n        self.variable = variable\n\n    def render(self, context):\n        context[self.variable] = translation.get_language()\n        return ''\n\n\nclass GetCurrentLanguageBidiNode(Node):\n    def __init__(self, variable):\n        self.variable = variable\n\n    def render(self, context):\n        context[self.variable] = translation.get_language_bidi()\n        return ''\n\n\nclass TranslateNode(Node):\n    def __init__(self, filter_expression, noop, asvar=None,\n                 message_context=None):\n        self.noop = noop\n        self.asvar = asvar\n        self.message_context = message_context\n        self.filter_expression = filter_expression\n        if isinstance(self.filter_expression.var, six.string_types):\n            self.filter_expression.var = Variable(\"'%s'\" %\n                                                  self.filter_expression.var)\n\n    def render(self, context):\n        self.filter_expression.var.translate = not self.noop\n        if self.message_context:\n            self.filter_expression.var.message_context = (\n                self.message_context.resolve(context))\n        output = self.filter_expression.resolve(context)\n        value = _render_value_in_context(output, context)\n        if self.asvar:\n            context[self.asvar] = value\n            return ''\n        else:\n            return value\n\n\nclass BlockTranslateNode(Node):\n    def __init__(self, extra_context, singular, plural=None, countervar=None,\n            counter=None, message_context=None):\n        self.extra_context = extra_context\n        self.singular = singular\n        self.plural = plural\n        self.countervar = countervar\n        self.counter = counter\n        self.message_context = message_context\n\n    def render_token_list(self, tokens):\n        result = []\n        vars = []\n        for token in tokens:\n            if token.token_type == TOKEN_TEXT:\n                result.append(token.contents.replace('%', '%%'))\n            elif token.token_type == TOKEN_VAR:\n                result.append('%%(%s)s' % token.contents)\n                vars.append(token.contents)\n        return ''.join(result), vars\n\n    def render(self, context, nested=False):\n        if self.message_context:\n            message_context = self.message_context.resolve(context)\n        else:\n            message_context = None\n        tmp_context = {}\n        for var, val in self.extra_context.items():\n            tmp_context[var] = val.resolve(context)\n        # Update() works like a push(), so corresponding context.pop() is at\n        # the end of function\n        context.update(tmp_context)\n        singular, vars = self.render_token_list(self.singular)\n        if self.plural and self.countervar and self.counter:\n            count = self.counter.resolve(context)\n            context[self.countervar] = count\n            plural, plural_vars = self.render_token_list(self.plural)\n            if message_context:\n                result = translation.npgettext(message_context, singular,\n                                               plural, count)\n            else:\n                result = translation.ungettext(singular, plural, count)\n            vars.extend(plural_vars)\n        else:\n            if message_context:\n                result = translation.pgettext(message_context, singular)\n            else:\n                result = translation.ugettext(singular)\n        data = dict([(v, _render_value_in_context(context.get(v, ''), context)) for v in vars])\n        context.pop()\n        try:\n            result = result % data\n        except (KeyError, ValueError):\n            if nested:\n                # Either string is malformed, or it's a bug\n                raise TemplateSyntaxError(\"'blocktrans' is unable to format \"\n                    \"string returned by gettext: %r using %r\" % (result, data))\n            with translation.override(None):\n                result = self.render(context, nested=True)\n        return result\n\n\nclass LanguageNode(Node):\n    def __init__(self, nodelist, language):\n        self.nodelist = nodelist\n        self.language = language\n\n    def render(self, context):\n        with translation.override(self.language.resolve(context)):\n            output = self.nodelist.render(context)\n        return output\n\n\n@register.tag(\"get_available_languages\")\ndef do_get_available_languages(parser, token):\n    \"\"\"\n    This will store a list of available languages\n    in the context.\n\n    Usage::\n\n        {% get_available_languages as languages %}\n        {% for language in languages %}\n        ...\n        {% endfor %}\n\n    This will just pull the LANGUAGES setting from\n    your setting file (or the default settings) and\n    put it into the named variable.\n    \"\"\"\n    args = token.contents.split()\n    if len(args) != 3 or args[1] != 'as':\n        raise TemplateSyntaxError(\"'get_available_languages' requires 'as variable' (got %r)\" % args)\n    return GetAvailableLanguagesNode(args[2])\n\n@register.tag(\"get_language_info\")\ndef do_get_language_info(parser, token):\n    \"\"\"\n    This will store the language information dictionary for the given language\n    code in a context variable.\n\n    Usage::\n\n        {% get_language_info for LANGUAGE_CODE as l %}\n        {{ l.code }}\n        {{ l.name }}\n        {{ l.name_local }}\n        {{ l.bidi|yesno:\"bi-directional,uni-directional\" }}\n    \"\"\"\n    args = token.contents.split()\n    if len(args) != 5 or args[1] != 'for' or args[3] != 'as':\n        raise TemplateSyntaxError(\"'%s' requires 'for string as variable' (got %r)\" % (args[0], args[1:]))\n    return GetLanguageInfoNode(args[2], args[4])\n\n@register.tag(\"get_language_info_list\")\ndef do_get_language_info_list(parser, token):\n    \"\"\"\n    This will store a list of language information dictionaries for the given\n    language codes in a context variable. The language codes can be specified\n    either as a list of strings or a settings.LANGUAGES style tuple (or any\n    sequence of sequences whose first items are language codes).\n\n    Usage::\n\n        {% get_language_info_list for LANGUAGES as langs %}\n        {% for l in langs %}\n          {{ l.code }}\n          {{ l.name }}\n          {{ l.name_local }}\n          {{ l.bidi|yesno:\"bi-directional,uni-directional\" }}\n        {% endfor %}\n    \"\"\"\n    args = token.contents.split()\n    if len(args) != 5 or args[1] != 'for' or args[3] != 'as':\n        raise TemplateSyntaxError(\"'%s' requires 'for sequence as variable' (got %r)\" % (args[0], args[1:]))\n    return GetLanguageInfoListNode(args[2], args[4])\n\n@register.filter\ndef language_name(lang_code):\n    return translation.get_language_info(lang_code)['name']\n\n@register.filter\ndef language_name_local(lang_code):\n    return translation.get_language_info(lang_code)['name_local']\n\n@register.filter\ndef language_bidi(lang_code):\n    return translation.get_language_info(lang_code)['bidi']\n\n@register.tag(\"get_current_language\")\ndef do_get_current_language(parser, token):\n    \"\"\"\n    This will store the current language in the context.\n\n    Usage::\n\n        {% get_current_language as language %}\n\n    This will fetch the currently active language and\n    put it's value into the ``language`` context\n    variable.\n    \"\"\"\n    args = token.contents.split()\n    if len(args) != 3 or args[1] != 'as':\n        raise TemplateSyntaxError(\"'get_current_language' requires 'as variable' (got %r)\" % args)\n    return GetCurrentLanguageNode(args[2])\n\n@register.tag(\"get_current_language_bidi\")\ndef do_get_current_language_bidi(parser, token):\n    \"\"\"\n    This will store the current language layout in the context.\n\n    Usage::\n\n        {% get_current_language_bidi as bidi %}\n\n    This will fetch the currently active language's layout and\n    put it's value into the ``bidi`` context variable.\n    True indicates right-to-left layout, otherwise left-to-right\n    \"\"\"\n    args = token.contents.split()\n    if len(args) != 3 or args[1] != 'as':\n        raise TemplateSyntaxError(\"'get_current_language_bidi' requires 'as variable' (got %r)\" % args)\n    return GetCurrentLanguageBidiNode(args[2])\n\n@register.tag(\"trans\")\ndef do_translate(parser, token):\n    \"\"\"\n    This will mark a string for translation and will\n    translate the string for the current language.\n\n    Usage::\n\n        {% trans \"this is a test\" %}\n\n    This will mark the string for translation so it will\n    be pulled out by mark-messages.py into the .po files\n    and will run the string through the translation engine.\n\n    There is a second form::\n\n        {% trans \"this is a test\" noop %}\n\n    This will only mark for translation, but will return\n    the string unchanged. Use it when you need to store\n    values into forms that should be translated later on.\n\n    You can use variables instead of constant strings\n    to translate stuff you marked somewhere else::\n\n        {% trans variable %}\n\n    This will just try to translate the contents of\n    the variable ``variable``. Make sure that the string\n    in there is something that is in the .po file.\n\n    It is possible to store the translated string into a variable::\n\n        {% trans \"this is a test\" as var %}\n        {{ var }}\n\n    Contextual translations are also supported::\n\n        {% trans \"this is a test\" context \"greeting\" %}\n\n    This is equivalent to calling pgettext instead of (u)gettext.\n    \"\"\"\n    class TranslateParser(TokenParser):\n        def top(self):\n            value = self.value()\n\n            # Backwards Compatiblity fix:\n            # FilterExpression does not support single-quoted strings,\n            # so we make a cheap localized fix in order to maintain\n            # backwards compatibility with existing uses of ``trans``\n            # where single quote use is supported.\n            if value[0] == \"'\":\n                m = re.match(\"^'([^']+)'(\\|.*$)\", value)\n                if m:\n                    value = '\"%s\"%s' % (m.group(1).replace('\"','\\\\\"'), m.group(2))\n                elif value[-1] == \"'\":\n                    value = '\"%s\"' % value[1:-1].replace('\"','\\\\\"')\n\n            noop = False\n            asvar = None\n            message_context = None\n\n            while self.more():\n                tag = self.tag()\n                if tag == 'noop':\n                    noop = True\n                elif tag == 'context':\n                    message_context = parser.compile_filter(self.value())\n                elif tag == 'as':\n                    asvar = self.tag()\n                else:\n                    raise TemplateSyntaxError(\n                        \"Only options for 'trans' are 'noop', \" \\\n                        \"'context \\\"xxx\\\"', and 'as VAR'.\")\n            return value, noop, asvar, message_context\n    value, noop, asvar, message_context = TranslateParser(token.contents).top()\n    return TranslateNode(parser.compile_filter(value), noop, asvar,\n                         message_context)\n\n@register.tag(\"blocktrans\")\ndef do_block_translate(parser, token):\n    \"\"\"\n    This will translate a block of text with parameters.\n\n    Usage::\n\n        {% blocktrans with bar=foo|filter boo=baz|filter %}\n        This is {{ bar }} and {{ boo }}.\n        {% endblocktrans %}\n\n    Additionally, this supports pluralization::\n\n        {% blocktrans count count=var|length %}\n        There is {{ count }} object.\n        {% plural %}\n        There are {{ count }} objects.\n        {% endblocktrans %}\n\n    This is much like ngettext, only in template syntax.\n\n    The \"var as value\" legacy format is still supported::\n\n        {% blocktrans with foo|filter as bar and baz|filter as boo %}\n        {% blocktrans count var|length as count %}\n\n    Contextual translations are supported::\n\n        {% blocktrans with bar=foo|filter context \"greeting\" %}\n            This is {{ bar }}.\n        {% endblocktrans %}\n\n    This is equivalent to calling pgettext/npgettext instead of\n    (u)gettext/(u)ngettext.\n    \"\"\"\n    bits = token.split_contents()\n\n    options = {}\n    remaining_bits = bits[1:]\n    while remaining_bits:\n        option = remaining_bits.pop(0)\n        if option in options:\n            raise TemplateSyntaxError('The %r option was specified more '\n                                      'than once.' % option)\n        if option == 'with':\n            value = token_kwargs(remaining_bits, parser, support_legacy=True)\n            if not value:\n                raise TemplateSyntaxError('\"with\" in %r tag needs at least '\n                                          'one keyword argument.' % bits[0])\n        elif option == 'count':\n            value = token_kwargs(remaining_bits, parser, support_legacy=True)\n            if len(value) != 1:\n                raise TemplateSyntaxError('\"count\" in %r tag expected exactly '\n                                          'one keyword argument.' % bits[0])\n        elif option == \"context\":\n            try:\n                value = remaining_bits.pop(0)\n                value = parser.compile_filter(value)\n            except Exception:\n                raise TemplateSyntaxError('\"context\" in %r tag expected '\n                                          'exactly one argument.' % bits[0])\n        else:\n            raise TemplateSyntaxError('Unknown argument for %r tag: %r.' %\n                                      (bits[0], option))\n        options[option] = value\n\n    if 'count' in options:\n        countervar, counter = list(six.iteritems(options['count']))[0]\n    else:\n        countervar, counter = None, None\n    if 'context' in options:\n        message_context = options['context']\n    else:\n        message_context = None\n    extra_context = options.get('with', {})\n\n    singular = []\n    plural = []\n    while parser.tokens:\n        token = parser.next_token()\n        if token.token_type in (TOKEN_VAR, TOKEN_TEXT):\n            singular.append(token)\n        else:\n            break\n    if countervar and counter:\n        if token.contents.strip() != 'plural':\n            raise TemplateSyntaxError(\"'blocktrans' doesn't allow other block tags inside it\")\n        while parser.tokens:\n            token = parser.next_token()\n            if token.token_type in (TOKEN_VAR, TOKEN_TEXT):\n                plural.append(token)\n            else:\n                break\n    if token.contents.strip() != 'endblocktrans':\n        raise TemplateSyntaxError(\"'blocktrans' doesn't allow other block tags (seen %r) inside it\" % token.contents)\n\n    return BlockTranslateNode(extra_context, singular, plural, countervar,\n            counter, message_context)\n\n@register.tag\ndef language(parser, token):\n    \"\"\"\n    This will enable the given language just for this block.\n\n    Usage::\n\n        {% language \"de\" %}\n            This is {{ bar }} and {{ boo }}.\n        {% endlanguage %}\n\n    \"\"\"\n    bits = token.split_contents()\n    if len(bits) != 2:\n        raise TemplateSyntaxError(\"'%s' takes one argument (language)\" % bits[0])\n    language = parser.compile_filter(bits[1])\n    nodelist = parser.parse(('endlanguage',))\n    parser.delete_first_token()\n    return LanguageNode(nodelist, language)\n"
  },
  {
    "path": "Django-1.5.1/django/templatetags/l10n.py",
    "content": "from django.template import Node\nfrom django.template import TemplateSyntaxError, Library\nfrom django.utils import formats\nfrom django.utils.encoding import force_text\n\nregister = Library()\n\n@register.filter(is_safe=False)\ndef localize(value):\n    \"\"\"\n    Forces a value to be rendered as a localized value,\n    regardless of the value of ``settings.USE_L10N``.\n    \"\"\"\n    return force_text(formats.localize(value, use_l10n=True))\n\n@register.filter(is_safe=False)\ndef unlocalize(value):\n    \"\"\"\n    Forces a value to be rendered as a non-localized value,\n    regardless of the value of ``settings.USE_L10N``.\n    \"\"\"\n    return force_text(value)\n\nclass LocalizeNode(Node):\n    def __init__(self, nodelist, use_l10n):\n        self.nodelist = nodelist\n        self.use_l10n = use_l10n\n\n    def __repr__(self):\n        return \"<LocalizeNode>\"\n\n    def render(self, context):\n        old_setting = context.use_l10n\n        context.use_l10n = self.use_l10n\n        output = self.nodelist.render(context)\n        context.use_l10n = old_setting\n        return output\n\n@register.tag('localize')\ndef localize_tag(parser, token):\n    \"\"\"\n    Forces or prevents localization of values, regardless of the value of\n    `settings.USE_L10N`.\n\n    Sample usage::\n\n        {% localize off %}\n            var pi = {{ 3.1415 }};\n        {% endlocalize %}\n\n    \"\"\"\n    use_l10n = None\n    bits = list(token.split_contents())\n    if len(bits) == 1:\n        use_l10n = True\n    elif len(bits) > 2 or bits[1] not in ('on', 'off'):\n        raise TemplateSyntaxError(\"%r argument should be 'on' or 'off'\" % bits[0])\n    else:\n        use_l10n = bits[1] == 'on'\n    nodelist = parser.parse(('endlocalize',))\n    parser.delete_first_token()\n    return LocalizeNode(nodelist, use_l10n)\n"
  },
  {
    "path": "Django-1.5.1/django/templatetags/static.py",
    "content": "try:\n    from urllib.parse import urljoin\nexcept ImportError:     # Python 2\n    from urlparse import urljoin\n\nfrom django import template\nfrom django.template.base import Node\nfrom django.utils.encoding import iri_to_uri\n\nregister = template.Library()\n\n\nclass PrefixNode(template.Node):\n\n    def __repr__(self):\n        return \"<PrefixNode for %r>\" % self.name\n\n    def __init__(self, varname=None, name=None):\n        if name is None:\n            raise template.TemplateSyntaxError(\n                \"Prefix nodes must be given a name to return.\")\n        self.varname = varname\n        self.name = name\n\n    @classmethod\n    def handle_token(cls, parser, token, name):\n        \"\"\"\n        Class method to parse prefix node and return a Node.\n        \"\"\"\n        tokens = token.contents.split()\n        if len(tokens) > 1 and tokens[1] != 'as':\n            raise template.TemplateSyntaxError(\n                \"First argument in '%s' must be 'as'\" % tokens[0])\n        if len(tokens) > 1:\n            varname = tokens[2]\n        else:\n            varname = None\n        return cls(varname, name)\n\n    @classmethod\n    def handle_simple(cls, name):\n        try:\n            from django.conf import settings\n        except ImportError:\n            prefix = ''\n        else:\n            prefix = iri_to_uri(getattr(settings, name, ''))\n        return prefix\n\n    def render(self, context):\n        prefix = self.handle_simple(self.name)\n        if self.varname is None:\n            return prefix\n        context[self.varname] = prefix\n        return ''\n\n\n@register.tag\ndef get_static_prefix(parser, token):\n    \"\"\"\n    Populates a template variable with the static prefix,\n    ``settings.STATIC_URL``.\n\n    Usage::\n\n        {% get_static_prefix [as varname] %}\n\n    Examples::\n\n        {% get_static_prefix %}\n        {% get_static_prefix as static_prefix %}\n\n    \"\"\"\n    return PrefixNode.handle_token(parser, token, \"STATIC_URL\")\n\n\n@register.tag\ndef get_media_prefix(parser, token):\n    \"\"\"\n    Populates a template variable with the media prefix,\n    ``settings.MEDIA_URL``.\n\n    Usage::\n\n        {% get_media_prefix [as varname] %}\n\n    Examples::\n\n        {% get_media_prefix %}\n        {% get_media_prefix as media_prefix %}\n\n    \"\"\"\n    return PrefixNode.handle_token(parser, token, \"MEDIA_URL\")\n\n\nclass StaticNode(Node):\n    def __init__(self, varname=None, path=None):\n        if path is None:\n            raise template.TemplateSyntaxError(\n                \"Static template nodes must be given a path to return.\")\n        self.path = path\n        self.varname = varname\n\n    def url(self, context):\n        path = self.path.resolve(context)\n        return self.handle_simple(path)\n\n    def render(self, context):\n        url = self.url(context)\n        if self.varname is None:\n            return url\n        context[self.varname] = url\n        return ''\n\n    @classmethod\n    def handle_simple(cls, path):\n        return urljoin(PrefixNode.handle_simple(\"STATIC_URL\"), path)\n\n    @classmethod\n    def handle_token(cls, parser, token):\n        \"\"\"\n        Class method to parse prefix node and return a Node.\n        \"\"\"\n        bits = token.split_contents()\n\n        if len(bits) < 2:\n            raise template.TemplateSyntaxError(\n                \"'%s' takes at least one argument (path to file)\" % bits[0])\n\n        path = parser.compile_filter(bits[1])\n\n        if len(bits) >= 2 and bits[-2] == 'as':\n            varname = bits[3]\n        else:\n            varname = None\n\n        return cls(varname, path)\n\n\n@register.tag('static')\ndef do_static(parser, token):\n    \"\"\"\n    Joins the given path with the STATIC_URL setting.\n\n    Usage::\n\n        {% static path [as varname] %}\n\n    Examples::\n\n        {% static \"myapp/css/base.css\" %}\n        {% static variable_with_path %}\n        {% static \"myapp/css/base.css\" as admin_base_css %}\n        {% static variable_with_path as varname %}\n\n    \"\"\"\n    return StaticNode.handle_token(parser, token)\n\n\ndef static(path):\n    return StaticNode.handle_simple(path)\n"
  },
  {
    "path": "Django-1.5.1/django/templatetags/tz.py",
    "content": "from datetime import datetime, tzinfo\n\ntry:\n    import pytz\nexcept ImportError:\n    pytz = None\n\nfrom django.template import Node\nfrom django.template import TemplateSyntaxError, Library\nfrom django.utils import six\nfrom django.utils import timezone\n\nregister = Library()\n\n\n# HACK: datetime is an old-style class, create a new-style equivalent\n# so we can define additional attributes.\nclass datetimeobject(datetime, object):\n    pass\n\n\n# Template filters\n\n@register.filter\ndef localtime(value):\n    \"\"\"\n    Converts a datetime to local time in the active time zone.\n\n    This only makes sense within a {% localtime off %} block.\n    \"\"\"\n    return do_timezone(value, timezone.get_current_timezone())\n\n\n@register.filter\ndef utc(value):\n    \"\"\"\n    Converts a datetime to UTC.\n    \"\"\"\n    return do_timezone(value, timezone.utc)\n\n\n@register.filter('timezone')\ndef do_timezone(value, arg):\n    \"\"\"\n    Converts a datetime to local time in a given time zone.\n\n    The argument must be an instance of a tzinfo subclass or a time zone name.\n    If it is a time zone name, pytz is required.\n\n    Naive datetimes are assumed to be in local time in the default time zone.\n    \"\"\"\n    if not isinstance(value, datetime):\n        return ''\n\n    # Obtain a timezone-aware datetime\n    try:\n        if timezone.is_naive(value):\n            default_timezone = timezone.get_default_timezone()\n            value = timezone.make_aware(value, default_timezone)\n    # Filters must never raise exceptions, and pytz' exceptions inherit\n    # Exception directly, not a specific subclass. So catch everything.\n    except Exception:\n        return ''\n\n    # Obtain a tzinfo instance\n    if isinstance(arg, tzinfo):\n        tz = arg\n    elif isinstance(arg, six.string_types) and pytz is not None:\n        try:\n            tz = pytz.timezone(arg)\n        except pytz.UnknownTimeZoneError:\n            return ''\n    else:\n        return ''\n\n    result = timezone.localtime(value, tz)\n\n    # HACK: the convert_to_local_time flag will prevent\n    #       automatic conversion of the value to local time.\n    result = datetimeobject(result.year, result.month, result.day,\n                            result.hour, result.minute, result.second,\n                            result.microsecond, result.tzinfo)\n    result.convert_to_local_time = False\n    return result\n\n\n# Template tags\n\nclass LocalTimeNode(Node):\n    \"\"\"\n    Template node class used by ``localtime_tag``.\n    \"\"\"\n    def __init__(self, nodelist, use_tz):\n        self.nodelist = nodelist\n        self.use_tz = use_tz\n\n    def render(self, context):\n        old_setting = context.use_tz\n        context.use_tz = self.use_tz\n        output = self.nodelist.render(context)\n        context.use_tz = old_setting\n        return output\n\n\nclass TimezoneNode(Node):\n    \"\"\"\n    Template node class used by ``timezone_tag``.\n    \"\"\"\n    def __init__(self, nodelist, tz):\n        self.nodelist = nodelist\n        self.tz = tz\n\n    def render(self, context):\n        with timezone.override(self.tz.resolve(context)):\n            output = self.nodelist.render(context)\n        return output\n\n\nclass GetCurrentTimezoneNode(Node):\n    \"\"\"\n    Template node class used by ``get_current_timezone_tag``.\n    \"\"\"\n    def __init__(self, variable):\n        self.variable = variable\n\n    def render(self, context):\n        context[self.variable] = timezone.get_current_timezone_name()\n        return ''\n\n\n@register.tag('localtime')\ndef localtime_tag(parser, token):\n    \"\"\"\n    Forces or prevents conversion of datetime objects to local time,\n    regardless of the value of ``settings.USE_TZ``.\n\n    Sample usage::\n\n        {% localtime off %}{{ value_in_utc }}{% endlocaltime %}\n\n    \"\"\"\n    bits = token.split_contents()\n    if len(bits) == 1:\n        use_tz = True\n    elif len(bits) > 2 or bits[1] not in ('on', 'off'):\n        raise TemplateSyntaxError(\"%r argument should be 'on' or 'off'\" %\n                                  bits[0])\n    else:\n        use_tz = bits[1] == 'on'\n    nodelist = parser.parse(('endlocaltime',))\n    parser.delete_first_token()\n    return LocalTimeNode(nodelist, use_tz)\n\n\n@register.tag('timezone')\ndef timezone_tag(parser, token):\n    \"\"\"\n    Enables a given time zone just for this block.\n\n    The ``timezone`` argument must be an instance of a ``tzinfo`` subclass, a\n    time zone name, or ``None``. If is it a time zone name, pytz is required.\n    If it is ``None``, the default time zone is used within the block.\n\n    Sample usage::\n\n        {% timezone \"Europe/Paris\" %}\n            It is {{ now }} in Paris.\n        {% endtimezone %}\n\n    \"\"\"\n    bits = token.split_contents()\n    if len(bits) != 2:\n        raise TemplateSyntaxError(\"'%s' takes one argument (timezone)\" %\n                                  bits[0])\n    tz = parser.compile_filter(bits[1])\n    nodelist = parser.parse(('endtimezone',))\n    parser.delete_first_token()\n    return TimezoneNode(nodelist, tz)\n\n\n@register.tag(\"get_current_timezone\")\ndef get_current_timezone_tag(parser, token):\n    \"\"\"\n    Stores the name of the current time zone in the context.\n\n    Usage::\n\n        {% get_current_timezone as TIME_ZONE %}\n\n    This will fetch the currently active time zone and put its name\n    into the ``TIME_ZONE`` context variable.\n    \"\"\"\n    args = token.contents.split()\n    if len(args) != 3 or args[1] != 'as':\n        raise TemplateSyntaxError(\"'get_current_timezone' requires \"\n                                  \"'as variable' (got %r)\" % args)\n    return GetCurrentTimezoneNode(args[2])\n"
  },
  {
    "path": "Django-1.5.1/django/test/__init__.py",
    "content": "\"\"\"\nDjango Unit Test and Doctest framework.\n\"\"\"\n\nfrom django.test.client import Client, RequestFactory\nfrom django.test.testcases import (TestCase, TransactionTestCase,\n    SimpleTestCase, LiveServerTestCase, skipIfDBFeature,\n    skipUnlessDBFeature\n)\nfrom django.test.utils import Approximate\n"
  },
  {
    "path": "Django-1.5.1/django/test/_doctest.py",
    "content": "# This is a slightly modified version of the doctest.py that shipped with Python 2.5\n# It incorporates changes that have been submitted to the Python ticket tracker\n# as ticket #1521051. These changes allow for a DoctestRunner and Doctest base\n# class to be specified when constructing a DoctestSuite.\n\n# Module doctest.\n# Released to the public domain 16-Jan-2001, by Tim Peters (tim@python.org).\n# Major enhancements and refactoring by:\n#     Jim Fulton\n#     Edward Loper\n\n# Provided as-is; use at your own risk; no warranty; no promises; enjoy!\n\nr\"\"\"Module doctest -- a framework for running examples in docstrings.\n\nIn simplest use, end each module M to be tested with:\n\ndef _test():\n    import doctest\n    doctest.testmod()\n\nif __name__ == \"__main__\":\n    _test()\n\nThen running the module as a script will cause the examples in the\ndocstrings to get executed and verified:\n\npython M.py\n\nThis won't display anything unless an example fails, in which case the\nfailing example(s) and the cause(s) of the failure(s) are printed to stdout\n(why not stderr? because stderr is a lame hack <0.2 wink>), and the final\nline of output is \"Test failed.\".\n\nRun it with the -v switch instead:\n\npython M.py -v\n\nand a detailed report of all examples tried is printed to stdout, along\nwith assorted summaries at the end.\n\nYou can force verbose mode by passing \"verbose=True\" to testmod, or prohibit\nit by passing \"verbose=False\".  In either of those cases, sys.argv is not\nexamined by testmod.\n\nThere are a variety of other ways to run doctests, including integration\nwith the unittest framework, and support for running non-Python text\nfiles containing doctests.  There are also many ways to override parts\nof doctest's default behaviors.  See the Library Reference Manual for\ndetails.\n\"\"\"\n\n__docformat__ = 'reStructuredText en'\n\n__all__ = [\n    # 0, Option Flags\n    'register_optionflag',\n    'DONT_ACCEPT_TRUE_FOR_1',\n    'DONT_ACCEPT_BLANKLINE',\n    'NORMALIZE_WHITESPACE',\n    'ELLIPSIS',\n    'SKIP',\n    'IGNORE_EXCEPTION_DETAIL',\n    'COMPARISON_FLAGS',\n    'REPORT_UDIFF',\n    'REPORT_CDIFF',\n    'REPORT_NDIFF',\n    'REPORT_ONLY_FIRST_FAILURE',\n    'REPORTING_FLAGS',\n    # 1. Utility Functions\n    # 2. Example & DocTest\n    'Example',\n    'DocTest',\n    # 3. Doctest Parser\n    'DocTestParser',\n    # 4. Doctest Finder\n    'DocTestFinder',\n    # 5. Doctest Runner\n    'DocTestRunner',\n    'OutputChecker',\n    'DocTestFailure',\n    'UnexpectedException',\n    'DebugRunner',\n    # 6. Test Functions\n    'testmod',\n    'testfile',\n    'run_docstring_examples',\n    # 7. Tester\n    'Tester',\n    # 8. Unittest Support\n    'DocTestSuite',\n    'DocFileSuite',\n    'set_unittest_reportflags',\n    # 9. Debugging Support\n    'script_from_examples',\n    'testsource',\n    'debug_src',\n    'debug',\n]\n\nimport __future__\n\nimport sys, traceback, inspect, linecache, os, re\nimport unittest, difflib, pdb, tempfile\nimport warnings\n\nfrom django.utils import six\nfrom django.utils.six.moves import StringIO, xrange\n\nif sys.platform.startswith('java'):\n    # On Jython, isclass() reports some modules as classes. Patch it.\n    def patch_isclass(isclass):\n        def patched_isclass(obj):\n            return isclass(obj) and hasattr(obj, '__module__')\n        return patched_isclass\n    inspect.isclass = patch_isclass(inspect.isclass)\n\n# There are 4 basic classes:\n#  - Example: a <source, want> pair, plus an intra-docstring line number.\n#  - DocTest: a collection of examples, parsed from a docstring, plus\n#    info about where the docstring came from (name, filename, lineno).\n#  - DocTestFinder: extracts DocTests from a given object's docstring and\n#    its contained objects' docstrings.\n#  - DocTestRunner: runs DocTest cases, and accumulates statistics.\n#\n# So the basic picture is:\n#\n#                             list of:\n# +------+                   +---------+                   +-------+\n# |object| --DocTestFinder-> | DocTest | --DocTestRunner-> |results|\n# +------+                   +---------+                   +-------+\n#                            | Example |\n#                            |   ...   |\n#                            | Example |\n#                            +---------+\n\n# Option constants.\n\nOPTIONFLAGS_BY_NAME = {}\ndef register_optionflag(name):\n    # Create a new flag unless `name` is already known.\n    return OPTIONFLAGS_BY_NAME.setdefault(name, 1 << len(OPTIONFLAGS_BY_NAME))\n\nDONT_ACCEPT_TRUE_FOR_1 = register_optionflag('DONT_ACCEPT_TRUE_FOR_1')\nDONT_ACCEPT_BLANKLINE = register_optionflag('DONT_ACCEPT_BLANKLINE')\nNORMALIZE_WHITESPACE = register_optionflag('NORMALIZE_WHITESPACE')\nELLIPSIS = register_optionflag('ELLIPSIS')\nSKIP = register_optionflag('SKIP')\nIGNORE_EXCEPTION_DETAIL = register_optionflag('IGNORE_EXCEPTION_DETAIL')\n\nCOMPARISON_FLAGS = (DONT_ACCEPT_TRUE_FOR_1 |\n                    DONT_ACCEPT_BLANKLINE |\n                    NORMALIZE_WHITESPACE |\n                    ELLIPSIS |\n                    SKIP |\n                    IGNORE_EXCEPTION_DETAIL)\n\nREPORT_UDIFF = register_optionflag('REPORT_UDIFF')\nREPORT_CDIFF = register_optionflag('REPORT_CDIFF')\nREPORT_NDIFF = register_optionflag('REPORT_NDIFF')\nREPORT_ONLY_FIRST_FAILURE = register_optionflag('REPORT_ONLY_FIRST_FAILURE')\n\nREPORTING_FLAGS = (REPORT_UDIFF |\n                   REPORT_CDIFF |\n                   REPORT_NDIFF |\n                   REPORT_ONLY_FIRST_FAILURE)\n\n# Special string markers for use in `want` strings:\nBLANKLINE_MARKER = '<BLANKLINE>'\nELLIPSIS_MARKER = '...'\n\n######################################################################\n## Table of Contents\n######################################################################\n#  1. Utility Functions\n#  2. Example & DocTest -- store test cases\n#  3. DocTest Parser -- extracts examples from strings\n#  4. DocTest Finder -- extracts test cases from objects\n#  5. DocTest Runner -- runs test cases\n#  6. Test Functions -- convenient wrappers for testing\n#  7. Tester Class -- for backwards compatibility\n#  8. Unittest Support\n#  9. Debugging Support\n# 10. Example Usage\n\n######################################################################\n## 1. Utility Functions\n######################################################################\n\ndef _extract_future_flags(globs):\n    \"\"\"\n    Return the compiler-flags associated with the future features that\n    have been imported into the given namespace (globs).\n    \"\"\"\n    flags = 0\n    for fname in __future__.all_feature_names:\n        feature = globs.get(fname, None)\n        if feature is getattr(__future__, fname):\n            flags |= feature.compiler_flag\n    return flags\n\ndef _normalize_module(module, depth=2):\n    \"\"\"\n    Return the module specified by `module`.  In particular:\n      - If `module` is a module, then return module.\n      - If `module` is a string, then import and return the\n        module with that name.\n      - If `module` is None, then return the calling module.\n        The calling module is assumed to be the module of\n        the stack frame at the given depth in the call stack.\n    \"\"\"\n    if inspect.ismodule(module):\n        return module\n    elif isinstance(module, six.string_types):\n        return __import__(module, globals(), locals(), [\"*\"])\n    elif module is None:\n        return sys.modules[sys._getframe(depth).f_globals['__name__']]\n    else:\n        raise TypeError(\"Expected a module, string, or None\")\n\ndef _load_testfile(filename, package, module_relative):\n    if module_relative:\n        package = _normalize_module(package, 3)\n        filename = _module_relative_path(package, filename)\n        if hasattr(package, '__loader__'):\n            if hasattr(package.__loader__, 'get_data'):\n                file_contents = package.__loader__.get_data(filename)\n                # get_data() opens files as 'rb', so one must do the equivalent\n                # conversion as universal newlines would do.\n                return file_contents.replace(os.linesep, '\\n'), filename\n    with open(filename) as fp:\n        return fp.read(), filename\n\ndef _indent(s, indent=4):\n    \"\"\"\n    Add the given number of space characters to the beginning every\n    non-blank line in `s`, and return the result.\n    \"\"\"\n    # This regexp matches the start of non-blank lines:\n    return re.sub('(?m)^(?!$)', indent*' ', s)\n\ndef _exception_traceback(exc_info):\n    \"\"\"\n    Return a string containing a traceback message for the given\n    exc_info tuple (as returned by sys.exc_info()).\n    \"\"\"\n    # Get a traceback message.\n    excout = StringIO()\n    exc_type, exc_val, exc_tb = exc_info\n    traceback.print_exception(exc_type, exc_val, exc_tb, file=excout)\n    return excout.getvalue()\n\n# Override some StringIO methods.\nclass _SpoofOut(StringIO):\n    def getvalue(self):\n        result = StringIO.getvalue(self)\n        # If anything at all was written, make sure there's a trailing\n        # newline.  There's no way for the expected output to indicate\n        # that a trailing newline is missing.\n        if result and not result.endswith(\"\\n\"):\n            result += \"\\n\"\n        # Prevent softspace from screwing up the next test case, in\n        # case they used print with a trailing comma in an example.\n        if hasattr(self, \"softspace\"):\n            del self.softspace\n        return result\n\n    def truncate(self,   size=None):\n        StringIO.truncate(self, size)\n        if hasattr(self, \"softspace\"):\n            del self.softspace\n\n# Worst-case linear-time ellipsis matching.\ndef _ellipsis_match(want, got):\n    \"\"\"\n    Essentially the only subtle case:\n    >>> _ellipsis_match('aa...aa', 'aaa')\n    False\n    \"\"\"\n    if ELLIPSIS_MARKER not in want:\n        return want == got\n\n    # Find \"the real\" strings.\n    ws = want.split(ELLIPSIS_MARKER)\n    assert len(ws) >= 2\n\n    # Deal with exact matches possibly needed at one or both ends.\n    startpos, endpos = 0, len(got)\n    w = ws[0]\n    if w:   # starts with exact match\n        if got.startswith(w):\n            startpos = len(w)\n            del ws[0]\n        else:\n            return False\n    w = ws[-1]\n    if w:   # ends with exact match\n        if got.endswith(w):\n            endpos -= len(w)\n            del ws[-1]\n        else:\n            return False\n\n    if startpos > endpos:\n        # Exact end matches required more characters than we have, as in\n        # _ellipsis_match('aa...aa', 'aaa')\n        return False\n\n    # For the rest, we only need to find the leftmost non-overlapping\n    # match for each piece.  If there's no overall match that way alone,\n    # there's no overall match period.\n    for w in ws:\n        # w may be '' at times, if there are consecutive ellipses, or\n        # due to an ellipsis at the start or end of `want`.  That's OK.\n        # Search for an empty string succeeds, and doesn't change startpos.\n        startpos = got.find(w, startpos, endpos)\n        if startpos < 0:\n            return False\n        startpos += len(w)\n\n    return True\n\ndef _comment_line(line):\n    \"Return a commented form of the given line\"\n    line = line.rstrip()\n    if line:\n        return '# '+line\n    else:\n        return '#'\n\nclass _OutputRedirectingPdb(pdb.Pdb):\n    \"\"\"\n    A specialized version of the python debugger that redirects stdout\n    to a given stream when interacting with the user.  Stdout is *not*\n    redirected when traced code is executed.\n    \"\"\"\n    def __init__(self, out):\n        self.__out = out\n        self.__debugger_used = False\n        pdb.Pdb.__init__(self, stdout=out)\n\n    def set_trace(self, frame=None):\n        self.__debugger_used = True\n        if frame is None:\n            frame = sys._getframe().f_back\n        pdb.Pdb.set_trace(self, frame)\n\n    def set_continue(self):\n        # Calling set_continue unconditionally would break unit test\n        # coverage reporting, as Bdb.set_continue calls sys.settrace(None).\n        if self.__debugger_used:\n            pdb.Pdb.set_continue(self)\n\n    def trace_dispatch(self, *args):\n        # Redirect stdout to the given stream.\n        save_stdout = sys.stdout\n        sys.stdout = self.__out\n        # Call Pdb's trace dispatch method.\n        try:\n            return pdb.Pdb.trace_dispatch(self, *args)\n        finally:\n            sys.stdout = save_stdout\n\n# [XX] Normalize with respect to os.path.pardir?\ndef _module_relative_path(module, path):\n    if not inspect.ismodule(module):\n        raise TypeError('Expected a module: %r' % module)\n    if path.startswith('/'):\n        raise ValueError('Module-relative files may not have absolute paths')\n\n    # Find the base directory for the path.\n    if hasattr(module, '__file__'):\n        # A normal module/package\n        basedir = os.path.split(module.__file__)[0]\n    elif module.__name__ == '__main__':\n        # An interactive session.\n        if len(sys.argv)>0 and sys.argv[0] != '':\n            basedir = os.path.split(sys.argv[0])[0]\n        else:\n            basedir = os.curdir\n    else:\n        # A module w/o __file__ (this includes builtins)\n        raise ValueError(\"Can't resolve paths relative to the module \" +\n                         module + \" (it has no __file__)\")\n\n    # Combine the base directory and the path.\n    return os.path.join(basedir, *(path.split('/')))\n\n######################################################################\n## 2. Example & DocTest\n######################################################################\n## - An \"example\" is a <source, want> pair, where \"source\" is a\n##   fragment of source code, and \"want\" is the expected output for\n##   \"source.\"  The Example class also includes information about\n##   where the example was extracted from.\n##\n## - A \"doctest\" is a collection of examples, typically extracted from\n##   a string (such as an object's docstring).  The DocTest class also\n##   includes information about where the string was extracted from.\n\nclass Example:\n    \"\"\"\n    A single doctest example, consisting of source code and expected\n    output.  `Example` defines the following attributes:\n\n      - source: A single Python statement, always ending with a newline.\n        The constructor adds a newline if needed.\n\n      - want: The expected output from running the source code (either\n        from stdout, or a traceback in case of exception).  `want` ends\n        with a newline unless it's empty, in which case it's an empty\n        string.  The constructor adds a newline if needed.\n\n      - exc_msg: The exception message generated by the example, if\n        the example is expected to generate an exception; or `None` if\n        it is not expected to generate an exception.  This exception\n        message is compared against the return value of\n        `traceback.format_exception_only()`.  `exc_msg` ends with a\n        newline unless it's `None`.  The constructor adds a newline\n        if needed.\n\n      - lineno: The line number within the DocTest string containing\n        this Example where the Example begins.  This line number is\n        zero-based, with respect to the beginning of the DocTest.\n\n      - indent: The example's indentation in the DocTest string.\n        I.e., the number of space characters that preceed the\n        example's first prompt.\n\n      - options: A dictionary mapping from option flags to True or\n        False, which is used to override default options for this\n        example.  Any option flags not contained in this dictionary\n        are left at their default value (as specified by the\n        DocTestRunner's optionflags).  By default, no options are set.\n    \"\"\"\n    def __init__(self, source, want, exc_msg=None, lineno=0, indent=0,\n                 options=None):\n        # Normalize inputs.\n        if not source.endswith('\\n'):\n            source += '\\n'\n        if want and not want.endswith('\\n'):\n            want += '\\n'\n        if exc_msg is not None and not exc_msg.endswith('\\n'):\n            exc_msg += '\\n'\n        # Store properties.\n        self.source = source\n        self.want = want\n        self.lineno = lineno\n        self.indent = indent\n        if options is None: options = {}\n        self.options = options\n        self.exc_msg = exc_msg\n\nclass DocTest:\n    \"\"\"\n    A collection of doctest examples that should be run in a single\n    namespace.  Each `DocTest` defines the following attributes:\n\n      - examples: the list of examples.\n\n      - globs: The namespace (aka globals) that the examples should\n        be run in.\n\n      - name: A name identifying the DocTest (typically, the name of\n        the object whose docstring this DocTest was extracted from).\n\n      - filename: The name of the file that this DocTest was extracted\n        from, or `None` if the filename is unknown.\n\n      - lineno: The line number within filename where this DocTest\n        begins, or `None` if the line number is unavailable.  This\n        line number is zero-based, with respect to the beginning of\n        the file.\n\n      - docstring: The string that the examples were extracted from,\n        or `None` if the string is unavailable.\n    \"\"\"\n    def __init__(self, examples, globs, name, filename, lineno, docstring):\n        \"\"\"\n        Create a new DocTest containing the given examples.  The\n        DocTest's globals are initialized with a copy of `globs`.\n        \"\"\"\n        assert not isinstance(examples, six.string_types), \\\n               \"DocTest no longer accepts str; use DocTestParser instead\"\n        self.examples = examples\n        self.docstring = docstring\n        self.globs = globs.copy()\n        self.name = name\n        self.filename = filename\n        self.lineno = lineno\n\n    def __repr__(self):\n        if len(self.examples) == 0:\n            examples = 'no examples'\n        elif len(self.examples) == 1:\n            examples = '1 example'\n        else:\n            examples = '%d examples' % len(self.examples)\n        return ('<DocTest %s from %s:%s (%s)>' %\n                (self.name, self.filename, self.lineno, examples))\n\n\n    # This lets us sort tests by name:\n    def _cmpkey(self):\n        return (self.name, self.filename, self.lineno, id(self))\n    def __cmp__(self, other):\n        if not isinstance(other, DocTest):\n            return -1\n        return cmp(self._cmpkey(), other._cmpkey())\n\n    def __lt__(self, other):\n        return self._cmpkey() < other._cmpkey()\n\n    def __le__(self, other):\n        return self._cmpkey() <= other._cmpkey()\n\n    def __gt__(self, other):\n        return self._cmpkey() > other._cmpkey()\n\n    def __ge__(self, other):\n        return self._cmpkey() >= other._cmpkey()\n\n    def __eq__(self, other):\n        return self._cmpkey() == other._cmpkey()\n\n    def __ne__(self, other):\n        return self._cmpkey() != other._cmpkey()\n\n\n######################################################################\n## 3. DocTestParser\n######################################################################\n\nclass DocTestParser:\n    \"\"\"\n    A class used to parse strings containing doctest examples.\n    \"\"\"\n    # This regular expression is used to find doctest examples in a\n    # string.  It defines three groups: `source` is the source code\n    # (including leading indentation and prompts); `indent` is the\n    # indentation of the first (PS1) line of the source code; and\n    # `want` is the expected output (including leading indentation).\n    _EXAMPLE_RE = re.compile(r'''\n        # Source consists of a PS1 line followed by zero or more PS2 lines.\n        (?P<source>\n            (?:^(?P<indent> [ ]*) >>>    .*)    # PS1 line\n            (?:\\n           [ ]*  \\.\\.\\. .*)*)  # PS2 lines\n        \\n?\n        # Want consists of any non-blank lines that do not start with PS1.\n        (?P<want> (?:(?![ ]*$)    # Not a blank line\n                     (?![ ]*>>>)  # Not a line starting with PS1\n                     .*$\\n?       # But any other line\n                  )*)\n        ''', re.MULTILINE | re.VERBOSE)\n\n    # A regular expression for handling `want` strings that contain\n    # expected exceptions.  It divides `want` into three pieces:\n    #    - the traceback header line (`hdr`)\n    #    - the traceback stack (`stack`)\n    #    - the exception message (`msg`), as generated by\n    #      traceback.format_exception_only()\n    # `msg` may have multiple lines.  We assume/require that the\n    # exception message is the first non-indented line starting with a word\n    # character following the traceback header line.\n    _EXCEPTION_RE = re.compile(r\"\"\"\n        # Grab the traceback header.  Different versions of Python have\n        # said different things on the first traceback line.\n        ^(?P<hdr> Traceback\\ \\(\n            (?: most\\ recent\\ call\\ last\n            |   innermost\\ last\n            ) \\) :\n        )\n        \\s* $                # toss trailing whitespace on the header.\n        (?P<stack> .*?)      # don't blink: absorb stuff until...\n        ^ (?P<msg> \\w+ .*)   #     a line *starts* with alphanum.\n        \"\"\", re.VERBOSE | re.MULTILINE | re.DOTALL)\n\n    # A callable returning a true value if its argument is a blank line\n    # or contains a single comment.\n    _IS_BLANK_OR_COMMENT = re.compile(r'^[ ]*(#.*)?$').match\n\n    def parse(self, string, name='<string>'):\n        \"\"\"\n        Divide the given string into examples and intervening text,\n        and return them as a list of alternating Examples and strings.\n        Line numbers for the Examples are 0-based.  The optional\n        argument `name` is a name identifying this string, and is only\n        used for error messages.\n        \"\"\"\n        string = string.expandtabs()\n        # If all lines begin with the same indentation, then strip it.\n        min_indent = self._min_indent(string)\n        if min_indent > 0:\n            string = '\\n'.join([l[min_indent:] for l in string.split('\\n')])\n\n        output = []\n        charno, lineno = 0, 0\n        # Find all doctest examples in the string:\n        for m in self._EXAMPLE_RE.finditer(string):\n            # Add the pre-example text to `output`.\n            output.append(string[charno:m.start()])\n            # Update lineno (lines before this example)\n            lineno += string.count('\\n', charno, m.start())\n            # Extract info from the regexp match.\n            (source, options, want, exc_msg) = \\\n                     self._parse_example(m, name, lineno)\n            # Create an Example, and add it to the list.\n            if not self._IS_BLANK_OR_COMMENT(source):\n                output.append( Example(source, want, exc_msg,\n                                    lineno=lineno,\n                                    indent=min_indent+len(m.group('indent')),\n                                    options=options) )\n            # Update lineno (lines inside this example)\n            lineno += string.count('\\n', m.start(), m.end())\n            # Update charno.\n            charno = m.end()\n        # Add any remaining post-example text to `output`.\n        output.append(string[charno:])\n        return output\n\n    def get_doctest(self, string, globs, name, filename, lineno):\n        \"\"\"\n        Extract all doctest examples from the given string, and\n        collect them into a `DocTest` object.\n\n        `globs`, `name`, `filename`, and `lineno` are attributes for\n        the new `DocTest` object.  See the documentation for `DocTest`\n        for more information.\n        \"\"\"\n        return DocTest(self.get_examples(string, name), globs,\n                       name, filename, lineno, string)\n\n    def get_examples(self, string, name='<string>'):\n        \"\"\"\n        Extract all doctest examples from the given string, and return\n        them as a list of `Example` objects.  Line numbers are\n        0-based, because it's most common in doctests that nothing\n        interesting appears on the same line as opening triple-quote,\n        and so the first interesting line is called \\\"line 1\\\" then.\n\n        The optional argument `name` is a name identifying this\n        string, and is only used for error messages.\n        \"\"\"\n        return [x for x in self.parse(string, name)\n                if isinstance(x, Example)]\n\n    def _parse_example(self, m, name, lineno):\n        \"\"\"\n        Given a regular expression match from `_EXAMPLE_RE` (`m`),\n        return a pair `(source, want)`, where `source` is the matched\n        example's source code (with prompts and indentation stripped);\n        and `want` is the example's expected output (with indentation\n        stripped).\n\n        `name` is the string's name, and `lineno` is the line number\n        where the example starts; both are used for error messages.\n        \"\"\"\n        # Get the example's indentation level.\n        indent = len(m.group('indent'))\n\n        # Divide source into lines; check that they're properly\n        # indented; and then strip their indentation & prompts.\n        source_lines = m.group('source').split('\\n')\n        self._check_prompt_blank(source_lines, indent, name, lineno)\n        self._check_prefix(source_lines[1:], ' '*indent + '.', name, lineno)\n        source = '\\n'.join([sl[indent+4:] for sl in source_lines])\n\n        # Divide want into lines; check that it's properly indented; and\n        # then strip the indentation.  Spaces before the last newline should\n        # be preserved, so plain rstrip() isn't good enough.\n        want = m.group('want')\n        want_lines = want.split('\\n')\n        if len(want_lines) > 1 and re.match(r' *$', want_lines[-1]):\n            del want_lines[-1]  # forget final newline & spaces after it\n        self._check_prefix(want_lines, ' '*indent, name,\n                           lineno + len(source_lines))\n        want = '\\n'.join([wl[indent:] for wl in want_lines])\n\n        # If `want` contains a traceback message, then extract it.\n        m = self._EXCEPTION_RE.match(want)\n        if m:\n            exc_msg = m.group('msg')\n        else:\n            exc_msg = None\n\n        # Extract options from the source.\n        options = self._find_options(source, name, lineno)\n\n        return source, options, want, exc_msg\n\n    # This regular expression looks for option directives in the\n    # source code of an example.  Option directives are comments\n    # starting with \"doctest:\".  Warning: this may give false\n    # positives for string-literals that contain the string\n    # \"#doctest:\".  Eliminating these false positives would require\n    # actually parsing the string; but we limit them by ignoring any\n    # line containing \"#doctest:\" that is *followed* by a quote mark.\n    _OPTION_DIRECTIVE_RE = re.compile(r'#\\s*doctest:\\s*([^\\n\\'\"]*)$',\n                                      re.MULTILINE)\n\n    def _find_options(self, source, name, lineno):\n        \"\"\"\n        Return a dictionary containing option overrides extracted from\n        option directives in the given source string.\n\n        `name` is the string's name, and `lineno` is the line number\n        where the example starts; both are used for error messages.\n        \"\"\"\n        options = {}\n        # (note: with the current regexp, this will match at most once:)\n        for m in self._OPTION_DIRECTIVE_RE.finditer(source):\n            option_strings = m.group(1).replace(',', ' ').split()\n            for option in option_strings:\n                if (option[0] not in '+-' or\n                    option[1:] not in OPTIONFLAGS_BY_NAME):\n                    raise ValueError('line %r of the doctest for %s '\n                                     'has an invalid option: %r' %\n                                     (lineno+1, name, option))\n                flag = OPTIONFLAGS_BY_NAME[option[1:]]\n                options[flag] = (option[0] == '+')\n        if options and self._IS_BLANK_OR_COMMENT(source):\n            raise ValueError('line %r of the doctest for %s has an option '\n                             'directive on a line with no example: %r' %\n                             (lineno, name, source))\n        return options\n\n    # This regular expression finds the indentation of every non-blank\n    # line in a string.\n    _INDENT_RE = re.compile('^([ ]*)(?=\\S)', re.MULTILINE)\n\n    def _min_indent(self, s):\n        \"Return the minimum indentation of any non-blank line in `s`\"\n        indents = [len(indent) for indent in self._INDENT_RE.findall(s)]\n        if len(indents) > 0:\n            return min(indents)\n        else:\n            return 0\n\n    def _check_prompt_blank(self, lines, indent, name, lineno):\n        \"\"\"\n        Given the lines of a source string (including prompts and\n        leading indentation), check to make sure that every prompt is\n        followed by a space character.  If any line is not followed by\n        a space character, then raise ValueError.\n        \"\"\"\n        for i, line in enumerate(lines):\n            if len(line) >= indent+4 and line[indent+3] != ' ':\n                raise ValueError('line %r of the docstring for %s '\n                                 'lacks blank after %s: %r' %\n                                 (lineno+i+1, name,\n                                  line[indent:indent+3], line))\n\n    def _check_prefix(self, lines, prefix, name, lineno):\n        \"\"\"\n        Check that every line in the given list starts with the given\n        prefix; if any line does not, then raise a ValueError.\n        \"\"\"\n        for i, line in enumerate(lines):\n            if line and not line.startswith(prefix):\n                raise ValueError('line %r of the docstring for %s has '\n                                 'inconsistent leading whitespace: %r' %\n                                 (lineno+i+1, name, line))\n\n\n######################################################################\n## 4. DocTest Finder\n######################################################################\n\nclass DocTestFinder:\n    \"\"\"\n    A class used to extract the DocTests that are relevant to a given\n    object, from its docstring and the docstrings of its contained\n    objects.  Doctests can currently be extracted from the following\n    object types: modules, functions, classes, methods, staticmethods,\n    classmethods, and properties.\n    \"\"\"\n\n    def __init__(self, verbose=False, parser=DocTestParser(),\n                 recurse=True, exclude_empty=True):\n        \"\"\"\n        Create a new doctest finder.\n\n        The optional argument `parser` specifies a class or\n        function that should be used to create new DocTest objects (or\n        objects that implement the same interface as DocTest).  The\n        signature for this factory function should match the signature\n        of the DocTest constructor.\n\n        If the optional argument `recurse` is false, then `find` will\n        only examine the given object, and not any contained objects.\n\n        If the optional argument `exclude_empty` is false, then `find`\n        will include tests for objects with empty docstrings.\n        \"\"\"\n        self._parser = parser\n        self._verbose = verbose\n        self._recurse = recurse\n        self._exclude_empty = exclude_empty\n\n    def find(self, obj, name=None, module=None, globs=None, extraglobs=None):\n        \"\"\"\n        Return a list of the DocTests that are defined by the given\n        object's docstring, or by any of its contained objects'\n        docstrings.\n\n        The optional parameter `module` is the module that contains\n        the given object.  If the module is not specified or is None, then\n        the test finder will attempt to automatically determine the\n        correct module.  The object's module is used:\n\n            - As a default namespace, if `globs` is not specified.\n            - To prevent the DocTestFinder from extracting DocTests\n              from objects that are imported from other modules.\n            - To find the name of the file containing the object.\n            - To help find the line number of the object within its\n              file.\n\n        Contained objects whose module does not match `module` are ignored.\n\n        If `module` is False, no attempt to find the module will be made.\n        This is obscure, of use mostly in tests:  if `module` is False, or\n        is None but cannot be found automatically, then all objects are\n        considered to belong to the (non-existent) module, so all contained\n        objects will (recursively) be searched for doctests.\n\n        The globals for each DocTest is formed by combining `globs`\n        and `extraglobs` (bindings in `extraglobs` override bindings\n        in `globs`).  A new copy of the globals dictionary is created\n        for each DocTest.  If `globs` is not specified, then it\n        defaults to the module's `__dict__`, if specified, or {}\n        otherwise.  If `extraglobs` is not specified, then it defaults\n        to {}.\n\n        \"\"\"\n        # If name was not specified, then extract it from the object.\n        if name is None:\n            name = getattr(obj, '__name__', None)\n            if name is None:\n                raise ValueError(\"DocTestFinder.find: name must be given \"\n                        \"when obj.__name__ doesn't exist: %r\" %\n                                 (type(obj),))\n\n        # Find the module that contains the given object (if obj is\n        # a module, then module=obj.).  Note: this may fail, in which\n        # case module will be None.\n        if module is False:\n            module = None\n        elif module is None:\n            module = inspect.getmodule(obj)\n\n        # Read the module's source code.  This is used by\n        # DocTestFinder._find_lineno to find the line number for a\n        # given object's docstring.\n        try:\n            file = inspect.getsourcefile(obj) or inspect.getfile(obj)\n            source_lines = linecache.getlines(file)\n            if not source_lines:\n                source_lines = None\n        except TypeError:\n            source_lines = None\n\n        # Initialize globals, and merge in extraglobs.\n        if globs is None:\n            if module is None:\n                globs = {}\n            else:\n                globs = module.__dict__.copy()\n        else:\n            globs = globs.copy()\n        if extraglobs is not None:\n            globs.update(extraglobs)\n\n        # Recursively explore `obj`, extracting DocTests.\n        tests = []\n        self._find(tests, obj, name, module, source_lines, globs, {})\n        return tests\n\n    def _from_module(self, module, object):\n        \"\"\"\n        Return true if the given object is defined in the given\n        module.\n        \"\"\"\n        if module is None:\n            return True\n        elif inspect.isfunction(object):\n            return module.__dict__ is six.get_function_globals(object)\n        elif inspect.isclass(object):\n            return module.__name__ == object.__module__\n        elif inspect.getmodule(object) is not None:\n            return module is inspect.getmodule(object)\n        elif hasattr(object, '__module__'):\n            return module.__name__ == object.__module__\n        elif isinstance(object, property):\n            return True # [XX] no way not be sure.\n        else:\n            raise ValueError(\"object must be a class or function\")\n\n    def _find(self, tests, obj, name, module, source_lines, globs, seen):\n        \"\"\"\n        Find tests for the given object and any contained objects, and\n        add them to `tests`.\n        \"\"\"\n        if self._verbose:\n            print('Finding tests in %s' % name)\n\n        # If we've already processed this object, then ignore it.\n        if id(obj) in seen:\n            return\n        seen[id(obj)] = 1\n\n        # Find a test for this object, and add it to the list of tests.\n        test = self._get_test(obj, name, module, globs, source_lines)\n        if test is not None:\n            tests.append(test)\n\n        # Look for tests in a module's contained objects.\n        if inspect.ismodule(obj) and self._recurse:\n            for valname, val in obj.__dict__.items():\n                valname = '%s.%s' % (name, valname)\n                # Recurse to functions & classes.\n                if ((inspect.isfunction(val) or inspect.isclass(val)) and\n                    self._from_module(module, val)):\n                    self._find(tests, val, valname, module, source_lines,\n                               globs, seen)\n\n        # Look for tests in a module's __test__ dictionary.\n        if inspect.ismodule(obj) and self._recurse:\n            for valname, val in getattr(obj, '__test__', {}).items():\n                if not isinstance(valname, six.string_types):\n                    raise ValueError(\"DocTestFinder.find: __test__ keys \"\n                                     \"must be strings: %r\" %\n                                     (type(valname),))\n                if not (inspect.isfunction(val) or inspect.isclass(val) or\n                        inspect.ismethod(val) or inspect.ismodule(val) or\n                        isinstance(val, six.string_types)):\n                    raise ValueError(\"DocTestFinder.find: __test__ values \"\n                                     \"must be strings, functions, methods, \"\n                                     \"classes, or modules: %r\" %\n                                     (type(val),))\n                valname = '%s.__test__.%s' % (name, valname)\n                self._find(tests, val, valname, module, source_lines,\n                           globs, seen)\n\n        # Look for tests in a class's contained objects.\n        if inspect.isclass(obj) and self._recurse:\n            for valname, val in obj.__dict__.items():\n                # Special handling for staticmethod/classmethod.\n                if isinstance(val, staticmethod):\n                    val = getattr(obj, valname)\n                if isinstance(val, classmethod):\n                    val = getattr(obj, valname).__func__\n\n                # Recurse to methods, properties, and nested classes.\n                if ((inspect.isfunction(val) or inspect.isclass(val) or\n                      isinstance(val, property)) and\n                      self._from_module(module, val)):\n                    valname = '%s.%s' % (name, valname)\n                    self._find(tests, val, valname, module, source_lines,\n                               globs, seen)\n\n    def _get_test(self, obj, name, module, globs, source_lines):\n        \"\"\"\n        Return a DocTest for the given object, if it defines a docstring;\n        otherwise, return None.\n        \"\"\"\n        # Extract the object's docstring.  If it doesn't have one,\n        # then return None (no test for this object).\n        if isinstance(obj, six.string_types):\n            docstring = obj\n        else:\n            try:\n                if obj.__doc__ is None:\n                    docstring = ''\n                else:\n                    docstring = obj.__doc__\n                    if not isinstance(docstring, six.string_types):\n                        docstring = str(docstring)\n            except (TypeError, AttributeError):\n                docstring = ''\n\n        # Find the docstring's location in the file.\n        lineno = self._find_lineno(obj, source_lines)\n\n        # Don't bother if the docstring is empty.\n        if self._exclude_empty and not docstring:\n            return None\n\n        # Return a DocTest for this object.\n        if module is None:\n            filename = None\n        else:\n            filename = getattr(module, '__file__', module.__name__)\n            if filename[-4:] in (\".pyc\", \".pyo\"):\n                filename = filename[:-1]\n        return self._parser.get_doctest(docstring, globs, name,\n                                        filename, lineno)\n\n    def _find_lineno(self, obj, source_lines):\n        \"\"\"\n        Return a line number of the given object's docstring.  Note:\n        this method assumes that the object has a docstring.\n        \"\"\"\n        lineno = None\n\n        # Find the line number for modules.\n        if inspect.ismodule(obj):\n            lineno = 0\n\n        # Find the line number for classes.\n        # Note: this could be fooled if a class is defined multiple\n        # times in a single file.\n        if inspect.isclass(obj):\n            if source_lines is None:\n                return None\n            pat = re.compile(r'^\\s*class\\s*%s\\b' %\n                             getattr(obj, '__name__', '-'))\n            for i, line in enumerate(source_lines):\n                if pat.match(line):\n                    lineno = i\n                    break\n\n        # Find the line number for functions & methods.\n        if inspect.ismethod(obj): obj = obj.__func__\n        if inspect.isfunction(obj): obj = six.get_function_code(obj)\n        if inspect.istraceback(obj): obj = obj.tb_frame\n        if inspect.isframe(obj): obj = obj.f_code\n        if inspect.iscode(obj):\n            lineno = getattr(obj, 'co_firstlineno', None)-1\n\n        # Find the line number where the docstring starts.  Assume\n        # that it's the first line that begins with a quote mark.\n        # Note: this could be fooled by a multiline function\n        # signature, where a continuation line begins with a quote\n        # mark.\n        if lineno is not None:\n            if source_lines is None:\n                return lineno+1\n            pat = re.compile('(^|.*:)\\s*\\w*(\"|\\')')\n            for lineno in range(lineno, len(source_lines)):\n                if pat.match(source_lines[lineno]):\n                    return lineno\n\n        # We couldn't find the line number.\n        return None\n\n######################################################################\n## 5. DocTest Runner\n######################################################################\n\nclass DocTestRunner:\n    \"\"\"\n    A class used to run DocTest test cases, and accumulate statistics.\n    The `run` method is used to process a single DocTest case.  It\n    returns a tuple `(f, t)`, where `t` is the number of test cases\n    tried, and `f` is the number of test cases that failed.\n\n        >>> tests = DocTestFinder().find(_TestClass)\n        >>> runner = DocTestRunner(verbose=False)\n        >>> for test in tests:\n        ...     print(runner.run(test))\n        (0, 2)\n        (0, 1)\n        (0, 2)\n        (0, 2)\n\n    The `summarize` method prints a summary of all the test cases that\n    have been run by the runner, and returns an aggregated `(f, t)`\n    tuple:\n\n        >>> runner.summarize(verbose=1)\n        4 items passed all tests:\n           2 tests in _TestClass\n           2 tests in _TestClass.__init__\n           2 tests in _TestClass.get\n           1 tests in _TestClass.square\n        7 tests in 4 items.\n        7 passed and 0 failed.\n        Test passed.\n        (0, 7)\n\n    The aggregated number of tried examples and failed examples is\n    also available via the `tries` and `failures` attributes:\n\n        >>> runner.tries\n        7\n        >>> runner.failures\n        0\n\n    The comparison between expected outputs and actual outputs is done\n    by an `OutputChecker`.  This comparison may be customized with a\n    number of option flags; see the documentation for `testmod` for\n    more information.  If the option flags are insufficient, then the\n    comparison may also be customized by passing a subclass of\n    `OutputChecker` to the constructor.\n\n    The test runner's display output can be controlled in two ways.\n    First, an output function (`out) can be passed to\n    `TestRunner.run`; this function will be called with strings that\n    should be displayed.  It defaults to `sys.stdout.write`.  If\n    capturing the output is not sufficient, then the display output\n    can be also customized by subclassing DocTestRunner, and\n    overriding the methods `report_start`, `report_success`,\n    `report_unexpected_exception`, and `report_failure`.\n    \"\"\"\n    # This divider string is used to separate failure messages, and to\n    # separate sections of the summary.\n    DIVIDER = \"*\" * 70\n\n    def __init__(self, checker=None, verbose=None, optionflags=0):\n        \"\"\"\n        Create a new test runner.\n\n        Optional keyword arg `checker` is the `OutputChecker` that\n        should be used to compare the expected outputs and actual\n        outputs of doctest examples.\n\n        Optional keyword arg 'verbose' prints lots of stuff if true,\n        only failures if false; by default, it's true iff '-v' is in\n        sys.argv.\n\n        Optional argument `optionflags` can be used to control how the\n        test runner compares expected output to actual output, and how\n        it displays failures.  See the documentation for `testmod` for\n        more information.\n        \"\"\"\n        self._checker = checker or OutputChecker()\n        if verbose is None:\n            verbose = '-v' in sys.argv\n        self._verbose = verbose\n        self.optionflags = optionflags\n        self.original_optionflags = optionflags\n\n        # Keep track of the examples we've run.\n        self.tries = 0\n        self.failures = 0\n        self._name2ft = {}\n\n        # Create a fake output target for capturing doctest output.\n        self._fakeout = _SpoofOut()\n\n    #/////////////////////////////////////////////////////////////////\n    # Reporting methods\n    #/////////////////////////////////////////////////////////////////\n\n    def report_start(self, out, test, example):\n        \"\"\"\n        Report that the test runner is about to process the given\n        example.  (Only displays a message if verbose=True)\n        \"\"\"\n        if self._verbose:\n            if example.want:\n                out('Trying:\\n' + _indent(example.source) +\n                    'Expecting:\\n' + _indent(example.want))\n            else:\n                out('Trying:\\n' + _indent(example.source) +\n                    'Expecting nothing\\n')\n\n    def report_success(self, out, test, example, got):\n        \"\"\"\n        Report that the given example ran successfully.  (Only\n        displays a message if verbose=True)\n        \"\"\"\n        if self._verbose:\n            out(\"ok\\n\")\n\n    def report_failure(self, out, test, example, got):\n        \"\"\"\n        Report that the given example failed.\n        \"\"\"\n        out(self._failure_header(test, example) +\n            self._checker.output_difference(example, got, self.optionflags))\n\n    def report_unexpected_exception(self, out, test, example, exc_info):\n        \"\"\"\n        Report that the given example raised an unexpected exception.\n        \"\"\"\n        out(self._failure_header(test, example) +\n            'Exception raised:\\n' + _indent(_exception_traceback(exc_info)))\n\n    def _failure_header(self, test, example):\n        out = [self.DIVIDER]\n        if test.filename:\n            if test.lineno is not None and example.lineno is not None:\n                lineno = test.lineno + example.lineno + 1\n            else:\n                lineno = '?'\n            out.append('File \"%s\", line %s, in %s' %\n                       (test.filename, lineno, test.name))\n        else:\n            out.append('Line %s, in %s' % (example.lineno+1, test.name))\n        out.append('Failed example:')\n        source = example.source\n        out.append(_indent(source))\n        return '\\n'.join(out)\n\n    #/////////////////////////////////////////////////////////////////\n    # DocTest Running\n    #/////////////////////////////////////////////////////////////////\n\n    def __run(self, test, compileflags, out):\n        \"\"\"\n        Run the examples in `test`.  Write the outcome of each example\n        with one of the `DocTestRunner.report_*` methods, using the\n        writer function `out`.  `compileflags` is the set of compiler\n        flags that should be used to execute examples.  Return a tuple\n        `(f, t)`, where `t` is the number of examples tried, and `f`\n        is the number of examples that failed.  The examples are run\n        in the namespace `test.globs`.\n        \"\"\"\n        # Keep track of the number of failures and tries.\n        failures = tries = 0\n\n        # Save the option flags (since option directives can be used\n        # to modify them).\n        original_optionflags = self.optionflags\n\n        SUCCESS, FAILURE, BOOM = range(3) # `outcome` state\n\n        check = self._checker.check_output\n\n        # Process each example.\n        for examplenum, example in enumerate(test.examples):\n\n            # If REPORT_ONLY_FIRST_FAILURE is set, then suppress\n            # reporting after the first failure.\n            quiet = (self.optionflags & REPORT_ONLY_FIRST_FAILURE and\n                     failures > 0)\n\n            # Merge in the example's options.\n            self.optionflags = original_optionflags\n            if example.options:\n                for (optionflag, val) in example.options.items():\n                    if val:\n                        self.optionflags |= optionflag\n                    else:\n                        self.optionflags &= ~optionflag\n\n            # If 'SKIP' is set, then skip this example.\n            if self.optionflags & SKIP:\n                continue\n\n            # Record that we started this example.\n            tries += 1\n            if not quiet:\n                self.report_start(out, test, example)\n\n            # Use a special filename for compile(), so we can retrieve\n            # the source code during interactive debugging (see\n            # __patched_linecache_getlines).\n            filename = '<doctest %s[%d]>' % (test.name, examplenum)\n\n            # Doctest and Py3 issue:\n            # If the current example that we wish to run is going to fail\n            # because it expects a leading u\"\", then use an alternate displayhook\n            original_displayhook = sys.displayhook\n\n            if six.PY3:\n                 # only set alternate displayhook if Python 3.x or after\n                lines = []\n                def py3_displayhook(value):\n                    if value is None:\n                        # None should not be considered at all\n                        return original_displayhook(value)\n\n                    # Collect the repr output in one variable\n                    s = repr(value)\n                    # Strip b\"\" and u\"\" prefixes from the repr and expected output\n                    # TODO: better way of stripping the prefixes?\n                    expected = example.want\n                    expected = expected.strip() # be wary of newlines\n                    s = s.replace(\"u\", \"\")\n                    s = s.replace(\"b\", \"\")\n                    expected = expected.replace(\"u\", \"\")\n                    expected = expected.replace(\"b\", \"\")\n                    # single quote vs. double quote should not matter\n                    # default all quote marks to double quote\n                    s = s.replace(\"'\", '\"')\n                    expected = expected.replace(\"'\", '\"')\n\n                    # In case of multi-line expected result\n                    lines.append(s)\n\n                    # let them match\n                    if s == expected: # be wary of false positives here\n                        # they should be the same, print expected value\n                        sys.stdout.write(\"%s\\n\" % example.want.strip())\n\n                    # multi-line expected output, doctest uses loop\n                    elif len(expected.split(\"\\n\")) == len(lines):\n                        if \"\\n\".join(lines) == expected:\n                            sys.stdout.write(\"%s\\n\" % example.want.strip())\n                        else:\n                            sys.stdout.write(\"%s\\n\" % repr(value))\n                    elif len(expected.split(\"\\n\")) != len(lines):\n                        # we are not done looping yet, do not print anything!\n                        pass\n\n                    else:\n                        sys.stdout.write(\"%s\\n\" % repr(value))\n\n                sys.displayhook = py3_displayhook\n\n            # Run the example in the given context (globs), and record\n            # any exception that gets raised.  (But don't intercept\n            # keyboard interrupts.)\n            try:\n                # Don't blink!  This is where the user's code gets run.\n                six.exec_(compile(example.source, filename, \"single\",\n                             compileflags, 1), test.globs)\n                self.debugger.set_continue() # ==== Example Finished ====\n                exception = None\n            except KeyboardInterrupt:\n                raise\n            except:\n                exception = sys.exc_info()\n                self.debugger.set_continue() # ==== Example Finished ====\n            finally:\n                # restore the original displayhook\n                sys.displayhook = original_displayhook\n\n            got = self._fakeout.getvalue()  # the actual output\n            self._fakeout.truncate(0)\n            # Python 3.1 requires seek after truncate\n            self._fakeout.seek(0)\n            outcome = FAILURE   # guilty until proved innocent or insane\n\n            # If the example executed without raising any exceptions,\n            # verify its output.\n            if exception is None:\n                if check(example.want, got, self.optionflags):\n                    outcome = SUCCESS\n\n            # The example raised an exception:  check if it was expected.\n            else:\n                exc_msg = traceback.format_exception_only(*exception[:2])[-1]\n                if six.PY3:\n                    # module name will be in group(1) and the expected\n                    # exception message will be in group(2)\n                    m = re.match(r'(.*)\\.(\\w+:.+\\s)', exc_msg)\n                    # make sure there's a match\n                    if m != None:\n                        f_name = m.group(1)\n                        # check to see if m.group(1) contains the module name\n                        if f_name == exception[0].__module__:\n                            # strip the module name from exc_msg\n                            exc_msg = m.group(2)\n\n                if not quiet:\n                    got += _exception_traceback(exception)\n\n                # If `example.exc_msg` is None, then we weren't expecting\n                # an exception.\n                if example.exc_msg is None:\n                    outcome = BOOM\n\n                # We expected an exception:  see whether it matches.\n                elif check(example.exc_msg, exc_msg, self.optionflags):\n                    outcome = SUCCESS\n\n                # Another chance if they didn't care about the detail.\n                elif self.optionflags & IGNORE_EXCEPTION_DETAIL:\n                    m1 = re.match(r'[^:]*:', example.exc_msg)\n                    m2 = re.match(r'[^:]*:', exc_msg)\n                    if m1 and m2 and check(m1.group(0), m2.group(0),\n                                           self.optionflags):\n                        outcome = SUCCESS\n\n            # Report the outcome.\n            if outcome is SUCCESS:\n                if not quiet:\n                    self.report_success(out, test, example, got)\n            elif outcome is FAILURE:\n                if not quiet:\n                    self.report_failure(out, test, example, got)\n                failures += 1\n            elif outcome is BOOM:\n                if not quiet:\n                    self.report_unexpected_exception(out, test, example,\n                                                     exception)\n                failures += 1\n            else:\n                assert False, (\"unknown outcome\", outcome)\n\n        # Restore the option flags (in case they were modified)\n        self.optionflags = original_optionflags\n\n        # Record and return the number of failures and tries.\n        self.__record_outcome(test, failures, tries)\n        return failures, tries\n\n    def __record_outcome(self, test, f, t):\n        \"\"\"\n        Record the fact that the given DocTest (`test`) generated `f`\n        failures out of `t` tried examples.\n        \"\"\"\n        f2, t2 = self._name2ft.get(test.name, (0,0))\n        self._name2ft[test.name] = (f+f2, t+t2)\n        self.failures += f\n        self.tries += t\n\n    __LINECACHE_FILENAME_RE = re.compile(r'<doctest '\n                                         r'(?P<name>[\\w\\.]+)'\n                                         r'\\[(?P<examplenum>\\d+)\\]>$')\n    def __patched_linecache_getlines(self, filename, module_globals=None):\n        m = self.__LINECACHE_FILENAME_RE.match(filename)\n        if m and m.group('name') == self.test.name:\n            example = self.test.examples[int(m.group('examplenum'))]\n            return example.source.splitlines(True)\n        else:\n            return self.save_linecache_getlines(filename, module_globals)\n\n    def run(self, test, compileflags=None, out=None, clear_globs=True):\n        \"\"\"\n        Run the examples in `test`, and display the results using the\n        writer function `out`.\n\n        The examples are run in the namespace `test.globs`.  If\n        `clear_globs` is true (the default), then this namespace will\n        be cleared after the test runs, to help with garbage\n        collection.  If you would like to examine the namespace after\n        the test completes, then use `clear_globs=False`.\n\n        `compileflags` gives the set of flags that should be used by\n        the Python compiler when running the examples.  If not\n        specified, then it will default to the set of future-import\n        flags that apply to `globs`.\n\n        The output of each example is checked using\n        `DocTestRunner.check_output`, and the results are formatted by\n        the `DocTestRunner.report_*` methods.\n        \"\"\"\n        self.test = test\n\n        if compileflags is None:\n            compileflags = _extract_future_flags(test.globs)\n\n        save_stdout = sys.stdout\n        if out is None:\n            out = save_stdout.write\n        sys.stdout = self._fakeout\n\n        # Patch pdb.set_trace to restore sys.stdout during interactive\n        # debugging (so it's not still redirected to self._fakeout).\n        # Note that the interactive output will go to *our*\n        # save_stdout, even if that's not the real sys.stdout; this\n        # allows us to write test cases for the set_trace behavior.\n        save_set_trace = pdb.set_trace\n        self.debugger = _OutputRedirectingPdb(save_stdout)\n        self.debugger.reset()\n        pdb.set_trace = self.debugger.set_trace\n\n        # Patch linecache.getlines, so we can see the example's source\n        # when we're inside the debugger.\n        self.save_linecache_getlines = linecache.getlines\n        linecache.getlines = self.__patched_linecache_getlines\n\n        try:\n            return self.__run(test, compileflags, out)\n        finally:\n            sys.stdout = save_stdout\n            pdb.set_trace = save_set_trace\n            linecache.getlines = self.save_linecache_getlines\n            if clear_globs:\n                test.globs.clear()\n\n    #/////////////////////////////////////////////////////////////////\n    # Summarization\n    #/////////////////////////////////////////////////////////////////\n    def summarize(self, verbose=None):\n        \"\"\"\n        Print a summary of all the test cases that have been run by\n        this DocTestRunner, and return a tuple `(f, t)`, where `f` is\n        the total number of failed examples, and `t` is the total\n        number of tried examples.\n\n        The optional `verbose` argument controls how detailed the\n        summary is.  If the verbosity is not specified, then the\n        DocTestRunner's verbosity is used.\n        \"\"\"\n        if verbose is None:\n            verbose = self._verbose\n        notests = []\n        passed = []\n        failed = []\n        totalt = totalf = 0\n        for x in self._name2ft.items():\n            name, (f, t) = x\n            assert f <= t\n            totalt += t\n            totalf += f\n            if t == 0:\n                notests.append(name)\n            elif f == 0:\n                passed.append( (name, t) )\n            else:\n                failed.append(x)\n        if verbose:\n            if notests:\n                print(\"%d items had no tests:\" % len(notests))\n                notests.sort()\n                for thing in notests:\n                    print(\"    %s\" % thing)\n            if passed:\n                print(\"%d items passed all tests:\" % len(passed))\n                passed.sort()\n                for thing, count in passed:\n                    print(\" %3d tests in %s\" % (count, thing))\n        if failed:\n            print(self.DIVIDER)\n            print(\"%d items had failures:\" % len(failed))\n            failed.sort()\n            for thing, (f, t) in failed:\n                print(\" %3d of %3d in %s\" % (f, t, thing))\n        if verbose:\n            print(\"%d tests in % d items\" % (len(self._name2ft), totalt))\n            print(\"%d passed and %d failed.\" % (totalt - totalf,  totalf))\n        if totalf:\n            print(\"***Test Failed*** %d failures.\" % totalf)\n        elif verbose:\n            print(\"Test passed.\")\n        return totalf, totalt\n\n    #/////////////////////////////////////////////////////////////////\n    # Backward compatibility cruft to maintain doctest.master.\n    #/////////////////////////////////////////////////////////////////\n    def merge(self, other):\n        d = self._name2ft\n        for name, (f, t) in other._name2ft.items():\n            if name in d:\n                print(\"*** DocTestRunner.merge: '\" + name + \"' in both\" \\\n                    \" testers; summing outcomes.\")\n                f2, t2 = d[name]\n                f = f + f2\n                t = t + t2\n            d[name] = f, t\n\nclass OutputChecker:\n    \"\"\"\n    A class used to check the whether the actual output from a doctest\n    example matches the expected output.  `OutputChecker` defines two\n    methods: `check_output`, which compares a given pair of outputs,\n    and returns true if they match; and `output_difference`, which\n    returns a string describing the differences between two outputs.\n    \"\"\"\n    def check_output(self, want, got, optionflags):\n        \"\"\"\n        Return True iff the actual output from an example (`got`)\n        matches the expected output (`want`).  These strings are\n        always considered to match if they are identical; but\n        depending on what option flags the test runner is using,\n        several non-exact match types are also possible.  See the\n        documentation for `TestRunner` for more information about\n        option flags.\n        \"\"\"\n        # Handle the common case first, for efficiency:\n        # if they're string-identical, always return true.\n        if got == want:\n            return True\n\n        # The values True and False replaced 1 and 0 as the return\n        # value for boolean comparisons in Python 2.3.\n        if not (optionflags & DONT_ACCEPT_TRUE_FOR_1):\n            if (got,want) == (\"True\\n\", \"1\\n\"):\n                return True\n            if (got,want) == (\"False\\n\", \"0\\n\"):\n                return True\n\n        # <BLANKLINE> can be used as a special sequence to signify a\n        # blank line, unless the DONT_ACCEPT_BLANKLINE flag is used.\n        if not (optionflags & DONT_ACCEPT_BLANKLINE):\n            # Replace <BLANKLINE> in want with a blank line.\n            want = re.sub('(?m)^%s\\s*?$' % re.escape(BLANKLINE_MARKER),\n                          '', want)\n            # If a line in got contains only spaces, then remove the\n            # spaces.\n            got = re.sub('(?m)^\\s*?$', '', got)\n            if got == want:\n                return True\n\n        # This flag causes doctest to ignore any differences in the\n        # contents of whitespace strings.  Note that this can be used\n        # in conjunction with the ELLIPSIS flag.\n        if optionflags & NORMALIZE_WHITESPACE:\n            got = ' '.join(got.split())\n            want = ' '.join(want.split())\n            if got == want:\n                return True\n\n        # The ELLIPSIS flag says to let the sequence \"...\" in `want`\n        # match any substring in `got`.\n        if optionflags & ELLIPSIS:\n            if _ellipsis_match(want, got):\n                return True\n\n        # We didn't find any match; return false.\n        return False\n\n    # Should we do a fancy diff?\n    def _do_a_fancy_diff(self, want, got, optionflags):\n        # Not unless they asked for a fancy diff.\n        if not optionflags & (REPORT_UDIFF |\n                              REPORT_CDIFF |\n                              REPORT_NDIFF):\n            return False\n\n        # If expected output uses ellipsis, a meaningful fancy diff is\n        # too hard ... or maybe not.  In two real-life failures Tim saw,\n        # a diff was a major help anyway, so this is commented out.\n        # [todo] _ellipsis_match() knows which pieces do and don't match,\n        # and could be the basis for a kick-ass diff in this case.\n        ##if optionflags & ELLIPSIS and ELLIPSIS_MARKER in want:\n        ##    return False\n\n        # ndiff does intraline difference marking, so can be useful even\n        # for 1-line differences.\n        if optionflags & REPORT_NDIFF:\n            return True\n\n        # The other diff types need at least a few lines to be helpful.\n        return want.count('\\n') > 2 and got.count('\\n') > 2\n\n    def output_difference(self, example, got, optionflags):\n        \"\"\"\n        Return a string describing the differences between the\n        expected output for a given example (`example`) and the actual\n        output (`got`).  `optionflags` is the set of option flags used\n        to compare `want` and `got`.\n        \"\"\"\n        want = example.want\n        # If <BLANKLINE>s are being used, then replace blank lines\n        # with <BLANKLINE> in the actual output string.\n        if not (optionflags & DONT_ACCEPT_BLANKLINE):\n            got = re.sub('(?m)^[ ]*(?=\\n)', BLANKLINE_MARKER, got)\n\n        # Check if we should use diff.\n        if self._do_a_fancy_diff(want, got, optionflags):\n            # Split want & got into lines.\n            want_lines = want.splitlines(True)  # True == keep line ends\n            got_lines = got.splitlines(True)\n            # Use difflib to find their differences.\n            if optionflags & REPORT_UDIFF:\n                diff = difflib.unified_diff(want_lines, got_lines, n=2)\n                diff = list(diff)[2:] # strip the diff header\n                kind = 'unified diff with -expected +actual'\n            elif optionflags & REPORT_CDIFF:\n                diff = difflib.context_diff(want_lines, got_lines, n=2)\n                diff = list(diff)[2:] # strip the diff header\n                kind = 'context diff with expected followed by actual'\n            elif optionflags & REPORT_NDIFF:\n                engine = difflib.Differ(charjunk=difflib.IS_CHARACTER_JUNK)\n                diff = list(engine.compare(want_lines, got_lines))\n                kind = 'ndiff with -expected +actual'\n            else:\n                assert 0, 'Bad diff option'\n            # Remove trailing whitespace on diff output.\n            diff = [line.rstrip() + '\\n' for line in diff]\n            return 'Differences (%s):\\n' % kind + _indent(''.join(diff))\n\n        # If we're not using diff, then simply list the expected\n        # output followed by the actual output.\n        if want and got:\n            return 'Expected:\\n%sGot:\\n%s' % (_indent(want), _indent(got))\n        elif want:\n            return 'Expected:\\n%sGot nothing\\n' % _indent(want)\n        elif got:\n            return 'Expected nothing\\nGot:\\n%s' % _indent(got)\n        else:\n            return 'Expected nothing\\nGot nothing\\n'\n\nclass DocTestFailure(Exception):\n    \"\"\"A DocTest example has failed in debugging mode.\n\n    The exception instance has variables:\n\n    - test: the DocTest object being run\n\n    - example: the Example object that failed\n\n    - got: the actual output\n    \"\"\"\n    def __init__(self, test, example, got):\n        self.test = test\n        self.example = example\n        self.got = got\n\n    def __str__(self):\n        return str(self.test)\n\nclass UnexpectedException(Exception):\n    \"\"\"A DocTest example has encountered an unexpected exception\n\n    The exception instance has variables:\n\n    - test: the DocTest object being run\n\n    - example: the Example object that failed\n\n    - exc_info: the exception info\n    \"\"\"\n    def __init__(self, test, example, exc_info):\n        self.test = test\n        self.example = example\n        self.exc_info = exc_info\n\n    def __str__(self):\n        return str(self.test)\n\nclass DebugRunner(DocTestRunner):\n    r\"\"\"Run doc tests but raise an exception as soon as there is a failure.\n\n       If an unexpected exception occurs, an UnexpectedException is raised.\n       It contains the test, the example, and the original exception:\n\n         >>> runner = DebugRunner(verbose=False)\n         >>> test = DocTestParser().get_doctest('>>> raise KeyError\\n42',\n         ...                                    {}, 'foo', 'foo.py', 0)\n         >>> try:\n         ...     runner.run(test)\n         ... except UnexpectedException as e:\n         ...     failure = e\n\n         >>> failure.test is test\n         True\n\n         >>> failure.example.want\n         '42\\n'\n\n         >>> exc_info = failure.exc_info\n         >>> raise exc_info[0], exc_info[1], exc_info[2]\n         Traceback (most recent call last):\n         ...\n         KeyError\n\n       We wrap the original exception to give the calling application\n       access to the test and example information.\n\n       If the output doesn't match, then a DocTestFailure is raised:\n\n         >>> test = DocTestParser().get_doctest('''\n         ...      >>> x = 1\n         ...      >>> x\n         ...      2\n         ...      ''', {}, 'foo', 'foo.py', 0)\n\n         >>> try:\n         ...    runner.run(test)\n         ... except DocTestFailure as e:\n         ...    failure = e\n\n       DocTestFailure objects provide access to the test:\n\n         >>> failure.test is test\n         True\n\n       As well as to the example:\n\n         >>> failure.example.want\n         '2\\n'\n\n       and the actual output:\n\n         >>> failure.got\n         '1\\n'\n\n       If a failure or error occurs, the globals are left intact:\n\n         >>> del test.globs['__builtins__']\n         >>> test.globs\n         {'x': 1}\n\n         >>> test = DocTestParser().get_doctest('''\n         ...      >>> x = 2\n         ...      >>> raise KeyError\n         ...      ''', {}, 'foo', 'foo.py', 0)\n\n         >>> runner.run(test)\n         Traceback (most recent call last):\n         ...\n         UnexpectedException: <DocTest foo from foo.py:0 (2 examples)>\n\n         >>> del test.globs['__builtins__']\n         >>> test.globs\n         {'x': 2}\n\n       But the globals are cleared if there is no error:\n\n         >>> test = DocTestParser().get_doctest('''\n         ...      >>> x = 2\n         ...      ''', {}, 'foo', 'foo.py', 0)\n\n         >>> runner.run(test)\n         (0, 1)\n\n         >>> test.globs\n         {}\n\n       \"\"\"\n\n    def run(self, test, compileflags=None, out=None, clear_globs=True):\n        r = DocTestRunner.run(self, test, compileflags, out, False)\n        if clear_globs:\n            test.globs.clear()\n        return r\n\n    def report_unexpected_exception(self, out, test, example, exc_info):\n        raise UnexpectedException(test, example, exc_info)\n\n    def report_failure(self, out, test, example, got):\n        raise DocTestFailure(test, example, got)\n\n######################################################################\n## 6. Test Functions\n######################################################################\n# These should be backwards compatible.\n\n# For backward compatibility, a global instance of a DocTestRunner\n# class, updated by testmod.\nmaster = None\n\ndef testmod(m=None, name=None, globs=None, verbose=None,\n            report=True, optionflags=0, extraglobs=None,\n            raise_on_error=False, exclude_empty=False):\n    \"\"\"m=None, name=None, globs=None, verbose=None, report=True,\n       optionflags=0, extraglobs=None, raise_on_error=False,\n       exclude_empty=False\n\n    Test examples in docstrings in functions and classes reachable\n    from module m (or the current module if m is not supplied), starting\n    with m.__doc__.\n\n    Also test examples reachable from dict m.__test__ if it exists and is\n    not None.  m.__test__ maps names to functions, classes and strings;\n    function and class docstrings are tested even if the name is private;\n    strings are tested directly, as if they were docstrings.\n\n    Return (#failures, #tests).\n\n    See doctest.__doc__ for an overview.\n\n    Optional keyword arg \"name\" gives the name of the module; by default\n    use m.__name__.\n\n    Optional keyword arg \"globs\" gives a dict to be used as the globals\n    when executing examples; by default, use m.__dict__.  A copy of this\n    dict is actually used for each docstring, so that each docstring's\n    examples start with a clean slate.\n\n    Optional keyword arg \"extraglobs\" gives a dictionary that should be\n    merged into the globals that are used to execute examples.  By\n    default, no extra globals are used.  This is new in 2.4.\n\n    Optional keyword arg \"verbose\" prints lots of stuff if true, prints\n    only failures if false; by default, it's true iff \"-v\" is in sys.argv.\n\n    Optional keyword arg \"report\" prints a summary at the end when true,\n    else prints nothing at the end.  In verbose mode, the summary is\n    detailed, else very brief (in fact, empty if all tests passed).\n\n    Optional keyword arg \"optionflags\" or's together module constants,\n    and defaults to 0.  This is new in 2.3.  Possible values (see the\n    docs for details):\n\n        DONT_ACCEPT_TRUE_FOR_1\n        DONT_ACCEPT_BLANKLINE\n        NORMALIZE_WHITESPACE\n        ELLIPSIS\n        SKIP\n        IGNORE_EXCEPTION_DETAIL\n        REPORT_UDIFF\n        REPORT_CDIFF\n        REPORT_NDIFF\n        REPORT_ONLY_FIRST_FAILURE\n\n    Optional keyword arg \"raise_on_error\" raises an exception on the\n    first unexpected exception or failure. This allows failures to be\n    post-mortem debugged.\n\n    Advanced tomfoolery:  testmod runs methods of a local instance of\n    class doctest.Tester, then merges the results into (or creates)\n    global Tester instance doctest.master.  Methods of doctest.master\n    can be called directly too, if you want to do something unusual.\n    Passing report=0 to testmod is especially useful then, to delay\n    displaying a summary.  Invoke doctest.master.summarize(verbose)\n    when you're done fiddling.\n    \"\"\"\n    global master\n\n    # If no module was given, then use __main__.\n    if m is None:\n        # DWA - m will still be None if this wasn't invoked from the command\n        # line, in which case the following TypeError is about as good an error\n        # as we should expect\n        m = sys.modules.get('__main__')\n\n    # Check that we were actually given a module.\n    if not inspect.ismodule(m):\n        raise TypeError(\"testmod: module required; %r\" % (m,))\n\n    # If no name was given, then use the module's name.\n    if name is None:\n        name = m.__name__\n\n    # Find, parse, and run all tests in the given module.\n    finder = DocTestFinder(exclude_empty=exclude_empty)\n\n    if raise_on_error:\n        runner = DebugRunner(verbose=verbose, optionflags=optionflags)\n    else:\n        runner = DocTestRunner(verbose=verbose, optionflags=optionflags)\n\n    for test in finder.find(m, name, globs=globs, extraglobs=extraglobs):\n        runner.run(test)\n\n    if report:\n        runner.summarize()\n\n    if master is None:\n        master = runner\n    else:\n        master.merge(runner)\n\n    return runner.failures, runner.tries\n\ndef testfile(filename, module_relative=True, name=None, package=None,\n             globs=None, verbose=None, report=True, optionflags=0,\n             extraglobs=None, raise_on_error=False, parser=DocTestParser(),\n             encoding=None):\n    \"\"\"\n    Test examples in the given file.  Return (#failures, #tests).\n\n    Optional keyword arg \"module_relative\" specifies how filenames\n    should be interpreted:\n\n      - If \"module_relative\" is True (the default), then \"filename\"\n         specifies a module-relative path.  By default, this path is\n         relative to the calling module's directory; but if the\n         \"package\" argument is specified, then it is relative to that\n         package.  To ensure os-independence, \"filename\" should use\n         \"/\" characters to separate path segments, and should not\n         be an absolute path (i.e., it may not begin with \"/\").\n\n      - If \"module_relative\" is False, then \"filename\" specifies an\n        os-specific path.  The path may be absolute or relative (to\n        the current working directory).\n\n    Optional keyword arg \"name\" gives the name of the test; by default\n    use the file's basename.\n\n    Optional keyword argument \"package\" is a Python package or the\n    name of a Python package whose directory should be used as the\n    base directory for a module relative filename.  If no package is\n    specified, then the calling module's directory is used as the base\n    directory for module relative filenames.  It is an error to\n    specify \"package\" if \"module_relative\" is False.\n\n    Optional keyword arg \"globs\" gives a dict to be used as the globals\n    when executing examples; by default, use {}.  A copy of this dict\n    is actually used for each docstring, so that each docstring's\n    examples start with a clean slate.\n\n    Optional keyword arg \"extraglobs\" gives a dictionary that should be\n    merged into the globals that are used to execute examples.  By\n    default, no extra globals are used.\n\n    Optional keyword arg \"verbose\" prints lots of stuff if true, prints\n    only failures if false; by default, it's true iff \"-v\" is in sys.argv.\n\n    Optional keyword arg \"report\" prints a summary at the end when true,\n    else prints nothing at the end.  In verbose mode, the summary is\n    detailed, else very brief (in fact, empty if all tests passed).\n\n    Optional keyword arg \"optionflags\" or's together module constants,\n    and defaults to 0.  Possible values (see the docs for details):\n\n        DONT_ACCEPT_TRUE_FOR_1\n        DONT_ACCEPT_BLANKLINE\n        NORMALIZE_WHITESPACE\n        ELLIPSIS\n        SKIP\n        IGNORE_EXCEPTION_DETAIL\n        REPORT_UDIFF\n        REPORT_CDIFF\n        REPORT_NDIFF\n        REPORT_ONLY_FIRST_FAILURE\n\n    Optional keyword arg \"raise_on_error\" raises an exception on the\n    first unexpected exception or failure. This allows failures to be\n    post-mortem debugged.\n\n    Optional keyword arg \"parser\" specifies a DocTestParser (or\n    subclass) that should be used to extract tests from the files.\n\n    Optional keyword arg \"encoding\" specifies an encoding that should\n    be used to convert the file to unicode.\n\n    Advanced tomfoolery:  testmod runs methods of a local instance of\n    class doctest.Tester, then merges the results into (or creates)\n    global Tester instance doctest.master.  Methods of doctest.master\n    can be called directly too, if you want to do something unusual.\n    Passing report=0 to testmod is especially useful then, to delay\n    displaying a summary.  Invoke doctest.master.summarize(verbose)\n    when you're done fiddling.\n    \"\"\"\n    global master\n\n    if package and not module_relative:\n        raise ValueError(\"Package may only be specified for module-\"\n                         \"relative paths.\")\n\n    # Relativize the path\n    text, filename = _load_testfile(filename, package, module_relative)\n\n    # If no name was given, then use the file's name.\n    if name is None:\n        name = os.path.basename(filename)\n\n    # Assemble the globals.\n    if globs is None:\n        globs = {}\n    else:\n        globs = globs.copy()\n    if extraglobs is not None:\n        globs.update(extraglobs)\n\n    if raise_on_error:\n        runner = DebugRunner(verbose=verbose, optionflags=optionflags)\n    else:\n        runner = DocTestRunner(verbose=verbose, optionflags=optionflags)\n\n    if encoding is not None:\n        text = text.decode(encoding)\n\n    # Read the file, convert it to a test, and run it.\n    test = parser.get_doctest(text, globs, name, filename, 0)\n    runner.run(test)\n\n    if report:\n        runner.summarize()\n\n    if master is None:\n        master = runner\n    else:\n        master.merge(runner)\n\n    return runner.failures, runner.tries\n\ndef run_docstring_examples(f, globs, verbose=False, name=\"NoName\",\n                           compileflags=None, optionflags=0):\n    \"\"\"\n    Test examples in the given object's docstring (`f`), using `globs`\n    as globals.  Optional argument `name` is used in failure messages.\n    If the optional argument `verbose` is true, then generate output\n    even if there are no failures.\n\n    `compileflags` gives the set of flags that should be used by the\n    Python compiler when running the examples.  If not specified, then\n    it will default to the set of future-import flags that apply to\n    `globs`.\n\n    Optional keyword arg `optionflags` specifies options for the\n    testing and output.  See the documentation for `testmod` for more\n    information.\n    \"\"\"\n    # Find, parse, and run all tests in the given module.\n    finder = DocTestFinder(verbose=verbose, recurse=False)\n    runner = DocTestRunner(verbose=verbose, optionflags=optionflags)\n    for test in finder.find(f, name, globs=globs):\n        runner.run(test, compileflags=compileflags)\n\n######################################################################\n## 7. Tester\n######################################################################\n# This is provided only for backwards compatibility.  It's not\n# actually used in any way.\n\nclass Tester:\n    def __init__(self, mod=None, globs=None, verbose=None, optionflags=0):\n\n        warnings.warn(\"class Tester is deprecated; \"\n                      \"use class doctest.DocTestRunner instead\",\n                      DeprecationWarning, stacklevel=2)\n        if mod is None and globs is None:\n            raise TypeError(\"Tester.__init__: must specify mod or globs\")\n        if mod is not None and not inspect.ismodule(mod):\n            raise TypeError(\"Tester.__init__: mod must be a module; %r\" %\n                            (mod,))\n        if globs is None:\n            globs = mod.__dict__\n        self.globs = globs\n\n        self.verbose = verbose\n        self.optionflags = optionflags\n        self.testfinder = DocTestFinder()\n        self.testrunner = DocTestRunner(verbose=verbose,\n                                        optionflags=optionflags)\n\n    def runstring(self, s, name):\n        test = DocTestParser().get_doctest(s, self.globs, name, None, None)\n        if self.verbose:\n            print(\"Running string %s\" % name)\n        (f,t) = self.testrunner.run(test)\n        if self.verbose:\n            print(\"%s of %s examples failed in string %s\" % (f, t, name))\n        return (f,t)\n\n    def rundoc(self, object, name=None, module=None):\n        f = t = 0\n        tests = self.testfinder.find(object, name, module=module,\n                                     globs=self.globs)\n        for test in tests:\n            (f2, t2) = self.testrunner.run(test)\n            (f,t) = (f+f2, t+t2)\n        return (f,t)\n\n    def rundict(self, d, name, module=None):\n        import new\n        m = new.module(name)\n        m.__dict__.update(d)\n        if module is None:\n            module = False\n        return self.rundoc(m, name, module)\n\n    def run__test__(self, d, name):\n        import new\n        m = new.module(name)\n        m.__test__ = d\n        return self.rundoc(m, name)\n\n    def summarize(self, verbose=None):\n        return self.testrunner.summarize(verbose)\n\n    def merge(self, other):\n        self.testrunner.merge(other.testrunner)\n\n######################################################################\n## 8. Unittest Support\n######################################################################\n\n_unittest_reportflags = 0\n\ndef set_unittest_reportflags(flags):\n    \"\"\"Sets the unittest option flags.\n\n    The old flag is returned so that a runner could restore the old\n    value if it wished to:\n\n      >>> old = _unittest_reportflags\n      >>> set_unittest_reportflags(REPORT_NDIFF |\n      ...                          REPORT_ONLY_FIRST_FAILURE) == old\n      True\n\n      >>> import doctest\n      >>> doctest._unittest_reportflags == (REPORT_NDIFF |\n      ...                                   REPORT_ONLY_FIRST_FAILURE)\n      True\n\n    Only reporting flags can be set:\n\n      >>> set_unittest_reportflags(ELLIPSIS)\n      Traceback (most recent call last):\n      ...\n      ValueError: ('Only reporting flags allowed', 8)\n\n      >>> set_unittest_reportflags(old) == (REPORT_NDIFF |\n      ...                                   REPORT_ONLY_FIRST_FAILURE)\n      True\n    \"\"\"\n    global _unittest_reportflags\n\n    if (flags & REPORTING_FLAGS) != flags:\n        raise ValueError(\"Only reporting flags allowed\", flags)\n    old = _unittest_reportflags\n    _unittest_reportflags = flags\n    return old\n\n\nclass DocTestCase(unittest.TestCase):\n\n    def __init__(self, test, optionflags=0, setUp=None, tearDown=None,\n                 checker=None, runner=DocTestRunner):\n\n        unittest.TestCase.__init__(self)\n        self._dt_optionflags = optionflags\n        self._dt_checker = checker\n        self._dt_test = test\n        self._dt_setUp = setUp\n        self._dt_tearDown = tearDown\n        self._dt_runner = runner\n\n    def setUp(self):\n        test = self._dt_test\n\n        if self._dt_setUp is not None:\n            self._dt_setUp(test)\n\n    def tearDown(self):\n        test = self._dt_test\n\n        if self._dt_tearDown is not None:\n            self._dt_tearDown(test)\n\n        test.globs.clear()\n\n    def runTest(self):\n        test = self._dt_test\n        old = sys.stdout\n        new = StringIO()\n        optionflags = self._dt_optionflags\n\n        if not (optionflags & REPORTING_FLAGS):\n            # The option flags don't include any reporting flags,\n            # so add the default reporting flags\n            optionflags |= _unittest_reportflags\n\n        runner = self._dt_runner(optionflags=optionflags,\n                                 checker=self._dt_checker, verbose=False)\n\n        try:\n            runner.DIVIDER = \"-\"*70\n            failures, tries = runner.run(\n                test, out=new.write, clear_globs=False)\n        finally:\n            sys.stdout = old\n\n        if failures:\n            raise self.failureException(self.format_failure(new.getvalue()))\n\n    def format_failure(self, err):\n        test = self._dt_test\n        if test.lineno is None:\n            lineno = 'unknown line number'\n        else:\n            lineno = '%s' % test.lineno\n        lname = '.'.join(test.name.split('.')[-1:])\n        return ('Failed doctest test for %s\\n'\n                '  File \"%s\", line %s, in %s\\n\\n%s'\n                % (test.name, test.filename, lineno, lname, err)\n                )\n\n    def debug(self):\n        r\"\"\"Run the test case without results and without catching exceptions\n\n           The unit test framework includes a debug method on test cases\n           and test suites to support post-mortem debugging.  The test code\n           is run in such a way that errors are not caught.  This way a\n           caller can catch the errors and initiate post-mortem debugging.\n\n           The DocTestCase provides a debug method that raises\n           UnexpectedException errors if there is an unexepcted\n           exception:\n\n             >>> test = DocTestParser().get_doctest('>>> raise KeyError\\n42',\n             ...                {}, 'foo', 'foo.py', 0)\n             >>> case = DocTestCase(test)\n             >>> try:\n             ...     case.debug()\n             ... except UnexpectedException as e:\n             ...     failure = e\n\n           The UnexpectedException contains the test, the example, and\n           the original exception:\n\n             >>> failure.test is test\n             True\n\n             >>> failure.example.want\n             '42\\n'\n\n             >>> exc_info = failure.exc_info\n             >>> raise exc_info[0], exc_info[1], exc_info[2]\n             Traceback (most recent call last):\n             ...\n             KeyError\n\n           If the output doesn't match, then a DocTestFailure is raised:\n\n             >>> test = DocTestParser().get_doctest('''\n             ...      >>> x = 1\n             ...      >>> x\n             ...      2\n             ...      ''', {}, 'foo', 'foo.py', 0)\n             >>> case = DocTestCase(test)\n\n             >>> try:\n             ...    case.debug()\n             ... except DocTestFailure as e:\n             ...    failure = e\n\n           DocTestFailure objects provide access to the test:\n\n             >>> failure.test is test\n             True\n\n           As well as to the example:\n\n             >>> failure.example.want\n             '2\\n'\n\n           and the actual output:\n\n             >>> failure.got\n             '1\\n'\n\n           \"\"\"\n\n        self.setUp()\n        runner = DebugRunner(optionflags=self._dt_optionflags,\n                             checker=self._dt_checker, verbose=False)\n        runner.run(self._dt_test)\n        self.tearDown()\n\n    def id(self):\n        return self._dt_test.name\n\n    def __repr__(self):\n        name = self._dt_test.name.split('.')\n        return \"%s (%s)\" % (name[-1], '.'.join(name[:-1]))\n\n    __str__ = __repr__\n\n    def shortDescription(self):\n        return \"Doctest: \" + self._dt_test.name\n\ndef DocTestSuite(module=None, globs=None, extraglobs=None, test_finder=None,\n                 test_class=DocTestCase, **options):\n    \"\"\"\n    Convert doctest tests for a module to a unittest test suite.\n\n    This converts each documentation string in a module that\n    contains doctest tests to a unittest test case.  If any of the\n    tests in a doc string fail, then the test case fails.  An exception\n    is raised showing the name of the file containing the test and a\n    (sometimes approximate) line number.\n\n    The `module` argument provides the module to be tested.  The argument\n    can be either a module or a module name.\n\n    If no argument is given, the calling module is used.\n\n    A number of options may be provided as keyword arguments:\n\n    setUp\n      A set-up function.  This is called before running the\n      tests in each file. The setUp function will be passed a DocTest\n      object.  The setUp function can access the test globals as the\n      globs attribute of the test passed.\n\n    tearDown\n      A tear-down function.  This is called after running the\n      tests in each file.  The tearDown function will be passed a DocTest\n      object.  The tearDown function can access the test globals as the\n      globs attribute of the test passed.\n\n    globs\n      A dictionary containing initial global variables for the tests.\n\n    optionflags\n       A set of doctest option flags expressed as an integer.\n    \"\"\"\n\n    if test_finder is None:\n        test_finder = DocTestFinder()\n\n    module = _normalize_module(module)\n    tests = test_finder.find(module, globs=globs, extraglobs=extraglobs)\n    if globs is None:\n        globs = module.__dict__\n    if not tests:\n        # Why do we want to do this? Because it reveals a bug that might\n        # otherwise be hidden.\n        raise ValueError(module, \"has no tests\")\n\n    tests.sort()\n    suite = unittest.TestSuite()\n    for test in tests:\n        if len(test.examples) == 0:\n            continue\n        if not test.filename:\n            filename = module.__file__\n            if filename[-4:] in (\".pyc\", \".pyo\"):\n                filename = filename[:-1]\n            test.filename = filename\n        suite.addTest(test_class(test, **options))\n\n    return suite\n\nclass DocFileCase(DocTestCase):\n\n    def id(self):\n        return '_'.join(self._dt_test.name.split('.'))\n\n    def __repr__(self):\n        return self._dt_test.filename\n    __str__ = __repr__\n\n    def format_failure(self, err):\n        return ('Failed doctest test for %s\\n  File \"%s\", line 0\\n\\n%s'\n                % (self._dt_test.name, self._dt_test.filename, err)\n                )\n\ndef DocFileTest(path, module_relative=True, package=None,\n                globs=None, parser=DocTestParser(),\n                encoding=None, **options):\n    if globs is None:\n        globs = {}\n    else:\n        globs = globs.copy()\n\n    if package and not module_relative:\n        raise ValueError(\"Package may only be specified for module-\"\n                         \"relative paths.\")\n\n    # Relativize the path.\n    doc, path = _load_testfile(path, package, module_relative)\n\n    if \"__file__\" not in globs:\n        globs[\"__file__\"] = path\n\n    # Find the file and read it.\n    name = os.path.basename(path)\n\n    # If an encoding is specified, use it to convert the file to unicode\n    if encoding is not None:\n        doc = doc.decode(encoding)\n\n    # Convert it to a test, and wrap it in a DocFileCase.\n    test = parser.get_doctest(doc, globs, name, path, 0)\n    return DocFileCase(test, **options)\n\ndef DocFileSuite(*paths, **kw):\n    \"\"\"A unittest suite for one or more doctest files.\n\n    The path to each doctest file is given as a string; the\n    interpretation of that string depends on the keyword argument\n    \"module_relative\".\n\n    A number of options may be provided as keyword arguments:\n\n    module_relative\n      If \"module_relative\" is True, then the given file paths are\n      interpreted as os-independent module-relative paths.  By\n      default, these paths are relative to the calling module's\n      directory; but if the \"package\" argument is specified, then\n      they are relative to that package.  To ensure os-independence,\n      \"filename\" should use \"/\" characters to separate path\n      segments, and may not be an absolute path (i.e., it may not\n      begin with \"/\").\n\n      If \"module_relative\" is False, then the given file paths are\n      interpreted as os-specific paths.  These paths may be absolute\n      or relative (to the current working directory).\n\n    package\n      A Python package or the name of a Python package whose directory\n      should be used as the base directory for module relative paths.\n      If \"package\" is not specified, then the calling module's\n      directory is used as the base directory for module relative\n      filenames.  It is an error to specify \"package\" if\n      \"module_relative\" is False.\n\n    setUp\n      A set-up function.  This is called before running the\n      tests in each file. The setUp function will be passed a DocTest\n      object.  The setUp function can access the test globals as the\n      globs attribute of the test passed.\n\n    tearDown\n      A tear-down function.  This is called after running the\n      tests in each file.  The tearDown function will be passed a DocTest\n      object.  The tearDown function can access the test globals as the\n      globs attribute of the test passed.\n\n    globs\n      A dictionary containing initial global variables for the tests.\n\n    optionflags\n      A set of doctest option flags expressed as an integer.\n\n    parser\n      A DocTestParser (or subclass) that should be used to extract\n      tests from the files.\n\n    encoding\n      An encoding that will be used to convert the files to unicode.\n    \"\"\"\n    suite = unittest.TestSuite()\n\n    # We do this here so that _normalize_module is called at the right\n    # level.  If it were called in DocFileTest, then this function\n    # would be the caller and we might guess the package incorrectly.\n    if kw.get('module_relative', True):\n        kw['package'] = _normalize_module(kw.get('package'))\n\n    for path in paths:\n        suite.addTest(DocFileTest(path, **kw))\n\n    return suite\n\n######################################################################\n## 9. Debugging Support\n######################################################################\n\ndef script_from_examples(s):\n    r\"\"\"Extract script from text with examples.\n\n       Converts text with examples to a Python script.  Example input is\n       converted to regular code.  Example output and all other words\n       are converted to comments:\n\n       >>> text = '''\n       ...       Here are examples of simple math.\n       ...\n       ...           Python has super accurate integer addition\n       ...\n       ...           >>> 2 + 2\n       ...           5\n       ...\n       ...           And very friendly error messages:\n       ...\n       ...           >>> 1/0\n       ...           To Infinity\n       ...           And\n       ...           Beyond\n       ...\n       ...           You can use logic if you want:\n       ...\n       ...           >>> if 0:\n       ...           ...    blah\n       ...           ...    blah\n       ...           ...\n       ...\n       ...           Ho hum\n       ...           '''\n\n       >>> print(script_from_examples(text))\n       # Here are examples of simple math.\n       #\n       #     Python has super accurate integer addition\n       #\n       2 + 2\n       # Expected:\n       ## 5\n       #\n       #     And very friendly error messages:\n       #\n       1/0\n       # Expected:\n       ## To Infinity\n       ## And\n       ## Beyond\n       #\n       #     You can use logic if you want:\n       #\n       if 0:\n          blah\n          blah\n       #\n       #     Ho hum\n       \"\"\"\n    output = []\n    for piece in DocTestParser().parse(s):\n        if isinstance(piece, Example):\n            # Add the example's source code (strip trailing NL)\n            output.append(piece.source[:-1])\n            # Add the expected output:\n            want = piece.want\n            if want:\n                output.append('# Expected:')\n                output += ['## '+l for l in want.split('\\n')[:-1]]\n        else:\n            # Add non-example text.\n            output += [_comment_line(l)\n                       for l in piece.split('\\n')[:-1]]\n\n    # Trim junk on both ends.\n    while output and output[-1] == '#':\n        output.pop()\n    while output and output[0] == '#':\n        output.pop(0)\n    # Combine the output, and return it.\n    return '\\n'.join(output)\n\ndef testsource(module, name):\n    \"\"\"Extract the test sources from a doctest docstring as a script.\n\n    Provide the module (or dotted name of the module) containing the\n    test to be debugged and the name (within the module) of the object\n    with the doc string with tests to be debugged.\n    \"\"\"\n    module = _normalize_module(module)\n    tests = DocTestFinder().find(module)\n    test = [t for t in tests if t.name == name]\n    if not test:\n        raise ValueError(name, \"not found in tests\")\n    test = test[0]\n    testsrc = script_from_examples(test.docstring)\n    return testsrc\n\ndef debug_src(src, pm=False, globs=None):\n    \"\"\"Debug a single doctest docstring, in argument `src`'\"\"\"\n    testsrc = script_from_examples(src)\n    debug_script(testsrc, pm, globs)\n\ndef debug_script(src, pm=False, globs=None):\n    \"Debug a test script.  `src` is the script, as a string.\"\n    import pdb\n\n    # Note that tempfile.NameTemporaryFile() cannot be used.  As the\n    # docs say, a file so created cannot be opened by name a second time\n    # on modern Windows boxes, and execfile() needs to open it.\n    srcfilename = tempfile.mktemp(\".py\", \"doctestdebug\")\n    with open(srcfilename, 'w') as fp:\n        fp.write(src)\n\n    try:\n        if globs:\n            globs = globs.copy()\n        else:\n            globs = {}\n\n        if pm:\n            try:\n                execfile(srcfilename, globs, globs)\n            except:\n                print(sys.exc_info()[1])\n                pdb.post_mortem(sys.exc_info()[2])\n        else:\n            # Note that %r is vital here.  '%s' instead can, e.g., cause\n            # backslashes to get treated as metacharacters on Windows.\n            pdb.run(\"execfile(%r)\" % srcfilename, globs, globs)\n\n    finally:\n        os.remove(srcfilename)\n\ndef debug(module, name, pm=False):\n    \"\"\"Debug a single doctest docstring.\n\n    Provide the module (or dotted name of the module) containing the\n    test to be debugged and the name (within the module) of the object\n    with the docstring with tests to be debugged.\n    \"\"\"\n    module = _normalize_module(module)\n    testsrc = testsource(module, name)\n    debug_script(testsrc, pm, module.__dict__)\n\n######################################################################\n## 10. Example Usage\n######################################################################\nclass _TestClass:\n    \"\"\"\n    A pointless class, for sanity-checking of docstring testing.\n\n    Methods:\n        square()\n        get()\n\n    >>> _TestClass(13).get() + _TestClass(-12).get()\n    1\n    >>> hex(_TestClass(13).square().get())\n    '0xa9'\n    \"\"\"\n\n    def __init__(self, val):\n        \"\"\"val -> _TestClass object with associated value val.\n\n        >>> t = _TestClass(123)\n        >>> print(t.get())\n        123\n        \"\"\"\n\n        self.val = val\n\n    def square(self):\n        \"\"\"square() -> square TestClass's associated value\n\n        >>> _TestClass(13).square().get()\n        169\n        \"\"\"\n\n        self.val = self.val ** 2\n        return self\n\n    def get(self):\n        \"\"\"get() -> return TestClass's associated value.\n\n        >>> x = _TestClass(-42)\n        >>> print(x.get())\n        -42\n        \"\"\"\n\n        return self.val\n\n__test__ = {\"_TestClass\": _TestClass,\n            \"string\": r\"\"\"\n                      Example of a string object, searched as-is.\n                      >>> x = 1; y = 2\n                      >>> x + y, x * y\n                      (3, 2)\n                      \"\"\",\n\n            \"bool-int equivalence\": r\"\"\"\n                                    In 2.2, boolean expressions displayed\n                                    0 or 1.  By default, we still accept\n                                    them.  This can be disabled by passing\n                                    DONT_ACCEPT_TRUE_FOR_1 to the new\n                                    optionflags argument.\n                                    >>> 4 == 4\n                                    1\n                                    >>> 4 == 4\n                                    True\n                                    >>> 4 > 4\n                                    0\n                                    >>> 4 > 4\n                                    False\n                                    \"\"\",\n\n            \"blank lines\": r\"\"\"\n                Blank lines can be marked with <BLANKLINE>:\n                    >>> print('foo\\n\\nbar\\n')\n                    foo\n                    <BLANKLINE>\n                    bar\n                    <BLANKLINE>\n            \"\"\",\n\n            \"ellipsis\": r\"\"\"\n                If the ellipsis flag is used, then '...' can be used to\n                elide substrings in the desired output:\n                    >>> print(range(1000)) #doctest: +ELLIPSIS\n                    [0, 1, 2, ..., 999]\n            \"\"\",\n\n            \"whitespace normalization\": r\"\"\"\n                If the whitespace normalization flag is used, then\n                differences in whitespace are ignored.\n                    >>> print(list(xrange(30))) #doctest: +NORMALIZE_WHITESPACE\n                    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,\n                     15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,\n                     27, 28, 29]\n            \"\"\",\n           }\n\ndef _test():\n    r = unittest.TextTestRunner()\n    r.run(DocTestSuite())\n\nif __name__ == \"__main__\":\n    _test()\n"
  },
  {
    "path": "Django-1.5.1/django/test/client.py",
    "content": "from __future__ import unicode_literals\n\nimport sys\nimport os\nimport re\nimport mimetypes\nfrom copy import copy\nfrom io import BytesIO\ntry:\n    from urllib.parse import unquote, urlparse, urlsplit\nexcept ImportError:     # Python 2\n    from urllib import unquote\n    from urlparse import urlparse, urlsplit\n\nfrom django.conf import settings\nfrom django.contrib.auth import authenticate, login\nfrom django.core.handlers.base import BaseHandler\nfrom django.core.handlers.wsgi import WSGIRequest\nfrom django.core.signals import (request_started, request_finished,\n    got_request_exception)\nfrom django.db import close_connection\nfrom django.http import SimpleCookie, HttpRequest, QueryDict\nfrom django.template import TemplateDoesNotExist\nfrom django.test import signals\nfrom django.utils.functional import curry\nfrom django.utils.encoding import force_bytes, force_str\nfrom django.utils.http import urlencode\nfrom django.utils.importlib import import_module\nfrom django.utils.itercompat import is_iterable\nfrom django.utils import six\nfrom django.test.utils import ContextList\n\n__all__ = ('Client', 'RequestFactory', 'encode_file', 'encode_multipart')\n\n\nBOUNDARY = 'BoUnDaRyStRiNg'\nMULTIPART_CONTENT = 'multipart/form-data; boundary=%s' % BOUNDARY\nCONTENT_TYPE_RE = re.compile('.*; charset=([\\w\\d-]+);?')\n\nclass FakePayload(object):\n    \"\"\"\n    A wrapper around BytesIO that restricts what can be read since data from\n    the network can't be seeked and cannot be read outside of its content\n    length. This makes sure that views can't do anything under the test client\n    that wouldn't work in Real Life.\n    \"\"\"\n    def __init__(self, content=None):\n        self.__content = BytesIO()\n        self.__len = 0\n        self.read_started = False\n        if content is not None:\n            self.write(content)\n\n    def __len__(self):\n        return self.__len\n\n    def read(self, num_bytes=None):\n        if not self.read_started:\n            self.__content.seek(0)\n            self.read_started = True\n        if num_bytes is None:\n            num_bytes = self.__len or 0\n        assert self.__len >= num_bytes, \"Cannot read more than the available bytes from the HTTP incoming data.\"\n        content = self.__content.read(num_bytes)\n        self.__len -= num_bytes\n        return content\n\n    def write(self, content):\n        if self.read_started:\n            raise ValueError(\"Unable to write a payload after he's been read\")\n        content = force_bytes(content)\n        self.__content.write(content)\n        self.__len += len(content)\n\n\ndef closing_iterator_wrapper(iterable, close):\n    try:\n        for item in iterable:\n            yield item\n    finally:\n        request_finished.disconnect(close_connection)\n        close()                                 # will fire request_finished\n        request_finished.connect(close_connection)\n\n\nclass ClientHandler(BaseHandler):\n    \"\"\"\n    A HTTP Handler that can be used for testing purposes.\n    Uses the WSGI interface to compose requests, but returns\n    the raw HttpResponse object\n    \"\"\"\n    def __init__(self, enforce_csrf_checks=True, *args, **kwargs):\n        self.enforce_csrf_checks = enforce_csrf_checks\n        super(ClientHandler, self).__init__(*args, **kwargs)\n\n    def __call__(self, environ):\n        from django.conf import settings\n\n        # Set up middleware if needed. We couldn't do this earlier, because\n        # settings weren't available.\n        if self._request_middleware is None:\n            self.load_middleware()\n\n        request_started.send(sender=self.__class__)\n        request = WSGIRequest(environ)\n        # sneaky little hack so that we can easily get round\n        # CsrfViewMiddleware.  This makes life easier, and is probably\n        # required for backwards compatibility with external tests against\n        # admin views.\n        request._dont_enforce_csrf_checks = not self.enforce_csrf_checks\n        response = self.get_response(request)\n        # We're emulating a WSGI server; we must call the close method\n        # on completion.\n        if response.streaming:\n            response.streaming_content = closing_iterator_wrapper(\n                response.streaming_content, response.close)\n        else:\n            request_finished.disconnect(close_connection)\n            response.close()                    # will fire request_finished\n            request_finished.connect(close_connection)\n\n        return response\n\ndef store_rendered_templates(store, signal, sender, template, context, **kwargs):\n    \"\"\"\n    Stores templates and contexts that are rendered.\n\n    The context is copied so that it is an accurate representation at the time\n    of rendering.\n    \"\"\"\n    store.setdefault('templates', []).append(template)\n    store.setdefault('context', ContextList()).append(copy(context))\n\ndef encode_multipart(boundary, data):\n    \"\"\"\n    Encodes multipart POST data from a dictionary of form values.\n\n    The key will be used as the form data name; the value will be transmitted\n    as content. If the value is a file, the contents of the file will be sent\n    as an application/octet-stream; otherwise, str(value) will be sent.\n    \"\"\"\n    lines = []\n    to_bytes = lambda s: force_bytes(s, settings.DEFAULT_CHARSET)\n\n    # Not by any means perfect, but good enough for our purposes.\n    is_file = lambda thing: hasattr(thing, \"read\") and callable(thing.read)\n\n    # Each bit of the multipart form data could be either a form value or a\n    # file, or a *list* of form values and/or files. Remember that HTTP field\n    # names can be duplicated!\n    for (key, value) in data.items():\n        if is_file(value):\n            lines.extend(encode_file(boundary, key, value))\n        elif not isinstance(value, six.string_types) and is_iterable(value):\n            for item in value:\n                if is_file(item):\n                    lines.extend(encode_file(boundary, key, item))\n                else:\n                    lines.extend([to_bytes(val) for val in [\n                        '--%s' % boundary,\n                        'Content-Disposition: form-data; name=\"%s\"' % key,\n                        '',\n                        item\n                    ]])\n        else:\n            lines.extend([to_bytes(val) for val in [\n                '--%s' % boundary,\n                'Content-Disposition: form-data; name=\"%s\"' % key,\n                '',\n                value\n            ]])\n\n    lines.extend([\n        to_bytes('--%s--' % boundary),\n        b'',\n    ])\n    return b'\\r\\n'.join(lines)\n\ndef encode_file(boundary, key, file):\n    to_bytes = lambda s: force_bytes(s, settings.DEFAULT_CHARSET)\n    content_type = mimetypes.guess_type(file.name)[0]\n    if content_type is None:\n        content_type = 'application/octet-stream'\n    return [\n        to_bytes('--%s' % boundary),\n        to_bytes('Content-Disposition: form-data; name=\"%s\"; filename=\"%s\"' \\\n            % (key, os.path.basename(file.name))),\n        to_bytes('Content-Type: %s' % content_type),\n        b'',\n        file.read()\n    ]\n\n\nclass RequestFactory(object):\n    \"\"\"\n    Class that lets you create mock Request objects for use in testing.\n\n    Usage:\n\n    rf = RequestFactory()\n    get_request = rf.get('/hello/')\n    post_request = rf.post('/submit/', {'foo': 'bar'})\n\n    Once you have a request object you can pass it to any view function,\n    just as if that view had been hooked up using a URLconf.\n    \"\"\"\n    def __init__(self, **defaults):\n        self.defaults = defaults\n        self.cookies = SimpleCookie()\n        self.errors = BytesIO()\n\n    def _base_environ(self, **request):\n        \"\"\"\n        The base environment for a request.\n        \"\"\"\n        # This is a minimal valid WSGI environ dictionary, plus:\n        # - HTTP_COOKIE: for cookie support,\n        # - REMOTE_ADDR: often useful, see #8551.\n        # See http://www.python.org/dev/peps/pep-3333/#environ-variables\n        environ = {\n            'HTTP_COOKIE':       self.cookies.output(header='', sep='; '),\n            'PATH_INFO':         str('/'),\n            'REMOTE_ADDR':       str('127.0.0.1'),\n            'REQUEST_METHOD':    str('GET'),\n            'SCRIPT_NAME':       str(''),\n            'SERVER_NAME':       str('testserver'),\n            'SERVER_PORT':       str('80'),\n            'SERVER_PROTOCOL':   str('HTTP/1.1'),\n            'wsgi.version':      (1, 0),\n            'wsgi.url_scheme':   str('http'),\n            'wsgi.input':        FakePayload(b''),\n            'wsgi.errors':       self.errors,\n            'wsgi.multiprocess': True,\n            'wsgi.multithread':  False,\n            'wsgi.run_once':     False,\n        }\n        environ.update(self.defaults)\n        environ.update(request)\n        return environ\n\n    def request(self, **request):\n        \"Construct a generic request object.\"\n        return WSGIRequest(self._base_environ(**request))\n\n    def _encode_data(self, data, content_type, ):\n        if content_type is MULTIPART_CONTENT:\n            return encode_multipart(BOUNDARY, data)\n        else:\n            # Encode the content so that the byte representation is correct.\n            match = CONTENT_TYPE_RE.match(content_type)\n            if match:\n                charset = match.group(1)\n            else:\n                charset = settings.DEFAULT_CHARSET\n            return force_bytes(data, encoding=charset)\n\n    def _get_path(self, parsed):\n        path = force_str(parsed[2])\n        # If there are parameters, add them\n        if parsed[3]:\n            path += str(\";\") + force_str(parsed[3])\n        path = unquote(path)\n        # WSGI requires latin-1 encoded strings. See get_path_info().\n        if six.PY3:\n            path = path.encode('utf-8').decode('iso-8859-1')\n        return path\n\n    def get(self, path, data={}, **extra):\n        \"Construct a GET request.\"\n\n        parsed = urlparse(path)\n        r = {\n            'CONTENT_TYPE':    str('text/html; charset=utf-8'),\n            'PATH_INFO':       self._get_path(parsed),\n            'QUERY_STRING':    urlencode(data, doseq=True) or force_str(parsed[4]),\n            'REQUEST_METHOD':  str('GET'),\n        }\n        r.update(extra)\n        return self.request(**r)\n\n    def post(self, path, data={}, content_type=MULTIPART_CONTENT,\n             **extra):\n        \"Construct a POST request.\"\n\n        post_data = self._encode_data(data, content_type)\n\n        parsed = urlparse(path)\n        r = {\n            'CONTENT_LENGTH': len(post_data),\n            'CONTENT_TYPE':   content_type,\n            'PATH_INFO':      self._get_path(parsed),\n            'QUERY_STRING':   force_str(parsed[4]),\n            'REQUEST_METHOD': str('POST'),\n            'wsgi.input':     FakePayload(post_data),\n        }\n        r.update(extra)\n        return self.request(**r)\n\n    def head(self, path, data={}, **extra):\n        \"Construct a HEAD request.\"\n\n        parsed = urlparse(path)\n        r = {\n            'CONTENT_TYPE':    str('text/html; charset=utf-8'),\n            'PATH_INFO':       self._get_path(parsed),\n            'QUERY_STRING':    urlencode(data, doseq=True) or force_str(parsed[4]),\n            'REQUEST_METHOD':  str('HEAD'),\n        }\n        r.update(extra)\n        return self.request(**r)\n\n    def options(self, path, data='', content_type='application/octet-stream',\n            **extra):\n        \"Construct an OPTIONS request.\"\n        return self.generic('OPTIONS', path, data, content_type, **extra)\n\n    def put(self, path, data='', content_type='application/octet-stream',\n            **extra):\n        \"Construct a PUT request.\"\n        return self.generic('PUT', path, data, content_type, **extra)\n\n    def delete(self, path, data='', content_type='application/octet-stream',\n            **extra):\n        \"Construct a DELETE request.\"\n        return self.generic('DELETE', path, data, content_type, **extra)\n\n    def generic(self, method, path,\n                data='', content_type='application/octet-stream', **extra):\n        parsed = urlparse(path)\n        data = force_bytes(data, settings.DEFAULT_CHARSET)\n        r = {\n            'PATH_INFO':      self._get_path(parsed),\n            'QUERY_STRING':   force_str(parsed[4]),\n            'REQUEST_METHOD': str(method),\n        }\n        if data:\n            r.update({\n                'CONTENT_LENGTH': len(data),\n                'CONTENT_TYPE':   str(content_type),\n                'wsgi.input':     FakePayload(data),\n            })\n        r.update(extra)\n        return self.request(**r)\n\nclass Client(RequestFactory):\n    \"\"\"\n    A class that can act as a client for testing purposes.\n\n    It allows the user to compose GET and POST requests, and\n    obtain the response that the server gave to those requests.\n    The server Response objects are annotated with the details\n    of the contexts and templates that were rendered during the\n    process of serving the request.\n\n    Client objects are stateful - they will retain cookie (and\n    thus session) details for the lifetime of the Client instance.\n\n    This is not intended as a replacement for Twill/Selenium or\n    the like - it is here to allow testing against the\n    contexts and templates produced by a view, rather than the\n    HTML rendered to the end-user.\n    \"\"\"\n    def __init__(self, enforce_csrf_checks=False, **defaults):\n        super(Client, self).__init__(**defaults)\n        self.handler = ClientHandler(enforce_csrf_checks)\n        self.exc_info = None\n\n    def store_exc_info(self, **kwargs):\n        \"\"\"\n        Stores exceptions when they are generated by a view.\n        \"\"\"\n        self.exc_info = sys.exc_info()\n\n    def _session(self):\n        \"\"\"\n        Obtains the current session variables.\n        \"\"\"\n        if 'django.contrib.sessions' in settings.INSTALLED_APPS:\n            engine = import_module(settings.SESSION_ENGINE)\n            cookie = self.cookies.get(settings.SESSION_COOKIE_NAME, None)\n            if cookie:\n                return engine.SessionStore(cookie.value)\n        return {}\n    session = property(_session)\n\n\n    def request(self, **request):\n        \"\"\"\n        The master request method. Composes the environment dictionary\n        and passes to the handler, returning the result of the handler.\n        Assumes defaults for the query environment, which can be overridden\n        using the arguments to the request.\n        \"\"\"\n        environ = self._base_environ(**request)\n\n        # Curry a data dictionary into an instance of the template renderer\n        # callback function.\n        data = {}\n        on_template_render = curry(store_rendered_templates, data)\n        signals.template_rendered.connect(on_template_render, dispatch_uid=\"template-render\")\n        # Capture exceptions created by the handler.\n        got_request_exception.connect(self.store_exc_info, dispatch_uid=\"request-exception\")\n        try:\n\n            try:\n                response = self.handler(environ)\n            except TemplateDoesNotExist as e:\n                # If the view raises an exception, Django will attempt to show\n                # the 500.html template. If that template is not available,\n                # we should ignore the error in favor of re-raising the\n                # underlying exception that caused the 500 error. Any other\n                # template found to be missing during view error handling\n                # should be reported as-is.\n                if e.args != ('500.html',):\n                    raise\n\n            # Look for a signalled exception, clear the current context\n            # exception data, then re-raise the signalled exception.\n            # Also make sure that the signalled exception is cleared from\n            # the local cache!\n            if self.exc_info:\n                exc_info = self.exc_info\n                self.exc_info = None\n                six.reraise(*exc_info)\n\n            # Save the client and request that stimulated the response.\n            response.client = self\n            response.request = request\n\n            # Add any rendered template detail to the response.\n            response.templates = data.get(\"templates\", [])\n            response.context = data.get(\"context\")\n\n            # Flatten a single context. Not really necessary anymore thanks to\n            # the __getattr__ flattening in ContextList, but has some edge-case\n            # backwards-compatibility implications.\n            if response.context and len(response.context) == 1:\n                response.context = response.context[0]\n\n            # Update persistent cookie data.\n            if response.cookies:\n                self.cookies.update(response.cookies)\n\n            return response\n        finally:\n            signals.template_rendered.disconnect(dispatch_uid=\"template-render\")\n            got_request_exception.disconnect(dispatch_uid=\"request-exception\")\n\n    def get(self, path, data={}, follow=False, **extra):\n        \"\"\"\n        Requests a response from the server using GET.\n        \"\"\"\n        response = super(Client, self).get(path, data=data, **extra)\n        if follow:\n            response = self._handle_redirects(response, **extra)\n        return response\n\n    def post(self, path, data={}, content_type=MULTIPART_CONTENT,\n             follow=False, **extra):\n        \"\"\"\n        Requests a response from the server using POST.\n        \"\"\"\n        response = super(Client, self).post(path, data=data, content_type=content_type, **extra)\n        if follow:\n            response = self._handle_redirects(response, **extra)\n        return response\n\n    def head(self, path, data={}, follow=False, **extra):\n        \"\"\"\n        Request a response from the server using HEAD.\n        \"\"\"\n        response = super(Client, self).head(path, data=data, **extra)\n        if follow:\n            response = self._handle_redirects(response, **extra)\n        return response\n\n    def options(self, path, data='', content_type='application/octet-stream',\n            follow=False, **extra):\n        \"\"\"\n        Request a response from the server using OPTIONS.\n        \"\"\"\n        response = super(Client, self).options(path,\n                data=data, content_type=content_type, **extra)\n        if follow:\n            response = self._handle_redirects(response, **extra)\n        return response\n\n    def put(self, path, data='', content_type='application/octet-stream',\n            follow=False, **extra):\n        \"\"\"\n        Send a resource to the server using PUT.\n        \"\"\"\n        response = super(Client, self).put(path,\n                data=data, content_type=content_type, **extra)\n        if follow:\n            response = self._handle_redirects(response, **extra)\n        return response\n\n    def delete(self, path, data='', content_type='application/octet-stream',\n            follow=False, **extra):\n        \"\"\"\n        Send a DELETE request to the server.\n        \"\"\"\n        response = super(Client, self).delete(path,\n                data=data, content_type=content_type, **extra)\n        if follow:\n            response = self._handle_redirects(response, **extra)\n        return response\n\n    def login(self, **credentials):\n        \"\"\"\n        Sets the Factory to appear as if it has successfully logged into a site.\n\n        Returns True if login is possible; False if the provided credentials\n        are incorrect, or the user is inactive, or if the sessions framework is\n        not available.\n        \"\"\"\n        user = authenticate(**credentials)\n        if user and user.is_active \\\n                and 'django.contrib.sessions' in settings.INSTALLED_APPS:\n            engine = import_module(settings.SESSION_ENGINE)\n\n            # Create a fake request to store login details.\n            request = HttpRequest()\n            if self.session:\n                request.session = self.session\n            else:\n                request.session = engine.SessionStore()\n            login(request, user)\n\n            # Save the session values.\n            request.session.save()\n\n            # Set the cookie to represent the session.\n            session_cookie = settings.SESSION_COOKIE_NAME\n            self.cookies[session_cookie] = request.session.session_key\n            cookie_data = {\n                'max-age': None,\n                'path': '/',\n                'domain': settings.SESSION_COOKIE_DOMAIN,\n                'secure': settings.SESSION_COOKIE_SECURE or None,\n                'expires': None,\n            }\n            self.cookies[session_cookie].update(cookie_data)\n\n            return True\n        else:\n            return False\n\n    def logout(self):\n        \"\"\"\n        Removes the authenticated user's cookies and session object.\n\n        Causes the authenticated user to be logged out.\n        \"\"\"\n        session = import_module(settings.SESSION_ENGINE).SessionStore()\n        session_cookie = self.cookies.get(settings.SESSION_COOKIE_NAME)\n        if session_cookie:\n            session.delete(session_key=session_cookie.value)\n        self.cookies = SimpleCookie()\n\n    def _handle_redirects(self, response, **extra):\n        \"Follows any redirects by requesting responses from the server using GET.\"\n\n        response.redirect_chain = []\n        while response.status_code in (301, 302, 303, 307):\n            url = response['Location']\n            redirect_chain = response.redirect_chain\n            redirect_chain.append((url, response.status_code))\n\n            url = urlsplit(url)\n            if url.scheme:\n                extra['wsgi.url_scheme'] = url.scheme\n            if url.hostname:\n                extra['SERVER_NAME'] = url.hostname\n            if url.port:\n                extra['SERVER_PORT'] = str(url.port)\n\n            response = self.get(url.path, QueryDict(url.query), follow=False, **extra)\n            response.redirect_chain = redirect_chain\n\n            # Prevent loops\n            if response.redirect_chain[-1] in response.redirect_chain[0:-1]:\n                break\n        return response\n"
  },
  {
    "path": "Django-1.5.1/django/test/html.py",
    "content": "\"\"\"\nComparing two html documents.\n\"\"\"\n\nfrom __future__ import unicode_literals\n\nimport re\nfrom django.utils.encoding import force_text\nfrom django.utils.html_parser import HTMLParser, HTMLParseError\nfrom django.utils import six\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\nWHITESPACE = re.compile('\\s+')\n\n\ndef normalize_whitespace(string):\n    return WHITESPACE.sub(' ', string)\n\n\n@python_2_unicode_compatible\nclass Element(object):\n    def __init__(self, name, attributes):\n        self.name = name\n        self.attributes = sorted(attributes)\n        self.children = []\n\n    def append(self, element):\n        if isinstance(element, six.string_types):\n            element = force_text(element)\n            element = normalize_whitespace(element)\n            if self.children:\n                if isinstance(self.children[-1], six.string_types):\n                    self.children[-1] += element\n                    self.children[-1] = normalize_whitespace(self.children[-1])\n                    return\n        elif self.children:\n            # removing last children if it is only whitespace\n            # this can result in incorrect dom representations since\n            # whitespace between inline tags like <span> is significant\n            if isinstance(self.children[-1], six.string_types):\n                if self.children[-1].isspace():\n                    self.children.pop()\n        if element:\n            self.children.append(element)\n\n    def finalize(self):\n        def rstrip_last_element(children):\n            if children:\n                if isinstance(children[-1], six.string_types):\n                    children[-1] = children[-1].rstrip()\n                    if not children[-1]:\n                        children.pop()\n                        children = rstrip_last_element(children)\n            return children\n\n        rstrip_last_element(self.children)\n        for i, child in enumerate(self.children):\n            if isinstance(child, six.string_types):\n                self.children[i] = child.strip()\n            elif hasattr(child, 'finalize'):\n                child.finalize()\n\n    def __eq__(self, element):\n        if not hasattr(element, 'name'):\n            return False\n        if hasattr(element, 'name') and self.name != element.name:\n            return False\n        if len(self.attributes) != len(element.attributes):\n            return False\n        if self.attributes != element.attributes:\n            # attributes without a value is same as attribute with value that\n            # equals the attributes name:\n            # <input checked> == <input checked=\"checked\">\n            for i in range(len(self.attributes)):\n                attr, value = self.attributes[i]\n                other_attr, other_value = element.attributes[i]\n                if value is None:\n                    value = attr\n                if other_value is None:\n                    other_value = other_attr\n                if attr != other_attr or value != other_value:\n                    return False\n        if self.children != element.children:\n            return False\n        return True\n\n    def __hash__(self):\n        return hash((self.name,) + tuple(a for a in self.attributes))\n\n    def __ne__(self, element):\n        return not self.__eq__(element)\n\n    def _count(self, element, count=True):\n        if not isinstance(element, six.string_types):\n            if self == element:\n                return 1\n        i = 0\n        for child in self.children:\n            # child is text content and element is also text content, then\n            # make a simple \"text\" in \"text\"\n            if isinstance(child, six.string_types):\n                if isinstance(element, six.string_types):\n                    if count:\n                        i += child.count(element)\n                    elif element in child:\n                        return 1\n            else:\n                i += child._count(element, count=count)\n                if not count and i:\n                    return i\n        return i\n\n    def __contains__(self, element):\n        return self._count(element, count=False) > 0\n\n    def count(self, element):\n        return self._count(element, count=True)\n\n    def __getitem__(self, key):\n        return self.children[key]\n\n    def __str__(self):\n        output = '<%s' % self.name\n        for key, value in self.attributes:\n            if value:\n                output += ' %s=\"%s\"' % (key, value)\n            else:\n                output += ' %s' % key\n        if self.children:\n            output += '>\\n'\n            output += ''.join(six.text_type(c) for c in self.children)\n            output += '\\n</%s>' % self.name\n        else:\n            output += ' />'\n        return output\n\n    def __repr__(self):\n        return six.text_type(self)\n\n\n@python_2_unicode_compatible\nclass RootElement(Element):\n    def __init__(self):\n        super(RootElement, self).__init__(None, ())\n\n    def __str__(self):\n        return ''.join(six.text_type(c) for c in self.children)\n\n\nclass Parser(HTMLParser):\n    SELF_CLOSING_TAGS = ('br' , 'hr', 'input', 'img', 'meta', 'spacer',\n        'link', 'frame', 'base', 'col')\n\n    def __init__(self):\n        HTMLParser.__init__(self)\n        self.root = RootElement()\n        self.open_tags = []\n        self.element_positions = {}\n\n    def error(self, msg):\n        raise HTMLParseError(msg, self.getpos())\n\n    def format_position(self, position=None, element=None):\n        if not position and element:\n            position = self.element_positions[element]\n        if position is None:\n            position = self.getpos()\n        if hasattr(position, 'lineno'):\n            position = position.lineno, position.offset\n        return 'Line %d, Column %d' % position\n\n    @property\n    def current(self):\n        if self.open_tags:\n            return self.open_tags[-1]\n        else:\n            return self.root\n\n    def handle_startendtag(self, tag, attrs):\n        self.handle_starttag(tag, attrs)\n        if tag not in self.SELF_CLOSING_TAGS:\n            self.handle_endtag(tag)\n\n    def handle_starttag(self, tag, attrs):\n        # Special case handling of 'class' attribute, so that comparisons of DOM\n        # instances are not sensitive to ordering of classes.\n        attrs = [\n            (name, \" \".join(sorted(value.split(\" \"))))\n            if name == \"class\"\n            else (name, value)\n            for name, value in attrs\n            ]\n        element = Element(tag, attrs)\n        self.current.append(element)\n        if tag not in self.SELF_CLOSING_TAGS:\n            self.open_tags.append(element)\n        self.element_positions[element] = self.getpos()\n\n    def handle_endtag(self, tag):\n        if not self.open_tags:\n            self.error(\"Unexpected end tag `%s` (%s)\" % (\n                tag, self.format_position()))\n        element = self.open_tags.pop()\n        while element.name != tag:\n            if not self.open_tags:\n                self.error(\"Unexpected end tag `%s` (%s)\" % (\n                    tag, self.format_position()))\n            element = self.open_tags.pop()\n\n    def handle_data(self, data):\n        self.current.append(data)\n\n    def handle_charref(self, name):\n        self.current.append('&%s;' % name)\n\n    def handle_entityref(self, name):\n        self.current.append('&%s;' % name)\n\n\ndef parse_html(html):\n    \"\"\"\n    Takes a string that contains *valid* HTML and turns it into a Python object\n    structure that can be easily compared against other HTML on semantic\n    equivilance. Syntactical differences like which quotation is used on\n    arguments will be ignored.\n\n    \"\"\"\n    parser = Parser()\n    parser.feed(html)\n    parser.close()\n    document = parser.root\n    document.finalize()\n    # Removing ROOT element if it's not necessary\n    if len(document.children) == 1:\n        if not isinstance(document.children[0], six.string_types):\n            document = document.children[0]\n    return document\n"
  },
  {
    "path": "Django-1.5.1/django/test/signals.py",
    "content": "import os\nimport time\n\nfrom django.conf import settings\nfrom django.db import connections\nfrom django.dispatch import receiver, Signal\nfrom django.utils import timezone\nfrom django.utils.functional import empty\n\ntemplate_rendered = Signal(providing_args=[\"template\", \"context\"])\n\nsetting_changed = Signal(providing_args=[\"setting\", \"value\"])\n\n# Most setting_changed receivers are supposed to be added below,\n# except for cases where the receiver is related to a contrib app.\n\n\n@receiver(setting_changed)\ndef update_connections_time_zone(**kwargs):\n    if kwargs['setting'] == 'TIME_ZONE':\n        # Reset process time zone\n        if hasattr(time, 'tzset'):\n            if kwargs['value']:\n                os.environ['TZ'] = kwargs['value']\n            else:\n                os.environ.pop('TZ', None)\n            time.tzset()\n\n        # Reset local time zone cache\n        timezone._localtime = None\n\n    # Reset the database connections' time zone\n    if kwargs['setting'] == 'USE_TZ' and settings.TIME_ZONE != 'UTC':\n        USE_TZ, TIME_ZONE = kwargs['value'], settings.TIME_ZONE\n    elif kwargs['setting'] == 'TIME_ZONE' and not settings.USE_TZ:\n        USE_TZ, TIME_ZONE = settings.USE_TZ, kwargs['value']\n    else:\n        # no need to change the database connnections' time zones\n        return\n    tz = 'UTC' if USE_TZ else TIME_ZONE\n    for conn in connections.all():\n        conn.settings_dict['TIME_ZONE'] = tz\n        tz_sql = conn.ops.set_time_zone_sql()\n        if tz_sql:\n            conn.cursor().execute(tz_sql, [tz])\n\n\n@receiver(setting_changed)\ndef clear_context_processors_cache(**kwargs):\n    if kwargs['setting'] == 'TEMPLATE_CONTEXT_PROCESSORS':\n        from django.template import context\n        context._standard_context_processors = None\n\n\n@receiver(setting_changed)\ndef clear_template_loaders_cache(**kwargs):\n    if kwargs['setting'] == 'TEMPLATE_LOADERS':\n        from django.template import loader\n        loader.template_source_loaders = None\n\n\n@receiver(setting_changed)\ndef clear_serializers_cache(**kwargs):\n    if kwargs['setting'] == 'SERIALIZATION_MODULES':\n        from django.core import serializers\n        serializers._serializers = {}\n\n\n@receiver(setting_changed)\ndef language_changed(**kwargs):\n    if kwargs['setting'] in ('LOCALE_PATHS', 'LANGUAGE_CODE'):\n        from django.utils.translation import trans_real\n        trans_real._default = None\n        if kwargs['setting'] == 'LOCALE_PATHS':\n            trans_real._translations = {}\n\n@receiver(setting_changed)\ndef file_storage_changed(**kwargs):\n    if kwargs['setting'] in ('MEDIA_ROOT', 'DEFAULT_FILE_STORAGE'):\n        from django.core.files.storage import default_storage\n        default_storage._wrapped = empty\n"
  },
  {
    "path": "Django-1.5.1/django/test/simple.py",
    "content": "import unittest as real_unittest\n\nfrom django.conf import settings\nfrom django.core.exceptions import ImproperlyConfigured\nfrom django.db.models import get_app, get_apps\nfrom django.test import _doctest as doctest\nfrom django.test.utils import setup_test_environment, teardown_test_environment\nfrom django.test.testcases import OutputChecker, DocTestRunner\nfrom django.utils import unittest\nfrom django.utils.importlib import import_module\nfrom django.utils.module_loading import module_has_submodule\n\n__all__ = ('DjangoTestSuiteRunner')\n\n# The module name for tests outside models.py\nTEST_MODULE = 'tests'\n\ndoctestOutputChecker = OutputChecker()\n\n\ndef get_tests(app_module):\n    parts = app_module.__name__.split('.')\n    prefix, last = parts[:-1], parts[-1]\n    try:\n        test_module = import_module('.'.join(prefix + [TEST_MODULE]))\n    except ImportError:\n        # Couldn't import tests.py. Was it due to a missing file, or\n        # due to an import error in a tests.py that actually exists?\n        # app_module either points to a models.py file, or models/__init__.py\n        # Tests are therefore either in same directory, or one level up\n        if last == 'models':\n            app_root = import_module('.'.join(prefix))\n        else:\n            app_root = app_module\n\n        if not module_has_submodule(app_root, TEST_MODULE):\n            test_module = None\n        else:\n            # The module exists, so there must be an import error in the test\n            # module itself.\n            raise\n    return test_module\n\n\ndef build_suite(app_module):\n    \"\"\"\n    Create a complete Django test suite for the provided application module.\n    \"\"\"\n    suite = unittest.TestSuite()\n\n    # Load unit and doctests in the models.py module. If module has\n    # a suite() method, use it. Otherwise build the test suite ourselves.\n    if hasattr(app_module, 'suite'):\n        suite.addTest(app_module.suite())\n    else:\n        suite.addTest(unittest.defaultTestLoader.loadTestsFromModule(\n            app_module))\n        try:\n            suite.addTest(doctest.DocTestSuite(app_module,\n                                               checker=doctestOutputChecker,\n                                               runner=DocTestRunner))\n        except ValueError:\n            # No doc tests in models.py\n            pass\n\n    # Check to see if a separate 'tests' module exists parallel to the\n    # models module\n    test_module = get_tests(app_module)\n    if test_module:\n        # Load unit and doctests in the tests.py module. If module has\n        # a suite() method, use it. Otherwise build the test suite ourselves.\n        if hasattr(test_module, 'suite'):\n            suite.addTest(test_module.suite())\n        else:\n            suite.addTest(unittest.defaultTestLoader.loadTestsFromModule(\n                test_module))\n            try:\n                suite.addTest(doctest.DocTestSuite(\n                    test_module, checker=doctestOutputChecker,\n                    runner=DocTestRunner))\n            except ValueError:\n                # No doc tests in tests.py\n                pass\n    return suite\n\n\ndef build_test(label):\n    \"\"\"\n    Construct a test case with the specified label. Label should be of the\n    form model.TestClass or model.TestClass.test_method. Returns an\n    instantiated test or test suite corresponding to the label provided.\n\n    \"\"\"\n    parts = label.split('.')\n    if len(parts) < 2 or len(parts) > 3:\n        raise ValueError(\"Test label '%s' should be of the form app.TestCase \"\n                         \"or app.TestCase.test_method\" % label)\n\n    #\n    # First, look for TestCase instances with a name that matches\n    #\n    app_module = get_app(parts[0])\n    test_module = get_tests(app_module)\n    TestClass = getattr(app_module, parts[1], None)\n\n    # Couldn't find the test class in models.py; look in tests.py\n    if TestClass is None:\n        if test_module:\n            TestClass = getattr(test_module, parts[1], None)\n\n    try:\n        if issubclass(TestClass, (unittest.TestCase, real_unittest.TestCase)):\n            if len(parts) == 2: # label is app.TestClass\n                try:\n                    return unittest.TestLoader().loadTestsFromTestCase(\n                        TestClass)\n                except TypeError:\n                    raise ValueError(\n                        \"Test label '%s' does not refer to a test class\"\n                        % label)\n            else: # label is app.TestClass.test_method\n                return TestClass(parts[2])\n    except TypeError:\n        # TestClass isn't a TestClass - it must be a method or normal class\n        pass\n\n    #\n    # If there isn't a TestCase, look for a doctest that matches\n    #\n    tests = []\n    for module in app_module, test_module:\n        try:\n            doctests = doctest.DocTestSuite(module,\n                                            checker=doctestOutputChecker,\n                                            runner=DocTestRunner)\n            # Now iterate over the suite, looking for doctests whose name\n            # matches the pattern that was given\n            for test in doctests:\n                if test._dt_test.name in (\n                        '%s.%s' % (module.__name__, '.'.join(parts[1:])),\n                        '%s.__test__.%s' % (\n                            module.__name__, '.'.join(parts[1:]))):\n                    tests.append(test)\n        except ValueError:\n            # No doctests found.\n            pass\n\n    # If no tests were found, then we were given a bad test label.\n    if not tests:\n        raise ValueError(\"Test label '%s' does not refer to a test\" % label)\n\n    # Construct a suite out of the tests that matched.\n    return unittest.TestSuite(tests)\n\n\ndef partition_suite(suite, classes, bins):\n    \"\"\"\n    Partitions a test suite by test type.\n\n    classes is a sequence of types\n    bins is a sequence of TestSuites, one more than classes\n\n    Tests of type classes[i] are added to bins[i],\n    tests with no match found in classes are place in bins[-1]\n    \"\"\"\n    for test in suite:\n        if isinstance(test, unittest.TestSuite):\n            partition_suite(test, classes, bins)\n        else:\n            for i in range(len(classes)):\n                if isinstance(test, classes[i]):\n                    bins[i].addTest(test)\n                    break\n            else:\n                bins[-1].addTest(test)\n\n\ndef reorder_suite(suite, classes):\n    \"\"\"\n    Reorders a test suite by test type.\n\n    `classes` is a sequence of types\n\n    All tests of type classes[0] are placed first, then tests of type\n    classes[1], etc. Tests with no match in classes are placed last.\n    \"\"\"\n    class_count = len(classes)\n    bins = [unittest.TestSuite() for i in range(class_count+1)]\n    partition_suite(suite, classes, bins)\n    for i in range(class_count):\n        bins[0].addTests(bins[i+1])\n    return bins[0]\n\n\ndef dependency_ordered(test_databases, dependencies):\n    \"\"\"\n    Reorder test_databases into an order that honors the dependencies\n    described in TEST_DEPENDENCIES.\n    \"\"\"\n    ordered_test_databases = []\n    resolved_databases = set()\n\n    # Maps db signature to dependencies of all it's aliases\n    dependencies_map = {}\n\n    # sanity check - no DB can depend on it's own alias\n    for sig, (_, aliases) in test_databases:\n        all_deps = set()\n        for alias in aliases:\n            all_deps.update(dependencies.get(alias, []))\n        if not all_deps.isdisjoint(aliases):\n            raise ImproperlyConfigured(\n                \"Circular dependency: databases %r depend on each other, \"\n                \"but are aliases.\" % aliases)\n        dependencies_map[sig] = all_deps\n\n    while test_databases:\n        changed = False\n        deferred = []\n\n        # Try to find a DB that has all it's dependencies met\n        for signature, (db_name, aliases) in test_databases:\n            if dependencies_map[signature].issubset(resolved_databases):\n                resolved_databases.update(aliases)\n                ordered_test_databases.append((signature, (db_name, aliases)))\n                changed = True\n            else:\n                deferred.append((signature, (db_name, aliases)))\n\n        if not changed:\n            raise ImproperlyConfigured(\n                \"Circular dependency in TEST_DEPENDENCIES\")\n        test_databases = deferred\n    return ordered_test_databases\n\n\nclass DjangoTestSuiteRunner(object):\n    def __init__(self, verbosity=1, interactive=True, failfast=True, **kwargs):\n        self.verbosity = verbosity\n        self.interactive = interactive\n        self.failfast = failfast\n\n    def setup_test_environment(self, **kwargs):\n        setup_test_environment()\n        settings.DEBUG = False\n        unittest.installHandler()\n\n    def build_suite(self, test_labels, extra_tests=None, **kwargs):\n        suite = unittest.TestSuite()\n\n        if test_labels:\n            for label in test_labels:\n                if '.' in label:\n                    suite.addTest(build_test(label))\n                else:\n                    app = get_app(label)\n                    suite.addTest(build_suite(app))\n        else:\n            for app in get_apps():\n                suite.addTest(build_suite(app))\n\n        if extra_tests:\n            for test in extra_tests:\n                suite.addTest(test)\n\n        return reorder_suite(suite, (unittest.TestCase,))\n\n    def setup_databases(self, **kwargs):\n        from django.db import connections, DEFAULT_DB_ALIAS\n\n        # First pass -- work out which databases actually need to be created,\n        # and which ones are test mirrors or duplicate entries in DATABASES\n        mirrored_aliases = {}\n        test_databases = {}\n        dependencies = {}\n        for alias in connections:\n            connection = connections[alias]\n            if connection.settings_dict['TEST_MIRROR']:\n                # If the database is marked as a test mirror, save\n                # the alias.\n                mirrored_aliases[alias] = (\n                    connection.settings_dict['TEST_MIRROR'])\n            else:\n                # Store a tuple with DB parameters that uniquely identify it.\n                # If we have two aliases with the same values for that tuple,\n                # we only need to create the test database once.\n                item = test_databases.setdefault(\n                    connection.creation.test_db_signature(),\n                    (connection.settings_dict['NAME'], set())\n                )\n                item[1].add(alias)\n\n                if 'TEST_DEPENDENCIES' in connection.settings_dict:\n                    dependencies[alias] = (\n                        connection.settings_dict['TEST_DEPENDENCIES'])\n                else:\n                    if alias != DEFAULT_DB_ALIAS:\n                        dependencies[alias] = connection.settings_dict.get(\n                            'TEST_DEPENDENCIES', [DEFAULT_DB_ALIAS])\n\n        # Second pass -- actually create the databases.\n        old_names = []\n        mirrors = []\n\n        for signature, (db_name, aliases) in dependency_ordered(\n            test_databases.items(), dependencies):\n            test_db_name = None\n            # Actually create the database for the first connection\n\n            for alias in aliases:\n                connection = connections[alias]\n                old_names.append((connection, db_name, True))\n                if test_db_name is None:\n                    test_db_name = connection.creation.create_test_db(\n                            self.verbosity, autoclobber=not self.interactive)\n                else:\n                    connection.settings_dict['NAME'] = test_db_name\n\n        for alias, mirror_alias in mirrored_aliases.items():\n            mirrors.append((alias, connections[alias].settings_dict['NAME']))\n            connections[alias].settings_dict['NAME'] = (\n                connections[mirror_alias].settings_dict['NAME'])\n\n        return old_names, mirrors\n\n    def run_suite(self, suite, **kwargs):\n        return unittest.TextTestRunner(\n            verbosity=self.verbosity, failfast=self.failfast).run(suite)\n\n    def teardown_databases(self, old_config, **kwargs):\n        \"\"\"\n        Destroys all the non-mirror databases.\n        \"\"\"\n        old_names, mirrors = old_config\n        for connection, old_name, destroy in old_names:\n            if destroy:\n                connection.creation.destroy_test_db(old_name, self.verbosity)\n\n    def teardown_test_environment(self, **kwargs):\n        unittest.removeHandler()\n        teardown_test_environment()\n\n    def suite_result(self, suite, result, **kwargs):\n        return len(result.failures) + len(result.errors)\n\n    def run_tests(self, test_labels, extra_tests=None, **kwargs):\n        \"\"\"\n        Run the unit tests for all the test labels in the provided list.\n        Labels must be of the form:\n         - app.TestClass.test_method\n            Run a single specific test method\n         - app.TestClass\n            Run all the test methods in a given class\n         - app\n            Search for doctests and unittests in the named application.\n\n        When looking for tests, the test runner will look in the models and\n        tests modules for the application.\n\n        A list of 'extra' tests may also be provided; these tests\n        will be added to the test suite.\n\n        Returns the number of tests that failed.\n        \"\"\"\n        self.setup_test_environment()\n        suite = self.build_suite(test_labels, extra_tests)\n        old_config = self.setup_databases()\n        result = self.run_suite(suite)\n        self.teardown_databases(old_config)\n        self.teardown_test_environment()\n        return self.suite_result(suite, result)\n"
  },
  {
    "path": "Django-1.5.1/django/test/testcases.py",
    "content": "from __future__ import unicode_literals\n\nimport difflib\nimport json\nimport os\nimport re\nimport sys\nfrom copy import copy\nfrom functools import wraps\ntry:\n    from urllib.parse import urlsplit, urlunsplit\nexcept ImportError:     # Python 2\n    from urlparse import urlsplit, urlunsplit\nimport select\nimport socket\nimport threading\nimport errno\n\nfrom django.conf import settings\nfrom django.contrib.staticfiles.handlers import StaticFilesHandler\nfrom django.core import mail\nfrom django.core.exceptions import ValidationError, ImproperlyConfigured\nfrom django.core.handlers.wsgi import WSGIHandler\nfrom django.core.management import call_command\nfrom django.core.management.color import no_style\nfrom django.core.signals import request_started\nfrom django.core.servers.basehttp import (WSGIRequestHandler, WSGIServer,\n    WSGIServerException)\nfrom django.core.urlresolvers import clear_url_caches\nfrom django.core.validators import EMPTY_VALUES\nfrom django.db import (transaction, connection, connections, DEFAULT_DB_ALIAS,\n    reset_queries)\nfrom django.forms.fields import CharField\nfrom django.http import QueryDict\nfrom django.test import _doctest as doctest\nfrom django.test.client import Client\nfrom django.test.html import HTMLParseError, parse_html\nfrom django.test.signals import template_rendered\nfrom django.test.utils import (get_warnings_state, restore_warnings_state,\n    override_settings, compare_xml, strip_quotes)\nfrom django.test.utils import ContextList\nfrom django.utils import unittest as ut2\nfrom django.utils.encoding import force_text\nfrom django.utils import six\nfrom django.utils.unittest.util import safe_repr\nfrom django.utils.unittest import skipIf\nfrom django.views.static import serve\n\n__all__ = ('DocTestRunner', 'OutputChecker', 'TestCase', 'TransactionTestCase',\n           'SimpleTestCase', 'skipIfDBFeature', 'skipUnlessDBFeature')\n\nnormalize_long_ints = lambda s: re.sub(r'(?<![\\w])(\\d+)L(?![\\w])', '\\\\1', s)\nnormalize_decimals = lambda s: re.sub(r\"Decimal\\('(\\d+(\\.\\d*)?)'\\)\",\n                                lambda m: \"Decimal(\\\"%s\\\")\" % m.groups()[0], s)\n\n\ndef to_list(value):\n    \"\"\"\n    Puts value into a list if it's not already one.\n    Returns an empty list if value is None.\n    \"\"\"\n    if value is None:\n        value = []\n    elif not isinstance(value, list):\n        value = [value]\n    return value\n\nreal_commit = transaction.commit\nreal_rollback = transaction.rollback\nreal_enter_transaction_management = transaction.enter_transaction_management\nreal_leave_transaction_management = transaction.leave_transaction_management\nreal_managed = transaction.managed\nreal_abort = transaction.abort\n\ndef nop(*args, **kwargs):\n    return\n\ndef disable_transaction_methods():\n    transaction.commit = nop\n    transaction.rollback = nop\n    transaction.enter_transaction_management = nop\n    transaction.leave_transaction_management = nop\n    transaction.managed = nop\n    transaction.abort = nop\n\ndef restore_transaction_methods():\n    transaction.commit = real_commit\n    transaction.rollback = real_rollback\n    transaction.enter_transaction_management = real_enter_transaction_management\n    transaction.leave_transaction_management = real_leave_transaction_management\n    transaction.managed = real_managed\n    transaction.abort = real_abort\n\n\ndef assert_and_parse_html(self, html, user_msg, msg):\n    try:\n        dom = parse_html(html)\n    except HTMLParseError as e:\n        standardMsg = '%s\\n%s' % (msg, e.msg)\n        self.fail(self._formatMessage(user_msg, standardMsg))\n    return dom\n\n\nclass OutputChecker(doctest.OutputChecker):\n    def check_output(self, want, got, optionflags):\n        \"\"\"\n        The entry method for doctest output checking. Defers to a sequence of\n        child checkers\n        \"\"\"\n        checks = (self.check_output_default,\n                  self.check_output_numeric,\n                  self.check_output_xml,\n                  self.check_output_json)\n        for check in checks:\n            if check(want, got, optionflags):\n                return True\n        return False\n\n    def check_output_default(self, want, got, optionflags):\n        \"\"\"\n        The default comparator provided by doctest - not perfect, but good for\n        most purposes\n        \"\"\"\n        return doctest.OutputChecker.check_output(self, want, got, optionflags)\n\n    def check_output_numeric(self, want, got, optionflags):\n        \"\"\"Doctest does an exact string comparison of output, which means that\n        some numerically equivalent values aren't equal. This check normalizes\n         * long integers (22L) so that they equal normal integers. (22)\n         * Decimals so that they are comparable, regardless of the change\n           made to __repr__ in Python 2.6.\n        \"\"\"\n        return doctest.OutputChecker.check_output(self,\n            normalize_decimals(normalize_long_ints(want)),\n            normalize_decimals(normalize_long_ints(got)),\n            optionflags)\n\n    def check_output_xml(self, want, got, optionsflags):\n        try:\n            return compare_xml(want, got)\n        except Exception:\n            return False\n\n    def check_output_json(self, want, got, optionsflags):\n        \"\"\"\n        Tries to compare want and got as if they were JSON-encoded data\n        \"\"\"\n        want, got = strip_quotes(want, got)\n        try:\n            want_json = json.loads(want)\n            got_json = json.loads(got)\n        except Exception:\n            return False\n        return want_json == got_json\n\n\nclass DocTestRunner(doctest.DocTestRunner):\n    def __init__(self, *args, **kwargs):\n        doctest.DocTestRunner.__init__(self, *args, **kwargs)\n        self.optionflags = doctest.ELLIPSIS\n\n    def report_unexpected_exception(self, out, test, example, exc_info):\n        doctest.DocTestRunner.report_unexpected_exception(self, out, test,\n                                                          example, exc_info)\n        # Rollback, in case of database errors. Otherwise they'd have\n        # side effects on other tests.\n        for conn in connections:\n            transaction.rollback_unless_managed(using=conn)\n\n\nclass _AssertNumQueriesContext(object):\n    def __init__(self, test_case, num, connection):\n        self.test_case = test_case\n        self.num = num\n        self.connection = connection\n\n    def __enter__(self):\n        self.old_debug_cursor = self.connection.use_debug_cursor\n        self.connection.use_debug_cursor = True\n        self.starting_queries = len(self.connection.queries)\n        request_started.disconnect(reset_queries)\n        return self\n\n    def __exit__(self, exc_type, exc_value, traceback):\n        self.connection.use_debug_cursor = self.old_debug_cursor\n        request_started.connect(reset_queries)\n        if exc_type is not None:\n            return\n\n        final_queries = len(self.connection.queries)\n        executed = final_queries - self.starting_queries\n\n        self.test_case.assertEqual(\n            executed, self.num, \"%d queries executed, %d expected\" % (\n                executed, self.num\n            )\n        )\n\n\nclass _AssertTemplateUsedContext(object):\n    def __init__(self, test_case, template_name):\n        self.test_case = test_case\n        self.template_name = template_name\n        self.rendered_templates = []\n        self.rendered_template_names = []\n        self.context = ContextList()\n\n    def on_template_render(self, sender, signal, template, context, **kwargs):\n        self.rendered_templates.append(template)\n        self.rendered_template_names.append(template.name)\n        self.context.append(copy(context))\n\n    def test(self):\n        return self.template_name in self.rendered_template_names\n\n    def message(self):\n        return '%s was not rendered.' % self.template_name\n\n    def __enter__(self):\n        template_rendered.connect(self.on_template_render)\n        return self\n\n    def __exit__(self, exc_type, exc_value, traceback):\n        template_rendered.disconnect(self.on_template_render)\n        if exc_type is not None:\n            return\n\n        if not self.test():\n            message = self.message()\n            if len(self.rendered_templates) == 0:\n                message += ' No template was rendered.'\n            else:\n                message += ' Following templates were rendered: %s' % (\n                    ', '.join(self.rendered_template_names))\n            self.test_case.fail(message)\n\n\nclass _AssertTemplateNotUsedContext(_AssertTemplateUsedContext):\n    def test(self):\n        return self.template_name not in self.rendered_template_names\n\n    def message(self):\n        return '%s was rendered.' % self.template_name\n\n\nclass SimpleTestCase(ut2.TestCase):\n    def __call__(self, result=None):\n        \"\"\"\n        Wrapper around default __call__ method to perform common Django test\n        set up. This means that user-defined Test Cases aren't required to\n        include a call to super().setUp().\n        \"\"\"\n        testMethod = getattr(self, self._testMethodName)\n        skipped = (getattr(self.__class__, \"__unittest_skip__\", False) or\n            getattr(testMethod, \"__unittest_skip__\", False))\n\n        if not skipped:\n            try:\n                self._pre_setup()\n            except (KeyboardInterrupt, SystemExit):\n                raise\n            except Exception:\n                result.addError(self, sys.exc_info())\n                return\n        super(SimpleTestCase, self).__call__(result)\n        if not skipped:\n            try:\n                self._post_teardown()\n            except (KeyboardInterrupt, SystemExit):\n                raise\n            except Exception:\n                result.addError(self, sys.exc_info())\n                return\n\n    def _pre_setup(self):\n        pass\n\n    def _post_teardown(self):\n        pass\n\n    def save_warnings_state(self):\n        \"\"\"\n        Saves the state of the warnings module\n        \"\"\"\n        self._warnings_state = get_warnings_state()\n\n    def restore_warnings_state(self):\n        \"\"\"\n        Restores the state of the warnings module to the state\n        saved by save_warnings_state()\n        \"\"\"\n        restore_warnings_state(self._warnings_state)\n\n    def settings(self, **kwargs):\n        \"\"\"\n        A context manager that temporarily sets a setting and reverts\n        back to the original value when exiting the context.\n        \"\"\"\n        return override_settings(**kwargs)\n\n    def assertRaisesMessage(self, expected_exception, expected_message,\n                           callable_obj=None, *args, **kwargs):\n        \"\"\"\n        Asserts that the message in a raised exception matches the passed\n        value.\n\n        Args:\n            expected_exception: Exception class expected to be raised.\n            expected_message: expected error message string value.\n            callable_obj: Function to be called.\n            args: Extra args.\n            kwargs: Extra kwargs.\n        \"\"\"\n        return six.assertRaisesRegex(self, expected_exception,\n                re.escape(expected_message), callable_obj, *args, **kwargs)\n\n    def assertFieldOutput(self, fieldclass, valid, invalid, field_args=None,\n            field_kwargs=None, empty_value=''):\n        \"\"\"\n        Asserts that a form field behaves correctly with various inputs.\n\n        Args:\n            fieldclass: the class of the field to be tested.\n            valid: a dictionary mapping valid inputs to their expected\n                    cleaned values.\n            invalid: a dictionary mapping invalid inputs to one or more\n                    raised error messages.\n            field_args: the args passed to instantiate the field\n            field_kwargs: the kwargs passed to instantiate the field\n            empty_value: the expected clean output for inputs in EMPTY_VALUES\n\n        \"\"\"\n        if field_args is None:\n            field_args = []\n        if field_kwargs is None:\n            field_kwargs = {}\n        required = fieldclass(*field_args, **field_kwargs)\n        optional = fieldclass(*field_args,\n                              **dict(field_kwargs, required=False))\n        # test valid inputs\n        for input, output in valid.items():\n            self.assertEqual(required.clean(input), output)\n            self.assertEqual(optional.clean(input), output)\n        # test invalid inputs\n        for input, errors in invalid.items():\n            with self.assertRaises(ValidationError) as context_manager:\n                required.clean(input)\n            self.assertEqual(context_manager.exception.messages, errors)\n\n            with self.assertRaises(ValidationError) as context_manager:\n                optional.clean(input)\n            self.assertEqual(context_manager.exception.messages, errors)\n        # test required inputs\n        error_required = [force_text(required.error_messages['required'])]\n        for e in EMPTY_VALUES:\n            with self.assertRaises(ValidationError) as context_manager:\n                required.clean(e)\n            self.assertEqual(context_manager.exception.messages,\n                             error_required)\n            self.assertEqual(optional.clean(e), empty_value)\n        # test that max_length and min_length are always accepted\n        if issubclass(fieldclass, CharField):\n            field_kwargs.update({'min_length':2, 'max_length':20})\n            self.assertTrue(isinstance(fieldclass(*field_args, **field_kwargs),\n                                       fieldclass))\n\n    def assertHTMLEqual(self, html1, html2, msg=None):\n        \"\"\"\n        Asserts that two HTML snippets are semantically the same.\n        Whitespace in most cases is ignored, and attribute ordering is not\n        significant. The passed-in arguments must be valid HTML.\n        \"\"\"\n        dom1 = assert_and_parse_html(self, html1, msg,\n            'First argument is not valid HTML:')\n        dom2 = assert_and_parse_html(self, html2, msg,\n            'Second argument is not valid HTML:')\n\n        if dom1 != dom2:\n            standardMsg = '%s != %s' % (\n                safe_repr(dom1, True), safe_repr(dom2, True))\n            diff = ('\\n' + '\\n'.join(difflib.ndiff(\n                           six.text_type(dom1).splitlines(),\n                           six.text_type(dom2).splitlines())))\n            standardMsg = self._truncateMessage(standardMsg, diff)\n            self.fail(self._formatMessage(msg, standardMsg))\n\n    def assertHTMLNotEqual(self, html1, html2, msg=None):\n        \"\"\"Asserts that two HTML snippets are not semantically equivalent.\"\"\"\n        dom1 = assert_and_parse_html(self, html1, msg,\n            'First argument is not valid HTML:')\n        dom2 = assert_and_parse_html(self, html2, msg,\n            'Second argument is not valid HTML:')\n\n        if dom1 == dom2:\n            standardMsg = '%s == %s' % (\n                safe_repr(dom1, True), safe_repr(dom2, True))\n            self.fail(self._formatMessage(msg, standardMsg))\n\n    def assertInHTML(self, needle, haystack, count = None, msg_prefix=''):\n        needle = assert_and_parse_html(self, needle, None,\n            'First argument is not valid HTML:')\n        haystack = assert_and_parse_html(self, haystack, None,\n            'Second argument is not valid HTML:')\n        real_count = haystack.count(needle)\n        if count is not None:\n            self.assertEqual(real_count, count,\n                msg_prefix + \"Found %d instances of '%s' in response\"\n                \" (expected %d)\" % (real_count, needle, count))\n        else:\n            self.assertTrue(real_count != 0,\n                msg_prefix + \"Couldn't find '%s' in response\" % needle)\n\n    def assertJSONEqual(self, raw, expected_data, msg=None):\n        try:\n            data = json.loads(raw)\n        except ValueError:\n            self.fail(\"First argument is not valid JSON: %r\" % raw)\n        if isinstance(expected_data, six.string_types):\n            try:\n                expected_data = json.loads(expected_data)\n            except ValueError:\n                self.fail(\"Second argument is not valid JSON: %r\" % expected_data)\n        self.assertEqual(data, expected_data, msg=msg)\n\n    def assertXMLEqual(self, xml1, xml2, msg=None):\n        \"\"\"\n        Asserts that two XML snippets are semantically the same.\n        Whitespace in most cases is ignored, and attribute ordering is not\n        significant. The passed-in arguments must be valid XML.\n        \"\"\"\n        try:\n            result = compare_xml(xml1, xml2)\n        except Exception as e:\n            standardMsg = 'First or second argument is not valid XML\\n%s' % e\n            self.fail(self._formatMessage(msg, standardMsg))\n        else:\n            if not result:\n                standardMsg = '%s != %s' % (safe_repr(xml1, True), safe_repr(xml2, True))\n                self.fail(self._formatMessage(msg, standardMsg))\n\n    def assertXMLNotEqual(self, xml1, xml2, msg=None):\n        \"\"\"\n        Asserts that two XML snippets are not semantically equivalent.\n        Whitespace in most cases is ignored, and attribute ordering is not\n        significant. The passed-in arguments must be valid XML.\n        \"\"\"\n        try:\n            result = compare_xml(xml1, xml2)\n        except Exception as e:\n            standardMsg = 'First or second argument is not valid XML\\n%s' % e\n            self.fail(self._formatMessage(msg, standardMsg))\n        else:\n            if result:\n                standardMsg = '%s == %s' % (safe_repr(xml1, True), safe_repr(xml2, True))\n                self.fail(self._formatMessage(msg, standardMsg))\n\n\nclass TransactionTestCase(SimpleTestCase):\n\n    # The class we'll use for the test client self.client.\n    # Can be overridden in derived classes.\n    client_class = Client\n\n    # Subclasses can ask for resetting of auto increment sequence before each\n    # test case\n    reset_sequences = False\n\n    def _pre_setup(self):\n        \"\"\"Performs any pre-test setup. This includes:\n\n            * Flushing the database.\n            * If the Test Case class has a 'fixtures' member, installing the\n              named fixtures.\n            * If the Test Case class has a 'urls' member, replace the\n              ROOT_URLCONF with it.\n            * Clearing the mail test outbox.\n        \"\"\"\n        self.client = self.client_class()\n        self._fixture_setup()\n        self._urlconf_setup()\n        mail.outbox = []\n\n    def _databases_names(self, include_mirrors=True):\n        # If the test case has a multi_db=True flag, act on all databases,\n        # including mirrors or not. Otherwise, just on the default DB.\n        if getattr(self, 'multi_db', False):\n            return [alias for alias in connections\n                    if include_mirrors or not connections[alias].settings_dict['TEST_MIRROR']]\n        else:\n            return [DEFAULT_DB_ALIAS]\n\n    def _reset_sequences(self, db_name):\n        conn = connections[db_name]\n        if conn.features.supports_sequence_reset:\n            sql_list = \\\n                conn.ops.sequence_reset_by_name_sql(no_style(),\n                                                    conn.introspection.sequence_list())\n            if sql_list:\n                try:\n                    cursor = conn.cursor()\n                    for sql in sql_list:\n                        cursor.execute(sql)\n                except Exception:\n                    transaction.rollback_unless_managed(using=db_name)\n                    raise\n                transaction.commit_unless_managed(using=db_name)\n\n    def _fixture_setup(self):\n        for db_name in self._databases_names(include_mirrors=False):\n            # Reset sequences\n            if self.reset_sequences:\n                self._reset_sequences(db_name)\n\n            if hasattr(self, 'fixtures'):\n                # We have to use this slightly awkward syntax due to the fact\n                # that we're using *args and **kwargs together.\n                call_command('loaddata', *self.fixtures,\n                             **{'verbosity': 0, 'database': db_name, 'skip_validation': True})\n\n    def _urlconf_setup(self):\n        if hasattr(self, 'urls'):\n            self._old_root_urlconf = settings.ROOT_URLCONF\n            settings.ROOT_URLCONF = self.urls\n            clear_url_caches()\n\n    def _post_teardown(self):\n        \"\"\" Performs any post-test things. This includes:\n\n            * Putting back the original ROOT_URLCONF if it was changed.\n            * Force closing the connection, so that the next test gets\n              a clean cursor.\n        \"\"\"\n        self._fixture_teardown()\n        self._urlconf_teardown()\n        # Some DB cursors include SQL statements as part of cursor\n        # creation. If you have a test that does rollback, the effect\n        # of these statements is lost, which can effect the operation\n        # of tests (e.g., losing a timezone setting causing objects to\n        # be created with the wrong time).\n        # To make sure this doesn't happen, get a clean connection at the\n        # start of every test.\n        for conn in connections.all():\n            conn.close()\n\n    def _fixture_teardown(self):\n        # Roll back any pending transactions in order to avoid a deadlock\n        # during flush when TEST_MIRROR is used (#18984).\n        for conn in connections.all():\n            conn.rollback_unless_managed()\n\n        for db in self._databases_names(include_mirrors=False):\n            call_command('flush', verbosity=0, interactive=False, database=db,\n                         skip_validation=True, reset_sequences=False)\n\n    def _urlconf_teardown(self):\n        if hasattr(self, '_old_root_urlconf'):\n            settings.ROOT_URLCONF = self._old_root_urlconf\n            clear_url_caches()\n\n    def assertRedirects(self, response, expected_url, status_code=302,\n                        target_status_code=200, host=None, msg_prefix=''):\n        \"\"\"Asserts that a response redirected to a specific URL, and that the\n        redirect URL can be loaded.\n\n        Note that assertRedirects won't work for external links since it uses\n        TestClient to do a request.\n        \"\"\"\n        if msg_prefix:\n            msg_prefix += \": \"\n\n        if hasattr(response, 'redirect_chain'):\n            # The request was a followed redirect\n            self.assertTrue(len(response.redirect_chain) > 0,\n                msg_prefix + \"Response didn't redirect as expected: Response\"\n                \" code was %d (expected %d)\" %\n                    (response.status_code, status_code))\n\n            self.assertEqual(response.redirect_chain[0][1], status_code,\n                msg_prefix + \"Initial response didn't redirect as expected:\"\n                \" Response code was %d (expected %d)\" %\n                    (response.redirect_chain[0][1], status_code))\n\n            url, status_code = response.redirect_chain[-1]\n\n            self.assertEqual(response.status_code, target_status_code,\n                msg_prefix + \"Response didn't redirect as expected: Final\"\n                \" Response code was %d (expected %d)\" %\n                    (response.status_code, target_status_code))\n\n        else:\n            # Not a followed redirect\n            self.assertEqual(response.status_code, status_code,\n                msg_prefix + \"Response didn't redirect as expected: Response\"\n                \" code was %d (expected %d)\" %\n                    (response.status_code, status_code))\n\n            url = response['Location']\n            scheme, netloc, path, query, fragment = urlsplit(url)\n\n            redirect_response = response.client.get(path, QueryDict(query))\n\n            # Get the redirection page, using the same client that was used\n            # to obtain the original response.\n            self.assertEqual(redirect_response.status_code, target_status_code,\n                msg_prefix + \"Couldn't retrieve redirection page '%s':\"\n                \" response code was %d (expected %d)\" %\n                    (path, redirect_response.status_code, target_status_code))\n\n        e_scheme, e_netloc, e_path, e_query, e_fragment = urlsplit(\n                                                              expected_url)\n        if not (e_scheme or e_netloc):\n            expected_url = urlunsplit(('http', host or 'testserver', e_path,\n                e_query, e_fragment))\n\n        self.assertEqual(url, expected_url,\n            msg_prefix + \"Response redirected to '%s', expected '%s'\" %\n                (url, expected_url))\n\n    def assertContains(self, response, text, count=None, status_code=200,\n                       msg_prefix='', html=False):\n        \"\"\"\n        Asserts that a response indicates that some content was retrieved\n        successfully, (i.e., the HTTP status code was as expected), and that\n        ``text`` occurs ``count`` times in the content of the response.\n        If ``count`` is None, the count doesn't matter - the assertion is true\n        if the text occurs at least once in the response.\n        \"\"\"\n\n        # If the response supports deferred rendering and hasn't been rendered\n        # yet, then ensure that it does get rendered before proceeding further.\n        if (hasattr(response, 'render') and callable(response.render)\n            and not response.is_rendered):\n            response.render()\n\n        if msg_prefix:\n            msg_prefix += \": \"\n\n        self.assertEqual(response.status_code, status_code,\n            msg_prefix + \"Couldn't retrieve content: Response code was %d\"\n            \" (expected %d)\" % (response.status_code, status_code))\n        text = force_text(text, encoding=response._charset)\n        if response.streaming:\n            content = b''.join(response.streaming_content)\n        else:\n            content = response.content\n        content = content.decode(response._charset)\n        if html:\n            content = assert_and_parse_html(self, content, None,\n                \"Response's content is not valid HTML:\")\n            text = assert_and_parse_html(self, text, None,\n                \"Second argument is not valid HTML:\")\n        real_count = content.count(text)\n        if count is not None:\n            self.assertEqual(real_count, count,\n                msg_prefix + \"Found %d instances of '%s' in response\"\n                \" (expected %d)\" % (real_count, text, count))\n        else:\n            self.assertTrue(real_count != 0,\n                msg_prefix + \"Couldn't find '%s' in response\" % text)\n\n    def assertNotContains(self, response, text, status_code=200,\n                          msg_prefix='', html=False):\n        \"\"\"\n        Asserts that a response indicates that some content was retrieved\n        successfully, (i.e., the HTTP status code was as expected), and that\n        ``text`` doesn't occurs in the content of the response.\n        \"\"\"\n\n        # If the response supports deferred rendering and hasn't been rendered\n        # yet, then ensure that it does get rendered before proceeding further.\n        if (hasattr(response, 'render') and callable(response.render)\n            and not response.is_rendered):\n            response.render()\n\n        if msg_prefix:\n            msg_prefix += \": \"\n\n        self.assertEqual(response.status_code, status_code,\n            msg_prefix + \"Couldn't retrieve content: Response code was %d\"\n            \" (expected %d)\" % (response.status_code, status_code))\n        text = force_text(text, encoding=response._charset)\n        content = response.content.decode(response._charset)\n        if html:\n            content = assert_and_parse_html(self, content, None,\n                'Response\\'s content is not valid HTML:')\n            text = assert_and_parse_html(self, text, None,\n                'Second argument is not valid HTML:')\n        self.assertEqual(content.count(text), 0,\n            msg_prefix + \"Response should not contain '%s'\" % text)\n\n    def assertFormError(self, response, form, field, errors, msg_prefix=''):\n        \"\"\"\n        Asserts that a form used to render the response has a specific field\n        error.\n        \"\"\"\n        if msg_prefix:\n            msg_prefix += \": \"\n\n        # Put context(s) into a list to simplify processing.\n        contexts = to_list(response.context)\n        if not contexts:\n            self.fail(msg_prefix + \"Response did not use any contexts to \"\n                      \"render the response\")\n\n        # Put error(s) into a list to simplify processing.\n        errors = to_list(errors)\n\n        # Search all contexts for the error.\n        found_form = False\n        for i,context in enumerate(contexts):\n            if form not in context:\n                continue\n            found_form = True\n            for err in errors:\n                if field:\n                    if field in context[form].errors:\n                        field_errors = context[form].errors[field]\n                        self.assertTrue(err in field_errors,\n                            msg_prefix + \"The field '%s' on form '%s' in\"\n                            \" context %d does not contain the error '%s'\"\n                            \" (actual errors: %s)\" %\n                                (field, form, i, err, repr(field_errors)))\n                    elif field in context[form].fields:\n                        self.fail(msg_prefix + \"The field '%s' on form '%s'\"\n                                  \" in context %d contains no errors\" %\n                                      (field, form, i))\n                    else:\n                        self.fail(msg_prefix + \"The form '%s' in context %d\"\n                                  \" does not contain the field '%s'\" %\n                                      (form, i, field))\n                else:\n                    non_field_errors = context[form].non_field_errors()\n                    self.assertTrue(err in non_field_errors,\n                        msg_prefix + \"The form '%s' in context %d does not\"\n                        \" contain the non-field error '%s'\"\n                        \" (actual errors: %s)\" %\n                            (form, i, err, non_field_errors))\n        if not found_form:\n            self.fail(msg_prefix + \"The form '%s' was not used to render the\"\n                      \" response\" % form)\n\n    def assertTemplateUsed(self, response=None, template_name=None, msg_prefix=''):\n        \"\"\"\n        Asserts that the template with the provided name was used in rendering\n        the response. Also usable as context manager.\n        \"\"\"\n        if response is None and template_name is None:\n            raise TypeError('response and/or template_name argument must be provided')\n\n        if msg_prefix:\n            msg_prefix += \": \"\n\n        # Use assertTemplateUsed as context manager.\n        if not hasattr(response, 'templates') or (response is None and template_name):\n            if response:\n                template_name = response\n                response = None\n            context = _AssertTemplateUsedContext(self, template_name)\n            return context\n\n        template_names = [t.name for t in response.templates]\n        if not template_names:\n            self.fail(msg_prefix + \"No templates used to render the response\")\n        self.assertTrue(template_name in template_names,\n            msg_prefix + \"Template '%s' was not a template used to render\"\n            \" the response. Actual template(s) used: %s\" %\n                (template_name, ', '.join(template_names)))\n\n    def assertTemplateNotUsed(self, response=None, template_name=None, msg_prefix=''):\n        \"\"\"\n        Asserts that the template with the provided name was NOT used in\n        rendering the response. Also usable as context manager.\n        \"\"\"\n        if response is None and template_name is None:\n            raise TypeError('response and/or template_name argument must be provided')\n\n        if msg_prefix:\n            msg_prefix += \": \"\n\n        # Use assertTemplateUsed as context manager.\n        if not hasattr(response, 'templates') or (response is None and template_name):\n            if response:\n                template_name = response\n                response = None\n            context = _AssertTemplateNotUsedContext(self, template_name)\n            return context\n\n        template_names = [t.name for t in response.templates]\n        self.assertFalse(template_name in template_names,\n            msg_prefix + \"Template '%s' was used unexpectedly in rendering\"\n            \" the response\" % template_name)\n\n    def assertQuerysetEqual(self, qs, values, transform=repr, ordered=True):\n        items = six.moves.map(transform, qs)\n        if not ordered:\n            return self.assertEqual(set(items), set(values))\n        return self.assertEqual(list(items), values)\n\n    def assertNumQueries(self, num, func=None, *args, **kwargs):\n        using = kwargs.pop(\"using\", DEFAULT_DB_ALIAS)\n        conn = connections[using]\n\n        context = _AssertNumQueriesContext(self, num, conn)\n        if func is None:\n            return context\n\n        with context:\n            func(*args, **kwargs)\n\n\ndef connections_support_transactions():\n    \"\"\"\n    Returns True if all connections support transactions.\n    \"\"\"\n    return all(conn.features.supports_transactions\n               for conn in connections.all())\n\n\nclass TestCase(TransactionTestCase):\n    \"\"\"\n    Does basically the same as TransactionTestCase, but surrounds every test\n    with a transaction, monkey-patches the real transaction management routines\n    to do nothing, and rollsback the test transaction at the end of the test.\n    You have to use TransactionTestCase, if you need transaction management\n    inside a test.\n    \"\"\"\n\n    def _fixture_setup(self):\n        if not connections_support_transactions():\n            return super(TestCase, self)._fixture_setup()\n\n        assert not self.reset_sequences, 'reset_sequences cannot be used on TestCase instances'\n\n        for db_name in self._databases_names():\n            transaction.enter_transaction_management(using=db_name)\n            transaction.managed(True, using=db_name)\n        disable_transaction_methods()\n\n        from django.contrib.sites.models import Site\n        Site.objects.clear_cache()\n\n        for db in self._databases_names(include_mirrors=False):\n            if hasattr(self, 'fixtures'):\n                call_command('loaddata', *self.fixtures,\n                             **{\n                                'verbosity': 0,\n                                'commit': False,\n                                'database': db,\n                                'skip_validation': True,\n                             })\n\n    def _fixture_teardown(self):\n        if not connections_support_transactions():\n            return super(TestCase, self)._fixture_teardown()\n\n        restore_transaction_methods()\n        for db in self._databases_names():\n            transaction.rollback(using=db)\n            transaction.leave_transaction_management(using=db)\n\n\ndef _deferredSkip(condition, reason):\n    def decorator(test_func):\n        if not (isinstance(test_func, type) and\n                issubclass(test_func, TestCase)):\n            @wraps(test_func)\n            def skip_wrapper(*args, **kwargs):\n                if condition():\n                    raise ut2.SkipTest(reason)\n                return test_func(*args, **kwargs)\n            test_item = skip_wrapper\n        else:\n            test_item = test_func\n        test_item.__unittest_skip_why__ = reason\n        return test_item\n    return decorator\n\n\ndef skipIfDBFeature(feature):\n    \"\"\"\n    Skip a test if a database has the named feature\n    \"\"\"\n    return _deferredSkip(lambda: getattr(connection.features, feature),\n                         \"Database has feature %s\" % feature)\n\n\ndef skipUnlessDBFeature(feature):\n    \"\"\"\n    Skip a test unless a database has the named feature\n    \"\"\"\n    return _deferredSkip(lambda: not getattr(connection.features, feature),\n                         \"Database doesn't support feature %s\" % feature)\n\n\nclass QuietWSGIRequestHandler(WSGIRequestHandler):\n    \"\"\"\n    Just a regular WSGIRequestHandler except it doesn't log to the standard\n    output any of the requests received, so as to not clutter the output for\n    the tests' results.\n    \"\"\"\n\n    def log_message(*args):\n        pass\n\n\nif sys.version_info >= (3, 3, 0):\n    _ImprovedEvent = threading.Event\nelif sys.version_info >= (2, 7, 0):\n    _ImprovedEvent = threading._Event\nelse:\n    class _ImprovedEvent(threading._Event):\n        \"\"\"\n        Does the same as `threading.Event` except it overrides the wait() method\n        with some code borrowed from Python 2.7 to return the set state of the\n        event (see: http://hg.python.org/cpython/rev/b5aa8aa78c0f/). This allows\n        to know whether the wait() method exited normally or because of the\n        timeout. This class can be removed when Django supports only Python >= 2.7.\n        \"\"\"\n\n        def wait(self, timeout=None):\n            self._Event__cond.acquire()\n            try:\n                if not self._Event__flag:\n                    self._Event__cond.wait(timeout)\n                return self._Event__flag\n            finally:\n                self._Event__cond.release()\n\n\nclass StoppableWSGIServer(WSGIServer):\n    \"\"\"\n    The code in this class is borrowed from the `SocketServer.BaseServer` class\n    in Python 2.6. The important functionality here is that the server is non-\n    blocking and that it can be shut down at any moment. This is made possible\n    by the server regularly polling the socket and checking if it has been\n    asked to stop.\n    Note for the future: Once Django stops supporting Python 2.6, this class\n    can be removed as `WSGIServer` will have this ability to shutdown on\n    demand and will not require the use of the _ImprovedEvent class whose code\n    is borrowed from Python 2.7.\n    \"\"\"\n\n    def __init__(self, *args, **kwargs):\n        super(StoppableWSGIServer, self).__init__(*args, **kwargs)\n        self.__is_shut_down = _ImprovedEvent()\n        self.__serving = False\n\n    def serve_forever(self, poll_interval=0.5):\n        \"\"\"\n        Handle one request at a time until shutdown.\n\n        Polls for shutdown every poll_interval seconds.\n        \"\"\"\n        self.__serving = True\n        self.__is_shut_down.clear()\n        while self.__serving:\n            r, w, e = select.select([self], [], [], poll_interval)\n            if r:\n                self._handle_request_noblock()\n        self.__is_shut_down.set()\n\n    def shutdown(self):\n        \"\"\"\n        Stops the serve_forever loop.\n\n        Blocks until the loop has finished. This must be called while\n        serve_forever() is running in another thread, or it will\n        deadlock.\n        \"\"\"\n        self.__serving = False\n        if not self.__is_shut_down.wait(2):\n            raise RuntimeError(\n                \"Failed to shutdown the live test server in 2 seconds. The \"\n                \"server might be stuck or generating a slow response.\")\n\n    def handle_request(self):\n        \"\"\"Handle one request, possibly blocking.\n        \"\"\"\n        fd_sets = select.select([self], [], [], None)\n        if not fd_sets[0]:\n            return\n        self._handle_request_noblock()\n\n    def _handle_request_noblock(self):\n        \"\"\"\n        Handle one request, without blocking.\n\n        I assume that select.select has returned that the socket is\n        readable before this function was called, so there should be\n        no risk of blocking in get_request().\n        \"\"\"\n        try:\n            request, client_address = self.get_request()\n        except socket.error:\n            return\n        if self.verify_request(request, client_address):\n            try:\n                self.process_request(request, client_address)\n            except Exception:\n                self.handle_error(request, client_address)\n                self.close_request(request)\n\n\nclass _MediaFilesHandler(StaticFilesHandler):\n    \"\"\"\n    Handler for serving the media files. This is a private class that is\n    meant to be used solely as a convenience by LiveServerThread.\n    \"\"\"\n\n    def get_base_dir(self):\n        return settings.MEDIA_ROOT\n\n    def get_base_url(self):\n        return settings.MEDIA_URL\n\n    def serve(self, request):\n        relative_url = request.path[len(self.base_url[2]):]\n        return serve(request, relative_url, document_root=self.get_base_dir())\n\n\nclass LiveServerThread(threading.Thread):\n    \"\"\"\n    Thread for running a live http server while the tests are running.\n    \"\"\"\n\n    def __init__(self, host, possible_ports, connections_override=None):\n        self.host = host\n        self.port = None\n        self.possible_ports = possible_ports\n        self.is_ready = threading.Event()\n        self.error = None\n        self.connections_override = connections_override\n        super(LiveServerThread, self).__init__()\n\n    def run(self):\n        \"\"\"\n        Sets up the live server and databases, and then loops over handling\n        http requests.\n        \"\"\"\n        if self.connections_override:\n            from django.db import connections\n            # Override this thread's database connections with the ones\n            # provided by the main thread.\n            for alias, conn in self.connections_override.items():\n                connections[alias] = conn\n        try:\n            # Create the handler for serving static and media files\n            handler = StaticFilesHandler(_MediaFilesHandler(WSGIHandler()))\n\n            # Go through the list of possible ports, hoping that we can find\n            # one that is free to use for the WSGI server.\n            for index, port in enumerate(self.possible_ports):\n                try:\n                    self.httpd = StoppableWSGIServer(\n                        (self.host, port), QuietWSGIRequestHandler)\n                except WSGIServerException as e:\n                    if (index + 1 < len(self.possible_ports) and\n                        hasattr(e.args[0], 'errno') and\n                        e.args[0].errno == errno.EADDRINUSE):\n                        # This port is already in use, so we go on and try with\n                        # the next one in the list.\n                        continue\n                    else:\n                        # Either none of the given ports are free or the error\n                        # is something else than \"Address already in use\". So\n                        # we let that error bubble up to the main thread.\n                        raise\n                else:\n                    # A free port was found.\n                    self.port = port\n                    break\n\n            self.httpd.set_app(handler)\n            self.is_ready.set()\n            self.httpd.serve_forever()\n        except Exception as e:\n            self.error = e\n            self.is_ready.set()\n\n    def join(self, timeout=None):\n        if hasattr(self, 'httpd'):\n            # Stop the WSGI server\n            self.httpd.shutdown()\n            self.httpd.server_close()\n        super(LiveServerThread, self).join(timeout)\n\n\nclass LiveServerTestCase(TransactionTestCase):\n    \"\"\"\n    Does basically the same as TransactionTestCase but also launches a live\n    http server in a separate thread so that the tests may use another testing\n    framework, such as Selenium for example, instead of the built-in dummy\n    client.\n    Note that it inherits from TransactionTestCase instead of TestCase because\n    the threads do not share the same transactions (unless if using in-memory\n    sqlite) and each thread needs to commit all their transactions so that the\n    other thread can see the changes.\n    \"\"\"\n\n    @property\n    def live_server_url(self):\n        return 'http://%s:%s' % (\n            self.server_thread.host, self.server_thread.port)\n\n    @classmethod\n    def setUpClass(cls):\n        connections_override = {}\n        for conn in connections.all():\n            # If using in-memory sqlite databases, pass the connections to\n            # the server thread.\n            if (conn.settings_dict['ENGINE'].rsplit('.', 1)[-1] in ('sqlite3', 'spatialite')\n                and conn.settings_dict['NAME'] == ':memory:'):\n                # Explicitly enable thread-shareability for this connection\n                conn.allow_thread_sharing = True\n                connections_override[conn.alias] = conn\n\n        # Launch the live server's thread\n        specified_address = os.environ.get(\n            'DJANGO_LIVE_TEST_SERVER_ADDRESS', 'localhost:8081')\n\n        # The specified ports may be of the form '8000-8010,8080,9200-9300'\n        # i.e. a comma-separated list of ports or ranges of ports, so we break\n        # it down into a detailed list of all possible ports.\n        possible_ports = []\n        try:\n            host, port_ranges = specified_address.split(':')\n            for port_range in port_ranges.split(','):\n                # A port range can be of either form: '8000' or '8000-8010'.\n                extremes = list(map(int, port_range.split('-')))\n                assert len(extremes) in [1, 2]\n                if len(extremes) == 1:\n                    # Port range of the form '8000'\n                    possible_ports.append(extremes[0])\n                else:\n                    # Port range of the form '8000-8010'\n                    for port in range(extremes[0], extremes[1] + 1):\n                        possible_ports.append(port)\n        except Exception:\n            raise ImproperlyConfigured('Invalid address (\"%s\") for live '\n                'server.' % specified_address)\n        cls.server_thread = LiveServerThread(\n            host, possible_ports, connections_override)\n        cls.server_thread.daemon = True\n        cls.server_thread.start()\n\n        # Wait for the live server to be ready\n        cls.server_thread.is_ready.wait()\n        if cls.server_thread.error:\n            raise cls.server_thread.error\n\n        super(LiveServerTestCase, cls).setUpClass()\n\n    @classmethod\n    def tearDownClass(cls):\n        # There may not be a 'server_thread' attribute if setUpClass() for some\n        # reasons has raised an exception.\n        if hasattr(cls, 'server_thread'):\n            # Terminate the live server's thread\n            cls.server_thread.join()\n\n        # Restore sqlite connections' non-sharability\n        for conn in connections.all():\n            if (conn.settings_dict['ENGINE'].rsplit('.', 1)[-1] in ('sqlite3', 'spatialite')\n                and conn.settings_dict['NAME'] == ':memory:'):\n                conn.allow_thread_sharing = False\n\n        super(LiveServerTestCase, cls).tearDownClass()\n"
  },
  {
    "path": "Django-1.5.1/django/test/utils.py",
    "content": "import re\nimport warnings\nfrom xml.dom.minidom import parseString, Node\n\nfrom django.conf import settings, UserSettingsHolder\nfrom django.core import mail\nfrom django.template import Template, loader, TemplateDoesNotExist\nfrom django.template.loaders import cached\nfrom django.test.signals import template_rendered, setting_changed\nfrom django.utils.encoding import force_str\nfrom django.utils.functional import wraps\nfrom django.utils import six\nfrom django.utils.translation import deactivate\n\n\n__all__ = (\n    'Approximate', 'ContextList',  'get_runner', 'override_settings',\n    'setup_test_environment', 'teardown_test_environment',\n)\n\nRESTORE_LOADERS_ATTR = '_original_template_source_loaders'\n\n\nclass Approximate(object):\n    def __init__(self, val, places=7):\n        self.val = val\n        self.places = places\n\n    def __repr__(self):\n        return repr(self.val)\n\n    def __eq__(self, other):\n        if self.val == other:\n            return True\n        return round(abs(self.val - other), self.places) == 0\n\n\nclass ContextList(list):\n    \"\"\"A wrapper that provides direct key access to context items contained\n    in a list of context objects.\n    \"\"\"\n    def __getitem__(self, key):\n        if isinstance(key, six.string_types):\n            for subcontext in self:\n                if key in subcontext:\n                    return subcontext[key]\n            raise KeyError(key)\n        else:\n            return super(ContextList, self).__getitem__(key)\n\n    def __contains__(self, key):\n        try:\n            self[key]\n        except KeyError:\n            return False\n        return True\n\n\ndef instrumented_test_render(self, context):\n    \"\"\"\n    An instrumented Template render method, providing a signal\n    that can be intercepted by the test system Client\n    \"\"\"\n    template_rendered.send(sender=self, template=self, context=context)\n    return self.nodelist.render(context)\n\n\ndef setup_test_environment():\n    \"\"\"Perform any global pre-test setup. This involves:\n\n        - Installing the instrumented test renderer\n        - Set the email backend to the locmem email backend.\n        - Setting the active locale to match the LANGUAGE_CODE setting.\n    \"\"\"\n    Template.original_render = Template._render\n    Template._render = instrumented_test_render\n\n    mail.original_email_backend = settings.EMAIL_BACKEND\n    settings.EMAIL_BACKEND = 'django.core.mail.backends.locmem.EmailBackend'\n\n    settings._original_allowed_hosts = settings.ALLOWED_HOSTS\n    settings.ALLOWED_HOSTS = ['*']\n\n    mail.outbox = []\n\n    deactivate()\n\n\ndef teardown_test_environment():\n    \"\"\"Perform any global post-test teardown. This involves:\n\n        - Restoring the original test renderer\n        - Restoring the email sending functions\n\n    \"\"\"\n    Template._render = Template.original_render\n    del Template.original_render\n\n    settings.EMAIL_BACKEND = mail.original_email_backend\n    del mail.original_email_backend\n\n    settings.ALLOWED_HOSTS = settings._original_allowed_hosts\n    del settings._original_allowed_hosts\n\n    del mail.outbox\n\n\ndef get_warnings_state():\n    \"\"\"\n    Returns an object containing the state of the warnings module\n    \"\"\"\n    # There is no public interface for doing this, but this implementation of\n    # get_warnings_state and restore_warnings_state appears to work on Python\n    # 2.4 to 2.7.\n    return warnings.filters[:]\n\n\ndef restore_warnings_state(state):\n    \"\"\"\n    Restores the state of the warnings module when passed an object that was\n    returned by get_warnings_state()\n    \"\"\"\n    warnings.filters = state[:]\n\n\ndef get_runner(settings, test_runner_class=None):\n    if not test_runner_class:\n        test_runner_class = settings.TEST_RUNNER\n\n    test_path = test_runner_class.split('.')\n    # Allow for Python 2.5 relative paths\n    if len(test_path) > 1:\n        test_module_name = '.'.join(test_path[:-1])\n    else:\n        test_module_name = '.'\n    test_module = __import__(test_module_name, {}, {}, force_str(test_path[-1]))\n    test_runner = getattr(test_module, test_path[-1])\n    return test_runner\n\n\ndef setup_test_template_loader(templates_dict, use_cached_loader=False):\n    \"\"\"\n    Changes Django to only find templates from within a dictionary (where each\n    key is the template name and each value is the corresponding template\n    content to return).\n\n    Use meth:`restore_template_loaders` to restore the original loaders.\n    \"\"\"\n    if hasattr(loader, RESTORE_LOADERS_ATTR):\n        raise Exception(\"loader.%s already exists\" % RESTORE_LOADERS_ATTR)\n\n    def test_template_loader(template_name, template_dirs=None):\n        \"A custom template loader that loads templates from a dictionary.\"\n        try:\n            return (templates_dict[template_name], \"test:%s\" % template_name)\n        except KeyError:\n            raise TemplateDoesNotExist(template_name)\n\n    if use_cached_loader:\n        template_loader = cached.Loader(('test_template_loader',))\n        template_loader._cached_loaders = (test_template_loader,)\n    else:\n        template_loader = test_template_loader\n\n    setattr(loader, RESTORE_LOADERS_ATTR, loader.template_source_loaders)\n    loader.template_source_loaders = (template_loader,)\n    return template_loader\n\n\ndef restore_template_loaders():\n    \"\"\"\n    Restores the original template loaders after\n    :meth:`setup_test_template_loader` has been run.\n    \"\"\"\n    loader.template_source_loaders = getattr(loader, RESTORE_LOADERS_ATTR)\n    delattr(loader, RESTORE_LOADERS_ATTR)\n\n\nclass override_settings(object):\n    \"\"\"\n    Acts as either a decorator, or a context manager. If it's a decorator it\n    takes a function and returns a wrapped function. If it's a contextmanager\n    it's used with the ``with`` statement. In either event entering/exiting\n    are called before and after, respectively, the function/block is executed.\n    \"\"\"\n    def __init__(self, **kwargs):\n        self.options = kwargs\n        self.wrapped = settings._wrapped\n\n    def __enter__(self):\n        self.enable()\n\n    def __exit__(self, exc_type, exc_value, traceback):\n        self.disable()\n\n    def __call__(self, test_func):\n        from django.test import SimpleTestCase\n        if isinstance(test_func, type):\n            if not issubclass(test_func, SimpleTestCase):\n                raise Exception(\n                    \"Only subclasses of Django SimpleTestCase can be decorated \"\n                    \"with override_settings\")\n            original_pre_setup = test_func._pre_setup\n            original_post_teardown = test_func._post_teardown\n\n            def _pre_setup(innerself):\n                self.enable()\n                original_pre_setup(innerself)\n\n            def _post_teardown(innerself):\n                original_post_teardown(innerself)\n                self.disable()\n            test_func._pre_setup = _pre_setup\n            test_func._post_teardown = _post_teardown\n            return test_func\n        else:\n            @wraps(test_func)\n            def inner(*args, **kwargs):\n                with self:\n                    return test_func(*args, **kwargs)\n        return inner\n\n    def enable(self):\n        override = UserSettingsHolder(settings._wrapped)\n        for key, new_value in self.options.items():\n            setattr(override, key, new_value)\n        settings._wrapped = override\n        for key, new_value in self.options.items():\n            setting_changed.send(sender=settings._wrapped.__class__,\n                                 setting=key, value=new_value)\n\n    def disable(self):\n        settings._wrapped = self.wrapped\n        for key in self.options:\n            new_value = getattr(settings, key, None)\n            setting_changed.send(sender=settings._wrapped.__class__,\n                                 setting=key, value=new_value)\n\n\ndef compare_xml(want, got):\n    \"\"\"Tries to do a 'xml-comparison' of want and got.  Plain string\n    comparison doesn't always work because, for example, attribute\n    ordering should not be important. Comment nodes are not considered in the\n    comparison.\n\n    Based on http://codespeak.net/svn/lxml/trunk/src/lxml/doctestcompare.py\n    \"\"\"\n    _norm_whitespace_re = re.compile(r'[ \\t\\n][ \\t\\n]+')\n    def norm_whitespace(v):\n        return _norm_whitespace_re.sub(' ', v)\n\n    def child_text(element):\n        return ''.join([c.data for c in element.childNodes\n                        if c.nodeType == Node.TEXT_NODE])\n\n    def children(element):\n        return [c for c in element.childNodes\n                if c.nodeType == Node.ELEMENT_NODE]\n\n    def norm_child_text(element):\n        return norm_whitespace(child_text(element))\n\n    def attrs_dict(element):\n        return dict(element.attributes.items())\n\n    def check_element(want_element, got_element):\n        if want_element.tagName != got_element.tagName:\n            return False\n        if norm_child_text(want_element) != norm_child_text(got_element):\n            return False\n        if attrs_dict(want_element) != attrs_dict(got_element):\n            return False\n        want_children = children(want_element)\n        got_children = children(got_element)\n        if len(want_children) != len(got_children):\n            return False\n        for want, got in zip(want_children, got_children):\n            if not check_element(want, got):\n                return False\n        return True\n\n    def first_node(document):\n        for node in document.childNodes:\n            if node.nodeType != Node.COMMENT_NODE:\n                return node\n\n    want, got = strip_quotes(want, got)\n    want = want.replace('\\\\n','\\n')\n    got = got.replace('\\\\n','\\n')\n\n    # If the string is not a complete xml document, we may need to add a\n    # root element. This allow us to compare fragments, like \"<foo/><bar/>\"\n    if not want.startswith('<?xml'):\n        wrapper = '<root>%s</root>'\n        want = wrapper % want\n        got = wrapper % got\n\n    # Parse the want and got strings, and compare the parsings.\n    want_root = first_node(parseString(want))\n    got_root = first_node(parseString(got))\n\n    return check_element(want_root, got_root)\n\n\ndef strip_quotes(want, got):\n    \"\"\"\n    Strip quotes of doctests output values:\n\n    >>> strip_quotes(\"'foo'\")\n    \"foo\"\n    >>> strip_quotes('\"foo\"')\n    \"foo\"\n    \"\"\"\n    def is_quoted_string(s):\n        s = s.strip()\n        return (len(s) >= 2\n                and s[0] == s[-1]\n                and s[0] in ('\"', \"'\"))\n\n    def is_quoted_unicode(s):\n        s = s.strip()\n        return (len(s) >= 3\n                and s[0] == 'u'\n                and s[1] == s[-1]\n                and s[1] in ('\"', \"'\"))\n\n    if is_quoted_string(want) and is_quoted_string(got):\n        want = want.strip()[1:-1]\n        got = got.strip()[1:-1]\n    elif is_quoted_unicode(want) and is_quoted_unicode(got):\n        want = want.strip()[2:-1]\n        got = got.strip()[2:-1]\n    return want, got\n\ndef str_prefix(s):\n    return s % {'_': '' if six.PY3 else 'u'}\n"
  },
  {
    "path": "Django-1.5.1/django/utils/2to3_fixes/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/utils/2to3_fixes/fix_unicode.py",
    "content": "\"\"\"Fixer for __unicode__ methods.\n\nUses the django.utils.encoding.python_2_unicode_compatible decorator.\n\"\"\"\n\nfrom __future__ import unicode_literals\n\nfrom lib2to3 import fixer_base\nfrom lib2to3.fixer_util import find_indentation, Name, syms, touch_import\nfrom lib2to3.pgen2 import token\nfrom lib2to3.pytree import Leaf, Node\n\n\nclass FixUnicode(fixer_base.BaseFix):\n\n    BM_compatible = True\n    PATTERN = \"\"\"\n    classdef< 'class' any+ ':'\n              suite< any*\n                     funcdef< 'def' unifunc='__unicode__'\n                              parameters< '(' NAME ')' > any+ >\n                     any* > >\n    \"\"\"\n\n    def transform(self, node, results):\n        unifunc = results[\"unifunc\"]\n        strfunc = Name(\"__str__\", prefix=unifunc.prefix)\n        unifunc.replace(strfunc)\n\n        klass = node.clone()\n        klass.prefix = '\\n' + find_indentation(node)\n        decorator = Node(syms.decorator, [Leaf(token.AT, \"@\"), Name('python_2_unicode_compatible')])\n        decorated = Node(syms.decorated, [decorator, klass], prefix=node.prefix)\n        node.replace(decorated)\n\n        touch_import('django.utils.encoding', 'python_2_unicode_compatible', decorated)\n"
  },
  {
    "path": "Django-1.5.1/django/utils/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/utils/_os.py",
    "content": "import os\nimport stat\nimport sys\nfrom os.path import join, normcase, normpath, abspath, isabs, sep, dirname\n\nfrom django.utils.encoding import force_text\nfrom django.utils import six\n\ntry:\n    WindowsError = WindowsError\nexcept NameError:\n    class WindowsError(Exception):\n        pass\n\nif not six.PY3:\n    fs_encoding = sys.getfilesystemencoding() or sys.getdefaultencoding()\n\n\n# Under Python 2, define our own abspath function that can handle joining\n# unicode paths to a current working directory that has non-ASCII characters\n# in it.  This isn't necessary on Windows since the Windows version of abspath\n# handles this correctly. It also handles drive letters differently than the\n# pure Python implementation, so it's best not to replace it.\nif six.PY3 or os.name == 'nt':\n    abspathu = abspath\nelse:\n    def abspathu(path):\n        \"\"\"\n        Version of os.path.abspath that uses the unicode representation\n        of the current working directory, thus avoiding a UnicodeDecodeError\n        in join when the cwd has non-ASCII characters.\n        \"\"\"\n        if not isabs(path):\n            path = join(os.getcwdu(), path)\n        return normpath(path)\n\ndef upath(path):\n    \"\"\"\n    Always return a unicode path.\n    \"\"\"\n    if not six.PY3:\n        return path.decode(fs_encoding)\n    return path\n\ndef npath(path):\n    \"\"\"\n    Always return a native path, that is unicode on Python 3 and bytestring on\n    Python 2.\n    \"\"\"\n    if not six.PY3 and not isinstance(path, bytes):\n        return path.encode(fs_encoding)\n    return path\n\ndef safe_join(base, *paths):\n    \"\"\"\n    Joins one or more path components to the base path component intelligently.\n    Returns a normalized, absolute version of the final path.\n\n    The final path must be located inside of the base path component (otherwise\n    a ValueError is raised).\n    \"\"\"\n    base = force_text(base)\n    paths = [force_text(p) for p in paths]\n    final_path = abspathu(join(base, *paths))\n    base_path = abspathu(base)\n    # Ensure final_path starts with base_path (using normcase to ensure we\n    # don't false-negative on case insensitive operating systems like Windows),\n    # further, one of the following conditions must be true:\n    #  a) The next character is the path separator (to prevent conditions like\n    #     safe_join(\"/dir\", \"/../d\"))\n    #  b) The final path must be the same as the base path.\n    #  c) The base path must be the most root path (meaning either \"/\" or \"C:\\\\\")\n    if (not normcase(final_path).startswith(normcase(base_path + sep)) and\n        normcase(final_path) != normcase(base_path) and\n        dirname(normcase(base_path)) != normcase(base_path)):\n        raise ValueError('The joined path (%s) is located outside of the base '\n                         'path component (%s)' % (final_path, base_path))\n    return final_path\n\n\ndef rmtree_errorhandler(func, path, exc_info):\n    \"\"\"\n    On Windows, some files are read-only (e.g. in in .svn dirs), so when\n    rmtree() tries to remove them, an exception is thrown.\n    We catch that here, remove the read-only attribute, and hopefully\n    continue without problems.\n    \"\"\"\n    exctype, value = exc_info[:2]\n    # looking for a windows error\n    if exctype is not WindowsError or 'Access is denied' not in str(value):\n        raise\n    # file type should currently be read only\n    if ((os.stat(path).st_mode & stat.S_IREAD) != stat.S_IREAD):\n        raise\n    # convert to read/write\n    os.chmod(path, stat.S_IWRITE)\n    # use the original function to repeat the operation\n    func(path)\n"
  },
  {
    "path": "Django-1.5.1/django/utils/archive.py",
    "content": "\"\"\"\nBased on \"python-archive\" -- http://pypi.python.org/pypi/python-archive/\n\nCopyright (c) 2010 Gary Wilson Jr. <gary.wilson@gmail.com> and contributors.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\"\"\"\nimport os\nimport shutil\nimport tarfile\nimport zipfile\n\nfrom django.utils import six\n\n\nclass ArchiveException(Exception):\n    \"\"\"\n    Base exception class for all archive errors.\n    \"\"\"\n\n\nclass UnrecognizedArchiveFormat(ArchiveException):\n    \"\"\"\n    Error raised when passed file is not a recognized archive format.\n    \"\"\"\n\n\ndef extract(path, to_path=''):\n    \"\"\"\n    Unpack the tar or zip file at the specified path to the directory\n    specified by to_path.\n    \"\"\"\n    with Archive(path) as archive:\n        archive.extract(to_path)\n\n\nclass Archive(object):\n    \"\"\"\n    The external API class that encapsulates an archive implementation.\n    \"\"\"\n    def __init__(self, file):\n        self._archive = self._archive_cls(file)(file)\n\n    @staticmethod\n    def _archive_cls(file):\n        cls = None\n        if isinstance(file, six.string_types):\n            filename = file\n        else:\n            try:\n                filename = file.name\n            except AttributeError:\n                raise UnrecognizedArchiveFormat(\n                    \"File object not a recognized archive format.\")\n        base, tail_ext = os.path.splitext(filename.lower())\n        cls = extension_map.get(tail_ext)\n        if not cls:\n            base, ext = os.path.splitext(base)\n            cls = extension_map.get(ext)\n        if not cls:\n            raise UnrecognizedArchiveFormat(\n                \"Path not a recognized archive format: %s\" % filename)\n        return cls\n\n    def __enter__(self):\n        return self\n\n    def __exit__(self, exc_type, exc_value, traceback):\n        self.close()\n\n    def extract(self, to_path=''):\n        self._archive.extract(to_path)\n\n    def list(self):\n        self._archive.list()\n\n    def close(self):\n        self._archive.close()\n\n\nclass BaseArchive(object):\n    \"\"\"\n    Base Archive class.  Implementations should inherit this class.\n    \"\"\"\n    def split_leading_dir(self, path):\n        path = str(path)\n        path = path.lstrip('/').lstrip('\\\\')\n        if '/' in path and (('\\\\' in path and path.find('/') < path.find('\\\\'))\n                            or '\\\\' not in path):\n            return path.split('/', 1)\n        elif '\\\\' in path:\n            return path.split('\\\\', 1)\n        else:\n            return path, ''\n\n    def has_leading_dir(self, paths):\n        \"\"\"\n        Returns true if all the paths have the same leading path name\n        (i.e., everything is in one subdirectory in an archive)\n        \"\"\"\n        common_prefix = None\n        for path in paths:\n            prefix, rest = self.split_leading_dir(path)\n            if not prefix:\n                return False\n            elif common_prefix is None:\n                common_prefix = prefix\n            elif prefix != common_prefix:\n                return False\n        return True\n\n    def extract(self):\n        raise NotImplementedError\n\n    def list(self):\n        raise NotImplementedError\n\n\nclass TarArchive(BaseArchive):\n\n    def __init__(self, file):\n        self._archive = tarfile.open(file)\n\n    def list(self, *args, **kwargs):\n        self._archive.list(*args, **kwargs)\n\n    def extract(self, to_path):\n        # note: python<=2.5 doesnt seem to know about pax headers, filter them\n        members = [member for member in self._archive.getmembers()\n                   if member.name != 'pax_global_header']\n        leading = self.has_leading_dir(members)\n        for member in members:\n            name = member.name\n            if leading:\n                name = self.split_leading_dir(name)[1]\n            filename = os.path.join(to_path, name)\n            if member.isdir():\n                if filename and not os.path.exists(filename):\n                    os.makedirs(filename)\n            else:\n                try:\n                    extracted = self._archive.extractfile(member)\n                except (KeyError, AttributeError) as exc:\n                    # Some corrupt tar files seem to produce this\n                    # (specifically bad symlinks)\n                    print(\"In the tar file %s the member %s is invalid: %s\" %\n                            (name, member.name, exc))\n                else:\n                    dirname = os.path.dirname(filename)\n                    if dirname and not os.path.exists(dirname):\n                        os.makedirs(dirname)\n                    with open(filename, 'wb') as outfile:\n                        shutil.copyfileobj(extracted, outfile)\n                finally:\n                    if extracted:\n                        extracted.close()\n\n    def close(self):\n        self._archive.close()\n\n\nclass ZipArchive(BaseArchive):\n\n    def __init__(self, file):\n        self._archive = zipfile.ZipFile(file)\n\n    def list(self, *args, **kwargs):\n        self._archive.printdir(*args, **kwargs)\n\n    def extract(self, to_path):\n        namelist = self._archive.namelist()\n        leading = self.has_leading_dir(namelist)\n        for name in namelist:\n            data = self._archive.read(name)\n            if leading:\n                name = self.split_leading_dir(name)[1]\n            filename = os.path.join(to_path, name)\n            dirname = os.path.dirname(filename)\n            if dirname and not os.path.exists(dirname):\n                os.makedirs(dirname)\n            if filename.endswith(('/', '\\\\')):\n                # A directory\n                if not os.path.exists(filename):\n                    os.makedirs(filename)\n            else:\n                with open(filename, 'wb') as outfile:\n                    outfile.write(data)\n\n    def close(self):\n        self._archive.close()\n\nextension_map = {\n    '.tar': TarArchive,\n    '.tar.bz2': TarArchive,\n    '.tar.gz': TarArchive,\n    '.tgz': TarArchive,\n    '.tz2': TarArchive,\n    '.zip': ZipArchive,\n}\n"
  },
  {
    "path": "Django-1.5.1/django/utils/autoreload.py",
    "content": "# Autoreloading launcher.\n# Borrowed from Peter Hunt and the CherryPy project (http://www.cherrypy.org).\n# Some taken from Ian Bicking's Paste (http://pythonpaste.org/).\n#\n# Portions copyright (c) 2004, CherryPy Team (team@cherrypy.org)\n# All rights reserved.\n#\n# Redistribution and use in source and binary forms, with or without modification,\n# are permitted provided that the following conditions are met:\n#\n#     * Redistributions of source code must retain the above copyright notice,\n#       this list of conditions and the following disclaimer.\n#     * Redistributions in binary form must reproduce the above copyright notice,\n#       this list of conditions and the following disclaimer in the documentation\n#       and/or other materials provided with the distribution.\n#     * Neither the name of the CherryPy Team nor the names of its contributors\n#       may be used to endorse or promote products derived from this software\n#       without specific prior written permission.\n#\n# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE\n# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\nimport os, sys, time, signal\n\ntry:\n    from django.utils.six.moves import _thread as thread\nexcept ImportError:\n    from django.utils.six.moves import _dummy_thread as thread\n\n# This import does nothing, but it's necessary to avoid some race conditions\n# in the threading module. See http://code.djangoproject.com/ticket/2330 .\ntry:\n    import threading\nexcept ImportError:\n    pass\n\ntry:\n    import termios\nexcept ImportError:\n    termios = None\n\nRUN_RELOADER = True\n\n_mtimes = {}\n_win = (sys.platform == \"win32\")\n\ndef code_changed():\n    global _mtimes, _win\n    filenames = [getattr(m, \"__file__\", None) for m in sys.modules.values()]\n    for filename in filter(None, filenames):\n        if filename.endswith(\".pyc\") or filename.endswith(\".pyo\"):\n            filename = filename[:-1]\n        if filename.endswith(\"$py.class\"):\n            filename = filename[:-9] + \".py\"\n        if not os.path.exists(filename):\n            continue # File might be in an egg, so it can't be reloaded.\n        stat = os.stat(filename)\n        mtime = stat.st_mtime\n        if _win:\n            mtime -= stat.st_ctime\n        if filename not in _mtimes:\n            _mtimes[filename] = mtime\n            continue\n        if mtime != _mtimes[filename]:\n            _mtimes = {}\n            return True\n    return False\n\ndef ensure_echo_on():\n    if termios:\n        fd = sys.stdin\n        if fd.isatty():\n            attr_list = termios.tcgetattr(fd)\n            if not attr_list[3] & termios.ECHO:\n                attr_list[3] |= termios.ECHO\n                if hasattr(signal, 'SIGTTOU'):\n                    old_handler = signal.signal(signal.SIGTTOU, signal.SIG_IGN)\n                else:\n                    old_handler = None\n                termios.tcsetattr(fd, termios.TCSANOW, attr_list)\n                if old_handler is not None:\n                    signal.signal(signal.SIGTTOU, old_handler)\n\ndef reloader_thread():\n    ensure_echo_on()\n    while RUN_RELOADER:\n        if code_changed():\n            sys.exit(3) # force reload\n        time.sleep(1)\n\ndef restart_with_reloader():\n    while True:\n        args = [sys.executable] + ['-W%s' % o for o in sys.warnoptions] + sys.argv\n        if sys.platform == \"win32\":\n            args = ['\"%s\"' % arg for arg in args]\n        new_environ = os.environ.copy()\n        new_environ[\"RUN_MAIN\"] = 'true'\n        exit_code = os.spawnve(os.P_WAIT, sys.executable, args, new_environ)\n        if exit_code != 3:\n            return exit_code\n\ndef python_reloader(main_func, args, kwargs):\n    if os.environ.get(\"RUN_MAIN\") == \"true\":\n        thread.start_new_thread(main_func, args, kwargs)\n        try:\n            reloader_thread()\n        except KeyboardInterrupt:\n            pass\n    else:\n        try:\n            exit_code = restart_with_reloader()\n            if exit_code < 0:\n                os.kill(os.getpid(), -exit_code)\n            else:\n                sys.exit(exit_code)\n        except KeyboardInterrupt:\n            pass\n\ndef jython_reloader(main_func, args, kwargs):\n    from _systemrestart import SystemRestart\n    thread.start_new_thread(main_func, args)\n    while True:\n        if code_changed():\n            raise SystemRestart\n        time.sleep(1)\n\n\ndef main(main_func, args=None, kwargs=None):\n    if args is None:\n        args = ()\n    if kwargs is None:\n        kwargs = {}\n    if sys.platform.startswith('java'):\n        reloader = jython_reloader\n    else:\n        reloader = python_reloader\n    reloader(main_func, args, kwargs)\n\n"
  },
  {
    "path": "Django-1.5.1/django/utils/baseconv.py",
    "content": "# Copyright (c) 2010 Guilherme Gondim. All rights reserved.\n# Copyright (c) 2009 Simon Willison. All rights reserved.\n# Copyright (c) 2002 Drew Perttula. All rights reserved.\n#\n# License:\n#   Python Software Foundation License version 2\n#\n# See the file \"LICENSE\" for terms & conditions for usage, and a DISCLAIMER OF\n# ALL WARRANTIES.\n#\n# This Baseconv distribution contains no GNU General Public Licensed (GPLed)\n# code so it may be used in proprietary projects just like prior ``baseconv``\n# distributions.\n#\n# All trademarks referenced herein are property of their respective holders.\n#\n\n\"\"\"\nConvert numbers from base 10 integers to base X strings and back again.\n\nSample usage::\n\n  >>> base20 = BaseConverter('0123456789abcdefghij')\n  >>> base20.encode(1234)\n  '31e'\n  >>> base20.decode('31e')\n  1234\n  >>> base20.encode(-1234)\n  '-31e'\n  >>> base20.decode('-31e')\n  -1234\n  >>> base11 = BaseConverter('0123456789-', sign='$')\n  >>> base11.encode('$1234')\n  '$-22'\n  >>> base11.decode('$-22')\n  '$1234'\n\n\"\"\"\n\nBASE2_ALPHABET = '01'\nBASE16_ALPHABET = '0123456789ABCDEF'\nBASE56_ALPHABET = '23456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnpqrstuvwxyz'\nBASE36_ALPHABET = '0123456789abcdefghijklmnopqrstuvwxyz'\nBASE62_ALPHABET = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'\nBASE64_ALPHABET = BASE62_ALPHABET + '-_'\n\nclass BaseConverter(object):\n    decimal_digits = '0123456789'\n\n    def __init__(self, digits, sign='-'):\n        self.sign = sign\n        self.digits = digits\n        if sign in self.digits:\n            raise ValueError('Sign character found in converter base digits.')\n\n    def __repr__(self):\n        return \"<BaseConverter: base%s (%s)>\" % (len(self.digits), self.digits)\n\n    def encode(self, i):\n        neg, value = self.convert(i, self.decimal_digits, self.digits, '-')\n        if neg:\n            return self.sign + value\n        return value\n\n    def decode(self, s):\n        neg, value = self.convert(s, self.digits, self.decimal_digits, self.sign)\n        if neg:\n            value = '-' + value\n        return int(value)\n\n    def convert(self, number, from_digits, to_digits, sign):\n        if str(number)[0] == sign:\n            number = str(number)[1:]\n            neg = 1\n        else:\n            neg = 0\n\n        # make an integer out of the number\n        x = 0\n        for digit in str(number):\n            x = x * len(from_digits) + from_digits.index(digit)\n\n        # create the result in base 'len(to_digits)'\n        if x == 0:\n            res = to_digits[0]\n        else:\n            res = ''\n            while x > 0:\n                digit = x % len(to_digits)\n                res = to_digits[digit] + res\n                x = int(x // len(to_digits))\n        return neg, res\n\nbase2 = BaseConverter(BASE2_ALPHABET)\nbase16 = BaseConverter(BASE16_ALPHABET)\nbase36 = BaseConverter(BASE36_ALPHABET)\nbase56 = BaseConverter(BASE56_ALPHABET)\nbase62 = BaseConverter(BASE62_ALPHABET)\nbase64 = BaseConverter(BASE64_ALPHABET, sign='$')\n"
  },
  {
    "path": "Django-1.5.1/django/utils/cache.py",
    "content": "\"\"\"\nThis module contains helper functions for controlling caching. It does so by\nmanaging the \"Vary\" header of responses. It includes functions to patch the\nheader of response objects directly and decorators that change functions to do\nthat header-patching themselves.\n\nFor information on the Vary header, see:\n\n    http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.44\n\nEssentially, the \"Vary\" HTTP header defines which headers a cache should take\ninto account when building its cache key. Requests with the same path but\ndifferent header content for headers named in \"Vary\" need to get different\ncache keys to prevent delivery of wrong content.\n\nAn example: i18n middleware would need to distinguish caches by the\n\"Accept-language\" header.\n\"\"\"\nfrom __future__ import unicode_literals\n\nimport hashlib\nimport re\nimport time\n\nfrom django.conf import settings\nfrom django.core.cache import get_cache\nfrom django.utils.encoding import iri_to_uri, force_bytes, force_text\nfrom django.utils.http import http_date\nfrom django.utils.timezone import get_current_timezone_name\nfrom django.utils.translation import get_language\n\ncc_delim_re = re.compile(r'\\s*,\\s*')\n\ndef patch_cache_control(response, **kwargs):\n    \"\"\"\n    This function patches the Cache-Control header by adding all\n    keyword arguments to it. The transformation is as follows:\n\n    * All keyword parameter names are turned to lowercase, and underscores\n      are converted to hyphens.\n    * If the value of a parameter is True (exactly True, not just a\n      true value), only the parameter name is added to the header.\n    * All other parameters are added with their value, after applying\n      str() to it.\n    \"\"\"\n    def dictitem(s):\n        t = s.split('=', 1)\n        if len(t) > 1:\n            return (t[0].lower(), t[1])\n        else:\n            return (t[0].lower(), True)\n\n    def dictvalue(t):\n        if t[1] is True:\n            return t[0]\n        else:\n            return '%s=%s' % (t[0], t[1])\n\n    if response.has_header('Cache-Control'):\n        cc = cc_delim_re.split(response['Cache-Control'])\n        cc = dict([dictitem(el) for el in cc])\n    else:\n        cc = {}\n\n    # If there's already a max-age header but we're being asked to set a new\n    # max-age, use the minimum of the two ages. In practice this happens when\n    # a decorator and a piece of middleware both operate on a given view.\n    if 'max-age' in cc and 'max_age' in kwargs:\n        kwargs['max_age'] = min(int(cc['max-age']), kwargs['max_age'])\n\n    # Allow overriding private caching and vice versa\n    if 'private' in cc and 'public' in kwargs:\n        del cc['private']\n    elif 'public' in cc and 'private' in kwargs:\n        del cc['public']\n\n    for (k, v) in kwargs.items():\n        cc[k.replace('_', '-')] = v\n    cc = ', '.join([dictvalue(el) for el in cc.items()])\n    response['Cache-Control'] = cc\n\ndef get_max_age(response):\n    \"\"\"\n    Returns the max-age from the response Cache-Control header as an integer\n    (or ``None`` if it wasn't found or wasn't an integer.\n    \"\"\"\n    if not response.has_header('Cache-Control'):\n        return\n    cc = dict([_to_tuple(el) for el in\n        cc_delim_re.split(response['Cache-Control'])])\n    if 'max-age' in cc:\n        try:\n            return int(cc['max-age'])\n        except (ValueError, TypeError):\n            pass\n\ndef _set_response_etag(response):\n    if not response.streaming:\n        response['ETag'] = '\"%s\"' % hashlib.md5(response.content).hexdigest()\n    return response\n\ndef patch_response_headers(response, cache_timeout=None):\n    \"\"\"\n    Adds some useful headers to the given HttpResponse object:\n        ETag, Last-Modified, Expires and Cache-Control\n\n    Each header is only added if it isn't already set.\n\n    cache_timeout is in seconds. The CACHE_MIDDLEWARE_SECONDS setting is used\n    by default.\n    \"\"\"\n    if cache_timeout is None:\n        cache_timeout = settings.CACHE_MIDDLEWARE_SECONDS\n    if cache_timeout < 0:\n        cache_timeout = 0 # Can't have max-age negative\n    if settings.USE_ETAGS and not response.has_header('ETag'):\n        if hasattr(response, 'render') and callable(response.render):\n            response.add_post_render_callback(_set_response_etag)\n        else:\n            response = _set_response_etag(response)\n    if not response.has_header('Last-Modified'):\n        response['Last-Modified'] = http_date()\n    if not response.has_header('Expires'):\n        response['Expires'] = http_date(time.time() + cache_timeout)\n    patch_cache_control(response, max_age=cache_timeout)\n\ndef add_never_cache_headers(response):\n    \"\"\"\n    Adds headers to a response to indicate that a page should never be cached.\n    \"\"\"\n    patch_response_headers(response, cache_timeout=-1)\n\ndef patch_vary_headers(response, newheaders):\n    \"\"\"\n    Adds (or updates) the \"Vary\" header in the given HttpResponse object.\n    newheaders is a list of header names that should be in \"Vary\". Existing\n    headers in \"Vary\" aren't removed.\n    \"\"\"\n    # Note that we need to keep the original order intact, because cache\n    # implementations may rely on the order of the Vary contents in, say,\n    # computing an MD5 hash.\n    if response.has_header('Vary'):\n        vary_headers = cc_delim_re.split(response['Vary'])\n    else:\n        vary_headers = []\n    # Use .lower() here so we treat headers as case-insensitive.\n    existing_headers = set([header.lower() for header in vary_headers])\n    additional_headers = [newheader for newheader in newheaders\n                          if newheader.lower() not in existing_headers]\n    response['Vary'] = ', '.join(vary_headers + additional_headers)\n\ndef has_vary_header(response, header_query):\n    \"\"\"\n    Checks to see if the response has a given header name in its Vary header.\n    \"\"\"\n    if not response.has_header('Vary'):\n        return False\n    vary_headers = cc_delim_re.split(response['Vary'])\n    existing_headers = set([header.lower() for header in vary_headers])\n    return header_query.lower() in existing_headers\n\ndef _i18n_cache_key_suffix(request, cache_key):\n    \"\"\"If necessary, adds the current locale or time zone to the cache key.\"\"\"\n    if settings.USE_I18N or settings.USE_L10N:\n        # first check if LocaleMiddleware or another middleware added\n        # LANGUAGE_CODE to request, then fall back to the active language\n        # which in turn can also fall back to settings.LANGUAGE_CODE\n        cache_key += '.%s' % getattr(request, 'LANGUAGE_CODE', get_language())\n    if settings.USE_TZ:\n        # The datetime module doesn't restrict the output of tzname().\n        # Windows is known to use non-standard, locale-dependant names.\n        # User-defined tzinfo classes may return absolutely anything.\n        # Hence this paranoid conversion to create a valid cache key.\n        tz_name = force_text(get_current_timezone_name(), errors='ignore')\n        cache_key += '.%s' % tz_name.encode('ascii', 'ignore').decode('ascii').replace(' ', '_')\n    return cache_key\n\ndef _generate_cache_key(request, method, headerlist, key_prefix):\n    \"\"\"Returns a cache key from the headers given in the header list.\"\"\"\n    ctx = hashlib.md5()\n    for header in headerlist:\n        value = request.META.get(header, None)\n        if value is not None:\n            ctx.update(force_bytes(value))\n    path = hashlib.md5(force_bytes(iri_to_uri(request.get_full_path())))\n    cache_key = 'views.decorators.cache.cache_page.%s.%s.%s.%s' % (\n        key_prefix, method, path.hexdigest(), ctx.hexdigest())\n    return _i18n_cache_key_suffix(request, cache_key)\n\ndef _generate_cache_header_key(key_prefix, request):\n    \"\"\"Returns a cache key for the header cache.\"\"\"\n    path = hashlib.md5(force_bytes(iri_to_uri(request.get_full_path())))\n    cache_key = 'views.decorators.cache.cache_header.%s.%s' % (\n        key_prefix, path.hexdigest())\n    return _i18n_cache_key_suffix(request, cache_key)\n\ndef get_cache_key(request, key_prefix=None, method='GET', cache=None):\n    \"\"\"\n    Returns a cache key based on the request path and query. It can be used\n    in the request phase because it pulls the list of headers to take into\n    account from the global path registry and uses those to build a cache key\n    to check against.\n\n    If there is no headerlist stored, the page needs to be rebuilt, so this\n    function returns None.\n    \"\"\"\n    if key_prefix is None:\n        key_prefix = settings.CACHE_MIDDLEWARE_KEY_PREFIX\n    cache_key = _generate_cache_header_key(key_prefix, request)\n    if cache is None:\n        cache = get_cache(settings.CACHE_MIDDLEWARE_ALIAS)\n    headerlist = cache.get(cache_key, None)\n    if headerlist is not None:\n        return _generate_cache_key(request, method, headerlist, key_prefix)\n    else:\n        return None\n\ndef learn_cache_key(request, response, cache_timeout=None, key_prefix=None, cache=None):\n    \"\"\"\n    Learns what headers to take into account for some request path from the\n    response object. It stores those headers in a global path registry so that\n    later access to that path will know what headers to take into account\n    without building the response object itself. The headers are named in the\n    Vary header of the response, but we want to prevent response generation.\n\n    The list of headers to use for cache key generation is stored in the same\n    cache as the pages themselves. If the cache ages some data out of the\n    cache, this just means that we have to build the response once to get at\n    the Vary header and so at the list of headers to use for the cache key.\n    \"\"\"\n    if key_prefix is None:\n        key_prefix = settings.CACHE_MIDDLEWARE_KEY_PREFIX\n    if cache_timeout is None:\n        cache_timeout = settings.CACHE_MIDDLEWARE_SECONDS\n    cache_key = _generate_cache_header_key(key_prefix, request)\n    if cache is None:\n        cache = get_cache(settings.CACHE_MIDDLEWARE_ALIAS)\n    if response.has_header('Vary'):\n        headerlist = ['HTTP_'+header.upper().replace('-', '_')\n                      for header in cc_delim_re.split(response['Vary'])]\n        cache.set(cache_key, headerlist, cache_timeout)\n        return _generate_cache_key(request, request.method, headerlist, key_prefix)\n    else:\n        # if there is no Vary header, we still need a cache key\n        # for the request.get_full_path()\n        cache.set(cache_key, [], cache_timeout)\n        return _generate_cache_key(request, request.method, [], key_prefix)\n\n\ndef _to_tuple(s):\n    t = s.split('=',1)\n    if len(t) == 2:\n        return t[0].lower(), t[1]\n    return t[0].lower(), True\n"
  },
  {
    "path": "Django-1.5.1/django/utils/checksums.py",
    "content": "\"\"\"\nCommon checksum routines (used in multiple localflavor/ cases, for example).\n\"\"\"\n\n__all__ = ['luhn',]\n\nfrom django.utils import six\n\nLUHN_ODD_LOOKUP = (0, 2, 4, 6, 8, 1, 3, 5, 7, 9) # sum_of_digits(index * 2)\n\ndef luhn(candidate):\n    \"\"\"\n    Checks a candidate number for validity according to the Luhn\n    algorithm (used in validation of, for example, credit cards).\n    Both numeric and string candidates are accepted.\n    \"\"\"\n    if not isinstance(candidate, six.string_types):\n        candidate = str(candidate)\n    try:\n        evens = sum([int(c) for c in candidate[-1::-2]])\n        odds = sum([LUHN_ODD_LOOKUP[int(c)] for c in candidate[-2::-2]])\n        return ((evens + odds) % 10 == 0)\n    except ValueError:  # Raised if an int conversion fails\n        return False\n"
  },
  {
    "path": "Django-1.5.1/django/utils/copycompat.py",
    "content": "\"\"\"\nFixes Python 2.4's failure to deepcopy unbound functions.\n\"\"\"\n\nimport copy\nimport types\nimport warnings\n\nwarnings.warn(\"django.utils.copycompat is deprecated; use the native copy module instead\",\n              DeprecationWarning)\n\n# Monkeypatch copy's deepcopy registry to handle functions correctly.\nif (hasattr(copy, '_deepcopy_dispatch') and types.FunctionType not in copy._deepcopy_dispatch):\n    copy._deepcopy_dispatch[types.FunctionType] = copy._deepcopy_atomic\n\n# Pose as the copy module now.\ndel copy, types\nfrom copy import *\n"
  },
  {
    "path": "Django-1.5.1/django/utils/crypto.py",
    "content": "\"\"\"\nDjango's standard crypto functions and utilities.\n\"\"\"\nfrom __future__ import unicode_literals\n\nimport hmac\nimport struct\nimport hashlib\nimport binascii\nimport operator\nimport time\nfrom functools import reduce\n\n# Use the system PRNG if possible\nimport random\ntry:\n    random = random.SystemRandom()\n    using_sysrandom = True\nexcept NotImplementedError:\n    import warnings\n    warnings.warn('A secure pseudo-random number generator is not available '\n                  'on your system. Falling back to Mersenne Twister.')\n    using_sysrandom = False\n\nfrom django.conf import settings\nfrom django.utils.encoding import force_bytes\nfrom django.utils import six\nfrom django.utils.six.moves import xrange\n\n\n_trans_5c = bytearray([(x ^ 0x5C) for x in xrange(256)])\n_trans_36 = bytearray([(x ^ 0x36) for x in xrange(256)])\n\n\ndef salted_hmac(key_salt, value, secret=None):\n    \"\"\"\n    Returns the HMAC-SHA1 of 'value', using a key generated from key_salt and a\n    secret (which defaults to settings.SECRET_KEY).\n\n    A different key_salt should be passed in for every application of HMAC.\n    \"\"\"\n    if secret is None:\n        secret = settings.SECRET_KEY\n\n    # We need to generate a derived key from our base key.  We can do this by\n    # passing the key_salt and our base key through a pseudo-random function and\n    # SHA1 works nicely.\n    key = hashlib.sha1((key_salt + secret).encode('utf-8')).digest()\n\n    # If len(key_salt + secret) > sha_constructor().block_size, the above\n    # line is redundant and could be replaced by key = key_salt + secret, since\n    # the hmac module does the same thing for keys longer than the block size.\n    # However, we need to ensure that we *always* do this.\n    return hmac.new(key, msg=force_bytes(value), digestmod=hashlib.sha1)\n\n\ndef get_random_string(length=12,\n                      allowed_chars='abcdefghijklmnopqrstuvwxyz'\n                                    'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'):\n    \"\"\"\n    Returns a securely generated random string.\n\n    The default length of 12 with the a-z, A-Z, 0-9 character set returns\n    a 71-bit value. log_2((26+26+10)^12) =~ 71 bits\n    \"\"\"\n    if not using_sysrandom:\n        # This is ugly, and a hack, but it makes things better than\n        # the alternative of predictability. This re-seeds the PRNG\n        # using a value that is hard for an attacker to predict, every\n        # time a random string is required. This may change the\n        # properties of the chosen random sequence slightly, but this\n        # is better than absolute predictability.\n        random.seed(\n            hashlib.sha256(\n                (\"%s%s%s\" % (\n                    random.getstate(),\n                    time.time(),\n                    settings.SECRET_KEY)).encode('utf-8')\n                ).digest())\n    return ''.join([random.choice(allowed_chars) for i in range(length)])\n\n\ndef constant_time_compare(val1, val2):\n    \"\"\"\n    Returns True if the two strings are equal, False otherwise.\n\n    The time taken is independent of the number of characters that match.\n    \"\"\"\n    if len(val1) != len(val2):\n        return False\n    result = 0\n    if six.PY3 and isinstance(val1, bytes) and isinstance(val2, bytes):\n        for x, y in zip(val1, val2):\n            result |= x ^ y\n    else:\n        for x, y in zip(val1, val2):\n            result |= ord(x) ^ ord(y)\n    return result == 0\n\n\ndef _bin_to_long(x):\n    \"\"\"\n    Convert a binary string into a long integer\n\n    This is a clever optimization for fast xor vector math\n    \"\"\"\n    return int(binascii.hexlify(x), 16)\n\n\ndef _long_to_bin(x, hex_format_string):\n    \"\"\"\n    Convert a long integer into a binary string.\n    hex_format_string is like \"%020x\" for padding 10 characters.\n    \"\"\"\n    return binascii.unhexlify((hex_format_string % x).encode('ascii'))\n\n\ndef _fast_hmac(key, msg, digest):\n    \"\"\"\n    A trimmed down version of Python's HMAC implementation.\n\n    This function operates on bytes.\n    \"\"\"\n    dig1, dig2 = digest(), digest()\n    if len(key) > dig1.block_size:\n        key = digest(key).digest()\n    key += b'\\x00' * (dig1.block_size - len(key))\n    dig1.update(key.translate(_trans_36))\n    dig1.update(msg)\n    dig2.update(key.translate(_trans_5c))\n    dig2.update(dig1.digest())\n    return dig2\n\n\ndef pbkdf2(password, salt, iterations, dklen=0, digest=None):\n    \"\"\"\n    Implements PBKDF2 as defined in RFC 2898, section 5.2\n\n    HMAC+SHA256 is used as the default pseudo random function.\n\n    Right now 10,000 iterations is the recommended default which takes\n    100ms on a 2.2Ghz Core 2 Duo.  This is probably the bare minimum\n    for security given 1000 iterations was recommended in 2001. This\n    code is very well optimized for CPython and is only four times\n    slower than openssl's implementation.\n    \"\"\"\n    assert iterations > 0\n    if not digest:\n        digest = hashlib.sha256\n    password = force_bytes(password)\n    salt = force_bytes(salt)\n    hlen = digest().digest_size\n    if not dklen:\n        dklen = hlen\n    if dklen > (2 ** 32 - 1) * hlen:\n        raise OverflowError('dklen too big')\n    l = -(-dklen // hlen)\n    r = dklen - (l - 1) * hlen\n\n    hex_format_string = \"%%0%ix\" % (hlen * 2)\n\n    def F(i):\n        def U():\n            u = salt + struct.pack(b'>I', i)\n            for j in xrange(int(iterations)):\n                u = _fast_hmac(password, u, digest).digest()\n                yield _bin_to_long(u)\n        return _long_to_bin(reduce(operator.xor, U()), hex_format_string)\n\n    T = [F(x) for x in range(1, l + 1)]\n    return b''.join(T[:-1]) + T[-1][:r]\n"
  },
  {
    "path": "Django-1.5.1/django/utils/daemonize.py",
    "content": "import os\nimport sys\n\nif os.name == 'posix':\n    def become_daemon(our_home_dir='.', out_log='/dev/null',\n                      err_log='/dev/null', umask=0o022):\n        \"Robustly turn into a UNIX daemon, running in our_home_dir.\"\n        # First fork\n        try:\n            if os.fork() > 0:\n                sys.exit(0)     # kill off parent\n        except OSError as e:\n            sys.stderr.write(\"fork #1 failed: (%d) %s\\n\" % (e.errno, e.strerror))\n            sys.exit(1)\n        os.setsid()\n        os.chdir(our_home_dir)\n        os.umask(umask)\n\n        # Second fork\n        try:\n            if os.fork() > 0:\n                os._exit(0)\n        except OSError as e:\n            sys.stderr.write(\"fork #2 failed: (%d) %s\\n\" % (e.errno, e.strerror))\n            os._exit(1)\n\n        si = open('/dev/null', 'r')\n        so = open(out_log, 'a+', 0)\n        se = open(err_log, 'a+', 0)\n        os.dup2(si.fileno(), sys.stdin.fileno())\n        os.dup2(so.fileno(), sys.stdout.fileno())\n        os.dup2(se.fileno(), sys.stderr.fileno())\n        # Set custom file descriptors so that they get proper buffering.\n        sys.stdout, sys.stderr = so, se\nelse:\n    def become_daemon(our_home_dir='.', out_log=None, err_log=None, umask=0o022):\n        \"\"\"\n        If we're not running under a POSIX system, just simulate the daemon\n        mode by doing redirections and directory changing.\n        \"\"\"\n        os.chdir(our_home_dir)\n        os.umask(umask)\n        sys.stdin.close()\n        sys.stdout.close()\n        sys.stderr.close()\n        if err_log:\n            sys.stderr = open(err_log, 'a', 0)\n        else:\n            sys.stderr = NullDevice()\n        if out_log:\n            sys.stdout = open(out_log, 'a', 0)\n        else:\n            sys.stdout = NullDevice()\n\n    class NullDevice:\n        \"A writeable object that writes to nowhere -- like /dev/null.\"\n        def write(self, s):\n            pass\n"
  },
  {
    "path": "Django-1.5.1/django/utils/datastructures.py",
    "content": "import copy\nimport warnings\nfrom django.utils import six\n\n\nclass MergeDict(object):\n    \"\"\"\n    A simple class for creating new \"virtual\" dictionaries that actually look\n    up values in more than one dictionary, passed in the constructor.\n\n    If a key appears in more than one of the given dictionaries, only the\n    first occurrence will be used.\n    \"\"\"\n    def __init__(self, *dicts):\n        self.dicts = dicts\n\n    def __getitem__(self, key):\n        for dict_ in self.dicts:\n            try:\n                return dict_[key]\n            except KeyError:\n                pass\n        raise KeyError\n\n    def __copy__(self):\n        return self.__class__(*self.dicts)\n\n    def get(self, key, default=None):\n        try:\n            return self[key]\n        except KeyError:\n            return default\n\n    # This is used by MergeDicts of MultiValueDicts.\n    def getlist(self, key):\n        for dict_ in self.dicts:\n            if key in dict_:\n                return dict_.getlist(key)\n        return []\n\n    def _iteritems(self):\n        seen = set()\n        for dict_ in self.dicts:\n            for item in six.iteritems(dict_):\n                k = item[0]\n                if k in seen:\n                    continue\n                seen.add(k)\n                yield item\n\n    def _iterkeys(self):\n        for k, v in self._iteritems():\n            yield k\n\n    def _itervalues(self):\n        for k, v in self._iteritems():\n            yield v\n\n    if six.PY3:\n        items = _iteritems\n        keys = _iterkeys\n        values = _itervalues\n    else:\n        iteritems = _iteritems\n        iterkeys = _iterkeys\n        itervalues = _itervalues\n\n        def items(self):\n            return list(self.iteritems())\n\n        def keys(self):\n            return list(self.iterkeys())\n\n        def values(self):\n            return list(self.itervalues())\n\n    def has_key(self, key):\n        for dict_ in self.dicts:\n            if key in dict_:\n                return True\n        return False\n\n    __contains__ = has_key\n\n    __iter__ = _iterkeys\n\n    def copy(self):\n        \"\"\"Returns a copy of this object.\"\"\"\n        return self.__copy__()\n\n    def __str__(self):\n        '''\n        Returns something like\n\n            \"{'key1': 'val1', 'key2': 'val2', 'key3': 'val3'}\"\n\n        instead of the generic \"<object meta-data>\" inherited from object.\n        '''\n        return str(dict(self.items()))\n\n    def __repr__(self):\n        '''\n        Returns something like\n\n            MergeDict({'key1': 'val1', 'key2': 'val2'}, {'key3': 'val3'})\n\n        instead of generic \"<object meta-data>\" inherited from object.\n        '''\n        dictreprs = ', '.join(repr(d) for d in self.dicts)\n        return '%s(%s)' % (self.__class__.__name__, dictreprs)\n\nclass SortedDict(dict):\n    \"\"\"\n    A dictionary that keeps its keys in the order in which they're inserted.\n    \"\"\"\n    def __new__(cls, *args, **kwargs):\n        instance = super(SortedDict, cls).__new__(cls, *args, **kwargs)\n        instance.keyOrder = []\n        return instance\n\n    def __init__(self, data=None):\n        if data is None or isinstance(data, dict):\n            data = data or []\n            super(SortedDict, self).__init__(data)\n            self.keyOrder = list(data) if data else []\n        else:\n            super(SortedDict, self).__init__()\n            super_set = super(SortedDict, self).__setitem__\n            for key, value in data:\n                # Take the ordering from first key\n                if key not in self:\n                    self.keyOrder.append(key)\n                # But override with last value in data (dict() does this)\n                super_set(key, value)\n\n    def __deepcopy__(self, memo):\n        return self.__class__([(key, copy.deepcopy(value, memo))\n                               for key, value in self.items()])\n\n    def __copy__(self):\n        # The Python's default copy implementation will alter the state\n        # of self. The reason for this seems complex but is likely related to\n        # subclassing dict.\n        return self.copy()\n\n    def __setitem__(self, key, value):\n        if key not in self:\n            self.keyOrder.append(key)\n        super(SortedDict, self).__setitem__(key, value)\n\n    def __delitem__(self, key):\n        super(SortedDict, self).__delitem__(key)\n        self.keyOrder.remove(key)\n\n    def __iter__(self):\n        return iter(self.keyOrder)\n\n    def __reversed__(self):\n        return reversed(self.keyOrder)\n\n    def pop(self, k, *args):\n        result = super(SortedDict, self).pop(k, *args)\n        try:\n            self.keyOrder.remove(k)\n        except ValueError:\n            # Key wasn't in the dictionary in the first place. No problem.\n            pass\n        return result\n\n    def popitem(self):\n        result = super(SortedDict, self).popitem()\n        self.keyOrder.remove(result[0])\n        return result\n\n    def _iteritems(self):\n        for key in self.keyOrder:\n            yield key, self[key]\n\n    def _iterkeys(self):\n        for key in self.keyOrder:\n            yield key\n\n    def _itervalues(self):\n        for key in self.keyOrder:\n            yield self[key]\n\n    if six.PY3:\n        items = _iteritems\n        keys = _iterkeys\n        values = _itervalues\n    else:\n        iteritems = _iteritems\n        iterkeys = _iterkeys\n        itervalues = _itervalues\n\n        def items(self):\n            return [(k, self[k]) for k in self.keyOrder]\n\n        def keys(self):\n            return self.keyOrder[:]\n\n        def values(self):\n            return [self[k] for k in self.keyOrder]\n\n    def update(self, dict_):\n        for k, v in six.iteritems(dict_):\n            self[k] = v\n\n    def setdefault(self, key, default):\n        if key not in self:\n            self.keyOrder.append(key)\n        return super(SortedDict, self).setdefault(key, default)\n\n    def value_for_index(self, index):\n        \"\"\"Returns the value of the item at the given zero-based index.\"\"\"\n        # This, and insert() are deprecated because they cannot be implemented\n        # using collections.OrderedDict (Python 2.7 and up), which we'll\n        # eventually switch to\n        warnings.warn(\n            \"SortedDict.value_for_index is deprecated\", PendingDeprecationWarning,\n            stacklevel=2\n        )\n        return self[self.keyOrder[index]]\n\n    def insert(self, index, key, value):\n        \"\"\"Inserts the key, value pair before the item with the given index.\"\"\"\n        warnings.warn(\n            \"SortedDict.insert is deprecated\", PendingDeprecationWarning,\n            stacklevel=2\n        )\n        if key in self.keyOrder:\n            n = self.keyOrder.index(key)\n            del self.keyOrder[n]\n            if n < index:\n                index -= 1\n        self.keyOrder.insert(index, key)\n        super(SortedDict, self).__setitem__(key, value)\n\n    def copy(self):\n        \"\"\"Returns a copy of this object.\"\"\"\n        # This way of initializing the copy means it works for subclasses, too.\n        return self.__class__(self)\n\n    def __repr__(self):\n        \"\"\"\n        Replaces the normal dict.__repr__ with a version that returns the keys\n        in their sorted order.\n        \"\"\"\n        return '{%s}' % ', '.join(['%r: %r' % (k, v) for k, v in six.iteritems(self)])\n\n    def clear(self):\n        super(SortedDict, self).clear()\n        self.keyOrder = []\n\nclass MultiValueDictKeyError(KeyError):\n    pass\n\nclass MultiValueDict(dict):\n    \"\"\"\n    A subclass of dictionary customized to handle multiple values for the\n    same key.\n\n    >>> d = MultiValueDict({'name': ['Adrian', 'Simon'], 'position': ['Developer']})\n    >>> d['name']\n    'Simon'\n    >>> d.getlist('name')\n    ['Adrian', 'Simon']\n    >>> d.getlist('doesnotexist')\n    []\n    >>> d.getlist('doesnotexist', ['Adrian', 'Simon'])\n    ['Adrian', 'Simon']\n    >>> d.get('lastname', 'nonexistent')\n    'nonexistent'\n    >>> d.setlist('lastname', ['Holovaty', 'Willison'])\n\n    This class exists to solve the irritating problem raised by cgi.parse_qs,\n    which returns a list for every key, even though most Web forms submit\n    single name-value pairs.\n    \"\"\"\n    def __init__(self, key_to_list_mapping=()):\n        super(MultiValueDict, self).__init__(key_to_list_mapping)\n\n    def __repr__(self):\n        return \"<%s: %s>\" % (self.__class__.__name__,\n                             super(MultiValueDict, self).__repr__())\n\n    def __getitem__(self, key):\n        \"\"\"\n        Returns the last data value for this key, or [] if it's an empty list;\n        raises KeyError if not found.\n        \"\"\"\n        try:\n            list_ = super(MultiValueDict, self).__getitem__(key)\n        except KeyError:\n            raise MultiValueDictKeyError(\"Key %r not found in %r\" % (key, self))\n            \n        try:\n            return list_[-1] 返回最后一个\n        except IndexError:\n            return []\n\n    def __setitem__(self, key, value):\n        super(MultiValueDict, self).__setitem__(key, [value]) 是 += 一个列表\n\n    def __copy__(self):\n        return self.__class__([\n            (k, v[:])\n            for k, v in self.lists()\n        ])\n\n    def __deepcopy__(self, memo=None):\n        if memo is None:\n            memo = {}\n        result = self.__class__()\n        memo[id(self)] = result\n        for key, value in dict.items(self):\n            dict.__setitem__(result, copy.deepcopy(key, memo),\n                             copy.deepcopy(value, memo))\n        return result\n\n    def __getstate__(self):\n        obj_dict = self.__dict__.copy()\n        obj_dict['_data'] = dict([(k, self.getlist(k)) for k in self])\n        return obj_dict\n\n    def __setstate__(self, obj_dict):\n        data = obj_dict.pop('_data', {})\n        for k, v in data.items():\n            self.setlist(k, v)\n        self.__dict__.update(obj_dict)\n\n    def get(self, key, default=None):\n        \"\"\"\n        Returns the last data value for the passed key. If key doesn't exist\n        or value is an empty list, then default is returned.\n        \"\"\"\n        try:\n            val = self[key]\n        except KeyError:\n            return default\n        if val == []:\n            return default\n        return val\n\n    def getlist(self, key, default=None):\n        \"\"\"\n        Returns the list of values for the passed key. If key doesn't exist,\n        then a default value is returned.\n        \"\"\"\n        try:\n            return super(MultiValueDict, self).__getitem__(key)\n        except KeyError:\n            if default is None:\n                return []\n            return default\n\n    def setlist(self, key, list_):\n        super(MultiValueDict, self).__setitem__(key, list_)\n\n    def setdefault(self, key, default=None):\n        if key not in self:\n            self[key] = default\n            # Do not return default here because __setitem__() may store\n            # another value -- QueryDict.__setitem__() does. Look it up.\n        return self[key]\n\n    def setlistdefault(self, key, default_list=None):\n        if key not in self:\n            if default_list is None:\n                default_list = []\n            self.setlist(key, default_list)\n            # Do not return default_list here because setlist() may store\n            # another value -- QueryDict.setlist() does. Look it up.\n        return self.getlist(key)\n\n    def appendlist(self, key, value):\n        \"\"\"Appends an item to the internal list associated with key.\"\"\"\n        self.setlistdefault(key).append(value)\n\n    def _iteritems(self):\n        \"\"\"\n        Yields (key, value) pairs, where value is the last item in the list\n        associated with the key.\n        \"\"\"\n        for key in self:\n            yield key, self[key]\n\n    def _iterlists(self):\n        \"\"\"Yields (key, list) pairs.\"\"\"\n        return six.iteritems(super(MultiValueDict, self))\n\n    def _itervalues(self):\n        \"\"\"Yield the last value on every key list.\"\"\"\n        for key in self:\n            yield self[key]\n\n    if six.PY3:\n        items = _iteritems\n        lists = _iterlists\n        values = _itervalues\n    else:\n        iteritems = _iteritems\n        iterlists = _iterlists\n        itervalues = _itervalues\n\n        def items(self):\n            return list(self.iteritems())\n\n        def lists(self):\n            return list(self.iterlists())\n\n        def values(self):\n            return list(self.itervalues())\n\n    def copy(self):\n        \"\"\"Returns a shallow copy of this object.\"\"\"\n        return copy.copy(self)\n\n    def update(self, *args, **kwargs):\n        \"\"\"\n        update() extends rather than replaces existing key lists.\n        Also accepts keyword args.\n        \"\"\"\n        if len(args) > 1:\n            raise TypeError(\"update expected at most 1 arguments, got %d\" % len(args))\n        if args:\n            other_dict = args[0]\n            if isinstance(other_dict, MultiValueDict):\n                for key, value_list in other_dict.lists():\n                    self.setlistdefault(key).extend(value_list)\n            else:\n                try:\n                    for key, value in other_dict.items():\n                        self.setlistdefault(key).append(value)\n                except TypeError:\n                    raise ValueError(\"MultiValueDict.update() takes either a MultiValueDict or dictionary\")\n        for key, value in six.iteritems(kwargs):\n            self.setlistdefault(key).append(value)\n\n    def dict(self):\n        \"\"\"\n        Returns current object as a dict with singular values.\n        \"\"\"\n        return dict((key, self[key]) for key in self)\n\n\nclass ImmutableList(tuple):\n    \"\"\"\n    A tuple-like object that raises useful errors when it is asked to mutate.\n\n    Example::\n\n        >>> a = ImmutableList(range(5), warning=\"You cannot mutate this.\")\n        >>> a[3] = '4'\n        Traceback (most recent call last):\n            ...\n        AttributeError: You cannot mutate this.\n    \"\"\"\n\n    def __new__(cls, *args, **kwargs):\n        if 'warning' in kwargs:\n            warning = kwargs['warning']\n            del kwargs['warning']\n        else:\n            warning = 'ImmutableList object is immutable.'\n        self = tuple.__new__(cls, *args, **kwargs)\n        self.warning = warning\n        return self\n\n    def complain(self, *wargs, **kwargs):\n        if isinstance(self.warning, Exception):\n            raise self.warning\n        else:\n            raise AttributeError(self.warning)\n\n    # All list mutation functions complain.\n    __delitem__  = complain\n    __delslice__ = complain\n    __iadd__     = complain\n    __imul__     = complain\n    __setitem__  = complain\n    __setslice__ = complain\n    append       = complain\n    extend       = complain\n    insert       = complain\n    pop          = complain\n    remove       = complain\n    sort         = complain\n    reverse      = complain\n\nclass DictWrapper(dict):\n    \"\"\"\n    Wraps accesses to a dictionary so that certain values (those starting with\n    the specified prefix) are passed through a function before being returned.\n    The prefix is removed before looking up the real value.\n\n    Used by the SQL construction code to ensure that values are correctly\n    quoted before being used.\n    \"\"\"\n    def __init__(self, data, func, prefix):\n        super(DictWrapper, self).__init__(data)\n        self.func = func\n        self.prefix = prefix\n\n    def __getitem__(self, key):\n        \"\"\"\n        Retrieves the real value after stripping the prefix string (if\n        present). If the prefix is present, pass the value through self.func\n        before returning, otherwise return the raw value.\n        \"\"\"\n        if key.startswith(self.prefix):\n            use_func = True\n            key = key[len(self.prefix):]\n        else:\n            use_func = False\n        value = super(DictWrapper, self).__getitem__(key)\n        if use_func:\n            return self.func(value)\n        return value\n"
  },
  {
    "path": "Django-1.5.1/django/utils/dateformat.py",
    "content": "\"\"\"\nPHP date() style date formatting\nSee http://www.php.net/date for format strings\n\nUsage:\n>>> import datetime\n>>> d = datetime.datetime.now()\n>>> df = DateFormat(d)\n>>> print(df.format('jS F Y H:i'))\n7th October 2003 11:39\n>>>\n\"\"\"\nfrom __future__ import unicode_literals\n\nimport re\nimport time\nimport calendar\nimport datetime\n\nfrom django.utils.dates import MONTHS, MONTHS_3, MONTHS_ALT, MONTHS_AP, WEEKDAYS, WEEKDAYS_ABBR\nfrom django.utils.tzinfo import LocalTimezone\nfrom django.utils.translation import ugettext as _\nfrom django.utils.encoding import force_text\nfrom django.utils import six\nfrom django.utils.timezone import is_aware, is_naive\n\nre_formatchars = re.compile(r'(?<!\\\\)([aAbBcdDeEfFgGhHiIjlLmMnNoOPrsStTUuwWyYzZ])')\nre_escaped = re.compile(r'\\\\(.)')\n\nclass Formatter(object):\n    def format(self, formatstr):\n        pieces = []\n        for i, piece in enumerate(re_formatchars.split(force_text(formatstr))):\n            if i % 2:\n                pieces.append(force_text(getattr(self, piece)()))\n            elif piece:\n                pieces.append(re_escaped.sub(r'\\1', piece))\n        return ''.join(pieces)\n\nclass TimeFormat(Formatter):\n    def __init__(self, t):\n        self.data = t\n\n    def a(self):\n        \"'a.m.' or 'p.m.'\"\n        if self.data.hour > 11:\n            return _('p.m.')\n        return _('a.m.')\n\n    def A(self):\n        \"'AM' or 'PM'\"\n        if self.data.hour > 11:\n            return _('PM')\n        return _('AM')\n\n    def B(self):\n        \"Swatch Internet time\"\n        raise NotImplementedError\n\n    def f(self):\n        \"\"\"\n        Time, in 12-hour hours and minutes, with minutes left off if they're\n        zero.\n        Examples: '1', '1:30', '2:05', '2'\n        Proprietary extension.\n        \"\"\"\n        if self.data.minute == 0:\n            return self.g()\n        return '%s:%s' % (self.g(), self.i())\n\n    def g(self):\n        \"Hour, 12-hour format without leading zeros; i.e. '1' to '12'\"\n        if self.data.hour == 0:\n            return 12\n        if self.data.hour > 12:\n            return self.data.hour - 12\n        return self.data.hour\n\n    def G(self):\n        \"Hour, 24-hour format without leading zeros; i.e. '0' to '23'\"\n        return self.data.hour\n\n    def h(self):\n        \"Hour, 12-hour format; i.e. '01' to '12'\"\n        return '%02d' % self.g()\n\n    def H(self):\n        \"Hour, 24-hour format; i.e. '00' to '23'\"\n        return '%02d' % self.G()\n\n    def i(self):\n        \"Minutes; i.e. '00' to '59'\"\n        return '%02d' % self.data.minute\n\n    def P(self):\n        \"\"\"\n        Time, in 12-hour hours, minutes and 'a.m.'/'p.m.', with minutes left off\n        if they're zero and the strings 'midnight' and 'noon' if appropriate.\n        Examples: '1 a.m.', '1:30 p.m.', 'midnight', 'noon', '12:30 p.m.'\n        Proprietary extension.\n        \"\"\"\n        if self.data.minute == 0 and self.data.hour == 0:\n            return _('midnight')\n        if self.data.minute == 0 and self.data.hour == 12:\n            return _('noon')\n        return '%s %s' % (self.f(), self.a())\n\n    def s(self):\n        \"Seconds; i.e. '00' to '59'\"\n        return '%02d' % self.data.second\n\n    def u(self):\n        \"Microseconds; i.e. '000000' to '999999'\"\n        return '%06d' %self.data.microsecond\n\n\nclass DateFormat(TimeFormat):\n    year_days = [None, 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334]\n\n    def __init__(self, dt):\n        # Accepts either a datetime or date object.\n        self.data = dt\n        self.timezone = None\n        if isinstance(dt, datetime.datetime):\n            if is_naive(dt):\n                self.timezone = LocalTimezone(dt)\n            else:\n                self.timezone = dt.tzinfo\n\n    def b(self):\n        \"Month, textual, 3 letters, lowercase; e.g. 'jan'\"\n        return MONTHS_3[self.data.month]\n\n    def c(self):\n        \"\"\"\n        ISO 8601 Format\n        Example : '2008-01-02T10:30:00.000123'\n        \"\"\"\n        return self.data.isoformat()\n\n    def d(self):\n        \"Day of the month, 2 digits with leading zeros; i.e. '01' to '31'\"\n        return '%02d' % self.data.day\n\n    def D(self):\n        \"Day of the week, textual, 3 letters; e.g. 'Fri'\"\n        return WEEKDAYS_ABBR[self.data.weekday()]\n\n    def e(self):\n        \"Timezone name if available\"\n        try:\n            if hasattr(self.data, 'tzinfo') and self.data.tzinfo:\n                # Have to use tzinfo.tzname and not datetime.tzname\n                # because datatime.tzname does not expect Unicode\n                return self.data.tzinfo.tzname(self.data) or \"\"\n        except NotImplementedError:\n            pass\n        return \"\"\n\n    def E(self):\n        \"Alternative month names as required by some locales. Proprietary extension.\"\n        return MONTHS_ALT[self.data.month]\n\n    def F(self):\n        \"Month, textual, long; e.g. 'January'\"\n        return MONTHS[self.data.month]\n\n    def I(self):\n        \"'1' if Daylight Savings Time, '0' otherwise.\"\n        if self.timezone and self.timezone.dst(self.data):\n            return '1'\n        else:\n            return '0'\n\n    def j(self):\n        \"Day of the month without leading zeros; i.e. '1' to '31'\"\n        return self.data.day\n\n    def l(self):\n        \"Day of the week, textual, long; e.g. 'Friday'\"\n        return WEEKDAYS[self.data.weekday()]\n\n    def L(self):\n        \"Boolean for whether it is a leap year; i.e. True or False\"\n        return calendar.isleap(self.data.year)\n\n    def m(self):\n        \"Month; i.e. '01' to '12'\"\n        return '%02d' % self.data.month\n\n    def M(self):\n        \"Month, textual, 3 letters; e.g. 'Jan'\"\n        return MONTHS_3[self.data.month].title()\n\n    def n(self):\n        \"Month without leading zeros; i.e. '1' to '12'\"\n        return self.data.month\n\n    def N(self):\n        \"Month abbreviation in Associated Press style. Proprietary extension.\"\n        return MONTHS_AP[self.data.month]\n\n    def o(self):\n        \"ISO 8601 year number matching the ISO week number (W)\"\n        return self.data.isocalendar()[0]\n\n    def O(self):\n        \"Difference to Greenwich time in hours; e.g. '+0200', '-0430'\"\n        seconds = self.Z()\n        sign = '-' if seconds < 0 else '+'\n        seconds = abs(seconds)\n        return \"%s%02d%02d\" % (sign, seconds // 3600, (seconds // 60) % 60)\n\n    def r(self):\n        \"RFC 2822 formatted date; e.g. 'Thu, 21 Dec 2000 16:01:07 +0200'\"\n        return self.format('D, j M Y H:i:s O')\n\n    def S(self):\n        \"English ordinal suffix for the day of the month, 2 characters; i.e. 'st', 'nd', 'rd' or 'th'\"\n        if self.data.day in (11, 12, 13): # Special case\n            return 'th'\n        last = self.data.day % 10\n        if last == 1:\n            return 'st'\n        if last == 2:\n            return 'nd'\n        if last == 3:\n            return 'rd'\n        return 'th'\n\n    def t(self):\n        \"Number of days in the given month; i.e. '28' to '31'\"\n        return '%02d' % calendar.monthrange(self.data.year, self.data.month)[1]\n\n    def T(self):\n        \"Time zone of this machine; e.g. 'EST' or 'MDT'\"\n        name = self.timezone and self.timezone.tzname(self.data) or None\n        if name is None:\n            name = self.format('O')\n        return six.text_type(name)\n\n    def U(self):\n        \"Seconds since the Unix epoch (January 1 1970 00:00:00 GMT)\"\n        if isinstance(self.data, datetime.datetime) and is_aware(self.data):\n            return int(calendar.timegm(self.data.utctimetuple()))\n        else:\n            return int(time.mktime(self.data.timetuple()))\n\n    def w(self):\n        \"Day of the week, numeric, i.e. '0' (Sunday) to '6' (Saturday)\"\n        return (self.data.weekday() + 1) % 7\n\n    def W(self):\n        \"ISO-8601 week number of year, weeks starting on Monday\"\n        # Algorithm from http://www.personal.ecu.edu/mccartyr/ISOwdALG.txt\n        week_number = None\n        jan1_weekday = self.data.replace(month=1, day=1).weekday() + 1\n        weekday = self.data.weekday() + 1\n        day_of_year = self.z()\n        if day_of_year <= (8 - jan1_weekday) and jan1_weekday > 4:\n            if jan1_weekday == 5 or (jan1_weekday == 6 and calendar.isleap(self.data.year-1)):\n                week_number = 53\n            else:\n                week_number = 52\n        else:\n            if calendar.isleap(self.data.year):\n                i = 366\n            else:\n                i = 365\n            if (i - day_of_year) < (4 - weekday):\n                week_number = 1\n            else:\n                j = day_of_year + (7 - weekday) + (jan1_weekday - 1)\n                week_number = j // 7\n                if jan1_weekday > 4:\n                    week_number -= 1\n        return week_number\n\n    def y(self):\n        \"Year, 2 digits; e.g. '99'\"\n        return six.text_type(self.data.year)[2:]\n\n    def Y(self):\n        \"Year, 4 digits; e.g. '1999'\"\n        return self.data.year\n\n    def z(self):\n        \"Day of the year; i.e. '0' to '365'\"\n        doy = self.year_days[self.data.month] + self.data.day\n        if self.L() and self.data.month > 2:\n            doy += 1\n        return doy\n\n    def Z(self):\n        \"\"\"\n        Time zone offset in seconds (i.e. '-43200' to '43200'). The offset for\n        timezones west of UTC is always negative, and for those east of UTC is\n        always positive.\n        \"\"\"\n        if not self.timezone:\n            return 0\n        offset = self.timezone.utcoffset(self.data)\n        # `offset` is a datetime.timedelta. For negative values (to the west of\n        # UTC) only days can be negative (days=-1) and seconds are always\n        # positive. e.g. UTC-1 -> timedelta(days=-1, seconds=82800, microseconds=0)\n        # Positive offsets have days=0\n        return offset.days * 86400 + offset.seconds\n\ndef format(value, format_string):\n    \"Convenience function\"\n    df = DateFormat(value)\n    return df.format(format_string)\n\ndef time_format(value, format_string):\n    \"Convenience function\"\n    tf = TimeFormat(value)\n    return tf.format(format_string)\n"
  },
  {
    "path": "Django-1.5.1/django/utils/dateparse.py",
    "content": "\"\"\"Functions to parse datetime objects.\"\"\"\n\n# We're using regular expressions rather than time.strptime because:\n# - They provide both validation and parsing.\n# - They're more flexible for datetimes.\n# - The date/datetime/time constructors produce friendlier error messages.\n\nimport datetime\nimport re\nfrom django.utils import six\nfrom django.utils.timezone import utc\nfrom django.utils.tzinfo import FixedOffset\n\ndate_re = re.compile(\n    r'(?P<year>\\d{4})-(?P<month>\\d{1,2})-(?P<day>\\d{1,2})$'\n)\n\ntime_re = re.compile(\n    r'(?P<hour>\\d{1,2}):(?P<minute>\\d{1,2})'\n    r'(?::(?P<second>\\d{1,2})(?:\\.(?P<microsecond>\\d{1,6})\\d{0,6})?)?'\n)\n\ndatetime_re = re.compile(\n    r'(?P<year>\\d{4})-(?P<month>\\d{1,2})-(?P<day>\\d{1,2})'\n    r'[T ](?P<hour>\\d{1,2}):(?P<minute>\\d{1,2})'\n    r'(?::(?P<second>\\d{1,2})(?:\\.(?P<microsecond>\\d{1,6})\\d{0,6})?)?'\n    r'(?P<tzinfo>Z|[+-]\\d{2}:?\\d{2})?$'\n)\n\ndef parse_date(value):\n    \"\"\"Parses a string and return a datetime.date.\n\n    Raises ValueError if the input is well formatted but not a valid date.\n    Returns None if the input isn't well formatted.\n    \"\"\"\n    match = date_re.match(value)\n    if match:\n        kw = dict((k, int(v)) for k, v in six.iteritems(match.groupdict()))\n        return datetime.date(**kw)\n\ndef parse_time(value):\n    \"\"\"Parses a string and return a datetime.time.\n\n    This function doesn't support time zone offsets.\n\n    Raises ValueError if the input is well formatted but not a valid time.\n    Returns None if the input isn't well formatted, in particular if it\n    contains an offset.\n    \"\"\"\n    match = time_re.match(value)\n    if match:\n        kw = match.groupdict()\n        if kw['microsecond']:\n            kw['microsecond'] = kw['microsecond'].ljust(6, '0')\n        kw = dict((k, int(v)) for k, v in six.iteritems(kw) if v is not None)\n        return datetime.time(**kw)\n\ndef parse_datetime(value):\n    \"\"\"Parses a string and return a datetime.datetime.\n\n    This function supports time zone offsets. When the input contains one,\n    the output uses an instance of FixedOffset as tzinfo.\n\n    Raises ValueError if the input is well formatted but not a valid datetime.\n    Returns None if the input isn't well formatted.\n    \"\"\"\n    match = datetime_re.match(value)\n    if match:\n        kw = match.groupdict()\n        if kw['microsecond']:\n            kw['microsecond'] = kw['microsecond'].ljust(6, '0')\n        tzinfo = kw.pop('tzinfo')\n        if tzinfo == 'Z':\n            tzinfo = utc\n        elif tzinfo is not None:\n            offset = 60 * int(tzinfo[1:3]) + int(tzinfo[-2:])\n            if tzinfo[0] == '-':\n                offset = -offset\n            tzinfo = FixedOffset(offset)\n        kw = dict((k, int(v)) for k, v in six.iteritems(kw) if v is not None)\n        kw['tzinfo'] = tzinfo\n        return datetime.datetime(**kw)\n"
  },
  {
    "path": "Django-1.5.1/django/utils/dates.py",
    "content": "\"Commonly-used date structures\"\n\nfrom django.utils.translation import ugettext_lazy as _, pgettext_lazy\n\nWEEKDAYS = {\n    0:_('Monday'), 1:_('Tuesday'), 2:_('Wednesday'), 3:_('Thursday'), 4:_('Friday'),\n    5:_('Saturday'), 6:_('Sunday')\n}\nWEEKDAYS_ABBR = {\n    0:_('Mon'), 1:_('Tue'), 2:_('Wed'), 3:_('Thu'), 4:_('Fri'),\n    5:_('Sat'), 6:_('Sun')\n}\nWEEKDAYS_REV = {\n    'monday':0, 'tuesday':1, 'wednesday':2, 'thursday':3, 'friday':4,\n    'saturday':5, 'sunday':6\n}\nMONTHS = {\n    1:_('January'), 2:_('February'), 3:_('March'), 4:_('April'), 5:_('May'), 6:_('June'),\n    7:_('July'), 8:_('August'), 9:_('September'), 10:_('October'), 11:_('November'),\n    12:_('December')\n}\nMONTHS_3 = {\n    1:_('jan'), 2:_('feb'), 3:_('mar'), 4:_('apr'), 5:_('may'), 6:_('jun'),\n    7:_('jul'), 8:_('aug'), 9:_('sep'), 10:_('oct'), 11:_('nov'), 12:_('dec')\n}\nMONTHS_3_REV = {\n    'jan':1, 'feb':2, 'mar':3, 'apr':4, 'may':5, 'jun':6, 'jul':7, 'aug':8,\n    'sep':9, 'oct':10, 'nov':11, 'dec':12\n}\nMONTHS_AP = { # month names in Associated Press style\n    1: pgettext_lazy('abbrev. month', 'Jan.'),\n    2: pgettext_lazy('abbrev. month', 'Feb.'),\n    3: pgettext_lazy('abbrev. month', 'March'),\n    4: pgettext_lazy('abbrev. month', 'April'),\n    5: pgettext_lazy('abbrev. month', 'May'),\n    6: pgettext_lazy('abbrev. month', 'June'),\n    7: pgettext_lazy('abbrev. month', 'July'),\n    8: pgettext_lazy('abbrev. month', 'Aug.'),\n    9: pgettext_lazy('abbrev. month', 'Sept.'),\n    10: pgettext_lazy('abbrev. month', 'Oct.'),\n    11: pgettext_lazy('abbrev. month', 'Nov.'),\n    12: pgettext_lazy('abbrev. month', 'Dec.')\n}\nMONTHS_ALT = { # required for long date representation by some locales\n    1: pgettext_lazy('alt. month', 'January'),\n    2: pgettext_lazy('alt. month', 'February'),\n    3: pgettext_lazy('alt. month', 'March'),\n    4: pgettext_lazy('alt. month', 'April'),\n    5: pgettext_lazy('alt. month', 'May'),\n    6: pgettext_lazy('alt. month', 'June'),\n    7: pgettext_lazy('alt. month', 'July'),\n    8: pgettext_lazy('alt. month', 'August'),\n    9: pgettext_lazy('alt. month', 'September'),\n    10: pgettext_lazy('alt. month', 'October'),\n    11: pgettext_lazy('alt. month', 'November'),\n    12: pgettext_lazy('alt. month', 'December')\n}\n"
  },
  {
    "path": "Django-1.5.1/django/utils/datetime_safe.py",
    "content": "# Python's datetime strftime doesn't handle dates before 1900.\n# These classes override date and datetime to support the formatting of a date\n# through its full \"proleptic Gregorian\" date range.\n#\n# Based on code submitted to comp.lang.python by Andrew Dalke\n#\n# >>> datetime_safe.date(1850, 8, 2).strftime(\"%Y/%m/%d was a %A\")\n# '1850/08/02 was a Friday'\n\nfrom datetime import date as real_date, datetime as real_datetime\nimport re\nimport time\n\nclass date(real_date):\n    def strftime(self, fmt):\n        return strftime(self, fmt)\n\nclass datetime(real_datetime):\n    def strftime(self, fmt):\n        return strftime(self, fmt)\n\n    def combine(self, date, time):\n        return datetime(date.year, date.month, date.day, time.hour, time.minute, time.microsecond, time.tzinfo)\n\n    def date(self):\n        return date(self.year, self.month, self.day)\n\ndef new_date(d):\n    \"Generate a safe date from a datetime.date object.\"\n    return date(d.year, d.month, d.day)\n\ndef new_datetime(d):\n    \"\"\"\n    Generate a safe datetime from a datetime.date or datetime.datetime object.\n    \"\"\"\n    kw = [d.year, d.month, d.day]\n    if isinstance(d, real_datetime):\n        kw.extend([d.hour, d.minute, d.second, d.microsecond, d.tzinfo])\n    return datetime(*kw)\n\n# This library does not support strftime's \"%s\" or \"%y\" format strings.\n# Allowed if there's an even number of \"%\"s because they are escaped.\n_illegal_formatting = re.compile(r\"((^|[^%])(%%)*%[sy])\")\n\ndef _findall(text, substr):\n    # Also finds overlaps\n    sites = []\n    i = 0\n    while 1:\n        j = text.find(substr, i)\n        if j == -1:\n            break\n        sites.append(j)\n        i=j+1\n    return sites\n\ndef strftime(dt, fmt):\n    if dt.year >= 1900:\n        return super(type(dt), dt).strftime(fmt)\n    illegal_formatting = _illegal_formatting.search(fmt)\n    if illegal_formatting:\n        raise TypeError(\"strftime of dates before 1900 does not handle\" + illegal_formatting.group(0))\n\n    year = dt.year\n    # For every non-leap year century, advance by\n    # 6 years to get into the 28-year repeat cycle\n    delta = 2000 - year\n    off = 6 * (delta // 100 + delta // 400)\n    year = year + off\n\n    # Move to around the year 2000\n    year = year + ((2000 - year) // 28) * 28\n    timetuple = dt.timetuple()\n    s1 = time.strftime(fmt, (year,) + timetuple[1:])\n    sites1 = _findall(s1, str(year))\n\n    s2 = time.strftime(fmt, (year+28,) + timetuple[1:])\n    sites2 = _findall(s2, str(year+28))\n\n    sites = []\n    for site in sites1:\n        if site in sites2:\n            sites.append(site)\n\n    s = s1\n    syear = \"%04d\" % (dt.year,)\n    for site in sites:\n        s = s[:site] + syear + s[site+4:]\n    return s\n"
  },
  {
    "path": "Django-1.5.1/django/utils/decorators.py",
    "content": "\"Functions that help with dynamically creating decorators for views.\"\n\nfrom functools import wraps, update_wrapper, WRAPPER_ASSIGNMENTS\n\nclass classonlymethod(classmethod):\n    def __get__(self, instance, owner):\n        if instance is not None:\n            raise AttributeError(\"This method is available only on the view class.\")\n        return super(classonlymethod, self).__get__(instance, owner)\n\ndef method_decorator(decorator):\n    \"\"\"\n    Converts a function decorator into a method decorator\n    \"\"\"\n    # 'func' is a function at the time it is passed to _dec, but will eventually\n    # be a method of the class it is defined it.\n    def _dec(func):\n        def _wrapper(self, *args, **kwargs):\n            @decorator\n            def bound_func(*args2, **kwargs2):\n                return func(self, *args2, **kwargs2)\n            # bound_func has the signature that 'decorator' expects i.e.  no\n            # 'self' argument, but it is a closure over self so it can call\n            # 'func' correctly.\n            return bound_func(*args, **kwargs)\n        # In case 'decorator' adds attributes to the function it decorates, we\n        # want to copy those. We don't have access to bound_func in this scope,\n        # but we can cheat by using it on a dummy function.\n        @decorator\n        def dummy(*args, **kwargs):\n            pass\n        update_wrapper(_wrapper, dummy)\n        # Need to preserve any existing attributes of 'func', including the name.\n        update_wrapper(_wrapper, func)\n\n        return _wrapper\n    update_wrapper(_dec, decorator)\n    # Change the name to aid debugging.\n    _dec.__name__ = 'method_decorator(%s)' % decorator.__name__\n    return _dec\n\n\ndef decorator_from_middleware_with_args(middleware_class):\n    \"\"\"\n    Like decorator_from_middleware, but returns a function\n    that accepts the arguments to be passed to the middleware_class.\n    Use like::\n\n         cache_page = decorator_from_middleware_with_args(CacheMiddleware)\n         # ...\n\n         @cache_page(3600)\n         def my_view(request):\n             # ...\n    \"\"\"\n    return make_middleware_decorator(middleware_class)\n\n\ndef decorator_from_middleware(middleware_class):\n    \"\"\"\n    Given a middleware class (not an instance), returns a view decorator. This\n    lets you use middleware functionality on a per-view basis. The middleware\n    is created with no params passed.\n    \"\"\"\n    return make_middleware_decorator(middleware_class)()\n\n\ndef available_attrs(fn):\n    \"\"\"\n    Return the list of functools-wrappable attributes on a callable.\n    This is required as a workaround for http://bugs.python.org/issue3445.\n    \"\"\"\n    return tuple(a for a in WRAPPER_ASSIGNMENTS if hasattr(fn, a))\n\n\ndef make_middleware_decorator(middleware_class):\n    def _make_decorator(*m_args, **m_kwargs):\n        middleware = middleware_class(*m_args, **m_kwargs)\n        def _decorator(view_func):\n            @wraps(view_func, assigned=available_attrs(view_func))\n            def _wrapped_view(request, *args, **kwargs):\n                if hasattr(middleware, 'process_request'):\n                    result = middleware.process_request(request)\n                    if result is not None:\n                        return result\n                if hasattr(middleware, 'process_view'):\n                    result = middleware.process_view(request, view_func, args, kwargs)\n                    if result is not None:\n                        return result\n                try:\n                    response = view_func(request, *args, **kwargs)\n                except Exception as e:\n                    if hasattr(middleware, 'process_exception'):\n                        result = middleware.process_exception(request, e)\n                        if result is not None:\n                            return result\n                    raise\n                if hasattr(response, 'render') and callable(response.render):\n                    if hasattr(middleware, 'process_template_response'):\n                        response = middleware.process_template_response(request, response)\n                    # Defer running of process_response until after the template\n                    # has been rendered:\n                    if hasattr(middleware, 'process_response'):\n                        callback = lambda response: middleware.process_response(request, response)\n                        response.add_post_render_callback(callback)\n                else:\n                    if hasattr(middleware, 'process_response'):\n                        return middleware.process_response(request, response)\n                return response\n            return _wrapped_view\n        return _decorator\n    return _make_decorator\n"
  },
  {
    "path": "Django-1.5.1/django/utils/dictconfig.py",
    "content": "# This is a copy of the Python logging.config.dictconfig module,\n# reproduced with permission. It is provided here for backwards\n# compatibility for Python versions prior to 2.7.\n#\n# Copyright 2009-2010 by Vinay Sajip. All Rights Reserved.\n#\n# Permission to use, copy, modify, and distribute this software and its\n# documentation for any purpose and without fee is hereby granted,\n# provided that the above copyright notice appear in all copies and that\n# both that copyright notice and this permission notice appear in\n# supporting documentation, and that the name of Vinay Sajip\n# not be used in advertising or publicity pertaining to distribution\n# of the software without specific, written prior permission.\n# VINAY SAJIP DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING\n# ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL\n# VINAY SAJIP BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR\n# ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER\n# IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT\n# OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n\nimport logging.handlers\nimport re\nimport sys\nimport types\n\nfrom django.utils import six\n\nIDENTIFIER = re.compile('^[a-z_][a-z0-9_]*$', re.I)\n\ndef valid_ident(s):\n    m = IDENTIFIER.match(s)\n    if not m:\n        raise ValueError('Not a valid Python identifier: %r' % s)\n    return True\n\n#\n# This function is defined in logging only in recent versions of Python\n#\ntry:\n    from logging import _checkLevel\nexcept ImportError:\n    def _checkLevel(level):\n        if isinstance(level, int):\n            rv = level\n        elif str(level) == level:\n            if level not in logging._levelNames:\n                raise ValueError('Unknown level: %r' % level)\n            rv = logging._levelNames[level]\n        else:\n            raise TypeError('Level not an integer or a '\n                            'valid string: %r' % level)\n        return rv\n\n# The ConvertingXXX classes are wrappers around standard Python containers,\n# and they serve to convert any suitable values in the container. The\n# conversion converts base dicts, lists and tuples to their wrapped\n# equivalents, whereas strings which match a conversion format are converted\n# appropriately.\n#\n# Each wrapper should have a configurator attribute holding the actual\n# configurator to use for conversion.\n\nclass ConvertingDict(dict):\n    \"\"\"A converting dictionary wrapper.\"\"\"\n\n    def __getitem__(self, key):\n        value = dict.__getitem__(self, key)\n        result = self.configurator.convert(value)\n        #If the converted value is different, save for next time\n        if value is not result:\n            self[key] = result\n            if type(result) in (ConvertingDict, ConvertingList,\n                                ConvertingTuple):\n                result.parent = self\n                result.key = key\n        return result\n\n    def get(self, key, default=None):\n        value = dict.get(self, key, default)\n        result = self.configurator.convert(value)\n        #If the converted value is different, save for next time\n        if value is not result:\n            self[key] = result\n            if type(result) in (ConvertingDict, ConvertingList,\n                                ConvertingTuple):\n                result.parent = self\n                result.key = key\n        return result\n\n    def pop(self, key, default=None):\n        value = dict.pop(self, key, default)\n        result = self.configurator.convert(value)\n        if value is not result:\n            if type(result) in (ConvertingDict, ConvertingList,\n                                ConvertingTuple):\n                result.parent = self\n                result.key = key\n        return result\n\nclass ConvertingList(list):\n    \"\"\"A converting list wrapper.\"\"\"\n    def __getitem__(self, key):\n        value = list.__getitem__(self, key)\n        result = self.configurator.convert(value)\n        #If the converted value is different, save for next time\n        if value is not result:\n            self[key] = result\n            if type(result) in (ConvertingDict, ConvertingList,\n                                ConvertingTuple):\n                result.parent = self\n                result.key = key\n        return result\n\n    def pop(self, idx=-1):\n        value = list.pop(self, idx)\n        result = self.configurator.convert(value)\n        if value is not result:\n            if type(result) in (ConvertingDict, ConvertingList,\n                                ConvertingTuple):\n                result.parent = self\n        return result\n\nclass ConvertingTuple(tuple):\n    \"\"\"A converting tuple wrapper.\"\"\"\n    def __getitem__(self, key):\n        value = tuple.__getitem__(self, key)\n        result = self.configurator.convert(value)\n        if value is not result:\n            if type(result) in (ConvertingDict, ConvertingList,\n                                ConvertingTuple):\n                result.parent = self\n                result.key = key\n        return result\n\nclass BaseConfigurator(object):\n    \"\"\"\n    The configurator base class which defines some useful defaults.\n    \"\"\"\n\n    CONVERT_PATTERN = re.compile(r'^(?P<prefix>[a-z]+)://(?P<suffix>.*)$')\n\n    WORD_PATTERN = re.compile(r'^\\s*(\\w+)\\s*')\n    DOT_PATTERN = re.compile(r'^\\.\\s*(\\w+)\\s*')\n    INDEX_PATTERN = re.compile(r'^\\[\\s*(\\w+)\\s*\\]\\s*')\n    DIGIT_PATTERN = re.compile(r'^\\d+$')\n\n    value_converters = {\n        'ext' : 'ext_convert',\n        'cfg' : 'cfg_convert',\n    }\n\n    # We might want to use a different one, e.g. importlib\n    importer = __import__\n\n    def __init__(self, config):\n        self.config = ConvertingDict(config)\n        self.config.configurator = self\n\n    def resolve(self, s):\n        \"\"\"\n        Resolve strings to objects using standard import and attribute\n        syntax.\n        \"\"\"\n        name = s.split('.')\n        used = name.pop(0)\n        try:\n            found = self.importer(used)\n            for frag in name:\n                used += '.' + frag\n                try:\n                    found = getattr(found, frag)\n                except AttributeError:\n                    self.importer(used)\n                    found = getattr(found, frag)\n            return found\n        except ImportError:\n            e, tb = sys.exc_info()[1:]\n            v = ValueError('Cannot resolve %r: %s' % (s, e))\n            v.__cause__, v.__traceback__ = e, tb\n            raise v\n\n    def ext_convert(self, value):\n        \"\"\"Default converter for the ext:// protocol.\"\"\"\n        return self.resolve(value)\n\n    def cfg_convert(self, value):\n        \"\"\"Default converter for the cfg:// protocol.\"\"\"\n        rest = value\n        m = self.WORD_PATTERN.match(rest)\n        if m is None:\n            raise ValueError(\"Unable to convert %r\" % value)\n        else:\n            rest = rest[m.end():]\n            d = self.config[m.groups()[0]]\n            #print d, rest\n            while rest:\n                m = self.DOT_PATTERN.match(rest)\n                if m:\n                    d = d[m.groups()[0]]\n                else:\n                    m = self.INDEX_PATTERN.match(rest)\n                    if m:\n                        idx = m.groups()[0]\n                        if not self.DIGIT_PATTERN.match(idx):\n                            d = d[idx]\n                        else:\n                            try:\n                                n = int(idx) # try as number first (most likely)\n                                d = d[n]\n                            except TypeError:\n                                d = d[idx]\n                if m:\n                    rest = rest[m.end():]\n                else:\n                    raise ValueError('Unable to convert '\n                                     '%r at %r' % (value, rest))\n        #rest should be empty\n        return d\n\n    def convert(self, value):\n        \"\"\"\n        Convert values to an appropriate type. dicts, lists and tuples are\n        replaced by their converting alternatives. Strings are checked to\n        see if they have a conversion format and are converted if they do.\n        \"\"\"\n        if not isinstance(value, ConvertingDict) and isinstance(value, dict):\n            value = ConvertingDict(value)\n            value.configurator = self\n        elif not isinstance(value, ConvertingList) and isinstance(value, list):\n            value = ConvertingList(value)\n            value.configurator = self\n        elif not isinstance(value, ConvertingTuple) and\\\n                 isinstance(value, tuple):\n            value = ConvertingTuple(value)\n            value.configurator = self\n        elif isinstance(value, six.string_types): # str for py3k\n            m = self.CONVERT_PATTERN.match(value)\n            if m:\n                d = m.groupdict()\n                prefix = d['prefix']\n                converter = self.value_converters.get(prefix, None)\n                if converter:\n                    suffix = d['suffix']\n                    converter = getattr(self, converter)\n                    value = converter(suffix)\n        return value\n\n    def configure_custom(self, config):\n        \"\"\"Configure an object with a user-supplied factory.\"\"\"\n        c = config.pop('()')\n        if not hasattr(c, '__call__') and hasattr(types, 'ClassType') and type(c) != types.ClassType:\n            c = self.resolve(c)\n        props = config.pop('.', None)\n        # Check for valid identifiers\n        kwargs = dict([(k, config[k]) for k in config if valid_ident(k)])\n        result = c(**kwargs)\n        if props:\n            for name, value in props.items():\n                setattr(result, name, value)\n        return result\n\n    def as_tuple(self, value):\n        \"\"\"Utility function which converts lists to tuples.\"\"\"\n        if isinstance(value, list):\n            value = tuple(value)\n        return value\n\nclass DictConfigurator(BaseConfigurator):\n    \"\"\"\n    Configure logging using a dictionary-like object to describe the\n    configuration.\n    \"\"\"\n\n    def configure(self):\n        \"\"\"Do the configuration.\"\"\"\n\n        config = self.config\n        if 'version' not in config:\n            raise ValueError(\"dictionary doesn't specify a version\")\n        if config['version'] != 1:\n            raise ValueError(\"Unsupported version: %s\" % config['version'])\n        incremental = config.pop('incremental', False)\n        EMPTY_DICT = {}\n        logging._acquireLock()\n        try:\n            if incremental:\n                handlers = config.get('handlers', EMPTY_DICT)\n                # incremental handler config only if handler name\n                # ties in to logging._handlers (Python 2.7)\n                if sys.version_info[:2] == (2, 7):\n                    for name in handlers:\n                        if name not in logging._handlers:\n                            raise ValueError('No handler found with '\n                                             'name %r'  % name)\n                        else:\n                            try:\n                                handler = logging._handlers[name]\n                                handler_config = handlers[name]\n                                level = handler_config.get('level', None)\n                                if level:\n                                    handler.setLevel(_checkLevel(level))\n                            except StandardError as e:\n                                raise ValueError('Unable to configure handler '\n                                                 '%r: %s' % (name, e))\n                loggers = config.get('loggers', EMPTY_DICT)\n                for name in loggers:\n                    try:\n                        self.configure_logger(name, loggers[name], True)\n                    except StandardError as e:\n                        raise ValueError('Unable to configure logger '\n                                         '%r: %s' % (name, e))\n                root = config.get('root', None)\n                if root:\n                    try:\n                        self.configure_root(root, True)\n                    except StandardError as e:\n                        raise ValueError('Unable to configure root '\n                                         'logger: %s' % e)\n            else:\n                disable_existing = config.pop('disable_existing_loggers', True)\n\n                logging._handlers.clear()\n                del logging._handlerList[:]\n\n                # Do formatters first - they don't refer to anything else\n                formatters = config.get('formatters', EMPTY_DICT)\n                for name in formatters:\n                    try:\n                        formatters[name] = self.configure_formatter(\n                                                            formatters[name])\n                    except StandardError as e:\n                        raise ValueError('Unable to configure '\n                                         'formatter %r: %s' % (name, e))\n                # Next, do filters - they don't refer to anything else, either\n                filters = config.get('filters', EMPTY_DICT)\n                for name in filters:\n                    try:\n                        filters[name] = self.configure_filter(filters[name])\n                    except StandardError as e:\n                        raise ValueError('Unable to configure '\n                                         'filter %r: %s' % (name, e))\n\n                # Next, do handlers - they refer to formatters and filters\n                # As handlers can refer to other handlers, sort the keys\n                # to allow a deterministic order of configuration\n                handlers = config.get('handlers', EMPTY_DICT)\n                for name in sorted(handlers):\n                    try:\n                        handler = self.configure_handler(handlers[name])\n                        handler.name = name\n                        handlers[name] = handler\n                    except StandardError as e:\n                        raise ValueError('Unable to configure handler '\n                                         '%r: %s' % (name, e))\n                # Next, do loggers - they refer to handlers and filters\n\n                #we don't want to lose the existing loggers,\n                #since other threads may have pointers to them.\n                #existing is set to contain all existing loggers,\n                #and as we go through the new configuration we\n                #remove any which are configured. At the end,\n                #what's left in existing is the set of loggers\n                #which were in the previous configuration but\n                #which are not in the new configuration.\n                root = logging.root\n                existing = list(root.manager.loggerDict)\n                #The list needs to be sorted so that we can\n                #avoid disabling child loggers of explicitly\n                #named loggers. With a sorted list it is easier\n                #to find the child loggers.\n                existing.sort()\n                #We'll keep the list of existing loggers\n                #which are children of named loggers here...\n                child_loggers = []\n                #now set up the new ones...\n                loggers = config.get('loggers', EMPTY_DICT)\n                for name in loggers:\n                    if name in existing:\n                        i = existing.index(name)\n                        prefixed = name + \".\"\n                        pflen = len(prefixed)\n                        num_existing = len(existing)\n                        i = i + 1 # look at the entry after name\n                        while (i < num_existing) and\\\n                              (existing[i][:pflen] == prefixed):\n                            child_loggers.append(existing[i])\n                            i = i + 1\n                        existing.remove(name)\n                    try:\n                        self.configure_logger(name, loggers[name])\n                    except StandardError as e:\n                        raise ValueError('Unable to configure logger '\n                                         '%r: %s' % (name, e))\n\n                #Disable any old loggers. There's no point deleting\n                #them as other threads may continue to hold references\n                #and by disabling them, you stop them doing any logging.\n                #However, don't disable children of named loggers, as that's\n                #probably not what was intended by the user.\n                for log in existing:\n                    logger = root.manager.loggerDict[log]\n                    if log in child_loggers:\n                        logger.level = logging.NOTSET\n                        logger.handlers = []\n                        logger.propagate = True\n                    elif disable_existing:\n                        logger.disabled = True\n\n                # And finally, do the root logger\n                root = config.get('root', None)\n                if root:\n                    try:\n                        self.configure_root(root)\n                    except StandardError as e:\n                        raise ValueError('Unable to configure root '\n                                         'logger: %s' % e)\n        finally:\n            logging._releaseLock()\n\n    def configure_formatter(self, config):\n        \"\"\"Configure a formatter from a dictionary.\"\"\"\n        if '()' in config:\n            factory = config['()'] # for use in exception handler\n            try:\n                result = self.configure_custom(config)\n            except TypeError as te:\n                if \"'format'\" not in str(te):\n                    raise\n                #Name of parameter changed from fmt to format.\n                #Retry with old name.\n                #This is so that code can be used with older Python versions\n                #(e.g. by Django)\n                config['fmt'] = config.pop('format')\n                config['()'] = factory\n                result = self.configure_custom(config)\n        else:\n            fmt = config.get('format', None)\n            dfmt = config.get('datefmt', None)\n            result = logging.Formatter(fmt, dfmt)\n        return result\n\n    def configure_filter(self, config):\n        \"\"\"Configure a filter from a dictionary.\"\"\"\n        if '()' in config:\n            result = self.configure_custom(config)\n        else:\n            name = config.get('name', '')\n            result = logging.Filter(name)\n        return result\n\n    def add_filters(self, filterer, filters):\n        \"\"\"Add filters to a filterer from a list of names.\"\"\"\n        for f in filters:\n            try:\n                filterer.addFilter(self.config['filters'][f])\n            except StandardError as e:\n                raise ValueError('Unable to add filter %r: %s' % (f, e))\n\n    def configure_handler(self, config):\n        \"\"\"Configure a handler from a dictionary.\"\"\"\n        formatter = config.pop('formatter', None)\n        if formatter:\n            try:\n                formatter = self.config['formatters'][formatter]\n            except StandardError as e:\n                raise ValueError('Unable to set formatter '\n                                 '%r: %s' % (formatter, e))\n        level = config.pop('level', None)\n        filters = config.pop('filters', None)\n        if '()' in config:\n            c = config.pop('()')\n            if not hasattr(c, '__call__') and hasattr(types, 'ClassType') and type(c) != types.ClassType:\n                c = self.resolve(c)\n            factory = c\n        else:\n            klass = self.resolve(config.pop('class'))\n            #Special case for handler which refers to another handler\n            if issubclass(klass, logging.handlers.MemoryHandler) and\\\n                'target' in config:\n                try:\n                    config['target'] = self.config['handlers'][config['target']]\n                except StandardError as e:\n                    raise ValueError('Unable to set target handler '\n                                     '%r: %s' % (config['target'], e))\n            elif issubclass(klass, logging.handlers.SMTPHandler) and\\\n                'mailhost' in config:\n                config['mailhost'] = self.as_tuple(config['mailhost'])\n            elif issubclass(klass, logging.handlers.SysLogHandler) and\\\n                'address' in config:\n                config['address'] = self.as_tuple(config['address'])\n            factory = klass\n        kwargs = dict([(k, config[k]) for k in config if valid_ident(k)])\n        try:\n            result = factory(**kwargs)\n        except TypeError as te:\n            if \"'stream'\" not in str(te):\n                raise\n            #The argument name changed from strm to stream\n            #Retry with old name.\n            #This is so that code can be used with older Python versions\n            #(e.g. by Django)\n            kwargs['strm'] = kwargs.pop('stream')\n            result = factory(**kwargs)\n        if formatter:\n            result.setFormatter(formatter)\n        if level is not None:\n            result.setLevel(_checkLevel(level))\n        if filters:\n            self.add_filters(result, filters)\n        return result\n\n    def add_handlers(self, logger, handlers):\n        \"\"\"Add handlers to a logger from a list of names.\"\"\"\n        for h in handlers:\n            try:\n                logger.addHandler(self.config['handlers'][h])\n            except StandardError as e:\n                raise ValueError('Unable to add handler %r: %s' % (h, e))\n\n    def common_logger_config(self, logger, config, incremental=False):\n        \"\"\"\n        Perform configuration which is common to root and non-root loggers.\n        \"\"\"\n        level = config.get('level', None)\n        if level is not None:\n            logger.setLevel(_checkLevel(level))\n        if not incremental:\n            #Remove any existing handlers\n            for h in logger.handlers[:]:\n                logger.removeHandler(h)\n            handlers = config.get('handlers', None)\n            if handlers:\n                self.add_handlers(logger, handlers)\n            filters = config.get('filters', None)\n            if filters:\n                self.add_filters(logger, filters)\n\n    def configure_logger(self, name, config, incremental=False):\n        \"\"\"Configure a non-root logger from a dictionary.\"\"\"\n        logger = logging.getLogger(name)\n        self.common_logger_config(logger, config, incremental)\n        propagate = config.get('propagate', None)\n        if propagate is not None:\n            logger.propagate = propagate\n\n    def configure_root(self, config, incremental=False):\n        \"\"\"Configure a root logger from a dictionary.\"\"\"\n        root = logging.getLogger()\n        self.common_logger_config(root, config, incremental)\n\ndictConfigClass = DictConfigurator\n\ndef dictConfig(config):\n    \"\"\"Configure logging using a dictionary.\"\"\"\n    dictConfigClass(config).configure()\n"
  },
  {
    "path": "Django-1.5.1/django/utils/encoding.py",
    "content": "from __future__ import unicode_literals\n\nimport codecs\nimport datetime\nfrom decimal import Decimal\nimport locale\ntry:\n    from urllib.parse import quote\nexcept ImportError:     # Python 2\n    from urllib import quote\nimport warnings\n\nfrom django.utils.functional import Promise\nfrom django.utils import six\n\nclass DjangoUnicodeDecodeError(UnicodeDecodeError):\n    def __init__(self, obj, *args):\n        self.obj = obj\n        UnicodeDecodeError.__init__(self, *args)\n\n    def __str__(self):\n        original = UnicodeDecodeError.__str__(self)\n        return '%s. You passed in %r (%s)' % (original, self.obj,\n                type(self.obj))\n\nclass StrAndUnicode(object):\n    \"\"\"\n    A class that derives __str__ from __unicode__.\n\n    On Python 2, __str__ returns the output of __unicode__ encoded as a UTF-8\n    bytestring. On Python 3, __str__ returns the output of __unicode__.\n\n    Useful as a mix-in. If you support Python 2 and 3 with a single code base,\n    you can inherit this mix-in and just define __unicode__.\n    \"\"\"\n    def __init__(self, *args, **kwargs):\n        warnings.warn(\"StrAndUnicode is deprecated. Define a __str__ method \"\n                      \"and apply the @python_2_unicode_compatible decorator \"\n                      \"instead.\", PendingDeprecationWarning, stacklevel=2)\n        super(StrAndUnicode, self).__init__(*args, **kwargs)\n\n    if six.PY3:\n        def __str__(self):\n            return self.__unicode__()\n    else:\n        def __str__(self):\n            return self.__unicode__().encode('utf-8')\n\ndef python_2_unicode_compatible(klass):\n    \"\"\"\n    A decorator that defines __unicode__ and __str__ methods under Python 2.\n    Under Python 3 it does nothing.\n\n    To support Python 2 and 3 with a single code base, define a __str__ method\n    returning text and apply this decorator to the class.\n    \"\"\"\n    if not six.PY3:\n        klass.__unicode__ = klass.__str__\n        klass.__str__ = lambda self: self.__unicode__().encode('utf-8')\n    return klass\n\ndef smart_text(s, encoding='utf-8', strings_only=False, errors='strict'):\n    \"\"\"\n    Returns a text object representing 's' -- unicode on Python 2 and str on\n    Python 3. Treats bytestrings using the 'encoding' codec.\n\n    If strings_only is True, don't convert (some) non-string-like objects.\n    \"\"\"\n    if isinstance(s, Promise):\n        # The input is the result of a gettext_lazy() call.\n        return s\n    return force_text(s, encoding, strings_only, errors)\n\ndef is_protected_type(obj):\n    \"\"\"Determine if the object instance is of a protected type.\n\n    Objects of protected types are preserved as-is when passed to\n    force_text(strings_only=True).\n    \"\"\"\n    return isinstance(obj, six.integer_types + (type(None), float, Decimal,\n        datetime.datetime, datetime.date, datetime.time))\n\ndef force_text(s, encoding='utf-8', strings_only=False, errors='strict'):\n    \"\"\"\n    Similar to smart_text, except that lazy instances are resolved to\n    strings, rather than kept as lazy objects.\n\n    If strings_only is True, don't convert (some) non-string-like objects.\n    \"\"\"\n    # Handle the common case first, saves 30-40% when s is an instance of\n    # six.text_type. This function gets called often in that setting.\n    if isinstance(s, six.text_type):\n        return s\n    if strings_only and is_protected_type(s):\n        return s\n    try:\n        if not isinstance(s, six.string_types):\n            if hasattr(s, '__unicode__'):\n                s = s.__unicode__()\n            else:\n                if six.PY3:\n                    if isinstance(s, bytes):\n                        s = six.text_type(s, encoding, errors)\n                    else:\n                        s = six.text_type(s)\n                else:\n                    s = six.text_type(bytes(s), encoding, errors)\n        else:\n            # Note: We use .decode() here, instead of six.text_type(s, encoding,\n            # errors), so that if s is a SafeBytes, it ends up being a\n            # SafeText at the end.\n            s = s.decode(encoding, errors)\n    except UnicodeDecodeError as e:\n        if not isinstance(s, Exception):\n            raise DjangoUnicodeDecodeError(s, *e.args)\n        else:\n            # If we get to here, the caller has passed in an Exception\n            # subclass populated with non-ASCII bytestring data without a\n            # working unicode method. Try to handle this without raising a\n            # further exception by individually forcing the exception args\n            # to unicode.\n            s = ' '.join([force_text(arg, encoding, strings_only,\n                    errors) for arg in s])\n    return s\n\ndef smart_bytes(s, encoding='utf-8', strings_only=False, errors='strict'):\n    \"\"\"\n    Returns a bytestring version of 's', encoded as specified in 'encoding'.\n\n    If strings_only is True, don't convert (some) non-string-like objects.\n    \"\"\"\n    if isinstance(s, Promise):\n        # The input is the result of a gettext_lazy() call.\n        return s\n    return force_bytes(s, encoding, strings_only, errors)\n\n\ndef force_bytes(s, encoding='utf-8', strings_only=False, errors='strict'):\n    \"\"\"\n    Similar to smart_bytes, except that lazy instances are resolved to\n    strings, rather than kept as lazy objects.\n\n    If strings_only is True, don't convert (some) non-string-like objects.\n    \"\"\"\n    if isinstance(s, bytes):\n        if encoding == 'utf-8':\n            return s\n        else:\n            return s.decode('utf-8', errors).encode(encoding, errors)\n    if strings_only and (s is None or isinstance(s, int)):\n        return s\n    if isinstance(s, Promise):\n        return six.text_type(s).encode(encoding, errors)\n    if not isinstance(s, six.string_types):\n        try:\n            if six.PY3:\n                return six.text_type(s).encode(encoding)\n            else:\n                return bytes(s)\n        except UnicodeEncodeError:\n            if isinstance(s, Exception):\n                # An Exception subclass containing non-ASCII data that doesn't\n                # know how to print itself properly. We shouldn't raise a\n                # further exception.\n                return b' '.join([force_bytes(arg, encoding, strings_only,\n                        errors) for arg in s])\n            return six.text_type(s).encode(encoding, errors)\n    else:\n        return s.encode(encoding, errors)\n\nif six.PY3:\n    smart_str = smart_text\n    force_str = force_text\nelse:\n    smart_str = smart_bytes\n    force_str = force_bytes\n    # backwards compatibility for Python 2\n    smart_unicode = smart_text\n    force_unicode = force_text\n\nsmart_str.__doc__ = \"\"\"\\\nApply smart_text in Python 3 and smart_bytes in Python 2.\n\nThis is suitable for writing to sys.stdout (for instance).\n\"\"\"\n\nforce_str.__doc__ = \"\"\"\\\nApply force_text in Python 3 and force_bytes in Python 2.\n\"\"\"\n\ndef iri_to_uri(iri):\n    \"\"\"\n    Convert an Internationalized Resource Identifier (IRI) portion to a URI\n    portion that is suitable for inclusion in a URL.\n\n    This is the algorithm from section 3.1 of RFC 3987.  However, since we are\n    assuming input is either UTF-8 or unicode already, we can simplify things a\n    little from the full method.\n\n    Returns an ASCII string containing the encoded result.\n    \"\"\"\n    # The list of safe characters here is constructed from the \"reserved\" and\n    # \"unreserved\" characters specified in sections 2.2 and 2.3 of RFC 3986:\n    #     reserved    = gen-delims / sub-delims\n    #     gen-delims  = \":\" / \"/\" / \"?\" / \"#\" / \"[\" / \"]\" / \"@\"\n    #     sub-delims  = \"!\" / \"$\" / \"&\" / \"'\" / \"(\" / \")\"\n    #                   / \"*\" / \"+\" / \",\" / \";\" / \"=\"\n    #     unreserved  = ALPHA / DIGIT / \"-\" / \".\" / \"_\" / \"~\"\n    # Of the unreserved characters, urllib.quote already considers all but\n    # the ~ safe.\n    # The % character is also added to the list of safe characters here, as the\n    # end of section 3.1 of RFC 3987 specifically mentions that % must not be\n    # converted.\n    if iri is None:\n        return iri\n    return quote(force_bytes(iri), safe=b\"/#%[]=:;$&()+,!?*@'~\")\n\ndef filepath_to_uri(path):\n    \"\"\"Convert a file system path to a URI portion that is suitable for\n    inclusion in a URL.\n\n    We are assuming input is either UTF-8 or unicode already.\n\n    This method will encode certain chars that would normally be recognized as\n    special chars for URIs.  Note that this method does not encode the '\n    character, as it is a valid character within URIs.  See\n    encodeURIComponent() JavaScript function for more details.\n\n    Returns an ASCII string containing the encoded result.\n    \"\"\"\n    if path is None:\n        return path\n    # I know about `os.sep` and `os.altsep` but I want to leave\n    # some flexibility for hardcoding separators.\n    return quote(force_bytes(path).replace(b\"\\\\\", b\"/\"), safe=b\"/~!*()'\")\n\n# The encoding of the default system locale but falls back to the\n# given fallback encoding if the encoding is unsupported by python or could\n# not be determined.  See tickets #10335 and #5846\ntry:\n    DEFAULT_LOCALE_ENCODING = locale.getdefaultlocale()[1] or 'ascii'\n    codecs.lookup(DEFAULT_LOCALE_ENCODING)\nexcept:\n    DEFAULT_LOCALE_ENCODING = 'ascii'\n"
  },
  {
    "path": "Django-1.5.1/django/utils/feedgenerator.py",
    "content": "\"\"\"\nSyndication feed generation library -- used for generating RSS, etc.\n\nSample usage:\n\n>>> from django.utils import feedgenerator\n>>> feed = feedgenerator.Rss201rev2Feed(\n...     title=\"Poynter E-Media Tidbits\",\n...     link=\"http://www.poynter.org/column.asp?id=31\",\n...     description=\"A group Weblog by the sharpest minds in online media/journalism/publishing.\",\n...     language=\"en\",\n... )\n>>> feed.add_item(\n...     title=\"Hello\",\n...     link=\"http://www.holovaty.com/test/\",\n...     description=\"Testing.\"\n... )\n>>> with open('test.rss', 'w') as fp:\n...     feed.write(fp, 'utf-8')\n\nFor definitions of the different versions of RSS, see:\nhttp://web.archive.org/web/20110718035220/http://diveintomark.org/archives/2004/02/04/incompatible-rss\n\"\"\"\nfrom __future__ import unicode_literals\n\nimport datetime\ntry:\n    from urllib.parse import urlparse\nexcept ImportError:     # Python 2\n    from urlparse import urlparse\nfrom django.utils.xmlutils import SimplerXMLGenerator\nfrom django.utils.encoding import force_text, iri_to_uri\nfrom django.utils import datetime_safe\nfrom django.utils import six\nfrom django.utils.six import StringIO\nfrom django.utils.timezone import is_aware\n\ndef rfc2822_date(date):\n    # We can't use strftime() because it produces locale-dependant results, so\n    # we have to map english month and day names manually\n    months = ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec',)\n    days = ('Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun')\n    # Support datetime objects older than 1900\n    date = datetime_safe.new_datetime(date)\n    # We do this ourselves to be timezone aware, email.Utils is not tz aware.\n    dow = days[date.weekday()]\n    month = months[date.month - 1]\n    time_str = date.strftime('%s, %%d %s %%Y %%H:%%M:%%S ' % (dow, month))\n    if not six.PY3:             # strftime returns a byte string in Python 2\n        time_str = time_str.decode('utf-8')\n    if is_aware(date):\n        offset = date.tzinfo.utcoffset(date)\n        timezone = (offset.days * 24 * 60) + (offset.seconds // 60)\n        hour, minute = divmod(timezone, 60)\n        return time_str + '%+03d%02d' % (hour, minute)\n    else:\n        return time_str + '-0000'\n\ndef rfc3339_date(date):\n    # Support datetime objects older than 1900\n    date = datetime_safe.new_datetime(date)\n    time_str = date.strftime('%Y-%m-%dT%H:%M:%S')\n    if not six.PY3:             # strftime returns a byte string in Python 2\n        time_str = time_str.decode('utf-8')\n    if is_aware(date):\n        offset = date.tzinfo.utcoffset(date)\n        timezone = (offset.days * 24 * 60) + (offset.seconds // 60)\n        hour, minute = divmod(timezone, 60)\n        return time_str + '%+03d:%02d' % (hour, minute)\n    else:\n        return time_str + 'Z'\n\ndef get_tag_uri(url, date):\n    \"\"\"\n    Creates a TagURI.\n\n    See http://web.archive.org/web/20110514113830/http://diveintomark.org/archives/2004/05/28/howto-atom-id\n    \"\"\"\n    bits = urlparse(url)\n    d = ''\n    if date is not None:\n        d = ',%s' % datetime_safe.new_datetime(date).strftime('%Y-%m-%d')\n    return 'tag:%s%s:%s/%s' % (bits.hostname, d, bits.path, bits.fragment)\n\nclass SyndicationFeed(object):\n    \"Base class for all syndication feeds. Subclasses should provide write()\"\n    def __init__(self, title, link, description, language=None, author_email=None,\n            author_name=None, author_link=None, subtitle=None, categories=None,\n            feed_url=None, feed_copyright=None, feed_guid=None, ttl=None, **kwargs):\n        to_unicode = lambda s: force_text(s, strings_only=True)\n        if categories:\n            categories = [force_text(c) for c in categories]\n        if ttl is not None:\n            # Force ints to unicode\n            ttl = force_text(ttl)\n        self.feed = {\n            'title': to_unicode(title),\n            'link': iri_to_uri(link),\n            'description': to_unicode(description),\n            'language': to_unicode(language),\n            'author_email': to_unicode(author_email),\n            'author_name': to_unicode(author_name),\n            'author_link': iri_to_uri(author_link),\n            'subtitle': to_unicode(subtitle),\n            'categories': categories or (),\n            'feed_url': iri_to_uri(feed_url),\n            'feed_copyright': to_unicode(feed_copyright),\n            'id': feed_guid or link,\n            'ttl': ttl,\n        }\n        self.feed.update(kwargs)\n        self.items = []\n\n    def add_item(self, title, link, description, author_email=None,\n        author_name=None, author_link=None, pubdate=None, comments=None,\n        unique_id=None, enclosure=None, categories=(), item_copyright=None,\n        ttl=None, **kwargs):\n        \"\"\"\n        Adds an item to the feed. All args are expected to be Python Unicode\n        objects except pubdate, which is a datetime.datetime object, and\n        enclosure, which is an instance of the Enclosure class.\n        \"\"\"\n        to_unicode = lambda s: force_text(s, strings_only=True)\n        if categories:\n            categories = [to_unicode(c) for c in categories]\n        if ttl is not None:\n            # Force ints to unicode\n            ttl = force_text(ttl)\n        item = {\n            'title': to_unicode(title),\n            'link': iri_to_uri(link),\n            'description': to_unicode(description),\n            'author_email': to_unicode(author_email),\n            'author_name': to_unicode(author_name),\n            'author_link': iri_to_uri(author_link),\n            'pubdate': pubdate,\n            'comments': to_unicode(comments),\n            'unique_id': to_unicode(unique_id),\n            'enclosure': enclosure,\n            'categories': categories or (),\n            'item_copyright': to_unicode(item_copyright),\n            'ttl': ttl,\n        }\n        item.update(kwargs)\n        self.items.append(item)\n\n    def num_items(self):\n        return len(self.items)\n\n    def root_attributes(self):\n        \"\"\"\n        Return extra attributes to place on the root (i.e. feed/channel) element.\n        Called from write().\n        \"\"\"\n        return {}\n\n    def add_root_elements(self, handler):\n        \"\"\"\n        Add elements in the root (i.e. feed/channel) element. Called\n        from write().\n        \"\"\"\n        pass\n\n    def item_attributes(self, item):\n        \"\"\"\n        Return extra attributes to place on each item (i.e. item/entry) element.\n        \"\"\"\n        return {}\n\n    def add_item_elements(self, handler, item):\n        \"\"\"\n        Add elements on each item (i.e. item/entry) element.\n        \"\"\"\n        pass\n\n    def write(self, outfile, encoding):\n        \"\"\"\n        Outputs the feed in the given encoding to outfile, which is a file-like\n        object. Subclasses should override this.\n        \"\"\"\n        raise NotImplementedError\n\n    def writeString(self, encoding):\n        \"\"\"\n        Returns the feed in the given encoding as a string.\n        \"\"\"\n        s = StringIO()\n        self.write(s, encoding)\n        return s.getvalue()\n\n    def latest_post_date(self):\n        \"\"\"\n        Returns the latest item's pubdate. If none of them have a pubdate,\n        this returns the current date/time.\n        \"\"\"\n        updates = [i['pubdate'] for i in self.items if i['pubdate'] is not None]\n        if len(updates) > 0:\n            updates.sort()\n            return updates[-1]\n        else:\n            return datetime.datetime.now()\n\nclass Enclosure(object):\n    \"Represents an RSS enclosure\"\n    def __init__(self, url, length, mime_type):\n        \"All args are expected to be Python Unicode objects\"\n        self.length, self.mime_type = length, mime_type\n        self.url = iri_to_uri(url)\n\nclass RssFeed(SyndicationFeed):\n    mime_type = 'application/rss+xml; charset=utf-8'\n    def write(self, outfile, encoding):\n        handler = SimplerXMLGenerator(outfile, encoding)\n        handler.startDocument()\n        handler.startElement(\"rss\", self.rss_attributes())\n        handler.startElement(\"channel\", self.root_attributes())\n        self.add_root_elements(handler)\n        self.write_items(handler)\n        self.endChannelElement(handler)\n        handler.endElement(\"rss\")\n\n    def rss_attributes(self):\n        return {\"version\": self._version,\n                \"xmlns:atom\": \"http://www.w3.org/2005/Atom\"}\n\n    def write_items(self, handler):\n        for item in self.items:\n            handler.startElement('item', self.item_attributes(item))\n            self.add_item_elements(handler, item)\n            handler.endElement(\"item\")\n\n    def add_root_elements(self, handler):\n        handler.addQuickElement(\"title\", self.feed['title'])\n        handler.addQuickElement(\"link\", self.feed['link'])\n        handler.addQuickElement(\"description\", self.feed['description'])\n        if self.feed['feed_url'] is not None:\n            handler.addQuickElement(\"atom:link\", None,\n                    {\"rel\": \"self\", \"href\": self.feed['feed_url']})\n        if self.feed['language'] is not None:\n            handler.addQuickElement(\"language\", self.feed['language'])\n        for cat in self.feed['categories']:\n            handler.addQuickElement(\"category\", cat)\n        if self.feed['feed_copyright'] is not None:\n            handler.addQuickElement(\"copyright\", self.feed['feed_copyright'])\n        handler.addQuickElement(\"lastBuildDate\", rfc2822_date(self.latest_post_date()))\n        if self.feed['ttl'] is not None:\n            handler.addQuickElement(\"ttl\", self.feed['ttl'])\n\n    def endChannelElement(self, handler):\n        handler.endElement(\"channel\")\n\nclass RssUserland091Feed(RssFeed):\n    _version = \"0.91\"\n    def add_item_elements(self, handler, item):\n        handler.addQuickElement(\"title\", item['title'])\n        handler.addQuickElement(\"link\", item['link'])\n        if item['description'] is not None:\n            handler.addQuickElement(\"description\", item['description'])\n\nclass Rss201rev2Feed(RssFeed):\n    # Spec: http://blogs.law.harvard.edu/tech/rss\n    _version = \"2.0\"\n    def add_item_elements(self, handler, item):\n        handler.addQuickElement(\"title\", item['title'])\n        handler.addQuickElement(\"link\", item['link'])\n        if item['description'] is not None:\n            handler.addQuickElement(\"description\", item['description'])\n\n        # Author information.\n        if item[\"author_name\"] and item[\"author_email\"]:\n            handler.addQuickElement(\"author\", \"%s (%s)\" % \\\n                (item['author_email'], item['author_name']))\n        elif item[\"author_email\"]:\n            handler.addQuickElement(\"author\", item[\"author_email\"])\n        elif item[\"author_name\"]:\n            handler.addQuickElement(\"dc:creator\", item[\"author_name\"], {\"xmlns:dc\": \"http://purl.org/dc/elements/1.1/\"})\n\n        if item['pubdate'] is not None:\n            handler.addQuickElement(\"pubDate\", rfc2822_date(item['pubdate']))\n        if item['comments'] is not None:\n            handler.addQuickElement(\"comments\", item['comments'])\n        if item['unique_id'] is not None:\n            handler.addQuickElement(\"guid\", item['unique_id'])\n        if item['ttl'] is not None:\n            handler.addQuickElement(\"ttl\", item['ttl'])\n\n        # Enclosure.\n        if item['enclosure'] is not None:\n            handler.addQuickElement(\"enclosure\", '',\n                {\"url\": item['enclosure'].url, \"length\": item['enclosure'].length,\n                    \"type\": item['enclosure'].mime_type})\n\n        # Categories.\n        for cat in item['categories']:\n            handler.addQuickElement(\"category\", cat)\n\nclass Atom1Feed(SyndicationFeed):\n    # Spec: http://atompub.org/2005/07/11/draft-ietf-atompub-format-10.html\n    mime_type = 'application/atom+xml; charset=utf-8'\n    ns = \"http://www.w3.org/2005/Atom\"\n\n    def write(self, outfile, encoding):\n        handler = SimplerXMLGenerator(outfile, encoding)\n        handler.startDocument()\n        handler.startElement('feed', self.root_attributes())\n        self.add_root_elements(handler)\n        self.write_items(handler)\n        handler.endElement(\"feed\")\n\n    def root_attributes(self):\n        if self.feed['language'] is not None:\n            return {\"xmlns\": self.ns, \"xml:lang\": self.feed['language']}\n        else:\n            return {\"xmlns\": self.ns}\n\n    def add_root_elements(self, handler):\n        handler.addQuickElement(\"title\", self.feed['title'])\n        handler.addQuickElement(\"link\", \"\", {\"rel\": \"alternate\", \"href\": self.feed['link']})\n        if self.feed['feed_url'] is not None:\n            handler.addQuickElement(\"link\", \"\", {\"rel\": \"self\", \"href\": self.feed['feed_url']})\n        handler.addQuickElement(\"id\", self.feed['id'])\n        handler.addQuickElement(\"updated\", rfc3339_date(self.latest_post_date()))\n        if self.feed['author_name'] is not None:\n            handler.startElement(\"author\", {})\n            handler.addQuickElement(\"name\", self.feed['author_name'])\n            if self.feed['author_email'] is not None:\n                handler.addQuickElement(\"email\", self.feed['author_email'])\n            if self.feed['author_link'] is not None:\n                handler.addQuickElement(\"uri\", self.feed['author_link'])\n            handler.endElement(\"author\")\n        if self.feed['subtitle'] is not None:\n            handler.addQuickElement(\"subtitle\", self.feed['subtitle'])\n        for cat in self.feed['categories']:\n            handler.addQuickElement(\"category\", \"\", {\"term\": cat})\n        if self.feed['feed_copyright'] is not None:\n            handler.addQuickElement(\"rights\", self.feed['feed_copyright'])\n\n    def write_items(self, handler):\n        for item in self.items:\n            handler.startElement(\"entry\", self.item_attributes(item))\n            self.add_item_elements(handler, item)\n            handler.endElement(\"entry\")\n\n    def add_item_elements(self, handler, item):\n        handler.addQuickElement(\"title\", item['title'])\n        handler.addQuickElement(\"link\", \"\", {\"href\": item['link'], \"rel\": \"alternate\"})\n        if item['pubdate'] is not None:\n            handler.addQuickElement(\"updated\", rfc3339_date(item['pubdate']))\n\n        # Author information.\n        if item['author_name'] is not None:\n            handler.startElement(\"author\", {})\n            handler.addQuickElement(\"name\", item['author_name'])\n            if item['author_email'] is not None:\n                handler.addQuickElement(\"email\", item['author_email'])\n            if item['author_link'] is not None:\n                handler.addQuickElement(\"uri\", item['author_link'])\n            handler.endElement(\"author\")\n\n        # Unique ID.\n        if item['unique_id'] is not None:\n            unique_id = item['unique_id']\n        else:\n            unique_id = get_tag_uri(item['link'], item['pubdate'])\n        handler.addQuickElement(\"id\", unique_id)\n\n        # Summary.\n        if item['description'] is not None:\n            handler.addQuickElement(\"summary\", item['description'], {\"type\": \"html\"})\n\n        # Enclosure.\n        if item['enclosure'] is not None:\n            handler.addQuickElement(\"link\", '',\n                {\"rel\": \"enclosure\",\n                 \"href\": item['enclosure'].url,\n                 \"length\": item['enclosure'].length,\n                 \"type\": item['enclosure'].mime_type})\n\n        # Categories.\n        for cat in item['categories']:\n            handler.addQuickElement(\"category\", \"\", {\"term\": cat})\n\n        # Rights.\n        if item['item_copyright'] is not None:\n            handler.addQuickElement(\"rights\", item['item_copyright'])\n\n# This isolates the decision of what the system default is, so calling code can\n# do \"feedgenerator.DefaultFeed\" instead of \"feedgenerator.Rss201rev2Feed\".\nDefaultFeed = Rss201rev2Feed\n"
  },
  {
    "path": "Django-1.5.1/django/utils/formats.py",
    "content": "import decimal\nimport datetime\n\nfrom django.conf import settings\nfrom django.utils import dateformat, numberformat, datetime_safe\nfrom django.utils.importlib import import_module\nfrom django.utils.encoding import force_str\nfrom django.utils.functional import lazy\nfrom django.utils.safestring import mark_safe\nfrom django.utils import six\nfrom django.utils.translation import get_language, to_locale, check_for_language\n\n# format_cache is a mapping from (format_type, lang) to the format string.\n# By using the cache, it is possible to avoid running get_format_modules\n# repeatedly.\n_format_cache = {}\n_format_modules_cache = {}\n\nISO_INPUT_FORMATS = {\n    'DATE_INPUT_FORMATS': ('%Y-%m-%d',),\n    'TIME_INPUT_FORMATS': ('%H:%M:%S', '%H:%M'),\n    'DATETIME_INPUT_FORMATS': (\n        '%Y-%m-%d %H:%M:%S',\n        '%Y-%m-%d %H:%M:%S.%f',\n        '%Y-%m-%d %H:%M',\n        '%Y-%m-%d'\n    ),\n}\n\ndef reset_format_cache():\n    \"\"\"Clear any cached formats.\n\n    This method is provided primarily for testing purposes,\n    so that the effects of cached formats can be removed.\n    \"\"\"\n    global _format_cache, _format_modules_cache\n    _format_cache = {}\n    _format_modules_cache = {}\n\ndef iter_format_modules(lang):\n    \"\"\"\n    Does the heavy lifting of finding format modules.\n    \"\"\"\n    if check_for_language(lang):\n        format_locations = ['django.conf.locale.%s']\n        if settings.FORMAT_MODULE_PATH:\n            format_locations.append(settings.FORMAT_MODULE_PATH + '.%s')\n            format_locations.reverse()\n        locale = to_locale(lang)\n        locales = [locale]\n        if '_' in locale:\n            locales.append(locale.split('_')[0])\n        for location in format_locations:\n            for loc in locales:\n                try:\n                    yield import_module('.formats', location % loc)\n                except ImportError:\n                    pass\n\ndef get_format_modules(lang=None, reverse=False):\n    \"\"\"\n    Returns a list of the format modules found\n    \"\"\"\n    if lang is None:\n        lang = get_language()\n    modules = _format_modules_cache.setdefault(lang, list(iter_format_modules(lang)))\n    if reverse:\n        return list(reversed(modules))\n    return modules\n\ndef get_format(format_type, lang=None, use_l10n=None):\n    \"\"\"\n    For a specific format type, returns the format for the current\n    language (locale), defaults to the format in the settings.\n    format_type is the name of the format, e.g. 'DATE_FORMAT'\n\n    If use_l10n is provided and is not None, that will force the value to\n    be localized (or not), overriding the value of settings.USE_L10N.\n    \"\"\"\n    format_type = force_str(format_type)\n    if use_l10n or (use_l10n is None and settings.USE_L10N):\n        if lang is None:\n            lang = get_language()\n        cache_key = (format_type, lang)\n        try:\n            cached = _format_cache[cache_key]\n            if cached is not None:\n                return cached\n            else:\n                # Return the general setting by default\n                return getattr(settings, format_type)\n        except KeyError:\n            for module in get_format_modules(lang):\n                try:\n                    val = getattr(module, format_type)\n                    for iso_input in ISO_INPUT_FORMATS.get(format_type, ()):\n                        if iso_input not in val:\n                            if isinstance(val, tuple):\n                                val = list(val)\n                            val.append(iso_input)\n                    _format_cache[cache_key] = val\n                    return val\n                except AttributeError:\n                    pass\n            _format_cache[cache_key] = None\n    return getattr(settings, format_type)\n\nget_format_lazy = lazy(get_format, six.text_type, list, tuple)\n\ndef date_format(value, format=None, use_l10n=None):\n    \"\"\"\n    Formats a datetime.date or datetime.datetime object using a\n    localizable format\n\n    If use_l10n is provided and is not None, that will force the value to\n    be localized (or not), overriding the value of settings.USE_L10N.\n    \"\"\"\n    return dateformat.format(value, get_format(format or 'DATE_FORMAT', use_l10n=use_l10n))\n\ndef time_format(value, format=None, use_l10n=None):\n    \"\"\"\n    Formats a datetime.time object using a localizable format\n\n    If use_l10n is provided and is not None, that will force the value to\n    be localized (or not), overriding the value of settings.USE_L10N.\n    \"\"\"\n    return dateformat.time_format(value, get_format(format or 'TIME_FORMAT', use_l10n=use_l10n))\n\ndef number_format(value, decimal_pos=None, use_l10n=None, force_grouping=False):\n    \"\"\"\n    Formats a numeric value using localization settings\n\n    If use_l10n is provided and is not None, that will force the value to\n    be localized (or not), overriding the value of settings.USE_L10N.\n    \"\"\"\n    if use_l10n or (use_l10n is None and settings.USE_L10N):\n        lang = get_language()\n    else:\n        lang = None\n    return numberformat.format(\n        value,\n        get_format('DECIMAL_SEPARATOR', lang, use_l10n=use_l10n),\n        decimal_pos,\n        get_format('NUMBER_GROUPING', lang, use_l10n=use_l10n),\n        get_format('THOUSAND_SEPARATOR', lang, use_l10n=use_l10n),\n        force_grouping=force_grouping\n    )\n\ndef localize(value, use_l10n=None):\n    \"\"\"\n    Checks if value is a localizable type (date, number...) and returns it\n    formatted as a string using current locale format.\n\n    If use_l10n is provided and is not None, that will force the value to\n    be localized (or not), overriding the value of settings.USE_L10N.\n    \"\"\"\n    if isinstance(value, bool):\n        return mark_safe(six.text_type(value))\n    elif isinstance(value, (decimal.Decimal, float) + six.integer_types):\n        return number_format(value, use_l10n=use_l10n)\n    elif isinstance(value, datetime.datetime):\n        return date_format(value, 'DATETIME_FORMAT', use_l10n=use_l10n)\n    elif isinstance(value, datetime.date):\n        return date_format(value, use_l10n=use_l10n)\n    elif isinstance(value, datetime.time):\n        return time_format(value, 'TIME_FORMAT', use_l10n=use_l10n)\n    else:\n        return value\n\ndef localize_input(value, default=None):\n    \"\"\"\n    Checks if an input value is a localizable type and returns it\n    formatted with the appropriate formatting string of the current locale.\n    \"\"\"\n    if isinstance(value, (decimal.Decimal, float) + six.integer_types):\n        return number_format(value)\n\n    elif isinstance(value, datetime.datetime):\n        value = datetime_safe.new_datetime(value)\n        format = force_str(default or get_format('DATETIME_INPUT_FORMATS')[0])\n        return value.strftime(format)\n\n    elif isinstance(value, datetime.date):\n        value = datetime_safe.new_date(value)\n        format = force_str(default or get_format('DATE_INPUT_FORMATS')[0])\n        return value.strftime(format)\n\n    elif isinstance(value, datetime.time):\n        format = force_str(default or get_format('TIME_INPUT_FORMATS')[0])\n        return value.strftime(format)\n        \n    return value\n\ndef sanitize_separators(value):\n    \"\"\"\n    Sanitizes a value according to the current decimal and\n    thousand separator setting. Used with form field input.\n    \"\"\"\n    if settings.USE_L10N:\n        decimal_separator = get_format('DECIMAL_SEPARATOR')\n        if isinstance(value, six.string_types):\n            parts = []\n            if decimal_separator in value:\n                value, decimals = value.split(decimal_separator, 1)\n                parts.append(decimals)\n            if settings.USE_THOUSAND_SEPARATOR:\n                parts.append(value.replace(get_format('THOUSAND_SEPARATOR'), ''))\n            else:\n                parts.append(value)\n            value = '.'.join(reversed(parts))\n    return value\n"
  },
  {
    "path": "Django-1.5.1/django/utils/functional.py",
    "content": "import copy\nimport operator\nfrom functools import wraps, update_wrapper\nimport sys\n\nfrom django.utils import six\n\n# You can't trivially replace this `functools.partial` because this binds to\n# classes and returns bound instances, whereas functools.partial (on CPython)\n# is a type and its instances don't bind.\ndef curry(_curried_func, *args, **kwargs):\n    def _curried(*moreargs, **morekwargs):\n        return _curried_func(*(args+moreargs), **dict(kwargs, **morekwargs))\n    return _curried\n\ndef memoize(func, cache, num_args):\n    \"\"\"\n    Wrap a function so that results for any argument tuple are stored in\n    'cache'. Note that the args to the function must be usable as dictionary\n    keys.\n\n    Only the first num_args are considered when creating the key.\n    \"\"\"\n    @wraps(func)\n    def wrapper(*args):\n        mem_args = args[:num_args]\n        if mem_args in cache:\n            return cache[mem_args]\n        result = func(*args)\n        cache[mem_args] = result\n        return result\n    return wrapper\n\nclass cached_property(object):\n    \"\"\"\n    Decorator that creates converts a method with a single\n    self argument into a property cached on the instance.\n    \"\"\"\n    def __init__(self, func):\n        self.func = func\n\n    def __get__(self, instance, type):\n        res = instance.__dict__[self.func.__name__] = self.func(instance)\n        return res\n\nclass Promise(object):\n    \"\"\"\n    This is just a base class for the proxy class created in\n    the closure of the lazy function. It can be used to recognize\n    promises in code.\n    \"\"\"\n    pass\n\ndef lazy(func, *resultclasses):\n    \"\"\"\n    Turns any callable into a lazy evaluated callable. You need to give result\n    classes or types -- at least one is needed so that the automatic forcing of\n    the lazy evaluation code is triggered. Results are not memoized; the\n    function is evaluated on every access.\n    \"\"\"\n\n    @total_ordering\n    class __proxy__(Promise):\n        \"\"\"\n        Encapsulate a function call and act as a proxy for methods that are\n        called on the result of that function. The function is not evaluated\n        until one of the methods on the result is called.\n        \"\"\"\n        __dispatch = None\n\n        def __init__(self, args, kw):\n            self.__args = args\n            self.__kw = kw\n            if self.__dispatch is None:\n                self.__prepare_class__()\n\n        def __reduce__(self):\n            return (\n                _lazy_proxy_unpickle,\n                (func, self.__args, self.__kw) + resultclasses\n            )\n\n        def __prepare_class__(cls):\n            cls.__dispatch = {}\n            for resultclass in resultclasses:\n                cls.__dispatch[resultclass] = {}\n                for type_ in reversed(resultclass.mro()):\n                    for (k, v) in type_.__dict__.items():\n                        # All __promise__ return the same wrapper method, but they\n                        # also do setup, inserting the method into the dispatch\n                        # dict.\n                        meth = cls.__promise__(resultclass, k, v)\n                        if hasattr(cls, k):\n                            continue\n                        setattr(cls, k, meth)\n            cls._delegate_bytes = bytes in resultclasses\n            cls._delegate_text = six.text_type in resultclasses\n            assert not (cls._delegate_bytes and cls._delegate_text), \"Cannot call lazy() with both bytes and text return types.\"\n            if cls._delegate_text:\n                if six.PY3:\n                    cls.__str__ = cls.__text_cast\n                else:\n                    cls.__unicode__ = cls.__text_cast\n            elif cls._delegate_bytes:\n                if six.PY3:\n                    cls.__bytes__ = cls.__bytes_cast\n                else:\n                    cls.__str__ = cls.__bytes_cast\n        __prepare_class__ = classmethod(__prepare_class__)\n\n        def __promise__(cls, klass, funcname, method):\n            # Builds a wrapper around some magic method and registers that magic\n            # method for the given type and method name.\n            def __wrapper__(self, *args, **kw):\n                # Automatically triggers the evaluation of a lazy value and\n                # applies the given magic method of the result type.\n                res = func(*self.__args, **self.__kw)\n                for t in type(res).mro():\n                    if t in self.__dispatch:\n                        return self.__dispatch[t][funcname](res, *args, **kw)\n                raise TypeError(\"Lazy object returned unexpected type.\")\n\n            if klass not in cls.__dispatch:\n                cls.__dispatch[klass] = {}\n            cls.__dispatch[klass][funcname] = method\n            return __wrapper__\n        __promise__ = classmethod(__promise__)\n\n        def __text_cast(self):\n            return func(*self.__args, **self.__kw)\n\n        def __bytes_cast(self):\n            return bytes(func(*self.__args, **self.__kw))\n\n        def __cast(self):\n            if self._delegate_bytes:\n                return self.__bytes_cast()\n            elif self._delegate_text:\n                return self.__text_cast()\n            else:\n                return func(*self.__args, **self.__kw)\n\n        def __eq__(self, other):\n            if isinstance(other, Promise):\n                other = other.__cast()\n            return self.__cast() == other\n\n        def __lt__(self, other):\n            if isinstance(other, Promise):\n                other = other.__cast()\n            return self.__cast() < other\n\n        def __hash__(self):\n            return hash(self.__cast())\n\n        def __mod__(self, rhs):\n            if self._delegate_bytes and not six.PY3:\n                return bytes(self) % rhs\n            elif self._delegate_text:\n                return six.text_type(self) % rhs\n            else:\n                raise AssertionError('__mod__ not supported for non-string types')\n\n        def __deepcopy__(self, memo):\n            # Instances of this class are effectively immutable. It's just a\n            # collection of functions. So we don't need to do anything\n            # complicated for copying.\n            memo[id(self)] = self\n            return self\n\n    @wraps(func)\n    def __wrapper__(*args, **kw):\n        # Creates the proxy object, instead of the actual value.\n        return __proxy__(args, kw)\n\n    return __wrapper__\n\ndef _lazy_proxy_unpickle(func, args, kwargs, *resultclasses):\n    return lazy(func, *resultclasses)(*args, **kwargs)\n\ndef allow_lazy(func, *resultclasses):\n    \"\"\"\n    A decorator that allows a function to be called with one or more lazy\n    arguments. If none of the args are lazy, the function is evaluated\n    immediately, otherwise a __proxy__ is returned that will evaluate the\n    function when needed.\n    \"\"\"\n    @wraps(func)\n    def wrapper(*args, **kwargs):\n        for arg in list(args) + list(six.itervalues(kwargs)):\n            if isinstance(arg, Promise):\n                break\n        else:\n            return func(*args, **kwargs)\n        return lazy(func, *resultclasses)(*args, **kwargs)\n    return wrapper\n\nempty = object()\ndef new_method_proxy(func):\n    def inner(self, *args):\n        if self._wrapped is empty:\n            self._setup()\n        return func(self._wrapped, *args)\n    return inner\n\nclass LazyObject(object):\n    \"\"\"\n    A wrapper for another class that can be used to delay instantiation of the\n    wrapped class.\n\n    By subclassing, you have the opportunity to intercept and alter the\n    instantiation. If you don't need to do that, use SimpleLazyObject.\n    \"\"\"\n    def __init__(self):\n        self._wrapped = empty\n\n    __getattr__ = new_method_proxy(getattr)\n\n    def __setattr__(self, name, value):\n        if name == \"_wrapped\":\n            # Assign to __dict__ to avoid infinite __setattr__ loops.\n            self.__dict__[\"_wrapped\"] = value\n        else:\n            if self._wrapped is empty:\n                self._setup()\n            setattr(self._wrapped, name, value)\n\n    def __delattr__(self, name):\n        if name == \"_wrapped\":\n            raise TypeError(\"can't delete _wrapped.\")\n        if self._wrapped is empty:\n            self._setup()\n        delattr(self._wrapped, name)\n\n    def _setup(self):\n        \"\"\"\n        Must be implemented by subclasses to initialise the wrapped object.\n        \"\"\"\n        raise NotImplementedError\n\n    # introspection support:\n    __dir__ = new_method_proxy(dir)\n\n\n# Workaround for http://bugs.python.org/issue12370\n_super = super\n\nclass SimpleLazyObject(LazyObject):\n    \"\"\"\n    A lazy object initialised from any function.\n\n    Designed for compound objects of unknown type. For builtins or objects of\n    known type, use django.utils.functional.lazy.\n    \"\"\"\n    def __init__(self, func):\n        \"\"\"\n        Pass in a callable that returns the object to be wrapped.\n\n        If copies are made of the resulting SimpleLazyObject, which can happen\n        in various circumstances within Django, then you must ensure that the\n        callable can be safely run more than once and will return the same\n        value.\n        \"\"\"\n        self.__dict__['_setupfunc'] = func\n        _super(SimpleLazyObject, self).__init__()\n\n    def _setup(self):\n        self._wrapped = self._setupfunc()\n\n    if six.PY3:\n        __bytes__ = new_method_proxy(bytes)\n        __str__ = new_method_proxy(str)\n    else:\n        __str__ = new_method_proxy(str)\n        __unicode__ = new_method_proxy(unicode)\n\n    def __deepcopy__(self, memo):\n        if self._wrapped is empty:\n            # We have to use SimpleLazyObject, not self.__class__, because the\n            # latter is proxied.\n            result = SimpleLazyObject(self._setupfunc)\n            memo[id(self)] = result\n            return result\n        else:\n            return copy.deepcopy(self._wrapped, memo)\n\n    # Because we have messed with __class__ below, we confuse pickle as to what\n    # class we are pickling. It also appears to stop __reduce__ from being\n    # called. So, we define __getstate__ in a way that cooperates with the way\n    # that pickle interprets this class.  This fails when the wrapped class is a\n    # builtin, but it is better than nothing.\n    def __getstate__(self):\n        if self._wrapped is empty:\n            self._setup()\n        return self._wrapped.__dict__\n\n    # Python 3.3 will call __reduce__ when pickling; these methods are needed\n    # to serialize and deserialize correctly. They are not called in earlier\n    # versions of Python.\n    @classmethod\n    def __newobj__(cls, *args):\n        return cls.__new__(cls, *args)\n\n    def __reduce__(self):\n        return (self.__newobj__, (self.__class__,), self.__getstate__())\n\n    # Need to pretend to be the wrapped class, for the sake of objects that care\n    # about this (especially in equality tests)\n    __class__ = property(new_method_proxy(operator.attrgetter(\"__class__\")))\n    __eq__ = new_method_proxy(operator.eq)\n    __hash__ = new_method_proxy(hash)\n    __bool__ = new_method_proxy(bool)       # Python 3\n    __nonzero__ = __bool__                  # Python 2\n\n\nclass lazy_property(property):\n    \"\"\"\n    A property that works with subclasses by wrapping the decorated\n    functions of the base class.\n    \"\"\"\n    def __new__(cls, fget=None, fset=None, fdel=None, doc=None):\n        if fget is not None:\n            @wraps(fget)\n            def fget(instance, instance_type=None, name=fget.__name__):\n                return getattr(instance, name)()\n        if fset is not None:\n            @wraps(fset)\n            def fset(instance, value, name=fset.__name__):\n                return getattr(instance, name)(value)\n        if fdel is not None:\n            @wraps(fdel)\n            def fdel(instance, name=fdel.__name__):\n                return getattr(instance, name)()\n        return property(fget, fset, fdel, doc)\n\ndef partition(predicate, values):\n    \"\"\"\n    Splits the values into two sets, based on the return value of the function\n    (True/False). e.g.:\n\n        >>> partition(lambda x: x > 3, range(5))\n        [0, 1, 2, 3], [4]\n    \"\"\"\n    results = ([], [])\n    for item in values:\n        results[predicate(item)].append(item)\n    return results\n\nif sys.version_info >= (2,7,2):\n    from functools import total_ordering\nelse:\n    # For Python < 2.7.2. Python 2.6 does not have total_ordering, and\n    # total_ordering in 2.7 versions prior to 2.7.2 is buggy. See\n    # http://bugs.python.org/issue10042 for details. For these versions use\n    # code borrowed from Python 2.7.3.\n    def total_ordering(cls):\n        \"\"\"Class decorator that fills in missing ordering methods\"\"\"\n        convert = {\n            '__lt__': [('__gt__', lambda self, other: not (self < other or self == other)),\n                       ('__le__', lambda self, other: self < other or self == other),\n                       ('__ge__', lambda self, other: not self < other)],\n            '__le__': [('__ge__', lambda self, other: not self <= other or self == other),\n                       ('__lt__', lambda self, other: self <= other and not self == other),\n                       ('__gt__', lambda self, other: not self <= other)],\n            '__gt__': [('__lt__', lambda self, other: not (self > other or self == other)),\n                       ('__ge__', lambda self, other: self > other or self == other),\n                       ('__le__', lambda self, other: not self > other)],\n            '__ge__': [('__le__', lambda self, other: (not self >= other) or self == other),\n                       ('__gt__', lambda self, other: self >= other and not self == other),\n                       ('__lt__', lambda self, other: not self >= other)]\n        }\n        roots = set(dir(cls)) & set(convert)\n        if not roots:\n            raise ValueError('must define at least one ordering operation: < > <= >=')\n        root = max(roots)       # prefer __lt__ to __le__ to __gt__ to __ge__\n        for opname, opfunc in convert[root]:\n            if opname not in roots:\n                opfunc.__name__ = opname\n                opfunc.__doc__ = getattr(int, opname).__doc__\n                setattr(cls, opname, opfunc)\n        return cls\n"
  },
  {
    "path": "Django-1.5.1/django/utils/hashcompat.py",
    "content": "\"\"\"\nThe md5 and sha modules are deprecated since Python 2.5, replaced by the\nhashlib module containing both hash algorithms. Here, we provide a common\ninterface to the md5 and sha constructors, depending on system version.\n\"\"\"\n\nimport warnings\nwarnings.warn(\"django.utils.hashcompat is deprecated; use hashlib instead\",\n              DeprecationWarning)\n\nimport hashlib\nmd5_constructor = hashlib.md5\nmd5_hmac = md5_constructor\nsha_constructor = hashlib.sha1\nsha_hmac = sha_constructor\n"
  },
  {
    "path": "Django-1.5.1/django/utils/html.py",
    "content": "\"\"\"HTML utilities suitable for global use.\"\"\"\n\nfrom __future__ import unicode_literals\n\nimport re\nimport string\ntry:\n    from urllib.parse import quote, urlsplit, urlunsplit\nexcept ImportError:     # Python 2\n    from urllib import quote\n    from urlparse import urlsplit, urlunsplit\n\nfrom django.utils.safestring import SafeData, mark_safe\nfrom django.utils.encoding import force_bytes, force_text\nfrom django.utils.functional import allow_lazy\nfrom django.utils import six\nfrom django.utils.text import normalize_newlines\n\n# Configuration for urlize() function.\nTRAILING_PUNCTUATION = ['.', ',', ':', ';', '.)']\nWRAPPING_PUNCTUATION = [('(', ')'), ('<', '>'), ('[', ']'), ('&lt;', '&gt;')]\n\n# List of possible strings used for bullets in bulleted lists.\nDOTS = ['&middot;', '*', '\\u2022', '&#149;', '&bull;', '&#8226;']\n\nunencoded_ampersands_re = re.compile(r'&(?!(\\w+|#\\d+);)')\nunquoted_percents_re = re.compile(r'%(?![0-9A-Fa-f]{2})')\nword_split_re = re.compile(r'(\\s+)')\nsimple_url_re = re.compile(r'^https?://\\w', re.IGNORECASE)\nsimple_url_2_re = re.compile(r'^www\\.|^(?!http)\\w[^@]+\\.(com|edu|gov|int|mil|net|org)$', re.IGNORECASE)\nsimple_email_re = re.compile(r'^\\S+@\\S+\\.\\S+$')\nlink_target_attribute_re = re.compile(r'(<a [^>]*?)target=[^\\s>]+')\nhtml_gunk_re = re.compile(r'(?:<br clear=\"all\">|<i><\\/i>|<b><\\/b>|<em><\\/em>|<strong><\\/strong>|<\\/?smallcaps>|<\\/?uppercase>)', re.IGNORECASE)\nhard_coded_bullets_re = re.compile(r'((?:<p>(?:%s).*?[a-zA-Z].*?</p>\\s*)+)' % '|'.join([re.escape(x) for x in DOTS]), re.DOTALL)\ntrailing_empty_content_re = re.compile(r'(?:<p>(?:&nbsp;|\\s|<br \\/>)*?</p>\\s*)+\\Z')\nstrip_tags_re = re.compile(r'<[^>]*?>', re.IGNORECASE)\n\n\ndef escape(text):\n    \"\"\"\n    Returns the given text with ampersands, quotes and angle brackets encoded for use in HTML.\n    \"\"\"\n    return mark_safe(force_text(text).replace('&', '&amp;').replace('<', '&lt;').replace('>', '&gt;').replace('\"', '&quot;').replace(\"'\", '&#39;'))\nescape = allow_lazy(escape, six.text_type)\n\n_js_escapes = {\n    ord('\\\\'): '\\\\u005C',\n    ord('\\''): '\\\\u0027',\n    ord('\"'): '\\\\u0022',\n    ord('>'): '\\\\u003E',\n    ord('<'): '\\\\u003C',\n    ord('&'): '\\\\u0026',\n    ord('='): '\\\\u003D',\n    ord('-'): '\\\\u002D',\n    ord(';'): '\\\\u003B',\n    ord('\\u2028'): '\\\\u2028',\n    ord('\\u2029'): '\\\\u2029'\n}\n\n# Escape every ASCII character with a value less than 32.\n_js_escapes.update((ord('%c' % z), '\\\\u%04X' % z) for z in range(32))\n\ndef escapejs(value):\n    \"\"\"Hex encodes characters for use in JavaScript strings.\"\"\"\n    return mark_safe(force_text(value).translate(_js_escapes))\nescapejs = allow_lazy(escapejs, six.text_type)\n\ndef conditional_escape(text):\n    \"\"\"\n    Similar to escape(), except that it doesn't operate on pre-escaped strings.\n    \"\"\"\n    if isinstance(text, SafeData):\n        return text\n    else:\n        return escape(text)\n\ndef format_html(format_string, *args, **kwargs):\n    \"\"\"\n    Similar to str.format, but passes all arguments through conditional_escape,\n    and calls 'mark_safe' on the result. This function should be used instead\n    of str.format or % interpolation to build up small HTML fragments.\n    \"\"\"\n    args_safe = map(conditional_escape, args)\n    kwargs_safe = dict([(k, conditional_escape(v)) for (k, v) in\n                        six.iteritems(kwargs)])\n    return mark_safe(format_string.format(*args_safe, **kwargs_safe))\n\ndef format_html_join(sep, format_string, args_generator):\n    \"\"\"\n    A wrapper of format_html, for the common case of a group of arguments that\n    need to be formatted using the same format string, and then joined using\n    'sep'. 'sep' is also passed through conditional_escape.\n\n    'args_generator' should be an iterator that returns the sequence of 'args'\n    that will be passed to format_html.\n\n    Example:\n\n      format_html_join('\\n', \"<li>{0} {1}</li>\", ((u.first_name, u.last_name)\n                                                  for u in users))\n\n    \"\"\"\n    return mark_safe(conditional_escape(sep).join(\n            format_html(format_string, *tuple(args))\n            for args in args_generator))\n\n\ndef linebreaks(value, autoescape=False):\n    \"\"\"Converts newlines into <p> and <br />s.\"\"\"\n    value = normalize_newlines(value)\n    paras = re.split('\\n{2,}', value)\n    if autoescape:\n        paras = ['<p>%s</p>' % escape(p).replace('\\n', '<br />') for p in paras]\n    else:\n        paras = ['<p>%s</p>' % p.replace('\\n', '<br />') for p in paras]\n    return '\\n\\n'.join(paras)\nlinebreaks = allow_lazy(linebreaks, six.text_type)\n\ndef strip_tags(value):\n    \"\"\"Returns the given HTML with all tags stripped.\"\"\"\n    return strip_tags_re.sub('', force_text(value))\nstrip_tags = allow_lazy(strip_tags)\n\ndef remove_tags(html, tags):\n    \"\"\"Returns the given HTML with given tags removed.\"\"\"\n    tags = [re.escape(tag) for tag in tags.split()]\n    tags_re = '(%s)' % '|'.join(tags)\n    starttag_re = re.compile(r'<%s(/?>|(\\s+[^>]*>))' % tags_re, re.U)\n    endtag_re = re.compile('</%s>' % tags_re)\n    html = starttag_re.sub('', html)\n    html = endtag_re.sub('', html)\n    return html\nremove_tags = allow_lazy(remove_tags, six.text_type)\n\ndef strip_spaces_between_tags(value):\n    \"\"\"Returns the given HTML with spaces between tags removed.\"\"\"\n    return re.sub(r'>\\s+<', '><', force_text(value))\nstrip_spaces_between_tags = allow_lazy(strip_spaces_between_tags, six.text_type)\n\ndef strip_entities(value):\n    \"\"\"Returns the given HTML with all entities (&something;) stripped.\"\"\"\n    return re.sub(r'&(?:\\w+|#\\d+);', '', force_text(value))\nstrip_entities = allow_lazy(strip_entities, six.text_type)\n\ndef fix_ampersands(value):\n    \"\"\"Returns the given HTML with all unencoded ampersands encoded correctly.\"\"\"\n    return unencoded_ampersands_re.sub('&amp;', force_text(value))\nfix_ampersands = allow_lazy(fix_ampersands, six.text_type)\n\ndef smart_urlquote(url):\n    \"Quotes a URL if it isn't already quoted.\"\n    # Handle IDN before quoting.\n    scheme, netloc, path, query, fragment = urlsplit(url)\n    try:\n        netloc = netloc.encode('idna').decode('ascii') # IDN -> ACE\n    except UnicodeError: # invalid domain part\n        pass\n    else:\n        url = urlunsplit((scheme, netloc, path, query, fragment))\n\n    # An URL is considered unquoted if it contains no % characters or\n    # contains a % not followed by two hexadecimal digits. See #9655.\n    if '%' not in url or unquoted_percents_re.search(url):\n        # See http://bugs.python.org/issue2637\n        url = quote(force_bytes(url), safe=b'!*\\'();:@&=+$,/?#[]~')\n\n    return force_text(url)\n\ndef urlize(text, trim_url_limit=None, nofollow=False, autoescape=False):\n    \"\"\"\n    Converts any URLs in text into clickable links.\n\n    Works on http://, https://, www. links, and also on links ending in one of\n    the original seven gTLDs (.com, .edu, .gov, .int, .mil, .net, and .org).\n    Links can have trailing punctuation (periods, commas, close-parens) and\n    leading punctuation (opening parens) and it'll still do the right thing.\n\n    If trim_url_limit is not None, the URLs in link text longer than this limit\n    will truncated to trim_url_limit-3 characters and appended with an elipsis.\n\n    If nofollow is True, the URLs in link text will get a rel=\"nofollow\"\n    attribute.\n\n    If autoescape is True, the link text and URLs will get autoescaped.\n    \"\"\"\n    trim_url = lambda x, limit=trim_url_limit: limit is not None and (len(x) > limit and ('%s...' % x[:max(0, limit - 3)])) or x\n    safe_input = isinstance(text, SafeData)\n    words = word_split_re.split(force_text(text))\n    for i, word in enumerate(words):\n        match = None\n        if '.' in word or '@' in word or ':' in word:\n            # Deal with punctuation.\n            lead, middle, trail = '', word, ''\n            for punctuation in TRAILING_PUNCTUATION:\n                if middle.endswith(punctuation):\n                    middle = middle[:-len(punctuation)]\n                    trail = punctuation + trail\n            for opening, closing in WRAPPING_PUNCTUATION:\n                if middle.startswith(opening):\n                    middle = middle[len(opening):]\n                    lead = lead + opening\n                # Keep parentheses at the end only if they're balanced.\n                if (middle.endswith(closing)\n                    and middle.count(closing) == middle.count(opening) + 1):\n                    middle = middle[:-len(closing)]\n                    trail = closing + trail\n\n            # Make URL we want to point to.\n            url = None\n            nofollow_attr = ' rel=\"nofollow\"' if nofollow else ''\n            if simple_url_re.match(middle):\n                url = smart_urlquote(middle)\n            elif simple_url_2_re.match(middle):\n                url = smart_urlquote('http://%s' % middle)\n            elif not ':' in middle and simple_email_re.match(middle):\n                local, domain = middle.rsplit('@', 1)\n                try:\n                    domain = domain.encode('idna').decode('ascii')\n                except UnicodeError:\n                    continue\n                url = 'mailto:%s@%s' % (local, domain)\n                nofollow_attr = ''\n\n            # Make link.\n            if url:\n                trimmed = trim_url(middle)\n                if autoescape and not safe_input:\n                    lead, trail = escape(lead), escape(trail)\n                    url, trimmed = escape(url), escape(trimmed)\n                middle = '<a href=\"%s\"%s>%s</a>' % (url, nofollow_attr, trimmed)\n                words[i] = mark_safe('%s%s%s' % (lead, middle, trail))\n            else:\n                if safe_input:\n                    words[i] = mark_safe(word)\n                elif autoescape:\n                    words[i] = escape(word)\n        elif safe_input:\n            words[i] = mark_safe(word)\n        elif autoescape:\n            words[i] = escape(word)\n    return ''.join(words)\nurlize = allow_lazy(urlize, six.text_type)\n\ndef clean_html(text):\n    \"\"\"\n    Clean the given HTML.  Specifically, do the following:\n        * Convert <b> and <i> to <strong> and <em>.\n        * Encode all ampersands correctly.\n        * Remove all \"target\" attributes from <a> tags.\n        * Remove extraneous HTML, such as presentational tags that open and\n          immediately close and <br clear=\"all\">.\n        * Convert hard-coded bullets into HTML unordered lists.\n        * Remove stuff like \"<p>&nbsp;&nbsp;</p>\", but only if it's at the\n          bottom of the text.\n    \"\"\"\n    from django.utils.text import normalize_newlines\n    text = normalize_newlines(force_text(text))\n    text = re.sub(r'<(/?)\\s*b\\s*>', '<\\\\1strong>', text)\n    text = re.sub(r'<(/?)\\s*i\\s*>', '<\\\\1em>', text)\n    text = fix_ampersands(text)\n    # Remove all target=\"\" attributes from <a> tags.\n    text = link_target_attribute_re.sub('\\\\1', text)\n    # Trim stupid HTML such as <br clear=\"all\">.\n    text = html_gunk_re.sub('', text)\n    # Convert hard-coded bullets into HTML unordered lists.\n    def replace_p_tags(match):\n        s = match.group().replace('</p>', '</li>')\n        for d in DOTS:\n            s = s.replace('<p>%s' % d, '<li>')\n        return '<ul>\\n%s\\n</ul>' % s\n    text = hard_coded_bullets_re.sub(replace_p_tags, text)\n    # Remove stuff like \"<p>&nbsp;&nbsp;</p>\", but only if it's at the bottom\n    # of the text.\n    text = trailing_empty_content_re.sub('', text)\n    return text\nclean_html = allow_lazy(clean_html, six.text_type)\n"
  },
  {
    "path": "Django-1.5.1/django/utils/html_parser.py",
    "content": "from django.utils.six.moves import html_parser as _html_parser\nimport re\nimport sys\n\ncurrent_version = sys.version_info\n\nuse_workaround = (\n    (current_version < (2, 7, 3)) or\n    (current_version >= (3, 0) and current_version < (3, 2, 3))\n)\n\nHTMLParseError = _html_parser.HTMLParseError\n\nif not use_workaround:\n    HTMLParser = _html_parser.HTMLParser\nelse:\n    tagfind = re.compile('([a-zA-Z][-.a-zA-Z0-9:_]*)(?:\\s|/(?!>))*')\n\n    class HTMLParser(_html_parser.HTMLParser):\n        \"\"\"\n        Patched version of stdlib's HTMLParser with patch from:\n        http://bugs.python.org/issue670664\n        \"\"\"\n        def __init__(self):\n            _html_parser.HTMLParser.__init__(self)\n            self.cdata_tag = None\n\n        def set_cdata_mode(self, tag):\n            try:\n                self.interesting = _html_parser.interesting_cdata\n            except AttributeError:\n                self.interesting = re.compile(r'</\\s*%s\\s*>' % tag.lower(), re.I)\n            self.cdata_tag = tag.lower()\n\n        def clear_cdata_mode(self):\n            self.interesting = _html_parser.interesting_normal\n            self.cdata_tag = None\n\n        # Internal -- handle starttag, return end or -1 if not terminated\n        def parse_starttag(self, i):\n            self.__starttag_text = None\n            endpos = self.check_for_whole_start_tag(i)\n            if endpos < 0:\n                return endpos\n            rawdata = self.rawdata\n            self.__starttag_text = rawdata[i:endpos]\n\n            # Now parse the data between i+1 and j into a tag and attrs\n            attrs = []\n            match = tagfind.match(rawdata, i + 1)\n            assert match, 'unexpected call to parse_starttag()'\n            k = match.end()\n            self.lasttag = tag = match.group(1).lower()\n\n            while k < endpos:\n                m = _html_parser.attrfind.match(rawdata, k)\n                if not m:\n                    break\n                attrname, rest, attrvalue = m.group(1, 2, 3)\n                if not rest:\n                    attrvalue = None\n                elif attrvalue[:1] == '\\'' == attrvalue[-1:] or \\\n                     attrvalue[:1] == '\"' == attrvalue[-1:]:\n                    attrvalue = attrvalue[1:-1]\n                if attrvalue:\n                    attrvalue = self.unescape(attrvalue)\n                attrs.append((attrname.lower(), attrvalue))\n                k = m.end()\n\n            end = rawdata[k:endpos].strip()\n            if end not in (\">\", \"/>\"):\n                lineno, offset = self.getpos()\n                if \"\\n\" in self.__starttag_text:\n                    lineno = lineno + self.__starttag_text.count(\"\\n\")\n                    offset = len(self.__starttag_text) \\\n                             - self.__starttag_text.rfind(\"\\n\")\n                else:\n                    offset = offset + len(self.__starttag_text)\n                self.error(\"junk characters in start tag: %r\"\n                           % (rawdata[k:endpos][:20],))\n            if end.endswith('/>'):\n                # XHTML-style empty tag: <span attr=\"value\" />\n                self.handle_startendtag(tag, attrs)\n            else:\n                self.handle_starttag(tag, attrs)\n                if tag in self.CDATA_CONTENT_ELEMENTS:\n                    self.set_cdata_mode(tag) # <--------------------------- Changed\n            return endpos\n\n        # Internal -- parse endtag, return end or -1 if incomplete\n        def parse_endtag(self, i):\n            rawdata = self.rawdata\n            assert rawdata[i:i + 2] == \"</\", \"unexpected call to parse_endtag\"\n            match = _html_parser.endendtag.search(rawdata, i + 1) # >\n            if not match:\n                return -1\n            j = match.end()\n            match = _html_parser.endtagfind.match(rawdata, i) # </ + tag + >\n            if not match:\n                if self.cdata_tag is not None: # *** add ***\n                    self.handle_data(rawdata[i:j]) # *** add ***\n                    return j # *** add ***\n                self.error(\"bad end tag: %r\" % (rawdata[i:j],))\n            # --- changed start ---------------------------------------------------\n            tag = match.group(1).strip()\n            if self.cdata_tag is not None:\n                if tag.lower() != self.cdata_tag:\n                    self.handle_data(rawdata[i:j])\n                    return j\n            # --- changed end -----------------------------------------------------\n            self.handle_endtag(tag.lower())\n            self.clear_cdata_mode()\n            return j\n"
  },
  {
    "path": "Django-1.5.1/django/utils/http.py",
    "content": "from __future__ import unicode_literals\n\nimport calendar\nimport datetime\nimport re\nimport sys\ntry:\n    from urllib import parse as urllib_parse\nexcept ImportError:     # Python 2\n    import urllib as urllib_parse\n    import urlparse\n    urllib_parse.urlparse = urlparse.urlparse\n\n\nfrom email.utils import formatdate\n\nfrom django.utils.datastructures import MultiValueDict\nfrom django.utils.encoding import force_str, force_text\nfrom django.utils.functional import allow_lazy\nfrom django.utils import six\n\nETAG_MATCH = re.compile(r'(?:W/)?\"((?:\\\\.|[^\"])*)\"')\n\nMONTHS = 'jan feb mar apr may jun jul aug sep oct nov dec'.split()\n__D = r'(?P<day>\\d{2})'\n__D2 = r'(?P<day>[ \\d]\\d)'\n__M = r'(?P<mon>\\w{3})'\n__Y = r'(?P<year>\\d{4})'\n__Y2 = r'(?P<year>\\d{2})'\n__T = r'(?P<hour>\\d{2}):(?P<min>\\d{2}):(?P<sec>\\d{2})'\nRFC1123_DATE = re.compile(r'^\\w{3}, %s %s %s %s GMT$' % (__D, __M, __Y, __T))\nRFC850_DATE = re.compile(r'^\\w{6,9}, %s-%s-%s %s GMT$' % (__D, __M, __Y2, __T))\nASCTIME_DATE = re.compile(r'^\\w{3} %s %s %s %s$' % (__M, __D2, __T, __Y))\n\ndef urlquote(url, safe='/'):\n    \"\"\"\n    A version of Python's urllib.quote() function that can operate on unicode\n    strings. The url is first UTF-8 encoded before quoting. The returned string\n    can safely be used as part of an argument to a subsequent iri_to_uri() call\n    without double-quoting occurring.\n    \"\"\"\n    return force_text(urllib_parse.quote(force_str(url), force_str(safe)))\nurlquote = allow_lazy(urlquote, six.text_type)\n\ndef urlquote_plus(url, safe=''):\n    \"\"\"\n    A version of Python's urllib.quote_plus() function that can operate on\n    unicode strings. The url is first UTF-8 encoded before quoting. The\n    returned string can safely be used as part of an argument to a subsequent\n    iri_to_uri() call without double-quoting occurring.\n    \"\"\"\n    return force_text(urllib_parse.quote_plus(force_str(url), force_str(safe)))\nurlquote_plus = allow_lazy(urlquote_plus, six.text_type)\n\ndef urlunquote(quoted_url):\n    \"\"\"\n    A wrapper for Python's urllib.unquote() function that can operate on\n    the result of django.utils.http.urlquote().\n    \"\"\"\n    return force_text(urllib_parse.unquote(force_str(quoted_url)))\nurlunquote = allow_lazy(urlunquote, six.text_type)\n\ndef urlunquote_plus(quoted_url):\n    \"\"\"\n    A wrapper for Python's urllib.unquote_plus() function that can operate on\n    the result of django.utils.http.urlquote_plus().\n    \"\"\"\n    return force_text(urllib_parse.unquote_plus(force_str(quoted_url)))\nurlunquote_plus = allow_lazy(urlunquote_plus, six.text_type)\n\ndef urlencode(query, doseq=0):\n    \"\"\"\n    A version of Python's urllib.urlencode() function that can operate on\n    unicode strings. The parameters are first case to UTF-8 encoded strings and\n    then encoded as per normal.\n    \"\"\"\n    if isinstance(query, MultiValueDict):\n        query = query.lists()\n    elif hasattr(query, 'items'):\n        query = query.items()\n    return urllib_parse.urlencode(\n        [(force_str(k),\n         [force_str(i) for i in v] if isinstance(v, (list,tuple)) else force_str(v))\n            for k, v in query],\n        doseq)\n\ndef cookie_date(epoch_seconds=None):\n    \"\"\"\n    Formats the time to ensure compatibility with Netscape's cookie standard.\n\n    Accepts a floating point number expressed in seconds since the epoch, in\n    UTC - such as that outputted by time.time(). If set to None, defaults to\n    the current time.\n\n    Outputs a string in the format 'Wdy, DD-Mon-YYYY HH:MM:SS GMT'.\n    \"\"\"\n    rfcdate = formatdate(epoch_seconds)\n    return '%s-%s-%s GMT' % (rfcdate[:7], rfcdate[8:11], rfcdate[12:25])\n\ndef http_date(epoch_seconds=None):\n    \"\"\"\n    Formats the time to match the RFC1123 date format as specified by HTTP\n    RFC2616 section 3.3.1.\n\n    Accepts a floating point number expressed in seconds since the epoch, in\n    UTC - such as that outputted by time.time(). If set to None, defaults to\n    the current time.\n\n    Outputs a string in the format 'Wdy, DD Mon YYYY HH:MM:SS GMT'.\n    \"\"\"\n    rfcdate = formatdate(epoch_seconds)\n    return '%s GMT' % rfcdate[:25]\n\ndef parse_http_date(date):\n    \"\"\"\n    Parses a date format as specified by HTTP RFC2616 section 3.3.1.\n\n    The three formats allowed by the RFC are accepted, even if only the first\n    one is still in widespread use.\n\n    Returns an integer expressed in seconds since the epoch, in UTC.\n    \"\"\"\n    # emails.Util.parsedate does the job for RFC1123 dates; unfortunately\n    # RFC2616 makes it mandatory to support RFC850 dates too. So we roll\n    # our own RFC-compliant parsing.\n    for regex in RFC1123_DATE, RFC850_DATE, ASCTIME_DATE:\n        m = regex.match(date)\n        if m is not None:\n            break\n    else:\n        raise ValueError(\"%r is not in a valid HTTP date format\" % date)\n    try:\n        year = int(m.group('year'))\n        if year < 100:\n            if year < 70:\n                year += 2000\n            else:\n                year += 1900\n        month = MONTHS.index(m.group('mon').lower()) + 1\n        day = int(m.group('day'))\n        hour = int(m.group('hour'))\n        min = int(m.group('min'))\n        sec = int(m.group('sec'))\n        result = datetime.datetime(year, month, day, hour, min, sec)\n        return calendar.timegm(result.utctimetuple())\n    except Exception:\n        raise ValueError(\"%r is not a valid date\" % date)\n\ndef parse_http_date_safe(date):\n    \"\"\"\n    Same as parse_http_date, but returns None if the input is invalid.\n    \"\"\"\n    try:\n        return parse_http_date(date)\n    except Exception:\n        pass\n\n# Base 36 functions: useful for generating compact URLs\n\ndef base36_to_int(s):\n    \"\"\"\n    Converts a base 36 string to an ``int``. Raises ``ValueError` if the\n    input won't fit into an int.\n    \"\"\"\n    # To prevent overconsumption of server resources, reject any\n    # base36 string that is long than 13 base36 digits (13 digits\n    # is sufficient to base36-encode any 64-bit integer)\n    if len(s) > 13:\n        raise ValueError(\"Base36 input too large\")\n    value = int(s, 36)\n    # ... then do a final check that the value will fit into an int to avoid\n    # returning a long (#15067). The long type was removed in Python 3.\n    if not six.PY3 and value > sys.maxint:\n        raise ValueError(\"Base36 input too large\")\n    return value\n\ndef int_to_base36(i):\n    \"\"\"\n    Converts an integer to a base36 string\n    \"\"\"\n    digits = \"0123456789abcdefghijklmnopqrstuvwxyz\"\n    factor = 0\n    if i < 0:\n        raise ValueError(\"Negative base36 conversion input.\")\n    if not six.PY3:\n        if not isinstance(i, six.integer_types):\n            raise TypeError(\"Non-integer base36 conversion input.\")\n        if i > sys.maxint:\n            raise ValueError(\"Base36 conversion input too large.\")\n    # Find starting factor\n    while True:\n        factor += 1\n        if i < 36 ** factor:\n            factor -= 1\n            break\n    base36 = []\n    # Construct base36 representation\n    while factor >= 0:\n        j = 36 ** factor\n        base36.append(digits[i // j])\n        i = i % j\n        factor -= 1\n    return ''.join(base36)\n\ndef parse_etags(etag_str):\n    \"\"\"\n    Parses a string with one or several etags passed in If-None-Match and\n    If-Match headers by the rules in RFC 2616. Returns a list of etags\n    without surrounding double quotes (\") and unescaped from \\<CHAR>.\n    \"\"\"\n    etags = ETAG_MATCH.findall(etag_str)\n    if not etags:\n        # etag_str has wrong format, treat it as an opaque string then\n        return [etag_str]\n    etags = [e.encode('ascii').decode('unicode_escape') for e in etags]\n    return etags\n\ndef quote_etag(etag):\n    \"\"\"\n    Wraps a string in double quotes escaping contents as necesary.\n    \"\"\"\n    return '\"%s\"' % etag.replace('\\\\', '\\\\\\\\').replace('\"', '\\\\\"')\n\ndef same_origin(url1, url2):\n    \"\"\"\n    Checks if two URLs are 'same-origin'\n    \"\"\"\n    p1, p2 = urllib_parse.urlparse(url1), urllib_parse.urlparse(url2)\n    return (p1.scheme, p1.hostname, p1.port) == (p2.scheme, p2.hostname, p2.port)\n\ndef is_safe_url(url, host=None):\n    \"\"\"\n    Return ``True`` if the url is a safe redirection (i.e. it doesn't point to\n    a different host).\n\n    Always returns ``False`` on an empty url.\n    \"\"\"\n    if not url:\n        return False\n    netloc = urllib_parse.urlparse(url)[1]\n    return not netloc or netloc == host\n"
  },
  {
    "path": "Django-1.5.1/django/utils/importlib.py",
    "content": "# Taken from Python 2.7 with permission from/by the original author.\nimport sys\n\ndef _resolve_name(name, package, level):\n    \"\"\"Return the absolute name of the module to be imported.\"\"\"\n    if not hasattr(package, 'rindex'):\n        raise ValueError(\"'package' not set to a string\")\n    dot = len(package)\n    for x in range(level, 1, -1):\n        try:\n            dot = package.rindex('.', 0, dot)\n        except ValueError:\n            raise ValueError(\"attempted relative import beyond top-level \"\n                              \"package\")\n    return \"%s.%s\" % (package[:dot], name)\n\n\ndef import_module(name, package=None):\n    \"\"\"Import a module.\n\n    The 'package' argument is required when performing a relative import. It\n    specifies the package to use as the anchor point from which to resolve the\n    relative import to an absolute import.\n\n    \"\"\"\n    if name.startswith('.'):\n        if not package:\n            raise TypeError(\"relative imports require the 'package' argument\")\n        level = 0\n        for character in name:\n            if character != '.':\n                break\n            level += 1\n        name = _resolve_name(name[level:], package, level)\n    __import__(name)\n    return sys.modules[name]\n"
  },
  {
    "path": "Django-1.5.1/django/utils/ipv6.py",
    "content": "# This code was mostly based on ipaddr-py\n# Copyright 2007 Google Inc. http://code.google.com/p/ipaddr-py/\n# Licensed under the Apache License, Version 2.0 (the \"License\").\nfrom django.core.exceptions import ValidationError\nfrom django.utils.six.moves import xrange\n\ndef clean_ipv6_address(ip_str, unpack_ipv4=False,\n        error_message=\"This is not a valid IPv6 address\"):\n    \"\"\"\n    Cleans a IPv6 address string.\n\n    Validity is checked by calling is_valid_ipv6_address() - if an\n    invalid address is passed, ValidationError is raised.\n\n    Replaces the longest continious zero-sequence with \"::\" and\n    removes leading zeroes and makes sure all hextets are lowercase.\n\n    Args:\n        ip_str: A valid IPv6 address.\n        unpack_ipv4: if an IPv4-mapped address is found,\n        return the plain IPv4 address (default=False).\n        error_message: A error message for in the ValidationError.\n\n    Returns:\n        A compressed IPv6 address, or the same value\n\n    \"\"\"\n    best_doublecolon_start = -1\n    best_doublecolon_len = 0\n    doublecolon_start = -1\n    doublecolon_len = 0\n\n    if not is_valid_ipv6_address(ip_str):\n        raise ValidationError(error_message)\n\n    # This algorithm can only handle fully exploded\n    # IP strings\n    ip_str = _explode_shorthand_ip_string(ip_str)\n\n    ip_str = _sanitize_ipv4_mapping(ip_str)\n\n    # If needed, unpack the IPv4 and return straight away\n    # - no need in running the rest of the algorithm\n    if unpack_ipv4:\n        ipv4_unpacked = _unpack_ipv4(ip_str)\n\n        if ipv4_unpacked:\n            return ipv4_unpacked\n\n    hextets = ip_str.split(\":\")\n\n    for index in range(len(hextets)):\n        # Remove leading zeroes\n        hextets[index] = hextets[index].lstrip('0')\n        if not hextets[index]:\n            hextets[index] = '0'\n\n        # Determine best hextet to compress\n        if hextets[index] == '0':\n            doublecolon_len += 1\n            if doublecolon_start == -1:\n                # Start of a sequence of zeros.\n                doublecolon_start = index\n            if doublecolon_len > best_doublecolon_len:\n                # This is the longest sequence of zeros so far.\n                best_doublecolon_len = doublecolon_len\n                best_doublecolon_start = doublecolon_start\n        else:\n            doublecolon_len = 0\n            doublecolon_start = -1\n\n    # Compress the most suitable hextet\n    if best_doublecolon_len > 1:\n        best_doublecolon_end = (best_doublecolon_start +\n                                best_doublecolon_len)\n        # For zeros at the end of the address.\n        if best_doublecolon_end == len(hextets):\n            hextets += ['']\n        hextets[best_doublecolon_start:best_doublecolon_end] = ['']\n        # For zeros at the beginning of the address.\n        if best_doublecolon_start == 0:\n            hextets = [''] + hextets\n\n    result = \":\".join(hextets)\n\n    return result.lower()\n\n\ndef _sanitize_ipv4_mapping(ip_str):\n    \"\"\"\n    Sanitize IPv4 mapping in a expanded IPv6 address.\n\n    This converts ::ffff:0a0a:0a0a to ::ffff:10.10.10.10.\n    If there is nothing to sanitize, returns an unchanged\n    string.\n\n    Args:\n        ip_str: A string, the expanded IPv6 address.\n\n    Returns:\n        The sanitized output string, if applicable.\n    \"\"\"\n    if not ip_str.lower().startswith('0000:0000:0000:0000:0000:ffff:'):\n        # not an ipv4 mapping\n        return ip_str\n\n    hextets = ip_str.split(':')\n\n    if '.' in hextets[-1]:\n        # already sanitized\n        return ip_str\n\n    ipv4_address = \"%d.%d.%d.%d\" % (\n        int(hextets[6][0:2], 16),\n        int(hextets[6][2:4], 16),\n        int(hextets[7][0:2], 16),\n        int(hextets[7][2:4], 16),\n    )\n\n    result = ':'.join(hextets[0:6])\n    result += ':' + ipv4_address\n\n    return result\n\ndef _unpack_ipv4(ip_str):\n    \"\"\"\n    Unpack an IPv4 address that was mapped in a compressed IPv6 address.\n\n    This converts 0000:0000:0000:0000:0000:ffff:10.10.10.10 to 10.10.10.10.\n    If there is nothing to sanitize, returns None.\n\n    Args:\n        ip_str: A string, the expanded IPv6 address.\n\n    Returns:\n        The unpacked IPv4 address, or None if there was nothing to unpack.\n    \"\"\"\n    if not ip_str.lower().startswith('0000:0000:0000:0000:0000:ffff:'):\n        return None\n\n    hextets = ip_str.split(':')\n    return hextets[-1]\n\ndef is_valid_ipv6_address(ip_str):\n    \"\"\"\n    Ensure we have a valid IPv6 address.\n\n    Args:\n        ip_str: A string, the IPv6 address.\n\n    Returns:\n        A boolean, True if this is a valid IPv6 address.\n\n    \"\"\"\n    from django.core.validators import validate_ipv4_address\n\n    # We need to have at least one ':'.\n    if ':' not in ip_str:\n        return False\n\n    # We can only have one '::' shortener.\n    if ip_str.count('::') > 1:\n        return False\n\n    # '::' should be encompassed by start, digits or end.\n    if ':::' in ip_str:\n        return False\n\n    # A single colon can neither start nor end an address.\n    if ((ip_str.startswith(':') and not ip_str.startswith('::')) or\n            (ip_str.endswith(':') and not ip_str.endswith('::'))):\n        return False\n\n    # We can never have more than 7 ':' (1::2:3:4:5:6:7:8 is invalid)\n    if ip_str.count(':') > 7:\n        return False\n\n    # If we have no concatenation, we need to have 8 fields with 7 ':'.\n    if '::' not in ip_str and ip_str.count(':') != 7:\n        # We might have an IPv4 mapped address.\n        if ip_str.count('.') != 3:\n            return False\n\n    ip_str = _explode_shorthand_ip_string(ip_str)\n\n    # Now that we have that all squared away, let's check that each of the\n    # hextets are between 0x0 and 0xFFFF.\n    for hextet in ip_str.split(':'):\n        if hextet.count('.') == 3:\n            # If we have an IPv4 mapped address, the IPv4 portion has to\n            # be at the end of the IPv6 portion.\n            if not ip_str.split(':')[-1] == hextet:\n                return False\n            try:\n                validate_ipv4_address(hextet)\n            except ValidationError:\n                return False\n        else:\n            try:\n                # a value error here means that we got a bad hextet,\n                # something like 0xzzzz\n                if int(hextet, 16) < 0x0 or int(hextet, 16) > 0xFFFF:\n                    return False\n            except ValueError:\n                return False\n    return True\n\n\ndef _explode_shorthand_ip_string(ip_str):\n    \"\"\"\n    Expand a shortened IPv6 address.\n\n    Args:\n        ip_str: A string, the IPv6 address.\n\n    Returns:\n        A string, the expanded IPv6 address.\n\n    \"\"\"\n    if not _is_shorthand_ip(ip_str):\n        # We've already got a longhand ip_str.\n        return ip_str\n\n    new_ip = []\n    hextet = ip_str.split('::')\n\n    # If there is a ::, we need to expand it with zeroes\n    # to get to 8 hextets - unless there is a dot in the last hextet,\n    # meaning we're doing v4-mapping\n    if '.' in ip_str.split(':')[-1]:\n        fill_to = 7\n    else:\n        fill_to = 8\n\n    if len(hextet) > 1:\n        sep = len(hextet[0].split(':')) + len(hextet[1].split(':'))\n        new_ip = hextet[0].split(':')\n\n        for _ in xrange(fill_to - sep):\n            new_ip.append('0000')\n        new_ip += hextet[1].split(':')\n\n    else:\n        new_ip = ip_str.split(':')\n\n    # Now need to make sure every hextet is 4 lower case characters.\n    # If a hextet is < 4 characters, we've got missing leading 0's.\n    ret_ip = []\n    for hextet in new_ip:\n        ret_ip.append(('0' * (4 - len(hextet)) + hextet).lower())\n    return ':'.join(ret_ip)\n\n\ndef _is_shorthand_ip(ip_str):\n    \"\"\"Determine if the address is shortened.\n\n    Args:\n        ip_str: A string, the IPv6 address.\n\n    Returns:\n        A boolean, True if the address is shortened.\n\n    \"\"\"\n    if ip_str.count('::') == 1:\n        return True\n    if any(len(x) < 4 for x in ip_str.split(':')):\n        return True\n    return False\n"
  },
  {
    "path": "Django-1.5.1/django/utils/itercompat.py",
    "content": "\"\"\"\nProviding iterator functions that are not in all version of Python we support.\nWhere possible, we try to use the system-native version and only fall back to\nthese implementations if necessary.\n\"\"\"\n\nimport collections\nimport itertools\nimport sys\nimport warnings\n\n\ndef is_iterable(x):\n    \"A implementation independent way of checking for iterables\"\n    try:\n        iter(x)\n    except TypeError:\n        return False\n    else:\n        return True\n\ndef is_iterator(x):\n    \"\"\"An implementation independent way of checking for iterators\n\n    Python 2.6 has a different implementation of collections.Iterator which\n    accepts anything with a `next` method. 2.7+ requires and `__iter__` method\n    as well.\n    \"\"\"\n    if sys.version_info >= (2, 7):\n        return isinstance(x, collections.Iterator)\n    return isinstance(x, collections.Iterator) and hasattr(x, '__iter__')\n\ndef product(*args, **kwds):\n    warnings.warn(\"django.utils.itercompat.product is deprecated; use the native version instead\",\n                  PendingDeprecationWarning)\n    return itertools.product(*args, **kwds)\n\ndef all(iterable):\n    warnings.warn(\"django.utils.itercompat.all is deprecated; use the native version instead\",\n                  DeprecationWarning)\n    return builtins.all(iterable)\n\ndef any(iterable):\n    warnings.warn(\"django.utils.itercompat.any is deprecated; use the native version instead\",\n                  DeprecationWarning)\n    return builtins.any(iterable)\n"
  },
  {
    "path": "Django-1.5.1/django/utils/jslex.py",
    "content": "\"\"\"JsLex: a lexer for Javascript\"\"\"\n# Originally from https://bitbucket.org/ned/jslex\nimport re\n\nclass Tok(object):\n    \"\"\"\n    A specification for a token class.\n    \"\"\"\n    num = 0\n\n    def __init__(self, name, regex, next=None):\n        self.id = Tok.num\n        Tok.num += 1\n        self.name = name\n        self.regex = regex\n        self.next = next\n\ndef literals(choices, prefix=\"\", suffix=\"\"):\n    \"\"\"\n    Create a regex from a space-separated list of literal `choices`.\n\n    If provided, `prefix` and `suffix` will be attached to each choice\n    individually.\n\n    \"\"\"\n    return \"|\".join(prefix+re.escape(c)+suffix for c in choices.split())\n\n\nclass Lexer(object):\n    \"\"\"\n    A generic multi-state regex-based lexer.\n    \"\"\"\n\n    def __init__(self, states, first):\n        self.regexes = {}\n        self.toks = {}\n\n        for state, rules in states.items():\n            parts = []\n            for tok in rules:\n                groupid = \"t%d\" % tok.id\n                self.toks[groupid] = tok\n                parts.append(\"(?P<%s>%s)\" % (groupid, tok.regex))\n            self.regexes[state] = re.compile(\"|\".join(parts), re.MULTILINE|re.VERBOSE)\n\n        self.state = first\n\n    def lex(self, text):\n        \"\"\"\n        Lexically analyze `text`.\n\n        Yields pairs (`name`, `tokentext`).\n        \"\"\"\n        end = len(text)\n        state = self.state\n        regexes = self.regexes\n        toks = self.toks\n        start = 0\n\n        while start < end:\n            for match in regexes[state].finditer(text, start):\n                name = match.lastgroup\n                tok = toks[name]\n                toktext = match.group(name)\n                start += len(toktext)\n                yield (tok.name, toktext)\n\n                if tok.next:\n                    state = tok.next\n                    break\n\n        self.state = state\n\n\nclass JsLexer(Lexer):\n    \"\"\"\n    A Javascript lexer\n\n    >>> lexer = JsLexer()\n    >>> list(lexer.lex(\"a = 1\"))\n    [('id', 'a'), ('ws', ' '), ('punct', '='), ('ws', ' '), ('dnum', '1')]\n\n    This doesn't properly handle non-Ascii characters in the Javascript source.\n    \"\"\"\n\n    # Because these tokens are matched as alternatives in a regex, longer\n    # possibilities must appear in the list before shorter ones, for example,\n    # '>>' before '>'.\n    #\n    # Note that we don't have to detect malformed Javascript, only properly\n    # lex correct Javascript, so much of this is simplified.\n\n    # Details of Javascript lexical structure are taken from\n    # http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf\n\n    # A useful explanation of automatic semicolon insertion is at\n    # http://inimino.org/~inimino/blog/javascript_semicolons\n\n    both_before = [\n        Tok(\"comment\",      r\"/\\*(.|\\n)*?\\*/\"),\n        Tok(\"linecomment\",  r\"//.*?$\"),\n        Tok(\"ws\",           r\"\\s+\"),\n        Tok(\"keyword\",      literals(\"\"\"\n                                break case catch class const continue debugger\n                                default delete do else enum export extends\n                                finally for function if import in instanceof\n                                new return super switch this throw try typeof\n                                var void while with\n                                \"\"\", suffix=r\"\\b\"), next='reg'),\n        Tok(\"reserved\",     literals(\"null true false\", suffix=r\"\\b\"), next='div'),\n        Tok(\"id\",           r\"\"\"\n                            ([a-zA-Z_$   ]|\\\\u[0-9a-fA-Z]{4})   # first char\n                            ([a-zA-Z_$0-9]|\\\\u[0-9a-fA-F]{4})*  # rest chars\n                            \"\"\", next='div'),\n        Tok(\"hnum\",         r\"0[xX][0-9a-fA-F]+\", next='div'),\n        Tok(\"onum\",         r\"0[0-7]+\"),\n        Tok(\"dnum\",         r\"\"\"\n                            (   (0|[1-9][0-9]*)     # DecimalIntegerLiteral\n                                \\.                  # dot\n                                [0-9]*              # DecimalDigits-opt\n                                ([eE][-+]?[0-9]+)?  # ExponentPart-opt\n                            |\n                                \\.                  # dot\n                                [0-9]+              # DecimalDigits\n                                ([eE][-+]?[0-9]+)?  # ExponentPart-opt\n                            |\n                                (0|[1-9][0-9]*)     # DecimalIntegerLiteral\n                                ([eE][-+]?[0-9]+)?  # ExponentPart-opt\n                            )\n                            \"\"\", next='div'),\n        Tok(\"punct\",        literals(\"\"\"\n                                >>>= === !== >>> <<= >>= <= >= == != << >> &&\n                                || += -= *= %= &= |= ^=\n                                \"\"\"), next=\"reg\"),\n        Tok(\"punct\",        literals(\"++ -- ) ]\"), next='div'),\n        Tok(\"punct\",        literals(\"{ } ( [ . ; , < > + - * % & | ^ ! ~ ? : =\"), next='reg'),\n        Tok(\"string\",       r'\"([^\"\\\\]|(\\\\(.|\\n)))*?\"', next='div'),\n        Tok(\"string\",       r\"'([^'\\\\]|(\\\\(.|\\n)))*?'\", next='div'),\n        ]\n\n    both_after = [\n        Tok(\"other\",        r\".\"),\n    ]\n\n    states = {\n        'div': # slash will mean division\n            both_before + [\n            Tok(\"punct\", literals(\"/= /\"), next='reg'),\n            ] + both_after,\n\n        'reg':  # slash will mean regex\n            both_before + [\n            Tok(\"regex\",\n                r\"\"\"\n                    /                       # opening slash\n                    # First character is..\n                    (   [^*\\\\/[]            # anything but * \\ / or [\n                    |   \\\\.                 # or an escape sequence\n                    |   \\[                  # or a class, which has\n                            (   [^\\]\\\\]     #   anything but \\ or ]\n                            |   \\\\.         #   or an escape sequence\n                            )*              #   many times\n                        \\]\n                    )\n                    # Following characters are same, except for excluding a star\n                    (   [^\\\\/[]             # anything but \\ / or [\n                    |   \\\\.                 # or an escape sequence\n                    |   \\[                  # or a class, which has\n                            (   [^\\]\\\\]     #   anything but \\ or ]\n                            |   \\\\.         #   or an escape sequence\n                            )*              #   many times\n                        \\]\n                    )*                      # many times\n                    /                       # closing slash\n                    [a-zA-Z0-9]*            # trailing flags\n                \"\"\", next='div'),\n            ] + both_after,\n        }\n\n    def __init__(self):\n        super(JsLexer, self).__init__(self.states, 'reg')\n\n\ndef prepare_js_for_gettext(js):\n    \"\"\"\n    Convert the Javascript source `js` into something resembling C for\n    xgettext.\n\n    What actually happens is that all the regex literals are replaced with\n    \"REGEX\".\n    \"\"\"\n    def escape_quotes(m):\n        \"\"\"Used in a regex to properly escape double quotes.\"\"\"\n        s = m.group(0)\n        if s == '\"':\n            return r'\\\"'\n        else:\n            return s\n\n    lexer = JsLexer()\n    c = []\n    for name, tok in lexer.lex(js):\n        if name == 'regex':\n            # C doesn't grok regexes, and they aren't needed for gettext,\n            # so just output a string instead.\n            tok = '\"REGEX\"';\n        elif name == 'string':\n            # C doesn't have single-quoted strings, so make all strings\n            # double-quoted.\n            if tok.startswith(\"'\"):\n                guts = re.sub(r\"\\\\.|.\", escape_quotes, tok[1:-1])\n                tok = '\"' + guts + '\"'\n        elif name == 'id':\n            # C can't deal with Unicode escapes in identifiers.  We don't\n            # need them for gettext anyway, so replace them with something\n            # innocuous\n            tok = tok.replace(\"\\\\\", \"U\");\n        c.append(tok)\n    return ''.join(c)\n"
  },
  {
    "path": "Django-1.5.1/django/utils/log.py",
    "content": "import logging\nimport traceback\n\nfrom django.conf import settings\nfrom django.core import mail\nfrom django.views.debug import ExceptionReporter, get_exception_reporter_filter\n\n\n# Make sure a NullHandler is available\n# This was added in Python 2.7/3.2\ntry:\n    from logging import NullHandler\nexcept ImportError:\n    class NullHandler(logging.Handler):\n        def emit(self, record):\n            pass\n\n# Make sure that dictConfig is available\n# This was added in Python 2.7/3.2\ntry:\n    from logging.config import dictConfig\nexcept ImportError:\n    from django.utils.dictconfig import dictConfig\n\ngetLogger = logging.getLogger\n\n# Default logging for Django. This sends an email to the site admins on every\n# HTTP 500 error. Depending on DEBUG, all other log records are either sent to\n# the console (DEBUG=True) or discarded by mean of the NullHandler (DEBUG=False).\nDEFAULT_LOGGING = {\n    'version': 1,\n    'disable_existing_loggers': False,\n    'filters': {\n        'require_debug_false': {\n            '()': 'django.utils.log.RequireDebugFalse',\n        },\n        'require_debug_true': {\n            '()': 'django.utils.log.RequireDebugTrue',\n        },\n    },\n    'handlers': {\n        'console':{\n            'level': 'INFO',\n            'filters': ['require_debug_true'],\n            'class': 'logging.StreamHandler',\n        },\n        'null': {\n            'class': 'django.utils.log.NullHandler',\n        },\n        'mail_admins': {\n            'level': 'ERROR',\n            'filters': ['require_debug_false'],\n            'class': 'django.utils.log.AdminEmailHandler'\n        }\n    },\n    'loggers': {\n        'django': {\n            'handlers': ['console'],\n        },\n        'django.request': {\n            'handlers': ['mail_admins'],\n            'level': 'ERROR',\n            'propagate': False,\n        },\n        'py.warnings': {\n            'handlers': ['console'],\n        },\n    }\n}\n\n\nclass AdminEmailHandler(logging.Handler):\n    \"\"\"An exception log handler that emails log entries to site admins.\n\n    If the request is passed as the first argument to the log record,\n    request data will be provided in the email report.\n    \"\"\"\n\n    def __init__(self, include_html=False):\n        logging.Handler.__init__(self)\n        self.include_html = include_html\n\n    def emit(self, record):\n        try:\n            request = record.request\n            subject = '%s (%s IP): %s' % (\n                record.levelname,\n                (request.META.get('REMOTE_ADDR') in settings.INTERNAL_IPS\n                 and 'internal' or 'EXTERNAL'),\n                record.getMessage()\n            )\n            filter = get_exception_reporter_filter(request)\n            request_repr = filter.get_request_repr(request)\n        except Exception:\n            subject = '%s: %s' % (\n                record.levelname,\n                record.getMessage()\n            )\n            request = None\n            request_repr = \"Request repr() unavailable.\"\n        subject = self.format_subject(subject)\n\n        if record.exc_info:\n            exc_info = record.exc_info\n            stack_trace = '\\n'.join(traceback.format_exception(*record.exc_info))\n        else:\n            exc_info = (None, record.getMessage(), None)\n            stack_trace = 'No stack trace available'\n\n        message = \"%s\\n\\n%s\" % (stack_trace, request_repr)\n        reporter = ExceptionReporter(request, is_email=True, *exc_info)\n        html_message = self.include_html and reporter.get_traceback_html() or None\n        mail.mail_admins(subject, message, fail_silently=True, html_message=html_message)\n\n    def format_subject(self, subject):\n        \"\"\"\n        Escape CR and LF characters, and limit length.\n        RFC 2822's hard limit is 998 characters per line. So, minus \"Subject: \"\n        the actual subject must be no longer than 989 characters.\n        \"\"\"\n        formatted_subject = subject.replace('\\n', '\\\\n').replace('\\r', '\\\\r')\n        return formatted_subject[:989]\n\n\nclass CallbackFilter(logging.Filter):\n    \"\"\"\n    A logging filter that checks the return value of a given callable (which\n    takes the record-to-be-logged as its only parameter) to decide whether to\n    log a record.\n\n    \"\"\"\n    def __init__(self, callback):\n        self.callback = callback\n\n    def filter(self, record):\n        if self.callback(record):\n            return 1\n        return 0\n\n\nclass RequireDebugFalse(logging.Filter):\n    def filter(self, record):\n        return not settings.DEBUG\n\n\nclass RequireDebugTrue(logging.Filter):\n    def filter(self, record):\n       return settings.DEBUG\n"
  },
  {
    "path": "Django-1.5.1/django/utils/module_loading.py",
    "content": "import imp\nimport os\nimport sys\n\n\ndef module_has_submodule(package, module_name):\n    \"\"\"See if 'module' is in 'package'.\"\"\"\n    name = \".\".join([package.__name__, module_name])\n    try:\n        # None indicates a cached miss; see mark_miss() in Python/import.c.\n        return sys.modules[name] is not None\n    except KeyError:\n        pass\n    try:\n        package_path = package.__path__   # No __path__, then not a package.\n    except AttributeError:\n        # Since the remainder of this function assumes that we're dealing with\n        # a package (module with a __path__), so if it's not, then bail here.\n        return False\n    for finder in sys.meta_path:\n        if finder.find_module(name, package_path):\n            return True\n    for entry in package_path:\n        try:\n            # Try the cached finder.\n            finder = sys.path_importer_cache[entry]\n            if finder is None:\n                # Implicit import machinery should be used.\n                try:\n                    file_, _, _ = imp.find_module(module_name, [entry])\n                    if file_:\n                        file_.close()\n                    return True\n                except ImportError:\n                    continue\n            # Else see if the finder knows of a loader.\n            elif finder.find_module(name):\n                return True\n            else:\n                continue\n        except KeyError:\n            # No cached finder, so try and make one.\n            for hook in sys.path_hooks:\n                try:\n                    finder = hook(entry)\n                    # XXX Could cache in sys.path_importer_cache\n                    if finder.find_module(name):\n                        return True\n                    else:\n                        # Once a finder is found, stop the search.\n                        break\n                except ImportError:\n                    # Continue the search for a finder.\n                    continue\n            else:\n                # No finder found.\n                # Try the implicit import machinery if searching a directory.\n                if os.path.isdir(entry):\n                    try:\n                        file_, _, _ = imp.find_module(module_name, [entry])\n                        if file_:\n                            file_.close()\n                        return True\n                    except ImportError:\n                        pass\n                # XXX Could insert None or NullImporter\n    else:\n        # Exhausted the search, so the module cannot be found.\n        return False\n"
  },
  {
    "path": "Django-1.5.1/django/utils/numberformat.py",
    "content": "from django.conf import settings\nfrom django.utils.safestring import mark_safe\nfrom django.utils import six\n\n\ndef format(number, decimal_sep, decimal_pos=None, grouping=0, thousand_sep='',\n           force_grouping=False):\n    \"\"\"\n    Gets a number (as a number or string), and returns it as a string,\n    using formats defined as arguments:\n\n    * decimal_sep: Decimal separator symbol (for example \".\")\n    * decimal_pos: Number of decimal positions\n    * grouping: Number of digits in every group limited by thousand separator\n    * thousand_sep: Thousand separator symbol (for example \",\")\n    \"\"\"\n    use_grouping = settings.USE_L10N and settings.USE_THOUSAND_SEPARATOR\n    use_grouping = use_grouping or force_grouping\n    use_grouping = use_grouping and grouping > 0\n    # Make the common case fast\n    if isinstance(number, int) and not use_grouping and not decimal_pos:\n        return mark_safe(six.text_type(number))\n    # sign\n    sign = ''\n    str_number = six.text_type(number)\n    if str_number[0] == '-':\n        sign = '-'\n        str_number = str_number[1:]\n    # decimal part\n    if '.' in str_number:\n        int_part, dec_part = str_number.split('.')\n        if decimal_pos is not None:\n            dec_part = dec_part[:decimal_pos]\n    else:\n        int_part, dec_part = str_number, ''\n    if decimal_pos is not None:\n        dec_part = dec_part + ('0' * (decimal_pos - len(dec_part)))\n    if dec_part:\n        dec_part = decimal_sep + dec_part\n    # grouping\n    if use_grouping:\n        int_part_gd = ''\n        for cnt, digit in enumerate(int_part[::-1]):\n            if cnt and not cnt % grouping:\n                int_part_gd += thousand_sep\n            int_part_gd += digit\n        int_part = int_part_gd[::-1]\n    return sign + int_part + dec_part\n"
  },
  {
    "path": "Django-1.5.1/django/utils/regex_helper.py",
    "content": "\"\"\"\nFunctions for reversing a regular expression (used in reverse URL resolving).\nUsed internally by Django and not intended for external use.\n\nThis is not, and is not intended to be, a complete reg-exp decompiler. It\nshould be good enough for a large class of URLS, however.\n\"\"\"\nfrom __future__ import unicode_literals\n\nfrom django.utils import six\nfrom django.utils.six.moves import zip\n\n# Mapping of an escape character to a representative of that class. So, e.g.,\n# \"\\w\" is replaced by \"x\" in a reverse URL. A value of None means to ignore\n# this sequence. Any missing key is mapped to itself.\nESCAPE_MAPPINGS = {\n    \"A\": None,\n    \"b\": None,\n    \"B\": None,\n    \"d\": \"0\",\n    \"D\": \"x\",\n    \"s\": \" \",\n    \"S\": \"x\",\n    \"w\": \"x\",\n    \"W\": \"!\",\n    \"Z\": None,\n}\n\nclass Choice(list):\n    \"\"\"\n    Used to represent multiple possibilities at this point in a pattern string.\n    We use a distinguished type, rather than a list, so that the usage in the\n    code is clear.\n    \"\"\"\n\nclass Group(list):\n    \"\"\"\n    Used to represent a capturing group in the pattern string.\n    \"\"\"\n\nclass NonCapture(list):\n    \"\"\"\n    Used to represent a non-capturing group in the pattern string.\n    \"\"\"\n\ndef normalize(pattern):\n    \"\"\"\n    Given a reg-exp pattern, normalizes it to an iterable of forms that\n    suffice for reverse matching. This does the following:\n\n    (1) For any repeating sections, keeps the minimum number of occurrences\n        permitted (this means zero for optional groups).\n    (2) If an optional group includes parameters, include one occurrence of\n        that group (along with the zero occurrence case from step (1)).\n    (3) Select the first (essentially an arbitrary) element from any character\n        class. Select an arbitrary character for any unordered class (e.g. '.'\n        or '\\w') in the pattern.\n    (5) Ignore comments and any of the reg-exp flags that won't change\n        what we construct (\"iLmsu\"). \"(?x)\" is an error, however.\n    (6) Raise an error on all other non-capturing (?...) forms (e.g.\n        look-ahead and look-behind matches) and any disjunctive ('|')\n        constructs.\n\n    Django's URLs for forward resolving are either all positional arguments or\n    all keyword arguments. That is assumed here, as well. Although reverse\n    resolving can be done using positional args when keyword args are\n    specified, the two cannot be mixed in the same reverse() call.\n    \"\"\"\n    # Do a linear scan to work out the special features of this pattern. The\n    # idea is that we scan once here and collect all the information we need to\n    # make future decisions.\n    result = []\n    non_capturing_groups = []\n    consume_next = True\n    pattern_iter = next_char(iter(pattern))\n    num_args = 0\n\n    # A \"while\" loop is used here because later on we need to be able to peek\n    # at the next character and possibly go around without consuming another\n    # one at the top of the loop.\n    try:\n        ch, escaped = next(pattern_iter)\n    except StopIteration:\n        return [('', [])]\n\n    try:\n        while True:\n            if escaped:\n                result.append(ch)\n            elif ch == '.':\n                # Replace \"any character\" with an arbitrary representative.\n                result.append(\".\")\n            elif ch == '|':\n                # FIXME: One day we'll should do this, but not in 1.0.\n                raise NotImplementedError\n            elif ch == \"^\":\n                pass\n            elif ch == '$':\n                break\n            elif ch == ')':\n                # This can only be the end of a non-capturing group, since all\n                # other unescaped parentheses are handled by the grouping\n                # section later (and the full group is handled there).\n                #\n                # We regroup everything inside the capturing group so that it\n                # can be quantified, if necessary.\n                start = non_capturing_groups.pop()\n                inner = NonCapture(result[start:])\n                result = result[:start] + [inner]\n            elif ch == '[':\n                # Replace ranges with the first character in the range.\n                ch, escaped = next(pattern_iter)\n                result.append(ch)\n                ch, escaped = next(pattern_iter)\n                while escaped or ch != ']':\n                    ch, escaped = next(pattern_iter)\n            elif ch == '(':\n                # Some kind of group.\n                ch, escaped = next(pattern_iter)\n                if ch != '?' or escaped:\n                    # A positional group\n                    name = \"_%d\" % num_args\n                    num_args += 1\n                    result.append(Group(((\"%%(%s)s\" % name), name)))\n                    walk_to_end(ch, pattern_iter)\n                else:\n                    ch, escaped = next(pattern_iter)\n                    if ch in \"iLmsu#\":\n                        # All of these are ignorable. Walk to the end of the\n                        # group.\n                        walk_to_end(ch, pattern_iter)\n                    elif ch == ':':\n                        # Non-capturing group\n                        non_capturing_groups.append(len(result))\n                    elif ch != 'P':\n                        # Anything else, other than a named group, is something\n                        # we cannot reverse.\n                        raise ValueError(\"Non-reversible reg-exp portion: '(?%s'\" % ch)\n                    else:\n                        ch, escaped = next(pattern_iter)\n                        if ch not in ('<', '='):\n                            raise ValueError(\"Non-reversible reg-exp portion: '(?P%s'\" % ch)\n                        # We are in a named capturing group. Extra the name and\n                        # then skip to the end.\n                        if ch == '<':\n                            terminal_char = '>'\n                        # We are in a named backreference.\n                        else:\n                            terminal_char = ')'\n                        name = []\n                        ch, escaped = next(pattern_iter)\n                        while ch != terminal_char:\n                            name.append(ch)\n                            ch, escaped = next(pattern_iter)\n                        param = ''.join(name)\n                        # Named backreferences have already consumed the\n                        # parenthesis.\n                        if terminal_char != ')':\n                            result.append(Group(((\"%%(%s)s\" % param), param)))\n                            walk_to_end(ch, pattern_iter)\n                        else:\n                            result.append(Group(((\"%%(%s)s\" % param), None)))\n            elif ch in \"*?+{\":\n                # Quanitifers affect the previous item in the result list.\n                count, ch = get_quantifier(ch, pattern_iter)\n                if ch:\n                    # We had to look ahead, but it wasn't need to compute the\n                    # quanitifer, so use this character next time around the\n                    # main loop.\n                    consume_next = False\n\n                if count == 0:\n                    if contains(result[-1], Group):\n                        # If we are quantifying a capturing group (or\n                        # something containing such a group) and the minimum is\n                        # zero, we must also handle the case of one occurrence\n                        # being present. All the quantifiers (except {0,0},\n                        # which we conveniently ignore) that have a 0 minimum\n                        # also allow a single occurrence.\n                        result[-1] = Choice([None, result[-1]])\n                    else:\n                        result.pop()\n                elif count > 1:\n                    result.extend([result[-1]] * (count - 1))\n            else:\n                # Anything else is a literal.\n                result.append(ch)\n\n            if consume_next:\n                ch, escaped = next(pattern_iter)\n            else:\n                consume_next = True\n    except StopIteration:\n        pass\n    except NotImplementedError:\n        # A case of using the disjunctive form. No results for you!\n        return [('', [])]\n\n    return list(zip(*flatten_result(result)))\n\ndef next_char(input_iter):\n    \"\"\"\n    An iterator that yields the next character from \"pattern_iter\", respecting\n    escape sequences. An escaped character is replaced by a representative of\n    its class (e.g. \\w -> \"x\"). If the escaped character is one that is\n    skipped, it is not returned (the next character is returned instead).\n\n    Yields the next character, along with a boolean indicating whether it is a\n    raw (unescaped) character or not.\n    \"\"\"\n    for ch in input_iter:\n        if ch != '\\\\':\n            yield ch, False\n            continue\n        ch = next(input_iter)\n        representative = ESCAPE_MAPPINGS.get(ch, ch)\n        if representative is None:\n            continue\n        yield representative, True\n\ndef walk_to_end(ch, input_iter):\n    \"\"\"\n    The iterator is currently inside a capturing group. We want to walk to the\n    close of this group, skipping over any nested groups and handling escaped\n    parentheses correctly.\n    \"\"\"\n    if ch == '(':\n        nesting = 1\n    else:\n        nesting = 0\n    for ch, escaped in input_iter:\n        if escaped:\n            continue\n        elif ch == '(':\n            nesting += 1\n        elif ch == ')':\n            if not nesting:\n                return\n            nesting -= 1\n\ndef get_quantifier(ch, input_iter):\n    \"\"\"\n    Parse a quantifier from the input, where \"ch\" is the first character in the\n    quantifier.\n\n    Returns the minimum number of occurences permitted by the quantifier and\n    either None or the next character from the input_iter if the next character\n    is not part of the quantifier.\n    \"\"\"\n    if ch in '*?+':\n        try:\n            ch2, escaped = next(input_iter)\n        except StopIteration:\n            ch2 = None\n        if ch2 == '?':\n            ch2 = None\n        if ch == '+':\n            return 1, ch2\n        return 0, ch2\n\n    quant = []\n    while ch != '}':\n        ch, escaped = next(input_iter)\n        quant.append(ch)\n    quant = quant[:-1]\n    values = ''.join(quant).split(',')\n\n    # Consume the trailing '?', if necessary.\n    try:\n        ch, escaped = next(input_iter)\n    except StopIteration:\n        ch = None\n    if ch == '?':\n        ch = None\n    return int(values[0]), ch\n\ndef contains(source, inst):\n    \"\"\"\n    Returns True if the \"source\" contains an instance of \"inst\". False,\n    otherwise.\n    \"\"\"\n    if isinstance(source, inst):\n        return True\n    if isinstance(source, NonCapture):\n        for elt in source:\n            if contains(elt, inst):\n                return True\n    return False\n\ndef flatten_result(source):\n    \"\"\"\n    Turns the given source sequence into a list of reg-exp possibilities and\n    their arguments. Returns a list of strings and a list of argument lists.\n    Each of the two lists will be of the same length.\n    \"\"\"\n    if source is None:\n        return [''], [[]]\n    if isinstance(source, Group):\n        if source[1] is None:\n            params = []\n        else:\n            params = [source[1]]\n        return [source[0]], [params]\n    result = ['']\n    result_args = [[]]\n    pos = last = 0\n    for pos, elt in enumerate(source):\n        if isinstance(elt, six.string_types):\n            continue\n        piece = ''.join(source[last:pos])\n        if isinstance(elt, Group):\n            piece += elt[0]\n            param = elt[1]\n        else:\n            param = None\n        last = pos + 1\n        for i in range(len(result)):\n            result[i] += piece\n            if param:\n                result_args[i].append(param)\n        if isinstance(elt, (Choice, NonCapture)):\n            if isinstance(elt, NonCapture):\n                elt = [elt]\n            inner_result, inner_args = [], []\n            for item in elt:\n                res, args = flatten_result(item)\n                inner_result.extend(res)\n                inner_args.extend(args)\n            new_result = []\n            new_args = []\n            for item, args in zip(result, result_args):\n                for i_item, i_args in zip(inner_result, inner_args):\n                    new_result.append(item + i_item)\n                    new_args.append(args[:] + i_args)\n            result = new_result\n            result_args = new_args\n    if pos >= last:\n        piece = ''.join(source[last:])\n        for i in range(len(result)):\n            result[i] += piece\n    return result, result_args\n\n"
  },
  {
    "path": "Django-1.5.1/django/utils/safestring.py",
    "content": "\"\"\"\nFunctions for working with \"safe strings\": strings that can be displayed safely\nwithout further escaping in HTML. Marking something as a \"safe string\" means\nthat the producer of the string has already turned characters that should not\nbe interpreted by the HTML engine (e.g. '<') into the appropriate entities.\n\"\"\"\nfrom django.utils.functional import curry, Promise\nfrom django.utils import six\n\nclass EscapeData(object):\n    pass\n\nclass EscapeBytes(bytes, EscapeData):\n    \"\"\"\n    A byte string that should be HTML-escaped when output.\n    \"\"\"\n    pass\n\nclass EscapeText(six.text_type, EscapeData):\n    \"\"\"\n    A unicode string object that should be HTML-escaped when output.\n    \"\"\"\n    pass\n\nif six.PY3:\n    EscapeString = EscapeText\nelse:\n    EscapeString = EscapeBytes\n    # backwards compatibility for Python 2\n    EscapeUnicode = EscapeText\n\nclass SafeData(object):\n    pass\n\nclass SafeBytes(bytes, SafeData):\n    \"\"\"\n    A bytes subclass that has been specifically marked as \"safe\" (requires no\n    further escaping) for HTML output purposes.\n    \"\"\"\n    def __add__(self, rhs):\n        \"\"\"\n        Concatenating a safe byte string with another safe byte string or safe\n        unicode string is safe. Otherwise, the result is no longer safe.\n        \"\"\"\n        t = super(SafeBytes, self).__add__(rhs)\n        if isinstance(rhs, SafeText):\n            return SafeText(t)\n        elif isinstance(rhs, SafeBytes):\n            return SafeBytes(t)\n        return t\n\n    def _proxy_method(self, *args, **kwargs):\n        \"\"\"\n        Wrap a call to a normal unicode method up so that we return safe\n        results. The method that is being wrapped is passed in the 'method'\n        argument.\n        \"\"\"\n        method = kwargs.pop('method')\n        data = method(self, *args, **kwargs)\n        if isinstance(data, bytes):\n            return SafeBytes(data)\n        else:\n            return SafeText(data)\n\n    decode = curry(_proxy_method, method=bytes.decode)\n\nclass SafeText(six.text_type, SafeData):\n    \"\"\"\n    A unicode (Python 2) / str (Python 3) subclass that has been specifically\n    marked as \"safe\" for HTML output purposes.\n    \"\"\"\n    def __add__(self, rhs):\n        \"\"\"\n        Concatenating a safe unicode string with another safe byte string or\n        safe unicode string is safe. Otherwise, the result is no longer safe.\n        \"\"\"\n        t = super(SafeText, self).__add__(rhs)\n        if isinstance(rhs, SafeData):\n            return SafeText(t)\n        return t\n\n    def _proxy_method(self, *args, **kwargs):\n        \"\"\"\n        Wrap a call to a normal unicode method up so that we return safe\n        results. The method that is being wrapped is passed in the 'method'\n        argument.\n        \"\"\"\n        method = kwargs.pop('method')\n        data = method(self, *args, **kwargs)\n        if isinstance(data, bytes):\n            return SafeBytes(data)\n        else:\n            return SafeText(data)\n\n    encode = curry(_proxy_method, method=six.text_type.encode)\n\nif six.PY3:\n    SafeString = SafeText\nelse:\n    SafeString = SafeBytes\n    # backwards compatibility for Python 2\n    SafeUnicode = SafeText\n\ndef mark_safe(s):\n    \"\"\"\n    Explicitly mark a string as safe for (HTML) output purposes. The returned\n    object can be used everywhere a string or unicode object is appropriate.\n\n    Can be called multiple times on a single string.\n    \"\"\"\n    if isinstance(s, SafeData):\n        return s\n    if isinstance(s, bytes) or (isinstance(s, Promise) and s._delegate_bytes):\n        return SafeBytes(s)\n    if isinstance(s, (six.text_type, Promise)):\n        return SafeText(s)\n    return SafeString(str(s))\n\ndef mark_for_escaping(s):\n    \"\"\"\n    Explicitly mark a string as requiring HTML escaping upon output. Has no\n    effect on SafeData subclasses.\n\n    Can be called multiple times on a single string (the resulting escaping is\n    only applied once).\n    \"\"\"\n    if isinstance(s, (SafeData, EscapeData)):\n        return s\n    if isinstance(s, bytes) or (isinstance(s, Promise) and s._delegate_bytes):\n        return EscapeBytes(s)\n    if isinstance(s, (six.text_type, Promise)):\n        return EscapeText(s)\n    return EscapeBytes(bytes(s))\n\n"
  },
  {
    "path": "Django-1.5.1/django/utils/simplejson.py",
    "content": "# Django 1.5 only supports Python >= 2.6, where the standard library includes\n# the json module. Previous version of Django shipped a copy for Python < 2.6.\n\n# For backwards compatibility, we're keeping an importable json module\n# at this location, with the same lookup sequence.\n\n# Avoid shadowing the simplejson module\nfrom __future__ import absolute_import\n\nimport warnings\nwarnings.warn(\"django.utils.simplejson is deprecated; use json instead.\",\n              PendingDeprecationWarning)\n\ntry:\n    import simplejson\nexcept ImportError:\n    use_simplejson = False\nelse:\n    # The system-installed version has priority providing it is either not an\n    # earlier version or it contains the C speedups.\n    from json import __version__ as stdlib_json_version\n    use_simplejson = (hasattr(simplejson, '_speedups') or\n        simplejson.__version__.split('.') >= stdlib_json_version.split('.'))\n\n# Make sure we copy over the version. See #17071\nif use_simplejson:\n    from simplejson import *\n    from simplejson import __version__\nelse:\n    from json import *\n    from json import __version__\n"
  },
  {
    "path": "Django-1.5.1/django/utils/six.py",
    "content": "\"\"\"Utilities for writing code that runs on Python 2 and 3\"\"\"\n\n# Copyright (c) 2010-2013 Benjamin Peterson\n#\n# Permission is hereby granted, free of charge, to any person obtaining a copy of\n# this software and associated documentation files (the \"Software\"), to deal in\n# the Software without restriction, including without limitation the rights to\n# use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n# the Software, and to permit persons to whom the Software is furnished to do so,\n# subject to the following conditions:\n#\n# The above copyright notice and this permission notice shall be included in all\n# copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n# FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n# COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nimport operator\nimport sys\nimport types\n\n__author__ = \"Benjamin Peterson <benjamin@python.org>\"\n__version__ = \"1.2.0\"\n\n\n# True if we are running on Python 3.\nPY3 = sys.version_info[0] == 3\n\nif PY3:\n    string_types = str,\n    integer_types = int,\n    class_types = type,\n    text_type = str\n    binary_type = bytes\n\n    MAXSIZE = sys.maxsize\nelse:\n    string_types = basestring,\n    integer_types = (int, long)\n    class_types = (type, types.ClassType)\n    text_type = unicode\n    binary_type = str\n\n    if sys.platform.startswith(\"java\"):\n        # Jython always uses 32 bits.\n        MAXSIZE = int((1 << 31) - 1)\n    else:\n        # It's possible to have sizeof(long) != sizeof(Py_ssize_t).\n        class X(object):\n            def __len__(self):\n                return 1 << 31\n        try:\n            len(X())\n        except OverflowError:\n            # 32-bit\n            MAXSIZE = int((1 << 31) - 1)\n        else:\n            # 64-bit\n            MAXSIZE = int((1 << 63) - 1)\n            del X\n\n\ndef _add_doc(func, doc):\n    \"\"\"Add documentation to a function.\"\"\"\n    func.__doc__ = doc\n\n\ndef _import_module(name):\n    \"\"\"Import module, returning the module after the last dot.\"\"\"\n    __import__(name)\n    return sys.modules[name]\n\n\nclass _LazyDescr(object):\n\n    def __init__(self, name):\n        self.name = name\n\n    def __get__(self, obj, tp):\n        result = self._resolve()\n        setattr(obj, self.name, result)\n        # This is a bit ugly, but it avoids running this again.\n        delattr(tp, self.name)\n        return result\n\n\nclass MovedModule(_LazyDescr):\n\n    def __init__(self, name, old, new=None):\n        super(MovedModule, self).__init__(name)\n        if PY3:\n            if new is None:\n                new = name\n            self.mod = new\n        else:\n            self.mod = old\n\n    def _resolve(self):\n        return _import_module(self.mod)\n\n\nclass MovedAttribute(_LazyDescr):\n\n    def __init__(self, name, old_mod, new_mod, old_attr=None, new_attr=None):\n        super(MovedAttribute, self).__init__(name)\n        if PY3:\n            if new_mod is None:\n                new_mod = name\n            self.mod = new_mod\n            if new_attr is None:\n                if old_attr is None:\n                    new_attr = name\n                else:\n                    new_attr = old_attr\n            self.attr = new_attr\n        else:\n            self.mod = old_mod\n            if old_attr is None:\n                old_attr = name\n            self.attr = old_attr\n\n    def _resolve(self):\n        module = _import_module(self.mod)\n        return getattr(module, self.attr)\n\n\n\nclass _MovedItems(types.ModuleType):\n    \"\"\"Lazy loading of moved objects\"\"\"\n\n\n_moved_attributes = [\n    MovedAttribute(\"cStringIO\", \"cStringIO\", \"io\", \"StringIO\"),\n    MovedAttribute(\"filter\", \"itertools\", \"builtins\", \"ifilter\", \"filter\"),\n    MovedAttribute(\"input\", \"__builtin__\", \"builtins\", \"raw_input\", \"input\"),\n    MovedAttribute(\"map\", \"itertools\", \"builtins\", \"imap\", \"map\"),\n    MovedAttribute(\"reload_module\", \"__builtin__\", \"imp\", \"reload\"),\n    MovedAttribute(\"reduce\", \"__builtin__\", \"functools\"),\n    MovedAttribute(\"StringIO\", \"StringIO\", \"io\"),\n    MovedAttribute(\"xrange\", \"__builtin__\", \"builtins\", \"xrange\", \"range\"),\n    MovedAttribute(\"zip\", \"itertools\", \"builtins\", \"izip\", \"zip\"),\n\n    MovedModule(\"builtins\", \"__builtin__\"),\n    MovedModule(\"configparser\", \"ConfigParser\"),\n    MovedModule(\"copyreg\", \"copy_reg\"),\n    MovedModule(\"http_cookiejar\", \"cookielib\", \"http.cookiejar\"),\n    MovedModule(\"http_cookies\", \"Cookie\", \"http.cookies\"),\n    MovedModule(\"html_entities\", \"htmlentitydefs\", \"html.entities\"),\n    MovedModule(\"html_parser\", \"HTMLParser\", \"html.parser\"),\n    MovedModule(\"http_client\", \"httplib\", \"http.client\"),\n    MovedModule(\"email_mime_multipart\", \"email.MIMEMultipart\", \"email.mime.multipart\"),\n    MovedModule(\"email_mime_text\", \"email.MIMEText\", \"email.mime.text\"),\n    MovedModule(\"email_mime_base\", \"email.MIMEBase\", \"email.mime.base\"),\n    MovedModule(\"BaseHTTPServer\", \"BaseHTTPServer\", \"http.server\"),\n    MovedModule(\"CGIHTTPServer\", \"CGIHTTPServer\", \"http.server\"),\n    MovedModule(\"SimpleHTTPServer\", \"SimpleHTTPServer\", \"http.server\"),\n    MovedModule(\"cPickle\", \"cPickle\", \"pickle\"),\n    MovedModule(\"queue\", \"Queue\"),\n    MovedModule(\"reprlib\", \"repr\"),\n    MovedModule(\"socketserver\", \"SocketServer\"),\n    MovedModule(\"tkinter\", \"Tkinter\"),\n    MovedModule(\"tkinter_dialog\", \"Dialog\", \"tkinter.dialog\"),\n    MovedModule(\"tkinter_filedialog\", \"FileDialog\", \"tkinter.filedialog\"),\n    MovedModule(\"tkinter_scrolledtext\", \"ScrolledText\", \"tkinter.scrolledtext\"),\n    MovedModule(\"tkinter_simpledialog\", \"SimpleDialog\", \"tkinter.simpledialog\"),\n    MovedModule(\"tkinter_tix\", \"Tix\", \"tkinter.tix\"),\n    MovedModule(\"tkinter_constants\", \"Tkconstants\", \"tkinter.constants\"),\n    MovedModule(\"tkinter_dnd\", \"Tkdnd\", \"tkinter.dnd\"),\n    MovedModule(\"tkinter_colorchooser\", \"tkColorChooser\",\n                \"tkinter.colorchooser\"),\n    MovedModule(\"tkinter_commondialog\", \"tkCommonDialog\",\n                \"tkinter.commondialog\"),\n    MovedModule(\"tkinter_tkfiledialog\", \"tkFileDialog\", \"tkinter.filedialog\"),\n    MovedModule(\"tkinter_font\", \"tkFont\", \"tkinter.font\"),\n    MovedModule(\"tkinter_messagebox\", \"tkMessageBox\", \"tkinter.messagebox\"),\n    MovedModule(\"tkinter_tksimpledialog\", \"tkSimpleDialog\",\n                \"tkinter.simpledialog\"),\n    MovedModule(\"urllib_robotparser\", \"robotparser\", \"urllib.robotparser\"),\n    MovedModule(\"winreg\", \"_winreg\"),\n]\nfor attr in _moved_attributes:\n    setattr(_MovedItems, attr.name, attr)\ndel attr\n\nmoves = sys.modules[__name__ + \".moves\"] = _MovedItems(\"moves\")\n\n\ndef add_move(move):\n    \"\"\"Add an item to six.moves.\"\"\"\n    setattr(_MovedItems, move.name, move)\n\n\ndef remove_move(name):\n    \"\"\"Remove item from six.moves.\"\"\"\n    try:\n        delattr(_MovedItems, name)\n    except AttributeError:\n        try:\n            del moves.__dict__[name]\n        except KeyError:\n            raise AttributeError(\"no such move, %r\" % (name,))\n\n\nif PY3:\n    _meth_func = \"__func__\"\n    _meth_self = \"__self__\"\n\n    _func_closure = \"__closure__\"\n    _func_code = \"__code__\"\n    _func_defaults = \"__defaults__\"\n    _func_globals = \"__globals__\"\n\n    _iterkeys = \"keys\"\n    _itervalues = \"values\"\n    _iteritems = \"items\"\n    _iterlists = \"lists\"\nelse:\n    _meth_func = \"im_func\"\n    _meth_self = \"im_self\"\n\n    _func_closure = \"func_closure\"\n    _func_code = \"func_code\"\n    _func_defaults = \"func_defaults\"\n    _func_globals = \"func_globals\"\n\n    _iterkeys = \"iterkeys\"\n    _itervalues = \"itervalues\"\n    _iteritems = \"iteritems\"\n    _iterlists = \"iterlists\"\n\n\ntry:\n    advance_iterator = next\nexcept NameError:\n    def advance_iterator(it):\n        return it.next()\nnext = advance_iterator\n\n\ntry:\n    callable = callable\nexcept NameError:\n    def callable(obj):\n        return any(\"__call__\" in klass.__dict__ for klass in type(obj).__mro__)\n\n\nif PY3:\n    def get_unbound_function(unbound):\n        return unbound\n\n    Iterator = object\nelse:\n    def get_unbound_function(unbound):\n        return unbound.im_func\n\n    class Iterator(object):\n\n        def next(self):\n            return type(self).__next__(self)\n\n    callable = callable\n_add_doc(get_unbound_function,\n         \"\"\"Get the function out of a possibly unbound function\"\"\")\n\n\nget_method_function = operator.attrgetter(_meth_func)\nget_method_self = operator.attrgetter(_meth_self)\nget_function_closure = operator.attrgetter(_func_closure)\nget_function_code = operator.attrgetter(_func_code)\nget_function_defaults = operator.attrgetter(_func_defaults)\nget_function_globals = operator.attrgetter(_func_globals)\n\n\ndef iterkeys(d, **kw):\n    \"\"\"Return an iterator over the keys of a dictionary.\"\"\"\n    return iter(getattr(d, _iterkeys)(**kw))\n\ndef itervalues(d, **kw):\n    \"\"\"Return an iterator over the values of a dictionary.\"\"\"\n    return iter(getattr(d, _itervalues)(**kw))\n\ndef iteritems(d, **kw):\n    \"\"\"Return an iterator over the (key, value) pairs of a dictionary.\"\"\"\n    return iter(getattr(d, _iteritems)(**kw))\n\ndef iterlists(d, **kw):\n    \"\"\"Return an iterator over the (key, [values]) pairs of a dictionary.\"\"\"\n    return iter(getattr(d, _iterlists)(**kw))\n\n\nif PY3:\n    def b(s):\n        return s.encode(\"latin-1\")\n    def u(s):\n        return s\n    if sys.version_info[1] <= 1:\n        def int2byte(i):\n            return bytes((i,))\n    else:\n        # This is about 2x faster than the implementation above on 3.2+\n        int2byte = operator.methodcaller(\"to_bytes\", 1, \"big\")\n    import io\n    StringIO = io.StringIO\n    BytesIO = io.BytesIO\nelse:\n    def b(s):\n        return s\n    def u(s):\n        return unicode(s, \"unicode_escape\")\n    int2byte = chr\n    import StringIO\n    StringIO = BytesIO = StringIO.StringIO\n_add_doc(b, \"\"\"Byte literal\"\"\")\n_add_doc(u, \"\"\"Text literal\"\"\")\n\n\nif PY3:\n    import builtins\n    exec_ = getattr(builtins, \"exec\")\n\n\n    def reraise(tp, value, tb=None):\n        if value.__traceback__ is not tb:\n            raise value.with_traceback(tb)\n        raise value\n\n\n    print_ = getattr(builtins, \"print\")\n    del builtins\n\nelse:\n    def exec_(_code_, _globs_=None, _locs_=None):\n        \"\"\"Execute code in a namespace.\"\"\"\n        if _globs_ is None:\n            frame = sys._getframe(1)\n            _globs_ = frame.f_globals\n            if _locs_ is None:\n                _locs_ = frame.f_locals\n            del frame\n        elif _locs_ is None:\n            _locs_ = _globs_\n        exec(\"\"\"exec _code_ in _globs_, _locs_\"\"\")\n\n\n    exec_(\"\"\"def reraise(tp, value, tb=None):\n    raise tp, value, tb\n\"\"\")\n\n\n    def print_(*args, **kwargs):\n        \"\"\"The new-style print function.\"\"\"\n        fp = kwargs.pop(\"file\", sys.stdout)\n        if fp is None:\n            return\n        def write(data):\n            if not isinstance(data, basestring):\n                data = str(data)\n            fp.write(data)\n        want_unicode = False\n        sep = kwargs.pop(\"sep\", None)\n        if sep is not None:\n            if isinstance(sep, unicode):\n                want_unicode = True\n            elif not isinstance(sep, str):\n                raise TypeError(\"sep must be None or a string\")\n        end = kwargs.pop(\"end\", None)\n        if end is not None:\n            if isinstance(end, unicode):\n                want_unicode = True\n            elif not isinstance(end, str):\n                raise TypeError(\"end must be None or a string\")\n        if kwargs:\n            raise TypeError(\"invalid keyword arguments to print()\")\n        if not want_unicode:\n            for arg in args:\n                if isinstance(arg, unicode):\n                    want_unicode = True\n                    break\n        if want_unicode:\n            newline = unicode(\"\\n\")\n            space = unicode(\" \")\n        else:\n            newline = \"\\n\"\n            space = \" \"\n        if sep is None:\n            sep = space\n        if end is None:\n            end = newline\n        for i, arg in enumerate(args):\n            if i:\n                write(sep)\n            write(arg)\n        write(end)\n\n_add_doc(reraise, \"\"\"Reraise an exception.\"\"\")\n\n\ndef with_metaclass(meta, base=object):\n    \"\"\"Create a base class with a metaclass.\"\"\"\n    return meta(\"NewBase\", (base,), {})\n\n\n### Additional customizations for Django ###\n\nif PY3:\n    _assertRaisesRegex = \"assertRaisesRegex\"\nelse:\n    _assertRaisesRegex = \"assertRaisesRegexp\"\n\n\ndef assertRaisesRegex(self, *args, **kwargs):\n    return getattr(self, _assertRaisesRegex)(*args, **kwargs)\n\n\nadd_move(MovedModule(\"_dummy_thread\", \"dummy_thread\"))\nadd_move(MovedModule(\"_thread\", \"thread\"))\n"
  },
  {
    "path": "Django-1.5.1/django/utils/synch.py",
    "content": "\"\"\"\nSynchronization primitives:\n\n    - reader-writer lock (preference to writers)\n\n(Contributed to Django by eugene@lazutkin.com)\n\"\"\"\n\nimport contextlib\ntry:\n    import threading\nexcept ImportError:\n    import dummy_threading as threading\n\n\nclass RWLock(object):\n    \"\"\"\n    Classic implementation of reader-writer lock with preference to writers.\n\n    Readers can access a resource simultaneously.\n    Writers get an exclusive access.\n\n    API is self-descriptive:\n        reader_enters()\n        reader_leaves()\n        writer_enters()\n        writer_leaves()\n    \"\"\"\n    def __init__(self):\n        self.mutex     = threading.RLock()\n        self.can_read  = threading.Semaphore(0)\n        self.can_write = threading.Semaphore(0)\n        self.active_readers  = 0\n        self.active_writers  = 0\n        self.waiting_readers = 0\n        self.waiting_writers = 0\n\n    def reader_enters(self):\n        with self.mutex:\n            if self.active_writers == 0 and self.waiting_writers == 0:\n                self.active_readers += 1\n                self.can_read.release()\n            else:\n                self.waiting_readers += 1\n        self.can_read.acquire()\n\n    def reader_leaves(self):\n        with self.mutex:\n            self.active_readers -= 1\n            if self.active_readers == 0 and self.waiting_writers != 0:\n                self.active_writers  += 1\n                self.waiting_writers -= 1\n                self.can_write.release()\n\n    @contextlib.contextmanager\n    def reader(self):\n        self.reader_enters()\n        try:\n            yield\n        finally:\n            self.reader_leaves()\n\n    def writer_enters(self):\n        with self.mutex:\n            if self.active_writers == 0 and self.waiting_writers == 0 and self.active_readers == 0:\n                self.active_writers += 1\n                self.can_write.release()\n            else:\n                self.waiting_writers += 1\n        self.can_write.acquire()\n\n    def writer_leaves(self):\n        with self.mutex:\n            self.active_writers -= 1\n            if self.waiting_writers != 0:\n                self.active_writers  += 1\n                self.waiting_writers -= 1\n                self.can_write.release()\n            elif self.waiting_readers != 0:\n                t = self.waiting_readers\n                self.waiting_readers = 0\n                self.active_readers += t\n                while t > 0:\n                    self.can_read.release()\n                    t -= 1\n\n    @contextlib.contextmanager\n    def writer(self):\n        self.writer_enters()\n        try:\n            yield\n        finally:\n            self.writer_leaves()\n"
  },
  {
    "path": "Django-1.5.1/django/utils/termcolors.py",
    "content": "\"\"\"\ntermcolors.py\n\"\"\"\n\nfrom django.utils import six\n\ncolor_names = ('black', 'red', 'green', 'yellow', 'blue', 'magenta', 'cyan', 'white')\nforeground = dict([(color_names[x], '3%s' % x) for x in range(8)])\nbackground = dict([(color_names[x], '4%s' % x) for x in range(8)])\n\nRESET = '0'\nopt_dict = {'bold': '1', 'underscore': '4', 'blink': '5', 'reverse': '7', 'conceal': '8'}\n\ndef colorize(text='', opts=(), **kwargs):\n    \"\"\"\n    Returns your text, enclosed in ANSI graphics codes.\n\n    Depends on the keyword arguments 'fg' and 'bg', and the contents of\n    the opts tuple/list.\n\n    Returns the RESET code if no parameters are given.\n\n    Valid colors:\n        'black', 'red', 'green', 'yellow', 'blue', 'magenta', 'cyan', 'white'\n\n    Valid options:\n        'bold'\n        'underscore'\n        'blink'\n        'reverse'\n        'conceal'\n        'noreset' - string will not be auto-terminated with the RESET code\n\n    Examples:\n        colorize('hello', fg='red', bg='blue', opts=('blink',))\n        colorize()\n        colorize('goodbye', opts=('underscore',))\n        print(colorize('first line', fg='red', opts=('noreset',)))\n        print('this should be red too')\n        print(colorize('and so should this'))\n        print('this should not be red')\n    \"\"\"\n    code_list = []\n    if text == '' and len(opts) == 1 and opts[0] == 'reset':\n        return '\\x1b[%sm' % RESET\n    for k, v in six.iteritems(kwargs):\n        if k == 'fg':\n            code_list.append(foreground[v])\n        elif k == 'bg':\n            code_list.append(background[v])\n    for o in opts:\n        if o in opt_dict:\n            code_list.append(opt_dict[o])\n    if 'noreset' not in opts:\n        text = text + '\\x1b[%sm' % RESET\n    return ('\\x1b[%sm' % ';'.join(code_list)) + text\n\ndef make_style(opts=(), **kwargs):\n    \"\"\"\n    Returns a function with default parameters for colorize()\n\n    Example:\n        bold_red = make_style(opts=('bold',), fg='red')\n        print(bold_red('hello'))\n        KEYWORD = make_style(fg='yellow')\n        COMMENT = make_style(fg='blue', opts=('bold',))\n    \"\"\"\n    return lambda text: colorize(text, opts, **kwargs)\n\nNOCOLOR_PALETTE = 'nocolor'\nDARK_PALETTE = 'dark'\nLIGHT_PALETTE = 'light'\n\nPALETTES = {\n    NOCOLOR_PALETTE: {\n        'ERROR':        {},\n        'NOTICE':       {},\n        'SQL_FIELD':    {},\n        'SQL_COLTYPE':  {},\n        'SQL_KEYWORD':  {},\n        'SQL_TABLE':    {},\n        'HTTP_INFO':         {},\n        'HTTP_SUCCESS':      {},\n        'HTTP_REDIRECT':     {},\n        'HTTP_NOT_MODIFIED': {},\n        'HTTP_BAD_REQUEST':  {},\n        'HTTP_NOT_FOUND':    {},\n        'HTTP_SERVER_ERROR': {},\n    },\n    DARK_PALETTE: {\n        'ERROR':        { 'fg': 'red', 'opts': ('bold',) },\n        'NOTICE':       { 'fg': 'red' },\n        'SQL_FIELD':    { 'fg': 'green', 'opts': ('bold',) },\n        'SQL_COLTYPE':  { 'fg': 'green' },\n        'SQL_KEYWORD':  { 'fg': 'yellow' },\n        'SQL_TABLE':    { 'opts': ('bold',) },\n        'HTTP_INFO':         { 'opts': ('bold',) },\n        'HTTP_SUCCESS':      { },\n        'HTTP_REDIRECT':     { 'fg': 'green' },\n        'HTTP_NOT_MODIFIED': { 'fg': 'cyan' },\n        'HTTP_BAD_REQUEST':  { 'fg': 'red', 'opts': ('bold',) },\n        'HTTP_NOT_FOUND':    { 'fg': 'yellow' },\n        'HTTP_SERVER_ERROR': { 'fg': 'magenta', 'opts': ('bold',) },\n    },\n    LIGHT_PALETTE: {\n        'ERROR':        { 'fg': 'red', 'opts': ('bold',) },\n        'NOTICE':       { 'fg': 'red' },\n        'SQL_FIELD':    { 'fg': 'green', 'opts': ('bold',) },\n        'SQL_COLTYPE':  { 'fg': 'green' },\n        'SQL_KEYWORD':  { 'fg': 'blue' },\n        'SQL_TABLE':    { 'opts': ('bold',) },\n        'HTTP_INFO':         { 'opts': ('bold',) },\n        'HTTP_SUCCESS':      { },\n        'HTTP_REDIRECT':     { 'fg': 'green', 'opts': ('bold',) },\n        'HTTP_NOT_MODIFIED': { 'fg': 'green' },\n        'HTTP_BAD_REQUEST':  { 'fg': 'red', 'opts': ('bold',) },\n        'HTTP_NOT_FOUND':    { 'fg': 'red' },\n        'HTTP_SERVER_ERROR': { 'fg': 'magenta', 'opts': ('bold',) },\n    }\n}\nDEFAULT_PALETTE = DARK_PALETTE\n\ndef parse_color_setting(config_string):\n    \"\"\"Parse a DJANGO_COLORS environment variable to produce the system palette\n\n    The general form of a pallete definition is:\n\n        \"palette;role=fg;role=fg/bg;role=fg,option,option;role=fg/bg,option,option\"\n\n    where:\n        palette is a named palette; one of 'light', 'dark', or 'nocolor'.\n        role is a named style used by Django\n        fg is a background color.\n        bg is a background color.\n        option is a display options.\n\n    Specifying a named palette is the same as manually specifying the individual\n    definitions for each role. Any individual definitions following the pallete\n    definition will augment the base palette definition.\n\n    Valid roles:\n        'error', 'notice', 'sql_field', 'sql_coltype', 'sql_keyword', 'sql_table',\n        'http_info', 'http_success', 'http_redirect', 'http_bad_request',\n        'http_not_found', 'http_server_error'\n\n    Valid colors:\n        'black', 'red', 'green', 'yellow', 'blue', 'magenta', 'cyan', 'white'\n\n    Valid options:\n        'bold', 'underscore', 'blink', 'reverse', 'conceal'\n\n    \"\"\"\n    if not config_string:\n        return PALETTES[DEFAULT_PALETTE]\n\n    # Split the color configuration into parts\n    parts = config_string.lower().split(';')\n    palette = PALETTES[NOCOLOR_PALETTE].copy()\n    for part in parts:\n        if part in PALETTES:\n            # A default palette has been specified\n            palette.update(PALETTES[part])\n        elif '=' in part:\n            # Process a palette defining string\n            definition = {}\n\n            # Break the definition into the role,\n            # plus the list of specific instructions.\n            # The role must be in upper case\n            role, instructions = part.split('=')\n            role = role.upper()\n\n            styles = instructions.split(',')\n            styles.reverse()\n\n            # The first instruction can contain a slash\n            # to break apart fg/bg.\n            colors = styles.pop().split('/')\n            colors.reverse()\n            fg = colors.pop()\n            if fg in color_names:\n                definition['fg'] = fg\n            if colors and colors[-1] in color_names:\n                definition['bg'] = colors[-1]\n\n            # All remaining instructions are options\n            opts = tuple(s for s in styles if s in opt_dict.keys())\n            if opts:\n                definition['opts'] = opts\n\n            # The nocolor palette has all available roles.\n            # Use that palette as the basis for determining\n            # if the role is valid.\n            if role in PALETTES[NOCOLOR_PALETTE] and definition:\n                palette[role] = definition\n\n    # If there are no colors specified, return the empty palette.\n    if palette == PALETTES[NOCOLOR_PALETTE]:\n        return None\n    return palette\n"
  },
  {
    "path": "Django-1.5.1/django/utils/text.py",
    "content": "from __future__ import unicode_literals\n\nimport re\nimport unicodedata\nimport warnings\nfrom gzip import GzipFile\nfrom io import BytesIO\n\nfrom django.utils.encoding import force_text\nfrom django.utils.functional import allow_lazy, SimpleLazyObject\nfrom django.utils import six\nfrom django.utils.six.moves import html_entities\nfrom django.utils.translation import ugettext_lazy, ugettext as _, pgettext\nfrom django.utils.safestring import mark_safe\n\nif not six.PY3:\n    # Import force_unicode even though this module doesn't use it, because some\n    # people rely on it being here.\n    from django.utils.encoding import force_unicode\n\n# Capitalizes the first letter of a string.\ncapfirst = lambda x: x and force_text(x)[0].upper() + force_text(x)[1:]\ncapfirst = allow_lazy(capfirst, six.text_type)\n\n# Set up regular expressions\nre_words = re.compile(r'&.*?;|<.*?>|(\\w[\\w-]*)', re.U|re.S)\nre_tag = re.compile(r'<(/)?([^ ]+?)(?: (/)| .*?)?>', re.S)\n\n\ndef wrap(text, width):\n    \"\"\"\n    A word-wrap function that preserves existing line breaks and most spaces in\n    the text. Expects that existing line breaks are posix newlines.\n    \"\"\"\n    text = force_text(text)\n    def _generator():\n        it = iter(text.split(' '))\n        word = next(it)\n        yield word\n        pos = len(word) - word.rfind('\\n') - 1\n        for word in it:\n            if \"\\n\" in word:\n                lines = word.split('\\n')\n            else:\n                lines = (word,)\n            pos += len(lines[0]) + 1\n            if pos > width:\n                yield '\\n'\n                pos = len(lines[-1])\n            else:\n                yield ' '\n                if len(lines) > 1:\n                    pos = len(lines[-1])\n            yield word\n    return ''.join(_generator())\nwrap = allow_lazy(wrap, six.text_type)\n\n\nclass Truncator(SimpleLazyObject):\n    \"\"\"\n    An object used to truncate text, either by characters or words.\n    \"\"\"\n    def __init__(self, text):\n        super(Truncator, self).__init__(lambda: force_text(text))\n\n    def add_truncation_text(self, text, truncate=None):\n        if truncate is None:\n            truncate = pgettext(\n                'String to return when truncating text',\n                '%(truncated_text)s...')\n        truncate = force_text(truncate)\n        if '%(truncated_text)s' in truncate:\n            return truncate % {'truncated_text': text}\n        # The truncation text didn't contain the %(truncated_text)s string\n        # replacement argument so just append it to the text.\n        if text.endswith(truncate):\n            # But don't append the truncation text if the current text already\n            # ends in this.\n            return text\n        return '%s%s' % (text, truncate)\n\n    def chars(self, num, truncate=None):\n        \"\"\"\n        Returns the text truncated to be no longer than the specified number\n        of characters.\n\n        Takes an optional argument of what should be used to notify that the\n        string has been truncated, defaulting to a translatable string of an\n        ellipsis (...).\n        \"\"\"\n        length = int(num)\n        text = unicodedata.normalize('NFC', self._wrapped)\n\n        # Calculate the length to truncate to (max length - end_text length)\n        truncate_len = length\n        for char in self.add_truncation_text('', truncate):\n            if not unicodedata.combining(char):\n                truncate_len -= 1\n                if truncate_len == 0:\n                    break\n\n        s_len = 0\n        end_index = None\n        for i, char in enumerate(text):\n            if unicodedata.combining(char):\n                # Don't consider combining characters\n                # as adding to the string length\n                continue\n            s_len += 1\n            if end_index is None and s_len > truncate_len:\n                end_index = i\n            if s_len > length:\n                # Return the truncated string\n                return self.add_truncation_text(text[:end_index or 0],\n                                                truncate)\n\n        # Return the original string since no truncation was necessary\n        return text\n    chars = allow_lazy(chars)\n\n    def words(self, num, truncate=None, html=False):\n        \"\"\"\n        Truncates a string after a certain number of words. Takes an optional\n        argument of what should be used to notify that the string has been\n        truncated, defaulting to ellipsis (...).\n        \"\"\"\n        length = int(num)\n        if html:\n            return self._html_words(length, truncate)\n        return self._text_words(length, truncate)\n    words = allow_lazy(words)\n\n    def _text_words(self, length, truncate):\n        \"\"\"\n        Truncates a string after a certain number of words.\n\n        Newlines in the string will be stripped.\n        \"\"\"\n        words = self._wrapped.split()\n        if len(words) > length:\n            words = words[:length]\n            return self.add_truncation_text(' '.join(words), truncate)\n        return ' '.join(words)\n\n    def _html_words(self, length, truncate):\n        \"\"\"\n        Truncates HTML to a certain number of words (not counting tags and\n        comments). Closes opened tags if they were correctly closed in the\n        given HTML.\n\n        Newlines in the HTML are preserved.\n        \"\"\"\n        if length <= 0:\n            return ''\n        html4_singlets = (\n            'br', 'col', 'link', 'base', 'img',\n            'param', 'area', 'hr', 'input'\n        )\n        # Count non-HTML words and keep note of open tags\n        pos = 0\n        end_text_pos = 0\n        words = 0\n        open_tags = []\n        while words <= length:\n            m = re_words.search(self._wrapped, pos)\n            if not m:\n                # Checked through whole string\n                break\n            pos = m.end(0)\n            if m.group(1):\n                # It's an actual non-HTML word\n                words += 1\n                if words == length:\n                    end_text_pos = pos\n                continue\n            # Check for tag\n            tag = re_tag.match(m.group(0))\n            if not tag or end_text_pos:\n                # Don't worry about non tags or tags after our truncate point\n                continue\n            closing_tag, tagname, self_closing = tag.groups()\n            # Element names are always case-insensitive\n            tagname = tagname.lower()\n            if self_closing or tagname in html4_singlets:\n                pass\n            elif closing_tag:\n                # Check for match in open tags list\n                try:\n                    i = open_tags.index(tagname)\n                except ValueError:\n                    pass\n                else:\n                    # SGML: An end tag closes, back to the matching start tag,\n                    # all unclosed intervening start tags with omitted end tags\n                    open_tags = open_tags[i + 1:]\n            else:\n                # Add it to the start of the open tags list\n                open_tags.insert(0, tagname)\n        if words <= length:\n            # Don't try to close tags if we don't need to truncate\n            return self._wrapped\n        out = self._wrapped[:end_text_pos]\n        truncate_text = self.add_truncation_text('', truncate)\n        if truncate_text:\n            out += truncate_text\n        # Close any tags still open\n        for tag in open_tags:\n            out += '</%s>' % tag\n        # Return string\n        return out\n\ndef truncate_words(s, num, end_text='...'):\n    warnings.warn('This function has been deprecated. Use the Truncator class '\n        'in django.utils.text instead.', category=DeprecationWarning)\n    truncate = end_text and ' %s' % end_text or ''\n    return Truncator(s).words(num, truncate=truncate)\ntruncate_words = allow_lazy(truncate_words, six.text_type)\n\ndef truncate_html_words(s, num, end_text='...'):\n    warnings.warn('This function has been deprecated. Use the Truncator class '\n        'in django.utils.text instead.', category=DeprecationWarning)\n    truncate = end_text and ' %s' % end_text or ''\n    return Truncator(s).words(num, truncate=truncate, html=True)\ntruncate_html_words = allow_lazy(truncate_html_words, six.text_type)\n\ndef get_valid_filename(s):\n    \"\"\"\n    Returns the given string converted to a string that can be used for a clean\n    filename. Specifically, leading and trailing spaces are removed; other\n    spaces are converted to underscores; and anything that is not a unicode\n    alphanumeric, dash, underscore, or dot, is removed.\n    >>> get_valid_filename(\"john's portrait in 2004.jpg\")\n    'johns_portrait_in_2004.jpg'\n    \"\"\"\n    s = force_text(s).strip().replace(' ', '_')\n    return re.sub(r'(?u)[^-\\w.]', '', s)\nget_valid_filename = allow_lazy(get_valid_filename, six.text_type)\n\ndef get_text_list(list_, last_word=ugettext_lazy('or')):\n    \"\"\"\n    >>> get_text_list(['a', 'b', 'c', 'd'])\n    'a, b, c or d'\n    >>> get_text_list(['a', 'b', 'c'], 'and')\n    'a, b and c'\n    >>> get_text_list(['a', 'b'], 'and')\n    'a and b'\n    >>> get_text_list(['a'])\n    'a'\n    >>> get_text_list([])\n    ''\n    \"\"\"\n    if len(list_) == 0: return ''\n    if len(list_) == 1: return force_text(list_[0])\n    return '%s %s %s' % (\n        # Translators: This string is used as a separator between list elements\n        _(', ').join([force_text(i) for i in list_][:-1]),\n        force_text(last_word), force_text(list_[-1]))\nget_text_list = allow_lazy(get_text_list, six.text_type)\n\ndef normalize_newlines(text):\n    return force_text(re.sub(r'\\r\\n|\\r|\\n', '\\n', text))\nnormalize_newlines = allow_lazy(normalize_newlines, six.text_type)\n\ndef recapitalize(text):\n    \"Recapitalizes text, placing caps after end-of-sentence punctuation.\"\n    text = force_text(text).lower()\n    capsRE = re.compile(r'(?:^|(?<=[\\.\\?\\!] ))([a-z])')\n    text = capsRE.sub(lambda x: x.group(1).upper(), text)\n    return text\nrecapitalize = allow_lazy(recapitalize)\n\ndef phone2numeric(phone):\n    \"Converts a phone number with letters into its numeric equivalent.\"\n    char2number = {'a': '2', 'b': '2', 'c': '2', 'd': '3', 'e': '3', 'f': '3',\n         'g': '4', 'h': '4', 'i': '4', 'j': '5', 'k': '5', 'l': '5', 'm': '6',\n         'n': '6', 'o': '6', 'p': '7', 'q': '7', 'r': '7', 's': '7', 't': '8',\n         'u': '8', 'v': '8', 'w': '9', 'x': '9', 'y': '9', 'z': '9',\n        }\n    return ''.join(char2number.get(c, c) for c in phone.lower())\nphone2numeric = allow_lazy(phone2numeric)\n\n# From http://www.xhaus.com/alan/python/httpcomp.html#gzip\n# Used with permission.\ndef compress_string(s):\n    zbuf = BytesIO()\n    zfile = GzipFile(mode='wb', compresslevel=6, fileobj=zbuf)\n    zfile.write(s)\n    zfile.close()\n    return zbuf.getvalue()\n\nclass StreamingBuffer(object):\n    def __init__(self):\n        self.vals = []\n\n    def write(self, val):\n        self.vals.append(val)\n\n    def read(self):\n        ret = b''.join(self.vals)\n        self.vals = []\n        return ret\n\n    def flush(self):\n        return\n\n    def close(self):\n        return\n\n# Like compress_string, but for iterators of strings.\ndef compress_sequence(sequence):\n    buf = StreamingBuffer()\n    zfile = GzipFile(mode='wb', compresslevel=6, fileobj=buf)\n    # Output headers...\n    yield buf.read()\n    for item in sequence:\n        zfile.write(item)\n        zfile.flush()\n        yield buf.read()\n    zfile.close()\n    yield buf.read()\n\nustring_re = re.compile(\"([\\u0080-\\uffff])\")\n\ndef javascript_quote(s, quote_double_quotes=False):\n\n    def fix(match):\n        return \"\\\\u%04x\" % ord(match.group(1))\n\n    if type(s) == bytes:\n        s = s.decode('utf-8')\n    elif type(s) != six.text_type:\n        raise TypeError(s)\n    s = s.replace('\\\\', '\\\\\\\\')\n    s = s.replace('\\r', '\\\\r')\n    s = s.replace('\\n', '\\\\n')\n    s = s.replace('\\t', '\\\\t')\n    s = s.replace(\"'\", \"\\\\'\")\n    if quote_double_quotes:\n        s = s.replace('\"', '&quot;')\n    return str(ustring_re.sub(fix, s))\njavascript_quote = allow_lazy(javascript_quote, six.text_type)\n\n# Expression to match some_token and some_token=\"with spaces\" (and similarly\n# for single-quoted strings).\nsmart_split_re = re.compile(r\"\"\"\n    ((?:\n        [^\\s'\"]*\n        (?:\n            (?:\"(?:[^\"\\\\]|\\\\.)*\" | '(?:[^'\\\\]|\\\\.)*')\n            [^\\s'\"]*\n        )+\n    ) | \\S+)\n\"\"\", re.VERBOSE)\n\ndef smart_split(text):\n    r\"\"\"\n    Generator that splits a string by spaces, leaving quoted phrases together.\n    Supports both single and double quotes, and supports escaping quotes with\n    backslashes. In the output, strings will keep their initial and trailing\n    quote marks and escaped quotes will remain escaped (the results can then\n    be further processed with unescape_string_literal()).\n\n    >>> list(smart_split(r'This is \"a person\\'s\" test.'))\n    ['This', 'is', '\"a person\\\\\\'s\"', 'test.']\n    >>> list(smart_split(r\"Another 'person\\'s' test.\"))\n    ['Another', \"'person\\\\'s'\", 'test.']\n    >>> list(smart_split(r'A \"\\\"funky\\\" style\" test.'))\n    ['A', '\"\\\\\"funky\\\\\" style\"', 'test.']\n    \"\"\"\n    text = force_text(text)\n    for bit in smart_split_re.finditer(text):\n        yield bit.group(0)\nsmart_split = allow_lazy(smart_split, six.text_type)\n\ndef _replace_entity(match):\n    text = match.group(1)\n    if text[0] == '#':\n        text = text[1:]\n        try:\n            if text[0] in 'xX':\n                c = int(text[1:], 16)\n            else:\n                c = int(text)\n            return unichr(c)\n        except ValueError:\n            return match.group(0)\n    else:\n        try:\n            return unichr(html_entities.name2codepoint[text])\n        except (ValueError, KeyError):\n            return match.group(0)\n\n_entity_re = re.compile(r\"&(#?[xX]?(?:[0-9a-fA-F]+|\\w{1,8}));\")\n\ndef unescape_entities(text):\n    return _entity_re.sub(_replace_entity, text)\nunescape_entities = allow_lazy(unescape_entities, six.text_type)\n\ndef unescape_string_literal(s):\n    r\"\"\"\n    Convert quoted string literals to unquoted strings with escaped quotes and\n    backslashes unquoted::\n\n        >>> unescape_string_literal('\"abc\"')\n        'abc'\n        >>> unescape_string_literal(\"'abc'\")\n        'abc'\n        >>> unescape_string_literal('\"a \\\"bc\\\"\"')\n        'a \"bc\"'\n        >>> unescape_string_literal(\"'\\'ab\\' c'\")\n        \"'ab' c\"\n    \"\"\"\n    if s[0] not in \"\\\"'\" or s[-1] != s[0]:\n        raise ValueError(\"Not a string literal: %r\" % s)\n    quote = s[0]\n    return s[1:-1].replace(r'\\%s' % quote, quote).replace(r'\\\\', '\\\\')\nunescape_string_literal = allow_lazy(unescape_string_literal)\n\ndef slugify(value):\n    \"\"\"\n    Converts to lowercase, removes non-word characters (alphanumerics and\n    underscores) and converts spaces to hyphens. Also strips leading and\n    trailing whitespace.\n    \"\"\"\n    value = unicodedata.normalize('NFKD', value).encode('ascii', 'ignore').decode('ascii')\n    value = re.sub('[^\\w\\s-]', '', value).strip().lower()\n    return mark_safe(re.sub('[-\\s]+', '-', value))\nslugify = allow_lazy(slugify, six.text_type)\n"
  },
  {
    "path": "Django-1.5.1/django/utils/timesince.py",
    "content": "from __future__ import unicode_literals\n\nimport datetime\n\nfrom django.utils.timezone import is_aware, utc\nfrom django.utils.translation import ungettext, ugettext\n\ndef timesince(d, now=None, reversed=False):\n    \"\"\"\n    Takes two datetime objects and returns the time between d and now\n    as a nicely formatted string, e.g. \"10 minutes\".  If d occurs after now,\n    then \"0 minutes\" is returned.\n\n    Units used are years, months, weeks, days, hours, and minutes.\n    Seconds and microseconds are ignored.  Up to two adjacent units will be\n    displayed.  For example, \"2 weeks, 3 days\" and \"1 year, 3 months\" are\n    possible outputs, but \"2 weeks, 3 hours\" and \"1 year, 5 days\" are not.\n\n    Adapted from http://blog.natbat.co.uk/archive/2003/Jun/14/time_since\n    \"\"\"\n    chunks = (\n      (60 * 60 * 24 * 365, lambda n: ungettext('year', 'years', n)),\n      (60 * 60 * 24 * 30, lambda n: ungettext('month', 'months', n)),\n      (60 * 60 * 24 * 7, lambda n : ungettext('week', 'weeks', n)),\n      (60 * 60 * 24, lambda n : ungettext('day', 'days', n)),\n      (60 * 60, lambda n: ungettext('hour', 'hours', n)),\n      (60, lambda n: ungettext('minute', 'minutes', n))\n    )\n    # Convert datetime.date to datetime.datetime for comparison.\n    if not isinstance(d, datetime.datetime):\n        d = datetime.datetime(d.year, d.month, d.day)\n    if now and not isinstance(now, datetime.datetime):\n        now = datetime.datetime(now.year, now.month, now.day)\n\n    if not now:\n        now = datetime.datetime.now(utc if is_aware(d) else None)\n\n    delta = (d - now) if reversed else (now - d)\n    # ignore microseconds\n    since = delta.days * 24 * 60 * 60 + delta.seconds\n    if since <= 0:\n        # d is in the future compared to now, stop processing.\n        return '0 ' + ugettext('minutes')\n    for i, (seconds, name) in enumerate(chunks):\n        count = since // seconds\n        if count != 0:\n            break\n    s = ugettext('%(number)d %(type)s') % {'number': count, 'type': name(count)}\n    if i + 1 < len(chunks):\n        # Now get the second item\n        seconds2, name2 = chunks[i + 1]\n        count2 = (since - (seconds * count)) // seconds2\n        if count2 != 0:\n            s += ugettext(', %(number)d %(type)s') % {'number': count2, 'type': name2(count2)}\n    return s\n\ndef timeuntil(d, now=None):\n    \"\"\"\n    Like timesince, but returns a string measuring the time until\n    the given time.\n    \"\"\"\n    return timesince(d, now, reversed=True)\n"
  },
  {
    "path": "Django-1.5.1/django/utils/timezone.py",
    "content": "\"\"\"Timezone helper functions.\n\nThis module uses pytz when it's available and fallbacks when it isn't.\n\"\"\"\n\nfrom datetime import datetime, timedelta, tzinfo\nfrom threading import local\nimport time as _time\n\ntry:\n    import pytz\nexcept ImportError:\n    pytz = None\n\nfrom django.conf import settings\nfrom django.utils import six\n\n__all__ = [\n    'utc', 'get_default_timezone', 'get_current_timezone',\n    'activate', 'deactivate', 'override',\n    'is_naive', 'is_aware', 'make_aware', 'make_naive',\n]\n\n\n# UTC and local time zones\n\nZERO = timedelta(0)\n\nclass UTC(tzinfo):\n    \"\"\"\n    UTC implementation taken from Python's docs.\n\n    Used only when pytz isn't available.\n    \"\"\"\n\n    def __repr__(self):\n        return \"<UTC>\"\n\n    def utcoffset(self, dt):\n        return ZERO\n\n    def tzname(self, dt):\n        return \"UTC\"\n\n    def dst(self, dt):\n        return ZERO\n\nclass LocalTimezone(tzinfo):\n    \"\"\"\n    Local time implementation taken from Python's docs.\n\n    Used only when pytz isn't available, and most likely inaccurate. If you're\n    having trouble with this class, don't waste your time, just install pytz.\n    \"\"\"\n\n    def __init__(self):\n        # This code is moved in __init__ to execute it as late as possible\n        # See get_default_timezone().\n        self.STDOFFSET = timedelta(seconds=-_time.timezone)\n        if _time.daylight:\n            self.DSTOFFSET = timedelta(seconds=-_time.altzone)\n        else:\n            self.DSTOFFSET = self.STDOFFSET\n        self.DSTDIFF = self.DSTOFFSET - self.STDOFFSET\n        tzinfo.__init__(self)\n\n    def __repr__(self):\n        return \"<LocalTimezone>\"\n\n    def utcoffset(self, dt):\n        if self._isdst(dt):\n            return self.DSTOFFSET\n        else:\n            return self.STDOFFSET\n\n    def dst(self, dt):\n        if self._isdst(dt):\n            return self.DSTDIFF\n        else:\n            return ZERO\n\n    def tzname(self, dt):\n        return _time.tzname[self._isdst(dt)]\n\n    def _isdst(self, dt):\n        tt = (dt.year, dt.month, dt.day,\n              dt.hour, dt.minute, dt.second,\n              dt.weekday(), 0, 0)\n        stamp = _time.mktime(tt)\n        tt = _time.localtime(stamp)\n        return tt.tm_isdst > 0\n\n\nutc = pytz.utc if pytz else UTC()\n\"\"\"UTC time zone as a tzinfo instance.\"\"\"\n\n# In order to avoid accessing the settings at compile time,\n# wrap the expression in a function and cache the result.\n_localtime = None\n\ndef get_default_timezone():\n    \"\"\"\n    Returns the default time zone as a tzinfo instance.\n\n    This is the time zone defined by settings.TIME_ZONE.\n\n    See also :func:`get_current_timezone`.\n    \"\"\"\n    global _localtime\n    if _localtime is None:\n        if isinstance(settings.TIME_ZONE, six.string_types) and pytz is not None:\n            _localtime = pytz.timezone(settings.TIME_ZONE)\n        else:\n            # This relies on os.environ['TZ'] being set to settings.TIME_ZONE.\n            _localtime = LocalTimezone()\n    return _localtime\n\n# This function exists for consistency with get_current_timezone_name\ndef get_default_timezone_name():\n    \"\"\"\n    Returns the name of the default time zone.\n    \"\"\"\n    return _get_timezone_name(get_default_timezone())\n\n_active = local()\n\ndef get_current_timezone():\n    \"\"\"\n    Returns the currently active time zone as a tzinfo instance.\n    \"\"\"\n    return getattr(_active, \"value\", get_default_timezone())\n\ndef get_current_timezone_name():\n    \"\"\"\n    Returns the name of the currently active time zone.\n    \"\"\"\n    return _get_timezone_name(get_current_timezone())\n\ndef _get_timezone_name(timezone):\n    \"\"\"\n    Returns the name of ``timezone``.\n    \"\"\"\n    try:\n        # for pytz timezones\n        return timezone.zone\n    except AttributeError:\n        # for regular tzinfo objects\n        local_now = datetime.now(timezone)\n        return timezone.tzname(local_now)\n\n# Timezone selection functions.\n\n# These functions don't change os.environ['TZ'] and call time.tzset()\n# because it isn't thread safe.\n\ndef activate(timezone):\n    \"\"\"\n    Sets the time zone for the current thread.\n\n    The ``timezone`` argument must be an instance of a tzinfo subclass or a\n    time zone name. If it is a time zone name, pytz is required.\n    \"\"\"\n    if isinstance(timezone, tzinfo):\n        _active.value = timezone\n    elif isinstance(timezone, six.string_types) and pytz is not None:\n        _active.value = pytz.timezone(timezone)\n    else:\n        raise ValueError(\"Invalid timezone: %r\" % timezone)\n\ndef deactivate():\n    \"\"\"\n    Unsets the time zone for the current thread.\n\n    Django will then use the time zone defined by settings.TIME_ZONE.\n    \"\"\"\n    if hasattr(_active, \"value\"):\n        del _active.value\n\nclass override(object):\n    \"\"\"\n    Temporarily set the time zone for the current thread.\n\n    This is a context manager that uses ``~django.utils.timezone.activate()``\n    to set the timezone on entry, and restores the previously active timezone\n    on exit.\n\n    The ``timezone`` argument must be an instance of a ``tzinfo`` subclass, a\n    time zone name, or ``None``. If is it a time zone name, pytz is required.\n    If it is ``None``, Django enables the default time zone.\n    \"\"\"\n    def __init__(self, timezone):\n        self.timezone = timezone\n        self.old_timezone = getattr(_active, 'value', None)\n\n    def __enter__(self):\n        if self.timezone is None:\n            deactivate()\n        else:\n            activate(self.timezone)\n\n    def __exit__(self, exc_type, exc_value, traceback):\n        if self.old_timezone is None:\n            deactivate()\n        else:\n            _active.value = self.old_timezone\n\n\n# Templates\n\ndef template_localtime(value, use_tz=None):\n    \"\"\"\n    Checks if value is a datetime and converts it to local time if necessary.\n\n    If use_tz is provided and is not None, that will force the value to\n    be converted (or not), overriding the value of settings.USE_TZ.\n\n    This function is designed for use by the template engine.\n    \"\"\"\n    should_convert = (isinstance(value, datetime)\n        and (settings.USE_TZ if use_tz is None else use_tz)\n        and not is_naive(value)\n        and getattr(value, 'convert_to_local_time', True))\n    return localtime(value) if should_convert else value\n\n\n# Utilities\n\ndef localtime(value, timezone=None):\n    \"\"\"\n    Converts an aware datetime.datetime to local time.\n\n    Local time is defined by the current time zone, unless another time zone\n    is specified.\n    \"\"\"\n    if timezone is None:\n        timezone = get_current_timezone()\n    value = value.astimezone(timezone)\n    if hasattr(timezone, 'normalize'):\n        # available for pytz time zones\n        value = timezone.normalize(value)\n    return value\n\ndef now():\n    \"\"\"\n    Returns an aware or naive datetime.datetime, depending on settings.USE_TZ.\n    \"\"\"\n    if settings.USE_TZ:\n        # timeit shows that datetime.now(tz=utc) is 24% slower\n        return datetime.utcnow().replace(tzinfo=utc)\n    else:\n        return datetime.now()\n\n# By design, these four functions don't perform any checks on their arguments.\n# The caller should ensure that they don't receive an invalid value like None.\n\ndef is_aware(value):\n    \"\"\"\n    Determines if a given datetime.datetime is aware.\n\n    The logic is described in Python's docs:\n    http://docs.python.org/library/datetime.html#datetime.tzinfo\n    \"\"\"\n    return value.tzinfo is not None and value.tzinfo.utcoffset(value) is not None\n\ndef is_naive(value):\n    \"\"\"\n    Determines if a given datetime.datetime is naive.\n\n    The logic is described in Python's docs:\n    http://docs.python.org/library/datetime.html#datetime.tzinfo\n    \"\"\"\n    return value.tzinfo is None or value.tzinfo.utcoffset(value) is None\n\ndef make_aware(value, timezone):\n    \"\"\"\n    Makes a naive datetime.datetime in a given time zone aware.\n    \"\"\"\n    if hasattr(timezone, 'localize'):\n        # available for pytz time zones\n        return timezone.localize(value, is_dst=None)\n    else:\n        # may be wrong around DST changes\n        return value.replace(tzinfo=timezone)\n\ndef make_naive(value, timezone):\n    \"\"\"\n    Makes an aware datetime.datetime naive in a given time zone.\n    \"\"\"\n    value = value.astimezone(timezone)\n    if hasattr(timezone, 'normalize'):\n        # available for pytz time zones\n        value = timezone.normalize(value)\n    return value.replace(tzinfo=None)\n"
  },
  {
    "path": "Django-1.5.1/django/utils/translation/__init__.py",
    "content": "\"\"\"\nInternationalization support.\n\"\"\"\nfrom __future__ import unicode_literals\n\nfrom django.utils.encoding import force_text\nfrom django.utils.functional import lazy\nfrom django.utils import six\n\n\n__all__ = [\n    'activate', 'deactivate', 'override', 'deactivate_all',\n    'get_language',  'get_language_from_request',\n    'get_language_info', 'get_language_bidi',\n    'check_for_language', 'to_locale', 'templatize', 'string_concat',\n    'gettext', 'gettext_lazy', 'gettext_noop',\n    'ugettext', 'ugettext_lazy', 'ugettext_noop',\n    'ngettext', 'ngettext_lazy',\n    'ungettext', 'ungettext_lazy',\n    'pgettext', 'pgettext_lazy',\n    'npgettext', 'npgettext_lazy',\n]\n\n# Here be dragons, so a short explanation of the logic won't hurt:\n# We are trying to solve two problems: (1) access settings, in particular\n# settings.USE_I18N, as late as possible, so that modules can be imported\n# without having to first configure Django, and (2) if some other code creates\n# a reference to one of these functions, don't break that reference when we\n# replace the functions with their real counterparts (once we do access the\n# settings).\n\nclass Trans(object):\n    \"\"\"\n    The purpose of this class is to store the actual translation function upon\n    receiving the first call to that function. After this is done, changes to\n    USE_I18N will have no effect to which function is served upon request. If\n    your tests rely on changing USE_I18N, you can delete all the functions\n    from _trans.__dict__.\n\n    Note that storing the function with setattr will have a noticeable\n    performance effect, as access to the function goes the normal path,\n    instead of using __getattr__.\n    \"\"\"\n\n    def __getattr__(self, real_name):\n        from django.conf import settings\n        if settings.USE_I18N:\n            from django.utils.translation import trans_real as trans\n        else:\n            from django.utils.translation import trans_null as trans\n        setattr(self, real_name, getattr(trans, real_name))\n        return getattr(trans, real_name)\n\n_trans = Trans()\n\n# The Trans class is no more needed, so remove it from the namespace.\ndel Trans\n\ndef gettext_noop(message):\n    return _trans.gettext_noop(message)\n\nugettext_noop = gettext_noop\n\ndef gettext(message):\n    return _trans.gettext(message)\n\ndef ngettext(singular, plural, number):\n    return _trans.ngettext(singular, plural, number)\n\ndef ugettext(message):\n    return _trans.ugettext(message)\n\ndef ungettext(singular, plural, number):\n    return _trans.ungettext(singular, plural, number)\n\ndef pgettext(context, message):\n    return _trans.pgettext(context, message)\n\ndef npgettext(context, singular, plural, number):\n    return _trans.npgettext(context, singular, plural, number)\n\ngettext_lazy = lazy(gettext, str)\nngettext_lazy = lazy(ngettext, str)\nugettext_lazy = lazy(ugettext, six.text_type)\nungettext_lazy = lazy(ungettext, six.text_type)\npgettext_lazy = lazy(pgettext, six.text_type)\nnpgettext_lazy = lazy(npgettext, six.text_type)\n\ndef activate(language):\n    return _trans.activate(language)\n\ndef deactivate():\n    return _trans.deactivate()\n\nclass override(object):\n    def __init__(self, language, deactivate=False):\n        self.language = language\n        self.deactivate = deactivate\n        self.old_language = get_language()\n\n    def __enter__(self):\n        if self.language is not None:\n            activate(self.language)\n        else:\n            deactivate_all()\n\n    def __exit__(self, exc_type, exc_value, traceback):\n        if self.deactivate:\n            deactivate()\n        else:\n            activate(self.old_language)\n\ndef get_language():\n    return _trans.get_language()\n\ndef get_language_bidi():\n    return _trans.get_language_bidi()\n\ndef check_for_language(lang_code):\n    return _trans.check_for_language(lang_code)\n\ndef to_locale(language):\n    return _trans.to_locale(language)\n\ndef get_language_from_request(request, check_path=False):\n    return _trans.get_language_from_request(request, check_path)\n\ndef get_language_from_path(path):\n    return _trans.get_language_from_path(path)\n\ndef templatize(src, origin=None):\n    return _trans.templatize(src, origin)\n\ndef deactivate_all():\n    return _trans.deactivate_all()\n\ndef _string_concat(*strings):\n    \"\"\"\n    Lazy variant of string concatenation, needed for translations that are\n    constructed from multiple parts.\n    \"\"\"\n    return ''.join([force_text(s) for s in strings])\nstring_concat = lazy(_string_concat, six.text_type)\n\ndef get_language_info(lang_code):\n    from django.conf.locale import LANG_INFO\n    try:\n        return LANG_INFO[lang_code]\n    except KeyError:\n        raise KeyError(\"Unknown language code %r.\" % lang_code)\n"
  },
  {
    "path": "Django-1.5.1/django/utils/translation/trans_null.py",
    "content": "# These are versions of the functions in django.utils.translation.trans_real\n# that don't actually do anything. This is purely for performance, so that\n# settings.USE_I18N = False can use this module rather than trans_real.py.\n\nfrom django.conf import settings\nfrom django.utils.encoding import force_text\nfrom django.utils.safestring import mark_safe, SafeData\n\ndef ngettext(singular, plural, number):\n    if number == 1: return singular\n    return plural\nngettext_lazy = ngettext\n\ndef ungettext(singular, plural, number):\n    return force_text(ngettext(singular, plural, number))\n\ndef pgettext(context, message):\n    return ugettext(message)\n\ndef npgettext(context, singular, plural, number):\n    return ungettext(singular, plural, number)\n\nactivate = lambda x: None\ndeactivate = deactivate_all = lambda: None\nget_language = lambda: settings.LANGUAGE_CODE\nget_language_bidi = lambda: settings.LANGUAGE_CODE in settings.LANGUAGES_BIDI\ncheck_for_language = lambda x: True\n\n# date formats shouldn't be used using gettext anymore. This\n# is kept for backward compatibility\nTECHNICAL_ID_MAP = {\n    \"DATE_WITH_TIME_FULL\": settings.DATETIME_FORMAT,\n    \"DATE_FORMAT\": settings.DATE_FORMAT,\n    \"DATETIME_FORMAT\": settings.DATETIME_FORMAT,\n    \"TIME_FORMAT\": settings.TIME_FORMAT,\n    \"YEAR_MONTH_FORMAT\": settings.YEAR_MONTH_FORMAT,\n    \"MONTH_DAY_FORMAT\": settings.MONTH_DAY_FORMAT,\n}\n\ndef gettext(message):\n    result = TECHNICAL_ID_MAP.get(message, message)\n    if isinstance(message, SafeData):\n        return mark_safe(result)\n    return result\n\ndef ugettext(message):\n    return force_text(gettext(message))\n\ngettext_noop = gettext_lazy = _ = gettext\n\ndef to_locale(language):\n    p = language.find('-')\n    if p >= 0:\n        return language[:p].lower()+'_'+language[p+1:].upper()\n    else:\n        return language.lower()\n\ndef get_language_from_request(request, check_path=False):\n    return settings.LANGUAGE_CODE\n\ndef get_language_from_path(request):\n    return None\n\n"
  },
  {
    "path": "Django-1.5.1/django/utils/translation/trans_real.py",
    "content": "\"\"\"Translation helper functions.\"\"\"\nfrom __future__ import unicode_literals\n\nimport locale\nimport os\nimport re\nimport sys\nimport gettext as gettext_module\nfrom threading import local\n\nfrom django.utils.importlib import import_module\nfrom django.utils.encoding import force_str, force_text\nfrom django.utils._os import upath\nfrom django.utils.safestring import mark_safe, SafeData\nfrom django.utils import six\nfrom django.utils.six import StringIO\n\n\n# Translations are cached in a dictionary for every language+app tuple.\n# The active translations are stored by threadid to make them thread local.\n_translations = {}\n_active = local()\n\n# The default translation is based on the settings file.\n_default = None\n\n# This is a cache for normalized accept-header languages to prevent multiple\n# file lookups when checking the same locale on repeated requests.\n_accepted = {}\n\n# magic gettext number to separate context from message\nCONTEXT_SEPARATOR = \"\\x04\"\n\n# Format of Accept-Language header values. From RFC 2616, section 14.4 and 3.9\n# and RFC 3066, section 2.1\naccept_language_re = re.compile(r'''\n        ([A-Za-z]{1,8}(?:-[A-Za-z0-9]{1,8})*|\\*)      # \"en\", \"en-au\", \"x-y-z\", \"es-419\", \"*\"\n        (?:\\s*;\\s*q=(0(?:\\.\\d{,3})?|1(?:.0{,3})?))?   # Optional \"q=1.00\", \"q=0.8\"\n        (?:\\s*,\\s*|$)                                 # Multiple accepts per header.\n        ''', re.VERBOSE)\n\nlanguage_code_prefix_re = re.compile(r'^/([\\w-]+)(/|$)')\n\ndef to_locale(language, to_lower=False):\n    \"\"\"\n    Turns a language name (en-us) into a locale name (en_US). If 'to_lower' is\n    True, the last component is lower-cased (en_us).\n    \"\"\"\n    p = language.find('-')\n    if p >= 0:\n        if to_lower:\n            return language[:p].lower()+'_'+language[p+1:].lower()\n        else:\n            # Get correct locale for sr-latn\n            if len(language[p+1:]) > 2:\n                return language[:p].lower()+'_'+language[p+1].upper()+language[p+2:].lower()\n            return language[:p].lower()+'_'+language[p+1:].upper()\n    else:\n        return language.lower()\n\ndef to_language(locale):\n    \"\"\"Turns a locale name (en_US) into a language name (en-us).\"\"\"\n    p = locale.find('_')\n    if p >= 0:\n        return locale[:p].lower()+'-'+locale[p+1:].lower()\n    else:\n        return locale.lower()\n\nclass DjangoTranslation(gettext_module.GNUTranslations):\n    \"\"\"\n    This class sets up the GNUTranslations context with regard to output\n    charset.\n    \"\"\"\n    def __init__(self, *args, **kw):\n        gettext_module.GNUTranslations.__init__(self, *args, **kw)\n        self.set_output_charset('utf-8')\n        self.django_output_charset = 'utf-8'\n        self.__language = '??'\n\n    def merge(self, other):\n        self._catalog.update(other._catalog)\n\n    def set_language(self, language):\n        self.__language = language\n        self.__to_language = to_language(language)\n\n    def language(self):\n        return self.__language\n\n    def to_language(self):\n        return self.__to_language\n\n    def __repr__(self):\n        return \"<DjangoTranslation lang:%s>\" % self.__language\n\ndef translation(language):\n    \"\"\"\n    Returns a translation object.\n\n    This translation object will be constructed out of multiple GNUTranslations\n    objects by merging their catalogs. It will construct a object for the\n    requested language and add a fallback to the default language, if it's\n    different from the requested language.\n    \"\"\"\n    global _translations\n\n    t = _translations.get(language, None)\n    if t is not None:\n        return t\n\n    from django.conf import settings\n\n    globalpath = os.path.join(os.path.dirname(upath(sys.modules[settings.__module__].__file__)), 'locale')\n\n    def _fetch(lang, fallback=None):\n\n        global _translations\n\n        res = _translations.get(lang, None)\n        if res is not None:\n            return res\n\n        loc = to_locale(lang)\n\n        def _translation(path):\n            try:\n                t = gettext_module.translation('django', path, [loc], DjangoTranslation)\n                t.set_language(lang)\n                return t\n            except IOError:\n                return None\n\n        res = _translation(globalpath)\n\n        # We want to ensure that, for example,  \"en-gb\" and \"en-us\" don't share\n        # the same translation object (thus, merging en-us with a local update\n        # doesn't affect en-gb), even though they will both use the core \"en\"\n        # translation. So we have to subvert Python's internal gettext caching.\n        base_lang = lambda x: x.split('-', 1)[0]\n        if base_lang(lang) in [base_lang(trans) for trans in _translations]:\n            res._info = res._info.copy()\n            res._catalog = res._catalog.copy()\n\n        def _merge(path):\n            t = _translation(path)\n            if t is not None:\n                if res is None:\n                    return t\n                else:\n                    res.merge(t)\n            return res\n\n        for appname in reversed(settings.INSTALLED_APPS):\n            app = import_module(appname)\n            apppath = os.path.join(os.path.dirname(upath(app.__file__)), 'locale')\n\n            if os.path.isdir(apppath):\n                res = _merge(apppath)\n\n        for localepath in reversed(settings.LOCALE_PATHS):\n            if os.path.isdir(localepath):\n                res = _merge(localepath)\n\n        if res is None:\n            if fallback is not None:\n                res = fallback\n            else:\n                return gettext_module.NullTranslations()\n        _translations[lang] = res\n        return res\n\n    default_translation = _fetch(settings.LANGUAGE_CODE)\n    current_translation = _fetch(language, fallback=default_translation)\n\n    return current_translation\n\ndef activate(language):\n    \"\"\"\n    Fetches the translation object for a given tuple of application name and\n    language and installs it as the current translation object for the current\n    thread.\n    \"\"\"\n    _active.value = translation(language)\n\ndef deactivate():\n    \"\"\"\n    Deinstalls the currently active translation object so that further _ calls\n    will resolve against the default translation object, again.\n    \"\"\"\n    if hasattr(_active, \"value\"):\n        del _active.value\n\ndef deactivate_all():\n    \"\"\"\n    Makes the active translation object a NullTranslations() instance. This is\n    useful when we want delayed translations to appear as the original string\n    for some reason.\n    \"\"\"\n    _active.value = gettext_module.NullTranslations()\n\ndef get_language():\n    \"\"\"Returns the currently selected language.\"\"\"\n    t = getattr(_active, \"value\", None)\n    if t is not None:\n        try:\n            return t.to_language()\n        except AttributeError:\n            pass\n    # If we don't have a real translation object, assume it's the default language.\n    from django.conf import settings\n    return settings.LANGUAGE_CODE\n\ndef get_language_bidi():\n    \"\"\"\n    Returns selected language's BiDi layout.\n\n    * False = left-to-right layout\n    * True = right-to-left layout\n    \"\"\"\n    from django.conf import settings\n\n    base_lang = get_language().split('-')[0]\n    return base_lang in settings.LANGUAGES_BIDI\n\ndef catalog():\n    \"\"\"\n    Returns the current active catalog for further processing.\n    This can be used if you need to modify the catalog or want to access the\n    whole message catalog instead of just translating one string.\n    \"\"\"\n    global _default\n\n    t = getattr(_active, \"value\", None)\n    if t is not None:\n        return t\n    if _default is None:\n        from django.conf import settings\n        _default = translation(settings.LANGUAGE_CODE)\n    return _default\n\ndef do_translate(message, translation_function):\n    \"\"\"\n    Translates 'message' using the given 'translation_function' name -- which\n    will be either gettext or ugettext. It uses the current thread to find the\n    translation object to use. If no current translation is activated, the\n    message will be run through the default translation object.\n    \"\"\"\n    global _default\n\n    # str() is allowing a bytestring message to remain bytestring on Python 2\n    eol_message = message.replace(str('\\r\\n'), str('\\n')).replace(str('\\r'), str('\\n'))\n    t = getattr(_active, \"value\", None)\n    if t is not None:\n        result = getattr(t, translation_function)(eol_message)\n    else:\n        if _default is None:\n            from django.conf import settings\n            _default = translation(settings.LANGUAGE_CODE)\n        result = getattr(_default, translation_function)(eol_message)\n    if isinstance(message, SafeData):\n        return mark_safe(result)\n    return result\n\ndef gettext(message):\n    \"\"\"\n    Returns a string of the translation of the message.\n\n    Returns a string on Python 3 and an UTF-8-encoded bytestring on Python 2.\n    \"\"\"\n    return do_translate(message, 'gettext')\n\nif six.PY3:\n    ugettext = gettext\nelse:\n    def ugettext(message):\n        return do_translate(message, 'ugettext')\n\ndef pgettext(context, message):\n    msg_with_ctxt = \"%s%s%s\" % (context, CONTEXT_SEPARATOR, message)\n    result = ugettext(msg_with_ctxt)\n    if CONTEXT_SEPARATOR in result:\n        # Translation not found\n        result = message\n    return result\n\ndef gettext_noop(message):\n    \"\"\"\n    Marks strings for translation but doesn't translate them now. This can be\n    used to store strings in global variables that should stay in the base\n    language (because they might be used externally) and will be translated\n    later.\n    \"\"\"\n    return message\n\ndef do_ntranslate(singular, plural, number, translation_function):\n    global _default\n\n    t = getattr(_active, \"value\", None)\n    if t is not None:\n        return getattr(t, translation_function)(singular, plural, number)\n    if _default is None:\n        from django.conf import settings\n        _default = translation(settings.LANGUAGE_CODE)\n    return getattr(_default, translation_function)(singular, plural, number)\n\ndef ngettext(singular, plural, number):\n    \"\"\"\n    Returns a string of the translation of either the singular or plural,\n    based on the number.\n\n    Returns a string on Python 3 and an UTF-8-encoded bytestring on Python 2.\n    \"\"\"\n    return do_ntranslate(singular, plural, number, 'ngettext')\n\nif six.PY3:\n    ungettext = ngettext\nelse:\n    def ungettext(singular, plural, number):\n        \"\"\"\n        Returns a unicode strings of the translation of either the singular or\n        plural, based on the number.\n        \"\"\"\n        return do_ntranslate(singular, plural, number, 'ungettext')\n\ndef npgettext(context, singular, plural, number):\n    msgs_with_ctxt = (\"%s%s%s\" % (context, CONTEXT_SEPARATOR, singular),\n                      \"%s%s%s\" % (context, CONTEXT_SEPARATOR, plural),\n                      number)\n    result = ungettext(*msgs_with_ctxt)\n    if CONTEXT_SEPARATOR in result:\n        # Translation not found\n        result = ungettext(singular, plural, number)\n    return result\n\ndef all_locale_paths():\n    \"\"\"\n    Returns a list of paths to user-provides languages files.\n    \"\"\"\n    from django.conf import settings\n    globalpath = os.path.join(\n        os.path.dirname(upath(sys.modules[settings.__module__].__file__)), 'locale')\n    return [globalpath] + list(settings.LOCALE_PATHS)\n\ndef check_for_language(lang_code):\n    \"\"\"\n    Checks whether there is a global language file for the given language\n    code. This is used to decide whether a user-provided language is\n    available. This is only used for language codes from either the cookies\n    or session and during format localization.\n    \"\"\"\n    for path in all_locale_paths():\n        if gettext_module.find('django', path, [to_locale(lang_code)]) is not None:\n            return True\n    return False\n\ndef get_language_from_path(path, supported=None):\n    \"\"\"\n    Returns the language-code if there is a valid language-code\n    found in the `path`.\n    \"\"\"\n    if supported is None:\n        from django.conf import settings\n        supported = dict(settings.LANGUAGES)\n    regex_match = language_code_prefix_re.match(path)\n    if regex_match:\n        lang_code = regex_match.group(1)\n        if lang_code in supported and check_for_language(lang_code):\n            return lang_code\n\ndef get_language_from_request(request, check_path=False):\n    \"\"\"\n    Analyzes the request to find what language the user wants the system to\n    show. Only languages listed in settings.LANGUAGES are taken into account.\n    If the user requests a sublanguage where we have a main language, we send\n    out the main language.\n\n    If check_path is True, the URL path prefix will be checked for a language\n    code, otherwise this is skipped for backwards compatibility.\n    \"\"\"\n    global _accepted\n    from django.conf import settings\n    supported = dict(settings.LANGUAGES)\n\n    if check_path:\n        lang_code = get_language_from_path(request.path_info, supported)\n        if lang_code is not None:\n            return lang_code\n\n    if hasattr(request, 'session'):\n        lang_code = request.session.get('django_language', None)\n        if lang_code in supported and lang_code is not None and check_for_language(lang_code):\n            return lang_code\n\n    lang_code = request.COOKIES.get(settings.LANGUAGE_COOKIE_NAME)\n\n    if lang_code and lang_code not in supported:\n        lang_code = lang_code.split('-')[0] # e.g. if fr-ca is not supported fallback to fr\n\n    if lang_code and lang_code in supported and check_for_language(lang_code):\n        return lang_code\n\n    accept = request.META.get('HTTP_ACCEPT_LANGUAGE', '')\n    for accept_lang, unused in parse_accept_lang_header(accept):\n        if accept_lang == '*':\n            break\n\n        # We have a very restricted form for our language files (no encoding\n        # specifier, since they all must be UTF-8 and only one possible\n        # language each time. So we avoid the overhead of gettext.find() and\n        # work out the MO file manually.\n\n        # 'normalized' is the root name of the locale in POSIX format (which is\n        # the format used for the directories holding the MO files).\n        normalized = locale.locale_alias.get(to_locale(accept_lang, True))\n        if not normalized:\n            continue\n        # Remove the default encoding from locale_alias.\n        normalized = normalized.split('.')[0]\n\n        if normalized in _accepted:\n            # We've seen this locale before and have an MO file for it, so no\n            # need to check again.\n            return _accepted[normalized]\n\n        for lang, dirname in ((accept_lang, normalized),\n                (accept_lang.split('-')[0], normalized.split('_')[0])):\n            if lang.lower() not in supported:\n                continue\n            for path in all_locale_paths():\n                if os.path.exists(os.path.join(path, dirname, 'LC_MESSAGES', 'django.mo')):\n                    _accepted[normalized] = lang\n                    return lang\n\n    return settings.LANGUAGE_CODE\n\ndot_re = re.compile(r'\\S')\ndef blankout(src, char):\n    \"\"\"\n    Changes every non-whitespace character to the given char.\n    Used in the templatize function.\n    \"\"\"\n    return dot_re.sub(char, src)\n\ncontext_re = re.compile(r\"\"\"^\\s+.*context\\s+((?:\"[^\"]*?\")|(?:'[^']*?'))\\s*\"\"\")\ninline_re = re.compile(r\"\"\"^\\s*trans\\s+((?:\"[^\"]*?\")|(?:'[^']*?'))(\\s+.*context\\s+((?:\"[^\"]*?\")|(?:'[^']*?')))?\\s*\"\"\")\nblock_re = re.compile(r\"\"\"^\\s*blocktrans(\\s+.*context\\s+((?:\"[^\"]*?\")|(?:'[^']*?')))?(?:\\s+|$)\"\"\")\nendblock_re = re.compile(r\"\"\"^\\s*endblocktrans$\"\"\")\nplural_re = re.compile(r\"\"\"^\\s*plural$\"\"\")\nconstant_re = re.compile(r\"\"\"_\\(((?:\".*?\")|(?:'.*?'))\\)\"\"\")\none_percent_re = re.compile(r\"\"\"(?<!%)%(?!%)\"\"\")\n\n\ndef templatize(src, origin=None):\n    \"\"\"\n    Turns a Django template into something that is understood by xgettext. It\n    does so by translating the Django translation tags into standard gettext\n    function invocations.\n    \"\"\"\n    from django.conf import settings\n    from django.template import (Lexer, TOKEN_TEXT, TOKEN_VAR, TOKEN_BLOCK,\n            TOKEN_COMMENT, TRANSLATOR_COMMENT_MARK)\n    src = force_text(src, settings.FILE_CHARSET)\n    out = StringIO()\n    message_context = None\n    intrans = False\n    inplural = False\n    singular = []\n    plural = []\n    incomment = False\n    comment = []\n    for t in Lexer(src, origin).tokenize():\n        if incomment:\n            if t.token_type == TOKEN_BLOCK and t.contents == 'endcomment':\n                content = ''.join(comment)\n                translators_comment_start = None\n                for lineno, line in enumerate(content.splitlines(True)):\n                    if line.lstrip().startswith(TRANSLATOR_COMMENT_MARK):\n                        translators_comment_start = lineno\n                for lineno, line in enumerate(content.splitlines(True)):\n                    if translators_comment_start is not None and lineno >= translators_comment_start:\n                        out.write(' # %s' % line)\n                    else:\n                        out.write(' #\\n')\n                incomment = False\n                comment = []\n            else:\n                comment.append(t.contents)\n        elif intrans:\n            if t.token_type == TOKEN_BLOCK:\n                endbmatch = endblock_re.match(t.contents)\n                pluralmatch = plural_re.match(t.contents)\n                if endbmatch:\n                    if inplural:\n                        if message_context:\n                            out.write(' npgettext(%r, %r, %r,count) ' % (message_context, ''.join(singular), ''.join(plural)))\n                        else:\n                            out.write(' ngettext(%r, %r, count) ' % (''.join(singular), ''.join(plural)))\n                        for part in singular:\n                            out.write(blankout(part, 'S'))\n                        for part in plural:\n                            out.write(blankout(part, 'P'))\n                    else:\n                        if message_context:\n                            out.write(' pgettext(%r, %r) ' % (message_context, ''.join(singular)))\n                        else:\n                            out.write(' gettext(%r) ' % ''.join(singular))\n                        for part in singular:\n                            out.write(blankout(part, 'S'))\n                    message_context = None\n                    intrans = False\n                    inplural = False\n                    singular = []\n                    plural = []\n                elif pluralmatch:\n                    inplural = True\n                else:\n                    filemsg = ''\n                    if origin:\n                        filemsg = 'file %s, ' % origin\n                    raise SyntaxError(\"Translation blocks must not include other block tags: %s (%sline %d)\" % (t.contents, filemsg, t.lineno))\n            elif t.token_type == TOKEN_VAR:\n                if inplural:\n                    plural.append('%%(%s)s' % t.contents)\n                else:\n                    singular.append('%%(%s)s' % t.contents)\n            elif t.token_type == TOKEN_TEXT:\n                contents = one_percent_re.sub('%%', t.contents)\n                if inplural:\n                    plural.append(contents)\n                else:\n                    singular.append(contents)\n        else:\n            if t.token_type == TOKEN_BLOCK:\n                imatch = inline_re.match(t.contents)\n                bmatch = block_re.match(t.contents)\n                cmatches = constant_re.findall(t.contents)\n                if imatch:\n                    g = imatch.group(1)\n                    if g[0] == '\"':\n                        g = g.strip('\"')\n                    elif g[0] == \"'\":\n                        g = g.strip(\"'\")\n                    g = one_percent_re.sub('%%', g)\n                    if imatch.group(2):\n                        # A context is provided\n                        context_match = context_re.match(imatch.group(2))\n                        message_context = context_match.group(1)\n                        if message_context[0] == '\"':\n                            message_context = message_context.strip('\"')\n                        elif message_context[0] == \"'\":\n                            message_context = message_context.strip(\"'\")\n                        out.write(' pgettext(%r, %r) ' % (message_context, g))\n                        message_context = None\n                    else:\n                        out.write(' gettext(%r) ' % g)\n                elif bmatch:\n                    for fmatch in constant_re.findall(t.contents):\n                        out.write(' _(%s) ' % fmatch)\n                    if bmatch.group(1):\n                        # A context is provided\n                        context_match = context_re.match(bmatch.group(1))\n                        message_context = context_match.group(1)\n                        if message_context[0] == '\"':\n                            message_context = message_context.strip('\"')\n                        elif message_context[0] == \"'\":\n                            message_context = message_context.strip(\"'\")\n                    intrans = True\n                    inplural = False\n                    singular = []\n                    plural = []\n                elif cmatches:\n                    for cmatch in cmatches:\n                        out.write(' _(%s) ' % cmatch)\n                elif t.contents == 'comment':\n                    incomment = True\n                else:\n                    out.write(blankout(t.contents, 'B'))\n            elif t.token_type == TOKEN_VAR:\n                parts = t.contents.split('|')\n                cmatch = constant_re.match(parts[0])\n                if cmatch:\n                    out.write(' _(%s) ' % cmatch.group(1))\n                for p in parts[1:]:\n                    if p.find(':_(') >= 0:\n                        out.write(' %s ' % p.split(':',1)[1])\n                    else:\n                        out.write(blankout(p, 'F'))\n            elif t.token_type == TOKEN_COMMENT:\n                out.write(' # %s' % t.contents)\n            else:\n                out.write(blankout(t.contents, 'X'))\n    return force_str(out.getvalue())\n\ndef parse_accept_lang_header(lang_string):\n    \"\"\"\n    Parses the lang_string, which is the body of an HTTP Accept-Language\n    header, and returns a list of (lang, q-value), ordered by 'q' values.\n\n    Any format errors in lang_string results in an empty list being returned.\n    \"\"\"\n    result = []\n    pieces = accept_language_re.split(lang_string)\n    if pieces[-1]:\n        return []\n    for i in range(0, len(pieces) - 1, 3):\n        first, lang, priority = pieces[i : i + 3]\n        if first:\n            return []\n        priority = priority and float(priority) or 1.0\n        result.append((lang, priority))\n    result.sort(key=lambda k: k[1], reverse=True)\n    return result\n"
  },
  {
    "path": "Django-1.5.1/django/utils/tree.py",
    "content": "\"\"\"\nA class for storing a tree graph. Primarily used for filter constructs in the\nORM.\n\"\"\"\n\nimport copy\n\nclass Node(object):\n    \"\"\"\n    A single internal node in the tree graph. A Node should be viewed as a\n    connection (the root) with the children being either leaf nodes or other\n    Node instances.\n    \"\"\"\n    # Standard connector type. Clients usually won't use this at all and\n    # subclasses will usually override the value.\n    default = 'DEFAULT'\n\n    def __init__(self, children=None, connector=None, negated=False):\n        \"\"\"\n        Constructs a new Node. If no connector is given, the default will be\n        used.\n\n        Warning: You probably don't want to pass in the 'negated' parameter. It\n        is NOT the same as constructing a node and calling negate() on the\n        result.\n        \"\"\"\n        self.children = children and children[:] or []\n        self.connector = connector or self.default\n        self.subtree_parents = []\n        self.negated = negated\n\n    # We need this because of django.db.models.query_utils.Q. Q. __init__() is\n    # problematic, but it is a natural Node subclass in all other respects.\n    def _new_instance(cls, children=None, connector=None, negated=False):\n        \"\"\"\n        This is called to create a new instance of this class when we need new\n        Nodes (or subclasses) in the internal code in this class. Normally, it\n        just shadows __init__(). However, subclasses with an __init__ signature\n        that is not an extension of Node.__init__ might need to implement this\n        method to allow a Node to create a new instance of them (if they have\n        any extra setting up to do).\n        \"\"\"\n        obj = Node(children, connector, negated)\n        obj.__class__ = cls\n        return obj\n    _new_instance = classmethod(_new_instance)\n\n    def __str__(self):\n        if self.negated:\n            return '(NOT (%s: %s))' % (self.connector, ', '.join([str(c) for c\n                    in self.children]))\n        return '(%s: %s)' % (self.connector, ', '.join([str(c) for c in\n                self.children]))\n\n    def __deepcopy__(self, memodict):\n        \"\"\"\n        Utility method used by copy.deepcopy().\n        \"\"\"\n        obj = Node(connector=self.connector, negated=self.negated)\n        obj.__class__ = self.__class__\n        obj.children = copy.deepcopy(self.children, memodict)\n        obj.subtree_parents = copy.deepcopy(self.subtree_parents, memodict)\n        return obj\n\n    def __len__(self):\n        \"\"\"\n        The size of a node if the number of children it has.\n        \"\"\"\n        return len(self.children)\n\n    def __bool__(self):\n        \"\"\"\n        For truth value testing.\n        \"\"\"\n        return bool(self.children)\n\n    def __nonzero__(self):      # Python 2 compatibility\n        return type(self).__bool__(self)\n\n    def __contains__(self, other):\n        \"\"\"\n        Returns True is 'other' is a direct child of this instance.\n        \"\"\"\n        return other in self.children\n\n    def add(self, node, conn_type):\n        \"\"\"\n        Adds a new node to the tree. If the conn_type is the same as the root's\n        current connector type, the node is added to the first level.\n        Otherwise, the whole tree is pushed down one level and a new root\n        connector is created, connecting the existing tree and the new node.\n        \"\"\"\n        if node in self.children and conn_type == self.connector:\n            return\n        if len(self.children) < 2:\n            self.connector = conn_type\n        if self.connector == conn_type:\n            if isinstance(node, Node) and (node.connector == conn_type or\n                    len(node) == 1):\n                self.children.extend(node.children)\n            else:\n                self.children.append(node)\n        else:\n            obj = self._new_instance(self.children, self.connector,\n                    self.negated)\n            self.connector = conn_type\n            self.children = [obj, node]\n\n    def negate(self):\n        \"\"\"\n        Negate the sense of the root connector. This reorganises the children\n        so that the current node has a single child: a negated node containing\n        all the previous children. This slightly odd construction makes adding\n        new children behave more intuitively.\n\n        Interpreting the meaning of this negate is up to client code. This\n        method is useful for implementing \"not\" arrangements.\n        \"\"\"\n        self.children = [self._new_instance(self.children, self.connector,\n                not self.negated)]\n        self.connector = self.default\n\n    def start_subtree(self, conn_type):\n        \"\"\"\n        Sets up internal state so that new nodes are added to a subtree of the\n        current node. The conn_type specifies how the sub-tree is joined to the\n        existing children.\n        \"\"\"\n        if len(self.children) == 1:\n            self.connector = conn_type\n        elif self.connector != conn_type:\n            self.children = [self._new_instance(self.children, self.connector,\n                    self.negated)]\n            self.connector = conn_type\n            self.negated = False\n\n        self.subtree_parents.append(self.__class__(self.children,\n                self.connector, self.negated))\n        self.connector = self.default\n        self.negated = False\n        self.children = []\n\n    def end_subtree(self):\n        \"\"\"\n        Closes off the most recently unmatched start_subtree() call.\n\n        This puts the current state into a node of the parent tree and returns\n        the current instances state to be the parent.\n        \"\"\"\n        obj = self.subtree_parents.pop()\n        node = self.__class__(self.children, self.connector)\n        self.connector = obj.connector\n        self.negated = obj.negated\n        self.children = obj.children\n        self.children.append(node)\n\n"
  },
  {
    "path": "Django-1.5.1/django/utils/tzinfo.py",
    "content": "\"Implementation of tzinfo classes for use with datetime.datetime.\"\n\nfrom __future__ import unicode_literals\n\nimport time\nfrom datetime import timedelta, tzinfo\n\nfrom django.utils.encoding import force_str, force_text, DEFAULT_LOCALE_ENCODING\n\n# Python's doc say: \"A tzinfo subclass must have an __init__() method that can\n# be called with no arguments\". FixedOffset and LocalTimezone don't honor this\n# requirement. Defining __getinitargs__ is sufficient to fix copy/deepcopy as\n# well as pickling/unpickling.\n\nclass FixedOffset(tzinfo):\n    \"Fixed offset in minutes east from UTC.\"\n    def __init__(self, offset):\n        if isinstance(offset, timedelta):\n            self.__offset = offset\n            offset = self.__offset.seconds // 60\n        else:\n            self.__offset = timedelta(minutes=offset)\n\n        sign = '-' if offset < 0 else '+'\n        self.__name = \"%s%02d%02d\" % (sign, abs(offset) / 60., abs(offset) % 60)\n\n    def __repr__(self):\n        return self.__name\n\n    def __getinitargs__(self):\n        return self.__offset,\n\n    def utcoffset(self, dt):\n        return self.__offset\n\n    def tzname(self, dt):\n        return self.__name\n\n    def dst(self, dt):\n        return timedelta(0)\n\n# This implementation is used for display purposes. It uses an approximation\n# for DST computations on dates >= 2038.\n\n# A similar implementation exists in django.utils.timezone. It's used for\n# timezone support (when USE_TZ = True) and focuses on correctness.\n\nclass LocalTimezone(tzinfo):\n    \"Proxy timezone information from time module.\"\n    def __init__(self, dt):\n        tzinfo.__init__(self)\n        self.__dt = dt\n        self._tzname = self.tzname(dt)\n\n    def __repr__(self):\n        return force_str(self._tzname)\n\n    def __getinitargs__(self):\n        return self.__dt,\n\n    def utcoffset(self, dt):\n        if self._isdst(dt):\n            return timedelta(seconds=-time.altzone)\n        else:\n            return timedelta(seconds=-time.timezone)\n\n    def dst(self, dt):\n        if self._isdst(dt):\n            return timedelta(seconds=-time.altzone) - timedelta(seconds=-time.timezone)\n        else:\n            return timedelta(0)\n\n    def tzname(self, dt):\n        try:\n            return force_text(time.tzname[self._isdst(dt)],\n                                 DEFAULT_LOCALE_ENCODING)\n        except UnicodeDecodeError:\n            return None\n\n    def _isdst(self, dt):\n        tt = (dt.year, dt.month, dt.day,\n              dt.hour, dt.minute, dt.second,\n              dt.weekday(), 0, 0)\n        try:\n            stamp = time.mktime(tt)\n        except (OverflowError, ValueError):\n            # 32 bit systems can't handle dates after Jan 2038, and certain\n            # systems can't handle dates before ~1901-12-01:\n            #\n            # >>> time.mktime((1900, 1, 13, 0, 0, 0, 0, 0, 0))\n            # OverflowError: mktime argument out of range\n            # >>> time.mktime((1850, 1, 13, 0, 0, 0, 0, 0, 0))\n            # ValueError: year out of range\n            #\n            # In this case, we fake the date, because we only care about the\n            # DST flag.\n            tt = (2037,) + tt[1:]\n            stamp = time.mktime(tt)\n        tt = time.localtime(stamp)\n        return tt.tm_isdst > 0\n"
  },
  {
    "path": "Django-1.5.1/django/utils/unittest/__init__.py",
    "content": "\"\"\"\nunittest2\n\nunittest2 is a backport of the new features added to the unittest testing\nframework in Python 2.7. It is tested to run on Python 2.4 - 2.6.\n\nTo use unittest2 instead of unittest simply replace ``import unittest`` with\n``import unittest2``.\n\n\nCopyright (c) 1999-2003 Steve Purcell\nCopyright (c) 2003-2010 Python Software Foundation\nThis module is free software, and you may redistribute it and/or modify\nit under the same terms as Python itself, so long as this copyright message\nand disclaimer are retained in their original form.\n\nIN NO EVENT SHALL THE AUTHOR BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,\nSPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF\nTHIS CODE, EVEN IF THE AUTHOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\nDAMAGE.\n\nTHE AUTHOR SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A\nPARTICULAR PURPOSE.  THE CODE PROVIDED HEREUNDER IS ON AN \"AS IS\" BASIS,\nAND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE,\nSUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.\n\"\"\"\n\nimport sys\n\n# Django hackery to load the appropriate version of unittest\n\ntry:\n    # check the system path first\n    from unittest2 import *\nexcept ImportError:\n    if sys.version_info >= (2,7):\n        # unittest2 features are native in Python 2.7\n        from unittest import *\n    else:\n        # otherwise use our bundled version\n        __all__ = ['TestResult', 'TestCase', 'TestSuite',\n                   'TextTestRunner', 'TestLoader', 'FunctionTestCase', 'main',\n                   'defaultTestLoader', 'SkipTest', 'skip', 'skipIf', 'skipUnless',\n                   'expectedFailure', 'TextTestResult', '__version__', 'collector']\n\n        __version__ = '0.5.1'\n\n        # Expose obsolete functions for backwards compatibility\n        __all__.extend(['getTestCaseNames', 'makeSuite', 'findTestCases'])\n\n\n        from django.utils.unittest.collector import collector\n        from django.utils.unittest.result import TestResult\n        from django.utils.unittest.case import \\\n            TestCase, FunctionTestCase, SkipTest, skip, skipIf,\\\n            skipUnless, expectedFailure\n\n        from django.utils.unittest.suite import BaseTestSuite, TestSuite\n        from django.utils.unittest.loader import \\\n            TestLoader, defaultTestLoader, makeSuite, getTestCaseNames,\\\n            findTestCases\n\n        from django.utils.unittest.main import TestProgram, main, main_\n        from django.utils.unittest.runner import TextTestRunner, TextTestResult\n\n        try:\n            from django.utils.unittest.signals import\\\n                installHandler, registerResult, removeResult, removeHandler\n        except ImportError:\n            # Compatibility with platforms that don't have the signal module\n            pass\n        else:\n            __all__.extend(['installHandler', 'registerResult', 'removeResult',\n                            'removeHandler'])\n\n        # deprecated\n        _TextTestResult = TextTestResult\n\n        __unittest = True\n"
  },
  {
    "path": "Django-1.5.1/django/utils/unittest/__main__.py",
    "content": "\"\"\"Main entry point\"\"\"\n\nimport sys\nif sys.argv[0].endswith(\"__main__.py\"):\n    sys.argv[0] = \"unittest2\"\n\n__unittest = True\n\nfrom django.utils.unittest.main import main_\nmain_()\n"
  },
  {
    "path": "Django-1.5.1/django/utils/unittest/case.py",
    "content": "\"\"\"Test case implementation\"\"\"\n\nimport sys\nimport difflib\nimport pprint\nimport re\nimport unittest\nimport warnings\n\nfrom django.utils.unittest import result\nfrom django.utils.unittest.util import\\\n    safe_repr, safe_str, strclass,\\\n    unorderable_list_difference\n\nfrom django.utils.unittest.compatibility import wraps\n\n__unittest = True\n\n\nDIFF_OMITTED = ('\\nDiff is %s characters long. '\n                 'Set self.maxDiff to None to see it.')\n\nclass SkipTest(Exception):\n    \"\"\"\n    Raise this exception in a test to skip it.\n\n    Usually you can use TestResult.skip() or one of the skipping decorators\n    instead of raising this directly.\n    \"\"\"\n\nclass _ExpectedFailure(Exception):\n    \"\"\"\n    Raise this when a test is expected to fail.\n\n    This is an implementation detail.\n    \"\"\"\n\n    def __init__(self, exc_info):\n        # can't use super because Python 2.4 exceptions are old style\n        Exception.__init__(self)\n        self.exc_info = exc_info\n\nclass _UnexpectedSuccess(Exception):\n    \"\"\"\n    The test was supposed to fail, but it didn't!\n    \"\"\"\n\ndef _id(obj):\n    return obj\n\ndef skip(reason):\n    \"\"\"\n    Unconditionally skip a test.\n    \"\"\"\n    def decorator(test_item):\n        if not (isinstance(test_item, type) and issubclass(test_item, TestCase)):\n            @wraps(test_item)\n            def skip_wrapper(*args, **kwargs):\n                raise SkipTest(reason)\n            test_item = skip_wrapper\n\n        test_item.__unittest_skip__ = True\n        test_item.__unittest_skip_why__ = reason\n        return test_item\n    return decorator\n\ndef skipIf(condition, reason):\n    \"\"\"\n    Skip a test if the condition is true.\n    \"\"\"\n    if condition:\n        return skip(reason)\n    return _id\n\ndef skipUnless(condition, reason):\n    \"\"\"\n    Skip a test unless the condition is true.\n    \"\"\"\n    if not condition:\n        return skip(reason)\n    return _id\n\n\ndef expectedFailure(func):\n    @wraps(func)\n    def wrapper(*args, **kwargs):\n        try:\n            func(*args, **kwargs)\n        except Exception:\n            raise _ExpectedFailure(sys.exc_info())\n        raise _UnexpectedSuccess\n    return wrapper\n\n\nclass _AssertRaisesContext(object):\n    \"\"\"A context manager used to implement TestCase.assertRaises* methods.\"\"\"\n\n    def __init__(self, expected, test_case, expected_regexp=None):\n        self.expected = expected\n        self.failureException = test_case.failureException\n        self.expected_regexp = expected_regexp\n\n    def __enter__(self):\n        return self\n\n    def __exit__(self, exc_type, exc_value, tb):\n        if exc_type is None:\n            try:\n                exc_name = self.expected.__name__\n            except AttributeError:\n                exc_name = str(self.expected)\n            raise self.failureException(\n                \"%s not raised\" % (exc_name,))\n        if not issubclass(exc_type, self.expected):\n            # let unexpected exceptions pass through\n            return False\n        self.exception = exc_value # store for later retrieval\n        if self.expected_regexp is None:\n            return True\n\n        expected_regexp = self.expected_regexp\n        if isinstance(expected_regexp, basestring):\n            expected_regexp = re.compile(expected_regexp)\n        if not expected_regexp.search(str(exc_value)):\n            raise self.failureException('\"%s\" does not match \"%s\"' %\n                     (expected_regexp.pattern, str(exc_value)))\n        return True\n\n\nclass _TypeEqualityDict(object):\n\n    def __init__(self, testcase):\n        self.testcase = testcase\n        self._store = {}\n\n    def __setitem__(self, key, value):\n        self._store[key] = value\n\n    def __getitem__(self, key):\n        value = self._store[key]\n        if isinstance(value, basestring):\n            return getattr(self.testcase, value)\n        return value\n\n    def get(self, key, default=None):\n        if key in self._store:\n            return self[key]\n        return default\n\n\nclass TestCase(unittest.TestCase):\n    \"\"\"A class whose instances are single test cases.\n\n    By default, the test code itself should be placed in a method named\n    'runTest'.\n\n    If the fixture may be used for many test cases, create as\n    many test methods as are needed. When instantiating such a TestCase\n    subclass, specify in the constructor arguments the name of the test method\n    that the instance is to execute.\n\n    Test authors should subclass TestCase for their own tests. Construction\n    and deconstruction of the test's environment ('fixture') can be\n    implemented by overriding the 'setUp' and 'tearDown' methods respectively.\n\n    If it is necessary to override the __init__ method, the base class\n    __init__ method must always be called. It is important that subclasses\n    should not change the signature of their __init__ method, since instances\n    of the classes are instantiated automatically by parts of the framework\n    in order to be run.\n    \"\"\"\n\n    # This attribute determines which exception will be raised when\n    # the instance's assertion methods fail; test methods raising this\n    # exception will be deemed to have 'failed' rather than 'errored'\n\n    failureException = AssertionError\n\n    # This attribute sets the maximum length of a diff in failure messages\n    # by assert methods using difflib. It is looked up as an instance attribute\n    # so can be configured by individual tests if required.\n\n    maxDiff = 80*8\n\n    # This attribute determines whether long messages (including repr of\n    # objects used in assert methods) will be printed on failure in *addition*\n    # to any explicit message passed.\n\n    longMessage = True\n\n    # Attribute used by TestSuite for classSetUp\n\n    _classSetupFailed = False\n\n    def __init__(self, methodName='runTest'):\n        \"\"\"Create an instance of the class that will use the named test\n           method when executed. Raises a ValueError if the instance does\n           not have a method with the specified name.\n        \"\"\"\n        self._testMethodName = methodName\n        self._resultForDoCleanups = None\n        try:\n            testMethod = getattr(self, methodName)\n        except AttributeError:\n            raise ValueError(\"no such test method in %s: %s\" % \\\n                  (self.__class__, methodName))\n        self._testMethodDoc = testMethod.__doc__\n        self._cleanups = []\n\n        # Map types to custom assertEqual functions that will compare\n        # instances of said type in more detail to generate a more useful\n        # error message.\n        self._type_equality_funcs = _TypeEqualityDict(self)\n        self.addTypeEqualityFunc(dict, 'assertDictEqual')\n        self.addTypeEqualityFunc(list, 'assertListEqual')\n        self.addTypeEqualityFunc(tuple, 'assertTupleEqual')\n        self.addTypeEqualityFunc(set, 'assertSetEqual')\n        self.addTypeEqualityFunc(frozenset, 'assertSetEqual')\n        self.addTypeEqualityFunc(unicode, 'assertMultiLineEqual')\n\n    def addTypeEqualityFunc(self, typeobj, function):\n        \"\"\"Add a type specific assertEqual style function to compare a type.\n\n        This method is for use by TestCase subclasses that need to register\n        their own type equality functions to provide nicer error messages.\n\n        Args:\n            typeobj: The data type to call this function on when both values\n                    are of the same type in assertEqual().\n            function: The callable taking two arguments and an optional\n                    msg= argument that raises self.failureException with a\n                    useful error message when the two arguments are not equal.\n        \"\"\"\n        self._type_equality_funcs[typeobj] = function\n\n    def addCleanup(self, function, *args, **kwargs):\n        \"\"\"Add a function, with arguments, to be called when the test is\n        completed. Functions added are called on a LIFO basis and are\n        called after tearDown on test failure or success.\n\n        Cleanup items are called even if setUp fails (unlike tearDown).\"\"\"\n        self._cleanups.append((function, args, kwargs))\n\n    @classmethod\n    def setUpClass(cls):\n        \"Hook method for setting up class fixture before running tests in the class.\"\n\n    @classmethod\n    def tearDownClass(cls):\n        \"Hook method for deconstructing the class fixture after running all tests in the class.\"\n\n    def countTestCases(self):\n        return 1\n\n    def defaultTestResult(self):\n        return result.TestResult()\n\n    def shortDescription(self):\n        \"\"\"Returns a one-line description of the test, or None if no\n        description has been provided.\n\n        The default implementation of this method returns the first line of\n        the specified test method's docstring.\n        \"\"\"\n        doc = self._testMethodDoc\n        return doc and doc.split(\"\\n\")[0].strip() or None\n\n\n    def id(self):\n        return \"%s.%s\" % (strclass(self.__class__), self._testMethodName)\n\n    def __eq__(self, other):\n        if type(self) is not type(other):\n            return NotImplemented\n\n        return self._testMethodName == other._testMethodName\n\n    def __ne__(self, other):\n        return not self == other\n\n    def __hash__(self):\n        return hash((type(self), self._testMethodName))\n\n    def __str__(self):\n        return \"%s (%s)\" % (self._testMethodName, strclass(self.__class__))\n\n    def __repr__(self):\n        return \"<%s testMethod=%s>\" % \\\n               (strclass(self.__class__), self._testMethodName)\n\n    def _addSkip(self, result, reason):\n        addSkip = getattr(result, 'addSkip', None)\n        if addSkip is not None:\n            addSkip(self, reason)\n        else:\n            warnings.warn(\"Use of a TestResult without an addSkip method is deprecated\",\n                          DeprecationWarning, 2)\n            result.addSuccess(self)\n\n    def run(self, result=None):\n        orig_result = result\n        if result is None:\n            result = self.defaultTestResult()\n            startTestRun = getattr(result, 'startTestRun', None)\n            if startTestRun is not None:\n                startTestRun()\n\n        self._resultForDoCleanups = result\n        result.startTest(self)\n\n        testMethod = getattr(self, self._testMethodName)\n\n        if (getattr(self.__class__, \"__unittest_skip__\", False) or\n            getattr(testMethod, \"__unittest_skip__\", False)):\n            # If the class or method was skipped.\n            try:\n                skip_why = (getattr(self.__class__, '__unittest_skip_why__', '')\n                            or getattr(testMethod, '__unittest_skip_why__', ''))\n                self._addSkip(result, skip_why)\n            finally:\n                result.stopTest(self)\n            return\n        try:\n            success = False\n            try:\n                self.setUp()\n            except SkipTest as e:\n                self._addSkip(result, str(e))\n            except Exception:\n                result.addError(self, sys.exc_info())\n            else:\n                try:\n                    testMethod()\n                except self.failureException:\n                    result.addFailure(self, sys.exc_info())\n                except _ExpectedFailure as e:\n                    addExpectedFailure = getattr(result, 'addExpectedFailure', None)\n                    if addExpectedFailure is not None:\n                        addExpectedFailure(self, e.exc_info)\n                    else:\n                        warnings.warn(\"Use of a TestResult without an addExpectedFailure method is deprecated\",\n                                      DeprecationWarning)\n                        result.addSuccess(self)\n                except _UnexpectedSuccess:\n                    addUnexpectedSuccess = getattr(result, 'addUnexpectedSuccess', None)\n                    if addUnexpectedSuccess is not None:\n                        addUnexpectedSuccess(self)\n                    else:\n                        warnings.warn(\"Use of a TestResult without an addUnexpectedSuccess method is deprecated\",\n                                      DeprecationWarning)\n                        result.addFailure(self, sys.exc_info())\n                except SkipTest as e:\n                    self._addSkip(result, str(e))\n                except Exception:\n                    result.addError(self, sys.exc_info())\n                else:\n                    success = True\n\n                try:\n                    self.tearDown()\n                except Exception:\n                    result.addError(self, sys.exc_info())\n                    success = False\n\n            cleanUpSuccess = self.doCleanups()\n            success = success and cleanUpSuccess\n            if success:\n                result.addSuccess(self)\n        finally:\n            result.stopTest(self)\n            if orig_result is None:\n                stopTestRun = getattr(result, 'stopTestRun', None)\n                if stopTestRun is not None:\n                    stopTestRun()\n\n    def doCleanups(self):\n        \"\"\"Execute all cleanup functions. Normally called for you after\n        tearDown.\"\"\"\n        result = self._resultForDoCleanups\n        ok = True\n        while self._cleanups:\n            function, args, kwargs = self._cleanups.pop(-1)\n            try:\n                function(*args, **kwargs)\n            except Exception:\n                ok = False\n                result.addError(self, sys.exc_info())\n        return ok\n\n    def __call__(self, *args, **kwds):\n        return self.run(*args, **kwds)\n\n    def debug(self):\n        \"\"\"Run the test without collecting errors in a TestResult\"\"\"\n        self.setUp()\n        getattr(self, self._testMethodName)()\n        self.tearDown()\n        while self._cleanups:\n            function, args, kwargs = self._cleanups.pop(-1)\n            function(*args, **kwargs)\n\n    def skipTest(self, reason):\n        \"\"\"Skip this test.\"\"\"\n        raise SkipTest(reason)\n\n    def fail(self, msg=None):\n        \"\"\"Fail immediately, with the given message.\"\"\"\n        raise self.failureException(msg)\n\n    def assertFalse(self, expr, msg=None):\n        \"Fail the test if the expression is true.\"\n        if expr:\n            msg = self._formatMessage(msg, \"%s is not False\" % safe_repr(expr))\n            raise self.failureException(msg)\n\n    def assertTrue(self, expr, msg=None):\n        \"\"\"Fail the test unless the expression is true.\"\"\"\n        if not expr:\n            msg = self._formatMessage(msg, \"%s is not True\" % safe_repr(expr))\n            raise self.failureException(msg)\n\n    def _formatMessage(self, msg, standardMsg):\n        \"\"\"Honour the longMessage attribute when generating failure messages.\n        If longMessage is False this means:\n        * Use only an explicit message if it is provided\n        * Otherwise use the standard message for the assert\n\n        If longMessage is True:\n        * Use the standard message\n        * If an explicit message is provided, plus ' : ' and the explicit message\n        \"\"\"\n        if not self.longMessage:\n            return msg or standardMsg\n        if msg is None:\n            return standardMsg\n        try:\n            return '%s : %s' % (standardMsg, msg)\n        except UnicodeDecodeError:\n            return '%s : %s' % (safe_str(standardMsg), safe_str(msg))\n\n\n    def assertRaises(self, excClass, callableObj=None, *args, **kwargs):\n        \"\"\"Fail unless an exception of class excClass is thrown\n           by callableObj when invoked with arguments args and keyword\n           arguments kwargs. If a different type of exception is\n           thrown, it will not be caught, and the test case will be\n           deemed to have suffered an error, exactly as for an\n           unexpected exception.\n\n           If called with callableObj omitted or None, will return a\n           context object used like this::\n\n                with self.assertRaises(SomeException):\n                    do_something()\n\n           The context manager keeps a reference to the exception as\n           the 'exception' attribute. This allows you to inspect the\n           exception after the assertion::\n\n               with self.assertRaises(SomeException) as cm:\n                   do_something()\n               the_exception = cm.exception\n               self.assertEqual(the_exception.error_code, 3)\n        \"\"\"\n        if callableObj is None:\n            return _AssertRaisesContext(excClass, self)\n        try:\n            callableObj(*args, **kwargs)\n        except excClass:\n            return\n\n        if hasattr(excClass,'__name__'):\n            excName = excClass.__name__\n        else:\n            excName = str(excClass)\n        raise self.failureException(\"%s not raised\" % excName)\n\n    def _getAssertEqualityFunc(self, first, second):\n        \"\"\"Get a detailed comparison function for the types of the two args.\n\n        Returns: A callable accepting (first, second, msg=None) that will\n        raise a failure exception if first != second with a useful human\n        readable error message for those types.\n        \"\"\"\n        #\n        # NOTE(gregory.p.smith): I considered isinstance(first, type(second))\n        # and vice versa.  I opted for the conservative approach in case\n        # subclasses are not intended to be compared in detail to their super\n        # class instances using a type equality func.  This means testing\n        # subtypes won't automagically use the detailed comparison.  Callers\n        # should use their type specific assertSpamEqual method to compare\n        # subclasses if the detailed comparison is desired and appropriate.\n        # See the discussion in http://bugs.python.org/issue2578.\n        #\n        if type(first) is type(second):\n            asserter = self._type_equality_funcs.get(type(first))\n            if asserter is not None:\n                return asserter\n\n        return self._baseAssertEqual\n\n    def _baseAssertEqual(self, first, second, msg=None):\n        \"\"\"The default assertEqual implementation, not type specific.\"\"\"\n        if not first == second:\n            standardMsg = '%s != %s' % (safe_repr(first), safe_repr(second))\n            msg = self._formatMessage(msg, standardMsg)\n            raise self.failureException(msg)\n\n    def assertEqual(self, first, second, msg=None):\n        \"\"\"Fail if the two objects are unequal as determined by the '=='\n           operator.\n        \"\"\"\n        assertion_func = self._getAssertEqualityFunc(first, second)\n        assertion_func(first, second, msg=msg)\n\n    def assertNotEqual(self, first, second, msg=None):\n        \"\"\"Fail if the two objects are equal as determined by the '=='\n           operator.\n        \"\"\"\n        if not first != second:\n            msg = self._formatMessage(msg, '%s == %s' % (safe_repr(first),\n                                                           safe_repr(second)))\n            raise self.failureException(msg)\n\n    def assertAlmostEqual(self, first, second, places=None, msg=None, delta=None):\n        \"\"\"Fail if the two objects are unequal as determined by their\n           difference rounded to the given number of decimal places\n           (default 7) and comparing to zero, or by comparing that the\n           between the two objects is more than the given delta.\n\n           Note that decimal places (from zero) are usually not the same\n           as significant digits (measured from the most signficant digit).\n\n           If the two objects compare equal then they will automatically\n           compare almost equal.\n        \"\"\"\n        if first == second:\n            # shortcut\n            return\n        if delta is not None and places is not None:\n            raise TypeError(\"specify delta or places not both\")\n\n        if delta is not None:\n            if abs(first - second) <= delta:\n                return\n\n            standardMsg = '%s != %s within %s delta' % (safe_repr(first),\n                                                        safe_repr(second),\n                                                        safe_repr(delta))\n        else:\n            if places is None:\n                places = 7\n\n            if round(abs(second-first), places) == 0:\n                return\n\n            standardMsg = '%s != %s within %r places' % (safe_repr(first),\n                                                          safe_repr(second),\n                                                          places)\n        msg = self._formatMessage(msg, standardMsg)\n        raise self.failureException(msg)\n\n    def assertNotAlmostEqual(self, first, second, places=None, msg=None, delta=None):\n        \"\"\"Fail if the two objects are equal as determined by their\n           difference rounded to the given number of decimal places\n           (default 7) and comparing to zero, or by comparing that the\n           between the two objects is less than the given delta.\n\n           Note that decimal places (from zero) are usually not the same\n           as significant digits (measured from the most signficant digit).\n\n           Objects that are equal automatically fail.\n        \"\"\"\n        if delta is not None and places is not None:\n            raise TypeError(\"specify delta or places not both\")\n        if delta is not None:\n            if not (first == second) and abs(first - second) > delta:\n                return\n            standardMsg = '%s == %s within %s delta' % (safe_repr(first),\n                                                        safe_repr(second),\n                                                        safe_repr(delta))\n        else:\n            if places is None:\n                places = 7\n            if not (first == second) and round(abs(second-first), places) != 0:\n                return\n            standardMsg = '%s == %s within %r places' % (safe_repr(first),\n                                                         safe_repr(second),\n                                                         places)\n\n        msg = self._formatMessage(msg, standardMsg)\n        raise self.failureException(msg)\n\n    # Synonyms for assertion methods\n\n    # The plurals are undocumented.  Keep them that way to discourage use.\n    # Do not add more.  Do not remove.\n    # Going through a deprecation cycle on these would annoy many people.\n    assertEquals = assertEqual\n    assertNotEquals = assertNotEqual\n    assertAlmostEquals = assertAlmostEqual\n    assertNotAlmostEquals = assertNotAlmostEqual\n    assert_ = assertTrue\n\n    # These fail* assertion method names are pending deprecation and will\n    # be a DeprecationWarning in 3.2; http://bugs.python.org/issue2578\n    def _deprecate(original_func):\n        def deprecated_func(*args, **kwargs):\n            warnings.warn(\n                ('Please use %s instead.' % original_func.__name__),\n                PendingDeprecationWarning, 2)\n            return original_func(*args, **kwargs)\n        return deprecated_func\n\n    failUnlessEqual = _deprecate(assertEqual)\n    failIfEqual = _deprecate(assertNotEqual)\n    failUnlessAlmostEqual = _deprecate(assertAlmostEqual)\n    failIfAlmostEqual = _deprecate(assertNotAlmostEqual)\n    failUnless = _deprecate(assertTrue)\n    failUnlessRaises = _deprecate(assertRaises)\n    failIf = _deprecate(assertFalse)\n\n    def assertSequenceEqual(self, seq1, seq2,\n                            msg=None, seq_type=None, max_diff=80*8):\n        \"\"\"An equality assertion for ordered sequences (like lists and tuples).\n\n        For the purposes of this function, a valid ordered sequence type is one\n        which can be indexed, has a length, and has an equality operator.\n\n        Args:\n            seq1: The first sequence to compare.\n            seq2: The second sequence to compare.\n            seq_type: The expected datatype of the sequences, or None if no\n                    datatype should be enforced.\n            msg: Optional message to use on failure instead of a list of\n                    differences.\n            max_diff: Maximum size off the diff, larger diffs are not shown\n        \"\"\"\n        if seq_type is not None:\n            seq_type_name = seq_type.__name__\n            if not isinstance(seq1, seq_type):\n                raise self.failureException('First sequence is not a %s: %s'\n                                            % (seq_type_name, safe_repr(seq1)))\n            if not isinstance(seq2, seq_type):\n                raise self.failureException('Second sequence is not a %s: %s'\n                                            % (seq_type_name, safe_repr(seq2)))\n        else:\n            seq_type_name = \"sequence\"\n\n        differing = None\n        try:\n            len1 = len(seq1)\n        except (TypeError, NotImplementedError):\n            differing = 'First %s has no length.    Non-sequence?' % (\n                    seq_type_name)\n\n        if differing is None:\n            try:\n                len2 = len(seq2)\n            except (TypeError, NotImplementedError):\n                differing = 'Second %s has no length.    Non-sequence?' % (\n                        seq_type_name)\n\n        if differing is None:\n            if seq1 == seq2:\n                return\n\n            seq1_repr = repr(seq1)\n            seq2_repr = repr(seq2)\n            if len(seq1_repr) > 30:\n                seq1_repr = seq1_repr[:30] + '...'\n            if len(seq2_repr) > 30:\n                seq2_repr = seq2_repr[:30] + '...'\n            elements = (seq_type_name.capitalize(), seq1_repr, seq2_repr)\n            differing = '%ss differ: %s != %s\\n' % elements\n\n            for i in xrange(min(len1, len2)):\n                try:\n                    item1 = seq1[i]\n                except (TypeError, IndexError, NotImplementedError):\n                    differing += ('\\nUnable to index element %d of first %s\\n' %\n                                 (i, seq_type_name))\n                    break\n\n                try:\n                    item2 = seq2[i]\n                except (TypeError, IndexError, NotImplementedError):\n                    differing += ('\\nUnable to index element %d of second %s\\n' %\n                                 (i, seq_type_name))\n                    break\n\n                if item1 != item2:\n                    differing += ('\\nFirst differing element %d:\\n%s\\n%s\\n' %\n                                 (i, item1, item2))\n                    break\n            else:\n                if (len1 == len2 and seq_type is None and\n                    type(seq1) != type(seq2)):\n                    # The sequences are the same, but have differing types.\n                    return\n\n            if len1 > len2:\n                differing += ('\\nFirst %s contains %d additional '\n                             'elements.\\n' % (seq_type_name, len1 - len2))\n                try:\n                    differing += ('First extra element %d:\\n%s\\n' %\n                                  (len2, seq1[len2]))\n                except (TypeError, IndexError, NotImplementedError):\n                    differing += ('Unable to index element %d '\n                                  'of first %s\\n' % (len2, seq_type_name))\n            elif len1 < len2:\n                differing += ('\\nSecond %s contains %d additional '\n                             'elements.\\n' % (seq_type_name, len2 - len1))\n                try:\n                    differing += ('First extra element %d:\\n%s\\n' %\n                                  (len1, seq2[len1]))\n                except (TypeError, IndexError, NotImplementedError):\n                    differing += ('Unable to index element %d '\n                                  'of second %s\\n' % (len1, seq_type_name))\n        standardMsg = differing\n        diffMsg = '\\n' + '\\n'.join(\n            difflib.ndiff(pprint.pformat(seq1).splitlines(),\n                          pprint.pformat(seq2).splitlines()))\n\n        standardMsg = self._truncateMessage(standardMsg, diffMsg)\n        msg = self._formatMessage(msg, standardMsg)\n        self.fail(msg)\n\n    def _truncateMessage(self, message, diff):\n        max_diff = self.maxDiff\n        if max_diff is None or len(diff) <= max_diff:\n            return message + diff\n        return message + (DIFF_OMITTED % len(diff))\n\n    def assertListEqual(self, list1, list2, msg=None):\n        \"\"\"A list-specific equality assertion.\n\n        Args:\n            list1: The first list to compare.\n            list2: The second list to compare.\n            msg: Optional message to use on failure instead of a list of\n                    differences.\n\n        \"\"\"\n        self.assertSequenceEqual(list1, list2, msg, seq_type=list)\n\n    def assertTupleEqual(self, tuple1, tuple2, msg=None):\n        \"\"\"A tuple-specific equality assertion.\n\n        Args:\n            tuple1: The first tuple to compare.\n            tuple2: The second tuple to compare.\n            msg: Optional message to use on failure instead of a list of\n                    differences.\n        \"\"\"\n        self.assertSequenceEqual(tuple1, tuple2, msg, seq_type=tuple)\n\n    def assertSetEqual(self, set1, set2, msg=None):\n        \"\"\"A set-specific equality assertion.\n\n        Args:\n            set1: The first set to compare.\n            set2: The second set to compare.\n            msg: Optional message to use on failure instead of a list of\n                    differences.\n\n        assertSetEqual uses ducktyping to support\n        different types of sets, and is optimized for sets specifically\n        (parameters must support a difference method).\n        \"\"\"\n        try:\n            difference1 = set1.difference(set2)\n        except TypeError as e:\n            self.fail('invalid type when attempting set difference: %s' % e)\n        except AttributeError as e:\n            self.fail('first argument does not support set difference: %s' % e)\n\n        try:\n            difference2 = set2.difference(set1)\n        except TypeError as e:\n            self.fail('invalid type when attempting set difference: %s' % e)\n        except AttributeError as e:\n            self.fail('second argument does not support set difference: %s' % e)\n\n        if not (difference1 or difference2):\n            return\n\n        lines = []\n        if difference1:\n            lines.append('Items in the first set but not the second:')\n            for item in difference1:\n                lines.append(repr(item))\n        if difference2:\n            lines.append('Items in the second set but not the first:')\n            for item in difference2:\n                lines.append(repr(item))\n\n        standardMsg = '\\n'.join(lines)\n        self.fail(self._formatMessage(msg, standardMsg))\n\n    def assertIn(self, member, container, msg=None):\n        \"\"\"Just like self.assertTrue(a in b), but with a nicer default message.\"\"\"\n        if member not in container:\n            standardMsg = '%s not found in %s' % (safe_repr(member),\n                                                   safe_repr(container))\n            self.fail(self._formatMessage(msg, standardMsg))\n\n    def assertNotIn(self, member, container, msg=None):\n        \"\"\"Just like self.assertTrue(a not in b), but with a nicer default message.\"\"\"\n        if member in container:\n            standardMsg = '%s unexpectedly found in %s' % (safe_repr(member),\n                                                            safe_repr(container))\n            self.fail(self._formatMessage(msg, standardMsg))\n\n    def assertIs(self, expr1, expr2, msg=None):\n        \"\"\"Just like self.assertTrue(a is b), but with a nicer default message.\"\"\"\n        if expr1 is not expr2:\n            standardMsg = '%s is not %s' % (safe_repr(expr1), safe_repr(expr2))\n            self.fail(self._formatMessage(msg, standardMsg))\n\n    def assertIsNot(self, expr1, expr2, msg=None):\n        \"\"\"Just like self.assertTrue(a is not b), but with a nicer default message.\"\"\"\n        if expr1 is expr2:\n            standardMsg = 'unexpectedly identical: %s' % (safe_repr(expr1),)\n            self.fail(self._formatMessage(msg, standardMsg))\n\n    def assertDictEqual(self, d1, d2, msg=None):\n        self.assertTrue(isinstance(d1, dict), 'First argument is not a dictionary')\n        self.assertTrue(isinstance(d2, dict), 'Second argument is not a dictionary')\n\n        if d1 != d2:\n            standardMsg = '%s != %s' % (safe_repr(d1, True), safe_repr(d2, True))\n            diff = ('\\n' + '\\n'.join(difflib.ndiff(\n                           pprint.pformat(d1).splitlines(),\n                           pprint.pformat(d2).splitlines())))\n            standardMsg = self._truncateMessage(standardMsg, diff)\n            self.fail(self._formatMessage(msg, standardMsg))\n\n    def assertDictContainsSubset(self, expected, actual, msg=None):\n        \"\"\"Checks whether actual is a superset of expected.\"\"\"\n        missing = []\n        mismatched = []\n        for key, value in expected.iteritems():\n            if key not in actual:\n                missing.append(key)\n            elif value != actual[key]:\n                mismatched.append('%s, expected: %s, actual: %s' %\n                                  (safe_repr(key), safe_repr(value),\n                                   safe_repr(actual[key])))\n\n        if not (missing or mismatched):\n            return\n\n        standardMsg = ''\n        if missing:\n            standardMsg = 'Missing: %s' % ','.join(safe_repr(m) for m in\n                                                    missing)\n        if mismatched:\n            if standardMsg:\n                standardMsg += '; '\n            standardMsg += 'Mismatched values: %s' % ','.join(mismatched)\n\n        self.fail(self._formatMessage(msg, standardMsg))\n\n    def assertItemsEqual(self, expected_seq, actual_seq, msg=None):\n        \"\"\"An unordered sequence specific comparison. It asserts that\n        expected_seq and actual_seq contain the same elements. It is\n        the equivalent of::\n\n            self.assertEqual(sorted(expected_seq), sorted(actual_seq))\n\n        Raises with an error message listing which elements of expected_seq\n        are missing from actual_seq and vice versa if any.\n\n        Asserts that each element has the same count in both sequences.\n        Example:\n            - [0, 1, 1] and [1, 0, 1] compare equal.\n            - [0, 0, 1] and [0, 1] compare unequal.\n        \"\"\"\n        try:\n            expected = sorted(expected_seq)\n            actual = sorted(actual_seq)\n        except TypeError:\n            # Unsortable items (example: set(), complex(), ...)\n            expected = list(expected_seq)\n            actual = list(actual_seq)\n            missing, unexpected = unorderable_list_difference(\n                expected, actual, ignore_duplicate=False\n            )\n        else:\n            return self.assertSequenceEqual(expected, actual, msg=msg)\n\n        errors = []\n        if missing:\n            errors.append('Expected, but missing:\\n    %s' %\n                           safe_repr(missing))\n        if unexpected:\n            errors.append('Unexpected, but present:\\n    %s' %\n                           safe_repr(unexpected))\n        if errors:\n            standardMsg = '\\n'.join(errors)\n            self.fail(self._formatMessage(msg, standardMsg))\n\n    def assertMultiLineEqual(self, first, second, msg=None):\n        \"\"\"Assert that two multi-line strings are equal.\"\"\"\n        self.assertTrue(isinstance(first, basestring), (\n                'First argument is not a string'))\n        self.assertTrue(isinstance(second, basestring), (\n                'Second argument is not a string'))\n\n        if first != second:\n            standardMsg = '%s != %s' % (safe_repr(first, True), safe_repr(second, True))\n            diff = '\\n' + ''.join(difflib.ndiff(first.splitlines(True),\n                                                       second.splitlines(True)))\n            standardMsg = self._truncateMessage(standardMsg, diff)\n            self.fail(self._formatMessage(msg, standardMsg))\n\n    def assertLess(self, a, b, msg=None):\n        \"\"\"Just like self.assertTrue(a < b), but with a nicer default message.\"\"\"\n        if not a < b:\n            standardMsg = '%s not less than %s' % (safe_repr(a), safe_repr(b))\n            self.fail(self._formatMessage(msg, standardMsg))\n\n    def assertLessEqual(self, a, b, msg=None):\n        \"\"\"Just like self.assertTrue(a <= b), but with a nicer default message.\"\"\"\n        if not a <= b:\n            standardMsg = '%s not less than or equal to %s' % (safe_repr(a), safe_repr(b))\n            self.fail(self._formatMessage(msg, standardMsg))\n\n    def assertGreater(self, a, b, msg=None):\n        \"\"\"Just like self.assertTrue(a > b), but with a nicer default message.\"\"\"\n        if not a > b:\n            standardMsg = '%s not greater than %s' % (safe_repr(a), safe_repr(b))\n            self.fail(self._formatMessage(msg, standardMsg))\n\n    def assertGreaterEqual(self, a, b, msg=None):\n        \"\"\"Just like self.assertTrue(a >= b), but with a nicer default message.\"\"\"\n        if not a >= b:\n            standardMsg = '%s not greater than or equal to %s' % (safe_repr(a), safe_repr(b))\n            self.fail(self._formatMessage(msg, standardMsg))\n\n    def assertIsNone(self, obj, msg=None):\n        \"\"\"Same as self.assertTrue(obj is None), with a nicer default message.\"\"\"\n        if obj is not None:\n            standardMsg = '%s is not None' % (safe_repr(obj),)\n            self.fail(self._formatMessage(msg, standardMsg))\n\n    def assertIsNotNone(self, obj, msg=None):\n        \"\"\"Included for symmetry with assertIsNone.\"\"\"\n        if obj is None:\n            standardMsg = 'unexpectedly None'\n            self.fail(self._formatMessage(msg, standardMsg))\n\n    def assertIsInstance(self, obj, cls, msg=None):\n        \"\"\"Same as self.assertTrue(isinstance(obj, cls)), with a nicer\n        default message.\"\"\"\n        if not isinstance(obj, cls):\n            standardMsg = '%s is not an instance of %r' % (safe_repr(obj), cls)\n            self.fail(self._formatMessage(msg, standardMsg))\n\n    def assertNotIsInstance(self, obj, cls, msg=None):\n        \"\"\"Included for symmetry with assertIsInstance.\"\"\"\n        if isinstance(obj, cls):\n            standardMsg = '%s is an instance of %r' % (safe_repr(obj), cls)\n            self.fail(self._formatMessage(msg, standardMsg))\n\n    def assertRaisesRegexp(self, expected_exception, expected_regexp,\n                           callable_obj=None, *args, **kwargs):\n        \"\"\"Asserts that the message in a raised exception matches a regexp.\n\n        Args:\n            expected_exception: Exception class expected to be raised.\n            expected_regexp: Regexp (re pattern object or string) expected\n                    to be found in error message.\n            callable_obj: Function to be called.\n            args: Extra args.\n            kwargs: Extra kwargs.\n        \"\"\"\n        if callable_obj is None:\n            return _AssertRaisesContext(expected_exception, self, expected_regexp)\n        try:\n            callable_obj(*args, **kwargs)\n        except expected_exception as exc_value:\n            if isinstance(expected_regexp, basestring):\n                expected_regexp = re.compile(expected_regexp)\n            if not expected_regexp.search(str(exc_value)):\n                raise self.failureException('\"%s\" does not match \"%s\"' %\n                         (expected_regexp.pattern, str(exc_value)))\n        else:\n            if hasattr(expected_exception, '__name__'):\n                excName = expected_exception.__name__\n            else:\n                excName = str(expected_exception)\n            raise self.failureException(\"%s not raised\" % excName)\n\n    def assertRegexpMatches(self, text, expected_regexp, msg=None):\n        \"\"\"Fail the test unless the text matches the regular expression.\"\"\"\n        if isinstance(expected_regexp, basestring):\n            expected_regexp = re.compile(expected_regexp)\n        if not expected_regexp.search(text):\n            msg = msg or \"Regexp didn't match\"\n            msg = '%s: %r not found in %r' % (msg, expected_regexp.pattern, text)\n            raise self.failureException(msg)\n\n    def assertNotRegexpMatches(self, text, unexpected_regexp, msg=None):\n        \"\"\"Fail the test if the text matches the regular expression.\"\"\"\n        if isinstance(unexpected_regexp, basestring):\n            unexpected_regexp = re.compile(unexpected_regexp)\n        match = unexpected_regexp.search(text)\n        if match:\n            msg = msg or \"Regexp matched\"\n            msg = '%s: %r matches %r in %r' % (msg,\n                                               text[match.start():match.end()],\n                                               unexpected_regexp.pattern,\n                                               text)\n            raise self.failureException(msg)\n\nclass FunctionTestCase(TestCase):\n    \"\"\"A test case that wraps a test function.\n\n    This is useful for slipping pre-existing test functions into the\n    unittest framework. Optionally, set-up and tidy-up functions can be\n    supplied. As with TestCase, the tidy-up ('tearDown') function will\n    always be called if the set-up ('setUp') function ran successfully.\n    \"\"\"\n\n    def __init__(self, testFunc, setUp=None, tearDown=None, description=None):\n        super(FunctionTestCase, self).__init__()\n        self._setUpFunc = setUp\n        self._tearDownFunc = tearDown\n        self._testFunc = testFunc\n        self._description = description\n\n    def setUp(self):\n        if self._setUpFunc is not None:\n            self._setUpFunc()\n\n    def tearDown(self):\n        if self._tearDownFunc is not None:\n            self._tearDownFunc()\n\n    def runTest(self):\n        self._testFunc()\n\n    def id(self):\n        return self._testFunc.__name__\n\n    def __eq__(self, other):\n        if not isinstance(other, self.__class__):\n            return NotImplemented\n\n        return self._setUpFunc == other._setUpFunc and \\\n               self._tearDownFunc == other._tearDownFunc and \\\n               self._testFunc == other._testFunc and \\\n               self._description == other._description\n\n    def __ne__(self, other):\n        return not self == other\n\n    def __hash__(self):\n        return hash((type(self), self._setUpFunc, self._tearDownFunc,\n                     self._testFunc, self._description))\n\n    def __str__(self):\n        return \"%s (%s)\" % (strclass(self.__class__),\n                            self._testFunc.__name__)\n\n    def __repr__(self):\n        return \"<%s testFunc=%s>\" % (strclass(self.__class__),\n                                     self._testFunc)\n\n    def shortDescription(self):\n        if self._description is not None:\n            return self._description\n        doc = self._testFunc.__doc__\n        return doc and doc.split(\"\\n\")[0].strip() or None\n"
  },
  {
    "path": "Django-1.5.1/django/utils/unittest/collector.py",
    "content": "import os\nimport sys\nfrom django.utils.unittest.loader import defaultTestLoader\n\ndef collector():\n    # import __main__ triggers code re-execution\n    __main__ = sys.modules['__main__']\n    setupDir = os.path.abspath(os.path.dirname(__main__.__file__))\n    return defaultTestLoader.discover(setupDir)\n"
  },
  {
    "path": "Django-1.5.1/django/utils/unittest/compatibility.py",
    "content": "import os\nimport sys\n\ntry:\n    from functools import wraps\nexcept ImportError:\n    # only needed for Python 2.4\n    def wraps(_):\n        def _wraps(func):\n            return func\n        return _wraps\n\n__unittest = True\n\ndef _relpath_nt(path, start=os.path.curdir):\n    \"\"\"Return a relative version of a path\"\"\"\n\n    if not path:\n        raise ValueError(\"no path specified\")\n    start_list = os.path.abspath(start).split(os.path.sep)\n    path_list = os.path.abspath(path).split(os.path.sep)\n    if start_list[0].lower() != path_list[0].lower():\n        unc_path, rest = os.path.splitunc(path)\n        unc_start, rest = os.path.splitunc(start)\n        if bool(unc_path) ^ bool(unc_start):\n            raise ValueError(\"Cannot mix UNC and non-UNC paths (%s and %s)\"\n                                                                % (path, start))\n        else:\n            raise ValueError(\"path is on drive %s, start on drive %s\"\n                                                % (path_list[0], start_list[0]))\n    # Work out how much of the filepath is shared by start and path.\n    for i in range(min(len(start_list), len(path_list))):\n        if start_list[i].lower() != path_list[i].lower():\n            break\n    else:\n        i += 1\n\n    rel_list = [os.path.pardir] * (len(start_list)-i) + path_list[i:]\n    if not rel_list:\n        return os.path.curdir\n    return os.path.join(*rel_list)\n\n# default to posixpath definition\ndef _relpath_posix(path, start=os.path.curdir):\n    \"\"\"Return a relative version of a path\"\"\"\n\n    if not path:\n        raise ValueError(\"no path specified\")\n\n    start_list = os.path.abspath(start).split(os.path.sep)\n    path_list = os.path.abspath(path).split(os.path.sep)\n\n    # Work out how much of the filepath is shared by start and path.\n    i = len(os.path.commonprefix([start_list, path_list]))\n\n    rel_list = [os.path.pardir] * (len(start_list)-i) + path_list[i:]\n    if not rel_list:\n        return os.path.curdir\n    return os.path.join(*rel_list)\n\nif os.path is sys.modules.get('ntpath'):\n    relpath = _relpath_nt\nelse:\n    relpath = _relpath_posix\n"
  },
  {
    "path": "Django-1.5.1/django/utils/unittest/loader.py",
    "content": "\"\"\"Loading unittests.\"\"\"\n\nimport os\nimport re\nimport sys\nimport traceback\nimport types\nimport unittest\n\nfrom fnmatch import fnmatch\n\nfrom django.utils.unittest import case, suite\n\ntry:\n    from os.path import relpath\nexcept ImportError:\n    from django.utils.unittest.compatibility import relpath\n\n__unittest = True\n\n\ndef _CmpToKey(mycmp):\n    'Convert a cmp= function into a key= function'\n    class K(object):\n        def __init__(self, obj):\n            self.obj = obj\n        def __lt__(self, other):\n            return mycmp(self.obj, other.obj) == -1\n    return K\n\n\n# what about .pyc or .pyo (etc)\n# we would need to avoid loading the same tests multiple times\n# from '.py', '.pyc' *and* '.pyo'\nVALID_MODULE_NAME = re.compile(r'[_a-z]\\w*\\.py$', re.IGNORECASE)\n\n\ndef _make_failed_import_test(name, suiteClass):\n    message = 'Failed to import test module: %s' % name\n    if hasattr(traceback, 'format_exc'):\n        # Python 2.3 compatibility\n        # format_exc returns two frames of discover.py as well\n        message += '\\n%s' % traceback.format_exc()\n    return _make_failed_test('ModuleImportFailure', name, ImportError(message),\n                             suiteClass)\n\ndef _make_failed_load_tests(name, exception, suiteClass):\n    return _make_failed_test('LoadTestsFailure', name, exception, suiteClass)\n\ndef _make_failed_test(classname, methodname, exception, suiteClass):\n    def testFailure(self):\n        raise exception\n    attrs = {methodname: testFailure}\n    TestClass = type(classname, (case.TestCase,), attrs)\n    return suiteClass((TestClass(methodname),))\n\n\nclass TestLoader(unittest.TestLoader):\n    \"\"\"\n    This class is responsible for loading tests according to various criteria\n    and returning them wrapped in a TestSuite\n    \"\"\"\n    testMethodPrefix = 'test'\n    sortTestMethodsUsing = cmp\n    suiteClass = suite.TestSuite\n    _top_level_dir = None\n\n    def loadTestsFromTestCase(self, testCaseClass):\n        \"\"\"Return a suite of all tests cases contained in testCaseClass\"\"\"\n        if issubclass(testCaseClass, suite.TestSuite):\n            raise TypeError(\"Test cases should not be derived from TestSuite.\"\n                            \" Maybe you meant to derive from TestCase?\")\n        testCaseNames = self.getTestCaseNames(testCaseClass)\n        if not testCaseNames and hasattr(testCaseClass, 'runTest'):\n            testCaseNames = ['runTest']\n        loaded_suite = self.suiteClass(map(testCaseClass, testCaseNames))\n        return loaded_suite\n\n    def loadTestsFromModule(self, module, use_load_tests=True):\n        \"\"\"Return a suite of all tests cases contained in the given module\"\"\"\n        tests = []\n        for name in dir(module):\n            obj = getattr(module, name)\n            if isinstance(obj, type) and issubclass(obj, unittest.TestCase):\n                tests.append(self.loadTestsFromTestCase(obj))\n\n        load_tests = getattr(module, 'load_tests', None)\n        tests = self.suiteClass(tests)\n        if use_load_tests and load_tests is not None:\n            try:\n                return load_tests(self, tests, None)\n            except Exception as e:\n                return _make_failed_load_tests(module.__name__, e,\n                                               self.suiteClass)\n        return tests\n\n    def loadTestsFromName(self, name, module=None):\n        \"\"\"Return a suite of all tests cases given a string specifier.\n\n        The name may resolve either to a module, a test case class, a\n        test method within a test case class, or a callable object which\n        returns a TestCase or TestSuite instance.\n\n        The method optionally resolves the names relative to a given module.\n        \"\"\"\n        parts = name.split('.')\n        if module is None:\n            parts_copy = parts[:]\n            while parts_copy:\n                try:\n                    module = __import__('.'.join(parts_copy))\n                    break\n                except ImportError:\n                    del parts_copy[-1]\n                    if not parts_copy:\n                        raise\n            parts = parts[1:]\n        obj = module\n        for part in parts:\n            parent, obj = obj, getattr(obj, part)\n\n        if isinstance(obj, types.ModuleType):\n            return self.loadTestsFromModule(obj)\n        elif isinstance(obj, type) and issubclass(obj, unittest.TestCase):\n            return self.loadTestsFromTestCase(obj)\n        elif (isinstance(obj, types.UnboundMethodType) and\n              isinstance(parent, type) and\n              issubclass(parent, case.TestCase)):\n            return self.suiteClass([parent(obj.__name__)])\n        elif isinstance(obj, unittest.TestSuite):\n            return obj\n        elif hasattr(obj, '__call__'):\n            test = obj()\n            if isinstance(test, unittest.TestSuite):\n                return test\n            elif isinstance(test, unittest.TestCase):\n                return self.suiteClass([test])\n            else:\n                raise TypeError(\"calling %s returned %s, not a test\" %\n                                (obj, test))\n        else:\n            raise TypeError(\"don't know how to make test from: %s\" % obj)\n\n    def loadTestsFromNames(self, names, module=None):\n        \"\"\"Return a suite of all tests cases found using the given sequence\n        of string specifiers. See 'loadTestsFromName()'.\n        \"\"\"\n        suites = [self.loadTestsFromName(name, module) for name in names]\n        return self.suiteClass(suites)\n\n    def getTestCaseNames(self, testCaseClass):\n        \"\"\"Return a sorted sequence of method names found within testCaseClass\n        \"\"\"\n        def isTestMethod(attrname, testCaseClass=testCaseClass,\n                         prefix=self.testMethodPrefix):\n            return attrname.startswith(prefix) and \\\n                hasattr(getattr(testCaseClass, attrname), '__call__')\n        testFnNames = filter(isTestMethod, dir(testCaseClass))\n        if self.sortTestMethodsUsing:\n            testFnNames.sort(key=_CmpToKey(self.sortTestMethodsUsing))\n        return testFnNames\n\n    def discover(self, start_dir, pattern='test*.py', top_level_dir=None):\n        \"\"\"Find and return all test modules from the specified start\n        directory, recursing into subdirectories to find them. Only test files\n        that match the pattern will be loaded. (Using shell style pattern\n        matching.)\n\n        All test modules must be importable from the top level of the project.\n        If the start directory is not the top level directory then the top\n        level directory must be specified separately.\n\n        If a test package name (directory with '__init__.py') matches the\n        pattern then the package will be checked for a 'load_tests' function. If\n        this exists then it will be called with loader, tests, pattern.\n\n        If load_tests exists then discovery does  *not* recurse into the package,\n        load_tests is responsible for loading all tests in the package.\n\n        The pattern is deliberately not stored as a loader attribute so that\n        packages can continue discovery themselves. top_level_dir is stored so\n        load_tests does not need to pass this argument in to loader.discover().\n        \"\"\"\n        set_implicit_top = False\n        if top_level_dir is None and self._top_level_dir is not None:\n            # make top_level_dir optional if called from load_tests in a package\n            top_level_dir = self._top_level_dir\n        elif top_level_dir is None:\n            set_implicit_top = True\n            top_level_dir = start_dir\n\n        top_level_dir = os.path.abspath(top_level_dir)\n\n        if not top_level_dir in sys.path:\n            # all test modules must be importable from the top level directory\n            # should we *unconditionally* put the start directory in first\n            # in sys.path to minimise likelihood of conflicts between installed\n            # modules and development versions?\n            sys.path.insert(0, top_level_dir)\n        self._top_level_dir = top_level_dir\n\n        is_not_importable = False\n        if os.path.isdir(os.path.abspath(start_dir)):\n            start_dir = os.path.abspath(start_dir)\n            if start_dir != top_level_dir:\n                is_not_importable = not os.path.isfile(os.path.join(start_dir, '__init__.py'))\n        else:\n            # support for discovery from dotted module names\n            try:\n                __import__(start_dir)\n            except ImportError:\n                is_not_importable = True\n            else:\n                the_module = sys.modules[start_dir]\n                top_part = start_dir.split('.')[0]\n                start_dir = os.path.abspath(os.path.dirname((the_module.__file__)))\n                if set_implicit_top:\n                    self._top_level_dir = os.path.abspath(os.path.dirname(os.path.dirname(sys.modules[top_part].__file__)))\n                    sys.path.remove(top_level_dir)\n\n        if is_not_importable:\n            raise ImportError('Start directory is not importable: %r' % start_dir)\n\n        tests = list(self._find_tests(start_dir, pattern))\n        return self.suiteClass(tests)\n\n    def _get_name_from_path(self, path):\n        path = os.path.splitext(os.path.normpath(path))[0]\n\n        _relpath = relpath(path, self._top_level_dir)\n        assert not os.path.isabs(_relpath), \"Path must be within the project\"\n        assert not _relpath.startswith('..'), \"Path must be within the project\"\n\n        name = _relpath.replace(os.path.sep, '.')\n        return name\n\n    def _get_module_from_name(self, name):\n        __import__(name)\n        return sys.modules[name]\n\n    def _match_path(self, path, full_path, pattern):\n        # override this method to use alternative matching strategy\n        return fnmatch(path, pattern)\n\n    def _find_tests(self, start_dir, pattern):\n        \"\"\"Used by discovery. Yields test suites it loads.\"\"\"\n        paths = os.listdir(start_dir)\n\n        for path in paths:\n            full_path = os.path.join(start_dir, path)\n            if os.path.isfile(full_path):\n                if not VALID_MODULE_NAME.match(path):\n                    # valid Python identifiers only\n                    continue\n                if not self._match_path(path, full_path, pattern):\n                    continue\n                # if the test file matches, load it\n                name = self._get_name_from_path(full_path)\n                try:\n                    module = self._get_module_from_name(name)\n                except:\n                    yield _make_failed_import_test(name, self.suiteClass)\n                else:\n                    mod_file = os.path.abspath(getattr(module, '__file__', full_path))\n                    realpath = os.path.splitext(mod_file)[0]\n                    fullpath_noext = os.path.splitext(full_path)[0]\n                    if realpath.lower() != fullpath_noext.lower():\n                        module_dir = os.path.dirname(realpath)\n                        mod_name = os.path.splitext(os.path.basename(full_path))[0]\n                        expected_dir = os.path.dirname(full_path)\n                        msg = (\"%r module incorrectly imported from %r. Expected %r. \"\n                               \"Is this module globally installed?\")\n                        raise ImportError(msg % (mod_name, module_dir, expected_dir))\n                    yield self.loadTestsFromModule(module)\n            elif os.path.isdir(full_path):\n                if not os.path.isfile(os.path.join(full_path, '__init__.py')):\n                    continue\n\n                load_tests = None\n                tests = None\n                if fnmatch(path, pattern):\n                    # only check load_tests if the package directory itself matches the filter\n                    name = self._get_name_from_path(full_path)\n                    package = self._get_module_from_name(name)\n                    load_tests = getattr(package, 'load_tests', None)\n                    tests = self.loadTestsFromModule(package, use_load_tests=False)\n\n                if load_tests is None:\n                    if tests is not None:\n                        # tests loaded from package file\n                        yield tests\n                    # recurse into the package\n                    for test in self._find_tests(full_path, pattern):\n                        yield test\n                else:\n                    try:\n                        yield load_tests(self, tests, pattern)\n                    except Exception as e:\n                        yield _make_failed_load_tests(package.__name__, e,\n                                                      self.suiteClass)\n\ndefaultTestLoader = TestLoader()\n\n\ndef _makeLoader(prefix, sortUsing, suiteClass=None):\n    loader = TestLoader()\n    loader.sortTestMethodsUsing = sortUsing\n    loader.testMethodPrefix = prefix\n    if suiteClass:\n        loader.suiteClass = suiteClass\n    return loader\n\ndef getTestCaseNames(testCaseClass, prefix, sortUsing=cmp):\n    return _makeLoader(prefix, sortUsing).getTestCaseNames(testCaseClass)\n\ndef makeSuite(testCaseClass, prefix='test', sortUsing=cmp,\n              suiteClass=suite.TestSuite):\n    return _makeLoader(prefix, sortUsing, suiteClass).loadTestsFromTestCase(testCaseClass)\n\ndef findTestCases(module, prefix='test', sortUsing=cmp,\n                  suiteClass=suite.TestSuite):\n    return _makeLoader(prefix, sortUsing, suiteClass).loadTestsFromModule(module)\n"
  },
  {
    "path": "Django-1.5.1/django/utils/unittest/main.py",
    "content": "\"\"\"Unittest main program\"\"\"\n\nimport sys\nimport os\nimport types\n\nfrom django.utils.unittest import loader, runner\ntry:\n    from django.utils.unittest.signals import installHandler\nexcept ImportError:\n    installHandler = None\n\n__unittest = True\n\nFAILFAST     = \"  -f, --failfast   Stop on first failure\\n\"\nCATCHBREAK   = \"  -c, --catch      Catch control-C and display results\\n\"\nBUFFEROUTPUT = \"  -b, --buffer     Buffer stdout and stderr during test runs\\n\"\n\nUSAGE_AS_MAIN = \"\"\"\\\nUsage: %(progName)s [options] [tests]\n\nOptions:\n  -h, --help       Show this message\n  -v, --verbose    Verbose output\n  -q, --quiet      Minimal output\n%(failfast)s%(catchbreak)s%(buffer)s\nExamples:\n  %(progName)s test_module                       - run tests from test_module\n  %(progName)s test_module.TestClass             - run tests from\n                                                   test_module.TestClass\n  %(progName)s test_module.TestClass.test_method - run specified test method\n\n[tests] can be a list of any number of test modules, classes and test\nmethods.\n\nAlternative Usage: %(progName)s discover [options]\n\nOptions:\n  -v, --verbose    Verbose output\n%(failfast)s%(catchbreak)s%(buffer)s  -s directory     Directory to start discovery ('.' default)\n  -p pattern       Pattern to match test files ('test*.py' default)\n  -t directory     Top level directory of project (default to\n                   start directory)\n\nFor test discovery all test modules must be importable from the top\nlevel directory of the project.\n\"\"\"\n\nUSAGE_FROM_MODULE = \"\"\"\\\nUsage: %(progName)s [options] [test] [...]\n\nOptions:\n  -h, --help       Show this message\n  -v, --verbose    Verbose output\n  -q, --quiet      Minimal output\n%(failfast)s%(catchbreak)s%(buffer)s\nExamples:\n  %(progName)s                               - run default set of tests\n  %(progName)s MyTestSuite                   - run suite 'MyTestSuite'\n  %(progName)s MyTestCase.testSomething      - run MyTestCase.testSomething\n  %(progName)s MyTestCase                    - run all 'test*' test methods\n                                               in MyTestCase\n\"\"\"\n\n\nclass TestProgram(object):\n    \"\"\"A command-line program that runs a set of tests; this is primarily\n       for making test modules conveniently executable.\n    \"\"\"\n    USAGE = USAGE_FROM_MODULE\n\n    # defaults for testing\n    failfast = catchbreak = buffer = progName = None\n\n    def __init__(self, module='__main__', defaultTest=None,\n                 argv=None, testRunner=None,\n                 testLoader=loader.defaultTestLoader, exit=True,\n                 verbosity=1, failfast=None, catchbreak=None, buffer=None):\n        if isinstance(module, basestring):\n            self.module = __import__(module)\n            for part in module.split('.')[1:]:\n                self.module = getattr(self.module, part)\n        else:\n            self.module = module\n        if argv is None:\n            argv = sys.argv\n\n        self.exit = exit\n        self.verbosity = verbosity\n        self.failfast = failfast\n        self.catchbreak = catchbreak\n        self.buffer = buffer\n        self.defaultTest = defaultTest\n        self.testRunner = testRunner\n        self.testLoader = testLoader\n        self.progName = os.path.basename(argv[0])\n        self.parseArgs(argv)\n        self.runTests()\n\n    def usageExit(self, msg=None):\n        if msg:\n            print(msg)\n        usage = {'progName': self.progName, 'catchbreak': '', 'failfast': '',\n                 'buffer': ''}\n        if self.failfast != False:\n            usage['failfast'] = FAILFAST\n        if self.catchbreak != False and installHandler is not None:\n            usage['catchbreak'] = CATCHBREAK\n        if self.buffer != False:\n            usage['buffer'] = BUFFEROUTPUT\n        print(self.USAGE % usage)\n        sys.exit(2)\n\n    def parseArgs(self, argv):\n        if len(argv) > 1 and argv[1].lower() == 'discover':\n            self._do_discovery(argv[2:])\n            return\n\n        import getopt\n        long_opts = ['help', 'verbose', 'quiet', 'failfast', 'catch', 'buffer']\n        try:\n            options, args = getopt.getopt(argv[1:], 'hHvqfcb', long_opts)\n            for opt, value in options:\n                if opt in ('-h','-H','--help'):\n                    self.usageExit()\n                if opt in ('-q','--quiet'):\n                    self.verbosity = 0\n                if opt in ('-v','--verbose'):\n                    self.verbosity = 2\n                if opt in ('-f','--failfast'):\n                    if self.failfast is None:\n                        self.failfast = True\n                    # Should this raise an exception if -f is not valid?\n                if opt in ('-c','--catch'):\n                    if self.catchbreak is None and installHandler is not None:\n                        self.catchbreak = True\n                    # Should this raise an exception if -c is not valid?\n                if opt in ('-b','--buffer'):\n                    if self.buffer is None:\n                        self.buffer = True\n                    # Should this raise an exception if -b is not valid?\n            if len(args) == 0 and self.defaultTest is None:\n                # createTests will load tests from self.module\n                self.testNames = None\n            elif len(args) > 0:\n                self.testNames = args\n                if __name__ == '__main__':\n                    # to support python -m unittest ...\n                    self.module = None\n            else:\n                self.testNames = (self.defaultTest,)\n            self.createTests()\n        except getopt.error as msg:\n            self.usageExit(msg)\n\n    def createTests(self):\n        if self.testNames is None:\n            self.test = self.testLoader.loadTestsFromModule(self.module)\n        else:\n            self.test = self.testLoader.loadTestsFromNames(self.testNames,\n                                                           self.module)\n\n    def _do_discovery(self, argv, Loader=loader.TestLoader):\n        # handle command line args for test discovery\n        self.progName = '%s discover' % self.progName\n        import optparse\n        parser = optparse.OptionParser()\n        parser.prog = self.progName\n        parser.add_option('-v', '--verbose', dest='verbose', default=False,\n                          help='Verbose output', action='store_true')\n        if self.failfast != False:\n            parser.add_option('-f', '--failfast', dest='failfast', default=False,\n                              help='Stop on first fail or error',\n                              action='store_true')\n        if self.catchbreak != False and installHandler is not None:\n            parser.add_option('-c', '--catch', dest='catchbreak', default=False,\n                              help='Catch ctrl-C and display results so far',\n                              action='store_true')\n        if self.buffer != False:\n            parser.add_option('-b', '--buffer', dest='buffer', default=False,\n                              help='Buffer stdout and stderr during tests',\n                              action='store_true')\n        parser.add_option('-s', '--start-directory', dest='start', default='.',\n                          help=\"Directory to start discovery ('.' default)\")\n        parser.add_option('-p', '--pattern', dest='pattern', default='test*.py',\n                          help=\"Pattern to match tests ('test*.py' default)\")\n        parser.add_option('-t', '--top-level-directory', dest='top', default=None,\n                          help='Top level directory of project (defaults to start directory)')\n\n        options, args = parser.parse_args(argv)\n        if len(args) > 3:\n            self.usageExit()\n\n        for name, value in zip(('start', 'pattern', 'top'), args):\n            setattr(options, name, value)\n\n        # only set options from the parsing here\n        # if they weren't set explicitly in the constructor\n        if self.failfast is None:\n            self.failfast = options.failfast\n        if self.catchbreak is None and installHandler is not None:\n            self.catchbreak = options.catchbreak\n        if self.buffer is None:\n            self.buffer = options.buffer\n\n        if options.verbose:\n            self.verbosity = 2\n\n        start_dir = options.start\n        pattern = options.pattern\n        top_level_dir = options.top\n\n        loader = Loader()\n        self.test = loader.discover(start_dir, pattern, top_level_dir)\n\n    def runTests(self):\n        if self.catchbreak:\n            installHandler()\n        if self.testRunner is None:\n            self.testRunner = runner.TextTestRunner\n        if isinstance(self.testRunner, (type, types.ClassType)):\n            try:\n                testRunner = self.testRunner(verbosity=self.verbosity,\n                                             failfast=self.failfast,\n                                             buffer=self.buffer)\n            except TypeError:\n                # didn't accept the verbosity, buffer or failfast arguments\n                testRunner = self.testRunner()\n        else:\n            # it is assumed to be a TestRunner instance\n            testRunner = self.testRunner\n        self.result = testRunner.run(self.test)\n        if self.exit:\n            sys.exit(not self.result.wasSuccessful())\n\nmain = TestProgram\n\ndef main_():\n    TestProgram.USAGE = USAGE_AS_MAIN\n    main(module=None)\n\n"
  },
  {
    "path": "Django-1.5.1/django/utils/unittest/result.py",
    "content": "\"\"\"Test result object\"\"\"\n\nimport sys\nimport traceback\nimport unittest\n\nfrom StringIO import StringIO\n\nfrom django.utils.unittest import util\nfrom django.utils.unittest.compatibility import wraps\n\n__unittest = True\n\ndef failfast(method):\n    @wraps(method)\n    def inner(self, *args, **kw):\n        if getattr(self, 'failfast', False):\n            self.stop()\n        return method(self, *args, **kw)\n    return inner\n\n\nSTDOUT_LINE = '\\nStdout:\\n%s'\nSTDERR_LINE = '\\nStderr:\\n%s'\n\nclass TestResult(unittest.TestResult):\n    \"\"\"Holder for test result information.\n\n    Test results are automatically managed by the TestCase and TestSuite\n    classes, and do not need to be explicitly manipulated by writers of tests.\n\n    Each instance holds the total number of tests run, and collections of\n    failures and errors that occurred among those test runs. The collections\n    contain tuples of (testcase, exceptioninfo), where exceptioninfo is the\n    formatted traceback of the error that occurred.\n    \"\"\"\n    _previousTestClass = None\n    _moduleSetUpFailed = False\n\n    def __init__(self):\n        self.failfast = False\n        self.failures = []\n        self.errors = []\n        self.testsRun = 0\n        self.skipped = []\n        self.expectedFailures = []\n        self.unexpectedSuccesses = []\n        self.shouldStop = False\n        self.buffer = False\n        self._stdout_buffer = None\n        self._stderr_buffer = None\n        self._original_stdout = sys.stdout\n        self._original_stderr = sys.stderr\n        self._mirrorOutput = False\n\n    def startTest(self, test):\n        \"Called when the given test is about to be run\"\n        self.testsRun += 1\n        self._mirrorOutput = False\n        if self.buffer:\n            if self._stderr_buffer is None:\n                self._stderr_buffer = StringIO()\n                self._stdout_buffer = StringIO()\n            sys.stdout = self._stdout_buffer\n            sys.stderr = self._stderr_buffer\n\n    def startTestRun(self):\n        \"\"\"Called once before any tests are executed.\n\n        See startTest for a method called before each test.\n        \"\"\"\n\n    def stopTest(self, test):\n        \"\"\"Called when the given test has been run\"\"\"\n        if self.buffer:\n            if self._mirrorOutput:\n                output = sys.stdout.getvalue()\n                error = sys.stderr.getvalue()\n                if output:\n                    if not output.endswith('\\n'):\n                        output += '\\n'\n                    self._original_stdout.write(STDOUT_LINE % output)\n                if error:\n                    if not error.endswith('\\n'):\n                        error += '\\n'\n                    self._original_stderr.write(STDERR_LINE % error)\n\n            sys.stdout = self._original_stdout\n            sys.stderr = self._original_stderr\n            self._stdout_buffer.seek(0)\n            self._stdout_buffer.truncate()\n            self._stderr_buffer.seek(0)\n            self._stderr_buffer.truncate()\n        self._mirrorOutput = False\n\n\n    def stopTestRun(self):\n        \"\"\"Called once after all tests are executed.\n\n        See stopTest for a method called after each test.\n        \"\"\"\n\n    @failfast\n    def addError(self, test, err):\n        \"\"\"Called when an error has occurred. 'err' is a tuple of values as\n        returned by sys.exc_info().\n        \"\"\"\n        self.errors.append((test, self._exc_info_to_string(err, test)))\n        self._mirrorOutput = True\n\n    @failfast\n    def addFailure(self, test, err):\n        \"\"\"Called when an error has occurred. 'err' is a tuple of values as\n        returned by sys.exc_info().\"\"\"\n        self.failures.append((test, self._exc_info_to_string(err, test)))\n        self._mirrorOutput = True\n\n    def addSuccess(self, test):\n        \"Called when a test has completed successfully\"\n        pass\n\n    def addSkip(self, test, reason):\n        \"\"\"Called when a test is skipped.\"\"\"\n        self.skipped.append((test, reason))\n\n    def addExpectedFailure(self, test, err):\n        \"\"\"Called when an expected failure/error occured.\"\"\"\n        self.expectedFailures.append(\n            (test, self._exc_info_to_string(err, test)))\n\n    @failfast\n    def addUnexpectedSuccess(self, test):\n        \"\"\"Called when a test was expected to fail, but succeed.\"\"\"\n        self.unexpectedSuccesses.append(test)\n\n    def wasSuccessful(self):\n        \"Tells whether or not this result was a success\"\n        return (len(self.failures) + len(self.errors) == 0)\n\n    def stop(self):\n        \"Indicates that the tests should be aborted\"\n        self.shouldStop = True\n\n    def _exc_info_to_string(self, err, test):\n        \"\"\"Converts a sys.exc_info()-style tuple of values into a string.\"\"\"\n        exctype, value, tb = err\n        # Skip test runner traceback levels\n        while tb and self._is_relevant_tb_level(tb):\n            tb = tb.tb_next\n        if exctype is test.failureException:\n            # Skip assert*() traceback levels\n            length = self._count_relevant_tb_levels(tb)\n            msgLines = traceback.format_exception(exctype, value, tb, length)\n        else:\n            msgLines = traceback.format_exception(exctype, value, tb)\n\n        if self.buffer:\n            output = sys.stdout.getvalue()\n            error = sys.stderr.getvalue()\n            if output:\n                if not output.endswith('\\n'):\n                    output += '\\n'\n                msgLines.append(STDOUT_LINE % output)\n            if error:\n                if not error.endswith('\\n'):\n                    error += '\\n'\n                msgLines.append(STDERR_LINE % error)\n        return ''.join(msgLines)\n\n    def _is_relevant_tb_level(self, tb):\n        return '__unittest' in tb.tb_frame.f_globals\n\n    def _count_relevant_tb_levels(self, tb):\n        length = 0\n        while tb and not self._is_relevant_tb_level(tb):\n            length += 1\n            tb = tb.tb_next\n        return length\n\n    def __repr__(self):\n        return \"<%s run=%i errors=%i failures=%i>\" % \\\n               (util.strclass(self.__class__), self.testsRun, len(self.errors),\n                len(self.failures))\n"
  },
  {
    "path": "Django-1.5.1/django/utils/unittest/runner.py",
    "content": "\"\"\"Running tests\"\"\"\n\nimport sys\nimport time\nimport unittest\n\nfrom django.utils.unittest import result\n\ntry:\n    from django.utils.unittest.signals import registerResult\nexcept ImportError:\n    def registerResult(_):\n        pass\n\n__unittest = True\n\n\nclass _WritelnDecorator(object):\n    \"\"\"Used to decorate file-like objects with a handy 'writeln' method\"\"\"\n    def __init__(self,stream):\n        self.stream = stream\n\n    def __getattr__(self, attr):\n        if attr in ('stream', '__getstate__'):\n            raise AttributeError(attr)\n        return getattr(self.stream,attr)\n\n    def writeln(self, arg=None):\n        if arg:\n            self.write(arg)\n        self.write('\\n') # text-mode streams translate to \\r\\n if needed\n\n\nclass TextTestResult(result.TestResult):\n    \"\"\"A test result class that can print formatted text results to a stream.\n\n    Used by TextTestRunner.\n    \"\"\"\n    separator1 = '=' * 70\n    separator2 = '-' * 70\n\n    def __init__(self, stream, descriptions, verbosity):\n        super(TextTestResult, self).__init__()\n        self.stream = stream\n        self.showAll = verbosity > 1\n        self.dots = verbosity == 1\n        self.descriptions = descriptions\n\n    def getDescription(self, test):\n        doc_first_line = test.shortDescription()\n        if self.descriptions and doc_first_line:\n            return '\\n'.join((str(test), doc_first_line))\n        else:\n            return str(test)\n\n    def startTest(self, test):\n        super(TextTestResult, self).startTest(test)\n        if self.showAll:\n            self.stream.write(self.getDescription(test))\n            self.stream.write(\" ... \")\n            self.stream.flush()\n\n    def addSuccess(self, test):\n        super(TextTestResult, self).addSuccess(test)\n        if self.showAll:\n            self.stream.writeln(\"ok\")\n        elif self.dots:\n            self.stream.write('.')\n            self.stream.flush()\n\n    def addError(self, test, err):\n        super(TextTestResult, self).addError(test, err)\n        if self.showAll:\n            self.stream.writeln(\"ERROR\")\n        elif self.dots:\n            self.stream.write('E')\n            self.stream.flush()\n\n    def addFailure(self, test, err):\n        super(TextTestResult, self).addFailure(test, err)\n        if self.showAll:\n            self.stream.writeln(\"FAIL\")\n        elif self.dots:\n            self.stream.write('F')\n            self.stream.flush()\n\n    def addSkip(self, test, reason):\n        super(TextTestResult, self).addSkip(test, reason)\n        if self.showAll:\n            self.stream.writeln(\"skipped %r\" % (reason,))\n        elif self.dots:\n            self.stream.write(\"s\")\n            self.stream.flush()\n\n    def addExpectedFailure(self, test, err):\n        super(TextTestResult, self).addExpectedFailure(test, err)\n        if self.showAll:\n            self.stream.writeln(\"expected failure\")\n        elif self.dots:\n            self.stream.write(\"x\")\n            self.stream.flush()\n\n    def addUnexpectedSuccess(self, test):\n        super(TextTestResult, self).addUnexpectedSuccess(test)\n        if self.showAll:\n            self.stream.writeln(\"unexpected success\")\n        elif self.dots:\n            self.stream.write(\"u\")\n            self.stream.flush()\n\n    def printErrors(self):\n        if self.dots or self.showAll:\n            self.stream.writeln()\n        self.printErrorList('ERROR', self.errors)\n        self.printErrorList('FAIL', self.failures)\n\n    def printErrorList(self, flavour, errors):\n        for test, err in errors:\n            self.stream.writeln(self.separator1)\n            self.stream.writeln(\"%s: %s\" % (flavour, self.getDescription(test)))\n            self.stream.writeln(self.separator2)\n            self.stream.writeln(\"%s\" % err)\n\n    def stopTestRun(self):\n        super(TextTestResult, self).stopTestRun()\n        self.printErrors()\n\n\nclass TextTestRunner(unittest.TextTestRunner):\n    \"\"\"A test runner class that displays results in textual form.\n\n    It prints out the names of tests as they are run, errors as they\n    occur, and a summary of the results at the end of the test run.\n    \"\"\"\n    resultclass = TextTestResult\n\n    def __init__(self, stream=sys.stderr, descriptions=True, verbosity=1,\n                    failfast=False, buffer=False, resultclass=None):\n        self.stream = _WritelnDecorator(stream)\n        self.descriptions = descriptions\n        self.verbosity = verbosity\n        self.failfast = failfast\n        self.buffer = buffer\n        if resultclass is not None:\n            self.resultclass = resultclass\n\n    def _makeResult(self):\n        return self.resultclass(self.stream, self.descriptions, self.verbosity)\n\n    def run(self, test):\n        \"Run the given test case or test suite.\"\n        result = self._makeResult()\n        result.failfast = self.failfast\n        result.buffer = self.buffer\n        registerResult(result)\n\n        startTime = time.time()\n        startTestRun = getattr(result, 'startTestRun', None)\n        if startTestRun is not None:\n            startTestRun()\n        try:\n            test(result)\n        finally:\n            stopTestRun = getattr(result, 'stopTestRun', None)\n            if stopTestRun is not None:\n                stopTestRun()\n            else:\n                result.printErrors()\n        stopTime = time.time()\n        timeTaken = stopTime - startTime\n        if hasattr(result, 'separator2'):\n            self.stream.writeln(result.separator2)\n        run = result.testsRun\n        self.stream.writeln(\"Ran %d test%s in %.3fs\" %\n                            (run, run != 1 and \"s\" or \"\", timeTaken))\n        self.stream.writeln()\n\n        expectedFails = unexpectedSuccesses = skipped = 0\n        try:\n            results = map(len, (result.expectedFailures,\n                                result.unexpectedSuccesses,\n                                result.skipped))\n            expectedFails, unexpectedSuccesses, skipped = results\n        except AttributeError:\n            pass\n        infos = []\n        if not result.wasSuccessful():\n            self.stream.write(\"FAILED\")\n            failed, errored = map(len, (result.failures, result.errors))\n            if failed:\n                infos.append(\"failures=%d\" % failed)\n            if errored:\n                infos.append(\"errors=%d\" % errored)\n        else:\n            self.stream.write(\"OK\")\n        if skipped:\n            infos.append(\"skipped=%d\" % skipped)\n        if expectedFails:\n            infos.append(\"expected failures=%d\" % expectedFails)\n        if unexpectedSuccesses:\n            infos.append(\"unexpected successes=%d\" % unexpectedSuccesses)\n        if infos:\n            self.stream.writeln(\" (%s)\" % (\", \".join(infos),))\n        else:\n            self.stream.write(\"\\n\")\n        return result\n"
  },
  {
    "path": "Django-1.5.1/django/utils/unittest/signals.py",
    "content": "import signal\nimport weakref\n\nfrom django.utils.unittest.compatibility import wraps\n\n__unittest = True\n\n\nclass _InterruptHandler(object):\n    def __init__(self, default_handler):\n        self.called = False\n        self.default_handler = default_handler\n\n    def __call__(self, signum, frame):\n        installed_handler = signal.getsignal(signal.SIGINT)\n        if installed_handler is not self:\n            # if we aren't the installed handler, then delegate immediately\n            # to the default handler\n            self.default_handler(signum, frame)\n\n        if self.called:\n            self.default_handler(signum, frame)\n        self.called = True\n        for result in _results.keys():\n            result.stop()\n\n_results = weakref.WeakKeyDictionary()\ndef registerResult(result):\n    _results[result] = 1\n\ndef removeResult(result):\n    return bool(_results.pop(result, None))\n\n_interrupt_handler = None\ndef installHandler():\n    global _interrupt_handler\n    if _interrupt_handler is None:\n        default_handler = signal.getsignal(signal.SIGINT)\n        _interrupt_handler = _InterruptHandler(default_handler)\n        signal.signal(signal.SIGINT, _interrupt_handler)\n\n\ndef removeHandler(method=None):\n    if method is not None:\n        @wraps(method)\n        def inner(*args, **kwargs):\n            initial = signal.getsignal(signal.SIGINT)\n            removeHandler()\n            try:\n                return method(*args, **kwargs)\n            finally:\n                signal.signal(signal.SIGINT, initial)\n        return inner\n\n    global _interrupt_handler\n    if _interrupt_handler is not None:\n        signal.signal(signal.SIGINT, _interrupt_handler.default_handler)\n"
  },
  {
    "path": "Django-1.5.1/django/utils/unittest/suite.py",
    "content": "\"\"\"TestSuite\"\"\"\n\nimport sys\nimport unittest\nfrom django.utils.unittest import case, util\n\n__unittest = True\n\n\nclass BaseTestSuite(unittest.TestSuite):\n    \"\"\"A simple test suite that doesn't provide class or module shared fixtures.\n    \"\"\"\n    def __init__(self, tests=()):\n        self._tests = []\n        self.addTests(tests)\n\n    def __repr__(self):\n        return \"<%s tests=%s>\" % (util.strclass(self.__class__), list(self))\n\n    def __eq__(self, other):\n        if not isinstance(other, self.__class__):\n            return NotImplemented\n        return list(self) == list(other)\n\n    def __ne__(self, other):\n        return not self == other\n\n    # Can't guarantee hash invariant, so flag as unhashable\n    __hash__ = None\n\n    def __iter__(self):\n        return iter(self._tests)\n\n    def countTestCases(self):\n        cases = 0\n        for test in self:\n            cases += test.countTestCases()\n        return cases\n\n    def addTest(self, test):\n        # sanity checks\n        if not hasattr(test, '__call__'):\n            raise TypeError(\"%r is not callable\" % (repr(test),))\n        if isinstance(test, type) and issubclass(test,\n                                                 (case.TestCase, TestSuite)):\n            raise TypeError(\"TestCases and TestSuites must be instantiated \"\n                            \"before passing them to addTest()\")\n        self._tests.append(test)\n\n    def addTests(self, tests):\n        if isinstance(tests, basestring):\n            raise TypeError(\"tests must be an iterable of tests, not a string\")\n        for test in tests:\n            self.addTest(test)\n\n    def run(self, result):\n        for test in self:\n            if result.shouldStop:\n                break\n            test(result)\n        return result\n\n    def __call__(self, *args, **kwds):\n        return self.run(*args, **kwds)\n\n    def debug(self):\n        \"\"\"Run the tests without collecting errors in a TestResult\"\"\"\n        for test in self:\n            test.debug()\n\n\nclass TestSuite(BaseTestSuite):\n    \"\"\"A test suite is a composite test consisting of a number of TestCases.\n\n    For use, create an instance of TestSuite, then add test case instances.\n    When all tests have been added, the suite can be passed to a test\n    runner, such as TextTestRunner. It will run the individual test cases\n    in the order in which they were added, aggregating the results. When\n    subclassing, do not forget to call the base class constructor.\n    \"\"\"\n\n\n    def run(self, result):\n        self._wrapped_run(result)\n        self._tearDownPreviousClass(None, result)\n        self._handleModuleTearDown(result)\n        return result\n\n    def debug(self):\n        \"\"\"Run the tests without collecting errors in a TestResult\"\"\"\n        debug = _DebugResult()\n        self._wrapped_run(debug, True)\n        self._tearDownPreviousClass(None, debug)\n        self._handleModuleTearDown(debug)\n\n    ################################\n    # private methods\n    def _wrapped_run(self, result, debug=False):\n        for test in self:\n            if result.shouldStop:\n                break\n\n            if _isnotsuite(test):\n                self._tearDownPreviousClass(test, result)\n                self._handleModuleFixture(test, result)\n                self._handleClassSetUp(test, result)\n                result._previousTestClass = test.__class__\n\n                if (getattr(test.__class__, '_classSetupFailed', False) or\n                    getattr(result, '_moduleSetUpFailed', False)):\n                    continue\n\n            if hasattr(test, '_wrapped_run'):\n                test._wrapped_run(result, debug)\n            elif not debug:\n                test(result)\n            else:\n                test.debug()\n\n    def _handleClassSetUp(self, test, result):\n        previousClass = getattr(result, '_previousTestClass', None)\n        currentClass = test.__class__\n        if currentClass == previousClass:\n            return\n        if result._moduleSetUpFailed:\n            return\n        if getattr(currentClass, \"__unittest_skip__\", False):\n            return\n\n        try:\n            currentClass._classSetupFailed = False\n        except TypeError:\n            # test may actually be a function\n            # so its class will be a builtin-type\n            pass\n\n        setUpClass = getattr(currentClass, 'setUpClass', None)\n        if setUpClass is not None:\n            try:\n                setUpClass()\n            except Exception as e:\n                if isinstance(result, _DebugResult):\n                    raise\n                currentClass._classSetupFailed = True\n                className = util.strclass(currentClass)\n                errorName = 'setUpClass (%s)' % className\n                self._addClassOrModuleLevelException(result, e, errorName)\n\n    def _get_previous_module(self, result):\n        previousModule = None\n        previousClass = getattr(result, '_previousTestClass', None)\n        if previousClass is not None:\n            previousModule = previousClass.__module__\n        return previousModule\n\n\n    def _handleModuleFixture(self, test, result):\n        previousModule = self._get_previous_module(result)\n        currentModule = test.__class__.__module__\n        if currentModule == previousModule:\n            return\n\n        self._handleModuleTearDown(result)\n\n\n        result._moduleSetUpFailed = False\n        try:\n            module = sys.modules[currentModule]\n        except KeyError:\n            return\n        setUpModule = getattr(module, 'setUpModule', None)\n        if setUpModule is not None:\n            try:\n                setUpModule()\n            except Exception as e:\n                if isinstance(result, _DebugResult):\n                    raise\n                result._moduleSetUpFailed = True\n                errorName = 'setUpModule (%s)' % currentModule\n                self._addClassOrModuleLevelException(result, e, errorName)\n\n    def _addClassOrModuleLevelException(self, result, exception, errorName):\n        error = _ErrorHolder(errorName)\n        addSkip = getattr(result, 'addSkip', None)\n        if addSkip is not None and isinstance(exception, case.SkipTest):\n            addSkip(error, str(exception))\n        else:\n            result.addError(error, sys.exc_info())\n\n    def _handleModuleTearDown(self, result):\n        previousModule = self._get_previous_module(result)\n        if previousModule is None:\n            return\n        if result._moduleSetUpFailed:\n            return\n\n        try:\n            module = sys.modules[previousModule]\n        except KeyError:\n            return\n\n        tearDownModule = getattr(module, 'tearDownModule', None)\n        if tearDownModule is not None:\n            try:\n                tearDownModule()\n            except Exception as e:\n                if isinstance(result, _DebugResult):\n                    raise\n                errorName = 'tearDownModule (%s)' % previousModule\n                self._addClassOrModuleLevelException(result, e, errorName)\n\n    def _tearDownPreviousClass(self, test, result):\n        previousClass = getattr(result, '_previousTestClass', None)\n        currentClass = test.__class__\n        if currentClass == previousClass:\n            return\n        if getattr(previousClass, '_classSetupFailed', False):\n            return\n        if getattr(result, '_moduleSetUpFailed', False):\n            return\n        if getattr(previousClass, \"__unittest_skip__\", False):\n            return\n\n        tearDownClass = getattr(previousClass, 'tearDownClass', None)\n        if tearDownClass is not None:\n            try:\n                tearDownClass()\n            except Exception as e:\n                if isinstance(result, _DebugResult):\n                    raise\n                className = util.strclass(previousClass)\n                errorName = 'tearDownClass (%s)' % className\n                self._addClassOrModuleLevelException(result, e, errorName)\n\n\nclass _ErrorHolder(object):\n    \"\"\"\n    Placeholder for a TestCase inside a result. As far as a TestResult\n    is concerned, this looks exactly like a unit test. Used to insert\n    arbitrary errors into a test suite run.\n    \"\"\"\n    # Inspired by the ErrorHolder from Twisted:\n    # http://twistedmatrix.com/trac/browser/trunk/twisted/trial/runner.py\n\n    # attribute used by TestResult._exc_info_to_string\n    failureException = None\n\n    def __init__(self, description):\n        self.description = description\n\n    def id(self):\n        return self.description\n\n    def shortDescription(self):\n        return None\n\n    def __repr__(self):\n        return \"<ErrorHolder description=%r>\" % (self.description,)\n\n    def __str__(self):\n        return self.id()\n\n    def run(self, result):\n        # could call result.addError(...) - but this test-like object\n        # shouldn't be run anyway\n        pass\n\n    def __call__(self, result):\n        return self.run(result)\n\n    def countTestCases(self):\n        return 0\n\ndef _isnotsuite(test):\n    \"A crude way to tell apart testcases and suites with duck-typing\"\n    try:\n        iter(test)\n    except TypeError:\n        return True\n    return False\n\n\nclass _DebugResult(object):\n    \"Used by the TestSuite to hold previous class when running in debug.\"\n    _previousTestClass = None\n    _moduleSetUpFailed = False\n    shouldStop = False\n"
  },
  {
    "path": "Django-1.5.1/django/utils/unittest/util.py",
    "content": "\"\"\"Various utility functions.\"\"\"\n\n__unittest = True\n\n\n_MAX_LENGTH = 80\ndef safe_repr(obj, short=False):\n    try:\n        result = repr(obj)\n    except Exception:\n        result = object.__repr__(obj)\n    if not short or len(result) < _MAX_LENGTH:\n        return result\n    return result[:_MAX_LENGTH] + ' [truncated]...'\n\ndef safe_str(obj):\n    try:\n        return str(obj)\n    except Exception:\n        return object.__str__(obj)\n\ndef strclass(cls):\n    return \"%s.%s\" % (cls.__module__, cls.__name__)\n\ndef sorted_list_difference(expected, actual):\n    \"\"\"Finds elements in only one or the other of two, sorted input lists.\n\n    Returns a two-element tuple of lists.    The first list contains those\n    elements in the \"expected\" list but not in the \"actual\" list, and the\n    second contains those elements in the \"actual\" list but not in the\n    \"expected\" list.    Duplicate elements in either input list are ignored.\n    \"\"\"\n    i = j = 0\n    missing = []\n    unexpected = []\n    while True:\n        try:\n            e = expected[i]\n            a = actual[j]\n            if e < a:\n                missing.append(e)\n                i += 1\n                while expected[i] == e:\n                    i += 1\n            elif e > a:\n                unexpected.append(a)\n                j += 1\n                while actual[j] == a:\n                    j += 1\n            else:\n                i += 1\n                try:\n                    while expected[i] == e:\n                        i += 1\n                finally:\n                    j += 1\n                    while actual[j] == a:\n                        j += 1\n        except IndexError:\n            missing.extend(expected[i:])\n            unexpected.extend(actual[j:])\n            break\n    return missing, unexpected\n\ndef unorderable_list_difference(expected, actual, ignore_duplicate=False):\n    \"\"\"Same behavior as sorted_list_difference but\n    for lists of unorderable items (like dicts).\n\n    As it does a linear search per item (remove) it\n    has O(n*n) performance.\n    \"\"\"\n    missing = []\n    unexpected = []\n    while expected:\n        item = expected.pop()\n        try:\n            actual.remove(item)\n        except ValueError:\n            missing.append(item)\n        if ignore_duplicate:\n            for lst in expected, actual:\n                try:\n                    while True:\n                        lst.remove(item)\n                except ValueError:\n                    pass\n    if ignore_duplicate:\n        while actual:\n            item = actual.pop()\n            unexpected.append(item)\n            try:\n                while True:\n                    actual.remove(item)\n            except ValueError:\n                pass\n        return missing, unexpected\n\n    # anything left in actual is unexpected\n    return missing, actual\n"
  },
  {
    "path": "Django-1.5.1/django/utils/version.py",
    "content": "from __future__ import unicode_literals\n\nimport datetime\nimport os\nimport subprocess\n\ndef get_version(version=None):\n    \"Returns a PEP 386-compliant version number from VERSION.\"\n    if version is None:\n        from django import VERSION as version\n    else:\n        assert len(version) == 5\n        assert version[3] in ('alpha', 'beta', 'rc', 'final')\n\n    # Now build the two parts of the version number:\n    # main = X.Y[.Z]\n    # sub = .devN - for pre-alpha releases\n    #     | {a|b|c}N - for alpha, beta and rc releases\n\n    parts = 2 if version[2] == 0 else 3\n    main = '.'.join(str(x) for x in version[:parts])\n\n    sub = ''\n    if version[3] == 'alpha' and version[4] == 0:\n        git_changeset = get_git_changeset()\n        if git_changeset:\n            sub = '.dev%s' % git_changeset\n\n    elif version[3] != 'final':\n        mapping = {'alpha': 'a', 'beta': 'b', 'rc': 'c'}\n        sub = mapping[version[3]] + str(version[4])\n\n    return str(main + sub)\n\ndef get_git_changeset():\n    \"\"\"Returns a numeric identifier of the latest git changeset.\n\n    The result is the UTC timestamp of the changeset in YYYYMMDDHHMMSS format.\n    This value isn't guaranteed to be unique, but collisions are very unlikely,\n    so it's sufficient for generating the development version numbers.\n    \"\"\"\n    repo_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))\n    git_log = subprocess.Popen('git log --pretty=format:%ct --quiet -1 HEAD',\n            stdout=subprocess.PIPE, stderr=subprocess.PIPE,\n            shell=True, cwd=repo_dir, universal_newlines=True)\n    timestamp = git_log.communicate()[0]\n    try:\n        timestamp = datetime.datetime.utcfromtimestamp(int(timestamp))\n    except ValueError:\n        return None\n    return timestamp.strftime('%Y%m%d%H%M%S')\n"
  },
  {
    "path": "Django-1.5.1/django/utils/xmlutils.py",
    "content": "\"\"\"\nUtilities for XML generation/parsing.\n\"\"\"\n\nfrom xml.sax.saxutils import XMLGenerator\n\nclass SimplerXMLGenerator(XMLGenerator):\n    def addQuickElement(self, name, contents=None, attrs=None):\n        \"Convenience method for adding an element with no children\"\n        if attrs is None: attrs = {}\n        self.startElement(name, attrs)\n        if contents is not None:\n            self.characters(contents)\n        self.endElement(name)\n"
  },
  {
    "path": "Django-1.5.1/django/views/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/views/csrf.py",
    "content": "from django.http import HttpResponseForbidden\nfrom django.template import Context, Template\nfrom django.conf import settings\n\ncsrf 处理: 当出现 csrf 错误的时候, 比如 form 中没有添加  csrf token, 会进入此模块处理\n# We include the template inline since we need to be able to reliably display\n# this error message, especially for the sake of developers, and there isn't any\n# other way of making it available independent of what is in the settings file.\n\nCSRF_FAILURE_TEMPLATE = \"\"\"\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n  <meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n  <meta name=\"robots\" content=\"NONE,NOARCHIVE\">\n  <title>403 Forbidden</title>\n  <style type=\"text/css\">\n    html * { padding:0; margin:0; }\n    body * { padding:10px 20px; }\n    body * * { padding:0; }\n    body { font:small sans-serif; background:#eee; }\n    body>div { border-bottom:1px solid #ddd; }\n    h1 { font-weight:normal; margin-bottom:.4em; }\n    h1 span { font-size:60%; color:#666; font-weight:normal; }\n    #info { background:#f6f6f6; }\n    #info ul { margin: 0.5em 4em; }\n    #info p, #summary p { padding-top:10px; }\n    #summary { background: #ffc; }\n    #explanation { background:#eee; border-bottom: 0px none; }\n  </style>\n</head>\n<body>\n<div id=\"summary\">\n  <h1>Forbidden <span>(403)</span></h1>\n  <p>CSRF verification failed. Request aborted.</p>\n{% if no_referer %}\n  <p>You are seeing this message because this HTTPS site requires a 'Referer\n   header' to be sent by your Web browser, but none was sent. This header is\n   required for security reasons, to ensure that your browser is not being\n   hijacked by third parties.</p>\n\n  <p>If you have configured your browser to disable 'Referer' headers, please\n   re-enable them, at least for this site, or for HTTPS connections, or for\n   'same-origin' requests.</p>\n{% endif %}\n</div>\n{% if DEBUG %}\n<div id=\"info\">\n  <h2>Help</h2>\n    {% if reason %}\n    <p>Reason given for failure:</p>\n    <pre>\n    {{ reason }}\n    </pre>\n    {% endif %}\n\n  <p>In general, this can occur when there is a genuine Cross Site Request Forgery, or when\n  <a\n  href='http://docs.djangoproject.com/en/dev/ref/contrib/csrf/#ref-contrib-csrf'>Django's\n  CSRF mechanism</a> has not been used correctly.  For POST forms, you need to\n  ensure:</p>\n\n  <ul>\n    <li>Your browser is accepting cookies.</li>\n\n    <li>The view function uses <a\n    href='http://docs.djangoproject.com/en/dev/ref/templates/api/#subclassing-context-requestcontext'><code>RequestContext</code></a>\n    for the template, instead of <code>Context</code>.</li>\n\n    <li>In the template, there is a <code>{% templatetag openblock %} csrf_token\n    {% templatetag closeblock %}</code> template tag inside each POST form that\n    targets an internal URL.</li>\n\n    <li>If you are not using <code>CsrfViewMiddleware</code>, then you must use\n    <code>csrf_protect</code> on any views that use the <code>csrf_token</code>\n    template tag, as well as those that accept the POST data.</li>\n\n  </ul>\n\n  <p>You're seeing the help section of this page because you have <code>DEBUG =\n  True</code> in your Django settings file. Change that to <code>False</code>,\n  and only the initial error message will be displayed.  </p>\n\n  <p>You can customize this page using the CSRF_FAILURE_VIEW setting.</p>\n</div>\n{% else %}\n<div id=\"explanation\">\n  <p><small>More information is available with DEBUG=True.</small></p>\n</div>\n{% endif %}\n</body>\n</html>\n\"\"\"\n\ndef csrf_failure(request, reason=\"\"):\n    \"\"\"\n    Default view used when request fails CSRF protection\n    \"\"\"\n    from django.middleware.csrf import REASON_NO_REFERER\n    t = Template(CSRF_FAILURE_TEMPLATE)\n    c = Context({'DEBUG': settings.DEBUG,\n                 'reason': reason,\n                 'no_referer': reason == REASON_NO_REFERER\n                 })\n    return HttpResponseForbidden(t.render(c), content_type='text/html')\n"
  },
  {
    "path": "Django-1.5.1/django/views/debug.py",
    "content": "from __future__ import unicode_literals\n\n错误处理工具, 能跟踪出错的地方\n\nimport datetime\nimport os\nimport re\nimport sys\nimport types\n\nfrom django.conf import settings\nfrom django.core.exceptions import ImproperlyConfigured\nfrom django.http import (HttpResponse, HttpResponseServerError,\n    HttpResponseNotFound, HttpRequest, build_request_repr)\n\nfrom django.template import Template, Context, TemplateDoesNotExist\n\nfrom django.template.defaultfilters import force_escape, pprint\nfrom django.utils.html import escape\nfrom django.utils.importlib import import_module\nfrom django.utils.encoding import force_bytes, smart_text\nfrom django.utils import six\n\nHIDDEN_SETTINGS = re.compile('API|TOKEN|KEY|SECRET|PASS|PROFANITIES_LIST|SIGNATURE')\n\nCLEANSED_SUBSTITUTE = '********************'\n\ndef linebreak_iter(template_source):\n    yield 0\n    p = template_source.find('\\n')\n    while p >= 0:\n        yield p+1\n        p = template_source.find('\\n', p+1)\n    yield len(template_source) + 1\n\ndef cleanse_setting(key, value):\n    \"\"\"Cleanse an individual setting key/value of sensitive content.\n\n    If the value is a dictionary, recursively cleanse the keys in\n    that dictionary.\n    \"\"\"\n    try:\n        if HIDDEN_SETTINGS.search(key):\n            cleansed = CLEANSED_SUBSTITUTE\n        else:\n            if isinstance(value, dict):\n                cleansed = dict((k, cleanse_setting(k, v)) for k,v in value.items())\n            else:\n                cleansed = value\n    except TypeError:\n        # If the key isn't regex-able, just return as-is.\n        cleansed = value\n    return cleansed\n\ndef get_safe_settings():\n    \"Returns a dictionary of the settings module, with sensitive settings blurred out.\"\n    settings_dict = {}\n    for k in dir(settings): settings 不懂\n        if k.isupper():\n            settings_dict[k] = cleanse_setting(k, getattr(settings, k))\n    return settings_dict\n\n500 错误应答\ndef technical_500_response(request, exc_type, exc_value, tb):\n    \"\"\"\n    Create a technical server error response. The last three arguments are\n    the values returned from sys.exc_info() and friends.\n    \"\"\"\n    reporter = ExceptionReporter(request, exc_type, exc_value, tb)\n    if request.is_ajax(): 如果是 ajax 的请求:\n        text = reporter.get_traceback_text()\n        return HttpResponseServerError(text, content_type='text/plain')\n    else:\n        html = reporter.get_traceback_html()\n        return HttpResponseServerError(html, content_type='text/html')\n\n# Cache for the default exception reporter filter instance.\ndefault_exception_reporter_filter = None\n\ndef get_exception_reporter_filter(request):\n    global default_exception_reporter_filter\n    if default_exception_reporter_filter is None:\n        # Load the default filter for the first time and cache it.\n        modpath = settings.DEFAULT_EXCEPTION_REPORTER_FILTER 默认的异常报告过滤器\n        modname, classname = modpath.rsplit('.', 1)\n\n        try:\n            mod = import_module(modname)\n        except ImportError as e:\n            raise ImproperlyConfigured(\n            'Error importing default exception reporter filter %s: \"%s\"' % (modpath, e))\n\n        try:\n            default_exception_reporter_filter = getattr(mod, classname)()\n        except AttributeError:\n            raise ImproperlyConfigured('Default exception reporter filter module \"%s\" does not define a \"%s\" class' % (modname, classname))\n    if request:\n        return getattr(request, 'exception_reporter_filter', default_exception_reporter_filter)\n    else:\n        return default_exception_reporter_filter\n\n异常报告, 可以过滤某些错误, 用的不多, 基类\nclass ExceptionReporterFilter(object):\n    \"\"\"\n    Base for all exception reporter filter classes. All overridable hooks\n    contain lenient default behaviors.\n    \"\"\"\n\n    def get_request_repr(self, request):\n        if request is None:\n            return repr(None)\n        else:\n            return build_request_repr(request, POST_override=self.get_post_parameters(request))\n\n    def get_post_parameters(self, request):\n        if request is None:\n            return {}\n        else:\n            return request.POST\n\n    def get_traceback_frame_variables(self, request, tb_frame):\n        return list(six.iteritems(tb_frame.f_locals))\n\n异常报告, 可以过滤某些错误, 用的不多\nclass SafeExceptionReporterFilter(ExceptionReporterFilter):\n    \"\"\"\n    Use annotations made by the sensitive_post_parameters and\n    sensitive_variables decorators to filter out sensitive information.\n    \"\"\"\n\n    def is_active(self, request):\n        \"\"\"\n        This filter is to add safety in production environments (i.e. DEBUG\n        is False). If DEBUG is True then your site is not safe anyway.\n        This hook is provided as a convenience to easily activate or\n        deactivate the filter on a per request basis.\n        \"\"\"\n        默认 DEBUG 下才能启用\n        return settings.DEBUG is False\n\n    def get_post_parameters(self, request):\n        \"\"\"\n        Replaces the values of POST parameters marked as sensitive with\n        stars (*********).\n        \"\"\"\n        if request is None:\n            return {}\n        else:\n            sensitive_post_parameters = getattr(request, 'sensitive_post_parameters', []) 敏感的 post 数据\n            if self.is_active(request) and sensitive_post_parameters:\n                cleansed = request.POST.copy()\n\n                if sensitive_post_parameters == '__ALL__':\n                    # Cleanse all parameters.\n                    for k, v in cleansed.items():\n                        cleansed[k] = CLEANSED_SUBSTITUTE\n                    return cleansed\n\n                else:\n                    # Cleanse only the specified parameters.\n                    for param in sensitive_post_parameters:\n                        if param in cleansed:\n                            cleansed[param] = CLEANSED_SUBSTITUTE\n\n                    return cleansed\n            else:\n                return request.POST\n\n    def get_traceback_frame_variables(self, request, tb_frame):\n        \"\"\"\n        Replaces the values of variables marked as sensitive with stars (*********).\n        \"\"\"\n        # Loop through the frame's callers to see if the sensitive_variables\n        # decorator was used.\n        current_frame = tb_frame.f_back\n        sensitive_variables = None\n        while current_frame is not None:\n            if (current_frame.f_code.co_name == 'sensitive_variables_wrapper'\n                and 'sensitive_variables_wrapper' in current_frame.f_locals):\n                # The sensitive_variables decorator was used, so we take note\n                # of the sensitive variables' names.\n                wrapper = current_frame.f_locals['sensitive_variables_wrapper']\n                sensitive_variables = getattr(wrapper, 'sensitive_variables', None)\n                break\n            current_frame = current_frame.f_back\n\n        cleansed = {}\n        if self.is_active(request) and sensitive_variables:\n            if sensitive_variables == '__ALL__':\n                # Cleanse all variables\n                for name, value in tb_frame.f_locals.items():\n                    cleansed[name] = CLEANSED_SUBSTITUTE\n            else:\n                # Cleanse specified variables\n                for name, value in tb_frame.f_locals.items():\n                    if name in sensitive_variables:\n                        value = CLEANSED_SUBSTITUTE\n                    elif isinstance(value, HttpRequest):\n                        # Cleanse the request's POST parameters.\n                        value = self.get_request_repr(value)\n                    cleansed[name] = value\n        else:\n            # Potentially cleanse only the request if it's one of the frame variables.\n            for name, value in tb_frame.f_locals.items():\n                if isinstance(value, HttpRequest):\n                    # Cleanse the request's POST parameters.\n                    value = self.get_request_repr(value)\n                cleansed[name] = value\n\n        if (tb_frame.f_code.co_name == 'sensitive_variables_wrapper'\n            and 'sensitive_variables_wrapper' in tb_frame.f_locals):\n            # For good measure, obfuscate the decorated function's arguments in\n            # the sensitive_variables decorator's frame, in case the variables\n            # associated with those arguments were meant to be obfuscated from\n            # the decorated function's frame.\n            cleansed['func_args'] = CLEANSED_SUBSTITUTE\n            cleansed['func_kwargs'] = CLEANSED_SUBSTITUTE\n\n        return cleansed.items()\n\n异常报告\nclass ExceptionReporter(object):\n    \"\"\"\n    A class to organize and coordinate reporting on exceptions.\n    \"\"\"\n    def __init__(self, request, exc_type, exc_value, tb, is_email=False):\n        self.request = request\n        self.filter = get_exception_reporter_filter(self.request)\n        self.exc_type = exc_type\n        self.exc_value = exc_value\n        self.tb = tb\n        self.is_email = is_email\n\n        self.template_info = None\n        self.template_does_not_exist = False\n        self.loader_debug_info = None\n\n        # Handle deprecated string exceptions\n        if isinstance(self.exc_type, six.string_types):\n            self.exc_value = Exception('Deprecated String Exception: %r' % self.exc_type)\n            self.exc_type = type(self.exc_value)\n\n    def get_traceback_data(self):\n        \"Return a Context instance containing traceback information.\"\n\n        if self.exc_type and issubclass(self.exc_type, TemplateDoesNotExist):\n            from django.template.loader import template_source_loaders\n            self.template_does_not_exist = True\n            self.loader_debug_info = []\n            for loader in template_source_loaders:\n                try:\n                    source_list_func = loader.get_template_sources\n                    # NOTE: This assumes exc_value is the name of the template that\n                    # the loader attempted to load.\n                    template_list = [{'name': t, 'exists': os.path.exists(t)} \\\n                        for t in source_list_func(str(self.exc_value))]\n                except AttributeError:\n                    template_list = []\n                loader_name = loader.__module__ + '.' + loader.__class__.__name__\n                self.loader_debug_info.append({\n                    'loader': loader_name,\n                    'templates': template_list,\n                })\n        if (settings.TEMPLATE_DEBUG and\n            hasattr(self.exc_value, 'django_template_source')):\n            self.get_template_exception_info()\n\n        frames = self.get_traceback_frames()\n        for i, frame in enumerate(frames):\n            if 'vars' in frame:\n                frame['vars'] = [(k, force_escape(pprint(v))) for k, v in frame['vars']]\n            frames[i] = frame\n\n        unicode_hint = ''\n        if self.exc_type and issubclass(self.exc_type, UnicodeError):\n            start = getattr(self.exc_value, 'start', None)\n            end = getattr(self.exc_value, 'end', None)\n            if start is not None and end is not None:\n                unicode_str = self.exc_value.args[1]\n                unicode_hint = smart_text(unicode_str[max(start-5, 0):min(end+5, len(unicode_str))], 'ascii', errors='replace')\n        from django import get_version\n        c = {\n            'is_email': self.is_email,\n            'unicode_hint': unicode_hint,\n            'frames': frames,\n            'request': self.request,\n            'filtered_POST': self.filter.get_post_parameters(self.request),\n            'settings': get_safe_settings(),\n            'sys_executable': sys.executable,\n            'sys_version_info': '%d.%d.%d' % sys.version_info[0:3],\n            'server_time': datetime.datetime.now(),\n            'django_version_info': get_version(),\n            'sys_path' : sys.path,\n            'template_info': self.template_info,\n            'template_does_not_exist': self.template_does_not_exist,\n            'loader_debug_info': self.loader_debug_info,\n        }\n        # Check whether exception info is available\n        if self.exc_type:\n            c['exception_type'] = self.exc_type.__name__\n        if self.exc_value:\n            c['exception_value'] = smart_text(self.exc_value, errors='replace')\n        if frames:\n            c['lastframe'] = frames[-1]\n        return c\n\n    def get_traceback_html(self):\n        \"Return HTML version of debug 500 HTTP error page.\"\n        t = Template(TECHNICAL_500_TEMPLATE, name='Technical 500 template')\n        c = Context(self.get_traceback_data())\n        return t.render(c)\n\n    def get_traceback_text(self):\n        \"Return plain text version of debug 500 HTTP error page.\"\n        t = Template(TECHNICAL_500_TEXT_TEMPLATE, name='Technical 500 template')\n        c = Context(self.get_traceback_data(), autoescape=False)\n        return t.render(c)\n\n    def get_template_exception_info(self):\n        origin, (start, end) = self.exc_value.django_template_source\n        template_source = origin.reload()\n        context_lines = 10\n        line = 0\n        upto = 0\n        source_lines = []\n        before = during = after = \"\"\n        for num, next in enumerate(linebreak_iter(template_source)):\n            if start >= upto and end <= next:\n                line = num\n                before = escape(template_source[upto:start])\n                during = escape(template_source[start:end])\n                after = escape(template_source[end:next])\n            source_lines.append( (num, escape(template_source[upto:next])) )\n            upto = next\n        total = len(source_lines)\n\n        top = max(1, line - context_lines)\n        bottom = min(total, line + 1 + context_lines)\n\n        # In some rare cases, exc_value.args might be empty.\n        try:\n            message = self.exc_value.args[0]\n        except IndexError:\n            message = '(Could not get exception message)'\n\n        self.template_info = {\n            'message': message,\n            'source_lines': source_lines[top:bottom],\n            'before': before,\n            'during': during,\n            'after': after,\n            'top': top,\n            'bottom': bottom,\n            'total': total,\n            'line': line,\n            'name': origin.name,\n        }\n\n    def _get_lines_from_file(self, filename, lineno, context_lines, loader=None, module_name=None):\n        \"\"\"\n        Returns context_lines before and after lineno from file.\n        Returns (pre_context_lineno, pre_context, context_line, post_context).\n        \"\"\"\n        source = None\n        if loader is not None and hasattr(loader, \"get_source\"):\n            source = loader.get_source(module_name)\n            if source is not None:\n                source = source.splitlines()\n        if source is None:\n            try:\n                with open(filename, 'rb') as fp:\n                    source = fp.readlines()\n            except (OSError, IOError):\n                pass\n        if source is None:\n            return None, [], None, []\n\n        # If we just read the source from a file, or if the loader did not\n        # apply tokenize.detect_encoding to decode the source into a Unicode\n        # string, then we should do that ourselves.\n        if isinstance(source[0], six.binary_type):\n            encoding = 'ascii'\n            for line in source[:2]:\n                # File coding may be specified. Match pattern from PEP-263\n                # (http://www.python.org/dev/peps/pep-0263/)\n                match = re.search(br'coding[:=]\\s*([-\\w.]+)', line)\n                if match:\n                    encoding = match.group(1).decode('ascii')\n                    break\n            source = [six.text_type(sline, encoding, 'replace') for sline in source]\n\n        lower_bound = max(0, lineno - context_lines)\n        upper_bound = lineno + context_lines\n\n        pre_context = [line.strip('\\n') for line in source[lower_bound:lineno]]\n        context_line = source[lineno].strip('\\n')\n        post_context = [line.strip('\\n') for line in source[lineno+1:upper_bound]]\n\n        return lower_bound, pre_context, context_line, post_context\n\n    def get_traceback_frames(self):\n        frames = []\n        tb = self.tb\n        while tb is not None:\n            # Support for __traceback_hide__ which is used by a few libraries\n            # to hide internal frames.\n            if tb.tb_frame.f_locals.get('__traceback_hide__'):\n                tb = tb.tb_next\n                continue\n            filename = tb.tb_frame.f_code.co_filename\n            function = tb.tb_frame.f_code.co_name\n            lineno = tb.tb_lineno - 1\n            loader = tb.tb_frame.f_globals.get('__loader__')\n            module_name = tb.tb_frame.f_globals.get('__name__') or ''\n            pre_context_lineno, pre_context, context_line, post_context = self._get_lines_from_file(filename, lineno, 7, loader, module_name)\n            if pre_context_lineno is not None:\n                frames.append({\n                    'tb': tb,\n                    'type': module_name.startswith('django.') and 'django' or 'user',\n                    'filename': filename,\n                    'function': function,\n                    'lineno': lineno + 1,\n                    'vars': self.filter.get_traceback_frame_variables(self.request, tb.tb_frame),\n                    'id': id(tb),\n                    'pre_context': pre_context,\n                    'context_line': context_line,\n                    'post_context': post_context,\n                    'pre_context_lineno': pre_context_lineno + 1,\n                })\n            tb = tb.tb_next\n\n        return frames\n\n    def format_exception(self):\n        \"\"\"\n        Return the same data as from traceback.format_exception.\n        \"\"\"\n        import traceback\n        frames = self.get_traceback_frames()\n        tb = [ (f['filename'], f['lineno'], f['function'], f['context_line']) for f in frames ]\n        list = ['Traceback (most recent call last):\\n']\n        list += traceback.format_list(tb)\n        list += traceback.format_exception_only(self.exc_type, self.exc_value)\n        return list\n\n400 错误应答\ndef technical_404_response(request, exception):\n    \"Create a technical 404 error response. The exception should be the Http404.\"\n    try:\n        tried = exception.args[0]['tried']\n    except (IndexError, TypeError, KeyError):\n        tried = []\n    else:\n        if not tried:\n            # tried exists but is an empty list. The URLconf must've been empty.\n            return empty_urlconf(request)\n\n    urlconf = getattr(request, 'urlconf', settings.ROOT_URLCONF)\n    if isinstance(urlconf, types.ModuleType):\n        urlconf = urlconf.__name__\n\n    t = Template(TECHNICAL_404_TEMPLATE, name='Technical 404 template')\n    c = Context({\n        'urlconf': urlconf,\n        'root_urlconf': settings.ROOT_URLCONF,\n        'request_path': request.path_info[1:], # Trim leading slash\n        'urlpatterns': tried,\n        'reason': force_bytes(exception, errors='replace'),\n        'request': request,\n        'settings': get_safe_settings(),\n    })\n    return HttpResponseNotFound(t.render(c), content_type='text/html')\n\n空的 urlconf 可能 urlpatterns 为空的时候会返回这个错误\ndef empty_urlconf(request):\n    \"Create an empty URLconf 404 error response.\"\n    t = Template(EMPTY_URLCONF_TEMPLATE, name='Empty URLConf template')\n    c = Context({\n        'project_name': settings.SETTINGS_MODULE.split('.')[0]\n    })\n    return HttpResponse(t.render(c), content_type='text/html')\n\n#\n# Templates are embedded in the file so that we know the error handler will\n# always work even if the template loader is broken.\n#\n\nTECHNICAL_500_TEMPLATE = \"\"\"\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n  <meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n  <meta name=\"robots\" content=\"NONE,NOARCHIVE\">\n  <title>{% if exception_type %}{{ exception_type }}{% else %}Report{% endif %}{% if request %} at {{ request.path_info|escape }}{% endif %}</title>\n  <style type=\"text/css\">\n    html * { padding:0; margin:0; }\n    body * { padding:10px 20px; }\n    body * * { padding:0; }\n    body { font:small sans-serif; }\n    body>div { border-bottom:1px solid #ddd; }\n    h1 { font-weight:normal; }\n    h2 { margin-bottom:.8em; }\n    h2 span { font-size:80%; color:#666; font-weight:normal; }\n    h3 { margin:1em 0 .5em 0; }\n    h4 { margin:0 0 .5em 0; font-weight: normal; }\n    code, pre { font-size: 100%; white-space: pre-wrap; }\n    table { border:1px solid #ccc; border-collapse: collapse; width:100%; background:white; }\n    tbody td, tbody th { vertical-align:top; padding:2px 3px; }\n    thead th { padding:1px 6px 1px 3px; background:#fefefe; text-align:left; font-weight:normal; font-size:11px; border:1px solid #ddd; }\n    tbody th { width:12em; text-align:right; color:#666; padding-right:.5em; }\n    table.vars { margin:5px 0 2px 40px; }\n    table.vars td, table.req td { font-family:monospace; }\n    table td.code { width:100%; }\n    table td.code pre { overflow:hidden; }\n    table.source th { color:#666; }\n    table.source td { font-family:monospace; white-space:pre; border-bottom:1px solid #eee; }\n    ul.traceback { list-style-type:none; color: #222; }\n    ul.traceback li.frame { padding-bottom:1em; color:#666; }\n    ul.traceback li.user { background-color:#e0e0e0; color:#000 }\n    div.context { padding:10px 0; overflow:hidden; }\n    div.context ol { padding-left:30px; margin:0 10px; list-style-position: inside; }\n    div.context ol li { font-family:monospace; white-space:pre; color:#777; cursor:pointer; }\n    div.context ol li pre { display:inline; }\n    div.context ol.context-line li { color:#505050; background-color:#dfdfdf; }\n    div.context ol.context-line li span { position:absolute; right:32px; }\n    .user div.context ol.context-line li { background-color:#bbb; color:#000; }\n    .user div.context ol li { color:#666; }\n    div.commands { margin-left: 40px; }\n    div.commands a { color:#555; text-decoration:none; }\n    .user div.commands a { color: black; }\n    #summary { background: #ffc; }\n    #summary h2 { font-weight: normal; color: #666; }\n    #explanation { background:#eee; }\n    #template, #template-not-exist { background:#f6f6f6; }\n    #template-not-exist ul { margin: 0 0 0 20px; }\n    #unicode-hint { background:#eee; }\n    #traceback { background:#eee; }\n    #requestinfo { background:#f6f6f6; padding-left:120px; }\n    #summary table { border:none; background:transparent; }\n    #requestinfo h2, #requestinfo h3 { position:relative; margin-left:-100px; }\n    #requestinfo h3 { margin-bottom:-1em; }\n    .error { background: #ffc; }\n    .specific { color:#cc3300; font-weight:bold; }\n    h2 span.commands { font-size:.7em;}\n    span.commands a:link {color:#5E5694;}\n    pre.exception_value { font-family: sans-serif; color: #666; font-size: 1.5em; margin: 10px 0 10px 0; }\n  </style>\n  {% if not is_email %}\n  <script type=\"text/javascript\">\n  //<!--\n    function getElementsByClassName(oElm, strTagName, strClassName){\n        // Written by Jonathan Snook, http://www.snook.ca/jon; Add-ons by Robert Nyman, http://www.robertnyman.com\n        var arrElements = (strTagName == \"*\" && document.all)? document.all :\n        oElm.getElementsByTagName(strTagName);\n        var arrReturnElements = new Array();\n        strClassName = strClassName.replace(/\\-/g, \"\\\\-\");\n        var oRegExp = new RegExp(\"(^|\\\\s)\" + strClassName + \"(\\\\s|$)\");\n        var oElement;\n        for(var i=0; i<arrElements.length; i++){\n            oElement = arrElements[i];\n            if(oRegExp.test(oElement.className)){\n                arrReturnElements.push(oElement);\n            }\n        }\n        return (arrReturnElements)\n    }\n    function hideAll(elems) {\n      for (var e = 0; e < elems.length; e++) {\n        elems[e].style.display = 'none';\n      }\n    }\n    window.onload = function() {\n      hideAll(getElementsByClassName(document, 'table', 'vars'));\n      hideAll(getElementsByClassName(document, 'ol', 'pre-context'));\n      hideAll(getElementsByClassName(document, 'ol', 'post-context'));\n      hideAll(getElementsByClassName(document, 'div', 'pastebin'));\n    }\n    function toggle() {\n      for (var i = 0; i < arguments.length; i++) {\n        var e = document.getElementById(arguments[i]);\n        if (e) {\n          e.style.display = e.style.display == 'none' ? 'block' : 'none';\n        }\n      }\n      return false;\n    }\n    function varToggle(link, id) {\n      toggle('v' + id);\n      var s = link.getElementsByTagName('span')[0];\n      var uarr = String.fromCharCode(0x25b6);\n      var darr = String.fromCharCode(0x25bc);\n      s.innerHTML = s.innerHTML == uarr ? darr : uarr;\n      return false;\n    }\n    function switchPastebinFriendly(link) {\n      s1 = \"Switch to copy-and-paste view\";\n      s2 = \"Switch back to interactive view\";\n      link.innerHTML = link.innerHTML == s1 ? s2 : s1;\n      toggle('browserTraceback', 'pastebinTraceback');\n      return false;\n    }\n    //-->\n  </script>\n  {% endif %}\n</head>\n<body>\n<div id=\"summary\">\n  <h1>{% if exception_type %}{{ exception_type }}{% else %}Report{% endif %}{% if request %} at {{ request.path_info|escape }}{% endif %}</h1>\n  <pre class=\"exception_value\">{% if exception_value %}{{ exception_value|force_escape }}{% else %}No exception supplied{% endif %}</pre>\n  <table class=\"meta\">\n{% if request %}\n    <tr>\n      <th>Request Method:</th>\n      <td>{{ request.META.REQUEST_METHOD }}</td>\n    </tr>\n    <tr>\n      <th>Request URL:</th>\n      <td>{{ request.build_absolute_uri|escape }}</td>\n    </tr>\n{% endif %}\n    <tr>\n      <th>Django Version:</th>\n      <td>{{ django_version_info }}</td>\n    </tr>\n{% if exception_type %}\n    <tr>\n      <th>Exception Type:</th>\n      <td>{{ exception_type }}</td>\n    </tr>\n{% endif %}\n{% if exception_type and exception_value %}\n    <tr>\n      <th>Exception Value:</th>\n      <td><pre>{{ exception_value|force_escape }}</pre></td>\n    </tr>\n{% endif %}\n{% if lastframe %}\n    <tr>\n      <th>Exception Location:</th>\n      <td>{{ lastframe.filename|escape }} in {{ lastframe.function|escape }}, line {{ lastframe.lineno }}</td>\n    </tr>\n{% endif %}\n    <tr>\n      <th>Python Executable:</th>\n      <td>{{ sys_executable|escape }}</td>\n    </tr>\n    <tr>\n      <th>Python Version:</th>\n      <td>{{ sys_version_info }}</td>\n    </tr>\n    <tr>\n      <th>Python Path:</th>\n      <td><pre>{{ sys_path|pprint }}</pre></td>\n    </tr>\n    <tr>\n      <th>Server time:</th>\n      <td>{{server_time|date:\"r\"}}</td>\n    </tr>\n  </table>\n</div>\n{% if unicode_hint %}\n<div id=\"unicode-hint\">\n    <h2>Unicode error hint</h2>\n    <p>The string that could not be encoded/decoded was: <strong>{{ unicode_hint|force_escape }}</strong></p>\n</div>\n{% endif %}\n{% if template_does_not_exist %}\n<div id=\"template-not-exist\">\n    <h2>Template-loader postmortem</h2>\n    {% if loader_debug_info %}\n        <p>Django tried loading these templates, in this order:</p>\n        <ul>\n        {% for loader in loader_debug_info %}\n            <li>Using loader <code>{{ loader.loader }}</code>:\n                <ul>{% for t in loader.templates %}<li><code>{{ t.name }}</code> (File {% if t.exists %}exists{% else %}does not exist{% endif %})</li>{% endfor %}</ul>\n            </li>\n        {% endfor %}\n        </ul>\n    {% else %}\n        <p>Django couldn't find any templates because your <code>TEMPLATE_LOADERS</code> setting is empty!</p>\n    {% endif %}\n</div>\n{% endif %}\n{% if template_info %}\n<div id=\"template\">\n   <h2>Error during template rendering</h2>\n   <p>In template <code>{{ template_info.name }}</code>, error at line <strong>{{ template_info.line }}</strong></p>\n   <h3>{{ template_info.message }}</h3>\n   <table class=\"source{% if template_info.top %} cut-top{% endif %}{% ifnotequal template_info.bottom template_info.total %} cut-bottom{% endifnotequal %}\">\n   {% for source_line in template_info.source_lines %}\n   {% ifequal source_line.0 template_info.line %}\n       <tr class=\"error\"><th>{{ source_line.0 }}</th>\n       <td>{{ template_info.before }}<span class=\"specific\">{{ template_info.during }}</span>{{ template_info.after }}</td></tr>\n   {% else %}\n      <tr><th>{{ source_line.0 }}</th>\n      <td>{{ source_line.1 }}</td></tr>\n   {% endifequal %}\n   {% endfor %}\n   </table>\n</div>\n{% endif %}\n{% if frames %}\n<div id=\"traceback\">\n  <h2>Traceback <span class=\"commands\">{% if not is_email %}<a href=\"#\" onclick=\"return switchPastebinFriendly(this);\">Switch to copy-and-paste view</a></span>{% endif %}</h2>\n  {% autoescape off %}\n  <div id=\"browserTraceback\">\n    <ul class=\"traceback\">\n      {% for frame in frames %}\n        <li class=\"frame {{ frame.type }}\">\n          <code>{{ frame.filename|escape }}</code> in <code>{{ frame.function|escape }}</code>\n\n          {% if frame.context_line %}\n            <div class=\"context\" id=\"c{{ frame.id }}\">\n              {% if frame.pre_context and not is_email %}\n                <ol start=\"{{ frame.pre_context_lineno }}\" class=\"pre-context\" id=\"pre{{ frame.id }}\">{% for line in frame.pre_context %}<li onclick=\"toggle('pre{{ frame.id }}', 'post{{ frame.id }}')\"><pre>{{ line|escape }}</pre></li>{% endfor %}</ol>\n              {% endif %}\n              <ol start=\"{{ frame.lineno }}\" class=\"context-line\"><li onclick=\"toggle('pre{{ frame.id }}', 'post{{ frame.id }}')\"><pre>{{ frame.context_line|escape }}</pre>{% if not is_email %} <span>...</span>{% endif %}</li></ol>\n              {% if frame.post_context and not is_email  %}\n                <ol start='{{ frame.lineno|add:\"1\" }}' class=\"post-context\" id=\"post{{ frame.id }}\">{% for line in frame.post_context %}<li onclick=\"toggle('pre{{ frame.id }}', 'post{{ frame.id }}')\"><pre>{{ line|escape }}</pre></li>{% endfor %}</ol>\n              {% endif %}\n            </div>\n          {% endif %}\n\n          {% if frame.vars %}\n            <div class=\"commands\">\n                {% if is_email %}\n                    <h2>Local Vars</h2>\n                {% else %}\n                    <a href=\"#\" onclick=\"return varToggle(this, '{{ frame.id }}')\"><span>&#x25b6;</span> Local vars</a>\n                {% endif %}\n            </div>\n            <table class=\"vars\" id=\"v{{ frame.id }}\">\n              <thead>\n                <tr>\n                  <th>Variable</th>\n                  <th>Value</th>\n                </tr>\n              </thead>\n              <tbody>\n                {% for var in frame.vars|dictsort:\"0\" %}\n                  <tr>\n                    <td>{{ var.0|force_escape }}</td>\n                    <td class=\"code\"><pre>{{ var.1 }}</pre></td>\n                  </tr>\n                {% endfor %}\n              </tbody>\n            </table>\n          {% endif %}\n        </li>\n      {% endfor %}\n    </ul>\n  </div>\n  {% endautoescape %}\n  <form action=\"http://dpaste.com/\" name=\"pasteform\" id=\"pasteform\" method=\"post\">\n{% if not is_email %}\n  <div id=\"pastebinTraceback\" class=\"pastebin\">\n    <input type=\"hidden\" name=\"language\" value=\"PythonConsole\">\n    <input type=\"hidden\" name=\"title\" value=\"{{ exception_type|escape }}{% if request %} at {{ request.path_info|escape }}{% endif %}\">\n    <input type=\"hidden\" name=\"source\" value=\"Django Dpaste Agent\">\n    <input type=\"hidden\" name=\"poster\" value=\"Django\">\n    <textarea name=\"content\" id=\"traceback_area\" cols=\"140\" rows=\"25\">\nEnvironment:\n\n{% if request %}\nRequest Method: {{ request.META.REQUEST_METHOD }}\nRequest URL: {{ request.build_absolute_uri|escape }}\n{% endif %}\nDjango Version: {{ django_version_info }}\nPython Version: {{ sys_version_info }}\nInstalled Applications:\n{{ settings.INSTALLED_APPS|pprint }}\nInstalled Middleware:\n{{ settings.MIDDLEWARE_CLASSES|pprint }}\n\n{% if template_does_not_exist %}Template Loader Error:\n{% if loader_debug_info %}Django tried loading these templates, in this order:\n{% for loader in loader_debug_info %}Using loader {{ loader.loader }}:\n{% for t in loader.templates %}{{ t.name }} (File {% if t.exists %}exists{% else %}does not exist{% endif %})\n{% endfor %}{% endfor %}\n{% else %}Django couldn't find any templates because your TEMPLATE_LOADERS setting is empty!\n{% endif %}\n{% endif %}{% if template_info %}\nTemplate error:\nIn template {{ template_info.name }}, error at line {{ template_info.line }}\n   {{ template_info.message }}{% for source_line in template_info.source_lines %}{% ifequal source_line.0 template_info.line %}\n   {{ source_line.0 }} : {{ template_info.before }} {{ template_info.during }} {{ template_info.after }}\n{% else %}\n   {{ source_line.0 }} : {{ source_line.1 }}\n{% endifequal %}{% endfor %}{% endif %}\nTraceback:\n{% for frame in frames %}File \"{{ frame.filename|escape }}\" in {{ frame.function|escape }}\n{% if frame.context_line %}  {{ frame.lineno }}. {{ frame.context_line|escape }}{% endif %}\n{% endfor %}\nException Type: {{ exception_type|escape }}{% if request %} at {{ request.path_info|escape }}{% endif %}\nException Value: {{ exception_value|force_escape }}\n</textarea>\n  <br><br>\n  <input type=\"submit\" value=\"Share this traceback on a public Web site\">\n  </div>\n</form>\n</div>\n{% endif %}\n{% endif %}\n\n<div id=\"requestinfo\">\n  <h2>Request information</h2>\n\n{% if request %}\n  <h3 id=\"get-info\">GET</h3>\n  {% if request.GET %}\n    <table class=\"req\">\n      <thead>\n        <tr>\n          <th>Variable</th>\n          <th>Value</th>\n        </tr>\n      </thead>\n      <tbody>\n        {% for var in request.GET.items %}\n          <tr>\n            <td>{{ var.0 }}</td>\n            <td class=\"code\"><pre>{{ var.1|pprint }}</pre></td>\n          </tr>\n        {% endfor %}\n      </tbody>\n    </table>\n  {% else %}\n    <p>No GET data</p>\n  {% endif %}\n\n  <h3 id=\"post-info\">POST</h3>\n  {% if filtered_POST %}\n    <table class=\"req\">\n      <thead>\n        <tr>\n          <th>Variable</th>\n          <th>Value</th>\n        </tr>\n      </thead>\n      <tbody>\n        {% for var in filtered_POST.items %}\n          <tr>\n            <td>{{ var.0 }}</td>\n            <td class=\"code\"><pre>{{ var.1|pprint }}</pre></td>\n          </tr>\n        {% endfor %}\n      </tbody>\n    </table>\n  {% else %}\n    <p>No POST data</p>\n  {% endif %}\n  <h3 id=\"files-info\">FILES</h3>\n  {% if request.FILES %}\n    <table class=\"req\">\n        <thead>\n            <tr>\n                <th>Variable</th>\n                <th>Value</th>\n            </tr>\n        </thead>\n        <tbody>\n            {% for var in request.FILES.items %}\n                <tr>\n                    <td>{{ var.0 }}</td>\n                    <td class=\"code\"><pre>{{ var.1|pprint }}</pre></td>\n                </tr>\n            {% endfor %}\n        </tbody>\n    </table>\n  {% else %}\n    <p>No FILES data</p>\n  {% endif %}\n\n\n  <h3 id=\"cookie-info\">COOKIES</h3>\n  {% if request.COOKIES %}\n    <table class=\"req\">\n      <thead>\n        <tr>\n          <th>Variable</th>\n          <th>Value</th>\n        </tr>\n      </thead>\n      <tbody>\n        {% for var in request.COOKIES.items %}\n          <tr>\n            <td>{{ var.0 }}</td>\n            <td class=\"code\"><pre>{{ var.1|pprint }}</pre></td>\n          </tr>\n        {% endfor %}\n      </tbody>\n    </table>\n  {% else %}\n    <p>No cookie data</p>\n  {% endif %}\n\n  <h3 id=\"meta-info\">META</h3>\n  <table class=\"req\">\n    <thead>\n      <tr>\n        <th>Variable</th>\n        <th>Value</th>\n      </tr>\n    </thead>\n    <tbody>\n      {% for var in request.META.items|dictsort:\"0\" %}\n        <tr>\n          <td>{{ var.0 }}</td>\n          <td class=\"code\"><pre>{{ var.1|pprint }}</pre></td>\n        </tr>\n      {% endfor %}\n    </tbody>\n  </table>\n{% else %}\n  <p>Request data not supplied</p>\n{% endif %}\n\n  <h3 id=\"settings-info\">Settings</h3>\n  <h4>Using settings module <code>{{ settings.SETTINGS_MODULE }}</code></h4>\n  <table class=\"req\">\n    <thead>\n      <tr>\n        <th>Setting</th>\n        <th>Value</th>\n      </tr>\n    </thead>\n    <tbody>\n      {% for var in settings.items|dictsort:\"0\" %}\n        <tr>\n          <td>{{ var.0 }}</td>\n          <td class=\"code\"><pre>{{ var.1|pprint }}</pre></td>\n        </tr>\n      {% endfor %}\n    </tbody>\n  </table>\n\n</div>\n{% if not is_email %}\n  <div id=\"explanation\">\n    <p>\n      You're seeing this error because you have <code>DEBUG = True</code> in your\n      Django settings file. Change that to <code>False</code>, and Django will\n      display a standard 500 page.\n    </p>\n  </div>\n{% endif %}\n</body>\n</html>\n\"\"\"\n\nTECHNICAL_500_TEXT_TEMPLATE = \"\"\"{% firstof exception_type 'Report' %}{% if request %} at {{ request.path_info }}{% endif %}\n{% firstof exception_value 'No exception supplied' %}\n{% if request %}\nRequest Method: {{ request.META.REQUEST_METHOD }}\nRequest URL: {{ request.build_absolute_uri }}{% endif %}\nDjango Version: {{ django_version_info }}\nPython Executable: {{ sys_executable }}\nPython Version: {{ sys_version_info }}\nPython Path: {{ sys_path }}\nServer time: {{server_time|date:\"r\"}}\nInstalled Applications:\n{{ settings.INSTALLED_APPS|pprint }}\nInstalled Middleware:\n{{ settings.MIDDLEWARE_CLASSES|pprint }}\n{% if template_does_not_exist %}Template loader Error:\n{% if loader_debug_info %}Django tried loading these templates, in this order:\n{% for loader in loader_debug_info %}Using loader {{ loader.loader }}:\n{% for t in loader.templates %}{{ t.name }} (File {% if t.exists %}exists{% else %}does not exist{% endif %})\n{% endfor %}{% endfor %}\n{% else %}Django couldn't find any templates because your TEMPLATE_LOADERS setting is empty!\n{% endif %}\n{% endif %}{% if template_info %}\nTemplate error:\nIn template {{ template_info.name }}, error at line {{ template_info.line }}\n   {{ template_info.message }}{% for source_line in template_info.source_lines %}{% ifequal source_line.0 template_info.line %}\n   {{ source_line.0 }} : {{ template_info.before }} {{ template_info.during }} {{ template_info.after }}\n{% else %}\n   {{ source_line.0 }} : {{ source_line.1 }}\n   {% endifequal %}{% endfor %}{% endif %}{% if frames %}\nTraceback:\n{% for frame in frames %}File \"{{ frame.filename }}\" in {{ frame.function }}\n{% if frame.context_line %}  {{ frame.lineno }}. {{ frame.context_line }}{% endif %}\n{% endfor %}\n{% if exception_type %}Exception Type: {{ exception_type }}{% if request %} at {{ request.path_info }}{% endif %}\n{% if exception_value %}Exception Value: {{ exception_value }}{% endif %}{% endif %}{% endif %}\n{% if request %}Request information:\nGET:{% for k, v in request.GET.items %}\n{{ k }} = {{ v|stringformat:\"r\" }}{% empty %} No GET data{% endfor %}\n\nPOST:{% for k, v in filtered_POST.items %}\n{{ k }} = {{ v|stringformat:\"r\" }}{% empty %} No POST data{% endfor %}\n\nFILES:{% for k, v in request.FILES.items %}\n{{ k }} = {{ v|stringformat:\"r\" }}{% empty %} No FILES data{% endfor %}\n\nCOOKIES:{% for k, v in request.COOKIES.items %}\n{{ k }} = {{ v|stringformat:\"r\" }}{% empty %} No cookie data{% endfor %}\n\nMETA:{% for k, v in request.META.items|dictsort:\"0\" %}\n{{ k }} = {{ v|stringformat:\"r\" }}{% endfor %}\n{% else %}Request data not supplied\n{% endif %}\nSettings:\nUsing settings module {{ settings.SETTINGS_MODULE }}{% for k, v in settings.items|dictsort:\"0\" %}\n{{ k }} = {{ v|stringformat:\"r\" }}{% endfor %}\n\nYou're seeing this error because you have DEBUG = True in your\nDjango settings file. Change that to False, and Django will\ndisplay a standard 500 page.\n\"\"\"\n\nTECHNICAL_404_TEMPLATE = \"\"\"\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n  <meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n  <title>Page not found at {{ request.path_info|escape }}</title>\n  <meta name=\"robots\" content=\"NONE,NOARCHIVE\">\n  <style type=\"text/css\">\n    html * { padding:0; margin:0; }\n    body * { padding:10px 20px; }\n    body * * { padding:0; }\n    body { font:small sans-serif; background:#eee; }\n    body>div { border-bottom:1px solid #ddd; }\n    h1 { font-weight:normal; margin-bottom:.4em; }\n    h1 span { font-size:60%; color:#666; font-weight:normal; }\n    table { border:none; border-collapse: collapse; width:100%; }\n    td, th { vertical-align:top; padding:2px 3px; }\n    th { width:12em; text-align:right; color:#666; padding-right:.5em; }\n    #info { background:#f6f6f6; }\n    #info ol { margin: 0.5em 4em; }\n    #info ol li { font-family: monospace; }\n    #summary { background: #ffc; }\n    #explanation { background:#eee; border-bottom: 0px none; }\n  </style>\n</head>\n<body>\n  <div id=\"summary\">\n    <h1>Page not found <span>(404)</span></h1>\n    <table class=\"meta\">\n      <tr>\n        <th>Request Method:</th>\n        <td>{{ request.META.REQUEST_METHOD }}</td>\n      </tr>\n      <tr>\n        <th>Request URL:</th>\n      <td>{{ request.build_absolute_uri|escape }}</td>\n      </tr>\n    </table>\n  </div>\n  <div id=\"info\">\n    {% if urlpatterns %}\n      <p>\n      Using the URLconf defined in <code>{{ urlconf }}</code>,\n      Django tried these URL patterns, in this order:\n      </p>\n      <ol>\n        {% for pattern in urlpatterns %}\n          <li>\n            {% for pat in pattern %}\n                {{ pat.regex.pattern }}\n                {% if forloop.last and pat.name %}[name='{{ pat.name }}']{% endif %}\n            {% endfor %}\n          </li>\n        {% endfor %}\n      </ol>\n      <p>The current URL, <code>{{ request_path|escape }}</code>, didn't match any of these.</p>\n    {% else %}\n      <p>{{ reason }}</p>\n    {% endif %}\n  </div>\n\n  <div id=\"explanation\">\n    <p>\n      You're seeing this error because you have <code>DEBUG = True</code> in\n      your Django settings file. Change that to <code>False</code>, and Django\n      will display a standard 404 page.\n    </p>\n  </div>\n</body>\n</html>\n\"\"\"\n\nEMPTY_URLCONF_TEMPLATE = \"\"\"\n<!DOCTYPE html>\n<html lang=\"en\"><head>\n  <meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n  <meta name=\"robots\" content=\"NONE,NOARCHIVE\"><title>Welcome to Django</title>\n  <style type=\"text/css\">\n    html * { padding:0; margin:0; }\n    body * { padding:10px 20px; }\n    body * * { padding:0; }\n    body { font:small sans-serif; }\n    body>div { border-bottom:1px solid #ddd; }\n    h1 { font-weight:normal; }\n    h2 { margin-bottom:.8em; }\n    h2 span { font-size:80%; color:#666; font-weight:normal; }\n    h3 { margin:1em 0 .5em 0; }\n    h4 { margin:0 0 .5em 0; font-weight: normal; }\n    table { border:1px solid #ccc; border-collapse: collapse; width:100%; background:white; }\n    tbody td, tbody th { vertical-align:top; padding:2px 3px; }\n    thead th { padding:1px 6px 1px 3px; background:#fefefe; text-align:left; font-weight:normal; font-size:11px; border:1px solid #ddd; }\n    tbody th { width:12em; text-align:right; color:#666; padding-right:.5em; }\n    ul { margin-left: 2em; margin-top: 1em; }\n    #summary { background: #e0ebff; }\n    #summary h2 { font-weight: normal; color: #666; }\n    #explanation { background:#eee; }\n    #instructions { background:#f6f6f6; }\n    #summary table { border:none; background:transparent; }\n  </style>\n</head>\n\n<body>\n<div id=\"summary\">\n  <h1>It worked!</h1>\n  <h2>Congratulations on your first Django-powered page.</h2>\n</div>\n\n<div id=\"instructions\">\n  <p>Of course, you haven't actually done any work yet. Here's what to do next:</p>\n  <ul>\n    <li>If you plan to use a database, edit the <code>DATABASES</code> setting in <code>{{ project_name }}/settings.py</code>.</li>\n    <li>Start your first app by running <code>python manage.py startapp [appname]</code>.</li>\n  </ul>\n</div>\n\n<div id=\"explanation\">\n  <p>\n    You're seeing this message because you have <code>DEBUG = True</code> in your\n    Django settings file and you haven't configured any URLs. Get to work!\n  </p>\n</div>\n</body></html>\n\"\"\"\n"
  },
  {
    "path": "Django-1.5.1/django/views/decorators/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/django/views/decorators/cache.py",
    "content": "from functools import wraps\nfrom django.utils.decorators import decorator_from_middleware_with_args, available_attrs\nfrom django.utils.cache import patch_cache_control, add_never_cache_headers\nfrom django.middleware.cache import CacheMiddleware\n\n缓存修饰器\n\ndef cache_page(*args, **kwargs):\n    \"\"\"\n    Decorator for views that tries getting the page from the cache and\n    populates the cache if the page isn't in the cache yet.\n\n    The cache is keyed by the URL and some data from the headers.\n    Additionally there is the key prefix that is used to distinguish different\n    cache areas in a multi-site setup. You could use the\n    sites.get_current_site().domain, for example, as that is unique across a Django\n    project.\n\n    Additionally, all headers from the response's Vary header will be taken\n    into account on caching -- just like the middleware does.\n    \"\"\"\n    # We need backwards compatibility with code which spells it this way:\n    #   def my_view(): pass\n    #   my_view = cache_page(my_view, 123)\n    # and this way:\n    #   my_view = cache_page(123)(my_view)\n    # and this:\n    #   my_view = cache_page(my_view, 123, key_prefix=\"foo\")\n    # and this:\n    #   my_view = cache_page(123, key_prefix=\"foo\")(my_view)\n    # and possibly this way (?):\n    #   my_view = cache_page(123, my_view)\n    # and also this way:\n    #   my_view = cache_page(my_view)\n    # and also this way:\n    #   my_view = cache_page()(my_view)\n\n    # We also add some asserts to give better error messages in case people are\n    # using other ways to call cache_page that no longer work.\n    cache_alias = kwargs.pop('cache', None)\n    key_prefix = kwargs.pop('key_prefix', None)\n    assert not kwargs, \"The only keyword arguments are cache and key_prefix\"\n    def warn():\n        import warnings\n        warnings.warn('The cache_page decorator must be called like: '\n                      'cache_page(timeout, [cache=cache name], [key_prefix=key prefix]). '\n                      'All other ways are deprecated.',\n                      DeprecationWarning,\n                      stacklevel=2)\n\n    if len(args) > 1:\n        assert len(args) == 2, \"cache_page accepts at most 2 arguments\"\n        warn()\n        if callable(args[0]):\n            return decorator_from_middleware_with_args(CacheMiddleware)(cache_timeout=args[1], cache_alias=cache_alias, key_prefix=key_prefix)(args[0])\n        elif callable(args[1]):\n            return decorator_from_middleware_with_args(CacheMiddleware)(cache_timeout=args[0], cache_alias=cache_alias, key_prefix=key_prefix)(args[1])\n        else:\n            assert False, \"cache_page must be passed a view function if called with two arguments\"\n    elif len(args) == 1:\n        if callable(args[0]):\n            warn()\n            return decorator_from_middleware_with_args(CacheMiddleware)(cache_alias=cache_alias, key_prefix=key_prefix)(args[0])\n        else:\n            # The One True Way\n            return decorator_from_middleware_with_args(CacheMiddleware)(cache_timeout=args[0], cache_alias=cache_alias, key_prefix=key_prefix)\n    else:\n        warn()\n        return decorator_from_middleware_with_args(CacheMiddleware)(cache_alias=cache_alias, key_prefix=key_prefix)\n\n\ndef cache_control(**kwargs):\n    def _cache_controller(viewfunc):\n        @wraps(viewfunc, assigned=available_attrs(viewfunc))\n        def _cache_controlled(request, *args, **kw):\n            response = viewfunc(request, *args, **kw)\n            patch_cache_control(response, **kwargs)\n            return response\n        return _cache_controlled\n    return _cache_controller\n\n\ndef never_cache(view_func):\n    \"\"\"\n    Decorator that adds headers to a response so that it will\n    never be cached.\n    \"\"\"\n    @wraps(view_func, assigned=available_attrs(view_func))\n    def _wrapped_view_func(request, *args, **kwargs):\n        response = view_func(request, *args, **kwargs)\n        add_never_cache_headers(response)\n        return response\n    return _wrapped_view_func\n"
  },
  {
    "path": "Django-1.5.1/django/views/decorators/clickjacking.py",
    "content": "from functools import wraps\n\nfrom django.utils.decorators import available_attrs\n\n拒绝被嵌入框架\n\ndef xframe_options_deny(view_func):\n    \"\"\"\n    Modifies a view function so its response has the X-Frame-Options HTTP\n    header set to 'DENY' as long as the response doesn't already have that\n    header set.\n\n    e.g.\n\n    @xframe_options_deny\n    def some_view(request):\n        ...\n\n    \"\"\"\n    def wrapped_view(*args, **kwargs):\n        resp = view_func(*args, **kwargs)\n        if resp.get('X-Frame-Options', None) is None:\n            resp['X-Frame-Options'] = 'DENY' 在 response 的 header 中添加 X-Frame-Options 字段\n        return resp\n    return wraps(view_func, assigned=available_attrs(view_func))(wrapped_view)\n\n\ndef xframe_options_sameorigin(view_func):\n    \"\"\"\n    Modifies a view function so its response has the X-Frame-Options HTTP\n    header set to 'SAMEORIGIN' as long as the response doesn't already have\n    that header set.\n\n    e.g.\n\n    @xframe_options_sameorigin\n    def some_view(request):\n        ...\n\n    \"\"\"\n    def wrapped_view(*args, **kwargs):\n        resp = view_func(*args, **kwargs)\n        if resp.get('X-Frame-Options', None) is None:\n            resp['X-Frame-Options'] = 'SAMEORIGIN' 在 response 的 header 中添加 X-Frame-Options 字段\n        return resp\n    return wraps(view_func, assigned=available_attrs(view_func))(wrapped_view)\n\n\ndef xframe_options_exempt(view_func):\n    \"\"\"\n    Modifies a view function by setting a response variable that instructs\n    XFrameOptionsMiddleware to NOT set the X-Frame-Options HTTP header. 取消 X-Frame-Options 设置\n\n    e.g.\n\n    @xframe_options_exempt\n    def some_view(request):\n        ...\n\n    \"\"\"\n    def wrapped_view(*args, **kwargs):\n        resp = view_func(*args, **kwargs)\n        resp.xframe_options_exempt = True\n        return resp\n    return wraps(view_func, assigned=available_attrs(view_func))(wrapped_view)\n"
  },
  {
    "path": "Django-1.5.1/django/views/decorators/csrf.py",
    "content": "import warnings\n\nfrom django.middleware.csrf import CsrfViewMiddleware, get_token\nfrom django.utils.decorators import decorator_from_middleware, available_attrs\nfrom functools import wraps\n\ncsrf_protect = decorator_from_middleware(CsrfViewMiddleware)\ncsrf_protect.__name__ = \"csrf_protect\"\ncsrf_protect.__doc__ = \"\"\"\nThis decorator adds CSRF protection in exactly the same way as\nCsrfViewMiddleware, but it can be used on a per view basis.  Using both, or\nusing the decorator multiple times, is harmless and efficient.\n\"\"\"\n\nCSRF 中间件\n\nclass _EnsureCsrfToken(CsrfViewMiddleware): 继承自 CsrfViewMiddleware\n    # We need this to behave just like the CsrfViewMiddleware, but not reject\n    # requests.\n    def _reject(self, request, reason):\n        return None\n\n\nrequires_csrf_token = decorator_from_middleware(_EnsureCsrfToken)\nrequires_csrf_token.__name__ = 'requires_csrf_token'\nrequires_csrf_token.__doc__ = \"\"\"\nUse this decorator on views that need a correct csrf_token available to\nRequestContext, but without the CSRF protection that csrf_protect\nenforces.\n\"\"\"\n\n\nclass _EnsureCsrfCookie(CsrfViewMiddleware): 继承自 CsrfViewMiddleware\n    def _reject(self, request, reason):\n        return None\n\n    def process_view(self, request, callback, callback_args, callback_kwargs):\n        retval = super(_EnsureCsrfCookie, self).process_view(request, callback, callback_args, callback_kwargs)\n        # Forces process_response to send the cookie\n        get_token(request)\n        return retval\n\n\nensure_csrf_cookie = decorator_from_middleware(_EnsureCsrfCookie)\nensure_csrf_cookie.__name__ = 'ensure_csrf_cookie'\nensure_csrf_cookie.__doc__ = \"\"\"\nUse this decorator to ensure that a view sets a CSRF cookie, whether or not it\nuses the csrf_token template tag, or the CsrfViewMiddleware is used.\n\"\"\"\n\n\ndef csrf_response_exempt(view_func):\n    \"\"\"\n    Modifies a view function so that its response is exempt 免除 from\n    from the post-processing of the CSRF middleware.\n    \"\"\"\n    warnings.warn(\"csrf_response_exempt is deprecated. It no longer performs a \"\n                  \"function, and calls to it can be removed.\", 好似被废弃的函数\n                  DeprecationWarning)\n    return view_func\n\n好似被废弃的函数 csrf_response_exempt is deprecated\ndef csrf_view_exempt(view_func):\n    \"\"\"\n    Marks a view function as being exempt from CSRF view protection.\n    \"\"\"\n    warnings.warn(\"csrf_view_exempt is deprecated. Use csrf_exempt instead.\",\n                  DeprecationWarning)\n    return csrf_exempt(view_func)\n\n上面的两个函数被免除了, csrf_exempt 代替\ndef csrf_exempt(view_func): \n    \"\"\"\n    Marks a view function as being exempt from the CSRF view protection.\n    \"\"\"\n    # We could just do view_func.csrf_exempt = True, but decorators\n    # are nicer if they don't have side-effects, so we return a new\n    # function.\n    def wrapped_view(*args, **kwargs):\n        return view_func(*args, **kwargs)\n\n        在调用 wraps 的时候, 会返回 partial 对象, 它近似于下面的代码, partial 对象调用 partial(wrapped_view), 实际是返回 wrapped_view\n        而在 wrapped_view 中会调用 view_func.\n        因此, 当调用 view_func 的时候, 实际上调用的是 wrapped_view, wrapped_view 因为 wraps 会拷贝 view_func 中的所有属性\n    wrapped_view.csrf_exempt = True\n    \"\"\"\n    def partial(func, *args, **keywords):\n        def newfunc(*fargs, **fkeywords):\n            newkeywords = keywords.copy()\n            newkeywords.update(fkeywords)\n            return func(*(args + fargs), **newkeywords)\n        newfunc.func = func  赋值 func \n        newfunc.args = args\n        newfunc.keywords = keywords\n        return newfunc\n    \"\"\"\n    return wraps(view_func, assigned=available_attrs(view_func))(wrapped_view)\n"
  },
  {
    "path": "Django-1.5.1/django/views/decorators/debug.py",
    "content": "import functools\n\n敏感词, 不知道为何用\ndef sensitive_variables(*variables):\n    \"\"\"\n    Indicates which variables used in the decorated function are sensitive, so\n    that those variables can later be treated in a special way, for example\n    by hiding them when logging unhandled exceptions.\n\n    Two forms are accepted:\n\n    * with specified variable names:\n\n        @sensitive_variables('user', 'password', 'credit_card')\n        def my_function(user):\n            password = user.pass_word\n            credit_card = user.credit_card_number\n            ...\n\n    * without any specified variable names, in which case it is assumed that\n      all variables are considered sensitive: 当参数为空的时候, 所有的变量都变成敏感词\n\n        @sensitive_variables()\n        def my_function()\n            ...\n    \"\"\"\n    def decorator(func):\n        @functools.wraps(func)\n        def sensitive_variables_wrapper(*func_args, **func_kwargs):\n            if variables:\n                sensitive_variables_wrapper.sensitive_variables = variables\n            else:\n                sensitive_variables_wrapper.sensitive_variables = '__ALL__'\n            return func(*func_args, **func_kwargs)\n        return sensitive_variables_wrapper\n\n    return decorator\n\n\ndef sensitive_post_parameters(*parameters):\n    \"\"\"\n    Indicates which POST parameters used in the decorated view are sensitive,\n    so that those parameters can later be treated in a special way, for example\n    by hiding them when logging unhandled exceptions.\n\n    Two forms are accepted:\n\n    * with specified parameters:\n\n        @sensitive_post_parameters('password', 'credit_card')\n        def my_view(request):\n            pw = request.POST['password']\n            cc = request.POST['credit_card']\n            ...\n\n    * without any specified parameters, in which case it is assumed that\n      all parameters are considered sensitive:\n\n        @sensitive_post_parameters()\n        def my_view(request)\n            ...\n    \"\"\"\n    def decorator(view):\n        @functools.wraps(view)\n        def sensitive_post_parameters_wrapper(request, *args, **kwargs):\n            if parameters:\n                request.sensitive_post_parameters = parameters\n            else:\n                request.sensitive_post_parameters = '__ALL__'\n            return view(request, *args, **kwargs)\n        return sensitive_post_parameters_wrapper\n    return decorator\n"
  },
  {
    "path": "Django-1.5.1/django/views/decorators/gzip.py",
    "content": "from django.utils.decorators import decorator_from_middleware\nfrom django.middleware.gzip import GZipMiddleware\n\n压缩\n\ngzip_page = decorator_from_middleware(GZipMiddleware) \ngzip_page.__doc__ = \"Decorator for views that gzips pages if the client supports it.\"\n"
  },
  {
    "path": "Django-1.5.1/django/views/decorators/http.py",
    "content": "\"\"\"\nDecorators for views based on HTTP headers.\n\"\"\"\n不懂\nimport logging\nfrom calendar import timegm\nfrom functools import wraps\n\nfrom django.utils.decorators import decorator_from_middleware, available_attrs\nfrom django.utils.http import http_date, parse_http_date_safe, parse_etags, quote_etag\nfrom django.middleware.http import ConditionalGetMiddleware\nfrom django.http import HttpResponseNotAllowed, HttpResponseNotModified, HttpResponse\n\nconditional_page = decorator_from_middleware(ConditionalGetMiddleware)\n\nlogger = logging.getLogger('django.request')\n\n\ndef require_http_methods(request_method_list):\n    \"\"\"\n    Decorator to make a view only accept particular request methods.  Usage::\n\n        @require_http_methods([\"GET\", \"POST\"]) 可以让 view 只接受某些 HTTP methods\n        def my_view(request):\n            # I can assume now that only GET or POST requests make it this far\n            # ...\n\n    Note that request methods should be in uppercase.\n    \"\"\"\n    def decorator(func):\n        @wraps(func, assigned=available_attrs(func))\n        def inner(request, *args, **kwargs):\n            if request.method not in request_method_list:\n                logger.warning('Method Not Allowed (%s): %s', request.method, request.path,\n                    extra={\n                        'status_code': 405,\n                        'request': request\n                    }\n                )\n                return HttpResponseNotAllowed(request_method_list)\n            return func(request, *args, **kwargs)\n        return inner\n\n    return decorator\n\nrequire_GET = require_http_methods([\"GET\"])\nrequire_GET.__doc__ = \"Decorator to require that a view only accept the GET method.\"\n\nrequire_POST = require_http_methods([\"POST\"])\nrequire_POST.__doc__ = \"Decorator to require that a view only accept the POST method.\"\n\nrequire_safe = require_http_methods([\"GET\", \"HEAD\"])\nrequire_safe.__doc__ = \"Decorator to require that a view only accept safe methods: GET and HEAD.\"\n\ndef condition(etag_func=None, last_modified_func=None):\n    \"\"\"\n    Decorator to support conditional retrieval (or change) for a view\n    function.\n\n    The parameters are callables to compute the ETag and last modified time for\n    the requested resource, respectively. The callables are passed the same\n    parameters as the view itself. The Etag function should return a string (or\n    None if the resource doesn't exist), whilst the last_modified function\n    should return a datetime object (or None if the resource doesn't exist).\n\n    If both parameters are provided, all the preconditions must be met before\n    the view is processed.\n\n    This decorator will either pass control to the wrapped view function or\n    return an HTTP 304 response (unmodified) or 412 response (preconditions\n    failed), depending upon the request method.\n\n    Any behavior marked as \"undefined\" in the HTTP spec (e.g. If-none-match\n    plus If-modified-since headers) will result in the view function being\n    called.\n    \"\"\"\n    def decorator(func):\n        @wraps(func, assigned=available_attrs(func))\n        def inner(request, *args, **kwargs):\n            # Get HTTP request headers\n            if_modified_since = request.META.get(\"HTTP_IF_MODIFIED_SINCE\") 时间\n\n            if if_modified_since:\n                if_modified_since = parse_http_date_safe(if_modified_since)\n\n            if_none_match = request.META.get(\"HTTP_IF_NONE_MATCH\")\n\n            if_match = request.META.get(\"HTTP_IF_MATCH\")\n\n            if if_none_match or if_match:\n                # There can be more than one ETag in the request, so we\n                # consider the list of values.\n                try:\n                    etags = parse_etags(if_none_match or if_match) 将所有的 hash 抽取出来   \n                except ValueError:\n                    # In case of invalid etag ignore all ETag headers.\n                    # Apparently Opera sends invalidly quoted headers at times\n                    # (we should be returning a 400 response, but that's a\n                    # little extreme) -- this is Django bug #10681.\n                    if_none_match = None\n                    if_match = None\n\n            # Compute values (if any) for the requested resource.\n\n            if etag_func:\n                res_etag = etag_func(request, *args, **kwargs)\n            else:\n                res_etag = None\n\n            if last_modified_func:\n                dt = last_modified_func(request, *args, **kwargs)\n                if dt:\n                    res_last_modified = timegm(dt.utctimetuple())\n                else:\n                    res_last_modified = None\n            else:\n                res_last_modified = None\n\n            response = None\n\n            if not ((if_match and (if_modified_since or if_none_match)) or\n                    (if_match and if_none_match)):\n                # We only get here if no undefined combinations of headers are\n                # specified.\n                if ((if_none_match and (res_etag in etags or\n                        \"*\" in etags and res_etag)) and\n                        (not if_modified_since or\n                            (res_last_modified and if_modified_since and\n                            res_last_modified <= if_modified_since))): 文件最后修改时间稍早\n\n                    if request.method in (\"GET\", \"HEAD\"):\n                        response = HttpResponseNotModified() 资源没有改变\n\n                    else:\n                        logger.warning('Precondition Failed: %s', request.path,\n                            extra={\n                                'status_code': 412,\n                                'request': request\n                            }\n                        )\n\n                        response = HttpResponse(status=412)\n\n                elif if_match and ((not res_etag and \"*\" in etags) or\n                        (res_etag and res_etag not in etags)):\n                    logger.warning('Precondition Failed: %s', request.path,\n                        extra={\n                            'status_code': 412,\n                            'request': request\n                        }\n                    )\n                    response = HttpResponse(status=412)\n\n                elif (not if_none_match and request.method == \"GET\" and\n                        res_last_modified and if_modified_since and\n                        res_last_modified <= if_modified_since):\n\n                    response = HttpResponseNotModified()\n\n            if response is None:\n                response = func(request, *args, **kwargs) 这里调用被修饰的函数\n\n            # Set relevant headers on the response if they don't already exist.\n            if res_last_modified and not response.has_header('Last-Modified'): 如果没有 Last-Modified 字段, 便添加\n                response['Last-Modified'] = http_date(res_last_modified)\n\n            if res_etag and not response.has_header('ETag'):\n                response['ETag'] = quote_etag(res_etag)\n\n            return response\n\n        return inner\n    return decorator\n\n# Shortcut decorators for common cases based on ETag or Last-Modified only\ndef etag(etag_func):\n    return condition(etag_func=etag_func)\n\ndef last_modified(last_modified_func):\n    return condition(last_modified_func=last_modified_func)\n\n"
  },
  {
    "path": "Django-1.5.1/django/views/decorators/vary.py",
    "content": "from functools import wraps\nfrom django.utils.cache import patch_vary_headers\nfrom django.utils.decorators import available_attrs\n\n添加 HTTP header\ndef vary_on_headers(*headers):\n    \"\"\"\n    A view decorator that adds the specified headers to the Vary header of the\n    response. Usage:\n\n       @vary_on_headers('Cookie', 'Accept-language')\n       def index(request):\n           ...\n\n    Note that the header names are not case-sensitive.\n    \"\"\"\n    def decorator(func):\n        @wraps(func, assigned=available_attrs(func))\n        def inner_func(*args, **kwargs):\n            response = func(*args, **kwargs)\n            patch_vary_headers(response, headers) 修补 HTTP 头\n            return response\n        return inner_func\n    return decorator\n\n添加 HTTP Cookie\ndef vary_on_cookie(func):\n    \"\"\"\n    A view decorator that adds \"Cookie\" to the Vary header of a response. This\n    indicates that a page's contents depends on cookies. Usage:\n\n        @vary_on_cookie\n        def index(request):\n            ...\n    \"\"\"\n    @wraps(func, assigned=available_attrs(func))\n    def inner_func(*args, **kwargs):\n        response = func(*args, **kwargs)\n        patch_vary_headers(response, ('Cookie',))\n        return response\n    return inner_func\n"
  },
  {
    "path": "Django-1.5.1/django/views/defaults.py",
    "content": "from django import http\nfrom django.template import (Context, RequestContext,\n                             loader, Template, TemplateDoesNotExist)\nfrom django.views.decorators.csrf import requires_csrf_token\n\n一些默认的错误页面\n\n当 csrfMiddleware 没有调用的时候, 会启用这个函数. 需要 @requires_csrf_token 的修饰符\n# This can be called when CsrfViewMiddleware.process_view has not run,\n# therefore need @requires_csrf_token in case the template needs\n# {% csrf_token %}.\n@requires_csrf_token\ndef page_not_found(request, template_name='404.html'):\n    \"\"\"\n    Default 404 handler.\n\n    Templates: :template:`404.html`\n    Context:\n        request_path\n            The path of the requested URL (e.g., '/app/pages/bad_page/')\n    \"\"\"\n    try:\n        template = loader.get_template(template_name)\n    except TemplateDoesNotExist:\n        template = Template(\n            '<h1>Not Found</h1>'\n            '<p>The requested URL {{ request_path }} was not found on this server.</p>')\n    return http.HttpResponseNotFound(template.render(RequestContext(request, {'request_path': request.path})))\n\n\n@requires_csrf_token\ndef server_error(request, template_name='500.html'):\n    \"\"\"\n    500 error handler.\n\n    Templates: :template:`500.html`\n    Context: None\n    \"\"\"\n    try:\n        template = loader.get_template(template_name)\n    except TemplateDoesNotExist:\n        return http.HttpResponseServerError('<h1>Server Error (500)</h1>')\n    return http.HttpResponseServerError(template.render(Context({})))\n\n\n# This can be called when CsrfViewMiddleware.process_view has not run,\n# therefore need @requires_csrf_token in case the template needs\n# {% csrf_token %}.\n@requires_csrf_token\ndef permission_denied(request, template_name='403.html'):\n    \"\"\"\n    Permission denied (403) handler.\n\n    Templates: :template:`403.html`\n    Context: None\n\n    If the template does not exist, an Http403 response containing the text\n    \"403 Forbidden\" (as per RFC 2616) will be returned.\n    \"\"\"\n    try:\n        template = loader.get_template(template_name)\n    except TemplateDoesNotExist:\n        return http.HttpResponseForbidden('<h1>403 Forbidden</h1>')\n    return http.HttpResponseForbidden(template.render(RequestContext(request)))\n\n\ndef shortcut(request, content_type_id, object_id):\n    # TODO: Remove this in Django 2.0.\n    # This is a legacy view that depends on the contenttypes framework.\n    # The core logic was moved to django.contrib.contenttypes.views after\n    # Django 1.0, but this remains here for backwards compatibility.\n    # Note that the import is *within* this function, rather than being at\n    # module level, because we don't want to assume people have contenttypes\n    # installed.\n    from django.contrib.contenttypes.views import shortcut as real_shortcut\n    return real_shortcut(request, content_type_id, object_id)\n"
  },
  {
    "path": "Django-1.5.1/django/views/generic/__init__.py",
    "content": "from django.views.generic.base import View, TemplateView, RedirectView\nfrom django.views.generic.dates import (ArchiveIndexView, YearArchiveView, MonthArchiveView,\n                                     WeekArchiveView, DayArchiveView, TodayArchiveView,\n                                     DateDetailView)\nfrom django.views.generic.detail import DetailView\nfrom django.views.generic.edit import FormView, CreateView, UpdateView, DeleteView\nfrom django.views.generic.list import ListView\n\n\nclass GenericViewError(Exception):\n    \"\"\"A problem in a generic view.\"\"\"\n    pass\n"
  },
  {
    "path": "Django-1.5.1/django/views/generic/base.py",
    "content": "from __future__ import unicode_literals\n\nimport logging\nfrom functools import update_wrapper\n\nfrom django import http\nfrom django.core.exceptions import ImproperlyConfigured\nfrom django.template.response import TemplateResponse\nfrom django.utils.decorators import classonlymethod\nfrom django.utils import six\n\nlogger = logging.getLogger('django.request')\n\n不懂\nclass ContextMixin(object):\n    \"\"\"\n    A default context mix in that passes the keyword arguments received by\n    get_context_data as the template context.\n    \"\"\"\n    返回 kwargs, 在 view 不在 kwargs 字典中的时候, 会设置 kwargs['view'] = self\n    def get_context_data(self, **kwargs):\n        if 'view' not in kwargs:\n            kwargs['view'] = self\n        return kwargs\n\n内部通用视图的父类\nclass View(object):\n    \"\"\"\n    所有 view 类的父类\n    Intentionally simple parent class for all views. Only implements\n    dispatch-by-method and simple sanity checking. 清晰的检测\n    \"\"\"\n\n    http_method_names = ['get', 'post', 'put', 'delete', 'head', 'options', 'trace'] 所有的 http method\n\n    def __init__(self, **kwargs):\n        \"\"\"\n        Constructor. Called in the URLconf; \n        can contain helpful extra keyword arguments, and other things.\n        \"\"\"\n        # Go through keyword arguments, and either save their values to our\n        # instance, or raise an error.\n        聪明的地方在这里, 如果需要色湖之多余的属性, 可以直接放入, 这里会设置\n        for key, value in six.iteritems(kwargs):\n            setattr(self, key, value)\n\n    @classonlymethod只能被class调用\n    def as_view(cls, **initkwargs):\n        \"\"\"\n        Main entry point for a request-response process.  请求应答入口\n        \"\"\"\n        # sanitize keyword arguments\n        for key in initkwargs:\n\n            不懂\n            if key in cls.http_method_names:\n                raise TypeError(\"You tried to pass in the %s method name as a \"\n                                \"keyword argument to %s(). Don't do that.\"\n                                % (key, cls.__name__))\n\n            if not hasattr(cls, key):\n                raise TypeError(\"%s() received an invalid keyword %r. as_view \"\n                                \"only accepts arguments that are already \"\n                                \"attributes of the class.\" % (cls.__name__, key))\n\n        def view(request, *args, **kwargs):\n            self = cls(**initkwargs)\n\n            if hasattr(self, 'get') and not hasattr(self, 'head'):\n                self.head = self.get 如果没有 head 就用 get 替代\n\n            self.request = request\n            self.args = args\n            self.kwargs = kwargs\n\n            #dispatch 在这里调用\n            return self.dispatch(request, *args, **kwargs) \n\n        # take name and docstring from class\n        让 cls 修饰 view\n                                                cls 可能是一个 templateview 类\n        update_wrapper(view, cls, updated=())  这句好似已经无效了\n\n        # and possible attributes set by decorators\n        # like csrf_exempt from dispatch\n        update_wrapper(view, cls.dispatch, assigned=())\n        return view\n\n    这是调度器, 应该所有的请求都会经由这里处理\n    def dispatch(self, request, *args, **kwargs):\n        尽可能调用正确的方法, 如果没有匹配的方法, 交给错误处理器\n        # Try to dispatch to the right method; if a method doesn't exist,\n        # defer to the error handler. Also defer to the error handler if the\n        # request method isn't on the approved list.\n\n        #如果是  'get', 'post', 'put', 'delete', 'head', 'options', 'trace' 之一\n        if request.method.lower() in self.http_method_names: \n            handler = getattr(self, request.method.lower(), self.http_method_not_allowed) 获取 get post head 等方法\n        else:\n            handler = self.http_method_not_allowed 这里是其他的 http 命令, django 会产生错误信息\n\n        return handler(request, *args, **kwargs) 参数放入\n\n    def http_method_not_allowed(self, request, *args, **kwargs):\n        logger.warning('Method Not Allowed (%s): %s', request.method, request.path, 产生警告\n            extra={\n                'status_code': 405,\n                'request': self.request\n            }\n        )\n        return http.HttpResponseNotAllowed(self._allowed_methods())\n\n    def options(self, request, *args, **kwargs):\n        \"\"\"\n        HTTP options 命令\n        Handles responding to requests for the OPTIONS HTTP verb.\n        \"\"\"\n        response = http.HttpResponse()\n        response['Allow'] = ', '.join(self._allowed_methods())\n        response['Content-Length'] = '0'\n        return response\n\n    def _allowed_methods(self): 产生允许的 http 命令\n        return [m.upper() for m in self.http_method_names if hasattr(self, m)]\n\n模板响应混入类, 可以渲染模板\nclass TemplateResponseMixin(object):\n    \"\"\"\n    A mixin that can be used to render a template. 渲染模板\n    \"\"\"\n    template_name = None 可以自定义模板\n    # from django.template.response import TemplateResponse\n    response_class = TemplateResponse\n    content_type = None\n\n    def render_to_response(self, context, **response_kwargs):\n        \"\"\"\n        Returns a response, using the `response_class` for this\n        view, with a template rendered with the given context.\n\n        If any keyword arguments are provided, they will be\n        passed to the constructor of the response class.\n        \"\"\"\n        response_kwargs.setdefault('content_type', self.content_type)\n\n    # from django.template.response import TemplateResponse\n\n        return self.response_class(\n            request = self.request,\n            template = self.get_template_names(), 子类可以重写\n            context = context,\n            **response_kwargs\n        )\n\n    def get_template_names(self):\n        \"\"\"\n        Returns a list of template names to be used for the request. Must return\n        a list. May not be called if render_to_response is overridden.\n        \"\"\"\n        if self.template_name is None:\n            raise ImproperlyConfigured(\n                \"TemplateResponseMixin requires either a definition of \"\n                \"'template_name' or an implementation of 'get_template_names()'\")\n        else:\n            return [self.template_name]\n\n\nclass TemplateView(TemplateResponseMixin, ContextMixin, View):\n    渲染模板的 view\n    \"\"\"\n    A view that renders a template.  This view will also pass into the context\n    any keyword arguments passed by the url conf.\n    \"\"\"\n    def get(self, request, *args, **kwargs):\n        context = self.get_context_data(**kwargs)\n        return self.render_to_response(context)\n\n\nclass RedirectView(View):\n    \"\"\"\n    具有重定向功能的的 view\n    A view that provides a redirect on any GET request.\n    \"\"\"\n    permanent = True 永久重定向\n    url = None\n    query_string = False\n\n    def get_redirect_url(self, **kwargs):\n        \"\"\"\n        Return the URL redirect to. Keyword arguments from the\n        URL pattern match generating the redirect request\n        are provided as kwargs to this method.\n        \"\"\"\n        if self.url:\n            url = self.url % kwargs\n            args = self.request.META.get('QUERY_STRING', '')\n            if args and self.query_string:\n                url = \"%s?%s\" % (url, args)\n            return url 把 query_string 放在后面, 返回 \n        else:\n            return None\n\n    def get(self, request, *args, **kwargs):\n        url = self.get_redirect_url(**kwargs) \n\n        if url:\n            if self.permanent:\n                return http.HttpResponsePermanentRedirect(url)\n            else:\n                return http.HttpResponseRedirect(url)\n        else:\n            警告\n            logger.warning('Gone: %s', self.request.path,\n                        extra={\n                            'status_code': 410,\n                            'request': self.request\n                        })\n            return http.HttpResponseGone()\n\n    def head(self, request, *args, **kwargs):\n        return self.get(request, *args, **kwargs)\n\n    def post(self, request, *args, **kwargs):\n        return self.get(request, *args, **kwargs)\n\n    def options(self, request, *args, **kwargs):\n        return self.get(request, *args, **kwargs)\n\n    def delete(self, request, *args, **kwargs):\n        return self.get(request, *args, **kwargs)\n\n    def put(self, request, *args, **kwargs):\n        return self.get(request, *args, **kwargs)\n"
  },
  {
    "path": "Django-1.5.1/django/views/generic/dates.py",
    "content": "from __future__ import unicode_literals\n\nimport datetime\nfrom django.conf import settings\nfrom django.db import models\nfrom django.core.exceptions import ImproperlyConfigured\nfrom django.http import Http404\nfrom django.utils.encoding import force_text\nfrom django.utils.functional import cached_property\nfrom django.utils.translation import ugettext as _\nfrom django.utils import timezone\nfrom django.views.generic.base import View\nfrom django.views.generic.detail import BaseDetailView, SingleObjectTemplateResponseMixin\nfrom django.views.generic.list import MultipleObjectMixin, MultipleObjectTemplateResponseMixin\n\nclass YearMixin(object):\n    \"\"\"\n    Mixin for views manipulating 操作 year-based data.\n    \"\"\"\n    year_format = '%Y'\n    year = None\n\n    def get_year_format(self):\n        \"\"\"\n        Get a year format string in strptime syntax to be used to parse the\n        year from url variables.\n        \"\"\"\n        return self.year_format\n\n    def get_year(self):\n        \"\"\"\n        Return the year for which this view should display data.\n        \"\"\"\n        year = self.year\n        if year is None:\n            try:\n                year = self.kwargs['year']\n            except KeyError:\n                try:\n                    year = self.request.GET['year']\n                except KeyError:\n                    raise Http404(_(\"No year specified\"))\n        return year\n\n    def get_next_year(self, date):\n        \"\"\"\n        Get the next valid year.\n        \"\"\"\n        return _get_next_prev(self, date, is_previous=False, period='year')\n\n    def get_previous_year(self, date):\n        \"\"\"\n        Get the previous valid year.\n        \"\"\"\n        return _get_next_prev(self, date, is_previous=True, period='year')\n\n    def _get_next_year(self, date):\n        \"\"\"\n        Return the start date of the next interval.\n\n        The interval is defined by start date <= item date < next start date.\n        \"\"\"\n        return date.replace(year=date.year + 1, month=1, day=1)\n\n    def _get_current_year(self, date):\n        \"\"\"\n        Return the start date of the current interval.\n        \"\"\"\n        return date.replace(month=1, day=1)\n\n\nclass MonthMixin(object):\n    \"\"\"\n    Mixin for views manipulating month-based data.\n    \"\"\"\n    month_format = '%b'\n    month = None\n\n    def get_month_format(self):\n        \"\"\"\n        Get a month format string in strptime syntax to be used to parse the\n        month from url variables.\n        \"\"\"\n        return self.month_format\n\n    def get_month(self):\n        \"\"\"\n        Return the month for which this view should display data.\n        \"\"\"\n        month = self.month\n        if month is None:\n            try:\n                month = self.kwargs['month']\n            except KeyError:\n                try:\n                    month = self.request.GET['month']\n                except KeyError:\n                    raise Http404(_(\"No month specified\"))\n        return month\n\n    def get_next_month(self, date):\n        \"\"\"\n        Get the next valid month.\n        \"\"\"\n        return _get_next_prev(self, date, is_previous=False, period='month')\n\n    def get_previous_month(self, date):\n        \"\"\"\n        Get the previous valid month.\n        \"\"\"\n        return _get_next_prev(self, date, is_previous=True, period='month')\n\n    def _get_next_month(self, date):\n        \"\"\"\n        Return the start date of the next interval.\n\n        The interval is defined by start date <= item date < next start date.\n        \"\"\"\n        if date.month == 12:\n            return date.replace(year=date.year + 1, month=1, day=1)\n        else:\n            return date.replace(month=date.month + 1, day=1)\n\n    def _get_current_month(self, date):\n        \"\"\"\n        Return the start date of the previous interval.\n        \"\"\"\n        return date.replace(day=1)\n\n\nclass DayMixin(object):\n    \"\"\"\n    Mixin for views manipulating day-based data.\n    \"\"\"\n    day_format = '%d'\n    day = None\n\n    def get_day_format(self):\n        \"\"\"\n        Get a day format string in strptime syntax to be used to parse the day\n        from url variables.\n        \"\"\"\n        return self.day_format\n\n    def get_day(self):\n        \"\"\"\n        Return the day for which this view should display data.\n        \"\"\"\n        day = self.day\n        if day is None:\n            try:\n                day = self.kwargs['day']\n            except KeyError:\n                try:\n                    day = self.request.GET['day']\n                except KeyError:\n                    raise Http404(_(\"No day specified\"))\n        return day\n\n    def get_next_day(self, date):\n        \"\"\"\n        Get the next valid day.\n        \"\"\"\n        return _get_next_prev(self, date, is_previous=False, period='day')\n\n    def get_previous_day(self, date):\n        \"\"\"\n        Get the previous valid day.\n        \"\"\"\n        return _get_next_prev(self, date, is_previous=True, period='day')\n\n    def _get_next_day(self, date):\n        \"\"\"\n        Return the start date of the next interval.\n\n        The interval is defined by start date <= item date < next start date.\n        \"\"\"\n        return date + datetime.timedelta(days=1)\n\n    def _get_current_day(self, date):\n        \"\"\"\n        Return the start date of the current interval.\n        \"\"\"\n        return date\n\n\nclass WeekMixin(object):\n    \"\"\"\n    Mixin for views manipulating week-based data.\n    \"\"\"\n    week_format = '%U'\n    week = None\n\n    def get_week_format(self):\n        \"\"\"\n        Get a week format string in strptime syntax to be used to parse the\n        week from url variables.\n        \"\"\"\n        return self.week_format\n\n    def get_week(self):\n        \"\"\"\n        Return the week for which this view should display data\n        \"\"\"\n        week = self.week\n        if week is None:\n            try:\n                week = self.kwargs['week']\n            except KeyError:\n                try:\n                    week = self.request.GET['week']\n                except KeyError:\n                    raise Http404(_(\"No week specified\"))\n        return week\n\n    def get_next_week(self, date):\n        \"\"\"\n        Get the next valid week.\n        \"\"\"\n        return _get_next_prev(self, date, is_previous=False, period='week')\n\n    def get_previous_week(self, date):\n        \"\"\"\n        Get the previous valid week.\n        \"\"\"\n        return _get_next_prev(self, date, is_previous=True, period='week')\n\n    def _get_next_week(self, date):\n        \"\"\"\n        Return the start date of the next interval.\n\n        The interval is defined by start date <= item date < next start date.\n        \"\"\"\n        return date + datetime.timedelta(days=7 - self._get_weekday(date))\n\n    def _get_current_week(self, date):\n        \"\"\"\n        Return the start date of the current interval.\n        \"\"\"\n        return date - datetime.timedelta(self._get_weekday(date))\n\n    def _get_weekday(self, date):\n        \"\"\"\n        Return the weekday for a given date.\n\n        The first day according to the week format is 0 and the last day is 6.\n        \"\"\"\n        week_format = self.get_week_format()\n        if week_format == '%W':                 # week starts on Monday\n            return date.weekday()\n        elif week_format == '%U':               # week starts on Sunday\n            return (date.weekday() + 1) % 7\n        else:\n            raise ValueError(\"unknown week format: %s\" % week_format)\n\n\nclass DateMixin(object):\n    \"\"\"\n    Mixin class for views manipulating date-based data.\n    \"\"\"\n    date_field = None\n    allow_future = False\n\n    def get_date_field(self):\n        \"\"\"\n        Get the name of the date field to be used to filter by.\n        \"\"\"\n        if self.date_field is None:\n            raise ImproperlyConfigured(\"%s.date_field is required.\" % self.__class__.__name__)\n        return self.date_field\n\n    def get_allow_future(self):\n        \"\"\"\n        Returns `True` if the view should be allowed to display objects from\n        the future.\n        \"\"\"\n        return self.allow_future\n\n    # Note: the following three methods only work in subclasses that also\n    # inherit SingleObjectMixin or MultipleObjectMixin.\n\n    @cached_property\n    def uses_datetime_field(self):\n        \"\"\"\n        Return `True` if the date field is a `DateTimeField` and `False`\n        if it's a `DateField`.\n        \"\"\"\n        model = self.get_queryset().model if self.model is None else self.model\n        field = model._meta.get_field(self.get_date_field())\n        return isinstance(field, models.DateTimeField)\n\n    def _make_date_lookup_arg(self, value):\n        \"\"\"\n        Convert a date into a datetime when the date field is a DateTimeField.\n\n        When time zone support is enabled, `date` is assumed to be in the\n        current time zone, so that displayed items are consistent with the URL.\n        \"\"\"\n        if self.uses_datetime_field:\n            value = datetime.datetime.combine(value, datetime.time.min)\n            if settings.USE_TZ:\n                value = timezone.make_aware(value, timezone.get_current_timezone())\n        return value\n\n    def _make_single_date_lookup(self, date):\n        \"\"\"\n        Get the lookup kwargs for filtering on a single date.\n\n        If the date field is a DateTimeField, we can't just filter on\n        date_field=date because that doesn't take the time into account.\n        \"\"\"\n        date_field = self.get_date_field()\n        if self.uses_datetime_field:\n            since = self._make_date_lookup_arg(date)\n            until = self._make_date_lookup_arg(date + datetime.timedelta(days=1))\n            return {\n                '%s__gte' % date_field: since,\n                '%s__lt' % date_field: until,\n            }\n        else:\n            # Skip self._make_date_lookup_arg, it's a no-op in this branch.\n            return {date_field: date}\n\n\nclass BaseDateListView(MultipleObjectMixin, DateMixin, View):\n    \"\"\"\n    Abstract base class for date-based 以日期为基础 views displaying a list of objects.\n    \"\"\"\n    allow_empty = False\n    date_list_period = 'year'\n\n    def get(self, request, *args, **kwargs):\n        self.date_list, self.object_list, extra_context = self.get_dated_items()\n        context = self.get_context_data(object_list=self.object_list,\n                                        date_list=self.date_list)\n        context.update(extra_context)\n        return self.render_to_response(context)\n\n    def get_dated_items(self):\n        \"\"\"\n        Obtain the list of dates and items.\n        \"\"\"\n        raise NotImplementedError('A DateView must provide an implementation of get_dated_items()')\n\n    def get_dated_queryset(self, ordering=None, **lookup):\n        \"\"\"\n        Get a queryset properly filtered according to `allow_future` and any\n        extra lookup kwargs.\n        \"\"\"\n        qs = self.get_queryset().filter(**lookup)\n        date_field = self.get_date_field()\n        allow_future = self.get_allow_future()\n        allow_empty = self.get_allow_empty()\n        paginate_by = self.get_paginate_by(qs)\n\n        if ordering is not None:\n            qs = qs.order_by(ordering)\n\n        if not allow_future:\n            now = timezone.now() if self.uses_datetime_field else timezone_today()\n            qs = qs.filter(**{'%s__lte' % date_field: now})\n\n        if not allow_empty:\n            # When pagination is enabled, it's better to do a cheap query\n            # than to load the unpaginated queryset in memory.\n            is_empty = len(qs) == 0 if paginate_by is None else not qs.exists()\n            if is_empty:\n                raise Http404(_(\"No %(verbose_name_plural)s available\") % {\n                        'verbose_name_plural': force_text(qs.model._meta.verbose_name_plural)\n                })\n\n        return qs\n\n    def get_date_list_period(self):\n        \"\"\"\n        Get the aggregation period for the list of dates: 'year', 'month', or 'day'.\n        \"\"\"\n        return self.date_list_period\n\n    def get_date_list(self, queryset, date_type=None, ordering='ASC'):\n        \"\"\"\n        Get a date list by calling `queryset.dates()`, checking along the way\n        for empty lists that aren't allowed.\n        \"\"\"\n        date_field = self.get_date_field()\n        allow_empty = self.get_allow_empty()\n        if date_type is None:\n            date_type = self.get_date_list_period()\n\n        date_list = queryset.dates(date_field, date_type, ordering)\n        if date_list is not None and not date_list and not allow_empty:\n            name = force_text(queryset.model._meta.verbose_name_plural)\n            raise Http404(_(\"No %(verbose_name_plural)s available\") %\n                          {'verbose_name_plural': name})\n\n        return date_list\n\n\nclass BaseArchiveIndexView(BaseDateListView):\n    \"\"\"\n    Base class for archives of date-based items.\n\n    Requires a response mixin.\n    \"\"\"\n    context_object_name = 'latest'\n\n    def get_dated_items(self):\n        \"\"\"\n        Return (date_list, items, extra_context) for this request.\n        \"\"\"\n        qs = self.get_dated_queryset(ordering='-%s' % self.get_date_field())\n        date_list = self.get_date_list(qs, ordering='DESC')\n\n        if not date_list:\n            qs = qs.none()\n\n        return (date_list, qs, {})\n\n\nclass ArchiveIndexView(MultipleObjectTemplateResponseMixin, BaseArchiveIndexView):\n    \"\"\"\n    Top-level archive of date-based items.\n    \"\"\"\n    template_name_suffix = '_archive'\n\n\nclass BaseYearArchiveView(YearMixin, BaseDateListView):\n    \"\"\"\n    List of objects published in a given year.\n    \"\"\"\n    date_list_period = 'month'\n    make_object_list = False\n\n    def get_dated_items(self):\n        \"\"\"\n        Return (date_list, items, extra_context) for this request.\n        \"\"\"\n        year = self.get_year()\n\n        date_field = self.get_date_field()\n        date = _date_from_string(year, self.get_year_format())\n\n        since = self._make_date_lookup_arg(date)\n        until = self._make_date_lookup_arg(self._get_next_year(date))\n        lookup_kwargs = {\n            '%s__gte' % date_field: since,\n            '%s__lt' % date_field: until,\n        }\n\n        qs = self.get_dated_queryset(ordering='-%s' % date_field, **lookup_kwargs)\n        date_list = self.get_date_list(qs)\n\n        if not self.get_make_object_list():\n            # We need this to be a queryset since parent classes introspect it\n            # to find information about the model.\n            qs = qs.none()\n\n        return (date_list, qs, {\n            'year': date,\n            'next_year': self.get_next_year(date),\n            'previous_year': self.get_previous_year(date),\n        })\n\n    def get_make_object_list(self):\n        \"\"\"\n        Return `True` if this view should contain the full list of objects in\n        the given year.\n        \"\"\"\n        return self.make_object_list\n\n\nclass YearArchiveView(MultipleObjectTemplateResponseMixin, BaseYearArchiveView):\n    \"\"\"\n    List of objects published in a given year.\n    \"\"\"\n    template_name_suffix = '_archive_year'\n\n\nclass BaseMonthArchiveView(YearMixin, MonthMixin, BaseDateListView):\n    \"\"\"\n    List of objects published in a given year.\n    \"\"\"\n    date_list_period = 'day'\n\n    def get_dated_items(self):\n        \"\"\"\n        Return (date_list, items, extra_context) for this request.\n        \"\"\"\n        year = self.get_year()\n        month = self.get_month()\n\n        date_field = self.get_date_field()\n        date = _date_from_string(year, self.get_year_format(),\n                                 month, self.get_month_format())\n\n        since = self._make_date_lookup_arg(date)\n        until = self._make_date_lookup_arg(self._get_next_month(date))\n        lookup_kwargs = {\n            '%s__gte' % date_field: since,\n            '%s__lt' % date_field: until,\n        }\n\n        qs = self.get_dated_queryset(**lookup_kwargs)\n        date_list = self.get_date_list(qs)\n\n        return (date_list, qs, {\n            'month': date,\n            'next_month': self.get_next_month(date),\n            'previous_month': self.get_previous_month(date),\n        })\n\n\nclass MonthArchiveView(MultipleObjectTemplateResponseMixin, BaseMonthArchiveView):\n    \"\"\"\n    List of objects published in a given year.\n    \"\"\"\n    template_name_suffix = '_archive_month'\n\n\nclass BaseWeekArchiveView(YearMixin, WeekMixin, BaseDateListView):\n    \"\"\"\n    List of objects published in a given week.\n    \"\"\"\n\n    def get_dated_items(self):\n        \"\"\"\n        Return (date_list, items, extra_context) for this request.\n        \"\"\"\n        year = self.get_year()\n        week = self.get_week()\n\n        date_field = self.get_date_field()\n        week_format = self.get_week_format()\n        week_start = {\n            '%W': '1',\n            '%U': '0',\n        }[week_format]\n        date = _date_from_string(year, self.get_year_format(),\n                                 week_start, '%w',\n                                 week, week_format)\n\n        since = self._make_date_lookup_arg(date)\n        until = self._make_date_lookup_arg(self._get_next_week(date))\n        lookup_kwargs = {\n            '%s__gte' % date_field: since,\n            '%s__lt' % date_field: until,\n        }\n\n        qs = self.get_dated_queryset(**lookup_kwargs)\n\n        return (None, qs, {\n            'week': date,\n            'next_week': self.get_next_week(date),\n            'previous_week': self.get_previous_week(date),\n        })\n\n\nclass WeekArchiveView(MultipleObjectTemplateResponseMixin, BaseWeekArchiveView):\n    \"\"\"\n    List of objects published in a given week.\n    \"\"\"\n    template_name_suffix = '_archive_week'\n\n\nclass BaseDayArchiveView(YearMixin, MonthMixin, DayMixin, BaseDateListView):\n    \"\"\"\n    List of objects published on a given day.\n    \"\"\"\n    def get_dated_items(self):\n        \"\"\"\n        Return (date_list, items, extra_context) for this request.\n        \"\"\"\n        year = self.get_year()\n        month = self.get_month()\n        day = self.get_day()\n\n        date = _date_from_string(year, self.get_year_format(),\n                                 month, self.get_month_format(),\n                                 day, self.get_day_format())\n\n        return self._get_dated_items(date)\n\n    def _get_dated_items(self, date):\n        \"\"\"\n        Do the actual heavy lifting of getting the dated items; this accepts a\n        date object so that TodayArchiveView can be trivial.\n        \"\"\"\n        lookup_kwargs = self._make_single_date_lookup(date)\n        qs = self.get_dated_queryset(**lookup_kwargs)\n\n        return (None, qs, {\n            'day': date,\n            'previous_day': self.get_previous_day(date),\n            'next_day': self.get_next_day(date),\n            'previous_month': self.get_previous_month(date),\n            'next_month': self.get_next_month(date)\n        })\n\n\nclass DayArchiveView(MultipleObjectTemplateResponseMixin, BaseDayArchiveView):\n    \"\"\"\n    List of objects published on a given day.\n    \"\"\"\n    template_name_suffix = \"_archive_day\"\n\n\nclass BaseTodayArchiveView(BaseDayArchiveView):\n    \"\"\"\n    List of objects published today.\n    \"\"\"\n\n    def get_dated_items(self):\n        \"\"\"\n        Return (date_list, items, extra_context) for this request.\n        \"\"\"\n        return self._get_dated_items(datetime.date.today())\n\n\nclass TodayArchiveView(MultipleObjectTemplateResponseMixin, BaseTodayArchiveView):\n    \"\"\"\n    List of objects published today.\n    \"\"\"\n    template_name_suffix = \"_archive_day\"\n\n\nclass BaseDateDetailView(YearMixin, MonthMixin, DayMixin, DateMixin, BaseDetailView):\n    \"\"\"\n    Detail view of a single object on a single date; this differs from the\n    standard DetailView by accepting a year/month/day in the URL.\n    \"\"\"\n    def get_object(self, queryset=None):\n        \"\"\"\n        Get the object this request displays.\n        \"\"\"\n        year = self.get_year()\n        month = self.get_month()\n        day = self.get_day()\n        date = _date_from_string(year, self.get_year_format(),\n                                 month, self.get_month_format(),\n                                 day, self.get_day_format())\n\n        # Use a custom queryset if provided\n        qs = queryset or self.get_queryset()\n\n        if not self.get_allow_future() and date > datetime.date.today():\n            raise Http404(_(\"Future %(verbose_name_plural)s not available because %(class_name)s.allow_future is False.\") % {\n                'verbose_name_plural': qs.model._meta.verbose_name_plural,\n                'class_name': self.__class__.__name__,\n            })\n\n        # Filter down a queryset from self.queryset using the date from the\n        # URL. This'll get passed as the queryset to DetailView.get_object,\n        # which'll handle the 404\n        lookup_kwargs = self._make_single_date_lookup(date)\n        qs = qs.filter(**lookup_kwargs)\n\n        return super(BaseDetailView, self).get_object(queryset=qs)\n\n\nclass DateDetailView(SingleObjectTemplateResponseMixin, BaseDateDetailView):\n    \"\"\"\n    Detail view of a single object on a single date; this differs from the\n    standard DetailView by accepting a year/month/day in the URL.\n    \"\"\"\n    template_name_suffix = '_detail'\n\n\ndef _date_from_string(year, year_format, month='', month_format='', day='', day_format='', delim='__'):\n    \"\"\"\n    Helper: get a datetime.date object given a format string and a year,\n    month, and day (only year is mandatory). Raise a 404 for an invalid date.\n    \"\"\"\n    format = delim.join((year_format, month_format, day_format))\n    datestr = delim.join((year, month, day))\n    try:\n        return datetime.datetime.strptime(datestr, format).date()\n    except ValueError:\n        raise Http404(_(\"Invalid date string '%(datestr)s' given format '%(format)s'\") % {\n            'datestr': datestr,\n            'format': format,\n        })\n\n\ndef _get_next_prev(generic_view, date, is_previous, period):\n    \"\"\"\n    Helper: Get the next or the previous valid date. The idea is to allow\n    links on month/day views to never be 404s by never providing a date\n    that'll be invalid for the given view.\n\n    This is a bit complicated since it handles different intervals of time,\n    hence the coupling to generic_view.\n\n    However in essence the logic comes down to:\n\n        * If allow_empty and allow_future are both true, this is easy: just\n          return the naive result (just the next/previous day/week/month,\n          reguardless of object existence.)\n\n        * If allow_empty is true, allow_future is false, and the naive result\n          isn't in the future, then return it; otherwise return None.\n\n        * If allow_empty is false and allow_future is true, return the next\n          date *that contains a valid object*, even if it's in the future. If\n          there are no next objects, return None.\n\n        * If allow_empty is false and allow_future is false, return the next\n          date that contains a valid object. If that date is in the future, or\n          if there are no next objects, return None.\n\n    \"\"\"\n    date_field = generic_view.get_date_field()\n    allow_empty = generic_view.get_allow_empty()\n    allow_future = generic_view.get_allow_future()\n\n    get_current = getattr(generic_view, '_get_current_%s' % period)\n    get_next = getattr(generic_view, '_get_next_%s' % period)\n\n    # Bounds of the current interval\n    start, end = get_current(date), get_next(date)\n\n    # If allow_empty is True, the naive result will be valid\n    if allow_empty:\n        if is_previous:\n            result = get_current(start - datetime.timedelta(days=1))\n        else:\n            result = end\n\n        if allow_future or result <= timezone_today():\n            return result\n        else:\n            return None\n\n    # Otherwise, we'll need to go to the database to look for an object\n    # whose date_field is at least (greater than/less than) the given\n    # naive result\n    else:\n        # Construct a lookup and an ordering depending on whether we're doing\n        # a previous date or a next date lookup.\n        if is_previous:\n            lookup = {'%s__lt' % date_field: generic_view._make_date_lookup_arg(start)}\n            ordering = '-%s' % date_field\n        else:\n            lookup = {'%s__gte' % date_field: generic_view._make_date_lookup_arg(end)}\n            ordering = date_field\n\n        # Filter out objects in the future if appropriate.\n        if not allow_future:\n            # Fortunately, to match the implementation of allow_future,\n            # we need __lte, which doesn't conflict with __lt above.\n            if generic_view.uses_datetime_field:\n                now = timezone.now()\n            else:\n                now = timezone_today()\n            lookup['%s__lte' % date_field] = now\n\n        qs = generic_view.get_queryset().filter(**lookup).order_by(ordering)\n\n        # Snag the first object from the queryset; if it doesn't exist that\n        # means there's no next/previous link available.\n        try:\n            result = getattr(qs[0], date_field)\n        except IndexError:\n            return None\n\n        # Convert datetimes to dates in the current time zone.\n        if generic_view.uses_datetime_field:\n            if settings.USE_TZ:\n                result = timezone.localtime(result)\n            result = result.date()\n\n        # Return the first day of the period.\n        return get_current(result)\n\n\ndef timezone_today():\n    \"\"\"\n    Return the current date in the current time zone.\n    \"\"\"\n    if settings.USE_TZ:\n        return timezone.localtime(timezone.now()).date()\n    else:\n        return datetime.date.today()\n"
  },
  {
    "path": "Django-1.5.1/django/views/generic/detail.py",
    "content": "from __future__ import unicode_literals\n\nfrom django.core.exceptions import ImproperlyConfigured, ObjectDoesNotExist\nfrom django.db import models\nfrom django.http import Http404\nfrom django.utils.translation import ugettext as _\nfrom django.views.generic.base import TemplateResponseMixin, ContextMixin, View\n\n显示 self.object 的数据, 用户可以重写 get_context_data 来自定义需要显示的数据,\nDetailView 默认只是返回一个模块中单个记录的数据, 可以重写 get_context_data 来返回需要的数据\n\nclass SingleObjectMixin(ContextMixin):\n    \"\"\"\n    Provides the ability to retrieve a single object for further manipulation. 将来的操作\n    \"\"\"\n    model = None\n    queryset = None\n    slug_field = 'slug'\n    context_object_name = None\n    slug_url_kwarg = 'slug'\n    pk_url_kwarg = 'pk'\n\n    def get_object(self, queryset=None):\n        \"\"\"\n        Returns the object the view is displaying.\n\n        By default this requires `self.queryset` and a `pk` or `slug` argument\n        in the URLconf, but subclasses can override this to return any object.\n        \"\"\"\n        # Use a custom queryset if provided; this is required for subclasses\n        # like DateDetailView\n        if queryset is None:\n            queryset = self.get_queryset()\n\n        # Next, try looking up by primary key.\n        pk = self.kwargs.get(self.pk_url_kwarg, None)\n        slug = self.kwargs.get(self.slug_url_kwarg, None)\n        if pk is not None:\n            queryset = queryset.filter(pk=pk)\n\n        # Next, try looking up by slug.\n        elif slug is not None:\n            slug_field = self.get_slug_field()\n            queryset = queryset.filter(**{slug_field: slug})\n\n        # If none of those are defined, it's an error.\n        else:\n            raise AttributeError(\"Generic detail view %s must be called with \"\n                                 \"either an object pk or a slug.\"\n                                 % self.__class__.__name__)\n\n        try:\n            # Get the single item from the filtered queryset\n            obj = queryset.get() 只要单个对象\n        except ObjectDoesNotExist:\n            raise Http404(_(\"No %(verbose_name)s found matching the query\") %\n                          {'verbose_name': queryset.model._meta.verbose_name})\n        return obj\n\n    def get_queryset(self):\n        \"\"\"\n        Get the queryset to look an object up against. May not be called if\n        `get_object` is overridden.\n        \"\"\"\n        if self.queryset is None:\n            if self.model:\n                return self.model._default_manager.all()\n            else:\n                raise ImproperlyConfigured(\"%(cls)s is missing a queryset. Define \"\n                                           \"%(cls)s.model, %(cls)s.queryset, or override \"\n                                           \"%(cls)s.get_queryset().\" % {\n                                                'cls': self.__class__.__name__\n                                        })\n        return self.queryset._clone()\n\n    def get_slug_field(self):\n        \"\"\"\n        Get the name of a slug field to be used to look up by slug.\n        \"\"\"\n        return self.slug_field\n\n    def get_context_object_name(self, obj):\n        \"\"\"\n        Get the name to use for the object.\n        \"\"\"\n        if self.context_object_name:\n            return self.context_object_name\n        elif isinstance(obj, models.Model):\n            return obj._meta.object_name.lower()\n        else:\n            return None\n\n    def get_context_data(self, **kwargs):\n        \"\"\"\n        Insert the single object into the context dict.\n        \"\"\"\n        context = {}\n        如果没有指定 template 的名字, 会自动推断\n        context_object_name = self.get_context_object_name(self.object)\n\n        if context_object_name:  \n            context[context_object_name] = self.object\n\n        context.update(kwargs)\n        return super(SingleObjectMixin, self).get_context_data(**context)\n\nclass BaseDetailView(SingleObjectMixin, View):\n    \"\"\"\n    A base view for displaying a single object 用于呈现单个对象的视图\n    \"\"\"\n    def get(self, request, *args, **kwargs):\n        self.object = self.get_object()\n        context = self.get_context_data(object=self.object)\n        return self.render_to_response(context)\n\n\nclass SingleObjectTemplateResponseMixin(TemplateResponseMixin):\n    template_name_field = None\n    template_name_suffix = '_detail'\n\n    def get_template_names(self): 重写 get_template_names 推断模板的名字\n        \"\"\"\n        Return a list of template names to be used for the request. May not be\n        called if render_to_response is overridden. Returns the following list:\n\n        * the value of ``template_name`` on the view (if provided)\n        * the contents of the ``template_name_field`` field on the\n          object instance that the view is operating upon (if available)\n        * ``<app_label>/<object_name><template_name_suffix>.html``        \n        \"\"\"\n        try:\n            names = super(SingleObjectTemplateResponseMixin, self).get_template_names()\n        except ImproperlyConfigured:\n            # If template_name isn't specified, it's not a problem --\n            # we just start with an empty list.\n            names = []\n\n        # If self.template_name_field is set, grab the value of the field\n        # of that name from the object; this is the most specific template\n        # name, if given.\n        if self.object and self.template_name_field:\n            name = getattr(self.object, self.template_name_field, None)\n            if name:\n                names.insert(0, name)\n\n        # The least-specific option is the default <app>/<model>_detail.html;\n        # only use this if the object in question is a model.\n        if isinstance(self.object, models.Model):\n            names.append(\"%s/%s%s.html\" % (\n                self.object._meta.app_label,\n                self.object._meta.object_name.lower(),\n                self.template_name_suffix\n            ))\n        elif hasattr(self, 'model') and self.model is not None and issubclass(self.model, models.Model):\n            names.append(\"%s/%s%s.html\" % (\n                self.model._meta.app_label,\n                self.model._meta.object_name.lower(),\n                self.template_name_suffix\n            ))\n        return names\n\n\nclass DetailView(SingleObjectTemplateResponseMixin, BaseDetailView):\n    \"\"\"\n    Render a \"detail\" view of an object.\n\n    By default this is a model instance looked up from `self.queryset`, but the\n    view will support display of *any* object by overriding `self.get_object()`.\n    \"\"\"\n"
  },
  {
    "path": "Django-1.5.1/django/views/generic/edit.py",
    "content": "from django.forms import models as model_forms\nfrom django.core.exceptions import ImproperlyConfigured\nfrom django.http import HttpResponseRedirect\nfrom django.utils.encoding import force_text\nfrom django.views.generic.base import TemplateResponseMixin, ContextMixin, View\nfrom django.views.generic.detail import (SingleObjectMixin,\n                        SingleObjectTemplateResponseMixin, BaseDetailView)\n\n这里大多数类里有 get 和 post 方法, 是不是 view 都要实现这些方法\n\n\n表单混入类, 处理 form 的类\nclass FormMixin(ContextMixin):\n    \"\"\"\n    A mixin that provides a way to show and handle a form in a request. \n    \"\"\"\n\n    initial = {}\n    form_class = None\n    success_url = None\n\n    def get_initial(self):\n        \"\"\"\n        Returns the initial data to use for forms on this view.\n        \"\"\"\n        return self.initial.copy()\n\n    def get_form_class(self):\n        \"\"\"\n        Returns the form class to use in this view\n        \"\"\"\n        return self.form_class\n\n    def get_form(self, form_class):\n        \"\"\"\n        Returns an instance of the form to be used in this view.\n        \"\"\"\n        返回实例了\n        return form_class(**self.get_form_kwargs())\n\n    def get_form_kwargs(self):keyword argument\n        \"\"\"\n        Returns the keyword arguments for instantiating the form.\n        \"\"\"\n        kwargs = {'initial': self.get_initial()}\n\n        if self.request.method in ('POST', 'PUT'):\n            kwargs.update({\n                POST 里面的数据放入 kwargs[\"data\"]\n                'data': self.request.POST,\n                'files': self.request.FILES,\n            })\n\n        return kwargs\n\n\n        不懂, 为什么要进行重定向\n    def get_success_url(self):\n        \"\"\"\n        Returns the supplied success URL.\n        \"\"\"\n        if self.success_url:\n            # Forcing possible reverse_lazy evaluation\n            url = force_text(self.success_url)\n\n        else:\n            raise ImproperlyConfigured(\n                \"No URL to redirect to. Provide a success_url.\")\n        return url\n\n    def form_valid(self, form):\n        \"\"\"\n        If the form is valid, redirect to the supplied URL.\n        \"\"\"\n        return HttpResponseRedirect(self.get_success_url())\n\n    def form_invalid(self, form):\n        \"\"\"\n        If the form is invalid, re-render the context data with the\n        data-filled form and errors.\n        \"\"\"\n        return self.render_to_response(self.get_context_data(form=form))\n\n\nclass ModelFormMixin(FormMixin, SingleObjectMixin):\n    \"\"\"\n    A mixin that provides a way to show and handle a modelform in a request.\n    \"\"\"\n\n    def get_form_class(self):\n        \"\"\"\n        Returns the form class to use in this view.\n        \"\"\"\n        if self.form_class:\n            return self.form_class\n        else:\n            if self.model is not None:\n                # If a model has been explicitly provided, use it\n                model = self.model\n            elif hasattr(self, 'object') and self.object is not None:\n                # If this view is operating on a single object, use\n                # the class of that object\n                model = self.object.__class__\n            else:\n                # Try to get a queryset and extract the model class\n                # from that\n                model = self.get_queryset().model\n            return model_forms.modelform_factory(model)\n\n    def get_form_kwargs(self):\n        \"\"\"\n        Returns the keyword arguments for instantiating the form.\n        \"\"\"\n        kwargs = super(ModelFormMixin, self).get_form_kwargs()\n        kwargs.update({'instance': self.object})\n        return kwargs\n\n    def get_success_url(self):\n        \"\"\"\n        Returns the supplied URL.\n        \"\"\"\n        if self.success_url:\n            url = self.success_url % self.object.__dict__\n        else:\n            try:\n                url = self.object.get_absolute_url()\n            except AttributeError:\n                raise ImproperlyConfigured(\n                    \"No URL to redirect to.  Either provide a url or define\"\n                    \" a get_absolute_url method on the Model.\")\n        return url\n\n    def form_valid(self, form):\n        \"\"\"\n        If the form is valid, save the associated model.\n        \"\"\"\n        self.object = form.save()\n        return super(ModelFormMixin, self).form_valid(form)\n\n    def get_context_data(self, **kwargs):\n        \"\"\"\n        If an object has been supplied, inject it into the context with the\n        supplied context_object_name name.\n        \"\"\"\n        context = {}\n        if self.object:\n            context['object'] = self.object\n            context_object_name = self.get_context_object_name(self.object)\n            if context_object_name:\n                context[context_object_name] = self.object\n        context.update(kwargs)\n        return super(ModelFormMixin, self).get_context_data(**context)\n\n表单处理视图, 当 get 请求的时候会渲染页面, 当 POST 的时候也会处理表单数据\nclass ProcessFormView(View): 这是笔误么?\n    \"\"\"\n    A mixin that renders a form on GET and processes it on POST.\n    \"\"\"\n    def get(self, request, *args, **kwargs):\n        \"\"\"\n        Handles GET requests and instantiates a blank version of the form.\n        \"\"\"\n        form_class = self.get_form_class()\n        form = self.get_form(form_class)\n        return self.render_to_response(self.get_context_data(form=form))\n\n    def post(self, request, *args, **kwargs):\n        \"\"\"\n        Handles POST requests, instantiating a form instance with the passed\n        POST variables and then checked for validity.\n        \"\"\"\n        form_class = self.get_form_class()\n        form = self.get_form(form_class)\n        if form.is_valid():\n            return self.form_valid(form)\n        else:\n            return self.form_invalid(form)\n\n    # PUT is a valid HTTP verb for creating (with a known URL) or editing an\n    # object, note that browsers only support POST for now.\n    def put(self, *args, **kwargs):\n        return self.post(*args, **kwargs)\n\n\nclass BaseFormView(FormMixin, ProcessFormView):\n    \"\"\"\n    A base view for displaying a form\n    \"\"\"\n\n\nclass FormView(TemplateResponseMixin, BaseFormView):\n    \"\"\"\n    A view for displaying a form, and rendering a template response.\n    \"\"\"\n\n\nclass BaseCreateView(ModelFormMixin, ProcessFormView):\n    \"\"\"\n    Base view for creating an new object instance.\n\n    Using this base class requires subclassing to provide a response mixin.\n    \"\"\"\n    def get(self, request, *args, **kwargs):\n        self.object = None\n        return super(BaseCreateView, self).get(request, *args, **kwargs)\n\n    def post(self, request, *args, **kwargs):\n        self.object = None\n        return super(BaseCreateView, self).post(request, *args, **kwargs)\n\n\nclass CreateView(SingleObjectTemplateResponseMixin, BaseCreateView):\n    \"\"\"\n    View for creating a new object instance,\n    with a response rendered by template.\n    \"\"\"\n    template_name_suffix = '_form'\n\n\nclass BaseUpdateView(ModelFormMixin, ProcessFormView):\n    \"\"\"\n    Base view for updating an existing object.\n\n    Using this base class requires subclassing to provide a response mixin.\n    \"\"\"\n    def get(self, request, *args, **kwargs):\n        self.object = self.get_object()\n        return super(BaseUpdateView, self).get(request, *args, **kwargs)\n\n    def post(self, request, *args, **kwargs):\n        self.object = self.get_object()\n        return super(BaseUpdateView, self).post(request, *args, **kwargs)\n\n\nclass UpdateView(SingleObjectTemplateResponseMixin, BaseUpdateView):\n    \"\"\"\n    View for updating an object,\n    with a response rendered by template.\n    \"\"\"\n    template_name_suffix = '_form'\n\n\nclass DeletionMixin(object):\n    \"\"\"\n    A mixin providing the ability to delete objects\n    \"\"\"\n    success_url = None\n\n    def delete(self, request, *args, **kwargs):\n        \"\"\"\n        Calls the delete() method on the fetched object and then\n        redirects to the success URL.\n        \"\"\"\n        self.object = self.get_object()\n        self.object.delete()\n        return HttpResponseRedirect(self.get_success_url())\n\n    # Add support for browsers which only accept GET and POST for now.\n    def post(self, *args, **kwargs):\n        return self.delete(*args, **kwargs)\n\n    def get_success_url(self):\n        if self.success_url:\n            return self.success_url\n        else:\n            raise ImproperlyConfigured(\n                \"No URL to redirect to. Provide a success_url.\")\n\n\nclass BaseDeleteView(DeletionMixin, BaseDetailView):\n    \"\"\"\n    Base view for deleting an object.\n\n    Using this base class requires subclassing to provide a response mixin.\n    \"\"\"\n\n\nclass DeleteView(SingleObjectTemplateResponseMixin, BaseDeleteView):\n    \"\"\"\n    View for deleting an object retrieved with `self.get_object()`,\n    with a response rendered by template.\n    \"\"\"\n    template_name_suffix = '_confirm_delete'\n"
  },
  {
    "path": "Django-1.5.1/django/views/generic/list.py",
    "content": "from __future__ import unicode_literals\n\nfrom django.core.paginator import Paginator, InvalidPage\nfrom django.core.exceptions import ImproperlyConfigured\nfrom django.http import Http404\nfrom django.utils.translation import ugettext as _\nfrom django.views.generic.base import TemplateResponseMixin, ContextMixin, View\n\n显示数据库中的数据, 可以指定某个模块 model, 可以分页\nclass MultipleObjectMixin(ContextMixin):\n    \"\"\"\n    A mixin for views manipulating multiple objects.\n    \"\"\"\n    allow_empty = True\n    queryset = None\n    model = None\n    paginate_by = None\n    context_object_name = None\n    paginator_class = Paginator\n    page_kwarg = 'page'\n\n    查询集\n    def get_queryset(self):\n        \"\"\"\n        Get the list of items for this view. This must be an iterable, and may\n        be a queryset (in which qs-specific behavior will be enabled).\n        \"\"\"\n        if self.queryset is not None:\n            queryset = self.queryset\n\n            if hasattr(queryset, '_clone'):\n                queryset = queryset._clone()\n\n        elif self.model is not None:\n            queryset = self.model._default_manager.all()\n\n        else:\n            raise ImproperlyConfigured(\"'%s' must define 'queryset' or 'model'\"\n                                       % self.__class__.__name__)\n        return queryset\n\n\n        分页的查询集\n    def paginate_queryset(self, queryset, page_size):\n        \"\"\"\n        Paginate the queryset, if needed.\n        \"\"\"\n        paginator = self.get_paginator(queryset, page_size, allow_empty_first_page=self.get_allow_empty())\n\n        page_kwarg = self.page_kwarg\n\n        page = self.kwargs.get(page_kwarg) or self.request.GET.get(page_kwarg) or 1\n\n        try:\n            page_number = int(page)\n        except ValueError:\n            if page == 'last':\n                page_number = paginator.num_pages\n            else:\n                raise Http404(_(\"Page is not 'last', nor can it be converted to an int.\"))\n        try:\n            page = paginator.page(page_number)\n            return (paginator, page, page.object_list, page.has_other_pages())\n\n        except InvalidPage as e:\n            raise Http404(_('Invalid page (%(page_number)s): %(message)s') % {\n                                'page_number': page_number,\n                                'message': str(e)\n            })\n\n    def get_paginate_by(self, queryset):\n        \"\"\"\n        Get the number of items to paginate by, or ``None`` for no pagination.\n        \"\"\"\n        return self.paginate_by\n\n    def get_paginator(self, queryset, per_page, orphans=0, allow_empty_first_page=True):\n        \"\"\"\n        Return an instance of the paginator for this view.\n        \"\"\"\n        return self.paginator_class(queryset, per_page, orphans=orphans, allow_empty_first_page=allow_empty_first_page)\n\n    def get_allow_empty(self):\n        \"\"\"\n        Returns ``True`` if the view should display empty lists, and ``False``\n        if a 404 should be raised instead.\n        \"\"\"\n        return self.allow_empty\n\n    def get_context_object_name(self, object_list):\n        \"\"\"\n        Get the name of the item to be used in the context.\n        \"\"\"\n        if self.context_object_name:\n            return self.context_object_name\n        elif hasattr(object_list, 'model'):\n            return '%s_list' % object_list.model._meta.object_name.lower()\n        else:\n            return None\n\n    def get_context_data(self, **kwargs):\n        \"\"\"\n        Get the context for this view.\n        \"\"\"\n        queryset = kwargs.pop('object_list')\n\n        page_size = self.get_paginate_by(queryset)\n\n        context_object_name = self.get_context_object_name(queryset) 推断\n\n        if page_size:\n            paginator, page, queryset, is_paginated = self.paginate_queryset(queryset, page_size)\n\n            context = {\n                'paginator': paginator,\n                'page_obj': page,\n                'is_paginated': is_paginated,\n                'object_list': queryset\n            }\n\n        else:\n\n            context = {\n                'paginator': None,\n                'page_obj': None,\n                'is_paginated': False,\n                'object_list': queryset\n            }\n\n        if context_object_name is not None:\n            context[context_object_name] = queryset\n\n        context.update(kwargs)\n\n        return super(MultipleObjectMixin, self).get_context_data(**context)\n\n\nclass BaseListView(MultipleObjectMixin, View):\n    \"\"\"\n    A base view for displaying a list of objects.\n    \"\"\"\n    def get(self, request, *args, **kwargs):\n        self.object_list = self.get_queryset()\n        allow_empty = self.get_allow_empty()\n\n        if not allow_empty:\n            # When pagination is enabled and object_list is a queryset,\n            # it's better to do a cheap query than to load the unpaginated\n            # queryset in memory.\n            if (self.get_paginate_by(self.object_list) is not None\n                and hasattr(self.object_list, 'exists')):\n                is_empty = not self.object_list.exists()\n\n            else:\n                is_empty = len(self.object_list) == 0\n\n            if is_empty:\n                raise Http404(_(\"Empty list and '%(class_name)s.allow_empty' is False.\")\n                        % {'class_name': self.__class__.__name__})\n\n        context = self.get_context_data(object_list=self.object_list)\n        return self.render_to_response(context)\n\n\nclass MultipleObjectTemplateResponseMixin(TemplateResponseMixin):\n    \"\"\"\n    Mixin for responding with a template and list of objects.\n    \"\"\"\n    template_name_suffix = '_list'\n\n    重写\n    def get_template_names(self):\n        \"\"\"\n        Return a list of template names to be used for the request. Must return\n        a list. May not be called if render_to_response is overridden.\n        \"\"\"\n        try:\n            names = super(MultipleObjectTemplateResponseMixin, self).get_template_names()\n        except ImproperlyConfigured:\n            # If template_name isn't specified, it's not a problem --\n            # we just start with an empty list.\n            names = []\n\n        # If the list is a queryset, we'll invent a template name based on the\n        # app and model name. This name gets put at the end of the template\n        # name list so that user-supplied names override the automatically-\n        # generated ones.\n        if hasattr(self.object_list, 'model'):\n            opts = self.object_list.model._meta\n            names.append(\"%s/%s%s.html\" % (opts.app_label, opts.object_name.lower(), self.template_name_suffix))\n\n        return names\n\n\nclass ListView(MultipleObjectTemplateResponseMixin, BaseListView):\n    \"\"\"\n    Render some list of objects, set by `self.model` or `self.queryset`.\n    `self.queryset` can actually be any iterable of items, not just a queryset.\n    \"\"\"\n"
  },
  {
    "path": "Django-1.5.1/django/views/i18n.py",
    "content": "import os\nimport gettext as gettext_module\n\nfrom django import http\nfrom django.conf import settings\nfrom django.utils import importlib\nfrom django.utils.translation import check_for_language, activate, to_locale, get_language\nfrom django.utils.text import javascript_quote\nfrom django.utils.encoding import smart_text\nfrom django.utils.formats import get_format_modules, get_format\nfrom django.utils._os import upath\nfrom django.utils.http import is_safe_url\nfrom django.utils import six\n\n国际化 \n\ndef set_language(request):\n    \"\"\"\n    Redirect to a given url while setting the chosen language in the\n    session or cookie. The url and the language code need to be\n    specified in the request parameters.\n\n    Since this view changes how the user will see the rest of the site, it must\n    only be accessed as a POST request. If called as a GET request, it will\n    redirect to the page in the request (the 'next' parameter) without changing\n    any state.\n    \"\"\"\n    next = request.REQUEST.get('next')\n    if not is_safe_url(url=next, host=request.get_host()):\n        next = request.META.get('HTTP_REFERER')\n        if not is_safe_url(url=next, host=request.get_host()):\n            next = '/'\n    response = http.HttpResponseRedirect(next)\n    if request.method == 'POST':\n        lang_code = request.POST.get('language', None)\n        if lang_code and check_for_language(lang_code):\n            if hasattr(request, 'session'):\n                request.session['django_language'] = lang_code\n            else:\n                response.set_cookie(settings.LANGUAGE_COOKIE_NAME, lang_code)\n    return response\n\ndef get_formats():\n    \"\"\"\n    Returns all formats strings required for i18n to work\n    \"\"\"\n    FORMAT_SETTINGS = (\n        'DATE_FORMAT', 'DATETIME_FORMAT', 'TIME_FORMAT',\n        'YEAR_MONTH_FORMAT', 'MONTH_DAY_FORMAT', 'SHORT_DATE_FORMAT',\n        'SHORT_DATETIME_FORMAT', 'FIRST_DAY_OF_WEEK', 'DECIMAL_SEPARATOR',\n        'THOUSAND_SEPARATOR', 'NUMBER_GROUPING',\n        'DATE_INPUT_FORMATS', 'TIME_INPUT_FORMATS', 'DATETIME_INPUT_FORMATS'\n    )\n    result = {}\n    for module in [settings] + get_format_modules(reverse=True):\n        for attr in FORMAT_SETTINGS:\n            result[attr] = get_format(attr)\n    src = []\n    for k, v in result.items():\n        if isinstance(v, (six.string_types, int)):\n            src.append(\"formats['%s'] = '%s';\\n\" % (javascript_quote(k), javascript_quote(smart_text(v))))\n        elif isinstance(v, (tuple, list)):\n            v = [javascript_quote(smart_text(value)) for value in v]\n            src.append(\"formats['%s'] = ['%s'];\\n\" % (javascript_quote(k), \"', '\".join(v)))\n    return ''.join(src)\n\nNullSource = \"\"\"\n/* gettext identity library */\n\nfunction gettext(msgid) { return msgid; }\nfunction ngettext(singular, plural, count) { return (count == 1) ? singular : plural; }\nfunction gettext_noop(msgid) { return msgid; }\nfunction pgettext(context, msgid) { return msgid; }\nfunction npgettext(context, singular, plural, count) { return (count == 1) ? singular : plural; }\n\"\"\"\n\nLibHead = \"\"\"\n/* gettext library */\n\nvar catalog = new Array();\n\"\"\"\n\nLibFoot = \"\"\"\n\nfunction gettext(msgid) {\n  var value = catalog[msgid];\n  if (typeof(value) == 'undefined') {\n    return msgid;\n  } else {\n    return (typeof(value) == 'string') ? value : value[0];\n  }\n}\n\nfunction ngettext(singular, plural, count) {\n  value = catalog[singular];\n  if (typeof(value) == 'undefined') {\n    return (count == 1) ? singular : plural;\n  } else {\n    return value[pluralidx(count)];\n  }\n}\n\nfunction gettext_noop(msgid) { return msgid; }\n\nfunction pgettext(context, msgid) {\n  var value = gettext(context + '\\\\x04' + msgid);\n  if (value.indexOf('\\\\x04') != -1) {\n    value = msgid;\n  }\n  return value;\n}\n\nfunction npgettext(context, singular, plural, count) {\n  var value = ngettext(context + '\\\\x04' + singular, context + '\\\\x04' + plural, count);\n  if (value.indexOf('\\\\x04') != -1) {\n    value = ngettext(singular, plural, count);\n  }\n  return value;\n}\n\"\"\"\n\nLibFormatHead = \"\"\"\n/* formatting library */\n\nvar formats = new Array();\n\n\"\"\"\n\nLibFormatFoot = \"\"\"\nfunction get_format(format_type) {\n    var value = formats[format_type];\n    if (typeof(value) == 'undefined') {\n      return format_type;\n    } else {\n      return value;\n    }\n}\n\"\"\"\n\nSimplePlural = \"\"\"\nfunction pluralidx(count) { return (count == 1) ? 0 : 1; }\n\"\"\"\n\nInterPolate = r\"\"\"\nfunction interpolate(fmt, obj, named) {\n  if (named) {\n    return fmt.replace(/%\\(\\w+\\)s/g, function(match){return String(obj[match.slice(2,-2)])});\n  } else {\n    return fmt.replace(/%s/g, function(match){return String(obj.shift())});\n  }\n}\n\"\"\"\n\nPluralIdx = r\"\"\"\nfunction pluralidx(n) {\n  var v=%s;\n  if (typeof(v) == 'boolean') {\n    return v ? 1 : 0;\n  } else {\n    return v;\n  }\n}\n\"\"\"\n\ndef null_javascript_catalog(request, domain=None, packages=None):\n    \"\"\"\n    Returns \"identity\" versions of the JavaScript i18n functions -- i.e.,\n    versions that don't actually do anything.\n    \"\"\"\n    src = [NullSource, InterPolate, LibFormatHead, get_formats(), LibFormatFoot]\n    return http.HttpResponse(''.join(src), 'text/javascript')\n\ndef javascript_catalog(request, domain='djangojs', packages=None):\n    \"\"\"\n    Returns the selected language catalog as a javascript library.\n\n    Receives the list of packages to check for translations in the\n    packages parameter either from an infodict or as a +-delimited\n    string from the request. Default is 'django.conf'.\n\n    Additionally you can override the gettext domain for this view,\n    but usually you don't want to do that, as JavaScript messages\n    go to the djangojs domain. But this might be needed if you\n    deliver your JavaScript source from Django templates.\n    \"\"\"\n    if request.GET:\n        if 'language' in request.GET:\n            if check_for_language(request.GET['language']):\n                activate(request.GET['language'])\n    if packages is None:\n        packages = ['django.conf']\n    if isinstance(packages, six.string_types):\n        packages = packages.split('+')\n    packages = [p for p in packages if p == 'django.conf' or p in settings.INSTALLED_APPS]\n    default_locale = to_locale(settings.LANGUAGE_CODE)\n    locale = to_locale(get_language())\n    t = {}\n    paths = []\n    en_selected = locale.startswith('en')\n    en_catalog_missing = True\n    # paths of requested packages\n    for package in packages:\n        p = importlib.import_module(package)\n        path = os.path.join(os.path.dirname(upath(p.__file__)), 'locale')\n        paths.append(path)\n    # add the filesystem paths listed in the LOCALE_PATHS setting\n    paths.extend(list(reversed(settings.LOCALE_PATHS)))\n    # first load all english languages files for defaults\n    for path in paths:\n        try:\n            catalog = gettext_module.translation(domain, path, ['en'])\n            t.update(catalog._catalog)\n        except IOError:\n            pass\n        else:\n            # 'en' is the selected language and at least one of the packages\n            # listed in `packages` has an 'en' catalog\n            if en_selected:\n                en_catalog_missing = False\n    # next load the settings.LANGUAGE_CODE translations if it isn't english\n    if default_locale != 'en':\n        for path in paths:\n            try:\n                catalog = gettext_module.translation(domain, path, [default_locale])\n            except IOError:\n                catalog = None\n            if catalog is not None:\n                t.update(catalog._catalog)\n    # last load the currently selected language, if it isn't identical to the default.\n    if locale != default_locale:\n        # If the currently selected language is English but it doesn't have a\n        # translation catalog (presumably due to being the language translated\n        # from) then a wrong language catalog might have been loaded in the\n        # previous step. It needs to be discarded.\n        if en_selected and en_catalog_missing:\n            t = {}\n        else:\n            locale_t = {}\n            for path in paths:\n                try:\n                    catalog = gettext_module.translation(domain, path, [locale])\n                except IOError:\n                    catalog = None\n                if catalog is not None:\n                    locale_t.update(catalog._catalog)\n            if locale_t:\n                t = locale_t\n    src = [LibHead]\n    plural = None\n    if '' in t:\n        for l in t[''].split('\\n'):\n            if l.startswith('Plural-Forms:'):\n                plural = l.split(':',1)[1].strip()\n    if plural is not None:\n        # this should actually be a compiled function of a typical plural-form:\n        # Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n        plural = [el.strip() for el in plural.split(';') if el.strip().startswith('plural=')][0].split('=',1)[1]\n        src.append(PluralIdx % plural)\n    else:\n        src.append(SimplePlural)\n    csrc = []\n    pdict = {}\n    for k, v in t.items():\n        if k == '':\n            continue\n        if isinstance(k, six.string_types):\n            csrc.append(\"catalog['%s'] = '%s';\\n\" % (javascript_quote(k), javascript_quote(v)))\n        elif isinstance(k, tuple):\n            if k[0] not in pdict:\n                pdict[k[0]] = k[1]\n            else:\n                pdict[k[0]] = max(k[1], pdict[k[0]])\n            csrc.append(\"catalog['%s'][%d] = '%s';\\n\" % (javascript_quote(k[0]), k[1], javascript_quote(v)))\n        else:\n            raise TypeError(k)\n    csrc.sort()\n    for k, v in pdict.items():\n        src.append(\"catalog['%s'] = [%s];\\n\" % (javascript_quote(k), ','.join([\"''\"]*(v+1))))\n    src.extend(csrc)\n    src.append(LibFoot)\n    src.append(InterPolate)\n    src.append(LibFormatHead)\n    src.append(get_formats())\n    src.append(LibFormatFoot)\n    src = ''.join(src)\n    return http.HttpResponse(src, 'text/javascript')\n"
  },
  {
    "path": "Django-1.5.1/django/views/static.py",
    "content": "\"\"\"\nViews and functions for serving static files. These are only to be used\nduring development, and SHOULD NOT be used in a production setting.\n只有在调试的时候用到.\n\"\"\"\nfrom __future__ import unicode_literals\n\nimport mimetypes\nimport os\nimport stat\nimport posixpath\nimport re\n\ntry:\n    from urllib.parse import unquote\nexcept ImportError:     # Python 2\n    from urllib import unquote\n\nfrom django.http import (CompatibleStreamingHttpResponse, Http404,\n    HttpResponse, HttpResponseRedirect, HttpResponseNotModified)\nfrom django.template import loader, Template, Context, TemplateDoesNotExist\nfrom django.utils.http import http_date, parse_http_date\nfrom django.utils.translation import ugettext as _, ugettext_noop\n\ndef serve(request, path, document_root=None, show_indexes=False):\n    \"\"\"\n    Serve static files below a given point in the directory structure.\n\n    To use, put a URL pattern such as::\n\n        (r'^(?P<path>.*)$', 'django.views.static.serve', {'document_root' : '/path/to/my/files/'})\n\n    in your URLconf. You must provide the ``document_root`` param. You may\n    also set ``show_indexes`` to ``True`` if you'd like to serve a basic index\n    of the directory.  This index view will use the template hardcoded below,\n    but if you'd like to override it, you can create a template called\n    ``static/directory_index.html``.\n    \"\"\"\n    path = posixpath.normpath(unquote(path))\n    path = path.lstrip('/')\n    newpath = ''\n    for part in path.split('/'):\n        if not part:\n            # Strip empty path components.\n            continue\n\n        drive, part = os.path.splitdrive(part)\n        head, part = os.path.split(part)\n        if part in (os.curdir, os.pardir):\n            # Strip '.' and '..' in path.\n            continue\n        newpath = os.path.join(newpath, part).replace('\\\\', '/')\n\n    if newpath and path != newpath:\n        return HttpResponseRedirect(newpath)\n\n    fullpath = os.path.join(document_root, newpath)\n\n    if os.path.isdir(fullpath): 是否存在\n        if show_indexes:\n            return directory_index(newpath, fullpath) 开始返回\n        raise Http404(_(\"Directory indexes are not allowed here.\")) 否者错误\n\n    if not os.path.exists(fullpath): 如果不存在, 错误\n        raise Http404(_('\"%(path)s\" does not exist') % {'path': fullpath})\n\n    # Respect the If-Modified-Since header.\n    statobj = os.stat(fullpath)\n    mimetype, encoding = mimetypes.guess_type(fullpath)\n    mimetype = mimetype or 'application/octet-stream'\n\n    if not was_modified_since(request.META.get('HTTP_IF_MODIFIED_SINCE'),\n                              statobj.st_mtime, statobj.st_size):\n        return HttpResponseNotModified() 如果没有找到就直接返回 not modified since\n\n    response = CompatibleStreamingHttpResponse(open(fullpath, 'rb'), content_type=mimetype)\n    response[\"Last-Modified\"] = http_date(statobj.st_mtime)\n\n    if stat.S_ISREG(statobj.st_mode):\n        response[\"Content-Length\"] = statobj.st_size\n\n    if encoding:\n        response[\"Content-Encoding\"] = encoding\n\n    return response\n\n\nDEFAULT_DIRECTORY_INDEX_TEMPLATE = \"\"\"\n{% load i18n %}\n<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\" />\n    <meta http-equiv=\"Content-Language\" content=\"en-us\" />\n    <meta name=\"robots\" content=\"NONE,NOARCHIVE\" />\n    <title>{% blocktrans %}Index of {{ directory }}{% endblocktrans %}</title>\n  </head>\n  <body>\n    <h1>{% blocktrans %}Index of {{ directory }}{% endblocktrans %}</h1>\n    <ul>\n      {% ifnotequal directory \"/\" %}\n      <li><a href=\"../\">../</a></li>\n      {% endifnotequal %}\n      {% for f in file_list %}\n      <li><a href=\"{{ f|urlencode }}\">{{ f }}</a></li> 显示文件\n      {% endfor %}\n    </ul>\n  </body>\n</html>\n\"\"\"\ntemplate_translatable = ugettext_noop(\"Index of %(directory)s\")\n\ndef directory_index(path, fullpath):\n    try:\n        t = loader.select_template(['static/directory_index.html',\n                'static/directory_index']) 如果这个模板不存在, 则会加载默认的模板\n    except TemplateDoesNotExist:\n        t = Template(DEFAULT_DIRECTORY_INDEX_TEMPLATE, name='Default directory index template')\n\n    files = []\n\n    for f in os.listdir(fullpath):\n        if not f.startswith('.'):\n            if os.path.isdir(os.path.join(fullpath, f)):\n                f += '/'\n            files.append(f)\n\n    c = Context({\n        'directory' : path + '/',\n        'file_list' : files,\n    })\n\n    return HttpResponse(t.render(c))\n\ndef was_modified_since(header=None, mtime=0, size=0):\n    \"\"\"\n    Was something modified since the user last downloaded it?\n\n    header\n      This is the value of the If-Modified-Since header.  If this is None,\n      I'll just return True.\n\n    mtime\n      This is the modification time of the item we're talking about.\n\n    size\n      This is the size of the item we're talking about.\n    \"\"\"\n    try:\n        if header is None:\n            raise ValueError\n\n        matches = re.match(r\"^([^;]+)(; length=([0-9]+))?$\", header, 在 header 中用正则表达式抽取 last modified since 和 length\n                           re.IGNORECASE)\n\n        header_mtime = parse_http_date(matches.group(1))\n        header_len = matches.group(3)\n\n        if header_len and int(header_len) != size:\n            raise ValueError\n\n        if int(mtime) > header_mtime:\n            raise ValueError\n\n    except (AttributeError, ValueError, OverflowError):\n        return True 奇怪的处理方式\n\n    return False\n"
  },
  {
    "path": "Django-1.5.1/docs/Makefile",
    "content": "# Makefile for Sphinx documentation\n#\n\n# You can set these variables from the command line.\nSPHINXOPTS    =\nSPHINXBUILD   = sphinx-build\nPAPER         =\nBUILDDIR      = _build\n\n# Internal variables.\nPAPEROPT_a4     = -D latex_paper_size=a4\nPAPEROPT_letter = -D latex_paper_size=letter\nALLSPHINXOPTS   = -n -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .\n# the i18n builder cannot share the environment and doctrees with the others\nI18NSPHINXOPTS  = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .\n\n.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext\n\nhelp:\n\t@echo \"Please use \\`make <target>' where <target> is one of\"\n\t@echo \"  html       to make standalone HTML files\"\n\t@echo \"  dirhtml    to make HTML files named index.html in directories\"\n\t@echo \"  singlehtml to make a single large HTML file\"\n\t@echo \"  pickle     to make pickle files\"\n\t@echo \"  json       to make JSON files\"\n\t@echo \"  htmlhelp   to make HTML files and a HTML help project\"\n\t@echo \"  qthelp     to make HTML files and a qthelp project\"\n\t@echo \"  devhelp    to make HTML files and a Devhelp project\"\n\t@echo \"  epub       to make an epub\"\n\t@echo \"  latex      to make LaTeX files, you can set PAPER=a4 or PAPER=letter\"\n\t@echo \"  latexpdf   to make LaTeX files and run them through pdflatex\"\n\t@echo \"  text       to make text files\"\n\t@echo \"  man        to make manual pages\"\n\t@echo \"  texinfo    to make a Texinfo source file\"\n\t@echo \"  gettext    to make PO message catalogs\"\n\t@echo \"  changes    to make an overview of all changed/added/deprecated items\"\n\t@echo \"  linkcheck  to check all external links for integrity\"\n\t@echo \"  doctest    to run all doctests embedded in the documentation (if enabled)\"\n\nclean:\n\t-rm -rf $(BUILDDIR)/*\n\nhtml:\n\t$(SPHINXBUILD) -b djangohtml $(ALLSPHINXOPTS) $(BUILDDIR)/html\n\t@echo\n\t@echo \"Build finished. The HTML pages are in $(BUILDDIR)/html.\"\n\ndirhtml:\n\t$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml\n\t@echo\n\t@echo \"Build finished. The HTML pages are in $(BUILDDIR)/dirhtml.\"\n\nsinglehtml:\n\t$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml\n\t@echo\n\t@echo \"Build finished. The HTML page is in $(BUILDDIR)/singlehtml.\"\n\npickle:\n\t$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle\n\t@echo\n\t@echo \"Build finished; now you can process the pickle files.\"\n\njson:\n\t$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json\n\t@echo\n\t@echo \"Build finished; now you can process the JSON files.\"\n\nhtmlhelp:\n\t$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp\n\t@echo\n\t@echo \"Build finished; now you can run HTML Help Workshop with the\" \\\n\t      \".hhp project file in $(BUILDDIR)/htmlhelp.\"\n\nqthelp:\n\t$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp\n\t@echo\n\t@echo \"Build finished; now you can run \"qcollectiongenerator\" with the\" \\\n\t      \".qhcp project file in $(BUILDDIR)/qthelp, like this:\"\n\t@echo \"# qcollectiongenerator $(BUILDDIR)/qthelp/django.qhcp\"\n\t@echo \"To view the help file:\"\n\t@echo \"# assistant -collectionFile $(BUILDDIR)/qthelp/django.qhc\"\n\ndevhelp:\n\t$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp\n\t@echo\n\t@echo \"Build finished.\"\n\t@echo \"To view the help file:\"\n\t@echo \"# mkdir -p $$HOME/.local/share/devhelp/django\"\n\t@echo \"# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/django\"\n\t@echo \"# devhelp\"\n\nepub:\n\t$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub\n\t@echo\n\t@echo \"Build finished. The epub file is in $(BUILDDIR)/epub.\"\n\nlatex:\n\t$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex\n\t@echo\n\t@echo \"Build finished; the LaTeX files are in $(BUILDDIR)/latex.\"\n\t@echo \"Run \\`make' in that directory to run these through (pdf)latex\" \\\n\t      \"(use \\`make latexpdf' here to do that automatically).\"\n\nlatexpdf:\n\t$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex\n\t@echo \"Running LaTeX files through pdflatex...\"\n\tmake -C $(BUILDDIR)/latex all-pdf\n\t@echo \"pdflatex finished; the PDF files are in $(BUILDDIR)/latex.\"\n\ntext:\n\t$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text\n\t@echo\n\t@echo \"Build finished. The text files are in $(BUILDDIR)/text.\"\n\nman:\n\t$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man\n\t@echo\n\t@echo \"Build finished. The manual pages are in $(BUILDDIR)/man.\"\n\ntexinfo:\n\t$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo\n\t@echo\n\t@echo \"Build finished; the Texinfo files are in $(BUILDDIR)/texinfo.\"\n\ngettext:\n\t$(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale\n\t@echo\n\t@echo \"Build finished. The message catalogs are in $(BUILDDIR)/locale.\"\n\nchanges:\n\t$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes\n\t@echo\n\t@echo \"The overview file is in $(BUILDDIR)/changes.\"\n\nlinkcheck:\n\t$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck\n\t@echo\n\t@echo \"Link check complete; look for any errors in the above output \" \\\n\t      \"or in $(BUILDDIR)/linkcheck/output.txt.\"\n\ndoctest:\n\t$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest\n\t@echo \"Testing of doctests in the sources finished, look at the \" \\\n\t      \"results in $(BUILDDIR)/doctest/output.txt.\"\n"
  },
  {
    "path": "Django-1.5.1/docs/README",
    "content": "The documentation in this tree is in plain text files and can be viewed using\nany text file viewer.\n\nIt uses ReST (reStructuredText) [1], and the Sphinx documentation system [2].  \nThis allows it to be built into other forms for easier viewing and browsing.\n\nTo create an HTML version of the docs:\n\n* Install Sphinx (using ``sudo pip install Sphinx`` or some other method)\n\n* In this docs/ directory, type ``make html`` (or ``make.bat html`` on\n  Windows) at a shell prompt.\n\nThe documentation in _build/html/index.html can then be viewed in a web browser.\n\n[1] http://docutils.sourceforge.net/rst.html\n[2] http://sphinx.pocoo.org/\n"
  },
  {
    "path": "Django-1.5.1/docs/_ext/applyxrefs.py",
    "content": "\"\"\"Adds xref targets to the top of files.\"\"\"\n\nimport sys\nimport os\n\ntesting = False\n\nDONT_TOUCH = (\n        './index.txt',\n        )\n\ndef target_name(fn):\n    if fn.endswith('.txt'):\n        fn = fn[:-4]\n    return '_' + fn.lstrip('./').replace('/', '-')\n\ndef process_file(fn, lines):\n    lines.insert(0, '\\n')\n    lines.insert(0, '.. %s:\\n' % target_name(fn))\n    try:\n        with open(fn, 'w') as fp:\n            fp.writelines(lines)\n    except IOError:\n        print(\"Can't open %s for writing. Not touching it.\" % fn)\n\ndef has_target(fn):\n    try:\n        with open(fn, 'r') as fp:\n            lines = fp.readlines()\n    except IOError:\n        print(\"Can't open or read %s. Not touching it.\" % fn)\n        return (True, None)\n\n    #print fn, len(lines)\n    if len(lines) < 1:\n        print(\"Not touching empty file %s.\" % fn)\n        return (True, None)\n    if lines[0].startswith('.. _'):\n        return (True, None)\n    return (False, lines)\n\ndef main(argv=None):\n    if argv is None:\n        argv = sys.argv\n\n    if len(argv) == 1:\n        argv.extend('.')\n\n    files = []\n    for root in argv[1:]:\n        for (dirpath, dirnames, filenames) in os.walk(root):\n            files.extend([(dirpath, f) for f in filenames])\n    files.sort()\n    files = [os.path.join(p, fn) for p, fn in files if fn.endswith('.txt')]\n    #print files\n\n    for fn in files:\n        if fn in DONT_TOUCH:\n            print(\"Skipping blacklisted file %s.\" % fn)\n            continue\n\n        target_found, lines = has_target(fn)\n        if not target_found:\n            if testing:\n                print('%s: %s' % (fn, lines[0]))\n            else:\n                print(\"Adding xref to %s\" % fn)\n                process_file(fn, lines)\n        else:\n            print(\"Skipping %s: already has a xref\" % fn)\n\nif __name__ == '__main__':\n    sys.exit(main())\n"
  },
  {
    "path": "Django-1.5.1/docs/_ext/djangodocs.py",
    "content": "\"\"\"\nSphinx plugins for Django documentation.\n\"\"\"\nimport json\nimport os\nimport re\n\nfrom docutils import nodes, transforms\n\nfrom sphinx import addnodes, roles, __version__ as sphinx_ver\nfrom sphinx.builders.html import StandaloneHTMLBuilder\nfrom sphinx.writers.html import SmartyPantsHTMLTranslator\nfrom sphinx.util.console import bold\nfrom sphinx.util.compat import Directive\n\n# RE for option descriptions without a '--' prefix\nsimple_option_desc_re = re.compile(\n    r'([-_a-zA-Z0-9]+)(\\s*.*?)(?=,\\s+(?:/|-|--)|$)')\n\ndef setup(app):\n    app.add_crossref_type(\n        directivename = \"setting\",\n        rolename      = \"setting\",\n        indextemplate = \"pair: %s; setting\",\n    )\n    app.add_crossref_type(\n        directivename = \"templatetag\",\n        rolename      = \"ttag\",\n        indextemplate = \"pair: %s; template tag\"\n    )\n    app.add_crossref_type(\n        directivename = \"templatefilter\",\n        rolename      = \"tfilter\",\n        indextemplate = \"pair: %s; template filter\"\n    )\n    app.add_crossref_type(\n        directivename = \"fieldlookup\",\n        rolename      = \"lookup\",\n        indextemplate = \"pair: %s; field lookup type\",\n    )\n    app.add_description_unit(\n        directivename = \"django-admin\",\n        rolename      = \"djadmin\",\n        indextemplate = \"pair: %s; django-admin command\",\n        parse_node    = parse_django_admin_node,\n    )\n    app.add_description_unit(\n        directivename = \"django-admin-option\",\n        rolename      = \"djadminopt\",\n        indextemplate = \"pair: %s; django-admin command-line option\",\n        parse_node    = parse_django_adminopt_node,\n    )\n    app.add_config_value('django_next_version', '0.0', True)\n    app.add_directive('versionadded', VersionDirective)\n    app.add_directive('versionchanged', VersionDirective)\n    app.add_builder(DjangoStandaloneHTMLBuilder)\n\n\nclass VersionDirective(Directive):\n    has_content = True\n    required_arguments = 1\n    optional_arguments = 1\n    final_argument_whitespace = True\n    option_spec = {}\n\n    def run(self):\n        env = self.state.document.settings.env\n        ret = []\n        node = addnodes.versionmodified()\n        ret.append(node)\n        if self.arguments[0] == env.config.django_next_version:\n            node['version'] = \"Development version\"\n        else:\n            node['version'] = self.arguments[0]\n        node['type'] = self.name\n        if len(self.arguments) == 2:\n            inodes, messages = self.state.inline_text(self.arguments[1], self.lineno+1)\n            node.extend(inodes)\n            if self.content:\n                self.state.nested_parse(self.content, self.content_offset, node)\n            ret = ret + messages\n        env.note_versionchange(node['type'], node['version'], node, self.lineno)\n        return ret\n\n\nclass DjangoHTMLTranslator(SmartyPantsHTMLTranslator):\n    \"\"\"\n    Django-specific reST to HTML tweaks.\n    \"\"\"\n\n    # Don't use border=1, which docutils does by default.\n    def visit_table(self, node):\n        self._table_row_index = 0 # Needed by Sphinx\n        self.body.append(self.starttag(node, 'table', CLASS='docutils'))\n\n    # <big>? Really?\n    def visit_desc_parameterlist(self, node):\n        self.body.append('(')\n        self.first_param = 1\n        self.param_separator = node.child_text_separator\n\n    def depart_desc_parameterlist(self, node):\n        self.body.append(')')\n\n    if sphinx_ver < '1.0.8':\n        #\n        # Don't apply smartypants to literal blocks\n        #\n        def visit_literal_block(self, node):\n            self.no_smarty += 1\n            SmartyPantsHTMLTranslator.visit_literal_block(self, node)\n\n        def depart_literal_block(self, node):\n            SmartyPantsHTMLTranslator.depart_literal_block(self, node)\n            self.no_smarty -= 1\n\n    #\n    # Turn the \"new in version\" stuff (versionadded/versionchanged) into a\n    # better callout -- the Sphinx default is just a little span,\n    # which is a bit less obvious that I'd like.\n    #\n    # FIXME: these messages are all hardcoded in English. We need to change\n    # that to accomodate other language docs, but I can't work out how to make\n    # that work.\n    #\n    version_text = {\n        'deprecated':       'Deprecated in Django %s',\n        'versionchanged':   'Changed in Django %s',\n        'versionadded':     'New in Django %s',\n    }\n\n    def visit_versionmodified(self, node):\n        self.body.append(\n            self.starttag(node, 'div', CLASS=node['type'])\n        )\n        title = \"%s%s\" % (\n            self.version_text[node['type']] % node['version'],\n            len(node) and \":\" or \".\"\n        )\n        self.body.append('<span class=\"title\">%s</span> ' % title)\n\n    def depart_versionmodified(self, node):\n        self.body.append(\"</div>\\n\")\n\n    # Give each section a unique ID -- nice for custom CSS hooks\n    def visit_section(self, node):\n        old_ids = node.get('ids', [])\n        node['ids'] = ['s-' + i for i in old_ids]\n        node['ids'].extend(old_ids)\n        SmartyPantsHTMLTranslator.visit_section(self, node)\n        node['ids'] = old_ids\n\ndef parse_django_admin_node(env, sig, signode):\n    command = sig.split(' ')[0]\n    env._django_curr_admin_command = command\n    title = \"django-admin.py %s\" % sig\n    signode += addnodes.desc_name(title, title)\n    return sig\n\ndef parse_django_adminopt_node(env, sig, signode):\n    \"\"\"A copy of sphinx.directives.CmdoptionDesc.parse_signature()\"\"\"\n    from sphinx.domains.std import option_desc_re\n    count = 0\n    firstname = ''\n    for m in option_desc_re.finditer(sig):\n        optname, args = m.groups()\n        if count:\n            signode += addnodes.desc_addname(', ', ', ')\n        signode += addnodes.desc_name(optname, optname)\n        signode += addnodes.desc_addname(args, args)\n        if not count:\n            firstname = optname\n        count += 1\n    if not count:\n        for m in simple_option_desc_re.finditer(sig):\n            optname, args = m.groups()\n            if count:\n                signode += addnodes.desc_addname(', ', ', ')\n            signode += addnodes.desc_name(optname, optname)\n            signode += addnodes.desc_addname(args, args)\n            if not count:\n                firstname = optname\n            count += 1\n    if not firstname:\n        raise ValueError\n    return firstname\n\n\nclass DjangoStandaloneHTMLBuilder(StandaloneHTMLBuilder):\n    \"\"\"\n    Subclass to add some extra things we need.\n    \"\"\"\n\n    name = 'djangohtml'\n\n    def finish(self):\n        super(DjangoStandaloneHTMLBuilder, self).finish()\n        self.info(bold(\"writing templatebuiltins.js...\"))\n        xrefs = self.env.domaindata[\"std\"][\"objects\"]\n        templatebuiltins = {\n            \"ttags\": [n for ((t, n), (l, a)) in xrefs.items()\n                        if t == \"templatetag\" and l == \"ref/templates/builtins\"],\n            \"tfilters\": [n for ((t, n), (l, a)) in xrefs.items()\n                        if t == \"templatefilter\" and l == \"ref/templates/builtins\"],\n        }\n        outfilename = os.path.join(self.outdir, \"templatebuiltins.js\")\n        with open(outfilename, 'wb') as fp:\n            fp.write('var django_template_builtins = ')\n            json.dump(templatebuiltins, fp)\n            fp.write(';\\n')\n"
  },
  {
    "path": "Django-1.5.1/docs/_ext/literals_to_xrefs.py",
    "content": "\"\"\"\nRuns through a reST file looking for old-style literals, and helps replace them\nwith new-style references.\n\"\"\"\n\nimport re\nimport sys\nimport shelve\n\nrefre = re.compile(r'``([^`\\s]+?)``')\n\nROLES = (\n    'attr',\n    'class',\n    \"djadmin\",\n    'data',\n    'exc',\n    'file',\n    'func',\n    'lookup',\n    'meth',\n    'mod' ,\n    \"djadminopt\",\n    \"ref\",\n    \"setting\",\n    \"term\",\n    \"tfilter\",\n    \"ttag\",\n    \n    # special\n    \"skip\"\n)\n\nALWAYS_SKIP = [\n    \"NULL\",\n    \"True\",\n    \"False\",\n]\n\ndef fixliterals(fname):\n    with open(fname) as fp:\n        data = fp.read()\n    \n    last = 0\n    new = []\n    storage = shelve.open(\"/tmp/literals_to_xref.shelve\")\n    lastvalues = storage.get(\"lastvalues\", {})\n    \n    for m in refre.finditer(data):\n        \n        new.append(data[last:m.start()])\n        last = m.end()\n        \n        line_start = data.rfind(\"\\n\", 0, m.start())\n        line_end = data.find(\"\\n\", m.end())\n        prev_start = data.rfind(\"\\n\", 0, line_start)\n        next_end = data.find(\"\\n\", line_end + 1)\n        \n        # Skip always-skip stuff\n        if m.group(1) in ALWAYS_SKIP:\n            new.append(m.group(0))\n            continue\n            \n        # skip when the next line is a title\n        next_line = data[m.end():next_end].strip()\n        if next_line[0] in \"!-/:-@[-`{-~\" and all(c == next_line[0] for c in next_line):\n            new.append(m.group(0))\n            continue\n        \n        sys.stdout.write(\"\\n\"+\"-\"*80+\"\\n\")\n        sys.stdout.write(data[prev_start+1:m.start()])\n        sys.stdout.write(colorize(m.group(0), fg=\"red\"))\n        sys.stdout.write(data[m.end():next_end])\n        sys.stdout.write(\"\\n\\n\")\n        \n        replace_type = None\n        while replace_type is None:\n            replace_type = raw_input(\n                colorize(\"Replace role: \", fg=\"yellow\")\n            ).strip().lower()\n            if replace_type and replace_type not in ROLES:\n                replace_type = None\n        \n        if replace_type == \"\":\n            new.append(m.group(0))\n            continue\n            \n        if replace_type == \"skip\":\n            new.append(m.group(0))\n            ALWAYS_SKIP.append(m.group(1))\n            continue\n        \n        default = lastvalues.get(m.group(1), m.group(1))\n        if default.endswith(\"()\") and replace_type in (\"class\", \"func\", \"meth\"):\n            default = default[:-2]        \n        replace_value = raw_input(\n            colorize(\"Text <target> [\", fg=\"yellow\") + default + colorize(\"]: \", fg=\"yellow\")\n        ).strip()\n        if not replace_value: \n            replace_value = default\n        new.append(\":%s:`%s`\" % (replace_type, replace_value))\n        lastvalues[m.group(1)] = replace_value\n    \n    new.append(data[last:])\n    with open(fname, \"w\") as fp:\n        fp.write(\"\".join(new))\n    \n    storage[\"lastvalues\"] = lastvalues\n    storage.close()\n    \n#\n# The following is taken from django.utils.termcolors and is copied here to\n# avoid the dependancy.\n#\n\n\ndef colorize(text='', opts=(), **kwargs):\n    \"\"\"\n    Returns your text, enclosed in ANSI graphics codes.\n\n    Depends on the keyword arguments 'fg' and 'bg', and the contents of\n    the opts tuple/list.\n\n    Returns the RESET code if no parameters are given.\n\n    Valid colors:\n        'black', 'red', 'green', 'yellow', 'blue', 'magenta', 'cyan', 'white'\n\n    Valid options:\n        'bold'\n        'underscore'\n        'blink'\n        'reverse'\n        'conceal'\n        'noreset' - string will not be auto-terminated with the RESET code\n\n    Examples:\n        colorize('hello', fg='red', bg='blue', opts=('blink',))\n        colorize()\n        colorize('goodbye', opts=('underscore',))\n        print(colorize('first line', fg='red', opts=('noreset',)))\n        print('this should be red too')\n        print(colorize('and so should this'))\n        print('this should not be red')\n    \"\"\"\n    color_names = ('black', 'red', 'green', 'yellow', 'blue', 'magenta', 'cyan', 'white')\n    foreground = dict([(color_names[x], '3%s' % x) for x in range(8)])\n    background = dict([(color_names[x], '4%s' % x) for x in range(8)])\n\n    RESET = '0'\n    opt_dict = {'bold': '1', 'underscore': '4', 'blink': '5', 'reverse': '7', 'conceal': '8'}\n\n    text = str(text)\n    code_list = []\n    if text == '' and len(opts) == 1 and opts[0] == 'reset':\n        return '\\x1b[%sm' % RESET\n    for k, v in kwargs.iteritems():\n        if k == 'fg':\n            code_list.append(foreground[v])\n        elif k == 'bg':\n            code_list.append(background[v])\n    for o in opts:\n        if o in opt_dict:\n            code_list.append(opt_dict[o])\n    if 'noreset' not in opts:\n        text = text + '\\x1b[%sm' % RESET\n    return ('\\x1b[%sm' % ';'.join(code_list)) + text\n\nif __name__ == '__main__':\n    try:\n        fixliterals(sys.argv[1])\n    except (KeyboardInterrupt, SystemExit):\n        print('')\n"
  },
  {
    "path": "Django-1.5.1/docs/_theme/djangodocs/genindex.html",
    "content": "{% extends \"basic/genindex.html\" %}\n\n{% block bodyclass %}{% endblock %}\n{% block sidebarwrapper %}{% endblock %}"
  },
  {
    "path": "Django-1.5.1/docs/_theme/djangodocs/layout.html",
    "content": "{% extends \"basic/layout.html\" %}\n\n{%- macro secondnav() %}\n  {%- if prev %}\n    &laquo; <a href=\"{{ prev.link|e }}\" title=\"{{ prev.title|e }}\">previous</a> \n    {{ reldelim2 }}\n  {%- endif %}\n  {%- if parents %}\n    <a href=\"{{ parents.0.link|e }}\" title=\"{{ parents.0.title|e }}\" accesskey=\"U\">up</a> \n  {%- else %}\n    <a title=\"{{ docstitle }}\" href=\"{{ pathto('index') }}\" accesskey=\"U\">up</a> \n  {%- endif %}\n  {%- if next %}\n  {{ reldelim2 }}\n    <a href=\"{{ next.link|e }}\" title=\"{{ next.title|e }}\">next</a> &raquo;\n  {%- endif %}\n{%- endmacro %}\n\n{% block extrahead %}\n{{ super() }}\n<script type=\"text/javascript\" src=\"{{ pathto('templatebuiltins.js', 1) }}\"></script>\n<script type=\"text/javascript\">\n(function($) {\n    if (!django_template_builtins) {\n       // templatebuiltins.js missing, do nothing.\n       return;\n    }\n    $(document).ready(function() {\n        // Hyperlink Django template tags and filters\n        var base = \"{{ pathto('ref/templates/builtins') }}\";\n        if (base == \"#\") {\n            // Special case for builtins.html itself\n            base = \"\";\n        }\n        // Tags are keywords, class '.k'\n        $(\"div.highlight\\\\-html\\\\+django span.k\").each(function(i, elem) {\n             var tagname = $(elem).text();\n             if ($.inArray(tagname, django_template_builtins.ttags) != -1) {\n                 var fragment = tagname.replace(/_/, '-');\n                 $(elem).html(\"<a href='\" + base + \"#\" + fragment + \"'>\" + tagname + \"</a>\");\n             }\n        });\n        // Filters are functions, class '.nf'\n        $(\"div.highlight\\\\-html\\\\+django span.nf\").each(function(i, elem) {\n             var filtername = $(elem).text();\n             if ($.inArray(filtername, django_template_builtins.tfilters) != -1) {\n                 var fragment = filtername.replace(/_/, '-');\n                 $(elem).html(\"<a href='\" + base + \"#\" + fragment + \"'>\" + filtername + \"</a>\");\n             }\n        });\n    });\n})(jQuery);\n</script>\n{% endblock %}\n\n{% block document %}\n  <div id=\"custom-doc\" class=\"{% block bodyclass %}{{ 'yui-t6' if pagename != 'index' else '' }}{% endblock %}\">\n    <div id=\"hd\">\n      <h1><a href=\"{{ pathto('index') }}\">{{ docstitle }}</a></h1>\n      <div id=\"global-nav\">\n        <a title=\"Home page\" href=\"{{ pathto('index') }}\">Home</a> {{ reldelim2 }}\n        <a title=\"Table of contents\" href=\"{{ pathto('contents') }}\">Table of contents</a> {{ reldelim2 }}\n        <a title=\"Global index\" href=\"{{ pathto('genindex') }}\">Index</a> {{ reldelim2 }}\n        <a title=\"Module index\" href=\"{{ pathto('py-modindex') }}\">Modules</a>\n      </div>\n      <div class=\"nav\">{{ secondnav() }}</div>\n    </div>\n    \n    <div id=\"bd\">\n      <div id=\"yui-main\">\n        <div class=\"yui-b\">\n          <div class=\"yui-g\" id=\"{{ pagename|replace('/', '-') }}\">\n            {% block body %}{% endblock %}\n          </div>         \n        </div>\n      </div>\n      {% block sidebarwrapper %}\n        {% if pagename != 'index' %}\n          <div class=\"yui-b\" id=\"sidebar\">\n            {{ sidebar() }}\n            {%- if last_updated %}\n              <h3>Last update:</h3>\n              <p class=\"topless\">{{ last_updated }}</p>\n            {%- endif %}\n          </div> \n        {% endif %}\n      {% endblock %}\n    </div>\n    \n    <div id=\"ft\">\n      <div class=\"nav\">{{ secondnav() }}</div>\n    </div>\n  </div>\n{% endblock %}\n\n{% block sidebarrel %}\n  <h3>Browse</h3>\n  <ul>\n    {% if prev %}\n      <li>Prev: <a href=\"{{ prev.link }}\">{{ prev.title }}</a></li>\n    {% endif %}\n    {% if next %}\n      <li>Next: <a href=\"{{ next.link }}\">{{ next.title }}</a></li>\n    {% endif %}\n  </ul>\n  <h3>You are here:</h3>\n  <ul>\n      <li>\n        <a href=\"{{ pathto('index') }}\">{{ docstitle }}</a>\n        {% for p in parents %}\n          <ul><li><a href=\"{{ p.link }}\">{{ p.title }}</a>\n        {% endfor %}\n        <ul><li>{{ title }}</li></ul>\n        {% for p in parents %}</li></ul>{% endfor %}\n      </li>\n  </ul>  \n{% endblock %}\n\n{# Empty some default blocks out #}\n{% block relbar1 %}{% endblock %}\n{% block relbar2 %}{% endblock %}\n{% block sidebar1 %}{% endblock %}\n{% block sidebar2 %}{% endblock %}\n{% block footer %}{% endblock %}"
  },
  {
    "path": "Django-1.5.1/docs/_theme/djangodocs/modindex.html",
    "content": "{% extends \"basic/modindex.html\" %}\n{% block bodyclass %}{% endblock %}\n{% block sidebarwrapper %}{% endblock %}"
  },
  {
    "path": "Django-1.5.1/docs/_theme/djangodocs/search.html",
    "content": "{% extends \"basic/search.html\" %}\n{% block bodyclass %}{% endblock %}\n{% block sidebarwrapper %}{% endblock %}"
  },
  {
    "path": "Django-1.5.1/docs/_theme/djangodocs/static/default.css",
    "content": "@import url(reset-fonts-grids.css);\n@import url(djangodocs.css);\n@import url(homepage.css);"
  },
  {
    "path": "Django-1.5.1/docs/_theme/djangodocs/static/djangodocs.css",
    "content": "/*** setup ***/\nhtml { background:#092e20;}\nbody { font:12px/1.5 Verdana,sans-serif; background:#092e20; color: white;}\n#custom-doc { width:76.54em;*width:74.69em;min-width:995px; max-width:100em; margin:auto; text-align:left; padding-top:16px; margin-top:0;}\n#hd { padding: 4px 0 12px 0; }\n#bd { background:#234F32; }\n#ft { color:#487858; font-size:90%; padding-bottom: 2em; }\n\n/*** links ***/\na {text-decoration: none;}\na img {border: none;}\na:link, a:visited { color:#ffc757; }\n#bd a:link, #bd a:visited { color:#ab5603; text-decoration:underline; }\n#bd #sidebar a:link, #bd #sidebar a:visited { color:#ffc757; text-decoration:none; }\na:hover { color:#ffe761; }\n#bd a:hover { background-color:#E0FFB8; color:#234f32; text-decoration:none; }\n#bd #sidebar a:hover { color:#ffe761; background:none; }\nh2 a, h3 a, h4 a { text-decoration:none !important; }\na.reference em { font-style: normal; }\n\n/*** sidebar ***/\n#sidebar div.sphinxsidebarwrapper { font-size:92%; margin-right: 14px; }\n#sidebar h3, #sidebar h4 { color: white; font-size: 125%; }\n#sidebar a { color: white; }\n#sidebar ul ul { margin-top:0; margin-bottom:0; }\n#sidebar li { margin-top: 0.2em; margin-bottom: 0.2em; }\n\n/*** nav ***/\ndiv.nav { margin: 0; font-size: 11px; text-align: right; color: #487858;}\n#hd div.nav { margin-top: -27px; }\n#ft div.nav { margin-bottom: -18px; }\n#hd h1 a { color: white; }\n#global-nav { position:absolute; top:5px; margin-left: -5px; padding:7px 0; color:#263E2B; }\n#global-nav a:link, #global-nav a:visited {color:#487858;}\n#global-nav a {padding:0 4px;}\n#global-nav a.about {padding-left:0;}\n#global-nav:hover {color:#fff;}\n#global-nav:hover a:link, #global-nav:hover a:visited  { color:#ffc757; }\n\n/*** content ***/\n#yui-main div.yui-b { position: relative; }\n#yui-main div.yui-b { margin: 0 0 0 20px; background: white; color: black; padding: 0.3em 2em 1em 2em; }\n\n/*** basic styles ***/\ndd { margin-left:15px; }\nh1,h2,h3,h4 { margin-top:1em; font-family:\"Trebuchet MS\",sans-serif; font-weight:normal; }\nh1 { font-size:218%; margin-top:0.6em; margin-bottom:.4em; line-height:1.1em; }\nh2 { font-size:175%; margin-bottom:.6em; line-height:1.2em; color:#092e20; }\nh3 { font-size:150%; font-weight:bold; margin-bottom:.2em; color:#487858; }\nh4 { font-size:125%; font-weight:bold; margin-top:1.5em; margin-bottom:3px; }\ndiv.figure { text-align: center; }\ndiv.figure p.caption { font-size:1em; margin-top:0; margin-bottom:1.5em; color: #555;}\nhr { color:#ccc; background-color:#ccc; height:1px; border:0; }\np, ul, dl { margin-top:.6em; margin-bottom:1em; padding-bottom: 0.1em;}\n#yui-main div.yui-b img { max-width: 50em; margin-left: auto; margin-right: auto; display: block; }\ncaption { font-size:1em; font-weight:bold; margin-top:0.5em; margin-bottom:0.5em; margin-left: 2px; text-align: center; }\nblockquote { padding: 0 1em; margin: 1em 0; font:125%/1.2em \"Trebuchet MS\", sans-serif; color:#234f32; border-left:2px solid #94da3a; }\nstrong { font-weight: bold; }\nem { font-style: italic; }\nins { font-weight: bold; text-decoration: none; }\n\n/*** lists ***/\nul { padding-left:30px; }\nol { padding-left:30px; }\nol.arabic li { list-style-type: decimal; }\nul li { list-style-type:square; margin-bottom:.4em; }\nol li { margin-bottom: .4em; }\nul ul { padding-left:1.2em; }\nul ul ul { padding-left:1em; }\nul.linklist, ul.toc { padding-left:0; }\nul.toc ul { margin-left:.6em; }\nul.toc ul li { list-style-type:square; }\nul.toc ul ul li { list-style-type:disc; }\nul.linklist li, ul.toc li { list-style-type:none; }\ndt { font-weight:bold; margin-top:.5em; font-size:1.1em; }\ndd { margin-bottom:.8em; }\nol.toc { margin-bottom: 2em; }\nol.toc li { font-size:125%; padding: .5em; line-height:1.2em; clear: right; }\nol.toc li.b { background-color: #E0FFB8; }\nol.toc li a:hover { background-color: transparent !important; text-decoration: underline !important; }\nol.toc span.release-date { color:#487858; float: right; font-size: 85%; padding-right: .5em; }\nol.toc span.comment-count { font-size: 75%; color: #999; }\n\n/*** tables ***/\ntable { color:#000; margin-bottom: 1em; width: 100%; }\ntable.docutils td p { margin-top:0; margin-bottom:.5em; }\ntable.docutils td, table.docutils th { border-bottom:1px solid #dfdfdf; padding:4px 2px;}\ntable.docutils thead th { border-bottom:2px solid #dfdfdf; text-align:left; font-weight: bold; white-space: nowrap; }\ntable.docutils thead th p { margin: 0; padding: 0; }\ntable.docutils { border-collapse:collapse; }\n\n/*** code blocks ***/\n.literal { white-space:nowrap; }\n.literal { color:#234f32; }\n#sidebar .literal { color:white; background:transparent; font-size:11px; }\nh4 .literal { color: #234f32; font-size: 13px; }\npre { font-size:small; background:#E0FFB8; border:1px solid #94da3a; border-width:1px 0; margin: 1em 0; padding: .3em .4em; overflow: hidden; line-height: 1.3em;}\ndt .literal, table .literal { background:none; }\n#bd a.reference { text-decoration: none; }\n#bd a.reference tt.literal { border-bottom: 1px #234f32 dotted; }\n\n/* Restore colors of pygments hyperlinked code */\n#bd .highlight .k a:link, #bd .highlight .k a:visited { color: #000000; text-decoration: none; border-bottom: 1px dotted #000000; }\n#bd .highlight .nf a:link, #bd .highlight .nf a:visited { color: #990000; text-decoration: none; border-bottom: 1px dotted #990000; }\n\n\n/*** notes & admonitions ***/\n.note, .admonition { padding:.8em 1em .8em; margin: 1em 0; border:1px solid #94da3a; }\n.admonition-title { font-weight:bold; margin-top:0 !important; margin-bottom:0 !important;}\n.admonition .last { margin-bottom:0 !important; }\n.note, .admonition { padding-left:65px; background:url(docicons-note.png) .8em .8em no-repeat;}\ndiv.admonition-philosophy { padding-left:65px; background:url(docicons-philosophy.png) .8em .8em no-repeat;}\ndiv.admonition-behind-the-scenes { padding-left:65px; background:url(docicons-behindscenes.png) .8em .8em no-repeat;}\n.admonition.warning { background:url(docicons-warning.png) .8em .8em no-repeat; border:1px solid #ffc83c;}\n\n/*** versoinadded/changes ***/\ndiv.versionadded, div.versionchanged {  }\ndiv.versionadded span.title, div.versionchanged span.title, div.deprecated span.title { font-weight: bold; }\n\n/*** p-links ***/\na.headerlink { color: #c60f0f; font-size: 0.8em; padding: 0 4px 0 4px; text-decoration: none; visibility: hidden; }\nh1:hover > a.headerlink, h2:hover > a.headerlink, h3:hover > a.headerlink, h4:hover > a.headerlink, h5:hover > a.headerlink, h6:hover > a.headerlink, dt:hover > a.headerlink { visibility: visible; }\n\n/*** index ***/\ntable.indextable td { text-align: left; vertical-align: top;}\ntable.indextable dl, table.indextable dd { margin-top: 0; margin-bottom: 0; }\ntable.indextable tr.pcap { height: 10px; }\ntable.indextable tr.cap { margin-top: 10px; background-color: #f2f2f2;}\n\n/*** page-specific overrides ***/\ndiv#contents ul { margin-bottom: 0;}\ndiv#contents ul li { margin-bottom: 0;}\ndiv#contents ul ul li { margin-top: 0.3em;}\n\n/*** IE hacks ***/\n* pre { width: 100%; }\n"
  },
  {
    "path": "Django-1.5.1/docs/_theme/djangodocs/static/homepage.css",
    "content": "#index p.rubric { font-size:150%; font-weight:normal; margin-bottom:.2em; color:#487858; }\n\n#index div.section dt { font-weight: normal; }\n\n#index #s-getting-help { float: right; width: 35em; background: #E1ECE2; padding: 1em; margin: 2em 0 2em 2em; }\n#index #s-getting-help h2 { margin: 0; }\n\n#index #s-django-documentation div.section div.section h3 { margin: 0; }\n#index #s-django-documentation div.section div.section { background: #E1ECE2; padding: 1em; margin: 2em 0 2em 40.3em; }\n#index #s-django-documentation div.section div.section a.reference { white-space: nowrap; }\n\n#index #s-using-django dl,\n#index #s-add-on-contrib-applications dl,\n#index #s-solving-specific-problems dl,\n#index #s-reference dl\n    { float: left; width: 41em; }\n\n#index #s-add-on-contrib-applications,\n#index #s-solving-specific-problems,\n#index #s-reference,\n#index #s-and-all-the-rest\n    { clear: left; }"
  },
  {
    "path": "Django-1.5.1/docs/_theme/djangodocs/static/reset-fonts-grids.css",
    "content": "/*\nCopyright (c) 2008, Yahoo! Inc. All rights reserved.\nCode licensed under the BSD License:\nhttp://developer.yahoo.net/yui/license.txt\nversion: 2.5.1\n*/\nhtml{color:#000;background:#FFF;}body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td{margin:0;padding:0;}table{border-collapse:collapse;border-spacing:0;}fieldset,img{border:0;}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}li{list-style:none;}caption,th{text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal;}q:before,q:after{content:'';}abbr,acronym {border:0;font-variant:normal;}sup {vertical-align:text-top;}sub {vertical-align:text-bottom;}input,textarea,select{font-family:inherit;font-size:inherit;font-weight:inherit;}input,textarea,select{*font-size:100%;}legend{color:#000;}body {font:13px/1.231 arial,helvetica,clean,sans-serif;*font-size:small;*font:x-small;}table {font-size:inherit;font:100%;}pre,code,kbd,samp,tt{font-family:monospace;*font-size:108%;line-height:100%;}\nbody{text-align:center;}#ft{clear:both;}#doc,#doc2,#doc3,#doc4,.yui-t1,.yui-t2,.yui-t3,.yui-t4,.yui-t5,.yui-t6,.yui-t7{margin:auto;text-align:left;width:57.69em;*width:56.25em;min-width:750px;}#doc2{width:73.076em;*width:71.25em;}#doc3{margin:auto 10px;width:auto;}#doc4{width:74.923em;*width:73.05em;}.yui-b{position:relative;}.yui-b{_position:static;}#yui-main .yui-b{position:static;}#yui-main{width:100%;}.yui-t1 #yui-main,.yui-t2 #yui-main,.yui-t3 #yui-main{float:right;margin-left:-25em;}.yui-t4 #yui-main,.yui-t5 #yui-main,.yui-t6 #yui-main{float:left;margin-right:-25em;}.yui-t1 .yui-b{float:left;width:12.30769em;*width:12.00em;}.yui-t1 #yui-main .yui-b{margin-left:13.30769em;*margin-left:13.05em;}.yui-t2 .yui-b{float:left;width:13.8461em;*width:13.50em;}.yui-t2 #yui-main .yui-b{margin-left:14.8461em;*margin-left:14.55em;}.yui-t3 .yui-b{float:left;width:23.0769em;*width:22.50em;}.yui-t3 #yui-main .yui-b{margin-left:24.0769em;*margin-left:23.62em;}.yui-t4 .yui-b{float:right;width:13.8456em;*width:13.50em;}.yui-t4 #yui-main .yui-b{margin-right:14.8456em;*margin-right:14.55em;}.yui-t5 .yui-b{float:right;width:18.4615em;*width:18.00em;}.yui-t5 #yui-main .yui-b{margin-right:19.4615em;*margin-right:19.125em;}.yui-t6 .yui-b{float:right;width:23.0769em;*width:22.50em;}.yui-t6 #yui-main .yui-b{margin-right:24.0769em;*margin-right:23.62em;}.yui-t7 #yui-main .yui-b{display:block;margin:0 0 1em 0;}#yui-main .yui-b{float:none;width:auto;}.yui-gb .yui-u,.yui-g .yui-gb .yui-u,.yui-gb .yui-g,.yui-gb .yui-gb,.yui-gb .yui-gc,.yui-gb .yui-gd,.yui-gb .yui-ge,.yui-gb .yui-gf,.yui-gc .yui-u,.yui-gc .yui-g,.yui-gd .yui-u{float:left;}.yui-g .yui-u,.yui-g .yui-g,.yui-g .yui-gb,.yui-g .yui-gc,.yui-g .yui-gd,.yui-g .yui-ge,.yui-g .yui-gf,.yui-gc .yui-u,.yui-gd .yui-g,.yui-g .yui-gc .yui-u,.yui-ge .yui-u,.yui-ge .yui-g,.yui-gf .yui-g,.yui-gf .yui-u{float:right;}.yui-g div.first,.yui-gb div.first,.yui-gc div.first,.yui-gd div.first,.yui-ge div.first,.yui-gf div.first,.yui-g .yui-gc div.first,.yui-g .yui-ge div.first,.yui-gc div.first div.first{float:left;}.yui-g .yui-u,.yui-g .yui-g,.yui-g .yui-gb,.yui-g .yui-gc,.yui-g .yui-gd,.yui-g .yui-ge,.yui-g .yui-gf{width:49.1%;}.yui-gb .yui-u,.yui-g .yui-gb .yui-u,.yui-gb .yui-g,.yui-gb .yui-gb,.yui-gb .yui-gc,.yui-gb .yui-gd,.yui-gb .yui-ge,.yui-gb .yui-gf,.yui-gc .yui-u,.yui-gc .yui-g,.yui-gd .yui-u{width:32%;margin-left:1.99%;}.yui-gb .yui-u{*margin-left:1.9%;*width:31.9%;}.yui-gc div.first,.yui-gd .yui-u{width:66%;}.yui-gd div.first{width:32%;}.yui-ge div.first,.yui-gf .yui-u{width:74.2%;}.yui-ge .yui-u,.yui-gf div.first{width:24%;}.yui-g .yui-gb div.first,.yui-gb div.first,.yui-gc div.first,.yui-gd div.first{margin-left:0;}.yui-g .yui-g .yui-u,.yui-gb .yui-g .yui-u,.yui-gc .yui-g .yui-u,.yui-gd .yui-g .yui-u,.yui-ge .yui-g .yui-u,.yui-gf .yui-g .yui-u{width:49%;*width:48.1%;*margin-left:0;}.yui-g .yui-gb div.first,.yui-gb .yui-gb div.first{*margin-right:0;*width:32%;_width:31.7%;}.yui-g .yui-gc div.first,.yui-gd .yui-g{width:66%;}.yui-gb .yui-g div.first{*margin-right:4%;_margin-right:1.3%;}.yui-gb .yui-gc div.first,.yui-gb .yui-gd div.first{*margin-right:0;}.yui-gb .yui-gb .yui-u,.yui-gb .yui-gc .yui-u{*margin-left:1.8%;_margin-left:4%;}.yui-g .yui-gb .yui-u{_margin-left:1.0%;}.yui-gb .yui-gd .yui-u{*width:66%;_width:61.2%;}.yui-gb .yui-gd div.first{*width:31%;_width:29.5%;}.yui-g .yui-gc .yui-u,.yui-gb .yui-gc .yui-u{width:32%;_float:right;margin-right:0;_margin-left:0;}.yui-gb .yui-gc div.first{width:66%;*float:left;*margin-left:0;}.yui-gb .yui-ge .yui-u,.yui-gb .yui-gf .yui-u{margin:0;}.yui-gb .yui-gb .yui-u{_margin-left:.7%;}.yui-gb .yui-g div.first,.yui-gb .yui-gb div.first{*margin-left:0;}.yui-gc .yui-g .yui-u,.yui-gd .yui-g .yui-u{*width:48.1%;*margin-left:0;}s .yui-gb .yui-gd div.first{width:32%;}.yui-g .yui-gd div.first{_width:29.9%;}.yui-ge .yui-g{width:24%;}.yui-gf .yui-g{width:74.2%;}.yui-gb .yui-ge div.yui-u,.yui-gb .yui-gf div.yui-u{float:right;}.yui-gb .yui-ge div.first,.yui-gb .yui-gf div.first{float:left;}.yui-gb .yui-ge .yui-u,.yui-gb .yui-gf div.first{*width:24%;_width:20%;}.yui-gb .yui-ge div.first,.yui-gb .yui-gf .yui-u{*width:73.5%;_width:65.5%;}.yui-ge div.first .yui-gd .yui-u{width:65%;}.yui-ge div.first .yui-gd div.first{width:32%;}#bd:after,.yui-g:after,.yui-gb:after,.yui-gc:after,.yui-gd:after,.yui-ge:after,.yui-gf:after{content:\".\";display:block;height:0;clear:both;visibility:hidden;}#bd,.yui-g,.yui-gb,.yui-gc,.yui-gd,.yui-ge,.yui-gf{zoom:1;}"
  },
  {
    "path": "Django-1.5.1/docs/_theme/djangodocs/theme.conf",
    "content": "[theme]\ninherit = basic\nstylesheet = default.css\npygments_style = trac\n"
  },
  {
    "path": "Django-1.5.1/docs/conf.py",
    "content": "# -*- coding: utf-8 -*-\n#\n# Django documentation build configuration file, created by\n# sphinx-quickstart on Thu Mar 27 09:06:53 2008.\n#\n# This file is execfile()d with the current directory set to its containing dir.\n#\n# The contents of this file are pickled, so don't put values in the namespace\n# that aren't pickleable (module imports are okay, they're removed automatically).\n#\n# All configuration values have a default; values that are commented out\n# serve to show the default.\n\nfrom __future__ import unicode_literals\n\nimport sys\nimport os\n\n# If extensions (or modules to document with autodoc) are in another directory,\n# add these directories to sys.path here. If the directory is relative to the\n# documentation root, use os.path.abspath to make it absolute, like shown here.\nsys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), \"_ext\")))\n\n# -- General configuration -----------------------------------------------------\n\n# If your documentation needs a minimal Sphinx version, state it here.\nneeds_sphinx = '1.0'\n\n# Add any Sphinx extension module names here, as strings. They can be extensions\n# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.\nextensions = [\"djangodocs\", \"sphinx.ext.intersphinx\"]\n\n# Add any paths that contain templates here, relative to this directory.\n# templates_path = []\n\n# The suffix of source filenames.\nsource_suffix = '.txt'\n\n# The encoding of source files.\n#source_encoding = 'utf-8-sig'\n\n# The master toctree document.\nmaster_doc = 'contents'\n\n# General substitutions.\nproject = 'Django'\ncopyright = 'Django Software Foundation and contributors'\n\n\n# The version info for the project you're documenting, acts as replacement for\n# |version| and |release|, also used in various other places throughout the\n# built documents.\n#\n# The short X.Y version.\nversion = '1.5'\n# The full version, including alpha/beta/rc tags.\nrelease = '1.5.1'\n# The next version to be released\ndjango_next_version = '1.6'\n\n# The language for content autogenerated by Sphinx. Refer to documentation\n# for a list of supported languages.\n#language = None\n\n# There are two options for replacing |today|: either, you set today to some\n# non-false value, then it is used:\n#today = ''\n# Else, today_fmt is used as the format for a strftime call.\ntoday_fmt = '%B %d, %Y'\n\n# List of patterns, relative to source directory, that match files and\n# directories to ignore when looking for source files.\nexclude_patterns = ['_build']\n\n# The reST default role (used for this markup: `text`) to use for all documents.\n#default_role = None\n\n# If true, '()' will be appended to :func: etc. cross-reference text.\nadd_function_parentheses = True\n\n# If true, the current module name will be prepended to all description\n# unit titles (such as .. function::).\nadd_module_names = False\n\n# If true, sectionauthor and moduleauthor directives will be shown in the\n# output. They are ignored by default.\nshow_authors = False\n\n# The name of the Pygments (syntax highlighting) style to use.\npygments_style = 'trac'\n\n# Links to Python's docs should reference the most recent version of the 2.x\n# branch, which is located at this URL.\nintersphinx_mapping = {\n    'python': ('http://docs.python.org/2.7', None),\n    'sphinx': ('http://sphinx.pocoo.org/', None),\n    'six': ('http://packages.python.org/six/', None),\n    'simplejson': ('http://simplejson.readthedocs.org/en/latest/', None),\n}\n\n# Python's docs don't change every week.\nintersphinx_cache_limit = 90 # days\n\n# -- Options for HTML output ---------------------------------------------------\n\n# The theme to use for HTML and HTML Help pages.  See the documentation for\n# a list of builtin themes.\nhtml_theme = \"djangodocs\"\n\n# Theme options are theme-specific and customize the look and feel of a theme\n# further.  For a list of options available for each theme, see the\n# documentation.\n#html_theme_options = {}\n\n# Add any paths that contain custom themes here, relative to this directory.\nhtml_theme_path = [\"_theme\"]\n\n# The name for this set of Sphinx documents.  If None, it defaults to\n# \"<project> v<release> documentation\".\n#html_title = None\n\n# A shorter title for the navigation bar.  Default is the same as html_title.\n#html_short_title = None\n\n# The name of an image file (relative to this directory) to place at the top\n# of the sidebar.\n#html_logo = None\n\n# The name of an image file (within the static path) to use as favicon of the\n# docs.  This file should be a Windows icon file (.ico) being 16x16 or 32x32\n# pixels large.\n#html_favicon = None\n\n# Add any paths that contain custom static files (such as style sheets) here,\n# relative to this directory. They are copied after the builtin static files,\n# so a file named \"default.css\" will overwrite the builtin \"default.css\".\n#html_static_path = [\"_static\"]\n\n# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,\n# using the given strftime format.\nhtml_last_updated_fmt = '%b %d, %Y'\n\n# If true, SmartyPants will be used to convert quotes and dashes to\n# typographically correct entities.\nhtml_use_smartypants = True\n\n# HTML translator class for the builder\nhtml_translator_class = \"djangodocs.DjangoHTMLTranslator\"\n\n# Content template for the index page.\n#html_index = ''\n\n# Custom sidebar templates, maps document names to template names.\n#html_sidebars = {}\n\n# Additional templates that should be rendered to pages, maps page names to\n# template names.\nhtml_additional_pages = {}\n\n# If false, no module index is generated.\n#html_domain_indices = True\n\n# If false, no index is generated.\n#html_use_index = True\n\n# If true, the index is split into individual pages for each letter.\n#html_split_index = False\n\n# If true, links to the reST sources are added to the pages.\n#html_show_sourcelink = True\n\n# If true, \"Created using Sphinx\" is shown in the HTML footer. Default is True.\n#html_show_sphinx = True\n\n# If true, \"(C) Copyright ...\" is shown in the HTML footer. Default is True.\n#html_show_copyright = True\n\n# If true, an OpenSearch description file will be output, and all pages will\n# contain a <link> tag referring to it.  The value of this option must be the\n# base URL from which the finished HTML is served.\n#html_use_opensearch = ''\n\n# This is the file name suffix for HTML files (e.g. \".xhtml\").\n#html_file_suffix = None\n\n# Output file base name for HTML help builder.\nhtmlhelp_basename = 'Djangodoc'\n\nmodindex_common_prefix = [\"django.\"]\n\n\n# -- Options for LaTeX output --------------------------------------------------\n\nlatex_elements = {\n    'preamble': ('\\\\DeclareUnicodeCharacter{2264}{\\\\ensuremath{\\\\le}}'\n                 '\\\\DeclareUnicodeCharacter{2265}{\\\\ensuremath{\\\\ge}}')\n}\n\n# Grouping the document tree into LaTeX files. List of tuples\n# (source start file, target name, title, author, document class [howto/manual]).\n#latex_documents = []\nlatex_documents = [\n  ('contents', 'django.tex', 'Django Documentation',\n   'Django Software Foundation', 'manual'),\n]\n\n# The name of an image file (relative to this directory) to place at the top of\n# the title page.\n#latex_logo = None\n\n# For \"manual\" documents, if this is true, then toplevel headings are parts,\n# not chapters.\n#latex_use_parts = False\n\n# If true, show page references after internal links.\n#latex_show_pagerefs = False\n\n# If true, show URL addresses after external links.\n#latex_show_urls = False\n\n# Documents to append as an appendix to all manuals.\n#latex_appendices = []\n\n# If false, no module index is generated.\n#latex_domain_indices = True\n\n\n# -- Options for manual page output --------------------------------------------\n\n# One entry per manual page. List of tuples\n# (source start file, name, description, authors, manual section).\nman_pages = [\n    ('contents', 'django', 'Django Documentation', ['Django Software Foundation'], 1)\n]\n\n\n# -- Options for Texinfo output ------------------------------------------------\n\n# List of tuples (startdocname, targetname, title, author, dir_entry,\n# description, category, toctree_only)\ntexinfo_documents=[(\n    master_doc, \"django\", \"\", \"\", \"Django\",\n    \"Documentation of the Django framework\", \"Web development\", False\n)]\n\n\n# -- Options for Epub output ---------------------------------------------------\n\n# Bibliographic Dublin Core info.\nepub_title = 'Django'\nepub_author = 'Django Software Foundation'\nepub_publisher = 'Django Software Foundation'\nepub_copyright = '2010, Django Software Foundation'\n\n# The language of the text. It defaults to the language option\n# or en if the language is not set.\n#epub_language = ''\n\n# The scheme of the identifier. Typical schemes are ISBN or URL.\n#epub_scheme = ''\n\n# The unique identifier of the text. This can be a ISBN number\n# or the project homepage.\n#epub_identifier = ''\n\n# A unique identification for the text.\n#epub_uid = ''\n\n# HTML files that should be inserted before the pages created by sphinx.\n# The format is a list of tuples containing the path and title.\n#epub_pre_files = []\n\n# HTML files shat should be inserted after the pages created by sphinx.\n# The format is a list of tuples containing the path and title.\n#epub_post_files = []\n\n# A list of files that should not be packed into the epub file.\n#epub_exclude_files = []\n\n# The depth of the table of contents in toc.ncx.\n#epub_tocdepth = 3\n\n# Allow duplicate toc entries.\n#epub_tocdup = True\n"
  },
  {
    "path": "Django-1.5.1/docs/contents.txt",
    "content": ".. _contents:\n\n=============================\nDjango documentation contents\n=============================\n\n.. toctree::\n    :hidden:\n\n    index\n\n.. toctree::\n    :maxdepth: 3\n\n    intro/index\n    topics/index\n    howto/index\n    faq/index\n    ref/index\n    misc/index\n    glossary\n    releases/index\n    internals/index\n\nIndices, glossary and tables\n============================\n\n* :ref:`genindex`\n* :ref:`modindex`\n* :ref:`glossary`\n"
  },
  {
    "path": "Django-1.5.1/docs/faq/admin.txt",
    "content": "FAQ: The admin\n==============\n\nI can't log in. When I enter a valid username and password, it just brings up the login page again, with no error messages.\n---------------------------------------------------------------------------------------------------------------------------\n\nThe login cookie isn't being set correctly, because the domain of the cookie\nsent out by Django doesn't match the domain in your browser. Try these two\nthings:\n\n* Set the :setting:`SESSION_COOKIE_DOMAIN` setting in your admin config\n  file to match your domain. For example, if you're going to\n  \"http://www.example.com/admin/\" in your browser, in \"myproject.settings\" you\n  should set :setting:`SESSION_COOKIE_DOMAIN` = 'www.example.com'.\n\n* Some browsers (Firefox?) don't like to accept cookies from domains that\n  don't have dots in them. If you're running the admin site on \"localhost\"\n  or another domain that doesn't have a dot in it, try going to\n  \"localhost.localdomain\" or \"127.0.0.1\". And set\n  :setting:`SESSION_COOKIE_DOMAIN` accordingly.\n\nI can't log in. When I enter a valid username and password, it brings up the login page again, with a \"Please enter a correct username and password\" error.\n-----------------------------------------------------------------------------------------------------------------------------------------------------------\n\nIf you're sure your username and password are correct, make sure your user\naccount has :attr:`~django.contrib.auth.models.User.is_active` and\n:attr:`~django.contrib.auth.models.User.is_staff` set to True. The admin site\nonly allows access to users with those two fields both set to True.\n\nHow can I prevent the cache middleware from caching the admin site?\n-------------------------------------------------------------------\n\nSet the :setting:`CACHE_MIDDLEWARE_ANONYMOUS_ONLY` setting to ``True``. See the\n:doc:`cache documentation </topics/cache>` for more information.\n\nHow do I automatically set a field's value to the user who last edited the object in the admin?\n-----------------------------------------------------------------------------------------------\n\nThe :class:`~django.contrib.admin.ModelAdmin` class provides customization hooks\nthat allow you to transform an object as it saved, using details from the\nrequest. By extracting the current user from the request, and customizing the\n:meth:`~django.contrib.admin.ModelAdmin.save_model` hook, you can update an\nobject to reflect the user that edited it. See :ref:`the documentation on\nModelAdmin methods <model-admin-methods>` for an example.\n\nHow do I limit admin access so that objects can only be edited by the users who created them?\n---------------------------------------------------------------------------------------------\n\nThe :class:`~django.contrib.admin.ModelAdmin` class also provides customization\nhooks that allow you to control the visibility and editability of objects in the\nadmin. Using the same trick of extracting the user from the request, the\n:meth:`~django.contrib.admin.ModelAdmin.queryset` and\n:meth:`~django.contrib.admin.ModelAdmin.has_change_permission` can be used to\ncontrol the visibility and editability of objects in the admin.\n\nMy admin-site CSS and images showed up fine using the development server, but they're not displaying when using mod_wsgi.\n---------------------------------------------------------------------------------------------------------------------------\n\nSee :ref:`serving the admin files <serving-the-admin-files>`\nin the \"How to use Django with mod_wsgi\" documentation.\n\nMy \"list_filter\" contains a ManyToManyField, but the filter doesn't display.\n----------------------------------------------------------------------------\n\nDjango won't bother displaying the filter for a ``ManyToManyField`` if there\nare fewer than two related objects.\n\nFor example, if your :attr:`~django.contrib.admin.ModelAdmin.list_filter`\nincludes :doc:`sites </ref/contrib/sites>`, and there's only one site in your\ndatabase, it won't display a \"Site\" filter. In that case, filtering by site\nwould be meaningless.\n\nSome objects aren't appearing in the admin.\n-------------------------------------------\n\nInconsistent row counts may be caused by missing foreign key values or a\nforeign key field incorrectly set to :attr:`null=False\n<django.db.models.Field.null>`. If you have a record with a\n:class:`~django.db.models.ForeignKey` pointing to a non-existent object and\nthat foreign key is included is\n:attr:`~django.contrib.admin.ModelAdmin.list_display`, the record will not be\nshown in the admin changelist because the Django model is declaring an\nintegrity constraint that is not implemented at the database level.\n\nHow can I customize the functionality of the admin interface?\n-------------------------------------------------------------\n\nYou've got several options. If you want to piggyback on top of an add/change\nform that Django automatically generates, you can attach arbitrary JavaScript\nmodules to the page via the model's class Admin :ref:`js parameter\n<modeladmin-media-definitions>`. That parameter is a list of URLs, as strings,\npointing to JavaScript modules that will be included within the admin form via\na ``<script>`` tag.\n\nIf you want more flexibility than simply tweaking the auto-generated forms,\nfeel free to write custom views for the admin. The admin is powered by Django\nitself, and you can write custom views that hook into the authentication\nsystem, check permissions and do whatever else they need to do.\n\nIf you want to customize the look-and-feel of the admin interface, read the\nnext question.\n\nThe dynamically-generated admin site is ugly! How can I change it?\n------------------------------------------------------------------\n\nWe like it, but if you don't agree, you can modify the admin site's\npresentation by editing the CSS stylesheet and/or associated image files. The\nsite is built using semantic HTML and plenty of CSS hooks, so any changes you'd\nlike to make should be possible by editing the stylesheet.\n\nWhat browsers are supported for using the admin?\n------------------------------------------------\n\nThe admin provides a fully-functional experience to `YUI's A-grade`_ browsers,\nwith the notable exception of IE6, which is not supported.\n\nThere *may* be minor stylistic differences between supported browsers—for\nexample, some browsers may not support rounded corners. These are considered\nacceptable variations in rendering.\n\n.. _YUI's A-grade: http://yuilibrary.com/yui/docs/tutorials/gbs/\n"
  },
  {
    "path": "Django-1.5.1/docs/faq/contributing.txt",
    "content": "FAQ: Contributing code\n======================\n\nHow can I get started contributing code to Django?\n--------------------------------------------------\n\nThanks for asking! We've written an entire document devoted to this question.\nIt's titled :doc:`Contributing to Django </internals/contributing/index>`.\n\nI submitted a bug fix in the ticket system several weeks ago. Why are you ignoring my patch?\n--------------------------------------------------------------------------------------------\n\nDon't worry: We're not ignoring you!\n\nIt's important to understand there is a difference between \"a ticket is being\nignored\" and \"a ticket has not been attended to yet.\" Django's ticket system\ncontains hundreds of open tickets, of various degrees of impact on end-user\nfunctionality, and Django's developers have to review and prioritize.\n\nOn top of that: the people who work on Django are all volunteers. As a result,\nthe amount of time that we have to work on the framework is limited and will\nvary from week to week depending on our spare time. If we're busy, we may not\nbe able to spend as much time on Django as we might want.\n\nThe best way to make sure tickets do not get hung up on the way to checkin is\nto make it dead easy, even for someone who may not be intimately familiar with\nthat area of the code, to understand the problem and verify the fix:\n\n* Are there clear instructions on how to reproduce the bug? If this\n  touches a dependency (such as PIL), a contrib module, or a specific\n  database, are those instructions clear enough even for someone not\n  familiar with it?\n\n* If there are several patches attached to the ticket, is it clear what\n  each one does, which ones can be ignored and which matter?\n\n* Does the patch include a unit test? If not, is there a very clear\n  explanation why not? A test expresses succinctly what the problem is,\n  and shows that the patch actually fixes it.\n\nIf your patch stands no chance of inclusion in Django, we won't ignore it --\nwe'll just close the ticket. So if your ticket is still open, it doesn't mean\nwe're ignoring you; it just means we haven't had time to look at it yet.\n\nWhen and how might I remind the core team of a patch I care about?\n------------------------------------------------------------------\n\nA polite, well-timed message to the mailing list is one way to get attention.\nTo determine the right time, you need to keep an eye on the schedule. If you\npost your message when the core developers are trying to hit a feature\ndeadline or manage a planning phase, you're not going to get the sort of\nattention you require. However, if you draw attention to a ticket when the\ncore developers are paying particular attention to bugs -- just before a bug\nfixing sprint, or in the lead up to a beta release for example -- you're much\nmore likely to get a productive response.\n\nGentle IRC reminders can also work -- again, strategically timed if possible.\nDuring a bug sprint would be a very good time, for example.\n\nAnother way to get traction is to pull several related tickets together. When\nthe core developers sit down to fix a bug in an area they haven't touched for\na while, it can take a few minutes to remember all the fine details of how\nthat area of code works. If you collect several minor bug fixes together into\na similarly themed group, you make an attractive target, as the cost of coming\nup to speed on an area of code can be spread over multiple tickets.\n\nPlease refrain from emailing core developers personally, or repeatedly raising\nthe same issue over and over. This sort of behavior will not gain you any\nadditional attention -- certainly not the attention that you need in order to\nget your pet bug addressed.\n\nBut I've reminded you several times and you keep ignoring my patch!\n-------------------------------------------------------------------\n\nSeriously - we're not ignoring you. If your patch stands no chance of\ninclusion in Django, we'll close the ticket. For all the other tickets, we\nneed to prioritize our efforts, which means that some tickets will be\naddressed before others.\n\nOne of the criteria that is used to prioritize bug fixes is the number of\npeople that will likely be affected by a given bug. Bugs that have the\npotential to affect many people will generally get priority over those that\nare edge cases.\n\nAnother reason that bugs might be ignored for while is if the bug is a symptom\nof a larger problem. While we can spend time writing, testing and applying\nlots of little patches, sometimes the right solution is to rebuild. If a\nrebuild or refactor of a particular component has been proposed or is\nunderway, you may find that bugs affecting that component will not get as much\nattention. Again, this is just a matter of prioritizing scarce resources. By\nconcentrating on the rebuild, we can close all the little bugs at once, and\nhopefully prevent other little bugs from appearing in the future.\n\nWhatever the reason, please keep in mind that while you may hit a particular\nbug regularly, it doesn't necessarily follow that every single Django user\nwill hit the same bug. Different users use Django in different ways, stressing\ndifferent parts of the code under different conditions. When we evaluate the\nrelative priorities, we are generally trying to consider the needs of the\nentire community, not just the severity for one particular user. This doesn't\nmean that we think your problem is unimportant -- just that in the limited\ntime we have available, we will always err on the side of making 10 people\nhappy rather than making 1 person happy.\n"
  },
  {
    "path": "Django-1.5.1/docs/faq/general.txt",
    "content": "FAQ: General\n============\n\nWhy does this project exist?\n----------------------------\n\nDjango grew from a very practical need: World Online, a newspaper Web\noperation, is responsible for building intensive Web applications on journalism\ndeadlines. In the fast-paced newsroom, World Online often has only a matter of\nhours to take a complicated Web application from concept to public launch.\n\nAt the same time, the World Online Web developers have consistently been\nperfectionists when it comes to following best practices of Web development.\n\nIn fall 2003, the World Online developers (Adrian Holovaty and Simon Willison)\nditched PHP and began using Python to develop its Web sites. As they built\nintensive, richly interactive sites such as Lawrence.com, they began to extract\na generic Web development framework that let them build Web applications more\nand more quickly. They tweaked this framework constantly, adding improvements\nover two years.\n\nIn summer 2005, World Online decided to open-source the resulting software,\nDjango. Django would not be possible without a whole host of open-source\nprojects -- `Apache`_, `Python`_, and `PostgreSQL`_ to name a few -- and we're\nthrilled to be able to give something back to the open-source community.\n\n.. _Apache: http://httpd.apache.org/\n.. _Python: http://www.python.org/\n.. _PostgreSQL: http://www.postgresql.org/\n\nWhat does \"Django\" mean, and how do you pronounce it?\n-----------------------------------------------------\n\nDjango is named after `Django Reinhardt`_, a gypsy jazz guitarist from the 1930s\nto early 1950s. To this day, he's considered one of the best guitarists of all time.\n\nListen to his music. You'll like it.\n\nDjango is pronounced **JANG**-oh. Rhymes with FANG-oh. The \"D\" is silent.\n\nWe've also recorded an `audio clip of the pronunciation`_.\n\n.. _Django Reinhardt: http://en.wikipedia.org/wiki/Django_Reinhardt\n.. _audio clip of the pronunciation: http://red-bean.com/~adrian/django_pronunciation.mp3\n\nIs Django stable?\n-----------------\n\nYes, it's quite stable. World Online has been using Django for many years. Sites built on\nDjango have weathered traffic spikes of over one million hits an hour.\n\nDoes Django scale?\n------------------\n\nYes. Compared to development time, hardware is cheap, and so Django is\ndesigned to take advantage of as much hardware as you can throw at it.\n\nDjango uses a \"shared-nothing\" architecture, which means you can add hardware\nat any level -- database servers, caching servers or Web/application servers.\n\nThe framework cleanly separates components such as its database layer and\napplication layer. And it ships with a simple-yet-powerful\n:doc:`cache framework </topics/cache>`.\n\nWho's behind this?\n------------------\n\nDjango was originally developed at World Online, the Web department of a\nnewspaper in Lawrence, Kansas, USA. Django's now run by an international team of\nvolunteers; you can read all about them over at the :doc:`list of committers\n</internals/committers>`\n\nWhich sites use Django?\n-----------------------\n\n`DjangoSites.org`_ features a constantly growing list of Django-powered sites.\n\n.. _DjangoSites.org: http://djangosites.org\n\n.. _faq-mtv:\n\nDjango appears to be a MVC framework, but you call the Controller the \"view\", and the View the \"template\". How come you don't use the standard names?\n-----------------------------------------------------------------------------------------------------------------------------------------------------\n\nWell, the standard names are debatable.\n\nIn our interpretation of MVC, the \"view\" describes the data that gets presented\nto the user. It's not necessarily *how* the data *looks*, but *which* data is\npresented. The view describes *which data you see*, not *how you see it.* It's\na subtle distinction.\n\nSo, in our case, a \"view\" is the Python callback function for a particular URL,\nbecause that callback function describes which data is presented.\n\nFurthermore, it's sensible to separate content from presentation -- which is\nwhere templates come in. In Django, a \"view\" describes which data is presented,\nbut a view normally delegates to a template, which describes *how* the data is\npresented.\n\nWhere does the \"controller\" fit in, then? In Django's case, it's probably the\nframework itself: the machinery that sends a request to the appropriate view,\naccording to the Django URL configuration.\n\nIf you're hungry for acronyms, you might say that Django is a \"MTV\" framework\n-- that is, \"model\", \"template\", and \"view.\" That breakdown makes much more\nsense.\n\nAt the end of the day, of course, it comes down to getting stuff done. And,\nregardless of how things are named, Django gets stuff done in a way that's most\nlogical to us.\n\n<Framework X> does <feature Y> -- why doesn't Django?\n-----------------------------------------------------\n\nWe're well aware that there are other awesome Web frameworks out there, and\nwe're not averse to borrowing ideas where appropriate. However, Django was\ndeveloped precisely because we were unhappy with the status quo, so please be\naware that \"because <Framework X> does it\" is not going to be sufficient reason\nto add a given feature to Django.\n\nWhy did you write all of Django from scratch, instead of using other Python libraries?\n--------------------------------------------------------------------------------------\n\nWhen Django was originally written a couple of years ago, Adrian and Simon\nspent quite a bit of time exploring the various Python Web frameworks\navailable.\n\nIn our opinion, none of them were completely up to snuff.\n\nWe're picky. You might even call us perfectionists. (With deadlines.)\n\nOver time, we stumbled across open-source libraries that did things we'd\nalready implemented. It was reassuring to see other people solving similar\nproblems in similar ways, but it was too late to integrate outside code: We'd\nalready written, tested and implemented our own framework bits in several\nproduction settings -- and our own code met our needs delightfully.\n\nIn most cases, however, we found that existing frameworks/tools inevitably had\nsome sort of fundamental, fatal flaw that made us squeamish. No tool fit our\nphilosophies 100%.\n\nLike we said: We're picky.\n\nWe've documented our philosophies on the\n:doc:`design philosophies page </misc/design-philosophies>`.\n\nIs Django a content-management-system (CMS)?\n--------------------------------------------\n\nNo, Django is not a CMS, or any sort of \"turnkey product\" in and of itself.\nIt's a Web framework; it's a programming tool that lets you build Web sites.\n\nFor example, it doesn't make much sense to compare Django to something like\nDrupal_, because Django is something you use to *create* things like Drupal.\n\nOf course, Django's automatic admin site is fantastic and timesaving -- but\nthe admin site is one module of Django the framework. Furthermore, although\nDjango has special conveniences for building \"CMS-y\" apps, that doesn't mean\nit's not just as appropriate for building \"non-CMS-y\" apps (whatever that\nmeans!).\n\n.. _Drupal: http://drupal.org/\n\nHow can I download the Django documentation to read it offline?\n---------------------------------------------------------------\n\nThe Django docs are available in the ``docs`` directory of each Django tarball\nrelease. These docs are in reST (reStructuredText) format, and each text file\ncorresponds to a Web page on the official Django site.\n\nBecause the documentation is `stored in revision control`_, you can browse\ndocumentation changes just like you can browse code changes.\n\nTechnically, the docs on Django's site are generated from the latest development\nversions of those reST documents, so the docs on the Django site may offer more\ninformation than the docs that come with the latest Django release.\n\n.. _stored in revision control: https://github.com/django/django/tree/master/docs/\n\nWhere can I find Django developers for hire?\n--------------------------------------------\n\nConsult our `developers for hire page`_ for a list of Django developers who\nwould be happy to help you.\n\nYou might also be interested in posting a job to http://djangogigs.com/ .\nIf you want to find Django-capable people in your local area, try\nhttps://people.djangoproject.com/ .\n\n.. _developers for hire page: https://code.djangoproject.com/wiki/DevelopersForHire\n"
  },
  {
    "path": "Django-1.5.1/docs/faq/help.txt",
    "content": "FAQ: Getting Help\n=================\n\nHow do I do X? Why doesn't Y work? Where can I go to get help?\n--------------------------------------------------------------\n\nIf this FAQ doesn't contain an answer to your question, you might want to\ntry the `django-users mailing list`_. Feel free to ask any question related\nto installing, using, or debugging Django.\n\nIf you prefer IRC, the `#django IRC channel`_ on the Freenode IRC network is an\nactive community of helpful individuals who may be able to solve your problem.\n\n.. _`django-users mailing list`: http://groups.google.com/group/django-users\n.. _`#django IRC channel`: irc://irc.freenode.net/django\n\nWhy hasn't my message appeared on django-users?\n-----------------------------------------------\n\ndjango-users_ has a lot of subscribers. This is good for the community, as\nit means many people are available to contribute answers to questions.\nUnfortunately, it also means that django-users_ is an attractive target for\nspammers.\n\nIn order to combat the spam problem, when you join the django-users_ mailing\nlist, we manually moderate the first message you send to the list. This means\nthat spammers get caught, but it also means that your first question to the\nlist might take a little longer to get answered. We apologize for any\ninconvenience that this policy may cause.\n\n.. _django-users: http://groups.google.com/group/django-users\n\nNobody on django-users answered my question! What should I do?\n--------------------------------------------------------------\n\nTry making your question more specific, or provide a better example of your\nproblem.\n\nAs with most open-source mailing lists, the folks on django-users_ are\nvolunteers. If nobody has answered your question, it may be because nobody\nknows the answer, it may be because nobody can understand the question, or it\nmay be that everybody that can help is busy. One thing you might try is to ask\nthe question on IRC -- visit the `#django IRC channel`_ on the Freenode IRC\nnetwork.\n\nYou might notice we have a second mailing list, called django-developers_ --\nbut please don't email support questions to this mailing list. This list is\nfor discussion of the development of Django itself. Asking a tech support\nquestion there is considered quite impolite.\n\n.. _django-developers: http://groups.google.com/group/django-developers\n\nI think I've found a bug! What should I do?\n-------------------------------------------\n\nDetailed instructions on how to handle a potential bug can be found in our\n:ref:`Guide to contributing to Django <reporting-bugs>`.\n\nI think I've found a security problem! What should I do?\n--------------------------------------------------------\n\nIf you think you've found a security problem with Django, please send a message\nto security@djangoproject.com. This is a private list only open to long-time,\nhighly trusted Django developers, and its archives are not publicly readable.\n\nDue to the sensitive nature of security issues, we ask that if you think you\nhave found a security problem, *please* don't send a message to one of the\npublic mailing lists. Django has a\n:ref:`policy for handling security issues <reporting-security-issues>`;\nwhile a defect is outstanding, we would like to minimize any damage that\ncould be inflicted through public knowledge of that defect.\n\n.. _`policy for handling security issues`: ../contributing/#reporting-security-issues\n"
  },
  {
    "path": "Django-1.5.1/docs/faq/index.txt",
    "content": "==========\nDjango FAQ\n==========\n\n.. toctree::\n   :maxdepth: 2\n   \n   general\n   install\n   usage\n   help\n   models\n   admin\n   contributing\n   troubleshooting"
  },
  {
    "path": "Django-1.5.1/docs/faq/install.txt",
    "content": "FAQ: Installation\n=================\n\nHow do I get started?\n---------------------\n\n#. `Download the code`_.\n#. Install Django (read the :doc:`installation guide </intro/install>`).\n#. Walk through the :doc:`tutorial </intro/tutorial01>`.\n#. Check out the rest of the :doc:`documentation </index>`, and `ask questions`_ if you\n   run into trouble.\n\n.. _`Download the code`: https://www.djangoproject.com/download/\n.. _ask questions: https://www.djangoproject.com/community/\n\nWhat are Django's prerequisites?\n--------------------------------\n\nDjango requires Python, specifically Python 2.6.5 - 2.7.x. No other Python\nlibraries are required for basic Django usage. Django 1.5 also has\nexperimental support for Python 3.2.3 and above.\n\nFor a development environment -- if you just want to experiment with Django --\nyou don't need to have a separate Web server installed; Django comes with its\nown lightweight development server. For a production environment, Django follows\nthe WSGI spec, :pep:`3333`, which means it can run on a variety of server\nplatforms. See :doc:`Deploying Django </howto/deployment/index>` for some\npopular alternatives. Also, the `server arrangements wiki page`_ contains\ndetails for several deployment strategies.\n\nIf you want to use Django with a database, which is probably the case, you'll\nalso need a database engine. PostgreSQL_ is recommended, because we're\nPostgreSQL fans, and MySQL_, `SQLite 3`_, and Oracle_ are also supported.\n\n.. _Python: http://www.python.org/\n.. _server arrangements wiki page: https://code.djangoproject.com/wiki/ServerArrangements\n.. _PostgreSQL: http://www.postgresql.org/\n.. _MySQL: http://www.mysql.com/\n.. _`SQLite 3`: http://www.sqlite.org/\n.. _Oracle: http://www.oracle.com/\n\nDo I lose anything by using Python 2.6 versus newer Python versions, such as Python 2.7?\n----------------------------------------------------------------------------------------\n\nNot in the core framework. Currently, Django itself officially supports\nPython 2.6 (2.6.5 or higher) and 2.7. However, newer versions of\nPython are often faster, have more features, and are better supported. If you\nuse a newer version of Python you will also have access to some APIs that\naren't available under older versions of Python.\n\nThird-party applications for use with Django are, of course, free to set their\nown version requirements.\n\nAll else being equal, we recommend that you use the latest 2.x release\n(currently Python 2.7). This will let you take advantage of the numerous\nimprovements and optimizations to the Python language since version 2.6.\n\nGenerally speaking, we don't recommend running Django on Python 3 yet; see\nbelow for more.\n\nWhat Python version can I use with Django?\n------------------------------------------\n\n============== ===============\nDjango version Python versions\n============== ===============\n1.0            2.3, 2.4, 2.5, 2.6\n1.1            2.3, 2.4, 2.5, 2.6\n1.2            2.4, 2.5, 2.6, 2.7\n1.3            2.4, 2.5, 2.6, 2.7\n1.4            2.5, 2.6, 2.7\n**1.5**        **2.6.5, 2.7** and **3.2.3, 3.3 (experimental)**\n*1.6 (future)* *2.6.5, 2.7* and *3.2.3, 3.3*\n============== ===============\n\nCan I use Django with Python 3?\n-------------------------------\n\nDjango 1.5 introduces experimental support for Python 3.2.3 and above. However,\nwe don't yet suggest that you use Django and Python 3 in production.\n\nPython 3 support should be considered a \"preview\". It's offered to bootstrap\nthe transition of the Django ecosystem to Python 3, and to help you start\nporting your apps for future Python 3 compatibility. But we're not yet\nconfident enough to promise stability in production.\n\nOur current plan is to make Django 1.6 suitable for general use with Python 3.\n\nWill Django run under shared hosting (like TextDrive or Dreamhost)?\n-------------------------------------------------------------------\n\nSee our `Django-friendly Web hosts`_ page.\n\n.. _`Django-friendly Web hosts`: https://code.djangoproject.com/wiki/DjangoFriendlyWebHosts\n\nShould I use the stable version or development version?\n-------------------------------------------------------\n\nGenerally, if you're using code in production, you should be using a\nstable release. The Django project publishes a full stable release\nevery nine months or so, with bugfix updates in between. These stable\nreleases contain the API that is covered by our backwards\ncompatibility guarantees; if you write code against stable releases,\nyou shouldn't have any problems upgrading when the next official\nversion is released.\n"
  },
  {
    "path": "Django-1.5.1/docs/faq/models.txt",
    "content": "FAQ: Databases and models\n=========================\n\n.. _faq-see-raw-sql-queries:\n\nHow can I see the raw SQL queries Django is running?\n----------------------------------------------------\n\nMake sure your Django :setting:`DEBUG` setting is set to ``True``.\nThen, just do this::\n\n    >>> from django.db import connection\n    >>> connection.queries\n    [{'sql': 'SELECT polls_polls.id, polls_polls.question, polls_polls.pub_date FROM polls_polls',\n    'time': '0.002'}]\n\n``connection.queries`` is only available if :setting:`DEBUG` is ``True``.\nIt's a list of dictionaries in order of query execution. Each dictionary has\nthe following::\n\n    ``sql`` -- The raw SQL statement\n    ``time`` -- How long the statement took to execute, in seconds.\n\n``connection.queries`` includes all SQL statements -- INSERTs, UPDATES,\nSELECTs, etc. Each time your app hits the database, the query will be recorded.\nNote that the SQL recorded here may be :ref:`incorrectly quoted under SQLite\n<sqlite-connection-queries>`.\n\nIf you are using :doc:`multiple databases</topics/db/multi-db>`, you can use the\nsame interface on each member of the ``connections`` dictionary::\n\n    >>> from django.db import connections\n    >>> connections['my_db_alias'].queries\n\nCan I use Django with a pre-existing database?\n----------------------------------------------\n\nYes. See :doc:`Integrating with a legacy database </howto/legacy-databases>`.\n\nIf I make changes to a model, how do I update the database?\n-----------------------------------------------------------\n\nIf you don't mind clearing data, your project's ``manage.py`` utility has a\n:djadmin:`flush` option to reset the database to the state it was in\nimmediately after :djadmin:`syncdb` was executed.\n\nIf you do care about deleting data, you'll have to execute the ``ALTER TABLE``\nstatements manually in your database.\n\nThere are `external projects which handle schema updates\n<http://www.djangopackages.com/grids/g/database-migration/>`_, of which the current\ndefacto standard is `south <http://south.aeracode.org/>`_.\n\nDo Django models support multiple-column primary keys?\n------------------------------------------------------\n\nNo. Only single-column primary keys are supported.\n\nBut this isn't an issue in practice, because there's nothing stopping you from\nadding other constraints (using the ``unique_together`` model option or\ncreating the constraint directly in your database), and enforcing the\nuniqueness at that level. Single-column primary keys are needed for things such\nas the admin interface to work; e.g., you need a simple way of being able to\nspecify an object to edit or delete.\n\nHow do I add database-specific options to my CREATE TABLE statements, such as specifying MyISAM as the table type?\n------------------------------------------------------------------------------------------------------------------\n\nWe try to avoid adding special cases in the Django code to accommodate all the\ndatabase-specific options such as table type, etc. If you'd like to use any of\nthese options, create an :ref:`SQL initial data file <initial-sql>` that\ncontains ``ALTER TABLE`` statements that do what you want to do. The initial\ndata files are executed in your database after the ``CREATE TABLE`` statements.\n\nFor example, if you're using MySQL and want your tables to use the MyISAM table\ntype, create an initial data file and put something like this in it::\n\n    ALTER TABLE myapp_mytable ENGINE=MyISAM;\n\nAs explained in the :ref:`SQL initial data file <initial-sql>` documentation,\nthis SQL file can contain arbitrary SQL, so you can make any sorts of changes\nyou need to make.\n\nWhy is Django leaking memory?\n-----------------------------\n\nDjango isn't known to leak memory. If you find your Django processes are\nallocating more and more memory, with no sign of releasing it, check to make\nsure your :setting:`DEBUG` setting is set to ``False``. If :setting:`DEBUG`\nis ``True``, then Django saves a copy of every SQL statement it has executed.\n\n(The queries are saved in ``django.db.connection.queries``. See\n`How can I see the raw SQL queries Django is running?`_.)\n\nTo fix the problem, set :setting:`DEBUG` to ``False``.\n\nIf you need to clear the query list manually at any point in your functions,\njust call ``reset_queries()``, like this::\n\n    from django import db\n    db.reset_queries()\n"
  },
  {
    "path": "Django-1.5.1/docs/faq/troubleshooting.txt",
    "content": "===============\nTroubleshooting\n===============\n\nThis page contains some advice about errors and problems commonly encountered\nduring the development of Django applications.\n\n.. _troubleshooting-django-admin-py:\n\nProblems running django-admin.py\n================================\n\n\"command not found: django-admin.py\"\n------------------------------------\n\n:doc:`django-admin.py </ref/django-admin>` should be on your system path if you\ninstalled Django via ``python setup.py``. If it's not on your path, you can\nfind it in ``site-packages/django/bin``, where ``site-packages`` is a directory\nwithin your Python installation. Consider symlinking to :doc:`django-admin.py\n</ref/django-admin>` from some place on your path, such as\n:file:`/usr/local/bin`.\n\nScript name may differ in distribution packages\n-----------------------------------------------\n\nIf you installed Django using a Linux distribution's package manager\n(e.g. ``apt-get`` or ``yum``) ``django-admin.py`` may have been renamed to\n``django-admin``; use that instead.\n\nMac OS X permissions\n--------------------\n\nIf you're using Mac OS X, you may see the message \"permission denied\" when\nyou try to run ``django-admin.py``. This is because, on Unix-based systems like\nOS X, a file must be marked as \"executable\" before it can be run as a program.\nTo do this, open Terminal.app and navigate (using the ``cd`` command) to the\ndirectory where :doc:`django-admin.py </ref/django-admin>` is installed, then\nrun the command ``sudo chmod +x django-admin.py``.\n\nRunning virtualenv on Windows\n-----------------------------\n\nIf you used virtualenv_ to :ref:`install Django <installing-official-release>`\non Windows, you may get an ``ImportError`` when you try to run\n``django-admin.py``. This is because Windows does not run the\nPython interpreter from your virtual environment unless you invoke it\ndirectly. Instead, prefix all commands that use .py files with ``python`` and\nuse the full path to the file, like so:\n``python C:\\pythonXY\\Scripts\\django-admin.py``.\n\n.. _virtualenv: http://www.virtualenv.org/\n"
  },
  {
    "path": "Django-1.5.1/docs/faq/usage.txt",
    "content": "FAQ: Using Django\n=================\n\nWhy do I get an error about importing DJANGO_SETTINGS_MODULE?\n-------------------------------------------------------------\n\nMake sure that:\n\n* The environment variable DJANGO_SETTINGS_MODULE is set to a\n  fully-qualified Python module (i.e. \"mysite.settings\").\n\n* Said module is on ``sys.path`` (``import mysite.settings`` should work).\n\n* The module doesn't contain syntax errors (of course).\n\nI can't stand your template language. Do I have to use it?\n----------------------------------------------------------\n\nWe happen to think our template engine is the best thing since chunky bacon,\nbut we recognize that choosing a template language runs close to religion.\nThere's nothing about Django that requires using the template language, so\nif you're attached to ZPT, Cheetah, or whatever, feel free to use those.\n\nDo I have to use your model/database layer?\n-------------------------------------------\n\nNope. Just like the template system, the model/database layer is decoupled from\nthe rest of the framework.\n\nThe one exception is: If you use a different database library, you won't get to\nuse Django's automatically-generated admin site. That app is coupled to the\nDjango database layer.\n\nHow do I use image and file fields?\n-----------------------------------\n\nUsing a :class:`~django.db.models.FileField` or an\n:class:`~django.db.models.ImageField` in a model takes a few steps:\n\n#. In your settings file, you'll need to define :setting:`MEDIA_ROOT` as\n   the full path to a directory where you'd like Django to store uploaded\n   files. (For performance, these files are not stored in the database.)\n   Define :setting:`MEDIA_URL` as the base public URL of that directory.\n   Make sure that this directory is writable by the Web server's user\n   account.\n\n#. Add the :class:`~django.db.models.FileField` or\n   :class:`~django.db.models.ImageField` to your model, making sure to\n   define the :attr:`~django.db.models.FileField.upload_to` option to tell\n   Django to which subdirectory of :setting:`MEDIA_ROOT` it should upload\n   files.\n\n#. All that will be stored in your database is a path to the file\n   (relative to :setting:`MEDIA_ROOT`). You'll most likely want to use the\n   convenience :attr:`~django.db.models.fields.files.FieldFile.url` attribute\n   provided by Django. For example, if your\n   :class:`~django.db.models.ImageField` is called ``mug_shot``, you can get\n   the absolute path to your image in a template with\n   ``{{ object.mug_shot.url }}``.\n\nHow do I make a variable available to all my templates?\n-------------------------------------------------------\n\nSometimes your templates just all need the same thing. A common example would\nbe dynamically-generated menus. At first glance, it seems logical to simply\nadd a common dictionary to the template context.\n\nThe correct solution is to use a ``RequestContext``. Details on how to do this\nare here: :ref:`subclassing-context-requestcontext`.\n"
  },
  {
    "path": "Django-1.5.1/docs/glossary.txt",
    "content": ".. _glossary:\n\n========\nGlossary\n========\n\n.. glossary::\n\n    field\n        An attribute on a :term:`model`; a given field usually maps directly to\n        a single database column.\n\n        See :doc:`/topics/db/models`.\n\n    generic view\n        A higher-order :term:`view` function that provides an abstract/generic\n        implementation of a common idiom or pattern found in view development.\n\n        See :doc:`/topics/class-based-views/index`.\n\n    model\n        Models store your application's data.\n\n        See :doc:`/topics/db/models`.\n\n    MTV\n        \"Model-template-view\"; a software pattern, similar in style to MVC, but\n        a better description of the way Django does things.\n\n        See :ref:`the FAQ entry <faq-mtv>`.\n\n    MVC\n        `Model-view-controller`__; a software pattern. Django :ref:`follows MVC\n        to some extent <faq-mtv>`.\n\n        __ http://en.wikipedia.org/wiki/Model-view-controller\n\n    project\n        A Python package -- i.e. a directory of code -- that contains all the\n        settings for an instance of Django. This would include database\n        configuration, Django-specific options and application-specific\n        settings.\n\n    property\n        Also known as \"managed attributes\", and a feature of Python since\n        version 2.2. This is a neat way to implement attributes whose usage\n        resembles attribute access, but whose implementation uses method calls.\n\n        See :func:`property`.\n\n    queryset\n        An object representing some set of rows to be fetched from the database.\n\n        See :doc:`/topics/db/queries`.\n\n    slug\n        A short label for something, containing only letters, numbers,\n        underscores or hyphens. They're generally used in URLs. For\n        example, in a typical blog entry URL:\n\n        .. parsed-literal::\n\n            https://www.djangoproject.com/weblog/2008/apr/12/**spring**/\n\n        the last bit (``spring``) is the slug.\n\n    template\n        A chunk of text that acts as formatting for representing data. A\n        template helps to abstract the presentation of data from the data\n        itself.\n\n        See :doc:`/topics/templates`.\n\n    view\n        A function responsible for rending a page.\n"
  },
  {
    "path": "Django-1.5.1/docs/howto/auth-remote-user.txt",
    "content": "====================================\nAuthentication using ``REMOTE_USER``\n====================================\n\n.. currentmodule:: django.contrib.auth.backends\n\nThis document describes how to make use of external authentication sources\n(where the Web server sets the ``REMOTE_USER`` environment variable) in your\nDjango applications.  This type of authentication solution is typically seen on\nintranet sites, with single sign-on solutions such as IIS and Integrated\nWindows Authentication or Apache and `mod_authnz_ldap`_, `CAS`_, `Cosign`_,\n`WebAuth`_, `mod_auth_sspi`_, etc.\n\n.. _mod_authnz_ldap: http://httpd.apache.org/docs/2.2/mod/mod_authnz_ldap.html\n.. _CAS: http://www.jasig.org/cas\n.. _Cosign: http://weblogin.org\n.. _WebAuth: http://www.stanford.edu/services/webauth/\n.. _mod_auth_sspi: http://sourceforge.net/projects/mod-auth-sspi\n\nWhen the Web server takes care of authentication it typically sets the\n``REMOTE_USER`` environment variable for use in the underlying application.  In\nDjango, ``REMOTE_USER`` is made available in the :attr:`request.META\n<django.http.HttpRequest.META>` attribute.  Django can be configured to make\nuse of the ``REMOTE_USER`` value using the ``RemoteUserMiddleware`` and\n``RemoteUserBackend`` classes found in :mod:`django.contrib.auth`.\n\nConfiguration\n=============\n\n.. class:: django.contrib.auth.middleware.RemoteUserMiddleware\n\nFirst, you must add the\n:class:`django.contrib.auth.middleware.RemoteUserMiddleware` to the\n:setting:`MIDDLEWARE_CLASSES` setting **after** the\n:class:`django.contrib.auth.middleware.AuthenticationMiddleware`::\n\n    MIDDLEWARE_CLASSES = (\n        ...\n        'django.contrib.auth.middleware.AuthenticationMiddleware',\n        'django.contrib.auth.middleware.RemoteUserMiddleware',\n        ...\n        )\n\nNext, you must replace the :class:`~django.contrib.auth.backends.ModelBackend`\nwith ``RemoteUserBackend`` in the :setting:`AUTHENTICATION_BACKENDS` setting::\n\n    AUTHENTICATION_BACKENDS = (\n        'django.contrib.auth.backends.RemoteUserBackend',\n    )\n\nWith this setup, ``RemoteUserMiddleware`` will detect the username in\n``request.META['REMOTE_USER']`` and will authenticate and auto-login that user\nusing the ``RemoteUserBackend``.\n\n.. note::\n   Since the ``RemoteUserBackend`` inherits from ``ModelBackend``, you will\n   still have all of the same permissions checking that is implemented in\n   ``ModelBackend``.\n\nIf your authentication mechanism uses a custom HTTP header and not\n``REMOTE_USER``, you can subclass ``RemoteUserMiddleware`` and set the\n``header`` attribute to the desired ``request.META`` key.  For example::\n\n    from django.contrib.auth.middleware import RemoteUserMiddleware\n\n    class CustomHeaderMiddleware(RemoteUserMiddleware):\n        header = 'HTTP_AUTHUSER'\n\n\n``RemoteUserBackend``\n=====================\n\n.. class:: django.contrib.auth.backends.RemoteUserBackend\n\nIf you need more control, you can create your own authentication backend\nthat inherits from ``RemoteUserBackend`` and overrides certain parts:\n\nAttributes\n~~~~~~~~~~\n\n.. attribute:: RemoteUserBackend.create_unknown_user\n\n    ``True`` or ``False``.  Determines whether or not a\n    :class:`~django.contrib.auth.models.User` object is created if not already\n    in the database.  Defaults to ``True``.\n\nMethods\n~~~~~~~\n\n.. method:: RemoteUserBackend.clean_username(username)\n\n   Performs any cleaning on the ``username`` (e.g. stripping LDAP DN\n   information) prior to using it to get or create a\n   :class:`~django.contrib.auth.models.User` object.  Returns the cleaned\n   username.\n\n.. method:: RemoteUserBackend.configure_user(user)\n\n   Configures a newly created user.  This method is called immediately after a\n   new user is created, and can be used to perform custom setup actions, such\n   as setting the user's groups based on attributes in an LDAP directory.\n   Returns the user object.\n"
  },
  {
    "path": "Django-1.5.1/docs/howto/custom-file-storage.txt",
    "content": "Writing a custom storage system\n===============================\n\n.. currentmodule:: django.core.files.storage\n\nIf you need to provide custom file storage -- a common example is storing files\non some remote system -- you can do so by defining a custom storage class.\nYou'll need to follow these steps:\n\n#. Your custom storage system must be a subclass of\n   ``django.core.files.storage.Storage``::\n\n        from django.core.files.storage import Storage\n\n        class MyStorage(Storage):\n            ...\n\n#. Django must be able to instantiate your storage system without any arguments.\n   This means that any settings should be taken from ``django.conf.settings``::\n\n        from django.conf import settings\n        from django.core.files.storage import Storage\n\n        class MyStorage(Storage):\n            def __init__(self, option=None):\n                if not option:\n                    option = settings.CUSTOM_STORAGE_OPTIONS\n                ...\n\n#. Your storage class must implement the :meth:`_open()` and :meth:`_save()`\n   methods, along with any other methods appropriate to your storage class. See\n   below for more on these methods.\n\n   In addition, if your class provides local file storage, it must override\n   the ``path()`` method.\n\nYour custom storage system may override any of the storage methods explained in\n:doc:`/ref/files/storage`, but you **must** implement the following methods:\n\n* :meth:`Storage.delete`\n* :meth:`Storage.exists`\n* :meth:`Storage.listdir`\n* :meth:`Storage.size`\n* :meth:`Storage.url`\n\nYou'll also usually want to use hooks specifically designed for custom storage\nobjects. These are:\n\n.. method:: _open(name, mode='rb')\n\n**Required**.\n\nCalled by ``Storage.open()``, this is the actual mechanism the storage class\nuses to open the file. This must return a ``File`` object, though in most cases,\nyou'll want to return some subclass here that implements logic specific to the\nbackend storage system.\n\n.. method:: _save(name, content)\n\nCalled by ``Storage.save()``. The ``name`` will already have gone through\n``get_valid_name()`` and ``get_available_name()``, and the ``content`` will be a\n``File`` object itself.\n\nShould return the actual name of name of the file saved (usually the ``name``\npassed in, but if the storage needs to change the file name return the new name\ninstead).\n\n.. method:: get_valid_name(name)\n\n\nReturns a filename suitable for use with the underlying storage system. The\n``name`` argument passed to this method is the original filename sent to the\nserver, after having any path information removed. Override this to customize\nhow non-standard characters are converted to safe filenames.\n\nThe code provided on ``Storage`` retains only alpha-numeric characters, periods\nand underscores from the original filename, removing everything else.\n\n.. method:: get_available_name(name)\n\nReturns a filename that is available in the storage mechanism, possibly taking\nthe provided filename into account. The ``name`` argument passed to this method\nwill have already cleaned to a filename valid for the storage system, according\nto the ``get_valid_name()`` method described above.\n\nThe code provided on ``Storage`` simply appends ``\"_1\"``, ``\"_2\"``, etc. to the\nfilename until it finds one that's available in the destination directory.\n"
  },
  {
    "path": "Django-1.5.1/docs/howto/custom-management-commands.txt",
    "content": "====================================\nWriting custom django-admin commands\n====================================\n\n.. module:: django.core.management\n\nApplications can register their own actions with ``manage.py``. For example,\nyou might want to add a ``manage.py`` action for a Django app that you're\ndistributing. In this document, we will be building a custom ``closepoll``\ncommand for the ``polls`` application from the\n:doc:`tutorial</intro/tutorial01>`.\n\nTo do this, just add a ``management/commands`` directory to the application.\nDjango will register a ``manage.py`` command for each Python module in that\ndirectory whose name doesn't begin with an underscore. For example::\n\n    polls/\n        __init__.py\n        models.py\n        management/\n            __init__.py\n            commands/\n                __init__.py\n                _private.py\n                closepoll.py\n        tests.py\n        views.py\n\nIn this example, the ``closepoll`` command will be made available to any project\nthat includes the ``polls`` application in :setting:`INSTALLED_APPS`.\n\nThe ``_private.py`` module will not be available as a management command.\n\nThe ``closepoll.py`` module has only one requirement -- it must define a class\n``Command`` that extends :class:`BaseCommand` or one of its\n:ref:`subclasses<ref-basecommand-subclasses>`.\n\n.. admonition:: Standalone scripts\n\n  Custom management commands are especially useful for running standalone\n  scripts or for scripts that are periodically executed from the UNIX crontab\n  or from Windows scheduled tasks control panel.\n\nTo implement the command, edit ``polls/management/commands/closepoll.py`` to\nlook like this:\n\n.. code-block:: python\n\n    from django.core.management.base import BaseCommand, CommandError\n    from polls.models import Poll\n\n    class Command(BaseCommand):\n        args = '<poll_id poll_id ...>'\n        help = 'Closes the specified poll for voting'\n\n        def handle(self, *args, **options):\n            for poll_id in args:\n                try:\n                    poll = Poll.objects.get(pk=int(poll_id))\n                except Poll.DoesNotExist:\n                    raise CommandError('Poll \"%s\" does not exist' % poll_id)\n\n                poll.opened = False\n                poll.save()\n\n                self.stdout.write('Successfully closed poll \"%s\"' % poll_id)\n\n.. _management-commands-output:\n\n.. note::\n    When you are using management commands and wish to provide console\n    output, you should write to ``self.stdout`` and ``self.stderr``,\n    instead of printing to ``stdout`` and ``stderr`` directly. By\n    using these proxies, it becomes much easier to test your custom\n    command. Note also that you don't need to end messages with a newline\n    character, it will be added automatically, unless you specify the ``ending``\n    parameter::\n\n        self.stdout.write(\"Unterminated line\", ending='')\n\nThe new custom command can be called using ``python manage.py closepoll\n<poll_id>``.\n\nThe ``handle()`` method takes zero or more ``poll_ids`` and sets ``poll.opened``\nto ``False`` for each one. If the user referenced any nonexistent polls, a\n:class:`CommandError` is raised. The ``poll.opened`` attribute does not exist\nin the :doc:`tutorial</intro/tutorial01>` and was added to\n``polls.models.Poll`` for this example.\n\nThe same ``closepoll`` could be easily modified to delete a given poll instead\nof closing it by accepting additional command line options. These custom options\nmust be added to :attr:`~BaseCommand.option_list` like this:\n\n.. code-block:: python\n\n    from optparse import make_option\n\n    class Command(BaseCommand):\n        option_list = BaseCommand.option_list + (\n            make_option('--delete',\n                action='store_true',\n                dest='delete',\n                default=False,\n                help='Delete poll instead of closing it'),\n            )\n\n        def handle(self, *args, **options):\n            # ...\n            if options['delete']:\n                poll.delete()\n            # ...\n\nThe option (``delete`` in our example) is available in the options dict\nparameter of the handle method. See the :py:mod:`optparse` Python documentation\nfor more about ``make_option`` usage.\n\nIn addition to being able to add custom command line options, all\n:doc:`management commands</ref/django-admin>` can accept some\ndefault options such as :djadminopt:`--verbosity` and :djadminopt:`--traceback`.\n\n.. admonition:: Management commands and locales\n\n    The :meth:`BaseCommand.execute` method sets the hardcoded ``en-us`` locale\n    because the commands shipped with Django perform several tasks\n    (for example, user-facing content rendering and database population) that\n    require a system-neutral string language (for which we use ``en-us``).\n\n    If your custom management command uses another locale, you should manually\n    activate and deactivate it in your :meth:`~BaseCommand.handle` or\n    :meth:`~NoArgsCommand.handle_noargs` method using the functions provided by\n    the I18N support code:\n\n    .. code-block:: python\n\n        from django.core.management.base import BaseCommand, CommandError\n        from django.utils import translation\n\n        class Command(BaseCommand):\n            ...\n            can_import_settings = True\n\n            def handle(self, *args, **options):\n\n                # Activate a fixed locale, e.g. Russian\n                translation.activate('ru')\n\n                # Or you can activate the LANGUAGE_CODE\n                # chosen in the settings:\n                #\n                #from django.conf import settings\n                #translation.activate(settings.LANGUAGE_CODE)\n\n                # Your command logic here\n                # ...\n\n                translation.deactivate()\n\n    Take into account though, that system management commands typically have to\n    be very careful about running in non-uniform locales, so:\n\n    * Make sure the :setting:`USE_I18N` setting is always ``True`` when running\n      the command (this is one good example of the potential problems stemming\n      from a dynamic runtime environment that Django commands avoid offhand by\n      always using a fixed locale).\n\n    * Review the code of your command and the code it calls for behavioral\n      differences when locales are changed and evaluate its impact on\n      predictable behavior of your command.\n\nCommand objects\n===============\n\n.. class:: BaseCommand\n\nThe base class from which all management commands ultimately derive.\n\nUse this class if you want access to all of the mechanisms which\nparse the command-line arguments and work out what code to call in\nresponse; if you don't need to change any of that behavior,\nconsider using one of its :ref:`subclasses<ref-basecommand-subclasses>`.\n\nSubclassing the :class:`BaseCommand` class requires that you implement the\n:meth:`~BaseCommand.handle` method.\n\nAttributes\n----------\n\nAll attributes can be set in your derived class and can be used in\n:class:`BaseCommand`'s :ref:`subclasses<ref-basecommand-subclasses>`.\n\n.. attribute:: BaseCommand.args\n\n  A string listing the arguments accepted by the command,\n  suitable for use in help messages; e.g., a command which takes\n  a list of application names might set this to '<appname\n  appname ...>'.\n\n.. attribute:: BaseCommand.can_import_settings\n\n  A boolean indicating whether the command needs to be able to\n  import Django settings; if ``True``, ``execute()`` will verify\n  that this is possible before proceeding. Default value is\n  ``True``.\n\n.. attribute:: BaseCommand.help\n\n  A short description of the command, which will be printed in the\n  help message when the user runs the command\n  ``python manage.py help <command>``.\n\n.. attribute:: BaseCommand.option_list\n\n  This is the list of ``optparse`` options which will be fed\n  into the command's ``OptionParser`` for parsing arguments.\n\n.. attribute:: BaseCommand.output_transaction\n\n  A boolean indicating whether the command outputs SQL\n  statements; if ``True``, the output will automatically be\n  wrapped with ``BEGIN;`` and ``COMMIT;``. Default value is\n  ``False``.\n\n.. attribute:: BaseCommand.requires_model_validation\n\n  A boolean; if ``True``, validation of installed models will be\n  performed prior to executing the command. Default value is\n  ``True``. To validate an individual application's models\n  rather than all applications' models, call\n  :meth:`~BaseCommand.validate` from :meth:`~BaseCommand.handle`.\n\nMethods\n-------\n\n:class:`BaseCommand` has a few methods that can be overridden but only\nthe :meth:`~BaseCommand.handle` method must be implemented.\n\n.. admonition:: Implementing a constructor in a subclass\n\n  If you implement ``__init__`` in your subclass of :class:`BaseCommand`,\n  you must call :class:`BaseCommand`'s ``__init__``.\n\n  .. code-block:: python\n\n    class Command(BaseCommand):\n        def __init__(self, *args, **kwargs):\n            super(Command, self).__init__(*args, **kwargs)\n            # ...\n\n.. method:: BaseCommand.get_version()\n\n    Return the Django version, which should be correct for all\n    built-in Django commands. User-supplied commands can\n    override this method to return their own version.\n\n.. method:: BaseCommand.execute(*args, **options)\n\n    Try to execute this command, performing model validation if\n    needed (as controlled by the attribute\n    :attr:`requires_model_validation`). If the command raises a\n    :class:`CommandError`, intercept it and print it sensibly to\n    stderr.\n\n.. admonition:: Calling a management command in your code\n\n    ``execute()`` should not be called directly from your code to execute a\n    command. Use :ref:`call_command <call-command>` instead.\n\n.. method:: BaseCommand.handle(*args, **options)\n\n    The actual logic of the command. Subclasses must implement this method.\n\n.. method:: BaseCommand.validate(app=None, display_num_errors=False)\n\n    Validates the given app, raising :class:`CommandError` for any errors.\n\n    If ``app`` is None, then all installed apps are validated.\n\n\n.. _ref-basecommand-subclasses:\n\nBaseCommand subclasses\n----------------------\n\n.. class:: AppCommand\n\nA management command which takes one or more installed application\nnames as arguments, and does something with each of them.\n\nRather than implementing :meth:`~BaseCommand.handle`, subclasses must implement\n:meth:`~AppCommand.handle_app`, which will be called once for each application.\n\n.. method:: AppCommand.handle_app(app, **options)\n\n    Perform the command's actions for ``app``, which will be the\n    Python module corresponding to an application name given on\n    the command line.\n\n.. class:: LabelCommand\n\nA management command which takes one or more arbitrary arguments\n(labels) on the command line, and does something with each of\nthem.\n\nRather than implementing :meth:`~BaseCommand.handle`, subclasses must implement\n:meth:`~LabelCommand.handle_label`, which will be called once for each label.\n\n.. method:: LabelCommand.handle_label(label, **options)\n\n    Perform the command's actions for ``label``, which will be the\n    string as given on the command line.\n\n.. class:: NoArgsCommand\n\nA command which takes no arguments on the command line.\n\nRather than implementing :meth:`~BaseCommand.handle`, subclasses must implement\n:meth:`~NoArgsCommand.handle_noargs`; :meth:`~BaseCommand.handle` itself is\noverridden to ensure no arguments are passed to the command.\n\n.. method:: NoArgsCommand.handle_noargs(**options)\n\n    Perform this command's actions\n\n.. _ref-command-exceptions:\n\nCommand exceptions\n------------------\n\n.. class:: CommandError\n\nException class indicating a problem while executing a management\ncommand.\n\nIf this exception is raised during the execution of a management\ncommand from a command line console, it will be caught and turned into a\nnicely-printed error message to the appropriate output stream (i.e., stderr);\nas a result, raising this exception (with a sensible description of the\nerror) is the preferred way to indicate that something has gone\nwrong in the execution of a command.\n\nIf a management command is called from code through\n:ref:`call_command <call-command>`, it's up to you to catch the exception\nwhen needed.\n"
  },
  {
    "path": "Django-1.5.1/docs/howto/custom-model-fields.txt",
    "content": "===========================\nWriting custom model fields\n===========================\n\n.. currentmodule:: django.db.models\n\nIntroduction\n============\n\nThe :doc:`model reference </topics/db/models>` documentation explains how to use\nDjango's standard field classes -- :class:`~django.db.models.CharField`,\n:class:`~django.db.models.DateField`, etc. For many purposes, those classes are\nall you'll need. Sometimes, though, the Django version won't meet your precise\nrequirements, or you'll want to use a field that is entirely different from\nthose shipped with Django.\n\nDjango's built-in field types don't cover every possible database column type --\nonly the common types, such as ``VARCHAR`` and ``INTEGER``. For more obscure\ncolumn types, such as geographic polygons or even user-created types such as\n`PostgreSQL custom types`_, you can define your own Django ``Field`` subclasses.\n\n.. _PostgreSQL custom types: http://www.postgresql.org/docs/8.2/interactive/sql-createtype.html\n\nAlternatively, you may have a complex Python object that can somehow be\nserialized to fit into a standard database column type. This is another case\nwhere a ``Field`` subclass will help you use your object with your models.\n\nOur example object\n------------------\n\nCreating custom fields requires a bit of attention to detail. To make things\neasier to follow, we'll use a consistent example throughout this document:\nwrapping a Python object representing the deal of cards in a hand of Bridge_.\nDon't worry, you don't have know how to play Bridge to follow this example.\nYou only need to know that 52 cards are dealt out equally to four players, who\nare traditionally called *north*, *east*, *south* and *west*.  Our class looks\nsomething like this::\n\n    class Hand(object):\n        \"\"\"A hand of cards (bridge style)\"\"\"\n\n        def __init__(self, north, east, south, west):\n            # Input parameters are lists of cards ('Ah', '9s', etc)\n            self.north = north\n            self.east = east\n            self.south = south\n            self.west = west\n\n        # ... (other possibly useful methods omitted) ...\n\n.. _Bridge: http://en.wikipedia.org/wiki/Contract_bridge\n\nThis is just an ordinary Python class, with nothing Django-specific about it.\nWe'd like to be able to do things like this in our models (we assume the\n``hand`` attribute on the model is an instance of ``Hand``)::\n\n    example = MyModel.objects.get(pk=1)\n    print(example.hand.north)\n\n    new_hand = Hand(north, east, south, west)\n    example.hand = new_hand\n    example.save()\n\nWe assign to and retrieve from the ``hand`` attribute in our model just like\nany other Python class. The trick is to tell Django how to handle saving and\nloading such an object.\n\nIn order to use the ``Hand`` class in our models, we **do not** have to change\nthis class at all. This is ideal, because it means you can easily write\nmodel support for existing classes where you cannot change the source code.\n\n.. note::\n    You might only be wanting to take advantage of custom database column\n    types and deal with the data as standard Python types in your models;\n    strings, or floats, for example. This case is similar to our ``Hand``\n    example and we'll note any differences as we go along.\n\nBackground theory\n=================\n\nDatabase storage\n----------------\n\nThe simplest way to think of a model field is that it provides a way to take a\nnormal Python object -- string, boolean, ``datetime``, or something more\ncomplex like ``Hand`` -- and convert it to and from a format that is useful\nwhen dealing with the database (and serialization, but, as we'll see later,\nthat falls out fairly naturally once you have the database side under control).\n\nFields in a model must somehow be converted to fit into an existing database\ncolumn type. Different databases provide different sets of valid column types,\nbut the rule is still the same: those are the only types you have to work\nwith. Anything you want to store in the database must fit into one of\nthose types.\n\nNormally, you're either writing a Django field to match a particular database\ncolumn type, or there's a fairly straightforward way to convert your data to,\nsay, a string.\n\nFor our ``Hand`` example, we could convert the card data to a string of 104\ncharacters by concatenating all the cards together in a pre-determined order --\nsay, all the *north* cards first, then the *east*, *south* and *west* cards. So\n``Hand`` objects can be saved to text or character columns in the database.\n\nWhat does a field class do?\n---------------------------\n\n.. class:: Field\n\nAll of Django's fields (and when we say *fields* in this document, we always\nmean model fields and not :doc:`form fields </ref/forms/fields>`) are subclasses\nof :class:`django.db.models.Field`. Most of the information that Django records\nabout a field is common to all fields -- name, help text, uniqueness and so\nforth. Storing all that information is handled by ``Field``. We'll get into the\nprecise details of what ``Field`` can do later on; for now, suffice it to say\nthat everything descends from ``Field`` and then customizes key pieces of the\nclass behavior.\n\nIt's important to realize that a Django field class is not what is stored in\nyour model attributes. The model attributes contain normal Python objects. The\nfield classes you define in a model are actually stored in the ``Meta`` class\nwhen the model class is created (the precise details of how this is done are\nunimportant here). This is because the field classes aren't necessary when\nyou're just creating and modifying attributes. Instead, they provide the\nmachinery for converting between the attribute value and what is stored in the\ndatabase or sent to the :doc:`serializer </topics/serialization>`.\n\nKeep this in mind when creating your own custom fields. The Django ``Field``\nsubclass you write provides the machinery for converting between your Python\ninstances and the database/serializer values in various ways (there are\ndifferences between storing a value and using a value for lookups, for\nexample). If this sounds a bit tricky, don't worry -- it will become clearer in\nthe examples below. Just remember that you will often end up creating two\nclasses when you want a custom field:\n\n* The first class is the Python object that your users will manipulate.\n  They will assign it to the model attribute, they will read from it for\n  displaying purposes, things like that. This is the ``Hand`` class in our\n  example.\n\n* The second class is the ``Field`` subclass. This is the class that knows\n  how to convert your first class back and forth between its permanent\n  storage form and the Python form.\n\nWriting a field subclass\n========================\n\nWhen planning your :class:`~django.db.models.Field` subclass, first give some\nthought to which existing :class:`~django.db.models.Field` class your new field\nis most similar to. Can you subclass an existing Django field and save yourself\nsome work? If not, you should subclass the :class:`~django.db.models.Field`\nclass, from which everything is descended.\n\nInitializing your new field is a matter of separating out any arguments that are\nspecific to your case from the common arguments and passing the latter to the\n``__init__()`` method of :class:`~django.db.models.Field` (or your parent\nclass).\n\nIn our example, we'll call our field ``HandField``. (It's a good idea to call\nyour :class:`~django.db.models.Field` subclass ``<Something>Field``, so it's\neasily identifiable as a :class:`~django.db.models.Field` subclass.) It doesn't\nbehave like any existing field, so we'll subclass directly from\n:class:`~django.db.models.Field`::\n\n    from django.db import models\n\n    class HandField(models.Field):\n\n        description = \"A hand of cards (bridge style)\"\n\n        def __init__(self, *args, **kwargs):\n            kwargs['max_length'] = 104\n            super(HandField, self).__init__(*args, **kwargs)\n\nOur ``HandField`` accepts most of the standard field options (see the list\nbelow), but we ensure it has a fixed length, since it only needs to hold 52\ncard values plus their suits; 104 characters in total.\n\n.. note::\n\n    Many of Django's model fields accept options that they don't do anything\n    with. For example, you can pass both\n    :attr:`~django.db.models.Field.editable` and\n    :attr:`~django.db.models.DateField.auto_now` to a\n    :class:`django.db.models.DateField` and it will simply ignore the\n    :attr:`~django.db.models.Field.editable` parameter\n    (:attr:`~django.db.models.DateField.auto_now` being set implies\n    ``editable=False``). No error is raised in this case.\n\n    This behavior simplifies the field classes, because they don't need to\n    check for options that aren't necessary. They just pass all the options to\n    the parent class and then don't use them later on. It's up to you whether\n    you want your fields to be more strict about the options they select, or to\n    use the simpler, more permissive behavior of the current fields.\n\n.. method:: Field.__init__\n\nThe :meth:`~django.db.models.Field.__init__` method takes the following\nparameters:\n\n* :attr:`~django.db.models.Field.verbose_name`\n* ``name``\n* :attr:`~django.db.models.Field.primary_key`\n* :attr:`~django.db.models.CharField.max_length`\n* :attr:`~django.db.models.Field.unique`\n* :attr:`~django.db.models.Field.blank`\n* :attr:`~django.db.models.Field.null`\n* :attr:`~django.db.models.Field.db_index`\n* ``rel``: Used for related fields (like :class:`ForeignKey`). For advanced\n  use only.\n* :attr:`~django.db.models.Field.default`\n* :attr:`~django.db.models.Field.editable`\n* ``serialize``: If ``False``, the field will not be serialized when the model\n  is passed to Django's :doc:`serializers </topics/serialization>`. Defaults to\n  ``True``.\n* :attr:`~django.db.models.Field.unique_for_date`\n* :attr:`~django.db.models.Field.unique_for_month`\n* :attr:`~django.db.models.Field.unique_for_year`\n* :attr:`~django.db.models.Field.choices`\n* :attr:`~django.db.models.Field.help_text`\n* :attr:`~django.db.models.Field.db_column`\n* :attr:`~django.db.models.Field.db_tablespace`: Only for index creation, if the\n  backend supports :doc:`tablespaces </topics/db/tablespaces>`. You can usually\n  ignore this option.\n* ``auto_created``: ``True`` if the field was automatically created, as for the\n  :class:`~django.db.models.OneToOneField` used by model inheritance. For\n  advanced use only.\n\nAll of the options without an explanation in the above list have the same\nmeaning they do for normal Django fields. See the :doc:`field documentation\n</ref/models/fields>` for examples and details.\n\nThe ``SubfieldBase`` metaclass\n------------------------------\n\n.. class:: django.db.models.SubfieldBase\n\nAs we indicated in the introduction_, field subclasses are often needed for\ntwo reasons: either to take advantage of a custom database column type, or to\nhandle complex Python types. Obviously, a combination of the two is also\npossible. If you're only working with custom database column types and your\nmodel fields appear in Python as standard Python types direct from the\ndatabase backend, you don't need to worry about this section.\n\nIf you're handling custom Python types, such as our ``Hand`` class, we need to\nmake sure that when Django initializes an instance of our model and assigns a\ndatabase value to our custom field attribute, we convert that value into the\nappropriate Python object. The details of how this happens internally are a\nlittle complex, but the code you need to write in your ``Field`` class is\nsimple: make sure your field subclass uses a special metaclass:\n\nFor example::\n\n    class HandField(models.Field):\n\n        description = \"A hand of cards (bridge style)\"\n\n        __metaclass__ = models.SubfieldBase\n\n        def __init__(self, *args, **kwargs):\n            # ...\n\nThis ensures that the :meth:`.to_python` method, documented below, will always\nbe called when the attribute is initialized.\n\nModelForms and custom fields\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nIf you use :class:`~django.db.models.SubfieldBase`, :meth:`.to_python`\nwill be called every time an instance of the field is assigned a\nvalue. This means that whenever a value may be assigned to the field,\nyou need to ensure that it will be of the correct datatype, or that\nyou handle any exceptions.\n\nThis is especially important if you use :doc:`ModelForms\n</topics/forms/modelforms>`. When saving a ModelForm, Django will use\nform values to instantiate model instances. However, if the cleaned\nform data can't be used as valid input to the field, the normal form\nvalidation process will break.\n\nTherefore, you must ensure that the form field used to represent your\ncustom field performs whatever input validation and data cleaning is\nnecessary to convert user-provided form input into a\n`to_python()`-compatible model field value. This may require writing a\ncustom form field, and/or implementing the :meth:`.formfield` method on\nyour field to return a form field class whose `to_python()` returns the\ncorrect datatype.\n\nDocumenting your custom field\n-----------------------------\n\n.. attribute:: Field.description\n\nAs always, you should document your field type, so users will know what it is.\nIn addition to providing a docstring for it, which is useful for developers,\nyou can also allow users of the admin app to see a short description of the\nfield type via the :doc:`django.contrib.admindocs\n</ref/contrib/admin/admindocs>` application. To do this simply provide\ndescriptive text in a ``description`` class attribute of your custom field. In\nthe above example, the description displayed by the ``admindocs``\napplication for a ``HandField`` will be 'A hand of cards (bridge style)'.\n\nUseful methods\n--------------\n\nOnce you've created your :class:`~django.db.models.Field` subclass and set up\nthe ``__metaclass__``, you might consider overriding a few standard methods,\ndepending on your field's behavior. The list of methods below is in\napproximately decreasing order of importance, so start from the top.\n\nCustom database types\n~~~~~~~~~~~~~~~~~~~~~\n\n.. method:: Field.db_type(self, connection)\n\nReturns the database column data type for the :class:`~django.db.models.Field`,\ntaking into account the connection object, and the settings associated with it.\n\nSay you've created a PostgreSQL custom type called ``mytype``. You can use this\nfield with Django by subclassing ``Field`` and implementing the\n:meth:`.db_type` method, like so::\n\n    from django.db import models\n\n    class MytypeField(models.Field):\n        def db_type(self, connection):\n            return 'mytype'\n\nOnce you have ``MytypeField``, you can use it in any model, just like any other\n``Field`` type::\n\n    class Person(models.Model):\n        name = models.CharField(max_length=80)\n        something_else = MytypeField()\n\nIf you aim to build a database-agnostic application, you should account for\ndifferences in database column types. For example, the date/time column type\nin PostgreSQL is called ``timestamp``, while the same column in MySQL is called\n``datetime``. The simplest way to handle this in a :meth:`.db_type`\nmethod is to check the ``connection.settings_dict['ENGINE']`` attribute.\n\nFor example::\n\n    class MyDateField(models.Field):\n        def db_type(self, connection):\n            if connection.settings_dict['ENGINE'] == 'django.db.backends.mysql':\n                return 'datetime'\n            else:\n                return 'timestamp'\n\nThe :meth:`.db_type` method is only called by Django when the framework\nconstructs the ``CREATE TABLE`` statements for your application -- that is,\nwhen you first create your tables. It's not called at any other time, so it can\nafford to execute slightly complex code, such as the\n``connection.settings_dict`` check in the above example.\n\nSome database column types accept parameters, such as ``CHAR(25)``, where the\nparameter ``25`` represents the maximum column length. In cases like these,\nit's more flexible if the parameter is specified in the model rather than being\nhard-coded in the ``db_type()`` method. For example, it wouldn't make much\nsense to have a ``CharMaxlength25Field``, shown here::\n\n    # This is a silly example of hard-coded parameters.\n    class CharMaxlength25Field(models.Field):\n        def db_type(self, connection):\n            return 'char(25)'\n\n    # In the model:\n    class MyModel(models.Model):\n        # ...\n        my_field = CharMaxlength25Field()\n\nThe better way of doing this would be to make the parameter specifiable at run\ntime -- i.e., when the class is instantiated. To do that, just implement\n:meth:`django.db.models.Field.__init__`, like so::\n\n    # This is a much more flexible example.\n    class BetterCharField(models.Field):\n        def __init__(self, max_length, *args, **kwargs):\n            self.max_length = max_length\n            super(BetterCharField, self).__init__(*args, **kwargs)\n\n        def db_type(self, connection):\n            return 'char(%s)' % self.max_length\n\n    # In the model:\n    class MyModel(models.Model):\n        # ...\n        my_field = BetterCharField(25)\n\nFinally, if your column requires truly complex SQL setup, return ``None`` from\n:meth:`.db_type`. This will cause Django's SQL creation code to skip\nover this field. You are then responsible for creating the column in the right\ntable in some other way, of course, but this gives you a way to tell Django to\nget out of the way.\n\nConverting database values to Python objects\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. method:: Field.to_python(self, value)\n\nConverts a value as returned by your database (or a serializer) to a Python\nobject.\n\nThe default implementation simply returns ``value``, for the common case in\nwhich the database backend already returns data in the correct format (as a\nPython string, for example).\n\nIf your custom :class:`~django.db.models.Field` class deals with data structures\nthat are more complex than strings, dates, integers or floats, then you'll need\nto override this method. As a general rule, the method should deal gracefully\nwith any of the following arguments:\n\n* An instance of the correct type (e.g., ``Hand`` in our ongoing example).\n\n* A string (e.g., from a deserializer).\n\n* Whatever the database returns for the column type you're using.\n\nIn our ``HandField`` class, we're storing the data as a VARCHAR field in the\ndatabase, so we need to be able to process strings and ``Hand`` instances in\n:meth:`.to_python`::\n\n    import re\n\n    class HandField(models.Field):\n        # ...\n\n        def to_python(self, value):\n            if isinstance(value, Hand):\n                return value\n\n            # The string case.\n            p1 = re.compile('.{26}')\n            p2 = re.compile('..')\n            args = [p2.findall(x) for x in p1.findall(value)]\n            if len(args) != 4:\n                raise ValidationError(\"Invalid input for a Hand instance\")\n            return Hand(*args)\n\nNotice that we always return a ``Hand`` instance from this method. That's the\nPython object type we want to store in the model's attribute. If anything is\ngoing wrong during value conversion, you should raise a\n:exc:`~django.core.exceptions.ValidationError` exception.\n\n**Remember:** If your custom field needs the :meth:`.to_python` method to be\ncalled when it is created, you should be using `The SubfieldBase metaclass`_\nmentioned earlier. Otherwise :meth:`.to_python` won't be called\nautomatically.\n\n.. warning::\n\n    If your custom field allows ``null=True``, any field method that takes\n    ``value`` as an argument, like :meth:`~Field.to_python` and\n    :meth:`~Field.get_prep_value`, should handle the case when ``value`` is\n    ``None``.\n\nConverting Python objects to query values\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. method:: Field.get_prep_value(self, value)\n\nThis is the reverse of :meth:`.to_python` when working with the\ndatabase backends (as opposed to serialization). The ``value``\nparameter is the current value of the model's attribute (a field has\nno reference to its containing model, so it cannot retrieve the value\nitself), and the method should return data in a format that has been\nprepared for use as a parameter in a query.\n\nThis conversion should *not* include any database-specific\nconversions. If database-specific conversions are required, they\nshould be made in the call to :meth:`.get_db_prep_value`.\n\nFor example::\n\n    class HandField(models.Field):\n        # ...\n\n        def get_prep_value(self, value):\n            return ''.join([''.join(l) for l in (value.north,\n                    value.east, value.south, value.west)])\n\nConverting query values to database values\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. method:: Field.get_db_prep_value(self, value, connection, prepared=False)\n\nSome data types (for example, dates) need to be in a specific format\nbefore they can be used by a database backend.\n:meth:`.get_db_prep_value` is the method where those conversions should\nbe made. The specific connection that will be used for the query is\npassed as the ``connection`` parameter. This allows you to use\nbackend-specific conversion logic if it is required.\n\nThe ``prepared`` argument describes whether or not the value has\nalready been passed through :meth:`.get_prep_value` conversions. When\n``prepared`` is False, the default implementation of\n:meth:`.get_db_prep_value` will call :meth:`.get_prep_value` to do\ninitial data conversions before performing any database-specific\nprocessing.\n\n.. method:: Field.get_db_prep_save(self, value, connection)\n\nSame as the above, but called when the Field value must be *saved* to\nthe database. As the default implementation just calls\n:meth:`.get_db_prep_value`, you shouldn't need to implement this method\nunless your custom field needs a special conversion when being saved\nthat is not the same as the conversion used for normal query\nparameters (which is implemented by :meth:`.get_db_prep_value`).\n\nPreprocessing values before saving\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. method:: Field.pre_save(self, model_instance, add)\n\nThis method is called just prior to :meth:`.get_db_prep_save` and should return\nthe value of the appropriate attribute from ``model_instance`` for this field.\nThe attribute name is in ``self.attname`` (this is set up by\n:class:`~django.db.models.Field`). If the model is being saved to the database\nfor the first time, the ``add`` parameter will be ``True``, otherwise it will be\n``False``.\n\nYou only need to override this method if you want to preprocess the value\nsomehow, just before saving. For example, Django's\n:class:`~django.db.models.DateTimeField` uses this method to set the attribute\ncorrectly in the case of :attr:`~django.db.models.DateField.auto_now` or\n:attr:`~django.db.models.DateField.auto_now_add`.\n\nIf you do override this method, you must return the value of the attribute at\nthe end. You should also update the model's attribute if you make any changes\nto the value so that code holding references to the model will always see the\ncorrect value.\n\nPreparing values for use in database lookups\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nAs with value conversions, preparing a value for database lookups is a\ntwo phase process.\n\n.. method:: Field.get_prep_lookup(self, lookup_type, value)\n\n:meth:`.get_prep_lookup` performs the first phase of lookup preparation,\nperforming generic data validity checks\n\nPrepares the ``value`` for passing to the database when used in a lookup (a\n``WHERE`` constraint in SQL). The ``lookup_type`` will be one of the valid\nDjango filter lookups: ``exact``, ``iexact``, ``contains``, ``icontains``,\n``gt``, ``gte``, ``lt``, ``lte``, ``in``, ``startswith``, ``istartswith``,\n``endswith``, ``iendswith``, ``range``, ``year``, ``month``, ``day``,\n``isnull``, ``search``, ``regex``, and ``iregex``.\n\nYour method must be prepared to handle all of these ``lookup_type`` values and\nshould raise either a ``ValueError`` if the ``value`` is of the wrong sort (a\nlist when you were expecting an object, for example) or a ``TypeError`` if\nyour field does not support that type of lookup. For many fields, you can get\nby with handling the lookup types that need special handling for your field\nand pass the rest to the :meth:`.get_db_prep_lookup` method of the parent class.\n\nIf you needed to implement ``get_db_prep_save()``, you will usually need to\nimplement ``get_prep_lookup()``. If you don't, ``get_prep_value`` will be\ncalled by the default implementation, to manage ``exact``, ``gt``, ``gte``,\n``lt``, ``lte``, ``in`` and ``range`` lookups.\n\nYou may also want to implement this method to limit the lookup types that could\nbe used with your custom field type.\n\nNote that, for ``range`` and ``in`` lookups, ``get_prep_lookup`` will receive\na list of objects (presumably of the right type) and will need to convert them\nto a list of things of the right type for passing to the database. Most of the\ntime, you can reuse ``get_prep_value()``, or at least factor out some common\npieces.\n\nFor example, the following code implements ``get_prep_lookup`` to limit the\naccepted lookup types to ``exact`` and ``in``::\n\n    class HandField(models.Field):\n        # ...\n\n        def get_prep_lookup(self, lookup_type, value):\n            # We only handle 'exact' and 'in'. All others are errors.\n            if lookup_type == 'exact':\n                return self.get_prep_value(value)\n            elif lookup_type == 'in':\n                return [self.get_prep_value(v) for v in value]\n            else:\n                raise TypeError('Lookup type %r not supported.' % lookup_type)\n\n.. method:: Field.get_db_prep_lookup(self, lookup_type, value, connection, prepared=False)\n\nPerforms any database-specific data conversions required by a lookup.\nAs with :meth:`.get_db_prep_value`, the specific connection that will\nbe used for the query is passed as the ``connection`` parameter.\nThe ``prepared`` argument describes whether the value has already been\nprepared with :meth:`.get_prep_lookup`.\n\nSpecifying the form field for a model field\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. method:: Field.formfield(self, form_class=forms.CharField, **kwargs)\n\nReturns the default form field to use when this field is displayed in a model.\nThis method is called by the :class:`~django.forms.ModelForm` helper.\n\nAll of the ``kwargs`` dictionary is passed directly to the form field's\n``__init__()`` method. Normally, all you need to do is set up a good default\nfor the ``form_class`` argument and then delegate further handling to the\nparent class. This might require you to write a custom form field (and even a\nform widget). See the :doc:`forms documentation </topics/forms/index>` for\ninformation about this, and take a look at the code in\n:mod:`django.contrib.localflavor` for some examples of custom widgets.\n\nContinuing our ongoing example, we can write the :meth:`.formfield` method as::\n\n    class HandField(models.Field):\n        # ...\n\n        def formfield(self, **kwargs):\n            # This is a fairly standard way to set up some defaults\n            # while letting the caller override them.\n            defaults = {'form_class': MyFormField}\n            defaults.update(kwargs)\n            return super(HandField, self).formfield(**defaults)\n\nThis assumes we've imported a ``MyFormField`` field class (which has its own\ndefault widget). This document doesn't cover the details of writing custom form\nfields.\n\n.. _helper functions: ../forms/#generating-forms-for-models\n.. _forms documentation: ../forms/\n\nEmulating built-in field types\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. method:: Field.get_internal_type(self)\n\nReturns a string giving the name of the :class:`~django.db.models.Field`\nsubclass we are emulating at the database level. This is used to determine the\ntype of database column for simple cases.\n\nIf you have created a :meth:`.db_type` method, you don't need to worry about\n:meth:`.get_internal_type` -- it won't be used much. Sometimes, though, your\ndatabase storage is similar in type to some other field, so you can use that\nother field's logic to create the right column.\n\nFor example::\n\n    class HandField(models.Field):\n        # ...\n\n        def get_internal_type(self):\n            return 'CharField'\n\nNo matter which database backend we are using, this will mean that ``syncdb``\nand other SQL commands create the right column type for storing a string.\n\nIf :meth:`.get_internal_type` returns a string that is not known to Django for\nthe database backend you are using -- that is, it doesn't appear in\n``django.db.backends.<db_name>.creation.DATA_TYPES`` -- the string will still be\nused by the serializer, but the default :meth:`.db_type` method will return\n``None``. See the documentation of :meth:`.db_type` for reasons why this might be\nuseful. Putting a descriptive string in as the type of the field for the\nserializer is a useful idea if you're ever going to be using the serializer\noutput in some other place, outside of Django.\n\nConverting field data for serialization\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. method:: Field.value_to_string(self, obj)\n\nThis method is used by the serializers to convert the field into a string for\noutput. Calling ``Field._get_val_from_obj(obj)`` is the best way to get the\nvalue to serialize. For example, since our ``HandField`` uses strings for its\ndata storage anyway, we can reuse some existing conversion code::\n\n    class HandField(models.Field):\n        # ...\n\n        def value_to_string(self, obj):\n            value = self._get_val_from_obj(obj)\n            return self.get_prep_value(value)\n\nSome general advice\n--------------------\n\nWriting a custom field can be a tricky process, particularly if you're doing\ncomplex conversions between your Python types and your database and\nserialization formats. Here are a couple of tips to make things go more\nsmoothly:\n\n1. Look at the existing Django fields (in\n   :file:`django/db/models/fields/__init__.py`) for inspiration. Try to find\n   a field that's similar to what you want and extend it a little bit,\n   instead of creating an entirely new field from scratch.\n\n2. Put a ``__str__()`` or ``__unicode__()`` method on the class you're\n   wrapping up as a field. There are a lot of places where the default\n   behavior of the field code is to call\n   :func:`~django.utils.encoding.force_text` on the value. (In our\n   examples in this document, ``value`` would be a ``Hand`` instance, not a\n   ``HandField``). So if your ``__unicode__()`` method automatically\n   converts to the string form of your Python object, you can save yourself\n   a lot of work.\n\n\nWriting a ``FileField`` subclass\n=================================\n\nIn addition to the above methods, fields that deal with files have a few other\nspecial requirements which must be taken into account. The majority of the\nmechanics provided by ``FileField``, such as controlling database storage and\nretrieval, can remain unchanged, leaving subclasses to deal with the challenge\nof supporting a particular type of file.\n\nDjango provides a ``File`` class, which is used as a proxy to the file's\ncontents and operations. This can be subclassed to customize how the file is\naccessed, and what methods are available. It lives at\n``django.db.models.fields.files``, and its default behavior is explained in the\n:doc:`file documentation </ref/files/file>`.\n\nOnce a subclass of ``File`` is created, the new ``FileField`` subclass must be\ntold to use it. To do so, simply assign the new ``File`` subclass to the special\n``attr_class`` attribute of the ``FileField`` subclass.\n\nA few suggestions\n------------------\n\nIn addition to the above details, there are a few guidelines which can greatly\nimprove the efficiency and readability of the field's code.\n\n1. The source for Django's own ``ImageField`` (in\n   ``django/db/models/fields/files.py``) is a great example of how to\n   subclass ``FileField`` to support a particular type of file, as it\n   incorporates all of the techniques described above.\n\n2. Cache file attributes wherever possible. Since files may be stored in\n   remote storage systems, retrieving them may cost extra time, or even\n   money, that isn't always necessary. Once a file is retrieved to obtain\n   some data about its content, cache as much of that data as possible to\n   reduce the number of times the file must be retrieved on subsequent\n   calls for that information.\n"
  },
  {
    "path": "Django-1.5.1/docs/howto/custom-template-tags.txt",
    "content": "================================\nCustom template tags and filters\n================================\n\nDjango's template system comes with a wide variety of :doc:`built-in\ntags and filters </ref/templates/builtins>` designed to address the\npresentation logic needs of your application. Nevertheless, you may\nfind yourself needing functionality that is not covered by the core\nset of template primitives. You can extend the template engine by\ndefining custom tags and filters using Python, and then make them\navailable to your templates using the :ttag:`{% load %}<load>` tag.\n\nCode layout\n-----------\n\nCustom template tags and filters must live inside a Django app. If they relate\nto an existing app it makes sense to bundle them there; otherwise, you should\ncreate a new app to hold them.\n\nThe app should contain a ``templatetags`` directory, at the same level as\n``models.py``, ``views.py``, etc. If this doesn't already exist, create it -\ndon't forget the ``__init__.py`` file to ensure the directory is treated as a\nPython package.\n\nYour custom tags and filters will live in a module inside the ``templatetags``\ndirectory. The name of the module file is the name you'll use to load the tags\nlater, so be careful to pick a name that won't clash with custom tags and\nfilters in another app.\n\nFor example, if your custom tags/filters are in a file called\n``poll_extras.py``, your app layout might look like this::\n\n    polls/\n        models.py\n        templatetags/\n            __init__.py\n            poll_extras.py\n        views.py\n\nAnd in your template you would use the following:\n\n.. code-block:: html+django\n\n    {% load poll_extras %}\n\nThe app that contains the custom tags must be in :setting:`INSTALLED_APPS` in\norder for the :ttag:`{% load %}<load>` tag to work. This is a security feature:\nIt allows you to host Python code for many template libraries on a single host\nmachine without enabling access to all of them for every Django installation.\n\nThere's no limit on how many modules you put in the ``templatetags`` package.\nJust keep in mind that a :ttag:`{% load %}<load>` statement will load\ntags/filters for the given Python module name, not the name of the app.\n\nTo be a valid tag library, the module must contain a module-level variable\nnamed ``register`` that is a ``template.Library`` instance, in which all the\ntags and filters are registered. So, near the top of your module, put the\nfollowing:\n\n.. code-block:: python\n\n    from django import template\n\n    register = template.Library()\n\n\n.. admonition:: Behind the scenes\n\n    For a ton of examples, read the source code for Django's default filters\n    and tags. They're in ``django/template/defaultfilters.py`` and\n    ``django/template/defaulttags.py``, respectively.\n\n    For more information on the :ttag:`load` tag, read its documentation.\n\nWriting custom template filters\n-------------------------------\n\nCustom filters are just Python functions that take one or two arguments:\n\n* The value of the variable (input) -- not necessarily a string.\n* The value of the argument -- this can have a default value, or be left\n  out altogether.\n\nFor example, in the filter ``{{ var|foo:\"bar\" }}``, the filter ``foo`` would be\npassed the variable ``var`` and the argument ``\"bar\"``.\n\nFilter functions should always return something. They shouldn't raise\nexceptions. They should fail silently. In case of error, they should return\neither the original input or an empty string -- whichever makes more sense.\n\nHere's an example filter definition:\n\n.. code-block:: python\n\n    def cut(value, arg):\n        \"\"\"Removes all values of arg from the given string\"\"\"\n        return value.replace(arg, '')\n\nAnd here's an example of how that filter would be used:\n\n.. code-block:: html+django\n\n    {{ somevariable|cut:\"0\" }}\n\nMost filters don't take arguments. In this case, just leave the argument out of\nyour function. Example:\n\n.. code-block:: python\n\n    def lower(value): # Only one argument.\n        \"\"\"Converts a string into all lowercase\"\"\"\n        return value.lower()\n\nRegistering custom filters\n~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. method:: django.template.Library.filter\n\nOnce you've written your filter definition, you need to register it with\nyour ``Library`` instance, to make it available to Django's template language:\n\n.. code-block:: python\n\n    register.filter('cut', cut)\n    register.filter('lower', lower)\n\nThe ``Library.filter()`` method takes two arguments:\n\n1. The name of the filter -- a string.\n2. The compilation function -- a Python function (not the name of the\n   function as a string).\n\nYou can use ``register.filter()`` as a decorator instead:\n\n.. code-block:: python\n\n    @register.filter(name='cut')\n    def cut(value, arg):\n        return value.replace(arg, '')\n\n    @register.filter\n    def lower(value):\n        return value.lower()\n\nIf you leave off the ``name`` argument, as in the second example above, Django\nwill use the function's name as the filter name.\n\nFinally, ``register.filter()`` also accepts three keyword arguments,\n``is_safe``, ``needs_autoescape``, and ``expects_localtime``. These arguments\nare described in :ref:`filters and auto-escaping <filters-auto-escaping>` and\n:ref:`filters and time zones <filters-timezones>` below.\n\nTemplate filters that expect strings\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. method:: django.template.defaultfilters.stringfilter\n\nIf you're writing a template filter that only expects a string as the first\nargument, you should use the decorator ``stringfilter``. This will\nconvert an object to its string value before being passed to your function:\n\n.. code-block:: python\n\n    from django import template\n    from django.template.defaultfilters import stringfilter\n\n    register = template.Library()\n\n    @register.filter\n    @stringfilter\n    def lower(value):\n        return value.lower()\n\nThis way, you'll be able to pass, say, an integer to this filter, and it\nwon't cause an ``AttributeError`` (because integers don't have ``lower()``\nmethods).\n\n.. _filters-auto-escaping:\n\nFilters and auto-escaping\n~~~~~~~~~~~~~~~~~~~~~~~~~\n\nWhen writing a custom filter, give some thought to how the filter will interact\nwith Django's auto-escaping behavior. Note that three types of strings can be\npassed around inside the template code:\n\n* **Raw strings** are the native Python ``str`` or ``unicode`` types. On\n  output, they're escaped if auto-escaping is in effect and presented\n  unchanged, otherwise.\n\n* **Safe strings** are strings that have been marked safe from further\n  escaping at output time. Any necessary escaping has already been done.\n  They're commonly used for output that contains raw HTML that is intended\n  to be interpreted as-is on the client side.\n\n  Internally, these strings are of type ``SafeBytes`` or ``SafeText``.\n  They share a common base class of ``SafeData``, so you can test\n  for them using code like:\n\n  .. code-block:: python\n\n      if isinstance(value, SafeData):\n          # Do something with the \"safe\" string.\n          ...\n\n* **Strings marked as \"needing escaping\"** are *always* escaped on\n  output, regardless of whether they are in an :ttag:`autoescape` block or\n  not. These strings are only escaped once, however, even if auto-escaping\n  applies.\n\n  Internally, these strings are of type ``EscapeBytes`` or\n  ``EscapeText``. Generally you don't have to worry about these; they\n  exist for the implementation of the :tfilter:`escape` filter.\n\nTemplate filter code falls into one of two situations:\n\n1. Your filter does not introduce any HTML-unsafe characters (``<``, ``>``,\n   ``'``, ``\"`` or ``&``) into the result that were not already present. In\n   this case, you can let Django take care of all the auto-escaping\n   handling for you. All you need to do is set the ``is_safe`` flag to ``True``\n   when you register your filter function, like so:\n\n   .. code-block:: python\n\n       @register.filter(is_safe=True)\n       def myfilter(value):\n           return value\n\n   This flag tells Django that if a \"safe\" string is passed into your\n   filter, the result will still be \"safe\" and if a non-safe string is\n   passed in, Django will automatically escape it, if necessary.\n\n   You can think of this as meaning \"this filter is safe -- it doesn't\n   introduce any possibility of unsafe HTML.\"\n\n   The reason ``is_safe`` is necessary is because there are plenty of\n   normal string operations that will turn a ``SafeData`` object back into\n   a normal ``str`` or ``unicode`` object and, rather than try to catch\n   them all, which would be very difficult, Django repairs the damage after\n   the filter has completed.\n\n   For example, suppose you have a filter that adds the string ``xx`` to\n   the end of any input. Since this introduces no dangerous HTML characters\n   to the result (aside from any that were already present), you should\n   mark your filter with ``is_safe``:\n\n   .. code-block:: python\n\n       @register.filter(is_safe=True)\n       def add_xx(value):\n           return '%sxx' % value\n\n   When this filter is used in a template where auto-escaping is enabled,\n   Django will escape the output whenever the input is not already marked\n   as \"safe\".\n\n   By default, ``is_safe`` is ``False``, and you can omit it from any filters\n   where it isn't required.\n\n   Be careful when deciding if your filter really does leave safe strings\n   as safe. If you're *removing* characters, you might inadvertently leave\n   unbalanced HTML tags or entities in the result. For example, removing a\n   ``>`` from the input might turn ``<a>`` into ``<a``, which would need to\n   be escaped on output to avoid causing problems. Similarly, removing a\n   semicolon (``;``) can turn ``&amp;`` into ``&amp``, which is no longer a\n   valid entity and thus needs further escaping. Most cases won't be nearly\n   this tricky, but keep an eye out for any problems like that when\n   reviewing your code.\n\n   Marking a filter ``is_safe`` will coerce the filter's return value to\n   a string.  If your filter should return a boolean or other non-string\n   value, marking it ``is_safe`` will probably have unintended\n   consequences (such as converting a boolean False to the string\n   'False').\n\n2. Alternatively, your filter code can manually take care of any necessary\n   escaping. This is necessary when you're introducing new HTML markup into\n   the result. You want to mark the output as safe from further\n   escaping so that your HTML markup isn't escaped further, so you'll need\n   to handle the input yourself.\n\n   To mark the output as a safe string, use\n   :func:`django.utils.safestring.mark_safe`.\n\n   Be careful, though. You need to do more than just mark the output as\n   safe. You need to ensure it really *is* safe, and what you do depends on\n   whether auto-escaping is in effect. The idea is to write filters than\n   can operate in templates where auto-escaping is either on or off in\n   order to make things easier for your template authors.\n\n   In order for your filter to know the current auto-escaping state, set the\n   ``needs_autoescape`` flag to ``True`` when you register your filter function.\n   (If you don't specify this flag, it defaults to ``False``). This flag tells\n   Django that your filter function wants to be passed an extra keyword\n   argument, called ``autoescape``, that is ``True`` if auto-escaping is in\n   effect and ``False`` otherwise.\n\n   For example, let's write a filter that emphasizes the first character of\n   a string:\n\n   .. code-block:: python\n\n       from django.utils.html import conditional_escape\n       from django.utils.safestring import mark_safe\n\n       @register.filter(needs_autoescape=True)\n       def initial_letter_filter(text, autoescape=None):\n           first, other = text[0], text[1:]\n           if autoescape:\n               esc = conditional_escape\n           else:\n               esc = lambda x: x\n           result = '<strong>%s</strong>%s' % (esc(first), esc(other))\n           return mark_safe(result)\n\n   The ``needs_autoescape`` flag and the ``autoescape`` keyword argument mean\n   that our function will know whether automatic escaping is in effect when the\n   filter is called. We use ``autoescape`` to decide whether the input data\n   needs to be passed through ``django.utils.html.conditional_escape`` or not.\n   (In the latter case, we just use the identity function as the \"escape\"\n   function.) The ``conditional_escape()`` function is like ``escape()`` except\n   it only escapes input that is **not** a ``SafeData`` instance. If a\n   ``SafeData`` instance is passed to ``conditional_escape()``, the data is\n   returned unchanged.\n\n   Finally, in the above example, we remember to mark the result as safe\n   so that our HTML is inserted directly into the template without further\n   escaping.\n\n   There's no need to worry about the ``is_safe`` flag in this case\n   (although including it wouldn't hurt anything). Whenever you manually\n   handle the auto-escaping issues and return a safe string, the\n   ``is_safe`` flag won't change anything either way.\n\n.. versionchanged:: 1.4\n\n``is_safe`` and ``needs_autoescape`` used to be attributes of the filter\nfunction; this syntax is deprecated.\n\n.. code-block:: python\n\n    @register.filter\n    def myfilter(value):\n        return value\n    myfilter.is_safe = True\n\n.. code-block:: python\n\n    @register.filter\n    def initial_letter_filter(text, autoescape=None):\n        # ...\n        return mark_safe(result)\n    initial_letter_filter.needs_autoescape = True\n\n.. _filters-timezones:\n\nFilters and time zones\n~~~~~~~~~~~~~~~~~~~~~~\n\n.. versionadded:: 1.4\n\nIf you write a custom filter that operates on :class:`~datetime.datetime`\nobjects, you'll usually register it with the ``expects_localtime`` flag set to\n``True``:\n\n.. code-block:: python\n\n    @register.filter(expects_localtime=True)\n    def businesshours(value):\n        try:\n            return 9 <= value.hour < 17\n        except AttributeError:\n            return ''\n\nWhen this flag is set, if the first argument to your filter is a time zone\naware datetime, Django will convert it to the current time zone before passing\nit to your filter when appropriate, according to :ref:`rules for time zones\nconversions in templates <time-zones-in-templates>`.\n\nWriting custom template tags\n----------------------------\n\nTags are more complex than filters, because tags can do anything.\n\nA quick overview\n~~~~~~~~~~~~~~~~\n\nAbove, this document explained that the template system works in a two-step\nprocess: compiling and rendering. To define a custom template tag, you specify\nhow the compilation works and how the rendering works.\n\nWhen Django compiles a template, it splits the raw template text into\n''nodes''. Each node is an instance of ``django.template.Node`` and has\na ``render()`` method. A compiled template is, simply, a list of ``Node``\nobjects. When you call ``render()`` on a compiled template object, the template\ncalls ``render()`` on each ``Node`` in its node list, with the given context.\nThe results are all concatenated together to form the output of the template.\n\nThus, to define a custom template tag, you specify how the raw template tag is\nconverted into a ``Node`` (the compilation function), and what the node's\n``render()`` method does.\n\nWriting the compilation function\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nFor each template tag the template parser encounters, it calls a Python\nfunction with the tag contents and the parser object itself. This function is\nresponsible for returning a ``Node`` instance based on the contents of the tag.\n\nFor example, let's write a template tag, ``{% current_time %}``, that displays\nthe current date/time, formatted according to a parameter given in the tag, in\n:func:`~time.strftime` syntax. It's a good idea to decide the tag syntax before\nanything else. In our case, let's say the tag should be used like this:\n\n.. code-block:: html+django\n\n    <p>The time is {% current_time \"%Y-%m-%d %I:%M %p\" %}.</p>\n\nThe parser for this function should grab the parameter and create a ``Node``\nobject:\n\n.. code-block:: python\n\n    from django import template\n    def do_current_time(parser, token):\n        try:\n            # split_contents() knows not to split quoted strings.\n            tag_name, format_string = token.split_contents()\n        except ValueError:\n            raise template.TemplateSyntaxError(\"%r tag requires a single argument\" % token.contents.split()[0])\n        if not (format_string[0] == format_string[-1] and format_string[0] in ('\"', \"'\")):\n            raise template.TemplateSyntaxError(\"%r tag's argument should be in quotes\" % tag_name)\n        return CurrentTimeNode(format_string[1:-1])\n\nNotes:\n\n* ``parser`` is the template parser object. We don't need it in this\n  example.\n\n* ``token.contents`` is a string of the raw contents of the tag. In our\n  example, it's ``'current_time \"%Y-%m-%d %I:%M %p\"'``.\n\n* The ``token.split_contents()`` method separates the arguments on spaces\n  while keeping quoted strings together. The more straightforward\n  ``token.contents.split()`` wouldn't be as robust, as it would naively\n  split on *all* spaces, including those within quoted strings. It's a good\n  idea to always use ``token.split_contents()``.\n\n* This function is responsible for raising\n  ``django.template.TemplateSyntaxError``, with helpful messages, for\n  any syntax error.\n\n* The ``TemplateSyntaxError`` exceptions use the ``tag_name`` variable.\n  Don't hard-code the tag's name in your error messages, because that\n  couples the tag's name to your function. ``token.contents.split()[0]``\n  will ''always'' be the name of your tag -- even when the tag has no\n  arguments.\n\n* The function returns a ``CurrentTimeNode`` with everything the node needs\n  to know about this tag. In this case, it just passes the argument --\n  ``\"%Y-%m-%d %I:%M %p\"``. The leading and trailing quotes from the\n  template tag are removed in ``format_string[1:-1]``.\n\n* The parsing is very low-level. The Django developers have experimented\n  with writing small frameworks on top of this parsing system, using\n  techniques such as EBNF grammars, but those experiments made the template\n  engine too slow. It's low-level because that's fastest.\n\nWriting the renderer\n~~~~~~~~~~~~~~~~~~~~\n\nThe second step in writing custom tags is to define a ``Node`` subclass that\nhas a ``render()`` method.\n\nContinuing the above example, we need to define ``CurrentTimeNode``:\n\n.. code-block:: python\n\n    from django import template\n    import datetime\n    class CurrentTimeNode(template.Node):\n        def __init__(self, format_string):\n            self.format_string = format_string\n        def render(self, context):\n            return datetime.datetime.now().strftime(self.format_string)\n\nNotes:\n\n* ``__init__()`` gets the ``format_string`` from ``do_current_time()``.\n  Always pass any options/parameters/arguments to a ``Node`` via its\n  ``__init__()``.\n\n* The ``render()`` method is where the work actually happens.\n\n* ``render()`` should never raise ``TemplateSyntaxError`` or any other\n  exception. It should fail silently, just as template filters should.\n\nUltimately, this decoupling of compilation and rendering results in an\nefficient template system, because a template can render multiple contexts\nwithout having to be parsed multiple times.\n\nAuto-escaping considerations\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe output from template tags is **not** automatically run through the\nauto-escaping filters. However, there are still a couple of things you should\nkeep in mind when writing a template tag.\n\nIf the ``render()`` function of your template stores the result in a context\nvariable (rather than returning the result in a string), it should take care\nto call ``mark_safe()`` if appropriate. When the variable is ultimately\nrendered, it will be affected by the auto-escape setting in effect at the\ntime, so content that should be safe from further escaping needs to be marked\nas such.\n\nAlso, if your template tag creates a new context for performing some\nsub-rendering, set the auto-escape attribute to the current context's value.\nThe ``__init__`` method for the ``Context`` class takes a parameter called\n``autoescape`` that you can use for this purpose. For example:\n\n.. code-block:: python\n\n    def render(self, context):\n        # ...\n        new_context = Context({'var': obj}, autoescape=context.autoescape)\n        # ... Do something with new_context ...\n\nThis is not a very common situation, but it's useful if you're rendering a\ntemplate yourself. For example:\n\n.. code-block:: python\n\n    def render(self, context):\n        t = template.loader.get_template('small_fragment.html')\n        return t.render(Context({'var': obj}, autoescape=context.autoescape))\n\nIf we had neglected to pass in the current ``context.autoescape`` value to our\nnew ``Context`` in this example, the results would have *always* been\nautomatically escaped, which may not be the desired behavior if the template\ntag is used inside a :ttag:`{% autoescape off %}<autoescape>` block.\n\n.. _template_tag_thread_safety:\n\nThread-safety considerations\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nOnce a node is parsed, its ``render`` method may be called any number of times.\nSince Django is sometimes run in multi-threaded environments, a single node may\nbe simultaneously rendering with different contexts in response to two separate\nrequests. Therefore, it's important to make sure your template tags are thread\nsafe.\n\nTo make sure your template tags are thread safe, you should never store state\ninformation on the node itself. For example, Django provides a builtin\n:ttag:`cycle` template tag that cycles among a list of given strings each time\nit's rendered:\n\n.. code-block:: html+django\n\n    {% for o in some_list %}\n        <tr class=\"{% cycle 'row1' 'row2' %}>\n            ...\n        </tr>\n    {% endfor %}\n\nA naive implementation of ``CycleNode`` might look something like this:\n\n.. code-block:: python\n\n    class CycleNode(Node):\n        def __init__(self, cyclevars):\n            self.cycle_iter = itertools.cycle(cyclevars)\n        def render(self, context):\n            return next(self.cycle_iter)\n\nBut, suppose we have two templates rendering the template snippet from above at\nthe same time:\n\n1. Thread 1 performs its first loop iteration, ``CycleNode.render()``\n   returns 'row1'\n2. Thread 2 performs its first loop iteration, ``CycleNode.render()``\n   returns 'row2'\n3. Thread 1 performs its second loop iteration, ``CycleNode.render()``\n   returns 'row1'\n4. Thread 2 performs its second loop iteration, ``CycleNode.render()``\n   returns 'row2'\n\nThe CycleNode is iterating, but it's iterating globally. As far as Thread 1\nand Thread 2 are concerned, it's always returning the same value. This is\nobviously not what we want!\n\nTo address this problem, Django provides a ``render_context`` that's associated\nwith the ``context`` of the template that is currently being rendered. The\n``render_context`` behaves like a Python dictionary, and should be used to\nstore ``Node`` state between invocations of the ``render`` method.\n\nLet's refactor our ``CycleNode`` implementation to use the ``render_context``:\n\n.. code-block:: python\n\n    class CycleNode(Node):\n        def __init__(self, cyclevars):\n            self.cyclevars = cyclevars\n        def render(self, context):\n            if self not in context.render_context:\n                context.render_context[self] = itertools.cycle(self.cyclevars)\n            cycle_iter = context.render_context[self]\n            return next(cycle_iter)\n\nNote that it's perfectly safe to store global information that will not change\nthroughout the life of the ``Node`` as an attribute. In the case of\n``CycleNode``, the ``cyclevars`` argument doesn't change after the ``Node`` is\ninstantiated, so we don't need to put it in the ``render_context``. But state\ninformation that is specific to the template that is currently being rendered,\nlike the current iteration of the ``CycleNode``, should be stored in the\n``render_context``.\n\n.. note::\n    Notice how we used ``self`` to scope the ``CycleNode`` specific information\n    within the ``render_context``. There may be multiple ``CycleNodes`` in a\n    given template, so we need to be careful not to clobber another node's\n    state information. The easiest way to do this is to always use ``self`` as\n    the key into ``render_context``. If you're keeping track of several state\n    variables, make ``render_context[self]`` a dictionary.\n\nRegistering the tag\n~~~~~~~~~~~~~~~~~~~\n\nFinally, register the tag with your module's ``Library`` instance, as explained\nin \"Writing custom template filters\" above. Example:\n\n.. code-block:: python\n\n    register.tag('current_time', do_current_time)\n\nThe ``tag()`` method takes two arguments:\n\n1. The name of the template tag -- a string. If this is left out, the\n   name of the compilation function will be used.\n2. The compilation function -- a Python function (not the name of the\n   function as a string).\n\nAs with filter registration, it is also possible to use this as a decorator:\n\n.. code-block:: python\n\n    @register.tag(name=\"current_time\")\n    def do_current_time(parser, token):\n        ...\n\n    @register.tag\n    def shout(parser, token):\n        ...\n\nIf you leave off the ``name`` argument, as in the second example above, Django\nwill use the function's name as the tag name.\n\nPassing template variables to the tag\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nAlthough you can pass any number of arguments to a template tag using\n``token.split_contents()``, the arguments are all unpacked as\nstring literals. A little more work is required in order to pass dynamic\ncontent (a template variable) to a template tag as an argument.\n\nWhile the previous examples have formatted the current time into a string and\nreturned the string, suppose you wanted to pass in a\n:class:`~django.db.models.DateTimeField` from an object and have the template\ntag format that date-time:\n\n.. code-block:: html+django\n\n    <p>This post was last updated at {% format_time blog_entry.date_updated \"%Y-%m-%d %I:%M %p\" %}.</p>\n\nInitially, ``token.split_contents()`` will return three values:\n\n1. The tag name ``format_time``.\n2. The string ``\"blog_entry.date_updated\"`` (without the surrounding\n   quotes).\n3. The formatting string ``\"%Y-%m-%d %I:%M %p\"``. The return value from\n   ``split_contents()`` will include the leading and trailing quotes for\n   string literals like this.\n\nNow your tag should begin to look like this:\n\n.. code-block:: python\n\n    from django import template\n    def do_format_time(parser, token):\n        try:\n            # split_contents() knows not to split quoted strings.\n            tag_name, date_to_be_formatted, format_string = token.split_contents()\n        except ValueError:\n            raise template.TemplateSyntaxError(\"%r tag requires exactly two arguments\" % token.contents.split()[0])\n        if not (format_string[0] == format_string[-1] and format_string[0] in ('\"', \"'\")):\n            raise template.TemplateSyntaxError(\"%r tag's argument should be in quotes\" % tag_name)\n        return FormatTimeNode(date_to_be_formatted, format_string[1:-1])\n\nYou also have to change the renderer to retrieve the actual contents of the\n``date_updated`` property of the ``blog_entry`` object.  This can be\naccomplished by using the ``Variable()`` class in ``django.template``.\n\nTo use the ``Variable`` class, simply instantiate it with the name of the\nvariable to be resolved, and then call ``variable.resolve(context)``. So,\nfor example:\n\n.. code-block:: python\n\n    class FormatTimeNode(template.Node):\n        def __init__(self, date_to_be_formatted, format_string):\n            self.date_to_be_formatted = template.Variable(date_to_be_formatted)\n            self.format_string = format_string\n\n        def render(self, context):\n            try:\n                actual_date = self.date_to_be_formatted.resolve(context)\n                return actual_date.strftime(self.format_string)\n            except template.VariableDoesNotExist:\n                return ''\n\nVariable resolution will throw a ``VariableDoesNotExist`` exception if it\ncannot resolve the string passed to it in the current context of the page.\n\n.. _howto-custom-template-tags-simple-tags:\n\nSimple tags\n~~~~~~~~~~~\n\n.. method:: django.template.Library.simple_tag\n\nMany template tags take a number of arguments -- strings or template variables\n-- and return a string after doing some processing based solely on\nthe input arguments and some external information. For example, the\n``current_time`` tag we wrote above is of this variety: we give it a format\nstring, it returns the time as a string.\n\nTo ease the creation of these types of tags, Django provides a helper function,\n``simple_tag``. This function, which is a method of\n``django.template.Library``, takes a function that accepts any number of\narguments, wraps it in a ``render`` function and the other necessary bits\nmentioned above and registers it with the template system.\n\nOur earlier ``current_time`` function could thus be written like this:\n\n.. code-block:: python\n\n    def current_time(format_string):\n        return datetime.datetime.now().strftime(format_string)\n\n    register.simple_tag(current_time)\n\nThe decorator syntax also works:\n\n.. code-block:: python\n\n    @register.simple_tag\n    def current_time(format_string):\n        ...\n\nA few things to note about the ``simple_tag`` helper function:\n\n* Checking for the required number of arguments, etc., has already been\n  done by the time our function is called, so we don't need to do that.\n* The quotes around the argument (if any) have already been stripped away,\n  so we just receive a plain string.\n* If the argument was a template variable, our function is passed the\n  current value of the variable, not the variable itself.\n\nIf your template tag needs to access the current context, you can use the\n``takes_context`` argument when registering your tag:\n\n.. code-block:: python\n\n    # The first argument *must* be called \"context\" here.\n    def current_time(context, format_string):\n        timezone = context['timezone']\n        return your_get_current_time_method(timezone, format_string)\n\n    register.simple_tag(takes_context=True)(current_time)\n\nOr, using decorator syntax:\n\n.. code-block:: python\n\n    @register.simple_tag(takes_context=True)\n    def current_time(context, format_string):\n        timezone = context['timezone']\n        return your_get_current_time_method(timezone, format_string)\n\nFor more information on how the ``takes_context`` option works, see the section\non :ref:`inclusion tags<howto-custom-template-tags-inclusion-tags>`.\n\n.. versionadded:: 1.4\n\nIf you need to rename your tag, you can provide a custom name for it:\n\n.. code-block:: python\n\n    register.simple_tag(lambda x: x - 1, name='minusone')\n\n    @register.simple_tag(name='minustwo')\n    def some_function(value):\n        return value - 2\n\n.. versionadded:: 1.4\n\n``simple_tag`` functions may accept any number of positional or keyword\narguments. For example:\n\n.. code-block:: python\n\n    @register.simple_tag\n    def my_tag(a, b, *args, **kwargs):\n        warning = kwargs['warning']\n        profile = kwargs['profile']\n        ...\n        return ...\n\nThen in the template any number of arguments, separated by spaces, may be\npassed to the template tag. Like in Python, the values for keyword arguments\nare set using the equal sign (\"``=``\") and must be provided after the\npositional arguments. For example:\n\n.. code-block:: html+django\n\n    {% my_tag 123 \"abcd\" book.title warning=message|lower profile=user.profile %}\n\n.. _howto-custom-template-tags-inclusion-tags:\n\nInclusion tags\n~~~~~~~~~~~~~~\n\nAnother common type of template tag is the type that displays some data by\nrendering *another* template. For example, Django's admin interface uses custom\ntemplate tags to display the buttons along the bottom of the \"add/change\" form\npages. Those buttons always look the same, but the link targets change\ndepending on the object being edited -- so they're a perfect case for using a\nsmall template that is filled with details from the current object. (In the\nadmin's case, this is the ``submit_row`` tag.)\n\nThese sorts of tags are called \"inclusion tags\".\n\nWriting inclusion tags is probably best demonstrated by example. Let's write a\ntag that outputs a list of choices for a given ``Poll`` object, such as was\ncreated in the :ref:`tutorials <creating-models>`. We'll use the tag like this:\n\n.. code-block:: html+django\n\n    {% show_results poll %}\n\n...and the output will be something like this:\n\n.. code-block:: html\n\n    <ul>\n      <li>First choice</li>\n      <li>Second choice</li>\n      <li>Third choice</li>\n    </ul>\n\nFirst, define the function that takes the argument and produces a dictionary of\ndata for the result. The important point here is we only need to return a\ndictionary, not anything more complex. This will be used as a template context\nfor the template fragment. Example:\n\n.. code-block:: python\n\n    def show_results(poll):\n        choices = poll.choice_set.all()\n        return {'choices': choices}\n\nNext, create the template used to render the tag's output. This template is a\nfixed feature of the tag: the tag writer specifies it, not the template\ndesigner. Following our example, the template is very simple:\n\n.. code-block:: html+django\n\n    <ul>\n    {% for choice in choices %}\n        <li> {{ choice }} </li>\n    {% endfor %}\n    </ul>\n\nNow, create and register the inclusion tag by calling the ``inclusion_tag()``\nmethod on a ``Library`` object. Following our example, if the above template is\nin a file called ``results.html`` in a directory that's searched by the\ntemplate loader, we'd register the tag like this:\n\n.. code-block:: python\n\n    # Here, register is a django.template.Library instance, as before\n    register.inclusion_tag('results.html')(show_results)\n\n.. versionchanged:: 1.4\n\n    Alternatively it is possible to register the inclusion tag using a\n    :class:`django.template.Template` instance:\n\n    .. code-block:: python\n\n        from django.template.loader import get_template\n        t = get_template('results.html')\n        register.inclusion_tag(t)(show_results)\n\nAs always, decorator syntax works as well, so we could have written:\n\n.. code-block:: python\n\n    @register.inclusion_tag('results.html')\n    def show_results(poll):\n        ...\n\n...when first creating the function.\n\nSometimes, your inclusion tags might require a large number of arguments,\nmaking it a pain for template authors to pass in all the arguments and remember\ntheir order. To solve this, Django provides a ``takes_context`` option for\ninclusion tags. If you specify ``takes_context`` in creating a template tag,\nthe tag will have no required arguments, and the underlying Python function\nwill have one argument -- the template context as of when the tag was called.\n\nFor example, say you're writing an inclusion tag that will always be used in a\ncontext that contains ``home_link`` and ``home_title`` variables that point\nback to the main page. Here's what the Python function would look like:\n\n.. code-block:: python\n\n    # The first argument *must* be called \"context\" here.\n    def jump_link(context):\n        return {\n            'link': context['home_link'],\n            'title': context['home_title'],\n        }\n    # Register the custom tag as an inclusion tag with takes_context=True.\n    register.inclusion_tag('link.html', takes_context=True)(jump_link)\n\n(Note that the first parameter to the function *must* be called ``context``.)\n\nIn that ``register.inclusion_tag()`` line, we specified ``takes_context=True``\nand the name of the template. Here's what the template ``link.html`` might look\nlike:\n\n.. code-block:: html+django\n\n    Jump directly to <a href=\"{{ link }}\">{{ title }}</a>.\n\nThen, any time you want to use that custom tag, load its library and call it\nwithout any arguments, like so:\n\n.. code-block:: html+django\n\n    {% jump_link %}\n\nNote that when you're using ``takes_context=True``, there's no need to pass\narguments to the template tag. It automatically gets access to the context.\n\nThe ``takes_context`` parameter defaults to ``False``. When it's set to\n``True``, the tag is passed the context object, as in this example. That's the\nonly difference between this case and the previous ``inclusion_tag`` example.\n\n.. versionadded:: 1.4\n\n``inclusion_tag`` functions may accept any number of positional or keyword\narguments. For example:\n\n.. code-block:: python\n\n    @register.inclusion_tag('my_template.html')\n    def my_tag(a, b, *args, **kwargs):\n        warning = kwargs['warning']\n        profile = kwargs['profile']\n        ...\n        return ...\n\nThen in the template any number of arguments, separated by spaces, may be\npassed to the template tag. Like in Python, the values for keyword arguments\nare set using the equal sign (\"``=``\") and must be provided after the\npositional arguments. For example:\n\n.. code-block:: html+django\n\n    {% my_tag 123 \"abcd\" book.title warning=message|lower profile=user.profile %}\n\nSetting a variable in the context\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe above examples simply output a value. Generally, it's more flexible if your\ntemplate tags set template variables instead of outputting values. That way,\ntemplate authors can reuse the values that your template tags create.\n\nTo set a variable in the context, just use dictionary assignment on the context\nobject in the ``render()`` method. Here's an updated version of\n``CurrentTimeNode`` that sets a template variable ``current_time`` instead of\noutputting it:\n\n.. code-block:: python\n\n    class CurrentTimeNode2(template.Node):\n        def __init__(self, format_string):\n            self.format_string = format_string\n        def render(self, context):\n            context['current_time'] = datetime.datetime.now().strftime(self.format_string)\n            return ''\n\nNote that ``render()`` returns the empty string. ``render()`` should always\nreturn string output. If all the template tag does is set a variable,\n``render()`` should return the empty string.\n\nHere's how you'd use this new version of the tag:\n\n.. code-block:: html+django\n\n    {% current_time \"%Y-%M-%d %I:%M %p\" %}<p>The time is {{ current_time }}.</p>\n\n.. admonition:: Variable scope in context\n\n    Any variable set in the context will only be available in the same\n    ``block`` of the template in which it was assigned. This behavior is\n    intentional; it provides a scope for variables so that they don't conflict\n    with context in other blocks.\n\nBut, there's a problem with ``CurrentTimeNode2``: The variable name\n``current_time`` is hard-coded. This means you'll need to make sure your\ntemplate doesn't use ``{{ current_time }}`` anywhere else, because the\n``{% current_time %}`` will blindly overwrite that variable's value. A cleaner\nsolution is to make the template tag specify the name of the output variable,\nlike so:\n\n.. code-block:: html+django\n\n    {% current_time \"%Y-%M-%d %I:%M %p\" as my_current_time %}\n    <p>The current time is {{ my_current_time }}.</p>\n\nTo do that, you'll need to refactor both the compilation function and ``Node``\nclass, like so:\n\n.. code-block:: python\n\n    class CurrentTimeNode3(template.Node):\n        def __init__(self, format_string, var_name):\n            self.format_string = format_string\n            self.var_name = var_name\n        def render(self, context):\n            context[self.var_name] = datetime.datetime.now().strftime(self.format_string)\n            return ''\n\n    import re\n    def do_current_time(parser, token):\n        # This version uses a regular expression to parse tag contents.\n        try:\n            # Splitting by None == splitting by spaces.\n            tag_name, arg = token.contents.split(None, 1)\n        except ValueError:\n            raise template.TemplateSyntaxError(\"%r tag requires arguments\" % token.contents.split()[0])\n        m = re.search(r'(.*?) as (\\w+)', arg)\n        if not m:\n            raise template.TemplateSyntaxError(\"%r tag had invalid arguments\" % tag_name)\n        format_string, var_name = m.groups()\n        if not (format_string[0] == format_string[-1] and format_string[0] in ('\"', \"'\")):\n            raise template.TemplateSyntaxError(\"%r tag's argument should be in quotes\" % tag_name)\n        return CurrentTimeNode3(format_string[1:-1], var_name)\n\nThe difference here is that ``do_current_time()`` grabs the format string and\nthe variable name, passing both to ``CurrentTimeNode3``.\n\nFinally, if you only need to have a simple syntax for your custom\ncontext-updating template tag, you might want to consider using an\n:ref:`assignment tag <howto-custom-template-tags-assignment-tags>`.\n\n.. _howto-custom-template-tags-assignment-tags:\n\nAssignment tags\n~~~~~~~~~~~~~~~\n\n.. versionadded:: 1.4\n\nTo ease the creation of tags setting a variable in the context, Django provides\na helper function, ``assignment_tag``. This function works the same way as\n:ref:`simple_tag<howto-custom-template-tags-simple-tags>`, except that it\nstores the tag's result in a specified context variable instead of directly\noutputting it.\n\nOur earlier ``current_time`` function could thus be written like this:\n\n.. code-block:: python\n\n    def get_current_time(format_string):\n        return datetime.datetime.now().strftime(format_string)\n\n    register.assignment_tag(get_current_time)\n\nThe decorator syntax also works:\n\n.. code-block:: python\n\n    @register.assignment_tag\n    def get_current_time(format_string):\n        ...\n\nYou may then store the result in a template variable using the ``as`` argument\nfollowed by the variable name, and output it yourself where you see fit:\n\n.. code-block:: html+django\n\n    {% get_current_time \"%Y-%m-%d %I:%M %p\" as the_time %}\n    <p>The time is {{ the_time }}.</p>\n\nIf your template tag needs to access the current context, you can use the\n``takes_context`` argument when registering your tag:\n\n.. code-block:: python\n\n    # The first argument *must* be called \"context\" here.\n    def get_current_time(context, format_string):\n        timezone = context['timezone']\n        return your_get_current_time_method(timezone, format_string)\n\n    register.assignment_tag(takes_context=True)(get_current_time)\n\nOr, using decorator syntax:\n\n.. code-block:: python\n\n    @register.assignment_tag(takes_context=True)\n    def get_current_time(context, format_string):\n        timezone = context['timezone']\n        return your_get_current_time_method(timezone, format_string)\n\nFor more information on how the ``takes_context`` option works, see the section\non :ref:`inclusion tags<howto-custom-template-tags-inclusion-tags>`.\n\n``assignment_tag`` functions may accept any number of positional or keyword\narguments. For example:\n\n.. code-block:: python\n\n    @register.assignment_tag\n    def my_tag(a, b, *args, **kwargs):\n        warning = kwargs['warning']\n        profile = kwargs['profile']\n        ...\n        return ...\n\nThen in the template any number of arguments, separated by spaces, may be\npassed to the template tag. Like in Python, the values for keyword arguments\nare set using the equal sign (\"``=``\") and must be provided after the\npositional arguments. For example:\n\n.. code-block:: html+django\n\n    {% my_tag 123 \"abcd\" book.title warning=message|lower profile=user.profile as the_result %}\n\nParsing until another block tag\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nTemplate tags can work in tandem. For instance, the standard\n:ttag:`{% comment %}<comment>` tag hides everything until ``{% endcomment %}``.\nTo create a template tag such as this, use ``parser.parse()`` in your\ncompilation function.\n\nHere's how a simplified ``{% comment %}`` tag might be implemented:\n\n.. code-block:: python\n\n    def do_comment(parser, token):\n        nodelist = parser.parse(('endcomment',))\n        parser.delete_first_token()\n        return CommentNode()\n\n    class CommentNode(template.Node):\n        def render(self, context):\n            return ''\n\n.. note::\n    The actual implementation of :ttag:`{% comment %}<comment>` is slightly\n    different in that it allows broken template tags to appear between\n    ``{% comment %}`` and ``{% endcomment %}``. It does so by calling\n    ``parser.skip_past('endcomment')`` instead of ``parser.parse(('endcomment',))``\n    followed by ``parser.delete_first_token()``, thus avoiding the generation of a\n    node list.\n\n``parser.parse()`` takes a tuple of names of block tags ''to parse until''. It\nreturns an instance of ``django.template.NodeList``, which is a list of\nall ``Node`` objects that the parser encountered ''before'' it encountered\nany of the tags named in the tuple.\n\nIn ``\"nodelist = parser.parse(('endcomment',))\"`` in the above example,\n``nodelist`` is a list of all nodes between the ``{% comment %}`` and\n``{% endcomment %}``, not counting ``{% comment %}`` and ``{% endcomment %}``\nthemselves.\n\nAfter ``parser.parse()`` is called, the parser hasn't yet \"consumed\" the\n``{% endcomment %}`` tag, so the code needs to explicitly call\n``parser.delete_first_token()``.\n\n``CommentNode.render()`` simply returns an empty string. Anything between\n``{% comment %}`` and ``{% endcomment %}`` is ignored.\n\nParsing until another block tag, and saving contents\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nIn the previous example, ``do_comment()`` discarded everything between\n``{% comment %}`` and ``{% endcomment %}``. Instead of doing that, it's\npossible to do something with the code between block tags.\n\nFor example, here's a custom template tag, ``{% upper %}``, that capitalizes\neverything between itself and ``{% endupper %}``.\n\nUsage:\n\n.. code-block:: html+django\n\n    {% upper %}This will appear in uppercase, {{ your_name }}.{% endupper %}\n\nAs in the previous example, we'll use ``parser.parse()``. But this time, we\npass the resulting ``nodelist`` to the ``Node``:\n\n.. code-block:: python\n\n    def do_upper(parser, token):\n        nodelist = parser.parse(('endupper',))\n        parser.delete_first_token()\n        return UpperNode(nodelist)\n\n    class UpperNode(template.Node):\n        def __init__(self, nodelist):\n            self.nodelist = nodelist\n        def render(self, context):\n            output = self.nodelist.render(context)\n            return output.upper()\n\nThe only new concept here is the ``self.nodelist.render(context)`` in\n``UpperNode.render()``.\n\nFor more examples of complex rendering, see the source code for\n:ttag:`{% if %}<if>`, :ttag:`{% for %}<for>`, :ttag:`{% ifequal %}<ifequal>`\nor :ttag:`{% ifchanged %}<ifchanged>`. They live in\n``django/template/defaulttags.py``.\n"
  },
  {
    "path": "Django-1.5.1/docs/howto/deployment/fastcgi.txt",
    "content": "============================================\nHow to use Django with FastCGI, SCGI, or AJP\n============================================\n\n.. highlight:: bash\n\nAlthough :doc:`WSGI</howto/deployment/wsgi/index>` is the preferred deployment\nplatform for Django, many people use shared hosting, on which protocols such as\nFastCGI, SCGI or AJP are the only viable options.\n\n.. admonition:: Note\n\n    This document primarily focuses on FastCGI. Other protocols, such as SCGI\n    and AJP, are also supported, through the ``flup`` Python package. See the\n    Protocols_ section below for specifics about SCGI and AJP.\n\nEssentially, FastCGI is an efficient way of letting an external application\nserve pages to a Web server. The Web server delegates the incoming Web requests\n(via a socket) to FastCGI, which executes the code and passes the response back\nto the Web server, which, in turn, passes it back to the client's Web browser.\n\nLike WSGI, FastCGI allows code to stay in memory, allowing requests to be\nserved with no startup time. While\ne.g. :doc:`mod_wsgi</howto/deployment/wsgi/modwsgi>` can either be configured\nembedded in the Apache Web server process or as a separate daemon process, a\nFastCGI process never runs inside the Web server process, always in a separate,\npersistent process.\n\n.. _mod_perl: http://perl.apache.org/\n\n.. admonition:: Why run code in a separate process?\n\n    The traditional ``mod_*`` arrangements in Apache embed various scripting\n    languages (most notably PHP, Python and Perl) inside the process space of\n    your Web server. Although this lowers startup time -- because code doesn't\n    have to be read off disk for every request -- it comes at the cost of\n    memory use.\n\n    Due to the nature of FastCGI, it's even possible to have processes that run\n    under a different user account than the Web server process. That's a nice\n    security benefit on shared systems, because it means you can secure your\n    code from other users.\n\nPrerequisite: flup\n==================\n\nBefore you can start using FastCGI with Django, you'll need to install flup_, a\nPython library for dealing with FastCGI. Version 0.5 or newer should work fine.\n\n.. _flup: http://www.saddi.com/software/flup/\n\nStarting your FastCGI server\n============================\n\nFastCGI operates on a client-server model, and in most cases you'll be starting\nthe FastCGI process on your own. Your Web server (be it Apache, lighttpd, or\notherwise) only contacts your Django-FastCGI process when the server needs a\ndynamic page to be loaded. Because the daemon is already running with the code\nin memory, it's able to serve the response very quickly.\n\n.. admonition:: Note\n\n    If you're on a shared hosting system, you'll probably be forced to use\n    Web server-managed FastCGI processes. See the section below on running\n    Django with Web server-managed processes for more information.\n\nA Web server can connect to a FastCGI server in one of two ways: It can use\neither a Unix domain socket (a \"named pipe\" on Win32 systems), or it can use a\nTCP socket. What you choose is a manner of preference; a TCP socket is usually\neasier due to permissions issues.\n\nTo start your server, first change into the directory of your project (wherever\nyour :doc:`manage.py </ref/django-admin>` is), and then run the\n:djadmin:`runfcgi` command::\n\n    ./manage.py runfcgi [options]\n\nIf you specify ``help`` as the only option after :djadmin:`runfcgi`, it'll\ndisplay a list of all the available options.\n\nYou'll need to specify either a :djadminopt:`socket`, a :djadminopt:`protocol`\nor both :djadminopt:`host` and :djadminopt:`port`. Then, when you set up your\nWeb server, you'll just need to point it at the host/port or socket you\nspecified when starting the FastCGI server. See the examples_, below.\n\nProtocols\n---------\n\nDjango supports all the protocols that flup_ does, namely fastcgi_, `SCGI`_ and\n`AJP1.3`_ (the Apache JServ Protocol, version 1.3). Select your preferred\nprotocol by using the :djadminopt:`protocol=\\<protocol_name\\> <protocol>` option\nwith ``./manage.py runfcgi`` -- where ``<protocol_name>`` may be one of:\n``fcgi`` (the default), ``scgi`` or ``ajp``. For example::\n\n    ./manage.py runfcgi protocol=scgi\n\n.. _flup: http://www.saddi.com/software/flup/\n.. _fastcgi: http://www.fastcgi.com/\n.. _SCGI: http://python.ca/scgi/protocol.txt\n.. _AJP1.3: http://tomcat.apache.org/connectors-doc/ajp/ajpv13a.html\n\nExamples\n--------\n\nRunning a threaded server on a TCP port::\n\n    ./manage.py runfcgi method=threaded host=127.0.0.1 port=3033\n\nRunning a preforked server on a Unix domain socket::\n\n    ./manage.py runfcgi method=prefork socket=/home/user/mysite.sock pidfile=django.pid\n\n.. admonition:: Socket security\n\n    Django's default umask requires that the webserver and the Django fastcgi\n    process be run with the same group **and** user. For increased security,\n    you can run them under the same group but as different users. If you do\n    this, you will need to set the umask to 0002 using the ``umask`` argument\n    to ``runfcgi``.\n\nRun without daemonizing (backgrounding) the process (good for debugging)::\n\n    ./manage.py runfcgi daemonize=false socket=/tmp/mysite.sock maxrequests=1\n\nStopping the FastCGI daemon\n---------------------------\n\nIf you have the process running in the foreground, it's easy enough to stop it:\nSimply hitting ``Ctrl-C`` will stop and quit the FastCGI server. However, when\nyou're dealing with background processes, you'll need to resort to the Unix\n``kill`` command.\n\nIf you specify the :djadminopt:`pidfile` option to :djadmin:`runfcgi`, you can\nkill the running FastCGI daemon like this::\n\n    kill `cat $PIDFILE`\n\n...where ``$PIDFILE`` is the ``pidfile`` you specified.\n\nTo easily restart your FastCGI daemon on Unix, try this small shell script::\n\n    #!/bin/bash\n\n    # Replace these three settings.\n    PROJDIR=\"/home/user/myproject\"\n    PIDFILE=\"$PROJDIR/mysite.pid\"\n    SOCKET=\"$PROJDIR/mysite.sock\"\n\n    cd $PROJDIR\n    if [ -f $PIDFILE ]; then\n        kill `cat -- $PIDFILE`\n        rm -f -- $PIDFILE\n    fi\n\n    exec /usr/bin/env - \\\n      PYTHONPATH=\"../python:..\" \\\n      ./manage.py runfcgi socket=$SOCKET pidfile=$PIDFILE\n\nApache setup\n============\n\nTo use Django with Apache and FastCGI, you'll need Apache installed and\nconfigured, with `mod_fastcgi`_ installed and enabled. Consult the Apache\ndocumentation for instructions.\n\nOnce you've got that set up, point Apache at your Django FastCGI instance by\nediting the ``httpd.conf`` (Apache configuration) file. You'll need to do two\nthings:\n\n* Use the ``FastCGIExternalServer`` directive to specify the location of\n  your FastCGI server.\n* Use ``mod_rewrite`` to point URLs at FastCGI as appropriate.\n\n.. _mod_fastcgi: http://www.fastcgi.com/mod_fastcgi/docs/mod_fastcgi.html\n\nSpecifying the location of the FastCGI server\n---------------------------------------------\n\nThe ``FastCGIExternalServer`` directive tells Apache how to find your FastCGI\nserver. As the `FastCGIExternalServer docs`_ explain, you can specify either a\n``socket`` or a ``host``. Here are examples of both:\n\n.. code-block:: apache\n\n    # Connect to FastCGI via a socket / named pipe.\n    FastCGIExternalServer /home/user/public_html/mysite.fcgi -socket /home/user/mysite.sock\n\n    # Connect to FastCGI via a TCP host/port.\n    FastCGIExternalServer /home/user/public_html/mysite.fcgi -host 127.0.0.1:3033\n\nIn either case, the file ``/home/user/public_html/mysite.fcgi`` doesn't\nactually have to exist. It's just a URL used by the Web server internally -- a\nhook for signifying which requests at a URL should be handled by FastCGI. (More\non this in the next section.)\n\n.. _FastCGIExternalServer docs: http://www.fastcgi.com/mod_fastcgi/docs/mod_fastcgi.html#FastCgiExternalServer\n\nUsing mod_rewrite to point URLs at FastCGI\n------------------------------------------\n\nThe second step is telling Apache to use FastCGI for URLs that match a certain\npattern. To do this, use the `mod_rewrite`_ module and rewrite URLs to\n``mysite.fcgi`` (or whatever you specified in the ``FastCGIExternalServer``\ndirective, as explained in the previous section).\n\nIn this example, we tell Apache to use FastCGI to handle any request that\ndoesn't represent a file on the filesystem and doesn't start with ``/media/``.\nThis is probably the most common case, if you're using Django's admin site:\n\n.. code-block:: apache\n\n    <VirtualHost 12.34.56.78>\n      ServerName example.com\n      DocumentRoot /home/user/public_html\n      Alias /media /home/user/python/django/contrib/admin/media\n      RewriteEngine On\n      RewriteRule ^/(media.*)$ /$1 [QSA,L,PT]\n      RewriteCond %{REQUEST_FILENAME} !-f\n      RewriteRule ^/(.*)$ /mysite.fcgi/$1 [QSA,L]\n    </VirtualHost>\n\n.. _mod_rewrite: http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html\n\nDjango will automatically use the pre-rewrite version of the URL when\nconstructing URLs with the :ttag:`{% url %}<url>` template tag (and similar\nmethods).\n\nUsing mod_fcgid as alternative to mod_fastcgi\n----------------------------------------------\n\nAnother way to serve applications through FastCGI is by using Apache's\n`mod_fcgid`_ module. Compared to mod_fastcgi mod_fcgid handles FastCGI\napplications differently in that it manages the spawning of worker processes\nby itself and doesn't offer something like ``FastCGIExternalServer``. This\nmeans that the configuration looks slightly different.\n\nIn effect, you have to go the way of adding a script handler similar to what\nis described later on regarding running Django in a :ref:`shared-hosting\nenvironment <apache_shared_hosting>`. For further details please refer to the\n`mod_fcgid reference`_\n\n.. _mod_fcgid: http://httpd.apache.org/mod_fcgid/\n.. _mod_Fcgid reference: http://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html\n\nlighttpd setup\n==============\n\nlighttpd_ is a lightweight Web server commonly used for serving static files. It\nsupports FastCGI natively and, thus, is a good choice for serving both static\nand dynamic pages, if your site doesn't have any Apache-specific needs.\n\n.. _lighttpd: http://www.lighttpd.net/\n\nMake sure ``mod_fastcgi`` is in your modules list, somewhere after\n``mod_rewrite`` and ``mod_access``, but not after ``mod_accesslog``. You'll\nprobably want ``mod_alias`` as well, for serving admin media.\n\nAdd the following to your lighttpd config file:\n\n.. code-block:: lua\n\n    server.document-root = \"/home/user/public_html\"\n    fastcgi.server = (\n        \"/mysite.fcgi\" => (\n            \"main\" => (\n                # Use host / port instead of socket for TCP fastcgi\n                # \"host\" => \"127.0.0.1\",\n                # \"port\" => 3033,\n                \"socket\" => \"/home/user/mysite.sock\",\n                \"check-local\" => \"disable\",\n            )\n        ),\n    )\n    alias.url = (\n        \"/media\" => \"/home/user/django/contrib/admin/media/\",\n    )\n\n    url.rewrite-once = (\n        \"^(/media.*)$\" => \"$1\",\n        \"^/favicon\\.ico$\" => \"/media/favicon.ico\",\n        \"^(/.*)$\" => \"/mysite.fcgi$1\",\n    )\n\nRunning multiple Django sites on one lighttpd\n---------------------------------------------\n\nlighttpd lets you use \"conditional configuration\" to allow configuration to be\ncustomized per host. To specify multiple FastCGI sites, just add a conditional\nblock around your FastCGI config for each site::\n\n    # If the hostname is 'www.example1.com'...\n    $HTTP[\"host\"] == \"www.example1.com\" {\n        server.document-root = \"/foo/site1\"\n        fastcgi.server = (\n           ...\n        )\n        ...\n    }\n\n    # If the hostname is 'www.example2.com'...\n    $HTTP[\"host\"] == \"www.example2.com\" {\n        server.document-root = \"/foo/site2\"\n        fastcgi.server = (\n           ...\n        )\n        ...\n    }\n\nYou can also run multiple Django installations on the same site simply by\nspecifying multiple entries in the ``fastcgi.server`` directive. Add one\nFastCGI host for each.\n\nCherokee setup\n==============\n\nCherokee is a very fast, flexible and easy to configure Web Server. It\nsupports the widespread technologies nowadays: FastCGI, SCGI, PHP, CGI, SSI,\nTLS and SSL encrypted connections, Virtual hosts, Authentication, on the fly\nencoding, Load Balancing, Apache compatible log files, Data Base Balancer,\nReverse HTTP Proxy and much more.\n\nThe Cherokee project provides a documentation to `setting up Django`_ with Cherokee.\n\n.. _setting up Django: http://www.cherokee-project.com/doc/cookbook_django.html\n\n.. _apache_shared_hosting:\n\nRunning Django on a shared-hosting provider with Apache\n=======================================================\n\nMany shared-hosting providers don't allow you to run your own server daemons or\nedit the ``httpd.conf`` file. In these cases, it's still possible to run Django\nusing Web server-spawned processes.\n\n.. admonition:: Note\n\n    If you're using Web server-spawned processes, as explained in this section,\n    there's no need for you to start the FastCGI server on your own. Apache\n    will spawn a number of processes, scaling as it needs to.\n\nIn your Web root directory, add this to a file named ``.htaccess``:\n\n.. code-block:: apache\n\n    AddHandler fastcgi-script .fcgi\n    RewriteEngine On\n    RewriteCond %{REQUEST_FILENAME} !-f\n    RewriteRule ^(.*)$ mysite.fcgi/$1 [QSA,L]\n\nThen, create a small script that tells Apache how to spawn your FastCGI\nprogram. Create a file ``mysite.fcgi`` and place it in your Web directory, and\nbe sure to make it executable:\n\n.. code-block:: python\n\n    #!/usr/bin/python\n    import sys, os\n\n    # Add a custom Python path.\n    sys.path.insert(0, \"/home/user/python\")\n\n    # Switch to the directory of your project. (Optional.)\n    # os.chdir(\"/home/user/myproject\")\n\n    # Set the DJANGO_SETTINGS_MODULE environment variable.\n    os.environ['DJANGO_SETTINGS_MODULE'] = \"myproject.settings\"\n\n    from django.core.servers.fastcgi import runfastcgi\n    runfastcgi(method=\"threaded\", daemonize=\"false\")\n\nThis works if your server uses mod_fastcgi. If, on the other hand, you are\nusing mod_fcgid the setup is mostly the same except for a slight change in the\n``.htaccess`` file. Instead of adding a fastcgi-script handler, you have to\nadd a fcgid-handler:\n\n.. code-block:: apache\n\n    AddHandler fcgid-script .fcgi\n    RewriteEngine On\n    RewriteCond %{REQUEST_FILENAME} !-f\n    RewriteRule ^(.*)$ mysite.fcgi/$1 [QSA,L]\n\nRestarting the spawned server\n-----------------------------\n\nIf you change any Python code on your site, you'll need to tell FastCGI the\ncode has changed. But there's no need to restart Apache in this case. Rather,\njust reupload ``mysite.fcgi``, or edit the file, so that the timestamp on the\nfile will change. When Apache sees the file has been updated, it will restart\nyour Django application for you.\n\nIf you have access to a command shell on a Unix system, you can accomplish this\neasily by using the ``touch`` command::\n\n    touch mysite.fcgi\n\nServing admin media files\n=========================\n\nRegardless of the server and configuration you eventually decide to use, you\nwill also need to give some thought to how to serve the admin media files. The\nadvice given in the :ref:`mod_wsgi <serving-the-admin-files>` documentation\nis also applicable in the setups detailed above.\n\nForcing the URL prefix to a particular value\n============================================\n\nBecause many of these fastcgi-based solutions require rewriting the URL at\nsome point inside the Web server, the path information that Django sees may not\nresemble the original URL that was passed in. This is a problem if the Django\napplication is being served from under a particular prefix and you want your\nURLs from the :ttag:`{% url %}<url>` tag to look like the prefix, rather than\nthe rewritten version, which might contain, for example, ``mysite.fcgi``.\n\nDjango makes a good attempt to work out what the real script name prefix\nshould be. In particular, if the Web server sets the ``SCRIPT_URL`` (specific\nto Apache's mod_rewrite), or ``REDIRECT_URL`` (set by a few servers, including\nApache + mod_rewrite in some situations), Django will work out the original\nprefix automatically.\n\nIn the cases where Django cannot work out the prefix correctly and where you\nwant the original value to be used in URLs, you can set the\n:setting:`FORCE_SCRIPT_NAME` setting in your main ``settings`` file. This sets the\nscript name uniformly for every URL served via that settings file. Thus you'll\nneed to use different settings files if you want different sets of URLs to\nhave different script names in this case, but that is a rare situation.\n\nAs an example of how to use it, if your Django configuration is serving all of\nthe URLs under ``'/'`` and you wanted to use this setting, you would set\n``FORCE_SCRIPT_NAME = ''`` in your settings file.\n"
  },
  {
    "path": "Django-1.5.1/docs/howto/deployment/index.txt",
    "content": "Deploying Django\n================\n\nDjango's chock-full of shortcuts to make Web developer's lives easier, but all\nthose tools are of no use if you can't easily deploy your sites. Since Django's\ninception, ease of deployment has been a major goal. There's a number of good\nways to easily deploy Django:\n\n.. toctree::\n   :maxdepth: 1\n\n   wsgi/index\n   fastcgi\n\nIf you're new to deploying Django and/or Python, we'd recommend you try\n:doc:`mod_wsgi </howto/deployment/wsgi/modwsgi>` first. In most cases it'll be\nthe easiest, fastest, and most stable deployment choice.\n\n.. seealso::\n\n    * `Chapter 12 of the Django Book (second edition)`_ discusses deployment\n      and especially scaling in more detail. However, note that this edition\n      was written against Django version 1.1 and has not been updated since\n      `mod_python` was first deprecated, then completely removed in Django 1.5.\n\n.. _chapter 12 of the django book (second edition): http://djangobook.com/en/2.0/chapter12/\n"
  },
  {
    "path": "Django-1.5.1/docs/howto/deployment/wsgi/apache-auth.txt",
    "content": "=========================================================\nAuthenticating against Django's user database from Apache\n=========================================================\n\nSince keeping multiple authentication databases in sync is a common problem when\ndealing with Apache, you can configure Apache to authenticate against Django's\n:doc:`authentication system </topics/auth/index>` directly. This requires Apache\nversion >= 2.2 and mod_wsgi >= 2.0. For example, you could:\n\n* Serve static/media files directly from Apache only to authenticated users.\n\n* Authenticate access to a Subversion_ repository against Django users with\n  a certain permission.\n\n* Allow certain users to connect to a WebDAV share created with mod_dav_.\n\n.. note::\n    If you have installed a :ref:`custom User model <auth-custom-user>` and\n    want to use this default auth handler, it must support an `is_active`\n    attribute. If you want to use group based authorization, your custom user\n    must have a relation named 'groups', referring to a related object that has\n    a 'name' field. You can also specify your own custom mod_wsgi\n    auth handler if your custom cannot conform to these requirements.\n\n.. _Subversion: http://subversion.tigris.org/\n.. _mod_dav: http://httpd.apache.org/docs/2.2/mod/mod_dav.html\n\nAuthentication with mod_wsgi\n============================\n\nMake sure that mod_wsgi is installed and activated and that you have\nfollowed the steps to setup\n:doc:`Apache with mod_wsgi </howto/deployment/wsgi/modwsgi>`\n\nNext, edit your Apache configuration to add a location that you want\nonly authenticated users to be able to view:\n\n.. code-block:: apache\n\n    WSGIScriptAlias / /path/to/mysite.com/mysite/wsgi.py\n\n    WSGIProcessGroup %{GLOBAL}\n    WSGIApplicationGroup django\n\n    <Location \"/secret\">\n        AuthType Basic\n        AuthName \"Top Secret\"\n        Require valid-user\n        AuthBasicProvider wsgi\n        WSGIAuthUserScript /path/to/mysite.com/mysite/wsgi.py\n    </Location>\n\nThe ``WSGIAuthUserScript`` directive tells mod_wsgi to execute the\n``check_password`` function in specified wsgi script, passing the user name and\npassword that it receives from the prompt. In this example, the\n``WSGIAuthUserScript`` is the same as the ``WSGIScriptAlias`` that defines your\napplication :doc:`that is created by django-admin.py startproject\n</howto/deployment/wsgi/index>`.\n\n.. admonition:: Using Apache 2.2 with authentication\n\n    Make sure that ``mod_auth_basic`` and ``mod_authz_user`` are loaded.\n\n    These might be compiled statically into Apache, or you might need to use\n    LoadModule to load them dynamically in your ``httpd.conf``:\n\n    .. code-block:: apache\n\n        LoadModule auth_basic_module modules/mod_auth_basic.so\n        LoadModule authz_user_module modules/mod_authz_user.so\n\nFinally, edit your WSGI script ``mysite.wsgi`` to tie Apache's\nauthentication to your site's authentication mechanisms by importing the\ncheck_user function:\n\n.. code-block:: python\n\n    import os\n    import sys\n\n    os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'\n\n    from django.contrib.auth.handlers.modwsgi import check_password\n\n    from django.core.handlers.wsgi import WSGIHandler\n    application = WSGIHandler()\n\n\nRequests beginning with ``/secret/`` will now require a user to authenticate.\n\nThe mod_wsgi `access control mechanisms documentation`_ provides additional\ndetails and information about alternative methods of authentication.\n\n.. _access control mechanisms documentation: http://code.google.com/p/modwsgi/wiki/AccessControlMechanisms\n\nAuthorization with mod_wsgi and Django groups\n---------------------------------------------\n\nmod_wsgi also provides functionality to restrict a particular location to\nmembers of a group.\n\nIn this case, the Apache configuration should look like this:\n\n.. code-block:: apache\n\n    WSGIScriptAlias / /path/to/mysite.com/mysite/wsgi.py\n\n    WSGIProcessGroup %{GLOBAL}\n    WSGIApplicationGroup django\n\n    <Location \"/secret\">\n        AuthType Basic\n        AuthName \"Top Secret\"\n        AuthBasicProvider wsgi\n        WSGIAuthUserScript /path/to/mysite.com/mysite/wsgi.py\n        WSGIAuthGroupScript /path/to/mysite.com/mysite/wsgi.py\n        Require group secret-agents\n        Require valid-user\n    </Location>\n\nTo support the ``WSGIAuthGroupScript`` directive, the same WSGI script\n``mysite.wsgi`` must also import the ``groups_for_user`` function which\nreturns a list groups the given user belongs to.\n\n.. code-block:: python\n\n    from django.contrib.auth.handlers.modwsgi import check_password, groups_for_user\n\nRequests for ``/secret/`` will now also require user to be a member of the\n\"secret-agents\" group.\n"
  },
  {
    "path": "Django-1.5.1/docs/howto/deployment/wsgi/gunicorn.txt",
    "content": "===============================\nHow to use Django with Gunicorn\n===============================\n\n.. highlight:: bash\n\nGunicorn_ ('Green Unicorn') is a pure-Python WSGI server for UNIX. It has no\ndependencies and is easy to install and use.\n\n.. _Gunicorn: http://gunicorn.org/\n\nThere are two ways to use Gunicorn with Django. One is to have Gunicorn treat\nDjango as just another WSGI application. The second is to use Gunicorn's\nspecial `integration with Django`_.\n\n.. _integration with Django: http://gunicorn.org/run.html#django-manage-py\n\nInstalling Gunicorn\n===================\n\nInstalling gunicorn is as easy as ``sudo pip install gunicorn``. For more\ndetails, see the `gunicorn documentation`_.\n\n.. _gunicorn documentation: http://gunicorn.org/install.html\n\nRunning Django in Gunicorn as a generic WSGI application\n========================================================\n\nWhen Gunicorn is installed, a ``gunicorn`` command is available which starts\nthe Gunicorn server process. At its simplest, gunicorn just needs to be called\nwith a the location of a WSGI application object.::\n\n    gunicorn [OPTIONS] APP_MODULE\n\nWhere ``APP_MODULE`` is of the pattern ``MODULE_NAME:VARIABLE_NAME``. The\nmodule name should be a full dotted path. The variable name refers to a WSGI\ncallable that should be found in the specified module.\n\nSo for a typical Django project, invoking gunicorn would look like::\n\n    gunicorn myproject.wsgi:application\n\n(This requires that your project be on the Python path; the simplest way to\nensure that is to run this command from the same directory as your\n``manage.py`` file.)\n\n\nUsing Gunicorn's Django integration\n===================================\n\n.. note::\n\n    If you are using Django 1.4 or newer, it’s highly recommended to simply run\n    your application with the WSGI interface using the ``gunicorn`` command\n    as described above.\n\nTo use Gunicorn's built-in Django integration, first add ``\"gunicorn\"`` to\n:setting:`INSTALLED_APPS`. Then run ``python manage.py run_gunicorn``.\n\nThis provides a few Django-specific niceties:\n\n* sets the gunicorn process name to be that of the project\n\n* validates installed models\n\n* allows an ``--adminmedia`` option for passing in the location of the\n  admin media files.\n\nSee Gunicorn's `deployment documentation`_ for additional tips on starting and\nmaintaining the Gunicorn server.\n\n.. _deployment documentation: http://gunicorn.org/deploy.html\n"
  },
  {
    "path": "Django-1.5.1/docs/howto/deployment/wsgi/index.txt",
    "content": "=======================\nHow to deploy with WSGI\n=======================\n\nDjango's primary deployment platform is WSGI_, the Python standard for web\nservers and applications.\n\n.. _WSGI: http://www.wsgi.org\n\nDjango's :djadmin:`startproject` management command sets up a simple default\nWSGI configuration for you, which you can tweak as needed for your project, and\ndirect any WSGI-compliant webserver to use. Django includes getting-started\ndocumentation for the following WSGI servers:\n\n.. toctree::\n   :maxdepth: 1\n\n   modwsgi\n   apache-auth\n   gunicorn\n   uwsgi\n\nThe ``application`` object\n--------------------------\n\nOne key concept of deploying with WSGI is to specify a central ``application``\ncallable object which the webserver uses to communicate with your code. This is\ncommonly specified as an object named ``application`` in a Python module\naccessible to the server.\n\n.. versionchanged:: 1.4\n\nThe :djadmin:`startproject` command creates a :file:`projectname/wsgi.py` that\ncontains such an application callable.\n\n.. note::\n\n   Upgrading from a previous release of Django and don't have a :file:`wsgi.py`\n   file in your project? You can simply add one to your project's top-level\n   Python package (probably next to :file:`settings.py` and :file:`urls.py`)\n   with the contents below. If you want :djadmin:`runserver` to also make use\n   of this WSGI file, you can also add ``WSGI_APPLICATION =\n   \"mysite.wsgi.application\"`` in your settings (replacing ``mysite`` with the\n   name of your project).\n\nInitially this file contains::\n\n    import os\n\n    os.environ.setdefault(\"DJANGO_SETTINGS_MODULE\", \"mysite.settings\")\n\n    # This application object is used by the development server\n    # as well as any WSGI server configured to use this file.\n    from django.core.wsgi import get_wsgi_application\n    application = get_wsgi_application()\n\nThe ``os.environ.setdefault`` line just sets the default settings module to\nuse, if you haven't explicitly set the :envvar:`DJANGO_SETTINGS_MODULE`\nenvironment variable. You'll need to edit this line to replace ``mysite`` with\nthe name of your project package, so the path to your settings module is\ncorrect.\n\nTo apply `WSGI middleware`_ you can simply wrap the application object\nin the same file::\n\n    from helloworld.wsgi import HelloWorldApplication\n    application = HelloWorldApplication(application)\n\nYou could also replace the Django WSGI application with a custom WSGI\napplication that later delegates to the Django WSGI application, if you want to\ncombine a Django application with a WSGI application of another framework.\n\n.. _`WSGI middleware`: http://www.python.org/dev/peps/pep-3333/#middleware-components-that-play-both-sides\n"
  },
  {
    "path": "Django-1.5.1/docs/howto/deployment/wsgi/modwsgi.txt",
    "content": "==========================================\nHow to use Django with Apache and mod_wsgi\n==========================================\n\nDeploying Django with Apache_ and `mod_wsgi`_ is a tried and tested way to get\nDjango into production.\n\n.. _Apache: http://httpd.apache.org/\n.. _mod_wsgi: http://code.google.com/p/modwsgi/\n\nmod_wsgi is an Apache module which can host any Python WSGI_ application,\nincluding Django. Django will work with any version of Apache which supports\nmod_wsgi.\n\n.. _WSGI: http://www.wsgi.org\n\nThe `official mod_wsgi documentation`_ is fantastic; it's your source for all\nthe details about how to use mod_wsgi. You'll probably want to start with the\n`installation and configuration documentation`_.\n\n.. _official mod_wsgi documentation: http://www.modwsgi.org/\n.. _installation and configuration documentation: http://www.modwsgi.org/wiki/InstallationInstructions\n\nBasic configuration\n===================\n\nOnce you've got mod_wsgi installed and activated, edit your Apache server's\n``httpd.conf`` file and add\n\n.. code-block:: apache\n\n    WSGIScriptAlias / /path/to/mysite.com/mysite/wsgi.py\n    WSGIPythonPath /path/to/mysite.com\n\n    <Directory /path/to/mysite.com/mysite>\n    <Files wsgi.py>\n    Order deny,allow\n    Allow from all\n    </Files>\n    </Directory>\n\nThe first bit in the ``WSGIScriptAlias`` line is the base URL path you want to\nserve your application at (``/`` indicates the root url), and the second is the\nlocation of a \"WSGI file\" -- see below -- on your system, usually inside of\nyour project package (``mysite`` in this example). This tells Apache to serve\nany request below the given URL using the WSGI application defined in that\nfile.\n\nThe ``WSGIPythonPath`` line ensures that your project package is available for\nimport on the Python path; in other words, that ``import mysite`` works.\n\nThe ``<Directory>`` piece just ensures that Apache can access your\n:file:`wsgi.py` file.\n\nNext we'll need to ensure this :file:`wsgi.py` with a WSGI application object\nexists. As of Django version 1.4, :djadmin:`startproject` will have created one\nfor you; otherwise, you'll need to create it. See the :doc:`WSGI overview\ndocumentation</howto/deployment/wsgi/index>` for the default contents you\nshould put in this file, and what else you can add to it.\n\n.. warning::\n\n   If multiple Django sites are run in a single mod_wsgi process, all of them\n   will use the settings of whichever one happens to run first. This can be\n   solved with a minor edit to ``wsgi.py`` (see comment in the file for\n   details), or by :ref:`using mod_wsgi daemon mode<daemon-mode>` and ensuring\n   that each site runs in its own daemon process.\n\n\nUsing a virtualenv\n==================\n\nIf you install your project's Python dependencies inside a `virtualenv`_,\nyou'll need to add the path to this virtualenv's ``site-packages`` directory to\nyour Python path as well. To do this, add an additional path to your\n`WSGIPythonPath` directive, with multiple paths separated by a colon::\n\n    WSGIPythonPath /path/to/mysite.com:/path/to/your/venv/lib/python2.X/site-packages\n\nMake sure you give the correct path to your virtualenv, and replace\n``python2.X`` with the correct Python version (e.g. ``python2.7``).\n\n.. _virtualenv: http://www.virtualenv.org\n\n.. _daemon-mode:\n\nUsing mod_wsgi daemon mode\n==========================\n\n\"Daemon mode\" is the recommended mode for running mod_wsgi (on non-Windows\nplatforms). To create the required daemon process group and delegate the\nDjango instance to run in it, you will need to add appropriate\n``WSGIDaemonProcess`` and ``WSGIProcessGroup`` directives. A further change\nrequired to the above configuration if you use daemon mode is that you can't\nuse ``WSGIPythonPath``; instead you should use the ``python-path`` option to\n``WSGIDaemonProcess``, for example::\n\n    WSGIDaemonProcess example.com python-path=/path/to/mysite.com:/path/to/venv/lib/python2.7/site-packages\n    WSGIProcessGroup example.com\n\nSee the official mod_wsgi documentation for `details on setting up daemon\nmode`_.\n\n.. _details on setting up daemon mode: http://code.google.com/p/modwsgi/wiki/QuickConfigurationGuide#Delegation_To_Daemon_Process\n\n.. _serving-files:\n\nServing files\n=============\n\nDjango doesn't serve files itself; it leaves that job to whichever Web\nserver you choose.\n\nWe recommend using a separate Web server -- i.e., one that's not also running\nDjango -- for serving media. Here are some good choices:\n\n* lighttpd_\n* Nginx_\n* TUX_\n* A stripped-down version of Apache_\n* Cherokee_\n\nIf, however, you have no option but to serve media files on the same Apache\n``VirtualHost`` as Django, you can set up Apache to serve some URLs as\nstatic media, and others using the mod_wsgi interface to Django.\n\nThis example sets up Django at the site root, but explicitly serves\n``robots.txt``, ``favicon.ico``, any CSS file, and anything in the\n``/static/`` and ``/media/`` URL space as a static file. All other URLs\nwill be served using mod_wsgi::\n\n    Alias /robots.txt /path/to/mysite.com/static/robots.txt\n    Alias /favicon.ico /path/to/mysite.com/static/favicon.ico\n\n    AliasMatch ^/([^/]*\\.css) /path/to/mysite.com/static/styles/$1\n\n    Alias /media/ /path/to/mysite.com/media/\n    Alias /static/ /path/to/mysite.com/static/\n\n    <Directory /path/to/mysite.com/static>\n    Order deny,allow\n    Allow from all\n    </Directory>\n\n    <Directory /path/to/mysite.com/media>\n    Order deny,allow\n    Allow from all\n    </Directory>\n\n    WSGIScriptAlias / /path/to/mysite.com/mysite/wsgi.py\n\n    <Directory /path/to/mysite.com/mysite>\n    <Files wsgi.py>\n    Order allow,deny\n    Allow from all\n    </Files>\n    </Directory>\n\n.. _lighttpd: http://www.lighttpd.net/\n.. _Nginx: http://wiki.nginx.org/Main\n.. _TUX: http://en.wikipedia.org/wiki/TUX_web_server\n.. _Apache: http://httpd.apache.org/\n.. _Cherokee: http://www.cherokee-project.com/\n\n.. More details on configuring a mod_wsgi site to serve static files can be found\n.. in the mod_wsgi documentation on `hosting static files`_.\n\n.. _hosting static files: http://code.google.com/p/modwsgi/wiki/ConfigurationGuidelines#Hosting_Of_Static_Files\n\n.. _serving-the-admin-files:\n\nServing the admin files\n=======================\n\nNote that the Django development server automatically serves the static files\nof the admin app (and any other installed apps), but this is not the case when\nyou use any other server arrangement. You're responsible for setting up Apache,\nor whichever media server you're using, to serve the admin files.\n\nThe admin files live in (:file:`django/contrib/admin/static/admin`) of the\nDjango distribution.\n\nWe **strongly** recommend using :mod:`django.contrib.staticfiles` to handle the\nadmin files (along with a Web server as outlined in the previous section; this\nmeans using the :djadmin:`collectstatic` management command to collect the\nstatic files in :setting:`STATIC_ROOT`, and then configuring your Web server to\nserve :setting:`STATIC_ROOT` at :setting:`STATIC_URL`), but here are three\nother approaches:\n\n1. Create a symbolic link to the admin static files from within your\n   document root (this may require ``+FollowSymLinks`` in your Apache\n   configuration).\n\n2. Use an ``Alias`` directive, as demonstrated above, to alias the appropriate\n   URL (probably :setting:`STATIC_URL` + `admin/`) to the actual location of\n   the admin files.\n\n3. Copy the admin static files so that they live within your Apache\n   document root.\n\nAuthenticating against Django's user database from Apache\n=========================================================\n\nDjango provides a handler to allow Apache to authenticate users directly\nagainst Django's authentication backends. See the :doc:`mod_wsgi authentication\ndocumentation </howto/deployment/wsgi/apache-auth>`.\n\nIf you get a UnicodeEncodeError\n===============================\n\nIf you're taking advantage of the internationalization features of Django (see\n:doc:`/topics/i18n/index`) and you intend to allow users to upload files, you must\nensure that the environment used to start Apache is configured to accept\nnon-ASCII file names. If your environment is not correctly configured, you\nwill trigger ``UnicodeEncodeError`` exceptions when calling functions like\n``os.path()`` on filenames that contain non-ASCII characters.\n\nTo avoid these problems, the environment used to start Apache should contain\nsettings analogous to the following::\n\n    export LANG='en_US.UTF-8'\n    export LC_ALL='en_US.UTF-8'\n\nConsult the documentation for your operating system for the appropriate syntax\nand location to put these configuration items; ``/etc/apache2/envvars`` is a\ncommon location on Unix platforms. Once you have added these statements\nto your environment, restart Apache.\n"
  },
  {
    "path": "Django-1.5.1/docs/howto/deployment/wsgi/uwsgi.txt",
    "content": "============================\nHow to use Django with uWSGI\n============================\n\n.. highlight:: bash\n\nuWSGI_ is a fast, self-healing and developer/sysadmin-friendly application\ncontainer server coded in pure C.\n\n.. _uWSGI: http://projects.unbit.it/uwsgi/\n\nPrerequisite: uWSGI\n===================\n\nThe uWSGI wiki describes several `installation procedures`_. Using pip, the\nPython package manager, you can install any uWSGI version with a single\ncommand. For example:\n\n.. code-block:: bash\n\n    # Install current stable version.\n    $ sudo pip install uwsgi\n\n    # Or install LTS (long term support).\n    $ sudo pip install http://projects.unbit.it/downloads/uwsgi-lts.tar.gz\n\n.. _installation procedures: http://projects.unbit.it/uwsgi/wiki/Install\n\nuWSGI model\n-----------\n\nuWSGI operates on a client-server model. Your Web server (e.g., nginx, Apache)\ncommunicates with a django-uwsgi \"worker\" process to serve dynamic content.\nSee uWSGI's `background documentation`_ for more detail.\n\n.. _background documentation: http://projects.unbit.it/uwsgi/wiki/Background\n\nConfiguring and starting the uWSGI server for Django\n----------------------------------------------------\n\nuWSGI supports multiple ways to configure the process. See uWSGI's\n`configuration documentation`_ and `examples`_\n\n.. _configuration documentation: http://projects.unbit.it/uwsgi/wiki/Doc\n.. _examples: http://projects.unbit.it/uwsgi/wiki/Example\n\nHere's an example command to start a uWSGI server::\n\n    uwsgi --chdir=/path/to/your/project \\\n        --module=mysite.wsgi:application \\\n        --env DJANGO_SETTINGS_MODULE=mysite.settings \\\n        --master --pidfile=/tmp/project-master.pid \\\n        --socket=127.0.0.1:49152 \\      # can also be a file\n        --processes=5 \\                 # number of worker processes\n        --uid=1000 --gid=2000 \\         # if root, uwsgi can drop privileges\n        --harakiri=20 \\                 # respawn processes taking more than 20 seconds\n        --limit-as=128 \\                # limit the project to 128 MB\n        --max-requests=5000 \\           # respawn processes after serving 5000 requests\n        --vacuum \\                      # clear environment on exit\n        --home=/path/to/virtual/env \\   # optional path to a virtualenv\n        --daemonize=/var/log/uwsgi/yourproject.log      # background the process\n\nThis assumes you have a top-level project package named ``mysite``, and\nwithin it a module :file:`mysite/wsgi.py` that contains a WSGI ``application``\nobject. This is the layout you'll have if you ran ``django-admin.py\nstartproject mysite`` (using your own project name in place of ``mysite``) with\na recent version of Django. If this file doesn't exist, you'll need to create\nit. See the :doc:`/howto/deployment/wsgi/index` documentation for the default\ncontents you should put in this file and what else you can add to it.\n\nThe Django-specific options here are:\n\n* ``chdir``: The path to the directory that needs to be on Python's import\n  path -- i.e., the directory containing the ``mysite`` package.\n* ``module``: The WSGI module to use -- probably the ``mysite.wsgi`` module\n  that :djadmin:`startproject` creates.\n* ``env``: Should probably contain at least ``DJANGO_SETTINGS_MODULE``.\n* ``home``: Optional path to your project virtualenv.\n\nExample ini configuration file::\n\n    [uwsgi]\n    chdir=/path/to/your/project\n    module=mysite.wsgi:application\n    master=True\n    pidfile=/tmp/project-master.pid\n    vacuum=True\n    max-requests=5000\n    daemonize=/var/log/uwsgi/yourproject.log\n\nExample ini configuration file usage::\n\n    uwsgi --ini uwsgi.ini\n\nSee the uWSGI docs on `managing the uWSGI process`_ for information on\nstarting, stoping and reloading the uWSGI workers.\n\n.. _managing the uWSGI process: http://projects.unbit.it/uwsgi/wiki/Management\n"
  },
  {
    "path": "Django-1.5.1/docs/howto/error-reporting.txt",
    "content": "Error reporting\n===============\n\nWhen you're running a public site you should always turn off the\n:setting:`DEBUG` setting. That will make your server run much faster, and will\nalso prevent malicious users from seeing details of your application that can be\nrevealed by the error pages.\n\nHowever, running with :setting:`DEBUG` set to ``False`` means you'll never see\nerrors generated by your site -- everyone will just see your public error pages.\nYou need to keep track of errors that occur in deployed sites, so Django can be\nconfigured to create reports with details about those errors.\n\nEmail reports\n-------------\n\nServer errors\n~~~~~~~~~~~~~\n\nWhen :setting:`DEBUG` is ``False``, Django will email the users listed in the\n:setting:`ADMINS` setting whenever your code raises an unhandled exception and\nresults in an internal server error (HTTP status code 500). This gives the\nadministrators immediate notification of any errors. The :setting:`ADMINS` will\nget a description of the error, a complete Python traceback, and details about\nthe HTTP request that caused the error.\n\n.. note::\n\n   In order to send email, Django requires a few settings telling it\n   how to connect to your mail server. At the very least, you'll need\n   to specify :setting:`EMAIL_HOST` and possibly\n   :setting:`EMAIL_HOST_USER` and :setting:`EMAIL_HOST_PASSWORD`,\n   though other settings may be also required depending on your mail\n   server's configuration. Consult :doc:`the Django settings\n   documentation </ref/settings>` for a full list of email-related\n   settings.\n\nBy default, Django will send email from root@localhost. However, some mail\nproviders reject all email from this address. To use a different sender\naddress, modify the :setting:`SERVER_EMAIL` setting.\n\nTo disable this behavior, just remove all entries from the :setting:`ADMINS`\nsetting.\n\n.. seealso::\n\n   Server error emails are sent using the logging framework, so you can\n   customize this behavior by :doc:`customizing your logging configuration\n   </topics/logging>`.\n\n404 errors\n~~~~~~~~~~\n\nDjango can also be configured to email errors about broken links (404 \"page\nnot found\" errors). Django sends emails about 404 errors when:\n\n* :setting:`DEBUG` is ``False``\n\n* :setting:`SEND_BROKEN_LINK_EMAILS` is ``True``\n\n* Your :setting:`MIDDLEWARE_CLASSES` setting includes ``CommonMiddleware``\n  (which it does by default).\n\nIf those conditions are met, Django will email the users listed in the\n:setting:`MANAGERS` setting whenever your code raises a 404 and the request has\na referer. (It doesn't bother to email for 404s that don't have a referer --\nthose are usually just people typing in broken URLs or broken Web 'bots).\n\nYou can tell Django to stop reporting particular 404s by tweaking the\n:setting:`IGNORABLE_404_URLS` setting. It should be a tuple of compiled\nregular expression objects. For example::\n\n    import re\n    IGNORABLE_404_URLS = (\n        re.compile(r'\\.(php|cgi)$'),\n        re.compile(r'^/phpmyadmin/'),\n    )\n\nIn this example, a 404 to any URL ending with ``.php`` or ``.cgi`` will *not* be\nreported. Neither will any URL starting with ``/phpmyadmin/``.\n\nThe following example shows how to exclude some conventional URLs that browsers and\ncrawlers often request::\n\n    import re\n    IGNORABLE_404_URLS = (\n        re.compile(r'^/apple-touch-icon.*\\.png$'),\n        re.compile(r'^/favicon\\.ico$'),\n        re.compile(r'^/robots\\.txt$'),\n    )\n\n(Note that these are regular expressions, so we put a backslash in front of\nperiods to escape them.)\n\nThe best way to disable this behavior is to set\n:setting:`SEND_BROKEN_LINK_EMAILS` to ``False``.\n\n.. seealso::\n\n   404 errors are logged using the logging framework. By default, these log\n   records are ignored, but you can use them for error reporting by writing a\n   handler and :doc:`configuring logging </topics/logging>` appropriately.\n\n.. seealso::\n\n   .. versionchanged:: 1.4\n\n   Previously, two settings were used to control which URLs not to report:\n   :setting:`IGNORABLE_404_STARTS` and :setting:`IGNORABLE_404_ENDS`. They\n   were replaced by :setting:`IGNORABLE_404_URLS`.\n\n.. _filtering-error-reports:\n\nFiltering error reports\n-----------------------\n\n.. versionadded:: 1.4\n\nFiltering sensitive information\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nError reports are really helpful for debugging errors, so it is generally\nuseful to record as much relevant information about those errors as possible.\nFor example, by default Django records the `full traceback`_ for the\nexception raised, each `traceback frame`_'s local variables, and the\n:class:`~django.http.HttpRequest`'s :ref:`attributes<httprequest-attributes>`.\n\nHowever, sometimes certain types of information may be too sensitive and thus\nmay not be appropriate to be kept track of, for example a user's password or\ncredit card number. So Django offers a set of function decorators to help you\ncontrol which information should be filtered out of error reports in a\nproduction environment (that is, where :setting:`DEBUG` is set to ``False``):\n:func:`sensitive_variables` and :func:`sensitive_post_parameters`.\n\n.. _`full traceback`: http://en.wikipedia.org/wiki/Stack_trace\n.. _`traceback frame`: http://en.wikipedia.org/wiki/Stack_frame\n\n.. function:: sensitive_variables(*variables)\n\n    If a function (either a view or any regular callback) in your code uses\n    local variables susceptible to contain sensitive information, you may\n    prevent the values of those variables from being included in error reports\n    using the ``sensitive_variables`` decorator::\n\n        from django.views.decorators.debug import sensitive_variables\n\n        @sensitive_variables('user', 'pw', 'cc')\n        def process_info(user):\n            pw = user.pass_word\n            cc = user.credit_card_number\n            name = user.name\n            ...\n\n    In the above example, the values for the ``user``, ``pw`` and ``cc``\n    variables will be hidden and replaced with stars (`**********`) in the\n    error reports, whereas the value of the ``name`` variable will be\n    disclosed.\n\n    To systematically hide all local variables of a function from error logs,\n    do not provide any argument to the ``sensitive_variables`` decorator::\n\n        @sensitive_variables()\n        def my_function():\n            ...\n\n    .. admonition:: When using mutiple decorators\n\n        If the variable you want to hide is also a function argument (e.g.\n        '``user``' in the following example), and if the decorated function has\n        mutiple decorators, then make sure to place ``@sensitive_variables`` at\n        the top of the decorator chain. This way it will also hide the function\n        argument as it gets passed through the other decorators::\n\n            @sensitive_variables('user', 'pw', 'cc')\n            @some_decorator\n            @another_decorator\n            def process_info(user):\n                ...\n\n.. function:: sensitive_post_parameters(*parameters)\n\n    If one of your views receives an :class:`~django.http.HttpRequest` object\n    with :attr:`POST parameters<django.http.HttpRequest.POST>` susceptible to\n    contain sensitive information, you may prevent the values of those\n    parameters from being included in the error reports using the\n    ``sensitive_post_parameters`` decorator::\n\n        from django.views.decorators.debug import sensitive_post_parameters\n\n        @sensitive_post_parameters('pass_word', 'credit_card_number')\n        def record_user_profile(request):\n            UserProfile.create(user=request.user,\n                               password=request.POST['pass_word'],\n                               credit_card=request.POST['credit_card_number'],\n                               name=request.POST['name'])\n            ...\n\n    In the above example, the values for the ``pass_word`` and\n    ``credit_card_number`` POST parameters will be hidden and replaced with\n    stars (`**********`) in the request's representation inside the error\n    reports, whereas the value of the ``name`` parameter will be disclosed.\n\n    To systematically hide all POST parameters of a request in error reports,\n    do not provide any argument to the ``sensitive_post_parameters`` decorator::\n\n        @sensitive_post_parameters()\n        def my_view(request):\n            ...\n\n.. note::\n\n    .. versionchanged:: 1.4\n\n    Since version 1.4, all POST parameters are systematically filtered out of\n    error reports for certain :mod:`django.contrib.auth.views` views (\n    ``login``, ``password_reset_confirm``, ``password_change``, and\n    ``add_view`` and ``user_change_password`` in the ``auth`` admin) to prevent\n    the leaking of sensitive information such as user passwords.\n\n.. _custom-error-reports:\n\nCustom error reports\n~~~~~~~~~~~~~~~~~~~~\n\nAll :func:`sensitive_variables` and :func:`sensitive_post_parameters` do is,\nrespectively, annotate the decorated function with the names of sensitive\nvariables and annotate the ``HttpRequest`` object with the names of sensitive\nPOST parameters, so that this sensitive information can later be filtered out\nof reports when an error occurs. The actual filtering is done by Django's\ndefault error reporter filter:\n:class:`django.views.debug.SafeExceptionReporterFilter`. This filter uses the\ndecorators' annotations to replace the corresponding values with stars\n(`**********`) when the error reports are produced. If you wish to override or\ncustomize this default behavior for your entire site, you need to define your\nown filter class and tell Django to use it via the\n:setting:`DEFAULT_EXCEPTION_REPORTER_FILTER` setting::\n\n    DEFAULT_EXCEPTION_REPORTER_FILTER = 'path.to.your.CustomExceptionReporterFilter'\n\nYou may also control in a more granular way which filter to use within any\ngiven view by setting the ``HttpRequest``'s ``exception_reporter_filter``\nattribute::\n\n    def my_view(request):\n        if request.user.is_authenticated():\n            request.exception_reporter_filter = CustomExceptionReporterFilter()\n        ...\n\nYour custom filter class needs to inherit from\n:class:`django.views.debug.SafeExceptionReporterFilter` and may override the\nfollowing methods:\n\n.. class:: django.views.debug.SafeExceptionReporterFilter\n\n.. method:: SafeExceptionReporterFilter.is_active(self, request)\n\n    Returns ``True`` to activate the filtering operated in the other methods.\n    By default the filter is active if :setting:`DEBUG` is ``False``.\n\n.. method:: SafeExceptionReporterFilter.get_request_repr(self, request)\n\n    Returns the representation string of the request object, that is, the\n    value that would be returned by ``repr(request)``, except it uses the\n    filtered dictionary of POST parameters as determined by\n    :meth:`SafeExceptionReporterFilter.get_post_parameters`.\n\n.. method:: SafeExceptionReporterFilter.get_post_parameters(self, request)\n\n    Returns the filtered dictionary of POST parameters. By default it replaces\n    the values of sensitive parameters with stars (`**********`).\n\n.. method:: SafeExceptionReporterFilter.get_traceback_frame_variables(self, request, tb_frame)\n\n    Returns the filtered dictionary of local variables for the given traceback\n    frame. By default it replaces the values of sensitive variables with stars\n    (`**********`).\n\n.. seealso::\n\n    You can also set up custom error reporting by writing a custom piece of\n    :ref:`exception middleware <exception-middleware>`. If you do write custom\n    error handling, it's a good idea to emulate Django's built-in error handling\n    and only report/log errors if :setting:`DEBUG` is ``False``.\n"
  },
  {
    "path": "Django-1.5.1/docs/howto/index.txt",
    "content": "\"How-to\" guides\n===============\n\nHere you'll find short answers to \"How do I....?\" types of questions. These\nhow-to guides don't cover topics in depth -- you'll find that material in the\n:doc:`/topics/index` and the :doc:`/ref/index`. However, these guides will help\nyou quickly accomplish common tasks.\n\n.. toctree::\n   :maxdepth: 1\n\n   auth-remote-user\n   custom-management-commands\n   custom-model-fields\n   custom-template-tags\n   custom-file-storage\n   deployment/index\n   error-reporting\n   initial-data\n   jython\n   legacy-databases\n   outputting-csv\n   outputting-pdf\n   static-files\n\n.. seealso::\n\n    The `Django community aggregator`_, where we aggregate content from the\n    global Django community. Many writers in the aggregator write this sort of\n    how-to material.\n\n    .. _django community aggregator: https://www.djangoproject.com/community/\n"
  },
  {
    "path": "Django-1.5.1/docs/howto/initial-data.txt",
    "content": "=================================\nProviding initial data for models\n=================================\n\nIt's sometimes useful to pre-populate your database with hard-coded data when\nyou're first setting up an app. There's a couple of ways you can have Django\nautomatically create this data: you can provide `initial data via fixtures`_, or\nyou can provide `initial data as SQL`_.\n\nIn general, using a fixture is a cleaner method since it's database-agnostic,\nbut initial SQL is also quite a bit more flexible.\n\n.. _initial data as sql: `providing initial sql data`_\n.. _initial data via fixtures: `providing initial data with fixtures`_\n\n.. _initial-data-via-fixtures:\n\nProviding initial data with fixtures\n====================================\n\nA fixture is a collection of data that Django knows how to import into a\ndatabase. The most straightforward way of creating a fixture if you've already\ngot some data is to use the :djadmin:`manage.py dumpdata <dumpdata>` command.\nOr, you can write fixtures by hand; fixtures can be written as XML, YAML, or\nJSON documents. The :doc:`serialization documentation </topics/serialization>`\nhas more details about each of these supported :ref:`serialization formats\n<serialization-formats>`.\n\nAs an example, though, here's what a fixture for a simple ``Person`` model might\nlook like in JSON:\n\n.. code-block:: js\n\n    [\n      {\n        \"model\": \"myapp.person\",\n        \"pk\": 1,\n        \"fields\": {\n          \"first_name\": \"John\",\n          \"last_name\": \"Lennon\"\n        }\n      },\n      {\n        \"model\": \"myapp.person\",\n        \"pk\": 2,\n        \"fields\": {\n          \"first_name\": \"Paul\",\n          \"last_name\": \"McCartney\"\n        }\n      }\n    ]\n\nAnd here's that same fixture as YAML:\n\n.. code-block:: none\n\n    - model: myapp.person\n      pk: 1\n      fields:\n        first_name: John\n        last_name: Lennon\n    - model: myapp.person\n      pk: 2\n      fields:\n        first_name: Paul\n        last_name: McCartney\n\nYou'll store this data in a ``fixtures`` directory inside your app.\n\nLoading data is easy: just call :djadmin:`manage.py loaddata <loaddata>`\n``<fixturename>``, where ``<fixturename>`` is the name of the fixture file\nyou've created. Each time you run :djadmin:`loaddata`, the data will be read\nfrom the fixture and re-loaded into the database. Note this means that if you\nchange one of the rows created by a fixture and then run :djadmin:`loaddata`\nagain, you'll wipe out any changes you've made.\n\nAutomatically loading initial data fixtures\n-------------------------------------------\n\nIf you create a fixture named ``initial_data.[xml/yaml/json]``, that fixture will\nbe loaded every time you run :djadmin:`syncdb`. This is extremely convenient,\nbut be careful: remember that the data will be refreshed *every time* you run\n:djadmin:`syncdb`. So don't use ``initial_data`` for data you'll want to edit.\n\nWhere Django finds fixture files\n--------------------------------\n\nBy default, Django looks in the ``fixtures`` directory inside each app for\nfixtures. You can set the :setting:`FIXTURE_DIRS` setting to a list of\nadditional directories where Django should look.\n\nWhen running :djadmin:`manage.py loaddata <loaddata>`, you can also\nspecify an absolute path to a fixture file, which overrides searching\nthe usual directories.\n\n.. seealso::\n\n    Fixtures are also used by the :ref:`testing framework\n    <topics-testing-fixtures>` to help set up a consistent test environment.\n\n.. _initial-sql:\n\nProviding initial SQL data\n==========================\n\nDjango provides a hook for passing the database arbitrary SQL that's executed\njust after the CREATE TABLE statements when you run :djadmin:`syncdb`. You can\nuse this hook to populate default records, or you could also create SQL\nfunctions, views, triggers, etc.\n\nThe hook is simple: Django just looks for a file called ``sql/<modelname>.sql``,\nin your app directory, where ``<modelname>`` is the model's name in lowercase.\n\nSo, if you had a ``Person`` model in an app called ``myapp``, you could add\narbitrary SQL to the file ``sql/person.sql`` inside your ``myapp`` directory.\nHere's an example of what the file might contain:\n\n.. code-block:: sql\n\n    INSERT INTO myapp_person (first_name, last_name) VALUES ('John', 'Lennon');\n    INSERT INTO myapp_person (first_name, last_name) VALUES ('Paul', 'McCartney');\n\nEach SQL file, if given, is expected to contain valid SQL statements\nwhich will insert the desired data (e.g., properly-formatted\n``INSERT`` statements separated by semicolons).\n\nThe SQL files are read by the :djadmin:`sqlcustom` and :djadmin:`sqlall`\ncommands in :doc:`manage.py </ref/django-admin>`. Refer to the :doc:`manage.py\ndocumentation </ref/django-admin>` for more information.\n\nNote that if you have multiple SQL data files, there's no guarantee of\nthe order in which they're executed. The only thing you can assume is\nthat, by the time your custom data files are executed, all the\ndatabase tables already will have been created.\n\n.. admonition:: Initial SQL data and testing\n\n    This technique *cannot* be used to provide initial data for\n    testing purposes. Django's test framework flushes the contents of\n    the test database after each test; as a result, any data added\n    using the custom SQL hook will be lost.\n\n    If you require data for a test case, you should add it using\n    either a :ref:`test fixture <topics-testing-fixtures>`, or\n    programatically add it during the ``setUp()`` of your test case.\n\nDatabase-backend-specific SQL data\n----------------------------------\n\nThere's also a hook for backend-specific SQL data. For example, you\ncan have separate initial-data files for PostgreSQL and SQLite. For\neach app, Django looks for a file called\n``<appname>/sql/<modelname>.<backend>.sql``, where ``<appname>`` is\nyour app directory, ``<modelname>`` is the model's name in lowercase\nand ``<backend>`` is the last part of the module name provided for the\n:setting:`ENGINE <DATABASE-ENGINE>` in your settings file (e.g., if you have\ndefined a database with an :setting:`ENGINE <DATABASE-ENGINE>` value of\n``django.db.backends.sqlite3``, Django will look for\n``<appname>/sql/<modelname>.sqlite3.sql``).\n\nBackend-specific SQL data is executed before non-backend-specific SQL\ndata. For example, if your app contains the files ``sql/person.sql``\nand ``sql/person.sqlite3.sql`` and you're installing the app on\nSQLite, Django will execute the contents of\n``sql/person.sqlite3.sql`` first, then ``sql/person.sql``.\n"
  },
  {
    "path": "Django-1.5.1/docs/howto/jython.txt",
    "content": "========================\nRunning Django on Jython\n========================\n\n.. index:: Jython, Java, JVM\n\n.. admonition:: Python 2.6 support\n\n    Django 1.5 has dropped support for Python 2.5. Therefore, you have to use\n    a Jython 2.7 alpha release if you want to use Django 1.5 with Jython.\n    Please use Django 1.4 if you want to keep using Django on a stable Jython\n    version.\n\nJython_ is an implementation of Python that runs on the Java platform (JVM).\nDjango runs cleanly on Jython version 2.5 or later, which means you can deploy\nDjango on any Java platform.\n\nThis document will get you up and running with Django on top of Jython.\n\n.. _jython: http://www.jython.org/\n\nInstalling Jython\n=================\n\nDjango works with Jython versions 2.5b3 and higher. Download Jython at \nhttp://www.jython.org/.\n\nCreating a servlet container\n============================\n\nIf you just want to experiment with Django, skip ahead to the next section;\nDjango includes a lightweight Web server you can use for testing, so you won't\nneed to set up anything else until you're ready to deploy Django in production.\n\nIf you want to use Django on a production site, use a Java servlet container,\nsuch as `Apache Tomcat`_. Full JavaEE applications servers such as `GlassFish`_\nor `JBoss`_ are also OK, if you need the extra features they include.\n\n.. _`Apache Tomcat`: http://tomcat.apache.org/\n.. _GlassFish: http://glassfish.java.net/\n.. _JBoss: http://www.jboss.org/\n\nInstalling Django\n=================\n\nThe next step is to install Django itself. This is exactly the same as\ninstalling Django on standard Python, so see\n:ref:`removing-old-versions-of-django` and :ref:`install-django-code` for\ninstructions.\n\nInstalling Jython platform support libraries\n============================================\n\nThe `django-jython`_ project contains database backends and management commands\nfor Django/Jython development. Note that the builtin Django backends won't work\non top of Jython.\n\n.. _`django-jython`: http://code.google.com/p/django-jython/\n\nTo install it, follow the `installation instructions`_ detailed on the project\nWeb site. Also, read the `database backends`_ documentation there.\n\n.. _`installation instructions`: http://code.google.com/p/django-jython/wiki/Install\n.. _`database backends`: http://code.google.com/p/django-jython/wiki/DatabaseBackends\n\nDifferences with Django on Jython\n=================================\n\n.. index:: JYTHONPATH\n\nAt this point, Django on Jython should behave nearly identically to Django\nrunning on standard Python. However, are a few differences to keep in mind:\n\n* Remember to use the ``jython`` command instead of ``python``. The\n  documentation uses ``python`` for consistency, but if you're using Jython\n  you'll want to mentally replace ``python`` with ``jython`` every time it\n  occurs.\n\n* Similarly, you'll need to use the ``JYTHONPATH`` environment variable\n  instead of ``PYTHONPATH``.\n"
  },
  {
    "path": "Django-1.5.1/docs/howto/legacy-databases.txt",
    "content": "=========================================\nIntegrating Django with a legacy database\n=========================================\n\nWhile Django is best suited for developing new applications, it's quite\npossible to integrate it into legacy databases. Django includes a couple of\nutilities to automate as much of this process as possible.\n\nThis document assumes you know the Django basics, as covered in the\n:doc:`tutorial </intro/tutorial01>`.\n\nOnce you've got Django set up, you'll follow this general process to integrate\nwith an existing database.\n\nGive Django your database parameters\n====================================\n\nYou'll need to tell Django what your database connection parameters are, and\nwhat the name of the database is. Do that by editing the :setting:`DATABASES`\nsetting and assigning values to the following keys for the ``'default'``\nconnection:\n\n* :setting:`NAME`\n* :setting:`ENGINE <DATABASE-ENGINE>`\n* :setting:`USER`\n* :setting:`PASSWORD`\n* :setting:`HOST`\n* :setting:`PORT`\n\nAuto-generate the models\n========================\n\n.. highlight:: bash\n\nDjango comes with a utility called :djadmin:`inspectdb` that can create models\nby introspecting an existing database. You can view the output by running this\ncommand::\n\n    python manage.py inspectdb\n\nSave this as a file by using standard Unix output redirection::\n\n    python manage.py inspectdb > models.py\n\nThis feature is meant as a shortcut, not as definitive model generation. See the\n:djadmin:`documentation of inspectdb <inspectdb>` for more information.\n\nOnce you've cleaned up your models, name the file ``models.py`` and put it in\nthe Python package that holds your app. Then add the app to your\n:setting:`INSTALLED_APPS` setting.\n\nInstall the core Django tables\n==============================\n\nNext, run the :djadmin:`syncdb` command to install any extra needed database\nrecords such as admin permissions and content types::\n\n    python manage.py syncdb\n\nTest and tweak\n==============\n\nThose are the basic steps -- from here you'll want to tweak the models Django\ngenerated until they work the way you'd like. Try accessing your data via the\nDjango database API, and try editing objects via Django's admin site, and edit\nthe models file accordingly.\n"
  },
  {
    "path": "Django-1.5.1/docs/howto/outputting-csv.txt",
    "content": "==========================\nOutputting CSV with Django\n==========================\n\nThis document explains how to output CSV (Comma Separated Values) dynamically\nusing Django views. To do this, you can either use the Python CSV library or the\nDjango template system.\n\nUsing the Python CSV library\n============================\n\nPython comes with a CSV library, :mod:`csv`. The key to using it with Django is\nthat the :mod:`csv` module's CSV-creation capability acts on file-like objects,\nand Django's :class:`~django.http.HttpResponse` objects are file-like objects.\n\nHere's an example::\n\n    import csv\n    from django.http import HttpResponse\n\n    def some_view(request):\n        # Create the HttpResponse object with the appropriate CSV header.\n        response = HttpResponse(content_type='text/csv')\n        response['Content-Disposition'] = 'attachment; filename=\"somefilename.csv\"'\n\n        writer = csv.writer(response)\n        writer.writerow(['First row', 'Foo', 'Bar', 'Baz'])\n        writer.writerow(['Second row', 'A', 'B', 'C', '\"Testing\"', \"Here's a quote\"])\n\n        return response\n\nThe code and comments should be self-explanatory, but a few things deserve a\nmention:\n\n* The response gets a special MIME type, :mimetype:`text/csv`. This tells\n  browsers that the document is a CSV file, rather than an HTML file. If\n  you leave this off, browsers will probably interpret the output as HTML,\n  which will result in ugly, scary gobbledygook in the browser window.\n\n* The response gets an additional ``Content-Disposition`` header, which\n  contains the name of the CSV file. This filename is arbitrary; call it\n  whatever you want. It'll be used by browsers in the \"Save as...\"\n  dialogue, etc.\n\n* Hooking into the CSV-generation API is easy: Just pass ``response`` as the\n  first argument to ``csv.writer``. The ``csv.writer`` function expects a\n  file-like object, and :class:`~django.http.HttpResponse` objects fit the\n  bill.\n\n* For each row in your CSV file, call ``writer.writerow``, passing it an\n  iterable object such as a list or tuple.\n\n* The CSV module takes care of quoting for you, so you don't have to worry\n  about escaping strings with quotes or commas in them. Just pass\n  ``writerow()`` your raw strings, and it'll do the right thing.\n\nHandling Unicode\n~~~~~~~~~~~~~~~~\n\nPython's :mod:`csv` module does not support Unicode input. Since Django uses\nUnicode internally this means strings read from sources such as\n:class:`~django.http.HttpRequest` are potentially problematic. There are a few\noptions for handling this:\n\n* Manually encode all Unicode objects to a compatible encoding.\n\n* Use the ``UnicodeWriter`` class provided in the `csv module's examples\n  section`_.\n\n* Use the `python-unicodecsv module`_, which aims to be a drop-in\n  replacement for :mod:`csv` that gracefully handles Unicode.\n\nFor more information, see the Python documentation of the :mod:`csv` module.\n\n.. _`csv module's examples section`: http://docs.python.org/library/csv.html#examples\n.. _`python-unicodecsv module`: https://github.com/jdunck/python-unicodecsv\n\nUsing the template system\n=========================\n\nAlternatively, you can use the :doc:`Django template system </topics/templates>`\nto generate CSV. This is lower-level than using the convenient Python :mod:`csv`\nmodule, but the solution is presented here for completeness.\n\nThe idea here is to pass a list of items to your template, and have the\ntemplate output the commas in a :ttag:`for` loop.\n\nHere's an example, which generates the same CSV file as above::\n\n    from django.http import HttpResponse\n    from django.template import loader, Context\n\n    def some_view(request):\n        # Create the HttpResponse object with the appropriate CSV header.\n        response = HttpResponse(content_type='text/csv')\n        response['Content-Disposition'] = 'attachment; filename=\"somefilename.csv\"'\n\n        # The data is hard-coded here, but you could load it from a database or\n        # some other source.\n        csv_data = (\n            ('First row', 'Foo', 'Bar', 'Baz'),\n            ('Second row', 'A', 'B', 'C', '\"Testing\"', \"Here's a quote\"),\n        )\n\n        t = loader.get_template('my_template_name.txt')\n        c = Context({\n            'data': csv_data,\n        })\n        response.write(t.render(c))\n        return response\n\nThe only difference between this example and the previous example is that this\none uses template loading instead of the CSV module. The rest of the code --\nsuch as the ``content_type='text/csv'`` -- is the same.\n\nThen, create the template ``my_template_name.txt``, with this template code:\n\n.. code-block:: html+django\n\n    {% for row in data %}\"{{ row.0|addslashes }}\", \"{{ row.1|addslashes }}\", \"{{ row.2|addslashes }}\", \"{{ row.3|addslashes }}\", \"{{ row.4|addslashes }}\"\n    {% endfor %}\n\nThis template is quite basic. It just iterates over the given data and displays\na line of CSV for each row. It uses the :tfilter:`addslashes` template filter to\nensure there aren't any problems with quotes.\n\nOther text-based formats\n========================\n\nNotice that there isn't very much specific to CSV here -- just the specific\noutput format. You can use either of these techniques to output any text-based\nformat you can dream of. You can also use a similar technique to generate\narbitrary binary data; see :doc:`/howto/outputting-pdf` for an example.\n"
  },
  {
    "path": "Django-1.5.1/docs/howto/outputting-pdf.txt",
    "content": "===========================\nOutputting PDFs with Django\n===========================\n\nThis document explains how to output PDF files dynamically using Django views.\nThis is made possible by the excellent, open-source ReportLab_ Python PDF\nlibrary.\n\nThe advantage of generating PDF files dynamically is that you can create\ncustomized PDFs for different purposes -- say, for different users or different\npieces of content.\n\nFor example, Django was used at kusports.com_ to generate customized,\nprinter-friendly NCAA tournament brackets, as PDF files, for people\nparticipating in a March Madness contest.\n\n.. _ReportLab: http://www.reportlab.com/software/opensource/rl-toolkit/\n.. _kusports.com: http://www.kusports.com/\n\nInstall ReportLab\n=================\n\nDownload and install the ReportLab library from\nhttp://www.reportlab.com/software/opensource/rl-toolkit/download/.\nThe `user guide`_ (not coincidentally, a PDF file) explains how to install it.\nAlternatively, you can also install it with ``pip``:\n\n.. code-block:: bash\n\n    $ sudo pip install reportlab\n\nTest your installation by importing it in the Python interactive interpreter::\n\n    >>> import reportlab\n\nIf that command doesn't raise any errors, the installation worked.\n\n.. _user guide: http://www.reportlab.com/docs/reportlab-userguide.pdf\n\nWrite your view\n===============\n\nThe key to generating PDFs dynamically with Django is that the ReportLab API\nacts on file-like objects, and Django's :class:`~django.http.HttpResponse`\nobjects are file-like objects.\n\nHere's a \"Hello World\" example::\n\n    from reportlab.pdfgen import canvas\n    from django.http import HttpResponse\n\n    def some_view(request):\n        # Create the HttpResponse object with the appropriate PDF headers.\n        response = HttpResponse(content_type='application/pdf')\n        response['Content-Disposition'] = 'attachment; filename=\"somefilename.pdf\"'\n\n        # Create the PDF object, using the response object as its \"file.\"\n        p = canvas.Canvas(response)\n\n        # Draw things on the PDF. Here's where the PDF generation happens.\n        # See the ReportLab documentation for the full list of functionality.\n        p.drawString(100, 100, \"Hello world.\")\n\n        # Close the PDF object cleanly, and we're done.\n        p.showPage()\n        p.save()\n        return response\n\nThe code and comments should be self-explanatory, but a few things deserve a\nmention:\n\n* The response gets a special MIME type, :mimetype:`application/pdf`. This\n  tells browsers that the document is a PDF file, rather than an HTML file.\n  If you leave this off, browsers will probably interpret the output as\n  HTML, which would result in ugly, scary gobbledygook in the browser\n  window.\n\n* The response gets an additional ``Content-Disposition`` header, which\n  contains the name of the PDF file. This filename is arbitrary: Call it\n  whatever you want. It'll be used by browsers in the \"Save as...\"\n  dialogue, etc.\n\n* The ``Content-Disposition`` header starts with ``'attachment; '`` in this\n  example. This forces Web browsers to pop-up a dialog box\n  prompting/confirming how to handle the document even if a default is set\n  on the machine. If you leave off ``'attachment;'``, browsers will handle\n  the PDF using whatever program/plugin they've been configured to use for\n  PDFs. Here's what that code would look like::\n\n      response['Content-Disposition'] = 'filename=\"somefilename.pdf\"'\n\n* Hooking into the ReportLab API is easy: Just pass ``response`` as the\n  first argument to ``canvas.Canvas``. The ``Canvas`` class expects a\n  file-like object, and :class:`~django.http.HttpResponse` objects fit the\n  bill.\n\n* Note that all subsequent PDF-generation methods are called on the PDF\n  object (in this case, ``p``) -- not on ``response``.\n\n* Finally, it's important to call ``showPage()`` and ``save()`` on the PDF\n  file.\n\n.. note::\n\n    ReportLab is not thread-safe. Some of our users have reported odd issues\n    with building PDF-generating Django views that are accessed by many people\n    at the same time.\n\nComplex PDFs\n============\n\nIf you're creating a complex PDF document with ReportLab, consider using the\n:mod:`io` library as a temporary holding place for your PDF file. This\nlibrary provides a file-like object interface that is particularly efficient.\nHere's the above \"Hello World\" example rewritten to use :mod:`io`::\n\n    from io import BytesIO\n    from reportlab.pdfgen import canvas\n    from django.http import HttpResponse\n\n    def some_view(request):\n        # Create the HttpResponse object with the appropriate PDF headers.\n        response = HttpResponse(content_type='application/pdf')\n        response['Content-Disposition'] = 'attachment; filename=\"somefilename.pdf\"'\n\n        buffer = BytesIO()\n\n        # Create the PDF object, using the BytesIO object as its \"file.\"\n        p = canvas.Canvas(buffer)\n\n        # Draw things on the PDF. Here's where the PDF generation happens.\n        # See the ReportLab documentation for the full list of functionality.\n        p.drawString(100, 100, \"Hello world.\")\n\n        # Close the PDF object cleanly.\n        p.showPage()\n        p.save()\n\n        # Get the value of the BytesIO buffer and write it to the response.\n        pdf = buffer.getvalue()\n        buffer.close()\n        response.write(pdf)\n        return response\n\nFurther resources\n=================\n\n* PDFlib_ is another PDF-generation library that has Python bindings. To\n  use it with Django, just use the same concepts explained in this article.\n* `Pisa XHTML2PDF`_ is yet another PDF-generation library. Pisa ships with\n  an example of how to integrate Pisa with Django.\n* HTMLdoc_ is a command-line script that can convert HTML to PDF. It\n  doesn't have a Python interface, but you can escape out to the shell\n  using ``system`` or ``popen`` and retrieve the output in Python.\n\n.. _PDFlib: http://www.pdflib.org/\n.. _`Pisa XHTML2PDF`: http://www.xhtml2pdf.com/\n.. _HTMLdoc: http://www.htmldoc.org/\n\nOther formats\n=============\n\nNotice that there isn't a lot in these examples that's PDF-specific -- just the\nbits using ``reportlab``. You can use a similar technique to generate any\narbitrary format that you can find a Python library for. Also see\n:doc:`/howto/outputting-csv` for another example and some techniques you can use\nwhen generated text-based formats.\n"
  },
  {
    "path": "Django-1.5.1/docs/howto/static-files.txt",
    "content": "=====================\nManaging static files\n=====================\n\nDjango developers mostly concern themselves with the dynamic parts of web\napplications -- the views and templates that render anew for each request. But\nweb applications have other parts: the static files (images, CSS,\nJavascript, etc.) that are needed to render a complete web page.\n\nFor small projects, this isn't a big deal, because you can just keep the\nstatic files somewhere your web server can find it. However, in bigger\nprojects -- especially those comprised of multiple apps -- dealing with the\nmultiple sets of static files provided by each application starts to get\ntricky.\n\nThat's what ``django.contrib.staticfiles`` is for: it collects static files\nfrom each of your applications (and any other places you specify) into a\nsingle location that can easily be served in production.\n\n.. note::\n\n    If you've used the `django-staticfiles`_ third-party app before, then\n    ``django.contrib.staticfiles`` will look very familiar. That's because\n    they're essentially the same code: ``django.contrib.staticfiles`` started\n    its life as `django-staticfiles`_ and was merged into Django 1.3.\n\n    If you're upgrading from ``django-staticfiles``, please see `Upgrading from\n    django-staticfiles`_, below, for a few minor changes you'll need to make.\n\n.. _django-staticfiles: http://pypi.python.org/pypi/django-staticfiles/\n\nUsing ``django.contrib.staticfiles``\n====================================\n\nBasic usage\n-----------\n\n1. Put your static files somewhere that ``staticfiles`` will find them.\n\n   By default, this means within ``static/`` subdirectories of apps in your\n   :setting:`INSTALLED_APPS`.\n\n   Your project will probably also have static assets that aren't tied to a\n   particular app. The :setting:`STATICFILES_DIRS` setting is a tuple of\n   filesystem directories to check when loading static files. It's a search\n   path that is by default empty. See the :setting:`STATICFILES_DIRS` docs\n   how to extend this list of additional paths.\n\n   Additionally, see the documentation for the :setting:`STATICFILES_FINDERS`\n   setting for details on how ``staticfiles`` finds your files.\n\n2. Make sure that ``django.contrib.staticfiles`` is included in your\n   :setting:`INSTALLED_APPS`.\n\n   For :ref:`local development<staticfiles-development>`, if you are using\n   :ref:`runserver<staticfiles-runserver>` or adding\n   :ref:`staticfiles_urlpatterns<staticfiles-development>` to your\n   URLconf, you're done with the setup -- your static files will\n   automatically be served at the default (for\n   :djadmin:`newly created<startproject>` projects) :setting:`STATIC_URL`\n   of ``/static/``.\n\n3. You'll probably need to refer to these files in your templates. The\n   easiest method is to use the included context processor which allows\n   template code like:\n\n   .. code-block:: html+django\n\n       <img src=\"{{ STATIC_URL }}images/hi.jpg\" alt=\"Hi!\" />\n\n   See :ref:`staticfiles-in-templates` for more details, **including** an\n   alternate method using a template tag.\n\nDeploying static files in a nutshell\n------------------------------------\n\nWhen you're ready to move out of local development and deploy your project:\n\n1. Set the :setting:`STATIC_URL` setting to the public URL for your static\n   files (in most cases, the default value of ``/static/`` is just fine).\n\n2. Set the :setting:`STATIC_ROOT` setting to point to the filesystem path\n   you'd like your static files collected to when you use the\n   :djadmin:`collectstatic` management command. For example::\n\n       STATIC_ROOT = \"/home/jacob/projects/mysite.com/sitestatic\"\n\n3. Run the :djadmin:`collectstatic` management command::\n\n       ./manage.py collectstatic\n\n   This'll churn through your static file storage and copy them into the\n   directory given by :setting:`STATIC_ROOT`.\n\n4. Deploy those files by configuring your webserver of choice to serve the\n   files in :setting:`STATIC_ROOT` at :setting:`STATIC_URL`.\n\n   :ref:`staticfiles-production` covers some common deployment strategies\n   for static files.\n\nThose are the **basics**. For more details on common configuration options,\nread on; for a detailed reference of the settings, commands, and other bits\nincluded with the framework see\n:doc:`the staticfiles reference </ref/contrib/staticfiles>`.\n\n.. note::\n\n   In previous versions of Django, it was common to place static assets in\n   :setting:`MEDIA_ROOT` along with user-uploaded files, and serve them both\n   at :setting:`MEDIA_URL`. Part of the purpose of introducing the\n   ``staticfiles`` app is to make it easier to keep static files separate\n   from user-uploaded files.\n\n   For this reason, you need to make your :setting:`MEDIA_ROOT` and\n   :setting:`MEDIA_URL` different from your :setting:`STATIC_ROOT` and\n   :setting:`STATIC_URL`. You will need to arrange for serving of files in\n   :setting:`MEDIA_ROOT` yourself; ``staticfiles`` does not deal with\n   user-uploaded files at all. You can, however, use\n   :func:`django.views.static.serve` view for serving :setting:`MEDIA_ROOT`\n   in development; see :ref:`staticfiles-other-directories`.\n\n.. _staticfiles-in-templates:\n\nReferring to static files in templates\n======================================\n\nAt some point, you'll probably need to link to static files in your templates.\nYou could, of course, simply hardcode the path to you assets in the templates:\n\n.. code-block:: html\n\n    <img src=\"http://static.example.com/static/myimage.jpg\" alt=\"Sample image\" />\n\nOf course, there are some serious problems with this: it doesn't work well in\ndevelopment, and it makes it *very* hard to change where you've deployed your\nstatic files. If, for example, you wanted to switch to using a content\ndelivery network (CDN), then you'd need to change more or less every single\ntemplate.\n\nA far better way is to use the value of the :setting:`STATIC_URL` setting\ndirectly in your templates. This means that a switch of static files servers\nonly requires changing that single value. Much better!\n\nDjango includes multiple built-in ways of using this setting in your\ntemplates: a context processor and a template tag.\n\nWith a context processor\n------------------------\n\nThe included context processor is the easy way. Simply make sure\n``'django.core.context_processors.static'`` is in your\n:setting:`TEMPLATE_CONTEXT_PROCESSORS`. It's there by default, and if you're\nediting that setting by hand it should look something like::\n\n    TEMPLATE_CONTEXT_PROCESSORS = (\n        'django.core.context_processors.debug',\n        'django.core.context_processors.i18n',\n        'django.core.context_processors.media',\n        'django.core.context_processors.static',\n        'django.contrib.auth.context_processors.auth',\n        'django.contrib.messages.context_processors.messages',\n    )\n\nOnce that's done, you can refer to :setting:`STATIC_URL` in your templates:\n\n.. code-block:: html+django\n\n     <img src=\"{{ STATIC_URL }}images/hi.jpg\" alt=\"Hi!\" />\n\nIf ``{{ STATIC_URL }}`` isn't working in your template, you're probably not\nusing :class:`~django.template.RequestContext` when rendering the template.\n\nAs a brief refresher, context processors add variables into the contexts of\nevery template. However, context processors require that you use\n:class:`~django.template.RequestContext` when rendering templates. This happens\nautomatically if you're using a :doc:`generic view </ref/class-based-views/index>`,\nbut in views written by hand you'll need to explicitly use ``RequestContext``\nTo see how that works, and to read more details, check out\n:ref:`subclassing-context-requestcontext`.\n\nAnother option is the :ttag:`get_static_prefix` template tag that is part of\nDjango's core.\n\nWith a template tag\n-------------------\n\nThe more powerful tool is the :ttag:`static<staticfiles-static>` template\ntag. It builds the URL for the given relative path by using the configured\n:setting:`STATICFILES_STORAGE` storage.\n\n.. code-block:: html+django\n\n    {% load staticfiles %}\n    <img src=\"{% static \"images/hi.jpg\" %}\" alt=\"Hi!\"/>\n\nIt is also able to consume standard context variables, e.g. assuming a\n``user_stylesheet`` variable is passed to the template:\n\n.. code-block:: html+django\n\n    {% load staticfiles %}\n    <link rel=\"stylesheet\" href=\"{% static user_stylesheet %}\" type=\"text/css\" media=\"screen\" />\n\n.. note::\n\n    There is also a template tag named :ttag:`static` in Django's core set\n    of :ref:`built in template tags<ref-templates-builtins-tags>` which has\n    the same argument signature but only uses `urlparse.urljoin()`_ with the\n    :setting:`STATIC_URL` setting and the given path. This has the\n    disadvantage of not being able to easily switch the storage backend\n    without changing the templates, so in doubt use the ``staticfiles``\n    :ttag:`static<staticfiles-static>`\n    template tag.\n\n.. _`urlparse.urljoin()`: http://docs.python.org/library/urlparse.html#urlparse.urljoin\n\n.. _staticfiles-development:\n\nServing static files in development\n===================================\n\nThe static files tools are mostly designed to help with getting static files\nsuccessfully deployed into production. This usually means a separate,\ndedicated static file server, which is a lot of overhead to mess with when\ndeveloping locally. Thus, the ``staticfiles`` app ships with a\n**quick and dirty helper view** that you can use to serve files locally in\ndevelopment.\n\nThis view is automatically enabled and will serve your static files at\n:setting:`STATIC_URL` when you use the built-in\n:ref:`runserver<staticfiles-runserver>` management command.\n\nTo enable this view if you are using some other server for local development,\nyou'll add a couple of lines to your URLconf. The first line goes at the top\nof the file, and the last line at the bottom::\n\n    from django.contrib.staticfiles.urls import staticfiles_urlpatterns\n\n    # ... the rest of your URLconf goes here ...\n\n    urlpatterns += staticfiles_urlpatterns()\n\nThis will inspect your :setting:`STATIC_URL` setting and wire up the view\nto serve static files accordingly. Don't forget to set the\n:setting:`STATICFILES_DIRS` setting appropriately to let\n``django.contrib.staticfiles`` know where to look for files additionally to\nfiles in app directories.\n\n.. warning::\n\n    This will only work if :setting:`DEBUG` is ``True``.\n\n    That's because this view is **grossly inefficient** and probably\n    **insecure**. This is only intended for local development, and should\n    **never be used in production**.\n\n    Additionally, when using ``staticfiles_urlpatterns`` your\n    :setting:`STATIC_URL` setting can't be empty or a full URL, such as\n    ``http://static.example.com/``.\n\nFor a few more details on how the ``staticfiles`` can be used during\ndevelopment, see :ref:`staticfiles-development-view`.\n\n.. _staticfiles-other-directories:\n\nServing other directories\n-------------------------\n\n.. currentmodule:: django.views.static\n.. function:: serve(request, path, document_root, show_indexes=False)\n\nThere may be files other than your project's static assets that, for\nconvenience, you'd like to have Django serve for you in local development.\nThe :func:`~django.views.static.serve` view can be used to serve any directory\nyou give it. (Again, this view is **not** hardened for production\nuse, and should be used only as a development aid; you should serve these files\nin production using a real front-end webserver).\n\nThe most likely example is user-uploaded content in :setting:`MEDIA_ROOT`.\n``staticfiles`` is intended for static assets and has no built-in handling\nfor user-uploaded files, but you can have Django serve your\n:setting:`MEDIA_ROOT` by appending something like this to your URLconf::\n\n    from django.conf import settings\n\n    # ... the rest of your URLconf goes here ...\n\n    if settings.DEBUG:\n        urlpatterns += patterns('',\n            url(r'^media/(?P<path>.*)$', 'django.views.static.serve', {\n                'document_root': settings.MEDIA_ROOT,\n            }),\n       )\n\nNote, the snippet assumes your :setting:`MEDIA_URL` has a value of\n``'/media/'``. This will call the :func:`~django.views.static.serve` view,\npassing in the path from the URLconf and the (required) ``document_root``\nparameter.\n\n.. currentmodule:: django.conf.urls.static\n.. function:: static(prefix, view='django.views.static.serve', **kwargs)\n\nSince it can become a bit cumbersome to define this URL pattern, Django\nships with a small URL helper function\n:func:`~django.conf.urls.static.static` that takes as parameters the prefix\nsuch as :setting:`MEDIA_URL` and a dotted path to a view, such as\n``'django.views.static.serve'``. Any other function parameter will be\ntransparently passed to the view.\n\nAn example for serving :setting:`MEDIA_URL` (``'/media/'``) during\ndevelopment::\n\n    from django.conf import settings\n    from django.conf.urls.static import static\n\n    urlpatterns = patterns('',\n        # ... the rest of your URLconf goes here ...\n    ) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)\n\n.. note::\n\n    This helper function will only be operational in debug mode and if\n    the given prefix is local (e.g. ``/static/``) and not a URL (e.g.\n    ``http://static.example.com/``).\n\n.. _staticfiles-production:\n\nServing static files in production\n==================================\n\nThe basic outline of putting static files into production is simple: run the\n:djadmin:`collectstatic` command when static files change, then arrange for\nthe collected static files directory (:setting:`STATIC_ROOT`) to be moved to\nthe static file server and served.\n\nOf course, as with all deployment tasks, the devil's in the details. Every\nproduction setup will be a bit different, so you'll need to adapt the basic\noutline to fit your needs. Below are a few common patterns that might help.\n\nServing the app and your static files from the same server\n----------------------------------------------------------\n\nIf you want to serve your static files from the same server that's already\nserving your site, the basic outline gets modified to look something like:\n\n* Push your code up to the deployment server.\n* On the server, run :djadmin:`collectstatic` to copy all the static files\n  into :setting:`STATIC_ROOT`.\n* Point your web server at :setting:`STATIC_ROOT`. For example, here's\n  :ref:`how to do this under Apache and mod_wsgi <serving-files>`.\n\nYou'll probably want to automate this process, especially if you've got\nmultiple web servers. There's any number of ways to do this automation, but\none option that many Django developers enjoy is `Fabric`__.\n\n__ http://fabfile.org/\n\nBelow, and in the following sections, we'll show off a few example fabfiles\n(i.e. Fabric scripts) that automate these file deployment options. The syntax\nof a fabfile is fairly straightforward but won't be covered here; consult\n`Fabric's documentation`__, for a complete explanation of the syntax..\n\n__ http://docs.fabfile.org/\n\nSo, a fabfile to deploy static files to a couple of web servers might look\nsomething like::\n\n    from fabric.api import *\n\n    # Hosts to deploy onto\n    env.hosts = ['www1.example.com', 'www2.example.com']\n\n    # Where your project code lives on the server\n    env.project_root = '/home/www/myproject'\n\n    def deploy_static():\n        with cd(env.project_root):\n            run('./manage.py collectstatic -v0 --noinput')\n\nServing static files from a dedicated server\n--------------------------------------------\n\nMost larger Django apps use a separate Web server -- i.e., one that's not also\nrunning Django -- for serving static files. This server often runs a different\ntype of web server -- faster but less full-featured. Some good choices are:\n\n* lighttpd_\n* Nginx_\n* TUX_\n* Cherokee_\n* A stripped-down version of Apache_\n\n.. _lighttpd: http://www.lighttpd.net/\n.. _Nginx: http://wiki.nginx.org/Main\n.. _TUX: http://en.wikipedia.org/wiki/TUX_web_server\n.. _Apache: http://httpd.apache.org/\n.. _Cherokee: http://www.cherokee-project.com/\n\nConfiguring these servers is out of scope of this document; check each\nserver's respective documentation for instructions.\n\nSince your static file server won't be running Django, you'll need to modify\nthe deployment strategy to look something like:\n\n* When your static files change, run :djadmin:`collectstatic` locally.\n* Push your local :setting:`STATIC_ROOT` up to the static file server\n  into the directory that's being served. ``rsync`` is a good\n  choice for this step since it only needs to transfer the\n  bits of static files that have changed.\n\nHere's how this might look in a fabfile::\n\n    from fabric.api import *\n    from fabric.contrib import project\n\n    # Where the static files get collected locally\n    env.local_static_root = '/tmp/static'\n\n    # Where the static files should go remotely\n    env.remote_static_root = '/home/www/static.example.com'\n\n    @roles('static')\n    def deploy_static():\n        local('./manage.py collectstatic')\n        project.rsync_project(\n            remote_dir = env.remote_static_root,\n            local_dir = env.local_static_root,\n            delete = True\n        )\n\n.. _staticfiles-from-cdn:\n\nServing static files from a cloud service or CDN\n------------------------------------------------\n\nAnother common tactic is to serve static files from a cloud storage provider\nlike Amazon's S3__ and/or a CDN (content delivery network). This lets you\nignore the problems of serving static files, and can often make for\nfaster-loading webpages (especially when using a CDN).\n\nWhen using these services, the basic workflow would look a bit like the above,\nexcept that instead of using ``rsync`` to transfer your static files to the\nserver you'd need to transfer the static files to the storage provider or CDN.\n\nThere's any number of ways you might do this, but if the provider has an API a\n:doc:`custom file storage backend </howto/custom-file-storage>` will make the\nprocess incredibly simple. If you've written or are using a 3rd party custom\nstorage backend, you can tell :djadmin:`collectstatic` to use it by setting\n:setting:`STATICFILES_STORAGE` to the storage engine.\n\nFor example, if you've written an S3 storage backend in\n``myproject.storage.S3Storage`` you could use it with::\n\n    STATICFILES_STORAGE = 'myproject.storage.S3Storage'\n\nOnce that's done, all you have to do is run :djadmin:`collectstatic` and your\nstatic files would be pushed through your storage package up to S3. If you\nlater needed to switch to a different storage provider, it could be as simple\nas changing your :setting:`STATICFILES_STORAGE` setting.\n\nFor details on how you'd write one of these backends,\n:doc:`/howto/custom-file-storage`.\n\n.. seealso::\n\n    The `django-storages`__ project is a 3rd party app that provides many\n    storage backends for many common file storage APIs (including `S3`__).\n\n__ http://s3.amazonaws.com/\n__ http://code.larlet.fr/django-storages/\n__ http://django-storages.readthedocs.org/en/latest/backends/amazon-S3.html\n\nUpgrading from ``django-staticfiles``\n=====================================\n\n``django.contrib.staticfiles`` began its life as `django-staticfiles`_. If\nyou're upgrading from `django-staticfiles`_ older than 1.0 (e.g. 0.3.4) to\n``django.contrib.staticfiles``, you'll need to make a few changes:\n\n* Application files should now live in a ``static`` directory in each app\n  (`django-staticfiles`_ used the name ``media``, which was slightly\n  confusing).\n\n* The management commands ``build_static`` and ``resolve_static`` are now\n  called :djadmin:`collectstatic` and :djadmin:`findstatic`.\n\n* The settings ``STATICFILES_PREPEND_LABEL_APPS``,\n  ``STATICFILES_MEDIA_DIRNAMES`` and ``STATICFILES_EXCLUDED_APPS`` were\n  removed.\n\n* The setting ``STATICFILES_RESOLVERS`` was removed, and replaced by the\n  new :setting:`STATICFILES_FINDERS`.\n\n* The default for :setting:`STATICFILES_STORAGE` was renamed from\n  ``staticfiles.storage.StaticFileStorage`` to\n  ``staticfiles.storage.StaticFilesStorage``\n\n* If using :ref:`runserver<staticfiles-runserver>` for local development\n  (and the :setting:`DEBUG` setting is ``True``), you no longer need to add\n  anything to your URLconf for serving static files in development.\n\nLearn more\n==========\n\nThis document has covered the basics and some common usage patterns. For\ncomplete details on all the settings, commands, template tags, and other pieces\ninclude in ``django.contrib.staticfiles``, see :doc:`the staticfiles reference\n</ref/contrib/staticfiles>`.\n"
  },
  {
    "path": "Django-1.5.1/docs/index.txt",
    "content": "\n.. _index:\n\n====================\nDjango documentation\n====================\n\n.. rubric:: Everything you need to know about Django.\n\nGetting help\n============\n\nHaving trouble? We'd like to help!\n\n* Try the :doc:`FAQ <faq/index>` -- it's got answers to many common questions.\n\n* Looking for specific information? Try the :ref:`genindex`, :ref:`modindex` or\n  the :doc:`detailed table of contents <contents>`.\n\n* Search for information in the `archives of the django-users mailing list`_, or\n  `post a question`_.\n\n* Ask a question in the `#django IRC channel`_, or search the `IRC logs`_ to see\n  if it's been asked before.\n\n* Report bugs with Django in our `ticket tracker`_.\n\n.. _archives of the django-users mailing list: http://groups.google.com/group/django-users/\n.. _post a question: http://groups.google.com/group/django-users/\n.. _#django IRC channel: irc://irc.freenode.net/django\n.. _IRC logs: http://django-irc-logs.com/\n.. _ticket tracker: https://code.djangoproject.com/\n\nFirst steps\n===========\n\nAre you new to Django or to programming? This is the place to start!\n\n* **From scratch:**\n  :doc:`Overview <intro/overview>` |\n  :doc:`Installation <intro/install>`\n\n* **Tutorial:**\n  :doc:`Part 1 <intro/tutorial01>` |\n  :doc:`Part 2 <intro/tutorial02>` |\n  :doc:`Part 3 <intro/tutorial03>` |\n  :doc:`Part 4 <intro/tutorial04>` |\n  :doc:`Part 5 <intro/tutorial05>`\n\n* **Advanced Tutorials:**\n  :doc:`How to write reusable apps <intro/reusable-apps>` |\n  :doc:`Writing your first patch for Django <intro/contributing>`\n\nThe model layer\n===============\n\nDjango provides an abstraction layer (the \"models\") for structuring and\nmanipulating the data of your Web application. Learn more about it below:\n\n* **Models:**\n  :doc:`Model syntax <topics/db/models>` |\n  :doc:`Field types <ref/models/fields>` |\n  :doc:`Meta options <ref/models/options>`\n\n* **QuerySets:**\n  :doc:`Executing queries <topics/db/queries>` |\n  :doc:`QuerySet method reference <ref/models/querysets>`\n\n* **Model instances:**\n  :doc:`Instance methods <ref/models/instances>` |\n  :doc:`Accessing related objects <ref/models/relations>`\n\n* **Advanced:**\n  :doc:`Managers <topics/db/managers>` |\n  :doc:`Raw SQL <topics/db/sql>` |\n  :doc:`Transactions <topics/db/transactions>` |\n  :doc:`Aggregation <topics/db/aggregation>` |\n  :doc:`Custom fields <howto/custom-model-fields>` |\n  :doc:`Multiple databases <topics/db/multi-db>`\n\n* **Other:**\n  :doc:`Supported databases <ref/databases>` |\n  :doc:`Legacy databases <howto/legacy-databases>` |\n  :doc:`Providing initial data <howto/initial-data>` |\n  :doc:`Optimize database access <topics/db/optimization>`\n\nThe view layer\n==============\n\nDjango has the concept of \"views\" to encapsulate the logic responsible for\nprocessing a user's request and for returning the response. Find all you need\nto know about views via the links below:\n\n* **The basics:**\n  :doc:`URLconfs <topics/http/urls>` |\n  :doc:`View functions <topics/http/views>` |\n  :doc:`Shortcuts <topics/http/shortcuts>` |\n  :doc:`Decorators <topics/http/decorators>`\n\n* **Reference:**\n  :doc:`Request/response objects <ref/request-response>` |\n  :doc:`TemplateResponse objects <ref/template-response>`\n\n* **File uploads:**\n  :doc:`Overview <topics/http/file-uploads>` |\n  :doc:`File objects <ref/files/file>` |\n  :doc:`Storage API <ref/files/storage>` |\n  :doc:`Managing files <topics/files>` |\n  :doc:`Custom storage <howto/custom-file-storage>`\n\n* **Class-based views:**\n  :doc:`Overview <topics/class-based-views/index>` |\n  :doc:`Built-in display views <topics/class-based-views/generic-display>` |\n  :doc:`Built-in editing views <topics/class-based-views/generic-editing>` |\n  :doc:`Using mixins <topics/class-based-views/mixins>` |\n  :doc:`API reference <ref/class-based-views/index>` |\n  :doc:`Flattened index<ref/class-based-views/flattened-index>`\n\n* **Advanced:**\n  :doc:`Generating CSV <howto/outputting-csv>` |\n  :doc:`Generating PDF <howto/outputting-pdf>`\n\n* **Middleware:**\n  :doc:`Overview <topics/http/middleware>` |\n  :doc:`Built-in middleware classes <ref/middleware>`\n\nThe template layer\n==================\n\nThe template layer provides a designer-friendly syntax for rendering the\ninformation to be presented to the user. Learn how this syntax can be used by\ndesigners and how it can be extended by programmers:\n\n* **For designers:**\n  :doc:`Syntax overview <topics/templates>` |\n  :doc:`Built-in tags and filters <ref/templates/builtins>` |\n  :doc:`Web design helpers <ref/contrib/webdesign>` |\n  :doc:`Humanization <ref/contrib/humanize>`\n\n* **For programmers:**\n  :doc:`Template API <ref/templates/api>` |\n  :doc:`Custom tags and filters <howto/custom-template-tags>`\n\nForms\n=====\n\nDjango provides a rich framework to facilitate the creation of forms and the\nmanipulation of form data.\n\n* **The basics:**\n  :doc:`Overview <topics/forms/index>` |\n  :doc:`Form API <ref/forms/api>` |\n  :doc:`Built-in fields <ref/forms/fields>` |\n  :doc:`Built-in widgets <ref/forms/widgets>`\n\n* **Advanced:**\n  :doc:`Forms for models <topics/forms/modelforms>` |\n  :doc:`Integrating media <topics/forms/media>` |\n  :doc:`Formsets <topics/forms/formsets>` |\n  :doc:`Customizing validation <ref/forms/validation>`\n\n* **Extras:**\n  :doc:`Form preview <ref/contrib/formtools/form-preview>` |\n  :doc:`Form wizard <ref/contrib/formtools/form-wizard>`\n\nThe development process\n=======================\n\nLearn about the various components and tools to help you in the development and\ntesting of Django applications:\n\n* **Settings:**\n  :doc:`Overview <topics/settings>` |\n  :doc:`Full list of settings <ref/settings>`\n\n* **Exceptions:**\n  :doc:`Overview <ref/exceptions>`\n\n* **django-admin.py and manage.py:**\n  :doc:`Overview <ref/django-admin>` |\n  :doc:`Adding custom commands <howto/custom-management-commands>`\n\n* **Testing:**\n  :doc:`Introduction <topics/testing/index>` |\n  :doc:`Writing and running tests <topics/testing/overview>` |\n  :doc:`Advanced topics <topics/testing/advanced>` |\n  :doc:`Doctests <topics/testing/doctests>`\n\n* **Deployment:**\n  :doc:`Overview <howto/deployment/index>` |\n  :doc:`WSGI servers <howto/deployment/wsgi/index>` |\n  :doc:`FastCGI/SCGI/AJP <howto/deployment/fastcgi>` |\n  :doc:`Handling static files <howto/static-files>` |\n  :doc:`Tracking code errors by email <howto/error-reporting>`\n\nThe admin\n=========\n\nFind all you need to know about the automated admin interface, one of Django's\nmost popular features:\n\n* :doc:`Admin site <ref/contrib/admin/index>`\n* :doc:`Admin actions <ref/contrib/admin/actions>`\n* :doc:`Admin documentation generator<ref/contrib/admin/admindocs>`\n\nSecurity\n========\n\nSecurity is a topic of paramount importance in the development of Web\napplications and Django provides multiple protection tools and mechanisms:\n\n* :doc:`Security overview <topics/security>`\n* :doc:`Clickjacking protection <ref/clickjacking>`\n* :doc:`Cross Site Request Forgery protection <ref/contrib/csrf>`\n* :doc:`Cryptographic signing <topics/signing>`\n\nInternationalization and localization\n=====================================\n\nDjango offers a robust internationalization and localization framework to\nassist you in the development of applications for multiple languages and world\nregions:\n\n* :doc:`Overview <topics/i18n/index>` |\n  :doc:`Internationalization <topics/i18n/translation>` |\n  :ref:`Localization <how-to-create-language-files>`\n* :doc:`\"Local flavor\" <ref/contrib/localflavor>`\n* :doc:`Time zones </topics/i18n/timezones>`\n\nPython compatibility\n====================\n\nDjango aims to be compatible with multiple different flavors and versions of\nPython:\n\n* :doc:`Jython support <howto/jython>`\n* :doc:`Python 3 compatibility <topics/python3>`\n\nGeographic framework\n====================\n\n:doc:`GeoDjango <ref/contrib/gis/index>` intends to be a world-class geographic\nWeb framework. Its goal is to make it as easy as possible to build GIS Web\napplications and harness the power of spatially enabled data.\n\nCommon Web application tools\n============================\n\nDjango offers multiple tools commonly needed in the development of Web\napplications:\n\n* :doc:`Authentication <topics/auth/index>`\n* :doc:`Caching <topics/cache>`\n* :doc:`Logging <topics/logging>`\n* :doc:`Sending emails <topics/email>`\n* :doc:`Syndication feeds (RSS/Atom) <ref/contrib/syndication>`\n* :doc:`Comments <ref/contrib/comments/index>`, :doc:`comment moderation <ref/contrib/comments/moderation>` and :doc:`custom comments <ref/contrib/comments/custom>`\n* :doc:`Pagination <topics/pagination>`\n* :doc:`Messages framework <ref/contrib/messages>`\n* :doc:`Serialization <topics/serialization>`\n* :doc:`Sessions <topics/http/sessions>`\n* :doc:`Sitemaps <ref/contrib/sitemaps>`\n* :doc:`Static files management <ref/contrib/staticfiles>`\n* :doc:`Data validation <ref/validators>`\n\nOther core functionalities\n==========================\n\nLearn about some other core functionalities of the Django framework:\n\n* :doc:`Conditional content processing <topics/conditional-view-processing>`\n* :doc:`Content types and generic relations <ref/contrib/contenttypes>`\n* :doc:`Databrowse <ref/contrib/databrowse>`\n* :doc:`Flatpages <ref/contrib/flatpages>`\n* :doc:`Redirects <ref/contrib/redirects>`\n* :doc:`Signals <topics/signals>`\n* :doc:`The sites framework <ref/contrib/sites>`\n* :doc:`Unicode in Django <ref/unicode>`\n\nThe Django open-source project\n==============================\n\nLearn about the development process for the Django project itself and about how\nyou can contribute:\n\n* **Community:**\n  :doc:`How to get involved <internals/contributing/index>` |\n  :doc:`The release process <internals/release-process>` |\n  :doc:`Team of committers <internals/committers>` |\n  :doc:`The Django source code repository <internals/git>` |\n  :doc:`Security policies <internals/security>`\n\n* **Design philosophies:**\n  :doc:`Overview <misc/design-philosophies>`\n\n* **Documentation:**\n  :doc:`About this documentation <internals/contributing/writing-documentation>`\n\n* **Third-party distributions:**\n  :doc:`Overview <misc/distributions>`\n\n* **Django over time:**\n  :doc:`API stability <misc/api-stability>` |\n  :doc:`Release notes and upgrading instructions <releases/index>` |\n  :doc:`Deprecation Timeline <internals/deprecation>`\n"
  },
  {
    "path": "Django-1.5.1/docs/internals/committers.txt",
    "content": "=================\nDjango committers\n=================\n\nThe original team\n=================\n\nDjango originally started at World Online, the Web department of the `Lawrence\nJournal-World`_ of Lawrence, Kansas, USA.\n\n`Adrian Holovaty`_\n    Adrian is a Web developer with a background in journalism. He's known in\n    journalism circles as one of the pioneers of \"journalism via computer\n    programming\", and in technical circles as \"the guy who invented Django.\"\n\n    He was lead developer at World Online for 2.5 years, during which time\n    Django was developed and implemented on World Online's sites. He's now the\n    leader and founder of EveryBlock_, a \"news feed for your block\".\n\n    Adrian lives in Chicago, USA.\n\n`Simon Willison`_\n    Simon is a well-respected Web developer from England. He had a one-year\n    internship at World Online, during which time he and Adrian developed Django\n    from scratch. The most enthusiastic Brit you'll ever meet, he's passionate\n    about best practices in Web development and maintains a well-read\n    `web-development blog`_.\n\n    Simon lives in Brighton, England.\n\n`Jacob Kaplan-Moss`_\n    Jacob is a partner at `Revolution Systems`_ which provides support services\n    around Django and related open source technologies. A good deal of Jacob's\n    work time is devoted to working on Django. Jacob previously worked at World\n    Online, where Django was invented, where he was the lead developer of\n    Ellington, a commercial Web publishing platform for media companies.\n\n    Jacob lives in Lawrence, Kansas, USA.\n\n`Wilson Miner`_\n    Wilson's design-fu is what makes Django look so nice. He designed the\n    Web site you're looking at right now, as well as Django's acclaimed admin\n    interface. Wilson is the designer for EveryBlock_.\n\n    Wilson lives in San Francisco, USA.\n\n.. _lawrence journal-world: http://ljworld.com/\n.. _adrian holovaty: http://holovaty.com/\n.. _everyblock: http://everyblock.com/\n.. _simon willison: http://simonwillison.net/\n.. _web-development blog: `simon willison`_\n.. _jacob kaplan-moss: http://jacobian.org/\n.. _revolution systems: http://revsys.com/\n.. _wilson miner: http://wilsonminer.com/\n\nCurrent developers\n==================\n\nCurrently, Django is led by a team of volunteers from around the globe.\n\n.. _django-bdfls:\n\nBDFLs\n-----\n\nAdrian and Jacob are the Co-`Benevolent Dictators for Life`_ of Django. When\n\"rough consensus and working code\" fails, they're the ones who make the tough\ndecisions.\n\n.. _Benevolent Dictators for Life: http://en.wikipedia.org/wiki/Benevolent_Dictator_For_Life\n\nCore developers\n---------------\n\nThese are the folks who have a long history of contributions, a solid track\nrecord of being helpful on the mailing lists, and a proven desire to dedicate\nserious time to Django. In return, they've been granted the coveted commit bit,\nand have free rein to hack on all parts of Django.\n\nMalcolm Tredinnick\n    Malcolm originally wanted to be a mathematician, somehow ended up a software\n    developer. He's contributed to many Open Source projects, has served on the\n    board of the GNOME foundation, and will kick your ass at chess.\n\n    When he's not busy being an International Man of Mystery, Malcolm lives in\n    Sydney, Australia.\n\n`Russell Keith-Magee`_\n    Russell studied physics as an undergraduate, and studied neural networks for\n    his PhD. His first job was with a startup in the defense industry developing\n    simulation frameworks. Over time, mostly through work with Django, he's\n    become more involved in Web development.\n\n    Russell has helped with several major aspects of Django, including a\n    couple major internal refactorings, creation of the test system, and more.\n\n    Russell lives in the most isolated capital city in the world — Perth,\n    Australia.\n\n.. _russell keith-magee: http://cecinestpasun.com/\n\nJoseph Kocherhans\n    Joseph is currently a developer at EveryBlock_, and previously worked for\n    the Lawrence Journal-World where he built most of the backend for their\n    Marketplace site. He often disappears for several days into the woods,\n    attempts to teach himself computational linguistics, and annoys his\n    neighbors with his Charango_ playing.\n\n    Joseph's first contribution to Django was a series of improvements to the\n    authorization system leading up to support for pluggable authorization.\n    Since then, he's worked on the new forms system, its use in the admin, and\n    many other smaller improvements.\n\n    Joseph lives in Chicago, USA.\n\n.. _charango: http://en.wikipedia.org/wiki/Charango\n\n`Luke Plant`_\n    At University Luke studied physics and Materials Science and also\n    met `Michael Meeks`_ who introduced him to Linux and Open Source,\n    re-igniting an interest in programming.  Since then he has\n    contributed to a number of Open Source projects and worked\n    professionally as a developer.\n\n    Luke has contributed many excellent improvements to Django,\n    including database-level improvements, the CSRF middleware and\n    many unit tests.\n\n    Luke currently works for a church in Bradford, UK, and part-time\n    as a freelance developer.\n\n.. _luke plant: http://lukeplant.me.uk/\n.. _michael meeks: http://en.wikipedia.org/wiki/Michael_Meeks_(software)\n\n`Brian Rosner`_\n    Brian is currently the tech lead at Eldarion_ managing and developing\n    Django / Pinax_ based Web sites. He enjoys learning more about programming\n    languages and system architectures and contributing to open source\n    projects. Brian is the host of the `Django Dose`_ podcasts.\n\n    Brian helped immensely in getting Django's \"newforms-admin\" branch finished\n    in time for Django 1.0; he's now a full committer, continuing to improve on\n    the admin and forms system.\n\n    Brian lives in Denver, Colorado, USA.\n\n.. _brian rosner: http://brosner.com/\n.. _eldarion: http://eldarion.com/\n.. _django dose: http://djangodose.com/\n.. _pinax: http://pinaxproject.com/\n\n`Gary Wilson`_\n    Gary starting contributing patches to Django in 2006 while developing Web\n    applications for `The University of Texas`_ (UT).  Since, he has made\n    contributions to the email and forms systems, as well as many other\n    improvements and code cleanups throughout the code base.\n\n    Gary is currently a developer and software engineering graduate student at\n    UT, where his dedication to spreading the ways of Python and Django never\n    ceases.\n\n    Gary lives in Austin, Texas, USA.\n\n.. _Gary Wilson: http://thegarywilson.com/\n.. _The University of Texas: http://www.utexas.edu/\n\nJustin Bronn\n    Justin Bronn is a computer scientist and attorney specializing\n    in legal topics related to intellectual property and spatial law.\n\n    In 2007, Justin began developing ``django.contrib.gis`` in a branch,\n    a.k.a. GeoDjango_, which was merged in time for Django 1.0.  While\n    implementing GeoDjango, Justin obtained a deep knowledge of Django's\n    internals including the ORM, the admin, and Oracle support.\n\n    Justin lives in San Francisco, CA.\n\n.. _GeoDjango: http://geodjango.org/\n\nKaren Tracey\n    Karen has a background in distributed operating systems (graduate school),\n    communications software (industry) and crossword puzzle construction\n    (freelance).  The last of these brought her to Django, in late 2006, when\n    she set out to put a Web front-end on her crossword puzzle database.\n    That done, she stuck around in the community answering questions, debugging\n    problems, etc. -- because coding puzzles are as much fun as word puzzles.\n\n    Karen lives in Apex, NC, USA.\n\n`Jannis Leidel`_\n    Jannis graduated in media design from `Bauhaus-University Weimar`_,\n    is the author of a number of pluggable Django apps and likes to\n    contribute to Open Source projects like virtualenv_ and pip_.\n\n    He has worked on Django's auth, admin and staticfiles apps as well as\n    the form, core, internationalization and test systems. He currently works\n    as the lead engineer at Gidsy_.\n\n    Jannis lives in Berlin, Germany.\n\n.. _Jannis Leidel: http://jezdez.com/\n.. _Bauhaus-University Weimar: http://www.uni-weimar.de/\n.. _virtualenv: http://www.virtualenv.org/\n.. _pip: http://www.pip-installer.org/\n.. _Gidsy: http://gidsy.com/\n\n`James Tauber`_\n    James is the lead developer of Pinax_ and the CEO and founder of\n    Eldarion_. He has been doing open source software since 1993, Python\n    since 1998 and Django since 2006. He serves on the board of the Python\n    Software Foundation and is currently on a leave of absence from a PhD in\n    linguistics.\n\n    James currently lives in Boston, MA, USA but originally hails from\n    Perth, Western Australia where he attended the same high school as\n    Russell Keith-Magee.\n\n.. _James Tauber: http://jtauber.com/\n\n`Alex Gaynor`_\n    Alex is a software engineer working at Rdio_. He found Django in 2007 and\n    has been addicted ever since he found out you don't need to write out your\n    forms by hand. He has a small obsession with compilers.  He's contributed\n    to the ORM, forms, admin, and other components of Django.\n\n    Alex lives in San Francisco, CA, USA.\n\n.. _Alex Gaynor: http://alexgaynor.net\n.. _Rdio: http://rdio.com\n\n`Andrew Godwin`_\n    Andrew is a freelance Python developer and tinkerer, and has been\n    developing against Django since 2007. He graduated from Oxford University\n    with a degree in Computer Science, and has become most well known\n    in the Django community for his work on South, the schema migrations\n    library.\n\n    Andrew lives in London, UK.\n\n.. _Andrew Godwin: http://www.aeracode.org/\n\n`Carl Meyer`_\n    Carl has been working with Django since 2007 (long enough to remember\n    queryset-refactor, but not magic-removal), and works as a freelance\n    developer with OddBird_.  He became a Django contributor by accident,\n    because fixing bugs is more interesting than working around them.\n\n    Carl lives in Rapid City, SD, USA.\n\n.. _Carl Meyer: http://www.oddbird.net/\n.. _OddBird: http://www.oddbird.net/\n\nRamiro Morales\n    Ramiro has been reading Django source code and submitting patches since\n    mid-2006 after researching for a Python Web tool with matching awesomeness\n    and being pointed to it by an old ninja.\n\n    A software developer in the electronic transactions industry, he is a\n    living proof of the fact that anyone with enough enthusiasm can contribute\n    to Django, learning a lot and having fun in the process.\n\n    Ramiro lives in Córdoba, Argentina.\n\n`Chris Beaven`_\n    Chris has been submitting patches and suggesting crazy ideas for Django\n    since early 2006. An advocate for community involvement and a long-term\n    triager, he is still often found answering questions in the #django IRC\n    channel.\n\n    Chris lives in Napier, New Zealand (adding to the pool of Oceanic core\n    developers). He works remotely as a developer for `Lincoln Loop`_.\n\n.. _Chris Beaven: http://smileychris.com/\n.. _Lincoln Loop: http://lincolnloop.com/\n\nHonza Král\n    Honza first discovered Django in 2006 and started using it right away,\n    first for school and personal projects and later in his full time job. He\n    contributed various patches and fixes mostly to the newforms library,\n    newforms admin and, through participation in the Google Summer of Code\n    project, assisted in creating the :ref:`model validation\n    <validating-objects>` functionality.\n\n    He is currently working for `Whiskey Media`_ in San Francisco developing\n    awesome sites running on pure Django.\n\n.. _Whiskey Media: http://www.whiskeymedia.com/\n\n`Idan Gazit`_\n    As a self-professed design geek, Idan was initially attracted to Django\n    sometime between magic-removal and queryset-refactor. Formally trained\n    as a software engineer, Idan straddles the worlds of design and code,\n    jack of two trades and master of none. He is passionate about usability\n    and finding novel ways to extract meaning from data, and is a longtime\n    photographer_.\n\n    Idan previously accepted freelance work under the Pixane_ imprint, but\n    now splits his days between his startup, Skills_, and beautifying all\n    things Django and Python.\n\n.. _Idan Gazit: http://idan.gazit.me\n.. _photographer: http://flickr.com/photos/idangazit\n.. _Pixane: http://pixane.com\n.. _Skills: http://skillsapp.com\n\n`Paul McMillan`_\n    Paul found Django in 2008 while looking for a more\n    structured approach to web programming. He stuck around after\n    figuring out that the developers of Django had already invented\n    many of the wheels he needed. His passion for breaking (and then\n    fixing) things led to his current role working to maintain and\n    improve the security of Django.\n\n    Paul works in Berkeley, California as a `web developer`_ and `security\n    consultant`_.\n\n.. _Paul McMillan: http://subversivecode.com\n.. _web developer: http://zerocoordinate.com\n.. _security consultant: http://subversivecode.com/about\n\n`Julien Phalip`_\n    Julien has a background in software engineering and human-computer\n    interaction. As a Web developer, he enjoys tinkering with the backend as\n    much as designing and coding user interfaces. Julien discovered Django in\n    2007 while doing his PhD in Computing Sciences. Since then he has\n    contributed patches to various components of the framework, in particular\n    the admin. Julien was a co-founder of the `Interaction Consortium`_. He\n    now works at Odopod_, a digital agency based in San Francisco, CA, USA.\n\n.. _Julien Phalip: http://julienphalip.com\n.. _Interaction Consortium: http://interaction.net.au\n.. _Odopod: http://odopod.com\n\n`Aymeric Augustin`_\n    Aymeric is an engineer with a background in mathematics and computer\n    science. He chose Django because he believes that software should be simple,\n    explicit and tested. His perfectionist tendencies quickly led him to triage\n    tickets and contribute patches.\n\n    Aymeric has a pragmatic approach to software engineering, can't live without\n    a continuous integration server, and likes proving that Django is a good\n    choice for enterprise software.\n\n    He works in a `management consulting company`_ in Paris, France.\n\n.. _Aymeric Augustin: http://myks.org/\n.. _management consulting company: http://www.polyconseil.fr/\n\n`Claude Paroz`_\n    Claude is a former teacher who fell in love with free software at the\n    beginning of the 21st century. He's now working as freelancer in Web\n    development in his native Switzerland. He has found in Django a perfect\n    match for his needs of a stable, clean, documented and well-maintained Web\n    framework.\n\n    He's also helping the GNOME Translation Project as maintainer of the\n    Django-based `l10n.gnome.org`_.\n\n.. _Claude Paroz: http://www.2xlibre.net\n.. _l10n.gnome.org: http://l10n.gnome.org\n\nAnssi Kääriäinen\n    Anssi works as a developer at Finnish National Institute for Health and\n    Welfare. He is also a computer science student at Aalto University. In his\n    work he uses Django for developing internal business applications and sees\n    Django as a great match for that use case.\n\n    Anssi is interested in developing the object relational mapper (ORM) and\n    all related features. He's also a fan of benckmarking and he tries keep\n    Django as fast as possible.\n\nFlorian Apolloner\n    Florian is currently studying Physics at the `Graz University of Technology`_.\n    Soon after he started using Django he joined the `Ubuntuusers webteam`_ to\n    work on *Inyoka*, the software powering the whole Ubuntusers site.\n\n    For the time beeing he lives in Graz, Austria (not Australia ;)).\n\n.. _Graz University of Technology: http://tugraz.at/\n.. _Ubuntuusers webteam: http://wiki.ubuntuusers.de/ubuntuusers/Webteam\n\nJeremy Dunck\n    Jeremy was rescued from corporate IT drudgery by Free Software and, in part, \n    Django.  Many of Jeremy's interests center around access to information.\n\n    Jeremy was the lead developer of Pegasus News, one of the first uses of \n    Django outside World Online, and has since joined Votizen, a startup intent \n    on reducing the influence of money in politics.\n\n    He serves as DSF Secretary, organizes and helps organize sprints, cares \n    about the health and equity of the Django community.  He has gone an \n    embarrassingly long time without a working blog.\n    \n    Jeremy lives in Mountain View, CA, USA.\n\n`Bryan Veloso`_\n    Bryan found Django 0.96 through a fellow designer who was evangelizing\n    its use. It was his first foray outside of the land that was PHP-based\n    templating. Although he has only ever used Django for personal projects,\n    it is the very reason he considers himself a designer/developer\n    hybrid and is working to further design within the Django community.\n\n    Bryan works as a designer at GitHub by day, and masquerades as a `vlogger`_\n    and `shoutcaster`_ in the after-hours. Bryan lives in Los Angeles, CA, USA.\n\n.. _bryan veloso: http://avalonstar.com/\n.. _vlogger: http://youtube.com/bryanveloso/\n.. _shoutcaster: http://twitch.tv/vlogalonstar/\n\n`Preston Holmes`_\n    Preston is a recovering neuroscientist who originally discovered Django as\n    part of a sweeping move to Python from a grab bag of half a dozen\n    languages. He was drawn to Django's balance of practical batteries included\n    philosophy, care and thought in code design, and strong open source\n    community. In addition to his current job in private progressive education,\n    Preston contributes some developer time to local non-profits.\n\n    Preston lives with his family and animal menagerie in Santa Barbara, CA, USA.\n\n.. _Preston Holmes: http://www.ptone.com/\n\nSpecialists\n-----------\n\n`James Bennett`_\n    James is Django's release manager, and also contributes to the\n    documentation and provide the occasional bugfix.\n\n    James came to Web development from philosophy when he discovered\n    that programmers get to argue just as much while collecting much\n    better pay. He lives in Lawrence, Kansas and previously worked at\n    World Online; currently, he's part of the Web development team at\n    Mozilla.\n\n    He `keeps a blog`_, and enjoys fine port and talking to his car.\n\n.. _james bennett: http://b-list.org/\n.. _keeps a blog: `james bennett`_\n\nIan Kelly\n    Ian is responsible for Django's support for Oracle.\n\nMatt Boersma\n    Matt is also responsible for Django's Oracle support.\n\n`Simon Meers`_\n    Simon discovered Django 0.96 during his Computer Science PhD research and\n    has been developing with it full-time ever since. His core code\n    contributions are mostly in Django's admin application. He is also helping\n    to improve Django's documentation.\n\n    Simon works as a freelance developer based in Wollongong, Australia.\n\n.. _simon meers: http://simonmeers.com/\n\n`Gabriel Hurley`_\n    Gabriel has been working with Django since 2008, shortly after the 1.0\n    release. Convinced by his business partner that Python and Django were the\n    right direction for the company, he couldn't have been more happy with the\n    decision. His contributions range across many areas in Django, but years of\n    copy-editing and an eye for detail lead him to be particularly at home\n    while working on Django's documentation.\n\n    Gabriel works as a web developer in Berkeley, CA, USA.\n\n.. _gabriel hurley: http://strikeawe.com/\n\nTim Graham\n    When exploring Web frameworks for an independent study project in the fall\n    of 2008, Tim discovered Django and was lured to it by the documentation.\n    He enjoys contributing to the docs because they're awesome.\n\n    Tim works as a software engineer and lives in Philadelphia, PA, USA.\n\nDevelopers Emeritus\n===================\n\nGeorg \"Hugo\" Bauer\n    Georg created Django's internationalization system, managed i18n\n    contributions and made a ton of excellent tweaks, feature additions and bug\n    fixes.\n\nRobert Wittams\n    Robert was responsible for the *first* refactoring of Django's admin\n    application to allow for easier reuse and has made a ton of\n    excellent tweaks, feature additions and bug fixes.\n"
  },
  {
    "path": "Django-1.5.1/docs/internals/contributing/bugs-and-features.txt",
    "content": "======================================\nReporting bugs and requesting features\n======================================\n\n.. Important::\n\n    Please report security issues **only** to\n    security@djangoproject.com.  This is a private list only open to\n    long-time, highly trusted Django developers, and its archives are\n    not public. For further details, please see :doc:`our security\n    policies </internals/security>`.\n\n\nOtherwise, before reporting a bug or requesting a new feature, please consider these\ngeneral points:\n\n* Check that someone hasn't already filed the bug or feature request by\n  `searching`_ or running `custom queries`_ in the ticket tracker.\n\n* Don't use the ticket system to ask support questions. Use the\n  `django-users`_ list or the `#django`_ IRC channel for that.\n\n* Don't reopen issues that have been marked \"wontfix\" by a core developer.\n  This mark means that the decision has been made that we can't or won't fix\n  this particular issue. If you're not sure why, please ask\n  on `django-developers`_.\n\n* Don't use the ticket tracker for lengthy discussions, because they're\n  likely to get lost. If a particular ticket is controversial, please move the\n  discussion to `django-developers`_.\n\n.. _reporting-bugs:\n\nReporting bugs\n--------------\n\nWell-written bug reports are *incredibly* helpful. However, there's a certain\namount of overhead involved in working with any bug tracking system so your\nhelp in keeping our ticket tracker as useful as possible is appreciated. In\nparticular:\n\n* **Do** read the :doc:`FAQ </faq/index>` to see if your issue might\n  be a well-known question.\n\n* **Do** ask on `django-users`_ or `#django`_ *first* if you're not sure if\n  what you're seeing is a bug.\n\n* **Do** write complete, reproducible, specific bug reports. You must\n  include a clear, concise description of the problem, and a set of\n  instructions for replicating it. Add as much debug information as you can:\n  code snippets, test cases, exception backtraces, screenshots, etc. A nice\n  small test case is the best way to report a bug, as it gives us an easy\n  way to confirm the bug quickly.\n\n* **Don't** post to `django-developers`_ just to announce that you have\n  filed a bug report. All the tickets are mailed to another list,\n  `django-updates`_, which is tracked by developers and interested\n  community members; we see them as they are filed.\n\nTo understand the lifecycle of your ticket once you have created it, refer to\n:doc:`triaging-tickets`.\n\n.. _django-updates: http://groups.google.com/group/django-updates\n\nReporting user interface bugs and features\n------------------------------------------\n\nIf your bug or feature request touches on anything visual in nature, there\nare a few additional guidelines to follow:\n\n* Include screenshots in your ticket which are the visual equivalent of a\n  minimal testcase. Show off the issue, not the crazy customizations\n  you've made to your browser.\n\n* If the issue is difficult to show off using a still image, consider\n  capturing a *brief* screencast. If your software permits it, capture only\n  the relevant area of the screen.\n\n* If you're offering a patch which changes the look or behavior of Django's\n  UI, you **must** attach before *and* after screenshots/screencasts.\n  Tickets lacking these are difficult for triagers and core developers to\n  assess quickly.\n\n* Screenshots don't absolve you of other good reporting practices. Make sure\n  to include URLs, code snippets, and step-by-step instructions on how to\n  reproduce the behavior visible in the screenshots.\n\n* Make sure to set the UI/UX flag on the ticket so interested parties can\n  find your ticket.\n\nRequesting features\n-------------------\n\nWe're always trying to make Django better, and your feature requests are a key\npart of that. Here are some tips on how to make a request most effectively:\n\n* Make sure the feature actually requires changes in Django's core. If your\n  idea can be developed as an independent application or module — for\n  instance, you want to support another database engine — we'll probably\n  suggest that you to develop it independently. Then, if your project\n  gathers sufficient community support, we may consider it for inclusion in\n  Django.\n\n* First request the feature on the `django-developers`_ list, not in the\n  ticket tracker. It'll get read more closely if it's on the mailing list.\n  This is even more important for large-scale feature requests. We like to\n  discuss any big changes to Django's core on the mailing list before\n  actually working on them.\n\n* Describe clearly and concisely what the missing feature is and how you'd\n  like to see it implemented. Include example code (non-functional is OK)\n  if possible.\n\n* Explain *why* you'd like the feature. In some cases this is obvious, but\n  since Django is designed to help real developers get real work done,\n  you'll need to explain it, if it isn't obvious why the feature would be\n  useful.\n\nIf core developers agree on the feature, then it's appropriate to create a\nticket. Include a link the discussion on `django-developers`_ in the ticket\ndescription.\n\nAs with most open-source projects, code talks. If you are willing to write the\ncode for the feature yourself or, even better, if you've already written it,\nit's much more likely to be accepted. Just fork Django on GitHub, create a\nfeature branch, and show us your work!\n\nSee also: :ref:`documenting-new-features`.\n\n.. _how-we-make-decisions:\n\nHow we make decisions\n---------------------\n\nWhenever possible, we strive for a rough consensus. To that end, we'll often\nhave informal votes on `django-developers`_ about a feature. In these votes we\nfollow the voting style invented by Apache and used on Python itself, where\nvotes are given as +1, +0, -0, or -1. Roughly translated, these votes mean:\n\n* +1: \"I love the idea and I'm strongly committed to it.\"\n\n* +0: \"Sounds OK to me.\"\n\n* -0: \"I'm not thrilled, but I won't stand in the way.\"\n\n* -1: \"I strongly disagree and would be very unhappy to see the idea turn\n  into reality.\"\n\nAlthough these votes on `django-developers`_ are informal, they'll be taken very\nseriously. After a suitable voting period, if an obvious consensus arises we'll\nfollow the votes.\n\nHowever, consensus is not always possible. If consensus cannot be reached, or\nif the discussion towards a consensus fizzles out without a concrete decision,\nwe use a more formal process.\n\nAny :doc:`core committer</internals/committers>` may call for a formal vote\nusing the same voting mechanism above. A proposition will be considered carried\nby the core team if:\n\n* There are three \"+1\" votes from members of the core team.\n\n* There is no \"-1\" vote from any member of the core team.\n\n* The :ref:`BDFLs<django-bdfls>` haven't stepped in and executed their\n  positive or negative veto.\n\nWhen calling for a vote, the caller should specify a deadline by which\nvotes must be received. One week is generally suggested as the minimum\namount of time.\n\nSince this process allows any core committer to veto a proposal, any \"-1\"\nvotes (or BDFL vetos) should be accompanied by an explanation that explains\nwhat it would take to convert that \"-1\" into at least a \"+0\".\n\nWhenever possible, these formal votes should be announced and held in\npublic on the `django-developers`_ mailing list. However, overly sensitive\nor contentious issues -- including, most notably, votes on new core\ncommitters -- may be held in private.\n\n\n.. _searching: https://code.djangoproject.com/search\n.. _custom queries: https://code.djangoproject.com/query\n.. _django-developers: http://groups.google.com/group/django-developers\n.. _django-users: http://groups.google.com/group/django-users\n.. _#django: irc://irc.freenode.net/django\n"
  },
  {
    "path": "Django-1.5.1/docs/internals/contributing/committing-code.txt",
    "content": "===============\nCommitting code\n===============\n\nThis section is addressed to the :doc:`/internals/committers` and to anyone\ninterested in knowing how code gets committed into Django core. If you're a\ncommunity member who wants to contribute code to Django, have a look at\n:doc:`writing-code/working-with-git` instead.\n\nCommit access\n-------------\n\nDjango has two types of committers:\n\nCore committers\n    These are people who have a long history of contributions to Django's\n    codebase, a solid track record of being polite and helpful on the\n    mailing lists, and a proven desire to dedicate serious time to Django's\n    development. The bar is high for full commit access.\n\nPartial committers\n    These are people who are \"domain experts.\" They have direct check-in\n    access to the subsystems that fall under their jurisdiction, and they're\n    given a formal vote in questions that involve their subsystems. This type\n    of access is likely to be given to someone who contributes a large\n    sub-framework to Django and wants to continue to maintain it.\n\n    Partial commit access is granted by the same process as full\n    committers. However, the bar is set lower; proven expertise in the area\n    in question is likely to be sufficient.\n\nDecisions on new committers will follow the process explained in\n:ref:`how-we-make-decisions`. To request commit access, please contact an\nexisting committer privately. Public requests for commit access are potential\nflame-war starters, and will simply be ignored.\n\nHandling pull requests\n----------------------\n\nSince Django is now hosted at GitHub, many patches are provided in the form of\npull requests.\n\nWhen committing a pull request, make sure each individual commit matches the\ncommit guidelines described below. Contributors are expected to provide the\nbest pull requests possible. In practice however, committers - who will likely\nbe more familiar with the commit guidelines - may decide to bring a commit up\nto standard themselves.\n\nHere is one way to commit a pull request::\n\n    # Create a new branch tracking upstream/master -- upstream is assumed\n    # to be django/django.\n    git checkout -b pull_xxxxx upstream/master\n\n    # Download the patches from github and apply them.\n    curl https://github.com/django/django/pull/xxxxx.patch | git am\n\nAt this point, you can work on the code. Use ``git rebase -i`` and ``git\ncommit --amend`` to make sure the commits have the expected level of quality.\nOnce you're ready::\n\n    # Make sure master is ready to receive changes.\n    git checkout master\n    git pull upstream master\n    # Merge the work as \"fast-forward\" to master, to avoid a merge commit.\n    git merge --ff-only pull_xxxxx\n    # Check that only the changes you expect will be pushed to upstream.\n    git push --dry-run upstream master\n    # Push!\n    git push upstream master\n\n    # Get rid of the pull_xxxxx branch.\n    git branch -d pull_xxxxx\n\nAn alternative is to add the contributor's repository as a new remote,\ncheckout the branch and work from there::\n\n    git remote add <contributor> https://github.com/<contributor>/django.git\n    git checkout pull_xxxxx <contributor> <contributor's pull request branch>\n\nYet another alternative is to fetch the branch without adding the\ncontributor's repository as a remote::\n\n    git fetch https://github.com/<contributor>/django.git <contributor's pull request branch>\n    git checkout -b pull_xxxxx FETCH_HEAD\n\nAt this point, you can work on the code and continue as above.\n\nGitHub provides a one-click merge functionality for pull requests. This should\nonly be used if the pull request is 100% ready, and you have checked it for\nerrors (or trust the request maker enough to skip checks). Currently, it isn't\npossible to check that the tests pass and that the docs build without\ndownloading the changes to your development environment.\n\nWhen rewriting the commit history of a pull request, the goal is to make\nDjango's commit history as usable as possible:\n\n* If a patch contains back-and-forth commits, then rewrite those into one.\n  Typically, a commit can add some code, and a second commit can fix\n  stylistic issues introduced in the first commit.\n\n* Separate changes to different commits by logical grouping: if you do a\n  stylistic cleanup at the same time as you do other changes to a file,\n  separating the changes into two different commits will make reviewing\n  history easier.\n\n* Beware of merges of upstream branches in the pull requests.\n\n* Tests should pass and docs should build after each commit. Neither the\n  tests nor the docs should emit warnings.\n\n* Trivial and small patches usually are best done in one commit. Medium to\n  large work should be split into multiple commits if possible.\n\nPracticality beats purity, so it is up to each committer to decide how much\nhistory mangling to do for a pull request. The main points are engaging the\ncommunity, getting work done, and having a usable commit history.\n\n.. _committing-guidelines:\n\nCommitting guidelines\n---------------------\n\nIn addition, please follow the following guidelines when committing code to\nDjango's Git repository:\n\n* Never change the published history of django/django branches! **Never force-\n  push your changes to django/django.** If you absolutely must (for security\n  reasons for example) first discuss the situation with the core team.\n\n* For any medium-to-big changes, where \"medium-to-big\" is according to\n  your judgment, please bring things up on the `django-developers`_\n  mailing list before making the change.\n\n  If you bring something up on `django-developers`_ and nobody responds,\n  please don't take that to mean your idea is great and should be\n  implemented immediately because nobody contested it. Django's lead\n  developers don't have a lot of time to read mailing-list discussions\n  immediately, so you may have to wait a couple of days before getting a\n  response.\n\n* Write detailed commit messages in the past tense, not present tense.\n\n  * Good: \"Fixed Unicode bug in RSS API.\"\n  * Bad: \"Fixes Unicode bug in RSS API.\"\n  * Bad: \"Fixing Unicode bug in RSS API.\"\n\n  The commit message should be in lines of 72 chars maximum. There should be\n  a subject line, separated by a blank line and then paragraphs of 72 char\n  lines. The limits are soft. For the subject line, shorter is better. In the\n  body of the commit message more detail is better than less::\n\n      Fixed #18307 -- Added git workflow guidelines\n\n      Refactored the Django's documentation to remove mentions of SVN\n      specific tasks. Added guidelines of how to use Git, GitHub, and\n      how to use pull request together with Trac instead.\n\n  If the patch wasn't a pull request, you should credit the contributors in\n  the commit message: \"Thanks A for report, B for the patch and C for the\n  review.\"\n\n* For commits to a branch, prefix the commit message with the branch name.\n  For example: \"[1.4.x] Fixed #xxxxx -- Added support for mind reading.\"\n\n* Limit commits to the most granular change that makes sense. This means,\n  use frequent small commits rather than infrequent large commits. For\n  example, if implementing feature X requires a small change to library Y,\n  first commit the change to library Y, then commit feature X in a\n  separate commit. This goes a *long way* in helping all core Django\n  developers follow your changes.\n\n* Separate bug fixes from feature changes. Bugfixes may need to be backported\n  to the stable branch, according to the :ref:`backwards-compatibility policy\n  <backwards-compatibility-policy>`.\n\n* If your commit closes a ticket in the Django `ticket tracker`_, begin\n  your commit message with the text \"Fixed #xxxxx\", where \"xxxxx\" is the\n  number of the ticket your commit fixes. Example: \"Fixed #123 -- Added\n  whizbang feature.\". We've rigged Trac so that any commit message in that\n  format will automatically close the referenced ticket and post a comment\n  to it with the full commit message.\n\n  If your commit closes a ticket and is in a branch, use the branch name\n  first, then the \"Fixed #xxxxx.\" For example:\n  \"[1.4.x] Fixed #123 -- Added whizbang feature.\"\n\n  For the curious, we're using a `Trac plugin`_ for this.\n\n.. note::\n\n    Note that the Trac integration doesn't know anything about pull requests.\n    So if you try to close a pull request with the phrase \"closes #400\" in your\n    commit message, GitHub will close the pull request, but the Trac plugin\n    will also close the same numbered ticket in Trac.\n\n\n.. _Trac plugin: https://github.com/aaugustin/trac-github\n\n* If your commit references a ticket in the Django `ticket tracker`_ but\n  does *not* close the ticket, include the phrase \"Refs #xxxxx\", where \"xxxxx\"\n  is the number of the ticket your commit references. This will automatically\n  post a comment to the appropriate ticket.\n\n* Write commit messages for backports using this pattern::\n\n    [<Django version>] Fixed <ticket> -- <description>\n\n    Backport of <revision> from <branch>.\n\n  For example::\n\n    [1.3.x] Fixed #17028 - Changed diveintopython.org -> diveintopython.net.\n\n    Backport of 80c0cbf1c97047daed2c5b41b296bbc56fe1d7e3 from master.\n\nReverting commits\n-----------------\n\nNobody's perfect; mistakes will be committed.\n\nBut try very hard to ensure that mistakes don't happen. Just because we have a\nreversion policy doesn't relax your responsibility to aim for the highest\nquality possible. Really: double-check your work, or have it checked by\nanother committer, **before** you commit it in the first place!\n\nWhen a mistaken commit is discovered, please follow these guidelines:\n\n* If possible, have the original author revert his/her own commit.\n\n* Don't revert another author's changes without permission from the\n  original author.\n\n* Use git revert -- this will make a reverse commit, but the original\n  commit will still be part of the commit history.\n\n* If the original author can't be reached (within a reasonable amount\n  of time -- a day or so) and the problem is severe -- crashing bug,\n  major test failures, etc -- then ask for objections on the\n  `django-developers`_ mailing list then revert if there are none.\n\n* If the problem is small (a feature commit after feature freeze,\n  say), wait it out.\n\n* If there's a disagreement between the committer and the\n  reverter-to-be then try to work it out on the `django-developers`_\n  mailing list. If an agreement can't be reached then it should\n  be put to a vote.\n\n* If the commit introduced a confirmed, disclosed security\n  vulnerability then the commit may be reverted immediately without\n  permission from anyone.\n\n* The release branch maintainer may back out commits to the release\n  branch without permission if the commit breaks the release branch.\n\n* If you mistakenly push a topic branch to django/django, just delete it.\n  For instance, if you did: ``git push upstream feature_antigravity``,\n  just do a reverse push: ``git push upstream :feature_antigravity``.\n\n.. _django-developers: http://groups.google.com/group/django-developers\n.. _ticket tracker: https://code.djangoproject.com/newticket\n"
  },
  {
    "path": "Django-1.5.1/docs/internals/contributing/index.txt",
    "content": "======================\nContributing to Django\n======================\n\nDjango is a community that lives on its volunteers. As it keeps growing, we\nalways need more people to help others. As soon as you learn Django, you can\ncontribute in many ways:\n\n* Join the `django-users`_ mailing list and answer questions. This\n  mailing list has a huge audience, and we really want to maintain a\n  friendly and helpful atmosphere. If you're new to the Django community,\n  you should read the `posting guidelines`_.\n\n* Join the `#django IRC channel`_ on Freenode and answer questions. By\n  explaining Django to other users, you're going to learn a lot about the\n  framework yourself.\n\n* Blog about Django. We syndicate all the Django blogs we know about on\n  the `community page`_; if you'd like to see your blog on that page you\n  can `register it here`_.\n\n* Contribute to open-source Django projects, write some documentation, or\n  release your own code as an open-source pluggable application. The\n  ecosystem of pluggable applications is a big strength of Django, help us\n  build it!\n\nIf you think working *with* Django is fun, wait until you start working *on*\nit. We're passionate about helping Django users make the jump to contributing\nmembers of the community, so there are several ways you can help Django's\ndevelopment:\n\n* :doc:`Report bugs <bugs-and-features>` in our `ticket tracker`_.\n\n* Join the `django-developers`_ mailing list and share your ideas for how\n  to improve Django. We're always open to suggestions.\n\n* :doc:`Submit patches <writing-code/submitting-patches>` for new and/or\n  fixed behavior. If you're looking for an easy way to start contributing\n  to Django have a look at the `easy pickings`_ tickets.\n\n* :doc:`Improve the documentation <writing-documentation>` or\n  :doc:`write unit tests <writing-code/unit-tests>`.\n\n* :doc:`Triage tickets and review patches <triaging-tickets>` created by\n  other users.\n\nReally, **ANYONE** can do something to help make Django better and greater!\n\nBrowse the following sections to find out how:\n\n.. toctree::\n   :maxdepth: 2\n\n   new-contributors\n   bugs-and-features\n   triaging-tickets\n   writing-code/index\n   writing-documentation\n   localizing\n   committing-code\n\n.. _django-users: http://groups.google.com/group/django-users\n.. _posting guidelines: https://code.djangoproject.com/wiki/UsingTheMailingList\n.. _#django IRC channel: irc://irc.freenode.net/django\n.. _community page: https://www.djangoproject.com/community/\n.. _register it here: https://www.djangoproject.com/community/add/blogs/\n.. _django-developers: http://groups.google.com/group/django-developers\n.. _ticket tracker: https://code.djangoproject.com/newticket\n.. _easy pickings: https://code.djangoproject.com/query?status=!closed&easy=1\n"
  },
  {
    "path": "Django-1.5.1/docs/internals/contributing/localizing.txt",
    "content": "=================\nLocalizing Django\n=================\n\nVarious parts of Django, such as the admin site and validation error messages,\nare internationalized. This means they display differently depending on each\nuser's language or country. For this, Django uses the same internationalization\nand localization infrastructure available to Django applications, described in\nthe :doc:`i18n documentation </topics/i18n/index>`.\n\nTranslations\n------------\n\nTranslations are contributed by Django users worldwide. The translation work is\ncoordinated at `Transifex`_.\n\nIf you find an incorrect translation or want to discuss specific translations,\ngo to the `Django project page`_. If you would like to help out with\ntranslating or add a language that isn't yet translated, here's what to do:\n\n* Join the `Django i18n mailing list`_ and introduce yourself.\n\n* Make sure you read the notes about :ref:`specialties-of-django-i18n`.\n\n* Signup at `Transifex`_ and visit the `Django project page`_.\n\n* On the `Django project page`_, choose the language you want to work on,\n  **or** -- in case the language doesn't exist yet --\n  request a new language team by clicking on the \"Request language\" link\n  and selecting the appropriate language.\n\n* Then, click the \"Join this Team\" button to become a member of this team.\n  Every team has at least one coordinator who is responsible to review\n  your membership request. You can of course also contact the team\n  coordinator to clarify procedural problems and handle the actual\n  translation process.\n\n* Once you are a member of a team choose the translation resource you\n  want to update on the team page. For example the \"core\" resource refers\n  to the translation catalogue that contains all non-contrib translations.\n  Each of the contrib apps also have a resource (prefixed with \"contrib\").\n\n  .. note::\n     For more information about how to use Transifex, read the\n     `Transifex User Guide`_.\n\nFormats\n-------\n\nYou can also review ``conf/locale/<locale>/formats.py``. This file describes\nthe date, time and numbers formatting particularities of your locale. See\n:ref:`format-localization` for details.\n\nThe format files aren't managed by the use of Transifex. To change them, you\nmust :doc:`create a patch<writing-code/submitting-patches>` against the\nDjango source tree, as for any code change:\n\n* Create a diff against the current Git master branch.\n\n* Open a ticket in Django's ticket system, set its ``Component`` field to\n  ``Translations``, and attach the patch to it.\n\n.. _Transifex: https://www.transifex.com/\n.. _Django i18n mailing list: http://groups.google.com/group/django-i18n/\n.. _Django project page: https://www.transifex.com/projects/p/django/\n.. _Transifex User Guide: http://help.transifex.com/\n"
  },
  {
    "path": "Django-1.5.1/docs/internals/contributing/new-contributors.txt",
    "content": "===========================\nAdvice for new contributors\n===========================\n\nNew contributor and not sure what to do? Want to help but just don't know how\nto get started? This is the section for you.\n\nFirst steps\n-----------\n\nStart with these easy tasks to discover Django's development process.\n\n* **Triage tickets**\n\n  If an `unreviewed ticket`_ reports a bug, try and reproduce it. If you\n  can reproduce it and it seems valid, make a note that you confirmed the bug\n  and accept the ticket. Make sure the ticket is filed under the correct\n  component area. Consider writing a patch that adds a test for the bug's\n  behavior, even if you don't fix the bug itself. See more at\n  :ref:`how-can-i-help-with-triaging`\n\n* **Look for tickets that are accepted and review patches to build familiarity\n  with the codebase and the process**\n\n  Mark the appropriate flags if a patch needs docs or tests. Look through the\n  changes a patch makes, and keep an eye out for syntax that is incompatible\n  with older but still supported versions of Python. Run the tests and make\n  sure they pass on your system.  Where possible and relevant, try them out on\n  a database other than SQLite. Leave comments and feedback!\n\n* **Keep old patches up to date**\n\n  Oftentimes the codebase will change between a patch being submitted and the\n  time it gets reviewed. Make sure it still applies cleanly and functions as\n  expected. Simply updating a patch is both useful and important! See more on\n  :doc:`writing-code/submitting-patches`.\n\n* **Write some documentation**\n\n  Django's documentation is great but it can always be improved. Did you find\n  a typo? Do you think that something should be clarified? Go ahead and\n  suggest a documentation patch! See also the guide on\n  :doc:`writing-documentation`, in particular the tips for\n  :ref:`improving-the-documentation`.\n\n  .. note::\n\n      The `reports page`_ contains links to many useful Trac queries, including\n      several that are useful for triaging tickets and reviewing patches as\n      suggested above.\n\n      .. _reports page: https://code.djangoproject.com/wiki/Reports\n\n.. _unreviewed ticket: https://code.djangoproject.com/query?status=!closed&stage=Unreviewed\n\n\nGuidelines\n----------\n\nAs a newcomer on a large project, it's easy to experience frustration. Here's\nsome advice to make your work on Django more useful and rewarding.\n\n* **Pick a subject area that you care about, that you are familiar with, or\n  that you want to learn about**\n\n  You don't already have to be an expert on the area you want to work on; you\n  become an expert through your ongoing contributions to the code.\n\n* **Analyze tickets' context and history**\n\n  Trac isn't an absolute; the context is just as important as the words.\n  When reading Trac, you need to take into account who says things, and when\n  they were said. Support for an idea two years ago doesn't necessarily mean\n  that the idea will still have support. You also need to pay attention to who\n  *hasn't* spoken -- for example, if a core team member hasn't been recently\n  involved in a discussion, then a ticket may not have the support required to\n  get into trunk.\n\n* **Start small**\n\n  It's easier to get feedback on a little issue than on a big one. See the\n  `easy pickings`_.\n\n* **If you're going to engage in a big task, make sure that your idea has\n  support first**\n\n  This means getting someone else to confirm that a bug is real before you fix\n  the issue, and ensuring that the core team supports a proposed feature\n  before you go implementing it.\n\n* **Be bold! Leave feedback!**\n\n  Sometimes it can be scary to put your opinion out to the world and say \"this\n  ticket is correct\" or \"this patch needs work\", but it's the only way the\n  project moves forward. The contributions of the broad Django community\n  ultimately have a much greater impact than that of the core developers. We\n  can't do it without YOU!\n\n* **Err on the side of caution when marking things Ready For Check-in**\n\n  If you're really not certain if a ticket is ready, don't mark it as\n  such. Leave a comment instead, letting others know your thoughts.  If you're\n  mostly certain, but not completely certain, you might also try asking on IRC\n  to see if someone else can confirm your suspicions.\n\n* **Wait for feedback, and respond to feedback that you receive**\n\n  Focus on one or two tickets, see them through from start to finish, and\n  repeat. The shotgun approach of taking on lots of tickets and letting some\n  fall by the wayside ends up doing more harm than good.\n\n* **Be rigorous**\n\n  When we say \":pep:`8`, and must have docs and tests\", we mean it. If a patch\n  doesn't have docs and tests, there had better be a good reason. Arguments\n  like \"I couldn't find any existing tests of this feature\" don't carry much\n  weight--while it may be true, that means you have the extra-important job of\n  writing the very first tests for that feature, not that you get a pass from\n  writing tests altogether.\n\n.. _easy pickings: https://code.djangoproject.com/query?status=!closed&easy=1\n\n.. _new-contributors-faq:\n\nFAQ\n---\n\n1. **This ticket I care about has been ignored for days/weeks/months! What can\n   I do to get it committed?**\n\n   First off, it's not personal. Django is entirely developed by volunteers\n   (even the core developers), and sometimes folks just don't have time. The\n   best thing to do is to send a gentle reminder to the django-developers\n   mailing list asking for review on the ticket, or to bring it up in the\n   #django-dev IRC channel.\n\n2. **I'm sure my ticket is absolutely 100% perfect, can I mark it as RFC\n   myself?**\n\n   Short answer: No. It's always better to get another set of eyes on a\n   ticket. If you're having trouble getting that second set of eyes, see\n   question 1, above.\n\n3. **My ticket has been in DDN forever! What should I do?**\n\n   Design Decision Needed requires consensus about the right solution.  At the\n   very least it needs consensus among the core developers, and ideally it has\n   consensus from the community as well. The best way to accomplish this is to\n   start a thread on the django-developers mailing list, and for very complex\n   issues to start a wiki page summarizing the problem and the possible\n   solutions.\n"
  },
  {
    "path": "Django-1.5.1/docs/internals/contributing/triaging-tickets.txt",
    "content": "================\nTriaging tickets\n================\n\nDjango uses Trac_ for managing the work on the code base. Trac is a\ncommunity-tended garden of the bugs people have found and the features people\nwould like to see added. As in any garden, sometimes there are weeds to be\npulled and sometimes there are flowers and vegetables that need picking. We need\nyour help to sort out one from the other, and in the end we all benefit\ntogether.\n\nLike all gardens, we can aspire to perfection but in reality there's no such\nthing. Even in the most pristine garden there are still snails and insects.\nIn a community garden there are also helpful people who -- with the best of\nintentions -- fertilize the weeds and poison the roses. It's the job of the\ncommunity as a whole to self-manage, keep the problems to a minimum, and\neducate those coming into the community so that they can become valuable\ncontributing members.\n\nSimilarly, while we aim for Trac to be a perfect representation of the state\nof Django's progress, we acknowledge that this simply will not happen. By\ndistributing the load of Trac maintenance to the community, we accept that\nthere will be mistakes. Trac is \"mostly accurate\", and we give allowances for\nthe fact that sometimes it will be wrong. That's okay. We're perfectionists\nwith deadlines.\n\nWe rely on the community to keep participating, keep tickets as accurate as\npossible, and raise issues for discussion on our mailing lists when there is\nconfusion or disagreement.\n\nDjango is a community project, and every contribution helps. We can't do this\nwithout YOU!\n\nTriage workflow\n---------------\n\nUnfortunately, not all bug reports and feature requests in the ticket tracker\nprovide all the :doc:`required details<bugs-and-features>`. A number of\ntickets have patches, but those patches don't meet all the requirements of a\n:ref:`good patch<patch-style>`.\n\nOne way to help out is to *triage* tickets that have been created by other\nusers. The core team and several community members work on this regularly, but\nmore help is always appreciated.\n\nMost of the workflow is based around the concept of a ticket's\n:ref:`triage stages <triage-stages>`. Each stage describes where in its\nlifetime a given ticket is at any time. Along with a handful of flags, this\nattribute easily tells us what and who each ticket is waiting on.\n\nSince a picture is worth a thousand words, let's start there:\n\n.. image:: /internals/_images/djangotickets.png\n   :height: 451\n   :width: 590\n   :alt: Django's ticket triage workflow\n\nWe've got two roles in this diagram:\n\n* :doc:`Committers</internals/committers>` (also called core developers):\n  people with commit access who are responsible for making the big\n  decisions, writing large portions of the code and integrating the\n  contributions of the community.\n\n* Ticket triagers: anyone in the Django community who chooses to\n  become involved in Django's development process. Our Trac installation\n  is intentionally left open to the public, and anyone can triage tickets.\n  Django is a community project, and we encourage :ref:`triage by the\n  community<how-can-i-help-with-triaging>`.\n\nBy way of example, here we see the lifecycle of an average ticket:\n\n* Alice creates a ticket, and uploads an incomplete patch (no tests, incorrect\n  implementation).\n\n* Bob reviews the patch, marks it \"Accepted\", \"needs tests\", and \"patch needs\n  improvement\", and leaves a comment telling Alice how the patch could be\n  improved.\n\n* Alice updates the patch, adding tests (but not changing the\n  implementation). She removes the two flags.\n\n* Charlie reviews the patch and resets the \"patch needs improvement\" flag with\n  another comment about improving the implementation.\n\n* Alice updates the patch, fixing the implementation. She removes the \"patch\n  needs improvement\" flag.\n\n* Daisy reviews the patch, and marks it RFC.\n\n* Jacob, a core developer, reviews the RFC patch, applies it to his checkout,\n  and commits it.\n\nSome tickets require much less feedback than this, but then again some tickets\nrequire much much more.\n\n.. _triage-stages:\n\nTriage stages\n-------------\n\nBelow we describe in more detail the various stages that a ticket may flow\nthrough during its lifetime.\n\nUnreviewed\n~~~~~~~~~~\n\nThe ticket has not been reviewed by anyone who felt qualified to make a\njudgment about whether the ticket contained a valid issue, a viable feature,\nor ought to be closed for any of the various reasons.\n\nAccepted\n~~~~~~~~\n\nThe big grey area! The absolute meaning of \"accepted\" is that the issue\ndescribed in the ticket is valid and is in some stage of being worked on.\nBeyond that there are several considerations:\n\n* **Accepted + No Flags**\n\n  The ticket is valid, but no one has submitted a patch for it yet. Often this\n  means you could safely start writing a patch for it.\n\n* **Accepted + Has Patch**\n\n  The ticket is waiting for people to review the supplied patch. This means\n  downloading the patch and trying it out, verifying that it contains tests\n  and docs, running the test suite with the included patch, and leaving\n  feedback on the ticket.\n\n* **Accepted + Has Patch + (any other flag)**\n\n  This means the ticket has been reviewed, and has been found to need further\n  work. \"Needs tests\" and \"Needs documentation\" are self-explanatory. \"Patch\n  needs improvement\" will generally be accompanied by a comment on the ticket\n  explaining what is needed to improve the code.\n\nDesign Decision Needed\n~~~~~~~~~~~~~~~~~~~~~~\n\nThis stage is for issues which may be contentious, may be backwards\nincompatible, or otherwise involve high-level design decisions. These issues\nshould be discussed either in the ticket comments or on `django-developers`_.\n\nIf a ticket has been marked as \"DDN\", decisions are generally eventually\nmade by the core committers, however that is not a requirement. See the\n:ref:`New contributors' FAQ<new-contributors-faq>` for \"My ticket has been in\nDDN forever! What should I do?\"\n\nThis stage will often be used for feature requests. It can also be used for\nissues that *might* be bugs, depending on opinion or interpretation. Obvious\nbugs (such as crashes, incorrect query results, or non-compliance with a\nstandard) skip this stage and move straight to \"Accepted\".\n\nReady For Checkin\n~~~~~~~~~~~~~~~~~\n\nThe ticket was reviewed by any member of the community other than the person\nwho supplied the patch and found to meet all the requirements for a\ncommit-ready patch. A core committer now needs to give the patch a final\nreview prior to being committed. See the\n:ref:`New contributors' FAQ<new-contributors-faq>` for \"My ticket has been in\nRFC forever! What should I do?\"\n\nSomeday/Maybe\n~~~~~~~~~~~~~\n\nGenerally only used for vague/high-level features or design ideas. These\ntickets are uncommon and overall less useful since they don't describe\nconcrete actionable issues. They are enhancement requests that we might\nconsider adding someday to the framework if an excellent patch is submitted.\nThese tickets are not a high priority.\n\nOther triage attributes\n-----------------------\n\nA number of flags, appearing as checkboxes in Trac, can be set on a ticket:\n\n* Has patch\n    This means the ticket has an associated\n    :doc:`patch<writing-code/submitting-patches>`. These will be reviewed\n    to see if the patch is \"good\".\n\n* Needs documentation:\n    This flag is used for tickets with patches that need associated\n    documentation. Complete documentation of features is a prerequisite\n    before we can check them into the codebase.\n\n* Needs tests\n    This flags the patch as needing associated unit tests. Again, this\n    is a required part of a valid patch.\n\n* Patch needs improvement\n    This flag means that although the ticket *has* a patch, it's not quite\n    ready for checkin. This could mean the patch no longer applies\n    cleanly, there is a flaw in the implementation, or that the code\n    doesn't meet our standards.\n\n* Easy pickings\n    Tickets that would require small, easy, patches.\n\nTickets should be categorized by *type* between:\n\n* New Feature\n    For adding something new.\n\n* Bug\n    For when an existing thing is broken or not behaving as expected.\n\n* Cleanup/optimization\n    For when nothing is broken but something could be made cleaner,\n    better, faster, stronger.\n\nTickets should also be classified into *components* indicating which area of\nthe Django codebase they belong to. This makes tickets better organized and\neasier to find.\n\nThe *severity* attribute is used to identify blockers, that is, issues which\nshould get fixed before releasing the next version of Django. Typically those\nissues are bugs causing regressions from earlier versions or potentially\ncausing severe data losses. This attribute is quite rarely used and the vast\nmajority of tickets have a severity of \"Normal\".\n\nFinally, it is possible to use the *version* attribute to indicate in which\nversion the reported bug was identified.\n\n.. _closing-tickets:\n\nClosing Tickets\n---------------\n\nWhen a ticket has completed its useful lifecycle, it's time for it to be\nclosed. Closing a ticket is a big responsibility, though. You have to be sure\nthat the issue is really resolved, and you need to keep in mind that the\nreporter of the ticket may not be happy to have their ticket closed (unless\nit's fixed, of course). If you're not certain about closing a ticket, just\nleave a comment with your thoughts instead.\n\nIf you do close a ticket, you should always make sure of the following:\n\n* Be certain that the issue is resolved.\n\n* Leave a comment explaining the decision to close the ticket.\n\n* If there is a way they can improve the ticket to reopen it, let them know.\n\n* If the ticket is a duplicate, reference the original ticket. Also\n  cross-reference the closed ticket by leaving a comment in the original one\n  -- this allows to access more related information about the reported bug\n  or requested feature.\n\n* **Be polite.** No one likes having their ticket closed. It can be\n  frustrating or even discouraging. The best way to avoid turning people\n  off from contributing to Django is to be polite and friendly and to offer\n  suggestions for how they could improve this ticket and other tickets in\n  the future.\n\nA ticket can be resolved in a number of ways:\n\n* fixed\n      Used by the core developers once a patch has been rolled into\n      Django and the issue is fixed.\n\n* invalid\n      Used if the ticket is found to be incorrect. This means that the\n      issue in the ticket is actually the result of a user error, or\n      describes a problem with something other than Django, or isn't\n      a bug report or feature request at all (for example, some new users\n      submit support queries as tickets).\n\n* wontfix\n      Used when a core developer decides that this request is not\n      appropriate for consideration in Django. This is usually chosen after\n      discussion in the `django-developers`_ mailing list. Feel free to\n      start or join in discussions of \"wontfix\" tickets on the\n      django-developers_ mailing list, but please do not reopen tickets\n      closed as \"wontfix\" by a :doc:`core developer</internals/committers>`.\n\n* duplicate\n      Used when another ticket covers the same issue. By closing duplicate\n      tickets, we keep all the discussion in one place, which helps\n      everyone.\n\n* worksforme\n      Used when the ticket doesn't contain enough detail to replicate\n      the original bug.\n\n* needsinfo\n      Used when the ticket does not contain enough information to replicate\n      the reported issue but is potentially still valid. The ticket\n      should be reopened when more information is supplied.\n\nIf you believe that the ticket was closed in error -- because you're\nstill having the issue, or it's popped up somewhere else, or the triagers have\nmade a mistake -- please reopen the ticket and provide further information.\nAgain, please do not reopen tickets that have been marked as \"wontfix\" by core\ndevelopers and bring the issue to django-developers_ instead.\n\n.. _how-can-i-help-with-triaging:\n\nHow can I help with triaging?\n-----------------------------\n\nAlthough the core developers make the big decisions in the ticket triage\nprocess, there's a lot that general community members can do to help the\ntriage process. Really, **ANYONE** can help.\n\nStart by `creating an account on Trac`_. If you have an account but have\nforgotten your password, you can reset it using the `password reset page`_.\n\nThen, you can help out by:\n\n* Closing \"Unreviewed\" tickets as \"invalid\", \"worksforme\" or \"duplicate.\"\n\n* Promoting \"Unreviewed\" tickets to \"Design decision needed\" if a design\n  decision needs to be made, or \"Accepted\" in case of obvious bugs or\n  sensible, clearly defined, feature requests.\n\n* Correcting the \"Needs tests\", \"Needs documentation\", or \"Has patch\"\n  flags for tickets where they are incorrectly set.\n\n* Setting the \"`Easy pickings`_\" flag for tickets that are small and\n  relatively straightforward.\n\n* Checking that old tickets are still valid. If a ticket hasn't seen\n  any activity in a long time, it's possible that the problem has been\n  fixed but the ticket hasn't yet been closed.\n\n* Contacting the owners of tickets that have been claimed but have not\n  seen any recent activity. If the owner doesn't respond after a week\n  or so, remove the owner's claim on the ticket.\n\n* Identifying trends and themes in the tickets. If there a lot of bug\n  reports about a particular part of Django, it may indicate we should\n  consider refactoring that part of the code. If a trend is emerging,\n  you should raise it for discussion (referencing the relevant tickets)\n  on `django-developers`_.\n\n* Set the *type* of tickets that are still uncategorized.\n\n* Verify if patches submitted by other users are correct. If they do and\n  also contain appropriate documentation and tests then move them to the\n  \"Ready for Checkin\" stage. If they don't then leave a comment to explain\n  why and set the corresponding flags (\"Patch needs improvement\",\n  \"Needs tests\" etc.).\n\n.. note::\n\n    The `Reports page`_ contains links to many useful Trac queries, including\n    several that are useful for triaging tickets and reviewing patches as\n    suggested above.\n\n    You can also find more :doc:`new-contributors`.\n\n    .. _Reports page: https://code.djangoproject.com/wiki/Reports\n\nHowever, we do ask the following of all general community members working in\nthe ticket database:\n\n* Please **don't** close tickets as \"wontfix.\" The core developers will\n  make the final determination of the fate of a ticket, usually after\n  consultation with the community.\n\n* Please **don't** promote your own tickets to \"Ready for checkin\". You\n  may mark other people's tickets which you've reviewed as \"Ready for\n  checkin\", but you should get at minimum one other community member to\n  review a patch that you submit.\n\n* Please **don't** reverse a decision that has been made by a :doc:`core\n  developer</internals/committers>`. If you disagree with a decision that\n  has been made, please post a message to `django-developers`_.\n\n* If you're unsure if you should be making a change, don't make the\n  change but instead leave a comment with your concerns on the ticket,\n  or post a message to `django-developers`_. It's okay to be unsure,\n  but your input is still valuable.\n\n.. _Trac: https://code.djangoproject.com/\n.. _django-developers: http://groups.google.com/group/django-developers\n.. _i18n branch: https://code.djangoproject.com/browser/django/branches/i18n\n.. _`tags/releases`: https://code.djangoproject.com/browser/django/tags/releases\n.. _`easy pickings`: https://code.djangoproject.com/query?status=!closed&easy=1\n.. _`creating an account on Trac`: https://www.djangoproject.com/accounts/register/\n.. _password reset page: https://www.djangoproject.com/accounts/password/reset/\n"
  },
  {
    "path": "Django-1.5.1/docs/internals/contributing/writing-code/coding-style.txt",
    "content": "============\nCoding style\n============\n\nPlease follow these coding standards when writing code for inclusion in Django.\n\nPython style\n------------\n\n* Unless otherwise specified, follow :pep:`8`.\n\n  You could use a tool like `pep8`_ to check for some problems in this\n  area, but remember that :pep:`8` is only a guide, so respect the style of\n  the surrounding code as a primary goal.\n\n  One big exception to :pep:`8` is our preference of longer line lengths.\n  We're well into the 21st Century, and we have high-resolution computer\n  screens that can fit way more than 79 characters on a screen. Don't limit\n  lines of code to 79 characters if it means the code looks significantly\n  uglier or is harder to read.\n\n* Use four spaces for indentation.\n\n* Use underscores, not camelCase, for variable, function and method names\n  (i.e. ``poll.get_unique_voters()``, not ``poll.getUniqueVoters``).\n\n* Use ``InitialCaps`` for class names (or for factory functions that\n  return classes).\n\n* In docstrings, use \"action words\" such as::\n\n      def foo():\n          \"\"\"\n          Calculates something and returns the result.\n          \"\"\"\n          pass\n\n  Here's an example of what not to do::\n\n      def foo():\n          \"\"\"\n          Calculate something and return the result.\n          \"\"\"\n          pass\n\nTemplate style\n--------------\n\n* In Django template code, put one (and only one) space between the curly\n  brackets and the tag contents.\n\n  Do this:\n\n  .. code-block:: html+django\n\n      {{ foo }}\n\n  Don't do this:\n\n  .. code-block:: html+django\n\n      {{foo}}\n\nView style\n----------\n\n* In Django views, the first parameter in a view function should be called\n  ``request``.\n\n  Do this::\n\n      def my_view(request, foo):\n          # ...\n\n  Don't do this::\n\n      def my_view(req, foo):\n          # ...\n\nModel style\n-----------\n\n* Field names should be all lowercase, using underscores instead of\n  camelCase.\n\n  Do this::\n\n      class Person(models.Model):\n          first_name = models.CharField(max_length=20)\n          last_name = models.CharField(max_length=40)\n\n  Don't do this::\n\n      class Person(models.Model):\n          FirstName = models.CharField(max_length=20)\n          Last_Name = models.CharField(max_length=40)\n\n* The ``class Meta`` should appear *after* the fields are defined, with\n  a single blank line separating the fields and the class definition.\n\n  Do this::\n\n      class Person(models.Model):\n          first_name = models.CharField(max_length=20)\n          last_name = models.CharField(max_length=40)\n\n          class Meta:\n              verbose_name_plural = 'people'\n\n  Don't do this::\n\n      class Person(models.Model):\n          first_name = models.CharField(max_length=20)\n          last_name = models.CharField(max_length=40)\n          class Meta:\n              verbose_name_plural = 'people'\n\n  Don't do this, either::\n\n      class Person(models.Model):\n          class Meta:\n              verbose_name_plural = 'people'\n\n          first_name = models.CharField(max_length=20)\n          last_name = models.CharField(max_length=40)\n\n* The order of model inner classes and standard methods should be as\n  follows (noting that these are not all required):\n\n  * All database fields\n  * Custom manager attributes\n  * ``class Meta``\n  * ``def __unicode__()``\n  * ``def __str__()``\n  * ``def save()``\n  * ``def get_absolute_url()``\n  * Any custom methods\n\n* If ``choices`` is defined for a given model field, define each choice as\n  a tuple of tuples, with an all-uppercase name as a class attribute on the\n  model. Example::\n\n    class MyModel(models.Model):\n        DIRECTION_UP = 'U'\n        DIRECTION_DOWN = 'D'\n        DIRECTION_CHOICES = (\n            (DIRECTION_UP, 'Up'),\n            (DIRECTION_DOWN, 'Down'),\n        )\n\nUse of ``django.conf.settings``\n-------------------------------\n\nModules should not in general use settings stored in ``django.conf.settings``\nat the top level (i.e. evaluated when the module is imported). The explanation\nfor this is as follows:\n\nManual configuration of settings (i.e. not relying on the\n``DJANGO_SETTINGS_MODULE`` environment variable) is allowed and possible as\nfollows::\n\n    from django.conf import settings\n\n    settings.configure({}, SOME_SETTING='foo')\n\nHowever, if any setting is accessed before the ``settings.configure`` line,\nthis will not work. (Internally, ``settings`` is a ``LazyObject`` which\nconfigures itself automatically when the settings are accessed if it has not\nalready been configured).\n\nSo, if there is a module containing some code as follows::\n\n    from django.conf import settings\n    from django.core.urlresolvers import get_callable\n\n    default_foo_view = get_callable(settings.FOO_VIEW)\n\n...then importing this module will cause the settings object to be configured.\nThat means that the ability for third parties to import the module at the top\nlevel is incompatible with the ability to configure the settings object\nmanually, or makes it very difficult in some circumstances.\n\nInstead of the above code, a level of laziness or indirection must be used,\nsuch as ``django.utils.functional.LazyObject``,\n``django.utils.functional.lazy()`` or ``lambda``.\n\nMiscellaneous\n-------------\n\n* Mark all strings for internationalization; see the :doc:`i18n\n  documentation </topics/i18n/index>` for details.\n\n* Remove ``import`` statements that are no longer used when you change code.\n  The most common tools for this task are `pyflakes`_ and `pylint`_.\n\n* Systematically remove all trailing whitespaces from your code as those\n  add unnecessary bytes, add visual clutter to the patches and can also\n  occasionally cause unnecessary merge conflicts. Some IDE's can be\n  configured to automatically remove them and most VCS tools can be set to\n  highlight them in diff outputs. Note, however, that patches which only\n  remove whitespace (or only make changes for nominal :pep:`8` conformance)\n  are likely to be rejected, since they only introduce noise rather than\n  code improvement. Tidy up when you're next changing code in the area.\n\n* Please don't put your name in the code you contribute. Our policy is to\n  keep contributors' names in the ``AUTHORS`` file distributed with Django\n  -- not scattered throughout the codebase itself. Feel free to include a\n  change to the ``AUTHORS`` file in your patch if you make more than a\n  single trivial change.\n\n.. _pep8: http://pypi.python.org/pypi/pep8\n.. _pyflakes: http://pypi.python.org/pypi/pyflakes\n.. _pylint: http://pypi.python.org/pypi/pylint\n"
  },
  {
    "path": "Django-1.5.1/docs/internals/contributing/writing-code/index.txt",
    "content": "============\nWriting code\n============\n\nSo you'd like to write some code to improve Django. Awesome! Browse the\nfollowing sections to find out how to give your code patches the best\nchances to be included in Django core:\n\n.. toctree::\n   :maxdepth: 1\n\n   coding-style\n   unit-tests\n   submitting-patches\n   working-with-git\n"
  },
  {
    "path": "Django-1.5.1/docs/internals/contributing/writing-code/submitting-patches.txt",
    "content": "==================\nSubmitting patches\n==================\n\nWe're always grateful for patches to Django's code. Indeed, bug reports\nwith associated patches will get fixed *far* more quickly than those\nwithout patches.\n\nTypo fixes and trivial documentation changes\n--------------------------------------------\n\nIf you are fixing a really trivial issue, for example changing a word in the\ndocumentation, the preferred way to provide the patch is using GitHub pull\nrequests without a Trac ticket. Trac tickets are still acceptable.\n\nSee the :doc:`working-with-git` for more details on how to use pull requests.\n\n\"Claiming\" tickets\n------------------\n\nIn an open-source project with hundreds of contributors around the world, it's\nimportant to manage communication efficiently so that work doesn't get\nduplicated and contributors can be as effective as possible.\n\nHence, our policy is for contributors to \"claim\" tickets in order to let other\ndevelopers know that a particular bug or feature is being worked on.\n\nIf you have identified a contribution you want to make and you're capable of\nfixing it (as measured by your coding ability, knowledge of Django internals\nand time availability), claim it by following these steps:\n\n* `Create an account`_ to use in our ticket system. If you have an account\n  but have forgotten your password, you can reset it using the\n  `password reset page`_.\n\n* If a ticket for this issue doesn't exist yet, create one in our\n  `ticket tracker`_.\n\n* If a ticket for this issue already exists, make sure nobody else has\n  claimed it. To do this, look at the \"Assigned to\" section of the ticket.\n  If it's assigned to \"nobody,\" then it's available to be claimed.\n  Otherwise, somebody else is working on this ticket, and you either find\n  another bug/feature to work on, or contact the developer working on the\n  ticket to offer your help.\n\n* Log into your account, if you haven't already, by clicking \"Login\" in\n  the upper right of the ticket page.\n\n* Claim the ticket:\n\n  1. click the \"accept\" radio button under \"Action\" near the bottom of the\n     page,\n  2. then click \"Submit changes.\"\n\n.. note::\n    The Django software foundation requests that anyone contributing more than\n    a trivial patch to Django sign and submit a `Contributor License\n    Agreement`_, this ensures that the Django Software Foundation has clear\n    license to all contributions allowing for a clear license for all users.\n\n.. _Create an account: https://www.djangoproject.com/accounts/register/\n.. _password reset page: https://www.djangoproject.com/accounts/password/reset/\n.. _Contributor License Agreement: https://www.djangoproject.com/foundation/cla/\n\nTicket claimers' responsibility\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nOnce you've claimed a ticket, you have a responsibility to work on that ticket\nin a reasonably timely fashion. If you don't have time to work on it, either\nunclaim it or don't claim it in the first place!\n\nIf there's no sign of progress on a particular claimed ticket for a week or\ntwo, another developer may ask you to relinquish the ticket claim so that it's\nno longer monopolized and somebody else can claim it.\n\nIf you've claimed a ticket and it's taking a long time (days or weeks) to code,\nkeep everybody updated by posting comments on the ticket. If you don't provide\nregular updates, and you don't respond to a request for a progress report,\nyour claim on the ticket may be revoked.\n\nAs always, more communication is better than less communication!\n\nWhich tickets should be claimed?\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nOf course, going through the steps of claiming tickets is overkill in some\ncases.\n\nIn the case of small changes, such as typos in the documentation or\nsmall bugs that will only take a few minutes to fix, you don't need to jump\nthrough the hoops of claiming tickets. Just submit your patch and be done with\nit.\n\nOf course, it is *always* acceptable, regardless whether someone has claimed it\nor not, to submit patches to a ticket if you happen to have a patch ready.\n\n.. _patch-style:\n\nPatch style\n-----------\n\nMake sure that any contribution you do fulfills at least the following\nrequirements:\n\n* The code required to fix a problem or add a feature is an essential part\n  of a patch, but it is not the only part. A good patch should also include a\n  :doc:`regression test <unit-tests>` to validate the behavior that has been\n  fixed and to prevent the problem from arising again. Also, if some tickets\n  are relevant to the code that you've written, mention the ticket numbers in\n  some comments in the test so that one can easily trace back the relevant\n  discussions after your patch gets committed, and the tickets get closed.\n\n* If the code associated with a patch adds a new feature, or modifies\n  behavior of an existing feature, the patch should also contain\n  documentation.\n\nYou can use either GitHub branches and pull requests or direct patches\nto publish your work. If you use the Git workflow, then you should\nannounce your branch in the ticket by including a link to your branch.\nWhen you think your work is ready to be merged in create a pull request.\n\nSee the :doc:`working-with-git` documentation for mode details.\n\nYou can also use patches in Trac. When using this style, follow these\nguidelines.\n\n* Submit patches in the format returned by the ``git diff`` command.\n  An exception is for code changes that are described more clearly in\n  plain English than in code. Indentation is the most common example; it's\n  hard to read patches when the only difference in code is that it's\n  indented.\n\n* Attach patches to a ticket in the `ticket tracker`_, using the \"attach\n  file\" button. Please *don't* put the patch in the ticket description\n  or comment unless it's a single line patch.\n\n* Name the patch file with a ``.diff`` extension; this will let the ticket\n  tracker apply correct syntax highlighting, which is quite helpful.\n\nRegardless of the way you submit your work, follow these steps.\n\n* Make sure your code matches our :doc:`coding-style`.\n\n* Check the \"Has patch\" box on the ticket details. This will make it\n  obvious that the ticket includes a patch, and it will add the ticket to\n  the `list of tickets with patches`_.\n\n\nNon-trivial patches\n-------------------\n\nA \"non-trivial\" patch is one that is more than a simple bug fix. It's a patch\nthat introduces Django functionality and makes some sort of design decision.\n\nIf you provide a non-trivial patch, include evidence that alternatives have\nbeen discussed on `django-developers`_.\n\nIf you're not sure whether your patch should be considered non-trivial, just\nask.\n\nJavascript patches\n------------------\n\nDjango's admin system leverages the jQuery framework to increase the\ncapabilities of the admin interface. In conjunction, there is an emphasis on\nadmin javascript performance and minimizing overall admin media file size.\nServing compressed or \"minified\" versions of javascript files is considered\nbest practice in this regard.\n\nTo that end, patches for javascript files should include both the original\ncode for future development (e.g. ``foo.js``), and a compressed version for\nproduction use (e.g. ``foo.min.js``). Any links to the file in the codebase\nshould point to the compressed version.\n\nCompressing JavaScript\n~~~~~~~~~~~~~~~~~~~~~~\n\nTo simplify the process of providing optimized javascript code, Django\nincludes a handy python script which should be used to create a \"minified\"\nversion. To run it::\n\n    python django/contrib/admin/bin/compress.py\n\nBehind the scenes, ``compress.py`` is a front-end for Google's\n`Closure Compiler`_ which is written in Java. However, the Closure Compiler\nlibrary is not bundled with Django directly, so those wishing to contribute\ncomplete javascript patches will need to download and install the library\nindependently.\n\nThe Closure Compiler library requires Java version 6 or higher (Java 1.6 or\nhigher on Mac OS X. Note that Mac OS X 10.5 and earlier did not ship with\nJava 1.6 by default, so it may be necessary to upgrade your Java installation\nbefore the tool will be functional. Also note that even after upgrading Java,\nthe default ``/usr/bin/java`` command may remain linked to the previous Java\nbinary, so relinking that command may be necessary as well.)\n\nPlease don't forget to run ``compress.py`` and include the ``diff`` of the\nminified scripts when submitting patches for Django's javascript.\n\n.. _Closure Compiler: https://developers.google.com/closure/compiler/\n.. _django-developers: http://groups.google.com/group/django-developers\n.. _list of tickets with patches: https://code.djangoproject.com/query?status=new&status=assigned&status=reopened&has_patch=1&order=priority\n.. _ticket tracker: https://code.djangoproject.com/newticket\n"
  },
  {
    "path": "Django-1.5.1/docs/internals/contributing/writing-code/unit-tests.txt",
    "content": "==========\nUnit tests\n==========\n\nDjango comes with a test suite of its own, in the ``tests`` directory of the\ncode base. It's our policy to make sure all tests pass at all times.\n\nThe tests cover:\n\n* Models and the database API (``tests/modeltests``),\n* Everything else in core Django code (``tests/regressiontests``),\n* :ref:`contrib-apps` (``django/contrib/<app>/tests`` or\n  ``tests/regressiontests/<app>_...``).\n\nWe appreciate any and all contributions to the test suite!\n\nThe Django tests all use the testing infrastructure that ships with Django for\ntesting applications. See :doc:`Testing Django applications\n</topics/testing/overview>` for an explanation of how to write new tests.\n\n.. _running-unit-tests:\n\nRunning the unit tests\n----------------------\n\nQuickstart\n~~~~~~~~~~\n\nRunning the tests requires a Django settings module that defines the\ndatabases to use. To make it easy to get started, Django provides a\nsample settings module that uses the SQLite database. To run the tests\nwith this sample ``settings`` module, ``cd`` into the Django\n``tests/`` directory and run:\n\n.. code-block:: bash\n\n    ./runtests.py --settings=test_sqlite\n\nIf you get an ``ImportError: No module named django.contrib`` error,\nyou need to add your install of Django to your ``PYTHONPATH``.\n\n.. _running-unit-tests-settings:\n\nUsing another ``settings`` module\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe included settings module allows you to run the test suite using\nSQLite. If you want to test behavior using a different database (and\nif you're proposing patches for Django, it's a good idea to test\nacross databases), you may need to define your own settings file.\n\nTo run the tests with different settings, ``cd`` to the ``tests/`` directory\nand type:\n\n.. code-block:: bash\n\n    ./runtests.py --settings=path.to.django.settings\n\nThe :setting:`DATABASES` setting in this test settings module needs to define\ntwo databases:\n\n* A ``default`` database. This database should use the backend that\n  you want to use for primary testing\n\n* A database with the alias ``other``. The ``other`` database is\n  used to establish that queries can be directed to different\n  databases. As a result, this database can use any backend you\n  want. It doesn't need to use the same backend as the ``default``\n  database (although it can use the same backend if you want to).\n\nIf you're using a backend that isn't SQLite, you will need to provide other\ndetails for each database:\n\n* The :setting:`USER` option for each of your databases needs to\n  specify an existing user account for the database.\n\n* The :setting:`PASSWORD` option needs to provide the password for\n  the :setting:`USER` that has been specified.\n\n* The :setting:`NAME` option must be the name of an existing database to\n  which the given user has permission to connect. The unit tests will not\n  touch this database; the test runner creates a new database whose name\n  is :setting:`NAME` prefixed with ``test_``, and this test database is\n  deleted when the tests are finished. This means your user account needs\n  permission to execute ``CREATE DATABASE``.\n\nYou will also need to ensure that your database uses UTF-8 as the default\ncharacter set. If your database server doesn't use UTF-8 as a default charset,\nyou will need to include a value for :setting:`TEST_CHARSET` in the settings\ndictionary for the applicable database.\n\nRunning only some of the tests\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nDjango's entire test suite takes a while to run, and running every single test\ncould be redundant if, say, you just added a test to Django that you want to\nrun quickly without running everything else. You can run a subset of the unit\ntests by appending the names of the test modules to ``runtests.py`` on the\ncommand line.\n\nFor example, if you'd like to run tests only for generic relations and\ninternationalization, type:\n\n.. code-block:: bash\n\n    ./runtests.py --settings=path.to.settings generic_relations i18n\n\nHow do you find out the names of individual tests? Look in\n``tests/modeltests`` and ``tests/regressiontests`` — each directory name\nthere is the name of a test. Contrib app names are also valid test names.\n\nIf you just want to run a particular class of tests, you can specify a list of\npaths to individual test classes. For example, to run the ``TranslationTests``\nof the ``i18n`` module, type:\n\n.. code-block:: bash\n\n    ./runtests.py --settings=path.to.settings i18n.TranslationTests\n\nGoing beyond that, you can specify an individual test method like this:\n\n.. code-block:: bash\n\n    ./runtests.py --settings=path.to.settings i18n.TranslationTests.test_lazy_objects\n\nRunning the Selenium tests\n~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nSome admin tests require Selenium 2, Firefox and Python >= 2.6 to work via a\nreal Web browser. To allow those tests to run and not be skipped, you must\ninstall the selenium_ package (version > 2.13) into your Python path.\n\nThen, run the tests normally, for example:\n\n.. code-block:: bash\n\n    ./runtests.py --settings=test_sqlite admin_inlines\n\n.. _running-unit-tests-dependencies:\n\nRunning all the tests\n~~~~~~~~~~~~~~~~~~~~~\n\nIf you want to run the full suite of tests, you'll need to install a number of\ndependencies:\n\n*  PyYAML_\n*  Markdown_\n*  Textile_\n*  Docutils_\n*  setuptools_\n*  memcached_, plus a :ref:`supported Python binding <memcached>`\n*  gettext_ (:ref:`gettext_on_windows`)\n*  selenium_ (if also using Python >= 2.6)\n\nIf you want to test the memcached cache backend, you'll also need to define\na :setting:`CACHES` setting that points at your memcached instance.\n\nEach of these dependencies is optional. If you're missing any of them, the\nassociated tests will be skipped.\n\n.. _PyYAML: http://pyyaml.org/wiki/PyYAML\n.. _Markdown: http://pypi.python.org/pypi/Markdown/1.7\n.. _Textile: http://pypi.python.org/pypi/textile\n.. _docutils: http://pypi.python.org/pypi/docutils/0.4\n.. _setuptools: http://pypi.python.org/pypi/setuptools/\n.. _memcached: http://memcached.org/\n.. _gettext: http://www.gnu.org/software/gettext/manual/gettext.html\n.. _selenium: http://pypi.python.org/pypi/selenium\n\nCode coverage\n~~~~~~~~~~~~~\n\nContributors are encouraged to run coverage on the test suite to identify areas\nthat need additional tests. The coverage tool installation and use is described\nin :ref:`testing code coverage<topics-testing-code-coverage>`.\n\nTo run coverage on the Django test suite using the standard test settings::\n\n    coverage run ./runtests.py --settings=test_sqlite\n\nAfter running coverage, generate the html report by running::\n\n    coverage html\n\nWhen running coverage for the Django tests, the included ``.coveragerc``\nsettings file  defines ``coverage_html`` as the output directory for the report\nand also excludes several directories not relevant to the results\n(test code or external code included in Django).\n\n.. _contrib-apps:\n\nContrib apps\n------------\n\nTests for contrib apps go in their respective directories under\n``django/contrib``, in a ``tests.py`` file. You can split the tests over\nmultiple modules by using a ``tests`` directory in the normal Python way.\n\nFor the tests to be found, a ``models.py`` file must exist, even if it's empty.\nIf you have URLs that need to be mapped, put them in ``tests/urls.py``.\n\nTo run tests for just one contrib app (e.g. ``markup``), use the same\nmethod as above::\n\n    ./runtests.py --settings=settings markup\n"
  },
  {
    "path": "Django-1.5.1/docs/internals/contributing/writing-code/working-with-git.txt",
    "content": "Working with Git and GitHub\n===========================\n\nThis section explains how the community can contribute code to Django via pull\nrequests. If you're interested in how core developers handle them, see\n:doc:`../committing-code`.\n\nBelow, we are going to show how to create a GitHub pull request containing the\nchanges for Trac ticket #xxxxx. By creating a fully-ready pull request you\nwill make the committers' job easier, meaning that your work is more likely to\nbe merged into Django.\n\nYou could also upload a traditional patch to Trac, but it's less practical for\nreviews.\n\nInstalling Git\n--------------\n\nDjango uses `Git`_ for its source control. You can `download\n<http://git-scm.com/download>`_ Git, but it's often easier to install with\nyour operating system's package manager.\n\nDjango's `Git repository`_ is hosted on `GitHub`_, and it is recommended\nthat you also work using GitHub.\n\nAfter installing Git the first thing you should do is setup your name and\nemail::\n\n  $ git config --global user.name \"Your Real Name\"\n  $ git config --global user.email \"you@email.com\"\n\nNote that ``user.name`` should be your real name, not your GitHub nick. GitHub\nshould know the email you use in the ``user.email`` field, as this will be\nused to associate your commits with your GitHub account.\n\n.. _Git: http://git-scm.com/\n.. _Git repository: https://github.com/django/django/\n.. _GitHub: https://github.com/\n\nSetting up local repository\n---------------------------\n\nWhen you have created your GitHub account, with the nick \"github_nick\", and\nforked Django's repository, create a local copy of your fork::\n\n    git clone git@github.com:github_nick/django.git\n\nThis will create a new directory \"django\", containing a clone of your GitHub\nrepository.\n\nYour GitHub repository will be called \"origin\" in Git.\n\nYou should also setup django/django as an \"upstream\" remote (that is, tell git\nthat the reference Django repository was the source of your fork of it)::\n\n    git remote add upstream git@github.com:django/django.git\n    git fetch upstream\n\nYou can add other remotes similarly, for example::\n\n    git remote add akaariai git@github.com:akaariai/django.git\n\nWorking on a ticket\n-------------------\n\nWhen working on a ticket create a new branch for the work, and base that work\non upstream/master::\n\n    git checkout -b ticket_xxxxx upstream/master\n\nThe -b flag creates a new branch for you locally. Don't hesitate to create new\nbranches even for the smallest things - that's what they are there for.\n\nIf instead you were working for a fix on the 1.4 branch, you would do::\n\n    git checkout -b ticket_xxxxx_1_4 upstream/stable/1.4.x\n\nAssume the work is carried on ticket_xxxxx branch. Make some changes and\ncommit them::\n\n    git commit\n\nWhen writing the commit message, follow the :ref:`commit message\nguidelines <committing-guidelines>` to ease the work of the committer. If\nyou're uncomfortable with English, try at least to describe precisely what the\ncommit does.\n\nIf you need to do additional work on your branch, commit as often as\nnecessary::\n\n    git commit -m 'Added two more tests for edge cases'\n\nPublishing work\n~~~~~~~~~~~~~~~\n\nYou can publish your work on GitHub just by doing::\n\n  git push origin ticket_xxxxx\n\nWhen you go to your GitHub page you will notice a new branch has been created.\n\nIf you are working on a Trac ticket, you should mention in the ticket that\nyour work is available from branch ticket_xxxxx of your github repo. Include a\nlink to your branch.\n\nNote that the above branch is called a \"topic branch\" in Git parlance. You are\nfree to rewrite the history of this branch, by using ``git rebase`` for\nexample. Other people shouldn't base their work on such a branch, because\ntheir clone would become corrupt when you edit commits.\n\nThere are also \"public branches\". These are branches other people are supposed\nto fork, so the history of these branches should never change. Good examples\nof public branches are the ``master`` and ``stable/A.B.x`` branches in the\ndjango/django repository.\n\nWhen you think your work is ready to be pulled into Django, you should create\na pull request at GitHub. A good pull request means:\n\n* commits with one logical change in each, following the\n  :doc:`coding style <coding-style>`,\n\n* well-formed messages for each commit: a summary line and then paragraphs\n  wrapped at 72 characters thereafter -- see the :ref:`committing guidelines\n  <committing-guidelines>` for more details,\n\n* documentation and tests, if needed -- actually tests are always needed,\n  except for documentation changes.\n\nThe test suite must pass and the documentation must build without warnings.\n\nOnce you have created your pull request, you should add a comment in the\nrelated Trac ticket explaining what you've done. In particular you should note\nthe environment in which you ran the tests, for instance: \"all tests pass\nunder SQLite and MySQL\".\n\nPull requests at GitHub have only two states: open and closed. The committer\nwho will deal with your pull request has only two options: merge it or close\nit. For this reason, it isn't useful to make a pull request until the code is\nready for merging -- or sufficiently close that a committer will finish it\nhimself.\n\nRebasing branches\n~~~~~~~~~~~~~~~~~\n\nIn the example above you created two commits, the \"Fixed ticket_xxxxx\" commit\nand \"Added two more tests\" commit.\n\nWe do not want to have the entire history of your working process in your\nrepository. Your commit \"Added two more tests\" would be unhelpful noise.\nInstead, we would rather only have one commit containing all your work.\n\nTo rework the history of your branch you can squash the commits into one by\nusing interactive rebase::\n\n    git rebase -i HEAD~2\n\nThe HEAD~2 above is shorthand for two latest commits. The above command\nwill open an editor showing the two commits, prefixed with the word \"pick\".\n\nChange the second line to \"squash\" instead. This will keep the\nfirst commit, and squash the second commit into the first one. Save and quit\nthe editor. A second editor window should open, so you can reword the\ncommit message for the commit now that it includes both your steps.\n\nYou can also use the \"edit\" option in rebase. This way you can change a single\ncommit, for example to fix a typo in a docstring::\n\n    git rebase -i HEAD~3\n    # Choose edit, pick, pick for the commits\n    # Now you are able to rework the commit (use git add normally to add changes)\n    # When finished, commit work with \"--amend\" and continue\n    git commit --amend\n    # reword the commit message if needed\n    git rebase --continue\n    # The second and third commits should be applied.\n\nIf your topic branch is already published at GitHub, for example if you're\nmaking minor changes to take into account a review, you will need to force-\npush the changes::\n\n    git push -f origin ticket_xxxxx\n\nNote that this will rewrite history of ticket_xxxxx - if you check the commit\nhashes before and after the operation at GitHub you will notice that the\ncommit hashes do not match any more. This is acceptable, as the branch is merely\na topic branch, and nobody should be basing their work on it.\n\nAfter upstream has changed\n~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nWhen upstream (django/django) has changed, you should rebase your work. To\ndo this, use::\n\n  git fetch upstream\n  git rebase\n\nThe work is automatically rebased using the branch you forked on, in the\nexample case using upstream/master.\n\nThe rebase command removes all your local commits temporarily, applies the\nupstream commits, and then applies your local commits again on the work.\n\nIf there are merge conflicts you will need to resolve them and then use ``git\nrebase --continue``. At any point you can use ``git rebase --abort`` to return\nto the original state.\n\nNote that you want to *rebase* on upstream, not *merge* the upstream.\n\nThe reason for this is that by rebasing, your commits will always be *on\ntop of* the upstream's work, not *mixed in with* the changes in the upstream.\nThis way your branch will contain only commits related to its topic, which\nmakes squashing easier.\n\nAfter review\n------------\n\nIt is unusual to get any non-trivial amount of code into core without changes\nrequested by reviewers. In this case, it is often a good idea to add the\nchanges as one incremental commit to your work. This allows the reviewer to\neasily check what changes you have done.\n\nIn this case, do the changes required by the reviewer. Commit as often as\nnecessary. Before publishing the changes, rebase your work. If you added two\ncommits, you would run::\n\n    git rebase -i HEAD~2\n\nSquash the second commit into the first. Write a commit message along the lines of::\n\n    Made changes asked in review by <reviewer>\n\n    - Fixed whitespace errors in foobar\n    - Reworded the docstring of bar()\n\nFinally push your work back to your GitHub repository. Since you didn't touch\nthe public commits during the rebase, you should not need to force-push::\n\n    git push origin ticket_xxxxx\n\nYour pull request should now contain the new commit too.\n\nNote that the committer is likely to squash the review commit into the previous commit\nwhen committing the code.\n\nSummary\n-------\n\n* Work on GitHub if you can.\n* Announce your work on the Trac ticket by linking to your GitHub branch.\n* When you have something ready, make a pull request.\n* Make your pull requests as good as you can.\n* When doing fixes to your work, use ``git rebase -i`` to squash the commits.\n* When upstream has changed, do ``git fetch upstream; git rebase``.\n"
  },
  {
    "path": "Django-1.5.1/docs/internals/contributing/writing-documentation.txt",
    "content": "=====================\nWriting documentation\n=====================\n\nWe place a high importance on consistency and readability of documentation.\nAfter all, Django was created in a journalism environment! So we treat our\ndocumentation like we treat our code: we aim to improve it as often as\npossible.\n\nDocumentation changes generally come in two forms:\n\n* General improvements: typo corrections, error fixes and better\n  explanations through clearer writing and more examples.\n\n* New features: documentation of features that have been added to the\n  framework since the last release.\n\nThis section explains how writers can craft their documentation changes\nin the most useful and least error-prone ways.\n\nGetting the raw documentation\n-----------------------------\n\nThough Django's documentation is intended to be read as HTML at\nhttps://docs.djangoproject.com/, we edit it as a collection of text files for\nmaximum flexibility. These files live in the top-level ``docs/`` directory of a\nDjango release.\n\nIf you'd like to start contributing to our docs, get the development version of\nDjango from the source code repository\n(see :ref:`installing-development-version`). The development version has the\nlatest-and-greatest documentation, just as it has latest-and-greatest code.\nWe also backport documentation fixes and improvements, at the discretion of the\ncommitter, to the last release branch. That's because it's highly advantageous\nto have the docs for the last release be up-to-date and correct (see\n:ref:`differences-between-doc-versions`).\n\nGetting started with Sphinx\n---------------------------\n\nDjango's documentation uses the Sphinx__ documentation system, which in turn\nis based on docutils__. The basic idea is that lightly-formatted plain-text\ndocumentation is transformed into HTML, PDF, and any other output format.\n\n__ http://sphinx.pocoo.org/\n__ http://docutils.sourceforge.net/\n\nTo actually build the documentation locally, you'll currently need to install\nSphinx -- ``sudo pip install Sphinx`` should do the trick.\n\n.. note::\n\n    Building the Django documentation requires Sphinx 1.0.2 or newer. Sphinx\n    also requires the Pygments__ library for syntax highlighting; building the\n    Django documentation requires Pygments 1.1 or newer (a new-enough version\n    should automatically be installed along with Sphinx).\n\n__ http://pygments.org\n\nThen, building the HTML is easy; just ``make html`` (or ``make.bat html`` on\nWindows) from the ``docs`` directory.\n\nTo get started contributing, you'll want to read the :ref:`reStructuredText\nPrimer <sphinx:rst-primer>`. After that, you'll want to read about the\n:ref:`Sphinx-specific markup <sphinx:sphinxmarkup>` that's used to manage\nmetadata, indexing, and cross-references.\n\nCommonly used terms\n-------------------\n\nHere are some style guidelines on commonly used terms throughout the\ndocumentation:\n\n* **Django** -- when referring to the framework, capitalize Django. It is\n  lowercase only in Python code and in the djangoproject.com logo.\n\n* **email** -- no hyphen.\n\n* **MySQL**, **PostgreSQL**, **SQLite**\n\n* **Python** -- when referring to the language, capitalize Python.\n\n* **realize**, **customize**, **initialize**, etc. -- use the American\n  \"ize\" suffix, not \"ise.\"\n\n* **subclass** -- it's a single word without a hyphen, both as a verb\n  (\"subclass that model\") and as a noun (\"create a subclass\").\n\n* **Web**, **World Wide Web**, **the Web** -- note Web is always\n  capitalized when referring to the World Wide Web.\n\n* **Web site** -- use two words, with Web capitalized.\n\nDjango-specific terminology\n---------------------------\n\n* **model** -- it's not capitalized.\n\n* **template** -- it's not capitalized.\n\n* **URLconf** -- use three capitalized letters, with no space before\n  \"conf.\"\n\n* **view** -- it's not capitalized.\n\nGuidelines for reStructuredText files\n-------------------------------------\n\nThese guidelines regulate the format of our reST (reStructuredText)\ndocumentation:\n\n* In section titles, capitalize only initial words and proper nouns.\n\n* Wrap the documentation at 80 characters wide, unless a code example\n  is significantly less readable when split over two lines, or for another\n  good reason.\n\n* The main thing to keep in mind as you write and edit docs is that the\n  more semantic markup you can add the better. So::\n\n      Add ``django.contrib.auth`` to your ``INSTALLED_APPS``...\n\n  Isn't nearly as helpful as::\n\n      Add :mod:`django.contrib.auth` to your :setting:`INSTALLED_APPS`...\n\n  This is because Sphinx will generate proper links for the latter, which\n  greatly helps readers. There's basically no limit to the amount of\n  useful markup you can add.\n\n* Use :mod:`~sphinx.ext.intersphinx` to reference Python's and Sphinx'\n  documentation.\n\nDjango-specific markup\n----------------------\n\nBesides the `Sphinx built-in markup`__, Django's docs defines some extra\ndescription units:\n\n__ http://sphinx.pocoo.org/markup/desc.html\n\n* Settings::\n\n        .. setting:: INSTALLED_APPS\n\n  To link to a setting, use ``:setting:`INSTALLED_APPS```.\n\n* Template tags::\n\n        .. templatetag:: regroup\n\n  To link, use ``:ttag:`regroup```.\n\n* Template filters::\n\n        .. templatefilter:: linebreaksbr\n\n  To link, use ``:tfilter:`linebreaksbr```.\n\n* Field lookups (i.e. ``Foo.objects.filter(bar__exact=whatever)``)::\n\n        .. fieldlookup:: exact\n\n  To link, use ``:lookup:`exact```.\n\n* ``django-admin`` commands::\n\n        .. django-admin:: syncdb\n\n  To link, use ``:djadmin:`syncdb```.\n\n* ``django-admin`` command-line options::\n\n        .. django-admin-option:: --traceback\n\n  To link, use ``:djadminopt:`--traceback```.\n\n.. _documenting-new-features:\n\nDocumenting new features\n------------------------\n\nOur policy for new features is:\n\n    All documentation of new features should be written in a way that\n    clearly designates the features are only available in the Django\n    development version. Assume documentation readers are using the latest\n    release, not the development version.\n\nOur preferred way for marking new features is by prefacing the features'\ndocumentation with: \"``.. versionadded:: X.Y``\", followed by an optional one\nline comment and a mandatory blank line.\n\nGeneral improvements, or other changes to the APIs that should be emphasized\nshould use the \"``.. versionchanged:: X.Y``\" directive (with the same format\nas the ``versionadded`` mentioned above.\n\nAn example\n----------\n\nFor a quick example of how it all fits together, consider this hypothetical\nexample:\n\n* First, the ``ref/settings.txt`` document could have an overall layout\n  like this:\n\n  .. code-block:: rst\n\n    ========\n    Settings\n    ========\n\n    ...\n\n    .. _available-settings:\n\n    Available settings\n    ==================\n\n    ...\n\n    .. _deprecated-settings:\n\n    Deprecated settings\n    ===================\n\n    ...\n\n* Next, the ``topics/settings.txt`` document could contain something like\n  this:\n\n  .. code-block:: rst\n\n    You can access a :ref:`listing of all available settings\n    <available-settings>`. For a list of deprecated settings see\n    :ref:`deprecated-settings`.\n\n    You can find both in the :doc:`settings reference document\n    </ref/settings>`.\n\n  We use the Sphinx :rst:role:`doc` cross reference element when we want to\n  link to another document as a whole and the :rst:role:`ref` element when\n  we want to link to an arbitrary location in a document.\n\n* Next, notice how the settings are annotated:\n\n  .. code-block:: rst\n\n    .. setting:: ADMIN_FOR\n\n    ADMIN_FOR\n    ---------\n\n    Default: ``()`` (Empty tuple)\n\n    Used for admin-site settings modules, this should be a tuple of\n    settings modules (in the format ``'foo.bar.baz'``) for which this site\n    is an admin.\n\n    The admin site uses this in its automatically-introspected\n    documentation of models, views and template tags.\n\n  This marks up the following header as the \"canonical\" target for the\n  setting ``ADMIN_FOR`` This means any time I talk about ``ADMIN_FOR``,\n  I can reference it using ``:setting:`ADMIN_FOR```.\n\nThat's basically how everything fits together.\n\n.. _improving-the-documentation:\n\nImproving the documentation\n---------------------------\n\nA few small improvements can be made to make the documentation read and\nlook better:\n\n* Most of the various ``index.txt`` documents have *very* short or even\n  non-existent intro text. Each of those documents needs a good short\n  intro the content below that point.\n\n* The glossary is very perfunctory. It needs to be filled out.\n\n* Add more metadata targets. Lots of places look like::\n\n        ``File.close()``\n        ~~~~~~~~~~~~~~~~\n\n  \\... these should be::\n\n        .. method:: File.close()\n\n  That is, use metadata instead of titles.\n\n* Add more links -- nearly everything that's an inline code literal\n  right now can probably be turned into a xref.\n\n  See the ``literals_to_xrefs.py`` file in ``_ext`` -- it's a shell script\n  to help do this work.\n\n  This will probably be a continuing, never-ending project.\n\n* Add `info field lists`__ where appropriate.\n\n  __ http://sphinx.pocoo.org/markup/desc.html#info-field-lists\n\n* Whenever possible, use links. So, use ``:setting:`ADMIN_FOR``` instead\n  of ````ADMIN_FOR````.\n\n* Use directives where appropriate. Some directives\n  (e.g. ``.. setting::``) are prefix-style directives; they go *before*\n  the unit they're describing. These are known as \"crossref\" directives.\n  Others (e.g. ``.. class::``) generate their own markup; these should go\n  inside the section they're describing. These are called\n  \"description units\".\n\n  You can tell which are which by looking at in\n  :file:`_ext/djangodocs.py`; it registers roles as one of the other.\n\n* Add ``.. code-block:: <lang>`` to literal blocks so that they get\n  highlighted.\n\n* When referring to classes/functions/modules, etc., you'll want to use\n  the fully-qualified name of the target\n  (``:class:`django.contrib.contenttypes.models.ContentType```).\n\n  Since this doesn't look all that awesome in the output -- it shows the\n  entire path to the object -- you can prefix the target with a ``~``\n  (that's a tilde) to get just the \"last bit\" of that path. So\n  ``:class:`~django.contrib.contenttypes.models.ContentType``` will just\n  display a link with the title \"ContentType\".\n"
  },
  {
    "path": "Django-1.5.1/docs/internals/deprecation.txt",
    "content": "===========================\nDjango Deprecation Timeline\n===========================\n\nThis document outlines when various pieces of Django will be removed or altered\nin a backward incompatible way, following their deprecation, as per the\n:ref:`deprecation policy <internal-release-deprecation-policy>`. More details\nabout each item can often be found in the release notes of two versions prior.\n\n1.4\n---\n\nSee the :doc:`Django 1.2 release notes</releases/1.2>` for more details on\nthese changes.\n\n* ``CsrfResponseMiddleware`` and ``CsrfMiddleware`` will be removed.  Use\n  the ``{% csrf_token %}`` template tag inside forms to enable CSRF\n  protection. ``CsrfViewMiddleware`` remains and is enabled by default.\n\n* The old imports for CSRF functionality (``django.contrib.csrf.*``),\n  which moved to core in 1.2, will be removed.\n\n* The ``django.contrib.gis.db.backend`` module will be removed in favor\n  of the specific backends.\n\n* ``SMTPConnection`` will be removed in favor of a generic Email backend API.\n\n* The many to many SQL generation functions on the database backends\n  will be removed.\n\n* The ability to use the ``DATABASE_*`` family of top-level settings to\n  define database connections will be removed.\n\n* The ability to use shorthand notation to specify a database backend\n  (i.e., ``sqlite3`` instead of ``django.db.backends.sqlite3``) will be\n  removed.\n\n* The ``get_db_prep_save``, ``get_db_prep_value`` and\n  ``get_db_prep_lookup`` methods will have to support multiple databases.\n\n* The ``Message`` model (in ``django.contrib.auth``), its related\n  manager in the ``User`` model (``user.message_set``), and the\n  associated methods (``user.message_set.create()`` and\n  ``user.get_and_delete_messages()``), will be removed.  The\n  :doc:`messages framework </ref/contrib/messages>` should be used\n  instead. The related ``messages`` variable returned by the\n  auth context processor will also be removed. Note that this\n  means that the admin application will depend on the messages\n  context processor.\n\n* Authentication backends will need to support the ``obj`` parameter for\n  permission checking. The ``supports_object_permissions`` attribute\n  will no longer be checked and can be removed from custom backends.\n\n* Authentication backends will need to support the ``AnonymousUser`` class\n  being passed to all methods dealing with permissions.  The\n  ``supports_anonymous_user`` variable will no longer be checked and can be\n  removed from custom backends.\n\n* The ability to specify a callable template loader rather than a\n  ``Loader`` class will be removed, as will the ``load_template_source``\n  functions that are included with the built in template loaders for\n  backwards compatibility.\n\n* ``django.utils.translation.get_date_formats()`` and\n  ``django.utils.translation.get_partial_date_formats()``. These functions\n  will be removed; use the locale-aware\n  ``django.utils.formats.get_format()`` to get the appropriate formats.\n\n* In ``django.forms.fields``, the constants: ``DEFAULT_DATE_INPUT_FORMATS``,\n  ``DEFAULT_TIME_INPUT_FORMATS`` and\n  ``DEFAULT_DATETIME_INPUT_FORMATS`` will be removed. Use\n  ``django.utils.formats.get_format()`` to get the appropriate\n  formats.\n\n* The ability to use a function-based test runners will be removed,\n  along with the ``django.test.simple.run_tests()`` test runner.\n\n* The ``views.feed()`` view and ``feeds.Feed`` class in\n  ``django.contrib.syndication`` will be removed. The class-based view\n  ``views.Feed`` should be used instead.\n\n* ``django.core.context_processors.auth``.  This release will\n  remove the old method in favor of the new method in\n  ``django.contrib.auth.context_processors.auth``.\n\n* The ``postgresql`` database backend will be removed, use the\n  ``postgresql_psycopg2`` backend instead.\n\n* The ``no`` language code will be removed and has been replaced by the\n  ``nb`` language code.\n\n* Authentication backends will need to define the boolean attribute\n  ``supports_inactive_user`` until version 1.5 when it will be assumed that\n  all backends will handle inactive users.\n\n* ``django.db.models.fields.XMLField`` will be removed. This was\n  deprecated as part of the 1.3 release. An accelerated deprecation\n  schedule has been used because the field hasn't performed any role\n  beyond that of a simple ``TextField`` since the removal of oldforms.\n  All uses of ``XMLField`` can be replaced with ``TextField``.\n\n* The undocumented ``mixin`` parameter to the ``open()`` method of\n  ``django.core.files.storage.Storage`` (and subclasses) will be removed.\n\n\n1.5\n---\n\nSee the :doc:`Django 1.3 release notes</releases/1.3>` for more details on\nthese changes.\n\n* Starting Django without a :setting:`SECRET_KEY` will result in an exception\n  rather than a ``DeprecationWarning``. (This is accelerated from the usual\n  deprecation path; see the :doc:`Django 1.4 release notes</releases/1.4>`.)\n\n* The ``mod_python`` request handler will be removed. The ``mod_wsgi``\n  handler should be used instead.\n\n* The ``template`` attribute on :class:`~django.test.client.Response`\n  objects returned by the :ref:`test client <test-client>` will be removed.\n  The :attr:`~django.test.client.Response.templates` attribute should be\n  used instead.\n\n* The ``django.test.simple.DjangoTestRunner`` will be removed.\n  Instead use a unittest-native class.  The features of the\n  ``django.test.simple.DjangoTestRunner`` (including fail-fast and\n  Ctrl-C test termination) can currently be provided by the unittest-native\n  :class:`~unittest.TextTestRunner`.\n\n* The undocumented function\n  ``django.contrib.formtools.utils.security_hash`` will be removed,\n  instead use ``django.contrib.formtools.utils.form_hmac``\n\n* The function-based generic view modules will be removed in favor of their\n  class-based equivalents, outlined :doc:`here\n  </topics/class-based-views/index>`.\n\n* The ``django.core.servers.basehttp.AdminMediaHandler`` will be\n  removed.  In its place use\n  ``django.contrib.staticfiles.handlers.StaticFilesHandler``.\n\n* The template tags library ``adminmedia`` and the template tag ``{%\n  admin_media_prefix %}`` will be removed in favor of the generic static files\n  handling. (This is faster than the usual deprecation path; see the\n  :doc:`Django 1.4 release notes</releases/1.4>`.)\n\n* The :ttag:`url` and :ttag:`ssi` template tags will be\n  modified so that the first argument to each tag is a template variable, not\n  an implied string. In 1.4, this behavior is provided by a version of the tag\n  in the ``future`` template tag library.\n\n* The ``reset`` and ``sqlreset`` management commands will be removed.\n\n* Authentication backends will need to support an inactive user\n  being passed to all methods dealing with permissions.\n  The ``supports_inactive_user`` attribute will no longer be checked\n  and can be removed from custom backends.\n\n* :meth:`~django.contrib.gis.geos.GEOSGeometry.transform` will raise\n  a :class:`~django.contrib.gis.geos.GEOSException` when called\n  on a geometry with no SRID value.\n\n* ``django.http.CompatCookie`` will be removed in favor of\n  ``django.http.SimpleCookie``.\n\n* ``django.core.context_processors.PermWrapper`` and\n  ``django.core.context_processors.PermLookupDict`` will be removed in\n  favor of the corresponding\n  ``django.contrib.auth.context_processors.PermWrapper`` and\n  ``django.contrib.auth.context_processors.PermLookupDict``, respectively.\n\n* The :setting:`MEDIA_URL` or :setting:`STATIC_URL` settings will be\n  required to end with a trailing slash to ensure there is a consistent\n  way to combine paths in templates.\n\n* ``django.db.models.fields.URLField.verify_exists`` will be removed. The\n  feature was deprecated in 1.3.1 due to intractable security and\n  performance issues and will follow a slightly accelerated deprecation\n  timeframe.\n\n* Translations located under the so-called *project path* will be ignored during\n  the translation building process performed at runtime. The\n  :setting:`LOCALE_PATHS` setting can be used for the same task by including the\n  filesystem path to a ``locale`` directory containing non-app-specific\n  translations in its value.\n\n* The Markup contrib app will no longer support versions of Python-Markdown\n  library earlier than 2.1. An accelerated timeline was used as this was\n  a security related deprecation.\n\n* The ``CACHE_BACKEND`` setting will be removed. The cache backend(s) should be\n  specified in the :setting:`CACHES` setting.\n\n1.6\n---\n\nSee the :doc:`Django 1.4 release notes</releases/1.4>` for more details on\nthese changes.\n\n* ``django.contrib.databrowse`` will be removed.\n\n* ``django.contrib.localflavor`` will be removed following an accelerated\n  deprecation.\n\n* ``django.contrib.markup`` will be removed following an accelerated\n  deprecation.\n\n* The compatibility modules ``django.utils.copycompat`` and\n  ``django.utils.hashcompat`` as well as the functions\n  ``django.utils.itercompat.all`` and ``django.utils.itercompat.any`` will\n  be removed. The Python builtin versions should be used instead.\n\n* The ``csrf_response_exempt`` and ``csrf_view_exempt`` decorators will\n  be removed. Since 1.4 ``csrf_response_exempt`` has been a no-op (it\n  returns the same function), and ``csrf_view_exempt`` has been a\n  synonym for ``django.views.decorators.csrf.csrf_exempt``, which should\n  be used to replace it.\n\n* The ``django.core.cache.backends.memcached.CacheClass`` backend\n  was split into two in Django 1.3 in order to introduce support for\n  PyLibMC. The historical ``CacheClass`` will be removed in favor of\n  ``django.core.cache.backends.memcached.MemcachedCache``.\n\n* The UK-prefixed objects of ``django.contrib.localflavor.uk`` will only\n  be accessible through their GB-prefixed names (GB is the correct\n  ISO 3166 code for United Kingdom).\n\n* The :setting:`IGNORABLE_404_STARTS` and :setting:`IGNORABLE_404_ENDS`\n  settings have been superseded by :setting:`IGNORABLE_404_URLS` in\n  the 1.4 release. They will be removed.\n\n* The :doc:`form wizard </ref/contrib/formtools/form-wizard>` has been\n  refactored to use class-based views with pluggable backends in 1.4.\n  The previous implementation will be removed.\n\n* Legacy ways of calling\n  :func:`~django.views.decorators.cache.cache_page` will be removed.\n\n* The backward-compatibility shim to automatically add a debug-false\n  filter to the ``'mail_admins'`` logging handler will be removed. The\n  :setting:`LOGGING` setting should include this filter explicitly if\n  it is desired.\n\n* The builtin truncation functions ``django.utils.text.truncate_words()``\n  and ``django.utils.text.truncate_html_words()`` will be removed in\n  favor of the ``django.utils.text.Truncator`` class.\n\n* The :class:`~django.contrib.gis.geoip.GeoIP` class was moved to\n  :mod:`django.contrib.gis.geoip` in 1.4 -- the shortcut in\n  :mod:`django.contrib.gis.utils` will be removed.\n\n* ``django.conf.urls.defaults`` will be removed. The functions\n  :func:`~django.conf.urls.include`, :func:`~django.conf.urls.patterns` and\n  :func:`~django.conf.urls.url` plus :data:`~django.conf.urls.handler404`,\n  :data:`~django.conf.urls.handler500`, are now available through\n  :mod:`django.conf.urls` .\n\n* The functions ``setup_environ()`` and ``execute_manager()`` will be removed\n  from :mod:`django.core.management`. This also means that the old (pre-1.4)\n  style of :file:`manage.py` file will no longer work.\n\n* Setting the ``is_safe`` and ``needs_autoescape`` flags as attributes of\n  template filter functions will no longer be supported.\n\n* The attribute ``HttpRequest.raw_post_data`` was renamed to ``HttpRequest.body``\n  in 1.4. The backward compatibility will be removed --\n  ``HttpRequest.raw_post_data`` will no longer work.\n\n\n* The value for the ``post_url_continue`` parameter in\n  ``ModelAdmin.response_add()`` will have to be either ``None`` (to redirect\n  to the newly created object's edit page) or a pre-formatted url. String\n  formats, such as the previous default ``'../%s/'``, will not be accepted any\n  more.\n\n1.7\n---\n\nSee the :doc:`Django 1.5 release notes</releases/1.5>` for more details on\nthese changes.\n\n* The module ``django.utils.simplejson`` will be removed. The standard library\n  provides :mod:`json` which should be used instead.\n\n* The function ``django.utils.itercompat.product`` will be removed. The Python\n  builtin version should be used instead.\n\n* Auto-correction of INSTALLED_APPS and TEMPLATE_DIRS settings when they are\n  specified as a plain string instead of a tuple will be removed and raise an\n  exception.\n\n* The ``mimetype`` argument to the ``__init__`` methods of\n  :class:`~django.http.HttpResponse`,\n  :class:`~django.template.response.SimpleTemplateResponse`, and\n  :class:`~django.template.response.TemplateResponse`, will be removed.\n  ``content_type`` should be used instead. This also applies to the\n  :func:`~django.shortcuts.render_to_response` shortcut and\n  the sitemamp views, :func:`~django.contrib.sitemaps.views.index` and\n  :func:`~django.contrib.sitemaps.views.sitemap`.\n\n* When :class:`~django.http.HttpResponse` is instantiated with an iterator,\n  or when :attr:`~django.http.HttpResponse.content` is set to an iterator,\n  that iterator will be immediately consumed.\n\n* The ``AUTH_PROFILE_MODULE`` setting, and the ``get_profile()`` method on\n  the User model, will be removed.\n\n* The ``cleanup`` management command will be removed. It's replaced by\n  ``clearsessions``.\n\n* The ``daily_cleanup.py`` script will be removed.\n\n* The ``depth`` keyword argument will be removed from\n  :meth:`~django.db.models.query.QuerySet.select_related`.\n\n2.0\n---\n\n* ``django.views.defaults.shortcut()``. This function has been moved\n  to ``django.contrib.contenttypes.views.shortcut()`` as part of the\n  goal of removing all ``django.contrib`` references from the core\n  Django codebase. The old shortcut will be removed in the 2.0\n  release.\n\n* ``ssi`` and ``url`` template tags will be removed from the ``future`` template\n  tag library (used during the 1.3/1.4 deprecation period).\n"
  },
  {
    "path": "Django-1.5.1/docs/internals/git.txt",
    "content": "=================================\nThe Django source code repository\n=================================\n\nWhen deploying a Django application into a real production environment, you\nwill almost always want to use `an official packaged release of Django`_.\n\nHowever, if you'd like to try out in-development code from an upcoming release\nor contribute to the development of Django, you'll need to obtain a clone of\nDjango's source code repository.\n\nThis document covers the way the code repository is laid out and how to work\nwith and find things in it.\n\n.. _an official packaged release of Django: https://www.djangoproject.com/download/\n\nHigh-level overview\n===================\n\nThe Django source code repository uses `Git`_ to track changes to the code\nover time, so you'll need a copy of the Git client (a program called ``git``)\non your computer, and you'll want to familiarize yourself with the basics of\nhow Git works.\n\nGit's web site offers downloads for various operating systems. The site also\ncontains vast amounts of `documentation`_.\n\nThe Django Git repository is located online at `github.com/django/django\n<https://github.com/django/django>`_. It contains the full source code for all\nDjango releases, which you can browse online.\n\nThe Git repository includes several `branches`_:\n\n* ``master`` contains the main in-development code which will become\n  the next packaged release of Django. This is where most development\n  activity is focused.\n\n* ``stable/A.B.x`` are the maintenance branches. They are used to support\n  older versions of Django.\n\n* ``soc20XX/<project>`` branches were used by students who worked on Django\n  during the 2009 and 2010 Google Summer of Code programs.\n\n* ``attic/<project>`` branches were used to develop major or experimental new\n  features without affecting the rest of Django's code.\n\nThe Git repository also contains `tags`_. These are the exact revisions from\nwhich packaged Django releases were produced, since version 1.0.\n\nThe source code for the `Djangoproject.com <https://www.djangoproject.com/>`_ web\nsite can be found at `github.com/django/djangoproject.com\n<https://github.com/django/djangoproject.com>`_.\n\n.. _Git: http://git-scm.com/\n.. _documentation: http://git-scm.com/documentation\n.. _branches: https://github.com/django/django/branches\n.. _tags: https://github.com/django/django/tags\n\nThe master branch\n=================\n\nIf you'd like to try out the in-development code for the next release of\nDjango, or if you'd like to contribute to Django by fixing bugs or developing\nnew features, you'll want to get the code from the master branch.\n\nNote that this will get *all* of Django: in addition to the top-level\n``django`` module containing Python code, you'll also get a copy of Django's\ndocumentation, test suite, packaging scripts and other miscellaneous bits.\nDjango's code will be present in your clone as a directory named\n``django``.\n\nTo try out the in-development code with your own applications, simply place\nthe directory containing your clone on your Python import path. Then\n``import`` statements which look for Django will find the ``django`` module\nwithin your clone.\n\nIf you're going to be working on Django's code (say, to fix a bug or\ndevelop a new feature), you can probably stop reading here and move\nover to :doc:`the documentation for contributing to Django\n</internals/contributing/index>`, which covers things like the preferred\ncoding style and how to generate and submit a patch.\n\nOther branches\n==============\n\nDjango uses branches for two main purposes:\n\n1. Development of major or experimental features, to keep them from\n   affecting progress on other work in master.\n\n2. Security and bugfix support for older releases of Django, during\n   their support lifetimes.\n\nFeature-development branches\n----------------------------\n\n.. admonition:: Historical information\n\n    Since Django moved to Git in 2012, anyone can clone the repository and\n    create his own branches, alleviating the need for official branches in the\n    source code repository.\n\n    The following section is mostly useful if you're exploring the repository's\n    history, for example if you're trying to understand how some features were\n    designed.\n\nFeature-development branches tend by their nature to be temporary. Some\nproduce successful features which are merged back into Django's master to\nbecome part of an official release, but others do not; in either case there\ncomes a time when the branch is no longer being actively worked on by any\ndeveloper. At this point the branch is considered closed.\n\nUnfortunately, Django used to be maintained with the Subversion revision\ncontrol system, that has no standard way of indicating this. As a workaround,\nbranches of Django which are closed and no longer maintained were moved into\n``attic``.\n\nFor reference, the following are branches whose code eventually became\npart of Django itself, and so are no longer separately maintained:\n\n* ``boulder-oracle-sprint``: Added support for Oracle databases to\n  Django's object-relational mapper. This has been part of Django\n  since the 1.0 release.\n\n* ``gis``: Added support for geographic/spatial queries to Django's\n  object-relational mapper. This has been part of Django since the 1.0\n  release, as the bundled application ``django.contrib.gis``.\n\n* ``i18n``: Added :doc:`internationalization support </topics/i18n/index>` to\n  Django. This has been part of Django since the 0.90 release.\n\n* ``magic-removal``: A major refactoring of both the internals and\n  public APIs of Django's object-relational mapper. This has been part\n  of Django since the 0.95 release.\n\n* ``multi-auth``: A refactoring of :doc:`Django's bundled\n  authentication framework </topics/auth/index>` which added support for\n  :ref:`authentication backends <authentication-backends>`. This has\n  been part of Django since the 0.95 release.\n\n* ``new-admin``: A refactoring of :doc:`Django's bundled\n  administrative application </ref/contrib/admin/index>`. This became part of\n  Django as of the 0.91 release, but was superseded by another\n  refactoring (see next listing) prior to the Django 1.0 release.\n\n* ``newforms-admin``: The second refactoring of Django's bundled\n  administrative application. This became part of Django as of the 1.0\n  release, and is the basis of the current incarnation of\n  ``django.contrib.admin``.\n\n* ``queryset-refactor``: A refactoring of the internals of Django's\n  object-relational mapper. This became part of Django as of the 1.0\n  release.\n\n* ``unicode``: A refactoring of Django's internals to consistently use\n  Unicode-based strings in most places within Django and Django\n  applications. This became part of Django as of the 1.0 release.\n\nWhen Django moved from SVN to Git, the information about branch merges wasn't\npreserved in the source code repository. This means that the ``master`` branch\nof Django doesn't contain merge commits for the above branches.\n\nHowever, this information is `available as a grafts file`_. You can restore it\nby putting the following lines in ``.git/info/grafts`` in your local clone::\n\n  ac64e91a0cadc57f4bc5cd5d66955832320ca7a1 553a20075e6991e7a60baee51ea68c8adc520d9a 0cb8e31823b2e9f05c4ae868c19f5f38e78a5f2e\n  79e68c225b926302ebb29c808dda8afa49856f5c d0f57e7c7385a112cb9e19d314352fc5ed5b0747 aa239e3e5405933af6a29dac3cf587b59a099927\n  5cf8f684237ab5addaf3549b2347c3adf107c0a7 cb45fd0ae20597306cd1f877efc99d9bd7cbee98 e27211a0deae2f1d402537f0ebb64ad4ccf6a4da\n  f69cf70ed813a8cd7e1f963a14ae39103e8d5265 d5dbeaa9be359a4c794885c2e9f1b5a7e5e51fb8 d2fcbcf9d76d5bb8a661ee73dae976c74183098b\n  aab3a418ac9293bb4abd7670f65d930cb0426d58 4ea7a11659b8a0ab07b0d2e847975f7324664f10 adf4b9311d5d64a2bdd58da50271c121ea22e397\n  ff60c5f9de3e8690d1e86f3e9e3f7248a15397c8 7ef212af149540aa2da577a960d0d87029fd1514 45b4288bb66a3cda401b45901e85b645674c3988\n  9dda4abee1225db7a7b195b84c915fdd141a7260 4fe5c9b7ee09dc25921918a6dbb7605edb374bc9 3a7c14b583621272d4ef53061287b619ce3c290d\n  a19ed8aea395e8e07164ff7d85bd7dff2f24edca dc375fb0f3b7fbae740e8cfcd791b8bccb8a4e66 42ea7a5ce8aece67d16c6610a49560c1493d4653\n  9c52d56f6f8a9cdafb231adf9f4110473099c9b5 c91a30f00fd182faf8ca5c03cd7dbcf8b735b458 4a5c5c78f2ecd4ed8859cd5ac773ff3a01bccf96\n  953badbea5a04159adbfa970f5805c0232b6a401 4c958b15b250866b70ded7d82aa532f1e57f96ae 5664a678b29ab04cad425c15b2792f4519f43928\n  471596fc1afcb9c6258d317c619eaf5fd394e797 4e89105d64bb9e04c409139a41e9c7aac263df4c 3e9035a9625c8a8a5e88361133e87ce455c4fc13\n  9233d0426537615e06b78d28010d17d5a66adf44 6632739e94c6c38b4c5a86cf5c80c48ae50ac49f 18e151bc3f8a85f2766d64262902a9fcad44d937\n\n.. _available as a grafts file: https://github.com/ramiro/django-git-grafts\n\nAdditionally, the following branches are closed, but their code was\nnever merged into Django and the features they aimed to implement\nwere never finished:\n\n* ``full-history``\n\n* ``generic-auth``\n\n* ``multiple-db-support``\n\n* ``per-object-permissions``\n\n* ``schema-evolution``\n\n* ``schema-evolution-ng``\n\n* ``search-api``\n\n* ``sqlalchemy``\n\nAll of the above-mentioned branches now reside in ``attic``.\n\nFinally, the repository contains ``soc2009/xxx`` and ``soc2010/xxx`` feature\nbranches, used for Google Summer of Code projects.\n\nSupport and bugfix branches\n---------------------------\n\nIn addition to fixing bugs in current master, the Django project provides\nofficial bugfix support for the most recent released version of Django, and\nsecurity support for the two most recently-released versions of Django.\n\nThis support is provided via branches in which the necessary bug or security\nfixes are applied; the branches are then used as the basis for issuing bugfix\nor security releases.\n\nThese branches can be found in the repository as ``stable/A.B.x``\nbranches, and new branches will be created there after each new Django\nrelease.\n\nFor example, shortly after the release of Django 1.0, the branch\n``stable/1.0.x`` was created to receive bug fixes, and shortly after the\nrelease of Django 1.1 the branch ``stable/1.1.x`` was created.\n\nOfficial support for the above mentioned releases has expired, and so they no\nlonger receive direct maintenance from the Django project. However, the\nbranches continue to exist and interested community members have occasionally\nused them to provide unofficial support for old Django releases.\n\nTags\n====\n\nEach Django release is tagged and signed by Django's release manager.\n\nThe tags can be found on GitHub's `tags`_ page.\n\n.. _tags: https://github.com/django/django/tags\n"
  },
  {
    "path": "Django-1.5.1/docs/internals/index.txt",
    "content": "Django internals\n================\n\nDocumentation for people hacking on Django itself. This is the place to go if\nyou'd like to help improve Django, learn or learn about how Django works \"under\nthe hood\".\n\n.. warning::\n\n    Elsewhere in the Django documentation, coverage of a feature is a sort of a\n    contract: once an API is in the official documentation, we consider it\n    \"stable\" and don't change it without a good reason. APIs covered here,\n    however, are considered \"internal-only\": we reserve the right to change\n    these internals if we must.\n\n.. toctree::\n   :maxdepth: 2\n\n   contributing/index\n   committers\n   security\n   release-process\n   deprecation\n   git\n"
  },
  {
    "path": "Django-1.5.1/docs/internals/release-process.txt",
    "content": "========================\nDjango's release process\n========================\n\n.. _official-releases:\n\nOfficial releases\n=================\n\nSince version 1.0, Django's release numbering works as follows:\n\n* Versions are numbered in the form ``A.B`` or ``A.B.C``.\n\n* ``A`` is the *major version* number, which is only incremented for major\n  changes to Django, and these changes are not necessarily\n  backwards-compatible. That is, code you wrote for Django 1.2 may break\n  when we release Django 2.0.\n\n* ``B`` is the *minor version* number, which is incremented for large yet\n  backwards compatible changes.  Code written for Django 1.2 will continue\n  to work under Django 1.3. Exceptions to this rule will be listed in the\n  release notes.\n\n* ``C`` is the *micro version* number, which is incremented for bug and\n  security fixes. A new micro-release will be 100% backwards-compatible with\n  the previous micro-release. The only exception is when a security issue\n  can't be fixed without breaking backwards-compatibility. If this happens,\n  the release notes will provide detailed upgrade instructions.\n\n* In some cases, we'll make alpha, beta, or release candidate releases.\n  These are of the form ``A.B alpha/beta/rc N``, which means the ``Nth``\n  alpha/beta/release candidate of version ``A.B``.\n\nIn git, each Django release will have a tag indicating its version\nnumber, signed with the Django release key. Additionally, each release\nseries (X.Y) has its own branch, and bugfix/security releases will be\nissued from those branches.\n\nFor more information about how the Django project issues new releases\nfor security purposes, please see :doc:`our security policies\n<security>`.\n\nMajor releases\n--------------\n\nMajor releases (1.0, 2.0, etc.) will happen very infrequently (think \"years\",\nnot \"months\"), and will probably represent major, sweeping changes to Django.\n\nMinor releases\n--------------\n\nMinor release (1.1, 1.2, etc.) will happen roughly every nine months -- see\n`release process`_, below for details.\n\n.. _internal-release-deprecation-policy:\n\nThese releases will contain new features, improvements to existing features, and\nsuch. A minor release may deprecate certain features from previous releases. If a\nfeature in version ``A.B`` is deprecated, it will continue to work in version\n``A.B+1``. In version ``A.B+2``, use of the feature will raise a\n``DeprecationWarning`` but will continue to work. Version ``A.B+3`` will\nremove the feature entirely.\n\nSo, for example, if we decided to remove a function that existed in Django 1.0:\n\n* Django 1.1 will contain a backwards-compatible replica of the function\n  which will raise a ``PendingDeprecationWarning``. This warning is silent\n  by default; you need to explicitly turn on display of these warnings.\n\n* Django 1.2 will contain the backwards-compatible replica, but the warning\n  will be promoted to a full-fledged ``DeprecationWarning``. This warning is\n  *loud* by default, and will likely be quite annoying.\n\n* Django 1.3 will remove the feature outright.\n\nMicro releases\n--------------\n\nMicro releases (1.0.1, 1.0.2, 1.1.1, etc.) will be issued at least once half-way\nbetween minor releases, and probably more often as needed.\n\nThese releases will be 100% compatible with the associated minor release, unless\nthis is impossible for security reasons. So the answer to \"should I upgrade to\nthe latest micro release?\" will always be \"yes.\"\n\nEach minor release of Django will have a \"release maintainer\" appointed. This\nperson will be responsible for making sure that bug fixes are applied to both\ntrunk and the maintained micro-release branch. This person will also work with\nthe release manager to decide when to release the micro releases.\n\n.. _backwards-compatibility-policy:\n\nSupported versions\n==================\n\nAt any moment in time, Django's developer team will support a set of releases to\nvarying levels:\n\n* The current development trunk will get new features and bug fixes\n  requiring major refactoring.\n\n* Patches applied to the trunk will also be applied to the last minor\n  release, to be released as the next micro release, when they fix critical\n  problems:\n\n  * Security issues.\n\n  * Data-loss bugs.\n\n  * Crashing bugs.\n\n  * Major functionality bugs in newly-introduced features.\n\n  The rule of thumb is that fixes will be backported to the last minor\n  release for bugs that would have prevented a release in the first place.\n\n* Security fixes will be applied to the current trunk and the previous two\n  minor releases.\n\n* Documentation fixes generally will be more freely backported to the last\n  release branch, at the discretion of the committer, and they don't need to\n  meet the \"critical fixes only\" bar. That's because it's highly advantageous\n  to have the docs for the last release be up-to-date and correct, and the\n  downside of backporting (risk of introducing regressions) is much less of a\n  concern.\n\nAs a concrete example, consider a moment in time halfway between the release of\nDjango 1.3 and 1.4. At this point in time:\n\n* Features will be added to development trunk, to be released as Django 1.4.\n\n* Critical bug fixes will be applied to a ``1.3.X`` branch, and released as\n  1.3.1, 1.3.2, etc.\n\n* Security fixes will be applied to trunk, a ``1.3.X`` branch and a\n  ``1.2.X`` branch. They will trigger the release of ``1.3.1``, ``1.2.1``,\n  etc.\n\n* Documentation fixes will be applied to trunk, and, if easily backported, to\n  the ``1.3.X`` branch.\n\n.. _release-process:\n\nRelease process\n===============\n\nDjango uses a time-based release schedule, with minor (i.e. 1.1, 1.2, etc.)\nreleases every nine months, or more, depending on features.\n\nAfter each release, and after a suitable cooling-off period of a few weeks, the\ncore development team will examine the landscape and announce a timeline for the\nnext release. Most releases will be scheduled in the 6-9 month range, but if we\nhave bigger features to development we might schedule a longer period to allow\nfor more ambitious work.\n\nRelease cycle\n-------------\n\nEach release cycle will be split into three periods, each lasting roughly\none-third of the cycle:\n\nPhase one: feature proposal\n~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe first phase of the release process will be devoted to figuring out what\nfeatures to include in the next version. This should include a good deal of\npreliminary work on those features -- working code trumps grand design.\n\nAt the end of part one, the core developers will propose a feature list for the\nupcoming release. This will be broken into:\n\n* \"Must-have\": critical features that will delay the release if not finished\n* \"Maybe\" features: that will be pushed to the next release if not finished\n* \"Not going to happen\": features explicitly deferred to a later release.\n\nAnything that hasn't got at least some work done by the end of the first third\nisn't eligible for the next release; a design alone isn't sufficient.\n\nPhase two: development\n~~~~~~~~~~~~~~~~~~~~~~\n\nThe second third of the release schedule is the \"heads-down\" working period.\nUsing the roadmap produced at the end of phase one, we'll all work very hard to\nget everything on it done.\n\nLonger release schedules will likely spend more than a third of the time in this\nphase.\n\nAt the end of phase two, any unfinished \"maybe\" features will be postponed until\nthe next release. Though it shouldn't happen, any \"must-have\" features will\nextend phase two, and thus postpone the final release.\n\nPhase two will culminate with an alpha release.\n\nPhase three: bugfixes\n~~~~~~~~~~~~~~~~~~~~~\n\nThe last third of a release is spent fixing bugs -- no new features will be\naccepted during this time. We'll release a beta release about halfway through,\nand an rc complete with string freeze two weeks before the end of the schedule.\n\nBug-fix releases\n----------------\n\nAfter a minor release (e.g. 1.1), the previous release will go into bugfix\nmode.\n\nA branch will be created of the form ``branches/releases/1.0.X`` to track\nbugfixes to the previous release. Critical bugs fixed on trunk must\n*also* be fixed on the bugfix branch; this means that commits need to cleanly\nseparate bug fixes from feature additions. The developer who commits a fix to\ntrunk will be responsible for also applying the fix to the current bugfix\nbranch.  Each bugfix branch will have a maintainer who will work with the\ncommitters to keep them honest on backporting bug fixes.\n\nHow this all fits together\n--------------------------\n\nLet's look at a hypothetical example for how this all first together. Imagine,\nif you will, a point about halfway between 1.1 and 1.2. At this point,\ndevelopment will be happening in a bunch of places:\n\n* On trunk, development towards 1.2 proceeds with small additions, bugs\n  fixes, etc. being checked in daily.\n\n* On the branch \"branches/releases/1.1.X\", fixes for critical bugs found in\n  the 1.1 release are checked in as needed. At some point, this branch will\n  be released as \"1.1.1\", \"1.1.2\", etc.\n\n* On the branch \"branches/releases/1.0.X\", security fixes are made if\n  needed and released as \"1.0.2\", \"1.0.3\", etc.\n\n* On feature branches, development of major features is done. These\n  branches will be merged into trunk before the end of phase two.\n"
  },
  {
    "path": "Django-1.5.1/docs/internals/security.txt",
    "content": "==========================\nDjango's security policies\n==========================\n\nDjango's development team is strongly committed to responsible\nreporting and disclosure of security-related issues. As such, we've\nadopted and follow a set of policies which conform to that ideal and\nare geared toward allowing us to deliver timely security updates to\nthe official distribution of Django, as well as to third-party\ndistributions.\n\n.. _reporting-security-issues:\n\nReporting security issues\n=========================\n\n**Short version: please report security issues by emailing\nsecurity@djangoproject.com**.\n\nMost normal bugs in Django are reported to `our public Trac\ninstance`_, but due to the sensitive nature of security issues, we ask\nthat they *not* be publicly reported in this fashion.\n\nInstead, if you believe you've found something in Django which has\nsecurity implications, please send a description of the issue via\nemail to ``security@djangoproject.com``. Mail sent to that address\nreaches a subset of the core development team, who can forward\nsecurity issues into the private committers' mailing list for broader\ndiscussion if needed.\n\nYou can send encrypted email to this address; the public key ID for\n``security@djangoproject.com`` is ``0xfcb84b8d1d17f80b``, and this\npublic key is available from most commonly-used keyservers.\n\nOnce you've submitted an issue via email, you should receive an\nacknowledgment from a member of the Django development team within 48\nhours, and depending on the action to be taken, you may receive\nfurther followup emails.\n\n.. _our public Trac instance: https://code.djangoproject.com/query\n\n.. _security-support:\n\nSupported versions\n==================\n\nAt any given time, the Django team provides official security support\nfor several versions of Django:\n\n* The `master development branch`_, hosted on GitHub, which will\n  become the next release of Django, receives security support.\n\n* The two most recent Django release series receive security\n  support. For example, during the development cycle leading to the\n  release of Django 1.5, support will be provided for Django 1.4 and\n  Django 1.3. Upon the release of Django 1.5, Django 1.3's security\n  support will end.\n\nWhen new releases are issued for security reasons, the accompanying\nnotice will include a list of affected versions. This list is\ncomprised solely of *supported* versions of Django: older versions may\nalso be affected, but we do not investigate to determine that, and\nwill not issue patches or new releases for those versions.\n\n.. _master development branch: https://github.com/django/django/\n\n.. _security-disclosure:\n\nHow Django discloses security issues\n====================================\n\nOur process for taking a security issue from private discussion to\npublic disclosure involves multiple steps.\n\nApproximately one week before full public disclosure, we will send\nadvance notification of the issue to a list of people and\norganizations, primarily composed of operating-system vendors and\nother distributors of Django. This notification will consist of an\nemail message, signed with the Django release key, containing:\n\n* A full description of the issue and the affected versions of Django.\n\n* The steps we will be taking to remedy the issue.\n\n* The patch(es), if any, that will be applied to Django.\n\n* The date on which the Django team will apply these patches, issue\n  new releases and publicy disclose the issue.\n\nSimultaneously, the reporter of the issue will receive notification of\nthe date on which we plan to take the issue public.\n\nOn the day of disclosure, we will take the following steps:\n\n1. Apply the relevant patch(es) to Django's codebase. The commit\n   messages for these patches will indicate that they are for security\n   issues, but will not describe the issue in any detail; instead,\n   they will warn of upcoming disclosure.\n\n2. Issue the relevant release(s), by placing new packages on `the\n   Python Package Index`_ and on the Django website, and tagging the\n   new release(s) in Django's git repository.\n\n3. Post a public entry on `the official Django development blog`_,\n   describing the issue and its resolution in detail, pointing to the\n   relevant patches and new releases, and crediting the reporter of\n   the issue (if the reporter wishes to be publicly identified).\n\n.. _the Python Package Index: http://pypi.python.org/pypi\n.. _the official Django development blog: https://www.djangoproject.com/weblog/\n\nIf a reported issue is believed to be particularly time-sensitive --\ndue to a known exploit in the wild, for example -- the time between\nadvance notification and public disclosure may be shortened\nconsiderably.\n\nAdditionally, if we have reason to believe that an issue reported to\nus affects other frameworks or tools in the Python/web ecosystem, we\nmay privately contact and discuss those issues with the appropriate\nmaintainers, and coordinate our own disclosure and resolution with\ntheirs.\n\n.. _security-notifications:\n\nWho receives advance notification\n=================================\n\nThe full list of people and organizations who receive advance\nnotification of security issues is not and will not be made public.\n\nWe also aim to keep this list as small as effectively possible, in\norder to better manage the flow of confidential information prior to\ndisclosure. As such, our notification list is *not* simply a list of\nusers of Django, and merely being a user of Django is not sufficient\nreason to be placed on the notification list.\n\nIn broad terms, recipients of security notifications fall into three\ngroups:\n\n1. Operating-system vendors and other distributors of Django who\n   provide a suitably-generic (i.e., *not* an individual's personal\n   email address) contact address for reporting issues with their\n   Django package, or for general security reporting. In either case,\n   such addresses **must not** forward to public mailing lists or bug\n   trackers. Addresses which forward to the private email of an\n   individual maintainer or security-response contact are acceptable,\n   although private security trackers or security-response groups are\n   strongly preferred.\n\n2. On a case-by-case basis, individual package maintainers who have\n   demonstrated a commitment to responding to and responsibly acting\n   on these notifications.\n\n3. On a case-by-case basis, other entities who, in the judgment of the\n   Django development team, need to be made aware of a pending\n   security issue. Typically, membership in this group will consist of\n   some of the largest and/or most likely to be severely impacted\n   known users or distributors of Django, and will require a\n   demonstrated ability to responsibly receive, keep confidential and\n   act on these notifications.\n\nAdditionally, a maximum of six days prior to disclosure, notification\nwill be sent to the ``distros@vs.openwall.org`` mailing list, whose\nmembership includes representatives of most major open-source\noperating system vendors.\n\nRequesting notifications\n========================\n\nIf you believe that you, or an organization you are authorized to\nrepresent, fall into one of the groups listed above, you can ask to be\nadded to Django's notification list by emailing\n``security@djangoproject.com``. Please use the subject line \"Security\nnotification request\".\n\nYour request **must** include the following information:\n\n* Your full, real name and the name of the organization you represent,\n  if applicable, as well as your role within that organization.\n\n* A detailed explanation of how you or your organization fit at least\n  one set of criteria listed above.\n\n* A detailed explanation of why you are requesting security\n  notifications. Again, please keep in mind that this is *not* simply\n  a list for users of Django, and the overwhelming majority of users\n  of Django should not request notifications and will not be added to\n  our notification list if they do.\n\n* The email address you would like to have added to our notification\n  list.\n\n* An explanation of who will be receiving/reviewing mail sent to that\n  address, as well as information regarding any automated actions that\n  will be taken (i.e., filing of a confidential issue in a bug\n  tracker).\n\n* For individuals, the ID of a public key associated with your address\n  which can be used to verify email received from you and encrypt\n  email sent to you, as needed.\n\nOnce submitted, your request will be considered by the Django\ndevelopment team; you will receive a reply notifying you of the result\nof your request within 30 days.\n\nPlease also bear in mind that for any individual or organization,\nreceiving security notifications is a privilege granted at the sole\ndiscretion of the Django development team, and that this privilege can\nbe revoked at any time, with or without explanation.\n\nIf you are added to the notification list, security-related emails\nwill be sent to you by Django's release manager, and all notification\nemails will be signed with the same key used to sign Django releases;\nthat key has the ID ``0x3684C0C08C8B2AE1``, and is available from most\ncommonly-used keyservers."
  },
  {
    "path": "Django-1.5.1/docs/intro/contributing.txt",
    "content": "===================================\nWriting your first patch for Django\n===================================\n\nIntroduction\n============\n\nInterested in giving back to the community a little? Maybe you've found a bug\nin Django that you'd like to see fixed, or maybe there's a small feature you\nwant added.\n\nContributing back to Django itself is the best way to see your own concerns\naddressed. This may seem daunting at first, but it's really pretty simple.\nWe'll walk you through the entire process, so you can learn by example.\n\nWho's this tutorial for?\n------------------------\n\nFor this tutorial, we expect that you have at least a basic understanding of\nhow Django works. This means you should be comfortable going through the\nexisting tutorials on :doc:`writing your first Django app</intro/tutorial01>`.\nIn addition, you should have a good understanding of Python itself. But if you\ndon't, `Dive Into Python`__ is a fantastic (and free) online book for beginning\nPython programmers.\n\nThose of you who are unfamiliar with version control systems and Trac will find\nthat this tutorial and its links include just enough information to get started.\nHowever, you'll probably want to read some more about these different tools if\nyou plan on contributing to Django regularly.\n\nFor the most part though, this tutorial tries to explain as much as possible,\nso that it can be of use to the widest audience.\n\n.. admonition:: Where to get help:\n\n    If you're having trouble going through this tutorial, please post a message\n    to `django-developers`__ or drop by `#django-dev on irc.freenode.net`__ to\n    chat with other Django users who might be able to help.\n\n__ http://diveintopython.net/toc/index.html\n__ http://groups.google.com/group/django-developers\n__ irc://irc.freenode.net/django-dev\n\nWhat does this tutorial cover?\n------------------------------\n\nWe'll be walking you through contributing a patch to Django for the first time.\nBy the end of this tutorial, you should have a basic understanding of both the\ntools and the processes involved. Specifically, we'll be covering the following:\n\n* Installing Git.\n* How to download a development copy of Django.\n* Running Django's test suite.\n* Writing a test for your patch.\n* Writing the code for your patch.\n* Testing your patch.\n* Generating a patch file for your changes.\n* Where to look for more information.\n\nOnce you're done with the tutorial, you can look through the rest of\n:doc:`Django's documentation on contributing</internals/contributing/index>`.\nIt contains lots of great information and is a must read for anyone who'd like\nto become a regular contributor to Django. If you've got questions, it's\nprobably got the answers.\n\nInstalling Git\n==============\n\nFor this tutorial, you'll need Git installed to download the current\ndevelopment version of Django and to generate patch files for the changes you\nmake.\n\nTo check whether or not you have Git installed, enter ``git`` into the command\nline. If you get messages saying that this command could be found, you'll have\nto download and install it, see `Git's download page`__.\n\nIf you're not that familiar with Git, you can always find out more about its\ncommands (once it's installed) by typing ``git help`` into the command line.\n\n__ http://git-scm.com/download\n\nGetting a copy of Django's development version\n==============================================\n\nThe first step to contributing to Django is to get a copy of the source code.\nFrom the command line, use the ``cd`` command to navigate to the directory\nwhere you'll want your local copy of Django to live.\n\nDownload the Django source code repository using the following command::\n\n    git clone https://github.com/django/django.git\n\n.. note::\n\n    For users who wish to use `virtualenv`__, you can use::\n\n        pip install -e /path/to/your/local/clone/django/\n\n    (where ``django`` is the directory of your clone that contains\n    ``setup.py``) to link your cloned checkout into a virtual environment. This\n    is a great option to isolate your development copy of Django from the rest\n    of your system and avoids potential package conflicts.\n\n__ http://www.virtualenv.org\n\nRolling back to a previous revision of Django\n=============================================\n\nFor this tutorial, we'll be using `ticket #17549`__ as a case study, so we'll\nrewind Django's version history in git to before that ticket's patch was\napplied. This will allow us to go through all of the steps involved in writing\nthat patch from scratch, including running Django's test suite.\n\n**Keep in mind that while we'll be using an older revision of Django's trunk\nfor the purposes of the tutorial below, you should always use the current\ndevelopment revision of Django when working on your own patch for a ticket!**\n\n.. note::\n\n    The patch for this ticket was written by Ulrich Petri, and it was applied\n    to Django as `commit ac2052ebc84c45709ab5f0f25e685bf656ce79bc`__.\n    Consequently, we'll be using the revision of Django just prior to that,\n    `commit 39f5bc7fc3a4bb43ed8a1358b17fe0521a1a63ac`__.\n\n__ https://code.djangoproject.com/ticket/17549\n__ https://github.com/django/django/commit/ac2052ebc84c45709ab5f0f25e685bf656ce79bc\n__ https://github.com/django/django/commit/39f5bc7fc3a4bb43ed8a1358b17fe0521a1a63ac\n\nNavigate into Django's root directory (that's the one that contains ``django``,\n``docs``, ``tests``, ``AUTHORS``, etc.). You can then check out the older\nrevision of Django that we'll be using in the tutorial below::\n\n    git checkout 39f5bc7fc3a4bb43ed8a1358b17fe0521a1a63ac\n\nRunning Django's test suite for the first time\n==============================================\n\nWhen contributing to Django it's very important that your code changes don't\nintroduce bugs into other areas of Django.  One way to check that Django still\nworks after you make your changes is by running Django's test suite. If all\nthe tests still pass, then you can be reasonably sure that your changes\nhaven't completely broken Django. If you've never run Django's test suite\nbefore, it's a good idea to run it once beforehand just to get familiar with\nwhat its output is supposed to look like.\n\nWe can run the test suite by simply ``cd``-ing into the Django ``tests/``\ndirectory and, if you're using GNU/Linux, Mac OS X or some other flavor of\nUnix, run::\n\n    PYTHONPATH=.. python runtests.py --settings=test_sqlite\n\nIf you're on Windows, the above should work provided that you are using\n\"Git Bash\" provided by the default Git install. GitHub has a `nice tutorial`__.\n\n__ https://help.github.com/articles/set-up-git#platform-windows\n\n.. note::\n\n    If you're using ``virtualenv``, you can omit ``PYTHONPATH=..`` when running\n    the tests. This instructs Python to look for Django in the parent directory\n    of ``tests``. ``virtualenv`` puts your copy of Django on the ``PYTHONPATH``\n    automatically.\n\nNow sit back and relax. Django's entire test suite has over 4800 different\ntests, so it can take anywhere from 5 to 15 minutes to run, depending on the\nspeed of your computer.\n\nWhile Django's test suite is running, you'll see a stream of characters\nrepresenting the status of each test as it's run. ``E`` indicates that an error\nwas raised during a test, and ``F`` indicates that a test's assertions failed.\nBoth of these are considered to be test failures. Meanwhile, ``x`` and ``s``\nindicated expected failures and skipped tests, respectively. Dots indicate\npassing tests.\n\nSkipped tests are typically due to missing external libraries required to run\nthe test; see :ref:`running-unit-tests-dependencies` for a list of dependencies\nand be sure to install any for tests related to the changes you are making (we\nwon't need any for this tutorial).\n\nOnce the tests complete, you should be greeted with a message informing you\nwhether the test suite passed or failed. Since you haven't yet made any changes\nto Django's code, the entire test suite **should** pass. If you get failures or\nerrors make sure you've followed all of the previous steps properly. See\n:ref:`running-unit-tests` for more information.\n\nNote that the latest Django trunk may not always be stable. When developing\nagainst trunk, you can check `Django's continuous integration builds`__ to\ndetermine if the failures are specific to your machine or if they are also\npresent in Django's official builds. If you click to view a particular build,\nyou can view the \"Configuration Matrix\" which shows failures broken down by\nPython version and database backend.\n\n__ http://ci.djangoproject.com/\n\n.. note::\n\n    For this tutorial and the ticket we're working on, testing against SQLite\n    is sufficient, however, it's possible (and sometimes necessary) to\n    :ref:`run the tests using a different database\n    <running-unit-tests-settings>`.\n\nWriting some tests for your ticket\n==================================\n\nIn most cases, for a patch to be accepted into Django it has to include tests.\nFor bug fix patches, this means writing a regression test to ensure that the\nbug is never reintroduced into Django later on. A regression test should be\nwritten in such a way that it will fail while the bug still exists and pass\nonce the bug has been fixed. For patches containing new features, you'll need\nto include tests which ensure that the new features are working correctly.\nThey too should fail when the new feature is not present, and then pass once it\nhas been implemented.\n\nA good way to do this is to write your new tests first, before making any\nchanges to the code. This style of development is called\n`test-driven development`__ and can be applied to both entire projects and\nsingle patches. After writing your tests, you then run them to make sure that\nthey do indeed fail (since you haven't fixed that bug or added that feature\nyet). If your new tests don't fail, you'll need to fix them so that they do.\nAfter all, a regression test that passes regardless of whether a bug is present\nis not very helpful at preventing that bug from reoccurring down the road.\n\nNow for our hands-on example.\n\n__ http://en.wikipedia.org/wiki/Test-driven_development\n\nWriting some tests for ticket #17549\n------------------------------------\n\n`Ticket #17549`__ describes the following, small feature addition:\n\n    It's useful for URLField to give you a way to open the URL; otherwise you\n    might as well use a CharField.\n\nIn order to resolve this ticket, we'll add a ``render`` method to the\n``AdminURLFieldWidget`` in order to display a clickable link above the input\nwidget. Before we make those changes though, we're going to write a couple\ntests to verify that our modification functions correctly and continues to\nfunction correctly in the future.\n\nNavigate to Django's ``tests/regressiontests/admin_widgets/`` folder and\nopen the ``tests.py`` file. Add the following code on line 269 right before the\n``AdminFileWidgetTest`` class::\n\n    class AdminURLWidgetTest(DjangoTestCase):\n        def test_render(self):\n            w = widgets.AdminURLFieldWidget()\n            self.assertHTMLEqual(\n                conditional_escape(w.render('test', '')),\n                '<input class=\"vURLField\" name=\"test\" type=\"text\" />'\n            )\n            self.assertHTMLEqual(\n                conditional_escape(w.render('test', 'http://example.com')),\n                '<p class=\"url\">Currently:<a href=\"http://example.com\">http://example.com</a><br />Change:<input class=\"vURLField\" name=\"test\" type=\"text\" value=\"http://example.com\" /></p>'\n            )\n\n        def test_render_idn(self):\n            w = widgets.AdminURLFieldWidget()\n            self.assertHTMLEqual(\n                conditional_escape(w.render('test', 'http://example-äüö.com')),\n                '<p class=\"url\">Currently:<a href=\"http://xn--example--7za4pnc.com\">http://example-äüö.com</a><br />Change:<input class=\"vURLField\" name=\"test\" type=\"text\" value=\"http://example-äüö.com\" /></p>'\n            )\n\n        def test_render_quoting(self):\n            w = widgets.AdminURLFieldWidget()\n            self.assertHTMLEqual(\n                conditional_escape(w.render('test', 'http://example.com/<sometag>some text</sometag>')),\n                '<p class=\"url\">Currently:<a href=\"http://example.com/%3Csometag%3Esome%20text%3C/sometag%3E\">http://example.com/&lt;sometag&gt;some text&lt;/sometag&gt;</a><br />Change:<input class=\"vURLField\" name=\"test\" type=\"text\" value=\"http://example.com/<sometag>some text</sometag>\" /></p>'\n            )\n            self.assertHTMLEqual(\n                conditional_escape(w.render('test', 'http://example-äüö.com/<sometag>some text</sometag>')),\n                '<p class=\"url\">Currently:<a href=\"http://xn--example--7za4pnc.com/%3Csometag%3Esome%20text%3C/sometag%3E\">http://example-äüö.com/&lt;sometag&gt;some text&lt;/sometag&gt;</a><br />Change:<input class=\"vURLField\" name=\"test\" type=\"text\" value=\"http://example-äüö.com/<sometag>some text</sometag>\" /></p>'\n            )\n\nThe new tests check to see that the ``render`` method we'll be adding works\ncorrectly in a couple different situations.\n\n.. admonition:: But this testing thing looks kinda hard...\n\n    If you've never had to deal with tests before, they can look a little hard\n    to write at first glance. Fortunately, testing is a *very* big subject in\n    computer programming, so there's lots of information out there:\n\n    * A good first look at writing tests for Django can be found in the\n      documentation on :doc:`Testing Django applications </topics/testing/overview>`.\n    * Dive Into Python (a free online book for beginning Python developers)\n      includes a great `introduction to Unit Testing`__.\n    * After reading those, if you want something a little meatier to sink\n      your teeth into, there's always the `Python unittest documentation`__.\n\n__ https://code.djangoproject.com/ticket/17549\n__ http://diveintopython.net/unit_testing/index.html\n__ http://docs.python.org/library/unittest.html\n\nRunning your new test\n---------------------\n\nRemember that we haven't actually made any modifications to\n``AdminURLFieldWidget`` yet, so our tests are going to fail. Let's run all the\ntests in the ``model_forms_regress`` folder to make sure that's really what\nhappens. From the command line, ``cd`` into the Django ``tests/`` directory\nand run::\n\n    PYTHONPATH=.. python runtests.py --settings=test_sqlite admin_widgets\n\nIf the tests ran correctly, you should see three failures corresponding to each\nof the test methods we added. If all of the tests passed, then you'll want to\nmake sure that you added the new test shown above to the appropriate folder and\nclass.\n\nWriting the code for your ticket\n================================\n\nNext we'll be adding the functionality described in `ticket #17549`__ to Django.\n\nWriting the code for ticket #17549\n----------------------------------\n\nNavigate to the ``django/django/contrib/admin/`` folder and open the\n``widgets.py`` file. Find the ``AdminURLFieldWidget`` class on line 302 and add\nthe following ``render`` method after the existing ``__init__`` method::\n\n    def render(self, name, value, attrs=None):\n        html = super(AdminURLFieldWidget, self).render(name, value, attrs)\n        if value:\n            value = force_text(self._format_value(value))\n            final_attrs = {'href': mark_safe(smart_urlquote(value))}\n            html = format_html(\n                '<p class=\"url\">{0} <a {1}>{2}</a><br />{3} {4}</p>',\n                _('Currently:'), flatatt(final_attrs), value,\n                _('Change:'), html\n            )\n        return html\n\nVerifying your test now passes\n------------------------------\n\nOnce you're done modifying Django, we need to make sure that the tests we wrote\nearlier pass, so we can see whether the code we wrote above is working\ncorrectly. To run the tests in the ``admin_widgets`` folder, ``cd`` into the\nDjango ``tests/`` directory and run::\n\n    PYTHONPATH=.. python runtests.py --settings=test_sqlite admin_widgets\n\nOops, good thing we wrote those tests! You should still see 3 failures with\nthe following exception::\n\n    NameError: global name 'smart_urlquote' is not defined\n\nWe forgot to add the import for that method.  Go ahead and add the\n``smart_urlquote`` import at the end of line 13 of\n``django/contrib/admin/widgets.py`` so it looks as follows::\n\n    from django.utils.html import escape, format_html, format_html_join, smart_urlquote\n\nRe-run the tests and everything should pass. If it doesn't, make sure you\ncorrectly modified the ``AdminURLFieldWidget`` class as shown above and\ncopied the new tests correctly.\n\n__ https://code.djangoproject.com/ticket/17549\n\nRunning Django's test suite for the second time\n===============================================\n\nOnce you've verified that your patch and your test are working correctly, it's\na good idea to run the entire Django test suite just to verify that your change\nhasn't introduced any bugs into other areas of Django. While successfully\npassing the entire test suite doesn't guarantee your code is bug free, it does\nhelp identify many bugs and regressions that might otherwise go unnoticed.\n\nTo run the entire Django test suite, ``cd`` into the Django ``tests/``\ndirectory and run::\n\n    PYTHONPATH=.. python runtests.py --settings=test_sqlite\n\nAs long as you don't see any failures, you're good to go. Note that this fix\nalso made a `small CSS change`__ to format the new widget. You can make the\nchange if you'd like, but we'll skip it for now in the interest of brevity.\n\n__ https://github.com/django/django/commit/ac2052ebc84c45709ab5f0f25e685bf656ce79bc#diff-0\n\nWriting Documentation\n=====================\n\nThis is a new feature, so it should be documented.  Add the following on line\n925 of ``django/docs/ref/models/fields.txt`` beneath the existing docs for\n``URLField``::\n\n    .. versionadded:: 1.5\n\n    The current value of the field will be displayed as a clickable link above the\n    input widget.\n\nFor more information on writing documentation, including an explanation of what\nthe ``versionadded`` bit is all about, see\n:doc:`/internals/contributing/writing-documentation`. That page also includes\nan explanation of how to build a copy of the documentation locally, so you can\npreview the HTML that will be generated.\n\nGenerating a patch for your changes\n===================================\n\nNow it's time to generate a patch file that can be uploaded to Trac or applied\nto another copy of Django. To get a look at the content of your patch, run the\nfollowing command::\n\n    git diff\n\nThis will display the differences between your current copy of Django (with\nyour changes) and the revision that you initially checked out earlier in the\ntutorial.\n\nOnce you're done looking at the patch, hit the ``q`` key to exit back to the\ncommand line.  If the patch's content looked okay, you can run the following\ncommand to save the patch file to your current working directory::\n\n    git diff > 17549.diff\n\nYou should now have a file in the root Django directory called ``17549.diff``.\nThis patch file contains all your changes and should look this:\n\n.. code-block:: diff\n\n    diff --git a/django/contrib/admin/widgets.py b/django/contrib/admin/widgets.py\n    index 1e0bc2d..9e43a10 100644\n    --- a/django/contrib/admin/widgets.py\n    +++ b/django/contrib/admin/widgets.py\n    @@ -10,7 +10,7 @@ from django.contrib.admin.templatetags.admin_static import static\n     from django.core.urlresolvers import reverse\n     from django.forms.widgets import RadioFieldRenderer\n     from django.forms.util import flatatt\n    -from django.utils.html import escape, format_html, format_html_join\n    +from django.utils.html import escape, format_html, format_html_join, smart_urlquote\n     from django.utils.text import Truncator\n     from django.utils.translation import ugettext as _\n     from django.utils.safestring import mark_safe\n    @@ -306,6 +306,18 @@ class AdminURLFieldWidget(forms.TextInput):\n                 final_attrs.update(attrs)\n             super(AdminURLFieldWidget, self).__init__(attrs=final_attrs)\n\n    +    def render(self, name, value, attrs=None):\n    +        html = super(AdminURLFieldWidget, self).render(name, value, attrs)\n    +        if value:\n    +            value = force_text(self._format_value(value))\n    +            final_attrs = {'href': mark_safe(smart_urlquote(value))}\n    +            html = format_html(\n    +                '<p class=\"url\">{0} <a {1}>{2}</a><br />{3} {4}</p>',\n    +                _('Currently:'), flatatt(final_attrs), value,\n    +                _('Change:'), html\n    +            )\n    +        return html\n    +\n     class AdminIntegerFieldWidget(forms.TextInput):\n         class_name = 'vIntegerField'\n\n    diff --git a/docs/ref/models/fields.txt b/docs/ref/models/fields.txt\n    index 809d56e..d44f85f 100644\n    --- a/docs/ref/models/fields.txt\n    +++ b/docs/ref/models/fields.txt\n    @@ -922,6 +922,10 @@ Like all :class:`CharField` subclasses, :class:`URLField` takes the optional\n     :attr:`~CharField.max_length`argument. If you don't specify\n     :attr:`~CharField.max_length`, a default of 200 is used.\n\n    +.. versionadded:: 1.5\n    +\n    +The current value of the field will be displayed as a clickable link above the\n    +input widget.\n\n     Relationship fields\n     ===================\n    diff --git a/tests/regressiontests/admin_widgets/tests.py b/tests/regressiontests/admin_widgets/tests.py\n    index 4b11543..94acc6d 100644\n    --- a/tests/regressiontests/admin_widgets/tests.py\n    +++ b/tests/regressiontests/admin_widgets/tests.py\n    @@ -265,6 +265,35 @@ class AdminSplitDateTimeWidgetTest(DjangoTestCase):\n                         '<p class=\"datetime\">Datum: <input value=\"01.12.2007\" type=\"text\" class=\"vDateField\" name=\"test_0\" size=\"10\" /><br />Zeit: <input value=\"09:30:00\" type=\"text\" class=\"vTimeField\" name=\"test_1\" size=\"8\" /></p>',\n                     )\n\n    +class AdminURLWidgetTest(DjangoTestCase):\n    +    def test_render(self):\n    +        w = widgets.AdminURLFieldWidget()\n    +        self.assertHTMLEqual(\n    +            conditional_escape(w.render('test', '')),\n    +            '<input class=\"vURLField\" name=\"test\" type=\"text\" />'\n    +        )\n    +        self.assertHTMLEqual(\n    +            conditional_escape(w.render('test', 'http://example.com')),\n    +            '<p class=\"url\">Currently:<a href=\"http://example.com\">http://example.com</a><br />Change:<input class=\"vURLField\" name=\"test\" type=\"text\" value=\"http://example.com\" /></p>'\n    +        )\n    +\n    +    def test_render_idn(self):\n    +        w = widgets.AdminURLFieldWidget()\n    +        self.assertHTMLEqual(\n    +            conditional_escape(w.render('test', 'http://example-äüö.com')),\n    +            '<p class=\"url\">Currently:<a href=\"http://xn--example--7za4pnc.com\">http://example-äüö.com</a><br />Change:<input class=\"vURLField\" name=\"test\" type=\"text\" value=\"http://example-äüö.com\" /></p>'\n    +        )\n    +\n    +    def test_render_quoting(self):\n    +        w = widgets.AdminURLFieldWidget()\n    +        self.assertHTMLEqual(\n    +            conditional_escape(w.render('test', 'http://example.com/<sometag>some text</sometag>')),\n    +            '<p class=\"url\">Currently:<a href=\"http://example.com/%3Csometag%3Esome%20text%3C/sometag%3E\">http://example.com/&lt;sometag&gt;some text&lt;/sometag&gt;</a><br />Change:<input class=\"vURLField\" name=\"test\" type=\"text\" value=\"http://example.com/<sometag>some text</sometag>\" /></p>'\n    +        )\n    +        self.assertHTMLEqual(\n    +            conditional_escape(w.render('test', 'http://example-äüö.com/<sometag>some text</sometag>')),\n    +            '<p class=\"url\">Currently:<a href=\"http://xn--example--7za4pnc.com/%3Csometag%3Esome%20text%3C/sometag%3E\">http://example-äüö.com/&lt;sometag&gt;some text&lt;/sometag&gt;</a><br />Change:<input class=\"vURLField\" name=\"test\" type=\"text\" value=\"http://example-äüö.com/<sometag>some text</sometag>\" /></p>'\n    +        )\n\n     class AdminFileWidgetTest(DjangoTestCase):\n         def test_render(self):\n\nSo what do I do next?\n=====================\n\nCongratulations, you've generated your very first Django patch! Now that you've\ngot that under your belt, you can put those skills to good use by helping to\nimprove Django's codebase. Generating patches and attaching them to Trac\ntickets is useful, however, since we are using git - adopting a more :doc:`git\noriented workflow </internals/contributing/writing-code/working-with-git>` is\nrecommended.\n\nSince we never committed our changes locally, perform the following to get your\ngit branch back to a good starting point::\n\n    git reset --hard HEAD\n    git checkout master\n\nMore information for new contributors\n-------------------------------------\n\nBefore you get too into writing patches for Django, there's a little more\ninformation on contributing that you should probably take a look at:\n\n* You should make sure to read Django's documentation on\n  :doc:`claiming tickets and submitting patches\n  </internals/contributing/writing-code/submitting-patches>`.\n  It covers Trac etiquette, how to claim tickets for yourself, expected\n  coding style for patches, and many other important details.\n* First time contributors should also read Django's :doc:`documentation\n  for first time contributors</internals/contributing/new-contributors/>`.\n  It has lots of good advice for those of us who are new to helping out\n  with Django.\n* After those, if you're still hungry for more information about\n  contributing, you can always browse through the rest of\n  :doc:`Django's documentation on contributing</internals/contributing/index>`.\n  It contains a ton of useful information and should be your first source\n  for answering any questions you might have.\n\nFinding your first real ticket\n------------------------------\n\nOnce you've looked through some of that information, you'll be ready to go out\nand find a ticket of your own to write a patch for. Pay special attention to\ntickets with the \"easy pickings\" criterion. These tickets are often much\nsimpler in nature and are great for first time contributors.  Once you're\nfamiliar with contributing to Django, you can move on to writing patches for\nmore difficult and complicated tickets.\n\nIf you just want to get started already (and nobody would blame you!), try\ntaking a look at the list of `easy tickets that need patches`__ and the\n`easy tickets that have patches which need improvement`__. If you're familiar\nwith writing tests, you can also look at the list of\n`easy tickets that need tests`__. Just remember to follow the guidelines about\nclaiming tickets that were mentioned in the link to Django's documentation on\n:doc:`claiming tickets and submitting patches\n</internals/contributing/writing-code/submitting-patches>`.\n\n__ https://code.djangoproject.com/query?status=new&status=reopened&has_patch=0&easy=1&col=id&col=summary&col=status&col=owner&col=type&col=milestone&order=priority\n__ https://code.djangoproject.com/query?status=new&status=reopened&needs_better_patch=1&easy=1&col=id&col=summary&col=status&col=owner&col=type&col=milestone&order=priority\n__ https://code.djangoproject.com/query?status=new&status=reopened&needs_tests=1&easy=1&col=id&col=summary&col=status&col=owner&col=type&col=milestone&order=priority\n\nWhat's next?\n------------\n\nAfter a ticket has a patch, it needs to be reviewed by a second set of eyes.\nAfter uploading a patch or submitting a pull request, be sure to update the\nticket metadata by setting the flags on the ticket to say \"has patch\",\n\"doesn't need tests\", etc, so others can find it for review. Contributing\ndoesn't necessarily always mean writing a patch from scratch. Reviewing\nexisting patches is also a very helpful contribution. See\n:doc:`/internals/contributing/triaging-tickets` for details.\n"
  },
  {
    "path": "Django-1.5.1/docs/intro/index.txt",
    "content": "Getting started\n===============\n\nNew to Django? Or to Web development in general? Well, you came to the right\nplace: read this material to quickly get up and running.\n\n.. toctree::\n   :maxdepth: 1\n\n   overview\n   install\n   tutorial01\n   tutorial02\n   tutorial03\n   tutorial04\n   tutorial05\n   reusable-apps\n   whatsnext\n   contributing\n\n.. seealso::\n\n    If you're new to Python_, you might want to start by getting an idea of what\n    the language is like. Django is 100% Python, so if you've got minimal\n    comfort with Python you'll probably get a lot more out of Django.\n\n    If you're new to programming entirely, you might want to start with this\n    `list of Python resources for non-programmers`_\n\n    If you already know a few other languages and want to get up to speed with\n    Python quickly, we recommend `Dive Into Python`_ (also available in a\n    `dead-tree version`_). If that's not quite your style, there are quite\n    a few other `books about Python`_.\n\n    .. _python: http://python.org/\n    .. _list of Python resources for non-programmers: http://wiki.python.org/moin/BeginnersGuide/NonProgrammers\n    .. _dive into python: http://diveintopython.net/\n    .. _dead-tree version: http://www.amazon.com/exec/obidos/ASIN/1590593561/ref=nosim/jacobian20\n    .. _books about Python: http://wiki.python.org/moin/PythonBooks\n"
  },
  {
    "path": "Django-1.5.1/docs/intro/install.txt",
    "content": "Quick install guide\n===================\n\nBefore you can use Django, you'll need to get it installed. We have a\n:doc:`complete installation guide </topics/install>` that covers all the\npossibilities; this guide will guide you to a simple, minimal installation\nthat'll work while you walk through the introduction.\n\nInstall Python\n--------------\n\nBeing a Python Web framework, Django requires Python. It works with any Python\nversion from 2.6.5 to 2.7. It also features experimental support for versions\n3.2 and 3.3. All these versions of Python include a lightweight database\ncalled SQLite_ so you won't need to set up a database just yet.\n\n.. _sqlite: http://sqlite.org/\n\nGet Python at http://www.python.org. If you're running Linux or Mac OS X, you\nprobably already have it installed.\n\n.. admonition:: Django on Jython\n\n    If you use Jython_ (a Python implementation for the Java platform), you'll\n    need to follow a few additional steps. See :doc:`/howto/jython` for details.\n\n.. _jython: http://www.jython.org/\n\nYou can verify that Python is installed by typing ``python`` from your shell;\nyou should see something like::\n\n    Python 2.6.6 (r266:84292, Dec 26 2010, 22:31:48)\n    [GCC 4.4.5] on linux2\n    Type \"help\", \"copyright\", \"credits\" or \"license\" for more information.\n    >>>\n\nSet up a database\n-----------------\n\nThis step is only necessary if you'd like to work with a \"large\" database engine\nlike PostgreSQL, MySQL, or Oracle. To install such a database, consult the\n:ref:`database installation information <database-installation>`.\n\nRemove any old versions of Django\n---------------------------------\n\nIf you are upgrading your installation of Django from a previous version, you\nwill need to :ref:`uninstall the old Django version before installing the new\nversion <removing-old-versions-of-django>`.\n\nInstall Django\n--------------\n\nYou've got three easy options to install Django:\n\n* Install a version of Django :doc:`provided by your operating system\n  distribution </misc/distributions>`. This is the quickest option for those\n  who have operating systems that distribute Django.\n\n* :ref:`Install an official release <installing-official-release>`. This\n  is the best approach for users who want a stable version number and aren't\n  concerned about running a slightly older version of Django.\n\n* :ref:`Install the latest development version\n  <installing-development-version>`. This is best for users who want the\n  latest-and-greatest features and aren't afraid of running brand-new code.\n\n.. admonition:: Always refer to the documentation that corresponds to the\n    version of Django you're using!\n\n    If you do either of the first two steps, keep an eye out for parts of the\n    documentation marked **new in development version**. That phrase flags\n    features that are only available in development versions of Django, and\n    they likely won't work with an official release.\n\n\nVerifying\n---------\n\nTo verify that Django can be seen by Python, type ``python`` from your shell.\nThen at the Python prompt, try to import Django:\n\n.. parsed-literal::\n\n    >>> import django\n    >>> print(django.get_version())\n    |version|\n\nYou may have another version of Django installed.\n\nThat's it!\n----------\n\nThat's it -- you can now :doc:`move onto the tutorial </intro/tutorial01>`.\n"
  },
  {
    "path": "Django-1.5.1/docs/intro/overview.txt",
    "content": "==================\nDjango at a glance\n==================\n\nBecause Django was developed in a fast-paced newsroom environment, it was\ndesigned to make common Web-development tasks fast and easy. Here's an informal\noverview of how to write a database-driven Web app with Django.\n\nThe goal of this document is to give you enough technical specifics to\nunderstand how Django works, but this isn't intended to be a tutorial or\nreference -- but we've got both! When you're ready to start a project, you can\n:doc:`start with the tutorial </intro/tutorial01>` or :doc:`dive right into more\ndetailed documentation </topics/index>`.\n\nDesign your model\n=================\n\nAlthough you can use Django without a database, it comes with an\nobject-relational mapper in which you describe your database layout in Python\ncode.\n\nThe :doc:`data-model syntax </topics/db/models>` offers many rich ways of\nrepresenting your models -- so far, it's been solving two years' worth of\ndatabase-schema problems. Here's a quick example, which might be saved in\nthe file ``mysite/news/models.py``::\n\n    class Reporter(models.Model):\n        full_name = models.CharField(max_length=70)\n\n        def __unicode__(self):\n            return self.full_name\n\n    class Article(models.Model):\n        pub_date = models.DateField()\n        headline = models.CharField(max_length=200)\n        content = models.TextField()\n        reporter = models.ForeignKey(Reporter)\n\n        def __unicode__(self):\n            return self.headline\n\nInstall it\n==========\n\nNext, run the Django command-line utility to create the database tables\nautomatically:\n\n.. code-block:: bash\n\n    manage.py syncdb\n\nThe :djadmin:`syncdb` command looks at all your available models and creates\ntables in your database for whichever tables don't already exist.\n\nEnjoy the free API\n==================\n\nWith that, you've got a free, and rich, :doc:`Python API </topics/db/queries>` to\naccess your data. The API is created on the fly, no code generation necessary:\n\n.. code-block:: python\n\n    # Import the models we created from our \"news\" app\n    >>> from news.models import Reporter, Article\n\n    # No reporters are in the system yet.\n    >>> Reporter.objects.all()\n    []\n\n    # Create a new Reporter.\n    >>> r = Reporter(full_name='John Smith')\n\n    # Save the object into the database. You have to call save() explicitly.\n    >>> r.save()\n\n    # Now it has an ID.\n    >>> r.id\n    1\n\n    # Now the new reporter is in the database.\n    >>> Reporter.objects.all()\n    [<Reporter: John Smith>]\n\n    # Fields are represented as attributes on the Python object.\n    >>> r.full_name\n    'John Smith'\n\n    # Django provides a rich database lookup API.\n    >>> Reporter.objects.get(id=1)\n    <Reporter: John Smith>\n    >>> Reporter.objects.get(full_name__startswith='John')\n    <Reporter: John Smith>\n    >>> Reporter.objects.get(full_name__contains='mith')\n    <Reporter: John Smith>\n    >>> Reporter.objects.get(id=2)\n    Traceback (most recent call last):\n        ...\n    DoesNotExist: Reporter matching query does not exist. Lookup parameters were {'id': 2}\n\n    # Create an article.\n    >>> from datetime import date\n    >>> a = Article(pub_date=date.today(), headline='Django is cool',\n    ...     content='Yeah.', reporter=r)\n    >>> a.save()\n\n    # Now the article is in the database.\n    >>> Article.objects.all()\n    [<Article: Django is cool>]\n\n    # Article objects get API access to related Reporter objects.\n    >>> r = a.reporter\n    >>> r.full_name\n    'John Smith'\n\n    # And vice versa: Reporter objects get API access to Article objects.\n    >>> r.article_set.all()\n    [<Article: Django is cool>]\n\n    # The API follows relationships as far as you need, performing efficient\n    # JOINs for you behind the scenes.\n    # This finds all articles by a reporter whose name starts with \"John\".\n    >>> Article.objects.filter(reporter__full_name__startswith=\"John\")\n    [<Article: Django is cool>]\n\n    # Change an object by altering its attributes and calling save().\n    >>> r.full_name = 'Billy Goat'\n    >>> r.save()\n\n    # Delete an object with delete().\n    >>> r.delete()\n\nA dynamic admin interface: it's not just scaffolding -- it's the whole house\n============================================================================\n\nOnce your models are defined, Django can automatically create a professional,\nproduction ready :doc:`administrative interface </ref/contrib/admin/index>` -- a Web\nsite that lets authenticated users add, change and delete objects. It's as easy\nas registering your model in the admin site::\n\n    # In models.py...\n\n    from django.db import models\n\n    class Article(models.Model):\n        pub_date = models.DateField()\n        headline = models.CharField(max_length=200)\n        content = models.TextField()\n        reporter = models.ForeignKey(Reporter)\n\n\n    # In admin.py in the same directory...\n\n    import models\n    from django.contrib import admin\n\n    admin.site.register(models.Article)\n\nThe philosophy here is that your site is edited by a staff, or a client, or\nmaybe just you -- and you don't want to have to deal with creating backend\ninterfaces just to manage content.\n\nOne typical workflow in creating Django apps is to create models and get the\nadmin sites up and running as fast as possible, so your staff (or clients) can\nstart populating data. Then, develop the way data is presented to the public.\n\nDesign your URLs\n================\n\nA clean, elegant URL scheme is an important detail in a high-quality Web\napplication. Django encourages beautiful URL design and doesn't put any cruft\nin URLs, like ``.php`` or ``.asp``.\n\nTo design URLs for an app, you create a Python module called a :doc:`URLconf\n</topics/http/urls>`. A table of contents for your app, it contains a simple mapping\nbetween URL patterns and Python callback functions. URLconfs also serve to\ndecouple URLs from Python code.\n\nHere's what a URLconf might look like for the ``Reporter``/``Article``\nexample above::\n\n    from django.conf.urls import patterns\n\n    urlpatterns = patterns('',\n        (r'^articles/(\\d{4})/$', 'news.views.year_archive'),\n        (r'^articles/(\\d{4})/(\\d{2})/$', 'news.views.month_archive'),\n        (r'^articles/(\\d{4})/(\\d{2})/(\\d+)/$', 'news.views.article_detail'),\n    )\n\nThe code above maps URLs, as simple regular expressions, to the location of\nPython callback functions (\"views\"). The regular expressions use parenthesis to\n\"capture\" values from the URLs. When a user requests a page, Django runs\nthrough each pattern, in order, and stops at the first one that matches the\nrequested URL. (If none of them matches, Django calls a special-case 404 view.)\nThis is blazingly fast, because the regular expressions are compiled at load\ntime.\n\nOnce one of the regexes matches, Django imports and calls the given view, which\nis a simple Python function. Each view gets passed a request object --\nwhich contains request metadata -- and the values captured in the regex.\n\nFor example, if a user requested the URL \"/articles/2005/05/39323/\", Django\nwould call the function ``news.views.article_detail(request,\n'2005', '05', '39323')``.\n\nWrite your views\n================\n\nEach view is responsible for doing one of two things: Returning an\n:class:`~django.http.HttpResponse` object containing the content for the\nrequested page, or raising an exception such as :class:`~django.http.Http404`.\nThe rest is up to you.\n\nGenerally, a view retrieves data according to the parameters, loads a template\nand renders the template with the retrieved data. Here's an example view for\n``year_archive`` from above::\n\n    def year_archive(request, year):\n        a_list = Article.objects.filter(pub_date__year=year)\n        return render_to_response('news/year_archive.html', {'year': year, 'article_list': a_list})\n\nThis example uses Django's :doc:`template system </topics/templates>`, which has\nseveral powerful features but strives to stay simple enough for non-programmers\nto use.\n\nDesign your templates\n=====================\n\nThe code above loads the ``news/year_archive.html`` template.\n\nDjango has a template search path, which allows you to minimize redundancy among\ntemplates. In your Django settings, you specify a list of directories to check\nfor templates. If a template doesn't exist in the first directory, it checks the\nsecond, and so on.\n\nLet's say the ``news/year_archive.html`` template was found. Here's what that\nmight look like:\n\n.. code-block:: html+django\n\n    {% extends \"base.html\" %}\n\n    {% block title %}Articles for {{ year }}{% endblock %}\n\n    {% block content %}\n    <h1>Articles for {{ year }}</h1>\n\n    {% for article in article_list %}\n        <p>{{ article.headline }}</p>\n        <p>By {{ article.reporter.full_name }}</p>\n        <p>Published {{ article.pub_date|date:\"F j, Y\" }}</p>\n    {% endfor %}\n    {% endblock %}\n\nVariables are surrounded by double-curly braces. ``{{ article.headline }}``\nmeans \"Output the value of the article's headline attribute.\" But dots aren't\nused only for attribute lookup: They also can do dictionary-key lookup, index\nlookup and function calls.\n\nNote ``{{ article.pub_date|date:\"F j, Y\" }}`` uses a Unix-style \"pipe\" (the \"|\"\ncharacter). This is called a template filter, and it's a way to filter the value\nof a variable. In this case, the date filter formats a Python datetime object in\nthe given format (as found in PHP's date function).\n\nYou can chain together as many filters as you'd like. You can write custom\nfilters. You can write custom template tags, which run custom Python code behind\nthe scenes.\n\nFinally, Django uses the concept of \"template inheritance\": That's what the\n``{% extends \"base.html\" %}`` does. It means \"First load the template called\n'base', which has defined a bunch of blocks, and fill the blocks with the\nfollowing blocks.\" In short, that lets you dramatically cut down on redundancy\nin templates: each template has to define only what's unique to that template.\n\nHere's what the \"base.html\" template, including the use of :doc:`static files\n</howto/static-files>`, might look like:\n\n.. code-block:: html+django\n\n    {% load staticfiles %}\n    <html>\n    <head>\n        <title>{% block title %}{% endblock %}</title>\n    </head>\n    <body>\n        <img src=\"{% static \"images/sitelogo.png\" %}\" alt=\"Logo\" />\n        {% block content %}{% endblock %}\n    </body>\n    </html>\n\nSimplistically, it defines the look-and-feel of the site (with the site's logo),\nand provides \"holes\" for child templates to fill. This makes a site redesign as\neasy as changing a single file -- the base template.\n\nIt also lets you create multiple versions of a site, with different base\ntemplates, while reusing child templates. Django's creators have used this\ntechnique to create strikingly different cell-phone editions of sites -- simply\nby creating a new base template.\n\nNote that you don't have to use Django's template system if you prefer another\nsystem. While Django's template system is particularly well-integrated with\nDjango's model layer, nothing forces you to use it. For that matter, you don't\nhave to use Django's database API, either. You can use another database\nabstraction layer, you can read XML files, you can read files off disk, or\nanything you want. Each piece of Django -- models, views, templates -- is\ndecoupled from the next.\n\nThis is just the surface\n========================\n\nThis has been only a quick overview of Django's functionality. Some more useful\nfeatures:\n\n* A :doc:`caching framework </topics/cache>` that integrates with memcached\n  or other backends.\n\n* A :doc:`syndication framework </ref/contrib/syndication>` that makes\n  creating RSS and Atom feeds as easy as writing a small Python class.\n\n* More sexy automatically-generated admin features -- this overview barely\n  scratched the surface.\n\nThe next obvious steps are for you to `download Django`_, read :doc:`the\ntutorial </intro/tutorial01>` and join `the community`_. Thanks for your\ninterest!\n\n.. _download Django: https://www.djangoproject.com/download/\n.. _the community: https://www.djangoproject.com/community/\n"
  },
  {
    "path": "Django-1.5.1/docs/intro/reusable-apps.txt",
    "content": "=============================================\nAdvanced tutorial: How to write reusable apps\n=============================================\n\nThis advanced tutorial begins where :doc:`Tutorial 5 </intro/tutorial05>` left\noff. We'll be turning our Web-poll into a standalone Python package you can\nreuse in new projects and share with other people.\n\nIf you haven't recently completed Tutorials 1–5, we encourage you to review\nthese so that your example project matches the one described below.\n\nReusability matters\n===================\n\nIt's a lot of work to design, build, test and maintain a web application. Many\nPython and Django projects share common problems. Wouldn't it be great if we\ncould save some of this repeated work?\n\nReusability is the way of life in Python. `The Python Package Index (PyPI)\n<http://guide.python-distribute.org/contributing.html#pypi-info>`_ has a vast\nrange of packages you can use in your own Python programs. Check out `Django\nPackages <http://www.djangopackages.com>`_ for existing reusable apps you could\nincorporate in your project. Django itself is also just a Python package. This\nmeans that you can take existing Python packages or Django apps and compose\nthem into your own web project. You only need to write the parts that make\nyour project unique.\n\nLet's say you were starting a new project that needed a polls app like the one\nwe've been working on. How do you make this app reusable? Luckily, you're well\non the way already. In :doc:`Tutorial 3 </intro/tutorial03>`, we saw how we\ncould decouple polls from the project-level URLconf using an ``include``.\nIn this tutorial, we'll take further steps to make the app easy to use in new\nprojects and ready to publish for others to install and use.\n\n.. admonition:: Package? App?\n\n    A Python `package <http://docs.python.org/tutorial/modules.html#packages>`_\n    provides a way of grouping related Python code for easy reuse. A package\n    contains one or more files of Python code (also known as \"modules\").\n\n    A package can be imported with ``import foo.bar`` or ``from foo import\n    bar``. For a directory (like ``polls``) to form a package, it must contain\n    a special file ``__init__.py``, even if this file is empty.\n\n    A Django *app* is just a Python package that is specifically intended for\n    use in a Django project. An app may also use common Django conventions,\n    such as having a ``models.py`` file.\n\n    Later on we use the term *packaging* to describe the process of making a\n    Python package easy for others to install. It can be a little confusing, we\n    know.\n\nYour project and your reusable app\n==================================\n\nAfter the previous tutorials, our project should look like this::\n\n    mysite/\n        manage.py\n        mysite/\n            __init__.py\n            settings.py\n            urls.py\n            wsgi.py\n        polls/\n            admin.py\n            __init__.py\n            models.py\n            tests.py\n            templates/\n                polls/\n                    detail.html\n                    index.html\n                    results.html\n            urls.py\n            views.py\n        templates/\n            admin/\n                base_site.html\n\nYou created ``mysite/templates`` in :doc:`Tutorial 2 </intro/tutorial02>`,\nand ``polls/templates`` in :doc:`Tutorial 3 </intro/tutorial03>`. Now perhaps\nit is clearer why we chose to have separate template directories for the\nproject and application: everything that is part of the polls application is in\n``polls``. It makes the application self-contained and easier to drop into a\nnew project.\n\nThe ``polls`` directory could now be copied into a new Django project and\nimmediately reused. It's not quite ready to be published though. For that, we\nneed to package the app to make it easy for others to install.\n\n.. _installing-reusable-apps-prerequisites:\n\nInstalling some prerequisites\n=============================\n\nThe current state of Python packaging is a bit muddled with various tools. For\nthis tutorial, we're going to use distribute_ to build our package. It's a\ncommunity-maintained fork of the older ``setuptools`` project. We'll also be\nusing `pip`_ to uninstall it after we're finished. You should install these\ntwo packages now. If you need help, you can refer to :ref:`how to install\nDjango with pip<installing-official-release>`. You can install ``distribute``\nthe same way.\n\n.. _distribute: http://pypi.python.org/pypi/distribute\n.. _pip: http://pypi.python.org/pypi/pip\n\nPackaging your app\n==================\n\nPython *packaging* refers to preparing your app in a specific format that can\nbe easily installed and used. Django itself is packaged very much like\nthis. For a small app like polls, this process isn't too difficult.\n\n1. First, create a parent directory for ``polls``, outside of your Django\n   project. Call this directory ``django-polls``.\n\n.. admonition::  Choosing a name for your app\n\n   When choosing a name for your package, check resources like PyPI to avoid\n   naming conflicts with existing packages. It's often useful to prepend\n   ``django-`` to your module name when creating a package to distribute.\n   This helps others looking for Django apps identify your app as Django\n   specific.\n\n2. Move the ``polls`` directory into the ``django-polls`` directory.\n\n3. Create a file ``django-polls/README.txt`` with the following contents::\n\n    =====\n    Polls\n    =====\n\n    Polls is a simple Django app to conduct Web-based polls. For each\n    question, visitors can choose between a fixed number of answers.\n\n    Detailed documentation is in the \"docs\" directory.\n\n    Quick start\n    -----------\n\n    1. Add \"polls\" to your INSTALLED_APPS setting like this::\n\n          INSTALLED_APPS = (\n              ...\n              'polls',\n          )\n\n    2. Include the polls URLconf in your project urls.py like this::\n\n          url(r'^polls/', include('polls.urls')),\n\n    3. Run `python manage.py syncdb` to create the polls models.\n\n    4. Start the development server and visit http://127.0.0.1:8000/admin/\n      to create a poll (you'll need the Admin app enabled).\n\n    5. Visit http://127.0.0.1:8000/polls/ to participate in the poll.\n\n4. Create a ``django-polls/LICENSE`` file. Choosing a license is beyond the\nscope of this tutorial, but suffice it to say that code released publicly\nwithout a license is *useless*. Django and many Django-compatible apps are\ndistributed under the BSD license; however, you're free to pick your own\nlicense. Just be aware that your licensing choice will affect who is able\nto use your code.\n\n5. Next we'll create a ``setup.py`` file which provides details about how to\nbuild and install the app.  A full explanation of this file is beyond the\nscope of this tutorial, but the `distribute docs\n<http://packages.python.org/distribute/setuptools.html>`_ have a good explanation.\nCreate a file ``django-polls/setup.py`` with the following contents::\n\n    import os\n    from setuptools import setup\n\n    README = open(os.path.join(os.path.dirname(__file__), 'README.txt')).read()\n\n    # allow setup.py to be run from any path\n    os.chdir(os.path.normpath(os.path.join(os.path.abspath(__file__), os.pardir)))\n\n    setup(\n        name = 'django-polls',\n        version = '0.1',\n        packages = ['polls'],\n        include_package_data = True,\n        license = 'BSD License', # example license\n        description = 'A simple Django app to conduct Web-based polls.',\n        long_description = README,\n        url = 'http://www.example.com/',\n        author = 'Your Name',\n        author_email = 'yourname@example.com',\n        classifiers = [\n            'Environment :: Web Environment',\n            'Framework :: Django',\n            'Intended Audience :: Developers',\n            'License :: OSI Approved :: BSD License', # example license\n            'Operating System :: OS Independent',\n            'Programming Language :: Python',\n            'Programming Language :: Python :: 2.6',\n            'Programming Language :: Python :: 2.7',\n            'Topic :: Internet :: WWW/HTTP',\n            'Topic :: Internet :: WWW/HTTP :: Dynamic Content',\n        ],\n    )\n\n.. admonition:: I thought you said we were going to use ``distribute``?\n\n    Distribute is a drop-in replacement for ``setuptools``. Even though we\n    appear to import from ``setuptools``, since we have ``distribute``\n    installed, it will override the import.\n\n6. Only Python modules and packages are included in the package by default. To\n   include additional files, we'll need to create a ``MANIFEST.in`` file. The\n   distribute docs referred to in the previous step discuss this file in more\n   details. To include the templates and our LICENSE file, create a file\n   ``django-polls/MANIFEST.in`` with the following contents::\n\n    include LICENSE\n    recursive-include polls/templates *\n\n7. It's optional, but recommended, to include detailed documentation with your\n   app. Create an empty directory ``django-polls/docs`` for future\n   documentation. Add an additional line to ``django-polls/MANIFEST.in``::\n\n    recursive-include docs *\n\n   Note that the ``docs`` directory won't be included in your package unless\n   you add some files to it. Many Django apps also provide their documentation\n   online through sites like `readthedocs.org <http://readthedocs.org>`_.\n\n8. Try building your package with ``python setup.py sdist`` (run from inside\n   ``django-polls``). This creates a directory called ``dist`` and builds your\n   new package, ``django-polls-0.1.tar.gz``.\n\nFor more information on packaging, see `The Hitchhiker's Guide to Packaging\n<http://guide.python-distribute.org/quickstart.html>`_.\n\nUsing your own package\n======================\n\nSince we moved the ``polls`` directory out of the project, it's no longer\nworking. We'll now fix this by installing our new ``django-polls`` package.\n\n.. admonition:: Installing as a user library\n\n   The following steps install ``django-polls`` as a user library. Per-user\n   installs have a lot of advantages over installing the package system-wide,\n   such as being usable on systems where you don't have administrator access\n   as well as preventing the package from affecting system services and other\n   users of the machine. Python 2.6 added support for user libraries, so if\n   you are using an older version this won't work, but Django 1.5 requires\n   Python 2.6 or newer anyway.\n\n   Note that per-user installations can still affect the behavior of system\n   tools that run as that user, so ``virtualenv`` is a more robust solution\n   (see below).\n\n1. Inside ``django-polls/dist``, untar the new package\n   ``django-polls-0.1.tar.gz`` (e.g. ``tar xzvf django-polls-0.1.tar.gz``). If\n   you're using Windows, you can download the command-line tool bsdtar_ to do\n   this, or you can use a GUI-based tool such as 7-zip_.\n\n2. Change into the directory created in step 1 (e.g. ``cd django-polls-0.1``).\n\n3. If you're using GNU/Linux, Mac OS X or some other flavor of Unix, enter the\n   command ``python setup.py install --user`` at the shell prompt.  If you're\n   using Windows, start up a command shell and run the command\n   ``setup.py install --user``.\n\n   With luck, your Django project should now work correctly again. Run the\n   server again to confirm this.\n\n4. To uninstall the package, use pip (you already :ref:`installed it\n   <installing-reusable-apps-prerequisites>`, right?)::\n\n    pip uninstall django-polls\n\n.. _bsdtar: http://gnuwin32.sourceforge.net/packages/bsdtar.htm\n.. _7-zip: http://www.7-zip.org/\n.. _pip: http://pypi.python.org/pypi/pip\n\nPublishing your app\n===================\n\nNow that we've packaged and tested ``django-polls``, it's ready to share with\nthe world! If this wasn't just an example, you could now:\n\n* Email the package to a friend.\n\n* Upload the package on your Web site.\n\n* Post the package on a public repository, such as `The Python Package Index\n  (PyPI) <http://guide.python-distribute.org/contributing.html#pypi-info>`_.\n\nFor more information on PyPI, see the `Quickstart\n<http://guide.python-distribute.org/quickstart.html#register-your-package-with-the-python-package-index-pypi>`_\nsection of The Hitchhiker's Guide to Packaging. One detail this guide mentions\nis choosing the license under which your code is distributed.\n\nInstalling Python packages with virtualenv\n==========================================\n\nEarlier, we installed the polls app as a user library. This has some\ndisadvantages:\n\n* Modifying the user libraries can affect other Python software on your system.\n\n* You won't be able to run multiple versions of this package (or others with\n  the same name).\n\nTypically, these situations only arise once you're maintaining several Django\nprojects. When they do, the best solution is to use `virtualenv\n<http://www.virtualenv.org/>`_. This tool allows you to maintain multiple\nisolated Python environments, each with its own copy of the libraries and\npackage namespace.\n"
  },
  {
    "path": "Django-1.5.1/docs/intro/tutorial01.txt",
    "content": "=====================================\nWriting your first Django app, part 1\n=====================================\n\nLet's learn by example.\n\nThroughout this tutorial, we'll walk you through the creation of a basic\npoll application.\n\nIt'll consist of two parts:\n\n* A public site that lets people view polls and vote in them.\n* An admin site that lets you add, change and delete polls.\n\nWe'll assume you have :doc:`Django installed </intro/install>` already. You can\ntell Django is installed and which version by running the following command:\n\n.. code-block:: bash\n\n    python -c \"import django; print(django.get_version())\"\n\nIf Django is installed, you should see the version of your installation. If it\nisn't, you'll get an error telling \"No module named django\".\n\nThis tutorial is written for Django |version| and Python 2.x. If the Django\nversion doesn't match, you can refer to the tutorial for your version of Django\nor update Django to the newest version. If you are using Python 3.x, be aware\nthat your code may need to differ from what is in the tutorial and you should\ncontinue using the tutorial only if you know what you are doing with Python\n3.x.\n\nSee :doc:`How to install Django </topics/install>` for advice on how to remove\nolder versions of Django and install a newer one.\n\n.. admonition:: Where to get help:\n\n    If you're having trouble going through this tutorial, please post a message\n    to `django-users`__ or drop by `#django on irc.freenode.net`__ to chat\n    with other Django users who might be able to help.\n\n__ http://groups.google.com/group/django-users\n__ irc://irc.freenode.net/django\n\nCreating a project\n==================\n\nIf this is your first time using Django, you'll have to take care of some\ninitial setup. Namely, you'll need to auto-generate some code that establishes a\nDjango :term:`project` -- a collection of settings for an instance of Django,\nincluding database configuration, Django-specific options and\napplication-specific settings.\n\nFrom the command line, ``cd`` into a directory where you'd like to store your\ncode, then run the following command:\n\n.. code-block:: bash\n\n   django-admin.py startproject mysite\n\nThis will create a ``mysite`` directory in your current directory. If it didn't\nwork, see :ref:`troubleshooting-django-admin-py`.\n\n.. note::\n\n    You'll need to avoid naming projects after built-in Python or Django\n    components. In particular, this means you should avoid using names like\n    ``django`` (which will conflict with Django itself) or ``test`` (which\n    conflicts with a built-in Python package).\n\n.. admonition:: Where should this code live?\n\n    If your background is in plain old PHP (with no use of modern frameworks),\n    you're probably used to putting code under the Web server's document root\n    (in a place such as ``/var/www``). With Django, you don't do that. It's\n    not a good idea to put any of this Python code within your Web server's\n    document root, because it risks the possibility that people may be able\n    to view your code over the Web. That's not good for security.\n\n    Put your code in some directory **outside** of the document root, such as\n    :file:`/home/mycode`.\n\nLet's look at what :djadmin:`startproject` created::\n\n    mysite/\n        manage.py\n        mysite/\n            __init__.py\n            settings.py\n            urls.py\n            wsgi.py\n\n.. admonition:: Doesn't match what you see?\n\n    The default project layout recently changed. If you're seeing a \"flat\"\n    layout (with no inner :file:`mysite/` directory), you're probably using\n    a version of Django that doesn't match this tutorial version.  You'll\n    want to either switch to the older tutorial or the newer Django version.\n\nThese files are:\n\n* The outer :file:`mysite/` directory is just a container for your\n  project. Its name doesn't matter to Django; you can rename it to anything\n  you like.\n\n* :file:`manage.py`: A command-line utility that lets you interact with this\n  Django project in various ways. You can read all the details about\n  :file:`manage.py` in :doc:`/ref/django-admin`.\n\n* The inner :file:`mysite/` directory is the actual Python package for your\n  project. Its name is the Python package name you'll need to use to import\n  anything inside it (e.g. ``import mysite.settings``).\n\n* :file:`mysite/__init__.py`: An empty file that tells Python that this\n  directory should be considered a Python package. (Read `more about\n  packages`_ in the official Python docs if you're a Python beginner.)\n\n* :file:`mysite/settings.py`: Settings/configuration for this Django\n  project.  :doc:`/topics/settings` will tell you all about how settings\n  work.\n\n* :file:`mysite/urls.py`: The URL declarations for this Django project; a\n  \"table of contents\" of your Django-powered site. You can read more about\n  URLs in :doc:`/topics/http/urls`.\n\n* :file:`mysite/wsgi.py`: An entry-point for WSGI-compatible webservers to\n  serve your project. See :doc:`/howto/deployment/wsgi/index` for more details.\n\n.. _more about packages: http://docs.python.org/tutorial/modules.html#packages\n\nThe development server\n----------------------\n\nLet's verify this worked. Change into the outer :file:`mysite` directory, if\nyou haven't already, and run the command ``python manage.py runserver``. You'll\nsee the following output on the command line:\n\n.. parsed-literal::\n\n    Validating models...\n\n    0 errors found\n    |today| - 15:50:53\n    Django version |version|, using settings 'mysite.settings'\n    Development server is running at http://127.0.0.1:8000/\n    Quit the server with CONTROL-C.\n\nYou've started the Django development server, a lightweight Web server written\npurely in Python. We've included this with Django so you can develop things\nrapidly, without having to deal with configuring a production server -- such as\nApache -- until you're ready for production.\n\nNow's a good time to note: **Don't** use this server in anything resembling a\nproduction environment. It's intended only for use while developing. (We're in\nthe business of making Web frameworks, not Web servers.)\n\nNow that the server's running, visit http://127.0.0.1:8000/ with your Web\nbrowser. You'll see a \"Welcome to Django\" page, in pleasant, light-blue pastel.\nIt worked!\n\n.. admonition:: Changing the port\n\n    By default, the :djadmin:`runserver` command starts the development server\n    on the internal IP at port 8000.\n\n    If you want to change the server's port, pass\n    it as a command-line argument. For instance, this command starts the server\n    on port 8080:\n\n    .. code-block:: bash\n\n        python manage.py runserver 8080\n\n    If you want to change the server's IP, pass it along with the port. So to\n    listen on all public IPs (useful if you want to show off your work on other\n    computers), use:\n\n    .. code-block:: bash\n\n        python manage.py runserver 0.0.0.0:8000\n\n    Full docs for the development server can be found in the\n    :djadmin:`runserver` reference.\n\nDatabase setup\n--------------\n\nNow, edit :file:`mysite/settings.py`. It's a normal Python module with\nmodule-level variables representing Django settings. Change the\nfollowing keys in the :setting:`DATABASES` ``'default'`` item to match\nyour database connection settings.\n\n* :setting:`ENGINE <DATABASE-ENGINE>` -- Either\n  ``'django.db.backends.postgresql_psycopg2'``,\n  ``'django.db.backends.mysql'``, ``'django.db.backends.sqlite3'`` or\n  ``'django.db.backends.oracle'``. Other backends are :setting:`also available\n  <DATABASE-ENGINE>`.\n\n* :setting:`NAME` -- The name of your database. If you're using\n  SQLite, the database will be a file on your computer; in that\n  case, :setting:`NAME` should be the full absolute path,\n  including filename, of that file. If the file doesn't exist, it\n  will automatically be created when you synchronize the database\n  for the first time (see below).\n\n  When specifying the path, always use forward slashes, even on\n  Windows (e.g. ``C:/homes/user/mysite/sqlite3.db``).\n\n* :setting:`USER` -- Your database username (not used for SQLite).\n\n* :setting:`PASSWORD` -- Your database password (not used for\n  SQLite).\n\n* :setting:`HOST` -- The host your database is on. Leave this as\n  an empty string (or possibly ``127.0.0.1``) if your database server is on the\n  same physical machine (not used for SQLite). See :setting:`HOST` for details.\n\nIf you're new to databases, we recommend simply using SQLite by setting\n:setting:`ENGINE <DATABASE-ENGINE>` to ``'django.db.backends.sqlite3'`` and\n:setting:`NAME` to the place where you'd like to store the database. SQLite is\nincluded in Python, so you won't need to install anything else to support your\ndatabase.\n\n.. note::\n\n    If you're using PostgreSQL or MySQL, make sure you've created a database by\n    this point. Do that with \"``CREATE DATABASE database_name;``\" within your\n    database's interactive prompt.\n\n    If you're using SQLite, you don't need to create anything beforehand - the\n    database file will be created automatically when it is needed.\n\nWhile you're editing :file:`settings.py`, set :setting:`TIME_ZONE` to your\ntime zone. The default value is the Central time zone in the U.S. (Chicago).\n\nAlso, note the :setting:`INSTALLED_APPS` setting toward the bottom of\nthe file. That holds the names of all Django applications that are\nactivated in this Django instance. Apps can be used in multiple projects, and\nyou can package and distribute them for use by others in their projects.\n\nBy default, :setting:`INSTALLED_APPS` contains the following apps, all of which\ncome with Django:\n\n* :mod:`django.contrib.auth` -- An authentication system.\n\n* :mod:`django.contrib.contenttypes` -- A framework for content types.\n\n* :mod:`django.contrib.sessions` -- A session framework.\n\n* :mod:`django.contrib.sites` -- A framework for managing multiple sites\n  with one Django installation.\n\n* :mod:`django.contrib.messages` -- A messaging framework.\n\n* :mod:`django.contrib.staticfiles` -- A framework for managing\n  static files.\n\nThese applications are included by default as a convenience for the common case.\n\nEach of these applications makes use of at least one database table, though,\nso we need to create the tables in the database before we can use them. To do\nthat, run the following command:\n\n.. code-block:: bash\n\n    python manage.py syncdb\n\nThe :djadmin:`syncdb` command looks at the :setting:`INSTALLED_APPS` setting and\ncreates any necessary database tables according to the database settings in your\n:file:`settings.py` file. You'll see a message for each database table it\ncreates, and you'll get a prompt asking you if you'd like to create a superuser\naccount for the authentication system. Go ahead and do that.\n\nIf you're interested, run the command-line client for your database and type\n``\\dt`` (PostgreSQL), ``SHOW TABLES;`` (MySQL), or ``.schema`` (SQLite) to\ndisplay the tables Django created.\n\n.. admonition:: For the minimalists\n\n    Like we said above, the default applications are included for the common\n    case, but not everybody needs them. If you don't need any or all of them,\n    feel free to comment-out or delete the appropriate line(s) from\n    :setting:`INSTALLED_APPS` before running :djadmin:`syncdb`. The\n    :djadmin:`syncdb` command will only create tables for apps in\n    :setting:`INSTALLED_APPS`.\n\n.. _creating-models:\n\nCreating models\n===============\n\nNow that your environment -- a \"project\" -- is set up, you're set to start\ndoing work.\n\nEach application you write in Django consists of a Python package, somewhere\non your `Python path`_, that follows a certain convention. Django comes with a\nutility that automatically generates the basic directory structure of an app,\nso you can focus on writing code rather than creating directories.\n\n.. admonition:: Projects vs. apps\n\n    What's the difference between a project and an app? An app is a Web\n    application that does something -- e.g., a Weblog system, a database of\n    public records or a simple poll app. A project is a collection of\n    configuration and apps for a particular Web site. A project can contain\n    multiple apps. An app can be in multiple projects.\n\nYour apps can live anywhere on your `Python path`_. In this tutorial, we'll\ncreate our poll app right next to your :file:`manage.py` file so that it can be\nimported as its own top-level module, rather than a submodule of ``mysite``.\n\nTo create your app, make sure you're in the same directory as :file:`manage.py`\nand type this command:\n\n.. code-block:: bash\n\n    python manage.py startapp polls\n\nThat'll create a directory :file:`polls`, which is laid out like this::\n\n    polls/\n        __init__.py\n        models.py\n        tests.py\n        views.py\n\nThis directory structure will house the poll application.\n\nThe first step in writing a database Web app in Django is to define your models\n-- essentially, your database layout, with additional metadata.\n\n.. admonition:: Philosophy\n\n   A model is the single, definitive source of data about your data. It contains\n   the essential fields and behaviors of the data you're storing. Django follows\n   the :ref:`DRY Principle <dry>`. The goal is to define your data model in one\n   place and automatically derive things from it.\n\nIn our simple poll app, we'll create two models: ``Poll`` and ``Choice``.\nA ``Poll`` has a question and a publication date. A ``Choice`` has two fields:\nthe text of the choice and a vote tally. Each ``Choice`` is associated with a\n``Poll``.\n\nThese concepts are represented by simple Python classes. Edit the\n:file:`polls/models.py` file so it looks like this::\n\n    from django.db import models\n\n    class Poll(models.Model):\n        question = models.CharField(max_length=200)\n        pub_date = models.DateTimeField('date published')\n\n    class Choice(models.Model):\n        poll = models.ForeignKey(Poll)\n        choice_text = models.CharField(max_length=200)\n        votes = models.IntegerField(default=0)\n\nThe code is straightforward. Each model is represented by a class that\nsubclasses :class:`django.db.models.Model`. Each model has a number of class\nvariables, each of which represents a database field in the model.\n\nEach field is represented by an instance of a :class:`~django.db.models.Field`\nclass -- e.g., :class:`~django.db.models.CharField` for character fields and\n:class:`~django.db.models.DateTimeField` for datetimes. This tells Django what\ntype of data each field holds.\n\nThe name of each :class:`~django.db.models.Field` instance (e.g. ``question`` or\n``pub_date`` ) is the field's name, in machine-friendly format. You'll use this\nvalue in your Python code, and your database will use it as the column name.\n\nYou can use an optional first positional argument to a\n:class:`~django.db.models.Field` to designate a human-readable name. That's used\nin a couple of introspective parts of Django, and it doubles as documentation.\nIf this field isn't provided, Django will use the machine-readable name. In this\nexample, we've only defined a human-readable name for ``Poll.pub_date``. For all\nother fields in this model, the field's machine-readable name will suffice as\nits human-readable name.\n\nSome :class:`~django.db.models.Field` classes have required arguments.\n:class:`~django.db.models.CharField`, for example, requires that you give it a\n:attr:`~django.db.models.CharField.max_length`. That's used not only in the\ndatabase schema, but in validation, as we'll soon see.\n\nA :class:`~django.db.models.Field` can also have various optional arguments; in\nthis case, we've set the :attr:`~django.db.models.Field.default` value of\n``votes`` to 0.\n\nFinally, note a relationship is defined, using\n:class:`~django.db.models.ForeignKey`. That tells Django each ``Choice`` is related\nto a single ``Poll``. Django supports all the common database relationships:\nmany-to-ones, many-to-manys and one-to-ones.\n\n.. _`Python path`: http://docs.python.org/tutorial/modules.html#the-module-search-path\n\nActivating models\n=================\n\nThat small bit of model code gives Django a lot of information. With it, Django\nis able to:\n\n* Create a database schema (``CREATE TABLE`` statements) for this app.\n* Create a Python database-access API for accessing ``Poll`` and ``Choice`` objects.\n\nBut first we need to tell our project that the ``polls`` app is installed.\n\n.. admonition:: Philosophy\n\n    Django apps are \"pluggable\": You can use an app in multiple projects, and\n    you can distribute apps, because they don't have to be tied to a given\n    Django installation.\n\nEdit the :file:`settings.py` file again, and change the\n:setting:`INSTALLED_APPS` setting to include the string ``'polls'``. So\nit'll look like this::\n\n    INSTALLED_APPS = (\n        'django.contrib.auth',\n        'django.contrib.contenttypes',\n        'django.contrib.sessions',\n        'django.contrib.sites',\n        'django.contrib.messages',\n        'django.contrib.staticfiles',\n        # Uncomment the next line to enable the admin:\n        # 'django.contrib.admin',\n        # Uncomment the next line to enable admin documentation:\n        # 'django.contrib.admindocs',\n        'polls',\n    )\n\nNow Django knows to include the ``polls`` app. Let's run another\ncommand:\n\n.. code-block:: bash\n\n    python manage.py sql polls\n\nYou should see something similar to the following (the ``CREATE TABLE`` SQL\nstatements for the polls app):\n\n.. code-block:: sql\n\n    BEGIN;\n    CREATE TABLE \"polls_poll\" (\n        \"id\" serial NOT NULL PRIMARY KEY,\n        \"question\" varchar(200) NOT NULL,\n        \"pub_date\" timestamp with time zone NOT NULL\n    );\n    CREATE TABLE \"polls_choice\" (\n        \"id\" serial NOT NULL PRIMARY KEY,\n        \"poll_id\" integer NOT NULL REFERENCES \"polls_poll\" (\"id\") DEFERRABLE INITIALLY DEFERRED,\n        \"choice_text\" varchar(200) NOT NULL,\n        \"votes\" integer NOT NULL\n    );\n    COMMIT;\n\nNote the following:\n\n* The exact output will vary depending on the database you are using.\n\n* Table names are automatically generated by combining the name of the app\n  (``polls``) and the lowercase name of the model -- ``poll`` and\n  ``choice``. (You can override this behavior.)\n\n* Primary keys (IDs) are added automatically. (You can override this, too.)\n\n* By convention, Django appends ``\"_id\"`` to the foreign key field name.\n  (Yes, you can override this, as well.)\n\n* The foreign key relationship is made explicit by a ``REFERENCES``\n  statement.\n\n* It's tailored to the database you're using, so database-specific field\n  types such as ``auto_increment`` (MySQL), ``serial`` (PostgreSQL), or\n  ``integer primary key`` (SQLite) are handled for you automatically. Same\n  goes for quoting of field names -- e.g., using double quotes or single\n  quotes. The author of this tutorial runs PostgreSQL, so the example\n  output is in PostgreSQL syntax.\n\n* The :djadmin:`sql` command doesn't actually run the SQL in your database -\n  it just prints it to the screen so that you can see what SQL Django thinks\n  is required. If you wanted to, you could copy and paste this SQL into your\n  database prompt. However, as we will see shortly, Django provides an\n  easier way of committing the SQL to the database.\n\nIf you're interested, also run the following commands:\n\n* :djadmin:`python manage.py validate <validate>` -- Checks for any errors\n  in the construction of your models.\n\n* :djadmin:`python manage.py sqlcustom polls <sqlcustom>` -- Outputs any\n  :ref:`custom SQL statements <initial-sql>` (such as table modifications or\n  constraints) that are defined for the application.\n\n* :djadmin:`python manage.py sqlclear polls <sqlclear>` -- Outputs the\n  necessary ``DROP TABLE`` statements for this app, according to which\n  tables already exist in your database (if any).\n\n* :djadmin:`python manage.py sqlindexes polls <sqlindexes>` -- Outputs the\n  ``CREATE INDEX`` statements for this app.\n\n* :djadmin:`python manage.py sqlall polls <sqlall>` -- A combination of all\n  the SQL from the :djadmin:`sql`, :djadmin:`sqlcustom`, and\n  :djadmin:`sqlindexes` commands.\n\nLooking at the output of those commands can help you understand what's actually\nhappening under the hood.\n\nNow, run :djadmin:`syncdb` again to create those model tables in your database:\n\n.. code-block:: bash\n\n    python manage.py syncdb\n\nThe :djadmin:`syncdb` command runs the SQL from :djadmin:`sqlall` on your\ndatabase for all apps in :setting:`INSTALLED_APPS` that don't already exist in\nyour database. This creates all the tables, initial data and indexes for any\napps you've added to your project since the last time you ran syncdb.\n:djadmin:`syncdb` can be called as often as you like, and it will only ever\ncreate the tables that don't exist.\n\nRead the :doc:`django-admin.py documentation </ref/django-admin>` for full\ninformation on what the ``manage.py`` utility can do.\n\nPlaying with the API\n====================\n\nNow, let's hop into the interactive Python shell and play around with the free\nAPI Django gives you. To invoke the Python shell, use this command:\n\n.. code-block:: bash\n\n    python manage.py shell\n\nWe're using this instead of simply typing \"python\", because :file:`manage.py`\nsets the ``DJANGO_SETTINGS_MODULE`` environment variable, which gives Django\nthe Python import path to your :file:`settings.py` file.\n\n.. admonition:: Bypassing manage.py\n\n    If you'd rather not use :file:`manage.py`, no problem. Just set the\n    ``DJANGO_SETTINGS_MODULE`` environment variable to ``mysite.settings`` and\n    run ``python`` from the same directory :file:`manage.py` is in (or ensure\n    that directory is on the Python path, so that ``import mysite`` works).\n\n    For more information on all of this, see the :doc:`django-admin.py\n    documentation </ref/django-admin>`.\n\nOnce you're in the shell, explore the :doc:`database API </topics/db/queries>`::\n\n    >>> from polls.models import Poll, Choice   # Import the model classes we just wrote.\n\n    # No polls are in the system yet.\n    >>> Poll.objects.all()\n    []\n\n    # Create a new Poll.\n    # Support for time zones is enabled in the default settings file, so\n    # Django expects a datetime with tzinfo for pub_date. Use timezone.now()\n    # instead of datetime.datetime.now() and it will do the right thing.\n    >>> from django.utils import timezone\n    >>> p = Poll(question=\"What's new?\", pub_date=timezone.now())\n\n    # Save the object into the database. You have to call save() explicitly.\n    >>> p.save()\n\n    # Now it has an ID. Note that this might say \"1L\" instead of \"1\", depending\n    # on which database you're using. That's no biggie; it just means your\n    # database backend prefers to return integers as Python long integer\n    # objects.\n    >>> p.id\n    1\n\n    # Access database columns via Python attributes.\n    >>> p.question\n    \"What's new?\"\n    >>> p.pub_date\n    datetime.datetime(2012, 2, 26, 13, 0, 0, 775217, tzinfo=<UTC>)\n\n    # Change values by changing the attributes, then calling save().\n    >>> p.question = \"What's up?\"\n    >>> p.save()\n\n    # objects.all() displays all the polls in the database.\n    >>> Poll.objects.all()\n    [<Poll: Poll object>]\n\n\nWait a minute. ``<Poll: Poll object>`` is, utterly, an unhelpful representation\nof this object. Let's fix that by editing the polls model (in the\n``polls/models.py`` file) and adding a\n:meth:`~django.db.models.Model.__unicode__` method to both ``Poll`` and\n``Choice``::\n\n    class Poll(models.Model):\n        # ...\n        def __unicode__(self):\n            return self.question\n\n    class Choice(models.Model):\n        # ...\n        def __unicode__(self):\n            return self.choice_text\n\nIt's important to add :meth:`~django.db.models.Model.__unicode__` methods to\nyour models, not only for your own sanity when dealing with the interactive\nprompt, but also because objects' representations are used throughout Django's\nautomatically-generated admin.\n\n.. admonition:: Why :meth:`~django.db.models.Model.__unicode__` and not\n                :meth:`~django.db.models.Model.__str__`?\n\n    If you're familiar with Python, you might be in the habit of adding\n    :meth:`~django.db.models.Model.__str__` methods to your classes, not\n    :meth:`~django.db.models.Model.__unicode__` methods. We use\n    :meth:`~django.db.models.Model.__unicode__` here because Django models deal\n    with Unicode by default. All data stored in your database is converted to\n    Unicode when it's returned.\n\n    Django models have a default :meth:`~django.db.models.Model.__str__` method\n    that calls :meth:`~django.db.models.Model.__unicode__` and converts the\n    result to a UTF-8 bytestring. This means that ``unicode(p)`` will return a\n    Unicode string, and ``str(p)`` will return a normal string, with characters\n    encoded as UTF-8.\n\n    If all of this is gibberish to you, just remember to add\n    :meth:`~django.db.models.Model.__unicode__` methods to your models. With any\n    luck, things should Just Work for you.\n\nNote these are normal Python methods. Let's add a custom method, just for\ndemonstration::\n\n    import datetime\n    from django.utils import timezone\n    # ...\n    class Poll(models.Model):\n        # ...\n        def was_published_recently(self):\n            return self.pub_date >= timezone.now() - datetime.timedelta(days=1)\n\nNote the addition of ``import datetime`` and ``from django.utils import\ntimezone``, to reference Python's standard :mod:`datetime` module and Django's\ntime-zone-related utilities in :mod:`django.utils.timezone`, respectively. If\nyou aren't familiar with time zone handling in Python, you can learn more in\nthe :doc:`time zone support docs </topics/i18n/timezones>`.\n\nSave these changes and start a new Python interactive shell by running\n``python manage.py shell`` again::\n\n    >>> from polls.models import Poll, Choice\n\n    # Make sure our __unicode__() addition worked.\n    >>> Poll.objects.all()\n    [<Poll: What's up?>]\n\n    # Django provides a rich database lookup API that's entirely driven by\n    # keyword arguments.\n    >>> Poll.objects.filter(id=1)\n    [<Poll: What's up?>]\n    >>> Poll.objects.filter(question__startswith='What')\n    [<Poll: What's up?>]\n\n    # Get the poll that was published this year.\n    >>> from django.utils import timezone\n    >>> current_year = timezone.now().year\n    >>> Poll.objects.get(pub_date__year=current_year)\n    <Poll: What's up?>\n\n    # Request an ID that doesn't exist, this will raise an exception.\n    >>> Poll.objects.get(id=2)\n    Traceback (most recent call last):\n        ...\n    DoesNotExist: Poll matching query does not exist. Lookup parameters were {'id': 2}\n\n    # Lookup by a primary key is the most common case, so Django provides a\n    # shortcut for primary-key exact lookups.\n    # The following is identical to Poll.objects.get(id=1).\n    >>> Poll.objects.get(pk=1)\n    <Poll: What's up?>\n\n    # Make sure our custom method worked.\n    >>> p = Poll.objects.get(pk=1)\n    >>> p.was_published_recently()\n    True\n\n    # Give the Poll a couple of Choices. The create call constructs a new\n    # Choice object, does the INSERT statement, adds the choice to the set\n    # of available choices and returns the new Choice object. Django creates\n    # a set to hold the \"other side\" of a ForeignKey relation\n    # (e.g. a poll's choices) which can be accessed via the API.\n    >>> p = Poll.objects.get(pk=1)\n\n    # Display any choices from the related object set -- none so far.\n    >>> p.choice_set.all()\n    []\n\n    # Create three choices.\n    >>> p.choice_set.create(choice_text='Not much', votes=0)\n    <Choice: Not much>\n    >>> p.choice_set.create(choice_text='The sky', votes=0)\n    <Choice: The sky>\n    >>> c = p.choice_set.create(choice_text='Just hacking again', votes=0)\n\n    # Choice objects have API access to their related Poll objects.\n    >>> c.poll\n    <Poll: What's up?>\n\n    # And vice versa: Poll objects get access to Choice objects.\n    >>> p.choice_set.all()\n    [<Choice: Not much>, <Choice: The sky>, <Choice: Just hacking again>]\n    >>> p.choice_set.count()\n    3\n\n    # The API automatically follows relationships as far as you need.\n    # Use double underscores to separate relationships.\n    # This works as many levels deep as you want; there's no limit.\n    # Find all Choices for any poll whose pub_date is in this year\n    # (reusing the 'current_year' variable we created above).\n    >>> Choice.objects.filter(poll__pub_date__year=current_year)\n    [<Choice: Not much>, <Choice: The sky>, <Choice: Just hacking again>]\n\n    # Let's delete one of the choices. Use delete() for that.\n    >>> c = p.choice_set.filter(choice_text__startswith='Just hacking')\n    >>> c.delete()\n\nFor more information on model relations, see :doc:`Accessing related objects\n</ref/models/relations>`. For more on how to use double underscores to perform\nfield lookups via the API, see :ref:`Field lookups <field-lookups-intro>`. For\nfull details on the database API, see our :doc:`Database API reference\n</topics/db/queries>`.\n\nWhen you're comfortable with the API, read :doc:`part 2 of this tutorial\n</intro/tutorial02>` to get Django's automatic admin working.\n"
  },
  {
    "path": "Django-1.5.1/docs/intro/tutorial02.txt",
    "content": "=====================================\nWriting your first Django app, part 2\n=====================================\n\nThis tutorial begins where :doc:`Tutorial 1 </intro/tutorial01>` left off. We're\ncontinuing the Web-poll application and will focus on Django's\nautomatically-generated admin site.\n\n.. admonition:: Philosophy\n\n    Generating admin sites for your staff or clients to add, change and delete\n    content is tedious work that doesn't require much creativity. For that\n    reason, Django entirely automates creation of admin interfaces for models.\n\n    Django was written in a newsroom environment, with a very clear separation\n    between \"content publishers\" and the \"public\" site. Site managers use the\n    system to add news stories, events, sports scores, etc., and that content is\n    displayed on the public site. Django solves the problem of creating a\n    unified interface for site administrators to edit content.\n\n    The admin isn't intended to be used by site visitors. It's for site\n    managers.\n\nActivate the admin site\n=======================\n\nThe Django admin site is not activated by default -- it's an opt-in thing. To\nactivate the admin site for your installation, do these three things:\n\n* Uncomment ``\"django.contrib.admin\"`` in the :setting:`INSTALLED_APPS` setting.\n\n* Run ``python manage.py syncdb``. Since you have added a new application\n  to :setting:`INSTALLED_APPS`, the database tables need to be updated.\n\n* Edit your ``mysite/urls.py`` file and uncomment the lines that reference\n  the admin -- there are three lines in total to uncomment. This file is a\n  URLconf; we'll dig into URLconfs in the next tutorial. For now, all you\n  need to know is that it maps URL roots to applications. In the end, you\n  should have a ``urls.py`` file that looks like this:\n\n  .. parsed-literal::\n\n      from django.conf.urls import patterns, include, url\n\n      # Uncomment the next two lines to enable the admin:\n      **from django.contrib import admin**\n      **admin.autodiscover()**\n\n      urlpatterns = patterns('',\n          # Examples:\n          # url(r'^$', '{{ project_name }}.views.home', name='home'),\n          # url(r'^{{ project_name }}/', include('{{ project_name }}.foo.urls')),\n\n          # Uncomment the admin/doc line below to enable admin documentation:\n          # url(r'^admin/doc/', include('django.contrib.admindocs.urls')),\n\n          # Uncomment the next line to enable the admin:\n          **url(r'^admin/', include(admin.site.urls)),**\n      )\n\n  (The bold lines are the ones that needed to be uncommented.)\n\nStart the development server\n============================\n\nLet's start the development server and explore the admin site.\n\nRecall from Tutorial 1 that you start the development server like so:\n\n.. code-block:: bash\n\n    python manage.py runserver\n\nNow, open a Web browser and go to \"/admin/\" on your local domain -- e.g.,\nhttp://127.0.0.1:8000/admin/. You should see the admin's login screen:\n\n.. image:: _images/admin01.png\n   :alt: Django admin login screen\n\n.. admonition:: Doesn't match what you see?\n\n    If at this point, instead of the above login page, you get an error\n    page reporting something like::\n\n        ImportError at /admin/\n        cannot import name patterns\n        ...\n\n    then you're probably using a version of Django that doesn't match this\n    tutorial version. You'll want to either switch to the older tutorial or the\n    newer Django version.\n\nEnter the admin site\n====================\n\nNow, try logging in. (You created a superuser account in the first part of this\ntutorial, remember?  If you didn't create one or forgot the password you can\n:ref:`create another one <topics-auth-creating-superusers>`.) You should see\nthe Django admin index page:\n\n.. image:: _images/admin02t.png\n   :alt: Django admin index page\n\nYou should see a few types of editable content, including groups, users\nand sites. These are core features Django ships with by default.\n\nMake the poll app modifiable in the admin\n=========================================\n\nBut where's our poll app? It's not displayed on the admin index page.\n\nJust one thing to do: We need to tell the admin that ``Poll``\nobjects have an admin interface. To do this, create a file called\n``admin.py`` in your ``polls`` directory, and edit it to look like this::\n\n    from django.contrib import admin\n    from polls.models import Poll\n\n    admin.site.register(Poll)\n\nYou'll need to restart the development server to see your changes. Normally,\nthe server auto-reloads code every time you modify a file, but the action of\ncreating a new file doesn't trigger the auto-reloading logic.\n\nExplore the free admin functionality\n====================================\n\nNow that we've registered ``Poll``, Django knows that it should be displayed on\nthe admin index page:\n\n.. image:: _images/admin03t.png\n   :alt: Django admin index page, now with polls displayed\n\nClick \"Polls.\" Now you're at the \"change list\" page for polls. This page\ndisplays all the polls in the database and lets you choose one to change it.\nThere's the \"What's up?\" poll we created in the first tutorial:\n\n.. image:: _images/admin04t.png\n   :alt: Polls change list page\n\nClick the \"What's up?\" poll to edit it:\n\n.. image:: _images/admin05t.png\n   :alt: Editing form for poll object\n\nThings to note here:\n\n* The form is automatically generated from the Poll model.\n\n* The different model field types (:class:`~django.db.models.DateTimeField`,\n  :class:`~django.db.models.CharField`) correspond to the appropriate HTML\n  input widget. Each type of field knows how to display itself in the Django\n  admin.\n\n* Each :class:`~django.db.models.DateTimeField` gets free JavaScript\n  shortcuts. Dates get a \"Today\" shortcut and calendar popup, and times get\n  a \"Now\" shortcut and a convenient popup that lists commonly entered times.\n\nThe bottom part of the page gives you a couple of options:\n\n* Save -- Saves changes and returns to the change-list page for this type of\n  object.\n\n* Save and continue editing -- Saves changes and reloads the admin page for\n  this object.\n\n* Save and add another -- Saves changes and loads a new, blank form for this\n  type of object.\n\n* Delete -- Displays a delete confirmation page.\n\nIf the value of \"Date published\" doesn't match the time when you created the\npoll in Tutorial 1, it probably means you forgot to set the correct value for\nthe :setting:`TIME_ZONE` setting. Change it, reload the page and check that\nthe correct value appears.\n\nChange the \"Date published\" by clicking the \"Today\" and \"Now\" shortcuts. Then\nclick \"Save and continue editing.\" Then click \"History\" in the upper right.\nYou'll see a page listing all changes made to this object via the Django admin,\nwith the timestamp and username of the person who made the change:\n\n.. image:: _images/admin06t.png\n   :alt: History page for poll object\n\nCustomize the admin form\n========================\n\nTake a few minutes to marvel at all the code you didn't have to write. By\nregistering the Poll model with ``admin.site.register(Poll)``, Django was able\nto construct a default form representation. Often, you'll want to customize how\nthe admin form looks and works. You'll do this by telling Django the options\nyou want when you register the object.\n\nLet's see how this works by re-ordering the fields on the edit form. Replace\nthe ``admin.site.register(Poll)`` line with::\n\n    class PollAdmin(admin.ModelAdmin):\n        fields = ['pub_date', 'question']\n\n    admin.site.register(Poll, PollAdmin)\n\nYou'll follow this pattern -- create a model admin object, then pass it as the\nsecond argument to ``admin.site.register()`` -- any time you need to change the\nadmin options for an object.\n\nThis particular change above makes the \"Publication date\" come before the\n\"Question\" field:\n\n.. image:: _images/admin07.png\n   :alt: Fields have been reordered\n\nThis isn't impressive with only two fields, but for admin forms with dozens\nof fields, choosing an intuitive order is an important usability detail.\n\nAnd speaking of forms with dozens of fields, you might want to split the form\nup into fieldsets::\n\n    class PollAdmin(admin.ModelAdmin):\n        fieldsets = [\n            (None,               {'fields': ['question']}),\n            ('Date information', {'fields': ['pub_date']}),\n        ]\n\n    admin.site.register(Poll, PollAdmin)\n\nThe first element of each tuple in ``fieldsets`` is the title of the fieldset.\nHere's what our form looks like now:\n\n.. image:: _images/admin08t.png\n   :alt: Form has fieldsets now\n\nYou can assign arbitrary HTML classes to each fieldset. Django provides a\n``\"collapse\"`` class that displays a particular fieldset initially collapsed.\nThis is useful when you have a long form that contains a number of fields that\naren't commonly used::\n\n        class PollAdmin(admin.ModelAdmin):\n            fieldsets = [\n                (None,               {'fields': ['question']}),\n                ('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}),\n            ]\n\n.. image:: _images/admin09.png\n   :alt: Fieldset is initially collapsed\n\nAdding related objects\n======================\n\nOK, we have our Poll admin page. But a ``Poll`` has multiple ``Choices``, and\nthe admin page doesn't display choices.\n\nYet.\n\nThere are two ways to solve this problem. The first is to register ``Choice``\nwith the admin just as we did with ``Poll``. That's easy::\n\n    from polls.models import Choice\n\n    admin.site.register(Choice)\n\nNow \"Choices\" is an available option in the Django admin. The \"Add choice\" form\nlooks like this:\n\n.. image:: _images/admin10.png\n   :alt: Choice admin page\n\nIn that form, the \"Poll\" field is a select box containing every poll in the\ndatabase. Django knows that a :class:`~django.db.models.ForeignKey` should be\nrepresented in the admin as a ``<select>`` box. In our case, only one poll\nexists at this point.\n\nAlso note the \"Add Another\" link next to \"Poll.\" Every object with a\n``ForeignKey`` relationship to another gets this for free. When you click \"Add\nAnother,\" you'll get a popup window with the \"Add poll\" form. If you add a poll\nin that window and click \"Save,\" Django will save the poll to the database and\ndynamically add it as the selected choice on the \"Add choice\" form you're\nlooking at.\n\nBut, really, this is an inefficient way of adding ``Choice`` objects to the system.\nIt'd be better if you could add a bunch of Choices directly when you create the\n``Poll`` object. Let's make that happen.\n\nRemove the ``register()`` call for the ``Choice`` model. Then, edit the ``Poll``\nregistration code to read::\n\n    from django.contrib import admin\n    from polls.models import Choice, Poll\n\n    class ChoiceInline(admin.StackedInline):\n        model = Choice\n        extra = 3\n\n    class PollAdmin(admin.ModelAdmin):\n        fieldsets = [\n            (None,               {'fields': ['question']}),\n            ('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}),\n        ]\n        inlines = [ChoiceInline]\n\n    admin.site.register(Poll, PollAdmin)\n\nThis tells Django: \"``Choice`` objects are edited on the ``Poll`` admin page. By\ndefault, provide enough fields for 3 choices.\"\n\nLoad the \"Add poll\" page to see how that looks, you may need to restart your development server:\n\n.. image:: _images/admin11t.png\n   :alt: Add poll page now has choices on it\n\nIt works like this: There are three slots for related Choices -- as specified\nby ``extra`` -- and each time you come back to the \"Change\" page for an\nalready-created object, you get another three extra slots.\n\nAt the end of the three current slots you will find an \"Add another Choice\"\nlink.  If you click on it, a new slot will be added. If you want to remove the\nadded slot, you can click on the X to the top right of the added slot. Note\nthat you can't remove the original three slots. This image shows an added slot:\n\n.. image:: _images/admin15t.png\n   :alt: Additional slot added dynamically\n\nOne small problem, though. It takes a lot of screen space to display all the\nfields for entering related ``Choice`` objects. For that reason, Django offers a\ntabular way of displaying inline related objects; you just need to change\nthe ``ChoiceInline`` declaration to read::\n\n    class ChoiceInline(admin.TabularInline):\n        #...\n\nWith that ``TabularInline`` (instead of ``StackedInline``), the\nrelated objects are displayed in a more compact, table-based format:\n\n.. image:: _images/admin12t.png\n   :alt: Add poll page now has more compact choices\n\nNote that there is an extra \"Delete?\" column that allows removing rows added\nusing the \"Add Another Choice\" button and rows that have already been saved.\n\nCustomize the admin change list\n===============================\n\nNow that the Poll admin page is looking good, let's make some tweaks to the\n\"change list\" page -- the one that displays all the polls in the system.\n\nHere's what it looks like at this point:\n\n.. image:: _images/admin04t.png\n   :alt: Polls change list page\n\nBy default, Django displays the ``str()`` of each object. But sometimes it'd be\nmore helpful if we could display individual fields. To do that, use the\n``list_display`` admin option, which is a tuple of field names to display, as\ncolumns, on the change list page for the object::\n\n    class PollAdmin(admin.ModelAdmin):\n        # ...\n        list_display = ('question', 'pub_date')\n\nJust for good measure, let's also include the ``was_published_recently`` custom\nmethod from Tutorial 1::\n\n    class PollAdmin(admin.ModelAdmin):\n        # ...\n        list_display = ('question', 'pub_date', 'was_published_recently')\n\nNow the poll change list page looks like this:\n\n.. image:: _images/admin13t.png\n   :alt: Polls change list page, updated\n\nYou can click on the column headers to sort by those values -- except in the\ncase of the ``was_published_recently`` header, because sorting by the output\nof an arbitrary method is not supported. Also note that the column header for\n``was_published_recently`` is, by default, the name of the method (with\nunderscores replaced with spaces), and that each line contains the string\nrepresentation of the output.\n\nYou can improve that by giving that method (in ``models.py``) a few\nattributes, as follows::\n\n    class Poll(models.Model):\n        # ...\n        def was_published_recently(self):\n            return self.pub_date >= timezone.now() - datetime.timedelta(days=1)\n        was_published_recently.admin_order_field = 'pub_date'\n        was_published_recently.boolean = True\n        was_published_recently.short_description = 'Published recently?'\n\nEdit your admin.py file again and add an improvement to the Poll change list page: Filters. Add the\nfollowing line to ``PollAdmin``::\n\n    list_filter = ['pub_date']\n\nThat adds a \"Filter\" sidebar that lets people filter the change list by the\n``pub_date`` field:\n\n.. image:: _images/admin14t.png\n   :alt: Polls change list page, updated\n\nThe type of filter displayed depends on the type of field you're filtering on.\nBecause ``pub_date`` is a :class:`~django.db.models.DateTimeField`, Django\nknows to give appropriate filter options: \"Any date,\" \"Today,\" \"Past 7 days,\"\n\"This month,\" \"This year.\"\n\nThis is shaping up well. Let's add some search capability::\n\n    search_fields = ['question']\n\nThat adds a search box at the top of the change list. When somebody enters\nsearch terms, Django will search the ``question`` field. You can use as many\nfields as you'd like -- although because it uses a ``LIKE`` query behind the\nscenes, keep it reasonable, to keep your database happy.\n\nFinally, because ``Poll`` objects have dates, it'd be convenient to be able to\ndrill down by date. Add this line::\n\n    date_hierarchy = 'pub_date'\n\nThat adds hierarchical navigation, by date, to the top of the change list page.\nAt top level, it displays all available years. Then it drills down to months\nand, ultimately, days.\n\nNow's also a good time to note that change lists give you free pagination. The\ndefault is to display 100 items per page. Change-list pagination, search boxes,\nfilters, date-hierarchies and column-header-ordering all work together like you\nthink they should.\n\nCustomize the admin look and feel\n=================================\n\nClearly, having \"Django administration\" at the top of each admin page is\nridiculous. It's just placeholder text.\n\nThat's easy to change, though, using Django's template system. The Django admin\nis powered by Django itself, and its interfaces use Django's own template\nsystem.\n\n.. _ref-customizing-your-projects-templates:\n\nCustomizing your *project's* templates\n--------------------------------------\n\nCreate a ``templates`` directory in your project directory. Templates can\nlive anywhere on your filesystem that Django can access. (Django runs as\nwhatever user your server runs.) However, keeping your templates within the\nproject is a good convention to follow.\n\nOpen your settings file (``mysite/settings.py``, remember) and  add a\n:setting:`TEMPLATE_DIRS` setting::\n\n    TEMPLATE_DIRS = (\n        '/path/to/mysite/templates', # Change this to your own directory.\n    )\n\nNow copy the template ``admin/base_site.html`` from within the default Django\nadmin template directory in the source code of Django itself\n(``django/contrib/admin/templates``) into an ``admin`` subdirectory of\nwhichever directory you're using in :setting:`TEMPLATE_DIRS`. For example, if\nyour :setting:`TEMPLATE_DIRS` includes ``'/path/to/mysite/templates'``, as\nabove, then copy ``django/contrib/admin/templates/admin/base_site.html`` to\n``/path/to/mysite/templates/admin/base_site.html``. Don't forget that\n``admin`` subdirectory.\n\n.. admonition:: Where are the Django source files?\n\n    If you have difficulty finding where the Django source files are located\n    on your system, run the following command:\n\n    .. code-block:: bash\n\n        python -c \"\n        import sys\n        sys.path = sys.path[1:]\n        import django\n        print(django.__path__)\"\n\nThen, just edit the file and replace the generic Django text with your own\nsite's name as you see fit.\n\nThis template file contains lots of text like ``{% block branding %}``\nand ``{{ title }}``. The ``{%`` and ``{{`` tags are part of Django's\ntemplate language. When Django renders ``admin/base_site.html``, this\ntemplate language will be evaluated to produce the final HTML page.\nDon't worry if you can't make any sense of the template right now --\nwe'll delve into Django's templating language in Tutorial 3.\n\nNote that any of Django's default admin templates can be overridden. To\noverride a template, just do the same thing you did with ``base_site.html`` --\ncopy it from the default directory into your custom directory, and make\nchanges.\n\nCustomizing your *application's* templates\n------------------------------------------\n\nAstute readers will ask: But if :setting:`TEMPLATE_DIRS` was empty by default,\nhow was Django finding the default admin templates? The answer is that, by\ndefault, Django automatically looks for a ``templates/`` subdirectory within\neach application package, for use as a fallback (don't forget that\n``django.contrib.admin`` is an application).\n\nOur poll application is not very complex and doesn't need custom admin\ntemplates. But if it grew more sophisticated and required modification of\nDjango's standard admin templates for some of its functionality, it would be\nmore sensible to modify the *application's* templates, rather than those in the\n*project*. That way, you could include the polls application in any new project\nand be assured that it would find the custom templates it needed.\n\nSee the :ref:`template loader documentation <template-loaders>` for more\ninformation about how Django finds its templates.\n\nCustomize the admin index page\n==============================\n\nOn a similar note, you might want to customize the look and feel of the Django\nadmin index page.\n\nBy default, it displays all the apps in :setting:`INSTALLED_APPS` that have been\nregistered with the admin application, in alphabetical order. You may want to\nmake significant changes to the layout. After all, the index is probably the\nmost important page of the admin, and it should be easy to use.\n\nThe template to customize is ``admin/index.html``. (Do the same as with\n``admin/base_site.html`` in the previous section -- copy it from the default\ndirectory to your custom template directory.) Edit the file, and you'll see it\nuses a template variable called ``app_list``. That variable contains every\ninstalled Django app. Instead of using that, you can hard-code links to\nobject-specific admin pages in whatever way you think is best. Again,\ndon't worry if you can't understand the template language -- we'll cover that\nin more detail in Tutorial 3.\n\nWhen you're comfortable with the admin site, read :doc:`part 3 of this tutorial\n</intro/tutorial03>` to start working on public poll views.\n"
  },
  {
    "path": "Django-1.5.1/docs/intro/tutorial03.txt",
    "content": "=====================================\nWriting your first Django app, part 3\n=====================================\n\nThis tutorial begins where :doc:`Tutorial 2 </intro/tutorial02>` left off. We're\ncontinuing the Web-poll application and will focus on creating the public\ninterface -- \"views.\"\n\nPhilosophy\n==========\n\nA view is a \"type\" of Web page in your Django application that generally serves\na specific function and has a specific template. For example, in a blog\napplication, you might have the following views:\n\n* Blog homepage -- displays the latest few entries.\n\n* Entry \"detail\" page -- permalink page for a single entry.\n\n* Year-based archive page -- displays all months with entries in the\n  given year.\n\n* Month-based archive page -- displays all days with entries in the\n  given month.\n\n* Day-based archive page -- displays all entries in the given day.\n\n* Comment action -- handles posting comments to a given entry.\n\nIn our poll application, we'll have the following four views:\n\n* Poll \"index\" page -- displays the latest few polls.\n\n* Poll \"detail\" page -- displays a poll question, with no results but\n  with a form to vote.\n\n* Poll \"results\" page -- displays results for a particular poll.\n\n* Vote action -- handles voting for a particular choice in a particular\n  poll.\n\nIn Django, web pages and other content are delivered by views. Each view is\nrepresented by a simple Python function (or method, in the case of class-based\nviews). Django will choose a view by examining the URL that's requested (to be\nprecise, the part of the URL after the domain name).\n\nNow in your time on the web you may have come across such beauties as\n\"ME2/Sites/dirmod.asp?sid=&type=gen&mod=Core+Pages&gid=A6CD4967199A42D9B65B1B\".\nYou will be pleased to know that Django allows us much more elegant\n*URL patterns* than that.\n\nA URL pattern is simply the general form of a URL - for example:\n``/newsarchive/<year>/<month>/``.\n\nTo get from a URL to a view, Django uses what are known as 'URLconfs'. A\nURLconf maps URL patterns (described as regular expressions) to views.\n\nThis tutorial provides basic instruction in the use of URLconfs, and you can\nrefer to :mod:`django.core.urlresolvers` for more information.\n\nWrite your first view\n=====================\n\nLet's write the first view. Open the file ``polls/views.py``\nand put the following Python code in it::\n\n    from django.http import HttpResponse\n\n    def index(request):\n        return HttpResponse(\"Hello, world. You're at the poll index.\")\n\nThis is the simplest view possible in Django. To call the view, we need to map\nit to a URL - and for this we need a URLconf.\n\nTo create a URLconf in the polls directory, create a file called ``urls.py``.\nYour app directory should now look like::\n\n    polls/\n        __init__.py\n        admin.py\n        models.py\n        tests.py\n        urls.py\n        views.py\n\nIn the ``polls/urls.py`` file include the following code::\n\n    from django.conf.urls import patterns, url\n\n    from polls import views\n\n    urlpatterns = patterns('',\n        url(r'^$', views.index, name='index')\n    )\n\nThe next step is to point the root URLconf at the ``polls.urls`` module. In\n``mysite/urls.py`` insert an :func:`~django.conf.urls.include`, leaving you\nwith::\n\n    from django.conf.urls import patterns, include, url\n\n    from django.contrib import admin\n    admin.autodiscover()\n\n    urlpatterns = patterns('',\n        url(r'^polls/', include('polls.urls')),\n        url(r'^admin/', include(admin.site.urls)),\n    )\n\nYou have now wired an ``index`` view into the URLconf. Go to\nhttp://localhost:8000/polls/ in your browser, and you should see the text\n\"*Hello, world. You're at the poll index.*\", which you defined in the\n``index`` view.\n\nThe :func:`~django.conf.urls.url` function is passed four arguments, two\nrequired: ``regex`` and ``view``, and two optional: ``kwargs``, and ``name``.\nAt this point, it's worth reviewing what these arguments are for.\n\n:func:`~django.conf.urls.url` argument: regex\n---------------------------------------------\n\nThe term \"regex\" is a commonly used short form meaning \"regular expression\",\nwhich is a syntax for matching patterns in strings, or in this case, url\npatterns. Django starts at the first regular expression and makes its way down\nthe list,  comparing the requested URL against each regular expression until it\nfinds one that matches.\n\nNote that these regular expressions do not search GET and POST parameters, or\nthe domain name. For example, in a request to\n``http://www.example.com/myapp/``, the URLconf will look for ``myapp/``. In a\nrequest to ``http://www.example.com/myapp/?page=3``, the URLconf will also\nlook for ``myapp/``.\n\nIf you need help with regular expressions, see `Wikipedia's entry`_ and the\ndocumentation of the :mod:`re` module. Also, the O'Reilly book \"Mastering\nRegular Expressions\" by Jeffrey Friedl is fantastic. In practice, however,\nyou don't need to be an expert on regular expressions, as you really only need\nto know how to capture simple patterns. In fact, complex regexes can have poor\nlookup performance, so you probably shouldn't rely on the full power of regexes.\n\nFinally, a performance note: these regular expressions are compiled the first\ntime the URLconf module is loaded. They're super fast (as long as the lookups\naren't too complex as noted above).\n\n.. _Wikipedia's entry: http://en.wikipedia.org/wiki/Regular_expression\n\n:func:`~django.conf.urls.url` argument: view\n--------------------------------------------\n\nWhen Django finds a regular expression match, Django calls the specified view\nfunction, with an :class:`~django.http.HttpRequest` object as the first\nargument and any “captured” values from the regular expression as other\narguments. If the regex uses simple captures, values are passed as positional\narguments; if it uses named captures, values are passed as keyword arguments.\nWe'll give an example of this in a bit.\n\n:func:`~django.conf.urls.url` argument: kwargs\n----------------------------------------------\n\nArbitrary keyword arguments can be passed in a dictionary to the target view. We\naren't going to use this feature of Django in the tutorial.\n\n:func:`~django.conf.urls.url` argument: name\n---------------------------------------------\n\nNaming your URL lets you refer to it unambiguously from elsewhere in Django\nespecially templates. This powerful feature allows you to make  global changes\nto the url patterns of your project while only touching a single file.\n\nWriting more views\n==================\n\nNow let's add a few more views to ``polls/views.py``. These views are\nslightly different, because they take an argument::\n\n    def detail(request, poll_id):\n        return HttpResponse(\"You're looking at poll %s.\" % poll_id)\n\n    def results(request, poll_id):\n        return HttpResponse(\"You're looking at the results of poll %s.\" % poll_id)\n\n    def vote(request, poll_id):\n        return HttpResponse(\"You're voting on poll %s.\" % poll_id)\n\nWire these news views into the ``polls.urls`` module by adding the following\n:func:`~django.conf.urls.url` calls::\n\n    from django.conf.urls import patterns, url\n\n    from polls import views\n\n    urlpatterns = patterns('',\n        # ex: /polls/\n        url(r'^$', views.index, name='index'),\n        # ex: /polls/5/\n        url(r'^(?P<poll_id>\\d+)/$', views.detail, name='detail'),\n        # ex: /polls/5/results/\n        url(r'^(?P<poll_id>\\d+)/results/$', views.results, name='results'),\n        # ex: /polls/5/vote/\n        url(r'^(?P<poll_id>\\d+)/vote/$', views.vote, name='vote'),\n    )\n\nTake a look in your browser, at \"/polls/34/\". It'll run the ``detail()``\nmethod and display whatever ID you provide in the URL. Try\n\"/polls/34/results/\" and \"/polls/34/vote/\" too -- these will display the\nplaceholder results and voting pages.\n\nWhen somebody requests a page from your Web site -- say, \"/polls/34/\", Django\nwill load the ``mysite.urls`` Python module because it's pointed to by the\n:setting:`ROOT_URLCONF` setting. It finds the variable named ``urlpatterns``\nand traverses the regular expressions in order. The\n:func:`~django.conf.urls.include` functions we are using simply reference\nother URLconfs. Note that the regular expressions for the\n:func:`~django.conf.urls.include` functions don't have a ``$`` (end-of-string\nmatch character) but rather a trailing slash. Whenever Django encounters\n:func:`~django.conf.urls.include`, it chops off whatever part of the URL\nmatched up to that point and sends the remaining string to the included\nURLconf for further processing.\n\nThe idea behind :func:`~django.conf.urls.include` is to make it easy to\nplug-and-play URLs. Since polls are in their own URLconf\n(``polls/urls.py``), they can be placed under \"/polls/\", or under\n\"/fun_polls/\", or under \"/content/polls/\", or any other path root, and the\napp will still work.\n\nHere's what happens if a user goes to \"/polls/34/\" in this system:\n\n* Django will find the match at ``'^polls/'``\n\n* Then, Django will strip off the matching text (``\"polls/\"``) and send the\n  remaining text -- ``\"34/\"`` -- to the 'polls.urls' URLconf for\n  further processing which matches ``r'^(?P<poll_id>\\d+)/$'`` resulting in a\n  call to the ``detail()`` view like so::\n\n    detail(request=<HttpRequest object>, poll_id='34')\n\nThe ``poll_id='34'`` part comes from ``(?P<poll_id>\\d+)``. Using parentheses\naround a pattern \"captures\" the text matched by that pattern and sends it as an\nargument to the view function; ``?P<poll_id>`` defines the name that will\nbe used to identify the matched pattern; and ``\\d+`` is a regular expression to\nmatch a sequence of digits (i.e., a number).\n\nBecause the URL patterns are regular expressions, there really is no limit on\nwhat you can do with them. And there's no need to add URL cruft such as\n``.html`` -- unless you want to, in which case you can do something like\nthis::\n\n    (r'^polls/latest\\.html$', 'polls.views.index'),\n\nBut, don't do that. It's silly.\n\nWrite views that actually do something\n======================================\n\nEach view is responsible for doing one of two things: returning an\n:class:`~django.http.HttpResponse` object containing the content for the\nrequested page, or raising an exception such as :exc:`~django.http.Http404`. The\nrest is up to you.\n\nYour view can read records from a database, or not. It can use a template\nsystem such as Django's -- or a third-party Python template system -- or not.\nIt can generate a PDF file, output XML, create a ZIP file on the fly, anything\nyou want, using whatever Python libraries you want.\n\nAll Django wants is that :class:`~django.http.HttpResponse`. Or an exception.\n\nBecause it's convenient, let's use Django's own database API, which we covered\nin :doc:`Tutorial 1 </intro/tutorial01>`. Here's one stab at the ``index()``\nview, which displays the latest 5 poll questions in the system, separated by\ncommas, according to publication date::\n\n    from django.http import HttpResponse\n\n    from polls.models import Poll\n\n    def index(request):\n        latest_poll_list = Poll.objects.order_by('-pub_date')[:5]\n        output = ', '.join([p.question for p in latest_poll_list])\n        return HttpResponse(output)\n\nThere's a problem here, though: the page's design is hard-coded in the view. If\nyou want to change the way the page looks, you'll have to edit this Python code.\nSo let's use Django's template system to separate the design from Python by\ncreating a template that the view can use.\n\nFirst, create a directory called ``templates`` in your ``polls`` directory.\nDjango will look for templates in there.\n\nDjango's :setting:`TEMPLATE_LOADERS` setting contains a list of callables that\nknow how to import templates from various sources. One of the defaults is\n:class:`django.template.loaders.app_directories.Loader` which looks for a\n\"templates\" subdirectory in each of the :setting:`INSTALLED_APPS` - this is how\nDjango knows to find the polls templates even though we didn't modify\n:setting:`TEMPLATE_DIRS`, as we did in :ref:`Tutorial 2\n<ref-customizing-your-projects-templates>`.\n\n.. admonition:: Organizing templates\n\n    We *could* have all our templates together, in one big templates directory,\n    and it would work perfectly well. However, this template belongs to the\n    polls application, so unlike the admin template we created in the previous\n    tutorial, we'll put this one in the application's template directory\n    (``polls/templates``) rather than the project's (``templates``). We'll\n    discuss in more detail in the :doc:`reusable apps tutorial\n    </intro/reusable-apps>` *why* we do this.\n\nWithin the ``templates`` directory you have just created, create another\ndirectory called ``polls``, and within that create a file called\n``index.html``. In other words, your template should be at\n``polls/templates/polls/index.html``. Because of how the ``app_directories``\ntemplate loader works as described above, you can refer to this template within\nDjango simply as ``polls/index.html``.\n\n.. admonition:: Template namespacing\n\n    Now we *might* be able to get away with putting our templates directly in\n    ``polls/templates`` (rather than creating another ``polls`` subdirectory),\n    but it would actually be a bad idea. Django will choose the first template\n    it finds whose name matches, and if you had a template with the same name\n    in a *different* application, Django would be unable to distinguish between\n    them. We need to be able to point Django at the right one, and the easiest\n    way to ensure this is by *namespacing* them. That is, by putting those\n    templates inside *another* directory named for the application itself.\n\nPut the following code in that template:\n\n.. code-block:: html+django\n\n    {% if latest_poll_list %}\n        <ul>\n        {% for poll in latest_poll_list %}\n            <li><a href=\"/polls/{{ poll.id }}/\">{{ poll.question }}</a></li>\n        {% endfor %}\n        </ul>\n    {% else %}\n        <p>No polls are available.</p>\n    {% endif %}\n\nNow let's use that html template in our index view::\n\n    from django.http import HttpResponse\n    from django.template import Context, loader\n\n    from polls.models import Poll\n\n    def index(request):\n        latest_poll_list = Poll.objects.order_by('-pub_date')[:5]\n        template = loader.get_template('polls/index.html')\n        context = Context({\n            'latest_poll_list': latest_poll_list,\n        })\n        return HttpResponse(template.render(context))\n\nThat code loads the template called  ``polls/index.html`` and passes it a\ncontext. The context is a dictionary mapping template variable names to Python\nobjects.\n\nLoad the page by pointing your browser at \"/polls/\", and you should see a\nbulleted-list containing the \"What's up\" poll from Tutorial 1. The link points\nto the poll's detail page.\n\nA shortcut: :func:`~django.shortcuts.render`\n--------------------------------------------\n\nIt's a very common idiom to load a template, fill a context and return an\n:class:`~django.http.HttpResponse` object with the result of the rendered\ntemplate. Django provides a shortcut. Here's the full ``index()`` view,\nrewritten::\n\n    from django.shortcuts import render\n\n    from polls.models import Poll\n\n    def index(request):\n        latest_poll_list = Poll.objects.all().order_by('-pub_date')[:5]\n        context = {'latest_poll_list': latest_poll_list}\n        return render(request, 'polls/index.html', context)\n\nNote that once we've done this in all these views, we no longer need to import\n:mod:`~django.template.loader`, :class:`~django.template.Context` and\n:class:`~django.http.HttpResponse` (you'll want to keep ``HttpResponse`` if you\nstill have the stub methods for ``detail``, ``results``, and ``vote``).\n\nThe :func:`~django.shortcuts.render` function takes the request object as its\nfirst argument, a template name as its second argument and a dictionary as its\noptional third argument. It returns an :class:`~django.http.HttpResponse`\nobject of the given template rendered with the given context.\n\nRaising a 404 error\n===================\n\nNow, let's tackle the poll detail view -- the page that displays the question\nfor a given poll. Here's the view::\n\n    from django.http import Http404\n    # ...\n    def detail(request, poll_id):\n        try:\n            poll = Poll.objects.get(pk=poll_id)\n        except Poll.DoesNotExist:\n            raise Http404\n        return render(request, 'polls/detail.html', {'poll': poll})\n\nThe new concept here: The view raises the :exc:`~django.http.Http404` exception\nif a poll with the requested ID doesn't exist.\n\nWe'll discuss what you could put in that ``polls/detail.html`` template a bit\nlater, but if you'd like to quickly get the above example working, a file\ncontaining just::\n\n    {{ poll }}\n\nwill get you started for now.\n\nA shortcut: :func:`~django.shortcuts.get_object_or_404`\n-------------------------------------------------------\n\nIt's a very common idiom to use :meth:`~django.db.models.query.QuerySet.get`\nand raise :exc:`~django.http.Http404` if the object doesn't exist. Django\nprovides a shortcut. Here's the ``detail()`` view, rewritten::\n\n    from django.shortcuts import render, get_object_or_404\n    # ...\n    def detail(request, poll_id):\n        poll = get_object_or_404(Poll, pk=poll_id)\n        return render(request, 'polls/detail.html', {'poll': poll})\n\nThe :func:`~django.shortcuts.get_object_or_404` function takes a Django model\nas its first argument and an arbitrary number of keyword arguments, which it\npasses to the :meth:`~django.db.models.query.QuerySet.get` function of the\nmodel's manager. It raises :exc:`~django.http.Http404` if the object doesn't\nexist.\n\n.. admonition:: Philosophy\n\n    Why do we use a helper function :func:`~django.shortcuts.get_object_or_404`\n    instead of automatically catching the\n    :exc:`~django.core.exceptions.ObjectDoesNotExist` exceptions at a higher\n    level, or having the model API raise :exc:`~django.http.Http404` instead of\n    :exc:`~django.core.exceptions.ObjectDoesNotExist`?\n\n    Because that would couple the model layer to the view layer. One of the\n    foremost design goals of Django is to maintain loose coupling. Some\n    controlled coupling is introduced in the :mod:`django.shortcuts` module.\n\nThere's also a :func:`~django.shortcuts.get_list_or_404` function, which works\njust as :func:`~django.shortcuts.get_object_or_404` -- except using\n:meth:`~django.db.models.query.QuerySet.filter` instead of\n:meth:`~django.db.models.query.QuerySet.get`. It raises\n:exc:`~django.http.Http404` if the list is empty.\n\nWrite a 404 (page not found) view\n=================================\n\nWhen you raise :exc:`~django.http.Http404` from within a view, Django\nwill load a special view devoted to handling 404 errors. It finds it\nby looking for the variable ``handler404`` in your root URLconf (and\nonly in your root URLconf; setting ``handler404`` anywhere else will\nhave no effect), which is a string in Python dotted syntax -- the same\nformat the normal URLconf callbacks use. A 404 view itself has nothing\nspecial: It's just a normal view.\n\nYou normally won't have to bother with writing 404 views. If you don't set\n``handler404``, the built-in view :func:`django.views.defaults.page_not_found`\nis used by default. Optionally, you can create a ``404.html`` template\nin the root of your template directory. The default 404 view will then use that\ntemplate for all 404 errors when :setting:`DEBUG` is set to ``False`` (in your\nsettings module). If you do create the template, add at least some dummy\ncontent like \"Page not found\".\n\nA couple more things to note about 404 views:\n\n* If :setting:`DEBUG` is set to ``True`` (in your settings module) then your\n  404 view will never be used (and thus the ``404.html`` template will never\n  be rendered) because the traceback will be displayed instead.\n\n* The 404 view is also called if Django doesn't find a match after checking\n  every regular expression in the URLconf.\n\nWrite a 500 (server error) view\n===============================\n\nSimilarly, your root URLconf may define a ``handler500``, which points\nto a view to call in case of server errors. Server errors happen when\nyou have runtime errors in view code.\n\nLikewise, you should create a ``500.html`` template at the root of your\ntemplate directory and add some content like \"Something went wrong\".\n\nUse the template system\n=======================\n\nBack to the ``detail()`` view for our poll application. Given the context\nvariable ``poll``, here's what the ``polls/detail.html`` template might look\nlike:\n\n.. code-block:: html+django\n\n    <h1>{{ poll.question }}</h1>\n    <ul>\n    {% for choice in poll.choice_set.all %}\n        <li>{{ choice.choice_text }}</li>\n    {% endfor %}\n    </ul>\n\nThe template system uses dot-lookup syntax to access variable attributes. In\nthe example of ``{{ poll.question }}``, first Django does a dictionary lookup\non the object ``poll``. Failing that, it tries an attribute lookup -- which\nworks, in this case. If attribute lookup had failed, it would've tried a\nlist-index lookup.\n\nMethod-calling happens in the :ttag:`{% for %}<for>` loop:\n``poll.choice_set.all`` is interpreted as the Python code\n``poll.choice_set.all()``, which returns an iterable of ``Choice`` objects and is\nsuitable for use in the :ttag:`{% for %}<for>` tag.\n\nSee the :doc:`template guide </topics/templates>` for more about templates.\n\nRemoving hardcoded URLs in templates\n====================================\n\nRemember, when we wrote the link to a poll in the ``polls/index.html``\ntemplate, the link was partially hardcoded like this:\n\n.. code-block:: html+django\n\n    <li><a href=\"/polls/{{ poll.id }}/\">{{ poll.question }}</a></li>\n\nThe problem with this hardcoded, tightly-coupled approach is that it becomes\nchallenging to change URLs on projects with a lot of templates. However, since\nyou defined the name argument in the :func:`~django.conf.urls.url` functions in\nthe ``polls.urls`` module, you can remove a reliance on specific URL paths\ndefined in your url configurations by using the ``{% url %}`` template tag:\n\n.. code-block:: html+django\n\n    <li><a href=\"{% url 'detail' poll.id %}\">{{ poll.question }}</a></li>\n\n.. note::\n\n    If ``{% url 'detail' poll.id %}`` (with quotes) doesn't work, but\n    ``{% url detail poll.id %}`` (without quotes) does, that means you're\n    using a version of Django < 1.5. In this case, add the following\n    declaration at the top of your template:\n\n    .. code-block:: html+django\n\n        {% load url from future %}\n\nThe way this works is by looking up the URL definition as specified in the\n``polls.urls`` module. You can see exactly where the URL name of 'detail' is\ndefined below::\n\n    ...\n    # the 'name' value as called by the {% url %} template tag\n    url(r'^(?P<poll_id>\\d+)/$', views.detail, name='detail'),\n    ...\n\nIf you want to change the URL of the polls detail view to something else,\nperhaps to something like ``polls/specifics/12/`` instead of doing it in the\ntemplate (or templates) you would change it in ``polls/urls.py``::\n\n    ...\n    # added the word 'specifics'\n    url(r'^specifics/(?P<poll_id>\\d+)/$', views.detail, name='detail'),\n    ...\n\nNamespacing URL names\n======================\n\nThe tutorial project has just one app, ``polls``. In real Django projects,\nthere might be five, ten, twenty apps or more. How does Django differentiate\nthe URL names between them? For example, the ``polls`` app has a ``detail``\nview, and so might an app on the same project that is for a blog. How does one\nmake it so that Django knows which app view to create for a url when using the\n``{% url %}`` template tag?\n\nThe answer is to add namespaces to your root URLconf. In the ``mysite/urls.py``\nfile (the project's ``urls.py``, not the application's), go ahead and change\nit to include namespacing::\n\n    from django.conf.urls import patterns, include, url\n\n    from django.contrib import admin\n    admin.autodiscover()\n\n    urlpatterns = patterns('',\n        url(r'^polls/', include('polls.urls', namespace=\"polls\")),\n        url(r'^admin/', include(admin.site.urls)),\n    )\n\nNow change your ``polls/index.html`` template from:\n\n.. code-block:: html+django\n\n    <li><a href=\"{% url 'detail' poll.id %}\">{{ poll.question }}</a></li>\n\nto point at the namespaced detail view:\n\n.. code-block:: html+django\n\n    <li><a href=\"{% url 'polls:detail' poll.id %}\">{{ poll.question }}</a></li>\n\nWhen you're comfortable with writing views, read :doc:`part 4 of this tutorial\n</intro/tutorial04>` to learn about simple form processing and generic views.\n"
  },
  {
    "path": "Django-1.5.1/docs/intro/tutorial04.txt",
    "content": "=====================================\nWriting your first Django app, part 4\n=====================================\n\nThis tutorial begins where :doc:`Tutorial 3 </intro/tutorial03>` left off. We're\ncontinuing the Web-poll application and will focus on simple form processing and\ncutting down our code.\n\nWrite a simple form\n===================\n\nLet's update our poll detail template (\"polls/detail.html\") from the last\ntutorial, so that the template contains an HTML ``<form>`` element:\n\n.. code-block:: html+django\n\n    <h1>{{ poll.question }}</h1>\n\n    {% if error_message %}<p><strong>{{ error_message }}</strong></p>{% endif %}\n\n    <form action=\"{% url 'polls:vote' poll.id %}\" method=\"post\">\n    {% csrf_token %}\n    {% for choice in poll.choice_set.all %}\n        <input type=\"radio\" name=\"choice\" id=\"choice{{ forloop.counter }}\" value=\"{{ choice.id }}\" />\n        <label for=\"choice{{ forloop.counter }}\">{{ choice.choice_text }}</label><br />\n    {% endfor %}\n    <input type=\"submit\" value=\"Vote\" />\n    </form>\n\nA quick rundown:\n\n* The above template displays a radio button for each poll choice. The\n  ``value`` of each radio button is the associated poll choice's ID. The\n  ``name`` of each radio button is ``\"choice\"``. That means, when somebody\n  selects one of the radio buttons and submits the form, it'll send the\n  POST data ``choice=3``. This is the basic concept of HTML forms.\n\n* We set the form's ``action`` to ``{% url 'polls:vote' poll.id %}``, and we\n  set ``method=\"post\"``. Using ``method=\"post\"`` (as opposed to\n  ``method=\"get\"``) is very important, because the act of submitting this\n  form will alter data server-side. Whenever you create a form that alters\n  data server-side, use ``method=\"post\"``. This tip isn't specific to\n  Django; it's just good Web development practice.\n\n* ``forloop.counter`` indicates how many times the :ttag:`for` tag has gone\n  through its loop\n\n* Since we're creating a POST form (which can have the effect of modifying\n  data), we need to worry about Cross Site Request Forgeries.\n  Thankfully, you don't have to worry too hard, because Django comes with\n  a very easy-to-use system for protecting against it. In short, all POST\n  forms that are targeted at internal URLs should use the\n  :ttag:`{% csrf_token %}<csrf_token>` template tag.\n\nNow, let's create a Django view that handles the submitted data and does\nsomething with it. Remember, in :doc:`Tutorial 3 </intro/tutorial03>`, we\ncreated a URLconf for the polls application that includes this line::\n\n    url(r'^(?P<poll_id>\\d+)/vote/$', views.vote, name='vote'),\n\nWe also created a dummy implementation of the ``vote()`` function. Let's\ncreate a real version. Add the following to ``polls/views.py``::\n\n    from django.shortcuts import get_object_or_404, render\n    from django.http import HttpResponseRedirect, HttpResponse\n    from django.core.urlresolvers import reverse\n    from polls.models import Choice, Poll\n    # ...\n    def vote(request, poll_id):\n        p = get_object_or_404(Poll, pk=poll_id)\n        try:\n            selected_choice = p.choice_set.get(pk=request.POST['choice'])\n        except (KeyError, Choice.DoesNotExist):\n            # Redisplay the poll voting form.\n            return render(request, 'polls/detail.html', {\n                'poll': p,\n                'error_message': \"You didn't select a choice.\",\n            })\n        else:\n            selected_choice.votes += 1\n            selected_choice.save()\n            # Always return an HttpResponseRedirect after successfully dealing\n            # with POST data. This prevents data from being posted twice if a\n            # user hits the Back button.\n            return HttpResponseRedirect(reverse('polls:results', args=(p.id,)))\n\nThis code includes a few things we haven't covered yet in this tutorial:\n\n* :attr:`request.POST <django.http.HttpRequest.POST>` is a dictionary-like\n  object that lets you access submitted data by key name. In this case,\n  ``request.POST['choice']`` returns the ID of the selected choice, as a\n  string. :attr:`request.POST <django.http.HttpRequest.POST>` values are\n  always strings.\n\n  Note that Django also provides :attr:`request.GET\n  <django.http.HttpRequest.GET>` for accessing GET data in the same way --\n  but we're explicitly using :attr:`request.POST\n  <django.http.HttpRequest.POST>` in our code, to ensure that data is only\n  altered via a POST call.\n\n* ``request.POST['choice']`` will raise :exc:`~exceptions.KeyError` if\n  ``choice`` wasn't provided in POST data. The above code checks for\n  :exc:`~exceptions.KeyError` and redisplays the poll form with an error\n  message if ``choice`` isn't given.\n\n* After incrementing the choice count, the code returns an\n  :class:`~django.http.HttpResponseRedirect` rather than a normal\n  :class:`~django.http.HttpResponse`.\n  :class:`~django.http.HttpResponseRedirect` takes a single argument: the\n  URL to which the user will be redirected (see the following point for how\n  we construct the URL in this case).\n\n  As the Python comment above points out, you should always return an\n  :class:`~django.http.HttpResponseRedirect` after successfully dealing with\n  POST data. This tip isn't specific to Django; it's just good Web\n  development practice.\n\n* We are using the :func:`~django.core.urlresolvers.reverse` function in the\n  :class:`~django.http.HttpResponseRedirect` constructor in this example.\n  This function helps avoid having to hardcode a URL in the view function.\n  It is given the name of the view that we want to pass control to and the\n  variable portion of the URL pattern that points to that view. In this\n  case, using the URLconf we set up in Tutorial 3, this\n  :func:`~django.core.urlresolvers.reverse` call will return a string like\n  ::\n\n    '/polls/3/results/'\n\n  ... where the ``3`` is the value of ``p.id``. This redirected URL will\n  then call the ``'results'`` view to display the final page.\n\nAs mentioned in Tutorial 3, ``request`` is a :class:`~django.http.HttpRequest`\nobject. For more on :class:`~django.http.HttpRequest` objects, see the\n:doc:`request and response documentation </ref/request-response>`.\n\nAfter somebody votes in a poll, the ``vote()`` view redirects to the results\npage for the poll. Let's write that view::\n\n    def results(request, poll_id):\n        poll = get_object_or_404(Poll, pk=poll_id)\n        return render(request, 'polls/results.html', {'poll': poll})\n\nThis is almost exactly the same as the ``detail()`` view from :doc:`Tutorial 3\n</intro/tutorial03>`. The only difference is the template name. We'll fix this\nredundancy later.\n\nNow, create a ``polls/results.html`` template:\n\n.. code-block:: html+django\n\n    <h1>{{ poll.question }}</h1>\n\n    <ul>\n    {% for choice in poll.choice_set.all %}\n        <li>{{ choice.choice_text }} -- {{ choice.votes }} vote{{ choice.votes|pluralize }}</li>\n    {% endfor %}\n    </ul>\n\n    <a href=\"{% url 'polls:detail' poll.id %}\">Vote again?</a>\n\nNow, go to ``/polls/1/`` in your browser and vote in the poll. You should see a\nresults page that gets updated each time you vote. If you submit the form\nwithout having chosen a choice, you should see the error message.\n\nUse generic views: Less code is better\n======================================\n\nThe ``detail()`` (from :doc:`Tutorial 3 </intro/tutorial03>`) and ``results()``\nviews are stupidly simple -- and, as mentioned above, redundant. The ``index()``\nview (also from Tutorial 3), which displays a list of polls, is similar.\n\nThese views represent a common case of basic Web development: getting data from\nthe database according to a parameter passed in the URL, loading a template and\nreturning the rendered template. Because this is so common, Django provides a\nshortcut, called the \"generic views\" system.\n\nGeneric views abstract common patterns to the point where you don't even need\nto write Python code to write an app.\n\nLet's convert our poll app to use the generic views system, so we can delete a\nbunch of our own code. We'll just have to take a few steps to make the\nconversion. We will:\n\n1. Convert the URLconf.\n\n2. Delete some of the old, unneeded views.\n\n3. Fix up URL handling for the new views.\n\nRead on for details.\n\n.. admonition:: Why the code-shuffle?\n\n    Generally, when writing a Django app, you'll evaluate whether generic views\n    are a good fit for your problem, and you'll use them from the beginning,\n    rather than refactoring your code halfway through. But this tutorial\n    intentionally has focused on writing the views \"the hard way\" until now, to\n    focus on core concepts.\n\n    You should know basic math before you start using a calculator.\n\nAmend URLconf\n-------------\n\nFirst, open the ``polls/urls.py`` URLconf and change it like so::\n\n    from django.conf.urls import patterns, url\n    from django.views.generic import DetailView, ListView\n    from polls.models import Poll\n\n    urlpatterns = patterns('',\n        url(r'^$',\n            ListView.as_view(\n                queryset=Poll.objects.order_by('-pub_date')[:5],\n                context_object_name='latest_poll_list',\n                template_name='polls/index.html'),\n            name='index'),\n        url(r'^(?P<pk>\\d+)/$',\n            DetailView.as_view(\n                model=Poll,\n                template_name='polls/detail.html'),\n            name='detail'),\n        url(r'^(?P<pk>\\d+)/results/$',\n            DetailView.as_view(\n                model=Poll,\n                template_name='polls/results.html'),\n            name='results'),\n        url(r'^(?P<poll_id>\\d+)/vote/$', 'polls.views.vote', name='vote'),\n    )\n\nAmend views\n-----------\n\nWe're using two generic views here:\n:class:`~django.views.generic.list.ListView` and\n:class:`~django.views.generic.detail.DetailView`. Respectively, those\ntwo views abstract the concepts of \"display a list of objects\" and\n\"display a detail page for a particular type of object.\"\n\n* Each generic view needs to know what model it will be acting\n  upon. This is provided using the ``model`` parameter.\n\n* The :class:`~django.views.generic.detail.DetailView` generic view\n  expects the primary key value captured from the URL to be called\n  ``\"pk\"``, so we've changed ``poll_id`` to ``pk`` for the generic\n  views.\n\nBy default, the :class:`~django.views.generic.detail.DetailView` generic\nview uses a template called ``<app name>/<model name>_detail.html``.\nIn our case, it'll use the template ``\"polls/poll_detail.html\"``. The\n``template_name`` argument is used to tell Django to use a specific\ntemplate name instead of the autogenerated default template name. We\nalso specify the ``template_name`` for the ``results`` list view --\nthis ensures that the results view and the detail view have a\ndifferent appearance when rendered, even though they're both a\n:class:`~django.views.generic.detail.DetailView` behind the scenes.\n\nSimilarly, the :class:`~django.views.generic.list.ListView` generic\nview uses a default template called ``<app name>/<model\nname>_list.html``; we use ``template_name`` to tell\n:class:`~django.views.generic.list.ListView` to use our existing\n``\"polls/index.html\"`` template.\n\nIn previous parts of the tutorial, the templates have been provided\nwith a context that contains the ``poll`` and ``latest_poll_list``\ncontext variables. For ``DetailView`` the ``poll`` variable is provided\nautomatically -- since we're using a Django model (``Poll``), Django\nis able to determine an appropriate name for the context variable.\nHowever, for ListView, the automatically generated context variable is\n``poll_list``. To override this we provide the ``context_object_name``\noption, specifying that we want to use ``latest_poll_list`` instead.\nAs an alternative approach, you could change your templates to match\nthe new default context variables -- but it's a lot easier to just\ntell Django to use the variable you want.\n\nYou can now delete the ``index()``, ``detail()`` and ``results()`` views from\n``polls/views.py``. We don't need them anymore -- they have been replaced by\ngeneric views. You can also delete the import for ``HttpResponse``, which is no\nlonger required.\n\nRun the server, and use your new polling app based on generic views.\n\nFor full details on generic views, see the :doc:`generic views documentation\n</topics/class-based-views/index>`.\n\nWhen you're comfortable with forms and generic views, read :doc:`part 5 of this\ntutorial</intro/tutorial05>` to learn about testing our polls app.\n"
  },
  {
    "path": "Django-1.5.1/docs/intro/tutorial05.txt",
    "content": "=====================================\nWriting your first Django app, part 5\n=====================================\n\nThis tutorial begins where :doc:`Tutorial 4 </intro/tutorial04>` left off.\nWe've built a Web-poll application, and we'll now create some automated tests\nfor it.\n\nIntroducing automated testing\n=============================\n\nWhat are automated tests?\n-------------------------\n\nTests are simple routines that check the operation of your code.\n\nTesting operates at different levels. Some tests might apply to a tiny detail\n- *does a particular model method return values as expected?*, while others\nexamine the overall operation of the software - *does a sequence of user inputs\non the site produce the desired result?* That's no different from the kind of\ntesting you did earlier in :doc:`Tutorial 1 </intro/tutorial01>`, using the\nshell to examine the behavior of a method, or running the application and\nentering data to check how it behaves.\n\nWhat's different in *automated* tests is that the testing work is done for\nyou by the system. You create a set of tests once, and then as you make changes\nto your app, you can check that your code still works as you originally\nintended, without having to perform time consuming manual testing.\n\nWhy you need to create tests\n----------------------------\n\nSo why create tests, and why now?\n\nYou may feel that you have quite enough on your plate just learning\nPython/Django, and having yet another thing to learn and do may seem\noverwhelming and perhaps unnecessary. After all, our polls application is\nworking quite happily now; going through the trouble of creating automated\ntests is not going to make it work any better. If creating the polls\napplication is the last bit of Django programming you will ever do, then true,\nyou don't need to know how to create automated tests. But, if that's not the\ncase, now is an excellent time to learn.\n\nTests will save you time\n~~~~~~~~~~~~~~~~~~~~~~~~\n\nUp to a certain point, 'checking that it seems to work' will be a satisfactory\ntest. In a more sophisticated application, you might have dozens of complex\ninteractions between components.\n\nA change in any of those components could have unexpected consequences on the\napplication's behavior. Checking that it still 'seems to work' could mean\nrunning through your code's functionality with twenty different variations of\nyour test data just to make sure you haven't broken something - not a good use\nof your time.\n\nThat's especially true when automated tests could do this for you in seconds.\nIf something's gone wrong, tests will also assist in identifying the code\nthat's causing the unexpected behavior.\n\nSometimes it may seem a chore to tear yourself away from your productive,\ncreative programming work to face the unglamorous and unexciting business\nof writing tests, particularly when you know your code is working properly.\n\nHowever, the task of writing tests is a lot more fulfilling than spending hours\ntesting your application manually or trying to identify the cause of a\nnewly-introduced problem.\n\nTests don't just identify problems, they prevent them\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nIt's a mistake to think of tests merely as a negative aspect of development.\n\nWithout tests, the purpose or intended behavior of an application might be\nrather opaque. Even when it's your own code, you will sometimes find yourself\npoking around in it trying to find out what exactly it's doing.\n\nTests change that; they light up your code from the inside, and when something\ngoes wrong, they focus light on the part that has gone wrong - *even if you\nhadn't even realized it had gone wrong*.\n\nTests make your code more attractive\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nYou might have created a brilliant piece of software, but you will find that\nmany other developers will simply refuse to look at it because it lacks tests;\nwithout tests, they won't trust it. Jacob Kaplan-Moss, one of Django's\noriginal developers, says \"Code without tests is broken by design.\"\n\nThat other developers want to see tests in your software before they take it\nseriously is yet another reason for you to start writing tests.\n\nTests help teams work together\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe previous points are written from the point of view of a single developer\nmaintaining an application. Complex applications will be maintained by teams.\nTests guarantee that colleagues don't inadvertently break your code (and that\nyou don't break theirs without knowing). If you want to make a living as a\nDjango programmer, you must be good at writing tests!\n\nBasic testing strategies\n========================\n\nThere are many ways to approach writing tests.\n\nSome programmers follow a discipline called \"`test-driven development`_\"; they\nactually write their tests before they write their code. This might seem\ncounter-intuitive, but in fact it's similar to what most people will often do\nanyway: they describe a problem, then create some code to solve it. Test-driven\ndevelopment simply formalizes the problem in a Python test case.\n\nMore often, a newcomer to testing will create some code and later decide that\nit should have some tests. Perhaps it would have been better to write some\ntests earlier, but it's never too late to get started.\n\nSometimes it's difficult to figure out where to get started with writing tests.\nIf you have written several thousand lines of Python, choosing something to\ntest might not be easy. In such a case, it's fruitful to write your first test\nthe next time you make a change, either when you add a new feature or fix a bug.\n\nSo let's do that right away.\n\n.. _test-driven development: http://en.wikipedia.org/wiki/Test-driven_development\n\nWriting our first test\n======================\n\nWe identify a bug\n-----------------\n\nFortunately, there's a little bug in the ``polls`` application for us to fix\nright away: the ``Poll.was_published_recently()`` method returns ``True`` if\nthe ``Poll`` was published within the last day (which is correct) but also if\nthe ``Poll``'s ``pub_date`` field is in the future (which certainly isn't).\n\nYou can see this in the Admin; create a poll whose date lies in the future;\nyou'll see that the ``Poll`` change list claims it was published recently.\n\nYou can also see this using the shell::\n\n    >>> import datetime\n    >>> from django.utils import timezone\n    >>> from polls.models import Poll\n    >>> # create a Poll instance with pub_date 30 days in the future\n    >>> future_poll = Poll(pub_date=timezone.now() + datetime.timedelta(days=30))\n    >>> # was it published recently?\n    >>> future_poll.was_published_recently()\n    True\n\nSince things in the future are not 'recent', this is clearly wrong.\n\nCreate a test to expose the bug\n-------------------------------\n\nWhat we've just done in the shell to test for the problem is exactly what we\ncan do in an automated test, so let's turn that into an automated test.\n\nThe best place for an application's tests is in the application's ``tests.py``\nfile - the testing system will look there for tests automatically.\n\nPut the following in the ``tests.py`` file in the ``polls`` application (you'll\nnotice  ``tests.py`` contains some dummy tests, you can remove those)::\n\n    import datetime\n\n    from django.utils import timezone\n    from django.test import TestCase\n\n    from polls.models import Poll\n\n    class PollMethodTests(TestCase):\n\n        def test_was_published_recently_with_future_poll(self):\n            \"\"\"\n            was_published_recently() should return False for polls whose\n            pub_date is in the future\n            \"\"\"\n            future_poll = Poll(pub_date=timezone.now() + datetime.timedelta(days=30))\n            self.assertEqual(future_poll.was_published_recently(), False)\n\nWhat we have done here is created a :class:`django.test.TestCase` subclass\nwith a method that creates a ``Poll`` instance with a ``pub_date`` in the\nfuture. We then check the output of ``was_published_recently()`` - which\n*ought* to be False.\n\nRunning tests\n-------------\n\nIn the terminal, we can run our test::\n\n    python manage.py test polls\n\nand you'll see something like::\n\n    Creating test database for alias 'default'...\n    F\n    ======================================================================\n    FAIL: test_was_published_recently_with_future_poll (polls.tests.PollMethodTests)\n    ----------------------------------------------------------------------\n    Traceback (most recent call last):\n      File \"/path/to/mysite/polls/tests.py\", line 16, in test_was_published_recently_with_future_poll\n        self.assertEqual(future_poll.was_published_recently(), False)\n    AssertionError: True != False\n\n    ----------------------------------------------------------------------\n    Ran 1 test in 0.001s\n\n    FAILED (failures=1)\n    Destroying test database for alias 'default'...\n\nWhat happened is this:\n\n* ``python manage.py test polls`` looked for tests in the ``polls`` application\n\n* it found a subclass of the :class:`django.test.TestCase` class\n\n* it created a special database for the purpose of testing\n\n* it looked for test methods - ones whose names begin with ``test``\n\n* in ``test_was_published_recently_with_future_poll`` it created a ``Poll``\n  instance whose ``pub_date`` field is 30 days in the future\n\n* ... and using the ``assertEqual()`` method, it discovered that its\n  ``was_published_recently()`` returns ``True``, though we wanted it to return\n  ``False``\n\nThe test informs us which test failed and even the line on which the failure\noccurred.\n\nFixing the bug\n--------------\n\nWe already know what the problem is: ``Poll.was_published_recently()`` should\nreturn ``False`` if its ``pub_date`` is in the future. Amend the method in\n``models.py``, so that it will only return ``True`` if the date is also in the\npast::\n\n    def was_published_recently(self):\n        now = timezone.now()\n        return now - datetime.timedelta(days=1) <= self.pub_date <  now\n\nand run the test again::\n\n    Creating test database for alias 'default'...\n    .\n    ----------------------------------------------------------------------\n    Ran 1 test in 0.001s\n\n    OK\n    Destroying test database for alias 'default'...\n\nAfter identifying a bug, we wrote a test that exposes it and corrected the bug\nin the code so our test passes.\n\nMany other things might go wrong with our application in the future, but we can\nbe sure that we won't inadvertently reintroduce this bug, because simply\nrunning the test will warn us immediately. We can consider this little portion\nof the application pinned down safely forever.\n\nMore comprehensive tests\n------------------------\n\nWhile we're here, we can further pin down the ``was_published_recently()``\nmethod; in fact, it would be positively embarrassing if in fixing one bug we had\nintroduced another.\n\nAdd two more test methods to the same class, to test the behavior of the method\nmore comprehensively::\n\n    def test_was_published_recently_with_old_poll(self):\n        \"\"\"\n        was_published_recently() should return False for polls whose pub_date\n        is older than 1 day\n        \"\"\"\n        old_poll = Poll(pub_date=timezone.now() - datetime.timedelta(days=30))\n        self.assertEqual(old_poll.was_published_recently(), False)\n\n    def test_was_published_recently_with_recent_poll(self):\n        \"\"\"\n        was_published_recently() should return True for polls whose pub_date\n        is within the last day\n        \"\"\"\n        recent_poll = Poll(pub_date=timezone.now() - datetime.timedelta(hours=1))\n        self.assertEqual(recent_poll.was_published_recently(), True)\n\nAnd now we have three tests that confirm that ``Poll.was_published_recently()``\nreturns sensible values for past, recent, and future polls.\n\nAgain, ``polls`` is a simple application, but however complex it grows in the\nfuture and whatever other code it interacts with, we now have some guarantee\nthat the method we have written tests for will behave in expected ways.\n\nTest a view\n===========\n\nThe polls application is fairly undiscriminating: it will publish any poll,\nincluding ones whose ``pub_date`` field lies in the future. We should improve\nthis. Setting a ``pub_date`` in the future should mean that the Poll is\npublished at that moment, but invisible until then.\n\nA test for a view\n-----------------\n\nWhen we fixed the bug above, we wrote the test first and then the code to fix\nit. In fact that was a simple example of test-driven development, but it\ndoesn't really matter in which order we do the work.\n\nIn our first test, we focused closely on the internal behavior of the code. For\nthis test, we want to check its behavior as it would be experienced by a user\nthrough a web browser.\n\nBefore we try to fix anything, let's have a look at the tools at our disposal.\n\nThe Django test client\n----------------------\n\nDjango provides a test :class:`~django.test.client.Client` to simulate a user\ninteracting with the code at the view level.  We can use it in ``tests.py``\nor even in the shell.\n\nWe will start again with the shell, where we need to do a couple of things that\nwon't be necessary in ``tests.py``. The first is to set up the test environment\nin the shell::\n\n    >>> from django.test.utils import setup_test_environment\n    >>> setup_test_environment()\n\nNext we need to import the test client class (later in ``tests.py`` we will use\nthe :class:`django.test.TestCase` class, which comes with its own client, so\nthis won't be required)::\n\n    >>> from django.test.client import Client\n    >>> # create an instance of the client for our use\n    >>> client = Client()\n\nWith that ready, we can ask the client to do some work for us::\n\n    >>> # get a response from '/'\n    >>> response = client.get('/')\n    >>> # we should expect a 404 from that address\n    >>> response.status_code\n    404\n    >>> # on the other hand we should expect to find something at '/polls/'\n    >>> # we'll use 'reverse()' rather than a harcoded URL\n    >>> from django.core.urlresolvers import reverse\n    >>> response = client.get(reverse('polls:index'))\n    >>> response.status_code\n    200\n    >>> response.content\n    '\\n\\n\\n    <p>No polls are available.</p>\\n\\n'\n    >>> # note - you might get unexpected results if your ``TIME_ZONE``\n    >>> # in ``settings.py`` is not correct. If you need to change it,\n    >>> # you will also need to restart your shell session\n    >>> from polls.models import Poll\n    >>> from django.utils import timezone\n    >>> # create a Poll and save it\n    >>> p = Poll(question=\"Who is your favorite Beatle?\", pub_date=timezone.now())\n    >>> p.save()\n    >>> # check the response once again\n    >>> response = client.get('/polls/')\n    >>> response.content\n    '\\n\\n\\n    <ul>\\n    \\n        <li><a href=\"/polls/1/\">Who is your favorite Beatle?</a></li>\\n    \\n    </ul>\\n\\n'\n    >>> response.context['latest_poll_list']\n    [<Poll: Who is your favorite Beatle?>]\n\nImproving our view\n------------------\n\nThe list of polls shows polls that aren't published yet (i.e. those that have a\n``pub_date`` in the future). Let's fix that.\n\nIn :doc:`Tutorial 4 </intro/tutorial04>` we deleted the view functions from\n``views.py`` in favor of a :class:`~django.views.generic.list.ListView` in\n``urls.py``::\n\n    url(r'^$',\n        ListView.as_view(\n            queryset=Poll.objects.order_by('-pub_date')[:5],\n            context_object_name='latest_poll_list',\n            template_name='polls/index.html'),\n        name='index'),\n\n``response.context_data['latest_poll_list']`` extracts the data this view\nplaces into the context.\n\nWe need to amend the line that gives us the ``queryset``::\n\n    queryset=Poll.objects.order_by('-pub_date')[:5],\n\nLet's change the queryset so that it also checks the date by comparing it with\n``timezone.now()``. First we need to add an import::\n\n    from django.utils import timezone\n\nand then we must amend the existing ``url`` function to::\n\n    url(r'^$',\n        ListView.as_view(\n            queryset=Poll.objects.filter(pub_date__lte=timezone.now) \\\n                .order_by('-pub_date')[:5],\n            context_object_name='latest_poll_list',\n            template_name='polls/index.html'),\n        name='index'),\n\n``Poll.objects.filter(pub_date__lte=timezone.now)`` returns a queryset\ncontaining Polls whose ``pub_date`` is less than or equal to - that is, earlier\nthan or equal to - ``timezone.now``. Notice that we use a callable queryset\nargument, ``timezone.now``, which will be evaluated at request time. If we had\nincluded the parentheses, ``timezone.now()`` would be evaluated just once when\nthe web server is started.\n\nTesting our new view\n--------------------\n\nNow you can satisfy yourself that this behaves as expected by firing up the\nrunserver, loading the site in your browser, creating ``Polls`` with dates in\nthe past and future, and checking that only those that have been published are\nlisted.  You don't want to have to do that *every single time you make any\nchange that might affect this* - so let's also create a test, based on our\nshell session above.\n\nAdd the following to ``polls/tests.py``::\n\n    from django.core.urlresolvers import reverse\n\nand we'll create a factory method to create polls as well as a new test class::\n\n    def create_poll(question, days):\n        \"\"\"\n        Creates a poll with the given `question` published the given number of\n        `days` offset to now (negative for polls published in the past,\n        positive for polls that have yet to be published).\n        \"\"\"\n        return Poll.objects.create(question=question,\n            pub_date=timezone.now() + datetime.timedelta(days=days))\n\n    class PollViewTests(TestCase):\n        def test_index_view_with_no_polls(self):\n            \"\"\"\n            If no polls exist, an appropriate message should be displayed.\n            \"\"\"\n            response = self.client.get(reverse('polls:index'))\n            self.assertEqual(response.status_code, 200)\n            self.assertContains(response, \"No polls are available.\")\n            self.assertQuerysetEqual(response.context['latest_poll_list'], [])\n\n        def test_index_view_with_a_past_poll(self):\n            \"\"\"\n            Polls with a pub_date in the past should be displayed on the index page.\n            \"\"\"\n            create_poll(question=\"Past poll.\", days=-30)\n            response = self.client.get(reverse('polls:index'))\n            self.assertQuerysetEqual(\n                response.context['latest_poll_list'],\n                ['<Poll: Past poll.>']\n            )\n\n        def test_index_view_with_a_future_poll(self):\n            \"\"\"\n            Polls with a pub_date in the future should not be displayed on the\n            index page.\n            \"\"\"\n            create_poll(question=\"Future poll.\", days=30)\n            response = self.client.get(reverse('polls:index'))\n            self.assertContains(response, \"No polls are available.\", status_code=200)\n            self.assertQuerysetEqual(response.context['latest_poll_list'], [])\n\n        def test_index_view_with_future_poll_and_past_poll(self):\n            \"\"\"\n            Even if both past and future polls exist, only past polls should be\n            displayed.\n            \"\"\"\n            create_poll(question=\"Past poll.\", days=-30)\n            create_poll(question=\"Future poll.\", days=30)\n            response = self.client.get(reverse('polls:index'))\n            self.assertQuerysetEqual(\n                response.context['latest_poll_list'],\n                ['<Poll: Past poll.>']\n            )\n\n        def test_index_view_with_two_past_polls(self):\n            \"\"\"\n            The polls index page may display multiple polls.\n            \"\"\"\n            create_poll(question=\"Past poll 1.\", days=-30)\n            create_poll(question=\"Past poll 2.\", days=-5)\n            response = self.client.get(reverse('polls:index'))\n            self.assertQuerysetEqual(\n                response.context['latest_poll_list'],\n                 ['<Poll: Past poll 2.>', '<Poll: Past poll 1.>']\n            )\n\nLet's look at some of these more closely.\n\nFirst is a poll factory method, ``create_poll``, to take some repetition out\nof the process of creating polls.\n\n``test_index_view_with_no_polls`` doesn't create any polls, but checks the\nmessage: \"No polls are available.\" and verifies the ``latest_poll_list`` is\nempty. Note that the :class:`django.test.TestCase` class provides some\nadditional assertion methods. In these examples, we use\n:meth:`~django.test.TestCase.assertContains()` and\n:meth:`~django.test.TestCase.assertQuerysetEqual()`.\n\nIn ``test_index_view_with_a_past_poll``, we create a poll and verify that it\nappears in the list.\n\nIn ``test_index_view_with_a_future_poll``, we create a poll with a ``pub_date``\nin the future. The database is reset for each test method, so the first poll is\nno longer there, and so again the index shouldn't have any polls in it.\n\nAnd so on. In effect, we are using the tests to tell a story of admin input\nand user experience on the site, and checking that at every state and for every\nnew change in the state of the system, the expected results are published.\n\nTesting the ``DetailView``\n--------------------------\n\nWhat we have works well; however, even though future polls don't appear in the\n*index*, users can still reach them if they know or guess the right URL. So we\nneed similar constraints in the ``DetailViews``, by adding::\n\n    queryset=Poll.objects.filter(pub_date__lte=timezone.now)\n\nto them - for example::\n\n    url(r'^(?P<pk>\\d+)/$',\n        DetailView.as_view(\n            queryset=Poll.objects.filter(pub_date__lte=timezone.now),\n            model=Poll,\n            template_name='polls/detail.html'),\n        name='detail'),\n\nand of course, we will add some tests, to check that a ``Poll`` whose\n``pub_date`` is in the past can be displayed, and that one with a ``pub_date``\nin the future is not::\n\n    class PollIndexDetailTests(TestCase):\n        def test_detail_view_with_a_future_poll(self):\n            \"\"\"\n            The detail view of a poll with a pub_date in the future should\n            return a 404 not found.\n            \"\"\"\n            future_poll = create_poll(question='Future poll.', days=5)\n            response = self.client.get(reverse('polls:detail', args=(future_poll.id,)))\n            self.assertEqual(response.status_code, 404)\n\n        def test_detail_view_with_a_past_poll(self):\n            \"\"\"\n            The detail view of a poll with a pub_date in the past should display\n            the poll's question.\n            \"\"\"\n            past_poll = create_poll(question='Past Poll.', days=-5)\n            response = self.client.get(reverse('polls:detail', args=(past_poll.id,)))\n            self.assertContains(response, past_poll.question, status_code=200)\n\nIdeas for more tests\n--------------------\n\nWe ought to add similar ``queryset`` arguments to the other ``DetailView``\nURLs, and create a new test class for each view. They'll be very similar to\nwhat we have just created; in fact there will be a lot of repetition.\n\nWe could also improve our application in other ways, adding tests along the\nway. For example, it's silly that ``Polls`` can be published on the site that\nhave no ``Choices``. So, our views could check for this, and exclude such\n``Polls``. Our tests would create a ``Poll`` without ``Choices`` and then test\nthat it's not published, as well as create a similar ``Poll`` *with*\n``Choices``, and test that it *is* published.\n\nPerhaps logged-in admin users should be allowed to see unpublished ``Polls``,\nbut not ordinary visitors. Again: whatever needs to be added to the software to\naccomplish this should be accompanied by a test, whether you write the test\nfirst and then make the code pass the test, or work out the logic in your code\nfirst and then write a test to prove it.\n\nAt a certain point you are bound to look at your tests and wonder whether your\ncode is suffering from test bloat, which brings us to:\n\nWhen testing, more is better\n============================\n\nIt might seem that our tests are growing out of control. At this rate there will\nsoon be more code in our tests than in our application, and the repetition\nis unaesthetic, compared to the elegant conciseness of the rest of our code.\n\n**It doesn't matter**. Let them grow. For the most part, you can write a test\nonce and then forget about it. It will continue performing its useful function\nas you continue to develop your program.\n\nSometimes tests will need to be updated. Suppose that we amend our views so that\nonly ``Polls`` with ``Choices`` are published. In that case, many of our\nexisting tests will fail - *telling us exactly which tests need to be amended to\nbring them up to date*, so to that extent tests help look after themselves.\n\nAt worst, as you continue developing, you might find that you have some tests\nthat are now redundant. Even that's not a problem; in testing redundancy is\na *good* thing.\n\nAs long as your tests are sensibly arranged, they won't become unmanageable.\nGood rules-of-thumb include having:\n\n* a separate ``TestClass`` for each model or view\n* a separate test method for each set of conditions you want to test\n* test method names that describe their function\n\nFurther testing\n===============\n\nThis tutorial only introduces some of the basics of testing. There's a great\ndeal more you can do, and a number of very useful tools at your disposal to\nachieve some very clever things.\n\nFor example, while our tests here have covered some of the internal logic of a\nmodel and the way our views publish information, you can use an \"in-browser\"\nframework such as Selenium_ to test the way your HTML actually renders in a\nbrowser. These tools allow you to check not just the behavior of your Django\ncode, but also, for example, of your JavaScript. It's quite something to see\nthe tests launch a browser, and start interacting with your site, as if a human\nbeing were driving it! Django includes :class:`~django.test.LiveServerTestCase`\nto facilitate integration with tools like Selenium.\n\nIf you have a complex application, you may want to run tests automatically\nwith every commit for the purposes of `continuous integration`_, so that\nquality control is itself - at least partially - automated.\n\nA good way to spot untested parts of your application is to check code\ncoverage. This also helps identify fragile or even dead code. If you can't test\na piece of code, it usually means that code should be refactored or removed.\nCoverage will help to identify dead code. See\n:ref:`topics-testing-code-coverage` for details.\n\n:doc:`Testing Django applications </topics/testing/index>` has comprehensive\ninformation about testing.\n\n.. _Selenium: http://seleniumhq.org/\n.. _continuous integration: http://en.wikipedia.org/wiki/Continuous_integration\n\nWhat's next?\n============\n\nThe beginner tutorial ends here for the time being. In the meantime, you might\nwant to check out some pointers on :doc:`where to go from here\n</intro/whatsnext>`.\n\nIf you are familiar with Python packaging and interested in learning how to\nturn polls into a \"reusable app\", check out :doc:`Advanced tutorial: How to\nwrite reusable apps</intro/reusable-apps>`.\n"
  },
  {
    "path": "Django-1.5.1/docs/intro/whatsnext.txt",
    "content": "=================\nWhat to read next\n=================\n\nSo you've read all the :doc:`introductory material </intro/index>` and have\ndecided you'd like to keep using Django. We've only just scratched the surface\nwith this intro (in fact, if you've read every single word you've still read\nless than 10% of the overall documentation).\n\nSo what's next?\n\nWell, we've always been big fans of learning by doing. At this point you should\nknow enough to start a project of your own and start fooling around. As you need\nto learn new tricks, come back to the documentation.\n\nWe've put a lot of effort into making Django's documentation useful, easy to\nread and as complete as possible. The rest of this document explains more about\nhow the documentation works so that you can get the most out of it.\n\n(Yes, this is documentation about documentation. Rest assured we have no plans\nto write a document about how to read the document about documentation.)\n\nFinding documentation\n=====================\n\nDjango's got a *lot* of documentation -- almost 200,000 words -- so finding what\nyou need can sometimes be tricky. A few good places to start are the :ref:`search`\nand the :ref:`genindex`.\n\nOr you can just browse around!\n\nHow the documentation is organized\n==================================\n\nDjango's main documentation is broken up into \"chunks\" designed to fill\ndifferent needs:\n\n* The :doc:`introductory material </intro/index>` is designed for people new\n  to Django -- or to Web development in general. It doesn't cover anything\n  in depth, but instead gives a high-level overview of how developing in\n  Django \"feels\".\n\n* The :doc:`topic guides </topics/index>`, on the other hand, dive deep into\n  individual parts of Django. There are complete guides to Django's\n  :doc:`model system </topics/db/index>`, :doc:`template engine\n  </topics/templates>`, :doc:`forms framework </topics/forms/index>`, and much\n  more.\n\n  This is probably where you'll want to spend most of your time; if you work\n  your way through these guides you should come out knowing pretty much\n  everything there is to know about Django.\n\n* Web development is often broad, not deep -- problems span many domains.\n  We've written a set of :doc:`how-to guides </howto/index>` that answer\n  common \"How do I ...?\" questions. Here you'll find information about\n  :doc:`generating PDFs with Django </howto/outputting-pdf>`, :doc:`writing\n  custom template tags </howto/custom-template-tags>`, and more.\n\n  Answers to really common questions can also be found in the :doc:`FAQ\n  </faq/index>`.\n\n* The guides and how-to's don't cover every single class, function, and\n  method available in Django -- that would be overwhelming when you're\n  trying to learn. Instead, details about individual classes, functions,\n  methods, and modules are kept in the :doc:`reference </ref/index>`. This is\n  where you'll turn to find the details of a particular function or\n  whathaveyou.\n\n* Finally, there's some \"specialized\" documentation not usually relevant to\n  most developers. This includes the :doc:`release notes </releases/index>` and\n  :doc:`internals documentation </internals/index>` for those who want to add\n  code to Django itself, and a :doc:`few other things that simply don't fit\n  elsewhere </misc/index>`.\n\n\nHow documentation is updated\n============================\n\nJust as the Django code base is developed and improved on a daily basis, our\ndocumentation is consistently improving. We improve documentation for several\nreasons:\n\n* To make content fixes, such as grammar/typo corrections.\n\n* To add information and/or examples to existing sections that need to be\n  expanded.\n\n* To document Django features that aren't yet documented. (The list of\n  such features is shrinking but exists nonetheless.)\n\n* To add documentation for new features as new features get added, or as\n  Django APIs or behaviors change.\n\nDjango's documentation is kept in the same source control system as its code. It\nlives in the `docs`_ directory of our Git repository. Each document online is a\nseparate text file in the repository.\n\n.. _docs: https://github.com/django/django/tree/master/docs\n\nWhere to get it\n===============\n\nYou can read Django documentation in several ways. They are, in order of\npreference:\n\nOn the Web\n----------\n\nThe most recent version of the Django documentation lives at\nhttps://docs.djangoproject.com/en/dev/. These HTML pages are generated\nautomatically from the text files in source control. That means they reflect the\n\"latest and greatest\" in Django -- they include the very latest corrections and\nadditions, and they discuss the latest Django features, which may only be\navailable to users of the Django development version. (See \"Differences between\nversions\" below.)\n\nWe encourage you to help improve the docs by submitting changes, corrections and\nsuggestions in the `ticket system`_. The Django developers actively monitor the\nticket system and use your feedback to improve the documentation for everybody.\n\nNote, however, that tickets should explicitly relate to the documentation,\nrather than asking broad tech-support questions. If you need help with your\nparticular Django setup, try the `django-users mailing list`_ or the `#django\nIRC channel`_ instead.\n\n.. _ticket system: https://code.djangoproject.com/newticket?component=Documentation\n.. _django-users mailing list: http://groups.google.com/group/django-users\n.. _#django IRC channel: irc://irc.freenode.net/django\n\nIn plain text\n-------------\n\nFor offline reading, or just for convenience, you can read the Django\ndocumentation in plain text.\n\nIf you're using an official release of Django, note that the zipped package\n(tarball) of the code includes a ``docs/`` directory, which contains all the\ndocumentation for that release.\n\nIf you're using the development version of Django (aka \"trunk\"), note that the\n``docs/`` directory contains all of the documentation. You can update your\nGit checkout to get the latest changes.\n\nOne low-tech way of taking advantage of the text documentation is by using the\nUnix ``grep`` utility to search for a phrase in all of the documentation. For\nexample, this will show you each mention of the phrase \"max_length\" in any\nDjango document:\n\n.. code-block:: bash\n\n    $ grep -r max_length /path/to/django/docs/\n\nAs HTML, locally\n----------------\n\nYou can get a local copy of the HTML documentation following a few easy steps:\n\n* Django's documentation uses a system called Sphinx__ to convert from\n  plain text to HTML. You'll need to install Sphinx by either downloading\n  and installing the package from the Sphinx Web site, or with ``pip``:\n\n  .. code-block:: bash\n\n        $ sudo pip install Sphinx\n\n* Then, just use the included ``Makefile`` to turn the documentation into\n  HTML:\n\n  .. code-block:: bash\n\n        $ cd path/to/django/docs\n        $ make html\n\n  You'll need `GNU Make`__ installed for this.\n\n  If you're on Windows you can alternatively use the included batch file:\n\n  .. code-block:: bat\n\n        cd path\\to\\django\\docs\n        make.bat html\n\n* The HTML documentation will be placed in ``docs/_build/html``.\n\n.. note::\n\n    Generation of the Django documentation will work with Sphinx version 0.6\n    or newer, but we recommend going straight to Sphinx 1.0.2 or newer.\n\n__ http://sphinx.pocoo.org/\n__ http://www.gnu.org/software/make/\n\n.. _differences-between-doc-versions:\n\nDifferences between versions\n============================\n\nAs previously mentioned, the text documentation in our Git repository\ncontains the \"latest and greatest\" changes and additions. These changes often\ninclude documentation of new features added in the Django development version\n-- the Git (\"trunk\") version of Django. For that reason, it's worth\npointing out our policy on keeping straight the documentation for various\nversions of the framework.\n\nWe follow this policy:\n\n* The primary documentation on djangoproject.com is an HTML version of the\n  latest docs in Git. These docs always correspond to the latest\n  official Django release, plus whatever features we've added/changed in\n  the framework *since* the latest release.\n\n* As we add features to Django's development version, we try to update the\n  documentation in the same Git commit transaction.\n\n* To distinguish feature changes/additions in the docs, we use the phrase:\n  \"New in version X.Y\", being X.Y the next release version (hence, the one\n  being developed).\n\n* Documentation fixes and improvements may be backported to the last release\n  branch, at the discretion of the committer, however, once a version of\n  Django is :ref:`no longer supported<backwards-compatibility-policy>`, that\n  version of the docs won't get any further updates.\n\n* The `main documentation Web page`_ includes links to documentation for\n  all previous versions. Be sure you are using the version of the docs\n  corresponding to the version of Django you are using!\n\n.. _main documentation Web page: https://docs.djangoproject.com/en/dev/\n"
  },
  {
    "path": "Django-1.5.1/docs/make.bat",
    "content": "@ECHO OFF\n\nREM Command file for Sphinx documentation\n\nif \"%SPHINXBUILD%\" == \"\" (\n\tset SPHINXBUILD=sphinx-build\n)\nset BUILDDIR=_build\nset ALLSPHINXOPTS=-n -d %BUILDDIR%/doctrees %SPHINXOPTS% .\nif NOT \"%PAPER%\" == \"\" (\n\tset ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS%\n\tset I18NSPHINXOPTS=-D latex_paper_size=%PAPER% %I18NSPHINXOPTS%\n)\n\nif \"%1\" == \"\" goto help\n\nif \"%1\" == \"help\" (\n\t:help\n\techo.Please use `make ^<target^>` where ^<target^> is one of\n\techo.  html       to make standalone HTML files\n\techo.  dirhtml    to make HTML files named index.html in directories\n\techo.  singlehtml to make a single large HTML file\n\techo.  pickle     to make pickle files\n\techo.  json       to make JSON files\n\techo.  htmlhelp   to make HTML files and a HTML help project\n\techo.  qthelp     to make HTML files and a qthelp project\n\techo.  devhelp    to make HTML files and a Devhelp project\n\techo.  epub       to make an epub\n\techo.  latex      to make LaTeX files, you can set PAPER=a4 or PAPER=letter\n\techo.  text       to make text files\n\techo.  man        to make manual pages\n\techo.  texinfo    to make a Texinfo source file\n\techo.  gettext    to make PO message catalogs\n\techo.  changes    to make an overview over all changed/added/deprecated items\n\techo.  linkcheck  to check all external links for integrity\n\techo.  doctest    to run all doctests embedded in the documentation if enabled\n\tgoto end\n)\n\nif \"%1\" == \"clean\" (\n\tfor /d %%i in (%BUILDDIR%\\*) do rmdir /q /s %%i\n\tdel /q /s %BUILDDIR%\\*\n\tgoto end\n)\n\nif \"%1\" == \"html\" (\n\t%SPHINXBUILD% -b djangohtml %ALLSPHINXOPTS% %BUILDDIR%/html\n\tif errorlevel 1 exit /b 1\n\techo.\n\techo.Build finished. The HTML pages are in %BUILDDIR%/html.\n\tgoto end\n)\n\nif \"%1\" == \"dirhtml\" (\n\t%SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml\n\tif errorlevel 1 exit /b 1\n\techo.\n\techo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml.\n\tgoto end\n)\n\nif \"%1\" == \"singlehtml\" (\n\t%SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml\n\tif errorlevel 1 exit /b 1\n\techo.\n\techo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml.\n\tgoto end\n)\n\nif \"%1\" == \"pickle\" (\n\t%SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle\n\tif errorlevel 1 exit /b 1\n\techo.\n\techo.Build finished; now you can process the pickle files.\n\tgoto end\n)\n\nif \"%1\" == \"json\" (\n\t%SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json\n\tif errorlevel 1 exit /b 1\n\techo.\n\techo.Build finished; now you can process the JSON files.\n\tgoto end\n)\n\nif \"%1\" == \"htmlhelp\" (\n\t%SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp\n\tif errorlevel 1 exit /b 1\n\techo.\n\techo.Build finished; now you can run HTML Help Workshop with the ^\n.hhp project file in %BUILDDIR%/htmlhelp.\n\tgoto end\n)\n\nif \"%1\" == \"qthelp\" (\n\t%SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp\n\tif errorlevel 1 exit /b 1\n\techo.\n\techo.Build finished; now you can run \"qcollectiongenerator\" with the ^\n.qhcp project file in %BUILDDIR%/qthelp, like this:\n\techo.^> qcollectiongenerator %BUILDDIR%\\qthelp\\django.qhcp\n\techo.To view the help file:\n\techo.^> assistant -collectionFile %BUILDDIR%\\qthelp\\django.qhc\n\tgoto end\n)\n\nif \"%1\" == \"devhelp\" (\n\t%SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp\n\tif errorlevel 1 exit /b 1\n\techo.\n\techo.Build finished.\n\tgoto end\n)\n\nif \"%1\" == \"epub\" (\n\t%SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub\n\tif errorlevel 1 exit /b 1\n\techo.\n\techo.Build finished. The epub file is in %BUILDDIR%/epub.\n\tgoto end\n)\n\nif \"%1\" == \"latex\" (\n\t%SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex\n\tif errorlevel 1 exit /b 1\n\techo.\n\techo.Build finished; the LaTeX files are in %BUILDDIR%/latex.\n\tgoto end\n)\n\nif \"%1\" == \"text\" (\n\t%SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text\n\tif errorlevel 1 exit /b 1\n\techo.\n\techo.Build finished. The text files are in %BUILDDIR%/text.\n\tgoto end\n)\n\nif \"%1\" == \"man\" (\n\t%SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man\n\tif errorlevel 1 exit /b 1\n\techo.\n\techo.Build finished. The manual pages are in %BUILDDIR%/man.\n\tgoto end\n)\n\nif \"%1\" == \"texinfo\" (\n\t%SPHINXBUILD% -b texinfo %ALLSPHINXOPTS% %BUILDDIR%/texinfo\n\tif errorlevel 1 exit /b 1\n\techo.\n\techo.Build finished. The Texinfo files are in %BUILDDIR%/texinfo.\n\tgoto end\n)\n\nif \"%%1\" == \"gettext\" (\n\t%SPHINXBUILD% -b gettext %I18NSPHINXOPTS% %BUILDDIR%/locale\n\tif errorlevel 1 exit /b 1\n\techo.\n\techo.Build finished. The message catalogs are in %BUILDDIR%/locale.\n\tgoto end\n)\n\nif \"%1\" == \"changes\" (\n\t%SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes\n\tif errorlevel 1 exit /b 1\n\techo.\n\techo.The overview file is in %BUILDDIR%/changes.\n\tgoto end\n)\n\nif \"%1\" == \"linkcheck\" (\n\t%SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck\n\tif errorlevel 1 exit /b 1\n\techo.\n\techo.Link check complete; look for any errors in the above output ^\nor in %BUILDDIR%/linkcheck/output.txt.\n\tgoto end\n)\n\nif \"%1\" == \"doctest\" (\n\t%SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest\n\tif errorlevel 1 exit /b 1\n\techo.\n\techo.Testing of doctests in the sources finished, look at the ^\nresults in %BUILDDIR%/doctest/output.txt.\n\tgoto end\n)\n\n:end\n"
  },
  {
    "path": "Django-1.5.1/docs/man/daily_cleanup.1",
    "content": ".TH \"daily_cleanup.py\" \"1\" \"August 2007\" \"Django Project\" \"\"\n.SH \"NAME\"\ndaily_cleanup.py \\- Database clean-up for the Django Web framework\n.SH \"SYNOPSIS\"\n.B daily_cleanup.py\n\n.SH \"DESCRIPTION\"\nRemoves stale session data from a Django database. This means, any session data\nwhich has an expiry date prior to the date the script is run.\n.sp\nThe script can be run manually or can be scheduled to run at regular\nintervals as a\n.BI cron\njob.\n\n.SH \"ENVIRONMENT\"\n.TP\n.I DJANGO_SETTINGS_MODULE\nThis environment variable defines the settings module to be read.\nIt should be in Python-import form, e.g. \"myproject.settings\".\n\n.SH \"SEE ALSO\"\nThe sessions documentation:\n.sp\n.I http://docs.djangoproject.com/en/dev/topics/http/sessions/\n\n.SH \"AUTHORS/CREDITS\"\nOriginally developed at World Online in Lawrence, Kansas, USA. Refer to the\nAUTHORS file in the Django distribution for contributors.\n\n.SH \"LICENSE\"\nNew BSD license. For the full license text refer to the LICENSE file in the\nDjango distribution.\n\n"
  },
  {
    "path": "Django-1.5.1/docs/man/django-admin.1",
    "content": ".TH \"django-admin.py\" \"1\" \"March 2008\" \"Django Project\" \"\"\n.SH \"NAME\"\ndjango\\-admin.py \\- Utility script for the Django Web framework\n.SH \"SYNOPSIS\"\n.B django\\-admin.py\n.I <action>\n.B [options]\n.sp\n.SH \"DESCRIPTION\"\nThis utility script provides commands for creation and maintenance of Django\nprojects and apps.\n.sp\nWith the exception of\n.BI startproject,\nall commands listed below can also be performed with the\n.BI manage.py\nscript found at the top level of each Django project directory.\n.sp\n.SH \"ACTIONS\"\n.TP\n.BI cleanup\nCleans out old data from the database (only expired sessions at the moment).\n.TP\n.BI \"compilemessages [\" \"\\-\\-locale=LOCALE\" \"]\"\nCompiles .po files to .mo files for use with builtin gettext support.\n.TP\n.BI \"createcachetable [\" \"tablename\" \"]\"\nCreates the table needed to use the SQL cache backend\n.TP\n.BI \"createsuperuser [\" \"\\-\\-username=USERNAME\" \"] [\" \"\\-\\-email=EMAIL\" \"]\"\nCreates a superuser account (a user who has all permissions).\n.TP\n.B dbshell\nRuns the command\\-line client for the specified\n.BI database ENGINE.\n.TP\n.B diffsettings\nDisplays differences between the current\n.B settings.py\nand Django's default settings. Settings that don't appear in the defaults are\nfollowed by \"###\".\n.TP\n.BI \"dumpdata [\" \"\\-\\-all\" \"] [\" \"\\-\\-format=FMT\" \"] [\" \"\\-\\-indent=NUM\" \"] [\" \"\\-\\-natural=NATURAL\" \"] [\" \"appname appname appname.Model ...\" \"]\"\nOutputs to standard output all data in the database associated with the named\napplication(s).\n.TP\n.BI flush\nReturns the database to the state it was in immediately after syncdb was\nexecuted.\n.TP\n.B inspectdb\nIntrospects the database tables in the database specified in settings.py and outputs a Django\nmodel module.\n.TP\n.BI \"loaddata [\" \"fixture fixture ...\" \"]\"\nSearches for and loads the contents of the named fixture into the database.\n.TP\n.BI \"install [\" \"appname ...\" \"]\"\nExecutes\n.B sqlall\nfor the given app(s) in the current database.\n.TP\n.BI \"makemessages [\" \"\\-\\-locale=LOCALE\" \"] [\" \"\\-\\-domain=DOMAIN\" \"] [\" \"\\-\\-extension=EXTENSION\" \"] [\" \"\\-\\-all\" \"] [\" \"\\-\\-symlinks\" \"] [\" \"\\-\\-ignore=PATTERN\" \"] [\" \"\\-\\-no\\-default\\-ignore\" \"] [\" \"\\-\\-no\\-wrap\" \"] [\" \"\\-\\-no\\-location\" \"]\"\nRuns over the entire source tree of the current directory and pulls out all\nstrings marked for translation. It creates (or updates) a message file in the\nconf/locale (in the django tree) or locale (for project and application) directory.\n.TP\n.BI \"runfcgi [\" \"KEY=val\" \"] [\" \"KEY=val\" \"] \" \"...\"\nRuns this project as a FastCGI application. Requires flup. Use\n.B runfcgi help\nfor help on the KEY=val pairs.\n.TP\n.BI \"runserver [\" \"\\-\\-noreload\" \"] [\" \"\\-\\-nothreading\" \"] [\" \"\\-\\-nostatic\" \"] [\" \"\\-\\-insecure\" \"] [\" \"\\-\\-ipv6\" \"] [\" \"port|ipaddr:port\" \"]\"\nStarts a lightweight Web server for development.\n.TP\n.BI \"shell [\" \"\\-\\-plain\" \"]\"\nRuns a Python interactive interpreter. Tries to use IPython, if it's available.\nThe\n.BI \\-\\-plain\noption forces the use of the standard Python interpreter even when IPython is\ninstalled.\n.TP\n.BI \"sql [\" \"appname ...\" \"]\"\nPrints the CREATE TABLE SQL statements for the given app name(s).\n.TP\n.BI \"sqlall [\" \"appname ...\" \"]\"\nPrints the CREATE TABLE, initial\\-data and CREATE INDEX SQL statements for the\ngiven model module name(s).\n.TP\n.BI \"sqlclear [\" \"appname ...\" \"]\"\nPrints the DROP TABLE SQL statements for the given app name(s).\n.TP\n.BI \"sqlcustom [\" \"appname ...\" \"]\"\nPrints the custom SQL statements for the given app name(s).\n.TP\n.BI \"sqlflush [\" \"appname ...\" \"]\"\nPrints the SQL statements that would be executed for the \"flush\" command.\n.TP\n.BI \"sqlindexes [\" \"appname ...\" \"]\"\nPrints the CREATE INDEX SQL statements for the given model module name(s).\n.TP\n.BI \"sqlinitialdata [\" \"appname ...\" \"]\"\nPrints the initial INSERT SQL statements for the given app name(s).\n.TP\n.BI \"sqlsequencereset [\" \"appname ...\" \"]\"\nPrints the SQL statements for resetting PostgreSQL sequences for the\ngiven app name(s).\n.TP\n.BI \"startapp [\" \"\\-\\-template=PATH_OR_URL\" \"] [\" \"\\-\\-extension=EXTENSION\" \"] [\" \"\\-\\-name=FILENAME\" \"] [\" \"appname\" \"] [\" \"destination\" \"]\"\nCreates a Django app directory structure for the given app name in\nthe current directory or the optional destination.\n.TP\n.BI \"startproject [\" \"\\-\\-template=PATH_OR_URL\" \"] [\" \"\\-\\-extension=EXTENSION\" \"] [\" \"\\-\\-name=FILENAME\" \"] [\" \"projectname\" \"] [\" \"destination\" \"]\"\nCreates a Django project directory structure for the given project name\nin the current directory or the optional destination.\n.TP\n.BI syncdb\nCreates the database tables for all apps in INSTALLED_APPS whose tables\nhaven't already been created.\n.TP\n.BI \"test [\" \"\\-\\-verbosity\" \"] [\" \"\\-\\-failfast\" \"] [\" \"appname ...\" \"]\"\nRuns the test suite for the specified applications, or the entire project if\nno apps are specified\n.TP\n.BI \"testserver [\" \"\\-\\-addrport=ipaddr|port\" \"] [\" \"fixture fixture ...\" \"]\"\nRuns the test suite for the specified applications, or the entire project if\nno apps are specified\n.TP\n.BI validate\nValidates all installed models.\n.SH \"OPTIONS\"\n.TP\n.I \\-\\-version\nShow program's version number and exit.\n.TP\n.I \\-h, \\-\\-help\nShow this help message and exit.\n.TP\n.I \\-\\-settings=SETTINGS\nPython path to settings module, e.g. \"myproject.settings.main\". If\nthis isn't provided, the DJANGO_SETTINGS_MODULE environment variable\nwill be used.\n.TP\n.I \\-\\-pythonpath=PYTHONPATH\nLets you manually add a directory the Python path,\ne.g. \"/home/djangoprojects/myproject\".\n.TP\n.I \\-\\-plain\nUse plain Python, not IPython, for the \"shell\" command.\n.TP\n.I \\-\\-noinput\nDo not prompt the user for input.\n.TP\n.I \\-\\-noreload\nDisable the development server's auto\\-reloader.\n.TP\n.I \\-\\-nostatic\nDisable automatic serving of static files from STATIC_URL.\n.TP\n.I \\-\\-nothreading\nDisable the development server's threading.\n.TP\n.I \\-\\-insecure\nEnables serving of static files even if DEBUG is False.\n.TP\n.I \\-\\-ipv6\nEnables IPv6 addresses.\n.TP\n.I \\-\\-verbosity=VERBOSITY\nVerbosity level: 0=minimal output, 1=normal output, 2=all output.\n.TP\n.I \\-\\-traceback\nBy default, django-admin.py will show a simple error message whenever an\nerror occurs. If you specify this option, django-admin.py  will\noutput a full stack trace whenever an exception is raised.\n.TP\n.I \\-l, \\-\\-locale=LOCALE\nThe locale to process when using makemessages or compilemessages.\n.TP\n.I \\-d, \\-\\-domain=DOMAIN\nThe domain of the message files (default: \"django\") when using makemessages.\n.TP\n.I \\-e, \\-\\-extension=EXTENSION\nThe file extension(s) to examine (separate multiple\nextensions with commas, or use \\-e multiple times) (makemessages command).\n.TP\n.I \\-s, \\-\\-symlinks\nFollows symlinks to directories when examining source code and templates for\ntranslation strings (makemessages command).\n.TP\n.I \\-i, \\-\\-ignore=PATTERN\nIgnore files or directories matching this glob-style pattern. Use multiple\ntimes to ignore more (makemessages command).\n.TP\n.I \\-\\-no\\-default\\-ignore\nDon't ignore the common private glob-style patterns 'CVS', '.*' and '*~' (makemessages command).\n.TP\n.I \\-\\-no\\-wrap\nDon't break long message lines into several lines (makemessages command).\n.TP\n.I \\-\\-no\\-location\nDon't write '#: filename:line' comment lines in language files (makemessages command).\n.TP\n.I \\-a, \\-\\-all\nProcess all available locales when using makemessages.\n.TP\n.I \\-\\-template=PATH_OR_URL\nThe file or directory path or URL to load the project and app templates from.\n.TP\n.I \\-n, \\-\\-name=FILENAME\nThe name of an additional file to render when using app and project templates.\n.TP\n.I \\-\\-database=DB\nUsed to specify the database on which a command will operate. If not\nspecified, this option will default to an alias of \"default\".\n.SH \"ENVIRONMENT\"\n.TP\n.I DJANGO_SETTINGS_MODULE\nIn the absence of the\n.BI \\-\\-settings\noption, this environment variable defines the settings module to be read.\nIt should be in Python-import form, e.g. \"myproject.settings\".\n\n.SH \"SEE ALSO\"\nFull descriptions of all these options, with examples, as well as documentation\nfor the rest of the Django framework, can be found on the Django site:\n.sp\n.I http://docs.djangoproject.com/en/dev/\n.sp\nor in the distributed documentation.\n.SH \"AUTHORS/CREDITS\"\nOriginally developed at World Online in Lawrence, Kansas, USA. Refer to the\nAUTHORS file in the Django distribution for contributors.\n.sp\n.SH \"LICENSE\"\nNew BSD license. For the full license text refer to the LICENSE file in the\nDjango distribution.\n\n"
  },
  {
    "path": "Django-1.5.1/docs/man/gather_profile_stats.1",
    "content": ".TH \"gather_profile_stats.py\" \"1\" \"August 2007\" \"Django Project\" \"\"\n.SH \"NAME\"\ngather_profile_stats.py \\- Performance analysis tool for the Django Web\nframework\n.SH \"SYNOPSIS\"\n.B python gather_profile_stats.py\n.I <path>\n\n.SH \"DESCRIPTION\"\nThis utility script aggregates profiling logs generated using Python's\nhotshot profiler. The sole command-line argument is the full path to the\ndirectory containing the profiling logfiles.\n\n.SH \"SEE ALSO\"\nDiscussion of profiling Django applications on the Django project's wiki:\n.sp\n.I https://www.djangoproject.com/wiki/ProfilingDjango\n\n.SH \"AUTHORS/CREDITS\"\nOriginally developed at World Online in Lawrence, Kansas, USA. Refer to the\nAUTHORS file in the Django distribution for contributors.\n\n.SH \"LICENSE\"\nNew BSD license. For the full license text refer to the LICENSE file in the\nDjango distribution.\n\n"
  },
  {
    "path": "Django-1.5.1/docs/misc/api-stability.txt",
    "content": "=============\nAPI stability\n=============\n\n:doc:`The release of Django 1.0 </releases/1.0>` comes with a promise of API\nstability and forwards-compatibility. In a nutshell, this means that code you\ndevelop against a 1.X version of Django will continue to work with future\n1.X releases. You may need to make minor changes when upgrading the version of\nDjango your project uses: see the \"Backwards incompatible changes\" section of\nthe :doc:`release note </releases/index>` for the version or versions to which\nyou are upgrading.\n\nWhat \"stable\" means\n===================\n\nIn this context, stable means:\n\n- All the public APIs (everything in this documentation) will not be moved\n  or renamed without providing backwards-compatible aliases.\n\n- If new features are added to these APIs -- which is quite possible --\n  they will not break or change the meaning of existing methods. In other\n  words, \"stable\" does not (necessarily) mean \"complete.\"\n\n- If, for some reason, an API declared stable must be removed or replaced, it\n  will be declared deprecated but will remain in the API for at least two\n  minor version releases. Warnings will be issued when the deprecated method\n  is called.\n\n  See :ref:`official-releases` for more details on how Django's version\n  numbering scheme works, and how features will be deprecated.\n\n- We'll only break backwards compatibility of these APIs if a bug or\n  security hole makes it completely unavoidable.\n\nStable APIs\n===========\n\nIn general, everything covered in the documentation -- with the exception of\nanything in the :doc:`internals area </internals/index>` is considered stable.\n\nExceptions\n==========\n\nThere are a few exceptions to this stability and backwards-compatibility\npromise.\n\nSecurity fixes\n--------------\n\nIf we become aware of a security problem -- hopefully by someone following our\n:ref:`security reporting policy <reporting-security-issues>` -- we'll do\neverything necessary to fix it. This might mean breaking backwards\ncompatibility; security trumps the compatibility guarantee.\n\nAPIs marked as internal\n-----------------------\n\nCertain APIs are explicitly marked as \"internal\" in a couple of ways:\n\n- Some documentation refers to internals and mentions them as such. If the\n  documentation says that something is internal, we reserve the right to\n  change it.\n\n- Functions, methods, and other objects prefixed by a leading underscore\n  (``_``). This is the standard Python way of indicating that something is\n  private; if any method starts with a single ``_``, it's an internal API.\n\n.. _misc-api-stability-localflavor:\n\nLocal flavors\n-------------\n\n:mod:`django.contrib.localflavor` contains assorted pieces of code\nthat are useful for particular countries or cultures. This data is\nlocal in nature, and is subject to change on timelines that will\nalmost never correlate with Django's own release schedules. For\nexample, a common change is to split a province into two new\nprovinces, or to rename an existing province.\n\nThese changes present two competing compatibility issues. Moving\nforward, displaying the names of deprecated, renamed and dissolved\nprovinces in a selection widget is bad from a user interface\nperspective. However, maintaining full backwards compatibility\nrequires that we support historical values that may be stored in a\ndatabase -- including values that may no longer be valid.\n\nTherefore, Django has the following policy with respect to changes in\nlocal flavor:\n\n* At the time of a Django release, the data and algorithms\n  contained in :mod:`django.contrib.localflavor` will, to the best\n  of our ability, reflect the officially gazetted policies of the\n  appropriate local government authority. If a province has been\n  added, altered, or removed, that change will be reflected in\n  Django's localflavor.\n\n* These changes will *not* be backported to the previous stable\n  release. Upgrading a minor version of Django should not require\n  any data migration or audits for UI changes; therefore, if you\n  want to get the latest province list, you will either need to\n  upgrade your Django install, or backport the province list you\n  need.\n\n* For one release, the affected localflavor module will raise a\n  ``RuntimeWarning`` when it is imported.\n\n* The change will be announced in the release notes as a backwards\n  incompatible change requiring attention. The change will also be\n  annotated in the documentation for the localflavor module.\n\n* Where necessary and feasible, a migration script will be provided\n  to aid the migration process.\n\nFor example, Django 1.2 contains an Indonesian localflavor. It has a\nprovince list that includes \"Nanggroe Aceh Darussalam (NAD)\" as a\nprovince. The Indonesian government has changed the official name of\nthe province to \"Aceh (ACE)\". As a result, Django 1.3 does *not*\ncontain \"Nanggroe Aceh Darussalam (NAD)\" in the province list, but\n*does* contain \"Aceh (ACE)\".\n"
  },
  {
    "path": "Django-1.5.1/docs/misc/design-philosophies.txt",
    "content": "===================\nDesign philosophies\n===================\n\nThis document explains some of the fundamental philosophies Django's developers\nhave used in creating the framework. Its goal is to explain the past and guide\nthe future.\n\nOverall\n=======\n\n.. _loose-coupling:\n\nLoose coupling\n--------------\n\n.. index:: coupling; loose\n\nA fundamental goal of Django's stack is `loose coupling and tight cohesion`_.\nThe various layers of the framework shouldn't \"know\" about each other unless\nabsolutely necessary.\n\nFor example, the template system knows nothing about Web requests, the database\nlayer knows nothing about data display and the view system doesn't care which\ntemplate system a programmer uses.\n\nAlthough Django comes with a full stack for convenience, the pieces of the\nstack are independent of another wherever possible.\n\n.. _`loose coupling and tight cohesion`: http://c2.com/cgi/wiki?CouplingAndCohesion\n\n.. _less-code:\n\nLess code\n---------\n\nDjango apps should use as little code as possible; they should lack boilerplate.\nDjango should take full advantage of Python's dynamic capabilities, such as\nintrospection.\n\n.. _quick-development:\n\nQuick development\n-----------------\n\nThe point of a Web framework in the 21st century is to make the tedious aspects\nof Web development fast. Django should allow for incredibly quick Web\ndevelopment.\n\n.. _dry:\n\nDon't repeat yourself (DRY)\n---------------------------\n\n.. index::\n   single: DRY\n   single: Don't repeat yourself\n\nEvery distinct concept and/or piece of data should live in one, and only one,\nplace. Redundancy is bad. Normalization is good.\n\nThe framework, within reason, should deduce as much as possible from as little\nas possible.\n\n.. seealso::\n\n    The `discussion of DRY on the Portland Pattern Repository`__\n\n    __ http://c2.com/cgi/wiki?DontRepeatYourself\n    \n.. _explicit-is-better-than-implicit:\n\nExplicit is better than implicit\n--------------------------------\n\nThis is a core Python principle listed in :pep:`20`, and it means Django\nshouldn't do too much \"magic.\" Magic shouldn't happen unless there's a really\ngood reason for it. Magic is worth using only if it creates a huge convenience\nunattainable in other ways, and it isn't implemented in a way that confuses\ndevelopers who are trying to learn how to use the feature.\n\n.. _consistency:\n\nConsistency\n-----------\n\nThe framework should be consistent at all levels. Consistency applies to\neverything from low-level (the Python coding style used) to high-level (the\n\"experience\" of using Django).\n\nModels\n======\n\nExplicit is better than implicit\n--------------------------------\n\nFields shouldn't assume certain behaviors based solely on the name of the\nfield. This requires too much knowledge of the system and is prone to errors.\nInstead, behaviors should be based on keyword arguments and, in some cases, on\nthe type of the field.\n\nInclude all relevant domain logic\n---------------------------------\n\nModels should encapsulate every aspect of an \"object,\" following Martin\nFowler's `Active Record`_ design pattern.\n\nThis is why both the data represented by a model and information about\nit (its human-readable name, options like default ordering, etc.) are\ndefined in the model class; all the information needed to understand a\ngiven model should be stored *in* the model.\n\n.. _`Active Record`: http://www.martinfowler.com/eaaCatalog/activeRecord.html\n\nDatabase API\n============\n\nThe core goals of the database API are:\n\nSQL efficiency\n--------------\n\nIt should execute SQL statements as few times as possible, and it should\noptimize statements internally.\n\nThis is why developers need to call ``save()`` explicitly, rather than the\nframework saving things behind the scenes silently.\n\nThis is also why the ``select_related()`` ``QuerySet`` method exists. It's an\noptional performance booster for the common case of selecting \"every related\nobject.\"\n\nTerse, powerful syntax\n----------------------\n\nThe database API should allow rich, expressive statements in as little syntax\nas possible. It should not rely on importing other modules or helper objects.\n\nJoins should be performed automatically, behind the scenes, when necessary.\n\nEvery object should be able to access every related object, systemwide. This\naccess should work both ways.\n\nOption to drop into raw SQL easily, when needed\n-----------------------------------------------\n\nThe database API should realize it's a shortcut but not necessarily an\nend-all-be-all. The framework should make it easy to write custom SQL -- entire\nstatements, or just custom ``WHERE`` clauses as custom parameters to API calls.\n\nURL design\n==========\n\nLoose coupling\n--------------\n\nURLs in a Django app should not be coupled to the underlying Python code. Tying\nURLs to Python function names is a Bad And Ugly Thing.\n\nAlong these lines, the Django URL system should allow URLs for the same app to\nbe different in different contexts. For example, one site may put stories at\n``/stories/``, while another may use ``/news/``.\n\nInfinite flexibility\n--------------------\n\nURLs should be as flexible as possible. Any conceivable URL design should be\nallowed.\n\nEncourage best practices\n------------------------\n\nThe framework should make it just as easy (or even easier) for a developer to\ndesign pretty URLs than ugly ones.\n\nFile extensions in Web-page URLs should be avoided.\n\nVignette-style commas in URLs deserve severe punishment.\n\n.. _definitive-urls:\n\nDefinitive URLs\n---------------\n\n.. index:: urls; definitive\n\nTechnically, ``foo.com/bar`` and ``foo.com/bar/`` are two different URLs, and\nsearch-engine robots (and some Web traffic-analyzing tools) would treat them as\nseparate pages. Django should make an effort to \"normalize\" URLs so that\nsearch-engine robots don't get confused.\n\nThis is the reasoning behind the :setting:`APPEND_SLASH` setting.\n\nTemplate system\n===============\n\n.. _separation-of-logic-and-presentation:\n\nSeparate logic from presentation\n--------------------------------\n\nWe see a template system as a tool that controls presentation and\npresentation-related logic -- and that's it. The template system shouldn't\nsupport functionality that goes beyond this basic goal.\n\nDiscourage redundancy\n---------------------\n\nThe majority of dynamic Web sites use some sort of common sitewide design --\na common header, footer, navigation bar, etc. The Django template system should\nmake it easy to store those elements in a single place, eliminating duplicate\ncode.\n\nThis is the philosophy behind :ref:`template inheritance\n<template-inheritance>`.\n\nBe decoupled from HTML\n----------------------\n\nThe template system shouldn't be designed so that it only outputs HTML. It\nshould be equally good at generating other text-based formats, or just plain\ntext.\n\nXML should not be used for template languages\n---------------------------------------------\n\n.. index:: xml; suckiness of\n\nUsing an XML engine to parse templates introduces a whole new world of human\nerror in editing templates -- and incurs an unacceptable level of overhead in\ntemplate processing.\n\nAssume designer competence\n--------------------------\n\nThe template system shouldn't be designed so that templates necessarily are\ndisplayed nicely in WYSIWYG editors such as Dreamweaver. That is too severe of\na limitation and wouldn't allow the syntax to be as nice as it is. Django\nexpects template authors are comfortable editing HTML directly.\n\nTreat whitespace obviously\n--------------------------\n\nThe template system shouldn't do magic things with whitespace. If a template\nincludes whitespace, the system should treat the whitespace as it treats text\n-- just display it. Any whitespace that's not in a template tag should be\ndisplayed.\n\nDon't invent a programming language\n-----------------------------------\n\nThe template system intentionally doesn't allow the following:\n\n* Assignment to variables\n* Advanced logic\n\nThe goal is not to invent a programming language. The goal is to offer just\nenough programming-esque functionality, such as branching and looping, that is\nessential for making presentation-related decisions.\n\nThe Django template system recognizes that templates are most often written by\n*designers*, not *programmers*, and therefore should not assume Python\nknowledge.\n\nSafety and security\n-------------------\n\nThe template system, out of the box, should forbid the inclusion of malicious\ncode -- such as commands that delete database records.\n\nThis is another reason the template system doesn't allow arbitrary Python code.\n\nExtensibility\n-------------\n\nThe template system should recognize that advanced template authors may want\nto extend its technology.\n\nThis is the philosophy behind custom template tags and filters.\n\nViews\n=====\n\nSimplicity\n----------\n\nWriting a view should be as simple as writing a Python function. Developers\nshouldn't have to instantiate a class when a function will do.\n\nUse request objects\n-------------------\n\nViews should have access to a request object -- an object that stores metadata\nabout the current request. The object should be passed directly to a view\nfunction, rather than the view function having to access the request data from\na global variable. This makes it light, clean and easy to test views by passing\nin \"fake\" request objects.\n\nLoose coupling\n--------------\n\nA view shouldn't care about which template system the developer uses -- or even\nwhether a template system is used at all.\n\nDifferentiate between GET and POST\n----------------------------------\n\nGET and POST are distinct; developers should explicitly use one or the other.\nThe framework should make it easy to distinguish between GET and POST data.\n"
  },
  {
    "path": "Django-1.5.1/docs/misc/distributions.txt",
    "content": "===================================\nThird-party distributions of Django\n===================================\n\nMany third-party distributors are now providing versions of Django integrated\nwith their package-management systems. These can make installation and upgrading\nmuch easier for users of Django since the integration includes the ability to\nautomatically install dependencies (like database adapters) that Django\nrequires.\n\nTypically, these packages are based on the latest stable release of Django, so\nif you want to use the development version of Django you'll need to follow the\ninstructions for :ref:`installing the development version\n<installing-development-version>` from our Git repository.\n\nIf you're using Linux or a Unix installation, such as OpenSolaris,\ncheck with your distributor to see if they already package Django. If\nyou're using a Linux distro and don't know how to find out if a package\nis available, then now is a good time to learn.  The Django Wiki contains\na list of `Third Party Distributions`_ to help you out.\n\n.. _`Third Party Distributions`: https://code.djangoproject.com/wiki/Distributions\n\n\nFor distributors\n================\n\nIf you'd like to package Django for distribution, we'd be happy to help out!\nPlease join the `django-developers mailing list`_ and introduce yourself.\n\nWe also encourage all distributors to subscribe to the `django-announce mailing\nlist`_, which is a (very) low-traffic list for announcing new releases of Django\nand important bugfixes.\n\n.. _django-developers mailing list: http://groups.google.com/group/django-developers/\n.. _django-announce mailing list: http://groups.google.com/group/django-announce/\n"
  },
  {
    "path": "Django-1.5.1/docs/misc/index.txt",
    "content": "Meta-documentation and miscellany\n=================================\n\nDocumentation that we can't find a more organized place for. Like that drawer in\nyour kitchen with the scissors, batteries, duct tape, and other junk.\n\n.. toctree::\n   :maxdepth: 2\n   \n   api-stability\n   design-philosophies\n   distributions\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/class-based-views/base.txt",
    "content": "==========\nBase views\n==========\n\nThe following three classes provide much of the functionality needed to create\nDjango views. You may think of them as *parent* views, which can be used by\nthemselves or inherited from. They may not provide all the capabilities\nrequired for projects, in which case there are Mixins and Generic class-based\nviews.\n\nMany of Django's built-in class-based views inherit from other class-based\nviews or various mixins. Because this inheritence chain is very important, the\nancestor classes are  documented under the section title of **Ancestors (MRO)**.\nMRO is an acronym for Method Resolution Order.\n\nView\n----\n\n.. class:: django.views.generic.base.View\n\n    The master class-based base view. All other class-based views inherit from\n    this base class.\n\n    **Method Flowchart**\n\n    1. :meth:`dispatch()`\n    2. :meth:`http_method_not_allowed()`\n    3. :meth:`options()`\n\n    **Example views.py**::\n\n        from django.http import HttpResponse\n        from django.views.generic import View\n\n        class MyView(View):\n\n            def get(self, request, *args, **kwargs):\n                return HttpResponse('Hello, World!')\n\n    **Example urls.py**::\n\n        from django.conf.urls import patterns, url\n\n        from myapp.views import MyView\n\n        urlpatterns = patterns('',\n            url(r'^mine/$', MyView.as_view(), name='my-view'),\n        )\n\n    **Attributes**\n\n    .. attribute:: http_method_names\n\n        The list of HTTP method names that this view will accept.\n\n        Default::\n\n            ['get', 'post', 'put', 'delete', 'head', 'options', 'trace']\n\n    **Methods**\n\n    .. classmethod:: as_view(**initkwargs)\n\n        Returns a callable view that takes a request and returns a response::\n\n            response = MyView.as_view()(request)\n\n    .. method:: dispatch(request, *args, **kwargs)\n\n        The ``view`` part of the view -- the method that accepts a ``request``\n        argument plus arguments, and returns a HTTP response.\n\n        The default implementation will inspect the HTTP method and attempt to\n        delegate to a method that matches the HTTP method; a ``GET`` will be\n        delegated to ``get()``, a ``POST`` to ``post()``, and so on.\n\n        By default, a ``HEAD`` request will be delegated to ``get()``.\n        If you need to handle ``HEAD`` requests in a different way than ``GET``,\n        you can override the ``head()`` method. See\n        :ref:`supporting-other-http-methods` for an example.\n\n        The default implementation also sets ``request``, ``args`` and\n        ``kwargs`` as instance variables, so any method on the view can know\n        the full details of the request that was made to invoke the view.\n\n    .. method:: http_method_not_allowed(request, *args, **kwargs)\n\n        If the view was called with a HTTP method it doesn't support, this\n        method is called instead.\n\n        The default implementation returns ``HttpResponseNotAllowed`` with a\n        list of allowed methods in plain text.\n\n    .. method:: options(request, *args, **kwargs)\n\n        Handles responding to requests for the OPTIONS HTTP verb.  Returns a\n        list of the allowed HTTP method names for the view.\n\nTemplateView\n------------\n\n.. class:: django.views.generic.base.TemplateView\n\n    Renders a given template, with the context containing parameters captured\n    in the URL.\n\n    .. versionchanged:: 1.5\n        The context used to be populated with a ``{{ params }}`` dictionary of\n        the parameters captured in the URL. Now those parameters are first-level\n        context variables.\n\n    **Ancestors (MRO)**\n\n    This view inherits methods and attributes from the following views:\n\n    * :class:`django.views.generic.base.TemplateView`\n    * :class:`django.views.generic.base.TemplateResponseMixin`\n    * :class:`django.views.generic.base.View`\n\n    **Method Flowchart**\n\n    1. :meth:`~django.views.generic.base.View.dispatch()`\n    2. :meth:`~django.views.generic.base.View.http_method_not_allowed()`\n    3. :meth:`~django.views.generic.base.ContextMixin.get_context_data()`\n\n    **Example views.py**::\n\n        from django.views.generic.base import TemplateView\n\n        from articles.models import Article\n\n        class HomePageView(TemplateView):\n\n            template_name = \"home.html\"\n\n            def get_context_data(self, **kwargs):\n                context = super(HomePageView, self).get_context_data(**kwargs)\n                context['latest_articles'] = Article.objects.all()[:5]\n                return context\n\n    **Example urls.py**::\n\n        from django.conf.urls import patterns, url\n\n        from myapp.views import HomePageView\n\n        urlpatterns = patterns('',\n            url(r'^$', HomePageView.as_view(), name='home'),\n        )\n\n    **Context**\n\n    * ``params``: The dictionary of keyword arguments captured from the URL\n      pattern that served the view.\n\nRedirectView\n------------\n\n.. class:: django.views.generic.base.RedirectView\n\n    Redirects to a given URL.\n\n    The given URL may contain dictionary-style string formatting, which will be\n    interpolated against the parameters captured in the URL. Because keyword\n    interpolation is *always* done (even if no arguments are passed in), any\n    ``\"%\"`` characters in the URL must be written as ``\"%%\"`` so that Python\n    will convert them to a single percent sign on output.\n\n    If the given URL is ``None``, Django will return an ``HttpResponseGone``\n    (410).\n\n    **Ancestors (MRO)**\n\n    This view inherits methods and attributes from the following view:\n\n    * :class:`django.views.generic.base.View`\n\n    **Method Flowchart**\n\n    1. :meth:`~django.views.generic.base.View.dispatch()`\n    2. :meth:`~django.views.generic.base.View.http_method_not_allowed()`\n    3. :meth:`get_redirect_url()`\n\n    **Example views.py**::\n\n        from django.shortcuts import get_object_or_404\n        from django.views.generic.base import RedirectView\n\n        from articles.models import Article\n\n        class ArticleCounterRedirectView(RedirectView):\n\n            permanent = False\n            query_string = True\n\n            def get_redirect_url(self, pk):\n                article = get_object_or_404(Article, pk=pk)\n                article.update_counter()\n                return reverse('product_detail', args=(pk,))\n\n    **Example urls.py**::\n\n        from django.conf.urls import patterns, url\n        from django.views.generic.base import RedirectView\n\n        from article.views import ArticleCounterRedirectView\n\n        urlpatterns = patterns('',\n\n            url(r'r^(?P<pk>\\d+)/$', ArticleCounterRedirectView.as_view(), name='article-counter'),\n            url(r'^go-to-django/$', RedirectView.as_view(url='http://djangoproject.com'), name='go-to-django'),\n        )\n\n    **Attributes**\n\n    .. attribute:: url\n\n        The URL to redirect to, as a string. Or ``None`` to raise a 410 (Gone)\n        HTTP error.\n\n    .. attribute:: permanent\n\n        Whether the redirect should be permanent. The only difference here is\n        the HTTP status code returned. If ``True``, then the redirect will use\n        status code 301. If ``False``, then the redirect will use status code\n        302. By default, ``permanent`` is ``True``.\n\n    .. attribute:: query_string\n\n        Whether to pass along the GET query string to the new location. If\n        ``True``, then the query string is appended to the URL. If ``False``,\n        then the query string is discarded. By default, ``query_string`` is\n        ``False``.\n\n    **Methods**\n\n    .. method:: get_redirect_url(**kwargs)\n\n        Constructs the target URL for redirection.\n\n        The default implementation uses :attr:`url` as a starting\n        string, performs expansion of ``%`` parameters in that string, as well\n        as the appending of query string if requested by :attr:`query_string`.\n        Subclasses may implement any behavior they wish, as long as the method\n        returns a redirect-ready URL string.\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/class-based-views/flattened-index.txt",
    "content": "===========================================\nClass-based generic views - flattened index\n===========================================\n\nThis index provides an alternate organization of the reference documentation\nfor class-based views. For each view, the effective attributes and methods from\nthe class tree are represented under that view. For the reference\ndocumentation organized by the class which defines the behavior, see\n:doc:`Class-based views</ref/class-based-views/index>`\n\nSimple generic views\n--------------------\n\nView\n~~~~\n.. class:: View()\n\n**Attributes** (with optional accessor):\n\n* :attr:`~django.views.generic.base.View.http_method_names`\n\n**Methods**\n\n* :meth:`~django.views.generic.base.View.as_view`\n* :meth:`~django.views.generic.base.View.dispatch`\n* ``head()``\n* :meth:`~django.views.generic.base.View.http_method_not_allowed`\n\nTemplateView\n~~~~~~~~~~~~\n.. class:: TemplateView()\n\n**Attributes** (with optional accessor):\n\n* :attr:`~django.views.generic.base.TemplateResponseMixin.content_type`\n* :attr:`~django.views.generic.base.View.http_method_names`\n* :attr:`~django.views.generic.base.TemplateResponseMixin.response_class`\n* :attr:`~django.views.generic.base.TemplateResponseMixin.template_name` [:meth:`~django.views.generic.base.TemplateResponseMixin.get_template_names`]\n\n**Methods**\n\n* :meth:`~django.views.generic.base.View.as_view`\n* :meth:`~django.views.generic.base.View.dispatch`\n* ``get()``\n* :meth:`~django.views.generic.base.ContextMixin.get_context_data`\n* ``head()``\n* :meth:`~django.views.generic.base.View.http_method_not_allowed`\n* :meth:`~django.views.generic.base.TemplateResponseMixin.render_to_response`\n\nRedirectView\n~~~~~~~~~~~~\n.. class:: RedirectView()\n\n**Attributes** (with optional accessor):\n\n* :attr:`~django.views.generic.base.View.http_method_names`\n* :attr:`~django.views.generic.base.RedirectView.permanent`\n* :attr:`~django.views.generic.base.RedirectView.query_string`\n* :attr:`~django.views.generic.base.RedirectView.url`\n\n**Methods**\n\n* :meth:`~django.views.generic.base.View.as_view`\n* ``delete()``\n* :meth:`~django.views.generic.base.View.dispatch`\n* ``get()``\n* :meth:`~django.views.generic.base.RedirectView.get_redirect_url`\n* ``head()``\n* :meth:`~django.views.generic.base.View.http_method_not_allowed`\n* ``options()``\n* ``post()``\n* ``put()``\n\nDetail Views\n------------\n\nDetailView\n~~~~~~~~~~\n.. class:: DetailView()\n\n**Attributes** (with optional accessor):\n\n* :attr:`~django.views.generic.base.TemplateResponseMixin.content_type`\n* :attr:`~django.views.generic.detail.SingleObjectMixin.context_object_name` [:meth:`~django.views.generic.detail.SingleObjectMixin.get_context_object_name`]\n* :attr:`~django.views.generic.base.View.http_method_names`\n* :attr:`~django.views.generic.detail.SingleObjectMixin.model`\n* :attr:`~django.views.generic.detail.SingleObjectMixin.pk_url_kwarg`\n* :attr:`~django.views.generic.detail.SingleObjectMixin.queryset` [:meth:`~django.views.generic.detail.SingleObjectMixin.get_queryset`]\n* :attr:`~django.views.generic.base.TemplateResponseMixin.response_class`\n* :attr:`~django.views.generic.detail.SingleObjectMixin.slug_field` [:meth:`~django.views.generic.detail.SingleObjectMixin.get_slug_field`]\n* :attr:`~django.views.generic.detail.SingleObjectMixin.slug_url_kwarg`\n* :attr:`~django.views.generic.base.TemplateResponseMixin.template_name` [:meth:`~django.views.generic.base.TemplateResponseMixin.get_template_names`]\n* :attr:`~django.views.generic.detail.SingleObjectTemplateResponseMixin.template_name_field`\n* :attr:`~django.views.generic.detail.SingleObjectTemplateResponseMixin.template_name_suffix`\n\n**Methods**\n\n* :meth:`~django.views.generic.base.View.as_view`\n* :meth:`~django.views.generic.base.View.dispatch`\n* ``get()``\n* :meth:`~django.views.generic.detail.SingleObjectMixin.get_context_data`\n* :meth:`~django.views.generic.detail.SingleObjectMixin.get_object`\n* ``head()``\n* :meth:`~django.views.generic.base.View.http_method_not_allowed`\n* :meth:`~django.views.generic.base.TemplateResponseMixin.render_to_response`\n\nList Views\n----------\n\nListView\n~~~~~~~~\n.. class:: ListView()\n\n**Attributes** (with optional accessor):\n\n* :attr:`~django.views.generic.list.MultipleObjectMixin.allow_empty` [:meth:`~django.views.generic.list.MultipleObjectMixin.get_allow_empty`]\n* :attr:`~django.views.generic.base.TemplateResponseMixin.content_type`\n* :attr:`~django.views.generic.list.MultipleObjectMixin.context_object_name` [:meth:`~django.views.generic.list.MultipleObjectMixin.get_context_object_name`]\n* :attr:`~django.views.generic.base.View.http_method_names`\n* :attr:`~django.views.generic.list.MultipleObjectMixin.model`\n* :attr:`~django.views.generic.list.MultipleObjectMixin.paginate_by` [:meth:`~django.views.generic.list.MultipleObjectMixin.get_paginate_by`]\n* :attr:`~django.views.generic.list.MultipleObjectMixin.paginator_class`\n* :attr:`~django.views.generic.list.MultipleObjectMixin.queryset` [:meth:`~django.views.generic.list.MultipleObjectMixin.get_queryset`]\n* :attr:`~django.views.generic.base.TemplateResponseMixin.response_class`\n* :attr:`~django.views.generic.base.TemplateResponseMixin.template_name` [:meth:`~django.views.generic.base.TemplateResponseMixin.get_template_names`]\n* :attr:`~django.views.generic.list.MultipleObjectTemplateResponseMixin.template_name_suffix`\n\n**Methods**\n\n* :meth:`~django.views.generic.base.View.as_view`\n* :meth:`~django.views.generic.base.View.dispatch`\n* :meth:`~django.views.generic.list.BaseListView.get`\n* :meth:`~django.views.generic.list.MultipleObjectMixin.get_context_data`\n* :meth:`~django.views.generic.list.MultipleObjectMixin.get_paginator`\n* ``head()``\n* :meth:`~django.views.generic.base.View.http_method_not_allowed`\n* :meth:`~django.views.generic.list.MultipleObjectMixin.paginate_queryset`\n* :meth:`~django.views.generic.base.TemplateResponseMixin.render_to_response`\n\nEditing views\n-------------\n\nFormView\n~~~~~~~~\n.. class:: FormView()\n\n**Attributes** (with optional accessor):\n\n* :attr:`~django.views.generic.base.TemplateResponseMixin.content_type`\n* :attr:`~django.views.generic.edit.FormMixin.form_class` [:meth:`~django.views.generic.edit.FormMixin.get_form_class`]\n* :attr:`~django.views.generic.base.View.http_method_names`\n* :attr:`~django.views.generic.edit.FormMixin.initial` [:meth:`~django.views.generic.edit.FormMixin.get_initial`]\n* :attr:`~django.views.generic.base.TemplateResponseMixin.response_class`\n* :attr:`~django.views.generic.edit.FormMixin.success_url` [:meth:`~django.views.generic.edit.FormMixin.get_success_url`]\n* :attr:`~django.views.generic.base.TemplateResponseMixin.template_name` [:meth:`~django.views.generic.base.TemplateResponseMixin.get_template_names`]\n\n**Methods**\n\n* :meth:`~django.views.generic.base.View.as_view`\n* :meth:`~django.views.generic.base.View.dispatch`\n* :meth:`~django.views.generic.edit.FormMixin.form_invalid`\n* :meth:`~django.views.generic.edit.FormMixin.form_valid`\n* :meth:`~django.views.generic.edit.ProcessFormView.get`\n* :meth:`~django.views.generic.edit.FormMixin.get_context_data`\n* :meth:`~django.views.generic.edit.FormMixin.get_form`\n* :meth:`~django.views.generic.edit.FormMixin.get_form_kwargs`\n* ``head()``\n* :meth:`~django.views.generic.base.View.http_method_not_allowed`\n* ``post()``\n* ``put()``\n* :meth:`~django.views.generic.base.TemplateResponseMixin.render_to_response`\n\nCreateView\n~~~~~~~~~~\n.. class:: CreateView()\n\n**Attributes** (with optional accessor):\n\n* :attr:`~django.views.generic.base.TemplateResponseMixin.content_type`\n* :attr:`~django.views.generic.detail.SingleObjectMixin.context_object_name` [:meth:`~django.views.generic.detail.SingleObjectMixin.get_context_object_name`]\n* :attr:`~django.views.generic.edit.FormMixin.form_class` [:meth:`~django.views.generic.edit.FormMixin.get_form_class`]\n* :attr:`~django.views.generic.base.View.http_method_names`\n* :attr:`~django.views.generic.edit.FormMixin.initial` [:meth:`~django.views.generic.edit.FormMixin.get_initial`]\n* :attr:`~django.views.generic.detail.SingleObjectMixin.model`\n* :attr:`~django.views.generic.detail.SingleObjectMixin.pk_url_kwarg`\n* :attr:`~django.views.generic.detail.SingleObjectMixin.queryset` [:meth:`~django.views.generic.detail.SingleObjectMixin.get_queryset`]\n* :attr:`~django.views.generic.base.TemplateResponseMixin.response_class`\n* :attr:`~django.views.generic.detail.SingleObjectMixin.slug_field` [:meth:`~django.views.generic.detail.SingleObjectMixin.get_slug_field`]\n* :attr:`~django.views.generic.detail.SingleObjectMixin.slug_url_kwarg`\n* :attr:`~django.views.generic.edit.FormMixin.success_url` [:meth:`~django.views.generic.edit.FormMixin.get_success_url`]\n* :attr:`~django.views.generic.base.TemplateResponseMixin.template_name` [:meth:`~django.views.generic.base.TemplateResponseMixin.get_template_names`]\n* :attr:`~django.views.generic.detail.SingleObjectTemplateResponseMixin.template_name_field`\n* :attr:`~django.views.generic.detail.SingleObjectTemplateResponseMixin.template_name_suffix`\n\n**Methods**\n\n* :meth:`~django.views.generic.base.View.as_view`\n* :meth:`~django.views.generic.base.View.dispatch`\n* :meth:`~django.views.generic.edit.FormMixin.form_invalid`\n* :meth:`~django.views.generic.edit.FormMixin.form_valid`\n* :meth:`~django.views.generic.edit.ProcessFormView.get`\n* :meth:`~django.views.generic.edit.FormMixin.get_context_data`\n* :meth:`~django.views.generic.edit.FormMixin.get_form`\n* :meth:`~django.views.generic.edit.FormMixin.get_form_kwargs`\n* :meth:`~django.views.generic.detail.SingleObjectMixin.get_object`\n* ``head()``\n* :meth:`~django.views.generic.base.View.http_method_not_allowed`\n* :meth:`~django.views.generic.edit.ProcessFormView.post`\n* ``put()``\n* :meth:`~django.views.generic.base.TemplateResponseMixin.render_to_response`\n\nUpdateView\n~~~~~~~~~~\n.. class:: UpdateView()\n\n**Attributes** (with optional accessor):\n\n* :attr:`~django.views.generic.base.TemplateResponseMixin.content_type`\n* :attr:`~django.views.generic.detail.SingleObjectMixin.context_object_name` [:meth:`~django.views.generic.detail.SingleObjectMixin.get_context_object_name`]\n* :attr:`~django.views.generic.edit.FormMixin.form_class` [:meth:`~django.views.generic.edit.FormMixin.get_form_class`]\n* :attr:`~django.views.generic.base.View.http_method_names`\n* :attr:`~django.views.generic.edit.FormMixin.initial` [:meth:`~django.views.generic.edit.FormMixin.get_initial`]\n* :attr:`~django.views.generic.detail.SingleObjectMixin.model`\n* :attr:`~django.views.generic.detail.SingleObjectMixin.pk_url_kwarg`\n* :attr:`~django.views.generic.detail.SingleObjectMixin.queryset` [:meth:`~django.views.generic.detail.SingleObjectMixin.get_queryset`]\n* :attr:`~django.views.generic.base.TemplateResponseMixin.response_class`\n* :attr:`~django.views.generic.detail.SingleObjectMixin.slug_field` [:meth:`~django.views.generic.detail.SingleObjectMixin.get_slug_field`]\n* :attr:`~django.views.generic.detail.SingleObjectMixin.slug_url_kwarg`\n* :attr:`~django.views.generic.edit.FormMixin.success_url` [:meth:`~django.views.generic.edit.FormMixin.get_success_url`]\n* :attr:`~django.views.generic.base.TemplateResponseMixin.template_name` [:meth:`~django.views.generic.base.TemplateResponseMixin.get_template_names`]\n* :attr:`~django.views.generic.detail.SingleObjectTemplateResponseMixin.template_name_field`\n* :attr:`~django.views.generic.detail.SingleObjectTemplateResponseMixin.template_name_suffix`\n\n**Methods**\n\n* :meth:`~django.views.generic.base.View.as_view`\n* :meth:`~django.views.generic.base.View.dispatch`\n* :meth:`~django.views.generic.edit.FormMixin.form_invalid`\n* :meth:`~django.views.generic.edit.FormMixin.form_valid`\n* :meth:`~django.views.generic.edit.ProcessFormView.get`\n* :meth:`~django.views.generic.edit.FormMixin.get_context_data`\n* :meth:`~django.views.generic.edit.FormMixin.get_form`\n* :meth:`~django.views.generic.edit.FormMixin.get_form_kwargs`\n* :meth:`~django.views.generic.detail.SingleObjectMixin.get_object`\n* ``head()``\n* :meth:`~django.views.generic.base.View.http_method_not_allowed`\n* :meth:`~django.views.generic.edit.ProcessFormView.post`\n* ``put()``\n* :meth:`~django.views.generic.base.TemplateResponseMixin.render_to_response`\n\nDeleteView\n~~~~~~~~~~\n.. class:: DeleteView()\n\n**Attributes** (with optional accessor):\n\n* :attr:`~django.views.generic.base.TemplateResponseMixin.content_type`\n* :attr:`~django.views.generic.detail.SingleObjectMixin.context_object_name` [:meth:`~django.views.generic.detail.SingleObjectMixin.get_context_object_name`]\n* :attr:`~django.views.generic.base.View.http_method_names`\n* :attr:`~django.views.generic.detail.SingleObjectMixin.model`\n* :attr:`~django.views.generic.detail.SingleObjectMixin.pk_url_kwarg`\n* :attr:`~django.views.generic.detail.SingleObjectMixin.queryset` [:meth:`~django.views.generic.detail.SingleObjectMixin.get_queryset`]\n* :attr:`~django.views.generic.base.TemplateResponseMixin.response_class`\n* :attr:`~django.views.generic.detail.SingleObjectMixin.slug_field` [:meth:`~django.views.generic.detail.SingleObjectMixin.get_slug_field`]\n* :attr:`~django.views.generic.detail.SingleObjectMixin.slug_url_kwarg`\n* :attr:`~django.views.generic.edit.DeletionMixin.success_url` [:meth:`~django.views.generic.edit.DeletionMixin.get_success_url`]\n* :attr:`~django.views.generic.base.TemplateResponseMixin.template_name` [:meth:`~django.views.generic.base.TemplateResponseMixin.get_template_names`]\n* :attr:`~django.views.generic.detail.SingleObjectTemplateResponseMixin.template_name_field`\n* :attr:`~django.views.generic.detail.SingleObjectTemplateResponseMixin.template_name_suffix`\n\n**Methods**\n\n* :meth:`~django.views.generic.base.View.as_view`\n* ``delete()``\n* :meth:`~django.views.generic.base.View.dispatch`\n* ``get()``\n* :meth:`~django.views.generic.detail.SingleObjectMixin.get_context_data`\n* :meth:`~django.views.generic.detail.SingleObjectMixin.get_object`\n* ``head()``\n* :meth:`~django.views.generic.base.View.http_method_not_allowed`\n* ``post()``\n* :meth:`~django.views.generic.base.TemplateResponseMixin.render_to_response`\n\nDate-based views\n----------------\n\nArchiveIndexView\n~~~~~~~~~~~~~~~~\n.. class:: ArchiveIndexView()\n\n**Attributes** (with optional accessor):\n\n* :attr:`~django.views.generic.list.MultipleObjectMixin.allow_empty` [:meth:`~django.views.generic.list.MultipleObjectMixin.get_allow_empty`]\n* :attr:`~django.views.generic.dates.DateMixin.allow_future` [:meth:`~django.views.generic.dates.DateMixin.get_allow_future`]\n* :attr:`~django.views.generic.base.TemplateResponseMixin.content_type`\n* :attr:`~django.views.generic.list.MultipleObjectMixin.context_object_name` [:meth:`~django.views.generic.list.MultipleObjectMixin.get_context_object_name`]\n* :attr:`~django.views.generic.dates.DateMixin.date_field` [:meth:`~django.views.generic.dates.DateMixin.get_date_field`]\n* :attr:`~django.views.generic.base.View.http_method_names`\n* :attr:`~django.views.generic.list.MultipleObjectMixin.model`\n* :attr:`~django.views.generic.list.MultipleObjectMixin.paginate_by` [:meth:`~django.views.generic.list.MultipleObjectMixin.get_paginate_by`]\n* :attr:`~django.views.generic.list.MultipleObjectMixin.paginator_class`\n* :attr:`~django.views.generic.list.MultipleObjectMixin.queryset` [:meth:`~django.views.generic.list.MultipleObjectMixin.get_queryset`]\n* :attr:`~django.views.generic.base.TemplateResponseMixin.response_class`\n* :attr:`~django.views.generic.base.TemplateResponseMixin.template_name` [:meth:`~django.views.generic.base.TemplateResponseMixin.get_template_names`]\n* :attr:`~django.views.generic.list.MultipleObjectTemplateResponseMixin.template_name_suffix`\n\n**Methods**\n\n* :meth:`~django.views.generic.base.View.as_view`\n* :meth:`~django.views.generic.base.View.dispatch`\n* ``get()``\n* :meth:`~django.views.generic.list.MultipleObjectMixin.get_context_data`\n* :meth:`~django.views.generic.dates.BaseDateListView.get_date_list`\n* :meth:`~django.views.generic.dates.BaseDateListView.get_dated_items`\n* :meth:`~django.views.generic.dates.BaseDateListView.get_dated_queryset`\n* :meth:`~django.views.generic.list.MultipleObjectMixin.get_paginator`\n* ``head()``\n* :meth:`~django.views.generic.base.View.http_method_not_allowed`\n* :meth:`~django.views.generic.list.MultipleObjectMixin.paginate_queryset`\n* :meth:`~django.views.generic.base.TemplateResponseMixin.render_to_response`\n\nYearArchiveView\n~~~~~~~~~~~~~~~\n.. class:: YearArchiveView()\n\n**Attributes** (with optional accessor):\n\n* :attr:`~django.views.generic.list.MultipleObjectMixin.allow_empty` [:meth:`~django.views.generic.list.MultipleObjectMixin.get_allow_empty`]\n* :attr:`~django.views.generic.dates.DateMixin.allow_future` [:meth:`~django.views.generic.dates.DateMixin.get_allow_future`]\n* :attr:`~django.views.generic.base.TemplateResponseMixin.content_type`\n* :attr:`~django.views.generic.list.MultipleObjectMixin.context_object_name` [:meth:`~django.views.generic.list.MultipleObjectMixin.get_context_object_name`]\n* :attr:`~django.views.generic.dates.DateMixin.date_field` [:meth:`~django.views.generic.dates.DateMixin.get_date_field`]\n* :attr:`~django.views.generic.base.View.http_method_names`\n* :attr:`~django.views.generic.dates.YearArchiveView.make_object_list` [:meth:`~django.views.generic.dates.YearArchiveView.get_make_object_list`]\n* :attr:`~django.views.generic.list.MultipleObjectMixin.model`\n* :attr:`~django.views.generic.list.MultipleObjectMixin.paginate_by` [:meth:`~django.views.generic.list.MultipleObjectMixin.get_paginate_by`]\n* :attr:`~django.views.generic.list.MultipleObjectMixin.paginator_class`\n* :attr:`~django.views.generic.list.MultipleObjectMixin.queryset` [:meth:`~django.views.generic.list.MultipleObjectMixin.get_queryset`]\n* :attr:`~django.views.generic.base.TemplateResponseMixin.response_class`\n* :attr:`~django.views.generic.base.TemplateResponseMixin.template_name` [:meth:`~django.views.generic.base.TemplateResponseMixin.get_template_names`]\n* :attr:`~django.views.generic.list.MultipleObjectTemplateResponseMixin.template_name_suffix`\n* :attr:`~django.views.generic.dates.YearMixin.year` [:meth:`~django.views.generic.dates.YearMixin.get_year`]\n* :attr:`~django.views.generic.dates.YearMixin.year_format` [:meth:`~django.views.generic.dates.YearMixin.get_year_format`]\n\n**Methods**\n\n* :meth:`~django.views.generic.base.View.as_view`\n* :meth:`~django.views.generic.base.View.dispatch`\n* ``get()``\n* :meth:`~django.views.generic.list.MultipleObjectMixin.get_context_data`\n* :meth:`~django.views.generic.dates.BaseDateListView.get_date_list`\n* :meth:`~django.views.generic.dates.BaseDateListView.get_dated_items`\n* :meth:`~django.views.generic.dates.BaseDateListView.get_dated_queryset`\n* :meth:`~django.views.generic.list.MultipleObjectMixin.get_paginator`\n* ``head()``\n* :meth:`~django.views.generic.base.View.http_method_not_allowed`\n* :meth:`~django.views.generic.list.MultipleObjectMixin.paginate_queryset`\n* :meth:`~django.views.generic.base.TemplateResponseMixin.render_to_response`\n\nMonthArchiveView\n~~~~~~~~~~~~~~~~\n.. class:: MonthArchiveView()\n\n**Attributes** (with optional accessor):\n\n* :attr:`~django.views.generic.list.MultipleObjectMixin.allow_empty` [:meth:`~django.views.generic.list.MultipleObjectMixin.get_allow_empty`]\n* :attr:`~django.views.generic.dates.DateMixin.allow_future` [:meth:`~django.views.generic.dates.DateMixin.get_allow_future`]\n* :attr:`~django.views.generic.base.TemplateResponseMixin.content_type`\n* :attr:`~django.views.generic.list.MultipleObjectMixin.context_object_name` [:meth:`~django.views.generic.list.MultipleObjectMixin.get_context_object_name`]\n* :attr:`~django.views.generic.dates.DateMixin.date_field` [:meth:`~django.views.generic.dates.DateMixin.get_date_field`]\n* :attr:`~django.views.generic.base.View.http_method_names`\n* :attr:`~django.views.generic.list.MultipleObjectMixin.model`\n* :attr:`~django.views.generic.dates.MonthMixin.month` [:meth:`~django.views.generic.dates.MonthMixin.get_month`]\n* :attr:`~django.views.generic.dates.MonthMixin.month_format` [:meth:`~django.views.generic.dates.MonthMixin.get_month_format`]\n* :attr:`~django.views.generic.list.MultipleObjectMixin.paginate_by` [:meth:`~django.views.generic.list.MultipleObjectMixin.get_paginate_by`]\n* :attr:`~django.views.generic.list.MultipleObjectMixin.paginator_class`\n* :attr:`~django.views.generic.list.MultipleObjectMixin.queryset` [:meth:`~django.views.generic.list.MultipleObjectMixin.get_queryset`]\n* :attr:`~django.views.generic.base.TemplateResponseMixin.response_class`\n* :attr:`~django.views.generic.base.TemplateResponseMixin.template_name` [:meth:`~django.views.generic.base.TemplateResponseMixin.get_template_names`]\n* :attr:`~django.views.generic.list.MultipleObjectTemplateResponseMixin.template_name_suffix`\n* :attr:`~django.views.generic.dates.YearMixin.year` [:meth:`~django.views.generic.dates.YearMixin.get_year`]\n* :attr:`~django.views.generic.dates.YearMixin.year_format` [:meth:`~django.views.generic.dates.YearMixin.get_year_format`]\n\n**Methods**\n\n* :meth:`~django.views.generic.base.View.as_view`\n* :meth:`~django.views.generic.base.View.dispatch`\n* ``get()``\n* :meth:`~django.views.generic.list.MultipleObjectMixin.get_context_data`\n* :meth:`~django.views.generic.dates.BaseDateListView.get_date_list`\n* :meth:`~django.views.generic.dates.BaseDateListView.get_dated_items`\n* :meth:`~django.views.generic.dates.BaseDateListView.get_dated_queryset`\n* :meth:`~django.views.generic.dates.MonthMixin.get_next_month`\n* :meth:`~django.views.generic.list.MultipleObjectMixin.get_paginator`\n* :meth:`~django.views.generic.dates.MonthMixin.get_previous_month`\n* ``head()``\n* :meth:`~django.views.generic.base.View.http_method_not_allowed`\n* :meth:`~django.views.generic.list.MultipleObjectMixin.paginate_queryset`\n* :meth:`~django.views.generic.base.TemplateResponseMixin.render_to_response`\n\nWeekArchiveView\n~~~~~~~~~~~~~~~\n.. class:: WeekArchiveView()\n\n**Attributes** (with optional accessor):\n\n* :attr:`~django.views.generic.list.MultipleObjectMixin.allow_empty` [:meth:`~django.views.generic.list.MultipleObjectMixin.get_allow_empty`]\n* :attr:`~django.views.generic.dates.DateMixin.allow_future` [:meth:`~django.views.generic.dates.DateMixin.get_allow_future`]\n* :attr:`~django.views.generic.base.TemplateResponseMixin.content_type`\n* :attr:`~django.views.generic.list.MultipleObjectMixin.context_object_name` [:meth:`~django.views.generic.list.MultipleObjectMixin.get_context_object_name`]\n* :attr:`~django.views.generic.dates.DateMixin.date_field` [:meth:`~django.views.generic.dates.DateMixin.get_date_field`]\n* :attr:`~django.views.generic.base.View.http_method_names`\n* :attr:`~django.views.generic.list.MultipleObjectMixin.model`\n* :attr:`~django.views.generic.list.MultipleObjectMixin.paginate_by` [:meth:`~django.views.generic.list.MultipleObjectMixin.get_paginate_by`]\n* :attr:`~django.views.generic.list.MultipleObjectMixin.paginator_class`\n* :attr:`~django.views.generic.list.MultipleObjectMixin.queryset` [:meth:`~django.views.generic.list.MultipleObjectMixin.get_queryset`]\n* :attr:`~django.views.generic.base.TemplateResponseMixin.response_class`\n* :attr:`~django.views.generic.base.TemplateResponseMixin.template_name` [:meth:`~django.views.generic.base.TemplateResponseMixin.get_template_names`]\n* :attr:`~django.views.generic.list.MultipleObjectTemplateResponseMixin.template_name_suffix`\n* :attr:`~django.views.generic.dates.WeekMixin.week` [:meth:`~django.views.generic.dates.WeekMixin.get_week`]\n* :attr:`~django.views.generic.dates.WeekMixin.week_format` [:meth:`~django.views.generic.dates.WeekMixin.get_week_format`]\n* :attr:`~django.views.generic.dates.YearMixin.year` [:meth:`~django.views.generic.dates.YearMixin.get_year`]\n* :attr:`~django.views.generic.dates.YearMixin.year_format` [:meth:`~django.views.generic.dates.YearMixin.get_year_format`]\n\n**Methods**\n\n* :meth:`~django.views.generic.base.View.as_view`\n* :meth:`~django.views.generic.base.View.dispatch`\n* ``get()``\n* :meth:`~django.views.generic.list.MultipleObjectMixin.get_context_data`\n* :meth:`~django.views.generic.dates.BaseDateListView.get_date_list`\n* :meth:`~django.views.generic.dates.BaseDateListView.get_dated_items`\n* :meth:`~django.views.generic.dates.BaseDateListView.get_dated_queryset`\n* :meth:`~django.views.generic.list.MultipleObjectMixin.get_paginator`\n* ``head()``\n* :meth:`~django.views.generic.base.View.http_method_not_allowed`\n* :meth:`~django.views.generic.list.MultipleObjectMixin.paginate_queryset`\n* :meth:`~django.views.generic.base.TemplateResponseMixin.render_to_response`\n\nDayArchiveView\n~~~~~~~~~~~~~~\n.. class:: DayArchiveView()\n\n**Attributes** (with optional accessor):\n\n* :attr:`~django.views.generic.list.MultipleObjectMixin.allow_empty` [:meth:`~django.views.generic.list.MultipleObjectMixin.get_allow_empty`]\n* :attr:`~django.views.generic.dates.DateMixin.allow_future` [:meth:`~django.views.generic.dates.DateMixin.get_allow_future`]\n* :attr:`~django.views.generic.base.TemplateResponseMixin.content_type`\n* :attr:`~django.views.generic.list.MultipleObjectMixin.context_object_name` [:meth:`~django.views.generic.list.MultipleObjectMixin.get_context_object_name`]\n* :attr:`~django.views.generic.dates.DateMixin.date_field` [:meth:`~django.views.generic.dates.DateMixin.get_date_field`]\n* :attr:`~django.views.generic.dates.DayMixin.day` [:meth:`~django.views.generic.dates.DayMixin.get_day`]\n* :attr:`~django.views.generic.dates.DayMixin.day_format` [:meth:`~django.views.generic.dates.DayMixin.get_day_format`]\n* :attr:`~django.views.generic.base.View.http_method_names`\n* :attr:`~django.views.generic.list.MultipleObjectMixin.model`\n* :attr:`~django.views.generic.dates.MonthMixin.month` [:meth:`~django.views.generic.dates.MonthMixin.get_month`]\n* :attr:`~django.views.generic.dates.MonthMixin.month_format` [:meth:`~django.views.generic.dates.MonthMixin.get_month_format`]\n* :attr:`~django.views.generic.list.MultipleObjectMixin.paginate_by` [:meth:`~django.views.generic.list.MultipleObjectMixin.get_paginate_by`]\n* :attr:`~django.views.generic.list.MultipleObjectMixin.paginator_class`\n* :attr:`~django.views.generic.list.MultipleObjectMixin.queryset` [:meth:`~django.views.generic.list.MultipleObjectMixin.get_queryset`]\n* :attr:`~django.views.generic.base.TemplateResponseMixin.response_class`\n* :attr:`~django.views.generic.base.TemplateResponseMixin.template_name` [:meth:`~django.views.generic.base.TemplateResponseMixin.get_template_names`]\n* :attr:`~django.views.generic.list.MultipleObjectTemplateResponseMixin.template_name_suffix`\n* :attr:`~django.views.generic.dates.YearMixin.year` [:meth:`~django.views.generic.dates.YearMixin.get_year`]\n* :attr:`~django.views.generic.dates.YearMixin.year_format` [:meth:`~django.views.generic.dates.YearMixin.get_year_format`]\n\n**Methods**\n\n* :meth:`~django.views.generic.base.View.as_view`\n* :meth:`~django.views.generic.base.View.dispatch`\n* ``get()``\n* :meth:`~django.views.generic.list.MultipleObjectMixin.get_context_data`\n* :meth:`~django.views.generic.dates.BaseDateListView.get_date_list`\n* :meth:`~django.views.generic.dates.BaseDateListView.get_dated_items`\n* :meth:`~django.views.generic.dates.BaseDateListView.get_dated_queryset`\n* :meth:`~django.views.generic.dates.DayMixin.get_next_day`\n* :meth:`~django.views.generic.dates.MonthMixin.get_next_month`\n* :meth:`~django.views.generic.list.MultipleObjectMixin.get_paginator`\n* :meth:`~django.views.generic.dates.DayMixin.get_previous_day`\n* :meth:`~django.views.generic.dates.MonthMixin.get_previous_month`\n* ``head()``\n* :meth:`~django.views.generic.base.View.http_method_not_allowed`\n* :meth:`~django.views.generic.list.MultipleObjectMixin.paginate_queryset`\n* :meth:`~django.views.generic.base.TemplateResponseMixin.render_to_response`\n\nTodayArchiveView\n~~~~~~~~~~~~~~~~\n.. class:: TodayArchiveView()\n\n**Attributes** (with optional accessor):\n\n* :attr:`~django.views.generic.list.MultipleObjectMixin.allow_empty` [:meth:`~django.views.generic.list.MultipleObjectMixin.get_allow_empty`]\n* :attr:`~django.views.generic.dates.DateMixin.allow_future` [:meth:`~django.views.generic.dates.DateMixin.get_allow_future`]\n* :attr:`~django.views.generic.base.TemplateResponseMixin.content_type`\n* :attr:`~django.views.generic.list.MultipleObjectMixin.context_object_name` [:meth:`~django.views.generic.list.MultipleObjectMixin.get_context_object_name`]\n* :attr:`~django.views.generic.dates.DateMixin.date_field` [:meth:`~django.views.generic.dates.DateMixin.get_date_field`]\n* :attr:`~django.views.generic.dates.DayMixin.day` [:meth:`~django.views.generic.dates.DayMixin.get_day`]\n* :attr:`~django.views.generic.dates.DayMixin.day_format` [:meth:`~django.views.generic.dates.DayMixin.get_day_format`]\n* :attr:`~django.views.generic.base.View.http_method_names`\n* :attr:`~django.views.generic.list.MultipleObjectMixin.model`\n* :attr:`~django.views.generic.dates.MonthMixin.month` [:meth:`~django.views.generic.dates.MonthMixin.get_month`]\n* :attr:`~django.views.generic.dates.MonthMixin.month_format` [:meth:`~django.views.generic.dates.MonthMixin.get_month_format`]\n* :attr:`~django.views.generic.list.MultipleObjectMixin.paginate_by` [:meth:`~django.views.generic.list.MultipleObjectMixin.get_paginate_by`]\n* :attr:`~django.views.generic.list.MultipleObjectMixin.paginator_class`\n* :attr:`~django.views.generic.list.MultipleObjectMixin.queryset` [:meth:`~django.views.generic.list.MultipleObjectMixin.get_queryset`]\n* :attr:`~django.views.generic.base.TemplateResponseMixin.response_class`\n* :attr:`~django.views.generic.base.TemplateResponseMixin.template_name` [:meth:`~django.views.generic.base.TemplateResponseMixin.get_template_names`]\n* :attr:`~django.views.generic.list.MultipleObjectTemplateResponseMixin.template_name_suffix`\n* :attr:`~django.views.generic.dates.YearMixin.year` [:meth:`~django.views.generic.dates.YearMixin.get_year`]\n* :attr:`~django.views.generic.dates.YearMixin.year_format` [:meth:`~django.views.generic.dates.YearMixin.get_year_format`]\n\n**Methods**\n\n* :meth:`~django.views.generic.base.View.as_view`\n* :meth:`~django.views.generic.base.View.dispatch`\n* ``get()``\n* :meth:`~django.views.generic.list.MultipleObjectMixin.get_context_data`\n* :meth:`~django.views.generic.dates.BaseDateListView.get_date_list`\n* :meth:`~django.views.generic.dates.BaseDateListView.get_dated_items`\n* :meth:`~django.views.generic.dates.BaseDateListView.get_dated_queryset`\n* :meth:`~django.views.generic.dates.DayMixin.get_next_day`\n* :meth:`~django.views.generic.dates.MonthMixin.get_next_month`\n* :meth:`~django.views.generic.list.MultipleObjectMixin.get_paginator`\n* :meth:`~django.views.generic.dates.DayMixin.get_previous_day`\n* :meth:`~django.views.generic.dates.MonthMixin.get_previous_month`\n* ``head()``\n* :meth:`~django.views.generic.base.View.http_method_not_allowed`\n* :meth:`~django.views.generic.list.MultipleObjectMixin.paginate_queryset`\n* :meth:`~django.views.generic.base.TemplateResponseMixin.render_to_response`\n\nDateDetailView\n~~~~~~~~~~~~~~\n.. class:: DateDetailView()\n\n**Attributes** (with optional accessor):\n\n* :attr:`~django.views.generic.dates.DateMixin.allow_future` [:meth:`~django.views.generic.dates.DateMixin.get_allow_future`]\n* :attr:`~django.views.generic.base.TemplateResponseMixin.content_type`\n* :attr:`~django.views.generic.detail.SingleObjectMixin.context_object_name` [:meth:`~django.views.generic.detail.SingleObjectMixin.get_context_object_name`]\n* :attr:`~django.views.generic.dates.DateMixin.date_field` [:meth:`~django.views.generic.dates.DateMixin.get_date_field`]\n* :attr:`~django.views.generic.dates.DayMixin.day` [:meth:`~django.views.generic.dates.DayMixin.get_day`]\n* :attr:`~django.views.generic.dates.DayMixin.day_format` [:meth:`~django.views.generic.dates.DayMixin.get_day_format`]\n* :attr:`~django.views.generic.base.View.http_method_names`\n* :attr:`~django.views.generic.detail.SingleObjectMixin.model`\n* :attr:`~django.views.generic.dates.MonthMixin.month` [:meth:`~django.views.generic.dates.MonthMixin.get_month`]\n* :attr:`~django.views.generic.dates.MonthMixin.month_format` [:meth:`~django.views.generic.dates.MonthMixin.get_month_format`]\n* :attr:`~django.views.generic.detail.SingleObjectMixin.pk_url_kwarg`\n* :attr:`~django.views.generic.detail.SingleObjectMixin.queryset` [:meth:`~django.views.generic.detail.SingleObjectMixin.get_queryset`]\n* :attr:`~django.views.generic.base.TemplateResponseMixin.response_class`\n* :attr:`~django.views.generic.detail.SingleObjectMixin.slug_field` [:meth:`~django.views.generic.detail.SingleObjectMixin.get_slug_field`]\n* :attr:`~django.views.generic.detail.SingleObjectMixin.slug_url_kwarg`\n* :attr:`~django.views.generic.base.TemplateResponseMixin.template_name` [:meth:`~django.views.generic.base.TemplateResponseMixin.get_template_names`]\n* :attr:`~django.views.generic.detail.SingleObjectTemplateResponseMixin.template_name_field`\n* :attr:`~django.views.generic.detail.SingleObjectTemplateResponseMixin.template_name_suffix`\n* :attr:`~django.views.generic.dates.YearMixin.year` [:meth:`~django.views.generic.dates.YearMixin.get_year`]\n* :attr:`~django.views.generic.dates.YearMixin.year_format` [:meth:`~django.views.generic.dates.YearMixin.get_year_format`]\n\n**Methods**\n\n* :meth:`~django.views.generic.base.View.as_view`\n* :meth:`~django.views.generic.base.View.dispatch`\n* ``get()``\n* :meth:`~django.views.generic.detail.SingleObjectMixin.get_context_data`\n* :meth:`~django.views.generic.dates.DayMixin.get_next_day`\n* :meth:`~django.views.generic.dates.MonthMixin.get_next_month`\n* :meth:`~django.views.generic.detail.SingleObjectMixin.get_object`\n* :meth:`~django.views.generic.dates.DayMixin.get_previous_day`\n* :meth:`~django.views.generic.dates.MonthMixin.get_previous_month`\n* ``head()``\n* :meth:`~django.views.generic.base.View.http_method_not_allowed`\n* :meth:`~django.views.generic.base.TemplateResponseMixin.render_to_response`\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/class-based-views/generic-date-based.txt",
    "content": "==================\nGeneric date views\n==================\n\n.. module:: django.views.generic.dates\n\nDate-based generic views, provided in :mod:`django.views.generic.dates`, are\nviews for displaying drilldown pages for date-based data.\n\n.. note::\n\n    Some of the examples on this page assume that an ``Article`` model has been\n    defined as follows in ``myapp/models.py``::\n\n        from django.db import models\n        from django.core.urlresolvers import reverse\n\n        class Article(models.Model):\n            title = models.CharField(max_length=200)\n            pub_date = models.DateField()\n\n            def get_absolute_url(self):\n                return reverse('article-detail', kwargs={'pk': self.pk})\n\nArchiveIndexView\n----------------\n\n.. class:: ArchiveIndexView\n\n    A top-level index page showing the \"latest\" objects, by date. Objects with\n    a date in the *future* are not included unless you set ``allow_future`` to\n    ``True``.\n\n    **Ancestors (MRO)**\n\n    * :class:`django.views.generic.dates.ArchiveIndexView`\n    * :class:`django.views.generic.list.MultipleObjectTemplateResponseMixin`\n    * :class:`django.views.generic.base.TemplateResponseMixin`\n    * :class:`django.views.generic.dates.BaseArchiveIndexView`\n    * :class:`django.views.generic.dates.BaseDateListView`\n    * :class:`django.views.generic.list.MultipleObjectMixin`\n    * :class:`django.views.generic.dates.DateMixin`\n    * :class:`django.views.generic.base.View`\n\n    **Context**\n\n    In addition to the context provided by\n    :class:`django.views.generic.list.MultipleObjectMixin` (via\n    :class:`django.views.generic.dates.BaseDateListView`), the template's\n    context will be:\n\n    * ``date_list``: A\n      :meth:`DateQuerySet<django.db.models.query.QuerySet.dates>` object\n      containing all years that have objects available according to\n      ``queryset``, represented as\n      :class:`datetime.datetime<python:datetime.datetime>` objects, in\n      descending order.\n\n    **Notes**\n\n    * Uses a default ``context_object_name`` of ``latest``.\n    * Uses a default ``template_name_suffix`` of ``_archive``.\n    * Defaults to providing ``date_list`` by year, but this can be altered to\n      month or day using the attribute ``date_list_period``. This also applies\n      to all subclass views.\n\n    **Example views.py**::\n\n        from django.conf.urls import patterns, url\n        from django.views.generic.dates import ArchiveIndexView\n\n        from myapp.models import Article\n\n        urlpatterns = patterns('',\n            url(r'^archive/$',\n                ArchiveIndexView.as_view(model=Article, date_field=\"pub_date\"),\n                name=\"article_archive\"),\n        )\n\n    **Example myapp/article_archive.html**:\n\n    .. code-block:: html+django\n\n        <ul>\n            {% for article in latest %}\n                <li>{{ article.pub_date }}: {{ article.title }}</li>\n            {% endfor %}\n        </ul>\n\n    This will output all articles.\n\nYearArchiveView\n---------------\n\n.. class:: YearArchiveView\n\n    A yearly archive page showing all available months in a given year. Objects\n    with a date in the *future* are not displayed unless you set\n    ``allow_future`` to ``True``.\n\n    **Ancestors (MRO)**\n\n    * :class:`django.views.generic.dates.YearArchiveView`\n    * :class:`django.views.generic.list.MultipleObjectTemplateResponseMixin`\n    * :class:`django.views.generic.base.TemplateResponseMixin`\n    * :class:`django.views.generic.dates.BaseYearArchiveView`\n    * :class:`django.views.generic.dates.YearMixin`\n    * :class:`django.views.generic.dates.BaseDateListView`\n    * :class:`django.views.generic.list.MultipleObjectMixin`\n    * :class:`django.views.generic.dates.DateMixin`\n    * :class:`django.views.generic.base.View`\n\n    .. attribute:: make_object_list\n\n        A boolean specifying whether to retrieve the full list of objects for\n        this year and pass those to the template. If ``True``, the list of\n        objects will be made available to the context. If ``False``, the\n        ``None`` queryset will be used as the object list. By default, this is\n        ``False``.\n\n    .. method:: get_make_object_list()\n\n        Determine if an object list will be returned as part of the context.\n        Returns :attr:`~YearArchiveView.make_object_list` by default.\n\n    **Context**\n\n    In addition to the context provided by\n    :class:`django.views.generic.list.MultipleObjectMixin` (via\n    :class:`django.views.generic.dates.BaseDateListView`), the template's\n    context will be:\n\n    * ``date_list``: A\n      :meth:`DateQuerySet<django.db.models.query.QuerySet.dates>` object\n      containing all months that have objects available according to\n      ``queryset``, represented as\n      :class:`datetime.datetime<python:datetime.datetime>` objects, in\n      ascending order.\n\n    * ``year``: A :class:`~datetime.date` object\n      representing the given year.\n\n      .. versionchanged:: 1.5\n\n      Previously, this returned a string.\n\n    * ``next_year``: A :class:`~datetime.date` object\n      representing the first day of the next year, according to\n      :attr:`~BaseDateListView.allow_empty` and\n      :attr:`~DateMixin.allow_future`.\n\n      .. versionadded:: 1.5\n\n    * ``previous_year``: A :class:`~datetime.date` object\n      representing the first day of the previous year, according to\n      :attr:`~BaseDateListView.allow_empty` and\n      :attr:`~DateMixin.allow_future`.\n\n      .. versionadded:: 1.5\n\n    **Notes**\n\n    * Uses a default ``template_name_suffix`` of ``_archive_year``.\n\n    **Example views.py**::\n\n        from django.views.generic.dates import YearArchiveView\n\n        from myapp.models import Article\n\n        class ArticleYearArchiveView(YearArchiveView):\n            queryset = Article.objects.all()\n            date_field = \"pub_date\"\n            make_object_list = True\n            allow_future = True\n\n    **Example urls.py**::\n\n        from django.conf.urls import patterns, url\n\n        from myapp.views import ArticleYearArchiveView\n\n        urlpatterns = patterns('',\n            url(r'^(?P<year>\\d{4})/$',\n                ArticleYearArchiveView.as_view(),\n                name=\"article_year_archive\"),\n        )\n\n    **Example myapp/article_archive_year.html**:\n\n    .. code-block:: html+django\n\n        <ul>\n            {% for date in date_list %}\n                <li>{{ date|date }}</li>\n            {% endfor %}\n        </ul>\n\n        <div>\n            <h1>All Articles for {{ year|date:\"Y\" }}</h1>\n            {% for obj in object_list %}\n                <p>\n                    {{ obj.title }} - {{ obj.pub_date|date:\"F j, Y\" }}\n                </p>\n            {% endfor %}\n        </div>\n\nMonthArchiveView\n----------------\n\n.. class:: MonthArchiveView\n\n    A monthly archive page showing all objects in a given month. Objects with a\n    date in the *future* are not displayed unless you set ``allow_future`` to\n    ``True``.\n\n    **Ancestors (MRO)**\n\n    * :class:`django.views.generic.dates.MonthArchiveView`\n    * :class:`django.views.generic.list.MultipleObjectTemplateResponseMixin`\n    * :class:`django.views.generic.base.TemplateResponseMixin`\n    * :class:`django.views.generic.dates.BaseMonthArchiveView`\n    * :class:`django.views.generic.dates.YearMixin`\n    * :class:`django.views.generic.dates.MonthMixin`\n    * :class:`django.views.generic.dates.BaseDateListView`\n    * :class:`django.views.generic.list.MultipleObjectMixin`\n    * :class:`django.views.generic.dates.DateMixin`\n    * :class:`django.views.generic.base.View`\n\n    **Context**\n\n    In addition to the context provided by\n    :class:`~django.views.generic.list.MultipleObjectMixin` (via\n    :class:`~django.views.generic.dates.BaseDateListView`), the template's\n    context will be:\n\n    * ``date_list``: A\n      :meth:`DateQuerySet<django.db.models.query.QuerySet.dates>` object\n      containing all days that have objects available in the given month,\n      according to ``queryset``, represented as\n      :class:`datetime.datetime<python:datetime.datetime>` objects, in\n      ascending order.\n\n    * ``month``: A :class:`~datetime.date` object\n      representing the given month.\n\n    * ``next_month``: A :class:`~datetime.date` object\n      representing the first day of the next month, according to\n      :attr:`~BaseDateListView.allow_empty` and\n      :attr:`~DateMixin.allow_future`.\n\n    * ``previous_month``: A :class:`~datetime.date` object\n      representing the first day of the previous month, according to\n      :attr:`~BaseDateListView.allow_empty` and\n      :attr:`~DateMixin.allow_future`.\n\n    **Notes**\n\n    * Uses a default ``template_name_suffix`` of ``_archive_month``.\n\n    **Example views.py**::\n\n        from django.views.generic.dates import MonthArchiveView\n\n        from myapp.models import Article\n\n        class ArticleMonthArchiveView(MonthArchiveView):\n            queryset = Article.objects.all()\n            date_field = \"pub_date\"\n            make_object_list = True\n            allow_future = True\n\n    **Example urls.py**::\n\n        from django.conf.urls import patterns, url\n\n        from myapp.views import ArticleMonthArchiveView\n\n        urlpatterns = patterns('',\n            # Example: /2012/aug/\n            url(r'^(?P<year>\\d{4})/(?P<month>[-\\w]+)/$',\n                ArticleMonthArchiveView.as_view(),\n                name=\"archive_month\"),\n            # Example: /2012/08/\n            url(r'^(?P<year>\\d{4})/(?P<month>\\d+)/$',\n                ArticleMonthArchiveView.as_view(month_format='%m'),\n                name=\"archive_month_numeric\"),\n        )\n\n    **Example myapp/article_archive_month.html**:\n\n    .. code-block:: html+django\n\n        <ul>\n            {% for article in object_list %}\n                <li>{{ article.pub_date|date:\"F j, Y\" }}: {{ article.title }}</li>\n            {% endfor %}\n        </ul>\n\n        <p>\n            {% if previous_month %}\n                Previous Month: {{ previous_month|date:\"F Y\" }}\n            {% endif %}\n            {% if next_month %}\n                Next Month: {{ next_month|date:\"F Y\" }}\n            {% endif %}\n        </p>\n\nWeekArchiveView\n---------------\n\n.. class:: WeekArchiveView\n\n    A weekly archive page showing all objects in a given week. Objects with a\n    date in the *future* are not displayed unless you set ``allow_future`` to\n    ``True``.\n\n    **Ancestors (MRO)**\n\n    * :class:`django.views.generic.dates.WeekArchiveView`\n    * :class:`django.views.generic.list.MultipleObjectTemplateResponseMixin`\n    * :class:`django.views.generic.base.TemplateResponseMixin`\n    * :class:`django.views.generic.dates.BaseWeekArchiveView`\n    * :class:`django.views.generic.dates.YearMixin`\n    * :class:`django.views.generic.dates.WeekMixin`\n    * :class:`django.views.generic.dates.BaseDateListView`\n    * :class:`django.views.generic.list.MultipleObjectMixin`\n    * :class:`django.views.generic.dates.DateMixin`\n    * :class:`django.views.generic.base.View`\n\n    **Context**\n\n    In addition to the context provided by\n    :class:`~django.views.generic.list.MultipleObjectMixin` (via\n    :class:`~django.views.generic.dates.BaseDateListView`), the template's\n    context will be:\n\n    * ``week``: A :class:`~datetime.date` object\n      representing the first day of the given week.\n\n    * ``next_week``: A :class:`~datetime.date` object\n      representing the first day of the next week, according to\n      :attr:`~BaseDateListView.allow_empty` and\n      :attr:`~DateMixin.allow_future`.\n\n    * ``previous_week``: A :class:`~datetime.date` object\n      representing the first day of the previous week, according to\n      :attr:`~BaseDateListView.allow_empty` and\n      :attr:`~DateMixin.allow_future`.\n\n    **Notes**\n\n    * Uses a default ``template_name_suffix`` of ``_archive_week``.\n\n    **Example views.py**::\n\n        from django.views.generic.dates import WeekArchiveView\n\n        from myapp.models import Article\n\n        class ArticleWeekArchiveView(WeekArchiveView):\n            queryset = Article.objects.all()\n            date_field = \"pub_date\"\n            make_object_list = True\n            week_format = \"%W\"\n            allow_future = True\n\n    **Example urls.py**::\n\n        from django.conf.urls import patterns, url\n\n        from myapp.views import ArticleWeekArchiveView\n\n        urlpatterns = patterns('',\n            # Example: /2012/week/23/\n            url(r'^(?P<year>\\d{4})/week/(?P<week>\\d+)/$',\n                ArticleWeekArchiveView.as_view(),\n                name=\"archive_week\"),\n        )\n\n    **Example myapp/article_archive_week.html**:\n\n    .. code-block:: html+django\n\n        <h1>Week {{ week|date:'W' }}</h1>\n\n        <ul>\n            {% for article in object_list %}\n                <li>{{ article.pub_date|date:\"F j, Y\" }}: {{ article.title }}</li>\n            {% endfor %}\n        </ul>\n\n        <p>\n            {% if previous_week %}\n                Previous Week: {{ previous_week|date:\"F Y\" }}\n            {% endif %}\n            {% if previous_week and next_week %}--{% endif %}\n            {% if next_week %}\n                Next week: {{ next_week|date:\"F Y\" }}\n            {% endif %}\n        </p>\n\n    In this example, you are outputting the week number. The default\n    ``week_format`` in the ``WeekArchiveView`` uses  week format ``'%U'``\n    which is based on the United States week system where the week begins on a\n    Sunday. The ``'%W'`` format uses the ISO week format and its week\n    begins on a Monday.  The ``'%W'`` format is the same in both the\n    :func:`~time.strftime` and the :tfilter:`date`.\n\n    However, the :tfilter:`date` template filter does not have an equivalent\n    output format that supports the US based week system. The :tfilter:`date`\n    filter ``'%U'`` outputs the number of seconds since the Unix epoch.\n\nDayArchiveView\n--------------\n\n.. class:: DayArchiveView\n\n    A day archive page showing all objects in a given day. Days in the future\n    throw a 404 error, regardless of whether any objects exist for future days,\n    unless you set ``allow_future`` to ``True``.\n\n    **Ancestors (MRO)**\n\n    * :class:`django.views.generic.dates.DayArchiveView`\n    * :class:`django.views.generic.list.MultipleObjectTemplateResponseMixin`\n    * :class:`django.views.generic.base.TemplateResponseMixin`\n    * :class:`django.views.generic.dates.BaseDayArchiveView`\n    * :class:`django.views.generic.dates.YearMixin`\n    * :class:`django.views.generic.dates.MonthMixin`\n    * :class:`django.views.generic.dates.DayMixin`\n    * :class:`django.views.generic.dates.BaseDateListView`\n    * :class:`django.views.generic.list.MultipleObjectMixin`\n    * :class:`django.views.generic.dates.DateMixin`\n    * :class:`django.views.generic.base.View`\n\n    **Context**\n\n    In addition to the context provided by\n    :class:`~django.views.generic.list.MultipleObjectMixin` (via\n    :class:`~django.views.generic.dates.BaseDateListView`), the template's\n    context will be:\n\n    * ``day``: A :class:`~datetime.date` object\n      representing the given day.\n\n    * ``next_day``: A :class:`~datetime.date` object\n      representing the next day, according to\n      :attr:`~BaseDateListView.allow_empty` and\n      :attr:`~DateMixin.allow_future`.\n\n    * ``previous_day``: A :class:`~datetime.date` object\n      representing the previous day, according to\n      :attr:`~BaseDateListView.allow_empty` and\n      :attr:`~DateMixin.allow_future`.\n\n    * ``next_month``: A :class:`~datetime.date` object\n      representing the first day of the next month, according to\n      :attr:`~BaseDateListView.allow_empty` and\n      :attr:`~DateMixin.allow_future`.\n\n    * ``previous_month``: A :class:`~datetime.date` object\n      representing the first day of the previous month, according to\n      :attr:`~BaseDateListView.allow_empty` and\n      :attr:`~DateMixin.allow_future`.\n\n    **Notes**\n\n    * Uses a default ``template_name_suffix`` of ``_archive_day``.\n\n    **Example views.py**::\n\n        from django.views.generic.dates import DayArchiveView\n\n        from myapp.models import Article\n\n        class ArticleDayArchiveView(DayArchiveView):\n            queryset = Article.objects.all()\n            date_field = \"pub_date\"\n            make_object_list = True\n            allow_future = True\n\n    **Example urls.py**::\n\n        from django.conf.urls import patterns, url\n\n        from myapp.views import ArticleDayArchiveView\n\n        urlpatterns = patterns('',\n            # Example: /2012/nov/10/\n            url(r'^(?P<year>\\d{4})/(?P<month>[-\\w]+)/(?P<day>\\d+)/$',\n                ArticleDayArchiveView.as_view(),\n                name=\"archive_day\"),\n        )\n\n    **Example myapp/article_archive_day.html**:\n\n    .. code-block:: html+django\n\n        <h1>{{ day }}</h1>\n\n        <ul>\n            {% for article in object_list %}\n                <li>{{ article.pub_date|date:\"F j, Y\" }}: {{ article.title }}</li>\n            {% endfor %}\n        </ul>\n\n        <p>\n            {% if previous_day %}\n                Previous Day: {{ previous_day }}\n            {% endif %}\n            {% if previous_day and next_day %}--{% endif %}\n            {% if next_day %}\n                Next Day: {{ next_day }}\n            {% endif %}\n        </p>\n\nTodayArchiveView\n----------------\n\n.. class:: TodayArchiveView\n\n    A day archive page showing all objects for *today*. This is exactly the\n    same as :class:`django.views.generic.dates.DayArchiveView`, except today's\n    date is used instead of the ``year``/``month``/``day`` arguments.\n\n    **Ancestors (MRO)**\n\n    * :class:`django.views.generic.dates.TodayArchiveView`\n    * :class:`django.views.generic.list.MultipleObjectTemplateResponseMixin`\n    * :class:`django.views.generic.base.TemplateResponseMixin`\n    * :class:`django.views.generic.dates.BaseTodayArchiveView`\n    * :class:`django.views.generic.dates.BaseDayArchiveView`\n    * :class:`django.views.generic.dates.YearMixin`\n    * :class:`django.views.generic.dates.MonthMixin`\n    * :class:`django.views.generic.dates.DayMixin`\n    * :class:`django.views.generic.dates.BaseDateListView`\n    * :class:`django.views.generic.list.MultipleObjectMixin`\n    * :class:`django.views.generic.dates.DateMixin`\n    * :class:`django.views.generic.base.View`\n\n    **Notes**\n\n    * Uses a default ``template_name_suffix`` of ``_archive_today``.\n\n    **Example views.py**::\n\n        from django.views.generic.dates import TodayArchiveView\n\n        from myapp.models import Article\n\n        class ArticleTodayArchiveView(TodayArchiveView):\n            queryset = Article.objects.all()\n            date_field = \"pub_date\"\n            make_object_list = True\n            allow_future = True\n\n    **Example urls.py**::\n\n        from django.conf.urls import patterns, url\n\n        from myapp.views import ArticleTodayArchiveView\n\n        urlpatterns = patterns('',\n            url(r'^today/$',\n                ArticleTodayArchiveView.as_view(),\n                name=\"archive_today\"),\n        )\n\n    .. admonition:: Where is the example template for ``TodayArchiveView``?\n\n        This view uses by default the same template as the\n        :class:`~DayArchiveView`, which is in the previous example. If you need\n        a different template, set the ``template_name`` attribute to be the\n        name of the new template.\n\nDateDetailView\n--------------\n\n.. class:: DateDetailView\n\n    A page representing an individual object. If the object has a date value in\n    the future, the view will throw a 404 error by default, unless you set\n    ``allow_future`` to ``True``.\n\n    **Ancestors (MRO)**\n\n    * :class:`django.views.generic.dates.DateDetailView`\n    * :class:`django.views.generic.detail.SingleObjectTemplateResponseMixin`\n    * :class:`django.views.generic.base.TemplateResponseMixin`\n    * :class:`django.views.generic.dates.BaseDateDetailView`\n    * :class:`django.views.generic.dates.YearMixin`\n    * :class:`django.views.generic.dates.MonthMixin`\n    * :class:`django.views.generic.dates.DayMixin`\n    * :class:`django.views.generic.dates.DateMixin`\n    * ``django.views.generic.detail.BaseDetailView``\n    * :class:`django.views.generic.detail.SingleObjectMixin`\n    * :class:`django.views.generic.base.View`\n\n    **Context**\n\n    * Includes the single object associated with the ``model`` specified in\n      the ``DateDetailView``.\n\n    **Notes**\n\n    * Uses a default ``template_name_suffix`` of ``_detail``.\n\n    **Example urls.py**::\n\n        from django.conf.urls import patterns, url\n        from django.views.generic.dates import DateDetailView\n\n        urlpatterns = patterns('',\n            url(r'^(?P<year>\\d+)/(?P<month>[-\\w]+)/(?P<day>\\d+)/(?P<pk>\\d+)/$',\n                DateDetailView.as_view(model=Article, date_field=\"pub_date\"),\n                name=\"archive_date_detail\"),\n        )\n\n    **Example myapp/article_detail.html**:\n\n    .. code-block:: html+django\n\n        <h1>{{ object.title }}</h1>\n\n.. note::\n\n    All of the generic views listed above have matching ``Base`` views that\n    only differ in that the they do not include the\n    :class:`~django.views.generic.detail.SingleObjectTemplateResponseMixin`:\n\n    .. class:: BaseArchiveIndexView\n\n    .. class:: BaseYearArchiveView\n\n    .. class:: BaseMonthArchiveView\n\n    .. class:: BaseWeekArchiveView\n\n    .. class:: BaseDayArchiveView\n\n    .. class:: BaseTodayArchiveView\n\n    .. class:: BaseDateDetailView\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/class-based-views/generic-display.txt",
    "content": "=====================\nGeneric display views\n=====================\n\nThe two following generic class-based views are designed to display data. On\nmany projects they are typically the most commonly used views.\n\nDetailView\n----------\n\n.. class:: django.views.generic.detail.DetailView\n\n    While this view is executing, ``self.object`` will contain the object that\n    the view is operating upon.\n\n    **Ancestors (MRO)**\n\n    This view inherits methods and attributes from the following views:\n\n    * :class:`django.views.generic.detail.SingleObjectTemplateResponseMixin`\n    * :class:`django.views.generic.base.TemplateResponseMixin`\n    * ``django.views.generic.detail.BaseDetailView``\n    * :class:`django.views.generic.detail.SingleObjectMixin`\n    * :class:`django.views.generic.base.View`\n\n    **Method Flowchart**\n\n    1. :meth:`~django.views.generic.base.View.dispatch()`\n    2. :meth:`~django.views.generic.base.View.http_method_not_allowed()`\n    3. :meth:`~django.views.generic.base.TemplateResponseMixin.get_template_names()`\n    4. :meth:`~django.views.generic.detail.SingleObjectMixin.get_slug_field()`\n    5. :meth:`~django.views.generic.detail.SingleObjectMixin.get_queryset()`\n    6. :meth:`~django.views.generic.detail.SingleObjectMixin.get_object()`\n    7. :meth:`~django.views.generic.detail.SingleObjectMixin.get_context_object_name()`\n    8. :meth:`~django.views.generic.detail.SingleObjectMixin.get_context_data()`\n    9. ``get()``\n    10. :meth:`~django.views.generic.base.TemplateResponseMixin.render_to_response()`\n\n    **Example views.py**::\n\n        from django.views.generic.detail import DetailView\n        from django.utils import timezone\n\n        from articles.models import Article\n\n        class ArticleDetailView(DetailView):\n\n            model = Article\n\n            def get_context_data(self, **kwargs):\n                context = super(ArticleDetailView, self).get_context_data(**kwargs)\n                context['now'] = timezone.now()\n                return context\n\n    **Example urls.py**::\n\n        from django.conf.urls import patterns, url\n\n        from article.views import ArticleDetailView\n\n        urlpatterns = patterns('',\n            url(r'^(?P<slug>[-_\\w]+)/$', ArticleDetailView.as_view(), name='article-detail'),\n        )\n\nListView\n--------\n\n.. class:: django.views.generic.list.ListView\n\n    A page representing a list of objects.\n\n    While this view is executing, ``self.object_list`` will contain the list of\n    objects (usually, but not necessarily a queryset) that the view is\n    operating upon.\n\n    **Ancestors (MRO)**\n\n    This view inherits methods and attributes from the following views:\n\n    * :class:`django.views.generic.list.ListView`\n    * :class:`django.views.generic.list.MultipleObjectTemplateResponseMixin`\n    * :class:`django.views.generic.base.TemplateResponseMixin`\n    * :class:`django.views.generic.list.BaseListView`\n    * :class:`django.views.generic.list.MultipleObjectMixin`\n    * :class:`django.views.generic.base.View`\n\n    **Method Flowchart**\n\n    1. :meth:`~django.views.generic.base.View.dispatch()`\n    2. :meth:`~django.views.generic.base.View.http_method_not_allowed()`\n    3. :meth:`~django.views.generic.base.TemplateResponseMixin.get_template_names()`\n    4. :meth:`~django.views.generic.list.MultipleObjectMixin.get_queryset()`\n    5. :meth:`~django.views.generic.list.MultipleObjectMixin.get_context_object_name()`\n    6. :meth:`~django.views.generic.list.MultipleObjectMixin.get_context_data()`\n    7. ``get()``\n    8. :meth:`~django.views.generic.base.TemplateResponseMixin.render_to_response()`\n\n\n    **Example views.py**::\n\n        from django.views.generic.list import ListView\n        from django.utils import timezone\n\n        from articles.models import Article\n\n        class ArticleListView(ListView):\n\n            model = Article\n\n            def get_context_data(self, **kwargs):\n                context = super(ArticleListView, self).get_context_data(**kwargs)\n                context['now'] = timezone.now()\n                return context\n\n    **Example urls.py**::\n\n        from django.conf.urls import patterns, url\n\n        from article.views import ArticleListView\n\n        urlpatterns = patterns('',\n            url(r'^$', ArticleListView.as_view(), name='article-list'),\n        )\n\n.. class:: django.views.generic.list.BaseListView\n\n    A base view for displaying a list of objects. It is not intended to be used\n    directly, but rather as a parent class of the\n    :class:`django.views.generic.list.ListView` or other views representing\n    lists of objects.\n\n    **Ancestors (MRO)**\n\n    This view inherits methods and attributes from the following views:\n\n    * :class:`django.views.generic.list.MultipleObjectMixin`\n    * :class:`django.views.generic.base.View`\n\n    **Methods**\n\n    .. method:: get(request, *args, **kwargs)\n\n        Adds ``object_list`` to the context. If\n        :attr:`~django.views.generic.list.MultipleObjectMixin.allow_empty`\n        is True then display an empty list. If\n        :attr:`~django.views.generic.list.MultipleObjectMixin.allow_empty` is\n        False then raise a 404 error.\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/class-based-views/generic-editing.txt",
    "content": "=====================\nGeneric editing views\n=====================\n\nThe following views are described on this page and provide a foundation for\nediting content:\n\n* :class:`django.views.generic.edit.FormView`\n* :class:`django.views.generic.edit.CreateView`\n* :class:`django.views.generic.edit.UpdateView`\n* :class:`django.views.generic.edit.DeleteView`\n\n.. note::\n\n    Some of the examples on this page assume that an ``Article`` model has been\n    defined as follows in ``myapp/models.py``::\n\n        from django.core.urlresolvers import reverse\n        from django.db import models\n\n        class Author(models.Model):\n            name = models.CharField(max_length=200)\n\n            def get_absolute_url(self):\n                return reverse('author-detail', kwargs={'pk': self.pk})\n\nFormView\n--------\n\n.. class:: django.views.generic.edit.FormView\n\n    A view that displays a form. On error, redisplays the form with validation\n    errors; on success, redirects to a new URL.\n\n    **Ancestors (MRO)**\n\n    This view inherits methods and attributes from the following views:\n\n    * :class:`django.views.generic.edit.FormView`\n    * :class:`django.views.generic.base.TemplateResponseMixin`\n    * ``django.views.generic.edit.BaseFormView``\n    * :class:`django.views.generic.edit.FormMixin`\n    * :class:`django.views.generic.edit.ProcessFormView`\n    * :class:`django.views.generic.base.View`\n\n    **Example forms.py**::\n\n        from django import forms\n\n        class ContactForm(forms.Form):\n            name = forms.CharField()\n            message = forms.CharField(widget=forms.Textarea)\n\n            def send_email(self):\n                # send email using the self.cleaned_data dictionary\n                pass\n\n    **Example views.py**::\n\n        from myapp.forms import ContactForm\n        from django.views.generic.edit import FormView\n\n        class ContactView(FormView):\n            template_name = 'contact.html'\n            form_class = ContactForm\n            success_url = '/thanks/'\n\n            def form_valid(self, form):\n                # This method is called when valid form data has been POSTed.\n                # It should return an HttpResponse.\n                form.send_email()\n                return super(ContactView, self).form_valid(form)\n\nCreateView\n----------\n\n.. class:: django.views.generic.edit.CreateView\n\n    A view that displays a form for creating an object, redisplaying the form\n    with validation errors (if there are any) and saving the object.\n\n    **Ancestors (MRO)**\n\n    This view inherits methods and attributes from the following views:\n\n    * :class:`django.views.generic.edit.CreateView`\n    * :class:`django.views.generic.detail.SingleObjectTemplateResponseMixin`\n    * :class:`django.views.generic.base.TemplateResponseMixin`\n    * ``django.views.generic.edit.BaseCreateView``\n    * :class:`django.views.generic.edit.ModelFormMixin`\n    * :class:`django.views.generic.edit.FormMixin`\n    * :class:`django.views.generic.detail.SingleObjectMixin`\n    * :class:`django.views.generic.edit.ProcessFormView`\n    * :class:`django.views.generic.base.View`\n\n    **Attributes**\n\n    .. attribute:: template_name_suffix\n\n        The ``CreateView`` page displayed to a ``GET`` request uses a\n        ``template_name_suffix`` of ``'_form'``. For\n        example, changing this attribute to ``'_create_form'`` for a view\n        creating objects for the example ``Author`` model would cause the\n        default ``template_name`` to be ``'myapp/author_create_form.html'``.\n\n    **Example views.py**::\n\n        from django.views.generic.edit import CreateView\n        from myapp.models import Author\n\n        class AuthorCreate(CreateView):\n            model = Author\n\nUpdateView\n----------\n\n.. class:: django.views.generic.edit.UpdateView\n\n    A view that displays a form for editing an existing object, redisplaying\n    the form with validation errors (if there are any) and saving changes to\n    the object. This uses a form automatically generated from the object's\n    model class (unless a form class is manually specified).\n\n    **Ancestors (MRO)**\n\n    This view inherits methods and attributes from the following views:\n\n    * :class:`django.views.generic.edit.UpdateView`\n    * :class:`django.views.generic.detail.SingleObjectTemplateResponseMixin`\n    * :class:`django.views.generic.base.TemplateResponseMixin`\n    * ``django.views.generic.edit.BaseUpdateView``\n    * :class:`django.views.generic.edit.ModelFormMixin`\n    * :class:`django.views.generic.edit.FormMixin`\n    * :class:`django.views.generic.detail.SingleObjectMixin`\n    * :class:`django.views.generic.edit.ProcessFormView`\n    * :class:`django.views.generic.base.View`\n\n    **Attributes**\n\n    .. attribute:: template_name_suffix\n\n        The ``UpdateView`` page displayed to a ``GET`` request uses a\n        ``template_name_suffix`` of ``'_form'``. For\n        example, changing this attribute to ``'_update_form'`` for a view\n        updating objects for the example ``Author`` model would cause the\n        default ``template_name`` to be ``'myapp/author_update_form.html'``.\n\n    **Example views.py**::\n\n        from django.views.generic.edit import UpdateView\n        from myapp.models import Author\n\n        class AuthorUpdate(UpdateView):\n            model = Author\n\nDeleteView\n----------\n\n.. class:: django.views.generic.edit.DeleteView\n\n    A view that displays a confirmation page and deletes an existing object.\n    The given object will only be deleted if the request method is ``POST``. If\n    this view is fetched via ``GET``, it will display a confirmation page that\n    should contain a form that POSTs to the same URL.\n\n    **Ancestors (MRO)**\n\n    This view inherits methods and attributes from the following views:\n\n    * :class:`django.views.generic.edit.DeleteView`\n    * :class:`django.views.generic.detail.SingleObjectTemplateResponseMixin`\n    * :class:`django.views.generic.base.TemplateResponseMixin`\n    * ``django.views.generic.edit.BaseDeleteView``\n    * :class:`django.views.generic.edit.DeletionMixin`\n    * ``django.views.generic.detail.BaseDetailView``\n    * :class:`django.views.generic.detail.SingleObjectMixin`\n    * :class:`django.views.generic.base.View`\n\n    **Attributes**\n\n    .. attribute:: template_name_suffix\n\n        The ``DeleteView`` page displayed to a ``GET`` request uses a\n        ``template_name_suffix`` of ``'_confirm_delete'``. For\n        example, changing this attribute to ``'_check_delete'`` for a view\n        deleting objects for the example ``Author`` model would cause the\n        default ``template_name`` to be ``'myapp/author_check_delete.html'``.\n\n\n    **Example views.py**::\n\n        from django.views.generic.edit import DeleteView\n        from django.core.urlresolvers import reverse_lazy\n        from myapp.models import Author\n\n        class AuthorDelete(DeleteView):\n            model = Author\n            success_url = reverse_lazy('author-list')\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/class-based-views/index.txt",
    "content": "=================\nClass-based views\n=================\n\nClass-based views API reference. For introductory material, see\n:doc:`/topics/class-based-views/index`.\n\n.. toctree::\n   :maxdepth: 3\n\n   base\n   generic-display\n   generic-editing\n   generic-date-based\n   mixins\n   flattened-index\n\nSpecification\n-------------\n\nEach request served by a class-based view has an independent state; therefore,\nit is safe to store state variables on the instance (i.e., ``self.foo = 3`` is\na thread-safe operation).\n\nA class-based view is deployed into a URL pattern using the\n:meth:`~django.views.generic.base.View.as_view()` classmethod::\n\n    urlpatterns = patterns('',\n        (r'^view/$', MyView.as_view(size=42)),\n    )\n\n.. admonition:: Thread safety with view arguments\n\n    Arguments passed to a view are shared between every instance of a view.\n    This means that you shoudn't use a list, dictionary, or any other\n    mutable object as an argument to a view. If you do and the shared object\n    is modified, the actions of one user visiting your view could have an\n    effect on subsequent users visiting the same view.\n\nArguments passed into :meth:`~django.views.generic.base.View.as_view()` will\nbe assigned onto the instance that is used to service a request. Using the\nprevious example, this means that every request on ``MyView`` is able to use\n``self.size``. Arguments must correspond to attributes that already exist on\nthe class (return ``True`` on a ``hasattr`` check).\n\nBase vs Generic views\n---------------------\n\nBase class-based views can be thought of as *parent* views, which can be\nused by themselves or inherited from. They may not provide all the\ncapabilities required for projects, in which case there are Mixins which\nextend what base views can do.\n\nDjango’s generic views are built off of those base views, and were developed\nas a shortcut for common usage patterns such as displaying the details of an\nobject. They take certain common idioms and patterns found in view\ndevelopment and abstract them so that you can quickly write common views of\ndata without having to repeat yourself.\n\nMost generic views require the ``queryset`` key, which is a ``QuerySet``\ninstance; see :doc:`/topics/db/queries` for more information about ``QuerySet``\nobjects.\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/class-based-views/mixins-date-based.txt",
    "content": "=================\nDate-based mixins\n=================\n\n.. currentmodule:: django.views.generic.dates\n\nYearMixin\n---------\n\n.. class:: YearMixin\n\n    A mixin that can be used to retrieve and provide parsing information for a\n    year component of a date.\n\n    **Methods and Attributes**\n\n    .. attribute:: year_format\n\n        The :func:`~time.strftime` format to use when parsing the year.\n        By default, this is ``'%Y'``.\n\n    .. attribute:: year\n\n        **Optional** The value for the year, as a string. By default, set to\n        ``None``, which means the year will be determined using other means.\n\n    .. method:: get_year_format()\n\n        Returns the :func:`~time.strftime` format to use when parsing the\n        year. Returns :attr:`~YearMixin.year_format` by default.\n\n    .. method:: get_year()\n\n        Returns the year for which this view will display data, as a string.\n        Tries the following sources, in order:\n\n        * The value of the :attr:`YearMixin.year` attribute.\n        * The value of the ``year`` argument captured in the URL pattern.\n        * The value of the ``year`` ``GET`` query argument.\n\n        Raises a 404 if no valid year specification can be found.\n\n    .. method:: get_next_year(date)\n\n        Returns a date object containing the first day of the year after the\n        date provided. This function can also return ``None`` or raise an\n        :class:`~django.http.Http404` exception, depending on the values of\n        :attr:`~BaseDateListView.allow_empty` and\n        :attr:`~DateMixin.allow_future`.\n\n    .. method:: get_previous_year(date)\n\n        Returns a date object containing the first day of the year before the\n        date provided. This function can also return ``None`` or raise an\n        :class:`~django.http.Http404` exception, depending on the values of\n        :attr:`~BaseDateListView.allow_empty` and\n        :attr:`~DateMixin.allow_future`.\n\nMonthMixin\n----------\n\n.. class:: MonthMixin\n\n    A mixin that can be used to retrieve and provide parsing information for a\n    month component of a date.\n\n    **Methods and Attributes**\n\n    .. attribute:: month_format\n\n        The :func:`~time.strftime` format to use when parsing the month. By\n        default, this is ``'%b'``.\n\n    .. attribute:: month\n\n        **Optional** The value for the month, as a string. By default, set to\n        ``None``, which means the month will be determined using other means.\n\n    .. method:: get_month_format()\n\n        Returns the :func:`~time.strftime` format to use when parsing the\n        month. Returns :attr:`~MonthMixin.month_format` by default.\n\n    .. method:: get_month()\n\n        Returns the month for which this view will display data, as a string.\n        Tries the following sources, in order:\n\n        * The value of the :attr:`MonthMixin.month` attribute.\n        * The value of the ``month`` argument captured in the URL pattern.\n        * The value of the ``month`` ``GET`` query argument.\n\n        Raises a 404 if no valid month specification can be found.\n\n    .. method:: get_next_month(date)\n\n        Returns a date object containing the first day of the month after the\n        date provided. This function can also return ``None`` or raise an\n        :class:`~django.http.Http404` exception, depending on the values of\n        :attr:`~BaseDateListView.allow_empty` and\n        :attr:`~DateMixin.allow_future`.\n\n    .. method:: get_previous_month(date)\n\n        Returns a date object containing the first day of the month before the\n        date provided. This function can also return ``None`` or raise an\n        :class:`~django.http.Http404` exception, depending on the values of\n        :attr:`~BaseDateListView.allow_empty` and\n        :attr:`~DateMixin.allow_future`.\n\nDayMixin\n--------\n\n.. class:: DayMixin\n\n    A mixin that can be used to retrieve and provide parsing information for a\n    day component of a date.\n\n    **Methods and Attributes**\n\n    .. attribute:: day_format\n\n        The :func:`~time.strftime` format to use when parsing the day. By\n        default, this is ``'%d'``.\n\n    .. attribute:: day\n\n        **Optional** The value for the day, as a string. By default, set to\n        ``None``, which means the day will be determined using other means.\n\n    .. method:: get_day_format()\n\n        Returns the :func:`~time.strftime` format to use when parsing the day.\n        Returns :attr:`~DayMixin.day_format` by default.\n\n    .. method:: get_day()\n\n        Returns the day for which this view will display data, as a string.\n        Tries the following sources, in order:\n\n        * The value of the :attr:`DayMixin.day` attribute.\n        * The value of the ``day`` argument captured in the URL pattern.\n        * The value of the ``day`` ``GET`` query argument.\n\n        Raises a 404 if no valid day specification can be found.\n\n    .. method:: get_next_day(date)\n\n        Returns a date object containing the next valid day after the date\n        provided. This function can also return ``None`` or raise an\n        :class:`~django.http.Http404` exception, depending on the values of\n        :attr:`~BaseDateListView.allow_empty` and\n        :attr:`~DateMixin.allow_future`.\n\n    .. method:: get_previous_day(date)\n\n        Returns a date object containing the previous valid day. This function\n        can also return ``None`` or raise an :class:`~django.http.Http404`\n        exception, depending on the values of\n        :attr:`~BaseDateListView.allow_empty` and\n        :attr:`~DateMixin.allow_future`.\n\nWeekMixin\n---------\n\n.. class:: WeekMixin\n\n    A mixin that can be used to retrieve and provide parsing information for a\n    week component of a date.\n\n    **Methods and Attributes**\n\n    .. attribute:: week_format\n\n        The :func:`~time.strftime` format to use when parsing the week. By\n        default, this is ``'%U'``, which means the week starts on Sunday. Set\n        it to ``'%W'`` if your week starts on Monday.\n\n    .. attribute:: week\n\n        **Optional** The value for the week, as a string. By default, set to\n        ``None``, which means the week will be determined using other means.\n\n    .. method:: get_week_format()\n\n        Returns the :func:`~time.strftime` format to use when parsing the\n        week. Returns :attr:`~WeekMixin.week_format` by default.\n\n    .. method:: get_week()\n\n        Returns the week for which this view will display data, as a string.\n        Tries the following sources, in order:\n\n        * The value of the :attr:`WeekMixin.week` attribute.\n        * The value of the ``week`` argument captured in the URL pattern\n        * The value of the ``week`` ``GET`` query argument.\n\n        Raises a 404 if no valid week specification can be found.\n\n    .. method:: get_next_week(date)\n\n        Returns a date object containing the first day of the week after the\n        date provided. This function can also return ``None`` or raise an\n        :class:`~django.http.Http404` exception, depending on the values of\n        :attr:`~BaseDateListView.allow_empty` and\n        :attr:`~DateMixin.allow_future`.\n\n    .. method:: get_prev_week(date)\n\n        Returns a date object containing the first day of the week before the\n        date provided. This function can also return ``None`` or raise an\n        :class:`~django.http.Http404` exception, depending on the values of\n        :attr:`~BaseDateListView.allow_empty` and\n        :attr:`~DateMixin.allow_future`.\n\nDateMixin\n---------\n\n.. class:: DateMixin\n\n    A mixin class providing common behavior for all date-based views.\n\n    **Methods and Attributes**\n\n    .. attribute:: date_field\n\n        The name of the ``DateField`` or ``DateTimeField`` in the\n        ``QuerySet``'s model that the date-based archive should use to\n        determine the list of objects to display on the page.\n\n        When :doc:`time zone support </topics/i18n/timezones>` is enabled and\n        ``date_field`` is a ``DateTimeField``, dates are assumed to be in the\n        current time zone. Otherwise, the queryset could include objects from\n        the previous or the next day in the end user's time zone.\n\n        .. warning::\n\n            In this situation, if you have implemented per-user time zone\n            selection, the same URL may show a different set of objects,\n            depending on the end user's time zone. To avoid this, you should\n            use a ``DateField`` as the ``date_field`` attribute.\n\n    .. attribute:: allow_future\n\n        A boolean specifying whether to include \"future\" objects on this page,\n        where \"future\" means objects in which the field specified in\n        ``date_field`` is greater than the current date/time. By default, this\n        is ``False``.\n\n    .. method:: get_date_field()\n\n        Returns the name of the field that contains the date data that this\n        view will operate on. Returns :attr:`~DateMixin.date_field` by default.\n\n    .. method:: get_allow_future()\n\n        Determine whether to include \"future\" objects on this page, where\n        \"future\" means objects in which the field specified in ``date_field``\n        is greater than the current date/time. Returns\n        :attr:`~DateMixin.allow_future` by default.\n\nBaseDateListView\n----------------\n\n.. class:: BaseDateListView\n\n    A base class that provides common behavior for all date-based views. There\n    won't normally be a reason to instantiate\n    :class:`~django.views.generic.dates.BaseDateListView`; instantiate one of\n    the subclasses instead.\n\n    While this view (and its subclasses) are executing, ``self.object_list``\n    will contain the list of objects that the view is operating upon, and\n    ``self.date_list`` will contain the list of dates for which data is\n    available.\n\n    **Mixins**\n\n    * :class:`~django.views.generic.dates.DateMixin`\n    * :class:`~django.views.generic.list.MultipleObjectMixin`\n\n    **Methods and Attributes**\n\n    .. attribute:: allow_empty\n\n        A boolean specifying whether to display the page if no objects are\n        available. If this is ``True`` and no objects are available, the view\n        will display an empty page instead of raising a 404.\n\n        This is identical to\n        :attr:`django.views.generic.list.MultipleObjectMixin.allow_empty`,\n        except for the default value, which is ``False``.\n\n    .. attribute:: date_list_period\n\n        **Optional** A string defining the aggregation period for\n        ``date_list``. It must be one of ``'year'`` (default), ``'month'``, or\n        ``'day'``.\n\n    .. method:: get_dated_items()\n\n        Returns a 3-tuple containing (``date_list``, ``object_list``,\n        ``extra_context``).\n\n        ``date_list`` is the list of dates for which data is available.\n        ``object_list`` is the list of objects. ``extra_context`` is a\n        dictionary of context data that will be added to any context data\n        provided by the\n        :class:`~django.views.generic.list.MultipleObjectMixin`.\n\n    .. method:: get_dated_queryset(**lookup)\n\n        Returns a queryset, filtered using the query arguments defined by\n        ``lookup``. Enforces any restrictions on the queryset, such as\n        ``allow_empty`` and ``allow_future``.\n\n    .. method:: get_date_list_period()\n\n        Returns the aggregation period for ``date_list``. Returns\n        :attr:`~BaseDateListView.date_list_period` by default.\n\n    .. method:: get_date_list(queryset, date_type=None, ordering='ASC')\n\n        Returns the list of dates of type ``date_type`` for which ``queryset``\n        contains entries. For example, ``get_date_list(qs, 'year')`` will\n        return the list of years for which ``qs`` has entries. If\n        ``date_type`` isn't provided, the result of\n        :meth:`~BaseDateListView.get_date_list_period` is used. ``date_type``\n        and ``ordering`` are simply passed to\n        :meth:`QuerySet.dates()<django.db.models.query.QuerySet.dates>`.\n\n        .. versionchanged:: 1.5\n            The ``ordering`` parameter was added, and the default order was\n            changed to ascending.\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/class-based-views/mixins-editing.txt",
    "content": "==============\nEditing mixins\n==============\n\nThe following mixins are used to construct Django's editing views:\n\n* :class:`django.views.generic.edit.FormMixin`\n* :class:`django.views.generic.edit.ModelFormMixin`\n* :class:`django.views.generic.edit.ProcessFormView`\n* :class:`django.views.generic.edit.DeletionMixin`\n\n.. note::\n\n    Examples of how these are combined into editing views can be found at\n    the documentation on ``Generic editing views``.\n\nFormMixin\n---------\n\n.. class:: django.views.generic.edit.FormMixin\n\n    A mixin class that provides facilities for creating and displaying forms.\n\n    **Methods and Attributes**\n\n    .. attribute:: initial\n\n        A dictionary containing initial data for the form.\n\n    .. attribute:: form_class\n\n        The form class to instantiate.\n\n    .. attribute:: success_url\n\n        The URL to redirect to when the form is successfully processed.\n\n    .. method:: get_initial()\n\n        Retrieve initial data for the form. By default, returns a copy of\n        :attr:`~django.views.generic.edit.FormMixin.initial`.\n\n        .. versionchanged:: 1.4\n            In Django 1.3, this method was returning the\n            :attr:`~django.views.generic.edit.FormMixin.initial` class variable\n            itself.\n\n    .. method:: get_form_class()\n\n        Retrieve the form class to instantiate. By default\n        :attr:`.form_class`.\n\n    .. method:: get_form(form_class)\n\n        Instantiate an instance of ``form_class`` using\n        :meth:`~django.views.generic.edit.FormMixin.get_form_kwargs`.\n\n    .. method:: get_form_kwargs()\n\n        Build the keyword arguments required to instantiate the form.\n\n        The ``initial`` argument is set to :meth:`.get_initial`. If the\n        request is a ``POST`` or ``PUT``, the request data (``request.POST``\n        and ``request.FILES``) will also be provided.\n\n    .. method:: get_success_url()\n\n        Determine the URL to redirect to when the form is successfully\n        validated. Returns\n        :attr:`~django.views.generic.edit.FormMixin.success_url` by default.\n\n    .. method:: form_valid(form)\n\n        Redirects to\n        :meth:`~django.views.generic.edit.FormMixin.get_success_url`.\n\n    .. method:: form_invalid(form)\n\n        Renders a response, providing the invalid form as context.\n\n    .. method:: get_context_data(**kwargs)\n\n        Populates a context containing the contents of ``kwargs``.\n\n    **Context**\n\n    * ``form``: The form instance that was generated for the view.\n\n    .. note::\n\n        Views mixing ``FormMixin`` must provide an implementation of\n        :meth:`form_valid` and :meth:`form_invalid`.\n\n\nModelFormMixin\n--------------\n\n.. class:: django.views.generic.edit.ModelFormMixin\n\n    A form mixin that works on ``ModelForms``, rather than a standalone form.\n\n    Since this is a subclass of\n    :class:`~django.views.generic.detail.SingleObjectMixin`, instances of this\n    mixin have access to the\n    :attr:`~django.views.generic.detail.SingleObjectMixin.model` and\n    :attr:`~django.views.generic.detail.SingleObjectMixin.queryset` attributes,\n    describing the type of object that the ``ModelForm`` is manipulating. The\n    view also provides ``self.object``, the instance being manipulated. If the\n    instance is being created, ``self.object`` will be ``None``.\n\n    **Mixins**\n\n    * :class:`django.views.generic.edit.FormMixin`\n    * :class:`django.views.generic.detail.SingleObjectMixin`\n\n    **Methods and Attributes**\n\n    .. attribute:: model\n\n        A model class. Can be explicitly provided, otherwise will be determined\n        by examining ``self.object`` or\n        :attr:`~django.views.generic.detail.SingleObjectMixin.queryset`.\n\n    .. attribute:: success_url\n\n        The URL to redirect to when the form is successfully processed.\n\n        ``success_url`` may contain dictionary string formatting, which\n        will be interpolated against the object's field attributes. For\n        example, you could use ``success_url=\"/polls/%(slug)s/\"`` to\n        redirect to a URL composed out of the ``slug`` field on a model.\n\n    .. method:: get_form_class()\n\n        Retrieve the form class to instantiate. If\n        :attr:`~django.views.generic.edit.FormMixin.form_class` is provided,\n        that class will be used. Otherwise, a ``ModelForm`` will be\n        instantiated using the model associated with the\n        :attr:`~django.views.generic.detail.SingleObjectMixin.queryset`, or\n        with the :attr:`~django.views.generic.detail.SingleObjectMixin.model`,\n        depending on which attribute is provided.\n\n    .. method:: get_form_kwargs()\n\n        Add the current instance (``self.object``) to the standard\n        :meth:`~django.views.generic.edit.FormMixin.get_form_kwargs`.\n\n    .. method:: get_success_url()\n\n        Determine the URL to redirect to when the form is successfully\n        validated. Returns\n        :attr:`django.views.generic.edit.ModelFormMixin.success_url` if it is\n        provided; otherwise, attempts to use the ``get_absolute_url()`` of the\n        object.\n\n    .. method:: form_valid(form)\n\n        Saves the form instance, sets the current object for the view, and\n        redirects to\n        :meth:`~django.views.generic.edit.FormMixin.get_success_url`.\n\n    .. method:: form_invalid()\n\n        Renders a response, providing the invalid form as context.\n\n\nProcessFormView\n---------------\n\n.. class:: django.views.generic.edit.ProcessFormView\n\n    A mixin that provides basic HTTP GET and POST workflow.\n\n    .. note::\n\n        This is named 'ProcessFormView' and inherits directly from\n        :class:`django.views.generic.base.View`, but breaks if used\n        independently, so it is more of a mixin.\n\n    **Extends**\n\n    * :class:`django.views.generic.base.View`\n\n    **Methods and Attributes**\n\n    .. method:: get(request, *args, **kwargs)\n\n        Constructs a form, then renders a response using a context that\n        contains that form.\n\n    .. method:: post(request, *args, **kwargs)\n\n        Constructs a form, checks the form for validity, and handles it\n        accordingly.\n\n    The PUT action is also handled, as an analog of POST.\n\n.. class:: django.views.generic.edit.DeletionMixin\n\n    Enables handling of the ``DELETE`` http action.\n\n    **Methods and Attributes**\n\n    .. attribute:: success_url\n\n        The url to redirect to when the nominated object has been\n        successfully deleted.\n\n    .. method:: get_success_url()\n\n        Returns the url to redirect to when the nominated object has been\n        successfully deleted. Returns\n        :attr:`~django.views.generic.edit.DeletionMixin.success_url` by\n        default.\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/class-based-views/mixins-multiple-object.txt",
    "content": "======================\nMultiple object mixins\n======================\n\nMultipleObjectMixin\n-------------------\n\n.. class:: django.views.generic.list.MultipleObjectMixin\n\n    A mixin that can be used to display a list of objects.\n\n    If ``paginate_by`` is specified, Django will paginate the results returned\n    by this. You can specify the page number in the URL in one of two ways:\n\n    * Use the ``page`` parameter in the URLconf. For example, this is what\n      your URLconf might look like::\n\n        (r'^objects/page(?P<page>[0-9]+)/$', PaginatedView.as_view())\n\n    * Pass the page number via the ``page`` query-string parameter. For\n      example, a URL would look like this::\n\n        /objects/?page=3\n\n    These values and lists are 1-based, not 0-based, so the first page would be\n    represented as page ``1``.\n\n    For more on pagination, read the :doc:`pagination documentation\n    </topics/pagination>`.\n\n    As a special case, you are also permitted to use ``last`` as a value for\n    ``page``::\n\n        /objects/?page=last\n\n    This allows you to access the final page of results without first having to\n    determine how many pages there are.\n\n    Note that ``page`` *must* be either a valid page number or the value\n    ``last``; any other value for ``page`` will result in a 404 error.\n\n    **Extends**\n\n    * :class:`django.views.generic.base.ContextMixin`\n\n    **Methods and Attributes**\n\n    .. attribute:: allow_empty\n\n        A boolean specifying whether to display the page if no objects are\n        available. If this is ``False`` and no objects are available, the view\n        will raise a 404 instead of displaying an empty page. By default, this\n        is ``True``.\n\n    .. attribute:: model\n\n        The model that this view will display data for. Specifying ``model\n        = Foo`` is effectively the same as specifying ``queryset =\n        Foo.objects.all()``.\n\n    .. attribute:: queryset\n\n        A ``QuerySet`` that represents the objects. If provided, the value of\n        ``queryset`` supersedes the value provided for :attr:`model`.\n\n    .. attribute:: paginate_by\n\n        An integer specifying how many objects should be displayed per page. If\n        this is given, the view will paginate objects with\n        ``paginate_by`` objects per page. The view will\n        expect either a ``page`` query string parameter (via ``request.GET``)\n        or a ``page`` variable specified in the URLconf.\n\n    .. attribute:: page_kwarg\n\n        .. versionadded:: 1.5\n\n        A string specifying the name to use for the page parameter.\n        The view will expect this prameter to be available either as a query\n        string parameter (via ``request.GET``) or as a kwarg variable specified\n        in the URLconf. Defaults to ``page``.\n\n    .. attribute:: paginator_class\n\n       The paginator class to be used for pagination. By default,\n       :class:`django.core.paginator.Paginator` is used. If the custom paginator\n       class doesn't have the same constructor interface as\n       :class:`django.core.paginator.Paginator`, you will also need to\n       provide an implementation for :meth:`get_paginator`.\n\n    .. attribute:: context_object_name\n\n        Designates the name of the variable to use in the context.\n\n    .. method:: get_queryset()\n\n        Get the list of items for this view. This must be an iterable and may\n        be a queryset (in which queryset-specific behavior will be enabled).\n\n    .. method:: paginate_queryset(queryset, page_size)\n\n        Returns a 4-tuple containing (``paginator``, ``page``, ``object_list``,\n        ``is_paginated``).\n\n        Constructed by paginating ``queryset`` into pages of size ``page_size``.\n        If the request contains a ``page`` argument, either as a captured URL\n        argument or as a GET argument, ``object_list`` will correspond to the\n        objects from that page.\n\n    .. method:: get_paginate_by(queryset)\n\n        Returns the number of items to paginate by, or ``None`` for no\n        pagination. By default this simply returns the value of\n        :attr:`paginate_by`.\n\n    .. method:: get_paginator(queryset, per_page, orphans=0, allow_empty_first_page=True)\n\n        Returns an instance of the paginator to use for this view. By default,\n        instantiates an instance of :attr:`paginator_class`.\n\n    .. method:: get_allow_empty()\n\n        Return a boolean specifying whether to display the page if no objects\n        are available. If this method returns ``False`` and no objects are\n        available, the view will raise a 404 instead of displaying an empty\n        page. By default, this is ``True``.\n\n    .. method:: get_context_object_name(object_list)\n\n        Return the context variable name that will be used to contain\n        the list of data that this view is manipulating. If\n        ``object_list`` is a queryset of Django objects and\n        :attr:`context_object_name` is not set,\n        the context name will be the ``object_name`` of the model that\n        the queryset is composed from, with postfix ``'_list'``\n        appended. For example, the model ``Article`` would have a\n        context object named ``article_list``.\n\n    .. method:: get_context_data(**kwargs)\n\n        Returns context data for displaying the list of objects.\n\n    **Context**\n\n    * ``object_list``: The list of objects that this view is displaying. If\n      ``context_object_name`` is specified, that variable will also be set\n      in the context, with the same value as ``object_list``.\n\n    * ``is_paginated``: A boolean representing whether the results are\n      paginated. Specifically, this is set to ``False`` if no page size has\n      been specified, or if the available objects do not span multiple\n      pages.\n\n    * ``paginator``: An instance of\n      :class:`django.core.paginator.Paginator`. If the page is not\n      paginated, this context variable will be ``None``.\n\n    * ``page_obj``: An instance of\n      :class:`django.core.paginator.Page`. If the page is not paginated,\n      this context variable will be ``None``.\n\n\nMultipleObjectTemplateResponseMixin\n-----------------------------------\n\n.. class:: django.views.generic.list.MultipleObjectTemplateResponseMixin\n\n    A mixin class that performs template-based response rendering for views\n    that operate upon a list of object instances. Requires that the view it is\n    mixed with provides ``self.object_list``, the list of object instances that\n    the view is operating on. ``self.object_list`` may be, but is not required\n    to be, a :class:`~django.db.models.query.QuerySet`.\n\n    **Extends**\n\n    * :class:`~django.views.generic.base.TemplateResponseMixin`\n\n    **Methods and Attributes**\n\n    .. attribute:: template_name_suffix\n\n        The suffix to append to the auto-generated candidate template name.\n        Default suffix is ``_list``.\n\n    .. method:: get_template_names()\n\n        Returns a list of candidate template names. Returns the following list:\n\n        * the value of ``template_name`` on the view (if provided)\n        * ``<app_label>/<object_name><template_name_suffix>.html``\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/class-based-views/mixins-simple.txt",
    "content": "=============\nSimple mixins\n=============\n\nContextMixin\n------------\n\n.. class:: django.views.generic.base.ContextMixin\n\n    .. versionadded:: 1.5\n\n    **Methods**\n\n    .. method:: get_context_data(**kwargs)\n\n        Returns a dictionary representing the template context. The keyword\n        arguments provided will make up the returned context. Example usage::\n\n            def get_context_data(self, **kwargs):\n                context = super(RandomNumberView, self).get_context_data(**kwargs)\n                context['number'] = random.randrange(1, 100)\n                return context\n\n        The template context of all class-based generic views include a\n        ``view`` variable that points to the ``View`` instance.\n\n        .. admonition:: Use ``alters_data`` where appropriate\n\n            Note that having the view instance in the template context may\n            expose potentially hazardous methods to template authors.  To\n            prevent methods like this from being called in the template, set\n            ``alters_data=True`` on those methods.  For more information, read\n            the documentation on :ref:`rendering a template context\n            <alters-data-description>`.\n\nTemplateResponseMixin\n---------------------\n\n.. class:: django.views.generic.base.TemplateResponseMixin\n\n    Provides a mechanism to construct a\n    :class:`~django.template.response.TemplateResponse`, given\n    suitable context. The template to use is configurable and can be\n    further customized by subclasses.\n\n    **Attributes**\n\n    .. attribute:: template_name\n\n        The full name of a template to use as defined by a string. Not defining\n        a ``template_name`` will raise a\n        :class:`django.core.exceptions.ImproperlyConfigured` exception.\n\n    .. attribute:: response_class\n\n        The response class to be returned by ``render_to_response`` method.\n        Default is\n        :class:`TemplateResponse <django.template.response.TemplateResponse>`.\n        The template and context of ``TemplateResponse`` instances can be\n        altered later (e.g. in\n        :ref:`template response middleware <template-response-middleware>`).\n\n        If you need custom template loading or custom context object\n        instantiation, create a ``TemplateResponse`` subclass and assign it to\n        ``response_class``.\n\n    .. attribute:: content_type\n\n        .. versionadded:: 1.5\n            The ``content_type`` attribute was added.\n\n        The content type to use for the response. ``content_type`` is passed\n        as a keyword argument to ``response_class``. Default is ``None`` --\n        meaning that Django uses :setting:`DEFAULT_CONTENT_TYPE`.\n\n    **Methods**\n\n    .. method:: render_to_response(context, **response_kwargs)\n\n        Returns a ``self.response_class`` instance.\n\n        If any keyword arguments are provided, they will be passed to the\n        constructor of the response class.\n\n        Calls :meth:`get_template_names()` to obtain the list of template names\n        that will be searched looking for an existent template.\n\n    .. method:: get_template_names()\n\n        Returns a list of template names to search for when rendering the\n        template.\n\n        If :attr:`template_name` is specified, the default implementation will\n        return a list containing :attr:`template_name` (if it is specified).\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/class-based-views/mixins-single-object.txt",
    "content": "====================\nSingle object mixins\n====================\n\nSingleObjectMixin\n-----------------\n\n.. class:: django.views.generic.detail.SingleObjectMixin\n\n    Provides a mechanism for looking up an object associated with the\n    current HTTP request.\n\n    **Methods and Attributes**\n\n    .. attribute:: model\n\n        The model that this view will display data for. Specifying ``model\n        = Foo`` is effectively the same as specifying ``queryset =\n        Foo.objects.all()``.\n\n    .. attribute:: queryset\n\n        A ``QuerySet`` that represents the objects. If provided, the value of\n        ``queryset`` supersedes the value provided for :attr:`model`.\n\n    .. attribute:: slug_field\n\n        The name of the field on the model that contains the slug. By default,\n        ``slug_field`` is ``'slug'``.\n\n    .. attribute:: slug_url_kwarg\n\n        .. versionadded:: 1.4\n\n        The name of the URLConf keyword argument that contains the slug. By\n        default, ``slug_url_kwarg`` is ``'slug'``.\n\n    .. attribute:: pk_url_kwarg\n\n        .. versionadded:: 1.4\n\n        The name of the URLConf keyword argument that contains the primary key.\n        By default, ``pk_url_kwarg`` is ``'pk'``.\n\n    .. attribute:: context_object_name\n\n        Designates the name of the variable to use in the context.\n\n    .. method:: get_object(queryset=None)\n\n        Returns the single object that this view will display. If\n        ``queryset`` is provided, that queryset will be used as the\n        source of objects; otherwise, :meth:`get_queryset` will be used.\n        ``get_object()`` looks for a :attr:`pk_url_kwarg` argument in the\n        arguments to the view; if this argument is found, this method performs\n        a primary-key based lookup using that value. If this argument is not\n        found, it looks for a :attr:`slug_url_kwarg` argument, and performs a\n        slug lookup using the :attr:`slug_field`.\n\n    .. method:: get_queryset()\n\n        Returns the queryset that will be used to retrieve the object that\n        this view will display. By default, :meth:`get_queryset` returns the\n        value of the :attr:`queryset` attribute if it is set, otherwise\n        it constructs a :class:`~django.db.models.query.QuerySet` by calling\n        the ``all()`` method on the :attr:`model` attribute's default manager.\n\n    .. method:: get_context_object_name(obj)\n\n        Return the context variable name that will be used to contain the\n        data that this view is manipulating. If :attr:`context_object_name` is\n        not set, the context name will be constructed from the ``object_name``\n        of the model that the queryset is composed from. For example, the model\n        ``Article`` would have context object named ``'article'``.\n\n    .. method:: get_context_data(**kwargs)\n\n        Returns context data for displaying the list of objects.\n\n    .. method:: get_slug_field()\n\n        Returns the name of a slug field to be used to look up by slug. By\n        default this simply returns the value of :attr:`slug_field`.\n\n    **Context**\n\n    * ``object``: The object that this view is displaying. If\n      ``context_object_name`` is specified, that variable will also be\n      set in the context, with the same value as ``object``.\n\nSingleObjectTemplateResponseMixin\n---------------------------------\n\n.. class:: django.views.generic.detail.SingleObjectTemplateResponseMixin\n\n    A mixin class that performs template-based response rendering for views\n    that operate upon a single object instance. Requires that the view it is\n    mixed with provides ``self.object``, the object instance that the view is\n    operating on. ``self.object`` will usually be, but is not required to be,\n    an instance of a Django model. It may be ``None`` if the view is in the\n    process of constructing a new instance.\n\n    **Extends**\n\n    * :class:`~django.views.generic.base.TemplateResponseMixin`\n\n    **Methods and Attributes**\n\n    .. attribute:: template_name_field\n\n        The field on the current object instance that can be used to determine\n        the name of a candidate template. If either ``template_name_field``\n        itself or the value of the ``template_name_field`` on the current\n        object instance is ``None``, the object will not be used for a\n        candidate template name.\n\n    .. attribute:: template_name_suffix\n\n        The suffix to append to the auto-generated candidate template name.\n        Default suffix is ``_detail``.\n\n    .. method:: get_template_names()\n\n        Returns a list of candidate template names. Returns the following list:\n\n        * the value of ``template_name`` on the view (if provided)\n        * the contents of the ``template_name_field`` field on the\n          object instance that the view is operating upon (if available)\n        * ``<app_label>/<object_name><template_name_suffix>.html``\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/class-based-views/mixins.txt",
    "content": "========================\nClass-based views mixins\n========================\n\nClass-based views API reference. For introductory material, see :doc:`/topics/class-based-views/mixins`.\n\n.. toctree::\n   :maxdepth: 1\n\n   mixins-simple\n   mixins-single-object\n   mixins-multiple-object\n   mixins-editing\n   mixins-date-based\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/clickjacking.txt",
    "content": "========================\nClickjacking Protection\n========================\n\n.. module:: django.middleware.clickjacking\n   :synopsis: Protects against Clickjacking\n\nThe clickjacking middleware and decorators provide easy-to-use protection\nagainst `clickjacking`_.  This type of attack occurs when a malicious site\ntricks a user into clicking on a concealed element of another site which they\nhave loaded in a hidden frame or iframe.\n\n.. versionadded:: 1.4\n   The clickjacking middleware and decorators were added.\n\n.. _clickjacking: http://en.wikipedia.org/wiki/Clickjacking\n\nAn example of clickjacking\n==========================\n\nSuppose an online store has a page where a logged in user can click \"Buy Now\" to\npurchase an item. A user has chosen to stay logged into the store all the time\nfor convenience. An attacker site might create an \"I Like Ponies\" button on one\nof their own pages, and load the store's page in a transparent iframe such that\nthe \"Buy Now\" button is invisibly overlaid on the \"I Like Ponies\" button. If the\nuser visits the attacker site and clicks \"I Like Ponies\" he will inadvertently\nclick on the online store's \"Buy Now\" button and unknowingly purchase the item.\n\n.. _clickjacking-prevention:\n\nPreventing clickjacking\n=======================\n\nModern browsers honor the `X-Frame-Options`_ HTTP header that indicates whether\nor not a resource is allowed to load within a frame or iframe. If the response\ncontains the header with a value of ``SAMEORIGIN`` then the browser will only\nload the resource in a frame if the request originated from the same site. If\nthe header is set to ``DENY`` then the browser will block the resource from\nloading in a frame no matter which site made the request.\n\n.. _X-Frame-Options: https://developer.mozilla.org/en/The_X-FRAME-OPTIONS_response_header\n\nDjango provides a few simple ways to include this header in responses from your\nsite:\n\n1. A simple middleware that sets the header in all responses.\n\n2. A set of view decorators that can be used to override the middleware or to\n   only set the header for certain views.\n\nHow to use it\n=============\n\nSetting X-Frame-Options for all responses\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nTo set the same X-Frame-Options value for all responses in your site, add\n``'django.middleware.clickjacking.XFrameOptionsMiddleware'`` to\n:setting:`MIDDLEWARE_CLASSES`::\n\n    MIDDLEWARE_CLASSES = (\n        ...\n        'django.middleware.clickjacking.XFrameOptionsMiddleware',\n        ...\n    )\n\n\nBy default, the middleware will set the ``X-Frame-Options`` header to\n``SAMEORIGIN`` for every outgoing ``HttpResponse``. If you want ``DENY``\ninstead, set the :setting:`X_FRAME_OPTIONS` setting::\n\n    X_FRAME_OPTIONS = 'DENY'\n\nWhen using the middleware there may be some views where you do **not** want the\n``X-Frame-Options`` header set. For those cases, you can use a view decorator\nthat tells the middleware not to set the header::\n\n    from django.http import HttpResponse\n    from django.views.decorators.clickjacking import xframe_options_exempt\n\n    @xframe_options_exempt\n    def ok_to_load_in_a_frame(request):\n        return HttpResponse(\"This page is safe to load in a frame on any site.\")\n\n\nSetting X-Frame-Options per view\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nTo set the ``X-Frame-Options`` header on a per view basis, Django provides these\ndecorators::\n\n    from django.http import HttpResponse\n    from django.views.decorators.clickjacking import xframe_options_deny\n    from django.views.decorators.clickjacking import xframe_options_sameorigin\n\n    @xframe_options_deny\n    def view_one(request):\n        return HttpResponse(\"I won't display in any frame!\")\n\n    @xframe_options_sameorigin\n    def view_two(request):\n        return HttpResponse(\"Display in a frame if it's from the same origin as me.\")\n\nNote that you can use the decorators in conjunction with the middleware. Use of\na decorator overrides the middleware.\n\nLimitations\n===========\n\nThe ``X-Frame-Options`` header will only protect against clickjacking in a\nmodern browser. Older browsers will quietly ignore the header and need `other\nclickjacking prevention techniques`_.\n\nBrowsers that support X-Frame-Options\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n* Internet Explorer 8+\n* Firefox 3.6.9+\n* Opera 10.5+\n* Safari 4+\n* Chrome 4.1+\n\nSee also\n~~~~~~~~\n\nA `complete list`_ of browsers supporting ``X-Frame-Options``.\n\n.. _complete list: https://developer.mozilla.org/en/The_X-FRAME-OPTIONS_response_header#Browser_compatibility\n.. _other clickjacking prevention techniques: http://en.wikipedia.org/wiki/Clickjacking#Prevention\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/contrib/admin/actions.txt",
    "content": "=============\nAdmin actions\n=============\n\n.. currentmodule:: django.contrib.admin\n\nThe basic workflow of Django's admin is, in a nutshell, \"select an object,\nthen change it.\" This works well for a majority of use cases. However, if you\nneed to make the same change to many objects at once, this workflow can be\nquite tedious.\n\nIn these cases, Django's admin lets you write and register \"actions\" -- simple\nfunctions that get called with a list of objects selected on the change list\npage.\n\nIf you look at any change list in the admin, you'll see this feature in\naction; Django ships with a \"delete selected objects\" action available to all\nmodels. For example, here's the user module from Django's built-in\n:mod:`django.contrib.auth` app:\n\n.. image:: _images/user_actions.png\n\n.. warning::\n\n    The \"delete selected objects\" action uses :meth:`QuerySet.delete()\n    <django.db.models.query.QuerySet.delete>` for efficiency reasons, which\n    has an important caveat: your model's ``delete()`` method will not be\n    called.\n\n    If you wish to override this behavior, simply write a custom action which\n    accomplishes deletion in your preferred manner -- for example, by calling\n    ``Model.delete()`` for each of the selected items.\n\n    For more background on bulk deletion, see the documentation on :ref:`object\n    deletion <topics-db-queries-delete>`.\n\nRead on to find out how to add your own actions to this list.\n\nWriting actions\n===============\n\nThe easiest way to explain actions is by example, so let's dive in.\n\nA common use case for admin actions is the bulk updating of a model. Imagine a\nsimple news application with an ``Article`` model::\n\n    from django.db import models\n\n    STATUS_CHOICES = (\n        ('d', 'Draft'),\n        ('p', 'Published'),\n        ('w', 'Withdrawn'),\n    )\n\n    class Article(models.Model):\n        title = models.CharField(max_length=100)\n        body = models.TextField()\n        status = models.CharField(max_length=1, choices=STATUS_CHOICES)\n\n        def __unicode__(self):\n            return self.title\n\nA common task we might perform with a model like this is to update an\narticle's status from \"draft\" to \"published\". We could easily do this in the\nadmin one article at a time, but if we wanted to bulk-publish a group of\narticles, it'd be tedious. So, let's write an action that lets us change an\narticle's status to \"published.\"\n\nWriting action functions\n------------------------\n\nFirst, we'll need to write a function that gets called when the action is\ntrigged from the admin. Action functions are just regular functions that take\nthree arguments:\n\n* The current :class:`ModelAdmin`\n* An :class:`~django.http.HttpRequest` representing the current request,\n* A :class:`~django.db.models.query.QuerySet` containing the set of\n  objects selected by the user.\n\nOur publish-these-articles function won't need the :class:`ModelAdmin` or the\nrequest object, but we will use the queryset::\n\n    def make_published(modeladmin, request, queryset):\n        queryset.update(status='p')\n\n.. note::\n\n    For the best performance, we're using the queryset's :ref:`update method\n    <topics-db-queries-update>`. Other types of actions might need to deal\n    with each object individually; in these cases we'd just iterate over the\n    queryset::\n\n        for obj in queryset:\n            do_something_with(obj)\n\nThat's actually all there is to writing an action! However, we'll take one\nmore optional-but-useful step and give the action a \"nice\" title in the admin.\nBy default, this action would appear in the action list as \"Make published\" --\nthe function name, with underscores replaced by spaces. That's fine, but we\ncan provide a better, more human-friendly name by giving the\n``make_published`` function a ``short_description`` attribute::\n\n    def make_published(modeladmin, request, queryset):\n        queryset.update(status='p')\n    make_published.short_description = \"Mark selected stories as published\"\n\n.. note::\n\n    This might look familiar; the admin's ``list_display`` option uses the\n    same technique to provide human-readable descriptions for callback\n    functions registered there, too.\n\nAdding actions to the :class:`ModelAdmin`\n-----------------------------------------\n\nNext, we'll need to inform our :class:`ModelAdmin` of the action. This works\njust like any other configuration option. So, the complete ``admin.py`` with\nthe action and its registration would look like::\n\n    from django.contrib import admin\n    from myapp.models import Article\n\n    def make_published(modeladmin, request, queryset):\n        queryset.update(status='p')\n    make_published.short_description = \"Mark selected stories as published\"\n\n    class ArticleAdmin(admin.ModelAdmin):\n        list_display = ['title', 'status']\n        ordering = ['title']\n        actions = [make_published]\n\n    admin.site.register(Article, ArticleAdmin)\n\nThat code will give us an admin change list that looks something like this:\n\n.. image:: _images/article_actions.png\n\nThat's really all there is to it! If you're itching to write your own actions,\nyou now know enough to get started. The rest of this document just covers more\nadvanced techniques.\n\nHandling errors in actions\n--------------------------\n\nIf there are foreseeable error conditions that may occur while running your\naction, you should gracefully inform the user of the problem. This means\nhandling exceptions and and using\n:meth:`django.contrib.admin.ModelAdmin.message_user` to display a user friendly\ndescription of the problem in the response.\n\nAdvanced action techniques\n==========================\n\nThere's a couple of extra options and possibilities you can exploit for more\nadvanced options.\n\nActions as :class:`ModelAdmin` methods\n--------------------------------------\n\nThe example above shows the ``make_published`` action defined as a simple\nfunction. That's perfectly fine, but it's not perfect from a code design point\nof view: since the action is tightly coupled to the ``Article`` object, it\nmakes sense to hook the action to the ``ArticleAdmin`` object itself.\n\nThat's easy enough to do::\n\n    class ArticleAdmin(admin.ModelAdmin):\n        ...\n\n        actions = ['make_published']\n\n        def make_published(self, request, queryset):\n            queryset.update(status='p')\n        make_published.short_description = \"Mark selected stories as published\"\n\nNotice first that we've moved ``make_published`` into a method and renamed the\n``modeladmin`` parameter to ``self``, and second that we've now put the string\n``'make_published'`` in ``actions`` instead of a direct function reference. This\ntells the :class:`ModelAdmin` to look up the action as a method.\n\nDefining actions as methods gives the action more straightforward, idiomatic\naccess to the :class:`ModelAdmin` itself, allowing the action to call any of the\nmethods provided by the admin.\n\n.. _custom-admin-action:\n\nFor example, we can use ``self`` to flash a message to the user informing her\nthat the action was successful::\n\n    class ArticleAdmin(admin.ModelAdmin):\n        ...\n\n        def make_published(self, request, queryset):\n            rows_updated = queryset.update(status='p')\n            if rows_updated == 1:\n                message_bit = \"1 story was\"\n            else:\n                message_bit = \"%s stories were\" % rows_updated\n            self.message_user(request, \"%s successfully marked as published.\" % message_bit)\n\nThis make the action match what the admin itself does after successfully\nperforming an action:\n\n.. image:: _images/article_actions_message.png\n\nActions that provide intermediate pages\n---------------------------------------\n\nBy default, after an action is performed the user is simply redirected back\nto the original change list page. However, some actions, especially more\ncomplex ones, will need to return intermediate pages. For example, the\nbuilt-in delete action asks for confirmation before deleting the selected\nobjects.\n\nTo provide an intermediary page, simply return an\n:class:`~django.http.HttpResponse` (or subclass) from your action. For\nexample, you might write a simple export function that uses Django's\n:doc:`serialization functions </topics/serialization>` to dump some selected\nobjects as JSON::\n\n    from django.http import HttpResponse\n    from django.core import serializers\n\n    def export_as_json(modeladmin, request, queryset):\n        response = HttpResponse(content_type=\"application/json\")\n        serializers.serialize(\"json\", queryset, stream=response)\n        return response\n\nGenerally, something like the above isn't considered a great idea. Most of the\ntime, the best practice will be to return an\n:class:`~django.http.HttpResponseRedirect` and redirect the user to a view\nyou've written, passing the list of selected objects in the GET query string.\nThis allows you to provide complex interaction logic on the intermediary\npages. For example, if you wanted to provide a more complete export function,\nyou'd want to let the user choose a format, and possibly a list of fields to\ninclude in the export. The best thing to do would be to write a small action\nthat simply redirects to your custom export view::\n\n    from django.contrib import admin\n    from django.contrib.contenttypes.models import ContentType\n    from django.http import HttpResponseRedirect\n\n    def export_selected_objects(modeladmin, request, queryset):\n        selected = request.POST.getlist(admin.ACTION_CHECKBOX_NAME)\n        ct = ContentType.objects.get_for_model(queryset.model)\n        return HttpResponseRedirect(\"/export/?ct=%s&ids=%s\" % (ct.pk, \",\".join(selected)))\n\nAs you can see, the action is the simple part; all the complex logic would\nbelong in your export view. This would need to deal with objects of any type,\nhence the business with the ``ContentType``.\n\nWriting this view is left as an exercise to the reader.\n\n.. _adminsite-actions:\n\nMaking actions available site-wide\n----------------------------------\n\n.. method:: AdminSite.add_action(action[, name])\n\n    Some actions are best if they're made available to *any* object in the admin\n    site -- the export action defined above would be a good candidate. You can\n    make an action globally available using :meth:`AdminSite.add_action()`. For\n    example::\n\n        from django.contrib import admin\n\n        admin.site.add_action(export_selected_objects)\n\n    This makes the `export_selected_objects` action globally available as an\n    action named `\"export_selected_objects\"`. You can explicitly give the action\n    a name -- good if you later want to programatically :ref:`remove the action\n    <disabling-admin-actions>` -- by passing a second argument to\n    :meth:`AdminSite.add_action()`::\n\n        admin.site.add_action(export_selected_objects, 'export_selected')\n\n.. _disabling-admin-actions:\n\nDisabling actions\n-----------------\n\nSometimes you need to disable certain actions -- especially those\n:ref:`registered site-wide <adminsite-actions>` -- for particular objects.\nThere's a few ways you can disable actions:\n\nDisabling a site-wide action\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. method:: AdminSite.disable_action(name)\n\n    If you need to disable a :ref:`site-wide action <adminsite-actions>` you can\n    call :meth:`AdminSite.disable_action()`.\n\n    For example, you can use this method to remove the built-in \"delete selected\n    objects\" action::\n\n        admin.site.disable_action('delete_selected')\n\n    Once you've done the above, that action will no longer be available\n    site-wide.\n\n    If, however, you need to re-enable a globally-disabled action for one\n    particular model, simply list it explicitly in your ``ModelAdmin.actions``\n    list::\n\n        # Globally disable delete selected\n        admin.site.disable_action('delete_selected')\n\n        # This ModelAdmin will not have delete_selected available\n        class SomeModelAdmin(admin.ModelAdmin):\n            actions = ['some_other_action']\n            ...\n\n        # This one will\n        class AnotherModelAdmin(admin.ModelAdmin):\n            actions = ['delete_selected', 'a_third_action']\n            ...\n\n\nDisabling all actions for a particular :class:`ModelAdmin`\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nIf you want *no* bulk actions available for a given :class:`ModelAdmin`, simply\nset :attr:`ModelAdmin.actions` to ``None``::\n\n    class MyModelAdmin(admin.ModelAdmin):\n        actions = None\n\nThis tells the :class:`ModelAdmin` to not display or allow any actions,\nincluding any :ref:`site-wide actions <adminsite-actions>`.\n\nConditionally enabling or disabling actions\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. method:: ModelAdmin.get_actions(request)\n\n    Finally, you can conditionally enable or disable actions on a per-request\n    (and hence per-user basis) by overriding :meth:`ModelAdmin.get_actions`.\n\n    This returns a dictionary of actions allowed. The keys are action names, and\n    the values are ``(function, name, short_description)`` tuples.\n\n    Most of the time you'll use this method to conditionally remove actions from\n    the list gathered by the superclass. For example, if I only wanted users\n    whose names begin with 'J' to be able to delete objects in bulk, I could do\n    the following::\n\n        class MyModelAdmin(admin.ModelAdmin):\n            ...\n\n            def get_actions(self, request):\n                actions = super(MyModelAdmin, self).get_actions(request)\n                if request.user.username[0].upper() != 'J':\n                    if 'delete_selected' in actions:\n                        del actions['delete_selected']\n                return actions\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/contrib/admin/admindocs.txt",
    "content": "========================================\nThe Django admin documentation generator\n========================================\n\n.. module:: django.contrib.admindocs\n    :synopsis: Django's admin documentation generator.\n\n.. currentmodule:: django.contrib.admindocs\n\nDjango's :mod:`~django.contrib.admindocs` app pulls documentation from the\ndocstrings of models, views, template tags, and template filters for any app in\n:setting:`INSTALLED_APPS` and makes that documentation available from the\n:mod:`Django admin <django.contrib.admin>`.\n\nIn addition to providing offline documentation for all template tags and\ntemplate filters that ship with Django, you may utilize admindocs to quickly\ndocument your own code.\n\nOverview\n========\n\nTo activate the :mod:`~django.contrib.admindocs`, you will need to do\nthe following:\n\n* Add :mod:`django.contrib.admindocs` to your :setting:`INSTALLED_APPS`.\n* Add ``(r'^admin/doc/', include('django.contrib.admindocs.urls'))`` to\n  your ``urlpatterns``. Make sure it's included *before* the\n  ``r'^admin/'`` entry, so that requests to ``/admin/doc/`` don't get\n  handled by the latter entry.\n* Install the docutils Python module (http://docutils.sf.net/).\n* **Optional:** Linking to templates requires the :setting:`ADMIN_FOR`\n  setting to be configured.\n* **Optional:** Using the admindocs bookmarklets requires the\n  :mod:`XViewMiddleware<django.middleware.doc>` to be installed.\n\nOnce those steps are complete, you can start browsing the documentation by\ngoing to your admin interface and clicking the \"Documentation\" link in the\nupper right of the page.\n\nDocumentation helpers\n=====================\n\nThe following special markup can be used in your docstrings to easily create\nhyperlinks to other components:\n\n=================   =======================\nDjango Component    reStructuredText roles\n=================   =======================\nModels              ``:model:`appname.ModelName```\nViews               ``:view:`appname.view_name```\nTemplate tags       ``:tag:`tagname```\nTemplate filters    ``:filter:`filtername```\nTemplates           ``:template:`path/to/template.html```\n=================   =======================\n\nModel reference\n===============\n\nThe **models** section of the ``admindocs`` page describes each model in the\nsystem along with all the fields and methods available on it. Relationships to\nother models appear as hyperlinks. Descriptions are pulled from ``help_text``\nattributes on fields or from docstrings on model methods.\n\nA model with useful documentation might look like this::\n\n    class BlogEntry(models.Model):\n        \"\"\"\n        Stores a single blog entry, related to :model:`blog.Blog` and\n        :model:`auth.User`.\n\n        \"\"\"\n        slug = models.SlugField(help_text=\"A short label, generally used in URLs.\")\n        author = models.ForeignKey(User)\n        blog = models.ForeignKey(Blog)\n        ...\n\n        def publish(self):\n            \"\"\"Makes the blog entry live on the site.\"\"\"\n            ...\n\nView reference\n==============\n\nEach URL in your site has a separate entry in the ``admindocs`` page, and\nclicking on a given URL will show you the corresponding view. Helpful things\nyou can document in your view function docstrings include:\n\n* A short description of what the view does.\n* The **context**, or a list of variables available in the view's template.\n* The name of the template or templates that are used for that view.\n\nFor example::\n\n    from myapp.models import MyModel\n\n    def my_view(request, slug):\n        \"\"\"\n        Display an individual :model:`myapp.MyModel`.\n\n        **Context**\n\n        ``RequestContext``\n\n        ``mymodel``\n            An instance of :model:`myapp.MyModel`.\n\n        **Template:**\n\n        :template:`myapp/my_template.html`\n\n        \"\"\"\n        return render_to_response('myapp/my_template.html', {\n            'mymodel': MyModel.objects.get(slug=slug)\n        }, context_instance=RequestContext(request))\n\n\nTemplate tags and filters reference\n===================================\n\nThe **tags** and **filters** ``admindocs`` sections describe all the tags and\nfilters that come with Django (in fact, the :ref:`built-in tag reference\n<ref-templates-builtins-tags>` and :ref:`built-in filter reference\n<ref-templates-builtins-filters>` documentation come directly from those\npages). Any tags or filters that you create or are added by a third-party app\nwill show up in these sections as well.\n\n\nTemplate reference\n==================\n\nWhile ``admindocs`` does not include a place to document templates by\nthemselves, if you use the ``:template:`path/to/template.html``` syntax in a\ndocstring the resulting page will verify the path of that template with\nDjango's :ref:`template loaders <template-loaders>`. This can be a handy way to\ncheck if the specified template exists and to show where on the filesystem that\ntemplate is stored.\n\n\nIncluded Bookmarklets\n=====================\n\nSeveral useful bookmarklets are available from the ``admindocs`` page:\n\nDocumentation for this page\n    Jumps you from any page to the documentation for the view that generates\n    that page.\n\nShow object ID\n    Shows the content-type and unique ID for pages that represent a single\n    object.\n\nEdit this object\n    Jumps to the admin page for pages that represent a single object.\n\nUsing these bookmarklets requires that you are either logged into the\n:mod:`Django admin <django.contrib.admin>` as a\n:class:`~django.contrib.auth.models.User` with\n:attr:`~django.contrib.auth.models.User.is_staff` set to `True`, or\nthat the :mod:`django.middleware.doc` middleware and\n:mod:`XViewMiddleware <django.middleware.doc>` are installed and you\nare accessing the site from an IP address listed in :setting:`INTERNAL_IPS`.\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/contrib/admin/index.txt",
    "content": "=====================\nThe Django admin site\n=====================\n\n.. module:: django.contrib.admin\n   :synopsis: Django's admin site.\n\nOne of the most powerful parts of Django is the automatic admin interface. It\nreads metadata in your model to provide a powerful and production-ready\ninterface that content producers can immediately use to start adding content to\nthe site. In this document, we discuss how to activate, use and customize\nDjango's admin interface.\n\nOverview\n========\n\nThere are seven steps in activating the Django admin site:\n\n1. Add ``'django.contrib.admin'`` to your :setting:`INSTALLED_APPS`\n   setting.\n\n2. The admin has four dependencies - :mod:`django.contrib.auth`,\n   :mod:`django.contrib.contenttypes`,\n   :mod:`django.contrib.messages` and\n   :mod:`django.contrib.sessions`.  If these applications are not\n   in your :setting:`INSTALLED_APPS` list, add them.\n\n3. Add ``django.contrib.messages.context_processors.messages`` to\n   :setting:`TEMPLATE_CONTEXT_PROCESSORS` as well as\n   :class:`django.contrib.auth.middleware.AuthenticationMiddleware` and\n   :class:`django.contrib.messages.middleware.MessageMiddleware` to\n   :setting:`MIDDLEWARE_CLASSES`. (These are all active by default, so\n   you only need to do this if you've manually tweaked the settings.)\n\n4. Determine which of your application's models should be editable in the\n   admin interface.\n\n5. For each of those models, optionally create a ``ModelAdmin`` class that\n   encapsulates the customized admin functionality and options for that\n   particular model.\n\n6. Instantiate an ``AdminSite`` and tell it about each of your models and\n   ``ModelAdmin`` classes.\n\n7. Hook the ``AdminSite`` instance into your URLconf.\n\nAfter you've taken these steps, you'll be able to use your Django admin site\nby visiting the URL you hooked it into (``/admin/``, by default).\n\nOther topics\n------------\n\n.. toctree::\n   :maxdepth: 1\n\n   actions\n   admindocs\n\n.. seealso::\n\n    For information about serving the static files (images, JavaScript, and\n    CSS) associated with the admin in production, see :ref:`serving-files`.\n\n    Having problems?  Try :doc:`/faq/admin`.\n\n``ModelAdmin`` objects\n======================\n\n.. class:: ModelAdmin\n\n    The ``ModelAdmin`` class is the representation of a model in the admin\n    interface. These are stored in a file named ``admin.py`` in your\n    application. Let's take a look at a very simple example of\n    the ``ModelAdmin``::\n\n        from django.contrib import admin\n        from myproject.myapp.models import Author\n\n        class AuthorAdmin(admin.ModelAdmin):\n            pass\n        admin.site.register(Author, AuthorAdmin)\n\n    .. admonition:: Do you need a ``ModelAdmin`` object at all?\n\n        In the preceding example, the ``ModelAdmin`` class doesn't define any\n        custom values (yet). As a result, the default admin interface will be\n        provided. If you are happy with the default admin interface, you don't\n        need to define a ``ModelAdmin`` object at all -- you can register the\n        model class without providing a ``ModelAdmin`` description. The\n        preceding example could be simplified to::\n\n            from django.contrib import admin\n            from myproject.myapp.models import Author\n\n            admin.site.register(Author)\n\n``ModelAdmin`` options\n----------------------\n\nThe ``ModelAdmin`` is very flexible. It has several options for dealing with\ncustomizing the interface. All options are defined on the ``ModelAdmin``\nsubclass::\n\n    class AuthorAdmin(admin.ModelAdmin):\n        date_hierarchy = 'pub_date'\n\n.. attribute:: ModelAdmin.actions\n\n    A list of actions to make available on the change list page. See\n    :doc:`/ref/contrib/admin/actions` for details.\n\n.. attribute:: ModelAdmin.actions_on_top\n.. attribute:: ModelAdmin.actions_on_bottom\n\n    Controls where on the page the actions bar appears. By default, the admin\n    changelist displays actions at the top of the page (``actions_on_top = True;\n    actions_on_bottom = False``).\n\n.. attribute:: ModelAdmin.actions_selection_counter\n\n    Controls whether a selection counter is displayed next to the action dropdown.\n    By default, the admin changelist will display it\n    (``actions_selection_counter = True``).\n\n.. attribute:: ModelAdmin.date_hierarchy\n\n    Set ``date_hierarchy`` to the name of a ``DateField`` or ``DateTimeField``\n    in your model, and the change list page will include a date-based drilldown\n    navigation by that field.\n\n    Example::\n\n        date_hierarchy = 'pub_date'\n\n    This will intelligently populate itself based on available data,\n    e.g. if all the dates are in one month, it'll show the day-level\n    drill-down only.\n\n.. attribute:: ModelAdmin.exclude\n\n    This attribute, if given, should be a list of field names to exclude from\n    the form.\n\n    For example, let's consider the following model::\n\n        class Author(models.Model):\n            name = models.CharField(max_length=100)\n            title = models.CharField(max_length=3)\n            birth_date = models.DateField(blank=True, null=True)\n\n    If you want a form for the ``Author`` model that includes only the ``name``\n    and ``title`` fields, you would specify ``fields`` or ``exclude`` like\n    this::\n\n        class AuthorAdmin(admin.ModelAdmin):\n            fields = ('name', 'title')\n\n        class AuthorAdmin(admin.ModelAdmin):\n            exclude = ('birth_date',)\n\n    Since the Author model only has three fields, ``name``, ``title``, and\n    ``birth_date``, the forms resulting from the above declarations will\n    contain exactly the same fields.\n\n.. attribute:: ModelAdmin.fields\n\n    If you need to achieve simple changes in the layout of fields in the forms\n    of the \"add\" and \"change\" pages like only showing a subset of the available\n    fields, modifying their order or grouping them in rows you can use the\n    ``fields`` option (for more complex layout needs see the\n    :attr:`~ModelAdmin.fieldsets` option described in the next section). For\n    example, you could define a simpler version of the admin form for the\n    :class:`django.contrib.flatpages.models.FlatPage` model as follows::\n\n        class FlatPageAdmin(admin.ModelAdmin):\n            fields = ('url', 'title', 'content')\n\n    In the above example, only the fields ``url``, ``title`` and ``content``\n    will be displayed, sequentially, in the form. ``fields`` can contain\n    values defined in :attr:`ModelAdmin.readonly_fields` to be displayed as\n    read-only.\n\n    The ``fields`` option, unlike :attr:`~ModelAdmin.list_display`, may only\n    contain names of fields on the model or the form specified by\n    :attr:`~ModelAdmin.form`. It may contain callables only if they are listed\n    in :attr:`~ModelAdmin.readonly_fields`.\n\n    .. versionadded:: 1.4\n\n    To display multiple fields on the same line, wrap those fields in their own\n    tuple. In this example, the ``url`` and ``title`` fields will display on the\n    same line and the ``content`` field will be displayed below them in its\n    own line::\n\n        class FlatPageAdmin(admin.ModelAdmin):\n            fields = (('url', 'title'), 'content')\n\n    .. admonition:: Note\n\n        This ``fields`` option should not be confused with the ``fields``\n        dictionary key that is within the :attr:`~ModelAdmin.fieldsets` option,\n        as described in the next section.\n\n    If neither ``fields`` nor :attr:`~ModelAdmin.fieldsets` options are present,\n    Django will default to displaying each field that isn't an ``AutoField`` and\n    has ``editable=True``, in a single fieldset, in the same order as the fields\n    are defined in the model.\n\n.. attribute:: ModelAdmin.fieldsets\n\n    Set ``fieldsets`` to control the layout of admin \"add\" and \"change\" pages.\n\n    ``fieldsets`` is a list of two-tuples, in which each two-tuple represents a\n    ``<fieldset>`` on the admin form page. (A ``<fieldset>`` is a \"section\" of\n    the form.)\n\n    The two-tuples are in the format ``(name, field_options)``, where ``name``\n    is a string representing the title of the fieldset and ``field_options`` is\n    a dictionary of information about the fieldset, including a list of fields\n    to be displayed in it.\n\n    A full example, taken from the\n    :class:`django.contrib.flatpages.models.FlatPage` model::\n\n        class FlatPageAdmin(admin.ModelAdmin):\n            fieldsets = (\n                (None, {\n                    'fields': ('url', 'title', 'content', 'sites')\n                }),\n                ('Advanced options', {\n                    'classes': ('collapse',),\n                    'fields': ('enable_comments', 'registration_required', 'template_name')\n                }),\n            )\n\n    This results in an admin page that looks like:\n\n    .. image:: _images/flatfiles_admin.png\n\n    If neither ``fieldsets`` nor :attr:`~ModelAdmin.fields` options are present,\n    Django will default to displaying each field that isn't an ``AutoField`` and\n    has ``editable=True``, in a single fieldset, in the same order as the fields\n    are defined in the model.\n\n    The ``field_options`` dictionary can have the following keys:\n\n    * ``fields``\n        A tuple of field names to display in this fieldset. This key is\n        required.\n\n        Example::\n\n            {\n            'fields': ('first_name', 'last_name', 'address', 'city', 'state'),\n            }\n\n        As with the :attr:`~ModelAdmin.fields` option, to display multiple\n        fields on the same line, wrap those fields in their own tuple. In this\n        example, the ``first_name`` and ``last_name`` fields will display on\n        the same line::\n\n            {\n            'fields': (('first_name', 'last_name'), 'address', 'city', 'state'),\n            }\n\n        ``fields`` can contain values defined in\n        :attr:`~ModelAdmin.readonly_fields` to be displayed as read-only.\n\n        If you add the name of a callable to ``fields``, the same rule applies\n        as with the :attr:`~ModelAdmin.fields` option: the callable must be\n        listed in :attr:`~ModelAdmin.readonly_fields`.\n\n    * ``classes``\n        A list containing extra CSS classes to apply to the fieldset.\n\n        Example::\n\n            {\n            'classes': ['wide', 'extrapretty'],\n            }\n\n        Two useful classes defined by the default admin site stylesheet are\n        ``collapse`` and ``wide``. Fieldsets with the ``collapse`` style\n        will be initially collapsed in the admin and replaced with a small\n        \"click to expand\" link. Fieldsets with the ``wide`` style will be\n        given extra horizontal space.\n\n    * ``description``\n        A string of optional extra text to be displayed at the top of each\n        fieldset, under the heading of the fieldset.\n\n        Note that this value is *not* HTML-escaped when it's displayed in\n        the admin interface. This lets you include HTML if you so desire.\n        Alternatively you can use plain text and\n        ``django.utils.html.escape()`` to escape any HTML special\n        characters.\n\n.. attribute:: ModelAdmin.filter_horizontal\n\n    By default, a :class:`~django.db.models.ManyToManyField` is displayed in\n    the admin site with a ``<select multiple>``. However, multiple-select boxes\n    can be difficult to use when selecting many items. Adding a\n    :class:`~django.db.models.ManyToManyField` to this list will instead use\n    a nifty unobtrusive JavaScript \"filter\" interface that allows searching\n    within the options. The unselected and selected options appear in two boxes\n    side by side. See :attr:`~ModelAdmin.filter_vertical` to use a vertical\n    interface.\n\n.. attribute:: ModelAdmin.filter_vertical\n\n    Same as :attr:`~ModelAdmin.filter_horizontal`, but uses a vertical display\n    of the filter interface with the box of unselected options appearing above\n    the box of selected options.\n\n.. attribute:: ModelAdmin.form\n\n    By default a ``ModelForm`` is dynamically created for your model. It is\n    used to create the form presented on both the add/change pages. You can\n    easily provide your own ``ModelForm`` to override any default form behavior\n    on the add/change pages. Alternatively, you can customize the default\n    form rather than specifying an entirely new one by using the\n    :meth:`ModelAdmin.get_form` method.\n\n    For an example see the section `Adding custom validation to the admin`_.\n\n    .. admonition:: Note\n\n        If your ``ModelForm`` and ``ModelAdmin`` both define an ``exclude``\n        option then ``ModelAdmin`` takes precedence::\n\n            class PersonForm(forms.ModelForm):\n\n                class Meta:\n                    model = Person\n                    exclude = ['name']\n\n            class PersonAdmin(admin.ModelAdmin):\n                exclude = ['age']\n                form = PersonForm\n\n        In the above example, the \"age\" field will be excluded but the \"name\"\n        field will be included in the generated form.\n\n.. attribute:: ModelAdmin.formfield_overrides\n\n    This provides a quick-and-dirty way to override some of the\n    :class:`~django.forms.Field` options for use in the admin.\n    ``formfield_overrides`` is a dictionary mapping a field class to a dict of\n    arguments to pass to the field at construction time.\n\n    Since that's a bit abstract, let's look at a concrete example. The most\n    common use of ``formfield_overrides`` is to add a custom widget for a\n    certain type of field. So, imagine we've written a ``RichTextEditorWidget``\n    that we'd like to use for large text fields instead of the default\n    ``<textarea>``. Here's how we'd do that::\n\n        from django.db import models\n        from django.contrib import admin\n\n        # Import our custom widget and our model from where they're defined\n        from myapp.widgets import RichTextEditorWidget\n        from myapp.models import MyModel\n\n        class MyModelAdmin(admin.ModelAdmin):\n            formfield_overrides = {\n                models.TextField: {'widget': RichTextEditorWidget},\n            }\n\n    Note that the key in the dictionary is the actual field class, *not* a\n    string. The value is another dictionary; these arguments will be passed to\n    the form field's ``__init__()`` method. See :doc:`/ref/forms/api` for\n    details.\n\n    .. warning::\n\n        If you want to use a custom widget with a relation field (i.e.\n        :class:`~django.db.models.ForeignKey` or\n        :class:`~django.db.models.ManyToManyField`), make sure you haven't\n        included that field's name in ``raw_id_fields`` or ``radio_fields``.\n\n        ``formfield_overrides`` won't let you change the widget on relation\n        fields that have ``raw_id_fields`` or ``radio_fields`` set. That's\n        because ``raw_id_fields`` and ``radio_fields`` imply custom widgets of\n        their own.\n\n.. attribute:: ModelAdmin.inlines\n\n    See :class:`InlineModelAdmin` objects below as well as\n    :meth:`ModelAdmin.get_formsets`.\n\n.. attribute:: ModelAdmin.list_display\n\n    Set ``list_display`` to control which fields are displayed on the change\n    list page of the admin.\n\n    Example::\n\n        list_display = ('first_name', 'last_name')\n\n    If you don't set ``list_display``, the admin site will display a single\n    column that displays the ``__unicode__()`` representation of each object.\n\n    You have four possible values that can be used in ``list_display``:\n\n    * A field of the model. For example::\n\n          class PersonAdmin(admin.ModelAdmin):\n              list_display = ('first_name', 'last_name')\n\n    * A callable that accepts one parameter for the model instance. For\n      example::\n\n          def upper_case_name(obj):\n              return (\"%s %s\" % (obj.first_name, obj.last_name)).upper()\n          upper_case_name.short_description = 'Name'\n\n          class PersonAdmin(admin.ModelAdmin):\n              list_display = (upper_case_name,)\n\n    * A string representing an attribute on the ``ModelAdmin``. This\n      behaves same as the callable. For example::\n\n          class PersonAdmin(admin.ModelAdmin):\n              list_display = ('upper_case_name',)\n\n              def upper_case_name(self, obj):\n                return (\"%s %s\" % (obj.first_name, obj.last_name)).upper()\n              upper_case_name.short_description = 'Name'\n\n    * A string representing an attribute on the model. This behaves almost\n      the same as the callable, but ``self`` in this context is the model\n      instance. Here's a full model example::\n\n          class Person(models.Model):\n              name = models.CharField(max_length=50)\n              birthday = models.DateField()\n\n              def decade_born_in(self):\n                  return self.birthday.strftime('%Y')[:3] + \"0's\"\n              decade_born_in.short_description = 'Birth decade'\n\n          class PersonAdmin(admin.ModelAdmin):\n              list_display = ('name', 'decade_born_in')\n\n    A few special cases to note about ``list_display``:\n\n    * If the field is a ``ForeignKey``, Django will display the\n      ``__unicode__()`` of the related object.\n\n    * ``ManyToManyField`` fields aren't supported, because that would\n      entail executing a separate SQL statement for each row in the table.\n      If you want to do this nonetheless, give your model a custom method,\n      and add that method's name to ``list_display``. (See below for more\n      on custom methods in ``list_display``.)\n\n    * If the field is a ``BooleanField`` or ``NullBooleanField``, Django\n      will display a pretty \"on\" or \"off\" icon instead of ``True`` or\n      ``False``.\n\n    * If the string given is a method of the model, ``ModelAdmin`` or a\n      callable, Django will HTML-escape the output by default. If you'd\n      rather not escape the output of the method, give the method an\n      ``allow_tags`` attribute whose value is ``True``. However, to avoid an\n      XSS vulnerability, you should use :func:`~django.utils.html.format_html`\n      to escape user-provided inputs.\n\n      Here's a full example model::\n\n          from django.utils.html import format_html\n\n          class Person(models.Model):\n              first_name = models.CharField(max_length=50)\n              last_name = models.CharField(max_length=50)\n              color_code = models.CharField(max_length=6)\n\n              def colored_name(self):\n                  return format_html('<span style=\"color: #{0};\">{1} {2}</span>',\n                                     self.color_code,\n                                     self.first_name,\n                                     self.last_name)\n\n              colored_name.allow_tags = True\n\n          class PersonAdmin(admin.ModelAdmin):\n              list_display = ('first_name', 'last_name', 'colored_name')\n\n    * If the string given is a method of the model, ``ModelAdmin`` or a\n      callable that returns True or False Django will display a pretty\n      \"on\" or \"off\" icon if you give the method a ``boolean`` attribute\n      whose value is ``True``.\n\n      Here's a full example model::\n\n          class Person(models.Model):\n              first_name = models.CharField(max_length=50)\n              birthday = models.DateField()\n\n              def born_in_fifties(self):\n                  return self.birthday.strftime('%Y')[:3] == '195'\n              born_in_fifties.boolean = True\n\n          class PersonAdmin(admin.ModelAdmin):\n              list_display = ('name', 'born_in_fifties')\n\n\n    * The ``__str__()`` and ``__unicode__()`` methods are just as valid in\n      ``list_display`` as any other model method, so it's perfectly OK to\n      do this::\n\n          list_display = ('__unicode__', 'some_other_field')\n\n    * Usually, elements of ``list_display`` that aren't actual database\n      fields can't be used in sorting (because Django does all the sorting\n      at the database level).\n\n      However, if an element of ``list_display`` represents a certain\n      database field, you can indicate this fact by setting the\n      ``admin_order_field`` attribute of the item.\n\n      For example::\n\n        from django.utils.html import format_html\n\n        class Person(models.Model):\n            first_name = models.CharField(max_length=50)\n            color_code = models.CharField(max_length=6)\n\n            def colored_first_name(self):\n                return format_html('<span style=\"color: #{0};\">{1}</span>',\n                                   self.color_code,\n                                   self.first_name)\n\n            colored_first_name.allow_tags = True\n            colored_first_name.admin_order_field = 'first_name'\n\n        class PersonAdmin(admin.ModelAdmin):\n            list_display = ('first_name', 'colored_first_name')\n\n      The above will tell Django to order by the ``first_name`` field when\n      trying to sort by ``colored_first_name`` in the admin.\n\n.. attribute:: ModelAdmin.list_display_links\n\n    Set ``list_display_links`` to control which fields in ``list_display``\n    should be linked to the \"change\" page for an object.\n\n    By default, the change list page will link the first column -- the first\n    field specified in ``list_display`` -- to the change page for each item.\n    But ``list_display_links`` lets you change which columns are linked. Set\n    ``list_display_links`` to a list or tuple of fields (in the same\n    format as ``list_display``) to link.\n\n    ``list_display_links`` can specify one or many fields. As long as the\n    fields appear in ``list_display``, Django doesn't care how many (or\n    how few) fields are linked. The only requirement is: If you want to use\n    ``list_display_links``, you must define ``list_display``.\n\n    In this example, the ``first_name`` and ``last_name`` fields will be\n    linked on the change list page::\n\n        class PersonAdmin(admin.ModelAdmin):\n            list_display = ('first_name', 'last_name', 'birthday')\n            list_display_links = ('first_name', 'last_name')\n\n    .. _admin-list-editable:\n\n.. attribute:: ModelAdmin.list_editable\n\n    Set ``list_editable`` to a list of field names on the model which will\n    allow editing on the change list page. That is, fields listed in\n    ``list_editable`` will be displayed as form widgets on the change list\n    page, allowing users to edit and save multiple rows at once.\n\n    .. note::\n\n        ``list_editable`` interacts with a couple of other options in\n        particular ways; you should note the following rules:\n\n        * Any field in ``list_editable`` must also be in ``list_display``.\n          You can't edit a field that's not displayed!\n\n        * The same field can't be listed in both ``list_editable`` and\n          ``list_display_links`` -- a field can't be both a form and\n          a link.\n\n        You'll get a validation error if either of these rules are broken.\n\n.. attribute:: ModelAdmin.list_filter\n\n    Set ``list_filter`` to activate filters in the right sidebar of the change\n    list page of the admin, as illustrated in the following screenshot:\n\n    .. image:: _images/users_changelist.png\n\n    ``list_filter`` should be a list or tuple of elements, where each element\n    should be of one of the following types:\n\n    * a field name, where the specified field should be either a\n      ``BooleanField``, ``CharField``, ``DateField``, ``DateTimeField``,\n      ``IntegerField``, ``ForeignKey`` or ``ManyToManyField``, for example::\n\n          class PersonAdmin(ModelAdmin):\n              list_filter = ('is_staff', 'company')\n\n      Field names in ``list_filter`` can also span relations\n      using the ``__`` lookup, for example::\n\n          class PersonAdmin(UserAdmin):\n              list_filter = ('company__name',)\n\n    .. versionadded:: 1.4\n\n    * a class inheriting from ``django.contrib.admin.SimpleListFilter``,\n      which you need to provide the ``title`` and ``parameter_name``\n      attributes to and override the ``lookups`` and ``queryset`` methods,\n      e.g.::\n\n           from datetime import date\n\n           from django.utils.translation import ugettext_lazy as _\n           from django.contrib.admin import SimpleListFilter\n\n           class DecadeBornListFilter(SimpleListFilter):\n               # Human-readable title which will be displayed in the\n               # right admin sidebar just above the filter options.\n               title = _('decade born')\n\n               # Parameter for the filter that will be used in the URL query.\n               parameter_name = 'decade'\n\n               def lookups(self, request, model_admin):\n                   \"\"\"\n                   Returns a list of tuples. The first element in each\n                   tuple is the coded value for the option that will\n                   appear in the URL query. The second element is the\n                   human-readable name for the option that will appear\n                   in the right sidebar.\n                   \"\"\"\n                   return (\n                       ('80s', _('in the eighties')),\n                       ('90s', _('in the nineties')),\n                   )\n\n               def queryset(self, request, queryset):\n                   \"\"\"\n                   Returns the filtered queryset based on the value\n                   provided in the query string and retrievable via\n                   `self.value()`.\n                   \"\"\"\n                   # Compare the requested value (either '80s' or '90s')\n                   # to decide how to filter the queryset.\n                   if self.value() == '80s':\n                       return queryset.filter(birthday__gte=date(1980, 1, 1),\n                                               birthday__lte=date(1989, 12, 31))\n                   if self.value() == '90s':\n                       return queryset.filter(birthday__gte=date(1990, 1, 1),\n                                               birthday__lte=date(1999, 12, 31))\n\n           class PersonAdmin(ModelAdmin):\n               list_filter = (DecadeBornListFilter,)\n\n      .. note::\n\n          As a convenience, the ``HttpRequest`` object is passed to the\n          ``lookups`` and ``queryset`` methods, for example::\n\n              class AuthDecadeBornListFilter(DecadeBornListFilter):\n\n                  def lookups(self, request, model_admin):\n                      if request.user.is_superuser:\n                          return super(AuthDecadeBornListFilter,\n                              self).lookups(request, model_admin)\n\n                  def queryset(self, request, queryset):\n                      if request.user.is_superuser:\n                          return super(AuthDecadeBornListFilter,\n                              self).queryset(request, queryset)\n\n          Also as a convenience, the ``ModelAdmin`` object is passed to\n          the ``lookups`` method, for example if you want to base the\n          lookups on the available data::\n\n              class AdvancedDecadeBornListFilter(DecadeBornListFilter):\n\n                  def lookups(self, request, model_admin):\n                      \"\"\"\n                      Only show the lookups if there actually is\n                      anyone born in the corresponding decades.\n                      \"\"\"\n                      qs = model_admin.queryset(request)\n                      if qs.filter(birthday__gte=date(1980, 1, 1),\n                                    birthday__lte=date(1989, 12, 31)).exists():\n                          yield ('80s', _('in the eighties'))\n                      if qs.filter(birthday__gte=date(1990, 1, 1),\n                                    birthday__lte=date(1999, 12, 31)).exists():\n                          yield ('90s', _('in the nineties'))\n\n    .. versionadded:: 1.4\n\n    * a tuple, where the first element is a field name and the second\n      element is a class inheriting from\n      ``django.contrib.admin.FieldListFilter``, for example::\n\n          from django.contrib.admin import BooleanFieldListFilter\n\n          class PersonAdmin(ModelAdmin):\n              list_filter = (\n                  ('is_staff', BooleanFieldListFilter),\n              )\n\n      .. note::\n\n        The ``FieldListFilter`` API is considered internal and might be\n        changed.\n\n    .. versionadded:: 1.4\n\n    It is possible to specify a custom template for rendering a list filter::\n\n        class FilterWithCustomTemplate(SimpleListFilter):\n            template = \"custom_template.html\"\n\n    See the default template provided by django (``admin/filter.html``) for\n    a concrete example.\n\n.. attribute:: ModelAdmin.list_max_show_all\n\n    .. versionadded:: 1.4\n\n    Set ``list_max_show_all`` to control how many items can appear on a \"Show\n    all\" admin change list page. The admin will display a \"Show all\" link on the\n    change list only if the total result count is less than or equal to this\n    setting. By default, this is set to ``200``.\n\n.. attribute:: ModelAdmin.list_per_page\n\n    Set ``list_per_page`` to control how many items appear on each paginated\n    admin change list page. By default, this is set to ``100``.\n\n.. attribute:: ModelAdmin.list_select_related\n\n    Set ``list_select_related`` to tell Django to use\n    :meth:`~django.db.models.query.QuerySet.select_related` in retrieving\n    the list of objects on the admin change list page. This can save you a\n    bunch of database queries.\n\n    The value should be either ``True`` or ``False``. Default is ``False``.\n\n    Note that Django will use\n    :meth:`~django.db.models.query.QuerySet.select_related`,\n    regardless of this setting if one of the ``list_display`` fields is a\n    ``ForeignKey``.\n\n.. attribute:: ModelAdmin.ordering\n\n    Set ``ordering`` to specify how lists of objects should be ordered in the\n    Django admin views. This should be a list or tuple in the same format as a\n    model's :attr:`~django.db.models.Options.ordering` parameter.\n\n    If this isn't provided, the Django admin will use the model's default\n    ordering.\n\n    .. versionadded:: 1.4\n\n    If you need to specify a dynamic order (for example depending on user or\n    language) you can implement a :meth:`~ModelAdmin.get_ordering` method.\n\n    .. versionchanged:: 1.4\n\n    Django honors all elements in the list/tuple; before 1.4, only the first\n    was respected.\n\n.. attribute:: ModelAdmin.paginator\n\n    The paginator class to be used for pagination. By default,\n    :class:`django.core.paginator.Paginator` is used. If the custom paginator\n    class doesn't have the same constructor interface as\n    :class:`django.core.paginator.Paginator`, you will also need to\n    provide an implementation for :meth:`ModelAdmin.get_paginator`.\n\n.. attribute:: ModelAdmin.prepopulated_fields\n\n    Set ``prepopulated_fields`` to a dictionary mapping field names to the\n    fields it should prepopulate from::\n\n        class ArticleAdmin(admin.ModelAdmin):\n            prepopulated_fields = {\"slug\": (\"title\",)}\n\n    When set, the given fields will use a bit of JavaScript to populate from\n    the fields assigned. The main use for this functionality is to\n    automatically generate the value for ``SlugField`` fields from one or more\n    other fields. The generated value is produced by concatenating the values\n    of the source fields, and then by transforming that result into a valid\n    slug (e.g. substituting dashes for spaces).\n\n    ``prepopulated_fields`` doesn't accept ``DateTimeField``, ``ForeignKey``,\n    nor ``ManyToManyField`` fields.\n\n.. attribute:: ModelAdmin.radio_fields\n\n    By default, Django's admin uses a select-box interface (<select>) for\n    fields that are ``ForeignKey`` or have ``choices`` set. If a field is\n    present in ``radio_fields``, Django will use a radio-button interface\n    instead. Assuming ``group`` is a ``ForeignKey`` on the ``Person`` model::\n\n        class PersonAdmin(admin.ModelAdmin):\n            radio_fields = {\"group\": admin.VERTICAL}\n\n    You have the choice of using ``HORIZONTAL`` or ``VERTICAL`` from the\n    ``django.contrib.admin`` module.\n\n    Don't include a field in ``radio_fields`` unless it's a ``ForeignKey`` or has\n    ``choices`` set.\n\n.. attribute:: ModelAdmin.raw_id_fields\n\n    By default, Django's admin uses a select-box interface (<select>) for\n    fields that are ``ForeignKey``. Sometimes you don't want to incur the\n    overhead of having to select all the related instances to display in the\n    drop-down.\n\n    ``raw_id_fields`` is a list of fields you would like to change\n    into an ``Input`` widget for either a ``ForeignKey`` or\n    ``ManyToManyField``::\n\n        class ArticleAdmin(admin.ModelAdmin):\n            raw_id_fields = (\"newspaper\",)\n\n    The ``raw_id_fields`` ``Input`` widget should contain a primary key if the\n    field is a ``ForeignKey`` or a comma separated list of values if the field\n    is a ``ManyToManyField``.  The ``raw_id_fields`` widget shows a magnifying\n    glass button next to the field which allows users to search for and select\n    a value:\n\n    .. image:: _images/raw_id_fields.png\n\n.. attribute:: ModelAdmin.readonly_fields\n\n    By default the admin shows all fields as editable. Any fields in this\n    option (which should be a ``list`` or ``tuple``) will display its data\n    as-is and non-editable; they are also excluded from the\n    :class:`~django.forms.ModelForm` used for creating and editing. Note that\n    when specifying :attr:`ModelAdmin.fields` or :attr:`ModelAdmin.fieldsets`\n    the read-only fields must be present to be shown (they are ignored\n    otherwise).\n\n    If ``readonly_fields`` is used without defining explicit ordering through\n    :attr:`ModelAdmin.fields` or :attr:`ModelAdmin.fieldsets` they will be\n    added last after all editable fields.\n\n    A read-only field can not only display data from a model's field, it can\n    also display the output of a model's method or a method of the\n    ``ModelAdmin`` class itself. This is very similar to the way\n    :attr:`ModelAdmin.list_display` behaves. This provides an easy way to use\n    the admin interface to provide feedback on the status of the objects being\n    edited, for example::\n\n        from django.utils.html import format_html_join\n        from django.utils.safestring import mark_safe\n\n        class PersonAdmin(ModelAdmin):\n            readonly_fields = ('address_report',)\n\n            def address_report(self, instance):\n                # assuming get_full_address() returns a list of strings\n                # for each line of the address and you want to separate each\n                # line by a linebreak\n                return format_html_join(\n                    mark_safe('<br/>'),\n                    '{0}',\n                    ((line,) for line in instance.get_full_address()),\n                ) or \"<span class='errors'>I can't determine this address.</span>\"\n\n            # short_description functions like a model field's verbose_name\n            address_report.short_description = \"Address\"\n            # in this example, we have used HTML tags in the output\n            address_report.allow_tags = True\n\n.. attribute:: ModelAdmin.save_as\n\n    Set ``save_as`` to enable a \"save as\" feature on admin change forms.\n\n    Normally, objects have three save options: \"Save\", \"Save and continue\n    editing\" and \"Save and add another\". If ``save_as`` is ``True``, \"Save\n    and add another\" will be replaced by a \"Save as\" button.\n\n    \"Save as\" means the object will be saved as a new object (with a new ID),\n    rather than the old object.\n\n    By default, ``save_as`` is set to ``False``.\n\n.. attribute:: ModelAdmin.save_on_top\n\n    Set ``save_on_top`` to add save buttons across the top of your admin change\n    forms.\n\n    Normally, the save buttons appear only at the bottom of the forms. If you\n    set ``save_on_top``, the buttons will appear both on the top and the\n    bottom.\n\n    By default, ``save_on_top`` is set to ``False``.\n\n.. attribute:: ModelAdmin.search_fields\n\n    Set ``search_fields`` to enable a search box on the admin change list page.\n    This should be set to a list of field names that will be searched whenever\n    somebody submits a search query in that text box.\n\n    These fields should be some kind of text field, such as ``CharField`` or\n    ``TextField``. You can also perform a related lookup on a ``ForeignKey`` or\n    ``ManyToManyField`` with the lookup API \"follow\" notation::\n\n        search_fields = ['foreign_key__related_fieldname']\n\n    For example, if you have a blog entry with an author, the following\n    definition would enable search blog entries by the email address of the\n    author::\n\n        search_fields = ['user__email']\n\n    When somebody does a search in the admin search box, Django splits the\n    search query into words and returns all objects that contain each of the\n    words, case insensitive, where each word must be in at least one of\n    ``search_fields``. For example, if ``search_fields`` is set to\n    ``['first_name', 'last_name']`` and a user searches for ``john lennon``,\n    Django will do the equivalent of this SQL ``WHERE`` clause::\n\n        WHERE (first_name ILIKE '%john%' OR last_name ILIKE '%john%')\n        AND (first_name ILIKE '%lennon%' OR last_name ILIKE '%lennon%')\n\n    For faster and/or more restrictive searches, prefix the field name\n    with an operator:\n\n    ``^``\n        Matches the beginning of the field. For example, if ``search_fields``\n        is set to ``['^first_name', '^last_name']`` and a user searches for\n        ``john lennon``, Django will do the equivalent of this SQL ``WHERE``\n        clause::\n\n            WHERE (first_name ILIKE 'john%' OR last_name ILIKE 'john%')\n            AND (first_name ILIKE 'lennon%' OR last_name ILIKE 'lennon%')\n\n        This query is more efficient than the normal ``'%john%'`` query,\n        because the database only needs to check the beginning of a column's\n        data, rather than seeking through the entire column's data. Plus, if\n        the column has an index on it, some databases may be able to use the\n        index for this query, even though it's a ``LIKE`` query.\n\n    ``=``\n        Matches exactly, case-insensitive. For example, if\n        ``search_fields`` is set to ``['=first_name', '=last_name']`` and\n        a user searches for ``john lennon``, Django will do the equivalent\n        of this SQL ``WHERE`` clause::\n\n            WHERE (first_name ILIKE 'john' OR last_name ILIKE 'john')\n            AND (first_name ILIKE 'lennon' OR last_name ILIKE 'lennon')\n\n        Note that the query input is split by spaces, so, following this\n        example, it's currently not possible to search for all records in which\n        ``first_name`` is exactly ``'john winston'`` (containing a space).\n\n    ``@``\n        Performs a full-text match. This is like the default search method but\n        uses an index. Currently this is only available for MySQL.\n\nCustom template options\n~~~~~~~~~~~~~~~~~~~~~~~\n\nThe `Overriding Admin Templates`_ section describes how to override or extend\nthe default admin templates.  Use the following options to override the default\ntemplates used by the :class:`ModelAdmin` views:\n\n.. attribute:: ModelAdmin.add_form_template\n\n    Path to a custom template, used by :meth:`add_view`.\n\n.. attribute:: ModelAdmin.change_form_template\n\n    Path to a custom template, used by :meth:`change_view`.\n\n.. attribute:: ModelAdmin.change_list_template\n\n    Path to a custom template, used by :meth:`changelist_view`.\n\n.. attribute:: ModelAdmin.delete_confirmation_template\n\n    Path to a custom template, used by :meth:`delete_view` for displaying a\n    confirmation page when deleting one or more objects.\n\n.. attribute:: ModelAdmin.delete_selected_confirmation_template\n\n    Path to a custom template, used by the ``delete_selected`` action method\n    for displaying a confirmation page when deleting one or more objects. See\n    the :doc:`actions documentation</ref/contrib/admin/actions>`.\n\n.. attribute:: ModelAdmin.object_history_template\n\n    Path to a custom template, used by :meth:`history_view`.\n\n\n.. _model-admin-methods:\n\n``ModelAdmin`` methods\n----------------------\n\n.. warning::\n\n    :meth:`ModelAdmin.save_model` and :meth:`ModelAdmin.delete_model` must\n    save/delete the object, they are not for veto purposes, rather they allow\n    you to perform extra operations.\n\n.. method:: ModelAdmin.save_model(self, request, obj, form, change)\n\n    The ``save_model`` method is given the ``HttpRequest``, a model instance,\n    a ``ModelForm`` instance and a boolean value based on whether it is adding\n    or changing the object. Here you can do any pre- or post-save operations.\n\n    For example to attach ``request.user`` to the object prior to saving::\n\n        class ArticleAdmin(admin.ModelAdmin):\n            def save_model(self, request, obj, form, change):\n                obj.user = request.user\n                obj.save()\n\n.. method:: ModelAdmin.delete_model(self, request, obj)\n\n    The ``delete_model`` method is given the ``HttpRequest`` and a model\n    instance. Use this method to do pre- or post-delete operations.\n\n.. method:: ModelAdmin.save_formset(self, request, form, formset, change)\n\n    The ``save_formset`` method is given the ``HttpRequest``, the parent\n    ``ModelForm`` instance and a boolean value based on whether it is adding or\n    changing the parent object.\n\n    For example to attach ``request.user`` to each changed formset\n    model instance::\n\n        class ArticleAdmin(admin.ModelAdmin):\n            def save_formset(self, request, form, formset, change):\n                instances = formset.save(commit=False)\n                for instance in instances:\n                    instance.user = request.user\n                    instance.save()\n                formset.save_m2m()\n\n.. method:: ModelAdmin.get_ordering(self, request)\n\n    .. versionadded:: 1.4\n\n    The ``get_ordering`` method takes a``request`` as parameter and\n    is expected to return a ``list`` or ``tuple`` for ordering similar\n    to the :attr:`ordering` attribute. For example::\n\n        class PersonAdmin(ModelAdmin):\n\n            def get_ordering(self, request):\n                if request.user.is_superuser:\n                    return ['name', 'rank']\n                else:\n                    return ['name']\n\n.. method:: ModelAdmin.save_related(self, request, form, formsets, change)\n\n    .. versionadded:: 1.4\n\n    The ``save_related`` method is given the ``HttpRequest``, the parent\n    ``ModelForm`` instance, the list of inline formsets and a boolean value\n    based on whether the parent is being added or changed. Here you can do any\n    pre- or post-save operations for objects related to the parent. Note\n    that at this point the parent object and its form have already been saved.\n\n.. method:: ModelAdmin.get_readonly_fields(self, request, obj=None)\n\n    The ``get_readonly_fields`` method is given the ``HttpRequest`` and the\n    ``obj`` being edited (or ``None`` on an add form) and is expected to return\n    a ``list`` or ``tuple`` of field names that will be displayed as read-only,\n    as described above in the :attr:`ModelAdmin.readonly_fields` section.\n\n.. method:: ModelAdmin.get_prepopulated_fields(self, request, obj=None)\n\n    .. versionadded:: 1.4\n\n    The ``get_prepopulated_fields`` method is given the ``HttpRequest`` and the\n    ``obj`` being edited (or ``None`` on an add form) and is expected to return\n    a ``dictionary``, as described above in the :attr:`ModelAdmin.prepopulated_fields`\n    section.\n\n.. method:: ModelAdmin.get_list_display(self, request)\n\n    .. versionadded:: 1.4\n\n    The ``get_list_display`` method is given the ``HttpRequest`` and is\n    expected to return a ``list`` or ``tuple`` of field names that will be\n    displayed on the changelist view as described above in the\n    :attr:`ModelAdmin.list_display` section.\n\n.. method:: ModelAdmin.get_list_display_links(self, request, list_display)\n\n    .. versionadded:: 1.4\n\n    The ``get_list_display_links`` method is given the ``HttpRequest`` and\n    the ``list`` or ``tuple`` returned by :meth:`ModelAdmin.get_list_display`.\n    It is expected to return a ``list`` or ``tuple`` of field names on the\n    changelist that will be linked to the change view, as described in the\n    :attr:`ModelAdmin.list_display_links` section.\n\n.. method:: ModelAdmin.get_fieldsets(self, request, obj=None)\n\n    The ``get_fieldsets`` method is given the ``HttpRequest`` and the ``obj``\n    being edited (or ``None`` on an add form) and is expected to return a list\n    of two-tuples, in which each two-tuple represents a ``<fieldset>`` on the\n    admin form page, as described above in the :attr:`ModelAdmin.fieldsets` section.\n\n.. method:: ModelAdmin.get_list_filter(self, request)\n\n    .. versionadded:: 1.5\n\n    The ``get_list_filter`` method is given the ``HttpRequest`` and is expected\n    to return the same kind of sequence type as for the\n    :attr:`~ModelAdmin.list_filter` attribute.\n\n.. method:: ModelAdmin.get_inline_instances(self, request, obj=None)\n\n    .. versionadded:: 1.5\n\n    The ``get_inline_instances`` method is given the ``HttpRequest`` and the\n    ``obj`` being edited (or ``None`` on an add form) and is expected to return\n    a ``list`` or ``tuple`` of :class:`~django.contrib.admin.InlineModelAdmin`\n    objects, as described below in the :class:`~django.contrib.admin.InlineModelAdmin`\n    section.\n\n.. method:: ModelAdmin.get_urls(self)\n\n    The ``get_urls`` method on a ``ModelAdmin`` returns the URLs to be used for\n    that ModelAdmin in the same way as a URLconf.  Therefore you can extend\n    them as documented in :doc:`/topics/http/urls`::\n\n        class MyModelAdmin(admin.ModelAdmin):\n            def get_urls(self):\n                urls = super(MyModelAdmin, self).get_urls()\n                my_urls = patterns('',\n                    (r'^my_view/$', self.my_view)\n                )\n                return my_urls + urls\n\n            def my_view(self, request):\n                # custom view which should return an HttpResponse\n                pass\n\n    .. note::\n\n        Notice that the custom patterns are included *before* the regular admin\n        URLs: the admin URL patterns are very permissive and will match nearly\n        anything, so you'll usually want to prepend your custom URLs to the\n        built-in ones.\n\n        In this example, ``my_view`` will be accessed at\n        ``/admin/myapp/mymodel/my_view/`` (assuming the admin URLs are included\n        at ``/admin/``.)\n\n    However, the ``self.my_view`` function registered above suffers from two\n    problems:\n\n    * It will *not* perform any permission checks, so it will be accessible\n      to the general public.\n    * It will *not* provide any header details to prevent caching. This means\n      if the page retrieves data from the database, and caching middleware is\n      active, the page could show outdated information.\n\n    Since this is usually not what you want, Django provides a convenience\n    wrapper to check permissions and mark the view as non-cacheable. This\n    wrapper is ``AdminSite.admin_view()`` (i.e. ``self.admin_site.admin_view``\n    inside a ``ModelAdmin`` instance); use it like so::\n\n        class MyModelAdmin(admin.ModelAdmin):\n            def get_urls(self):\n                urls = super(MyModelAdmin, self).get_urls()\n                my_urls = patterns('',\n                    (r'^my_view/$', self.admin_site.admin_view(self.my_view))\n                )\n                return my_urls + urls\n\n    Notice the wrapped view in the fifth line above::\n\n        (r'^my_view/$', self.admin_site.admin_view(self.my_view))\n\n    This wrapping will protect ``self.my_view`` from unauthorized access and\n    will apply the ``django.views.decorators.cache.never_cache`` decorator to\n    make sure it is not cached if the cache middleware is active.\n\n    If the page is cacheable, but you still want the permission check to be\n    performed, you can pass a ``cacheable=True`` argument to\n    ``AdminSite.admin_view()``::\n\n        (r'^my_view/$', self.admin_site.admin_view(self.my_view, cacheable=True))\n\n.. method:: ModelAdmin.get_form(self, request, obj=None, **kwargs)\n\n    Returns a :class:`~django.forms.ModelForm` class for use in the admin add\n    and change views, see :meth:`add_view` and :meth:`change_view`.\n\n    If you wanted to hide a field from non-superusers, for example, you could\n    override ``get_form`` as follows::\n\n        class MyModelAdmin(admin.ModelAdmin):\n            def get_form(self, request, obj=None, **kwargs):\n                self.exclude = []\n                if not request.user.is_superuser:\n                    self.exclude.append('field_to_hide')\n                return super(MyModelAdmin, self).get_form(request, obj, **kwargs)\n\n.. method:: ModelAdmin.get_formsets(self, request, obj=None)\n\n    Yields :class:`InlineModelAdmin`\\s for use in admin add and change views.\n\n    For example if you wanted to display a particular inline only in the change\n    view, you could override ``get_formsets`` as follows::\n\n        class MyModelAdmin(admin.ModelAdmin):\n            inlines = [MyInline, SomeOtherInline]\n\n            def get_formsets(self, request, obj=None):\n                for inline in self.get_inline_instances(request, obj):\n                    # hide MyInline in the add view\n                    if isinstance(inline, MyInline) and obj is None:\n                        continue\n                    yield inline.get_formset(request, obj)\n\n.. method:: ModelAdmin.formfield_for_foreignkey(self, db_field, request, **kwargs)\n\n    The ``formfield_for_foreignkey`` method on a ``ModelAdmin`` allows you to\n    override the default formfield for a foreign keys field. For example, to\n    return a subset of objects for this foreign key field based on the user::\n\n        class MyModelAdmin(admin.ModelAdmin):\n            def formfield_for_foreignkey(self, db_field, request, **kwargs):\n                if db_field.name == \"car\":\n                    kwargs[\"queryset\"] = Car.objects.filter(owner=request.user)\n                return super(MyModelAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)\n\n    This uses the ``HttpRequest`` instance to filter the ``Car`` foreign key\n    field to only display the cars owned by the ``User`` instance.\n\n.. method:: ModelAdmin.formfield_for_manytomany(self, db_field, request, **kwargs)\n\n    Like the ``formfield_for_foreignkey`` method, the\n    ``formfield_for_manytomany`` method can be overridden to change the\n    default formfield for a many to many field. For example, if an owner can\n    own multiple cars and cars can belong to multiple owners -- a many to\n    many relationship -- you could filter the ``Car`` foreign key field to\n    only display the cars owned by the ``User``::\n\n        class MyModelAdmin(admin.ModelAdmin):\n            def formfield_for_manytomany(self, db_field, request, **kwargs):\n                if db_field.name == \"cars\":\n                    kwargs[\"queryset\"] = Car.objects.filter(owner=request.user)\n                return super(MyModelAdmin, self).formfield_for_manytomany(db_field, request, **kwargs)\n\n.. method:: ModelAdmin.formfield_for_choice_field(self, db_field, request, **kwargs)\n\n    Like the ``formfield_for_foreignkey`` and ``formfield_for_manytomany``\n    methods, the ``formfield_for_choice_field`` method can be overridden to\n    change the default formfield for a field that has declared choices. For\n    example, if the choices available to a superuser should be different than\n    those available to regular staff, you could proceed as follows::\n\n        class MyModelAdmin(admin.ModelAdmin):\n            def formfield_for_choice_field(self, db_field, request, **kwargs):\n                if db_field.name == \"status\":\n                    kwargs['choices'] = (\n                        ('accepted', 'Accepted'),\n                        ('denied', 'Denied'),\n                    )\n                    if request.user.is_superuser:\n                        kwargs['choices'] += (('ready', 'Ready for deployment'),)\n                return super(MyModelAdmin, self).formfield_for_choice_field(db_field, request, **kwargs)\n\n.. method:: ModelAdmin.get_changelist(self, request, **kwargs)\n\n    Returns the ``Changelist`` class to be used for listing. By default,\n    ``django.contrib.admin.views.main.ChangeList`` is used. By inheriting this\n    class you can change the behavior of the listing.\n\n.. method:: ModelAdmin.get_changelist_form(self, request, **kwargs)\n\n    Returns a :class:`~django.forms.ModelForm` class for use in the ``Formset``\n    on the changelist page. To use a custom form, for example::\n\n        class MyForm(forms.ModelForm):\n            class Meta:\n                model = MyModel\n\n        class MyModelAdmin(admin.ModelAdmin):\n            def get_changelist_form(self, request, **kwargs):\n                return MyForm\n\n.. method::  ModelAdmin.get_changelist_formset(self, request, **kwargs)\n\n    Returns a :ref:`ModelFormSet <model-formsets>` class for use on the\n    changelist page if :attr:`~ModelAdmin.list_editable` is used. To use a\n    custom formset, for example::\n\n        from django.forms.models import BaseModelFormSet\n\n        class MyAdminFormSet(BaseModelFormSet):\n            pass\n\n        class MyModelAdmin(admin.ModelAdmin):\n            def get_changelist_formset(self, request, **kwargs):\n                kwargs['formset'] = MyAdminFormSet\n                return super(MyModelAdmin, self).get_changelist_formset(request, **kwargs)\n\n.. method:: ModelAdmin.has_add_permission(self, request)\n\n    Should return ``True`` if adding an object is permitted, ``False``\n    otherwise.\n\n.. method:: ModelAdmin.has_change_permission(self, request, obj=None)\n\n    Should return ``True`` if editing obj is permitted, ``False`` otherwise.\n    If obj is ``None``, should return ``True`` or ``False`` to indicate whether\n    editing of objects of this type is permitted in general (e.g., ``False``\n    will be interpreted as meaning that the current user is not permitted to\n    edit any object of this type).\n\n.. method:: ModelAdmin.has_delete_permission(self, request, obj=None)\n\n    Should return ``True`` if deleting obj is permitted, ``False`` otherwise.\n    If obj is ``None``, should return ``True`` or ``False`` to indicate whether\n    deleting objects of this type is permitted in general (e.g., ``False`` will\n    be interpreted as meaning that the current user is not permitted to delete\n    any object of this type).\n\n.. method:: ModelAdmin.queryset(self, request)\n\n    The ``queryset`` method on a ``ModelAdmin`` returns a\n    :class:`~django.db.models.query.QuerySet` of all model instances that\n    can be edited by the admin site. One use case for overriding this method\n    is to show objects owned by the logged-in user::\n\n        class MyModelAdmin(admin.ModelAdmin):\n            def queryset(self, request):\n                qs = super(MyModelAdmin, self).queryset(request)\n                if request.user.is_superuser:\n                    return qs\n                return qs.filter(author=request.user)\n\n.. method:: ModelAdmin.message_user(request, message, level=messages.INFO, extra_tags='', fail_silently=False)\n\n    Sends a message to the user using the :mod:`django.contrib.messages`\n    backend.  See the :ref:`custom ModelAdmin example <custom-admin-action>`.\n\n    .. versionadded:: 1.5\n\n    Keyword arguments allow you to change the message level, add extra CSS\n    tags, or fail silently if the ``contrib.messages`` framework is not\n    installed. These keyword arguments match those for\n    :func:`django.contrib.messages.add_message`, see that function's\n    documentation for more details. One difference is that the level may be\n    passed as a string label in addition to integer/constant.\n\n.. method:: ModelAdmin.get_paginator(queryset, per_page, orphans=0, allow_empty_first_page=True)\n\n    Returns an instance of the paginator to use for this view. By default,\n    instantiates an instance of :attr:`paginator`.\n\nOther methods\n~~~~~~~~~~~~~\n\n.. method:: ModelAdmin.add_view(self, request, form_url='', extra_context=None)\n\n    Django view for the model instance addition page. See note below.\n\n.. method:: ModelAdmin.change_view(self, request, object_id, form_url='', extra_context=None)\n\n    Django view for the model instance edition page. See note below.\n\n    .. versionchanged:: 1.4\n\n    The ``form_url`` parameter was added.\n\n.. method:: ModelAdmin.changelist_view(self, request, extra_context=None)\n\n    Django view for the model instances change list/actions page. See note\n    below.\n\n.. method:: ModelAdmin.delete_view(self, request, object_id, extra_context=None)\n\n    Django view for the model instance(s) deletion confirmation page. See note\n    below.\n\n.. method:: ModelAdmin.history_view(self, request, object_id, extra_context=None)\n\n    Django view for the page that shows the modification history for a given\n    model instance.\n\nUnlike the hook-type ``ModelAdmin`` methods detailed in the previous section,\nthese five methods are in reality designed to be invoked as Django views from\nthe admin application URL dispatching handler to render the pages that deal\nwith model instances CRUD operations. As a result, completely overriding these\nmethods will significantly change the behavior of the admin application.\n\nOne common reason for overriding these methods is to augment the context data\nthat is provided to the template that renders the view. In the following\nexample, the change view is overridden so that the rendered template is\nprovided some extra mapping data that would not otherwise be available::\n\n    class MyModelAdmin(admin.ModelAdmin):\n\n        # A template for a very customized change view:\n        change_form_template = 'admin/myapp/extras/openstreetmap_change_form.html'\n\n        def get_osm_info(self):\n            # ...\n            pass\n\n        def change_view(self, request, object_id, form_url='', extra_context=None):\n            extra_context = extra_context or {}\n            extra_context['osm_data'] = self.get_osm_info()\n            return super(MyModelAdmin, self).change_view(request, object_id,\n                form_url, extra_context=extra_context)\n\n.. versionadded:: 1.4\n\nThese views now return :class:`~django.template.response.TemplateResponse`\ninstances which allow you to easily customize the response data before\nrendering. For more details, see the\n:doc:`TemplateResponse documentation </ref/template-response>`.\n\n.. _modeladmin-media-definitions:\n\n``ModelAdmin`` media definitions\n--------------------------------\n\nThere are times where you would like add a bit of CSS and/or JavaScript to\nthe add/change views. This can be accomplished by using a Media inner class\non your ``ModelAdmin``::\n\n    class ArticleAdmin(admin.ModelAdmin):\n        class Media:\n            css = {\n                \"all\": (\"my_styles.css\",)\n            }\n            js = (\"my_code.js\",)\n\nThe :doc:`staticfiles app </ref/contrib/staticfiles>` prepends\n:setting:`STATIC_URL` (or :setting:`MEDIA_URL` if :setting:`STATIC_URL` is\n``None``) to any media paths. The same rules apply as :ref:`regular media\ndefinitions on forms <form-media-paths>`.\n\njQuery\n~~~~~~\n\nDjango admin Javascript makes use of the `jQuery`_ library.\n\nTo avoid conflicts with user-supplied scripts or libraries, Django's jQuery\n(version 1.4.2) is namespaced as ``django.jQuery``. If you want to use jQuery\nin your own admin JavaScript without including a second copy, you can use the\n``django.jQuery`` object on changelist and add/edit views.\n\nThe :class:`ModelAdmin` class requires jQuery by default, so there is no need\nto add jQuery to your ``ModelAdmin``'s list of media resources unless you have\na specifc need. For example, if you require the jQuery library to be in the\nglobal namespace (for example when using third-party jQuery plugins) or if you\nneed a newer version of jQuery, you will have to include your own copy.\n\nDjango provides both uncompressed and 'minified' versions of jQuery, as\n``jquery.js`` and ``jquery.min.js`` respectively.\n\n:class:`ModelAdmin` and :class:`InlineModelAdmin` have a ``media`` property\nthat returns a list of ``Media`` objects which store paths to the JavaScript\nfiles for the forms and/or formsets. If :setting:`DEBUG` is ``True`` it will\nreturn the uncompressed versions of the various JavaScript files, including\n``jquery.js``; if not, it will return the 'minified' versions.\n\n.. _jQuery: http://jquery.com\n\nAdding custom validation to the admin\n-------------------------------------\n\nAdding custom validation of data in the admin is quite easy. The automatic\nadmin interface reuses :mod:`django.forms`, and the ``ModelAdmin`` class gives\nyou the ability define your own form::\n\n    class ArticleAdmin(admin.ModelAdmin):\n        form = MyArticleAdminForm\n\n``MyArticleAdminForm`` can be defined anywhere as long as you import where\nneeded. Now within your form you can add your own custom validation for\nany field::\n\n    class MyArticleAdminForm(forms.ModelForm):\n        class Meta:\n            model = Article\n\n        def clean_name(self):\n            # do something that validates your data\n            return self.cleaned_data[\"name\"]\n\nIt is important you use a ``ModelForm`` here otherwise things can break. See\nthe :doc:`forms </ref/forms/index>` documentation on :doc:`custom validation\n</ref/forms/validation>` and, more specifically, the\n:ref:`model form validation notes <overriding-modelform-clean-method>` for more\ninformation.\n\n.. _admin-inlines:\n\n``InlineModelAdmin`` objects\n============================\n\n.. class:: InlineModelAdmin\n.. class:: TabularInline\n.. class:: StackedInline\n\n    The admin interface has the ability to edit models on the same page as a\n    parent model. These are called inlines. Suppose you have these two models::\n\n         class Author(models.Model):\n            name = models.CharField(max_length=100)\n\n         class Book(models.Model):\n            author = models.ForeignKey(Author)\n            title = models.CharField(max_length=100)\n\n    You can edit the books authored by an author on the author page. You add\n    inlines to a model by specifying them in a ``ModelAdmin.inlines``::\n\n        class BookInline(admin.TabularInline):\n            model = Book\n\n        class AuthorAdmin(admin.ModelAdmin):\n            inlines = [\n                BookInline,\n            ]\n\n    Django provides two subclasses of ``InlineModelAdmin`` and they are:\n\n    * :class:`~django.contrib.admin.TabularInline`\n    * :class:`~django.contrib.admin.StackedInline`\n\n    The difference between these two is merely the template used to render\n    them.\n\n``InlineModelAdmin`` options\n-----------------------------\n\n``InlineModelAdmin`` shares many of the same features as ``ModelAdmin``, and\nadds some of its own (the shared features are actually defined in the\n``BaseModelAdmin`` superclass). The shared features are:\n\n- :attr:`~InlineModelAdmin.form`\n- :attr:`~ModelAdmin.fieldsets`\n- :attr:`~ModelAdmin.fields`\n- :attr:`~ModelAdmin.formfield_overrides`\n- :attr:`~ModelAdmin.exclude`\n- :attr:`~ModelAdmin.filter_horizontal`\n- :attr:`~ModelAdmin.filter_vertical`\n- :attr:`~ModelAdmin.ordering`\n- :attr:`~ModelAdmin.prepopulated_fields`\n- :meth:`~ModelAdmin.queryset`\n- :attr:`~ModelAdmin.radio_fields`\n- :attr:`~ModelAdmin.readonly_fields`\n- :attr:`~InlineModelAdmin.raw_id_fields`\n- :meth:`~ModelAdmin.formfield_for_foreignkey`\n- :meth:`~ModelAdmin.formfield_for_manytomany`\n\n.. versionadded:: 1.4\n\n- :meth:`~ModelAdmin.has_add_permission`\n- :meth:`~ModelAdmin.has_change_permission`\n- :meth:`~ModelAdmin.has_delete_permission`\n\nThe ``InlineModelAdmin`` class adds:\n\n.. attribute:: InlineModelAdmin.model\n\n    The model which the inline is using. This is required.\n\n.. attribute:: InlineModelAdmin.fk_name\n\n    The name of the foreign key on the model. In most cases this will be dealt\n    with automatically, but ``fk_name`` must be specified explicitly if there\n    are more than one foreign key to the same parent model.\n\n.. attribute:: InlineModelAdmin.formset\n\n    This defaults to ``BaseInlineFormSet``. Using your own formset can give you\n    many possibilities of customization. Inlines are built around\n    :ref:`model formsets <model-formsets>`.\n\n.. attribute:: InlineModelAdmin.form\n\n    The value for ``form`` defaults to ``ModelForm``. This is what is passed\n    through to :func:`~django.forms.models.inlineformset_factory` when\n    creating the formset for this inline.\n\n.. attribute:: InlineModelAdmin.extra\n\n    This controls the number of extra forms the formset will display in\n    addition to the initial forms. See the\n    :doc:`formsets documentation </topics/forms/formsets>` for more\n    information.\n\n    For users with JavaScript-enabled browsers, an \"Add another\" link is\n    provided to enable any number of additional inlines to be added in addition\n    to those provided as a result of the ``extra`` argument.\n\n    The dynamic link will not appear if the number of currently displayed forms\n    exceeds ``max_num``, or if the user does not have JavaScript enabled.\n\n    .. _ref-contrib-admin-inline-max-num:\n\n.. attribute:: InlineModelAdmin.max_num\n\n    This controls the maximum number of forms to show in the inline. This\n    doesn't directly correlate to the number of objects, but can if the value\n    is small enough. See :ref:`model-formsets-max-num` for more information.\n\n.. attribute:: InlineModelAdmin.raw_id_fields\n\n    By default, Django's admin uses a select-box interface (<select>) for\n    fields that are ``ForeignKey``. Sometimes you don't want to incur the\n    overhead of having to select all the related instances to display in the\n    drop-down.\n\n    ``raw_id_fields`` is a list of fields you would like to change into a\n    ``Input`` widget for either a ``ForeignKey`` or ``ManyToManyField``::\n\n        class BookInline(admin.TabularInline):\n            model = Book\n            raw_id_fields = (\"pages\",)\n\n\n.. attribute:: InlineModelAdmin.template\n\n    The template used to render the inline on the page.\n\n.. attribute:: InlineModelAdmin.verbose_name\n\n    An override to the ``verbose_name`` found in the model's inner ``Meta``\n    class.\n\n.. attribute:: InlineModelAdmin.verbose_name_plural\n\n    An override to the ``verbose_name_plural`` found in the model's inner\n    ``Meta`` class.\n\n.. attribute:: InlineModelAdmin.can_delete\n\n    Specifies whether or not inline objects can be deleted in the inline.\n    Defaults to ``True``.\n\n.. method:: InlineModelAdmin.get_formset(self, request, obj=None, **kwargs)\n\n    Returns a ``BaseInlineFormSet`` class for use in admin add/change views.\n    See the example for :class:`ModelAdmin.get_formsets`.\n\nWorking with a model with two or more foreign keys to the same parent model\n---------------------------------------------------------------------------\n\nIt is sometimes possible to have more than one foreign key to the same model.\nTake this model for instance::\n\n    class Friendship(models.Model):\n        to_person = models.ForeignKey(Person, related_name=\"friends\")\n        from_person = models.ForeignKey(Person, related_name=\"from_friends\")\n\nIf you wanted to display an inline on the ``Person`` admin add/change pages\nyou need to explicitly define the foreign key since it is unable to do so\nautomatically::\n\n    class FriendshipInline(admin.TabularInline):\n        model = Friendship\n        fk_name = \"to_person\"\n\n    class PersonAdmin(admin.ModelAdmin):\n        inlines = [\n            FriendshipInline,\n        ]\n\nWorking with many-to-many models\n--------------------------------\n\nBy default, admin widgets for many-to-many relations will be displayed\non whichever model contains the actual reference to the\n:class:`~django.db.models.ManyToManyField`. Depending on your ``ModelAdmin``\ndefinition, each many-to-many field in your model will be represented by a\nstandard HTML ``<select multiple>``, a horizontal or vertical filter, or a\n``raw_id_admin`` widget. However, it is also possible to replace these\nwidgets with inlines.\n\nSuppose we have the following models::\n\n    class Person(models.Model):\n        name = models.CharField(max_length=128)\n\n    class Group(models.Model):\n        name = models.CharField(max_length=128)\n        members = models.ManyToManyField(Person, related_name='groups')\n\nIf you want to display many-to-many relations using an inline, you can do\nso by defining an ``InlineModelAdmin`` object for the relationship::\n\n    class MembershipInline(admin.TabularInline):\n        model = Group.members.through\n\n    class PersonAdmin(admin.ModelAdmin):\n        inlines = [\n            MembershipInline,\n        ]\n\n    class GroupAdmin(admin.ModelAdmin):\n        inlines = [\n            MembershipInline,\n        ]\n        exclude = ('members',)\n\nThere are two features worth noting in this example.\n\nFirstly - the ``MembershipInline`` class references ``Group.members.through``.\nThe ``through`` attribute is a reference to the model that manages the\nmany-to-many relation. This model is automatically created by Django when you\ndefine a many-to-many field.\n\nSecondly, the ``GroupAdmin`` must manually exclude the ``members`` field.\nDjango displays an admin widget for a many-to-many field on the model that\ndefines the relation (in this case, ``Group``). If you want to use an inline\nmodel to represent the many-to-many relationship, you must tell Django's admin\nto *not* display this widget - otherwise you will end up with two widgets on\nyour admin page for managing the relation.\n\nIn all other respects, the ``InlineModelAdmin`` is exactly the same as any\nother. You can customize the appearance using any of the normal\n``ModelAdmin`` properties.\n\nWorking with many-to-many intermediary models\n---------------------------------------------\n\nWhen you specify an intermediary model using the ``through`` argument to a\n:class:`~django.db.models.ManyToManyField`, the admin will not display a\nwidget by default. This is because each instance of that intermediary model\nrequires more information than could be displayed in a single widget, and the\nlayout required for multiple widgets will vary depending on the intermediate\nmodel.\n\nHowever, we still want to be able to edit that information inline. Fortunately,\nthis is easy to do with inline admin models. Suppose we have the following\nmodels::\n\n    class Person(models.Model):\n        name = models.CharField(max_length=128)\n\n    class Group(models.Model):\n        name = models.CharField(max_length=128)\n        members = models.ManyToManyField(Person, through='Membership')\n\n    class Membership(models.Model):\n        person = models.ForeignKey(Person)\n        group = models.ForeignKey(Group)\n        date_joined = models.DateField()\n        invite_reason = models.CharField(max_length=64)\n\nThe first step in displaying this intermediate model in the admin is to\ndefine an inline class for the ``Membership`` model::\n\n    class MembershipInline(admin.TabularInline):\n        model = Membership\n        extra = 1\n\nThis simple example uses the default ``InlineModelAdmin`` values for the\n``Membership`` model, and limits the extra add forms to one. This could be\ncustomized using any of the options available to ``InlineModelAdmin`` classes.\n\nNow create admin views for the ``Person`` and ``Group`` models::\n\n    class PersonAdmin(admin.ModelAdmin):\n        inlines = (MembershipInline,)\n\n    class GroupAdmin(admin.ModelAdmin):\n        inlines = (MembershipInline,)\n\nFinally, register your ``Person`` and ``Group`` models with the admin site::\n\n    admin.site.register(Person, PersonAdmin)\n    admin.site.register(Group, GroupAdmin)\n\nNow your admin site is set up to edit ``Membership`` objects inline from\neither the ``Person`` or the ``Group`` detail pages.\n\n.. _using-generic-relations-as-an-inline:\n\nUsing generic relations as an inline\n------------------------------------\n\nIt is possible to use an inline with generically related objects. Let's say\nyou have the following models::\n\n    class Image(models.Model):\n        image = models.ImageField(upload_to=\"images\")\n        content_type = models.ForeignKey(ContentType)\n        object_id = models.PositiveIntegerField()\n        content_object = generic.GenericForeignKey(\"content_type\", \"object_id\")\n\n    class Product(models.Model):\n        name = models.CharField(max_length=100)\n\nIf you want to allow editing and creating ``Image`` instance on the ``Product``\nadd/change views you can use ``GenericTabularInline`` or\n``GenericStackedInline`` (both subclasses of ``GenericInlineModelAdmin``)\nprovided by ``django.contrib.contenttypes.generic``, they implement tabular and\nstacked visual layouts for the forms representing the inline objects\nrespectively just like their non-generic counterparts and behave just like any\nother inline. In your ``admin.py`` for this example app::\n\n    from django.contrib import admin\n    from django.contrib.contenttypes import generic\n\n    from myproject.myapp.models import Image, Product\n\n    class ImageInline(generic.GenericTabularInline):\n        model = Image\n\n    class ProductAdmin(admin.ModelAdmin):\n        inlines = [\n            ImageInline,\n        ]\n\n    admin.site.register(Product, ProductAdmin)\n\nSee the :doc:`contenttypes documentation </ref/contrib/contenttypes>` for more\nspecific information.\n\nOverriding admin templates\n==========================\n\nIt is relatively easy to override many of the templates which the admin module\nuses to generate the various pages of an admin site. You can even override a\nfew of these templates for a specific app, or a specific model.\n\nSet up your projects admin template directories\n-----------------------------------------------\n\nThe admin template files are located in the ``contrib/admin/templates/admin``\ndirectory.\n\nIn order to override one or more of them, first create an ``admin`` directory\nin your project's ``templates`` directory. This can be any of the directories\nyou specified in :setting:`TEMPLATE_DIRS`.\n\nWithin this ``admin`` directory, create sub-directories named after your app.\nWithin these app subdirectories create sub-directories named after your models.\nNote, that the admin app will lowercase the model name when looking for the\ndirectory, so make sure you name the directory in all lowercase if you are\ngoing to run your app on a case-sensitive filesystem.\n\nTo override an admin template for a specific app, copy and edit the template\nfrom the ``django/contrib/admin/templates/admin`` directory, and save it to one\nof the directories you just created.\n\nFor example, if we wanted to add a tool to the change list view for all the\nmodels in an app named ``my_app``, we would copy\n``contrib/admin/templates/admin/change_list.html`` to the\n``templates/admin/my_app/`` directory of our project, and make any necessary\nchanges.\n\nIf we wanted to add a tool to the change list view for only a specific model\nnamed 'Page', we would copy that same file to the\n``templates/admin/my_app/page`` directory of our project.\n\nOverriding vs. replacing an admin template\n------------------------------------------\n\nBecause of the modular design of the admin templates, it is usually neither\nnecessary nor advisable to replace an entire template. It is almost always\nbetter to override only the section of the template which you need to change.\n\nTo continue the example above, we want to add a new link next to the\n``History`` tool for the ``Page`` model. After looking at ``change_form.html``\nwe determine that we only need to override the ``object-tools-items`` block.\nTherefore here is our new ``change_form.html`` :\n\n.. code-block:: html+django\n\n    {% extends \"admin/change_form.html\" %}\n    {% load i18n admin_urls %}\n    {% block object-tools-items %}\n        <li>\n            <a href=\"{% url opts|admin_urlname:'history' original.pk|admin_urlquote %}\" class=\"historylink\">{% trans \"History\" %}</a>\n        </li>\n        <li>\n            <a href=\"mylink/\" class=\"historylink\">My Link</a>\n        </li>\n        {% if has_absolute_url %}\n            <li>\n                <a href=\"{% url 'admin:view_on_site' content_type_id original.pk %}\" class=\"viewsitelink\">{% trans \"View on site\" %}</a>\n            </li>\n        {% endif%}\n    {% endblock %}\n\nAnd that's it! If we placed this file in the ``templates/admin/my_app``\ndirectory, our link would appear on the change form for all models within\nmy_app.\n\nTemplates which may be overridden per app or model\n--------------------------------------------------\n\nNot every template in ``contrib/admin/templates/admin`` may be overridden per\napp or per model. The following can:\n\n* ``app_index.html``\n* ``change_form.html``\n* ``change_list.html``\n* ``delete_confirmation.html``\n* ``object_history.html``\n\nFor those templates that cannot be overridden in this way, you may still\noverride them for your entire project. Just place the new version in your\n``templates/admin`` directory. This is particularly useful to create custom 404\nand 500 pages.\n\n.. note::\n\n    Some of the admin templates, such as ``change_list_results.html`` are used\n    to render custom inclusion tags. These may be overridden, but in such cases\n    you are probably better off creating your own version of the tag in\n    question and giving it a different name. That way you can use it\n    selectively.\n\nRoot and login templates\n------------------------\n\nIf you wish to change the index, login or logout templates, you are better off\ncreating your own ``AdminSite`` instance (see below), and changing the\n:attr:`AdminSite.index_template` , :attr:`AdminSite.login_template` or\n:attr:`AdminSite.logout_template` properties.\n\n``AdminSite`` objects\n=====================\n\n.. class:: AdminSite(name='admin')\n\n    A Django administrative site is represented by an instance of\n    ``django.contrib.admin.sites.AdminSite``; by default, an instance of\n    this class is created as ``django.contrib.admin.site`` and you can\n    register your models and ``ModelAdmin`` instances with it.\n\n    If you'd like to set up your own administrative site with custom\n    behavior, however, you're free to subclass ``AdminSite`` and override\n    or add anything you like. Then, simply create an instance of your\n    ``AdminSite`` subclass (the same way you'd instantiate any other\n    Python class), and register your models and ``ModelAdmin`` subclasses\n    with it instead of using the default.\n\n    When constructing an instance of an ``AdminSite``, you are able to provide\n    a unique instance name using the ``name`` argument to the constructor. This\n    instance name is used to identify the instance, especially when\n    :ref:`reversing admin URLs <admin-reverse-urls>`. If no instance name is\n    provided, a default instance name of ``admin`` will be used.\n\n``AdminSite`` attributes\n------------------------\n\nTemplates can override or extend base admin templates as described in\n`Overriding Admin Templates`_.\n\n.. attribute:: AdminSite.index_template\n\n    Path to a custom template that will be used by the admin site main index\n    view.\n\n.. attribute:: AdminSite.login_template\n\n    Path to a custom template that will be used by the admin site login view.\n\n.. attribute:: AdminSite.login_form\n\n    Subclass of :class:`~django.contrib.auth.forms.AuthenticationForm` that\n    will be used by the admin site login view.\n\n.. attribute:: AdminSite.logout_template\n\n    Path to a custom template that will be used by the admin site logout view.\n\n.. attribute:: AdminSite.password_change_template\n\n    Path to a custom template that will be used by the admin site password\n    change view.\n\n.. attribute:: AdminSite.password_change_done_template\n\n    Path to a custom template that will be used by the admin site password\n    change done view.\n\nHooking ``AdminSite`` instances into your URLconf\n-------------------------------------------------\n\nThe last step in setting up the Django admin is to hook your ``AdminSite``\ninstance into your URLconf. Do this by pointing a given URL at the\n``AdminSite.urls`` method.\n\nIn this example, we register the default ``AdminSite`` instance\n``django.contrib.admin.site`` at the URL ``/admin/`` ::\n\n    # urls.py\n    from django.conf.urls import patterns, include\n    from django.contrib import admin\n\n    admin.autodiscover()\n\n    urlpatterns = patterns('',\n        (r'^admin/', include(admin.site.urls)),\n    )\n\nAbove we used ``admin.autodiscover()`` to automatically load the\n:setting:`INSTALLED_APPS` admin.py modules.\n\nIn this example, we register the ``AdminSite`` instance\n``myproject.admin.admin_site`` at the URL ``/myadmin/`` ::\n\n    # urls.py\n    from django.conf.urls import patterns, include\n    from myproject.admin import admin_site\n\n    urlpatterns = patterns('',\n        (r'^myadmin/', include(admin_site.urls)),\n    )\n\nThere is really no need to use autodiscover when using your own ``AdminSite``\ninstance since you will likely be importing all the per-app admin.py modules\nin your ``myproject.admin`` module.\n\nMultiple admin sites in the same URLconf\n----------------------------------------\n\nIt's easy to create multiple instances of the admin site on the same\nDjango-powered Web site. Just create multiple instances of ``AdminSite`` and\nroot each one at a different URL.\n\nIn this example, the URLs ``/basic-admin/`` and ``/advanced-admin/`` feature\nseparate versions of the admin site -- using the ``AdminSite`` instances\n``myproject.admin.basic_site`` and ``myproject.admin.advanced_site``,\nrespectively::\n\n    # urls.py\n    from django.conf.urls import patterns, include\n    from myproject.admin import basic_site, advanced_site\n\n    urlpatterns = patterns('',\n        (r'^basic-admin/', include(basic_site.urls)),\n        (r'^advanced-admin/', include(advanced_site.urls)),\n    )\n\n``AdminSite`` instances take a single argument to their constructor, their\nname, which can be anything you like. This argument becomes the prefix to the\nURL names for the purposes of :ref:`reversing them<admin-reverse-urls>`. This\nis only necessary if you are using more than one ``AdminSite``.\n\nAdding views to admin sites\n---------------------------\n\nJust like :class:`ModelAdmin`, :class:`AdminSite` provides a\n:meth:`~django.contrib.admin.ModelAdmin.get_urls()` method\nthat can be overridden to define additional views for the site. To add\na new view to your admin site, extend the base\n:meth:`~django.contrib.admin.ModelAdmin.get_urls()` method to include\na pattern for your new view.\n\n.. note::\n\n    Any view you render that uses the admin templates, or extends the base\n    admin template, should provide the ``current_app`` argument to\n    :class:`~django.template.RequestContext` or\n    :class:`~django.template.Context` when rendering the template.  It should\n    be set to either ``self.name`` if your view is on an ``AdminSite`` or\n    ``self.admin_site.name`` if your view is on a ``ModelAdmin``.\n\n.. _auth_password_reset:\n\nAdding a password-reset feature\n-------------------------------\n\nYou can add a password-reset feature to the admin site by adding a few lines to\nyour URLconf. Specifically, add these four patterns:\n\n.. code-block:: python\n\n    url(r'^admin/password_reset/$', 'django.contrib.auth.views.password_reset', name='admin_password_reset'),\n    (r'^admin/password_reset/done/$', 'django.contrib.auth.views.password_reset_done'),\n    (r'^reset/(?P<uidb36>[0-9A-Za-z]+)-(?P<token>.+)/$', 'django.contrib.auth.views.password_reset_confirm'),\n    (r'^reset/done/$', 'django.contrib.auth.views.password_reset_complete'),\n\n(This assumes you've added the admin at ``admin/`` and requires that you put\nthe URLs starting with ``^admin/`` before the line that includes the admin app\nitself).\n\n.. versionchanged:: 1.4\n\nThe presence of the ``admin_password_reset`` named URL will cause a \"forgotten\nyour password?\" link to appear on the default admin log-in page under the\npassword box.\n\n.. _admin-reverse-urls:\n\nReversing admin URLs\n====================\n\nWhen an :class:`AdminSite` is deployed, the views provided by that site are\naccessible using Django's :ref:`URL reversing system <naming-url-patterns>`.\n\nThe :class:`AdminSite` provides the following named URL patterns:\n\n=========================  ========================  ==================================\nPage                       URL name                  Parameters\n=========================  ========================  ==================================\nIndex                      ``index``\nLogout                     ``logout``\nPassword change            ``password_change``\nPassword change done       ``password_change_done``\ni18n javascript            ``jsi18n``\nApplication index page     ``app_list``              ``app_label``\nRedirect to object's page  ``view_on_site``          ``content_type_id``, ``object_id``\n=========================  ========================  ==================================\n\nEach :class:`ModelAdmin` instance provides an additional set of named URLs:\n\n======================  ===============================================   =============\nPage                    URL name                                          Parameters\n======================  ===============================================   =============\nChangelist              ``{{ app_label }}_{{ model_name }}_changelist``\nAdd                     ``{{ app_label }}_{{ model_name }}_add``\nHistory                 ``{{ app_label }}_{{ model_name }}_history``      ``object_id``\nDelete                  ``{{ app_label }}_{{ model_name }}_delete``       ``object_id``\nChange                  ``{{ app_label }}_{{ model_name }}_change``       ``object_id``\n======================  ===============================================   =============\n\nThese named URLs are registered with the application namespace ``admin``, and\nwith an instance namespace corresponding to the name of the Site instance.\n\nSo - if you wanted to get a reference to the Change view for a particular\n``Choice`` object (from the polls application) in the default admin, you would\ncall::\n\n    >>> from django.core import urlresolvers\n    >>> c = Choice.objects.get(...)\n    >>> change_url = urlresolvers.reverse('admin:polls_choice_change', args=(c.id,))\n\nThis will find the first registered instance of the admin application\n(whatever the instance name), and resolve to the view for changing\n``poll.Choice`` instances in that instance.\n\nIf you want to find a URL in a specific admin instance, provide the name of\nthat instance as a ``current_app`` hint to the reverse call. For example,\nif you specifically wanted the admin view from the admin instance named\n``custom``, you would need to call::\n\n    >>> change_url = urlresolvers.reverse('custom:polls_choice_change', args=(c.id,))\n\nFor more details, see the documentation on :ref:`reversing namespaced URLs\n<topics-http-reversing-url-namespaces>`.\n\n.. versionadded:: 1.4\n\nTo allow easier reversing of the admin urls in templates, Django provides an\n``admin_urlname`` filter which takes an action as argument:\n\n.. code-block:: html+django\n\n    {% load admin_urls %}\n    <a href=\"{% url opts|admin_urlname:'add' %}\">Add user</a>\n    <a href=\"{% url opts|admin_urlname:'delete' user.pk %}\">Delete this user</a>\n\nThe action in the examples above match the last part of the URL names for\n:class:`ModelAdmin` instances described above. The ``opts`` variable can be any\nobject which has an ``app_label`` and ``module_name`` and is usually supplied\nby the admin views for the current model.\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/contrib/auth.txt",
    "content": "``django.contrib.auth``\n=======================\n\nThis document provides API reference material for the components of Django's\nauthentication system. For more details on the usage of these components or\nhow to customize authentication and authorization see the :doc:`authentication\ntopic guide </topics/auth/index>`.\n\n.. currentmodule:: django.contrib.auth\n\nUser\n====\n\nFields\n------\n\n.. class:: models.User\n\n    :class:`~django.contrib.auth.models.User` objects have the following\n    fields:\n\n    .. attribute:: username\n\n        Required. 30 characters or fewer. Usernames may contain alphanumeric,\n        ``_``, ``@``, ``+``, ``.`` and ``-`` characters.\n\n    .. attribute:: first_name\n\n        Optional. 30 characters or fewer.\n\n    .. attribute:: last_name\n\n        Optional. 30 characters or fewer.\n\n    .. attribute:: email\n\n        Optional. Email address.\n\n    .. attribute:: password\n\n        Required. A hash of, and metadata about, the password. (Django doesn't\n        store the raw password.) Raw passwords can be arbitrarily long and can\n        contain any character. See the :doc:`password documentation\n        </topics/auth/passwords>`.\n\n    .. attribute:: groups\n\n        Many-to-many relationship to :class:`~django.contrib.auth.models.Group`\n\n    .. attribute:: user_permissions\n\n         Many-to-many relationship to :class:`~django.contrib.auth.models.Permission`\n\n    .. attribute:: is_staff\n\n        Boolean. Designates whether this user can access the admin site.\n\n    .. attribute:: is_active\n\n        Boolean. Designates whether this user account should be considered\n        active. We recommend that you set this flag to ``False`` instead of\n        deleting accounts; that way, if your applications have any foreign keys\n        to users, the foreign keys won't break.\n\n        This doesn't necessarily control whether or not the user can log in.\n        Authentication backends aren't required to check for the ``is_active``\n        flag, and the default backends do not. If you want to reject a login\n        based on ``is_active`` being ``False``, it's up to you to check that in\n        your own login view or a custom authentication backend. However, the\n        :class:`~django.contrib.auth.forms.AuthenticationForm` used by the\n        :func:`~django.contrib.auth.views.login` view (which is the default)\n        *does* perform this check, as do the permission-checking methods such\n        as :meth:`~django.contrib.auth.models.User.has_perm` and the\n        authentication in the Django admin. All of those functions/methods will\n        return ``False`` for inactive users.\n\n    .. attribute:: is_superuser\n\n        Boolean. Designates that this user has all permissions without\n        explicitly assigning them.\n\n    .. attribute:: last_login\n\n        A datetime of the user's last login. Is set to the current date/time by\n        default.\n\n    .. attribute:: date_joined\n\n        A datetime designating when the account was created. Is set to the\n        current date/time by default when the account is created.\n\nMethods\n-------\n\n.. class:: models.User\n\n    .. method:: get_username()\n\n        Returns the username for the user. Since the User model can be swapped\n        out, you should use  this method instead of referencing the username\n        attribute directly.\n\n    .. method:: is_anonymous()\n\n        Always returns ``False``. This is a way of differentiating\n        :class:`~django.contrib.auth.models.User` and\n        :class:`~django.contrib.auth.models.AnonymousUser` objects.\n        Generally, you should prefer using\n        :meth:`~django.contrib.auth.models.User.is_authenticated()` to this\n        method.\n\n    .. method:: is_authenticated()\n\n        Always returns ``True``. This is a way to tell if the user has been\n        authenticated. This does not imply any permissions, and doesn't check\n        if the user is active - it only indicates that the user has provided a\n        valid username and password.\n\n    .. method:: get_full_name()\n\n        Returns the :attr:`~django.contrib.auth.models.User.first_name` plus\n        the :attr:`~django.contrib.auth.models.User.last_name`, with a space in\n        between.\n\n    .. method:: set_password(raw_password)\n\n        Sets the user's password to the given raw string, taking care of the\n        password hashing. Doesn't save the\n        :class:`~django.contrib.auth.models.User` object.\n\n    .. method:: check_password(raw_password)\n\n        Returns ``True`` if the given raw string is the correct password for\n        the user. (This takes care of the password hashing in making the\n        comparison.)\n\n    .. method:: set_unusable_password()\n\n        Marks the user as having no password set.  This isn't the same as\n        having a blank string for a password.\n        :meth:`~django.contrib.auth.models.User.check_password()` for this user\n        will never return ``True``. Doesn't save the\n        :class:`~django.contrib.auth.models.User` object.\n\n        You may need this if authentication for your application takes place\n        against an existing external source such as an LDAP directory.\n\n    .. method:: has_usable_password()\n\n        Returns ``False`` if\n        :meth:`~django.contrib.auth.models.User.set_unusable_password()` has\n        been called for this user.\n\n    .. method:: get_group_permissions(obj=None)\n\n        Returns a set of permission strings that the user has, through his/her\n        groups.\n\n        If ``obj`` is passed in, only returns the group permissions for\n        this specific object.\n\n    .. method:: get_all_permissions(obj=None)\n\n        Returns a set of permission strings that the user has, both through\n        group and user permissions.\n\n        If ``obj`` is passed in, only returns the permissions for this\n        specific object.\n\n    .. method:: has_perm(perm, obj=None)\n\n        Returns ``True`` if the user has the specified permission, where perm\n        is in the format ``\"<app label>.<permission codename>\"``. (see\n        documentation on :ref:`permissions <topic-authorization>`). If the user is\n        inactive, this method will always return ``False``.\n\n        If ``obj`` is passed in, this method won't check for a permission for\n        the model, but for this specific object.\n\n    .. method:: has_perms(perm_list, obj=None)\n\n        Returns ``True`` if the user has each of the specified permissions,\n        where each perm is in the format\n        ``\"<app label>.<permission codename>\"``. If the user is inactive,\n        this method will always return ``False``.\n\n        If ``obj`` is passed in, this method won't check for permissions for\n        the model, but for the specific object.\n\n    .. method:: has_module_perms(package_name)\n\n        Returns ``True`` if the user has any permissions in the given package\n        (the Django app label). If the user is inactive, this method will\n        always return ``False``.\n\n    .. method:: email_user(subject, message, from_email=None)\n\n        Sends an email to the user. If ``from_email`` is ``None``, Django uses\n        the :setting:`DEFAULT_FROM_EMAIL`.\n\n    .. method:: get_profile()\n\n        .. deprecated:: 1.5\n            With the introduction of :ref:`custom User models <auth-custom-user>`,\n            the use of :setting:`AUTH_PROFILE_MODULE` to define a single profile\n            model is no longer supported. See the\n            :doc:`Django 1.5 release notes</releases/1.5>` for more information.\n\n        Returns a site-specific profile for this user. Raises\n        ``django.contrib.auth.models.SiteProfileNotAvailable`` if the\n        current site doesn't allow profiles, or\n        :exc:`django.core.exceptions.ObjectDoesNotExist` if the user does not\n        have a profile.\n\nManager methods\n---------------\n\n.. class:: models.UserManager\n\n    The :class:`~django.contrib.auth.models.User` model has a custom manager\n    that has the following helper methods (in addition to the methods provided\n    by :class:`~django.contrib.auth.models.BaseUserManager`):\n\n    .. method:: create_user(username, email=None, password=None, **extra_fields)\n\n        .. versionchanged:: 1.4\n           The ``email`` parameter was made optional. The username\n           parameter is now checked for emptiness and raises a\n           :exc:`~exceptions.ValueError` in case of a negative result.\n\n        Creates, saves and returns a :class:`~django.contrib.auth.models.User`.\n\n        The :attr:`~django.contrib.auth.models.User.username` and\n        :attr:`~django.contrib.auth.models.User.password` are set as given. The\n        domain portion of :attr:`~django.contrib.auth.models.User.email` is\n        automatically converted to lowercase, and the returned\n        :class:`~django.contrib.auth.models.User` object will have\n        :attr:`~django.contrib.auth.models.User.is_active` set to ``True``.\n\n        If no password is provided,\n        :meth:`~django.contrib.auth.models.User.set_unusable_password()` will\n        be called.\n\n        The ``extra_fields`` keyword arguments are passed through to the\n        :class:`~django.contrib.auth.models.User`'s ``__init__`` method to\n        allow setting arbitrary fields on a :ref:`custom User model\n        <auth-custom-user>`.\n\n        See :ref:`Creating users <topics-auth-creating-users>` for example usage.\n\n    .. method:: create_superuser(self, username, email, password, **extra_fields)\n\n        Same as :meth:`create_user`, but sets :attr:`~models.User.is_staff` and\n        :attr:`~models.User.is_superuser` to ``True``.\n\n\nAnonymous users\n===============\n\n.. class:: models.AnonymousUser\n\n    :class:`django.contrib.auth.models.AnonymousUser` is a class that\n    implements the :class:`django.contrib.auth.models.User` interface, with\n    these differences:\n\n    * :ref:`id <automatic-primary-key-fields>` is always ``None``.\n    * :attr:`~django.contrib.auth.models.User.is_staff` and\n      :attr:`~django.contrib.auth.models.User.is_superuser` are always\n      ``False``.\n    * :attr:`~django.contrib.auth.models.User.is_active` is always ``False``.\n    * :attr:`~django.contrib.auth.models.User.groups` and\n      :attr:`~django.contrib.auth.models.User.user_permissions` are always\n      empty.\n    * :meth:`~django.contrib.auth.models.User.is_anonymous()` returns ``True``\n      instead of ``False``.\n    * :meth:`~django.contrib.auth.models.User.is_authenticated()` returns\n      ``False`` instead of ``True``.\n    * :meth:`~django.contrib.auth.models.User.set_password()`,\n      :meth:`~django.contrib.auth.models.User.check_password()`,\n      :meth:`~django.db.models.Model.save` and\n      :meth:`~django.db.models.Model.delete()` raise\n      :exc:`~exceptions.NotImplementedError`.\n\nIn practice, you probably won't need to use\n:class:`~django.contrib.auth.models.AnonymousUser` objects on your own, but\nthey're used by Web requests, as explained in the next section.\n\nPermission\n==========\n\n.. class:: models.Permission\n\nFields\n------\n\n:class:`~django.contrib.auth.models.Permission` objects have the following\nfields:\n\n.. attribute:: name\n\n    Required. 50 characters or fewer. Example: ``'Can vote'``.\n\n.. attribute:: content_type\n\n    Required. A reference to the ``django_content_type`` database table, which\n    contains a record for each installed Django model.\n\n.. attribute:: codename\n\n    Required. 100 characters or fewer. Example: ``'can_vote'``.\n\nMethods\n-------\n\n:class:`~django.contrib.auth.models.Permission` objects have the standard\ndata-access methods like any other :doc:`Django model </ref/models/instances>`.\n\nGroup\n=====\n\n.. class:: models.Group\n\nFields\n------\n\n:class:`~django.contrib.auth.models.Group` objects have the following fields:\n\n.. attribute:: name\n\n    Required. 80 characters or fewer. Any characters are permitted. Example:\n    ``'Awesome Users'``.\n\n.. attribute:: permissions\n\n    Many-to-many field to :class:`~django.contrib.auth.models.Permission`::\n\n        group.permissions = [permission_list]\n        group.permissions.add(permission, permission, ...)\n        group.permissions.remove(permission, permission, ...)\n        group.permissions.clear()\n\n.. _topics-auth-signals:\n\nLogin and logout signals\n========================\n\n.. module:: django.contrib.auth.signals\n\nThe auth framework uses the following :doc:`signals </topics/signals>` that\ncan be used for notification when a user logs in or out.\n\n.. function:: user_logged_in\n\n    Sent when a user logs in successfully.\n\n    Arguments sent with this signal:\n\n    ``sender``\n        The class of the user that just logged in.\n\n    ``request``\n        The current :class:`~django.http.HttpRequest` instance.\n\n    ``user``\n        The user instance that just logged in.\n\n.. function:: user_logged_out\n\n    Sent when the logout method is called.\n\n    ``sender``\n        As above: the class of the user that just logged out or ``None``\n        if the user was not authenticated.\n\n    ``request``\n        The current :class:`~django.http.HttpRequest` instance.\n\n    ``user``\n        The user instance that just logged out or ``None`` if the\n        user was not authenticated.\n\n.. function:: user_login_failed\n\n    .. versionadded:: 1.5\n\n    Sent when the user failed to login successfully\n\n    ``sender``\n        The name of the module used for authentication.\n\n    ``credentials``\n        A dictionary of keyword arguments containing the user credentials that were\n        passed to :func:`~django.contrib.auth.authenticate()` or your own custom\n        authentication backend. Credentials matching a set of 'sensitive' patterns,\n        (including password) will not be sent in the clear as part of the signal.\n\n.. _authentication-backends-reference:\n\nAuthentication backends\n=======================\n\n.. module:: django.contrib.auth.backends\n   :synopsis: Django's built-in authentication backend classes.\n\nThis section details the authentication backends that come with Django. For\ninformation on how to use them and how to write your own authentication\nbackends, see the :ref:`Other authentication sources section\n<authentication-backends>` of the :doc:`User authentication guide\n</topics/auth/index>`.\n\n\nAvailable authentication backends\n---------------------------------\n\nThe following backends are available in :mod:`django.contrib.auth.backends`:\n\n.. class:: ModelBackend\n\n    This is the default authentication backend used by Django.  It\n    authenticates using credentials consisting of a user identifier and\n    password.  For Django's default user model, the user identifier is the\n    username, for custom user models it is the field specified by\n    USERNAME_FIELD (see :doc:`Customizing Users and authentication\n    </topics/auth/customizing>`).\n\n    It also handles the default permissions model as defined for\n    :class:`~django.contrib.auth.models.User` and\n    :class:`~django.contrib.auth.models.PermissionsMixin`.\n\n.. class:: RemoteUserBackend\n\n    Use this backend to take advantage of external-to-Django-handled\n    authentication.  It authenticates using usernames passed in\n    :attr:`request.META['REMOTE_USER'] <django.http.HttpRequest.META>`.  See\n    the :doc:`Authenticating against REMOTE_USER </howto/auth-remote-user>`\n    documentation.\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/contrib/comments/custom.txt",
    "content": "==================================\nCustomizing the comments framework\n==================================\n\n.. currentmodule:: django.contrib.comments\n\nIf the built-in comment framework doesn't quite fit your needs, you can extend\nthe comment app's behavior to add custom data and logic. The comments framework\nlets you extend the built-in comment model, the built-in comment form, and the\nvarious comment views.\n\nThe :setting:`COMMENTS_APP` setting is where this customization begins. Set\n:setting:`COMMENTS_APP` to the name of the app you'd like to use to provide\ncustom behavior. You'll use the same syntax as you'd use for\n:setting:`INSTALLED_APPS`, and the app given must also be in the\n:setting:`INSTALLED_APPS` list.\n\nFor example, if you wanted to use an app named ``my_comment_app``, your\nsettings file would contain::\n\n    INSTALLED_APPS = [\n        ...\n        'my_comment_app',\n        ...\n    ]\n\n    COMMENTS_APP = 'my_comment_app'\n\nThe app named in :setting:`COMMENTS_APP` provides its custom behavior by\ndefining some module-level functions in the app's ``__init__.py``. The\n:ref:`complete list of these functions <custom-comment-app-api>` can be found\nbelow, but first let's look at a quick example.\n\nAn example custom comments app\n==============================\n\nOne of the most common types of customization is modifying the set of fields\nprovided on the built-in comment model. For example, some sites that allow\ncomments want the commentator to provide a title for their comment; the built-in\ncomment model has no field for that title.\n\nTo make this kind of customization, we'll need to do three things:\n\n#. Create a custom comment :class:`~django.db.models.Model` that adds on the\n   \"title\" field.\n\n#. Create a custom comment :class:`~django.forms.Form` that also adds this\n   \"title\" field.\n\n#. Inform Django of these objects by defining a few functions in a\n   custom :setting:`COMMENTS_APP`.\n\nSo, carrying on the example above, we're dealing with a typical app structure in\nthe ``my_comment_app`` directory::\n\n    my_comment_app/\n        __init__.py\n        models.py\n        forms.py\n\nIn the ``models.py`` we'll define a ``CommentWithTitle`` model::\n\n    from django.db import models\n    from django.contrib.comments.models import Comment\n\n    class CommentWithTitle(Comment):\n        title = models.CharField(max_length=300)\n\nMost custom comment models will subclass the\n:class:`~django.contrib.comments.models.Comment` model. However,\nif you want to substantially remove or change the fields available in the\n:class:`~django.contrib.comments.models.Comment` model, but don't want to\nrewrite the templates, you could try subclassing from\n``BaseCommentAbstractModel``.\n\nNext, we'll define a custom comment form in ``forms.py``. This is a little more\ntricky: we have to both create a form and override\n``CommentForm.get_comment_model()`` and\n``CommentForm.get_comment_create_data()`` to return deal with our custom title\nfield::\n\n    from django import forms\n    from django.contrib.comments.forms import CommentForm\n    from my_comment_app.models import CommentWithTitle\n\n    class CommentFormWithTitle(CommentForm):\n        title = forms.CharField(max_length=300)\n\n        def get_comment_model(self):\n            # Use our custom comment model instead of the built-in one.\n            return CommentWithTitle\n\n        def get_comment_create_data(self):\n            # Use the data of the superclass, and add in the title field\n            data = super(CommentFormWithTitle, self).get_comment_create_data()\n            data['title'] = self.cleaned_data['title']\n            return data\n\nDjango provides a couple of \"helper\" classes to make writing certain types of\ncustom comment forms easier; see :mod:`django.contrib.comments.forms` for\nmore.\n\nFinally, we'll define a couple of methods in ``my_comment_app/__init__.py`` to\npoint Django at these classes we've created::\n\n    from my_comment_app.models import CommentWithTitle\n    from my_comment_app.forms import CommentFormWithTitle\n\n    def get_model():\n        return CommentWithTitle\n\n    def get_form():\n        return CommentFormWithTitle\n\n\n.. warning::\n\n    Be careful not to create cyclic imports in your custom comments app.\n    If you feel your comment configuration isn't being used as defined --\n    for example, if your comment moderation policy isn't being applied --\n    you may have a cyclic import problem.\n\n    If you are having unexplained problems with comments behavior, check\n    if your custom comments application imports (even indirectly)\n    any module that itself imports Django's comments module.\n\nThe above process should take care of most common situations. For more\nadvanced usage, there are additional methods you can define. Those are\nexplained in the next section.\n\n.. _custom-comment-app-api:\n\nCustom comment app API\n======================\n\nThe :mod:`django.contrib.comments` app defines the following methods; any\ncustom comment app must define at least one of them. All are optional,\nhowever.\n\n.. function:: get_model()\n\n    Return the :class:`~django.db.models.Model` class to use for comments. This\n    model should inherit from\n    ``django.contrib.comments.models.BaseCommentAbstractModel``, which\n    defines necessary core fields.\n\n    The default implementation returns\n    :class:`django.contrib.comments.models.Comment`.\n\n.. function:: get_form()\n\n    Return the :class:`~django.forms.Form` class you want to use for\n    creating, validating, and saving your comment model.  Your custom\n    comment form should accept an additional first argument,\n    ``target_object``, which is the object the comment will be\n    attached to.\n\n    The default implementation returns\n    :class:`django.contrib.comments.forms.CommentForm`.\n\n    .. note::\n\n        The default comment form also includes a number of unobtrusive\n        spam-prevention features (see\n        :ref:`notes-on-the-comment-form`).  If replacing it with your\n        own form, you may want to look at the source code for the\n        built-in form and consider incorporating similar features.\n\n.. function:: get_form_target()\n\n    Return the URL for POSTing comments. This will be the ``<form action>``\n    attribute when rendering your comment form.\n\n    The default implementation returns a reverse-resolved URL pointing\n    to the ``post_comment()`` view.\n\n    .. note::\n\n        If you provide a custom comment model and/or form, but you\n        want to use the default ``post_comment()`` view, you will\n        need to be aware that it requires the model and form to have\n        certain additional attributes and methods: see the\n        ``django.contrib.comments.views.post_comment()`` view for details.\n\n.. function:: get_flag_url()\n\n    Return the URL for the \"flag this comment\" view.\n\n    The default implementation returns a reverse-resolved URL pointing\n    to the ``django.contrib.comments.views.moderation.flag()`` view.\n\n.. function:: get_delete_url()\n\n    Return the URL for the \"delete this comment\" view.\n\n    The default implementation returns a reverse-resolved URL pointing\n    to the ``django.contrib.comments.views.moderation.delete()`` view.\n\n.. function:: get_approve_url()\n\n    Return the URL for the \"approve this comment from moderation\" view.\n\n    The default implementation returns a reverse-resolved URL pointing\n    to the ``django.contrib.comments.views.moderation.approve()`` view.\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/contrib/comments/example.txt",
    "content": ".. highlightlang:: html+django\n\n===========================================\nExample of using the built-in comments app\n===========================================\n\nFollow the first three steps of the quick start guide in the\n:doc:`documentation </ref/contrib/comments/index>`.\n\nNow suppose, you have an app (``blog``) with a model (``Post``)\nto which you want to attach comments. Let's also suppose that\nyou have a template called ``blog_detail.html`` where you want\nto display the comments list and comment form.\n\nTemplate\n========\n\nFirst, we should load the ``comment`` template tags in the\n``blog_detail.html`` so that we can use its functionality. So\njust like all other custom template tag libraries::\n\n    {% load comments %}\n\nNext, let's add the number of comments attached to the particular\nmodel instance of ``Post``. For this we assume that a context\nvariable ``object_pk`` is present which gives the ``id`` of the\ninstance of ``Post``.\n\nThe usage of the :ttag:`get_comment_count` tag is like below::\n\n   {% get_comment_count for blog.post object_pk as comment_count %}\n   <p>{{ comment_count }} comments have been posted.</p>\n\nIf you have the instance (say ``entry``) of the model (``Post``)\navailable in the context, then you can refer to it directly::\n\n   {% get_comment_count for entry as comment_count %}\n   <p>{{ comment_count }} comments have been posted.</p>\n\nNext, we can use the :ttag:`render_comment_list` tag, to render all comments\nto the given instance (``entry``) by using the ``comments/list.html`` template::\n\n   {% render_comment_list for entry %}\n\nDjango will will look for the ``list.html`` under the following directories\n(for our example)::\n\n  comments/blog/post/list.html\n  comments/blog/list.html\n  comments/list.html\n\nTo get a list of comments, we make use of the :ttag:`get_comment_list` tag.\nUsing this tag is very similar to the :ttag:`get_comment_count` tag. We\nneed to remember that :ttag:`get_comment_list` returns a list of comments\nand hence we have to iterate through them to display them::\n\n   {% get_comment_list for blog.post object_pk as comment_list %}\n   {% for comment in comment_list %}\n   <p>Posted by: {{ comment.user_name }} on {{ comment.submit_date }}</p>\n   ...\n   <p>Comment: {{ comment.comment }}</p>\n   ...\n   {% endfor %}\n\nFinally, we display the comment form, enabling users to enter their\ncomments. There are two ways of doing so. The first is when you want to\ndisplay the comments template available under your ``comments/form.html``.\nThe other method gives you a chance to customize the form.\n\nThe first method makes use of the :ttag:`render_comment_form` tag. Its usage\ntoo is similar to the other three tags we have discussed above::\n\n   {% render_comment_form for entry %}\n\nIt looks for the ``form.html`` under the following directories\n(for our example)::\n\n   comments/blog/post/form.html\n   comments/blog/form.html\n   comments/form.html\n\nSince we customize the form in the second method, we make use of another\ntag called :ttag:`comment_form_target`. This tag on rendering gives the URL\nwhere the comment form is posted. Without any :doc:`customization\n</ref/contrib/comments/custom>`, :ttag:`comment_form_target` evaluates to\n``/comments/post/``. We use this tag in the form's ``action`` attribute.\n\nThe :ttag:`get_comment_form` tag renders a ``form`` for a model instance by\ncreating a context variable. One can iterate over the ``form`` object to\nget individual fields. This gives you fine-grain control over the form::\n\n  {% for field in form %}\n  {% ifequal field.name \"comment\" %}\n    <!-- Customize the \"comment\" field, say, make CSS changes -->\n  ...\n  {% endfor %}\n\nBut let's look at a simple example::\n\n  {% get_comment_form for entry as form %}\n  <!-- A context variable called form is created with the necessary hidden\n  fields, timestamps and security hashes -->\n  <table>\n    <form action=\"{% comment_form_target %}\" method=\"post\">\n      {% csrf_token %}\n      {{ form }}\n      <tr>\n        <td colspan=\"2\">\n          <input type=\"submit\" name=\"submit\" value=\"Post\">\n          <input type=\"submit\" name=\"preview\" value=\"Preview\">\n        </td>\n      </tr>\n    </form>\n  </table>\n\nFlagging\n========\n\nIf you want your users to be able to flag comments (say for profanity), you\ncan just direct them (by placing a link in your comment list) to ``/flag/{{\ncomment.id }}/``. Similarly, a user with requisite permissions (``\"Can\nmoderate comments\"``) can approve and delete comments. This can also be\ndone through the ``admin`` as you'll see later. You might also want to\ncustomize the following templates:\n\n* ``flag.html``\n* ``flagged.html``\n* ``approve.html``\n* ``approved.html``\n* ``delete.html``\n* ``deleted.html``\n\nfound under the directory structure we saw for ``form.html``.\n\nFeeds\n=====\n\nSuppose you want to export a :doc:`feed </ref/contrib/syndication>` of the\nlatest comments, you can use the built-in ``LatestCommentFeed``. Just\nenable it in your project's ``urls.py``:\n\n.. code-block:: python\n\n  from django.conf.urls import patterns\n  from django.contrib.comments.feeds import LatestCommentFeed\n\n  urlpatterns = patterns('',\n  # ...\n      (r'^feeds/latest/$', LatestCommentFeed()),\n  # ...\n  )\n\nNow you should have the latest comment feeds being served off ``/feeds/latest/``.\n\n\nModeration\n==========\n\nNow that we have the comments framework working, we might want to have some\nmoderation setup to administer the comments. The comments framework comes\nbuilt-in with :doc:`generic comment moderation\n</ref/contrib/comments/moderation>`. The comment moderation has the following\nfeatures (all of which or only certain can be enabled):\n\n* Enable comments for a particular model instance.\n* Close comments after a particular (user-defined) number of days.\n* Email new comments to the site-staff.\n\nTo enable comment moderation, we subclass the ``CommentModerator`` and\nregister it with the moderation features we want. Let's suppose we want to\nclose comments after 7 days of posting and also send out an email to the\nsite staff. In ``blog/models.py``, we register a comment moderator in the\nfollowing way:\n\n.. code-block:: python\n\n   from django.contrib.comments.moderation import CommentModerator, moderator\n   from django.db import models\n\n   class Post(models.Model):\n       title   = models.CharField(max_length = 255)\n       content = models.TextField()\n       posted_date = models.DateTimeField()\n\n   class PostModerator(CommentModerator):\n       email_notification = True\n       auto_close_field   = 'posted_date'\n       # Close the comments after 7 days.\n       close_after        = 7\n\n   moderator.register(Post, PostModerator)\n\nThe generic comment moderation also has the facility to remove comments.\nThese comments can then be moderated by any user who has access to the\n``admin`` site and the ``Can moderate comments`` permission (can be set\nunder the ``Users`` page in the ``admin``).\n\nThe moderator can ``Flag``, ``Approve`` or ``Remove`` comments using the\n``Action`` drop-down in the ``admin`` under the ``Comments`` page.\n\n.. note::\n\n     Only a super-user will be able to delete comments from the database.\n     ``Remove Comments`` only sets the ``is_public`` attribute to\n     ``False``.\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/contrib/comments/forms.txt",
    "content": "====================\nComment form classes\n====================\n\n.. module:: django.contrib.comments.forms\n   :synopsis: Forms for dealing with the built-in comment model.\n\nThe ``django.contrib.comments.forms`` module contains a handful of forms\nyou'll use when writing custom views dealing with comments, or when writing\n:doc:`custom comment apps </ref/contrib/comments/custom>`.\n\n.. class:: CommentForm\n\n   The main comment form representing the standard, built-in way of handling\n   submitted comments. This is the class used by all the views\n   :mod:`django.contrib.comments` to handle submitted comments.\n\n   If you want to build custom views that are similar to Django's built-in\n   comment handling views, you'll probably want to use this form.\n\nAbstract comment forms for custom comment apps\n----------------------------------------------\n\nIf you're building a :doc:`custom comment app </ref/contrib/comments/custom>`,\nyou might want to replace *some* of the form logic but still rely on parts of\nthe existing form.\n\n:class:`CommentForm` is actually composed of a couple of abstract base class\nforms that you can subclass to reuse pieces of the form handling logic:\n\n.. class:: CommentSecurityForm\n\n   Handles the anti-spoofing protection aspects of the comment form handling.\n\n   This class contains the ``content_type`` and ``object_pk`` fields pointing\n   to the object the comment is attached to, along with a ``timestamp`` and a\n   ``security_hash`` of all the form data. Together, the timestamp and the\n   security hash ensure that spammers can't \"replay\" form submissions and\n   flood you with comments.\n\n.. class:: CommentDetailsForm\n\n   Handles the details of the comment itself.\n\n   This class contains the ``name``, ``email``, ``url``, and the ``comment``\n   field itself, along with the associated validation logic."
  },
  {
    "path": "Django-1.5.1/docs/ref/contrib/comments/index.txt",
    "content": "===========================\nDjango's comments framework\n===========================\n\n.. module:: django.contrib.comments\n   :synopsis: Django's comment framework\n\n.. highlightlang:: html+django\n\nDjango includes a simple, yet customizable comments framework. The built-in\ncomments framework can be used to attach comments to any model, so you can use\nit for comments on blog entries, photos, book chapters, or anything else.\n\nQuick start guide\n=================\n\nTo get started using the ``comments`` app, follow these steps:\n\n#. Install the comments framework by adding ``'django.contrib.comments'`` to\n   :setting:`INSTALLED_APPS`.\n\n#. Run ``manage.py syncdb`` so that Django will create the comment tables.\n\n#. Add the comment app's URLs to your project's ``urls.py``:\n\n   .. code-block:: python\n\n        urlpatterns = patterns('',\n            ...\n            (r'^comments/', include('django.contrib.comments.urls')),\n            ...\n        )\n\n#. Use the `comment template tags`_ below to embed comments in your\n   templates.\n\nYou might also want to examine :doc:`/ref/contrib/comments/settings`.\n\nComment template tags\n=====================\n\nYou'll primarily interact with the comment system through a series of template\ntags that let you embed comments and generate forms for your users to post them.\n\nLike all custom template tag libraries, you'll need to :ref:`load the custom\ntags <loading-custom-template-libraries>` before you can use them::\n\n    {% load comments %}\n\nOnce loaded you can use the template tags below.\n\nSpecifying which object comments are attached to\n------------------------------------------------\n\nDjango's comments are all \"attached\" to some parent object. This can be any\ninstance of a Django model. Each of the tags below gives you a couple of\ndifferent ways you can specify which object to attach to:\n\n#. Refer to the object directly -- the more common method. Most of the\n   time, you'll have some object in the template's context you want\n   to attach the comment to; you can simply use that object.\n\n   For example, in a blog entry page that has a variable named ``entry``,\n   you could use the following to load the number of comments::\n\n        {% get_comment_count for entry as comment_count %}.\n\n#. Refer to the object by content-type and object id. You'd use this method\n   if you, for some reason, don't actually have direct access to the object.\n\n   Following the above example, if you knew the object ID was ``14`` but\n   didn't have access to the actual object, you could do something like::\n\n        {% get_comment_count for blog.entry 14 as comment_count %}\n\n   In the above, ``blog.entry`` is the app label and (lower-cased) model\n   name of the model class.\n\nDisplaying comments\n-------------------\n\nTo display a list of comments, you can use the template tags\n:ttag:`render_comment_list` or :ttag:`get_comment_list`.\n\n.. templatetag:: render_comment_list\n\nQuickly rendering a comment list\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe easiest way to display a list of comments for some object is by using\n:ttag:`render_comment_list`::\n\n    {% render_comment_list for [object] %}\n\nFor example::\n\n    {% render_comment_list for event %}\n\nThis will render comments using a template named ``comments/list.html``, a\ndefault version of which is included with Django.\n\n.. templatetag:: get_comment_list\n\nRendering a custom comment list\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nTo get the list of comments for some object, use :ttag:`get_comment_list`::\n\n    {% get_comment_list for [object] as [varname] %}\n\nFor example::\n\n    {% get_comment_list for event as comment_list %}\n    {% for comment in comment_list %}\n        ...\n    {% endfor %}\n\nThis returns a list of :class:`~django.contrib.comments.models.Comment` objects;\nsee :doc:`the comment model documentation </ref/contrib/comments/models>` for\ndetails.\n\n.. templatetag:: get_comment_permalink\n\nLinking to comments\n-------------------\n\nTo provide a permalink to a specific comment, use :ttag:`get_comment_permalink`::\n\n    {% get_comment_permalink comment_obj [format_string] %}\n\nBy default, the named anchor that will be appended to the URL will be the letter\n'c' followed by the comment id, for example 'c82'. You may specify a custom\nformat string if you wish to override this behavior::\n\n    {% get_comment_permalink comment \"#c%(id)s-by-%(user_name)s\"%}\n\nThe format string is a standard python format string. Valid mapping keys\ninclude any attributes of the comment object.\n\nRegardless of whether you specify a custom anchor pattern, you must supply a\nmatching named anchor at a suitable place in your template.\n\nFor example::\n\n    {% for comment in comment_list %}\n        <a name=\"c{{ comment.id }}\"></a>\n        <a href=\"{% get_comment_permalink comment %}\">\n            permalink for comment #{{ forloop.counter }}\n        </a>\n        ...\n    {% endfor %}\n\n.. warning::\n\n    There's a `known bug`_ in Safari/Webkit which causes the named anchor to be\n    forgotten following a redirect. The practical impact for comments is that\n    the Safari/webkit browsers will arrive at the correct page but will not\n    scroll to the named anchor.\n\n.. _`known bug`: https://bugs.webkit.org/show_bug.cgi?id=24175\n\n.. templatetag:: get_comment_count\n\nCounting comments\n-----------------\n\nTo count comments attached to an object, use :ttag:`get_comment_count`::\n\n    {% get_comment_count for [object] as [varname]  %}\n\nFor example::\n\n        {% get_comment_count for event as comment_count %}\n\n        <p>This event has {{ comment_count }} comments.</p>\n\n\nDisplaying the comment post form\n--------------------------------\n\nTo show the form that users will use to post a comment, you can use\n:ttag:`render_comment_form` or :ttag:`get_comment_form`\n\n.. templatetag:: render_comment_form\n\nQuickly rendering the comment form\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe easiest way to display a comment form is by using\n:ttag:`render_comment_form`::\n\n    {% render_comment_form for [object] %}\n\nFor example::\n\n    {% render_comment_form for event %}\n\nThis will render comments using a template named ``comments/form.html``, a\ndefault version of which is included with Django.\n\n.. templatetag:: get_comment_form\n\nRendering a custom comment form\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nIf you want more control over the look and feel of the comment form, you may use\n:ttag:`get_comment_form` to get a :doc:`form object </topics/forms/index>` that\nyou can use in the template::\n\n    {% get_comment_form for [object] as [varname] %}\n\nA complete form might look like::\n\n    {% get_comment_form for event as form %}\n    <table>\n      <form action=\"{% comment_form_target %}\" method=\"post\">\n        {% csrf_token %}\n        {{ form }}\n        <tr>\n          <td colspan=\"2\">\n            <input type=\"submit\" name=\"submit\" value=\"Post\">\n            <input type=\"submit\" name=\"preview\" value=\"Preview\">\n          </td>\n        </tr>\n      </form>\n    </table>\n\nBe sure to read the `notes on the comment form`_, below, for some special\nconsiderations you'll need to make if you're using this approach.\n\n.. templatetag:: comment_form_target\n\nGetting the comment form target\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nYou may have noticed that the above example uses another template tag --\n:ttag:`comment_form_target` -- to actually get the ``action`` attribute of the\nform. This will always return the correct URL that comments should be posted to;\nyou'll always want to use it like above::\n\n    <form action=\"{% comment_form_target %}\" method=\"post\">\n\nRedirecting after the comment post\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nTo specify the URL you want to redirect to after the comment has been posted,\nyou can include a hidden form input called ``next`` in your comment form. For example::\n\n    <input type=\"hidden\" name=\"next\" value=\"{% url 'my_comment_was_posted' %}\" />\n\nProviding a comment form for authenticated users\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nIf a user is already authenticated, it makes little sense to display the name,\nemail, and URL fields, since these can already be retrieved from their login\ndata and profile. In addition, some sites will only accept comments from\nauthenticated users.\n\nTo provide a comment form for authenticated users, you can manually provide the\nadditional fields expected by the Django comments framework. For example,\nassuming comments are attached to the model \"object\"::\n\n    {% if user.is_authenticated %}\n        {% get_comment_form for object as form %}\n        <form action=\"{% comment_form_target %}\" method=\"POST\">\n        {% csrf_token %}\n        {{ form.comment }}\n        {{ form.honeypot }}\n        {{ form.content_type }}\n        {{ form.object_pk }}\n        {{ form.timestamp }}\n        {{ form.security_hash }}\n        <input type=\"hidden\" name=\"next\" value=\"{% url 'object_detail_view' object.id %}\" />\n        <input type=\"submit\" value=\"Add comment\" id=\"id_submit\" />\n        </form>\n    {% else %}\n        <p>Please <a href=\"{% url 'auth_login' %}\">log in</a> to leave a comment.</p>\n    {% endif %}\n\nThe honeypot, content_type, object_pk, timestamp, and security_hash fields are\nfields that would have been created automatically if you had simply used\n``{{ form }}`` in your template, and are referred to in `Notes on the comment\nform`_ below.\n\nNote that we do not need to specify the user to be associated with comments\nsubmitted by authenticated users. This is possible because the :doc:`Built-in\nComment Models</ref/contrib/comments/models>` that come with Django associate\ncomments with authenticated users by default.\n\nIn this example, the honeypot field will still be visible to the user; you'll\nneed to hide that field in your CSS::\n\n    #id_honeypot {\n        display: none;\n    }\n\nIf you want to accept either anonymous or authenticated comments, replace the\ncontents of the \"else\" clause above with a standard comment form and the right\nthing will happen whether a user is logged in or not.\n\n.. _notes-on-the-comment-form:\n\nNotes on the comment form\n-------------------------\n\nThe form used by the comment system has a few important anti-spam attributes you\nshould know about:\n\n* It contains a number of hidden fields that contain timestamps, information\n  about the object the comment should be attached to, and a \"security hash\"\n  used to validate this information. If someone tampers with this data --\n  something comment spammers will try -- the comment submission will fail.\n\n  If you're rendering a custom comment form, you'll need to make sure to\n  pass these values through unchanged.\n\n* The timestamp is used to ensure that \"reply attacks\" can't continue very\n  long. Users who wait too long between requesting the form and posting a\n  comment will have their submissions refused.\n\n* The comment form includes a \"honeypot_\" field. It's a trap: if any data is\n  entered in that field, the comment will be considered spam (spammers often\n  automatically fill in all fields in an attempt to make valid submissions).\n\n  The default form hides this field with a piece of CSS and further labels\n  it with a warning field; if you use the comment form with a custom\n  template you should be sure to do the same.\n\nThe comments app also depends on the more general :doc:`Cross Site Request\nForgery protection </ref/contrib/csrf>` that comes with Django.  As described in\nthe documentation, it is best to use ``CsrfViewMiddleware``.  However, if you\nare not using that, you will need to use the ``csrf_protect`` decorator on any\nviews that include the comment form, in order for those views to be able to\noutput the CSRF token and cookie.\n\n.. _honeypot: http://en.wikipedia.org/wiki/Honeypot_(computing)\n\nMore information\n================\n\n.. toctree::\n   :maxdepth: 1\n\n   models\n   settings\n   signals\n   custom\n   forms\n   moderation\n   example\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/contrib/comments/models.txt",
    "content": "===========================\nThe built-in comment models\n===========================\n\n.. module:: django.contrib.comments.models\n   :synopsis: The built-in comment models\n\n.. class:: Comment\n\n    Django's built-in comment model. Has the following fields:\n\n    .. attribute:: content_object\n\n        A :class:`~django.contrib.contenttypes.generic.GenericForeignKey`\n        attribute pointing to the object the comment is attached to. You can use\n        this to get at the related object (i.e. ``my_comment.content_object``).\n\n        Since this field is a\n        :class:`~django.contrib.contenttypes.generic.GenericForeignKey`, it's\n        actually syntactic sugar on top of two underlying attributes, described\n        below.\n\n    .. attribute:: content_type\n\n        A :class:`~django.db.models.ForeignKey` to\n        :class:`~django.contrib.contenttypes.models.ContentType`; this is the\n        type of the object the comment is attached to.\n\n    .. attribute:: object_pk\n\n        A :class:`~django.db.models.TextField` containing the primary\n        key of the object the comment is attached to.\n\n    .. attribute:: site\n\n        A :class:`~django.db.models.ForeignKey` to the\n        :class:`~django.contrib.sites.models.Site` on which the comment was\n        posted.\n\n    .. attribute:: user\n\n        A :class:`~django.db.models.ForeignKey` to the\n        :class:`~django.contrib.auth.models.User` who posted the comment.\n        May be blank if the comment was posted by an unauthenticated user.\n\n    .. attribute:: user_name\n\n        The name of the user who posted the comment.\n\n    .. attribute:: user_email\n\n        The email of the user who posted the comment.\n\n    .. attribute:: user_url\n\n        The URL entered by the person who posted the comment.\n\n    .. attribute:: comment\n\n        The actual content of the comment itself.\n\n    .. attribute:: submit_date\n\n        The date the comment was submitted.\n\n    .. attribute:: ip_address\n\n        The IP address of the user posting the comment.\n\n    .. attribute:: is_public\n\n        ``False`` if the comment is in moderation (see\n        :doc:`/ref/contrib/comments/moderation`); If ``True``, the comment will\n        be displayed on the site.\n\n    .. attribute:: is_removed\n\n        ``True`` if the comment was removed. Used to keep track of removed\n        comments instead of just deleting them.\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/contrib/comments/moderation.txt",
    "content": "==========================\nGeneric comment moderation\n==========================\n\n.. module:: django.contrib.comments.moderation\n   :synopsis: Support for automatic comment moderation.\n\nDjango's bundled comments application is extremely useful on its own,\nbut the amount of comment spam circulating on the Web today\nessentially makes it necessary to have some sort of automatic\nmoderation system in place for any application which makes use of\ncomments. To make this easier to handle in a consistent fashion,\n``django.contrib.comments.moderation`` provides a generic, extensible\ncomment-moderation system which can be applied to any model or set of\nmodels which want to make use of Django's comment system.\n\n\nOverview\n========\n\nThe entire system is contained within ``django.contrib.comments.moderation``,\nand uses a two-step process to enable moderation for any given model:\n\n1. A subclass of :class:`CommentModerator`\n   is defined which specifies the moderation options the model wants to\n   enable.\n\n2. The model is registered with the moderation system, passing in the\n   model class and the class which specifies its moderation options.\n\nA simple example is the best illustration of this. Suppose we have the\nfollowing model, which would represent entries in a Weblog::\n\n    from django.db import models\n\n    class Entry(models.Model):\n        title = models.CharField(maxlength=250)\n        body = models.TextField()\n        pub_date = models.DateField()\n        enable_comments = models.BooleanField()\n\nNow, suppose that we want the following steps to be applied whenever a\nnew comment is posted on an ``Entry``:\n\n1. If the ``Entry``'s ``enable_comments`` field is ``False``, the\n   comment will simply be disallowed (i.e., immediately deleted).\n\n2. If the ``enable_comments`` field is ``True``, the comment will be\n   allowed to save.\n\n3. Once the comment is saved, an email should be sent to site staff\n   notifying them of the new comment.\n\nAccomplishing this is fairly straightforward and requires very little\ncode::\n\n    from django.contrib.comments.moderation import CommentModerator, moderator\n\n    class EntryModerator(CommentModerator):\n        email_notification = True\n        enable_field = 'enable_comments'\n\n    moderator.register(Entry, EntryModerator)\n\nThe :class:`CommentModerator` class pre-defines a number of useful moderation\noptions which subclasses can enable or disable as desired, and ``moderator``\nknows how to work with them to determine whether to allow a comment, whether\nto moderate a comment which will be allowed to post, and whether to email\nnotifications of new comments.\n\nBuilt-in moderation options\n---------------------------\n\n.. class:: CommentModerator\n\n    Most common comment-moderation needs can be handled by subclassing\n    :class:`CommentModerator` and\n    changing the values of pre-defined attributes; the full range of built-in\n    options is as follows.\n\n    .. attribute:: auto_close_field\n\n        If this is set to the name of a\n        :class:`~django.db.models.DateField` or\n        :class:`~django.db.models.DateTimeField` on the model for which\n        comments are being moderated, new comments for objects of that model\n        will be disallowed (immediately deleted) when a certain number of days\n        have passed after the date specified in that field. Must be\n        used in conjunction with :attr:`close_after`, which specifies the\n        number of days past which comments should be\n        disallowed. Default value is ``None``.\n\n    .. attribute:: auto_moderate_field\n\n        Like :attr:`auto_close_field`, but instead of outright deleting\n        new comments when the requisite number of days have elapsed,\n        it will simply set the ``is_public`` field of new comments to\n        ``False`` before saving them. Must be used in conjunction with\n        :attr:`moderate_after`, which specifies the number of days past\n        which comments should be moderated. Default value is ``None``.\n\n    .. attribute:: close_after\n\n        If :attr:`auto_close_field` is used, this must specify the number\n        of days past the value of the field specified by\n        :attr:`auto_close_field` after which new comments for an object\n        should be disallowed. Allowed values are ``None``, 0 (which disallows\n        comments immediately), or any positive integer. Default value is\n        ``None``.\n\n    .. attribute:: email_notification\n\n        If ``True``, any new comment on an object of this model which\n        survives moderation (i.e., is not deleted) will generate an\n        email to site staff. Default value is ``False``.\n\n    .. attribute:: enable_field\n\n        If this is set to the name of a\n        :class:`~django.db.models.BooleanField` on the model\n        for which comments are being moderated, new comments on\n        objects of that model will be disallowed (immediately deleted)\n        whenever the value of that field is ``False`` on the object\n        the comment would be attached to. Default value is ``None``.\n\n    .. attribute:: moderate_after\n\n        If :attr:`auto_moderate_field` is used, this must specify the number\n        of days past the value of the field specified by\n        :attr:`auto_moderate_field` after which new comments for an object\n        should be marked non-public. Allowed values are ``None``, 0 (which\n        moderates comments immediately), or any positive integer. Default\n        value is ``None``.\n\nSimply subclassing :class:`CommentModerator` and changing the values of these\noptions will automatically enable the various moderation methods for any\nmodels registered using the subclass.\n\nAdding custom moderation methods\n--------------------------------\n\nFor situations where the built-in options listed above are not\nsufficient, subclasses of :class:`CommentModerator` can also override\nthe methods which actually perform the moderation, and apply any logic\nthey desire.  :class:`CommentModerator` defines three methods which\ndetermine how moderation will take place; each method will be called\nby the moderation system and passed two arguments: ``comment``, which\nis the new comment being posted, ``content_object``, which is the\nobject the comment will be attached to, and ``request``, which is the\n:class:`~django.http.HttpRequest` in which the comment is being submitted:\n\n.. method:: CommentModerator.allow(comment, content_object, request)\n\n    Should return ``True`` if the comment should be allowed to\n    post on the content object, and ``False`` otherwise (in which\n    case the comment will be immediately deleted).\n\n.. method:: CommentModerator.email(comment, content_object, request)\n\n    If email notification of the new comment should be sent to\n    site staff or moderators, this method is responsible for\n    sending the email.\n\n.. method:: CommentModerator.moderate(comment, content_object, request)\n\n    Should return ``True`` if the comment should be moderated (in\n    which case its ``is_public`` field will be set to ``False``\n    before saving), and ``False`` otherwise (in which case the\n    ``is_public`` field will not be changed).\n\n\nRegistering models for moderation\n---------------------------------\n\nThe moderation system, represented by\n``django.contrib.comments.moderation.moderator`` is an instance of the class\n:class:`Moderator`, which allows registration and \"unregistration\" of models\nvia two methods:\n\n.. function:: moderator.register(model_or_iterable, moderation_class)\n\n    Takes two arguments: the first should be either a model class\n    or list of model classes, and the second should be a subclass\n    of ``CommentModerator``, and register the model or models to\n    be moderated using the options defined in the\n    ``CommentModerator`` subclass. If any of the models are\n    already registered for moderation, the exception\n    ``AlreadyModerated`` will be raised.\n\n.. function:: moderator.unregister(model_or_iterable)\n\n    Takes one argument: a model class or list of model classes,\n    and removes the model or models from the set of models which\n    are being moderated. If any of the models are not currently\n    being moderated, the exception ``NotModerated`` will be raised.\n\n\nCustomizing the moderation system\n---------------------------------\n\nMost use cases will work easily with simple subclassing of\n:class:`CommentModerator` and registration with the provided\n:class:`Moderator` instance, but customization of global moderation behavior\ncan be achieved by subclassing :class:`Moderator` and instead registering\nmodels with an instance of the subclass.\n\n.. class:: Moderator\n\n    In addition to the :func:`moderator.register` and\n    :func:`moderator.unregister` methods detailed above, the following methods\n    on :class:`Moderator` can be overridden to achieve customized behavior:\n\n    .. method:: connect\n\n        Determines how moderation is set up globally. The base\n        implementation in\n        :class:`Moderator` does this by\n        attaching listeners to the :data:`~django.contrib.comments.signals.comment_will_be_posted`\n        and :data:`~django.contrib.comments.signals.comment_was_posted` signals from the\n        comment models.\n\n    .. method:: pre_save_moderation(sender, comment, request, **kwargs)\n\n        In the base implementation, applies all pre-save moderation\n        steps (such as determining whether the comment needs to be\n        deleted, or whether it needs to be marked as non-public or\n        generate an email).\n\n    .. method:: post_save_moderation(sender, comment, request, **kwargs)\n\n        In the base implementation, applies all post-save moderation\n        steps (currently this consists entirely of deleting comments\n        which were disallowed).\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/contrib/comments/settings.txt",
    "content": "================\nComment settings\n================\n\nThese settings configure the behavior of the comments framework:\n\n.. setting:: COMMENTS_HIDE_REMOVED\n\nCOMMENTS_HIDE_REMOVED\n---------------------\n\nIf ``True`` (default), removed comments will be excluded from comment\nlists/counts (as taken from template tags). Otherwise, the template author is\nresponsible for some sort of a \"this comment has been removed by the site staff\"\nmessage.\n\n.. setting:: COMMENT_MAX_LENGTH\n\nCOMMENT_MAX_LENGTH\n------------------\n\nThe maximum length of the comment field, in characters. Comments longer than\nthis will be rejected. Defaults to 3000.\n\n.. setting:: COMMENTS_APP\n\nCOMMENTS_APP\n------------\n\nAn app which provides :doc:`customization of the comments framework\n</ref/contrib/comments/custom>`.  Use the same dotted-string notation\nas in :setting:`INSTALLED_APPS`.  Your custom :setting:`COMMENTS_APP`\nmust also be listed in :setting:`INSTALLED_APPS`.\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/contrib/comments/signals.txt",
    "content": "================================\nSignals sent by the comments app\n================================\n\n.. module:: django.contrib.comments.signals\n   :synopsis: Signals sent by the comment module.\n\nThe comment app sends a series of :doc:`signals </topics/signals>` to allow for\ncomment moderation and similar activities. See :doc:`the introduction to signals\n</topics/signals>` for information about how to register for and receive these\nsignals.\n\ncomment_will_be_posted\n======================\n\n.. data:: django.contrib.comments.signals.comment_will_be_posted\n   :module:\n\nSent just before a comment will be saved, after it's been sanity checked and\nsubmitted. This can be used to modify the comment (in place) with posting\ndetails or other such actions.\n\nIf any receiver returns ``False`` the comment will be discarded and a 400\nresponse will be returned.\n\nThis signal is sent at more or less the same time (just before, actually) as the\n``Comment`` object's :data:`~django.db.models.signals.pre_save` signal.\n\nArguments sent with this signal:\n\n``sender``\n    The comment model.\n\n``comment``\n    The comment instance about to be posted. Note that it won't have been\n    saved into the database yet, so it won't have a primary key, and any\n    relations might not work correctly yet.\n\n``request``\n    The :class:`~django.http.HttpRequest` that posted the comment.\n\ncomment_was_posted\n==================\n\n.. data:: django.contrib.comments.signals.comment_was_posted\n   :module:\n\nSent just after the comment is saved.\n\nArguments sent with this signal:\n\n``sender``\n    The comment model.\n\n``comment``\n    The comment instance that was posted. Note that it will have already\n    been saved, so if you modify it you'll need to call\n    :meth:`~django.db.models.Model.save` again.\n\n``request``\n    The :class:`~django.http.HttpRequest` that posted the comment.\n\ncomment_was_flagged\n===================\n\n.. data:: django.contrib.comments.signals.comment_was_flagged\n   :module:\n\nSent after a comment was \"flagged\" in some way. Check the flag to see if this\nwas a user requesting removal of a comment, a moderator approving/removing a\ncomment, or some other custom user flag.\n\nArguments sent with this signal:\n\n``sender``\n    The comment model.\n\n``comment``\n    The comment instance that was posted. Note that it will have already\n    been saved, so if you modify it you'll need to call\n    :meth:`~django.db.models.Model.save` again.\n\n``flag``\n    The ``django.contrib.comments.models.CommentFlag`` that's been attached to\n    the comment.\n\n``created``\n    ``True`` if this is a new flag; ``False`` if it's a duplicate flag.\n\n``request``\n    The :class:`~django.http.HttpRequest` that posted the comment.\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/contrib/contenttypes.txt",
    "content": "==========================\nThe contenttypes framework\n==========================\n\n.. module:: django.contrib.contenttypes\n   :synopsis: Provides generic interface to installed models.\n\nDjango includes a :mod:`~django.contrib.contenttypes` application that can\ntrack all of the models installed in your Django-powered project, providing a\nhigh-level, generic interface for working with your models.\n\nOverview\n========\n\nAt the heart of the contenttypes application is the\n:class:`~django.contrib.contenttypes.models.ContentType` model, which lives at\n``django.contrib.contenttypes.models.ContentType``. Instances of\n:class:`~django.contrib.contenttypes.models.ContentType` represent and store\ninformation about the models installed in your project, and new instances of\n:class:`~django.contrib.contenttypes.models.ContentType` are automatically\ncreated whenever new models are installed.\n\nInstances of :class:`~django.contrib.contenttypes.models.ContentType` have\nmethods for returning the model classes they represent and for querying objects\nfrom those models. :class:`~django.contrib.contenttypes.models.ContentType`\nalso has a :ref:`custom manager <custom-managers>` that adds methods for\nworking with :class:`~django.contrib.contenttypes.models.ContentType` and for\nobtaining instances of :class:`~django.contrib.contenttypes.models.ContentType`\nfor a particular model.\n\nRelations between your models and\n:class:`~django.contrib.contenttypes.models.ContentType` can also be used to\nenable \"generic\" relationships between an instance of one of your\nmodels and instances of any model you have installed.\n\nInstalling the contenttypes framework\n=====================================\n\nThe contenttypes framework is included in the default\n:setting:`INSTALLED_APPS` list created by ``django-admin.py startproject``,\nbut if you've removed it or if you manually set up your\n:setting:`INSTALLED_APPS` list, you can enable it by adding\n``'django.contrib.contenttypes'`` to your :setting:`INSTALLED_APPS` setting.\n\nIt's generally a good idea to have the contenttypes framework\ninstalled; several of Django's other bundled applications require it:\n\n* The admin application uses it to log the history of each object\n  added or changed through the admin interface.\n\n* Django's :mod:`authentication framework <django.contrib.auth>` uses it\n  to tie user permissions to specific models.\n\n* Django's comments system (:mod:`django.contrib.comments`) uses it to\n  \"attach\" comments to any installed model.\n\n.. currentmodule:: django.contrib.contenttypes.models\n\nThe ``ContentType`` model\n=========================\n\n.. class:: ContentType\n\n    Each instance of :class:`~django.contrib.contenttypes.models.ContentType`\n    has three fields which, taken together, uniquely describe an installed\n    model:\n\n    .. attribute:: app_label\n\n        The name of the application the model is part of. This is taken from\n        the :attr:`app_label` attribute of the model, and includes only the\n        *last* part of the application's Python import path;\n        \"django.contrib.contenttypes\", for example, becomes an\n        :attr:`app_label` of \"contenttypes\".\n\n    .. attribute:: model\n\n        The name of the model class.\n\n    .. attribute:: name\n\n        The human-readable name of the model. This is taken from the\n        :attr:`verbose_name <django.db.models.Field.verbose_name>`\n        attribute of the model.\n\nLet's look at an example to see how this works. If you already have\nthe :mod:`~django.contrib.contenttypes` application installed, and then add\n:mod:`the sites application <django.contrib.sites>` to your\n:setting:`INSTALLED_APPS` setting and run ``manage.py syncdb`` to install it,\nthe model :class:`django.contrib.sites.models.Site` will be installed into\nyour database. Along with it a new instance of\n:class:`~django.contrib.contenttypes.models.ContentType` will be\ncreated with the following values:\n\n* :attr:`~django.contrib.contenttypes.models.ContentType.app_label`\n  will be set to ``'sites'`` (the last part of the Python\n  path \"django.contrib.sites\").\n\n* :attr:`~django.contrib.contenttypes.models.ContentType.model`\n  will be set to ``'site'``.\n\n* :attr:`~django.contrib.contenttypes.models.ContentType.name`\n  will be set to ``'site'``.\n\n.. _the verbose_name attribute: ../model-api/#verbose_name\n\nMethods on ``ContentType`` instances\n====================================\n\nEach :class:`~django.contrib.contenttypes.models.ContentType` instance has\nmethods that allow you to get from a\n:class:`~django.contrib.contenttypes.models.ContentType` instance to the\nmodel it represents, or to retrieve objects from that model:\n\n.. method:: ContentType.get_object_for_this_type(**kwargs)\n\n    Takes a set of valid :ref:`lookup arguments <field-lookups-intro>` for the\n    model the :class:`~django.contrib.contenttypes.models.ContentType`\n    represents, and does\n    :meth:`a get() lookup <django.db.models.query.QuerySet.get>`\n    on that model, returning the corresponding object.\n\n.. method:: ContentType.model_class()\n\n    Returns the model class represented by this\n    :class:`~django.contrib.contenttypes.models.ContentType` instance.\n\nFor example, we could look up the\n:class:`~django.contrib.contenttypes.models.ContentType` for the\n:class:`~django.contrib.auth.models.User` model::\n\n    >>> from django.contrib.contenttypes.models import ContentType\n    >>> user_type = ContentType.objects.get(app_label=\"auth\", model=\"user\")\n    >>> user_type\n    <ContentType: user>\n\nAnd then use it to query for a particular\n:class:`~django.contrib.auth.models.User`, or to get access\nto the ``User`` model class::\n\n    >>> user_type.model_class()\n    <class 'django.contrib.auth.models.User'>\n    >>> user_type.get_object_for_this_type(username='Guido')\n    <User: Guido>\n\nTogether,\n:meth:`~django.contrib.contenttypes.models.ContentType.get_object_for_this_type`\nand :meth:`~django.contrib.contenttypes.models.ContentType.model_class` enable\ntwo extremely important use cases:\n\n1. Using these methods, you can write high-level generic code that\n   performs queries on any installed model -- instead of importing and\n   using a single specific model class, you can pass an ``app_label`` and\n   ``model`` into a\n   :class:`~django.contrib.contenttypes.models.ContentType` lookup at\n   runtime, and then work with the model class or retrieve objects from it.\n\n2. You can relate another model to\n   :class:`~django.contrib.contenttypes.models.ContentType` as a way of\n   tying instances of it to particular model classes, and use these methods\n   to get access to those model classes.\n\nSeveral of Django's bundled applications make use of the latter technique.\nFor example,\n:class:`the permissions system <django.contrib.auth.models.Permission>` in\nDjango's authentication framework uses a\n:class:`~django.contrib.auth.models.Permission` model with a foreign\nkey to :class:`~django.contrib.contenttypes.models.ContentType`; this lets\n:class:`~django.contrib.auth.models.Permission` represent concepts like\n\"can add blog entry\" or \"can delete news story\".\n\nThe ``ContentTypeManager``\n--------------------------\n\n.. class:: ContentTypeManager\n\n    :class:`~django.contrib.contenttypes.models.ContentType` also has a custom\n    manager, :class:`~django.contrib.contenttypes.models.ContentTypeManager`,\n    which adds the following methods:\n\n    .. method:: clear_cache()\n\n        Clears an internal cache used by\n        :class:`~django.contrib.contenttypes.models.ContentType` to keep track\n        of models for which it has created\n        :class:`~django.contrib.contenttypes.models.ContentType` instances. You\n        probably won't ever need to call this method yourself; Django will call\n        it automatically when it's needed.\n\n    .. method:: get_for_id(id)\n\n        Lookup a :class:`~django.contrib.contenttypes.models.ContentType` by ID.\n        Since this method uses the same shared cache as\n        :meth:`~django.contrib.contenttypes.models.ContentTypeManager.get_for_model`,\n        it's preferred to use this method over the usual\n        ``ContentType.objects.get(pk=id)``\n\n    .. method:: get_for_model(model[, for_concrete_model=True])\n\n        Takes either a model class or an instance of a model, and returns the\n        :class:`~django.contrib.contenttypes.models.ContentType` instance\n        representing that model.\n\n    .. method:: get_for_models(*models[, for_concrete_models=True])\n\n        Takes a variadic number of model classes, and returns a dictionary\n        mapping the model classes to the\n        :class:`~django.contrib.contenttypes.models.ContentType` instances\n        representing them.\n\n    .. method:: get_by_natural_key(app_label, model)\n\n        Returns the :class:`~django.contrib.contenttypes.models.ContentType`\n        instance uniquely identified by the given application label and model\n        name. The primary purpose of this method is to allow\n        :class:`~django.contrib.contenttypes.models.ContentType` objects to be\n        referenced via a :ref:`natural key<topics-serialization-natural-keys>`\n        during deserialization.\n\nThe :meth:`~ContentTypeManager.get_for_model()` method is especially\nuseful when you know you need to work with a\n:class:`ContentType <django.contrib.contenttypes.models.ContentType>` but don't\nwant to go to the trouble of obtaining the model's metadata to perform a manual\nlookup::\n\n    >>> from django.contrib.auth.models import User\n    >>> user_type = ContentType.objects.get_for_model(User)\n    >>> user_type\n    <ContentType: user>\n\n.. module:: django.contrib.contenttypes.generic\n\n.. _generic-relations:\n\n.. versionadded:: 1.5\n\nPrior to Django 1.5,\n:meth:`~django.contrib.contenttypes.models.ContentTypeManager.get_for_model` and\n:meth:`~django.contrib.contenttypes.models.ContentTypeManager.get_for_models`\nalways returned the :class:`~django.contrib.contenttypes.models.ContentType`\nassociated with the concrete model of the specified one(s). That means there\nwas no way to retrieve the\n:class:`~django.contrib.contenttypes.models.ContentType` of a proxy model\nusing those methods. As of Django 1.5 you can now pass a boolean flag –\n``for_concrete_model`` and ``for_concrete_models`` respectively – to specify\nwether or not you want to retrieve the\n:class:`~django.contrib.contenttypes.models.ContentType` for the concrete or\ndirect model.\n\nGeneric relations\n=================\n\nAdding a foreign key from one of your own models to\n:class:`~django.contrib.contenttypes.models.ContentType` allows your model to\neffectively tie itself to another model class, as in the example of the\n:class:`~django.contrib.auth.models.Permission` model above. But it's possible\nto go one step further and use\n:class:`~django.contrib.contenttypes.models.ContentType` to enable truly\ngeneric (sometimes called \"polymorphic\") relationships between models.\n\nA simple example is a tagging system, which might look like this::\n\n    from django.db import models\n    from django.contrib.contenttypes.models import ContentType\n    from django.contrib.contenttypes import generic\n\n    class TaggedItem(models.Model):\n        tag = models.SlugField()\n        content_type = models.ForeignKey(ContentType)\n        object_id = models.PositiveIntegerField()\n        content_object = generic.GenericForeignKey('content_type', 'object_id')\n\n        def __unicode__(self):\n            return self.tag\n\nA normal :class:`~django.db.models.ForeignKey` can only \"point\nto\" one other model, which means that if the ``TaggedItem`` model used a\n:class:`~django.db.models.ForeignKey` it would have to\nchoose one and only one model to store tags for. The contenttypes\napplication provides a special field type (``GenericForeignKey``) which\nworks around this and allows the relationship to be with any\nmodel:\n\n.. class:: GenericForeignKey\n\n    There are three parts to setting up a\n    :class:`~django.contrib.contenttypes.generic.GenericForeignKey`:\n\n    1. Give your model a :class:`~django.db.models.ForeignKey`\n       to :class:`~django.contrib.contenttypes.models.ContentType`. The usual\n       name for this field is \"content_type\".\n\n    2. Give your model a field that can store primary key values from the\n       models you'll be relating to. For most models, this means a\n       :class:`~django.db.models.PositiveIntegerField`. The usual name\n       for this field is \"object_id\".\n\n    3. Give your model a\n       :class:`~django.contrib.contenttypes.generic.GenericForeignKey`, and\n       pass it the names of the two fields described above. If these fields\n       are named \"content_type\" and \"object_id\", you can omit this -- those\n       are the default field names\n       :class:`~django.contrib.contenttypes.generic.GenericForeignKey` will\n       look for.\n\n.. admonition:: Primary key type compatibility\n\n   The \"object_id\" field doesn't have to be the same type as the\n   primary key fields on the related models, but their primary key values\n   must be coercible to the same type as the \"object_id\" field by its\n   :meth:`~django.db.models.Field.get_db_prep_value` method.\n\n   For example, if you want to allow generic relations to models with either\n   :class:`~django.db.models.IntegerField` or\n   :class:`~django.db.models.CharField` primary key fields, you\n   can use :class:`~django.db.models.CharField` for the\n   \"object_id\" field on your model since integers can be coerced to\n   strings by :meth:`~django.db.models.Field.get_db_prep_value`.\n\n   For maximum flexibility you can use a\n   :class:`~django.db.models.TextField` which doesn't have a\n   maximum length defined, however this may incur significant performance\n   penalties depending on your database backend.\n\n   There is no one-size-fits-all solution for which field type is best. You\n   should evaluate the models you expect to be pointing to and determine\n   which solution will be most effective for your use case.\n\n.. admonition:: Serializing references to ``ContentType`` objects\n\n   If you're serializing data (for example, when generating\n   :class:`~django.test.TestCase.fixtures`) from a model that implements\n   generic relations, you should probably be using a natural key to uniquely\n   identify related :class:`~django.contrib.contenttypes.models.ContentType`\n   objects. See :ref:`natural keys<topics-serialization-natural-keys>` and\n   :djadminopt:`dumpdata --natural <--natural>` for more information.\n\nThis will enable an API similar to the one used for a normal\n:class:`~django.db.models.ForeignKey`;\neach ``TaggedItem`` will have a ``content_object`` field that returns the\nobject it's related to, and you can also assign to that field or use it when\ncreating a ``TaggedItem``::\n\n    >>> from django.contrib.auth.models import User\n    >>> guido = User.objects.get(username='Guido')\n    >>> t = TaggedItem(content_object=guido, tag='bdfl')\n    >>> t.save()\n    >>> t.content_object\n    <User: Guido>\n\nDue to the way :class:`~django.contrib.contenttypes.generic.GenericForeignKey`\nis implemented, you cannot use such fields directly with filters (``filter()``\nand ``exclude()``, for example) via the database API. Because a\n:class:`~django.contrib.contenttypes.generic.GenericForeignKey` isn't a\nnormal field object, these examples will *not* work::\n\n    # This will fail\n    >>> TaggedItem.objects.filter(content_object=guido)\n    # This will also fail\n    >>> TaggedItem.objects.get(content_object=guido)\n\nReverse generic relations\n-------------------------\n\n.. class:: GenericRelation\n\nIf you know which models you'll be using most often, you can also add\na \"reverse\" generic relationship to enable an additional API. For example::\n\n    class Bookmark(models.Model):\n        url = models.URLField()\n        tags = generic.GenericRelation(TaggedItem)\n\n``Bookmark`` instances will each have a ``tags`` attribute, which can\nbe used to retrieve their associated ``TaggedItems``::\n\n    >>> b = Bookmark(url='https://www.djangoproject.com/')\n    >>> b.save()\n    >>> t1 = TaggedItem(content_object=b, tag='django')\n    >>> t1.save()\n    >>> t2 = TaggedItem(content_object=b, tag='python')\n    >>> t2.save()\n    >>> b.tags.all()\n    [<TaggedItem: django>, <TaggedItem: python>]\n\nJust as :class:`~django.contrib.contenttypes.generic.GenericForeignKey`\naccepts the names of the content-type and object-ID fields as\narguments, so too does\n:class:`~django.contrib.contenttypes.generic.GenericRelation`;\nif the model which has the generic foreign key is using non-default names\nfor those fields, you must pass the names of the fields when setting up a\n:class:`.GenericRelation` to it. For example, if the ``TaggedItem`` model\nreferred to above used fields named ``content_type_fk`` and\n``object_primary_key`` to create its generic foreign key, then a\n:class:`.GenericRelation` back to it would need to be defined like so::\n\n    tags = generic.GenericRelation(TaggedItem,\n                                   content_type_field='content_type_fk',\n                                   object_id_field='object_primary_key')\n\nOf course, if you don't add the reverse relationship, you can do the\nsame types of lookups manually::\n\n    >>> b = Bookmark.objects.get(url='https://www.djangoproject.com/')\n    >>> bookmark_type = ContentType.objects.get_for_model(b)\n    >>> TaggedItem.objects.filter(content_type__pk=bookmark_type.id,\n    ...                           object_id=b.id)\n    [<TaggedItem: django>, <TaggedItem: python>]\n\nNote that if the model in a\n:class:`~django.contrib.contenttypes.generic.GenericRelation` uses a\nnon-default value for ``ct_field`` or ``fk_field`` in its\n:class:`~django.contrib.contenttypes.generic.GenericForeignKey` (e.g. the\n:mod:`django.contrib.comments` app uses ``ct_field=\"object_pk\"``),\nyou'll need to set ``content_type_field`` and/or ``object_id_field`` in\nthe :class:`~django.contrib.contenttypes.generic.GenericRelation` to\nmatch the ``ct_field`` and ``fk_field``, respectively, in the\n:class:`~django.contrib.contenttypes.generic.GenericForeignKey`::\n\n    comments = generic.GenericRelation(Comment, object_id_field=\"object_pk\")\n\nNote also, that if you delete an object that has a\n:class:`~django.contrib.contenttypes.generic.GenericRelation`, any objects\nwhich have a :class:`~django.contrib.contenttypes.generic.GenericForeignKey`\npointing at it will be deleted as well. In the example above, this means that\nif a ``Bookmark`` object were deleted, any ``TaggedItem`` objects pointing at\nit would be deleted at the same time.\n\nUnlike :class:`~django.db.models.ForeignKey`,\n:class:`~django.contrib.contenttypes.generic.GenericForeignKey` does not accept\nan :attr:`~django.db.models.ForeignKey.on_delete` argument to customize this\nbehavior; if desired, you can avoid the cascade-deletion simply by not using\n:class:`~django.contrib.contenttypes.generic.GenericRelation`, and alternate\nbehavior can be provided via the :data:`~django.db.models.signals.pre_delete`\nsignal.\n\nGeneric relations and aggregation\n---------------------------------\n\n:doc:`Django's database aggregation API </topics/db/aggregation>`\ndoesn't work with a\n:class:`~django.contrib.contenttypes.generic.GenericRelation`. For example, you\nmight be tempted to try something like::\n\n    Bookmark.objects.aggregate(Count('tags'))\n\nThis will not work correctly, however. The generic relation adds extra filters\nto the queryset to ensure the correct content type, but the\n:meth:`~django.db.models.query.QuerySet.aggregate` method doesn't take them\ninto account. For now, if you need aggregates on generic relations, you'll\nneed to calculate them without using the aggregation API.\n\nGeneric relations in forms and admin\n------------------------------------\n\nThe :mod:`django.contrib.contenttypes.generic` module provides:\n\n* ``BaseGenericInlineFormSet``\n* :class:`~django.contrib.contenttypes.generic.GenericTabularInline`\n  and :class:`~django.contrib.contenttypes.generic.GenericStackedInline`\n  (subclasses of\n  :class:`~django.contrib.contenttypes.generic.GenericInlineModelAdmin`)\n* A formset factory, :func:`generic_inlineformset_factory`, for use with\n  :class:`GenericForeignKey`\n\nThese classes and functions enable the use of generic relations in forms\nand the admin. See the :doc:`model formset </topics/forms/modelforms>` and\n:ref:`admin <using-generic-relations-as-an-inline>` documentation for more\ninformation.\n\n.. class:: GenericInlineModelAdmin\n\n    The :class:`~django.contrib.contenttypes.generic.GenericInlineModelAdmin`\n    class inherits all properties from an\n    :class:`~django.contrib.admin.InlineModelAdmin` class. However,\n    it adds a couple of its own for working with the generic relation:\n\n    .. attribute:: ct_field\n\n        The name of the\n        :class:`~django.contrib.contenttypes.models.ContentType` foreign key\n        field on the model. Defaults to ``content_type``.\n\n    .. attribute:: ct_fk_field\n\n        The name of the integer field that represents the ID of the related\n        object. Defaults to ``object_id``.\n\n.. class:: GenericTabularInline\n.. class:: GenericStackedInline\n\n    Subclasses of :class:`GenericInlineModelAdmin` with stacked and tabular\n    layouts, respectively.\n\n.. function:: generic_inlineformset_factory(model, form=ModelForm, formset=BaseGenericInlineFormSet, ct_field=\"content_type\", fk_field=\"object_id\", fields=None, exclude=None, extra=3, can_order=False, can_delete=True, max_num=None, formfield_callback=None)\n\n    Returns a ``GenericInlineFormSet`` using\n    :func:`~django.forms.models.modelformset_factory`.\n\n    You must provide ``ct_field`` and ``object_id`` if they different from the\n    defaults, ``content_type`` and ``object_id`` respectively. Other parameters\n    are similar to those documented in\n    :func:`~django.forms.models.modelformset_factory` and\n    :func:`~django.forms.models.inlineformset_factory`.\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/contrib/csrf.txt",
    "content": "=====================================\nCross Site Request Forgery protection\n=====================================\n\n.. module:: django.middleware.csrf\n   :synopsis: Protects against Cross Site Request Forgeries\n\nThe CSRF middleware and template tag provides easy-to-use protection against\n`Cross Site Request Forgeries`_.  This type of attack occurs when a malicious\nWeb site contains a link, a form button or some javascript that is intended to\nperform some action on your Web site, using the credentials of a logged-in user\nwho visits the malicious site in their browser.  A related type of attack,\n'login CSRF', where an attacking site tricks a user's browser into logging into\na site with someone else's credentials, is also covered.\n\nThe first defense against CSRF attacks is to ensure that GET requests (and other\n'safe' methods, as defined by 9.1.1 Safe Methods, HTTP 1.1,\n:rfc:`2616#section-9.1.1`) are side-effect free. Requests via 'unsafe' methods,\nsuch as POST, PUT and DELETE, can then be protected by following the steps\nbelow.\n\n.. _Cross Site Request Forgeries: http://www.squarefree.com/securitytips/web-developers.html#CSRF\n\n.. _using-csrf:\n\nHow to use it\n=============\n\nTo enable CSRF protection for your views, follow these steps:\n\n1. Add the middleware\n   ``'django.middleware.csrf.CsrfViewMiddleware'`` to your list of\n   middleware classes, :setting:`MIDDLEWARE_CLASSES`.  (It should come\n   before any view middleware that assume that CSRF attacks have\n   been dealt with.)\n\n   Alternatively, you can use the decorator\n   :func:`~django.views.decorators.csrf.csrf_protect` on particular views\n   you want to protect (see below).\n\n2. In any template that uses a POST form, use the :ttag:`csrf_token` tag inside\n   the ``<form>`` element if the form is for an internal URL, e.g.::\n\n       <form action=\".\" method=\"post\">{% csrf_token %}\n\n   This should not be done for POST forms that target external URLs, since\n   that would cause the CSRF token to be leaked, leading to a vulnerability.\n\n3. In the corresponding view functions, ensure that the\n   ``'django.core.context_processors.csrf'`` context processor is\n   being used. Usually, this can be done in one of two ways:\n\n   1. Use RequestContext, which always uses\n      ``'django.core.context_processors.csrf'`` (no matter what your\n      TEMPLATE_CONTEXT_PROCESSORS setting).  If you are using\n      generic views or contrib apps, you are covered already, since these\n      apps use RequestContext throughout.\n\n   2. Manually import and use the processor to generate the CSRF token and\n      add it to the template context. e.g.::\n\n          from django.core.context_processors import csrf\n          from django.shortcuts import render_to_response\n\n          def my_view(request):\n              c = {}\n              c.update(csrf(request))\n              # ... view code here\n              return render_to_response(\"a_template.html\", c)\n\n      You may want to write your own\n      :func:`~django.shortcuts.render_to_response()` wrapper that takes care\n      of this step for you.\n\nThe utility script ``extras/csrf_migration_helper.py`` (located in the Django\ndistribution, but not installed) can help to automate the finding of code and\ntemplates that may need these steps. It contains full help on how to use it.\n\n.. _csrf-ajax:\n\nAJAX\n----\n\nWhile the above method can be used for AJAX POST requests, it has some\ninconveniences: you have to remember to pass the CSRF token in as POST data with\nevery POST request. For this reason, there is an alternative method: on each\nXMLHttpRequest, set a custom ``X-CSRFToken`` header to the value of the CSRF\ntoken. This is often easier, because many javascript frameworks provide hooks\nthat allow headers to be set on every request.\n\nAs a first step, you must get the CSRF token itself. The recommended source for\nthe token is the ``csrftoken`` cookie, which will be set if you've enabled CSRF\nprotection for your views as outlined above.\n\n.. note::\n\n    The CSRF token cookie is named ``csrftoken`` by default, but you can control\n    the cookie name via the :setting:`CSRF_COOKIE_NAME` setting.\n\nAcquiring the token is straightforward:\n\n.. code-block:: javascript\n\n    // using jQuery\n    function getCookie(name) {\n        var cookieValue = null;\n        if (document.cookie && document.cookie != '') {\n            var cookies = document.cookie.split(';');\n            for (var i = 0; i < cookies.length; i++) {\n                var cookie = jQuery.trim(cookies[i]);\n                // Does this cookie string begin with the name we want?\n                if (cookie.substring(0, name.length + 1) == (name + '=')) {\n                    cookieValue = decodeURIComponent(cookie.substring(name.length + 1));\n                    break;\n                }\n            }\n        }\n        return cookieValue;\n    }\n    var csrftoken = getCookie('csrftoken');\n\nThe above code could be simplified by using the `jQuery cookie plugin\n<http://plugins.jquery.com/project/Cookie>`_ to replace ``getCookie``:\n\n.. code-block:: javascript\n\n    var csrftoken = $.cookie('csrftoken');\n\n.. note::\n\n    The CSRF token is also present in the DOM, but only if explicitly included\n    using :ttag:`csrf_token` in a template. The cookie contains the canonical\n    token; the ``CsrfViewMiddleware`` will prefer the cookie to the token in\n    the DOM. Regardless, you're guaranteed to have the cookie if the token is\n    present in the DOM, so you should use the cookie!\n\n.. warning::\n\n    If your view is not rendering a template containing the :ttag:`csrf_token`\n    template tag, Django might not set the CSRF token cookie. This is common in\n    cases where forms are dynamically added to the page. To address this case,\n    Django provides a view decorator which forces setting of the cookie:\n    :func:`~django.views.decorators.csrf.ensure_csrf_cookie`.\n\nFinally, you'll have to actually set the header on your AJAX request, while\nprotecting the CSRF token from being sent to other domains.\n\n.. code-block:: javascript\n\n    function csrfSafeMethod(method) {\n        // these HTTP methods do not require CSRF protection\n        return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));\n    }\n    function sameOrigin(url) {\n        // test that a given url is a same-origin URL\n        // url could be relative or scheme relative or absolute\n        var host = document.location.host; // host + port\n        var protocol = document.location.protocol;\n        var sr_origin = '//' + host;\n        var origin = protocol + sr_origin;\n        // Allow absolute or scheme relative URLs to same origin\n        return (url == origin || url.slice(0, origin.length + 1) == origin + '/') ||\n            (url == sr_origin || url.slice(0, sr_origin.length + 1) == sr_origin + '/') ||\n            // or any other URL that isn't scheme relative or absolute i.e relative.\n            !(/^(\\/\\/|http:|https:).*/.test(url));\n    }\n    $.ajaxSetup({\n        beforeSend: function(xhr, settings) {\n            if (!csrfSafeMethod(settings.type) && sameOrigin(settings.url)) {\n                // Send the token to same-origin, relative URLs only.\n                // Send the token only if the method warrants CSRF protection\n                // Using the CSRFToken value acquired earlier\n                xhr.setRequestHeader(\"X-CSRFToken\", csrftoken);\n            }\n        }\n    });\n\n.. note::\n\n    Due to a bug introduced in jQuery 1.5, the example above will not work\n    correctly on that version. Make sure you are running at least jQuery 1.5.1.\n\nYou can use `settings.crossDomain <http://api.jquery.com/jQuery.ajax>`_ in\njQuery 1.5 and newer in order to replace the ``sameOrigin`` logic above:\n\n.. code-block:: javascript\n\n    function csrfSafeMethod(method) {\n        // these HTTP methods do not require CSRF protection\n        return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));\n    }\n    $.ajaxSetup({\n        crossDomain: false, // obviates need for sameOrigin test\n        beforeSend: function(xhr, settings) {\n            if (!csrfSafeMethod(settings.type)) {\n                xhr.setRequestHeader(\"X-CSRFToken\", csrftoken);\n            }\n        }\n    });\n\n.. note::\n\n    In a `security release blogpost`_, a simpler \"same origin test\" example\n    was provided which only checked for a relative URL. The ``sameOrigin``\n    test above supersedes that example—it works for edge cases like\n    scheme-relative or absolute URLs for the same domain.\n\n.. _security release blogpost: https://www.djangoproject.com/weblog/2011/feb/08/security/\n\nOther template engines\n----------------------\n\nWhen using a different template engine than Django's built-in engine, you can\nset the token in your forms manually after making sure it's available in the\ntemplate context.\n\nFor example, in the Cheetah template language, your form could contain the\nfollowing:\n\n.. code-block:: html\n\n    <div style=\"display:none\">\n        <input type=\"hidden\" name=\"csrfmiddlewaretoken\" value=\"$csrf_token\"/>\n    </div>\n\nYou can use JavaScript similar to the :ref:`AJAX code <csrf-ajax>` above to get\nthe value of the CSRF token.\n\nThe decorator method\n--------------------\n\n.. module:: django.views.decorators.csrf\n\nRather than adding ``CsrfViewMiddleware`` as a blanket protection, you can use\nthe ``csrf_protect`` decorator, which has exactly the same functionality, on\nparticular views that need the protection. It must be used **both** on views\nthat insert the CSRF token in the output, and on those that accept the POST form\ndata. (These are often the same view function, but not always).\n\nUse of the decorator by itself is **not recommended**, since if you forget to\nuse it, you will have a security hole. The 'belt and braces' strategy of using\nboth is fine, and will incur minimal overhead.\n\n.. function:: csrf_protect(view)\n\n    Decorator that provides the protection of ``CsrfViewMiddleware`` to a view.\n\n    Usage::\n\n        from django.views.decorators.csrf import csrf_protect\n        from django.shortcuts import render\n\n        @csrf_protect\n        def my_view(request):\n            c = {}\n            # ...\n            return render(request, \"a_template.html\", c)\n\nRejected requests\n=================\n\nBy default, a '403 Forbidden' response is sent to the user if an incoming\nrequest fails the checks performed by ``CsrfViewMiddleware``.  This should\nusually only be seen when there is a genuine Cross Site Request Forgery, or\nwhen, due to a programming error, the CSRF token has not been included with a\nPOST form.\n\nThe error page, however, is not very friendly, so you may want to provide your\nown view for handling this condition.  To do this, simply set the\n:setting:`CSRF_FAILURE_VIEW` setting.\n\n.. _how-csrf-works:\n\nHow it works\n============\n\nThe CSRF protection is based on the following things:\n\n1. A CSRF cookie that is set to a random value (a session independent nonce, as\n   it is called), which other sites will not have access to.\n\n   This cookie is set by ``CsrfViewMiddleware``.  It is meant to be permanent,\n   but since there is no way to set a cookie that never expires, it is sent with\n   every response that has called ``django.middleware.csrf.get_token()``\n   (the function used internally to retrieve the CSRF token).\n\n2. A hidden form field with the name 'csrfmiddlewaretoken' present in all\n   outgoing POST forms.  The value of this field is the value of the CSRF\n   cookie.\n\n   This part is done by the template tag.\n\n3. For all incoming requests that are not using HTTP GET, HEAD, OPTIONS or\n   TRACE, a CSRF cookie must be present, and the 'csrfmiddlewaretoken' field\n   must be present and correct. If it isn't, the user will get a 403 error.\n\n   This check is done by ``CsrfViewMiddleware``.\n\n4. In addition, for HTTPS requests, strict referer checking is done by\n   ``CsrfViewMiddleware``.  This is necessary to address a Man-In-The-Middle\n   attack that is possible under HTTPS when using a session independent nonce,\n   due to the fact that HTTP 'Set-Cookie' headers are (unfortunately) accepted\n   by clients that are talking to a site under HTTPS.  (Referer checking is not\n   done for HTTP requests because the presence of the Referer header is not\n   reliable enough under HTTP.)\n\nThis ensures that only forms that have originated from your Web site can be used\nto POST data back.\n\nIt deliberately ignores GET requests (and other requests that are defined as\n'safe' by :rfc:`2616`). These requests ought never to have any potentially\ndangerous side effects , and so a CSRF attack with a GET request ought to be\nharmless. :rfc:`2616` defines POST, PUT and DELETE as 'unsafe', and all other\nmethods are assumed to be unsafe, for maximum protection.\n\nCaching\n=======\n\nIf the :ttag:`csrf_token` template tag is used by a template (or the\n``get_token`` function is called some other way), ``CsrfViewMiddleware`` will\nadd a cookie and a ``Vary: Cookie`` header to the response. This means that the\nmiddleware will play well with the cache middleware if it is used as instructed\n(``UpdateCacheMiddleware`` goes before all other middleware).\n\nHowever, if you use cache decorators on individual views, the CSRF middleware\nwill not yet have been able to set the Vary header or the CSRF cookie, and the\nresponse will be cached without either one. In this case, on any views that\nwill require a CSRF token to be inserted you should use the\n:func:`django.views.decorators.csrf.csrf_protect` decorator first::\n\n  from django.views.decorators.cache import cache_page\n  from django.views.decorators.csrf import csrf_protect\n\n  @cache_page(60 * 15)\n  @csrf_protect\n  def my_view(request):\n      # ...\n\n\nTesting\n=======\n\nThe ``CsrfViewMiddleware`` will usually be a big hindrance to testing view\nfunctions, due to the need for the CSRF token which must be sent with every POST\nrequest.  For this reason, Django's HTTP client for tests has been modified to\nset a flag on requests which relaxes the middleware and the ``csrf_protect``\ndecorator so that they no longer rejects requests.  In every other respect\n(e.g. sending cookies etc.), they behave the same.\n\nIf, for some reason, you *want* the test client to perform CSRF\nchecks, you can create an instance of the test client that enforces\nCSRF checks::\n\n    >>> from django.test import Client\n    >>> csrf_client = Client(enforce_csrf_checks=True)\n\n.. _csrf-limitations:\n\nLimitations\n===========\n\nSubdomains within a site will be able to set cookies on the client for the whole\ndomain.  By setting the cookie and using a corresponding token, subdomains will\nbe able to circumvent the CSRF protection.  The only way to avoid this is to\nensure that subdomains are controlled by trusted users (or, are at least unable\nto set cookies).  Note that even without CSRF, there are other vulnerabilities,\nsuch as session fixation, that make giving subdomains to untrusted parties a bad\nidea, and these vulnerabilities cannot easily be fixed with current browsers.\n\nEdge cases\n==========\n\nCertain views can have unusual requirements that mean they don't fit the normal\npattern envisaged here. A number of utilities can be useful in these\nsituations. The scenarios they might be needed in are described in the following\nsection.\n\nUtilities\n---------\n\n.. function:: csrf_exempt(view)\n\n    This decorator marks a view as being exempt from the protection ensured by\n    the middleware. Example::\n\n        from django.views.decorators.csrf import csrf_exempt\n\n        @csrf_exempt\n        def my_view(request):\n            return HttpResponse('Hello world')\n\n.. function:: requires_csrf_token(view)\n\n    Normally the :ttag:`csrf_token` template tag will not work if\n    ``CsrfViewMiddleware.process_view`` or an equivalent like ``csrf_protect``\n    has not run. The view decorator ``requires_csrf_token`` can be used to\n    ensure the template tag does work. This decorator works similarly to\n    ``csrf_protect``, but never rejects an incoming request.\n\n    Example::\n\n        from django.views.decorators.csrf import requires_csrf_token\n        from django.shortcuts import render\n\n        @requires_csrf_token\n        def my_view(request):\n            c = {}\n            # ...\n            return render(request, \"a_template.html\", c)\n\n.. function:: ensure_csrf_cookie(view)\n\n    .. versionadded:: 1.4\n\n    This decorator forces a view to send the CSRF cookie.\n\nScenarios\n---------\n\nCSRF protection should be disabled for just a few views\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nMost views requires CSRF protection, but a few do not.\n\nSolution: rather than disabling the middleware and applying ``csrf_protect`` to\nall the views that need it, enable the middleware and use\n:func:`~django.views.decorators.csrf.csrf_exempt`.\n\nCsrfViewMiddleware.process_view not used\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThere are cases when ``CsrfViewMiddleware.process_view`` may not have run\nbefore your view is run - 404 and 500 handlers, for example - but you still\nneed the CSRF token in a form.\n\nSolution: use :func:`~django.views.decorators.csrf.requires_csrf_token`\n\nUnprotected view needs the CSRF token\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThere may be some views that are unprotected and have been exempted by\n``csrf_exempt``, but still need to include the CSRF token.\n\nSolution: use :func:`~django.views.decorators.csrf.csrf_exempt` followed by\n:func:`~django.views.decorators.csrf.requires_csrf_token`. (i.e. ``requires_csrf_token``\nshould be the innermost decorator).\n\nView needs protection for one path\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nA view needs CRSF protection under one set of conditions only, and mustn't have\nit for the rest of the time.\n\nSolution: use :func:`~django.views.decorators.csrf.csrf_exempt` for the whole\nview function, and :func:`~django.views.decorators.csrf.csrf_protect` for the\npath within it that needs protection. Example::\n\n    from django.views.decorators.csrf import csrf_exempt, csrf_protect\n\n    @csrf_exempt\n    def my_view(request):\n\n        @csrf_protect\n        def protected_path(request):\n            do_something()\n\n        if some_condition():\n           return protected_path(request)\n        else:\n           do_something_else()\n\nPage uses AJAX without any HTML form\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nA page makes a POST request via AJAX, and the page does not have an HTML form\nwith a :ttag:`csrf_token` that would cause the required CSRF cookie to be sent.\n\nSolution: use :func:`~django.views.decorators.csrf.ensure_csrf_cookie` on the\nview that sends the page.\n\nContrib and reusable apps\n=========================\n\nBecause it is possible for the developer to turn off the ``CsrfViewMiddleware``,\nall relevant views in contrib apps use the ``csrf_protect`` decorator to ensure\nthe security of these applications against CSRF.  It is recommended that the\ndevelopers of other reusable apps that want the same guarantees also use the\n``csrf_protect`` decorator on their views.\n\nSettings\n========\n\nA number of settings can be used to control Django's CSRF behavior.\n\nCSRF_COOKIE_DOMAIN\n------------------\n\nDefault: ``None``\n\nThe domain to be used when setting the CSRF cookie.  This can be useful for\neasily allowing cross-subdomain requests to be excluded from the normal cross\nsite request forgery protection.  It should be set to a string such as\n``\".example.com\"`` to allow a POST request from a form on one subdomain to be\naccepted by a view served from another subdomain.\n\nPlease note that, with or without use of this setting, this CSRF protection\nmechanism is not safe against cross-subdomain attacks -- see `Limitations`_.\n\nCSRF_COOKIE_NAME\n----------------\n\nDefault: ``'csrftoken'``\n\nThe name of the cookie to use for the CSRF authentication token. This can be\nwhatever you want.\n\nCSRF_COOKIE_PATH\n----------------\n\n.. versionadded:: 1.4\n\nDefault: ``'/'``\n\nThe path set on the CSRF cookie. This should either match the URL path of your\nDjango installation or be a parent of that path.\n\nThis is useful if you have multiple Django instances running under the same\nhostname. They can use different cookie paths, and each instance will only see\nits own CSRF cookie.\n\nCSRF_COOKIE_SECURE\n------------------\n\n.. versionadded:: 1.4\n\nDefault: ``False``\n\nWhether to use a secure cookie for the CSRF cookie. If this is set to ``True``,\nthe cookie will be marked as \"secure,\" which means browsers may ensure that the\ncookie is only sent under an HTTPS connection.\n\nCSRF_FAILURE_VIEW\n-----------------\n\nDefault: ``'django.views.csrf.csrf_failure'``\n\nA dotted path to the view function to be used when an incoming request\nis rejected by the CSRF protection.  The function should have this signature::\n\n  def csrf_failure(request, reason=\"\")\n\nwhere ``reason`` is a short message (intended for developers or logging, not for\nend users) indicating the reason the request was rejected.\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/contrib/databrowse.txt",
    "content": "==========\nDatabrowse\n==========\n\n.. module:: django.contrib.databrowse\n   :synopsis: Databrowse is a Django application that lets you browse your data.\n\n.. deprecated:: 1.4\n    This module has been deprecated.\n\nDatabrowse is a Django application that lets you browse your data.\n\nAs the Django admin dynamically creates an admin interface by introspecting\nyour models, Databrowse dynamically creates a rich, browsable Web site by\nintrospecting your models.\n\nHow to use Databrowse\n=====================\n\n1. Point Django at the default Databrowse templates. There are two ways to\n   do this:\n\n   * Add ``'django.contrib.databrowse'`` to your :setting:`INSTALLED_APPS`\n     setting. This will work if your :setting:`TEMPLATE_LOADERS` setting\n     includes the ``app_directories`` template loader (which is the case by\n     default). See the :ref:`template loader docs <template-loaders>` for\n     more.\n\n   * Otherwise, determine the full filesystem path to the\n     :file:`django/contrib/databrowse/templates` directory, and add that\n     directory to your :setting:`TEMPLATE_DIRS` setting.\n\n2. Register a number of models with the Databrowse site::\n\n       from django.contrib import databrowse\n       from myapp.models import SomeModel, SomeOtherModel, YetAnotherModel\n\n       databrowse.site.register(SomeModel)\n       databrowse.site.register(SomeOtherModel, YetAnotherModel)\n\n   Note that you should register the model *classes*, not instances.\n\n   .. versionchanged:: 1.4\n\n   Since Django 1.4, it is possible to register several models in the same\n   call to ``databrowse.site.register()``.\n\n   It doesn't matter where you put this, as long as it gets executed at some\n   point. A good place for it is in your :doc:`URLconf file\n   </topics/http/urls>` (``urls.py``).\n\n3. Change your URLconf to import the :mod:`~django.contrib.databrowse` module::\n\n       from django.contrib import databrowse\n\n   ...and add the following line to your URLconf::\n\n       (r'^databrowse/(.*)', databrowse.site.root),\n\n   The prefix doesn't matter -- you can use ``databrowse/`` or ``db/`` or\n   whatever you'd like.\n\n4. Run the Django server and visit ``/databrowse/`` in your browser.\n\nRequiring user login\n====================\n\nYou can restrict access to logged-in users with only a few extra lines of\ncode. Simply add the following import to your URLconf::\n\n    from django.contrib.auth.decorators import login_required\n\nThen modify the :doc:`URLconf </topics/http/urls>` so that the\n``databrowse.site.root()`` view is decorated with\n:func:`django.contrib.auth.decorators.login_required`::\n\n    (r'^databrowse/(.*)', login_required(databrowse.site.root)),\n\nIf you haven't already added support for user logins to your :doc:`URLconf\n</topics/http/urls>`, as described in the :doc:`user authentication docs\n</ref/contrib/auth>`, then you will need to do so now with the following\nmapping::\n\n    (r'^accounts/login/$', 'django.contrib.auth.views.login'),\n\nThe final step is to create the login form required by\n:func:`django.contrib.auth.views.login`. The\n:doc:`user authentication docs </ref/contrib/auth>` provide full details and a\nsample template that can be used for this purpose.\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/contrib/flatpages.txt",
    "content": "=================\nThe flatpages app\n=================\n\n.. module:: django.contrib.flatpages\n   :synopsis: A framework for managing simple ?flat? HTML content in a database.\n\nDjango comes with an optional \"flatpages\" application. It lets you store simple\n\"flat\" HTML content in a database and handles the management for you via\nDjango's admin interface and a Python API.\n\nA flatpage is a simple object with a URL, title and content. Use it for\none-off, special-case pages, such as \"About\" or \"Privacy Policy\" pages, that\nyou want to store in a database but for which you don't want to develop a\ncustom Django application.\n\nA flatpage can use a custom template or a default, systemwide flatpage\ntemplate. It can be associated with one, or multiple, sites.\n\nThe content field may optionally be left blank if you prefer to put your\ncontent in a custom template.\n\nHere are some examples of flatpages on Django-powered sites:\n\n* http://www.lawrence.com/about/contact/\n* http://www2.ljworld.com/site/rules/\n\nInstallation\n============\n\nTo install the flatpages app, follow these steps:\n\n1. Install the :mod:`sites framework <django.contrib.sites>` by adding\n   ``'django.contrib.sites'`` to your :setting:`INSTALLED_APPS` setting,\n   if it's not already in there.\n\n   Also make sure you've correctly set :setting:`SITE_ID` to the ID of the\n   site the settings file represents. This will usually be ``1`` (i.e.\n   ``SITE_ID = 1``, but if you're using the sites framework to manage\n   multiple sites, it could be the ID of a different site.\n\n2. Add ``'django.contrib.flatpages'`` to your :setting:`INSTALLED_APPS`\n   setting.\n\nThen either:\n\n3. Add an entry in your URLconf. For example::\n\n    urlpatterns = patterns('',\n        ('^pages/', include('django.contrib.flatpages.urls')),\n    )\n\nor:\n\n3. Add ``'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware'``\n   to your :setting:`MIDDLEWARE_CLASSES` setting.\n\n4. Run the command :djadmin:`manage.py syncdb <syncdb>`.\n\n.. currentmodule:: django.contrib.flatpages.middleware\n\nHow it works\n============\n\n``manage.py syncdb`` creates two tables in your database: ``django_flatpage``\nand ``django_flatpage_sites``. ``django_flatpage`` is a simple lookup table\nthat simply maps a URL to a title and bunch of text content.\n``django_flatpage_sites`` associates a flatpage with a site.\n\nUsing the URLconf\n-----------------\n\nThere are several ways to include the flat pages in your URLconf. You can\ndedicate a particular path to flat pages::\n\n    urlpatterns = patterns('',\n        ('^pages/', include('django.contrib.flatpages.urls')),\n    )\n\nYou can also set it up as a \"catchall\" pattern. In this case, it is important\nto place the pattern at the end of the other urlpatterns::\n\n    # Your other patterns here\n    urlpatterns += patterns('django.contrib.flatpages.views',\n        (r'^(?P<url>.*)$', 'flatpage'),\n    )\n\nAnother common setup is to use flat pages for a limited set of known pages and\nto hard code the urls, so you can reference them with the :ttag:`url` template\ntag::\n\n    urlpatterns += patterns('django.contrib.flatpages.views',\n        url(r'^about-us/$', 'flatpage', {'url': '/about-us/'}, name='about'),\n        url(r'^license/$', 'flatpage', {'url': '/license/'}, name='license'),\n    )\n\nUsing the middleware\n--------------------\n\nThe :class:`~django.contrib.flatpages.middleware.FlatpageFallbackMiddleware`\ncan do all of the work.\n\n.. class:: FlatpageFallbackMiddleware\n\n    Each time any Django application raises a 404 error, this middleware\n    checks the flatpages database for the requested URL as a last resort.\n    Specifically, it checks for a flatpage with the given URL with a site ID\n    that corresponds to the :setting:`SITE_ID` setting.\n\n    If it finds a match, it follows this algorithm:\n\n    * If the flatpage has a custom template, it loads that template.\n      Otherwise, it loads the template :file:`flatpages/default.html`.\n\n    * It passes that template a single context variable, ``flatpage``,\n      which is the flatpage object. It uses\n      :class:`~django.template.RequestContext` in rendering the\n      template.\n\n    .. versionchanged:: 1.4\n       The middleware will only add a trailing slash and redirect (by looking\n       at the :setting:`APPEND_SLASH` setting) if the resulting URL refers to\n       a valid flatpage. Previously requesting a non-existent flatpage\n       would redirect to the same URL with an apppended slash first and\n       subsequently raise a 404.\n\n    .. versionchanged:: 1.4\n       Redirects by the middleware are permanent (301 status code) instead of\n       temporary (302) to match behavior of the\n       :class:`~django.middleware.common.CommonMiddleware`.\n\n    If it doesn't find a match, the request continues to be processed as usual.\n\n    The middleware only gets activated for 404s -- not for 500s or responses\n    of any other status code.\n\n.. admonition:: Flatpages will not apply view middleware\n\n   Because the ``FlatpageFallbackMiddleware`` is applied only after\n   URL resolution has failed and produced a 404, the response it\n   returns will not apply any :ref:`view middleware <view-middleware>`\n   methods. Only requests which are successfully routed to a view via\n   normal URL resolution apply view middleware.\n\nNote that the order of :setting:`MIDDLEWARE_CLASSES` matters. Generally, you\ncan put\n:class:`~django.contrib.flatpages.middleware.FlatpageFallbackMiddleware` at the\nend of the list. This means it will run first when processing the response, and\nensures that any other response-processing middlewares see the real flatpage\nresponse rather than the 404.\n\nFor more on middleware, read the :doc:`middleware docs\n</topics/http/middleware>`.\n\n.. admonition:: Ensure that your 404 template works\n\n    Note that the\n    :class:`~django.contrib.flatpages.middleware.FlatpageFallbackMiddleware`\n    only steps in once another view has successfully produced a 404 response.\n    If another view or middleware class attempts to produce a 404 but ends up\n    raising an exception instead, the response will become an HTTP 500\n    (\"Internal Server Error\") and the\n    :class:`~django.contrib.flatpages.middleware.FlatpageFallbackMiddleware`\n    will not attempt to serve a flat page.\n\n.. currentmodule:: django.contrib.flatpages.models\n\nHow to add, change and delete flatpages\n=======================================\n\nVia the admin interface\n-----------------------\n\nIf you've activated the automatic Django admin interface, you should see a\n\"Flatpages\" section on the admin index page. Edit flatpages as you edit any\nother object in the system.\n\nVia the Python API\n------------------\n\n.. class:: FlatPage\n\n    Flatpages are represented by a standard\n    :doc:`Django model </topics/db/models>`,\n    which lives in `django/contrib/flatpages/models.py`_. You can access\n    flatpage objects via the :doc:`Django database API </topics/db/queries>`.\n\n.. _django/contrib/flatpages/models.py: https://github.com/django/django/blob/master/django/contrib/flatpages/models.py\n\n.. currentmodule:: django.contrib.flatpages\n\n.. admonition:: Check for duplicate flatpage URLs.\n\n    If you add or modify flatpages via your own code, you will likely want to\n    check for duplicate flatpage URLs within the same site. The flatpage form\n    used in the admin performs this validation check, and can be imported from\n    ``django.contrib.flatpages.forms.FlatPageForm`` and used in your own\n    views.\n\nFlatpage templates\n==================\n\nBy default, flatpages are rendered via the template\n:file:`flatpages/default.html`, but you can override that for a\nparticular flatpage: in the admin, a collapsed fieldset titled\n\"Advanced options\" (clicking will expand it) contains a field for\nspecifying a template name. If you're creating a flat page via the\nPython API you can simply set the template name as the field\n``template_name`` on the ``FlatPage`` object.\n\nCreating the :file:`flatpages/default.html` template is your responsibility;\nin your template directory, just create a :file:`flatpages` directory\ncontaining a file :file:`default.html`.\n\nFlatpage templates are passed a single context variable, ``flatpage``,\nwhich is the flatpage object.\n\nHere's a sample :file:`flatpages/default.html` template:\n\n.. code-block:: html+django\n\n    <!DOCTYPE html>\n    <html>\n    <head>\n    <title>{{ flatpage.title }}</title>\n    </head>\n    <body>\n    {{ flatpage.content }}\n    </body>\n    </html>\n\nSince you're already entering raw HTML into the admin page for a flatpage,\nboth ``flatpage.title`` and ``flatpage.content`` are marked as **not**\nrequiring :ref:`automatic HTML escaping <automatic-html-escaping>` in the\ntemplate.\n\nGetting a list of :class:`~django.contrib.flatpages.models.FlatPage` objects in your templates\n==============================================================================================\n\nThe flatpages app provides a template tag that allows you to iterate\nover all of the available flatpages on the :ref:`current site\n<hooking-into-current-site-from-views>`.\n\nLike all custom template tags, you'll need to :ref:`load its custom\ntag library <loading-custom-template-libraries>` before you can use\nit. After loading the library, you can retrieve all current flatpages\nvia the :ttag:`get_flatpages` tag:\n\n.. code-block:: html+django\n\n    {% load flatpages %}\n    {% get_flatpages as flatpages %}\n    <ul>\n        {% for page in flatpages %}\n            <li><a href=\"{{ page.url }}\">{{ page.title }}</a></li>\n        {% endfor %}\n    </ul>\n\n.. templatetag:: get_flatpages\n\nDisplaying ``registration_required`` flatpages\n----------------------------------------------\n\nBy default, the :ttag:`get_flatpages` templatetag will only show\nflatpages that are marked ``registration_required = False``. If you\nwant to display registration-protected flatpages, you need to specify\nan authenticated user using a ``for`` clause.\n\nFor example:\n\n.. code-block:: html+django\n\n    {% get_flatpages for someuser as about_pages %}\n\nIf you provide an anonymous user, :ttag:`get_flatpages` will behave\nthe same as if you hadn't provided a user -- i.e., it will only show you\npublic flatpages.\n\nLimiting flatpages by base URL\n------------------------------\n\nAn optional argument, ``starts_with``, can be applied to limit the\nreturned pages to those beginning with a particular base URL. This\nargument may be passed as a string, or as a variable to be resolved\nfrom the context.\n\nFor example:\n\n.. code-block:: html+django\n\n    {% get_flatpages '/about/' as about_pages %}\n    {% get_flatpages about_prefix as about_pages %}\n    {% get_flatpages '/about/' for someuser as about_pages %}\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/contrib/formtools/form-preview.txt",
    "content": "============\nForm preview\n============\n\n.. module:: django.contrib.formtools.preview\n    :synopsis: Displays an HTML form, forces a preview, then does something\n               with the submission.\n\nDjango comes with an optional \"form preview\" application that helps automate\nthe following workflow:\n\n\"Display an HTML form, force a preview, then do something with the submission.\"\n\nTo force a preview of a form submission, all you have to do is write a short\nPython class.\n\nOverview\n=========\n\nGiven a :class:`django.forms.Form` subclass that you define, this\napplication takes care of the following workflow:\n\n1. Displays the form as HTML on a Web page.\n2. Validates the form data when it's submitted via POST.\n   a. If it's valid, displays a preview page.\n   b. If it's not valid, redisplays the form with error messages.\n3. When the \"confirmation\" form is submitted from the preview page, calls\n   a hook that you define -- a ``done()`` method that gets passed the valid\n   data.\n\nThe framework enforces the required preview by passing a shared-secret hash to\nthe preview page via hidden form fields. If somebody tweaks the form parameters\non the preview page, the form submission will fail the hash-comparison test.\n\nHow to use ``FormPreview``\n==========================\n\n1. Point Django at the default FormPreview templates. There are two ways to\n   do this:\n\n   * Add ``'django.contrib.formtools'`` to your\n     :setting:`INSTALLED_APPS` setting. This will work if your\n     :setting:`TEMPLATE_LOADERS` setting includes the\n     ``app_directories`` template loader (which is the case by\n     default). See the :ref:`template loader docs <template-loaders>`\n     for more.\n\n   * Otherwise, determine the full filesystem path to the\n     :file:`django/contrib/formtools/templates` directory, and add that\n     directory to your :setting:`TEMPLATE_DIRS` setting.\n\n2. Create a :class:`~django.contrib.formtools.preview.FormPreview` subclass that\n   overrides the ``done()`` method::\n\n       from django.contrib.formtools.preview import FormPreview\n       from myapp.models import SomeModel\n\n       class SomeModelFormPreview(FormPreview):\n\n           def done(self, request, cleaned_data):\n               # Do something with the cleaned_data, then redirect\n               # to a \"success\" page.\n               return HttpResponseRedirect('/form/success')\n\n   This method takes an :class:`~django.http.HttpRequest` object and a\n   dictionary of the form data after it has been validated and cleaned.\n   It should return an :class:`~django.http.HttpResponseRedirect` that\n   is the end result of the form being submitted.\n\n3. Change your URLconf to point to an instance of your\n   :class:`~django.contrib.formtools.preview.FormPreview` subclass::\n\n       from myapp.preview import SomeModelFormPreview\n       from myapp.forms import SomeModelForm\n       from django import forms\n\n   ...and add the following line to the appropriate model in your URLconf::\n\n       (r'^post/$', SomeModelFormPreview(SomeModelForm)),\n\n   where ``SomeModelForm`` is a Form or ModelForm class for the model.\n\n4. Run the Django server and visit :file:`/post/` in your browser.\n\n``FormPreview`` classes\n=======================\n\n.. class:: FormPreview\n\nA :class:`~django.contrib.formtools.preview.FormPreview` class is a simple Python class\nthat represents the preview workflow.\n:class:`~django.contrib.formtools.preview.FormPreview` classes must subclass\n``django.contrib.formtools.preview.FormPreview`` and override the ``done()``\nmethod. They can live anywhere in your codebase.\n\n``FormPreview`` templates\n=========================\n\n.. attribute:: FormPreview.form_template\n.. attribute:: FormPreview.preview_template\n\nBy default, the form is rendered via the template :file:`formtools/form.html`,\nand the preview page is rendered via the template :file:`formtools/preview.html`.\nThese values can be overridden for a particular form preview by setting\n:attr:`~django.contrib.formtools.preview.FormPreview.preview_template` and\n:attr:`~django.contrib.formtools.preview.FormPreview.form_template` attributes on the\nFormPreview subclass. See :file:`django/contrib/formtools/templates` for the\ndefault templates.\n\nAdvanced ``FormPreview`` methods\n================================\n\n.. method:: FormPreview.process_preview\n\n    Given a validated form, performs any extra processing before displaying the\n    preview page, and saves any extra data in context.\n\n    By default, this method is empty.  It is called after the form is validated,\n    but before the context is modified with hash information and rendered.\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/contrib/formtools/form-wizard.txt",
    "content": "===========\nForm wizard\n===========\n\n.. module:: django.contrib.formtools.wizard.views\n    :synopsis: Splits forms across multiple Web pages.\n\nDjango comes with an optional \"form wizard\" application that splits\n:doc:`forms </topics/forms/index>` across multiple Web pages. It maintains\nstate in one of the backends so that the full server-side processing can be\ndelayed until the submission of the final form.\n\nYou might want to use this if you have a lengthy form that would be too\nunwieldy for display on a single page. The first page might ask the user for\ncore information, the second page might ask for less important information,\netc.\n\nThe term \"wizard\", in this context, is `explained on Wikipedia`_.\n\n.. _explained on Wikipedia: http://en.wikipedia.org/wiki/Wizard_%28software%29\n\nHow it works\n============\n\nHere's the basic workflow for how a user would use a wizard:\n\n1. The user visits the first page of the wizard, fills in the form and\n   submits it.\n2. The server validates the data. If it's invalid, the form is displayed\n   again, with error messages. If it's valid, the server saves the current\n   state of the wizard in the backend and redirects to the next step.\n3. Step 1 and 2 repeat, for every subsequent form in the wizard.\n4. Once the user has submitted all the forms and all the data has been\n   validated, the wizard processes the data -- saving it to the database,\n   sending an email, or whatever the application needs to do.\n\nUsage\n=====\n\nThis application handles as much machinery for you as possible. Generally,\nyou just have to do these things:\n\n1. Define a number of :class:`~django.forms.Form` classes -- one per\n   wizard page.\n\n2. Create a :class:`WizardView` subclass that specifies what to do once\n   all of your forms have been submitted and validated. This also lets\n   you override some of the wizard's behavior.\n\n3. Create some templates that render the forms. You can define a single,\n   generic template to handle every one of the forms, or you can define a\n   specific template for each form.\n\n4. Add ``django.contrib.formtools`` to your\n   :setting:`INSTALLED_APPS` list in your settings file.\n\n5. Point your URLconf at your :class:`WizardView` :meth:`~WizardView.as_view`\n   method.\n\nDefining ``Form`` classes\n-------------------------\n\nThe first step in creating a form wizard is to create the\n:class:`~django.forms.Form` classes.  These should be standard\n:class:`django.forms.Form` classes, covered in the :doc:`forms documentation\n</topics/forms/index>`.  These classes can live anywhere in your codebase,\nbut convention is to put them in a file called :file:`forms.py` in your\napplication.\n\nFor example, let's write a \"contact form\" wizard, where the first page's form\ncollects the sender's email address and subject, and the second page collects\nthe message itself. Here's what the :file:`forms.py` might look like::\n\n    from django import forms\n\n    class ContactForm1(forms.Form):\n        subject = forms.CharField(max_length=100)\n        sender = forms.EmailField()\n\n    class ContactForm2(forms.Form):\n        message = forms.CharField(widget=forms.Textarea)\n\n\n.. note::\n\n    In order to use :class:`~django.forms.FileField` in any form, see the\n    section :ref:`Handling files <wizard-files>` below to learn more about\n    what to do.\n\nCreating a ``WizardView`` subclass\n----------------------------------\n\n.. class:: SessionWizardView\n.. class:: CookieWizardView\n\nThe next step is to create a\n:class:`django.contrib.formtools.wizard.views.WizardView` subclass. You can\nalso use the :class:`SessionWizardView` or :class:`CookieWizardView` classes\nwhich preselect the backend used for storing information during execution of the\nwizard (as their names indicate, server-side sessions and browser cookies\nrespectively).\n\n.. note::\n\n    To use the :class:`SessionWizardView` follow the instructions\n    in the :doc:`sessions documentation </topics/http/sessions>` on\n    how to enable sessions.\n\nWe will use the :class:`SessionWizardView` in all examples but is is completely\nfine to use the :class:`CookieWizardView` instead. As with your\n:class:`~django.forms.Form` classes, this :class:`WizardView` class can live\nanywhere in your codebase, but convention is to put it in :file:`views.py`.\n\nThe only requirement on this subclass is that it implement a\n:meth:`~WizardView.done()` method.\n\n.. method:: WizardView.done(form_list)\n\n    This method specifies what should happen when the data for *every* form is\n    submitted and validated. This method is passed a list of validated\n    :class:`~django.forms.Form` instances.\n\n    In this simplistic example, rather than performing any database operation,\n    the method simply renders a template of the validated data::\n\n        from django.shortcuts import render_to_response\n        from django.contrib.formtools.wizard.views import SessionWizardView\n\n        class ContactWizard(SessionWizardView):\n            def done(self, form_list, **kwargs):\n                return render_to_response('done.html', {\n                    'form_data': [form.cleaned_data for form in form_list],\n                })\n\n    Note that this method will be called via ``POST``, so it really ought to be a\n    good Web citizen and redirect after processing the data. Here's another\n    example::\n\n        from django.http import HttpResponseRedirect\n        from django.contrib.formtools.wizard.views import SessionWizardView\n\n        class ContactWizard(SessionWizardView):\n            def done(self, form_list, **kwargs):\n                do_something_with_the_form_data(form_list)\n                return HttpResponseRedirect('/page-to-redirect-to-when-done/')\n\nSee the section :ref:`Advanced WizardView methods <wizardview-advanced-methods>`\nbelow to learn about more :class:`WizardView` hooks.\n\nCreating templates for the forms\n--------------------------------\n\nNext, you'll need to create a template that renders the wizard's forms. By\ndefault, every form uses a template called\n:file:`formtools/wizard/wizard_form.html`. You can change this template name\nby overriding either the\n:attr:`~django.views.generic.base.TemplateResponseMixin.template_name` attribute\nor the\n:meth:`~django.views.generic.base.TemplateResponseMixin.get_template_names()`\nmethod, which are documented in the\n:class:`~django.views.generic.base.TemplateResponseMixin` documentation.  The\nlatter one allows you to use a different template for each form (:ref:`see the\nexample below <wizard-template-for-each-form>`).\n\nThis template expects a ``wizard`` object that has various items attached to\nit:\n\n* ``form`` -- The :class:`~django.forms.Form` or\n  :class:`~django.forms.formset.BaseFormSet` instance for the current step\n  (either empty or with errors).\n\n* ``steps`` -- A helper object to access the various steps related data:\n\n  * ``step0`` -- The current step (zero-based).\n  * ``step1`` -- The current step (one-based).\n  * ``count`` -- The total number of steps.\n  * ``first`` -- The first step.\n  * ``last`` -- The last step.\n  * ``current`` -- The current (or first) step.\n  * ``next`` -- The next step.\n  * ``prev`` -- The previous step.\n  * ``index`` -- The index of the current step.\n  * ``all`` -- A list of all steps of the wizard.\n\nYou can supply additional context variables by using the\n:meth:`~WizardView.get_context_data` method of your :class:`WizardView`\nsubclass.\n\nHere's a full example template:\n\n.. code-block:: html+django\n\n    {% extends \"base.html\" %}\n    {% load i18n %}\n\n    {% block head %}\n    {{ wizard.form.media }}\n    {% endblock %}\n\n    {% block content %}\n    <p>Step {{ wizard.steps.step1 }} of {{ wizard.steps.count }}</p>\n    <form action=\"\" method=\"post\">{% csrf_token %}\n    <table>\n    {{ wizard.management_form }}\n    {% if wizard.form.forms %}\n        {{ wizard.form.management_form }}\n        {% for form in wizard.form.forms %}\n            {{ form }}\n        {% endfor %}\n    {% else %}\n        {{ wizard.form }}\n    {% endif %}\n    </table>\n    {% if wizard.steps.prev %}\n    <button name=\"wizard_goto_step\" type=\"submit\" value=\"{{ wizard.steps.first }}\">{% trans \"first step\" %}</button>\n    <button name=\"wizard_goto_step\" type=\"submit\" value=\"{{ wizard.steps.prev }}\">{% trans \"prev step\" %}</button>\n    {% endif %}\n    <input type=\"submit\" value=\"{% trans \"submit\" %}\"/>\n    </form>\n    {% endblock %}\n\n.. note::\n\n    Note that ``{{ wizard.management_form }}`` **must be used** for\n    the wizard to work properly.\n\n.. _wizard-urlconf:\n\nHooking the wizard into a URLconf\n---------------------------------\n\n.. method:: WizardView.as_view\n\nFinally, we need to specify which forms to use in the wizard, and then\ndeploy the new :class:`WizardView` object at a URL in the ``urls.py``. The\nwizard's ``as_view()`` method takes a list of your\n:class:`~django.forms.Form` classes as an argument during instantiation::\n\n    from django.conf.urls import patterns\n\n    from myapp.forms import ContactForm1, ContactForm2\n    from myapp.views import ContactWizard\n\n    urlpatterns = patterns('',\n        (r'^contact/$', ContactWizard.as_view([ContactForm1, ContactForm2])),\n    )\n\n.. _wizard-template-for-each-form:\n\nUsing a different template for each form\n----------------------------------------\n\nAs mentioned above, you may specify a different template for each form.\nConsider an example using a form wizard to implement a multi-step checkout\nprocess for an online store. In the first step, the user specifies a billing\nand shipping address. In the second step, the user chooses payment type. If\nthey chose to pay by credit card, they will enter credit card information in\nthe next step. In the final step, they will confirm the purchase.\n\nHere's what the view code might look like::\n\n    from django.http import HttpResponseRedirect\n    from django.contrib.formtools.wizard.views import SessionWizardView\n\n    FORMS = [(\"address\", myapp.forms.AddressForm),\n             (\"paytype\", myapp.forms.PaymentChoiceForm),\n             (\"cc\", myapp.forms.CreditCardForm),\n             (\"confirmation\", myapp.forms.OrderForm)]\n\n    TEMPLATES = {\"address\": \"checkout/billingaddress.html\",\n                 \"paytype\": \"checkout/paymentmethod.html\",\n                 \"cc\": \"checkout/creditcard.html\",\n                 \"confirmation\": \"checkout/confirmation.html\"}\n\n    def pay_by_credit_card(wizard):\n        \"\"\"Return true if user opts to pay by credit card\"\"\"\n        # Get cleaned data from payment step\n        cleaned_data = wizard.get_cleaned_data_for_step('paytype') or {'method': 'none'}\n        # Return true if the user selected credit card\n        return cleaned_data['method'] == 'cc'\n\n\n    class OrderWizard(SessionWizardView):\n        def get_template_names(self):\n            return [TEMPLATES[self.steps.current]]\n\n        def done(self, form_list, **kwargs):\n            do_something_with_the_form_data(form_list)\n            return HttpResponseRedirect('/page-to-redirect-to-when-done/')\n            ...\n\nThe ``urls.py`` file would contain something like::\n\n    urlpatterns = patterns('',\n        (r'^checkout/$', OrderWizard.as_view(FORMS, condition_dict={'cc': pay_by_credit_card})),\n    )\n\nNote that the ``OrderWizard`` object is initialized with a list of pairs.\nThe first element in the pair is a string that corresponds to the name of the\nstep and the second is the form class.\n\nIn this example, the\n:meth:`~django.views.generic.base.TemplateResponseMixin.get_template_names()`\nmethod returns a list containing a single template, which is selected based on\nthe name of the current step.\n\n.. _wizardview-advanced-methods:\n\nAdvanced ``WizardView`` methods\n===============================\n\n.. class:: WizardView\n\n    Aside from the :meth:`~done()` method, :class:`WizardView` offers a few\n    advanced method hooks that let you customize how your wizard works.\n\n    Some of these methods take an argument ``step``, which is a zero-based\n    counter as string representing the current step of the wizard. (E.g., the\n    first form is ``'0'`` and the second form is ``'1'``)\n\n.. method:: WizardView.get_form_prefix(step=None, form=None)\n\n    Returns the prefix which will be used when calling the form for the given\n    step. ``step`` contains the step name, ``form`` the form class which will\n    be called with the returned prefix.\n\n    If no ``step`` is given, it will be determined automatically. By default,\n    this simply uses the step itself and the ``form`` parameter is not used.\n\n    For more, see the :ref:`form prefix documentation <form-prefix>`.\n\n.. method:: WizardView.get_form_initial(step)\n\n    Returns a dictionary which will be passed as the\n    :attr:`~django.forms.Form.initial` argument when instantiating the Form\n    instance for step ``step``. If no initial data was provided while\n    initializing the form wizard, an empty dictionary should be returned.\n\n    The default implementation::\n\n        def get_form_initial(self, step):\n            return self.initial_dict.get(step, {})\n\n.. method:: WizardView.get_form_kwargs(step)\n\n    Returns a dictionary which will be used as the keyword arguments when\n    instantiating the form instance on given ``step``.\n\n    The default implementation::\n\n        def get_form_kwargs(self, step):\n            return {}\n\n.. method:: WizardView.get_form_instance(step)\n\n    This method will be called only if a :class:`~django.forms.ModelForm` is\n    used as the form for step ``step``.\n\n    Returns an :class:`~django.db.models.Model` object which will be passed as\n    the ``instance`` argument when instantiating the ``ModelForm`` for step\n    ``step``.  If no instance object was provided while initializing the form\n    wizard, ``None`` will be returned.\n\n    The default implementation::\n\n        def get_form_instance(self, step):\n            return self.instance_dict.get(step, None)\n\n.. method:: WizardView.get_context_data(form, **kwargs)\n\n    Returns the template context for a step. You can overwrite this method\n    to add more data for all or some steps. This method returns a dictionary\n    containing the rendered form step.\n\n    The default template context variables are:\n\n    * Any extra data the storage backend has stored\n    * ``form`` -- form instance of the current step\n    * ``wizard`` -- the wizard instance itself\n\n    Example to add extra variables for a specific step::\n\n        def get_context_data(self, form, **kwargs):\n            context = super(MyWizard, self).get_context_data(form=form, **kwargs)\n            if self.steps.current == 'my_step_name':\n                context.update({'another_var': True})\n            return context\n\n.. method:: WizardView.get_prefix(*args, **kwargs)\n\n    This method returns a prefix for use by the storage backends. Backends use\n    the prefix as a mechanism to allow data to be stored separately for each\n    wizard. This allows wizards to store their data in a single backend\n    without overwriting each other.\n\n    You can change this method to make the wizard data prefix more unique to,\n    e.g. have multiple instances of one wizard in one session.\n\n    Default implementation::\n\n        def get_prefix(self, *args, **kwargs):\n            # use the lowercase underscore version of the class name\n            return normalize_name(self.__class__.__name__)\n\n.. method:: WizardView.get_form(step=None, data=None, files=None)\n\n    This method constructs the form for a given ``step``. If no ``step`` is\n    defined, the current step will be determined automatically.\n    The method gets three arguments:\n\n    * ``step`` -- The step for which the form instance should be generated.\n    * ``data`` -- Gets passed to the form's data argument\n    * ``files`` -- Gets passed to the form's files argument\n\n    You can override this method to add extra arguments to the form instance.\n\n    Example code to add a user attribute to the form on step 2::\n\n        def get_form(self, step=None, data=None, files=None):\n            form = super(MyWizard, self).get_form(step, data, files)\n            if step == '1':\n                form.user = self.request.user\n            return form\n\n.. method:: WizardView.process_step(form)\n\n    Hook for modifying the wizard's internal state, given a fully validated\n    :class:`~django.forms.Form` object. The Form is guaranteed to have clean,\n    valid data.\n\n    This method gives you a way to post-process the form data before the data\n    gets stored within the storage backend. By default it just returns the\n    ``form.data`` dictionary. You should not manipulate the data here but you\n    can use it to do some extra work if needed (e.g. set storage extra data).\n\n    Note that this method is called every time a page is rendered for *all*\n    submitted steps.\n\n    The default implementation::\n\n        def process_step(self, form):\n            return self.get_form_step_data(form)\n\n.. method:: WizardView.process_step_files(form)\n\n    This method gives you a way to post-process the form files before the\n    files gets stored within the storage backend. By default it just returns\n    the ``form.files`` dictionary. You should not manipulate the data here\n    but you can use it to do some extra work if needed (e.g. set storage\n    extra data).\n\n    Default implementation::\n\n        def process_step_files(self, form):\n            return self.get_form_step_files(form)\n\n.. method:: WizardView.render_revalidation_failure(step, form, **kwargs)\n\n    When the wizard thinks all steps have passed it revalidates all forms with\n    the data from the backend storage.\n\n    If any of the forms don't validate correctly, this method gets called.\n    This method expects two arguments, ``step`` and ``form``.\n\n    The default implementation resets the current step to the first failing\n    form and redirects the user to the invalid form.\n\n    Default implementation::\n\n        def render_revalidation_failure(self, step, form, **kwargs):\n            self.storage.current_step = step\n            return self.render(form, **kwargs)\n\n.. method:: WizardView.get_form_step_data(form)\n\n    This method fetches the data from the ``form`` Form instance and returns the\n    dictionary. You can use this method to manipulate the values before the data\n    gets stored in the storage backend.\n\n    Default implementation::\n\n        def get_form_step_data(self, form):\n            return form.data\n\n.. method:: WizardView.get_form_step_files(form)\n\n    This method returns the form files. You can use this method to manipulate\n    the files before the data gets stored in the storage backend.\n\n    Default implementation::\n\n        def get_form_step_files(self, form):\n            return form.files\n\n.. method:: WizardView.render(form, **kwargs)\n\n    This method gets called after the GET or POST request has been handled. You\n    can hook in this method to, e.g. change the type of HTTP response.\n\n    Default implementation::\n\n        def render(self, form=None, **kwargs):\n            form = form or self.get_form()\n            context = self.get_context_data(form=form, **kwargs)\n            return self.render_to_response(context)\n\n.. method:: WizardView.get_cleaned_data_for_step(step)\n\n    This method returns the cleaned data for a given ``step``. Before returning\n    the cleaned data, the stored values are revalidated through the form. If\n    the data doesn't validate, ``None`` will be returned.\n\n.. method:: WizardView.get_all_cleaned_data()\n\n    This method returns a merged dictionary of all form steps' ``cleaned_data``\n    dictionaries. If a step contains a ``FormSet``, the key will be prefixed\n    with ``formset-`` and contain a list of the formset's ``cleaned_data``\n    dictionaries. Note that if two or more steps have a field with the same\n    name, the value for that field from the latest step will overwrite the\n    value from any earlier steps.\n\nProviding initial data for the forms\n====================================\n\n.. attribute:: WizardView.initial_dict\n\n    Initial data for a wizard's :class:`~django.forms.Form` objects can be\n    provided using the optional :attr:`~WizardView.initial_dict` keyword\n    argument. This argument should be a dictionary mapping the steps to\n    dictionaries containing the initial data for each step. The dictionary of\n    initial data will be passed along to the constructor of the step's\n    :class:`~django.forms.Form`::\n\n        >>> from myapp.forms import ContactForm1, ContactForm2\n        >>> from myapp.views import ContactWizard\n        >>> initial = {\n        ...     '0': {'subject': 'Hello', 'sender': 'user@example.com'},\n        ...     '1': {'message': 'Hi there!'}\n        ... }\n        >>> # This example is illustrative only and isn't meant to be run in\n        >>> # the shell since it requires an HttpRequest to pass to the view.\n        >>> wiz = ContactWizard.as_view([ContactForm1, ContactForm2], initial_dict=initial)(request)\n        >>> form1 = wiz.get_form('0')\n        >>> form2 = wiz.get_form('1')\n        >>> form1.initial\n        {'sender': 'user@example.com', 'subject': 'Hello'}\n        >>> form2.initial\n        {'message': 'Hi there!'}\n\n    The ``initial_dict`` can also take a list of dictionaries for a specific\n    step if the step is a ``FormSet``.\n\n.. _wizard-files:\n\nHandling files\n==============\n\n.. attribute:: WizardView.file_storage\n\nTo handle :class:`~django.forms.FileField` within any step form of the wizard,\nyou have to add a ``file_storage`` to your :class:`WizardView` subclass.\n\nThis storage will temporarily store the uploaded files for the wizard. The\n``file_storage`` attribute should be a\n:class:`~django.core.files.storage.Storage` subclass.\n\nDjango provides a built-in storage class (see :ref:`the built-in filesystem\nstorage class <builtin-fs-storage>`)::\n\n    from django.conf import settings\n    from django.core.files.storage import FileSystemStorage\n\n    class CustomWizardView(WizardView):\n        ...\n        file_storage = FileSystemStorage(location=os.path.join(settings.MEDIA_ROOT, 'photos'))\n\n.. warning::\n\n    Please remember to take care of removing old files as the\n    :class:`WizardView` won't remove any files, whether the wizard gets\n    finished correctly or not.\n\nConditionally view/skip specific steps\n======================================\n\n.. attribute:: WizardView.condition_dict\n\nThe :meth:`~WizardView.as_view` method accepts a ``condition_dict`` argument.\nYou can pass a dictionary of boolean values or callables. The key should match\nthe steps names (e.g. '0', '1').\n\nIf the value of a specific step is callable it will be called with the\n:class:`WizardView` instance as the only argument. If the return value is true,\nthe step's form will be used.\n\nThis example provides a contact form including a condition. The condition is\nused to show a message form only if a checkbox in the first step was checked.\n\nThe steps are defined in a ``forms.py`` file::\n\n    from django import forms\n\n    class ContactForm1(forms.Form):\n        subject = forms.CharField(max_length=100)\n        sender = forms.EmailField()\n        leave_message = forms.BooleanField(required=False)\n\n    class ContactForm2(forms.Form):\n        message = forms.CharField(widget=forms.Textarea)\n\nWe define our wizard in a ``views.py``::\n\n    from django.shortcuts import render_to_response\n    from django.contrib.formtools.wizard.views import SessionWizardView\n\n    def show_message_form_condition(wizard):\n        # try to get the cleaned data of step 1\n        cleaned_data = wizard.get_cleaned_data_for_step('0') or {}\n        # check if the field ``leave_message`` was checked.\n        return cleaned_data.get('leave_message', True)\n\n    class ContactWizard(SessionWizardView):\n\n        def done(self, form_list, **kwargs):\n            return render_to_response('done.html', {\n                'form_data': [form.cleaned_data for form in form_list],\n            })\n\nWe need to add the ``ContactWizard`` to our ``urls.py`` file::\n\n    from django.conf.urls import patterns\n\n    from myapp.forms import ContactForm1, ContactForm2\n    from myapp.views import ContactWizard, show_message_form_condition\n\n    contact_forms = [ContactForm1, ContactForm2]\n\n    urlpatterns = patterns('',\n        (r'^contact/$', ContactWizard.as_view(contact_forms,\n            condition_dict={'1': show_message_form_condition}\n        )),\n    )\n\nAs you can see, we defined a ``show_message_form_condition`` next to our\n:class:`WizardView` subclass and added a ``condition_dict`` argument to the\n:meth:`~WizardView.as_view` method. The key refers to the second wizard step\n(because of the zero based step index).\n\nHow to work with ModelForm and ModelFormSet\n===========================================\n\n.. attribute:: WizardView.instance_dict\n\nWizardView supports :doc:`ModelForms </topics/forms/modelforms>` and\n:ref:`ModelFormSets <model-formsets>`. Additionally to\n:attr:`~WizardView.initial_dict`, the :meth:`~WizardView.as_view` method takes\nan ``instance_dict`` argument that should contain model instances for steps\nbased on ``ModelForm`` and querysets for steps based on ``ModelFormSet``.\n\nUsage of ``NamedUrlWizardView``\n===============================\n\n.. class:: NamedUrlWizardView\n.. class:: NamedUrlSessionWizardView\n.. class:: NamedUrlCookieWizardView\n\nThere is a :class:`WizardView` subclass which adds named-urls support to the\nwizard. By doing this, you can have single urls for every step. You can also\nuse the :class:`NamedUrlSessionWizardView` or :class:`NamedUrlCookieWizardView`\nclasses which preselect the backend used for storing information (server-side\nsessions and browser cookies respectively).\n\nTo use the named urls, you have to change the ``urls.py``.\n\nBelow you will see an example of a contact wizard with two steps, step 1 with\n\"contactdata\" as its name and step 2 with \"leavemessage\" as its name.\n\nAdditionally you have to pass two more arguments to the\n:meth:`~WizardView.as_view` method:\n\n* ``url_name`` -- the name of the url (as provided in the urls.py)\n* ``done_step_name`` -- the name in the url for the done step\n\nExample code for the changed ``urls.py`` file::\n\n    from django.conf.urls import url, patterns\n\n    from myapp.forms import ContactForm1, ContactForm2\n    from myapp.views import ContactWizard\n\n    named_contact_forms = (\n        ('contactdata', ContactForm1),\n        ('leavemessage', ContactForm2),\n    )\n\n    contact_wizard = ContactWizard.as_view(named_contact_forms,\n        url_name='contact_step', done_step_name='finished')\n\n    urlpatterns = patterns('',\n        url(r'^contact/(?P<step>.+)/$', contact_wizard, name='contact_step'),\n        url(r'^contact/$', contact_wizard, name='contact'),\n    )\n\nAdvanced ``NamedUrlWizardView`` methods\n=======================================\n\n.. method:: NamedUrlWizardView.get_step_url(step)\n\n    This method returns the URL for a specific step.\n\n    Default implementation::\n\n        def get_step_url(self, step):\n            return reverse(self.url_name, kwargs={'step': step})\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/contrib/formtools/index.txt",
    "content": "django.contrib.formtools\n========================\n\n.. module:: django.contrib.formtools\n\nA set of high-level abstractions for Django forms (:mod:`django.forms`).\n\n.. toctree::\n   :maxdepth: 1\n\n   form-preview\n   form-wizard\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/contrib/gis/admin.txt",
    "content": ".. _ref-gis-admin:\n\n======================\nGeoDjango's admin site\n======================\n\n.. module:: django.contrib.gis.admin\n   :synopsis: GeoDjango's extensions to the admin site.\n\n\n``GeoModelAdmin``\n=================\n\n.. class:: GeoModelAdmin\n\n   .. attribute:: default_lon\n\n   The default center longitude.\n\n   .. attribute:: default_lat\n\n   The default center latitude.\n\n   .. attribute:: default_zoom\n\n   The default zoom level to use.  Defaults to 18.\n\n   .. attribute:: extra_js\n\n   Sequence of URLs to any extra JavaScript to include.\n\n   .. attribute:: map_template\n\n   Override the template used to generate the JavaScript slippy map.\n   Default is ``'gis/admin/openlayers.html'``.\n\n   .. attribute:: map_width\n\n   Width of the map, in pixels.  Defaults to 600.\n\n   .. attribute:: map_height\n\n   Height of the map, in pixels.  Defaults to 400.\n\n   .. attribute:: openlayers_url\n\n   Link to the URL of the OpenLayers JavaScript.  Defaults to\n   ``'http://openlayers.org/api/2.11/OpenLayers.js'``.\n\n\n   .. attribute:: modifiable\n\n   Defaults to ``True``.  When set to ``False``, disables editing of\n   existing geometry fields in the admin.\n\n   .. note::\n\n       This is different from adding the geometry field to\n       :attr:`~django.contrib.admin.ModelAdmin.readonly_fields`,\n       which will only display the WKT of the geometry. Setting\n       ``modifiable=False``, actually displays the geometry in a map,\n       but disables the ability to edit its vertices.\n\n``OSMGeoAdmin``\n===============\n\n.. class:: OSMGeoAdmin\n\n   A subclass of :class:`GeoModelAdmin` that uses a spherical mercator projection\n   with `OpenStreetMap <http://openstreetmap.org/>`_ street data tiles.\n   See the :ref:`OSMGeoAdmin introduction <osmgeoadmin-intro>`\n   in the tutorial for a usage example.\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/contrib/gis/commands.txt",
    "content": ".. ref-geodjango-admin:\n\n=============================\nGeoDjango Management Commands\n=============================\n\ninspectdb\n=========\n\n.. describe:: django-admin.py inspectdb\n\nWhen :mod:`django.contrib.gis` is in your :setting:`INSTALLED_APPS`, the\n:djadmin:`inspectdb` management command is overridden with one from GeoDjango.\nThe overridden command is spatially-aware, and places geometry fields in the\nauto-generated model definition, where appropriate.\n\nogrinspect <data_source> <model_name>\n=====================================\n\n.. django-admin:: ogrinspect\n\nThe ``ogrinpsect`` management command will inspect the given OGR-compatible\n:class:`~django.contrib.gis.gdal.DataSource` (e.g., a shapefile) and will\noutput a GeoDjango model with the given model name.  There's a detailed example\nof using ``ogrinspect`` :ref:`in the tutorial <ogrinspect-intro>`.\n\n.. django-admin-option:: --blank <blank_field(s)>\n\n   Use a comma separated list of OGR field names to add the ``blank=True``\n   keyword option to the field definition.  Set with ``true`` to apply\n   to all applicable fields.\n\n.. django-admin-option:: --decimal <decimal_field(s)>\n\n   Use a comma separated list of OGR float fields to generate\n   :class:`~django.db.models.DecimalField` instead of the default\n   :class:`~django.db.models.FloatField`. Set to ``true`` to apply to all\n   OGR float fields.\n\n.. django-admin-option:: --geom-name <name>\n\n   Specifies the model attribute name to use for the geometry field.\n   Defaults to ``'geom'``.\n\n.. django-admin-option:: --layer <layer>\n\n   The key for specifying which layer in the OGR\n   :class:`~django.contrib.gis.gdal.DataSource` source to use.\n   Defaults to 0 (the first layer). May be an integer or a string identifier\n   for the :class:`~django.contrib.gis.gdal.Layer`.\n\n.. django-admin-option:: --mapping\n\n   Automatically generate a mapping dictionary for use with\n   :class:`~django.contrib.gis.utils.LayerMapping`.\n\n.. django-admin-option:: --multi-geom\n\n   When generating the geometry field, treat it as a geometry collection.\n   For example, if this setting is enabled then a\n   :class:`~django.contrib.gis.db.models.MultiPolygonField` will be placed\n   in the generated model rather than\n   :class:`~django.contrib.gis.db.models.PolygonField`.\n\n.. django-admin-option:: --name-field <name_field>\n\n   Generates a ``__unicode__`` routine on the model that will return the\n   the given field name.\n\n.. django-admin-option:: --no-imports\n\n   Suppresses the ``from django.contrib.gis.db import models`` import statement.\n\n.. django-admin-option:: --null <null_field(s)>\n\n   Use a comma separated list of OGR field names to add the ``null=True``\n   keyword option to the field definition.  Set with ``true`` to apply to\n   all applicable fields.\n\n.. django-admin-option:: --srid\n\n   The SRID to use for the geometry field.  If not set, ``ogrinspect`` attempts\n   to automatically determine of the SRID of the data source.\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/contrib/gis/db-api.txt",
    "content": ".. _ref-gis-db-api:\n\n======================\nGeoDjango Database API\n======================\n\n.. _spatial-backends:\n\nSpatial Backends\n================\n\n.. module:: django.contrib.gis.db.backends\n   :synopsis: GeoDjango's spatial database backends.\n\nGeoDjango currently provides the following spatial database backends:\n\n* ``django.contrib.gis.db.backends.postgis``\n* ``django.contrib.gis.db.backends.mysql``\n* ``django.contrib.gis.db.backends.oracle``\n* ``django.contrib.gis.db.backends.spatialite``\n\n.. module:: django.contrib.gis.db.models\n   :synopsis: GeoDjango's database API.\n\n.. _mysql-spatial-limitations:\n\nMySQL Spatial Limitations\n-------------------------\n\nMySQL's spatial extensions only support bounding box operations\n(what MySQL calls minimum bounding rectangles, or MBR).  Specifically,\n`MySQL does not conform to the OGC standard <http://dev.mysql.com/doc/refman/5.1/en/functions-for-testing-spatial-relations-between-geometric-objects.html>`_:\n\n    Currently, MySQL does not implement these functions\n    [``Contains``, ``Crosses``, ``Disjoint``, ``Intersects``, ``Overlaps``,\n    ``Touches``, ``Within``]\n    according to the specification.  Those that are implemented return\n    the same result as the corresponding MBR-based functions.\n\nIn other words, while spatial lookups such as :lookup:`contains <gis-contains>`\nare available in GeoDjango when using MySQL, the results returned are really\nequivalent to what would be returned when using :lookup:`bbcontains`\non a different spatial backend.\n\n.. warning::\n\n    True spatial indexes (R-trees) are only supported with\n    MyISAM tables on MySQL. [#fnmysqlidx]_ In other words, when using\n    MySQL spatial extensions you have to choose between fast spatial\n    lookups and the integrity of your data -- MyISAM tables do\n    not support transactions or foreign key constraints.\n\nCreating and Saving Geographic Models\n=====================================\nHere is an example of how to create a geometry object (assuming the ``Zipcode``\nmodel)::\n\n    >>> from zipcode.models import Zipcode\n    >>> z = Zipcode(code=77096, poly='POLYGON(( 10 10, 10 20, 20 20, 20 15, 10 10))')\n    >>> z.save()\n\n:class:`~django.contrib.gis.geos.GEOSGeometry` objects may also be used to save geometric models::\n\n    >>> from django.contrib.gis.geos import GEOSGeometry\n    >>> poly = GEOSGeometry('POLYGON(( 10 10, 10 20, 20 20, 20 15, 10 10))')\n    >>> z = Zipcode(code=77096, poly=poly)\n    >>> z.save()\n\nMoreover, if the ``GEOSGeometry`` is in a different coordinate system (has a\ndifferent SRID value) than that of the field, then it will be implicitly\ntransformed into the SRID of the model's field, using the spatial database's\ntransform procedure::\n\n    >>> poly_3084 = GEOSGeometry('POLYGON(( 10 10, 10 20, 20 20, 20 15, 10 10))', srid=3084)  # SRID 3084 is 'NAD83(HARN) / Texas Centric Lambert Conformal'\n    >>> z = Zipcode(code=78212, poly=poly_3084)\n    >>> z.save()\n    >>> from django.db import connection\n    >>> print(connection.queries[-1]['sql']) # printing the last SQL statement executed (requires DEBUG=True)\n    INSERT INTO \"geoapp_zipcode\" (\"code\", \"poly\") VALUES (78212, ST_Transform(ST_GeomFromWKB('\\\\001 ... ', 3084), 4326))\n\nThus, geometry parameters may be passed in using the ``GEOSGeometry`` object, WKT\n(Well Known Text [#fnwkt]_), HEXEWKB (PostGIS specific -- a WKB geometry in\nhexadecimal [#fnewkb]_), and GeoJSON [#fngeojson]_ (requires GDAL). Essentially,\nif the input is not a ``GEOSGeometry`` object, the geometry field will attempt to\ncreate a ``GEOSGeometry`` instance from the input.\n\nFor more information creating :class:`~django.contrib.gis.geos.GEOSGeometry`\nobjects, refer to the :ref:`GEOS tutorial <geos-tutorial>`.\n\n.. _spatial-lookups-intro:\n\nSpatial Lookups\n===============\n\nGeoDjango's lookup types may be used with any manager method like\n``filter()``, ``exclude()``, etc.  However, the lookup types unique to\nGeoDjango are only available on geometry fields.\nFilters on 'normal' fields (e.g. :class:`~django.db.models.CharField`)\nmay be chained with those on geographic fields.  Thus, geographic queries\ntake the following general form (assuming  the ``Zipcode`` model used in the\n:ref:`ref-gis-model-api`)::\n\n    >>> qs = Zipcode.objects.filter(<field>__<lookup_type>=<parameter>)\n    >>> qs = Zipcode.objects.exclude(...)\n\nFor example::\n\n    >>> qs = Zipcode.objects.filter(poly__contains=pnt)\n\nIn this case, ``poly`` is the geographic field, :lookup:`contains <gis-contains>`\nis the spatial lookup type, and ``pnt`` is the parameter (which may be a\n:class:`~django.contrib.gis.geos.GEOSGeometry` object or a string of\nGeoJSON , WKT, or HEXEWKB).\n\nA complete reference can be found in the :ref:`spatial lookup reference\n<spatial-lookups>`.\n\n.. note::\n\n    GeoDjango constructs spatial SQL with the :class:`GeoQuerySet`, a\n    subclass of :class:`~django.db.models.query.QuerySet`.  The\n    :class:`GeoManager` instance attached to your model is what\n    enables use of :class:`GeoQuerySet`.\n\n.. _distance-queries:\n\nDistance Queries\n================\n\nIntroduction\n------------\nDistance calculations with spatial data is tricky because, unfortunately,\nthe Earth is not flat.  Some distance queries with fields in a geographic\ncoordinate system may have to be expressed differently because of\nlimitations in PostGIS.  Please see the :ref:`selecting-an-srid` section\nin the :ref:`ref-gis-model-api` documentation for more details.\n\n.. _distance-lookups-intro:\n\nDistance Lookups\n----------------\n*Availability*: PostGIS, Oracle, SpatiaLite\n\nThe following distance lookups are available:\n\n* :lookup:`distance_lt`\n* :lookup:`distance_lte`\n* :lookup:`distance_gt`\n* :lookup:`distance_gte`\n* :lookup:`dwithin`\n\n.. note::\n\n    For *measuring*, rather than querying on distances, use the\n    :meth:`GeoQuerySet.distance` method.\n\nDistance lookups take a tuple parameter comprising:\n\n#. A geometry to base calculations from; and\n#. A number or :class:`~django.contrib.gis.measure.Distance` object containing the distance.\n\nIf a :class:`~django.contrib.gis.measure.Distance` object is used,\nit may be expressed in any units (the SQL generated will use units\nconverted to those of the field); otherwise, numeric parameters are assumed\nto be in the units of the field.\n\n.. note::\n\n    For users of PostGIS 1.4 and below, the routine ``ST_Distance_Sphere``\n    is used by default for calculating distances on geographic coordinate systems\n    (e.g., WGS84) -- which may only be called with point geometries [#fndistsphere14]_.\n    Thus, geographic distance lookups on traditional PostGIS geometry columns are\n    only allowed on :class:`PointField` model fields using a point for the\n    geometry parameter.\n\n.. note::\n\n    In PostGIS 1.5, ``ST_Distance_Sphere`` does *not* limit the geometry types\n    geographic distance queries are performed with. [#fndistsphere15]_  However,\n    these queries may take a long time, as great-circle distances must be\n    calculated on the fly for *every* row in the query.  This is because the\n    spatial index on traditional geometry fields cannot be used.\n\n    For much better performance on WGS84 distance queries, consider using\n    :ref:`geography columns <geography-type>` in your database instead because\n    they are able to use their spatial index in distance queries.\n    You can tell GeoDjango to use a geography column by setting ``geography=True``\n    in your field definition.\n\nFor example, let's say we have a ``SouthTexasCity`` model (from the\n`GeoDjango distance tests`__ ) on a *projected* coordinate system valid for cities\nin southern Texas::\n\n    from django.contrib.gis.db import models\n\n    class SouthTexasCity(models.Model):\n        name = models.CharField(max_length=30)\n        # A projected coordinate system (only valid for South Texas!)\n        # is used, units are in meters.\n        point = models.PointField(srid=32140)\n        objects = models.GeoManager()\n\nThen distance queries may be performed as follows::\n\n    >>> from django.contrib.gis.geos import *\n    >>> from django.contrib.gis.measure import D # ``D`` is a shortcut for ``Distance``\n    >>> from geoapp import SouthTexasCity\n    # Distances will be calculated from this point, which does not have to be projected.\n    >>> pnt = fromstr('POINT(-96.876369 29.905320)', srid=4326)\n    # If numeric parameter, units of field (meters in this case) are assumed.\n    >>> qs = SouthTexasCity.objects.filter(point__distance_lte=(pnt, 7000))\n    # Find all Cities within 7 km, > 20 miles away, and > 100 chains  away (an obscure unit)\n    >>> qs = SouthTexasCity.objects.filter(point__distance_lte=(pnt, D(km=7)))\n    >>> qs = SouthTexasCity.objects.filter(point__distance_gte=(pnt, D(mi=20)))\n    >>> qs = SouthTexasCity.objects.filter(point__distance_gte=(pnt, D(chain=100)))\n\n__ https://github.com/django/django/blob/master/django/contrib/gis/tests/distapp/models.py\n\n.. _compatibility-table:\n\nCompatibility Tables\n====================\n\n.. _spatial-lookup-compatibility:\n\nSpatial Lookups\n---------------\n\nThe following table provides a summary of what spatial lookups are available\nfor each spatial database backend.\n\n=================================  =========  ========  ============ ==========\nLookup Type                        PostGIS    Oracle    MySQL [#]_   SpatiaLite\n=================================  =========  ========  ============ ==========\n:lookup:`bbcontains`               X                    X            X\n:lookup:`bboverlaps`               X                    X            X\n:lookup:`contained`                X                    X            X\n:lookup:`contains <gis-contains>`  X          X         X            X\n:lookup:`contains_properly`        X\n:lookup:`coveredby`                X          X\n:lookup:`covers`                   X          X\n:lookup:`crosses`                  X                                 X\n:lookup:`disjoint`                 X          X         X            X\n:lookup:`distance_gt`              X          X                      X\n:lookup:`distance_gte`             X          X                      X\n:lookup:`distance_lt`              X          X                      X\n:lookup:`distance_lte`             X          X                      X\n:lookup:`dwithin`                  X          X\n:lookup:`equals`                   X          X         X            X\n:lookup:`exact`                    X          X         X            X\n:lookup:`intersects`               X          X         X            X\n:lookup:`overlaps`                 X          X         X            X\n:lookup:`relate`                   X          X                      X\n:lookup:`same_as`                  X          X         X            X\n:lookup:`touches`                  X          X         X            X\n:lookup:`within`                   X          X         X            X\n:lookup:`left`                     X\n:lookup:`right`                    X\n:lookup:`overlaps_left`            X\n:lookup:`overlaps_right`           X\n:lookup:`overlaps_above`           X\n:lookup:`overlaps_below`           X\n:lookup:`strictly_above`           X\n:lookup:`strictly_below`           X\n=================================  =========  ========  ============ ==========\n\n.. _geoqueryset-method-compatibility:\n\n``GeoQuerySet`` Methods\n-----------------------\nThe following table provides a summary of what :class:`GeoQuerySet` methods\nare available on each spatial backend.  Please note that MySQL does not\nsupport any of these methods, and is thus excluded from the table.\n\n====================================  =======  ======  ==========\nMethod                                PostGIS  Oracle  SpatiaLite\n====================================  =======  ======  ==========\n:meth:`GeoQuerySet.area`              X        X       X\n:meth:`GeoQuerySet.centroid`          X        X       X\n:meth:`GeoQuerySet.collect`           X\n:meth:`GeoQuerySet.difference`        X        X       X\n:meth:`GeoQuerySet.distance`          X        X       X\n:meth:`GeoQuerySet.envelope`          X                X\n:meth:`GeoQuerySet.extent`            X        X\n:meth:`GeoQuerySet.extent3d`          X\n:meth:`GeoQuerySet.force_rhr`         X\n:meth:`GeoQuerySet.geohash`           X\n:meth:`GeoQuerySet.geojson`           X                X\n:meth:`GeoQuerySet.gml`               X        X       X\n:meth:`GeoQuerySet.intersection`      X        X       X\n:meth:`GeoQuerySet.kml`               X                X\n:meth:`GeoQuerySet.length`            X        X       X\n:meth:`GeoQuerySet.make_line`         X\n:meth:`GeoQuerySet.mem_size`          X\n:meth:`GeoQuerySet.num_geom`          X        X       X\n:meth:`GeoQuerySet.num_points`        X        X       X\n:meth:`GeoQuerySet.perimeter`         X        X\n:meth:`GeoQuerySet.point_on_surface`  X        X       X\n:meth:`GeoQuerySet.reverse_geom`      X        X\n:meth:`GeoQuerySet.scale`             X                X\n:meth:`GeoQuerySet.snap_to_grid`      X\n:meth:`GeoQuerySet.svg`               X                X\n:meth:`GeoQuerySet.sym_difference`    X        X       X\n:meth:`GeoQuerySet.transform`         X        X       X\n:meth:`GeoQuerySet.translate`         X                X\n:meth:`GeoQuerySet.union`             X        X       X\n:meth:`GeoQuerySet.unionagg`          X        X       X\n====================================  =======  ======  ==========\n\n.. rubric:: Footnotes\n.. [#fnwkt] *See* Open Geospatial Consortium, Inc., `OpenGIS Simple Feature Specification For SQL <http://www.opengis.org/docs/99-049.pdf>`_, Document 99-049 (May 5, 1999), at  Ch. 3.2.5, p. 3-11 (SQL Textual Representation of Geometry).\n.. [#fnewkb] *See* `PostGIS EWKB, EWKT and Canonical Forms <http://postgis.refractions.net/documentation/manual-1.5/ch04.html#EWKB_EWKT>`_, PostGIS documentation at Ch. 4.1.2.\n.. [#fngeojson] *See* Howard Butler, Martin Daly, Allan Doyle, Tim Schaub, & Christopher Schmidt, `The GeoJSON Format Specification <http://geojson.org/geojson-spec.html>`_, Revision 1.0 (June 16, 2008).\n.. [#fndistsphere14] *See* `PostGIS 1.4 documentation <http://postgis.refractions.net/documentation/manual-1.4/ST_Distance_Sphere.html>`_ on ``ST_distance_sphere``.\n.. [#fndistsphere15] *See* `PostGIS 1.5 documentation <http://postgis.refractions.net/documentation/manual-1.5/ST_Distance_Sphere.html>`_ on ``ST_distance_sphere``.\n.. [#fnmysqlidx] *See* `Creating Spatial Indexes <http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-indexes.html>`_\n   in the MySQL 5.1 Reference Manual:\n\n       For MyISAM tables, ``SPATIAL INDEX`` creates an R-tree index. For storage\n       engines that support nonspatial indexing of spatial columns, the engine\n       creates a B-tree index. A B-tree index on spatial values will be useful\n       for exact-value lookups, but not for range scans.\n\n.. [#] Refer :ref:`mysql-spatial-limitations` section for more details.\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/contrib/gis/deployment.txt",
    "content": "===================\nDeploying GeoDjango\n===================\n\nBasically, the deployment of a GeoDjango application is not different from\nthe deployment of a normal Django application. Please consult Django's\n:doc:`deployment documentation </howto/deployment/index>`.\n\n.. warning::\n\n    GeoDjango uses the GDAL geospatial library which is\n    not thread safe at this time.  Thus, it is *highly* recommended\n    to not use threading when deploying -- in other words, use an\n    appropriate configuration of Apache or the prefork method\n    when using FastCGI through another Web server.\n\n    For example, when configuring your application with ``mod_wsgi``,\n    set the ``WSGIDaemonProcess`` attribute ``threads`` to ``1``, unless\n    Apache may crash when running your GeoDjango application.  Increase the\n    number of ``processes`` instead.\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/contrib/gis/feeds.txt",
    "content": "================\nGeographic Feeds\n================\n\n.. module:: django.contrib.gis.feeds\n   :synopsis: GeoDjango's framework for generating spatial feeds.\n\nGeoDjango has its own :class:`Feed` subclass that may embed location information\nin RSS/Atom feeds formatted according to either the `Simple GeoRSS`__ or\n`W3C Geo`_ standards.  Because GeoDjango's syndication API is a superset of\nDjango's, please consult :doc:`Django's syndication documentation\n</ref/contrib/syndication>` for details on general usage.\n\n.. _W3C Geo: http://www.w3.org/2003/01/geo/\n\n__ http://georss.org/1.0#simple\n\nExample\n=======\n\nAPI Reference\n=============\n\n``Feed`` Subclass\n-----------------\n\n.. class:: Feed\n\n   In addition to methods provided by\n   the :class:`django.contrib.syndication.views.Feed`\n   base class, GeoDjango's ``Feed`` class provides\n   the following overrides.  Note that these overrides may be done in multiple ways::\n\n       from django.contrib.gis.feeds import Feed\n\n       class MyFeed(Feed):\n\n            # First, as a class attribute.\n            geometry = ...\n            item_geometry = ...\n\n            # Also a function with no arguments\n            def geometry(self):\n                ...\n\n            def item_geometry(self):\n                ...\n\n            # And as a function with a single argument\n            def geometry(self, obj):\n                ...\n\n            def item_geometry(self, item):\n                ...\n\n   .. method:: geometry(obj)\n\n   Takes the object returned by ``get_object()`` and returns the *feed's*\n   geometry.  Typically this is a ``GEOSGeometry`` instance, or can be a\n   tuple to represent a point or a box.  For example::\n\n       class ZipcodeFeed(Feed):\n\n           def geometry(self, obj):\n               # Can also return: `obj.poly`, and `obj.poly.centroid`.\n               return obj.poly.extent # tuple like: (X0, Y0, X1, Y1).\n\n   .. method:: item_geometry(item)\n\n   Set this to return the geometry for each *item* in the feed.  This\n   can be a ``GEOSGeometry`` instance, or a tuple that represents a\n   point coordinate or bounding box.  For example::\n\n        class ZipcodeFeed(Feed):\n\n            def item_geometry(self, obj):\n                # Returns the polygon.\n                return obj.poly\n\n``SyndicationFeed`` Subclasses\n------------------------------\n\nThe following :class:`django.utils.feedgenerator.SyndicationFeed` subclasses\nare available:\n\n.. class:: GeoRSSFeed\n\n.. class:: GeoAtom1Feed\n\n.. class:: W3CGeoFeed\n\n.. note::\n\n    `W3C Geo`_ formatted feeds only support\n    :class:`~django.contrib.gis.db.models.PointField` geometries.\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/contrib/gis/gdal.txt",
    "content": ".. _ref-gdal:\n\n========\nGDAL API\n========\n\n.. module:: django.contrib.gis.gdal\n   :synopsis: GeoDjango's high-level interface to the GDAL library.\n\n`GDAL`__ stands for **G**\\ eospatial **D**\\ ata **A**\\ bstraction **L**\\ ibrary,\nand is a veritable \"swiss army knife\" of GIS data functionality.  A subset\nof GDAL is the `OGR`__ Simple Features Library, which specializes\nin reading and writing vector geographic data in a variety of standard\nformats.\n\nGeoDjango provides a high-level Python interface for some of the\ncapabilities of OGR, including the reading and coordinate transformation\nof vector spatial data.\n\n.. note::\n\n     Although the module is named ``gdal``, GeoDjango only supports\n     some of the capabilities of OGR.  Thus, none of GDAL's features\n     with respect to raster (image) data are supported at this time.\n\n__ http://www.gdal.org/\n__ http://www.gdal.org/ogr/\n\nOverview\n========\n\nSample Data\n-----------\n\nThe GDAL/OGR tools described here are designed to help you read in\nyour geospatial data, in order for most of them to be useful you have\nto have some data to work with.  If you're starting out and don't yet\nhave any data of your own to use, GeoDjango comes with a number of\nsimple data sets that you can use for testing.  This snippet will\ndetermine where these sample files are installed on your computer::\n\n    >>> import os\n    >>> import django.contrib.gis\n    >>> GIS_PATH = os.path.dirname(django.contrib.gis.__file__)\n    >>> CITIES_PATH = os.path.join(GIS_PATH, 'tests/data/cities/cities.shp')\n\nVector Data Source Objects\n==========================\n\n``DataSource``\n--------------\n\n:class:`DataSource` is a wrapper for the OGR data source object that\nsupports reading data from a variety of OGR-supported geospatial file\nformats and data sources using a simple, consistent interface.  Each\ndata source is represented by a :class:`DataSource` object which contains\none or more layers of data.  Each layer, represented by a :class:`Layer`\nobject, contains some number of geographic features (:class:`Feature`),\ninformation about the type of features contained in that layer (e.g.\npoints, polygons, etc.), as well as the names and types of any\nadditional fields (:class:`Field`) of data that may be associated with\neach feature in that layer.\n\n.. class:: DataSource(ds_input)\n\n   The constructor for ``DataSource`` just a single parameter: the path of\n   the file you want to read.  However, OGR\n   also supports a variety of more complex data sources, including\n   databases, that may be accessed by passing a special name string instead\n   of a path.  For more information, see the `OGR Vector Formats`__\n   documentation.  The :attr:`name` property of a ``DataSource``\n   instance gives the OGR name of the underlying data source that it is\n   using.\n\n   Once you've created your ``DataSource``, you can find out how many\n   layers of data it contains by accessing the :attr:`layer_count` property,\n   or (equivalently) by using the ``len()`` function.  For information on\n   accessing the layers of data themselves, see the next section::\n\n       >>> from django.contrib.gis.gdal import DataSource\n       >>> ds = DataSource(CITIES_PATH)\n       >>> ds.name                         # The exact filename may be different on your computer\n       '/usr/local/lib/python2.6/site-packages/django/contrib/gis/tests/data/cities/cities.shp'\n       >>> ds.layer_count                  # This file only contains one layer\n       1\n\n   .. attribute:: layer_count\n\n   Returns the number of layers in the data source.\n\n   .. attribute:: name\n\n   Returns the name of the data source.\n\n__ http://www.gdal.org/ogr/ogr_formats.html\n\n``Layer``\n---------\n\n.. class:: Layer\n\n   ``Layer`` is a wrapper for a layer of data in a ``DataSource`` object.\n   You never create a ``Layer`` object directly.  Instead, you retrieve\n   them from a :class:`DataSource` object, which is essentially a standard\n   Python container of ``Layer`` objects.  For example, you can access a\n   specific layer by its index (e.g. ``ds[0]`` to access the first\n   layer), or you can iterate over all the layers in the container in a\n   ``for`` loop.  The ``Layer`` itself acts as a container for geometric\n   features.\n\n   Typically, all the features in a given layer have the same geometry type.\n   The :attr:`geom_type` property of a layer is an :class:`OGRGeomType`\n   that identifies the feature type.  We can use it to print out some basic\n   information about each layer in a :class:`DataSource`::\n\n       >>> for layer in ds:\n       ...     print('Layer \"%s\": %i %ss' % (layer.name, len(layer), layer.geom_type.name))\n       ...\n       Layer \"cities\": 3 Points\n\n   The example output is from the cities data source, loaded above, which\n   evidently contains one layer, called ``\"cities\"``, which contains three\n   point features.  For simplicity, the examples below assume that you've\n   stored that layer in the variable ``layer``::\n\n       >>> layer = ds[0]\n\n   .. attribute:: name\n\n   Returns the name of this layer in the data source.\n\n       >>> layer.name\n       'cities'\n\n   .. attribute:: num_feat\n\n   Returns the number of features in the layer.  Same as ``len(layer)``::\n\n       >>> layer.num_feat\n       3\n\n   .. attribute:: geom_type\n\n   Returns the geometry type of the layer, as an :class:`OGRGeomType`\n   object::\n\n       >>> layer.geom_type.name\n       'Point'\n\n   .. attribute:: num_fields\n\n   Returns the number of fields in the layer, i.e the number of fields of\n   data associated with each feature in the layer::\n\n       >>> layer.num_fields\n       4\n\n   .. attribute:: fields\n\n   Returns a list of the names of each of the fields in this layer::\n\n       >>> layer.fields\n       ['Name', 'Population', 'Density', 'Created']\n\n   .. attribute field_types\n\n   Returns a list of the data types of each of the fields in this layer.\n   These are subclasses of ``Field``, discussed below::\n\n       >>> [ft.__name__ for ft in layer.field_types]\n       ['OFTString', 'OFTReal', 'OFTReal', 'OFTDate']\n\n   .. attribute:: field_widths\n\n   Returns a list of the maximum field widths for each of the fields in\n   this layer::\n\n      >>> layer.field_widths\n      [80, 11, 24, 10]\n\n   .. attribute:: field_precisions\n\n   Returns a list of the numeric precisions for each of the fields in\n   this layer.  This is meaningless (and set to zero) for non-numeric\n   fields::\n\n       >>> layer.field_precisions\n       [0, 0, 15, 0]\n\n   .. attribute:: extent\n\n   Returns the spatial extent of this layer, as an :class:`Envelope`\n   object::\n\n      >>> layer.extent.tuple\n      (-104.609252, 29.763374, -95.23506, 38.971823)\n\n   .. attribute:: srs\n\n   Property that returns the :class:`SpatialReference` associated\n   with this layer::\n\n       >>> print(layer.srs)\n       GEOGCS[\"GCS_WGS_1984\",\n           DATUM[\"WGS_1984\",\n               SPHEROID[\"WGS_1984\",6378137,298.257223563]],\n           PRIMEM[\"Greenwich\",0],\n           UNIT[\"Degree\",0.017453292519943295]]\n\n   If the :class:`Layer` has no spatial reference information associated\n   with it, ``None`` is returned.\n\n   .. attribute:: spatial_filter\n\n   Property that may be used to retrieve or set a spatial filter for this\n   layer.  A spatial filter can only be set with an :class:`OGRGeometry`\n   instance, a 4-tuple extent, or ``None``.  When set with something\n   other than ``None``, only features that intersect the filter will be\n   returned when iterating over the layer::\n\n       >>> print(layer.spatial_filter)\n       None\n       >>> print(len(layer))\n       3\n       >>> [feat.get('Name') for feat in layer]\n       ['Pueblo', 'Lawrence', 'Houston']\n       >>> ks_extent = (-102.051, 36.99, -94.59, 40.00) # Extent for state of Kansas\n       >>> layer.spatial_filter = ks_extent\n       >>> len(layer)\n       1\n       >>> [feat.get('Name') for feat in layer]\n       ['Lawrence']\n       >>> layer.spatial_filter = None\n       >>> len(layer)\n       3\n\n   .. method:: get_fields()\n\n   A method that returns a list of the values of a given field for each\n   feature in the layer::\n\n      >>> layer.get_fields('Name')\n      ['Pueblo', 'Lawrence', 'Houston']\n\n   .. method:: get_geoms([geos=False])\n\n   A method that returns a list containing the geometry of each feature\n   in the layer.  If the optional argument ``geos`` is set to ``True``\n   then the geometries are converted to :class:`~django.contrib.gis.geos.GEOSGeometry`\n   objects. Otherwise, they are returned as :class:`OGRGeometry` objects::\n\n       >>> [pt.tuple for pt in layer.get_geoms()]\n       [(-104.609252, 38.255001), (-95.23506, 38.971823), (-95.363151, 29.763374)]\n\n   .. method:: test_capability(capability)\n\n   Returns a boolean indicating whether this layer supports the\n   given capability (a string).  Examples of valid capability strings\n   include: ``'RandomRead'``, ``'SequentialWrite'``, ``'RandomWrite'``,\n   ``'FastSpatialFilter'``, ``'FastFeatureCount'``, ``'FastGetExtent'``,\n   ``'CreateField'``, ``'Transactions'``, ``'DeleteFeature'``, and\n   ``'FastSetNextByIndex'``.\n\n``Feature``\n-----------\n\n.. class:: Feature\n\n\n   ``Feature`` wraps an OGR feature.  You never create a ``Feature``\n   object directly.  Instead, you retrieve them from a :class:`Layer` object.\n   Each feature consists of a geometry and a set of fields containing\n   additional properties.  The geometry of a field is accessible via its\n   ``geom`` property, which returns an :class:`OGRGeometry` object.  A ``Feature``\n   behaves like a standard Python container for its fields, which it returns as\n   :class:`Field` objects: you can access a field directly by its index or name,\n   or you can iterate over a feature's fields, e.g. in a ``for`` loop.\n\n   .. attribute:: geom\n\n   Returns the geometry for this feature, as an ``OGRGeometry`` object::\n\n       >>> city.geom.tuple\n       (-104.609252, 38.255001)\n\n   .. attribute:: get\n\n   A method that returns the value of the given field (specified by name)\n   for this feature, **not** a ``Field`` wrapper object::\n\n       >>> city.get('Population')\n       102121\n\n   .. attribute:: geom_type\n\n   Returns the type of geometry for this feature, as an :class:`OGRGeomType`\n   object.  This will be the same for all features in a given layer, and\n   is equivalent to the :attr:`Layer.geom_type` property of the\n   :class:`Layer` object the feature came from.\n\n   .. attribute:: num_fields\n\n   Returns the number of fields of data associated with the feature.\n   This will be the same for all features in a given layer, and is\n   equivalent to the :attr:`Layer.num_fields` property of the\n   :class:`Layer` object the feature came from.\n\n   .. attribute:: fields\n\n   Returns a list of the names of the fields of data associated with the\n   feature.  This will be the same for all features in a given layer, and\n   is equivalent to the :attr:`Layer.fields` property of the :class:`Layer`\n   object the feature came from.\n\n   .. attribute:: fid\n\n   Returns the feature identifier within the layer::\n\n       >>> city.fid\n       0\n\n   .. attribute:: layer_name\n\n   Returns the name of the :class:`Layer` that the feature came from.\n   This will be the same for all features in a given layer::\n\n       >>> city.layer_name\n       'cities'\n\n   .. attribute:: index\n\n   A method that returns the index of the given field name.  This will be\n   the same for all features in a given layer::\n\n       >>> city.index('Population')\n       1\n\n``Field``\n---------\n\n.. class:: Field\n\n   .. attribute:: name\n\n   Returns the name of this field::\n\n       >>> city['Name'].name\n       'Name'\n\n   .. attribute:: type\n\n   Returns the OGR type of this field, as an integer.  The\n   ``FIELD_CLASSES`` dictionary maps these values onto\n   subclasses of ``Field``::\n\n       >>> city['Density'].type\n       2\n\n   .. attribute:: type_name\n\n   Returns a string with the name of the data type of this field::\n\n       >>> city['Name'].type_name\n       'String'\n\n   .. attribute:: value\n\n   Returns the value of this field.  The ``Field`` class itself\n   returns the value as a string, but each subclass returns the\n   value in the most appropriate form::\n\n       >>> city['Population'].value\n       102121\n\n   .. attribute:: width\n\n   Returns the width of this field::\n\n       >>> city['Name'].width\n       80\n\n   .. attribute:: precision\n\n   Returns the numeric precision of this field.  This is meaningless (and\n   set to zero) for non-numeric fields::\n\n       >>> city['Density'].precision\n       15\n\n   .. method:: as_double()\n\n   Returns the value of the field as a double (float)::\n\n       >>> city['Density'].as_double()\n       874.7\n\n   .. method:: as_int()\n\n   Returns the value of the field as an integer::\n\n       >>> city['Population'].as_int()\n       102121\n\n   .. method:: as_string()\n\n   Returns the value of the field as a string::\n\n       >>> city['Name'].as_string()\n       'Pueblo'\n\n   .. method:: as_datetime()\n\n   Returns the value of the field as a tuple of date and time components::\n\n       >>> city['Created'].as_datetime()\n       (c_long(1999), c_long(5), c_long(23), c_long(0), c_long(0), c_long(0), c_long(0))\n\n``Driver``\n----------\n\n.. class:: Driver(dr_input)\n\n   The ``Driver`` class is used internally to wrap an OGR :class:`DataSource` driver.\n\n   .. attribute:: driver_count\n\n   Returns the number of OGR vector drivers currently registered.\n\n\nOGR Geometries\n==============\n\n``OGRGeometry``\n---------------\n\n:class:`OGRGeometry` objects share similar functionality with\n:class:`~django.contrib.gis.geos.GEOSGeometry` objects, and are thin\nwrappers around OGR's internal geometry representation.  Thus,\nthey allow for more efficient access to data when using :class:`DataSource`.\nUnlike its GEOS counterpart, :class:`OGRGeometry` supports spatial reference\nsystems and coordinate transformation::\n\n    >>> from django.contrib.gis.gdal import OGRGeometry\n    >>> polygon = OGRGeometry('POLYGON((0 0, 5 0, 5 5, 0 5))')\n\n.. class:: OGRGeometry(geom_input[, srs=None])\n\n   This object is a wrapper for the `OGR Geometry`__ class.\n   These objects are instantiated directly from the given ``geom_input``\n   parameter, which may be a string containing WKT, HEX, GeoJSON, a ``buffer``\n   containing WKB data, or an :class:`OGRGeomType` object. These objects\n   are also returned from the :class:`Feature.geom` attribute, when\n   reading vector data from :class:`Layer` (which is in turn a part of\n   a :class:`DataSource`).\n\n   __ http://www.gdal.org/ogr/classOGRGeometry.html\n\n   .. classmethod:: from_bbox(bbox)\n\n   Constructs a :class:`Polygon` from the given bounding-box (a 4-tuple).\n\n   .. method:: __len__\n\n   Returns the number of points in a :class:`LineString`, the\n   number of rings in a :class:`Polygon`, or the number of geometries in a\n   :class:`GeometryCollection`. Not applicable to other geometry types.\n\n   .. method:: __iter__\n\n   Iterates over the points in a :class:`LineString`, the rings in a\n   :class:`Polygon`, or the geometries in a :class:`GeometryCollection`.\n   Not applicable to other geometry types.\n\n   .. method:: __getitem__\n\n   Returns the point at the specified index for a :class:`LineString`, the\n   interior ring at the specified index for a :class:`Polygon`, or the geometry\n   at the specified index in a :class:`GeometryCollection`.  Not applicable to\n   other geometry types.\n\n   .. attribute:: dimension\n\n   Returns the number of coordinated dimensions of the geometry, i.e. 0\n   for points, 1 for lines, and so forth::\n\n       >> polygon.dimension\n       2\n\n   .. attribute:: coord_dim\n\n   Returns or sets the coordinate dimension of this geometry.  For\n   example, the value would be 2 for two-dimensional geometries.\n\n   .. attribute:: geom_count\n\n   Returns the number of elements in this geometry::\n\n       >>> polygon.geom_count\n       1\n\n   .. attribute:: point_count\n\n   Returns the number of points used to describe this geometry::\n\n      >>> polygon.point_count\n      4\n\n   .. attribute:: num_points\n\n   Alias for :attr:`point_count`.\n\n   .. attribute:: num_coords\n\n   Alias for :attr:`point_count`.\n\n   .. attribute:: geom_type\n\n   Returns the type of this geometry, as an :class:`OGRGeomType` object.\n\n   .. attribute:: geom_name\n\n   Returns the name of the type of this geometry::\n\n       >>> polygon.geom_name\n       'POLYGON'\n\n   .. attribute:: area\n\n   Returns the area of this geometry, or 0 for geometries that do not\n   contain an area::\n\n       >>> polygon.area\n       25.0\n\n   .. attribute:: envelope\n\n   Returns the envelope of this geometry, as an :class:`Envelope` object.\n\n   .. attribute:: extent\n\n   Returns the envelope of this geometry as a 4-tuple, instead of as an\n   :class:`Envelope` object::\n\n       >>> point.extent\n       (0.0, 0.0, 5.0, 5.0)\n\n   .. attribute:: srs\n\n   This property controls the spatial reference for this geometry, or\n   ``None`` if no spatial reference system has been assigned to it.\n   If assigned, accessing this property returns a :class:`SpatialReference`\n   object.  It may be set with another :class:`SpatialReference` object,\n   or any input that :class:`SpatialReference` accepts. Example::\n\n       >>> city.geom.srs.name\n       'GCS_WGS_1984'\n\n   .. attribute:: srid\n\n   Returns or sets the spatial reference identifier corresponding to\n   :class:`SpatialReference` of this geometry.  Returns ``None`` if\n   there is no spatial reference information associated with this\n   geometry, or if an SRID cannot be determined.\n\n   .. attribute:: geos\n\n   Returns a :class:`~django.contrib.gis.geos.GEOSGeometry` object\n   corresponding to this geometry.\n\n   .. attribute:: gml\n\n   Returns a string representation of this geometry in GML format::\n\n       >>> OGRGeometry('POINT(1 2)').gml\n       '<gml:Point><gml:coordinates>1,2</gml:coordinates></gml:Point>'\n\n   .. attribute:: hex\n\n   Returns a string representation of this geometry in HEX WKB format::\n\n       >>> OGRGeometry('POINT(1 2)').hex\n       '0101000000000000000000F03F0000000000000040'\n\n   .. attribute:: json\n\n   Returns a string representation of this geometry in JSON format::\n\n       >>> OGRGeometry('POINT(1 2)').json\n       '{ \"type\": \"Point\", \"coordinates\": [ 1.000000, 2.000000 ] }'\n\n\n   .. attribute:: kml\n\n   Returns a string representation of this geometry in KML format.\n\n   .. attribute:: wkb_size\n\n   Returns the size of the WKB buffer needed to hold a WKB representation\n   of this geometry::\n\n       >>> OGRGeometry('POINT(1 2)').wkb_size\n       21\n\n   .. attribute:: wkb\n\n   Returns a ``buffer`` containing a WKB representation of this geometry.\n\n   .. attribute:: wkt\n\n   Returns a string representation of this geometry in WKT format.\n\n   .. attribute:: ewkt\n\n   Returns the EWKT representation of this geometry.\n\n   .. method:: clone()\n\n   Returns a new :class:`OGRGeometry` clone of this geometry object.\n\n   .. method:: close_rings()\n\n   If there are any rings within this geometry that have not been closed,\n   this routine will do so by adding the starting point to the end::\n\n       >>> triangle = OGRGeometry('LINEARRING (0 0,0 1,1 0)')\n       >>> triangle.close_rings()\n       >>> triangle.wkt\n       'LINEARRING (0 0,0 1,1 0,0 0)'\n\n   .. method:: transform(coord_trans, clone=False)\n\n   Transforms this geometry to a different spatial reference system.  May\n   take a :class:`CoordTransform` object, a :class:`SpatialReference` object,\n   or any other input accepted by :class:`SpatialReference` (including\n   spatial reference WKT and PROJ.4 strings, or an integer SRID).\n   By default nothing is returned and the geometry is transformed in-place.\n   However, if the ``clone`` keyword is set to ``True`` then a transformed\n   clone of this geometry is returned instead.\n\n   .. method:: intersects(other)\n\n   Returns ``True`` if this geometry intersects the other, otherwise returns\n   ``False``.\n\n   .. method:: equals(other)\n\n   Returns ``True`` if this geometry is equivalent to the other, otherwise returns\n   ``False``.\n\n   .. method:: disjoint(other)\n\n   Returns ``True`` if this geometry is spatially disjoint to (i.e. does\n   not intersect) the other, otherwise returns ``False``.\n\n   .. method:: touches(other)\n\n   Returns ``True`` if this geometry touches the other, otherwise returns\n   ``False``.\n\n   .. method:: crosses(other)\n\n   Returns ``True`` if this geometry crosses the other, otherwise returns\n   ``False``.\n\n   .. method:: within(other)\n\n   Returns ``True`` if this geometry is contained within the other, otherwise returns\n   ``False``.\n\n   .. method:: contains(other)\n\n   Returns ``True`` if this geometry contains the other, otherwise returns\n   ``False``.\n\n   .. method:: overlaps(other)\n\n   Returns ``True`` if this geometry overlaps the other, otherwise returns\n   ``False``.\n\n   .. method:: boundary\n\n   The boundary of this geometry, as a new :class:`OGRGeometry` object.\n\n   .. attribute:: convex_hull\n\n   The smallest convex polygon that contains this geometry, as a new\n   :class:`OGRGeometry` object.\n\n   .. method:: difference\n\n   Returns the region consisting of the difference of this geometry and\n   the other, as a new :class:`OGRGeometry` object.\n\n   .. method:: intersection\n\n   Returns the region consisting of the intersection of this geometry and\n   the other, as a new :class:`OGRGeometry` object.\n\n   .. method:: sym_difference\n\n   Returns the region consisting of the symmetric difference of this\n   geometry and the other, as a new :class:`OGRGeometry` object.\n\n   .. method:: union\n\n   Returns the region consisting of the union of this geometry and\n   the other, as a new :class:`OGRGeometry` object.\n\n   .. attribute:: tuple\n\n   Returns the coordinates of a point geometry as a tuple, the\n   coordinates of a line geometry as a tuple of tuples, and so forth::\n\n       >>> OGRGeometry('POINT (1 2)').tuple\n       (1.0, 2.0)\n       >>> OGRGeometry('LINESTRING (1 2,3 4)').tuple\n       ((1.0, 2.0), (3.0, 4.0))\n\n   .. attribute:: coords\n\n   An alias for :attr:`tuple`.\n\n.. class:: Point\n\n   .. attribute:: x\n\n   Returns the X coordinate of this point::\n\n       >>> OGRGeometry('POINT (1 2)').x\n       1.0\n\n   .. attribute:: y\n\n   Returns the Y coordinate of this point::\n\n       >>> OGRGeometry('POINT (1 2)').y\n       2.0\n\n   .. attribute:: z\n\n   Returns the Z coordinate of this point, or ``None`` if the\n   the point does not have a Z coordinate::\n\n       >>> OGRGeometry('POINT (1 2 3)').z\n       3.0\n\n.. class:: LineString\n\n   .. attribute:: x\n\n   Returns a list of X coordinates in this line::\n\n       >>> OGRGeometry('LINESTRING (1 2,3 4)').x\n       [1.0, 3.0]\n\n   .. attribute:: y\n\n   Returns a list of Y coordinates in this line::\n\n       >>> OGRGeometry('LINESTRING (1 2,3 4)').y\n       [2.0, 4.0]\n\n   .. attribute:: z\n\n   Returns a list of Z coordinates in this line, or ``None`` if the\n   line does not have Z coordinates::\n\n       >>> OGRGeometry('LINESTRING (1 2 3,4 5 6)').z\n       [3.0, 6.0]\n\n\n.. class:: Polygon\n\n   .. attribute:: shell\n\n   Returns the shell or exterior ring of this polygon, as a ``LinearRing``\n   geometry.\n\n   .. attribute:: exterior_ring\n\n   An alias for :attr:`shell`.\n\n   .. attribute:: centroid\n\n   Returns a :class:`Point` representing the centroid of this polygon.\n\n.. class:: GeometryCollection\n\n   .. method:: add(geom)\n\n   Adds a geometry to this geometry collection.  Not applicable to other\n   geometry types.\n\n\n``OGRGeomType``\n---------------\n\n.. class:: OGRGeomType(type_input)\n\n   This class allows for the representation of an OGR geometry type\n   in any of several ways::\n\n       >>> from django.contrib.gis.gdal import OGRGeomType\n       >>> gt1 = OGRGeomType(3)             # Using an integer for the type\n       >>> gt2 = OGRGeomType('Polygon')     # Using a string\n       >>> gt3 = OGRGeomType('POLYGON')     # It's case-insensitive\n       >>> print(gt1 == 3, gt1 == 'Polygon') # Equivalence works w/non-OGRGeomType objects\n       True True\n\n   .. attribute:: name\n\n   Returns a short-hand string form of the OGR Geometry type::\n\n       >>> gt1.name\n       'Polygon'\n\n   .. attribute:: num\n\n   Returns the number corresponding to the OGR geometry type::\n\n       >>> gt1.num\n       3\n\n   .. attribute:: django\n\n   Returns the Django field type (a subclass of GeometryField) to use for\n   storing this OGR type, or ``None`` if there is no appropriate Django\n   type::\n\n       >>> gt1.django\n       'PolygonField'\n\n``Envelope``\n------------\n\n.. class:: Envelope(*args)\n\n   Represents an OGR Envelope structure that contains the\n   minimum and maximum X, Y coordinates for a rectangle bounding box.\n   The naming of the variables is compatible with the OGR Envelope\n   C structure.\n\n   .. attribute:: min_x\n\n   The value of the minimum X coordinate.\n\n   .. attribute:: min_y\n\n   The value of the maximum X coordinate.\n\n   .. attribute:: max_x\n\n   The value of the minimum Y coordinate.\n\n   .. attribute:: max_y\n\n   The value of the maximum Y coordinate.\n\n   .. attribute:: ur\n\n   The upper-right coordinate, as a tuple.\n\n   .. attribute:: ll\n\n   The lower-left coordinate, as a tuple.\n\n   .. attribute:: tuple\n\n   A tuple representing the envelope.\n\n   .. attribute:: wkt\n\n   A string representing this envelope as a polygon in WKT format.\n\n\n   .. method:: expand_to_include(self, *args)\n\nCoordinate System Objects\n=========================\n\n``SpatialReference``\n--------------------\n\n.. class:: SpatialReference(srs_input)\n\n   Spatial reference objects are initialized on the given ``srs_input``,\n   which may be one of the following:\n\n   * OGC Well Known Text (WKT) (a string)\n   * EPSG code (integer or string)\n   * PROJ.4 string\n   * A shorthand string for well-known standards (``'WGS84'``, ``'WGS72'``, ``'NAD27'``, ``'NAD83'``)\n\n   Example::\n\n       >>> wgs84 = SpatialReference('WGS84') # shorthand string\n       >>> wgs84 = SpatialReference(4326) # EPSG code\n       >>> wgs84 = SpatialReference('EPSG:4326') # EPSG string\n       >>> proj4 = '+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs '\n       >>> wgs84 = SpatialReference(proj4) # PROJ.4 string\n       >>> wgs84 = SpatialReference(\"\"\"GEOGCS[\"WGS 84\",\n       DATUM[\"WGS_1984\",\n            SPHEROID[\"WGS 84\",6378137,298.257223563,\n                AUTHORITY[\"EPSG\",\"7030\"]],\n            AUTHORITY[\"EPSG\",\"6326\"]],\n        PRIMEM[\"Greenwich\",0,\n            AUTHORITY[\"EPSG\",\"8901\"]],\n        UNIT[\"degree\",0.01745329251994328,\n            AUTHORITY[\"EPSG\",\"9122\"]],\n        AUTHORITY[\"EPSG\",\"4326\"]]\"\"\") # OGC WKT\n\n   .. method:: __getitem__(target)\n\n   Returns the value of the given string attribute node, ``None`` if the node\n   doesn't exist.  Can also take a tuple as a parameter, (target, child),\n   where child is the index of the attribute in the WKT.  For example::\n\n       >>> wkt = 'GEOGCS[\"WGS 84\", DATUM[\"WGS_1984, ... AUTHORITY[\"EPSG\",\"4326\"]]')\n       >>> srs = SpatialReference(wkt) # could also use 'WGS84', or 4326\n       >>> print(srs['GEOGCS'])\n       WGS 84\n       >>> print(srs['DATUM'])\n       WGS_1984\n       >>> print(srs['AUTHORITY'])\n       EPSG\n       >>> print(srs['AUTHORITY', 1]) # The authority value\n       4326\n       >>> print(srs['TOWGS84', 4]) # the fourth value in this wkt\n       0\n       >>> print(srs['UNIT|AUTHORITY']) # For the units authority, have to use the pipe symbol.\n       EPSG\n       >>> print(srs['UNIT|AUTHORITY', 1]) # The authority value for the units\n       9122\n\n   .. method:: attr_value(target, index=0)\n\n   The attribute value for the given target node (e.g. ``'PROJCS'``).\n   The index keyword specifies an index of the child node to return.\n\n   .. method:: auth_name(target)\n\n   Returns the authority name for the given string target node.\n\n   .. method:: auth_code(target)\n\n   Returns the authority code for the given string target node.\n\n   .. method:: clone()\n\n   Returns a clone of this spatial reference object.\n\n   .. method:: identify_epsg()\n\n   This method inspects the WKT of this SpatialReference, and will\n   add EPSG authority nodes where an EPSG identifier is applicable.\n\n   .. method:: from_esri()\n\n   Morphs this SpatialReference from ESRI's format to EPSG\n\n   .. method:: to_esri()\n\n   Morphs this SpatialReference to ESRI's format.\n\n   .. method:: validate()\n\n   Checks to see if the given spatial reference is valid, if not\n   an exception will be raised.\n\n   .. method:: import_epsg(epsg)\n\n   Import spatial reference from EPSG code.\n\n   .. method:: import_proj(proj)\n\n   Import spatial reference from PROJ.4 string.\n\n   .. method:: import_user_input(user_input)\n\n   .. method:: import_wkt(wkt)\n\n   Import spatial reference from WKT.\n\n   .. method:: import_xml(xml)\n\n   Import spatial reference from XML.\n\n   .. attribute:: name\n\n   Returns the name of this Spatial Reference.\n\n   .. attribute:: srid\n\n   Returns the SRID of top-level authority, or ``None`` if undefined.\n\n   .. attribute:: linear_name\n\n   Returns the name of the linear units.\n\n   .. attribute:: linear_units\n\n   Returns the value of the linear units.\n\n   .. attribute:: angular_name\n\n   Returns the name of the angular units.\"\n\n   .. attribute:: angular_units\n\n   Returns the value of the angular units.\n\n   .. attribute:: units\n\n   Returns a 2-tuple of the units value and the units name,\n   and will automatically determines whether to return the linear\n   or angular units.\n\n   .. attribute:: ellisoid\n\n   Returns a tuple of the ellipsoid parameters for this spatial\n   reference: (semimajor axis, semiminor axis, and inverse flattening)\n\n   .. attribute:: semi_major\n\n   Returns the semi major axis of the ellipsoid for this spatial reference.\n\n   .. attribute:: semi_minor\n\n   Returns the semi minor axis of the ellipsoid for this spatial reference.\n\n   .. attribute:: inverse_flattening\n\n   Returns the inverse flattening of the ellipsoid for this spatial reference.\n\n   .. attribute:: geographic\n\n   Returns ``True`` if this spatial reference is geographic\n   (root node is ``GEOGCS``).\n\n   .. attribute:: local\n\n   Returns ``True`` if this spatial reference is local\n   (root node is ``LOCAL_CS``).\n\n   .. attribute:: projected\n\n   Returns ``True`` if this spatial reference is a projected coordinate\n   system (root node is ``PROJCS``).\n\n   .. attribute:: wkt\n\n   Returns the WKT representation of this spatial reference.\n\n   .. attribute:: pretty_wkt\n\n   Returns the 'pretty' representation of the WKT.\n\n   .. attribute:: proj\n\n   Returns the PROJ.4 representation for this spatial reference.\n\n   .. attribute:: proj4\n\n   Alias for :attr:`SpatialReference.proj`.\n\n   .. attribute:: xml\n\n   Returns the XML representation of this spatial reference.\n\n\n``CoordTransform``\n------------------\n\n.. class:: CoordTransform(source, target)\n\nRepresents a coordinate system transform.  It is initialized with two\n:class:`SpatialReference`, representing the source and target coordinate\nsystems, respectively.  These objects should be used when performing\nthe same coordinate transformation repeatedly on different geometries::\n\n    >>> ct = CoordTransform(SpatialReference('WGS84'), SpatialReference('NAD83'))\n    >>> for feat in layer:\n    ...     geom = feat.geom # getting clone of feature geometry\n    ...     geom.transform(ct) # transforming\n\nSettings\n========\n\n.. setting:: GDAL_LIBRARY_PATH\n\nGDAL_LIBRARY_PATH\n-----------------\n\nA string specifying the location of the GDAL library.  Typically,\nthis setting is only used if the GDAL library is in a non-standard\nlocation (e.g., ``/home/john/lib/libgdal.so``).\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/contrib/gis/geoip.txt",
    "content": ".. _ref-geoip:\n\n======================\nGeolocation with GeoIP\n======================\n\n.. module:: django.contrib.gis.geoip\n   :synopsis: High-level Python interface for MaxMind's GeoIP C library.\n\n.. versionchanged:: 1.4\n\n.. note::\n\n    In Django 1.4, the :class:`GeoIP` object was moved out of\n    :mod:`django.contrib.gis.utils` and into its own module, \n    :mod:`django.contrib.gis.geoip`. A shortcut is still provided\n    in ``utils``, but will be removed in Django 1.6.\n\nThe :class:`GeoIP` object is a ctypes wrapper for the\n`MaxMind GeoIP C API`__. [#]_  This interface is a BSD-licensed alternative\nto the GPL-licensed `Python GeoIP`__ interface provided by MaxMind.\n\nIn order to perform IP-based geolocation, the :class:`GeoIP` object requires\nthe GeoIP C libary and either the GeoIP `Country`__ or `City`__ \ndatasets in binary format (the CSV files will not work!).  These datasets may be \n`downloaded from MaxMind`__.  Grab the ``GeoLiteCountry/GeoIP.dat.gz`` and\n``GeoLiteCity.dat.gz`` files and unzip them in a directory corresponding to what\nyou set :setting:`GEOIP_PATH` with in your settings.  See the example and\nreference below for more details.\n\n__ http://www.maxmind.com/app/c\n__ http://www.maxmind.com/app/python\n__ http://www.maxmind.com/app/country\n__ http://www.maxmind.com/app/city\n__ http://www.maxmind.com/download/geoip/database/\n\nExample\n=======\n\nAssuming you have the GeoIP C library installed, here is an example of its\nusage::\n\n     >>> from django.contrib.gis.geoip import GeoIP\n     >>> g = GeoIP()\n     >>> g.country('google.com')\n     {'country_code': 'US', 'country_name': 'United States'}\n     >>> g.city('72.14.207.99')\n     {'area_code': 650,\n     'city': 'Mountain View',\n     'country_code': 'US',\n     'country_code3': 'USA',\n     'country_name': 'United States',\n     'dma_code': 807,\n     'latitude': 37.419200897216797,\n     'longitude': -122.05740356445312,\n     'postal_code': '94043',\n     'region': 'CA'}\n     >>> g.lat_lon('salon.com')\n     (37.789798736572266, -122.39420318603516)\n     >>> g.lon_lat('uh.edu')\n     (-95.415199279785156, 29.77549934387207) \n     >>> g.geos('24.124.1.80').wkt\n     'POINT (-95.2087020874023438 39.0392990112304688)'\n\n``GeoIP`` Settings\n==================\n\n.. setting:: GEOIP_PATH\n\nGEOIP_PATH\n----------\n\nA string specifying the directory where the GeoIP data files are\nlocated.  This setting is *required* unless manually specified\nwith ``path`` keyword when initializing the :class:`GeoIP` object.\n\n.. setting:: GEOIP_LIBRARY_PATH\n\nGEOIP_LIBRARY_PATH\n------------------\n\nA string specifying the location of the GeoIP C library.  Typically,\nthis setting is only used if the GeoIP C library is in a non-standard\nlocation (e.g., ``/home/sue/lib/libGeoIP.so``).\n\n.. setting:: GEOIP_COUNTRY\n\nGEOIP_COUNTRY\n-------------\n\nThe basename to use for the GeoIP country data file.\nDefaults to ``'GeoIP.dat'``.\n\n.. setting:: GEOIP_CITY\n\nGEOIP_CITY\n----------\n\nThe basename to use for the GeoIP city data file.\nDefaults to ``'GeoLiteCity.dat'``.\n\n``GeoIP`` API\n=============\n\n.. class:: GeoIP([path=None, cache=0, country=None, city=None])\n\nThe ``GeoIP`` object does not require any parameters to use the default \nsettings.  However, at the very least the :setting:`GEOIP_PATH` setting\nshould be set with the path of the location of your GeoIP data sets.  The \nfollowing intialization keywords may be used to customize any of the \ndefaults. \n\n===================  =======================================================\nKeyword Arguments    Description\n===================  =======================================================\n``path``             Base directory to where GeoIP data is located or the \n                     full path to where the city or country data files \n                     (.dat) are located.  Assumes that both the city and \n                     country data sets are located in this directory; \n                     overrides the :setting:`GEOIP_PATH` settings attribute.\n\n``cache``            The cache settings when opening up the GeoIP datasets,\n                     and may be an integer in (0, 1, 2, 4) corresponding to\n                     the ``GEOIP_STANDARD``, ``GEOIP_MEMORY_CACHE``, \n                     ``GEOIP_CHECK_CACHE``, and ``GEOIP_INDEX_CACHE`` \n                     ``GeoIPOptions`` C API settings, respectively. \n                     Defaults to 0 (``GEOIP_STANDARD``).\n \n``country``          The name of the GeoIP country data file.  Defaults\n                     to ``GeoIP.dat``.  Setting this keyword overrides the \n                     :setting:`GEOIP_COUNTRY` settings attribute.\n\n``city``             The name of the GeoIP city data file.  Defaults to\n                     ``GeoLiteCity.dat``.  Setting this keyword overrides\n                     the :setting:`GEOIP_CITY` settings attribute.\n===================  =======================================================\n\n``GeoIP`` Methods\n=================\n\nQuerying\n--------\n\nAll the following querying routines may take either a string IP address\nor a fully qualified domain name (FQDN).  For example, both \n``'205.186.163.125'`` and ``'djangoproject.com'`` would be valid query \nparameters. \n\n.. method:: GeoIP.city(query)\n\nReturns a dictionary of city information for the given query.  Some\nof the values in the dictionary may be undefined (``None``).\n\n.. method:: GeoIP.country(query)\n\nReturns a dictionary with the country code and country for the given \nquery.\n\n.. method:: GeoIP.country_code(query)\n\nReturns only the country code corresponding to the query.\n\n.. method:: GeoIP.country_name(query)\n\nReturns only the country name corresponding to the query.\n\nCoordinate Retrieval\n--------------------\n\n.. method:: GeoIP.coords(query)\n\nReturns a coordinate tuple of (longitude, latitude).\n\n.. method:: GeoIP.lon_lat(query)\n\nReturns a coordinate tuple of (longitude, latitude).\n\n.. method:: GeoIP.lat_lon(query)\n\nReturns a coordinate tuple of (latitude, longitude),\n\n.. method:: GeoIP.geos(query)\n\nReturns a :class:`django.contrib.gis.geos.Point` object corresponding to the query.\n\nDatabase Information\n--------------------\n\n.. attribute:: GeoIP.country_info\n\nThis property returns information about the GeoIP country database.\n\n.. attribute:: GeoIP.city_info\n\nThis property returns information about the GeoIP city database.\n\n.. attribute:: GeoIP.info\n\nThis property returns information about all GeoIP databases (both city\nand country), and the version of the GeoIP C library (if supported).\n\nGeoIP-Python API compatibility methods\n----------------------------------------\n\nThese methods exist to ease compatibility with any code using MaxMind's \nexisting Python API.\n\n.. classmethod:: GeoIP.open(path, cache)\n\nThis classmethod instantiates the GeoIP object from the given database path\nand given cache setting.\n\n.. method:: GeoIP.region_by_addr(query)\n\n.. method:: GeoIP.region_by_name(query)\n\n.. method:: GeoIP.record_by_addr(query)\n\n.. method:: GeoIP.record_by_name(query)\n\n.. method:: GeoIP.country_code_by_addr(query)\n\n.. method:: GeoIP.country_code_by_name(query)\n\n.. method:: GeoIP.country_name_by_addr(query)\n\n.. method:: GeoIP.country_name_by_name(query)\n\n.. rubric:: Footnotes\n.. [#] GeoIP(R) is a registered trademark of MaxMind, LLC of Boston, Massachusetts.\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/contrib/gis/geoquerysets.txt",
    "content": ".. _ref-geoquerysets:\n\n=========================\nGeoQuerySet API Reference\n=========================\n\n.. currentmodule:: django.contrib.gis.db.models\n\n.. class:: GeoQuerySet([model=None])\n\n\n.. _spatial-lookups:\n\nSpatial Lookups\n===============\n\nJust like when using the :ref:`queryset-api`, interaction\nwith ``GeoQuerySet`` by :ref:`chaining filters <chaining-filters>`.\nInstead of the regular Django :ref:`field-lookups`, the\nspatial lookups in this section are available for :class:`GeometryField`.\n\nFor an introduction, see the :ref:`spatial lookups introduction\n<spatial-lookups-intro>`.  For an overview of what lookups are\ncompatible with a particular spatial backend, refer to the\n:ref:`spatial lookup compatibility table <spatial-lookup-compatibility>`.\n\n.. fieldlookup:: bbcontains\n\nbbcontains\n----------\n\n*Availability*: PostGIS, MySQL, SpatiaLite\n\nTests if the geometry field's bounding box completely contains the lookup\ngeometry's bounding box.\n\nExample::\n\n    Zipcode.objects.filter(poly__bbcontains=geom)\n\n==========  ==========================\nBackend     SQL Equivalent\n==========  ==========================\nPostGIS     ``poly ~ geom``\nMySQL       ``MBRContains(poly, geom)``\nSpatiaLite  ``MbrContains(poly, geom)``\n==========  ==========================\n\n.. fieldlookup:: bboverlaps\n\nbboverlaps\n----------\n\n*Availability*: PostGIS, MySQL, SpatiaLite\n\nTests if the geometry field's bounding box overlaps the lookup geometry's\nbounding box.\n\nExample::\n\n    Zipcode.objects.filter(poly__bboverlaps=geom)\n\n==========  ==========================\nBackend     SQL Equivalent\n==========  ==========================\nPostGIS     ``poly && geom``\nMySQL       ``MBROverlaps(poly, geom)``\nSpatiaLite  ``MbrOverlaps(poly, geom)``\n==========  ==========================\n\n.. fieldlookup:: contained\n\ncontained\n---------\n\n*Availability*: PostGIS, MySQL, SpatiaLite\n\nTests if the geometry field's bounding box is completely contained by the\nlookup geometry's bounding box.\n\nExample::\n\n    Zipcode.objects.filter(poly__contained=geom)\n\n==========  ==========================\nBackend     SQL Equivalent\n==========  ==========================\nPostGIS     ``poly @ geom``\nMySQL       ``MBRWithin(poly, geom)``\nSpatiaLite  ``MbrWithin(poly, geom)``\n==========  ==========================\n\n.. fieldlookup:: gis-contains\n\ncontains\n--------\n\n*Availability*: PostGIS, Oracle, MySQL, SpatiaLite\n\nTests if the geometry field spatially contains the lookup geometry.\n\nExample::\n\n    Zipcode.objects.filter(poly__contains=geom)\n\n==========  ============================\nBackend     SQL Equivalent\n==========  ============================\nPostGIS     ``ST_Contains(poly, geom)``\nOracle      ``SDO_CONTAINS(poly, geom)``\nMySQL       ``MBRContains(poly, geom)``\nSpatiaLite  ``Contains(poly, geom)``\n==========  ============================\n\n.. fieldlookup:: contains_properly\n\ncontains_properly\n-----------------\n\n*Availability*: PostGIS\n\nReturns true if the lookup geometry intersects the interior of the\ngeometry field, but not the boundary (or exterior). [#fncontainsproperly]_\n\n.. note::\n\n    Requires PostGIS 1.4 and above.\n\nExample::\n\n    Zipcode.objects.filter(poly__contains_properly=geom)\n\n==========  ===================================\nBackend     SQL Equivalent\n==========  ===================================\nPostGIS     ``ST_ContainsProperly(poly, geom)``\n==========  ===================================\n\n.. fieldlookup:: coveredby\n\ncoveredby\n---------\n\n*Availability*: PostGIS, Oracle\n\nTests if no point in the geometry field is outside the lookup geometry.\n[#fncovers]_\n\nExample::\n\n    Zipcode.objects.filter(poly__coveredby=geom)\n\n==========  =============================\nBackend     SQL Equivalent\n==========  =============================\nPostGIS     ``ST_CoveredBy(poly, geom)``\nOracle      ``SDO_COVEREDBY(poly, geom)``\n==========  =============================\n\n.. fieldlookup:: covers\n\ncovers\n------\n\n*Availability*: PostGIS, Oracle\n\nTests if no point in the lookup geometry is outside the geometry field.\n[#fncovers]_\n\nExample::\n\n    Zipcode.objects.filter(poly__covers=geom)\n\n==========  ==========================\nBackend     SQL Equivalent\n==========  ==========================\nPostGIS     ``ST_Covers(poly, geom)``\nOracle      ``SDO_COVERS(poly, geom)``\n==========  ==========================\n\n.. fieldlookup:: crosses\n\ncrosses\n-------\n\n*Availability*: PostGIS, SpatiaLite\n\nTests if the geometry field spatially crosses the lookup geometry.\n\nExample::\n\n    Zipcode.objects.filter(poly__crosses=geom)\n\n==========  ==========================\nBackend     SQL Equivalent\n==========  ==========================\nPostGIS     ``ST_Crosses(poly, geom)``\nSpatiaLite  ``Crosses(poly, geom)``\n==========  ==========================\n\n.. fieldlookup:: disjoint\n\ndisjoint\n--------\n\n*Availability*: PostGIS, Oracle, MySQL, SpatiaLite\n\nTests if the geometry field is spatially disjoint from the lookup geometry.\n\nExample::\n\n    Zipcode.objects.filter(poly__disjoint=geom)\n\n==========  =================================================\nBackend     SQL Equivalent\n==========  =================================================\nPostGIS     ``ST_Disjoint(poly, geom)``\nOracle      ``SDO_GEOM.RELATE(poly, 'DISJOINT', geom, 0.05)``\nMySQL       ``MBRDisjoint(poly, geom)``\nSpatiaLite  ``Disjoint(poly, geom)``\n==========  =================================================\n\nequals\n------\n\n*Availability*: PostGIS, Oracle, MySQL, SpatiaLite\n\n.. fieldlookup:: exact\n.. fieldlookup:: same_as\n\nexact, same_as\n--------------\n\n*Availability*: PostGIS, Oracle, MySQL, SpatiaLite\n\n.. fieldlookup:: intersects\n\nintersects\n----------\n\n*Availability*: PostGIS, Oracle, MySQL, SpatiaLite\n\nTests if the geometry field spatially intersects the lookup geometry.\n\nExample::\n\n    Zipcode.objects.filter(poly__intersects=geom)\n\n==========  =================================================\nBackend     SQL Equivalent\n==========  =================================================\nPostGIS     ``ST_Intersects(poly, geom)``\nOracle      ``SDO_OVERLAPBDYINTERSECT(poly, geom)``\nMySQL       ``MBRIntersects(poly, geom)``\nSpatiaLite  ``Intersects(poly, geom)``\n==========  =================================================\n\n.. fieldlookup:: overlaps\n\noverlaps\n--------\n\n*Availability*: PostGIS, Oracle, MySQL, SpatiaLite\n\n.. fieldlookup:: relate\n\nrelate\n------\n\n*Availability*: PostGIS, Oracle, SpatiaLite\n\nTests if the geometry field is spatially related to the lookup geometry by\nthe values given in the given pattern.  This lookup requires a tuple parameter,\n``(geom, pattern)``; the form of ``pattern`` will depend on the spatial backend:\n\nPostGIS & SpatiaLite\n~~~~~~~~~~~~~~~~~~~~\nOn these spatial backends the intersection pattern is a string comprising\nnine characters, which  define intersections between  the interior, boundary,\nand exterior of the geometry field and the lookup geometry.\nThe intersection pattern matrix may only use the following characters:\n``1``, ``2``, ``T``, ``F``, or ``*``.  This lookup type allows users to \"fine tune\"\na specific geometric relationship consistent with the DE-9IM model. [#fnde9im]_\n\nExample::\n\n    # A tuple lookup parameter is used to specify the geometry and\n    # the intersection pattern (the pattern here is for 'contains').\n    Zipcode.objects.filter(poly__relate(geom, 'T*T***FF*'))\n\nPostGIS SQL equivalent::\n\n    SELECT ... WHERE ST_Relate(poly, geom, 'T*T***FF*')\n\nSpatiaLite SQL equivalent::\n\n    SELECT ... WHERE Relate(poly, geom, 'T*T***FF*')\n\nOracle\n~~~~~~\n\nHere the relation pattern is comprised at least one of the nine relation\nstrings: ``TOUCH``, ``OVERLAPBDYDISJOINT``, ``OVERLAPBDYINTERSECT``,\n``EQUAL``, ``INSIDE``, ``COVEREDBY``, ``CONTAINS``, ``COVERS``, ``ON``, and\n``ANYINTERACT``.   Multiple strings may be combined with the logical Boolean\noperator OR, for example, ``'inside+touch'``. [#fnsdorelate]_  The relation\nstrings are case-insensitive.\n\nExample::\n\n    Zipcode.objects.filter(poly__relate(geom, 'anyinteract'))\n\nOracle SQL equivalent::\n\n    SELECT ... WHERE SDO_RELATE(poly, geom, 'anyinteract')\n\n.. fieldlookup:: touches\n\ntouches\n-------\n\n*Availability*: PostGIS, Oracle, MySQL, SpatiaLite\n\nTests if the geometry field spatially touches the lookup geometry.\n\nExample::\n\n    Zipcode.objects.filter(poly__touches=geom)\n\n==========  ==========================\nBackend     SQL Equivalent\n==========  ==========================\nPostGIS     ``ST_Touches(poly, geom)``\nMySQL       ``MBRTouches(poly, geom)``\nOracle      ``SDO_TOUCH(poly, geom)``\nSpatiaLite  ``Touches(poly, geom)``\n==========  ==========================\n\n.. fieldlookup:: within\n\nwithin\n------\n\n*Availability*: PostGIS, Oracle, MySQL, SpatiaLite\n\nTests if the geometry field is spatially within the lookup geometry.\n\nExample::\n\n    Zipcode.objects.filter(poly__within=geom)\n\n==========  ==========================\nBackend     SQL Equivalent\n==========  ==========================\nPostGIS     ``ST_Within(poly, geom)``\nMySQL       ``MBRWithin(poly, geom)``\nOracle      ``SDO_INSIDE(poly, geom)``\nSpatiaLite  ``Within(poly, geom)``\n==========  ==========================\n\n.. fieldlookup:: left\n\nleft\n----\n\n*Availability*: PostGIS\n\nTests if the geometry field's bounding box is strictly to the left of the\nlookup geometry's bounding box.\n\nExample::\n\n    Zipcode.objects.filter(poly__left=geom)\n\nPostGIS equivalent::\n\n    SELECT ... WHERE poly << geom\n\n.. fieldlookup:: right\n\nright\n-----\n\n*Availability*: PostGIS\n\nTests if the geometry field's bounding box is strictly to the right of the\nlookup geometry's bounding box.\n\nExample::\n\n    Zipcode.objects.filter(poly__right=geom)\n\nPostGIS equivalent::\n\n    SELECT ... WHERE poly >> geom\n\n.. fieldlookup:: overlaps_left\n\noverlaps_left\n-------------\n\n*Availability*: PostGIS\n\nTests if the geometry field's bounding box overlaps or is to the left of the lookup\ngeometry's bounding box.\n\nExample::\n\n    Zipcode.objects.filter(poly__overlaps_left=geom)\n\nPostGIS equivalent::\n\n    SELECT ... WHERE poly &< geom\n\n\n.. fieldlookup:: overlaps_right\n\noverlaps_right\n--------------\n\n*Availability*: PostGIS\n\nTests if the geometry field's bounding box overlaps or is to the right of the lookup\ngeometry's bounding box.\n\nExample::\n\n    Zipcode.objects.filter(poly__overlaps_right=geom)\n\nPostGIS equivalent::\n\n    SELECT ... WHERE poly &> geom\n\n.. fieldlookup:: overlaps_above\n\noverlaps_above\n--------------\n\n*Availability*: PostGIS\n\nTests if the geometry field's bounding box overlaps or is above the lookup\ngeometry's bounding box.\n\nExample::\n\n    Zipcode.objects.filter(poly__overlaps_above=geom)\n\nPostGIS equivalent::\n\n    SELECT ... WHERE poly |&> geom\n\n.. fieldlookup:: overlaps_below\n\noverlaps_below\n--------------\n\n*Availability*: PostGIS\n\nTests if the geometry field's bounding box overlaps or is below the lookup\ngeometry's bounding box.\n\nExample::\n\n    Zipcode.objects.filter(poly__overlaps_below=geom)\n\nPostGIS equivalent::\n\n    SELECT ... WHERE poly &<| geom\n\n.. fieldlookup:: strictly_above\n\nstrictly_above\n--------------\n\n*Availability*: PostGIS\n\nTests if the geometry field's bounding box is strictly above the lookup\ngeometry's bounding box.\n\nExample::\n\n    Zipcode.objects.filter(poly__strictly_above=geom)\n\nPostGIS equivalent::\n\n    SELECT ... WHERE poly |>> geom\n\n.. fieldlookup:: strictly_below\n\nstrictly_below\n--------------\n\n*Availability*: PostGIS\n\nTests if the geometry field's bounding box is strictly above the lookup\ngeometry's bounding box.\n\nExample::\n\n    Zipcode.objects.filter(poly__strictly_above=geom)\n\nPostGIS equivalent::\n\n    SELECT ... WHERE poly |>> geom\n\n\n.. _distance-lookups:\n\nDistance Lookups\n================\n\n*Availability*: PostGIS, Oracle, SpatiaLite\n\nFor an overview on performing distance queries, please refer to\nthe :ref:`distance queries introduction <distance-queries>`.\n\nDistance lookups take the following form::\n\n    <field>__<distance lookup>=(<geometry>, <distance value>[, 'spheroid'])\n\nThe value passed into a distance lookup is a tuple; the first two\nvalues are mandatory, and are the geometry to calculate distances to,\nand a distance value (either a number in units of the field or a\n:class:`~django.contrib.gis.measure.Distance` object).  On every\ndistance lookup but :lookup:`dwithin`, an optional\nthird element, ``'spheroid'``, may be included to tell GeoDjango\nto use the more accurate spheroid distance calculation functions on\nfields with a geodetic coordinate system (e.g., ``ST_Distance_Spheroid``\nwould be used instead of ``ST_Distance_Sphere``).\n\n.. fieldlookup:: distance_gt\n\ndistance_gt\n-----------\n\nReturns models where the distance to the geometry field from the lookup\ngeometry is greater than the given distance value.\n\nExample::\n\n    Zipcode.objects.filter(poly__distance_gt=(geom, D(m=5)))\n\n==========  ===============================================\nBackend     SQL Equivalent\n==========  ===============================================\nPostGIS     ``ST_Distance(poly, geom) > 5``\nOracle      ``SDO_GEOM.SDO_DISTANCE(poly, geom, 0.05) > 5``\nSpatiaLite  ``Distance(poly, geom) > 5``\n==========  ===============================================\n\n.. fieldlookup:: distance_gte\n\ndistance_gte\n------------\n\nReturns models where the distance to the geometry field from the lookup\ngeometry is greater than or equal to the given distance value.\n\nExample::\n\n    Zipcode.objects.filter(poly__distance_gte=(geom, D(m=5)))\n\n==========  ================================================\nBackend     SQL Equivalent\n==========  ================================================\nPostGIS     ``ST_Distance(poly, geom) >= 5``\nOracle      ``SDO_GEOM.SDO_DISTANCE(poly, geom, 0.05) >= 5``\nSpatiaLite  ``Distance(poly, geom) >= 5``\n==========  ================================================\n\n.. fieldlookup:: distance_lt\n\ndistance_lt\n-----------\n\nReturns models where the distance to the geometry field from the lookup\ngeometry is less than the given distance value.\n\nExample::\n\n    Zipcode.objects.filter(poly__distance_lt=(geom, D(m=5)))\n\n==========  ===============================================\nBackend     SQL Equivalent\n==========  ===============================================\nPostGIS     ``ST_Distance(poly, geom) < 5``\nOracle      ``SDO_GEOM.SDO_DISTANCE(poly, geom, 0.05) < 5``\nSpatiaLite  ``Distance(poly, geom) < 5``\n==========  ===============================================\n\n.. fieldlookup:: distance_lte\n\ndistance_lte\n------------\n\nReturns models where the distance to the geometry field from the lookup\ngeometry is less than or equal to the given distance value.\n\nExample::\n\n    Zipcode.objects.filter(poly__distance_lte=(geom, D(m=5)))\n\n==========  ================================================\nBackend     SQL Equivalent\n==========  ================================================\nPostGIS     ``ST_Distance(poly, geom) <= 5``\nOracle      ``SDO_GEOM.SDO_DISTANCE(poly, geom, 0.05) <= 5``\nSpatiaLite  ``Distance(poly, geom) <= 5``\n==========  ================================================\n\n.. fieldlookup:: dwithin\n\ndwithin\n-------\n\nReturns models where the distance to the geometry field from the\nlookup geometry are within the given distance from one another.\n\nExample::\n\n    Zipcode.objects.filter(poly__dwithin=(geom, D(m=5)))\n\n==========  ======================================\nBackend     SQL Equivalent\n==========  ======================================\nPostGIS     ``ST_DWithin(poly, geom, 5)``\nOracle      ``SDO_WITHIN_DISTANCE(poly, geom, 5)``\n==========  ======================================\n\n.. note::\n\n    This lookup is not available on SpatiaLite.\n\n.. fieldlookup:: equals\n\n\n``GeoQuerySet`` Methods\n=======================\n\n``GeoQuerySet`` methods specify that a spatial operation be performed\non each patial operation on each geographic\nfield in the queryset and store its output in a new attribute on the model\n(which is generally the name of the ``GeoQuerySet`` method).\n\nThere are also aggregate ``GeoQuerySet`` methods which return a single value\ninstead of a queryset.  This section will describe the API and availability\nof every ``GeoQuerySet`` method available in GeoDjango.\n\n.. note::\n\n    What methods are available depend on your spatial backend.  See\n    the :ref:`compatibility table <geoqueryset-method-compatibility>`\n    for more details.\n\nWith a few exceptions, the following keyword arguments may be used with all\n``GeoQuerySet`` methods:\n\n=====================  =====================================================\nKeyword Argument       Description\n=====================  =====================================================\n``field_name``         By default, ``GeoQuerySet`` methods use the first\n                       geographic field encountered in the model.  This\n                       keyword should be used to specify another\n                       geographic field (e.g., ``field_name='point2'``)\n                       when there are multiple geographic fields in a model.\n\n                       On PostGIS, the ``field_name`` keyword may also be\n                       used on geometry fields in models that are related\n                       via a ``ForeignKey`` relation (e.g.,\n                       ``field_name='related__point'``).\n\n``model_att``          By default, ``GeoQuerySet`` methods typically attach\n                       their output in an attribute with the same name as\n                       the ``GeoQuerySet`` method.  Setting this keyword\n                       with the desired attribute name will override this\n                       default behavior.  For example,\n                       ``qs = Zipcode.objects.centroid(model_att='c')`` will\n                       attach the centroid of the ``Zipcode`` geometry field\n                       in a ``c`` attribute on every model rather than in a\n                       ``centroid`` attribute.\n\n                       This keyword is required if\n                       a method name clashes with an existing\n                       ``GeoQuerySet`` method -- if you wanted to use the\n                       ``area()`` method on model with a ``PolygonField``\n                       named ``area``, for example.\n=====================  =====================================================\n\nMeasurement\n-----------\n*Availability*: PostGIS, Oracle, SpatiaLite\n\n``area``\n~~~~~~~~\n\n.. method:: GeoQuerySet.area(**kwargs)\n\nReturns the area of the geographic field in an ``area`` attribute on\neach element of this GeoQuerySet.\n\n``distance``\n~~~~~~~~~~~~\n\n.. method:: GeoQuerySet.distance(geom, **kwargs)\n\nThis method takes a geometry as a parameter, and attaches a ``distance``\nattribute to every model in the returned queryset that contains the\ndistance (as a :class:`~django.contrib.gis.measure.Distance` object) to the given geometry.\n\nIn the following example (taken from the `GeoDjango distance tests`__),\nthe distance from the `Tasmanian`__ city of Hobart to every other\n:class:`PointField` in the ``AustraliaCity`` queryset is calculated::\n\n    >>> pnt = AustraliaCity.objects.get(name='Hobart').point\n    >>> for city in AustraliaCity.objects.distance(pnt): print(city.name, city.distance)\n    Wollongong 990071.220408 m\n    Shellharbour 972804.613941 m\n    Thirroul 1002334.36351 m\n    Mittagong 975691.632637 m\n    Batemans Bay 834342.185561 m\n    Canberra 598140.268959 m\n    Melbourne 575337.765042 m\n    Sydney 1056978.87363 m\n    Hobart 0.0 m\n    Adelaide 1162031.83522 m\n    Hillsdale 1049200.46122 m\n\n.. note::\n\n    Because the ``distance`` attribute is a\n    :class:`~django.contrib.gis.measure.Distance` object, you can easily express\n    the value in the units of your choice.  For example, ``city.distance.mi`` is\n    the distance value in miles and ``city.distance.km`` is the distance value\n    in kilometers.  See the :ref:`ref-measure` for usage details and the list of\n    :ref:`supported_units`.\n\n__ https://github.com/django/django/blob/master/django/contrib/gis/tests/distapp/models.py\n__ http://en.wikipedia.org/wiki/Tasmania\n\n``length``\n~~~~~~~~~~\n\n.. method:: GeoQuerySet.length(**kwargs)\n\nReturns the length of the geometry field in a ``length`` attribute\n(a :class:`~django.contrib.gis.measure.Distance` object) on each model in\nthe queryset.\n\n``perimeter``\n~~~~~~~~~~~~~\n\n.. method:: GeoQuerySet.perimeter(**kwargs)\n\nReturns the perimeter of the geometry field in a ``perimeter`` attribute\n(a :class:`~django.contrib.gis.measure.Distance` object) on each model in\nthe queryset.\n\nGeometry Relationships\n----------------------\n\nThe following methods take no arguments, and attach geometry objects\neach element of the :class:`GeoQuerySet` that is the result of relationship\nfunction evaluated on the geometry field.\n\n``centroid``\n~~~~~~~~~~~~\n\n.. method:: GeoQuerySet.centroid(**kwargs)\n\n*Availability*: PostGIS, Oracle, SpatiaLite\n\nReturns the ``centroid`` value for the geographic field in a ``centroid``\nattribute on each element of the ``GeoQuerySet``.\n\n``envelope``\n~~~~~~~~~~~~\n\n.. method:: GeoQuerySet.envelope(**kwargs)\n\n*Availability*: PostGIS, SpatiaLite\n\nReturns a geometry representing the bounding box of the geometry field in\nan ``envelope`` attribute on each element of the ``GeoQuerySet``.\n\n``point_on_surface``\n~~~~~~~~~~~~~~~~~~~~\n\n.. method:: GeoQuerySet.point_on_surface(**kwargs)\n\n*Availability*: PostGIS, Oracle, SpatiaLite\n\nReturns a Point geometry guaranteed to lie on the surface of the\ngeometry field in a ``point_on_surface`` attribute on each element\nof the queryset; otherwise sets with None.\n\nGeometry Editors\n----------------\n\n``force_rhr``\n~~~~~~~~~~~~~\n\n.. method:: GeoQuerySet.force_rhr(**kwargs)\n\n*Availability*: PostGIS\n\nReturns a modified version of the polygon/multipolygon in which all\nof the vertices follow the Right-Hand-Rule, and attaches as a\n``force_rhr`` attribute on each element of the queryset.\n\n``reverse_geom``\n~~~~~~~~~~~~~~~~\n\n.. method:: GeoQuerySet.reverse_geom(**kwargs)\n\n*Availability*: PostGIS, Oracle\n\nReverse the coordinate order of the geometry field, and attaches as a\n``reverse`` attribute on each element of the queryset.\n\n``scale``\n~~~~~~~~~\n\n.. method:: GeoQuerySet.scale(x, y, z=0.0, **kwargs)\n\n*Availability*: PostGIS, SpatiaLite\n\n``snap_to_grid``\n~~~~~~~~~~~~~~~~\n\n.. method:: GeoQuerySet.snap_to_grid(*args, **kwargs)\n\nSnap all points of the input geometry to the grid.  How the\ngeometry is snapped to the grid depends on how many numeric\n(either float, integer, or long) arguments are given.\n\n===================  =====================================================\nNumber of Arguments  Description\n===================  =====================================================\n1                    A single size to snap bot the X and Y grids to.\n2                    X and Y sizes to snap the grid to.\n4                    X, Y sizes and the corresponding X, Y origins.\n===================  =====================================================\n\n``transform``\n~~~~~~~~~~~~~\n\n.. method:: GeoQuerySet.transform(srid=4326, **kwargs)\n\n*Availability*: PostGIS, Oracle, SpatiaLite\n\nThe ``transform`` method transforms the geometry field of a model to the spatial\nreference system specified by the ``srid`` parameter.  If no ``srid`` is given,\nthen 4326 (WGS84) is used by default.\n\n.. note::\n\n    Unlike other ``GeoQuerySet`` methods, ``transform`` stores its output\n    \"in-place\".  In other words, no new attribute for the transformed\n    geometry is placed on the models.\n\n.. note::\n\n    What spatial reference system an integer SRID corresponds to may depend on\n    the spatial database used.  In other words, the SRID numbers used for Oracle\n    are not necessarily the same as those used by PostGIS.\n\nExample::\n\n    >>> qs = Zipcode.objects.all().transform() # Transforms to WGS84\n    >>> qs = Zipcode.objects.all().transform(32140) # Transforming to \"NAD83 / Texas South Central\"\n    >>> print(qs[0].poly.srid)\n    32140\n    >>> print(qs[0].poly)\n    POLYGON ((234055.1698884720099159 4937796.9232223574072123 ...\n\n``translate``\n~~~~~~~~~~~~~\n.. method:: GeoQuerySet.translate(x, y, z=0.0, **kwargs)\n\n*Availability*: PostGIS, SpatiaLite\n\nTranslates the geometry field to a new location using the given numeric\nparameters as offsets.\n\nGeometry Operations\n-------------------\n*Availability*: PostGIS, Oracle, SpatiaLite\n\nThe following methods all take a geometry as a parameter and attach a geometry\nto each element of the ``GeoQuerySet`` that is the result of the operation.\n\n``difference``\n~~~~~~~~~~~~~~\n\n.. method:: GeoQuerySet.difference(geom)\n\nReturns the spatial difference of the geographic field with the given\ngeometry in a ``difference`` attribute on each element of the\n``GeoQuerySet``.\n\n\n``intersection``\n~~~~~~~~~~~~~~~~\n\n.. method:: GeoQuerySet.intersection(geom)\n\nReturns the spatial intersection of the geographic field with the\ngiven geometry in an ``intersection`` attribute on each element of the\n``GeoQuerySet``.\n\n``sym_difference``\n~~~~~~~~~~~~~~~~~~\n\n.. method:: GeoQuerySet.sym_difference(geom)\n\nReturns the symmetric difference of the geographic field with the\ngiven geometry in a ``sym_difference`` attribute on each element of the\n``GeoQuerySet``.\n\n``union``\n~~~~~~~~~\n\n.. method:: GeoQuerySet.union(geom)\n\nReturns the union of the geographic field with the given\ngeometry in an ``union`` attribute on each element of the\n``GeoQuerySet``.\n\nGeometry Output\n---------------\n\nThe following ``GeoQuerySet`` methods will return an attribute that has the value\nof the geometry field in each model converted to the requested output format.\n\n``geohash``\n~~~~~~~~~~~\n\n.. method:: GeoQuerySet.geohash(precision=20, **kwargs)\n\nAttaches a ``geohash`` attribute to every model the queryset\ncontaining the `GeoHash`__ representation of the geometry.\n\n__ http://geohash.org/\n\n``geojson``\n~~~~~~~~~~~\n\n.. method:: GeoQuerySet.geojson(**kwargs)\n\n*Availability*: PostGIS, SpatiaLite\n\nAttaches a ``geojson`` attribute to every model in the queryset that contains the\n`GeoJSON`__ representation of the geometry.\n\n=====================  =====================================================\nKeyword Argument       Description\n=====================  =====================================================\n``precision``          It may be used to specify the number of significant\n                       digits for the coordinates in the GeoJSON\n                       representation -- the default value is 8.\n\n``crs``                Set this to ``True`` if you want the coordinate\n                       reference system to be included in the returned\n                       GeoJSON.\n\n``bbox``               Set this to ``True`` if you want the bounding box\n                       to be included in the returned GeoJSON.\n=====================  =====================================================\n\n__ http://geojson.org/\n\n``gml``\n~~~~~~~\n\n.. method:: GeoQuerySet.gml(**kwargs)\n\n*Availability*: PostGIS, Oracle, SpatiaLite\n\nAttaches a ``gml`` attribute to every model in the queryset that contains the\n`Geographic Markup Language (GML)`__ representation of the geometry.\n\nExample::\n\n    >>> qs = Zipcode.objects.all().gml()\n    >>> print(qs[0].gml)\n    <gml:Polygon srsName=\"EPSG:4326\"><gml:OuterBoundaryIs>-147.78711,70.245363 ...  -147.78711,70.245363</gml:OuterBoundaryIs></gml:Polygon>\n\n=====================  =====================================================\nKeyword Argument       Description\n=====================  =====================================================\n``precision``          This keyword is for PostGIS only.  It may be used\n                       to specify the number of significant digits for the\n                       coordinates in the GML representation -- the default\n                       value is 8.\n\n``version``            This keyword is for PostGIS only.  It may be used to\n                       specify the GML version used, and may only be values\n                       of 2 or 3.  The default value is 2.\n=====================  =====================================================\n\n__ http://en.wikipedia.org/wiki/Geography_Markup_Language\n\n``kml``\n~~~~~~~\n\n.. method:: GeoQuerySet.kml(**kwargs)\n\n*Availability*: PostGIS, SpatiaLite\n\nAttaches a ``kml`` attribute to every model in the queryset that contains the\n`Keyhole Markup Language (KML)`__ representation of the geometry fields. It\nshould be noted that the contents of the KML are transformed to WGS84 if\nnecessary.\n\nExample::\n\n    >>> qs = Zipcode.objects.all().kml()\n    >>> print(qs[0].kml)\n    <Polygon><outerBoundaryIs><LinearRing><coordinates>-103.04135,36.217596,0 ... -103.04135,36.217596,0</coordinates></LinearRing></outerBoundaryIs></Polygon>\n\n=====================  =====================================================\nKeyword Argument       Description\n=====================  =====================================================\n``precision``          This keyword may be used to specify the number of\n                       significant digits for the coordinates in the KML\n                       representation -- the default value is 8.\n=====================  =====================================================\n\n__ https://developers.google.com/kml/documentation/\n\n``svg``\n~~~~~~~\n\n.. method:: GeoQuerySet.svg(**kwargs)\n\n*Availability*: PostGIS, SpatiaLite\n\nAttaches a ``svg`` attribute to every model in the queryset that contains\nthe `Scalable Vector Graphics (SVG)`__ path data of the geometry fields.\n\n=====================  =====================================================\nKeyword Argument       Description\n=====================  =====================================================\n``relative``           If set to ``True``, the path data will be implemented\n                       in terms of relative moves.  Defaults to ``False``,\n                       meaning that absolute moves are used instead.\n\n``precision``          This keyword may be used to specify the number of\n                       significant digits for the coordinates in the SVG\n                       representation -- the default value is 8.\n=====================  =====================================================\n\n__ http://www.w3.org/Graphics/SVG/\n\nMiscellaneous\n-------------\n\n``mem_size``\n~~~~~~~~~~~~\n\n.. method:: GeoQuerySet.mem_size(**kwargs)\n\n*Availability*: PostGIS\n\nReturns the memory size (number of bytes) that the geometry field takes\nin a ``mem_size`` attribute  on each element of the ``GeoQuerySet``.\n\n``num_geom``\n~~~~~~~~~~~~\n\n.. method:: GeoQuerySet.num_geom(**kwargs)\n\n*Availability*: PostGIS, Oracle, SpatiaLite\n\nReturns the number of geometries in a ``num_geom`` attribute on\neach element of the ``GeoQuerySet`` if the geometry field is a\ncollection (e.g., a ``GEOMETRYCOLLECTION`` or ``MULTI*`` field);\notherwise sets with ``None``.\n\n``num_points``\n~~~~~~~~~~~~~~\n\n.. method:: GeoQuerySet.num_points(**kwargs)\n\n*Availability*: PostGIS, Oracle, SpatiaLite\n\nReturns the number of points in the first linestring in the\ngeometry field in a ``num_points`` attribute on each element of\nthe ``GeoQuerySet``; otherwise sets with ``None``.\n\nSpatial Aggregates\n==================\n\nAggregate Methods\n-----------------\n\n``collect``\n~~~~~~~~~~~\n\n.. method:: GeoQuerySet.collect(**kwargs)\n\n*Availability*: PostGIS\n\nReturns a ``GEOMETRYCOLLECTION`` or a ``MULTI`` geometry object from the geometry\ncolumn.  This is analagous to a simplified version of the :meth:`GeoQuerySet.unionagg` method,\nexcept it can be several orders of magnitude faster than peforming a union because\nit simply rolls up geometries into a collection or multi object, not caring about\ndissolving boundaries.\n\n``extent``\n~~~~~~~~~~\n\n.. method:: GeoQuerySet.extent(**kwargs)\n\n*Availability*: PostGIS, Oracle\n\nReturns the extent of the ``GeoQuerySet`` as a four-tuple, comprising the\nlower left coordinate and the upper right coordinate.\n\nExample::\n\n    >>> qs = City.objects.filter(name__in=('Houston', 'Dallas'))\n    >>> print(qs.extent())\n    (-96.8016128540039, 29.7633724212646, -95.3631439208984, 32.782058715820)\n\n``extent3d``\n~~~~~~~~~~~~\n\n.. method:: GeoQuerySet.extent3d(**kwargs)\n\n*Availability*: PostGIS\n\nReturns the 3D extent of the ``GeoQuerySet`` as a six-tuple, comprising\nthe lower left coordinate and upper right coordinate.\n\nExample::\n\n    >>> qs = City.objects.filter(name__in=('Houston', 'Dallas'))\n    >>> print(qs.extent3d())\n    (-96.8016128540039, 29.7633724212646, 0, -95.3631439208984, 32.782058715820, 0)\n\n``make_line``\n~~~~~~~~~~~~~\n\n.. method:: GeoQuerySet.make_line(**kwargs)\n\n*Availability*: PostGIS\n\nReturns a ``LineString`` constructed from the point field geometries in the\n``GeoQuerySet``.  Currently, ordering the queryset has no effect.\n\nExample::\n\n     >>> print(City.objects.filter(name__in=('Houston', 'Dallas')).make_line())\n     LINESTRING (-95.3631510000000020 29.7633739999999989, -96.8016109999999941 32.7820570000000018)\n\n``unionagg``\n~~~~~~~~~~~~\n\n.. method:: GeoQuerySet.unionagg(**kwargs)\n\n*Availability*: PostGIS, Oracle, SpatiaLite\n\nThis method returns a :class:`~django.contrib.gis.geos.GEOSGeometry` object\ncomprising the union of every geometry in the queryset.  Please note that\nuse of ``unionagg`` is processor intensive and may take a significant amount\nof time on large querysets.\n\n.. note::\n\n    If the computation time for using this method is too expensive,\n    consider using :meth:`GeoQuerySet.collect` instead.\n\nExample::\n\n    >>> u = Zipcode.objects.unionagg() # This may take a long time.\n    >>> u = Zipcode.objects.filter(poly__within=bbox).unionagg() # A more sensible approach.\n\n=====================  =====================================================\nKeyword Argument       Description\n=====================  =====================================================\n``tolerance``          This keyword is for Oracle only.  It is for the\n                       tolerance value used by the ``SDOAGGRTYPE``\n                       procedure; the  `Oracle documentation`__ has more\n                       details.\n=====================  =====================================================\n\n__ http://docs.oracle.com/html/B14255_01/sdo_intro.htm#sthref150\n\nAggregate Functions\n-------------------\n\nExample::\n\n    >>> from django.contrib.gis.db.models import Extent, Union\n    >>> WorldBorder.objects.aggregate(Extent('mpoly'), Union('mpoly'))\n\n``Collect``\n~~~~~~~~~~~\n\n.. class:: Collect(geo_field)\n\nReturns the same as the :meth:`GeoQuerySet.collect` aggregate method.\n\n``Extent``\n~~~~~~~~~~\n.. class:: Extent(geo_field)\n\n\nReturns the same as the :meth:`GeoQuerySet.extent` aggregate method.\n\n``Extent3D``\n~~~~~~~~~~~~\n\n.. class:: Extent3D(geo_field)\n\nReturns the same as the :meth:`GeoQuerySet.extent3d` aggregate method.\n\n``MakeLine``\n~~~~~~~~~~~~\n\n.. class:: MakeLine(geo_field)\n\nReturns the same as the :meth:`GeoQuerySet.make_line` aggregate method.\n\n``Union``\n~~~~~~~~~\n\n.. class:: Union(geo_field)\n\nReturns the same as the :meth:`GeoQuerySet.union` aggregate method.\n\n.. rubric:: Footnotes\n.. [#fnde9im] *See* `OpenGIS Simple Feature Specification For SQL <http://www.opengis.org/docs/99-049.pdf>`_, at Ch. 2.1.13.2, p. 2-13 (The Dimensionally Extended Nine-Intersection Model).\n.. [#fnsdorelate] *See* `SDO_RELATE documentation <http://docs.oracle.com/cd/B19306_01/appdev.102/b14255/sdo_operat.htm#sthref845>`_, from Ch. 11 of the Oracle Spatial User's Guide and Manual.\n.. [#fncovers] For an explanation of this routine, read `Quirks of the \"Contains\" Spatial Predicate <http://lin-ear-th-inking.blogspot.com/2007/06/subtleties-of-ogc-covers-spatial.html>`_ by Martin Davis (a PostGIS developer).\n.. [#fncontainsproperly] Refer to the PostGIS ``ST_ContainsProperly`` `documentation <http://postgis.refractions.net/documentation/manual-1.4/ST_ContainsProperly.html>`_ for more details.\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/contrib/gis/geos.txt",
    "content": ".. _ref-geos:\n\n========\nGEOS API\n========\n\n.. module:: django.contrib.gis.geos\n   :synopsis: GeoDjango's high-level interface to the GEOS library.\n\nBackground\n==========\n\nWhat is GEOS?\n-------------\n\n`GEOS`__ stands for **G**\\ eometry **E**\\ ngine - **O**\\ pen **S**\\ ource,\nand is a C++ library, ported from the  `Java Topology Suite`__.  GEOS\nimplements the OpenGIS `Simple Features for SQL`__ spatial predicate functions\nand spatial operators. GEOS, now an OSGeo project, was initially developed and\nmaintained by `Refractions Research`__ of Victoria, Canada.\n\n__ http://trac.osgeo.org/geos/\n__ http://sourceforge.net/projects/jts-topo-suite/\n__ http://www.opengeospatial.org/standards/sfs\n__ http://www.refractions.net/\n\nFeatures\n--------\n\nGeoDjango implements a high-level Python wrapper for the GEOS library, its\nfeatures include:\n\n* A BSD-licensed interface to the GEOS geometry routines, implemented purely\n  in Python using ``ctypes``.\n* Loosely-coupled to GeoDjango.  For example, :class:`GEOSGeometry` objects\n  may be used outside of a django project/application.  In other words,\n  no need to have ``DJANGO_SETTINGS_MODULE`` set or use a database, etc.\n* Mutability: :class:`GEOSGeometry` objects may be modified.\n* Cross-platform and tested; compatible with Windows, Linux, Solaris, and Mac\n  OS X platforms.\n\n.. _geos-tutorial:\n\nTutorial\n========\n\nThis section contains a brief introduction and tutorial to using\n:class:`GEOSGeometry` objects.\n\nCreating a Geometry\n-------------------\n\n:class:`GEOSGeometry` objects may be created in a few ways.  The first is\nto simply instantiate the object on some spatial input -- the following\nare examples of creating the same geometry from WKT, HEX, WKB, and GeoJSON::\n\n    >>> from django.contrib.gis.geos import GEOSGeometry\n    >>> pnt = GEOSGeometry('POINT(5 23)') # WKT\n    >>> pnt = GEOSGeometry('010100000000000000000014400000000000003740') # HEX\n    >>> pnt = GEOSGeometry(buffer('\\x01\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x14@\\x00\\x00\\x00\\x00\\x00\\x007@'))\n    >>> pnt = GEOSGeometry('{ \"type\": \"Point\", \"coordinates\": [ 5.000000, 23.000000 ] }') # GeoJSON\n\nAnother option is to use the constructor for the specific geometry type\nthat you wish to create.  For example, a :class:`Point` object may be\ncreated by passing in the X and Y coordinates into its constructor::\n\n    >>> from django.contrib.gis.geos import Point\n    >>> pnt = Point(5, 23)\n\nFinally, there are :func:`fromstr` and :func:`fromfile` factory methods, which\nreturn a :class:`GEOSGeometry` object from an input string or a file::\n\n    >>> from django.contrib.gis.geos import fromstr, fromfile\n    >>> pnt = fromstr('POINT(5 23)')\n    >>> pnt = fromfile('/path/to/pnt.wkt')\n    >>> pnt = fromfile(open('/path/to/pnt.wkt'))\n\n.. _geos-exceptions-in-logfile:\n\n.. admonition:: My logs are filled with GEOS-related errors\n\n    You find many ``TypeError`` or ``AttributeError`` exceptions filling your\n    Web server's log files. This generally means that you are creating GEOS\n    objects at the top level of some of your Python modules. Then, due to a race\n    condition in the garbage collector, your module is garbage collected before\n    the GEOS object. To prevent this, create :class:`GEOSGeometry` objects\n    inside the local scope of your functions/methods.\n\nGeometries are Pythonic\n-----------------------\n:class:`GEOSGeometry` objects are 'Pythonic', in other words components may\nbe accessed, modified, and iterated over using standard Python conventions.\nFor example, you can iterate over the coordinates in a :class:`Point`::\n\n    >>> pnt = Point(5, 23)\n    >>> [coord for coord in pnt]\n    [5.0, 23.0]\n\nWith any geometry object, the :attr:`GEOSGeometry.coords` property\nmay be used to get the geometry coordinates as a Python tuple::\n\n    >>> pnt.coords\n    (5.0, 23.0)\n\nYou can get/set geometry components using standard Python indexing\ntechniques.  However, what is returned depends on the geometry type\nof the object.  For example, indexing on a :class:`LineString`\nreturns a coordinate tuple::\n\n    >>> from django.contrib.gis.geos import LineString\n    >>> line = LineString((0, 0), (0, 50), (50, 50), (50, 0), (0, 0))\n    >>> line[0]\n    (0.0, 0.0)\n    >>> line[-2]\n    (50.0, 0.0)\n\nWhereas indexing on a :class:`Polygon` will return the ring\n(a :class:`LinearRing` object) corresponding to the index::\n\n    >>> from django.contrib.gis.geos import Polygon\n    >>> poly = Polygon( ((0.0, 0.0), (0.0, 50.0), (50.0, 50.0), (50.0, 0.0), (0.0, 0.0)) )\n    >>> poly[0]\n    <LinearRing object at 0x1044395b0>\n    >>> poly[0][-2] # second-to-last coordinate of external ring\n    (50.0, 0.0)\n\nIn addition, coordinates/components of the geometry may added or modified,\njust like a Python list::\n\n    >>> line[0] = (1.0, 1.0)\n    >>> line.pop()\n    (0.0, 0.0)\n    >>> line.append((1.0, 1.0))\n    >>> line.coords\n    ((1.0, 1.0), (0.0, 50.0), (50.0, 50.0), (50.0, 0.0), (1.0, 1.0))\n\nGeometry Objects\n================\n\n``GEOSGeometry``\n----------------\n\n.. class:: GEOSGeometry(geo_input[, srid=None])\n\n  :param geo_input: Geometry input value (string or buffer)\n  :param srid: spatial reference identifier\n  :type srid: int\n\nThis is the base class for all GEOS geometry objects.  It initializes on the\ngiven ``geo_input`` argument, and then assumes the proper geometry subclass\n(e.g., ``GEOSGeometry('POINT(1 1)')`` will create a :class:`Point` object).\n\nThe following input formats, along with their corresponding Python types,\nare accepted:\n\n=============  ======================\nFormat         Input Type\n=============  ======================\nWKT / EWKT     ``str`` or ``unicode``\nHEX / HEXEWKB  ``str`` or ``unicode``\nWKB / EWKB     ``buffer``\nGeoJSON        ``str`` or ``unicode``\n=============  ======================\n\n.. note::\n\n    The new 3D/4D WKT notation with an intermediary Z or M (like\n    ``POINT Z (3, 4, 5)``) is only supported with GEOS 3.3.0 or later.\n\nProperties\n~~~~~~~~~~\n\n.. attribute:: GEOSGeometry.coords\n\nReturns the coordinates of the geometry as a tuple.\n\n.. attribute:: GEOSGeometry.empty\n\nReturns whether or not the set of points in the geometry is empty.\n\n.. attribute:: GEOSGeometry.geom_type\n\nReturns a string corresponding to the type of geometry.  For example::\n\n    >>> pnt = GEOSGeometry('POINT(5 23)')\n    >>> pnt.geom_type\n    'Point'\n\n.. attribute:: GEOSGeometry.geom_typeid\n\nReturns the GEOS geometry type identification number.  The following table\nshows the value for each geometry type:\n\n===========================  ========\nGeometry                     ID\n===========================  ========\n:class:`Point`               0\n:class:`LineString`          1\n:class:`LinearRing`          2\n:class:`Polygon`             3\n:class:`MultiPoint`          4\n:class:`MultiLineString`     5\n:class:`MultiPolygon`        6\n:class:`GeometryCollection`  7\n===========================  ========\n\n.. attribute:: GEOSGeometry.num_coords\n\nReturns the number of coordinates in the geometry.\n\n.. attribute:: GEOSGeometry.num_geom\n\nReturns the number of geometries in this geometry.  In other words, will\nreturn 1 on anything but geometry collections.\n\n.. attribute:: GEOSGeometry.hasz\n\nReturns a boolean indicating whether the geometry is three-dimensional.\n\n.. attribute:: GEOSGeometry.ring\n\nReturns a boolean indicating whether the geometry is a ``LinearRing``.\n\n.. attribute:: GEOSGeometry.simple\n\nReturns a boolean indicating whether the geometry is 'simple'. A geometry\nis simple if and only if it does not intersect itself (except at boundary\npoints).  For example, a :class:`LineString` object is not simple if it\nintersects itself. Thus, :class:`LinearRing` and :class`Polygon` objects\nare always simple because they do cannot intersect themselves, by\ndefinition.\n\n.. attribute:: GEOSGeometry.valid\n\nReturns a boolean indicating whether the geometry is valid.\n\n.. attribute:: GEOSGeometry.valid_reason\n\nReturns a string describing the reason why a geometry is invalid.\n\n.. attribute:: GEOSGeometry.srid\n\nProperty that may be used to retrieve or set the SRID associated with the\ngeometry.  For example::\n\n    >>> pnt = Point(5, 23)\n    >>> print(pnt.srid)\n    None\n    >>> pnt.srid = 4326\n    >>> pnt.srid\n    4326\n\nOutput Properties\n~~~~~~~~~~~~~~~~~\n\nThe properties in this section export the :class:`GEOSGeometry` object into\na different.  This output may be in the form of a string, buffer, or even\nanother object.\n\n.. attribute:: GEOSGeometry.ewkt\n\nReturns the \"extended\" Well-Known Text of the geometry.  This representation\nis specific to PostGIS and is a super set of the OGC WKT standard. [#fnogc]_\nEssentially the SRID is prepended to the WKT representation, for example\n``SRID=4326;POINT(5 23)``.\n\n.. note::\n\n   The output from this property does not include the 3dm, 3dz, and 4d\n   information that PostGIS supports in its EWKT representations.\n\n.. attribute:: GEOSGeometry.hex\n\nReturns the WKB of this Geometry in hexadecimal form.  Please note\nthat the SRID value is not included in this representation\nbecause it is not a part of the OGC specification (use the\n:attr:`GEOSGeometry.hexewkb` property instead).\n\n.. versionchanged:: 1.5\n\n    Prior to Django 1.5, the Z value of the geometry was dropped.\n\n.. attribute:: GEOSGeometry.hexewkb\n\nReturns the EWKB of this Geometry in hexadecimal form.  This is an\nextension of the WKB specification that includes the SRID value\nthat are a part of this geometry.\n\n.. note::\n\n   GEOS 3.1 is *required* if you want valid 3D HEXEWKB.\n\n.. attribute:: GEOSGeometry.json\n\nReturns the GeoJSON representation of the geometry.\n\n.. note::\n\n    Requires GDAL.\n\n.. attribute:: GEOSGeometry.geojson\n\nAlias for :attr:`GEOSGeometry.json`.\n\n.. attribute:: GEOSGeometry.kml\n\nReturns a `KML`__ (Keyhole Markup Language) representation of the\ngeometry.  This should only be used for geometries with an SRID of\n4326 (WGS84), but this restriction is not enforced.\n\n.. attribute:: GEOSGeometry.ogr\n\nReturns an :class:`~django.contrib.gis.gdal.OGRGeometry` object\ncorrespondg to the GEOS geometry.\n\n.. note::\n\n    Requires GDAL.\n\n.. _wkb:\n\n.. attribute:: GEOSGeometry.wkb\n\nReturns the WKB (Well-Known Binary) representation of this Geometry\nas a Python buffer.  SRID value is not included, use the\n:attr:`GEOSGeometry.ewkb` property instead.\n\n.. versionchanged:: 1.5\n\n    Prior to Django 1.5, the Z value of the geometry was dropped.\n\n.. _ewkb:\n\n.. attribute:: GEOSGeometry.ewkb\n\nReturn the EWKB representation of this Geometry as a Python buffer.\nThis is an extension of the WKB specification that includes any SRID\nvalue that are a part of this geometry.\n\n.. note::\n\n   GEOS 3.1 is *required* if you want valid 3D EWKB.\n\n.. attribute:: GEOSGeometry.wkt\n\nReturns the Well-Known Text of the geometry (an OGC standard).\n\n__ https://developers.google.com/kml/documentation/\n\nSpatial Predicate Methods\n~~~~~~~~~~~~~~~~~~~~~~~~~\n\nAll of the following spatial predicate methods take another\n:class:`GEOSGeometry` instance (``other``) as a parameter, and\nreturn a boolean.\n\n.. method:: GEOSGeometry.contains(other)\n\nReturns ``True`` if :meth:`GEOSGeometry.within` is ``False``.\n\n.. method:: GEOSGeometry.crosses(other)\n\nReturns ``True`` if the DE-9IM intersection matrix for the two Geometries\nis ``T*T******`` (for a point and a curve,a point and an area or a line\nand an area) ``0********`` (for two curves).\n\n.. method:: GEOSGeometry.disjoint(other)\n\nReturns ``True`` if the DE-9IM intersection matrix for the two geometries\nis ``FF*FF****``.\n\n.. method:: GEOSGeometry.equals(other)\n\nReturns ``True`` if the DE-9IM intersection matrix for the two geometries\nis ``T*F**FFF*``.\n\n.. method:: GEOSGeometry.equals_exact(other, tolerance=0)\n\nReturns true if the two geometries are exactly equal, up to a\nspecified tolerance.  The ``tolerance`` value should be a floating\npoint number representing the error tolerance in the comparison, e.g.,\n``poly1.equals_exact(poly2, 0.001)`` will compare equality to within\none thousandth of a unit.\n\n.. method:: GEOSGeometry.intersects(other)\n\nReturns ``True`` if :meth:`GEOSGeometry.disjoint` is ``False``.\n\n.. method:: GEOSGeometry.overlaps(other)\n\nReturns true if the DE-9IM intersection matrix for the two geometries\nis ``T*T***T**`` (for two points or two surfaces) ``1*T***T**``\n(for two curves).\n\n.. method:: GEOSGeometry.relate_pattern(other, pattern)\n\nReturns ``True`` if the elements in the DE-9IM intersection matrix\nfor this geometry and the other matches the given ``pattern`` --\na string of nine characters from the alphabet: {``T``, ``F``, ``*``, ``0``}.\n\n.. method:: GEOSGeometry.touches(other)\n\nReturns ``True`` if the DE-9IM intersection matrix for the two geometries\nis ``FT*******``, ``F**T*****`` or ``F***T****``.\n\n.. method:: GEOSGeometry.within(other)\n\nReturns ``True`` if the DE-9IM intersection matrix for the two geometries\nis ``T*F**F***``.\n\nTopological Methods\n~~~~~~~~~~~~~~~~~~~\n\n.. method:: GEOSGeometry.buffer(width, quadsegs=8)\n\nReturns a :class:`GEOSGeometry` that represents all points whose distance\nfrom this geometry is less than or equal to the given ``width``. The optional\n``quadsegs`` keyword sets the number of segments used to approximate a\nquarter circle (defaults is 8).\n\n.. method:: GEOSGeometry.difference(other)\n\nReturns a :class:`GEOSGeometry` representing the points making up this\ngeometry that do not make up other.\n\n.. method:: GEOSGeometry.interpolate(distance)\n.. method:: GEOSGeometry.interpolate_normalized(distance)\n\n.. versionadded:: 1.5\n\nGiven a distance (float), returns the point (or closest point) within the\ngeometry (:class:`LineString` or :class:`MultiLineString`) at that distance.\nThe normalized version takes the distance as a float between 0 (origin) and 1\n(endpoint).\n\nReverse of :meth:`GEOSGeometry.project`.\n\n.. method:: GEOSGeometry:intersection(other)\n\nReturns a :class:`GEOSGeometry` representing the points shared by this\ngeometry and other.\n\n.. method:: GEOSGeometry.project(point)\n.. method:: GEOSGeometry.project_normalized(point)\n\n.. versionadded:: 1.5\n\nReturns the distance (float) from the origin of the geometry\n(:class:`LineString` or :class:`MultiLineString`) to the point projected on the\ngeometry (that is to a point of the line the closest to the given point).\nThe normalized version returns the distance as a float between 0 (origin) and 1\n(endpoint).\n\nReverse of :meth:`GEOSGeometry.interpolate`.\n\n.. method:: GEOSGeometry.relate(other)\n\nReturns the DE-9IM intersection matrix (a string) representing the\ntopological relationship between this geometry and the other.\n\n.. method:: GEOSGeometry.simplify(tolerance=0.0, preserve_topology=False)\n\nReturns a new :class:`GEOSGeometry`, simplified using the Douglas-Peucker\nalgorithm to the specified tolerance.  A higher tolerance value implies\nless points in the output.  If no tolerance is tolerance provided,\nit defaults to 0.\n\nBy default, this function does not preserve topology - e.g.,\n:class:`Polygon` objects can be split, collapsed into lines or disappear.\n:class:`Polygon` holes can be created or disappear, and lines can cross.\nBy specifying ``preserve_topology=True``, the result will have the same\ndimension and number of components as the input, however, this is\nsignificantly slower.\n\n.. method:: GEOSGeometry.sym_difference(other)\n\nReturns a :class:`GEOSGeometry` combining the points in this geometry\nnot in other, and the points in other not in this geometry.\n\n.. method:: GEOSGeometry.union(other)\n\nReturns a :class:`GEOSGeometry` representing all the points in this\ngeometry and the other.\n\nTopological Properties\n~~~~~~~~~~~~~~~~~~~~~~\n\n.. attribute:: GEOSGeometry.boundary\n\nReturns the boundary as a newly allocated Geometry object.\n\n.. attribute:: GEOSGeometry.centroid\n\nReturns a :class:`Point` object representing the geometric center of\nthe geometry.  The point is not guaranteed to be on the interior\nof the geometry.\n\n.. attribute:: GEOSGeometry.convex_hull\n\nReturns the smallest :class:`Polygon` that contains all the points in\nthe geometry.\n\n.. attribute:: GEOSGeometry.envelope\n\nReturns a :class:`Polygon` that represents the bounding envelope of\nthis geometry.\n\n.. attribute:: GEOSGeometry.point_on_surface\n\nComputes and returns a :class:`Point` guaranteed to be on the interior\nof this geometry.\n\nOther Properties & Methods\n~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. attribute:: GEOSGeometry.area\n\nThis property returns the area of the Geometry.\n\n.. attribute:: GEOSGeometry.extent\n\nThis property returns the extent of this geometry as a 4-tuple,\nconsisting of (xmin, ymin, xmax, ymax).\n\n.. method:: GEOSGeometry.clone()\n\nThis method returns a :class:`GEOSGeometry` that is a clone of the original.\n\n.. method:: GEOSGeometry.distance(geom)\n\nReturns the distance between the closest points on this geometry and the given\n``geom`` (another :class:`GEOSGeometry` object).\n\n.. note::\n\n    GEOS distance calculations are  linear -- in other words, GEOS does not\n    perform a spherical calculation even if the SRID specifies a geographic\n    coordinate system.\n\n.. attribute:: GEOSGeometry.length\n\nReturns the length of this geometry (e.g., 0 for a :class:`Point`,\nthe length of a :class:`LineString`, or the circumference of\na :class:`Polygon`).\n\n.. attribute:: GEOSGeometry.prepared\n\n.. note::\n\n    Support for prepared geometries requires GEOS 3.1.\n\nReturns a GEOS ``PreparedGeometry`` for the contents of this geometry.\n``PreparedGeometry`` objects are optimized for the contains, intersects,\nand covers operations.  Refer to the :ref:`prepared-geometries` documentation\nfor more information.\n\n.. attribute:: GEOSGeometry.srs\n\nReturns a :class:`~django.contrib.gis.gdal.SpatialReference` object\ncorresponding to the SRID of the geometry or ``None``.\n\n.. note::\n\n    Requires GDAL.\n\n.. method:: GEOSGeometry.transform(ct, clone=False)\n\nTransforms the geometry according to the given coordinate transformation paramter\n(``ct``), which may be an integer SRID, spatial reference WKT string,\na PROJ.4 string, a :class:`~django.contrib.gis.gdal.SpatialReference` object, or a\n:class:`~django.contrib.gis.gdal.CoordTransform` object. By default, the geometry\nis transformed in-place and nothing is returned. However if the ``clone`` keyword\nis set, then the geometry is not modified and a transformed clone of the geometry\nis returned instead.\n\n.. note::\n\n    Requires GDAL.\n\n.. note::\n\n   Prior to 1.3, this method would silently no-op if GDAL was not available.\n   Now, a :class:`~django.contrib.gis.geos.GEOSException` is raised as\n   application code relying on this behavior is in error. In addition,\n   use of this method when the SRID is ``None`` or less than 0 now also generates\n   a :class:`~django.contrib.gis.geos.GEOSException`.\n\n\n``Point``\n---------\n\n.. class:: Point(x, y, z=None, srid=None)\n\n   ``Point`` objects are instantiated using arguments that represent\n   the component coordinates of the point or with a single sequence\n   coordinates.  For example, the following are equivalent::\n\n       >>> pnt = Point(5, 23)\n       >>> pnt = Point([5, 23])\n\n``LineString``\n--------------\n\n.. class:: LineString(*args, **kwargs)\n\n   ``LineString`` objects are instantiated using arguments that are\n   either a sequence of coordinates or :class:`Point` objects.\n   For example, the following are equivalent::\n\n       >>> ls = LineString((0, 0), (1, 1))\n       >>> ls = LineString(Point(0, 0), Point(1, 1))\n\n   In addition, ``LineString`` objects may also be created by passing\n   in a single sequence of coordinate or :class:`Point` objects::\n\n       >>> ls = LineString( ((0, 0), (1, 1)) )\n       >>> ls = LineString( [Point(0, 0), Point(1, 1)] )\n\n``LinearRing``\n--------------\n\n.. class:: LinearRing(*args, **kwargs)\n\n   ``LinearRing`` objects are constructed in the exact same way as\n   :class:`LineString` objects, however the coordinates must be\n   *closed*, in other words, the first coordinates must be the\n   same as the last coordinates.  For example::\n\n       >>> ls = LinearRing((0, 0), (0, 1), (1, 1), (0, 0))\n\n   Notice that ``(0, 0)`` is the first and last coordinate -- if\n   they were not equal, an error would be raised.\n\n``Polygon``\n-----------\n\n.. class:: Polygon(*args, **kwargs)\n\n   ``Polygon`` objects may be instantiated by passing in one or\n   more parameters that represent the rings of the polygon.  The\n   parameters must either be :class:`LinearRing` instances, or\n   a sequence that may be used to construct a :class:`LinearRing`::\n\n       >>> ext_coords = ((0, 0), (0, 1), (1, 1), (1, 0), (0, 0))\n       >>> int_coords = ((0.4, 0.4), (0.4, 0.6), (0.6, 0.6), (0.6, 0.4), (0.4, 0.4))\n       >>> poly = Polygon(ext_coords, int_coords)\n       >>> poly = Polygon(LinearRing(ext_coords), LinearRing(int_coords))\n\n   .. classmethod:: from_bbox(bbox)\n\n   Returns a polygon object from the given bounding-box, a 4-tuple\n   comprising (xmin, ymin, xmax, ymax).\n\n   .. attribute:: num_interior_rings\n\n   Returns the number of interior rings in this geometry.\n\n.. admonition:: Comparing Polygons\n\n    Note that it is possible to compare ``Polygon`` objects directly with ``<``\n    or ``>``, but as the comparison is made through Polygon's\n    :class:`LineString`, it does not mean much (but is consistent and quick).\n    You can always force the comparison with the :attr:`~GEOSGeometry.area`\n    property::\n\n        >>> if poly_1.area > poly_2.area:\n        >>>     pass\n\nGeometry Collections\n====================\n\n``MultiPoint``\n--------------\n\n.. class:: MultiPoint(*args, **kwargs)\n\n   ``MultiPoint`` objects may be instantiated by passing in one\n   or more :class:`Point` objects as arguments, or a single\n   sequence of :class:`Point` objects::\n\n       >>> mp = MultiPoint(Point(0, 0), Point(1, 1))\n       >>> mp = MultiPoint( (Point(0, 0), Point(1, 1)) )\n\n``MultiLineString``\n-------------------\n\n.. class:: MultiLineString(*args, **kwargs)\n\n   ``MultiLineString`` objects may be instantiated by passing in one\n   or more :class:`LineString` objects as arguments, or a single\n   sequence of :class:`LineString` objects::\n\n       >>> ls1 = LineString((0, 0), (1, 1))\n       >>> ls2 = LineString((2, 2), (3, 3))\n       >>> mls = MultiLineString(ls1, ls2)\n       >>> mls = MultiLineString([ls1, ls2])\n\n   .. attribute:: merged\n\n   Returns a :class:`LineString` representing the line merge of\n   all the components in this ``MultiLineString``.\n\n\n``MultiPolygon``\n----------------\n\n.. class:: MultiPolygon(*args, **kwargs)\n\n   ``MultiPolygon`` objects may be instantiated by passing one or\n   more :class:`Polygon` objects as arguments, or a single sequence\n   of :class:`Polygon` objects::\n\n       >>> p1 = Polygon( ((0, 0), (0, 1), (1, 1), (0, 0)) )\n       >>> p2 = Polygon( ((1, 1), (1, 2), (2, 2), (1, 1)) )\n       >>> mp = MultiPolygon(p1, p2)\n       >>> mp = MultiPolygon([p1, p2])\n\n   .. attribute:: cascaded_union\n\n   Returns a :class:`Polygon` that is the union of all of the component\n   polygons in this collection.  The algorithm employed is significantly\n   more efficient (faster) than trying to union the geometries together\n   individually. [#fncascadedunion]_\n\n   .. note::\n\n       GEOS 3.1 is *required* to peform cascaded unions.\n\n``GeometryCollection``\n----------------------\n\n.. class:: GeometryCollection(*args, **kwargs)\n\n   ``GeometryCollection`` objects may be instantiated by passing in\n   one or more other :class:`GEOSGeometry` as arguments, or a single\n   sequence of :class:`GEOSGeometry` objects::\n\n       >>> poly = Polygon( ((0, 0), (0, 1), (1, 1), (0, 0)) )\n       >>> gc = GeometryCollection(Point(0, 0), MultiPoint(Point(0, 0), Point(1, 1)), poly)\n       >>> gc = GeometryCollection((Point(0, 0), MultiPoint(Point(0, 0), Point(1, 1)), poly))\n\n.. _prepared-geometries:\n\nPrepared Geometries\n===================\n\nIn order to obtain a prepared geometry, just access the\n:attr:`GEOSGeometry.prepared` property.  Once you have a\n``PreparedGeometry`` instance its spatial predicate methods, listed below,\nmay be used with other ``GEOSGeometry`` objects.  An operation with a prepared\ngeometry can be orders of magnitude faster -- the more complex the geometry\nthat is prepared, the larger the speedup in the operation.  For more information,\nplease consult the `GEOS wiki page on prepared geometries <http://trac.osgeo.org/geos/wiki/PreparedGeometry>`_.\n\n.. note::\n\n   GEOS 3.1 is *required* in order to use prepared geometries.\n\nFor example::\n\n    >>> from django.contrib.gis.geos import Point, Polygon\n    >>> poly = Polygon.from_bbox((0, 0, 5, 5))\n    >>> prep_poly = poly.prepared\n    >>> prep_poly.contains(Point(2.5, 2.5))\n    True\n\n``PreparedGeometry``\n--------------------\n\n.. class:: PreparedGeometry\n\n  All methods on ``PreparedGeometry`` take an ``other`` argument, which\n  must be a :class:`GEOSGeometry` instance.\n\n  .. method:: contains(other)\n\n  .. method:: contains_properly(other)\n\n  .. method:: covers(other)\n\n  .. method:: intersects(other)\n\nGeometry Factories\n==================\n\n.. function:: fromfile(file_h)\n\n   :param file_h: input file that contains spatial data\n   :type file_h: a Python ``file`` object or a string path to the file\n   :rtype: a :class:`GEOSGeometry` corresponding to the spatial data in the file\n\nExample::\n\n    >>> from django.contrib.gis.geos import fromfile\n    >>> g = fromfile('/home/bob/geom.wkt')\n\n.. function:: fromstr(string, [,srid=None])\n\n   :param string: string that contains spatial data\n   :type string: string\n   :param srid: spatial reference identifier\n   :type srid: int\n   :rtype: a :class:`GEOSGeometry` corresponding to the spatial data in the string\n\nExample::\n\n    >>> from django.contrib.gis.geos import fromstr\n    >>> pnt = fromstr('POINT(-90.5 29.5)', srid=4326)\n\nI/O Objects\n===========\n\nReader Objects\n--------------\n\nThe reader I/O classes simply return a :class:`GEOSGeometry` instance from the\nWKB and/or WKT input given to their ``read(geom)`` method.\n\n.. class:: WKBReader\n\nExample::\n\n    >>> from django.contrib.gis.geos import WKBReader\n    >>> wkb_r = WKBReader()\n    >>> wkb_r.read('0101000000000000000000F03F000000000000F03F')\n    <Point object at 0x103a88910>\n\n.. class:: WKTReader\n\nExample::\n\n    >>> from django.contrib.gis.geos import WKTReader\n    >>> wkt_r = WKTReader()\n    >>> wkt_r.read('POINT(1 1)')\n    <Point object at 0x103a88b50>\n\nWriter Objects\n--------------\n\nAll writer objects have a ``write(geom)`` method that returns either the\nWKB or WKT of the given geometry.  In addition, :class:`WKBWriter` objects\nalso have properties that may be used to change the byte order, and or\ninclude the SRID value (in other words, EWKB).\n\n.. class:: WKBWriter\n\n``WKBWriter`` provides the most control over its output.  By default it\nreturns OGC-compliant WKB when it's ``write`` method is called.  However,\nit has properties that allow for the creation of EWKB, a superset of the\nWKB standard that includes additional information.\n\n.. method:: WKBWriter.write(geom)\n\nReturns the WKB of the given geometry as a Python ``buffer`` object.\nExample::\n\n    >>> from django.contrib.gis.geos import Point, WKBWriter\n    >>> pnt = Point(1, 1)\n    >>> wkb_w = WKBWriter()\n    >>> wkb_w.write(pnt)\n    <read-only buffer for 0x103a898f0, size -1, offset 0 at 0x103a89930>\n\n.. method:: WKBWriter.write_hex(geom)\n\nReturns WKB of the geometry in hexadecimal.  Example::\n\n    >>> from django.contrib.gis.geos import Point, WKBWriter\n    >>> pnt = Point(1, 1)\n    >>> wkb_w = WKBWriter()\n    >>> wkb_w.write_hex(pnt)\n    '0101000000000000000000F03F000000000000F03F'\n\n.. attribute:: WKBWriter.byteorder\n\nThis property may be be set to change the byte-order of the geometry\nrepresentation.\n\n=============== =================================================\nByteorder Value Description\n=============== =================================================\n0               Big Endian (e.g., compatible with RISC systems)\n1               Little Endian (e.g., compatible with x86 systems)\n=============== =================================================\n\nExample::\n\n    >>> from django.contrib.gis.geos import Point, WKBWriter\n    >>> wkb_w = WKBWriter()\n    >>> pnt = Point(1, 1)\n    >>> wkb_w.write_hex(pnt)\n    '0101000000000000000000F03F000000000000F03F'\n    >>> wkb_w.byteorder = 0\n    '00000000013FF00000000000003FF0000000000000'\n\n.. attribute:: WKBWriter.outdim\n\nThis property may be set to change the output dimension of the geometry\nrepresentation.  In other words, if you have a 3D geometry then set to 3\nso that the Z value is included in the WKB.\n\n============ ===========================\nOutdim Value Description\n============ ===========================\n2            The default, output 2D WKB.\n3            Output 3D WKB.\n============ ===========================\n\nExample::\n\n    >>> from django.contrib.gis.geos import Point, WKBWriter\n    >>> wkb_w = WKBWriter()\n    >>> wkb_w.outdim\n    2\n    >>> pnt = Point(1, 1, 1)\n    >>> wkb_w.write_hex(pnt) # By default, no Z value included:\n    '0101000000000000000000F03F000000000000F03F'\n    >>> wkb_w.outdim = 3 # Tell writer to include Z values\n    >>> wkb_w.write_hex(pnt)\n    '0101000080000000000000F03F000000000000F03F000000000000F03F'\n\n.. attribute:: WKBWriter.srid\n\nSet this property with a boolean to indicate whether the SRID of the\ngeometry should be included with the WKB representation.  Example::\n\n    >>> from django.contrib.gis.geos import Point, WKBWriter\n    >>> wkb_w = WKBWriter()\n    >>> pnt = Point(1, 1, srid=4326)\n    >>> wkb_w.write_hex(pnt) # By default, no SRID included:\n    '0101000000000000000000F03F000000000000F03F'\n    >>> wkb_w.srid = True # Tell writer to include SRID\n    >>> wkb_w.write_hex(pnt)\n    '0101000020E6100000000000000000F03F000000000000F03F'\n\n.. class:: WKTWriter\n\n.. method:: WKTWriter.write(geom)\n\nReturns the WKT of the given geometry. Example::\n\n    >>> from django.contrib.gis.geos import Point, WKTWriter\n    >>> pnt = Point(1, 1)\n    >>> wkt_w = WKTWriter()\n    >>> wkt_w.write(pnt)\n    'POINT (1.0000000000000000 1.0000000000000000)'\n\n\n.. rubric:: Footnotes\n.. [#fnogc] *See* `PostGIS EWKB, EWKT and Canonical Forms <http://postgis.refractions.net/docs/using_postgis_dbmanagement.html#EWKB_EWKT>`_, PostGIS documentation at Ch. 4.1.2.\n.. [#fncascadedunion] For more information, read Paul Ramsey's blog post about `(Much) Faster Unions in PostGIS 1.4 <http://blog.cleverelephant.ca/2009/01/must-faster-unions-in-postgis-14.html>`_ and Martin Davis' blog post on `Fast polygon merging in JTS using Cascaded Union <http://lin-ear-th-inking.blogspot.com/2007/11/fast-polygon-merging-in-jts-using.html>`_.\n\nSettings\n========\n\n.. setting:: GEOS_LIBRARY_PATH\n\nGEOS_LIBRARY_PATH\n-----------------\n\nA string specifying the location of the GEOS C library.  Typically,\nthis setting is only used if the GEOS C library is in a non-standard\nlocation (e.g., ``/home/bob/lib/libgeos_c.so``).\n\n.. note::\n\n    The setting must be the *full* path to the **C** shared library; in\n    other words you want to use ``libgeos_c.so``, not ``libgeos.so``.\n\nExceptions\n==========\n\n.. exception:: GEOSException\n\nThe base GEOS exception, indicates a GEOS-related error.\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/contrib/gis/index.txt",
    "content": ".. _ref-contrib-gis:\n\n=========\nGeoDjango\n=========\n\n.. module:: django.contrib.gis\n   :synopsis: Geographic Information System (GIS) extensions for Django\n\nGeoDjango intends to be a world-class geographic Web framework. Its goal is to\nmake it as easy as possible to build GIS Web applications and harness the power\nof spatially enabled data.\n\n.. toctree::\n   :maxdepth: 2\n\n   tutorial\n   install/index\n   model-api\n   db-api\n   geoquerysets\n   measure\n   geos\n   gdal\n   geoip\n   utils\n   commands\n   admin\n   feeds\n   sitemaps\n   testing\n   deployment\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/contrib/gis/install/create_template_postgis-1.3.sh",
    "content": "#!/usr/bin/env bash\nPOSTGIS_SQL_PATH=`pg_config --sharedir`\ncreatedb -E UTF8 template_postgis # Create the template spatial database.\ncreatelang -d template_postgis plpgsql # Adding PLPGSQL language support.\npsql -d postgres -c \"UPDATE pg_database SET datistemplate='true' WHERE datname='template_postgis';\"\npsql -d template_postgis -f $POSTGIS_SQL_PATH/lwpostgis.sql # Loading the PostGIS SQL routines\npsql -d template_postgis -f $POSTGIS_SQL_PATH/spatial_ref_sys.sql\npsql -d template_postgis -c \"GRANT ALL ON geometry_columns TO PUBLIC;\" # Enabling users to alter spatial tables.\npsql -d template_postgis -c \"GRANT ALL ON spatial_ref_sys TO PUBLIC;\"\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/contrib/gis/install/create_template_postgis-1.4.sh",
    "content": "#!/usr/bin/env bash\nPOSTGIS_SQL_PATH=`pg_config --sharedir`/contrib\ncreatedb -E UTF8 template_postgis # Create the template spatial database.\ncreatelang -d template_postgis plpgsql # Adding PLPGSQL language support.\npsql -d postgres -c \"UPDATE pg_database SET datistemplate='true' WHERE datname='template_postgis';\"\npsql -d template_postgis -f $POSTGIS_SQL_PATH/postgis.sql # Loading the PostGIS SQL routines\npsql -d template_postgis -f $POSTGIS_SQL_PATH/spatial_ref_sys.sql\npsql -d template_postgis -c \"GRANT ALL ON geometry_columns TO PUBLIC;\" # Enabling users to alter spatial tables.\npsql -d template_postgis -c \"GRANT ALL ON spatial_ref_sys TO PUBLIC;\"\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/contrib/gis/install/create_template_postgis-1.5.sh",
    "content": "#!/usr/bin/env bash\nPOSTGIS_SQL_PATH=`pg_config --sharedir`/contrib/postgis-1.5\ncreatedb -E UTF8 template_postgis # Create the template spatial database.\ncreatelang -d template_postgis plpgsql # Adding PLPGSQL language support.\npsql -d postgres -c \"UPDATE pg_database SET datistemplate='true' WHERE datname='template_postgis';\"\npsql -d template_postgis -f $POSTGIS_SQL_PATH/postgis.sql # Loading the PostGIS SQL routines\npsql -d template_postgis -f $POSTGIS_SQL_PATH/spatial_ref_sys.sql\npsql -d template_postgis -c \"GRANT ALL ON geometry_columns TO PUBLIC;\" # Enabling users to alter spatial tables.\npsql -d template_postgis -c \"GRANT ALL ON geography_columns TO PUBLIC;\"\npsql -d template_postgis -c \"GRANT ALL ON spatial_ref_sys TO PUBLIC;\"\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/contrib/gis/install/create_template_postgis-debian.sh",
    "content": "#!/bin/bash\n\nGEOGRAPHY=0\nPOSTGIS_SQL=postgis.sql\n\n# For Ubuntu 8.x and 9.x releases.\nif [ -d \"/usr/share/postgresql-8.3-postgis\" ]\nthen\n    POSTGIS_SQL_PATH=/usr/share/postgresql-8.3-postgis\n    POSTGIS_SQL=lwpostgis.sql\nfi\n\n# For Ubuntu 10.04\nif [ -d \"/usr/share/postgresql/8.4/contrib\" ]\nthen\n    POSTGIS_SQL_PATH=/usr/share/postgresql/8.4/contrib\nfi\n\n# For Ubuntu 10.10 (with PostGIS 1.5)\nif [ -d \"/usr/share/postgresql/8.4/contrib/postgis-1.5\" ]\nthen\n    POSTGIS_SQL_PATH=/usr/share/postgresql/8.4/contrib/postgis-1.5\n    GEOGRAPHY=1\nfi\n\n# For Ubuntu 11.10 / Linux Mint 12 (with PostGIS 1.5)\nif [ -d \"/usr/share/postgresql/9.1/contrib/postgis-1.5\" ]\nthen\n    POSTGIS_SQL_PATH=/usr/share/postgresql/9.1/contrib/postgis-1.5\n    GEOGRAPHY=1\nfi\n\ncreatedb -E UTF8 template_postgis && \\\n( createlang -d template_postgis -l | grep plpgsql || createlang -d template_postgis plpgsql ) && \\\npsql -d postgres -c \"UPDATE pg_database SET datistemplate='true' WHERE datname='template_postgis';\" && \\\npsql -d template_postgis -f $POSTGIS_SQL_PATH/$POSTGIS_SQL && \\\npsql -d template_postgis -f $POSTGIS_SQL_PATH/spatial_ref_sys.sql && \\\npsql -d template_postgis -c \"GRANT ALL ON geometry_columns TO PUBLIC;\" && \\\npsql -d template_postgis -c \"GRANT ALL ON spatial_ref_sys TO PUBLIC;\"\n\nif [ $GEOGRAPHY -eq 1 ]\nthen\n    psql -d template_postgis -c \"GRANT ALL ON geography_columns TO PUBLIC;\"\nfi\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/contrib/gis/install/geodjango_setup.bat",
    "content": "set OSGEO4W_ROOT=C:\\OSGeo4W\nset PYTHON_ROOT=C:\\Python27\nset GDAL_DATA=%OSGEO4W_ROOT%\\share\\gdal\nset PROJ_LIB=%OSGEO4W_ROOT%\\share\\proj\nset PATH=%PATH%;%PYTHON_ROOT%;%OSGEO4W_ROOT%\\bin\nreg ADD \"HKLM\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment\" /v Path /t REG_EXPAND_SZ /f /d \"%PATH%\"\nreg ADD \"HKLM\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment\" /v GDAL_DATA /t REG_EXPAND_SZ /f /d \"%GDAL_DATA%\"\nreg ADD \"HKLM\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment\" /v PROJ_LIB /t REG_EXPAND_SZ /f /d \"%PROJ_LIB%\"\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/contrib/gis/install/geolibs.txt",
    "content": ".. _geospatial_libs:\n\n===============================\nInstalling Geospatial libraries\n===============================\n\nGeoDjango uses and/or provides interfaces for the following open source\ngeospatial libraries:\n\n========================  ====================================  ================================  ==========================\nProgram                   Description                           Required                          Supported Versions\n========================  ====================================  ================================  ==========================\n:ref:`GEOS <ref-geos>`    Geometry Engine Open Source           Yes                               3.3, 3.2, 3.1, 3.0\n`PROJ.4`_                 Cartographic Projections library      Yes (PostgreSQL and SQLite only)  4.8, 4.7, 4.6, 4.5, 4.4\n:ref:`GDAL <ref-gdal>`    Geospatial Data Abstraction Library   No (but, required for SQLite)     1.9, 1.8, 1.7, 1.6, 1.5\n:ref:`GeoIP <ref-geoip>`  IP-based geolocation library          No                                1.4\n`PostGIS`__               Spatial extensions for PostgreSQL     Yes (PostgreSQL only)             2.0, 1.5, 1.4, 1.3\n`SpatiaLite`__            Spatial extensions for SQLite         Yes (SQLite only)                 3.0, 2.4, 2.3\n========================  ====================================  ================================  ==========================\n\n.. admonition::  Install GDAL\n\n    While :ref:`gdalbuild` is technically not required, it is *recommended*.\n    Important features of GeoDjango (including the :ref:`ref-layermapping`,\n    geometry reprojection, and the geographic admin) depend on its\n    functionality.\n\n.. note::\n\n    The GeoDjango interfaces to GEOS, GDAL, and GeoIP may be used\n    independently of Django.  In other words, no database or settings file\n    required -- just import them as normal from :mod:`django.contrib.gis`.\n\n.. _PROJ.4: http://trac.osgeo.org/proj/\n__ http://postgis.refractions.net/\n__ http://www.gaia-gis.it/gaia-sins/\n\n\nOn Debian/Ubuntu, you are advised to install the following packages which will\ninstall, directly or by dependency, the required geospatial libraries:\n\n.. code-block:: bash\n\n    $ sudo apt-get install binutils libproj-dev gdal-bin\n\nOptional packages to consider:\n\n* ``libgeoip1``: for :ref:`GeoIP <ref-geoip>` support\n* ``gdal-bin``: for GDAL command line programs like ``ogr2ogr``\n* ``python-gdal`` for GDAL's own Python bindings -- includes interfaces for raster manipulation\n\nPlease also consult platform-specific instructions if you are on :ref:`macosx`\nor :ref:`windows`.\n\n.. _build_from_source:\n\nBuilding from source\n====================\n\nWhen installing from source on UNIX and GNU/Linux systems, please follow\nthe installation instructions carefully, and install the libraries in the\ngiven order.  If using MySQL or Oracle as the spatial database, only GEOS\nis required.\n\n.. note::\n\n   On Linux platforms, it may be necessary to run the ``ldconfig``\n   command after installing each library.  For example::\n\n       $ sudo make install\n       $ sudo ldconfig\n\n.. note::\n\n    OS X users are required to install `Apple Developer Tools`_ in order\n    to compile software from source.  This is typically included on your\n    OS X installation DVDs.\n\n.. _Apple Developer Tools: https://developer.apple.com/technologies/tools/\n\n.. _geosbuild:\n\nGEOS\n----\n\nGEOS is a C++ library for performing geometric operations, and is the default\ninternal geometry representation used by GeoDjango (it's behind the \"lazy\"\ngeometries).  Specifically, the C API library is called (e.g., ``libgeos_c.so``)\ndirectly from Python using ctypes.\n\nFirst, download GEOS 3.3.5 from the refractions Web site and untar the source\narchive::\n\n    $ wget http://download.osgeo.org/geos/geos-3.3.5.tar.bz2\n    $ tar xjf geos-3.3.5.tar.bz2\n\nNext, change into the directory where GEOS was unpacked, run the configure\nscript, compile, and install::\n\n    $ cd geos-3.3.5\n    $ ./configure\n    $ make\n    $ sudo make install\n    $ cd ..\n\nTroubleshooting\n^^^^^^^^^^^^^^^\n\nCan't find GEOS library\n~~~~~~~~~~~~~~~~~~~~~~~\n\nWhen GeoDjango can't find GEOS, this error is raised:\n\n.. code-block:: text\n\n    ImportError: Could not find the GEOS library (tried \"geos_c\"). Try setting GEOS_LIBRARY_PATH in your settings.\n\nThe most common solution is to properly configure your :ref:`libsettings` *or* set\n:ref:`geoslibrarypath` in your settings.\n\nIf using a binary package of GEOS (e.g., on Ubuntu), you may need to :ref:`binutils`.\n\n.. _geoslibrarypath:\n\n``GEOS_LIBRARY_PATH``\n~~~~~~~~~~~~~~~~~~~~~\n\nIf your GEOS library is in a non-standard location, or you don't want to\nmodify the system's library path then the :setting:`GEOS_LIBRARY_PATH`\nsetting may be added to your Django settings file with the full path to the\nGEOS C library.  For example:\n\n.. code-block:: python\n\n    GEOS_LIBRARY_PATH = '/home/bob/local/lib/libgeos_c.so'\n\n.. note::\n\n    The setting must be the *full* path to the **C** shared library; in\n    other words you want to use ``libgeos_c.so``, not ``libgeos.so``.\n\nSee also :ref:`My logs are filled with GEOS-related errors <geos-exceptions-in-logfile>`.\n\n.. _proj4:\n\nPROJ.4\n------\n\n`PROJ.4`_ is a library for converting geospatial data to different coordinate\nreference systems.\n\nFirst, download the PROJ.4 source code and datum shifting files [#]_::\n\n    $ wget http://download.osgeo.org/proj/proj-4.8.0.tar.gz\n    $ wget http://download.osgeo.org/proj/proj-datumgrid-1.5.tar.gz\n\nNext, untar the source code archive, and extract the datum shifting files in the\n``nad`` subdirectory.  This must be done *prior* to configuration::\n\n    $ tar xzf proj-4.8.0.tar.gz\n    $ cd proj-4.8.0/nad\n    $ tar xzf ../../proj-datumgrid-1.5.tar.gz\n    $ cd ..\n\nFinally, configure, make and install PROJ.4::\n\n    $ ./configure\n    $ make\n    $ sudo make install\n    $ cd ..\n\n.. _gdalbuild:\n\nGDAL\n----\n\n`GDAL`__ is an excellent open source geospatial library that has support for\nreading most vector and raster spatial data formats.  Currently, GeoDjango only\nsupports :ref:`GDAL's vector data <ref-gdal>` capabilities [#]_.\n:ref:`geosbuild` and :ref:`proj4` should be installed prior to building GDAL.\n\nFirst download the latest GDAL release version and untar the archive::\n\n    $ wget http://download.osgeo.org/gdal/gdal-1.9.1.tar.gz\n    $ tar xzf gdal-1.9.1.tar.gz\n    $ cd gdal-1.9.1\n\nConfigure, make and install::\n\n    $ ./configure\n    $ make # Go get some coffee, this takes a while.\n    $ sudo make install\n    $ cd ..\n\n.. note::\n\n   Because GeoDjango has it's own Python interface, the preceding instructions\n   do not build GDAL's own Python bindings.  The bindings may be built by\n   adding the ``--with-python`` flag when running ``configure``.  See\n   `GDAL/OGR In Python`__ for more information on GDAL's bindings.\n\nIf you have any problems, please see the troubleshooting section below for\nsuggestions and solutions.\n\n__ http://trac.osgeo.org/gdal/\n__ http://trac.osgeo.org/gdal/wiki/GdalOgrInPython\n\n.. _gdaltrouble:\n\nTroubleshooting\n^^^^^^^^^^^^^^^\n\nCan't find GDAL library\n~~~~~~~~~~~~~~~~~~~~~~~\n\nWhen GeoDjango can't find the GDAL library, the ``HAS_GDAL`` flag\nwill be false:\n\n.. code-block:: pycon\n\n    >>> from django.contrib.gis import gdal\n    >>> gdal.HAS_GDAL\n    False\n\nThe solution is to properly configure your :ref:`libsettings` *or* set\n:ref:`gdallibrarypath` in your settings.\n\n.. _gdallibrarypath:\n\n``GDAL_LIBRARY_PATH``\n~~~~~~~~~~~~~~~~~~~~~\n\nIf your GDAL library is in a non-standard location, or you don't want to\nmodify the system's library path then the :setting:`GDAL_LIBRARY_PATH`\nsetting may be added to your Django settings file with the full path to\nthe GDAL library.  For example:\n\n.. code-block:: python\n\n    GDAL_LIBRARY_PATH = '/home/sue/local/lib/libgdal.so'\n\n.. _gdaldata:\n\nCan't find GDAL data files (``GDAL_DATA``)\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nWhen installed from source, GDAL versions 1.5.1 and below have an autoconf bug\nthat places data in the wrong location. [#]_   This can lead to error messages\nlike this:\n\n.. code-block:: text\n\n    ERROR 4: Unable to open EPSG support file gcs.csv.\n    ...\n    OGRException: OGR failure.\n\nThe solution is to set the ``GDAL_DATA`` environment variable to the location of the\nGDAL data files before invoking Python  (typically ``/usr/local/share``; use\n``gdal-config --datadir`` to find out). For example::\n\n    $ export GDAL_DATA=`gdal-config --datadir`\n    $ python manage.py shell\n\nIf using Apache, you may need to add this environment variable to your configuration\nfile:\n\n.. code-block:: apache\n\n    SetEnv GDAL_DATA /usr/local/share\n\n.. rubric:: Footnotes\n.. [#] The datum shifting files are needed for converting data to and from\n       certain projections.\n       For example, the PROJ.4 string for the `Google projection (900913 or 3857)\n       <http://spatialreference.org/ref/sr-org/6864/prj/>`_ requires the\n       ``null`` grid file only included in the extra datum shifting files.\n       It is easier to install the shifting files now, then to have debug a\n       problem caused by their absence later.\n.. [#] Specifically, GeoDjango provides support for the `OGR\n       <http://gdal.org/ogr>`_ library, a component of GDAL.\n.. [#] See `GDAL ticket #2382 <http://trac.osgeo.org/gdal/ticket/2382>`_.\n\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/contrib/gis/install/index.txt",
    "content": ".. _ref-gis-install:\n\n======================\nGeoDjango Installation\n======================\n\n.. highlight:: console\n\nOverview\n========\nIn general, GeoDjango installation requires:\n\n1. :ref:`Python and Django <django>`\n2. :ref:`spatial_database`\n3. :ref:`geospatial_libs`\n\nDetails for each of the requirements and installation instructions\nare provided in the sections below. In addition, platform-specific\ninstructions are available for:\n\n* :ref:`macosx`\n* :ref:`windows`\n\n.. admonition:: Use the Source\n\n    Because GeoDjango takes advantage of the latest in the open source geospatial\n    software technology, recent versions of the libraries are necessary.\n    If binary packages aren't available for your platform, installation from\n    source may be required. When compiling the libraries from source, please\n    follow the directions closely, especially if you're a beginner.\n\nRequirements\n============\n\n.. _django:\n\nPython and Django\n-----------------\n\nBecause GeoDjango is included with Django, please refer to Django's\n:ref:`installation instructions <installing-official-release>` for details on\nhow to install.\n\n\n.. _spatial_database:\n\nSpatial database\n----------------\nPostgreSQL (with PostGIS), MySQL (mostly with MyISAM engine), Oracle, and SQLite\n(with SpatiaLite) are the spatial databases currently supported.\n\n.. note::\n\n    PostGIS is recommended, because it is the most mature and feature-rich\n    open source spatial database.\n\nThe geospatial libraries required for a GeoDjango installation depends\non the spatial database used.  The following lists the library requirements,\nsupported versions, and any notes for each of the supported database backends:\n\n==================  ==============================  ==================  =========================================\nDatabase            Library Requirements            Supported Versions  Notes\n==================  ==============================  ==================  =========================================\nPostgreSQL          GEOS, PROJ.4, PostGIS           8.2+                Requires PostGIS.\nMySQL               GEOS                            5.x                 Not OGC-compliant; :ref:`limited functionality <mysql-spatial-limitations>`.\nOracle              GEOS                            10.2, 11            XE not supported; not tested with 9.\nSQLite              GEOS, GDAL, PROJ.4, SpatiaLite  3.6.+               Requires SpatiaLite 2.3+, pysqlite2 2.5+\n==================  ==============================  ==================  =========================================\n\nSee also `this comparison matrix`__ on the OSGeo Wiki for\nPostgreSQL/PostGIS/GEOS/GDAL possible combinations.\n\n__ http://trac.osgeo.org/postgis/wiki/UsersWikiPostgreSQLPostGIS\n\nInstallation\n============\n\nGeospatial libraries\n--------------------\n\n.. toctree::\n   :maxdepth: 1\n\n   geolibs\n\nDatabase installation\n---------------------\n\n.. toctree::\n   :maxdepth: 1\n\n   postgis\n   spatialite\n\nAdd ``django.contrib.gis`` to :setting:`INSTALLED_APPS`\n-------------------------------------------------------\n\nLike other Django contrib applications, you will *only* need to add\n:mod:`django.contrib.gis` to :setting:`INSTALLED_APPS` in your settings.\nThis is the so that ``gis`` templates can be located -- if not done, then\nfeatures such as the geographic admin or KML sitemaps will not function properly.\n\n.. _addgoogleprojection:\n\nAdd Google projection to ``spatial_ref_sys`` table\n--------------------------------------------------\n\n.. note::\n\n    If you're running PostGIS 1.4 or above, you can skip this step. The entry\n    is already included in the default ``spatial_ref_sys`` table.\n\nIn order to conduct database transformations to the so-called \"Google\"\nprojection (a spherical mercator projection used by Google Maps),\nan entry must be added to your spatial database's ``spatial_ref_sys`` table.\nInvoke the Django shell from your project and execute the\n``add_srs_entry`` function:\n\n.. code-block:: pycon\n\n    $ python manage.py shell\n    >>> from django.contrib.gis.utils import add_srs_entry\n    >>> add_srs_entry(900913)\n\nThis adds an entry for the 900913 SRID to the ``spatial_ref_sys`` (or equivalent)\ntable, making it possible for the spatial database to transform coordinates in\nthis projection.  You only need to execute this command *once* per spatial database.\n\nTroubleshooting\n===============\n\nIf you can't find the solution to your problem here then participate in the\ncommunity!  You can:\n\n* Join the ``#geodjango`` IRC channel on FreeNode. Please be patient and polite\n  -- while you may not get an immediate response, someone will attempt to answer\n  your question as soon as they see it.\n* Ask your question on the `GeoDjango`__ mailing list.\n* File a ticket on the `Django trac`__ if you think there's a bug.  Make\n  sure to provide a complete description of the problem, versions used,\n  and specify the component as \"GIS\".\n\n__ http://groups.google.com/group/geodjango\n__ https://code.djangoproject.com/newticket\n\n.. _libsettings:\n\nLibrary environment settings\n----------------------------\n\nBy far, the most common problem when installing GeoDjango is that the\nexternal shared libraries (e.g., for GEOS and GDAL) cannot be located. [#]_\nTypically, the cause of this problem is that the operating system isn't aware\nof the directory where the libraries built from source were installed.\n\nIn general, the library path may be set on a per-user basis by setting\nan environment variable, or by configuring the library path for the entire\nsystem.\n\n``LD_LIBRARY_PATH`` environment variable\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nA user may set this environment variable to customize the library paths\nthey want to use.  The typical library directory for software\nbuilt from source is ``/usr/local/lib``.  Thus, ``/usr/local/lib`` needs\nto be included in the ``LD_LIBRARY_PATH`` variable.  For example, the user\ncould place the following in their bash profile::\n\n    export LD_LIBRARY_PATH=/usr/local/lib\n\nSetting system library path\n^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nOn GNU/Linux systems, there is typically a file in ``/etc/ld.so.conf``, which may include\nadditional paths from files in another directory, such as ``/etc/ld.so.conf.d``.\nAs the root user, add the custom library path (like ``/usr/local/lib``) on a\nnew line in ``ld.so.conf``.  This is *one* example of how to do so::\n\n    $ sudo echo /usr/local/lib >> /etc/ld.so.conf\n    $ sudo ldconfig\n\nFor OpenSolaris users, the system library path may be modified using the\n``crle`` utility.  Run ``crle`` with no options to see the current configuration\nand use ``crle -l`` to set with the new library path.  Be *very* careful when\nmodifying the system library path::\n\n    # crle -l $OLD_PATH:/usr/local/lib\n\n.. _binutils:\n\nInstall ``binutils``\n^^^^^^^^^^^^^^^^^^^^\n\nGeoDjango uses the ``find_library`` function (from the ``ctypes.util`` Python\nmodule) to discover libraries.  The ``find_library`` routine uses a program\ncalled ``objdump`` (part of the ``binutils`` package) to verify a shared\nlibrary on GNU/Linux systems.  Thus, if ``binutils`` is not installed on your\nLinux system then Python's ctypes may not be able to find your library even if\nyour library path is set correctly and geospatial libraries were built perfectly.\n\nThe ``binutils`` package may be installed on Debian and Ubuntu systems using the\nfollowing command::\n\n    $ sudo apt-get install binutils\n\nSimilarly, on Red Hat and CentOS systems::\n\n    $ sudo yum install binutils\n\nPlatform-specific instructions\n==============================\n\n.. _macosx:\n\nMac OS X\n--------\n\nBecause of the variety of packaging systems available for OS X, users have\nseveral different options for installing GeoDjango. These options are:\n\n* :ref:`homebrew`\n* :ref:`kyngchaos`\n* :ref:`fink`\n* :ref:`macports`\n* :ref:`build_from_source`\n\n.. note::\n\n    Currently, the easiest and recommended approach for installing GeoDjango\n    on OS X is to use the KyngChaos packages.\n\nThis section also includes instructions for installing an upgraded version\nof :ref:`macosx_python` from packages provided by the Python Software\nFoundation, however, this is not required.\n\n.. _macosx_python:\n\nPython\n^^^^^^\n\nAlthough OS X comes with Python installed, users can use framework\ninstallers (`2.6`__ and `2.7`__ are available) provided by\nthe Python Software Foundation.  An advantage to using the installer is\nthat OS X's Python will remain \"pristine\" for internal operating system\nuse.\n\n__ http://python.org/ftp/python/2.6.6/python-2.6.6-macosx10.3.dmg\n__ http://python.org/ftp/python/2.7.3/\n\n.. note::\n\n    You will need to modify the ``PATH`` environment variable in your\n    ``.profile`` file so that the new version of Python is used when\n    ``python`` is entered at the command-line::\n\n        export PATH=/Library/Frameworks/Python.framework/Versions/Current/bin:$PATH\n\n.. _homebrew:\n\nHomebrew\n^^^^^^^^\n\n`Homebrew`__ provides \"recipes\" for building binaries and packages from source.\nIt provides recipes for the GeoDjango prerequisites on Macintosh computers\nrunning OS X. Because Homebrew still builds the software from source, the\n`Apple Developer Tools`_ are required.\n\nSummary::\n\n    $ brew install postgresql\n    $ brew install postgis\n    $ brew install gdal\n    $ brew install libgeoip\n\n__ http://mxcl.github.com/homebrew/\n.. _Apple Developer Tools: https://developer.apple.com/technologies/tools/\n\n.. _kyngchaos:\n\nKyngChaos packages\n^^^^^^^^^^^^^^^^^^\n\nWilliam Kyngesburye provides a number of `geospatial library binary packages`__\nthat make it simple to get GeoDjango installed on OS X without compiling\nthem from source.  However, the `Apple Developer Tools`_ are still necessary\nfor compiling the Python database adapters :ref:`psycopg2_kyngchaos` (for PostGIS)\nand :ref:`pysqlite2` (for SpatiaLite).\n\n.. note::\n\n    SpatiaLite users should consult the :ref:`spatialite_macosx` section\n    after installing the packages for additional instructions.\n\nDownload the framework packages for:\n\n* UnixImageIO\n* PROJ\n* GEOS\n* SQLite3 (includes the SpatiaLite library)\n* GDAL\n\nInstall the packages in the order they are listed above, as the GDAL and SQLite\npackages require the packages listed before them.\n\nAfterwards, you can also install the KyngChaos binary packages for `PostgreSQL\nand PostGIS`__.\n\nAfter installing the binary packages, you'll want to add the following to\nyour ``.profile`` to be able to run the package programs from the command-line::\n\n    export PATH=/Library/Frameworks/UnixImageIO.framework/Programs:$PATH\n    export PATH=/Library/Frameworks/PROJ.framework/Programs:$PATH\n    export PATH=/Library/Frameworks/GEOS.framework/Programs:$PATH\n    export PATH=/Library/Frameworks/SQLite3.framework/Programs:$PATH\n    export PATH=/Library/Frameworks/GDAL.framework/Programs:$PATH\n    export PATH=/usr/local/pgsql/bin:$PATH\n\n__ http://www.kyngchaos.com/software/frameworks\n__ http://www.kyngchaos.com/software/postgres\n\n.. _psycopg2_kyngchaos:\n\npsycopg2\n~~~~~~~~\n\nAfter you've installed the KyngChaos binaries and modified your ``PATH``, as\ndescribed above, ``psycopg2`` may be installed using the following command::\n\n    $ sudo pip install psycopg2\n\n.. note::\n\n    If you don't have ``pip``, follow the :ref:`installation instructions\n    <installing-official-release>` to install it.\n\n.. _fink:\n\nFink\n^^^^\n\n`Kurt Schwehr`__ has been gracious enough to create GeoDjango packages for users\nof the `Fink`__ package system.  The following packages are available, depending\non which version of Python you want to use:\n\n* ``django-gis-py26``\n* ``django-gis-py25``\n* ``django-gis-py24``\n\n__ http://schwehr.org/blog/\n__ http://www.finkproject.org/\n\n.. _macports:\n\nMacPorts\n^^^^^^^^\n\n`MacPorts`__ may be used to install GeoDjango prerequisites on Macintosh\ncomputers running OS X.  Because MacPorts still builds the software from source,\nthe `Apple Developer Tools`_ are required.\n\nSummary::\n\n    $ sudo port install postgresql83-server\n    $ sudo port install geos\n    $ sudo port install proj\n    $ sudo port install postgis\n    $ sudo port install gdal +geos\n    $ sudo port install libgeoip\n\n.. note::\n\n    You will also have to modify the ``PATH`` in your ``.profile`` so\n    that the MacPorts programs are accessible from the command-line::\n\n        export PATH=/opt/local/bin:/opt/local/lib/postgresql83/bin\n\n    In addition, add the ``DYLD_FALLBACK_LIBRARY_PATH`` setting so that\n    the libraries can be found by Python::\n\n        export DYLD_FALLBACK_LIBRARY_PATH=/opt/local/lib:/opt/local/lib/postgresql83\n\n__ http://www.macports.org/\n\n.. _windows:\n\nWindows\n-------\n\nProceed through the following sections sequentially in order to install\nGeoDjango on Windows.\n\n.. note::\n\n    These instructions assume that you are using 32-bit versions of\n    all programs.  While 64-bit versions of Python and PostgreSQL 9.x\n    are available, 64-bit versions of spatial libraries, like\n    GEOS and GDAL, are not yet provided by the :ref:`OSGeo4W` installer.\n\nPython\n^^^^^^\n\nFirst, download the latest `Python 2.7 installer`__ from the Python Web site.\nNext, run the installer and keep the defaults -- for example, keep\n'Install for all users' checked and the installation path set as\n``C:\\Python27``.\n\n.. note::\n\n    You may already have a version of Python installed in ``C:\\python`` as ESRI\n    products sometimes install a copy there.  *You should still install a\n    fresh version of Python 2.7.*\n\n__ http://python.org/download/\n\nPostgreSQL\n^^^^^^^^^^\n\nFirst, download the latest `PostgreSQL 9.x installer`__ from the\n`EnterpriseDB`__ Web site.  After downloading, simply run the installer,\nfollow the on-screen directions, and keep the default options unless\nyou know the consequences of changing them.\n\n.. note::\n\n    The PostgreSQL installer creates both a new Windows user to be the\n    'postgres service account' and a ``postgres`` database superuser\n    You will be prompted once to set the password for both accounts --\n    make sure to remember it!\n\nWhen the installer completes, it will ask to launch the Application Stack\nBuilder (ASB) on exit -- keep this checked, as it is necessary to\ninstall :ref:`postgisasb`.\n\n.. note::\n\n    If installed successfully, the PostgreSQL server will run in the\n    background each time the system as started as a Windows service.\n    A :menuselection:`PostgreSQL 9.x` start menu group will created\n    and contains shortcuts for the ASB as well as the 'SQL Shell',\n    which will launch a ``psql`` command window.\n\n__ http://www.enterprisedb.com/products-services-training/pgdownload\n__ http://www.enterprisedb.com\n\n.. _postgisasb:\n\nPostGIS\n^^^^^^^\n\nFrom within the Application Stack Builder (to run outside of the installer,\n:menuselection:`Start --> Programs --> PostgreSQL 9.x`), select\n:menuselection:`PostgreSQL Database Server 9.x on port 5432` from the drop down\nmenu.  Next, expand the :menuselection:`Categories --> Spatial Extensions` menu\ntree and select :menuselection:`PostGIS 1.5 for PostgreSQL 9.x`.\n\nAfter clicking next, you will be prompted to select your mirror, PostGIS\nwill be downloaded, and the PostGIS installer will begin.  Select only the\ndefault options during install (e.g., do not uncheck the option to create a\ndefault PostGIS database).\n\n.. note::\n\n    You will be prompted to enter your ``postgres`` database superuser\n    password in the 'Database Connection Information' dialog.\n\npsycopg2\n^^^^^^^^\n\nThe ``psycopg2`` Python module provides the interface between Python and the\nPostgreSQL database.  Download the latest `Windows installer`__ for your version\nof Python and PostgreSQL and run using the default settings. [#]_\n\n__ http://www.stickpeople.com/projects/python/win-psycopg/\n\n.. _osgeo4w:\n\nOSGeo4W\n^^^^^^^\n\nThe `OSGeo4W installer`_ makes it simple to install the PROJ.4, GDAL, and GEOS\nlibraries required by GeoDjango.  First, download the `OSGeo4W installer`_,\nand run it.  Select :menuselection:`Express Web-GIS Install` and click next.\nIn the 'Select Packages' list, ensure that GDAL is selected; MapServer and\nApache are also enabled by default, but are not required by GeoDjango and\nmay be unchecked safely.  After clicking next, the packages will be\nautomatically downloaded and installed, after which you may exit the\ninstaller.\n\n.. _OSGeo4W installer: http://trac.osgeo.org/osgeo4w/\n\nModify Windows environment\n^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nIn order to use GeoDjango, you will need to add your Python and OSGeo4W\ndirectories to your Windows system ``Path``, as well as create ``GDAL_DATA``\nand ``PROJ_LIB`` environment variables.  The following set of commands,\nexecutable with ``cmd.exe``, will set this up:\n\n.. code-block:: bat\n\n     set OSGEO4W_ROOT=C:\\OSGeo4W\n     set PYTHON_ROOT=C:\\Python27\n     set GDAL_DATA=%OSGEO4W_ROOT%\\share\\gdal\n     set PROJ_LIB=%OSGEO4W_ROOT%\\share\\proj\n     set PATH=%PATH%;%PYTHON_ROOT%;%OSGEO4W_ROOT%\\bin\n     reg ADD \"HKLM\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment\" /v Path /t REG_EXPAND_SZ /f /d \"%PATH%\"\n     reg ADD \"HKLM\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment\" /v GDAL_DATA /t REG_EXPAND_SZ /f /d \"%GDAL_DATA%\"\n     reg ADD \"HKLM\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment\" /v PROJ_LIB /t REG_EXPAND_SZ /f /d \"%PROJ_LIB%\"\n\nFor your convenience, these commands are available in the executable batch\nscript, :download:`geodjango_setup.bat`.\n\n.. note::\n\n    Administrator privileges are required to execute these commands.\n    To do this, right-click on :download:`geodjango_setup.bat` and select\n    :menuselection:`Run as administrator`. You need to log out and log back in again\n    for the settings to take effect.\n\n.. note::\n\n    If you customized the Python or OSGeo4W installation directories,\n    then you will need to modify the ``OSGEO4W_ROOT`` and/or ``PYTHON_ROOT``\n    variables accordingly.\n\nInstall Django and set up database\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nFinally, :ref:`install Django <installing-official-release>` on your system.\n\n.. rubric:: Footnotes\n.. [#] GeoDjango uses the :func:`~ctypes.util.find_library` routine from\n       ``ctypes.util`` to locate shared libraries.\n.. [#] The ``psycopg2`` Windows installers are packaged and maintained by\n       `Jason Erickson <http://www.stickpeople.com/projects/python/win-psycopg/>`_.\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/contrib/gis/install/postgis.txt",
    "content": ".. _postgis:\n\n==================\nInstalling PostGIS\n==================\n\n`PostGIS`__ adds geographic object support to PostgreSQL, turning it\ninto a spatial database. :ref:`geosbuild`, :ref:`proj4` and\n:ref:`gdalbuild` should be installed prior to building PostGIS. You\nmight also need additional libraries, see `PostGIS requirements`_.\n\n.. note::\n\n    The `psycopg2`_ module is required for use as the database adaptor\n    when using GeoDjango with PostGIS.\n\n.. _psycopg2: http://initd.org/psycopg/\n.. _PostGIS requirements: http://www.postgis.org/documentation/manual-2.0/postgis_installation.html#id2711662\n\nOn Debian/Ubuntu, you are advised to install the following packages:\npostgresql-x.x, postgresql-x.x-postgis, postgresql-server-dev-x.x,\npython-psycopg2 (x.x matching the PostgreSQL version you want to install).\nPlease also consult platform-specific instructions if you are on :ref:`macosx`\nor :ref:`windows`.\n\nBuilding from source\n====================\n\nFirst download the source archive, and extract::\n\n    $ wget http://postgis.refractions.net/download/postgis-2.0.1.tar.gz\n    $ tar xzf postgis-2.0.1.tar.gz\n    $ cd postgis-2.0.1\n\nNext, configure, make and install PostGIS::\n\n    $ ./configure\n\nFinally, make and install::\n\n    $ make\n    $ sudo make install\n    $ cd ..\n\n.. note::\n\n    GeoDjango does not automatically create a spatial database.  Please consult\n    the section on :ref:`spatialdb_template91` or\n    :ref:`spatialdb_template_earlier` for more information.\n\n__ http://postgis.refractions.net/\n\nPost-installation\n=================\n\n.. _spatialdb_template:\n.. _spatialdb_template91:\n\nCreating a spatial database with PostGIS 2.0 and PostgreSQL 9.1+\n----------------------------------------------------------------\n\nPostGIS 2 includes an extension for Postgres 9.1+ that can be used to enable\nspatial functionality::\n\n    $ createdb  <db name>\n    $ psql <db name>\n    > CREATE EXTENSION postgis;\n    > CREATE EXTENSION postgis_topology;\n\nNo PostGIS topology functionalities are yet available from GeoDjango, so the\ncreation of the ``postgis_topology`` extension is entirely optional.\n\n.. _spatialdb_template_earlier:\n\nCreating a spatial database template for earlier versions\n---------------------------------------------------------\n\nIf you have an earlier version of PostGIS or PostgreSQL, the CREATE\nEXTENSION isn't available and you need to create the spatial database\nusing the following instructions.\n\nCreating a spatial database with PostGIS is different than normal because\nadditional SQL must be loaded to enable spatial functionality.  Because of\nthe steps in this process, it's better to create a database template that\ncan be reused later.\n\nFirst, you need to be able to execute the commands as a privileged database\nuser.  For example, you can use the following to become the ``postgres`` user::\n\n    $ sudo su - postgres\n\n.. note::\n\n   The location *and* name of the PostGIS SQL files (e.g., from\n   ``POSTGIS_SQL_PATH`` below) depends on the version of PostGIS.\n   PostGIS versions 1.3 and below use ``<pg_sharedir>/contrib/lwpostgis.sql``;\n   whereas version 1.4 uses ``<sharedir>/contrib/postgis.sql`` and\n   version 1.5 uses ``<sharedir>/contrib/postgis-1.5/postgis.sql``.\n\n   To complicate matters, Debian/Ubuntu distributions have their own separate\n   directory naming system that might change with time. In this case, use the\n   :download:`create_template_postgis-debian.sh` script.\n\n   The example below assumes PostGIS 1.5, thus you may need to modify\n   ``POSTGIS_SQL_PATH`` and the name of the SQL file for the specific\n   version of PostGIS you are using.\n\nOnce you're a database super user, then you may execute the following commands\nto create a PostGIS spatial database template::\n\n    $ POSTGIS_SQL_PATH=`pg_config --sharedir`/contrib/postgis-2.0\n    # Creating the template spatial database.\n    $ createdb -E UTF8 template_postgis\n    $ createlang -d template_postgis plpgsql # Adding PLPGSQL language support.\n    # Allows non-superusers the ability to create from this template\n    $ psql -d postgres -c \"UPDATE pg_database SET datistemplate='true' WHERE datname='template_postgis';\"\n    # Loading the PostGIS SQL routines\n    $ psql -d template_postgis -f $POSTGIS_SQL_PATH/postgis.sql\n    $ psql -d template_postgis -f $POSTGIS_SQL_PATH/spatial_ref_sys.sql\n    # Enabling users to alter spatial tables.\n    $ psql -d template_postgis -c \"GRANT ALL ON geometry_columns TO PUBLIC;\"\n    $ psql -d template_postgis -c \"GRANT ALL ON geography_columns TO PUBLIC;\"\n    $ psql -d template_postgis -c \"GRANT ALL ON spatial_ref_sys TO PUBLIC;\"\n\nThese commands may be placed in a shell script for later use; for convenience\nthe following scripts are available:\n\n===============  =============================================\nPostGIS version  Bash shell script\n===============  =============================================\n1.3              :download:`create_template_postgis-1.3.sh`\n1.4              :download:`create_template_postgis-1.4.sh`\n1.5              :download:`create_template_postgis-1.5.sh`\nDebian/Ubuntu    :download:`create_template_postgis-debian.sh`\n===============  =============================================\n\nAfterwards, you may create a spatial database by simply specifying\n``template_postgis`` as the template to use (via the ``-T`` option)::\n\n    $ createdb -T template_postgis <db name>\n\n.. note::\n\n    While the ``createdb`` command does not require database super-user privileges,\n    it must be executed by a database user that has permissions to create databases.\n    You can create such a user with the following command::\n\n        $ createuser --createdb <user>\n\nPostgreSQL's createdb fails\n---------------------------\n\nWhen the PostgreSQL cluster uses a non-UTF8 encoding, the\n:file:`create_template_postgis-*.sh` script will fail when executing\n``createdb``::\n\n    createdb: database creation failed: ERROR:  new encoding (UTF8) is incompatible\n      with the encoding of the template database (SQL_ASCII)\n\nThe `current workaround`__ is to re-create the cluster using UTF8 (back up any\ndatabases before dropping the cluster).\n\n__ http://jacobian.org/writing/pg-encoding-ubuntu/\n\nManaging the database\n---------------------\n\nTo administer the database, you can either use the pgAdmin III program\n(:menuselection:`Start --> PostgreSQL 9.x --> pgAdmin III`) or the\nSQL Shell (:menuselection:`Start --> PostgreSQL 9.x --> SQL Shell`).\nFor example, to create a ``geodjango`` spatial database and user, the following\nmay be executed from the SQL Shell as the ``postgres`` user::\n\n    postgres# CREATE USER geodjango PASSWORD 'my_passwd';\n    postgres# CREATE DATABASE geodjango OWNER geodjango TEMPLATE template_postgis ENCODING 'utf8';\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/contrib/gis/install/spatialite.txt",
    "content": ".. _spatialite:\n\n=====================\nInstalling Spatialite\n=====================\n\n`SpatiaLite`__ adds spatial support to SQLite, turning it into a full-featured\nspatial database.\n\nCheck first if you can install Spatialite from system packages or binaries. For\nexample, on Debian-based distributions, try to install the ``spatialite-bin``\npackage. For Mac OS X, follow the\n:ref:`specific instructions below<spatialite_macosx>`. For Windows, you may\nfind binaries on `Gaia-SINS`__ home page. In any case, you should always\nbe able to :ref:`install from source<spatialite_source>`.\n\nWhen you are done with the installation process, skip to :ref:`create_spatialite_db`.\n\n__ https://www.gaia-gis.it/fossil/libspatialite\n__ http://www.gaia-gis.it/gaia-sins/\n\n.. _spatialite_source:\n\nInstalling from source\n~~~~~~~~~~~~~~~~~~~~~~\n\n:ref:`GEOS and PROJ.4<geospatial_libs>` should be installed prior to building\nSpatiaLite.\n\nSQLite\n^^^^^^\n\nCheck first if SQLite is compiled with the `R*Tree module`__. Run the sqlite3\ncommand line interface and enter the following query::\n\n    sqlite> CREATE VIRTUAL TABLE testrtree USING rtree(id,minX,maxX,minY,maxY);\n\nIf you obtain an error, you will have to recompile SQLite from source. Otherwise,\njust skip this section.\n\nTo install from sources, download the latest amalgamation source archive from\nthe `SQLite download page`__, and extract::\n\n    $ wget http://sqlite.org/sqlite-amalgamation-3.6.23.1.tar.gz\n    $ tar xzf sqlite-amalgamation-3.6.23.1.tar.gz\n    $ cd sqlite-3.6.23.1\n\nNext, run the ``configure`` script -- however the ``CFLAGS`` environment variable\nneeds to be customized so that SQLite knows to build the R*Tree module::\n\n    $ CFLAGS=\"-DSQLITE_ENABLE_RTREE=1\" ./configure\n    $ make\n    $ sudo make install\n    $ cd ..\n\n__ http://www.sqlite.org/rtree.html\n__ http://www.sqlite.org/download.html\n\n.. _spatialitebuild :\n\nSpatiaLite library (``libspatialite``) and tools (``spatialite``)\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nGet the latest SpatiaLite library source and tools bundle from the\n`download page`__::\n\n    $ wget http://www.gaia-gis.it/gaia-sins/libspatialite-sources/libspatialite-amalgamation-2.4.0-5.tar.gz\n    $ wget http://www.gaia-gis.it/gaia-sins/spatialite-tools-sources/spatialite-tools-2.4.0-5.tar.gz\n    $ tar xzf libspatialite-amalgamation-2.4.0-5.tar.gz\n    $ tar xzf spatialite-tools-2.4.0-5.tar.gz\n\nPrior to attempting to build, please read the important notes below to see if\ncustomization of the ``configure`` command is necessary.  If not, then run the\n``configure`` script, make, and install for the SpatiaLite library::\n\n    $ cd libspatialite-amalgamation-2.3.1\n    $ ./configure # May need to modified, see notes below.\n    $ make\n    $ sudo make install\n    $ cd .... _spatialite\n\nFinally, do the same for the SpatiaLite tools::\n\n    $ cd spatialite-tools-2.3.1\n    $ ./configure # May need to modified, see notes below.\n    $ make\n    $ sudo make install\n    $ cd ..\n\n.. note::\n\n    If you've installed GEOS and PROJ.4 from binary packages, you will have to specify\n    their paths when running the ``configure`` scripts for *both* the library and the\n    tools (the configure scripts look, by default, in ``/usr/local``).  For example,\n    on Debian/Ubuntu distributions that have GEOS and PROJ.4 packages, the command would be::\n\n       $ ./configure --with-proj-include=/usr/include --with-proj-lib=/usr/lib --with-geos-include=/usr/include --with-geos-lib=/usr/lib\n\n.. note::\n\n    For Mac OS X users building from source, the SpatiaLite library *and* tools\n    need to have their ``target`` configured::\n\n        $ ./configure --target=macosx\n\n__ http://www.gaia-gis.it/gaia-sins/libspatialite-sources/\n\n.. _pysqlite2:\n\npysqlite2\n^^^^^^^^^\n\nIf you are on Python 2.6, you will also have to compile pysqlite2, because\n``SpatiaLite`` must be loaded as an external extension, and the required\n``enable_load_extension`` method is only available in versions 2.5+ of\npysqlite2. Thus, download pysqlite2 2.6, and untar::\n\n    $ wget http://pysqlite.googlecode.com/files/pysqlite-2.6.3.tar.gz\n    $ tar xzf pysqlite-2.6.3.tar.gz\n    $ cd pysqlite-2.6.3\n\nNext, use a text editor (e.g., ``emacs`` or ``vi``) to edit the ``setup.cfg`` file\nto look like the following:\n\n.. code-block:: ini\n\n    [build_ext]\n    #define=\n    include_dirs=/usr/local/include\n    library_dirs=/usr/local/lib\n    libraries=sqlite3\n    #define=SQLITE_OMIT_LOAD_EXTENSION\n\nor if you are on Mac OS X:\n\n.. code-block:: ini\n\n    [build_ext]\n    #define=\n    include_dirs=/Library/Frameworks/SQLite3.framework/unix/include\n    library_dirs=/Library/Frameworks/SQLite3.framework/unix/lib\n    libraries=sqlite3\n    #define=SQLITE_OMIT_LOAD_EXTENSION\n\n.. note::\n\n    The important thing here is to make sure you comment out the\n    ``define=SQLITE_OMIT_LOAD_EXTENSION`` flag and that the ``include_dirs``\n    and ``library_dirs`` settings are uncommented and set to the appropriate\n    path if the SQLite header files and libraries are not in ``/usr/include``\n    and ``/usr/lib``, respectively.\n\nAfter modifying ``setup.cfg`` appropriately, then run the ``setup.py`` script\nto build and install::\n\n    $ sudo python setup.py install\n\n.. _spatialite_macosx:\n\nMac OS X-specific instructions\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nMac OS X users should follow the instructions in the :ref:`kyngchaos` section,\nas it is much easier than building from source.\n\nWhen :ref:`create_spatialite_db`, the ``spatialite`` program is required.\nHowever, instead of attempting to compile the SpatiaLite tools from source,\ndownload the `SpatiaLite Binaries`__ for OS X, and install ``spatialite`` in a\nlocation available in your ``PATH``.  For example::\n\n    $ curl -O http://www.gaia-gis.it/spatialite/spatialite-tools-osx-x86-2.3.1.tar.gz\n    $ tar xzf spatialite-tools-osx-x86-2.3.1.tar.gz\n    $ cd spatialite-tools-osx-x86-2.3.1/bin\n    $ sudo cp spatialite /Library/Frameworks/SQLite3.framework/Programs\n\nFinally, for GeoDjango to be able to find the KyngChaos SpatiaLite library,\nadd the following to your ``settings.py``:\n\n.. code-block:: python\n\n    SPATIALITE_LIBRARY_PATH='/Library/Frameworks/SQLite3.framework/SQLite3'\n\n__ http://www.gaia-gis.it/spatialite-2.3.1/binaries.html\n\n.. _create_spatialite_db:\n\nCreating a spatial database for SpatiaLite\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nAfter you've installed SpatiaLite, you'll need to create a number of spatial\nmetadata tables in your database in order to perform spatial queries.\n\nIf you're using SpatiaLite 2.4 or newer, use the ``spatialite`` utility to\ncall the ``InitSpatialMetaData()`` function, like this::\n\n   $ spatialite geodjango.db \"SELECT InitSpatialMetaData();\"\n   the SPATIAL_REF_SYS table already contains some row(s)\n    InitSpatiaMetaData ()error:\"table spatial_ref_sys already exists\"\n   0\n\nYou can safely ignore the error messages shown. When you've done this, you can\nskip the rest of this section.\n\nIf you're using SpatiaLite 2.3, you'll need to download a\ndatabase-initialization file and execute its SQL queries in your database.\n\nFirst, get it from the `SpatiaLite Resources`__ page::\n\n   $ wget http://www.gaia-gis.it/spatialite-2.3.1/init_spatialite-2.3.sql.gz\n   $ gunzip init_spatialite-2.3.sql.gz\n\nThen, use the ``spatialite`` command to initialize a spatial database::\n\n   $ spatialite geodjango.db < init_spatialite-2.3.sql\n\n.. note::\n\n    The parameter ``geodjango.db`` is the *filename* of the SQLite database\n    you want to use.  Use the same in the :setting:`DATABASES` ``\"name\"`` key\n    inside your ``settings.py``.\n\n__ http://www.gaia-gis.it/spatialite-2.3.1/resources.html\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/contrib/gis/layermapping.txt",
    "content": ".. _ref-layermapping:\n\n====================================\n``LayerMapping`` data import utility\n====================================\n\n.. module:: django.contrib.gis.utils.layermapping\n   :synopsis: Spatial data import utility for GeoDjango models.\n\n.. currentmodule:: django.contrib.gis.utils\n\nThe :class:`LayerMapping` class provides a way to map the contents of\nvector spatial data files (e.g. shapefiles) into GeoDjango models.\n\nThis utility grew out of the author's personal needs to eliminate\nthe code repetition that went into pulling geometries and fields out of\na vector layer, converting to another coordinate system (e.g. WGS84), and\nthen inserting into a GeoDjango model.\n\n.. note::\n\n    Use of :class:`LayerMapping` requires GDAL.\n\n.. warning ::\n\n    GIS data sources, like shapefiles, may be very large.  If you find\n    that :class:`LayerMapping` is using too much memory, set\n    :setting:`DEBUG` to ``False`` in your settings.  When :setting:`DEBUG`\n    is set to ``True``, Django :ref:`automatically logs <faq-see-raw-sql-queries>`\n    *every* SQL query -- thus, when SQL statements contain geometries, it is\n    easy to consume more memory than is typical.\n\nExample\n=======\n\n1. You need a GDAL-supported data source, like a shapefile (here we're using\n   a simple polygon shapefile, ``test_poly.shp``, with three features)::\n\n    >>> from django.contrib.gis.gdal import DataSource\n    >>> ds = DataSource('test_poly.shp')\n    >>> layer = ds[0]\n    >>> print(layer.fields) # Exploring the fields in the layer, we only want the 'str' field.\n    ['float', 'int', 'str']\n    >>> print(len(layer)) # getting the number of features in the layer (should be 3)\n    3\n    >>> print(layer.geom_type) # Should be 'Polygon'\n    Polygon\n    >>> print(layer.srs) # WGS84 in WKT\n    GEOGCS[\"GCS_WGS_1984\",\n        DATUM[\"WGS_1984\",\n            SPHEROID[\"WGS_1984\",6378137,298.257223563]],\n        PRIMEM[\"Greenwich\",0],\n        UNIT[\"Degree\",0.017453292519943295]]\n\n2. Now we define our corresponding Django model (make sure to use ``syncdb``)::\n\n    from django.contrib.gis.db import models\n\n    class TestGeo(models.Model):\n        name = models.CharField(max_length=25) # corresponds to the 'str' field\n        poly = models.PolygonField(srid=4269) # we want our model in a different SRID\n        objects = models.GeoManager()\n        def __unicode__(self):\n            return 'Name: %s' % self.name\n\n3. Use :class:`LayerMapping` to extract all the features and place them in the\n   database::\n\n    >>> from django.contrib.gis.utils import LayerMapping\n    >>> from geoapp.models import TestGeo\n    >>> mapping = {'name' : 'str', # The 'name' model field maps to the 'str' layer field.\n                   'poly' : 'POLYGON', # For geometry fields use OGC name.\n                   } # The mapping is a dictionary\n    >>> lm = LayerMapping(TestGeo, 'test_poly.shp', mapping)\n    >>> lm.save(verbose=True) # Save the layermap, imports the data.\n    Saved: Name: 1\n    Saved: Name: 2\n    Saved: Name: 3\n\nHere, :class:`LayerMapping` just transformed the three geometries from the\nshapefile in their original spatial reference system (WGS84) to the spatial\nreference system of the GeoDjango model (NAD83).  If no spatial reference\nsystem is defined for the layer, use the ``source_srs`` keyword with a\n:class:`~django.contrib.gis.gdal.SpatialReference` object to specify one.\n\n``LayerMapping`` API\n====================\n\n.. class:: LayerMapping(model, data_source, mapping[, layer=0, source_srs=None, encoding=None, transaction_mode='commit_on_success', transform=True, unique=True, using='default'])\n\nThe following are the arguments and keywords that may be used during\ninstantiation of ``LayerMapping`` objects.\n\n=================  =========================================================\nArgument           Description\n=================  =========================================================\n``model``          The geographic model, *not* an instance.\n\n``data_source``    The path to the OGR-supported data source file\n                   (e.g., a shapefile).  Also accepts\n                   :class:`django.contrib.gis.gdal.DataSource` instances.\n\n``mapping``        A dictionary: keys are strings corresponding to\n                   the model field, and values correspond to\n                   string field names for the OGR feature, or if the\n                   model field is a geographic then it should\n                   correspond to the OGR geometry type,\n                   e.g., ``'POINT'``, ``'LINESTRING'``, ``'POLYGON'``.\n=================  =========================================================\n\n=====================  =====================================================\nKeyword Arguments\n=====================  =====================================================\n``layer``              The index of the layer to use from the Data Source\n                       (defaults to 0)\n\n``source_srs``         Use this to specify the source SRS manually (for\n                       example, some shapefiles don't come with a '.prj'\n                       file).  An integer SRID, WKT or PROJ.4 strings, and\n                       :class:`django.contrib.gis.gdal.SpatialReference`\n                       objects are accepted.\n\n``encoding``           Specifies the character set encoding of the strings\n                       in the OGR data source.  For example, ``'latin-1'``,\n                       ``'utf-8'``, and ``'cp437'`` are all valid encoding\n                       parameters.\n\n``transaction_mode``   May be ``'commit_on_success'`` (default) or\n                       ``'autocommit'``.\n\n``transform``          Setting this to False will disable coordinate\n                       transformations.  In other words, geometries will\n                       be inserted into the database unmodified from their\n                       original state in the data source.\n\n``unique``             Setting this to the name, or a tuple of names,\n                       from the given  model will create models unique\n                       only to the given name(s). Geometries will from\n                       each feature will be added into the collection\n                       associated with the unique model.  Forces\n                       the transaction mode to be ``'autocommit'``.\n\n``using``              New in version 1.2.  Sets the database to use when\n                       importing spatial data.  Default is ``'default'``\n=====================  =====================================================\n\n``save()`` Keyword Arguments\n----------------------------\n\n.. method:: LayerMapping.save([verbose=False, fid_range=False, step=False, progress=False, silent=False, stream=sys.stdout, strict=False])\n\nThe ``save()`` method also accepts keywords.  These keywords are\nused for controlling output logging, error handling, and for importing\nspecific feature ranges.\n\n===========================  =================================================\nSave Keyword Arguments       Description\n===========================  =================================================\n``fid_range``                May be set with a slice or tuple of\n                             (begin, end) feature ID's to map from\n                             the data source.  In other words, this\n                             keyword enables the user to selectively\n                             import a subset range of features in the\n                             geographic data source.\n\n``progress``                 When this keyword is set, status information\n                             will be printed giving the number of features\n                             processed and successfully saved.  By default,\n                             progress information will be printed every 1000\n                             features processed, however, this default may\n                             be overridden by setting this keyword with an\n                             integer for the desired interval.\n\n``silent``                   By default, non-fatal error notifications are\n                             printed to ``sys.stdout``, but this keyword may\n                             be set to disable these notifications.\n\n``step``                     If set with an integer, transactions will\n                             occur at every step interval. For example, if\n                             ``step=1000``, a commit would occur after the\n                             1,000th feature, the 2,000th feature etc.\n\n\n``stream``                   Status information will be written to this file\n                             handle.  Defaults to using ``sys.stdout``, but\n                             any object with a ``write`` method is supported.\n\n``strict``                   Execution of the model mapping will cease upon\n                             the first error encountered.  The default value\n                             (``False``)\n                             behavior is to attempt to continue.\n\n``verbose``                  If set, information will be printed\n                             subsequent to each model save\n                             executed on the database.\n===========================  =================================================\n\nTroubleshooting\n===============\n\nRunning out of memory\n---------------------\n\nAs noted in the warning at the top of this section, Django stores all SQL\nqueries when ``DEBUG=True``.  Set ``DEBUG=False`` in your settings, and this\nshould stop excessive memory use when running ``LayerMapping`` scripts.\n\nMySQL: ``max_allowed_packet`` error\n-----------------------------------\n\nIf you encounter the following error when using ``LayerMapping`` and MySQL::\n\n    OperationalError: (1153, \"Got a packet bigger than 'max_allowed_packet' bytes\")\n\nThen the solution is to increase the value of the ``max_allowed_packet``\nsetting in your MySQL configuration.  For example, the default value may\nbe something low like one megabyte -- the setting may be modified in MySQL's\nconfiguration file (``my.cnf``) in the ``[mysqld]`` section::\n\n    max_allowed_packet = 10M\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/contrib/gis/measure.txt",
    "content": ".. _ref-measure:\n\n===================\nMeasurement Objects\n===================\n\n.. module:: django.contrib.gis.measure\n   :synopsis: GeoDjango's distance and area measurment objects.\n\nThe :mod:`django.contrib.gis.measure` module contains objects that allow\nfor convenient representation of distance and area units of measure. [#]_\nSpecifically, it implements two objects, :class:`Distance` and\n:class:`Area` -- both of which may be accessed via the\n:class:`D` and :class:`A` convenience aliases, respectively.\n\nExample\n=======\n\n:class:`Distance` objects may be instantiated using a keyword argument indicating the\ncontext of the units.  In the example below, two different distance objects are\ninstantiated in units of kilometers (``km``) and miles (``mi``)::\n\n    >>> from django.contrib.gis.measure import Distance, D\n    >>> d1 = Distance(km=5)\n    >>> print(d1)\n    5.0 km\n    >>> d2 = D(mi=5) # `D` is an alias for `Distance`\n    >>> print(d2)\n    5.0 mi\n\nConversions are easy, just access the preferred unit attribute to get a\nconverted distance quantity::\n\n    >>> print(d1.mi) # Converting 5 kilometers to miles\n    3.10685596119\n    >>> print(d2.km) # Converting 5 miles to kilometers\n    8.04672\n\nMoreover, arithmetic operations may be performed between the distance\nobjects::\n\n    >>> print(d1 + d2) # Adding 5 miles to 5 kilometers\n    13.04672 km\n    >>> print(d2 - d1) # Subtracting 5 kilometers from 5 miles\n    1.89314403881 mi\n\nTwo :class:`Distance` objects multiplied together will yield an :class:`Area`\nobject, which uses squared units of measure::\n\n    >>> a = d1 * d2 # Returns an Area object.\n    >>> print(a)\n    40.2336 sq_km\n\nTo determine what the attribute abbreviation of a unit is, the ``unit_attname``\nclass method may be used::\n\n    >>> print(Distance.unit_attname('US Survey Foot'))\n    survey_ft\n    >>> print(Distance.unit_attname('centimeter'))\n    cm\n\n.. _supported_units:\n\nSupported units\n===============\n\n=================================  ========================================\nUnit Attribute                     Full name or alias(es)\n=================================  ========================================\n``km``                             Kilometre, Kilometer\n``mi``                             Mile\n``m``                              Meter, Metre\n``yd``                             Yard\n``ft``                             Foot, Foot (International)\n``survey_ft``                      U.S. Foot, US survey foot\n``inch``                           Inches\n``cm``                             Centimeter\n``mm``                             Millimetre, Millimeter\n``um``                             Micrometer, Micrometre\n``british_ft``                     British foot (Sears 1922)\n``british_yd``                     British yard (Sears 1922)\n``british_chain_sears``            British chain (Sears 1922)\n``indian_yd``                      Indian yard, Yard (Indian)\n``sears_yd``                       Yard (Sears)\n``clarke_ft``                      Clarke's Foot\n``chain``                          Chain\n``chain_benoit``                   Chain (Benoit)\n``chain_sears``                    Chain (Sears)\n``british_chain_benoit``           British chain (Benoit 1895 B)\n``british_chain_sears_truncated``  British chain (Sears 1922 truncated)\n``gold_coast_ft``                  Gold Coast foot\n``link``                           Link\n``link_benoit``                    Link (Benoit)\n``link_sears``                     Link (Sears)\n``clarke_link``                    Clarke's link\n``fathom``                         Fathom\n``rod``                            Rod\n``nm``                             Nautical Mile\n``nm_uk``                          Nautical Mile (UK)\n``german_m``                       German legal metre\n=================================  ========================================\n\n.. note::\n\n    :class:`Area` attributes are the same as :class:`Distance` attributes,\n    except they are prefixed with ``sq_`` (area units are square in nature).\n    For example, ``Area(sq_m=2)`` creates an :class:`Area` object\n    representing two square meters.\n\nMeasurement API\n===============\n\n``Distance``\n------------\n\n.. class:: Distance(**kwargs)\n\n   To initialize a distance object, pass in a keyword corresponding to\n   the desired :ref:`unit attribute name <supported_units>` set with\n   desired value.  For example, the following creates a distance\n   object representing 5 miles::\n\n       >>> dist = Distance(mi=5)\n\n   .. method:: __getattr__(unit_att)\n\n   Returns the distance value in units corresponding to the given unit\n   attribute.  For example::\n\n       >>> print(dist.km)\n       8.04672\n\n   .. classmethod:: unit_attname(unit_name)\n\n   Returns the distance unit attribute name for the given full unit name.\n   For example::\n\n       >>> Distance.unit_attname('Mile')\n       'mi'\n\n.. class:: D\n\n   Alias for :class:`Distance` class.\n\n``Area``\n--------\n\n.. class:: Area(**kwargs)\n\n   To initialize a distance object, pass in a keyword corresponding to\n   the desired :ref:`unit attribute name <supported_units>` set with\n   desired value.  For example, the following creates a distance\n   object representing 5 square miles::\n\n       >>> a = Area(sq_mi=5)\n\n   .. method:: __getattr__(unit_att)\n\n   Returns the area value in units corresponding to the given unit\n   attribute.  For example::\n\n       >>> print(a.sq_km)\n       12.949940551680001\n\n   .. classmethod:: unit_attname(unit_name)\n\n   Returns the area unit attribute name for the given full unit name.\n   For example::\n\n        >>> Area.unit_attname('Kilometer')\n        'sq_km'\n\n.. class:: A\n\n   Alias for :class:`Area` class.\n\n.. rubric:: Footnotes\n.. [#] `Robert Coup <http://koordinates.com/>`_ is the initial author of the measure objects,\n       and was inspired by Brian Beck's work in `geopy <http://code.google.com/p/geopy/>`_\n       and Geoff Biggs' PhD work on dimensioned units for robotics.\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/contrib/gis/model-api.txt",
    "content": ".. _ref-gis-model-api:\n\n===================\nGeoDjango Model API\n===================\n\n.. module:: django.contrib.gis.db.models\n   :synopsis: GeoDjango model and field API.\n\nThis document explores the details of the GeoDjango Model API.  Throughout this\nsection, we'll be using the following geographic model of a `ZIP code`__ as our\nexample::\n\n    from django.contrib.gis.db import models\n\n    class Zipcode(models.Model):\n        code = models.CharField(max_length=5)\n        poly = models.PolygonField()\n        objects = models.GeoManager()\n\n__ http://en.wikipedia.org/wiki/ZIP_code\n\nGeometry Field Types\n====================\n\nEach of the following geometry field types correspond with the\nOpenGIS Simple Features specification [#fnogc]_.\n\n``GeometryField``\n-----------------\n\n.. class:: GeometryField\n\n``PointField``\n--------------\n\n.. class:: PointField\n\n``LineStringField``\n-------------------\n\n.. class:: LineStringField\n\n``PolygonField``\n----------------\n\n.. class:: PolygonField\n\n``MultiPointField``\n-------------------\n\n.. class:: MultiPointField\n\n``MultiLineStringField``\n------------------------\n\n.. class:: MultiLineStringField\n\n``MultiPolygonField``\n---------------------\n\n.. class:: MultiPolygonField\n\n``GeometryCollectionField``\n---------------------------\n\n.. class:: GeometryCollectionField\n\n.. _geometry-field-options:\n\nGeometry Field Options\n======================\n\nIn addition to the regular :ref:`common-model-field-options` available for\nDjango model fields, geometry fields have the following additional options.\nAll are optional.\n\n``srid``\n--------\n\n.. attribute:: GeometryField.srid\n\nSets the SRID [#fnogcsrid]_ (Spatial Reference System Identity) of the geometry field to\nthe given value. Defaults to 4326 (also known as `WGS84`__, units are in degrees\nof longitude and latitude).\n\n__ http://en.wikipedia.org/wiki/WGS84\n\n.. _selecting-an-srid:\n\nSelecting an SRID\n^^^^^^^^^^^^^^^^^\n\nChoosing an appropriate SRID for your model is an important decision that the\ndeveloper should consider carefully.  The SRID is an integer specifier that\ncorresponds to the projection system that will be used to interpret the data\nin the spatial database. [#fnsrid]_  Projection systems give the context to the\ncoordinates that specify a location.  Although the details of `geodesy`__ are\nbeyond the scope of this documentation, the general problem is that the earth\nis spherical and representations of the earth (e.g., paper maps, Web maps)\nare not.\n\nMost people are familiar with using latitude and longitude to reference a\nlocation on the earth's surface.  However, latitude and longitude are angles,\nnot distances. [#fnharvard]_  In other words, while the shortest path between two points on\na flat surface is a straight line, the shortest path between two points on a curved\nsurface (such as the earth) is an *arc* of a `great circle`__. [#fnthematic]_  Thus,\nadditional computation is required to obtain distances in planar units (e.g.,\nkilometers and miles).  Using a geographic coordinate system may introduce\ncomplications for the developer later on.  For example, PostGIS versions 1.4\nand below do not have the capability to perform distance calculations between\nnon-point geometries using geographic coordinate systems, e.g., constructing a\nquery to  find all points within 5 miles of a county boundary stored as WGS84.\n[#fndist]_\n\nPortions of the earth's surface may projected onto a two-dimensional, or\nCartesian, plane.  Projected coordinate systems are especially convenient\nfor region-specific applications, e.g., if you know that your database will\nonly cover geometries in `North Kansas`__, then you may consider using projection\nsystem specific to that region.  Moreover, projected coordinate systems are\ndefined in Cartesian units (such as meters or feet), easing distance\ncalculations.\n\n.. note::\n\n    If you wish to peform arbitrary distance queries using non-point\n    geometries in WGS84, consider upgrading to PostGIS 1.5. For\n    better performance, enable the :attr:`GeometryField.geography`\n    keyword so that :ref:`geography database type <geography-type>`\n    is used instead.\n\nAdditional Resources:\n\n* `spatialreference.org`__: A Django-powered database of spatial reference\n  systems.\n* `The State Plane Coordinate System`__: A Web site covering the various\n  projection systems used in the United States.  Much of the U.S. spatial\n  data encountered will be in one of these coordinate systems rather than\n  in a geographic coordinate system such as WGS84.\n\n__ http://en.wikipedia.org/wiki/Geodesy\n__ http://en.wikipedia.org/wiki/Great_circle\n__ http://www.spatialreference.org/ref/epsg/2796/\n__ http://spatialreference.org/\n__ http://web.archive.org/web/20080302095452/http://welcome.warnercnr.colostate.edu/class_info/nr502/lg3/datums_coordinates/spcs.html\n\n``spatial_index``\n-----------------\n\n.. attribute:: GeometryField.spatial_index\n\nDefaults to ``True``.  Creates a spatial index for the given geometry\nfield.\n\n.. note::\n\n    This is different from the ``db_index`` field option because spatial\n    indexes are created in a different manner than regular database\n    indexes.  Specifically, spatial indexes are typically created using\n    a variant of the R-Tree, while regular database indexes typically\n    use B-Trees.\n\n``dim``\n-------\n\n.. attribute:: GeometryField.dim\n\nThis option may be used for customizing the coordinate dimension of the\ngeometry field.  By default, it is set to 2, for representing two-dimensional\ngeometries.  For spatial backends that support it, it may be set to 3 for\nthree-dimensonal support.\n\n.. note::\n\n    At this time 3D support requires that GEOS 3.1 be installed, and is\n    limited only to the PostGIS spatial backend.\n\n``geography``\n-------------\n\n.. attribute:: GeometryField.geography\n\nIf set to ``True``, this option will create a database column of\ntype geography, rather than geometry.  Please refer to the\n:ref:`geography type <geography-type>` section below for more\ndetails.\n\n.. note::\n\n    Geography support is limited only to PostGIS 1.5+, and will\n    force the SRID to be 4326.\n\n.. _geography-type:\n\nGeography Type\n^^^^^^^^^^^^^^\n\nIn PostGIS 1.5, the geography type was introduced -- it provides \nnative support for spatial features represented with geographic\ncoordinates (e.g., WGS84 longitude/latitude). [#fngeography]_\nUnlike the plane used by a geometry type, the geography type uses a spherical\nrepresentation of its data.  Distance and measurement operations\nperformed on a geography column automatically employ great circle arc\ncalculations and return linear units.  In other words, when ``ST_Distance``\nis called on two geographies, a value in meters is returned (as opposed\nto degrees if called on a geometry column in WGS84).\n\nBecause geography calculations involve more mathematics, only a subset of the\nPostGIS spatial lookups are available for the geography type. Practically,\nthis means that in addition to the :ref:`distance lookups <distance-lookups>`\nonly the following additional :ref:`spatial lookups <spatial-lookups>` are\navailable for geography columns:\n\n* :lookup:`bboverlaps`\n* :lookup:`coveredby`\n* :lookup:`covers`\n* :lookup:`intersects`\n\nFor more information, the PostGIS documentation contains a helpful section on\ndetermining `when to use geography data type over geometry data type\n<http://postgis.refractions.net/documentation/manual-1.5/ch04.html#PostGIS_GeographyVSGeometry>`_.\n\n``GeoManager``\n==============\n\n.. currentmodule:: django.contrib.gis.db.models\n.. class:: GeoManager\n\nIn order to conduct geographic queries, each geographic model requires\na ``GeoManager`` model manager.  This manager allows for the proper SQL\nconstruction for geographic queries; thus, without it, all geographic filters\nwill fail.  It should also be noted that ``GeoManager`` is required even if the\nmodel does not have a geographic field itself, e.g., in the case of a\n``ForeignKey`` relation to a model with a geographic field.  For example,\nif we had an ``Address`` model with a ``ForeignKey`` to our ``Zipcode``\nmodel::\n\n    from django.contrib.gis.db import models\n    from django.contrib.localflavor.us.models import USStateField\n\n    class Address(models.Model):\n        num = models.IntegerField()\n        street = models.CharField(max_length=100)\n        city = models.CharField(max_length=100)\n        state = USStateField()\n        zipcode = models.ForeignKey(Zipcode)\n        objects = models.GeoManager()\n\nThe geographic manager is needed to do spatial queries on related ``Zipcode`` objects,\nfor example::\n\n    qs = Address.objects.filter(zipcode__poly__contains='POINT(-104.590948 38.319914)')\n\n.. rubric:: Footnotes\n.. [#fnogc] OpenGIS Consortium, Inc., `Simple Feature Specification For SQL <http://www.opengeospatial.org/standards/sfs>`_.\n.. [#fnogcsrid] *See id.* at Ch. 2.3.8, p. 39 (Geometry Values and Spatial Reference Systems).\n.. [#fnsrid] Typically, SRID integer corresponds to an EPSG (`European Petroleum Survey Group <http://www.epsg.org>`_) identifier.  However, it may also be associated with custom projections defined in spatial database's spatial reference systems table.\n.. [#fnharvard] Harvard Graduate School of Design, `An Overview of Geodesy and Geographic Referencing Systems <http://www.gsd.harvard.edu/gis/manual/projections/fundamentals/>`_.  This is an excellent resource for an overview of principles relating to geographic and Cartesian coordinate systems.\n.. [#fnthematic] Terry A. Slocum, Robert B. McMaster, Fritz C. Kessler, & Hugh H. Howard, *Thematic Cartography and Geographic Visualization* (Prentice Hall, 2nd edition), at Ch. 7.1.3.\n.. [#fndist] This limitation does not apply to PostGIS 1.5.  It should be noted that even in previous versions of PostGIS, this isn't impossible using GeoDjango; you could for example, take a known point in a projected coordinate system, buffer it to the appropriate radius, and then perform an intersection operation with the buffer transformed to the geographic coordinate system.\n.. [#fngeography] Please refer to the `PostGIS Geography Type <http://postgis.refractions.net/documentation/manual-1.5/ch04.html#PostGIS_Geography>`_ documentation for more details.\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/contrib/gis/ogrinspect.txt",
    "content": ".. _ref-ogrinspect:\n\n==============\nOGR Inspection\n==============\n\n.. module:: django.contrib.gis.utils.ogrinspect\n   :synopsis: Utilities for inspecting OGR data sources.\n\n.. currentmodule:: django.contrib.gis.utils\n\n``ogrinspect``\n==============\n\n.. function:: ogrinspect(data_source, model_name[, **kwargs])\n    :noindex:\n\n``mapping``\n===========\n\n.. function:: mapping(data_source, [geom_name='geom', layer_key=0, multi_geom=False])\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/contrib/gis/sitemaps.txt",
    "content": "===================\nGeographic Sitemaps\n===================\n\nGoogle's sitemap protocol used to include geospatial content support. [#]_\nThis included the addition of the ``<url>`` child element\n``<geo:geo>``, which tells Google that the content located at the URL is\ngeographic in nature. This is now obsolete.\n\nExample\n=======\n\nReference\n=========\n\n``KMLSitemap``\n--------------\n\n``KMZSitemap``\n--------------\n\n``GeoRSSSitemap``\n-----------------\n\n.. rubric:: Footnotes\n.. [#] Google, Inc., `What is a Geo Sitemap? <http://support.google.com/webmasters/bin/answer.py?answer=94555>`_.\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/contrib/gis/testing.txt",
    "content": "======================\nTesting GeoDjango apps\n======================\n\nIncluded in this documentation are some additional notes and settings\nfor :ref:`testing-postgis` and :ref:`testing-spatialite` users.\n\n.. _testing-postgis:\n\nPostGIS\n=======\n\nSettings\n--------\n\n.. note::\n\n    The settings below have sensible defaults, and shouldn't require manual setting.\n\n.. setting:: POSTGIS_TEMPLATE\n\n``POSTGIS_TEMPLATE``\n^^^^^^^^^^^^^^^^^^^^\n\nThis setting may be used to customize the name of the PostGIS template\ndatabase to use. It automatically defaults to ``'template_postgis'``\n(the same name used in the\n:ref:`installation documentation <spatialdb_template>`).\n\n.. setting:: POSTGIS_VERSION\n\n``POSTGIS_VERSION``\n^^^^^^^^^^^^^^^^^^^\n\nWhen GeoDjango's spatial backend initializes on PostGIS, it has to perform\na SQL query to determine the version in order to figure out what\nfeatures are available. Advanced users wishing to prevent this additional\nquery may set the version manually using a 3-tuple of integers specifying\nthe major, minor, and subminor version numbers for PostGIS. For example,\nto configure for PostGIS 1.5.2 you would use::\n\n    POSTGIS_VERSION = (1, 5, 2)\n\nObtaining sufficient privileges\n-------------------------------\n\nDepending on your configuration, this section describes several methods to\nconfigure a database user with sufficient privileges to run tests for\nGeoDjango applications on PostgreSQL. If your\n:ref:`spatial database template <spatialdb_template>`\nwas created like in the instructions, then your testing database user\nonly needs to have the ability to create databases. In other configurations,\nyou may be required to use a database superuser.\n\nCreate database user\n^^^^^^^^^^^^^^^^^^^^\n\nTo make a database user with the ability to create databases, use the\nfollowing command::\n\n    $ createuser --createdb -R -S <user_name>\n\nThe ``-R -S`` flags indicate that we do not want the user to have the ability\nto create additional users (roles) or to be a superuser, respectively.\n\nAlternatively, you may alter an existing user's role from the SQL shell\n(assuming this is done from an existing superuser account)::\n\n    postgres# ALTER ROLE <user_name> CREATEDB NOSUPERUSER NOCREATEROLE;\n\nCreate database superuser\n^^^^^^^^^^^^^^^^^^^^^^^^^\n\nThis may be done at the time the user is created, for example::\n\n    $ createuser --superuser <user_name>\n\nOr you may alter the user's role from the SQL shell (assuming this\nis done from an existing superuser account)::\n\n    postgres# ALTER ROLE <user_name> SUPERUSER;\n\n\nCreate local PostgreSQL database\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n1. Initialize database: ``initdb -D /path/to/user/db``\n\n2. If there's already a Postgres instance on the machine, it will need\n   to use a different TCP port than 5432. Edit ``postgresql.conf`` (in\n   ``/path/to/user/db``) to change the database port (e.g. ``port = 5433``).\n\n3. Start this database ``pg_ctl -D /path/to/user/db start``\n\nWindows\n-------\n\nOn Windows platforms the pgAdmin III utility may also be used as\na simple way to add superuser privileges to your database user.\n\nBy default, the PostGIS installer on Windows includes a template\nspatial database entitled ``template_postgis``.\n\n.. _testing-spatialite:\n\nSpatiaLite\n==========\n\nMake sure the necessary spatial tables are created in your test spatial\ndatabase, as described in :ref:`create_spatialite_db`. Then just do this::\n\n    $ python manage.py test\n\nSettings\n--------\n\n.. setting:: SPATIALITE_SQL\n\n``SPATIALITE_SQL``\n^^^^^^^^^^^^^^^^^^\n\nOnly relevant when using a SpatiaLite version 2.3.\n\nBy default, the GeoDjango test runner looks for the :ref:`file containing the\nSpatiaLite dababase-initialization SQL code <create_spatialite_db>` in the\nsame directory where it was invoked (by default the same directory where\n``manage.py`` is located). To use a different location, add the following to\nyour settings::\n\n    SPATIALITE_SQL='/path/to/init_spatialite-2.3.sql'\n\n.. _geodjango-tests:\n\nGeoDjango tests\n===============\n\nGeoDjango's test suite may be run in one of two ways, either by itself or\nwith the rest of :ref:`Django's unit tests <running-unit-tests>`.\n\nRun only GeoDjango tests\n------------------------\n\n.. class:: django.contrib.gis.tests.GeoDjangoTestSuiteRunner\n\nTo run *only* the tests for GeoDjango, the :setting:`TEST_RUNNER`\nsetting must be changed to use the\n:class:`~django.contrib.gis.tests.GeoDjangoTestSuiteRunner`::\n\n    TEST_RUNNER = 'django.contrib.gis.tests.GeoDjangoTestSuiteRunner'\n\nExample\n^^^^^^^\n\nFirst, you'll need a bare-bones settings file, like below, that is\ncustomized with your spatial database name and user::\n\n    TEST_RUNNER = 'django.contrib.gis.tests.GeoDjangoTestSuiteRunner'\n\n    DATABASES = {\n        'default': {\n            'ENGINE': 'django.contrib.gis.db.backends.postgis',\n            'NAME': 'a_spatial_database',\n            'USER': 'db_user'\n        }\n    }\n\nAssuming the above is in a file called ``postgis.py`` that is in the\nthe same directory as ``manage.py`` of your Django project, then\nyou may run the tests with the following command::\n\n    $ python manage.py test --settings=postgis\n\nRun with ``runtests.py``\n------------------------\n\nTo have the GeoDjango tests executed when\n:ref:`running the Django test suite <running-unit-tests>` with ``runtests.py``\nall of the databases in the settings file must be using one of the\n:ref:`spatial database backends <spatial-backends>`.\n\n.. warning::\n\n    Do not change the :setting:`TEST_RUNNER` setting\n    when running the GeoDjango tests with ``runtests.py``.\n\nExample\n^^^^^^^\n\nThe following is an example bare-bones settings file with spatial backends\nthat can be used to run the entire Django test suite, including those\nin :mod:`django.contrib.gis`::\n\n    DATABASES = {\n        'default': {\n            'ENGINE': 'django.contrib.gis.db.backends.postgis',\n            'NAME': 'geodjango',\n            'USER': 'geodjango',\n        },\n       'other': {\n            'ENGINE': 'django.contrib.gis.db.backends.postgis',\n            'NAME': 'other',\n            'USER': 'geodjango',\n       }\n    }\n\nAssuming the settings above were in a ``postgis.py`` file in the same\ndirectory as ``runtests.py``, then all Django and GeoDjango tests would\nbe performed when executing the command::\n\n    $ ./runtests.py --settings=postgis\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/contrib/gis/tutorial.txt",
    "content": "==================\nGeoDjango Tutorial\n==================\n\nIntroduction\n============\n\nGeoDjango is an included contrib module for Django that turns it into a\nworld-class geographic Web framework.  GeoDjango strives to make it as simple\nas possible to create geographic Web applications, like location-based services.\nIts features include:\n\n* Django model fields for `OGC`_ geometries.\n* Extensions to Django's ORM for querying and manipulating spatial data.\n* Loosely-coupled, high-level Python interfaces for GIS geometry operations and\n  data formats.\n* Editing geometry fields from the admin.\n\nThis tutorial assumes familiarity with Django; thus, if you're brand new to\nDjango, please read through the :doc:`regular tutorial </intro/tutorial01>` to\nfamiliarize yourself with Django first.\n\n.. note::\n\n    GeoDjango has additional requirements beyond what Django requires --\n    please consult the :ref:`installation documentation <ref-gis-install>`\n    for more details.\n\nThis tutorial will guide you through the creation of a geographic web\napplication for viewing the `world borders`_. [#]_ Some of the code\nused in this tutorial is taken from and/or inspired by the `GeoDjango\nbasic apps`_ project. [#]_\n\n.. note::\n\n    Proceed through the tutorial sections sequentially for step-by-step\n    instructions.\n\n.. _OGC: http://www.opengeospatial.org/\n.. _world borders: http://thematicmapping.org/downloads/world_borders.php\n.. _GeoDjango basic apps: http://code.google.com/p/geodjango-basic-apps/\n\nSetting Up\n==========\n\nCreate a Spatial Database\n-------------------------\n\n.. note::\n\n    MySQL and Oracle users can skip this section because spatial types\n    are already built into the database.\n\nFirst, create a spatial database for your project.\n\nIf you are using PostGIS, create the database from the :ref:`spatial database\ntemplate <spatialdb_template>`:\n\n.. code-block:: bash\n\n    $ createdb -T template_postgis geodjango\n\n.. note::\n\n    This command must be issued by a database user with enough privileges to\n    create a database.  To create a user with ``CREATE DATABASE`` privileges in\n    PostgreSQL, use the following commands:\n\n    .. code-block:: bash\n\n        $ sudo su - postgres\n        $ createuser --createdb geo\n        $ exit\n\n    Replace ``geo`` with your Postgres database user's username.\n    (In PostgreSQL, this user will also be an OS-level user.)\n\nIf you are using SQLite and SpatiaLite, consult the instructions on how\nto create a :ref:`SpatiaLite database <create_spatialite_db>`.\n\nCreate a New Project\n------------------------\n\nUse the standard ``django-admin.py`` script to create a project called\n``geodjango``:\n\n.. code-block:: bash\n\n    $ django-admin.py startproject geodjango\n\nThis will initialize a new project. Now, create a ``world`` Django application\nwithin the ``geodjango`` project:\n\n.. code-block:: bash\n\n    $ cd geodjango\n    $ python manage.py startapp world\n\nConfigure ``settings.py``\n-------------------------\n\nThe ``geodjango`` project settings are stored in the ``geodjango/settings.py``\nfile. Edit the database connection settings to match your setup::\n\n    DATABASES = {\n        'default': {\n             'ENGINE': 'django.contrib.gis.db.backends.postgis',\n             'NAME': 'geodjango',\n             'USER': 'geo',\n         }\n    }\n\nIn addition, modify the :setting:`INSTALLED_APPS` setting to include\n:mod:`django.contrib.admin`, :mod:`django.contrib.gis`,\nand ``world`` (your newly created application)::\n\n    INSTALLED_APPS = (\n        'django.contrib.auth',\n        'django.contrib.contenttypes',\n        'django.contrib.sessions',\n        'django.contrib.sites',\n        'django.contrib.messages',\n        'django.contrib.staticfiles',\n        'django.contrib.admin',\n        'django.contrib.gis',\n        'world'\n    )\n\nGeographic Data\n===============\n\n.. _worldborders:\n\nWorld Borders\n-------------\n\nThe world borders data is available in this `zip file`__.  Create a ``data``\ndirectory in the ``world`` application, download the world borders data, and\nunzip. On GNU/Linux platforms, use the following commands:\n\n.. code-block:: bash\n\n    $ mkdir world/data\n    $ cd world/data\n    $ wget http://thematicmapping.org/downloads/TM_WORLD_BORDERS-0.3.zip\n    $ unzip TM_WORLD_BORDERS-0.3.zip\n    $ cd ../..\n\nThe world borders ZIP file contains a set of data files collectively known as\nan `ESRI Shapefile`__, one of the most popular geospatial data formats.  When\nunzipped, the world borders dataset includes files with the following\nextensions:\n\n* ``.shp``: Holds the vector data for the world borders geometries.\n* ``.shx``: Spatial index file for geometries stored in the ``.shp``.\n* ``.dbf``: Database file for holding non-geometric attribute data\n  (e.g., integer and character fields).\n* ``.prj``: Contains the spatial reference information for the geographic\n  data stored in the shapefile.\n\n__ http://thematicmapping.org/downloads/TM_WORLD_BORDERS-0.3.zip\n__ http://en.wikipedia.org/wiki/Shapefile\n\nUse ``ogrinfo`` to examine spatial data\n---------------------------------------\n\nThe GDAL ``ogrinfo`` utility allows examining the metadata of shapefiles or\nother vector data sources:\n\n.. code-block:: bash\n\n    $ ogrinfo world/data/TM_WORLD_BORDERS-0.3.shp\n    INFO: Open of `world/data/TM_WORLD_BORDERS-0.3.shp'\n          using driver `ESRI Shapefile' successful.\n    1: TM_WORLD_BORDERS-0.3 (Polygon)\n\n``ogrinfo`` tells us that the shapefile has one layer, and that this\nlayer contains polygon data.  To find out more, we'll specify the layer name\nand use the ``-so`` option to get only the important summary information:\n\n.. code-block:: bash\n\n    $ ogrinfo -so world/data/TM_WORLD_BORDERS-0.3.shp TM_WORLD_BORDERS-0.3\n    INFO: Open of `world/data/TM_WORLD_BORDERS-0.3.shp'\n          using driver `ESRI Shapefile' successful.\n\n    Layer name: TM_WORLD_BORDERS-0.3\n    Geometry: Polygon\n    Feature Count: 246\n    Extent: (-180.000000, -90.000000) - (180.000000, 83.623596)\n    Layer SRS WKT:\n    GEOGCS[\"GCS_WGS_1984\",\n        DATUM[\"WGS_1984\",\n            SPHEROID[\"WGS_1984\",6378137.0,298.257223563]],\n        PRIMEM[\"Greenwich\",0.0],\n        UNIT[\"Degree\",0.0174532925199433]]\n    FIPS: String (2.0)\n    ISO2: String (2.0)\n    ISO3: String (3.0)\n    UN: Integer (3.0)\n    NAME: String (50.0)\n    AREA: Integer (7.0)\n    POP2005: Integer (10.0)\n    REGION: Integer (3.0)\n    SUBREGION: Integer (3.0)\n    LON: Real (8.3)\n    LAT: Real (7.3)\n\nThis detailed summary information tells us the number of features in the layer\n(246), the geographic bounds of the data, the spatial reference system\n(\"SRS WKT\"), as well as type information for each attribute field. For example,\n``FIPS: String (2.0)`` indicates that the ``FIPS`` character field has\na maximum length of 2.  Similarly, ``LON: Real (8.3)`` is a floating-point\nfield that holds a maximum of 8 digits up to three decimal places.\n\nGeographic Models\n=================\n\nDefining a Geographic Model\n---------------------------\n\nNow that you've examined your dataset using ``ogrinfo``, create a GeoDjango\nmodel to represent this data::\n\n    from django.contrib.gis.db import models\n\n    class WorldBorder(models.Model):\n        # Regular Django fields corresponding to the attributes in the\n        # world borders shapefile.\n        name = models.CharField(max_length=50)\n        area = models.IntegerField()\n        pop2005 = models.IntegerField('Population 2005')\n        fips = models.CharField('FIPS Code', max_length=2)\n        iso2 = models.CharField('2 Digit ISO', max_length=2)\n        iso3 = models.CharField('3 Digit ISO', max_length=3)\n        un = models.IntegerField('United Nations Code')\n        region = models.IntegerField('Region Code')\n        subregion = models.IntegerField('Sub-Region Code')\n        lon = models.FloatField()\n        lat = models.FloatField()\n\n        # GeoDjango-specific: a geometry field (MultiPolygonField), and\n        # overriding the default manager with a GeoManager instance.\n        mpoly = models.MultiPolygonField()\n        objects = models.GeoManager()\n\n        # Returns the string representation of the model.\n        def __unicode__(self):\n            return self.name\n\nPlease note two important things:\n\n1. The ``models`` module is imported from ``django.contrib.gis.db``.\n2. You must override the model's default manager with\n   :class:`~django.contrib.gis.db.models.GeoManager` to perform spatial queries.\n\nThe default spatial reference system for geometry fields is WGS84 (meaning\nthe `SRID`__ is 4326) -- in other words, the field coordinates are in\nlongitude, latitude pairs in units of degrees.  To use a different\ncoordinate system, set the SRID of the geometry field with the ``srid``\nargument. Use an integer representing the coordinate system's EPSG code.\n\n__ http://en.wikipedia.org/wiki/SRID\n\nRun ``syncdb``\n--------------\n\nAfter defining your model, you need to sync it with the database. First,\nlet's look at the SQL that will generate the table for the\n``WorldBorder`` model::\n\n    $ python manage.py sqlall world\n\nThis command should produce the following output:\n\n.. code-block:: sql\n\n    BEGIN;\n    CREATE TABLE \"world_worldborder\" (\n        \"id\" serial NOT NULL PRIMARY KEY,\n        \"name\" varchar(50) NOT NULL,\n        \"area\" integer NOT NULL,\n        \"pop2005\" integer NOT NULL,\n        \"fips\" varchar(2) NOT NULL,\n        \"iso2\" varchar(2) NOT NULL,\n        \"iso3\" varchar(3) NOT NULL,\n        \"un\" integer NOT NULL,\n        \"region\" integer NOT NULL,\n        \"subregion\" integer NOT NULL,\n        \"lon\" double precision NOT NULL,\n        \"lat\" double precision NOT NULL\n    )\n    ;\n    SELECT AddGeometryColumn('world_worldborder', 'mpoly', 4326, 'MULTIPOLYGON', 2);\n    ALTER TABLE \"world_worldborder\" ALTER \"mpoly\" SET NOT NULL;\n    CREATE INDEX \"world_worldborder_mpoly_id\" ON \"world_worldborder\" USING GIST ( \"mpoly\" GIST_GEOMETRY_OPS );\n    COMMIT;\n\nIf this looks correct, run ``syncdb`` to create this table in the database::\n\n    $ python manage.py syncdb\n    Creating table world_worldborder\n    Installing custom SQL for world.WorldBorder model\n\nThe ``syncdb`` command may also prompt you to create an admin user. Either\ndo so now, or later by running ``django-admin.py createsuperuser``.\n\nImporting Spatial Data\n======================\n\nThis section will show you how to import the world borders\nshapefile into the database via GeoDjango models using the\n:ref:`ref-layermapping`.\nThere are many different ways to import data into a spatial database --\nbesides the tools included within GeoDjango, you may also use the following:\n\n* `ogr2ogr`_: A command-line utility included with GDAL that\n  can import many vector data formats into PostGIS, MySQL, and Oracle databases.\n* `shp2pgsql`_: This utility included with PostGIS imports ESRI shapefiles into\n  PostGIS.\n\n.. _ogr2ogr: http://www.gdal.org/ogr2ogr.html\n.. _shp2pgsql: http://postgis.refractions.net/documentation/manual-1.5/ch04.html#shp2pgsql_usage\n\n.. _gdalinterface:\n\nGDAL Interface\n--------------\n\nEarlier, you used ``ogrinfo`` to examine the contents of the world borders\nshapefile.  GeoDjango also includes a Pythonic interface to GDAL's powerful OGR\nlibrary that can work with all the vector data sources that OGR supports.\n\nFirst, invoke the Django shell:\n\n.. code-block:: bash\n\n    $ python manage.py shell\n\nIf you downloaded the :ref:`worldborders` data earlier in the\ntutorial, then you can determine its path using Python's built-in\n``os`` module::\n\n    >>> import os\n    >>> import world\n    >>> world_shp = os.path.abspath(os.path.join(os.path.dirname(world.__file__),\n    ...                             'data/TM_WORLD_BORDERS-0.3.shp'))\n\nNow, open the world borders shapefile using GeoDjango's\n:class:`~django.contrib.gis.gdal.DataSource` interface::\n\n    >>> from django.contrib.gis.gdal import DataSource\n    >>> ds = DataSource(world_shp)\n    >>> print(ds)\n    / ... /geodjango/world/data/TM_WORLD_BORDERS-0.3.shp (ESRI Shapefile)\n\nData source objects can have different layers of geospatial features; however,\nshapefiles are only allowed to have one layer::\n\n    >>> print(len(ds))\n    1\n    >>> lyr = ds[0]\n    >>> print(lyr)\n    TM_WORLD_BORDERS-0.3\n\nYou can see the layer's geometry type and how many features it contains::\n\n    >>> print(lyr.geom_type)\n    Polygon\n    >>> print(len(lyr))\n    246\n\n.. note::\n\n    Unfortunately, the shapefile data format does not allow for greater\n    specificity with regards to geometry types.  This shapefile, like\n    many others, actually includes ``MultiPolygon`` geometries, not Polygons.\n    It's important to use a more general field type in models: a\n    GeoDjango ``MultiPolygonField`` will accept a ``Polygon`` geometry, but a\n    ``PolygonField`` will not accept a ``MultiPolygon`` type geometry.  This\n    is why the ``WorldBorder`` model defined above uses a ``MultiPolygonField``.\n\nThe :class:`~django.contrib.gis.gdal.Layer` may also have a spatial reference\nsystem associated with it.  If it does, the ``srs`` attribute will return a\n:class:`~django.contrib.gis.gdal.SpatialReference` object::\n\n    >>> srs = lyr.srs\n    >>> print(srs)\n    GEOGCS[\"GCS_WGS_1984\",\n        DATUM[\"WGS_1984\",\n            SPHEROID[\"WGS_1984\",6378137.0,298.257223563]],\n        PRIMEM[\"Greenwich\",0.0],\n        UNIT[\"Degree\",0.0174532925199433]]\n    >>> srs.proj4 # PROJ.4 representation\n    '+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs '\n\nThis shapefile is in the popular WGS84 spatial reference\nsystem -- in other words, the data uses longitude, latitude pairs in\nunits of degrees.\n\nIn addition, shapefiles also support attribute fields that may contain\nadditional data.  Here are the fields on the World Borders layer:\n\n    >>> print(lyr.fields)\n    ['FIPS', 'ISO2', 'ISO3', 'UN', 'NAME', 'AREA', 'POP2005', 'REGION', 'SUBREGION', 'LON', 'LAT']\n\nThe following code will let you examine the OGR types (e.g. integer or\nstring) associated with each of the fields:\n\n    >>> [fld.__name__ for fld in lyr.field_types]\n    ['OFTString', 'OFTString', 'OFTString', 'OFTInteger', 'OFTString', 'OFTInteger', 'OFTInteger', 'OFTInteger', 'OFTInteger', 'OFTReal', 'OFTReal']\n\nYou can iterate over each feature in the layer and extract information from both\nthe feature's geometry (accessed via the ``geom`` attribute) as well as the\nfeature's attribute fields (whose **values** are accessed via ``get()``\nmethod)::\n\n    >>> for feat in lyr:\n    ...    print(feat.get('NAME'), feat.geom.num_points)\n    ...\n    Guernsey 18\n    Jersey 26\n    South Georgia South Sandwich Islands 338\n    Taiwan 363\n\n:class:`~django.contrib.gis.gdal.Layer` objects may be sliced::\n\n    >>> lyr[0:2]\n    [<django.contrib.gis.gdal.feature.Feature object at 0x2f47690>, <django.contrib.gis.gdal.feature.Feature object at 0x2f47650>]\n\nAnd individual features may be retrieved by their feature ID::\n\n    >>> feat = lyr[234]\n    >>> print(feat.get('NAME'))\n    San Marino\n\nBoundary geometries may be exported as WKT and GeoJSON::\n\n    >>> geom = feat.geom\n    >>> print(geom.wkt)\n    POLYGON ((12.415798 43.957954,12.450554 ...\n    >>> print(geom.json)\n    { \"type\": \"Polygon\", \"coordinates\": [ [ [ 12.415798, 43.957954 ], [ 12.450554, 43.979721 ], ...\n\n\n``LayerMapping``\n----------------\n\nTo import the data, use a LayerMapping in a Python script.\nCreate a file called ``load.py`` inside the ``world`` application,\nwith the following code::\n\n    import os\n    from django.contrib.gis.utils import LayerMapping\n    from models import WorldBorder\n\n    world_mapping = {\n        'fips' : 'FIPS',\n        'iso2' : 'ISO2',\n        'iso3' : 'ISO3',\n        'un' : 'UN',\n        'name' : 'NAME',\n        'area' : 'AREA',\n        'pop2005' : 'POP2005',\n        'region' : 'REGION',\n        'subregion' : 'SUBREGION',\n        'lon' : 'LON',\n        'lat' : 'LAT',\n        'mpoly' : 'MULTIPOLYGON',\n    }\n\n    world_shp = os.path.abspath(os.path.join(os.path.dirname(__file__), 'data/TM_WORLD_BORDERS-0.3.shp'))\n\n    def run(verbose=True):\n        lm = LayerMapping(WorldBorder, world_shp, world_mapping,\n                          transform=False, encoding='iso-8859-1')\n\n        lm.save(strict=True, verbose=verbose)\n\nA few notes about what's going on:\n\n* Each key in the ``world_mapping`` dictionary corresponds to a field in the\n  ``WorldBorder`` model.  The value is the name of the shapefile field\n  that data will be loaded from.\n* The key ``mpoly`` for the geometry field is ``MULTIPOLYGON``, the\n  geometry type GeoDjango will import the field as.  Even simple polygons in\n  the shapefile will automatically be converted into collections prior to\n  insertion into the database.\n* The path to the shapefile is not absolute -- in other words, if you move the\n  ``world`` application (with ``data`` subdirectory) to a different location,\n  the script will still work.\n* The ``transform`` keyword is set to ``False`` because the data in the\n  shapefile does not need to be converted -- it's already in WGS84 (SRID=4326).\n* The ``encoding`` keyword is set to the character encoding of the string\n  values in the shapefile. This ensures that string values are read and saved\n  correctly from their original encoding system.\n\nAfterwards, invoke the Django shell from the ``geodjango`` project directory:\n\n.. code-block:: bash\n\n   $ python manage.py shell\n\nNext, import the ``load`` module, call the ``run`` routine, and watch\n``LayerMapping`` do the work::\n\n   >>> from world import load\n   >>> load.run()\n\n\n.. _ogrinspect-intro:\n\nTry ``ogrinspect``\n------------------\nNow that you've seen how to define geographic models and import data with the\n:ref:`ref-layermapping`, it's possible to further automate this process with\nuse of the :djadmin:`ogrinspect` management command.  The :djadmin:`ogrinspect`\ncommand  introspects a GDAL-supported vector data source (e.g., a shapefile)\nand generates a model definition and ``LayerMapping`` dictionary automatically.\n\nThe general usage of the command goes as follows:\n\n.. code-block:: bash\n\n    $ python manage.py ogrinspect [options] <data_source> <model_name> [options]\n\n``data_source`` is the path to the GDAL-supported data source and\n``model_name`` is the name to use for the model.  Command-line options may\nbe used to further define how the model is generated.\n\nFor example, the following command nearly reproduces the ``WorldBorder`` model\nand mapping dictionary created above, automatically:\n\n.. code-block:: bash\n\n    $ python manage.py ogrinspect world/data/TM_WORLD_BORDERS-0.3.shp WorldBorder \\\n        --srid=4326 --mapping --multi\n\nA few notes about the command-line options given above:\n\n* The ``--srid=4326`` option sets the SRID for the geographic field.\n* The ``--mapping`` option tells ``ogrinspect`` to also generate a\n  mapping dictionary for use with\n  :class:`~django.contrib.gis.utils.LayerMapping`.\n* The ``--multi`` option is specified so that the geographic field is a\n  :class:`~django.contrib.gis.db.models.MultiPolygonField` instead of just a\n  :class:`~django.contrib.gis.db.models.PolygonField`.\n\nThe command produces the following output, which may be copied\ndirectly into the ``models.py`` of a GeoDjango application::\n\n    # This is an auto-generated Django model module created by ogrinspect.\n    from django.contrib.gis.db import models\n\n    class WorldBorder(models.Model):\n        fips = models.CharField(max_length=2)\n        iso2 = models.CharField(max_length=2)\n        iso3 = models.CharField(max_length=3)\n        un = models.IntegerField()\n        name = models.CharField(max_length=50)\n        area = models.IntegerField()\n        pop2005 = models.IntegerField()\n        region = models.IntegerField()\n        subregion = models.IntegerField()\n        lon = models.FloatField()\n        lat = models.FloatField()\n        geom = models.MultiPolygonField(srid=4326)\n        objects = models.GeoManager()\n\n    # Auto-generated `LayerMapping` dictionary for WorldBorder model\n    worldborders_mapping = {\n        'fips' : 'FIPS',\n        'iso2' : 'ISO2',\n        'iso3' : 'ISO3',\n        'un' : 'UN',\n        'name' : 'NAME',\n        'area' : 'AREA',\n        'pop2005' : 'POP2005',\n        'region' : 'REGION',\n        'subregion' : 'SUBREGION',\n        'lon' : 'LON',\n        'lat' : 'LAT',\n        'geom' : 'MULTIPOLYGON',\n    }\n\nSpatial Queries\n===============\n\nSpatial Lookups\n---------------\nGeoDjango adds spatial lookups to the Django ORM.  For example, you\ncan find the country in the ``WorldBorder`` table that contains\na particular point.  First, fire up the management shell:\n\n.. code-block:: bash\n\n    $ python manage.py shell\n\nNow, define a point of interest [#]_::\n\n    >>> pnt_wkt = 'POINT(-95.3385 29.7245)'\n\nThe ``pnt_wkt`` string represents the point at -95.3385 degrees longitude,\n29.7245 degrees latitude.  The geometry is in a format known as\nWell Known Text (WKT), a standard issued by the Open Geospatial\nConsortium (OGC). [#]_  Import the ``WorldBorder`` model, and perform\na ``contains`` lookup using the ``pnt_wkt`` as the parameter::\n\n    >>> from world.models import WorldBorder\n    >>> qs = WorldBorder.objects.filter(mpoly__contains=pnt_wkt)\n    >>> qs\n    [<WorldBorder: United States>]\n\nHere, you retrieved a ``GeoQuerySet`` with only one model: the border of\nthe United States (exactly what you would expect).\n\nSimilarly, you may also use a :ref:`GEOS geometry object <ref-geos>`.\nHere, you can combine the ``intersects`` spatial lookup with the ``get``\nmethod to retrieve only the ``WorldBorder`` instance for San Marino instead\nof a queryset::\n\n    >>> from django.contrib.gis.geos import Point\n    >>> pnt = Point(12.4604, 43.9420)\n    >>> sm = WorldBorder.objects.get(mpoly__intersects=pnt)\n    >>> sm\n    <WorldBorder: San Marino>\n\nThe ``contains`` and ``intersects`` lookups are just a subset of the\navailable queries -- the :ref:`ref-gis-db-api` documentation has more.\n\nAutomatic Spatial Transformations\n---------------------------------\nWhen doing spatial queries, GeoDjango automatically transforms\ngeometries if they're in a different coordinate system.  In the following\nexample, coordinates will be expressed in `EPSG SRID 32140`__,\na coordinate system specific to south Texas **only** and in units of\n**meters**, not degrees::\n\n    >>> from django.contrib.gis.geos import Point, GEOSGeometry\n    >>> pnt = Point(954158.1, 4215137.1, srid=32140)\n\nNote that ``pnt`` may also be constructed with EWKT, an \"extended\" form of\nWKT that includes the SRID::\n\n    >>> pnt = GEOSGeometry('SRID=32140;POINT(954158.1 4215137.1)')\n\nGeoDjango's ORM will automatically wrap geometry values\nin transformation SQL, allowing the developer to work at a higher level\nof abstraction::\n\n    >>> qs = WorldBorder.objects.filter(mpoly__intersects=pnt)\n    >>> print(qs.query) # Generating the SQL\n    SELECT \"world_worldborder\".\"id\", \"world_worldborder\".\"name\", \"world_worldborder\".\"area\",\n    \"world_worldborder\".\"pop2005\", \"world_worldborder\".\"fips\", \"world_worldborder\".\"iso2\",\n    \"world_worldborder\".\"iso3\", \"world_worldborder\".\"un\", \"world_worldborder\".\"region\",\n    \"world_worldborder\".\"subregion\", \"world_worldborder\".\"lon\", \"world_worldborder\".\"lat\",\n    \"world_worldborder\".\"mpoly\" FROM \"world_worldborder\"\n    WHERE ST_Intersects(\"world_worldborder\".\"mpoly\", ST_Transform(%s, 4326))\n    >>> qs # printing evaluates the queryset\n    [<WorldBorder: United States>]\n\n__ http://spatialreference.org/ref/epsg/32140/\n\n.. admonition:: Raw queries\n\n    When using :doc:`raw queries </topics/db/sql>`, you should generally wrap\n    your geometry fields with the ``asText()`` SQL function (or ``ST_AsText``\n    for PostGIS) so that the field value will be recognized by GEOS::\n\n        City.objects.raw('SELECT id, name, asText(point) from myapp_city')\n\n    This is not absolutely required by PostGIS, but generally you should only\n    use raw queries when you know exactly what you are doing.\n\nLazy Geometries\n---------------\nGeoDjango loads geometries in a standardized textual representation.  When the\ngeometry field is first accessed, GeoDjango creates a `GEOS geometry object\n<ref-geos>`, exposing powerful functionality, such as serialization properties\nfor popular geospatial formats::\n\n    >>> sm = WorldBorder.objects.get(name='San Marino')\n    >>> sm.mpoly\n    <MultiPolygon object at 0x24c6798>\n    >>> sm.mpoly.wkt # WKT\n    MULTIPOLYGON (((12.4157980000000006 43.9579540000000009, 12.4505540000000003 43.9797209999999978, ...\n    >>> sm.mpoly.wkb # WKB (as Python binary buffer)\n    <read-only buffer for 0x1fe2c70, size -1, offset 0 at 0x2564c40>\n    >>> sm.mpoly.geojson # GeoJSON (requires GDAL)\n    '{ \"type\": \"MultiPolygon\", \"coordinates\": [ [ [ [ 12.415798, 43.957954 ], [ 12.450554, 43.979721 ], ...\n\nThis includes access to all of the advanced geometric operations provided by\nthe GEOS library::\n\n    >>> pnt = Point(12.4604, 43.9420)\n    >>> sm.mpoly.contains(pnt)\n    True\n    >>> pnt.contains(sm.mpoly)\n    False\n\n``GeoQuerySet`` Methods\n-----------------------\n\n\nPutting your data on the map\n============================\n\nGeographic Admin\n----------------\n\nGeoDjango extends :doc:`Django's admin application </ref/contrib/admin/index>`\nwith support for editing geometry fields.\n\nBasics\n^^^^^^\n\nGeoDjango also supplements the Django admin by allowing users to create\nand modify geometries on a JavaScript slippy map (powered by `OpenLayers`_).\n\nLet's dive right in.  Create a file called ``admin.py`` inside the\n``world`` application with the following code::\n\n    from django.contrib.gis import admin\n    from models import WorldBorder\n\n    admin.site.register(WorldBorder, admin.GeoModelAdmin)\n\nNext, edit your ``urls.py`` in the ``geodjango`` application folder as follows::\n\n    from django.conf.urls import patterns, url, include\n    from django.contrib.gis import admin\n\n    admin.autodiscover()\n\n    urlpatterns = patterns('',\n        url(r'^admin/', include(admin.site.urls)),\n    )\n\nStart up the Django development server:\n\n.. code-block:: bash\n\n    $ python manage.py runserver\n\nFinally, browse to ``http://localhost:8000/admin/``, and log in with the admin\nuser created after running ``syncdb``.  Browse to any of the ``WorldBorder``\nentries -- the borders may be edited by clicking on a polygon and dragging\nthe vertexes to the desired position.\n\n.. _OpenLayers: http://openlayers.org/\n.. _Open Street Map: http://openstreetmap.org/\n.. _Vector Map Level 0: http://earth-info.nga.mil/publications/vmap0.html\n.. _OSGeo: http://www.osgeo.org\n\n.. _osmgeoadmin-intro:\n\n``OSMGeoAdmin``\n^^^^^^^^^^^^^^^\n\nWith the :class:`~django.contrib.gis.admin.OSMGeoAdmin`, GeoDjango uses\na `Open Street Map`_ layer in the admin.\nThis provides more context (including street and thoroughfare details) than\navailable with the :class:`~django.contrib.gis.admin.GeoModelAdmin`\n(which uses the `Vector Map Level 0`_ WMS dataset hosted at `OSGeo`_).\n\nFirst, there are some important requirements:\n\n* :class:`~django.contrib.gis.admin.OSMGeoAdmin` requires that the\n  :ref:`spherical mercator projection be added <addgoogleprojection>`\n  to the ``spatial_ref_sys`` table (PostGIS 1.3 and below, only).\n* The PROJ.4 datum shifting files must be installed (see the\n  :ref:`PROJ.4 installation instructions <proj4>` for more details).\n\nIf you meet these requirements, then just substitute the ``OSMGeoAdmin``\noption class in your ``admin.py`` file::\n\n    admin.site.register(WorldBorder, admin.OSMGeoAdmin)\n\n.. rubric:: Footnotes\n\n.. [#] Special thanks to Bjørn Sandvik of `thematicmapping.org\n       <http://thematicmapping.org>`_ for providing and maintaining this\n       dataset.\n.. [#] GeoDjango basic apps was written by Dane Springmeyer, Josh Livni, and\n       Christopher Schmidt.\n.. [#] This point is the `University of Houston Law Center\n       <http://www.law.uh.edu/>`_.\n.. [#] Open Geospatial Consortium, Inc., `OpenGIS Simple Feature Specification\n       For SQL <http://www.opengeospatial.org/standards/sfs>`_.\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/contrib/gis/utils.txt",
    "content": ".. _ref-gis-utils:\n\n===================\nGeoDjango Utilities\n===================\n\n.. module:: django.contrib.gis.utils\n   :synopsis: GeoDjango's collection of utilities.\n\nThe :mod:`django.contrib.gis.utils` module contains various utilities that are\nuseful in creating geospatial Web applications.\n\n.. toctree::\n   :maxdepth: 2\n\n   layermapping\n   ogrinspect\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/contrib/humanize.txt",
    "content": "========================\ndjango.contrib.humanize\n========================\n\n.. module:: django.contrib.humanize\n   :synopsis: A set of Django template filters useful for adding a \"human\n              touch\" to data.\n\nA set of Django template filters useful for adding a \"human touch\" to data.\n\nTo activate these filters, add ``'django.contrib.humanize'`` to your\n:setting:`INSTALLED_APPS` setting. Once you've done that, use\n``{% load humanize %}`` in a template, and you'll have access to the following\nfilters.\n\n.. templatefilter:: apnumber\n\napnumber\n--------\n\nFor numbers 1-9, returns the number spelled out. Otherwise, returns the\nnumber. This follows Associated Press style.\n\nExamples:\n\n* ``1`` becomes ``one``.\n* ``2`` becomes ``two``.\n* ``10`` becomes ``10``.\n\nYou can pass in either an integer or a string representation of an integer.\n\n.. templatefilter:: intcomma\n\nintcomma\n--------\n\nConverts an integer to a string containing commas every three digits.\n\nExamples:\n\n* ``4500`` becomes ``4,500``.\n* ``45000`` becomes ``45,000``.\n* ``450000`` becomes ``450,000``.\n* ``4500000`` becomes ``4,500,000``.\n\n:ref:`Format localization <format-localization>` will be respected if enabled,\ne.g. with the ``'de'`` language:\n\n* ``45000`` becomes ``'45.000'``.\n* ``450000`` becomes ``'450.000'``.\n\nYou can pass in either an integer or a string representation of an integer.\n\n.. templatefilter:: intword\n\nintword\n-------\n\nConverts a large integer to a friendly text representation. Works best for\nnumbers over 1 million.\n\nExamples:\n\n* ``1000000`` becomes ``1.0 million``.\n* ``1200000`` becomes ``1.2 million``.\n* ``1200000000`` becomes ``1.2 billion``.\n\nValues up to 10^100 (Googol) are supported.\n\n:ref:`Format localization <format-localization>` will be respected if enabled,\ne.g. with the ``'de'`` language:\n\n* ``1000000`` becomes ``'1,0 Million'``.\n* ``1200000`` becomes ``'1,2 Million'``.\n* ``1200000000`` becomes ``'1,2 Milliarden'``.\n\nYou can pass in either an integer or a string representation of an integer.\n\n.. templatefilter:: naturalday\n\nnaturalday\n----------\n\nFor dates that are the current day or within one day, return \"today\",\n\"tomorrow\" or \"yesterday\", as appropriate. Otherwise, format the date using\nthe passed in format string.\n\n**Argument:** Date formatting string as described in the :tfilter:`date` tag.\n\nExamples (when 'today' is 17 Feb 2007):\n\n* ``16 Feb 2007`` becomes ``yesterday``.\n* ``17 Feb 2007`` becomes ``today``.\n* ``18 Feb 2007`` becomes ``tomorrow``.\n* Any other day is formatted according to given argument or the\n  :setting:`DATE_FORMAT` setting if no argument is given.\n\n.. templatefilter:: naturaltime\n\nnaturaltime\n-----------\n\n.. versionadded:: 1.4\n\nFor datetime values, returns a string representing how many seconds,\nminutes or hours ago it was -- falling back to the :tfilter:`timesince` \nformat if the value is more than a day old. In case the datetime value is in\nthe future the return value will automatically use an appropriate phrase.\n\nExamples (when 'now' is 17 Feb 2007 16:30:00):\n\n* ``17 Feb 2007 16:30:00`` becomes ``now``.\n* ``17 Feb 2007 16:29:31`` becomes ``29 seconds ago``.\n* ``17 Feb 2007 16:29:00`` becomes ``a minute ago``.\n* ``17 Feb 2007 16:25:35`` becomes ``4 minutes ago``.\n* ``17 Feb 2007 15:30:29`` becomes ``an hour ago``.\n* ``17 Feb 2007 13:31:29`` becomes ``2 hours ago``.\n* ``16 Feb 2007 13:31:29`` becomes ``1 day, 3 hours ago``.\n* ``17 Feb 2007 16:30:30`` becomes ``29 seconds from now``.\n* ``17 Feb 2007 16:31:00`` becomes ``a minute from now``.\n* ``17 Feb 2007 16:34:35`` becomes ``4 minutes from now``.\n* ``17 Feb 2007 16:30:29`` becomes ``an hour from now``.\n* ``17 Feb 2007 18:31:29`` becomes ``2 hours from now``.\n* ``18 Feb 2007 16:31:29`` becomes ``1 day from now``.\n* ``26 Feb 2007 18:31:29`` becomes ``1 week, 2 days from now``.\n\n.. templatefilter:: ordinal\n\nordinal\n-------\n\nConverts an integer to its ordinal as a string.\n\nExamples:\n\n* ``1`` becomes ``1st``.\n* ``2`` becomes ``2nd``.\n* ``3`` becomes ``3rd``.\n\nYou can pass in either an integer or a string representation of an integer.\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/contrib/index.txt",
    "content": "====================\n``contrib`` packages\n====================\n\nDjango aims to follow Python's `\"batteries included\" philosophy`_. It ships\nwith a variety of extra, optional tools that solve common Web-development\nproblems.\n\nThis code lives in ``django/contrib`` in the Django distribution. This document\ngives a rundown of the packages in ``contrib``, along with any dependencies\nthose packages have.\n\n.. admonition:: Note\n\n    For most of these add-ons -- specifically, the add-ons that include either\n    models or template tags -- you'll need to add the package name (e.g.,\n    ``'django.contrib.admin'``) to your :setting:`INSTALLED_APPS` setting and\n    re-run ``manage.py syncdb``.\n\n.. _\"batteries included\" philosophy: http://docs.python.org/tutorial/stdlib.html#batteries-included\n\n.. toctree::\n   :maxdepth: 1\n\n   admin/index\n   auth\n   comments/index\n   contenttypes\n   csrf\n   databrowse\n   flatpages\n   formtools/index\n   gis/index\n   humanize\n   localflavor\n   markup\n   messages\n   redirects\n   sitemaps\n   sites\n   staticfiles\n   syndication\n   webdesign\n\nadmin\n=====\n\nThe automatic Django administrative interface. For more information, see\n:doc:`Tutorial 2 </intro/tutorial02>` and the\n:doc:`admin documentation </ref/contrib/admin/index>`.\n\nRequires the auth_ and contenttypes_ contrib packages to be installed.\n\nauth\n====\n\nDjango's authentication framework.\n\nSee :doc:`/topics/auth/index`.\n\ncomments\n========\n\nA simple yet flexible comments system. See :doc:`/ref/contrib/comments/index`.\n\ncontenttypes\n============\n\nA light framework for hooking into \"types\" of content, where each installed\nDjango model is a separate content type.\n\nSee the :doc:`contenttypes documentation </ref/contrib/contenttypes>`.\n\ncsrf\n====\n\nA middleware for preventing Cross Site Request Forgeries\n\nSee the :doc:`csrf documentation </ref/contrib/csrf>`.\n\nflatpages\n=========\n\nA framework for managing simple \"flat\" HTML content in a database.\n\nSee the :doc:`flatpages documentation </ref/contrib/flatpages>`.\n\nRequires the sites_ contrib package to be installed as well.\n\nformtools\n=========\n\nA set of high-level abstractions for Django forms (django.forms).\n\ndjango.contrib.formtools.preview\n--------------------------------\n\nAn abstraction of the following workflow:\n\n\"Display an HTML form, force a preview, then do something with the submission.\"\n\nSee the :doc:`form preview documentation </ref/contrib/formtools/form-preview>`.\n\ndjango.contrib.formtools.wizard\n-------------------------------\n\nSplits forms across multiple Web pages.\n\nSee the :doc:`form wizard documentation </ref/contrib/formtools/form-wizard>`.\n\ngis\n====\n\nA world-class geospatial framework built on top of Django, that enables\nstorage, manipulation and display of spatial data.\n\nSee the :doc:`/ref/contrib/gis/index` documentation for more.\n\nhumanize\n========\n\nA set of Django template filters useful for adding a \"human touch\" to data.\n\nSee the :doc:`humanize documentation </ref/contrib/humanize>`.\n\nlocalflavor\n===========\n\nA collection of various Django snippets that are useful only for a particular\ncountry or culture. For example, ``django.contrib.localflavor.us.forms``\ncontains a ``USZipCodeField`` that you can use to validate U.S. zip codes.\n\nSee the :doc:`localflavor documentation </ref/contrib/localflavor>`.\n\nmarkup\n======\n\nA collection of template filters that implement common markup languages\n\nSee the :doc:`markup documentation </ref/contrib/markup>`.\n\nmessages\n========\n\nA framework for storing and retrieving temporary cookie- or session-based\nmessages\n\nSee the :doc:`messages documentation </ref/contrib/messages>`.\n\nredirects\n=========\n\nA framework for managing redirects.\n\nSee the :doc:`redirects documentation </ref/contrib/redirects>`.\n\nsessions\n========\n\nA framework for storing data in anonymous sessions.\n\nSee the :doc:`sessions documentation </topics/http/sessions>`.\n\nsites\n=====\n\nA light framework that lets you operate multiple Web sites off of the same\ndatabase and Django installation. It gives you hooks for associating objects to\none or more sites.\n\nSee the :doc:`sites documentation </ref/contrib/sites>`.\n\nsitemaps\n========\n\nA framework for generating Google sitemap XML files.\n\nSee the :doc:`sitemaps documentation </ref/contrib/sitemaps>`.\n\nsyndication\n===========\n\nA framework for generating syndication feeds, in RSS and Atom, quite easily.\n\nSee the :doc:`syndication documentation </ref/contrib/syndication>`.\n\nwebdesign\n=========\n\nHelpers and utilities targeted primarily at Web *designers* rather than\nWeb *developers*.\n\nSee the :doc:`Web design helpers documentation </ref/contrib/webdesign>`.\n\nOther add-ons\n=============\n\nIf you have an idea for functionality to include in ``contrib``, let us know!\nCode it up, and post it to the `django-users mailing list`_.\n\n.. _django-users mailing list: http://groups.google.com/group/django-users\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/contrib/localflavor.txt",
    "content": "==========================\nThe \"local flavor\" add-ons\n==========================\n\n.. module:: django.contrib.localflavor\n    :synopsis: A collection of various Django snippets that are useful only for\n               a particular country or culture.\n\nHistorically, Django has shipped with ``django.contrib.localflavor`` --\nassorted pieces of code that are useful for particular countries or cultures.\nStarting with Django 1.5, we've started the process of moving the code to\noutside packages (i.e., packages distributed separately from Django), for\neasier maintenance and to trim the size of Django's codebase.\n\nThe localflavor packages are named ``django-localflavor-*``, where the asterisk\nis an `ISO 3166 country code`_. For example: ``django-localflavor-us`` is the\nlocalflavor package for the U.S.A.\n\nMost of these ``localflavor`` add-ons are country-specific fields for the\n:doc:`forms </topics/forms/index>` framework -- for example, a\n``USStateField`` that knows how to validate U.S. state abbreviations and a\n``FISocialSecurityNumber`` that knows how to validate Finnish social security\nnumbers.\n\nTo use one of these localized components, just import the relevant subpackage.\nFor example, here's how you can create a form with a field representing a\nFrench telephone number::\n\n    from django import forms\n    from django_localflavor_fr.forms import FRPhoneNumberField\n\n    class MyForm(forms.Form):\n        my_french_phone_no = FRPhoneNumberField()\n\nFor documentation on a given country's localflavor helpers, see its README\nfile.\n\n.. _ISO 3166 country code: http://www.iso.org/iso/country_codes.htm\n\n.. _localflavor-how-to-migrate:\n\nHow to migrate\n==============\n\nIf you've used the old ``django.contrib.localflavor`` package, follow these two\neasy steps to update your code:\n\n1. Install the appropriate third-party ``django-localflavor-*`` package(s).\n   Go to https://github.com/django/ and find the package for your country.\n\n2. Change your app's import statements to reference the new packages.\n\n   For example, change this::\n\n       from django.contrib.localflavor.fr.forms import FRPhoneNumberField\n\n   ...to this::\n\n       from django_localflavor_fr.forms import FRPhoneNumberField\n\nThe code in the new packages is the same (it was copied directly from Django),\nso you don't have to worry about backwards compatibility in terms of\nfunctionality. Only the imports have changed.\n\n.. _localflavor-deprecation-policy:\n\nDeprecation policy\n==================\n\nIn Django 1.5, importing from ``django.contrib.localflavor`` will result in a\n``DeprecationWarning``. This means your code will still work, but you should\nchange it as soon as possible.\n\nIn Django 1.6, importing from ``django.contrib.localflavor`` will no longer\nwork.\n\n.. _localflavor-packages:\n\nSupported countries\n===================\n\nThe following countries have django-localflavor- packages.\n\n* Argentina: https://github.com/django/django-localflavor-ar\n* Australia: https://github.com/django/django-localflavor-au\n* Austria: https://github.com/django/django-localflavor-at\n* Belgium: https://github.com/django/django-localflavor-be\n* Brazil: https://github.com/django/django-localflavor-br\n* Canada: https://github.com/django/django-localflavor-ca\n* Chile: https://github.com/django/django-localflavor-cl\n* China: https://github.com/django/django-localflavor-cn\n* Colombia: https://github.com/django/django-localflavor-co\n* Croatia: https://github.com/django/django-localflavor-cr\n* Czech Republic: https://github.com/django/django-localflavor-cz\n* Ecuador: https://github.com/django/django-localflavor-ec\n* Finland: https://github.com/django/django-localflavor-fi\n* France: https://github.com/django/django-localflavor-fr\n* Germany: https://github.com/django/django-localflavor-de\n* Greece: https://github.com/spapas/django-localflavor-gr\n* Hong Kong: https://github.com/django/django-localflavor-hk\n* Iceland: https://github.com/django/django-localflavor-is\n* India: https://github.com/django/django-localflavor-in\n* Indonesia: https://github.com/django/django-localflavor-id\n* Ireland: https://github.com/django/django-localflavor-ie\n* Israel: https://github.com/django/django-localflavor-il\n* Italy: https://github.com/django/django-localflavor-it\n* Japan: https://github.com/django/django-localflavor-jp\n* Kuwait: https://github.com/django/django-localflavor-kw\n* Lithuania: https://github.com/simukis/django-localflavor-lt\n* Macedonia: https://github.com/django/django-localflavor-mk\n* Mexico: https://github.com/django/django-localflavor-mx\n* The Netherlands: https://github.com/django/django-localflavor-nl\n* Norway: https://github.com/django/django-localflavor-no\n* Peru: https://github.com/django/django-localflavor-pe\n* Poland: https://github.com/django/django-localflavor-pl\n* Portugal: https://github.com/django/django-localflavor-pt\n* Paraguay: https://github.com/django/django-localflavor-py\n* Romania: https://github.com/django/django-localflavor-ro\n* Russia: https://github.com/django/django-localflavor-ru\n* Slovakia: https://github.com/django/django-localflavor-sk\n* Slovenia: https://github.com/django/django-localflavor-si\n* South Africa: https://github.com/django/django-localflavor-za\n* Spain: https://github.com/django/django-localflavor-es\n* Sweden: https://github.com/django/django-localflavor-se\n* Switzerland: https://github.com/django/django-localflavor-ch\n* Turkey: https://github.com/django/django-localflavor-tr\n* United Kingdom: https://github.com/django/django-localflavor-gb\n* United States of America: https://github.com/django/django-localflavor-us\n* Uruguay: https://github.com/django/django-localflavor-uy\n\ndjango.contrib.localflavor.generic\n==================================\n\nThe ``django.contrib.localflavor.generic`` package, which hasn't been removed from\nDjango yet, contains useful code that is not specific to one particular country\nor culture. Currently, it defines date, datetime and split datetime input\nfields based on those from :doc:`forms </topics/forms/index>`, but with non-US\ndefault formats. Here's an example of how to use them::\n\n    from django import forms\n    from django.contrib.localflavor import generic\n\n    class MyForm(forms.Form):\n        my_date_field = generic.forms.DateField()\n\nInternationalization of localflavors\n====================================\n\nTo activate translations for a newly-created ``localflavor`` application, you\nmust include the application's name (e.g. ``django_localflavor_jp``) in the\n:setting:`INSTALLED_APPS` setting, so the internationalization system can find\nthe catalog, as explained in :ref:`how-django-discovers-translations`.\n\nIf you're still using the legacy ``localflavor`` application, you must include\n:mod:`django.contrib.localflavor` in :setting:`INSTALLED_APPS` (that will\nraise a ``DeprecationWarning``).\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/contrib/markup.txt",
    "content": "=====================\ndjango.contrib.markup\n=====================\n\n.. module:: django.contrib.markup\n   :synopsis: A collection of template filters that implement common markup languages.\n\n.. deprecated:: 1.5\n    This module has been deprecated.\n\nDjango provides template filters that implement the following markup\nlanguages:\n\n* ``textile`` -- implements `Textile`_ -- requires `PyTextile`_\n* ``markdown`` -- implements `Markdown`_ -- requires `Python-markdown`_ (>=2.1)\n* ``restructuredtext`` -- implements `reST (reStructured Text)`_\n  -- requires `doc-utils`_\n\nIn each case, the filter expects formatted markup as a string and\nreturns a string representing the marked-up text. For example, the\n``textile`` filter converts text that is marked-up in Textile format\nto HTML.\n\nTo activate these filters, add ``'django.contrib.markup'`` to your\n:setting:`INSTALLED_APPS` setting. Once you've done that, use\n``{% load markup %}`` in a template, and you'll have access to these filters.\nFor more documentation, read the source code in\n:file:`django/contrib/markup/templatetags/markup.py`.\n\n.. warning::\n\n    The output of markup filters is marked \"safe\" and will not be escaped when\n    rendered in a template. Always be careful to sanitize your inputs and make\n    sure you are not leaving yourself vulnerable to cross-site scripting or\n    other types of attacks.\n\n.. _Textile: http://en.wikipedia.org/wiki/Textile_%28markup_language%29\n.. _Markdown: http://en.wikipedia.org/wiki/Markdown\n.. _reST (reStructured Text): http://en.wikipedia.org/wiki/ReStructuredText\n.. _PyTextile: http://loopcore.com/python-textile/\n.. _Python-markdown: http://pypi.python.org/pypi/Markdown\n.. _doc-utils: http://docutils.sf.net/\n\nreStructured Text\n-----------------\n\nWhen using the ``restructuredtext`` markup filter you can define a\n:setting:`RESTRUCTUREDTEXT_FILTER_SETTINGS` in your django settings to\noverride the default writer settings. See the `restructuredtext writer\nsettings`_ for details on what these settings are.\n\n.. warning::\n\n   reStructured Text has features that allow raw HTML to be included, and that\n   allow arbitrary files to be included. These can lead to XSS vulnerabilities\n   and leaking of private information. It is your responsibility to check the\n   features of this library and configure appropriately to avoid this. See the\n   `Deploying Docutils Securely\n   <http://docutils.sourceforge.net/docs/howto/security.html>`_ documentation.\n\n.. _restructuredtext writer settings: http://docutils.sourceforge.net/docs/user/config.html#html4css1-writer\n\nMarkdown\n--------\n\nThe Python Markdown library supports options named \"safe_mode\" and\n\"enable_attributes\". Both relate to the security of the output. To enable both\noptions in tandem, the markdown filter supports the \"safe\" argument::\n\n    {{ markdown_content_var|markdown:\"safe\" }}\n\n.. warning::\n\n    Versions of the Python-Markdown library prior to 2.1 do not support the\n    optional disabling of attributes. This is a security flaw. Therefore,\n    ``django.contrib.markup`` has dropped support for versions of\n    Python-Markdown < 2.1 in Django 1.5.\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/contrib/messages.txt",
    "content": "======================\nThe messages framework\n======================\n\n.. module:: django.contrib.messages\n   :synopsis: Provides cookie- and session-based temporary message storage.\n\nQuite commonly in web applications, you need to display a one-time\nnotification message (also known as \"flash message\") to the user after\nprocessing a form or some other types of user input.\n\nFor this, Django provides full support for cookie- and session-based\nmessaging, for both anonymous and authenticated users. The messages framework\nallows you to temporarily store messages in one request and retrieve them for\ndisplay in a subsequent request (usually the next one). Every message is\ntagged with a specific ``level`` that determines its priority (e.g., ``info``,\n``warning``, or ``error``).\n\nEnabling messages\n=================\n\nMessages are implemented through a :doc:`middleware </ref/middleware>`\nclass and corresponding :doc:`context processor </ref/templates/api>`.\n\nThe default ``settings.py`` created by ``django-admin.py startproject``\nalready contains all the settings required to enable message functionality:\n\n* ``'django.contrib.messages'`` is in :setting:`INSTALLED_APPS`.\n\n* :setting:`MIDDLEWARE_CLASSES` contains\n  ``'django.contrib.sessions.middleware.SessionMiddleware'`` and\n  ``'django.contrib.messages.middleware.MessageMiddleware'``.\n\n  The default :ref:`storage backend <message-storage-backends>` relies on\n  :doc:`sessions </topics/http/sessions>`. That's why ``SessionMiddleware``\n  must be enabled and appear before ``MessageMiddleware`` in\n  :setting:`MIDDLEWARE_CLASSES`.\n\n* :setting:`TEMPLATE_CONTEXT_PROCESSORS`   contains\n  ``'django.contrib.messages.context_processors.messages'``.\n\nIf you don't want to use messages, you can remove\n``'django.contrib.messages'`` from your :setting:`INSTALLED_APPS`, the\n``MessageMiddleware`` line from :setting:`MIDDLEWARE_CLASSES`, and the\n``messages`` context processor from :setting:`TEMPLATE_CONTEXT_PROCESSORS`.\n\nConfiguring the message engine\n==============================\n\n.. _message-storage-backends:\n\nStorage backends\n----------------\n\nThe messages framework can use different backends to store temporary messages.\n\nDjango provides three built-in storage classes:\n\n.. class:: django.contrib.messages.storage.session.SessionStorage\n\n    This class stores all messages inside of the request's session. Therefore\n    it requires Django's ``contrib.sessions`` application.\n\n.. class:: django.contrib.messages.storage.cookie.CookieStorage\n\n    This class stores the message data in a cookie (signed with a secret hash\n    to prevent manipulation) to persist notifications across requests. Old\n    messages are dropped if the cookie data size would exceed 2048 bytes.\n\n.. class:: django.contrib.messages.storage.fallback.FallbackStorage\n\n    This class first uses ``CookieStorage``, and falls back to using\n    ``SessionStorage`` for the messages that could not fit in a single cookie.\n    It also requires Django's ``contrib.sessions`` application.\n\n    This behavior avoids writing to the session whenever possible. It should\n    provide the best performance in the general case.\n\n:class:`~django.contrib.messages.storage.fallback.FallbackStorage` is the\ndefault storage class. If it isn't suitable to your needs, you can select\nanother storage class by setting `MESSAGE_STORAGE`_ to its full import path,\nfor example::\n\n    MESSAGE_STORAGE = 'django.contrib.messages.storage.cookie.CookieStorage'\n\nTo write your own storage class, subclass the ``BaseStorage`` class in\n``django.contrib.messages.storage.base`` and implement the ``_get`` and\n``_store`` methods.\n\nMessage levels\n--------------\n\nThe messages framework is based on a configurable level architecture similar\nto that of the Python logging module. Message levels allow you to group\nmessages by type so they can be filtered or displayed differently in views and\ntemplates.\n\nThe built-in levels, which can be imported from ``django.contrib.messages``\ndirectly, are:\n\n=========== ========\nConstant    Purpose\n=========== ========\n``DEBUG``   Development-related messages that will be ignored (or removed) in a production deployment\n``INFO``    Informational messages for the user\n``SUCCESS`` An action was successful, e.g. \"Your profile was updated successfully\"\n``WARNING`` A failure did not occur but may be imminent\n``ERROR``   An action was **not** successful or some other failure occurred\n=========== ========\n\nThe `MESSAGE_LEVEL`_ setting can be used to change the minimum recorded level\n(or it can be `changed per request`_). Attempts to add messages of a level less\nthan this will be ignored.\n\n.. _`changed per request`: `Changing the minimum recorded level per-request`_\n\nMessage tags\n------------\n\nMessage tags are a string representation of the message level plus any\nextra tags that were added directly in the view (see\n`Adding extra message tags`_ below for more details). Tags are stored in a\nstring and are separated by spaces. Typically, message tags\nare used as CSS classes to customize message style based on message type. By\ndefault, each level has a single tag that's a lowercase version of its own\nconstant:\n\n==============  ===========\nLevel Constant  Tag\n==============  ===========\n``DEBUG``       ``debug``\n``INFO``        ``info``\n``SUCCESS``     ``success``\n``WARNING``     ``warning``\n``ERROR``       ``error``\n==============  ===========\n\nTo change the default tags for a message level (either built-in or custom),\nset the `MESSAGE_TAGS`_ setting to a dictionary containing the levels\nyou wish to change. As this extends the default tags, you only need to provide\ntags for the levels you wish to override::\n\n    from django.contrib.messages import constants as messages\n    MESSAGE_TAGS = {\n        messages.INFO: '',\n        50: 'critical',\n    }\n\nUsing messages in views and templates\n=====================================\n\n.. function:: add_message(request, level, message, extra_tags='', fail_silently=False)\n\nAdding a message\n----------------\n\nTo add a message, call::\n\n    from django.contrib import messages\n    messages.add_message(request, messages.INFO, 'Hello world.')\n\nSome shortcut methods provide a standard way to add messages with commonly\nused tags (which are usually represented as HTML classes for the message)::\n\n    messages.debug(request, '%s SQL statements were executed.' % count)\n    messages.info(request, 'Three credits remain in your account.')\n    messages.success(request, 'Profile details updated.')\n    messages.warning(request, 'Your account expires in three days.')\n    messages.error(request, 'Document deleted.')\n\nDisplaying messages\n-------------------\n\nIn your template, use something like::\n\n    {% if messages %}\n    <ul class=\"messages\">\n        {% for message in messages %}\n        <li{% if message.tags %} class=\"{{ message.tags }}\"{% endif %}>{{ message }}</li>\n        {% endfor %}\n    </ul>\n    {% endif %}\n\nIf you're using the context processor, your template should be rendered with a\n``RequestContext``. Otherwise, ensure ``messages`` is available to\nthe template context.\n\nEven if you know there is only just one message, you should still iterate over\nthe ``messages`` sequence, because otherwise the message storage will not be cleared\nfor the next request.\n\nCreating custom message levels\n------------------------------\n\nMessages levels are nothing more than integers, so you can define your own\nlevel constants and use them to create more customized user feedback, e.g.::\n\n    CRITICAL = 50\n\n    def my_view(request):\n        messages.add_message(request, CRITICAL, 'A serious error occurred.')\n\nWhen creating custom message levels you should be careful to avoid overloading\nexisting levels. The values for the built-in levels are:\n\n.. _message-level-constants:\n\n==============  =====\nLevel Constant  Value\n==============  =====\n``DEBUG``       10\n``INFO``        20\n``SUCCESS``     25\n``WARNING``     30\n``ERROR``       40\n==============  =====\n\nIf you need to identify the custom levels in your HTML or CSS, you need to\nprovide a mapping via the `MESSAGE_TAGS`_ setting.\n\n.. note::\n   If you are creating a reusable application, it is recommended to use\n   only the built-in `message levels`_ and not rely on any custom levels.\n\nChanging the minimum recorded level per-request\n-----------------------------------------------\n\nThe minimum recorded level can be set per request via the ``set_level``\nmethod::\n\n    from django.contrib import messages\n\n    # Change the messages level to ensure the debug message is added.\n    messages.set_level(request, messages.DEBUG)\n    messages.debug(request, 'Test message...')\n\n    # In another request, record only messages with a level of WARNING and higher\n    messages.set_level(request, messages.WARNING)\n    messages.success(request, 'Your profile was updated.') # ignored\n    messages.warning(request, 'Your account is about to expire.') # recorded\n\n    # Set the messages level back to default.\n    messages.set_level(request, None)\n\nSimilarly, the current effective level can be retrieved with ``get_level``::\n\n    from django.contrib import messages\n    current_level = messages.get_level(request)\n\nFor more information on how the minimum recorded level functions, see\n`Message levels`_ above.\n\nAdding extra message tags\n-------------------------\n\nFor more direct control over message tags, you can optionally provide a string\ncontaining extra tags to any of the add methods::\n\n    messages.add_message(request, messages.INFO, 'Over 9000!',\n                         extra_tags='dragonball')\n    messages.error(request, 'Email box full', extra_tags='email')\n\nExtra tags are added before the default tag for that level and are space\nseparated.\n\nFailing silently when the message framework is disabled\n-------------------------------------------------------\n\nIf you're writing a reusable app (or other piece of code) and want to include\nmessaging functionality, but don't want to require your users to enable it\nif they don't want to, you may pass an additional keyword argument\n``fail_silently=True`` to any of the ``add_message`` family of methods. For\nexample::\n\n    messages.add_message(request, messages.SUCCESS, 'Profile details updated.',\n                         fail_silently=True)\n    messages.info(request, 'Hello world.', fail_silently=True)\n\n.. note::\n   Setting ``fail_silently=True`` only hides the ``MessageFailure`` that would\n   otherwise occur when the messages framework disabled and one attempts to\n   use one of the ``add_message`` family of methods. It does not hide failures\n   that may occur for other reasons.\n\nExpiration of messages\n======================\n\nThe messages are marked to be cleared when the storage instance is iterated\n(and cleared when the response is processed).\n\nTo avoid the messages being cleared, you can set the messages storage to\n``False`` after iterating::\n\n    storage = messages.get_messages(request)\n    for message in storage:\n        do_something_with(message)\n    storage.used = False\n\nBehavior of parallel requests\n=============================\n\nDue to the way cookies (and hence sessions) work, **the behavior of any\nbackends that make use of cookies or sessions is undefined when the same\nclient makes multiple requests that set or get messages in parallel**. For\nexample, if a client initiates a request that creates a message in one window\n(or tab) and then another that fetches any uniterated messages in another\nwindow, before the first window redirects, the message may appear in the\nsecond window instead of the first window where it may be expected.\n\nIn short, when multiple simultaneous requests from the same client are\ninvolved, messages are not guaranteed to be delivered to the same window that\ncreated them nor, in some cases, at all. Note that this is typically not a\nproblem in most applications and will become a non-issue in HTML5, where each\nwindow/tab will have its own browsing context.\n\nSettings\n========\n\nA few :doc:`Django settings </ref/settings>` give you control over message\nbehavior:\n\nMESSAGE_LEVEL\n-------------\n\nDefault: ``messages.INFO``\n\nThis sets the minimum message that will be saved in the message storage. See\n`Message levels`_ above for more details.\n\n.. admonition:: Important\n\n   If you override ``MESSAGE_LEVEL`` in your settings file and rely on any of\n   the built-in constants, you must import the constants module directly to\n   avoid the potential for circular imports, e.g.::\n\n       from django.contrib.messages import constants as message_constants\n       MESSAGE_LEVEL = message_constants.DEBUG\n\n   If desired, you may specify the numeric values for the constants directly\n   according to the values in the above :ref:`constants table\n   <message-level-constants>`.\n\nMESSAGE_STORAGE\n---------------\n\nDefault: ``'django.contrib.messages.storage.fallback.FallbackStorage'``\n\nControls where Django stores message data. Valid values are:\n\n* ``'django.contrib.messages.storage.fallback.FallbackStorage'``\n* ``'django.contrib.messages.storage.session.SessionStorage'``\n* ``'django.contrib.messages.storage.cookie.CookieStorage'``\n\nSee `Storage backends`_ for more details.\n\nMESSAGE_TAGS\n------------\n\nDefault::\n\n        {messages.DEBUG: 'debug',\n        messages.INFO: 'info',\n        messages.SUCCESS: 'success',\n        messages.WARNING: 'warning',\n        messages.ERROR: 'error',}\n\nThis sets the mapping of message level to message tag, which is typically\nrendered as a CSS class in HTML. If you specify a value, it will extend\nthe default. This means you only have to specify those values which you need\nto override. See `Displaying messages`_ above for more details.\n\n.. admonition:: Important\n\n   If you override ``MESSAGE_TAGS`` in your settings file and rely on any of\n   the built-in constants, you must import the ``constants`` module directly to\n   avoid the potential for circular imports, e.g.::\n\n       from django.contrib.messages import constants as message_constants\n       MESSAGE_TAGS = {message_constants.INFO: ''}\n\n   If desired, you may specify the numeric values for the constants directly\n   according to the values in the above :ref:`constants table\n   <message-level-constants>`.\n\nSESSION_COOKIE_DOMAIN\n---------------------\n\nDefault: ``None``\n\nThe storage backends that use cookies -- ``CookieStorage`` and\n``FallbackStorage`` -- use the value of :setting:`SESSION_COOKIE_DOMAIN` in\nsetting their cookies. See the :doc:`settings documentation </ref/settings>`\nfor more information on how this works and why you might need to set it.\n\n.. _Django settings: ../settings/\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/contrib/redirects.txt",
    "content": "=================\nThe redirects app\n=================\n\n.. module:: django.contrib.redirects\n   :synopsis: A framework for managing redirects.\n\nDjango comes with an optional redirects application. It lets you store simple\nredirects in a database and handles the redirecting for you.\n\nInstallation\n============\n\nTo install the redirects app, follow these steps:\n\n1. Ensure that the ``django.contrib.sites`` framework\n   :ref:`is installed <enabling-the-sites-framework>`.\n2. Add ``'django.contrib.redirects'`` to your :setting:`INSTALLED_APPS` setting.\n3. Add ``'django.contrib.redirects.middleware.RedirectFallbackMiddleware'``\n   to your :setting:`MIDDLEWARE_CLASSES` setting.\n4. Run the command :djadmin:`manage.py syncdb <syncdb>`.\n\nHow it works\n============\n\n``manage.py syncdb`` creates a ``django_redirect`` table in your database. This\nis a simple lookup table with ``site_id``, ``old_path`` and ``new_path`` fields.\n\nThe ``RedirectFallbackMiddleware`` does all of the work. Each time any Django\napplication raises a 404 error, this middleware checks the redirects database\nfor the requested URL as a last resort. Specifically, it checks for a redirect\nwith the given ``old_path`` with a site ID that corresponds to the\n:setting:`SITE_ID` setting.\n\n* If it finds a match, and ``new_path`` is not empty, it redirects to\n  ``new_path``.\n* If it finds a match, and ``new_path`` is empty, it sends a 410 (\"Gone\")\n  HTTP header and empty (content-less) response.\n* If it doesn't find a match, the request continues to be processed as\n  usual.\n\nThe middleware only gets activated for 404s -- not for 500s or responses of any\nother status code.\n\nNote that the order of :setting:`MIDDLEWARE_CLASSES` matters. Generally, you\ncan put ``RedirectFallbackMiddleware`` at the end of the list, because it's a\nlast resort.\n\nFor more on middleware, read the :doc:`middleware docs\n</topics/http/middleware>`.\n\nHow to add, change and delete redirects\n=======================================\n\nVia the admin interface\n-----------------------\n\nIf you've activated the automatic Django admin interface, you should see a\n\"Redirects\" section on the admin index page. Edit redirects as you edit any\nother object in the system.\n\nVia the Python API\n------------------\n\n.. class:: models.Redirect\n\n    Redirects are represented by a standard :doc:`Django model </topics/db/models>`,\n    which lives in `django/contrib/redirects/models.py`_. You can access redirect\n    objects via the :doc:`Django database API </topics/db/queries>`.\n\n.. _django/contrib/redirects/models.py: https://github.com/django/django/blob/master/django/contrib/redirects/models.py\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/contrib/sitemaps.txt",
    "content": "=====================\nThe sitemap framework\n=====================\n\n.. module:: django.contrib.sitemaps\n   :synopsis: A framework for generating Google sitemap XML files.\n\nDjango comes with a high-level sitemap-generating framework that makes\ncreating sitemap_ XML files easy.\n\n.. _sitemap: http://www.sitemaps.org/\n\nOverview\n========\n\nA sitemap is an XML file on your Web site that tells search-engine indexers how\nfrequently your pages change and how \"important\" certain pages are in relation\nto other pages on your site. This information helps search engines index your\nsite.\n\nThe Django sitemap framework automates the creation of this XML file by letting\nyou express this information in Python code.\n\nIt works much like Django's :doc:`syndication framework\n</ref/contrib/syndication>`. To create a sitemap, just write a\n:class:`~django.contrib.sitemaps.Sitemap` class and point to it in your\n:doc:`URLconf </topics/http/urls>`.\n\nInstallation\n============\n\nTo install the sitemap app, follow these steps:\n\n1. Add ``'django.contrib.sitemaps'`` to your :setting:`INSTALLED_APPS`\n   setting.\n\n2. Make sure ``'django.template.loaders.app_directories.Loader'``\n   is in your :setting:`TEMPLATE_LOADERS` setting. It's in there by default,\n   so you'll only need to change this if you've changed that setting.\n\n3. Make sure you've installed the\n   :mod:`sites framework <django.contrib.sites>`.\n\n(Note: The sitemap application doesn't install any database tables. The only\nreason it needs to go into :setting:`INSTALLED_APPS` is so that the\n:func:`~django.template.loaders.app_directories.Loader` template\nloader can find the default templates.)\n\nInitialization\n==============\n\n.. function:: views.sitemap(request, sitemaps, section=None, template_name='sitemap.xml', mimetype='application/xml')\n\nTo activate sitemap generation on your Django site, add this line to your\n:doc:`URLconf </topics/http/urls>`::\n\n   (r'^sitemap\\.xml$', 'django.contrib.sitemaps.views.sitemap', {'sitemaps': sitemaps})\n\nThis tells Django to build a sitemap when a client accesses :file:`/sitemap.xml`.\n\nThe name of the sitemap file is not important, but the location is. Search\nengines will only index links in your sitemap for the current URL level and\nbelow. For instance, if :file:`sitemap.xml` lives in your root directory, it may\nreference any URL in your site. However, if your sitemap lives at\n:file:`/content/sitemap.xml`, it may only reference URLs that begin with\n:file:`/content/`.\n\nThe sitemap view takes an extra, required argument: ``{'sitemaps': sitemaps}``.\n``sitemaps`` should be a dictionary that maps a short section label (e.g.,\n``blog`` or ``news``) to its :class:`~django.contrib.sitemaps.Sitemap` class\n(e.g., ``BlogSitemap`` or ``NewsSitemap``). It may also map to an *instance* of\na :class:`~django.contrib.sitemaps.Sitemap` class (e.g.,\n``BlogSitemap(some_var)``).\n\nSitemap classes\n===============\n\nA :class:`~django.contrib.sitemaps.Sitemap` class is a simple Python\nclass that represents a \"section\" of entries in your sitemap. For example,\none :class:`~django.contrib.sitemaps.Sitemap` class could represent\nall the entries of your Weblog, while another could represent all of the\nevents in your events calendar.\n\nIn the simplest case, all these sections get lumped together into one\n:file:`sitemap.xml`, but it's also possible to use the framework to generate a\nsitemap index that references individual sitemap files, one per section. (See\n`Creating a sitemap index`_ below.)\n\n:class:`~django.contrib.sitemaps.Sitemap` classes must subclass\n``django.contrib.sitemaps.Sitemap``. They can live anywhere in your codebase.\n\nA simple example\n================\n\nLet's assume you have a blog system, with an ``Entry`` model, and you want your\nsitemap to include all the links to your individual blog entries. Here's how\nyour sitemap class might look::\n\n    from django.contrib.sitemaps import Sitemap\n    from blog.models import Entry\n\n    class BlogSitemap(Sitemap):\n        changefreq = \"never\"\n        priority = 0.5\n\n        def items(self):\n            return Entry.objects.filter(is_draft=False)\n\n        def lastmod(self, obj):\n            return obj.pub_date\n\nNote:\n\n* :attr:`~Sitemap.changefreq` and :attr:`~Sitemap.priority` are class\n  attributes corresponding to ``<changefreq>`` and ``<priority>`` elements,\n  respectively. They can be made callable as functions, as\n  :attr:`~Sitemap.lastmod` was in the example.\n* :attr:`~Sitemap.items()` is simply a method that returns a list of\n  objects. The objects returned will get passed to any callable methods\n  corresponding to a sitemap property (:attr:`~Sitemap.location`,\n  :attr:`~Sitemap.lastmod`, :attr:`~Sitemap.changefreq`, and\n  :attr:`~Sitemap.priority`).\n* :attr:`~Sitemap.lastmod` should return a Python ``datetime`` object.\n* There is no :attr:`~Sitemap.location` method in this example, but you\n  can provide it in order to specify the URL for your object. By default,\n  :attr:`~Sitemap.location()` calls ``get_absolute_url()`` on each object\n  and returns the result.\n\nSitemap class reference\n=======================\n\n.. class:: Sitemap\n\n    A ``Sitemap`` class can define the following methods/attributes:\n\n    .. attribute:: Sitemap.items\n\n        **Required.** A method that returns a list of objects. The framework\n        doesn't care what *type* of objects they are; all that matters is that\n        these objects get passed to the :attr:`~Sitemap.location()`,\n        :attr:`~Sitemap.lastmod()`, :attr:`~Sitemap.changefreq()` and\n        :attr:`~Sitemap.priority()` methods.\n\n    .. attribute:: Sitemap.location\n\n        **Optional.** Either a method or attribute.\n\n        If it's a method, it should return the absolute path for a given object\n        as returned by :attr:`~Sitemap.items()`.\n\n        If it's an attribute, its value should be a string representing an\n        absolute path to use for *every* object returned by\n        :attr:`~Sitemap.items()`.\n\n        In both cases, \"absolute path\" means a URL that doesn't include the\n        protocol or domain. Examples:\n\n        * Good: :file:`'/foo/bar/'`\n        * Bad: :file:`'example.com/foo/bar/'`\n        * Bad: :file:`'http://example.com/foo/bar/'`\n\n        If :attr:`~Sitemap.location` isn't provided, the framework will call\n        the ``get_absolute_url()`` method on each object as returned by\n        :attr:`~Sitemap.items()`.\n\n        To specify a protocol other than ``'http'``, use\n        :attr:`~Sitemap.protocol`.\n\n    .. attribute:: Sitemap.lastmod\n\n        **Optional.** Either a method or attribute.\n\n        If it's a method, it should take one argument -- an object as returned by\n        :attr:`~Sitemap.items()` -- and return that object's last-modified date/time, as a Python\n        ``datetime.datetime`` object.\n\n        If it's an attribute, its value should be a Python ``datetime.datetime`` object\n        representing the last-modified date/time for *every* object returned by\n        :attr:`~Sitemap.items()`.\n\n    .. attribute:: Sitemap.changefreq\n\n        **Optional.** Either a method or attribute.\n\n        If it's a method, it should take one argument -- an object as returned by\n        :attr:`~Sitemap.items()` -- and return that object's change frequency, as a Python string.\n\n        If it's an attribute, its value should be a string representing the change\n        frequency of *every* object returned by :attr:`~Sitemap.items()`.\n\n        Possible values for :attr:`~Sitemap.changefreq`, whether you use a method or attribute, are:\n\n        * ``'always'``\n        * ``'hourly'``\n        * ``'daily'``\n        * ``'weekly'``\n        * ``'monthly'``\n        * ``'yearly'``\n        * ``'never'``\n\n    .. attribute:: Sitemap.priority\n\n        **Optional.** Either a method or attribute.\n\n        If it's a method, it should take one argument -- an object as returned by\n        :attr:`~Sitemap.items()` -- and return that object's priority, as either a string or float.\n\n        If it's an attribute, its value should be either a string or float representing\n        the priority of *every* object returned by :attr:`~Sitemap.items()`.\n\n        Example values for :attr:`~Sitemap.priority`: ``0.4``, ``1.0``. The default priority of a\n        page is ``0.5``. See the `sitemaps.org documentation`_ for more.\n\n        .. _sitemaps.org documentation: http://www.sitemaps.org/protocol.html#prioritydef\n\n    .. attribute:: Sitemap.protocol\n\n        .. versionadded:: 1.4\n\n        **Optional.**\n\n        This attribute defines the protocol (``'http'`` or ``'https'``) of the\n        URLs in the sitemap. If it isn't set, the protocol with which the\n        sitemap was requested is used. If the sitemap is built outside the\n        context of a request, the default is ``'http'``.\n\n\nShortcuts\n=========\n\nThe sitemap framework provides a couple convenience classes for common cases:\n\n.. class:: FlatPageSitemap\n\n    The :class:`django.contrib.sitemaps.FlatPageSitemap` class looks at all\n    publicly visible :mod:`flatpages <django.contrib.flatpages>`\n    defined for the current :setting:`SITE_ID` (see the\n    :mod:`sites documentation <django.contrib.sites>`) and\n    creates an entry in the sitemap. These entries include only the\n    :attr:`~Sitemap.location` attribute -- not :attr:`~Sitemap.lastmod`,\n    :attr:`~Sitemap.changefreq` or :attr:`~Sitemap.priority`.\n\n.. class:: GenericSitemap\n\n    The :class:`django.contrib.sitemaps.GenericSitemap` class allows you to\n    create a sitemap by passing it a dictionary which has to contain at least\n    a ``queryset`` entry. This queryset will be used to generate the items\n    of the sitemap. It may also have a ``date_field`` entry that\n    specifies a date field for objects retrieved from the ``queryset``.\n    This will be used for the :attr:`~Sitemap.lastmod` attribute in the\n    generated sitemap. You may also pass :attr:`~Sitemap.priority` and\n    :attr:`~Sitemap.changefreq` keyword arguments to the\n    :class:`~django.contrib.sitemaps.GenericSitemap`  constructor to specify\n    these attributes for all URLs.\n\nExample\n-------\n\nHere's an example of a :doc:`URLconf </topics/http/urls>` using both::\n\n    from django.conf.urls import patterns\n    from django.contrib.sitemaps import FlatPageSitemap, GenericSitemap\n    from blog.models import Entry\n\n    info_dict = {\n        'queryset': Entry.objects.all(),\n        'date_field': 'pub_date',\n    }\n\n    sitemaps = {\n        'flatpages': FlatPageSitemap,\n        'blog': GenericSitemap(info_dict, priority=0.6),\n    }\n\n    urlpatterns = patterns('',\n        # some generic view using info_dict\n        # ...\n\n        # the sitemap\n        (r'^sitemap\\.xml$', 'django.contrib.sitemaps.views.sitemap', {'sitemaps': sitemaps})\n    )\n\n.. _URLconf: ../url_dispatch/\n\nCreating a sitemap index\n========================\n\n.. function:: views.index(request, sitemaps, template_name='sitemap_index.xml', mimetype='application/xml', sitemap_url_name='django.contrib.sitemaps.views.sitemap')\n\nThe sitemap framework also has the ability to create a sitemap index that\nreferences individual sitemap files, one per each section defined in your\n``sitemaps`` dictionary. The only differences in usage are:\n\n* You use two views in your URLconf: :func:`django.contrib.sitemaps.views.index`\n  and :func:`django.contrib.sitemaps.views.sitemap`.\n* The :func:`django.contrib.sitemaps.views.sitemap` view should take a\n  ``section`` keyword argument.\n\nHere's what the relevant URLconf lines would look like for the example above::\n\n    urlpatterns = patterns('django.contrib.sitemaps.views',\n        (r'^sitemap\\.xml$', 'index', {'sitemaps': sitemaps}),\n        (r'^sitemap-(?P<section>.+)\\.xml$', 'sitemap', {'sitemaps': sitemaps}),\n    )\n\nThis will automatically generate a :file:`sitemap.xml` file that references\nboth :file:`sitemap-flatpages.xml` and :file:`sitemap-blog.xml`. The\n:class:`~django.contrib.sitemaps.Sitemap` classes and the ``sitemaps``\ndict don't change at all.\n\nYou should create an index file if one of your sitemaps has more than 50,000\nURLs. In this case, Django will automatically paginate the sitemap, and the\nindex will reflect that.\n\n.. versionadded:: 1.4\n\nIf you're not using the vanilla sitemap view -- for example, if it's wrapped\nwith a caching decorator -- you must name your sitemap view and pass\n``sitemap_url_name`` to the index view::\n\n    from django.contrib.sitemaps import views as sitemaps_views\n    from django.views.decorators.cache import cache_page\n\n    urlpatterns = patterns('',\n        url(r'^sitemap.xml$',\n            cache_page(86400)(sitemaps_views.index),\n            {'sitemaps': sitemaps, 'sitemap_url_name': 'sitemaps'}),\n        url(r'^sitemap-(?P<section>.+)\\.xml$',\n            cache_page(86400)(sitemaps_views.sitemap),\n            {'sitemaps': sitemaps}, name='sitemaps'),\n    )\n\n\nTemplate customization\n======================\n\nIf you wish to use a different template for each sitemap or sitemap index\navailable on your site, you may specify it by passing a ``template_name``\nparameter to the ``sitemap`` and ``index`` views via the URLconf::\n\n    urlpatterns = patterns('django.contrib.sitemaps.views',\n        (r'^custom-sitemap\\.xml$', 'index', {\n            'sitemaps': sitemaps,\n            'template_name': 'custom_sitemap.html'\n        }),\n        (r'^custom-sitemap-(?P<section>.+)\\.xml$', 'sitemap', {\n            'sitemaps': sitemaps,\n            'template_name': 'custom_sitemap.html'\n        }),\n    )\n\n\n.. versionchanged:: 1.4\n    In addition, these views also return\n    :class:`~django.template.response.TemplateResponse`\n    instances which allow you to easily customize the response data before\n    rendering. For more details, see the\n    :doc:`TemplateResponse documentation </ref/template-response>`.\n\nContext variables\n------------------\n\nWhen customizing the templates for the\n:func:`~django.contrib.sitemaps.views.index` and\n:func:`~django.contrib.sitemaps.views.sitemap` views, you can rely on the\nfollowing context variables.\n\nIndex\n-----\n\nThe variable ``sitemaps`` is a list of absolute URLs to each of the sitemaps.\n\nSitemap\n-------\n\nThe variable ``urlset`` is a list of URLs that should appear in the\nsitemap. Each URL exposes attributes as defined in the\n:class:`~django.contrib.sitemaps.Sitemap` class:\n\n- ``changefreq``\n- ``item``\n- ``lastmod``\n- ``location``\n- ``priority``\n\n.. versionadded:: 1.4\n\nThe ``item`` attribute has been added for each URL to allow more flexible\ncustomization of the templates, such as `Google news sitemaps`_. Assuming\nSitemap's :attr:`~Sitemap.items()` would return a list of items with\n``publication_data`` and a ``tags`` field something like this would\ngenerate a Google News compatible sitemap:\n\n.. code-block:: xml+django\n\n    <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n    <urlset\n      xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\"\n      xmlns:news=\"http://www.google.com/schemas/sitemap-news/0.9\">\n    {% spaceless %}\n    {% for url in urlset %}\n      <url>\n        <loc>{{ url.location }}</loc>\n        {% if url.lastmod %}<lastmod>{{ url.lastmod|date:\"Y-m-d\" }}</lastmod>{% endif %}\n        {% if url.changefreq %}<changefreq>{{ url.changefreq }}</changefreq>{% endif %}\n        {% if url.priority %}<priority>{{ url.priority }}</priority>{% endif %}\n        <news:news>\n          {% if url.item.publication_date %}<news:publication_date>{{ url.item.publication_date|date:\"Y-m-d\" }}</news:publication_date>{% endif %}\n          {% if url.item.tags %}<news:keywords>{{ url.item.tags }}</news:keywords>{% endif %}\n        </news:news>\n       </url>\n    {% endfor %}\n    {% endspaceless %}\n    </urlset>\n\n.. _`Google news sitemaps`: http://support.google.com/webmasters/bin/answer.py?hl=en&answer=74288\n\nPinging Google\n==============\n\nYou may want to \"ping\" Google when your sitemap changes, to let it know to\nreindex your site. The sitemaps framework provides a function to do just\nthat: :func:`django.contrib.sitemaps.ping_google()`.\n\n.. function:: ping_google\n\n    :func:`ping_google` takes an optional argument, ``sitemap_url``,\n    which should be the absolute path to your site's sitemap (e.g.,\n    :file:`'/sitemap.xml'`). If this argument isn't provided,\n    :func:`ping_google` will attempt to figure out your\n    sitemap by performing a reverse looking in your URLconf.\n\n    :func:`ping_google` raises the exception\n    ``django.contrib.sitemaps.SitemapNotFound`` if it cannot determine your\n    sitemap URL.\n\n.. admonition:: Register with Google first!\n\n    The :func:`ping_google` command only works if you have registered your\n    site with `Google Webmaster Tools`_.\n\n.. _`Google Webmaster Tools`: http://www.google.com/webmasters/tools/\n\nOne useful way to call :func:`ping_google` is from a model's ``save()``\nmethod::\n\n   from django.contrib.sitemaps import ping_google\n\n    class Entry(models.Model):\n        # ...\n        def save(self, force_insert=False, force_update=False):\n            super(Entry, self).save(force_insert, force_update)\n            try:\n                ping_google()\n            except Exception:\n                # Bare 'except' because we could get a variety\n                # of HTTP-related exceptions.\n                pass\n\nA more efficient solution, however, would be to call :func:`ping_google` from a\ncron script, or some other scheduled task. The function makes an HTTP request\nto Google's servers, so you may not want to introduce that network overhead\neach time you call ``save()``.\n\nPinging Google via ``manage.py``\n--------------------------------\n\n.. django-admin:: ping_google\n\nOnce the sitemaps application is added to your project, you may also\nping Google using the ``ping_google`` management command::\n\n    python manage.py ping_google [/sitemap.xml]\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/contrib/sites.txt",
    "content": "=====================\nThe \"sites\" framework\n=====================\n\n.. module:: django.contrib.sites\n   :synopsis: Lets you operate multiple Web sites from the same database and\n              Django project\n\n.. currentmodule:: django.contrib.sites.models\n\nDjango comes with an optional \"sites\" framework. It's a hook for associating\nobjects and functionality to particular Web sites, and it's a holding place for\nthe domain names and \"verbose\" names of your Django-powered sites.\n\nUse it if your single Django installation powers more than one site and you\nneed to differentiate between those sites in some way.\n\nThe whole sites framework is based on a simple model:\n\n.. class:: Site\n\n    A model for storing the ``domain`` and ``name`` attributes of a Web site.\n    The :setting:`SITE_ID` setting specifies the database ID of the\n    :class:`~django.contrib.sites.models.Site` object associated with that\n    particular settings file.\n\n    .. attribute:: domain\n\n        The domain name associated with the Web site.\n\n    .. attribute:: name\n\n        A human-readable \"verbose\" name for the Web site.\n\n\nHow you use this is up to you, but Django uses it in a couple of ways\nautomatically via simple conventions.\n\nExample usage\n=============\n\nWhy would you use sites? It's best explained through examples.\n\nAssociating content with multiple sites\n---------------------------------------\n\nThe Django-powered sites LJWorld.com_ and Lawrence.com_ are operated by the\nsame news organization -- the Lawrence Journal-World newspaper in Lawrence,\nKansas. LJWorld.com focuses on news, while Lawrence.com focuses on local\nentertainment. But sometimes editors want to publish an article on *both*\nsites.\n\nThe brain-dead way of solving the problem would be to require site producers to\npublish the same story twice: once for LJWorld.com and again for Lawrence.com.\nBut that's inefficient for site producers, and it's redundant to store\nmultiple copies of the same story in the database.\n\nThe better solution is simple: Both sites use the same article database, and an\narticle is associated with one or more sites. In Django model terminology,\nthat's represented by a :class:`~django.db.models.ManyToManyField` in the\n``Article`` model::\n\n    from django.db import models\n    from django.contrib.sites.models import Site\n\n    class Article(models.Model):\n        headline = models.CharField(max_length=200)\n        # ...\n        sites = models.ManyToManyField(Site)\n\nThis accomplishes several things quite nicely:\n\n* It lets the site producers edit all content -- on both sites -- in a\n  single interface (the Django admin).\n\n* It means the same story doesn't have to be published twice in the\n  database; it only has a single record in the database.\n\n* It lets the site developers use the same Django view code for both sites.\n  The view code that displays a given story just checks to make sure the\n  requested story is on the current site. It looks something like this::\n\n      from django.contrib.sites.models import get_current_site\n\n      def article_detail(request, article_id):\n          try:\n              a = Article.objects.get(id=article_id, sites__id__exact=get_current_site(request).id)\n          except Article.DoesNotExist:\n              raise Http404\n          # ...\n\n.. _ljworld.com: http://www.ljworld.com/\n.. _lawrence.com: http://www.lawrence.com/\n\nAssociating content with a single site\n--------------------------------------\n\nSimilarly, you can associate a model to the\n:class:`~django.contrib.sites.models.Site`\nmodel in a many-to-one relationship, using\n:class:`~django.db.models.ForeignKey`.\n\nFor example, if an article is only allowed on a single site, you'd use a model\nlike this::\n\n    from django.db import models\n    from django.contrib.sites.models import Site\n\n    class Article(models.Model):\n        headline = models.CharField(max_length=200)\n        # ...\n        site = models.ForeignKey(Site)\n\nThis has the same benefits as described in the last section.\n\n.. _hooking-into-current-site-from-views:\n\nHooking into the current site from views\n----------------------------------------\n\nYou can use the sites framework in your Django views to do\nparticular things based on the site in which the view is being called.\nFor example::\n\n    from django.conf import settings\n\n    def my_view(request):\n        if settings.SITE_ID == 3:\n            # Do something.\n            pass\n        else:\n            # Do something else.\n            pass\n\nOf course, it's ugly to hard-code the site IDs like that. This sort of\nhard-coding is best for hackish fixes that you need done quickly. The\ncleaner way of accomplishing the same thing is to check the current site's\ndomain::\n\n    from django.contrib.sites.models import get_current_site\n\n    def my_view(request):\n        current_site = get_current_site(request)\n        if current_site.domain == 'foo.com':\n            # Do something\n            pass\n        else:\n            # Do something else.\n            pass\n\nThis has also the advantage of checking if the sites framework is installed,\nand return a :class:`RequestSite` instance if it is not.\n\nIf you don't have access to the request object, you can use the\n``get_current()`` method of the :class:`~django.contrib.sites.models.Site`\nmodel's manager. You should then ensure that your settings file does contain\nthe :setting:`SITE_ID` setting. This example is equivalent to the previous one::\n\n    from django.contrib.sites.models import Site\n\n    def my_function_without_request():\n        current_site = Site.objects.get_current()\n        if current_site.domain == 'foo.com':\n            # Do something\n            pass\n        else:\n            # Do something else.\n            pass\n\nGetting the current domain for display\n--------------------------------------\n\nLJWorld.com and Lawrence.com both have email alert functionality, which lets\nreaders sign up to get notifications when news happens. It's pretty basic: A\nreader signs up on a Web form, and he immediately gets an email saying,\n\"Thanks for your subscription.\"\n\nIt'd be inefficient and redundant to implement this signup-processing code\ntwice, so the sites use the same code behind the scenes. But the \"thank you for\nsigning up\" notice needs to be different for each site. By using\n:class:`~django.contrib.sites.models.Site`\nobjects, we can abstract the \"thank you\" notice to use the values of the\ncurrent site's :attr:`~django.contrib.sites.models.Site.name` and\n:attr:`~django.contrib.sites.models.Site.domain`.\n\nHere's an example of what the form-handling view looks like::\n\n    from django.contrib.sites.models import get_current_site\n    from django.core.mail import send_mail\n\n    def register_for_newsletter(request):\n        # Check form values, etc., and subscribe the user.\n        # ...\n\n        current_site = get_current_site(request)\n        send_mail('Thanks for subscribing to %s alerts' % current_site.name,\n            'Thanks for your subscription. We appreciate it.\\n\\n-The %s team.' % current_site.name,\n            'editor@%s' % current_site.domain,\n            [user.email])\n\n        # ...\n\nOn Lawrence.com, this email has the subject line \"Thanks for subscribing to\nlawrence.com alerts.\" On LJWorld.com, the email has the subject \"Thanks for\nsubscribing to LJWorld.com alerts.\" Same goes for the email's message body.\n\nNote that an even more flexible (but more heavyweight) way of doing this would\nbe to use Django's template system. Assuming Lawrence.com and LJWorld.com have\ndifferent template directories (:setting:`TEMPLATE_DIRS`), you could simply\nfarm out to the template system like so::\n\n    from django.core.mail import send_mail\n    from django.template import loader, Context\n\n    def register_for_newsletter(request):\n        # Check form values, etc., and subscribe the user.\n        # ...\n\n        subject = loader.get_template('alerts/subject.txt').render(Context({}))\n        message = loader.get_template('alerts/message.txt').render(Context({}))\n        send_mail(subject, message, 'editor@ljworld.com', [user.email])\n\n        # ...\n\nIn this case, you'd have to create :file:`subject.txt` and :file:`message.txt`\ntemplate files for both the LJWorld.com and Lawrence.com template directories.\nThat gives you more flexibility, but it's also more complex.\n\nIt's a good idea to exploit the :class:`~django.contrib.sites.models.Site`\nobjects as much as possible, to remove unneeded complexity and redundancy.\n\nGetting the current domain for full URLs\n----------------------------------------\n\nDjango's ``get_absolute_url()`` convention is nice for getting your objects'\nURL without the domain name, but in some cases you might want to display the\nfull URL -- with ``http://`` and the domain and everything -- for an object.\nTo do this, you can use the sites framework. A simple example::\n\n    >>> from django.contrib.sites.models import Site\n    >>> obj = MyModel.objects.get(id=3)\n    >>> obj.get_absolute_url()\n    '/mymodel/objects/3/'\n    >>> Site.objects.get_current().domain\n    'example.com'\n    >>> 'http://%s%s' % (Site.objects.get_current().domain, obj.get_absolute_url())\n    'http://example.com/mymodel/objects/3/'\n\n.. _enabling-the-sites-framework:\n\nDefault site and ``syncdb``\n===========================\n\n``django.contrib.sites`` registers a\n:data:`~django.db.models.signals.post_syncdb` signal handler which creates a\ndefault site named ``example.com`` with the domain ``example.com``. For\nexample, this site will be created after Django creates the test database.\n\nCaching the current ``Site`` object\n===================================\n\nAs the current site is stored in the database, each call to\n``Site.objects.get_current()`` could result in a database query. But Django is a\nlittle cleverer than that: on the first request, the current site is cached, and\nany subsequent call returns the cached data instead of hitting the database.\n\nIf for any reason you want to force a database query, you can tell Django to\nclear the cache using ``Site.objects.clear_cache()``::\n\n    # First call; current site fetched from database.\n    current_site = Site.objects.get_current()\n    # ...\n\n    # Second call; current site fetched from cache.\n    current_site = Site.objects.get_current()\n    # ...\n\n    # Force a database query for the third call.\n    Site.objects.clear_cache()\n    current_site = Site.objects.get_current()\n\n.. currentmodule:: django.contrib.sites.managers\n\nThe ``CurrentSiteManager``\n==========================\n\n.. class:: CurrentSiteManager\n\nIf :class:`~django.contrib.sites.models.Site` plays a key role in your\napplication, consider using the helpful\n:class:`~django.contrib.sites.managers.CurrentSiteManager` in your\nmodel(s). It's a model :doc:`manager </topics/db/managers>` that\nautomatically filters its queries to include only objects associated\nwith the current :class:`~django.contrib.sites.models.Site`.\n\nUse :class:`~django.contrib.sites.managers.CurrentSiteManager` by adding it to\nyour model explicitly. For example::\n\n    from django.db import models\n    from django.contrib.sites.models import Site\n    from django.contrib.sites.managers import CurrentSiteManager\n\n    class Photo(models.Model):\n        photo = models.FileField(upload_to='/home/photos')\n        photographer_name = models.CharField(max_length=100)\n        pub_date = models.DateField()\n        site = models.ForeignKey(Site)\n        objects = models.Manager()\n        on_site = CurrentSiteManager()\n\nWith this model, ``Photo.objects.all()`` will return all ``Photo`` objects in\nthe database, but ``Photo.on_site.all()`` will return only the ``Photo`` objects\nassociated with the current site, according to the :setting:`SITE_ID` setting.\n\nPut another way, these two statements are equivalent::\n\n    Photo.objects.filter(site=settings.SITE_ID)\n    Photo.on_site.all()\n\nHow did :class:`~django.contrib.sites.managers.CurrentSiteManager`\nknow which field of ``Photo`` was the\n:class:`~django.contrib.sites.models.Site`? By default,\n:class:`~django.contrib.sites.managers.CurrentSiteManager` looks for a\neither a :class:`~django.db.models.ForeignKey` called\n``site`` or a\n:class:`~django.db.models.ManyToManyField` called\n``sites`` to filter on. If you use a field named something other than\n``site`` or ``sites`` to identify which\n:class:`~django.contrib.sites.models.Site` objects your object is\nrelated to, then you need to explicitly pass the custom field name as\na parameter to\n:class:`~django.contrib.sites.managers.CurrentSiteManager` on your\nmodel. The following model, which has a field called ``publish_on``,\ndemonstrates this::\n\n    from django.db import models\n    from django.contrib.sites.models import Site\n    from django.contrib.sites.managers import CurrentSiteManager\n\n    class Photo(models.Model):\n        photo = models.FileField(upload_to='/home/photos')\n        photographer_name = models.CharField(max_length=100)\n        pub_date = models.DateField()\n        publish_on = models.ForeignKey(Site)\n        objects = models.Manager()\n        on_site = CurrentSiteManager('publish_on')\n\nIf you attempt to use :class:`~django.contrib.sites.managers.CurrentSiteManager`\nand pass a field name that doesn't exist, Django will raise a ``ValueError``.\n\nFinally, note that you'll probably want to keep a normal\n(non-site-specific) ``Manager`` on your model, even if you use\n:class:`~django.contrib.sites.managers.CurrentSiteManager`. As\nexplained in the :doc:`manager documentation </topics/db/managers>`, if\nyou define a manager manually, then Django won't create the automatic\n``objects = models.Manager()`` manager for you. Also note that certain\nparts of Django -- namely, the Django admin site and generic views --\nuse whichever manager is defined *first* in the model, so if you want\nyour admin site to have access to all objects (not just site-specific\nones), put ``objects = models.Manager()`` in your model, before you\ndefine :class:`~django.contrib.sites.managers.CurrentSiteManager`.\n\nHow Django uses the sites framework\n===================================\n\nAlthough it's not required that you use the sites framework, it's strongly\nencouraged, because Django takes advantage of it in a few places. Even if your\nDjango installation is powering only a single site, you should take the two\nseconds to create the site object with your ``domain`` and ``name``, and point\nto its ID in your :setting:`SITE_ID` setting.\n\nHere's how Django uses the sites framework:\n\n* In the :mod:`redirects framework <django.contrib.redirects>`, each\n  redirect object is associated with a particular site. When Django searches\n  for a redirect, it takes into account the current site.\n\n* In the comments framework, each comment is associated with a particular\n  site. When a comment is posted, its\n  :class:`~django.contrib.sites.models.Site` is set to the current site,\n  and when comments are listed via the appropriate template tag, only the\n  comments for the current site are displayed.\n\n* In the :mod:`flatpages framework <django.contrib.flatpages>`, each\n  flatpage is associated with a particular site. When a flatpage is created,\n  you specify its :class:`~django.contrib.sites.models.Site`, and the\n  :class:`~django.contrib.flatpages.middleware.FlatpageFallbackMiddleware`\n  checks the current site in retrieving flatpages to display.\n\n* In the :mod:`syndication framework <django.contrib.syndication>`, the\n  templates for ``title`` and ``description`` automatically have access to a\n  variable ``{{ site }}``, which is the\n  :class:`~django.contrib.sites.models.Site` object representing the current\n  site. Also, the hook for providing item URLs will use the ``domain`` from\n  the current :class:`~django.contrib.sites.models.Site` object if you don't\n  specify a fully-qualified domain.\n\n* In the :mod:`authentication framework <django.contrib.auth>`, the\n  :func:`django.contrib.auth.views.login` view passes the current\n  :class:`~django.contrib.sites.models.Site` name to the template as\n  ``{{ site_name }}``.\n\n* The shortcut view (``django.views.defaults.shortcut``) uses the domain\n  of the current :class:`~django.contrib.sites.models.Site` object when\n  calculating an object's URL.\n\n* In the admin framework, the \"view on site\" link uses the current\n  :class:`~django.contrib.sites.models.Site` to work out the domain for the\n  site that it will redirect to.\n\n.. currentmodule:: django.contrib.sites.models\n\n``RequestSite`` objects\n=======================\n\n.. _requestsite-objects:\n\nSome :doc:`django.contrib </ref/contrib/index>` applications take advantage of\nthe sites framework but are architected in a way that doesn't *require* the\nsites framework to be installed in your database. (Some people don't want to, or\njust aren't *able* to install the extra database table that the sites framework\nrequires.) For those cases, the framework provides a\n:class:`~django.contrib.sites.models.RequestSite` class, which can be used as a\nfallback when the database-backed sites framework is not available.\n\n.. class:: RequestSite\n\n    A class that shares the primary interface of\n    :class:`~django.contrib.sites.models.Site` (i.e., it has\n    ``domain`` and ``name`` attributes) but gets its data from a Django\n    :class:`~django.http.HttpRequest` object rather than from a database.\n\n    The ``save()`` and ``delete()`` methods raise ``NotImplementedError``.\n\n    .. method:: __init__(request)\n\n        Sets the ``name`` and ``domain`` attributes to the value of\n        :meth:`~django.http.HttpRequest.get_host`.\n\n\nA :class:`~django.contrib.sites.models.RequestSite` object has a similar\ninterface to a normal :class:`~django.contrib.sites.models.Site` object, except\nits :meth:`~django.contrib.sites.models.RequestSite.__init__()` method takes an\n:class:`~django.http.HttpRequest` object. It's able to deduce the\n``domain`` and ``name`` by looking at the request's domain. It has ``save()``\nand ``delete()`` methods to match the interface of\n:class:`~django.contrib.sites.models.Site`, but the methods raise\n``NotImplementedError``.\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/contrib/staticfiles.txt",
    "content": "===================\nThe staticfiles app\n===================\n\n.. module:: django.contrib.staticfiles\n   :synopsis: An app for handling static files.\n\n``django.contrib.staticfiles`` collects static files from each of your\napplications (and any other places you specify) into a single location that\ncan easily be served in production.\n\n.. seealso::\n\n    For an introduction to the static files app and some usage examples, see\n    :doc:`/howto/static-files`.\n\n.. _staticfiles-settings:\n\nSettings\n========\n\n.. highlight:: python\n\n.. note::\n\n    The following settings control the behavior of the staticfiles app.\n\n.. setting:: STATICFILES_DIRS\n\nSTATICFILES_DIRS\n----------------\n\nDefault: ``[]``\n\nThis setting defines the additional locations the staticfiles app will traverse\nif the ``FileSystemFinder`` finder is enabled, e.g. if you use the\n:djadmin:`collectstatic` or :djadmin:`findstatic` management command or use the\nstatic file serving view.\n\nThis should be set to a list or tuple of strings that contain full paths to\nyour additional files directory(ies) e.g.::\n\n    STATICFILES_DIRS = (\n        \"/home/special.polls.com/polls/static\",\n        \"/home/polls.com/polls/static\",\n        \"/opt/webfiles/common\",\n    )\n\nPrefixes (optional)\n\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n\nIn case you want to refer to files in one of the locations with an additional\nnamespace, you can **optionally** provide a prefix as ``(prefix, path)``\ntuples, e.g.::\n\n    STATICFILES_DIRS = (\n        # ...\n        (\"downloads\", \"/opt/webfiles/stats\"),\n    )\n\nExample:\n\nAssuming you have :setting:`STATIC_URL` set ``'/static/'``, the\n:djadmin:`collectstatic` management command would collect the \"stats\" files\nin a ``'downloads'`` subdirectory of :setting:`STATIC_ROOT`.\n\nThis would allow you to refer to the local file\n``'/opt/webfiles/stats/polls_20101022.tar.gz'`` with\n``'/static/downloads/polls_20101022.tar.gz'`` in your templates, e.g.:\n\n.. code-block:: html+django\n\n    <a href=\"{{ STATIC_URL }}downloads/polls_20101022.tar.gz\">\n\n.. setting:: STATICFILES_STORAGE\n\nSTATICFILES_STORAGE\n-------------------\n\nDefault: ``'django.contrib.staticfiles.storage.StaticFilesStorage'``\n\nThe file storage engine to use when collecting static files with the\n:djadmin:`collectstatic` management command.\n\n.. versionadded:: 1.4\n\nA ready-to-use instance of the storage backend defined in this setting\ncan be found at ``django.contrib.staticfiles.storage.staticfiles_storage``.\n\nFor an example, see :ref:`staticfiles-from-cdn`.\n\n.. setting:: STATICFILES_FINDERS\n\nSTATICFILES_FINDERS\n-------------------\n\nDefault::\n\n    (\"django.contrib.staticfiles.finders.FileSystemFinder\",\n     \"django.contrib.staticfiles.finders.AppDirectoriesFinder\")\n\nThe list of finder backends that know how to find static files in\nvarious locations.\n\nThe default will find files stored in the :setting:`STATICFILES_DIRS` setting\n(using ``django.contrib.staticfiles.finders.FileSystemFinder``) and in a\n``static`` subdirectory of each app (using\n``django.contrib.staticfiles.finders.AppDirectoriesFinder``)\n\nOne finder is disabled by default:\n``django.contrib.staticfiles.finders.DefaultStorageFinder``. If added to\nyour :setting:`STATICFILES_FINDERS` setting, it will look for static files in\nthe default file storage as defined by the :setting:`DEFAULT_FILE_STORAGE`\nsetting.\n\n.. note::\n\n    When using the ``AppDirectoriesFinder`` finder, make sure your apps\n    can be found by staticfiles. Simply add the app to the\n    :setting:`INSTALLED_APPS` setting of your site.\n\nStatic file finders are currently considered a private interface, and this\ninterface is thus undocumented.\n\nManagement Commands\n===================\n\n.. highlight:: console\n\n``django.contrib.staticfiles`` exposes three management commands.\n\ncollectstatic\n-------------\n\n.. django-admin:: collectstatic\n\nCollects the static files into :setting:`STATIC_ROOT`.\n\nDuplicate file names are by default resolved in a similar way to how template\nresolution works: the file that is first found in one of the specified\nlocations will be used. If you're confused, the :djadmin:`findstatic` command\ncan help show you which files are found.\n\nFiles are searched by using the :setting:`enabled finders\n<STATICFILES_FINDERS>`. The default is to look in all locations defined in\n:setting:`STATICFILES_DIRS` and in the ``'static'`` directory of apps\nspecified by the :setting:`INSTALLED_APPS` setting.\n\n.. versionadded:: 1.4\n\nThe :djadmin:`collectstatic` management command calls the\n:meth:`~django.contrib.staticfiles.storage.StaticFilesStorage.post_process`\nmethod of the :setting:`STATICFILES_STORAGE` after each run and passes\na list of paths that have been found by the management command. It also\nreceives all command line options of :djadmin:`collectstatic`. This is used\nby the :class:`~django.contrib.staticfiles.storage.CachedStaticFilesStorage`\nby default.\n\nSome commonly used options are:\n\n.. django-admin-option:: --noinput\n\n    Do NOT prompt the user for input of any kind.\n\n.. django-admin-option:: -i <pattern>\n.. django-admin-option:: --ignore <pattern>\n\n    Ignore files or directories matching this glob-style pattern. Use multiple\n    times to ignore more.\n\n.. django-admin-option:: -n\n.. django-admin-option:: --dry-run\n\n    Do everything except modify the filesystem.\n\n.. django-admin-option:: -c\n.. django-admin-option:: --clear\n\n    .. versionadded:: 1.4\n\n    Clear the existing files before trying to copy or link the original file.\n\n.. django-admin-option:: -l\n.. django-admin-option:: --link\n\n    Create a symbolic link to each file instead of copying.\n\n.. django-admin-option:: --no-post-process\n\n    .. versionadded:: 1.4\n\n    Don't call the\n    :meth:`~django.contrib.staticfiles.storage.StaticFilesStorage.post_process`\n    method of the configured :setting:`STATICFILES_STORAGE` storage backend.\n\n.. django-admin-option:: --no-default-ignore\n\n    Don't ignore the common private glob-style patterns ``'CVS'``, ``'.*'``\n    and ``'*~'``.\n\nFor a full list of options, refer to the commands own help by running::\n\n   $ python manage.py collectstatic --help\n\nfindstatic\n----------\n\n.. django-admin:: findstatic\n\nSearches for one or more relative paths with the enabled finders.\n\nFor example::\n\n   $ python manage.py findstatic css/base.css admin/js/core.js\n   /home/special.polls.com/core/static/css/base.css\n   /home/polls.com/core/static/css/base.css\n   /home/polls.com/src/django/contrib/admin/media/js/core.js\n\nBy default, all matching locations are found. To only return the first match\nfor each relative path, use the ``--first`` option::\n\n   $ python manage.py findstatic css/base.css --first\n   /home/special.polls.com/core/static/css/base.css\n\nThis is a debugging aid; it'll show you exactly which static file will be\ncollected for a given path.\n\n.. _staticfiles-runserver:\n\nrunserver\n---------\n\n.. django-admin:: runserver\n\nOverrides the core :djadmin:`runserver` command if the ``staticfiles`` app\nis :setting:`installed<INSTALLED_APPS>` and adds automatic serving of static\nfiles and the following new options.\n\n.. django-admin-option:: --nostatic\n\nUse the ``--nostatic`` option to disable serving of static files with the\n:doc:`staticfiles </ref/contrib/staticfiles>` app entirely. This option is\nonly available if the :doc:`staticfiles </ref/contrib/staticfiles>` app is\nin your project's :setting:`INSTALLED_APPS` setting.\n\nExample usage::\n\n    django-admin.py runserver --nostatic\n\n.. django-admin-option:: --insecure\n\nUse the ``--insecure`` option to force serving of static files with the\n:doc:`staticfiles </ref/contrib/staticfiles>` app even if the :setting:`DEBUG`\nsetting is ``False``. By using this you acknowledge the fact that it's\n**grossly inefficient** and probably **insecure**. This is only intended for\nlocal development, should **never be used in production** and is only\navailable if the :doc:`staticfiles </ref/contrib/staticfiles>` app is\nin your project's :setting:`INSTALLED_APPS` setting.\n\nExample usage::\n\n    django-admin.py runserver --insecure\n\nStorages\n========\n\nStaticFilesStorage\n------------------\n\n.. class:: storage.StaticFilesStorage\n\n    A subclass of the :class:`~django.core.files.storage.FileSystemStorage`\n    storage backend that uses the :setting:`STATIC_ROOT` setting as the base\n    file system location and the :setting:`STATIC_URL` setting respectively\n    as the base URL.\n\n    .. method:: post_process(paths, **options)\n\n    .. versionadded:: 1.4\n\n    This method is called by the :djadmin:`collectstatic` management command\n    after each run and gets passed the local storages and paths of found\n    files as a dictionary, as well as the command line options.\n\n    The :class:`~django.contrib.staticfiles.storage.CachedStaticFilesStorage`\n    uses this behind the scenes to replace the paths with their hashed\n    counterparts and update the cache appropriately.\n\nCachedStaticFilesStorage\n------------------------\n\n.. class:: storage.CachedStaticFilesStorage\n\n    .. versionadded:: 1.4\n\n    A subclass of the :class:`~django.contrib.staticfiles.storage.StaticFilesStorage`\n    storage backend which caches the files it saves by appending the MD5 hash\n    of the file's content to the filename. For example, the file\n    ``css/styles.css`` would also be saved as ``css/styles.55e7cbb9ba48.css``.\n\n    The purpose of this storage is to keep serving the old files in case some\n    pages still refer to those files, e.g. because they are cached by you or\n    a 3rd party proxy server. Additionally, it's very helpful if you want to\n    apply `far future Expires headers`_ to the deployed files to speed up the\n    load time for subsequent page visits.\n\n    The storage backend automatically replaces the paths found in the saved\n    files matching other saved files with the path of the cached copy (using\n    the :meth:`~django.contrib.staticfiles.storage.StaticFilesStorage.post_process`\n    method). The regular expressions used to find those paths\n    (``django.contrib.staticfiles.storage.CachedStaticFilesStorage.cached_patterns``)\n    by default cover the `@import`_ rule and `url()`_ statement of `Cascading\n    Style Sheets`_. For example, the ``'css/styles.css'`` file with the\n    content\n\n    .. code-block:: css+django\n\n        @import url(\"../admin/css/base.css\");\n\n    would be replaced by calling the\n    :meth:`~django.core.files.storage.Storage.url`\n    method of the ``CachedStaticFilesStorage`` storage backend, ultimatively\n    saving a ``'css/styles.55e7cbb9ba48.css'`` file with the following\n    content:\n\n    .. code-block:: css+django\n\n        @import url(\"../admin/css/base.27e20196a850.css\");\n\n    To enable the ``CachedStaticFilesStorage`` you have to make sure the\n    following requirements are met:\n\n    * the :setting:`STATICFILES_STORAGE` setting is set to\n      ``'django.contrib.staticfiles.storage.CachedStaticFilesStorage'``\n    * the :setting:`DEBUG` setting is set to ``False``\n    * you use the ``staticfiles`` :ttag:`static<staticfiles-static>` template\n      tag to refer to your static files in your templates\n    * you've collected all your static files by using the\n      :djadmin:`collectstatic` management command\n\n    Since creating the MD5 hash can be a performance burden to your website\n    during runtime, ``staticfiles`` will automatically try to cache the\n    hashed name for each file path using Django's :doc:`caching\n    framework</topics/cache>`. If you want to override certain options of the\n    cache backend the storage uses, simply specify a custom entry in the\n    :setting:`CACHES` setting named ``'staticfiles'``. It falls back to using\n    the ``'default'`` cache backend.\n\n    .. method:: file_hash(name, content=None)\n\n    .. versionadded:: 1.5\n\n    The method that is used when creating the hashed name of a file.\n    Needs to return a hash for the given file name and content.\n    By default it calculates a MD5 hash from the content's chunks as\n    mentioned above.\n\n.. _`far future Expires headers`: http://developer.yahoo.com/performance/rules.html#expires\n.. _`@import`: http://www.w3.org/TR/CSS2/cascade.html#at-import\n.. _`url()`: http://www.w3.org/TR/CSS2/syndata.html#uri\n.. _`Cascading Style Sheets`: http://www.w3.org/Style/CSS/\n\n.. currentmodule:: django.contrib.staticfiles.templatetags.staticfiles\n\nTemplate tags\n=============\n\nstatic\n------\n\n.. templatetag:: staticfiles-static\n\n.. versionadded:: 1.4\n\nUses the configured :setting:`STATICFILES_STORAGE` storage to create the\nfull URL for the given relative path, e.g.:\n\n.. code-block:: html+django\n\n    {% load static from staticfiles %}\n    <img src=\"{% static \"images/hi.jpg\" %}\" alt=\"Hi!\" />\n\nThe previous example is equal to calling the ``url`` method of an instance of\n:setting:`STATICFILES_STORAGE` with ``\"images/hi.jpg\"``. This is especially\nuseful when using a non-local storage backend to deploy files as documented\nin :ref:`staticfiles-from-cdn`.\n\n.. versionadded:: 1.5\n\nIf you'd like to retrieve a static URL without displaying it, you can use a\nslightly different call:\n\n.. code-block:: html+django\n\n    {% load static from staticfiles %}\n    {% static \"images/hi.jpg\" as myphoto %}\n    <img src=\"{{ myphoto }}\" alt=\"Hi!\" />\n\nOther Helpers\n=============\n\nThere are a few other helpers outside of the\n:mod:`staticfiles <django.contrib.staticfiles>` app to work with static\nfiles:\n\n- The :func:`django.core.context_processors.static` context processor\n  which adds :setting:`STATIC_URL` to every template context rendered\n  with :class:`~django.template.RequestContext` contexts.\n\n- The builtin template tag :ttag:`static` which takes a path and\n  urljoins it with the static prefix :setting:`STATIC_URL`.\n\n- The builtin template tag :ttag:`get_static_prefix` which populates a\n  template variable with the static prefix :setting:`STATIC_URL` to be\n  used as a variable or directly.\n\n- The similar template tag :ttag:`get_media_prefix` which works like\n  :ttag:`get_static_prefix` but uses :setting:`MEDIA_URL`.\n\n.. _staticfiles-development-view:\n\nStatic file development view\n----------------------------\n\n.. highlight:: python\n\n.. function:: django.contrib.staticfiles.views.serve(request, path)\n\nThis view function serves static files in development.\n\n.. warning::\n\n    This view will only work if :setting:`DEBUG` is ``True``.\n\n    That's because this view is **grossly inefficient** and probably\n    **insecure**. This is only intended for local development, and should\n    **never be used in production**.\n\nThis view is automatically enabled by :djadmin:`runserver` (with a\n:setting:`DEBUG` setting set to ``True``). To use the view with a different\nlocal development server, add the following snippet to the end of your\nprimary URL configuration::\n\n   from django.conf import settings\n\n   if settings.DEBUG:\n       urlpatterns += patterns('django.contrib.staticfiles.views',\n           url(r'^static/(?P<path>.*)$', 'serve'),\n       )\n\nNote, the beginning of the pattern (``r'^static/'``) should be your\n:setting:`STATIC_URL` setting.\n\nSince this is a bit finicky, there's also a helper function that'll do this for you:\n\n.. function:: django.contrib.staticfiles.urls.staticfiles_urlpatterns()\n\nThis will return the proper URL pattern for serving static files to your\nalready defined pattern list. Use it like this::\n\n   from django.contrib.staticfiles.urls import staticfiles_urlpatterns\n\n   # ... the rest of your URLconf here ...\n\n   urlpatterns += staticfiles_urlpatterns()\n\n.. warning::\n\n    This helper function will only work if :setting:`DEBUG` is ``True``\n    and your :setting:`STATIC_URL` setting is neither empty nor a full\n    URL such as ``http://static.example.com/``.\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/contrib/syndication.txt",
    "content": "==============================\nThe syndication feed framework\n==============================\n\n.. module:: django.contrib.syndication\n   :synopsis: A framework for generating syndication feeds, in RSS and Atom,\n              quite easily.\n\nDjango comes with a high-level syndication-feed-generating framework\nthat makes creating RSS_ and Atom_ feeds easy.\n\nTo create any syndication feed, all you have to do is write a short\nPython class. You can create as many feeds as you want.\n\nDjango also comes with a lower-level feed-generating API. Use this if\nyou want to generate feeds outside of a Web context, or in some other\nlower-level way.\n\n.. _RSS: http://www.whatisrss.com/\n.. _Atom: http://www.atomenabled.org/\n\nThe high-level framework\n========================\n\nOverview\n--------\n\nThe high-level feed-generating framework is supplied by the\n:class:`~django.contrib.syndication.views.Feed` class. To create a\nfeed, write a :class:`~django.contrib.syndication.views.Feed` class\nand point to an instance of it in your :doc:`URLconf\n</topics/http/urls>`.\n\nFeed classes\n------------\n\nA :class:`~django.contrib.syndication.views.Feed` class is a Python\nclass that represents a syndication feed. A feed can be simple (e.g.,\na \"site news\" feed, or a basic feed displaying the latest entries of a\nblog) or more complex (e.g., a feed displaying all the blog entries in\na particular category, where the category is variable).\n\nFeed classes subclass :class:`django.contrib.syndication.views.Feed`.\nThey can live anywhere in your codebase.\n\nInstances of :class:`~django.contrib.syndication.views.Feed` classes\nare views which can be used in your :doc:`URLconf </topics/http/urls>`.\n\nA simple example\n----------------\n\nThis simple example, taken from `chicagocrime.org`_, describes a feed of the\nlatest five news items::\n\n    from django.contrib.syndication.views import Feed\n    from django.core.urlresolvers import reverse\n    from chicagocrime.models import NewsItem\n\n    class LatestEntriesFeed(Feed):\n        title = \"Chicagocrime.org site news\"\n        link = \"/sitenews/\"\n        description = \"Updates on changes and additions to chicagocrime.org.\"\n\n        def items(self):\n            return NewsItem.objects.order_by('-pub_date')[:5]\n\n        def item_title(self, item):\n            return item.title\n\n        def item_description(self, item):\n            return item.description\n\n        # item_link is only needed if NewsItem has no get_absolute_url method.\n        def item_link(self, item):\n            return reverse('news-item', args=[item.pk])\n\nTo connect a URL to this feed, put an instance of the Feed object in\nyour :doc:`URLconf </topics/http/urls>`. For example::\n\n    from django.conf.urls import patterns\n    from myproject.feeds import LatestEntriesFeed\n\n    urlpatterns = patterns('',\n        # ...\n        (r'^latest/feed/$', LatestEntriesFeed()),\n        # ...\n    )\n\nNote:\n\n* The Feed class subclasses :class:`django.contrib.syndication.views.Feed`.\n\n* ``title``, ``link`` and ``description`` correspond to the\n  standard RSS ``<title>``, ``<link>`` and ``<description>`` elements,\n  respectively.\n\n* ``items()`` is, simply, a method that returns a list of objects that\n  should be included in the feed as ``<item>`` elements. Although this\n  example returns ``NewsItem`` objects using Django's\n  :doc:`object-relational mapper </ref/models/querysets>`, ``items()``\n  doesn't have to return model instances. Although you get a few bits of\n  functionality \"for free\" by using Django models, ``items()`` can\n  return any type of object you want.\n\n* If you're creating an Atom feed, rather than an RSS feed, set the\n  ``subtitle`` attribute instead of the ``description`` attribute.\n  See `Publishing Atom and RSS feeds in tandem`_, later, for an example.\n\nOne thing is left to do. In an RSS feed, each ``<item>`` has a ``<title>``,\n``<link>`` and ``<description>``. We need to tell the framework what data to put\ninto those elements.\n\n* For the contents of ``<title>`` and ``<description>``, Django tries\n  calling the methods ``item_title()`` and ``item_description()`` on\n  the :class:`~django.contrib.syndication.views.Feed` class. They are passed\n  a single parameter, ``item``, which is the object itself. These are\n  optional; by default, the unicode representation of the object is used for\n  both.\n\n  If you want to do any special formatting for either the title or\n  description, :doc:`Django templates </topics/templates>` can be used\n  instead. Their paths can be specified with the ``title_template`` and\n  ``description_template`` attributes on the\n  :class:`~django.contrib.syndication.views.Feed` class. The templates are\n  rendered for each item and are passed two template context variables:\n\n  * ``{{ obj }}`` -- The current object (one of whichever objects you\n    returned in ``items()``).\n\n  * ``{{ site }}`` -- A :class:`django.contrib.sites.models.Site` object\n    representing the current site. This is useful for ``{{ site.domain\n    }}`` or ``{{ site.name }}``. If you do *not* have the Django sites\n    framework installed, this will be set to a\n    :class:`django.contrib.sites.models.RequestSite` object. See the\n    :ref:`RequestSite section of the sites framework documentation\n    <requestsite-objects>` for more.\n\n  See `a complex example`_ below that uses a description template.\n\n* To specify the contents of ``<link>``, you have two options. For each item\n  in ``items()``, Django first tries calling the\n  ``item_link()`` method on the\n  :class:`~django.contrib.syndication.views.Feed` class. In a similar way to\n  the title and description, it is passed it a single parameter,\n  ``item``. If that method doesn't exist, Django tries executing a\n  ``get_absolute_url()`` method on that object. Both\n  ``get_absolute_url()`` and ``item_link()`` should return the\n  item's URL as a normal Python string. As with ``get_absolute_url()``, the\n  result of ``item_link()`` will be included directly in the URL, so you\n  are responsible for doing all necessary URL quoting and conversion to\n  ASCII inside the method itself.\n\n.. _chicagocrime.org: http://www.chicagocrime.org/\n\nA complex example\n-----------------\n\nThe framework also supports more complex feeds, via arguments.\n\nFor example, `chicagocrime.org`_ offers an RSS feed of recent crimes for every\npolice beat in Chicago. It'd be silly to create a separate\n:class:`~django.contrib.syndication.views.Feed` class for each police beat; that\nwould violate the :ref:`DRY principle <dry>` and would couple data to\nprogramming logic. Instead, the syndication framework lets you access the\narguments passed from your :doc:`URLconf </topics/http/urls>` so feeds can output\nitems based on information in the feed's URL.\n\nOn chicagocrime.org, the police-beat feeds are accessible via URLs like this:\n\n* :file:`/beats/613/rss/` -- Returns recent crimes for beat 613.\n* :file:`/beats/1424/rss/` -- Returns recent crimes for beat 1424.\n\nThese can be matched with a :doc:`URLconf </topics/http/urls>` line such as::\n\n    (r'^beats/(?P<beat_id>\\d+)/rss/$', BeatFeed()),\n\nLike a view, the arguments in the URL are passed to the ``get_object()``\nmethod along with the request object.\n\nHere's the code for these beat-specific feeds::\n\n    from django.contrib.syndication.views import FeedDoesNotExist\n    from django.shortcuts import get_object_or_404\n\n    class BeatFeed(Feed):\n        description_template = 'feeds/beat_description.html'\n\n        def get_object(self, request, beat_id):\n            return get_object_or_404(Beat, pk=beat_id)\n\n        def title(self, obj):\n            return \"Chicagocrime.org: Crimes for beat %s\" % obj.beat\n\n        def link(self, obj):\n            return obj.get_absolute_url()\n\n        def description(self, obj):\n            return \"Crimes recently reported in police beat %s\" % obj.beat\n\n        def items(self, obj):\n            return Crime.objects.filter(beat=obj).order_by('-crime_date')[:30]\n\nTo generate the feed's ``<title>``, ``<link>`` and ``<description>``, Django\nuses the ``title()``, ``link()`` and ``description()`` methods. In\nthe previous example, they were simple string class attributes, but this example\nillustrates that they can be either strings *or* methods. For each of\n``title``, ``link`` and ``description``, Django follows this\nalgorithm:\n\n* First, it tries to call a method, passing the ``obj`` argument, where\n  ``obj`` is the object returned by ``get_object()``.\n\n* Failing that, it tries to call a method with no arguments.\n\n* Failing that, it uses the class attribute.\n\nAlso note that ``items()`` also follows the same algorithm -- first, it\ntries ``items(obj)``, then ``items()``, then finally an ``items``\nclass attribute (which should be a list).\n\nWe are using a template for the item descriptions. It can be very simple:\n\n.. code-block:: html+django\n\n    {{ obj.description }}\n\nHowever, you are free to add formatting as desired.\n\nThe ``ExampleFeed`` class below gives full documentation on methods and\nattributes of :class:`~django.contrib.syndication.views.Feed` classes.\n\nSpecifying the type of feed\n---------------------------\n\nBy default, feeds produced in this framework use RSS 2.0.\n\nTo change that, add a ``feed_type`` attribute to your\n:class:`~django.contrib.syndication.views.Feed` class, like so::\n\n    from django.utils.feedgenerator import Atom1Feed\n\n    class MyFeed(Feed):\n        feed_type = Atom1Feed\n\nNote that you set ``feed_type`` to a class object, not an instance.\n\nCurrently available feed types are:\n\n* :class:`django.utils.feedgenerator.Rss201rev2Feed` (RSS 2.01. Default.)\n* :class:`django.utils.feedgenerator.RssUserland091Feed` (RSS 0.91.)\n* :class:`django.utils.feedgenerator.Atom1Feed` (Atom 1.0.)\n\nEnclosures\n----------\n\nTo specify enclosures, such as those used in creating podcast feeds, use the\n``item_enclosure_url``, ``item_enclosure_length`` and\n``item_enclosure_mime_type`` hooks. See the ``ExampleFeed`` class below for\nusage examples.\n\nLanguage\n--------\n\nFeeds created by the syndication framework automatically include the\nappropriate ``<language>`` tag (RSS 2.0) or ``xml:lang`` attribute (Atom). This\ncomes directly from your :setting:`LANGUAGE_CODE` setting.\n\nURLs\n----\n\nThe ``link`` method/attribute can return either an absolute path (e.g.\n:file:`\"/blog/\"`) or a URL with the fully-qualified domain and protocol (e.g.\n``\"http://www.example.com/blog/\"``). If ``link`` doesn't return the domain,\nthe syndication framework will insert the domain of the current site, according\nto your :setting:`SITE_ID setting <SITE_ID>`.\n\nAtom feeds require a ``<link rel=\"self\">`` that defines the feed's current\nlocation. The syndication framework populates this automatically, using the\ndomain of the current site according to the :setting:`SITE_ID` setting.\n\nPublishing Atom and RSS feeds in tandem\n---------------------------------------\n\nSome developers like to make available both Atom *and* RSS versions of their\nfeeds. That's easy to do with Django: Just create a subclass of your\n:class:`~django.contrib.syndication.views.Feed`\nclass and set the ``feed_type`` to something different. Then update your\nURLconf to add the extra versions.\n\nHere's a full example::\n\n    from django.contrib.syndication.views import Feed\n    from chicagocrime.models import NewsItem\n    from django.utils.feedgenerator import Atom1Feed\n\n    class RssSiteNewsFeed(Feed):\n        title = \"Chicagocrime.org site news\"\n        link = \"/sitenews/\"\n        description = \"Updates on changes and additions to chicagocrime.org.\"\n\n        def items(self):\n            return NewsItem.objects.order_by('-pub_date')[:5]\n\n    class AtomSiteNewsFeed(RssSiteNewsFeed):\n        feed_type = Atom1Feed\n        subtitle = RssSiteNewsFeed.description\n\n.. Note::\n    In this example, the RSS feed uses a ``description`` while the Atom\n    feed uses a ``subtitle``. That's because Atom feeds don't provide for\n    a feed-level \"description,\" but they *do* provide for a \"subtitle.\"\n\n    If you provide a ``description`` in your\n    :class:`~django.contrib.syndication.views.Feed` class, Django will *not*\n    automatically put that into the ``subtitle`` element, because a\n    subtitle and description are not necessarily the same thing. Instead, you\n    should define a ``subtitle`` attribute.\n\n    In the above example, we simply set the Atom feed's ``subtitle`` to the\n    RSS feed's ``description``, because it's quite short already.\n\nAnd the accompanying URLconf::\n\n    from django.conf.urls import patterns\n    from myproject.feeds import RssSiteNewsFeed, AtomSiteNewsFeed\n\n    urlpatterns = patterns('',\n        # ...\n        (r'^sitenews/rss/$', RssSiteNewsFeed()),\n        (r'^sitenews/atom/$', AtomSiteNewsFeed()),\n        # ...\n    )\n\nFeed class reference\n--------------------\n\n.. class:: views.Feed\n\nThis example illustrates all possible attributes and methods for a\n:class:`~django.contrib.syndication.views.Feed` class::\n\n    from django.contrib.syndication.views import Feed\n    from django.utils import feedgenerator\n\n    class ExampleFeed(Feed):\n\n        # FEED TYPE -- Optional. This should be a class that subclasses\n        # django.utils.feedgenerator.SyndicationFeed. This designates\n        # which type of feed this should be: RSS 2.0, Atom 1.0, etc. If\n        # you don't specify feed_type, your feed will be RSS 2.0. This\n        # should be a class, not an instance of the class.\n\n        feed_type = feedgenerator.Rss201rev2Feed\n\n        # TEMPLATE NAMES -- Optional. These should be strings\n        # representing names of Django templates that the system should\n        # use in rendering the title and description of your feed items.\n        # Both are optional. If a template is not specified, the\n        # item_title() or item_description() methods are used instead.\n\n        title_template = None\n        description_template = None\n\n        # TITLE -- One of the following three is required. The framework\n        # looks for them in this order.\n\n        def title(self, obj):\n            \"\"\"\n            Takes the object returned by get_object() and returns the\n            feed's title as a normal Python string.\n            \"\"\"\n\n        def title(self):\n            \"\"\"\n            Returns the feed's title as a normal Python string.\n            \"\"\"\n\n        title = 'foo' # Hard-coded title.\n\n        # LINK -- One of the following three is required. The framework\n        # looks for them in this order.\n\n        def link(self, obj):\n            \"\"\"\n            # Takes the object returned by get_object() and returns the URL\n            # of the HTML version of the feed as a normal Python string.\n            \"\"\"\n\n        def link(self):\n            \"\"\"\n            Returns the URL of the HTML version of the feed as a normal Python\n            string.\n            \"\"\"\n\n        link = '/blog/' # Hard-coded URL.\n\n        # FEED_URL -- One of the following three is optional. The framework\n        # looks for them in this order.\n\n        def feed_url(self, obj):\n            \"\"\"\n            # Takes the object returned by get_object() and returns the feed's\n            # own URL as a normal Python string.\n            \"\"\"\n\n        def feed_url(self):\n            \"\"\"\n            Returns the feed's own URL as a normal Python string.\n            \"\"\"\n\n        feed_url = '/blog/rss/' # Hard-coded URL.\n\n        # GUID -- One of the following three is optional. The framework looks\n        # for them in this order. This property is only used for Atom feeds\n        # (where it is the feed-level ID element). If not provided, the feed\n        # link is used as the ID.\n\n        def feed_guid(self, obj):\n            \"\"\"\n            Takes the object returned by get_object() and returns the globally\n            unique ID for the feed as a normal Python string.\n            \"\"\"\n\n        def feed_guid(self):\n            \"\"\"\n            Returns the feed's globally unique ID as a normal Python string.\n            \"\"\"\n\n        feed_guid = '/foo/bar/1234' # Hard-coded guid.\n\n        # DESCRIPTION -- One of the following three is required. The framework\n        # looks for them in this order.\n\n        def description(self, obj):\n            \"\"\"\n            Takes the object returned by get_object() and returns the feed's\n            description as a normal Python string.\n            \"\"\"\n\n        def description(self):\n            \"\"\"\n            Returns the feed's description as a normal Python string.\n            \"\"\"\n\n        description = 'Foo bar baz.' # Hard-coded description.\n\n        # AUTHOR NAME --One of the following three is optional. The framework\n        # looks for them in this order.\n\n        def author_name(self, obj):\n            \"\"\"\n            Takes the object returned by get_object() and returns the feed's\n            author's name as a normal Python string.\n            \"\"\"\n\n        def author_name(self):\n            \"\"\"\n            Returns the feed's author's name as a normal Python string.\n            \"\"\"\n\n        author_name = 'Sally Smith' # Hard-coded author name.\n\n        # AUTHOR EMAIL --One of the following three is optional. The framework\n        # looks for them in this order.\n\n        def author_email(self, obj):\n            \"\"\"\n            Takes the object returned by get_object() and returns the feed's\n            author's email as a normal Python string.\n            \"\"\"\n\n        def author_email(self):\n            \"\"\"\n            Returns the feed's author's email as a normal Python string.\n            \"\"\"\n\n        author_email = 'test@example.com' # Hard-coded author email.\n\n        # AUTHOR LINK --One of the following three is optional. The framework\n        # looks for them in this order. In each case, the URL should include\n        # the \"http://\" and domain name.\n\n        def author_link(self, obj):\n            \"\"\"\n            Takes the object returned by get_object() and returns the feed's\n            author's URL as a normal Python string.\n            \"\"\"\n\n        def author_link(self):\n            \"\"\"\n            Returns the feed's author's URL as a normal Python string.\n            \"\"\"\n\n        author_link = 'http://www.example.com/' # Hard-coded author URL.\n\n        # CATEGORIES -- One of the following three is optional. The framework\n        # looks for them in this order. In each case, the method/attribute\n        # should return an iterable object that returns strings.\n\n        def categories(self, obj):\n            \"\"\"\n            Takes the object returned by get_object() and returns the feed's\n            categories as iterable over strings.\n            \"\"\"\n\n        def categories(self):\n            \"\"\"\n            Returns the feed's categories as iterable over strings.\n            \"\"\"\n\n        categories = (\"python\", \"django\") # Hard-coded list of categories.\n\n        # COPYRIGHT NOTICE -- One of the following three is optional. The\n        # framework looks for them in this order.\n\n        def feed_copyright(self, obj):\n            \"\"\"\n            Takes the object returned by get_object() and returns the feed's\n            copyright notice as a normal Python string.\n            \"\"\"\n\n        def feed_copyright(self):\n            \"\"\"\n            Returns the feed's copyright notice as a normal Python string.\n            \"\"\"\n\n        feed_copyright = 'Copyright (c) 2007, Sally Smith' # Hard-coded copyright notice.\n\n        # TTL -- One of the following three is optional. The framework looks\n        # for them in this order. Ignored for Atom feeds.\n\n        def ttl(self, obj):\n            \"\"\"\n            Takes the object returned by get_object() and returns the feed's\n            TTL (Time To Live) as a normal Python string.\n            \"\"\"\n\n        def ttl(self):\n            \"\"\"\n            Returns the feed's TTL as a normal Python string.\n            \"\"\"\n\n        ttl = 600 # Hard-coded Time To Live.\n\n        # ITEMS -- One of the following three is required. The framework looks\n        # for them in this order.\n\n        def items(self, obj):\n            \"\"\"\n            Takes the object returned by get_object() and returns a list of\n            items to publish in this feed.\n            \"\"\"\n\n        def items(self):\n            \"\"\"\n            Returns a list of items to publish in this feed.\n            \"\"\"\n\n        items = ('Item 1', 'Item 2') # Hard-coded items.\n\n        # GET_OBJECT -- This is required for feeds that publish different data\n        # for different URL parameters. (See \"A complex example\" above.)\n\n        def get_object(self, request, *args, **kwargs):\n            \"\"\"\n            Takes the current request and the arguments from the URL, and\n            returns an object represented by this feed. Raises\n            django.core.exceptions.ObjectDoesNotExist on error.\n            \"\"\"\n\n        # ITEM TITLE AND DESCRIPTION -- If title_template or\n        # description_template are not defined, these are used instead. Both are\n        # optional, by default they will use the unicode representation of the\n        # item.\n\n        def item_title(self, item):\n            \"\"\"\n            Takes an item, as returned by items(), and returns the item's\n            title as a normal Python string.\n            \"\"\"\n\n        def item_title(self):\n            \"\"\"\n            Returns the title for every item in the feed.\n            \"\"\"\n\n        item_title = 'Breaking News: Nothing Happening' # Hard-coded title.\n\n        def item_description(self, item):\n            \"\"\"\n            Takes an item, as returned by items(), and returns the item's\n            description as a normal Python string.\n            \"\"\"\n\n        def item_description(self):\n            \"\"\"\n            Returns the description for every item in the feed.\n            \"\"\"\n\n        item_description = 'A description of the item.' # Hard-coded description.\n\n        # ITEM LINK -- One of these three is required. The framework looks for\n        # them in this order.\n\n        # First, the framework tries the two methods below, in\n        # order. Failing that, it falls back to the get_absolute_url()\n        # method on each item returned by items().\n\n        def item_link(self, item):\n            \"\"\"\n            Takes an item, as returned by items(), and returns the item's URL.\n            \"\"\"\n\n        def item_link(self):\n            \"\"\"\n            Returns the URL for every item in the feed.\n            \"\"\"\n\n        # ITEM_GUID -- The following method is optional. If not provided, the\n        # item's link is used by default.\n\n        def item_guid(self, obj):\n            \"\"\"\n            Takes an item, as return by items(), and returns the item's ID.\n            \"\"\"\n\n        # ITEM AUTHOR NAME -- One of the following three is optional. The\n        # framework looks for them in this order.\n\n        def item_author_name(self, item):\n            \"\"\"\n            Takes an item, as returned by items(), and returns the item's\n            author's name as a normal Python string.\n            \"\"\"\n\n        def item_author_name(self):\n            \"\"\"\n            Returns the author name for every item in the feed.\n            \"\"\"\n\n        item_author_name = 'Sally Smith' # Hard-coded author name.\n\n        # ITEM AUTHOR EMAIL --One of the following three is optional. The\n        # framework looks for them in this order.\n        #\n        # If you specify this, you must specify item_author_name.\n\n        def item_author_email(self, obj):\n            \"\"\"\n            Takes an item, as returned by items(), and returns the item's\n            author's email as a normal Python string.\n            \"\"\"\n\n        def item_author_email(self):\n            \"\"\"\n            Returns the author email for every item in the feed.\n            \"\"\"\n\n        item_author_email = 'test@example.com' # Hard-coded author email.\n\n        # ITEM AUTHOR LINK -- One of the following three is optional. The\n        # framework looks for them in this order. In each case, the URL should\n        # include the \"http://\" and domain name.\n        #\n        # If you specify this, you must specify item_author_name.\n\n        def item_author_link(self, obj):\n            \"\"\"\n            Takes an item, as returned by items(), and returns the item's\n            author's URL as a normal Python string.\n            \"\"\"\n\n        def item_author_link(self):\n            \"\"\"\n            Returns the author URL for every item in the feed.\n            \"\"\"\n\n        item_author_link = 'http://www.example.com/' # Hard-coded author URL.\n\n        # ITEM ENCLOSURE URL -- One of these three is required if you're\n        # publishing enclosures. The framework looks for them in this order.\n\n        def item_enclosure_url(self, item):\n            \"\"\"\n            Takes an item, as returned by items(), and returns the item's\n            enclosure URL.\n            \"\"\"\n\n        def item_enclosure_url(self):\n            \"\"\"\n            Returns the enclosure URL for every item in the feed.\n            \"\"\"\n\n        item_enclosure_url = \"/foo/bar.mp3\" # Hard-coded enclosure link.\n\n        # ITEM ENCLOSURE LENGTH -- One of these three is required if you're\n        # publishing enclosures. The framework looks for them in this order.\n        # In each case, the returned value should be either an integer, or a\n        # string representation of the integer, in bytes.\n\n        def item_enclosure_length(self, item):\n            \"\"\"\n            Takes an item, as returned by items(), and returns the item's\n            enclosure length.\n            \"\"\"\n\n        def item_enclosure_length(self):\n            \"\"\"\n            Returns the enclosure length for every item in the feed.\n            \"\"\"\n\n        item_enclosure_length = 32000 # Hard-coded enclosure length.\n\n        # ITEM ENCLOSURE MIME TYPE -- One of these three is required if you're\n        # publishing enclosures. The framework looks for them in this order.\n\n        def item_enclosure_mime_type(self, item):\n            \"\"\"\n            Takes an item, as returned by items(), and returns the item's\n            enclosure MIME type.\n            \"\"\"\n\n        def item_enclosure_mime_type(self):\n            \"\"\"\n            Returns the enclosure MIME type for every item in the feed.\n            \"\"\"\n\n        item_enclosure_mime_type = \"audio/mpeg\" # Hard-coded enclosure MIME type.\n\n        # ITEM PUBDATE -- It's optional to use one of these three. This is a\n        # hook that specifies how to get the pubdate for a given item.\n        # In each case, the method/attribute should return a Python\n        # datetime.datetime object.\n\n        def item_pubdate(self, item):\n            \"\"\"\n            Takes an item, as returned by items(), and returns the item's\n            pubdate.\n            \"\"\"\n\n        def item_pubdate(self):\n            \"\"\"\n            Returns the pubdate for every item in the feed.\n            \"\"\"\n\n        item_pubdate = datetime.datetime(2005, 5, 3) # Hard-coded pubdate.\n\n        # ITEM CATEGORIES -- It's optional to use one of these three. This is\n        # a hook that specifies how to get the list of categories for a given\n        # item. In each case, the method/attribute should return an iterable\n        # object that returns strings.\n\n        def item_categories(self, item):\n            \"\"\"\n            Takes an item, as returned by items(), and returns the item's\n            categories.\n            \"\"\"\n\n        def item_categories(self):\n            \"\"\"\n            Returns the categories for every item in the feed.\n            \"\"\"\n\n        item_categories = (\"python\", \"django\") # Hard-coded categories.\n\n        # ITEM COPYRIGHT NOTICE (only applicable to Atom feeds) -- One of the\n        # following three is optional. The framework looks for them in this\n        # order.\n\n        def item_copyright(self, obj):\n            \"\"\"\n            Takes an item, as returned by items(), and returns the item's\n            copyright notice as a normal Python string.\n            \"\"\"\n\n        def item_copyright(self):\n            \"\"\"\n            Returns the copyright notice for every item in the feed.\n            \"\"\"\n\n        item_copyright = 'Copyright (c) 2007, Sally Smith' # Hard-coded copyright notice.\n\n\nThe low-level framework\n=======================\n\nBehind the scenes, the high-level RSS framework uses a lower-level framework\nfor generating feeds' XML. This framework lives in a single module:\n`django/utils/feedgenerator.py`_.\n\nYou use this framework on your own, for lower-level feed generation. You can\nalso create custom feed generator subclasses for use with the ``feed_type``\n``Feed`` option.\n\n.. currentmodule:: django.utils.feedgenerator\n\n``SyndicationFeed`` classes\n---------------------------\n\nThe :mod:`~django.utils.feedgenerator` module contains a base class:\n\n* :class:`django.utils.feedgenerator.SyndicationFeed`\n\nand several subclasses:\n\n* :class:`django.utils.feedgenerator.RssUserland091Feed`\n* :class:`django.utils.feedgenerator.Rss201rev2Feed`\n* :class:`django.utils.feedgenerator.Atom1Feed`\n\nEach of these three classes knows how to render a certain type of feed as XML.\nThey share this interface:\n\n:meth:`.SyndicationFeed.__init__`\n    Initialize the feed with the given dictionary of metadata, which applies to\n    the entire feed. Required keyword arguments are:\n\n    * ``title``\n    * ``link``\n    * ``description``\n\n    There's also a bunch of other optional keywords:\n\n    * ``language``\n    * ``author_email``\n    * ``author_name``\n    * ``author_link``\n    * ``subtitle``\n    * ``categories``\n    * ``feed_url``\n    * ``feed_copyright``\n    * ``feed_guid``\n    * ``ttl``\n\n    Any extra keyword arguments you pass to ``__init__`` will be stored in\n    ``self.feed`` for use with `custom feed generators`_.\n\n    All parameters should be Unicode objects, except ``categories``, which\n    should be a sequence of Unicode objects.\n\n:meth:`.SyndicationFeed.add_item`\n    Add an item to the feed with the given parameters.\n\n    Required keyword arguments are:\n\n    * ``title``\n    * ``link``\n    * ``description``\n\n    Optional keyword arguments are:\n\n    * ``author_email``\n    * ``author_name``\n    * ``author_link``\n    * ``pubdate``\n    * ``comments``\n    * ``unique_id``\n    * ``enclosure``\n    * ``categories``\n    * ``item_copyright``\n    * ``ttl``\n\n    Extra keyword arguments will be stored for `custom feed generators`_.\n\n    All parameters, if given, should be Unicode objects, except:\n\n    * ``pubdate`` should be a Python  :class:`~datetime.datetime` object.\n    * ``enclosure`` should be an instance of\n      :class:`django.utils.feedgenerator.Enclosure`.\n    * ``categories`` should be a sequence of Unicode objects.\n\n:meth:`.SyndicationFeed.write`\n    Outputs the feed in the given encoding to outfile, which is a file-like object.\n\n:meth:`.SyndicationFeed.writeString`\n    Returns the feed as a string in the given encoding.\n\nFor example, to create an Atom 1.0 feed and print it to standard output::\n\n    >>> from django.utils import feedgenerator\n    >>> from datetime import datetime\n    >>> f = feedgenerator.Atom1Feed(\n    ...     title=u\"My Weblog\",\n    ...     link=u\"http://www.example.com/\",\n    ...     description=u\"In which I write about what I ate today.\",\n    ...     language=u\"en\",\n    ...     author_name=u\"Myself\",\n    ...     feed_url=u\"http://example.com/atom.xml\")\n    >>> f.add_item(title=u\"Hot dog today\",\n    ...     link=u\"http://www.example.com/entries/1/\",\n    ...     pubdate=datetime.now(),\n    ...     description=u\"<p>Today I had a Vienna Beef hot dog. It was pink, plump and perfect.</p>\")\n    >>> print(f.writeString('UTF-8'))\n    <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n    <feed xmlns=\"http://www.w3.org/2005/Atom\" xml:lang=\"en\">\n    ...\n    </feed>\n\n.. _django/utils/feedgenerator.py: https://github.com/django/django/blob/master/django/utils/feedgenerator.py\n\n.. currentmodule:: django.contrib.syndication\n\nCustom feed generators\n----------------------\n\nIf you need to produce a custom feed format, you've got a couple of options.\n\nIf the feed format is totally custom, you'll want to subclass\n``SyndicationFeed`` and completely replace the ``write()`` and\n``writeString()`` methods.\n\nHowever, if the feed format is a spin-off of RSS or Atom (i.e. GeoRSS_, Apple's\n`iTunes podcast format`_, etc.), you've got a better choice. These types of\nfeeds typically add extra elements and/or attributes to the underlying format,\nand there are a set of methods that ``SyndicationFeed`` calls to get these extra\nattributes. Thus, you can subclass the appropriate feed generator class\n(``Atom1Feed`` or ``Rss201rev2Feed``) and extend these callbacks. They are:\n\n.. _georss: http://georss.org/\n.. _itunes podcast format: http://www.apple.com/itunes/podcasts/specs.html\n\n``SyndicationFeed.root_attributes(self, )``\n    Return a ``dict`` of attributes to add to the root feed element\n    (``feed``/``channel``).\n\n``SyndicationFeed.add_root_elements(self, handler)``\n    Callback to add elements inside the root feed element\n    (``feed``/``channel``). ``handler`` is an\n    :class:`~xml.sax.saxutils.XMLGenerator` from Python's built-in SAX library;\n    you'll call methods on it to add to the XML document in process.\n\n``SyndicationFeed.item_attributes(self, item)``\n    Return a ``dict`` of attributes to add to each item (``item``/``entry``)\n    element. The argument, ``item``, is a dictionary of all the data passed to\n    ``SyndicationFeed.add_item()``.\n\n``SyndicationFeed.add_item_elements(self, handler, item)``\n    Callback to add elements to each item (``item``/``entry``) element.\n    ``handler`` and ``item`` are as above.\n\n.. warning::\n\n    If you override any of these methods, be sure to call the superclass methods\n    since they add the required elements for each feed format.\n\nFor example, you might start implementing an iTunes RSS feed generator like so::\n\n    class iTunesFeed(Rss201rev2Feed):\n        def root_attributes(self):\n            attrs = super(iTunesFeed, self).root_attributes()\n            attrs['xmlns:itunes'] = 'http://www.itunes.com/dtds/podcast-1.0.dtd'\n            return attrs\n\n        def add_root_elements(self, handler):\n            super(iTunesFeed, self).add_root_elements(handler)\n            handler.addQuickElement('itunes:explicit', 'clean')\n\nObviously there's a lot more work to be done for a complete custom feed class,\nbut the above example should demonstrate the basic idea.\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/contrib/webdesign.txt",
    "content": "========================\ndjango.contrib.webdesign\n========================\n\n.. module:: django.contrib.webdesign\n   :synopsis: Helpers and utilities targeted primarily at Web *designers*\n              rather than Web *developers*.\n\nThe ``django.contrib.webdesign`` package, part of the\n:doc:`\"django.contrib\" add-ons </ref/contrib/index>`, provides various Django\nhelpers that are particularly useful to Web *designers* (as opposed to\ndevelopers).\n\nAt present, the package contains only a single template tag. If you have ideas\nfor Web-designer-friendly functionality in Django, please\n:doc:`suggest them </internals/contributing/index>`.\n\nTemplate tags\n=============\n\nTo use these template tags, add ``'django.contrib.webdesign'`` to your\n:setting:`INSTALLED_APPS` setting. Once you've done that, use\n``{% load webdesign %}`` in a template to give your template access to the tags.\n\n\nlorem\n=====\n\nDisplays random \"lorem ipsum\" Latin text. This is useful for providing sample\ndata in templates.\n\nUsage::\n\n    {% lorem [count] [method] [random] %}\n\nThe ``{% lorem %}`` tag can be used with zero, one, two or three arguments.\nThe arguments are:\n\n===========  =============================================================\nArgument     Description\n===========  =============================================================\n``count``    A number (or variable) containing the number of paragraphs or\n             words to generate (default is 1).\n``method``   Either ``w`` for words, ``p`` for HTML paragraphs or ``b``\n             for plain-text paragraph blocks (default is ``b``).\n``random``   The word ``random``, which if given, does not use the common\n             paragraph (\"Lorem ipsum dolor sit amet...\") when generating\n             text.\n===========  =============================================================\n\nExamples:\n\n* ``{% lorem %}`` will output the common \"lorem ipsum\" paragraph.\n* ``{% lorem 3 p %}`` will output the common \"lorem ipsum\" paragraph\n  and two random paragraphs each wrapped in HTML ``<p>`` tags.\n* ``{% lorem 2 w random %}`` will output two random Latin words.\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/databases.txt",
    "content": "=========\nDatabases\n=========\n\nDjango attempts to support as many features as possible on all database\nbackends. However, not all database backends are alike, and we've had to make\ndesign decisions on which features to support and which assumptions we can make\nsafely.\n\nThis file describes some of the features that might be relevant to Django\nusage. Of course, it is not intended as a replacement for server-specific\ndocumentation or reference manuals.\n\n.. _postgresql-notes:\n\nPostgreSQL notes\n================\n\n.. versionchanged:: 1.4\n\nDjango supports PostgreSQL 8.2 and higher.\n\nPostgreSQL 8.2 to 8.2.4\n-----------------------\n\nThe implementation of the population statistics aggregates ``STDDEV_POP`` and\n``VAR_POP`` that shipped with PostgreSQL 8.2 to 8.2.4 are `known to be\nfaulty`_. Users of these releases of PostgreSQL are advised to upgrade to\n`Release 8.2.5`_ or later. Django will raise a ``NotImplementedError`` if you\nattempt to use the ``StdDev(sample=False)`` or ``Variance(sample=False)``\naggregate with a database backend that falls within the affected release range.\n\n.. _known to be faulty: http://archives.postgresql.org/pgsql-bugs/2007-07/msg00046.php\n.. _Release 8.2.5: http://www.postgresql.org/docs/devel/static/release-8-2-5.html\n\nPostgreSQL connection settings\n-------------------------------\n\nSee :setting:`HOST` for details.\n\nOptimizing PostgreSQL's configuration\n-------------------------------------\n\nDjango needs the following parameters for its database connections:\n\n- ``client_encoding``: ``'UTF8'``,\n- ``default_transaction_isolation``: ``'read committed'``,\n- ``timezone``: ``'UTC'`` when :setting:`USE_TZ` is ``True``, value of\n  :setting:`TIME_ZONE` otherwise.\n\nIf these parameters already have the correct values, Django won't set them for\nevery new connection, which improves performance slightly. You can configure\nthem directly in :file:`postgresql.conf` or more conveniently per database\nuser with `ALTER ROLE`_.\n\nDjango will work just fine without this optimization, but each new connection\nwill do some additional queries to set these parameters.\n\n.. _ALTER ROLE: http://www.postgresql.org/docs/current/interactive/sql-alterrole.html\n\nTransaction handling\n---------------------\n\n:doc:`By default </topics/db/transactions>`, Django runs with an open\ntransaction which it commits automatically when any built-in, data-altering\nmodel function is called. The PostgreSQL backends normally operate the same as\nany other Django backend in this respect.\n\n.. _postgresql-autocommit-mode:\n\nAutocommit mode\n~~~~~~~~~~~~~~~\n\nIf your application is particularly read-heavy and doesn't make many\ndatabase writes, the overhead of a constantly open transaction can\nsometimes be noticeable. For those situations, you can configure Django\nto use *\"autocommit\"* behavior for the connection, meaning that each database\noperation will normally be in its own transaction, rather than having\nthe transaction extend over multiple operations. In this case, you can\nstill manually start a transaction if you're doing something that\nrequires consistency across multiple database operations. The\nautocommit behavior is enabled by setting the ``autocommit`` key in\nthe :setting:`OPTIONS` part of your database configuration in\n:setting:`DATABASES`::\n\n    'OPTIONS': {\n        'autocommit': True,\n    }\n\nIn this configuration, Django still ensures that :ref:`delete()\n<topics-db-queries-delete>` and :ref:`update() <topics-db-queries-update>`\nqueries run inside a single transaction, so that either all the affected\nobjects are changed or none of them are.\n\n.. admonition:: This is database-level autocommit\n\n    This functionality is not the same as the :ref:`autocommit\n    <topics-db-transactions-autocommit>` decorator. That decorator is\n    a Django-level implementation that commits automatically after\n    data changing operations. The feature enabled using the\n    :setting:`OPTIONS` option provides autocommit behavior at the\n    database adapter level. It commits after *every* operation.\n\nIf you are using this feature and performing an operation akin to delete or\nupdating that requires multiple operations, you are strongly recommended to\nwrap you operations in manual transaction handling to ensure data consistency.\nYou should also audit your existing code for any instances of this behavior\nbefore enabling this feature. It's faster, but it provides less automatic\nprotection for multi-call operations.\n\nIndexes for ``varchar`` and ``text`` columns\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nWhen specifying ``db_index=True`` on your model fields, Django typically\noutputs a single ``CREATE INDEX`` statement.  However, if the database type\nfor the field is either ``varchar`` or ``text`` (e.g., used by ``CharField``,\n``FileField``, and ``TextField``), then Django will create\nan additional index that uses an appropriate `PostgreSQL operator class`_\nfor the column.  The extra index is necessary to correctly perform\nlookups that use the ``LIKE`` operator in their SQL, as is done with the\n``contains`` and ``startswith`` lookup types.\n\n.. _PostgreSQL operator class: http://www.postgresql.org/docs/8.4/static/indexes-opclass.html\n\n.. _mysql-notes:\n\nMySQL notes\n===========\n\nVersion support\n---------------\n\nDjango supports MySQL 5.0.3 and higher.\n\n`MySQL 5.0`_ adds the ``information_schema`` database, which contains detailed\ndata on all database schema. Django's ``inspectdb`` feature uses it.\n\n.. versionchanged:: 1.5\n    The minimum version requirement of MySQL 5.0.3 was set in Django 1.5.\n\nDjango expects the database to support Unicode (UTF-8 encoding) and delegates to\nit the task of enforcing transactions and referential integrity. It is important\nto be aware of the fact that the two latter ones aren't actually enforced by\nMySQL when using the MyISAM storage engine, see the next section.\n\n.. _MySQL: http://www.mysql.com/\n.. _MySQL 5.0: http://dev.mysql.com/doc/refman/5.0/en/index.html\n\n.. _mysql-storage-engines:\n\nStorage engines\n---------------\n\nMySQL has several `storage engines`_ (previously called table types). You can\nchange the default storage engine in the server configuration.\n\nUntil MySQL 5.5.4, the default engine was MyISAM_ [#]_. The main drawbacks of\nMyISAM are that it doesn't support transactions or enforce foreign-key\nconstraints. On the plus side, it's currently the only engine that supports\nfull-text indexing and searching.\n\nSince MySQL 5.5.5, the default storage engine is InnoDB_. This engine is fully\ntransactional and supports foreign key references. It's probably the best\nchoice at this point.\n\nIf you upgrade an existing project to MySQL 5.5.5 and subsequently add some\ntables, ensure that your tables are using the same storage engine (i.e. MyISAM\nvs. InnoDB). Specifically, if tables that have a ``ForeignKey`` between them\nuse different storage engines, you may see an error like the following when\nrunning ``syncdb``::\n\n    _mysql_exceptions.OperationalError: (\n        1005, \"Can't create table '\\\\db_name\\\\.#sql-4a8_ab' (errno: 150)\"\n    )\n\n.. versionchanged:: 1.4\n\nIn previous versions of Django, fixtures with forward references (i.e.\nrelations to rows that have not yet been inserted into the database) would fail\nto load when using the InnoDB storage engine. This was due to the fact that InnoDB\ndeviates from the SQL standard by checking foreign key constraints immediately\ninstead of deferring the check until the transaction is committed. This\nproblem has been resolved in Django 1.4. Fixture data is now loaded with foreign key\nchecks turned off; foreign key checks are then re-enabled when the data has\nfinished loading, at which point the entire table is checked for invalid foreign\nkey references and an `IntegrityError` is raised if any are found.\n\n.. _storage engines: http://dev.mysql.com/doc/refman/5.5/en/storage-engines.html\n.. _MyISAM: http://dev.mysql.com/doc/refman/5.5/en/myisam-storage-engine.html\n.. _InnoDB: http://dev.mysql.com/doc/refman/5.5/en/innodb.html\n\n.. [#] Unless this was changed by the packager of your MySQL package. We've\n   had reports that the Windows Community Server installer sets up InnoDB as\n   the default storage engine, for example.\n\nMySQLdb\n-------\n\n`MySQLdb`_ is the Python interface to MySQL. Version 1.2.1p2 or later is\nrequired for full MySQL support in Django.\n\n.. note::\n    If you see ``ImportError: cannot import name ImmutableSet`` when trying to\n    use Django, your MySQLdb installation may contain an outdated ``sets.py``\n    file that conflicts with the built-in module of the same name from Python\n    2.4 and later. To fix this, verify that you have installed MySQLdb version\n    1.2.1p2 or newer, then delete the ``sets.py`` file in the MySQLdb\n    directory that was left by an earlier version.\n\n.. _MySQLdb: http://sourceforge.net/projects/mysql-python\n\nCreating your database\n----------------------\n\nYou can `create your database`_ using the command-line tools and this SQL::\n\n  CREATE DATABASE <dbname> CHARACTER SET utf8;\n\nThis ensures all tables and columns will use UTF-8 by default.\n\n.. _create your database: http://dev.mysql.com/doc/refman/5.0/en/create-database.html\n\n.. _mysql-collation:\n\nCollation settings\n~~~~~~~~~~~~~~~~~~\n\nThe collation setting for a column controls the order in which data is sorted\nas well as what strings compare as equal. It can be set on a database-wide\nlevel and also per-table and per-column. This is `documented thoroughly`_ in\nthe MySQL documentation. In all cases, you set the collation by directly\nmanipulating the database tables; Django doesn't provide a way to set this on\nthe model definition.\n\n.. _documented thoroughly: http://dev.mysql.com/doc/refman/5.0/en/charset.html\n\nBy default, with a UTF-8 database, MySQL will use the\n``utf8_general_ci_swedish`` collation. This results in all string equality\ncomparisons being done in a *case-insensitive* manner. That is, ``\"Fred\"`` and\n``\"freD\"`` are considered equal at the database level. If you have a unique\nconstraint on a field, it would be illegal to try to insert both ``\"aa\"`` and\n``\"AA\"`` into the same column, since they compare as equal (and, hence,\nnon-unique) with the default collation.\n\nIn many cases, this default will not be a problem. However, if you really want\ncase-sensitive comparisons on a particular column or table, you would change\nthe column or table to use the ``utf8_bin`` collation. The main thing to be\naware of in this case is that if you are using MySQLdb 1.2.2, the database\nbackend in Django will then return bytestrings (instead of unicode strings) for\nany character fields it receive from the database. This is a strong variation\nfrom Django's normal practice of *always* returning unicode strings. It is up\nto you, the developer, to handle the fact that you will receive bytestrings if\nyou configure your table(s) to use ``utf8_bin`` collation. Django itself should\nmostly work smoothly with such columns (except for the ``contrib.sessions``\n``Session`` and ``contrib.admin`` ``LogEntry`` tables described below), but\nyour code must be prepared to call ``django.utils.encoding.smart_text()`` at\ntimes if it really wants to work with consistent data -- Django will not do\nthis for you (the database backend layer and the model population layer are\nseparated internally so the database layer doesn't know it needs to make this\nconversion in this one particular case).\n\nIf you're using MySQLdb 1.2.1p2, Django's standard\n:class:`~django.db.models.CharField` class will return unicode strings even\nwith ``utf8_bin`` collation. However, :class:`~django.db.models.TextField`\nfields will be returned as an ``array.array`` instance (from Python's standard\n``array`` module). There isn't a lot Django can do about that, since, again,\nthe information needed to make the necessary conversions isn't available when\nthe data is read in from the database. This problem was `fixed in MySQLdb\n1.2.2`_, so if you want to use :class:`~django.db.models.TextField` with\n``utf8_bin`` collation, upgrading to version 1.2.2 and then dealing with the\nbytestrings (which shouldn't be too difficult) as described above is the\nrecommended solution.\n\nShould you decide to use ``utf8_bin`` collation for some of your tables with\nMySQLdb 1.2.1p2 or 1.2.2, you should still use ``utf8_collation_ci_swedish``\n(the default) collation for the ``django.contrib.sessions.models.Session``\ntable (usually called ``django_session``) and the\n``django.contrib.admin.models.LogEntry`` table (usually called\n``django_admin_log``). Those are the two standard tables that use\n:class:`~django.db.models.TextField` internally.\n\n.. _fixed in MySQLdb 1.2.2: http://sourceforge.net/tracker/index.php?func=detail&aid=1495765&group_id=22307&atid=374932\n\nConnecting to the database\n--------------------------\n\nRefer to the :doc:`settings documentation </ref/settings>`.\n\nConnection settings are used in this order:\n\n1. :setting:`OPTIONS`.\n2. :setting:`NAME`, :setting:`USER`, :setting:`PASSWORD`,\n   :setting:`HOST`, :setting:`PORT`\n3. MySQL option files.\n\nIn other words, if you set the name of the database in :setting:`OPTIONS`,\nthis will take precedence over :setting:`NAME`, which would override\nanything in a `MySQL option file`_.\n\nHere's a sample configuration which uses a MySQL option file::\n\n    # settings.py\n    DATABASES = {\n        'default': {\n            'ENGINE': 'django.db.backends.mysql',\n            'OPTIONS': {\n                'read_default_file': '/path/to/my.cnf',\n            },\n        }\n    }\n\n\n    # my.cnf\n    [client]\n    database = NAME\n    user = USER\n    password = PASSWORD\n    default-character-set = utf8\n\nSeveral other MySQLdb connection options may be useful, such as ``ssl``,\n``use_unicode``, ``init_command``, and ``sql_mode``. Consult the\n`MySQLdb documentation`_ for more details.\n\n.. _MySQL option file: http://dev.mysql.com/doc/refman/5.0/en/option-files.html\n.. _MySQLdb documentation: http://mysql-python.sourceforge.net/\n\nCreating your tables\n--------------------\n\nWhen Django generates the schema, it doesn't specify a storage engine, so\ntables will be created with whatever default storage engine your database\nserver is configured for. The easiest solution is to set your database server's\ndefault storage engine to the desired engine.\n\nIf you're using a hosting service and can't change your server's default\nstorage engine, you have a couple of options.\n\n* After the tables are created, execute an ``ALTER TABLE`` statement to\n  convert a table to a new storage engine (such as InnoDB)::\n\n      ALTER TABLE <tablename> ENGINE=INNODB;\n\n  This can be tedious if you have a lot of tables.\n\n* Another option is to use the ``init_command`` option for MySQLdb prior to\n  creating your tables::\n\n      'OPTIONS': {\n         'init_command': 'SET storage_engine=INNODB',\n      }\n\n  This sets the default storage engine upon connecting to the database.\n  After your tables have been created, you should remove this option as it\n  adds a query that is only needed during table creation to each database\n  connection.\n\n* Another method for changing the storage engine is described in\n  AlterModelOnSyncDB_.\n\n.. _AlterModelOnSyncDB: https://code.djangoproject.com/wiki/AlterModelOnSyncDB\n\nTable names\n-----------\n\nThere are `known issues`_ in even the latest versions of MySQL that can cause the\ncase of a table name to be altered when certain SQL statements are executed\nunder certain conditions. It is recommended that you use lowercase table\nnames, if possible, to avoid any problems that might arise from this behavior.\nDjango uses lowercase table names when it auto-generates table names from\nmodels, so this is mainly a consideration if you are overriding the table name\nvia the :class:`~django.db.models.Options.db_table` parameter.\n\n.. _known issues: http://bugs.mysql.com/bug.php?id=48875\n\nSavepoints\n----------\n\nBoth the Django ORM and MySQL (when using the InnoDB :ref:`storage engine\n<mysql-storage-engines>`) support database :ref:`savepoints\n<topics-db-transactions-savepoints>`, but this feature wasn't available in\nDjango until version 1.4 when such supports was added.\n\nIf you use the MyISAM storage engine please be aware of the fact that you will\nreceive database-generated errors if you try to use the :ref:`savepoint-related\nmethods of the transactions API <topics-db-transactions-savepoints>`. The reason\nfor this is that detecting the storage engine of a MySQL database/table is an\nexpensive operation so it was decided it isn't worth to dynamically convert\nthese methods in no-op's based in the results of such detection.\n\nNotes on specific fields\n------------------------\n\nCharacter fields\n~~~~~~~~~~~~~~~~\n\nAny fields that are stored with ``VARCHAR`` column types have their\n``max_length`` restricted to 255 characters if you are using ``unique=True``\nfor the field. This affects :class:`~django.db.models.CharField`,\n:class:`~django.db.models.SlugField` and\n:class:`~django.db.models.CommaSeparatedIntegerField`.\n\nDateTime fields\n~~~~~~~~~~~~~~~\n\nMySQL does not have a timezone-aware column type. If an attempt is made to\nstore a timezone-aware ``time`` or ``datetime`` to a\n:class:`~django.db.models.TimeField` or :class:`~django.db.models.DateTimeField`\nrespectively, a ``ValueError`` is raised rather than truncating data.\n\nMySQL does not store fractions of seconds. Fractions of seconds are truncated\nto zero when the time is stored.\n\nRow locking with ``QuerySet.select_for_update()``\n-------------------------------------------------\n\nMySQL does not support the ``NOWAIT`` option to the ``SELECT ... FOR UPDATE``\nstatement. If ``select_for_update()`` is used with ``nowait=True`` then a\n``DatabaseError`` will be raised.\n\n.. _sqlite-notes:\n\nSQLite notes\n============\n\nSQLite_ provides an excellent development alternative for applications that\nare predominantly read-only or require a smaller installation footprint. As\nwith all database servers, though, there are some differences that are\nspecific to SQLite that you should be aware of.\n\n.. _SQLite: http://www.sqlite.org/\n\n.. _sqlite-string-matching:\n\nSubstring matching and case sensitivity\n-----------------------------------------\n\nFor all SQLite versions, there is some slightly counter-intuitive behavior when\nattempting to match some types of strings.  These are triggered when using the\n:lookup:`iexact` or :lookup:`contains` filters in Querysets. The behavior\nsplits into two cases:\n\n1. For substring matching, all matches are done case-insensitively. That is a\nfilter such as ``filter(name__contains=\"aa\")`` will match a name of ``\"Aabb\"``.\n\n2. For strings containing characters outside the ASCII range, all exact string\nmatches are performed case-sensitively, even when the case-insensitive options\nare passed into the query. So the :lookup:`iexact` filter will behave exactly\nthe same as the :lookup:`exact` filter in these cases.\n\nSome possible workarounds for this are `documented at sqlite.org`_, but they\naren't utilised by the default SQLite backend in Django, as incorporating them\nwould be fairly difficult to do robustly. Thus, Django exposes the default\nSQLite behavior and you should be aware of this when doing case-insensitive or\nsubstring filtering.\n\n.. _documented at sqlite.org: http://www.sqlite.org/faq.html#q18\n\nSQLite 3.3.6 or newer strongly recommended\n------------------------------------------\n\nVersions of SQLite 3.3.5 and older contains the following bugs:\n\n* A bug when `handling`_ ``ORDER BY`` parameters. This can cause problems when\n  you use the ``select`` parameter for the ``extra()`` QuerySet method. The bug\n  can be identified by the error message ``OperationalError: ORDER BY terms\n  must not be non-integer constants``.\n\n* A bug when handling `aggregation`_ together with DateFields and\n  DecimalFields.\n\n.. _handling: http://www.sqlite.org/cvstrac/tktview?tn=1768\n.. _aggregation: https://code.djangoproject.com/ticket/10031\n\nSQLite 3.3.6 was released in April 2006, so most current binary distributions\nfor different platforms include newer version of SQLite usable from Python\nthrough either the ``pysqlite2`` or the ``sqlite3`` modules.\n\nVersion 3.5.9\n-------------\n\nThe Ubuntu \"Intrepid Ibex\" (8.10) SQLite 3.5.9-3 package contains a bug that\ncauses problems with the evaluation of query expressions. If you are using\nUbuntu \"Intrepid Ibex\", you will need to update the package to version\n3.5.9-3ubuntu1 or newer (recommended) or find an alternate source for SQLite\npackages, or install SQLite from source.\n\nAt one time, Debian Lenny shipped with the same malfunctioning SQLite 3.5.9-3\npackage. However the Debian project has subsequently issued updated versions\nof the SQLite package that correct these bugs. If you find you are getting\nunexpected results under Debian, ensure you have updated your SQLite package\nto 3.5.9-5 or later.\n\nThe problem does not appear to exist with other versions of SQLite packaged\nwith other operating systems.\n\nVersion 3.6.2\n--------------\n\nSQLite version 3.6.2 (released August 30, 2008) introduced a bug into ``SELECT\nDISTINCT`` handling that is triggered by, amongst other things, Django's\n``DateQuerySet`` (returned by the ``dates()`` method on a queryset).\n\nYou should avoid using this version of SQLite with Django. Either upgrade to\n3.6.3 (released September 22, 2008) or later, or downgrade to an earlier\nversion of SQLite.\n\n.. _using-newer-versions-of-pysqlite:\n\nUsing newer versions of the SQLite DB-API 2.0 driver\n----------------------------------------------------\n\nFor versions of Python 2.5 or newer that include ``sqlite3`` in the standard\nlibrary Django will now use a ``pysqlite2`` interface in preference to\n``sqlite3`` if it finds one is available.\n\nThis provides the ability to upgrade both the DB-API 2.0 interface or SQLite 3\nitself to versions newer than the ones included with your particular Python\nbinary distribution, if needed.\n\n\"Database is locked\" errors\n---------------------------\n\nSQLite is meant to be a lightweight database, and thus can't support a high\nlevel of concurrency. ``OperationalError: database is locked`` errors indicate\nthat your application is experiencing more concurrency than ``sqlite`` can\nhandle in default configuration. This error means that one thread or process has\nan exclusive lock on the database connection and another thread timed out\nwaiting for the lock the be released.\n\nPython's SQLite wrapper has\na default timeout value that determines how long the second thread is allowed to\nwait on the lock before it times out and raises the ``OperationalError: database\nis locked`` error.\n\nIf you're getting this error, you can solve it by:\n\n* Switching to another database backend. At a certain point SQLite becomes\n  too \"lite\" for real-world applications, and these sorts of concurrency\n  errors indicate you've reached that point.\n\n* Rewriting your code to reduce concurrency and ensure that database\n  transactions are short-lived.\n\n* Increase the default timeout value by setting the ``timeout`` database\n  option option::\n\n      'OPTIONS': {\n          # ...\n          'timeout': 20,\n          # ...\n      }\n\n  This will simply make SQLite wait a bit longer before throwing \"database\n  is locked\" errors; it won't really do anything to solve them.\n\n``QuerySet.select_for_update()`` not supported\n----------------------------------------------\n\nSQLite does not support the ``SELECT ... FOR UPDATE`` syntax. Calling it will\nhave no effect.\n\n.. _sqlite-connection-queries:\n\nParameters not quoted in ``connection.queries``\n-----------------------------------------------\n\n``sqlite3`` does not provide a way to retrieve the SQL after quoting and\nsubstituting the parameters. Instead, the SQL in ``connection.queries`` is\nrebuilt with a simple string interpolation. It may be incorrect. Make sure\nyou add quotes where necessary before copying a query into a SQLite shell.\n\n.. _oracle-notes:\n\nOracle notes\n============\n\nDjango supports `Oracle Database Server`_ versions 9i and\nhigher. Oracle version 10g or later is required to use Django's\n``regex`` and ``iregex`` query operators. You will also need at least\nversion 4.3.1 of the `cx_Oracle`_ Python driver.\n\nNote that due to a Unicode-corruption bug in ``cx_Oracle`` 5.0, that\nversion of the driver should **not** be used with Django;\n``cx_Oracle`` 5.0.1 resolved this issue, so if you'd like to use a\nmore recent ``cx_Oracle``, use version 5.0.1.\n\n``cx_Oracle`` 5.0.1 or greater can optionally be compiled with the\n``WITH_UNICODE`` environment variable.  This is recommended but not\nrequired.\n\n.. _`Oracle Database Server`: http://www.oracle.com/\n.. _`cx_Oracle`: http://cx-oracle.sourceforge.net/\n\nIn order for the ``python manage.py syncdb`` command to work, your Oracle\ndatabase user must have privileges to run the following commands:\n\n* CREATE TABLE\n* CREATE SEQUENCE\n* CREATE PROCEDURE\n* CREATE TRIGGER\n\nTo run Django's test suite, the user needs these *additional* privileges:\n\n* CREATE USER\n* DROP USER\n* CREATE TABLESPACE\n* DROP TABLESPACE\n* CONNECT WITH ADMIN OPTION\n* RESOURCE WITH ADMIN OPTION\n\nConnecting to the database\n--------------------------\n\nYour Django settings.py file should look something like this for Oracle::\n\n    DATABASES = {\n        'default': {\n            'ENGINE': 'django.db.backends.oracle',\n            'NAME': 'xe',\n            'USER': 'a_user',\n            'PASSWORD': 'a_password',\n            'HOST': '',\n            'PORT': '',\n        }\n    }\n\n\nIf you don't use a ``tnsnames.ora`` file or a similar naming method that\nrecognizes the SID (\"xe\" in this example), then fill in both\n:setting:`HOST` and :setting:`PORT` like so::\n\n    DATABASES = {\n        'default': {\n            'ENGINE': 'django.db.backends.oracle',\n            'NAME': 'xe',\n            'USER': 'a_user',\n            'PASSWORD': 'a_password',\n            'HOST': 'dbprod01ned.mycompany.com',\n            'PORT': '1540',\n        }\n    }\n\nYou should supply both :setting:`HOST` and :setting:`PORT`, or leave both\nas empty strings.\n\nThreaded option\n----------------\n\nIf you plan to run Django in a multithreaded environment (e.g. Apache in Windows\nusing the default MPM module), then you **must** set the ``threaded`` option of\nyour Oracle database configuration to True::\n\n            'OPTIONS': {\n                'threaded': True,\n            },\n\nFailure to do this may result in crashes and other odd behavior.\n\nINSERT ... RETURNING INTO\n-------------------------\n\nBy default, the Oracle backend uses a ``RETURNING INTO`` clause to efficiently\nretrieve the value of an ``AutoField`` when inserting new rows.  This behavior\nmay result in a ``DatabaseError`` in certain unusual setups, such as when\ninserting into a remote table, or into a view with an ``INSTEAD OF`` trigger.\nThe ``RETURNING INTO`` clause can be disabled by setting the\n``use_returning_into`` option of the database configuration to False::\n\n            'OPTIONS': {\n                'use_returning_into': False,\n            },\n\nIn this case, the Oracle backend will use a separate ``SELECT`` query to\nretrieve AutoField values.\n\nNaming issues\n-------------\n\nOracle imposes a name length limit of 30 characters. To accommodate this, the\nbackend truncates database identifiers to fit, replacing the final four\ncharacters of the truncated name with a repeatable MD5 hash value.\n\nWhen running syncdb, an ``ORA-06552`` error may be encountered if\ncertain Oracle keywords are used as the name of a model field or the\nvalue of a ``db_column`` option.  Django quotes all identifiers used\nin queries to prevent most such problems, but this error can still\noccur when an Oracle datatype is used as a column name.  In\nparticular, take care to avoid using the names ``date``,\n``timestamp``, ``number`` or ``float`` as a field name.\n\nNULL and empty strings\n----------------------\n\nDjango generally prefers to use the empty string ('') rather than\nNULL, but Oracle treats both identically. To get around this, the\nOracle backend ignores an explicit ``null`` option on fields that\nhave the empty string as a possible value and generates DDL as if\n``null=True``. When fetching from the database, it is assumed that\na ``NULL`` value in one of these fields really means the empty\nstring, and the data is silently converted to reflect this assumption.\n\n``TextField`` limitations\n-------------------------\n\nThe Oracle backend stores ``TextFields`` as ``NCLOB`` columns. Oracle imposes\nsome limitations on the usage of such LOB columns in general:\n\n* LOB columns may not be used as primary keys.\n\n* LOB columns may not be used in indexes.\n\n* LOB columns may not be used in a ``SELECT DISTINCT`` list. This means that\n  attempting to use the ``QuerySet.distinct`` method on a model that\n  includes ``TextField`` columns will result in an error when run against\n  Oracle. As a workaround, use the ``QuerySet.defer`` method in conjunction\n  with ``distinct()`` to prevent ``TextField`` columns from being included in\n  the ``SELECT DISTINCT`` list.\n\n.. _third-party-notes:\n\nUsing a 3rd-party database backend\n==================================\n\nIn addition to the officially supported databases, there are backends provided\nby 3rd parties that allow you to use other databases with Django:\n\n* `Sybase SQL Anywhere`_\n* `IBM DB2`_\n* `Microsoft SQL Server 2005`_\n* Firebird_\n* ODBC_\n* ADSDB_\n\nThe Django versions and ORM features supported by these unofficial backends\nvary considerably. Queries regarding the specific capabilities of these\nunofficial backends, along with any support queries, should be directed to\nthe support channels provided by each 3rd party project.\n\n.. _Sybase SQL Anywhere: http://code.google.com/p/sqlany-django/\n.. _IBM DB2: http://code.google.com/p/ibm-db/\n.. _Microsoft SQL Server 2005: http://code.google.com/p/django-mssql/\n.. _Firebird: http://code.google.com/p/django-firebird/\n.. _ODBC: http://code.google.com/p/django-pyodbc/\n.. _ADSDB: http://code.google.com/p/adsdb-django/\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/django-admin.txt",
    "content": "=============================\ndjango-admin.py and manage.py\n=============================\n\n``django-admin.py`` is Django's command-line utility for administrative tasks.\nThis document outlines all it can do.\n\nIn addition, ``manage.py`` is automatically created in each Django project.\n``manage.py`` is a thin wrapper around ``django-admin.py`` that takes care of\ntwo things for you before delegating to ``django-admin.py``:\n\n* It puts your project's package on ``sys.path``.\n\n* It sets the :envvar:`DJANGO_SETTINGS_MODULE` environment variable so that\n  it points to your project's ``settings.py`` file.\n\nThe ``django-admin.py`` script should be on your system path if you installed\nDjango via its ``setup.py`` utility. If it's not on your path, you can find it\nin ``site-packages/django/bin`` within your Python installation. Consider\nsymlinking it from some place on your path, such as ``/usr/local/bin``.\n\nFor Windows users, who do not have symlinking functionality available, you can\ncopy ``django-admin.py`` to a location on your existing path or edit the\n``PATH`` settings (under ``Settings - Control Panel - System - Advanced -\nEnvironment...``) to point to its installed location.\n\nGenerally, when working on a single Django project, it's easier to use\n``manage.py``. Use ``django-admin.py`` with ``DJANGO_SETTINGS_MODULE``, or the\n``--settings`` command line option, if you need to switch between multiple\nDjango settings files.\n\nThe command-line examples throughout this document use ``django-admin.py`` to\nbe consistent, but any example can use ``manage.py`` just as well.\n\nUsage\n=====\n\n.. code-block:: bash\n\n    django-admin.py <command> [options]\n    manage.py <command> [options]\n\n``command`` should be one of the commands listed in this document.\n``options``, which is optional, should be zero or more of the options available\nfor the given command.\n\nGetting runtime help\n--------------------\n\n.. django-admin:: help\n\nRun ``django-admin.py help`` to display usage information and a list of the\ncommands provided by each application.\n\nRun ``django-admin.py help --commands`` to display a list of all available\ncommands.\n\nRun ``django-admin.py help <command>`` to display a description of the given\ncommand and a list of its available options.\n\nApp names\n---------\n\nMany commands take a list of \"app names.\" An \"app name\" is the basename of\nthe package containing your models. For example, if your :setting:`INSTALLED_APPS`\ncontains the string ``'mysite.blog'``, the app name is ``blog``.\n\nDetermining the version\n-----------------------\n\n.. django-admin:: version\n\nRun ``django-admin.py version`` to display the current Django version.\n\nThe output follows the schema described in :pep:`386`::\n\n    1.4.dev17026\n    1.4a1\n    1.4\n\nDisplaying debug output\n-----------------------\n\nUse :djadminopt:`--verbosity` to specify the amount of notification and debug information\nthat ``django-admin.py`` should print to the console. For more details, see the\ndocumentation for the :djadminopt:`--verbosity` option.\n\nAvailable commands\n==================\n\ncleanup\n-------\n\n.. django-admin:: cleanup\n\nCan be run as a cronjob or directly to clean out old data from the database\n(only expired sessions at the moment).\n\n.. versionchanged:: 1.5\n    :djadmin:`cleanup` is deprecated. Use :djadmin:`clearsessions` instead.\n\ncompilemessages\n---------------\n\n.. django-admin:: compilemessages\n\nCompiles .po files created with ``makemessages`` to .mo files for use with\nthe builtin gettext support. See :doc:`/topics/i18n/index`.\n\nUse the :djadminopt:`--locale` option to specify the locale to process.\nIf not provided, all locales are processed.\n\nExample usage::\n\n    django-admin.py compilemessages --locale=pt_BR\n\ncreatecachetable\n----------------\n\n.. django-admin:: createcachetable\n\nCreates a cache table named ``tablename`` for use with the database cache\nbackend. See :doc:`/topics/cache` for more information.\n\nThe :djadminopt:`--database` option can be used to specify the database\nonto which the cachetable will be installed.\n\ndbshell\n-------\n\n.. django-admin:: dbshell\n\nRuns the command-line client for the database engine specified in your\n``ENGINE`` setting, with the connection parameters specified in your\n:setting:`USER`, :setting:`PASSWORD`, etc., settings.\n\n* For PostgreSQL, this runs the ``psql`` command-line client.\n* For MySQL, this runs the ``mysql`` command-line client.\n* For SQLite, this runs the ``sqlite3`` command-line client.\n\nThis command assumes the programs are on your ``PATH`` so that a simple call to\nthe program name (``psql``, ``mysql``, ``sqlite3``) will find the program in\nthe right place. There's no way to specify the location of the program\nmanually.\n\nThe :djadminopt:`--database` option can be used to specify the database\nonto which to open a shell.\n\ndiffsettings\n------------\n\n.. django-admin:: diffsettings\n\nDisplays differences between the current settings file and Django's default\nsettings.\n\nSettings that don't appear in the defaults are followed by ``\"###\"``. For\nexample, the default settings don't define :setting:`ROOT_URLCONF`, so\n:setting:`ROOT_URLCONF` is followed by ``\"###\"`` in the output of\n``diffsettings``.\n\nNote that Django's default settings live in ``django/conf/global_settings.py``,\nif you're ever curious to see the full list of defaults.\n\ndumpdata <appname appname appname.Model ...>\n--------------------------------------------\n\n.. django-admin:: dumpdata\n\nOutputs to standard output all data in the database associated with the named\napplication(s).\n\nIf no application name is provided, all installed applications will be dumped.\n\nThe output of ``dumpdata`` can be used as input for ``loaddata``.\n\nNote that ``dumpdata`` uses the default manager on the model for selecting the\nrecords to dump. If you're using a :ref:`custom manager <custom-managers>` as\nthe default manager and it filters some of the available records, not all of the\nobjects will be dumped.\n\nThe :djadminopt:`--all` option may be provided to specify that\n``dumpdata`` should use Django's base manager, dumping records which\nmight otherwise be filtered or modified by a custom manager.\n\n.. django-admin-option:: --format <fmt>\n\nBy default, ``dumpdata`` will format its output in JSON, but you can use the\n``--format`` option to specify another format. Currently supported formats\nare listed in :ref:`serialization-formats`.\n\n.. django-admin-option:: --indent <num>\n\nBy default, ``dumpdata`` will output all data on a single line. This isn't\neasy for humans to read, so you can use the ``--indent`` option to\npretty-print the output with a number of indentation spaces.\n\nThe :djadminopt:`--exclude` option may be provided to prevent specific\napplications or models (specified as in the form of ``appname.ModelName``) from\nbeing dumped. If you specify a model name to ``dumpdata``, the dumped output\nwill be restricted to that model, rather than the entire application. You can\nalso mix application names and model names.\n\nThe :djadminopt:`--database` option can be used to specify the database\nfrom which data will be dumped.\n\n.. django-admin-option:: --natural\n\nUse :ref:`natural keys <topics-serialization-natural-keys>` to represent\nany foreign key and many-to-many relationship with a model that provides\na natural key definition. If you are dumping ``contrib.auth`` ``Permission``\nobjects or ``contrib.contenttypes`` ``ContentType`` objects, you should\nprobably be using this flag.\n\nflush\n-----\n\n.. django-admin:: flush\n\nReturns the database to the state it was in immediately after :djadmin:`syncdb`\nwas executed. This means that all data will be removed from the database, any\npost-synchronization handlers will be re-executed, and the ``initial_data``\nfixture will be re-installed.\n\nThe :djadminopt:`--noinput` option may be provided to suppress all user\nprompts.\n\nThe :djadminopt:`--database` option may be used to specify the database\nto flush.\n\n--no-initial-data\n~~~~~~~~~~~~~~~~~\n\n.. versionadded:: 1.5\n\nUse ``--no-initial-data`` to avoid loading the initial_data fixture.\n\n\ninspectdb\n---------\n\n.. django-admin:: inspectdb\n\nIntrospects the database tables in the database pointed-to by the\n:setting:`NAME` setting and outputs a Django model module (a ``models.py``\nfile) to standard output.\n\nUse this if you have a legacy database with which you'd like to use Django.\nThe script will inspect the database and create a model for each table within\nit.\n\nAs you might expect, the created models will have an attribute for every field\nin the table. Note that ``inspectdb`` has a few special cases in its field-name\noutput:\n\n* If ``inspectdb`` cannot map a column's type to a model field type, it'll\n  use ``TextField`` and will insert the Python comment\n  ``'This field type is a guess.'`` next to the field in the generated\n  model.\n\n* If the database column name is a Python reserved word (such as\n  ``'pass'``, ``'class'`` or ``'for'``), ``inspectdb`` will append\n  ``'_field'`` to the attribute name. For example, if a table has a column\n  ``'for'``, the generated model will have a field ``'for_field'``, with\n  the ``db_column`` attribute set to ``'for'``. ``inspectdb`` will insert\n  the Python comment\n  ``'Field renamed because it was a Python reserved word.'`` next to the\n  field.\n\nThis feature is meant as a shortcut, not as definitive model generation. After\nyou run it, you'll want to look over the generated models yourself to make\ncustomizations. In particular, you'll need to rearrange models' order, so that\nmodels that refer to other models are ordered properly.\n\nPrimary keys are automatically introspected for PostgreSQL, MySQL and\nSQLite, in which case Django puts in the ``primary_key=True`` where\nneeded.\n\n``inspectdb`` works with PostgreSQL, MySQL and SQLite. Foreign-key detection\nonly works in PostgreSQL and with certain types of MySQL tables.\n\nThe :djadminopt:`--database` option may be used to specify the\ndatabase to introspect.\n\nloaddata <fixture fixture ...>\n------------------------------\n\n.. django-admin:: loaddata\n\nSearches for and loads the contents of the named fixture into the database.\n\nThe :djadminopt:`--database` option can be used to specify the database\nonto which the data will be loaded.\n\n.. django-admin-option:: --ignorenonexistent\n\n.. versionadded:: 1.5\n\nThe :djadminopt:`--ignorenonexistent` option can be used to ignore fields that\nmay have been removed from models since the fixture was originally generated.\n\nWhat's a \"fixture\"?\n~~~~~~~~~~~~~~~~~~~\n\nA *fixture* is a collection of files that contain the serialized contents of\nthe database. Each fixture has a unique name, and the files that comprise the\nfixture can be distributed over multiple directories, in multiple applications.\n\nDjango will search in three locations for fixtures:\n\n1. In the ``fixtures`` directory of every installed application\n2. In any directory named in the :setting:`FIXTURE_DIRS` setting\n3. In the literal path named by the fixture\n\nDjango will load any and all fixtures it finds in these locations that match\nthe provided fixture names.\n\nIf the named fixture has a file extension, only fixtures of that type\nwill be loaded. For example::\n\n    django-admin.py loaddata mydata.json\n\nwould only load JSON fixtures called ``mydata``. The fixture extension\nmust correspond to the registered name of a\n:ref:`serializer <serialization-formats>` (e.g., ``json`` or ``xml``).\n\nIf you omit the extensions, Django will search all available fixture types\nfor a matching fixture. For example::\n\n    django-admin.py loaddata mydata\n\nwould look for any fixture of any fixture type called ``mydata``. If a fixture\ndirectory contained ``mydata.json``, that fixture would be loaded\nas a JSON fixture.\n\nThe fixtures that are named can include directory components. These\ndirectories will be included in the search path. For example::\n\n    django-admin.py loaddata foo/bar/mydata.json\n\nwould search ``<appname>/fixtures/foo/bar/mydata.json`` for each installed\napplication,  ``<dirname>/foo/bar/mydata.json`` for each directory in\n:setting:`FIXTURE_DIRS`, and the literal path ``foo/bar/mydata.json``.\n\nWhen fixture files are processed, the data is saved to the database as is.\nModel defined ``save`` methods and ``pre_save`` signals are not called.\n\nNote that the order in which fixture files are processed is undefined. However,\nall fixture data is installed as a single transaction, so data in\none fixture can reference data in another fixture. If the database backend\nsupports row-level constraints, these constraints will be checked at the\nend of the transaction.\n\nThe ``dumpdata`` command can be used to generate input for ``loaddata``.\n\nCompressed fixtures\n~~~~~~~~~~~~~~~~~~~\n\nFixtures may be compressed in ``zip``, ``gz``, or ``bz2`` format. For example::\n\n    django-admin.py loaddata mydata.json\n\nwould look for any of ``mydata.json``, ``mydata.json.zip``,\n``mydata.json.gz``, or ``mydata.json.bz2``. The first file contained within a\nzip-compressed archive is used.\n\nNote that if two fixtures with the same name but different\nfixture type are discovered (for example, if ``mydata.json`` and\n``mydata.xml.gz`` were found in the same fixture directory), fixture\ninstallation will be aborted, and any data installed in the call to\n``loaddata`` will be removed from the database.\n\n.. admonition:: MySQL with MyISAM and fixtures\n\n    The MyISAM storage engine of MySQL doesn't support transactions or\n    constraints, so if you use MyISAM, you won't get validation of fixture\n    data, or a rollback if multiple transaction files are found.\n\nDatabase-specific fixtures\n~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nIf you're in a multi-database setup, you might have fixture data that\nyou want to load onto one database, but not onto another. In this\nsituation, you can add database identifier into the names of your fixtures.\n\nFor example, if your :setting:`DATABASES` setting has a 'master' database\ndefined, name the fixture ``mydata.master.json`` or\n``mydata.master.json.gz`` and the fixture will only be loaded when you\nspecify you want to load data into the ``master`` database.\n\nmakemessages\n------------\n\n.. django-admin:: makemessages\n\nRuns over the entire source tree of the current directory and pulls out all\nstrings marked for translation. It creates (or updates) a message file in the\nconf/locale (in the django tree) or locale (for project and application)\ndirectory. After making changes to the messages files you need to compile them\nwith ``compilemessages`` for use with the builtin gettext support. See the\n:ref:`i18n documentation <how-to-create-language-files>` for details.\n\n.. django-admin-option:: --all\n\nUse the ``--all`` or ``-a`` option to update the message files for all\navailable languages.\n\nExample usage::\n\n    django-admin.py makemessages --all\n\n.. django-admin-option:: --extension\n\nUse the ``--extension`` or ``-e`` option to specify a list of file extensions\nto examine (default: \".html\", \".txt\").\n\nExample usage::\n\n    django-admin.py makemessages --locale=de --extension xhtml\n\nSeparate multiple extensions with commas or use -e or --extension multiple times::\n\n    django-admin.py makemessages --locale=de --extension=html,txt --extension xml\n\nUse the :djadminopt:`--locale` option to specify the locale to process.\n\nExample usage::\n\n    django-admin.py makemessages --locale=pt_BR\n\n.. django-admin-option:: --domain\n\nUse the ``--domain`` or ``-d`` option to change the domain of the messages files.\nCurrently supported:\n\n* ``django`` for all ``*.py``, ``*.html`` and ``*.txt`` files (default)\n* ``djangojs`` for ``*.js`` files\n\n.. django-admin-option:: --symlinks\n\nUse the ``--symlinks`` or ``-s`` option to follow symlinks to directories when\nlooking for new translation strings.\n\nExample usage::\n\n    django-admin.py makemessages --locale=de --symlinks\n\n.. django-admin-option:: --ignore\n\nUse the ``--ignore`` or ``-i`` option to ignore files or directories matching\nthe given :mod:`glob`-style pattern. Use multiple times to ignore more.\n\nThese patterns are used by default: ``'CVS'``, ``'.*'``, ``'*~'``\n\nExample usage::\n\n    django-admin.py makemessages --locale=en_US --ignore=apps/* --ignore=secret/*.html\n\n.. django-admin-option:: --no-default-ignore\n\nUse the ``--no-default-ignore`` option to disable the default values of\n:djadminopt:`--ignore`.\n\n.. django-admin-option:: --no-wrap\n\nUse the ``--no-wrap`` option to disable breaking long message lines into\nseveral lines in language files.\n\n.. django-admin-option:: --no-location\n\n.. versionadded:: 1.4\n\nUse the ``--no-location`` option to not write '``#: filename:line``'\ncomment lines in language files. Note that using this option makes it harder\nfor technically skilled translators to understand each message's context.\n\nrunfcgi [options]\n-----------------\n\n.. django-admin:: runfcgi\n\nStarts a set of FastCGI processes suitable for use with any Web server that\nsupports the FastCGI protocol. See the :doc:`FastCGI deployment documentation\n</howto/deployment/fastcgi>` for details. Requires the Python FastCGI module from\n`flup`_.\n\n.. versionadded:: 1.4\n    Internally, this wraps the WSGI application object specified by the\n    :setting:`WSGI_APPLICATION` setting.\n\n.. _flup: http://www.saddi.com/software/flup/\n\nThe options accepted by this command are passed to the FastCGI library and\ndon't use the ``'--'`` prefix as is usual for other Django management commands.\n\n.. django-admin-option:: protocol\n\n``protocol=PROTOCOL``\n\nProtocol to use. *PROTOCOL* can be ``fcgi``, ``scgi``, ``ajp``, etc.\n(default is ``fcgi``)\n\n.. django-admin-option:: host\n\n``host=HOSTNAME``\n\nHostname to listen on.\n\n.. django-admin-option:: port\n\n``port=PORTNUM``\n\nPort to listen on.\n\n.. django-admin-option:: socket\n\n``socket=FILE``\n\nUNIX socket to listen on.\n\n.. django-admin-option:: method\n\n``method=IMPL``\n\nPossible values: ``prefork`` or ``threaded`` (default ``prefork``)\n\n.. django-admin-option:: maxrequests\n\n``maxrequests=NUMBER``\n\nNumber of requests a child handles before it is killed and a new child is\nforked (0 means no limit).\n\n.. django-admin-option:: maxspare\n\n``maxspare=NUMBER``\n\nMax number of spare processes / threads.\n\n.. django-admin-option:: minspare\n\n``minspare=NUMBER``\n\nMin number of spare processes / threads.\n\n.. django-admin-option:: maxchildren\n\n``maxchildren=NUMBER``\n\nHard limit number of processes / threads.\n\n.. django-admin-option:: daemonize\n\n``daemonize=BOOL``\n\nWhether to detach from terminal.\n\n.. django-admin-option:: pidfile\n\n``pidfile=FILE``\n\nWrite the spawned process-id to file *FILE*.\n\n.. django-admin-option:: workdir\n\n``workdir=DIRECTORY``\n\nChange to directory *DIRECTORY* when daemonizing.\n\n.. django-admin-option:: debug\n\n``debug=BOOL``\n\nSet to true to enable flup tracebacks.\n\n.. django-admin-option:: outlog\n\n``outlog=FILE``\n\nWrite stdout to the *FILE* file.\n\n.. django-admin-option:: errlog\n\n``errlog=FILE``\n\nWrite stderr to the *FILE* file.\n\n.. django-admin-option:: umask\n\n``umask=UMASK``\n\nUmask to use when daemonizing. The value is interpeted as an octal number\n(default value is ``022``).\n\nExample usage::\n\n    django-admin.py runfcgi socket=/tmp/fcgi.sock method=prefork daemonize=true \\\n        pidfile=/var/run/django-fcgi.pid\n\nRun a FastCGI server as a daemon and write the spawned PID in a file.\n\nrunserver [port or address:port]\n--------------------------------\n\n.. django-admin:: runserver\n\nStarts a lightweight development Web server on the local machine. By default,\nthe server runs on port 8000 on the IP address ``127.0.0.1``. You can pass in an\nIP address and port number explicitly.\n\nIf you run this script as a user with normal privileges (recommended), you\nmight not have access to start a port on a low port number. Low port numbers\nare reserved for the superuser (root).\n\n.. versionadded:: 1.4\n    This server uses the WSGI application object specified by the\n    :setting:`WSGI_APPLICATION` setting.\n\nDO NOT USE THIS SERVER IN A PRODUCTION SETTING. It has not gone through\nsecurity audits or performance tests. (And that's how it's gonna stay. We're in\nthe business of making Web frameworks, not Web servers, so improving this\nserver to be able to handle a production environment is outside the scope of\nDjango.)\n\nThe development server automatically reloads Python code for each request, as\nneeded. You don't need to restart the server for code changes to take effect.\n\nWhen you start the server, and each time you change Python code while the\nserver is running, the server will validate all of your installed models. (See\nthe ``validate`` command below.) If the validator finds errors, it will print\nthem to standard output, but it won't stop the server.\n\nYou can run as many servers as you want, as long as they're on separate ports.\nJust execute ``django-admin.py runserver`` more than once.\n\nNote that the default IP address, ``127.0.0.1``, is not accessible from other\nmachines on your network. To make your development server viewable to other\nmachines on the network, use its own IP address (e.g. ``192.168.2.1``) or\n``0.0.0.0`` or ``::`` (with IPv6 enabled).\n\nYou can provide an IPv6 address surrounded by brackets\n(e.g. ``[200a::1]:8000``). This will automatically enable IPv6 support.\n\nA hostname containing ASCII-only characters can also be used.\n\nIf the :doc:`staticfiles</ref/contrib/staticfiles>` contrib app is enabled\n(default in new projects) the :djadmin:`runserver` command will be overriden\nwith its own :ref:`runserver<staticfiles-runserver>` command.\n\n.. django-admin-option:: --noreload\n\nUse the ``--noreload`` option to disable the use of the auto-reloader. This\nmeans any Python code changes you make while the server is running will *not*\ntake effect if the particular Python modules have already been loaded into\nmemory.\n\nExample usage::\n\n    django-admin.py runserver --noreload\n\n.. django-admin-option:: --nothreading\n\n.. versionadded:: 1.4\n\nSince version 1.4, the development server is multithreaded by default.\nUse the ``--nothreading`` option to disable the use of threading in the\ndevelopment server.\n\n.. django-admin-option:: --ipv6, -6\n\nUse the ``--ipv6`` (or shorter ``-6``) option to tell Django to use IPv6 for\nthe development server. This changes the default IP address from\n``127.0.0.1`` to ``::1``.\n\nExample usage::\n\n    django-admin.py runserver --ipv6\n\nExamples of using different ports and addresses\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nPort 8000 on IP address ``127.0.0.1``::\n\n    django-admin.py runserver\n\nPort 8000 on IP address ``1.2.3.4``::\n\n    django-admin.py runserver 1.2.3.4:8000\n\nPort 7000 on IP address ``127.0.0.1``::\n\n    django-admin.py runserver 7000\n\nPort 7000 on IP address ``1.2.3.4``::\n\n    django-admin.py runserver 1.2.3.4:7000\n\nPort 8000 on IPv6 address ``::1``::\n\n    django-admin.py runserver -6\n\nPort 7000 on IPv6 address ``::1``::\n\n    django-admin.py runserver -6 7000\n\nPort 7000 on IPv6 address ``2001:0db8:1234:5678::9``::\n\n    django-admin.py runserver [2001:0db8:1234:5678::9]:7000\n\nPort 8000 on IPv4 address of host ``localhost``::\n\n    django-admin.py runserver localhost:8000\n\nPort 8000 on IPv6 address of host ``localhost``::\n\n    django-admin.py runserver -6 localhost:8000\n\nServing static files with the development server\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nBy default, the development server doesn't serve any static files for your site\n(such as CSS files, images, things under :setting:`MEDIA_URL` and so forth). If\nyou want to configure Django to serve static media, read :doc:`/howto/static-files`.\n\nshell\n-----\n\n.. django-admin:: shell\n\nStarts the Python interactive interpreter.\n\nDjango will use IPython_ or bpython_ if either is installed. If you have a\nrich shell installed but want to force use of the \"plain\" Python interpreter,\nuse the ``--plain`` option, like so::\n\n    django-admin.py shell --plain\n\n.. versionchanged:: 1.5\n\nIf you would like to specify either IPython or bpython as your interpreter if\nyou have both installed you can specify an alternative interpreter interface\nwith the ``-i`` or ``--interface`` options like so:\n\nIPython::\n\n    django-admin.py shell -i ipython\n    django-admin.py shell --interface ipython\n\n\nbpython::\n\n    django-admin.py shell -i bpython\n    django-admin.py shell --interface bpython\n\n\n.. _IPython: http://ipython.scipy.org/\n.. _bpython: http://bpython-interpreter.org/\n\nsql <appname appname ...>\n-------------------------\n\n.. django-admin:: sql\n\nPrints the CREATE TABLE SQL statements for the given app name(s).\n\nThe :djadminopt:`--database` option can be used to specify the database for\nwhich to print the SQL.\n\nsqlall <appname appname ...>\n----------------------------\n\n.. django-admin:: sqlall\n\nPrints the CREATE TABLE and initial-data SQL statements for the given app name(s).\n\nRefer to the description of ``sqlcustom`` for an explanation of how to\nspecify initial data.\n\nThe :djadminopt:`--database` option can be used to specify the database for\nwhich to print the SQL.\n\nsqlclear <appname appname ...>\n------------------------------\n\n.. django-admin:: sqlclear\n\nPrints the DROP TABLE SQL statements for the given app name(s).\n\nThe :djadminopt:`--database` option can be used to specify the database for\nwhich to print the SQL.\n\nsqlcustom <appname appname ...>\n-------------------------------\n\n.. django-admin:: sqlcustom\n\nPrints the custom SQL statements for the given app name(s).\n\nFor each model in each specified app, this command looks for the file\n``<appname>/sql/<modelname>.sql``, where ``<appname>`` is the given app name and\n``<modelname>`` is the model's name in lowercase. For example, if you have an\napp ``news`` that includes a ``Story`` model, ``sqlcustom`` will attempt\nto read a file ``news/sql/story.sql`` and append it to the output of this\ncommand.\n\nEach of the SQL files, if given, is expected to contain valid SQL. The SQL\nfiles are piped directly into the database after all of the models'\ntable-creation statements have been executed. Use this SQL hook to make any\ntable modifications, or insert any SQL functions into the database.\n\nNote that the order in which the SQL files are processed is undefined.\n\nThe :djadminopt:`--database` option can be used to specify the database for\nwhich to print the SQL.\n\nsqlflush\n--------\n\n.. django-admin:: sqlflush\n\nPrints the SQL statements that would be executed for the :djadmin:`flush`\ncommand.\n\nThe :djadminopt:`--database` option can be used to specify the database for\nwhich to print the SQL.\n\nsqlindexes <appname appname ...>\n--------------------------------\n\n.. django-admin:: sqlindexes\n\nPrints the CREATE INDEX SQL statements for the given app name(s).\n\nThe :djadminopt:`--database` option can be used to specify the database for\nwhich to print the SQL.\n\nsqlsequencereset <appname appname ...>\n--------------------------------------\n\n.. django-admin:: sqlsequencereset\n\nPrints the SQL statements for resetting sequences for the given app name(s).\n\nSequences are indexes used by some database engines to track the next available\nnumber for automatically incremented fields.\n\nUse this command to generate SQL which will fix cases where a sequence is out\nof sync with its automatically incremented field data.\n\nThe :djadminopt:`--database` option can be used to specify the database for\nwhich to print the SQL.\n\nstartapp <appname> [destination]\n--------------------------------\n\n.. django-admin:: startapp\n\nCreates a Django app directory structure for the given app name in the current\ndirectory or the given destination.\n\n.. versionchanged:: 1.4\n\nBy default the directory created contains a ``models.py`` file and other app\ntemplate files. (See the `source`_ for more details.) If only the app\nname is given, the app directory will be created in the current working\ndirectory.\n\nIf the optional destination is provided, Django will use that existing\ndirectory rather than creating a new one. You can use '.' to denote the current\nworking directory.\n\nFor example::\n\n    django-admin.py startapp myapp /Users/jezdez/Code/myapp\n\n.. versionadded:: 1.4\n.. django-admin-option:: --template\n\nWith the ``--template`` option, you can use a custom app template by providing\neither the path to a directory with the app template file, or a path to a\ncompressed file (``.tar.gz``, ``.tar.bz2``, ``.tgz``, ``.tbz``, ``.zip``)\ncontaining the app template files.\n\nFor example, this would look for an app template in the given directory when\ncreating the ``myapp`` app::\n\n    django-admin.py startapp --template=/Users/jezdez/Code/my_app_template myapp\n\nDjango will also accept URLs (``http``, ``https``, ``ftp``) to compressed\narchives with the app template files, downloading and extracting them on the\nfly.\n\nFor example, taking advantage of Github's feature to expose repositories as\nzip files, you can use a URL like::\n\n    django-admin.py startapp --template=https://github.com/githubuser/django-app-template/archive/master.zip myapp\n\n.. versionadded:: 1.4\n\nWhen Django copies the app template files, it also renders certain files\nthrough the template engine: the files whose extensions match the\n``--extension`` option (``py`` by default) and the files whose names are passed\nwith the ``--name`` option. The :class:`template context\n<django.template.Context>` used is:\n\n- Any option passed to the startapp command (among the command's supported\n  options)\n- ``app_name`` -- the app name as passed to the command\n- ``app_directory`` -- the full path of the newly created app\n\n.. _render_warning:\n\n.. warning::\n\n    When the app template files are rendered with the Django template\n    engine (by default all ``*.py`` files), Django will also replace all\n    stray template variables contained. For example, if one of the Python files\n    contains a docstring explaining a particular feature related\n    to template rendering, it might result in an incorrect example.\n\n    To work around this problem, you can use the :ttag:`templatetag`\n    templatetag to \"escape\" the various parts of the template syntax.\n\n.. _source: https://github.com/django/django/tree/master/django/conf/app_template/\n\nstartproject <projectname> [destination]\n----------------------------------------\n\n.. django-admin:: startproject\n\nCreates a Django project directory structure for the given project name in\nthe current directory or the given destination.\n\n.. versionchanged:: 1.4\n\nBy default, the new directory contains ``manage.py`` and a project package\n(containing a ``settings.py`` and other files). See the `template source`_ for\ndetails.\n\nIf only the project name is given, both the project directory and project\npackage will be named ``<projectname>`` and the project directory\nwill be created in the current working directory.\n\nIf the optional destination is provided, Django will use that existing\ndirectory as the project directory, and create ``manage.py`` and the project\npackage within it. Use '.' to denote the current working directory.\n\nFor example::\n\n    django-admin.py startproject myproject /Users/jezdez/Code/myproject_repo\n\n.. versionadded:: 1.4\n\nAs with the :djadmin:`startapp` command, the ``--template`` option lets you\nspecify a directory, file path or URL of a custom project template. See the\n:djadmin:`startapp` documentation for details of supported project template\nformats.\n\nFor example, this would look for a project template in the given directory\nwhen creating the ``myproject`` project::\n\n    django-admin.py startproject --template=/Users/jezdez/Code/my_project_template myproject\n\nDjango will also accept URLs (``http``, ``https``, ``ftp``) to compressed\narchives with the project template files, downloading and extracting them on the\nfly.\n\nFor example, taking advantage of Github's feature to expose repositories as\nzip files, you can use a URL like::\n\n    django-admin.py startproject --template=https://github.com/githubuser/django-project-template/archive/master.zip myproject\n\nWhen Django copies the project template files, it also renders certain files\nthrough the template engine: the files whose extensions match the\n``--extension`` option (``py`` by default) and the files whose names are passed\nwith the ``--name`` option. The :class:`template context\n<django.template.Context>` used is:\n\n- Any option passed to the startproject command\n- ``project_name`` -- the project name as passed to the command\n- ``project_directory`` -- the full path of the newly created project\n- ``secret_key`` -- a random key for the :setting:`SECRET_KEY` setting\n\nPlease also see the :ref:`rendering warning <render_warning>` as mentioned\nfor :djadmin:`startapp`.\n\n.. _`template source`: https://github.com/django/django/tree/master/django/conf/project_template/\n\nsyncdb\n------\n\n.. django-admin:: syncdb\n\nCreates the database tables for all apps in :setting:`INSTALLED_APPS` whose\ntables have not already been created.\n\nUse this command when you've added new applications to your project and want to\ninstall them in the database. This includes any apps shipped with Django that\nmight be in :setting:`INSTALLED_APPS` by default. When you start a new project,\nrun this command to install the default apps.\n\n.. admonition:: Syncdb will not alter existing tables\n\n   ``syncdb`` will only create tables for models which have not yet been\n   installed. It will *never* issue ``ALTER TABLE`` statements to match\n   changes made to a model class after installation. Changes to model classes\n   and database schemas often involve some form of ambiguity and, in those\n   cases, Django would have to guess at the correct changes to make. There is\n   a risk that critical data would be lost in the process.\n\n   If you have made changes to a model and wish to alter the database tables\n   to match, use the ``sql`` command to display the new SQL structure and\n   compare that to your existing table schema to work out the changes.\n\nIf you're installing the ``django.contrib.auth`` application, ``syncdb`` will\ngive you the option of creating a superuser immediately.\n\n``syncdb`` will also search for and install any fixture named ``initial_data``\nwith an appropriate extension (e.g. ``json`` or ``xml``). See the\ndocumentation for ``loaddata`` for details on the specification of fixture\ndata files.\n\nThe :djadminopt:`--noinput` option may be provided to suppress all user\nprompts.\n\nThe :djadminopt:`--database` option can be used to specify the database to\nsynchronize.\n\n--no-initial-data\n~~~~~~~~~~~~~~~~~\n\n.. versionadded:: 1.5\n\nUse ``--no-initial-data`` to avoid loading the initial_data fixture.\n\ntest <app or test identifier>\n-----------------------------\n\n.. django-admin:: test\n\nRuns tests for all installed models. See :doc:`/topics/testing/index` for more\ninformation.\n\n.. django-admin-option:: --failfast\n\nThe ``--failfast`` option can be used to stop running tests and report the\nfailure immediately after a test fails.\n\n.. versionadded:: 1.4\n.. django-admin-option:: --testrunner\n\nThe ``--testrunner`` option can be used to control the test runner class that\nis used to execute tests. If this value is provided, it overrides the value\nprovided by the :setting:`TEST_RUNNER` setting.\n\n.. versionadded:: 1.4\n.. django-admin-option:: --liveserver\n\nThe ``--liveserver`` option can be used to override the default address where\nthe live server (used with :class:`~django.test.LiveServerTestCase`) is\nexpected to run from. The default value is ``localhost:8081``.\n\ntestserver <fixture fixture ...>\n--------------------------------\n\n.. django-admin:: testserver\n\nRuns a Django development server (as in ``runserver``) using data from the\ngiven fixture(s).\n\nFor example, this command::\n\n    django-admin.py testserver mydata.json\n\n...would perform the following steps:\n\n1. Create a test database, as described in :ref:`the-test-database`.\n2. Populate the test database with fixture data from the given fixtures.\n   (For more on fixtures, see the documentation for ``loaddata`` above.)\n3. Runs the Django development server (as in ``runserver``), pointed at\n   this newly created test database instead of your production database.\n\nThis is useful in a number of ways:\n\n* When you're writing :doc:`unit tests </topics/testing/overview>` of how your views\n  act with certain fixture data, you can use ``testserver`` to interact with\n  the views in a Web browser, manually.\n\n* Let's say you're developing your Django application and have a \"pristine\"\n  copy of a database that you'd like to interact with. You can dump your\n  database to a fixture (using the ``dumpdata`` command, explained above),\n  then use ``testserver`` to run your Web application with that data. With\n  this arrangement, you have the flexibility of messing up your data\n  in any way, knowing that whatever data changes you're making are only\n  being made to a test database.\n\nNote that this server does *not* automatically detect changes to your Python\nsource code (as ``runserver`` does). It does, however, detect changes to\ntemplates.\n\n.. django-admin-option:: --addrport [port number or ipaddr:port]\n\nUse ``--addrport`` to specify a different port, or IP address and port, from\nthe default of ``127.0.0.1:8000``. This value follows exactly the same format and\nserves exactly the same function as the argument to the ``runserver`` command.\n\nExamples:\n\nTo run the test server on port 7000 with ``fixture1`` and ``fixture2``::\n\n    django-admin.py testserver --addrport 7000 fixture1 fixture2\n    django-admin.py testserver fixture1 fixture2 --addrport 7000\n\n(The above statements are equivalent. We include both of them to demonstrate\nthat it doesn't matter whether the options come before or after the fixture\narguments.)\n\nTo run on 1.2.3.4:7000 with a ``test`` fixture::\n\n    django-admin.py testserver --addrport 1.2.3.4:7000 test\n\nThe :djadminopt:`--noinput` option may be provided to suppress all user\nprompts.\n\nvalidate\n--------\n\n.. django-admin:: validate\n\nValidates all installed models (according to the :setting:`INSTALLED_APPS`\nsetting) and prints validation errors to standard output.\n\nCommands provided by applications\n=================================\n\nSome commands are only available when the ``django.contrib`` application that\n:doc:`implements </howto/custom-management-commands>` them has been\n:setting:`enabled <INSTALLED_APPS>`. This section describes them grouped by\ntheir application.\n\n``django.contrib.auth``\n-----------------------\n\nchangepassword\n~~~~~~~~~~~~~~\n\n.. django-admin:: changepassword\n\nThis command is only available if Django's :doc:`authentication system\n</topics/auth/index>` (``django.contrib.auth``) is installed.\n\nAllows changing a user's password. It prompts you to enter twice the password of\nthe user given as parameter. If they both match, the new password will be\nchanged immediately. If you do not supply a user, the command will attempt to\nchange the password whose username matches the current user.\n\n.. versionadded:: 1.4\n\nUse the ``--database`` option to specify the database to query for the user. If\nit's not supplied, Django will use the ``default`` database.\n\nExample usage::\n\n    django-admin.py changepassword ringo\n\ncreatesuperuser\n~~~~~~~~~~~~~~~\n\n.. django-admin:: createsuperuser\n\nThis command is only available if Django's :doc:`authentication system\n</topics/auth/index>` (``django.contrib.auth``) is installed.\n\nCreates a superuser account (a user who has all permissions). This is\nuseful if you need to create an initial superuser account but did not\ndo so during ``syncdb``, or if you need to programmatically generate\nsuperuser accounts for your site(s).\n\nWhen run interactively, this command will prompt for a password for\nthe new superuser account. When run non-interactively, no password\nwill be set, and the superuser account will not be able to log in until\na password has been manually set for it.\n\n.. django-admin-option:: --username\n.. django-admin-option:: --email\n\nThe username and email address for the new account can be supplied by\nusing the ``--username`` and ``--email`` arguments on the command\nline. If either of those is not supplied, ``createsuperuser`` will prompt for\nit when running interactively.\n\n.. versionadded:: 1.4\n\nUse the ``--database`` option to specify the database into which the superuser\nobject will be saved.\n\n``django.contrib.gis``\n----------------------\n\nogrinspect\n~~~~~~~~~~\n\nThis command is only available if :doc:`GeoDjango </ref/contrib/gis/index>`\n(``django.contrib.gis``) is installed.\n\nPlease refer to its :djadmin:`description <ogrinspect>` in the GeoDjango\ndocumentation.\n\n``django.contrib.sessions``\n---------------------------\n\nclearsessions\n~~~~~~~~~~~~~~~\n\n.. django-admin:: clearsessions\n\nCan be run as a cron job or directly to clean out expired sessions.\n\n``django.contrib.sitemaps``\n---------------------------\n\nping_google\n~~~~~~~~~~~\n\nThis command is only available if the :doc:`Sitemaps framework\n</ref/contrib/sitemaps>` (``django.contrib.sitemaps``) is installed.\n\nPlease refer to its :djadmin:`description <ping_google>` in the Sitemaps\ndocumentation.\n\n``django.contrib.staticfiles``\n------------------------------\n\ncollectstatic\n~~~~~~~~~~~~~\n\nThis command is only available if the :doc:`static files application\n</howto/static-files>` (``django.contrib.staticfiles``) is installed.\n\nPlease refer to its :djadmin:`description <collectstatic>` in the\n:doc:`staticfiles </ref/contrib/staticfiles>` documentation.\n\nfindstatic\n~~~~~~~~~~\n\nThis command is only available if the :doc:`static files application\n</howto/static-files>` (``django.contrib.staticfiles``) is installed.\n\nPlease refer to its :djadmin:`description <findstatic>` in the :doc:`staticfiles\n</ref/contrib/staticfiles>` documentation.\n\nDefault options\n===============\n\nAlthough some commands may allow their own custom options, every command\nallows for the following options:\n\n.. django-admin-option:: --pythonpath\n\nExample usage::\n\n    django-admin.py syncdb --pythonpath='/home/djangoprojects/myproject'\n\nAdds the given filesystem path to the Python `import search path`_. If this\nisn't provided, ``django-admin.py`` will use the ``PYTHONPATH`` environment\nvariable.\n\nNote that this option is unnecessary in ``manage.py``, because it takes care of\nsetting the Python path for you.\n\n.. _import search path: http://diveintopython.net/getting_to_know_python/everything_is_an_object.html\n\n.. django-admin-option:: --settings\n\nExample usage::\n\n    django-admin.py syncdb --settings=mysite.settings\n\nExplicitly specifies the settings module to use. The settings module should be\nin Python package syntax, e.g. ``mysite.settings``. If this isn't provided,\n``django-admin.py`` will use the ``DJANGO_SETTINGS_MODULE`` environment\nvariable.\n\nNote that this option is unnecessary in ``manage.py``, because it uses\n``settings.py`` from the current project by default.\n\n.. django-admin-option:: --traceback\n\nExample usage::\n\n    django-admin.py syncdb --traceback\n\nBy default, ``django-admin.py`` will show a simple error message whenever an\nerror occurs. If you specify ``--traceback``, ``django-admin.py``  will\noutput a full stack trace whenever an exception is raised.\n\n.. django-admin-option:: --verbosity\n\nExample usage::\n\n    django-admin.py syncdb --verbosity 2\n\nUse ``--verbosity`` to specify the amount of notification and debug information\nthat ``django-admin.py`` should print to the console.\n\n* ``0`` means no output.\n* ``1`` means normal output (default).\n* ``2`` means verbose output.\n* ``3`` means *very* verbose output.\n\nCommon options\n==============\n\nThe following options are not available on every command, but they are common\nto a number of commands.\n\n.. django-admin-option:: --database\n\nUsed to specify the database on which a command will operate. If not\nspecified, this option will default to an alias of ``default``.\n\nFor example, to dump data from the database with the alias ``master``::\n\n    django-admin.py dumpdata --database=master\n\n.. django-admin-option:: --exclude\n\nExclude a specific application from the applications whose contents is\noutput. For example, to specifically exclude the ``auth`` application from\nthe output of dumpdata, you would call::\n\n    django-admin.py dumpdata --exclude=auth\n\nIf you want to exclude multiple applications, use multiple ``--exclude``\ndirectives::\n\n    django-admin.py dumpdata --exclude=auth --exclude=contenttypes\n\n.. django-admin-option:: --locale\n\nUse the ``--locale`` or ``-l`` option to specify the locale to process.\nIf not provided all locales are processed.\n\n.. django-admin-option:: --noinput\n\nUse the ``--noinput`` option to suppress all user prompting, such as \"Are\nyou sure?\" confirmation messages. This is useful if ``django-admin.py`` is\nbeing executed as an unattended, automated script.\n\nExtra niceties\n==============\n\n.. _syntax-coloring:\n\nSyntax coloring\n---------------\n\nThe ``django-admin.py`` / ``manage.py`` commands will use pretty\ncolor-coded output if your terminal supports ANSI-colored output. It\nwon't use the color codes if you're piping the command's output to\nanother program.\n\nThe colors used for syntax highlighting can be customized. Django\nships with three color palettes:\n\n* ``dark``, suited to terminals that show white text on a black\n  background. This is the default palette.\n\n* ``light``, suited to terminals that show black text on a white\n  background.\n\n* ``nocolor``, which disables syntax highlighting.\n\nYou select a palette by setting a ``DJANGO_COLORS`` environment\nvariable to specify the palette you want to use. For example, to\nspecify the ``light`` palette under a Unix or OS/X BASH shell, you\nwould run the following at a command prompt::\n\n    export DJANGO_COLORS=\"light\"\n\nYou can also customize the colors that are used. Django specifies a\nnumber of roles in which color is used:\n\n* ``error`` - A major error.\n* ``notice`` - A minor error.\n* ``sql_field`` - The name of a model field in SQL.\n* ``sql_coltype`` - The type of a model field in SQL.\n* ``sql_keyword`` - A SQL keyword.\n* ``sql_table`` - The name of a model in SQL.\n* ``http_info`` - A 1XX HTTP Informational server response.\n* ``http_success`` - A 2XX HTTP Success server response.\n* ``http_not_modified`` - A 304 HTTP Not Modified server response.\n* ``http_redirect`` - A 3XX HTTP Redirect server response other than 304.\n* ``http_not_found`` - A 404 HTTP Not Found server response.\n* ``http_bad_request`` - A 4XX HTTP Bad Request server response other than 404.\n* ``http_server_error`` - A 5XX HTTP Server Error response.\n\nEach of these roles can be assigned a specific foreground and\nbackground color, from the following list:\n\n* ``black``\n* ``red``\n* ``green``\n* ``yellow``\n* ``blue``\n* ``magenta``\n* ``cyan``\n* ``white``\n\nEach of these colors can then be modified by using the following\ndisplay options:\n\n* ``bold``\n* ``underscore``\n* ``blink``\n* ``reverse``\n* ``conceal``\n\nA color specification follows one of the following patterns:\n\n* ``role=fg``\n* ``role=fg/bg``\n* ``role=fg,option,option``\n* ``role=fg/bg,option,option``\n\nwhere ``role`` is the name of a valid color role, ``fg`` is the\nforeground color, ``bg`` is the background color and each ``option``\nis one of the color modifying options. Multiple color specifications\nare then separated by semicolon. For example::\n\n    export DJANGO_COLORS=\"error=yellow/blue,blink;notice=magenta\"\n\nwould specify that errors be displayed using blinking yellow on blue,\nand notices displayed using magenta. All other color roles would be\nleft uncolored.\n\nColors can also be specified by extending a base palette. If you put\na palette name in a color specification, all the colors implied by that\npalette will be loaded. So::\n\n    export DJANGO_COLORS=\"light;error=yellow/blue,blink;notice=magenta\"\n\nwould specify the use of all the colors in the light color palette,\n*except* for the colors for errors and notices which would be\noverridden as specified.\n\nBash completion\n---------------\n\nIf you use the Bash shell, consider installing the Django bash completion\nscript, which lives in ``extras/django_bash_completion`` in the Django\ndistribution. It enables tab-completion of ``django-admin.py`` and\n``manage.py`` commands, so you can, for instance...\n\n* Type ``django-admin.py``.\n* Press [TAB] to see all available options.\n* Type ``sql``, then [TAB], to see all available options whose names start\n  with ``sql``.\n\n\nSee :doc:`/howto/custom-management-commands` for how to add customized actions.\n\n\n==========================================\nRunning management commands from your code\n==========================================\n\n.. _call-command:\n\n.. function:: django.core.management.call_command(name, *args, **options)\n\nTo call a management command from code use ``call_command``.\n\n``name``\n  the name of the command to call.\n\n``*args``\n  a list of arguments accepted by the command.\n\n``**options``\n  named options accepted on the command-line.\n\nExamples::\n\n      from django.core import management\n      management.call_command('flush', verbosity=0, interactive=False)\n      management.call_command('loaddata', 'test_data', verbosity=0)\n\nOutput redirection\n==================\n\nNote that you can redirect standard output and error streams as all commands\nsupport the ``stdout`` and ``stderr`` options. For example, you could write::\n\n    with open('/tmp/command_output') as f:\n        management.call_command('dumpdata', stdout=f)\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/exceptions.txt",
    "content": "=================\nDjango Exceptions\n=================\n\n\nDjango raises some Django specific exceptions as well as many standard\nPython exceptions.\n\nDjango-specific Exceptions\n==========================\n\n.. module:: django.core.exceptions\n    :synopsis: Django specific exceptions\n\nObjectDoesNotExist and DoesNotExist\n-----------------------------------\n.. exception:: DoesNotExist\n.. exception:: ObjectDoesNotExist\n\n    The :exc:`DoesNotExist` exception is raised when an object is not found\n    for the given parameters of a query.\n\n    :exc:`ObjectDoesNotExist` is defined in :mod:`django.core.exceptions`.\n    :exc:`DoesNotExist` is a subclass of the base :exc:`ObjectDoesNotExist`\n    exception that is provided on every model class as a way of\n    identifying the specific type of object that could not be found.\n\n    See :meth:`~django.db.models.query.QuerySet.get()` for further information\n    on :exc:`ObjectDoesNotExist` and :exc:`DoesNotExist`.\n\nMultipleObjectsReturned\n-----------------------\n.. exception:: MultipleObjectsReturned\n\n    The :exc:`MultipleObjectsReturned` exception is raised by a query if only\n    one object is expected, but multiple objects are returned. A base version\n    of this exception is provided in :mod:`django.core.exceptions`; each model\n    class contains a subclassed version that can be used to identify the\n    specific object type that has returned multiple objects.\n\n    See :meth:`~django.db.models.query.QuerySet.get()` for further information.\n\nSuspiciousOperation\n-------------------\n.. exception:: SuspiciousOperation\n\n    The :exc:`SuspiciousOperation` exception is raised when a user has performed\n    an operation that should be considered suspicious from a security perspective,\n    such as tampering with a session cookie.\n\nPermissionDenied\n----------------\n.. exception:: PermissionDenied\n\n    The :exc:`PermissionDenied` exception is raised when a user does not have\n    permission to perform the action requested.\n\nViewDoesNotExist\n----------------\n.. exception:: ViewDoesNotExist\n\n    The :exc:`ViewDoesNotExist` exception is raised by\n    :mod:`django.core.urlresolvers` when a requested view does not exist.\n\nMiddlewareNotUsed\n-----------------\n.. exception:: MiddlewareNotUsed\n\n    The :exc:`MiddlewareNotUsed` exception is raised when a middleware is not\n    used in the server configuration.\n\nImproperlyConfigured\n--------------------\n.. exception:: ImproperlyConfigured\n\n    The :exc:`ImproperlyConfigured` exception is raised when Django is\n    somehow improperly configured -- for example, if a value in ``settings.py``\n    is incorrect or unparseable.\n\nFieldError\n----------\n.. exception:: FieldError\n\n    The :exc:`FieldError` exception is raised when there is a problem with a\n    model field. This can happen for several reasons:\n\n    - A field in a model clashes with a field of the same name from an\n      abstract base class\n    - An infinite loop is caused by ordering\n    - A keyword cannot be parsed from the filter parameters\n    - A field cannot be determined from a keyword in the query\n      parameters\n    - A join is not permitted on the specified field\n    - A field name is invalid\n    - A query contains invalid order_by arguments\n\nValidationError\n---------------\n.. exception:: ValidationError\n\n    The :exc:`ValidationError` exception is raised when data fails form or\n    model field validation. For more information about validation, see\n    :doc:`Form and Field Validation </ref/forms/validation>`,\n    :ref:`Model Field Validation <validating-objects>` and the\n    :doc:`Validator Reference </ref/validators>`.\n\n.. currentmodule:: django.core.urlresolvers\n\nNoReverseMatch\n--------------\n.. exception:: NoReverseMatch\n\n    The :exc:`NoReverseMatch` exception is raised by\n    :mod:`django.core.urlresolvers` when a matching URL in your URLconf\n    cannot be identified based on the parameters supplied.\n\n.. currentmodule:: django.db\n\nDatabase Exceptions\n===================\n\nDjango wraps the standard database exceptions :exc:`DatabaseError` and\n:exc:`IntegrityError` so that your Django code has a guaranteed common\nimplementation of these classes. These database exceptions are\nprovided in :mod:`django.db`.\n\n.. exception:: DatabaseError\n.. exception:: IntegrityError\n\nThe Django wrappers for database exceptions behave exactly the same as\nthe underlying database exceptions. See :pep:`249`, the Python Database API\nSpecification v2.0, for further information.\n\n.. exception:: models.ProtectedError\n\nRaised to prevent deletion of referenced objects when using\n:attr:`django.db.models.PROTECT`. Subclass of :exc:`IntegrityError`.\n\n.. currentmodule:: django.http\n\nHttp Exceptions\n===============\n\n.. exception:: UnreadablePostError\n\n    The :exc:`UnreadablePostError` is raised when a user cancels an upload.\n    It is available from :mod:`django.http`.\n\n.. currentmodule:: django.db.transaction\n\nTransaction Exceptions\n======================\n\n.. exception:: TransactionManagementError\n\n    The :exc:`TransactionManagementError` is raised for any and all problems\n    related to database transactions. It is available from\n    :mod:`django.db.transaction`.\n\nPython Exceptions\n=================\n\nDjango raises built-in Python exceptions when appropriate as well. See the\nPython documentation for further information on the\nbuilt-in :mod:`exceptions`.\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/files/file.txt",
    "content": "The ``File`` object\n===================\n\nThe :mod:`django.core.files` module and its submodules contain built-in classes\nfor basic file handling in Django.\n\n.. currentmodule:: django.core.files\n\nThe ``File`` Class\n------------------\n\n.. class:: File(file_object)\n\n    The :class:`File` is a thin wrapper around Python's built-in file object\n    with some Django-specific additions. Internally, Django uses this class\n    any time it needs to represent a file.\n\n    :class:`File` objects have the following attributes and methods:\n\n    .. attribute:: name\n\n        The name of file including the relative path from\n        :setting:`MEDIA_ROOT`.\n\n    .. attribute:: size\n\n        The size of the file in bytes.\n\n    .. attribute:: file\n\n        The underlying Python ``file`` object passed to\n        :class:`~django.core.files.File`.\n\n    .. attribute:: mode\n\n        The read/write mode for the file.\n\n    .. method:: open([mode=None])\n\n        Open or reopen the file (which by definition also does\n        ``File.seek(0)``). The ``mode`` argument allows the same values\n        as Python's standard ``open()``.\n\n        When reopening a file, ``mode`` will override whatever mode the file\n        was originally opened with; ``None`` means to reopen with the original\n        mode.\n\n    .. method:: read([num_bytes=None])\n\n        Read content from the file. The optional ``size`` is the number of\n        bytes to read; if not specified, the file will be read to the end.\n\n    .. method:: __iter__()\n\n        Iterate over the file yielding one line at a time.\n\n    .. method:: chunks([chunk_size=None])\n\n        Iterate over the file yielding \"chunks\" of a given size. ``chunk_size``\n        defaults to 64 KB.\n\n        This is especially useful with very large files since it allows them to\n        be streamed off disk and avoids storing the whole file in memory.\n\n    .. method:: multiple_chunks([chunk_size=None])\n\n        Returns ``True`` if the file is large enough to require multiple chunks\n        to access all of its content give some ``chunk_size``.\n\n    .. method:: write([content])\n\n        Writes the specified content string to the file. Depending on the\n        storage system behind the scenes, this content might not be fully\n        committed until ``close()`` is called on the file.\n\n    .. method:: close()\n\n        Close the file.\n\n    In addition to the listed methods, :class:`~django.core.files.File` exposes\n    the following attributes and methods of the underlying ``file`` object:\n    ``encoding``, ``fileno``, ``flush``, ``isatty``, ``newlines``,\n    ``read``, ``readinto``, ``readlines``, ``seek``, ``softspace``, ``tell``,\n    ``truncate``, ``writelines``, ``xreadlines``.\n\n.. currentmodule:: django.core.files.base\n\nThe ``ContentFile`` Class\n-------------------------\n\n.. class:: ContentFile(File)\n\n    The ``ContentFile`` class inherits from :class:`~django.core.files.File`,\n    but unlike :class:`~django.core.files.File` it operates on string content\n    (bytes also supported), rather than an actual file. For example::\n\n        from __future__ import unicode_literals\n        from django.core.files.base import ContentFile\n\n        f1 = ContentFile(\"esta sentencia está en español\")\n        f2 = ContentFile(b\"these are bytes\")\n\n    .. versionchanged:: 1.5\n\n        ContentFile also accepts Unicode strings.\n\n.. currentmodule:: django.core.files.images\n\nThe ``ImageFile`` Class\n-----------------------\n\n.. class:: ImageFile(file_object)\n\n    Django provides a built-in class specifically for images.\n    :class:`django.core.files.images.ImageFile` inherits all the attributes\n    and methods of :class:`~django.core.files.File`, and additionally\n    provides the following:\n\n    .. attribute:: width\n\n        Width of the image in pixels.\n\n    .. attribute:: height\n\n        Height of the image in pixels.\n\n.. currentmodule:: django.core.files\n\nAdditional methods on files attached to objects\n-----------------------------------------------\n\nAny :class:`File` that's associated with an object (as with ``Car.photo``,\nbelow) will also have a couple of extra methods:\n\n.. method:: File.save(name, content, [save=True])\n\n    Saves a new file with the file name and contents provided. This will not\n    replace the existing file, but will create a new file and update the object\n    to point to it. If ``save`` is ``True``, the model's ``save()`` method will\n    be called once the file is saved. That is, these two lines::\n\n        >>> car.photo.save('myphoto.jpg', content, save=False)\n        >>> car.save()\n\n    are the same as this one line::\n\n        >>> car.photo.save('myphoto.jpg', content, save=True)\n\n    Note that the ``content`` argument must be an instance of either\n    :class:`File` or of a subclass of :class:`File`, such as\n    :class:`~django.core.files.base.ContentFile`.\n\n.. method:: File.delete([save=True])\n\n    Removes the file from the model instance and deletes the underlying file.\n    If ``save`` is ``True``, the model's ``save()`` method will be called once\n    the file is deleted.\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/files/index.txt",
    "content": "=============\nFile handling\n=============\n\n.. module:: django.core.files\n   :synopsis: File handling and storage\n\n.. toctree::\n   :maxdepth: 2\n\n   file\n   storage\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/files/storage.txt",
    "content": "File storage API\n================\n\n.. module:: django.core.files.storage\n\nGetting the current storage class\n---------------------------------\n\nDjango provides two convenient ways to access the current storage class:\n\n.. class:: DefaultStorage\n\n    :class:`~django.core.files.storage.DefaultStorage` provides\n    lazy access to the current default storage system as defined by\n    :setting:`DEFAULT_FILE_STORAGE`. :class:`DefaultStorage` uses\n    :func:`~django.core.files.storage.get_storage_class` internally.\n\n.. function:: get_storage_class([import_path=None])\n\n    Returns a class or module which implements the storage API.\n\n    When called without the ``import_path`` parameter ``get_storage_class``\n    will return the current default storage system as defined by\n    :setting:`DEFAULT_FILE_STORAGE`. If ``import_path`` is provided,\n    ``get_storage_class`` will attempt to import the class or module from the\n    given path and will return it if successful. An exception will be\n    raised if the import is unsuccessful.\n\nThe FileSystemStorage Class\n---------------------------\n\n.. class:: FileSystemStorage\n\n    The :class:`~django.core.files.storage.FileSystemStorage` class implements\n    basic file storage on a local filesystem. It inherits from\n    :class:`~django.core.files.storage.Storage` and provides implementations\n    for all the public methods thereof.\n\n    .. note::\n\n        The ``FileSystemStorage.delete()`` method will not raise\n        raise an exception if the given file name does not exist.\n\nThe Storage Class\n-----------------\n\n.. class:: Storage\n\n    The :class:`~django.core.files.storage.Storage` class provides a\n    standardized API for storing files, along with a set of default\n    behaviors that all other storage systems can inherit or override\n    as necessary.\n\n    .. method:: accessed_time(name)\n\n        Returns a ``datetime`` object containing the last accessed time of the\n        file. For storage systems that aren't able to return the last accessed\n        time this will raise ``NotImplementedError`` instead.\n\n    .. method:: created_time(name)\n\n        Returns a ``datetime`` object containing the creation time of the file.\n        For storage systems that aren't able to return the creation time this\n        will raise ``NotImplementedError`` instead.\n\n    .. method:: delete(name)\n\n        Deletes the file referenced by ``name``. If deletion is not supported\n        on the target storage system this will raise ``NotImplementedError``\n        instead\n\n    .. method:: exists(name)\n\n        Returns ``True`` if a file referenced by the given name already exists\n        in the storage system, or ``False`` if the name is available for a new\n        file.\n\n    .. method:: get_available_name(name)\n\n        Returns a filename based on the ``name`` parameter that's free and\n        available for new content to be written to on the target storage\n        system.\n\n\n    .. method:: get_valid_name(name)\n\n        Returns a filename based on the ``name`` parameter that's suitable\n        for use on the target storage system.\n\n    .. method:: listdir(path)\n\n        Lists the contents of the specified path, returning a 2-tuple of lists;\n        the first item being directories, the second item being files. For\n        storage systems that aren't able to provide such a listing, this will\n        raise a ``NotImplementedError`` instead.\n\n    .. method:: modified_time(name)\n\n        Returns a ``datetime`` object containing the last modified time. For\n        storage systems that aren't able to return the last modified time, this\n        will raise ``NotImplementedError`` instead.\n\n    .. method:: open(name, mode='rb')\n\n        Opens the file given by ``name``. Note that although the returned file\n        is guaranteed to be a ``File`` object, it might actually be some\n        subclass. In the case of remote file storage this means that\n        reading/writing could be quite slow, so be warned.\n\n    .. method:: path(name)\n\n        The local filesystem path where the file can be opened using Python's\n        standard ``open()``. For storage systems that aren't accessible from\n        the local filesystem, this will raise ``NotImplementedError`` instead.\n\n    .. method:: save(name, content)\n\n        Saves a new file using the storage system, preferably with the name\n        specified. If there already exists a file with this name ``name``, the\n        storage system may modify the filename as necessary to get a unique\n        name. The actual name of the stored file will be returned.\n\n        The ``content`` argument must be an instance of\n        :class:`django.core.files.File` or of a subclass of\n        :class:`~django.core.files.File`.\n\n    .. method:: size(name)\n\n        Returns the total size, in bytes, of the file referenced by ``name``.\n        For storage systems that aren't able to return the file size this will\n        raise ``NotImplementedError`` instead.\n\n    .. method:: url(name)\n\n        Returns the URL where the contents of the file referenced by ``name``\n        can be accessed. For storage systems that don't support access by URL\n        this will raise ``NotImplementedError`` instead.\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/forms/api.txt",
    "content": "=============\nThe Forms API\n=============\n\n.. module:: django.forms\n\n.. admonition:: About this document\n\n    This document covers the gritty details of Django's forms API. You should\n    read the :doc:`introduction to working with forms </topics/forms/index>`\n    first.\n\n.. _ref-forms-api-bound-unbound:\n\nBound and unbound forms\n-----------------------\n\nA :class:`Form` instance is either **bound** to a set of data, or **unbound**.\n\n* If it's **bound** to a set of data, it's capable of validating that data\n  and rendering the form as HTML with the data displayed in the HTML.\n\n* If it's **unbound**, it cannot do validation (because there's no data to\n  validate!), but it can still render the blank form as HTML.\n\n.. class:: Form\n\nTo create an unbound :class:`Form` instance, simply instantiate the class::\n\n    >>> f = ContactForm()\n\nTo bind data to a form, pass the data as a dictionary as the first parameter to\nyour :class:`Form` class constructor::\n\n    >>> data = {'subject': 'hello',\n    ...         'message': 'Hi there',\n    ...         'sender': 'foo@example.com',\n    ...         'cc_myself': True}\n    >>> f = ContactForm(data)\n\nIn this dictionary, the keys are the field names, which correspond to the\nattributes in your :class:`Form` class. The values are the data you're trying to\nvalidate. These will usually be strings, but there's no requirement that they be\nstrings; the type of data you pass depends on the :class:`Field`, as we'll see\nin a moment.\n\n.. attribute:: Form.is_bound\n\nIf you need to distinguish between bound and unbound form instances at runtime,\ncheck the value of the form's :attr:`~Form.is_bound` attribute::\n\n    >>> f = ContactForm()\n    >>> f.is_bound\n    False\n    >>> f = ContactForm({'subject': 'hello'})\n    >>> f.is_bound\n    True\n\nNote that passing an empty dictionary creates a *bound* form with empty data::\n\n    >>> f = ContactForm({})\n    >>> f.is_bound\n    True\n\nIf you have a bound :class:`Form` instance and want to change the data somehow,\nor if you want to bind an unbound :class:`Form` instance to some data, create\nanother :class:`Form` instance. There is no way to change data in a\n:class:`Form` instance. Once a :class:`Form` instance has been created, you\nshould consider its data immutable, whether it has data or not.\n\nUsing forms to validate data\n----------------------------\n\n.. method:: Form.is_valid()\n\nThe primary task of a :class:`Form` object is to validate data. With a bound\n:class:`Form` instance, call the :meth:`~Form.is_valid` method to run validation\nand return a boolean designating whether the data was valid::\n\n    >>> data = {'subject': 'hello',\n    ...         'message': 'Hi there',\n    ...         'sender': 'foo@example.com',\n    ...         'cc_myself': True}\n    >>> f = ContactForm(data)\n    >>> f.is_valid()\n    True\n\nLet's try with some invalid data. In this case, ``subject`` is blank (an error,\nbecause all fields are required by default) and ``sender`` is not a valid\nemail address::\n\n    >>> data = {'subject': '',\n    ...         'message': 'Hi there',\n    ...         'sender': 'invalid email address',\n    ...         'cc_myself': True}\n    >>> f = ContactForm(data)\n    >>> f.is_valid()\n    False\n\n.. attribute:: Form.errors\n\nAccess the :attr:`~Form.errors` attribute to get a dictionary of error\nmessages::\n\n    >>> f.errors\n    {'sender': [u'Enter a valid email address.'], 'subject': [u'This field is required.']}\n\nIn this dictionary, the keys are the field names, and the values are lists of\nUnicode strings representing the error messages. The error messages are stored\nin lists because a field can have multiple error messages.\n\nYou can access :attr:`~Form.errors` without having to call\n:meth:`~Form.is_valid` first. The form's data will be validated the first time\neither you call :meth:`~Form.is_valid` or access :attr:`~Form.errors`.\n\nThe validation routines will only get called once, regardless of how many times\nyou access :attr:`~Form.errors` or call :meth:`~Form.is_valid`. This means that\nif validation has side effects, those side effects will only be triggered once.\n\nBehavior of unbound forms\n~~~~~~~~~~~~~~~~~~~~~~~~~\n\nIt's meaningless to validate a form with no data, but, for the record, here's\nwhat happens with unbound forms::\n\n    >>> f = ContactForm()\n    >>> f.is_valid()\n    False\n    >>> f.errors\n    {}\n\nDynamic initial values\n----------------------\n\n.. attribute:: Form.initial\n\nUse :attr:`~Form.initial` to declare the initial value of form fields at\nruntime. For example, you might want to fill in a ``username`` field with the\nusername of the current session.\n\nTo accomplish this, use the :attr:`~Form.initial` argument to a :class:`Form`.\nThis argument, if given, should be a dictionary mapping field names to initial\nvalues. Only include the fields for which you're specifying an initial value;\nit's not necessary to include every field in your form. For example::\n\n    >>> f = ContactForm(initial={'subject': 'Hi there!'})\n\nThese values are only displayed for unbound forms, and they're not used as\nfallback values if a particular value isn't provided.\n\nNote that if a :class:`~django.forms.Field` defines :attr:`~Form.initial` *and*\nyou include ``initial`` when instantiating the ``Form``, then the latter\n``initial`` will have precedence. In this example, ``initial`` is provided both\nat the field level and at the form instance level, and the latter gets\nprecedence::\n\n    >>> class CommentForm(forms.Form):\n    ...     name = forms.CharField(initial='class')\n    ...     url = forms.URLField()\n    ...     comment = forms.CharField()\n    >>> f = CommentForm(initial={'name': 'instance'}, auto_id=False)\n    >>> print(f)\n    <tr><th>Name:</th><td><input type=\"text\" name=\"name\" value=\"instance\" /></td></tr>\n    <tr><th>Url:</th><td><input type=\"text\" name=\"url\" /></td></tr>\n    <tr><th>Comment:</th><td><input type=\"text\" name=\"comment\" /></td></tr>\n\nAccessing \"clean\" data\n----------------------\n\n.. attribute:: Form.cleaned_data\n\nEach field in a :class:`Form` class is responsible not only for validating\ndata, but also for \"cleaning\" it -- normalizing it to a consistent format. This\nis a nice feature, because it allows data for a particular field to be input in\na variety of ways, always resulting in consistent output.\n\nFor example, :class:`~django.forms.DateField` normalizes input into a\nPython ``datetime.date`` object. Regardless of whether you pass it a string in\nthe format ``'1994-07-15'``, a ``datetime.date`` object, or a number of other\nformats, ``DateField`` will always normalize it to a ``datetime.date`` object\nas long as it's valid.\n\nOnce you've created a :class:`~Form` instance with a set of data and validated\nit, you can access the clean data via its ``cleaned_data`` attribute::\n\n    >>> data = {'subject': 'hello',\n    ...         'message': 'Hi there',\n    ...         'sender': 'foo@example.com',\n    ...         'cc_myself': True}\n    >>> f = ContactForm(data)\n    >>> f.is_valid()\n    True\n    >>> f.cleaned_data\n    {'cc_myself': True, 'message': u'Hi there', 'sender': u'foo@example.com', 'subject': u'hello'}\n\nNote that any text-based field -- such as ``CharField`` or ``EmailField`` --\nalways cleans the input into a Unicode string. We'll cover the encoding\nimplications later in this document.\n\nIf your data does *not* validate, the ``cleaned_data`` dictionary contains\nonly the valid fields::\n\n    >>> data = {'subject': '',\n    ...         'message': 'Hi there',\n    ...         'sender': 'invalid email address',\n    ...         'cc_myself': True}\n    >>> f = ContactForm(data)\n    >>> f.is_valid()\n    False\n    >>> f.cleaned_data\n    {'cc_myself': True, 'message': u'Hi there'}\n\n.. versionchanged:: 1.5\n\nUntil Django 1.5, the ``cleaned_data`` attribute wasn't defined at all when\nthe ``Form`` didn't validate.\n\n``cleaned_data`` will always *only* contain a key for fields defined in the\n``Form``, even if you pass extra data when you define the ``Form``. In this\nexample, we pass a bunch of extra fields to the ``ContactForm`` constructor,\nbut ``cleaned_data`` contains only the form's fields::\n\n    >>> data = {'subject': 'hello',\n    ...         'message': 'Hi there',\n    ...         'sender': 'foo@example.com',\n    ...         'cc_myself': True,\n    ...         'extra_field_1': 'foo',\n    ...         'extra_field_2': 'bar',\n    ...         'extra_field_3': 'baz'}\n    >>> f = ContactForm(data)\n    >>> f.is_valid()\n    True\n    >>> f.cleaned_data # Doesn't contain extra_field_1, etc.\n    {'cc_myself': True, 'message': u'Hi there', 'sender': u'foo@example.com', 'subject': u'hello'}\n\nWhen the ``Form`` is valid, ``cleaned_data`` will include a key and value for\n*all* its fields, even if the data didn't include a value for some optional\nfields. In this example, the data dictionary doesn't include a value for the\n``nick_name`` field, but ``cleaned_data`` includes it, with an empty value::\n\n    >>> class OptionalPersonForm(Form):\n    ...     first_name = CharField()\n    ...     last_name = CharField()\n    ...     nick_name = CharField(required=False)\n    >>> data = {'first_name': u'John', 'last_name': u'Lennon'}\n    >>> f = OptionalPersonForm(data)\n    >>> f.is_valid()\n    True\n    >>> f.cleaned_data\n    {'nick_name': u'', 'first_name': u'John', 'last_name': u'Lennon'}\n\nIn this above example, the ``cleaned_data`` value for ``nick_name`` is set to an\nempty string, because ``nick_name`` is ``CharField``, and ``CharField``\\s treat\nempty values as an empty string. Each field type knows what its \"blank\" value\nis -- e.g., for ``DateField``, it's ``None`` instead of the empty string. For\nfull details on each field's behavior in this case, see the \"Empty value\" note\nfor each field in the \"Built-in ``Field`` classes\" section below.\n\nYou can write code to perform validation for particular form fields (based on\ntheir name) or for the form as a whole (considering combinations of various\nfields). More information about this is in :doc:`/ref/forms/validation`.\n\nOutputting forms as HTML\n------------------------\n\nThe second task of a ``Form`` object is to render itself as HTML. To do so,\nsimply ``print`` it::\n\n    >>> f = ContactForm()\n    >>> print(f)\n    <tr><th><label for=\"id_subject\">Subject:</label></th><td><input id=\"id_subject\" type=\"text\" name=\"subject\" maxlength=\"100\" /></td></tr>\n    <tr><th><label for=\"id_message\">Message:</label></th><td><input type=\"text\" name=\"message\" id=\"id_message\" /></td></tr>\n    <tr><th><label for=\"id_sender\">Sender:</label></th><td><input type=\"text\" name=\"sender\" id=\"id_sender\" /></td></tr>\n    <tr><th><label for=\"id_cc_myself\">Cc myself:</label></th><td><input type=\"checkbox\" name=\"cc_myself\" id=\"id_cc_myself\" /></td></tr>\n\nIf the form is bound to data, the HTML output will include that data\nappropriately. For example, if a field is represented by an\n``<input type=\"text\">``, the data will be in the ``value`` attribute. If a\nfield is represented by an ``<input type=\"checkbox\">``, then that HTML will\ninclude ``checked=\"checked\"`` if appropriate::\n\n    >>> data = {'subject': 'hello',\n    ...         'message': 'Hi there',\n    ...         'sender': 'foo@example.com',\n    ...         'cc_myself': True}\n    >>> f = ContactForm(data)\n    >>> print(f)\n    <tr><th><label for=\"id_subject\">Subject:</label></th><td><input id=\"id_subject\" type=\"text\" name=\"subject\" maxlength=\"100\" value=\"hello\" /></td></tr>\n    <tr><th><label for=\"id_message\">Message:</label></th><td><input type=\"text\" name=\"message\" id=\"id_message\" value=\"Hi there\" /></td></tr>\n    <tr><th><label for=\"id_sender\">Sender:</label></th><td><input type=\"text\" name=\"sender\" id=\"id_sender\" value=\"foo@example.com\" /></td></tr>\n    <tr><th><label for=\"id_cc_myself\">Cc myself:</label></th><td><input type=\"checkbox\" name=\"cc_myself\" id=\"id_cc_myself\" checked=\"checked\" /></td></tr>\n\nThis default output is a two-column HTML table, with a ``<tr>`` for each field.\nNotice the following:\n\n* For flexibility, the output does *not* include the ``<table>`` and\n  ``</table>`` tags, nor does it include the ``<form>`` and ``</form>``\n  tags or an ``<input type=\"submit\">`` tag. It's your job to do that.\n\n* Each field type has a default HTML representation. ``CharField`` and\n  ``EmailField`` are represented by an ``<input type=\"text\">``.\n  ``BooleanField`` is represented by an ``<input type=\"checkbox\">``. Note\n  these are merely sensible defaults; you can specify which HTML to use for\n  a given field by using widgets, which we'll explain shortly.\n\n* The HTML ``name`` for each tag is taken directly from its attribute name\n  in the ``ContactForm`` class.\n\n* The text label for each field -- e.g. ``'Subject:'``, ``'Message:'`` and\n  ``'Cc myself:'`` is generated from the field name by converting all\n  underscores to spaces and upper-casing the first letter. Again, note\n  these are merely sensible defaults; you can also specify labels manually.\n\n* Each text label is surrounded in an HTML ``<label>`` tag, which points\n  to the appropriate form field via its ``id``. Its ``id``, in turn, is\n  generated by prepending ``'id_'`` to the field name. The ``id``\n  attributes and ``<label>`` tags are included in the output by default, to\n  follow best practices, but you can change that behavior.\n\nAlthough ``<table>`` output is the default output style when you ``print`` a\nform, other output styles are available. Each style is available as a method on\na form object, and each rendering method returns a Unicode object.\n\n``as_p()``\n~~~~~~~~~~\n\n.. method:: Form.as_p\n\n    ``as_p()`` renders the form as a series of ``<p>`` tags, with each ``<p>``\n    containing one field::\n\n        >>> f = ContactForm()\n        >>> f.as_p()\n        u'<p><label for=\"id_subject\">Subject:</label> <input id=\"id_subject\" type=\"text\" name=\"subject\" maxlength=\"100\" /></p>\\n<p><label for=\"id_message\">Message:</label> <input type=\"text\" name=\"message\" id=\"id_message\" /></p>\\n<p><label for=\"id_sender\">Sender:</label> <input type=\"text\" name=\"sender\" id=\"id_sender\" /></p>\\n<p><label for=\"id_cc_myself\">Cc myself:</label> <input type=\"checkbox\" name=\"cc_myself\" id=\"id_cc_myself\" /></p>'\n        >>> print(f.as_p())\n        <p><label for=\"id_subject\">Subject:</label> <input id=\"id_subject\" type=\"text\" name=\"subject\" maxlength=\"100\" /></p>\n        <p><label for=\"id_message\">Message:</label> <input type=\"text\" name=\"message\" id=\"id_message\" /></p>\n        <p><label for=\"id_sender\">Sender:</label> <input type=\"text\" name=\"sender\" id=\"id_sender\" /></p>\n        <p><label for=\"id_cc_myself\">Cc myself:</label> <input type=\"checkbox\" name=\"cc_myself\" id=\"id_cc_myself\" /></p>\n\n``as_ul()``\n~~~~~~~~~~~\n\n.. method:: Form.as_ul\n\n    ``as_ul()`` renders the form as a series of ``<li>`` tags, with each\n    ``<li>`` containing one field. It does *not* include the ``<ul>`` or\n    ``</ul>``, so that you can specify any HTML attributes on the ``<ul>`` for\n    flexibility::\n\n        >>> f = ContactForm()\n        >>> f.as_ul()\n        u'<li><label for=\"id_subject\">Subject:</label> <input id=\"id_subject\" type=\"text\" name=\"subject\" maxlength=\"100\" /></li>\\n<li><label for=\"id_message\">Message:</label> <input type=\"text\" name=\"message\" id=\"id_message\" /></li>\\n<li><label for=\"id_sender\">Sender:</label> <input type=\"text\" name=\"sender\" id=\"id_sender\" /></li>\\n<li><label for=\"id_cc_myself\">Cc myself:</label> <input type=\"checkbox\" name=\"cc_myself\" id=\"id_cc_myself\" /></li>'\n        >>> print(f.as_ul())\n        <li><label for=\"id_subject\">Subject:</label> <input id=\"id_subject\" type=\"text\" name=\"subject\" maxlength=\"100\" /></li>\n        <li><label for=\"id_message\">Message:</label> <input type=\"text\" name=\"message\" id=\"id_message\" /></li>\n        <li><label for=\"id_sender\">Sender:</label> <input type=\"text\" name=\"sender\" id=\"id_sender\" /></li>\n        <li><label for=\"id_cc_myself\">Cc myself:</label> <input type=\"checkbox\" name=\"cc_myself\" id=\"id_cc_myself\" /></li>\n\n``as_table()``\n~~~~~~~~~~~~~~\n\n.. method:: Form.as_table\n\n    Finally, ``as_table()`` outputs the form as an HTML ``<table>``. This is\n    exactly the same as ``print``. In fact, when you ``print`` a form object,\n    it calls its ``as_table()`` method behind the scenes::\n\n        >>> f = ContactForm()\n        >>> f.as_table()\n        u'<tr><th><label for=\"id_subject\">Subject:</label></th><td><input id=\"id_subject\" type=\"text\" name=\"subject\" maxlength=\"100\" /></td></tr>\\n<tr><th><label for=\"id_message\">Message:</label></th><td><input type=\"text\" name=\"message\" id=\"id_message\" /></td></tr>\\n<tr><th><label for=\"id_sender\">Sender:</label></th><td><input type=\"text\" name=\"sender\" id=\"id_sender\" /></td></tr>\\n<tr><th><label for=\"id_cc_myself\">Cc myself:</label></th><td><input type=\"checkbox\" name=\"cc_myself\" id=\"id_cc_myself\" /></td></tr>'\n        >>> print(f.as_table())\n        <tr><th><label for=\"id_subject\">Subject:</label></th><td><input id=\"id_subject\" type=\"text\" name=\"subject\" maxlength=\"100\" /></td></tr>\n        <tr><th><label for=\"id_message\">Message:</label></th><td><input type=\"text\" name=\"message\" id=\"id_message\" /></td></tr>\n        <tr><th><label for=\"id_sender\">Sender:</label></th><td><input type=\"text\" name=\"sender\" id=\"id_sender\" /></td></tr>\n        <tr><th><label for=\"id_cc_myself\">Cc myself:</label></th><td><input type=\"checkbox\" name=\"cc_myself\" id=\"id_cc_myself\" /></td></tr>\n\nStyling required or erroneous form rows\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. attribute:: Form.error_css_class\n.. attribute:: Form.required_css_class\n\nIt's pretty common to style form rows and fields that are required or have\nerrors. For example, you might want to present required form rows in bold and\nhighlight errors in red.\n\nThe :class:`Form` class has a couple of hooks you can use to add ``class``\nattributes to required rows or to rows with errors: simply set the\n:attr:`Form.error_css_class` and/or :attr:`Form.required_css_class`\nattributes::\n\n    class ContactForm(Form):\n        error_css_class = 'error'\n        required_css_class = 'required'\n\n        # ... and the rest of your fields here\n\nOnce you've done that, rows will be given ``\"error\"`` and/or ``\"required\"``\nclasses, as needed. The HTML will look something like::\n\n    >>> f = ContactForm(data)\n    >>> print(f.as_table())\n    <tr class=\"required\"><th><label for=\"id_subject\">Subject:</label>    ...\n    <tr class=\"required\"><th><label for=\"id_message\">Message:</label>    ...\n    <tr class=\"required error\"><th><label for=\"id_sender\">Sender:</label>      ...\n    <tr><th><label for=\"id_cc_myself\">Cc myself:<label> ...\n\n.. _ref-forms-api-configuring-label:\n\nConfiguring HTML ``<label>`` tags\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nAn HTML ``<label>`` tag designates which label text is associated with which\nform element. This small enhancement makes forms more usable and more accessible\nto assistive devices. It's always a good idea to use ``<label>`` tags.\n\nBy default, the form rendering methods include HTML ``id`` attributes on the\nform elements and corresponding ``<label>`` tags around the labels. The ``id``\nattribute values are generated by prepending ``id_`` to the form field names.\nThis behavior is configurable, though, if you want to change the ``id``\nconvention or remove HTML ``id`` attributes and ``<label>`` tags entirely.\n\nUse the ``auto_id`` argument to the ``Form`` constructor to control the label\nand ``id`` behavior. This argument must be ``True``, ``False`` or a string.\n\nIf ``auto_id`` is ``False``, then the form output will not include ``<label>``\ntags nor ``id`` attributes::\n\n    >>> f = ContactForm(auto_id=False)\n    >>> print(f.as_table())\n    <tr><th>Subject:</th><td><input type=\"text\" name=\"subject\" maxlength=\"100\" /></td></tr>\n    <tr><th>Message:</th><td><input type=\"text\" name=\"message\" /></td></tr>\n    <tr><th>Sender:</th><td><input type=\"text\" name=\"sender\" /></td></tr>\n    <tr><th>Cc myself:</th><td><input type=\"checkbox\" name=\"cc_myself\" /></td></tr>\n    >>> print(f.as_ul())\n    <li>Subject: <input type=\"text\" name=\"subject\" maxlength=\"100\" /></li>\n    <li>Message: <input type=\"text\" name=\"message\" /></li>\n    <li>Sender: <input type=\"text\" name=\"sender\" /></li>\n    <li>Cc myself: <input type=\"checkbox\" name=\"cc_myself\" /></li>\n    >>> print(f.as_p())\n    <p>Subject: <input type=\"text\" name=\"subject\" maxlength=\"100\" /></p>\n    <p>Message: <input type=\"text\" name=\"message\" /></p>\n    <p>Sender: <input type=\"text\" name=\"sender\" /></p>\n    <p>Cc myself: <input type=\"checkbox\" name=\"cc_myself\" /></p>\n\nIf ``auto_id`` is set to ``True``, then the form output *will* include\n``<label>`` tags and will simply use the field name as its ``id`` for each form\nfield::\n\n    >>> f = ContactForm(auto_id=True)\n    >>> print(f.as_table())\n    <tr><th><label for=\"subject\">Subject:</label></th><td><input id=\"subject\" type=\"text\" name=\"subject\" maxlength=\"100\" /></td></tr>\n    <tr><th><label for=\"message\">Message:</label></th><td><input type=\"text\" name=\"message\" id=\"message\" /></td></tr>\n    <tr><th><label for=\"sender\">Sender:</label></th><td><input type=\"text\" name=\"sender\" id=\"sender\" /></td></tr>\n    <tr><th><label for=\"cc_myself\">Cc myself:</label></th><td><input type=\"checkbox\" name=\"cc_myself\" id=\"cc_myself\" /></td></tr>\n    >>> print(f.as_ul())\n    <li><label for=\"subject\">Subject:</label> <input id=\"subject\" type=\"text\" name=\"subject\" maxlength=\"100\" /></li>\n    <li><label for=\"message\">Message:</label> <input type=\"text\" name=\"message\" id=\"message\" /></li>\n    <li><label for=\"sender\">Sender:</label> <input type=\"text\" name=\"sender\" id=\"sender\" /></li>\n    <li><label for=\"cc_myself\">Cc myself:</label> <input type=\"checkbox\" name=\"cc_myself\" id=\"cc_myself\" /></li>\n    >>> print(f.as_p())\n    <p><label for=\"subject\">Subject:</label> <input id=\"subject\" type=\"text\" name=\"subject\" maxlength=\"100\" /></p>\n    <p><label for=\"message\">Message:</label> <input type=\"text\" name=\"message\" id=\"message\" /></p>\n    <p><label for=\"sender\">Sender:</label> <input type=\"text\" name=\"sender\" id=\"sender\" /></p>\n    <p><label for=\"cc_myself\">Cc myself:</label> <input type=\"checkbox\" name=\"cc_myself\" id=\"cc_myself\" /></p>\n\nIf ``auto_id`` is set to a string containing the format character ``'%s'``,\nthen the form output will include ``<label>`` tags, and will generate ``id``\nattributes based on the format string. For example, for a format string\n``'field_%s'``, a field named ``subject`` will get the ``id`` value\n``'field_subject'``. Continuing our example::\n\n    >>> f = ContactForm(auto_id='id_for_%s')\n    >>> print(f.as_table())\n    <tr><th><label for=\"id_for_subject\">Subject:</label></th><td><input id=\"id_for_subject\" type=\"text\" name=\"subject\" maxlength=\"100\" /></td></tr>\n    <tr><th><label for=\"id_for_message\">Message:</label></th><td><input type=\"text\" name=\"message\" id=\"id_for_message\" /></td></tr>\n    <tr><th><label for=\"id_for_sender\">Sender:</label></th><td><input type=\"text\" name=\"sender\" id=\"id_for_sender\" /></td></tr>\n    <tr><th><label for=\"id_for_cc_myself\">Cc myself:</label></th><td><input type=\"checkbox\" name=\"cc_myself\" id=\"id_for_cc_myself\" /></td></tr>\n    >>> print(f.as_ul())\n    <li><label for=\"id_for_subject\">Subject:</label> <input id=\"id_for_subject\" type=\"text\" name=\"subject\" maxlength=\"100\" /></li>\n    <li><label for=\"id_for_message\">Message:</label> <input type=\"text\" name=\"message\" id=\"id_for_message\" /></li>\n    <li><label for=\"id_for_sender\">Sender:</label> <input type=\"text\" name=\"sender\" id=\"id_for_sender\" /></li>\n    <li><label for=\"id_for_cc_myself\">Cc myself:</label> <input type=\"checkbox\" name=\"cc_myself\" id=\"id_for_cc_myself\" /></li>\n    >>> print(f.as_p())\n    <p><label for=\"id_for_subject\">Subject:</label> <input id=\"id_for_subject\" type=\"text\" name=\"subject\" maxlength=\"100\" /></p>\n    <p><label for=\"id_for_message\">Message:</label> <input type=\"text\" name=\"message\" id=\"id_for_message\" /></p>\n    <p><label for=\"id_for_sender\">Sender:</label> <input type=\"text\" name=\"sender\" id=\"id_for_sender\" /></p>\n    <p><label for=\"id_for_cc_myself\">Cc myself:</label> <input type=\"checkbox\" name=\"cc_myself\" id=\"id_for_cc_myself\" /></p>\n\nIf ``auto_id`` is set to any other true value -- such as a string that doesn't\ninclude ``%s`` -- then the library will act as if ``auto_id`` is ``True``.\n\nBy default, ``auto_id`` is set to the string ``'id_%s'``.\n\nNormally, a colon (``:``) will be appended after any label name when a form is\nrendered. It's possible to change the colon to another character, or omit it\nentirely, using the ``label_suffix`` parameter::\n\n    >>> f = ContactForm(auto_id='id_for_%s', label_suffix='')\n    >>> print(f.as_ul())\n    <li><label for=\"id_for_subject\">Subject</label> <input id=\"id_for_subject\" type=\"text\" name=\"subject\" maxlength=\"100\" /></li>\n    <li><label for=\"id_for_message\">Message</label> <input type=\"text\" name=\"message\" id=\"id_for_message\" /></li>\n    <li><label for=\"id_for_sender\">Sender</label> <input type=\"text\" name=\"sender\" id=\"id_for_sender\" /></li>\n    <li><label for=\"id_for_cc_myself\">Cc myself</label> <input type=\"checkbox\" name=\"cc_myself\" id=\"id_for_cc_myself\" /></li>\n    >>> f = ContactForm(auto_id='id_for_%s', label_suffix=' ->')\n    >>> print(f.as_ul())\n    <li><label for=\"id_for_subject\">Subject -></label> <input id=\"id_for_subject\" type=\"text\" name=\"subject\" maxlength=\"100\" /></li>\n    <li><label for=\"id_for_message\">Message -></label> <input type=\"text\" name=\"message\" id=\"id_for_message\" /></li>\n    <li><label for=\"id_for_sender\">Sender -></label> <input type=\"text\" name=\"sender\" id=\"id_for_sender\" /></li>\n    <li><label for=\"id_for_cc_myself\">Cc myself -></label> <input type=\"checkbox\" name=\"cc_myself\" id=\"id_for_cc_myself\" /></li>\n\nNote that the label suffix is added only if the last character of the\nlabel isn't a punctuation character (``.``, ``!``, ``?`` or ``:``)\n\nNotes on field ordering\n~~~~~~~~~~~~~~~~~~~~~~~\n\nIn the ``as_p()``, ``as_ul()`` and ``as_table()`` shortcuts, the fields are\ndisplayed in the order in which you define them in your form class. For\nexample, in the ``ContactForm`` example, the fields are defined in the order\n``subject``, ``message``, ``sender``, ``cc_myself``. To reorder the HTML\noutput, just change the order in which those fields are listed in the class.\n\nHow errors are displayed\n~~~~~~~~~~~~~~~~~~~~~~~~\n\nIf you render a bound ``Form`` object, the act of rendering will automatically\nrun the form's validation if it hasn't already happened, and the HTML output\nwill include the validation errors as a ``<ul class=\"errorlist\">`` near the\nfield. The particular positioning of the error messages depends on the output\nmethod you're using::\n\n    >>> data = {'subject': '',\n    ...         'message': 'Hi there',\n    ...         'sender': 'invalid email address',\n    ...         'cc_myself': True}\n    >>> f = ContactForm(data, auto_id=False)\n    >>> print(f.as_table())\n    <tr><th>Subject:</th><td><ul class=\"errorlist\"><li>This field is required.</li></ul><input type=\"text\" name=\"subject\" maxlength=\"100\" /></td></tr>\n    <tr><th>Message:</th><td><input type=\"text\" name=\"message\" value=\"Hi there\" /></td></tr>\n    <tr><th>Sender:</th><td><ul class=\"errorlist\"><li>Enter a valid email address.</li></ul><input type=\"text\" name=\"sender\" value=\"invalid email address\" /></td></tr>\n    <tr><th>Cc myself:</th><td><input checked=\"checked\" type=\"checkbox\" name=\"cc_myself\" /></td></tr>\n    >>> print(f.as_ul())\n    <li><ul class=\"errorlist\"><li>This field is required.</li></ul>Subject: <input type=\"text\" name=\"subject\" maxlength=\"100\" /></li>\n    <li>Message: <input type=\"text\" name=\"message\" value=\"Hi there\" /></li>\n    <li><ul class=\"errorlist\"><li>Enter a valid email address.</li></ul>Sender: <input type=\"text\" name=\"sender\" value=\"invalid email address\" /></li>\n    <li>Cc myself: <input checked=\"checked\" type=\"checkbox\" name=\"cc_myself\" /></li>\n    >>> print(f.as_p())\n    <p><ul class=\"errorlist\"><li>This field is required.</li></ul></p>\n    <p>Subject: <input type=\"text\" name=\"subject\" maxlength=\"100\" /></p>\n    <p>Message: <input type=\"text\" name=\"message\" value=\"Hi there\" /></p>\n    <p><ul class=\"errorlist\"><li>Enter a valid email address.</li></ul></p>\n    <p>Sender: <input type=\"text\" name=\"sender\" value=\"invalid email address\" /></p>\n    <p>Cc myself: <input checked=\"checked\" type=\"checkbox\" name=\"cc_myself\" /></p>\n\nCustomizing the error list format\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nBy default, forms use ``django.forms.util.ErrorList`` to format validation\nerrors. If you'd like to use an alternate class for displaying errors, you can\npass that in at construction time::\n\n    >>> from django.forms.util import ErrorList\n    >>> class DivErrorList(ErrorList):\n    ...     def __unicode__(self):\n    ...         return self.as_divs()\n    ...     def as_divs(self):\n    ...         if not self: return u''\n    ...         return u'<div class=\"errorlist\">%s</div>' % ''.join([u'<div class=\"error\">%s</div>' % e for e in self])\n    >>> f = ContactForm(data, auto_id=False, error_class=DivErrorList)\n    >>> f.as_p()\n    <div class=\"errorlist\"><div class=\"error\">This field is required.</div></div>\n    <p>Subject: <input type=\"text\" name=\"subject\" maxlength=\"100\" /></p>\n    <p>Message: <input type=\"text\" name=\"message\" value=\"Hi there\" /></p>\n    <div class=\"errorlist\"><div class=\"error\">Enter a valid email address.</div></div>\n    <p>Sender: <input type=\"text\" name=\"sender\" value=\"invalid email address\" /></p>\n    <p>Cc myself: <input checked=\"checked\" type=\"checkbox\" name=\"cc_myself\" /></p>\n\nMore granular output\n~~~~~~~~~~~~~~~~~~~~\n\nThe ``as_p()``, ``as_ul()`` and ``as_table()`` methods are simply shortcuts for\nlazy developers -- they're not the only way a form object can be displayed.\n\n.. class:: BoundField\n\n   Used to display HTML or access attributes for a single field of a\n   :class:`Form` instance.\n\n   The ``__unicode__()`` and ``__str__()`` methods of this object displays\n   the HTML for this field.\n\nTo retrieve a single ``BoundField``, use dictionary lookup syntax on your form\nusing the field's name as the key::\n\n    >>> form = ContactForm()\n    >>> print(form['subject'])\n    <input id=\"id_subject\" type=\"text\" name=\"subject\" maxlength=\"100\" />\n\nTo retrieve all ``BoundField`` objects, iterate the form::\n\n    >>> form = ContactForm()\n    >>> for boundfield in form: print(boundfield)\n    <input id=\"id_subject\" type=\"text\" name=\"subject\" maxlength=\"100\" />\n    <input type=\"text\" name=\"message\" id=\"id_message\" />\n    <input type=\"text\" name=\"sender\" id=\"id_sender\" />\n    <input type=\"checkbox\" name=\"cc_myself\" id=\"id_cc_myself\" />\n\nThe field-specific output honors the form object's ``auto_id`` setting::\n\n    >>> f = ContactForm(auto_id=False)\n    >>> print(f['message'])\n    <input type=\"text\" name=\"message\" />\n    >>> f = ContactForm(auto_id='id_%s')\n    >>> print(f['message'])\n    <input type=\"text\" name=\"message\" id=\"id_message\" />\n\nFor a field's list of errors, access the field's ``errors`` attribute.\n\n.. attribute:: BoundField.errors\n\n    A list-like object that is displayed as an HTML ``<ul class=\"errorlist\">``\n    when printed::\n\n        >>> data = {'subject': 'hi', 'message': '', 'sender': '', 'cc_myself': ''}\n        >>> f = ContactForm(data, auto_id=False)\n        >>> print(f['message'])\n        <input type=\"text\" name=\"message\" />\n        >>> f['message'].errors\n        [u'This field is required.']\n        >>> print(f['message'].errors)\n        <ul class=\"errorlist\"><li>This field is required.</li></ul>\n        >>> f['subject'].errors\n        []\n        >>> print(f['subject'].errors)\n\n        >>> str(f['subject'].errors)\n        ''\n\n.. method:: BoundField.css_classes()\n\nWhen you use Django's rendering shortcuts, CSS classes are used to\nindicate required form fields or fields that contain errors. If you're\nmanually rendering a form, you can access these CSS classes using the\n``css_classes`` method::\n\n    >>> f = ContactForm(data)\n    >>> f['message'].css_classes()\n    'required'\n\nIf you want to provide some additional classes in addition to the\nerror and required classes that may be required, you can provide\nthose classes as an argument::\n\n    >>> f = ContactForm(data)\n    >>> f['message'].css_classes('foo bar')\n    'foo bar required'\n\n.. method:: BoundField.value()\n\nUse this method to render the raw value of this field as it would be rendered\nby a ``Widget``::\n\n    >>> initial = {'subject': 'welcome'}\n    >>> unbound_form = ContactForm(initial=initial)\n    >>> bound_form = ContactForm(data, initial=initial)\n    >>> print(unbound_form['subject'].value())\n    welcome\n    >>> print(bound_form['subject'].value())\n    hi\n\n.. _binding-uploaded-files:\n\nBinding uploaded files to a form\n--------------------------------\n\nDealing with forms that have ``FileField`` and ``ImageField`` fields\nis a little more complicated than a normal form.\n\nFirstly, in order to upload files, you'll need to make sure that your\n``<form>`` element correctly defines the ``enctype`` as\n``\"multipart/form-data\"``::\n\n  <form enctype=\"multipart/form-data\" method=\"post\" action=\"/foo/\">\n\nSecondly, when you use the form, you need to bind the file data. File\ndata is handled separately to normal form data, so when your form\ncontains a ``FileField`` and ``ImageField``, you will need to specify\na second argument when you bind your form. So if we extend our\nContactForm to include an ``ImageField`` called ``mugshot``, we\nneed to bind the file data containing the mugshot image::\n\n    # Bound form with an image field\n    >>> from django.core.files.uploadedfile import SimpleUploadedFile\n    >>> data = {'subject': 'hello',\n    ...         'message': 'Hi there',\n    ...         'sender': 'foo@example.com',\n    ...         'cc_myself': True}\n    >>> file_data = {'mugshot': SimpleUploadedFile('face.jpg', <file data>)}\n    >>> f = ContactFormWithMugshot(data, file_data)\n\nIn practice, you will usually specify ``request.FILES`` as the source\nof file data (just like you use ``request.POST`` as the source of\nform data)::\n\n    # Bound form with an image field, data from the request\n    >>> f = ContactFormWithMugshot(request.POST, request.FILES)\n\nConstructing an unbound form is the same as always -- just omit both\nform data *and* file data::\n\n    # Unbound form with a image field\n    >>> f = ContactFormWithMugshot()\n\nTesting for multipart forms\n~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. method:: Form.is_multipart\n\nIf you're writing reusable views or templates, you may not know ahead of time\nwhether your form is a multipart form or not. The ``is_multipart()`` method\ntells you whether the form requires multipart encoding for submission::\n\n    >>> f = ContactFormWithMugshot()\n    >>> f.is_multipart()\n    True\n\nHere's an example of how you might use this in a template::\n\n    {% if form.is_multipart %}\n        <form enctype=\"multipart/form-data\" method=\"post\" action=\"/foo/\">\n    {% else %}\n        <form method=\"post\" action=\"/foo/\">\n    {% endif %}\n    {{ form }}\n    </form>\n\nSubclassing forms\n-----------------\n\nIf you have multiple ``Form`` classes that share fields, you can use\nsubclassing to remove redundancy.\n\nWhen you subclass a custom ``Form`` class, the resulting subclass will\ninclude all fields of the parent class(es), followed by the fields you define\nin the subclass.\n\nIn this example, ``ContactFormWithPriority`` contains all the fields from\n``ContactForm``, plus an additional field, ``priority``. The ``ContactForm``\nfields are ordered first::\n\n    >>> class ContactFormWithPriority(ContactForm):\n    ...     priority = forms.CharField()\n    >>> f = ContactFormWithPriority(auto_id=False)\n    >>> print(f.as_ul())\n    <li>Subject: <input type=\"text\" name=\"subject\" maxlength=\"100\" /></li>\n    <li>Message: <input type=\"text\" name=\"message\" /></li>\n    <li>Sender: <input type=\"text\" name=\"sender\" /></li>\n    <li>Cc myself: <input type=\"checkbox\" name=\"cc_myself\" /></li>\n    <li>Priority: <input type=\"text\" name=\"priority\" /></li>\n\nIt's possible to subclass multiple forms, treating forms as \"mix-ins.\" In this\nexample, ``BeatleForm`` subclasses both ``PersonForm`` and ``InstrumentForm``\n(in that order), and its field list includes the fields from the parent\nclasses::\n\n    >>> class PersonForm(Form):\n    ...     first_name = CharField()\n    ...     last_name = CharField()\n    >>> class InstrumentForm(Form):\n    ...     instrument = CharField()\n    >>> class BeatleForm(PersonForm, InstrumentForm):\n    ...     haircut_type = CharField()\n    >>> b = BeatleForm(auto_id=False)\n    >>> print(b.as_ul())\n    <li>First name: <input type=\"text\" name=\"first_name\" /></li>\n    <li>Last name: <input type=\"text\" name=\"last_name\" /></li>\n    <li>Instrument: <input type=\"text\" name=\"instrument\" /></li>\n    <li>Haircut type: <input type=\"text\" name=\"haircut_type\" /></li>\n\n.. _form-prefix:\n\nPrefixes for forms\n------------------\n\n.. attribute:: Form.prefix\n\nYou can put several Django forms inside one ``<form>`` tag. To give each\n``Form`` its own namespace, use the ``prefix`` keyword argument::\n\n    >>> mother = PersonForm(prefix=\"mother\")\n    >>> father = PersonForm(prefix=\"father\")\n    >>> print(mother.as_ul())\n    <li><label for=\"id_mother-first_name\">First name:</label> <input type=\"text\" name=\"mother-first_name\" id=\"id_mother-first_name\" /></li>\n    <li><label for=\"id_mother-last_name\">Last name:</label> <input type=\"text\" name=\"mother-last_name\" id=\"id_mother-last_name\" /></li>\n    >>> print(father.as_ul())\n    <li><label for=\"id_father-first_name\">First name:</label> <input type=\"text\" name=\"father-first_name\" id=\"id_father-first_name\" /></li>\n    <li><label for=\"id_father-last_name\">Last name:</label> <input type=\"text\" name=\"father-last_name\" id=\"id_father-last_name\" /></li>\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/forms/fields.txt",
    "content": "===========\nForm fields\n===========\n\n.. module:: django.forms.fields\n   :synopsis: Django's built-in form fields.\n\n.. currentmodule:: django.forms\n\n.. class:: Field(**kwargs)\n\nWhen you create a ``Form`` class, the most important part is defining the\nfields of the form. Each field has custom validation logic, along with a few\nother hooks.\n\n.. method:: Field.clean(value)\n\nAlthough the primary way you'll use ``Field`` classes is in ``Form`` classes,\nyou can also instantiate them and use them directly to get a better idea of\nhow they work. Each ``Field`` instance has a ``clean()`` method, which takes\na single argument and either raises a ``django.forms.ValidationError``\nexception or returns the clean value::\n\n    >>> from django import forms\n    >>> f = forms.EmailField()\n    >>> f.clean('foo@example.com')\n    u'foo@example.com'\n    >>> f.clean('invalid email address')\n    Traceback (most recent call last):\n    ...\n    ValidationError: [u'Enter a valid email address.']\n\nCore field arguments\n--------------------\n\nEach ``Field`` class constructor takes at least these arguments. Some\n``Field`` classes take additional, field-specific arguments, but the following\nshould *always* be accepted:\n\n``required``\n~~~~~~~~~~~~\n\n.. attribute:: Field.required\n\nBy default, each ``Field`` class assumes the value is required, so if you pass\nan empty value -- either ``None`` or the empty string (``\"\"``) -- then\n``clean()`` will raise a ``ValidationError`` exception::\n\n    >>> f = forms.CharField()\n    >>> f.clean('foo')\n    u'foo'\n    >>> f.clean('')\n    Traceback (most recent call last):\n    ...\n    ValidationError: [u'This field is required.']\n    >>> f.clean(None)\n    Traceback (most recent call last):\n    ...\n    ValidationError: [u'This field is required.']\n    >>> f.clean(' ')\n    u' '\n    >>> f.clean(0)\n    u'0'\n    >>> f.clean(True)\n    u'True'\n    >>> f.clean(False)\n    u'False'\n\nTo specify that a field is *not* required, pass ``required=False`` to the\n``Field`` constructor::\n\n    >>> f = forms.CharField(required=False)\n    >>> f.clean('foo')\n    u'foo'\n    >>> f.clean('')\n    u''\n    >>> f.clean(None)\n    u''\n    >>> f.clean(0)\n    u'0'\n    >>> f.clean(True)\n    u'True'\n    >>> f.clean(False)\n    u'False'\n\nIf a ``Field`` has ``required=False`` and you pass ``clean()`` an empty value,\nthen ``clean()`` will return a *normalized* empty value rather than raising\n``ValidationError``. For ``CharField``, this will be a Unicode empty string.\nFor other ``Field`` classes, it might be ``None``. (This varies from field to\nfield.)\n\n``label``\n~~~~~~~~~\n\n.. attribute:: Field.label\n\nThe ``label`` argument lets you specify the \"human-friendly\" label for this\nfield. This is used when the ``Field`` is displayed in a ``Form``.\n\nAs explained in \"Outputting forms as HTML\" above, the default label for a\n``Field`` is generated from the field name by converting all underscores to\nspaces and upper-casing the first letter. Specify ``label`` if that default\nbehavior doesn't result in an adequate label.\n\nHere's a full example ``Form`` that implements ``label`` for two of its fields.\nWe've specified ``auto_id=False`` to simplify the output::\n\n    >>> class CommentForm(forms.Form):\n    ...     name = forms.CharField(label='Your name')\n    ...     url = forms.URLField(label='Your Web site', required=False)\n    ...     comment = forms.CharField()\n    >>> f = CommentForm(auto_id=False)\n    >>> print(f)\n    <tr><th>Your name:</th><td><input type=\"text\" name=\"name\" /></td></tr>\n    <tr><th>Your Web site:</th><td><input type=\"text\" name=\"url\" /></td></tr>\n    <tr><th>Comment:</th><td><input type=\"text\" name=\"comment\" /></td></tr>\n\n``initial``\n~~~~~~~~~~~\n\n.. attribute:: Field.initial\n\nThe ``initial`` argument lets you specify the initial value to use when\nrendering this ``Field`` in an unbound ``Form``.\n\nTo specify dynamic initial data, see the :attr:`Form.initial` parameter.\n\nThe use-case for this is when you want to display an \"empty\" form in which a\nfield is initialized to a particular value. For example::\n\n    >>> class CommentForm(forms.Form):\n    ...     name = forms.CharField(initial='Your name')\n    ...     url = forms.URLField(initial='http://')\n    ...     comment = forms.CharField()\n    >>> f = CommentForm(auto_id=False)\n    >>> print(f)\n    <tr><th>Name:</th><td><input type=\"text\" name=\"name\" value=\"Your name\" /></td></tr>\n    <tr><th>Url:</th><td><input type=\"text\" name=\"url\" value=\"http://\" /></td></tr>\n    <tr><th>Comment:</th><td><input type=\"text\" name=\"comment\" /></td></tr>\n\nYou may be thinking, why not just pass a dictionary of the initial values as\ndata when displaying the form? Well, if you do that, you'll trigger validation,\nand the HTML output will include any validation errors::\n\n    >>> class CommentForm(forms.Form):\n    ...     name = forms.CharField()\n    ...     url = forms.URLField()\n    ...     comment = forms.CharField()\n    >>> default_data = {'name': 'Your name', 'url': 'http://'}\n    >>> f = CommentForm(default_data, auto_id=False)\n    >>> print(f)\n    <tr><th>Name:</th><td><input type=\"text\" name=\"name\" value=\"Your name\" /></td></tr>\n    <tr><th>Url:</th><td><ul class=\"errorlist\"><li>Enter a valid URL.</li></ul><input type=\"text\" name=\"url\" value=\"http://\" /></td></tr>\n    <tr><th>Comment:</th><td><ul class=\"errorlist\"><li>This field is required.</li></ul><input type=\"text\" name=\"comment\" /></td></tr>\n\nThis is why ``initial`` values are only displayed for unbound forms. For bound\nforms, the HTML output will use the bound data.\n\nAlso note that ``initial`` values are *not* used as \"fallback\" data in\nvalidation if a particular field's value is not given. ``initial`` values are\n*only* intended for initial form display::\n\n    >>> class CommentForm(forms.Form):\n    ...     name = forms.CharField(initial='Your name')\n    ...     url = forms.URLField(initial='http://')\n    ...     comment = forms.CharField()\n    >>> data = {'name': '', 'url': '', 'comment': 'Foo'}\n    >>> f = CommentForm(data)\n    >>> f.is_valid()\n    False\n    # The form does *not* fall back to using the initial values.\n    >>> f.errors\n    {'url': [u'This field is required.'], 'name': [u'This field is required.']}\n\nInstead of a constant, you can also pass any callable::\n\n    >>> import datetime\n    >>> class DateForm(forms.Form):\n    ...     day = forms.DateField(initial=datetime.date.today)\n    >>> print(DateForm())\n    <tr><th>Day:</th><td><input type=\"text\" name=\"day\" value=\"12/23/2008\" /><td></tr>\n\nThe callable will be evaluated only when the unbound form is displayed, not when it is defined.\n\n``widget``\n~~~~~~~~~~\n\n.. attribute:: Field.widget\n\nThe ``widget`` argument lets you specify a ``Widget`` class to use when\nrendering this ``Field``. See :doc:`/ref/forms/widgets` for more information.\n\n``help_text``\n~~~~~~~~~~~~~\n\n.. attribute:: Field.help_text\n\nThe ``help_text`` argument lets you specify descriptive text for this\n``Field``. If you provide ``help_text``, it will be displayed next to the\n``Field`` when the ``Field`` is rendered by one of the convenience ``Form``\nmethods (e.g., ``as_ul()``).\n\nHere's a full example ``Form`` that implements ``help_text`` for two of its\nfields. We've specified ``auto_id=False`` to simplify the output::\n\n    >>> class HelpTextContactForm(forms.Form):\n    ...     subject = forms.CharField(max_length=100, help_text='100 characters max.')\n    ...     message = forms.CharField()\n    ...     sender = forms.EmailField(help_text='A valid email address, please.')\n    ...     cc_myself = forms.BooleanField(required=False)\n    >>> f = HelpTextContactForm(auto_id=False)\n    >>> print(f.as_table())\n    <tr><th>Subject:</th><td><input type=\"text\" name=\"subject\" maxlength=\"100\" /><br /><span class=\"helptext\">100 characters max.</span></td></tr>\n    <tr><th>Message:</th><td><input type=\"text\" name=\"message\" /></td></tr>\n    <tr><th>Sender:</th><td><input type=\"text\" name=\"sender\" /><br />A valid email address, please.</td></tr>\n    <tr><th>Cc myself:</th><td><input type=\"checkbox\" name=\"cc_myself\" /></td></tr>\n    >>> print(f.as_ul()))\n    <li>Subject: <input type=\"text\" name=\"subject\" maxlength=\"100\" /> <span class=\"helptext\">100 characters max.</span></li>\n    <li>Message: <input type=\"text\" name=\"message\" /></li>\n    <li>Sender: <input type=\"text\" name=\"sender\" /> A valid email address, please.</li>\n    <li>Cc myself: <input type=\"checkbox\" name=\"cc_myself\" /></li>\n    >>> print(f.as_p())\n    <p>Subject: <input type=\"text\" name=\"subject\" maxlength=\"100\" /> <span class=\"helptext\">100 characters max.</span></p>\n    <p>Message: <input type=\"text\" name=\"message\" /></p>\n    <p>Sender: <input type=\"text\" name=\"sender\" /> A valid email address, please.</p>\n    <p>Cc myself: <input type=\"checkbox\" name=\"cc_myself\" /></p>\n\n``error_messages``\n~~~~~~~~~~~~~~~~~~\n\n.. attribute:: Field.error_messages\n\nThe ``error_messages`` argument lets you override the default messages that the\nfield will raise. Pass in a dictionary with keys matching the error messages you\nwant to override. For example, here is the default error message::\n\n    >>> generic = forms.CharField()\n    >>> generic.clean('')\n    Traceback (most recent call last):\n      ...\n    ValidationError: [u'This field is required.']\n\nAnd here is a custom error message::\n\n    >>> name = forms.CharField(error_messages={'required': 'Please enter your name'})\n    >>> name.clean('')\n    Traceback (most recent call last):\n      ...\n    ValidationError: [u'Please enter your name']\n\nIn the `built-in Field classes`_ section below, each ``Field`` defines the\nerror message keys it uses.\n\n``validators``\n~~~~~~~~~~~~~~\n\n.. attribute:: Field.validators\n\nThe ``validators`` argument lets you provide a list of validation functions\nfor this field.\n\nSee the :doc:`validators documentation </ref/validators>` for more information.\n\n``localize``\n~~~~~~~~~~~~\n\n.. attribute:: Field.localize\n\nThe ``localize`` argument enables the localization of form data, input as well\nas the rendered output.\n\nSee the :ref:`format localization <format-localization>` documentation for\nmore information.\n\n.. _built-in fields:\n\nBuilt-in ``Field`` classes\n--------------------------\n\nNaturally, the ``forms`` library comes with a set of ``Field`` classes that\nrepresent common validation needs. This section documents each built-in field.\n\nFor each field, we describe the default widget used if you don't specify\n``widget``. We also specify the value returned when you provide an empty value\n(see the section on ``required`` above to understand what that means).\n\n``BooleanField``\n~~~~~~~~~~~~~~~~\n\n.. class:: BooleanField(**kwargs)\n\n    * Default widget: :class:`CheckboxInput`\n    * Empty value: ``False``\n    * Normalizes to: A Python ``True`` or ``False`` value.\n    * Validates that the value is ``True`` (e.g. the check box is checked) if\n      the field has ``required=True``.\n    * Error message keys: ``required``\n\n    .. note::\n\n        Since all ``Field`` subclasses have ``required=True`` by default, the\n        validation condition here is important. If you want to include a boolean\n        in your form that can be either ``True`` or ``False`` (e.g. a checked or\n        unchecked checkbox), you must remember to pass in ``required=False`` when\n        creating the ``BooleanField``.\n\n``CharField``\n~~~~~~~~~~~~~\n\n.. class:: CharField(**kwargs)\n\n    * Default widget: :class:`TextInput`\n    * Empty value: ``''`` (an empty string)\n    * Normalizes to: A Unicode object.\n    * Validates ``max_length`` or ``min_length``, if they are provided.\n      Otherwise, all inputs are valid.\n    * Error message keys: ``required``, ``max_length``, ``min_length``\n\n    Has two optional arguments for validation:\n\n    .. attribute:: max_length\n    .. attribute:: min_length\n\n    If provided, these arguments ensure that the string is at most or at least\n    the given length.\n\n``ChoiceField``\n~~~~~~~~~~~~~~~\n\n.. class:: ChoiceField(**kwargs)\n\n    * Default widget: :class:`Select`\n    * Empty value: ``''`` (an empty string)\n    * Normalizes to: A Unicode object.\n    * Validates that the given value exists in the list of choices.\n    * Error message keys: ``required``, ``invalid_choice``\n\n    The ``invalid_choice`` error message may contain ``%(value)s``, which will be\n    replaced with the selected choice.\n\n    Takes one extra required argument:\n\n    .. attribute:: choices\n\n        An iterable (e.g., a list or tuple) of 2-tuples to use as choices for this\n        field. This argument accepts the same formats as the ``choices`` argument\n        to a model field. See the :ref:`model field reference documentation on\n        choices <field-choices>` for more details.\n\n``TypedChoiceField``\n~~~~~~~~~~~~~~~~~~~~\n\n.. class:: TypedChoiceField(**kwargs)\n\n    Just like a :class:`ChoiceField`, except :class:`TypedChoiceField` takes two\n    extra arguments, ``coerce`` and ``empty_value``.\n\n    * Default widget: :class:`Select`\n    * Empty value: Whatever you've given as ``empty_value``\n    * Normalizes to: A value of the type provided by the ``coerce`` argument.\n    * Validates that the given value exists in the list of choices and can be\n      coerced.\n    * Error message keys: ``required``, ``invalid_choice``\n\n    Takes extra arguments:\n\n    .. attribute:: coerce\n\n        A function that takes one argument and returns a coerced value. Examples\n        include the built-in ``int``, ``float``, ``bool`` and other types. Defaults\n        to an identity function.\n\n    .. attribute:: empty_value\n\n        The value to use to represent \"empty.\" Defaults to the empty string;\n        ``None`` is another common choice here. Note that this value will not be\n        coerced by the function given in the ``coerce`` argument, so choose it\n        accordingly.\n\n``DateField``\n~~~~~~~~~~~~~\n\n.. class:: DateField(**kwargs)\n\n    * Default widget: :class:`DateInput`\n    * Empty value: ``None``\n    * Normalizes to: A Python ``datetime.date`` object.\n    * Validates that the given value is either a ``datetime.date``,\n      ``datetime.datetime`` or string formatted in a particular date format.\n    * Error message keys: ``required``, ``invalid``\n\n    Takes one optional argument:\n\n    .. attribute:: input_formats\n\n        A list of formats used to attempt to convert a string to a valid\n        ``datetime.date`` object.\n\n    If no ``input_formats`` argument is provided, the default input formats are::\n\n        '%Y-%m-%d',       # '2006-10-25'\n        '%m/%d/%Y',       # '10/25/2006'\n        '%m/%d/%y',       # '10/25/06'\n\n    Additionally, if you specify :setting:`USE_L10N=False<USE_L10N>` in your settings, the\n    following will also be included in the default input formats::\n\n        '%b %d %Y',       # 'Oct 25 2006'\n        '%b %d, %Y',      # 'Oct 25, 2006'\n        '%d %b %Y',       # '25 Oct 2006'\n        '%d %b, %Y',      # '25 Oct, 2006'\n        '%B %d %Y',       # 'October 25 2006'\n        '%B %d, %Y',      # 'October 25, 2006'\n        '%d %B %Y',       # '25 October 2006'\n        '%d %B, %Y',      # '25 October, 2006'\n\n    See also :ref:`format localization <format-localization>`.\n\n``DateTimeField``\n~~~~~~~~~~~~~~~~~\n\n.. class:: DateTimeField(**kwargs)\n\n    * Default widget: :class:`DateTimeInput`\n    * Empty value: ``None``\n    * Normalizes to: A Python ``datetime.datetime`` object.\n    * Validates that the given value is either a ``datetime.datetime``,\n      ``datetime.date`` or string formatted in a particular datetime format.\n    * Error message keys: ``required``, ``invalid``\n\n    Takes one optional argument:\n\n    .. attribute:: input_formats\n\n        A list of formats used to attempt to convert a string to a valid\n        ``datetime.datetime`` object.\n\n    If no ``input_formats`` argument is provided, the default input formats are::\n\n        '%Y-%m-%d %H:%M:%S',     # '2006-10-25 14:30:59'\n        '%Y-%m-%d %H:%M',        # '2006-10-25 14:30'\n        '%Y-%m-%d',              # '2006-10-25'\n        '%m/%d/%Y %H:%M:%S',     # '10/25/2006 14:30:59'\n        '%m/%d/%Y %H:%M',        # '10/25/2006 14:30'\n        '%m/%d/%Y',              # '10/25/2006'\n        '%m/%d/%y %H:%M:%S',     # '10/25/06 14:30:59'\n        '%m/%d/%y %H:%M',        # '10/25/06 14:30'\n        '%m/%d/%y',              # '10/25/06'\n\n    See also :ref:`format localization <format-localization>`.\n\n``DecimalField``\n~~~~~~~~~~~~~~~~\n\n.. class:: DecimalField(**kwargs)\n\n    * Default widget: :class:`TextInput`\n    * Empty value: ``None``\n    * Normalizes to: A Python ``decimal``.\n    * Validates that the given value is a decimal. Leading and trailing\n      whitespace is ignored.\n    * Error message keys: ``required``, ``invalid``, ``max_value``,\n      ``min_value``, ``max_digits``, ``max_decimal_places``,\n      ``max_whole_digits``\n\n    The ``max_value`` and ``min_value`` error messages may contain\n    ``%(limit_value)s``, which will be substituted by the appropriate limit.\n\n    Takes four optional arguments:\n\n    .. attribute:: max_value\n    .. attribute:: min_value\n\n        These control the range of values permitted in the field, and should be\n        given as ``decimal.Decimal`` values.\n\n    .. attribute:: max_digits\n\n        The maximum number of digits (those before the decimal point plus those\n        after the decimal point, with leading zeros stripped) permitted in the\n        value.\n\n    .. attribute:: decimal_places\n\n        The maximum number of decimal places permitted.\n\n``EmailField``\n~~~~~~~~~~~~~~\n\n.. class:: EmailField(**kwargs)\n\n    * Default widget: :class:`TextInput`\n    * Empty value: ``''`` (an empty string)\n    * Normalizes to: A Unicode object.\n    * Validates that the given value is a valid email address, using a\n      moderately complex regular expression.\n    * Error message keys: ``required``, ``invalid``\n\n    Has two optional arguments for validation, ``max_length`` and ``min_length``.\n    If provided, these arguments ensure that the string is at most or at least the\n    given length.\n\n``FileField``\n~~~~~~~~~~~~~\n\n.. class:: FileField(**kwargs)\n\n    * Default widget: :class:`ClearableFileInput`\n    * Empty value: ``None``\n    * Normalizes to: An ``UploadedFile`` object that wraps the file content\n      and file name into a single object.\n    * Can validate that non-empty file data has been bound to the form.\n    * Error message keys: ``required``, ``invalid``, ``missing``, ``empty``,\n      ``max_length``\n\n    Has two optional arguments for validation, ``max_length`` and\n    ``allow_empty_file``. If provided, these ensure that the file name is at\n    most the given length, and that validation will succeed even if the file\n    content is empty.\n\n    To learn more about the ``UploadedFile`` object, see the :doc:`file uploads\n    documentation </topics/http/file-uploads>`.\n\n    When you use a ``FileField`` in a form, you must also remember to\n    :ref:`bind the file data to the form <binding-uploaded-files>`.\n\n    The ``max_length`` error refers to the length of the filename. In the error\n    message for that key, ``%(max)d`` will be replaced with the maximum filename\n    length and ``%(length)d`` will be replaced with the current filename length.\n\n``FilePathField``\n~~~~~~~~~~~~~~~~~\n\n.. class:: FilePathField(**kwargs)\n\n    * Default widget: :class:`Select`\n    * Empty value: ``None``\n    * Normalizes to: A unicode object\n    * Validates that the selected choice exists in the list of choices.\n    * Error message keys: ``required``, ``invalid_choice``\n\n    The field allows choosing from files inside a certain directory. It takes three\n    extra arguments; only ``path`` is required:\n\n    .. attribute:: path\n\n        The absolute path to the directory whose contents you want listed. This\n        directory must exist.\n\n    .. attribute:: recursive\n\n        If ``False`` (the default) only the direct contents of ``path`` will be\n        offered as choices. If ``True``, the directory will be descended into\n        recursively and all descendants will be listed as choices.\n\n    .. attribute:: match\n\n        A regular expression pattern; only files with names matching this expression\n        will be allowed as choices.\n\n    .. attribute:: allow_files\n\n        .. versionadded:: 1.5\n\n        Optional.  Either ``True`` or ``False``.  Default is ``True``.  Specifies\n        whether files in the specified location should be included.  Either this or\n        :attr:`allow_folders` must be ``True``.\n\n    .. attribute:: allow_folders\n\n        .. versionadded:: 1.5\n\n        Optional.  Either ``True`` or ``False``.  Default is ``False``.  Specifies\n        whether folders in the specified location should be included.  Either this or\n        :attr:`allow_files` must be ``True``.\n\n\n``FloatField``\n~~~~~~~~~~~~~~\n\n.. class:: FloatField(**kwargs)\n\n    * Default widget: :class:`TextInput`\n    * Empty value: ``None``\n    * Normalizes to: A Python float.\n    * Validates that the given value is an float. Leading and trailing\n      whitespace is allowed, as in Python's ``float()`` function.\n    * Error message keys: ``required``, ``invalid``, ``max_value``,\n      ``min_value``\n\n    Takes two optional arguments for validation, ``max_value`` and ``min_value``.\n    These control the range of values permitted in the field.\n\n``ImageField``\n~~~~~~~~~~~~~~\n\n.. class:: ImageField(**kwargs)\n\n    * Default widget: :class:`ClearableFileInput`\n    * Empty value: ``None``\n    * Normalizes to: An ``UploadedFile`` object that wraps the file content\n      and file name into a single object.\n    * Validates that file data has been bound to the form, and that the\n      file is of an image format understood by PIL.\n    * Error message keys: ``required``, ``invalid``, ``missing``, ``empty``,\n      ``invalid_image``\n\n    Using an ``ImageField`` requires that the `Python Imaging Library`_ (PIL)\n    is installed and supports the image formats you use. If you encounter a\n    ``corrupt image`` error when you upload an image, it usually means PIL\n    doesn't understand its format. To fix this, install the appropriate\n    library and reinstall PIL.\n\n    When you use an ``ImageField`` on a form, you must also remember to\n    :ref:`bind the file data to the form <binding-uploaded-files>`.\n\n.. _Python Imaging Library: http://www.pythonware.com/products/pil/\n\n``IntegerField``\n~~~~~~~~~~~~~~~~\n\n.. class:: IntegerField(**kwargs)\n\n    * Default widget: :class:`TextInput`\n    * Empty value: ``None``\n    * Normalizes to: A Python integer or long integer.\n    * Validates that the given value is an integer. Leading and trailing\n      whitespace is allowed, as in Python's ``int()`` function.\n    * Error message keys: ``required``, ``invalid``, ``max_value``,\n      ``min_value``\n\n    The ``max_value`` and ``min_value`` error messages may contain\n    ``%(limit_value)s``, which will be substituted by the appropriate limit.\n\n    Takes two optional arguments for validation:\n\n    .. attribute:: max_value\n    .. attribute:: min_value\n\n    These control the range of values permitted in the field.\n\n``IPAddressField``\n~~~~~~~~~~~~~~~~~~\n\n.. class:: IPAddressField(**kwargs)\n\n    * Default widget: :class:`TextInput`\n    * Empty value: ``''`` (an empty string)\n    * Normalizes to: A Unicode object.\n    * Validates that the given value is a valid IPv4 address, using a regular\n      expression.\n    * Error message keys: ``required``, ``invalid``\n\n``GenericIPAddressField``\n~~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. versionadded:: 1.4\n\n.. class:: GenericIPAddressField(**kwargs)\n\n    A field containing either an IPv4 or an IPv6 address.\n\n    * Default widget: :class:`TextInput`\n    * Empty value: ``''`` (an empty string)\n    * Normalizes to: A Unicode object. IPv6 addresses are\n      normalized as described below.\n    * Validates that the given value is a valid IP address.\n    * Error message keys: ``required``, ``invalid``\n\n    The IPv6 address normalization follows :rfc:`4291#section-2.2` section 2.2,\n    including using the IPv4 format suggested in paragraph 3 of that section, like\n    ``::ffff:192.0.2.0``. For example, ``2001:0::0:01`` would be normalized to\n    ``2001::1``, and ``::ffff:0a0a:0a0a`` to ``::ffff:10.10.10.10``. All characters\n    are converted to lowercase.\n\n    Takes two optional arguments:\n\n    .. attribute:: protocol\n\n        Limits valid inputs to the specified protocol.\n        Accepted values are ``both`` (default), ``IPv4``\n        or ``IPv6``. Matching is case insensitive.\n\n    .. attribute:: unpack_ipv4\n\n        Unpacks IPv4 mapped addresses like ``::ffff:192.0.2.1``.\n        If this option is enabled that address would be unpacked to\n        ``192.0.2.1``. Default is disabled. Can only be used\n        when ``protocol`` is set to ``'both'``.\n\n``MultipleChoiceField``\n~~~~~~~~~~~~~~~~~~~~~~~\n\n.. class:: MultipleChoiceField(**kwargs)\n\n    * Default widget: :class:`SelectMultiple`\n    * Empty value: ``[]`` (an empty list)\n    * Normalizes to: A list of Unicode objects.\n    * Validates that every value in the given list of values exists in the list\n      of choices.\n    * Error message keys: ``required``, ``invalid_choice``, ``invalid_list``\n\n    The ``invalid_choice`` error message may contain ``%(value)s``, which will be\n    replaced with the selected choice.\n\n    Takes one extra required argument, ``choices``, as for ``ChoiceField``.\n\n``TypedMultipleChoiceField``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. class:: TypedMultipleChoiceField(**kwargs)\n\n    Just like a :class:`MultipleChoiceField`, except :class:`TypedMultipleChoiceField`\n    takes two extra arguments, ``coerce`` and ``empty_value``.\n\n    * Default widget: :class:`SelectMultiple`\n    * Empty value: Whatever you've given as ``empty_value``\n    * Normalizes to: A list of values of the type provided by the ``coerce``\n      argument.\n    * Validates that the given values exists in the list of choices and can be\n      coerced.\n    * Error message keys: ``required``, ``invalid_choice``\n\n    The ``invalid_choice`` error message may contain ``%(value)s``, which will be\n    replaced with the selected choice.\n\n    Takes two extra arguments, ``coerce`` and ``empty_value``, as for ``TypedChoiceField``.\n\n``NullBooleanField``\n~~~~~~~~~~~~~~~~~~~~\n\n.. class:: NullBooleanField(**kwargs)\n\n    * Default widget: :class:`NullBooleanSelect`\n    * Empty value: ``None``\n    * Normalizes to: A Python ``True``, ``False`` or ``None`` value.\n    * Validates nothing (i.e., it never raises a ``ValidationError``).\n\n``RegexField``\n~~~~~~~~~~~~~~\n\n.. class:: RegexField(**kwargs)\n\n    * Default widget: :class:`TextInput`\n    * Empty value: ``''`` (an empty string)\n    * Normalizes to: A Unicode object.\n    * Validates that the given value matches against a certain regular\n      expression.\n    * Error message keys: ``required``, ``invalid``\n\n    Takes one required argument:\n\n    .. attribute:: regex\n\n        A regular expression specified either as a string or a compiled regular\n        expression object.\n\n    Also takes ``max_length`` and ``min_length``, which work just as they do for\n    ``CharField``.\n\n    The optional argument ``error_message`` is also accepted for backwards\n    compatibility. The preferred way to provide an error message is to use the\n    ``error_messages`` argument, passing a dictionary with ``'invalid'`` as a key\n    and the error message as the value.\n\n``SlugField``\n~~~~~~~~~~~~~\n\n.. class:: SlugField(**kwargs)\n\n   * Default widget: :class:`TextInput`\n   * Empty value: ``''`` (an empty string)\n   * Normalizes to: A Unicode object.\n   * Validates that the given value contains only letters, numbers,\n     underscores, and hyphens.\n   * Error messages: ``required``, ``invalid``\n\n   This field is intended for use in representing a model\n   :class:`~django.db.models.SlugField` in forms.\n\n``TimeField``\n~~~~~~~~~~~~~\n\n.. class:: TimeField(**kwargs)\n\n    * Default widget: :class:`TextInput`\n    * Empty value: ``None``\n    * Normalizes to: A Python ``datetime.time`` object.\n    * Validates that the given value is either a ``datetime.time`` or string\n      formatted in a particular time format.\n    * Error message keys: ``required``, ``invalid``\n\n    Takes one optional argument:\n\n    .. attribute:: input_formats\n\n        A list of formats used to attempt to convert a string to a valid\n        ``datetime.time`` object.\n\n    If no ``input_formats`` argument is provided, the default input formats are::\n\n        '%H:%M:%S',     # '14:30:59'\n        '%H:%M',        # '14:30'\n\n``URLField``\n~~~~~~~~~~~~\n\n.. class:: URLField(**kwargs)\n\n    * Default widget: :class:`TextInput`\n    * Empty value: ``''`` (an empty string)\n    * Normalizes to: A Unicode object.\n    * Validates that the given value is a valid URL.\n    * Error message keys: ``required``, ``invalid``\n\n    Takes the following optional arguments:\n\n    .. attribute:: max_length\n    .. attribute:: min_length\n\n    These are the same as ``CharField.max_length`` and ``CharField.min_length``.\n\n\nSlightly complex built-in ``Field`` classes\n-------------------------------------------\n\n``ComboField``\n~~~~~~~~~~~~~~\n\n.. class:: ComboField(**kwargs)\n\n    * Default widget: :class:`TextInput`\n    * Empty value: ``''`` (an empty string)\n    * Normalizes to: A Unicode object.\n    * Validates that the given value against each of the fields specified\n      as an argument to the ``ComboField``.\n    * Error message keys: ``required``, ``invalid``\n\n    Takes one extra required argument:\n\n    .. attribute:: fields\n\n        The list of fields that should be used to validate the field's value (in\n        the order in which they are provided).\n\n            >>> f = ComboField(fields=[CharField(max_length=20), EmailField()])\n            >>> f.clean('test@example.com')\n            u'test@example.com'\n            >>> f.clean('longemailaddress@example.com')\n            Traceback (most recent call last):\n            ...\n            ValidationError: [u'Ensure this value has at most 20 characters (it has 28).']\n\n``MultiValueField``\n~~~~~~~~~~~~~~~~~~~\n\n.. class:: MultiValueField(fields=(), **kwargs)\n\n    * Default widget: :class:`TextInput`\n    * Empty value: ``''`` (an empty string)\n    * Normalizes to: the type returned by the ``compress`` method of the subclass.\n    * Validates that the given value against each of the fields specified\n      as an argument to the ``MultiValueField``.\n    * Error message keys: ``required``, ``invalid``\n\n    Aggregates the logic of multiple fields that together produce a single\n    value.\n\n    This field is abstract and must be subclassed. In contrast with the\n    single-value fields, subclasses of :class:`MultiValueField` must not\n    implement :meth:`~django.forms.Field.clean` but instead - implement\n    :meth:`~MultiValueField.compress`.\n\n    Takes one extra required argument:\n\n    .. attribute:: fields\n\n        A tuple of fields whose values are cleaned and subsequently combined\n        into a single value.  Each value of the field is cleaned by the\n        corresponding field in ``fields`` -- the first value is cleaned by the\n        first field, the second value is cleaned by the second field, etc.\n        Once all fields are cleaned, the list of clean values is combined into\n        a single value by :meth:`~MultiValueField.compress`.\n\n    .. attribute:: MultiValueField.widget\n\n        Must be a subclass of :class:`django.forms.MultiWidget`.\n        Default value is :class:`~django.forms.TextInput`, which\n        probably is not very useful in this case.\n\n    .. method:: compress(data_list)\n\n        Takes a list of valid values and returns  a \"compressed\" version of\n        those values -- in a single value. For example,\n        :class:`SplitDateTimeField` is a subclass which combines a time field\n        and a date field into a ``datetime`` object.\n\n        This method must be implemented in the subclasses.\n\n``SplitDateTimeField``\n~~~~~~~~~~~~~~~~~~~~~~\n\n.. class:: SplitDateTimeField(**kwargs)\n\n    * Default widget: :class:`SplitDateTimeWidget`\n    * Empty value: ``None``\n    * Normalizes to: A Python ``datetime.datetime`` object.\n    * Validates that the given value is a ``datetime.datetime`` or string\n      formatted in a particular datetime format.\n    * Error message keys: ``required``, ``invalid``, ``invalid_date``,\n      ``invalid_time``\n\n    Takes two optional arguments:\n\n    .. attribute:: input_date_formats\n\n        A list of formats used to attempt to convert a string to a valid\n        ``datetime.date`` object.\n\n    If no ``input_date_formats`` argument is provided, the default input formats\n    for ``DateField`` are used.\n\n    .. attribute:: input_time_formats\n\n        A list of formats used to attempt to convert a string to a valid\n        ``datetime.time`` object.\n\n    If no ``input_time_formats`` argument is provided, the default input formats\n    for ``TimeField`` are used.\n\nFields which handle relationships\n---------------------------------\n\nTwo fields are available for representing relationships between\nmodels: :class:`ModelChoiceField` and\n:class:`ModelMultipleChoiceField`.  Both of these fields require a\nsingle ``queryset`` parameter that is used to create the choices for\nthe field.  Upon form validation, these fields will place either one\nmodel object (in the case of ``ModelChoiceField``) or multiple model\nobjects (in the case of ``ModelMultipleChoiceField``) into the\n``cleaned_data`` dictionary of the form.\n\n``ModelChoiceField``\n~~~~~~~~~~~~~~~~~~~~\n\n.. class:: ModelChoiceField(**kwargs)\n\n    * Default widget: :class:`Select`\n    * Empty value: ``None``\n    * Normalizes to: A model instance.\n    * Validates that the given id exists in the queryset.\n    * Error message keys: ``required``, ``invalid_choice``\n\n    Allows the selection of a single model object, suitable for representing a\n    foreign key. Note that the default widget for ``ModelChoiceField`` becomes\n    impractical when the number of entries increases. You should avoid using it\n    for more than 100 items.\n\n    A single argument is required:\n\n    .. attribute:: queryset\n\n        A ``QuerySet`` of model objects from which the choices for the\n        field will be derived, and which will be used to validate the\n        user's selection.\n\n    ``ModelChoiceField`` also takes one optional argument:\n\n    .. attribute:: empty_label\n\n        By default the ``<select>`` widget used by ``ModelChoiceField`` will have an\n        empty choice at the top of the list. You can change the text of this\n        label (which is ``\"---------\"`` by default) with the ``empty_label``\n        attribute, or you can disable the empty label entirely by setting\n        ``empty_label`` to ``None``::\n\n            # A custom empty label\n            field1 = forms.ModelChoiceField(queryset=..., empty_label=\"(Nothing)\")\n\n            # No empty label\n            field2 = forms.ModelChoiceField(queryset=..., empty_label=None)\n\n        Note that if a ``ModelChoiceField`` is required and has a default\n        initial value, no empty choice is created (regardless of the value\n        of ``empty_label``).\n\n    The ``__unicode__`` method of the model will be called to generate\n    string representations of the objects for use in the field's choices;\n    to provide customized representations, subclass ``ModelChoiceField``\n    and override ``label_from_instance``. This method will receive a model\n    object, and should return a string suitable for representing it. For\n    example::\n\n        class MyModelChoiceField(ModelChoiceField):\n            def label_from_instance(self, obj):\n                return \"My Object #%i\" % obj.id\n\n``ModelMultipleChoiceField``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. class:: ModelMultipleChoiceField(**kwargs)\n\n    * Default widget: :class:`SelectMultiple`\n    * Empty value: An empty ``QuerySet`` (self.queryset.none())\n    * Normalizes to: A ``QuerySet`` of model instances.\n    * Validates that every id in the given list of values exists in the\n      queryset.\n    * Error message keys: ``required``, ``list``, ``invalid_choice``,\n      ``invalid_pk_value``\n\n    .. versionchanged:: 1.5\n        The empty and normalized values were changed to be consistently\n        ``QuerySets`` instead of ``[]`` and ``QuerySet`` respectively.\n\n    Allows the selection of one or more model objects, suitable for\n    representing a many-to-many relation. As with :class:`ModelChoiceField`,\n    you can use ``label_from_instance`` to customize the object\n    representations, and ``queryset`` is a required parameter:\n\n    .. attribute:: queryset\n\n        A ``QuerySet`` of model objects from which the choices for the\n        field will be derived, and which will be used to validate the\n        user's selection.\n\nCreating custom fields\n----------------------\n\nIf the built-in ``Field`` classes don't meet your needs, you can easily create\ncustom ``Field`` classes. To do this, just create a subclass of\n``django.forms.Field``. Its only requirements are that it implement a\n``clean()`` method and that its ``__init__()`` method accept the core arguments\nmentioned above (``required``, ``label``, ``initial``, ``widget``,\n``help_text``).\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/forms/index.txt",
    "content": "=====\nForms\n=====\n\nDetailed form API reference. For introductory material, see :doc:`/topics/forms/index`.\n\n.. toctree::\n   :maxdepth: 2\n\n   api\n   fields\n   models\n   widgets\n   validation\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/forms/models.txt",
    "content": "====================\nModel Form Functions\n====================\n\n.. module:: django.forms.models\n   :synopsis: Django's functions for building model forms and formsets.\n\n.. function:: modelform_factory(model, form=ModelForm, fields=None, exclude=None, formfield_callback=None,  widgets=None)\n\n    Returns a :class:`~django.forms.ModelForm` class for the given ``model``.\n    You can optionally pass a ``form`` argument to use as a starting point for\n    constructing the ``ModelForm``.\n\n    ``fields`` is an optional list of field names. If provided, only the named\n    fields will be included in the returned fields.\n\n    ``exclude`` is an optional list of field names. If provided, the named\n    fields will be excluded from the returned fields, even if they are listed\n    in the ``fields`` argument.\n\n    ``widgets`` is a dictionary of model field names mapped to a widget.\n\n    ``formfield_callback`` is a callable that takes a model field and returns\n    a form field.\n\n    See :ref:`modelforms-factory` for example usage.\n\n.. function:: modelformset_factory(model, form=ModelForm, formfield_callback=None, formset=BaseModelFormSet, extra=1, can_delete=False, can_order=False, max_num=None, fields=None, exclude=None)\n\n    Returns a ``FormSet`` class for the given ``model`` class.\n\n    Arguments ``model``, ``form``, ``fields``, ``exclude``, and\n    ``formfield_callback`` are all passed through to\n    :func:`~django.forms.models.modelform_factory`.\n\n    Arguments ``formset``, ``extra``, ``max_num``, ``can_order``, and\n    ``can_delete`` are passed through to ``formset_factory``. See\n    :ref:`formsets` for details.\n\n    See :ref:`model-formsets` for example usage.\n\n.. function:: inlineformset_factory(parent_model, model, form=ModelForm, formset=BaseInlineFormSet, fk_name=None, fields=None, exclude=None, extra=3, can_order=False, can_delete=True, max_num=None, formfield_callback=None)\n\n    Returns an ``InlineFormSet`` using :func:`modelformset_factory` with\n    defaults of ``formset=BaseInlineFormSet``, ``can_delete=True``, and\n    ``extra=3``.\n\n    If your model has more than one :class:`~django.db.models.ForeignKey` to\n    the ``parent_model``, you must specify a ``fk_name``.\n\n    See :ref:`inline-formsets` for example usage.\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/forms/validation.txt",
    "content": ".. _form-and-field-validation:\n\nForm and field validation\n=========================\n\nForm validation happens when the data is cleaned. If you want to customize\nthis process, there are various places you can change, each one serving a\ndifferent purpose. Three types of cleaning methods are run during form\nprocessing. These are normally executed when you call the ``is_valid()``\nmethod on a form. There are other things that can trigger cleaning and\nvalidation (accessing the ``errors`` attribute or calling ``full_clean()``\ndirectly), but normally they won't be needed.\n\nIn general, any cleaning method can raise ``ValidationError`` if there is a\nproblem with the data it is processing, passing the relevant error message to\nthe ``ValidationError`` constructor. If no ``ValidationError`` is raised, the\nmethod should return the cleaned (normalized) data as a Python object.\n\nIf you detect multiple errors during a cleaning method and wish to signal all\nof them to the form submitter, it is possible to pass a list of errors to the\n``ValidationError`` constructor.\n\nMost validation can be done using `validators`_ - simple helpers that can be\nreused easily. Validators are simple functions (or callables) that take a single\nargument and raise ``ValidationError`` on invalid input. Validators are run\nafter the field's ``to_python`` and ``validate`` methods have been called.\n\nValidation of a Form is split into several steps, which can be customized or\noverridden:\n\n* The ``to_python()`` method on a Field is the first step in every\n  validation. It coerces the value to correct datatype and raises\n  ``ValidationError`` if that is not possible. This method accepts the raw\n  value from the widget and returns the converted value. For example, a\n  FloatField will turn the data into a Python ``float`` or raise a\n  ``ValidationError``.\n\n* The ``validate()`` method on a Field handles field-specific validation\n  that is not suitable for a validator, It takes a value that has been\n  coerced to correct datatype and raises ``ValidationError`` on any error.\n  This method does not return anything and shouldn't alter the value. You\n  should override it to handle validation logic that you can't or don't\n  want to put in a validator.\n\n* The ``run_validators()`` method on a Field runs all of the field's\n  validators and aggregates all the errors into a single\n  ``ValidationError``. You shouldn't need to override this method.\n\n* The ``clean()`` method on a Field subclass. This is responsible for\n  running ``to_python``, ``validate`` and ``run_validators`` in the correct\n  order and propagating their errors. If, at any time, any of the methods\n  raise ``ValidationError``, the validation stops and that error is raised.\n  This method returns the clean data, which is then inserted into the\n  ``cleaned_data`` dictionary of the form.\n\n* The ``clean_<fieldname>()`` method in a form subclass -- where\n  ``<fieldname>`` is replaced with the name of the form field attribute.\n  This method does any cleaning that is specific to that particular\n  attribute, unrelated to the type of field that it is. This method is not\n  passed any parameters. You will need to look up the value of the field\n  in ``self.cleaned_data`` and remember that it will be a Python object\n  at this point, not the original string submitted in the form (it will be\n  in ``cleaned_data`` because the general field ``clean()`` method, above,\n  has already cleaned the data once).\n\n  For example, if you wanted to validate that the contents of a\n  ``CharField`` called ``serialnumber`` was unique,\n  ``clean_serialnumber()`` would be the right place to do this. You don't\n  need a specific field (it's just a ``CharField``), but you want a\n  formfield-specific piece of validation and, possibly,\n  cleaning/normalizing the data.\n\n  This method should return the cleaned value obtained from cleaned_data,\n  regardless of whether it changed anything or not.\n\n* The Form subclass's ``clean()`` method. This method can perform\n  any validation that requires access to multiple fields from the form at\n  once. This is where you might put in things to check that if field ``A``\n  is supplied, field ``B`` must contain a valid email address and the\n  like. The data that this method returns is the final ``cleaned_data``\n  attribute for the form, so don't forget to return the full list of\n  cleaned data if you override this method (by default, ``Form.clean()``\n  just returns ``self.cleaned_data``).\n\n  Note that any errors raised by your ``Form.clean()`` override will not\n  be associated with any field in particular. They go into a special\n  \"field\" (called ``__all__``), which you can access via the\n  ``non_field_errors()`` method if you need to. If you want to attach\n  errors to a specific field in the form, you will need to access the\n  ``_errors`` attribute on the form, which is `described later`_.\n\n  Also note that there are special considerations when overriding\n  the ``clean()`` method of a ``ModelForm`` subclass. (see the\n  :ref:`ModelForm documentation\n  <overriding-modelform-clean-method>` for more information)\n\nThese methods are run in the order given above, one field at a time.  That is,\nfor each field in the form (in the order they are declared in the form\ndefinition), the ``Field.clean()`` method (or its override) is run, then\n``clean_<fieldname>()``. Finally, once those two methods are run for every\nfield, the ``Form.clean()`` method, or its override, is executed.\n\nExamples of each of these methods are provided below.\n\nAs mentioned, any of these methods can raise a ``ValidationError``. For any\nfield, if the ``Field.clean()`` method raises a ``ValidationError``, any\nfield-specific cleaning method is not called. However, the cleaning methods\nfor all remaining fields are still executed.\n\nThe ``clean()`` method for the ``Form`` class or subclass is always run. If\nthat method raises a ``ValidationError``, ``cleaned_data`` will be an empty\ndictionary.\n\nThe previous paragraph means that if you are overriding ``Form.clean()``, you\nshould iterate through ``self.cleaned_data.items()``, possibly considering the\n``_errors`` dictionary attribute on the form as well. In this way, you will\nalready know which fields have passed their individual validation requirements.\n\n.. _described later:\n\nForm subclasses and modifying field errors\n------------------------------------------\n\nSometimes, in a form's ``clean()`` method, you will want to add an error\nmessage to a particular field in the form. This won't always be appropriate\nand the more typical situation is to raise a ``ValidationError`` from\n``Form.clean()``, which is turned into a form-wide error that is available\nthrough the ``Form.non_field_errors()`` method.\n\nWhen you really do need to attach the error to a particular field, you should\nstore (or amend) a key in the ``Form._errors`` attribute. This attribute is an\ninstance of a ``django.forms.util.ErrorDict`` class. Essentially, though, it's\njust a dictionary. There is a key in the dictionary for each field in the form\nthat has an error. Each value in the dictionary is a\n``django.forms.util.ErrorList`` instance, which is a list that knows how to\ndisplay itself in different ways. So you can treat ``_errors`` as a dictionary\nmapping field names to lists.\n\nIf you want to add a new error to a particular field, you should check whether\nthe key already exists in ``self._errors`` or not. If not, create a new entry\nfor the given key, holding an empty ``ErrorList`` instance. In either case,\nyou can then append your error message to the list for the field name in\nquestion and it will be displayed when the form is displayed.\n\nThere is an example of modifying ``self._errors`` in the following section.\n\n.. admonition:: What's in a name?\n\n    You may be wondering why is this attribute called ``_errors`` and not\n    ``errors``. Normal Python practice is to prefix a name with an underscore\n    if it's not for external usage. In this case, you are subclassing the\n    ``Form`` class, so you are essentially writing new internals. In effect,\n    you are given permission to access some of the internals of ``Form``.\n\n    Of course, any code outside your form should never access ``_errors``\n    directly. The data is available to external code through the ``errors``\n    property, which populates ``_errors`` before returning it).\n\n    Another reason is purely historical: the attribute has been called\n    ``_errors`` since the early days of the forms module and changing it now\n    (particularly since ``errors`` is used for the read-only property name)\n    would be inconvenient for a number of reasons. You can use whichever\n    explanation makes you feel more comfortable. The result is the same.\n\nUsing validation in practice\n----------------------------\n\nThe previous sections explained how validation works in general for forms.\nSince it can sometimes be easier to put things into place by seeing each\nfeature in use, here are a series of small examples that use each of the\nprevious features.\n\n.. _validators:\n\nUsing validators\n~~~~~~~~~~~~~~~~\n\nDjango's form (and model) fields support use of simple utility functions and\nclasses known as validators. These can be passed to a field's constructor, via\nthe field's ``validators`` argument, or defined on the Field class itself with\nthe ``default_validators`` attribute.\n\nSimple validators can be used to validate values inside the field, let's have\na look at Django's ``EmailField``::\n\n    class EmailField(CharField):\n        default_error_messages = {\n            'invalid': _('Enter a valid email address.'),\n        }\n        default_validators = [validators.validate_email]\n\nAs you can see, ``EmailField`` is just a ``CharField`` with customized error\nmessage and a validator that validates email addresses. This can also be done\non field definition so::\n\n    email = forms.EmailField()\n\nis equivalent to::\n\n    email = forms.CharField(validators=[validators.validate_email],\n            error_messages={'invalid': _('Enter a valid email address.')})\n\n\nForm field default cleaning\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nLet's firstly create a custom form field that validates its input is a string\ncontaining comma-separated email addresses. The full class looks like this::\n\n    from django import forms\n    from django.core.validators import validate_email\n\n    class MultiEmailField(forms.Field):\n        def to_python(self, value):\n            \"Normalize data to a list of strings.\"\n\n            # Return an empty list if no input was given.\n            if not value:\n                return []\n            return value.split(',')\n\n        def validate(self, value):\n            \"Check if value consists only of valid emails.\"\n\n            # Use the parent's handling of required fields, etc.\n            super(MultiEmailField, self).validate(value)\n\n            for email in value:\n                validate_email(email)\n\nEvery form that uses this field will have these methods run before anything\nelse can be done with the field's data. This is cleaning that is specific to\nthis type of field, regardless of how it is subsequently used.\n\nLet's create a simple ``ContactForm`` to demonstrate how you'd use this\nfield::\n\n    class ContactForm(forms.Form):\n        subject = forms.CharField(max_length=100)\n        message = forms.CharField()\n        sender = forms.EmailField()\n        recipients = MultiEmailField()\n        cc_myself = forms.BooleanField(required=False)\n\nSimply use ``MultiEmailField`` like any other form field. When the\n``is_valid()`` method is called on the form, the ``MultiEmailField.clean()``\nmethod will be run as part of the cleaning process and it will, in turn, call\nthe custom ``to_python()`` and ``validate()`` methods.\n\nCleaning a specific field attribute\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nContinuing on from the previous example, suppose that in our ``ContactForm``,\nwe want to make sure that the ``recipients`` field always contains the address\n``\"fred@example.com\"``. This is validation that is specific to our form, so we\ndon't want to put it into the general ``MultiEmailField`` class. Instead, we\nwrite a cleaning method that operates on the ``recipients`` field, like so::\n\n    class ContactForm(forms.Form):\n        # Everything as before.\n        ...\n\n        def clean_recipients(self):\n            data = self.cleaned_data['recipients']\n            if \"fred@example.com\" not in data:\n                raise forms.ValidationError(\"You have forgotten about Fred!\")\n\n            # Always return the cleaned data, whether you have changed it or\n            # not.\n            return data\n\nCleaning and validating fields that depend on each other\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nSuppose we add another requirement to our contact form: if the ``cc_myself``\nfield is ``True``, the ``subject`` must contain the word ``\"help\"``. We are\nperforming validation on more than one field at a time, so the form's\n``clean()`` method is a good spot to do this. Notice that we are talking about\nthe ``clean()`` method on the form here, whereas earlier we were writing a\n``clean()`` method on a field. It's important to keep the field and form\ndifference clear when working out where to validate things. Fields are single\ndata points, forms are a collection of fields.\n\nBy the time the form's ``clean()`` method is called, all the individual field\nclean methods will have been run (the previous two sections), so\n``self.cleaned_data`` will be populated with any data that has survived so\nfar. So you also need to remember to allow for the fact that the fields you\nare wanting to validate might not have survived the initial individual field\nchecks.\n\nThere are two ways to report any errors from this step. Probably the most\ncommon method is to display the error at the top of the form. To create such\nan error, you can raise a ``ValidationError`` from the ``clean()`` method. For\nexample::\n\n    class ContactForm(forms.Form):\n        # Everything as before.\n        ...\n\n        def clean(self):\n            cleaned_data = super(ContactForm, self).clean()\n            cc_myself = cleaned_data.get(\"cc_myself\")\n            subject = cleaned_data.get(\"subject\")\n\n            if cc_myself and subject:\n                # Only do something if both fields are valid so far.\n                if \"help\" not in subject:\n                    raise forms.ValidationError(\"Did not send for 'help' in \"\n                            \"the subject despite CC'ing yourself.\")\n\n            # Always return the full collection of cleaned data.\n            return cleaned_data\n\nIn this code, if the validation error is raised, the form will display an\nerror message at the top of the form (normally) describing the problem.\n\nNote that the call to ``super(ContactForm, self).clean()`` in the example code\nensures that any validation logic in parent classes is maintained.\n\nThe second approach might involve assigning the error message to one of the\nfields. In this case, let's assign an error message to both the \"subject\" and\n\"cc_myself\" rows in the form display. Be careful when doing this in practice,\nsince it can lead to confusing form output. We're showing what is possible\nhere and leaving it up to you and your designers to work out what works\neffectively in your particular situation. Our new code (replacing the previous\nsample) looks like this::\n\n    class ContactForm(forms.Form):\n        # Everything as before.\n        ...\n\n        def clean(self):\n            cleaned_data = super(ContactForm, self).clean()\n            cc_myself = cleaned_data.get(\"cc_myself\")\n            subject = cleaned_data.get(\"subject\")\n\n            if cc_myself and subject and \"help\" not in subject:\n                # We know these are not in self._errors now (see discussion\n                # below).\n                msg = u\"Must put 'help' in subject when cc'ing yourself.\"\n                self._errors[\"cc_myself\"] = self.error_class([msg])\n                self._errors[\"subject\"] = self.error_class([msg])\n\n                # These fields are no longer valid. Remove them from the\n                # cleaned data.\n                del cleaned_data[\"cc_myself\"]\n                del cleaned_data[\"subject\"]\n\n            # Always return the full collection of cleaned data.\n            return cleaned_data\n\nAs you can see, this approach requires a bit more effort, not withstanding the\nextra design effort to create a sensible form display. The details are worth\nnoting, however. Firstly, earlier we mentioned that you might need to check if\nthe field name keys already exist in the ``_errors`` dictionary. In this case,\nsince we know the fields exist in ``self.cleaned_data``, they must have been\nvalid when cleaned as individual fields, so there will be no corresponding\nentries in ``_errors``.\n\nSecondly, once we have decided that the combined data in the two fields we are\nconsidering aren't valid, we must remember to remove them from the\n``cleaned_data``.\n\n.. versionchanged:: 1.5\n\nDjango used to remove the ``cleaned_data`` attribute entirely if there were\nany errors in the form. Since version 1.5, ``cleaned_data`` is present even if\nthe form doesn't validate, but it contains only field values that did\nvalidate.\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/forms/widgets.txt",
    "content": "=======\nWidgets\n=======\n\n.. module:: django.forms.widgets\n   :synopsis: Django's built-in form widgets.\n\n.. currentmodule:: django.forms\n\nA widget is Django's representation of a HTML input element. The widget\nhandles the rendering of the HTML, and the extraction of data from a GET/POST\ndictionary that corresponds to the widget.\n\n.. tip::\n\n    Widgets should not be confused with the :doc:`form fields </ref/forms/fields>`.\n    Form fields deal with the logic of input validation and are used directly\n    in templates. Widgets deal with rendering of HTML form input elements on\n    the web page and extraction of raw submitted data. However, widgets do\n    need to be :ref:`assigned <widget-to-field>` to form fields.\n\n.. _widget-to-field:\n\nSpecifying widgets\n------------------\n\nWhenever you specify a field on a form, Django will use a default widget\nthat is appropriate to the type of data that is to be displayed. To find\nwhich widget is used on which field, see the documentation about\n:ref:`built-in fields`.\n\nHowever, if you want to use a different widget for a field, you can\njust use the :attr:`~Field.widget` argument on the field definition. For\nexample::\n\n    from django import forms\n\n    class CommentForm(forms.Form):\n        name = forms.CharField()\n        url = forms.URLField()\n        comment = forms.CharField(widget=forms.Textarea)\n\nThis would specify a form with a comment that uses a larger :class:`Textarea`\nwidget, rather than the default :class:`TextInput` widget.\n\n\nSetting arguments for widgets\n-----------------------------\n\nMany widgets have optional extra arguments; they can be set when defining the\nwidget on the field. In the following example, the\n:attr:`~django.forms.extras.widgets.SelectDateWidget.years` attribute is set\nfor a :class:`~django.forms.extras.widgets.SelectDateWidget`::\n\n    from django.forms.fields import DateField, ChoiceField, MultipleChoiceField\n    from django.forms.widgets import RadioSelect, CheckboxSelectMultiple\n    from django.forms.extras.widgets import SelectDateWidget\n\n    BIRTH_YEAR_CHOICES = ('1980', '1981', '1982')\n    FAVORITE_COLORS_CHOICES = (('blue', 'Blue'),\n                                ('green', 'Green'),\n                                ('black', 'Black'))\n\n    class SimpleForm(forms.Form):\n        birth_year = DateField(widget=SelectDateWidget(years=BIRTH_YEAR_CHOICES))\n        favorite_colors = forms.MultipleChoiceField(required=False,\n            widget=CheckboxSelectMultiple, choices=FAVORITE_COLORS_CHOICES)\n\nSee the :ref:`built-in widgets` for more information about which widgets\nare available and which arguments they accept.\n\n\nWidgets inheriting from the Select widget\n-----------------------------------------\n\nWidgets inheriting from the :class:`Select` widget deal with choices. They\npresent the user with a list of options to choose from. The different widgets\npresent this choice differently; the :class:`Select` widget itself uses a\n``<select>`` HTML list representation, while :class:`RadioSelect` uses radio\nbuttons.\n\n:class:`Select` widgets are used by default on :class:`ChoiceField` fields. The\nchoices displayed on the widget are inherited from the :class:`ChoiceField` and\nchanging :attr:`ChoiceField.choices` will update :attr:`Select.choices`. For\nexample::\n\n    >>> from django import forms\n    >>> CHOICES = (('1', 'First',), ('2', 'Second',))\n    >>> choice_field = forms.ChoiceField(widget=forms.RadioSelect, choices=CHOICES)\n    >>> choice_field.choices\n    [('1', 'First'), ('2', 'Second')]\n    >>> choice_field.widget.choices\n    [('1', 'First'), ('2', 'Second')]\n    >>> choice_field.widget.choices = ()\n    >>> choice_field.choices = (('1', 'First and only',),)\n    >>> choice_field.widget.choices\n    [('1', 'First and only')]\n\n\nWidgets which offer a :attr:`~Select.choices` attribute can however be used\nwith fields which are not based on choice -- such as a :class:`CharField` --\nbut it is recommended to use a :class:`ChoiceField`-based field when the\nchoices are inherent to the model and not just the representational widget.\n\nCustomizing widget instances\n----------------------------\n\nWhen Django renders a widget as HTML, it only renders very minimal markup -\nDjango doesn't add class names, or any other widget-specific attributes. This\nmeans, for example, that all :class:`TextInput` widgets will appear the same\non your Web pages.\n\nThere are two ways to customize widgets: :ref:`per widget instance\n<styling-widget-instances>` and :ref:`per widget class <styling-widget-classes>`.\n\n.. _styling-widget-instances:\n\nStyling widget instances\n^^^^^^^^^^^^^^^^^^^^^^^^\n\nIf you want to make one widget instance look different from another, you will\nneed to specify additional attributes at the time when the widget object is\ninstantiated and assigned to a form field (and perhaps add some rules to your\nCSS files).\n\nFor example, take the following simple form::\n\n    from django import forms\n\n    class CommentForm(forms.Form):\n        name = forms.CharField()\n        url = forms.URLField()\n        comment = forms.CharField()\n\nThis form will include three default :class:`TextInput` widgets, with default\nrendering -- no CSS class, no extra attributes. This means that the input boxes\nprovided for each widget will be rendered exactly the same::\n\n    >>> f = CommentForm(auto_id=False)\n    >>> f.as_table()\n    <tr><th>Name:</th><td><input type=\"text\" name=\"name\" /></td></tr>\n    <tr><th>Url:</th><td><input type=\"text\" name=\"url\"/></td></tr>\n    <tr><th>Comment:</th><td><input type=\"text\" name=\"comment\" /></td></tr>\n\nOn a real Web page, you probably don't want every widget to look the same. You\nmight want a larger input element for the comment, and you might want the\n'name' widget to have some special CSS class. It is also possible to specify\nthe 'type' attribute to take advantage of the new HTML5 input types.  To do\nthis, you use the :attr:`Widget.attrs` argument when creating the widget::\n\n    class CommentForm(forms.Form):\n        name = forms.CharField(\n                    widget=forms.TextInput(attrs={'class':'special'}))\n        url = forms.URLField()\n        comment = forms.CharField(\n                   widget=forms.TextInput(attrs={'size':'40'}))\n\nDjango will then include the extra attributes in the rendered output:\n\n    >>> f = CommentForm(auto_id=False)\n    >>> f.as_table()\n    <tr><th>Name:</th><td><input type=\"text\" name=\"name\" class=\"special\"/></td></tr>\n    <tr><th>Url:</th><td><input type=\"text\" name=\"url\"/></td></tr>\n    <tr><th>Comment:</th><td><input type=\"text\" name=\"comment\" size=\"40\"/></td></tr>\n\n.. _styling-widget-classes:\n\nStyling widget classes\n^^^^^^^^^^^^^^^^^^^^^^\n\nWith widgets, it is possible to add media (``css`` and ``javascript``)\nand more deeply customize their appearance and behavior.\n\nIn a nutshell, you will need to subclass the widget and either\n:ref:`define a class \"Media\" <media-as-a-static-definition>` as a member of the\nsubclass, or :ref:`create a property \"media\" <dynamic-property>`, returning an\ninstance of that class.\n\nThese methods involve somewhat advanced Python programming and are described in\ndetail in the :doc:`Form Media </topics/forms/media>` topic guide.\n\n.. _base-widget-classes:\n\nBase Widget classes\n-------------------\n\nBase widget classes :class:`Widget` and :class:`MultiWidget` are subclassed by\nall the :ref:`built-in widgets <built-in widgets>` and may serve as a\nfoundation for custom widgets.\n\n.. class:: Widget(attrs=None)\n\n    This abstract class cannot be rendered, but provides the basic attribute\n    :attr:`~Widget.attrs`.  You may also implement or override the\n    :meth:`~Widget.render()` method on custom widgets.\n\n    .. attribute:: Widget.attrs\n\n        A dictionary containing HTML attributes to be set on the rendered\n        widget.\n\n        .. code-block:: python\n\n            >>> name = forms.TextInput(attrs={'size': 10, 'title': 'Your name',})\n            >>> name.render('name', 'A name')\n            u'<input title=\"Your name\" type=\"text\" name=\"name\" value=\"A name\" size=\"10\" />'\n\n    .. method:: render(name, value, attrs=None)\n\n        Returns HTML for the widget, as a Unicode string. This method must be\n        implemented by the subclass, otherwise ``NotImplementedError`` will be\n        raised.\n\n        The 'value' given is not guaranteed to be valid input, therefore\n        subclass implementations should program defensively.\n\n    .. method:: value_from_datadict(self, data, files, name)\n\n        Given a dictionary of data and this widget's name, returns the value\n        of this widget. Returns ``None`` if a value wasn't provided.\n\n.. class:: MultiWidget(widgets, attrs=None)\n\n    A widget that is composed of multiple widgets.\n    :class:`~django.forms.MultiWidget` works hand in hand with the\n    :class:`~django.forms.MultiValueField`.\n\n    :class:`MultiWidget` has one required argument:\n\n    .. attribute:: MultiWidget.widgets\n\n        An iterable containing the widgets needed.\n\n    And one required method:\n\n    .. method:: decompress(value)\n\n        This method takes a single \"compressed\" value from the field and\n        returns a list of \"decompressed\" values. The input value can be\n        assumed valid, but not necessarily non-empty.\n\n        This method **must be implemented** by the subclass, and since the\n        value may be empty, the implementation must be defensive.\n\n        The rationale behind \"decompression\" is that it is necessary to \"split\"\n        the combined value of the form field into the values for each widget.\n\n        An example of this is how :class:`SplitDateTimeWidget` turns a\n        :class:`~datetime.datetime` value into a list with date and time split\n        into two separate values::\n\n            class SplitDateTimeWidget(MultiWidget):\n\n                # ...\n\n                def decompress(self, value):\n                    if value:\n                        return [value.date(), value.time().replace(microsecond=0)]\n                    return [None, None]\n\n        .. tip::\n\n            Note that :class:`~django.forms.MultiValueField` has a\n            complementary method :meth:`~django.forms.MultiValueField.compress`\n            with the opposite responsibility - to combine cleaned values of\n            all member fields into one.\n\n    Other methods that may be useful to override include:\n\n    .. method:: render(name, value, attrs=None)\n\n        Argument ``value`` is handled differently in this method from the\n        subclasses of :class:`~Widget` because it has to figure out how to\n        split a single value for display in multiple widgets.\n\n        The ``value`` argument used when rendering can be one of two things:\n\n        * A ``list``.\n        * A single value (e.g., a string) that is the \"compressed\" representation\n          of a ``list`` of values.\n\n        If ``value`` is a list, the output of :meth:`~MultiWidget.render` will\n        be a concatenation of rendered child widgets. If ``value`` is not a\n        list, it will first be processed by the method\n        :meth:`~MultiWidget.decompress()` to create the list and then rendered.\n\n        When ``render()`` executes its HTML rendering, each value in the list\n        is rendered with the corresponding widget -- the first value is\n        rendered in the first widget, the second value is rendered in the\n        second widget, etc.\n\n        Unlike in the single value widgets, method :meth:`~MultiWidget.render`\n        need not be implemented in the subclasses.\n\n    .. method:: format_output(rendered_widgets)\n\n        Given a list of rendered widgets (as strings), returns a Unicode string\n        representing the HTML for the whole lot.\n\n        This hook allows you to format the HTML design of the widgets any way\n        you'd like.\n\n    Here's an example widget which subclasses :class:`MultiWidget` to display\n    a date with the day, month, and year in different select boxes. This widget\n    is intended to be used with a :class:`~django.forms.DateField` rather than\n    a :class:`~django.forms.MultiValueField`, thus we have implemented\n    :meth:`~Widget.value_from_datadict`::\n\n        from datetime import date\n        from django.forms import widgets\n\n        class DateSelectorWidget(widgets.MultiWidget):\n            def __init__(self, attrs=None):\n                # create choices for days, months, years\n                # example below, the rest snipped for brevity.\n                years = [(year, year) for year in (2011, 2012, 2013)]\n                _widgets = (\n                    widgets.Select(attrs=attrs, choices=days),\n                    widgets.Select(attrs=attrs, choices=months),\n                    widgets.Select(attrs=attrs, choices=years),\n                )\n                super(DateSelectorWidget, self).__init__(_widgets, attrs)\n\n            def decompress(self, value):\n                if value:\n                    return [value.day, value.month, value.year]\n                return [None, None, None]\n\n            def format_output(self, rendered_widgets):\n                return u''.join(rendered_widgets)\n\n            def value_from_datadict(self, data, files, name):\n                datelist = [\n                    widget.value_from_datadict(data, files, name + '_%s' % i)\n                    for i, widget in enumerate(self.widgets)]\n                try:\n                    D = date(day=int(datelist[0]), month=int(datelist[1]),\n                            year=int(datelist[2]))\n                except ValueError:\n                    return ''\n                else:\n                    return str(D)\n\n    The constructor creates several :class:`Select` widgets in a tuple. The\n    ``super`` class uses this tuple to setup the widget.\n\n    The :meth:`~MultiWidget.format_output` method is fairly vanilla here (in\n    fact, it's the same as what's been implemented as the default for\n    ``MultiWidget``), but the idea is that you could add custom HTML between\n    the widgets should you wish.\n\n    The required method :meth:`~MultiWidget.decompress` breaks up a\n    ``datetime.date`` value into the day, month, and year values corresponding\n    to each widget. Note how the method handles the case where ``value`` is\n    ``None``.\n\n    The default implementation of :meth:`~Widget.value_from_datadict` returns\n    a list of values corresponding to each ``Widget``.  This is appropriate\n    when using a ``MultiWidget`` with a :class:`~django.forms.MultiValueField`,\n    but since we want to use this widget with a :class:`~django.forms.DateField`\n    which takes a single value, we have overridden this method to combine the\n    data of all the subwidgets into a ``datetime.date``. The method extracts\n    data from the ``POST`` dictionary and constructs and validates the date.\n    If it is valid, we return the string, otherwise, we return an empty string\n    which will cause ``form.is_valid`` to return ``False``.\n\n.. _built-in widgets:\n\nBuilt-in widgets\n----------------\n\nDjango provides a representation of all the basic HTML widgets, plus some\ncommonly used groups of widgets in the ``django.forms.widgets`` module,\nincluding :ref:`the input of text <text-widgets>`, :ref:`various checkboxes\nand selectors <selector-widgets>`, :ref:`uploading files <file-upload-widgets>`,\nand :ref:`handling of multi-valued input <composite-widgets>`.\n\n.. _text-widgets:\n\nWidgets handling input of text\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nThese widgets make use of the HTML elements ``input`` and ``textarea``.\n\n``TextInput``\n~~~~~~~~~~~~~\n\n.. class:: TextInput\n\n    Text input: ``<input type='text' ...>``\n\n``PasswordInput``\n~~~~~~~~~~~~~~~~~\n\n.. class:: PasswordInput\n\n    Password input: ``<input type='password' ...>``\n\n    Takes one optional argument:\n\n    .. attribute:: PasswordInput.render_value\n\n        Determines whether the widget will have a value filled in when the\n        form is re-displayed after a validation error (default is ``False``).\n\n``HiddenInput``\n~~~~~~~~~~~~~~~\n\n.. class:: HiddenInput\n\n    Hidden input: ``<input type='hidden' ...>``\n\n    Note that there also is a :class:`MultipleHiddenInput` widget that\n    encapsulates a set of hidden input elements.\n\n``DateInput``\n~~~~~~~~~~~~~\n\n.. class:: DateInput\n\n    Date input as a simple text box: ``<input type='text' ...>``\n\n    Takes same arguments as :class:`TextInput`, with one more optional argument:\n\n    .. attribute:: DateInput.format\n\n        The format in which this field's initial value will be displayed.\n\n    If no ``format`` argument is provided, the default format is the first\n    format found in :setting:`DATE_INPUT_FORMATS` and respects\n    :ref:`format-localization`.\n\n``DateTimeInput``\n~~~~~~~~~~~~~~~~~\n\n.. class:: DateTimeInput\n\n    Date/time input as a simple text box: ``<input type='text' ...>``\n\n    Takes same arguments as :class:`TextInput`, with one more optional argument:\n\n    .. attribute:: DateTimeInput.format\n\n        The format in which this field's initial value will be displayed.\n\n    If no ``format`` argument is provided, the default format is the first\n    format found in :setting:`DATETIME_INPUT_FORMATS` and respects\n    :ref:`format-localization`.\n\n``TimeInput``\n~~~~~~~~~~~~~\n\n.. class:: TimeInput\n\n    Time input as a simple text box: ``<input type='text' ...>``\n\n    Takes same arguments as :class:`TextInput`, with one more optional argument:\n\n    .. attribute:: TimeInput.format\n\n        The format in which this field's initial value will be displayed.\n\n    If no ``format`` argument is provided, the default format is the first\n    format found in :setting:`TIME_INPUT_FORMATS` and respects\n    :ref:`format-localization`.\n\n``Textarea``\n~~~~~~~~~~~~\n\n.. class:: Textarea\n\n    Text area: ``<textarea>...</textarea>``\n\n.. _selector-widgets:\n\nSelector and checkbox widgets\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n``CheckboxInput``\n~~~~~~~~~~~~~~~~~\n\n.. class:: CheckboxInput\n\n    Checkbox: ``<input type='checkbox' ...>``\n\n    Takes one optional argument:\n\n    .. attribute:: CheckboxInput.check_test\n\n        A callable that takes the value of the CheckBoxInput and returns\n        ``True`` if the checkbox should be checked for that value.\n\n        .. versionchanged:: 1.5\n            Exceptions from ``check_test`` used to be silenced by its caller,\n            this is no longer the case, they will propagate upwards.\n\n``Select``\n~~~~~~~~~~\n\n.. class:: Select\n\n    Select widget: ``<select><option ...>...</select>``\n\n    .. attribute:: Select.choices\n\n        This attribute is optional when the form field does not have a\n        ``choices`` attribute. If it does, it will override anything you set\n        here when the attribute is updated on the :class:`Field`.\n\n``NullBooleanSelect``\n~~~~~~~~~~~~~~~~~~~~~\n\n.. class:: NullBooleanSelect\n\n    Select widget with options 'Unknown', 'Yes' and 'No'\n\n``SelectMultiple``\n~~~~~~~~~~~~~~~~~~\n\n.. class:: SelectMultiple\n\n    Similar to :class:`Select`, but allows multiple selection:\n    ``<select multiple='multiple'>...</select>``\n\n``RadioSelect``\n~~~~~~~~~~~~~~~\n\n.. class:: RadioSelect\n\n    Similar to :class:`Select`, but rendered as a list of radio buttons within\n    ``<li>`` tags:\n\n    .. code-block:: html\n\n        <ul>\n          <li><input type='radio' ...></li>\n          ...\n        </ul>\n\n    .. versionadded:: 1.4\n\n    For more granular control over the generated markup, you can loop over the\n    radio buttons in the template. Assuming a form ``myform`` with a field\n    ``beatles`` that uses a ``RadioSelect`` as its widget:\n\n    .. code-block:: html+django\n\n        {% for radio in myform.beatles %}\n        <div class=\"myradio\">\n            {{ radio }}\n        </div>\n        {% endfor %}\n\n    This would generate the following HTML:\n\n    .. code-block:: html\n\n        <div class=\"myradio\">\n            <label><input type=\"radio\" name=\"beatles\" value=\"john\" /> John</label>\n        </div>\n        <div class=\"myradio\">\n            <label><input type=\"radio\" name=\"beatles\" value=\"paul\" /> Paul</label>\n        </div>\n        <div class=\"myradio\">\n            <label><input type=\"radio\" name=\"beatles\" value=\"george\" /> George</label>\n        </div>\n        <div class=\"myradio\">\n            <label><input type=\"radio\" name=\"beatles\" value=\"ringo\" /> Ringo</label>\n        </div>\n\n    That included the ``<label>`` tags. To get more granular, you can use each\n    radio button's ``tag`` and ``choice_label`` attributes. For example, this template...\n\n    .. code-block:: html+django\n\n        {% for radio in myform.beatles %}\n            <label>\n                {{ radio.choice_label }}\n                <span class=\"radio\">{{ radio.tag }}</span>\n            </label>\n        {% endfor %}\n\n    ...will result in the following HTML:\n\n    .. code-block:: html\n\n            <label>\n                John\n                <span class=\"radio\"><input type=\"radio\" name=\"beatles\" value=\"john\" /></span>\n            </label>\n            <label>\n                Paul\n                <span class=\"radio\"><input type=\"radio\" name=\"beatles\" value=\"paul\" /></span>\n            </label>\n            <label>\n                George\n                <span class=\"radio\"><input type=\"radio\" name=\"beatles\" value=\"george\" /></span>\n            </label>\n            <label>\n                Ringo\n                <span class=\"radio\"><input type=\"radio\" name=\"beatles\" value=\"ringo\" /></span>\n            </label>\n\n    If you decide not to loop over the radio buttons -- e.g., if your template simply includes\n    ``{{ myform.beatles }}`` -- they'll be output in a ``<ul>`` with ``<li>`` tags, as above.\n\n``CheckboxSelectMultiple``\n~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. class:: CheckboxSelectMultiple\n\n    Similar to :class:`SelectMultiple`, but rendered as a list of check\n    buttons:\n\n    .. code-block:: html\n\n        <ul>\n          <li><input type='checkbox' ...></li>\n          ...\n        </ul>\n\n.. _file-upload-widgets:\n\nFile upload widgets\n^^^^^^^^^^^^^^^^^^^\n\n``FileInput``\n~~~~~~~~~~~~~\n\n.. class:: FileInput\n\n    File upload input: ``<input type='file' ...>``\n\n``ClearableFileInput``\n~~~~~~~~~~~~~~~~~~~~~~\n\n.. class:: ClearableFileInput\n\n    File upload input: ``<input type='file' ...>``, with an additional checkbox\n    input to clear the field's value, if the field is not required and has\n    initial data.\n\n.. _composite-widgets:\n\nComposite widgets\n^^^^^^^^^^^^^^^^^\n\n``MultipleHiddenInput``\n~~~~~~~~~~~~~~~~~~~~~~~\n\n.. class:: MultipleHiddenInput\n\n    Multiple ``<input type='hidden' ...>`` widgets.\n\n    A widget that handles multiple hidden widgets for fields that have a list\n    of values.\n\n    .. attribute:: MultipleHiddenInput.choices\n\n        This attribute is optional when the form field does not have a\n        ``choices`` attribute. If it does, it will override anything you set\n        here when the attribute is updated on the :class:`Field`.\n\n``SplitDateTimeWidget``\n~~~~~~~~~~~~~~~~~~~~~~~\n\n.. class:: SplitDateTimeWidget\n\n    Wrapper (using :class:`MultiWidget`) around two widgets: :class:`DateInput`\n    for the date, and :class:`TimeInput` for the time.\n\n    ``SplitDateTimeWidget`` has two optional attributes:\n\n    .. attribute:: SplitDateTimeWidget.date_format\n\n        Similar to :attr:`DateInput.format`\n\n    .. attribute:: SplitDateTimeWidget.time_format\n\n        Similar to :attr:`TimeInput.format`\n\n``SplitHiddenDateTimeWidget``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. class:: SplitHiddenDateTimeWidget\n\n    Similar to :class:`SplitDateTimeWidget`, but uses :class:`HiddenInput` for\n    both date and time.\n\n.. currentmodule:: django.forms.extras.widgets\n\n``SelectDateWidget``\n~~~~~~~~~~~~~~~~~~~~\n\n.. class:: SelectDateWidget\n\n    Wrapper around three :class:`~django.forms.Select` widgets: one each for\n    month, day, and year. Note that this widget lives in a separate file from\n    the standard widgets.\n\n    Takes one optional argument:\n\n    .. attribute:: SelectDateWidget.years\n\n        An optional list/tuple of years to use in the \"year\" select box.\n        The default is a list containing the current year and the next 9 years.\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/index.txt",
    "content": "=============\nAPI Reference\n=============\n\n.. toctree::\n   :maxdepth: 1\n\n   class-based-views/index\n   clickjacking\n   contrib/index\n   databases\n   django-admin\n   exceptions\n   files/index\n   forms/index\n   middleware\n   models/index\n   request-response\n   template-response\n   settings\n   signals\n   templates/index\n   unicode\n   urlresolvers\n   urls\n   utils\n   validators\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/middleware.txt",
    "content": "==========\nMiddleware\n==========\n\n.. module:: django.middleware\n   :synopsis: Django's built-in middleware classes.\n\nThis document explains all middleware components that come with Django. For\ninformation on how to use them and how to write your own middleware, see\nthe :doc:`middleware usage guide </topics/http/middleware>`.\n\nAvailable middleware\n====================\n\nCache middleware\n----------------\n\n.. module:: django.middleware.cache\n   :synopsis: Middleware for the site-wide cache.\n\n.. class:: UpdateCacheMiddleware\n\n.. class:: FetchFromCacheMiddleware\n\nEnable the site-wide cache. If these are enabled, each Django-powered page will\nbe cached for as long as the :setting:`CACHE_MIDDLEWARE_SECONDS` setting\ndefines. See the :doc:`cache documentation </topics/cache>`.\n\n\"Common\" middleware\n-------------------\n\n.. module:: django.middleware.common\n   :synopsis: Middleware adding \"common\" conveniences for perfectionists.\n\n.. class:: CommonMiddleware\n\nAdds a few conveniences for perfectionists:\n\n* Forbids access to user agents in the :setting:`DISALLOWED_USER_AGENTS`\n  setting, which should be a list of strings.\n\n* Performs URL rewriting based on the :setting:`APPEND_SLASH` and\n  :setting:`PREPEND_WWW` settings.\n\n  If :setting:`APPEND_SLASH` is ``True`` and the initial URL doesn't end\n  with a slash, and it is not found in the URLconf, then a new URL is\n  formed by appending a slash at the end. If this new URL is found in the\n  URLconf, then Django redirects the request to this new URL. Otherwise,\n  the initial URL is processed as usual.\n\n  For example, ``foo.com/bar`` will be redirected to ``foo.com/bar/`` if\n  you don't have a valid URL pattern for ``foo.com/bar`` but *do* have a\n  valid pattern for ``foo.com/bar/``.\n\n  If :setting:`PREPEND_WWW` is ``True``, URLs that lack a leading \"www.\"\n  will be redirected to the same URL with a leading \"www.\"\n\n  Both of these options are meant to normalize URLs. The philosophy is that\n  each URL should exist in one, and only one, place. Technically a URL\n  ``foo.com/bar`` is distinct from ``foo.com/bar/`` -- a search-engine\n  indexer would treat them as separate URLs -- so it's best practice to\n  normalize URLs.\n\n* Sends broken link notification emails to :setting:`MANAGERS` if\n  :setting:`SEND_BROKEN_LINK_EMAILS` is set to ``True``.\n\n* Handles ETags based on the :setting:`USE_ETAGS` setting. If\n  :setting:`USE_ETAGS` is set to ``True``, Django will calculate an ETag\n  for each request by MD5-hashing the page content, and it'll take care of\n  sending ``Not Modified`` responses, if appropriate.\n\nView metadata middleware\n------------------------\n\n.. module:: django.middleware.doc\n   :synopsis: Middleware to help your app self-document.\n\n.. class:: XViewMiddleware\n\nSends custom ``X-View`` HTTP headers to HEAD requests that come from IP\naddresses defined in the :setting:`INTERNAL_IPS` setting. This is used by\nDjango's :doc:`automatic documentation system </ref/contrib/admin/admindocs>`.\nDepends on :class:`~django.contrib.auth.middleware.AuthenticationMiddleware`.\n\nGZip middleware\n---------------\n\n.. module:: django.middleware.gzip\n   :synopsis: Middleware to serve GZipped content for performance.\n\n.. class:: GZipMiddleware\n\nCompresses content for browsers that understand GZip compression (all modern\nbrowsers).\n\nThis middleware should be placed before any other middleware that need to\nread or write the response body so that compression happens afterward.\n\nIt will NOT compress content if any of the following are true:\n\n* The content body is less than 200 bytes long.\n\n* The response has already set the ``Content-Encoding`` header.\n\n* The request (the browser) hasn't sent an ``Accept-Encoding`` header\n  containing ``gzip``.\n\n* The request is from Internet Explorer and the ``Content-Type`` header\n  contains ``javascript`` or starts with anything other than ``text/``.\n  We do this to avoid a bug in early versions of IE that caused decompression\n  not to be performed on certain content types.\n\nYou can apply GZip compression to individual views using the\n:func:`~django.views.decorators.gzip.gzip_page()` decorator.\n\nConditional GET middleware\n--------------------------\n\n.. module:: django.middleware.http\n   :synopsis: Middleware handling advanced HTTP features.\n\n.. class:: ConditionalGetMiddleware\n\nHandles conditional GET operations. If the response has a ``ETag`` or\n``Last-Modified`` header, and the request has ``If-None-Match`` or\n``If-Modified-Since``, the response is replaced by an\n:class:`~django.http.HttpResponseNotModified`.\n\nAlso sets the ``Date`` and ``Content-Length`` response-headers.\n\nReverse proxy middleware\n------------------------\n\n.. class:: SetRemoteAddrFromForwardedFor\n\nThis middleware was removed in Django 1.1. See :ref:`the release notes\n<removed-setremoteaddrfromforwardedfor-middleware>` for details.\n\nLocale middleware\n-----------------\n\n.. module:: django.middleware.locale\n   :synopsis: Middleware to enable language selection based on the request.\n\n.. class:: LocaleMiddleware\n\nEnables language selection based on data from the request. It customizes\ncontent for each user. See the :doc:`internationalization documentation\n</topics/i18n/translation>`.\n\nMessage middleware\n------------------\n\n.. module:: django.contrib.messages.middleware\n   :synopsis: Message middleware.\n\n.. class:: MessageMiddleware\n\nEnables cookie- and session-based message support. See the\n:doc:`messages documentation </ref/contrib/messages>`.\n\nSession middleware\n------------------\n\n.. module:: django.contrib.sessions.middleware\n   :synopsis: Session middleware.\n\n.. class:: SessionMiddleware\n\nEnables session support. See the :doc:`session documentation\n</topics/http/sessions>`.\n\nAuthentication middleware\n-------------------------\n\n.. module:: django.contrib.auth.middleware\n  :synopsis: Authentication middleware.\n\n.. class:: AuthenticationMiddleware\n\nAdds the ``user`` attribute, representing the currently-logged-in user, to\nevery incoming ``HttpRequest`` object. See :ref:`Authentication in Web requests\n<auth-web-requests>`.\n\nCSRF protection middleware\n--------------------------\n\n.. module:: django.middleware.csrf\n   :synopsis: Middleware adding protection against Cross Site Request\n              Forgeries.\n\n.. class:: CsrfViewMiddleware\n\nAdds protection against Cross Site Request Forgeries by adding hidden form\nfields to POST forms and checking requests for the correct value. See the\n:doc:`Cross Site Request Forgery protection documentation </ref/contrib/csrf>`.\n\nTransaction middleware\n----------------------\n\n.. module:: django.middleware.transaction\n   :synopsis: Middleware binding a database transaction to each Web request.\n\n.. class:: TransactionMiddleware\n\nBinds commit and rollback of the default database to the request/response\nphase. If a view function runs successfully, a commit is done. If it fails with\nan exception, a rollback is done.\n\nThe order of this middleware in the stack is important: middleware modules\nrunning outside of it run with commit-on-save - the default Django behavior.\nMiddleware modules running inside it (coming later in the stack) will be under\nthe same transaction control as the view functions.\n\nSee the :doc:`transaction management documentation </topics/db/transactions>`.\n\nX-Frame-Options middleware\n--------------------------\n\n.. module:: django.middleware.clickjacking\n   :synopsis: Clickjacking protection\n\n.. class:: XFrameOptionsMiddleware\n\n.. versionadded:: 1.4\n   ``XFrameOptionsMiddleware`` was added.\n\nSimple :doc:`clickjacking protection via the X-Frame-Options header </ref/clickjacking/>`.\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/models/fields.txt",
    "content": "=====================\nModel field reference\n=====================\n\n.. module:: django.db.models.fields\n   :synopsis: Built-in field types.\n\n.. currentmodule:: django.db.models\n\nThis document contains all the gory details about all the `field options`_ and\n`field types`_ Django's got to offer.\n\n.. seealso::\n\n    If the built-in fields don't do the trick, you can try\n    :mod:`django.contrib.localflavor`, which contains assorted pieces of code\n    that are useful for particular countries or cultures. Also, you can easily\n    :doc:`write your own custom model fields </howto/custom-model-fields>`.\n\n.. note::\n\n    Technically, these models are defined in :mod:`django.db.models.fields`, but\n    for convenience they're imported into :mod:`django.db.models`; the standard\n    convention is to use ``from django.db import models`` and refer to fields as\n    ``models.<Foo>Field``.\n\n.. _common-model-field-options:\n\nField options\n=============\n\nThe following arguments are available to all field types. All are optional.\n\n``null``\n--------\n\n.. attribute:: Field.null\n\nIf ``True``, Django will store empty values as ``NULL`` in the database. Default\nis ``False``.\n\nNote that empty string values will always get stored as empty strings, not as\n``NULL``. Only use ``null=True`` for non-string fields such as integers,\nbooleans and dates. For both types of fields, you will also need to set\n``blank=True`` if you wish to permit empty values in forms, as the\n:attr:`~Field.null` parameter only affects database storage (see\n:attr:`~Field.blank`).\n\nAvoid using :attr:`~Field.null` on string-based fields such as\n:class:`CharField` and :class:`TextField` unless you have an excellent reason.\nIf a string-based field has ``null=True``, that means it has two possible values\nfor \"no data\": ``NULL``, and the empty string. In most cases, it's redundant to\nhave two possible values for \"no data;\" Django convention is to use the empty\nstring, not ``NULL``.\n\n.. note::\n\n    When using the Oracle database backend, the value ``NULL`` will be stored to\n    denote the empty string regardless of this attribute.\n\nIf you want to accept :attr:`~Field.null` values with :class:`BooleanField`,\nuse :class:`NullBooleanField` instead.\n\n``blank``\n---------\n\n.. attribute:: Field.blank\n\nIf ``True``, the field is allowed to be blank. Default is ``False``.\n\nNote that this is different than :attr:`~Field.null`. :attr:`~Field.null` is\npurely database-related, whereas :attr:`~Field.blank` is validation-related. If\na field has ``blank=True``, form validation will allow entry of an empty value.\nIf a field has ``blank=False``, the field will be required.\n\n.. _field-choices:\n\n``choices``\n-----------\n\n.. attribute:: Field.choices\n\nAn iterable (e.g., a list or tuple) of 2-tuples to use as choices for this\nfield. If this is given, the default form widget will be a select box with\nthese choices instead of the standard text field.\n\nThe first element in each tuple is the actual value to be stored, and the\nsecond element is the human-readable name. For example::\n\n    YEAR_IN_SCHOOL_CHOICES = (\n        ('FR', 'Freshman'),\n        ('SO', 'Sophomore'),\n        ('JR', 'Junior'),\n        ('SR', 'Senior'),\n    )\n\nGenerally, it's best to define choices inside a model class, and to\ndefine a suitably-named constant for each value::\n\n    class Student(models.Model):\n        FRESHMAN = 'FR'\n        SOPHOMORE = 'SO'\n        JUNIOR = 'JR'\n        SENIOR = 'SR'\n        YEAR_IN_SCHOOL_CHOICES = (\n            (FRESHMAN, 'Freshman'),\n            (SOPHOMORE, 'Sophomore'),\n            (JUNIOR, 'Junior'),\n            (SENIOR, 'Senior'),\n        )\n        year_in_school = models.CharField(max_length=2,\n                                          choices=YEAR_IN_SCHOOL_CHOICES,\n                                          default=FRESHMAN)\n\n        def is_upperclass(self):\n            return self.year_in_school in (self.JUNIOR, self.SENIOR)\n\nThough you can define a choices list outside of a model class and then\nrefer to it, defining the choices and names for each choice inside the\nmodel class keeps all of that information with the class that uses it,\nand makes the choices easy to reference (e.g, ``Student.SOPHOMORE``\nwill work anywhere that the ``Student`` model has been imported).\n\nYou can also collect your available choices into named groups that can\nbe used for organizational purposes::\n\n    MEDIA_CHOICES = (\n        ('Audio', (\n                ('vinyl', 'Vinyl'),\n                ('cd', 'CD'),\n            )\n        ),\n        ('Video', (\n                ('vhs', 'VHS Tape'),\n                ('dvd', 'DVD'),\n            )\n        ),\n        ('unknown', 'Unknown'),\n    )\n\nThe first element in each tuple is the name to apply to the group. The\nsecond element is an iterable of 2-tuples, with each 2-tuple containing\na value and a human-readable name for an option. Grouped options may be\ncombined with ungrouped options within a single list (such as the\n`unknown` option in this example).\n\nFor each model field that has :attr:`~Field.choices` set, Django will add a\nmethod to retrieve the human-readable name for the field's current value. See\n:meth:`~django.db.models.Model.get_FOO_display` in the database API\ndocumentation.\n\nFinally, note that choices can be any iterable object -- not necessarily a list\nor tuple. This lets you construct choices dynamically. But if you find yourself\nhacking :attr:`~Field.choices` to be dynamic, you're probably better off using a\nproper database table with a :class:`ForeignKey`. :attr:`~Field.choices` is\nmeant for static data that doesn't change much, if ever.\n\n``db_column``\n-------------\n\n.. attribute:: Field.db_column\n\nThe name of the database column to use for this field. If this isn't given,\nDjango will use the field's name.\n\nIf your database column name is an SQL reserved word, or contains\ncharacters that aren't allowed in Python variable names -- notably, the\nhyphen -- that's OK. Django quotes column and table names behind the\nscenes.\n\n``db_index``\n------------\n\n.. attribute:: Field.db_index\n\nIf ``True``, :djadmin:`django-admin.py sqlindexes <sqlindexes>` will output a\n``CREATE INDEX`` statement for this field.\n\n``db_tablespace``\n-----------------\n\n.. attribute:: Field.db_tablespace\n\nThe name of the :doc:`database tablespace </topics/db/tablespaces>` to use for\nthis field's index, if this field is indexed. The default is the project's\n:setting:`DEFAULT_INDEX_TABLESPACE` setting, if set, or the\n:attr:`~Options.db_tablespace` of the model, if any. If the backend doesn't\nsupport tablespaces for indexes, this option is ignored.\n\n``default``\n-----------\n\n.. attribute:: Field.default\n\nThe default value for the field. This can be a value or a callable object. If\ncallable it will be called every time a new object is created.\n\nThe default cannot be a mutable object (model instance, list, set, etc.), as a\nreference to the same instance of that object would be used as the default\nvalue in all new model instances. Instead, wrap the desired default in a\ncallable.  For example, if you had a custom ``JSONField`` and wanted to specify\na dictionary as the default, use a ``lambda`` as follows::\n\n    contact_info = JSONField(\"ContactInfo\", default=lambda:{\"email\": \"to1@example.com\"})\n\n``editable``\n------------\n\n.. attribute:: Field.editable\n\nIf ``False``, the field will not be displayed in the admin or any other\n:class:`~django.forms.ModelForm`. Default is ``True``.\n\n``error_messages``\n------------------\n\n.. attribute:: Field.error_messages\n\nThe ``error_messages`` argument lets you override the default messages that the\nfield will raise. Pass in a dictionary with keys matching the error messages you\nwant to override.\n\nError message keys include ``null``, ``blank``, ``invalid``, ``invalid_choice``,\nand ``unique``. Additional error message keys are specified for each field in\nthe `Field types`_ section below.\n\n``help_text``\n-------------\n\n.. attribute:: Field.help_text\n\nExtra \"help\" text to be displayed with the form widget. It's useful for\ndocumentation even if your field isn't used on a form.\n\nNote that this value is *not* HTML-escaped in automatically-generated\nforms. This lets you include HTML in :attr:`~Field.help_text` if you so\ndesire. For example::\n\n    help_text=\"Please use the following format: <em>YYYY-MM-DD</em>.\"\n\nAlternatively you can use plain text and\n``django.utils.html.escape()`` to escape any HTML special characters.\n\n``primary_key``\n---------------\n\n.. attribute:: Field.primary_key\n\nIf ``True``, this field is the primary key for the model.\n\nIf you don't specify ``primary_key=True`` for any field in your model, Django\nwill automatically add an :class:`AutoField` to hold the primary key, so you\ndon't need to set ``primary_key=True`` on any of your fields unless you want to\noverride the default primary-key behavior. For more, see\n:ref:`automatic-primary-key-fields`.\n\n``primary_key=True`` implies :attr:`null=False <Field.null>` and :attr:`unique=True <Field.unique>`.\nOnly one primary key is allowed on an object.\n\n``unique``\n----------\n\n.. attribute:: Field.unique\n\nIf ``True``, this field must be unique throughout the table.\n\nThis is enforced at the database level and by model validation. If\nyou try to save a model with a duplicate value in a :attr:`~Field.unique`\nfield, a :exc:`django.db.IntegrityError` will be raised by the model's\n:meth:`~django.db.models.Model.save` method.\n\nThis option is valid on all field types except :class:`ManyToManyField` and\n:class:`FileField`.\n\nNote that when ``unique`` is ``True``, you don't need to specify\n:attr:`~Field.db_index`, because ``unique`` implies the creation of an index.\n\n``unique_for_date``\n-------------------\n\n.. attribute:: Field.unique_for_date\n\nSet this to the name of a :class:`DateField` or :class:`DateTimeField` to\nrequire that this field be unique for the value of the date field.\n\nFor example, if you have a field ``title`` that has\n``unique_for_date=\"pub_date\"``, then Django wouldn't allow the entry of two\nrecords with the same ``title`` and ``pub_date``.\n\nThis is enforced by model validation but not at the database level.\n\n``unique_for_month``\n--------------------\n\n.. attribute:: Field.unique_for_month\n\nLike :attr:`~Field.unique_for_date`, but requires the field to be unique with\nrespect to the month.\n\n``unique_for_year``\n-------------------\n\n.. attribute:: Field.unique_for_year\n\nLike :attr:`~Field.unique_for_date` and :attr:`~Field.unique_for_month`.\n\n``verbose_name``\n-------------------\n\n.. attribute:: Field.verbose_name\n\nA human-readable name for the field. If the verbose name isn't given, Django\nwill automatically create it using the field's attribute name, converting\nunderscores to spaces. See :ref:`Verbose field names <verbose-field-names>`.\n\n``validators``\n-------------------\n\n.. attribute:: Field.validators\n\nA list of validators to run for this field. See the :doc:`validators\ndocumentation </ref/validators>` for more information.\n\n.. _model-field-types:\n\nField types\n===========\n\n.. currentmodule:: django.db.models\n\n``AutoField``\n-------------\n\n.. class:: AutoField(**options)\n\nAn :class:`IntegerField` that automatically increments\naccording to available IDs. You usually won't need to use this directly; a\nprimary key field will automatically be added to your model if you don't specify\notherwise. See :ref:`automatic-primary-key-fields`.\n\n``BigIntegerField``\n-------------------\n\n.. class:: BigIntegerField([**options])\n\nA 64 bit integer, much like an :class:`IntegerField` except that it is\nguaranteed to fit numbers from -9223372036854775808 to 9223372036854775807. The\ndefault form widget for this field is a :class:`~django.forms.TextInput`.\n\n\n``BooleanField``\n----------------\n\n.. class:: BooleanField(**options)\n\nA true/false field.\n\nThe default form widget for this field is a\n:class:`~django.forms.CheckboxInput`.\n\nIf you need to accept :attr:`~Field.null` values then use\n:class:`NullBooleanField` instead.\n\n``CharField``\n-------------\n\n.. class:: CharField(max_length=None, [**options])\n\nA string field, for small- to large-sized strings.\n\nFor large amounts of text, use :class:`~django.db.models.TextField`.\n\nThe default form widget for this field is a :class:`~django.forms.TextInput`.\n\n:class:`CharField` has one extra required argument:\n\n.. attribute:: CharField.max_length\n\n    The maximum length (in characters) of the field. The max_length is enforced\n    at the database level and in Django's validation.\n\n.. note::\n\n    If you are writing an application that must be portable to multiple\n    database backends, you should be aware that there are restrictions on\n    ``max_length`` for some backends. Refer to the :doc:`database backend\n    notes </ref/databases>` for details.\n\n.. admonition:: MySQL users\n\n    If you are using this field with MySQLdb 1.2.2 and the ``utf8_bin``\n    collation (which is *not* the default), there are some issues to be aware\n    of. Refer to the :ref:`MySQL database notes <mysql-collation>` for\n    details.\n\n\n``CommaSeparatedIntegerField``\n------------------------------\n\n.. class:: CommaSeparatedIntegerField(max_length=None, [**options])\n\nA field of integers separated by commas. As in :class:`CharField`, the\n:attr:`~CharField.max_length` argument is required and the note about database\nportability mentioned there should be heeded.\n\n``DateField``\n-------------\n\n.. class:: DateField([auto_now=False, auto_now_add=False, **options])\n\nA date, represented in Python by a ``datetime.date`` instance. Has a few extra,\noptional arguments:\n\n.. attribute:: DateField.auto_now\n\n    Automatically set the field to now every time the object is saved. Useful\n    for \"last-modified\" timestamps. Note that the current date is *always*\n    used; it's not just a default value that you can override.\n\n.. attribute:: DateField.auto_now_add\n\n    Automatically set the field to now when the object is first created. Useful\n    for creation of timestamps. Note that the current date is *always* used;\n    it's not just a default value that you can override.\n\nThe default form widget for this field is a\n:class:`~django.forms.TextInput`. The admin adds a JavaScript calendar,\nand a shortcut for \"Today\". Includes an additional ``invalid_date`` error\nmessage key.\n\n.. note::\n    As currently implemented, setting ``auto_now`` or ``auto_now_add`` to\n    ``True`` will cause the field to have ``editable=False`` and ``blank=True``\n    set.\n\n``DateTimeField``\n-----------------\n\n.. class:: DateTimeField([auto_now=False, auto_now_add=False, **options])\n\nA date and time, represented in Python by a ``datetime.datetime`` instance.\nTakes the same extra arguments as :class:`DateField`.\n\nThe default form widget for this field is a single\n:class:`~django.forms.TextInput`. The admin uses two separate\n:class:`~django.forms.TextInput` widgets with JavaScript shortcuts.\n\n``DecimalField``\n----------------\n\n.. class:: DecimalField(max_digits=None, decimal_places=None, [**options])\n\nA fixed-precision decimal number, represented in Python by a\n:class:`~decimal.Decimal` instance. Has two **required** arguments:\n\n.. attribute:: DecimalField.max_digits\n\n    The maximum number of digits allowed in the number. Note that this number\n    must be greater than or equal to ``decimal_places``, if it exists.\n\n.. attribute:: DecimalField.decimal_places\n\n    The number of decimal places to store with the number.\n\nFor example, to store numbers up to 999 with a resolution of 2 decimal places,\nyou'd use::\n\n    models.DecimalField(..., max_digits=5, decimal_places=2)\n\nAnd to store numbers up to approximately one billion with a resolution of 10\ndecimal places::\n\n    models.DecimalField(..., max_digits=19, decimal_places=10)\n\nThe default form widget for this field is a :class:`~django.forms.TextInput`.\n\n.. note::\n\n    For more information about the differences between the\n    :class:`FloatField` and :class:`DecimalField` classes, please\n    see :ref:`FloatField vs. DecimalField <floatfield_vs_decimalfield>`.\n\n``EmailField``\n--------------\n\n.. class:: EmailField([max_length=75, **options])\n\nA :class:`CharField` that checks that the value is a valid email address.\n\n.. admonition:: Incompliance to RFCs\n\n    The default 75 character ``max_length`` is not capable of storing all\n    possible RFC3696/5321-compliant email addresses. In order to store all\n    possible valid email addresses, a ``max_length`` of 254 is required.\n    The default ``max_length`` of 75 exists for historical reasons. The\n    default has not been changed in order to maintain backwards\n    compatibility with existing uses of :class:`EmailField`.\n\n``FileField``\n-------------\n\n.. class:: FileField(upload_to=None, [max_length=100, **options])\n\nA file-upload field.\n\n.. note::\n    The ``primary_key`` and ``unique`` arguments are not supported, and will\n    raise a ``TypeError`` if used.\n\nHas one **required** argument:\n\n.. attribute:: FileField.upload_to\n\n    A local filesystem path that will be appended to your :setting:`MEDIA_ROOT`\n    setting to determine the value of the\n    :attr:`~django.db.models.fields.files.FieldFile.url` attribute.\n\n    This path may contain :func:`~time.strftime` formatting, which will be\n    replaced by the date/time of the file upload (so that uploaded files don't\n    fill up the given directory).\n\n    This may also be a callable, such as a function, which will be called to\n    obtain the upload path, including the filename. This callable must be able\n    to accept two arguments, and return a Unix-style path (with forward slashes)\n    to be passed along to the storage system. The two arguments that will be\n    passed are:\n\n    ======================  ===============================================\n    Argument                Description\n    ======================  ===============================================\n    ``instance``            An instance of the model where the\n                            ``FileField`` is defined. More specifically,\n                            this is the particular instance where the\n                            current file is being attached.\n\n                            In most cases, this object will not have been\n                            saved to the database yet, so if it uses the\n                            default ``AutoField``, *it might not yet have a\n                            value for its primary key field*.\n\n    ``filename``            The filename that was originally given to the\n                            file. This may or may not be taken into account\n                            when determining the final destination path.\n    ======================  ===============================================\n\nAlso has one optional argument:\n\n.. attribute:: FileField.storage\n\n    Optional. A storage object, which handles the storage and retrieval of your\n    files. See :doc:`/topics/files` for details on how to provide this object.\n\nThe default form widget for this field is a :class:`~django.forms.FileInput`.\n\nUsing a :class:`FileField` or an :class:`ImageField` (see below) in a model\ntakes a few steps:\n\n1. In your settings file, you'll need to define :setting:`MEDIA_ROOT` as the\n   full path to a directory where you'd like Django to store uploaded files.\n   (For performance, these files are not stored in the database.) Define\n   :setting:`MEDIA_URL` as the base public URL of that directory. Make sure\n   that this directory is writable by the Web server's user account.\n\n2. Add the :class:`FileField` or :class:`ImageField` to your model, making\n   sure to define the :attr:`~FileField.upload_to` option to tell Django\n   to which subdirectory of :setting:`MEDIA_ROOT` it should upload files.\n\n3. All that will be stored in your database is a path to the file\n   (relative to :setting:`MEDIA_ROOT`). You'll most likely want to use the\n   convenience :attr:`~django.db.models.fields.files.FieldFile.url` attribute\n   provided by Django. For example, if your :class:`ImageField` is called\n   ``mug_shot``, you can get the absolute path to your image in a template with\n   ``{{ object.mug_shot.url }}``.\n\nFor example, say your :setting:`MEDIA_ROOT` is set to ``'/home/media'``, and\n:attr:`~FileField.upload_to` is set to ``'photos/%Y/%m/%d'``. The ``'%Y/%m/%d'``\npart of :attr:`~FileField.upload_to` is :func:`~time.strftime` formatting;\n``'%Y'`` is the four-digit year, ``'%m'`` is the two-digit month and ``'%d'`` is\nthe two-digit day. If you upload a file on Jan. 15, 2007, it will be saved in\nthe directory ``/home/media/photos/2007/01/15``.\n\nIf you wanted to retrieve the uploaded file's on-disk filename, or the file's\nsize, you could use the :attr:`~django.core.files.File.name` and\n:attr:`~django.core.files.File.size` attributes respectively; for more\ninformation on the available attributes and methods, see the\n:class:`~django.core.files.File` class reference and the :doc:`/topics/files`\ntopic guide.\n\n.. note::\n    The file is saved as part of saving the model in the database, so the actual\n    file name used on disk cannot be relied on until after the model has been\n    saved.\n\nThe uploaded file's relative URL can be obtained using the\n:attr:`~django.db.models.fields.files.FieldFile.url` attribute. Internally,\nthis calls the :meth:`~django.core.files.storage.Storage.url` method of the\nunderlying :class:`~django.core.files.storage.Storage` class.\n\n.. _file-upload-security:\n\nNote that whenever you deal with uploaded files, you should pay close attention\nto where you're uploading them and what type of files they are, to avoid\nsecurity holes. *Validate all uploaded files* so that you're sure the files are\nwhat you think they are. For example, if you blindly let somebody upload files,\nwithout validation, to a directory that's within your Web server's document\nroot, then somebody could upload a CGI or PHP script and execute that script by\nvisiting its URL on your site. Don't allow that.\n\nAlso note that even an uploaded HTML file, since it can be executed by the\nbrowser (though not by the server), can pose security threats that are\nequivalent to XSS or CSRF attacks.\n\nBy default, :class:`FileField` instances are\ncreated as ``varchar(100)`` columns in your database. As with other fields, you\ncan change the maximum length using the :attr:`~CharField.max_length` argument.\n\nFileField and FieldFile\n~~~~~~~~~~~~~~~~~~~~~~~\n\n.. currentmodule:: django.db.models.fields.files\n\n.. class:: FieldFile\n\nWhen you access a :class:`~django.db.models.FileField` on a model, you are\ngiven an instance of :class:`FieldFile` as a proxy for accessing the underlying\nfile. This class has several attributes and methods that can be used to\ninteract with file data:\n\n.. attribute:: FieldFile.url\n\nA read-only property to access the file's relative URL by calling the\n:meth:`~django.core.files.storage.Storage.url` method of the underlying\n:class:`~django.core.files.storage.Storage` class.\n\n.. method:: FieldFile.open(mode='rb')\n\nBehaves like the standard Python ``open()`` method and opens the file\nassociated with this instance in the mode specified by ``mode``.\n\n.. method:: FieldFile.close()\n\nBehaves like the standard Python ``file.close()`` method and closes the file\nassociated with this instance.\n\n.. method:: FieldFile.save(name, content, save=True)\n\nThis method takes a filename and file contents and passes them to the storage\nclass for the field, then associates the stored file with the model field.\nIf you want to manually associate file data with\n:class:`~django.db.models.FileField` instances on your model, the ``save()``\nmethod is used to persist that file data.\n\nTakes two required arguments: ``name`` which is the name of the file, and\n``content`` which is an object containing the file's contents.  The\noptional ``save`` argument controls whether or not the instance is\nsaved after the file has been altered. Defaults to ``True``.\n\nNote that the ``content`` argument should be an instance of\n:class:`django.core.files.File`, not Python's built-in file object.\nYou can construct a :class:`~django.core.files.File` from an existing\nPython file object like this::\n\n    from django.core.files import File\n    # Open an existing file using Python's built-in open()\n    f = open('/tmp/hello.world')\n    myfile = File(f)\n\nOr you can construct one from a Python string like this::\n\n    from django.core.files.base import ContentFile\n    myfile = ContentFile(\"hello world\")\n\nFor more information, see :doc:`/topics/files`.\n\n.. method:: FieldFile.delete(save=True)\n\nDeletes the file associated with this instance and clears all attributes on\nthe field. Note: This method will close the file if it happens to be open when\n``delete()`` is called.\n\nThe optional ``save`` argument controls whether or not the instance is saved\nafter the file has been deleted. Defaults to ``True``.\n\nNote that when a model is deleted, related files are not deleted. If you need\nto cleanup orphaned files, you'll need to handle it yourself (for instance,\nwith a custom management command that can be run manually or scheduled to run\nperiodically via e.g. cron).\n\n.. currentmodule:: django.db.models\n\n``FilePathField``\n-----------------\n\n.. class:: FilePathField(path=None, [match=None, recursive=False, max_length=100, **options])\n\nA :class:`CharField` whose choices are limited to the filenames in a certain\ndirectory on the filesystem. Has three special arguments, of which the first is\n**required**:\n\n.. attribute:: FilePathField.path\n\n    Required. The absolute filesystem path to a directory from which this\n    :class:`FilePathField` should get its choices. Example: ``\"/home/images\"``.\n\n.. attribute:: FilePathField.match\n\n    Optional. A regular expression, as a string, that :class:`FilePathField`\n    will use to filter filenames. Note that the regex will be applied to the\n    base filename, not the full path. Example: ``\"foo.*\\.txt$\"``, which will\n    match a file called ``foo23.txt`` but not ``bar.txt`` or ``foo23.png``.\n\n.. attribute:: FilePathField.recursive\n\n    Optional. Either ``True`` or ``False``. Default is ``False``. Specifies\n    whether all subdirectories of :attr:`~FilePathField.path` should be included\n\n.. attribute:: FilePathField.allow_files\n\n    .. versionadded:: 1.5\n\n    Optional.  Either ``True`` or ``False``.  Default is ``True``.  Specifies\n    whether files in the specified location should be included.  Either this or\n    :attr:`~FilePathField.allow_folders` must be ``True``.\n\n.. attribute:: FilePathField.allow_folders\n\n    .. versionadded:: 1.5\n\n    Optional.  Either ``True`` or ``False``.  Default is ``False``.  Specifies\n    whether folders in the specified location should be included.  Either this\n    or :attr:`~FilePathField.allow_files` must be ``True``.\n\n\nOf course, these arguments can be used together.\n\nThe one potential gotcha is that :attr:`~FilePathField.match` applies to the\nbase filename, not the full path. So, this example::\n\n    FilePathField(path=\"/home/images\", match=\"foo.*\", recursive=True)\n\n...will match ``/home/images/foo.png`` but not ``/home/images/foo/bar.png``\nbecause the :attr:`~FilePathField.match` applies to the base filename\n(``foo.png`` and ``bar.png``).\n\nBy default, :class:`FilePathField` instances are\ncreated as ``varchar(100)`` columns in your database. As with other fields, you\ncan change the maximum length using the :attr:`~CharField.max_length` argument.\n\n``FloatField``\n--------------\n\n.. class:: FloatField([**options])\n\nA floating-point number represented in Python by a ``float`` instance.\n\nThe default form widget for this field is a :class:`~django.forms.TextInput`.\n\n.. _floatfield_vs_decimalfield:\n\n.. admonition:: ``FloatField`` vs. ``DecimalField``\n\n    The :class:`FloatField` class is sometimes mixed up with the\n    :class:`DecimalField` class. Although they both represent real numbers, they\n    represent those numbers differently. ``FloatField`` uses Python's ``float``\n    type internally, while ``DecimalField`` uses Python's ``Decimal`` type. For\n    information on the difference between the two, see Python's documentation\n    for the :mod:`decimal` module.\n\n``ImageField``\n--------------\n\n.. class:: ImageField(upload_to=None, [height_field=None, width_field=None, max_length=100, **options])\n\nInherits all attributes and methods from :class:`FileField`, but also\nvalidates that the uploaded object is a valid image.\n\nIn addition to the special attributes that are available for :class:`FileField`,\nan :class:`ImageField` also has ``height`` and ``width`` attributes.\n\nTo facilitate querying on those attributes, :class:`ImageField` has two extra\noptional arguments:\n\n.. attribute:: ImageField.height_field\n\n    Name of a model field which will be auto-populated with the height of the\n    image each time the model instance is saved.\n\n.. attribute:: ImageField.width_field\n\n    Name of a model field which will be auto-populated with the width of the\n    image each time the model instance is saved.\n\nRequires the `Python Imaging Library`_.\n\n.. _Python Imaging Library: http://www.pythonware.com/products/pil/\n\nBy default, :class:`ImageField` instances are created as ``varchar(100)``\ncolumns in your database. As with other fields, you can change the maximum\nlength using the :attr:`~CharField.max_length` argument.\n\n``IntegerField``\n----------------\n\n.. class:: IntegerField([**options])\n\nAn integer. The default form widget for this field is a\n:class:`~django.forms.TextInput`.\n\n``IPAddressField``\n------------------\n\n.. class:: IPAddressField([**options])\n\nAn IP address, in string format (e.g. \"192.0.2.30\"). The default form widget\nfor this field is a :class:`~django.forms.TextInput`.\n\n``GenericIPAddressField``\n-------------------------\n\n.. class:: GenericIPAddressField([protocol=both, unpack_ipv4=False, **options])\n\n.. versionadded:: 1.4\n\nAn IPv4 or IPv6 address, in string format (e.g. ``192.0.2.30`` or\n``2a02:42fe::4``). The default form widget for this field is a\n:class:`~django.forms.TextInput`.\n\nThe IPv6 address normalization follows :rfc:`4291#section-2.2` section 2.2,\nincluding using the IPv4 format suggested in paragraph 3 of that section, like\n``::ffff:192.0.2.0``. For example, ``2001:0::0:01`` would be normalized to\n``2001::1``, and ``::ffff:0a0a:0a0a`` to ``::ffff:10.10.10.10``. All characters\nare converted to lowercase.\n\n.. attribute:: GenericIPAddressField.protocol\n\n    Limits valid inputs to the specified protocol.\n    Accepted values are ``'both'`` (default), ``'IPv4'``\n    or ``'IPv6'``. Matching is case insensitive.\n\n.. attribute:: GenericIPAddressField.unpack_ipv4\n\n    Unpacks IPv4 mapped addresses like ``::ffff:192.0.2.1``.\n    If this option is enabled that address would be unpacked to\n    ``192.0.2.1``. Default is disabled. Can only be used\n    when ``protocol`` is set to ``'both'``.\n\n``NullBooleanField``\n--------------------\n\n.. class:: NullBooleanField([**options])\n\nLike a :class:`BooleanField`, but allows ``NULL`` as one of the options. Use\nthis instead of a :class:`BooleanField` with ``null=True``. The default form\nwidget for this field is a :class:`~django.forms.NullBooleanSelect`.\n\n``PositiveIntegerField``\n------------------------\n\n.. class:: PositiveIntegerField([**options])\n\nLike an :class:`IntegerField`, but must be either positive or zero (``0``).\nThe value ``0`` is accepted for backward compatibility reasons.\n\n``PositiveSmallIntegerField``\n-----------------------------\n\n.. class:: PositiveSmallIntegerField([**options])\n\nLike a :class:`PositiveIntegerField`, but only allows values under a certain\n(database-dependent) point.\n\n``SlugField``\n-------------\n\n.. class:: SlugField([max_length=50, **options])\n\n:term:`Slug` is a newspaper term. A slug is a short label for something,\ncontaining only letters, numbers, underscores or hyphens. They're generally used\nin URLs.\n\nLike a CharField, you can specify :attr:`~CharField.max_length` (read the note\nabout database portability and :attr:`~CharField.max_length` in that section,\ntoo). If :attr:`~CharField.max_length` is not specified, Django will use a\ndefault length of 50.\n\nImplies setting :attr:`Field.db_index` to ``True``.\n\nIt is often useful to automatically prepopulate a SlugField based on the value\nof some other value.  You can do this automatically in the admin using\n:attr:`~django.contrib.admin.ModelAdmin.prepopulated_fields`.\n\n``SmallIntegerField``\n---------------------\n\n.. class:: SmallIntegerField([**options])\n\nLike an :class:`IntegerField`, but only allows values under a certain\n(database-dependent) point.\n\n``TextField``\n-------------\n\n.. class:: TextField([**options])\n\nA large text field. The default form widget for this field is a\n:class:`~django.forms.Textarea`.\n\n.. admonition:: MySQL users\n\n    If you are using this field with MySQLdb 1.2.1p2 and the ``utf8_bin``\n    collation (which is *not* the default), there are some issues to be aware\n    of. Refer to the :ref:`MySQL database notes <mysql-collation>` for\n    details.\n\n``TimeField``\n-------------\n\n.. class:: TimeField([auto_now=False, auto_now_add=False, **options])\n\nA time, represented in Python by a ``datetime.time`` instance. Accepts the same\nauto-population options as :class:`DateField`.\n\nThe default form widget for this field is a :class:`~django.forms.TextInput`.\nThe admin adds some JavaScript shortcuts.\n\n``URLField``\n------------\n\n.. class:: URLField([max_length=200, **options])\n\nA :class:`CharField` for a URL.\n\nThe default form widget for this field is a :class:`~django.forms.TextInput`.\n\nLike all :class:`CharField` subclasses, :class:`URLField` takes the optional\n:attr:`~CharField.max_length` argument. If you don't specify\n:attr:`~CharField.max_length`, a default of 200 is used.\n\n.. versionadded:: 1.5\n\nThe current value of the field will be displayed as a clickable link above the\ninput widget.\n\n\nRelationship fields\n===================\n\n.. module:: django.db.models.fields.related\n   :synopsis: Related field types\n\n.. currentmodule:: django.db.models\n\nDjango also defines a set of fields that represent relations.\n\n.. _ref-foreignkey:\n\n``ForeignKey``\n--------------\n\n.. class:: ForeignKey(othermodel, [**options])\n\nA many-to-one relationship. Requires a positional argument: the class to which\nthe model is related.\n\n.. _recursive-relationships:\n\nTo create a recursive relationship -- an object that has a many-to-one\nrelationship with itself -- use ``models.ForeignKey('self')``.\n\n.. _lazy-relationships:\n\nIf you need to create a relationship on a model that has not yet been defined,\nyou can use the name of the model, rather than the model object itself::\n\n    class Car(models.Model):\n        manufacturer = models.ForeignKey('Manufacturer')\n        # ...\n\n    class Manufacturer(models.Model):\n        # ...\n\nTo refer to models defined in another application, you can explicitly specify\na model with the full application label. For example, if the ``Manufacturer``\nmodel above is defined in another application called ``production``, you'd\nneed to use::\n\n    class Car(models.Model):\n        manufacturer = models.ForeignKey('production.Manufacturer')\n\nThis sort of reference can be useful when resolving circular import\ndependencies between two applications.\n\nA database index is automatically created on the ``ForeignKey``. You can\ndisable this by setting :attr:`~Field.db_index` to ``False``.  You may want to\navoid the overhead of an index if you are creating a foreign key for\nconsistency rather than joins, or if you will be creating an alternative index\nlike a partial or multiple column index.\n\nDatabase Representation\n~~~~~~~~~~~~~~~~~~~~~~~\n\nBehind the scenes, Django appends ``\"_id\"`` to the field name to create its\ndatabase column name. In the above example, the database table for the ``Car``\nmodel will have a ``manufacturer_id`` column. (You can change this explicitly by\nspecifying :attr:`~Field.db_column`) However, your code should never have to\ndeal with the database column name, unless you write custom SQL. You'll always\ndeal with the field names of your model object.\n\n.. _foreign-key-arguments:\n\nArguments\n~~~~~~~~~\n\n:class:`ForeignKey` accepts an extra set of arguments -- all optional -- that\ndefine the details of how the relation works.\n\n.. attribute:: ForeignKey.limit_choices_to\n\n    A dictionary of lookup arguments and values (see :doc:`/topics/db/queries`)\n    that limit the available admin or ModelForm choices for this object. Use\n    this with functions from the Python ``datetime`` module to limit choices of\n    objects by date. For example::\n\n        limit_choices_to = {'pub_date__lte': datetime.date.today}\n\n    only allows the choice of related objects with a ``pub_date`` before the\n    current date to be chosen.\n\n    Instead of a dictionary this can also be a :class:`~django.db.models.Q`\n    object for more :ref:`complex queries <complex-lookups-with-q>`. However,\n    if ``limit_choices_to`` is a :class:`~django.db.models.Q` object then it\n    will only have an effect on the choices available in the admin when the\n    field is not listed in ``raw_id_fields`` in the ``ModelAdmin`` for the model.\n\n.. attribute:: ForeignKey.related_name\n\n    The name to use for the relation from the related object back to this one.\n    See the :ref:`related objects documentation <backwards-related-objects>` for\n    a full explanation and example. Note that you must set this value\n    when defining relations on :ref:`abstract models\n    <abstract-base-classes>`; and when you do so\n    :ref:`some special syntax <abstract-related-name>` is available.\n\n    If you'd prefer Django not to create a backwards relation, set\n    ``related_name`` to ``'+'`` or end it with ``'+'``. For example, this will\n    ensure that the ``User`` model won't have a backwards relation to this\n    model::\n\n        user = models.ForeignKey(User, related_name='+')\n\n.. attribute:: ForeignKey.to_field\n\n    The field on the related object that the relation is to. By default, Django\n    uses the primary key of the related object.\n\n.. attribute:: ForeignKey.on_delete\n\n    When an object referenced by a :class:`ForeignKey` is deleted, Django by\n    default emulates the behavior of the SQL constraint ``ON DELETE CASCADE``\n    and also deletes the object containing the ``ForeignKey``. This behavior\n    can be overridden by specifying the :attr:`on_delete` argument. For\n    example, if you have a nullable :class:`ForeignKey` and you want it to be\n    set null when the referenced object is deleted::\n\n        user = models.ForeignKey(User, blank=True, null=True, on_delete=models.SET_NULL)\n\nThe possible values for :attr:`~ForeignKey.on_delete` are found in\n:mod:`django.db.models`:\n\n* .. attribute:: CASCADE\n\n    Cascade deletes; the default.\n\n* .. attribute:: PROTECT\n\n    Prevent deletion of the referenced object by raising\n    :exc:`~django.db.models.ProtectedError`, a subclass of\n    :exc:`django.db.IntegrityError`.\n\n* .. attribute:: SET_NULL\n\n    Set the :class:`ForeignKey` null; this is only possible if\n    :attr:`~Field.null` is ``True``.\n\n* .. attribute:: SET_DEFAULT\n\n    Set the :class:`ForeignKey` to its default value; a default for the\n    :class:`ForeignKey` must be set.\n\n* .. function:: SET()\n\n    Set the :class:`ForeignKey` to the value passed to\n    :func:`~django.db.models.SET()`, or if a callable is passed in,\n    the result of calling it. In most cases, passing a callable will be\n    necessary to avoid executing queries at the time your models.py is\n    imported::\n\n        def get_sentinel_user():\n            return User.objects.get_or_create(username='deleted')[0]\n\n        class MyModel(models.Model):\n            user = models.ForeignKey(User, on_delete=models.SET(get_sentinel_user))\n\n* .. attribute:: DO_NOTHING\n\n    Take no action. If your database backend enforces referential\n    integrity, this will cause an :exc:`~django.db.IntegrityError` unless\n    you manually add a SQL ``ON DELETE`` constraint to the database field\n    (perhaps using :ref:`initial sql<initial-sql>`).\n\n.. _ref-manytomany:\n\n``ManyToManyField``\n-------------------\n\n.. class:: ManyToManyField(othermodel, [**options])\n\nA many-to-many relationship. Requires a positional argument: the class to which\nthe model is related. This works exactly the same as it does for\n:class:`ForeignKey`, including all the options regarding :ref:`recursive\n<recursive-relationships>` and :ref:`lazy <lazy-relationships>` relationships.\n\nRelated objects can be added, removed, or created with the field's\n:class:`~django.db.models.fields.related.RelatedManager`.\n\nDatabase Representation\n~~~~~~~~~~~~~~~~~~~~~~~\n\nBehind the scenes, Django creates an intermediary join table to represent the\nmany-to-many relationship. By default, this table name is generated using the\nname of the many-to-many field and the name of the table for the model that\ncontains it. Since some databases don't support table names above a certain\nlength, these table names will be automatically truncated to 64 characters and a\nuniqueness hash will be used. This means you might see table names like\n``author_books_9cdf4``; this is perfectly normal.  You can manually provide the\nname of the join table using the :attr:`~ManyToManyField.db_table` option.\n\n.. _manytomany-arguments:\n\nArguments\n~~~~~~~~~\n\n:class:`ManyToManyField` accepts an extra set of arguments -- all optional --\nthat control how the relationship functions.\n\n.. attribute:: ManyToManyField.related_name\n\n    Same as :attr:`ForeignKey.related_name`.\n\n    If you have more than one ``ManyToManyField`` pointing to the same model\n    and want to suppress the backwards relations, set each ``related_name``\n    to a unique value ending with ``'+'``::\n\n        users = models.ManyToManyField(User, related_name='u+')\n        referents = models.ManyToManyField(User, related_name='ref+')\n\n.. attribute:: ManyToManyField.limit_choices_to\n\n    Same as :attr:`ForeignKey.limit_choices_to`.\n\n    ``limit_choices_to`` has no effect when used on a ``ManyToManyField`` with a\n    custom intermediate table specified using the\n    :attr:`~ManyToManyField.through` parameter.\n\n.. attribute:: ManyToManyField.symmetrical\n\n    Only used in the definition of ManyToManyFields on self. Consider the\n    following model::\n\n        class Person(models.Model):\n            friends = models.ManyToManyField(\"self\")\n\n    When Django processes this model, it identifies that it has a\n    :class:`ManyToManyField` on itself, and as a result, it doesn't add a\n    ``person_set`` attribute to the ``Person`` class. Instead, the\n    :class:`ManyToManyField` is assumed to be symmetrical -- that is, if I am\n    your friend, then you are my friend.\n\n    If you do not want symmetry in many-to-many relationships with ``self``, set\n    :attr:`~ManyToManyField.symmetrical` to ``False``. This will force Django to\n    add the descriptor for the reverse relationship, allowing\n    :class:`ManyToManyField` relationships to be non-symmetrical.\n\n.. attribute:: ManyToManyField.through\n\n    Django will automatically generate a table to manage many-to-many\n    relationships. However, if you want to manually specify the intermediary\n    table, you can use the :attr:`~ManyToManyField.through` option to specify\n    the Django model that represents the intermediate table that you want to\n    use.\n\n    The most common use for this option is when you want to associate\n    :ref:`extra data with a many-to-many relationship\n    <intermediary-manytomany>`.\n\n.. attribute:: ManyToManyField.db_table\n\n    The name of the table to create for storing the many-to-many data. If this\n    is not provided, Django will assume a default name based upon the names of:\n    the table for the model defining the relationship and the name of the field\n    itself.\n\n.. _ref-onetoone:\n\n``OneToOneField``\n-----------------\n\n.. class:: OneToOneField(othermodel, [parent_link=False, **options])\n\nA one-to-one relationship. Conceptually, this is similar to a\n:class:`ForeignKey` with :attr:`unique=True <Field.unique>`, but the\n\"reverse\" side of the relation will directly return a single object.\n\nThis is most useful as the primary key of a model which \"extends\"\nanother model in some way; :ref:`multi-table-inheritance` is\nimplemented by adding an implicit one-to-one relation from the child\nmodel to the parent model, for example.\n\nOne positional argument is required: the class to which the model will be\nrelated. This works exactly the same as it does for :class:`ForeignKey`,\nincluding all the options regarding :ref:`recursive <recursive-relationships>`\nand :ref:`lazy <lazy-relationships>` relationships.\n\n.. _onetoone-arguments:\n\nAdditionally, ``OneToOneField`` accepts all of the extra arguments\naccepted by :class:`ForeignKey`, plus one extra argument:\n\n.. attribute:: OneToOneField.parent_link\n\n    When ``True`` and used in a model which inherits from another\n    (concrete) model, indicates that this field should be used as the\n    link back to the parent class, rather than the extra\n    ``OneToOneField`` which would normally be implicitly created by\n    subclassing.\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/models/index.txt",
    "content": "======\nModels\n======\n\nModel API reference. For introductory material, see :doc:`/topics/db/models`.\n\n.. toctree::\n   :maxdepth: 1\n\n   fields\n   relations\n   options\n   instances\n   querysets\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/models/instances.txt",
    "content": "========================\nModel instance reference\n========================\n\n.. currentmodule:: django.db.models\n\nThis document describes the details of the ``Model`` API. It builds on the\nmaterial presented in the :doc:`model </topics/db/models>` and :doc:`database\nquery </topics/db/queries>` guides, so you'll probably want to read and\nunderstand those documents before reading this one.\n\nThroughout this reference we'll use the :ref:`example Weblog models\n<queryset-model-example>` presented in the :doc:`database query guide\n</topics/db/queries>`.\n\nCreating objects\n================\n\nTo create a new instance of a model, just instantiate it like any other Python\nclass:\n\n.. class:: Model(**kwargs)\n\nThe keyword arguments are simply the names of the fields you've defined on your\nmodel. Note that instantiating a model in no way touches your database; for\nthat, you need to :meth:`~Model.save()`.\n\n.. note::\n\n    You may be tempted to customize the model by overriding the ``__init__``\n    method. If you do so, however, take care not to change the calling\n    signature as any change may prevent the model instance from being saved.\n    Rather than overriding ``__init__``, try using one of these approaches:\n\n    1. Add a classmethod on the model class::\n\n        class Book(models.Model):\n            title = models.CharField(max_length=100)\n\n            @classmethod\n            def create(cls, title):\n                book = cls(title=title)\n                # do something with the book\n                return book\n\n        book = Book.create(\"Pride and Prejudice\")\n\n    2. Add a method on a custom manager (usually preferred)::\n\n        class BookManager(models.Manager):\n            def create_book(self, title):\n                book = self.create(title=title)\n                # do something with the book\n                return book\n\n        class Book(models.Model):\n            title = models.CharField(max_length=100)\n\n            objects = BookManager()\n\n        book = Book.objects.create_book(\"Pride and Prejudice\")\n\n.. _validating-objects:\n\nValidating objects\n==================\n\nThere are three steps involved in validating a model:\n\n1. Validate the model fields - :meth:`Model.clean_fields()`\n2. Validate the model as a whole - :meth:`Model.clean()`\n3. Validate the field uniqueness - :meth:`Model.validate_unique()`\n\nAll three steps are performed when you call a model's\n:meth:`~Model.full_clean()` method.\n\nWhen you use a :class:`~django.forms.ModelForm`, the call to\n:meth:`~django.forms.Form.is_valid()` will perform these validation steps for\nall the fields that are included on the form. See the :doc:`ModelForm\ndocumentation </topics/forms/modelforms>` for more information. You should only\nneed to call a model's :meth:`~Model.full_clean()` method if you plan to handle\nvalidation errors yourself, or if you have excluded fields from the\n:class:`~django.forms.ModelForm` that require validation.\n\n.. method:: Model.full_clean(exclude=None)\n\nThis method calls :meth:`Model.clean_fields()`, :meth:`Model.clean()`, and\n:meth:`Model.validate_unique()`, in that order and raises a\n:exc:`~django.core.exceptions.ValidationError` that has a ``message_dict``\nattribute containing errors from all three stages.\n\nThe optional ``exclude`` argument can be used to provide a list of field names\nthat can be excluded from validation and cleaning.\n:class:`~django.forms.ModelForm` uses this argument to exclude fields that\naren't present on your form from being validated since any errors raised could\nnot be corrected by the user.\n\nNote that ``full_clean()`` will *not* be called automatically when you call\nyour model's :meth:`~Model.save()` method, nor as a result of\n:class:`~django.forms.ModelForm` validation. In the case of\n:class:`~django.forms.ModelForm` validation, :meth:`Model.clean_fields()`,\n:meth:`Model.clean()`, and :meth:`Model.validate_unique()` are all called\nindividually.\n\nYou'll need to call ``full_clean`` manually when you want to run one-step model\nvalidation for your own manually created models. For example::\n\n    try:\n        article.full_clean()\n    except ValidationError as e:\n        # Do something based on the errors contained in e.message_dict.\n        # Display them to a user, or handle them programatically.\n        pass\n\nThe first step ``full_clean()`` performs is to clean each individual field.\n\n.. method:: Model.clean_fields(exclude=None)\n\nThis method will validate all fields on your model. The optional ``exclude``\nargument lets you provide a list of field names to exclude from validation. It\nwill raise a :exc:`~django.core.exceptions.ValidationError` if any fields fail\nvalidation.\n\nThe second step ``full_clean()`` performs is to call :meth:`Model.clean()`.\nThis method should be overridden to perform custom validation on your model.\n\n.. method:: Model.clean()\n\nThis method should be used to provide custom model validation, and to modify\nattributes on your model if desired. For instance, you could use it to\nautomatically provide a value for a field, or to do validation that requires\naccess to more than a single field::\n\n    def clean(self):\n        from django.core.exceptions import ValidationError\n        # Don't allow draft entries to have a pub_date.\n        if self.status == 'draft' and self.pub_date is not None:\n            raise ValidationError('Draft entries may not have a publication date.')\n        # Set the pub_date for published items if it hasn't been set already.\n        if self.status == 'published' and self.pub_date is None:\n            self.pub_date = datetime.date.today()\n\nAny :exc:`~django.core.exceptions.ValidationError` exceptions raised by\n``Model.clean()`` will be stored in a special key error dictionary key,\n``NON_FIELD_ERRORS``, that is used for errors that are tied to the entire model\ninstead of to a specific field::\n\n    from django.core.exceptions import ValidationError, NON_FIELD_ERRORS\n    try:\n        article.full_clean()\n    except ValidationError as e:\n        non_field_errors = e.message_dict[NON_FIELD_ERRORS]\n\nFinally, ``full_clean()`` will check any unique constraints on your model.\n\n.. method:: Model.validate_unique(exclude=None)\n\nThis method is similar to :meth:`~Model.clean_fields`, but validates all\nuniqueness constraints on your model instead of individual field values. The\noptional ``exclude`` argument allows you to provide a list of field names to\nexclude from validation. It will raise a\n:exc:`~django.core.exceptions.ValidationError` if any fields fail validation.\n\nNote that if you provide an ``exclude`` argument to ``validate_unique()``, any\n:attr:`~django.db.models.Options.unique_together` constraint involving one of\nthe fields you provided will not be checked.\n\n\nSaving objects\n==============\n\nTo save an object back to the database, call ``save()``:\n\n.. method:: Model.save([force_insert=False, force_update=False, using=DEFAULT_DB_ALIAS, update_fields=None])\n\nIf you want customized saving behavior, you can override this ``save()``\nmethod. See :ref:`overriding-model-methods` for more details.\n\nThe model save process also has some subtleties; see the sections below.\n\nAuto-incrementing primary keys\n------------------------------\n\nIf a model has an :class:`~django.db.models.AutoField` — an auto-incrementing\nprimary key — then that auto-incremented value will be calculated and saved as\nan attribute on your object the first time you call ``save()``::\n\n    >>> b2 = Blog(name='Cheddar Talk', tagline='Thoughts on cheese.')\n    >>> b2.id     # Returns None, because b doesn't have an ID yet.\n    >>> b2.save()\n    >>> b2.id     # Returns the ID of your new object.\n\nThere's no way to tell what the value of an ID will be before you call\n``save()``, because that value is calculated by your database, not by Django.\n\nFor convenience, each model has an :class:`~django.db.models.AutoField` named\n``id`` by default unless you explicitly specify ``primary_key=True`` on a field\nin your model. See the documentation for :class:`~django.db.models.AutoField`\nfor more details.\n\nThe ``pk`` property\n~~~~~~~~~~~~~~~~~~~\n\n.. attribute:: Model.pk\n\nRegardless of whether you define a primary key field yourself, or let Django\nsupply one for you, each model will have a property called ``pk``. It behaves\nlike a normal attribute on the model, but is actually an alias for whichever\nattribute is the primary key field for the model. You can read and set this\nvalue, just as you would for any other attribute, and it will update the\ncorrect field in the model.\n\nExplicitly specifying auto-primary-key values\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nIf a model has an :class:`~django.db.models.AutoField` but you want to define a\nnew object's ID explicitly when saving, just define it explicitly before\nsaving, rather than relying on the auto-assignment of the ID::\n\n    >>> b3 = Blog(id=3, name='Cheddar Talk', tagline='Thoughts on cheese.')\n    >>> b3.id     # Returns 3.\n    >>> b3.save()\n    >>> b3.id     # Returns 3.\n\nIf you assign auto-primary-key values manually, make sure not to use an\nalready-existing primary-key value! If you create a new object with an explicit\nprimary-key value that already exists in the database, Django will assume you're\nchanging the existing record rather than creating a new one.\n\nGiven the above ``'Cheddar Talk'`` blog example, this example would override the\nprevious record in the database::\n\n    b4 = Blog(id=3, name='Not Cheddar', tagline='Anything but cheese.')\n    b4.save()  # Overrides the previous blog with ID=3!\n\nSee `How Django knows to UPDATE vs. INSERT`_, below, for the reason this\nhappens.\n\nExplicitly specifying auto-primary-key values is mostly useful for bulk-saving\nobjects, when you're confident you won't have primary-key collision.\n\nWhat happens when you save?\n---------------------------\n\nWhen you save an object, Django performs the following steps:\n\n1. **Emit a pre-save signal.** The :doc:`signal </ref/signals>`\n   :attr:`django.db.models.signals.pre_save` is sent, allowing any\n   functions listening for that signal to take some customized\n   action.\n\n2. **Pre-process the data.** Each field on the object is asked to\n   perform any automated data modification that the field may need\n   to perform.\n\n   Most fields do *no* pre-processing — the field data is kept as-is.\n   Pre-processing is only used on fields that have special behavior.  For\n   example, if your model has a :class:`~django.db.models.DateField` with\n   ``auto_now=True``, the pre-save phase will alter the data in the object\n   to ensure that the date field contains the current date stamp. (Our\n   documentation doesn't yet include a list of all the fields with this\n   \"special behavior.\")\n\n3. **Prepare the data for the database.** Each field is asked to provide\n   its current value in a data type that can be written to the database.\n\n   Most fields require *no* data preparation. Simple data types, such as\n   integers and strings, are 'ready to write' as a Python object. However,\n   more complex data types often require some modification.\n\n   For example, :class:`~django.db.models.DateField` fields use a Python\n   ``datetime`` object to store data. Databases don't store ``datetime``\n   objects, so the field value must be converted into an ISO-compliant date\n   string for insertion into the database.\n\n4. **Insert the data into the database.** The pre-processed, prepared\n   data is then composed into an SQL statement for insertion into the\n   database.\n\n5. **Emit a post-save signal.** The signal\n   :attr:`django.db.models.signals.post_save` is sent, allowing\n   any functions listening for that signal to take some customized\n   action.\n\nHow Django knows to UPDATE vs. INSERT\n-------------------------------------\n\nYou may have noticed Django database objects use the same ``save()`` method\nfor creating and changing objects. Django abstracts the need to use ``INSERT``\nor ``UPDATE`` SQL statements. Specifically, when you call ``save()``, Django\nfollows this algorithm:\n\n* If the object's primary key attribute is set to a value that evaluates to\n  ``True`` (i.e., a value other than ``None`` or the empty string), Django\n  executes a ``SELECT`` query to determine whether a record with the given\n  primary key already exists.\n* If the record with the given primary key does already exist, Django\n  executes an ``UPDATE`` query.\n* If the object's primary key attribute is *not* set, or if it's set but a\n  record doesn't exist, Django executes an ``INSERT``.\n\nThe one gotcha here is that you should be careful not to specify a primary-key\nvalue explicitly when saving new objects, if you cannot guarantee the\nprimary-key value is unused. For more on this nuance, see `Explicitly specifying\nauto-primary-key values`_ above and `Forcing an INSERT or UPDATE`_ below.\n\n.. _ref-models-force-insert:\n\nForcing an INSERT or UPDATE\n~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nIn some rare circumstances, it's necessary to be able to force the\n:meth:`~Model.save()` method to perform an SQL ``INSERT`` and not fall back to\ndoing an ``UPDATE``. Or vice-versa: update, if possible, but not insert a new\nrow. In these cases you can pass the ``force_insert=True`` or\n``force_update=True`` parameters to the :meth:`~Model.save()` method.\nObviously, passing both parameters is an error: you cannot both insert *and*\nupdate at the same time!\n\nIt should be very rare that you'll need to use these parameters. Django will\nalmost always do the right thing and trying to override that will lead to\nerrors that are difficult to track down. This feature is for advanced use\nonly.\n\nUsing ``update_fields`` will force an update similarly to ``force_update``.\n\nUpdating attributes based on existing fields\n--------------------------------------------\n\nSometimes you'll need to perform a simple arithmetic task on a field, such\nas incrementing or decrementing the current value. The obvious way to\nachieve this is to do something like::\n\n    >>> product = Product.objects.get(name='Venezuelan Beaver Cheese')\n    >>> product.number_sold += 1\n    >>> product.save()\n\nIf the old ``number_sold`` value retrieved from the database was 10, then\nthe value of 11 will be written back to the database.\n\nThis sequence has a standard update problem in that it contains a race\ncondition. If another thread of execution has already saved an updated value\nafter the current thread retrieved the old value, the current thread will only\nsave the old value plus one, rather than the new (current) value plus one.\n\nThe process can be made robust and slightly faster by expressing the update\nrelative to the original field value, rather than as an explicit assignment of\na new value. Django provides :ref:`F() expressions <query-expressions>` for\nperforming this kind of relative update. Using ``F()`` expressions, the\nprevious example is expressed as::\n\n    >>> from django.db.models import F\n    >>> product = Product.objects.get(name='Venezuelan Beaver Cheese')\n    >>> product.number_sold = F('number_sold') + 1\n    >>> product.save()\n\nThis approach doesn't use the initial value from the database. Instead, it\nmakes the database do the update based on whatever value is current at the time\nthat the :meth:`~Model.save()` is executed.\n\nOnce the object has been saved, you must reload the object in order to access\nthe actual value that was applied to the updated field::\n\n    >>> product = Products.objects.get(pk=product.pk)\n    >>> print(product.number_sold)\n    42\n\nFor more details, see the documentation on :ref:`F() expressions\n<query-expressions>` and their :ref:`use in update queries\n<topics-db-queries-update>`.\n\nSpecifying which fields to save\n-------------------------------\n\n.. versionadded:: 1.5\n\nIf ``save()`` is passed a list of field names in keyword argument\n``update_fields``, only the fields named in that list will be updated.\nThis may be desirable if you want to update just one or a few fields on\nan object. There will be a slight performance benefit from preventing\nall of the model fields from being updated in the database. For example::\n\n    product.name = 'Name changed again'\n    product.save(update_fields=['name'])\n\nThe ``update_fields`` argument can be any iterable containing strings. An\nempty ``update_fields`` iterable will skip the save. A value of None will\nperform an update on all fields.\n\nSpecifying ``update_fields`` will force an update.\n\nWhen saving a model fetched through deferred model loading\n(:meth:`~django.db.models.query.QuerySet.only()` or\n:meth:`~django.db.models.query.QuerySet.defer()`) only the fields loaded\nfrom the DB will get updated. In effect there is an automatic\n``update_fields`` in this case. If you assign or change any deferred field\nvalue, the field will be added to the updated fields.\n\nDeleting objects\n================\n\n.. method:: Model.delete([using=DEFAULT_DB_ALIAS])\n\nIssues a SQL ``DELETE`` for the object. This only deletes the object in the\ndatabase; the Python instance will still exist and will still have data in\nits fields.\n\nFor more details, including how to delete objects in bulk, see\n:ref:`topics-db-queries-delete`.\n\nIf you want customized deletion behavior, you can override the ``delete()``\nmethod. See :ref:`overriding-model-methods` for more details.\n\n.. _model-instance-methods:\n\nOther model instance methods\n============================\n\nA few object methods have special purposes.\n\n``__unicode__``\n---------------\n\n.. method:: Model.__unicode__()\n\nThe ``__unicode__()`` method is called whenever you call ``unicode()`` on an\nobject. Django uses ``unicode(obj)`` (or the related function, :meth:`str(obj)\n<Model.__str__>`) in a number of places. Most notably, to display an object in\nthe Django admin site and as the value inserted into a template when it\ndisplays an object. Thus, you should always return a nice, human-readable\nrepresentation of the model from the ``__unicode__()`` method.\n\nFor example::\n\n    class Person(models.Model):\n        first_name = models.CharField(max_length=50)\n        last_name = models.CharField(max_length=50)\n\n        def __unicode__(self):\n            return u'%s %s' % (self.first_name, self.last_name)\n\nIf you define a ``__unicode__()`` method on your model and not a\n:meth:`~Model.__str__()` method, Django will automatically provide you with a\n:meth:`~Model.__str__()` that calls ``__unicode__()`` and then converts the\nresult correctly to a UTF-8 encoded string object. This is recommended\ndevelopment practice: define only ``__unicode__()`` and let Django take care of\nthe conversion to string objects when required.\n\n``__str__``\n-----------\n\n.. method:: Model.__str__()\n\nThe ``__str__()`` method is called whenever you call ``str()`` on an object. The main use for this method directly inside Django is when the ``repr()`` output of a model is displayed anywhere (for example, in debugging output).\nThus, you should return a nice, human-readable string for the object's\n``__str__()``.  It isn't required to put ``__str__()`` methods everywhere if you have sensible :meth:`~Model.__unicode__()` methods.\n\nThe previous :meth:`~Model.__unicode__()` example could be similarly written\nusing ``__str__()`` like this::\n\n    class Person(models.Model):\n        first_name = models.CharField(max_length=50)\n        last_name = models.CharField(max_length=50)\n\n        def __str__(self):\n            # Note use of django.utils.encoding.force_bytes() here because\n            # first_name and last_name will be unicode strings.\n            return force_bytes('%s %s' % (self.first_name, self.last_name))\n\n``get_absolute_url``\n--------------------\n\n.. method:: Model.get_absolute_url()\n\nDefine a ``get_absolute_url()`` method to tell Django how to calculate the\ncanonical URL for an object. To callers, this method should appear to return a\nstring that can be used to refer to the object over HTTP.\n\nFor example::\n\n    def get_absolute_url(self):\n        return \"/people/%i/\" % self.id\n\n(Whilst this code is correct and simple, it may not be the most portable way to\nwrite this kind of method. The :func:`~django.core.urlresolvers.reverse`\nfunction is usually the best approach.)\n\nFor example::\n\n    def get_absolute_url(self):\n        return reverse('people.views.details', args=[str(self.id)])\n\nOne place Django uses ``get_absolute_url()`` is in the admin app. If an object\ndefines this method, the object-editing page will have a \"View on site\" link\nthat will jump you directly to the object's public view, as given by\n``get_absolute_url()``.\n\nSimilarly, a couple of other bits of Django, such as the :doc:`syndication feed\nframework </ref/contrib/syndication>`, use ``get_absolute_url()`` when it is\ndefined. If it makes sense for your model's instances to each have a unique\nURL, you should define ``get_absolute_url()``.\n\nIt's good practice to use ``get_absolute_url()`` in templates, instead of\nhard-coding your objects' URLs. For example, this template code is bad:\n\n.. code-block:: html+django\n\n    <!-- BAD template code. Avoid! -->\n    <a href=\"/people/{{ object.id }}/\">{{ object.name }}</a>\n\nThis template code is much better:\n\n.. code-block:: html+django\n\n    <a href=\"{{ object.get_absolute_url }}\">{{ object.name }}</a>\n\nThe logic here is that if you change the URL structure of your objects, even\nfor something simple such as correcting a spelling error, you don't want to\nhave to track down every place that the URL might be created. Specify it once,\nin ``get_absolute_url()`` and have all your other code call that one place.\n\n.. note::\n    The string you return from ``get_absolute_url()`` **must** contain only\n    ASCII characters (required by the URI specfication, :rfc:`2396`) and be\n    URL-encoded, if necessary.\n\n    Code and templates calling ``get_absolute_url()`` should be able to use the\n    result directly without any further processing. You may wish to use the\n    ``django.utils.encoding.iri_to_uri()`` function to help with this if you\n    are using unicode strings containing characters outside the ASCII range at\n    all.\n\nThe ``permalink`` decorator\n~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. warning::\n\n    The ``permalink`` decorator is no longer recommended. You should use\n    :func:`~django.core.urlresolvers.reverse` in the body of your\n    ``get_absolute_url`` method instead.\n\nIn early versions of Django, there wasn't an easy way to use URLs defined in\nURLconf file inside :meth:`~django.db.models.Model.get_absolute_url`. That\nmeant you would need to define the URL both in URLConf and\n:meth:`~django.db.models.Model.get_absolute_url`. The ``permalink`` decorator\nwas added to overcome this DRY principle violation. However, since the\nintroduction of :func:`~django.core.urlresolvers.reverse` there is no\nreason to use ``permalink`` any more.\n\n.. function:: permalink()\n\nThis decorator takes the name of a URL pattern (either a view name or a URL\npattern name) and a list of position or keyword arguments and uses the URLconf\npatterns to construct the correct, full URL. It returns a string for the\ncorrect URL, with all parameters substituted in the correct positions.\n\nThe ``permalink`` decorator is a Python-level equivalent to the :ttag:`url`\ntemplate tag and a high-level wrapper for the\n:func:`~django.core.urlresolvers.reverse` function.\n\nAn example should make it clear how to use ``permalink()``. Suppose your URLconf\ncontains a line such as::\n\n    (r'^people/(\\d+)/$', 'people.views.details'),\n\n...your model could have a :meth:`~django.db.models.Model.get_absolute_url`\nmethod that looked like this::\n\n    from django.db import models\n\n    @models.permalink\n    def get_absolute_url(self):\n        return ('people.views.details', [str(self.id)])\n\nSimilarly, if you had a URLconf entry that looked like::\n\n    (r'/archive/(?P<year>\\d{4})/(?P<month>\\d{2})/(?P<day>\\d{2})/$', archive_view)\n\n...you could reference this using ``permalink()`` as follows::\n\n    @models.permalink\n    def get_absolute_url(self):\n        return ('archive_view', (), {\n            'year': self.created.year,\n            'month': self.created.strftime('%m'),\n            'day': self.created.strftime('%d')})\n\nNotice that we specify an empty sequence for the second parameter in this case,\nbecause we only want to pass keyword parameters, not positional ones.\n\nIn this way, you're associating the model's absolute path with the view that is\nused to display it, without repeating the view's URL information anywhere. You\ncan still use the :meth:`~django.db.models.Model.get_absolute_url()` method in\ntemplates, as before.\n\nIn some cases, such as the use of generic views or the re-use of custom views\nfor multiple models, specifying the view function may confuse the reverse URL\nmatcher (because multiple patterns point to the same view). For that case,\nDjango has :ref:`named URL patterns <naming-url-patterns>`. Using a named URL\npattern, it's possible to give a name to a pattern, and then reference the name\nrather than the view function. A named URL pattern is defined by replacing the\npattern tuple by a call to the ``url`` function)::\n\n    from django.conf.urls import url\n\n    url(r'^people/(\\d+)/$', 'blog_views.generic_detail', name='people_view'),\n\n...and then using that name to perform the reverse URL resolution instead\nof the view name::\n\n    from django.db import models\n\n    @models.permalink\n    def get_absolute_url(self):\n        return ('people_view', [str(self.id)])\n\nMore details on named URL patterns are in the :doc:`URL dispatch documentation\n</topics/http/urls>`.\n\nExtra instance methods\n======================\n\nIn addition to :meth:`~Model.save()`, :meth:`~Model.delete()`, a model object\nmight have some of the following methods:\n\n.. method:: Model.get_FOO_display()\n\nFor every field that has :attr:`~django.db.models.Field.choices` set, the\nobject will have a ``get_FOO_display()`` method, where ``FOO`` is the name of\nthe field. This method returns the \"human-readable\" value of the field.\n\nFor example::\n\n    from django.db import models\n\n    class Person(models.Model):\n        SHIRT_SIZES = (\n            (u'S', u'Small'),\n            (u'M', u'Medium'),\n            (u'L', u'Large'),\n        )\n        name = models.CharField(max_length=60)\n        shirt_size = models.CharField(max_length=2, choices=SHIRT_SIZES)\n\n::\n\n    >>> p = Person(name=\"Fred Flintstone\", shirt_size=\"L\")\n    >>> p.save()\n    >>> p.shirt_size\n    u'L'\n    >>> p.get_shirt_size_display()\n    u'Large'\n\n.. method:: Model.get_next_by_FOO(\\**kwargs)\n.. method:: Model.get_previous_by_FOO(\\**kwargs)\n\nFor every :class:`~django.db.models.DateField` and\n:class:`~django.db.models.DateTimeField` that does not have :attr:`null=True\n<django.db.models.Field.null>`, the object will have ``get_next_by_FOO()`` and\n``get_previous_by_FOO()`` methods, where ``FOO`` is the name of the field. This\nreturns the next and previous object with respect to the date field, raising\na :exc:`~django.core.exceptions.DoesNotExist` exception when appropriate.\n\nBoth methods accept optional keyword arguments, which should be in the format\ndescribed in :ref:`Field lookups <field-lookups>`.\n\nNote that in the case of identical date values, these methods will use the\nprimary key as a tie-breaker. This guarantees that no records are skipped or\nduplicated. That also means you cannot use those methods on unsaved objects.\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/models/options.txt",
    "content": "======================\nModel ``Meta`` options\n======================\n\nThis document explains all the possible :ref:`metadata options\n<meta-options>` that you can give your model in its internal\n``class Meta``.\n\nAvailable ``Meta`` options\n==========================\n\n.. currentmodule:: django.db.models\n\n``abstract``\n------------\n\n.. attribute:: Options.abstract\n\n    If ``abstract = True``, this model will be an\n    :ref:`abstract base class <abstract-base-classes>`.\n\n``app_label``\n-------------\n\n.. attribute:: Options.app_label\n\n    If a model exists outside of the standard :file:`models.py` (for instance,\n    if the app's models are in submodules of ``myapp.models``), the model must\n    define which app it is part of::\n\n        app_label = 'myapp'\n\n``db_table``\n------------\n\n.. attribute:: Options.db_table\n\n    The name of the database table to use for the model::\n\n        db_table = 'music_album'\n\n.. _table-names:\n\nTable names\n~~~~~~~~~~~\n\nTo save you time, Django automatically derives the name of the database table\nfrom the name of your model class and the app that contains it. A model's\ndatabase table name is constructed by joining the model's \"app label\" -- the\nname you used in :djadmin:`manage.py startapp <startapp>` -- to the model's\nclass name, with an underscore between them.\n\nFor example, if you have an app ``bookstore`` (as created by\n``manage.py startapp bookstore``), a model defined as ``class Book`` will have\na database table named ``bookstore_book``.\n\nTo override the database table name, use the ``db_table`` parameter in\n``class Meta``.\n\nIf your database table name is an SQL reserved word, or contains characters that\naren't allowed in Python variable names -- notably, the hyphen -- that's OK.\nDjango quotes column and table names behind the scenes.\n\n.. admonition:: Use lowercase table names for MySQL\n\n    It is strongly advised that you use lowercase table names when you override\n    the table name via ``db_table``, particularly if you are using the MySQL\n    backend. See the :ref:`MySQL notes <mysql-notes>` for more details.\n\n\n``db_tablespace``\n-----------------\n\n.. attribute:: Options.db_tablespace\n\n    The name of the :doc:`database tablespace </topics/db/tablespaces>` to use\n    for this model. The default is the project's :setting:`DEFAULT_TABLESPACE`\n    setting, if set. If the backend doesn't support tablespaces, this option is\n    ignored.\n\n``get_latest_by``\n-----------------\n\n.. attribute:: Options.get_latest_by\n\n    The name of an orderable field in the model, typically a :class:`DateField`,\n    :class:`DateTimeField`, or :class:`IntegerField`. This specifies the default\n    field to use in your model :class:`Manager`'s\n    :meth:`~django.db.models.query.QuerySet.latest` method.\n\n    Example::\n\n        get_latest_by = \"order_date\"\n\n    See the :meth:`~django.db.models.query.QuerySet.latest` docs for more.\n\n``managed``\n-----------\n\n.. attribute:: Options.managed\n\n    Defaults to ``True``, meaning Django will create the appropriate database\n    tables in :djadmin:`syncdb` and remove them as part of a :djadmin:`flush`\n    management command. That is, Django *manages* the database tables'\n    lifecycles.\n\n    If ``False``, no database table creation or deletion operations will be\n    performed for this model. This is useful if the model represents an existing\n    table or a database view that has been created by some other means. This is\n    the *only* difference when ``managed=False``. All other aspects of\n    model handling are exactly the same as normal. This includes\n\n    1. Adding an automatic primary key field to the model if you don't\n       declare it.  To avoid confusion for later code readers, it's\n       recommended to specify all the columns from the database table you\n       are modeling when using unmanaged models.\n\n    2. If a model with ``managed=False`` contains a\n       :class:`~django.db.models.ManyToManyField` that points to another\n       unmanaged model, then the intermediate table for the many-to-many\n       join will also not be created. However, the intermediary table\n       between one managed and one unmanaged model *will* be created.\n\n       If you need to change this default behavior, create the intermediary\n       table as an explicit model (with ``managed`` set as needed) and use\n       the :attr:`ManyToManyField.through` attribute to make the relation\n       use your custom model.\n\n    For tests involving models with ``managed=False``, it's up to you to ensure\n    the correct tables are created as part of the test setup.\n\n    If you're interested in changing the Python-level behavior of a model class,\n    you *could* use ``managed=False`` and create a copy of an existing model.\n    However, there's a better approach for that situation: :ref:`proxy-models`.\n\n``order_with_respect_to``\n-------------------------\n\n.. attribute:: Options.order_with_respect_to\n\n    Marks this object as \"orderable\" with respect to the given field. This is almost\n    always used with related objects to allow them to be ordered with respect to a\n    parent object. For example, if an ``Answer`` relates to a ``Question`` object,\n    and a question has more than one answer, and the order of answers matters, you'd\n    do this::\n\n        class Answer(models.Model):\n            question = models.ForeignKey(Question)\n            # ...\n\n            class Meta:\n                order_with_respect_to = 'question'\n\n    When ``order_with_respect_to`` is set, two additional methods are provided to\n    retrieve and to set the order of the related objects: ``get_RELATED_order()``\n    and ``set_RELATED_order()``, where ``RELATED`` is the lowercased model name. For\n    example, assuming that a ``Question`` object has multiple related ``Answer``\n    objects, the list returned contains the primary keys of the related ``Answer``\n    objects::\n\n        >>> question = Question.objects.get(id=1)\n        >>> question.get_answer_order()\n        [1, 2, 3]\n\n    The order of a ``Question`` object's related ``Answer`` objects can be set by\n    passing in a list of ``Answer`` primary keys::\n\n        >>> question.set_answer_order([3, 1, 2])\n\n    The related objects also get two methods, ``get_next_in_order()`` and\n    ``get_previous_in_order()``, which can be used to access those objects in their\n    proper order. Assuming the ``Answer`` objects are ordered by ``id``::\n\n        >>> answer = Answer.objects.get(id=2)\n        >>> answer.get_next_in_order()\n        <Answer: 3>\n        >>> answer.get_previous_in_order()\n        <Answer: 1>\n\n.. admonition:: Changing order_with_respect_to\n\n        ``order_with_respect_to`` adds an additional field/database column\n        named ``_order``, so be sure to handle that as you would any other\n        change to your models if you add or change ``order_with_respect_to``\n        after your initial :djadmin:`syncdb`.\n\n``ordering``\n------------\n\n.. attribute:: Options.ordering\n\n    The default ordering for the object, for use when obtaining lists of objects::\n\n        ordering = ['-order_date']\n\n    This is a tuple or list of strings. Each string is a field name with an optional\n    \"-\" prefix, which indicates descending order. Fields without a leading \"-\" will\n    be ordered ascending. Use the string \"?\" to order randomly.\n\n    For example, to order by a ``pub_date`` field ascending, use this::\n\n        ordering = ['pub_date']\n\n    To order by ``pub_date`` descending, use this::\n\n        ordering = ['-pub_date']\n\n    To order by ``pub_date`` descending, then by ``author`` ascending, use this::\n\n        ordering = ['-pub_date', 'author']\n\n    .. versionchanged:: 1.4\n       The Django admin honors all elements in the list/tuple; before 1.4, only\n       the first one was respected.\n\n``permissions``\n---------------\n\n.. attribute:: Options.permissions\n\n    Extra permissions to enter into the permissions table when creating this object.\n    Add, delete and change permissions are automatically created for each object\n    that has ``admin`` set. This example specifies an extra permission,\n    ``can_deliver_pizzas``::\n\n        permissions = ((\"can_deliver_pizzas\", \"Can deliver pizzas\"),)\n\n    This is a list or tuple of 2-tuples in the format ``(permission_code,\n    human_readable_permission_name)``.\n\n``proxy``\n---------\n\n.. attribute:: Options.proxy\n\n    If ``proxy = True``, a model which subclasses another model will be treated as\n    a :ref:`proxy model <proxy-models>`.\n\n``unique_together``\n-------------------\n\n.. attribute:: Options.unique_together\n\n    Sets of field names that, taken together, must be unique::\n\n        unique_together = ((\"driver\", \"restaurant\"),)\n\n    This is a tuple of tuples that must be unique when considered together.\n    It's used in the Django admin and is enforced at the database level (i.e., the\n    appropriate ``UNIQUE`` statements are included in the ``CREATE TABLE``\n    statement).\n\n    For convenience, unique_together can be a single tuple when dealing with a single\n    set of fields::\n\n        unique_together = (\"driver\", \"restaurant\")\n\n    A :class:`~django.db.models.ManyToManyField` cannot be included in\n    unique_together. (It's not clear what that would even mean!) If you\n    need to validate uniqueness related to a\n    :class:`~django.db.models.ManyToManyField`, try using a signal or\n    an explicit :attr:`through <ManyToManyField.through>` model.\n\n``index_together``\n\n.. attribute:: Options.index_together\n\n    .. versionadded:: 1.5\n\n    Sets of field names that, taken together, are indexed::\n\n        index_together = [\n            [\"pub_date\", \"deadline\"],\n        ]\n\n    This list of fields will be indexed together (i.e. the appropriate\n    ``CREATE INDEX`` statement will be issued.)\n\n``verbose_name``\n----------------\n\n.. attribute:: Options.verbose_name\n\n    A human-readable name for the object, singular::\n\n        verbose_name = \"pizza\"\n\n    If this isn't given, Django will use a munged version of the class name:\n    ``CamelCase`` becomes ``camel case``.\n\n``verbose_name_plural``\n-----------------------\n\n.. attribute:: Options.verbose_name_plural\n\n    The plural name for the object::\n\n        verbose_name_plural = \"stories\"\n\n    If this isn't given, Django will use :attr:`~Options.verbose_name` + ``\"s\"``.\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/models/querysets.txt",
    "content": "======================\nQuerySet API reference\n======================\n\n.. currentmodule:: django.db.models.query\n\nThis document describes the details of the ``QuerySet`` API. It builds on the\nmaterial presented in the :doc:`model </topics/db/models>` and :doc:`database\nquery </topics/db/queries>` guides, so you'll probably want to read and\nunderstand those documents before reading this one.\n\nThroughout this reference we'll use the :ref:`example Weblog models\n<queryset-model-example>` presented in the :doc:`database query guide\n</topics/db/queries>`.\n\n.. _when-querysets-are-evaluated:\n\nWhen QuerySets are evaluated\n============================\n\nInternally, a ``QuerySet`` can be constructed, filtered, sliced, and generally\npassed around without actually hitting the database. No database activity\nactually occurs until you do something to evaluate the queryset.\n\nYou can evaluate a ``QuerySet`` in the following ways:\n\n* **Iteration.** A ``QuerySet`` is iterable, and it executes its database\n  query the first time you iterate over it. For example, this will print\n  the headline of all entries in the database::\n\n      for e in Entry.objects.all():\n          print(e.headline)\n\n  Note: Don't use this if all you want to do is determine if at least one\n  result exists. It's more efficient to use :meth:`~QuerySet.exists`.\n\n* **Slicing.** As explained in :ref:`limiting-querysets`, a ``QuerySet`` can\n  be sliced, using Python's array-slicing syntax. Slicing an unevaluated\n  ``QuerySet`` usually returns another unevaluated ``QuerySet``, but Django\n  will execute the database query if you use the \"step\" parameter of slice\n  syntax, and will return a list. Slicing a ``QuerySet`` that has been\n  evaluated (partially or fully) also returns a list.\n\n* **Pickling/Caching.** See the following section for details of what\n  is involved when `pickling QuerySets`_. The important thing for the\n  purposes of this section is that the results are read from the database.\n\n* **repr().** A ``QuerySet`` is evaluated when you call ``repr()`` on it.\n  This is for convenience in the Python interactive interpreter, so you can\n  immediately see your results when using the API interactively.\n\n* **len().** A ``QuerySet`` is evaluated when you call ``len()`` on it.\n  This, as you might expect, returns the length of the result list.\n\n  Note: *Don't* use ``len()`` on ``QuerySet``\\s if all you want to do is\n  determine the number of records in the set. It's much more efficient to\n  handle a count at the database level, using SQL's ``SELECT COUNT(*)``,\n  and Django provides a ``count()`` method for precisely this reason. See\n  ``count()`` below.\n\n* **list().** Force evaluation of a ``QuerySet`` by calling ``list()`` on\n  it. For example::\n\n      entry_list = list(Entry.objects.all())\n\n  Be warned, though, that this could have a large memory overhead, because\n  Django will load each element of the list into memory. In contrast,\n  iterating over a ``QuerySet`` will take advantage of your database to\n  load data and instantiate objects only as you need them.\n\n* **bool().** Testing a ``QuerySet`` in a boolean context, such as using\n  ``bool()``, ``or``, ``and`` or an ``if`` statement, will cause the query\n  to be executed. If there is at least one result, the ``QuerySet`` is\n  ``True``, otherwise ``False``. For example::\n\n      if Entry.objects.filter(headline=\"Test\"):\n         print(\"There is at least one Entry with the headline Test\")\n\n  Note: *Don't* use this if all you want to do is determine if at least one\n  result exists, and don't need the actual objects. It's more efficient to\n  use :meth:`~QuerySet.exists` (see below).\n\n.. _pickling QuerySets:\n\nPickling QuerySets\n------------------\n\nIf you :mod:`pickle` a ``QuerySet``, this will force all the results to be loaded\ninto memory prior to pickling. Pickling is usually used as a precursor to\ncaching and when the cached queryset is reloaded, you want the results to\nalready be present and ready for use (reading from the database can take some\ntime, defeating the purpose of caching). This means that when you unpickle a\n``QuerySet``, it contains the results at the moment it was pickled, rather\nthan the results that are currently in the database.\n\nIf you only want to pickle the necessary information to recreate the\n``QuerySet`` from the database at a later time, pickle the ``query`` attribute\nof the ``QuerySet``. You can then recreate the original ``QuerySet`` (without\nany results loaded) using some code like this::\n\n    >>> import pickle\n    >>> query = pickle.loads(s)     # Assuming 's' is the pickled string.\n    >>> qs = MyModel.objects.all()\n    >>> qs.query = query            # Restore the original 'query'.\n\nThe ``query`` attribute is an opaque object. It represents the internals of\nthe query construction and is not part of the public API. However, it is safe\n(and fully supported) to pickle and unpickle the attribute's contents as\ndescribed here.\n\n.. admonition:: You can't share pickles between versions\n\n    Pickles of QuerySets are only valid for the version of Django that\n    was used to generate them. If you generate a pickle using Django\n    version N, there is no guarantee that pickle will be readable with\n    Django version N+1. Pickles should not be used as part of a long-term\n    archival strategy.\n\n.. _queryset-api:\n\nQuerySet API\n============\n\nThough you usually won't create one manually — you'll go through a\n:class:`~django.db.models.Manager` — here's the formal declaration of a\n``QuerySet``:\n\n.. class:: QuerySet([model=None, query=None, using=None])\n\n    Usually when you'll interact with a ``QuerySet`` you'll use it by\n    :ref:`chaining filters <chaining-filters>`. To make this work, most\n    ``QuerySet`` methods return new querysets. These methods are covered in\n    detail later in this section.\n\n    The ``QuerySet`` class has two public attributes you can use for\n    introspection:\n\n    .. attribute:: ordered\n\n        ``True`` if the ``QuerySet`` is ordered — i.e. has an\n        :meth:`order_by()` clause or a default ordering on the model.\n        ``False`` otherwise.\n\n    .. attribute:: db\n\n        The database that will be used if this query is executed now.\n\n    .. note::\n\n        The ``query`` parameter to :class:`QuerySet` exists so that specialized\n        query subclasses such as\n        :class:`~django.contrib.gis.db.models.GeoQuerySet` can reconstruct\n        internal query state. The value of the parameter is an opaque\n        representation of that query state and is not part of a public API.\n        To put it simply: if you need to ask, you don't need to use it.\n\n.. currentmodule:: django.db.models.query.QuerySet\n\nMethods that return new QuerySets\n---------------------------------\n\nDjango provides a range of ``QuerySet`` refinement methods that modify either\nthe types of results returned by the ``QuerySet`` or the way its SQL query is\nexecuted.\n\nfilter\n~~~~~~\n\n.. method:: filter(**kwargs)\n\nReturns a new ``QuerySet`` containing objects that match the given lookup\nparameters.\n\nThe lookup parameters (``**kwargs``) should be in the format described in\n`Field lookups`_ below. Multiple parameters are joined via ``AND`` in the\nunderlying SQL statement.\n\nexclude\n~~~~~~~\n\n.. method:: exclude(**kwargs)\n\nReturns a new ``QuerySet`` containing objects that do *not* match the given\nlookup parameters.\n\nThe lookup parameters (``**kwargs``) should be in the format described in\n`Field lookups`_ below. Multiple parameters are joined via ``AND`` in the\nunderlying SQL statement, and the whole thing is enclosed in a ``NOT()``.\n\nThis example excludes all entries whose ``pub_date`` is later than 2005-1-3\nAND whose ``headline`` is \"Hello\"::\n\n    Entry.objects.exclude(pub_date__gt=datetime.date(2005, 1, 3), headline='Hello')\n\nIn SQL terms, that evaluates to::\n\n    SELECT ...\n    WHERE NOT (pub_date > '2005-1-3' AND headline = 'Hello')\n\nThis example excludes all entries whose ``pub_date`` is later than 2005-1-3\nOR whose headline is \"Hello\"::\n\n    Entry.objects.exclude(pub_date__gt=datetime.date(2005, 1, 3)).exclude(headline='Hello')\n\nIn SQL terms, that evaluates to::\n\n    SELECT ...\n    WHERE NOT pub_date > '2005-1-3'\n    AND NOT headline = 'Hello'\n\nNote the second example is more restrictive.\n\nannotate\n~~~~~~~~\n\n.. method:: annotate(*args, **kwargs)\n\nAnnotates each object in the ``QuerySet`` with the provided list of\naggregate values (averages, sums, etc) that have been computed over\nthe objects that are related to the objects in the ``QuerySet``.\nEach argument to ``annotate()`` is an annotation that will be added\nto each object in the ``QuerySet`` that is returned.\n\nThe aggregation functions that are provided by Django are described\nin `Aggregation Functions`_ below.\n\nAnnotations specified using keyword arguments will use the keyword as\nthe alias for the annotation. Anonymous arguments will have an alias\ngenerated for them based upon the name of the aggregate function and\nthe model field that is being aggregated.\n\nFor example, if you were manipulating a list of blogs, you may want\nto determine how many entries have been made in each blog::\n\n    >>> q = Blog.objects.annotate(Count('entry'))\n    # The name of the first blog\n    >>> q[0].name\n    'Blogasaurus'\n    # The number of entries on the first blog\n    >>> q[0].entry__count\n    42\n\nThe ``Blog`` model doesn't define an ``entry__count`` attribute by itself,\nbut by using a keyword argument to specify the aggregate function, you can\ncontrol the name of the annotation::\n\n    >>> q = Blog.objects.annotate(number_of_entries=Count('entry'))\n    # The number of entries on the first blog, using the name provided\n    >>> q[0].number_of_entries\n    42\n\nFor an in-depth discussion of aggregation, see :doc:`the topic guide on\nAggregation </topics/db/aggregation>`.\n\norder_by\n~~~~~~~~\n\n.. method:: order_by(*fields)\n\nBy default, results returned by a ``QuerySet`` are ordered by the ordering\ntuple given by the ``ordering`` option in the model's ``Meta``. You can\noverride this on a per-``QuerySet`` basis by using the ``order_by`` method.\n\nExample::\n\n    Entry.objects.filter(pub_date__year=2005).order_by('-pub_date', 'headline')\n\nThe result above will be ordered by ``pub_date`` descending, then by\n``headline`` ascending. The negative sign in front of ``\"-pub_date\"`` indicates\n*descending* order. Ascending order is implied. To order randomly, use ``\"?\"``,\nlike so::\n\n    Entry.objects.order_by('?')\n\nNote: ``order_by('?')`` queries may be expensive and slow, depending on the\ndatabase backend you're using.\n\nTo order by a field in a different model, use the same syntax as when you are\nquerying across model relations. That is, the name of the field, followed by a\ndouble underscore (``__``), followed by the name of the field in the new model,\nand so on for as many models as you want to join. For example::\n\n    Entry.objects.order_by('blog__name', 'headline')\n\nIf you try to order by a field that is a relation to another model, Django will\nuse the default ordering on the related model (or order by the related model's\nprimary key if there is no :attr:`Meta.ordering\n<django.db.models.Options.ordering>` specified. For example::\n\n    Entry.objects.order_by('blog')\n\n...is identical to::\n\n    Entry.objects.order_by('blog__id')\n\n...since the ``Blog`` model has no default ordering specified.\n\nBe cautious when ordering by fields in related models if you are also using\n:meth:`distinct()`. See the note in :meth:`distinct` for an explanation of how\nrelated model ordering can change the expected results.\n\nIt is permissible to specify a multi-valued field to order the results by (for\nexample, a :class:`~django.db.models.ManyToManyField` field). Normally\nthis won't be a sensible thing to do and it's really an advanced usage\nfeature. However, if you know that your queryset's filtering or available data\nimplies that there will only be one ordering piece of data for each of the main\nitems you are selecting, the ordering may well be exactly what you want to do.\nUse ordering on multi-valued fields with care and make sure the results are\nwhat you expect.\n\nThere's no way to specify whether ordering should be case sensitive. With\nrespect to case-sensitivity, Django will order results however your database\nbackend normally orders them.\n\nIf you don't want any ordering to be applied to a query, not even the default\nordering, call :meth:`order_by()` with no parameters.\n\nYou can tell if a query is ordered or not by checking the\n:attr:`.QuerySet.ordered` attribute, which will be ``True`` if the\n``QuerySet`` has been ordered in any way.\n\nreverse\n~~~~~~~\n\n.. method:: reverse()\n\nUse the ``reverse()`` method to reverse the order in which a queryset's\nelements are returned. Calling ``reverse()`` a second time restores the\nordering back to the normal direction.\n\nTo retrieve the ''last'' five items in a queryset, you could do this::\n\n    my_queryset.reverse()[:5]\n\nNote that this is not quite the same as slicing from the end of a sequence in\nPython. The above example will return the last item first, then the\npenultimate item and so on. If we had a Python sequence and looked at\n``seq[-5:]``, we would see the fifth-last item first. Django doesn't support\nthat mode of access (slicing from the end), because it's not possible to do it\nefficiently in SQL.\n\nAlso, note that ``reverse()`` should generally only be called on a ``QuerySet``\nwhich has a defined ordering (e.g., when querying against a model which defines\na default ordering, or when using :meth:`order_by()`). If no such ordering is\ndefined for a given ``QuerySet``, calling ``reverse()`` on it has no real\neffect (the ordering was undefined prior to calling ``reverse()``, and will\nremain undefined afterward).\n\ndistinct\n~~~~~~~~\n\n.. method:: distinct([*fields])\n\nReturns a new ``QuerySet`` that uses ``SELECT DISTINCT`` in its SQL query. This\neliminates duplicate rows from the query results.\n\nBy default, a ``QuerySet`` will not eliminate duplicate rows. In practice, this\nis rarely a problem, because simple queries such as ``Blog.objects.all()``\ndon't introduce the possibility of duplicate result rows. However, if your\nquery spans multiple tables, it's possible to get duplicate results when a\n``QuerySet`` is evaluated. That's when you'd use ``distinct()``.\n\n.. note::\n    Any fields used in an :meth:`order_by` call are included in the SQL\n    ``SELECT`` columns. This can sometimes lead to unexpected results when used\n    in conjunction with ``distinct()``. If you order by fields from a related\n    model, those fields will be added to the selected columns and they may make\n    otherwise duplicate rows appear to be distinct. Since the extra columns\n    don't appear in the returned results (they are only there to support\n    ordering), it sometimes looks like non-distinct results are being returned.\n\n    Similarly, if you use a :meth:`values()` query to restrict the columns\n    selected, the columns used in any :meth:`order_by()` (or default model\n    ordering) will still be involved and may affect uniqueness of the results.\n\n    The moral here is that if you are using ``distinct()`` be careful about\n    ordering by related models. Similarly, when using ``distinct()`` and\n    :meth:`values()` together, be careful when ordering by fields not in the\n    :meth:`values()` call.\n\n.. versionadded:: 1.4\n\nAs of Django 1.4, you can pass positional arguments (``*fields``) in order to\nspecify the names of fields to which the ``DISTINCT`` should apply. This\ntranslates to a ``SELECT DISTINCT ON`` SQL query.\n\nHere's the difference. For a normal ``distinct()`` call, the database compares\n*each* field in each row when determining which rows are distinct. For a\n``distinct()`` call with specified field names, the database will only compare\nthe specified field names.\n\n.. note::\n    This ability to specify field names is only available in PostgreSQL.\n\n.. note::\n    When you specify field names, you *must* provide an ``order_by()`` in the\n    QuerySet, and the fields in ``order_by()`` must start with the fields in\n    ``distinct()``, in the same order.\n\n    For example, ``SELECT DISTINCT ON (a)`` gives you the first row for each\n    value in column ``a``. If you don't specify an order, you'll get some\n    arbitrary row.\n\nExamples::\n\n    >>> Author.objects.distinct()\n    [...]\n\n    >>> Entry.objects.order_by('pub_date').distinct('pub_date')\n    [...]\n\n    >>> Entry.objects.order_by('blog').distinct('blog')\n    [...]\n\n    >>> Entry.objects.order_by('author', 'pub_date').distinct('author', 'pub_date')\n    [...]\n\n    >>> Entry.objects.order_by('blog__name', 'mod_date').distinct('blog__name', 'mod_date')\n    [...]\n\n    >>> Entry.objects.order_by('author', 'pub_date').distinct('author')\n    [...]\n\nvalues\n~~~~~~\n\n.. method:: values(*fields)\n\nReturns a ``ValuesQuerySet`` — a ``QuerySet`` subclass that returns\ndictionaries when used as an iterable, rather than model-instance objects.\n\nEach of those dictionaries represents an object, with the keys corresponding to\nthe attribute names of model objects.\n\nThis example compares the dictionaries of ``values()`` with the normal model\nobjects::\n\n    # This list contains a Blog object.\n    >>> Blog.objects.filter(name__startswith='Beatles')\n    [<Blog: Beatles Blog>]\n\n    # This list contains a dictionary.\n    >>> Blog.objects.filter(name__startswith='Beatles').values()\n    [{'id': 1, 'name': 'Beatles Blog', 'tagline': 'All the latest Beatles news.'}]\n\nThe ``values()`` method takes optional positional arguments, ``*fields``, which\nspecify field names to which the ``SELECT`` should be limited. If you specify\nthe fields, each dictionary will contain only the field keys/values for the\nfields you specify. If you don't specify the fields, each dictionary will\ncontain a key and value for every field in the database table.\n\nExample::\n\n    >>> Blog.objects.values()\n    [{'id': 1, 'name': 'Beatles Blog', 'tagline': 'All the latest Beatles news.'}],\n    >>> Blog.objects.values('id', 'name')\n    [{'id': 1, 'name': 'Beatles Blog'}]\n\nA few subtleties that are worth mentioning:\n\n* If you have a field called ``foo`` that is a\n  :class:`~django.db.models.ForeignKey`, the default ``values()`` call\n  will return a dictionary key called ``foo_id``, since this is the name\n  of the hidden model attribute that stores the actual value (the ``foo``\n  attribute refers to the related model). When you are calling\n  ``values()`` and passing in field names, you can pass in either ``foo``\n  or ``foo_id`` and you will get back the same thing (the dictionary key\n  will match the field name you passed in).\n\n  For example::\n\n    >>> Entry.objects.values()\n    [{'blog_id': 1, 'headline': u'First Entry', ...}, ...]\n\n    >>> Entry.objects.values('blog')\n    [{'blog': 1}, ...]\n\n    >>> Entry.objects.values('blog_id')\n    [{'blog_id': 1}, ...]\n\n* When using ``values()`` together with :meth:`distinct()`, be aware that\n  ordering can affect the results. See the note in :meth:`distinct` for\n  details.\n\n* If you use a ``values()`` clause after an :meth:`extra()` call,\n  any fields defined by a ``select`` argument in the :meth:`extra()` must\n  be explicitly included in the ``values()`` call. Any :meth:`extra()` call\n  made after a ``values()`` call will have its extra selected fields\n  ignored.\n\nA ``ValuesQuerySet`` is useful when you know you're only going to need values\nfrom a small number of the available fields and you won't need the\nfunctionality of a model instance object. It's more efficient to select only\nthe fields you need to use.\n\nFinally, note a ``ValuesQuerySet`` is a subclass of ``QuerySet``, so it has all\nmethods of ``QuerySet``. You can call ``filter()`` on it, or ``order_by()``, or\nwhatever. Yes, that means these two calls are identical::\n\n    Blog.objects.values().order_by('id')\n    Blog.objects.order_by('id').values()\n\nThe people who made Django prefer to put all the SQL-affecting methods first,\nfollowed (optionally) by any output-affecting methods (such as ``values()``),\nbut it doesn't really matter. This is your chance to really flaunt your\nindividualism.\n\nYou can also refer to fields on related models with reverse relations through\n``OneToOneField``, ``ForeignKey`` and ``ManyToManyField`` attributes::\n\n    Blog.objects.values('name', 'entry__headline')\n    [{'name': 'My blog', 'entry__headline': 'An entry'},\n         {'name': 'My blog', 'entry__headline': 'Another entry'}, ...]\n\n.. warning::\n\n   Because :class:`~django.db.models.ManyToManyField` attributes and reverse\n   relations can have multiple related rows, including these can have a\n   multiplier effect on the size of your result set. This will be especially\n   pronounced if you include multiple such fields in your ``values()`` query,\n   in which case all possible combinations will be returned.\n\nvalues_list\n~~~~~~~~~~~\n\n.. method:: values_list(*fields)\n\nThis is similar to ``values()`` except that instead of returning dictionaries,\nit returns tuples when iterated over. Each tuple contains the value from the\nrespective field passed into the ``values_list()`` call — so the first item is\nthe first field, etc. For example::\n\n    >>> Entry.objects.values_list('id', 'headline')\n    [(1, u'First entry'), ...]\n\nIf you only pass in a single field, you can also pass in the ``flat``\nparameter. If ``True``, this will mean the returned results are single values,\nrather than one-tuples. An example should make the difference clearer::\n\n    >>> Entry.objects.values_list('id').order_by('id')\n    [(1,), (2,), (3,), ...]\n\n    >>> Entry.objects.values_list('id', flat=True).order_by('id')\n    [1, 2, 3, ...]\n\nIt is an error to pass in ``flat`` when there is more than one field.\n\nIf you don't pass any values to ``values_list()``, it will return all the\nfields in the model, in the order they were declared.\n\ndates\n~~~~~\n\n.. method:: dates(field, kind, order='ASC')\n\nReturns a ``DateQuerySet`` — a ``QuerySet`` that evaluates to a list of\n``datetime.datetime`` objects representing all available dates of a particular\nkind within the contents of the ``QuerySet``.\n\n``field`` should be the name of a ``DateField`` or ``DateTimeField`` of your\nmodel.\n\n``kind`` should be either ``\"year\"``, ``\"month\"`` or ``\"day\"``. Each\n``datetime.datetime`` object in the result list is \"truncated\" to the given\n``type``.\n\n* ``\"year\"`` returns a list of all distinct year values for the field.\n* ``\"month\"`` returns a list of all distinct year/month values for the\n  field.\n* ``\"day\"`` returns a list of all distinct year/month/day values for the\n  field.\n\n``order``, which defaults to ``'ASC'``, should be either ``'ASC'`` or\n``'DESC'``. This specifies how to order the results.\n\nExamples::\n\n    >>> Entry.objects.dates('pub_date', 'year')\n    [datetime.datetime(2005, 1, 1)]\n    >>> Entry.objects.dates('pub_date', 'month')\n    [datetime.datetime(2005, 2, 1), datetime.datetime(2005, 3, 1)]\n    >>> Entry.objects.dates('pub_date', 'day')\n    [datetime.datetime(2005, 2, 20), datetime.datetime(2005, 3, 20)]\n    >>> Entry.objects.dates('pub_date', 'day', order='DESC')\n    [datetime.datetime(2005, 3, 20), datetime.datetime(2005, 2, 20)]\n    >>> Entry.objects.filter(headline__contains='Lennon').dates('pub_date', 'day')\n    [datetime.datetime(2005, 3, 20)]\n\n.. warning::\n\n    When :doc:`time zone support </topics/i18n/timezones>` is enabled, Django\n    uses UTC in the database connection, which means the aggregation is\n    performed in UTC. This is a known limitation of the current implementation.\n\nnone\n~~~~\n\n.. method:: none()\n\nReturns an ``EmptyQuerySet`` — a ``QuerySet`` subclass that always evaluates to\nan empty list. This can be used in cases where you know that you should return\nan empty result set and your caller is expecting a ``QuerySet`` object (instead\nof returning an empty list, for example.)\n\nExamples::\n\n    >>> Entry.objects.none()\n    []\n\nall\n~~~\n\n.. method:: all()\n\nReturns a *copy* of the current ``QuerySet`` (or ``QuerySet`` subclass).  This\ncan be useful in situations where you might want to pass in either a model\nmanager or a ``QuerySet`` and do further filtering on the result. After calling\n``all()`` on either object, you'll definitely have a ``QuerySet`` to work with.\n\nselect_related\n~~~~~~~~~~~~~~\n\n.. method:: select_related()\n\nReturns a ``QuerySet`` that will automatically \"follow\" foreign-key\nrelationships, selecting that additional related-object data when it executes\nits query. This is a performance booster which results in (sometimes much)\nlarger queries but means later use of foreign-key relationships won't require\ndatabase queries.\n\nThe following examples illustrate the difference between plain lookups and\n``select_related()`` lookups. Here's standard lookup::\n\n    # Hits the database.\n    e = Entry.objects.get(id=5)\n\n    # Hits the database again to get the related Blog object.\n    b = e.blog\n\nAnd here's ``select_related`` lookup::\n\n    # Hits the database.\n    e = Entry.objects.select_related().get(id=5)\n\n    # Doesn't hit the database, because e.blog has been prepopulated\n    # in the previous query.\n    b = e.blog\n\n``select_related()`` follows foreign keys as far as possible. If you have the\nfollowing models::\n\n    class City(models.Model):\n        # ...\n        pass\n\n    class Person(models.Model):\n        # ...\n        hometown = models.ForeignKey(City)\n\n    class Book(models.Model):\n        # ...\n        author = models.ForeignKey(Person)\n\n...then a call to ``Book.objects.select_related().get(id=4)`` will cache the\nrelated ``Person`` *and* the related ``City``::\n\n    b = Book.objects.select_related().get(id=4)\n    p = b.author         # Doesn't hit the database.\n    c = p.hometown       # Doesn't hit the database.\n\n    b = Book.objects.get(id=4) # No select_related() in this example.\n    p = b.author         # Hits the database.\n    c = p.hometown       # Hits the database.\n\nNote that, by default, ``select_related()`` does not follow foreign keys that\nhave ``null=True``.\n\nUsually, using ``select_related()`` can vastly improve performance because your\napp can avoid many database calls. However, there are times you are only\ninterested in specific related models, or have deeply nested sets of\nrelationships, and in these cases ``select_related()`` can be optimized by\nexplicitly passing the related field names you are interested in. Only\nthe specified relations will be followed.\n\nYou can even do this for models that are more than one relation away by\nseparating the field names with double underscores, just as for filters. For\nexample, if you have this model::\n\n    class Room(models.Model):\n        # ...\n        building = models.ForeignKey(...)\n\n    class Group(models.Model):\n        # ...\n        teacher = models.ForeignKey(...)\n        room = models.ForeignKey(Room)\n        subject = models.ForeignKey(...)\n\n...and you only needed to work with the ``room`` and ``subject`` attributes,\nyou could write this::\n\n    g = Group.objects.select_related('room', 'subject')\n\nThis is also valid::\n\n    g = Group.objects.select_related('room__building', 'subject')\n\n...and would also pull in the ``building`` relation.\n\nYou can refer to any :class:`~django.db.models.ForeignKey` or\n:class:`~django.db.models.OneToOneField` relation in the list of fields\npassed to ``select_related()``. This includes foreign keys that have\n``null=True`` (which are omitted in a no-parameter ``select_related()`` call).\nIt's an error to use both a list of fields and the ``depth`` parameter in the\nsame ``select_related()`` call; they are conflicting options.\n\nYou can also refer to the reverse direction of a\n:class:`~django.db.models.OneToOneField` in the list of fields passed to\n``select_related`` — that is, you can traverse a\n:class:`~django.db.models.OneToOneField` back to the object on which the field\nis defined. Instead of specifying the field name, use the :attr:`related_name\n<django.db.models.ForeignKey.related_name>` for the field on the related object.\n\n.. deprecated:: 1.5\n    The ``depth`` parameter to ``select_related()`` has been deprecated. You\n    should replace it with the use of the ``(*fields)`` listing specific\n    related fields instead as documented above.\n\nA depth limit of relationships to follow can also be specified::\n\n    b = Book.objects.select_related(depth=1).get(id=4)\n    p = b.author         # Doesn't hit the database.\n    c = p.hometown       # Requires a database call.\n\nA :class:`~django.db.models.OneToOneField` is not traversed in the reverse\ndirection if you are performing a depth-based ``select_related()`` call.\n\nprefetch_related\n~~~~~~~~~~~~~~~~\n\n.. method:: prefetch_related(*lookups)\n\n.. versionadded:: 1.4\n\nReturns a ``QuerySet`` that will automatically retrieve, in a single batch,\nrelated objects for each of the specified lookups.\n\nThis has a similar purpose to ``select_related``, in that both are designed to\nstop the deluge of database queries that is caused by accessing related objects,\nbut the strategy is quite different.\n\n``select_related`` works by creating a SQL join and including the fields of the\nrelated object in the SELECT statement. For this reason, ``select_related`` gets\nthe related objects in the same database query. However, to avoid the much\nlarger result set that would result from joining across a 'many' relationship,\n``select_related`` is limited to single-valued relationships - foreign key and\none-to-one.\n\n``prefetch_related``, on the other hand, does a separate lookup for each\nrelationship, and does the 'joining' in Python. This allows it to prefetch\nmany-to-many and many-to-one objects, which cannot be done using\n``select_related``, in addition to the foreign key and one-to-one relationships\nthat are supported by ``select_related``. It also supports prefetching of\n:class:`~django.contrib.contenttypes.generic.GenericRelation` and\n:class:`~django.contrib.contenttypes.generic.GenericForeignKey`.\n\nFor example, suppose you have these models::\n\n    class Topping(models.Model):\n        name = models.CharField(max_length=30)\n\n    class Pizza(models.Model):\n        name = models.CharField(max_length=50)\n        toppings = models.ManyToManyField(Topping)\n\n        def __unicode__(self):\n            return u\"%s (%s)\" % (self.name, u\", \".join([topping.name\n                                                        for topping in self.toppings.all()]))\n\nand run this code::\n\n    >>> Pizza.objects.all()\n    [u\"Hawaiian (ham, pineapple)\", u\"Seafood (prawns, smoked salmon)\"...\n\nThe problem with this code is that it will run a query on the Toppings table for\n**every** item in the Pizza ``QuerySet``.  Using ``prefetch_related``, this can\nbe reduced to two:\n\n    >>> Pizza.objects.all().prefetch_related('toppings')\n\nAll the relevant toppings will be fetched in a single query, and used to make\n``QuerySets`` that have a pre-filled cache of the relevant results. These\n``QuerySets`` are then used in the ``self.toppings.all()`` calls.\n\nThe additional queries are executed after the QuerySet has begun to be evaluated\nand the primary query has been executed. Note that the result cache of the\nprimary QuerySet and all specified related objects will then be fully loaded\ninto memory, which is often avoided in other cases - even after a query has been\nexecuted in the database, QuerySet normally tries to make uses of chunking\nbetween the database to avoid loading all objects into memory before you need\nthem.\n\nAlso remember that, as always with QuerySets, any subsequent chained methods\nwhich imply a different database query will ignore previously cached results,\nand retrieve data using a fresh database query. So, if you write the following:\n\n    >>> pizzas = Pizza.objects.prefetch_related('toppings')\n    >>> [list(pizza.toppings.filter(spicy=True)) for pizza in pizzas]\n\n...then the fact that ``pizza.toppings.all()`` has been prefetched will not help\nyou - in fact it hurts performance, since you have done a database query that\nyou haven't used. So use this feature with caution!\n\nYou can also use the normal join syntax to do related fields of related\nfields. Suppose we have an additional model to the example above::\n\n    class Restaurant(models.Model):\n        pizzas = models.ManyToMany(Pizza, related_name='restaurants')\n        best_pizza = models.ForeignKey(Pizza, related_name='championed_by')\n\nThe following are all legal:\n\n    >>> Restaurant.objects.prefetch_related('pizzas__toppings')\n\nThis will prefetch all pizzas belonging to restaurants, and all toppings\nbelonging to those pizzas. This will result in a total of 3 database queries -\none for the restaurants, one for the pizzas, and one for the toppings.\n\n    >>> Restaurant.objects.prefetch_related('best_pizza__toppings')\n\nThis will fetch the best pizza and all the toppings for the best pizza for each\nrestaurant. This will be done in 3 database queries - one for the restaurants,\none for the 'best pizzas', and one for one for the toppings.\n\nOf course, the ``best_pizza`` relationship could also be fetched using\n``select_related`` to reduce the query count to 2:\n\n    >>> Restaurant.objects.select_related('best_pizza').prefetch_related('best_pizza__toppings')\n\nSince the prefetch is executed after the main query (which includes the joins\nneeded by ``select_related``), it is able to detect that the ``best_pizza``\nobjects have already been fetched, and it will skip fetching them again.\n\nChaining ``prefetch_related`` calls will accumulate the lookups that are\nprefetched. To clear any ``prefetch_related`` behavior, pass `None` as a\nparameter::\n\n   >>> non_prefetched = qs.prefetch_related(None)\n\nOne difference to note when using ``prefetch_related`` is that objects created\nby a query can be shared between the different objects that they are related to\ni.e. a single Python model instance can appear at more than one point in the\ntree of objects that are returned. This will normally happen with foreign key\nrelationships. Typically this behavior will not be a problem, and will in fact\nsave both memory and CPU time.\n\nWhile ``prefetch_related`` supports prefetching ``GenericForeignKey``\nrelationships, the number of queries will depend on the data. Since a\n``GenericForeignKey`` can reference data in multiple tables, one query per table\nreferenced is needed, rather than one query for all the items. There could be\nadditional queries on the ``ContentType`` table if the relevant rows have not\nalready been fetched.\n\n``prefetch_related`` in most cases will be implemented using a SQL query that\nuses the 'IN' operator. This means that for a large QuerySet a large 'IN' clause\ncould be generated, which, depending on the database, might have performance\nproblems of its own when it comes to parsing or executing the SQL query. Always\nprofile for your use case!\n\nNote that if you use ``iterator()`` to run the query, ``prefetch_related()``\ncalls will be ignored since these two optimizations do not make sense together.\n\nextra\n~~~~~\n\n.. method:: extra(select=None, where=None, params=None, tables=None, order_by=None, select_params=None)\n\nSometimes, the Django query syntax by itself can't easily express a complex\n``WHERE`` clause. For these edge cases, Django provides the ``extra()``\n``QuerySet`` modifier — a hook for injecting specific clauses into the SQL\ngenerated by a ``QuerySet``.\n\nBy definition, these extra lookups may not be portable to different database\nengines (because you're explicitly writing SQL code) and violate the DRY\nprinciple, so you should avoid them if possible.\n\nSpecify one or more of ``params``, ``select``, ``where`` or ``tables``. None\nof the arguments is required, but you should use at least one of them.\n\n* ``select``\n\n  The ``select`` argument lets you put extra fields in the ``SELECT``\n  clause.  It should be a dictionary mapping attribute names to SQL\n  clauses to use to calculate that attribute.\n\n  Example::\n\n      Entry.objects.extra(select={'is_recent': \"pub_date > '2006-01-01'\"})\n\n  As a result, each ``Entry`` object will have an extra attribute,\n  ``is_recent``, a boolean representing whether the entry's ``pub_date``\n  is greater than Jan. 1, 2006.\n\n  Django inserts the given SQL snippet directly into the ``SELECT``\n  statement, so the resulting SQL of the above example would be something\n  like::\n\n      SELECT blog_entry.*, (pub_date > '2006-01-01') AS is_recent\n      FROM blog_entry;\n\n\n  The next example is more advanced; it does a subquery to give each\n  resulting ``Blog`` object an ``entry_count`` attribute, an integer count\n  of associated ``Entry`` objects::\n\n      Blog.objects.extra(\n          select={\n              'entry_count': 'SELECT COUNT(*) FROM blog_entry WHERE blog_entry.blog_id = blog_blog.id'\n          },\n      )\n\n  In this particular case, we're exploiting the fact that the query will\n  already contain the ``blog_blog`` table in its ``FROM`` clause.\n\n  The resulting SQL of the above example would be::\n\n      SELECT blog_blog.*, (SELECT COUNT(*) FROM blog_entry WHERE blog_entry.blog_id = blog_blog.id) AS entry_count\n      FROM blog_blog;\n\n  Note that the parentheses required by most database engines around\n  subqueries are not required in Django's ``select`` clauses. Also note\n  that some database backends, such as some MySQL versions, don't support\n  subqueries.\n\n  In some rare cases, you might wish to pass parameters to the SQL\n  fragments in ``extra(select=...)``. For this purpose, use the\n  ``select_params`` parameter. Since ``select_params`` is a sequence and\n  the ``select`` attribute is a dictionary, some care is required so that\n  the parameters are matched up correctly with the extra select pieces.\n  In this situation, you should use a\n  :class:`django.utils.datastructures.SortedDict` for the ``select``\n  value, not just a normal Python dictionary.\n\n  This will work, for example::\n\n      Blog.objects.extra(\n          select=SortedDict([('a', '%s'), ('b', '%s')]),\n          select_params=('one', 'two'))\n\n  The only thing to be careful about when using select parameters in\n  ``extra()`` is to avoid using the substring ``\"%%s\"`` (that's *two*\n  percent characters before the ``s``) in the select strings. Django's\n  tracking of parameters looks for ``%s`` and an escaped ``%`` character\n  like this isn't detected. That will lead to incorrect results.\n\n* ``where`` / ``tables``\n\n  You can define explicit SQL ``WHERE`` clauses — perhaps to perform\n  non-explicit joins — by using ``where``. You can manually add tables to\n  the SQL ``FROM`` clause by using ``tables``.\n\n  ``where`` and ``tables`` both take a list of strings. All ``where``\n  parameters are \"AND\"ed to any other search criteria.\n\n  Example::\n\n      Entry.objects.extra(where=[\"foo='a' OR bar = 'a'\", \"baz = 'a'\"])\n\n  ...translates (roughly) into the following SQL::\n\n      SELECT * FROM blog_entry WHERE (foo='a' OR bar='a') AND (baz='a')\n\n  Be careful when using the ``tables`` parameter if you're specifying\n  tables that are already used in the query. When you add extra tables\n  via the ``tables`` parameter, Django assumes you want that table\n  included an extra time, if it is already included. That creates a\n  problem, since the table name will then be given an alias. If a table\n  appears multiple times in an SQL statement, the second and subsequent\n  occurrences must use aliases so the database can tell them apart. If\n  you're referring to the extra table you added in the extra ``where``\n  parameter this is going to cause errors.\n\n  Normally you'll only be adding extra tables that don't already appear\n  in the query. However, if the case outlined above does occur, there are\n  a few solutions. First, see if you can get by without including the\n  extra table and use the one already in the query. If that isn't\n  possible, put your ``extra()`` call at the front of the queryset\n  construction so that your table is the first use of that table.\n  Finally, if all else fails, look at the query produced and rewrite your\n  ``where`` addition to use the alias given to your extra table. The\n  alias will be the same each time you construct the queryset in the same\n  way, so you can rely upon the alias name to not change.\n\n* ``order_by``\n\n  If you need to order the resulting queryset using some of the new\n  fields or tables you have included via ``extra()`` use the ``order_by``\n  parameter to ``extra()`` and pass in a sequence of strings. These\n  strings should either be model fields (as in the normal\n  :meth:`order_by()` method on querysets), of the form\n  ``table_name.column_name`` or an alias for a column that you specified\n  in the ``select`` parameter to ``extra()``.\n\n  For example::\n\n      q = Entry.objects.extra(select={'is_recent': \"pub_date > '2006-01-01'\"})\n      q = q.extra(order_by = ['-is_recent'])\n\n  This would sort all the items for which ``is_recent`` is true to the\n  front of the result set (``True`` sorts before ``False`` in a\n  descending ordering).\n\n  This shows, by the way, that you can make multiple calls to ``extra()``\n  and it will behave as you expect (adding new constraints each time).\n\n* ``params``\n\n  The ``where`` parameter described above may use standard Python\n  database string placeholders — ``'%s'`` to indicate parameters the\n  database engine should automatically quote. The ``params`` argument is\n  a list of any extra parameters to be substituted.\n\n  Example::\n\n      Entry.objects.extra(where=['headline=%s'], params=['Lennon'])\n\n  Always use ``params`` instead of embedding values directly into\n  ``where`` because ``params`` will ensure values are quoted correctly\n  according to your particular backend. For example, quotes will be\n  escaped correctly.\n\n  Bad::\n\n      Entry.objects.extra(where=[\"headline='Lennon'\"])\n\n  Good::\n\n      Entry.objects.extra(where=['headline=%s'], params=['Lennon'])\n\ndefer\n~~~~~\n\n.. method:: defer(*fields)\n\nIn some complex data-modeling situations, your models might contain a lot of\nfields, some of which could contain a lot of data (for example, text fields),\nor require expensive processing to convert them to Python objects. If you are\nusing the results of a queryset in some situation where you don't know\nif you need those particular fields when you initially fetch the data, you can\ntell Django not to retrieve them from the database.\n\nThis is done by passing the names of the fields to not load to ``defer()``::\n\n    Entry.objects.defer(\"headline\", \"body\")\n\nA queryset that has deferred fields will still return model instances. Each\ndeferred field will be retrieved from the database if you access that field\n(one at a time, not all the deferred fields at once).\n\nYou can make multiple calls to ``defer()``. Each call adds new fields to the\ndeferred set::\n\n    # Defers both the body and headline fields.\n    Entry.objects.defer(\"body\").filter(rating=5).defer(\"headline\")\n\nThe order in which fields are added to the deferred set does not matter.\nCalling ``defer()`` with a field name that has already been deferred is\nharmless (the field will still be deferred).\n\nYou can defer loading of fields in related models (if the related models are\nloading via :meth:`select_related()`) by using the standard double-underscore\nnotation to separate related fields::\n\n    Blog.objects.select_related().defer(\"entry__headline\", \"entry__body\")\n\nIf you want to clear the set of deferred fields, pass ``None`` as a parameter\nto ``defer()``::\n\n    # Load all fields immediately.\n    my_queryset.defer(None)\n\n.. versionchanged:: 1.5\n\nSome fields in a model won't be deferred, even if you ask for them. You can\nnever defer the loading of the primary key. If you are using\n:meth:`select_related()` to retrieve related models, you shouldn't defer the\nloading of the field that connects from the primary model to the related\none, doing so will result in an error.\n\n.. note::\n\n    The ``defer()`` method (and its cousin, :meth:`only()`, below) are only for\n    advanced use-cases. They provide an optimization for when you have analyzed\n    your queries closely and understand *exactly* what information you need and\n    have measured that the difference between returning the fields you need and\n    the full set of fields for the model will be significant.\n\n    Even if you think you are in the advanced use-case situation, **only use\n    defer() when you cannot, at queryset load time, determine if you will need\n    the extra fields or not**. If you are frequently loading and using a\n    particular subset of your data, the best choice you can make is to\n    normalize your models and put the non-loaded data into a separate model\n    (and database table). If the columns *must* stay in the one table for some\n    reason, create a model with ``Meta.managed = False`` (see the\n    :attr:`managed attribute <django.db.models.Options.managed>` documentation)\n    containing just the fields you normally need to load and use that where you\n    might otherwise call ``defer()``. This makes your code more explicit to the\n    reader, is slightly faster and consumes a little less memory in the Python\n    process.\n\n.. versionchanged:: 1.5\n\n.. note::\n\n    When calling :meth:`~django.db.models.Model.save()` for instances with\n    deferred fields, only the loaded fields will be saved. See\n    :meth:`~django.db.models.Model.save()` for more details.\n\n\nonly\n~~~~\n\n.. method:: only(*fields)\n\nThe ``only()`` method is more or less the opposite of :meth:`defer()`. You call\nit with the fields that should *not* be deferred when retrieving a model.  If\nyou have a model where almost all the fields need to be deferred, using\n``only()`` to specify the complementary set of fields can result in simpler\ncode.\n\nSuppose you have a model with fields ``name``, ``age`` and ``biography``. The\nfollowing two querysets are the same, in terms of deferred fields::\n\n    Person.objects.defer(\"age\", \"biography\")\n    Person.objects.only(\"name\")\n\nWhenever you call ``only()`` it *replaces* the set of fields to load\nimmediately. The method's name is mnemonic: **only** those fields are loaded\nimmediately; the remainder are deferred. Thus, successive calls to ``only()``\nresult in only the final fields being considered::\n\n    # This will defer all fields except the headline.\n    Entry.objects.only(\"body\", \"rating\").only(\"headline\")\n\nSince ``defer()`` acts incrementally (adding fields to the deferred list), you\ncan combine calls to ``only()`` and ``defer()`` and things will behave\nlogically::\n\n    # Final result is that everything except \"headline\" is deferred.\n    Entry.objects.only(\"headline\", \"body\").defer(\"body\")\n\n    # Final result loads headline and body immediately (only() replaces any\n    # existing set of fields).\n    Entry.objects.defer(\"body\").only(\"headline\", \"body\")\n\n.. versionchanged:: 1.5\n\nAll of the cautions in the note for the :meth:`defer` documentation apply to\n``only()`` as well. Use it cautiously and only after exhausting your other\noptions. Also note that using :meth:`only` and omitting a field requested\nusing :meth:`select_related` is an error as well.\n\n.. versionchanged:: 1.5\n\n.. note::\n\n    When calling :meth:`~django.db.models.Model.save()` for instances with\n    deferred fields, only the loaded fields will be saved. See\n    :meth:`~django.db.models.Model.save()` for more details.\n\nusing\n~~~~~\n\n.. method:: using(alias)\n\nThis method is for controlling which database the ``QuerySet`` will be\nevaluated against if you are using more than one database.  The only argument\nthis method takes is the alias of a database, as defined in\n:setting:`DATABASES`.\n\nFor example::\n\n    # queries the database with the 'default' alias.\n    >>> Entry.objects.all()\n\n    # queries the database with the 'backup' alias\n    >>> Entry.objects.using('backup')\n\nselect_for_update\n~~~~~~~~~~~~~~~~~\n\n.. method:: select_for_update(nowait=False)\n\n.. versionadded:: 1.4\n\nReturns a queryset that will lock rows until the end of the transaction,\ngenerating a ``SELECT ... FOR UPDATE`` SQL statement on supported databases.\n\nFor example::\n\n    entries = Entry.objects.select_for_update().filter(author=request.user)\n\nAll matched entries will be locked until the end of the transaction block,\nmeaning that other transactions will be prevented from changing or acquiring\nlocks on them.\n\nUsually, if another transaction has already acquired a lock on one of the\nselected rows, the query will block until the lock is released. If this is\nnot the behavior you want, call ``select_for_update(nowait=True)``. This will\nmake the call non-blocking. If a conflicting lock is already acquired by\nanother transaction, :exc:`~django.db.DatabaseError` will be raised when the\nqueryset is evaluated.\n\nNote that using ``select_for_update()`` will cause the current transaction to be\nconsidered dirty, if under transaction management. This is to ensure that\nDjango issues a ``COMMIT`` or ``ROLLBACK``, releasing any locks held by the\n``SELECT FOR UPDATE``.\n\nCurrently, the ``postgresql_psycopg2``, ``oracle``, and ``mysql`` database\nbackends support ``select_for_update()``. However, MySQL has no support for the\n``nowait`` argument. Obviously, users of external third-party backends should\ncheck with their backend's documentation for specifics in those cases.\n\nPassing ``nowait=True`` to ``select_for_update`` using database backends that\ndo not support ``nowait``, such as MySQL, will cause a\n:exc:`~django.db.DatabaseError` to be raised. This is in order to prevent code\nunexpectedly blocking.\n\nUsing ``select_for_update`` on backends which do not support\n``SELECT ... FOR UPDATE`` (such as SQLite) will have no effect.\n\nMethods that do not return QuerySets\n------------------------------------\n\nThe following ``QuerySet`` methods evaluate the ``QuerySet`` and return\nsomething *other than* a ``QuerySet``.\n\nThese methods do not use a cache (see :ref:`caching-and-querysets`). Rather,\nthey query the database each time they're called.\n\nget\n~~~\n\n.. method:: get(**kwargs)\n\nReturns the object matching the given lookup parameters, which should be in\nthe format described in `Field lookups`_.\n\n``get()`` raises :exc:`~django.core.exceptions.MultipleObjectsReturned` if more\nthan one object was found. The\n:exc:`~django.core.exceptions.MultipleObjectsReturned` exception is an\nattribute of the model class.\n\n``get()`` raises a :exc:`~django.core.exceptions.DoesNotExist` exception if an\nobject wasn't found for the given parameters. This exception is also an\nattribute of the model class. Example::\n\n    Entry.objects.get(id='foo') # raises Entry.DoesNotExist\n\nThe :exc:`~django.core.exceptions.DoesNotExist` exception inherits from\n:exc:`django.core.exceptions.ObjectDoesNotExist`, so you can target multiple\n:exc:`~django.core.exceptions.DoesNotExist` exceptions. Example::\n\n    from django.core.exceptions import ObjectDoesNotExist\n    try:\n        e = Entry.objects.get(id=3)\n        b = Blog.objects.get(id=1)\n    except ObjectDoesNotExist:\n        print(\"Either the entry or blog doesn't exist.\")\n\ncreate\n~~~~~~\n\n.. method:: create(**kwargs)\n\nA convenience method for creating an object and saving it all in one step.  Thus::\n\n    p = Person.objects.create(first_name=\"Bruce\", last_name=\"Springsteen\")\n\nand::\n\n    p = Person(first_name=\"Bruce\", last_name=\"Springsteen\")\n    p.save(force_insert=True)\n\nare equivalent.\n\nThe :ref:`force_insert <ref-models-force-insert>` parameter is documented\nelsewhere, but all it means is that a new object will always be created.\nNormally you won't need to worry about this. However, if your model contains a\nmanual primary key value that you set and if that value already exists in the\ndatabase, a call to ``create()`` will fail with an\n:exc:`~django.db.IntegrityError` since primary keys must be unique. Be\nprepared to handle the exception if you are using manual primary keys.\n\nget_or_create\n~~~~~~~~~~~~~\n\n.. method:: get_or_create(**kwargs)\n\nA convenience method for looking up an object with the given kwargs, creating\none if necessary.\n\nReturns a tuple of ``(object, created)``, where ``object`` is the retrieved or\ncreated object and ``created`` is a boolean specifying whether a new object was\ncreated.\n\nThis is meant as a shortcut to boilerplatish code and is mostly useful for\ndata-import scripts. For example::\n\n    try:\n        obj = Person.objects.get(first_name='John', last_name='Lennon')\n    except Person.DoesNotExist:\n        obj = Person(first_name='John', last_name='Lennon', birthday=date(1940, 10, 9))\n        obj.save()\n\nThis pattern gets quite unwieldy as the number of fields in a model goes up.\nThe above example can be rewritten using ``get_or_create()`` like so::\n\n    obj, created = Person.objects.get_or_create(first_name='John', last_name='Lennon',\n                      defaults={'birthday': date(1940, 10, 9)})\n\nAny keyword arguments passed to ``get_or_create()`` — *except* an optional one\ncalled ``defaults`` — will be used in a :meth:`get()` call. If an object is\nfound, ``get_or_create()`` returns a tuple of that object and ``False``. If\nmultiple objects are found, ``get_or_create`` raises\n:exc:`~django.core.exceptions.MultipleObjectsReturned`. If an object is *not*\nfound, ``get_or_create()`` will instantiate and save a new object, returning a\ntuple of the new object and ``True``. The new object will be created roughly\naccording to this algorithm::\n\n    defaults = kwargs.pop('defaults', {})\n    params = dict([(k, v) for k, v in kwargs.items() if '__' not in k])\n    params.update(defaults)\n    obj = self.model(**params)\n    obj.save()\n\nIn English, that means start with any non-``'defaults'`` keyword argument that\ndoesn't contain a double underscore (which would indicate a non-exact lookup).\nThen add the contents of ``defaults``, overriding any keys if necessary, and\nuse the result as the keyword arguments to the model class. As hinted at\nabove, this is a simplification of the algorithm that is used, but it contains\nall the pertinent details. The internal implementation has some more\nerror-checking than this and handles some extra edge-conditions; if you're\ninterested, read the code.\n\nIf you have a field named ``defaults`` and want to use it as an exact lookup in\n``get_or_create()``, just use ``'defaults__exact'``, like so::\n\n    Foo.objects.get_or_create(defaults__exact='bar', defaults={'defaults': 'baz'})\n\nThe ``get_or_create()`` method has similar error behavior to :meth:`create()`\nwhen you're using manually specified primary keys. If an object needs to be\ncreated and the key already exists in the database, an\n:exc:`~django.db.IntegrityError` will be raised.\n\nFinally, a word on using ``get_or_create()`` in Django views. As mentioned\nearlier, ``get_or_create()`` is mostly useful in scripts that need to parse\ndata and create new records if existing ones aren't available. But if you need\nto use ``get_or_create()`` in a view, please make sure to use it only in\n``POST`` requests unless you have a good reason not to. ``GET`` requests\nshouldn't have any effect on data; use ``POST`` whenever a request to a page\nhas a side effect on your data. For more, see `Safe methods`_ in the HTTP spec.\n\n.. _Safe methods: http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.1.1\n\nbulk_create\n~~~~~~~~~~~\n\n.. method:: bulk_create(objs, batch_size=None)\n\n.. versionadded:: 1.4\n\nThis method inserts the provided list of objects into the database in an\nefficient manner (generally only 1 query, no matter how many objects there\nare)::\n\n    >>> Entry.objects.bulk_create([\n    ...     Entry(headline=\"Django 1.0 Released\"),\n    ...     Entry(headline=\"Django 1.1 Announced\"),\n    ...     Entry(headline=\"Breaking: Django is awesome\")\n    ... ])\n\nThis has a number of caveats though:\n\n* The model's ``save()`` method will not be called, and the ``pre_save`` and\n  ``post_save`` signals will not be sent.\n* It does not work with child models in a multi-table inheritance scenario.\n* If the model's primary key is an :class:`~django.db.models.AutoField` it\n  does not retrieve and set the primary key attribute, as ``save()`` does.\n\nThe ``batch_size`` parameter controls how many objects are created in single\nquery. The default is to create all objects in one batch, except for SQLite\nwhere the default is such that at maximum 999 variables per query is used.\n\n.. versionadded:: 1.5\n    The ``batch_size`` parameter was added in version 1.5.\n\ncount\n~~~~~\n\n.. method:: count()\n\nReturns an integer representing the number of objects in the database matching\nthe ``QuerySet``. The ``count()`` method never raises exceptions.\n\nExample::\n\n    # Returns the total number of entries in the database.\n    Entry.objects.count()\n\n    # Returns the number of entries whose headline contains 'Lennon'\n    Entry.objects.filter(headline__contains='Lennon').count()\n\nA ``count()`` call performs a ``SELECT COUNT(*)`` behind the scenes, so you\nshould always use ``count()`` rather than loading all of the record into Python\nobjects and calling ``len()`` on the result (unless you need to load the\nobjects into memory anyway, in which case ``len()`` will be faster).\n\nDepending on which database you're using (e.g. PostgreSQL vs. MySQL),\n``count()`` may return a long integer instead of a normal Python integer. This\nis an underlying implementation quirk that shouldn't pose any real-world\nproblems.\n\nin_bulk\n~~~~~~~\n\n.. method:: in_bulk(id_list)\n\nTakes a list of primary-key values and returns a dictionary mapping each\nprimary-key value to an instance of the object with the given ID.\n\nExample::\n\n    >>> Blog.objects.in_bulk([1])\n    {1: <Blog: Beatles Blog>}\n    >>> Blog.objects.in_bulk([1, 2])\n    {1: <Blog: Beatles Blog>, 2: <Blog: Cheddar Talk>}\n    >>> Blog.objects.in_bulk([])\n    {}\n\nIf you pass ``in_bulk()`` an empty list, you'll get an empty dictionary.\n\niterator\n~~~~~~~~\n\n.. method:: iterator()\n\nEvaluates the ``QuerySet`` (by performing the query) and returns an iterator\n(see :pep:`234`) over the results. A ``QuerySet`` typically caches its results\ninternally so that repeated evaluations do not result in additional queries. In\ncontrast, ``iterator()`` will read results directly, without doing any caching\nat the ``QuerySet`` level (internally, the default iterator calls ``iterator()``\nand caches the return value). For a ``QuerySet`` which returns a large number of\nobjects that you only need to access once, this can results in better\nperformance and a significant reduction in memory.\n\nNote that using ``iterator()`` on a ``QuerySet`` which has already been\nevaluated will force it to evaluate again, repeating the query.\n\nAlso, use of ``iterator()`` causes previous ``prefetch_related()`` calls to be\nignored since these two optimizations do not make sense together.\n\n.. warning::\n\n    Some Python database drivers like ``psycopg2`` perform caching if using\n    client side cursors (instantiated with ``connection.cursor()`` and what\n    Django's ORM uses). Using ``iterator()`` does not affect caching at the\n    database driver level. To disable this caching, look at `server side\n    cursors`_.\n\n.. _server side cursors: http://initd.org/psycopg/docs/usage.html#server-side-cursors\n\nlatest\n~~~~~~\n\n.. method:: latest(field_name=None)\n\nReturns the latest object in the table, by date, using the ``field_name``\nprovided as the date field.\n\nThis example returns the latest ``Entry`` in the table, according to the\n``pub_date`` field::\n\n    Entry.objects.latest('pub_date')\n\nIf your model's :ref:`Meta <meta-options>` specifies\n:attr:`~django.db.models.Options.get_latest_by`, you can leave off the\n``field_name`` argument to ``latest()``. Django will use the field specified\nin :attr:`~django.db.models.Options.get_latest_by` by default.\n\nLike :meth:`get()`, ``latest()`` raises\n:exc:`~django.core.exceptions.DoesNotExist` if there is no object with the given\nparameters.\n\nNote ``latest()`` exists purely for convenience and readability.\n\naggregate\n~~~~~~~~~\n\n.. method:: aggregate(*args, **kwargs)\n\nReturns a dictionary of aggregate values (averages, sums, etc) calculated over\nthe ``QuerySet``. Each argument to ``aggregate()`` specifies a value that will\nbe included in the dictionary that is returned.\n\nThe aggregation functions that are provided by Django are described in\n`Aggregation Functions`_ below.\n\nAggregates specified using keyword arguments will use the keyword as the name\nfor the annotation. Anonymous arguments will have a name generated for them\nbased upon the name of the aggregate function and the model field that is being\naggregated.\n\nFor example, when you are working with blog entries, you may want to know the\nnumber of authors that have contributed blog entries::\n\n    >>> q = Blog.objects.aggregate(Count('entry'))\n    {'entry__count': 16}\n\nBy using a keyword argument to specify the aggregate function, you can\ncontrol the name of the aggregation value that is returned::\n\n    >>> q = Blog.objects.aggregate(number_of_entries=Count('entry'))\n    {'number_of_entries': 16}\n\nFor an in-depth discussion of aggregation, see :doc:`the topic guide on\nAggregation </topics/db/aggregation>`.\n\nexists\n~~~~~~\n\n.. method:: exists()\n\nReturns ``True`` if the :class:`.QuerySet` contains any results, and ``False``\nif not. This tries to perform the query in the simplest and fastest way\npossible, but it *does* execute nearly the same query as a normal\n:class:`.QuerySet` query.\n\n:meth:`~.QuerySet.exists` is useful for searches relating to both\nobject membership in a :class:`.QuerySet` and to the existence of any objects in\na :class:`.QuerySet`, particularly in the context of a large :class:`.QuerySet`.\n\nThe most efficient method of finding whether a model with a unique field\n(e.g. ``primary_key``) is a member of a :class:`.QuerySet` is::\n\n    entry = Entry.objects.get(pk=123)\n    if some_query_set.filter(pk=entry.pk).exists():\n        print(\"Entry contained in queryset\")\n\nWhich will be faster than the following which requires evaluating and iterating\nthrough the entire queryset::\n\n    if entry in some_query_set:\n       print(\"Entry contained in QuerySet\")\n\nAnd to find whether a queryset contains any items::\n\n    if some_query_set.exists():\n        print(\"There is at least one object in some_query_set\")\n\nWhich will be faster than::\n\n    if some_query_set:\n        print(\"There is at least one object in some_query_set\")\n\n... but not by a large degree (hence needing a large queryset for efficiency\ngains).\n\nAdditionally, if a ``some_query_set`` has not yet been evaluated, but you know\nthat it will be at some point, then using ``some_query_set.exists()`` will do\nmore overall work (one query for the existence check plus an extra one to later\nretrieve the results) than simply using ``bool(some_query_set)``, which\nretrieves the results and then checks if any were returned.\n\nupdate\n~~~~~~\n\n.. method:: update(**kwargs)\n\nPerforms an SQL update query for the specified fields, and returns\nthe number of rows matched (which may not be equal to the number of rows\nupdated if some rows already have the new value).\n\nFor example, to turn comments off for all blog entries published in 2010,\nyou could do this::\n\n    >>> Entry.objects.filter(pub_date__year=2010).update(comments_on=False)\n\n(This assumes your ``Entry`` model has fields ``pub_date`` and ``comments_on``.)\n\nYou can update multiple fields — there's no limit on how many. For example,\nhere we update the ``comments_on`` and ``headline`` fields::\n\n    >>> Entry.objects.filter(pub_date__year=2010).update(comments_on=False, headline='This is old')\n\nThe ``update()`` method is applied instantly, and the only restriction on the\n:class:`.QuerySet` that is updated is that it can only update columns in the\nmodel's main table, not on related models. You can't do this, for example::\n\n    >>> Entry.objects.update(blog__name='foo') # Won't work!\n\nFiltering based on related fields is still possible, though::\n\n    >>> Entry.objects.filter(blog__id=1).update(comments_on=True)\n\nYou cannot call ``update()`` on a :class:`.QuerySet` that has had a slice taken\nor can otherwise no longer be filtered.\n\nThe ``update()`` method returns the number of affected rows::\n\n    >>> Entry.objects.filter(id=64).update(comments_on=True)\n    1\n\n    >>> Entry.objects.filter(slug='nonexistent-slug').update(comments_on=True)\n    0\n\n    >>> Entry.objects.filter(pub_date__year=2010).update(comments_on=False)\n    132\n\nIf you're just updating a record and don't need to do anything with the model\nobject, the most efficient approach is to call ``update()``, rather than\nloading the model object into memory. For example, instead of doing this::\n\n    e = Entry.objects.get(id=10)\n    e.comments_on = False\n    e.save()\n\n...do this::\n\n    Entry.objects.filter(id=10).update(comments_on=False)\n\nUsing ``update()`` also prevents a race condition wherein something might\nchange in your database in the short period of time between loading the object\nand calling ``save()``.\n\nFinally, realize that ``update()`` does an update at the SQL level and, thus,\ndoes not call any ``save()`` methods on your models, nor does it emit the\n:attr:`~django.db.models.signals.pre_save` or\n:attr:`~django.db.models.signals.post_save` signals (which are a consequence of\ncalling :meth:`Model.save() <django.db.models.Model.save>`). If you want to\nupdate a bunch of records for a model that has a custom\n:meth:`~django.db.models.Model.save()` method, loop over them and call\n:meth:`~django.db.models.Model.save()`, like this::\n\n    for e in Entry.objects.filter(pub_date__year=2010):\n        e.comments_on = False\n        e.save()\n\ndelete\n~~~~~~\n\n.. method:: delete()\n\nPerforms an SQL delete query on all rows in the :class:`.QuerySet`. The\n``delete()`` is applied instantly. You cannot call ``delete()`` on a\n:class:`.QuerySet` that has had a slice taken or can otherwise no longer be\nfiltered.\n\nFor example, to delete all the entries in a particular blog::\n\n    >>> b = Blog.objects.get(pk=1)\n\n    # Delete all the entries belonging to this Blog.\n    >>> Entry.objects.filter(blog=b).delete()\n\nBy default, Django's :class:`~django.db.models.ForeignKey` emulates the SQL\nconstraint ``ON DELETE CASCADE`` — in other words, any objects with foreign\nkeys pointing at the objects to be deleted will be deleted along with them.\nFor example::\n\n    blogs = Blog.objects.all()\n    # This will delete all Blogs and all of their Entry objects.\n    blogs.delete()\n\nThis cascade behavior is customizable via the\n:attr:`~django.db.models.ForeignKey.on_delete` argument to the\n:class:`~django.db.models.ForeignKey`.\n\nThe ``delete()`` method does a bulk delete and does not call any ``delete()``\nmethods on your models. It does, however, emit the\n:data:`~django.db.models.signals.pre_delete` and\n:data:`~django.db.models.signals.post_delete` signals for all deleted objects\n(including cascaded deletions).\n\n.. versionadded:: 1.5\n    Allow fast-path deletion of objects\n\nDjango needs to fetch objects into memory to send signals and handle cascades.\nHowever, if there are no cascades and no signals, then Django may take a\nfast-path and delete objects without fetching into memory. For large\ndeletes this can result in significantly reduced memory usage. The amount of\nexecuted queries can be reduced, too.\n\nForeignKeys which are set to :attr:`~django.db.models.ForeignKey.on_delete`\nDO_NOTHING do not prevent taking the fast-path in deletion.\n\nNote that the queries generated in object deletion is an implementation\ndetail subject to change.\n\n.. _field-lookups:\n\nField lookups\n-------------\n\nField lookups are how you specify the meat of an SQL ``WHERE`` clause. They're\nspecified as keyword arguments to the ``QuerySet`` methods :meth:`filter()`,\n:meth:`exclude()` and :meth:`get()`.\n\nFor an introduction, see :ref:`models and database queries documentation\n<field-lookups-intro>`.\n\n.. fieldlookup:: exact\n\nexact\n~~~~~\n\nExact match. If the value provided for comparison is ``None``, it will be\ninterpreted as an SQL ``NULL`` (see :lookup:`isnull` for more details).\n\nExamples::\n\n    Entry.objects.get(id__exact=14)\n    Entry.objects.get(id__exact=None)\n\nSQL equivalents::\n\n    SELECT ... WHERE id = 14;\n    SELECT ... WHERE id IS NULL;\n\n.. admonition:: MySQL comparisons\n\n    In MySQL, a database table's \"collation\" setting determines whether\n    ``exact`` comparisons are case-sensitive. This is a database setting, *not*\n    a Django setting. It's possible to configure your MySQL tables to use\n    case-sensitive comparisons, but some trade-offs are involved. For more\n    information about this, see the :ref:`collation section <mysql-collation>`\n    in the :doc:`databases </ref/databases>` documentation.\n\n.. fieldlookup:: iexact\n\niexact\n~~~~~~\n\nCase-insensitive exact match.\n\nExample::\n\n    Blog.objects.get(name__iexact='beatles blog')\n\nSQL equivalent::\n\n    SELECT ... WHERE name ILIKE 'beatles blog';\n\nNote this will match ``'Beatles Blog'``, ``'beatles blog'``, ``'BeAtLes\nBLoG'``, etc.\n\n.. admonition:: SQLite users\n\n    When using the SQLite backend and Unicode (non-ASCII) strings, bear in\n    mind the :ref:`database note <sqlite-string-matching>` about string\n    comparisons. SQLite does not do case-insensitive matching for Unicode\n    strings.\n\n.. fieldlookup:: contains\n\ncontains\n~~~~~~~~\n\nCase-sensitive containment test.\n\nExample::\n\n    Entry.objects.get(headline__contains='Lennon')\n\nSQL equivalent::\n\n    SELECT ... WHERE headline LIKE '%Lennon%';\n\nNote this will match the headline ``'Lennon honored today'`` but not ``'lennon\nhonored today'``.\n\n.. admonition:: SQLite users\n\n    SQLite doesn't support case-sensitive ``LIKE`` statements; ``contains``\n    acts like ``icontains`` for SQLite. See the :ref:`database note\n    <sqlite-string-matching>` for more information.\n\n\n.. fieldlookup:: icontains\n\nicontains\n~~~~~~~~~\n\nCase-insensitive containment test.\n\nExample::\n\n    Entry.objects.get(headline__icontains='Lennon')\n\nSQL equivalent::\n\n    SELECT ... WHERE headline ILIKE '%Lennon%';\n\n.. admonition:: SQLite users\n\n    When using the SQLite backend and Unicode (non-ASCII) strings, bear in\n    mind the :ref:`database note <sqlite-string-matching>` about string\n    comparisons.\n\n.. fieldlookup:: in\n\nin\n~~\n\nIn a given list.\n\nExample::\n\n    Entry.objects.filter(id__in=[1, 3, 4])\n\nSQL equivalent::\n\n    SELECT ... WHERE id IN (1, 3, 4);\n\nYou can also use a queryset to dynamically evaluate the list of values\ninstead of providing a list of literal values::\n\n    inner_qs = Blog.objects.filter(name__contains='Cheddar')\n    entries = Entry.objects.filter(blog__in=inner_qs)\n\nThis queryset will be evaluated as subselect statement::\n\n    SELECT ... WHERE blog.id IN (SELECT id FROM ... WHERE NAME LIKE '%Cheddar%')\n\nIf you pass in a ``ValuesQuerySet`` or ``ValuesListQuerySet`` (the result of\ncalling ``values()`` or ``values_list()`` on a queryset) as the value to an\n``__in`` lookup, you need to ensure you are only extracting one field in the\nresult. For example, this will work (filtering on the blog names)::\n\n    inner_qs = Blog.objects.filter(name__contains='Ch').values('name')\n    entries = Entry.objects.filter(blog__name__in=inner_qs)\n\nThis example will raise an exception, since the inner query is trying to\nextract two field values, where only one is expected::\n\n    # Bad code! Will raise a TypeError.\n    inner_qs = Blog.objects.filter(name__contains='Ch').values('name', 'id')\n    entries = Entry.objects.filter(blog__name__in=inner_qs)\n\n.. admonition:: Performance considerations\n\n    Be cautious about using nested queries and understand your database\n    server's performance characteristics (if in doubt, benchmark!). Some\n    database backends, most notably MySQL, don't optimize nested queries very\n    well. It is more efficient, in those cases, to extract a list of values\n    and then pass that into the second query. That is, execute two queries\n    instead of one::\n\n        values = Blog.objects.filter(\n                name__contains='Cheddar').values_list('pk', flat=True)\n        entries = Entry.objects.filter(blog__in=list(values))\n\n    Note the ``list()`` call around the Blog ``QuerySet`` to force execution of\n    the first query. Without it, a nested query would be executed, because\n    :ref:`querysets-are-lazy`.\n\n.. fieldlookup:: gt\n\ngt\n~~\n\nGreater than.\n\nExample::\n\n    Entry.objects.filter(id__gt=4)\n\nSQL equivalent::\n\n    SELECT ... WHERE id > 4;\n\n.. fieldlookup:: gte\n\ngte\n~~~\n\nGreater than or equal to.\n\n.. fieldlookup:: lt\n\nlt\n~~\n\nLess than.\n\n.. fieldlookup:: lte\n\nlte\n~~~\n\nLess than or equal to.\n\n.. fieldlookup:: startswith\n\nstartswith\n~~~~~~~~~~\n\nCase-sensitive starts-with.\n\nExample::\n\n    Entry.objects.filter(headline__startswith='Will')\n\nSQL equivalent::\n\n    SELECT ... WHERE headline LIKE 'Will%';\n\nSQLite doesn't support case-sensitive ``LIKE`` statements; ``startswith`` acts\nlike ``istartswith`` for SQLite.\n\n.. fieldlookup:: istartswith\n\nistartswith\n~~~~~~~~~~~\n\nCase-insensitive starts-with.\n\nExample::\n\n    Entry.objects.filter(headline__istartswith='will')\n\nSQL equivalent::\n\n    SELECT ... WHERE headline ILIKE 'Will%';\n\n.. admonition:: SQLite users\n\n    When using the SQLite backend and Unicode (non-ASCII) strings, bear in\n    mind the :ref:`database note <sqlite-string-matching>` about string\n    comparisons.\n\n.. fieldlookup:: endswith\n\nendswith\n~~~~~~~~\n\nCase-sensitive ends-with.\n\nExample::\n\n    Entry.objects.filter(headline__endswith='cats')\n\nSQL equivalent::\n\n    SELECT ... WHERE headline LIKE '%cats';\n\n.. admonition:: SQLite users\n\n    SQLite doesn't support case-sensitive ``LIKE`` statements; ``endswith``\n    acts like ``iendswith`` for SQLite. Refer to the :ref:`database note\n    <sqlite-string-matching>` documentation for more.\n\n.. fieldlookup:: iendswith\n\niendswith\n~~~~~~~~~\n\nCase-insensitive ends-with.\n\nExample::\n\n    Entry.objects.filter(headline__iendswith='will')\n\nSQL equivalent::\n\n    SELECT ... WHERE headline ILIKE '%will'\n\n.. admonition:: SQLite users\n\n    When using the SQLite backend and Unicode (non-ASCII) strings, bear in\n    mind the :ref:`database note <sqlite-string-matching>` about string\n    comparisons.\n\n.. fieldlookup:: range\n\nrange\n~~~~~\n\nRange test (inclusive).\n\nExample::\n\n    start_date = datetime.date(2005, 1, 1)\n    end_date = datetime.date(2005, 3, 31)\n    Entry.objects.filter(pub_date__range=(start_date, end_date))\n\nSQL equivalent::\n\n    SELECT ... WHERE pub_date BETWEEN '2005-01-01' and '2005-03-31';\n\nYou can use ``range`` anywhere you can use ``BETWEEN`` in SQL — for dates,\nnumbers and even characters.\n\n.. warning::\n\n    Filtering a ``DateTimeField`` with dates won't include items on the last\n    day, because the bounds are interpreted as \"0am on the given date\". If\n    ``pub_date`` was a ``DateTimeField``, the above expression would be turned\n    into this SQL::\n\n        SELECT ... WHERE pub_date BETWEEN '2005-01-01 00:00:00' and '2005-03-31 00:00:00';\n\n    Generally speaking, you can't mix dates and datetimes.\n\n.. fieldlookup:: year\n\nyear\n~~~~\n\nFor date/datetime fields, exact year match. Takes a four-digit year.\n\nExample::\n\n    Entry.objects.filter(pub_date__year=2005)\n\nSQL equivalent::\n\n    SELECT ... WHERE pub_date BETWEEN '2005-01-01' AND '2005-12-31';\n\n(The exact SQL syntax varies for each database engine.)\n\n.. fieldlookup:: month\n\nmonth\n~~~~~\n\nFor date and datetime fields, an exact month match. Takes an integer 1\n(January) through 12 (December).\n\nExample::\n\n    Entry.objects.filter(pub_date__month=12)\n\nSQL equivalent::\n\n    SELECT ... WHERE EXTRACT('month' FROM pub_date) = '12';\n\n(The exact SQL syntax varies for each database engine.)\n\n.. fieldlookup:: day\n\nday\n~~~\n\nFor date and datetime fields, an exact day match.\n\nExample::\n\n    Entry.objects.filter(pub_date__day=3)\n\nSQL equivalent::\n\n    SELECT ... WHERE EXTRACT('day' FROM pub_date) = '3';\n\n(The exact SQL syntax varies for each database engine.)\n\nNote this will match any record with a pub_date on the third day of the month,\nsuch as January 3, July 3, etc.\n\n.. fieldlookup:: week_day\n\nweek_day\n~~~~~~~~\n\nFor date and datetime fields, a 'day of the week' match.\n\nTakes an integer value representing the day of week from 1 (Sunday) to 7\n(Saturday).\n\nExample::\n\n    Entry.objects.filter(pub_date__week_day=2)\n\n(No equivalent SQL code fragment is included for this lookup because\nimplementation of the relevant query varies among different database engines.)\n\nNote this will match any record with a ``pub_date`` that falls on a Monday (day\n2 of the week), regardless of the month or year in which it occurs. Week days\nare indexed with day 1 being Sunday and day 7 being Saturday.\n\n.. warning::\n\n    When :doc:`time zone support </topics/i18n/timezones>` is enabled, Django\n    uses UTC in the database connection, which means the ``year``, ``month``,\n    ``day`` and ``week_day`` lookups are performed in UTC. This is a known\n    limitation of the current implementation.\n\n.. fieldlookup:: isnull\n\nisnull\n~~~~~~\n\nTakes either ``True`` or ``False``, which correspond to SQL queries of\n``IS NULL`` and ``IS NOT NULL``, respectively.\n\nExample::\n\n    Entry.objects.filter(pub_date__isnull=True)\n\nSQL equivalent::\n\n    SELECT ... WHERE pub_date IS NULL;\n\n.. fieldlookup:: search\n\nsearch\n~~~~~~\n\nA boolean full-text search, taking advantage of full-text indexing. This is\nlike :lookup:`contains` but is significantly faster due to full-text indexing.\n\nExample::\n\n    Entry.objects.filter(headline__search=\"+Django -jazz Python\")\n\nSQL equivalent::\n\n    SELECT ... WHERE MATCH(tablename, headline) AGAINST (+Django -jazz Python IN BOOLEAN MODE);\n\nNote this is only available in MySQL and requires direct manipulation of the\ndatabase to add the full-text index. By default Django uses BOOLEAN MODE for\nfull text searches. See the `MySQL documentation`_ for additional details.\n\n.. _MySQL documentation: http://dev.mysql.com/doc/refman/5.1/en/fulltext-boolean.html\n\n\n.. fieldlookup:: regex\n\nregex\n~~~~~\n\nCase-sensitive regular expression match.\n\nThe regular expression syntax is that of the database backend in use.\nIn the case of SQLite, which has no built in regular expression support,\nthis feature is provided by a (Python) user-defined REGEXP function, and\nthe regular expression syntax is therefore that of Python's ``re`` module.\n\nExample::\n\n    Entry.objects.get(title__regex=r'^(An?|The) +')\n\nSQL equivalents::\n\n    SELECT ... WHERE title REGEXP BINARY '^(An?|The) +'; -- MySQL\n\n    SELECT ... WHERE REGEXP_LIKE(title, '^(an?|the) +', 'c'); -- Oracle\n\n    SELECT ... WHERE title ~ '^(An?|The) +'; -- PostgreSQL\n\n    SELECT ... WHERE title REGEXP '^(An?|The) +'; -- SQLite\n\nUsing raw strings (e.g., ``r'foo'`` instead of ``'foo'``) for passing in the\nregular expression syntax is recommended.\n\n.. fieldlookup:: iregex\n\niregex\n~~~~~~\n\nCase-insensitive regular expression match.\n\nExample::\n\n    Entry.objects.get(title__iregex=r'^(an?|the) +')\n\nSQL equivalents::\n\n    SELECT ... WHERE title REGEXP '^(an?|the) +'; -- MySQL\n\n    SELECT ... WHERE REGEXP_LIKE(title, '^(an?|the) +', 'i'); -- Oracle\n\n    SELECT ... WHERE title ~* '^(an?|the) +'; -- PostgreSQL\n\n    SELECT ... WHERE title REGEXP '(?i)^(an?|the) +'; -- SQLite\n\n.. _aggregation-functions:\n\nAggregation functions\n---------------------\n\n.. currentmodule:: django.db.models\n\nDjango provides the following aggregation functions in the\n``django.db.models`` module. For details on how to use these\naggregate functions, see\n:doc:`the topic guide on aggregation </topics/db/aggregation>`.\n\nAvg\n~~~\n\n.. class:: Avg(field)\n\n    Returns the mean value of the given field, which must be numeric.\n\n    * Default alias: ``<field>__avg``\n    * Return type: ``float``\n\nCount\n~~~~~\n\n.. class:: Count(field, distinct=False)\n\n    Returns the number of objects that are related through the provided field.\n\n    * Default alias: ``<field>__count``\n    * Return type: ``int``\n\n    Has one optional argument:\n\n    .. attribute:: distinct\n\n        If ``distinct=True``, the count will only include unique instances.\n        This is the SQL equivalent of ``COUNT(DISTINCT <field>)``. The default\n        value is ``False``.\n\nMax\n~~~\n\n.. class:: Max(field)\n\n    Returns the maximum value of the given field.\n\n    * Default alias: ``<field>__max``\n    * Return type: same as input field\n\nMin\n~~~\n\n.. class:: Min(field)\n\n    Returns the minimum value of the given field.\n\n    * Default alias: ``<field>__min``\n    * Return type: same as input field\n\nStdDev\n~~~~~~\n\n.. class:: StdDev(field, sample=False)\n\n    Returns the standard deviation of the data in the provided field.\n\n    * Default alias: ``<field>__stddev``\n    * Return type: ``float``\n\n    Has one optional argument:\n\n    .. attribute:: sample\n\n        By default, ``StdDev`` returns the population standard deviation. However,\n        if ``sample=True``, the return value will be the sample standard deviation.\n\n    .. admonition:: SQLite\n\n        SQLite doesn't provide ``StdDev`` out of the box. An implementation\n        is available as an extension module for SQLite. Consult the `SQlite\n        documentation`_ for instructions on obtaining and installing this\n        extension.\n\nSum\n~~~\n\n.. class:: Sum(field)\n\n    Computes the sum of all values of the given field.\n\n    * Default alias: ``<field>__sum``\n    * Return type: same as input field\n\nVariance\n~~~~~~~~\n\n.. class:: Variance(field, sample=False)\n\n    Returns the variance of the data in the provided field.\n\n    * Default alias: ``<field>__variance``\n    * Return type: ``float``\n\n    Has one optional argument:\n\n    .. attribute:: sample\n\n        By default, ``Variance`` returns the population variance. However,\n        if ``sample=True``, the return value will be the sample variance.\n\n    .. admonition:: SQLite\n\n        SQLite doesn't provide ``Variance`` out of the box. An implementation\n        is available as an extension module for SQLite. Consult the `SQlite\n        documentation`_ for instructions on obtaining and installing this\n        extension.\n\n.. _SQLite documentation: http://www.sqlite.org/contrib\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/models/relations.txt",
    "content": "=========================\nRelated objects reference\n=========================\n\n.. currentmodule:: django.db.models.fields.related\n\n.. class:: RelatedManager\n\n    A \"related manager\" is a manager used in a one-to-many or many-to-many\n    related context. This happens in two cases:\n\n    * The \"other side\" of a :class:`~django.db.models.ForeignKey` relation.\n      That is::\n\n            class Reporter(models.Model):\n                ...\n\n            class Article(models.Model):\n                reporter = models.ForeignKey(Reporter)\n\n      In the above example, the methods below will be available on\n      the manager ``reporter.article_set``.\n\n    * Both sides of a :class:`~django.db.models.ManyToManyField` relation::\n\n            class Topping(models.Model):\n                ...\n\n            class Pizza(models.Model):\n                toppings = models.ManyToManyField(Topping)\n\n      In this example, the methods below will be available both on\n      ``topping.pizza_set`` and on ``pizza.toppings``.\n\n    These related managers have some extra methods:\n\n    .. method:: add(obj1, [obj2, ...])\n\n        Adds the specified model objects to the related object set.\n\n        Example::\n\n            >>> b = Blog.objects.get(id=1)\n            >>> e = Entry.objects.get(id=234)\n            >>> b.entry_set.add(e) # Associates Entry e with Blog b.\n\n    .. method:: create(**kwargs)\n\n        Creates a new object, saves it and puts it in the related object set.\n        Returns the newly created object::\n\n            >>> b = Blog.objects.get(id=1)\n            >>> e = b.entry_set.create(\n            ...     headline='Hello',\n            ...     body_text='Hi',\n            ...     pub_date=datetime.date(2005, 1, 1)\n            ... )\n\n            # No need to call e.save() at this point -- it's already been saved.\n\n        This is equivalent to (but much simpler than)::\n\n            >>> b = Blog.objects.get(id=1)\n            >>> e = Entry(\n            ...     blog=b,\n            ...     headline='Hello',\n            ...     body_text='Hi',\n            ...     pub_date=datetime.date(2005, 1, 1)\n            ... )\n            >>> e.save(force_insert=True)\n\n        Note that there's no need to specify the keyword argument of the model\n        that defines the relationship. In the above example, we don't pass the\n        parameter ``blog`` to ``create()``. Django figures out that the new\n        ``Entry`` object's ``blog`` field should be set to ``b``.\n\n    .. method:: remove(obj1, [obj2, ...])\n\n        Removes the specified model objects from the related object set::\n\n            >>> b = Blog.objects.get(id=1)\n            >>> e = Entry.objects.get(id=234)\n            >>> b.entry_set.remove(e) # Disassociates Entry e from Blog b.\n\n        In order to prevent database inconsistency, this method only exists on\n        :class:`~django.db.models.ForeignKey` objects where ``null=True``. If\n        the related field can't be set to ``None`` (``NULL``), then an object\n        can't be removed from a relation without being added to another. In the\n        above example, removing ``e`` from ``b.entry_set()`` is equivalent to\n        doing ``e.blog = None``, and because the ``blog``\n        :class:`~django.db.models.ForeignKey` doesn't have ``null=True``, this\n        is invalid.\n\n    .. method:: clear()\n\n        Removes all objects from the related object set::\n\n            >>> b = Blog.objects.get(id=1)\n            >>> b.entry_set.clear()\n\n        Note this doesn't delete the related objects -- it just disassociates\n        them.\n\n        Just like ``remove()``, ``clear()`` is only available on\n        :class:`~django.db.models.ForeignKey`\\s where ``null=True``.\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/request-response.txt",
    "content": "============================\nRequest and response objects\n============================\n\n.. module:: django.http\n   :synopsis: Classes dealing with HTTP requests and responses.\n\nQuick overview\n==============\n\nDjango uses request and response objects to pass state through the system.\n\nWhen a page is requested, Django creates an :class:`HttpRequest` object that\ncontains metadata about the request. Then Django loads the appropriate view,\npassing the :class:`HttpRequest` as the first argument to the view function.\nEach view is responsible for returning an :class:`HttpResponse` object.\n\nThis document explains the APIs for :class:`HttpRequest` and\n:class:`HttpResponse` objects, which are defined in the :mod:`django.http`\nmodule.\n\nHttpRequest objects\n===================\n\n.. class:: HttpRequest\n\n.. _httprequest-attributes:\n\nAttributes\n----------\n\nAll attributes should be considered read-only, unless stated otherwise below.\n``session`` is a notable exception.\n\n.. attribute:: HttpRequest.body\n\n    .. versionchanged:: 1.4\n\n    Before Django 1.4, ``HttpRequest.body`` was named\n    ``HttpRequest.raw_post_data``.\n\n    The raw HTTP request body as a byte string. This is useful for processing\n    data in different ways than conventional HTML forms: binary images,\n    XML payload etc. For processing conventional form data, use ``HttpRequest.POST``.\n\n    You can also read from an HttpRequest using a file-like interface. See\n    :meth:`HttpRequest.read()`.\n\n.. attribute:: HttpRequest.path\n\n    A string representing the full path to the requested page, not including\n    the domain.\n\n    Example: ``\"/music/bands/the_beatles/\"``\n\n.. attribute:: HttpRequest.path_info\n\n    Under some Web server configurations, the portion of the URL after the\n    host name is split up into a script prefix portion and a path info\n    portion. The ``path_info`` attribute always contains the path info portion\n    of the path, no matter what Web server is being used. Using this instead\n    of :attr:`~HttpRequest.path` can make your code easier to move between\n    test and deployment servers.\n\n    For example, if the ``WSGIScriptAlias`` for your application is set to\n    ``\"/minfo\"``, then ``path`` might be ``\"/minfo/music/bands/the_beatles/\"``\n    and ``path_info`` would be ``\"/music/bands/the_beatles/\"``.\n\n.. attribute:: HttpRequest.method\n\n    A string representing the HTTP method used in the request. This is\n    guaranteed to be uppercase. Example::\n\n        if request.method == 'GET':\n            do_something()\n        elif request.method == 'POST':\n            do_something_else()\n\n.. attribute:: HttpRequest.encoding\n\n    A string representing the current encoding used to decode form submission\n    data (or ``None``, which means the :setting:`DEFAULT_CHARSET` setting is\n    used). You can write to this attribute to change the encoding used when\n    accessing the form data. Any subsequent attribute accesses (such as reading\n    from ``GET`` or ``POST``) will use the new ``encoding`` value.  Useful if\n    you know the form data is not in the :setting:`DEFAULT_CHARSET` encoding.\n\n.. attribute:: HttpRequest.GET\n\n    A dictionary-like object containing all given HTTP GET parameters. See the\n    :class:`QueryDict` documentation below.\n\n.. attribute:: HttpRequest.POST\n\n    A dictionary-like object containing all given HTTP POST parameters,\n    providing that the request contains form data. See the\n    :class:`QueryDict` documentation below. If you need to access raw or\n    non-form data posted in the request, access this through the\n    :attr:`HttpRequest.body` attribute instead.\n\n    .. versionchanged:: 1.5\n        Before Django 1.5, HttpRequest.POST contained non-form data.\n\n    It's possible that a request can come in via POST with an empty ``POST``\n    dictionary -- if, say, a form is requested via the POST HTTP method but\n    does not include form data. Therefore, you shouldn't use ``if request.POST``\n    to check for use of the POST method; instead, use ``if request.method ==\n    \"POST\"`` (see above).\n\n    Note: ``POST`` does *not* include file-upload information. See ``FILES``.\n\n.. attribute:: HttpRequest.REQUEST\n\n    For convenience, a dictionary-like object that searches ``POST`` first,\n    then ``GET``. Inspired by PHP's ``$_REQUEST``.\n\n    For example, if ``GET = {\"name\": \"john\"}`` and ``POST = {\"age\": '34'}``,\n    ``REQUEST[\"name\"]`` would be ``\"john\"``, and ``REQUEST[\"age\"]`` would be\n    ``\"34\"``.\n\n    It's strongly suggested that you use ``GET`` and ``POST`` instead of\n    ``REQUEST``, because the former are more explicit.\n\n.. attribute:: HttpRequest.COOKIES\n\n    A standard Python dictionary containing all cookies. Keys and values are\n    strings.\n\n.. attribute:: HttpRequest.FILES\n\n    A dictionary-like object containing all uploaded files. Each key in\n    ``FILES`` is the ``name`` from the ``<input type=\"file\" name=\"\" />``. Each\n    value in ``FILES`` is an :class:`UploadedFile` as described below.\n\n    See :doc:`/topics/files` for more information.\n\n    Note that ``FILES`` will only contain data if the request method was POST\n    and the ``<form>`` that posted to the request had\n    ``enctype=\"multipart/form-data\"``. Otherwise, ``FILES`` will be a blank\n    dictionary-like object.\n\n.. attribute:: HttpRequest.META\n\n    A standard Python dictionary containing all available HTTP headers.\n    Available headers depend on the client and server, but here are some\n    examples:\n\n    * ``CONTENT_LENGTH`` -- the length of the request body (as a string).\n    * ``CONTENT_TYPE`` -- the MIME type of the request body.\n    * ``HTTP_ACCEPT_ENCODING`` -- Acceptable encodings for the response.\n    * ``HTTP_ACCEPT_LANGUAGE`` -- Acceptable languages for the response.\n    * ``HTTP_HOST`` -- The HTTP Host header sent by the client.\n    * ``HTTP_REFERER`` -- The referring page, if any.\n    * ``HTTP_USER_AGENT`` -- The client's user-agent string.\n    * ``QUERY_STRING`` -- The query string, as a single (unparsed) string.\n    * ``REMOTE_ADDR`` -- The IP address of the client.\n    * ``REMOTE_HOST`` -- The hostname of the client.\n    * ``REMOTE_USER`` -- The user authenticated by the Web server, if any.\n    * ``REQUEST_METHOD`` -- A string such as ``\"GET\"`` or ``\"POST\"``.\n    * ``SERVER_NAME`` -- The hostname of the server.\n    * ``SERVER_PORT`` -- The port of the server (as a string).\n\n    With the exception of ``CONTENT_LENGTH`` and ``CONTENT_TYPE``, as given\n    above, any HTTP headers in the request are converted to ``META`` keys by\n    converting all characters to uppercase, replacing any hyphens with\n    underscores and adding an ``HTTP_`` prefix to the name. So, for example, a\n    header called ``X-Bender`` would be mapped to the ``META`` key\n    ``HTTP_X_BENDER``.\n\n.. attribute:: HttpRequest.user\n\n    A ``django.contrib.auth.models.User`` object representing the currently\n    logged-in user. If the user isn't currently logged in, ``user`` will be set\n    to an instance of ``django.contrib.auth.models.AnonymousUser``. You\n    can tell them apart with ``is_authenticated()``, like so::\n\n        if request.user.is_authenticated():\n            # Do something for logged-in users.\n        else:\n            # Do something for anonymous users.\n\n    ``user`` is only available if your Django installation has the\n    ``AuthenticationMiddleware`` activated. For more, see\n    :doc:`/topics/auth/index`.\n\n.. attribute:: HttpRequest.session\n\n    A readable-and-writable, dictionary-like object that represents the current\n    session. This is only available if your Django installation has session\n    support activated. See the :doc:`session documentation\n    </topics/http/sessions>` for full details.\n\n.. attribute:: HttpRequest.urlconf\n\n    Not defined by Django itself, but will be read if other code (e.g., a custom\n    middleware class) sets it. When present, this will be used as the root\n    URLconf for the current request, overriding the :setting:`ROOT_URLCONF`\n    setting. See :ref:`how-django-processes-a-request` for details.\n\n.. attribute:: HttpRequest.resolver_match\n\n    .. versionadded:: 1.5\n\n    An instance of :class:`~django.core.urlresolvers.ResolverMatch` representing\n    the resolved url. This attribute is only set after url resolving took place,\n    which means it's available in all views but not in middleware methods which\n    are executed before url resolving takes place (like ``process_request``, you\n    can use ``process_view`` instead).\n\n\nMethods\n-------\n\n.. method:: HttpRequest.get_host()\n\n    Returns the originating host of the request using information from the\n    ``HTTP_X_FORWARDED_HOST`` (if :setting:`USE_X_FORWARDED_HOST` is enabled)\n    and ``HTTP_HOST`` headers, in that order. If they don't provide a value,\n    the method uses a combination of ``SERVER_NAME`` and ``SERVER_PORT`` as\n    detailed in :pep:`3333`.\n\n    Example: ``\"127.0.0.1:8000\"``\n\n    .. note:: The :meth:`~HttpRequest.get_host()` method fails when the host is\n        behind multiple proxies. One solution is to use middleware to rewrite\n        the proxy headers, as in the following example::\n\n            class MultipleProxyMiddleware(object):\n                FORWARDED_FOR_FIELDS = [\n                    'HTTP_X_FORWARDED_FOR',\n                    'HTTP_X_FORWARDED_HOST',\n                    'HTTP_X_FORWARDED_SERVER',\n                ]\n\n                def process_request(self, request):\n                    \"\"\"\n                    Rewrites the proxy headers so that only the most\n                    recent proxy is used.\n                    \"\"\"\n                    for field in self.FORWARDED_FOR_FIELDS:\n                        if field in request.META:\n                            if ',' in request.META[field]:\n                                parts = request.META[field].split(',')\n                                request.META[field] = parts[-1].strip()\n\n        This middleware should be positioned before any other middleware that\n        relies on the value of :meth:`~HttpRequest.get_host()` -- for instance,\n        :class:`~django.middleware.common.CommonMiddleware` or\n        :class:`~django.middleware.csrf.CsrfViewMiddleware`.\n\n.. method:: HttpRequest.get_full_path()\n\n   Returns the ``path``, plus an appended query string, if applicable.\n\n   Example: ``\"/music/bands/the_beatles/?print=true\"``\n\n.. method:: HttpRequest.build_absolute_uri(location)\n\n   Returns the absolute URI form of ``location``. If no location is provided,\n   the location will be set to ``request.get_full_path()``.\n\n   If the location is already an absolute URI, it will not be altered.\n   Otherwise the absolute URI is built using the server variables available in\n   this request.\n\n   Example: ``\"http://example.com/music/bands/the_beatles/?print=true\"``\n\n.. method:: HttpRequest.get_signed_cookie(key, default=RAISE_ERROR, salt='', max_age=None)\n\n   .. versionadded:: 1.4\n\n   Returns a cookie value for a signed cookie, or raises a\n   ``django.core.signing.BadSignature`` exception if the signature is\n   no longer valid. If you provide the ``default`` argument the exception\n   will be suppressed and that default value will be returned instead.\n\n   The optional ``salt`` argument can be used to provide extra protection\n   against brute force attacks on your secret key. If supplied, the\n   ``max_age`` argument will be checked against the signed timestamp\n   attached to the cookie value to ensure the cookie is not older than\n   ``max_age`` seconds.\n\n   For example::\n\n          >>> request.get_signed_cookie('name')\n          'Tony'\n          >>> request.get_signed_cookie('name', salt='name-salt')\n          'Tony' # assuming cookie was set using the same salt\n          >>> request.get_signed_cookie('non-existing-cookie')\n          ...\n          KeyError: 'non-existing-cookie'\n          >>> request.get_signed_cookie('non-existing-cookie', False)\n          False\n          >>> request.get_signed_cookie('cookie-that-was-tampered-with')\n          ...\n          BadSignature: ...\n          >>> request.get_signed_cookie('name', max_age=60)\n          ...\n          SignatureExpired: Signature age 1677.3839159 > 60 seconds\n          >>> request.get_signed_cookie('name', False, max_age=60)\n          False\n\n   See :doc:`cryptographic signing </topics/signing>` for more information.\n\n.. method:: HttpRequest.is_secure()\n\n   Returns ``True`` if the request is secure; that is, if it was made with\n   HTTPS.\n\n.. method:: HttpRequest.is_ajax()\n\n   Returns ``True`` if the request was made via an ``XMLHttpRequest``, by\n   checking the ``HTTP_X_REQUESTED_WITH`` header for the string\n   ``'XMLHttpRequest'``. Most modern JavaScript libraries send this header.\n   If you write your own XMLHttpRequest call (on the browser side), you'll\n   have to set this header manually if you want ``is_ajax()`` to work.\n\n.. method:: HttpRequest.read(size=None)\n.. method:: HttpRequest.readline()\n.. method:: HttpRequest.readlines()\n.. method:: HttpRequest.xreadlines()\n.. method:: HttpRequest.__iter__()\n\n    Methods implementing a file-like interface for reading from an\n    HttpRequest instance. This makes it possible to consume an incoming\n    request in a streaming fashion. A common use-case would be to process a\n    big XML payload with iterative parser without constructing a whole\n    XML tree in memory.\n\n    Given this standard interface, an HttpRequest instance can be\n    passed directly to an XML parser such as ElementTree::\n\n        import xml.etree.ElementTree as ET\n        for element in ET.iterparse(request):\n            process(element)\n\n\nUploadedFile objects\n====================\n\n.. class:: UploadedFile\n\n\nAttributes\n----------\n\n.. attribute::  UploadedFile.name\n\n    The name of the uploaded file.\n\n.. attribute:: UploadedFile.size\n\n    The size, in bytes, of the uploaded file.\n\nMethods\n----------\n\n.. method:: UploadedFile.chunks(chunk_size=None)\n\n    Returns a generator that yields sequential chunks of data.\n\n.. method:: UploadedFile.read(num_bytes=None)\n\n    Read a number of bytes from the file.\n\n\n\nQueryDict objects\n=================\n\n.. class:: QueryDict\n\nIn an :class:`HttpRequest` object, the ``GET`` and ``POST`` attributes are instances\nof ``django.http.QueryDict``. :class:`QueryDict` is a dictionary-like\nclass customized to deal with multiple values for the same key. This is\nnecessary because some HTML form elements, notably\n``<select multiple=\"multiple\">``, pass multiple values for the same key.\n\n``QueryDict`` instances are immutable, unless you create a ``copy()`` of them.\nThat means you can't change attributes of ``request.POST`` and ``request.GET``\ndirectly.\n\nMethods\n-------\n\n:class:`QueryDict` implements all the standard dictionary methods, because it's\na subclass of dictionary. Exceptions are outlined here:\n\n.. method:: QueryDict.__getitem__(key)\n\n    Returns the value for the given key. If the key has more than one value,\n    ``__getitem__()`` returns the last value. Raises\n    ``django.utils.datastructures.MultiValueDictKeyError`` if the key does not\n    exist. (This is a subclass of Python's standard ``KeyError``, so you can\n    stick to catching ``KeyError``.)\n\n.. method:: QueryDict.__setitem__(key, value)\n\n    Sets the given key to ``[value]`` (a Python list whose single element is\n    ``value``). Note that this, as other dictionary functions that have side\n    effects, can only be called on a mutable ``QueryDict`` (one that was created\n    via ``copy()``).\n\n.. method:: QueryDict.__contains__(key)\n\n    Returns ``True`` if the given key is set. This lets you do, e.g., ``if \"foo\"\n    in request.GET``.\n\n.. method:: QueryDict.get(key, default)\n\n    Uses the same logic as ``__getitem__()`` above, with a hook for returning a\n    default value if the key doesn't exist.\n\n.. method:: QueryDict.setdefault(key, default)\n\n    Just like the standard dictionary ``setdefault()`` method, except it uses\n    ``__setitem__()`` internally.\n\n.. method:: QueryDict.update(other_dict)\n\n    Takes either a ``QueryDict`` or standard dictionary. Just like the standard\n    dictionary ``update()`` method, except it *appends* to the current\n    dictionary items rather than replacing them. For example::\n\n          >>> q = QueryDict('a=1')\n          >>> q = q.copy() # to make it mutable\n          >>> q.update({'a': '2'})\n          >>> q.getlist('a')\n          [u'1', u'2']\n          >>> q['a'] # returns the last\n          [u'2']\n\n.. method:: QueryDict.items()\n\n    Just like the standard dictionary ``items()`` method, except this uses the\n    same last-value logic as ``__getitem__()``. For example::\n\n           >>> q = QueryDict('a=1&a=2&a=3')\n           >>> q.items()\n           [(u'a', u'3')]\n\n.. method:: QueryDict.iteritems()\n\n    Just like the standard dictionary ``iteritems()`` method. Like\n    :meth:`QueryDict.items()` this uses the same last-value logic as\n    :meth:`QueryDict.__getitem__()`.\n\n.. method:: QueryDict.iterlists()\n\n    Like :meth:`QueryDict.iteritems()` except it includes all values, as a list,\n    for each member of the dictionary.\n\n.. method:: QueryDict.values()\n\n    Just like the standard dictionary ``values()`` method, except this uses the\n    same last-value logic as ``__getitem__()``. For example::\n\n           >>> q = QueryDict('a=1&a=2&a=3')\n           >>> q.values()\n           [u'3']\n\n.. method:: QueryDict.itervalues()\n\n    Just like :meth:`QueryDict.values()`, except an iterator.\n\nIn addition, ``QueryDict`` has the following methods:\n\n.. method:: QueryDict.copy()\n\n    Returns a copy of the object, using ``copy.deepcopy()`` from the Python\n    standard library. The copy will be mutable -- that is, you can change its\n    values.\n\n.. method:: QueryDict.getlist(key, default)\n\n    Returns the data with the requested key, as a Python list. Returns an\n    empty list if the key doesn't exist and no default value was provided.\n    It's guaranteed to return a list of some sort unless the default value\n    was no list.\n\n    .. versionchanged:: 1.4\n        The ``default`` parameter was added.\n\n.. method:: QueryDict.setlist(key, list_)\n\n    Sets the given key to ``list_`` (unlike ``__setitem__()``).\n\n.. method:: QueryDict.appendlist(key, item)\n\n    Appends an item to the internal list associated with key.\n\n.. method:: QueryDict.setlistdefault(key, default_list)\n\n    Just like ``setdefault``, except it takes a list of values instead of a\n    single value.\n\n.. method:: QueryDict.lists()\n\n    Like :meth:`items()`, except it includes all values, as a list, for each\n    member of the dictionary. For example::\n\n        >>> q = QueryDict('a=1&a=2&a=3')\n        >>> q.lists()\n        [(u'a', [u'1', u'2', u'3'])]\n\n.. method:: QueryDict.dict()\n\n    .. versionadded:: 1.4\n\n    Returns ``dict`` representation of ``QueryDict``. For every (key, list)\n    pair in ``QueryDict``, ``dict`` will have (key, item), where item is one\n    element of the list, using same logic as :meth:`QueryDict.__getitem__()`::\n\n        >>> q = QueryDict('a=1&a=3&a=5')\n        >>> q.dict()\n        {u'a': u'5'}\n\n.. method:: QueryDict.urlencode([safe])\n\n    Returns a string of the data in query-string format. Example::\n\n        >>> q = QueryDict('a=2&b=3&b=5')\n        >>> q.urlencode()\n        'a=2&b=3&b=5'\n\n    Optionally, urlencode can be passed characters which\n    do not require encoding. For example::\n\n        >>> q = QueryDict('', mutable=True)\n        >>> q['next'] = '/a&b/'\n        >>> q.urlencode(safe='/')\n        'next=/a%26b/'\n\nHttpResponse objects\n====================\n\n.. class:: HttpResponse\n\nIn contrast to :class:`HttpRequest` objects, which are created automatically by\nDjango, :class:`HttpResponse` objects are your responsibility. Each view you\nwrite is responsible for instantiating, populating and returning an\n:class:`HttpResponse`.\n\nThe :class:`HttpResponse` class lives in the :mod:`django.http` module.\n\nUsage\n-----\n\nPassing strings\n~~~~~~~~~~~~~~~\n\nTypical usage is to pass the contents of the page, as a string, to the\n:class:`HttpResponse` constructor::\n\n    >>> from django.http import HttpResponse\n    >>> response = HttpResponse(\"Here's the text of the Web page.\")\n    >>> response = HttpResponse(\"Text only, please.\", content_type=\"text/plain\")\n\nBut if you want to add content incrementally, you can use ``response`` as a\nfile-like object::\n\n    >>> response = HttpResponse()\n    >>> response.write(\"<p>Here's the text of the Web page.</p>\")\n    >>> response.write(\"<p>Here's another paragraph.</p>\")\n\nPassing iterators\n~~~~~~~~~~~~~~~~~\n\nFinally, you can pass ``HttpResponse`` an iterator rather than strings. If you\nuse this technique, the iterator should return strings.\n\nPassing an iterator as content to :class:`HttpResponse` creates a\nstreaming response if (and only if) no middleware accesses the\n:attr:`HttpResponse.content` attribute before the response is returned.\n\n.. versionchanged:: 1.5\n\nThis technique is fragile and was deprecated in Django 1.5. If you need the\nresponse to be streamed from the iterator to the client, you should use the\n:class:`StreamingHttpResponse` class instead.\n\nAs of Django 1.7, when :class:`HttpResponse` is instantiated with an\niterator, it will consume it immediately, store the response content as a\nstring, and discard the iterator.\n\n.. versionchanged:: 1.5\n\nYou can now use :class:`HttpResponse` as a file-like object even if it was\ninstantiated with an iterator. Django will consume and save the content of\nthe iterator on first access.\n\nSetting headers\n~~~~~~~~~~~~~~~\n\nTo set or remove a header in your response, treat it like a dictionary::\n\n    >>> response = HttpResponse()\n    >>> response['Cache-Control'] = 'no-cache'\n    >>> del response['Cache-Control']\n\nNote that unlike a dictionary, ``del`` doesn't raise ``KeyError`` if the header\ndoesn't exist.\n\nHTTP headers cannot contain newlines. An attempt to set a header containing a\nnewline character (CR or LF) will raise ``BadHeaderError``\n\nTelling the browser to treat the response as a file attachment\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nTo tell the browser to treat the response as a file attachment, use the\n``content_type`` argument and set the ``Content-Disposition`` header. For example,\nthis is how you might return a Microsoft Excel spreadsheet::\n\n    >>> response = HttpResponse(my_data, content_type='application/vnd.ms-excel')\n    >>> response['Content-Disposition'] = 'attachment; filename=\"foo.xls\"'\n\nThere's nothing Django-specific about the ``Content-Disposition`` header, but\nit's easy to forget the syntax, so we've included it here.\n\nAttributes\n----------\n\n.. attribute:: HttpResponse.content\n\n    A string representing the content, encoded from a Unicode\n    object if necessary.\n\n.. attribute:: HttpResponse.status_code\n\n    The `HTTP Status code`_ for the response.\n\n.. attribute:: HttpResponse.streaming\n\n    This is always ``False``.\n\n    This attribute exists so middleware can treat streaming responses\n    differently from regular responses.\n\nMethods\n-------\n\n.. method:: HttpResponse.__init__(content='', content_type=None, status=200)\n\n    Instantiates an ``HttpResponse`` object with the given page content and\n    content type.\n\n    ``content`` should be an iterator or a string. If it's an\n    iterator, it should return strings, and those strings will be\n    joined together to form the content of the response. If it is not\n    an iterator or a string, it will be converted to a string when\n    accessed.\n\n    ``content_type`` is the MIME type optionally completed by a character set\n    encoding and is used to fill the HTTP ``Content-Type`` header. If not\n    specified, it is formed by the :setting:`DEFAULT_CONTENT_TYPE` and\n    :setting:`DEFAULT_CHARSET` settings, by default: \"`text/html; charset=utf-8`\".\n\n    Historically, this parameter was called ``mimetype`` (now deprecated).\n\n    ``status`` is the `HTTP Status code`_ for the response.\n\n\n.. method:: HttpResponse.__setitem__(header, value)\n\n    Sets the given header name to the given value. Both ``header`` and\n    ``value`` should be strings.\n\n.. method:: HttpResponse.__delitem__(header)\n\n    Deletes the header with the given name. Fails silently if the header\n    doesn't exist. Case-insensitive.\n\n.. method:: HttpResponse.__getitem__(header)\n\n    Returns the value for the given header name. Case-insensitive.\n\n.. method:: HttpResponse.has_header(header)\n\n    Returns ``True`` or ``False`` based on a case-insensitive check for a\n    header with the given name.\n\n.. method:: HttpResponse.set_cookie(key, value='', max_age=None, expires=None, path='/', domain=None, secure=None, httponly=False)\n\n    Sets a cookie. The parameters are the same as in the :class:`Cookie.Morsel`\n    object in the Python standard library.\n\n    * ``max_age`` should be a number of seconds, or ``None`` (default) if\n      the cookie should last only as long as the client's browser session.\n      If ``expires`` is not specified, it will be calculated.\n    * ``expires`` should either be a string in the format\n      ``\"Wdy, DD-Mon-YY HH:MM:SS GMT\"`` or a ``datetime.datetime`` object\n      in UTC. If ``expires`` is a ``datetime`` object, the ``max_age``\n      will be calculated.\n    * Use ``domain`` if you want to set a cross-domain cookie. For example,\n      ``domain=\".lawrence.com\"`` will set a cookie that is readable by\n      the domains www.lawrence.com, blogs.lawrence.com and\n      calendars.lawrence.com. Otherwise, a cookie will only be readable by\n      the domain that set it.\n    * Use ``httponly=True`` if you want to prevent client-side\n      JavaScript from having access to the cookie.\n\n      HTTPOnly_ is a flag included in a Set-Cookie HTTP response\n      header. It is not part of the :rfc:`2109` standard for cookies,\n      and it isn't honored consistently by all browsers. However,\n      when it is honored, it can be a useful way to mitigate the\n      risk of client side script accessing the protected cookie\n      data.\n\n    .. _HTTPOnly: https://www.owasp.org/index.php/HTTPOnly\n\n.. method:: HttpResponse.set_signed_cookie(key, value, salt='', max_age=None, expires=None, path='/', domain=None, secure=None, httponly=True)\n\n    .. versionadded:: 1.4\n\n    Like :meth:`~HttpResponse.set_cookie()`, but\n    :doc:`cryptographic signing </topics/signing>` the cookie before setting\n    it. Use in conjunction with :meth:`HttpRequest.get_signed_cookie`.\n    You can use the optional ``salt`` argument for added key strength, but\n    you will need to remember to pass it to the corresponding\n    :meth:`HttpRequest.get_signed_cookie` call.\n\n.. method:: HttpResponse.delete_cookie(key, path='/', domain=None)\n\n    Deletes the cookie with the given key. Fails silently if the key doesn't\n    exist.\n\n    Due to the way cookies work, ``path`` and ``domain`` should be the same\n    values you used in ``set_cookie()`` -- otherwise the cookie may not be\n    deleted.\n\n.. method:: HttpResponse.write(content)\n\n    This method makes an :class:`HttpResponse` instance a file-like object.\n\n.. method:: HttpResponse.flush()\n\n    This method makes an :class:`HttpResponse` instance a file-like object.\n\n.. method:: HttpResponse.tell()\n\n    This method makes an :class:`HttpResponse` instance a file-like object.\n\n.. _HTTP Status code: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10\n\n\n.. _ref-httpresponse-subclasses:\n\nHttpResponse subclasses\n-----------------------\n\nDjango includes a number of ``HttpResponse`` subclasses that handle different\ntypes of HTTP responses. Like ``HttpResponse``, these subclasses live in\n:mod:`django.http`.\n\n.. class:: HttpResponseRedirect\n\n    The first argument to the constructor is required -- the path to redirect\n    to. This can be a fully qualified URL\n    (e.g. ``'http://www.yahoo.com/search/'``) or an absolute path with no\n    domain (e.g. ``'/search/'``). See :class:`HttpResponse` for other optional\n    constructor arguments. Note that this returns an HTTP status code 302.\n\n.. class:: HttpResponsePermanentRedirect\n\n    Like :class:`HttpResponseRedirect`, but it returns a permanent redirect\n    (HTTP status code 301) instead of a \"found\" redirect (status code 302).\n\n.. class:: HttpResponseNotModified\n\n    The constructor doesn't take any arguments and no content should be added\n    to this response. Use this to designate that a page hasn't been modified\n    since the user's last request (status code 304).\n\n.. class:: HttpResponseBadRequest\n\n    Acts just like :class:`HttpResponse` but uses a 400 status code.\n\n.. class:: HttpResponseNotFound\n\n    Acts just like :class:`HttpResponse` but uses a 404 status code.\n\n.. class:: HttpResponseForbidden\n\n    Acts just like :class:`HttpResponse` but uses a 403 status code.\n\n.. class:: HttpResponseNotAllowed\n\n    Like :class:`HttpResponse`, but uses a 405 status code. The first argument\n    to the constructor is required: a list of permitted methods (e.g.\n    ``['GET', 'POST']``).\n\n.. class:: HttpResponseGone\n\n    Acts just like :class:`HttpResponse` but uses a 410 status code.\n\n.. class:: HttpResponseServerError\n\n    Acts just like :class:`HttpResponse` but uses a 500 status code.\n\n.. note::\n\n    If a custom subclass of :class:`HttpResponse` implements a ``render``\n    method, Django will treat it as emulating a\n    :class:`~django.template.response.SimpleTemplateResponse`, and the\n    ``render`` method must itself return a valid response object.\n\n.. _httpresponse-streaming:\n\nStreamingHttpResponse objects\n=============================\n\n.. versionadded:: 1.5\n\n.. class:: StreamingHttpResponse\n\nThe :class:`StreamingHttpResponse` class is used to stream a response from\nDjango to the browser. You might want to do this if generating the response\ntakes too long or uses too much memory. For instance, it's useful for\ngenerating large CSV files.\n\n.. admonition:: Performance considerations\n\n    Django is designed for short-lived requests. Streaming responses will tie\n    a worker process and keep a database connection idle in transaction for\n    the entire duration of the response. This may result in poor performance.\n\n    Generally speaking, you should perform expensive tasks outside of the\n    request-response cycle, rather than resorting to a streamed response.\n\nThe :class:`StreamingHttpResponse` is not a subclass of :class:`HttpResponse`,\nbecause it features a slightly different API. However, it is almost identical,\nwith the following notable differences:\n\n* It should be given an iterator that yields strings as content.\n\n* You cannot access its content, except by iterating the response object\n  itself. This should only occur when the response is returned to the client.\n\n* It has no ``content`` attribute. Instead, it has a\n  :attr:`~StreamingHttpResponse.streaming_content` attribute.\n\n* You cannot use the file-like object ``tell()`` or ``write()`` methods.\n  Doing so will raise an exception.\n\n:class:`StreamingHttpResponse` should only be used in situations where it is\nabsolutely required that the whole content isn't iterated before transferring\nthe data to the client. Because the content can't be accessed, many\nmiddlewares can't function normally. For example the ``ETag`` and ``Content-\nLength`` headers can't be generated for streaming responses.\n\nAttributes\n----------\n\n.. attribute:: StreamingHttpResponse.streaming_content\n\n    An iterator of strings representing the content.\n\n.. attribute:: HttpResponse.status_code\n\n    The `HTTP Status code`_ for the response.\n\n.. attribute:: HttpResponse.streaming\n\n    This is always ``True``.\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/settings.txt",
    "content": "========\nSettings\n========\n\n.. contents::\n    :local:\n    :depth: 1\n\n.. warning::\n\n    Be careful when you override settings, especially when the default value\n    is a non-empty tuple or dictionary, such as :setting:`MIDDLEWARE_CLASSES`\n    and :setting:`TEMPLATE_CONTEXT_PROCESSORS`. Make sure you keep the\n    components required by the features of Django you wish to use.\n\nAvailable settings\n==================\n\nHere's a full list of all available settings, in alphabetical order, and their\ndefault values.\n\n.. setting:: ABSOLUTE_URL_OVERRIDES\n\nABSOLUTE_URL_OVERRIDES\n----------------------\n\nDefault: ``{}`` (Empty dictionary)\n\nA dictionary mapping ``\"app_label.model_name\"`` strings to functions that take\na model object and return its URL. This is a way of overriding\n``get_absolute_url()`` methods on a per-installation basis. Example::\n\n    ABSOLUTE_URL_OVERRIDES = {\n        'blogs.weblog': lambda o: \"/blogs/%s/\" % o.slug,\n        'news.story': lambda o: \"/stories/%s/%s/\" % (o.pub_year, o.slug),\n    }\n\nNote that the model name used in this setting should be all lower-case, regardless\nof the case of the actual model class name.\n\n.. setting:: ADMIN_FOR\n\nADMIN_FOR\n---------\n\nDefault: ``()`` (Empty tuple)\n\nUsed for admin-site settings modules, this should be a tuple of settings\nmodules (in the format ``'foo.bar.baz'``) for which this site is an admin.\n\nThe admin site uses this in its automatically-introspected documentation of\nmodels, views and template tags.\n\n.. setting:: ADMINS\n\nADMINS\n------\n\nDefault: ``()`` (Empty tuple)\n\nA tuple that lists people who get code error notifications. When\n``DEBUG=False`` and a view raises an exception, Django will email these people\nwith the full exception information. Each member of the tuple should be a tuple\nof (Full name, email address). Example::\n\n    (('John', 'john@example.com'), ('Mary', 'mary@example.com'))\n\nNote that Django will email *all* of these people whenever an error happens.\nSee :doc:`/howto/error-reporting` for more information.\n\n.. setting:: ALLOWED_HOSTS\n\nALLOWED_HOSTS\n-------------\n\nDefault: ``[]`` (Empty list)\n\nA list of strings representing the host/domain names that this Django site can\nserve. This is a security measure to prevent an attacker from poisoning caches\nand password reset emails with links to malicious hosts by submitting requests\nwith a fake HTTP ``Host`` header, which is possible even under many\nseemingly-safe webserver configurations.\n\nValues in this list can be fully qualified names (e.g. ``'www.example.com'``),\nin which case they will be matched against the request's ``Host`` header\nexactly (case-insensitive, not including port). A value beginning with a period\ncan be used as a subdomain wildcard: ``'.example.com'`` will match\n``example.com``, ``www.example.com``, and any other subdomain of\n``example.com``. A value of ``'*'`` will match anything; in this case you are\nresponsible to provide your own validation of the ``Host`` header (perhaps in a\nmiddleware; if so this middleware must be listed first in\n:setting:`MIDDLEWARE_CLASSES`).\n\nIf the ``Host`` header (or ``X-Forwarded-Host`` if\n:setting:`USE_X_FORWARDED_HOST` is enabled) does not match any value in this\nlist, the :meth:`django.http.HttpRequest.get_host()` method will raise\n:exc:`~django.core.exceptions.SuspiciousOperation`.\n\nWhen :setting:`DEBUG` is ``True`` or when running tests, host validation is\ndisabled; any host will be accepted. Thus it's usually only necessary to set it\nin production.\n\nThis validation only applies via :meth:`~django.http.HttpRequest.get_host()`;\nif your code accesses the ``Host`` header directly from ``request.META`` you\nare bypassing this security protection.\n\n.. setting:: ALLOWED_INCLUDE_ROOTS\n\nALLOWED_INCLUDE_ROOTS\n---------------------\n\nDefault: ``()`` (Empty tuple)\n\nA tuple of strings representing allowed prefixes for the ``{% ssi %}`` template\ntag. This is a security measure, so that template authors can't access files\nthat they shouldn't be accessing.\n\nFor example, if :setting:`ALLOWED_INCLUDE_ROOTS` is ``('/home/html', '/var/www')``,\nthen ``{% ssi /home/html/foo.txt %}`` would work, but ``{% ssi /etc/passwd %}``\nwouldn't.\n\n.. setting:: APPEND_SLASH\n\nAPPEND_SLASH\n------------\n\nDefault: ``True``\n\nWhen set to ``True``, if the request URL does not match any of the patterns\nin the URLconf and it doesn't end in a slash, an HTTP redirect is issued to the\nsame URL with a slash appended. Note that the redirect may cause any data\nsubmitted in a POST request to be lost.\n\nThe :setting:`APPEND_SLASH` setting is only used if\n:class:`~django.middleware.common.CommonMiddleware` is installed\n(see :doc:`/topics/http/middleware`). See also :setting:`PREPEND_WWW`.\n\n.. setting:: AUTHENTICATION_BACKENDS\n\nAUTHENTICATION_BACKENDS\n-----------------------\n\nDefault: ``('django.contrib.auth.backends.ModelBackend',)``\n\nA tuple of authentication backend classes (as strings) to use when attempting to\nauthenticate a user. See the :ref:`authentication backends documentation\n<authentication-backends>` for details.\n\n.. setting:: AUTH_USER_MODEL\n\nAUTH_USER_MODEL\n---------------\n\nDefault: 'auth.User'\n\nThe model to use to represent a User. See :ref:`auth-custom-user`.\n\n.. setting:: CACHES\n\nCACHES\n------\n\nDefault::\n\n    {\n        'default': {\n            'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',\n        }\n    }\n\nA dictionary containing the settings for all caches to be used with\nDjango. It is a nested dictionary whose contents maps cache aliases\nto a dictionary containing the options for an individual cache.\n\nThe :setting:`CACHES` setting must configure a ``default`` cache;\nany number of additional caches may also be specified. If you\nare using a cache backend other than the local memory cache, or\nyou need to define multiple caches, other options will be required.\nThe following cache options are available.\n\n.. setting:: CACHES-BACKEND\n\nBACKEND\n~~~~~~~\n\nDefault: ``''`` (Empty string)\n\nThe cache backend to use. The built-in cache backends are:\n\n* ``'django.core.cache.backends.db.DatabaseCache'``\n* ``'django.core.cache.backends.dummy.DummyCache'``\n* ``'django.core.cache.backends.filebased.FileBasedCache'``\n* ``'django.core.cache.backends.locmem.LocMemCache'``\n* ``'django.core.cache.backends.memcached.MemcachedCache'``\n* ``'django.core.cache.backends.memcached.PyLibMCCache'``\n\nYou can use a cache backend that doesn't ship with Django by setting\n:setting:`BACKEND <CACHES-BACKEND>` to a fully-qualified path of a cache\nbackend class (i.e. ``mypackage.backends.whatever.WhateverCache``).\nWriting a whole new cache backend from scratch is left as an exercise\nto the reader; see the other backends for examples.\n\n.. setting:: CACHES-KEY_FUNCTION\n\nKEY_FUNCTION\n~~~~~~~~~~~~\n\nA string containing a dotted path to a function that defines how to\ncompose a prefix, version and key into a final cache key. The default\nimplementation is equivalent to the function::\n\n    def make_key(key, key_prefix, version):\n        return ':'.join([key_prefix, str(version), key])\n\nYou may use any key function you want, as long as it has the same\nargument signature.\n\nSee the :ref:`cache documentation <cache_key_transformation>` for more information.\n\n.. setting:: CACHES-KEY_PREFIX\n\nKEY_PREFIX\n~~~~~~~~~~\n\nDefault: ``''`` (Empty string)\n\nA string that will be automatically included (prepended by default) to\nall cache keys used by the Django server.\n\nSee the :ref:`cache documentation <cache_key_prefixing>` for more information.\n\n.. setting:: CACHES-LOCATION\n\nLOCATION\n~~~~~~~~\n\nDefault: ``''`` (Empty string)\n\nThe location of the cache to use. This might be the directory for a\nfile system cache, a host and port for a memcache server, or simply an\nidentifying name for a local memory cache. e.g.::\n\n    CACHES = {\n        'default': {\n            'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',\n            'LOCATION': '/var/tmp/django_cache',\n        }\n    }\n\n.. setting:: CACHES-OPTIONS\n\nOPTIONS\n~~~~~~~\n\nDefault: None\n\nExtra parameters to pass to the cache backend. Available parameters\nvary depending on your cache backend.\n\nSome information on available parameters can be found in the\n:doc:`Cache Backends </topics/cache>` documentation. For more information,\nconsult your backend module's own documentation.\n\n.. setting:: CACHES-TIMEOUT\n\nTIMEOUT\n~~~~~~~\n\nDefault: 300\n\nThe number of seconds before a cache entry is considered stale.\n\n.. setting:: CACHES-VERSION\n\nVERSION\n~~~~~~~\n\nDefault: ``1``\n\nThe default version number for cache keys generated by the Django server.\n\nSee the :ref:`cache documentation <cache_versioning>` for more information.\n\n.. setting:: CACHE_MIDDLEWARE_ALIAS\n\nCACHE_MIDDLEWARE_ALIAS\n----------------------\n\nDefault: ``default``\n\nThe cache connection to use for the cache middleware.\n\n.. setting:: CACHE_MIDDLEWARE_ANONYMOUS_ONLY\n\nCACHE_MIDDLEWARE_ANONYMOUS_ONLY\n-------------------------------\n\nDefault: ``False``\n\nIf the value of this setting is ``True``, only anonymous requests (i.e., not\nthose made by a logged-in user) will be cached.  Otherwise, the middleware\ncaches every page that doesn't have GET or POST parameters.\n\nIf you set the value of this setting to ``True``, you should make sure you've\nactivated ``AuthenticationMiddleware``.\n\nSee :doc:`/topics/cache`.\n\n.. setting:: CACHE_MIDDLEWARE_KEY_PREFIX\n\nCACHE_MIDDLEWARE_KEY_PREFIX\n---------------------------\n\nDefault: ``''`` (Empty string)\n\nThe cache key prefix that the cache middleware should use.\n\nSee :doc:`/topics/cache`.\n\n.. setting:: CACHE_MIDDLEWARE_SECONDS\n\nCACHE_MIDDLEWARE_SECONDS\n------------------------\n\nDefault: ``600``\n\nThe default number of seconds to cache a page when the caching middleware or\n``cache_page()`` decorator is used.\n\nSee :doc:`/topics/cache`.\n\n.. setting:: CSRF_COOKIE_DOMAIN\n\nCSRF_COOKIE_DOMAIN\n------------------\n\nDefault: ``None``\n\nThe domain to be used when setting the CSRF cookie.  This can be useful for\neasily allowing cross-subdomain requests to be excluded from the normal cross\nsite request forgery protection.  It should be set to a string such as\n``\".example.com\"`` to allow a POST request from a form on one subdomain to be\naccepted by accepted by a view served from another subdomain.\n\nPlease note that the presence of this setting does not imply that Django's CSRF\nprotection is safe from cross-subdomain attacks by default - please see the\n:ref:`CSRF limitations <csrf-limitations>` section.\n\n.. setting:: CSRF_COOKIE_NAME\n\nCSRF_COOKIE_NAME\n----------------\n\nDefault: ``'csrftoken'``\n\nThe name of the cookie to use for the CSRF authentication token. This can be whatever you\nwant.  See :doc:`/ref/contrib/csrf`.\n\n.. setting:: CSRF_COOKIE_PATH\n\nCSRF_COOKIE_PATH\n----------------\n\n.. versionadded:: 1.4\n\nDefault: ``'/'``\n\nThe path set on the CSRF cookie. This should either match the URL path of your\nDjango installation or be a parent of that path.\n\nThis is useful if you have multiple Django instances running under the same\nhostname. They can use different cookie paths, and each instance will only see\nits own CSRF cookie.\n\n.. setting:: CSRF_COOKIE_SECURE\n\nCSRF_COOKIE_SECURE\n------------------\n\n.. versionadded:: 1.4\n\nDefault: ``False``\n\nWhether to use a secure cookie for the CSRF cookie. If this is set to ``True``,\nthe cookie will be marked as \"secure,\" which means browsers may ensure that the\ncookie is only sent under an HTTPS connection.\n\n.. setting:: CSRF_FAILURE_VIEW\n\nCSRF_FAILURE_VIEW\n-----------------\n\nDefault: ``'django.views.csrf.csrf_failure'``\n\nA dotted path to the view function to be used when an incoming request\nis rejected by the CSRF protection.  The function should have this signature::\n\n  def csrf_failure(request, reason=\"\")\n\nwhere ``reason`` is a short message (intended for developers or logging, not for\nend users) indicating the reason the request was rejected.  See\n:doc:`/ref/contrib/csrf`.\n\n\n.. setting:: DATABASES\n\nDATABASES\n---------\n\nDefault: ``{}`` (Empty dictionary)\n\nA dictionary containing the settings for all databases to be used with\nDjango. It is a nested dictionary whose contents maps database aliases\nto a dictionary containing the options for an individual database.\n\nThe :setting:`DATABASES` setting must configure a ``default`` database;\nany number of additional databases may also be specified.\n\nThe simplest possible settings file is for a single-database setup using\nSQLite. This can be configured using the following::\n\n    DATABASES = {\n        'default': {\n            'ENGINE': 'django.db.backends.sqlite3',\n            'NAME': 'mydatabase'\n        }\n    }\n\nFor other database backends, or more complex SQLite configurations, other options\nwill be required. The following inner options are available.\n\n.. setting:: DATABASE-ENGINE\n\nENGINE\n~~~~~~\n\nDefault: ``''`` (Empty string)\n\nThe database backend to use. The built-in database backends are:\n\n* ``'django.db.backends.postgresql_psycopg2'``\n* ``'django.db.backends.mysql'``\n* ``'django.db.backends.sqlite3'``\n* ``'django.db.backends.oracle'``\n\nYou can use a database backend that doesn't ship with Django by setting\n``ENGINE`` to a fully-qualified path (i.e.\n``mypackage.backends.whatever``). Writing a whole new database backend from\nscratch is left as an exercise to the reader; see the other backends for\nexamples.\n\n.. setting:: HOST\n\nHOST\n~~~~\n\nDefault: ``''`` (Empty string)\n\nWhich host to use when connecting to the database. An empty string means\nlocalhost. Not used with SQLite.\n\nIf this value starts with a forward slash (``'/'``) and you're using MySQL,\nMySQL will connect via a Unix socket to the specified socket. For example::\n\n    \"HOST\": '/var/run/mysql'\n\nIf you're using MySQL and this value *doesn't* start with a forward slash, then\nthis value is assumed to be the host.\n\nIf you're using PostgreSQL, by default (empty :setting:`HOST`), the connection\nto the database is done through UNIX domain sockets ('local' lines in\n``pg_hba.conf``). If you want to connect through TCP sockets, set\n:setting:`HOST` to 'localhost' or '127.0.0.1' ('host' lines in ``pg_hba.conf``).\nOn Windows, you should always define :setting:`HOST`, as UNIX domain sockets\nare not available.\n\n.. setting:: NAME\n\nNAME\n~~~~\n\nDefault: ``''`` (Empty string)\n\nThe name of the database to use. For SQLite, it's the full path to the database\nfile. When specifying the path, always use forward slashes, even on Windows\n(e.g. ``C:/homes/user/mysite/sqlite3.db``).\n\n.. setting:: OPTIONS\n\nOPTIONS\n~~~~~~~\n\nDefault: ``{}`` (Empty dictionary)\n\nExtra parameters to use when connecting to the database. Available parameters\nvary depending on your database backend.\n\nSome information on available parameters can be found in the\n:doc:`Database Backends </ref/databases>` documentation. For more information,\nconsult your backend module's own documentation.\n\n.. setting:: PASSWORD\n\nPASSWORD\n~~~~~~~~\n\nDefault: ``''`` (Empty string)\n\nThe password to use when connecting to the database. Not used with SQLite.\n\n.. setting:: PORT\n\nPORT\n~~~~\n\nDefault: ``''`` (Empty string)\n\nThe port to use when connecting to the database. An empty string means the\ndefault port. Not used with SQLite.\n\n.. setting:: USER\n\nUSER\n~~~~\n\nDefault: ``''`` (Empty string)\n\nThe username to use when connecting to the database. Not used with SQLite.\n\n.. setting:: TEST_CHARSET\n\nTEST_CHARSET\n~~~~~~~~~~~~\n\nDefault: ``None``\n\nThe character set encoding used to create the test database. The value of this\nstring is passed directly through to the database, so its format is\nbackend-specific.\n\nSupported for the PostgreSQL_ (``postgresql_psycopg2``) and MySQL_ (``mysql``)\nbackends.\n\n.. _PostgreSQL: http://www.postgresql.org/docs/8.2/static/multibyte.html\n.. _MySQL: http://dev.mysql.com/doc/refman/5.0/en/charset-database.html\n\n.. setting:: TEST_COLLATION\n\nTEST_COLLATION\n~~~~~~~~~~~~~~\n\nDefault: ``None``\n\nThe collation order to use when creating the test database. This value is\npassed directly to the backend, so its format is backend-specific.\n\nOnly supported for the ``mysql`` backend (see the `MySQL manual`_ for details).\n\n.. _MySQL manual: MySQL_\n\n.. setting:: TEST_DEPENDENCIES\n\nTEST_DEPENDENCIES\n~~~~~~~~~~~~~~~~~\n\nDefault: ``['default']``, for all databases other than ``default``,\nwhich has no dependencies.\n\nThe creation-order dependencies of the database. See the documentation\non :ref:`controlling the creation order of test databases\n<topics-testing-creation-dependencies>` for details.\n\n.. setting:: TEST_MIRROR\n\nTEST_MIRROR\n~~~~~~~~~~~\n\nDefault: ``None``\n\nThe alias of the database that this database should mirror during\ntesting.\n\nThis setting exists to allow for testing of master/slave\nconfigurations of multiple databases. See the documentation on\n:ref:`testing master/slave configurations\n<topics-testing-masterslave>` for details.\n\n.. setting:: TEST_NAME\n\nTEST_NAME\n~~~~~~~~~\n\nDefault: ``None``\n\nThe name of database to use when running the test suite.\n\nIf the default value (``None``) is used with the SQLite database engine, the\ntests will use a memory resident database. For all other database engines the\ntest database will use the name ``'test_' + DATABASE_NAME``.\n\nSee :ref:`the-test-database`.\n\n.. setting:: TEST_CREATE\n\nTEST_CREATE\n~~~~~~~~~~~\n\nDefault: ``True``\n\nThis is an Oracle-specific setting.\n\nIf it is set to ``False``, the test tablespaces won't be automatically created\nat the beginning of the tests and dropped at the end.\n\n.. setting:: TEST_USER\n\nTEST_USER\n~~~~~~~~~\n\nDefault: ``None``\n\nThis is an Oracle-specific setting.\n\nThe username to use when connecting to the Oracle database that will be used\nwhen running tests. If not provided, Django will use ``'test_' + USER``.\n\n.. setting:: TEST_USER_CREATE\n\nTEST_USER_CREATE\n~~~~~~~~~~~~~~~~\n\nDefault: ``True``\n\nThis is an Oracle-specific setting.\n\nIf it is set to ``False``, the test user won't be automatically created at the\nbeginning of the tests and dropped at the end.\n\n.. setting:: TEST_PASSWD\n\nTEST_PASSWD\n~~~~~~~~~~~\n\nDefault: ``None``\n\nThis is an Oracle-specific setting.\n\nThe password to use when connecting to the Oracle database that will be used\nwhen running tests. If not provided, Django will use a hardcoded default value.\n\n.. setting:: TEST_TBLSPACE\n\nTEST_TBLSPACE\n~~~~~~~~~~~~~\n\nDefault: ``None``\n\nThis is an Oracle-specific setting.\n\nThe name of the tablespace that will be used when running tests. If not\nprovided, Django will use ``'test_' + NAME``.\n\n.. setting:: TEST_TBLSPACE_TMP\n\nTEST_TBLSPACE_TMP\n~~~~~~~~~~~~~~~~~\n\nDefault: ``None``\n\nThis is an Oracle-specific setting.\n\nThe name of the temporary tablespace that will be used when running tests. If\nnot provided, Django will use ``'test_' + NAME + '_temp'``.\n\n.. setting:: DATABASE_ROUTERS\n\nDATABASE_ROUTERS\n----------------\n\nDefault: ``[]`` (Empty list)\n\nThe list of routers that will be used to determine which database\nto use when performing a database queries.\n\nSee the documentation on :ref:`automatic database routing in multi\ndatabase configurations <topics-db-multi-db-routing>`.\n\n.. setting:: DATE_FORMAT\n\nDATE_FORMAT\n-----------\n\nDefault: ``'N j, Y'`` (e.g. ``Feb. 4, 2003``)\n\nThe default formatting to use for displaying date fields in any part of the\nsystem. Note that if :setting:`USE_L10N` is set to ``True``, then the\nlocale-dictated format has higher precedence and will be applied instead. See\n:tfilter:`allowed date format strings <date>`.\n\nSee also :setting:`DATETIME_FORMAT`, :setting:`TIME_FORMAT` and :setting:`SHORT_DATE_FORMAT`.\n\n.. setting:: DATE_INPUT_FORMATS\n\nDATE_INPUT_FORMATS\n------------------\n\nDefault::\n\n    (\n        '%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', # '2006-10-25', '10/25/2006', '10/25/06'\n        '%b %d %Y', '%b %d, %Y',            # 'Oct 25 2006', 'Oct 25, 2006'\n        '%d %b %Y', '%d %b, %Y',            # '25 Oct 2006', '25 Oct, 2006'\n        '%B %d %Y', '%B %d, %Y',            # 'October 25 2006', 'October 25, 2006'\n        '%d %B %Y', '%d %B, %Y',            # '25 October 2006', '25 October, 2006'\n    )\n\nA tuple of formats that will be accepted when inputting data on a date field.\nFormats will be tried in order, using the first valid one. Note that these\nformat strings use Python's datetime_ module syntax, not the format strings\nfrom the ``date`` Django template tag.\n\nWhen :setting:`USE_L10N` is ``True``, the locale-dictated format has higher\nprecedence and will be applied instead.\n\nSee also :setting:`DATETIME_INPUT_FORMATS` and :setting:`TIME_INPUT_FORMATS`.\n\n.. _datetime: http://docs.python.org/library/datetime.html#strftime-strptime-behavior\n\n.. setting:: DATETIME_FORMAT\n\nDATETIME_FORMAT\n---------------\n\nDefault: ``'N j, Y, P'`` (e.g. ``Feb. 4, 2003, 4 p.m.``)\n\nThe default formatting to use for displaying datetime fields in any part of the\nsystem. Note that if :setting:`USE_L10N` is set to ``True``, then the\nlocale-dictated format has higher precedence and will be applied instead. See\n:tfilter:`allowed date format strings <date>`.\n\nSee also :setting:`DATE_FORMAT`, :setting:`TIME_FORMAT` and :setting:`SHORT_DATETIME_FORMAT`.\n\n.. setting:: DATETIME_INPUT_FORMATS\n\nDATETIME_INPUT_FORMATS\n----------------------\n\nDefault::\n\n    (\n        '%Y-%m-%d %H:%M:%S',     # '2006-10-25 14:30:59'\n        '%Y-%m-%d %H:%M:%S.%f',  # '2006-10-25 14:30:59.000200'\n        '%Y-%m-%d %H:%M',        # '2006-10-25 14:30'\n        '%Y-%m-%d',              # '2006-10-25'\n        '%m/%d/%Y %H:%M:%S',     # '10/25/2006 14:30:59'\n        '%m/%d/%Y %H:%M:%S.%f',  # '10/25/2006 14:30:59.000200'\n        '%m/%d/%Y %H:%M',        # '10/25/2006 14:30'\n        '%m/%d/%Y',              # '10/25/2006'\n        '%m/%d/%y %H:%M:%S',     # '10/25/06 14:30:59'\n        '%m/%d/%y %H:%M:%S.%f',  # '10/25/06 14:30:59.000200'\n        '%m/%d/%y %H:%M',        # '10/25/06 14:30'\n        '%m/%d/%y',              # '10/25/06'\n    )\n\nA tuple of formats that will be accepted when inputting data on a datetime\nfield. Formats will be tried in order, using the first valid one. Note that\nthese format strings use Python's datetime_ module syntax, not the format\nstrings from the ``date`` Django template tag.\n\nWhen :setting:`USE_L10N` is ``True``, the locale-dictated format has higher\nprecedence and will be applied instead.\n\nSee also :setting:`DATE_INPUT_FORMATS` and :setting:`TIME_INPUT_FORMATS`.\n\n.. _datetime: http://docs.python.org/library/datetime.html#strftime-strptime-behavior\n\n.. setting:: DEBUG\n\nDEBUG\n-----\n\nDefault: ``False``\n\nA boolean that turns on/off debug mode.\n\nNever deploy a site into production with :setting:`DEBUG` turned on.\n\nDid you catch that? NEVER deploy a site into production with :setting:`DEBUG`\nturned on.\n\nOne of the main features of debug mode is the display of detailed error pages.\nIf your app raises an exception when :setting:`DEBUG` is ``True``, Django will\ndisplay a detailed traceback, including a lot of metadata about your\nenvironment, such as all the currently defined Django settings (from\n``settings.py``).\n\nAs a security measure, Django will *not* include settings that might be\nsensitive (or offensive), such as :setting:`SECRET_KEY` or\n:setting:`PROFANITIES_LIST`. Specifically, it will exclude any setting whose\nname includes any of the following:\n\n* ``'API'``\n* ``'KEY'``\n* ``'PASS'``\n* ``'PROFANITIES_LIST'``\n* ``'SECRET'``\n* ``'SIGNATURE'``\n* ``'TOKEN'``\n\n.. versionchanged:: 1.4\n\n    We changed ``'PASSWORD'`` ``'PASS'``. ``'API'``, ``'TOKEN'`` and ``'KEY'``\n    were added.\n\nNote that these are *partial* matches. ``'PASS'`` will also match PASSWORD,\njust as ``'TOKEN'`` will also match TOKENIZED and so on.\n\nStill, note that there are always going to be sections of your debug output\nthat are inappropriate for public consumption. File paths, configuration\noptions and the like all give attackers extra information about your server.\n\nIt is also important to remember that when running with :setting:`DEBUG`\nturned on, Django will remember every SQL query it executes. This is useful\nwhen you're debugging, but it'll rapidly consume memory on a production server.\n\n.. _django/views/debug.py: https://github.com/django/django/blob/master/django/views/debug.py\n\nDEBUG_PROPAGATE_EXCEPTIONS\n--------------------------\n\nDefault: ``False``\n\nIf set to True, Django's normal exception handling of view functions\nwill be suppressed, and exceptions will propagate upwards.  This can\nbe useful for some test setups, and should never be used on a live\nsite.\n\n.. setting:: DECIMAL_SEPARATOR\n\nDECIMAL_SEPARATOR\n-----------------\n\nDefault: ``'.'`` (Dot)\n\nDefault decimal separator used when formatting decimal numbers.\n\nNote that if :setting:`USE_L10N` is set to ``True``, then the locale-dictated\nformat has higher precedence and will be applied instead.\n\nSee also :setting:`NUMBER_GROUPING`, :setting:`THOUSAND_SEPARATOR` and\n:setting:`USE_THOUSAND_SEPARATOR`.\n\n\n.. setting:: DEFAULT_CHARSET\n\nDEFAULT_CHARSET\n---------------\n\nDefault: ``'utf-8'``\n\nDefault charset to use for all ``HttpResponse`` objects, if a MIME type isn't\nmanually specified. Used with :setting:`DEFAULT_CONTENT_TYPE` to construct the\n``Content-Type`` header.\n\n.. setting:: DEFAULT_CONTENT_TYPE\n\nDEFAULT_CONTENT_TYPE\n--------------------\n\nDefault: ``'text/html'``\n\nDefault content type to use for all ``HttpResponse`` objects, if a MIME type\nisn't manually specified. Used with :setting:`DEFAULT_CHARSET` to construct\nthe ``Content-Type`` header.\n\n.. setting:: DEFAULT_EXCEPTION_REPORTER_FILTER\n\nDEFAULT_EXCEPTION_REPORTER_FILTER\n---------------------------------\n\nDefault: :class:`django.views.debug.SafeExceptionReporterFilter`\n\nDefault exception reporter filter class to be used if none has been assigned to\nthe :class:`~django.http.HttpRequest` instance yet.\nSee :ref:`Filtering error reports<filtering-error-reports>`.\n\n.. setting:: DEFAULT_FILE_STORAGE\n\nDEFAULT_FILE_STORAGE\n--------------------\n\nDefault: :class:`django.core.files.storage.FileSystemStorage`\n\nDefault file storage class to be used for any file-related operations that don't\nspecify a particular storage system. See :doc:`/topics/files`.\n\n.. setting:: DEFAULT_FROM_EMAIL\n\nDEFAULT_FROM_EMAIL\n------------------\n\nDefault: ``'webmaster@localhost'``\n\nDefault email address to use for various automated correspondence from the\nsite manager(s).\n\n.. setting:: DEFAULT_INDEX_TABLESPACE\n\nDEFAULT_INDEX_TABLESPACE\n------------------------\n\nDefault: ``''`` (Empty string)\n\nDefault tablespace to use for indexes on fields that don't specify\none, if the backend supports it (see :doc:`/topics/db/tablespaces`).\n\n.. setting:: DEFAULT_TABLESPACE\n\nDEFAULT_TABLESPACE\n------------------\n\nDefault: ``''`` (Empty string)\n\nDefault tablespace to use for models that don't specify one, if the\nbackend supports it (see :doc:`/topics/db/tablespaces`).\n\n.. setting:: DISALLOWED_USER_AGENTS\n\nDISALLOWED_USER_AGENTS\n----------------------\n\nDefault: ``()`` (Empty tuple)\n\nList of compiled regular expression objects representing User-Agent strings that\nare not allowed to visit any page, systemwide. Use this for bad robots/crawlers.\nThis is only used if ``CommonMiddleware`` is installed (see\n:doc:`/topics/http/middleware`).\n\n.. setting:: EMAIL_BACKEND\n\nEMAIL_BACKEND\n-------------\n\nDefault: ``'django.core.mail.backends.smtp.EmailBackend'``\n\nThe backend to use for sending emails. For the list of available backends see\n:doc:`/topics/email`.\n\n.. setting:: EMAIL_FILE_PATH\n\nEMAIL_FILE_PATH\n---------------\n\nDefault: Not defined\n\nThe directory used by the ``file`` email backend to store output files.\n\n.. setting:: EMAIL_HOST\n\nEMAIL_HOST\n----------\n\nDefault: ``'localhost'``\n\nThe host to use for sending email.\n\nSee also :setting:`EMAIL_PORT`.\n\n.. setting:: EMAIL_HOST_PASSWORD\n\nEMAIL_HOST_PASSWORD\n-------------------\n\nDefault: ``''`` (Empty string)\n\nPassword to use for the SMTP server defined in :setting:`EMAIL_HOST`. This\nsetting is used in conjunction with :setting:`EMAIL_HOST_USER` when\nauthenticating to the SMTP server. If either of these settings is empty,\nDjango won't attempt authentication.\n\nSee also :setting:`EMAIL_HOST_USER`.\n\n.. setting:: EMAIL_HOST_USER\n\nEMAIL_HOST_USER\n---------------\n\nDefault: ``''`` (Empty string)\n\nUsername to use for the SMTP server defined in :setting:`EMAIL_HOST`.\nIf empty, Django won't attempt authentication.\n\nSee also :setting:`EMAIL_HOST_PASSWORD`.\n\n.. setting:: EMAIL_PORT\n\nEMAIL_PORT\n----------\n\nDefault: ``25``\n\nPort to use for the SMTP server defined in :setting:`EMAIL_HOST`.\n\n.. setting:: EMAIL_SUBJECT_PREFIX\n\nEMAIL_SUBJECT_PREFIX\n--------------------\n\nDefault: ``'[Django] '``\n\nSubject-line prefix for email messages sent with ``django.core.mail.mail_admins``\nor ``django.core.mail.mail_managers``. You'll probably want to include the\ntrailing space.\n\n.. setting:: EMAIL_USE_TLS\n\nEMAIL_USE_TLS\n-------------\n\nDefault: ``False``\n\nWhether to use a TLS (secure) connection when talking to the SMTP server.\n\n.. setting:: FILE_CHARSET\n\nFILE_CHARSET\n------------\n\nDefault: ``'utf-8'``\n\nThe character encoding used to decode any files read from disk. This includes\ntemplate files and initial SQL data files.\n\n.. setting:: FILE_UPLOAD_HANDLERS\n\nFILE_UPLOAD_HANDLERS\n--------------------\n\nDefault::\n\n    (\"django.core.files.uploadhandler.MemoryFileUploadHandler\",\n     \"django.core.files.uploadhandler.TemporaryFileUploadHandler\",)\n\nA tuple of handlers to use for uploading. See :doc:`/topics/files` for details.\n\n.. setting:: FILE_UPLOAD_MAX_MEMORY_SIZE\n\nFILE_UPLOAD_MAX_MEMORY_SIZE\n---------------------------\n\nDefault: ``2621440`` (i.e. 2.5 MB).\n\nThe maximum size (in bytes) that an upload will be before it gets streamed to\nthe file system. See :doc:`/topics/files` for details.\n\n.. setting:: FILE_UPLOAD_PERMISSIONS\n\nFILE_UPLOAD_PERMISSIONS\n-----------------------\n\nDefault: ``None``\n\nThe numeric mode (i.e. ``0644``) to set newly uploaded files to. For\nmore information about what these modes mean, see the documentation for\n:func:`os.chmod`.\n\nIf this isn't given or is ``None``, you'll get operating-system\ndependent behavior. On most platforms, temporary files will have a mode\nof ``0600``, and files saved from memory will be saved using the\nsystem's standard umask.\n\n.. warning::\n\n    **Always prefix the mode with a 0.**\n\n    If you're not familiar with file modes, please note that the leading\n    ``0`` is very important: it indicates an octal number, which is the\n    way that modes must be specified. If you try to use ``644``, you'll\n    get totally incorrect behavior.\n\n\n.. setting:: FILE_UPLOAD_TEMP_DIR\n\nFILE_UPLOAD_TEMP_DIR\n--------------------\n\nDefault: ``None``\n\nThe directory to store data temporarily while uploading files. If ``None``,\nDjango will use the standard temporary directory for the operating system. For\nexample, this will default to '/tmp' on \\*nix-style operating systems.\n\nSee :doc:`/topics/files` for details.\n\n.. setting:: FIRST_DAY_OF_WEEK\n\nFIRST_DAY_OF_WEEK\n-----------------\n\nDefault: ``0`` (Sunday)\n\nNumber representing the first day of the week. This is especially useful\nwhen displaying a calendar. This value is only used when not using\nformat internationalization, or when a format cannot be found for the\ncurrent locale.\n\nThe value must be an integer from 0 to 6, where 0 means Sunday, 1 means\nMonday and so on.\n\n.. setting:: FIXTURE_DIRS\n\nFIXTURE_DIRS\n-------------\n\nDefault: ``()`` (Empty tuple)\n\nList of directories searched for fixture files, in addition to the\n``fixtures`` directory of each application, in search order.\n\nNote that these paths should use Unix-style forward slashes, even on Windows.\n\nSee :ref:`initial-data-via-fixtures` and :ref:`topics-testing-fixtures`.\n\n.. setting:: FORCE_SCRIPT_NAME\n\nFORCE_SCRIPT_NAME\n------------------\n\nDefault: ``None``\n\nIf not ``None``, this will be used as the value of the ``SCRIPT_NAME``\nenvironment variable in any HTTP request. This setting can be used to override\nthe server-provided value of ``SCRIPT_NAME``, which may be a rewritten version\nof the preferred value or not supplied at all.\n\n.. setting:: FORMAT_MODULE_PATH\n\nFORMAT_MODULE_PATH\n------------------\n\nDefault: ``None``\n\nA full Python path to a Python package that contains format definitions for\nproject locales. If not ``None``, Django will check for a ``formats.py``\nfile, under the directory named as the current locale, and will use the\nformats defined on this file.\n\nFor example, if :setting:`FORMAT_MODULE_PATH` is set to ``mysite.formats``,\nand current language is ``en`` (English), Django will expect a directory tree\nlike::\n\n    mysite/\n        formats/\n            __init__.py\n            en/\n                __init__.py\n                formats.py\n\nAvailable formats are :setting:`DATE_FORMAT`, :setting:`TIME_FORMAT`,\n:setting:`DATETIME_FORMAT`, :setting:`YEAR_MONTH_FORMAT`,\n:setting:`MONTH_DAY_FORMAT`, :setting:`SHORT_DATE_FORMAT`,\n:setting:`SHORT_DATETIME_FORMAT`, :setting:`FIRST_DAY_OF_WEEK`,\n:setting:`DECIMAL_SEPARATOR`, :setting:`THOUSAND_SEPARATOR` and\n:setting:`NUMBER_GROUPING`.\n\n.. setting:: IGNORABLE_404_URLS\n\nIGNORABLE_404_URLS\n------------------\n\n.. versionadded:: 1.4\n\nDefault: ``()``\n\nList of compiled regular expression objects describing URLs that should be\nignored when reporting HTTP 404 errors via email (see\n:doc:`/howto/error-reporting`). Regular expressions are matched against\n:meth:`request's full paths <django.http.HttpRequest.get_full_path>` (including\nquery string, if any). Use this if your site does not provide a commonly\nrequested file such as ``favicon.ico`` or ``robots.txt``, or if it gets\nhammered by script kiddies.\n\nThis is only used if :setting:`SEND_BROKEN_LINK_EMAILS` is set to ``True`` and\n``CommonMiddleware`` is installed (see :doc:`/topics/http/middleware`).\n\n.. setting:: INSTALLED_APPS\n\nINSTALLED_APPS\n--------------\n\nDefault: ``()`` (Empty tuple)\n\nA tuple of strings designating all applications that are enabled in this Django\ninstallation. Each string should be a full Python path to a Python package that\ncontains a Django application, as created by :djadmin:`django-admin.py startapp\n<startapp>`.\n\n.. admonition:: App names must be unique\n\n    The application names (that is, the final dotted part of the\n    path to the module containing ``models.py``) defined in\n    :setting:`INSTALLED_APPS` *must* be unique. For example, you can't\n    include both ``django.contrib.auth`` and ``myproject.auth`` in\n    INSTALLED_APPS.\n\n.. setting:: INTERNAL_IPS\n\nINTERNAL_IPS\n------------\n\nDefault: ``()`` (Empty tuple)\n\nA tuple of IP addresses, as strings, that:\n\n* See debug comments, when :setting:`DEBUG` is ``True``\n* Receive X headers if the ``XViewMiddleware`` is installed (see\n  :doc:`/topics/http/middleware`)\n\n.. setting:: LANGUAGE_CODE\n\nLANGUAGE_CODE\n-------------\n\nDefault: ``'en-us'``\n\nA string representing the language code for this installation. This should be in\nstandard :term:`language format<language code>`. For example, U.S. English is\n``\"en-us\"``. See :doc:`/topics/i18n/index`.\n\n.. setting:: LANGUAGE_COOKIE_NAME\n\nLANGUAGE_COOKIE_NAME\n--------------------\n\nDefault: ``'django_language'``\n\nThe name of the cookie to use for the language cookie. This can be whatever\nyou want (but should be different from :setting:`SESSION_COOKIE_NAME`). See\n:doc:`/topics/i18n/index`.\n\n.. setting:: LANGUAGES\n\nLANGUAGES\n---------\n\nDefault: A tuple of all available languages. This list is continually growing\nand including a copy here would inevitably become rapidly out of date. You can\nsee the current list of translated languages by looking in\n``django/conf/global_settings.py`` (or view the `online source`_).\n\n.. _online source: https://github.com/django/django/blob/master/django/conf/global_settings.py\n\nThe list is a tuple of two-tuples in the format ``(language code, language\nname)``, the ``language code`` part should be a\n:term:`language name<language code>` -- for example, ``('ja', 'Japanese')``.\nThis specifies which languages are available for language selection. See\n:doc:`/topics/i18n/index`.\n\nGenerally, the default value should suffice. Only set this setting if you want\nto restrict language selection to a subset of the Django-provided languages.\n\nIf you define a custom :setting:`LANGUAGES` setting, it's OK to mark the\nlanguages as translation strings (as in the default value referred to above)\n-- but use a \"dummy\" ``gettext()`` function, not the one in\n``django.utils.translation``. You should *never* import\n``django.utils.translation`` from within your settings file, because that\nmodule in itself depends on the settings, and that would cause a circular\nimport.\n\nThe solution is to use a \"dummy\" ``gettext()`` function. Here's a sample\nsettings file::\n\n    gettext = lambda s: s\n\n    LANGUAGES = (\n        ('de', gettext('German')),\n        ('en', gettext('English')),\n    )\n\nWith this arrangement, ``django-admin.py makemessages`` will still find and\nmark these strings for translation, but the translation won't happen at\nruntime -- so you'll have to remember to wrap the languages in the *real*\n``gettext()`` in any code that uses :setting:`LANGUAGES` at runtime.\n\n.. setting:: LOCALE_PATHS\n\nLOCALE_PATHS\n------------\n\nDefault: ``()`` (Empty tuple)\n\nA tuple of directories where Django looks for translation files.\nSee :ref:`how-django-discovers-translations`.\n\nExample::\n\n    LOCALE_PATHS = (\n        '/home/www/project/common_files/locale',\n        '/var/local/translations/locale'\n    )\n\nDjango will look within each of these paths for the ``<locale_code>/LC_MESSAGES``\ndirectories containing the actual translation files.\n\n.. setting:: LOGGING\n\nLOGGING\n-------\n\nDefault: A logging configuration dictionary.\n\nA data structure containing configuration information. The contents of\nthis data structure will be passed as the argument to the\nconfiguration method described in :setting:`LOGGING_CONFIG`.\n\nThe default logging configuration passes HTTP 500 server errors to an\nemail log handler; all other log messages are given to a NullHandler.\n\n.. setting:: LOGGING_CONFIG\n\nLOGGING_CONFIG\n--------------\n\nDefault: ``'django.utils.log.dictConfig'``\n\nA path to a callable that will be used to configure logging in the\nDjango project. Points at a instance of Python's `dictConfig`_\nconfiguration method by default.\n\nIf you set :setting:`LOGGING_CONFIG` to ``None``, the logging\nconfiguration process will be skipped.\n\n.. _dictConfig: http://docs.python.org/library/logging.config.html#configuration-dictionary-schema\n\n.. setting:: LOGIN_REDIRECT_URL\n\nLOGIN_REDIRECT_URL\n------------------\n\nDefault: ``'/accounts/profile/'``\n\nThe URL where requests are redirected after login when the\n``contrib.auth.login`` view gets no ``next`` parameter.\n\nThis is used by the :func:`~django.contrib.auth.decorators.login_required`\ndecorator, for example.\n\n.. versionchanged:: 1.5\n\nThis setting now also accepts view function names and\n:ref:`named URL patterns <naming-url-patterns>` which can be used to reduce\nconfiguration duplication since you no longer have to define the URL in two\nplaces (``settings`` and URLconf).\nFor backward compatibility reasons the default remains unchanged.\n\n.. setting:: LOGIN_URL\n\nLOGIN_URL\n---------\n\nDefault: ``'/accounts/login/'``\n\nThe URL where requests are redirected for login, especially when using the\n:func:`~django.contrib.auth.decorators.login_required` decorator.\n\n.. versionchanged:: 1.5\n\nThis setting now also accepts view function names and\n:ref:`named URL patterns <naming-url-patterns>` which can be used to reduce\nconfiguration duplication since you no longer have to define the URL in two\nplaces (``settings`` and URLconf).\nFor backward compatibility reasons the default remains unchanged.\n\n.. setting:: LOGOUT_URL\n\nLOGOUT_URL\n----------\n\nDefault: ``'/accounts/logout/'``\n\nLOGIN_URL counterpart.\n\n.. setting:: MANAGERS\n\nMANAGERS\n--------\n\nDefault: ``()`` (Empty tuple)\n\nA tuple in the same format as :setting:`ADMINS` that specifies who should get\nbroken-link notifications when :setting:`SEND_BROKEN_LINK_EMAILS` is ``True``.\n\n.. setting:: MEDIA_ROOT\n\nMEDIA_ROOT\n----------\n\nDefault: ``''`` (Empty string)\n\nAbsolute filesystem path to the directory that will hold :doc:`user-uploaded\nfiles </topics/files>`.\n\nExample: ``\"/var/www/example.com/media/\"``\n\nSee also :setting:`MEDIA_URL`.\n\n.. setting:: MEDIA_URL\n\nMEDIA_URL\n---------\n\nDefault: ``''`` (Empty string)\n\nURL that handles the media served from :setting:`MEDIA_ROOT`, used\nfor :doc:`managing stored files </topics/files>`. It must end in a slash if set\nto a non-empty value.\n\nExample: ``\"http://media.example.com/\"``\n\nMESSAGE_LEVEL\n-------------\n\nDefault: ``messages.INFO``\n\nSets the minimum message level that will be recorded by the messages\nframework. See the :doc:`messages documentation </ref/contrib/messages>` for\nmore details.\n\nMESSAGE_STORAGE\n---------------\n\nDefault: ``'django.contrib.messages.storage.fallback.FallbackStorage'``\n\nControls where Django stores message data.  See the\n:doc:`messages documentation </ref/contrib/messages>` for more details.\n\nMESSAGE_TAGS\n------------\n\nDefault::\n\n    {messages.DEBUG: 'debug',\n    messages.INFO: 'info',\n    messages.SUCCESS: 'success',\n    messages.WARNING: 'warning',\n    messages.ERROR: 'error',}\n\nSets the mapping of message levels to message tags. See the\n:doc:`messages documentation </ref/contrib/messages>` for more details.\n\n.. setting:: MIDDLEWARE_CLASSES\n\nMIDDLEWARE_CLASSES\n------------------\n\nDefault::\n\n    ('django.middleware.common.CommonMiddleware',\n     'django.contrib.sessions.middleware.SessionMiddleware',\n     'django.middleware.csrf.CsrfViewMiddleware',\n     'django.contrib.auth.middleware.AuthenticationMiddleware',\n     'django.contrib.messages.middleware.MessageMiddleware',)\n\nA tuple of middleware classes to use. See :doc:`/topics/http/middleware`.\n\n.. setting:: MONTH_DAY_FORMAT\n\nMONTH_DAY_FORMAT\n----------------\n\nDefault: ``'F j'``\n\nThe default formatting to use for date fields on Django admin change-list\npages -- and, possibly, by other parts of the system -- in cases when only the\nmonth and day are displayed.\n\nFor example, when a Django admin change-list page is being filtered by a date\ndrilldown, the header for a given day displays the day and month. Different\nlocales have different formats. For example, U.S. English would say\n\"January 1,\" whereas Spanish might say \"1 Enero.\"\n\nSee :tfilter:`allowed date format strings <date>`. See also\n:setting:`DATE_FORMAT`, :setting:`DATETIME_FORMAT`,\n:setting:`TIME_FORMAT` and :setting:`YEAR_MONTH_FORMAT`.\n\n.. setting:: NUMBER_GROUPING\n\nNUMBER_GROUPING\n----------------\n\nDefault: ``0``\n\nNumber of digits grouped together on the integer part of a number.\n\nCommon use is to display a thousand separator. If this setting is ``0``, then\nno grouping will be applied to the number. If this setting is greater than\n``0``, then :setting:`THOUSAND_SEPARATOR` will be used as the separator between\nthose groups.\n\nNote that if :setting:`USE_L10N` is set to ``True``, then the locale-dictated\nformat has higher precedence and will be applied instead.\n\nSee also :setting:`DECIMAL_SEPARATOR`, :setting:`THOUSAND_SEPARATOR` and\n:setting:`USE_THOUSAND_SEPARATOR`.\n\n.. setting:: PASSWORD_HASHERS\n\nPASSWORD_HASHERS\n----------------\n\n.. versionadded:: 1.4\n\nSee :ref:`auth_password_storage`.\n\nDefault::\n\n    ('django.contrib.auth.hashers.PBKDF2PasswordHasher',\n     'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher',\n     'django.contrib.auth.hashers.BCryptPasswordHasher',\n     'django.contrib.auth.hashers.SHA1PasswordHasher',\n     'django.contrib.auth.hashers.MD5PasswordHasher',\n     'django.contrib.auth.hashers.UnsaltedMD5PasswordHasher',\n     'django.contrib.auth.hashers.CryptPasswordHasher',)\n\n.. setting:: PASSWORD_RESET_TIMEOUT_DAYS\n\nPASSWORD_RESET_TIMEOUT_DAYS\n---------------------------\n\nDefault: ``3``\n\nThe number of days a password reset link is valid for. Used by the\n:mod:`django.contrib.auth` password reset mechanism.\n\n.. setting:: PREPEND_WWW\n\nPREPEND_WWW\n-----------\n\nDefault: ``False``\n\nWhether to prepend the \"www.\" subdomain to URLs that don't have it. This is only\nused if :class:`~django.middleware.common.CommonMiddleware` is installed\n(see :doc:`/topics/http/middleware`). See also :setting:`APPEND_SLASH`.\n\n.. setting:: PROFANITIES_LIST\n\nPROFANITIES_LIST\n----------------\n\nDefault: ``()`` (Empty tuple)\n\nA tuple of profanities, as strings, that will be forbidden in comments when\n``COMMENTS_ALLOW_PROFANITIES`` is ``False``.\n\n.. setting:: RESTRUCTUREDTEXT_FILTER_SETTINGS\n\nRESTRUCTUREDTEXT_FILTER_SETTINGS\n--------------------------------\n\nDefault: ``{}``\n\nA dictionary containing settings for the ``restructuredtext`` markup filter from\nthe :doc:`django.contrib.markup application </ref/contrib/markup>`. They override\nthe default writer settings. See the Docutils restructuredtext `writer settings\ndocs`_ for details.\n\n.. _writer settings docs: http://docutils.sourceforge.net/docs/user/config.html#html4css1-writer\n\n.. setting:: ROOT_URLCONF\n\nROOT_URLCONF\n------------\n\nDefault: Not defined\n\nA string representing the full Python import path to your root URLconf. For example:\n``\"mydjangoapps.urls\"``. Can be overridden on a per-request basis by\nsetting the attribute ``urlconf`` on the incoming ``HttpRequest``\nobject. See :ref:`how-django-processes-a-request` for details.\n\n.. setting:: SECRET_KEY\n\nSECRET_KEY\n----------\n\nDefault: ``''`` (Empty string)\n\nA secret key for a particular Django installation. This is used to provide\n:doc:`cryptographic signing </topics/signing>`, and should be set to a unique,\nunpredictable value.\n\n:djadmin:`django-admin.py startproject <startproject>` automatically adds a\nrandomly-generated ``SECRET_KEY`` to each new project.\n\n.. warning::\n\n    **Keep this value secret.**\n\n    Running Django with a known :setting:`SECRET_KEY` defeats many of Django's\n    security protections, and can lead to privilege escalation and remote code\n    execution vulnerabilities.\n\n.. versionchanged:: 1.5\n    Django will now refuse to start if :setting:`SECRET_KEY` is not set.\n\n.. setting:: SECURE_PROXY_SSL_HEADER\n\nSECURE_PROXY_SSL_HEADER\n-----------------------\n\n.. versionadded:: 1.4\n\nDefault: ``None``\n\nA tuple representing a HTTP header/value combination that signifies a request\nis secure. This controls the behavior of the request object's ``is_secure()``\nmethod.\n\nThis takes some explanation. By default, ``is_secure()`` is able to determine\nwhether a request is secure by looking at whether the requested URL uses\n\"https://\". This is important for Django's CSRF protection, and may be used\nby your own code or third-party apps.\n\nIf your Django app is behind a proxy, though, the proxy may be \"swallowing\" the\nfact that a request is HTTPS, using a non-HTTPS connection between the proxy\nand Django. In this case, ``is_secure()`` would always return ``False`` -- even\nfor requests that were made via HTTPS by the end user.\n\nIn this situation, you'll want to configure your proxy to set a custom HTTP\nheader that tells Django whether the request came in via HTTPS, and you'll want\nto set ``SECURE_PROXY_SSL_HEADER`` so that Django knows what header to look\nfor.\n\nYou'll need to set a tuple with two elements -- the name of the header to look\nfor and the required value. For example::\n\n    SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')\n\nHere, we're telling Django that we trust the ``X-Forwarded-Proto`` header\nthat comes from our proxy, and any time its value is ``'https'``, then the\nrequest is guaranteed to be secure (i.e., it originally came in via HTTPS).\nObviously, you should *only* set this setting if you control your proxy or\nhave some other guarantee that it sets/strips this header appropriately.\n\nNote that the header needs to be in the format as used by ``request.META`` --\nall caps and likely starting with ``HTTP_``. (Remember, Django automatically\nadds ``'HTTP_'`` to the start of x-header names before making the header\navailable in ``request.META``.)\n\n.. warning::\n\n    **You will probably open security holes in your site if you set this\n    without knowing what you're doing. And if you fail to set it when you\n    should. Seriously.**\n\n    Make sure ALL of the following are true before setting this (assuming the\n    values from the example above):\n\n    * Your Django app is behind a proxy.\n    * Your proxy strips the ``X-Forwarded-Proto`` header from all incoming\n      requests. In other words, if end users include that header in their\n      requests, the proxy will discard it.\n    * Your proxy sets the ``X-Forwarded-Proto`` header and sends it to Django,\n      but only for requests that originally come in via HTTPS.\n\n    If any of those are not true, you should keep this setting set to ``None``\n    and find another way of determining HTTPS, perhaps via custom middleware.\n\n.. setting:: SEND_BROKEN_LINK_EMAILS\n\nSEND_BROKEN_LINK_EMAILS\n-----------------------\n\nDefault: ``False``\n\nWhether to send an email to the :setting:`MANAGERS` each time somebody visits\na Django-powered page that is 404ed with a non-empty referer (i.e., a broken\nlink). This is only used if ``CommonMiddleware`` is installed (see\n:doc:`/topics/http/middleware`). See also :setting:`IGNORABLE_404_URLS` and\n:doc:`/howto/error-reporting`.\n\n.. setting:: SERIALIZATION_MODULES\n\nSERIALIZATION_MODULES\n---------------------\n\nDefault: Not defined.\n\nA dictionary of modules containing serializer definitions (provided as\nstrings), keyed by a string identifier for that serialization type. For\nexample, to define a YAML serializer, use::\n\n    SERIALIZATION_MODULES = { 'yaml' : 'path.to.yaml_serializer' }\n\n.. setting:: SERVER_EMAIL\n\nSERVER_EMAIL\n------------\n\nDefault: ``'root@localhost'``\n\nThe email address that error messages come from, such as those sent to\n:setting:`ADMINS` and :setting:`MANAGERS`.\n\n.. setting:: SESSION_COOKIE_AGE\n\nSESSION_COOKIE_AGE\n------------------\n\nDefault: ``1209600`` (2 weeks, in seconds)\n\nThe age of session cookies, in seconds. See :doc:`/topics/http/sessions`.\n\n.. setting:: SESSION_COOKIE_DOMAIN\n\nSESSION_COOKIE_DOMAIN\n---------------------\n\nDefault: ``None``\n\nThe domain to use for session cookies. Set this to a string such as\n``\".example.com\"`` for cross-domain cookies, or use ``None`` for a standard\ndomain cookie. See the :doc:`/topics/http/sessions`.\n\n.. setting:: SESSION_COOKIE_HTTPONLY\n\nSESSION_COOKIE_HTTPONLY\n-----------------------\n\nDefault: ``True``\n\nWhether to use HTTPOnly flag on the session cookie. If this is set to\n``True``, client-side JavaScript will not to be able to access the\nsession cookie.\n\nHTTPOnly_ is a flag included in a Set-Cookie HTTP response header. It\nis not part of the :rfc:`2109` standard for cookies, and it isn't honored\nconsistently by all browsers. However, when it is honored, it can be a\nuseful way to mitigate the risk of client side script accessing the\nprotected cookie data.\n\n.. _HTTPOnly: https://www.owasp.org/index.php/HTTPOnly\n\n.. versionchanged:: 1.4\n    The default value of the setting was changed from ``False`` to ``True``.\n\n.. setting:: SESSION_COOKIE_NAME\n\nSESSION_COOKIE_NAME\n-------------------\n\nDefault: ``'sessionid'``\n\nThe name of the cookie to use for sessions. This can be whatever you want (but\nshould be different from :setting:`LANGUAGE_COOKIE_NAME`).\nSee the :doc:`/topics/http/sessions`.\n\n.. setting:: SESSION_COOKIE_PATH\n\nSESSION_COOKIE_PATH\n-------------------\n\nDefault: ``'/'``\n\nThe path set on the session cookie. This should either match the URL path of your\nDjango installation or be parent of that path.\n\nThis is useful if you have multiple Django instances running under the same\nhostname. They can use different cookie paths, and each instance will only see\nits own session cookie.\n\n.. setting:: SESSION_CACHE_ALIAS\n\nSESSION_CACHE_ALIAS\n-------------------\n\nDefault: ``default``\n\nIf you're using :ref:`cache-based session storage <cached-sessions-backend>`,\nthis selects the cache to use.\n\n.. setting:: SESSION_COOKIE_SECURE\n\nSESSION_COOKIE_SECURE\n---------------------\n\nDefault: ``False``\n\nWhether to use a secure cookie for the session cookie. If this is set to\n``True``, the cookie will be marked as \"secure,\" which means browsers may\nensure that the cookie is only sent under an HTTPS connection.\nSee the :doc:`/topics/http/sessions`.\n\n.. setting:: SESSION_ENGINE\n\nSESSION_ENGINE\n--------------\n\nDefault: ``django.contrib.sessions.backends.db``\n\nControls where Django stores session data. Valid values are:\n\n* ``'django.contrib.sessions.backends.db'``\n* ``'django.contrib.sessions.backends.file'``\n* ``'django.contrib.sessions.backends.cache'``\n* ``'django.contrib.sessions.backends.cached_db'``\n* ``'django.contrib.sessions.backends.signed_cookies'``\n\nSee :doc:`/topics/http/sessions`.\n\n.. setting:: SESSION_EXPIRE_AT_BROWSER_CLOSE\n\nSESSION_EXPIRE_AT_BROWSER_CLOSE\n-------------------------------\n\nDefault: ``False``\n\nWhether to expire the session when the user closes his or her browser.\nSee the :doc:`/topics/http/sessions`.\n\n.. setting:: SESSION_FILE_PATH\n\nSESSION_FILE_PATH\n-----------------\n\nDefault: ``None``\n\nIf you're using file-based session storage, this sets the directory in\nwhich Django will store session data. See :doc:`/topics/http/sessions`. When\nthe default value (``None``) is used, Django will use the standard temporary\ndirectory for the system.\n\n.. setting:: SESSION_SAVE_EVERY_REQUEST\n\nSESSION_SAVE_EVERY_REQUEST\n--------------------------\n\nDefault: ``False``\n\nWhether to save the session data on every request. See\n:doc:`/topics/http/sessions`.\n\n.. setting:: SHORT_DATE_FORMAT\n\nSHORT_DATE_FORMAT\n-----------------\n\nDefault: ``m/d/Y`` (e.g. ``12/31/2003``)\n\nAn available formatting that can be used for displaying date fields on\ntemplates. Note that if :setting:`USE_L10N` is set to ``True``, then the\ncorresponding locale-dictated format has higher precedence and will be applied.\nSee :tfilter:`allowed date format strings <date>`.\n\nSee also :setting:`DATE_FORMAT` and :setting:`SHORT_DATETIME_FORMAT`.\n\n.. setting:: SHORT_DATETIME_FORMAT\n\nSHORT_DATETIME_FORMAT\n---------------------\n\nDefault: ``m/d/Y P`` (e.g. ``12/31/2003 4 p.m.``)\n\nAn available formatting that can be used for displaying datetime fields on\ntemplates. Note that if :setting:`USE_L10N` is set to ``True``, then the\ncorresponding locale-dictated format has higher precedence and will be applied.\nSee :tfilter:`allowed date format strings <date>`.\n\nSee also :setting:`DATE_FORMAT` and :setting:`SHORT_DATE_FORMAT`.\n\n.. setting:: SIGNING_BACKEND\n\nSIGNING_BACKEND\n---------------\n\n.. versionadded:: 1.4\n\nDefault: 'django.core.signing.TimestampSigner'\n\nThe backend used for signing cookies and other data.\n\nSee also the :doc:`/topics/signing` documentation.\n\n.. setting:: SITE_ID\n\nSITE_ID\n-------\n\nDefault: Not defined\n\nThe ID, as an integer, of the current site in the ``django_site`` database\ntable. This is used so that application data can hook into specific site(s)\nand a single database can manage content for multiple sites.\n\nSee :doc:`/ref/contrib/sites`.\n\n.. _site framework docs: ../sites/\n\n.. setting:: STATIC_ROOT\n\nSTATIC_ROOT\n-----------\n\nDefault: ``''`` (Empty string)\n\nThe absolute path to the directory where :djadmin:`collectstatic` will collect\nstatic files for deployment.\n\nExample: ``\"/var/www/example.com/static/\"``\n\nIf the :doc:`staticfiles</ref/contrib/staticfiles>` contrib app is enabled\n(default) the :djadmin:`collectstatic` management command will collect static\nfiles into this directory. See the howto on :doc:`managing static\nfiles</howto/static-files>` for more details about usage.\n\n.. warning::\n\n    This should be an (initially empty) destination directory for collecting\n    your static files from their permanent locations into one directory for\n    ease of deployment; it is **not** a place to store your static files\n    permanently. You should do that in directories that will be found by\n    :doc:`staticfiles</ref/contrib/staticfiles>`'s\n    :setting:`finders<STATICFILES_FINDERS>`, which by default, are\n    ``'static/'`` app sub-directories and any directories you include in\n    :setting:`STATICFILES_DIRS`).\n\nSee :doc:`staticfiles reference</ref/contrib/staticfiles>` and\n:setting:`STATIC_URL`.\n\n.. setting:: STATIC_URL\n\nSTATIC_URL\n----------\n\nDefault: ``None``\n\nURL to use when referring to static files located in :setting:`STATIC_ROOT`.\n\nExample: ``\"/static/\"`` or ``\"http://static.example.com/\"``\n\nIf not ``None``, this will be used as the base path for\n:ref:`media definitions<form-media-paths>` and the\n:doc:`staticfiles app</ref/contrib/staticfiles>`.\n\nIt must end in a slash if set to a non-empty value.\n\nSee :setting:`STATIC_ROOT`.\n\n.. setting:: TEMPLATE_CONTEXT_PROCESSORS\n\nTEMPLATE_CONTEXT_PROCESSORS\n---------------------------\n\nDefault::\n\n    (\"django.contrib.auth.context_processors.auth\",\n    \"django.core.context_processors.debug\",\n    \"django.core.context_processors.i18n\",\n    \"django.core.context_processors.media\",\n    \"django.core.context_processors.static\",\n    \"django.core.context_processors.tz\",\n    \"django.contrib.messages.context_processors.messages\")\n\nA tuple of callables that are used to populate the context in ``RequestContext``.\nThese callables take a request object as their argument and return a dictionary\nof items to be merged into the context.\n\n.. versionadded:: 1.4\n    The ``django.core.context_processors.tz`` context processor\n    was added in this release.\n\n.. setting:: TEMPLATE_DEBUG\n\nTEMPLATE_DEBUG\n--------------\n\nDefault: ``False``\n\nA boolean that turns on/off template debug mode. If this is ``True``, the fancy\nerror page will display a detailed report for any exception raised during\ntemplate rendering. This report contains the relevant snippet of the template,\nwith the appropriate line highlighted.\n\nNote that Django only displays fancy error pages if :setting:`DEBUG` is ``True``, so\nyou'll want to set that to take advantage of this setting.\n\nSee also :setting:`DEBUG`.\n\n.. setting:: TEMPLATE_DIRS\n\nTEMPLATE_DIRS\n-------------\n\nDefault: ``()`` (Empty tuple)\n\nList of locations of the template source files searched by\n:class:`django.template.loaders.filesystem.Loader`, in search order.\n\nNote that these paths should use Unix-style forward slashes, even on Windows.\n\nSee :doc:`/topics/templates`.\n\n.. setting:: TEMPLATE_LOADERS\n\nTEMPLATE_LOADERS\n----------------\n\nDefault::\n\n     ('django.template.loaders.filesystem.Loader',\n      'django.template.loaders.app_directories.Loader')\n\nA tuple of template loader classes, specified as strings. Each ``Loader`` class\nknows how to import templates from a particular source. Optionally, a tuple can be\nused instead of a string. The first item in the tuple should be the ``Loader``'s\nmodule, subsequent items are passed to the ``Loader`` during initialization. See\n:doc:`/ref/templates/api`.\n\n.. setting:: TEMPLATE_STRING_IF_INVALID\n\nTEMPLATE_STRING_IF_INVALID\n--------------------------\n\nDefault: ``''`` (Empty string)\n\nOutput, as a string, that the template system should use for invalid (e.g.\nmisspelled) variables. See :ref:`invalid-template-variables`..\n\n.. setting:: TEST_RUNNER\n\nTEST_RUNNER\n-----------\n\nDefault: ``'django.test.simple.DjangoTestSuiteRunner'``\n\nThe name of the class to use for starting the test suite. See\n:ref:`other-testing-frameworks`.\n\n.. setting:: THOUSAND_SEPARATOR\n\nTHOUSAND_SEPARATOR\n------------------\n\nDefault: ``,`` (Comma)\n\nDefault thousand separator used when formatting numbers. This setting is\nused only when :setting:`USE_THOUSAND_SEPARATOR` is ``True`` and\n:setting:`NUMBER_GROUPING` is greater than ``0``.\n\nNote that if :setting:`USE_L10N` is set to ``True``, then the locale-dictated\nformat has higher precedence and will be applied instead.\n\nSee also :setting:`NUMBER_GROUPING`, :setting:`DECIMAL_SEPARATOR` and\n:setting:`USE_THOUSAND_SEPARATOR`.\n\n.. setting:: TIME_FORMAT\n\nTIME_FORMAT\n-----------\n\nDefault: ``'P'`` (e.g. ``4 p.m.``)\n\nThe default formatting to use for displaying time fields in any part of the\nsystem. Note that if :setting:`USE_L10N` is set to ``True``, then the\nlocale-dictated format has higher precedence and will be applied instead. See\n:tfilter:`allowed date format strings <date>`.\n\nSee also :setting:`DATE_FORMAT` and :setting:`DATETIME_FORMAT`.\n\n.. setting:: TIME_INPUT_FORMATS\n\nTIME_INPUT_FORMATS\n------------------\n\nDefault::\n\n    (\n        '%H:%M:%S',     # '14:30:59'\n        '%H:%M',        # '14:30'\n    )\n\nA tuple of formats that will be accepted when inputting data on a time field.\nFormats will be tried in order, using the first valid one. Note that these\nformat strings use Python's datetime_ module syntax, not the format strings\nfrom the ``date`` Django template tag.\n\nWhen :setting:`USE_L10N` is ``True``, the locale-dictated format has higher\nprecedence and will be applied instead.\n\nSee also :setting:`DATE_INPUT_FORMATS` and :setting:`DATETIME_INPUT_FORMATS`.\n\n.. _datetime: http://docs.python.org/library/datetime.html#strftime-strptime-behavior\n\n.. setting:: TIME_ZONE\n\nTIME_ZONE\n---------\n\nDefault: ``'America/Chicago'``\n\n.. versionchanged:: 1.4\n   The meaning of this setting now depends on the value of :setting:`USE_TZ`.\n\nA string representing the time zone for this installation, or\n``None``. `See available choices`_. (Note that list of available\nchoices lists more than one on the same line; you'll want to use just\none of the choices for a given time zone. For instance, one line says\n``'Europe/London GB GB-Eire'``, but you should use the first bit of\nthat -- ``'Europe/London'`` -- as your :setting:`TIME_ZONE` setting.)\n\nNote that this isn't necessarily the time zone of the server. For example, one\nserver may serve multiple Django-powered sites, each with a separate time zone\nsetting.\n\nWhen :setting:`USE_TZ` is ``False``, this is the time zone in which Django\nwill store all datetimes. When :setting:`USE_TZ` is ``True``, this is the\ndefault time zone that Django will use to display datetimes in templates and\nto interpret datetimes entered in forms.\n\nDjango sets the ``os.environ['TZ']`` variable to the time zone you specify in\nthe :setting:`TIME_ZONE` setting. Thus, all your views and models will\nautomatically operate in this time zone. However, Django won't set the ``TZ``\nenvironment variable under the following conditions:\n\n* If you're using the manual configuration option as described in\n  :ref:`manually configuring settings\n  <settings-without-django-settings-module>`, or\n\n* If you specify ``TIME_ZONE = None``. This will cause Django to fall back to\n  using the system timezone. However, this is discouraged when :setting:`USE_TZ\n  = True <USE_TZ>`, because it makes conversions between local time and UTC\n  less reliable.\n\nIf Django doesn't set the ``TZ`` environment variable, it's up to you\nto ensure your processes are running in the correct environment.\n\n.. note::\n    Django cannot reliably use alternate time zones in a Windows environment.\n    If you're running Django on Windows, :setting:`TIME_ZONE` must be set to\n    match the system time zone.\n\n.. _See available choices: http://www.postgresql.org/docs/8.1/static/datetime-keywords.html#DATETIME-TIMEZONE-SET-TABLE\n\n.. _pytz: http://pytz.sourceforge.net/\n\n.. setting:: TRANSACTIONS_MANAGED\n\nTRANSACTIONS_MANAGED\n--------------------\n\nDefault: ``False``\n\nSet this to ``True`` if you want to :ref:`disable Django's transaction\nmanagement <deactivate-transaction-management>` and implement your own.\n\n.. setting:: USE_ETAGS\n\nUSE_ETAGS\n---------\n\nDefault: ``False``\n\nA boolean that specifies whether to output the \"Etag\" header. This saves\nbandwidth but slows down performance. This is used by the ``CommonMiddleware``\n(see :doc:`/topics/http/middleware`) and in the``Cache Framework``\n(see :doc:`/topics/cache`).\n\n.. setting:: USE_I18N\n\nUSE_I18N\n--------\n\nDefault: ``True``\n\nA boolean that specifies whether Django's translation system should be enabled.\nThis provides an easy way to turn it off, for performance. If this is set to\n``False``, Django will make some optimizations so as not to load the\ntranslation machinery.\n\nSee also :setting:`LANGUAGE_CODE`, :setting:`USE_L10N` and :setting:`USE_TZ`.\n\n.. setting:: USE_L10N\n\nUSE_L10N\n--------\n\nDefault: ``False``\n\nA boolean that specifies if localized formatting of data will be enabled by\ndefault or not. If this is set to ``True``, e.g. Django will display numbers and\ndates using the format of the current locale.\n\nSee also :setting:`LANGUAGE_CODE`, :setting:`USE_I18N` and :setting:`USE_TZ`.\n\n.. note::\n\n    The default :file:`settings.py` file created by :djadmin:`django-admin.py\n    startproject <startproject>` includes ``USE_L10N = True`` for convenience.\n\n.. setting:: USE_THOUSAND_SEPARATOR\n\nUSE_THOUSAND_SEPARATOR\n----------------------\n\nDefault: ``False``\n\nA boolean that specifies whether to display numbers using a thousand separator.\nWhen :setting:`USE_L10N` is set to ``True`` and if this is also set to\n``True``, Django will use the values of :setting:`THOUSAND_SEPARATOR` and\n:setting:`NUMBER_GROUPING` to format numbers.\n\nSee also :setting:`DECIMAL_SEPARATOR`, :setting:`NUMBER_GROUPING` and\n:setting:`THOUSAND_SEPARATOR`.\n\n.. setting:: USE_TZ\n\nUSE_TZ\n------\n\n.. versionadded:: 1.4\n\nDefault: ``False``\n\nA boolean that specifies if datetimes will be timezone-aware by default or not.\nIf this is set to ``True``, Django will use timezone-aware datetimes internally.\nOtherwise, Django will use naive datetimes in local time.\n\nSee also :setting:`TIME_ZONE`, :setting:`USE_I18N` and :setting:`USE_L10N`.\n\n.. note::\n\n    The default :file:`settings.py` file created by\n    :djadmin:`django-admin.py startproject <startproject>` includes\n    ``USE_TZ = True`` for convenience.\n\n.. setting:: USE_X_FORWARDED_HOST\n\nUSE_X_FORWARDED_HOST\n--------------------\n\nDefault: ``False``\n\nA boolean that specifies whether to use the X-Forwarded-Host header in\npreference to the Host header. This should only be enabled if a proxy\nwhich sets this header is in use.\n\n.. setting:: WSGI_APPLICATION\n\nWSGI_APPLICATION\n----------------\n\n.. versionadded:: 1.4\n\nDefault: ``None``\n\nThe full Python path of the WSGI application object that Django's built-in\nservers (e.g. :djadmin:`runserver`) will use. The :djadmin:`django-admin.py\nstartproject <startproject>` management command will create a simple\n``wsgi.py`` file with an ``application`` callable in it, and point this setting\nto that ``application``.\n\nIf not set, the return value of ``django.core.wsgi.get_wsgi_application()``\nwill be used. In this case, the behavior of :djadmin:`runserver` will be\nidentical to previous Django versions.\n\n.. setting:: YEAR_MONTH_FORMAT\n\nYEAR_MONTH_FORMAT\n-----------------\n\nDefault: ``'F Y'``\n\nThe default formatting to use for date fields on Django admin change-list\npages -- and, possibly, by other parts of the system -- in cases when only the\nyear and month are displayed.\n\nFor example, when a Django admin change-list page is being filtered by a date\ndrilldown, the header for a given month displays the month and the year.\nDifferent locales have different formats. For example, U.S. English would say\n\"January 2006,\" whereas another locale might say \"2006/January.\"\n\nSee :tfilter:`allowed date format strings <date>`. See also\n:setting:`DATE_FORMAT`, :setting:`DATETIME_FORMAT`, :setting:`TIME_FORMAT`\nand :setting:`MONTH_DAY_FORMAT`.\n\n.. setting:: X_FRAME_OPTIONS\n\nX_FRAME_OPTIONS\n---------------\n\nDefault: ``'SAMEORIGIN'``\n\nThe default value for the X-Frame-Options header used by\n:class:`~django.middleware.clickjacking.XFrameOptionsMiddleware`. See the\n:doc:`clickjacking protection </ref/clickjacking/>` documentation.\n\nDeprecated settings\n===================\n\n.. setting:: AUTH_PROFILE_MODULE\n\nAUTH_PROFILE_MODULE\n-------------------\n\n.. deprecated:: 1.5\n    With the introduction of :ref:`custom User models <auth-custom-user>`,\n    the use of :setting:`AUTH_PROFILE_MODULE` to define a single profile\n    model is no longer supported. See the\n    :doc:`Django 1.5 release notes</releases/1.5>` for more information.\n\nDefault: Not defined\n\nThe site-specific user profile model used by this site. See\n:ref:`User profiles <auth-profiles>`.\n\n.. setting:: IGNORABLE_404_ENDS\n\nIGNORABLE_404_ENDS\n------------------\n\n.. deprecated:: 1.4\n   This setting has been superseded by :setting:`IGNORABLE_404_URLS`.\n\n.. setting:: IGNORABLE_404_STARTS\n\nIGNORABLE_404_STARTS\n--------------------\n\n.. deprecated:: 1.4\n   This setting has been superseded by :setting:`IGNORABLE_404_URLS`.\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/signals.txt",
    "content": "=======\nSignals\n=======\n\nA list of all the signals that Django sends.\n\n.. seealso::\n\n    See the documentation on the :doc:`signal dispatcher </topics/signals>` for\n    information regarding how to register for and receive signals.\n\n    The :doc:`comment framework </ref/contrib/comments/index>` sends a :doc:`set\n    of comment-related signals </ref/contrib/comments/signals>`.\n\n    The :doc:`authentication framework </topics/auth/index>` sends :ref:`signals when\n    a user is logged in / out <topics-auth-signals>`.\n\nModel signals\n=============\n\n.. module:: django.db.models.signals\n   :synopsis: Signals sent by the model system.\n\nThe :mod:`django.db.models.signals` module defines a set of signals sent by the\nmodule system.\n\n.. warning::\n\n    Many of these signals are sent by various model methods like\n    ``__init__()`` or :meth:`~django.db.models.Model.save` that you can\n    override in your own code.\n\n    If you override these methods on your model, you must call the parent class'\n    methods for this signals to be sent.\n\n    Note also that Django stores signal handlers as weak references by default,\n    so if your handler is a local function, it may be garbage collected.  To\n    prevent this, pass ``weak=False`` when you call the signal's :meth:`~django.dispatch.Signal.connect`.\n\npre_init\n--------\n\n.. attribute:: django.db.models.signals.pre_init\n   :module:\n\n.. ^^^^^^^ this :module: hack keeps Sphinx from prepending the module.\n\nWhenever you instantiate a Django model, this signal is sent at the beginning\nof the model's ``__init__()`` method.\n\nArguments sent with this signal:\n\n``sender``\n    The model class that just had an instance created.\n\n``args``\n    A list of positional arguments passed to ``__init__()``:\n\n``kwargs``\n    A dictionary of keyword arguments passed to ``__init__()``:\n\nFor example, the :doc:`tutorial </intro/tutorial01>` has this line::\n\n    p = Poll(question=\"What's up?\", pub_date=datetime.now())\n\nThe arguments sent to a :data:`pre_init` handler would be:\n\n==========  ===============================================================\nArgument    Value\n==========  ===============================================================\n``sender``  ``Poll`` (the class itself)\n\n``args``    ``[]`` (an empty list because there were no positional\n            arguments passed to ``__init__()``.)\n\n``kwargs``  ``{'question': \"What's up?\", 'pub_date': datetime.now()}``\n==========  ===============================================================\n\npost_init\n---------\n\n.. data:: django.db.models.signals.post_init\n   :module:\n\nLike pre_init, but this one is sent when the ``__init__()`` method finishes.\n\nArguments sent with this signal:\n\n``sender``\n    As above: the model class that just had an instance created.\n\n``instance``\n    The actual instance of the model that's just been created.\n\npre_save\n--------\n\n.. data:: django.db.models.signals.pre_save\n   :module:\n\nThis is sent at the beginning of a model's :meth:`~django.db.models.Model.save`\nmethod.\n\nArguments sent with this signal:\n\n``sender``\n    The model class.\n\n``instance``\n    The actual instance being saved.\n\n``raw``\n    A boolean; ``True`` if the model is saved exactly as presented\n    (i.e. when loading a fixture). One should not query/modify other\n    records in the database as the database might not be in a\n    consistent state yet.\n\n``using``\n    The database alias being used.\n\n.. versionadded:: 1.5\n\n``update_fields``\n    The set of fields to update explicitly specified in the ``save()`` method.\n    ``None`` if this argument was not used in the ``save()`` call.\n\npost_save\n---------\n\n.. data:: django.db.models.signals.post_save\n   :module:\n\nLike :data:`pre_save`, but sent at the end of the\n:meth:`~django.db.models.Model.save` method.\n\nArguments sent with this signal:\n\n``sender``\n    The model class.\n\n``instance``\n    The actual instance being saved.\n\n``created``\n    A boolean; ``True`` if a new record was created.\n\n``raw``\n    A boolean; ``True`` if the model is saved exactly as presented\n    (i.e. when loading a fixture). One should not query/modify other\n    records in the database as the database might not be in a\n    consistent state yet.\n\n``using``\n    The database alias being used.\n\n.. versionadded:: 1.5\n\n``update_fields``\n    The set of fields to update explicitly specified in the ``save()`` method.\n    ``None`` if this argument was not used in the ``save()`` call.\n\npre_delete\n----------\n\n.. data:: django.db.models.signals.pre_delete\n   :module:\n\nSent at the beginning of a model's :meth:`~django.db.models.Model.delete`\nmethod and a queryset's :meth:`~django.db.models.query.QuerySet.delete` method.\n\nArguments sent with this signal:\n\n``sender``\n    The model class.\n\n``instance``\n    The actual instance being deleted.\n\n``using``\n    The database alias being used.\n\npost_delete\n-----------\n\n.. data:: django.db.models.signals.post_delete\n   :module:\n\nLike :data:`pre_delete`, but sent at the end of a model's\n:meth:`~django.db.models.Model.delete` method and a queryset's\n:meth:`~django.db.models.query.QuerySet.delete` method.\n\nArguments sent with this signal:\n\n``sender``\n    The model class.\n\n``instance``\n    The actual instance being deleted.\n\n    Note that the object will no longer be in the database, so be very\n    careful what you do with this instance.\n\n``using``\n    The database alias being used.\n\nm2m_changed\n-----------\n\n.. data:: django.db.models.signals.m2m_changed\n   :module:\n\nSent when a :class:`~django.db.models.ManyToManyField` is changed on a model\ninstance. Strictly speaking, this is not a model signal since it is sent by the\n:class:`~django.db.models.ManyToManyField`, but since it complements the\n:data:`pre_save`/:data:`post_save` and :data:`pre_delete`/:data:`post_delete`\nwhen it comes to tracking changes to models, it is included here.\n\nArguments sent with this signal:\n\n``sender``\n    The intermediate model class describing the\n    :class:`~django.db.models.ManyToManyField`. This class is automatically\n    created when a many-to-many field is defined; you can access it using the\n    ``through`` attribute on the many-to-many field.\n\n``instance``\n    The instance whose many-to-many relation is updated. This can be an\n    instance of the ``sender``, or of the class the\n    :class:`~django.db.models.ManyToManyField` is related to.\n\n``action``\n    A string indicating the type of update that is done on the relation.\n    This can be one of the following:\n\n    ``\"pre_add\"``\n        Sent *before* one or more objects are added to the relation.\n    ``\"post_add\"``\n        Sent *after* one or more objects are added to the relation.\n    ``\"pre_remove\"``\n        Sent *before* one or more objects are removed from the relation.\n    ``\"post_remove\"``\n        Sent *after* one or more objects are removed from the relation.\n    ``\"pre_clear\"``\n        Sent *before* the relation is cleared.\n    ``\"post_clear\"``\n        Sent *after* the relation is cleared.\n\n``reverse``\n    Indicates which side of the relation is updated (i.e., if it is the\n    forward or reverse relation that is being modified).\n\n``model``\n    The class of the objects that are added to, removed from or cleared\n    from the relation.\n\n``pk_set``\n    For the ``pre_add``, ``post_add``, ``pre_remove`` and ``post_remove``\n    actions, this is a list of primary key values that have been added to\n    or removed from the relation.\n\n    For the ``pre_clear`` and ``post_clear`` actions, this is ``None``.\n\n``using``\n    The database alias being used.\n\nFor example, if a ``Pizza`` can have multiple ``Topping`` objects, modeled\nlike this::\n\n    class Topping(models.Model):\n        # ...\n        pass\n\n    class Pizza(models.Model):\n        # ...\n        toppings = models.ManyToManyField(Topping)\n\nIf we connected a handler like this::\n\n    def toppings_changed(sender, **kwargs):\n        # Do something\n        pass\n\n    m2m_changed.connect(toppings_changed, sender=Pizza.toppings.through)\n\nand then did something like this::\n\n    >>> p = Pizza.object.create(...)\n    >>> t = Topping.objects.create(...)\n    >>> p.toppings.add(t)\n\nthe arguments sent to a :data:`m2m_changed` handler (``topppings_changed`` in\nthe example above) would be:\n\n==============  ============================================================\nArgument        Value\n==============  ============================================================\n``sender``      ``Pizza.toppings.through`` (the intermediate m2m class)\n\n``instance``    ``p`` (the ``Pizza`` instance being modified)\n\n``action``      ``\"pre_add\"`` (followed by a separate signal with ``\"post_add\"``)\n\n``reverse``     ``False`` (``Pizza`` contains the\n                :class:`~django.db.models.ManyToManyField`, so this call\n                modifies the forward relation)\n\n``model``       ``Topping`` (the class of the objects added to the\n                ``Pizza``)\n\n``pk_set``      ``[t.id]`` (since only ``Topping t`` was added to the relation)\n\n``using``       ``\"default\"`` (since the default router sends writes here)\n==============  ============================================================\n\nAnd if we would then do something like this::\n\n    >>> t.pizza_set.remove(p)\n\nthe arguments sent to a :data:`m2m_changed` handler would be:\n\n==============  ============================================================\nArgument        Value\n==============  ============================================================\n``sender``      ``Pizza.toppings.through`` (the intermediate m2m class)\n\n``instance``    ``t`` (the ``Topping`` instance being modified)\n\n``action``      ``\"pre_remove\"`` (followed by a separate signal with ``\"post_remove\"``)\n\n``reverse``     ``True`` (``Pizza`` contains the\n                :class:`~django.db.models.ManyToManyField`, so this call\n                modifies the reverse relation)\n\n``model``       ``Pizza`` (the class of the objects removed from the\n                ``Topping``)\n\n``pk_set``      ``[p.id]`` (since only ``Pizza p`` was removed from the\n                relation)\n\n``using``       ``\"default\"`` (since the default router sends writes here)\n==============  ============================================================\n\nclass_prepared\n--------------\n\n.. data:: django.db.models.signals.class_prepared\n   :module:\n\nSent whenever a model class has been \"prepared\" -- that is, once model has\nbeen defined and registered with Django's model system. Django uses this\nsignal internally; it's not generally used in third-party applications.\n\nArguments that are sent with this signal:\n\n``sender``\n    The model class which was just prepared.\n\nManagement signals\n==================\n\nSignals sent by :doc:`django-admin </ref/django-admin>`.\n\npost_syncdb\n-----------\n\n.. data:: django.db.models.signals.post_syncdb\n   :module:\n\nSent by the :djadmin:`syncdb` command after it installs an application, and the\n:djadmin:`flush` command.\n\nAny handlers that listen to this signal need to be written in a particular\nplace: a ``management`` module in one of your :setting:`INSTALLED_APPS`. If\nhandlers are registered anywhere else they may not be loaded by\n:djadmin:`syncdb`. It is important that handlers of this signal perform\nidempotent changes (e.g. no database alterations) as this may cause the\n:djadmin:`flush` management command to fail if it also ran during the\n:djadmin:`syncdb` command.\n\nArguments sent with this signal:\n\n``sender``\n    The ``models`` module that was just installed. That is, if\n    :djadmin:`syncdb` just installed an app called ``\"foo.bar.myapp\"``,\n    ``sender`` will be the ``foo.bar.myapp.models`` module.\n\n``app``\n    Same as ``sender``.\n\n``created_models``\n    A list of the model classes from any app which :djadmin:`syncdb` has\n    created so far.\n\n``verbosity``\n    Indicates how much information manage.py is printing on screen. See\n    the :djadminopt:`--verbosity` flag for details.\n\n    Functions which listen for :data:`post_syncdb` should adjust what they\n    output to the screen based on the value of this argument.\n\n``interactive``\n    If ``interactive`` is ``True``, it's safe to prompt the user to input\n    things on the command line. If ``interactive`` is ``False``, functions\n    which listen for this signal should not try to prompt for anything.\n\n    For example, the :mod:`django.contrib.auth` app only prompts to create a\n    superuser when ``interactive`` is ``True``.\n\nFor example, ``yourapp/management/__init__.py`` could be written like::\n\n    from django.db.models.signals import post_syncdb\n    import yourapp.models\n\n    def my_callback(sender, **kwargs):\n        # Your specific logic here\n        pass\n\n    post_syncdb.connect(my_callback, sender=yourapp.models)\n\nRequest/response signals\n========================\n\n.. module:: django.core.signals\n   :synopsis: Core signals sent by the request/response system.\n\nSignals sent by the core framework when processing a request.\n\nrequest_started\n---------------\n\n.. data:: django.core.signals.request_started\n   :module:\n\nSent when Django begins processing an HTTP request.\n\nArguments sent with this signal:\n\n``sender``\n    The handler class -- e.g. ``django.core.handlers.wsgi.WsgiHandler`` -- that\n    handled the request.\n\nrequest_finished\n----------------\n\n.. data:: django.core.signals.request_finished\n   :module:\n\nSent when Django finishes processing an HTTP request.\n\n.. note::\n\n    When a view returns a :ref:`streaming response <httpresponse-streaming>`,\n    this signal is sent only after the entire response is consumed by the\n    client (strictly speaking, by the WSGI gateway).\n\n.. versionchanged:: 1.5\n\n    Before Django 1.5, this signal was fired before sending the content to the\n    client. In order to accomodate streaming responses, it is now fired after\n    sending the content.\n\nArguments sent with this signal:\n\n``sender``\n    The handler class, as above.\n\ngot_request_exception\n---------------------\n\n.. data:: django.core.signals.got_request_exception\n   :module:\n\nThis signal is sent whenever Django encounters an exception while processing an incoming HTTP request.\n\nArguments sent with this signal:\n\n``sender``\n    The handler class, as above.\n\n``request``\n    The :class:`~django.http.HttpRequest` object.\n\nTest signals\n============\n\n.. module:: django.test.signals\n   :synopsis: Signals sent during testing.\n\nSignals only sent when :ref:`running tests <running-tests>`.\n\nsetting_changed\n---------------\n\n.. versionadded:: 1.4\n\n.. data:: django.test.signals.setting_changed\n   :module:\n\nThis signal is sent when the value of a setting is changed through the\n``django.test.TestCase.settings()`` context manager or the\n:func:`django.test.utils.override_settings` decorator/context manager.\n\nIt's actually sent twice: when the new value is applied (\"setup\") and when the\noriginal value is restored (\"teardown\").\n\nArguments sent with this signal:\n\n``sender``\n    The settings handler.\n\n``setting``\n    The name of the setting.\n\n``value``\n    The value of the setting after the change. For settings that initially\n    don't exist, in the \"teardown\" phase, ``value`` is ``None``.\n\ntemplate_rendered\n-----------------\n\n.. data:: django.test.signals.template_rendered\n   :module:\n\nSent when the test system renders a template. This signal is not emitted during\nnormal operation of a Django server -- it is only available during testing.\n\nArguments sent with this signal:\n\n``sender``\n    The :class:`~django.template.Template` object which was rendered.\n\n``template``\n    Same as sender\n\n``context``\n    The :class:`~django.template.Context` with which the template was\n    rendered.\n\nDatabase Wrappers\n=================\n\n.. module:: django.db.backends\n   :synopsis: Core signals sent by the database wrapper.\n\nSignals sent by the database wrapper when a database connection is\ninitiated.\n\nconnection_created\n------------------\n\n.. data:: django.db.backends.signals.connection_created\n   :module:\n\nSent when the database wrapper makes the initial connection to the\ndatabase.  This is particularly useful if you'd like to send any post\nconnection commands to the SQL backend.\n\nArguments sent with this signal:\n\n``sender``\n    The database wrapper class -- i.e.\n    ``django.db.backends.postgresql_psycopg2.DatabaseWrapper`` or\n    ``django.db.backends.mysql.DatabaseWrapper``, etc.\n\n``connection``\n    The database connection that was opened. This can be used in a\n    multiple-database configuration to differentiate connection signals\n    from different databases.\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/template-response.txt",
    "content": "===========================================\nTemplateResponse and SimpleTemplateResponse\n===========================================\n\n.. module:: django.template.response\n   :synopsis: Classes dealing with lazy-rendered HTTP responses.\n\nStandard :class:`~django.http.HttpResponse` objects are static structures.\nThey are provided with a block of pre-rendered content at time of\nconstruction, and while that content can be modified, it isn't in a form that\nmakes it easy to perform modifications.\n\nHowever, it can sometimes be beneficial to allow decorators or\nmiddleware to modify a response *after* it has been constructed by the\nview. For example, you may want to change the template that is used,\nor put additional data into the context.\n\nTemplateResponse provides a way to do just that. Unlike basic\n:class:`~django.http.HttpResponse` objects, TemplateResponse objects retain\nthe details of the template and context that was provided by the view to\ncompute the response. The final output of the response is not computed until\nit is needed, later in the response process.\n\nSimpleTemplateResponse objects\n==============================\n\n.. class:: SimpleTemplateResponse()\n\nAttributes\n----------\n\n.. attribute:: SimpleTemplateResponse.template_name\n\n    The name of the template to be rendered. Accepts a\n    :class:`~django.template.Template` object, a path to a template or list\n    of template paths.\n\n    Example: ``['foo.html', 'path/to/bar.html']``\n\n.. attribute:: SimpleTemplateResponse.context_data\n\n    The context data to be used when rendering the template. It can be\n    a dictionary or a context object.\n\n    Example: ``{'foo': 123}``\n\n.. attribute:: SimpleTemplateResponse.rendered_content\n\n    The current rendered value of the response content, using the current\n    template and context data.\n\n.. attribute:: SimpleTemplateResponse.is_rendered\n\n    A boolean indicating whether the response content has been rendered.\n\nMethods\n-------\n\n.. method:: SimpleTemplateResponse.__init__(template, context=None, content_type=None, status=None)\n\n    Instantiates a\n    :class:`~django.template.response.SimpleTemplateResponse` object\n    with the given template, context, content type, and HTTP status.\n\n    ``template``\n        The full name of a template, or a sequence of template names.\n        :class:`~django.template.Template` instances can also be used.\n\n    ``context``\n        A dictionary of values to add to the template context. By default,\n        this is an empty dictionary. :class:`~django.template.Context` objects\n        are also accepted as ``context`` values.\n\n    ``status``\n        The HTTP Status code for the response.\n\n    ``content_type``\n\n        .. versionchanged:: 1.5\n\n        Historically, this parameter was only called ``mimetype`` (now\n        deprecated), but since this is actually the value included in the HTTP\n        ``Content-Type`` header, it can also include the character set\n        encoding, which makes it more than just a MIME type specification. If\n        ``mimetype`` is specified (not ``None``), that value is used.\n        Otherwise, ``content_type`` is used. If neither is given,\n        :setting:`DEFAULT_CONTENT_TYPE` is used.\n\n\n.. method:: SimpleTemplateResponse.resolve_context(context)\n\n    Converts context data into a context instance that can be used for\n    rendering a template. Accepts a dictionary of context data or a\n    context object. Returns a :class:`~django.template.Context`\n    instance containing the provided data.\n\n    Override this method in order to customize context instantiation.\n\n.. method:: SimpleTemplateResponse.resolve_template(template)\n\n    Resolves the template instance to use for rendering. Accepts a\n    path of a template to use, or a sequence of template paths.\n    :class:`~django.template.Template` instances may also be provided.\n    Returns the :class:`~django.template.Template` instance to be\n    rendered.\n\n    Override this method in order to customize template rendering.\n\n.. method:: SimpleTemplateResponse.add_post_render_callback\n\n    Add a callback that will be invoked after rendering has taken\n    place. This hook can be used to defer certain processing\n    operations (such as caching) until after rendering has occurred.\n\n    If the :class:`~django.template.response.SimpleTemplateResponse`\n    has already been rendered, the callback will be invoked\n    immediately.\n\n    When called, callbacks will be passed a single argument -- the\n    rendered :class:`~django.template.response.SimpleTemplateResponse`\n    instance.\n\n    If the callback returns a value that is not ``None``, this will be\n    used as the response instead of the original response object (and\n    will be passed to the next post rendering callback etc.)\n\n.. method:: SimpleTemplateResponse.render()\n\n    Sets ``response.content`` to the result obtained by\n    :attr:`SimpleTemplateResponse.rendered_content`, runs all post-rendering\n    callbacks, and returns the resulting response object.\n\n    ``render()`` will only have an effect the first time it is called. On\n    subsequent calls, it will return the result obtained from the first call.\n\n\nTemplateResponse objects\n========================\n\n.. class:: TemplateResponse()\n\n   TemplateResponse is a subclass of\n   :class:`~django.template.response.SimpleTemplateResponse` that uses\n   a :class:`~django.template.RequestContext` instead of\n   a :class:`~django.template.Context`.\n\nMethods\n-------\n\n.. method:: TemplateResponse.__init__(request, template, context=None, content_type=None, status=None, current_app=None)\n\n    Instantiates an ``TemplateResponse`` object with the given\n    template, context, MIME type and HTTP status.\n\n    ``request``\n        An :class:`~django.http.HttpRequest` instance.\n\n    ``template``\n        The full name of a template, or a sequence of template names.\n        :class:`~django.template.Template` instances can also be used.\n\n    ``context``\n        A dictionary of values to add to the template context. By default,\n        this is an empty dictionary. :class:`~django.template.Context` objects\n        are also accepted as ``context`` values.\n\n    ``status``\n        The HTTP Status code for the response.\n\n    ``content_type``\n\n        .. versionchanged:: 1.5\n\n        Historically, this parameter was only called ``mimetype`` (now\n        deprecated), but since this is actually the value included in the HTTP\n        ``Content-Type`` header, it can also include the character set\n        encoding, which makes it more than just a MIME type specification. If\n        ``mimetype`` is specified (not ``None``), that value is used.\n        Otherwise, ``content_type`` is used. If neither is given,\n        :setting:`DEFAULT_CONTENT_TYPE` is used.\n\n    ``current_app``\n        A hint indicating which application contains the current view. See the\n        :ref:`namespaced URL resolution strategy <topics-http-reversing-url-namespaces>`\n        for more information.\n\n\nThe rendering process\n=====================\n\nBefore a :class:`~django.template.response.TemplateResponse` instance can be\nreturned to the client, it must be rendered. The rendering process takes the\nintermediate representation of template and context, and turns it into the\nfinal byte stream that can be served to the client.\n\nThere are three circumstances under which a ``TemplateResponse`` will be\nrendered:\n\n* When the ``TemplateResponse`` instance is explicitly rendered, using\n  the :meth:`SimpleTemplateResponse.render()` method.\n\n* When the content of the response is explicitly set by assigning\n  ``response.content``.\n\n* After passing through template response middleware, but before\n  passing through response middleware.\n\nA ``TemplateResponse`` can only be rendered once. The first call to\n:meth:`SimpleTemplateResponse.render` sets the content of the response;\nsubsequent rendering calls do not change the response content.\n\nHowever, when ``response.content`` is explicitly assigned, the\nchange is always applied. If you want to force the content to be\nre-rendered, you can re-evaluate the rendered content, and assign\nthe content of the response manually::\n\n    # Set up a rendered TemplateResponse\n    >>> t = TemplateResponse(request, 'original.html', {})\n    >>> t.render()\n    >>> print(t.content)\n    Original content\n\n    # Re-rendering doesn't change content\n    >>> t.template_name = 'new.html'\n    >>> t.render()\n    >>> print(t.content)\n    Original content\n\n    # Assigning content does change, no render() call required\n    >>> t.content = t.rendered_content\n    >>> print(t.content)\n    New content\n\nPost-render callbacks\n---------------------\n\nSome operations -- such as caching -- cannot be performed on an\nunrendered template. They must be performed on a fully complete and\nrendered response.\n\nIf you're using middleware, the solution is easy. Middleware provides\nmultiple opportunities to process a response on exit from a view. If\nyou put behavior in the Response middleware is guaranteed to execute\nafter template rendering has taken place.\n\nHowever, if you're using a decorator, the same opportunities do not\nexist. Any behavior defined in a decorator is handled immediately.\n\nTo compensate for this (and any other analogous use cases),\n:class:`TemplateResponse` allows you to register callbacks that will\nbe invoked when rendering has completed. Using this callback, you can\ndefer critical processing until a point where you can guarantee that\nrendered content will be available.\n\nTo define a post-render callback, just define a function that takes\na single argument -- response -- and register that function with\nthe template response::\n\n    def my_render_callback(response):\n        # Do content-sensitive processing\n        do_post_processing()\n\n    def my_view(request):\n        # Create a response\n        response = TemplateResponse(request, 'mytemplate.html', {})\n        # Register the callback\n        response.add_post_render_callback(my_render_callback)\n        # Return the response\n        return response\n\n``my_render_callback()`` will be invoked after the ``mytemplate.html``\nhas been rendered, and will be provided the fully rendered\n:class:`TemplateResponse` instance as an argument.\n\nIf the template has already been rendered, the callback will be\ninvoked immediately.\n\nUsing TemplateResponse and SimpleTemplateResponse\n=================================================\n\nA TemplateResponse object can be used anywhere that a normal\nHttpResponse can be used. It can also be used as an alternative to\ncalling :func:`~django.shortcuts.render_to_response()`.\n\nFor example, the following simple view returns a\n:class:`TemplateResponse()` with a simple template, and a context\ncontaining a queryset::\n\n    from django.template.response import TemplateResponse\n\n    def blog_index(request):\n        return TemplateResponse(request, 'entry_list.html', {'entries': Entry.objects.all()})\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/templates/api.txt",
    "content": "====================================================\nThe Django template language: For Python programmers\n====================================================\n\nThis document explains the Django template system from a technical\nperspective -- how it works and how to extend it. If you're just looking for\nreference on the language syntax, see :doc:`/topics/templates`.\n\nIf you're looking to use the Django template system as part of another\napplication -- i.e., without the rest of the framework -- make sure to read\nthe `configuration`_ section later in this document.\n\n.. _configuration: `configuring the template system in standalone mode`_\n\nBasics\n======\n\nA **template** is a text document, or a normal Python string, that is marked-up\nusing the Django template language. A template can contain **block tags** or\n**variables**.\n\nA **block tag** is a symbol within a template that does something.\n\nThis definition is deliberately vague. For example, a block tag can output\ncontent, serve as a control structure (an \"if\" statement or \"for\" loop), grab\ncontent from a database or enable access to other template tags.\n\nBlock tags are surrounded by ``\"{%\"`` and ``\"%}\"``.\n\nExample template with block tags:\n\n.. code-block:: html+django\n\n    {% if is_logged_in %}Thanks for logging in!{% else %}Please log in.{% endif %}\n\nA **variable** is a symbol within a template that outputs a value.\n\nVariable tags are surrounded by ``\"{{\"`` and ``\"}}\"``.\n\nExample template with variables:\n\n.. code-block:: html+django\n\n    My first name is {{ first_name }}. My last name is {{ last_name }}.\n\nA **context** is a \"variable name\" -> \"variable value\" mapping that is passed\nto a template.\n\nA template **renders** a context by replacing the variable \"holes\" with values\nfrom the context and executing all block tags.\n\nUsing the template system\n=========================\n\n.. class:: django.template.Template\n\nUsing the template system in Python is a two-step process:\n\n* First, you compile the raw template code into a ``Template`` object.\n* Then, you call the ``render()`` method of the ``Template`` object with a\n  given context.\n\nCompiling a string\n------------------\n\nThe easiest way to create a ``Template`` object is by instantiating it\ndirectly. The class lives at :class:`django.template.Template`. The constructor\ntakes one argument -- the raw template code::\n\n    >>> from django.template import Template\n    >>> t = Template(\"My name is {{ my_name }}.\")\n    >>> print(t)\n    <django.template.Template instance>\n\n.. admonition:: Behind the scenes\n\n    The system only parses your raw template code once -- when you create the\n    ``Template`` object. From then on, it's stored internally as a \"node\"\n    structure for performance.\n\n    Even the parsing itself is quite fast. Most of the parsing happens via a\n    single call to a single, short, regular expression.\n\nRendering a context\n-------------------\n\n.. method:: render(context)\n\nOnce you have a compiled ``Template`` object, you can render a context -- or\nmultiple contexts -- with it. The ``Context`` class lives at\n:class:`django.template.Context`, and the constructor takes two (optional)\narguments:\n\n* A dictionary mapping variable names to variable values.\n\n* The name of the current application. This application name is used\n  to help :ref:`resolve namespaced URLs<topics-http-reversing-url-namespaces>`.\n  If you're not using namespaced URLs, you can ignore this argument.\n\nCall the ``Template`` object's ``render()`` method with the context to \"fill\" the\ntemplate::\n\n    >>> from django.template import Context, Template\n    >>> t = Template(\"My name is {{ my_name }}.\")\n\n    >>> c = Context({\"my_name\": \"Adrian\"})\n    >>> t.render(c)\n    \"My name is Adrian.\"\n\n    >>> c = Context({\"my_name\": \"Dolores\"})\n    >>> t.render(c)\n    \"My name is Dolores.\"\n\nVariables and lookups\n~~~~~~~~~~~~~~~~~~~~~\n\nVariable names must consist of any letter (A-Z), any digit (0-9), an underscore\n(but they must not start with an underscore) or a dot.\n\nDots have a special meaning in template rendering. A dot in a variable name\nsignifies a **lookup**. Specifically, when the template system encounters a\ndot in a variable name, it tries the following lookups, in this order:\n\n* Dictionary lookup. Example: ``foo[\"bar\"]``\n* Attribute lookup. Example: ``foo.bar``\n* List-index lookup. Example: ``foo[bar]``\n\nNote that \"bar\" in a template expression like ``{{ foo.bar }}`` will be\ninterpreted as a literal string and not using the value of the variable \"bar\",\nif one exists in the template context.\n\nThe template system uses the first lookup type that works. It's short-circuit\nlogic. Here are a few examples::\n\n    >>> from django.template import Context, Template\n    >>> t = Template(\"My name is {{ person.first_name }}.\")\n    >>> d = {\"person\": {\"first_name\": \"Joe\", \"last_name\": \"Johnson\"}}\n    >>> t.render(Context(d))\n    \"My name is Joe.\"\n\n    >>> class PersonClass: pass\n    >>> p = PersonClass()\n    >>> p.first_name = \"Ron\"\n    >>> p.last_name = \"Nasty\"\n    >>> t.render(Context({\"person\": p}))\n    \"My name is Ron.\"\n\n    >>> t = Template(\"The first stooge in the list is {{ stooges.0 }}.\")\n    >>> c = Context({\"stooges\": [\"Larry\", \"Curly\", \"Moe\"]})\n    >>> t.render(c)\n    \"The first stooge in the list is Larry.\"\n\nIf any part of the variable is callable, the template system will try calling\nit. Example::\n\n    >>> class PersonClass2:\n    ...     def name(self):\n    ...         return \"Samantha\"\n    >>> t = Template(\"My name is {{ person.name }}.\")\n    >>> t.render(Context({\"person\": PersonClass2}))\n    \"My name is Samantha.\"\n\nCallable variables are slightly more complex than variables which only require\nstraight lookups. Here are some things to keep in mind:\n\n* If the variable raises an exception when called, the exception will be\n  propagated, unless the exception has an attribute\n  ``silent_variable_failure`` whose value is ``True``. If the exception\n  *does* have a ``silent_variable_failure`` attribute whose value is\n  ``True``, the variable will render as an empty string. Example::\n\n    >>> t = Template(\"My name is {{ person.first_name }}.\")\n    >>> class PersonClass3:\n    ...     def first_name(self):\n    ...         raise AssertionError(\"foo\")\n    >>> p = PersonClass3()\n    >>> t.render(Context({\"person\": p}))\n    Traceback (most recent call last):\n    ...\n    AssertionError: foo\n\n    >>> class SilentAssertionError(Exception):\n    ...     silent_variable_failure = True\n    >>> class PersonClass4:\n    ...     def first_name(self):\n    ...         raise SilentAssertionError\n    >>> p = PersonClass4()\n    >>> t.render(Context({\"person\": p}))\n    \"My name is .\"\n\n  Note that :exc:`django.core.exceptions.ObjectDoesNotExist`, which is the\n  base class for all Django database API ``DoesNotExist`` exceptions, has\n  ``silent_variable_failure = True``. So if you're using Django templates\n  with Django model objects, any ``DoesNotExist`` exception will fail\n  silently.\n\n* A variable can only be called if it has no required arguments. Otherwise,\n  the system will return an empty string.\n\n.. _alters-data-description:\n\n* Obviously, there can be side effects when calling some variables, and\n  it'd be either foolish or a security hole to allow the template system\n  to access them.\n\n  A good example is the :meth:`~django.db.models.Model.delete` method on\n  each Django model object. The template system shouldn't be allowed to do\n  something like this::\n\n    I will now delete this valuable data. {{ data.delete }}\n\n  To prevent this, set an ``alters_data`` attribute on the callable\n  variable. The template system won't call a variable if it has\n  ``alters_data=True`` set, and will instead replace the variable with\n  :setting:`TEMPLATE_STRING_IF_INVALID`, unconditionally.  The\n  dynamically-generated :meth:`~django.db.models.Model.delete` and\n  :meth:`~django.db.models.Model.save` methods on Django model objects get\n  ``alters_data=True`` automatically. Example::\n\n    def sensitive_function(self):\n        self.database_record.delete()\n    sensitive_function.alters_data = True\n\n* .. versionadded:: 1.4\n     Occasionally you may want to turn off this feature for other reasons,\n     and tell the template system to leave a variable un-called no matter\n     what.  To do so, set a ``do_not_call_in_templates`` attribute on the\n     callable with the value ``True``.  The template system then will act as\n     if your variable is not callable (allowing you to access attributes of\n     the callable, for example).\n\n.. _invalid-template-variables:\n\nHow invalid variables are handled\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nGenerally, if a variable doesn't exist, the template system inserts the\nvalue of the :setting:`TEMPLATE_STRING_IF_INVALID` setting, which is set to\n``''`` (the empty string) by default.\n\nFilters that are applied to an invalid variable will only be applied if\n:setting:`TEMPLATE_STRING_IF_INVALID` is set to ``''`` (the empty string). If\n:setting:`TEMPLATE_STRING_IF_INVALID` is set to any other value, variable\nfilters will be ignored.\n\nThis behavior is slightly different for the ``if``, ``for`` and ``regroup``\ntemplate tags. If an invalid variable is provided to one of these template\ntags, the variable will be interpreted as ``None``. Filters are always\napplied to invalid variables within these template tags.\n\nIf :setting:`TEMPLATE_STRING_IF_INVALID` contains a ``'%s'``, the format marker will\nbe replaced with the name of the invalid variable.\n\n.. admonition:: For debug purposes only!\n\n    While :setting:`TEMPLATE_STRING_IF_INVALID` can be a useful debugging tool,\n    it is a bad idea to turn it on as a 'development default'.\n\n    Many templates, including those in the Admin site, rely upon the\n    silence of the template system when a non-existent variable is\n    encountered. If you assign a value other than ``''`` to\n    :setting:`TEMPLATE_STRING_IF_INVALID`, you will experience rendering\n    problems with these templates and sites.\n\n    Generally, :setting:`TEMPLATE_STRING_IF_INVALID` should only be enabled\n    in order to debug a specific template problem, then cleared\n    once debugging is complete.\n\nBuiltin variables\n~~~~~~~~~~~~~~~~~\n\nEvery context contains ``True``, ``False`` and ``None``. As you would expect,\nthese variables resolve to the corresponding Python objects.\n\n.. versionadded:: 1.5\n    Before Django 1.5, these variables weren't a special case, and they\n    resolved to ``None`` unless you defined them in the context.\n\nPlaying with Context objects\n----------------------------\n\n.. class:: django.template.Context\n\nMost of the time, you'll instantiate ``Context`` objects by passing in a\nfully-populated dictionary to ``Context()``. But you can add and delete items\nfrom a ``Context`` object once it's been instantiated, too, using standard\ndictionary syntax::\n\n    >>> c = Context({\"foo\": \"bar\"})\n    >>> c['foo']\n    'bar'\n    >>> del c['foo']\n    >>> c['foo']\n    ''\n    >>> c['newvariable'] = 'hello'\n    >>> c['newvariable']\n    'hello'\n\n.. method:: pop()\n.. method:: push()\n.. exception:: django.template.ContextPopException\n\nA ``Context`` object is a stack. That is, you can ``push()`` and ``pop()`` it.\nIf you ``pop()`` too much, it'll raise\n``django.template.ContextPopException``::\n\n    >>> c = Context()\n    >>> c['foo'] = 'first level'\n    >>> c.push()\n    >>> c['foo'] = 'second level'\n    >>> c['foo']\n    'second level'\n    >>> c.pop()\n    >>> c['foo']\n    'first level'\n    >>> c['foo'] = 'overwritten'\n    >>> c['foo']\n    'overwritten'\n    >>> c.pop()\n    Traceback (most recent call last):\n    ...\n    django.template.ContextPopException\n\n.. method:: update(other_dict)\n\nIn addition to ``push()`` and ``pop()``, the ``Context``\nobject also defines an ``update()`` method. This works like ``push()``\nbut takes a dictionary as an argument and pushes that dictionary onto\nthe stack instead of an empty one.\n\n    >>> c = Context()\n    >>> c['foo'] = 'first level'\n    >>> c.update({'foo': 'updated'})\n    {'foo': 'updated'}\n    >>> c['foo']\n    'updated'\n    >>> c.pop()\n    {'foo': 'updated'}\n    >>> c['foo']\n    'first level'\n\nUsing a ``Context`` as a stack comes in handy in some custom template tags, as\nyou'll see below.\n\n.. _subclassing-context-requestcontext:\n\nSubclassing Context: RequestContext\n-----------------------------------\n\n.. class:: django.template.RequestContext\n\nDjango comes with a special ``Context`` class,\n``django.template.RequestContext``, that acts slightly differently than the\nnormal ``django.template.Context``. The first difference is that it takes an\n:class:`~django.http.HttpRequest` as its first argument. For example::\n\n    c = RequestContext(request, {\n        'foo': 'bar',\n    })\n\nThe second difference is that it automatically populates the context with a few\nvariables, according to your :setting:`TEMPLATE_CONTEXT_PROCESSORS` setting.\n\nThe :setting:`TEMPLATE_CONTEXT_PROCESSORS` setting is a tuple of callables --\ncalled **context processors** -- that take a request object as their argument\nand return a dictionary of items to be merged into the context. By default,\n:setting:`TEMPLATE_CONTEXT_PROCESSORS` is set to::\n\n    (\"django.contrib.auth.context_processors.auth\",\n    \"django.core.context_processors.debug\",\n    \"django.core.context_processors.i18n\",\n    \"django.core.context_processors.media\",\n    \"django.core.context_processors.static\",\n    \"django.core.context_processors.tz\",\n    \"django.contrib.messages.context_processors.messages\")\n\nIn addition to these, ``RequestContext`` always uses\n``django.core.context_processors.csrf``.  This is a security\nrelated context processor required by the admin and other contrib apps, and,\nin case of accidental misconfiguration, it is deliberately hardcoded in and\ncannot be turned off by the :setting:`TEMPLATE_CONTEXT_PROCESSORS` setting.\n\nEach processor is applied in order. That means, if one processor adds a\nvariable to the context and a second processor adds a variable with the same\nname, the second will override the first. The default processors are explained\nbelow.\n\n.. admonition:: When context processors are applied\n\n    When you use ``RequestContext``, the variables you supply directly\n    are added first, followed any variables supplied by context\n    processors. This means that a context processor may overwrite a\n    variable you've supplied, so take care to avoid variable names\n    which overlap with those supplied by your context processors.\n\nAlso, you can give ``RequestContext`` a list of additional processors, using the\noptional, third positional argument, ``processors``. In this example, the\n``RequestContext`` instance gets a ``ip_address`` variable::\n\n    def ip_address_processor(request):\n        return {'ip_address': request.META['REMOTE_ADDR']}\n\n    def some_view(request):\n        # ...\n        c = RequestContext(request, {\n            'foo': 'bar',\n        }, [ip_address_processor])\n        return HttpResponse(t.render(c))\n\n.. note::\n\n    If you're using Django's :func:`~django.shortcuts.render_to_response()`\n    shortcut to populate a template with the contents of a dictionary, your\n    template will be passed a ``Context`` instance by default (not a\n    ``RequestContext``). To use a ``RequestContext`` in your template\n    rendering, pass an optional third argument to\n    :func:`~django.shortcuts.render_to_response()`: a ``RequestContext``\n    instance. Your code might look like this::\n\n        def some_view(request):\n            # ...\n            return render_to_response('my_template.html',\n                                      my_data_dictionary,\n                                      context_instance=RequestContext(request))\n\n    Alternatively, use the :meth:`~django.shortcuts.render()` shortcut which is\n    the same as a call to :func:`~django.shortcuts.render_to_response()` with a\n    context_instance argument that forces the use of a ``RequestContext``.\n\nHere's what each of the default processors does:\n\ndjango.contrib.auth.context_processors.auth\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nIf :setting:`TEMPLATE_CONTEXT_PROCESSORS` contains this processor, every\n``RequestContext`` will contain these variables:\n\n* ``user`` -- An ``auth.User`` instance representing the currently\n  logged-in user (or an ``AnonymousUser`` instance, if the client isn't\n  logged in).\n\n* ``perms`` -- An instance of\n  ``django.contrib.auth.context_processors.PermWrapper``, representing the\n  permissions that the currently logged-in user has.\n\ndjango.core.context_processors.debug\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nIf :setting:`TEMPLATE_CONTEXT_PROCESSORS` contains this processor, every\n``RequestContext`` will contain these two variables -- but only if your\n:setting:`DEBUG` setting is set to ``True`` and the request's IP address\n(``request.META['REMOTE_ADDR']``) is in the :setting:`INTERNAL_IPS` setting:\n\n* ``debug`` -- ``True``. You can use this in templates to test whether\n  you're in :setting:`DEBUG` mode.\n* ``sql_queries`` -- A list of ``{'sql': ..., 'time': ...}`` dictionaries,\n  representing every SQL query that has happened so far during the request\n  and how long it took. The list is in order by query.\n\ndjango.core.context_processors.i18n\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nIf :setting:`TEMPLATE_CONTEXT_PROCESSORS` contains this processor, every\n``RequestContext`` will contain these two variables:\n\n* ``LANGUAGES`` -- The value of the :setting:`LANGUAGES` setting.\n* ``LANGUAGE_CODE`` -- ``request.LANGUAGE_CODE``, if it exists. Otherwise,\n  the value of the :setting:`LANGUAGE_CODE` setting.\n\nSee :doc:`/topics/i18n/index` for more.\n\ndjango.core.context_processors.media\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nIf :setting:`TEMPLATE_CONTEXT_PROCESSORS` contains this processor, every\n``RequestContext`` will contain a variable ``MEDIA_URL``, providing the\nvalue of the :setting:`MEDIA_URL` setting.\n\ndjango.core.context_processors.static\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. function:: django.core.context_processors.static\n\nIf :setting:`TEMPLATE_CONTEXT_PROCESSORS` contains this processor, every\n``RequestContext`` will contain a variable ``STATIC_URL``, providing the\nvalue of the :setting:`STATIC_URL` setting.\n\ndjango.core.context_processors.csrf\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThis processor adds a token that is needed by the :ttag:`csrf_token` template\ntag for protection against :doc:`Cross Site Request Forgeries\n</ref/contrib/csrf>`.\n\ndjango.core.context_processors.request\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nIf :setting:`TEMPLATE_CONTEXT_PROCESSORS` contains this processor, every\n``RequestContext`` will contain a variable ``request``, which is the current\n:class:`~django.http.HttpRequest`. Note that this processor is not enabled by default;\nyou'll have to activate it.\n\ndjango.contrib.messages.context_processors.messages\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nIf :setting:`TEMPLATE_CONTEXT_PROCESSORS` contains this processor, every\n``RequestContext`` will contain a single additional variable:\n\n* ``messages`` -- A list of messages (as strings) that have been set\n  via the user model (using ``user.message_set.create``) or through\n  the :doc:`messages framework </ref/contrib/messages>`.\n\nWriting your own context processors\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nA context processor has a very simple interface: It's just a Python function\nthat takes one argument, an :class:`~django.http.HttpRequest` object, and\nreturns a dictionary that gets added to the template context. Each context\nprocessor *must* return a dictionary.\n\nCustom context processors can live anywhere in your code base. All Django cares\nabout is that your custom context processors are pointed-to by your\n:setting:`TEMPLATE_CONTEXT_PROCESSORS` setting.\n\nLoading templates\n-----------------\n\nGenerally, you'll store templates in files on your filesystem rather than using\nthe low-level ``Template`` API yourself. Save templates in a directory\nspecified as a **template directory**.\n\nDjango searches for template directories in a number of places, depending on\nyour template-loader settings (see \"Loader types\" below), but the most basic\nway of specifying template directories is by using the :setting:`TEMPLATE_DIRS`\nsetting.\n\nThe TEMPLATE_DIRS setting\n~~~~~~~~~~~~~~~~~~~~~~~~~\n\nTell Django what your template directories are by using the\n:setting:`TEMPLATE_DIRS` setting in your settings file. This should be set to a\nlist or tuple of strings that contain full paths to your template\ndirectory(ies). Example::\n\n    TEMPLATE_DIRS = (\n        \"/home/html/templates/lawrence.com\",\n        \"/home/html/templates/default\",\n    )\n\nYour templates can go anywhere you want, as long as the directories and\ntemplates are readable by the Web server. They can have any extension you want,\nsuch as ``.html`` or ``.txt``, or they can have no extension at all.\n\nNote that these paths should use Unix-style forward slashes, even on Windows.\n\n.. _ref-templates-api-the-python-api:\n\nThe Python API\n~~~~~~~~~~~~~~\n\n.. module:: django.template.loader\n\n``django.template.loader`` has two functions to load templates from files:\n\n.. function:: get_template(template_name)\n\n    ``get_template`` returns the compiled template (a ``Template`` object) for\n    the template with the given name. If the template doesn't exist, it raises\n    ``django.template.TemplateDoesNotExist``.\n\n.. function:: select_template(template_name_list)\n\n    ``select_template`` is just like ``get_template``, except it takes a list\n    of template names. Of the list, it returns the first template that exists.\n\nFor example, if you call ``get_template('story_detail.html')`` and have the\nabove :setting:`TEMPLATE_DIRS` setting, here are the files Django will look for,\nin order:\n\n* ``/home/html/templates/lawrence.com/story_detail.html``\n* ``/home/html/templates/default/story_detail.html``\n\nIf you call ``select_template(['story_253_detail.html', 'story_detail.html'])``,\nhere's what Django will look for:\n\n* ``/home/html/templates/lawrence.com/story_253_detail.html``\n* ``/home/html/templates/default/story_253_detail.html``\n* ``/home/html/templates/lawrence.com/story_detail.html``\n* ``/home/html/templates/default/story_detail.html``\n\nWhen Django finds a template that exists, it stops looking.\n\n.. admonition:: Tip\n\n    You can use ``select_template()`` for super-flexible \"templatability.\" For\n    example, if you've written a news story and want some stories to have\n    custom templates, use something like\n    ``select_template(['story_%s_detail.html' % story.id, 'story_detail.html'])``.\n    That'll allow you to use a custom template for an individual story, with a\n    fallback template for stories that don't have custom templates.\n\nUsing subdirectories\n~~~~~~~~~~~~~~~~~~~~\n\nIt's possible -- and preferable -- to organize templates in subdirectories of\nthe template directory. The convention is to make a subdirectory for each\nDjango app, with subdirectories within those subdirectories as needed.\n\nDo this for your own sanity. Storing all templates in the root level of a\nsingle directory gets messy.\n\nTo load a template that's within a subdirectory, just use a slash, like so::\n\n    get_template('news/story_detail.html')\n\nUsing the same :setting:`TEMPLATE_DIRS` setting from above, this example\n``get_template()`` call will attempt to load the following templates:\n\n* ``/home/html/templates/lawrence.com/news/story_detail.html``\n* ``/home/html/templates/default/news/story_detail.html``\n\n.. _template-loaders:\n\nLoader types\n~~~~~~~~~~~~\n\nBy default, Django uses a filesystem-based template loader, but Django comes\nwith a few other template loaders, which know how to load templates from other\nsources.\n\nSome of these other loaders are disabled by default, but you can activate them\nby editing your :setting:`TEMPLATE_LOADERS` setting. :setting:`TEMPLATE_LOADERS`\nshould be a tuple of strings, where each string represents a template loader\nclass. Here are the template loaders that come with Django:\n\n.. currentmodule:: django.template.loaders\n\n``django.template.loaders.filesystem.Loader``\n\n.. class:: filesystem.Loader\n\n    Loads templates from the filesystem, according to :setting:`TEMPLATE_DIRS`.\n    This loader is enabled by default.\n\n``django.template.loaders.app_directories.Loader``\n\n.. class:: app_directories.Loader\n\n    Loads templates from Django apps on the filesystem. For each app in\n    :setting:`INSTALLED_APPS`, the loader looks for a ``templates``\n    subdirectory. If the directory exists, Django looks for templates in there.\n\n    This means you can store templates with your individual apps. This also\n    makes it easy to distribute Django apps with default templates.\n\n    For example, for this setting::\n\n        INSTALLED_APPS = ('myproject.polls', 'myproject.music')\n\n    ...then ``get_template('foo.html')`` will look for ``foo.html`` in these\n    directories, in this order:\n\n    * ``/path/to/myproject/polls/templates/``\n    * ``/path/to/myproject/music/templates/``\n\n    ... and will use the one it finds first.\n\n    The order of :setting:`INSTALLED_APPS` is significant! For example, if you\n    want to customize the Django admin, you might choose to override the\n    standard ``admin/base_site.html`` template, from ``django.contrib.admin``,\n    with your own ``admin/base_site.html`` in ``myproject.polls``. You must\n    then make sure that your ``myproject.polls`` comes *before*\n    ``django.contrib.admin`` in :setting:`INSTALLED_APPS`, otherwise\n    ``django.contrib.admin``'s will be loaded first and yours will be ignored.\n\n    Note that the loader performs an optimization when it is first imported:\n    it caches a list of which :setting:`INSTALLED_APPS` packages have a\n    ``templates`` subdirectory.\n\n    This loader is enabled by default.\n\n``django.template.loaders.eggs.Loader``\n\n.. class:: eggs.Loader\n\n    Just like ``app_directories`` above, but it loads templates from Python\n    eggs rather than from the filesystem.\n\n    This loader is disabled by default.\n\n``django.template.loaders.cached.Loader``\n\n.. class:: cached.Loader\n\n    By default, the templating system will read and compile your templates every\n    time they need to be rendered. While the Django templating system is quite\n    fast, the overhead from reading and compiling templates can add up.\n\n    The cached template loader is a class-based loader that you configure with\n    a list of other loaders that it should wrap. The wrapped loaders are used to\n    locate unknown templates when they are first encountered. The cached loader\n    then stores the compiled ``Template`` in memory. The cached ``Template``\n    instance is returned for subsequent requests to load the same template.\n\n    For example, to enable template caching with the ``filesystem`` and\n    ``app_directories`` template loaders you might use the following settings::\n\n        TEMPLATE_LOADERS = (\n            ('django.template.loaders.cached.Loader', (\n                'django.template.loaders.filesystem.Loader',\n                'django.template.loaders.app_directories.Loader',\n            )),\n        )\n\n    .. note::\n\n        All of the built-in Django template tags are safe to use with the\n        cached loader, but if you're using custom template tags that come from\n        third party packages, or that you wrote yourself, you should ensure\n        that the ``Node`` implementation for each tag is thread-safe. For more\n        information, see :ref:`template tag thread safety\n        considerations<template_tag_thread_safety>`.\n\n    This loader is disabled by default.\n\nDjango uses the template loaders in order according to the\n:setting:`TEMPLATE_LOADERS` setting. It uses each loader until a loader finds a\nmatch.\n\nThe ``render_to_string`` shortcut\n===================================\n\n.. function:: django.template.loader.render_to_string(template_name, dictionary=None, context_instance=None)\n\nTo cut down on the repetitive nature of loading and rendering\ntemplates, Django provides a shortcut function which largely\nautomates the process: ``render_to_string()`` in\n:mod:`django.template.loader`, which loads a template, renders it and\nreturns the resulting string::\n\n    from django.template.loader import render_to_string\n    rendered = render_to_string('my_template.html', {'foo': 'bar'})\n\nThe ``render_to_string`` shortcut takes one required argument --\n``template_name``, which should be the name of the template to load\nand render (or a list of template names, in which case Django will use\nthe first template in the list that exists) -- and two optional arguments:\n\ndictionary\n    A dictionary to be used as variables and values for the\n    template's context. This can also be passed as the second\n    positional argument.\n\ncontext_instance\n    An instance of ``Context`` or a subclass (e.g., an instance of\n    ``RequestContext``) to use as the template's context. This can\n    also be passed as the third positional argument.\n\nSee also the :func:`~django.shortcuts.render_to_response()` shortcut, which\ncalls ``render_to_string`` and feeds the result into an :class:`~django.http.HttpResponse`\nsuitable for returning directly from a view.\n\nConfiguring the template system in standalone mode\n==================================================\n\n.. note::\n\n    This section is only of interest to people trying to use the template\n    system as an output component in another application. If you're using the\n    template system as part of a Django application, nothing here applies to\n    you.\n\nNormally, Django will load all the configuration information it needs from its\nown default configuration file, combined with the settings in the module given\nin the :envvar:`DJANGO_SETTINGS_MODULE` environment variable. But if you're\nusing the template system independently of the rest of Django, the environment\nvariable approach isn't very convenient, because you probably want to configure\nthe template system in line with the rest of your application rather than\ndealing with settings files and pointing to them via environment variables.\n\nTo solve this problem, you need to use the manual configuration option described\nin :ref:`settings-without-django-settings-module`. Simply import the appropriate\npieces of the templating system and then, *before* you call any of the\ntemplating functions, call :func:`django.conf.settings.configure()` with any\nsettings you wish to specify. You might want to consider setting at least\n:setting:`TEMPLATE_DIRS` (if you're going to use template loaders),\n:setting:`DEFAULT_CHARSET` (although the default of ``utf-8`` is probably fine)\nand :setting:`TEMPLATE_DEBUG`. If you plan to use the :ttag:`url` template tag,\nyou will also need to set the :setting:`ROOT_URLCONF` setting. All available\nsettings are described in the :doc:`settings documentation </ref/settings>`,\nand any setting starting with ``TEMPLATE_`` is of obvious interest.\n\n.. _topic-template-alternate-language:\n\nUsing an alternative template language\n======================================\n\nThe Django ``Template`` and ``Loader`` classes implement a simple API for\nloading and rendering templates. By providing some simple wrapper classes that\nimplement this API we can use third party template systems like `Jinja2\n<http://jinja.pocoo.org/docs/>`_ or `Cheetah <http://www.cheetahtemplate.org/>`_. This\nallows us to use third-party template libraries without giving up useful Django\nfeatures like the Django ``Context`` object and handy shortcuts like\n:func:`~django.shortcuts.render_to_response()`.\n\nThe core component of the Django templating system is the ``Template`` class.\nThis class has a very simple interface: it has a constructor that takes a single\npositional argument specifying the template string, and a ``render()`` method\nthat takes a :class:`~django.template.Context` object and returns a string\ncontaining the rendered response.\n\nSuppose we're using a template language that defines a ``Template`` object with\na ``render()`` method that takes a dictionary rather than a ``Context`` object.\nWe can write a simple wrapper that implements the Django ``Template`` interface::\n\n    import some_template_language\n    class Template(some_template_language.Template):\n        def render(self, context):\n            # flatten the Django Context into a single dictionary.\n            context_dict = {}\n            for d in context.dicts:\n                context_dict.update(d)\n            return super(Template, self).render(context_dict)\n\nThat's all that's required to make our fictional ``Template`` class compatible\nwith the Django loading and rendering system!\n\nThe next step is to write a ``Loader`` class that returns instances of our custom\ntemplate class instead of the default :class:`~django.template.Template`. Custom ``Loader``\nclasses should inherit from ``django.template.loader.BaseLoader`` and override\nthe ``load_template_source()`` method, which takes a ``template_name`` argument,\nloads the template from disk (or elsewhere), and returns a tuple:\n``(template_string, template_origin)``.\n\nThe ``load_template()`` method of the ``Loader`` class retrieves the template\nstring by calling ``load_template_source()``, instantiates a ``Template`` from\nthe template source, and returns a tuple: ``(template, template_origin)``. Since\nthis is the method that actually instantiates the ``Template``, we'll need to\noverride it to use our custom template class instead. We can inherit from the\nbuiltin :class:`django.template.loaders.app_directories.Loader` to take advantage\nof the ``load_template_source()`` method implemented there::\n\n    from django.template.loaders import app_directories\n    class Loader(app_directories.Loader):\n        is_usable = True\n\n        def load_template(self, template_name, template_dirs=None):\n            source, origin = self.load_template_source(template_name, template_dirs)\n            template = Template(source)\n            return template, origin\n\nFinally, we need to modify our project settings, telling Django to use our custom\nloader. Now we can write all of our templates in our alternative template\nlanguage while continuing to use the rest of the Django templating system.\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/templates/builtins.txt",
    "content": "==================================\nBuilt-in template tags and filters\n==================================\n\nThis document describes Django's built-in template tags and filters. It is\nrecommended that you use the :doc:`automatic documentation\n</ref/contrib/admin/admindocs>`, if available, as this will also include\ndocumentation for any custom tags or filters installed.\n\n.. _ref-templates-builtins-tags:\n\nBuilt-in tag reference\n----------------------\n\n.. highlightlang:: html+django\n\n.. templatetag:: autoescape\n\nautoescape\n^^^^^^^^^^\n\nControls the current auto-escaping behavior. This tag takes either ``on`` or\n``off`` as an argument and that determines whether auto-escaping is in effect\ninside the block. The block is closed with an ``endautoescape`` ending tag.\n\nWhen auto-escaping is in effect, all variable content has HTML escaping applied\nto it before placing the result into the output (but after any filters have\nbeen applied). This is equivalent to manually applying the :tfilter:`escape`\nfilter to each variable.\n\nThe only exceptions are variables that are already marked as \"safe\" from\nescaping, either by the code that populated the variable, or because it has had\nthe :tfilter:`safe` or :tfilter:`escape` filters applied.\n\nSample usage::\n\n    {% autoescape on %}\n        {{ body }}\n    {% endautoescape %}\n\n.. templatetag:: block\n\nblock\n^^^^^\n\nDefines a block that can be overridden by child templates. See\n:ref:`Template inheritance <template-inheritance>` for more information.\n\n.. templatetag:: comment\n\ncomment\n^^^^^^^\n\nIgnores everything between ``{% comment %}`` and ``{% endcomment %}``.\n\n.. templatetag:: csrf_token\n\ncsrf_token\n^^^^^^^^^^\n\nThis tag is used for CSRF protection, as described in the documentation for\n:doc:`Cross Site Request Forgeries </ref/contrib/csrf>`.\n\n.. templatetag:: cycle\n\ncycle\n^^^^^\n\nCycles among the given strings or variables each time this tag is encountered.\n\nWithin a loop, cycles among the given strings each time through the\nloop::\n\n    {% for o in some_list %}\n        <tr class=\"{% cycle 'row1' 'row2' %}\">\n            ...\n        </tr>\n    {% endfor %}\n\nYou can use variables, too. For example, if you have two template variables,\n``rowvalue1`` and ``rowvalue2``, you can cycle between their values like this::\n\n    {% for o in some_list %}\n        <tr class=\"{% cycle rowvalue1 rowvalue2 %}\">\n            ...\n        </tr>\n    {% endfor %}\n\nNote that variable arguments (``rowvalue1`` and ``rowvalue2`` above) are NOT\nauto-escaped! So either make sure that you trust their values, or use explicit\nescaping, like this::\n\n    {% for o in some_list %}\n        <tr class=\"{% filter force_escape %}{% cycle rowvalue1 rowvalue2 %}{% endfilter %}\">\n            ...\n        </tr>\n    {% endfor %}\n\nYou can mix variables and strings::\n\n    {% for o in some_list %}\n        <tr class=\"{% cycle 'row1' rowvalue2 'row3' %}\">\n            ...\n        </tr>\n    {% endfor %}\n\nIn some cases you might want to refer to the next value of a cycle from\noutside of a loop. To do this, just give the ``{% cycle %}`` tag a name, using\n\"as\", like this::\n\n    {% cycle 'row1' 'row2' as rowcolors %}\n\nFrom then on, you can insert the current value of the cycle wherever\nyou'd like in your template by referencing the cycle name as a context\nvariable. If you want to move the cycle onto the next value, you use\nthe cycle tag again, using the name of the variable. So, the following\ntemplate::\n\n    <tr>\n        <td class=\"{% cycle 'row1' 'row2' as rowcolors %}\">...</td>\n        <td class=\"{{ rowcolors }}\">...</td>\n    </tr>\n    <tr>\n        <td class=\"{% cycle rowcolors %}\">...</td>\n        <td class=\"{{ rowcolors }}\">...</td>\n    </tr>\n\nwould output::\n\n    <tr>\n        <td class=\"row1\">...</td>\n        <td class=\"row1\">...</td>\n    </tr>\n    <tr>\n        <td class=\"row2\">...</td>\n        <td class=\"row2\">...</td>\n    </tr>\n\nYou can use any number of values in a ``{% cycle %}`` tag, separated by spaces.\nValues enclosed in single (``'``) or double quotes (``\"``) are treated as\nstring literals, while values without quotes are treated as template variables.\n\nNote that the variables included in the cycle will not be escaped.\nThis is because template tags do not escape their content. Any HTML or\nJavascript code contained in the printed variable will be rendered\nas-is, which could potentially lead to security issues.\n\nFor backwards compatibility, the ``{% cycle %}`` tag supports the much inferior\nold syntax from previous Django versions. You shouldn't use this in any new\nprojects, but for the sake of the people who are still using it, here's what it\nlooks like::\n\n    {% cycle row1,row2,row3 %}\n\nIn this syntax, each value gets interpreted as a literal string, and there's no\nway to specify variable values. Or literal commas. Or spaces. Did we mention\nyou shouldn't use this syntax in any new projects?\n\nBy default, when you use the ``as`` keyword with the cycle tag, the\nusage of ``{% cycle %}`` that declares the cycle will itself output\nthe first value in the cycle. This could be a problem if you want to\nuse the value in a nested loop or an included template. If you want to\njust declare the cycle, but not output the first value, you can add a\n``silent`` keyword as the last keyword in the tag. For example::\n\n    {% for obj in some_list %}\n        {% cycle 'row1' 'row2' as rowcolors silent %}\n        <tr class=\"{{ rowcolors }}\">{% include \"subtemplate.html \" %}</tr>\n    {% endfor %}\n\nThis will output a list of ``<tr>`` elements with ``class``\nalternating between ``row1`` and ``row2``; the subtemplate will have\naccess to ``rowcolors`` in it's context that matches the class of the\n``<tr>`` that encloses it. If the ``silent`` keyword were to be\nomitted, ``row1`` would be emitted as normal text, outside the\n``<tr>`` element.\n\nWhen the silent keyword is used on a cycle definition, the silence\nautomatically applies to all subsequent uses of the cycle tag. In,\nthe following template would output *nothing*, even though the second\ncall to ``{% cycle %}`` doesn't specify silent::\n\n    {% cycle 'row1' 'row2' as rowcolors silent %}\n    {% cycle rowcolors %}\n\n.. templatetag:: debug\n\ndebug\n^^^^^\n\nOutputs a whole load of debugging information, including the current context\nand imported modules.\n\n.. templatetag:: extends\n\nextends\n^^^^^^^\n\nSignals that this template extends a parent template.\n\nThis tag can be used in two ways:\n\n* ``{% extends \"base.html\" %}`` (with quotes) uses the literal value\n  ``\"base.html\"`` as the name of the parent template to extend.\n\n* ``{% extends variable %}`` uses the value of ``variable``. If the variable\n  evaluates to a string, Django will use that string as the name of the\n  parent template. If the variable evaluates to a ``Template`` object,\n  Django will use that object as the parent template.\n\nSee :ref:`template-inheritance` for more information.\n\n.. templatetag:: filter\n\nfilter\n^^^^^^\n\nFilters the contents of the variable through variable filters.\n\nFilters can also be piped through each other, and they can have arguments --\njust like in variable syntax.\n\nSample usage::\n\n    {% filter force_escape|lower %}\n        This text will be HTML-escaped, and will appear in all lowercase.\n    {% endfilter %}\n\n.. note::\n\n    The :tfilter:`escape` and :tfilter:`safe` filters are not acceptable\n    arguments. Instead, use the :ttag:`autoescape` tag to manage autoescaping\n    for blocks of template code.\n\n.. templatetag:: firstof\n\nfirstof\n^^^^^^^\n\nOutputs the first variable passed that is not False. Does NOT auto-escape\nvariable values.\n\nOutputs nothing if all the passed variables are False.\n\nSample usage::\n\n    {% firstof var1 var2 var3 %}\n\nThis is equivalent to::\n\n    {% if var1 %}\n        {{ var1|safe }}\n    {% else %}{% if var2 %}\n        {{ var2|safe }}\n    {% else %}{% if var3 %}\n        {{ var3|safe }}\n    {% endif %}{% endif %}{% endif %}\n\nYou can also use a literal string as a fallback value in case all\npassed variables are False::\n\n    {% firstof var1 var2 var3 \"fallback value\" %}\n\nNote that the variables included in the firstof tag will not be\nescaped. This is because template tags do not escape their content.\nAny HTML or Javascript code contained in the printed variable will be\nrendered as-is, which could potentially lead to security issues. If you\nneed to escape the variables in the firstof tag, you must do so\nexplicitly::\n\n    {% filter force_escape %}\n        {% firstof var1 var2 var3 \"fallback value\" %}\n    {% endfilter %}\n\n.. templatetag:: for\n\nfor\n^^^\n\nLoop over each item in an array.  For example, to display a list of athletes\nprovided in ``athlete_list``::\n\n    <ul>\n    {% for athlete in athlete_list %}\n        <li>{{ athlete.name }}</li>\n    {% endfor %}\n    </ul>\n\nYou can loop over a list in reverse by using\n``{% for obj in list reversed %}``.\n\nIf you need to loop over a list of lists, you can unpack the values\nin each sub-list into individual variables. For example, if your context\ncontains a list of (x,y) coordinates called ``points``, you could use the\nfollowing to output the list of points::\n\n    {% for x, y in points %}\n        There is a point at {{ x }},{{ y }}\n    {% endfor %}\n\nThis can also be useful if you need to access the items in a dictionary.\nFor example, if your context contained a dictionary ``data``, the following\nwould display the keys and values of the dictionary::\n\n    {% for key, value in data.items %}\n        {{ key }}: {{ value }}\n    {% endfor %}\n\nThe for loop sets a number of variables available within the loop:\n\n==========================  ===============================================\nVariable                    Description\n==========================  ===============================================\n``forloop.counter``         The current iteration of the loop (1-indexed)\n``forloop.counter0``        The current iteration of the loop (0-indexed)\n``forloop.revcounter``      The number of iterations from the end of the\n                            loop (1-indexed)\n``forloop.revcounter0``     The number of iterations from the end of the\n                            loop (0-indexed)\n``forloop.first``           True if this is the first time through the loop\n``forloop.last``            True if this is the last time through the loop\n``forloop.parentloop``      For nested loops, this is the loop \"above\" the\n                            current one\n==========================  ===============================================\n\nfor ... empty\n^^^^^^^^^^^^^\n\nThe ``for`` tag can take an optional ``{% empty %}`` clause that will be\ndisplayed if the given array is empty or could not be found::\n\n    <ul>\n    {% for athlete in athlete_list %}\n        <li>{{ athlete.name }}</li>\n    {% empty %}\n        <li>Sorry, no athlete in this list!</li>\n    {% endfor %}\n    <ul>\n\nThe above is equivalent to -- but shorter, cleaner, and possibly faster\nthan -- the following::\n\n    <ul>\n      {% if athlete_list %}\n        {% for athlete in athlete_list %}\n          <li>{{ athlete.name }}</li>\n        {% endfor %}\n      {% else %}\n        <li>Sorry, no athletes in this list.</li>\n      {% endif %}\n    </ul>\n\n.. templatetag:: if\n\nif\n^^\n\nThe ``{% if %}`` tag evaluates a variable, and if that variable is \"true\" (i.e.\nexists, is not empty, and is not a false boolean value) the contents of the\nblock are output::\n\n    {% if athlete_list %}\n        Number of athletes: {{ athlete_list|length }}\n    {% elif athlete_in_locker_room_list %}\n        Athletes should be out of the locker room soon!\n    {% else %}\n        No athletes.\n    {% endif %}\n\nIn the above, if ``athlete_list`` is not empty, the number of athletes will be\ndisplayed by the ``{{ athlete_list|length }}`` variable.\n\nAs you can see, the ``if`` tag may take one or several ``{% elif %}``\nclauses, as well as an ``{% else %}`` clause that will be displayed if all\nprevious conditions fail. These clauses are optional.\n\n.. versionadded:: 1.4\n\nThe ``if`` tag now supports ``{% elif %}`` clauses.\n\nBoolean operators\n^^^^^^^^^^^^^^^^^\n\n:ttag:`if` tags may use ``and``, ``or`` or ``not`` to test a number of\nvariables or to negate a given variable::\n\n    {% if athlete_list and coach_list %}\n        Both athletes and coaches are available.\n    {% endif %}\n\n    {% if not athlete_list %}\n        There are no athletes.\n    {% endif %}\n\n    {% if athlete_list or coach_list %}\n        There are some athletes or some coaches.\n    {% endif %}\n\n    {% if not athlete_list or coach_list %}\n        There are no athletes or there are some coaches (OK, so\n        writing English translations of boolean logic sounds\n        stupid; it's not our fault).\n    {% endif %}\n\n    {% if athlete_list and not coach_list %}\n        There are some athletes and absolutely no coaches.\n    {% endif %}\n\nUse of both ``and`` and ``or`` clauses within the same tag is allowed, with\n``and`` having higher precedence than ``or`` e.g.::\n\n    {% if athlete_list and coach_list or cheerleader_list %}\n\nwill be interpreted like:\n\n.. code-block:: python\n\n    if (athlete_list and coach_list) or cheerleader_list\n\nUse of actual parentheses in the :ttag:`if` tag is invalid syntax.  If you need\nthem to indicate precedence, you should use nested :ttag:`if` tags.\n\n:ttag:`if` tags may also use the operators ``==``, ``!=``, ``<``, ``>``,\n``<=``, ``>=`` and ``in`` which work as follows:\n\n\n``==`` operator\n^^^^^^^^^^^^^^^\n\nEquality. Example::\n\n    {% if somevar == \"x\" %}\n      This appears if variable somevar equals the string \"x\"\n    {% endif %}\n\n``!=`` operator\n^^^^^^^^^^^^^^^\n\nInequality. Example::\n\n    {% if somevar != \"x\" %}\n      This appears if variable somevar does not equal the string \"x\",\n      or if somevar is not found in the context\n    {% endif %}\n\n``<`` operator\n^^^^^^^^^^^^^^\n\nLess than. Example::\n\n    {% if somevar < 100 %}\n      This appears if variable somevar is less than 100.\n    {% endif %}\n\n``>`` operator\n^^^^^^^^^^^^^^\n\nGreater than. Example::\n\n    {% if somevar > 0 %}\n      This appears if variable somevar is greater than 0.\n    {% endif %}\n\n``<=`` operator\n^^^^^^^^^^^^^^^\n\nLess than or equal to. Example::\n\n    {% if somevar <= 100 %}\n      This appears if variable somevar is less than 100 or equal to 100.\n    {% endif %}\n\n``>=`` operator\n^^^^^^^^^^^^^^^\n\nGreater than or equal to. Example::\n\n    {% if somevar >= 1 %}\n      This appears if variable somevar is greater than 1 or equal to 1.\n    {% endif %}\n\n``in`` operator\n^^^^^^^^^^^^^^^\n\nContained within. This operator is supported by many Python containers to test\nwhether the given value is in the container.  The following are some examples\nof how ``x in y`` will be interpreted::\n\n    {% if \"bc\" in \"abcdef\" %}\n      This appears since \"bc\" is a substring of \"abcdef\"\n    {% endif %}\n\n    {% if \"hello\" in greetings %}\n      If greetings is a list or set, one element of which is the string\n      \"hello\", this will appear.\n    {% endif %}\n\n    {% if user in users %}\n      If users is a QuerySet, this will appear if user is an\n      instance that belongs to the QuerySet.\n    {% endif %}\n\n``not in`` operator\n^^^^^^^^^^^^^^^^^^^\n\nNot contained within.  This is the negation of the ``in`` operator.\n\n\nThe comparison operators cannot be 'chained' like in Python or in mathematical\nnotation. For example, instead of using::\n\n    {% if a > b > c %}  (WRONG)\n\nyou should use::\n\n    {% if a > b and b > c %}\n\n\nFilters\n^^^^^^^\n\nYou can also use filters in the :ttag:`if` expression. For example::\n\n    {% if messages|length >= 100 %}\n       You have lots of messages today!\n    {% endif %}\n\nComplex expressions\n^^^^^^^^^^^^^^^^^^^\n\nAll of the above can be combined to form complex expressions. For such\nexpressions, it can be important to know how the operators are grouped when the\nexpression is evaluated - that is, the precedence rules.  The precedence of the\noperators, from lowest to highest, is as follows:\n\n* ``or``\n* ``and``\n* ``not``\n* ``in``\n* ``==``, ``!=``, ``<``, ``>``, ``<=``, ``>=``\n\n(This follows Python exactly). So, for example, the following complex\n:ttag:`if` tag:\n\n.. code-block:: django\n\n    {% if a == b or c == d and e %}\n\n...will be interpreted as:\n\n.. code-block:: python\n\n    (a == b) or ((c == d) and e)\n\nIf you need different precedence, you will need to use nested :ttag:`if` tags.\nSometimes that is better for clarity anyway, for the sake of those who do not\nknow the precedence rules.\n\n\n.. templatetag:: ifchanged\n\nifchanged\n^^^^^^^^^\n\nCheck if a value has changed from the last iteration of a loop.\n\nThe ``{% ifchanged %}`` block tag is used within a loop. It has two possible\nuses.\n\n1. Checks its own rendered contents against its previous state and only\n   displays the content if it has changed. For example, this displays a list of\n   days, only displaying the month if it changes::\n\n        <h1>Archive for {{ year }}</h1>\n\n        {% for date in days %}\n            {% ifchanged %}<h3>{{ date|date:\"F\" }}</h3>{% endifchanged %}\n            <a href=\"{{ date|date:\"M/d\"|lower }}/\">{{ date|date:\"j\" }}</a>\n        {% endfor %}\n\n2. If given one or more variables, check whether any variable has changed.\n   For example, the following shows the date every time it changes, while\n   showing the hour if either the hour or the date has changed::\n\n        {% for date in days %}\n            {% ifchanged date.date %} {{ date.date }} {% endifchanged %}\n            {% ifchanged date.hour date.date %}\n                {{ date.hour }}\n            {% endifchanged %}\n        {% endfor %}\n\nThe ``ifchanged`` tag can also take an optional ``{% else %}`` clause that\nwill be displayed if the value has not changed::\n\n        {% for match in matches %}\n            <div style=\"background-color:\n                {% ifchanged match.ballot_id %}\n                    {% cycle \"red\" \"blue\" %}\n                {% else %}\n                    grey\n                {% endifchanged %}\n            \">{{ match }}</div>\n        {% endfor %}\n\n.. templatetag:: ifequal\n\nifequal\n^^^^^^^\n\nOutput the contents of the block if the two arguments equal each other.\n\nExample::\n\n    {% ifequal user.pk comment.user_id %}\n        ...\n    {% endifequal %}\n\nAs in the :ttag:`if` tag, an ``{% else %}`` clause is optional.\n\nThe arguments can be hard-coded strings, so the following is valid::\n\n    {% ifequal user.username \"adrian\" %}\n        ...\n    {% endifequal %}\n\nIt is only possible to compare an argument to template variables or strings.\nYou cannot check for equality with Python objects such as ``True`` or\n``False``.  If you need to test if something is true or false, use the\n:ttag:`if` tag instead.\n\nAn alternative to the ``ifequal`` tag is to use the :ttag:`if` tag and the\n``==`` operator.\n\n.. templatetag:: ifnotequal\n\nifnotequal\n^^^^^^^^^^\n\nJust like :ttag:`ifequal`, except it tests that the two arguments are not\nequal.\n\nAn alternative to the ``ifnotequal`` tag is to use the :ttag:`if` tag and\nthe ``!=`` operator.\n\n.. templatetag:: include\n\ninclude\n^^^^^^^\n\nLoads a template and renders it with the current context. This is a way of\n\"including\" other templates within a template.\n\nThe template name can either be a variable or a hard-coded (quoted) string,\nin either single or double quotes.\n\nThis example includes the contents of the template ``\"foo/bar.html\"``::\n\n    {% include \"foo/bar.html\" %}\n\nThis example includes the contents of the template whose name is contained in\nthe variable ``template_name``::\n\n    {% include template_name %}\n\nAn included template is rendered with the context of the template that's\nincluding it. This example produces the output ``\"Hello, John\"``:\n\n* Context: variable ``person`` is set to ``\"john\"``.\n* Template::\n\n    {% include \"name_snippet.html\" %}\n\n* The ``name_snippet.html`` template::\n\n    {{ greeting }}, {{ person|default:\"friend\" }}!\n\nYou can pass additional context to the template using keyword arguments::\n\n    {% include \"name_snippet.html\" with person=\"Jane\" greeting=\"Hello\" %}\n\nIf you want to only render the context with the variables provided (or even\nno variables at all), use the ``only`` option::\n\n    {% include \"name_snippet.html\" with greeting=\"Hi\" only %}\n\n.. note::\n    The :ttag:`include` tag should be considered as an implementation of\n    \"render this subtemplate and include the HTML\", not as \"parse this\n    subtemplate and include its contents as if it were part of the parent\".\n    This means that there is no shared state between included templates --\n    each include is a completely independent rendering process.\n\nSee also: :ttag:`{% ssi %}<ssi>`.\n\n.. templatetag:: load\n\nload\n^^^^\n\nLoads a custom template tag set.\n\nFor example, the following template would load all the tags and filters\nregistered in ``somelibrary`` and ``otherlibrary`` located in package\n``package``::\n\n    {% load somelibrary package.otherlibrary %}\n\nYou can also selectively load individual filters or tags from a library, using\nthe ``from`` argument. In this example, the template tags/filters named ``foo``\nand ``bar`` will be loaded from ``somelibrary``::\n\n    {% load foo bar from somelibrary %}\n\nSee :doc:`Custom tag and filter libraries </howto/custom-template-tags>` for\nmore information.\n\n.. templatetag:: now\n\nnow\n^^^\n\nDisplays the current date and/or time, using a format according to the given\nstring. Such string can contain format specifiers characters as described\nin the :tfilter:`date` filter section.\n\nExample::\n\n    It is {% now \"jS F Y H:i\" %}\n\nNote that you can backslash-escape a format string if you want to use the\n\"raw\" value. In this example, \"f\" is backslash-escaped, because otherwise\n\"f\" is a format string that displays the time. The \"o\" doesn't need to be\nescaped, because it's not a format character::\n\n    It is the {% now \"jS o\\f F\" %}\n\nThis would display as \"It is the 4th of September\".\n\n.. versionchanged:: 1.4\n\n.. note::\n\n    The format passed can also be one of the predefined ones\n    :setting:`DATE_FORMAT`, :setting:`DATETIME_FORMAT`,\n    :setting:`SHORT_DATE_FORMAT` or :setting:`SHORT_DATETIME_FORMAT`.\n    The predefined formats may vary depending on the current locale and\n    if :ref:`format-localization` is enabled, e.g.::\n\n        It is {% now \"SHORT_DATETIME_FORMAT\" %}\n\n.. templatetag:: regroup\n\nregroup\n^^^^^^^\n\nRegroups a list of alike objects by a common attribute.\n\nThis complex tag is best illustrated by way of an example: say that \"places\" is a list of cities represented by dictionaries containing ``\"name\"``, ``\"population\"``, and ``\"country\"`` keys:\n\n.. code-block:: python\n\n    cities = [\n        {'name': 'Mumbai', 'population': '19,000,000', 'country': 'India'},\n        {'name': 'Calcutta', 'population': '15,000,000', 'country': 'India'},\n        {'name': 'New York', 'population': '20,000,000', 'country': 'USA'},\n        {'name': 'Chicago', 'population': '7,000,000', 'country': 'USA'},\n        {'name': 'Tokyo', 'population': '33,000,000', 'country': 'Japan'},\n    ]\n\n...and you'd like to display a hierarchical list that is ordered by country, like this:\n\n* India\n    * Mumbai: 19,000,000\n    * Calcutta: 15,000,000\n* USA\n    * New York: 20,000,000\n    * Chicago: 7,000,000\n* Japan\n    * Tokyo: 33,000,000\n\n\nYou can use the ``{% regroup %}`` tag to group the list of cities by country.\nThe following snippet of template code would accomplish this::\n\n    {% regroup cities by country as country_list %}\n\n    <ul>\n    {% for country in country_list %}\n        <li>{{ country.grouper }}\n        <ul>\n            {% for item in country.list %}\n              <li>{{ item.name }}: {{ item.population }}</li>\n            {% endfor %}\n        </ul>\n        </li>\n    {% endfor %}\n    </ul>\n\nLet's walk through this example. ``{% regroup %}`` takes three arguments: the\nlist you want to regroup, the attribute to group by, and the name of the\nresulting list. Here, we're regrouping the ``cities`` list by the ``country``\nattribute and calling the result ``country_list``.\n\n``{% regroup %}`` produces a list (in this case, ``country_list``) of\n**group objects**. Each group object has two attributes:\n\n* ``grouper`` -- the item that was grouped by (e.g., the string \"India\" or\n  \"Japan\").\n* ``list`` -- a list of all items in this group (e.g., a list of all cities\n  with country='India').\n\nNote that ``{% regroup %}`` does not order its input! Our example relies on\nthe fact that the ``cities`` list was ordered by ``country`` in the first place.\nIf the ``cities`` list did *not* order its members by ``country``, the\nregrouping would naively display more than one group for a single country. For\nexample, say the ``cities`` list was set to this (note that the countries are not\ngrouped together):\n\n.. code-block:: python\n\n    cities = [\n        {'name': 'Mumbai', 'population': '19,000,000', 'country': 'India'},\n        {'name': 'New York', 'population': '20,000,000', 'country': 'USA'},\n        {'name': 'Calcutta', 'population': '15,000,000', 'country': 'India'},\n        {'name': 'Chicago', 'population': '7,000,000', 'country': 'USA'},\n        {'name': 'Tokyo', 'population': '33,000,000', 'country': 'Japan'},\n    ]\n\nWith this input for ``cities``, the example ``{% regroup %}`` template code\nabove would result in the following output:\n\n* India\n    * Mumbai: 19,000,000\n* USA\n    * New York: 20,000,000\n* India\n    * Calcutta: 15,000,000\n* Japan\n    * Tokyo: 33,000,000\n\nThe easiest solution to this gotcha is to make sure in your view code that the\ndata is ordered according to how you want to display it.\n\nAnother solution is to sort the data in the template using the\n:tfilter:`dictsort` filter, if your data is in a list of dictionaries::\n\n    {% regroup cities|dictsort:\"country\" by country as country_list %}\n\nGrouping on other properties\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nAny valid template lookup is a legal grouping attribute for the regroup\ntag, including methods, attributes, dictionary keys and list items. For\nexample, if the \"country\" field is a foreign key to a class with\nan attribute \"description,\" you could use::\n\n    {% regroup cities by country.description as country_list %}\n\nOr, if ``country`` is a field with ``choices``, it will have a\n:meth:`~django.db.models.Model.get_FOO_display` method available as an\nattribute, allowing  you to group on the display string rather than the\n``choices`` key::\n\n    {% regroup cities by get_country_display as country_list %}\n\n``{{ country.grouper }}`` will now display the value fields from the\n``choices`` set rather than the keys.\n\n.. templatetag:: spaceless\n\nspaceless\n^^^^^^^^^\n\nRemoves whitespace between HTML tags. This includes tab\ncharacters and newlines.\n\nExample usage::\n\n    {% spaceless %}\n        <p>\n            <a href=\"foo/\">Foo</a>\n        </p>\n    {% endspaceless %}\n\nThis example would return this HTML::\n\n    <p><a href=\"foo/\">Foo</a></p>\n\nOnly space between *tags* is removed -- not space between tags and text. In\nthis example, the space around ``Hello`` won't be stripped::\n\n    {% spaceless %}\n        <strong>\n            Hello\n        </strong>\n    {% endspaceless %}\n\n.. templatetag:: ssi\n\nssi\n^^^\n\nOutputs the contents of a given file into the page.\n\nLike a simple :ttag:`include` tag, ``{% ssi %}`` includes the contents of\nanother file -- which must be specified using an absolute path -- in the\ncurrent page::\n\n    {% ssi '/home/html/ljworld.com/includes/right_generic.html' %}\n\nThe first parameter of ``ssi`` can be a quoted literal or any other context\nvariable.\n\nIf the optional \"parsed\" parameter is given, the contents of the included\nfile are evaluated as template code, within the current context::\n\n    {% ssi '/home/html/ljworld.com/includes/right_generic.html' parsed %}\n\nNote that if you use ``{% ssi %}``, you'll need to define\n:setting:`ALLOWED_INCLUDE_ROOTS` in your Django settings, as a security\nmeasure.\n\nSee also: :ttag:`{% include %}<include>`.\n\n.. templatetag:: templatetag\n\ntemplatetag\n^^^^^^^^^^^\n\nOutputs one of the syntax characters used to compose template tags.\n\nSince the template system has no concept of \"escaping\", to display one of the\nbits used in template tags, you must use the ``{% templatetag %}`` tag.\n\nThe argument tells which template bit to output:\n\n==================  =======\nArgument            Outputs\n==================  =======\n``openblock``       ``{%``\n``closeblock``      ``%}``\n``openvariable``    ``{{``\n``closevariable``   ``}}``\n``openbrace``       ``{``\n``closebrace``      ``}``\n``opencomment``     ``{#``\n``closecomment``    ``#}``\n==================  =======\n\n.. templatetag:: url\n\nurl\n^^^\n\nReturns an absolute path reference (a URL without the domain name) matching a\ngiven view function and optional parameters. This is a way to output links\nwithout violating the DRY principle by having to hard-code URLs in your\ntemplates::\n\n    {% url 'path.to.some_view' v1 v2 %}\n\nThe first argument is a path to a view function in the format\n``package.package.module.function``. It can be a quoted literal or any other\ncontext variable. Additional arguments are optional and\nshould be space-separated values that will be used as arguments in the URL.\nThe example above shows passing positional arguments. Alternatively you may\nuse keyword syntax::\n\n    {% url 'path.to.some_view' arg1=v1 arg2=v2 %}\n\nDo not mix both positional and keyword syntax in a single call. All arguments\nrequired by the URLconf should be present.\n\nFor example, suppose you have a view, ``app_views.client``, whose URLconf\ntakes a client ID (here, ``client()`` is a method inside the views file\n``app_views.py``). The URLconf line might look like this:\n\n.. code-block:: python\n\n    ('^client/(\\d+)/$', 'app_views.client')\n\nIf this app's URLconf is included into the project's URLconf under a path\nsuch as this:\n\n.. code-block:: python\n\n    ('^clients/', include('project_name.app_name.urls'))\n\n...then, in a template, you can create a link to this view like this::\n\n    {% url 'app_views.client' client.id %}\n\nThe template tag will output the string ``/clients/client/123/``.\n\nIf you're using :ref:`named URL patterns <naming-url-patterns>`, you can\nrefer to the name of the pattern in the ``url`` tag instead of using the\npath to the view.\n\nNote that if the URL you're reversing doesn't exist, you'll get an\n:exc:`~django.core.urlresolvers.NoReverseMatch` exception raised, which will\ncause your site to display an error page.\n\nIf you'd like to retrieve a URL without displaying it, you can use a slightly\ndifferent call::\n\n\n    {% url 'path.to.view' arg arg2 as the_url %}\n\n    <a href=\"{{ the_url }}\">I'm linking to {{ the_url }}</a>\n\nThis ``{% url ... as var %}`` syntax will *not* cause an error if the view is\nmissing. In practice you'll use this to link to views that are optional::\n\n    {% url 'path.to.view' as the_url %}\n    {% if the_url %}\n      <a href=\"{{ the_url }}\">Link to optional stuff</a>\n    {% endif %}\n\nIf you'd like to retrieve a namespaced URL, specify the fully qualified name::\n\n    {% url 'myapp:view-name' %}\n\nThis will follow the normal :ref:`namespaced URL resolution strategy\n<topics-http-reversing-url-namespaces>`, including using any hints provided\nby the context as to the current application.\n\n.. warning::\n\n    Don't forget to put quotes around the function path or pattern name!\n\n    .. versionchanged:: 1.5\n        The first parameter used not to be quoted, which was inconsistent with\n        other template tags. Since Django 1.5, it is evaluated according to\n        the usual rules: it can be a quoted string or a variable that will be\n        looked up in the context.\n\n.. templatetag:: verbatim\n\nverbatim\n^^^^^^^^\n\n.. versionadded:: 1.5\n\nStops the template engine from rendering the contents of this block tag.\n\nA common use is to allow a Javascript template layer that collides with\nDjango's syntax. For example::\n\n    {% verbatim %}\n        {{if dying}}Still alive.{{/if}}\n    {% endverbatim %}\n\nYou can also designate a specific closing tag, allowing the use of\n``{% endverbatim %}`` as part of the unrendered contents::\n\n    {% verbatim myblock %}\n        Avoid template rendering via the {% verbatim %}{% endverbatim %} block.\n    {% endverbatim myblock %}\n\n.. templatetag:: widthratio\n\nwidthratio\n^^^^^^^^^^\n\nFor creating bar charts and such, this tag calculates the ratio of a given\nvalue to a maximum value, and then applies that ratio to a constant.\n\nFor example::\n\n    <img src=\"bar.png\" alt=\"Bar\"\n         height=\"10\" width=\"{% widthratio this_value max_value max_width %}\" />\n\nIf ``this_value`` is 175, ``max_value`` is 200, and ``max_width`` is 100, the\nimage in the above example will be 88 pixels wide\n(because 175/200 = .875; .875 * 100 = 87.5 which is rounded up to 88).\n\n.. templatetag:: with\n\nwith\n^^^^\n\nCaches a complex variable under a simpler name. This is useful when accessing\nan \"expensive\" method (e.g., one that hits the database) multiple times.\n\nFor example::\n\n    {% with total=business.employees.count %}\n        {{ total }} employee{{ total|pluralize }}\n    {% endwith %}\n\nThe populated variable (in the example above, ``total``) is only available\nbetween the ``{% with %}`` and ``{% endwith %}`` tags.\n\nYou can assign more than one context variable::\n\n    {% with alpha=1 beta=2 %}\n        ...\n    {% endwith %}\n\n.. note:: The previous more verbose format is still supported:\n   ``{% with business.employees.count as total %}``\n\n.. _ref-templates-builtins-filters:\n\nBuilt-in filter reference\n-------------------------\n\n.. templatefilter:: add\n\nadd\n^^^\n\nAdds the argument to the value.\n\nFor example::\n\n    {{ value|add:\"2\" }}\n\nIf ``value`` is ``4``, then the output will be ``6``.\n\nThis filter will first try to coerce both values to integers. If this fails,\nit'll attempt to add the values together anyway. This will work on some data\ntypes (strings, list, etc.) and fail on others. If it fails, the result will\nbe an empty string.\n\nFor example, if we have::\n\n    {{ first|add:second }}\n\nand ``first`` is ``[1, 2, 3]`` and ``second`` is ``[4, 5, 6]``, then the\noutput will be ``[1, 2, 3, 4, 5, 6]``.\n\n.. warning::\n\n    Strings that can be coerced to integers will be **summed**, not\n    concatenated, as in the first example above.\n\n.. templatefilter:: addslashes\n\naddslashes\n^^^^^^^^^^\n\nAdds slashes before quotes. Useful for escaping strings in CSV, for example.\n\nFor example::\n\n    {{ value|addslashes }}\n\nIf ``value`` is ``\"I'm using Django\"``, the output will be\n``\"I\\'m using Django\"``.\n\n.. templatefilter:: capfirst\n\ncapfirst\n^^^^^^^^\n\nCapitalizes the first character of the value.\n\nFor example::\n\n    {{ value|capfirst }}\n\nIf ``value`` is ``\"django\"``, the output will be ``\"Django\"``.\n\n.. templatefilter:: center\n\ncenter\n^^^^^^\n\nCenters the value in a field of a given width.\n\nFor example::\n\n    \"{{ value|center:\"15\" }}\"\n\nIf ``value`` is ``\"Django\"``, the output will be ``\"     Django    \"``.\n\n.. templatefilter:: cut\n\ncut\n^^^\n\nRemoves all values of arg from the given string.\n\nFor example::\n\n    {{ value|cut:\" \" }}\n\nIf ``value`` is ``\"String with spaces\"``, the output will be\n``\"Stringwithspaces\"``.\n\n.. templatefilter:: date\n\ndate\n^^^^\n\nFormats a date according to the given format.\n\nUses a similar format as PHP's ``date()`` function (http://php.net/date)\nwith some differences.\n\nAvailable format strings:\n\n================  ========================================  =====================\nFormat character  Description                               Example output\n================  ========================================  =====================\na                 ``'a.m.'`` or ``'p.m.'`` (Note that       ``'a.m.'``\n                  this is slightly different than PHP's\n                  output, because this includes periods\n                  to match Associated Press style.)\nA                 ``'AM'`` or ``'PM'``.                     ``'AM'``\nb                 Month, textual, 3 letters, lowercase.     ``'jan'``\nB                 Not implemented.\nc                 ISO 8601 format. (Note: unlike others     ``2008-01-02T10:30:00.000123+02:00``,\n                  formatters, such as \"Z\", \"O\" or \"r\",      or ``2008-01-02T10:30:00.000123`` if the datetime is naive\n                  the \"c\" formatter will not add timezone\n                  offset if value is a naive datetime\n                  (see :class:`datetime.tzinfo`).\nd                 Day of the month, 2 digits with           ``'01'`` to ``'31'``\n                  leading zeros.\nD                 Day of the week, textual, 3 letters.      ``'Fri'``\ne                 Timezone name. Could be in any format,\n                  or might return an empty string,          ``''``, ``'GMT'``, ``'-500'``, ``'US/Eastern'``, etc.\n                  depending on the datetime.\nE                 Month, locale specific alternative\n                  representation usually used for long\n                  date representation.                      ``'listopada'`` (for Polish locale, as opposed to ``'Listopad'``)\nf                 Time, in 12-hour hours and minutes,       ``'1'``, ``'1:30'``\n                  with minutes left off if they're zero.\n                  Proprietary extension.\nF                 Month, textual, long.                     ``'January'``\ng                 Hour, 12-hour format without leading      ``'1'`` to ``'12'``\n                  zeros.\nG                 Hour, 24-hour format without leading      ``'0'`` to ``'23'``\n                  zeros.\nh                 Hour, 12-hour format.                     ``'01'`` to ``'12'``\nH                 Hour, 24-hour format.                     ``'00'`` to ``'23'``\ni                 Minutes.                                  ``'00'`` to ``'59'``\nI                 Daylight Savings Time, whether it's       ``'1'`` or ``'0'``\n                  in effect or not.\nj                 Day of the month without leading          ``'1'`` to ``'31'``\n                  zeros.\nl                 Day of the week, textual, long.           ``'Friday'``\nL                 Boolean for whether it's a leap year.     ``True`` or ``False``\nm                 Month, 2 digits with leading zeros.       ``'01'`` to ``'12'``\nM                 Month, textual, 3 letters.                ``'Jan'``\nn                 Month without leading zeros.              ``'1'`` to ``'12'``\nN                 Month abbreviation in Associated Press    ``'Jan.'``, ``'Feb.'``, ``'March'``, ``'May'``\n                  style. Proprietary extension.\no                 ISO-8601 week-numbering year,             ``'1999'``\n                  corresponding to\n                  the ISO-8601 week number (W)\nO                 Difference to Greenwich time in hours.    ``'+0200'``\nP                 Time, in 12-hour hours, minutes and       ``'1 a.m.'``, ``'1:30 p.m.'``, ``'midnight'``, ``'noon'``, ``'12:30 p.m.'``\n                  'a.m.'/'p.m.', with minutes left off\n                  if they're zero and the special-case\n                  strings 'midnight' and 'noon' if\n                  appropriate. Proprietary extension.\nr                 :rfc:`2822` formatted date.               ``'Thu, 21 Dec 2000 16:01:07 +0200'``\ns                 Seconds, 2 digits with leading zeros.     ``'00'`` to ``'59'``\nS                 English ordinal suffix for day of the     ``'st'``, ``'nd'``, ``'rd'`` or ``'th'``\n                  month, 2 characters.\nt                 Number of days in the given month.        ``28`` to ``31``\nT                 Time zone of this machine.                ``'EST'``, ``'MDT'``\nu                 Microseconds.                             ``000000`` to ``999999``\nU                 Seconds since the Unix Epoch\n                  (January 1 1970 00:00:00 UTC).\nw                 Day of the week, digits without           ``'0'`` (Sunday) to ``'6'`` (Saturday)\n                  leading zeros.\nW                 ISO-8601 week number of year, with        ``1``, ``53``\n                  weeks starting on Monday.\ny                 Year, 2 digits.                           ``'99'``\nY                 Year, 4 digits.                           ``'1999'``\nz                 Day of the year.                          ``0`` to ``365``\nZ                 Time zone offset in seconds. The          ``-43200`` to ``43200``\n                  offset for timezones west of UTC is\n                  always negative, and for those east of\n                  UTC is always positive.\n================  ========================================  =====================\n\n.. versionadded:: 1.4\n\nThe ``e`` and ``o`` format specification characters were added in Django 1.4.\n\nFor example::\n\n    {{ value|date:\"D d M Y\" }}\n\nIf ``value`` is a ``datetime`` object (e.g., the result of\n``datetime.datetime.now()``), the output will be the string\n``'Wed 09 Jan 2008'``.\n\nThe format passed can be one of the predefined ones :setting:`DATE_FORMAT`,\n:setting:`DATETIME_FORMAT`, :setting:`SHORT_DATE_FORMAT` or\n:setting:`SHORT_DATETIME_FORMAT`, or a custom format that uses the format\nspecifiers shown in the table above. Note that predefined formats may vary\ndepending on the current locale.\n\nAssuming that :setting:`USE_L10N` is ``True`` and :setting:`LANGUAGE_CODE` is,\nfor example, ``\"es\"``, then for::\n\n    {{ value|date:\"SHORT_DATE_FORMAT\" }}\n\nthe output would be the string ``\"09/01/2008\"`` (the ``\"SHORT_DATE_FORMAT\"``\nformat specifier for the ``es`` locale as shipped with Django is ``\"d/m/Y\"``).\n\nWhen used without a format string::\n\n    {{ value|date }}\n\n...the formatting string defined in the :setting:`DATE_FORMAT` setting will be\nused, without applying any localization.\n\n.. templatefilter:: default\n\ndefault\n^^^^^^^\n\nIf value evaluates to ``False``, uses the given default. Otherwise, uses the\nvalue.\n\nFor example::\n\n    {{ value|default:\"nothing\" }}\n\nIf ``value`` is ``\"\"`` (the empty string), the output will be ``nothing``.\n\n.. templatefilter:: default_if_none\n\ndefault_if_none\n^^^^^^^^^^^^^^^\n\nIf (and only if) value is ``None``, uses the given default. Otherwise, uses the\nvalue.\n\nNote that if an empty string is given, the default value will *not* be used.\nUse the :tfilter:`default` filter if you want to fallback for empty strings.\n\nFor example::\n\n    {{ value|default_if_none:\"nothing\" }}\n\nIf ``value`` is ``None``, the output will be the string ``\"nothing\"``.\n\n.. templatefilter:: dictsort\n\ndictsort\n^^^^^^^^\n\nTakes a list of dictionaries and returns that list sorted by the key given in\nthe argument.\n\nFor example::\n\n    {{ value|dictsort:\"name\" }}\n\nIf ``value`` is:\n\n.. code-block:: python\n\n    [\n        {'name': 'zed', 'age': 19},\n        {'name': 'amy', 'age': 22},\n        {'name': 'joe', 'age': 31},\n    ]\n\nthen the output would be:\n\n.. code-block:: python\n\n    [\n        {'name': 'amy', 'age': 22},\n        {'name': 'joe', 'age': 31},\n        {'name': 'zed', 'age': 19},\n    ]\n\n.. templatefilter:: dictsortreversed\n\ndictsortreversed\n^^^^^^^^^^^^^^^^\n\nTakes a list of dictionaries and returns that list sorted in reverse order by\nthe key given in the argument. This works exactly the same as the above filter,\nbut the returned value will be in reverse order.\n\n.. templatefilter:: divisibleby\n\ndivisibleby\n^^^^^^^^^^^\n\nReturns ``True`` if the value is divisible by the argument.\n\nFor example::\n\n    {{ value|divisibleby:\"3\" }}\n\nIf ``value`` is ``21``, the output would be ``True``.\n\n.. templatefilter:: escape\n\nescape\n^^^^^^\n\nEscapes a string's HTML. Specifically, it makes these replacements:\n\n* ``<`` is converted to ``&lt;``\n* ``>`` is converted to ``&gt;``\n* ``'`` (single quote) is converted to ``&#39;``\n* ``\"`` (double quote) is converted to ``&quot;``\n* ``&`` is converted to ``&amp;``\n\nThe escaping is only applied when the string is output, so it does not matter\nwhere in a chained sequence of filters you put ``escape``: it will always be\napplied as though it were the last filter. If you want escaping to be applied\nimmediately, use the :tfilter:`force_escape` filter.\n\nApplying ``escape`` to a variable that would normally have auto-escaping\napplied to the result will only result in one round of escaping being done. So\nit is safe to use this function even in auto-escaping environments. If you want\nmultiple escaping passes to be applied, use the :tfilter:`force_escape` filter.\n\n.. templatefilter:: escapejs\n\nescapejs\n^^^^^^^^\n\nEscapes characters for use in JavaScript strings. This does *not* make the\nstring safe for use in HTML, but does protect you from syntax errors when using\ntemplates to generate JavaScript/JSON.\n\nFor example::\n\n    {{ value|escapejs }}\n\nIf ``value`` is ``\"testing\\r\\njavascript \\'string\" <b>escaping</b>\"``,\nthe output will be ``\"testing\\\\u000D\\\\u000Ajavascript \\\\u0027string\\\\u0022 \\\\u003Cb\\\\u003Eescaping\\\\u003C/b\\\\u003E\"``.\n\n.. templatefilter:: filesizeformat\n\nfilesizeformat\n^^^^^^^^^^^^^^\n\nFormats the value like a 'human-readable' file size (i.e. ``'13 KB'``,\n``'4.1 MB'``, ``'102 bytes'``, etc).\n\nFor example::\n\n    {{ value|filesizeformat }}\n\nIf ``value`` is 123456789, the output would be ``117.7 MB``.\n\n.. admonition:: File sizes and SI units\n\n    Strictly speaking, ``filesizeformat`` does not conform to the International\n    System of Units which recommends using KiB, MiB, GiB, etc. when byte sizes\n    are calculated in powers of 1024 (which is the case here). Instead, Django\n    uses traditional unit names (KB, MB, GB, etc.) corresponding to names that\n    are more commonly used.\n\n.. templatefilter:: first\n\nfirst\n^^^^^\n\nReturns the first item in a list.\n\nFor example::\n\n    {{ value|first }}\n\nIf ``value`` is the list ``['a', 'b', 'c']``, the output will be ``'a'``.\n\n.. templatefilter:: fix_ampersands\n\nfix_ampersands\n^^^^^^^^^^^^^^\n\n.. note::\n\n    This is rarely useful as ampersands are automatically escaped. See\n    :tfilter:`escape` for more information.\n\nReplaces ampersands with ``&amp;`` entities.\n\nFor example::\n\n    {{ value|fix_ampersands }}\n\nIf ``value`` is ``Tom & Jerry``, the output will be ``Tom &amp; Jerry``.\n\nHowever, ampersands used in named entities and numeric character references\nwill not be replaced. For example, if ``value`` is ``Caf&eacute;``, the output\nwill *not* be ``Caf&amp;eacute;`` but remain ``Caf&eacute;``. This means that\nin some edge cases, such as acronyms followed by semicolons, this filter will\nnot replace ampersands that need replacing. For example, if ``value`` is\n``Contact the R&D;``, the output will remain unchanged because ``&D;``\nresembles a named entity.\n\n.. templatefilter:: floatformat\n\nfloatformat\n^^^^^^^^^^^\n\nWhen used without an argument, rounds a floating-point number to one decimal\nplace -- but only if there's a decimal part to be displayed. For example:\n\n============  ===========================  ========\n``value``     Template                     Output\n============  ===========================  ========\n``34.23234``  ``{{ value|floatformat }}``  ``34.2``\n``34.00000``  ``{{ value|floatformat }}``  ``34``\n``34.26000``  ``{{ value|floatformat }}``  ``34.3``\n============  ===========================  ========\n\nIf used with a numeric integer argument, ``floatformat`` rounds a number to\nthat many decimal places. For example:\n\n============  =============================  ==========\n``value``     Template                       Output\n============  =============================  ==========\n``34.23234``  ``{{ value|floatformat:3 }}``  ``34.232``\n``34.00000``  ``{{ value|floatformat:3 }}``  ``34.000``\n``34.26000``  ``{{ value|floatformat:3 }}``  ``34.260``\n============  =============================  ==========\n\nParticularly useful is passing 0 (zero) as the argument which will round the\nfloat to the nearest integer.\n\n============  ================================  ==========\n``value``     Template                          Output\n============  ================================  ==========\n``34.23234``  ``{{ value|floatformat:\"0\" }}``   ``34``\n``34.00000``  ``{{ value|floatformat:\"0\" }}``   ``34``\n``39.56000``  ``{{ value|floatformat:\"0\" }}``   ``40``\n============  ================================  ==========\n\nIf the argument passed to ``floatformat`` is negative, it will round a number\nto that many decimal places -- but only if there's a decimal part to be\ndisplayed. For example:\n\n============  ================================  ==========\n``value``     Template                          Output\n============  ================================  ==========\n``34.23234``  ``{{ value|floatformat:\"-3\" }}``  ``34.232``\n``34.00000``  ``{{ value|floatformat:\"-3\" }}``  ``34``\n``34.26000``  ``{{ value|floatformat:\"-3\" }}``  ``34.260``\n============  ================================  ==========\n\nUsing ``floatformat`` with no argument is equivalent to using ``floatformat``\nwith an argument of ``-1``.\n\n.. templatefilter:: force_escape\n\nforce_escape\n^^^^^^^^^^^^\n\nApplies HTML escaping to a string (see the :tfilter:`escape` filter for\ndetails). This filter is applied *immediately* and returns a new, escaped\nstring. This is useful in the rare cases where you need multiple escaping or\nwant to apply other filters to the escaped results. Normally, you want to use\nthe :tfilter:`escape` filter.\n\n.. templatefilter:: get_digit\n\nget_digit\n^^^^^^^^^\n\nGiven a whole number, returns the requested digit, where 1 is the right-most\ndigit, 2 is the second-right-most digit, etc. Returns the original value for\ninvalid input (if input or argument is not an integer, or if argument is less\nthan 1). Otherwise, output is always an integer.\n\nFor example::\n\n    {{ value|get_digit:\"2\" }}\n\nIf ``value`` is ``123456789``, the output will be ``8``.\n\n.. templatefilter:: iriencode\n\niriencode\n^^^^^^^^^\n\nConverts an IRI (Internationalized Resource Identifier) to a string that is\nsuitable for including in a URL. This is necessary if you're trying to use\nstrings containing non-ASCII characters in a URL.\n\nIt's safe to use this filter on a string that has already gone through the\n:tfilter:`urlencode` filter.\n\nFor example::\n\n    {{ value|iriencode }}\n\nIf ``value`` is ``\"?test=1&me=2\"``, the output will be ``\"?test=1&amp;me=2\"``.\n\n.. templatefilter:: join\n\njoin\n^^^^\n\nJoins a list with a string, like Python's ``str.join(list)``\n\nFor example::\n\n    {{ value|join:\" // \" }}\n\nIf ``value`` is the list ``['a', 'b', 'c']``, the output will be the string\n``\"a // b // c\"``.\n\n.. templatefilter:: last\n\nlast\n^^^^\n\nReturns the last item in a list.\n\nFor example::\n\n    {{ value|last }}\n\nIf ``value`` is the list ``['a', 'b', 'c', 'd']``, the output will be the\nstring ``\"d\"``.\n\n.. templatefilter:: length\n\nlength\n^^^^^^\n\nReturns the length of the value. This works for both strings and lists.\n\nFor example::\n\n    {{ value|length }}\n\nIf ``value`` is ``['a', 'b', 'c', 'd']``, the output will be ``4``.\n\n.. templatefilter:: length_is\n\nlength_is\n^^^^^^^^^\n\nReturns ``True`` if the value's length is the argument, or ``False`` otherwise.\n\nFor example::\n\n    {{ value|length_is:\"4\" }}\n\nIf ``value`` is ``['a', 'b', 'c', 'd']``, the output will be ``True``.\n\n.. templatefilter:: linebreaks\n\nlinebreaks\n^^^^^^^^^^\n\nReplaces line breaks in plain text with appropriate HTML; a single\nnewline becomes an HTML line break (``<br />``) and a new line\nfollowed by a blank line becomes a paragraph break (``</p>``).\n\nFor example::\n\n    {{ value|linebreaks }}\n\nIf ``value`` is ``Joel\\nis a slug``, the output will be ``<p>Joel<br />is a\nslug</p>``.\n\n.. templatefilter:: linebreaksbr\n\nlinebreaksbr\n^^^^^^^^^^^^\n\nConverts all newlines in a piece of plain text to HTML line breaks\n(``<br />``).\n\nFor example::\n\n    {{ value|linebreaksbr }}\n\nIf ``value`` is ``Joel\\nis a slug``, the output will be ``Joel<br />is a\nslug``.\n\n.. templatefilter:: linenumbers\n\nlinenumbers\n^^^^^^^^^^^\n\nDisplays text with line numbers.\n\nFor example::\n\n    {{ value|linenumbers }}\n\nIf ``value`` is::\n\n    one\n    two\n    three\n\nthe output will be::\n\n    1. one\n    2. two\n    3. three\n\n.. templatefilter:: ljust\n\nljust\n^^^^^\n\nLeft-aligns the value in a field of a given width.\n\n**Argument:** field size\n\nFor example::\n\n    \"{{ value|ljust:\"10\" }}\"\n\nIf ``value`` is ``Django``, the output will be ``\"Django    \"``.\n\n.. templatefilter:: lower\n\nlower\n^^^^^\n\nConverts a string into all lowercase.\n\nFor example::\n\n    {{ value|lower }}\n\nIf ``value`` is ``Still MAD At Yoko``, the output will be\n``still mad at yoko``.\n\n.. templatefilter:: make_list\n\nmake_list\n^^^^^^^^^\n\nReturns the value turned into a list. For a string, it's a list of characters.\nFor an integer, the argument is cast into an unicode string before creating a\nlist.\n\nFor example::\n\n    {{ value|make_list }}\n\nIf ``value`` is the string ``\"Joel\"``, the output would be the list\n``[u'J', u'o', u'e', u'l']``. If ``value`` is ``123``, the output will be the\nlist ``[u'1', u'2', u'3']``.\n\n.. templatefilter:: phone2numeric\n\nphone2numeric\n^^^^^^^^^^^^^\n\nConverts a phone number (possibly containing letters) to its numerical\nequivalent.\n\nThe input doesn't have to be a valid phone number. This will happily convert\nany string.\n\nFor example::\n\n    {{ value|phone2numeric }}\n\nIf ``value`` is ``800-COLLECT``, the output will be ``800-2655328``.\n\n.. templatefilter:: pluralize\n\npluralize\n^^^^^^^^^\n\nReturns a plural suffix if the value is not 1. By default, this suffix is\n``'s'``.\n\nExample::\n\n    You have {{ num_messages }} message{{ num_messages|pluralize }}.\n\nIf ``num_messages`` is ``1``, the output will be ``You have 1 message.``\nIf ``num_messages`` is ``2``  the output will be ``You have 2 messages.``\n\nFor words that require a suffix other than ``'s'``, you can provide an alternate\nsuffix as a parameter to the filter.\n\nExample::\n\n    You have {{ num_walruses }} walrus{{ num_walruses|pluralize:\"es\" }}.\n\nFor words that don't pluralize by simple suffix, you can specify both a\nsingular and plural suffix, separated by a comma.\n\nExample::\n\n    You have {{ num_cherries }} cherr{{ num_cherries|pluralize:\"y,ies\" }}.\n\n.. note:: Use :ttag:`blocktrans` to pluralize translated strings.\n\n.. templatefilter:: pprint\n\npprint\n^^^^^^\n\nA wrapper around :func:`pprint.pprint` -- for debugging, really.\n\n.. templatefilter:: random\n\nrandom\n^^^^^^\n\nReturns a random item from the given list.\n\nFor example::\n\n    {{ value|random }}\n\nIf ``value`` is the list ``['a', 'b', 'c', 'd']``, the output could be ``\"b\"``.\n\n.. templatefilter:: removetags\n\nremovetags\n^^^^^^^^^^\n\nRemoves a space-separated list of [X]HTML tags from the output.\n\nFor example::\n\n    {{ value|removetags:\"b span\"|safe }}\n\nIf ``value`` is ``\"<b>Joel</b> <button>is</button> a <span>slug</span>\"`` the\noutput will be ``\"Joel <button>is</button> a slug\"``.\n\nNote that this filter is case-sensitive.\n\nIf ``value`` is ``\"<B>Joel</B> <button>is</button> a <span>slug</span>\"`` the\noutput will be ``\"<B>Joel</B> <button>is</button> a slug\"``.\n\n.. templatefilter:: rjust\n\nrjust\n^^^^^\n\nRight-aligns the value in a field of a given width.\n\n**Argument:** field size\n\nFor example::\n\n    \"{{ value|rjust:\"10\" }}\"\n\nIf ``value`` is ``Django``, the output will be ``\"    Django\"``.\n\n.. templatefilter:: safe\n\nsafe\n^^^^\n\nMarks a string as not requiring further HTML escaping prior to output. When\nautoescaping is off, this filter has no effect.\n\n.. note::\n\n    If you are chaining filters, a filter applied after ``safe`` can\n    make the contents unsafe again. For example, the following code\n    prints the variable as is, unescaped:\n\n    .. code-block:: html+django\n\n        {{ var|safe|escape }}\n\n.. templatefilter:: safeseq\n\nsafeseq\n^^^^^^^\n\nApplies the :tfilter:`safe` filter to each element of a sequence.  Useful in\nconjunction with other filters that operate on sequences, such as\n:tfilter:`join`.  For example::\n\n    {{ some_list|safeseq|join:\", \" }}\n\nYou couldn't use the :tfilter:`safe` filter directly in this case, as it would\nfirst convert the variable into a string, rather than working with the\nindividual elements of the sequence.\n\n.. templatefilter:: slice\n\nslice\n^^^^^\n\nReturns a slice of the list.\n\nUses the same syntax as Python's list slicing. See\nhttp://diveintopython.net/native_data_types/lists.html#odbchelper.list.slice\nfor an introduction.\n\nExample::\n\n    {{ some_list|slice:\":2\" }}\n\nIf ``some_list`` is ``['a', 'b', 'c']``, the output will be ``['a', 'b']``.\n\n.. templatefilter:: slugify\n\nslugify\n^^^^^^^\n\nConverts to lowercase, removes non-word characters (alphanumerics and\nunderscores) and converts spaces to hyphens. Also strips leading and trailing\nwhitespace.\n\nFor example::\n\n    {{ value|slugify }}\n\nIf ``value`` is ``\"Joel is a slug\"``, the output will be ``\"joel-is-a-slug\"``.\n\n.. templatefilter:: stringformat\n\nstringformat\n^^^^^^^^^^^^\n\nFormats the variable according to the argument, a string formatting specifier.\nThis specifier uses Python string formatting syntax, with the exception that\nthe leading \"%\" is dropped.\n\nSee http://docs.python.org/library/stdtypes.html#string-formatting-operations\nfor documentation of Python string formatting\n\nFor example::\n\n    {{ value|stringformat:\"E\" }}\n\nIf ``value`` is ``10``, the output will be ``1.000000E+01``.\n\n.. templatefilter:: striptags\n\nstriptags\n^^^^^^^^^\n\nStrips all [X]HTML tags.\n\nFor example::\n\n    {{ value|striptags }}\n\nIf ``value`` is ``\"<b>Joel</b> <button>is</button> a <span>slug</span>\"``, the\noutput will be ``\"Joel is a slug\"``.\n\n.. templatefilter:: time\n\ntime\n^^^^\n\nFormats a time according to the given format.\n\nGiven format can be the predefined one :setting:`TIME_FORMAT`, or a custom\nformat, same as the :tfilter:`date` filter. Note that the predefined format\nis locale-dependant.\n\nThe time filter will only accept parameters in the format string that relate\nto the time of day, not the date (for obvious reasons). If you need to\nformat a date, use the :tfilter:`date` filter.\n\nFor example::\n\n    {{ value|time:\"H:i\" }}\n\nIf ``value`` is equivalent to ``datetime.datetime.now()``, the output will be\nthe string ``\"01:23\"``.\n\nAnother example:\n\nAssuming that :setting:`USE_L10N` is ``True`` and :setting:`LANGUAGE_CODE` is,\nfor example, ``\"de\"``, then for::\n\n    {{ value|time:\"TIME_FORMAT\" }}\n\nthe output will be the string ``\"01:23:00\"`` (The ``\"TIME_FORMAT\"`` format\nspecifier for the ``de`` locale as shipped with Django is ``\"H:i:s\"``).\n\nWhen used without a format string::\n\n    {{ value|time }}\n\n...the formatting string defined in the :setting:`TIME_FORMAT` setting will be\nused, without applying any localization.\n\n.. templatefilter:: timesince\n\ntimesince\n^^^^^^^^^\n\nFormats a date as the time since that date (e.g., \"4 days, 6 hours\").\n\nTakes an optional argument that is a variable containing the date to use as\nthe comparison point (without the argument, the comparison point is *now*).\nFor example, if ``blog_date`` is a date instance representing midnight on 1\nJune 2006, and ``comment_date`` is a date instance for 08:00 on 1 June 2006,\nthen ``{{ blog_date|timesince:comment_date }}`` would return \"8 hours\".\n\nComparing offset-naive and offset-aware datetimes will return an empty string.\n\nMinutes is the smallest unit used, and \"0 minutes\" will be returned for any\ndate that is in the future relative to the comparison point.\n\n.. templatefilter:: timeuntil\n\ntimeuntil\n^^^^^^^^^\n\nSimilar to ``timesince``, except that it measures the time from now until the\ngiven date or datetime. For example, if today is 1 June 2006 and\n``conference_date`` is a date instance holding 29 June 2006, then\n``{{ conference_date|timeuntil }}`` will return \"4 weeks\".\n\nTakes an optional argument that is a variable containing the date to use as\nthe comparison point (instead of *now*). If ``from_date`` contains 22 June\n2006, then ``{{ conference_date|timeuntil:from_date }}`` will return \"1 week\".\n\nComparing offset-naive and offset-aware datetimes will return an empty string.\n\nMinutes is the smallest unit used, and \"0 minutes\" will be returned for any\ndate that is in the past relative to the comparison point.\n\n.. templatefilter:: title\n\ntitle\n^^^^^\n\nConverts a string into titlecase.\n\nFor example::\n\n    {{ value|title }}\n\nIf ``value`` is ``\"my first post\"``, the output will be ``\"My First Post\"``.\n\n.. templatefilter:: truncatechars\n\ntruncatechars\n^^^^^^^^^^^^^\n\n.. versionadded:: 1.4\n\nTruncates a string if it is longer than the specified number of characters.\nTruncated strings will end with a translatable ellipsis sequence (\"...\").\n\n**Argument:** Number of characters to truncate to\n\nFor example::\n\n    {{ value|truncatechars:9 }}\n\nIf ``value`` is ``\"Joel is a slug\"``, the output will be ``\"Joel i...\"``.\n\n.. templatefilter:: truncatewords\n\ntruncatewords\n^^^^^^^^^^^^^\n\nTruncates a string after a certain number of words.\n\n**Argument:** Number of words to truncate after\n\nFor example::\n\n    {{ value|truncatewords:2 }}\n\nIf ``value`` is ``\"Joel is a slug\"``, the output will be ``\"Joel is ...\"``.\n\nNewlines within the string will be removed.\n\n.. templatefilter:: truncatewords_html\n\ntruncatewords_html\n^^^^^^^^^^^^^^^^^^\n\nSimilar to :tfilter:`truncatewords`, except that it is aware of HTML tags. Any\ntags that are opened in the string and not closed before the truncation point,\nare closed immediately after the truncation.\n\nThis is less efficient than :tfilter:`truncatewords`, so should only be used\nwhen it is being passed HTML text.\n\nFor example::\n\n    {{ value|truncatewords_html:2 }}\n\nIf ``value`` is ``\"<p>Joel is a slug</p>\"``, the output will be\n``\"<p>Joel is ...</p>\"``.\n\nNewlines in the HTML content will be preserved.\n\n.. templatefilter:: unordered_list\n\nunordered_list\n^^^^^^^^^^^^^^\n\nRecursively takes a self-nested list and returns an HTML unordered list --\nWITHOUT opening and closing <ul> tags.\n\nThe list is assumed to be in the proper format. For example, if ``var``\ncontains ``['States', ['Kansas', ['Lawrence', 'Topeka'], 'Illinois']]``, then\n``{{ var|unordered_list }}`` would return::\n\n    <li>States\n    <ul>\n            <li>Kansas\n            <ul>\n                    <li>Lawrence</li>\n                    <li>Topeka</li>\n            </ul>\n            </li>\n            <li>Illinois</li>\n    </ul>\n    </li>\n\nNote: An older, more restrictive and verbose input format is also supported:\n``['States', [['Kansas', [['Lawrence', []], ['Topeka', []]]], ['Illinois', []]]]``,\n\n.. templatefilter:: upper\n\nupper\n^^^^^\n\nConverts a string into all uppercase.\n\nFor example::\n\n    {{ value|upper }}\n\nIf ``value`` is ``\"Joel is a slug\"``, the output will be ``\"JOEL IS A SLUG\"``.\n\n.. templatefilter:: urlencode\n\nurlencode\n^^^^^^^^^\n\nEscapes a value for use in a URL.\n\nFor example::\n\n    {{ value|urlencode }}\n\nIf ``value`` is ``\"http://www.example.org/foo?a=b&c=d\"``, the output will be\n``\"http%3A//www.example.org/foo%3Fa%3Db%26c%3Dd\"``.\n\nAn optional argument containing the characters which should not be escaped can\nbe provided.\n\nIf not provided, the '/' character is assumed safe. An empty string can be\nprovided when *all* characters should be escaped. For example::\n\n    {{ value|urlencode:\"\" }}\n\nIf ``value`` is ``\"http://www.example.org/\"``, the output will be\n``\"http%3A%2F%2Fwww.example.org%2F\"``.\n\n.. templatefilter:: urlize\n\nurlize\n^^^^^^\n\nConverts URLs in text into clickable links.\n\nThis template tag works on links prefixed with ``http://``, ``https://``, or\n``www.``. For example, ``http://goo.gl/aia1t`` will get converted but\n``goo.gl/aia1t`` won't.\n\nIt also supports domain-only links ending in one of the original top level\ndomains (``.com``, ``.edu``, ``.gov``, ``.int``, ``.mil``, ``.net``, and\n``.org``). For example, ``djangoproject.com`` gets converted.\n\n.. versionchanged:: 1.4\n\nUntil Django 1.4, only the ``.com``, ``.net`` and ``.org`` suffixes were\nsupported for domain-only links.\n\nLinks can have trailing punctuation (periods, commas, close-parens) and leading\npunctuation (opening parens), and ``urlize`` will still do the right thing.\n\nLinks generated by ``urlize`` have a ``rel=\"nofollow\"`` attribute added\nto them.\n\nFor example::\n\n    {{ value|urlize }}\n\nIf ``value`` is ``\"Check out www.djangoproject.com\"``, the output will be\n``\"Check out <a href=\"http://www.djangoproject.com\"\nrel=\"nofollow\">www.djangoproject.com</a>\"``.\n\nThe ``urlize`` filter also takes an optional parameter ``autoescape``. If\n``autoescape`` is ``True``, the link text and URLs will be escaped using\nDjango's built-in :tfilter:`escape` filter. The default value for\n``autoescape`` is ``True``.\n\n.. note::\n\n    If ``urlize`` is applied to text that already contains HTML markup,\n    things won't work as expected. Apply this filter only to plain text.\n\n.. templatefilter:: urlizetrunc\n\nurlizetrunc\n^^^^^^^^^^^\n\nConverts URLs into clickable links just like urlize_, but truncates URLs\nlonger than the given character limit.\n\n**Argument:** Number of characters that link text should be truncated to,\nincluding the ellipsis that's added if truncation is necessary.\n\nFor example::\n\n    {{ value|urlizetrunc:15 }}\n\nIf ``value`` is ``\"Check out www.djangoproject.com\"``, the output would be\n``'Check out <a href=\"http://www.djangoproject.com\"\nrel=\"nofollow\">www.djangopr...</a>'``.\n\nAs with urlize_, this filter should only be applied to plain text.\n\n.. templatefilter:: wordcount\n\nwordcount\n^^^^^^^^^\n\nReturns the number of words.\n\nFor example::\n\n    {{ value|wordcount }}\n\nIf ``value`` is ``\"Joel is a slug\"``, the output will be ``4``.\n\n.. templatefilter:: wordwrap\n\nwordwrap\n^^^^^^^^\n\nWraps words at specified line length.\n\n**Argument:** number of characters at which to wrap the text\n\nFor example::\n\n    {{ value|wordwrap:5 }}\n\nIf ``value`` is ``Joel is a slug``, the output would be::\n\n    Joel\n    is a\n    slug\n\n.. templatefilter:: yesno\n\nyesno\n^^^^^\n\nMaps values for true, false and (optionally) None, to the strings \"yes\", \"no\",\n\"maybe\", or a custom mapping passed as a comma-separated list, and\nreturns one of those strings according to the value:\n\nFor example::\n\n    {{ value|yesno:\"yeah,no,maybe\" }}\n\n==========  ======================  ==================================\nValue       Argument                Outputs\n==========  ======================  ==================================\n``True``                            ``yes``\n``True``    ``\"yeah,no,maybe\"``     ``yeah``\n``False``   ``\"yeah,no,maybe\"``     ``no``\n``None``    ``\"yeah,no,maybe\"``     ``maybe``\n``None``    ``\"yeah,no\"``           ``\"no\"`` (converts None to False\n                                    if no mapping for None is given)\n==========  ======================  ==================================\n\nInternationalization tags and filters\n-------------------------------------\n\nDjango provides template tags and filters to control each aspect of\n:doc:`internationalization </topics/i18n/index>` in templates. They allow for\ngranular control of translations, formatting, and time zone conversions.\n\ni18n\n^^^^\n\nThis library allows specifying translatable text in templates.\nTo enable it, set :setting:`USE_I18N` to ``True``, then load it with\n``{% load i18n %}``.\n\nSee :ref:`specifying-translation-strings-in-template-code`.\n\nl10n\n^^^^\n\nThis library provides control over the localization of values in templates.\nYou only need to load the library using ``{% load l10n %}``, but you'll often\nset :setting:`USE_L10N` to ``True`` so that localization is active by default.\n\nSee :ref:`topic-l10n-templates`.\n\ntz\n^^\n\n.. versionadded:: 1.4\n\nThis library provides control over time zone conversions in templates.\nLike ``l10n``, you only need to load the library using ``{% load tz %}``,\nbut you'll usually also set :setting:`USE_TZ` to ``True`` so that conversion\nto local time happens by default.\n\nSee :ref:`time-zones-in-templates`.\n\nOther tags and filters libraries\n--------------------------------\n\nDjango comes with a couple of other template-tag libraries that you have to\nenable explicitly in your :setting:`INSTALLED_APPS` setting and enable in your\ntemplate with the :ttag:`{% load %}<load>` tag.\n\ndjango.contrib.humanize\n^^^^^^^^^^^^^^^^^^^^^^^\n\nA set of Django template filters useful for adding a \"human touch\" to data. See\n:doc:`/ref/contrib/humanize`.\n\ndjango.contrib.markup\n^^^^^^^^^^^^^^^^^^^^^\n\nA collection of template filters that implement these common markup languages:\n\n* Textile\n* Markdown\n* reST (reStructuredText)\n\nSee the :doc:`markup documentation </ref/contrib/markup>`.\n\ndjango.contrib.webdesign\n^^^^^^^^^^^^^^^^^^^^^^^^\n\nA collection of template tags that can be useful while designing a Web site,\nsuch as a generator of Lorem Ipsum text. See :doc:`/ref/contrib/webdesign`.\n\nstatic\n^^^^^^\n\n.. templatetag:: static\n\nstatic\n\"\"\"\"\"\"\n\n.. highlight:: html+django\n\nTo link to static files that are saved in :setting:`STATIC_ROOT` Django ships\nwith a :ttag:`static` template tag. You can use this regardless if you're\nusing :class:`~django.template.RequestContext` or not.\n\n.. code-block:: html+django\n\n    {% load static %}\n    <img src=\"{% static \"images/hi.jpg\" %}\" alt=\"Hi!\" />\n\nIt is also able to consume standard context variables, e.g. assuming a\n``user_stylesheet`` variable is passed to the template:\n\n.. code-block:: html+django\n\n    {% load static %}\n    <link rel=\"stylesheet\" href=\"{% static user_stylesheet %}\" type=\"text/css\" media=\"screen\" />\n\nIf you'd like to retrieve a static URL without displaying it, you can use a\nslightly different call::\n\n.. versionadded:: 1.5\n\n.. code-block:: html+django\n\n    {% load static %}\n    {% static \"images/hi.jpg\" as myphoto %}\n    <img src=\"{{ myphoto }}\"></img>\n\n.. note::\n\n    The :mod:`staticfiles<django.contrib.staticfiles>` contrib app also ships\n    with a :ttag:`static template tag<staticfiles-static>` which uses\n    ``staticfiles'`` :setting:`STATICFILES_STORAGE` to build the URL of the\n    given path. Use that instead if you have an advanced use case such as\n    :ref:`using a cloud service to serve static files<staticfiles-from-cdn>`::\n\n        {% load static from staticfiles %}\n        <img src=\"{% static \"images/hi.jpg\" %}\" alt=\"Hi!\" />\n\n.. templatetag:: get_static_prefix\n\nget_static_prefix\n\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n\n.. highlight:: html+django\n\nIf you're not using :class:`~django.template.RequestContext`, or if you need\nmore control over exactly where and how :setting:`STATIC_URL` is injected\ninto the template, you can use the :ttag:`get_static_prefix` template tag\ninstead::\n\n    {% load static %}\n    <img src=\"{% get_static_prefix %}images/hi.jpg\" alt=\"Hi!\" />\n\nThere's also a second form you can use to avoid extra processing if you need\nthe value multiple times::\n\n    {% load static %}\n    {% get_static_prefix as STATIC_PREFIX %}\n\n    <img src=\"{{ STATIC_PREFIX }}images/hi.jpg\" alt=\"Hi!\" />\n    <img src=\"{{ STATIC_PREFIX }}images/hi2.jpg\" alt=\"Hello!\" />\n\n.. templatetag:: get_media_prefix\n\nget_media_prefix\n\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n\n.. highlight:: html+django\n\nSimilar to the :ttag:`get_static_prefix`, ``get_media_prefix`` populates a\ntemplate variable with the media prefix :setting:`MEDIA_URL`, e.g.::\n\n    <script type=\"text/javascript\" charset=\"utf-8\">\n    var media_path = '{% get_media_prefix %}';\n    </script>\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/templates/index.txt",
    "content": "=========\nTemplates\n=========\n\nDjango's template engine provides a powerful mini-language for defining the\nuser-facing layer of your application, encouraging a clean separation of\napplication and presentation logic. Templates can be maintained by anyone with\nan understanding of HTML; no knowledge of Python is required.\n\n.. toctree::\n   :maxdepth: 2\n\n   builtins\n   api\n\n.. seealso::\n\n    For information on writing your own custom tags and filters, see\n    :doc:`/howto/custom-template-tags`.\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/unicode.txt",
    "content": "============\nUnicode data\n============\n\nDjango natively supports Unicode data everywhere. Providing your database can\nsomehow store the data, you can safely pass around Unicode strings to\ntemplates, models and the database.\n\nThis document tells you what you need to know if you're writing applications\nthat use data or templates that are encoded in something other than ASCII.\n\nCreating the database\n=====================\n\nMake sure your database is configured to be able to store arbitrary string\ndata. Normally, this means giving it an encoding of UTF-8 or UTF-16. If you use\na more restrictive encoding -- for example, latin1 (iso8859-1) -- you won't be\nable to store certain characters in the database, and information will be lost.\n\n* MySQL users, refer to the `MySQL manual`_ (section 9.1.3.2 for MySQL 5.1)\n  for details on how to set or alter the database character set encoding.\n\n* PostgreSQL users, refer to the `PostgreSQL manual`_ (section 21.2.2 in\n  PostgreSQL 8) for details on creating databases with the correct encoding.\n\n* SQLite users, there is nothing you need to do. SQLite always uses UTF-8\n  for internal encoding.\n\n.. _MySQL manual: http://dev.mysql.com/doc/refman/5.1/en/charset-database.html\n.. _PostgreSQL manual: http://www.postgresql.org/docs/8.2/static/multibyte.html#AEN24104\n\nAll of Django's database backends automatically convert Unicode strings into\nthe appropriate encoding for talking to the database. They also automatically\nconvert strings retrieved from the database into Python Unicode strings. You\ndon't even need to tell Django what encoding your database uses: that is\nhandled transparently.\n\nFor more, see the section \"The database API\" below.\n\nGeneral string handling\n=======================\n\nWhenever you use strings with Django -- e.g., in database lookups, template\nrendering or anywhere else -- you have two choices for encoding those strings.\nYou can use Unicode strings, or you can use normal strings (sometimes called\n\"bytestrings\") that are encoded using UTF-8.\n\n.. versionchanged:: 1.5\n\nIn Python 3, the logic is reversed, that is normal strings are Unicode, and\nwhen you want to specifically create a bytestring, you have to prefix the\nstring with a 'b'. As we are doing in Django code from version 1.5,\nwe recommend that you import ``unicode_literals`` from the __future__ library\nin your code. Then, when you specifically want to create a bytestring literal,\nprefix the string with 'b'.\n\nPython 2 legacy::\n\n    my_string = \"This is a bytestring\"\n    my_unicode = u\"This is an Unicode string\"\n\nPython 2 with unicode literals or Python 3::\n\n    from __future__ import unicode_literals\n\n    my_string = b\"This is a bytestring\"\n    my_unicode = \"This is an Unicode string\"\n\nSee also :doc:`Python 3 compatibility </topics/python3>`.\n\n.. admonition:: Warning\n\n    A bytestring does not carry any information with it about its encoding.\n    For that reason, we have to make an assumption, and Django assumes that all\n    bytestrings are in UTF-8.\n\n    If you pass a string to Django that has been encoded in some other format,\n    things will go wrong in interesting ways. Usually, Django will raise a\n    ``UnicodeDecodeError`` at some point.\n\nIf your code only uses ASCII data, it's safe to use your normal strings,\npassing them around at will, because ASCII is a subset of UTF-8.\n\nDon't be fooled into thinking that if your :setting:`DEFAULT_CHARSET` setting is set\nto something other than ``'utf-8'`` you can use that other encoding in your\nbytestrings! :setting:`DEFAULT_CHARSET` only applies to the strings generated as\nthe result of template rendering (and email). Django will always assume UTF-8\nencoding for internal bytestrings. The reason for this is that the\n:setting:`DEFAULT_CHARSET` setting is not actually under your control (if you are the\napplication developer). It's under the control of the person installing and\nusing your application -- and if that person chooses a different setting, your\ncode must still continue to work. Ergo, it cannot rely on that setting.\n\nIn most cases when Django is dealing with strings, it will convert them to\nUnicode strings before doing anything else. So, as a general rule, if you pass\nin a bytestring, be prepared to receive a Unicode string back in the result.\n\nTranslated strings\n------------------\n\nAside from Unicode strings and bytestrings, there's a third type of string-like\nobject you may encounter when using Django. The framework's\ninternationalization features introduce the concept of a \"lazy translation\" --\na string that has been marked as translated but whose actual translation result\nisn't determined until the object is used in a string. This feature is useful\nin cases where the translation locale is unknown until the string is used, even\nthough the string might have originally been created when the code was first\nimported.\n\nNormally, you won't have to worry about lazy translations. Just be aware that\nif you examine an object and it claims to be a\n``django.utils.functional.__proxy__`` object, it is a lazy translation.\nCalling ``unicode()`` with the lazy translation as the argument will generate a\nUnicode string in the current locale.\n\nFor more details about lazy translation objects, refer to the\n:doc:`internationalization </topics/i18n/index>` documentation.\n\nUseful utility functions\n------------------------\n\nBecause some string operations come up again and again, Django ships with a few\nuseful functions that should make working with Unicode and bytestring objects\na bit easier.\n\nConversion functions\n~~~~~~~~~~~~~~~~~~~~\n\nThe ``django.utils.encoding`` module contains a few functions that are handy\nfor converting back and forth between Unicode and bytestrings.\n\n* ``smart_text(s, encoding='utf-8', strings_only=False, errors='strict')``\n  converts its input to a Unicode string. The ``encoding`` parameter\n  specifies the input encoding. (For example, Django uses this internally\n  when processing form input data, which might not be UTF-8 encoded.) The\n  ``strings_only`` parameter, if set to True, will result in Python\n  numbers, booleans and ``None`` not being converted to a string (they keep\n  their original types). The ``errors`` parameter takes any of the values\n  that are accepted by Python's ``unicode()`` function for its error\n  handling.\n\n  If you pass ``smart_text()`` an object that has a ``__unicode__``\n  method, it will use that method to do the conversion.\n\n* ``force_text(s, encoding='utf-8', strings_only=False,\n  errors='strict')`` is identical to ``smart_text()`` in almost all\n  cases. The difference is when the first argument is a :ref:`lazy\n  translation <lazy-translations>` instance. While ``smart_text()``\n  preserves lazy translations, ``force_text()`` forces those objects to a\n  Unicode string (causing the translation to occur). Normally, you'll want\n  to use ``smart_text()``. However, ``force_text()`` is useful in\n  template tags and filters that absolutely *must* have a string to work\n  with, not just something that can be converted to a string.\n\n* ``smart_bytes(s, encoding='utf-8', strings_only=False, errors='strict')``\n  is essentially the opposite of ``smart_text()``. It forces the first\n  argument to a bytestring. The ``strings_only`` parameter has the same\n  behavior as for ``smart_text()`` and ``force_text()``. This is\n  slightly different semantics from Python's builtin ``str()`` function,\n  but the difference is needed in a few places within Django's internals.\n\nNormally, you'll only need to use ``smart_text()``. Call it as early as\npossible on any input data that might be either Unicode or a bytestring, and\nfrom then on, you can treat the result as always being Unicode.\n\n.. _uri-and-iri-handling:\n\nURI and IRI handling\n~~~~~~~~~~~~~~~~~~~~\n\nWeb frameworks have to deal with URLs (which are a type of IRI_). One\nrequirement of URLs is that they are encoded using only ASCII characters.\nHowever, in an international environment, you might need to construct a\nURL from an IRI_ -- very loosely speaking, a URI_ that can contain Unicode\ncharacters. Quoting and converting an IRI to URI can be a little tricky, so\nDjango provides some assistance.\n\n* The function ``django.utils.encoding.iri_to_uri()`` implements the\n  conversion from IRI to URI as required by the specification (:rfc:`3987`).\n\n* The functions ``django.utils.http.urlquote()`` and\n  ``django.utils.http.urlquote_plus()`` are versions of Python's standard\n  ``urllib.quote()`` and ``urllib.quote_plus()`` that work with non-ASCII\n  characters. (The data is converted to UTF-8 prior to encoding.)\n\nThese two groups of functions have slightly different purposes, and it's\nimportant to keep them straight. Normally, you would use ``urlquote()`` on the\nindividual portions of the IRI or URI path so that any reserved characters\nsuch as '&' or '%' are correctly encoded. Then, you apply ``iri_to_uri()`` to\nthe full IRI and it converts any non-ASCII characters to the correct encoded\nvalues.\n\n.. note::\n    Technically, it isn't correct to say that ``iri_to_uri()`` implements the\n    full algorithm in the IRI specification. It doesn't (yet) perform the\n    international domain name encoding portion of the algorithm.\n\nThe ``iri_to_uri()`` function will not change ASCII characters that are\notherwise permitted in a URL. So, for example, the character '%' is not\nfurther encoded when passed to ``iri_to_uri()``. This means you can pass a\nfull URL to this function and it will not mess up the query string or anything\nlike that.\n\nAn example might clarify things here::\n\n    >>> urlquote(u'Paris & Orléans')\n    u'Paris%20%26%20Orl%C3%A9ans'\n    >>> iri_to_uri(u'/favorites/François/%s' % urlquote('Paris & Orléans'))\n    '/favorites/Fran%C3%A7ois/Paris%20%26%20Orl%C3%A9ans'\n\nIf you look carefully, you can see that the portion that was generated by\n``urlquote()`` in the second example was not double-quoted when passed to\n``iri_to_uri()``. This is a very important and useful feature. It means that\nyou can construct your IRI without worrying about whether it contains\nnon-ASCII characters and then, right at the end, call ``iri_to_uri()`` on the\nresult.\n\nThe ``iri_to_uri()`` function is also idempotent, which means the following is\nalways true::\n\n    iri_to_uri(iri_to_uri(some_string)) = iri_to_uri(some_string)\n\nSo you can safely call it multiple times on the same IRI without risking\ndouble-quoting problems.\n\n.. _URI: http://www.ietf.org/rfc/rfc2396.txt\n.. _IRI: http://www.ietf.org/rfc/rfc3987.txt\n\nModels\n======\n\nBecause all strings are returned from the database as Unicode strings, model\nfields that are character based (CharField, TextField, URLField, etc) will\ncontain Unicode values when Django retrieves data from the database. This\nis *always* the case, even if the data could fit into an ASCII bytestring.\n\nYou can pass in bytestrings when creating a model or populating a field, and\nDjango will convert it to Unicode when it needs to.\n\nChoosing between ``__str__()`` and ``__unicode__()``\n----------------------------------------------------\n\nOne consequence of using Unicode by default is that you have to take some care\nwhen printing data from the model.\n\nIn particular, rather than giving your model a ``__str__()`` method, we\nrecommended you implement a ``__unicode__()`` method. In the ``__unicode__()``\nmethod, you can quite safely return the values of all your fields without\nhaving to worry about whether they fit into a bytestring or not. (The way\nPython works, the result of ``__str__()`` is *always* a bytestring, even if you\naccidentally try to return a Unicode object).\n\nYou can still create a ``__str__()`` method on your models if you want, of\ncourse, but you shouldn't need to do this unless you have a good reason.\nDjango's ``Model`` base class automatically provides a ``__str__()``\nimplementation that calls ``__unicode__()`` and encodes the result into UTF-8.\nThis means you'll normally only need to implement a ``__unicode__()`` method\nand let Django handle the coercion to a bytestring when required.\n\nTaking care in ``get_absolute_url()``\n-------------------------------------\n\nURLs can only contain ASCII characters. If you're constructing a URL from\npieces of data that might be non-ASCII, be careful to encode the results in a\nway that is suitable for a URL. The :func:`~django.core.urlresolvers.reverse`\nfunction handles this for you automatically.\n\nIf you're constructing a URL manually (i.e., *not* using the ``reverse()``\nfunction), you'll need to take care of the encoding yourself. In this case,\nuse the ``iri_to_uri()`` and ``urlquote()`` functions that were documented\nabove_. For example::\n\n    from django.utils.encoding import iri_to_uri\n    from django.utils.http import urlquote\n\n    def get_absolute_url(self):\n        url = u'/person/%s/?x=0&y=0' % urlquote(self.location)\n        return iri_to_uri(url)\n\nThis function returns a correctly encoded URL even if ``self.location`` is\nsomething like \"Jack visited Paris & Orléans\". (In fact, the ``iri_to_uri()``\ncall isn't strictly necessary in the above example, because all the\nnon-ASCII characters would have been removed in quoting in the first line.)\n\n.. _above: `URI and IRI handling`_\n\nThe database API\n================\n\nYou can pass either Unicode strings or UTF-8 bytestrings as arguments to\n``filter()`` methods and the like in the database API. The following two\nquerysets are identical::\n\n    from __future__ import unicode_literals\n\n    qs = People.objects.filter(name__contains='Å')\n    qs = People.objects.filter(name__contains=b'\\xc3\\x85') # UTF-8 encoding of Å\n\nTemplates\n=========\n\nYou can use either Unicode or bytestrings when creating templates manually::\n\n    from __future__ import unicode_literals\n    from django.template import Template\n    t1 = Template(b'This is a bytestring template.')\n    t2 = Template('This is a Unicode template.')\n\nBut the common case is to read templates from the filesystem, and this creates\na slight complication: not all filesystems store their data encoded as UTF-8.\nIf your template files are not stored with a UTF-8 encoding, set the :setting:`FILE_CHARSET`\nsetting to the encoding of the files on disk. When Django reads in a template\nfile, it will convert the data from this encoding to Unicode. (:setting:`FILE_CHARSET`\nis set to ``'utf-8'`` by default.)\n\nThe :setting:`DEFAULT_CHARSET` setting controls the encoding of rendered templates.\nThis is set to UTF-8 by default.\n\nTemplate tags and filters\n-------------------------\n\nA couple of tips to remember when writing your own template tags and filters:\n\n* Always return Unicode strings from a template tag's ``render()`` method\n  and from template filters.\n\n* Use ``force_text()`` in preference to ``smart_text()`` in these\n  places. Tag rendering and filter calls occur as the template is being\n  rendered, so there is no advantage to postponing the conversion of lazy\n  translation objects into strings. It's easier to work solely with Unicode\n  strings at that point.\n\nEmail\n=====\n\nDjango's email framework (in ``django.core.mail``) supports Unicode\ntransparently. You can use Unicode data in the message bodies and any headers.\nHowever, you're still obligated to respect the requirements of the email\nspecifications, so, for example, email addresses should use only ASCII\ncharacters.\n\nThe following code example demonstrates that everything except email addresses\ncan be non-ASCII::\n\n    from __future__ import unicode_literals\n    from django.core.mail import EmailMessage\n\n    subject = 'My visit to Sør-Trøndelag'\n    sender = 'Arnbjörg Ráðormsdóttir <arnbjorg@example.com>'\n    recipients = ['Fred <fred@example.com']\n    body = '...'\n    msg = EmailMessage(subject, body, sender, recipients)\n    msg.attach(\"Une pièce jointe.pdf\", \"%PDF-1.4.%...\", mimetype=\"application/pdf\")\n    msg.send()\n\nForm submission\n===============\n\nHTML form submission is a tricky area. There's no guarantee that the\nsubmission will include encoding information, which means the framework might\nhave to guess at the encoding of submitted data.\n\nDjango adopts a \"lazy\" approach to decoding form data. The data in an\n``HttpRequest`` object is only decoded when you access it. In fact, most of\nthe data is not decoded at all. Only the ``HttpRequest.GET`` and\n``HttpRequest.POST`` data structures have any decoding applied to them. Those\ntwo fields will return their members as Unicode data. All other attributes and\nmethods of ``HttpRequest`` return data exactly as it was submitted by the\nclient.\n\nBy default, the :setting:`DEFAULT_CHARSET` setting is used as the assumed encoding\nfor form data. If you need to change this for a particular form, you can set\nthe ``encoding`` attribute on an ``HttpRequest`` instance. For example::\n\n    def some_view(request):\n        # We know that the data must be encoded as KOI8-R (for some reason).\n        request.encoding = 'koi8-r'\n        ...\n\nYou can even change the encoding after having accessed ``request.GET`` or\n``request.POST``, and all subsequent accesses will use the new encoding.\n\nMost developers won't need to worry about changing form encoding, but this is\na useful feature for applications that talk to legacy systems whose encoding\nyou cannot control.\n\nDjango does not decode the data of file uploads, because that data is normally\ntreated as collections of bytes, rather than strings. Any automatic decoding\nthere would alter the meaning of the stream of bytes.\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/urlresolvers.txt",
    "content": "==============================================\n``django.core.urlresolvers`` utility functions\n==============================================\n\n.. module:: django.core.urlresolvers\n\nreverse()\n---------\n\nIf you need to use something similar to the :ttag:`url` template tag in\nyour code, Django provides the following function:\n\n.. function:: reverse(viewname, [urlconf=None, args=None, kwargs=None, current_app=None])\n\n``viewname`` is either the function name (either a function reference, or the\nstring version of the name, if you used that form in ``urlpatterns``) or the\n:ref:`URL pattern name <naming-url-patterns>`.  Normally, you won't need to\nworry about the ``urlconf`` parameter and will only pass in the positional and\nkeyword arguments to use in the URL matching. For example::\n\n    from django.core.urlresolvers import reverse\n\n    def myview(request):\n        return HttpResponseRedirect(reverse('arch-summary', args=[1945]))\n\nThe ``reverse()`` function can reverse a large variety of regular expression\npatterns for URLs, but not every possible one. The main restriction at the\nmoment is that the pattern cannot contain alternative choices using the\nvertical bar (``\"|\"``) character. You can quite happily use such patterns for\nmatching against incoming URLs and sending them off to views, but you cannot\nreverse such patterns.\n\nThe ``current_app`` argument allows you to provide a hint to the resolver\nindicating the application to which the currently executing view belongs.\nThis ``current_app`` argument is used as a hint to resolve application\nnamespaces into URLs on specific application instances, according to the\n:ref:`namespaced URL resolution strategy <topics-http-reversing-url-namespaces>`.\n\nYou can use ``kwargs`` instead of ``args``. For example::\n\n    >>> reverse('admin:app_list', kwargs={'app_label': 'auth'})\n    '/admin/auth/'\n\n``args`` and ``kwargs`` cannot be passed to ``reverse()`` at the same time.\n\n.. admonition:: Make sure your views are all correct.\n\n    As part of working out which URL names map to which patterns, the\n    ``reverse()`` function has to import all of your URLconf files and examine\n    the name of each view. This involves importing each view function. If\n    there are *any* errors whilst importing any of your view functions, it\n    will cause ``reverse()`` to raise an error, even if that view function is\n    not the one you are trying to reverse.\n\n    Make sure that any views you reference in your URLconf files exist and can\n    be imported correctly. Do not include lines that reference views you\n    haven't written yet, because those views will not be importable.\n\n.. note::\n\n    The string returned by ``reverse()`` is already\n    :ref:`urlquoted <uri-and-iri-handling>`. For example::\n\n        >>> reverse('cities', args=[u'Orléans'])\n        '.../Orl%C3%A9ans/'\n\n    Applying further encoding (such as :meth:`~django.utils.http.urlquote` or\n    ``urllib.quote``) to the output of ``reverse()`` may produce undesirable\n    results.\n\nreverse_lazy()\n--------------\n\n.. versionadded:: 1.4\n\nA lazily evaluated version of `reverse()`_.\n\n.. function:: reverse_lazy(viewname, [urlconf=None, args=None, kwargs=None, current_app=None])\n\nIt is useful for when you need to use a URL reversal before your project's\nURLConf is loaded. Some common cases where this function is necessary are:\n\n* providing a reversed URL as the ``url`` attribute of a generic class-based\n  view.\n\n* providing a reversed URL to a decorator (such as the ``login_url`` argument\n  for the :func:`django.contrib.auth.decorators.permission_required`\n  decorator).\n\n* providing a reversed URL as a default value for a parameter in a function's\n  signature.\n\nresolve()\n---------\n\nThe ``resolve()`` function can be used for resolving URL paths to the\ncorresponding view functions. It has the following signature:\n\n.. function:: resolve(path, urlconf=None)\n\n``path`` is the URL path you want to resolve. As with\n:func:`~django.core.urlresolvers.reverse`, you don't need to\nworry about the ``urlconf`` parameter. The function returns a\n:class:`ResolverMatch` object that allows you\nto access various meta-data about the resolved URL.\n\nIf the URL does not resolve, the function raises an\n:class:`~django.http.Http404` exception.\n\n.. class:: ResolverMatch\n\n    .. attribute:: ResolverMatch.func\n\n        The view function that would be used to serve the URL\n\n    .. attribute:: ResolverMatch.args\n\n        The arguments that would be passed to the view function, as\n        parsed from the URL.\n\n    .. attribute:: ResolverMatch.kwargs\n\n        The keyword arguments that would be passed to the view\n        function, as parsed from the URL.\n\n    .. attribute:: ResolverMatch.url_name\n\n        The name of the URL pattern that matches the URL.\n\n    .. attribute:: ResolverMatch.app_name\n\n        The application namespace for the URL pattern that matches the\n        URL.\n\n    .. attribute:: ResolverMatch.namespace\n\n        The instance namespace for the URL pattern that matches the\n        URL.\n\n    .. attribute:: ResolverMatch.namespaces\n\n        The list of individual namespace components in the full\n        instance namespace for the URL pattern that matches the URL.\n        i.e., if the namespace is ``foo:bar``, then namespaces will be\n        ``['foo', 'bar']``.\n\nA :class:`ResolverMatch` object can then be interrogated to provide\ninformation about the URL pattern that matches a URL::\n\n    # Resolve a URL\n    match = resolve('/some/path/')\n    # Print the URL pattern that matches the URL\n    print(match.url_name)\n\nA :class:`ResolverMatch` object can also be assigned to a triple::\n\n    func, args, kwargs = resolve('/some/path/')\n\nOne possible use of :func:`~django.core.urlresolvers.resolve` would be to test\nwhether a view would raise a ``Http404`` error before redirecting to it::\n\n    from urlparse import urlparse\n    from django.core.urlresolvers import resolve\n    from django.http import HttpResponseRedirect, Http404\n\n    def myview(request):\n        next = request.META.get('HTTP_REFERER', None) or '/'\n        response = HttpResponseRedirect(next)\n\n        # modify the request and response as required, e.g. change locale\n        # and set corresponding locale cookie\n\n        view, args, kwargs = resolve(urlparse(next)[2])\n        kwargs['request'] = request\n        try:\n            view(*args, **kwargs)\n        except Http404:\n            return HttpResponseRedirect('/')\n        return response\n\nget_script_prefix()\n-------------------\n\n.. function:: get_script_prefix()\n\nNormally, you should always use :func:`~django.core.urlresolvers.reverse` to\ndefine URLs within your application. However, if your application constructs\npart of the URL hierarchy itself, you may occasionally need to generate URLs.\nIn that case, you need to be able to find the base URL of the Django project\nwithin its Web server (normally, :func:`~django.core.urlresolvers.reverse`\ntakes care of this for you). In that case, you can call\n``get_script_prefix()``, which will return the script prefix portion of the URL\nfor your Django project. If your Django project is at the root of its web\nserver, this is always ``\"/\"``.\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/urls.txt",
    "content": "======================================\n``django.conf.urls`` utility functions\n======================================\n\n.. module:: django.conf.urls\n\n.. versionchanged:: 1.4\n    Starting with Django 1.4 functions ``patterns``, ``url``, ``include`` plus\n    the ``handler*`` symbols described below live in the ``django.conf.urls``\n    module.\n\n    Until Django 1.3 they were located in ``django.conf.urls.defaults``. You\n    still can import them from there but it will be removed in Django 1.6.\n\npatterns()\n----------\n\n.. function:: patterns(prefix, pattern_description, ...)\n\nA function that takes a prefix, and an arbitrary number of URL patterns, and\nreturns a list of URL patterns in the format Django needs.\n\nThe first argument to ``patterns()`` is a string ``prefix``. See\n:ref:`The view prefix <urlpatterns-view-prefix>`.\n\nThe remaining arguments should be tuples in this format::\n\n    (regular expression, Python callback function [, optional_dictionary [, optional_name]])\n\nThe ``optional_dictionary`` and ``optional_name`` parameters are described in\n:ref:`Passing extra options to view functions <views-extra-options>`.\n\n.. note::\n    Because ``patterns()`` is a function call, it accepts a maximum of 255\n    arguments (URL patterns, in this case). This is a limit for all Python\n    function calls. This is rarely a problem in practice, because you'll\n    typically structure your URL patterns modularly by using ``include()``\n    sections. However, on the off-chance you do hit the 255-argument limit,\n    realize that ``patterns()`` returns a Python list, so you can split up the\n    construction of the list.\n\n    ::\n\n        urlpatterns = patterns('',\n            ...\n            )\n        urlpatterns += patterns('',\n            ...\n            )\n\n    Python lists have unlimited size, so there's no limit to how many URL\n    patterns you can construct. The only limit is that you can only create 254\n    at a time (the 255th argument is the initial prefix argument).\n\nurl()\n-----\n\n.. function:: url(regex, view, kwargs=None, name=None, prefix='')\n\nYou can use the ``url()`` function, instead of a tuple, as an argument to\n``patterns()``. This is convenient if you want to specify a name without the\noptional extra arguments dictionary. For example::\n\n    urlpatterns = patterns('',\n        url(r'^index/$', index_view, name=\"main-view\"),\n        ...\n    )\n\nThis function takes five arguments, most of which are optional::\n\n    url(regex, view, kwargs=None, name=None, prefix='')\n\nSee :ref:`Naming URL patterns <naming-url-patterns>` for why the ``name``\nparameter is useful.\n\nThe ``prefix`` parameter has the same meaning as the first argument to\n``patterns()`` and is only relevant when you're passing a string as the\n``view`` parameter.\n\ninclude()\n---------\n\n.. function:: include(module[, namespace=None, app_name=None])\n              include(pattern_list)\n              include((pattern_list, app_namespace, instance_namespace))\n\n    A function that takes a full Python import path to another URLconf module\n    that should be \"included\" in this place. Optionally, the :term:`application\n    namespace` and :term:`instance namespace` where the entries will be included\n    into can also be specified.\n\n    ``include()`` also accepts as an argument either an iterable that returns\n    URL patterns or a 3-tuple containing such iterable plus the names of the\n    application and instance namespaces.\n\n    :arg module: URLconf module (or module name)\n    :arg namespace: Instance namespace for the URL entries being included\n    :type namespace: string\n    :arg app_name: Application namespace for the URL entries being included\n    :type app_name: string\n    :arg pattern_list: Iterable of URL entries as returned by :func:`patterns`\n    :arg app_namespace: Application namespace for the URL entries being included\n    :type app_namespace: string\n    :arg instance_namespace: Instance namespace for the URL entries being included\n    :type instance_namespace: string\n\nSee :ref:`including-other-urlconfs` and :ref:`namespaces-and-include`.\n\nhandler403\n----------\n\n.. data:: handler403\n\nA callable, or a string representing the full Python import path to the view\nthat should be called if the user doesn't have the permissions required to\naccess a resource.\n\nBy default, this is ``'django.views.defaults.permission_denied'``. That default\nvalue should suffice.\n\nSee the documentation about :ref:`the 403 (HTTP Forbidden) view\n<http_forbidden_view>` for more information.\n\n.. versionadded:: 1.4\n    ``handler403`` is new in Django 1.4.\n\nhandler404\n----------\n\n.. data:: handler404\n\nA callable, or a string representing the full Python import path to the view\nthat should be called if none of the URL patterns match.\n\nBy default, this is ``'django.views.defaults.page_not_found'``. That default\nvalue should suffice.\n\nSee the documentation about :ref:`the 404 (HTTP Not Found) view\n<http_not_found_view>` for more information.\n\nhandler500\n----------\n\n.. data:: handler500\n\nA callable, or a string representing the full Python import path to the view\nthat should be called in case of server errors. Server errors happen when you\nhave runtime errors in view code.\n\nBy default, this is ``'django.views.defaults.server_error'``. That default\nvalue should suffice.\n\nSee the documentation about :ref:`the 500 (HTTP Internal Server Error) view\n<http_internal_server_error_view>` for more information.\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/utils.txt",
    "content": "============\nDjango Utils\n============\n\n.. module:: django.utils\n   :synopsis: Django's built-in utilities.\n\nThis document covers all stable modules in ``django.utils``. Most of the\nmodules in ``django.utils`` are designed for internal use and only the\nfollowing parts can be considered stable and thus backwards compatible as per\nthe :ref:`internal release deprecation policy <internal-release-deprecation-policy>`.\n\n``django.utils.cache``\n======================\n\n.. module:: django.utils.cache\n   :synopsis: Helper functions for controlling caching.\n\nThis module contains helper functions for controlling caching. It does so by\nmanaging the ``Vary`` header of responses. It includes functions to patch the\nheader of response objects directly and decorators that change functions to do\nthat header-patching themselves.\n\nFor information on the ``Vary`` header, see :rfc:`2616#section-14.44` section\n14.44.\n\nEssentially, the ``Vary`` HTTP header defines which headers a cache should take\ninto account when building its cache key. Requests with the same path but\ndifferent header content for headers named in ``Vary`` need to get different\ncache keys to prevent delivery of wrong content.\n\nFor example, :doc:`internationalization </topics/i18n/index>` middleware would need\nto distinguish caches by the ``Accept-language`` header.\n\n.. function:: patch_cache_control(response, **kwargs)\n\n    This function patches the ``Cache-Control`` header by adding all keyword\n    arguments to it. The transformation is as follows:\n\n    * All keyword parameter names are turned to lowercase, and underscores\n      are converted to hyphens.\n    * If the value of a parameter is ``True`` (exactly ``True``, not just a\n      true value), only the parameter name is added to the header.\n    * All other parameters are added with their value, after applying\n      ``str()`` to it.\n\n.. function:: get_max_age(response)\n\n    Returns the max-age from the response Cache-Control header as an integer\n    (or ``None`` if it wasn't found or wasn't an integer).\n\n.. function:: patch_response_headers(response, cache_timeout=None)\n\n    Adds some useful headers to the given ``HttpResponse`` object:\n\n    * ``ETag``\n    * ``Last-Modified``\n    * ``Expires``\n    * ``Cache-Control``\n\n    Each header is only added if it isn't already set.\n\n    ``cache_timeout`` is in seconds. The :setting:`CACHE_MIDDLEWARE_SECONDS`\n    setting is used by default.\n\n.. function:: add_never_cache_headers(response)\n\n    Adds headers to a response to indicate that a page should never be cached.\n\n.. function:: patch_vary_headers(response, newheaders)\n\n    Adds (or updates) the ``Vary`` header in the given ``HttpResponse`` object.\n    ``newheaders`` is a list of header names that should be in ``Vary``.\n    Existing headers in ``Vary`` aren't removed.\n\n.. function:: get_cache_key(request, key_prefix=None)\n\n    Returns a cache key based on the request path. It can be used in the\n    request phase because it pulls the list of headers to take into account\n    from the global path registry and uses those to build a cache key to\n    check against.\n\n    If there is no headerlist stored, the page needs to be rebuilt, so this\n    function returns ``None``.\n\n.. function:: learn_cache_key(request, response, cache_timeout=None, key_prefix=None)\n\n    Learns what headers to take into account for some request path from the\n    response object. It stores those headers in a global path registry so that\n    later access to that path will know what headers to take into account\n    without building the response object itself. The headers are named in\n    the ``Vary`` header of the response, but we want to prevent response\n    generation.\n\n    The list of headers to use for cache key generation is stored in the same\n    cache as the pages themselves. If the cache ages some data out of the\n    cache, this just means that we have to build the response once to get at\n    the Vary header and so at the list of headers to use for the cache key.\n\n``django.utils.datastructures``\n===============================\n\n.. module:: django.utils.datastructures\n   :synopsis: Data structures that aren't in Python's standard library.\n\n.. class:: SortedDict\n\n    The :class:`django.utils.datastructures.SortedDict` class is a dictionary\n    that keeps its keys in the order in which they're inserted.\n    ``SortedDict`` adds two additional methods to the standard Python ``dict``\n    class:\n\n    .. method:: insert(index, key, value)\n\n        .. deprecated:: 1.5\n\n        Inserts the key, value pair before the item with the given index.\n\n    .. method:: value_for_index(index)\n\n        .. deprecated:: 1.5\n\n        Returns the value of the item at the given zero-based index.\n\nCreating a new SortedDict\n-------------------------\n\nCreating a new ``SortedDict`` must be done in a way where ordering is\nguaranteed. For example::\n\n    SortedDict({'b': 1, 'a': 2, 'c': 3})\n\nwill not work. Passing in a basic Python ``dict`` could produce unreliable\nresults. Instead do::\n\n    SortedDict([('b', 1), ('a', 2), ('c', 3)])\n\n``django.utils.dateparse``\n==========================\n\n.. versionadded:: 1.4\n\n.. module:: django.utils.dateparse\n   :synopsis: Functions to parse datetime objects.\n\nThe functions defined in this module share the following properties:\n\n- They raise :exc:`~exceptions.ValueError` if their input is well formatted but\n  isn't a valid date or time.\n- They return ``None`` if it isn't well formatted at all.\n- They accept up to picosecond resolution in input, but they truncate it to\n  microseconds, since that's what Python supports.\n\n.. function:: parse_date(value)\n\n    Parses a string and returns a :class:`datetime.date`.\n\n.. function:: parse_time(value)\n\n    Parses a string and returns a :class:`datetime.time`.\n\n    UTC offsets aren't supported; if ``value`` describes one, the result is\n    ``None``.\n\n.. function:: parse_datetime(value)\n\n    Parses a string and returns a :class:`datetime.datetime`.\n\n    UTC offsets are supported; if ``value`` describes one, the result's\n    ``tzinfo`` attribute is a :class:`~django.utils.tzinfo.FixedOffset`\n    instance.\n\n``django.utils.decorators``\n===========================\n\n.. module:: django.utils.decorators\n    :synopsis: Functions that help with creating decorators for views.\n\n.. function:: method_decorator(decorator)\n\n    Converts a function decorator into a method decorator. See :ref:`decorating\n    class based views<decorating-class-based-views>` for example usage.\n\n.. function:: decorator_from_middleware(middleware_class)\n\n    Given a middleware class, returns a view decorator. This lets you use\n    middleware functionality on a per-view basis. The middleware is created\n    with no params passed.\n\n.. function:: decorator_from_middleware_with_args(middleware_class)\n\n    Like ``decorator_from_middleware``, but returns a function\n    that accepts the arguments to be passed to the middleware_class.\n    For example, the :func:`~django.views.decorators.cache.cache_page`\n    decorator is created from the ``CacheMiddleware`` like this::\n\n         cache_page = decorator_from_middleware_with_args(CacheMiddleware)\n\n         @cache_page(3600)\n         def my_view(request):\n             pass\n\n``django.utils.encoding``\n=========================\n\n.. module:: django.utils.encoding\n   :synopsis: A series of helper classes and function to manage character encoding.\n\n.. class:: StrAndUnicode\n\n    A class that derives ``__str__`` from ``__unicode__``.\n\n    On Python 2, ``__str__`` returns the output of ``__unicode__`` encoded as\n    a UTF-8 bytestring. On Python 3, ``__str__`` returns the output of\n    ``__unicode__``.\n\n    Useful as a mix-in. If you support Python 2 and 3 with a single code base,\n    you can inherit this mix-in and just define ``__unicode__``.\n\n.. function:: python_2_unicode_compatible\n\n    A decorator that defines ``__unicode__`` and ``__str__`` methods under\n    Python 2. Under Python 3 it does nothing.\n\n    To support Python 2 and 3 with a single code base, define a ``__str__``\n    method returning text and apply this decorator to the class.\n\n.. function:: smart_text(s, encoding='utf-8', strings_only=False, errors='strict')\n\n    .. versionadded:: 1.5\n\n    Returns a text object representing ``s`` -- ``unicode`` on Python 2 and\n    ``str`` on Python 3. Treats bytestrings using the ``encoding`` codec.\n\n    If ``strings_only`` is ``True``, don't convert (some) non-string-like\n    objects.\n\n.. function:: smart_unicode(s, encoding='utf-8', strings_only=False, errors='strict')\n\n    Historical name of :func:`smart_text`. Only available under Python 2.\n\n.. function:: is_protected_type(obj)\n\n    Determine if the object instance is of a protected type.\n\n    Objects of protected types are preserved as-is when passed to\n    ``force_text(strings_only=True)``.\n\n.. function:: force_text(s, encoding='utf-8', strings_only=False, errors='strict')\n\n    .. versionadded:: 1.5\n\n    Similar to ``smart_text``, except that lazy instances are resolved to\n    strings, rather than kept as lazy objects.\n\n    If ``strings_only`` is ``True``, don't convert (some) non-string-like\n    objects.\n\n.. function:: force_unicode(s, encoding='utf-8', strings_only=False, errors='strict')\n\n    Historical name of :func:`force_text`. Only available under Python 2.\n\n.. function:: smart_bytes(s, encoding='utf-8', strings_only=False, errors='strict')\n\n    .. versionadded:: 1.5\n\n    Returns a bytestring version of ``s``, encoded as specified in\n    ``encoding``.\n\n    If ``strings_only`` is ``True``, don't convert (some) non-string-like\n    objects.\n\n.. function:: force_bytes(s, encoding='utf-8', strings_only=False, errors='strict')\n\n    .. versionadded:: 1.5\n\n    Similar to ``smart_bytes``, except that lazy instances are resolved to\n    bytestrings, rather than kept as lazy objects.\n\n    If ``strings_only`` is ``True``, don't convert (some) non-string-like\n    objects.\n\n.. function:: smart_str(s, encoding='utf-8', strings_only=False, errors='strict')\n\n    Alias of :func:`smart_bytes` on Python 2 and :func:`smart_text` on Python\n    3. This function returns a ``str`` or a lazy string.\n\n    For instance, this is  suitable for writing to :data:`sys.stdout` on\n    Python 2 and 3.\n\n.. function:: force_str(s, encoding='utf-8', strings_only=False, errors='strict')\n\n    Alias of :func:`force_bytes` on Python 2 and :func:`force_text` on Python\n    3. This function always returns a ``str``.\n\n.. function:: iri_to_uri(iri)\n\n    Convert an Internationalized Resource Identifier (IRI) portion to a URI\n    portion that is suitable for inclusion in a URL.\n\n    This is the algorithm from section 3.1 of :rfc:`3987#section-3.1`. However,\n    since we are assuming input is either UTF-8 or unicode already, we can\n    simplify things a little from the full method.\n\n    Returns an ASCII string containing the encoded result.\n\n.. function:: filepath_to_uri(path)\n\n    Convert a file system path to a URI portion that is suitable for inclusion\n    in a URL. The path is assumed to be either UTF-8 or unicode.\n\n    This method will encode certain characters that would normally be\n    recognized as special characters for URIs.  Note that this method does not\n    encode the ' character, as it is a valid character within URIs. See\n    ``encodeURIComponent()`` JavaScript function for more details.\n\n    Returns an ASCII string containing the encoded result.\n\n``django.utils.feedgenerator``\n==============================\n\n.. module:: django.utils.feedgenerator\n   :synopsis: Syndication feed generation library -- used for generating RSS, etc.\n\nSample usage::\n\n    >>> from django.utils import feedgenerator\n    >>> feed = feedgenerator.Rss201rev2Feed(\n    ...     title=u\"Poynter E-Media Tidbits\",\n    ...     link=u\"http://www.poynter.org/column.asp?id=31\",\n    ...     description=u\"A group Weblog by the sharpest minds in online media/journalism/publishing.\",\n    ...     language=u\"en\",\n    ... )\n    >>> feed.add_item(\n    ...     title=\"Hello\",\n    ...     link=u\"http://www.holovaty.com/test/\",\n    ...     description=\"Testing.\"\n    ... )\n    >>> with open('test.rss', 'w') as fp:\n    ...     feed.write(fp, 'utf-8')\n\nFor simplifying the selection of a generator use ``feedgenerator.DefaultFeed``\nwhich is currently ``Rss201rev2Feed``\n\nFor definitions of the different versions of RSS, see:\nhttp://web.archive.org/web/20110718035220/http://diveintomark.org/archives/2004/02/04/incompatible-rss\n\n.. function:: get_tag_uri(url, date)\n\n    Creates a TagURI.\n\n    See http://web.archive.org/web/20110514113830/http://diveintomark.org/archives/2004/05/28/howto-atom-id\n\nSyndicationFeed\n---------------\n\n.. class:: SyndicationFeed\n\n    Base class for all syndication feeds. Subclasses should provide write().\n\n    .. method:: __init__(title, link, description, [language=None, author_email=None, author_name=None, author_link=None, subtitle=None, categories=None, feed_url=None, feed_copyright=None, feed_guid=None, ttl=None, **kwargs])\n\n        Initialize the feed with the given dictionary of metadata, which applies\n        to the entire feed.\n\n        Any extra keyword arguments you pass to ``__init__`` will be stored in\n        ``self.feed``.\n\n        All parameters should be Unicode objects, except ``categories``, which\n        should be a sequence of Unicode objects.\n\n    .. method:: add_item(title, link, description, [author_email=None, author_name=None, author_link=None, pubdate=None, comments=None, unique_id=None, enclosure=None, categories=(), item_copyright=None, ttl=None, **kwargs])\n\n        Adds an item to the feed. All args are expected to be Python ``unicode``\n        objects except ``pubdate``, which is a ``datetime.datetime`` object, and\n        ``enclosure``, which is an instance of the ``Enclosure`` class.\n\n    .. method:: num_items()\n\n    .. method:: root_attributes()\n\n        Return extra attributes to place on the root (i.e. feed/channel)\n        element. Called from ``write()``.\n\n    .. method:: add_root_elements(handler)\n\n        Add elements in the root (i.e. feed/channel) element.\n        Called from ``write()``.\n\n    .. method:: item_attributes(item)\n\n        Return extra attributes to place on each item (i.e. item/entry)\n        element.\n\n    .. method:: add_item_elements(handler, item)\n\n        Add elements on each item (i.e. item/entry) element.\n\n    .. method:: write(outfile, encoding)\n\n        Outputs the feed in the given encoding to ``outfile``, which is a\n        file-like object. Subclasses should override this.\n\n    .. method:: writeString(encoding)\n\n        Returns the feed in the given encoding as a string.\n\n    .. method:: latest_post_date()\n\n        Returns the latest item's ``pubdate``. If none of them have a\n        ``pubdate``, this returns the current date/time.\n\nEnclosure\n---------\n\n.. class:: Enclosure\n\n    Represents an RSS enclosure\n\nRssFeed\n-------\n\n.. class:: RssFeed(SyndicationFeed)\n\nRss201rev2Feed\n--------------\n\n.. class:: Rss201rev2Feed(RssFeed)\n\n    Spec: http://cyber.law.harvard.edu/rss/rss.html\n\nRssUserland091Feed\n------------------\n\n.. class:: RssUserland091Feed(RssFeed)\n\n    Spec: http://backend.userland.com/rss091\n\nAtom1Feed\n---------\n\n.. class:: Atom1Feed(SyndicationFeed)\n\n    Spec: http://www.atomenabled.org/developers/syndication/atom-format-spec.php\n\n``django.utils.functional``\n===========================\n\n.. module:: django.utils.functional\n    :synopsis: Functional programming tools.\n\n.. function:: allow_lazy(func, *resultclasses)\n\n    Django offers many utility functions (particularly in ``django.utils``) that\n    take a string as their first argument and do something to that string. These\n    functions are used by template filters as well as directly in other code.\n\n    If you write your own similar functions and deal with translations, you'll\n    face the problem of what to do when the first argument is a lazy translation\n    object. You don't want to convert it to a string immediately, because you might\n    be using this function outside of a view (and hence the current thread's locale\n    setting will not be correct).\n\n    For cases like this, use the ``django.utils.functional.allow_lazy()``\n    decorator. It modifies the function so that *if* it's called with a lazy\n    translation as the first argument, the function evaluation is delayed until it\n    needs to be converted to a string.\n\n    For example::\n\n        from django.utils.functional import allow_lazy\n\n        def fancy_utility_function(s, ...):\n            # Do some conversion on string 's'\n            ...\n        fancy_utility_function = allow_lazy(fancy_utility_function, unicode)\n\n    The ``allow_lazy()`` decorator takes, in addition to the function to decorate,\n    a number of extra arguments (``*args``) specifying the type(s) that the\n    original function can return. Usually, it's enough to include ``unicode`` here\n    and ensure that your function returns only Unicode strings.\n\n    Using this decorator means you can write your function and assume that the\n    input is a proper string, then add support for lazy translation objects at the\n    end.\n\n``django.utils.html``\n=====================\n\n.. module:: django.utils.html\n   :synopsis: HTML helper functions\n\nUsually you should build up HTML using Django's templates to make use of its\nautoescape mechanism, using the utilities in :mod:`django.utils.safestring`\nwhere appropriate. This module provides some additional low level utilitiesfor\nescaping HTML.\n\n.. function:: escape(text)\n\n    Returns the given text with ampersands, quotes and angle brackets encoded\n    for use in HTML. The input is first passed through\n    :func:`~django.utils.encoding.force_text` and the output has\n    :func:`~django.utils.safestring.mark_safe` applied.\n\n.. function:: conditional_escape(text)\n\n    Similar to ``escape()``, except that it doesn't operate on pre-escaped strings,\n    so it will not double escape.\n\n.. function:: format_html(format_string, *args, **kwargs)\n\n    This is similar to `str.format`_, except that it is appropriate for\n    building up HTML fragments. All args and kwargs are passed through\n    :func:`conditional_escape` before being passed to ``str.format``.\n\n    For the case of building up small HTML fragments, this function is to be\n    preferred over string interpolation using ``%`` or ``str.format`` directly,\n    because it applies escaping to all arguments - just like the Template system\n    applies escaping by default.\n\n    So, instead of writing:\n\n    .. code-block:: python\n\n        mark_safe(u\"%s <b>%s</b> %s\" % (some_html,\n                                        escape(some_text),\n                                        escape(some_other_text),\n                                        ))\n\n    you should instead use:\n\n    .. code-block:: python\n\n        format_html(u\"%{0} <b>{1}</b> {2}\",\n                    mark_safe(some_html), some_text, some_other_text)\n\n    This has the advantage that you don't need to apply :func:`escape` to each\n    argument and risk a bug and an XSS vulnerability if you forget one.\n\n    Note that although this function uses ``str.format`` to do the\n    interpolation, some of the formatting options provided by `str.format`_\n    (e.g. number formatting) will not work, since all arguments are passed\n    through :func:`conditional_escape` which (ultimately) calls\n    :func:`~django.utils.encoding.force_text` on the values.\n\n.. function:: format_html_join(sep, format_string, args_generator)\n\n    A wrapper of :func:`format_html`, for the common case of a group of\n    arguments that need to be formatted using the same format string, and then\n    joined using ``sep``. ``sep`` is also passed through\n    :func:`conditional_escape`.\n\n    ``args_generator`` should be an iterator that returns the sequence of\n    ``args`` that will be passed to :func:`format_html`. For example::\n\n        format_html_join('\\n', \"<li>{0} {1}</li>\", ((u.first_name, u.last_name)\n                                                    for u in users))\n\n.. function:: strip_tags(value)\n\n    Removes anything that looks like an html tag from the string, that is\n    anything contained within ``<>``.\n\n    For example::\n\n        strip_tags(value)\n\n    If ``value`` is ``\"<b>Joel</b> <button>is</button> a <span>slug</span>\"`` the\n    return value will be ``\"Joel is a slug\"``.\n\n.. function:: remove_tags(value, tags)\n\n    Removes a list of [X]HTML tag names from the output.\n\n    For example::\n\n        remove_tags(value, [\"b\", \"span\"])\n\n    If ``value`` is ``\"<b>Joel</b> <button>is</button> a <span>slug</span>\"`` the\n    return value will be ``\"Joel <button>is</button> a slug\"``.\n\n    Note that this filter is case-sensitive.\n\n    If ``value`` is ``\"<B>Joel</B> <button>is</button> a <span>slug</span>\"`` the\n    return value will be ``\"<B>Joel</B> <button>is</button> a slug\"``.\n\n.. _str.format: http://docs.python.org/library/stdtypes.html#str.format\n\n``django.utils.http``\n=====================\n\n.. module:: django.utils.http\n   :synopsis: HTTP helper functions. (URL encoding, cookie handling, ...)\n\n.. function:: urlquote(url, safe='/')\n\n    A version of Python's ``urllib.quote()`` function that can operate on\n    unicode strings. The url is first UTF-8 encoded before quoting. The\n    returned string can safely be used as part of an argument to a subsequent\n    ``iri_to_uri()`` call without double-quoting occurring. Employs lazy\n    execution.\n\n.. function:: urlquote_plus(url, safe='')\n\n    A version of Python's urllib.quote_plus() function that can operate on\n    unicode strings. The url is first UTF-8 encoded before quoting. The\n    returned string can safely be used as part of an argument to a subsequent\n    ``iri_to_uri()`` call without double-quoting occurring. Employs lazy\n    execution.\n\n.. function:: urlencode(query, doseq=0)\n\n    A version of Python's urllib.urlencode() function that can operate on\n    unicode strings. The parameters are first case to UTF-8 encoded strings\n    and then encoded as per normal.\n\n.. function:: cookie_date(epoch_seconds=None)\n\n    Formats the time to ensure compatibility with Netscape's cookie standard.\n\n    Accepts a floating point number expressed in seconds since the epoch in\n    UTC--such as that outputted by ``time.time()``. If set to ``None``,\n    defaults to the current time.\n\n    Outputs a string in the format ``Wdy, DD-Mon-YYYY HH:MM:SS GMT``.\n\n.. function:: http_date(epoch_seconds=None)\n\n    Formats the time to match the :rfc:`1123` date format as specified by HTTP\n    :rfc:`2616#section-3.3.1` section 3.3.1.\n\n    Accepts a floating point number expressed in seconds since the epoch in\n    UTC--such as that outputted by ``time.time()``. If set to ``None``,\n    defaults to the current time.\n\n    Outputs a string in the format ``Wdy, DD Mon YYYY HH:MM:SS GMT``.\n\n.. function:: base36_to_int(s)\n\n    Converts a base 36 string to an integer. On Python 2 the output is\n    guaranteed to be an ``int`` and not a ``long``.\n\n.. function:: int_to_base36(i)\n\n    Converts a positive integer to a base 36 string. On Python 2 ``i`` must be\n    smaller than :data:`sys.maxint`.\n\n``django.utils.safestring``\n===========================\n\n.. module:: django.utils.safestring\n   :synopsis: Functions and classes for working with strings that can be displayed safely without further escaping in HTML.\n\nFunctions and classes for working with \"safe strings\": strings that can be\ndisplayed safely without further escaping in HTML. Marking something as a \"safe\nstring\" means that the producer of the string has already turned characters\nthat should not be interpreted by the HTML engine (e.g. '<') into the\nappropriate entities.\n\n.. class:: SafeBytes\n\n    .. versionadded:: 1.5\n\n    A ``bytes`` subclass that has been specifically marked as \"safe\"\n    (requires no further escaping) for HTML output purposes.\n\n.. class:: SafeString\n\n    A ``str`` subclass that has been specifically marked as \"safe\"\n    (requires no further escaping) for HTML output purposes. This is\n    :class:`SafeBytes` on Python 2 and :class:`SafeText` on Python 3.\n\n.. class:: SafeText\n\n    .. versionadded:: 1.5\n\n    A ``str`` (in Python 3) or ``unicode`` (in Python 2) subclass\n    that has been specifically marked as \"safe\" for HTML output purposes.\n\n.. class:: SafeUnicode\n\n    Historical name of :class:`SafeText`. Only available under Python 2.\n\n.. function:: mark_safe(s)\n\n    Explicitly mark a string as safe for (HTML) output purposes. The returned\n    object can be used everywhere a string or unicode object is appropriate.\n\n    Can be called multiple times on a single string.\n\n.. function:: mark_for_escaping(s)\n\n    Explicitly mark a string as requiring HTML escaping upon output. Has no\n    effect on ``SafeData`` subclasses.\n\n    Can be called multiple times on a single string (the resulting escaping is\n    only applied once).\n\n``django.utils.text``\n=====================\n\n.. module:: django.utils.text\n    :synopsis: Text manipulation.\n\n.. function:: slugify\n\n    Converts to lowercase, removes non-word characters (alphanumerics and\n    underscores) and converts spaces to hyphens. Also strips leading and trailing\n    whitespace.\n\n    For example::\n\n        slugify(value)\n\n    If ``value`` is ``\"Joel is a slug\"``, the output will be ``\"joel-is-a-slug\"``.\n\n``django.utils.translation``\n============================\n\n.. module:: django.utils.translation\n   :synopsis: Internationalization support.\n\nFor a complete discussion on the usage of the following see the\n:doc:`translation documentation </topics/i18n/translation>`.\n\n.. function:: gettext(message)\n\n    Translates ``message`` and returns it in a UTF-8 bytestring\n\n.. function:: ugettext(message)\n\n    Translates ``message`` and returns it in a unicode string\n\n.. function:: pgettext(context, message)\n\n    Translates ``message`` given the ``context`` and returns\n    it in a unicode string.\n\n    For more information, see :ref:`contextual-markers`.\n\n.. function:: gettext_lazy(message)\n.. function:: ugettext_lazy(message)\n.. function:: pgettext_lazy(context, message)\n\n    Same as the non-lazy versions above, but using lazy execution.\n\n    See :ref:`lazy translations documentation <lazy-translations>`.\n\n.. function:: gettext_noop(message)\n.. function:: ugettext_noop(message)\n\n    Marks strings for translation but doesn't translate them now. This can be\n    used to store strings in global variables that should stay in the base\n    language (because they might be used externally) and will be translated\n    later.\n\n.. function:: ngettext(singular, plural, number)\n\n    Translates ``singular`` and ``plural`` and returns the appropriate string\n    based on ``number`` in a UTF-8 bytestring.\n\n.. function:: ungettext(singular, plural, number)\n\n    Translates ``singular`` and ``plural`` and returns the appropriate string\n    based on ``number`` in a unicode string.\n\n.. function:: npgettext(context, singular, plural, number)\n\n    Translates ``singular`` and ``plural`` and returns the appropriate string\n    based on ``number`` and the ``context`` in a unicode string.\n\n.. function:: ngettext_lazy(singular, plural, number)\n.. function:: ungettext_lazy(singular, plural, number)\n.. function:: npgettext_lazy(singular, plural, number)\n\n    Same as the non-lazy versions above, but using lazy execution.\n\n    See :ref:`lazy translations documentation <lazy-translations>`.\n\n.. function:: string_concat(*strings)\n\n    Lazy variant of string concatenation, needed for translations that are\n    constructed from multiple parts.\n\n.. function:: activate(language)\n\n    Fetches the translation object for a given language and installs it as\n    the current translation object for the current thread.\n\n.. function:: deactivate()\n\n    De-installs the currently active translation object so that further _ calls\n    will resolve against the default translation object, again.\n\n.. function:: deactivate_all()\n\n    Makes the active translation object a NullTranslations() instance. This is\n    useful when we want delayed translations to appear as the original string\n    for some reason.\n\n.. function:: override(language, deactivate=False)\n\n    .. versionadded:: 1.4\n\n    A Python context manager that uses\n    :func:`django.utils.translation.activate` to fetch the translation object\n    for a given language, installing it as the translation object for the\n    current thread and reinstall the previous active language on exit.\n    Optionally it can simply deinstall the temporary translation on exit with\n    :func:`django.utils.translation.deactivate` if the deactivate argument is\n    True. If you pass None as the language argument, a NullTranslations()\n    instance is installed while the context is active.\n\n.. function:: get_language()\n\n    Returns the currently selected language code.\n\n.. function:: get_language_bidi()\n\n    Returns selected language's BiDi layout:\n\n    * ``False`` = left-to-right layout\n    * ``True`` = right-to-left layout\n\n.. function:: get_language_from_request(request, check_path=False)\n\n    .. versionchanged:: 1.4\n\n    Analyzes the request to find what language the user wants the system to show.\n    Only languages listed in settings.LANGUAGES are taken into account. If the user\n    requests a sublanguage where we have a main language, we send out the main\n    language.\n\n    If ``check_path`` is ``True``, the function first checks the requested URL\n    for whether its path begins with a language code listed in the\n    :setting:`LANGUAGES` setting.\n\n.. function:: to_locale(language)\n\n    Turns a language name (en-us) into a locale name (en_US).\n\n.. function:: templatize(src)\n\n    Turns a Django template into something that is understood by xgettext. It does\n    so by translating the Django translation tags into standard gettext function\n    invocations.\n\n.. _time-zone-selection-functions:\n\n``django.utils.timezone``\n=========================\n\n.. versionadded:: 1.4\n\n.. module:: django.utils.timezone\n    :synopsis: Timezone support.\n\n.. data:: utc\n\n    :class:`~datetime.tzinfo` instance that represents UTC.\n\n.. function:: get_default_timezone()\n\n    Returns a :class:`~datetime.tzinfo` instance that represents the\n    :ref:`default time zone <default-current-time-zone>`.\n\n.. function:: get_default_timezone_name()\n\n    Returns the name of the :ref:`default time zone\n    <default-current-time-zone>`.\n\n.. function:: get_current_timezone()\n\n    Returns a :class:`~datetime.tzinfo` instance that represents the\n    :ref:`current time zone <default-current-time-zone>`.\n\n.. function:: get_current_timezone_name()\n\n    Returns the name of the :ref:`current time zone\n    <default-current-time-zone>`.\n\n.. function:: activate(timezone)\n\n    Sets the :ref:`current time zone <default-current-time-zone>`. The\n    ``timezone`` argument must be an instance of a :class:`~datetime.tzinfo`\n    subclass or, if pytz_ is available, a time zone name.\n\n.. function:: deactivate()\n\n    Unsets the :ref:`current time zone <default-current-time-zone>`.\n\n.. function:: override(timezone)\n\n    This is a Python context manager that sets the :ref:`current time zone\n    <default-current-time-zone>` on entry with :func:`activate()`, and restores\n    the previously active time zone on exit. If the ``timezone`` argument is\n    ``None``, the :ref:`current time zone <default-current-time-zone>` is unset\n    on entry with :func:`deactivate()` instead.\n\n.. versionadded:: 1.5\n\n.. function:: localtime(value, timezone=None)\n\n    Converts an aware :class:`~datetime.datetime` to a different time zone,\n    by default the :ref:`current time zone <default-current-time-zone>`.\n\n    This function doesn't work on naive datetimes; use :func:`make_aware`\n    instead.\n\n.. function:: now()\n\n    Returns an aware or naive :class:`~datetime.datetime` that represents the\n    current point in time when :setting:`USE_TZ` is ``True`` or ``False``\n    respectively.\n\n.. function:: is_aware(value)\n\n    Returns ``True`` if ``value`` is aware, ``False`` if it is naive. This\n    function assumes that ``value`` is a :class:`~datetime.datetime`.\n\n.. function:: is_naive(value)\n\n    Returns ``True`` if ``value`` is naive, ``False`` if it is aware. This\n    function assumes that ``value`` is a :class:`~datetime.datetime`.\n\n.. function:: make_aware(value, timezone)\n\n    Returns an aware :class:`~datetime.datetime` that represents the same\n    point in time as ``value`` in ``timezone``, ``value`` being a naive\n    :class:`~datetime.datetime`.\n\n    This function can raise an exception if ``value`` doesn't exist or is\n    ambiguous because of DST transitions.\n\n.. function:: make_naive(value, timezone)\n\n    Returns an naive :class:`~datetime.datetime` that represents in\n    ``timezone``  the same point in time as ``value``, ``value`` being an\n    aware :class:`~datetime.datetime`\n\n.. _pytz: http://pytz.sourceforge.net/\n\n``django.utils.tzinfo``\n=======================\n\n.. module:: django.utils.tzinfo\n   :synopsis: Implementation of ``tzinfo`` classes for use with ``datetime.datetime``.\n\n.. class:: FixedOffset\n\n    Fixed offset in minutes east from UTC.\n\n.. class:: LocalTimezone\n\n    Proxy timezone information from time module.\n"
  },
  {
    "path": "Django-1.5.1/docs/ref/validators.txt",
    "content": "==========\nValidators\n==========\n\n.. module:: django.core.validators\n    :synopsis: Validation utilities and base classes\n\nWriting validators\n==================\n\nA validator is a callable that takes a value and raises a\n:exc:`~django.core.exceptions.ValidationError` if it doesn't meet some\ncriteria. Validators can be useful for re-using validation logic between\ndifferent types of fields.\n\nFor example, here's a validator that only allows even numbers::\n\n    from django.core.exceptions import ValidationError\n\n    def validate_even(value):\n        if value % 2 != 0:\n            raise ValidationError(u'%s is not an even number' % value)\n\nYou can add this to a model field via the field's :attr:`~django.db.models.Field.validators`\nargument::\n\n    from django.db import models\n\n    class MyModel(models.Model):\n        even_field = models.IntegerField(validators=[validate_even])\n\nBecause values are converted to Python before validators are run, you can even\nuse the same validator with forms::\n\n    from django import forms\n\n    class MyForm(forms.Form):\n        even_field = forms.IntegerField(validators=[validate_even])\n\nHow validators are run\n======================\n\nSee the :doc:`form validation </ref/forms/validation>` for more information on\nhow validators are run in forms, and :ref:`Validating objects\n<validating-objects>` for how they're run in models. Note that validators will\nnot be run automatically when you save a model, but if you are using a\n:class:`~django.forms.ModelForm`, it will run your validators on any fields\nthat are included in your form. See the\n:doc:`ModelForm documentation </topics/forms/modelforms>` for information on\nhow model validation interacts with forms.\n\nBuilt-in validators\n===================\n\nThe :mod:`django.core.validators` module contains a collection of callable\nvalidators for use with model and form fields. They're used internally but\nare available for use with your own fields, too. They can be used in addition\nto, or in lieu of custom ``field.clean()`` methods.\n\n``RegexValidator``\n------------------\n.. class:: RegexValidator([regex=None, message=None, code=None])\n\n    :param regex: If not ``None``, overrides :attr:`regex`. Can be a regular\n        expression string or a pre-compiled regular expression.\n    :param message: If not ``None``, overrides :attr:`.message`.\n    :param code: If not ``None``, overrides :attr:`code`.\n\n    .. attribute:: regex\n\n        The regular expression pattern to search for the provided ``value``,\n        or a pre-compiled regular expression. Raises a\n        :exc:`~django.core.exceptions.ValidationError` with :attr:`message`\n        and :attr:`code` if no match is found. By default, matches any string\n        (including an empty string).\n\n    .. attribute:: message\n\n        The error message used by\n        :exc:`~django.core.exceptions.ValidationError` if validation fails.\n        Defaults to ``\"Enter a valid value\"``.\n\n    .. attribute:: code\n\n        The error code used by :exc:`~django.core.exceptions.ValidationError`\n        if validation fails. Defaults to ``\"invalid\"``.\n\n``URLValidator``\n----------------\n.. class:: URLValidator()\n\n    A :class:`RegexValidator` that ensures a value looks like a URL, and raises\n    an error code of ``'invalid'`` if it doesn't.\n\n``validate_email``\n------------------\n.. data:: validate_email\n\n    A :class:`RegexValidator` instance that ensures a value looks like an\n    email address.\n\n``validate_slug``\n-----------------\n.. data:: validate_slug\n\n    A :class:`RegexValidator` instance that ensures a value consists of only\n    letters, numbers, underscores or hyphens.\n\n``validate_ipv4_address``\n-------------------------\n.. data:: validate_ipv4_address\n\n    A :class:`RegexValidator` instance that ensures a value looks like an IPv4\n    address.\n\n``validate_ipv6_address``\n-------------------------\n.. versionadded:: 1.4\n\n.. data:: validate_ipv6_address\n\n    Uses ``django.utils.ipv6`` to check the validity of an IPv6 address.\n\n``validate_ipv46_address``\n--------------------------\n.. versionadded:: 1.4\n\n.. data:: validate_ipv46_address\n\n    Uses both ``validate_ipv4_address`` and ``validate_ipv6_address`` to\n    ensure a value is either a valid IPv4 or IPv6 address.\n\n``validate_comma_separated_integer_list``\n-----------------------------------------\n.. data:: validate_comma_separated_integer_list\n\n    A :class:`RegexValidator` instance that ensures a value is a\n    comma-separated list of integers.\n\n``MaxValueValidator``\n---------------------\n.. class:: MaxValueValidator(max_value)\n\n    Raises a :exc:`~django.core.exceptions.ValidationError` with a code of\n    ``'max_value'`` if ``value`` is greater than ``max_value``.\n\n``MinValueValidator``\n---------------------\n.. class:: MinValueValidator(min_value)\n\n    Raises a :exc:`~django.core.exceptions.ValidationError` with a code of\n    ``'min_value'`` if ``value`` is less than ``min_value``.\n\n``MaxLengthValidator``\n----------------------\n.. class:: MaxLengthValidator(max_length)\n\n    Raises a :exc:`~django.core.exceptions.ValidationError` with a code of\n    ``'max_length'`` if the length of ``value`` is greater than ``max_length``.\n\n``MinLengthValidator``\n----------------------\n.. class:: MinLengthValidator(min_length)\n\n    Raises a :exc:`~django.core.exceptions.ValidationError` with a code of\n    ``'min_length'`` if the length of ``value`` is less than ``min_length``.\n"
  },
  {
    "path": "Django-1.5.1/docs/releases/0.95.txt",
    "content": "=================================\nDjango version 0.95 release notes\n=================================\n\nWelcome to the Django 0.95 release.\n\nThis represents a significant advance in Django development since the 0.91\nrelease in January 2006. The details of every change in this release would be\ntoo extensive to list in full, but a summary is presented below.\n\nSuitability and API stability\n=============================\n\nThis release is intended to provide a stable reference point for developers\nwanting to work on production-level applications that use Django.\n\nHowever, it's not the 1.0 release, and we'll be introducing further changes\nbefore 1.0. For a clear look at which areas of the framework will change (and\nwhich ones will *not* change) before 1.0, see the api-stability.txt file, which\nlives in the docs/ directory of the distribution.\n\nYou may have a need to use some of the features that are marked as\n\"subject to API change\" in that document, but that's OK with us as long as it's\nOK with you, and as long as you understand APIs may change in the future.\n\nFortunately, most of Django's core APIs won't be changing before version 1.0.\nThere likely won't be as big of a change between 0.95 and 1.0 versions as there\nwas between 0.91 and 0.95.\n\nChanges and new features\n========================\n\nThe major changes in this release (for developers currently using the 0.91\nrelease) are a result of merging the 'magic-removal' branch of development.\nThis branch removed a number of constraints in the way Django code had to be\nwritten that were a consequence of decisions made in the early days of Django,\nprior to its open-source release. It's now possible to write more natural,\nPythonic code that works as expected, and there's less \"black magic\" happening\nbehind the scenes.\n\nAside from that, another main theme of this release is a dramatic increase in\nusability. We've made countless improvements in error messages, documentation,\netc., to improve developers' quality of life.\n\nThe new features and changes introduced in 0.95 include:\n\n* Django now uses a more consistent and natural filtering interface for\n  retrieving objects from the database.\n\n* User-defined models, functions and constants now appear in the module\n  namespace they were defined in. (Previously everything was magically\n  transferred to the django.models.* namespace.)\n\n* Some optional applications, such as the FlatPage, Sites and Redirects\n  apps, have been decoupled and moved into django.contrib. If you don't\n  want to use these applications, you no longer have to install their\n  database tables.\n\n* Django now has support for managing database transactions.\n\n* We've added the ability to write custom authentication and authorization\n  backends for authenticating users against alternate systems, such as\n  LDAP.\n\n* We've made it easier to add custom table-level functions to models,\n  through a new \"Manager\" API.\n\n* It's now possible to use Django without a database. This simply means\n  that the framework no longer requires you to have a working database set\n  up just to serve dynamic pages. In other words, you can just use\n  URLconfs/views on their own. Previously, the framework required that a\n  database be configured, regardless of whether you actually used it.\n\n* It's now more explicit and natural to override save() and delete()\n  methods on models, rather than needing to hook into the pre_save() and\n  post_save() method hooks.\n\n* Individual pieces of the framework now can be configured without\n  requiring the setting of an environment variable. This permits use of,\n  for example, the Django templating system inside other applications.\n\n* More and more parts of the framework have been internationalized, as\n  we've expanded internationalization (i18n) support. The Django\n  codebase, including code and templates, has now been translated, at least\n  in part, into 31 languages. From Arabic to Chinese to Hungarian to Welsh,\n  it is now possible to use Django's admin site in your native language.\n\nThe number of changes required to port from 0.91-compatible code to the 0.95\ncode base are significant in some cases. However, they are, for the most part,\nreasonably routine and only need to be done once. A list of the necessary\nchanges is described in the `Removing The Magic`_ wiki page. There is also an\neasy checklist_ for reference when undertaking the porting operation.\n\n.. _Removing The Magic: https://code.djangoproject.com/wiki/RemovingTheMagic\n.. _checklist: https://code.djangoproject.com/wiki/MagicRemovalCheatSheet\n\nProblem reports and getting help\n================================\n\nNeed help resolving a problem with Django? The documentation in the\ndistribution is also available :doc:`online </index>` at the `Django Web\nsite`_. The :doc:`FAQ </faq/index>` document is especially recommended, as it\ncontains a number of issues that come up time and again.\n\nFor more personalized help, the `django-users`_ mailing list is a very active\nlist, with more than 2,000 subscribers who can help you solve any sort of\nDjango problem. We recommend you search the archives first, though, because\nmany common questions appear with some regularity, and any particular problem\nmay already have been answered.\n\nFinally, for those who prefer the more immediate feedback offered by IRC,\nthere's a #django channel on irc.freenode.net that is regularly populated by\nDjango users and developers from around the world. Friendly people are usually\navailable at any hour of the day -- to help, or just to chat.\n\n.. _Django Web site: https://www.djangoproject.com/\n.. _django-users: http://groups.google.com/group/django-users\n\nThanks for using Django!\n\nThe Django Team\nJuly 2006\n\n"
  },
  {
    "path": "Django-1.5.1/docs/releases/0.96.txt",
    "content": "=================================\nDjango version 0.96 release notes\n=================================\n\nWelcome to Django 0.96!\n\nThe primary goal for 0.96 is a cleanup and stabilization of the features\nintroduced in 0.95. There have been a few small `backwards-incompatible\nchanges`_ since 0.95, but the upgrade process should be fairly simple\nand should not require major changes to existing applications.\n\nHowever, we're also releasing 0.96 now because we have a set of\nbackwards-incompatible changes scheduled for the near future. Once\ncompleted, they will involve some code changes for application\ndevelopers, so we recommend that you stick with Django 0.96 until the\nnext official release; then you'll be able to upgrade in one step\ninstead of needing to make incremental changes to keep up with the\ndevelopment version of Django.\n\nBackwards-incompatible changes\n==============================\n\nThe following changes may require you to update your code when you switch from\n0.95 to 0.96:\n\n``MySQLdb`` version requirement\n-------------------------------\n\nDue to a bug in older versions of the ``MySQLdb`` Python module (which\nDjango uses to connect to MySQL databases), Django's MySQL backend now\nrequires version 1.2.1p2 or higher of ``MySQLdb``, and will raise\nexceptions if you attempt to use an older version.\n\nIf you're currently unable to upgrade your copy of ``MySQLdb`` to meet\nthis requirement, a separate, backwards-compatible backend, called\n\"mysql_old\", has been added to Django. To use this backend, change\nthe ``DATABASE_ENGINE`` setting in your Django settings file from this::\n\n    DATABASE_ENGINE = \"mysql\"\n\nto this::\n\n    DATABASE_ENGINE = \"mysql_old\"\n\nHowever, we strongly encourage MySQL users to upgrade to a more recent\nversion of ``MySQLdb`` as soon as possible, The \"mysql_old\" backend is\nprovided only to ease this transition, and is considered deprecated;\naside from any necessary security fixes, it will not be actively\nmaintained, and it will be removed in a future release of Django.\n\nAlso, note that some features, like the new ``DATABASE_OPTIONS``\nsetting (see the :doc:`databases documentation </ref/databases>` for details),\nare only available on the \"mysql\" backend, and will not be made available for\n\"mysql_old\".\n\nDatabase constraint names changed\n---------------------------------\n\nThe format of the constraint names Django generates for foreign key\nreferences have changed slightly. These names are generally only used\nwhen it is not possible to put the reference directly on the affected\ncolumn, so they are not always visible.\n\nThe effect of this change is that running ``manage.py reset`` and\nsimilar commands against an existing database may generate SQL with\nthe new form of constraint name, while the database itself contains\nconstraints named in the old form; this will cause the database server\nto raise an error message about modifying non-existent constraints.\n\nIf you need to work around this, there are two methods available:\n\n1. Redirect the output of ``manage.py`` to a file, and edit the\n   generated SQL to use the correct constraint names before\n   executing it.\n\n2. Examine the output of ``manage.py sqlall`` to see the new-style\n   constraint names, and use that as a guide to rename existing\n   constraints in your database.\n\nName changes in ``manage.py``\n-----------------------------\n\nA few of the options to ``manage.py`` have changed with the addition of fixture\nsupport:\n\n* There are new ``dumpdata`` and ``loaddata`` commands which, as\n  you might expect, will dump and load data to/from the\n  database. These commands can operate against any of Django's\n  supported serialization formats.\n\n* The ``sqlinitialdata`` command has been renamed to ``sqlcustom`` to\n  emphasize that ``loaddata`` should be used for data (and ``sqlcustom`` for\n  other custom SQL -- views, stored procedures, etc.).\n\n* The vestigial ``install`` command has been removed. Use ``syncdb``.\n\nBackslash escaping changed\n--------------------------\n\nThe Django database API now escapes backslashes given as query parameters. If\nyou have any database API code that matches backslashes, and it was working before\n(despite the lack of escaping), you'll have to change your code to \"unescape\" the\nslashes one level.\n\nFor example, this used to work::\n\n    # Find text containing a single backslash\n    MyModel.objects.filter(text__contains='\\\\\\\\')\n\nThe above is now incorrect, and should be rewritten as::\n\n    # Find text containing a single backslash\n    MyModel.objects.filter(text__contains='\\\\')\n\nRemoved ENABLE_PSYCO setting\n----------------------------\n\nThe ``ENABLE_PSYCO`` setting no longer exists. If your settings file includes\n``ENABLE_PSYCO`` it will have no effect; to use Psyco_, we recommend\nwriting a middleware class to activate it.\n\n.. _psyco: http://psyco.sourceforge.net/\n\nWhat's new in 0.96?\n===================\n\nThis revision represents over a thousand source commits and over four hundred\nbug fixes, so we can't possibly catalog all the changes. Here, we describe the\nmost notable changes in this release.\n\nNew forms library\n-----------------\n\n``django.newforms`` is Django's new form-handling library. It's a\nreplacement for ``django.forms``, the old form/manipulator/validation\nframework.  Both APIs are available in 0.96, but over the next two\nreleases we plan to switch completely to the new forms system, and\ndeprecate and remove the old system.\n\nThere are three elements to this transition:\n\n* We've copied the current ``django.forms`` to\n  ``django.oldforms``. This allows you to upgrade your code *now*\n  rather than waiting for the backwards-incompatible change and\n  rushing to fix your code after the fact.  Just change your\n  import statements like this::\n\n      from django import forms             # 0.95-style\n      from django import oldforms as forms # 0.96-style\n\n* The next official release of Django will move the current\n  ``django.newforms`` to ``django.forms``. This will be a\n  backwards-incompatible change, and anyone still using the old\n  version of ``django.forms`` at that time will need to change\n  their import statements as described above.\n\n* The next release after that will completely remove\n  ``django.oldforms``.\n\nAlthough the ``newforms`` library will continue to evolve, it's ready for use\nfor most common cases. We recommend that anyone new to form handling skip the\nold forms system and start with the new.\n\nFor more information about ``django.newforms``, read the :doc:`newforms\ndocumentation </topics/forms/index>`.\n\nURLconf improvements\n--------------------\n\nYou can now use any callable as the callback in URLconfs (previously, only\nstrings that referred to callables were allowed). This allows a much more\nnatural use of URLconfs. For example, this URLconf::\n\n    from django.conf.urls.defaults import *\n\n    urlpatterns = patterns('',\n        ('^myview/$', 'mysite.myapp.views.myview')\n    )\n\ncan now be rewritten as::\n\n    from django.conf.urls.defaults import *\n    from mysite.myapp.views import myview\n\n    urlpatterns = patterns('',\n        ('^myview/$', myview)\n    )\n\nOne useful application of this can be seen when using decorators; this\nchange allows you to apply decorators to views *in your\nURLconf*. Thus, you can make a generic view require login very\neasily::\n\n    from django.conf.urls.defaults import *\n    from django.contrib.auth.decorators import login_required\n    from django.views.generic.list_detail import object_list\n    from mysite.myapp.models import MyModel\n\n    info = {\n        \"queryset\" : MyModel.objects.all(),\n    }\n\n    urlpatterns = patterns('',\n        ('^myview/$', login_required(object_list), info)\n    )\n\nNote that both syntaxes (strings and callables) are valid, and will continue to\nbe valid for the foreseeable future.\n\nThe test framework\n------------------\n\nDjango now includes a test framework so you can start transmuting fear into\nboredom (with apologies to Kent Beck). You can write tests based on\n:mod:`doctest` or :mod:`unittest` and test your views with a simple test client.\n\nThere is also new support for \"fixtures\" -- initial data, stored in any of the\nsupported :doc:`serialization formats </topics/serialization>`, that will be\nloaded into your database at the start of your tests. This makes testing with\nreal data much easier.\n\nSee :doc:`the testing documentation </topics/testing/index>` for the full details.\n\nImprovements to the admin interface\n-----------------------------------\n\nA small change, but a very nice one: dedicated views for adding and\nupdating users have been added to the admin interface, so you no\nlonger need to worry about working with hashed passwords in the admin.\n\nThanks\n======\n\nSince 0.95, a number of people have stepped forward and taken a major\nnew role in Django's development. We'd like to thank these people for\nall their hard work:\n\n* Russell Keith-Magee and Malcolm Tredinnick for their major code\n  contributions. This release wouldn't have been possible without them.\n\n* Our new release manager, James Bennett, for his work in getting out\n  0.95.1, 0.96, and (hopefully) future release.\n\n* Our ticket managers Chris Beaven (aka SmileyChris), Simon Greenhill,\n  Michael Radziej, and Gary Wilson. They agreed to take on the monumental\n  task of wrangling our tickets into nicely cataloged submission. Figuring\n  out what to work on is now about a million times easier; thanks again,\n  guys.\n\n* Everyone who submitted a bug report, patch or ticket comment. We can't\n  possibly thank everyone by name -- over 200 developers submitted patches\n  that went into 0.96 -- but everyone who's contributed to Django is listed\n  in AUTHORS_.\n\n.. _AUTHORS: https://code.djangoproject.com/browser/django/trunk/AUTHORS\n"
  },
  {
    "path": "Django-1.5.1/docs/releases/1.0-alpha-1.txt",
    "content": "================================\nDjango 1.0 alpha release notes\n================================\n\nWelcome to Django 1.0 alpha!\n\nThis is the first in a series of preview/development releases leading\nup to the eventual release of Django 1.0, currently scheduled to take\nplace in early September 2008. This release is primarily targeted at\ndevelopers who are interested in testing the Django codebase and\nhelping to identify and resolve bugs prior to the final 1.0 release.\n\nAs such, this release is *not* intended for production use, and any\nsuch use is strongly discouraged.\n\n\nWhat's new in Django 1.0 alpha\n==============================\n\nDjango's development trunk has been the site of nearly constant\nactivity over the past year, with several major new features landing\nsince the 0.96 release. Some of the highlights include:\n\nRefactored admin application (newforms-admin)\n    The Django administrative interface (``django.contrib.admin``) has\n    been completely refactored; admin definitions are now completely\n    decoupled from model definitions (no more ``class Admin``\n    declaration in models!), rewritten to use Django's new\n    form-handling library (introduced in the 0.96 release as\n    ``django.newforms``, and now available as simply ``django.forms``)\n    and redesigned with extensibility and customization in mind. Full\n    documentation for the admin application is available online in the\n    official Django documentation:\n\n    * :doc:`admin reference </ref/contrib/admin/index>`\n\nImproved Unicode handling\n    Django's internals have been refactored to use Unicode throughout;\n    this drastically simplifies the task of dealing with\n    non-Western-European content and data in Django. Additionally,\n    utility functions have been provided to ease interoperability with\n    third-party libraries and systems which may or may not handle\n    Unicode gracefully. Details are available in Django's\n    Unicode-handling documentation:\n\n    * :doc:`unicode reference </ref/unicode>`\n\nAn improved Django ORM\n    Django's object-relational mapper -- the component which provides\n    the mapping between Django model classes and your database, and\n    which mediates your database queries -- has been dramatically\n    improved by a massive refactoring. For most users of Django this\n    is backwards-compatible; the public-facing API for database\n    querying underwent a few minor changes, but most of the updates\n    took place in the ORM's internals. A guide to the changes,\n    including backwards-incompatible modifications and mentions of new\n    features opened up by this refactoring, is available on the Django\n    wiki:\n\n    * https://code.djangoproject.com/wiki/QuerysetRefactorBranch\n\nAutomatic escaping of template variables\n    To provide improved security against cross-site scripting (XSS)\n    vulnerabilities, Django's template system now automatically\n    escapes the output of variables. This behavior is configurable,\n    and allows both variables and larger template constructs to be\n    marked as safe (requiring no escaping) or unsafe (requiring\n    escaping). A full guide to this feature is in the documentation\n    for the :ttag:`autoescape` tag.\n\nThere are many more new features, many bugfixes and many enhancements\nto existing features from previous releases. The ``newforms`` library,\nfor example, has undergone massive improvements including several\nuseful add-ons in ``django.contrib`` which complement and build on\nDjango's form-handling capabilities, and Django's file-uploading\nhandlers have been refactored to allow finer-grained control over the\nuploading process as well as streaming uploads of large files.\n\nAlong with these improvements and additions, we've made a number of\nof backwards-incompatible changes to the framework, as features have been\nfleshed out and APIs have been finalized for the 1.0 release. A\ncomplete guide to these changes will be available as part of the final\nDjango 1.0 release, and a comprehensive list of backwards-incompatible\nchanges is also available on the Django wiki for those who want to\nbegin developing and testing their upgrade process:\n\n* https://code.djangoproject.com/wiki/BackwardsIncompatibleChanges\n\n\nThe Django 1.0 roadmap\n======================\n\nOne of the primary goals of this alpha release is to focus attention\non the remaining features to be implemented for Django 1.0, and on the\nbugs that need to be resolved before the final release. Following\nthis release, we'll be conducting a series of sprints building up to a\nseries of beta releases and a release-candidate stage, followed soon\nafter by Django 1.0. The timeline is projected to be:\n\n* August 1, 2008: Sprint (based in Washington, DC, and online).\n\n* August 5, 2008: Django 1.0 beta 1 release. This will also constitute\n  the feature freeze for 1.0. Any feature to be included in 1.0 must\n  be completed and in trunk by this time.\n\n* August 8, 2008: Sprint (based in Lawrence, KS, and online).\n\n* August 12, 2008: Django 1.0 beta 2 release.\n\n* August 15, 2008: Sprint (based in Austin, TX, and online).\n\n* August 19, 2008: Django 1.0 release candidate 1.\n\n* August 22, 2008: Sprint (based in Portland, OR, and online).\n\n* August 26, 2008: Django 1.0 release candidate 2.\n\n* September 2, 2008: Django 1.0 final release. The official Django 1.0\n  release party will take place during the first-ever DjangoCon, to be\n  held in Mountain View, CA, September 6-7.\n\nOf course, like any estimated timeline, this is subject to change as\nrequirements dictate. The latest information will always be available\non the Django project wiki:\n\n* https://code.djangoproject.com/wiki/VersionOneRoadmap\n\n\nWhat you can do to help\n=======================\n\nIn order to provide a high-quality 1.0 release, we need your\nhelp. Although this alpha release is, again, *not* intended for\nproduction use, you can help the Django team by trying out the alpha\ncodebase in a safe test environment and reporting any bugs or issues\nyou encounter. The Django ticket tracker is the central place to\nsearch for open issues:\n\n* https://code.djangoproject.com/timeline\n\nPlease open new tickets if no existing ticket corresponds to a problem\nyou're running into.\n\nAdditionally, discussion of Django development, including progress\ntoward the 1.0 release, takes place daily on the django-developers\nmailing list:\n\n* http://groups.google.com/group/django-developers\n\n...and in the ``#django-dev`` IRC channel on ``irc.freenode.net``. If\nyou're interested in helping out with Django's development, feel free\nto join the discussions there.\n\nDjango's online documentation also includes pointers on how to\ncontribute to Django:\n\n* :doc:`contributing to Django </internals/contributing/index>`\n\nContributions on any level -- developing code, writing\ndocumentation or simply triaging tickets and helping to test proposed\nbugfixes -- are always welcome and appreciated.\n"
  },
  {
    "path": "Django-1.5.1/docs/releases/1.0-alpha-2.txt",
    "content": "================================\nDjango 1.0 alpha 2 release notes\n================================\n\nWelcome to Django 1.0 alpha 2!\n\nThis is the second in a series of preview/development releases leading\nup to the eventual release of Django 1.0, currently scheduled to take\nplace in early September 2008. This releases is primarily targeted at\ndevelopers who are interested in testing the Django codebase and\nhelping to identify and resolve bugs prior to the final 1.0 release.\n\nAs such, this release is *not* intended for production use, and any\nsuch use is strongly discouraged.\n\n\nWhat's new in Django 1.0 alpha 2\n================================\n\nDjango's development trunk has been the site of nearly constant activity over\nthe past year, with several major new features landing since the 0.96 release.\nFor features which were new as of Django 1.0 alpha 1, see :doc:`the 1.0 alpha 1\nrelease notes </releases/1.0-alpha-1>`. Since the 1.0 alpha 1 release several new\nfeatures have landed, including:\n\n``django.contrib.gis`` (`GeoDjango`_)\n    A project over a year in the making, this adds world-class GIS\n    (`Geographic Information Systems`_) support to Django, in the form\n    of a ``contrib`` application.  `Its documentation`_ is currently\n    being maintained externally, and will be merged into the main\n    Django documentation prior to the final 1.0 release. Huge thanks\n    go to Justin Bronn, Jeremy Dunck, Brett Hoerner and Travis Pinney\n    for their efforts in creating and completing this feature.\n\nPluggable file storage\n    Django's built-in ``FileField`` and ``ImageField`` now can take advantage of\n    pluggable file-storage backends, allowing extensive customization of where\n    and how uploaded files get stored by Django. For details, see :doc:`the\n    files documentation </topics/files>`; big thanks go to Marty Alchin for\n    putting in the hard work to get this completed.\n\nJython compatibility\n    Thanks to a lot of work from Leo Soto during a Google Summer of\n    Code project, Django's codebase has been refactored to remove\n    incompatibilities with `Jython`_, an implementation of Python\n    written in Java, which runs Python code on the Java Virtual\n    Machine. Django is now compatible with the forthcoming Jython 2.5\n    release.\n\nThere are many other new features and improvements in this release, including\ntwo major performance boosts: strings marked for translation using\n:doc:`Django's internationalization system </topics/i18n/index>` now consume far less\nmemory, and Django's internal dispatcher -- which is invoked frequently during\nrequest/response processing and when working with Django's object-relational\nmapper -- is now significantly faster.\n\n.. _GeoDjango: http://geodjango.org/\n.. _Geographic Information Systems: http://en.wikipedia.org/wiki/Geographic_information_system\n.. _Its documentation: http://geodjango.org/docs/\n.. _Jython: http://www.jython.org/\n\n\nThe Django 1.0 roadmap\n======================\n\nOne of the primary goals of this alpha release is to focus attention\non the remaining features to be implemented for Django 1.0, and on the\nbugs that need to be resolved before the final release. Following this\nrelease, we'll be conducting a series of development sprints building\nup to the beta and release-candidate stages, followed soon after by\nDjango 1.0. The timeline is projected to be:\n\n* **August 14, 2008: Django 1.0 beta release.** Past this point Django\n  will be in a \"feature freeze\" for the 1.0 release; after Django 1.0\n  beta, the development focus will be solely on bug fixes and\n  stabilization.\n\n* August 15, 2008: Sprint (based in Austin, Texas, USA, and online).\n\n* August 17, 2008: Sprint (based in Tel Aviv, Israel, and online).\n\n* **August 21, 2008: Django 1.0 release candidate 1.** At this point,\n  all strings marked for translation within Django's codebase will be\n  frozen, to provide contributors time to check and finalize all of\n  Django's bundled translation files prior to the final 1.0 release.\n\n* August 22, 2008: Sprint (based in Portland, Oregon, USA, and online).\n\n* **August 26, 2008: Django 1.0 release candidate 2.**\n\n* August 30, 2008: Sprint (based in London, England, UK, and online).\n\n* **September 2, 2008: Django 1.0 final release.** The official Django\n  1.0 release party will take place during the first-ever DjangoCon,\n  to be held in Mountain View, California, USA, September 6-7.\n\nOf course, like any estimated timeline, this is subject to change as\nrequirements dictate. The latest information will always be available\non the Django project wiki:\n\n* https://code.djangoproject.com/wiki/VersionOneRoadmap\n\n\nWhat you can do to help\n=======================\n\nIn order to provide a high-quality 1.0 release, we need your\nhelp. Although this alpha release is, again, *not* intended for\nproduction use, you can help the Django team by trying out the alpha\ncodebase in a safe test environment and reporting any bugs or issues\nyou encounter. The Django ticket tracker is the central place to\nsearch for open issues:\n\n* https://code.djangoproject.com/timeline\n\nPlease open new tickets if no existing ticket corresponds to a problem\nyou're running into.\n\nAdditionally, discussion of Django development, including progress\ntoward the 1.0 release, takes place daily on the django-developers\nmailing list:\n\n* http://groups.google.com/group/django-developers\n\n...and in the ``#django-dev`` IRC channel on ``irc.freenode.net``. If\nyou're interested in helping out with Django's development, feel free\nto join the discussions there.\n\nDjango's online documentation also includes pointers on how to\ncontribute to Django:\n\n* :doc:`contributing to Django </internals/contributing/index>`\n\nContributions on any level -- developing code, writing\ndocumentation or simply triaging tickets and helping to test proposed\nbugfixes -- are always welcome and appreciated.\n"
  },
  {
    "path": "Django-1.5.1/docs/releases/1.0-beta-2.txt",
    "content": "===============================\nDjango 1.0 beta 2 release notes\n===============================\n\nWelcome to Django 1.0 beta 2!\n\nThis is the fourth in a series of preview/development releases leading\nup to the eventual release of Django 1.0, currently scheduled to take\nplace in early September 2008. This releases is primarily targeted at\ndevelopers who are interested in testing the Django codebase and\nhelping to identify and resolve bugs prior to the final 1.0 release.\n\nAs such, this release is *not* intended for production use, and any\nsuch use is discouraged.\n\nWhat's new in Django 1.0 beta 2\n===============================\n\nDjango's development trunk has been the site of nearly constant\nactivity over the past year, with several major new features landing\nsince the 0.96 release.  For features which were new as of Django 1.0\nalpha 1, see :doc:`the 1.0 alpha 1 release notes\n</releases/1.0-alpha-1>`. For features which were new as of Django 1.0\nalpha 2, see :doc:`the 1.0 alpha 2 release notes\n</releases/1.0-alpha-2>`. For features which were new as of Django 1.0\nbeta 1, see :doc:`the 1.0 beta 1 release notes </releases/1.0-beta>`.\n\nThis beta release includes two major features:\n\nRefactored ``django.contrib.comments``\n    As part of a Google Summer of Code project, Thejaswi Puthraya\n    carried out a major rewrite and refactoring of Django's bundled\n    comment system, greatly increasing its flexibility and\n    customizability. :doc:`Full documentation\n    </ref/contrib/comments/index>` is available, as well as an\n    upgrade guide if you were using\n    the previous incarnation of the comments application..\n\nRefactored documentation\n    Django's bundled and online documentation has also been\n    significantly refactored; the new documentation system uses\n    `Sphinx`_ to build the docs and handle such niceties as topical\n    indexes, reference documentation and cross-references within the\n    docs. You can check out the new documentation `online`_ or, if you\n    have Sphinx installed, build the HTML yourself from the\n    documentation files bundled with Django.\n\n.. _Sphinx: http://sphinx.pocoo.org/\n.. _online: https://docs.djangoproject.com/\n\nAlong with these new features, the Django team has also been hard at\nwork polishing Django's codebase for the final 1.0 release; this beta\nrelease contains a large number of smaller improvements and bugfixes\nfrom the ongoing push to 1.0.\n\nAlso, as part of its ongoing deprecation process, Django's old\nform-handling system has been removed; this means ``django.oldforms``\nno longer exists, and its various API hooks (such as automatic\nmanipulators) are no longer present in Django. This system has been\ncompletely replaced by :doc:`the new form-handling system\n</topics/forms/index>` in ``django.forms``.\n\n\nThe Django 1.0 roadmap\n======================\n\nOne of the primary goals of this beta release is to focus attention on\nthe remaining features to be implemented for Django 1.0, and on the\nbugs that need to be resolved before the final release. As of this\nbeta release, Django is in its final \"feature freeze\" for 1.0; feature\nrequests will be deferred to later releases, and the development\neffort will be focused solely on bugfixing and stability. Django is\nalso now in a \"string freeze\"; translatable strings (labels, error\nmessages, etc.) in Django's codebase will not be changed prior to the\nrelease, in order to allow our translators to produce the final 1.0\nversion of Django's translation files.\n\nFollowing this release, we'll be conducting a final development sprint\non August 30, 2008, based in London and coordinated online; the goal\nof this sprint will be to squash as many bugs as possible in\nanticipation of the final 1.0 release, which is currently targeted for\n**September 2, 2008**. The official Django 1.0 release party will take\nplace during the first-ever DjangoCon, to be held in Mountain View,\nCalifornia, USA, September 6-7.\n\n\nWhat you can do to help\n=======================\n\nIn order to provide a high-quality 1.0 release, we need your\nhelp. Although this beta release is, again, *not* intended for\nproduction use, you can help the Django team by trying out the beta\ncodebase in a safe test environment and reporting any bugs or issues\nyou encounter. The Django ticket tracker is the central place to\nsearch for open issues:\n\n* https://code.djangoproject.com/timeline\n\nPlease open new tickets if no existing ticket corresponds to a problem\nyou're running into.\n\nAdditionally, discussion of Django development, including progress\ntoward the 1.0 release, takes place daily on the django-developers\nmailing list:\n\n* http://groups.google.com/group/django-developers\n\n...and in the ``#django-dev`` IRC channel on ``irc.freenode.net``. If\nyou're interested in helping out with Django's development, feel free\nto join the discussions there.\n\nDjango's online documentation also includes pointers on how to\ncontribute to Django:\n\n* :doc:`contributing to Django </internals/contributing/index>`\n\nContributions on any level -- developing code, writing\ndocumentation or simply triaging tickets and helping to test proposed\nbugfixes -- are always welcome and appreciated.\n"
  },
  {
    "path": "Django-1.5.1/docs/releases/1.0-beta.txt",
    "content": "===============================\nDjango 1.0 beta 1 release notes\n===============================\n\nWelcome to Django 1.0 beta 1!\n\nThis is the third in a series of preview/development releases leading\nup to the eventual release of Django 1.0, currently scheduled to take\nplace in early September 2008. This releases is primarily targeted at\ndevelopers who are interested in testing the Django codebase and\nhelping to identify and resolve bugs prior to the final 1.0 release.\n\nAs such, this release is *not* intended for production use, and any\nsuch use is discouraged.\n\nWhat's new in Django 1.0 beta 1\n===============================\n\nDjango's development trunk has been the site of nearly constant activity over\nthe past year, with several major new features landing since the 0.96 release.\nFor features which were new as of Django 1.0 alpha 1, see :doc:`the 1.0 alpha 1\nrelease notes </releases/1.0-alpha-1>`. For features which were new as of Django\n1.0 alpha 2, see :doc:`the 1.0 alpha 2 release notes </releases/1.0-alpha-2>`.\n\nThis beta release does not contain any major new features, but does\ninclude several smaller updates and improvements to Django:\n\nGeneric relations in forms and admin\n    Classes are now included in ``django.contrib.contenttypes`` which\n    can be used to support generic relations in both the admin\n    interface and in end-user forms. See :ref:`the documentation for\n    generic relations <generic-relations>` for details.\n\nImproved flexibility in the admin\n    Following up on the refactoring of Django's administrative\n    interface (``django.contrib.admin``), introduced in Django 1.0\n    alpha 1, two new hooks have been added to allow customized pre-\n    and post-save handling of model instances in the admin. Full\n    details are in :doc:`the admin documentation </ref/contrib/admin/index>`.\n\n``INSERT``/``UPDATE`` distinction\n    Although Django's default behavior of having a model's ``save()``\n    method automatically determine whether to perform an ``INSERT`` or\n    an ``UPDATE`` at the SQL level is suitable for the majority of\n    cases, there are occasional situations where forcing one or the\n    other is useful. As a result, models can now support an additional\n    parameter to ``save()`` which can force a specific\n    operation. Consult the database API documentation for details\n    and important notes about appropriate use of this parameter.\n\nSplit ``CacheMiddleware``\n   Django's ``CacheMiddleware`` has been split into three classes:\n   ``CacheMiddleware`` itself still exists and retains all of its\n   previous functionality, but it is now built from two separate\n   middleware classes which handle the two parts of caching (inserting\n   into and reading from the cache) separately, offering additional\n   flexibility for situations where combining these functions into a\n   single middleware posed problems. Full details, including updated\n   notes on appropriate use, are in \n   :doc:`the caching documentation </topics/cache>`.\n\nRemoval of deprecated features\n    A number of features and methods which had previously been marked\n    as deprecated, and which were scheduled for removal prior to the\n    1.0 release, are no longer present in Django. These include\n    imports of the form library from ``django.newforms`` (now located\n    simply at ``django.forms``), the ``form_for_model`` and\n    ``form_for_instance`` helper functions (which have been replaced\n    by ``ModelForm``) and a number of deprecated features which were\n    replaced by the dispatcher, file-uploading and file-storage\n    refactorings introduced in the Django 1.0 alpha releases. A full\n    list of these and all other backwards-incompatible changes is\n    available on `the Django wiki`_.\n\nA number of other improvements and bugfixes have also been included:\nsome tricky cases involving case-sensitivity in differing MySQL\ncollations have been resolved, Windows packaging and installation has\nbeen improved and the method by which Django generates unique session\nidentifiers has been made much more robust.\n\n.. _the documentation for generic relations: ../contenttypes/#generic-relations\n.. _the Django wiki: https://code.djangoproject.com/wiki/BackwardsIncompatibleChanges#Removedseveralmoredeprecatedfeaturesfor1.0\n\n\nThe Django 1.0 roadmap\n======================\n\nOne of the primary goals of this beta release is to focus attention on\nthe remaining features to be implemented for Django 1.0, and on the\nbugs that need to be resolved before the final release. Following this\nrelease, we'll be conducting a series of development sprints building\nup to the release-candidate stage, followed soon after by Django\n1.0. The timeline is projected to be:\n\n* August 15, 2008: Sprint (based in Austin, Texas, USA, and online).\n\n* August 17, 2008: Sprint (based in Tel Aviv, Israel, and online).\n\n* **August 21, 2008: Django 1.0 release candidate 1.** At this point,\n  all strings marked for translation within Django's codebase will be\n  frozen, to provide contributors time to check and finalize all of\n  Django's bundled translation files prior to the final 1.0 release.\n\n* August 22, 2008: Sprint (based in Portland, Oregon, USA, and online).\n\n* **August 26, 2008: Django 1.0 release candidate 2.**\n\n* August 30, 2008: Sprint (based in London, England, UK, and online).\n\n* **September 2, 2008: Django 1.0 final release.** The official Django\n  1.0 release party will take place during the first-ever DjangoCon,\n  to be held in Mountain View, California, USA, September 6-7.\n\nOf course, like any estimated timeline, this is subject to change as\nrequirements dictate. The latest information will always be available\non the Django project wiki:\n\n* https://code.djangoproject.com/wiki/VersionOneRoadmap\n\n\nWhat you can do to help\n=======================\n\nIn order to provide a high-quality 1.0 release, we need your\nhelp. Although this beta release is, again, *not* intended for\nproduction use, you can help the Django team by trying out the beta\ncodebase in a safe test environment and reporting any bugs or issues\nyou encounter. The Django ticket tracker is the central place to\nsearch for open issues:\n\n* https://code.djangoproject.com/timeline\n\nPlease open new tickets if no existing ticket corresponds to a problem\nyou're running into.\n\nAdditionally, discussion of Django development, including progress\ntoward the 1.0 release, takes place daily on the django-developers\nmailing list:\n\n* http://groups.google.com/group/django-developers\n\n...and in the ``#django-dev`` IRC channel on ``irc.freenode.net``. If\nyou're interested in helping out with Django's development, feel free\nto join the discussions there.\n\nDjango's online documentation also includes pointers on how to\ncontribute to Django:\n\n* :doc:`contributing to Django </internals/contributing/index>`\n\nContributions on any level -- developing code, writing\ndocumentation or simply triaging tickets and helping to test proposed\nbugfixes -- are always welcome and appreciated.\n"
  },
  {
    "path": "Django-1.5.1/docs/releases/1.0-porting-guide.txt",
    "content": "=========================================\nPorting your apps from Django 0.96 to 1.0\n=========================================\n\n.. highlight:: python\n\nDjango 1.0 breaks compatibility with 0.96 in some areas.\n\nThis guide will help you port 0.96 projects and apps to 1.0. The first part of\nthis document includes the common changes needed to run with 1.0. If after going\nthrough the first part your code still breaks, check the section `Less-common\nChanges`_ for a list of a bunch of less-common compatibility issues.\n\n.. seealso::\n\n    The :doc:`1.0 release notes </releases/1.0>`. That document explains the new\n    features in 1.0 more deeply; the porting guide is more concerned with\n    helping you quickly update your code.\n\nCommon changes\n==============\n\nThis section describes the changes between 0.96 and 1.0 that most users will\nneed to make.\n\nUse Unicode\n-----------\n\nChange string literals (``'foo'``) into Unicode literals (``u'foo'``). Django\nnow uses Unicode strings throughout. In most places, raw strings will continue\nto work, but updating to use Unicode literals will prevent some obscure\nproblems.\n\nSee :doc:`/ref/unicode` for full details.\n\nModels\n------\n\nCommon changes to your models file:\n\nRename ``maxlength`` to ``max_length``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nRename your ``maxlength`` argument to ``max_length`` (this was changed to be\nconsistent with form fields):\n\nReplace ``__str__`` with ``__unicode__``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nReplace your model's ``__str__`` function with a ``__unicode__`` method, and\nmake sure you `use Unicode`_ (``u'foo'``) in that method.\n\nRemove ``prepopulated_from``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nRemove the ``prepopulated_from`` argument on model fields. It's no longer valid\nand has been moved to the ``ModelAdmin`` class in ``admin.py``. See `the\nadmin`_, below, for more details about changes to the admin.\n\nRemove ``core``\n~~~~~~~~~~~~~~~\n\nRemove the ``core`` argument from your model fields. It is no longer\nnecessary, since the equivalent functionality (part of :ref:`inline editing\n<admin-inlines>`) is handled differently by the admin interface now. You don't\nhave to worry about inline editing until you get to `the admin`_ section,\nbelow. For now, remove all references to ``core``.\n\nReplace ``class Admin:`` with ``admin.py``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nRemove all your inner ``class Admin`` declarations from your models. They won't\nbreak anything if you leave them, but they also won't do anything. To register\napps with the admin you'll move those declarations to an ``admin.py`` file;\nsee `the admin`_ below for more details.\n\n.. seealso::\n\n    A contributor to djangosnippets__ has written a script that'll `scan your\n    models.py and generate a corresponding admin.py`__.\n\n    __ http://www.djangosnippets.org/\n    __ http://www.djangosnippets.org/snippets/603/\n\nExample\n~~~~~~~\n\nBelow is an example ``models.py`` file with all the changes you'll need to make:\n\nOld (0.96) ``models.py``::\n\n    class Author(models.Model):\n        first_name = models.CharField(maxlength=30)\n        last_name = models.CharField(maxlength=30)\n        slug = models.CharField(maxlength=60, prepopulate_from=('first_name', 'last_name'))\n\n        class Admin:\n            list_display = ['first_name', 'last_name']\n\n        def __str__(self):\n            return '%s %s' % (self.first_name, self.last_name)\n\nNew (1.0) ``models.py``::\n\n    class Author(models.Model):\n        first_name = models.CharField(max_length=30)\n        last_name = models.CharField(max_length=30)\n        slug = models.CharField(max_length=60)\n\n        def __unicode__(self):\n            return u'%s %s' % (self.first_name, self.last_name)\n\nNew (1.0) ``admin.py``::\n\n    from django.contrib import admin\n    from models import Author\n\n    class AuthorAdmin(admin.ModelAdmin):\n        list_display = ['first_name', 'last_name']\n        prepopulated_fields = {\n            'slug': ('first_name', 'last_name')\n        }\n\n    admin.site.register(Author, AuthorAdmin)\n\nThe Admin\n---------\n\nOne of the biggest changes in 1.0 is the new admin. The Django administrative\ninterface (``django.contrib.admin``) has been completely refactored; admin\ndefinitions are now completely decoupled from model definitions, the framework\nhas been rewritten to use Django's new form-handling library and redesigned with\nextensibility and customization in mind.\n\nPractically, this means you'll need to rewrite all of your ``class Admin``\ndeclarations. You've already seen in `models`_ above how to replace your ``class\nAdmin`` with a ``admin.site.register()`` call in an ``admin.py`` file. Below are\nsome more details on how to rewrite that ``Admin`` declaration into the new\nsyntax.\n\nUse new inline syntax\n~~~~~~~~~~~~~~~~~~~~~\n\nThe new ``edit_inline`` options have all been moved to ``admin.py``. Here's an\nexample:\n\nOld (0.96)::\n\n    class Parent(models.Model):\n        ...\n\n    class Child(models.Model):\n        parent = models.ForeignKey(Parent, edit_inline=models.STACKED, num_in_admin=3)\n\n\nNew (1.0)::\n\n    class ChildInline(admin.StackedInline):\n        model = Child\n        extra = 3\n\n    class ParentAdmin(admin.ModelAdmin):\n        model = Parent\n        inlines = [ChildInline]\n\n    admin.site.register(Parent, ParentAdmin)\n\nSee :ref:`admin-inlines` for more details.\n\nSimplify ``fields``, or use ``fieldsets``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe old ``fields`` syntax was quite confusing, and has been simplified. The old\nsyntax still works, but you'll need to use ``fieldsets`` instead.\n\nOld (0.96)::\n\n    class ModelOne(models.Model):\n        ...\n\n        class Admin:\n            fields = (\n                (None, {'fields': ('foo','bar')}),\n            )\n\n    class ModelTwo(models.Model):\n        ...\n\n        class Admin:\n            fields = (\n                ('group1', {'fields': ('foo','bar'),   'classes': 'collapse'}),\n                ('group2', {'fields': ('spam','eggs'), 'classes': 'collapse wide'}),\n            )\n\n\nNew (1.0)::\n\n    class ModelOneAdmin(admin.ModelAdmin):\n        fields = ('foo', 'bar')\n\n    class ModelTwoAdmin(admin.ModelAdmin):\n        fieldsets = (\n            ('group1', {'fields': ('foo','bar'),   'classes': 'collapse'}),\n            ('group2', {'fields': ('spam','eggs'), 'classes': 'collapse wide'}),\n        )\n\n\n.. seealso::\n\n    * More detailed information about the changes and the reasons behind them\n      can be found on the `NewformsAdminBranch wiki page`__\n\n    * The new admin comes with a ton of new features; you can read about them in\n      the :doc:`admin documentation </ref/contrib/admin/index>`.\n\n    __ https://code.djangoproject.com/wiki/NewformsAdminBranch\n\nURLs\n----\n\nUpdate your root ``urls.py``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nIf you're using the admin site, you need to update your root ``urls.py``.\n\nOld (0.96) ``urls.py``::\n\n    from django.conf.urls.defaults import *\n\n    urlpatterns = patterns('',\n        (r'^admin/', include('django.contrib.admin.urls')),\n\n        # ... the rest of your URLs here ...\n    )\n\nNew (1.0) ``urls.py``::\n\n    from django.conf.urls.defaults import *\n\n    # The next two lines enable the admin and load each admin.py file:\n    from django.contrib import admin\n    admin.autodiscover()\n\n    urlpatterns = patterns('',\n        (r'^admin/(.*)', admin.site.root),\n\n        # ... the rest of your URLs here ...\n    )\n\nViews\n-----\n\nUse ``django.forms`` instead of ``newforms``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nReplace ``django.newforms`` with ``django.forms`` -- Django 1.0 renamed the\n``newforms`` module (introduced in 0.96) to plain old ``forms``. The\n``oldforms`` module was also removed.\n\nIf you're already using the ``newforms`` library, and you used our recommended\n``import`` statement syntax, all you have to do is change your import\nstatements.\n\nOld::\n\n    from django import newforms as forms\n\nNew::\n\n    from django import forms\n\nIf you're using the old forms system (formerly known as ``django.forms`` and\n``django.oldforms``), you'll have to rewrite your forms. A good place to start\nis the :doc:`forms documentation </topics/forms/index>`\n\nHandle uploaded files using the new API\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nReplace use of uploaded files -- that is, entries in ``request.FILES`` -- as\nsimple dictionaries with the new\n:class:`~django.core.files.uploadedfile.UploadedFile`. The old dictionary\nsyntax no longer works.\n\nThus, in a view like::\n\n      def my_view(request):\n          f = request.FILES['file_field_name']\n          ...\n\n...you'd need to make the following changes:\n\n===================== =====================\nOld (0.96)            New (1.0)\n===================== =====================\n``f['content']``      ``f.read()``\n``f['filename']``     ``f.name``\n``f['content-type']`` ``f.content_type``\n===================== =====================\n\nWork with file fields using the new API\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe internal implementation of :class:`django.db.models.FileField` have changed.\nA visible result of this is that the way you access special attributes (URL,\nfilename, image size, etc) of these model fields has changed. You will need to\nmake the following changes, assuming your model's\n:class:`~django.db.models.FileField` is called ``myfile``:\n\n=================================== ========================\nOld (0.96)                           New (1.0)\n=================================== ========================\n``myfile.get_content_filename()``   ``myfile.content.path``\n``myfile.get_content_url()``        ``myfile.content.url``\n``myfile.get_content_size()``       ``myfile.content.size``\n``myfile.save_content_file()``      ``myfile.content.save()``\n``myfile.get_content_width()``      ``myfile.content.width``\n``myfile.get_content_height()``     ``myfile.content.height``\n=================================== ========================\n\nNote that the ``width`` and ``height`` attributes only make sense for\n:class:`~django.db.models.ImageField` fields. More details can be found in the\n:doc:`model API </ref/models/fields>` documentation.\n\nUse ``Paginator`` instead of ``ObjectPaginator``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe ``ObjectPaginator`` in 0.96 has been removed and replaced with an improved\nversion, :class:`django.core.paginator.Paginator`.\n\nTemplates\n---------\n\nLearn to love autoescaping\n~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nBy default, the template system now automatically HTML-escapes the output of\nevery variable. To learn more, see :ref:`automatic-html-escaping`.\n\nTo disable auto-escaping for an individual variable, use the :tfilter:`safe`\nfilter:\n\n.. code-block:: html+django\n\n      This will be escaped: {{ data }}\n      This will not be escaped: {{ data|safe }}\n\nTo disable auto-escaping for an entire template, wrap the template (or just a\nparticular section of the template) in the :ttag:`autoescape` tag:\n\n.. code-block:: html+django\n\n      {% autoescape off %}\n         ... unescaped template content here ...\n      {% endautoescape %}\n\nLess-common changes\n===================\n\nThe following changes are smaller, more localized changes. They should only\naffect more advanced users, but it's probably worth reading through the list and\nchecking your code for these things.\n\nSignals\n-------\n\n* Add ``**kwargs`` to any registered signal handlers.\n\n* Connect, disconnect, and send signals via methods on the\n  :class:`~django.dispatch.Signal` object instead of through module methods in\n  ``django.dispatch.dispatcher``.\n\n* Remove any use of the ``Anonymous`` and ``Any`` sender options; they no longer\n  exist. You can still receive signals sent by any sender by using\n  ``sender=None``\n\n* Make any custom signals you've declared into instances of\n  :class:`django.dispatch.Signal` instead of anonymous objects.\n\nHere's quick summary of the code changes you'll need to make:\n\n=================================================  ======================================\nOld (0.96)                                         New (1.0)\n=================================================  ======================================\n``def callback(sender)``                           ``def callback(sender, **kwargs)``\n``sig = object()``                                 ``sig = django.dispatch.Signal()``\n``dispatcher.connect(callback, sig)``              ``sig.connect(callback)``\n``dispatcher.send(sig, sender)``                   ``sig.send(sender)``\n``dispatcher.connect(callback, sig, sender=Any)``  ``sig.connect(callback, sender=None)``\n=================================================  ======================================\n\nComments\n--------\n\nIf you were using Django 0.96's ``django.contrib.comments`` app, you'll need to\nupgrade to the new comments app introduced in 1.0. See the upgrade guide\nfor details.\n\nTemplate tags\n-------------\n\n:ttag:`spaceless` tag\n~~~~~~~~~~~~~~~~~~~~~\n\nThe spaceless template tag now removes *all* spaces between HTML tags, instead\nof preserving a single space.\n\nLocal flavors\n-------------\n\nU.S. local flavor\n~~~~~~~~~~~~~~~~~\n\n``django.contrib.localflavor.usa`` has been renamed to\n``django.contrib.localflavor.us``. This change was made to match the naming\nscheme of other local flavors. To migrate your code, all you need to do is\nchange the imports.\n\nSessions\n--------\n\nGetting a new session key\n~~~~~~~~~~~~~~~~~~~~~~~~~\n\n``SessionBase.get_new_session_key()`` has been renamed to\n``_get_new_session_key()``. ``get_new_session_object()`` no longer exists.\n\nFixtures\n--------\n\nLoading a row no longer calls ``save()``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nPreviously, loading a row automatically ran the model's ``save()`` method. This\nis no longer the case, so any fields (for example: timestamps) that were\nauto-populated by a ``save()`` now need explicit values in any fixture.\n\nSettings\n--------\n\nBetter exceptions\n~~~~~~~~~~~~~~~~~\n\nThe old :exc:`~exceptions.EnvironmentError` has split into an\n:exc:`~exceptions.ImportError` when Django fails to find the settings module\nand a :exc:`~exceptions.RuntimeError` when you try to reconfigure settings\nafter having already used them.\n\n:setting:`LOGIN_URL` has moved\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe :setting:`LOGIN_URL` constant moved from ``django.contrib.auth`` into the\n``settings`` module. Instead of using ``from django.contrib.auth import\nLOGIN_URL`` refer to :setting:`settings.LOGIN_URL <LOGIN_URL>`.\n\n:setting:`APPEND_SLASH` behavior has been updated\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nIn 0.96, if a URL didn't end in a slash or have a period in the final\ncomponent of its path, and :setting:`APPEND_SLASH` was True, Django would\nredirect to the same URL, but with a slash appended to the end. Now, Django\nchecks to see whether the pattern without the trailing slash would be matched\nby something in your URL patterns. If so, no redirection takes place, because\nit is assumed you deliberately wanted to catch that pattern.\n\nFor most people, this won't require any changes. Some people, though, have URL\npatterns that look like this::\n\n    r'/some_prefix/(.*)$'\n\nPreviously, those patterns would have been redirected to have a trailing\nslash. If you always want a slash on such URLs, rewrite the pattern as::\n\n    r'/some_prefix/(.*/)$'\n\nSmaller model changes\n---------------------\n\nDifferent exception from ``get()``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nManagers now return a :exc:`~django.core.exceptions.MultipleObjectsReturned`\nexception instead of :exc:`~exceptions.AssertionError`:\n\nOld (0.96)::\n\n    try:\n        Model.objects.get(...)\n    except AssertionError:\n        handle_the_error()\n\nNew (1.0)::\n\n  try:\n      Model.objects.get(...)\n  except Model.MultipleObjectsReturned:\n      handle_the_error()\n\n``LazyDate`` has been fired\n~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe ``LazyDate`` helper class no longer exists.\n\nDefault field values and query arguments can both be callable objects, so\ninstances of ``LazyDate`` can be replaced with a reference to ``datetime.datetime.now``:\n\nOld (0.96)::\n\n    class Article(models.Model):\n        title = models.CharField(maxlength=100)\n        published = models.DateField(default=LazyDate())\n\nNew (1.0)::\n\n    import datetime\n\n    class Article(models.Model):\n        title = models.CharField(max_length=100)\n        published = models.DateField(default=datetime.datetime.now)\n\n``DecimalField`` is new, and ``FloatField`` is now a proper float\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nOld (0.96)::\n\n    class MyModel(models.Model):\n        field_name = models.FloatField(max_digits=10, decimal_places=3)\n        ...\n\nNew (1.0)::\n\n    class MyModel(models.Model):\n        field_name = models.DecimalField(max_digits=10, decimal_places=3)\n        ...\n\nIf you forget to make this change, you will see errors about ``FloatField``\nnot taking a ``max_digits`` attribute in ``__init__``, because the new\n``FloatField`` takes no precision-related arguments.\n\nIf you're using MySQL or PostgreSQL, no further changes are needed. The\ndatabase column types for ``DecimalField`` are the same as for the old\n``FloatField``.\n\nIf you're using SQLite, you need to force the database to view the\nappropriate columns as decimal types, rather than floats. To do this, you'll\nneed to reload your data. Do this after you have made the change to using\n``DecimalField`` in your code and updated the Django code.\n\n.. warning::\n\n  **Back up your database first!**\n\n  For SQLite, this means making a copy of the single file that stores the\n  database (the name of that file is the ``DATABASE_NAME`` in your\n  settings.py file).\n\nTo upgrade each application to use a ``DecimalField``, you can do the\nfollowing, replacing ``<app>`` in the code below with each app's name:\n\n.. code-block:: bash\n\n      $ ./manage.py dumpdata --format=xml <app> > data-dump.xml\n      $ ./manage.py reset <app>\n      $ ./manage.py loaddata data-dump.xml\n\nNotes:\n\n1. It's important that you remember to use XML format in the first step of\n   this process. We are exploiting a feature of the XML data dumps that makes\n   porting floats to decimals with SQLite possible.\n\n2. In the second step you will be asked to confirm that you are prepared to\n   lose the data for the application(s) in question. Say yes; we'll restore\n   this data in the third step, of course.\n\n3. ``DecimalField`` is not used in any of the apps shipped with Django prior\n   to this change being made, so you do not need to worry about performing\n   this procedure for any of the standard Django models.\n\nIf something goes wrong in the above process, just copy your backed up\ndatabase file over the original file and start again.\n\nInternationalization\n--------------------\n\n:func:`django.views.i18n.set_language` now requires a POST request\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nPreviously, a GET request was used. The old behavior meant that state (the\nlocale used to display the site) could be changed by a GET request, which is\nagainst the HTTP specification's recommendations. Code calling this view must\nensure that a POST request is now made, instead of a GET. This means you can\nno longer use a link to access the view, but must use a form submission of\nsome kind (e.g. a button).\n\n``_()`` is no longer in builtins\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n``_()`` (the callable object whose name is a single underscore) is no longer\nmonkeypatched into builtins -- that is, it's no longer available magically in\nevery module.\n\nIf you were previously relying on ``_()`` always being present, you should now\nexplicitly import ``ugettext`` or ``ugettext_lazy``, if appropriate, and alias\nit to ``_`` yourself::\n\n    from django.utils.translation import ugettext as _\n\nHTTP request/response objects\n-----------------------------\n\nDictionary access to ``HttpRequest``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n``HttpRequest`` objects no longer directly support dictionary-style\naccess; previously, both ``GET`` and ``POST`` data were directly\navailable on the ``HttpRequest`` object (e.g., you could check for a\npiece of form data by using ``if 'some_form_key' in request`` or by\nreading ``request['some_form_key']``. This is no longer supported; if\nyou need access to the combined ``GET`` and ``POST`` data, use\n``request.REQUEST`` instead.\n\nIt is strongly suggested, however, that you always explicitly look in\nthe appropriate dictionary for the type of request you expect to\nreceive (``request.GET`` or ``request.POST``); relying on the combined\n``request.REQUEST`` dictionary can mask the origin of incoming data.\n\nAccessing ``HTTPResponse`` headers\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n``django.http.HttpResponse.headers`` has been renamed to ``_headers`` and\n:class:`~django.http.HttpResponse` now supports containment checking directly.\nSo use ``if header in response:`` instead of ``if header in response.headers:``.\n\nGeneric relations\n-----------------\n\nGeneric relations have been moved out of core\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe generic relation classes -- ``GenericForeignKey`` and ``GenericRelation``\n-- have moved into the :mod:`django.contrib.contenttypes` module.\n\nTesting\n-------\n\n:meth:`django.test.client.Client.login` has changed\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nOld (0.96)::\n\n    from django.test import Client\n    c = Client()\n    c.login('/path/to/login','myuser','mypassword')\n\nNew (1.0)::\n\n    # ... same as above, but then:\n    c.login(username='myuser', password='mypassword')\n\nManagement commands\n-------------------\n\nRunning management commands from your code\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n:mod:`django.core.management` has been greatly refactored.\n\nCalls to management services in your code now need to use\n``call_command``. For example, if you have some test code that calls flush and\nload_data::\n\n      from django.core import management\n      management.flush(verbosity=0, interactive=False)\n      management.load_data(['test_data'], verbosity=0)\n\n...you'll need to change this code to read::\n\n      from django.core import management\n      management.call_command('flush', verbosity=0, interactive=False)\n      management.call_command('loaddata', 'test_data', verbosity=0)\n\nSubcommands must now precede options\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n``django-admin.py`` and ``manage.py`` now require subcommands to precede\noptions. So:\n\n.. code-block:: bash\n\n      $ django-admin.py --settings=foo.bar runserver\n\n...no longer works and should be changed to:\n\n.. code-block:: bash\n\n      $ django-admin.py runserver --settings=foo.bar\n\nSyndication\n-----------\n\n``Feed.__init__`` has changed\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe ``__init__()`` method of the syndication framework's ``Feed`` class now\ntakes an ``HttpRequest`` object as its second parameter, instead of the feed's\nURL. This allows the syndication framework to work without requiring the sites\nframework. This only affects code that subclasses ``Feed`` and overrides the\n``__init__()`` method, and code that calls ``Feed.__init__()`` directly.\n\nData structures\n---------------\n\n``SortedDictFromList`` is gone\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n``django.newforms.forms.SortedDictFromList`` was removed.\n:class:`django.utils.datastructures.SortedDict` can now be instantiated with\na sequence of tuples.\n\nTo update your code:\n\n1. Use :class:`django.utils.datastructures.SortedDict` wherever you were\n   using ``django.newforms.forms.SortedDictFromList``.\n\n2. Because ``django.utils.datastructures.SortedDict.copy`` doesn't\n   return a deepcopy as ``SortedDictFromList.copy()`` did, you will need\n   to update your code if you were relying on a deepcopy. Do this by using\n   ``copy.deepcopy`` directly.\n\nDatabase backend functions\n--------------------------\n\nDatabase backend functions have been renamed\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nAlmost *all* of the database backend-level functions have been renamed and/or\nrelocated. None of these were documented, but you'll need to change your code\nif you're using any of these functions, all of which are in :mod:`django.db`:\n\n=======================================  ===================================================\nOld (0.96)                               New (1.0)\n=======================================  ===================================================\n``backend.get_autoinc_sql``              ``connection.ops.autoinc_sql``\n``backend.get_date_extract_sql``         ``connection.ops.date_extract_sql``\n``backend.get_date_trunc_sql``           ``connection.ops.date_trunc_sql``\n``backend.get_datetime_cast_sql``        ``connection.ops.datetime_cast_sql``\n``backend.get_deferrable_sql``           ``connection.ops.deferrable_sql``\n``backend.get_drop_foreignkey_sql``      ``connection.ops.drop_foreignkey_sql``\n``backend.get_fulltext_search_sql``      ``connection.ops.fulltext_search_sql``\n``backend.get_last_insert_id``           ``connection.ops.last_insert_id``\n``backend.get_limit_offset_sql``         ``connection.ops.limit_offset_sql``\n``backend.get_max_name_length``          ``connection.ops.max_name_length``\n``backend.get_pk_default_value``         ``connection.ops.pk_default_value``\n``backend.get_random_function_sql``      ``connection.ops.random_function_sql``\n``backend.get_sql_flush``                ``connection.ops.sql_flush``\n``backend.get_sql_sequence_reset``       ``connection.ops.sequence_reset_sql``\n``backend.get_start_transaction_sql``    ``connection.ops.start_transaction_sql``\n``backend.get_tablespace_sql``           ``connection.ops.tablespace_sql``\n``backend.quote_name``                   ``connection.ops.quote_name``\n``backend.get_query_set_class``          ``connection.ops.query_set_class``\n``backend.get_field_cast_sql``           ``connection.ops.field_cast_sql``\n``backend.get_drop_sequence``            ``connection.ops.drop_sequence_sql``\n``backend.OPERATOR_MAPPING``             ``connection.operators``\n``backend.allows_group_by_ordinal``      ``connection.features.allows_group_by_ordinal``\n``backend.allows_unique_and_pk``         ``connection.features.allows_unique_and_pk``\n``backend.autoindexes_primary_keys``     ``connection.features.autoindexes_primary_keys``\n``backend.needs_datetime_string_cast``   ``connection.features.needs_datetime_string_cast``\n``backend.needs_upper_for_iops``         ``connection.features.needs_upper_for_iops``\n``backend.supports_constraints``         ``connection.features.supports_constraints``\n``backend.supports_tablespaces``         ``connection.features.supports_tablespaces``\n``backend.uses_case_insensitive_names``  ``connection.features.uses_case_insensitive_names``\n``backend.uses_custom_queryset``         ``connection.features.uses_custom_queryset``\n=======================================  ===================================================\n"
  },
  {
    "path": "Django-1.5.1/docs/releases/1.0.1.txt",
    "content": "==========================\nDjango 1.0.1 release notes\n==========================\n\nWelcome to Django 1.0.1!\n\nThis is the first \"bugfix\" release in the Django 1.0 series, improving\nthe stability and performance of the Django 1.0 codebase. As such,\nDjango 1.0.1 contains no new features (and, pursuant to :doc:`our\ncompatibility policy </misc/api-stability/>`, maintains backwards\ncompatibility with Django 1.0), but does contain a number of fixes\nand other improvements. Django 1.0.1 is a recommended upgrade for any\ndevelopment or deployment currently using or targeting Django 1.0.\n\n\nFixes and improvements in Django 1.0.1\n======================================\n\nDjango 1.0.1 contains over two hundred fixes to the original Django\n1.0 codebase; full details of every fix are available in `the\nhistory of the 1.0.X branch`_, but here are some of the\nhighlights:\n\n* Several fixes in ``django.contrib.comments``, pertaining to RSS\n  feeds of comments, default ordering of comments and the XHTML and\n  internationalization of the default templates for comments.\n\n* Multiple fixes for Django's support of Oracle databases, including\n  pagination support for GIS QuerySets, more efficient slicing of\n  results and improved introspection of existing databases.\n\n* Several fixes for query support in the Django object-relational\n  mapper, including repeated setting and resetting of ordering and\n  fixes for working with ``INSERT``-only queries.\n\n* Multiple fixes for inline forms in formsets.\n\n* Multiple fixes for ``unique`` and ``unique_together`` model\n  constraints in automatically-generated forms.\n\n* Fixed support for custom callable ``upload_to`` declarations when\n  handling file uploads through automatically-generated forms.\n\n* Fixed support for sorting an admin change list based on a callable\n  attributes in ``list_display``.\n\n* A fix to the application of autoescaping for literal strings passed\n  to the ``join`` template filter. Previously, literal strings passed\n  to ``join`` were automatically escaped, contrary to :ref:`the\n  documented behavior for autoescaping and literal strings\n  <string-literals-and-automatic-escaping>`. Literal strings\n  passed to ``join`` are no longer automatically escaped, meaning you\n  must now manually escape them; this is an incompatibility if you\n  were relying on this bug, but not if you were relying on escaping\n  behaving as documented.\n\n* Improved and expanded translation files for many of the languages\n  Django supports by default.\n\n* And as always, a large number of improvements to Django's\n  documentation, including both corrections to existing documents and\n  expanded and new documentation.\n\n.. _the history of the 1.0.X branch: https://github.com/django/django/commits/stable/1.0.x\n"
  },
  {
    "path": "Django-1.5.1/docs/releases/1.0.2.txt",
    "content": "==========================\nDjango 1.0.2 release notes\n==========================\n\nWelcome to Django 1.0.2!\n\nThis is the second \"bugfix\" release in the Django 1.0 series,\nimproving the stability and performance of the Django 1.0 codebase. As\nsuch, Django 1.0.2 contains no new features (and, pursuant to\n:doc:`our compatibility policy </misc/api-stability>`, maintains backwards compatibility with Django\n1.0.0), but does contain a number of fixes and other\nimprovements. Django 1.0.2 is a recommended upgrade for any\ndevelopment or deployment currently using or targeting Django 1.0.\n\n\nFixes and improvements in Django 1.0.2\n======================================\n\nThe primary reason behind this release is to remedy an issue in the\nrecently-released Django 1.0.1; the packaging scripts used for Django\n1.0.1 omitted some directories from the final release package,\nincluding one directory required by ``django.contrib.gis`` and part of\nDjango's unit-test suite.\n\nDjango 1.0.2 contains updated packaging scripts, and the release\npackage contains the directories omitted from Django 1.0.1. As such,\nthis release contains all of the fixes and improvements from Django\n1.0.1; see :doc:`the Django 1.0.1 release notes </releases/1.0.1>` for\ndetails.\n\nAdditionally, in the period since Django 1.0.1 was released:\n\n* Updated Hebrew and Danish translations have been added.\n\n* The default ``__repr__`` method of Django models has been made more\n  robust in the face of bad Unicode data coming from the\n  ``__unicode__`` method; rather than raise an exception in such\n  cases, ``repr()`` will now contain the string \"[Bad Unicode data]\"\n  in place of the invalid Unicode.\n\n* A bug involving the interaction of Django's ``SafeUnicode`` class\n  and the MySQL adapter has been resolved; ``SafeUnicode`` instances\n  (generated, for example, by template rendering) can now be assigned\n  to model attributes and saved to MySQL without requiring an explicit\n  intermediate cast to ``unicode``.\n\n* A bug affecting filtering on a nullable ``DateField`` in SQLite has\n  been resolved.\n\n* Several updates and improvements have been made to Django's\n  documentation.\n"
  },
  {
    "path": "Django-1.5.1/docs/releases/1.0.txt",
    "content": "========================\nDjango 1.0 release notes\n========================\n\nWelcome to Django 1.0!\n\nWe've been looking forward to this moment for over three years, and it's finally\nhere. Django 1.0 represents a the largest milestone in Django's development to\ndate: a Web framework that a group of perfectionists can truly be proud of.\n\nDjango 1.0 represents over three years of community development as an Open\nSource project. Django's received contributions from hundreds of developers,\nbeen translated into fifty languages, and today is used by developers on every\ncontinent and in every kind of job.\n\nAn interesting historical note: when Django was first released in July 2005, the\ninitial released version of Django came from an internal repository at revision\nnumber 8825. Django 1.0 represents revision 8961 of our public repository. It\nseems fitting that our 1.0 release comes at the moment where community\ncontributions overtake those made privately.\n\nStability and forwards-compatibility\n====================================\n\n:doc:`The release of Django 1.0 </releases/1.0>` comes with a promise of API\nstability and forwards-compatibility. In a nutshell, this means that code you\ndevelop against Django 1.0 will continue to work against 1.1 unchanged, and you\nshould need to make only minor changes for any 1.X release.\n\nSee the :doc:`API stability guide </misc/api-stability>` for full details.\n\nBackwards-incompatible changes\n==============================\n\nDjango 1.0 has a number of backwards-incompatible changes from Django 0.96. If\nyou have apps written against Django 0.96 that you need to port, see our\ndetailed porting guide:\n\n.. toctree::\n   :maxdepth: 1\n\n   1.0-porting-guide\n\nA complete list of backwards-incompatible changes can be found at\nhttps://code.djangoproject.com/wiki/BackwardsIncompatibleChanges.\n\nWhat's new in Django 1.0\n========================\n\nA *lot*!\n\nSince Django 0.96, we've made over 4,000 code commits, fixed more than 2,000\nbugs, and edited, added, or removed around 350,000 lines of code. We've also\nadded 40,000 lines of new documentation, and greatly improved what was already\nthere.\n\nIn fact, new documentation is one of our favorite features of Django 1.0, so we\nmight as well start there. First, there's a new documentation site:\n\n* https://docs.djangoproject.com/\n\nThe documentation has been greatly improved, cleaned up, and generally made\nawesome. There's now dedicated search, indexes, and more.\n\nWe can't possibly document everything that's new in 1.0, but the documentation\nwill be your definitive guide. Anywhere you see something like:\n\n.. versionadded:: 1.0\n   This feature is new in Django 1.0\n\nYou'll know that you're looking at something new or changed.\n\nThe other major highlights of Django 1.0 are:\n\nRe-factored admin application\n-----------------------------\n\nThe Django administrative interface (``django.contrib.admin``) has been\ncompletely refactored; admin definitions are now completely decoupled from model\ndefinitions (no more ``class Admin`` declaration in models!), rewritten to use\nDjango's new form-handling library (introduced in the 0.96 release as\n``django.newforms``, and now available as simply ``django.forms``) and\nredesigned with extensibility and customization in mind. Full documentation for\nthe admin application is available online in the official Django documentation:\n\nSee the :doc:`admin reference </ref/contrib/admin/index>` for details\n\nImproved Unicode handling\n-------------------------\n\nDjango's internals have been refactored to use Unicode throughout; this\ndrastically simplifies the task of dealing with non-Western-European content and\ndata in Django. Additionally, utility functions have been provided to ease\ninteroperability with third-party libraries and systems which may or may not\nhandle Unicode gracefully. Details are available in Django's Unicode-handling\ndocumentation.\n\nSee :doc:`/ref/unicode`.\n\nAn improved ORM\n---------------\n\nDjango's object-relational mapper -- the component which provides the mapping\nbetween Django model classes and your database, and which mediates your database\nqueries -- has been dramatically improved by a massive refactoring. For most\nusers of Django this is backwards-compatible; the public-facing API for database\nquerying underwent a few minor changes, but most of the updates took place in\nthe ORM's internals. A guide to the changes, including backwards-incompatible\nmodifications and mentions of new features opened up by this refactoring, is\n`available on the Django wiki`__.\n\n__ https://code.djangoproject.com/wiki/QuerysetRefactorBranch\n\nAutomatic escaping of template variables\n----------------------------------------\n\nTo provide improved security against cross-site scripting (XSS) vulnerabilities,\nDjango's template system now automatically escapes the output of variables. This\nbehavior is configurable, and allows both variables and larger template\nconstructs to be marked as safe (requiring no escaping) or unsafe (requiring\nescaping). A full guide to this feature is in the documentation for the\n:ttag:`autoescape` tag.\n\n``django.contrib.gis`` (GeoDjango)\n----------------------------------\n\nA project over a year in the making, this adds world-class GIS (`Geographic\nInformation Systems`_) support to Django, in the form of a ``contrib``\napplication. Its documentation is currently being maintained externally, and\nwill be merged into the main Django documentation shortly. Huge thanks go to\nJustin Bronn, Jeremy Dunck, Brett Hoerner and Travis Pinney for their efforts in\ncreating and completing this feature.\n\nSee http://geodjango.org/ for details.\n\n.. _Geographic Information Systems: http://en.wikipedia.org/wiki/Geographic_information_system\n\nPluggable file storage\n----------------------\n\nDjango's built-in ``FileField`` and ``ImageField`` now can take advantage of\npluggable file-storage backends, allowing extensive customization of where and\nhow uploaded files get stored by Django. For details, see :doc:`the files\ndocumentation </topics/files>`; big thanks go to Marty Alchin for putting in the\nhard work to get this completed.\n\nJython compatibility\n--------------------\n\nThanks to a lot of work from Leo Soto during a Google Summer of Code project,\nDjango's codebase has been refactored to remove incompatibilities with\n`Jython`_, an implementation of Python written in Java, which runs Python code\non the Java Virtual Machine. Django is now compatible with the forthcoming\nJython 2.5 release.\n\nSee :doc:`/howto/jython`.\n\n.. _Jython: http://www.jython.org/\n\nGeneric relations in forms and admin\n------------------------------------\n\nClasses are now included in ``django.contrib.contenttypes`` which can be used to\nsupport generic relations in both the admin interface and in end-user forms. See\n:ref:`the documentation for generic relations <generic-relations>` for details.\n\n``INSERT``/``UPDATE`` distinction\n---------------------------------\n\nAlthough Django's default behavior of having a model's ``save()`` method\nautomatically determine whether to perform an ``INSERT`` or an ``UPDATE`` at the\nSQL level is suitable for the majority of cases, there are occasional situations\nwhere forcing one or the other is useful. As a result, models can now support an\nadditional parameter to ``save()`` which can force a specific operation.\n\nSee :ref:`ref-models-force-insert` for details.\n\nSplit ``CacheMiddleware``\n-------------------------\n\nDjango's ``CacheMiddleware`` has been split into three classes:\n``CacheMiddleware`` itself still exists and retains all of its previous\nfunctionality, but it is now built from two separate middleware classes which\nhandle the two parts of caching (inserting into and reading from the cache)\nseparately, offering additional flexibility for situations where combining these\nfunctions into a single middleware posed problems.\n\nFull details, including updated notes on appropriate use, are in :doc:`the\ncaching documentation </topics/cache>`.\n\nRefactored ``django.contrib.comments``\n--------------------------------------\n\nAs part of a Google Summer of Code project, Thejaswi Puthraya carried out a\nmajor rewrite and refactoring of Django's bundled comment system, greatly\nincreasing its flexibility and customizability. :doc:`Full documentation\n</ref/contrib/comments/index>` is available, as well as an upgrade guide\nif you were using the previous incarnation of\nthe comments application.\n\nRemoval of deprecated features\n------------------------------\n\nA number of features and methods which had previously been marked as deprecated,\nand which were scheduled for removal prior to the 1.0 release, are no longer\npresent in Django. These include imports of the form library from\n``django.newforms`` (now located simply at ``django.forms``), the\n``form_for_model`` and ``form_for_instance`` helper functions (which have been\nreplaced by ``ModelForm``) and a number of deprecated features which were\nreplaced by the dispatcher, file-uploading and file-storage refactorings\nintroduced in the Django 1.0 alpha releases.\n\nKnown issues\n============\n\nWe've done our best to make Django 1.0 as solid as possible, but unfortunately\nthere are a couple of issues that we know about in the release.\n\nMulti-table model inheritance with ``to_field``\n-----------------------------------------------\n\nIf you're using :ref:`multiple table model inheritance\n<multi-table-inheritance>`, be aware of this caveat: child models using a custom\n``parent_link`` and ``to_field`` will cause database integrity errors. A set of\nmodels like the following are **not valid**::\n\n    class Parent(models.Model):\n        name = models.CharField(max_length=10)\n        other_value = models.IntegerField(unique=True)\n\n    class Child(Parent):\n        father = models.OneToOneField(Parent, primary_key=True, to_field=\"other_value\", parent_link=True)\n        value = models.IntegerField()\n\nThis bug will be fixed in the next release of Django.\n\nCaveats with support of certain databases\n-----------------------------------------\n\nDjango attempts to support as many features as possible on all database\nbackends. However, not all database backends are alike, and in particular many of the supported database differ greatly from version to version. It's a good idea to checkout our :doc:`notes on supported database </ref/databases>`:\n\n- :ref:`mysql-notes`\n- :ref:`sqlite-notes`\n- :ref:`oracle-notes`\n\n"
  },
  {
    "path": "Django-1.5.1/docs/releases/1.1-alpha-1.txt",
    "content": "================================\nDjango 1.1 alpha 1 release notes\n================================\n\nFebruary 23, 2009\n\nWelcome to Django 1.1 alpha 1!\n\nThis is the first in a series of preview/development releases leading up to the\neventual release of Django 1.1, currently scheduled to take place in April 2009.\nThis release is primarily targeted at developers who are interested in trying\nout new features and testing the Django codebase to help identify and resolve\nbugs prior to the final 1.1 release.\n\nAs such, this release is *not* intended for production use, and any such use is\ndiscouraged.\n\nWhat's new in Django 1.1 alpha 1\n================================\n\nORM improvements\n----------------\n\nTwo major enhancements have been added to Django's object-relational mapper\n(ORM):\n\nAggregate support\n~~~~~~~~~~~~~~~~~\n\n.. currentmodule:: django.db.models\n\nIt's now possible to run SQL aggregate queries (i.e. ``COUNT()``, ``MAX()``,\n``MIN()``, etc.) from within Django's ORM. You can choose to either return the\nresults of the aggregate directly, or else annotate the objects in a\n:class:`~django.db.models.query.QuerySet` with the results of the aggregate\nquery.\n\nThis feature is available as new\n:meth:`~django.db.models.query.QuerySet.aggregate` and\n:meth:`~django.db.models.query.QuerySet.annotate` methods, and is covered in\ndetail in :doc:`the ORM aggregation documentation </topics/db/aggregation>`.\n\nQuery expressions\n~~~~~~~~~~~~~~~~~\n\nQueries can now refer to a another field on the query and can traverse\nrelationships to refer to fields on related models. This is implemented in the\nnew :class:`F` object; for full details, including examples, consult the\n:ref:`documentation for F expressions <query-expressions>`.\n\nPerformance improvements\n------------------------\n\n.. currentmodule:: django.test\n\nTests written using Django's :doc:`testing framework </topics/testing/index>` now run\ndramatically faster (as much as 10 times faster in many cases).\n\nThis was accomplished through the introduction of transaction-based tests: when\nusing :class:`django.test.TestCase`, your tests will now be run in a transaction\nwhich is rolled back when finished, instead of by flushing and re-populating the\ndatabase. This results in an immense speedup for most types of unit tests. See\nthe documentation for :class:`TestCase` and :class:`TransactionTestCase` for a\nfull description, and some important notes on database support.\n\nOther improvements\n------------------\n\nOther new features and changes introduced since Django 1.0 include:\n\n* The :doc:`CSRF protection middleware </ref/contrib/csrf>` has been split into\n  two classes -- ``CsrfViewMiddleware`` checks incoming requests, and\n  ``CsrfResponseMiddleware`` processes outgoing responses. The combined\n  ``CsrfMiddleware`` class (which does both) remains for\n  backwards-compatibility, but using the split classes is now recommended in\n  order to allow fine-grained control of when and where the CSRF processing\n  takes place.\n\n* :func:`~django.core.urlresolvers.reverse` and code which uses it (e.g., the\n  ``{% url %}`` template tag) now works with URLs in Django's administrative\n  site, provided that the admin URLs are set up via ``include(admin.site.urls)``\n  (sending admin requests to the ``admin.site.root`` view still works, but URLs\n  in the admin will not be \"reversible\" when configured this way).\n\n* The ``include()`` function in Django URLconf modules can now accept sequences\n  of URL patterns (generated by ``patterns()``) in addition to module names.\n\n* Instances of Django forms (see :doc:`the forms overview </topics/forms/index>`)\n  now have two additional methods, ``hidden_fields()`` and ``visible_fields()``,\n  which return the list of hidden -- i.e., ``<input type=\"hidden\">`` -- and\n  visible fields on the form, respectively.\n\n* The ``redirect_to`` generic view\n  now accepts an additional keyword argument\n  ``permanent``. If ``permanent`` is ``True``, the view will emit an HTTP\n  permanent redirect (status code 301). If ``False``, the view will emit an HTTP\n  temporary redirect (status code 302).\n\n* A new database lookup type -- ``week_day`` -- has been added for ``DateField``\n  and ``DateTimeField``. This type of lookup accepts a number between 1 (Sunday)\n  and 7 (Saturday), and returns objects where the field value matches that day\n  of the week. See :ref:`the full list of lookup types <field-lookups>` for\n  details.\n\n* The ``{% for %}`` tag in Django's template language now accepts an optional\n  ``{% empty %}`` clause, to be displayed when ``{% for %}`` is asked to loop\n  over an empty sequence. See :doc:`the list of built-in template tags\n  </ref/templates/builtins>` for examples of this.\n\nThe Django 1.1 roadmap\n======================\n\nBefore Django 1.1 goes final, several other preview/development releases will be\nmade available. The current schedule consists of at least the following:\n\n* Week of *March 20, 2009:* Django 1.1 beta 1, at which point Django 1.1 will\n  be in \"feature freeze\": no new features will be implemented for 1.1\n  past that point, and all new feature work will be deferred to\n  Django 1.2.\n\n* Week of *April 2, 2009:* Django 1.1 release candidate. At this point all\n  strings marked for translation must freeze to allow translations to\n  be submitted in advance of the final release.\n\n* Week of *April 13, 2009:* Django 1.1 final.\n\nIf deemed necessary, additional alpha, beta or release candidate packages will\nbe issued prior to the final 1.1 release.\n\nWhat you can do to help\n=======================\n\nIn order to provide a high-quality 1.1 release, we need your help. Although this\nalpha release is, again, *not* intended for production use, you can help the\nDjango team by trying out the alpha codebase in a safe test environment and\nreporting any bugs or issues you encounter. The Django ticket tracker is the\ncentral place to search for open issues:\n\n* https://code.djangoproject.com/timeline\n\nPlease open new tickets if no existing ticket corresponds to a problem you're\nrunning into.\n\nAdditionally, discussion of Django development, including progress toward the\n1.1 release, takes place daily on the django-developers mailing list:\n\n* http://groups.google.com/group/django-developers\n\n... and in the ``#django-dev`` IRC channel on ``irc.freenode.net``. If you're\ninterested in helping out with Django's development, feel free to join the\ndiscussions there.\n\nDjango's online documentation also includes pointers on how to contribute to\nDjango:\n\n* :doc:`How to contribute to Django </internals/contributing/index>`\n\nContributions on any level -- developing code, writing documentation or simply\ntriaging tickets and helping to test proposed bugfixes -- are always welcome and\nappreciated.\n\nDevelopment sprints for Django 1.1 will also be taking place at PyCon US 2009,\non the dedicated sprint days (March 30 through April 2), and anyone who wants to\nhelp out is welcome to join in, either in person at PyCon or virtually in the\nIRC channel or on the mailing list.\n"
  },
  {
    "path": "Django-1.5.1/docs/releases/1.1-beta-1.txt",
    "content": "===============================\nDjango 1.1 beta 1 release notes\n===============================\n\nMarch 23, 2009\n\nWelcome to Django 1.1 beta 1!\n\nThis is the second in a series of preview/development releases leading up to\nthe eventual release of Django 1.1, currently scheduled to take place in April\n2009. This release is primarily targeted at developers who are interested in\ntrying out new features and testing the Django codebase to help identify and\nresolve bugs prior to the final 1.1 release.\n\nAs such, this release is *not* intended for production use, and any such use\nis discouraged.\n\nWhat's new in Django 1.1 beta 1\n===============================\n\n.. seealso::\n\n    The :doc:`1.1 alpha release notes </releases/1.1-alpha-1>`, which has a\n    list of everything new between Django 1.0 and Django 1.1 alpha.\n\nModel improvements\n------------------\n\n.. currentmodule:: django.db.models\n\nA number of features have been added to Django's model layer:\n\n\"Unmanaged\" models\n~~~~~~~~~~~~~~~~~~\n\nYou can now control whether or not Django creates database tables for a model\nusing the :attr:`~Options.managed` model option. This defaults to ``True``,\nmeaning that Django will create the appropriate database tables in\n:djadmin:`syncdb` and remove them as part of ``reset`` command. That\nis, Django *manages* the database table's lifecycle.\n\nIf you set this to ``False``, however, no database table creating or deletion\nwill be automatically performed for this model. This is useful if the model\nrepresents an existing table or a database view that has been created by some\nother means.\n\nFor more details, see the documentation for the :attr:`~Options.managed`\noption.\n\nProxy models\n~~~~~~~~~~~~\n\nYou can now create :ref:`proxy models <proxy-models>`: subclasses of existing\nmodels that only add Python behavior and aren't represented by a new table.\nThat is, the new model is a *proxy* for some underlying model, which stores\nall the real data.\n\nAll the details can be found in the :ref:`proxy models documentation\n<proxy-models>`. This feature is similar on the surface to unmanaged models,\nso the documentation has an explanation of :ref:`how proxy models differ from\nunmanaged models <proxy-vs-unmanaged-models>`.\n\nDeferred fields\n~~~~~~~~~~~~~~~\n\nIn some complex situations, your models might contain fields which could\ncontain a lot of data (for example, large text fields), or require expensive\nprocessing to convert them to Python objects. If you know you don't need those\nparticular fields, you can now tell Django not to retrieve them from the\ndatabase.\n\nYou'll do this with the new queryset methods\n:meth:`~django.db.models.query.QuerySet.defer` and\n:meth:`~django.db.models.query.QuerySet.only`.\n\nNew admin features\n------------------\n\nSince 1.1 alpha, a couple of new features have been added to Django's admin\napplication:\n\nEditable fields on the change list\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nYou can now make fields editable on the admin list views via the new\n:ref:`list_editable <admin-list-editable>` admin option. These fields will show\nup as form widgets on the list pages, and can be edited and saved in bulk.\n\nAdmin \"actions\"\n~~~~~~~~~~~~~~~\n\nYou can now define :doc:`admin actions </ref/contrib/admin/actions>` that can perform\nsome action to a group of models in bulk. Users will be able to select objects on\nthe change list page and then apply these bulk actions to all selected objects.\n\nDjango ships with one pre-defined admin action to delete a group of objects in\none fell swoop.\n\nTesting improvements\n--------------------\n\n.. currentmodule:: django.test.client\n\nA couple of small but very useful improvements have been made to the\n:doc:`testing framework </topics/testing/index>`:\n\n* The test :class:`Client` now can automatically follow redirects with the\n  ``follow`` argument to :meth:`Client.get` and :meth:`Client.post`. This\n  makes testing views that issue redirects simpler.\n\n* It's now easier to get at the template context in the response returned\n  the test client: you'll simply access the context as\n  ``request.context[key]``. The old way, which treats ``request.context``\n  as a list of contexts, one for each rendered template, is still\n  available if you need it.\n\nConditional view processing\n---------------------------\n\nDjango now has much better support for :doc:`conditional view processing\n</topics/conditional-view-processing>` using the standard ``ETag`` and\n``Last-Modified`` HTTP headers. This means you can now easily short-circuit\nview processing by testing less-expensive conditions. For many views this can\nlead to a serious improvement in speed and reduction in bandwidth.\n\nOther improvements\n------------------\n\nFinally, a grab-bag of other neat features made their way into this beta\nrelease, including:\n\n* The :djadmin:`dumpdata` management command now accepts individual\n  model names as arguments, allowing you to export the data just from\n  particular models.\n\n* There's a new :tfilter:`safeseq` template filter which works just like\n  :tfilter:`safe` for lists, marking each item in the list as safe.\n\n* :doc:`Cache backends </topics/cache>` now support ``incr()`` and\n  ``decr()`` commands to increment and decrement the value of a cache key.\n  On cache backends that support atomic increment/decrement -- most\n  notably, the memcached backend -- these operations will be atomic, and\n  quite fast.\n\n* Django now can :doc:`easily delegate authentication to the Web server\n  </howto/auth-remote-user>` via a new authentication backend that supports\n  the standard ``REMOTE_USER`` environment variable used for this purpose.\n\n* There's a new :func:`django.shortcuts.redirect` function that makes it\n  easier to issue redirects given an object, a view name, or a URL.\n\n* The ``postgresql_psycopg2`` backend now supports :ref:`native PostgreSQL\n  autocommit <postgresql-notes>`. This is an advanced, PostgreSQL-specific\n  feature, that can make certain read-heavy applications a good deal\n  faster.\n\nThe Django 1.1 roadmap\n======================\n\nBefore Django 1.1 goes final, at least one other preview/development release\nwill be made available. The current schedule consists of at least the\nfollowing:\n\n* Week of *April 2, 2009:* Django 1.1 release candidate. At this point all\n  strings marked for translation must freeze to allow translations to\n  be submitted in advance of the final release.\n\n* Week of *April 13, 2009:* Django 1.1 final.\n\nIf deemed necessary, additional beta or release candidate packages will be\nissued prior to the final 1.1 release.\n\nWhat you can do to help\n=======================\n\nIn order to provide a high-quality 1.1 release, we need your help. Although this\nbeta release is, again, *not* intended for production use, you can help the\nDjango team by trying out the beta codebase in a safe test environment and\nreporting any bugs or issues you encounter. The Django ticket tracker is the\ncentral place to search for open issues:\n\n* https://code.djangoproject.com/timeline\n\nPlease open new tickets if no existing ticket corresponds to a problem you're\nrunning into.\n\nAdditionally, discussion of Django development, including progress toward the\n1.1 release, takes place daily on the django-developers mailing list:\n\n* http://groups.google.com/group/django-developers\n\n... and in the ``#django-dev`` IRC channel on ``irc.freenode.net``. If you're\ninterested in helping out with Django's development, feel free to join the\ndiscussions there.\n\nDjango's online documentation also includes pointers on how to contribute to\nDjango:\n\n* :doc:`How to contribute to Django </internals/contributing/index>`\n\nContributions on any level -- developing code, writing documentation or simply\ntriaging tickets and helping to test proposed bugfixes -- are always welcome and\nappreciated.\n\nDevelopment sprints for Django 1.1 will also be taking place at PyCon US 2009,\non the dedicated sprint days (March 30 through April 2), and anyone who wants to\nhelp out is welcome to join in, either in person at PyCon or virtually in the\nIRC channel or on the mailing list.\n"
  },
  {
    "path": "Django-1.5.1/docs/releases/1.1-rc-1.txt",
    "content": "=============================\nDjango 1.1 RC 1 release notes\n=============================\n\n\nJuly 21, 2009\n\nWelcome to the first Django 1.1 release candidate!\n\nThis is the third -- and likely last -- in a series of\npreview/development releases leading up to the eventual release of\nDjango 1.1, currently scheduled to take place approximately one week\nafter this release candidate. This release is targeted primarily at\ndevelopers who are interested in trying out new features and testing\nthe Django codebase to help identify and resolve any critical bugs\nprior to the final 1.1 release.\n\nAs such, this release is not yet intended for production use, and any\nsuch use is discouraged.\n\n\nWhat's new in Django 1.1 RC 1\n=============================\n\nThe Django codebase has -- with one exception -- been in feature\nfreeze since the first 1.1 beta release, and so this release candidate\ncontains only one new feature (see below); work leading up to this\nrelease candidate has instead been focused on bugfixing, particularly\non the new features introduced prior to the 1.1 beta.\n\nFor an overview of those features, consult :doc:`the Django 1.1 beta\nrelease notes </releases/1.1-beta-1>`.\n\n\nURL namespaces\n--------------\n\nThe 1.1 beta release introduced the ability to use reverse URL\nresolution with Django's admin application, which exposed a set of\n:ref:`named URLs <naming-url-patterns>`. Unfortunately, achieving\nconsistent and correct reverse resolution for admin URLs proved\nextremely difficult, and so one additional feature was added to Django\nto resolve this issue: URL namespaces.\n\nIn short, this feature allows the same group of URLs, from the same\napplication, to be included in a Django URLConf multiple times, with\nvarying (and potentially nested) named prefixes which will be used\nwhen performing reverse resolution. For full details, see :ref:`the\ndocumentation on defining URL namespaces\n<topics-http-defining-url-namespaces>`.\n\nDue to the changes needed to support this feature, the URL pattern\nnames used when reversing admin URLs have changed since the 1.1 beta\nrelease; if you were developing applications which took advantage of\nthis new feature, you will need to update your code to reflect the new\nnames (for most purposes, changing ``admin_`` to ``admin:`` in names\nto be reversed will suffice). For a full list of URL pattern names\nused by the admin and information on how namespaces are applied to\nthem, consult the documentation on :ref:`reversing admin URLs\n<admin-reverse-urls>`.\n\n\nThe Django 1.1 roadmap\n======================\n\nAs of this release candidate, Django 1.1 is in both feature freeze and\n\"string freeze\" -- all strings marked for translation in the Django\ncodebase will retain their current form in the final Django 1.1\nrelease. Only critical release-blocking bugs will receive attention\nbetween now and the final 1.1 release.\n\nIf no such bugs are discovered, Django 1.1 will be released\napproximately one week after this release candidate, on or about July\n28, 2009.\n\n\nWhat you can do to help\n=======================\n\nIn order to provide a high-quality 1.1 release, we need your\nhelp. Although this release candidate is, again, *not* intended for\nproduction use, you can help the Django team by trying out this\nrelease candidate in a safe testing environment and reporting any bugs\nor issues you encounter. The Django ticket tracker is the central\nplace to search for open issues:\n\n* https://code.djangoproject.com/timeline\n\nPlease open a new ticket only if no existing ticket corresponds to a\nproblem you're running into.\n\nAdditionally, discussion of Django development, including progress\ntoward the 1.1 release, takes place daily on the django-developers\nmailing list:\n\n* http://groups.google.com/group/django-developers\n\n... and in the ``#django-dev`` IRC channel on ``irc.freenode.net``. If you're\ninterested in helping out with Django's development, feel free to join the\ndiscussions there.\n\nDjango's online documentation also includes pointers on how to contribute to\nDjango: \n\n* :doc:`How to contribute to Django </internals/contributing/index>`\n\nContributions on any level -- developing code, writing documentation or simply\ntriaging tickets and helping to test proposed bugfixes -- are always welcome and\nappreciated.\n"
  },
  {
    "path": "Django-1.5.1/docs/releases/1.1.2.txt",
    "content": "==========================\nDjango 1.1.2 release notes\n==========================\n\nWelcome to Django 1.1.2!\n\nThis is the second \"bugfix\" release in the Django 1.1 series,\nimproving the stability and performance of the Django 1.1 codebase.\n\nDjango 1.1.2 maintains backwards compatibility with Django\n1.1.0, but contain a number of fixes and other\nimprovements. Django 1.1.2 is a recommended upgrade for any\ndevelopment or deployment currently using or targeting Django 1.1.\n\nFor full details on the new features, backwards incompatibilities, and\ndeprecated features in the 1.1 branch, see the :doc:`/releases/1.1`.\n\nBackwards-incompatible changes in 1.1.2\n=======================================\n\nTest runner exit status code\n----------------------------\n\nThe exit status code of the test runners (``tests/runtests.py`` and ``python\nmanage.py test``) no longer represents the number of failed tests, since a\nfailure of 256 or more tests resulted in a wrong exit status code.  The exit\nstatus code for the test runner is now 0 for success (no failing tests) and 1\nfor any number of test failures.  If needed, the number of test failures can be\nfound at the end of the test runner's output.\n\nCookie encoding\n---------------\n\nTo fix bugs with cookies in Internet Explorer, Safari, and possibly other\nbrowsers, our encoding of cookie values was changed so that the characters\ncomma and semi-colon are treated as non-safe characters, and are therefore\nencoded as ``\\054`` and ``\\073`` respectively.  This could produce backwards\nincompatibilities, especially if you are storing comma or semi-colon in\ncookies and have javascript code that parses and manipulates cookie values\nclient-side.\n\nOne new feature\n===============\n\nOrdinarily, a point release would not include new features, but in the\ncase of Django 1.1.2, we have made an exception to this rule. Django\n1.2 (the next major release of Django) will contain a feature that\nwill improve protection against Cross-Site Request Forgery (CSRF)\nattacks. This feature requires the use of a new :ttag:`csrf_token`\ntemplate tag in all forms that Django renders.\n\nTo make it easier to support both 1.1.X and 1.2.X versions of Django with\nthe same templates, we have decided to introduce the :ttag:`csrf_token` template\ntag to the 1.1.X branch. In the 1.1.X branch, :ttag:`csrf_token` does nothing -\nit has no effect on templates or form processing. However, it means that the\nsame template will work with Django 1.2.\n"
  },
  {
    "path": "Django-1.5.1/docs/releases/1.1.3.txt",
    "content": "==========================\nDjango 1.1.3 release notes\n==========================\n\nWelcome to Django 1.1.3!\n\nThis is the third \"bugfix\" release in the Django 1.1 series,\nimproving the stability and performance of the Django 1.1 codebase.\n\nWith one exception, Django 1.1.3 maintains backwards compatibility\nwith Django 1.1.2. It also contains a number of fixes and other\nimprovements. Django 1.1.2 is a recommended upgrade for any\ndevelopment or deployment currently using or targeting Django 1.1.\n\nFor full details on the new features, backwards incompatibilities, and\ndeprecated features in the 1.1 branch, see the :doc:`/releases/1.1`.\n\nBackwards incompatible changes\n==============================\n\nRestricted filters in admin interface\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe Django administrative interface, django.contrib.admin, supports\nfiltering of displayed lists of objects by fields on the corresponding\nmodels, including across database-level relationships. This is\nimplemented by passing lookup arguments in the querystring portion of\nthe URL, and options on the ModelAdmin class allow developers to\nspecify particular fields or relationships which will generate\nautomatic links for filtering.\n\nOne historically-undocumented and -unofficially-supported feature has\nbeen the ability for a user with sufficient knowledge of a model's\nstructure and the format of these lookup arguments to invent useful\nnew filters on the fly by manipulating the querystring.\n\nHowever, it has been demonstrated that this can be abused to gain\naccess to information outside of an admin user's permissions; for\nexample, an attacker with access to the admin and sufficient knowledge\nof model structure and relations could construct query strings which --\nwith repeated use of regular-expression lookups supported by the\nDjango database API -- expose sensitive information such as users'\npassword hashes.\n\nTo remedy this, django.contrib.admin will now validate that\nquerystring lookup arguments either specify only fields on the model\nbeing viewed, or cross relations which have been explicitly\nwhitelisted by the application developer using the pre-existing\nmechanism mentioned above. This is backwards-incompatible for any\nusers relying on the prior ability to insert arbitrary lookups.\n"
  },
  {
    "path": "Django-1.5.1/docs/releases/1.1.4.txt",
    "content": "==========================\nDjango 1.1.4 release notes\n==========================\n\nWelcome to Django 1.1.4!\n\nThis is the fourth \"bugfix\" release in the Django 1.1 series,\nimproving the stability and performance of the Django 1.1 codebase.\n\nWith one exception, Django 1.1.4 maintains backwards compatibility\nwith Django 1.1.3. It also contains a number of fixes and other\nimprovements. Django 1.1.4 is a recommended upgrade for any\ndevelopment or deployment currently using or targeting Django 1.1.\n\nFor full details on the new features, backwards incompatibilities, and\ndeprecated features in the 1.1 branch, see the :doc:`/releases/1.1`.\n\nBackwards incompatible changes\n==============================\n\nCSRF exception for AJAX requests\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nDjango includes a CSRF-protection mechanism, which makes use of a\ntoken inserted into outgoing forms. Middleware then checks for the\ntoken's presence on form submission, and validates it.\n\nPrior to Django 1.2.5, our CSRF protection made an exception for AJAX\nrequests, on the following basis:\n\n* Many AJAX toolkits add an X-Requested-With header when using\n  XMLHttpRequest.\n\n* Browsers have strict same-origin policies regarding\n  XMLHttpRequest.\n\n* In the context of a browser, the only way that a custom header\n  of this nature can be added is with XMLHttpRequest.\n\nTherefore, for ease of use, we did not apply CSRF checks to requests\nthat appeared to be AJAX on the basis of the X-Requested-With header.\nThe Ruby on Rails web framework had a similar exemption.\n\nRecently, engineers at Google made members of the Ruby on Rails\ndevelopment team aware of a combination of browser plugins and\nredirects which can allow an attacker to provide custom HTTP headers\non a request to any website. This can allow a forged request to appear\nto be an AJAX request, thereby defeating CSRF protection which trusts\nthe same-origin nature of AJAX requests.\n\nMichael Koziarski of the Rails team brought this to our attention, and\nwe were able to produce a proof-of-concept demonstrating the same\nvulnerability in Django's CSRF handling.\n\nTo remedy this, Django will now apply full CSRF validation to all\nrequests, regardless of apparent AJAX origin. This is technically\nbackwards-incompatible, but the security risks have been judged to\noutweigh the compatibility concerns in this case.\n\nAdditionally, Django will now accept the CSRF token in the custom HTTP\nheader X-CSRFTOKEN, as well as in the form submission itself, for ease\nof use with popular JavaScript toolkits which allow insertion of\ncustom headers into all AJAX requests.\n\nPlease see the :ref:`CSRF docs for example jQuery code <csrf-ajax>`\nthat demonstrates this technique, ensuring that you are looking at the\ndocumentation for your version of Django, as the exact code necessary\nis different for some older versions of Django.\n"
  },
  {
    "path": "Django-1.5.1/docs/releases/1.1.txt",
    "content": "========================\nDjango 1.1 release notes\n========================\n\n\nJuly 29, 2009\n\nWelcome to Django 1.1!\n\nDjango 1.1 includes a number of nifty `new features`_, lots of bug\nfixes, and an easy upgrade path from Django 1.0.\n\n.. _new features: `What's new in Django 1.1`_\n\n.. _backwards-incompatible-changes-1.1:\n\nBackwards-incompatible changes in 1.1\n=====================================\n\nDjango has a policy of :doc:`API stability </misc/api-stability>`. This means\nthat, in general, code you develop against Django 1.0 should continue to work\nagainst 1.1 unchanged. However, we do sometimes make backwards-incompatible\nchanges if they're necessary to resolve bugs, and there are a handful of such\n(minor) changes between Django 1.0 and Django 1.1.\n\nBefore upgrading to Django 1.1 you should double-check that the following\nchanges don't impact you, and upgrade your code if they do.\n\nChanges to constraint names\n---------------------------\n\nDjango 1.1 modifies the method used to generate database constraint names so\nthat names are consistent regardless of machine word size. This change is\nbackwards incompatible for some users.\n\nIf you are using a 32-bit platform, you're off the hook; you'll observe no\ndifferences as a result of this change.\n\nHowever, **users on 64-bit platforms may experience some problems** using the\n``reset`` management command. Prior to this change, 64-bit platforms\nwould generate a 64-bit, 16 character digest in the constraint name; for\nexample::\n\n    ALTER TABLE myapp_sometable ADD CONSTRAINT object_id_refs_id_5e8f10c132091d1e FOREIGN KEY ...\n\nFollowing this change, all platforms, regardless of word size, will generate a\n32-bit, 8 character digest in the constraint name; for example::\n\n    ALTER TABLE myapp_sometable ADD CONSTRAINT object_id_refs_id_32091d1e FOREIGN KEY ...\n\nAs a result of this change, you will not be able to use the ``reset``\nmanagement command on any table made by a 64-bit machine. This is because the\nthe new generated name will not match the historically generated name; as a\nresult, the SQL constructed by the reset command will be invalid.\n\nIf you need to reset an application that was created with 64-bit constraints,\nyou will need to manually drop the old constraint prior to invoking\n``reset``.\n\nTest cases are now run in a transaction\n---------------------------------------\n\nDjango 1.1 runs tests inside a transaction, allowing better test performance\n(see `test performance improvements`_ for details).\n\nThis change is slightly backwards incompatible if existing tests need to test\ntransactional behavior, if they rely on invalid assumptions about the test\nenvironment, or if they require a specific test case ordering.\n\nFor these cases, :class:`~django.test.TransactionTestCase` can be used instead.\nThis is a just a quick fix to get around test case errors revealed by the new\nrollback approach; in the long-term tests should be rewritten to correct the\ntest case.\n\n.. _removed-setremoteaddrfromforwardedfor-middleware:\n\nRemoved ``SetRemoteAddrFromForwardedFor`` middleware\n----------------------------------------------------\n\nFor convenience, Django 1.0 included an optional middleware class --\n``django.middleware.http.SetRemoteAddrFromForwardedFor`` -- which updated the\nvalue of ``REMOTE_ADDR`` based on the HTTP ``X-Forwarded-For`` header commonly\nset by some proxy configurations.\n\nIt has been demonstrated that this mechanism cannot be made reliable enough for\ngeneral-purpose use, and that (despite documentation to the contrary) its\ninclusion in Django may lead application developers to assume that the value of\n``REMOTE_ADDR`` is \"safe\" or in some way reliable as a source of authentication.\n\nWhile not directly a security issue, we've decided to remove this middleware\nwith the Django 1.1 release. It has been replaced with a class that does nothing\nother than raise a ``DeprecationWarning``.\n\nIf you've been relying on this middleware, the easiest upgrade path is:\n\n* Examine `the code as it existed before it was removed`__.\n\n* Verify that it works correctly with your upstream proxy, modifying\n  it to support your particular proxy (if necessary).\n\n* Introduce your modified version of ``SetRemoteAddrFromForwardedFor`` as a\n  piece of middleware in your own project.\n\n__ https://github.com/django/django/blob/91f18400cc0fb37659e2dbaab5484ff2081f1f30/django/middleware/http.py#L33\n\nNames of uploaded files are available later\n-------------------------------------------\n\n.. currentmodule:: django.db.models\n\nIn Django 1.0, files uploaded and stored in a model's :class:`FileField` were\nsaved to disk before the model was saved to the database. This meant that the\nactual file name assigned to the file was available before saving. For example,\nit was available in a model's pre-save signal handler.\n\nIn Django 1.1 the file is saved as part of saving the model in the database, so\nthe actual file name used on disk cannot be relied on until *after* the model\nhas been saved.\n\nChanges to how model formsets are saved\n---------------------------------------\n\nIn Django 1.1, :class:`~django.forms.models.BaseModelFormSet` now calls\n``ModelForm.save()``.\n\nThis is backwards-incompatible if you were modifying ``self.initial`` in a model\nformset's ``__init__``, or if you relied on the internal ``_total_form_count``\nor ``_initial_form_count`` attributes of BaseFormSet. Those attributes are now\npublic methods.\n\nFixed the ``join`` filter's escaping behavior\n---------------------------------------------\n\nThe :tfilter:`join` filter no longer escapes the literal value that is\npassed in for the connector.\n\nThis is backwards incompatible for the special situation of the literal string\ncontaining one of the five special HTML characters. Thus, if you were writing\n``{{ foo|join:\"&\" }}``, you now have to write ``{{ foo|join:\"&amp;\" }}``.\n\nThe previous behavior was a bug and contrary to what was documented\nand expected.\n\nPermanent redirects and the ``redirect_to()`` generic view\n----------------------------------------------------------\n\nDjango 1.1 adds a ``permanent`` argument to the\n``django.views.generic.simple.redirect_to()`` view. This is technically\nbackwards-incompatible if you were using the ``redirect_to`` view with a\nformat-string key called 'permanent', which is highly unlikely.\n\n.. _deprecated-features-1.1:\n\nFeatures deprecated in 1.1\n==========================\n\nOne feature has been marked as deprecated in Django 1.1:\n\n* You should no longer use ``AdminSite.root()`` to register that admin\n  views. That is, if your URLconf contains the line::\n\n        (r'^admin/(.*)', admin.site.root),\n\n  You should change it to read::\n\n        (r'^admin/', include(admin.site.urls)),\n\nYou should begin to remove use of this feature from your code immediately.\n\n``AdminSite.root`` will raise a ``PendingDeprecationWarning`` if used in\nDjango 1.1. This warning is hidden by default. In Django 1.2, this warning will\nbe upgraded to a ``DeprecationWarning``, which will be displayed loudly. Django\n1.3 will remove ``AdminSite.root()`` entirely.\n\nFor more details on our deprecation policies and strategy, see\n:doc:`/internals/release-process`.\n\nWhat's new in Django 1.1\n========================\n\nQuite a bit: since Django 1.0, we've made 1,290 code commits, fixed 1,206 bugs,\nand added roughly 10,000 lines of documentation.\n\nThe major new features in Django 1.1 are:\n\nORM improvements\n----------------\n\n.. currentmodule:: django.db.models\n\nTwo major enhancements have been added to Django's object-relational mapper\n(ORM): aggregate support, and query expressions.\n\nAggregate support\n~~~~~~~~~~~~~~~~~\n\nIt's now possible to run SQL aggregate queries (i.e. ``COUNT()``, ``MAX()``,\n``MIN()``, etc.) from within Django's ORM. You can choose to either return the\nresults of the aggregate directly, or else annotate the objects in a\n:class:`~django.db.models.query.QuerySet` with the results of the aggregate\nquery.\n\nThis feature is available as new\n:meth:`~django.db.models.query.QuerySet.aggregate` and\n:meth:`~django.db.models.query.QuerySet.annotate` methods, and is covered in\ndetail in :doc:`the ORM aggregation documentation </topics/db/aggregation>`.\n\nQuery expressions\n~~~~~~~~~~~~~~~~~\n\nQueries can now refer to a another field on the query and can traverse\nrelationships to refer to fields on related models. This is implemented in the\nnew :class:`~django.db.models.F` object; for full details, including examples,\nconsult the :ref:`documentation for F expressions <query-expressions>`.\n\nModel improvements\n------------------\n\nA number of features have been added to Django's model layer:\n\n\"Unmanaged\" models\n~~~~~~~~~~~~~~~~~~\n\nYou can now control whether or not Django manages the life-cycle of the database\ntables for a model using the :attr:`~Options.managed` model option. This\ndefaults to ``True``, meaning that Django will create the appropriate database\ntables in :djadmin:`syncdb` and remove them as part of the ``reset``\ncommand. That is, Django *manages* the database table's lifecycle.\n\nIf you set this to ``False``, however, no database table creating or deletion\nwill be automatically performed for this model. This is useful if the model\nrepresents an existing table or a database view that has been created by some\nother means.\n\nFor more details, see the documentation for the :attr:`~Options.managed`\noption.\n\nProxy models\n~~~~~~~~~~~~\n\nYou can now create :ref:`proxy models <proxy-models>`: subclasses of existing\nmodels that only add Python-level (rather than database-level) behavior and\naren't represented by a new table. That is, the new model is a *proxy* for some\nunderlying model, which stores all the real data.\n\nAll the details can be found in the :ref:`proxy models documentation\n<proxy-models>`. This feature is similar on the surface to unmanaged models,\nso the documentation has an explanation of :ref:`how proxy models differ from\nunmanaged models <proxy-vs-unmanaged-models>`.\n\nDeferred fields\n~~~~~~~~~~~~~~~\n\nIn some complex situations, your models might contain fields which could\ncontain a lot of data (for example, large text fields), or require expensive\nprocessing to convert them to Python objects. If you know you don't need those\nparticular fields, you can now tell Django not to retrieve them from the\ndatabase.\n\nYou'll do this with the new queryset methods\n:meth:`~django.db.models.query.QuerySet.defer` and\n:meth:`~django.db.models.query.QuerySet.only`.\n\nTesting improvements\n--------------------\n\nA few notable improvements have been made to the :doc:`testing framework\n</topics/testing/index>`.\n\nTest performance improvements\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. currentmodule:: django.test\n\nTests written using Django's :doc:`testing framework </topics/testing/index>` now run\ndramatically faster (as much as 10 times faster in many cases).\n\nThis was accomplished through the introduction of transaction-based tests: when\nusing :class:`django.test.TestCase`, your tests will now be run in a transaction\nwhich is rolled back when finished, instead of by flushing and re-populating the\ndatabase. This results in an immense speedup for most types of unit tests. See\nthe documentation for :class:`TestCase` and :class:`TransactionTestCase` for a\nfull description, and some important notes on database support.\n\nTest client improvements\n------------------------\n\n.. currentmodule:: django.test.client\n\nA couple of small -- but highly useful -- improvements have been made to the\ntest client:\n\n* The test :class:`Client` now can automatically follow redirects with the\n  ``follow`` argument to :meth:`Client.get` and :meth:`Client.post`. This\n  makes testing views that issue redirects simpler.\n\n* It's now easier to get at the template context in the response returned\n  the test client: you'll simply access the context as\n  ``request.context[key]``. The old way, which treats ``request.context`` as\n  a list of contexts, one for each rendered template in the inheritance\n  chain, is still available if you need it.\n\nNew admin features\n------------------\n\nDjango 1.1 adds a couple of nifty new features to Django's admin interface:\n\nEditable fields on the change list\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nYou can now make fields editable on the admin list views via the new\n:ref:`list_editable <admin-list-editable>` admin option. These fields will show\nup as form widgets on the list pages, and can be edited and saved in bulk.\n\nAdmin \"actions\"\n~~~~~~~~~~~~~~~\n\nYou can now define :doc:`admin actions </ref/contrib/admin/actions>` that can\nperform some action to a group of models in bulk. Users will be able to select\nobjects on the change list page and then apply these bulk actions to all\nselected objects.\n\nDjango ships with one pre-defined admin action to delete a group of objects in\none fell swoop.\n\nConditional view processing\n---------------------------\n\nDjango now has much better support for :doc:`conditional view processing\n</topics/conditional-view-processing>` using the standard ``ETag`` and\n``Last-Modified`` HTTP headers. This means you can now easily short-circuit\nview processing by testing less-expensive conditions. For many views this can\nlead to a serious improvement in speed and reduction in bandwidth.\n\nURL namespaces\n--------------\n\nDjango 1.1 improves :ref:`named URL patterns <naming-url-patterns>` with the\nintroduction of URL \"namespaces.\"\n\nIn short, this feature allows the same group of URLs, from the same application,\nto be included in a Django URLConf multiple times, with varying (and potentially\nnested) named prefixes which will be used when performing reverse resolution. In\nother words, reusable applications like Django's admin interface may be\nregistered multiple times without URL conflicts.\n\nFor full details, see :ref:`the documentation on defining URL namespaces\n<topics-http-defining-url-namespaces>`.\n\nGeoDjango\n---------\n\nIn Django 1.1, GeoDjango_ (i.e. ``django.contrib.gis``) has several new\nfeatures:\n\n* Support for SpatiaLite_ -- a spatial database for SQLite -- as a spatial\n  backend.\n\n* Geographic aggregates (``Collect``, ``Extent``, ``MakeLine``, ``Union``)\n  and ``F`` expressions.\n\n* New ``GeoQuerySet`` methods: ``collect``, ``geojson``, and\n  ``snap_to_grid``.\n\n* A new list interface methods for ``GEOSGeometry`` objects.\n\nFor more details, see the `GeoDjango documentation`_.\n\n.. _geodjango: http://geodjango.org/\n.. _spatialite: http://www.gaia-gis.it/gaia-sins/\n.. _geodjango documentation: http://geodjango.org/docs/\n\nOther improvements\n------------------\n\nOther new features and changes introduced since Django 1.0 include:\n\n* The :doc:`CSRF protection middleware </ref/contrib/csrf>` has been split into\n  two classes -- ``CsrfViewMiddleware`` checks incoming requests, and\n  ``CsrfResponseMiddleware`` processes outgoing responses. The combined\n  ``CsrfMiddleware`` class (which does both) remains for\n  backwards-compatibility, but using the split classes is now recommended in\n  order to allow fine-grained control of when and where the CSRF processing\n  takes place.\n\n* :func:`~django.core.urlresolvers.reverse` and code which uses it (e.g., the\n  ``{% url %}`` template tag) now works with URLs in Django's administrative\n  site, provided that the admin URLs are set up via ``include(admin.site.urls)``\n  (sending admin requests to the ``admin.site.root`` view still works, but URLs\n  in the admin will not be \"reversible\" when configured this way).\n\n* The ``include()`` function in Django URLconf modules can now accept sequences\n  of URL patterns (generated by ``patterns()``) in addition to module names.\n\n* Instances of Django forms (see :doc:`the forms overview </topics/forms/index>`)\n  now have two additional methods, ``hidden_fields()`` and ``visible_fields()``,\n  which return the list of hidden -- i.e., ``<input type=\"hidden\">`` -- and\n  visible fields on the form, respectively.\n\n* The ``redirect_to`` generic view\n  now accepts an additional keyword argument\n  ``permanent``. If ``permanent`` is ``True``, the view will emit an HTTP\n  permanent redirect (status code 301). If ``False``, the view will emit an HTTP\n  temporary redirect (status code 302).\n\n* A new database lookup type -- ``week_day`` -- has been added for ``DateField``\n  and ``DateTimeField``. This type of lookup accepts a number between 1 (Sunday)\n  and 7 (Saturday), and returns objects where the field value matches that day\n  of the week. See :ref:`the full list of lookup types <field-lookups>` for\n  details.\n\n* The ``{% for %}`` tag in Django's template language now accepts an optional\n  ``{% empty %}`` clause, to be displayed when ``{% for %}`` is asked to loop\n  over an empty sequence. See :doc:`the list of built-in template tags\n  </ref/templates/builtins>` for examples of this.\n\n* The :djadmin:`dumpdata` management command now accepts individual\n  model names as arguments, allowing you to export the data just from\n  particular models.\n\n* There's a new :tfilter:`safeseq` template filter which works just like\n  :tfilter:`safe` for lists, marking each item in the list as safe.\n\n* :doc:`Cache backends </topics/cache>` now support ``incr()`` and\n  ``decr()`` commands to increment and decrement the value of a cache key.\n  On cache backends that support atomic increment/decrement -- most\n  notably, the memcached backend -- these operations will be atomic, and\n  quite fast.\n\n* Django now can :doc:`easily delegate authentication to the Web server\n  </howto/auth-remote-user>` via a new authentication backend that supports\n  the standard ``REMOTE_USER`` environment variable used for this purpose.\n\n* There's a new :func:`django.shortcuts.redirect` function that makes it\n  easier to issue redirects given an object, a view name, or a URL.\n\n* The ``postgresql_psycopg2`` backend now supports :ref:`native PostgreSQL\n  autocommit <postgresql-notes>`. This is an advanced, PostgreSQL-specific\n  feature, that can make certain read-heavy applications a good deal\n  faster.\n\nWhat's next?\n============\n\nWe'll take a short break, and then work on Django 1.2 will begin -- no rest for\nthe weary! If you'd like to help, discussion of Django development, including\nprogress toward the 1.2 release, takes place daily on the django-developers\nmailing list:\n\n* http://groups.google.com/group/django-developers\n\n... and in the ``#django-dev`` IRC channel on ``irc.freenode.net``. Feel free to\njoin the discussions!\n\nDjango's online documentation also includes pointers on how to contribute to\nDjango:\n\n* :doc:`How to contribute to Django </internals/contributing/index>`\n\nContributions on any level -- developing code, writing documentation or simply\ntriaging tickets and helping to test proposed bugfixes -- are always welcome and\nappreciated.\n\nAnd that's the way it is.\n"
  },
  {
    "path": "Django-1.5.1/docs/releases/1.2-alpha-1.txt",
    "content": "================================\nDjango 1.2 alpha 1 release notes\n================================\n\nJanuary 5, 2010\n\nWelcome to Django 1.2 alpha 1!\n\nThis is the first in a series of preview/development releases leading up to the\neventual release of Django 1.2, currently scheduled to take place in March 2010.\nThis release is primarily targeted at developers who are interested in trying\nout new features and testing the Django codebase to help identify and resolve\nbugs prior to the final 1.2 release.\n\nAs such, this release is *not* intended for production use, and any such use is\ndiscouraged.\n\n\nBackwards-incompatible changes in 1.2\n=====================================\n\nCSRF Protection\n---------------\n\nThere have been large changes to the way that CSRF protection works, detailed in\n:doc:`the CSRF documentation </ref/contrib/csrf>`.  The following are the major\nchanges that developers must be aware of:\n\n* ``CsrfResponseMiddleware`` and ``CsrfMiddleware`` have been deprecated, and\n  **will be removed completely in Django 1.4**, in favor of a template tag that\n  should be inserted into forms.\n\n* All contrib apps use a ``csrf_protect`` decorator to protect the view. This\n  requires the use of the ``csrf_token`` template tag in the template, so if you\n  have used custom templates for contrib views, you MUST READ THE UPGRADE\n  INSTRUCTIONS to fix those templates.\n\n  .. admonition:: Documentation removed\n\n     The upgrade notes have been removed in current Django docs. Please refer\n     to the docs for Django 1.3 or older to find these instructions.\n\n* ``CsrfViewMiddleware`` is included in :setting:`MIDDLEWARE_CLASSES` by\n  default. This turns on CSRF protection by default, so that views that accept\n  POST requests need to be written to work with the middleware. Instructions\n  on how to do this are found in the CSRF docs.\n\n* CSRF-related code has moved from ``contrib`` to ``core`` (with\n  backwards compatible imports in the old locations, which are\n  deprecated).\n\n:ttag:`if` tag changes\n----------------------\n\nDue to new features in the :ttag:`if` template tag, it no longer accepts 'and',\n'or' and 'not' as valid **variable** names.  Previously that worked in some\ncases even though these strings were normally treated as keywords.  Now, the\nkeyword status is always enforced, and template code like ``{% if not %}`` or\n``{% if and %}`` will throw a TemplateSyntaxError.\n\n``LazyObject``\n--------------\n\n``LazyObject`` is an undocumented utility class used for lazily wrapping other\nobjects of unknown type.  In Django 1.1 and earlier, it handled introspection in\na non-standard way, depending on wrapped objects implementing a public method\n``get_all_members()``. Since this could easily lead to name clashes, it has been\nchanged to use the standard method, involving ``__members__`` and ``__dir__()``.\nIf you used ``LazyObject`` in your own code, and implemented the\n``get_all_members()`` method for wrapped objects, you need to make the following\nchanges:\n\n* If your class does not have special requirements for introspection (i.e. you\n  have not implemented ``__getattr__()`` or other methods that allow for\n  attributes not discoverable by normal mechanisms), you can simply remove the\n  ``get_all_members()`` method.  The default implementation on ``LazyObject``\n  will do the right thing.\n\n* If you have more complex requirements for introspection, first rename the\n  ``get_all_members()`` method to ``__dir__()``.  This is the standard method,\n  from Python 2.6 onwards, for supporting introspection.  If you are require\n  support for Python < 2.6, add the following code to the class::\n\n      __members__ = property(lambda self: self.__dir__())\n\n``__dict__`` on Model instances\n-------------------------------\n\nHistorically, the ``__dict__`` attribute of a model instance has only contained\nattributes corresponding to the fields on a model.\n\nIn order to support multiple database configurations, Django 1.2 has\nadded a ``_state`` attribute to object instances. This attribute will\nappear in ``__dict__`` for a model instance. If your code relies on\niterating over __dict__ to obtain a list of fields, you must now\nfilter the ``_state`` attribute of out ``__dict__``.\n\n``get_db_prep_*()`` methods on Field\n------------------------------------\n\nPrior to v1.2, a custom field had the option of defining several\nfunctions to support conversion of Python values into\ndatabase-compatible values. A custom field might look something like::\n\n    class CustomModelField(models.Field):\n        # ...\n\n        def get_db_prep_save(self, value):\n            # ...\n\n        def get_db_prep_value(self, value):\n            # ...\n\n        def get_db_prep_lookup(self, lookup_type, value):\n            # ...\n\nIn 1.2, these three methods have undergone a change in prototype, and\ntwo extra methods have been introduced::\n\n    class CustomModelField(models.Field):\n        # ...\n\n        def get_prep_value(self, value):\n            # ...\n\n        def get_prep_lookup(self, lookup_type, value):\n            # ...\n\n        def get_db_prep_save(self, value, connection):\n            # ...\n\n        def get_db_prep_value(self, value, connection, prepared=False):\n            # ...\n\n        def get_db_prep_lookup(self, lookup_type, value, connection, prepared=False):\n            # ...\n\nThese changes are required to support multiple databases:\n``get_db_prep_*`` can no longer make any assumptions regarding the\ndatabase for which it is preparing. The ``connection`` argument now\nprovides the preparation methods with the specific connection for\nwhich the value is being prepared.\n\nThe two new methods exist to differentiate general data preparation\nrequirements, and requirements that are database-specific. The\n``prepared`` argument is used to indicate to the database preparation\nmethods whether generic value preparation has been performed. If\nan unprepared (i.e., ``prepared=False``) value is provided to the\n``get_db_prep_*()`` calls, they should invoke the corresponding\n``get_prep_*()`` calls to perform generic data preparation.\n\nConversion functions has been provided which will transparently\nconvert functions adhering to the old prototype into functions\ncompatible with the new prototype. However, this conversion function\nwill be removed in Django 1.4, so you should upgrade your Field\ndefinitions to use the new prototype.\n\nIf your ``get_db_prep_*()`` methods made no use of the database\nconnection, you should be able to upgrade by renaming\n``get_db_prep_value()`` to ``get_prep_value()`` and\n``get_db_prep_lookup()`` to ``get_prep_lookup()`. If you require\ndatabase specific conversions, then you will need to provide an\nimplementation ``get_db_prep_*`` that uses the ``connection``\nargument to resolve database-specific values.\n\nStateful template tags\n----------------------\n\nTemplate tags that store rendering state on the node itself may experience\nproblems if they are used with the new :ref:`cached\ntemplate loader<template-loaders>`.\n\nAll of the built-in Django template tags are safe to use with the cached\nloader, but if you're using custom template tags that come from third\nparty packages, or that you wrote yourself, you should ensure that the\n``Node`` implementation for each tag is thread-safe. For more\ninformation, see\n:ref:`template tag thread safety considerations<template_tag_thread_safety>`.\n\nTest runner exit status code\n----------------------------\n\nThe exit status code of the test runners (``tests/runtests.py`` and ``python\nmanage.py test``) no longer represents the number of failed tests, since a\nfailure of 256 or more tests resulted in a wrong exit status code.  The exit\nstatus code for the test runner is now 0 for success (no failing tests) and 1\nfor any number of test failures.  If needed, the number of test failures can be\nfound at the end of the test runner's output.\n\nFeatures deprecated in 1.2\n==========================\n\nCSRF response rewriting middleware\n----------------------------------\n\n``CsrfResponseMiddleware``, the middleware that automatically inserted CSRF\ntokens into POST forms in outgoing pages, has been deprecated in favor of a\ntemplate tag method (see above), and will be removed completely in Django\n1.4. ``CsrfMiddleware``, which includes the functionality of\n``CsrfResponseMiddleware`` and ``CsrfViewMiddleware`` has likewise been\ndeprecated.\n\nAlso, the CSRF module has moved from contrib to core, and the old\nimports are deprecated, as described in the upgrading notes.\n\n.. admonition:: Documentation removed\n\n   The upgrade notes have been removed in current Django docs. Please refer\n   to the docs for Django 1.3 or older to find these instructions.\n\n``SMTPConnection``\n------------------\n\nThe ``SMTPConnection`` class has been deprecated in favor of a generic\nEmail backend API. Old code that explicitly instantiated an instance\nof an SMTPConnection::\n\n    from django.core.mail import SMTPConnection\n    connection = SMTPConnection()\n    messages = get_notification_email()\n    connection.send_messages(messages)\n\nshould now call :meth:`~django.core.mail.get_connection()` to\ninstantiate a generic email connection::\n\n    from django.core.mail import get_connection\n    connection = get_connection()\n    messages = get_notification_email()\n    connection.send_messages(messages)\n\nDepending on the value of the :setting:`EMAIL_BACKEND` setting, this\nmay not return an SMTP connection. If you explicitly require an SMTP\nconnection with which to send email, you can explicitly request an\nSMTP connection::\n\n    from django.core.mail import get_connection\n    connection = get_connection('django.core.mail.backends.smtp.EmailBackend')\n    messages = get_notification_email()\n    connection.send_messages(messages)\n\nIf your call to construct an instance of ``SMTPConnection`` required\nadditional arguments, those arguments can be passed to the\n:meth:`~django.core.mail.get_connection()` call::\n\n    connection = get_connection('django.core.mail.backends.smtp.EmailBackend', hostname='localhost', port=1234)\n\nSpecifying databases\n--------------------\n\nPrior to Django 1.1, Django used a number of settings to control access to a\nsingle database. Django 1.2 introduces support for multiple databases, and as\na result, the way you define database settings has changed.\n\n**Any existing Django settings file will continue to work as expected\nuntil Django 1.4.** Old-style database settings will be automatically\ntranslated to the new-style format.\n\nIn the old-style (pre 1.2) format, there were a number of\n``DATABASE_`` settings at the top level of your settings file. For\nexample::\n\n    DATABASE_NAME = 'test_db'\n    DATABASE_ENGINE = 'postgresql_psycopg2'\n    DATABASE_USER = 'myusername'\n    DATABASE_PASSWORD = 's3krit'\n\nThese settings are now contained inside a dictionary named\n:setting:`DATABASES`. Each item in the dictionary corresponds to a\nsingle database connection, with the name ``'default'`` describing the\ndefault database connection. The setting names have also been\nshortened to reflect the fact that they are stored in a dictionary.\nThe sample settings given previously would now be stored using::\n\n    DATABASES = {\n        'default': {\n            'NAME': 'test_db',\n            'ENGINE': 'django.db.backends.postgresql_psycopg2',\n            'USER': 'myusername',\n            'PASSWORD': 's3krit',\n        }\n    }\n\nThis affects the following settings:\n\n=========================================  ==========================\n Old setting                                New Setting\n=========================================  ==========================\n`DATABASE_ENGINE`                          :setting:`ENGINE <DATABASE-ENGINE>`\n`DATABASE_HOST`                            :setting:`HOST`\n`DATABASE_NAME`                            :setting:`NAME`\n`DATABASE_OPTIONS`                         :setting:`OPTIONS`\n`DATABASE_PASSWORD`                        :setting:`PASSWORD`\n`DATABASE_PORT`                            :setting:`PORT`\n`DATABASE_USER`                            :setting:`USER`\n`TEST_DATABASE_CHARSET`                    :setting:`TEST_CHARSET`\n`TEST_DATABASE_COLLATION`                  :setting:`TEST_COLLATION`\n`TEST_DATABASE_NAME`                       :setting:`TEST_NAME`\n=========================================  ==========================\n\nThese changes are also required if you have manually created a database\nconnection using ``DatabaseWrapper()`` from your database backend of choice.\n\nIn addition to the change in structure, Django 1.2 removes the special\nhandling for the built-in database backends. All database backends\nmust now be specified by a fully qualified module name (i.e.,\n``django.db.backends.postgresql_psycopg2``, rather than just\n``postgresql_psycopg2``).\n\nUser Messages API\n-----------------\n\nThe API for storing messages in the user ``Message`` model (via\n``user.message_set.create``) is now deprecated and will be removed in Django\n1.4 according to the standard :doc:`release process </internals/release-process>`.\n\nTo upgrade your code, you need to replace any instances of::\n\n    user.message_set.create('a message')\n\nwith the following::\n\n    from django.contrib import messages\n    messages.add_message(request, messages.INFO, 'a message')\n\nAdditionally, if you make use of the method, you need to replace the\nfollowing::\n\n    for message in user.get_and_delete_messages():\n        ...\n\nwith::\n\n    from django.contrib import messages\n    for message in messages.get_messages(request):\n        ...\n\nFor more information, see the full\n:doc:`messages documentation </ref/contrib/messages>`. You should begin to\nupdate your code to use the new API immediately.\n\nDate format helper functions\n----------------------------\n\n``django.utils.translation.get_date_formats()`` and\n``django.utils.translation.get_partial_date_formats()`` have been deprecated\nin favor of the appropriate calls to ``django.utils.formats.get_format()``\nwhich is locale aware when :setting:`USE_L10N` is set to ``True``, and falls\nback to default settings if set to ``False``.\n\nTo get the different date formats, instead of writing::\n\n    from django.utils.translation import get_date_formats\n    date_format, datetime_format, time_format = get_date_formats()\n\nuse::\n\n    from django.utils import formats\n\n    date_format = formats.get_format('DATE_FORMAT')\n    datetime_format = formats.get_format('DATETIME_FORMAT')\n    time_format = formats.get_format('TIME_FORMAT')\n\nor, when directly formatting a date value::\n\n    from django.utils import formats\n    value_formatted = formats.date_format(value, 'DATETIME_FORMAT')\n\nThe same applies to the globals found in ``django.forms.fields``:\n\n* ``DEFAULT_DATE_INPUT_FORMATS``\n* ``DEFAULT_TIME_INPUT_FORMATS``\n* ``DEFAULT_DATETIME_INPUT_FORMATS``\n\nUse ``django.utils.formats.get_format()`` to get the appropriate formats.\n\n\nWhat's new in Django 1.2 alpha 1\n================================\n\nThe following new features are present as of this alpha release; this\nrelease also marks the end of major feature development for the 1.2\nrelease cycle. Some minor features will continue development until the\n1.2 beta release, however.\n\n\nCSRF support\n------------\n\nDjango now has much improved protection against :doc:`Cross-Site\nRequest Forgery (CSRF) attacks</ref/contrib/csrf>`. This type of attack\noccurs when a malicious Web site contains a link, a form button or\nsome javascript that is intended to perform some action on your Web\nsite, using the credentials of a logged-in user who visits the\nmalicious site in their browser. A related type of attack, 'login\nCSRF', where an attacking site tricks a user's browser into logging\ninto a site with someone else's credentials, is also covered.\n\nEmail Backends\n--------------\n\nYou can now :ref:`configure the way that Django sends email\n<topic-email-backends>`. Instead of using SMTP to send all email, you\ncan now choose a configurable email backend to send messages. If your\nhosting provider uses a sandbox or some other non-SMTP technique for\nsending mail, you can now construct an email backend that will allow\nDjango's standard :doc:`mail sending methods</topics/email>` to use\nthose facilities.\n\nThis also makes it easier to debug mail sending - Django ships with\nbackend implementations that allow you to send email to a\n:ref:`file<topic-email-file-backend>`, to the\n:ref:`console<topic-email-console-backend>`, or to\n:ref:`memory<topic-email-memory-backend>` - you can even configure all\nemail to be :ref:`thrown away<topic-email-dummy-backend>`.\n\nMessages Framework\n------------------\n\nDjango now includes a robust and configurable :doc:`messages framework\n</ref/contrib/messages>` with built-in support for cookie- and session-based\nmessaging, for both anonymous and authenticated clients. The messages framework\nreplaces the deprecated user message API and allows you to temporarily store\nmessages in one request and retrieve them for display in a subsequent request\n(usually the next one).\n\nSupport for multiple databases\n------------------------------\n\nDjango 1.2 adds the ability to use :doc:`more than one database\n</topics/db/multi-db>` in your Django project. Queries can be\nissued at a specific database with the ``using()`` method on\nquerysets; individual objects can be saved to a specific database\nby providing a ``using`` argument when you save the instance.\n\n'Smart' if tag\n--------------\n\nThe :ttag:`if` tag has been upgraded to be much more powerful.  First, support\nfor comparison operators has been added. No longer will you have to type:\n\n.. code-block:: html+django\n\n    {% ifnotequal a b %}\n     ...\n    {% endifnotequal %}\n\n...as you can now do:\n\n.. code-block:: html+django\n\n    {% if a != b %}\n     ...\n    {% endif %}\n\nThe operators supported are ``==``, ``!=``, ``<``, ``>``, ``<=``, ``>=`` and\n``in``, all of which work like the Python operators, in addition to ``and``,\n``or`` and ``not`` which were already supported.\n\nAlso, filters may now be used in the ``if`` expression. For example:\n\n.. code-block:: html+django\n\n      <div\n        {% if user.email|lower == message.recipient|lower %}\n          class=\"highlight\"\n        {% endif %}\n      >{{ message }}</div>\n\nTemplate caching\n----------------\n\nIn previous versions of Django, every time you rendered a template it\nwould be reloaded from disk. In Django 1.2, you can use a :ref:`cached\ntemplate loader <template-loaders>` to load templates once, then use\nthe cached result for every subsequent render. This can lead to a\nsignificant performance improvement if your templates are broken into\nlots of smaller subtemplates (using the ``{% extends %}`` or ``{%\ninclude %}`` tags).\n\nAs a side effect, it is now much easier to support non-Django template\nlanguages. For more details, see the :ref:`notes on supporting\nnon-Django template languages<topic-template-alternate-language>`.\n\nNatural keys in fixtures\n------------------------\n\nFixtures can refer to remote objects using\n:ref:`topics-serialization-natural-keys`. This lookup scheme is an\nalternative to the normal primary-key based object references in a\nfixture, improving readability, and resolving problems referring to\nobjects whose primary key value may not be predictable or known.\n\n``BigIntegerField``\n-------------------\n\nModels can now use a 64 bit :class:`~django.db.models.BigIntegerField` type.\n\nFast Failure for Tests\n----------------------\n\nThe :djadmin:`test` subcommand of ``django-admin.py``, and the ``runtests.py``\nscript used to run Django's own test suite, support a new ``--failfast`` option.\nWhen specified, this option causes the test runner to exit after encountering\na failure instead of continuing with the test run.  In addition, the handling\nof ``Ctrl-C`` during a test run has been improved to trigger a graceful exit\nfrom the test run that reports details of the tests run before the interruption.\n\nImproved localization\n---------------------\n\nDjango's :doc:`internationalization framework </topics/i18n/index>` has been\nexpanded by locale aware formatting and form processing. That means, if\nenabled, dates and numbers on templates will be displayed using the format\nspecified for the current locale. Django will also use localized formats\nwhen parsing data in forms.\nSee :ref:`Format localization <format-localization>` for more details.\n\nAdded ``readonly_fields`` to ``ModelAdmin``\n-------------------------------------------\n\n:attr:`django.contrib.admin.ModelAdmin.readonly_fields` has been added to\nenable non-editable fields in add/change pages for models and inlines. Field\nand calculated values can be displayed along side editable fields.\n\nCustomizable syntax highlighting\n--------------------------------\n\nYou can now use the ``DJANGO_COLORS`` environment variable to modify\nor disable the colors used by ``django-admin.py`` to provide\n:ref:`syntax highlighting <syntax-coloring>`.\n\n\nThe Django 1.2 roadmap\n======================\n\nBefore the final Django 1.2 release, several other preview/development\nreleases will be made available. The current schedule consists of at\nleast the following:\n\n* Week of **January 26, 2010**: First Django 1.2 beta release. Final\n  feature freeze for Django 1.2.\n\n* Week of **March 2, 2010**: First Django 1.2 release\n  candidate. String freeze for translations.\n\n* Week of **March 9, 2010**: Django 1.2 final release.\n\nIf necessary, additional alpha, beta or release-candidate packages\nwill be issued prior to the final 1.2 release. Django 1.2 will be\nreleased approximately one week after the final release candidate.\n\n\nWhat you can do to help\n=======================\n\nIn order to provide a high-quality 1.2 release, we need your help. Although this\nalpha release is, again, *not* intended for production use, you can help the\nDjango team by trying out the alpha codebase in a safe test environment and\nreporting any bugs or issues you encounter. The Django ticket tracker is the\ncentral place to search for open issues:\n\n* https://code.djangoproject.com/timeline\n\nPlease open new tickets if no existing ticket corresponds to a problem you're\nrunning into.\n\nAdditionally, discussion of Django development, including progress toward the\n1.2 release, takes place daily on the django-developers mailing list:\n\n* http://groups.google.com/group/django-developers\n\n... and in the ``#django-dev`` IRC channel on ``irc.freenode.net``. If you're\ninterested in helping out with Django's development, feel free to join the\ndiscussions there.\n\nDjango's online documentation also includes pointers on how to contribute to\nDjango:\n\n* :doc:`How to contribute to Django </internals/contributing/index>`\n\nContributions on any level -- developing code, writing documentation or simply\ntriaging tickets and helping to test proposed bugfixes -- are always welcome and\nappreciated.\n\nDevelopment sprints for Django 1.2 will also be taking place at PyCon\nUS 2010, on the dedicated sprint days (February 22 through 25), and\nanyone who wants to help out is welcome to join in, either in person\nat PyCon or virtually in the IRC channel or on the mailing list.\n"
  },
  {
    "path": "Django-1.5.1/docs/releases/1.2-beta-1.txt",
    "content": "===============================\nDjango 1.2 beta 1 release notes\n===============================\n\nFebruary 5, 2010\n\nWelcome to Django 1.2 beta 1!\n\nThis is the second in a series of preview/development releases leading\nup to the eventual release of Django 1.2, currently scheduled to take\nplace in March 2010. This release is primarily targeted at developers\nwho are interested in trying out new features and testing the Django\ncodebase to help identify and resolve bugs prior to the final 1.2\nrelease.\n\nAs such, this release is *not* intended for production use, and any\nsuch use is discouraged.\n\nThis document covers changes since the Django 1.2 alpha release; the\n:doc:`1.2 alpha release notes </releases/1.2-alpha-1>` cover new and\nupdated features in Django between 1.1 and 1.2 alpha.\n\n\nDeprecations and other changes in 1.2 beta\n==========================================\n\nThis beta release deprecates two portions of public API, and\nintroduces a potentially backwards-incompatible change to\nanother. Under :doc:`our API stability policy </misc/api-stability>`,\ndeprecation proceeds over multiple release cycles: initially, the\ndeprecated API will raise ``PendingDeprecationWarning``, followed by\nraising ``DeprecationWarning`` in the next release, and finally\nremoval of the deprecated API in the release after that. APIs\nbeginning the deprecation process in Django 1.2 will be removed in the\nDjango 1.4 release.\n\n\nUnit test runners\n-----------------\n\nDjango 1.2 changes the test runner tools to use a class-based\napproach. Old style function-based test runners will still work, but\nshould be updated to use the new :ref:`class-based runners\n<topics-testing-test_runner>`.\n\n\nSyndication feeds\n-----------------\n\nThe ``django.contrib.syndication.feeds.Feed`` class is being\nreplaced by the :class:`django.contrib.syndication.views.Feed` class.\nThe old ``feeds.Feed`` class is deprecated. The new class has an\nalmost identical API, but allows instances to be used as views.\n\nAlso, in accordance with `RSS best practices`_, RSS feeds will now\ninclude an ``atom:link`` element. You may need to update your tests to\ntake this into account.\n\nFor more information, see the full :doc:`syndication framework\ndocumentation </ref/contrib/syndication>`.\n\n.. _RSS best practices: http://www.rssboard.org/rss-profile\n\n\nCookie encoding\n---------------\n\nDue to cookie-handling bugs in Internet Explorer, Safari, and possibly\nother browsers, Django's encoding of cookie values was changed so that\nthe characters comma (',') and semi-colon (';') are treated as\nnon-safe characters, and are therefore encoded as ``\\054`` and\n``\\073`` respectively. This could produce backwards incompatibilities\nif you are relying on the ability to set these characters directly in\ncookie values.\n\n\nWhat's new in 1.2 beta\n======================\n\nThis 1.2 beta release marks the final feature freeze for Django 1.2;\nwhile most feature development was completed for 1.2 alpha (which\nconstituted a freeze on major features), a few other new features were\nadded afterward and so are new as of 1.2 beta.\n\n\nObject-level permissions\n------------------------\n\nA foundation for specifying permissions at the per-object level was\nadded in Django 1.2 alpha but not documented with the alpha release.\n\nThe default authentication backends shipped with Django do not\ncurrently make use of this, but third-party authentication backends\nare free to do so. See the :doc:`authentication docs </topics/auth/index>`\nfor more information.\n\n\nPermissions for anonymous users\n-------------------------------\n\nIf you provide a custom authentication backend with the attribute\n``supports_anonymous_user`` set to ``True``, the ``AnonymousUser``\nclass will check the backend for permissions, just as the normal\n``User`` does. This is intended to help centralize permission\nhandling; apps can always delegate the question of whether something\nis allowed or not to the authorization/authentication system. See the\n:doc:`authentication docs </topics/auth/index>` for more details.\n\n\n``select_related()`` improvements\n---------------------------------\n\nThe ``select_related()`` method of ``QuerySet`` now accepts the\n``related_name`` of a reverse one-to-one relation in the list of\nfields to select. One-to-one relations will not, however, be traversed\nby a depth-based ``select_related()`` call.\n\n\nThe Django 1.2 roadmap\n======================\n\nBefore the final Django 1.2 release, at least one additional\npreview/development releases will be made available. The current\nschedule consists of at least the following:\n\n* Week of **March 2, 2010**: First Django 1.2 release\n  candidate. String freeze for translations.\n\n* Week of **March 9, 2010**: Django 1.2 final release.\n\nIf necessary, additional beta or release-candidate packages will be\nissued prior to the final 1.2 release. Django 1.2 will be released\napproximately one week after the final release candidate.\n\n\nWhat you can do to help\n=======================\n\nIn order to provide a high-quality 1.2 release, we need your\nhelp. Although this beta release is, again, *not* intended for\nproduction use, you can help the Django team by trying out the beta\ncodebase in a safe test environment and reporting any bugs or issues\nyou encounter. The Django ticket tracker is the central place to\nsearch for open issues:\n\n* https://code.djangoproject.com/timeline\n\nPlease open new tickets if no existing ticket corresponds to a problem\nyou're running into.\n\nAdditionally, discussion of Django development, including progress\ntoward the 1.2 release, takes place daily on the django-developers\nmailing list:\n\n* http://groups.google.com/group/django-developers\n\n... and in the ``#django-dev`` IRC channel on ``irc.freenode.net``. If you're\ninterested in helping out with Django's development, feel free to join the\ndiscussions there.\n\nDjango's online documentation also includes pointers on how to\ncontribute to Django:\n\n* :doc:`How to contribute to Django </internals/contributing/index>`\n\nContributions on any level -- developing code, writing documentation\nor simply triaging tickets and helping to test proposed bugfixes --\nare always welcome and appreciated.\n\nDevelopment sprints for Django 1.2 will also be taking place at PyCon\nUS 2010, on the dedicated sprint days (February 22 through 25), and\nanyone who wants to help out is welcome to join in, either in person\nat PyCon or virtually in the IRC channel or on the mailing list.\n"
  },
  {
    "path": "Django-1.5.1/docs/releases/1.2-rc-1.txt",
    "content": "=============================\nDjango 1.2 RC 1 release notes\n=============================\n\n\nMay 5, 2010\n\nWelcome to the first Django 1.2 release candidate!\n\nThis is the third -- and likely last -- in a series of\npreview/development releases leading up to the eventual release of\nDjango 1.2. This release is targeted primarily at developers who are\ninterested in trying out new features and testing the Django codebase\nto help identify and resolve any critical bugs prior to the final 1.2\nrelease.\n\nAs such, this release is not yet intended for production use, and any\nsuch use is discouraged.\n\nDjango has been feature frozen since the 1.2 beta release, so this\nrelease candidate contains no new features, only bugfixes; for a\nsummary of features new to Django 1.2, consult the :doc:`1.2 alpha\n</releases/1.2-alpha-1>` and :doc:`1.2 beta </releases/1.2-beta-1>`\nrelease notes.\n\n\nPython compatibility\n====================\n\nWhile not a new feature, it's important to note that Django 1.2\nintroduces the first shift in our Python compatibility policy since\nDjango's initial public debut. Previous Django releases were tested\nand supported on 2.x Python versions from 2.3 up; Django 1.2, however,\ndrops official support for Python 2.3. As such, the minimum Python\nversion required for Django is now 2.4, and Django is tested and\nsupported on Python 2.4, 2.5 and 2.6, and will be supported on the\nas-yet-unreleased Python 2.7.\n\nThis change should affect only a small number of Django users, as most\noperating-system vendors today are shipping Python 2.4 or newer as\ntheir default version. If you're still using Python 2.3, however,\nyou'll need to stick to Django 1.1 until you can upgrade; per\n:doc:`our support policy </internals/release-process>`, Django 1.1 will\ncontinue to receive security support until the release of Django 1.3.\n\nA roadmap for Django's overall 2.x Python support, and eventual\ntransition to Python 3.x, is currently being developed, and will be\nannounced prior to the release of Django 1.3.\n\n\nThe Django 1.2 roadmap\n======================\n\nAs of this release candidate, Django 1.2 is in both feature freeze and\n\"string freeze\" -- all strings marked for translation in the Django\ncodebase will retain their current form in the final Django 1.2\nrelease. Only critical release-blocking bugs, documentation and\nupdated translation files will receive attention between now and the\nfinal 1.2 release. Note that Django's localization infrastructure has\nbeen expanded for 1.2, and translation packages should now include a\n``formats.py`` file containing data for localized formatting of\nnumbers and dates.\n\nIf no critical bugs are discovered, Django 1.2 will be released\napproximately one week after this release candidate, on or about May\n12, 2010.\n\n\nWhat you can do to help\n=======================\n\nIn order to provide a high-quality 1.2 release, we need your\nhelp. Although this release candidate is, again, *not* intended for\nproduction use, you can help the Django team by trying out this\nrelease candidate in a safe testing environment and reporting any bugs\nor issues you encounter. The Django ticket tracker is the central\nplace to search for open issues:\n\n* https://code.djangoproject.com/timeline\n\nPlease open a new ticket only if no existing ticket corresponds to a\nproblem you're running into.\n\nAdditionally, discussion of Django development, including progress\ntoward the 1.2 release, takes place daily on the django-developers\nmailing list:\n\n* http://groups.google.com/group/django-developers\n\n... and in the ``#django-dev`` IRC channel on ``irc.freenode.net``. If you're\ninterested in helping out with Django's development, feel free to join the\ndiscussions there.\n\nDjango's online documentation also includes pointers on how to contribute to\nDjango: \n\n* :doc:`How to contribute to Django </internals/contributing/index>`\n\nContributions on any level -- developing code, writing documentation or simply\ntriaging tickets and helping to test proposed bugfixes -- are always welcome and\nappreciated.\n"
  },
  {
    "path": "Django-1.5.1/docs/releases/1.2.1.txt",
    "content": "==========================\nDjango 1.2.1 release notes\n==========================\n\nDjango 1.2.1 was released almost immediately after 1.2.0 to correct two small\nbugs: one was in the documentation packaging script, the other was a bug_ that\naffected datetime form field widgets when localisation was enabled.\n\n.. _bug: https://code.djangoproject.com/ticket/13560\n\n"
  },
  {
    "path": "Django-1.5.1/docs/releases/1.2.2.txt",
    "content": "==========================\nDjango 1.2.2 release notes\n==========================\n\nWelcome to Django 1.2.2!\n\nThis is the second \"bugfix\" release in the Django 1.2 series,\nimproving the stability and performance of the Django 1.2 codebase.\n\nDjango 1.2.2 maintains backwards compatibility with Django\n1.2.1, but contain a number of fixes and other\nimprovements. Django 1.2.2 is a recommended upgrade for any\ndevelopment or deployment currently using or targeting Django 1.2.\n\nFor full details on the new features, backwards incompatibilities, and\ndeprecated features in the 1.2 branch, see the :doc:`/releases/1.2`.\n\nOne new feature\n===============\n\nOrdinarily, a point release would not include new features, but in the\ncase of Django 1.2.2, we have made an exception to this rule.\n\nIn order to test a bug fix that forms part of the 1.2.2 release, it\nwas necessary to add a feature -- the ``enforce_csrf_checks`` flag --\nto the :mod:`test client <django.test.client>`. This flag forces\nthe test client to perform full CSRF checks on forms. The default\nbehavior of the test client hasn't changed, but if you want to do\nCSRF checks with the test client, it is now possible to do so.\n"
  },
  {
    "path": "Django-1.5.1/docs/releases/1.2.3.txt",
    "content": "==========================\nDjango 1.2.3 release notes\n==========================\n\nDjango 1.2.3 fixed a couple of release problems in the 1.2.2 release and was\nreleased two days after 1.2.2.\n\nThis release corrects the following problems:\n\n* The patch_ applied for the security issue covered in Django 1.2.2 caused\n  issues with non-ASCII responses using CSRF tokens.\n\n* The patch also caused issues with some forms, most notably the user-editing\n  forms in the Django administrative interface.\n\n* The packaging manifest did not contain the full list of required files.\n\n.. _patch: https://code.djangoproject.com/changeset/13699\n\n"
  },
  {
    "path": "Django-1.5.1/docs/releases/1.2.4.txt",
    "content": "==========================\nDjango 1.2.4 release notes\n==========================\n\nWelcome to Django 1.2.4!\n\nThis is the fourth \"bugfix\" release in the Django 1.2 series,\nimproving the stability and performance of the Django 1.2 codebase.\n\nWith one exception, Django 1.2.4 maintains backwards compatibility\nwith Django 1.2.3. It also contains a number of fixes and other\nimprovements. Django 1.2.4 is a recommended upgrade for any\ndevelopment or deployment currently using or targeting Django 1.2.\n\nFor full details on the new features, backwards incompatibilities, and\ndeprecated features in the 1.2 branch, see the :doc:`/releases/1.2`.\n\nBackwards incompatible changes\n==============================\n\nRestricted filters in admin interface\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe Django administrative interface, django.contrib.admin, supports\nfiltering of displayed lists of objects by fields on the corresponding\nmodels, including across database-level relationships. This is\nimplemented by passing lookup arguments in the querystring portion of\nthe URL, and options on the ModelAdmin class allow developers to\nspecify particular fields or relationships which will generate\nautomatic links for filtering.\n\nOne historically-undocumented and -unofficially-supported feature has\nbeen the ability for a user with sufficient knowledge of a model's\nstructure and the format of these lookup arguments to invent useful\nnew filters on the fly by manipulating the querystring.\n\nHowever, it has been demonstrated that this can be abused to gain\naccess to information outside of an admin user's permissions; for\nexample, an attacker with access to the admin and sufficient knowledge\nof model structure and relations could construct query strings which --\nwith repeated use of regular-expression lookups supported by the\nDjango database API -- expose sensitive information such as users'\npassword hashes.\n\nTo remedy this, django.contrib.admin will now validate that\nquerystring lookup arguments either specify only fields on the model\nbeing viewed, or cross relations which have been explicitly\nwhitelisted by the application developer using the pre-existing\nmechanism mentioned above. This is backwards-incompatible for any\nusers relying on the prior ability to insert arbitrary lookups.\n\nOne new feature\n===============\n\nOrdinarily, a point release would not include new features, but in the\ncase of Django 1.2.4, we have made an exception to this rule.\n\nOne of the bugs fixed in Django 1.2.4 involves a set of\ncircumstances whereby a running a test suite on a multiple database\nconfiguration could cause the original source database (i.e., the\nactual production database) to be dropped, causing catastrophic loss\nof data. In order to provide a fix for this problem, it was necessary\nto introduce a new setting -- :setting:`TEST_DEPENDENCIES` -- that\nallows you to define any creation order dependencies in your database\nconfiguration.\n\nMost users -- even users with multiple-database configurations -- need\nnot be concerned about the data loss bug, or the manual configuration of\n:setting:`TEST_DEPENDENCIES`. See the `original problem report`_\ndocumentation on :ref:`controlling the creation order of test\ndatabases <topics-testing-creation-dependencies>` for details.\n\n.. _original problem report: https://code.djangoproject.com/ticket/14415\n\nGeoDjango\n=========\n\nThe function-based :setting:`TEST_RUNNER` previously used to execute\nthe GeoDjango test suite, ``django.contrib.gis.tests.run_gis_tests``,\nwas finally deprecated in favor of a class-based test runner,\n:class:`django.contrib.gis.tests.GeoDjangoTestSuiteRunner`, added in this\nrelease.\n\nIn addition, the GeoDjango test suite is now included when\n:ref:`running the Django test suite <running-unit-tests>` with ``runtests.py``\nand using :ref:`spatial database backends <spatial-backends>`.\n"
  },
  {
    "path": "Django-1.5.1/docs/releases/1.2.5.txt",
    "content": "==========================\nDjango 1.2.5 release notes\n==========================\n\nWelcome to Django 1.2.5!\n\nThis is the fifth \"bugfix\" release in the Django 1.2 series,\nimproving the stability and performance of the Django 1.2 codebase.\n\nWith four exceptions, Django 1.2.5 maintains backwards compatibility\nwith Django 1.2.4. It also contains a number of fixes and other\nimprovements. Django 1.2.5 is a recommended upgrade for any\ndevelopment or deployment currently using or targeting Django 1.2.\n\nFor full details on the new features, backwards incompatibilities, and\ndeprecated features in the 1.2 branch, see the :doc:`/releases/1.2`.\n\nBackwards incompatible changes\n==============================\n\nCSRF exception for AJAX requests\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nDjango includes a CSRF-protection mechanism, which makes use of a\ntoken inserted into outgoing forms. Middleware then checks for the\ntoken's presence on form submission, and validates it.\n\nPrior to Django 1.2.5, our CSRF protection made an exception for AJAX\nrequests, on the following basis:\n\n* Many AJAX toolkits add an X-Requested-With header when using\n  XMLHttpRequest.\n\n* Browsers have strict same-origin policies regarding\n  XMLHttpRequest.\n\n* In the context of a browser, the only way that a custom header\n  of this nature can be added is with XMLHttpRequest.\n\nTherefore, for ease of use, we did not apply CSRF checks to requests\nthat appeared to be AJAX on the basis of the X-Requested-With header.\nThe Ruby on Rails web framework had a similar exemption.\n\nRecently, engineers at Google made members of the Ruby on Rails\ndevelopment team aware of a combination of browser plugins and\nredirects which can allow an attacker to provide custom HTTP headers\non a request to any website. This can allow a forged request to appear\nto be an AJAX request, thereby defeating CSRF protection which trusts\nthe same-origin nature of AJAX requests.\n\nMichael Koziarski of the Rails team brought this to our attention, and\nwe were able to produce a proof-of-concept demonstrating the same\nvulnerability in Django's CSRF handling.\n\nTo remedy this, Django will now apply full CSRF validation to all\nrequests, regardless of apparent AJAX origin. This is technically\nbackwards-incompatible, but the security risks have been judged to\noutweigh the compatibility concerns in this case.\n\nAdditionally, Django will now accept the CSRF token in the custom HTTP\nheader X-CSRFTOKEN, as well as in the form submission itself, for ease\nof use with popular JavaScript toolkits which allow insertion of\ncustom headers into all AJAX requests.\n\nPlease see the :ref:`CSRF docs for example jQuery code <csrf-ajax>`\nthat demonstrates this technique, ensuring that you are looking at the\ndocumentation for your version of Django, as the exact code necessary\nis different for some older versions of Django.\n\nFileField no longer deletes files\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nIn earlier Django versions, when a model instance containing a\n:class:`~django.db.models.FileField` was deleted,\n:class:`~django.db.models.FileField` took it upon itself to also delete the\nfile from the backend storage. This opened the door to several potentially\nserious data-loss scenarios, including rolled-back transactions and fields on\ndifferent models referencing the same file. In Django 1.2.5,\n:class:`~django.db.models.FileField` will never delete files from the backend\nstorage. If you need cleanup of orphaned files, you'll need to handle it\nyourself (for instance, with a custom management command that can be run\nmanually or scheduled to run periodically via e.g. cron).\n\nUse of custom SQL to load initial data in tests\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nDjango provides a custom SQL hooks as a way to inject hand-crafted SQL\ninto the database synchronization process. One of the possible uses\nfor this custom SQL is to insert data into your database. If your\ncustom SQL contains ``INSERT`` statements, those insertions will be\nperformed every time your database is synchronized. This includes the\nsynchronization of any test databases that are created when you run a\ntest suite.\n\nHowever, in the process of testing the Django 1.3, it was discovered\nthat this feature has never completely worked as advertised. When\nusing database backends that don't support transactions, or when using\na TransactionTestCase, data that has been inserted using custom SQL\nwill not be visible during the testing process.\n\nUnfortunately, there was no way to rectify this problem without\nintroducing a backwards incompatibility. Rather than leave\nSQL-inserted initial data in an uncertain state, Django now enforces\nthe policy that data inserted by custom SQL will *not* be visible\nduring testing.\n\nThis change only affects the testing process. You can still use custom\nSQL to load data into your production database as part of the syncdb\nprocess. If you require data to exist during test conditions, you\nshould either insert it using :ref:`test fixtures\n<topics-testing-fixtures>`, or using the ``setUp()`` method of your\ntest case.\n\nModelAdmin.lookup_allowed signature changed\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nDjango 1.2.4 introduced a method ``lookup_allowed`` on ``ModelAdmin``, to cope\nwith a security issue (changeset `[15033]\n<https://code.djangoproject.com/changeset/15033>`_). Although this method was\nnever documented, it seems some people have overridden ``lookup_allowed``,\nespecially to cope with regressions introduced by that changeset. While the\nmethod is still undocumented and not marked as stable, it may be helpful to know\nthat the signature of this function has changed.\n"
  },
  {
    "path": "Django-1.5.1/docs/releases/1.2.6.txt",
    "content": "==========================\nDjango 1.2.6 release notes\n==========================\n\n*September 9, 2011*\n\nWelcome to Django 1.2.6!\n\nThis is the sixth bugfix/security release in the Django 1.2 series, fixing\nseveral security issues present in Django 1.2.5.  Django 1.2.6 is a\nrecommended upgrade for all users of any Django release in the 1.2.X series.\n\nFor a full list of issues addressed in this release, see the `security\nadvisory`_.\n\n.. _security advisory: https://www.djangoproject.com/weblog/2011/sep/09/security-releases-issued/\n"
  },
  {
    "path": "Django-1.5.1/docs/releases/1.2.7.txt",
    "content": "==========================\nDjango 1.2.7 release notes\n==========================\n\n*September 10, 2011*\n\nWelcome to Django 1.2.7!\n\nThis is the seventh bugfix/security release in the Django 1.2 series. It\nreplaces Django 1.2.6 due to problems with the 1.2.6 release tarball. \nDjango 1.2.7 is a recommended upgrade for all users of any Django release in\nthe 1.2.X series.\n\nFor more information, see the `release advisory`_.\n\n.. _release advisory: https://www.djangoproject.com/weblog/2011/sep/10/127/\n"
  },
  {
    "path": "Django-1.5.1/docs/releases/1.2.txt",
    "content": "========================\nDjango 1.2 release notes\n========================\n\n*May 17, 2010.*\n\nWelcome to Django 1.2!\n\nNearly a year in the making, Django 1.2 packs an impressive list of `new\nfeatures`_ and lots of bug fixes. These release notes cover the new features,\nas well as important changes you'll want to be aware of when upgrading from\nDjango 1.1 or older versions.\n\n.. _new features: `What's new in Django 1.2`_\n\nOverview\n========\n\nDjango 1.2 introduces several large, important new features, including:\n\n* Support for `multiple database connections`_ in a single Django instance.\n\n* `Model validation`_ inspired by Django's form validation.\n\n* Vastly `improved protection against Cross-Site Request Forgery`_ (CSRF).\n\n* A new `user \"messages\" framework`_ with support for cookie- and session-based\n  message for both anonymous and authenticated users.\n\n* Hooks for `object-level permissions`_, `permissions for anonymous users`_,\n  and `more flexible username requirements`_.\n\n* Customization of email sending via `email backends`_.\n\n* New :ref:`\"smart\" if template tag <new-in-1.2-smart-if>` which supports\n  comparison operators.\n\n.. _multiple database connections: `support for multiple databases`_\n.. _improved protection against Cross-Site Request Forgery: `improved CSRF protection`_\n.. _user \"messages\" framework: `messages framework`_\n.. _more flexible username requirements: `relaxed requirements for usernames`_\n\nThese are just the highlights; full details and a complete list of features `may\nbe found below`_.\n\n.. _may be found below: `what's new in django 1.2`_\n\n.. seealso::\n\n    `Django Advent`_ covered the release of Django 1.2 with a series of\n    articles and tutorials that cover some of the new features in depth.\n\n.. _django advent: http://djangoadvent.com/\n\nWherever possible these features have been introduced in a backwards-compatible\nmanner per :doc:`our API stability policy </misc/api-stability>` policy.\n\nHowever, a handful of features *have* changed in ways that, for some users, will be\nbackwards-incompatible. The big changes are:\n\n* Support for Python 2.3 has been dropped. See the full notes\n  below.\n\n* The new CSRF protection framework is not backwards-compatible with\n  the old system. Users of the old system will not be affected until\n  the old system is removed in Django 1.4.\n\n  However, upgrading to the new CSRF protection framework requires a few\n  important backwards-incompatible changes, detailed in `CSRF Protection`_,\n  below.\n\n* Authors of custom :class:`~django.db.models.Field` subclasses should be\n  aware that a number of methods have had a change in prototype, detailed\n  under `get_db_prep_*() methods on Field`_, below.\n\n* The internals of template tags have changed somewhat; authors of custom\n  template tags that need to store state (e.g. custom control flow tags)\n  should ensure that their code follows the new rules for `stateful template\n  tags`_\n\n* The :func:`~django.contrib.auth.decorators.user_passes_test`,\n  :func:`~django.contrib.auth.decorators.login_required`, and\n  :func:`~django.contrib.auth.decorators.permission_required`, decorators\n  from :mod:`django.contrib.auth` only apply to functions and no longer\n  work on methods. There's a simple one-line fix `detailed below`_.\n\n.. _detailed below: `user_passes_test, login_required and permission_required`_\n\nAgain, these are just the big features that will affect the most users. Users\nupgrading from previous versions of Django are heavily encouraged to consult\nthe complete list of :ref:`backwards-incompatible changes\n<backwards-incompatible-changes-1.2>` and the list of :ref:`deprecated\nfeatures <deprecated-features-1.2>`.\n\nPython compatibility\n====================\n\nWhile not a new feature, it's important to note that Django 1.2\nintroduces the first shift in our Python compatibility policy since\nDjango's initial public debut. Previous Django releases were tested\nand supported on 2.x Python versions from 2.3 up; Django 1.2, however,\ndrops official support for Python 2.3. As such, the minimum Python\nversion required for Django is now 2.4, and Django is tested and\nsupported on Python 2.4, 2.5 and 2.6, and will be supported on the\nas-yet-unreleased Python 2.7.\n\nThis change should affect only a small number of Django users, as most\noperating-system vendors today are shipping Python 2.4 or newer as\ntheir default version. If you're still using Python 2.3, however,\nyou'll need to stick to Django 1.1 until you can upgrade; per\n:doc:`our support policy </internals/release-process>`, Django 1.1 will\ncontinue to receive security support until the release of Django 1.3.\n\nA roadmap for Django's overall 2.x Python support, and eventual\ntransition to Python 3.x, is currently being developed, and will be\nannounced prior to the release of Django 1.3.\n\nWhat's new in Django 1.2\n========================\n\nSupport for multiple databases\n------------------------------\n\nDjango 1.2 adds the ability to use :doc:`more than one database\n</topics/db/multi-db>` in your Django project. Queries can be issued at a\nspecific database with the ``using()`` method on ``QuerySet`` objects.\nIndividual objects can be saved to a specific database by providing a ``using``\nargument when you call ``save()``.\n\nModel validation\n----------------\n\nModel instances now have support for :ref:`validating their own data\n<validating-objects>`, and both model and form fields now accept configurable\nlists of :doc:`validators </ref/validators>` specifying reusable, encapsulated\nvalidation behavior. Note, however, that validation must still be performed\nexplicitly. Simply invoking a model instance's ``save()`` method will not\nperform any validation of the instance's data.\n\nImproved CSRF protection\n------------------------\n\nDjango now has much improved protection against :doc:`Cross-Site Request Forgery\n(CSRF) attacks</ref/contrib/csrf>`. This type of attack occurs when a malicious\nWeb site contains a link, a form button or some JavaScript that is intended to\nperform some action on your Web site, using the credentials of a logged-in user\nwho visits the malicious site in their browser. A related type of attack, \"login\nCSRF,\" where an attacking site tricks a user's browser into logging into a site\nwith someone else's credentials, is also covered.\n\nMessages framework\n------------------\n\nDjango now includes a robust and configurable :doc:`messages framework\n</ref/contrib/messages>` with built-in support for cookie- and session-based\nmessaging, for both anonymous and authenticated clients. The messages framework\nreplaces the deprecated user message API and allows you to temporarily store\nmessages in one request and retrieve them for display in a subsequent request\n(usually the next one).\n\nObject-level permissions\n------------------------\n\nA foundation for specifying permissions at the per-object level has been added.\nAlthough there is no implementation of this in core, a custom authentication\nbackend can provide this implementation and it will be used by\n:class:`django.contrib.auth.models.User`. See the :doc:`authentication docs\n</topics/auth/index>` for more information.\n\nPermissions for anonymous users\n-------------------------------\n\nIf you provide a custom auth backend with ``supports_anonymous_user`` set to\n``True``, AnonymousUser will check the backend for permissions, just like\nUser already did.  This is useful for centralizing permission handling - apps\ncan always delegate the question of whether something is allowed or not to\nthe authorization/authentication backend. See the :doc:`authentication\ndocs </topics/auth/index>` for more details.\n\nRelaxed requirements for usernames\n----------------------------------\n\nThe built-in :class:`~django.contrib.auth.models.User` model's\n:attr:`~django.contrib.auth.models.User.username` field now allows a wider range\nof characters, including ``@``, ``+``, ``.`` and ``-`` characters.\n\nEmail backends\n--------------\n\nYou can now :ref:`configure the way that Django sends email\n<topic-email-backends>`. Instead of using SMTP to send all email, you\ncan now choose a configurable email backend to send messages. If your\nhosting provider uses a sandbox or some other non-SMTP technique for\nsending mail, you can now construct an email backend that will allow\nDjango's standard :doc:`mail sending methods</topics/email>` to use\nthose facilities.\n\nThis also makes it easier to debug mail sending. Django ships with\nbackend implementations that allow you to send email to a\n:ref:`file<topic-email-file-backend>`, to the\n:ref:`console<topic-email-console-backend>`, or to\n:ref:`memory<topic-email-memory-backend>`. You can even configure all\nemail to be :ref:`thrown away<topic-email-dummy-backend>`.\n\n.. _new-in-1.2-smart-if:\n\n\"Smart\" :ttag:`if` tag\n----------------------\n\nThe :ttag:`if` tag has been upgraded to be much more powerful. First, we've\nadded support for comparison operators. No longer will you have to type:\n\n.. code-block:: html+django\n\n    {% ifnotequal a b %}\n     ...\n    {% endifnotequal %}\n\nYou can now do this:\n\n.. code-block:: html+django\n\n    {% if a != b %}\n     ...\n    {% endif %}\n\nThere's really no reason to use ``{% ifequal %}`` or ``{% ifnotequal %}``\nanymore, unless you're the nostalgic type.\n\nThe operators supported are ``==``, ``!=``, ``<``, ``>``, ``<=``, ``>=``,\n``in`` and ``not in``, all of which work like the Python operators, in addition\nto ``and``, ``or`` and ``not``, which were already supported.\n\nAlso, filters may now be used in the ``if`` expression. For example:\n\n.. code-block:: html+django\n\n      <div\n        {% if user.email|lower == message.recipient|lower %}\n          class=\"highlight\"\n        {% endif %}\n      >{{ message }}</div>\n\nTemplate caching\n----------------\n\nIn previous versions of Django, every time you rendered a template, it\nwould be reloaded from disk. In Django 1.2, you can use a :ref:`cached\ntemplate loader <template-loaders>` to load templates once, then\ncache the result for every subsequent render. This can lead to a\nsignificant performance improvement if your templates are broken into\nlots of smaller subtemplates (using the ``{% extends %}`` or ``{%\ninclude %}`` tags).\n\nAs a side effect, it is now much easier to support non-Django template\nlanguages. For more details, see the :ref:`notes on supporting\nnon-Django template languages<topic-template-alternate-language>`.\n\nClass-based template loaders\n----------------------------\n\nAs part of the changes made to introduce `Template caching`_  and following\na general trend in Django, the template loaders API has been modified\nto use template loading mechanisms that are encapsulated in Python classes as\nopposed to functions, the only method available until Django 1.1.\n\nAll the template loaders :ref:`shipped with Django <template-loaders>` have\nbeen ported to the new API but they still implement the function-based API and\nthe template core machinery still accepts function-based loaders (builtin or\nthird party) so there is no immediate need to modify your\n:setting:`TEMPLATE_LOADERS` setting in existing projects, things will keep\nworking if you leave it untouched up to and including the Django 1.3 release.\n\nIf you have developed your own custom template loaders we suggest to consider\nporting them to a class-based implementation because the code for backwards\ncompatibility with function-based loaders starts its deprecation process in\nDjango 1.2 and will be removed in Django 1.4.  There is a description of the\nAPI these loader classes must implement :ref:`here\n<topic-template-alternate-language>` and you can also examine the source code\nof the loaders shipped with Django.\n\nNatural keys in fixtures\n------------------------\n\nFixtures can now refer to remote objects using\n:ref:`topics-serialization-natural-keys`. This lookup scheme is an\nalternative to the normal primary-key based object references in a\nfixture, improving readability and resolving problems referring to\nobjects whose primary key value may not be predictable or known.\n\nFast failure for tests\n----------------------\n\nBoth the :djadmin:`test` subcommand of ``django-admin.py`` and the\n``runtests.py`` script used to run Django's own test suite now support a\n``--failfast`` option. When specified, this option causes the test runner to\nexit after encountering a failure instead of continuing with the test run. In\naddition, the handling of ``Ctrl-C`` during a test run has been improved to\ntrigger a graceful exit from the test run that reports details of the tests that\nwere run before the interruption.\n\n``BigIntegerField``\n-------------------\n\nModels can now use a 64-bit :class:`~django.db.models.BigIntegerField` type.\n\nImproved localization\n---------------------\n\nDjango's :doc:`internationalization framework </topics/i18n/index>` has been expanded\nwith locale-aware formatting and form processing. That means, if enabled, dates\nand numbers on templates will be displayed using the format specified for the\ncurrent locale. Django will also use localized formats when parsing data in\nforms. See :ref:`Format localization <format-localization>` for more details.\n\n``readonly_fields`` in ``ModelAdmin``\n-------------------------------------\n\n:attr:`django.contrib.admin.ModelAdmin.readonly_fields` has been added to\nenable non-editable fields in add/change pages for models and inlines. Field\nand calculated values can be displayed alongside editable fields.\n\nCustomizable syntax highlighting\n--------------------------------\n\nYou can now use a ``DJANGO_COLORS`` environment variable to modify or disable\nthe colors used by ``django-admin.py`` to provide :ref:`syntax highlighting\n<syntax-coloring>`.\n\nSyndication feeds as views\n--------------------------\n\n:doc:`Syndication feeds </ref/contrib/syndication>` can now be used directly as\nviews in your :doc:`URLconf </topics/http/urls>`. This means that you can\nmaintain complete control over the URL structure of your feeds. Like any other\nview, feeds views are passed a ``request`` object, so you can do anything you\nwould normally do with a view, like user based access control, or making a feed\na named URL.\n\nGeoDjango\n---------\n\nThe most significant new feature for :doc:`GeoDjango </ref/contrib/gis/index>`\nin 1.2 is support for multiple spatial databases.  As a result,\nthe following :ref:`spatial database backends <spatial-backends>`\nare now included:\n\n* ``django.contrib.gis.db.backends.postgis``\n* ``django.contrib.gis.db.backends.mysql``\n* ``django.contrib.gis.db.backends.oracle``\n* ``django.contrib.gis.db.backends.spatialite``\n\nGeoDjango now supports the rich capabilities added\nin the `PostGIS 1.5 release <http://postgis.refractions.net/documentation/manual-1.5/>`_.\nNew features include suppport for the :ref:`geography type <geography-type>`\nand enabling of :ref:`distance queries <distance-queries>`\nwith non-point geometries on geographic coordinate systems.\n\nSupport for 3D geometry fields was added, and may be enabled\nby setting the :attr:`~django.contrib.gis.db.models.GeometryField.dim`\nkeyword to 3 in your :class:`~django.contrib.gis.db.models.GeometryField`.\nThe :class:`~django.contrib.gis.db.models.Extent3D` aggregate\nand :meth:`~django.contrib.gis.db.models.GeoQuerySet.extent3d` ``GeoQuerySet``\nmethod were added as a part of this feature.\n\nThe following :class:`~django.contrib.gis.db.models.GeoQuerySet`\nmethods are new in 1.2:\n\n* :meth:`~django.contrib.gis.db.models.GeoQuerySet.force_rhr`\n* :meth:`~django.contrib.gis.db.models.GeoQuerySet.reverse_geom`\n* :meth:`~django.contrib.gis.db.models.GeoQuerySet.geohash`\n\nThe :ref:`GEOS interface <ref-geos>` was updated to use\nthread-safe C library functions when available on the platform.\n\nThe :ref:`GDAL interface <ref-gdal>` now allows the user to\nset a :attr:`~django.contrib.gis.gdal.Layer.spatial_filter` on\nthe features returned when iterating over a\n:class:`~django.contrib.gis.gdal.Layer`.\n\nFinally, :doc:`GeoDjango's documentation </ref/contrib/gis/index>` is now\nincluded with Django's and is no longer\nhosted separately at `geodjango.org <http://geodjango.org/>`_.\n\n.. _1.2-js-assisted-inlines:\n\nJavaScript-assisted handling of inline related objects in the admin\n-------------------------------------------------------------------\n\nIf a user has JavaScript enabled in their browser, the interface for\ninline objects in the admin now allows inline objects to be\ndynamically added and removed. Users without JavaScript-enabled\nbrowsers will see no change in the behavior of inline objects.\n\nNew ``now`` template tag format specifier characters: ``c`` and ``u``\n---------------------------------------------------------------------\n\nThe argument to the :ttag:`now` has gained two new format characters:\n``c`` to specify that a datetime value should be formatted in ISO 8601\nformat, and ``u`` that allows output of the microseconds part of a\ndatetime or time value.\n\nThese are also available in others parts like the :tfilter:`date` and\n:tfilter:`time` template filters, the ``humanize`` template tag library\nand the new `format localization`_ framework.\n\n.. _format localization: `Improved localization`_\n\n.. _backwards-incompatible-changes-1.2:\n\nBackwards-incompatible changes in 1.2\n=====================================\n\nWherever possible the new features above have been introduced in a\nbackwards-compatible manner per :doc:`our API stability policy\n</misc/api-stability>` policy. This means that practically all existing\ncode which worked with Django 1.1 will continue to work with Django\n1.2; such code will, however, begin issuing warnings (see below for\ndetails).\n\nHowever, a handful of features *have* changed in ways that, for some\nusers, will be immediately backwards-incompatible. Those changes are\ndetailed below.\n\nCSRF Protection\n---------------\n\nWe've made large changes to the way CSRF protection works, detailed in\n:doc:`the CSRF documentation </ref/contrib/csrf>`. Here are the major changes you\nshould be aware of:\n\n* ``CsrfResponseMiddleware`` and ``CsrfMiddleware`` have been deprecated and\n  will be removed completely in Django 1.4, in favor of a template tag that\n  should be inserted into forms.\n\n* All contrib apps use a ``csrf_protect`` decorator to protect the view. This\n  requires the use of the ``csrf_token`` template tag in the template. If you\n  have used custom templates for contrib views, you MUST READ THE UPGRADE\n  INSTRUCTIONS to fix those templates.\n\n  .. admonition:: Documentation removed\n\n     The upgrade notes have been removed in current Django docs. Please refer\n     to the docs for Django 1.3 or older to find these instructions.\n\n* ``CsrfViewMiddleware`` is included in :setting:`MIDDLEWARE_CLASSES` by\n  default. This turns on CSRF protection by default, so views that accept\n  POST requests need to be written to work with the middleware. Instructions\n  on how to do this are found in the CSRF docs.\n\n* All of the CSRF has moved from contrib to core (with backwards\n  compatible imports in the old locations, which are deprecated and\n  will cease to be supported in Django 1.4).\n\n``get_db_prep_*()`` methods on ``Field``\n----------------------------------------\n\nPrior to Django 1.2, a custom ``Field`` had the option of defining\nseveral functions to support conversion of Python values into\ndatabase-compatible values. A custom field might look something like::\n\n    class CustomModelField(models.Field):\n        # ...\n        def db_type(self):\n            # ...\n\n        def get_db_prep_save(self, value):\n            # ...\n\n        def get_db_prep_value(self, value):\n            # ...\n\n        def get_db_prep_lookup(self, lookup_type, value):\n            # ...\n\nIn 1.2, these three methods have undergone a change in prototype, and\ntwo extra methods have been introduced::\n\n    class CustomModelField(models.Field):\n        # ...\n\n        def db_type(self, connection):\n            # ...\n\n        def get_prep_value(self, value):\n            # ...\n\n        def get_prep_lookup(self, lookup_type, value):\n            # ...\n\n        def get_db_prep_save(self, value, connection):\n            # ...\n\n        def get_db_prep_value(self, value, connection, prepared=False):\n            # ...\n\n        def get_db_prep_lookup(self, lookup_type, value, connection, prepared=False):\n            # ...\n\nThese changes are required to support multiple databases --\n``db_type`` and ``get_db_prep_*`` can no longer make any assumptions\nregarding the database for which it is preparing. The ``connection``\nargument now provides the preparation methods with the specific\nconnection for which the value is being prepared.\n\nThe two new methods exist to differentiate general data-preparation\nrequirements from requirements that are database-specific. The\n``prepared`` argument is used to indicate to the database-preparation\nmethods whether generic value preparation has been performed. If\nan unprepared (i.e., ``prepared=False``) value is provided to the\n``get_db_prep_*()`` calls, they should invoke the corresponding\n``get_prep_*()`` calls to perform generic data preparation.\n\nWe've provided conversion functions that will transparently\nconvert functions adhering to the old prototype into functions\ncompatible with the new prototype. However, these conversion functions\nwill be removed in Django 1.4, so you should upgrade your ``Field``\ndefinitions to use the new prototype as soon as possible.\n\nIf your ``get_db_prep_*()`` methods made no use of the database\nconnection, you should be able to upgrade by renaming\n``get_db_prep_value()`` to ``get_prep_value()`` and\n``get_db_prep_lookup()`` to ``get_prep_lookup()``. If you require\ndatabase specific conversions, then you will need to provide an\nimplementation ``get_db_prep_*`` that uses the ``connection``\nargument to resolve database-specific values.\n\nStateful template tags\n----------------------\n\nTemplate tags that store rendering state on their ``Node`` subclass\nhave always been vulnerable to thread-safety and other issues; as of\nDjango 1.2, however, they may also cause problems when used with the\nnew :ref:`cached template loader<template-loaders>`.\n\nAll of the built-in Django template tags are safe to use with the cached\nloader, but if you're using custom template tags that come from third\nparty packages, or from your own code, you should ensure that the\n``Node`` implementation for each tag is thread-safe. For more\ninformation, see\n:ref:`template tag thread safety considerations<template_tag_thread_safety>`.\n\nYou may also need to update your templates if you were relying on the\nimplementation of Django's template tags *not* being thread safe. The\n:ttag:`cycle` tag is the most likely to be affected in this way,\nespecially when used in conjunction with the :ttag:`include` tag.\nConsider the following template fragment::\n\n    {% for object in object_list %}\n        {% include \"subtemplate.html\" %}\n    {% endfor %}\n\nwith a ``subtemplate.html`` that reads::\n\n    {% cycle 'even' 'odd' %}\n\nUsing the non-thread-safe, pre-Django 1.2 renderer, this would output::\n\n    even odd even odd ...\n\nUsing the thread-safe Django 1.2 renderer, you will instead get::\n\n    even even even even ...\n\nThis is because each rendering of the :ttag:`include` tag is an\nindependent rendering. When the :ttag:`cycle` tag was not thread safe,\nthe state of the :ttag:`cycle` tag would leak between multiple\nrenderings of the same :ttag:`include`. Now that the :ttag:`cycle` tag\nis thread safe, this leakage no longer occurs.\n\n``user_passes_test``, ``login_required`` and ``permission_required``\n--------------------------------------------------------------------\n\n``django.contrib.auth.decorators`` provides the decorators\n``login_required``, ``permission_required`` and\n``user_passes_test``. Previously it was possible to use these\ndecorators both on functions (where the first argument is 'request')\nand on methods (where the first argument is 'self', and the second\nargument is 'request'). Unfortunately, flaws were discovered in the\ncode supporting this: it only works in limited circumstances, and\nproduces errors that are very difficult to debug when it does not\nwork.\n\nFor this reason, the 'auto adapt' behavior has been removed, and if\nyou are using these decorators on methods, you will need to manually\napply :func:`django.utils.decorators.method_decorator` to convert the\ndecorator to one that works with methods. For example, you would\nchange code from this::\n\n    class MyClass(object):\n\n        @login_required\n        def my_view(self, request):\n            pass\n\nto this::\n\n    from django.utils.decorators import method_decorator\n\n    class MyClass(object):\n\n        @method_decorator(login_required)\n        def my_view(self, request):\n            pass\n\nor::\n\n    from django.utils.decorators import method_decorator\n\n    login_required_m = method_decorator(login_required)\n\n    class MyClass(object):\n\n        @login_required_m\n        def my_view(self, request):\n            pass\n\nFor those of you who've been following the development trunk, this\nchange also applies to other decorators introduced since 1.1,\nincluding ``csrf_protect``, ``cache_control`` and anything created\nusing ``decorator_from_middleware``.\n\n:ttag:`if` tag changes\n----------------------\n\nDue to new features in the :ttag:`if` template tag, it no longer\naccepts 'and', 'or' and 'not' as valid **variable** names. Previously,\nthese strings could be used as variable names. Now, the keyword status\nis always enforced, and template code such as ``{% if not %}`` or ``{%\nif and %}`` will throw a ``TemplateSyntaxError``. Also, ``in`` is a\nnew keyword and so is not a valid variable name in this tag.\n\n``LazyObject``\n--------------\n\n``LazyObject`` is an undocumented-but-often-used utility class used for lazily\nwrapping other objects of unknown type.\n\nIn Django 1.1 and earlier, it handled introspection in a non-standard way,\ndepending on wrapped objects implementing a public method named\n``get_all_members()``. Since this could easily lead to name clashes, it has been\nchanged to use the standard Python introspection method, involving\n``__members__`` and ``__dir__()``.\n\nIf you used ``LazyObject`` in your own code\nand implemented the ``get_all_members()`` method for wrapped objects, you'll need\nto make a couple of changes:\n\nFirst, if your class does not have special requirements for introspection (i.e.,\nyou have not implemented ``__getattr__()`` or other methods that allow for\nattributes not discoverable by normal mechanisms), you can simply remove the\n``get_all_members()`` method. The default implementation on ``LazyObject`` will\ndo the right thing.\n\nIf you have more complex requirements for introspection, first rename the\n``get_all_members()`` method to ``__dir__()``. This is the standard\nintrospection method for Python 2.6 and above. If you require support for Python\nversions earlier than 2.6, add the following code to the class::\n\n    __members__ = property(lambda self: self.__dir__())\n\n``__dict__`` on model instances\n-------------------------------\n\nHistorically, the ``__dict__`` attribute of a model instance has only contained\nattributes corresponding to the fields on a model.\n\nIn order to support multiple database configurations, Django 1.2 has\nadded a ``_state`` attribute to object instances. This attribute will\nappear in ``__dict__`` for a model instance. If your code relies on\niterating over ``__dict__`` to obtain a list of fields, you must now\nbe prepared to handle or filter out the ``_state`` attribute.\n\nTest runner exit status code\n----------------------------\n\nThe exit status code of the test runners (``tests/runtests.py`` and ``python\nmanage.py test``) no longer represents the number of failed tests, because a\nfailure of 256 or more tests resulted in a wrong exit status code. The exit\nstatus code for the test runner is now 0 for success (no failing tests) and 1\nfor any number of test failures. If needed, the number of test failures can be\nfound at the end of the test runner's output.\n\nCookie encoding\n---------------\n\nTo fix bugs with cookies in Internet Explorer, Safari, and possibly\nother browsers, our encoding of cookie values was changed so that the\ncomma and semicolon are treated as non-safe characters, and are\ntherefore encoded as ``\\054`` and ``\\073`` respectively.  This could\nproduce backwards incompatibilities, especially if you are storing\ncomma or semi-colon in cookies and have javascript code that parses\nand manipulates cookie values client-side.\n\n``ModelForm.is_valid()`` and ``ModelForm.errors``\n-------------------------------------------------\n\nMuch of the validation work for ModelForms has been moved down to the model\nlevel. As a result, the first time you call ``ModelForm.is_valid()``, access\n``ModelForm.errors`` or otherwise trigger form validation, your model will be\ncleaned in-place. This conversion used to happen when the model was saved. If\nyou need an unmodified instance of your model, you should pass a copy to the\n``ModelForm`` constructor.\n\n``BooleanField`` on MySQL\n--------------------------\n\nIn previous versions of Django, a model's ``BooleanField`` under MySQL\nwould return its value as either ``1`` or ``0``, instead of ``True``\nor ``False``; for most people this wasn't a problem because ``bool``\nis a subclass of ``int`` in Python. In Django 1.2, however,\n``BooleanField`` on MySQL correctly returns a real ``bool``.  The only\ntime this should ever be an issue is if you were expecting the\n``repr`` of a ``BooleanField`` to print ``1`` or ``0``.\n\nChanges to the interpretation of ``max_num`` in FormSets\n--------------------------------------------------------\n\nAs part of enhancements made to the handling of FormSets, the default\nvalue and interpretation of the ``max_num`` parameter to the\n:ref:`django.forms.formsets.formset_factory() <formsets-max-num>` and\n:ref:`django.forms.models.modelformset_factory()\n<model-formsets-max-num>` functions has changed slightly. This\nchange also affects the way the ``max_num`` argument is :ref:`used for\ninline admin objects <ref-contrib-admin-inline-max-num>`\n\nPreviously, the default value for ``max_num`` was ``0`` (zero).\nFormSets then used the boolean value of ``max_num`` to determine if a\nlimit was to be imposed on the number of generated forms. The default\nvalue of ``0`` meant that there was no default limit on the number of\nforms in a FormSet.\n\nStarting with 1.2, the default value for ``max_num`` has been changed\nto ``None``, and FormSets will differentiate between a value of\n``None`` and a value of ``0``. A value of ``None`` indicates that no\nlimit on the number of forms is to be imposed; a value of ``0``\nindicates that a maximum of 0 forms should be imposed. This doesn't\nnecessarily mean that no forms will be displayed -- see the\n:ref:`ModelFormSet documentation <model-formsets-max-num>` for more\ndetails.\n\nIf you were manually specifying a value of ``0`` for ``max_num``, you\nwill need to update your FormSet and/or admin definitions.\n\n.. seealso::\n\n    :ref:`1.2-js-assisted-inlines`\n\n``email_re``\n------------\n\nAn undocumented regular expression for validating email addresses has been moved\nfrom ``django.form.fields`` to ``django.core.validators``. You will need to\nupdate your imports if you are using it.\n\n.. _deprecated-features-1.2:\n\nFeatures deprecated in 1.2\n==========================\n\nFinally, Django 1.2 deprecates some features from earlier releases.\nThese features are still supported, but will be gradually phased out\nover the next few release cycles.\n\nCode taking advantage of any of the features below will raise a\n``PendingDeprecationWarning`` in Django 1.2. This warning will be\nsilent by default, but may be turned on using Python's :mod:`warnings`\nmodule, or by running Python with a ``-Wd`` or ``-Wall`` flag.\n\nIn Django 1.3, these warnings will become a ``DeprecationWarning``,\nwhich is *not* silent. In Django 1.4 support for these features will\nbe removed entirely.\n\n.. seealso::\n\n    For more details, see the documentation :doc:`Django's release process\n    </internals/release-process>` and our :doc:`deprecation timeline\n    </internals/deprecation>`.`\n\n.. _specifying-databases:\n\nSpecifying databases\n--------------------\n\nPrior to Django 1.2, Django used a number of settings to control\naccess to a single database. Django 1.2 introduces support for\nmultiple databases, and as a result the way you define database\nsettings has changed.\n\nAny existing Django settings file will continue to work as expected\nuntil Django 1.4. Until then, old-style database settings will be\nautomatically translated to the new-style format.\n\nIn the old-style (pre 1.2) format, you had a number of ``DATABASE_``\nsettings in your settings file. For example::\n\n    DATABASE_NAME = 'test_db'\n    DATABASE_ENGINE = 'postgresql_psycopg2'\n    DATABASE_USER = 'myusername'\n    DATABASE_PASSWORD = 's3krit'\n\nThese settings are now in a dictionary named\n:setting:`DATABASES`. Each item in the dictionary corresponds to a\nsingle database connection, with the name ``'default'`` describing the\ndefault database connection. The setting names have also been\nshortened. The previous sample settings would now look like this::\n\n    DATABASES = {\n        'default': {\n            'NAME': 'test_db',\n            'ENGINE': 'django.db.backends.postgresql_psycopg2',\n            'USER': 'myusername',\n            'PASSWORD': 's3krit',\n        }\n    }\n\nThis affects the following settings:\n\n=========================================  ==========================\n Old setting                                New Setting\n=========================================  ==========================\n`DATABASE_ENGINE`                          :setting:`ENGINE <DATABASE-ENGINE>`\n`DATABASE_HOST`                            :setting:`HOST`\n`DATABASE_NAME`                            :setting:`NAME`\n`DATABASE_OPTIONS`                         :setting:`OPTIONS`\n`DATABASE_PASSWORD`                        :setting:`PASSWORD`\n`DATABASE_PORT`                            :setting:`PORT`\n`DATABASE_USER`                            :setting:`USER`\n`TEST_DATABASE_CHARSET`                    :setting:`TEST_CHARSET`\n`TEST_DATABASE_COLLATION`                  :setting:`TEST_COLLATION`\n`TEST_DATABASE_NAME`                       :setting:`TEST_NAME`\n=========================================  ==========================\n\nThese changes are also required if you have manually created a database\nconnection using ``DatabaseWrapper()`` from your database backend of choice.\n\nIn addition to the change in structure, Django 1.2 removes the special\nhandling for the built-in database backends. All database backends\nmust now be specified by a fully qualified module name (i.e.,\n``django.db.backends.postgresql_psycopg2``, rather than just\n``postgresql_psycopg2``).\n\n``postgresql`` database backend\n-------------------------------\n\nThe ``psycopg1`` library has not been updated since October 2005. As a\nresult, the ``postgresql`` database backend, which uses this library,\nhas been deprecated.\n\nIf you are currently using the ``postgresql`` backend, you should\nmigrate to using the ``postgresql_psycopg2`` backend. To update your\ncode, install the ``psycopg2`` library and change the\n:setting:`ENGINE <DATABASE-ENGINE>` setting to use\n``django.db.backends.postgresql_psycopg2``.\n\nCSRF response-rewriting middleware\n----------------------------------\n\n``CsrfResponseMiddleware``, the middleware that automatically inserted\nCSRF tokens into ``POST`` forms in outgoing pages, has been deprecated\nin favor of a template tag method (see above), and will be removed\ncompletely in Django 1.4. ``CsrfMiddleware``, which includes the\nfunctionality of ``CsrfResponseMiddleware`` and\n``CsrfViewMiddleware``, has likewise been deprecated.\n\nAlso, the CSRF module has moved from contrib to core, and the old\nimports are deprecated, as described in the upgrading notes.\n\n.. admonition:: Documentation removed\n\n   The upgrade notes have been removed in current Django docs. Please refer\n   to the docs for Django 1.3 or older to find these instructions.\n\n``SMTPConnection``\n------------------\n\nThe ``SMTPConnection`` class has been deprecated in favor of a generic\nemail backend API. Old code that explicitly instantiated an instance\nof an SMTPConnection::\n\n    from django.core.mail import SMTPConnection\n    connection = SMTPConnection()\n    messages = get_notification_email()\n    connection.send_messages(messages)\n\n...should now call :meth:`~django.core.mail.get_connection()` to\ninstantiate a generic email connection::\n\n    from django.core.mail import get_connection\n    connection = get_connection()\n    messages = get_notification_email()\n    connection.send_messages(messages)\n\nDepending on the value of the :setting:`EMAIL_BACKEND` setting, this\nmay not return an SMTP connection. If you explicitly require an SMTP\nconnection with which to send email, you can explicitly request an\nSMTP connection::\n\n    from django.core.mail import get_connection\n    connection = get_connection('django.core.mail.backends.smtp.EmailBackend')\n    messages = get_notification_email()\n    connection.send_messages(messages)\n\nIf your call to construct an instance of ``SMTPConnection`` required\nadditional arguments, those arguments can be passed to the\n:meth:`~django.core.mail.get_connection()` call::\n\n    connection = get_connection('django.core.mail.backends.smtp.EmailBackend', hostname='localhost', port=1234)\n\nUser Messages API\n-----------------\n\nThe API for storing messages in the user ``Message`` model (via\n``user.message_set.create``) is now deprecated and will be removed in Django\n1.4 according to the standard :doc:`release process </internals/release-process>`.\n\nTo upgrade your code, you need to replace any instances of this::\n\n    user.message_set.create('a message')\n\n...with the following::\n\n    from django.contrib import messages\n    messages.add_message(request, messages.INFO, 'a message')\n\nAdditionally, if you make use of the method, you need to replace the\nfollowing::\n\n    for message in user.get_and_delete_messages():\n        ...\n\n...with::\n\n    from django.contrib import messages\n    for message in messages.get_messages(request):\n        ...\n\nFor more information, see the full\n:doc:`messages documentation </ref/contrib/messages>`. You should begin to\nupdate your code to use the new API immediately.\n\nDate format helper functions\n----------------------------\n\n``django.utils.translation.get_date_formats()`` and\n``django.utils.translation.get_partial_date_formats()`` have been deprecated\nin favor of the appropriate calls to ``django.utils.formats.get_format()``,\nwhich is locale-aware when :setting:`USE_L10N` is set to ``True``, and falls\nback to default settings if set to ``False``.\n\nTo get the different date formats, instead of writing this::\n\n    from django.utils.translation import get_date_formats\n    date_format, datetime_format, time_format = get_date_formats()\n\n...use::\n\n    from django.utils import formats\n    date_format = formats.get_format('DATE_FORMAT')\n    datetime_format = formats.get_format('DATETIME_FORMAT')\n    time_format = formats.get_format('TIME_FORMAT')\n\nOr, when directly formatting a date value::\n\n    from django.utils import formats\n    value_formatted = formats.date_format(value, 'DATETIME_FORMAT')\n\nThe same applies to the globals found in ``django.forms.fields``:\n\n* ``DEFAULT_DATE_INPUT_FORMATS``\n* ``DEFAULT_TIME_INPUT_FORMATS``\n* ``DEFAULT_DATETIME_INPUT_FORMATS``\n\nUse ``django.utils.formats.get_format()`` to get the appropriate formats.\n\nFunction-based test runners\n---------------------------\n\nDjango 1.2 changes the test runner tools to use a class-based\napproach. Old style function-based test runners will still work, but\nshould be updated to use the new :ref:`class-based runners\n<topics-testing-test_runner>`.\n\n.. _1.2-updating-feeds:\n\n``Feed`` in ``django.contrib.syndication.feeds``\n------------------------------------------------\n\nThe ``django.contrib.syndication.feeds.Feed`` class has been\nreplaced by the :class:`django.contrib.syndication.views.Feed` class.\nThe old ``feeds.Feed`` class is deprecated, and will be removed in\nDjango 1.4.\n\nThe new class has an almost identical API, but allows instances to be\nused as views. For example, consider the use of the old framework in\nthe following :doc:`URLconf </topics/http/urls>`::\n\n    from django.conf.urls.defaults import *\n    from myproject.feeds import LatestEntries, LatestEntriesByCategory\n\n    feeds = {\n        'latest': LatestEntries,\n        'categories': LatestEntriesByCategory,\n    }\n\n    urlpatterns = patterns('',\n        # ...\n        (r'^feeds/(?P<url>.*)/$', 'django.contrib.syndication.views.feed',\n            {'feed_dict': feeds}),\n        # ...\n    )\n\nUsing the new Feed class, these feeds can be deployed directly as views::\n\n    from django.conf.urls.defaults import *\n    from myproject.feeds import LatestEntries, LatestEntriesByCategory\n\n    urlpatterns = patterns('',\n        # ...\n        (r'^feeds/latest/$', LatestEntries()),\n        (r'^feeds/categories/(?P<category_id>\\d+)/$', LatestEntriesByCategory()),\n        # ...\n    )\n\nIf you currently use the ``feed()`` view, the ``LatestEntries`` class would\noften not need to be modified apart from subclassing the new\n:class:`~django.contrib.syndication.views.Feed` class. The exception is if\nDjango was automatically working out the name of the template to use to render\nthe feed's description and title elements (if you were not specifying the\n``title_template`` and ``description_template`` attributes). You should ensure\nthat you always specify ``title_template`` and ``description_template``\nattributes, or provide ``item_title()`` and ``item_description()`` methods.\n\nHowever, ``LatestEntriesByCategory`` uses the ``get_object()`` method\nwith the ``bits`` argument to specify a specific category to show. In\nthe new :class:`~django.contrib.syndication.views.Feed` class,\n``get_object()`` method takes a ``request`` and arguments from the\nURL, so it would look like this::\n\n    from django.contrib.syndication.views import Feed\n    from django.shortcuts import get_object_or_404\n    from myproject.models import Category\n\n    class LatestEntriesByCategory(Feed):\n        def get_object(self, request, category_id):\n            return get_object_or_404(Category, id=category_id)\n\n        # ...\n\nAdditionally, the ``get_feed()`` method on ``Feed`` classes now take\ndifferent arguments, which may impact you if you use the ``Feed``\nclasses directly. Instead of just taking an optional ``url`` argument,\nit now takes two arguments: the object returned by its own\n``get_object()`` method, and the current ``request`` object.\n\nTo take into account ``Feed`` classes not being initialized for each\nrequest, the ``__init__()`` method now takes no arguments by default.\nPreviously it would have taken the ``slug`` from the URL and the\n``request`` object.\n\nIn accordance with `RSS best practices`_, RSS feeds will now include\nan ``atom:link`` element. You may need to update your tests to take\nthis into account.\n\nFor more information, see the full :doc:`syndication framework\ndocumentation </ref/contrib/syndication>`.\n\n.. _RSS best practices: http://www.rssboard.org/rss-profile\n\nTechnical message IDs\n---------------------\n\nUp to version 1.1 Django used technical message IDs\nto provide localizers the possibility to translate date and time formats. They\nwere translatable :term:`translation strings <translation string>` that could\nbe recognized because they were all upper case (for example\n:setting:`DATETIME_FORMAT`, :setting:`DATE_FORMAT`, :setting:`TIME_FORMAT`).\nThey have been deprecated in favor of the new :ref:`Format localization\n<format-localization>` infrastructure that allows localizers to specify that\ninformation in a ``formats.py`` file in the corresponding\n``django/conf/locale/<locale name>/`` directory.\n\nGeoDjango\n---------\n\nTo allow support for multiple databases, the GeoDjango database internals were\nchanged substantially.  The largest backwards-incompatible change is that\nthe module ``django.contrib.gis.db.backend`` was renamed to\n:mod:`django.contrib.gis.db.backends`, where the full-fledged\n:ref:`spatial database backends <spatial-backends>` now exist.  The\nfollowing sections provide information on the most-popular APIs that\nwere affected by these changes.\n\n``SpatialBackend``\n^^^^^^^^^^^^^^^^^^\n\nPrior to the creation of the separate spatial backends, the\n``django.contrib.gis.db.backend.SpatialBackend`` object was\nprovided as an abstraction to introspect on the capabilities of\nthe spatial database.  All of the attributes and routines provided by\n``SpatialBackend`` are now a part of the ``ops`` attribute of the\ndatabase backend.\n\nThe old module ``django.contrib.gis.db.backend`` is still provided\nfor backwards-compatibility access to a ``SpatialBackend`` object,\nwhich is just an alias to the ``ops`` module of the\n*default* spatial database connection.\n\nUsers that were relying on undocumented modules and objects\nwithin ``django.contrib.gis.db.backend``, rather the abstractions\nprovided by ``SpatialBackend``, are required to modify their code.\nFor example, the following import which would work in 1.1 and\nbelow::\n\n    from django.contrib.gis.db.backend.postgis import PostGISAdaptor\n\nWould need to be changed::\n\n    from django.db import connection\n    PostGISAdaptor = connection.ops.Adapter\n\n``SpatialRefSys`` and ``GeometryColumns`` models\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nIn previous versions of GeoDjango, :mod:`django.contrib.gis.db.models`\nhad ``SpatialRefSys`` and ``GeometryColumns`` models for querying\nthe OGC spatial metadata tables ``spatial_ref_sys`` and ``geometry_columns``,\nrespectively.\n\nWhile these aliases are still provided, they are only for the\n*default* database connection and exist only if the default connection\nis using a supported spatial database backend.\n\n.. note::\n\n    Because the table structure of the OGC spatial metadata tables\n    differs across spatial databases, the ``SpatialRefSys`` and\n    ``GeometryColumns`` models can no longer be associated with\n    the ``gis`` application name.  Thus, no models will be returned\n    when using the ``get_models`` method in the following example::\n\n        >>> from django.db.models import get_app, get_models\n        >>> get_models(get_app('gis'))\n        []\n\nTo get the correct ``SpatialRefSys`` and ``GeometryColumns``\nfor your spatial database use the methods provided by the spatial backend::\n\n     >>> from django.db import connections\n     >>> SpatialRefSys = connections['my_spatialite'].ops.spatial_ref_sys()\n     >>> GeometryColumns = connections['my_postgis'].ops.geometry_columns()\n\n.. note::\n\n    When using the models returned from the ``spatial_ref_sys()`` and\n    ``geometry_columns()`` method, you'll still need to use the\n    correct database alias when querying on the non-default connection.\n    In other words, to ensure that the models in the example above\n    use the correct database::\n\n        sr_qs = SpatialRefSys.objects.using('my_spatialite').filter(...)\n        gc_qs = GeometryColumns.objects.using('my_postgis').filter(...)\n\nLanguage code ``no``\n--------------------\n\nThe currently used language code for Norwegian Bokmål ``no`` is being\nreplaced by the more common language code ``nb``.\n\nFunction-based template loaders\n-------------------------------\n\nDjango 1.2 changes the template loading mechanism to use a class-based\napproach. Old style function-based template loaders will still work, but should\nbe updated to use the new :ref:`class-based template loaders\n<topic-template-alternate-language>`.\n"
  },
  {
    "path": "Django-1.5.1/docs/releases/1.3-alpha-1.txt",
    "content": "================================\nDjango 1.3 alpha 1 release notes\n================================\n\nNovember 11, 2010\n\nWelcome to Django 1.3 alpha 1!\n\nThis is the first in a series of preview/development releases leading\nup to the eventual release of Django 1.3. This release is primarily\ntargeted at developers who are interested in trying out new features\nand testing the Django codebase to help identify and resolve bugs\nprior to the final 1.3 release.\n\nAs such, this release is *not* intended for production use, and any such use is\ndiscouraged.\n\nAs of this alpha release, Django 1.3 contains a number of nifty `new\nfeatures`_, lots of bug fixes, some minor `backwards incompatible\nchanges`_ and an easy upgrade path from Django 1.2.\n\n.. _new features: `What's new in Django 1.3 alpha 1`_\n\n.. _backwards incompatible changes: backwards-incompatible-changes-1.3-alpha-1_\n\nWhat's new in Django 1.3 alpha 1\n================================\n\nClass-based views\n~~~~~~~~~~~~~~~~~\n\nDjango 1.3 adds a framework that allows you to use a class as a view.\nThis means you can compose a view out of a collection of methods that\ncan be subclassed and overridden to provide common views of data without\nhaving to write too much code.\n\nAnalogs of all the old function-based generic views have been provided,\nalong with a completely generic view base class that can be used as\nthe basis for reusable applications that can be easily extended.\n\nSee :doc:`the documentation on Class-based Generic Views\n</topics/class-based-views/index>` for more details. There is also a document to\nhelp you `convert your function-based generic views to class-based\nviews <https://docs.djangoproject.com/en/1.4/topics/generic-views-migration/>`_.\n\nLogging\n~~~~~~~\n\nDjango 1.3 adds framework-level support for Python's logging module.\nThis means you can now easily configure and control logging as part of\nyour Django project. A number of logging handlers and logging calls\nhave been added to Django's own code as well -- most notably, the\nerror emails sent on a HTTP 500 server error are now handled as a\nlogging activity. See :doc:`the documentation on Django's logging\ninterface </topics/logging>` for more details.\n\nExtended static files handling\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nDjango 1.3 ships with a new contrib app ``'django.contrib.staticfiles'``\nto help developers handle the static media files (images, CSS, Javascript,\netc.) that are needed to render a complete web page.\n\nIn previous versions of Django, it was common to place static assets\nin :setting:`MEDIA_ROOT` along with user-uploaded files, and serve\nthem both at :setting:`MEDIA_URL`. Part of the purpose of introducing\nthe ``staticfiles`` app is to make it easier to keep static files\nseparate from user-uploaded files. Static assets should now go in\n``static/`` subdirectories of your apps or in other static assets\ndirectories listed in :setting:`STATICFILES_DIRS`, and will be served\nat :setting:`STATIC_URL`.\n\nSee the :doc:`reference documentation of the app </ref/contrib/staticfiles>`\nfor more details or learn how to :doc:`manage static files\n</howto/static-files>`.\n\n``unittest2`` support\n~~~~~~~~~~~~~~~~~~~~~\n\nPython 2.7 introduced some major changes to the unittest library,\nadding some extremely useful features. To ensure that every Django\nproject can benefit from these new features, Django ships with a\ncopy of unittest2_, a copy of the Python 2.7 unittest library,\nbackported for Python 2.4 compatibility.\n\nTo access this library, Django provides the\n``django.utils.unittest`` module alias. If you are using Python\n2.7, or you have installed unittest2 locally, Django will map the\nalias to the installed version of the unittest library. Otherwise,\nDjango will use it's own bundled version of unittest2.\n\nTo use this alias, simply use::\n\n    from django.utils import unittest\n\nwherever you would have historically used::\n\n    import unittest\n\nIf you want to continue to use the base unittest libary, you can --\nyou just won't get any of the nice new unittest2 features.\n\n.. _unittest2: http://pypi.python.org/pypi/unittest2\n\nTransaction context managers\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nUsers of Python 2.5 and above may now use :ref:`transaction management functions\n<transaction-management-functions>` as `context managers`_. For example::\n\n    with transaction.autocommit():\n        # ...\n\n.. _context managers: http://docs.python.org/glossary.html#term-context-manager\n\nFor more information, see :ref:`transaction-management-functions`.\n\nConfigurable delete-cascade\n~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n:class:`~django.db.models.ForeignKey` and\n:class:`~django.db.models.OneToOneField` now accept an\n:attr:`~django.db.models.ForeignKey.on_delete` argument to customize behavior\nwhen the referenced object is deleted. Previously, deletes were always\ncascaded; available alternatives now include set null, set default, set to any\nvalue, protect, or do nothing.\n\nFor more information, see the :attr:`~django.db.models.ForeignKey.on_delete`\ndocumentation.\n\nContextual markers in translatable strings\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nFor translation strings with ambiguous meaning, you can now\nuse the ``pgettext`` function to specify the context of the string.\n\nFor more information, see :ref:`contextual-markers`\n\nEverything else\n~~~~~~~~~~~~~~~\n\nDjango :doc:`1.1 <1.1>` and :doc:`1.2 <1.2>` added\nlots of big ticket items to Django, like multiple-database support,\nmodel validation, and a session-based messages framework. However,\nthis focus on big features came at the cost of lots of smaller\nfeatures.\n\nTo compensate for this, the focus of the Django 1.3 development\nprocess has been on adding lots of smaller, long standing feature\nrequests. These include:\n\n* Improved tools for accessing and manipulating the current Site via\n  ``django.contrib.sites.models.get_current_site()``.\n\n* A :class:`~django.test.client.RequestFactory` for mocking\n  requests in tests.\n\n* A new test assertion --\n  :meth:`~django.test.TestCase.assertNumQueries` -- making it\n  easier to test the database activity associated with a view.\n\n\n.. _backwards-incompatible-changes-1.3-alpha-1:\n\nBackwards-incompatible changes in 1.3 alpha 1\n=============================================\n\nPasswordInput default rendering behavior\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe :class:`~django.forms.PasswordInput` form widget, intended for use\nwith form fields which represent passwords, accepts a boolean keyword\nargument ``render_value`` indicating whether to send its data back to\nthe browser when displaying a submitted form with errors. Prior to\nDjango 1.3, this argument defaulted to ``True``, meaning that the\nsubmitted password would be sent back to the browser as part of the\nform. Developers who wished to add a bit of additional security by\nexcluding that value from the redisplayed form could instantiate a\n:class:`~django.forms.PasswordInput` passing ``render_value=False`` .\n\nDue to the sensitive nature of passwords, however, Django 1.3 takes\nthis step automatically; the default value of ``render_value`` is now\n``False``, and developers who want the password value returned to the\nbrowser on a submission with errors (the previous behavior) must now\nexplicitly indicate this. For example::\n\n    class LoginForm(forms.Form):\n        username = forms.CharField(max_length=100)\n        password = forms.CharField(widget=forms.PasswordInput(render_value=True))\n\n\nClearable default widget for FileField\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nDjango 1.3 now includes a ``ClearableFileInput`` form widget in addition to\n``FileInput``. ``ClearableFileInput`` renders with a checkbox to clear the\nfield's value (if the field has a value and is not required); ``FileInput``\nprovided no means for clearing an existing file from a ``FileField``.\n\n``ClearableFileInput`` is now the default widget for a ``FileField``, so\nexisting forms including ``FileField`` without assigning a custom widget will\nneed to account for the possible extra checkbox in the rendered form output.\n\nTo return to the previous rendering (without the ability to clear the\n``FileField``), use the ``FileInput`` widget in place of\n``ClearableFileInput``. For instance, in a ``ModelForm`` for a hypothetical\n``Document`` model with a ``FileField`` named ``document``::\n\n    from django import forms\n    from myapp.models import Document\n\n    class DocumentForm(forms.ModelForm):\n        class Meta:\n            model = Document\n            widgets = {'document': forms.FileInput}\n\nNew index on database session table\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nPrior to Django 1.3, the database table used by the database backend\nfor the :doc:`sessions </topics/http/sessions>` app had no index on\nthe ``expire_date`` column. As a result, date-based queries on the\nsession table -- such as the query that is needed to purge old\nsessions -- would be very slow if there were lots of sessions.\n\nIf you have an existing project that is using the database session\nbackend, you don't have to do anything to accommodate this change.\nHowever, you may get a significant performance boost if you manually\nadd the new index to the session table. The SQL that will add the\nindex can be found by running the :djadmin:`sqlindexes` admin\ncommand::\n\n    python manage.py sqlindexes sessions\n\nNo more naughty words\n~~~~~~~~~~~~~~~~~~~~~\n\nDjango has historically provided (and enforced) a list of profanities.\nThe :doc:`comments app </ref/contrib/comments/index>` has enforced this\nlist of profanities, preventing people from submitting comments that\ncontained one of those profanities.\n\nUnfortunately, the technique used to implement this profanities list\nwas woefully naive, and prone to the `Scunthorpe problem`_. Fixing the\nbuilt in filter to fix this problem would require significant effort,\nand since natural language processing isn't the normal domain of a web\nframework, we have \"fixed\" the problem by making the list of\nprohibited words an empty list.\n\nIf you want to restore the old behavior, simply put a\n:setting:`PROFANITIES_LIST` setting in your settings file that includes the\nwords that you want to prohibit (see the `commit that implemented this\nchange`_ if you want to see the list of words that was historically\nprohibited). However, if avoiding profanities is important to you, you\nwould be well advised to seek out a better, less naive approach to the\nproblem.\n\n.. _Scunthorpe problem: http://en.wikipedia.org/wiki/Scunthorpe_problem\n.. _commit that implemented this change: https://code.djangoproject.com/changeset/13996\n\nLocalflavor changes\n~~~~~~~~~~~~~~~~~~~\n\nDjango 1.3 introduces the following backwards-incompatible changes to\nlocal flavors:\n\n* Indonesia (id) -- The province \"Nanggroe Aceh Darussalam (NAD)\"\n  has been removed from the province list in favor of the new\n  official designation \"Aceh (ACE)\".\n\n\nFeatures deprecated in 1.3\n==========================\n\nDjango 1.3 deprecates some features from earlier releases.\nThese features are still supported, but will be gradually phased out\nover the next few release cycles.\n\nCode taking advantage of any of the features below will raise a\n``PendingDeprecationWarning`` in Django 1.3. This warning will be\nsilent by default, but may be turned on using Python's :mod:`warnings`\nmodule, or by running Python with a ``-Wd`` or ``-Wall`` flag.\n\nIn Django 1.4, these warnings will become a ``DeprecationWarning``,\nwhich is *not* silent. In Django 1.5 support for these features will\nbe removed entirely.\n\n.. seealso::\n\n    For more details, see the documentation :doc:`Django's release process\n    </internals/release-process>` and our :doc:`deprecation timeline\n    </internals/deprecation>`.\n\n``mod_python`` support\n~~~~~~~~~~~~~~~~~~~~~~\n\nThe ``mod_python`` library has not had a release since 2007 or a commit since\n2008. The Apache Foundation board voted to remove ``mod_python`` from the set\nof active projects in its version control repositories, and its lead developer\nhas shifted all of his efforts toward the lighter, slimmer, more stable, and\nmore flexible ``mod_wsgi`` backend.\n\nIf you are currently using the ``mod_python`` request handler, you are strongly\nencouraged to redeploy your Django instances using :doc:`mod_wsgi\n</howto/deployment/wsgi/modwsgi>`.\n\nFunction-based generic views\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nAs a result of the introduction of class-based generic views, the\nfunction-based generic views provided by Django have been deprecated.\nThe following modules and the views they contain have been deprecated:\n\n* ``django.views.generic.create_update``\n* ``django.views.generic.date_based``\n* ``django.views.generic.list_detail``\n* ``django.views.generic.simple``\n\nTest client response ``template`` attribute\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nDjango's :ref:`test client <test-client>` returns\n:class:`~django.test.client.Response` objects annotated with extra testing\ninformation. In Django versions prior to 1.3, this included a ``template``\nattribute containing information about templates rendered in generating the\nresponse: either None, a single :class:`~django.template.Template` object, or a\nlist of :class:`~django.template.Template` objects. This inconsistency in\nreturn values (sometimes a list, sometimes not) made the attribute difficult\nto work with.\n\nIn Django 1.3 the ``template`` attribute is deprecated in favor of a new\n:attr:`~django.test.client.Response.templates` attribute, which is always a\nlist, even if it has only a single element or no elements.\n\n``DjangoTestRunner``\n~~~~~~~~~~~~~~~~~~~~\n\nAs a result of the introduction of support for unittest2, the features\nof ``django.test.simple.DjangoTestRunner`` (including fail-fast\nand Ctrl-C test termination) have been made redundant. In view of this\nredundancy, ``DjangoTestRunner`` has been turned into an empty placeholder\nclass, and will be removed entirely in Django 1.5.\n\nThe Django 1.3 roadmap\n======================\n\nBefore the final Django 1.3 release, several other preview/development\nreleases will be made available. The current schedule consists of at\nleast the following:\n\n* Week of **November 29, 2010**: First Django 1.3 beta release. Final\n  feature freeze for Django 1.3.\n\n* Week of **January 10, 2011**: First Django 1.3 release\n  candidate. String freeze for translations.\n\n* Week of **January 17, 2011**: Django 1.3 final release.\n\nIf necessary, additional alpha, beta or release-candidate packages\nwill be issued prior to the final 1.3 release. Django 1.3 will be\nreleased approximately one week after the final release candidate.\n\n\nWhat you can do to help\n=======================\n\nIn order to provide a high-quality 1.3 release, we need your help. Although this\nalpha release is, again, *not* intended for production use, you can help the\nDjango team by trying out the alpha codebase in a safe test environment and\nreporting any bugs or issues you encounter. The Django ticket tracker is the\ncentral place to search for open issues:\n\n* https://code.djangoproject.com/timeline\n\nPlease open new tickets if no existing ticket corresponds to a problem you're\nrunning into.\n\nAdditionally, discussion of Django development, including progress toward the\n1.3 release, takes place daily on the django-developers mailing list:\n\n* http://groups.google.com/group/django-developers\n\n... and in the ``#django-dev`` IRC channel on ``irc.freenode.net``. If you're\ninterested in helping out with Django's development, feel free to join the\ndiscussions there.\n\nDjango's online documentation also includes pointers on how to contribute to\nDjango:\n\n* :doc:`How to contribute to Django </internals/contributing/index>`\n\nContributions on any level -- developing code, writing documentation or simply\ntriaging tickets and helping to test proposed bugfixes -- are always welcome and\nappreciated.\n\nSeveral development sprints will also be taking place before the 1.3\nrelease; these will typically be announced in advance on the\ndjango-developers mailing list, and anyone who wants to help is\nwelcome to join in.\n"
  },
  {
    "path": "Django-1.5.1/docs/releases/1.3-beta-1.txt",
    "content": "================================\nDjango 1.3 beta 1 release notes\n================================\n\nWelcome to Django 1.3 beta 1!\n\nThis is the second in a series of preview/development releases leading\nup to the eventual release of Django 1.3. This release is primarily\ntargeted at developers who are interested in trying out new features\nand testing the Django codebase to help identify and resolve bugs\nprior to the final 1.3 release.\n\nAs such, this release is *not* intended for production use, and any such use\nis discouraged.\n\nWhat's new in Django 1.3 beta 1\n===============================\n\nFurther tweaks to the staticfiles app\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nDjango 1.3 ships with a new contrib app :mod:`django.contrib.staticfiles`\nto help developers handle the static media files (images, CSS, JavaScript,\netc.) that are needed to render a complete web page.\n\nThe :mod:`~django.contrib.staticfiles` app ships with the ability to\nautomatically serve static files during development (if the :setting:`DEBUG`\nsetting is ``True``) when using the :djadmin:`runserver` management command.\nBased on feedback from the community this release adds two new options to the\n:djadmin:`runserver` command to modify this behavior:\n\n* ``--nostatic``: prevents the :djadmin:`runserver` command from serving\n  files completely.\n\n* ``--insecure``: enables serving of static files even if running with\n  :setting:`DEBUG` set to False. (This is **not** recommended!)\n\nSee the :doc:`staticfiles reference documentation </ref/contrib/staticfiles>`\nfor more details, or learn :doc:`how to manage static files\n</howto/static-files>`.\n\nTranslation comments\n~~~~~~~~~~~~~~~~~~~~\n\nIf you would like to give translators hints about a translatable string, you\ncan add a comment prefixed with the ``Translators`` keyword on the line\npreceding the string, e.g.::\n\n    def my_view(request):\n        # Translators: This message appears on the home page only\n        output = ugettext(\"Welcome to my site.\")\n\nThe comment will appear in the resulting .po file and should also be\ndisplayed by most translation tools.\n\nFor more information, see :ref:`translator-comments`.\n\nPermissions for inactive users\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nIf you provide a custom auth backend with ``supports_inactive_user`` set to\n``True``, an inactive user model will check the backend for permissions.\nThis is useful for further centralizing the permission handling. See the\n:doc:`authentication docs </topics/auth/index>` for more details.\n\nBackwards-incompatible changes in 1.3 alpha 2\n=============================================\n\nChange to admin lookup filters\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe Django admin has long had an undocumented \"feature\" allowing savvy\nusers to manipulate the query string of changelist pages to filter the\nlist of objects displayed. However, this also creates a security\nissue, as a staff user with sufficient knowledge of model structure\ncould use this \"feature\" to gain access to information he or she would\nnot normally have.\n\nAs a result, changelist filtering now explicitly validates all lookup\narguments in the query string, and permits only fields which are\ndirectly on the model, or relations explicitly permitted by the\n``ModelAdmin`` definition. If you were relying on this undocumented\nfeature, you will need to update your ``ModelAdmin`` definitions to\nwhitelist the relations you choose to expose for filtering.\n\nIntroduction of STATIC_URL and STATIC_ROOT settings\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe newly introduced :mod:`~django.contrib.staticfiles` app -- which extends\nDjango's abilities to handle static files for apps and projects -- required the\nadditon of two new settings to refer to those files in templates and code,\nespecially in contrast to the :setting:`MEDIA_URL` and :setting:`MEDIA_ROOT`\nsettings that refer to user-uploaded files.\n\nPrior to 1.3 alpha 2 these settings were called ``STATICFILES_URL`` and\n``STATICFILES_ROOT`` to follow the naming scheme for app-centric settings.\nBased on feedback from the community it became apparent that those settings\ncreated confusion, especially given the fact that handling static files is also\ndesired outside the use of the optional :mod:`~django.contrib.staticfiles` app.\n\nAs a result, we took the following steps to rectify the issue:\n\n* Two new global settings were added that will be used by, **but are not\n  limited to**, the :doc:`staticfiles</ref/contrib/staticfiles>` app:\n\n* :setting:`STATIC_ROOT` (formally ``STATICFILES_ROOT``)\n\n* :setting:`STATIC_URL` (formally ``STATICFILES_URL``)\n\n* The ``django.contrib.staticfiles.templatetags.staticfiles.get_staticfiles_prefix``\n  template tag was moved to Django's core (``django.templatetags.static``) and\n  renamed to :ttag:`get_static_prefix`.\n\n* The ``django.contrib.staticfiles.context_processors.staticfiles``\n  context processor was moved to Django's core\n  (``django.core.context_processors.static``) and renamed to\n  :func:`~django.core.context_processors.static`.\n\n* :ref:`form-media-paths` now uses :setting:`STATIC_URL` as the prefix\n  **if the value is not None**, and falls back to the previously used\n  :setting:`MEDIA_URL` setting otherwise.\n\nChanges to the login methods of the admin\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nIn previous version the admin app defined login methods in multiple locations\nand ignored the almost identical implementation in the already used auth app.\nA side effect of this duplication was the missing adoption of the changes made\nin r12634_ to support a broader set of characters for usernames.\n\nThis release refactors the admin's login mechanism to use a subclass of the\n:class:`~django.contrib.auth.forms.AuthenticationForm` instead of a manual\nform validation. The previously undocumented method\n``'django.contrib.admin.sites.AdminSite.display_login_form'`` has been removed\nin favor of a new :attr:`~django.contrib.admin.AdminSite.login_form`\nattribute.\n\n.. _r12634: https://code.djangoproject.com/changeset/12634\n\nChanges to ``USStateField``\n===========================\n\nThe ``django.contrib.localflavor`` application contains collections\nof code relevant to specific countries or cultures. One such is\n``USStateField``, which provides a field for storing the two-letter postal\nabbreviation of a U.S. state. This field has consistently caused problems,\nhowever, because it is often used to store the state portion of a U.S postal\naddress, but not all \"states\" recognized by the U.S Postal Service are\nactually states of the U.S. or even U.S. territory. Several\ncompromises over the list of choices resulted in some users feeling\nthe field supported too many locations, while others felt it supported\ntoo few.\n\nIn Django 1.3 we're taking a new approach to this problem, implemented\nas a pair of changes:\n\n* The choice list for ``USStateField`` has changed. Previously, it\n  consisted of the 50 U.S. states, the District of Columbia and\n  U.S. overseas territories. As of Django 1.3 it includes all previous\n  choices, plus the U.S. Armed Forces postal codes.\n\n* A new model field,\n  ``django.contrib.localflavor.us.models.USPostalCodeField``, has\n  been added which draws its choices from a list of all postal\n  abbreviations recognized by the U.S Postal Service. This includes\n  all abbreviations recognized by ``USStateField``, plus three\n  independent nations -- the Federated States of Micronesia, the\n  Republic of the Marshall Islands and the Republic of Palau -- which\n  are serviced under treaty by the U.S. postal system. A new form\n  widget, ``django.contrib.localflavor.us.forms.USPSSelect``, is\n  also available and provides the same set of choices.\n\nAdditionally, several finer-grained choice tuples are provided which\nallow mixing and matching of subsets of the U.S. states and\nterritories, and other locations serviced by the U.S. postal\nsystem. Consult the ``django.contrib.localflavor`` documentation\nfor more details.\n\nThe change to ``USStateField`` is technically backwards-incompatible for\nusers who expect this field to exclude Armed Forces locations. If you\nneed to support U.S. mailing addresses without Armed Forces locations,\nsee the list of choice tuples available in the localflavor\ndocumentation.\n\nThe Django 1.3 roadmap\n======================\n\nBefore the final Django 1.3 release, several other preview/development\nreleases will be made available. The current schedule consists of at\nleast the following:\n\n* Week of **January 24, 2011**: First Django 1.3 release\n  candidate. String freeze for translations.\n\n* Week of **January 31, 2011**: Django 1.3 final release.\n\nIf necessary, additional beta or release-candidate packages\nwill be issued prior to the final 1.3 release. Django 1.3 will be\nreleased approximately one week after the final release candidate.\n\n\nWhat you can do to help\n=======================\n\nIn order to provide a high-quality 1.3 release, we need your help. Although this\nbeta release is, again, *not* intended for production use, you can help the\nDjango team by trying out the beta codebase in a safe test environment and\nreporting any bugs or issues you encounter. The Django ticket tracker is the\ncentral place to search for open issues:\n\n* https://code.djangoproject.com/timeline\n\nPlease open new tickets if no existing ticket corresponds to a problem you're\nrunning into.\n\nAdditionally, discussion of Django development, including progress toward the\n1.3 release, takes place daily on the django-developers mailing list:\n\n* http://groups.google.com/group/django-developers\n\n... and in the ``#django-dev`` IRC channel on ``irc.freenode.net``. If you're\ninterested in helping out with Django's development, feel free to join the\ndiscussions there.\n\nDjango's online documentation also includes pointers on how to contribute to\nDjango:\n\n* :doc:`How to contribute to Django </internals/contributing/index>`\n\nContributions on any level -- developing code, writing documentation or simply\ntriaging tickets and helping to test proposed bugfixes -- are always welcome and\nappreciated.\n"
  },
  {
    "path": "Django-1.5.1/docs/releases/1.3.1.txt",
    "content": "==========================\nDjango 1.3.1 release notes\n==========================\n\n*September 9, 2011*\n\nWelcome to Django 1.3.1!\n\nThis is the first security release in the Django 1.3 series, fixing several\nsecurity issues in Django 1.3.  Django 1.3.1 is a recommended upgrade for\nall users of Django 1.3.\n\nFor a full list of issues addressed in this release, see the `security\nadvisory`_.\n\n.. _security advisory: https://www.djangoproject.com/weblog/2011/sep/09/security-releases-issued/\n"
  },
  {
    "path": "Django-1.5.1/docs/releases/1.3.2.txt",
    "content": "==========================\nDjango 1.3.2 release notes\n==========================\n\n*July 30, 2012*\n\nThis is the second security release in the Django 1.3 series, fixing several\nsecurity issues in Django 1.3. Django 1.3.2 is a recommended upgrade for\nall users of Django 1.3.\n\nFor a full list of issues addressed in this release, see the `security\nadvisory`_.\n\n.. _security advisory: https://www.djangoproject.com/weblog/2012/jul/30/security-releases-issued/\n"
  },
  {
    "path": "Django-1.5.1/docs/releases/1.3.txt",
    "content": "========================\nDjango 1.3 release notes\n========================\n\n*March 23, 2011*\n\nWelcome to Django 1.3!\n\nNearly a year in the making, Django 1.3 includes quite a few `new\nfeatures`_ and plenty of bug fixes and improvements to existing\nfeatures. These release notes cover the new features in 1.3, as well\nas some `backwards-incompatible changes`_ you'll want to be aware of\nwhen upgrading from Django 1.2 or older versions.\n\nOverview\n========\n\nDjango 1.3's focus has mostly been on resolving smaller, long-standing\nfeature requests, but that hasn't prevented a few fairly significant\nnew features from landing, including:\n\n* A framework for writing `class-based views`_.\n\n* Built-in support for `using Python's logging facilities`_.\n\n* Contrib support for `easy handling of static files`_.\n\n* Django's testing framework now supports (and ships with a copy of)\n  `the unittest2 library`_.\n\nThere's plenty more, of course; see the coverage of `new features`_\nbelow for a full rundown and details.\n\nWherever possible, of course, new features are introduced in a\nbackwards-compatible manner per :doc:`our API stability policy\n</misc/api-stability>` policy. As a result of this policy, Django 1.3\n`begins the deprecation process for some features`_.\n\nSome changes, unfortunately, are genuinely backwards-incompatible; in\nmost cases these are due to security issues or bugs which simply\ncouldn't be fixed any other way. Django 1.3 includes a few of these,\nand descriptions of them -- along with the (minor) modifications\nyou'll need to make to handle them -- are documented in the list of\n`backwards-incompatible changes`_ below.\n\n.. _new features: `What's new in Django 1.3`_\n.. _backwards-incompatible changes: backwards-incompatible-changes-1.3_\n.. _using Python's logging facilities: `Logging`_\n.. _easy handling of static files: `Extended static files handling`_\n.. _the unittest2 library: `unittest2 support`_\n.. _begins the deprecation process for some features: `deprecated-features-1.3`_\n\nPython compatibility\n====================\n\nThe release of Django 1.2 was notable for having the first shift in\nDjango's Python compatibility policy; prior to Django 1.2, Django\nsupported any 2.x version of Python from 2.3 up. As of Django 1.2, the\nminimum requirement was raised to Python 2.4.\n\nDjango 1.3 continues to support Python 2.4, but will be the final\nDjango release series to do so; beginning with Django 1.4, the minimum\nsupported Python version will be 2.5. A document outlining our full\ntimeline for deprecating Python 2.x and moving to Python 3.x will be\npublished shortly after the release of Django 1.3.\n\nWhat's new in Django 1.3\n========================\n\nClass-based views\n~~~~~~~~~~~~~~~~~\n\nDjango 1.3 adds a framework that allows you to use a class as a view.\nThis means you can compose a view out of a collection of methods that\ncan be subclassed and overridden to provide common views of data without\nhaving to write too much code.\n\nAnalogs of all the old function-based generic views have been\nprovided, along with a completely generic view base class that can be\nused as the basis for reusable applications that can be easily\nextended.\n\nSee :doc:`the documentation on class-based generic views</topics/class-based-views/index>`\nfor more details. There is also a document to help you `convert\nyour function-based generic views to class-based\nviews <https://docs.djangoproject.com/en/1.4/topics/generic-views-migration/>`_.\n\nLogging\n~~~~~~~\n\nDjango 1.3 adds framework-level support for Python's ``logging``\nmodule.  This means you can now easily configure and control logging\nas part of your Django project. A number of logging handlers and\nlogging calls have been added to Django's own code as well -- most\nnotably, the error emails sent on a HTTP 500 server error are now\nhandled as a logging activity. See :doc:`the documentation on Django's\nlogging interface </topics/logging>` for more details.\n\nExtended static files handling\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nDjango 1.3 ships with a new contrib app --\n``django.contrib.staticfiles`` -- to help developers handle the static\nmedia files (images, CSS, Javascript, etc.) that are needed to render\na complete web page.\n\nIn previous versions of Django, it was common to place static assets\nin :setting:`MEDIA_ROOT` along with user-uploaded files, and serve\nthem both at :setting:`MEDIA_URL`. Part of the purpose of introducing\nthe ``staticfiles`` app is to make it easier to keep static files\nseparate from user-uploaded files. Static assets should now go in\n``static/`` subdirectories of your apps or in other static assets\ndirectories listed in :setting:`STATICFILES_DIRS`, and will be served\nat :setting:`STATIC_URL`.\n\nSee the :doc:`reference documentation of the app </ref/contrib/staticfiles>`\nfor more details or learn how to :doc:`manage static files\n</howto/static-files>`.\n\nunittest2 support\n~~~~~~~~~~~~~~~~~\n\nPython 2.7 introduced some major changes to the ``unittest`` library,\nadding some extremely useful features. To ensure that every Django\nproject can benefit from these new features, Django ships with a copy\nof unittest2_, a copy of the Python 2.7 unittest library, backported\nfor Python 2.4 compatibility.\n\nTo access this library, Django provides the ``django.utils.unittest``\nmodule alias. If you are using Python 2.7, or you have installed\n``unittest2`` locally, Django will map the alias to the installed\nversion of the unittest library. Otherwise, Django will use its own\nbundled version of unittest2.\n\nTo take advantage of this alias, simply use::\n\n    from django.utils import unittest\n\nwherever you would have historically used::\n\n    import unittest\n\nIf you want to continue to use the base unittest library, you can --\nyou just won't get any of the nice new unittest2 features.\n\n.. _unittest2: http://pypi.python.org/pypi/unittest2\n\nTransaction context managers\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nUsers of Python 2.5 and above may now use :ref:`transaction management functions\n<transaction-management-functions>` as `context managers`_. For example::\n\n    with transaction.autocommit():\n        # ...\n\n.. _context managers: http://docs.python.org/glossary.html#term-context-manager\n\nFor more information, see :ref:`transaction-management-functions`.\n\nConfigurable delete-cascade\n~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n:class:`~django.db.models.ForeignKey` and\n:class:`~django.db.models.OneToOneField` now accept an\n:attr:`~django.db.models.ForeignKey.on_delete` argument to customize behavior\nwhen the referenced object is deleted. Previously, deletes were always\ncascaded; available alternatives now include set null, set default, set to any\nvalue, protect, or do nothing.\n\nFor more information, see the :attr:`~django.db.models.ForeignKey.on_delete`\ndocumentation.\n\nContextual markers and comments for translatable strings\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nFor translation strings with ambiguous meaning, you can now\nuse the ``pgettext`` function to specify the context of the string.\n\nAnd if you just want to add some information for translators, you\ncan also add special translator comments in the source.\n\nFor more information, see :ref:`contextual-markers` and\n:ref:`translator-comments`.\n\nImprovements to built-in template tags\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nA number of improvements have been made to Django's built-in template tags:\n\n* The :ttag:`include` tag now accepts a ``with`` option, allowing\n  you to specify context variables to the included template\n\n* The :ttag:`include` tag now accepts an ``only`` option, allowing\n  you to exclude the current context from the included context\n\n* The :ttag:`with` tag now allows you to define multiple context\n  variables in a single :ttag:`with` block.\n\n* The :ttag:`load` tag now accepts a ``from`` argument, allowing\n  you to load a single tag or filter from a library.\n\nTemplateResponse\n~~~~~~~~~~~~~~~~\n\nIt can sometimes be beneficial to allow decorators or middleware to\nmodify a response *after* it has been constructed by the view. For\nexample, you may want to change the template that is used, or put\nadditional data into the context.\n\nHowever, you can't (easily) modify the content of a basic\n:class:`~django.http.HttpResponse` after it has been constructed. To\novercome this limitation, Django 1.3 adds a new\n:class:`~django.template.response.TemplateResponse` class. Unlike basic\n:class:`~django.http.HttpResponse` objects,\n:class:`~django.template.response.TemplateResponse` objects retain the details\nof the template and context that was provided by the view to compute\nthe response. The final output of the response is not computed until\nit is needed, later in the response process.\n\nFor more details, see the :doc:`documentation </ref/template-response>`\non the :class:`~django.template.response.TemplateResponse` class.\n\nCaching changes\n~~~~~~~~~~~~~~~\n\nDjango 1.3 sees the introduction of several improvements to the\nDjango's caching infrastructure.\n\nFirstly, Django now supports multiple named caches. In the same way\nthat Django 1.2 introduced support for multiple database connections,\nDjango 1.3 allows you to use the new :setting:`CACHES` setting to\ndefine multiple named cache connections.\n\nSecondly, :ref:`versioning <cache_versioning>`, :ref:`site-wide\nprefixing <cache_key_prefixing>` and :ref:`transformation\n<cache_key_transformation>` have been added to the cache API.\n\nThirdly, :ref:`cache key creation <using-vary-headers>` has been\nupdated to take the request query string into account on ``GET``\nrequests.\n\nFinally, support for pylibmc_ has been added to the memcached cache\nbackend.\n\nFor more details, see the :doc:`documentation on\ncaching in Django</topics/cache>`.\n\n.. _pylibmc: http://sendapatch.se/projects/pylibmc/\n\nPermissions for inactive users\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nIf you provide a custom auth backend with ``supports_inactive_user``\nset to ``True``, an inactive ``User`` instance will check the backend\nfor permissions.  This is useful for further centralizing the\npermission handling. See the :doc:`authentication docs </topics/auth/index>`\nfor more details.\n\nGeoDjango\n~~~~~~~~~\n\nThe GeoDjango test suite is now included when\n:ref:`running the Django test suite <running-unit-tests>` with ``runtests.py``\nwhen using :ref:`spatial database backends <spatial-backends>`.\n\n:setting:`MEDIA_URL` and :setting:`STATIC_URL` must end in a slash\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nPreviously, the :setting:`MEDIA_URL` setting only required a trailing slash if\nit contained a suffix beyond the domain name.\n\nA trailing slash is now *required* for :setting:`MEDIA_URL` and the new\n:setting:`STATIC_URL` setting as long as it is not blank. This ensures there is\na consistent way to combine paths in templates.\n\nProject settings which provide either of both settings without a trailing\nslash will now raise a ``PendingDeprecationWarning``.\n\nIn Django 1.4 this same condition will raise ``DeprecationWarning``,\nand in Django 1.5 will raise an ``ImproperlyConfigured`` exception.\n\nEverything else\n~~~~~~~~~~~~~~~\n\nDjango :doc:`1.1 <1.1>` and :doc:`1.2 <1.2>` added\nlots of big ticket items to Django, like multiple-database support,\nmodel validation, and a session-based messages framework. However,\nthis focus on big features came at the cost of lots of smaller\nfeatures.\n\nTo compensate for this, the focus of the Django 1.3 development\nprocess has been on adding lots of smaller, long standing feature\nrequests. These include:\n\n* Improved tools for accessing and manipulating the current\n  :class:`~django.contrib.sites.models.Site` object in\n  :doc:`the sites framework </ref/contrib/sites>`.\n\n* A :class:`~django.test.client.RequestFactory` for mocking requests\n  in tests.\n\n* A new test assertion --\n  :meth:`~django.test.TestCase.assertNumQueries` -- making it\n  easier to test the database activity associated with a view.\n\n* Support for lookups spanning relations in admin's\n  :attr:`~django.contrib.admin.ModelAdmin.list_filter`.\n\n* Support for HTTPOnly_ cookies.\n\n* :meth:`~django.core.mail.mail_admins()` and\n  :meth:`~django.core.mail.mail_managers()` now support easily attaching\n  HTML content to messages.\n\n* :class:`~django.core.mail.EmailMessage` now supports CC's.\n\n* Error emails now include more of the detail and formatting of the\n  debug server error page.\n\n* :meth:`~django.template.Library.simple_tag` now accepts a\n  ``takes_context`` argument, making it easier to write simple\n  template tags that require access to template context.\n\n* A new :meth:`~django.shortcuts.render()` shortcut -- an alternative\n  to :meth:`~django.shortcuts.render_to_response()` providing a\n  :class:`~django.template.RequestContext` by default.\n\n* Support for combining :ref:`F() expressions <query-expressions>`\n  with timedelta values when retrieving or updating database values.\n\n.. _HTTPOnly: https://www.owasp.org/index.php/HTTPOnly\n\n.. _backwards-incompatible-changes-1.3:\n\nBackwards-incompatible changes in 1.3\n=====================================\n\nCSRF validation now applies to AJAX requests\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nPrior to Django 1.2.5, Django's CSRF-prevention system exempted AJAX\nrequests from CSRF verification; due to `security issues`_ reported to\nus, however, *all* requests are now subjected to CSRF\nverification. Consult :doc:`the Django CSRF documentation\n</ref/contrib/csrf>` for details on how to handle CSRF verification in\nAJAX requests.\n\n.. _security issues: https://www.djangoproject.com/weblog/2011/feb/08/security/\n\nRestricted filters in admin interface\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nPrior to Django 1.2.5, the Django administrative interface allowed\nfiltering on any model field or relation -- not just those specified\nin ``list_filter`` -- via query string manipulation. Due to security\nissues reported to us, however, query string lookup arguments in the\nadmin must be for fields or relations specified in ``list_filter`` or\n``date_hierarchy``.\n\nDeleting a model doesn't delete associated files\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nIn earlier Django versions, when a model instance containing a\n:class:`~django.db.models.FileField` was deleted,\n:class:`~django.db.models.FileField` took it upon itself to also delete the\nfile from the backend storage. This opened the door to several data-loss\nscenarios, including rolled-back transactions and fields on different models\nreferencing the same file. In Django 1.3, when a model is deleted the\n:class:`~django.db.models.FileField`'s ``delete()`` method won't be called. If\nyou need cleanup of orphaned files, you'll need to handle it yourself (for\ninstance, with a custom management command that can be run manually or\nscheduled to run periodically via e.g. cron).\n\nPasswordInput default rendering behavior\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe :class:`~django.forms.PasswordInput` form widget, intended for use\nwith form fields which represent passwords, accepts a boolean keyword\nargument ``render_value`` indicating whether to send its data back to\nthe browser when displaying a submitted form with errors. Prior to\nDjango 1.3, this argument defaulted to ``True``, meaning that the\nsubmitted password would be sent back to the browser as part of the\nform. Developers who wished to add a bit of additional security by\nexcluding that value from the redisplayed form could instantiate a\n:class:`~django.forms.PasswordInput` passing ``render_value=False`` .\n\nDue to the sensitive nature of passwords, however, Django 1.3 takes\nthis step automatically; the default value of ``render_value`` is now\n``False``, and developers who want the password value returned to the\nbrowser on a submission with errors (the previous behavior) must now\nexplicitly indicate this. For example::\n\n    class LoginForm(forms.Form):\n        username = forms.CharField(max_length=100)\n        password = forms.CharField(widget=forms.PasswordInput(render_value=True))\n\nClearable default widget for FileField\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nDjango 1.3 now includes a :class:`~django.forms.ClearableFileInput` form widget\nin addition to :class:`~django.forms.FileInput`. ``ClearableFileInput`` renders\nwith a checkbox to clear the field's value (if the field has a value and is not\nrequired); ``FileInput`` provided no means for clearing an existing file from\na ``FileField``.\n\n``ClearableFileInput`` is now the default widget for a ``FileField``, so\nexisting forms including ``FileField`` without assigning a custom widget will\nneed to account for the possible extra checkbox in the rendered form output.\n\nTo return to the previous rendering (without the ability to clear the\n``FileField``), use the ``FileInput`` widget in place of\n``ClearableFileInput``. For instance, in a ``ModelForm`` for a hypothetical\n``Document`` model with a ``FileField`` named ``document``::\n\n    from django import forms\n    from myapp.models import Document\n\n    class DocumentForm(forms.ModelForm):\n        class Meta:\n            model = Document\n            widgets = {'document': forms.FileInput}\n\nNew index on database session table\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nPrior to Django 1.3, the database table used by the database backend\nfor the :doc:`sessions </topics/http/sessions>` app had no index on\nthe ``expire_date`` column. As a result, date-based queries on the\nsession table -- such as the query that is needed to purge old\nsessions -- would be very slow if there were lots of sessions.\n\nIf you have an existing project that is using the database session\nbackend, you don't have to do anything to accommodate this change.\nHowever, you may get a significant performance boost if you manually\nadd the new index to the session table. The SQL that will add the\nindex can be found by running the :djadmin:`sqlindexes` admin\ncommand::\n\n    python manage.py sqlindexes sessions\n\nNo more naughty words\n~~~~~~~~~~~~~~~~~~~~~\n\nDjango has historically provided (and enforced) a list of profanities.\nThe :doc:`comments app </ref/contrib/comments/index>` has enforced this\nlist of profanities, preventing people from submitting comments that\ncontained one of those profanities.\n\nUnfortunately, the technique used to implement this profanities list\nwas woefully naive, and prone to the `Scunthorpe problem`_. Improving\nthe built-in filter to fix this problem would require significant\neffort, and since natural language processing isn't the normal domain\nof a web framework, we have \"fixed\" the problem by making the list of\nprohibited words an empty list.\n\nIf you want to restore the old behavior, simply put a\n:setting:`PROFANITIES_LIST` setting in your settings file that includes the\nwords that you want to prohibit (see the `commit that implemented this\nchange`_ if you want to see the list of words that was historically\nprohibited). However, if avoiding profanities is important to you, you\nwould be well advised to seek out a better, less naive approach to the\nproblem.\n\n.. _Scunthorpe problem: http://en.wikipedia.org/wiki/Scunthorpe_problem\n.. _commit that implemented this change: https://code.djangoproject.com/changeset/13996\n\nLocalflavor changes\n~~~~~~~~~~~~~~~~~~~\n\nDjango 1.3 introduces the following backwards-incompatible changes to\nlocal flavors:\n\n* Canada (ca) -- The province \"Newfoundland and Labrador\" has had its\n  province code updated to \"NL\", rather than the older \"NF\". In\n  addition, the Yukon Territory has had its province code corrected to\n  \"YT\", instead of \"YK\".\n\n* Indonesia (id) -- The province \"Nanggroe Aceh Darussalam (NAD)\" has\n  been removed from the province list in favor of the new official\n  designation \"Aceh (ACE)\".\n\n* United States of America (us) -- The list of \"states\" used by\n  ``USStateField`` has expanded to include Armed Forces postal\n  codes. This is backwards-incompatible if you were relying on\n  ``USStateField`` not including them.\n\nFormSet updates\n~~~~~~~~~~~~~~~\n\nIn Django 1.3 ``FormSet`` creation behavior is modified slightly. Historically\nthe class didn't make a distinction between not being passed data and being\npassed empty dictionary. This was inconsistent with behavior in other parts of\nthe framework. Starting with 1.3 if you pass in empty dictionary the\n``FormSet`` will raise a ``ValidationError``.\n\nFor example with a ``FormSet``::\n\n    >>> class ArticleForm(Form):\n    ...     title = CharField()\n    ...     pub_date = DateField()\n    >>> ArticleFormSet = formset_factory(ArticleForm)\n\nthe following code will raise a ``ValidationError``::\n\n    >>> ArticleFormSet({})\n    Traceback (most recent call last):\n    ...\n    ValidationError: [u'ManagementForm data is missing or has been tampered with']\n\nif you need to instantiate an empty ``FormSet``, don't pass in the data or use\n``None``::\n\n    >>> formset = ArticleFormSet()\n    >>> formset = ArticleFormSet(data=None)\n\nCallables in templates\n~~~~~~~~~~~~~~~~~~~~~~\n\nPreviously, a callable in a template would only be called automatically as part\nof the variable resolution process if it was retrieved via attribute\nlookup. This was an inconsistency that could result in confusing and unhelpful\nbehavior::\n\n    >>> Template(\"{{ user.get_full_name }}\").render(Context({'user': user}))\n    u'Joe Bloggs'\n    >>> Template(\"{{ full_name }}\").render(Context({'full_name': user.get_full_name}))\n    u'&lt;bound method User.get_full_name of &lt;...\n\nThis has been resolved in Django 1.3 - the result in both cases will be ``u'Joe\nBloggs'``. Although the previous behavior was not useful for a template language\ndesigned for web designers, and was never deliberately supported, it is possible\nthat some templates may be broken by this change.\n\nUse of custom SQL to load initial data in tests\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nDjango provides a custom SQL hooks as a way to inject hand-crafted SQL\ninto the database synchronization process. One of the possible uses\nfor this custom SQL is to insert data into your database. If your\ncustom SQL contains ``INSERT`` statements, those insertions will be\nperformed every time your database is synchronized. This includes the\nsynchronization of any test databases that are created when you run a\ntest suite.\n\nHowever, in the process of testing the Django 1.3, it was discovered\nthat this feature has never completely worked as advertised. When\nusing database backends that don't support transactions, or when using\na TransactionTestCase, data that has been inserted using custom SQL\nwill not be visible during the testing process.\n\nUnfortunately, there was no way to rectify this problem without\nintroducing a backwards incompatibility. Rather than leave\nSQL-inserted initial data in an uncertain state, Django now enforces\nthe policy that data inserted by custom SQL will *not* be visible\nduring testing.\n\nThis change only affects the testing process. You can still use custom\nSQL to load data into your production database as part of the syncdb\nprocess. If you require data to exist during test conditions, you\nshould either insert it using :ref:`test fixtures\n<topics-testing-fixtures>`, or using the ``setUp()`` method of your\ntest case.\n\nChanged priority of translation loading\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nWork has been done to simplify, rationalize and properly document the algorithm\nused by Django at runtime to build translations from the different translations\nfound on disk, namely:\n\nFor translatable literals found in Python code and templates (``'django'``\ngettext domain):\n\n* Priorities of translations included with applications listed in the\n  :setting:`INSTALLED_APPS` setting were changed. To provide a behavior\n  consistent with other parts of Django that also use such setting (templates,\n  etc.) now, when building the translation that will be made available, the\n  apps listed first have higher precedence than the ones listed later.\n\n* Now it is possible to override the translations shipped with applications by\n  using the :setting:`LOCALE_PATHS` setting whose translations have now higher\n  precedence than the translations of :setting:`INSTALLED_APPS` applications.\n  The relative priority among the values listed in this setting has also been\n  modified so the paths listed first have higher precedence than the\n  ones listed later.\n\n* The ``locale`` subdirectory of the directory containing the settings, that\n  usually coincides with and is known as the *project directory* is being\n  deprecated in this release as a source of translations. (the precedence of\n  these translations is intermediate between applications and :setting:`LOCALE_PATHS`\n  translations). See the `corresponding deprecated features section`_\n  of this document.\n\nFor translatable literals found in Javascript code (``'djangojs'`` gettext\ndomain):\n\n* Similarly to the ``'django'`` domain translations: Overriding of\n  translations shipped with applications by using the :setting:`LOCALE_PATHS`\n  setting is now possible for this domain too. These translations have higher\n  precedence than the translations of Python packages passed to the\n  :ref:`javascript_catalog view <javascript_catalog-view>`.  Paths listed first\n  have higher precedence than the ones listed later.\n\n* Translations under the ``locale`` subdirectory of the *project directory*\n  have never been taken in account for JavaScript translations and remain in\n  the same situation considering the deprecation of such location.\n\n.. _corresponding deprecated features section: loading_of_project_level_translations_\n\nTransaction management\n~~~~~~~~~~~~~~~~~~~~~~\n\nWhen using managed transactions -- that is, anything but the default\nautocommit mode -- it is important when a transaction is marked as\n\"dirty\". Dirty transactions are committed by the\n:func:`~django.db.transaction.commit_on_success` decorator or the\n:class:`~django.middleware.transaction.TransactionMiddleware`, and\n:func:`~django.db.transaction.commit_manually` forces them to be\nclosed explicitly; clean transactions \"get a pass\", which means they\nare usually rolled back at the end of a request when the connection is\nclosed.\n\nUntil Django 1.3, transactions were only marked dirty when Django was\naware of a modifying operation performed in them; that is, either some\nmodel was saved, some bulk update or delete was performed, or the user\nexplicitly called ``transaction.set_dirty()``. In Django 1.3, a\ntransaction is marked dirty when *any* database operation is\nperformed.\n\nAs a result of this change, you no longer need to set a transaction\ndirty explicitly when you execute raw SQL or use a data-modifying\n``SELECT``. However, you *do* need to explicitly close any read-only\ntransactions that are being managed using\n:func:`~django.db.transaction.commit_manually`. For example::\n\n      @transaction.commit_manually\n      def my_view(request, name):\n          obj = get_object_or_404(MyObject, name__iexact=name)\n          return render_to_response('template', {'object':obj})\n\nPrior to Django 1.3, this would work without error. However, under\nDjango 1.3, this will raise a\n:class:`~django.db.transaction.TransactionManagementError` because\nthe read operation that retrieves the ``MyObject`` instance leaves the\ntransaction in a dirty state.\n\nNo password reset for inactive users\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nPrior to Django 1.3, inactive users were able to request a password reset email\nand reset their password. In Django 1.3 inactive users will receive the same\nmessage as a nonexistent account.\n\n.. _deprecated-features-1.3:\n\nFeatures deprecated in 1.3\n==========================\n\nDjango 1.3 deprecates some features from earlier releases.\nThese features are still supported, but will be gradually phased out\nover the next few release cycles.\n\nCode taking advantage of any of the features below will raise a\n``PendingDeprecationWarning`` in Django 1.3. This warning will be\nsilent by default, but may be turned on using Python's :mod:`warnings`\nmodule, or by running Python with a ``-Wd`` or ``-Wall`` flag.\n\nIn Django 1.4, these warnings will become a ``DeprecationWarning``,\nwhich is *not* silent. In Django 1.5 support for these features will\nbe removed entirely.\n\n.. seealso::\n\n    For more details, see the documentation :doc:`Django's release process\n    </internals/release-process>` and our :doc:`deprecation timeline\n    </internals/deprecation>`.\n\n``mod_python`` support\n~~~~~~~~~~~~~~~~~~~~~~\n\nThe ``mod_python`` library has not had a release since 2007 or a commit since\n2008. The Apache Foundation board voted to remove ``mod_python`` from the set\nof active projects in its version control repositories, and its lead developer\nhas shifted all of his efforts toward the lighter, slimmer, more stable, and\nmore flexible ``mod_wsgi`` backend.\n\nIf you are currently using the ``mod_python`` request handler, you\nshould redeploy your Django projects using another request handler.\n:doc:`mod_wsgi </howto/deployment/wsgi/modwsgi>` is the request handler\nrecommended by the Django project, but :doc:`FastCGI\n</howto/deployment/fastcgi>` is also supported. Support for\n``mod_python`` deployment will be removed in Django 1.5.\n\nFunction-based generic views\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nAs a result of the introduction of class-based generic views, the\nfunction-based generic views provided by Django have been deprecated.\nThe following modules and the views they contain have been deprecated:\n\n* ``django.views.generic.create_update``\n* ``django.views.generic.date_based``\n* ``django.views.generic.list_detail``\n* ``django.views.generic.simple``\n\nTest client response ``template`` attribute\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nDjango's :ref:`test client <test-client>` returns\n:class:`~django.test.client.Response` objects annotated with extra testing\ninformation. In Django versions prior to 1.3, this included a ``template``\nattribute containing information about templates rendered in generating the\nresponse: either None, a single :class:`~django.template.Template` object, or a\nlist of :class:`~django.template.Template` objects. This inconsistency in\nreturn values (sometimes a list, sometimes not) made the attribute difficult\nto work with.\n\nIn Django 1.3 the ``template`` attribute is deprecated in favor of a new\n:attr:`~django.test.client.Response.templates` attribute, which is always a\nlist, even if it has only a single element or no elements.\n\n``DjangoTestRunner``\n~~~~~~~~~~~~~~~~~~~~\n\nAs a result of the introduction of support for unittest2, the features\nof ``django.test.simple.DjangoTestRunner`` (including fail-fast\nand Ctrl-C test termination) have been made redundant. In view of this\nredundancy, ``DjangoTestRunner`` has been turned into an empty placeholder\nclass, and will be removed entirely in Django 1.5.\n\nChanges to :ttag:`url` and :ttag:`ssi`\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nMost template tags will allow you to pass in either constants or\nvariables as arguments -- for example::\n\n    {% extends \"base.html\" %}\n\nallows you to specify a base template as a constant, but if you have a\ncontext variable ``templ`` that contains the value ``base.html``::\n\n    {% extends templ %}\n\nis also legal.\n\nHowever, due to an accident of history, the :ttag:`url` and\n:ttag:`ssi` are different. These tags use the second, quoteless\nsyntax, but interpret the argument as a constant. This means it isn't\npossible to use a context variable as the target of a :ttag:`url` and\n:ttag:`ssi` tag.\n\nDjango 1.3 marks the start of the process to correct this historical\naccident. Django 1.3 adds a new template library -- ``future`` -- that\nprovides alternate implementations of the :ttag:`url` and :ttag:`ssi`\ntemplate tags. This ``future`` library implement behavior that makes\nthe handling of the first argument consistent with the handling of all\nother variables. So, an existing template that contains::\n\n    {% url sample %}\n\nshould be replaced with::\n\n    {% load url from future %}\n    {% url 'sample' %}\n\nThe tags implementing the old behavior have been deprecated, and in\nDjango 1.5, the old behavior will be replaced with the new behavior.\nTo ensure compatibility with future versions of Django, existing\ntemplates should be modified to use the new ``future`` libraries and\nsyntax.\n\nChanges to the login methods of the admin\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nIn previous version the admin app defined login methods in multiple locations\nand ignored the almost identical implementation in the already used auth app.\nA side effect of this duplication was the missing adoption of the changes made\nin r12634_ to support a broader set of characters for usernames.\n\nThis release refactors the admin's login mechanism to use a subclass of the\n:class:`~django.contrib.auth.forms.AuthenticationForm` instead of a manual\nform validation. The previously undocumented method\n``'django.contrib.admin.sites.AdminSite.display_login_form'`` has been removed\nin favor of a new :attr:`~django.contrib.admin.AdminSite.login_form`\nattribute.\n\n.. _r12634: https://code.djangoproject.com/changeset/12634\n\n``reset`` and ``sqlreset`` management commands\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThose commands have been deprecated. The ``flush`` and ``sqlflush`` commands\ncan be used to delete everything. You can also use ALTER TABLE or DROP TABLE\nstatements manually.\n\n\nGeoDjango\n~~~~~~~~~\n\n* The function-based :setting:`TEST_RUNNER` previously used to execute\n  the GeoDjango test suite, ``django.contrib.gis.tests.run_gis_tests``, was\n  deprecated for the class-based runner,\n  :class:`django.contrib.gis.tests.GeoDjangoTestSuiteRunner`.\n\n* Previously, calling\n  :meth:`~django.contrib.gis.geos.GEOSGeometry.transform` would\n  silently do nothing when GDAL wasn't available.  Now, a\n  :class:`~django.contrib.gis.geos.GEOSException` is properly raised\n  to indicate possible faulty application code.  A warning is now\n  raised if :meth:`~django.contrib.gis.geos.GEOSGeometry.transform` is\n  called when the SRID of the geometry is less than 0 or ``None``.\n\n``CZBirthNumberField.clean``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nPreviously this field's ``clean()`` method accepted a second, gender, argument\nwhich allowed stronger validation checks to be made, however since this\nargument could never actually be passed from the Django form machinery it is\nnow pending deprecation.\n\n``CompatCookie``\n~~~~~~~~~~~~~~~~\n\nPreviously, ``django.http`` exposed an undocumented ``CompatCookie`` class,\nwhich was a bugfix wrapper around the standard library ``SimpleCookie``. As the\nfixes are moving upstream, this is now deprecated - you should use ``from\ndjango.http import SimpleCookie`` instead.\n\n.. _loading_of_project_level_translations:\n\nLoading of *project-level* translations\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThis release of Django starts the deprecation process for inclusion of\ntranslations located under the so-called *project path* in the translation\nbuilding process performed at runtime. The :setting:`LOCALE_PATHS` setting can\nbe used for the same task by adding the filesystem path to a ``locale``\ndirectory containing project-level translations to the value of that setting.\n\nRationale for this decision:\n\n* The *project path* has always been a loosely defined concept\n  (actually, the directory used for locating project-level\n  translations is the directory containing the settings module) and\n  there has been a shift in other parts of the framework to stop using\n  it as a reference for location of assets at runtime.\n\n* Detection of the ``locale`` subdirectory tends to fail when the\n  deployment scenario is more complex than the basic one. e.g. it\n  fails when the settings module is a directory (ticket #10765).\n\n* There are potential strange development- and deployment-time\n  problems like the fact that the ``project_dir/locale/`` subdir can\n  generate spurious error messages when the project directory is added\n  to the Python path (``manage.py runserver`` does this) and then it\n  clashes with the equally named standard library module, this is a\n  typical warning message::\n\n     /usr/lib/python2.6/gettext.py:49: ImportWarning: Not importing directory '/path/to/project/locale': missing __init__.py.\n     import locale, copy, os, re, struct, sys\n\n* This location wasn't included in the translation building process\n  for JavaScript literals. This deprecation removes such\n  inconsistency.\n\n``PermWrapper`` moved to ``django.contrib.auth.context_processors``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nIn Django 1.2, we began the process of changing the location of the\n``auth`` context processor from ``django.core.context_processors`` to\n``django.contrib.auth.context_processors``. However, the\n``PermWrapper`` support class was mistakenly omitted from that\nmigration. In Django 1.3, the ``PermWrapper`` class has also been\nmoved to ``django.contrib.auth.context_processors``, along with the\n``PermLookupDict`` support class. The new classes are functionally\nidentical to their old versions; only the module location has changed.\n\nRemoval of ``XMLField``\n~~~~~~~~~~~~~~~~~~~~~~~\n\nWhen Django was first released, Django included an ``XMLField`` that performed\nautomatic XML validation for any field input. However, this validation function\nhasn't been performed since the introduction of ``newforms``, prior to the 1.0\nrelease. As a result, ``XMLField`` as currently implemented is functionally\nindistinguishable from a simple :class:`~django.db.models.TextField`.\n\nFor this reason, Django 1.3 has fast-tracked the deprecation of\n``XMLField`` -- instead of a two-release deprecation, ``XMLField``\nwill be removed entirely in Django 1.4.\n\nIt's easy to update your code to accommodate this change -- just\nreplace all uses of ``XMLField`` with ``TextField``, and remove the\n``schema_path`` keyword argument (if it is specified).\n"
  },
  {
    "path": "Django-1.5.1/docs/releases/1.4-alpha-1.txt",
    "content": "==============================\nDjango 1.4 alpha release notes\n==============================\n\nDecember 22, 2011.\n\nWelcome to Django 1.4 alpha!\n\nThis is the first in a series of preview/development releases leading up to\nthe eventual release of Django 1.4, scheduled for March 2012. This release is\nprimarily targeted at developers who are interested in trying out new features\nand testing the Django codebase to help identify and resolve bugs prior to the\nfinal 1.4 release.\n\nAs such, this release is *not* intended for production use, and any such use\nis discouraged.\n\nDjango 1.4 alpha includes various `new features`_ and some minor `backwards\nincompatible changes`_. There are also some features that have been dropped,\nwhich are detailed in :doc:`our deprecation plan </internals/deprecation>`,\nand we've `begun the deprecation process for some features`_.\n\n.. _new features: `What's new in Django 1.4`_\n.. _backwards incompatible changes: `Backwards incompatible changes in 1.4`_\n.. _begun the deprecation process for some features: `Features deprecated in 1.4`_\n\nPython compatibility\n====================\n\nWhile not a new feature, it's important to note that Django 1.4 introduces the\nsecond shift in our Python compatibility policy since Django's initial public\ndebut. Django 1.2 dropped support for Python 2.3; now Django 1.4 drops support\nfor Python 2.4. As such, the minimum Python version required for Django is now\n2.5, and Django is tested and supported on Python 2.5, 2.6 and 2.7.\n\nThis change should affect only a small number of Django users, as most\noperating-system vendors today are shipping Python 2.5 or newer as their default\nversion. If you're still using Python 2.4, however, you'll need to stick to\nDjango 1.3 until you can upgrade; per :doc:`our support policy\n</internals/release-process>`, Django 1.3 will continue to receive security\nsupport until the release of Django 1.5.\n\nDjango does not support Python 3.x at this time. A document outlining our full\ntimeline for deprecating Python 2.x and moving to Python 3.x will be published\nbefore the release of Django 1.4.\n\nWhat's new in Django 1.4\n========================\n\nSupport for in-browser testing frameworks\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nDjango 1.4 supports integration with in-browser testing frameworks like\nSelenium_. The new :class:`django.test.LiveServerTestCase` base class lets you\ntest the interactions between your site's front and back ends more\ncomprehensively. See the\n:class:`documentation<django.test.LiveServerTestCase>` for more details and\nconcrete examples.\n\n.. _Selenium: http://seleniumhq.org/\n\n``SELECT FOR UPDATE`` support\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nDjango 1.4 now includes a :meth:`QuerySet.select_for_update()\n<django.db.models.query.QuerySet.select_for_update>` method which generates a\n``SELECT ... FOR UPDATE`` SQL query. This will lock rows until the end of the\ntransaction, meaning that other transactions cannot modify or delete rows\nmatched by a ``FOR UPDATE`` query.\n\nFor more details, see the documentation for\n:meth:`~django.db.models.query.QuerySet.select_for_update`.\n\n``Model.objects.bulk_create`` in the ORM\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThis method allows for more efficient creation of multiple objects in the ORM.\nIt can provide significant performance increases if you have many objects.\nDjango makes use of this internally, meaning some operations (such as database\nsetup for test suites) have seen a performance benefit as a result.\n\nSee the :meth:`~django.db.models.query.QuerySet.bulk_create` docs for more\ninformation.\n\n``QuerySet.prefetch_related``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nSimilar to :meth:`~django.db.models.query.QuerySet.select_related` but with a\ndifferent strategy and broader scope,\n:meth:`~django.db.models.query.QuerySet.prefetch_related` has been added to\n:class:`~django.db.models.query.QuerySet`. This method returns a new\n``QuerySet`` that will prefetch each of the specified related lookups in a\nsingle batch as soon as the query begins to be evaluated. Unlike\n``select_related``, it does the joins in Python, not in the database, and\nsupports many-to-many relationships,\n:class:`~django.contrib.contenttypes.generic.GenericForeignKey` and more. This\nallows you to fix a very common performance problem in which your code ends up\ndoing O(n) database queries (or worse) if objects on your primary ``QuerySet``\neach have many related objects that you also need.\n\nImproved password hashing\n~~~~~~~~~~~~~~~~~~~~~~~~~\n\nDjango's auth system (``django.contrib.auth``) stores passwords using a one-way\nalgorithm. Django 1.3 uses the SHA1_ algorithm, but increasing processor speeds\nand theoretical attacks have revealed that SHA1 isn't as secure as we'd like.\nThus, Django 1.4 introduces a new password storage system: by default Django now\nuses the PBKDF2_ algorithm (as recommended by NIST_). You can also easily choose\na different algorithm (including the popular bcrypt_ algorithm). For more\ndetails, see :ref:`auth_password_storage`.\n\n.. _sha1: http://en.wikipedia.org/wiki/SHA1\n.. _pbkdf2: http://en.wikipedia.org/wiki/PBKDF2\n.. _nist: http://csrc.nist.gov/publications/nistpubs/800-132/nist-sp800-132.pdf\n.. _bcrypt: http://en.wikipedia.org/wiki/Bcrypt\n\n\nHTML5 Doctype\n~~~~~~~~~~~~~\n\nWe've switched the admin and other bundled templates to use the HTML5\ndoctype. While Django will be careful to maintain compatibility with older\nbrowsers, this change means that you can use any HTML5 features you need in\nadmin pages without having to lose HTML validity or override the provided\ntemplates to change the doctype.\n\nList filters in admin interface\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nPrior to Django 1.4, the :mod:`~django.contrib.admin` app allowed you to specify\nchange list filters by specifying a field lookup, but didn't allow you to create\ncustom filters. This has been rectified with a simple API (previously used\ninternally and known as \"FilterSpec\"). For more details, see the documentation\nfor :attr:`~django.contrib.admin.ModelAdmin.list_filter`.\n\nMultiple sort in admin interface\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe admin change list now supports sorting on multiple columns. It respects all\nelements of the :attr:`~django.contrib.admin.ModelAdmin.ordering` attribute, and\nsorting on multiple columns by clicking on headers is designed to mimic the\nbehavior of desktop GUIs. The\n:meth:`~django.contrib.admin.ModelAdmin.get_ordering` method for specifying the\nordering dynamically (e.g. depending on the request) has also been added.\n\nNew ``ModelAdmin`` methods\n~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nA new :meth:`~django.contrib.admin.ModelAdmin.save_related` method was added to\n:mod:`~django.contrib.admin.ModelAdmin` to ease customization of how\nrelated objects are saved in the admin.\n\nTwo other new methods,\n:meth:`~django.contrib.admin.ModelAdmin.get_list_display` and\n:meth:`~django.contrib.admin.ModelAdmin.get_list_display_links`\nwere added to :class:`~django.contrib.admin.ModelAdmin` to enable the dynamic\ncustomization of fields and links displayed on the admin change list.\n\nAdmin inlines respect user permissions\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nAdmin inlines will now only allow those actions for which the user has\npermission. For ``ManyToMany`` relationships with an auto-created intermediate\nmodel (which does not have its own permissions), the change permission for the\nrelated model determines if the user has the permission to add, change or\ndelete relationships.\n\nTools for cryptographic signing\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nDjango 1.4 adds both a low-level API for signing values and a high-level API\nfor setting and reading signed cookies, one of the most common uses of\nsigning in Web applications.\n\nSee the :doc:`cryptographic signing </topics/signing>` docs for more\ninformation.\n\nCookie-based session backend\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nDjango 1.4 introduces a new cookie-based backend for the session framework\nwhich uses the tools for :doc:`cryptographic signing </topics/signing>` to\nstore the session data in the client's browser.\n\nSee the :ref:`cookie-based session backend <cookie-session-backend>` docs for\nmore information.\n\nNew form wizard\n~~~~~~~~~~~~~~~\n\nThe previous ``FormWizard`` from the formtools contrib app has been\nreplaced with a new implementation based on the class-based views\nintroduced in Django 1.3. It features a pluggable storage API and doesn't\nrequire the wizard to pass around hidden fields for every previous step.\n\nDjango 1.4 ships with a session-based storage backend and a cookie-based\nstorage backend. The latter uses the tools for\n:doc:`cryptographic signing </topics/signing>` also introduced in\nDjango 1.4 to store the wizard's state in the user's cookies.\n\nSee the :doc:`form wizard </ref/contrib/formtools/form-wizard>` docs for\nmore information.\n\n``reverse_lazy``\n~~~~~~~~~~~~~~~~\n\nA lazily evaluated version of :func:`django.core.urlresolvers.reverse` was\nadded to allow using URL reversals before the project's URLConf gets loaded.\n\nTranslating URL patterns\n~~~~~~~~~~~~~~~~~~~~~~~~\n\nDjango 1.4 gained the ability to look for a language prefix in the URL pattern\nwhen using the new :func:`~django.conf.urls.i18n.i18n_patterns` helper function.\nAdditionally, it's now possible to define translatable URL patterns using\n:func:`~django.utils.translation.ugettext_lazy`. See\n:ref:`url-internationalization` for more information about the language prefix\nand how to internationalize URL patterns.\n\nContextual translation support for ``{% trans %}`` and ``{% blocktrans %}``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe :ref:`contextual translation<contextual-markers>` support introduced in\nDjango 1.3 via the ``pgettext`` function has been extended to the\n:ttag:`trans` and :ttag:`blocktrans` template tags using the new ``context``\nkeyword.\n\nCustomizable ``SingleObjectMixin`` URLConf kwargs\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nTwo new attributes,\n:attr:`pk_url_kwarg<django.views.generic.detail.SingleObjectMixin.pk_url_kwarg>`\nand\n:attr:`slug_url_kwarg<django.views.generic.detail.SingleObjectMixin.slug_url_kwarg>`,\nhave been added to :class:`~django.views.generic.detail.SingleObjectMixin` to\nenable the customization of URLConf keyword arguments used for single\nobject generic views.\n\nAssignment template tags\n~~~~~~~~~~~~~~~~~~~~~~~~\n\nA new :ref:`assignment_tag<howto-custom-template-tags-assignment-tags>` helper\nfunction was added to ``template.Library`` to ease the creation of template\ntags that store data in a specified context variable.\n\n``*args`` and ``**kwargs`` support for template tag helper functions\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe :ref:`simple_tag<howto-custom-template-tags-simple-tags>`,\n:ref:`inclusion_tag <howto-custom-template-tags-inclusion-tags>` and\nnewly introduced\n:ref:`assignment_tag<howto-custom-template-tags-assignment-tags>` template\nhelper functions may now accept any number of positional or keyword arguments.\nFor example:\n\n.. code-block:: python\n\n    @register.simple_tag\n    def my_tag(a, b, *args, **kwargs):\n        warning = kwargs['warning']\n        profile = kwargs['profile']\n        ...\n        return ...\n\nThen in the template any number of arguments may be passed to the template tag.\nFor example:\n\n.. code-block:: html+django\n\n    {% my_tag 123 \"abcd\" book.title warning=message|lower profile=user.profile %}\n\nNo wrapping of exceptions in ``TEMPLATE_DEBUG`` mode\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nIn previous versions of Django, whenever the :setting:`TEMPLATE_DEBUG` setting\nwas ``True``, any exception raised during template rendering (even exceptions\nunrelated to template syntax) were wrapped in ``TemplateSyntaxError`` and\nre-raised. This was done in order to provide detailed template source location\ninformation in the debug 500 page.\n\nIn Django 1.4, exceptions are no longer wrapped. Instead, the original\nexception is annotated with the source information. This means that catching\nexceptions from template rendering is now consistent regardless of the value of\n:setting:`TEMPLATE_DEBUG`, and there's no need to catch and unwrap\n``TemplateSyntaxError`` in order to catch other errors.\n\n``truncatechars`` template filter\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nAdded a filter which truncates a string to be no longer than the specified\nnumber of characters. Truncated strings end with a translatable ellipsis\nsequence (\"...\"). See the documentation for :tfilter:`truncatechars` for\nmore details.\n\n``static`` template tag\n~~~~~~~~~~~~~~~~~~~~~~~\n\nThe :mod:`staticfiles<django.contrib.staticfiles>` contrib app has a new\n:ttag:`static<staticfiles-static>` template tag to refer to files saved with\nthe :setting:`STATICFILES_STORAGE` storage backend. It uses the storage\nbackend's ``url`` method and therefore supports advanced features such as\n:ref:`serving files from a cloud service<staticfiles-from-cdn>`.\n\n``CachedStaticFilesStorage`` storage backend\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nIn addition to the `static template tag`_, the\n:mod:`staticfiles<django.contrib.staticfiles>` contrib app now has a\n:class:`~django.contrib.staticfiles.storage.CachedStaticFilesStorage` backend\nwhich caches the files it saves (when running the :djadmin:`collectstatic`\nmanagement command) by appending the MD5 hash of the file's content to the\nfilename. For example, the file ``css/styles.css`` would also be saved as\n``css/styles.55e7cbb9ba48.css``\n\nSee the :class:`~django.contrib.staticfiles.storage.CachedStaticFilesStorage`\ndocs for more information.\n\nSimple clickjacking protection\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nWe've added a middleware to provide easy protection against `clickjacking\n<http://en.wikipedia.org/wiki/Clickjacking>`_ using the ``X-Frame-Options``\nheader. It's not enabled by default for backwards compatibility reasons, but\nyou'll almost certainly want to :doc:`enable it </ref/clickjacking/>` to help\nplug that security hole for browsers that support the header.\n\nCSRF improvements\n~~~~~~~~~~~~~~~~~\n\nWe've made various improvements to our CSRF features, including the\n:func:`~django.views.decorators.csrf.ensure_csrf_cookie` decorator which can\nhelp with AJAX heavy sites, protection for PUT and DELETE requests, and the\n:setting:`CSRF_COOKIE_SECURE` and :setting:`CSRF_COOKIE_PATH` settings which can\nimprove the security and usefulness of the CSRF protection. See the :doc:`CSRF\ndocs </ref/contrib/csrf>` for more information.\n\nError report filtering\n~~~~~~~~~~~~~~~~~~~~~~\n\nTwo new function decorators, :func:`sensitive_variables` and\n:func:`sensitive_post_parameters`, were added to allow designating the\nlocal variables and POST parameters which may contain sensitive\ninformation and should be filtered out of error reports.\n\nAll POST parameters are now systematically filtered out of error reports for\ncertain views (``login``, ``password_reset_confirm``, ``password_change``, and\n``add_view`` in :mod:`django.contrib.auth.views`, as well as\n``user_change_password`` in the admin app) to prevent the leaking of sensitive\ninformation such as user passwords.\n\nYou may override or customize the default filtering by writing a :ref:`custom\nfilter<custom-error-reports>`. For more information see the docs on\n:ref:`Filtering error reports<filtering-error-reports>`.\n\nExtended IPv6 support\n~~~~~~~~~~~~~~~~~~~~~\n\nThe previously added support for IPv6 addresses when using the runserver\nmanagement command in Django 1.3 has now been further extended by adding\na :class:`~django.db.models.GenericIPAddressField` model field,\na :class:`~django.forms.GenericIPAddressField` form field and\nthe validators :data:`~django.core.validators.validate_ipv46_address` and\n:data:`~django.core.validators.validate_ipv6_address`\n\nUpdated default project layout and ``manage.py``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nDjango 1.4 ships with an updated default project layout and ``manage.py`` file\nfor the :djadmin:`startproject` management command. These fix some issues with\nthe previous ``manage.py`` handling of Python import paths that caused double\nimports, trouble moving from development to deployment, and other\ndifficult-to-debug path issues.\n\nThe previous ``manage.py`` called functions that are now deprecated, and thus\nprojects upgrading to Django 1.4 should update their ``manage.py``. (The\nold-style ``manage.py`` will continue to work as before until Django 1.6; in\n1.5 it will raise ``DeprecationWarning``).\n\nThe new recommended ``manage.py`` file should look like this::\n\n    #!/usr/bin/env python\n    import os, sys\n\n    if __name__ == \"__main__\":\n        os.environ.setdefault(\"DJANGO_SETTINGS_MODULE\", \"{{ project_name }}.settings\")\n\n        from django.core.management import execute_from_command_line\n\n        execute_from_command_line(sys.argv)\n\n``{{ project_name }}`` should be replaced with the Python package name of the\nactual project.\n\nIf settings, URLconfs, and apps within the project are imported or referenced\nusing the project name prefix (e.g. ``myproject.settings``, ``ROOT_URLCONF =\n\"myproject.urls\"``, etc), the new ``manage.py`` will need to be moved one\ndirectory up, so it is outside the project package rather than adjacent to\n``settings.py`` and ``urls.py``.\n\nFor instance, with the following layout::\n\n    manage.py\n    mysite/\n        __init__.py\n        settings.py\n        urls.py\n        myapp/\n            __init__.py\n            models.py\n\nYou could import ``mysite.settings``, ``mysite.urls``, and ``mysite.myapp``,\nbut not ``settings``, ``urls``, or ``myapp`` as top-level modules.\n\nAnything imported as a top-level module can be placed adjacent to the new\n``manage.py``. For instance, to decouple \"myapp\" from the project module and\nimport it as just ``myapp``, place it outside the ``mysite/`` directory::\n\n    manage.py\n    myapp/\n        __init__.py\n        models.py\n    mysite/\n        __init__.py\n        settings.py\n        urls.py\n\nIf the same code is imported inconsistently (some places with the project\nprefix, some places without it), the imports will need to be cleaned up when\nswitching to the new ``manage.py``.\n\nImproved WSGI support\n~~~~~~~~~~~~~~~~~~~~~\n\nThe :djadmin:`startproject` management command now adds a :file:`wsgi.py`\nmodule to the initial project layout, containing a simple WSGI application that\ncan be used for :doc:`deploying with WSGI app\nservers</howto/deployment/wsgi/index>`.\n\nThe :djadmin:`built-in development server<runserver>` now supports using an\nexternally-defined WSGI callable, so as to make it possible to run runserver\nwith the same WSGI configuration that is used for deployment. A new\n:setting:`WSGI_APPLICATION` setting is available to configure which WSGI\ncallable :djadmin:`runserver` uses.\n\n(The :djadmin:`runfcgi` management command also internally wraps the WSGI\ncallable configured via :setting:`WSGI_APPLICATION`.)\n\nCustom project and app templates\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe :djadmin:`startapp` and :djadmin:`startproject` management commands\ngot a ``--template`` option for specifying a path or URL to a custom app or\nproject template.\n\nFor example, Django will use the ``/path/to/my_project_template`` directory\nwhen running the following command::\n\n    django-admin.py startproject --template=/path/to/my_project_template myproject\n\nYou can also now provide a destination directory as the second\nargument to both :djadmin:`startapp` and :djadmin:`startproject`::\n\n    django-admin.py startapp myapp /path/to/new/app\n    django-admin.py startproject myproject /path/to/new/project\n\nFor more information, see the :djadmin:`startapp` and :djadmin:`startproject`\ndocumentation.\n\nSupport for time zones\n~~~~~~~~~~~~~~~~~~~~~~\n\nDjango 1.4 adds :ref:`support for time zones <time-zones>`. When it's enabled,\nDjango stores date and time information in UTC in the database, uses time\nzone-aware datetime objects internally, and translates them to the end user's\ntime zone in templates and forms.\n\nReasons for using this feature include:\n\n- Customizing date and time display for users around the world.\n- Storing datetimes in UTC for database portability and interoperability.\n  (This argument doesn't apply to PostgreSQL, because it already stores\n  timestamps with time zone information in Django 1.3.)\n- Avoiding data corruption problems around DST transitions.\n\nTime zone support is enabled by default in new projects created with\n:djadmin:`startproject`. If you want to use this feature in an existing\nproject, there is a :ref:`migration guide <time-zones-migration-guide>`.\n\nMinor features\n~~~~~~~~~~~~~~\n\nDjango 1.4 also includes several smaller improvements worth noting:\n\n* A more usable stacktrace in the technical 500 page: frames in the\n  stack trace which reference Django's code are dimmed out, while\n  frames in user code are slightly emphasized. This change makes it\n  easier to scan a stacktrace for issues in user code.\n\n* :doc:`Tablespace support </topics/db/tablespaces>` in PostgreSQL.\n\n* Customizable names for :meth:`~django.template.Library.simple_tag`.\n\n* In the documentation, a helpful :doc:`security overview </topics/security>`\n  page.\n\n* The ``django.contrib.auth.models.check_password`` function has been moved\n  to the ``django.contrib.auth.utils`` module. Importing it from the old\n  location will still work, but you should update your imports.\n\n* The :djadmin:`collectstatic` management command gained a ``--clear`` option\n  to delete all files at the destination before copying or linking the static\n  files.\n\n* It is now possible to load fixtures containing forward references when using\n  MySQL with the InnoDB database engine.\n\n* A new 403 response handler has been added as\n  ``'django.views.defaults.permission_denied'``. You can set your own handler by\n  setting the value of :data:`django.conf.urls.handler403`. See the\n  documentation about :ref:`the 403 (HTTP Forbidden) view<http_forbidden_view>`\n  for more information.\n\n* The :ttag:`trans` template tag now takes an optional ``as`` argument to\n  be able to retrieve a translation string without displaying it but setting\n  a template context variable instead.\n\n* The :ttag:`if` template tag now supports ``{% elif %}`` clauses.\n\n* A new plain text version of the HTTP 500 status code internal error page\n  served when :setting:`DEBUG` is ``True`` is now sent to the client when\n  Django detects that the request has originated in JavaScript code\n  (:meth:`~django.http.HttpRequest.is_ajax` is used for this).\n\n  Similarly to its HTML counterpart, it contains a collection of different\n  pieces of information about the state of the web application.\n\n  This should make it easier to read when debugging interaction with\n  client-side Javascript code.\n\n* Added the :djadminopt:`--no-location` option to the :djadmin:`makemessages`\n  command.\n\n* Changed the ``locmem`` cache backend to use\n  ``pickle.HIGHEST_PROTOCOL`` for better compatibility with the other\n  cache backends.\n\n* Added support in the ORM for generating ``SELECT`` queries containing\n  ``DISTINCT ON``.\n\n  The ``distinct()`` ``QuerySet`` method now accepts an optional list of model\n  field names. If specified, then the ``DISTINCT`` statement is limited to these\n  fields. This is only supported in PostgreSQL.\n\n  For more details, see the documentation for\n  :meth:`~django.db.models.query.QuerySet.distinct`.\n\nBackwards incompatible changes in 1.4\n=====================================\n\ndjango.contrib.admin\n~~~~~~~~~~~~~~~~~~~~\n\nThe included administration app ``django.contrib.admin`` has for a long time\nshipped with a default set of static files such as JavaScript, images and\nstylesheets. Django 1.3 added a new contrib app ``django.contrib.staticfiles``\nto handle such files in a generic way and defined conventions for static\nfiles included in apps.\n\nStarting in Django 1.4 the admin's static files also follow this\nconvention to make it easier to deploy the included files. In previous\nversions of Django, it was also common to define an ``ADMIN_MEDIA_PREFIX``\nsetting to point to the URL where the admin's static files are served by a\nweb server. This setting has now been deprecated and replaced by the more\ngeneral setting :setting:`STATIC_URL`. Django will now expect to find the\nadmin static files under the URL ``<STATIC_URL>/admin/``.\n\nIf you've previously used a URL path for ``ADMIN_MEDIA_PREFIX`` (e.g.\n``/media/``) simply make sure :setting:`STATIC_URL` and :setting:`STATIC_ROOT`\nare configured and your web server serves the files correctly. The development\nserver continues to serve the admin files just like before. Don't hesitate to\nconsult the :doc:`static files howto </howto/static-files>` for further\ndetails.\n\nIn case your ``ADMIN_MEDIA_PREFIX`` is set to an specific domain (e.g.\n``http://media.example.com/admin/``) make sure to also set your\n:setting:`STATIC_URL` setting to the correct URL, for example\n``http://media.example.com/``.\n\n.. warning::\n\n    If you're implicitly relying on the path of the admin static files on\n    your server's file system when you deploy your site, you have to update\n    that path. The files were moved from :file:`django/contrib/admin/media/`\n    to :file:`django/contrib/admin/static/admin/`.\n\nSupported browsers for the admin\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nDjango hasn't had a clear policy on which browsers are supported for using the\nadmin app. Django's new policy formalizes existing practices: `YUI's A-grade`_\nbrowsers should provide a fully-functional admin experience, with the notable\nexception of IE6, which is no longer supported.\n\nReleased over ten years ago, IE6 imposes many limitations on modern web\ndevelopment. The practical implications of this policy are that contributors\nare free to improve the admin without consideration for these limitations.\n\nThis new policy **has no impact** on development outside of the admin. Users of\nDjango are free to develop webapps compatible with any range of browsers.\n\n.. _YUI's A-grade: http://yuilibrary.com/yui/docs/tutorials/gbs/\n\nRemoved admin icons\n~~~~~~~~~~~~~~~~~~~\n\nAs part of an effort to improve the performance and usability of the admin's\nchangelist sorting interface and of the admin's :attr:`horizontal\n<django.contrib.admin.ModelAdmin.filter_horizontal>` and :attr:`vertical\n<django.contrib.admin.ModelAdmin.filter_vertical>` \"filter\" widgets, some icon\nfiles were removed and grouped into two sprite files.\n\nSpecifically: ``selector-add.gif``, ``selector-addall.gif``,\n``selector-remove.gif``, ``selector-removeall.gif``,\n``selector_stacked-add.gif`` and ``selector_stacked-remove.gif`` were\ncombined into ``selector-icons.gif``; and ``arrow-up.gif`` and\n``arrow-down.gif`` were combined into ``sorting-icons.gif``.\n\nIf you used those icons to customize the admin then you will want to replace\nthem with your own icons or retrieve them from a previous release.\n\nCSS class names in admin forms\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nTo avoid conflicts with other common CSS class names (e.g. \"button\"), a prefix\n\"field-\" has been added to all CSS class names automatically generated from the\nform field names in the main admin forms, stacked inline forms and tabular\ninline cells. You will need to take that prefix into account in your custom\nstyle sheets or javascript files if you previously used plain field names as\nselectors for custom styles or javascript transformations.\n\nCompatibility with old signed data\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nDjango 1.3 changed the cryptographic signing mechanisms used in a number of\nplaces in Django. While Django 1.3 kept fallbacks that would accept hashes\nproduced by the previous methods, these fallbacks are removed in Django 1.4.\n\nSo, if you upgrade to Django 1.4 directly from 1.2 or earlier, you may\nlose/invalidate certain pieces of data that have been cryptographically signed\nusing an old method. To avoid this, use Django 1.3 first for a period of time\nto allow the signed data to expire naturally. The affected parts are detailed\nbelow, with 1) the consequences of ignoring this advice and 2) the amount of\ntime you need to run Django 1.3 for the data to expire or become irrelevant.\n\n* ``contrib.sessions`` data integrity check\n\n  * consequences: the user will be logged out, and session data will be lost.\n\n  * time period: defined by :setting:`SESSION_COOKIE_AGE`.\n\n* ``contrib.auth`` password reset hash\n\n  * consequences: password reset links from before the upgrade will not work.\n\n  * time period: defined by :setting:`PASSWORD_RESET_TIMEOUT_DAYS`.\n\nForm-related hashes — these are much shorter lifetime, and are relevant only for\nthe short window where a user might fill in a form generated by the pre-upgrade\nDjango instance, and try to submit it to the upgraded Django instance:\n\n* ``contrib.comments`` form security hash\n\n  * consequences: the user will see a validation error \"Security hash failed\".\n\n  * time period: the amount of time you expect users to take filling out comment\n    forms.\n\n* ``FormWizard`` security hash\n\n  * consequences: the user will see an error about the form having expired,\n    and will be sent back to the first page of the wizard, losing the data\n    they have entered so far.\n\n  * time period: the amount of time you expect users to take filling out the\n    affected forms.\n\n* CSRF check\n\n  * Note: This is actually a Django 1.1 fallback, not Django 1.2,\n    and applies only if you are upgrading from 1.1.\n\n  * consequences: the user will see a 403 error with any CSRF protected POST\n    form.\n\n  * time period: the amount of time you expect user to take filling out\n    such forms.\n\ndjango.contrib.flatpages\n~~~~~~~~~~~~~~~~~~~~~~~~\n\nStarting in the 1.4 release the\n:class:`~django.contrib.flatpages.middleware.FlatpageFallbackMiddleware` only\nadds a trailing slash and redirects if the resulting URL refers to an existing\nflatpage. For example, requesting ``/notaflatpageoravalidurl`` in a previous\nversion would redirect to ``/notaflatpageoravalidurl/``, which would\nsubsequently raise a 404. Requesting ``/notaflatpageoravalidurl`` now will\nimmediately raise a 404. Additionally redirects returned by flatpages are now\npermanent (301 status code) to match the behavior of the\n:class:`~django.middleware.common.CommonMiddleware`.\n\nSerialization of :class:`~datetime.datetime` and :class:`~datetime.time`\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nAs a consequence of time zone support, and according to the ECMA-262\nspecification, some changes were made to the JSON serializer:\n\n- It includes the time zone for aware datetime objects. It raises an exception\n  for aware time objects.\n- It includes milliseconds for datetime and time objects. There is still\n  some precision loss, because Python stores microseconds (6 digits) and JSON\n  only supports milliseconds (3 digits). However, it's better than discarding\n  microseconds entirely.\n\nThe XML serializer was also changed to use the ISO8601 format for datetimes.\nThe letter ``T`` is used to separate the date part from the time part, instead\nof a space. Time zone information is included in the ``[+-]HH:MM`` format.\n\nThe serializers will dump datetimes in fixtures with these new formats. They\ncan still load fixtures that use the old format.\n\n``supports_timezone`` changed to ``False`` for SQLite\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe database feature ``supports_timezone`` used to be ``True`` for SQLite.\nIndeed, if you saved an aware datetime object, SQLite stored a string that\nincluded an UTC offset. However, this offset was ignored when loading the value\nback from the database, which could corrupt the data.\n\nIn the context of time zone support, this flag was changed to ``False``, and\ndatetimes are now stored without time zone information in SQLite. When\n:setting:`USE_TZ` is ``False``, if you attempt to save an aware datetime\nobject, Django raises an exception.\n\nDatabase connection's thread-locality\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n``DatabaseWrapper`` objects (i.e. the connection objects referenced by\n``django.db.connection`` and ``django.db.connections[\"some_alias\"]``) used to\nbe thread-local. They are now global objects in order to be potentially shared\nbetween multiple threads. While the individual connection objects are now\nglobal, the ``django.db.connections`` dictionary referencing those objects is\nstill thread-local. Therefore if you just use the ORM or\n``DatabaseWrapper.cursor()`` then the behavior is still the same as before.\nNote, however, that ``django.db.connection`` does not directly reference the\ndefault ``DatabaseWrapper`` object anymore and is now a proxy to access that\nobject's attributes. If you need to access the actual ``DatabaseWrapper``\nobject, use ``django.db.connections[DEFAULT_DB_ALIAS]`` instead.\n\nAs part of this change, all underlying SQLite connections are now enabled for\npotential thread-sharing (by passing the ``check_same_thread=False`` attribute\nto pysqlite). ``DatabaseWrapper`` however preserves the previous behavior by\ndisabling thread-sharing by default, so this does not affect any existing\ncode that purely relies on the ORM or on ``DatabaseWrapper.cursor()``.\n\nFinally, while it is now possible to pass connections between threads, Django\ndoes not make any effort to synchronize access to the underlying backend.\nConcurrency behavior is defined by the underlying backend implementation.\nCheck their documentation for details.\n\n`COMMENTS_BANNED_USERS_GROUP` setting\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nDjango's :doc:`comments app </ref/contrib/comments/index>` has historically\nsupported excluding the comments of a special user group, but we've never\ndocumented the feature properly and didn't enforce the exclusion in other parts\nof the app such as the template tags. To fix this problem, we removed the code\nfrom the feed class.\n\nIf you rely on the feature and want to restore the old behavior, simply use\na custom comment model manager to exclude the user group, like this::\n\n    from django.conf import settings\n    from django.contrib.comments.managers import CommentManager\n\n    class BanningCommentManager(CommentManager):\n        def get_query_set(self):\n            qs = super(BanningCommentManager, self).get_query_set()\n            if getattr(settings, 'COMMENTS_BANNED_USERS_GROUP', None):\n                where = ['user_id NOT IN (SELECT user_id FROM auth_user_groups WHERE group_id = %s)']\n                params = [settings.COMMENTS_BANNED_USERS_GROUP]\n                qs = qs.extra(where=where, params=params)\n            return qs\n\nSave this model manager in your custom comment app (e.g. in\n``my_comments_app/managers.py``) and add it your\n:ref:`custom comment app model <custom-comment-app-api>`::\n\n    from django.db import models\n    from django.contrib.comments.models import Comment\n\n    from my_comments_app.managers import BanningCommentManager\n\n    class CommentWithTitle(Comment):\n        title = models.CharField(max_length=300)\n\n        objects = BanningCommentManager()\n\nFor more details, see the documentation about\n:doc:`customizing the comments framework </ref/contrib/comments/custom>`.\n\n`IGNORABLE_404_STARTS` and `IGNORABLE_404_ENDS` settings\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nUntil Django 1.3, it was possible to exclude some URLs from Django's\n:doc:`404 error reporting</howto/error-reporting>` by adding prefixes to\n:setting:`IGNORABLE_404_STARTS` and suffixes to :setting:`IGNORABLE_404_ENDS`.\n\nIn Django 1.4, these two settings are superseded by\n:setting:`IGNORABLE_404_URLS`, which is a list of compiled regular expressions.\nDjango won't send an email for 404 errors on URLs that match any of them.\n\nFurthermore, the previous settings had some rather arbitrary default values::\n\n    IGNORABLE_404_STARTS = ('/cgi-bin/', '/_vti_bin', '/_vti_inf')\n    IGNORABLE_404_ENDS = ('mail.pl', 'mailform.pl', 'mail.cgi', 'mailform.cgi',\n                          'favicon.ico', '.php')\n\nIt's not Django's role to decide if your website has a legacy ``/cgi-bin/``\nsection or a ``favicon.ico``. As a consequence, the default values of\n:setting:`IGNORABLE_404_URLS`, :setting:`IGNORABLE_404_STARTS` and\n:setting:`IGNORABLE_404_ENDS` are all now empty.\n\nIf you have customized :setting:`IGNORABLE_404_STARTS` or\n:setting:`IGNORABLE_404_ENDS`, or if you want to keep the old default value,\nyou should add the following lines in your settings file::\n\n    import re\n    IGNORABLE_404_URLS = (\n        # for each <prefix> in IGNORABLE_404_STARTS\n        re.compile(r'^<prefix>'),\n        # for each <suffix> in IGNORABLE_404_ENDS\n        re.compile(r'<suffix>$'),\n    )\n\nDon't forget to escape characters that have a special meaning in a regular\nexpression.\n\nCSRF protection extended to PUT and DELETE\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nPreviously, Django's :doc:`CSRF protection </ref/contrib/csrf/>` provided\nprotection against only POST requests. Since use of PUT and DELETE methods in\nAJAX applications is becoming more common, we now protect all methods not\ndefined as safe by :rfc:`2616` i.e. we exempt GET, HEAD, OPTIONS and TRACE, and\nenforce protection on everything else.\n\nIf you are using PUT or DELETE methods in AJAX applications, please see the\n:ref:`instructions about using AJAX and CSRF <csrf-ajax>`.\n\n``django.core.template_loaders``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThis was an alias to ``django.template.loader`` since 2005, it has been removed\nwithout emitting a warning due to the length of the deprecation. If your code\nstill referenced this please use ``django.template.loader`` instead.\n\n``django.db.models.fields.URLField.verify_exists``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThis functionality has been removed due to intractable performance and\nsecurity issues. Any existing usage of ``verify_exists`` should be\nremoved.\n\n``django.core.files.storage.Storage.open``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe ``open`` method of the base Storage class took an obscure parameter\n``mixin`` which allowed you to dynamically change the base classes of the\nreturned file object. This has been removed. In the rare case you relied on the\n``mixin`` parameter, you can easily achieve the same by overriding the ``open``\nmethod, e.g.::\n\n    from django.core.files import File\n    from django.core.files.storage import FileSystemStorage\n\n    class Spam(File):\n        \"\"\"\n        Spam, spam, spam, spam and spam.\n        \"\"\"\n        def ham(self):\n            return 'eggs'\n\n    class SpamStorage(FileSystemStorage):\n        \"\"\"\n        A custom file storage backend.\n        \"\"\"\n        def open(self, name, mode='rb'):\n            return Spam(open(self.path(name), mode))\n\nYAML deserializer now uses ``yaml.safe_load``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n``yaml.load`` is able to construct any Python object, which may trigger\narbitrary code execution if you process a YAML document that comes from an\nuntrusted source. This feature isn't necessary for Django's YAML deserializer,\nwhose primary use is to load fixtures consisting of simple objects. Even though\nfixtures are trusted data, for additional security, the YAML deserializer now\nuses ``yaml.safe_load``.\n\nFeatures deprecated in 1.4\n==========================\n\nOld styles of calling ``cache_page`` decorator\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nSome legacy ways of calling :func:`~django.views.decorators.cache.cache_page`\nhave been deprecated, please see the docs for the correct way to use this\ndecorator.\n\nSupport for PostgreSQL versions older than 8.2\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nDjango 1.3 dropped support for PostgreSQL versions older than 8.0 and the\nrelevant documents suggested to use a recent version because of performance\nreasons but more importantly because end of the upstream support periods for\nreleases 8.0 and 8.1 was near (November 2010).\n\nDjango 1.4 takes that policy further and sets 8.2 as the minimum PostgreSQL\nversion it officially supports.\n\nRequest exceptions are now always logged\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nWhen :doc:`logging support </topics/logging/>` was added to Django in 1.3, the\nadmin error email support was moved into the\n:class:`django.utils.log.AdminEmailHandler`, attached to the\n``'django.request'`` logger. In order to maintain the established behavior of\nerror emails, the ``'django.request'`` logger was called only when\n:setting:`DEBUG` was ``False``.\n\nTo increase the flexibility of error logging for requests, the\n``'django.request'`` logger is now called regardless of the value of\n:setting:`DEBUG`, and the default settings file for new projects now includes a\nseparate filter attached to :class:`django.utils.log.AdminEmailHandler` to\nprevent admin error emails in ``DEBUG`` mode::\n\n   'filters': {\n        'require_debug_false': {\n            '()': 'django.utils.log.RequireDebugFalse'\n        }\n    },\n    'handlers': {\n        'mail_admins': {\n            'level': 'ERROR',\n            'filters': ['require_debug_false'],\n            'class': 'django.utils.log.AdminEmailHandler'\n        }\n    },\n\nIf your project was created prior to this change, your :setting:`LOGGING`\nsetting will not include this new filter. In order to maintain\nbackwards-compatibility, Django will detect that your ``'mail_admins'`` handler\nconfiguration includes no ``'filters'`` section, and will automatically add\nthis filter for you and issue a pending-deprecation warning. This will become a\ndeprecation warning in Django 1.5, and in Django 1.6 the\nbackwards-compatibility shim will be removed entirely.\n\nThe existence of any ``'filters'`` key under the ``'mail_admins'`` handler will\ndisable this backward-compatibility shim and deprecation warning.\n\n``django.conf.urls.defaults``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nUntil Django 1.3 the functions :func:`~django.conf.urls.include`,\n:func:`~django.conf.urls.patterns` and :func:`~django.conf.urls.url` plus\n:data:`~django.conf.urls.handler404`, :data:`~django.conf.urls.handler500`\nwere located in a ``django.conf.urls.defaults`` module.\n\nStarting with Django 1.4 they are now available in :mod:`django.conf.urls`.\n\n``django.contrib.databrowse``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nDatabrowse has not seen active development for some time, and this does not show\nany sign of changing. There had been a suggestion for a `GSOC project`_ to\nintegrate the functionality of databrowse into the admin, but no progress was\nmade. While Databrowse has been deprecated, an enhancement of\n``django.contrib.admin`` providing a similar feature set is still possible.\n\n.. _GSOC project: https://code.djangoproject.com/wiki/SummerOfCode2011#Integratedatabrowseintotheadmin\n\nThe code that powers Databrowse is licensed under the same terms as Django\nitself, and so is available to be adopted by an individual or group as\na third-party project.\n\n``django.core.management.setup_environ``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThis function temporarily modified ``sys.path`` in order to make the parent\n\"project\" directory importable under the old flat :djadmin:`startproject`\nlayout. This function is now deprecated, as its path workarounds are no longer\nneeded with the new ``manage.py`` and default project layout.\n\nThis function was never documented or part of the public API, but was widely\nrecommended for use in setting up a \"Django environment\" for a user script.\nThese uses should be replaced by setting the ``DJANGO_SETTINGS_MODULE``\nenvironment variable or using :func:`django.conf.settings.configure`.\n\n``django.core.management.execute_manager``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThis function was previously used by ``manage.py`` to execute a management\ncommand. It is identical to\n``django.core.management.execute_from_command_line``, except that it first\ncalls ``setup_environ``, which is now deprecated. As such, ``execute_manager``\nis also deprecated; ``execute_from_command_line`` can be used instead. Neither\nof these functions is documented as part of the public API, but a deprecation\npath is needed due to use in existing ``manage.py`` files.\n\n``is_safe`` and ``needs_autoescape`` attributes of template filters\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nTwo flags, ``is_safe`` and ``needs_autoescape``, define how each template filter\ninteracts with Django's auto-escaping behavior. They used to be attributes of\nthe filter function::\n\n    @register.filter\n    def noop(value):\n        return value\n    noop.is_safe = True\n\nHowever, this technique caused some problems in combination with decorators,\nespecially :func:`@stringfilter <django.template.defaultfilters.stringfilter>`.\nNow, the flags are keyword arguments of :meth:`@register.filter\n<django.template.Library.filter>`::\n\n    @register.filter(is_safe=True)\n    def noop(value):\n        return value\n\nSee :ref:`filters and auto-escaping <filters-auto-escaping>` for more information.\n\nSession cookies now have the ``httponly`` flag by default\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nSession cookies now include the ``httponly`` attribute by default to\nhelp reduce the impact of potential XSS attacks. For strict backwards\ncompatibility, use ``SESSION_COOKIE_HTTPONLY = False`` in your settings file.\n\nWildcard expansion of application names in `INSTALLED_APPS`\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nUntil Django 1.3, :setting:`INSTALLED_APPS` accepted wildcards in application\nnames, like ``django.contrib.*``. The expansion was performed by a\nfilesystem-based implementation of ``from <package> import *``. Unfortunately,\n`this can't be done reliably`_.\n\nThis behavior was never documented. Since it is un-pythonic and not obviously\nuseful, it was removed in Django 1.4. If you relied on it, you must edit your\nsettings file to list all your applications explicitly.\n\n.. _this can't be done reliably: http://docs.python.org/tutorial/modules.html#importing-from-a-package\n\n``HttpRequest.raw_post_data`` renamed to ``HttpRequest.body``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThis attribute was confusingly named ``HttpRequest.raw_post_data``, but it\nactually provided the body of the HTTP request. It's been renamed to\n``HttpRequest.body``, and ``HttpRequest.raw_post_data`` has been deprecated.\n\nThe Django 1.4 roadmap\n======================\n\nBefore the final Django 1.4 release, several other preview/development releases\nwill be made available. The current schedule consists of at least the following:\n\n* Week of **January 30, 2012**: First Django 1.4 beta release; final\n  feature freeze for Django 1.4.\n\n* Week of **February 27, 2012**: First Django 1.4 release\n  candidate; string freeze for translations.\n\n* Week of **March 5, 2012**: Django 1.4 final release.\n\nIf necessary, additional alpha, beta or release-candidate packages\nwill be issued prior to the final 1.4 release. Django 1.4 will be\nreleased approximately one week after the final release candidate.\n\nWhat you can do to help\n=======================\n\nIn order to provide a high-quality 1.4 release, we need your help. Although this\nalpha release is, again, *not* intended for production use, you can help the\nDjango team by trying out the alpha codebase in a safe test environment and\nreporting any bugs or issues you encounter. The Django ticket tracker is the\ncentral place to search for open issues:\n\n* https://code.djangoproject.com/timeline\n\nPlease open new tickets if no existing ticket corresponds to a problem you're\nrunning into.\n\nAdditionally, discussion of Django development, including progress toward the\n1.3 release, takes place daily on the django-developers mailing list:\n\n* http://groups.google.com/group/django-developers\n\n... and in the ``#django-dev`` IRC channel on ``irc.freenode.net``. If you're\ninterested in helping out with Django's development, feel free to join the\ndiscussions there.\n\nDjango's online documentation also includes pointers on how to contribute to\nDjango:\n\n* :doc:`How to contribute to Django </internals/contributing/index>`\n\nContributions on any level -- developing code, writing documentation or simply\ntriaging tickets and helping to test proposed bugfixes -- are always welcome and\nappreciated.\n\nSeveral development sprints will also be taking place before the 1.4\nrelease; these will typically be announced in advance on the\ndjango-developers mailing list, and anyone who wants to help is\nwelcome to join in.\n"
  },
  {
    "path": "Django-1.5.1/docs/releases/1.4-beta-1.txt",
    "content": "==============================\nDjango 1.4 beta release notes\n==============================\n\nFebruary 15, 2012.\n\nWelcome to Django 1.4 beta!\n\nThis is the second in a series of preview/development releases leading\nup to the eventual release of Django 1.4, scheduled for March\n2012. This release is primarily targeted at developers who are\ninterested in trying out new features and testing the Django codebase\nto help identify and resolve bugs prior to the final 1.4 release.\n\nAs such, this release is *not* intended for production use, and any such use\nis discouraged.\n\nDjango 1.4 beta includes various `new features`_ and some minor `backwards\nincompatible changes`_. There are also some features that have been dropped,\nwhich are detailed in :doc:`our deprecation plan </internals/deprecation>`,\nand we've `begun the deprecation process for some features`_.\n\n.. _new features: `What's new in Django 1.4`_\n.. _backwards incompatible changes: `Backwards incompatible changes in 1.4`_\n.. _begun the deprecation process for some features: `Features deprecated in 1.4`_\n\n\nVersion numbering\n=================\n\nInternally, Django's version number is represented by the tuple\n``django.VERSION``. This is used to generate human-readable version\nnumber strings; as of Django 1.4 beta 1, the algorithm for generating\nthese strings has been changed to match the recommendations of :pep:`386`.\nThis only affects the human-readable strings identifying Django alphas,\nbetas and release candidates, and should not affect end users in any way.\n\nFor example purposes, the old algorithm would give Django 1.4 beta 1 a\nversion string of the form \"1.4 beta 1\". The new algorithm generates\nthe version string \"1.4b1\".\n\n\nPython compatibility\n====================\n\nWhile not a new feature, it's important to note that Django 1.4 introduces the\nsecond shift in our Python compatibility policy since Django's initial public\ndebut. Django 1.2 dropped support for Python 2.3; now Django 1.4 drops support\nfor Python 2.4. As such, the minimum Python version required for Django is now\n2.5, and Django is tested and supported on Python 2.5, 2.6 and 2.7.\n\nThis change should affect only a small number of Django users, as most\noperating-system vendors today are shipping Python 2.5 or newer as their default\nversion. If you're still using Python 2.4, however, you'll need to stick to\nDjango 1.3 until you can upgrade; per :doc:`our support policy\n</internals/release-process>`, Django 1.3 will continue to receive security\nsupport until the release of Django 1.5.\n\nDjango does not support Python 3.x at this time. A document outlining our full\ntimeline for deprecating Python 2.x and moving to Python 3.x will be published\nbefore the release of Django 1.4.\n\nWhat's new in Django 1.4\n========================\n\nSupport for in-browser testing frameworks\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nDjango 1.4 supports integration with in-browser testing frameworks like\nSelenium_. The new :class:`django.test.LiveServerTestCase` base class lets you\ntest the interactions between your site's front and back ends more\ncomprehensively. See the\n:class:`documentation<django.test.LiveServerTestCase>` for more details and\nconcrete examples.\n\n.. _Selenium: http://seleniumhq.org/\n\n``SELECT FOR UPDATE`` support\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nDjango 1.4 now includes a :meth:`QuerySet.select_for_update()\n<django.db.models.query.QuerySet.select_for_update>` method which generates a\n``SELECT ... FOR UPDATE`` SQL query. This will lock rows until the end of the\ntransaction, meaning that other transactions cannot modify or delete rows\nmatched by a ``FOR UPDATE`` query.\n\nFor more details, see the documentation for\n:meth:`~django.db.models.query.QuerySet.select_for_update`.\n\n``Model.objects.bulk_create`` in the ORM\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThis method allows for more efficient creation of multiple objects in the ORM.\nIt can provide significant performance increases if you have many objects.\nDjango makes use of this internally, meaning some operations (such as database\nsetup for test suites) have seen a performance benefit as a result.\n\nSee the :meth:`~django.db.models.query.QuerySet.bulk_create` docs for more\ninformation.\n\n``QuerySet.prefetch_related``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nSimilar to :meth:`~django.db.models.query.QuerySet.select_related` but with a\ndifferent strategy and broader scope,\n:meth:`~django.db.models.query.QuerySet.prefetch_related` has been added to\n:class:`~django.db.models.query.QuerySet`. This method returns a new\n``QuerySet`` that will prefetch each of the specified related lookups in a\nsingle batch as soon as the query begins to be evaluated. Unlike\n``select_related``, it does the joins in Python, not in the database, and\nsupports many-to-many relationships,\n:class:`~django.contrib.contenttypes.generic.GenericForeignKey` and more. This\nallows you to fix a very common performance problem in which your code ends up\ndoing O(n) database queries (or worse) if objects on your primary ``QuerySet``\neach have many related objects that you also need.\n\nImproved password hashing\n~~~~~~~~~~~~~~~~~~~~~~~~~\n\nDjango's auth system (``django.contrib.auth``) stores passwords using a one-way\nalgorithm. Django 1.3 uses the SHA1_ algorithm, but increasing processor speeds\nand theoretical attacks have revealed that SHA1 isn't as secure as we'd like.\nThus, Django 1.4 introduces a new password storage system: by default Django now\nuses the PBKDF2_ algorithm (as recommended by NIST_). You can also easily choose\na different algorithm (including the popular bcrypt_ algorithm). For more\ndetails, see :ref:`auth_password_storage`.\n\n.. _sha1: http://en.wikipedia.org/wiki/SHA1\n.. _pbkdf2: http://en.wikipedia.org/wiki/PBKDF2\n.. _nist: http://csrc.nist.gov/publications/nistpubs/800-132/nist-sp800-132.pdf\n.. _bcrypt: http://en.wikipedia.org/wiki/Bcrypt\n\n.. warning::\n\n    Django 1.4 alpha contained a bug that corrupted PBKDF2 hashes. To\n    determine which accounts are affected, run :djadmin:`manage.py shell\n    <shell>` and paste this snippet::\n\n        from base64 import b64decode\n        from django.contrib.auth.models import User\n        hash_len = {'pbkdf2_sha1': 20, 'pbkdf2_sha256': 32}\n        for user in User.objects.filter(password__startswith='pbkdf2_'):\n            algo, _, _, hash = user.password.split('$')\n            if len(b64decode(hash)) != hash_len[algo]:\n                print user\n\n    These users should reset their passwords.\n\nHTML5 Doctype\n~~~~~~~~~~~~~\n\nWe've switched the admin and other bundled templates to use the HTML5\ndoctype. While Django will be careful to maintain compatibility with older\nbrowsers, this change means that you can use any HTML5 features you need in\nadmin pages without having to lose HTML validity or override the provided\ntemplates to change the doctype.\n\nList filters in admin interface\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nPrior to Django 1.4, the :mod:`~django.contrib.admin` app allowed you to specify\nchange list filters by specifying a field lookup, but didn't allow you to create\ncustom filters. This has been rectified with a simple API (previously used\ninternally and known as \"FilterSpec\"). For more details, see the documentation\nfor :attr:`~django.contrib.admin.ModelAdmin.list_filter`.\n\nMultiple sort in admin interface\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe admin change list now supports sorting on multiple columns. It respects all\nelements of the :attr:`~django.contrib.admin.ModelAdmin.ordering` attribute, and\nsorting on multiple columns by clicking on headers is designed to mimic the\nbehavior of desktop GUIs. The\n:meth:`~django.contrib.admin.ModelAdmin.get_ordering` method for specifying the\nordering dynamically (e.g. depending on the request) has also been added.\n\nNew ``ModelAdmin`` methods\n~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nA new :meth:`~django.contrib.admin.ModelAdmin.save_related` method was added to\n:mod:`~django.contrib.admin.ModelAdmin` to ease customization of how\nrelated objects are saved in the admin.\n\nTwo other new methods,\n:meth:`~django.contrib.admin.ModelAdmin.get_list_display` and\n:meth:`~django.contrib.admin.ModelAdmin.get_list_display_links`\nwere added to :class:`~django.contrib.admin.ModelAdmin` to enable the dynamic\ncustomization of fields and links displayed on the admin change list.\n\nAdmin inlines respect user permissions\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nAdmin inlines will now only allow those actions for which the user has\npermission. For ``ManyToMany`` relationships with an auto-created intermediate\nmodel (which does not have its own permissions), the change permission for the\nrelated model determines if the user has the permission to add, change or\ndelete relationships.\n\nTools for cryptographic signing\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nDjango 1.4 adds both a low-level API for signing values and a high-level API\nfor setting and reading signed cookies, one of the most common uses of\nsigning in Web applications.\n\nSee the :doc:`cryptographic signing </topics/signing>` docs for more\ninformation.\n\nCookie-based session backend\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nDjango 1.4 introduces a new cookie-based backend for the session framework\nwhich uses the tools for :doc:`cryptographic signing </topics/signing>` to\nstore the session data in the client's browser.\n\n.. warning::\n\n    Session data is signed and validated by the server, but is not\n    encrypted.  This means that a user can view any data stored in the\n    session, but cannot change it. Please read the documentation for\n    further clarification before using this backend.\n\nSee the :ref:`cookie-based session backend <cookie-session-backend>` docs for\nmore information.\n\nNew form wizard\n~~~~~~~~~~~~~~~\n\nThe previous ``FormWizard`` from the formtools contrib app has been\nreplaced with a new implementation based on the class-based views\nintroduced in Django 1.3. It features a pluggable storage API and doesn't\nrequire the wizard to pass around hidden fields for every previous step.\n\nDjango 1.4 ships with a session-based storage backend and a cookie-based\nstorage backend. The latter uses the tools for\n:doc:`cryptographic signing </topics/signing>` also introduced in\nDjango 1.4 to store the wizard's state in the user's cookies.\n\nSee the :doc:`form wizard </ref/contrib/formtools/form-wizard>` docs for\nmore information.\n\n``reverse_lazy``\n~~~~~~~~~~~~~~~~\n\nA lazily evaluated version of :func:`django.core.urlresolvers.reverse` was\nadded to allow using URL reversals before the project's URLConf gets loaded.\n\nTranslating URL patterns\n~~~~~~~~~~~~~~~~~~~~~~~~\n\nDjango 1.4 gained the ability to look for a language prefix in the URL pattern\nwhen using the new :func:`~django.conf.urls.i18n.i18n_patterns` helper function.\nAdditionally, it's now possible to define translatable URL patterns using\n:func:`~django.utils.translation.ugettext_lazy`. See\n:ref:`url-internationalization` for more information about the language prefix\nand how to internationalize URL patterns.\n\nContextual translation support for ``{% trans %}`` and ``{% blocktrans %}``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe :ref:`contextual translation<contextual-markers>` support introduced in\nDjango 1.3 via the ``pgettext`` function has been extended to the\n:ttag:`trans` and :ttag:`blocktrans` template tags using the new ``context``\nkeyword.\n\nCustomizable ``SingleObjectMixin`` URLConf kwargs\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nTwo new attributes,\n:attr:`pk_url_kwarg<django.views.generic.detail.SingleObjectMixin.pk_url_kwarg>`\nand\n:attr:`slug_url_kwarg<django.views.generic.detail.SingleObjectMixin.slug_url_kwarg>`,\nhave been added to :class:`~django.views.generic.detail.SingleObjectMixin` to\nenable the customization of URLConf keyword arguments used for single\nobject generic views.\n\nAssignment template tags\n~~~~~~~~~~~~~~~~~~~~~~~~\n\nA new :ref:`assignment_tag<howto-custom-template-tags-assignment-tags>` helper\nfunction was added to ``template.Library`` to ease the creation of template\ntags that store data in a specified context variable.\n\n``*args`` and ``**kwargs`` support for template tag helper functions\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe :ref:`simple_tag<howto-custom-template-tags-simple-tags>`,\n:ref:`inclusion_tag <howto-custom-template-tags-inclusion-tags>` and\nnewly introduced\n:ref:`assignment_tag<howto-custom-template-tags-assignment-tags>` template\nhelper functions may now accept any number of positional or keyword arguments.\nFor example:\n\n.. code-block:: python\n\n    @register.simple_tag\n    def my_tag(a, b, *args, **kwargs):\n        warning = kwargs['warning']\n        profile = kwargs['profile']\n        ...\n        return ...\n\nThen in the template any number of arguments may be passed to the template tag.\nFor example:\n\n.. code-block:: html+django\n\n    {% my_tag 123 \"abcd\" book.title warning=message|lower profile=user.profile %}\n\nNo wrapping of exceptions in ``TEMPLATE_DEBUG`` mode\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nIn previous versions of Django, whenever the :setting:`TEMPLATE_DEBUG` setting\nwas ``True``, any exception raised during template rendering (even exceptions\nunrelated to template syntax) were wrapped in ``TemplateSyntaxError`` and\nre-raised. This was done in order to provide detailed template source location\ninformation in the debug 500 page.\n\nIn Django 1.4, exceptions are no longer wrapped. Instead, the original\nexception is annotated with the source information. This means that catching\nexceptions from template rendering is now consistent regardless of the value of\n:setting:`TEMPLATE_DEBUG`, and there's no need to catch and unwrap\n``TemplateSyntaxError`` in order to catch other errors.\n\n``truncatechars`` template filter\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nAdded a filter which truncates a string to be no longer than the specified\nnumber of characters. Truncated strings end with a translatable ellipsis\nsequence (\"...\"). See the documentation for :tfilter:`truncatechars` for\nmore details.\n\n``static`` template tag\n~~~~~~~~~~~~~~~~~~~~~~~\n\nThe :mod:`staticfiles<django.contrib.staticfiles>` contrib app has a new\n:ttag:`static<staticfiles-static>` template tag to refer to files saved with\nthe :setting:`STATICFILES_STORAGE` storage backend. It uses the storage\nbackend's ``url`` method and therefore supports advanced features such as\n:ref:`serving files from a cloud service<staticfiles-from-cdn>`.\n\n``CachedStaticFilesStorage`` storage backend\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nIn addition to the `static template tag`_, the\n:mod:`staticfiles<django.contrib.staticfiles>` contrib app now has a\n:class:`~django.contrib.staticfiles.storage.CachedStaticFilesStorage` backend\nwhich caches the files it saves (when running the :djadmin:`collectstatic`\nmanagement command) by appending the MD5 hash of the file's content to the\nfilename. For example, the file ``css/styles.css`` would also be saved as\n``css/styles.55e7cbb9ba48.css``\n\nSee the :class:`~django.contrib.staticfiles.storage.CachedStaticFilesStorage`\ndocs for more information.\n\nSimple clickjacking protection\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nWe've added a middleware to provide easy protection against `clickjacking\n<http://en.wikipedia.org/wiki/Clickjacking>`_ using the ``X-Frame-Options``\nheader. It's not enabled by default for backwards compatibility reasons, but\nyou'll almost certainly want to :doc:`enable it </ref/clickjacking/>` to help\nplug that security hole for browsers that support the header.\n\nCSRF improvements\n~~~~~~~~~~~~~~~~~\n\nWe've made various improvements to our CSRF features, including the\n:func:`~django.views.decorators.csrf.ensure_csrf_cookie` decorator which can\nhelp with AJAX heavy sites, protection for PUT and DELETE requests, and the\n:setting:`CSRF_COOKIE_SECURE` and :setting:`CSRF_COOKIE_PATH` settings which can\nimprove the security and usefulness of the CSRF protection. See the :doc:`CSRF\ndocs </ref/contrib/csrf>` for more information.\n\nError report filtering\n~~~~~~~~~~~~~~~~~~~~~~\n\nTwo new function decorators, :func:`sensitive_variables` and\n:func:`sensitive_post_parameters`, were added to allow designating the\nlocal variables and POST parameters which may contain sensitive\ninformation and should be filtered out of error reports.\n\nAll POST parameters are now systematically filtered out of error reports for\ncertain views (``login``, ``password_reset_confirm``, ``password_change``, and\n``add_view`` in :mod:`django.contrib.auth.views`, as well as\n``user_change_password`` in the admin app) to prevent the leaking of sensitive\ninformation such as user passwords.\n\nYou may override or customize the default filtering by writing a :ref:`custom\nfilter<custom-error-reports>`. For more information see the docs on\n:ref:`Filtering error reports<filtering-error-reports>`.\n\nExtended IPv6 support\n~~~~~~~~~~~~~~~~~~~~~\n\nThe previously added support for IPv6 addresses when using the runserver\nmanagement command in Django 1.3 has now been further extended by adding\na :class:`~django.db.models.GenericIPAddressField` model field,\na :class:`~django.forms.GenericIPAddressField` form field and\nthe validators :data:`~django.core.validators.validate_ipv46_address` and\n:data:`~django.core.validators.validate_ipv6_address`\n\nUpdated default project layout and ``manage.py``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nDjango 1.4 ships with an updated default project layout and ``manage.py`` file\nfor the :djadmin:`startproject` management command. These fix some issues with\nthe previous ``manage.py`` handling of Python import paths that caused double\nimports, trouble moving from development to deployment, and other\ndifficult-to-debug path issues.\n\nThe previous ``manage.py`` called functions that are now deprecated, and thus\nprojects upgrading to Django 1.4 should update their ``manage.py``. (The\nold-style ``manage.py`` will continue to work as before until Django 1.6; in\n1.5 it will raise ``DeprecationWarning``).\n\nThe new recommended ``manage.py`` file should look like this::\n\n    #!/usr/bin/env python\n    import os, sys\n\n    if __name__ == \"__main__\":\n        os.environ.setdefault(\"DJANGO_SETTINGS_MODULE\", \"{{ project_name }}.settings\")\n\n        from django.core.management import execute_from_command_line\n\n        execute_from_command_line(sys.argv)\n\n``{{ project_name }}`` should be replaced with the Python package name of the\nactual project.\n\nIf settings, URLconfs, and apps within the project are imported or referenced\nusing the project name prefix (e.g. ``myproject.settings``, ``ROOT_URLCONF =\n\"myproject.urls\"``, etc), the new ``manage.py`` will need to be moved one\ndirectory up, so it is outside the project package rather than adjacent to\n``settings.py`` and ``urls.py``.\n\nFor instance, with the following layout::\n\n    manage.py\n    mysite/\n        __init__.py\n        settings.py\n        urls.py\n        myapp/\n            __init__.py\n            models.py\n\nYou could import ``mysite.settings``, ``mysite.urls``, and ``mysite.myapp``,\nbut not ``settings``, ``urls``, or ``myapp`` as top-level modules.\n\nAnything imported as a top-level module can be placed adjacent to the new\n``manage.py``. For instance, to decouple \"myapp\" from the project module and\nimport it as just ``myapp``, place it outside the ``mysite/`` directory::\n\n    manage.py\n    myapp/\n        __init__.py\n        models.py\n    mysite/\n        __init__.py\n        settings.py\n        urls.py\n\nIf the same code is imported inconsistently (some places with the project\nprefix, some places without it), the imports will need to be cleaned up when\nswitching to the new ``manage.py``.\n\nImproved WSGI support\n~~~~~~~~~~~~~~~~~~~~~\n\nThe :djadmin:`startproject` management command now adds a :file:`wsgi.py`\nmodule to the initial project layout, containing a simple WSGI application that\ncan be used for :doc:`deploying with WSGI app\nservers</howto/deployment/wsgi/index>`.\n\nThe :djadmin:`built-in development server<runserver>` now supports using an\nexternally-defined WSGI callable, so as to make it possible to run runserver\nwith the same WSGI configuration that is used for deployment. A new\n:setting:`WSGI_APPLICATION` setting is available to configure which WSGI\ncallable :djadmin:`runserver` uses.\n\n(The :djadmin:`runfcgi` management command also internally wraps the WSGI\ncallable configured via :setting:`WSGI_APPLICATION`.)\n\nCustom project and app templates\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe :djadmin:`startapp` and :djadmin:`startproject` management commands\ngot a ``--template`` option for specifying a path or URL to a custom app or\nproject template.\n\nFor example, Django will use the ``/path/to/my_project_template`` directory\nwhen running the following command::\n\n    django-admin.py startproject --template=/path/to/my_project_template myproject\n\nYou can also now provide a destination directory as the second\nargument to both :djadmin:`startapp` and :djadmin:`startproject`::\n\n    django-admin.py startapp myapp /path/to/new/app\n    django-admin.py startproject myproject /path/to/new/project\n\nFor more information, see the :djadmin:`startapp` and :djadmin:`startproject`\ndocumentation.\n\nSupport for time zones\n~~~~~~~~~~~~~~~~~~~~~~\n\nDjango 1.4 adds :ref:`support for time zones <time-zones>`. When it's enabled,\nDjango stores date and time information in UTC in the database, uses time\nzone-aware datetime objects internally, and translates them to the end user's\ntime zone in templates and forms.\n\nReasons for using this feature include:\n\n- Customizing date and time display for users around the world.\n- Storing datetimes in UTC for database portability and interoperability.\n  (This argument doesn't apply to PostgreSQL, because it already stores\n  timestamps with time zone information in Django 1.3.)\n- Avoiding data corruption problems around DST transitions.\n\nTime zone support is enabled by default in new projects created with\n:djadmin:`startproject`. If you want to use this feature in an existing\nproject, there is a :ref:`migration guide <time-zones-migration-guide>`.\n\nTwo new date format strings\n~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nTwo new :tfilter:`date` formats were added for use in template filters,\ntemplate tags and :ref:`format-localization`:\n\n- ``e`` -- the name of the timezone of the given datetime object\n- ``o`` -- the ISO 8601 year number\n\nPlease make sure to update your :ref:`custom format files\n<custom-format-files>` if they contain either ``e`` or ``o`` in a format\nstring. For example a Spanish localization format previously only escaped the\n``d`` format character::\n\n  DATE_FORMAT = r'j \\de F \\de Y'\n\nBut now it needs to also escape ``e`` and ``o``::\n\n  DATE_FORMAT = r'j \\d\\e F \\d\\e Y'\n\nFor more information, see the :tfilter:`date` documentation.\n\nMinor features\n~~~~~~~~~~~~~~\n\nDjango 1.4 also includes several smaller improvements worth noting:\n\n* A more usable stacktrace in the technical 500 page: frames in the\n  stack trace which reference Django's code are dimmed out, while\n  frames in user code are slightly emphasized. This change makes it\n  easier to scan a stacktrace for issues in user code.\n\n* :doc:`Tablespace support </topics/db/tablespaces>` in PostgreSQL.\n\n* Customizable names for :meth:`~django.template.Library.simple_tag`.\n\n* In the documentation, a helpful :doc:`security overview </topics/security>`\n  page.\n\n* The ``django.contrib.auth.models.check_password`` function has been moved\n  to the ``django.contrib.auth.utils`` module. Importing it from the old\n  location will still work, but you should update your imports.\n\n* The :djadmin:`collectstatic` management command gained a ``--clear`` option\n  to delete all files at the destination before copying or linking the static\n  files.\n\n* It is now possible to load fixtures containing forward references when using\n  MySQL with the InnoDB database engine.\n\n* A new 403 response handler has been added as\n  ``'django.views.defaults.permission_denied'``. You can set your own handler by\n  setting the value of :data:`django.conf.urls.handler403`. See the\n  documentation about :ref:`the 403 (HTTP Forbidden) view<http_forbidden_view>`\n  for more information.\n\n* The :ttag:`trans` template tag now takes an optional ``as`` argument to\n  be able to retrieve a translation string without displaying it but setting\n  a template context variable instead.\n\n* The :ttag:`if` template tag now supports ``{% elif %}`` clauses.\n\n* A new plain text version of the HTTP 500 status code internal error page\n  served when :setting:`DEBUG` is ``True`` is now sent to the client when\n  Django detects that the request has originated in JavaScript code\n  (:meth:`~django.http.HttpRequest.is_ajax` is used for this).\n\n  Similarly to its HTML counterpart, it contains a collection of different\n  pieces of information about the state of the web application.\n\n  This should make it easier to read when debugging interaction with\n  client-side Javascript code.\n\n* Added the :djadminopt:`--no-location` option to the :djadmin:`makemessages`\n  command.\n\n* Changed the ``locmem`` cache backend to use\n  ``pickle.HIGHEST_PROTOCOL`` for better compatibility with the other\n  cache backends.\n\n* Added support in the ORM for generating ``SELECT`` queries containing\n  ``DISTINCT ON``.\n\n  The ``distinct()`` ``QuerySet`` method now accepts an optional list of model\n  field names. If specified, then the ``DISTINCT`` statement is limited to these\n  fields. This is only supported in PostgreSQL.\n\n  For more details, see the documentation for\n  :meth:`~django.db.models.query.QuerySet.distinct`.\n\n* New phrases added to ``HIDDEN_SETTINGS`` regex in `django/views/debug.py`_.\n\n  ``'API'``, ``'TOKEN'``, ``'KEY'`` were added, ``'PASSWORD'`` was changed to\n  ``'PASS'``.\n\n.. _django/views/debug.py: https://code.djangoproject.com/browser/django/trunk/django/views/debug.py\n\n\nBackwards incompatible changes in 1.4\n=====================================\n\ndjango.contrib.admin\n~~~~~~~~~~~~~~~~~~~~\n\nThe included administration app ``django.contrib.admin`` has for a long time\nshipped with a default set of static files such as JavaScript, images and\nstylesheets. Django 1.3 added a new contrib app ``django.contrib.staticfiles``\nto handle such files in a generic way and defined conventions for static\nfiles included in apps.\n\nStarting in Django 1.4 the admin's static files also follow this\nconvention to make it easier to deploy the included files. In previous\nversions of Django, it was also common to define an ``ADMIN_MEDIA_PREFIX``\nsetting to point to the URL where the admin's static files are served by a\nweb server. This setting has now been deprecated and replaced by the more\ngeneral setting :setting:`STATIC_URL`. Django will now expect to find the\nadmin static files under the URL ``<STATIC_URL>/admin/``.\n\nIf you've previously used a URL path for ``ADMIN_MEDIA_PREFIX`` (e.g.\n``/media/``) simply make sure :setting:`STATIC_URL` and :setting:`STATIC_ROOT`\nare configured and your web server serves the files correctly. The development\nserver continues to serve the admin files just like before. Don't hesitate to\nconsult the :doc:`static files howto </howto/static-files>` for further\ndetails.\n\nIn case your ``ADMIN_MEDIA_PREFIX`` is set to an specific domain (e.g.\n``http://media.example.com/admin/``) make sure to also set your\n:setting:`STATIC_URL` setting to the correct URL, for example\n``http://media.example.com/``.\n\n.. warning::\n\n    If you're implicitly relying on the path of the admin static files on\n    your server's file system when you deploy your site, you have to update\n    that path. The files were moved from :file:`django/contrib/admin/media/`\n    to :file:`django/contrib/admin/static/admin/`.\n\nSupported browsers for the admin\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nDjango hasn't had a clear policy on which browsers are supported for using the\nadmin app. Django's new policy formalizes existing practices: `YUI's A-grade`_\nbrowsers should provide a fully-functional admin experience, with the notable\nexception of IE6, which is no longer supported.\n\nReleased over ten years ago, IE6 imposes many limitations on modern web\ndevelopment. The practical implications of this policy are that contributors\nare free to improve the admin without consideration for these limitations.\n\nThis new policy **has no impact** on development outside of the admin. Users of\nDjango are free to develop webapps compatible with any range of browsers.\n\n.. _YUI's A-grade: http://yuilibrary.com/yui/docs/tutorials/gbs/\n\nRemoved admin icons\n~~~~~~~~~~~~~~~~~~~\n\nAs part of an effort to improve the performance and usability of the admin's\nchangelist sorting interface and of the admin's :attr:`horizontal\n<django.contrib.admin.ModelAdmin.filter_horizontal>` and :attr:`vertical\n<django.contrib.admin.ModelAdmin.filter_vertical>` \"filter\" widgets, some icon\nfiles were removed and grouped into two sprite files.\n\nSpecifically: ``selector-add.gif``, ``selector-addall.gif``,\n``selector-remove.gif``, ``selector-removeall.gif``,\n``selector_stacked-add.gif`` and ``selector_stacked-remove.gif`` were\ncombined into ``selector-icons.gif``; and ``arrow-up.gif`` and\n``arrow-down.gif`` were combined into ``sorting-icons.gif``.\n\nIf you used those icons to customize the admin then you will want to replace\nthem with your own icons or retrieve them from a previous release.\n\nCSS class names in admin forms\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nTo avoid conflicts with other common CSS class names (e.g. \"button\"), a prefix\n\"field-\" has been added to all CSS class names automatically generated from the\nform field names in the main admin forms, stacked inline forms and tabular\ninline cells. You will need to take that prefix into account in your custom\nstyle sheets or javascript files if you previously used plain field names as\nselectors for custom styles or javascript transformations.\n\nCompatibility with old signed data\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nDjango 1.3 changed the cryptographic signing mechanisms used in a number of\nplaces in Django. While Django 1.3 kept fallbacks that would accept hashes\nproduced by the previous methods, these fallbacks are removed in Django 1.4.\n\nSo, if you upgrade to Django 1.4 directly from 1.2 or earlier, you may\nlose/invalidate certain pieces of data that have been cryptographically signed\nusing an old method. To avoid this, use Django 1.3 first for a period of time\nto allow the signed data to expire naturally. The affected parts are detailed\nbelow, with 1) the consequences of ignoring this advice and 2) the amount of\ntime you need to run Django 1.3 for the data to expire or become irrelevant.\n\n* ``contrib.sessions`` data integrity check\n\n  * consequences: the user will be logged out, and session data will be lost.\n\n  * time period: defined by :setting:`SESSION_COOKIE_AGE`.\n\n* ``contrib.auth`` password reset hash\n\n  * consequences: password reset links from before the upgrade will not work.\n\n  * time period: defined by :setting:`PASSWORD_RESET_TIMEOUT_DAYS`.\n\nForm-related hashes — these are much shorter lifetime, and are relevant only for\nthe short window where a user might fill in a form generated by the pre-upgrade\nDjango instance, and try to submit it to the upgraded Django instance:\n\n* ``contrib.comments`` form security hash\n\n  * consequences: the user will see a validation error \"Security hash failed\".\n\n  * time period: the amount of time you expect users to take filling out comment\n    forms.\n\n* ``FormWizard`` security hash\n\n  * consequences: the user will see an error about the form having expired,\n    and will be sent back to the first page of the wizard, losing the data\n    they have entered so far.\n\n  * time period: the amount of time you expect users to take filling out the\n    affected forms.\n\n* CSRF check\n\n  * Note: This is actually a Django 1.1 fallback, not Django 1.2,\n    and applies only if you are upgrading from 1.1.\n\n  * consequences: the user will see a 403 error with any CSRF protected POST\n    form.\n\n  * time period: the amount of time you expect user to take filling out\n    such forms.\n\ndjango.contrib.flatpages\n~~~~~~~~~~~~~~~~~~~~~~~~\n\nStarting in the 1.4 release the\n:class:`~django.contrib.flatpages.middleware.FlatpageFallbackMiddleware` only\nadds a trailing slash and redirects if the resulting URL refers to an existing\nflatpage. For example, requesting ``/notaflatpageoravalidurl`` in a previous\nversion would redirect to ``/notaflatpageoravalidurl/``, which would\nsubsequently raise a 404. Requesting ``/notaflatpageoravalidurl`` now will\nimmediately raise a 404. Additionally redirects returned by flatpages are now\npermanent (301 status code) to match the behavior of the\n:class:`~django.middleware.common.CommonMiddleware`.\n\nSerialization of :class:`~datetime.datetime` and :class:`~datetime.time`\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nAs a consequence of time zone support, and according to the ECMA-262\nspecification, some changes were made to the JSON serializer:\n\n- It includes the time zone for aware datetime objects. It raises an exception\n  for aware time objects.\n- It includes milliseconds for datetime and time objects. There is still\n  some precision loss, because Python stores microseconds (6 digits) and JSON\n  only supports milliseconds (3 digits). However, it's better than discarding\n  microseconds entirely.\n\nThe XML serializer was also changed to use the ISO8601 format for datetimes.\nThe letter ``T`` is used to separate the date part from the time part, instead\nof a space. Time zone information is included in the ``[+-]HH:MM`` format.\n\nThe serializers will dump datetimes in fixtures with these new formats. They\ncan still load fixtures that use the old format.\n\n``supports_timezone`` changed to ``False`` for SQLite\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe database feature ``supports_timezone`` used to be ``True`` for SQLite.\nIndeed, if you saved an aware datetime object, SQLite stored a string that\nincluded an UTC offset. However, this offset was ignored when loading the value\nback from the database, which could corrupt the data.\n\nIn the context of time zone support, this flag was changed to ``False``, and\ndatetimes are now stored without time zone information in SQLite. When\n:setting:`USE_TZ` is ``False``, if you attempt to save an aware datetime\nobject, Django raises an exception.\n\nDatabase connection's thread-locality\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n``DatabaseWrapper`` objects (i.e. the connection objects referenced by\n``django.db.connection`` and ``django.db.connections[\"some_alias\"]``) used to\nbe thread-local. They are now global objects in order to be potentially shared\nbetween multiple threads. While the individual connection objects are now\nglobal, the ``django.db.connections`` dictionary referencing those objects is\nstill thread-local. Therefore if you just use the ORM or\n``DatabaseWrapper.cursor()`` then the behavior is still the same as before.\nNote, however, that ``django.db.connection`` does not directly reference the\ndefault ``DatabaseWrapper`` object anymore and is now a proxy to access that\nobject's attributes. If you need to access the actual ``DatabaseWrapper``\nobject, use ``django.db.connections[DEFAULT_DB_ALIAS]`` instead.\n\nAs part of this change, all underlying SQLite connections are now enabled for\npotential thread-sharing (by passing the ``check_same_thread=False`` attribute\nto pysqlite). ``DatabaseWrapper`` however preserves the previous behavior by\ndisabling thread-sharing by default, so this does not affect any existing\ncode that purely relies on the ORM or on ``DatabaseWrapper.cursor()``.\n\nFinally, while it is now possible to pass connections between threads, Django\ndoes not make any effort to synchronize access to the underlying backend.\nConcurrency behavior is defined by the underlying backend implementation.\nCheck their documentation for details.\n\n`COMMENTS_BANNED_USERS_GROUP` setting\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nDjango's :doc:`comments app </ref/contrib/comments/index>` has historically\nsupported excluding the comments of a special user group, but we've never\ndocumented the feature properly and didn't enforce the exclusion in other parts\nof the app such as the template tags. To fix this problem, we removed the code\nfrom the feed class.\n\nIf you rely on the feature and want to restore the old behavior, simply use\na custom comment model manager to exclude the user group, like this::\n\n    from django.conf import settings\n    from django.contrib.comments.managers import CommentManager\n\n    class BanningCommentManager(CommentManager):\n        def get_query_set(self):\n            qs = super(BanningCommentManager, self).get_query_set()\n            if getattr(settings, 'COMMENTS_BANNED_USERS_GROUP', None):\n                where = ['user_id NOT IN (SELECT user_id FROM auth_user_groups WHERE group_id = %s)']\n                params = [settings.COMMENTS_BANNED_USERS_GROUP]\n                qs = qs.extra(where=where, params=params)\n            return qs\n\nSave this model manager in your custom comment app (e.g. in\n``my_comments_app/managers.py``) and add it your\n:ref:`custom comment app model <custom-comment-app-api>`::\n\n    from django.db import models\n    from django.contrib.comments.models import Comment\n\n    from my_comments_app.managers import BanningCommentManager\n\n    class CommentWithTitle(Comment):\n        title = models.CharField(max_length=300)\n\n        objects = BanningCommentManager()\n\nFor more details, see the documentation about\n:doc:`customizing the comments framework </ref/contrib/comments/custom>`.\n\n`IGNORABLE_404_STARTS` and `IGNORABLE_404_ENDS` settings\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nUntil Django 1.3, it was possible to exclude some URLs from Django's\n:doc:`404 error reporting</howto/error-reporting>` by adding prefixes to\n:setting:`IGNORABLE_404_STARTS` and suffixes to :setting:`IGNORABLE_404_ENDS`.\n\nIn Django 1.4, these two settings are superseded by\n:setting:`IGNORABLE_404_URLS`, which is a list of compiled regular expressions.\nDjango won't send an email for 404 errors on URLs that match any of them.\n\nFurthermore, the previous settings had some rather arbitrary default values::\n\n    IGNORABLE_404_STARTS = ('/cgi-bin/', '/_vti_bin', '/_vti_inf')\n    IGNORABLE_404_ENDS = ('mail.pl', 'mailform.pl', 'mail.cgi', 'mailform.cgi',\n                          'favicon.ico', '.php')\n\nIt's not Django's role to decide if your website has a legacy ``/cgi-bin/``\nsection or a ``favicon.ico``. As a consequence, the default values of\n:setting:`IGNORABLE_404_URLS`, :setting:`IGNORABLE_404_STARTS` and\n:setting:`IGNORABLE_404_ENDS` are all now empty.\n\nIf you have customized :setting:`IGNORABLE_404_STARTS` or\n:setting:`IGNORABLE_404_ENDS`, or if you want to keep the old default value,\nyou should add the following lines in your settings file::\n\n    import re\n    IGNORABLE_404_URLS = (\n        # for each <prefix> in IGNORABLE_404_STARTS\n        re.compile(r'^<prefix>'),\n        # for each <suffix> in IGNORABLE_404_ENDS\n        re.compile(r'<suffix>$'),\n    )\n\nDon't forget to escape characters that have a special meaning in a regular\nexpression.\n\nCSRF protection extended to PUT and DELETE\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nPreviously, Django's :doc:`CSRF protection </ref/contrib/csrf/>` provided\nprotection against only POST requests. Since use of PUT and DELETE methods in\nAJAX applications is becoming more common, we now protect all methods not\ndefined as safe by :rfc:`2616` i.e. we exempt GET, HEAD, OPTIONS and TRACE, and\nenforce protection on everything else.\n\nIf you are using PUT or DELETE methods in AJAX applications, please see the\n:ref:`instructions about using AJAX and CSRF <csrf-ajax>`.\n\n``django.core.template_loaders``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThis was an alias to ``django.template.loader`` since 2005, it has been removed\nwithout emitting a warning due to the length of the deprecation. If your code\nstill referenced this please use ``django.template.loader`` instead.\n\n``django.db.models.fields.URLField.verify_exists``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThis functionality has been removed due to intractable performance and\nsecurity issues. Any existing usage of ``verify_exists`` should be\nremoved.\n\n``django.core.files.storage.Storage.open``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe ``open`` method of the base Storage class took an obscure parameter\n``mixin`` which allowed you to dynamically change the base classes of the\nreturned file object. This has been removed. In the rare case you relied on the\n``mixin`` parameter, you can easily achieve the same by overriding the ``open``\nmethod, e.g.::\n\n    from django.core.files import File\n    from django.core.files.storage import FileSystemStorage\n\n    class Spam(File):\n        \"\"\"\n        Spam, spam, spam, spam and spam.\n        \"\"\"\n        def ham(self):\n            return 'eggs'\n\n    class SpamStorage(FileSystemStorage):\n        \"\"\"\n        A custom file storage backend.\n        \"\"\"\n        def open(self, name, mode='rb'):\n            return Spam(open(self.path(name), mode))\n\nYAML deserializer now uses ``yaml.safe_load``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n``yaml.load`` is able to construct any Python object, which may trigger\narbitrary code execution if you process a YAML document that comes from an\nuntrusted source. This feature isn't necessary for Django's YAML deserializer,\nwhose primary use is to load fixtures consisting of simple objects. Even though\nfixtures are trusted data, for additional security, the YAML deserializer now\nuses ``yaml.safe_load``.\n\nFeatures deprecated in 1.4\n==========================\n\nOld styles of calling ``cache_page`` decorator\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nSome legacy ways of calling :func:`~django.views.decorators.cache.cache_page`\nhave been deprecated, please see the docs for the correct way to use this\ndecorator.\n\nSupport for PostgreSQL versions older than 8.2\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nDjango 1.3 dropped support for PostgreSQL versions older than 8.0 and the\nrelevant documents suggested to use a recent version because of performance\nreasons but more importantly because end of the upstream support periods for\nreleases 8.0 and 8.1 was near (November 2010).\n\nDjango 1.4 takes that policy further and sets 8.2 as the minimum PostgreSQL\nversion it officially supports.\n\nRequest exceptions are now always logged\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nWhen :doc:`logging support </topics/logging/>` was added to Django in 1.3, the\nadmin error email support was moved into the\n:class:`django.utils.log.AdminEmailHandler`, attached to the\n``'django.request'`` logger. In order to maintain the established behavior of\nerror emails, the ``'django.request'`` logger was called only when\n:setting:`DEBUG` was ``False``.\n\nTo increase the flexibility of error logging for requests, the\n``'django.request'`` logger is now called regardless of the value of\n:setting:`DEBUG`, and the default settings file for new projects now includes a\nseparate filter attached to :class:`django.utils.log.AdminEmailHandler` to\nprevent admin error emails in ``DEBUG`` mode::\n\n   'filters': {\n        'require_debug_false': {\n            '()': 'django.utils.log.RequireDebugFalse'\n        }\n    },\n    'handlers': {\n        'mail_admins': {\n            'level': 'ERROR',\n            'filters': ['require_debug_false'],\n            'class': 'django.utils.log.AdminEmailHandler'\n        }\n    },\n\nIf your project was created prior to this change, your :setting:`LOGGING`\nsetting will not include this new filter. In order to maintain\nbackwards-compatibility, Django will detect that your ``'mail_admins'`` handler\nconfiguration includes no ``'filters'`` section, and will automatically add\nthis filter for you and issue a pending-deprecation warning. This will become a\ndeprecation warning in Django 1.5, and in Django 1.6 the\nbackwards-compatibility shim will be removed entirely.\n\nThe existence of any ``'filters'`` key under the ``'mail_admins'`` handler will\ndisable this backward-compatibility shim and deprecation warning.\n\n``django.conf.urls.defaults``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nUntil Django 1.3 the functions :func:`~django.conf.urls.include`,\n:func:`~django.conf.urls.patterns` and :func:`~django.conf.urls.url` plus\n:data:`~django.conf.urls.handler404`, :data:`~django.conf.urls.handler500`\nwere located in a ``django.conf.urls.defaults`` module.\n\nStarting with Django 1.4 they are now available in :mod:`django.conf.urls`.\n\n``django.contrib.databrowse``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nDatabrowse has not seen active development for some time, and this does not show\nany sign of changing. There had been a suggestion for a `GSOC project`_ to\nintegrate the functionality of databrowse into the admin, but no progress was\nmade. While Databrowse has been deprecated, an enhancement of\n``django.contrib.admin`` providing a similar feature set is still possible.\n\n.. _GSOC project: https://code.djangoproject.com/wiki/SummerOfCode2011#Integratedatabrowseintotheadmin\n\nThe code that powers Databrowse is licensed under the same terms as Django\nitself, and so is available to be adopted by an individual or group as\na third-party project.\n\n``django.core.management.setup_environ``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThis function temporarily modified ``sys.path`` in order to make the parent\n\"project\" directory importable under the old flat :djadmin:`startproject`\nlayout. This function is now deprecated, as its path workarounds are no longer\nneeded with the new ``manage.py`` and default project layout.\n\nThis function was never documented or part of the public API, but was widely\nrecommended for use in setting up a \"Django environment\" for a user script.\nThese uses should be replaced by setting the ``DJANGO_SETTINGS_MODULE``\nenvironment variable or using :func:`django.conf.settings.configure`.\n\n``django.core.management.execute_manager``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThis function was previously used by ``manage.py`` to execute a management\ncommand. It is identical to\n``django.core.management.execute_from_command_line``, except that it first\ncalls ``setup_environ``, which is now deprecated. As such, ``execute_manager``\nis also deprecated; ``execute_from_command_line`` can be used instead. Neither\nof these functions is documented as part of the public API, but a deprecation\npath is needed due to use in existing ``manage.py`` files.\n\n``is_safe`` and ``needs_autoescape`` attributes of template filters\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nTwo flags, ``is_safe`` and ``needs_autoescape``, define how each template filter\ninteracts with Django's auto-escaping behavior. They used to be attributes of\nthe filter function::\n\n    @register.filter\n    def noop(value):\n        return value\n    noop.is_safe = True\n\nHowever, this technique caused some problems in combination with decorators,\nespecially :func:`@stringfilter <django.template.defaultfilters.stringfilter>`.\nNow, the flags are keyword arguments of :meth:`@register.filter\n<django.template.Library.filter>`::\n\n    @register.filter(is_safe=True)\n    def noop(value):\n        return value\n\nSee :ref:`filters and auto-escaping <filters-auto-escaping>` for more information.\n\nSession cookies now have the ``httponly`` flag by default\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nSession cookies now include the ``httponly`` attribute by default to\nhelp reduce the impact of potential XSS attacks. As a consequence of\nthis change, session cookie data, including sessionid, is no longer\naccessible from Javascript in many browsers. For strict backwards\ncompatibility, use ``SESSION_COOKIE_HTTPONLY = False`` in your\nsettings file.\n\nWildcard expansion of application names in `INSTALLED_APPS`\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nUntil Django 1.3, :setting:`INSTALLED_APPS` accepted wildcards in application\nnames, like ``django.contrib.*``. The expansion was performed by a\nfilesystem-based implementation of ``from <package> import *``. Unfortunately,\n`this can't be done reliably`_.\n\nThis behavior was never documented. Since it is un-pythonic and not obviously\nuseful, it was removed in Django 1.4. If you relied on it, you must edit your\nsettings file to list all your applications explicitly.\n\n.. _this can't be done reliably: http://docs.python.org/tutorial/modules.html#importing-from-a-package\n\n``HttpRequest.raw_post_data`` renamed to ``HttpRequest.body``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThis attribute was confusingly named ``HttpRequest.raw_post_data``, but it\nactually provided the body of the HTTP request. It's been renamed to\n``HttpRequest.body``, and ``HttpRequest.raw_post_data`` has been deprecated.\n\n\nThe Django 1.4 roadmap\n======================\n\nBefore the final Django 1.4 release, several other preview/development releases\nwill be made available. The current schedule consists of at least the following:\n\n* Week of **January 13, 2012**: First Django 1.4 beta release; final\n  feature freeze for Django 1.4.\n\n* Week of **February 27, 2012**: First Django 1.4 release\n  candidate; string freeze for translations.\n\n* Week of **March 5, 2012**: Django 1.4 final release.\n\nIf necessary, additional alpha, beta or release-candidate packages\nwill be issued prior to the final 1.4 release. Django 1.4 will be\nreleased approximately one week after the final release candidate.\n\nWhat you can do to help\n=======================\n\nIn order to provide a high-quality 1.4 release, we need your help. Although this\nbeta release is, again, *not* intended for production use, you can help the\nDjango team by trying out the beta codebase in a safe test environment and\nreporting any bugs or issues you encounter. The Django ticket tracker is the\ncentral place to search for open issues:\n\n* https://code.djangoproject.com/timeline\n\nPlease open new tickets if no existing ticket corresponds to a problem you're\nrunning into.\n\nAdditionally, discussion of Django development, including progress toward the\n1.4 release, takes place daily on the django-developers mailing list:\n\n* http://groups.google.com/group/django-developers\n\n... and in the ``#django-dev`` IRC channel on ``irc.freenode.net``. If you're\ninterested in helping out with Django's development, feel free to join the\ndiscussions there.\n\nDjango's online documentation also includes pointers on how to contribute to\nDjango:\n\n* :doc:`How to contribute to Django </internals/contributing/index>`\n\nContributions on any level -- developing code, writing documentation or simply\ntriaging tickets and helping to test proposed bugfixes -- are always welcome and\nappreciated.\n\nSeveral development sprints will also be taking place before the 1.4\nrelease; these will typically be announced in advance on the\ndjango-developers mailing list, and anyone who wants to help is\nwelcome to join in.\n"
  },
  {
    "path": "Django-1.5.1/docs/releases/1.4.1.txt",
    "content": "==========================\nDjango 1.4.1 release notes\n==========================\n\n*July 30, 2012*\n\nThis is the first security release in the Django 1.4 series, fixing several\nsecurity issues in Django 1.4. Django 1.4.1 is a recommended upgrade for\nall users of Django 1.4.\n\nFor a full list of issues addressed in this release, see the `security\nadvisory`_.\n\n.. _security advisory: https://www.djangoproject.com/weblog/2012/jul/30/security-releases-issued/\n"
  },
  {
    "path": "Django-1.5.1/docs/releases/1.4.2.txt",
    "content": "==========================\nDjango 1.4.2 release notes\n==========================\n\n*October 17, 2012*\n\nThis is the second security release in the Django 1.4 series.\n\nHost header poisoning\n---------------------\n\nSome parts of Django -- independent of end-user-written applications -- make\nuse of full URLs, including domain name, which are generated from the HTTP Host\nheader. Some attacks against this are beyond Django's ability to control, and\nrequire the web server to be properly configured; Django's documentation has\nfor some time contained notes advising users on such configuration.\n\nDjango's own built-in parsing of the Host header is, however, still vulnerable,\nas was reported to us recently. The Host header parsing in Django 1.3.3 and\nDjango 1.4.1 -- specifically, django.http.HttpRequest.get_host() -- was\nincorrectly handling username/password information in the header. Thus, for\nexample, the following Host header would be accepted by Django when running on\n\"validsite.com\"::\n\n    Host: validsite.com:random@evilsite.com\n\nUsing this, an attacker can cause parts of Django -- particularly the\npassword-reset mechanism -- to generate and display arbitrary URLs to users.\n\nTo remedy this, the parsing in HttpRequest.get_host() is being modified; Host\nheaders which contain potentially dangerous content (such as username/password\npairs) now raise the exception django.core.exceptions.SuspiciousOperation\n\nDetails of this issue were initially posted online as a `security advisory`_.\n\n.. _security advisory: https://www.djangoproject.com/weblog/2012/oct/17/security/\n\nBackwards incompatible changes\n==============================\n\n* The newly introduced :class:`~django.db.models.GenericIPAddressField`\n  constructor arguments have been adapted to match those of all other model\n  fields. The first two keyword arguments are now verbose_name and name.\n\nOther bugfixes and changes\n==========================\n\n* Subclass HTMLParser only for appropriate Python versions (#18239).\n* Added batch_size argument to qs.bulk_create() (#17788).\n* Fixed a small regression in the admin filters where wrongly formatted dates passed as url parameters caused an unhandled ValidationError (#18530).\n* Fixed an endless loop bug when accessing permissions in templates (#18979)\n* Fixed some Python 2.5 compatibility issues\n* Fixed an issue with quoted filenames in Content-Disposition header (#19006)\n* Made the context option in ``trans`` and ``blocktrans`` tags accept literals wrapped in single quotes (#18881).\n* Numerous documentation improvements and fixes.\n"
  },
  {
    "path": "Django-1.5.1/docs/releases/1.4.txt",
    "content": "========================\nDjango 1.4 release notes\n========================\n\n*March 23, 2012*\n\nWelcome to Django 1.4!\n\nThese release notes cover the `new features`_, as well\nas some `backwards incompatible changes`_ you'll want to be aware of\nwhen upgrading from Django 1.3 or older versions. We've also dropped some\nfeatures, which are detailed in :doc:`our deprecation plan\n</internals/deprecation>`, and we've `begun the deprecation process for some\nfeatures`_.\n\n.. _`new features`: `What's new in Django 1.4`_\n.. _`backwards incompatible changes`: `Backwards incompatible changes in 1.4`_\n.. _`begun the deprecation process for some features`: `Features deprecated in 1.4`_\n\nOverview\n========\n\nThe biggest new feature in Django 1.4 is `support for time zones`_ when\nhandling date/times. When enabled, this Django will store date/times in UTC,\nuse timezone-aware objects internally, and translate them to users' local\ntimezones for display.\n\nIf you're upgrading an existing project to Django 1.4, switching to the time-\nzone aware mode may take some care: the new mode disallows some rather sloppy\nbehavior that used to be accepted. We encourage anyone who's upgrading to check\nout the :ref:`timezone migration guide <time-zones-migration-guide>` and the\n:ref:`timezone FAQ <time-zones-faq>` for useful pointers.\n\nOther notable new features in Django 1.4 include:\n\n* A number of ORM improvements, including `SELECT FOR UPDATE support`_,\n  the ability to `bulk insert <#model-objects-bulk-create-in-the-orm>`_\n  large datasets for improved performance, and\n  `QuerySet.prefetch_related`_, a method to batch-load related objects\n  in areas where :meth:`~django.db.models.query.QuerySet.select_related`\n  doesn't work.\n\n* Some nice security additions, including `improved password hashing`_\n  (featuring PBKDF2_ and bcrypt_ support), new `tools for cryptographic\n  signing`_, several `CSRF improvements`_, and `simple clickjacking\n  protection`_.\n\n* An `updated default project layout and manage.py`_ that removes the \"magic\"\n  from prior versions. And for those who don't like the new layout, you can\n  use `custom project and app templates`_ instead!\n\n* `Support for in-browser testing frameworks`_ (like Selenium_).\n\n* ... and a whole lot more; `see below <#what-s-new-in-django-1-4>`_!\n\nWherever possible we try to introduce new features in a backwards-compatible\nmanner per :doc:`our API stability policy </misc/api-stability>` policy.\nHowever, as with previous releases, Django 1.4 ships with some minor\n`backwards incompatible changes`_; people upgrading from previous versions\nof Django should read that list carefully.\n\nPython compatibility\n====================\n\nDjango 1.4 has dropped support for Python 2.4. Python 2.5 is now the minimum\nrequired Python version. Django is tested and supported on Python 2.5, 2.6 and\n2.7.\n\nThis change should affect only a small number of Django users, as most\noperating-system vendors today are shipping Python 2.5 or newer as their default\nversion. If you're still using Python 2.4, however, you'll need to stick to\nDjango 1.3 until you can upgrade. Per :doc:`our support policy\n</internals/release-process>`, Django 1.3 will continue to receive security\nsupport until the release of Django 1.5.\n\nDjango does not support Python 3.x at this time. At some point before the\nrelease of Django 1.4, we plan to publish a document outlining our full\ntimeline for deprecating Python 2.x and moving to Python 3.x.\n\nWhat's new in Django 1.4\n========================\n\nSupport for time zones\n~~~~~~~~~~~~~~~~~~~~~~\n\nIn previous versions, Django used \"naive\" date/times (that is, date/times\nwithout an associated time zone), leaving it up to each developer to interpret\nwhat a given date/time \"really means\". This can cause all sorts of subtle\ntimezone-related bugs.\n\nIn Django 1.4, you can now switch Django into a more correct, time-zone aware\nmode. In this mode, Django stores date and  time information in UTC in the\ndatabase, uses time-zone-aware datetime objects internally and translates them\nto the end user's time zone in templates and forms. Reasons for using this\nfeature include:\n\n- Customizing date and time display for users around the world.\n\n- Storing datetimes in UTC for database portability and interoperability.\n  (This argument doesn't apply to PostgreSQL, because it already stores\n  timestamps with time zone information in Django 1.3.)\n\n- Avoiding data corruption problems around DST transitions.\n\nTime zone support is enabled by default in new projects created with\n:djadmin:`startproject`. If you want to use this feature in an existing\nproject, read the :ref:`migration guide <time-zones-migration-guide>`. If you\nencounter problems, there's a helpful :ref:`FAQ <time-zones-faq>`.\n\nSupport for in-browser testing frameworks\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nDjango 1.4 supports integration with in-browser testing frameworks like\nSelenium_. The new :class:`django.test.LiveServerTestCase` base class lets you\ntest the interactions between your site's front and back ends more\ncomprehensively. See the\n:class:`documentation<django.test.LiveServerTestCase>` for more details and\nconcrete examples.\n\n.. _Selenium: http://seleniumhq.org/\n\nUpdated default project layout and ``manage.py``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nDjango 1.4 ships with an updated default project layout and ``manage.py`` file\nfor the :djadmin:`startproject` management command. These fix some issues with\nthe previous ``manage.py`` handling of Python import paths that caused double\nimports, trouble moving from development to deployment, and other\ndifficult-to-debug path issues.\n\nThe previous ``manage.py`` called functions that are now deprecated, and thus\nprojects upgrading to Django 1.4 should update their ``manage.py``. (The\nold-style ``manage.py`` will continue to work as before until Django 1.6. In\n1.5 it will raise ``DeprecationWarning``).\n\nThe new recommended ``manage.py`` file should look like this::\n\n    #!/usr/bin/env python\n    import os, sys\n\n    if __name__ == \"__main__\":\n        os.environ.setdefault(\"DJANGO_SETTINGS_MODULE\", \"{{ project_name }}.settings\")\n\n        from django.core.management import execute_from_command_line\n\n        execute_from_command_line(sys.argv)\n\n``{{ project_name }}`` should be replaced with the Python package name of the\nactual project.\n\nIf settings, URLconfs and apps within the project are imported or referenced\nusing the project name prefix (e.g. ``myproject.settings``, ``ROOT_URLCONF =\n\"myproject.urls\"``, etc), the new ``manage.py`` will need to be moved one\ndirectory up, so it is outside the project package rather than adjacent to\n``settings.py`` and ``urls.py``.\n\nFor instance, with the following layout::\n\n    manage.py\n    mysite/\n        __init__.py\n        settings.py\n        urls.py\n        myapp/\n            __init__.py\n            models.py\n\nYou could import ``mysite.settings``, ``mysite.urls``, and ``mysite.myapp``,\nbut not ``settings``, ``urls``, or ``myapp`` as top-level modules.\n\nAnything imported as a top-level module can be placed adjacent to the new\n``manage.py``. For instance, to decouple \"myapp\" from the project module and\nimport it as just ``myapp``, place it outside the ``mysite/`` directory::\n\n    manage.py\n    myapp/\n        __init__.py\n        models.py\n    mysite/\n        __init__.py\n        settings.py\n        urls.py\n\nIf the same code is imported inconsistently (some places with the project\nprefix, some places without it), the imports will need to be cleaned up when\nswitching to the new ``manage.py``.\n\nCustom project and app templates\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe :djadmin:`startapp` and :djadmin:`startproject` management commands\nnow have a ``--template`` option for specifying a path or URL to a custom app\nor project template.\n\nFor example, Django will use the ``/path/to/my_project_template`` directory\nwhen you run the following command::\n\n    django-admin.py startproject --template=/path/to/my_project_template myproject\n\nYou can also now provide a destination directory as the second\nargument to both :djadmin:`startapp` and :djadmin:`startproject`::\n\n    django-admin.py startapp myapp /path/to/new/app\n    django-admin.py startproject myproject /path/to/new/project\n\nFor more information, see the :djadmin:`startapp` and :djadmin:`startproject`\ndocumentation.\n\nImproved WSGI support\n~~~~~~~~~~~~~~~~~~~~~\n\nThe :djadmin:`startproject` management command now adds a :file:`wsgi.py`\nmodule to the initial project layout, containing a simple WSGI application that\ncan be used for :doc:`deploying with WSGI app\nservers</howto/deployment/wsgi/index>`.\n\nThe :djadmin:`built-in development server<runserver>` now supports using an\nexternally-defined WSGI callable, which makes it possible to run runserver\nwith the same WSGI configuration that is used for deployment. The new\n:setting:`WSGI_APPLICATION` setting lets you configure which WSGI callable\n:djadmin:`runserver` uses.\n\n(The :djadmin:`runfcgi` management command also internally wraps the WSGI\ncallable configured via :setting:`WSGI_APPLICATION`.)\n\n``SELECT FOR UPDATE`` support\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nDjango 1.4 includes a :meth:`QuerySet.select_for_update()\n<django.db.models.query.QuerySet.select_for_update>` method, which generates a\n``SELECT ... FOR UPDATE`` SQL query. This will lock rows until the end of the\ntransaction, meaning other transactions cannot modify or delete rows matched by\na ``FOR UPDATE`` query.\n\nFor more details, see the documentation for\n:meth:`~django.db.models.query.QuerySet.select_for_update`.\n\n``Model.objects.bulk_create`` in the ORM\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThis method lets you create multiple objects more efficiently. It can result in\nsignificant performance increases if you have many objects.\n\nDjango makes use of this internally, meaning some operations (such as database\nsetup for test suites) have seen a performance benefit as a result.\n\nSee the :meth:`~django.db.models.query.QuerySet.bulk_create` docs for more\ninformation.\n\n``QuerySet.prefetch_related``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nSimilar to :meth:`~django.db.models.query.QuerySet.select_related` but with a\ndifferent strategy and broader scope,\n:meth:`~django.db.models.query.QuerySet.prefetch_related` has been added to\n:class:`~django.db.models.query.QuerySet`. This method returns a new\n``QuerySet`` that will prefetch each of the specified related lookups in a\nsingle batch as soon as the query begins to be evaluated. Unlike\n``select_related``, it does the joins in Python, not in the database, and\nsupports many-to-many relationships,\n:class:`~django.contrib.contenttypes.generic.GenericForeignKey` and more. This\nallows you to fix a very common performance problem in which your code ends up\ndoing O(n) database queries (or worse) if objects on your primary ``QuerySet``\neach have many related objects that you also need to fetch.\n\nImproved password hashing\n~~~~~~~~~~~~~~~~~~~~~~~~~\n\nDjango's auth system (``django.contrib.auth``) stores passwords using a one-way\nalgorithm. Django 1.3 uses the SHA1_ algorithm, but increasing processor speeds\nand theoretical attacks have revealed that SHA1 isn't as secure as we'd like.\nThus, Django 1.4 introduces a new password storage system: by default Django now\nuses the PBKDF2_ algorithm (as recommended by NIST_). You can also easily choose\na different algorithm (including the popular bcrypt_ algorithm). For more\ndetails, see :ref:`auth_password_storage`.\n\n.. _sha1: http://en.wikipedia.org/wiki/SHA1\n.. _pbkdf2: http://en.wikipedia.org/wiki/PBKDF2\n.. _nist: http://csrc.nist.gov/publications/nistpubs/800-132/nist-sp800-132.pdf\n.. _bcrypt: http://en.wikipedia.org/wiki/Bcrypt\n\nHTML5 doctype\n~~~~~~~~~~~~~\n\nWe've switched the admin and other bundled templates to use the HTML5\ndoctype. While Django will be careful to maintain compatibility with older\nbrowsers, this change means that you can use any HTML5 features you need in\nadmin pages without having to lose HTML validity or override the provided\ntemplates to change the doctype.\n\nList filters in admin interface\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nPrior to Django 1.4, the :mod:`~django.contrib.admin` app let you specify\nchange list filters by specifying a field lookup, but it didn't allow you to\ncreate custom filters. This has been rectified with a simple API (previously\nused internally and known as \"FilterSpec\"). For more details, see the\ndocumentation for :attr:`~django.contrib.admin.ModelAdmin.list_filter`.\n\nMultiple sort in admin interface\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe admin change list now supports sorting on multiple columns. It respects all\nelements of the :attr:`~django.contrib.admin.ModelAdmin.ordering` attribute, and\nsorting on multiple columns by clicking on headers is designed to mimic the\nbehavior of desktop GUIs. We also added a\n:meth:`~django.contrib.admin.ModelAdmin.get_ordering` method for specifying the\nordering dynamically (i.e., depending on the request).\n\nNew ``ModelAdmin`` methods\n~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nWe added a :meth:`~django.contrib.admin.ModelAdmin.save_related` method to\n:mod:`~django.contrib.admin.ModelAdmin` to ease customization of how\nrelated objects are saved in the admin.\n\nTwo other new :class:`~django.contrib.admin.ModelAdmin` methods,\n:meth:`~django.contrib.admin.ModelAdmin.get_list_display` and\n:meth:`~django.contrib.admin.ModelAdmin.get_list_display_links`\nenable dynamic customization of fields and links displayed on the admin\nchange list.\n\nAdmin inlines respect user permissions\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nAdmin inlines now only allow those actions for which the user has\npermission. For ``ManyToMany`` relationships with an auto-created intermediate\nmodel (which does not have its own permissions), the change permission for the\nrelated model determines if the user has the permission to add, change or\ndelete relationships.\n\nTools for cryptographic signing\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nDjango 1.4 adds both a low-level API for signing values and a high-level API\nfor setting and reading signed cookies, one of the most common uses of\nsigning in Web applications.\n\nSee the :doc:`cryptographic signing </topics/signing>` docs for more\ninformation.\n\nCookie-based session backend\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nDjango 1.4 introduces a cookie-based session backend that uses the tools for\n:doc:`cryptographic signing </topics/signing>` to store the session data in\nthe client's browser.\n\n.. warning::\n\n    Session data is signed and validated by the server, but it's not\n    encrypted. This means a user can view any data stored in the\n    session but cannot change it. Please read the documentation for\n    further clarification before using this backend.\n\nSee the :ref:`cookie-based session backend <cookie-session-backend>` docs for\nmore information.\n\nNew form wizard\n~~~~~~~~~~~~~~~\n\nThe previous ``FormWizard`` from :mod:`django.contrib.formtools` has been\nreplaced with a new implementation based on the class-based views\nintroduced in Django 1.3. It features a pluggable storage API and doesn't\nrequire the wizard to pass around hidden fields for every previous step.\n\nDjango 1.4 ships with a session-based storage backend and a cookie-based\nstorage backend. The latter uses the tools for\n:doc:`cryptographic signing </topics/signing>` also introduced in\nDjango 1.4 to store the wizard's state in the user's cookies.\n\nSee the :doc:`form wizard </ref/contrib/formtools/form-wizard>` docs for\nmore information.\n\n``reverse_lazy``\n~~~~~~~~~~~~~~~~\n\nA lazily evaluated version of :func:`django.core.urlresolvers.reverse` was\nadded to allow using URL reversals before the project's URLconf gets loaded.\n\nTranslating URL patterns\n~~~~~~~~~~~~~~~~~~~~~~~~\n\nDjango can now look for a language prefix in the URLpattern when using the new\n:func:`~django.conf.urls.i18n.i18n_patterns` helper function.\nIt's also now possible to define translatable URL patterns using\n:func:`~django.utils.translation.ugettext_lazy`. See\n:ref:`url-internationalization` for more information about the language prefix\nand how to internationalize URL patterns.\n\nContextual translation support for ``{% trans %}`` and ``{% blocktrans %}``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe :ref:`contextual translation<contextual-markers>` support introduced in\nDjango 1.3 via the ``pgettext`` function has been extended to the\n:ttag:`trans` and :ttag:`blocktrans` template tags using the new ``context``\nkeyword.\n\nCustomizable ``SingleObjectMixin`` URLConf kwargs\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nTwo new attributes,\n:attr:`pk_url_kwarg<django.views.generic.detail.SingleObjectMixin.pk_url_kwarg>`\nand\n:attr:`slug_url_kwarg<django.views.generic.detail.SingleObjectMixin.slug_url_kwarg>`,\nhave been added to :class:`~django.views.generic.detail.SingleObjectMixin` to\nenable the customization of URLconf keyword arguments used for single\nobject generic views.\n\nAssignment template tags\n~~~~~~~~~~~~~~~~~~~~~~~~\n\nA new :ref:`assignment_tag<howto-custom-template-tags-assignment-tags>` helper\nfunction was added to ``template.Library`` to ease the creation of template\ntags that store data in a specified context variable.\n\n``*args`` and ``**kwargs`` support for template tag helper functions\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe :ref:`simple_tag<howto-custom-template-tags-simple-tags>`,\n:ref:`inclusion_tag <howto-custom-template-tags-inclusion-tags>` and\nnewly introduced\n:ref:`assignment_tag<howto-custom-template-tags-assignment-tags>` template\nhelper functions may now accept any number of positional or keyword arguments.\nFor example:\n\n.. code-block:: python\n\n    @register.simple_tag\n    def my_tag(a, b, *args, **kwargs):\n        warning = kwargs['warning']\n        profile = kwargs['profile']\n        ...\n        return ...\n\nThen, in the template, any number of arguments may be passed to the template tag.\nFor example:\n\n.. code-block:: html+django\n\n    {% my_tag 123 \"abcd\" book.title warning=message|lower profile=user.profile %}\n\nNo wrapping of exceptions in ``TEMPLATE_DEBUG`` mode\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nIn previous versions of Django, whenever the :setting:`TEMPLATE_DEBUG` setting\nwas ``True``, any exception raised during template rendering (even exceptions\nunrelated to template syntax) were wrapped in ``TemplateSyntaxError`` and\nre-raised. This was done in order to provide detailed template source location\ninformation in the debug 500 page.\n\nIn Django 1.4, exceptions are no longer wrapped. Instead, the original\nexception is annotated with the source information. This means that catching\nexceptions from template rendering is now consistent regardless of the value of\n:setting:`TEMPLATE_DEBUG`, and there's no need to catch and unwrap\n``TemplateSyntaxError`` in order to catch other errors.\n\n``truncatechars`` template filter\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThis new filter truncates a string to be no longer than the specified\nnumber of characters. Truncated strings end with a translatable ellipsis\nsequence (\"...\"). See the documentation for :tfilter:`truncatechars` for\nmore details.\n\n``static`` template tag\n~~~~~~~~~~~~~~~~~~~~~~~\n\nThe :mod:`staticfiles<django.contrib.staticfiles>` contrib app has a new\n:ttag:`static<staticfiles-static>` template tag to refer to files saved with\nthe :setting:`STATICFILES_STORAGE` storage backend. It uses the storage\nbackend's ``url`` method and therefore supports advanced features such as\n:ref:`serving files from a cloud service<staticfiles-from-cdn>`.\n\n``CachedStaticFilesStorage`` storage backend\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe :mod:`staticfiles<django.contrib.staticfiles>` contrib app now has a\n:class:`~django.contrib.staticfiles.storage.CachedStaticFilesStorage` backend\nthat caches the files it saves (when running the :djadmin:`collectstatic`\nmanagement command) by appending the MD5 hash of the file's content to the\nfilename. For example, the file ``css/styles.css`` would also be saved as\n``css/styles.55e7cbb9ba48.css``\n\nSee the :class:`~django.contrib.staticfiles.storage.CachedStaticFilesStorage`\ndocs for more information.\n\nSimple clickjacking protection\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nWe've added a middleware to provide easy protection against `clickjacking\n<http://en.wikipedia.org/wiki/Clickjacking>`_ using the ``X-Frame-Options``\nheader. It's not enabled by default for backwards compatibility reasons, but\nyou'll almost certainly want to :doc:`enable it </ref/clickjacking/>` to help\nplug that security hole for browsers that support the header.\n\nCSRF improvements\n~~~~~~~~~~~~~~~~~\n\nWe've made various improvements to our CSRF features, including the\n:func:`~django.views.decorators.csrf.ensure_csrf_cookie` decorator, which can\nhelp with AJAX-heavy sites; protection for PUT and DELETE requests; and the\n:setting:`CSRF_COOKIE_SECURE` and :setting:`CSRF_COOKIE_PATH` settings, which can\nimprove the security and usefulness of CSRF protection. See the :doc:`CSRF\ndocs </ref/contrib/csrf>` for more information.\n\nError report filtering\n~~~~~~~~~~~~~~~~~~~~~~\n\nWe added two function decorators, :func:`sensitive_variables` and\n:func:`sensitive_post_parameters`, to allow designating the local variables\nand POST parameters that may contain sensitive information and should be\nfiltered out of error reports.\n\nAll POST parameters are now systematically filtered out of error reports for\ncertain views (``login``, ``password_reset_confirm``, ``password_change`` and\n``add_view`` in :mod:`django.contrib.auth.views`, as well as\n``user_change_password`` in the admin app) to prevent the leaking of sensitive\ninformation such as user passwords.\n\nYou can override or customize the default filtering by writing a :ref:`custom\nfilter<custom-error-reports>`. For more information see the docs on\n:ref:`Filtering error reports<filtering-error-reports>`.\n\nExtended IPv6 support\n~~~~~~~~~~~~~~~~~~~~~\n\nDjango 1.4 can now better handle IPv6 addresses with the new\n:class:`~django.db.models.GenericIPAddressField` model field,\n:class:`~django.forms.GenericIPAddressField` form field and\nthe validators :data:`~django.core.validators.validate_ipv46_address` and\n:data:`~django.core.validators.validate_ipv6_address`.\n\nHTML comparisons in tests\n~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe base classes in :mod:`django.test` now have some helpers to\ncompare HTML without tripping over irrelevant differences in whitespace,\nargument quoting/ordering and closing of self-closing tags. You can either\ncompare HTML directly with the new\n:meth:`~django.test.SimpleTestCase.assertHTMLEqual` and\n:meth:`~django.test.SimpleTestCase.assertHTMLNotEqual` assertions, or use\nthe ``html=True`` flag with\n:meth:`~django.test.TestCase.assertContains` and\n:meth:`~django.test.TestCase.assertNotContains` to test whether the\nclient's response contains a given HTML fragment. See the :ref:`assertions\ndocumentation <assertions>` for more.\n\nTwo new date format strings\n~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nTwo new :tfilter:`date` formats were added for use in template filters,\ntemplate tags and :ref:`format-localization`:\n\n- ``e`` -- the name of the timezone of the given datetime object\n- ``o`` -- the ISO 8601 year number\n\nPlease make sure to update your :ref:`custom format files\n<custom-format-files>` if they contain either ``e`` or ``o`` in a format\nstring. For example a Spanish localization format previously only escaped the\n``d`` format character::\n\n  DATE_FORMAT = r'j \\de F \\de Y'\n\nBut now it needs to also escape ``e`` and ``o``::\n\n  DATE_FORMAT = r'j \\d\\e F \\d\\e Y'\n\nFor more information, see the :tfilter:`date` documentation.\n\nMinor features\n~~~~~~~~~~~~~~\n\nDjango 1.4 also includes several smaller improvements worth noting:\n\n* A more usable stacktrace in the technical 500 page. Frames in the\n  stack trace that reference Django's framework code are dimmed out,\n  while frames in application code are slightly emphasized. This change\n  makes it easier to scan a stacktrace for issues in application code.\n\n* :doc:`Tablespace support </topics/db/tablespaces>` in PostgreSQL.\n\n* Customizable names for :meth:`~django.template.Library.simple_tag`.\n\n* In the documentation, a helpful :doc:`security overview </topics/security>`\n  page.\n\n* The ``django.contrib.auth.models.check_password`` function has been moved\n  to the :mod:`django.contrib.auth.hashers` module. Importing it from the old\n  location will still work, but you should update your imports.\n\n* The :djadmin:`collectstatic` management command now has a ``--clear`` option\n  to delete all files at the destination before copying or linking the static\n  files.\n\n* It's now possible to load fixtures containing forward references when using\n  MySQL with the InnoDB database engine.\n\n* A new 403 response handler has been added as\n  ``'django.views.defaults.permission_denied'``. You can set your own handler by\n  setting the value of :data:`django.conf.urls.handler403`. See the\n  documentation about :ref:`the 403 (HTTP Forbidden) view<http_forbidden_view>`\n  for more information.\n\n* The :djadmin:`makemessages` command uses a new and more accurate lexer,\n  `JsLex`_, for extracting translatable strings from JavaScript files.\n\n.. _JsLex: https://bitbucket.org/ned/jslex\n\n* The :ttag:`trans` template tag now takes an optional ``as`` argument to\n  be able to retrieve a translation string without displaying it but setting\n  a template context variable instead.\n\n* The :ttag:`if` template tag now supports ``{% elif %}`` clauses.\n\n* If your Django app is behind a proxy, you might find the new\n  :setting:`SECURE_PROXY_SSL_HEADER` setting useful. It solves the problem of your\n  proxy \"eating\" the fact that a request came in via HTTPS. But only use this\n  setting if you know what you're doing.\n\n* A new, plain-text, version of the HTTP 500 status code internal error page\n  served when :setting:`DEBUG` is ``True`` is now sent to the client when\n  Django detects that the request has originated in JavaScript code.\n  (:meth:`~django.http.HttpRequest.is_ajax` is used for this.)\n\n  Like its HTML counterpart, it contains a collection of different\n  pieces of information about the state of the application.\n\n  This should make it easier to read when debugging interaction with\n  client-side JavaScript.\n\n* Added the :djadminopt:`--no-location` option to the :djadmin:`makemessages`\n  command.\n\n* Changed the ``locmem`` cache backend to use\n  ``pickle.HIGHEST_PROTOCOL`` for better compatibility with the other\n  cache backends.\n\n* Added support in the ORM for generating ``SELECT`` queries containing\n  ``DISTINCT ON``.\n\n  The ``distinct()`` ``QuerySet`` method now accepts an optional list of model\n  field names. If specified, then the ``DISTINCT`` statement is limited to these\n  fields. This is only supported in PostgreSQL.\n\n  For more details, see the documentation for\n  :meth:`~django.db.models.query.QuerySet.distinct`.\n\n* The admin login page will add a password reset link if you include a URL with\n  the name `'admin_password_reset'` in your urls.py, so plugging in the built-in\n  password reset mechanism and making it available is now much easier. For\n  details, see :ref:`auth_password_reset`.\n\n* The MySQL database backend can now make use of the savepoint feature\n  implemented by MySQL version 5.0.3 or newer with the InnoDB storage engine.\n\n* It's now possible to pass initial values to the model forms that are part of\n  both model formsets and inline model formsets as returned from factory\n  functions ``modelformset_factory`` and ``inlineformset_factory`` respectively\n  just like with regular formsets. However, initial values only apply to extra\n  forms, i.e. those which are not bound to an existing model instance.\n\n* The sitemaps framework can now handle HTTPS links using the new\n  :attr:`Sitemap.protocol <django.contrib.sitemaps.Sitemap.protocol>` class\n  attribute.\n\n* A new :class:`django.test.SimpleTestCase` subclass of\n  :class:`unittest.TestCase`\n  that's lighter than :class:`django.test.TestCase` and company. It can be\n  useful in tests that don't need to hit a database. See\n  :ref:`testcase_hierarchy_diagram`.\n\nBackwards incompatible changes in 1.4\n=====================================\n\nSECRET_KEY setting is required\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nRunning Django with an empty or known :setting:`SECRET_KEY` disables many of\nDjango's security protections and can lead to remote-code-execution\nvulnerabilities. No Django site should ever be run without a\n:setting:`SECRET_KEY`.\n\nIn Django 1.4, starting Django with an empty :setting:`SECRET_KEY` will raise a\n`DeprecationWarning`. In Django 1.5, it will raise an exception and Django will\nrefuse to start. This is slightly accelerated from the usual deprecation path\ndue to the severity of the consequences of running Django with no\n:setting:`SECRET_KEY`.\n\ndjango.contrib.admin\n~~~~~~~~~~~~~~~~~~~~\n\nThe included administration app ``django.contrib.admin`` has for a long time\nshipped with a default set of static files such as JavaScript, images and\nstylesheets. Django 1.3 added a new contrib app ``django.contrib.staticfiles``\nto handle such files in a generic way and defined conventions for static\nfiles included in apps.\n\nStarting in Django 1.4, the admin's static files also follow this\nconvention, to make the files easier to deploy. In previous versions of Django,\nit was also common to define an ``ADMIN_MEDIA_PREFIX`` setting to point to the\nURL where the admin's static files live on a Web server. This setting has now\nbeen deprecated and replaced by the more general setting :setting:`STATIC_URL`.\nDjango will now expect to find the admin static files under the URL\n``<STATIC_URL>/admin/``.\n\nIf you've previously used a URL path for ``ADMIN_MEDIA_PREFIX`` (e.g.\n``/media/``) simply make sure :setting:`STATIC_URL` and :setting:`STATIC_ROOT`\nare configured and your Web server serves those files correctly. The\ndevelopment server continues to serve the admin files just like before. Read\nthe :doc:`static files howto </howto/static-files>` for more details.\n\nIf your ``ADMIN_MEDIA_PREFIX`` is set to an specific domain (e.g.\n``http://media.example.com/admin/``), make sure to also set your\n:setting:`STATIC_URL` setting to the correct URL -- for example,\n``http://media.example.com/``.\n\n.. warning::\n\n    If you're implicitly relying on the path of the admin static files within\n    Django's source code, you'll need to update that path. The files were moved\n    from :file:`django/contrib/admin/media/` to\n    :file:`django/contrib/admin/static/admin/`.\n\nSupported browsers for the admin\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nDjango hasn't had a clear policy on which browsers are supported by the\nadmin app. Our new policy formalizes existing practices: `YUI's A-grade`_\nbrowsers should provide a fully-functional admin experience, with the notable\nexception of Internet Explorer 6, which is no longer supported.\n\nReleased over 10 years ago, IE6 imposes many limitations on modern Web\ndevelopment. The practical implications of this policy are that contributors\nare free to improve the admin without consideration for these limitations.\n\nObviously, this new policy **has no impact** on sites you develop using Django.\nIt only applies to the Django admin. Feel free to develop apps compatible with\nany range of browsers.\n\n.. _YUI's A-grade: http://yuilibrary.com/yui/docs/tutorials/gbs/\n\nRemoved admin icons\n~~~~~~~~~~~~~~~~~~~\n\nAs part of an effort to improve the performance and usability of the admin's\nchange-list sorting interface and :attr:`horizontal\n<django.contrib.admin.ModelAdmin.filter_horizontal>` and :attr:`vertical\n<django.contrib.admin.ModelAdmin.filter_vertical>` \"filter\" widgets, some icon\nfiles were removed and grouped into two sprite files.\n\nSpecifically: ``selector-add.gif``, ``selector-addall.gif``,\n``selector-remove.gif``, ``selector-removeall.gif``,\n``selector_stacked-add.gif`` and ``selector_stacked-remove.gif`` were\ncombined into ``selector-icons.gif``; and ``arrow-up.gif`` and\n``arrow-down.gif`` were combined into ``sorting-icons.gif``.\n\nIf you used those icons to customize the admin, then you'll need to replace\nthem with your own icons or get the files from a previous release.\n\nCSS class names in admin forms\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nTo avoid conflicts with other common CSS class names (e.g. \"button\"), we added\na prefix (\"field-\") to all CSS class names automatically generated from the\nform field names in the main admin forms, stacked inline forms and tabular\ninline cells. You'll need to take that prefix into account in your custom\nstyle sheets or JavaScript files if you previously used plain field names as\nselectors for custom styles or JavaScript transformations.\n\nCompatibility with old signed data\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nDjango 1.3 changed the cryptographic signing mechanisms used in a number of\nplaces in Django. While Django 1.3 kept fallbacks that would accept hashes\nproduced by the previous methods, these fallbacks are removed in Django 1.4.\n\nSo, if you upgrade to Django 1.4 directly from 1.2 or earlier, you may\nlose/invalidate certain pieces of data that have been cryptographically signed\nusing an old method. To avoid this, use Django 1.3 first for a period of time\nto allow the signed data to expire naturally. The affected parts are detailed\nbelow, with 1) the consequences of ignoring this advice and 2) the amount of\ntime you need to run Django 1.3 for the data to expire or become irrelevant.\n\n* ``contrib.sessions`` data integrity check\n\n  * Consequences: The user will be logged out, and session data will be lost.\n\n  * Time period: Defined by :setting:`SESSION_COOKIE_AGE`.\n\n* ``contrib.auth`` password reset hash\n\n  * Consequences: Password reset links from before the upgrade will not work.\n\n  * Time period: Defined by :setting:`PASSWORD_RESET_TIMEOUT_DAYS`.\n\nForm-related hashes: these have a are much shorter lifetime and are relevant\nonly for the short window where a user might fill in a form generated by the\npre-upgrade Django instance and try to submit it to the upgraded Django\ninstance:\n\n* ``contrib.comments`` form security hash\n\n  * Consequences: The user will see the validation error \"Security hash failed.\"\n\n  * Time period: The amount of time you expect users to take filling out comment\n    forms.\n\n* ``FormWizard`` security hash\n\n  * Consequences: The user will see an error about the form having expired\n    and will be sent back to the first page of the wizard, losing the data\n    he has entered so far.\n\n  * Time period: The amount of time you expect users to take filling out the\n    affected forms.\n\n* CSRF check\n\n  * Note: This is actually a Django 1.1 fallback, not Django 1.2,\n    and it applies only if you're upgrading from 1.1.\n\n  * Consequences: The user will see a 403 error with any CSRF-protected POST\n    form.\n\n  * Time period: The amount of time you expect user to take filling out\n    such forms.\n\n* ``contrib.auth`` user password hash-upgrade sequence\n\n  * Consequences: Each user's password will be updated to a stronger password\n    hash when it's written to the database in 1.4. This means that if you\n    upgrade to 1.4 and then need to downgrade to 1.3, version 1.3 won't be able\n    to read the updated passwords.\n\n  * Remedy: Set :setting:`PASSWORD_HASHERS` to use your original password\n    hashing when you initially upgrade to 1.4. After you confirm your app works\n    well with Django 1.4 and you won't have to roll back to 1.3, enable the new\n    password hashes.\n\ndjango.contrib.flatpages\n~~~~~~~~~~~~~~~~~~~~~~~~\n\nStarting in 1.4, the\n:class:`~django.contrib.flatpages.middleware.FlatpageFallbackMiddleware` only\nadds a trailing slash and redirects if the resulting URL refers to an existing\nflatpage. For example, requesting ``/notaflatpageoravalidurl`` in a previous\nversion would redirect to ``/notaflatpageoravalidurl/``, which would\nsubsequently raise a 404. Requesting ``/notaflatpageoravalidurl`` now will\nimmediately raise a 404.\n\nAlso, redirects returned by flatpages are now permanent (with 301 status code),\nto match the behavior of :class:`~django.middleware.common.CommonMiddleware`.\n\nSerialization of :class:`~datetime.datetime` and :class:`~datetime.time`\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nAs a consequence of time-zone support, and according to the ECMA-262\nspecification, we made changes to the JSON serializer:\n\n* It includes the time zone for aware datetime objects. It raises an exception\n  for aware time objects.\n* It includes milliseconds for datetime and time objects. There is still\n  some precision loss, because Python stores microseconds (6 digits) and JSON\n  only supports milliseconds (3 digits). However, it's better than discarding\n  microseconds entirely.\n\nWe changed the XML serializer to use the ISO8601 format for datetimes.\nThe letter ``T`` is used to separate the date part from the time part, instead\nof a space. Time zone information is included in the ``[+-]HH:MM`` format.\n\nThough the serializers now use these new formats when creating fixtures, they\ncan still load fixtures that use the old format.\n\n``supports_timezone`` changed to ``False`` for SQLite\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe database feature ``supports_timezone`` used to be ``True`` for SQLite.\nIndeed, if you saved an aware datetime object, SQLite stored a string that\nincluded an UTC offset. However, this offset was ignored when loading the value\nback from the database, which could corrupt the data.\n\nIn the context of time-zone support, this flag was changed to ``False``, and\ndatetimes are now stored without time-zone information in SQLite. When\n:setting:`USE_TZ` is ``False``, if you attempt to save an aware datetime\nobject, Django raises an exception.\n\n``MySQLdb``-specific exceptions\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe MySQL backend historically has raised ``MySQLdb.OperationalError``\nwhen a query triggered an exception. We've fixed this bug, and we now raise\n:exc:`django.db.DatabaseError` instead. If you were testing for\n``MySQLdb.OperationalError``, you'll need to update your ``except``\nclauses.\n\nDatabase connection's thread-locality\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n``DatabaseWrapper`` objects (i.e. the connection objects referenced by\n``django.db.connection`` and ``django.db.connections[\"some_alias\"]``) used to\nbe thread-local. They are now global objects in order to be potentially shared\nbetween multiple threads. While the individual connection objects are now\nglobal, the ``django.db.connections`` dictionary referencing those objects is\nstill thread-local. Therefore if you just use the ORM or\n``DatabaseWrapper.cursor()`` then the behavior is still the same as before.\nNote, however, that ``django.db.connection`` does not directly reference the\ndefault ``DatabaseWrapper`` object anymore and is now a proxy to access that\nobject's attributes. If you need to access the actual ``DatabaseWrapper``\nobject, use ``django.db.connections[DEFAULT_DB_ALIAS]`` instead.\n\nAs part of this change, all underlying SQLite connections are now enabled for\npotential thread-sharing (by passing the ``check_same_thread=False`` attribute\nto pysqlite). ``DatabaseWrapper`` however preserves the previous behavior by\ndisabling thread-sharing by default, so this does not affect any existing\ncode that purely relies on the ORM or on ``DatabaseWrapper.cursor()``.\n\nFinally, while it's now possible to pass connections between threads, Django\ndoesn't make any effort to synchronize access to the underlying backend.\nConcurrency behavior is defined by the underlying backend implementation.\nCheck their documentation for details.\n\n`COMMENTS_BANNED_USERS_GROUP` setting\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nDjango's :doc:`comments app </ref/contrib/comments/index>` has historically\nsupported excluding the comments of a special user group, but we've never\ndocumented the feature properly and didn't enforce the exclusion in other parts\nof the app such as the template tags. To fix this problem, we removed the code\nfrom the feed class.\n\nIf you rely on the feature and want to restore the old behavior, use a custom\ncomment model manager to exclude the user group, like this::\n\n    from django.conf import settings\n    from django.contrib.comments.managers import CommentManager\n\n    class BanningCommentManager(CommentManager):\n        def get_query_set(self):\n            qs = super(BanningCommentManager, self).get_query_set()\n            if getattr(settings, 'COMMENTS_BANNED_USERS_GROUP', None):\n                where = ['user_id NOT IN (SELECT user_id FROM auth_user_groups WHERE group_id = %s)']\n                params = [settings.COMMENTS_BANNED_USERS_GROUP]\n                qs = qs.extra(where=where, params=params)\n            return qs\n\nSave this model manager in your custom comment app (e.g., in\n``my_comments_app/managers.py``) and add it your\n:ref:`custom comment app model <custom-comment-app-api>`::\n\n    from django.db import models\n    from django.contrib.comments.models import Comment\n\n    from my_comments_app.managers import BanningCommentManager\n\n    class CommentWithTitle(Comment):\n        title = models.CharField(max_length=300)\n\n        objects = BanningCommentManager()\n\nFor more details, see the documentation about\n:doc:`customizing the comments framework </ref/contrib/comments/custom>`.\n\n`IGNORABLE_404_STARTS` and `IGNORABLE_404_ENDS` settings\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nUntil Django 1.3, it was possible to exclude some URLs from Django's\n:doc:`404 error reporting</howto/error-reporting>` by adding prefixes to\n:setting:`IGNORABLE_404_STARTS` and suffixes to :setting:`IGNORABLE_404_ENDS`.\n\nIn Django 1.4, these two settings are superseded by\n:setting:`IGNORABLE_404_URLS`, which is a list of compiled regular expressions.\nDjango won't send an email for 404 errors on URLs that match any of them.\n\nFurthermore, the previous settings had some rather arbitrary default values::\n\n    IGNORABLE_404_STARTS = ('/cgi-bin/', '/_vti_bin', '/_vti_inf')\n    IGNORABLE_404_ENDS = ('mail.pl', 'mailform.pl', 'mail.cgi', 'mailform.cgi',\n                          'favicon.ico', '.php')\n\nIt's not Django's role to decide if your website has a legacy ``/cgi-bin/``\nsection or a ``favicon.ico``. As a consequence, the default values of\n:setting:`IGNORABLE_404_URLS`, :setting:`IGNORABLE_404_STARTS` and\n:setting:`IGNORABLE_404_ENDS` are all now empty.\n\nIf you have customized :setting:`IGNORABLE_404_STARTS` or\n:setting:`IGNORABLE_404_ENDS`, or if you want to keep the old default value,\nyou should add the following lines in your settings file::\n\n    import re\n    IGNORABLE_404_URLS = (\n        # for each <prefix> in IGNORABLE_404_STARTS\n        re.compile(r'^<prefix>'),\n        # for each <suffix> in IGNORABLE_404_ENDS\n        re.compile(r'<suffix>$'),\n    )\n\nDon't forget to escape characters that have a special meaning in a regular\nexpression, such as periods.\n\nCSRF protection extended to PUT and DELETE\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nPreviously, Django's :doc:`CSRF protection </ref/contrib/csrf/>` provided\nprotection only against POST requests. Since use of PUT and DELETE methods in\nAJAX applications is becoming more common, we now protect all methods not\ndefined as safe by :rfc:`2616` -- i.e., we exempt GET, HEAD, OPTIONS and TRACE,\nand we enforce protection on everything else.\n\nIf you're using PUT or DELETE methods in AJAX applications, please see the\n:ref:`instructions about using AJAX and CSRF <csrf-ajax>`.\n\nPassword reset view now accepts ``subject_template_name``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe ``password_reset`` view in ``django.contrib.auth`` now accepts a\n``subject_template_name`` parameter, which is passed to the password save form\nas a keyword argument. If you are using this view with a custom password reset\nform, then you will need to ensure your form's ``save()`` method accepts this\nkeyword argument.\n\n``django.core.template_loaders``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThis was an alias to ``django.template.loader`` since 2005, and we've removed it\nwithout emitting a warning due to the length of the deprecation. If your code\nstill referenced this, please use ``django.template.loader`` instead.\n\n``django.db.models.fields.URLField.verify_exists``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThis functionality has been removed due to intractable performance and\nsecurity issues. Any existing usage of ``verify_exists`` should be\nremoved.\n\n``django.core.files.storage.Storage.open``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe ``open`` method of the base Storage class used to take an obscure parameter\n``mixin`` that allowed you to dynamically change the base classes of the\nreturned file object. This has been removed. In the rare case you relied on the\n``mixin`` parameter, you can easily achieve the same by overriding the ``open``\nmethod, like this::\n\n    from django.core.files import File\n    from django.core.files.storage import FileSystemStorage\n\n    class Spam(File):\n        \"\"\"\n        Spam, spam, spam, spam and spam.\n        \"\"\"\n        def ham(self):\n            return 'eggs'\n\n    class SpamStorage(FileSystemStorage):\n        \"\"\"\n        A custom file storage backend.\n        \"\"\"\n        def open(self, name, mode='rb'):\n            return Spam(open(self.path(name), mode))\n\nYAML deserializer now uses ``yaml.safe_load``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n``yaml.load`` is able to construct any Python object, which may trigger\narbitrary code execution if you process a YAML document that comes from an\nuntrusted source. This feature isn't necessary for Django's YAML deserializer,\nwhose primary use is to load fixtures consisting of simple objects. Even though\nfixtures are trusted data, the YAML deserializer now uses ``yaml.safe_load``\nfor additional security.\n\nSession cookies now have the ``httponly`` flag by default\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nSession cookies now include the ``httponly`` attribute by default to\nhelp reduce the impact of potential XSS attacks. As a consequence of\nthis change, session cookie data, including sessionid, is no longer\naccessible from JavaScript in many browsers. For strict backwards\ncompatibility, use ``SESSION_COOKIE_HTTPONLY = False`` in your\nsettings file.\n\nThe :tfilter:`urlize` filter no longer escapes every URL\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nWhen a URL contains a ``%xx`` sequence, where ``xx`` are two hexadecimal\ndigits, :tfilter:`urlize` now assumes that the URL is already escaped and\ndoesn't apply URL escaping again. This is wrong for URLs whose unquoted form\ncontains a ``%xx`` sequence, but such URLs are very unlikely to happen in the\nwild, because they would confuse browsers too.\n\n``assertTemplateUsed`` and ``assertTemplateNotUsed`` as context manager\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nIt's now possible to check whether a template was used within a block of\ncode with :meth:`~django.test.TestCase.assertTemplateUsed` and\n:meth:`~django.test.TestCase.assertTemplateNotUsed`. And they\ncan be used as a context manager::\n\n    with self.assertTemplateUsed('index.html'):\n        render_to_string('index.html')\n    with self.assertTemplateNotUsed('base.html'):\n        render_to_string('index.html')\n\nSee the :ref:`assertion documentation<assertions>` for more.\n\nDatabase connections after running the test suite\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe default test runner no longer restores the database connections after\ntests' execution. This prevents the production database from being exposed to\npotential threads that would still be running and attempting to create new\nconnections.\n\nIf your code relied on connections to the production database being created\nafter tests' execution, then you can restore the previous behavior by\nsubclassing ``DjangoTestRunner`` and overriding its ``teardown_databases()``\nmethod.\n\nOutput of :djadmin:`manage.py help <help>`\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n:djadmin:`manage.py help <help>` now groups available commands by application.\nIf you depended on the output of this command -- if you parsed it, for example\n-- then you'll need to update your code. To get a list of all available\nmanagement commands in a script, use\n:djadmin:`manage.py help --commands <help>` instead.\n\n``extends`` template tag\n~~~~~~~~~~~~~~~~~~~~~~~~\n\nPreviously, the :ttag:`extends` tag used a buggy method of parsing arguments,\nwhich could lead to it erroneously considering an argument as a string literal\nwhen it wasn't. It now uses ``parser.compile_filter``, like other tags.\n\nThe internals of the tag aren't part of the official stable API, but in the\ninterests of full disclosure, the ``ExtendsNode.__init__`` definition has\nchanged, which may break any custom tags that use this class.\n\nLoading some incomplete fixtures no longer works\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nPrior to 1.4, a default value was inserted for fixture objects that were missing\na specific date or datetime value when auto_now or auto_now_add was set for the\nfield. This was something that should not have worked, and in 1.4 loading such\nincomplete fixtures will fail. Because fixtures are a raw import, they should\nexplicitly specify all field values, regardless of field options on the model.\n\nDevelopment Server Multithreading\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe development server is now is multithreaded by default. Use the\n:djadminopt:`--nothreading` option to disable the use of threading in the\ndevelopment server::\n\n    django-admin.py runserver --nothreading\n\nAttributes disabled in markdown when safe mode set\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nPrior to Django 1.4, attributes were included in any markdown output regardless\nof safe mode setting of the filter. With version > 2.1 of the Python-Markdown\nlibrary, an enable_attributes option was added. When the safe argument is\npassed to the markdown filter, both the ``safe_mode=True`` and\n``enable_attributes=False`` options are set. If using a version of the\nPython-Markdown library less than 2.1, a warning is issued that the output is\ninsecure.\n\nFormMixin get_initial returns an instance-specific dictionary\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nIn Django 1.3, the ``get_initial`` method of the\n:class:`django.views.generic.edit.FormMixin` class was returning the\nclass ``initial`` dictionary. This has been fixed to return a copy of this\ndictionary, so form instances can modify their initial data without messing\nwith the class variable.\n\nFeatures deprecated in 1.4\n==========================\n\nOld styles of calling ``cache_page`` decorator\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nSome legacy ways of calling :func:`~django.views.decorators.cache.cache_page`\nhave been deprecated. Please see the documentation for the correct way to use\nthis decorator.\n\nSupport for PostgreSQL versions older than 8.2\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nDjango 1.3 dropped support for PostgreSQL versions older than 8.0, and we\nsuggested using a more recent version because of performance improvements\nand, more importantly, the end of upstream support periods for 8.0 and 8.1\nwas near (November 2010).\n\nDjango 1.4 takes that policy further and sets 8.2 as the minimum PostgreSQL\nversion it officially supports.\n\nRequest exceptions are now always logged\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nWhen we added :doc:`logging support </topics/logging/>` in Django in 1.3, the\nadmin error email support was moved into the\n:class:`django.utils.log.AdminEmailHandler`, attached to the\n``'django.request'`` logger. In order to maintain the established behavior of\nerror emails, the ``'django.request'`` logger was called only when\n:setting:`DEBUG` was ``False``.\n\nTo increase the flexibility of error logging for requests, the\n``'django.request'`` logger is now called regardless of the value of\n:setting:`DEBUG`, and the default settings file for new projects now includes a\nseparate filter attached to :class:`django.utils.log.AdminEmailHandler` to\nprevent admin error emails in ``DEBUG`` mode::\n\n   'filters': {\n        'require_debug_false': {\n            '()': 'django.utils.log.RequireDebugFalse'\n        }\n    },\n    'handlers': {\n        'mail_admins': {\n            'level': 'ERROR',\n            'filters': ['require_debug_false'],\n            'class': 'django.utils.log.AdminEmailHandler'\n        }\n    },\n\nIf your project was created prior to this change, your :setting:`LOGGING`\nsetting will not include this new filter. In order to maintain\nbackwards-compatibility, Django will detect that your ``'mail_admins'`` handler\nconfiguration includes no ``'filters'`` section and will automatically add\nthis filter for you and issue a pending-deprecation warning. This will become a\ndeprecation warning in Django 1.5, and in Django 1.6 the\nbackwards-compatibility shim will be removed entirely.\n\nThe existence of any ``'filters'`` key under the ``'mail_admins'`` handler will\ndisable this backward-compatibility shim and deprecation warning.\n\n``django.conf.urls.defaults``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nUntil Django 1.3, the functions :func:`~django.conf.urls.include`,\n:func:`~django.conf.urls.patterns` and :func:`~django.conf.urls.url` plus\n:data:`~django.conf.urls.handler404`, :data:`~django.conf.urls.handler500`\nwere located in a ``django.conf.urls.defaults`` module.\n\nIn Django 1.4, they live in :mod:`django.conf.urls`.\n\n``django.contrib.databrowse``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nDatabrowse has not seen active development for some time, and this does not show\nany sign of changing. There had been a suggestion for a `GSOC project`_ to\nintegrate the functionality of databrowse into the admin, but no progress was\nmade. While Databrowse has been deprecated, an enhancement of\n``django.contrib.admin`` providing a similar feature set is still possible.\n\n.. _GSOC project: https://code.djangoproject.com/wiki/SummerOfCode2011#Integratedatabrowseintotheadmin\n\nThe code that powers Databrowse is licensed under the same terms as Django\nitself, so it's available to be adopted by an individual or group as\na third-party project.\n\n``django.core.management.setup_environ``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThis function temporarily modified ``sys.path`` in order to make the parent\n\"project\" directory importable under the old flat :djadmin:`startproject`\nlayout. This function is now deprecated, as its path workarounds are no longer\nneeded with the new ``manage.py`` and default project layout.\n\nThis function was never documented or part of the public API, but it was widely\nrecommended for use in setting up a \"Django environment\" for a user script.\nThese uses should be replaced by setting the ``DJANGO_SETTINGS_MODULE``\nenvironment variable or using :func:`django.conf.settings.configure`.\n\n``django.core.management.execute_manager``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThis function was previously used by ``manage.py`` to execute a management\ncommand. It is identical to\n``django.core.management.execute_from_command_line``, except that it first\ncalls ``setup_environ``, which is now deprecated. As such, ``execute_manager``\nis also deprecated; ``execute_from_command_line`` can be used instead. Neither\nof these functions is documented as part of the public API, but a deprecation\npath is needed due to use in existing ``manage.py`` files.\n\n``is_safe`` and ``needs_autoescape`` attributes of template filters\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nTwo flags, ``is_safe`` and ``needs_autoescape``, define how each template filter\ninteracts with Django's auto-escaping behavior. They used to be attributes of\nthe filter function::\n\n    @register.filter\n    def noop(value):\n        return value\n    noop.is_safe = True\n\nHowever, this technique caused some problems in combination with decorators,\nespecially :func:`@stringfilter <django.template.defaultfilters.stringfilter>`.\nNow, the flags are keyword arguments of :meth:`@register.filter\n<django.template.Library.filter>`::\n\n    @register.filter(is_safe=True)\n    def noop(value):\n        return value\n\nSee :ref:`filters and auto-escaping <filters-auto-escaping>` for more information.\n\nWildcard expansion of application names in `INSTALLED_APPS`\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nUntil Django 1.3, :setting:`INSTALLED_APPS` accepted wildcards in application\nnames, like ``django.contrib.*``. The expansion was performed by a\nfilesystem-based implementation of ``from <package> import *``. Unfortunately,\n`this can't be done reliably`_.\n\nThis behavior was never documented. Since it is un-pythonic and not obviously\nuseful, it was removed in Django 1.4. If you relied on it, you must edit your\nsettings file to list all your applications explicitly.\n\n.. _this can't be done reliably: http://docs.python.org/tutorial/modules.html#importing-from-a-package\n\n``HttpRequest.raw_post_data`` renamed to ``HttpRequest.body``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThis attribute was confusingly named ``HttpRequest.raw_post_data``, but it\nactually provided the body of the HTTP request. It's been renamed to\n``HttpRequest.body``, and ``HttpRequest.raw_post_data`` has been deprecated.\n\n``django.contrib.sitemaps`` bug fix with potential performance implications\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nIn previous versions, ``Paginator`` objects used in sitemap classes were\ncached, which could result in stale site maps. We've removed the caching, so\neach request to a site map now creates a new Paginator object and calls the\n:attr:`~django.contrib.sitemaps.Sitemap.items()` method of the\n:class:`~django.contrib.sitemaps.Sitemap` subclass. Depending on what your\n``items()`` method is doing, this may have a negative performance impact.\nTo mitigate the performance impact, consider using the :doc:`caching\nframework </topics/cache>` within your ``Sitemap`` subclass.\n\nVersions of Python-Markdown earlier than 2.1\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nVersions of Python-Markdown earlier than 2.1 do not support the option to\ndisable attributes. As a security issue, earlier versions of this library will\nnot be supported by the markup contrib app in 1.5 under an accelerated\ndeprecation timeline.\n"
  },
  {
    "path": "Django-1.5.1/docs/releases/1.5-alpha-1.txt",
    "content": "==============================\nDjango 1.5 alpha release notes\n==============================\n\nOctober 25, 2012.\n\nWelcome to Django 1.5 alpha!\n\nThis is the first in a series of preview/development releases leading up to the\neventual release of Django 1.5, scheduled for December 2012. This release is\nprimarily targeted at developers who are interested in trying out new features\nand testing the Django codebase to help identify and resolve bugs prior to the\nfinal 1.5 release.\n\nAs such, this release is *not* intended for production use, and any such use\nis discouraged.\n\nIn particular, we need the community's help to test Django 1.5's new `Python 3\nsupport`_ -- not just to report bugs on Python 3, but also regressions on Python\n2. While Django is very conservative with regards to backwards compatibility,\nmistakes are always possible, and it's likely that the Python 3 refactoring work\nintroduced some regressions.\n\nDjango 1.5 alpha includes various `new features`_ and some minor `backwards\nincompatible changes`_. There are also some features that have been dropped,\nwhich are detailed in :doc:`our deprecation plan </internals/deprecation>`,\nand we've `begun the deprecation process for some features`_.\n\n.. _`new features`: `What's new in Django 1.5`_\n.. _`backwards incompatible changes`: `Backwards incompatible changes in 1.5`_\n.. _`begun the deprecation process for some features`: `Features deprecated in 1.5`_\n\nOverview\n========\n\nThe biggest new feature in Django 1.5 is the `configurable User model`_. Before\nDjango 1.5, applications that wanted to use Django's auth framework\n(:mod:`django.contrib.auth`) were forced to use Django's definition of a \"user\".\nIn Django 1.5, you can now swap out the ``User`` model for one that you write\nyourself. This could be a simple extension to the existing ``User`` model -- for\nexample, you could add a Twitter or Facebook ID field -- or you could completely\nreplace the ``User`` with one totally customized for your site.\n\nDjango 1.5 is also the first release with `Python 3 support`_! We're labeling\nthis support \"experimental\" because we don't yet consider it production-ready,\nbut everything's in place for you to start porting your apps to Python 3.\nOur next release, Django 1.6, will support Python 3 without reservations.\n\nOther notable new features in Django 1.5 include:\n\n* `Support for saving a subset of model's fields`_ -\n  :meth:`Model.save() <django.db.models.Model.save()>` now accepts an\n  ``update_fields`` argument, letting you specify which fields are\n  written back to the database when you call ``save()``. This can help\n  in high-concurrency operations, and can improve performance.\n\n* Better `support for streaming responses <#explicit-streaming-responses>`_ via\n  the new  :class:`~django.http.StreamingHttpResponse` response class.\n\n* `GeoDjango`_ now supports PostGIS 2.0.\n\n* ... and more; `see below <#what-s-new-in-django-1-5>`_.\n\nWherever possible we try to introduce new features in a backwards-compatible\nmanner per :doc:`our API stability policy </misc/api-stability>` policy.\nHowever, as with previous releases, Django 1.5 ships with some minor\n`backwards incompatible changes`_; people upgrading from previous versions\nof Django should read that list carefully.\n\nOne deprecated feature worth noting is the shift to \"new-style\" :ttag:`url` tag.\nPrior to Django 1.3, syntax like ``{% url myview %}`` was interpreted\nincorrectly (Django considered ``\"myview\"`` to be a literal name of a view, not\na template variable named ``myview``). Django 1.3 and above introduced the\n``{% load url from future %}`` syntax to bring in the corrected behavior where\n``myview`` was seen as a variable.\n\nThe upshot of this is that if you are not using ``{% load url from future %}``\nin your templates, you'll need to change tags like ``{% url myview %}`` to\n``{% url \"myview\" %}``. If you *were* using ``{% load url from future %}`` you\ncan simply remove that line under Django 1.5\n\nPython compatibility\n====================\n\nDjango 1.5 requires Python 2.6.5 or above, though we **highly recommended**\nPython 2.7.3 or above. Support for Python 2.5 and below has been dropped.\n\nThis change should affect only a small number of Django users, as most\noperating-system vendors today are shipping Python 2.6 or newer as their default\nversion. If you're still using Python 2.5, however, you'll need to stick to\nDjango 1.4 until you can upgrade your Python version. Per :doc:`our support\npolicy </internals/release-process>`, Django 1.4 will continue to receive\nsecurity support until the release of Django 1.6.\n\nDjango 1.5 does not run on a Jython final release, because Jython's latest\nrelease doesn't currently support Python 2.6. However, Jython currently does\noffer an alpha release featuring 2.7 support, and Django 1.5 supports that alpha\nrelease.\n\nPython 3 support\n~~~~~~~~~~~~~~~~\n\nDjango 1.5 introduces support for Python 3 - specifically, Python\n3.2 and above. This comes in the form of a **single** codebase; you don't\nneed to install a different version of Django on Python 3. This means that\nyou can write application targeted for just Python 2, just Python 3, or single\napplications that support both platforms.\n\nHowever, we're labeling this support \"experimental\" for now: although it's\nreceived extensive testing via our automated test suite, it's received very\nlittle real-world testing. We've done our best to eliminate bugs, but we can't\nbe sure we covered all possible uses of Django. Further, Django's more than a\nweb framework; it's an ecosystem of pluggable components. At this point, very\nfew third-party applications have been ported to Python 3, so it's unlikely\nthat a real-world application will have all its dependencies satisfied under\nPython 3.\n\nThus, we're recommending that Django 1.5 not be used in production under Python\n3. Instead, use this opportunity to begin :doc:`porting applications to Python 3\n</topics/python3>`. If you're an author of a pluggable component, we encourage you\nto start porting now.\n\nWe plan to offer first-class, production-ready support for Python 3 in our next\nrelease, Django 1.6.\n\nWhat's new in Django 1.5\n========================\n\nConfigurable User model\n~~~~~~~~~~~~~~~~~~~~~~~\n\nIn Django 1.5, you can now use your own model as the store for user-related\ndata. If your project needs a username with more than 30 characters, or if\nyou want to store usernames in a format other than first name/last name, or\nyou want to put custom profile information onto your User object, you can\nnow do so.\n\nIf you have a third-party reusable application that references the User model,\nyou may need to make some changes to the way you reference User instances. You\nshould also document any specific features of the User model that your\napplication relies upon.\n\nSee the :ref:`documentation on custom User models <auth-custom-user>` for\nmore details.\n\nSupport for saving a subset of model's fields\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe method :meth:`Model.save() <django.db.models.Model.save()>` has a new\nkeyword argument ``update_fields``. By using this argument it is possible to\nsave only a select list of model's fields. This can be useful for performance\nreasons or when trying to avoid overwriting concurrent changes.\n\nDeferred instances (those loaded by .only() or .defer()) will automatically\nsave just the loaded fields. If any field is set manually after load, that\nfield will also get updated on save.\n\nSee the :meth:`Model.save() <django.db.models.Model.save()>` documentation for\nmore details.\n\nCaching of related model instances\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nWhen traversing relations, the ORM will avoid re-fetching objects that were\npreviously loaded. For example, with the tutorial's models::\n\n    >>> first_poll = Poll.objects.all()[0]\n    >>> first_choice = first_poll.choice_set.all()[0]\n    >>> first_choice.poll is first_poll\n    True\n\nIn Django 1.5, the third line no longer triggers a new SQL query to fetch\n``first_choice.poll``; it was set by the second line.\n\nFor one-to-one relationships, both sides can be cached. For many-to-one\nrelationships, only the single side of the relationship can be cached. This\nis particularly helpful in combination with ``prefetch_related``.\n\nExplicit support for streaming responses\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nBefore Django 1.5, it was possible to create a streaming response by passing\nan iterator to :class:`~django.http.HttpResponse`. But this was unreliable:\nany middleware that accessed the :attr:`~django.http.HttpResponse.content`\nattribute would consume the iterator prematurely.\n\nYou can now explicitly generate a streaming response with the new\n:class:`~django.http.StreamingHttpResponse` class. This class exposes a\n:class:`~django.http.StreamingHttpResponse.streaming_content` attribute which\nis an iterator.\n\nSince :class:`~django.http.StreamingHttpResponse` does not have a ``content``\nattribute, middleware that needs access to the response content must test for\nstreaming responses and behave accordingly. See :ref:`response-middleware` for\nmore information.\n\n``{% verbatim %}`` template tag\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nTo make it easier to deal with javascript templates which collide with Django's\nsyntax, you can now use the :ttag:`verbatim` block tag to avoid parsing the\ntag's content.\n\nRetrieval of ``ContentType`` instances associated with proxy models\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe methods :meth:`ContentTypeManager.get_for_model() <django.contrib.contenttypes.models.ContentTypeManager.get_for_model()>`\nand :meth:`ContentTypeManager.get_for_models() <django.contrib.contenttypes.models.ContentTypeManager.get_for_models()>`\nhave a new keyword argument – respectively ``for_concrete_model`` and ``for_concrete_models``.\nBy passing ``False`` using this argument it is now possible to retrieve the\n:class:`ContentType <django.contrib.contenttypes.models.ContentType>`\nassociated with proxy models.\n\nNew ``view`` variable in class-based views context\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nIn all :doc:`generic class-based views </topics/class-based-views/index>`\n(or any class-based view inheriting from ``ContextMixin``), the context dictionary\ncontains a ``view`` variable that points to the ``View`` instance.\n\nGeoDjango\n~~~~~~~~~\n\n* :class:`~django.contrib.gis.geos.LineString` and\n  :class:`~django.contrib.gis.geos.MultiLineString` GEOS objects now support the\n  :meth:`~django.contrib.gis.geos.GEOSGeometry.interpolate()` and\n  :meth:`~django.contrib.gis.geos.GEOSGeometry.project()` methods\n  (so-called linear referencing).\n\n* The ``wkb`` and ``hex`` properties of\n  :class:`~django.contrib.gis.geos.GEOSGeometry` objects preserve the Z\n  dimension.\n\n* Support for PostGIS 2.0 has been added and support for GDAL < 1.5 has been\n  dropped.\n\nMinor features\n~~~~~~~~~~~~~~\n\nDjango 1.5 also includes several smaller improvements worth noting:\n\n* The template engine now interprets ``True``, ``False`` and ``None`` as the\n  corresponding Python objects.\n\n* :mod:`django.utils.timezone` provides a helper for converting aware\n  datetimes between time zones. See :func:`~django.utils.timezone.localtime`.\n\n* The generic views support OPTIONS requests.\n\n* Management commands do not raise ``SystemExit`` any more when called by code\n  from :ref:`call_command <call-command>`. Any exception raised by the command\n  (mostly :ref:`CommandError <ref-command-exceptions>`) is propagated.\n\n* The dumpdata management command outputs one row at a time, preventing\n  out-of-memory errors when dumping large datasets.\n\n* In the localflavor for Canada, \"pq\" was added to the acceptable codes for\n  Quebec. It's an old abbreviation.\n\n* The :ref:`receiver <connecting-receiver-functions>` decorator is now able to\n  connect to more than one signal by supplying a list of signals.\n\n* In the admin, you can now filter users by groups which they are members of.\n\n* :meth:`QuerySet.bulk_create()\n  <django.db.models.query.QuerySet.bulk_create>` now has a batch_size\n  argument. By default the batch_size is unlimited except for SQLite where\n  single batch is limited so that 999 parameters per query isn't exceeded.\n\n* The :setting:`LOGIN_URL` and :setting:`LOGIN_REDIRECT_URL` settings now also\n  accept view function names and\n  :ref:`named URL patterns <naming-url-patterns>`. This allows you to reduce\n  configuration duplication. More information can be found in the\n  :func:`~django.contrib.auth.decorators.login_required` documentation.\n\n* Django now provides a mod_wsgi :doc:`auth handler\n  </howto/deployment/wsgi/apache-auth>`.\n\n* The :meth:`QuerySet.delete() <django.db.models.query.QuerySet.delete>`\n  and :meth:`Model.delete() <django.db.models.Model.delete()>` can now take\n  fast-path in some cases. The fast-path allows for less queries and less\n  objects fetched into memory. See :meth:`QuerySet.delete()\n  <django.db.models.query.QuerySet.delete>` for details.\n\n* An instance of :class:`~django.core.urlresolvers.ResolverMatch` is stored on\n  the request as ``resolver_match``.\n\n* By default, all logging messages reaching the ``django`` logger when\n  :setting:`DEBUG` is ``True`` are sent to the console (unless you redefine the\n  logger in your :setting:`LOGGING` setting).\n\n* When using :class:`~django.template.RequestContext`, it is now possible to\n  look up permissions by using ``{% if 'someapp.someperm' in perms %}``\n  in templates.\n\n* It's not required any more to have ``404.html`` and ``500.html`` templates in\n  the root templates directory. Django will output some basic error messages for\n  both situations when those templates are not found. Of course, it's still\n  recommended as good practice to provide those templates in order to present\n  pretty error pages to the user.\n\n* :mod:`django.contrib.auth` provides a new signal that is emitted\n  whenever a user fails to login successfully. See\n  :data:`~django.contrib.auth.signals.user_login_failed`\n\n* The loaddata management command now supports an\n  :djadminopt:`--ignorenonexistent` option to ignore data for fields that no\n  longer exist.\n\n* :meth:`~django.test.SimpleTestCase.assertXMLEqual` and\n  :meth:`~django.test.SimpleTestCase.assertXMLNotEqual` new assertions allow\n  you to test equality for XML content at a semantic level, without caring for\n  syntax differences (spaces, attribute order, etc.).\n\nBackwards incompatible changes in 1.5\n=====================================\n\n.. warning::\n\n    In addition to the changes outlined in this section, be sure to review the\n    :doc:`deprecation plan </internals/deprecation>` for any features that\n    have been removed. If you haven't updated your code within the\n    deprecation timeline for a given feature, its removal may appear as a\n    backwards incompatible change.\n\nContext in year archive class-based views\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nFor consistency with the other date-based generic views,\n:class:`~django.views.generic.dates.YearArchiveView` now passes ``year`` in\nthe context as a :class:`datetime.date` rather than a string.  If you are\nusing ``{{ year }}`` in your templates, you must replace it with ``{{\nyear|date:\"Y\" }}``.\n\n``next_year`` and ``previous_year`` were also added in the context. They are\ncalculated according to ``allow_empty`` and ``allow_future``.\n\nContext in year and month archive class-based views\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n:class:`~django.views.generic.dates.YearArchiveView` and\n:class:`~django.views.generic.dates.MonthArchiveView` were documented to\nprovide a ``date_list`` sorted in ascending order in the context, like their\nfunction-based predecessors, but it actually was in descending order. In 1.5,\nthe documented order was restored. You may want to add (or remove) the\n``reversed`` keyword when you're iterating on ``date_list`` in a template::\n\n    {% for date in date_list reversed %}\n\n:class:`~django.views.generic.dates.ArchiveIndexView` still provides a\n``date_list`` in descending order.\n\nContext in TemplateView\n~~~~~~~~~~~~~~~~~~~~~~~\n\nFor consistency with the design of the other generic views,\n:class:`~django.views.generic.base.TemplateView` no longer passes a ``params``\ndictionary into the context, instead passing the variables from the URLconf\ndirectly into the context.\n\nNon-form data in HTTP requests\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n:attr:`request.POST <django.http.HttpRequest.POST>` will no longer include data\nposted via HTTP requests with non form-specific content-types in the header.\nIn prior versions, data posted with content-types other than\n``multipart/form-data`` or ``application/x-www-form-urlencoded`` would still\nend up represented in the :attr:`request.POST <django.http.HttpRequest.POST>`\nattribute. Developers wishing to access the raw POST data for these cases,\nshould use the :attr:`request.body <django.http.HttpRequest.body>` attribute\ninstead.\n\nOPTIONS, PUT and DELETE requests in the test client\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nUnlike GET and POST, these HTTP methods aren't implemented by web browsers.\nRather, they're used in APIs, which transfer data in various formats such as\nJSON or XML. Since such requests may contain arbitrary data, Django doesn't\nattempt to decode their body.\n\nHowever, the test client used to build a query string for OPTIONS and DELETE\nrequests like for GET, and a request body for PUT requests like for POST. This\nencoding was arbitrary and inconsistent with Django's behavior when it\nreceives the requests, so it was removed in Django 1.5.\n\nIf you were using the ``data`` parameter in an OPTIONS or a DELETE request,\nyou must convert it to a query string and append it to the ``path`` parameter.\n\nIf you were using the ``data`` parameter in a PUT request without a\n``content_type``, you must encode your data before passing it to the test\nclient and set the ``content_type`` argument.\n\nSystem version of :mod:`simplejson` no longer used\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nAs explained below, Django 1.5 deprecates\n``django.utils.simplejson`` in favor of Python 2.6's built-in :mod:`json`\nmodule. In theory, this change is harmless. Unfortunately, because of\nincompatibilities between versions of :mod:`simplejson`, it may trigger errors\nin some circumstances.\n\nJSON-related features in Django 1.4 always used ``django.utils.simplejson``.\nThis module was actually:\n\n- A system version of :mod:`simplejson`, if one was available (ie. ``import\n  simplejson`` works), if it was more recent than Django's built-in copy or it\n  had the C speedups, or\n- The :mod:`json` module from the standard library, if it was available (ie.\n  Python 2.6 or greater), or\n- A built-in copy of version 2.0.7 of :mod:`simplejson`.\n\nIn Django 1.5, those features use Python's :mod:`json` module, which is based\non version 2.0.9 of :mod:`simplejson`.\n\nThere are no known incompatibilities between Django's copy of version 2.0.7 and\nPython's copy of version 2.0.9. However, there are some incompatibilities\nbetween other versions of :mod:`simplejson`:\n\n- While the :mod:`simplejson` API is documented as always returning unicode\n  strings, the optional C implementation can return a byte string. This was\n  fixed in Python 2.7.\n- :class:`simplejson.JSONEncoder` gained a ``namedtuple_as_object`` keyword\n  argument in version 2.2.\n\nMore information on these incompatibilities is available in `ticket #18023`_.\n\nThe net result is that, if you have installed :mod:`simplejson` and your code\nuses Django's serialization internals directly -- for instance\n``django.core.serializers.json.DjangoJSONEncoder``, the switch from\n:mod:`simplejson` to :mod:`json` could break your code. (In general, changes to\ninternals aren't documented; we're making an exception here.)\n\nAt this point, the maintainers of Django believe that using :mod:`json` from\nthe standard library offers the strongest guarantee of backwards-compatibility.\nThey recommend to use it from now on.\n\n.. _ticket #18023: https://code.djangoproject.com/ticket/18023#comment:10\n\nString types of hasher method parameters\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nIf you have written a :ref:`custom password hasher <auth_password_storage>`,\nyour ``encode()``, ``verify()`` or ``safe_summary()`` methods should accept\nUnicode parameters (``password``, ``salt`` or ``encoded``). If any of the\nhashing methods need byte strings, you can use the\n:func:`~django.utils.encoding.force_bytes` utility to encode the strings.\n\nValidation of previous_page_number and next_page_number\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nWhen using :doc:`object pagination </topics/pagination>`,\nthe ``previous_page_number()`` and ``next_page_number()`` methods of the\n:class:`~django.core.paginator.Page` object did not check if the returned\nnumber was inside the existing page range.\nIt does check it now and raises an :exc:`~django.core.paginator.InvalidPage`\nexception when the number is either too low or too high.\n\nBehavior of autocommit database option on PostgreSQL changed\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nPostgreSQL's autocommit option didn't work as advertised previously. It did\nwork for single transaction block, but after the first block was left the\nautocommit behavior was never restored. This bug is now fixed in 1.5. While\nthis is only a bug fix, it is worth checking your applications behavior if\nyou are using PostgreSQL together with the autocommit option.\n\nSession not saved on 500 responses\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nDjango's session middleware will skip saving the session data if the\nresponse's status code is 500.\n\nEmail checks on failed admin login\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nPrior to Django 1.5, if you attempted to log into the admin interface and\nmistakenly used your email address instead of your username, the admin\ninterface would provide a warning advising that your email address was\nnot your username. In Django 1.5, the introduction of\n:ref:`custom User models <auth-custom-user>` has required the removal of this\nwarning. This doesn't change the login behavior of the admin site; it only\naffects the warning message that is displayed under one particular mode of\nlogin failure.\n\nChanges in tests execution\n~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nSome changes have been introduced in the execution of tests that might be\nbackward-incompatible for some testing setups:\n\nDatabase flushing in ``django.test.TransactionTestCase``\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nPreviously, the test database was truncated *before* each test run in a\n:class:`~django.test.TransactionTestCase`.\n\nIn order to be able to run unit tests in any order and to make sure they are\nalways isolated from each other, :class:`~django.test.TransactionTestCase` will\nnow reset the database *after* each test run instead.\n\nNo more implicit DB sequences reset\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n:class:`~django.test.TransactionTestCase` tests used to reset primary key\nsequences automatically together with the database flushing actions described\nabove.\n\nThis has been changed so no sequences are implicitly reset. This can cause\n:class:`~django.test.TransactionTestCase` tests that depend on hard-coded\nprimary key values to break.\n\nThe new :attr:`~django.test.TransactionTestCase.reset_sequences` attribute can\nbe used to force the old behavior for :class:`~django.test.TransactionTestCase`\nthat might need it.\n\nOrdering of tests\n^^^^^^^^^^^^^^^^^\n\nIn order to make sure all ``TestCase`` code starts with a clean database,\ntests are now executed in the following order:\n\n* First, all unittests (including :class:`unittest.TestCase`,\n  :class:`~django.test.SimpleTestCase`, :class:`~django.test.TestCase` and\n  :class:`~django.test.TransactionTestCase`) are run with no particular ordering\n  guaranteed nor enforced among them.\n\n* Then any other tests (e.g. doctests) that may alter the database without\n  restoring it to its original state are run.\n\nThis should not cause any problems unless you have existing doctests which\nassume a :class:`~django.test.TransactionTestCase` executed earlier left some\ndatabase state behind or unit tests that rely on some form of state being\npreserved after the execution of other tests. Such tests are already very\nfragile, and must now be changed to be able to run independently.\n\n`cleaned_data` dictionary kept for invalid forms\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe :attr:`~django.forms.Form.cleaned_data` dictionary is now always present\nafter form validation. When the form doesn't validate, it contains only the\nfields that passed validation. You should test the success of the validation\nwith the :meth:`~django.forms.Form.is_valid()` method and not with the\npresence or absence of the :attr:`~django.forms.Form.cleaned_data` attribute\non the form.\n\nMiscellaneous\n~~~~~~~~~~~~~\n\n* :class:`django.forms.ModelMultipleChoiceField` now returns an empty\n  ``QuerySet`` as the empty value instead of an empty list.\n\n* :func:`~django.utils.http.int_to_base36` properly raises a\n  :exc:`~exceptions.TypeError` instead of :exc:`~exceptions.ValueError` for\n  non-integer inputs.\n\n* The ``slugify`` template filter is now available as a standard python\n  function at :func:`django.utils.text.slugify`. Similarly, ``remove_tags`` is\n  available at :func:`django.utils.html.remove_tags`.\n\n* Uploaded files are no longer created as executable by default. If you need\n  them to be executable change :setting:`FILE_UPLOAD_PERMISSIONS` to your\n  needs. The new default value is ``0666`` (octal) and the current umask value\n  is first masked out.\n\n* The :ref:`F() expressions <query-expressions>` supported bitwise operators by\n  ``&`` and ``|``. These operators are now available using ``.bitand()`` and\n  ``.bitor()`` instead. The removal of ``&`` and ``|`` was done to be consistent with\n  :ref:`Q() expressions <complex-lookups-with-q>` and ``QuerySet`` combining where\n  the operators are used as boolean AND and OR operators.\n\n* The :ttag:`csrf_token` template tag is no longer enclosed in a div. If you need\n  HTML validation against pre-HTML5 Strict DTDs, you should add a div around it\n  in your pages.\n\nFeatures deprecated in 1.5\n==========================\n\n:setting:`AUTH_PROFILE_MODULE`\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nWith the introduction of :ref:`custom User models <auth-custom-user>`, there is\nno longer any need for a built-in mechanism to store user profile data.\n\nYou can still define user profiles models that have a one-to-one relation with\nthe User model - in fact, for many applications needing to associate data with\na User account, this will be an appropriate design pattern to follow. However,\nthe :setting:`AUTH_PROFILE_MODULE` setting, and the\n:meth:`~django.contrib.auth.models.User.get_profile()` method for accessing\nthe user profile model, should not be used any longer.\n\nStreaming behavior of :class:`~django.http.HttpResponse`\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nDjango 1.5 deprecates the ability to stream a response by passing an iterator\nto :class:`~django.http.HttpResponse`. If you rely on this behavior, switch to\n:class:`~django.http.StreamingHttpResponse`. See above for more details.\n\nIn Django 1.7 and above, the iterator will be consumed immediately by\n:class:`~django.http.HttpResponse`.\n\n``django.utils.simplejson``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nSince Django 1.5 drops support for Python 2.5, we can now rely on the\n:mod:`json` module being available in Python's standard library, so we've\nremoved our own copy of :mod:`simplejson`. You should now import :mod:`json`\ninstead of ``django.utils.simplejson``.\n\nUnfortunately, this change might have unwanted side-effects, because of\nincompatibilities between versions of :mod:`simplejson` -- see the backwards-\nincompatible changes section. If you rely on features added to :mod:`simplejson`\nafter it became Python's :mod:`json`, you should import :mod:`simplejson`\nexplicitly.\n\n``django.utils.encoding.StrAndUnicode``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe :class:`~django.utils.encoding.StrAndUnicode` mix-in has been deprecated.\nDefine a ``__str__`` method and apply the\n:func:`~django.utils.encoding.python_2_unicode_compatible` decorator instead.\n\n``django.utils.itercompat.product``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe ``django.utils.itercompat.product`` function has been deprecated. Use\nthe built-in :func:`itertools.product` instead.\n\n``django.utils.markup``\n~~~~~~~~~~~~~~~~~~~~~~~\n\nThe markup contrib module has been deprecated and will follow an accelerated\ndeprecation schedule. Direct use of python markup libraries or 3rd party tag\nlibraries is preferred to Django maintaining this functionality in the\nframework.\n"
  },
  {
    "path": "Django-1.5.1/docs/releases/1.5-beta-1.txt",
    "content": "=============================\nDjango 1.5 beta release notes\n=============================\n\nNovember 27, 2012.\n\nWelcome to Django 1.5 beta!\n\nThis is the second in a series of preview/development releases leading\nup to the eventual release of Django 1.5, scheduled for Decemeber\n2012. This release is primarily targeted at developers who are\ninterested in trying out new features and testing the Django codebase\nto help identify and resolve bugs prior to the final 1.5 release.\n\nAs such, this release is *not* intended for production use, and any such use\nis discouraged.\n\nThese release notes cover the `new features`_, as well\nas some `backwards incompatible changes`_ you'll want to be aware of\nwhen upgrading from Django 1.4 or older versions. We've also dropped some\nfeatures, which are detailed in :doc:`our deprecation plan\n</internals/deprecation>`, and we've `begun the deprecation process for some\nfeatures`_.\n\n.. _`new features`: `What's new in Django 1.5`_\n.. _`backwards incompatible changes`: `Backwards incompatible changes in 1.5`_\n.. _`begun the deprecation process for some features`: `Features deprecated in 1.5`_\n\nOverview\n========\n\nThe biggest new feature in Django 1.5 is the `configurable User model`_. Before\nDjango 1.5, applications that wanted to use Django's auth framework\n(:mod:`django.contrib.auth`) were forced to use Django's definition of a \"user\".\nIn Django 1.5, you can now swap out the ``User`` model for one that you write\nyourself. This could be a simple extension to the existing ``User`` model -- for\nexample, you could add a Twitter or Facebook ID field -- or you could completely\nreplace the ``User`` with one totally customized for your site.\n\nDjango 1.5 is also the first release with `Python 3 support`_! We're labeling\nthis support \"experimental\" because we don't yet consider it production-ready,\nbut everything's in place for you to start porting your apps to Python 3.\nOur next release, Django 1.6, will support Python 3 without reservations.\n\nOther notable new features in Django 1.5 include:\n\n* `Support for saving a subset of model's fields`_ -\n  :meth:`Model.save() <django.db.models.Model.save()>` now accepts an\n  ``update_fields`` argument, letting you specify which fields are\n  written back to the database when you call ``save()``. This can help\n  in high-concurrency operations, and can improve performance.\n\n* Better `support for streaming responses <#explicit-streaming-responses-beta-1>`_ via\n  the new  :class:`~django.http.StreamingHttpResponse` response class.\n\n* `GeoDjango`_ now supports PostGIS 2.0.\n\n* ... and more; `see below <#what-s-new-in-django-1-5>`_.\n\nWherever possible we try to introduce new features in a backwards-compatible\nmanner per :doc:`our API stability policy </misc/api-stability>`.\nHowever, as with previous releases, Django 1.5 ships with some minor\n`backwards incompatible changes`_; people upgrading from previous versions\nof Django should read that list carefully.\n\nOne deprecated feature worth noting is the shift to \"new-style\" :ttag:`url` tag.\nPrior to Django 1.3, syntax like ``{% url myview %}`` was interpreted\nincorrectly (Django considered ``\"myview\"`` to be a literal name of a view, not\na template variable named ``myview``). Django 1.3 and above introduced the\n``{% load url from future %}`` syntax to bring in the corrected behavior where\n``myview`` was seen as a variable.\n\nThe upshot of this is that if you are not using ``{% load url from future %}``\nin your templates, you'll need to change tags like ``{% url myview %}`` to\n``{% url \"myview\" %}``. If you *were* using ``{% load url from future %}`` you\ncan simply remove that line under Django 1.5\n\nPython compatibility\n====================\n\nDjango 1.5 requires Python 2.6.5 or above, though we **highly recommend**\nPython 2.7.3 or above. Support for Python 2.5 and below has been dropped.\n\nThis change should affect only a small number of Django users, as most\noperating-system vendors today are shipping Python 2.6 or newer as their default\nversion. If you're still using Python 2.5, however, you'll need to stick to\nDjango 1.4 until you can upgrade your Python version. Per :doc:`our support\npolicy </internals/release-process>`, Django 1.4 will continue to receive\nsecurity support until the release of Django 1.6.\n\nDjango 1.5 does not run on a Jython final release, because Jython's latest\nrelease doesn't currently support Python 2.6. However, Jython currently does\noffer an alpha release featuring 2.7 support, and Django 1.5 supports that alpha\nrelease.\n\nPython 3 support\n~~~~~~~~~~~~~~~~\n\nDjango 1.5 introduces support for Python 3 - specifically, Python\n3.2 and above. This comes in the form of a **single** codebase; you don't\nneed to install a different version of Django on Python 3. This means that\nyou can write applications targeted for just Python 2, just Python 3, or single\napplications that support both platforms.\n\nHowever, we're labeling this support \"experimental\" for now: although it's\nreceived extensive testing via our automated test suite, it's received very\nlittle real-world testing. We've done our best to eliminate bugs, but we can't\nbe sure we covered all possible uses of Django. Further, Django's more than a\nweb framework; it's an ecosystem of pluggable components. At this point, very\nfew third-party applications have been ported to Python 3, so it's unlikely\nthat a real-world application will have all its dependencies satisfied under\nPython 3.\n\nThus, we're recommending that Django 1.5 not be used in production under Python\n3. Instead, use this opportunity to begin :doc:`porting applications to Python 3\n</topics/python3>`. If you're an author of a pluggable component, we encourage you\nto start porting now.\n\nWe plan to offer first-class, production-ready support for Python 3 in our next\nrelease, Django 1.6.\n\nWhat's new in Django 1.5\n========================\n\nConfigurable User model\n~~~~~~~~~~~~~~~~~~~~~~~\n\nIn Django 1.5, you can now use your own model as the store for user-related\ndata. If your project needs a username with more than 30 characters, or if\nyou want to store user's names in a format other than first name/last name,\nor you want to put custom profile information onto your User object, you can\nnow do so.\n\nIf you have a third-party reusable application that references the User model,\nyou may need to make some changes to the way you reference User instances. You\nshould also document any specific features of the User model that your\napplication relies upon.\n\nSee the :ref:`documentation on custom User models <auth-custom-user>` for\nmore details.\n\nSupport for saving a subset of model's fields\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe method :meth:`Model.save() <django.db.models.Model.save()>` has a new\nkeyword argument ``update_fields``. By using this argument it is possible to\nsave only a select list of model's fields. This can be useful for performance\nreasons or when trying to avoid overwriting concurrent changes.\n\nDeferred instances (those loaded by .only() or .defer()) will automatically\nsave just the loaded fields. If any field is set manually after load, that\nfield will also get updated on save.\n\nSee the :meth:`Model.save() <django.db.models.Model.save()>` documentation for\nmore details.\n\nCaching of related model instances\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nWhen traversing relations, the ORM will avoid re-fetching objects that were\npreviously loaded. For example, with the tutorial's models::\n\n    >>> first_poll = Poll.objects.all()[0]\n    >>> first_choice = first_poll.choice_set.all()[0]\n    >>> first_choice.poll is first_poll\n    True\n\nIn Django 1.5, the third line no longer triggers a new SQL query to fetch\n``first_choice.poll``; it was set by the second line.\n\nFor one-to-one relationships, both sides can be cached. For many-to-one\nrelationships, only the single side of the relationship can be cached. This\nis particularly helpful in combination with ``prefetch_related``.\n\n.. _explicit-streaming-responses-beta-1:\n\nExplicit support for streaming responses\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nBefore Django 1.5, it was possible to create a streaming response by passing\nan iterator to :class:`~django.http.HttpResponse`. But this was unreliable:\nany middleware that accessed the :attr:`~django.http.HttpResponse.content`\nattribute would consume the iterator prematurely.\n\nYou can now explicitly generate a streaming response with the new\n:class:`~django.http.StreamingHttpResponse` class. This class exposes a\n:class:`~django.http.StreamingHttpResponse.streaming_content` attribute which\nis an iterator.\n\nSince :class:`~django.http.StreamingHttpResponse` does not have a ``content``\nattribute, middleware that needs access to the response content must test for\nstreaming responses and behave accordingly. See :ref:`response-middleware` for\nmore information.\n\n``{% verbatim %}`` template tag\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nTo make it easier to deal with javascript templates which collide with Django's\nsyntax, you can now use the :ttag:`verbatim` block tag to avoid parsing the\ntag's content.\n\nRetrieval of ``ContentType`` instances associated with proxy models\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe methods :meth:`ContentTypeManager.get_for_model() <django.contrib.contenttypes.models.ContentTypeManager.get_for_model()>`\nand :meth:`ContentTypeManager.get_for_models() <django.contrib.contenttypes.models.ContentTypeManager.get_for_models()>`\nhave a new keyword argument – respectively ``for_concrete_model`` and ``for_concrete_models``.\nBy passing ``False`` using this argument it is now possible to retrieve the\n:class:`ContentType <django.contrib.contenttypes.models.ContentType>`\nassociated with proxy models.\n\nNew ``view`` variable in class-based views context\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nIn all :doc:`generic class-based views </topics/class-based-views/index>`\n(or any class-based view inheriting from ``ContextMixin``), the context dictionary\ncontains a ``view`` variable that points to the ``View`` instance.\n\nGeoDjango\n~~~~~~~~~\n\n* :class:`~django.contrib.gis.geos.LineString` and\n  :class:`~django.contrib.gis.geos.MultiLineString` GEOS objects now support the\n  :meth:`~django.contrib.gis.geos.GEOSGeometry.interpolate()` and\n  :meth:`~django.contrib.gis.geos.GEOSGeometry.project()` methods\n  (so-called linear referencing).\n\n* The ``wkb`` and ``hex`` properties of\n  :class:`~django.contrib.gis.geos.GEOSGeometry` objects preserve the Z\n  dimension.\n\n* Support for PostGIS 2.0 has been added and support for GDAL < 1.5 has been\n  dropped.\n\nMinor features\n~~~~~~~~~~~~~~\n\nDjango 1.5 also includes several smaller improvements worth noting:\n\n* The template engine now interprets ``True``, ``False`` and ``None`` as the\n  corresponding Python objects.\n\n* :mod:`django.utils.timezone` provides a helper for converting aware\n  datetimes between time zones. See :func:`~django.utils.timezone.localtime`.\n\n* The generic views support OPTIONS requests.\n\n* Management commands do not raise ``SystemExit`` any more when called by code\n  from :ref:`call_command <call-command>`. Any exception raised by the command\n  (mostly :ref:`CommandError <ref-command-exceptions>`) is propagated.\n\n* The dumpdata management command outputs one row at a time, preventing\n  out-of-memory errors when dumping large datasets.\n\n* In the localflavor for Canada, \"pq\" was added to the acceptable codes for\n  Quebec. It's an old abbreviation.\n\n* The :ref:`receiver <connecting-receiver-functions>` decorator is now able to\n  connect to more than one signal by supplying a list of signals.\n\n* In the admin, you can now filter users by groups which they are members of.\n\n* :meth:`QuerySet.bulk_create()\n  <django.db.models.query.QuerySet.bulk_create>` now has a batch_size\n  argument. By default the batch_size is unlimited except for SQLite where\n  single batch is limited so that 999 parameters per query isn't exceeded.\n\n* The :setting:`LOGIN_URL` and :setting:`LOGIN_REDIRECT_URL` settings now also\n  accept view function names and\n  :ref:`named URL patterns <naming-url-patterns>`. This allows you to reduce\n  configuration duplication. More information can be found in the\n  :func:`~django.contrib.auth.decorators.login_required` documentation.\n\n* Django now provides a mod_wsgi :doc:`auth handler\n  </howto/deployment/wsgi/apache-auth>`.\n\n* The :meth:`QuerySet.delete() <django.db.models.query.QuerySet.delete>`\n  and :meth:`Model.delete() <django.db.models.Model.delete()>` can now take\n  fast-path in some cases. The fast-path allows for less queries and less\n  objects fetched into memory. See :meth:`QuerySet.delete()\n  <django.db.models.query.QuerySet.delete>` for details.\n\n* An instance of :class:`~django.core.urlresolvers.ResolverMatch` is stored on\n  the request as ``resolver_match``.\n\n* By default, all logging messages reaching the ``django`` logger when\n  :setting:`DEBUG` is ``True`` are sent to the console (unless you redefine the\n  logger in your :setting:`LOGGING` setting).\n\n* When using :class:`~django.template.RequestContext`, it is now possible to\n  look up permissions by using ``{% if 'someapp.someperm' in perms %}``\n  in templates.\n\n* It's not required any more to have ``404.html`` and ``500.html`` templates in\n  the root templates directory. Django will output some basic error messages for\n  both situations when those templates are not found. Of course, it's still\n  recommended as good practice to provide those templates in order to present\n  pretty error pages to the user.\n\n* :mod:`django.contrib.auth` provides a new signal that is emitted\n  whenever a user fails to login successfully. See\n  :data:`~django.contrib.auth.signals.user_login_failed`\n\n* The loaddata management command now supports an\n  :djadminopt:`--ignorenonexistent` option to ignore data for fields that no\n  longer exist.\n\n* :meth:`~django.test.SimpleTestCase.assertXMLEqual` and\n  :meth:`~django.test.SimpleTestCase.assertXMLNotEqual` new assertions allow\n  you to test equality for XML content at a semantic level, without caring for\n  syntax differences (spaces, attribute order, etc.).\n\n* RemoteUserMiddleware now forces logout when the REMOTE_USER header\n  disappears during the same browser session.\n\n* The :ref:`cache-based session backend <cached-sessions-backend>` can store\n  session data in a non-default cache.\n\n* Multi-column indexes can now be created on models. Read the\n  :attr:`~django.db.models.Options.index_together` documentation for more\n  information.\n\n* During Django's logging configuration verbose Deprecation warnings are\n  enabled and warnings are captured into the logging system. Logged warnings\n  are routed through the ``console`` logging handler, which by default requires\n  :setting:`DEBUG` to be True for output to be generated. The result is that\n  DeprecationWarnings should be printed to the console in development\n  environments the way they have been in Python versions < 2.7.\n\n* The API for :meth:`django.contrib.admin.ModelAdmin.message_user` method has\n  been modified to accept additional arguments adding capabilities similar to\n  :func:`django.contrib.messages.add_message`. This is useful for generating\n  error messages from admin actions.\n\n* The admin's list filters can now be customized per-request thanks to the new\n  :meth:`django.contrib.admin.ModelAdmin.get_list_filter` method.\n\nBackwards incompatible changes in 1.5\n=====================================\n\n.. warning::\n\n    In addition to the changes outlined in this section, be sure to review the\n    :doc:`deprecation plan </internals/deprecation>` for any features that\n    have been removed. If you haven't updated your code within the\n    deprecation timeline for a given feature, its removal may appear as a\n    backwards incompatible change.\n\nContext in year archive class-based views\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nFor consistency with the other date-based generic views,\n:class:`~django.views.generic.dates.YearArchiveView` now passes ``year`` in\nthe context as a :class:`datetime.date` rather than a string.  If you are\nusing ``{{ year }}`` in your templates, you must replace it with ``{{\nyear|date:\"Y\" }}``.\n\n``next_year`` and ``previous_year`` were also added in the context. They are\ncalculated according to ``allow_empty`` and ``allow_future``.\n\nContext in year and month archive class-based views\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n:class:`~django.views.generic.dates.YearArchiveView` and\n:class:`~django.views.generic.dates.MonthArchiveView` were documented to\nprovide a ``date_list`` sorted in ascending order in the context, like their\nfunction-based predecessors, but it actually was in descending order. In 1.5,\nthe documented order was restored. You may want to add (or remove) the\n``reversed`` keyword when you're iterating on ``date_list`` in a template::\n\n    {% for date in date_list reversed %}\n\n:class:`~django.views.generic.dates.ArchiveIndexView` still provides a\n``date_list`` in descending order.\n\nContext in TemplateView\n~~~~~~~~~~~~~~~~~~~~~~~\n\nFor consistency with the design of the other generic views,\n:class:`~django.views.generic.base.TemplateView` no longer passes a ``params``\ndictionary into the context, instead passing the variables from the URLconf\ndirectly into the context.\n\nNon-form data in HTTP requests\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n:attr:`request.POST <django.http.HttpRequest.POST>` will no longer include data\nposted via HTTP requests with non form-specific content-types in the header.\nIn prior versions, data posted with content-types other than\n``multipart/form-data`` or ``application/x-www-form-urlencoded`` would still\nend up represented in the :attr:`request.POST <django.http.HttpRequest.POST>`\nattribute. Developers wishing to access the raw POST data for these cases,\nshould use the :attr:`request.body <django.http.HttpRequest.body>` attribute\ninstead.\n\nOPTIONS, PUT and DELETE requests in the test client\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nUnlike GET and POST, these HTTP methods aren't implemented by web browsers.\nRather, they're used in APIs, which transfer data in various formats such as\nJSON or XML. Since such requests may contain arbitrary data, Django doesn't\nattempt to decode their body.\n\nHowever, the test client used to build a query string for OPTIONS and DELETE\nrequests like for GET, and a request body for PUT requests like for POST. This\nencoding was arbitrary and inconsistent with Django's behavior when it\nreceives the requests, so it was removed in Django 1.5.\n\nIf you were using the ``data`` parameter in an OPTIONS or a DELETE request,\nyou must convert it to a query string and append it to the ``path`` parameter.\n\nIf you were using the ``data`` parameter in a PUT request without a\n``content_type``, you must encode your data before passing it to the test\nclient and set the ``content_type`` argument.\n\n.. _simplejson-incompatibilities-beta-1:\n\nSystem version of :mod:`simplejson` no longer used\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n:ref:`As explained below <simplejson-deprecation-beta-1>`, Django 1.5 deprecates\n``django.utils.simplejson`` in favor of Python 2.6's built-in :mod:`json`\nmodule. In theory, this change is harmless. Unfortunately, because of\nincompatibilities between versions of :mod:`simplejson`, it may trigger errors\nin some circumstances.\n\nJSON-related features in Django 1.4 always used ``django.utils.simplejson``.\nThis module was actually:\n\n- A system version of :mod:`simplejson`, if one was available (ie. ``import\n  simplejson`` works), if it was more recent than Django's built-in copy or it\n  had the C speedups, or\n- The :mod:`json` module from the standard library, if it was available (ie.\n  Python 2.6 or greater), or\n- A built-in copy of version 2.0.7 of :mod:`simplejson`.\n\nIn Django 1.5, those features use Python's :mod:`json` module, which is based\non version 2.0.9 of :mod:`simplejson`.\n\nThere are no known incompatibilities between Django's copy of version 2.0.7 and\nPython's copy of version 2.0.9. However, there are some incompatibilities\nbetween other versions of :mod:`simplejson`:\n\n- While the :mod:`simplejson` API is documented as always returning unicode\n  strings, the optional C implementation can return a byte string. This was\n  fixed in Python 2.7.\n- :class:`simplejson.JSONEncoder` gained a ``namedtuple_as_object`` keyword\n  argument in version 2.2.\n\nMore information on these incompatibilities is available in `ticket #18023`_.\n\nThe net result is that, if you have installed :mod:`simplejson` and your code\nuses Django's serialization internals directly -- for instance\n``django.core.serializers.json.DjangoJSONEncoder``, the switch from\n:mod:`simplejson` to :mod:`json` could break your code. (In general, changes to\ninternals aren't documented; we're making an exception here.)\n\nAt this point, the maintainers of Django believe that using :mod:`json` from\nthe standard library offers the strongest guarantee of backwards-compatibility.\nThey recommend to use it from now on.\n\n.. _ticket #18023: https://code.djangoproject.com/ticket/18023#comment:10\n\nString types of hasher method parameters\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nIf you have written a :ref:`custom password hasher <auth_password_storage>`,\nyour ``encode()``, ``verify()`` or ``safe_summary()`` methods should accept\nUnicode parameters (``password``, ``salt`` or ``encoded``). If any of the\nhashing methods need byte strings, you can use the\n:func:`~django.utils.encoding.force_bytes` utility to encode the strings.\n\nValidation of previous_page_number and next_page_number\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nWhen using :doc:`object pagination </topics/pagination>`,\nthe ``previous_page_number()`` and ``next_page_number()`` methods of the\n:class:`~django.core.paginator.Page` object did not check if the returned\nnumber was inside the existing page range.\nIt does check it now and raises an :exc:`~django.core.paginator.InvalidPage`\nexception when the number is either too low or too high.\n\nBehavior of autocommit database option on PostgreSQL changed\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nPostgreSQL's autocommit option didn't work as advertised previously. It did\nwork for single transaction block, but after the first block was left the\nautocommit behavior was never restored. This bug is now fixed in 1.5. While\nthis is only a bug fix, it is worth checking your applications behavior if\nyou are using PostgreSQL together with the autocommit option.\n\nSession not saved on 500 responses\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nDjango's session middleware will skip saving the session data if the\nresponse's status code is 500.\n\nEmail checks on failed admin login\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nPrior to Django 1.5, if you attempted to log into the admin interface and\nmistakenly used your email address instead of your username, the admin\ninterface would provide a warning advising that your email address was\nnot your username. In Django 1.5, the introduction of\n:ref:`custom User models <auth-custom-user>` has required the removal of this\nwarning. This doesn't change the login behavior of the admin site; it only\naffects the warning message that is displayed under one particular mode of\nlogin failure.\n\nChanges in tests execution\n~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nSome changes have been introduced in the execution of tests that might be\nbackward-incompatible for some testing setups:\n\nDatabase flushing in ``django.test.TransactionTestCase``\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nPreviously, the test database was truncated *before* each test run in a\n:class:`~django.test.TransactionTestCase`.\n\nIn order to be able to run unit tests in any order and to make sure they are\nalways isolated from each other, :class:`~django.test.TransactionTestCase` will\nnow reset the database *after* each test run instead.\n\nNo more implicit DB sequences reset\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n:class:`~django.test.TransactionTestCase` tests used to reset primary key\nsequences automatically together with the database flushing actions described\nabove.\n\nThis has been changed so no sequences are implicitly reset. This can cause\n:class:`~django.test.TransactionTestCase` tests that depend on hard-coded\nprimary key values to break.\n\nThe new :attr:`~django.test.TransactionTestCase.reset_sequences` attribute can\nbe used to force the old behavior for :class:`~django.test.TransactionTestCase`\nthat might need it.\n\nOrdering of tests\n^^^^^^^^^^^^^^^^^\n\nIn order to make sure all ``TestCase`` code starts with a clean database,\ntests are now executed in the following order:\n\n* First, all unittests (including :class:`unittest.TestCase`,\n  :class:`~django.test.SimpleTestCase`, :class:`~django.test.TestCase` and\n  :class:`~django.test.TransactionTestCase`) are run with no particular ordering\n  guaranteed nor enforced among them.\n\n* Then any other tests (e.g. doctests) that may alter the database without\n  restoring it to its original state are run.\n\nThis should not cause any problems unless you have existing doctests which\nassume a :class:`~django.test.TransactionTestCase` executed earlier left some\ndatabase state behind or unit tests that rely on some form of state being\npreserved after the execution of other tests. Such tests are already very\nfragile, and must now be changed to be able to run independently.\n\n`cleaned_data` dictionary kept for invalid forms\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe :attr:`~django.forms.Form.cleaned_data` dictionary is now always present\nafter form validation. When the form doesn't validate, it contains only the\nfields that passed validation. You should test the success of the validation\nwith the :meth:`~django.forms.Form.is_valid()` method and not with the\npresence or absence of the :attr:`~django.forms.Form.cleaned_data` attribute\non the form.\n\nBehavior of :djadmin:`syncdb` with multiple databases\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n:djadmin:`syncdb` now queries the database routers to determine if content\ntypes (when :mod:`~django.contrib.contenttypes` is enabled) and permissions\n(when :mod:`~django.contrib.auth` is enabled) should be created in the target\ndatabase. Previously, it created them in the default database, even when\nanother database was specified with the :djadminopt:`--database` option.\n\nIf you use :djadmin:`syncdb` on multiple databases, you should ensure that\nyour routers allow synchronizing content types and permissions to only one of\nthem. See the docs on the :ref:`behavior of contrib apps with multiple\ndatabases <contrib_app_multiple_databases>` for more information.\n\nMiscellaneous\n~~~~~~~~~~~~~\n\n* :class:`django.forms.ModelMultipleChoiceField` now returns an empty\n  ``QuerySet`` as the empty value instead of an empty list.\n\n* :func:`~django.utils.http.int_to_base36` properly raises a\n  :exc:`~exceptions.TypeError` instead of :exc:`~exceptions.ValueError` for\n  non-integer inputs.\n\n* The ``slugify`` template filter is now available as a standard python\n  function at :func:`django.utils.text.slugify`. Similarly, ``remove_tags`` is\n  available at :func:`django.utils.html.remove_tags`.\n\n* Uploaded files are no longer created as executable by default. If you need\n  them to be executable change :setting:`FILE_UPLOAD_PERMISSIONS` to your\n  needs. The new default value is ``0666`` (octal) and the current umask value\n  is first masked out.\n\n* The :ref:`F() expressions <query-expressions>` supported bitwise operators by\n  ``&`` and ``|``. These operators are now available using ``.bitand()`` and\n  ``.bitor()`` instead. The removal of ``&`` and ``|`` was done to be consistent with\n  :ref:`Q() expressions <complex-lookups-with-q>` and ``QuerySet`` combining where\n  the operators are used as boolean AND and OR operators.\n\n* In a ``filter()`` call, when :ref:`F() expressions <query-expressions>`\n  contained lookups spanning multi-valued relations, they didn't always reuse\n  the same relations as other lookups along the same chain. This was changed,\n  and now F() expressions will always use the same relations as other lookups\n  within the same ``filter()`` call.\n\n* The :ttag:`csrf_token` template tag is no longer enclosed in a div. If you need\n  HTML validation against pre-HTML5 Strict DTDs, you should add a div around it\n  in your pages.\n\n* The template tags library ``adminmedia``, which only contained the\n  deprecated template tag ``{% admin_media_prefix %}``, was removed.\n  Attempting to load it with ``{% load adminmedia %}`` will fail. If your\n  templates still contain that line you must remove it.\n\nFeatures deprecated in 1.5\n==========================\n\n.. _simplejson-deprecation-beta-1:\n\n:setting:`AUTH_PROFILE_MODULE`\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nWith the introduction of :ref:`custom User models <auth-custom-user>`, there is\nno longer any need for a built-in mechanism to store user profile data.\n\nYou can still define user profiles models that have a one-to-one relation with\nthe User model - in fact, for many applications needing to associate data with\na User account, this will be an appropriate design pattern to follow. However,\nthe :setting:`AUTH_PROFILE_MODULE` setting, and the\n:meth:`~django.contrib.auth.models.User.get_profile()` method for accessing\nthe user profile model, should not be used any longer.\n\nStreaming behavior of :class:`~django.http.HttpResponse`\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nDjango 1.5 deprecates the ability to stream a response by passing an iterator\nto :class:`~django.http.HttpResponse`. If you rely on this behavior, switch to\n:class:`~django.http.StreamingHttpResponse`. See\n:ref:`explicit-streaming-responses-beta-1` above.\n\nIn Django 1.7 and above, the iterator will be consumed immediately by\n:class:`~django.http.HttpResponse`.\n\n``django.utils.simplejson``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nSince Django 1.5 drops support for Python 2.5, we can now rely on the\n:mod:`json` module being available in Python's standard library, so we've\nremoved our own copy of :mod:`simplejson`. You should now import :mod:`json`\ninstead of ``django.utils.simplejson``.\n\nUnfortunately, this change might have unwanted side-effects, because of\nincompatibilities between versions of :mod:`simplejson` -- see the\n:ref:`backwards-incompatible changes <simplejson-incompatibilities-beta-1>` section.\nIf you rely on features added to :mod:`simplejson` after it became Python's\n:mod:`json`, you should import :mod:`simplejson` explicitly.\n\n``django.utils.encoding.StrAndUnicode``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe :class:`~django.utils.encoding.StrAndUnicode` mix-in has been deprecated.\nDefine a ``__str__`` method and apply the\n:func:`~django.utils.encoding.python_2_unicode_compatible` decorator instead.\n\n``django.utils.itercompat.product``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe ``django.utils.itercompat.product`` function has been deprecated. Use\nthe built-in :func:`itertools.product` instead.\n\n``django.utils.markup``\n~~~~~~~~~~~~~~~~~~~~~~~\n\nThe markup contrib module has been deprecated and will follow an accelerated\ndeprecation schedule. Direct use of python markup libraries or 3rd party tag\nlibraries is preferred to Django maintaining this functionality in the\nframework.\n\n``cleanup`` management command\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe :djadmin:`cleanup` management command has been deprecated and replaced by\n:djadmin:`clearsessions`.\n\n``daily_cleanup.py`` script\n~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe undocumented ``daily_cleanup.py`` script has been deprecated. Use the\n:djadmin:`clearsessions` management command instead.\n\n``depth`` keyword argument in ``select_related``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe ``depth`` keyword argument in\n:meth:`~django.db.models.query.QuerySet.select_related` has been deprecated.\nYou should use field names instead.\n"
  },
  {
    "path": "Django-1.5.1/docs/releases/1.5.1.txt",
    "content": "==========================\nDjango 1.5.1 release notes\n==========================\n\n*March 28, 2013*\n\nThis is Django 1.5.1, a bugfix release for Django 1.5. It's completely backwards\ncompatible with Django 1.5, but includes a handful of fixes.\n\nThe biggest fix is for a memory leak introduced in Django 1.5. Under certain\ncircumstances, repeated iteration over querysets could leak memory - sometimes\nquite a bit of it. If you'd like more information, the details are in\n`our ticket tracker`__ (and in `a related issue`__ in Python itself).\n\n__ https://code.djangoproject.com/ticket/19895\n__ http://bugs.python.org/issue17468\n\nIf you've noticed memory problems under Django 1.5, upgrading to 1.5.1 should\nfix those issues.\n\nDjango 1.5.1 also includes a couple smaller fixes:\n\n* Module-level warnings emitted during tests are no longer silently hidden\n  (`#18985`__).\n* Prevented filtering on password hashes in the user admin (`#20078`__).\n\n__ https://code.djangoproject.com/ticket/18985\n__ https://code.djangoproject.com/ticket/20078\n"
  },
  {
    "path": "Django-1.5.1/docs/releases/1.5.txt",
    "content": "========================\nDjango 1.5 release notes\n========================\n\n*February 26, 2013*\n\nWelcome to Django 1.5!\n\nThese release notes cover the `new features`_, as well\nas some `backwards incompatible changes`_ you'll want to be aware of\nwhen upgrading from Django 1.4 or older versions. We've also dropped some\nfeatures, which are detailed in :doc:`our deprecation plan\n</internals/deprecation>`, and we've `begun the deprecation process for some\nfeatures`_.\n\n.. _`new features`: `What's new in Django 1.5`_\n.. _`backwards incompatible changes`: `Backwards incompatible changes in 1.5`_\n.. _`begun the deprecation process for some features`: `Features deprecated in 1.5`_\n\nOverview\n========\n\nThe biggest new feature in Django 1.5 is the `configurable User model`_. Before\nDjango 1.5, applications that wanted to use Django's auth framework\n(:mod:`django.contrib.auth`) were forced to use Django's definition of a \"user\".\nIn Django 1.5, you can now swap out the ``User`` model for one that you write\nyourself. This could be a simple extension to the existing ``User`` model -- for\nexample, you could add a Twitter or Facebook ID field -- or you could completely\nreplace the ``User`` with one totally customized for your site.\n\nDjango 1.5 is also the first release with `Python 3 support`_! We're labeling\nthis support \"experimental\" because we don't yet consider it production-ready,\nbut everything's in place for you to start porting your apps to Python 3.\nOur next release, Django 1.6, will support Python 3 without reservations.\n\nOther notable new features in Django 1.5 include:\n\n* `Support for saving a subset of model's fields`_ -\n  :meth:`Model.save() <django.db.models.Model.save()>` now accepts an\n  ``update_fields`` argument, letting you specify which fields are\n  written back to the database when you call ``save()``. This can help\n  in high-concurrency operations, and can improve performance.\n\n* Better `support for streaming responses <#explicit-streaming-responses>`_ via\n  the new  :class:`~django.http.StreamingHttpResponse` response class.\n\n* `GeoDjango`_ now supports PostGIS 2.0.\n\n* ... and more; `see below <#what-s-new-in-django-1-5>`_.\n\nWherever possible we try to introduce new features in a backwards-compatible\nmanner per :doc:`our API stability policy </misc/api-stability>`.\nHowever, as with previous releases, Django 1.5 ships with some minor\n`backwards incompatible changes`_; people upgrading from previous versions\nof Django should read that list carefully.\n\nOne deprecated feature worth noting is the shift to \"new-style\" :ttag:`url` tag.\nPrior to Django 1.3, syntax like ``{% url myview %}`` was interpreted\nincorrectly (Django considered ``\"myview\"`` to be a literal name of a view, not\na template variable named ``myview``). Django 1.3 and above introduced the\n``{% load url from future %}`` syntax to bring in the corrected behavior where\n``myview`` was seen as a variable.\n\nThe upshot of this is that if you are not using ``{% load url from future %}``\nin your templates, you'll need to change tags like ``{% url myview %}`` to\n``{% url \"myview\" %}``. If you *were* using ``{% load url from future %}`` you\ncan simply remove that line under Django 1.5\n\nPython compatibility\n====================\n\nDjango 1.5 requires Python 2.6.5 or above, though we **highly recommend**\nPython 2.7.3 or above. Support for Python 2.5 and below has been dropped.\n\nThis change should affect only a small number of Django users, as most\noperating-system vendors today are shipping Python 2.6 or newer as their default\nversion. If you're still using Python 2.5, however, you'll need to stick to\nDjango 1.4 until you can upgrade your Python version. Per :doc:`our support\npolicy </internals/release-process>`, Django 1.4 will continue to receive\nsecurity support until the release of Django 1.6.\n\nDjango 1.5 does not run on a Jython final release, because Jython's latest\nrelease doesn't currently support Python 2.6. However, Jython currently does\noffer an alpha release featuring 2.7 support, and Django 1.5 supports that alpha\nrelease.\n\nPython 3 support\n~~~~~~~~~~~~~~~~\n\nDjango 1.5 introduces support for Python 3 - specifically, Python\n3.2 and above. This comes in the form of a **single** codebase; you don't\nneed to install a different version of Django on Python 3. This means that\nyou can write applications targeted for just Python 2, just Python 3, or single\napplications that support both platforms.\n\nHowever, we're labeling this support \"experimental\" for now: although it's\nreceived extensive testing via our automated test suite, it's received very\nlittle real-world testing. We've done our best to eliminate bugs, but we can't\nbe sure we covered all possible uses of Django.\n\nSome features of Django aren't available because they depend on third-party\nsoftware that hasn't been ported to Python 3 yet, including:\n\n- the MySQL database backend (depends on MySQLdb)\n- :class:`~django.db.models.ImageField` (depends on PIL)\n- :class:`~django.test.LiveServerTestCase` (depends on Selenium WebDriver)\n\nFurther, Django's more than a web framework; it's an ecosystem of pluggable\ncomponents. At this point, very few third-party applications have been ported\nto Python 3, so it's unlikely that a real-world application will have all its\ndependencies satisfied under Python 3.\n\nThus, we're recommending that Django 1.5 not be used in production under Python\n3. Instead, use this opportunity to begin :doc:`porting applications to Python 3\n</topics/python3>`. If you're an author of a pluggable component, we encourage you\nto start porting now.\n\nWe plan to offer first-class, production-ready support for Python 3 in our next\nrelease, Django 1.6.\n\nWhat's new in Django 1.5\n========================\n\nConfigurable User model\n~~~~~~~~~~~~~~~~~~~~~~~\n\nIn Django 1.5, you can now use your own model as the store for user-related\ndata. If your project needs a username with more than 30 characters, or if\nyou want to store user's names in a format other than first name/last name,\nor you want to put custom profile information onto your User object, you can\nnow do so.\n\nIf you have a third-party reusable application that references the User model,\nyou may need to make some changes to the way you reference User instances. You\nshould also document any specific features of the User model that your\napplication relies upon.\n\nSee the :ref:`documentation on custom User models <auth-custom-user>` for\nmore details.\n\nSupport for saving a subset of model's fields\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe method :meth:`Model.save() <django.db.models.Model.save()>` has a new\nkeyword argument ``update_fields``. By using this argument it is possible to\nsave only a select list of model's fields. This can be useful for performance\nreasons or when trying to avoid overwriting concurrent changes.\n\nDeferred instances (those loaded by ``.only()`` or ``.defer()``) will\nautomatically save just the loaded fields. If any field is set manually after\nload, that field will also get updated on save.\n\nSee the :meth:`Model.save() <django.db.models.Model.save()>` documentation for\nmore details.\n\nCaching of related model instances\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nWhen traversing relations, the ORM will avoid re-fetching objects that were\npreviously loaded. For example, with the tutorial's models::\n\n    >>> first_poll = Poll.objects.all()[0]\n    >>> first_choice = first_poll.choice_set.all()[0]\n    >>> first_choice.poll is first_poll\n    True\n\nIn Django 1.5, the third line no longer triggers a new SQL query to fetch\n``first_choice.poll``; it was set by the second line.\n\nFor one-to-one relationships, both sides can be cached. For many-to-one\nrelationships, only the single side of the relationship can be cached. This\nis particularly helpful in combination with ``prefetch_related``.\n\n.. _explicit-streaming-responses:\n\nExplicit support for streaming responses\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nBefore Django 1.5, it was possible to create a streaming response by passing\nan iterator to :class:`~django.http.HttpResponse`. But this was unreliable:\nany middleware that accessed the :attr:`~django.http.HttpResponse.content`\nattribute would consume the iterator prematurely.\n\nYou can now explicitly generate a streaming response with the new\n:class:`~django.http.StreamingHttpResponse` class. This class exposes a\n:class:`~django.http.StreamingHttpResponse.streaming_content` attribute which\nis an iterator.\n\nSince :class:`~django.http.StreamingHttpResponse` does not have a ``content``\nattribute, middleware that needs access to the response content must test for\nstreaming responses and behave accordingly. See :ref:`response-middleware` for\nmore information.\n\n``{% verbatim %}`` template tag\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nTo make it easier to deal with javascript templates which collide with Django's\nsyntax, you can now use the :ttag:`verbatim` block tag to avoid parsing the\ntag's content.\n\nRetrieval of ``ContentType`` instances associated with proxy models\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe methods :meth:`ContentTypeManager.get_for_model() <django.contrib.contenttypes.models.ContentTypeManager.get_for_model()>`\nand :meth:`ContentTypeManager.get_for_models() <django.contrib.contenttypes.models.ContentTypeManager.get_for_models()>`\nhave a new keyword argument – respectively ``for_concrete_model`` and ``for_concrete_models``.\nBy passing ``False`` using this argument it is now possible to retrieve the\n:class:`ContentType <django.contrib.contenttypes.models.ContentType>`\nassociated with proxy models.\n\nNew ``view`` variable in class-based views context\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nIn all :doc:`generic class-based views </topics/class-based-views/index>`\n(or any class-based view inheriting from ``ContextMixin``), the context dictionary\ncontains a ``view`` variable that points to the ``View`` instance.\n\nGeoDjango\n~~~~~~~~~\n\n* :class:`~django.contrib.gis.geos.LineString` and\n  :class:`~django.contrib.gis.geos.MultiLineString` GEOS objects now support the\n  :meth:`~django.contrib.gis.geos.GEOSGeometry.interpolate()` and\n  :meth:`~django.contrib.gis.geos.GEOSGeometry.project()` methods\n  (so-called linear referencing).\n\n* The ``wkb`` and ``hex`` properties of\n  :class:`~django.contrib.gis.geos.GEOSGeometry` objects preserve the Z\n  dimension.\n\n* Support for PostGIS 2.0 has been added and support for GDAL < 1.5 has been\n  dropped.\n\nNew tutorials\n~~~~~~~~~~~~~\n\nAdditions to the docs include a revamped :doc:`Tutorial 3</intro/tutorial03>`\nand a new :doc:`tutorial on testing</intro/tutorial05>`. A new section,\n\"Advanced Tutorials\", offers :doc:`How to write reusable apps\n</intro/reusable-apps>` as well as a step-by-step guide for new contributors in\n:doc:`Writing your first patch for Django </intro/contributing>`.\n\nMinor features\n~~~~~~~~~~~~~~\n\nDjango 1.5 also includes several smaller improvements worth noting:\n\n* The template engine now interprets ``True``, ``False`` and ``None`` as the\n  corresponding Python objects.\n\n* :mod:`django.utils.timezone` provides a helper for converting aware\n  datetimes between time zones. See :func:`~django.utils.timezone.localtime`.\n\n* The generic views support OPTIONS requests.\n\n* Management commands do not raise ``SystemExit`` any more when called by code\n  from :ref:`call_command <call-command>`. Any exception raised by the command\n  (mostly :ref:`CommandError <ref-command-exceptions>`) is propagated.\n\n  Moreover, when you output errors or messages in your custom commands, you\n  should now use ``self.stdout.write('message')`` and\n  ``self.stderr.write('error')`` (see the note on\n  :ref:`management commands output <management-commands-output>`).\n\n* The dumpdata management command outputs one row at a time, preventing\n  out-of-memory errors when dumping large datasets.\n\n* In the localflavor for Canada, \"pq\" was added to the acceptable codes for\n  Quebec. It's an old abbreviation.\n\n* The :ref:`receiver <connecting-receiver-functions>` decorator is now able to\n  connect to more than one signal by supplying a list of signals.\n\n* In the admin, you can now filter users by groups which they are members of.\n\n* :meth:`QuerySet.bulk_create()\n  <django.db.models.query.QuerySet.bulk_create>` now has a batch_size\n  argument. By default the batch_size is unlimited except for SQLite where\n  single batch is limited so that 999 parameters per query isn't exceeded.\n\n* The :setting:`LOGIN_URL` and :setting:`LOGIN_REDIRECT_URL` settings now also\n  accept view function names and\n  :ref:`named URL patterns <naming-url-patterns>`. This allows you to reduce\n  configuration duplication. More information can be found in the\n  :func:`~django.contrib.auth.decorators.login_required` documentation.\n\n* Django now provides a mod_wsgi :doc:`auth handler\n  </howto/deployment/wsgi/apache-auth>`.\n\n* The :meth:`QuerySet.delete() <django.db.models.query.QuerySet.delete>`\n  and :meth:`Model.delete() <django.db.models.Model.delete()>` can now take\n  fast-path in some cases. The fast-path allows for less queries and less\n  objects fetched into memory. See :meth:`QuerySet.delete()\n  <django.db.models.query.QuerySet.delete>` for details.\n\n* An instance of :class:`~django.core.urlresolvers.ResolverMatch` is stored on\n  the request as ``resolver_match``.\n\n* By default, all logging messages reaching the ``django`` logger when\n  :setting:`DEBUG` is ``True`` are sent to the console (unless you redefine the\n  logger in your :setting:`LOGGING` setting).\n\n* When using :class:`~django.template.RequestContext`, it is now possible to\n  look up permissions by using ``{% if 'someapp.someperm' in perms %}``\n  in templates.\n\n* It's not required any more to have ``404.html`` and ``500.html`` templates in\n  the root templates directory. Django will output some basic error messages for\n  both situations when those templates are not found. Of course, it's still\n  recommended as good practice to provide those templates in order to present\n  pretty error pages to the user.\n\n* :mod:`django.contrib.auth` provides a new signal that is emitted\n  whenever a user fails to login successfully. See\n  :data:`~django.contrib.auth.signals.user_login_failed`\n\n* The loaddata management command now supports an\n  :djadminopt:`--ignorenonexistent` option to ignore data for fields that no\n  longer exist.\n\n* :meth:`~django.test.SimpleTestCase.assertXMLEqual` and\n  :meth:`~django.test.SimpleTestCase.assertXMLNotEqual` new assertions allow\n  you to test equality for XML content at a semantic level, without caring for\n  syntax differences (spaces, attribute order, etc.).\n\n* RemoteUserMiddleware now forces logout when the REMOTE_USER header\n  disappears during the same browser session.\n\n* The :ref:`cache-based session backend <cached-sessions-backend>` can store\n  session data in a non-default cache.\n\n* Multi-column indexes can now be created on models. Read the\n  :attr:`~django.db.models.Options.index_together` documentation for more\n  information.\n\n* During Django's logging configuration verbose Deprecation warnings are\n  enabled and warnings are captured into the logging system. Logged warnings\n  are routed through the ``console`` logging handler, which by default requires\n  :setting:`DEBUG` to be True for output to be generated. The result is that\n  DeprecationWarnings should be printed to the console in development\n  environments the way they have been in Python versions < 2.7.\n\n* The API for :meth:`django.contrib.admin.ModelAdmin.message_user` method has\n  been modified to accept additional arguments adding capabilities similar to\n  :func:`django.contrib.messages.add_message`. This is useful for generating\n  error messages from admin actions.\n\n* The admin's list filters can now be customized per-request thanks to the new\n  :meth:`django.contrib.admin.ModelAdmin.get_list_filter` method.\n\nBackwards incompatible changes in 1.5\n=====================================\n\n.. warning::\n\n    In addition to the changes outlined in this section, be sure to review the\n    :doc:`deprecation plan </internals/deprecation>` for any features that\n    have been removed. If you haven't updated your code within the\n    deprecation timeline for a given feature, its removal may appear as a\n    backwards incompatible change.\n\n``ALLOWED_HOSTS`` required in production\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe new :setting:`ALLOWED_HOSTS` setting validates the request's ``Host``\nheader and protects against host-poisoning attacks. This setting is now\nrequired whenever :setting:`DEBUG` is ``False``, or else\n:meth:`django.http.HttpRequest.get_host()` will raise\n:exc:`~django.core.exceptions.SuspiciousOperation`. For more details see the\n:setting:`full documentation<ALLOWED_HOSTS>` for the new setting.\n\nManagers on abstract models\n~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nAbstract models are able to define a custom manager, and that manager\n:ref:`will be inherited by any concrete models extending the abstract model\n<custom-managers-and-inheritance>`. However, if you try to use the abstract\nmodel to call a method on the manager, an exception will now be raised.\nPreviously, the call would have been permitted, but would have failed as soon\nas any database operation was attempted (usually with a \"table does not exist\"\nerror from the database).\n\nIf you have functionality on a manager that you have been invoking using\nthe abstract class, you should migrate that logic to a Python\n``staticmethod`` or ``classmethod`` on the abstract class.\n\nContext in year archive class-based views\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nFor consistency with the other date-based generic views,\n:class:`~django.views.generic.dates.YearArchiveView` now passes ``year`` in\nthe context as a :class:`datetime.date` rather than a string.  If you are\nusing ``{{ year }}`` in your templates, you must replace it with ``{{\nyear|date:\"Y\" }}``.\n\n``next_year`` and ``previous_year`` were also added in the context. They are\ncalculated according to ``allow_empty`` and ``allow_future``.\n\nContext in year and month archive class-based views\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n:class:`~django.views.generic.dates.YearArchiveView` and\n:class:`~django.views.generic.dates.MonthArchiveView` were documented to\nprovide a ``date_list`` sorted in ascending order in the context, like their\nfunction-based predecessors, but it actually was in descending order. In 1.5,\nthe documented order was restored. You may want to add (or remove) the\n``reversed`` keyword when you're iterating on ``date_list`` in a template::\n\n    {% for date in date_list reversed %}\n\n:class:`~django.views.generic.dates.ArchiveIndexView` still provides a\n``date_list`` in descending order.\n\nContext in TemplateView\n~~~~~~~~~~~~~~~~~~~~~~~\n\nFor consistency with the design of the other generic views,\n:class:`~django.views.generic.base.TemplateView` no longer passes a ``params``\ndictionary into the context, instead passing the variables from the URLconf\ndirectly into the context.\n\nNon-form data in HTTP requests\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n:attr:`request.POST <django.http.HttpRequest.POST>` will no longer include data\nposted via HTTP requests with non form-specific content-types in the header.\nIn prior versions, data posted with content-types other than\n``multipart/form-data`` or ``application/x-www-form-urlencoded`` would still\nend up represented in the :attr:`request.POST <django.http.HttpRequest.POST>`\nattribute. Developers wishing to access the raw POST data for these cases,\nshould use the :attr:`request.body <django.http.HttpRequest.body>` attribute\ninstead.\n\n:data:`~django.core.signals.request_finished` signal\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nDjango used to send the :data:`~django.core.signals.request_finished` signal\nas soon as the view function returned a response. This interacted badly with\n:ref:`streaming responses <httpresponse-streaming>` that delay content\ngeneration.\n\nThis signal is now sent after the content is fully consumed by the WSGI\ngateway. This might be backwards incompatible if you rely on the signal being\nfired before sending the response content to the client. If you do, you should\nconsider using a middleware instead.\n\nOPTIONS, PUT and DELETE requests in the test client\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nUnlike GET and POST, these HTTP methods aren't implemented by web browsers.\nRather, they're used in APIs, which transfer data in various formats such as\nJSON or XML. Since such requests may contain arbitrary data, Django doesn't\nattempt to decode their body.\n\nHowever, the test client used to build a query string for OPTIONS and DELETE\nrequests like for GET, and a request body for PUT requests like for POST. This\nencoding was arbitrary and inconsistent with Django's behavior when it\nreceives the requests, so it was removed in Django 1.5.\n\nIf you were using the ``data`` parameter in an OPTIONS or a DELETE request,\nyou must convert it to a query string and append it to the ``path`` parameter.\n\nIf you were using the ``data`` parameter in a PUT request without a\n``content_type``, you must encode your data before passing it to the test\nclient and set the ``content_type`` argument.\n\n.. _simplejson-incompatibilities:\n\nSystem version of :mod:`simplejson` no longer used\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n:ref:`As explained below <simplejson-deprecation>`, Django 1.5 deprecates\n``django.utils.simplejson`` in favor of Python 2.6's built-in :mod:`json`\nmodule. In theory, this change is harmless. Unfortunately, because of\nincompatibilities between versions of :mod:`simplejson`, it may trigger errors\nin some circumstances.\n\nJSON-related features in Django 1.4 always used ``django.utils.simplejson``.\nThis module was actually:\n\n- A system version of :mod:`simplejson`, if one was available (ie. ``import\n  simplejson`` works), if it was more recent than Django's built-in copy or it\n  had the C speedups, or\n- The :mod:`json` module from the standard library, if it was available (ie.\n  Python 2.6 or greater), or\n- A built-in copy of version 2.0.7 of :mod:`simplejson`.\n\nIn Django 1.5, those features use Python's :mod:`json` module, which is based\non version 2.0.9 of :mod:`simplejson`.\n\nThere are no known incompatibilities between Django's copy of version 2.0.7 and\nPython's copy of version 2.0.9. However, there are some incompatibilities\nbetween other versions of :mod:`simplejson`:\n\n- While the :mod:`simplejson` API is documented as always returning unicode\n  strings, the optional C implementation can return a byte string. This was\n  fixed in Python 2.7.\n- :class:`simplejson.JSONEncoder` gained a ``namedtuple_as_object`` keyword\n  argument in version 2.2.\n\nMore information on these incompatibilities is available in `ticket #18023`_.\n\nThe net result is that, if you have installed :mod:`simplejson` and your code\nuses Django's serialization internals directly -- for instance\n``django.core.serializers.json.DjangoJSONEncoder``, the switch from\n:mod:`simplejson` to :mod:`json` could break your code. (In general, changes to\ninternals aren't documented; we're making an exception here.)\n\nAt this point, the maintainers of Django believe that using :mod:`json` from\nthe standard library offers the strongest guarantee of backwards-compatibility.\nThey recommend to use it from now on.\n\n.. _ticket #18023: https://code.djangoproject.com/ticket/18023#comment:10\n\nString types of hasher method parameters\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nIf you have written a :ref:`custom password hasher <auth_password_storage>`,\nyour ``encode()``, ``verify()`` or ``safe_summary()`` methods should accept\nUnicode parameters (``password``, ``salt`` or ``encoded``). If any of the\nhashing methods need byte strings, you can use the\n:func:`~django.utils.encoding.force_bytes` utility to encode the strings.\n\nValidation of previous_page_number and next_page_number\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nWhen using :doc:`object pagination </topics/pagination>`,\nthe ``previous_page_number()`` and ``next_page_number()`` methods of the\n:class:`~django.core.paginator.Page` object did not check if the returned\nnumber was inside the existing page range.\nIt does check it now and raises an :exc:`~django.core.paginator.InvalidPage`\nexception when the number is either too low or too high.\n\nBehavior of autocommit database option on PostgreSQL changed\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nPostgreSQL's autocommit option didn't work as advertised previously. It did\nwork for single transaction block, but after the first block was left the\nautocommit behavior was never restored. This bug is now fixed in 1.5. While\nthis is only a bug fix, it is worth checking your applications behavior if\nyou are using PostgreSQL together with the autocommit option.\n\nSession not saved on 500 responses\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nDjango's session middleware will skip saving the session data if the\nresponse's status code is 500.\n\nEmail checks on failed admin login\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nPrior to Django 1.5, if you attempted to log into the admin interface and\nmistakenly used your email address instead of your username, the admin\ninterface would provide a warning advising that your email address was\nnot your username. In Django 1.5, the introduction of\n:ref:`custom User models <auth-custom-user>` has required the removal of this\nwarning. This doesn't change the login behavior of the admin site; it only\naffects the warning message that is displayed under one particular mode of\nlogin failure.\n\nChanges in tests execution\n~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nSome changes have been introduced in the execution of tests that might be\nbackward-incompatible for some testing setups:\n\nDatabase flushing in ``django.test.TransactionTestCase``\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nPreviously, the test database was truncated *before* each test run in a\n:class:`~django.test.TransactionTestCase`.\n\nIn order to be able to run unit tests in any order and to make sure they are\nalways isolated from each other, :class:`~django.test.TransactionTestCase` will\nnow reset the database *after* each test run instead.\n\nNo more implicit DB sequences reset\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n:class:`~django.test.TransactionTestCase` tests used to reset primary key\nsequences automatically together with the database flushing actions described\nabove.\n\nThis has been changed so no sequences are implicitly reset. This can cause\n:class:`~django.test.TransactionTestCase` tests that depend on hard-coded\nprimary key values to break.\n\nThe new :attr:`~django.test.TransactionTestCase.reset_sequences` attribute can\nbe used to force the old behavior for :class:`~django.test.TransactionTestCase`\nthat might need it.\n\nOrdering of tests\n^^^^^^^^^^^^^^^^^\n\nIn order to make sure all ``TestCase`` code starts with a clean database,\ntests are now executed in the following order:\n\n* First, all unittests (including :class:`unittest.TestCase`,\n  :class:`~django.test.SimpleTestCase`, :class:`~django.test.TestCase` and\n  :class:`~django.test.TransactionTestCase`) are run with no particular ordering\n  guaranteed nor enforced among them.\n\n* Then any other tests (e.g. doctests) that may alter the database without\n  restoring it to its original state are run.\n\nThis should not cause any problems unless you have existing doctests which\nassume a :class:`~django.test.TransactionTestCase` executed earlier left some\ndatabase state behind or unit tests that rely on some form of state being\npreserved after the execution of other tests. Such tests are already very\nfragile, and must now be changed to be able to run independently.\n\n`cleaned_data` dictionary kept for invalid forms\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe :attr:`~django.forms.Form.cleaned_data` dictionary is now always present\nafter form validation. When the form doesn't validate, it contains only the\nfields that passed validation. You should test the success of the validation\nwith the :meth:`~django.forms.Form.is_valid()` method and not with the\npresence or absence of the :attr:`~django.forms.Form.cleaned_data` attribute\non the form.\n\nBehavior of :djadmin:`syncdb` with multiple databases\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n:djadmin:`syncdb` now queries the database routers to determine if content\ntypes (when :mod:`~django.contrib.contenttypes` is enabled) and permissions\n(when :mod:`~django.contrib.auth` is enabled) should be created in the target\ndatabase. Previously, it created them in the default database, even when\nanother database was specified with the :djadminopt:`--database` option.\n\nIf you use :djadmin:`syncdb` on multiple databases, you should ensure that\nyour routers allow synchronizing content types and permissions to only one of\nthem. See the docs on the :ref:`behavior of contrib apps with multiple\ndatabases <contrib_app_multiple_databases>` for more information.\n\nXML deserializer will not parse documents with a DTD\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nIn order to prevent exposure to attacks related to external entity references\nand entity expansion, the XML model deserializer now refuses to parse XML\ndocuments containing a DTD (DOCTYPE definition). Since the XML serializer does\nnot output a DTD, this will not impact typical usage, only cases where\ncustom-created XML documents are passed to Django's model deserializer.\n\nFormsets default ``max_num``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nA (default) value of ``None`` for the ``max_num`` argument to a formset factory\nno longer defaults to allowing any number of forms in the formset. Instead, in\norder to prevent memory-exhaustion attacks, it now defaults to a limit of 1000\nforms. This limit can be raised by explicitly setting a higher value for\n``max_num``.\n\nMiscellaneous\n~~~~~~~~~~~~~\n\n* :class:`django.forms.ModelMultipleChoiceField` now returns an empty\n  ``QuerySet`` as the empty value instead of an empty list.\n\n* :func:`~django.utils.http.int_to_base36` properly raises a\n  :exc:`~exceptions.TypeError` instead of :exc:`~exceptions.ValueError` for\n  non-integer inputs.\n\n* The ``slugify`` template filter is now available as a standard python\n  function at :func:`django.utils.text.slugify`. Similarly, ``remove_tags`` is\n  available at :func:`django.utils.html.remove_tags`.\n\n* Uploaded files are no longer created as executable by default. If you need\n  them to be executable change :setting:`FILE_UPLOAD_PERMISSIONS` to your\n  needs. The new default value is ``0666`` (octal) and the current umask value\n  is first masked out.\n\n* The :ref:`F() expressions <query-expressions>` supported bitwise operators by\n  ``&`` and ``|``. These operators are now available using ``.bitand()`` and\n  ``.bitor()`` instead. The removal of ``&`` and ``|`` was done to be consistent with\n  :ref:`Q() expressions <complex-lookups-with-q>` and ``QuerySet`` combining where\n  the operators are used as boolean AND and OR operators.\n\n* In a ``filter()`` call, when :ref:`F() expressions <query-expressions>`\n  contained lookups spanning multi-valued relations, they didn't always reuse\n  the same relations as other lookups along the same chain. This was changed,\n  and now F() expressions will always use the same relations as other lookups\n  within the same ``filter()`` call.\n\n* The :ttag:`csrf_token` template tag is no longer enclosed in a div. If you need\n  HTML validation against pre-HTML5 Strict DTDs, you should add a div around it\n  in your pages.\n\n* The template tags library ``adminmedia``, which only contained the\n  deprecated template tag ``{% admin_media_prefix %}``, was removed.\n  Attempting to load it with ``{% load adminmedia %}`` will fail. If your\n  templates still contain that line you must remove it.\n\n* Because of an implementation oversight, it was possible to use\n  :doc:`django.contrib.redirects </ref/contrib/redirects>` without enabling\n  :doc:`django.contrib.sites </ref/contrib/sites>`. This isn't allowed any\n  longer. If you're using ``django.contrib.redirects``, make sure\n  :setting:`INSTALLED_APPS` contains ``django.contrib.sites``.\n\nFeatures deprecated in 1.5\n==========================\n\n``django.contrib.localflavor``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe localflavor contrib app has been split into separate packages.\n``django.contrib.localflavor`` itself will be removed in Django 1.6, after an\n:ref:`accelerated deprecation <localflavor-deprecation-policy>`. The docs\nprovide :ref:`migration instructions <localflavor-how-to-migrate>`.\n\nThe new packages are available :ref:`on Github <localflavor-packages>`. The\ncore team cannot efficiently maintain these packages in the long term — it\nspans just a dozen countries at this time; similar to translations, maintenance\nwill be handed over to interested members of the community.\n\n``django.contrib.markup``\n~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe markup contrib module has been deprecated and will follow an accelerated\ndeprecation schedule. Direct use of python markup libraries or 3rd party tag\nlibraries is preferred to Django maintaining this functionality in the\nframework.\n\n:setting:`AUTH_PROFILE_MODULE`\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nWith the introduction of :ref:`custom User models <auth-custom-user>`, there is\nno longer any need for a built-in mechanism to store user profile data.\n\nYou can still define user profiles models that have a one-to-one relation with\nthe User model - in fact, for many applications needing to associate data with\na User account, this will be an appropriate design pattern to follow. However,\nthe :setting:`AUTH_PROFILE_MODULE` setting, and the\n:meth:`~django.contrib.auth.models.User.get_profile()` method for accessing\nthe user profile model, should not be used any longer.\n\nStreaming behavior of :class:`~django.http.HttpResponse`\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nDjango 1.5 deprecates the ability to stream a response by passing an iterator\nto :class:`~django.http.HttpResponse`. If you rely on this behavior, switch to\n:class:`~django.http.StreamingHttpResponse`. See\n:ref:`explicit-streaming-responses` above.\n\nIn Django 1.7 and above, the iterator will be consumed immediately by\n:class:`~django.http.HttpResponse`.\n\n.. _simplejson-deprecation:\n\n``django.utils.simplejson``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nSince Django 1.5 drops support for Python 2.5, we can now rely on the\n:mod:`json` module being available in Python's standard library, so we've\nremoved our own copy of :mod:`simplejson`. You should now import :mod:`json`\ninstead of ``django.utils.simplejson``.\n\nUnfortunately, this change might have unwanted side-effects, because of\nincompatibilities between versions of :mod:`simplejson` -- see the\n:ref:`backwards-incompatible changes <simplejson-incompatibilities>` section.\nIf you rely on features added to :mod:`simplejson` after it became Python's\n:mod:`json`, you should import :mod:`simplejson` explicitly.\n\n``django.utils.encoding.StrAndUnicode``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe :class:`~django.utils.encoding.StrAndUnicode` mix-in has been deprecated.\nDefine a ``__str__`` method and apply the\n:func:`~django.utils.encoding.python_2_unicode_compatible` decorator instead.\n\n``django.utils.itercompat.product``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe ``django.utils.itercompat.product`` function has been deprecated. Use\nthe built-in :func:`itertools.product` instead.\n\n``cleanup`` management command\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe :djadmin:`cleanup` management command has been deprecated and replaced by\n:djadmin:`clearsessions`.\n\n``daily_cleanup.py`` script\n~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe undocumented ``daily_cleanup.py`` script has been deprecated. Use the\n:djadmin:`clearsessions` management command instead.\n\n``depth`` keyword argument in ``select_related``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe ``depth`` keyword argument in\n:meth:`~django.db.models.query.QuerySet.select_related` has been deprecated.\nYou should use field names instead.\n"
  },
  {
    "path": "Django-1.5.1/docs/releases/index.txt",
    "content": "=============\nRelease notes\n=============\n\nRelease notes for the official Django releases. Each release note will tell you\nwhat's new in each version, and will also describe any backwards-incompatible\nchanges made in that version.\n\nFor those upgrading to a new version of Django, you will need to check\nall the backwards-incompatible changes and deprecated features for\neach 'final' release from the one after your current Django version,\nup to and including the new version.\n\nFinal releases\n==============\n\n.. _development_release_notes:\n\n1.5 release\n-----------\n.. toctree::\n   :maxdepth: 1\n\n   1.5.1\n   1.5\n\n1.4 release\n-----------\n.. toctree::\n   :maxdepth: 1\n\n   1.4.2\n   1.4.1\n   1.4\n\n1.3 release\n-----------\n.. toctree::\n   :maxdepth: 1\n\n   1.3.2\n   1.3.1\n   1.3\n\n1.2 release\n-----------\n.. toctree::\n   :maxdepth: 1\n\n   1.2.7\n   1.2.6\n   1.2.5\n   1.2.4\n   1.2.3\n   1.2.2\n   1.2.1\n   1.2\n\n1.1 release\n-----------\n.. toctree::\n   :maxdepth: 1\n\n   1.1.4\n   1.1.3\n   1.1.2\n   1.1\n\n1.0 release\n-----------\n.. toctree::\n   :maxdepth: 1\n\n   1.0.2\n   1.0.1\n   1.0\n\nPre-1.0 releases\n----------------\n.. toctree::\n   :maxdepth: 1\n\n   0.96\n   0.95\n\nDevelopment releases\n====================\n\nThese notes are retained for historical purposes. If you are upgrading\nbetween formal Django releases, you don't need to worry about these\nnotes.\n\n.. toctree::\n   :maxdepth: 1\n\n   1.5-beta-1\n   1.5-alpha-1\n   1.4-beta-1\n   1.4-alpha-1\n   1.3-beta-1\n   1.3-alpha-1\n   1.2-rc-1\n   1.2-beta-1\n   1.2-alpha-1\n   1.1-rc-1\n   1.1-beta-1\n   1.1-alpha-1\n   1.0-beta-2\n   1.0-beta\n   1.0-alpha-2\n   1.0-alpha-1\n"
  },
  {
    "path": "Django-1.5.1/docs/topics/auth/customizing.txt",
    "content": "====================================\nCustomizing authentication in Django\n====================================\n\nThe authentication that comes with Django is good enough for most common cases,\nbut you may have needs not met by the out-of-the-box defaults. To customize\nauthentication to your projects needs involves understanding what points of the\nprovided system are extendible or replaceable. This document provides details\nabout how the auth system can be customized.\n\n:ref:`Authentication backends <authentication-backends>` provide an extensible\nsystem for when a username and password stored with the User model need\nto be authenticated against a different service than Django's default.\n\nYou can give your models :ref:`custom permissions <custom-permissions>` that can be\nchecked through Django's authorization system.\n\nYou can :ref:`extend <extending-user>` the default User model, or :ref:`substitute\n<auth-custom-user>` a completely customized model.\n\n.. _authentication-backends:\n\nOther authentication sources\n============================\n\nThere may be times you have the need to hook into another authentication source\n-- that is, another source of usernames and passwords or authentication\nmethods.\n\nFor example, your company may already have an LDAP setup that stores a username\nand password for every employee. It'd be a hassle for both the network\nadministrator and the users themselves if users had separate accounts in LDAP\nand the Django-based applications.\n\nSo, to handle situations like this, the Django authentication system lets you\nplug in other authentication sources. You can override Django's default\ndatabase-based scheme, or you can use the default system in tandem with other\nsystems.\n\nSee the `authentication backend reference\n<authentication-backends-reference>` for information on the authentication\nbackends included with Django.\n\nSpecifying authentication backends\n----------------------------------\n\nBehind the scenes, Django maintains a list of \"authentication backends\" that it\nchecks for authentication. When somebody calls\n:func:`django.contrib.auth.authenticate()` -- as described in :ref:`How to log\na user in <how-to-log-a-user-in>` above -- Django tries authenticating across\nall of its authentication backends. If the first authentication method fails,\nDjango tries the second one, and so on, until all backends have been attempted.\n\nThe list of authentication backends to use is specified in the\n:setting:`AUTHENTICATION_BACKENDS` setting. This should be a tuple of Python\npath names that point to Python classes that know how to authenticate. These\nclasses can be anywhere on your Python path.\n\nBy default, :setting:`AUTHENTICATION_BACKENDS` is set to::\n\n    ('django.contrib.auth.backends.ModelBackend',)\n\nThat's the basic authentication backend that checks the Django users database\nand queries the built-in permissions. It does not provide protection against\nbrute force attacks via any rate limiting mechanism. You may either implement\nyour own rate limiting mechanism in a custom auth backend, or use the\nmechanisms provided by most Web servers.\n\nThe order of :setting:`AUTHENTICATION_BACKENDS` matters, so if the same\nusername and password is valid in multiple backends, Django will stop\nprocessing at the first positive match.\n\n.. note::\n\n    Once a user has authenticated, Django stores which backend was used to\n    authenticate the user in the user's session, and re-uses the same backend\n    for the duration of that session whenever access to the currently\n    authenticated user is needed. This effectively means that authentication\n    sources are cached on a per-session basis, so if you change\n    :setting:`AUTHENTICATION_BACKENDS`, you'll need to clear out session data if\n    you need to force users to re-authenticate using different methods. A simple\n    way to do that is simply to execute ``Session.objects.all().delete()``.\n\nWriting an authentication backend\n---------------------------------\n\nAn authentication backend is a class that implements two required methods:\n``get_user(user_id)`` and ``authenticate(**credentials)``, as well as a set of\noptional permission related :ref:`authorization methods <authorization_methods>`.\n\nThe ``get_user`` method takes a ``user_id`` -- which could be a username,\ndatabase ID or whatever -- and returns a ``User`` object.\n\nThe ``authenticate`` method takes credentials as keyword arguments. Most of\nthe time, it'll just look like this::\n\n    class MyBackend(object):\n        def authenticate(self, username=None, password=None):\n            # Check the username/password and return a User.\n            ...\n\nBut it could also authenticate a token, like so::\n\n    class MyBackend(object):\n        def authenticate(self, token=None):\n            # Check the token and return a User.\n            ...\n\nEither way, ``authenticate`` should check the credentials it gets, and it\nshould return a ``User`` object that matches those credentials, if the\ncredentials are valid. If they're not valid, it should return ``None``.\n\nThe Django admin system is tightly coupled to the Django ``User`` object\ndescribed at the beginning of this document. For now, the best way to deal with\nthis is to create a Django ``User`` object for each user that exists for your\nbackend (e.g., in your LDAP directory, your external SQL database, etc.) You\ncan either write a script to do this in advance, or your ``authenticate``\nmethod can do it the first time a user logs in.\n\nHere's an example backend that authenticates against a username and password\nvariable defined in your ``settings.py`` file and creates a Django ``User``\nobject the first time a user authenticates::\n\n    from django.conf import settings\n    from django.contrib.auth.models import User, check_password\n\n    class SettingsBackend(object):\n        \"\"\"\n        Authenticate against the settings ADMIN_LOGIN and ADMIN_PASSWORD.\n\n        Use the login name, and a hash of the password. For example:\n\n        ADMIN_LOGIN = 'admin'\n        ADMIN_PASSWORD = 'sha1$4e987$afbcf42e21bd417fb71db8c66b321e9fc33051de'\n        \"\"\"\n\n        def authenticate(self, username=None, password=None):\n            login_valid = (settings.ADMIN_LOGIN == username)\n            pwd_valid = check_password(password, settings.ADMIN_PASSWORD)\n            if login_valid and pwd_valid:\n                try:\n                    user = User.objects.get(username=username)\n                except User.DoesNotExist:\n                    # Create a new user. Note that we can set password\n                    # to anything, because it won't be checked; the password\n                    # from settings.py will.\n                    user = User(username=username, password='get from settings.py')\n                    user.is_staff = True\n                    user.is_superuser = True\n                    user.save()\n                return user\n            return None\n\n        def get_user(self, user_id):\n            try:\n                return User.objects.get(pk=user_id)\n            except User.DoesNotExist:\n                return None\n\n.. _authorization_methods:\n\nHandling authorization in custom backends\n-----------------------------------------\n\nCustom auth backends can provide their own permissions.\n\nThe user model will delegate permission lookup functions\n(:meth:`~django.contrib.auth.models.User.get_group_permissions()`,\n:meth:`~django.contrib.auth.models.User.get_all_permissions()`,\n:meth:`~django.contrib.auth.models.User.has_perm()`, and\n:meth:`~django.contrib.auth.models.User.has_module_perms()`) to any\nauthentication backend that implements these functions.\n\nThe permissions given to the user will be the superset of all permissions\nreturned by all backends. That is, Django grants a permission to a user that\nany one backend grants.\n\nThe simple backend above could implement permissions for the magic admin\nfairly simply::\n\n    class SettingsBackend(object):\n        ...\n        def has_perm(self, user_obj, perm, obj=None):\n            if user_obj.username == settings.ADMIN_LOGIN:\n                return True\n            else:\n                return False\n\nThis gives full permissions to the user granted access in the above example.\nNotice that in addition to the same arguments given to the associated\n:class:`django.contrib.auth.models.User` functions, the backend auth functions\nall take the user object, which may be an anonymous user, as an argument.\n\nA full authorization implementation can be found in the ``ModelBackend`` class\nin `django/contrib/auth/backends.py`_, which is the default backend and queries\nthe ``auth_permission`` table most of the time. If you wish to provide\ncustom behavior for only part of the backend API, you can take advantage of\nPython inheritance and subclass ``ModelBackend`` instead of implementing the\ncomplete API in a custom backend.\n\n.. _django/contrib/auth/backends.py: https://github.com/django/django/blob/master/django/contrib/auth/backends.py\n\n.. _anonymous_auth:\n\nAuthorization for anonymous users\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nAn anonymous user is one that is not authenticated i.e. they have provided no\nvalid authentication details. However, that does not necessarily mean they are\nnot authorized to do anything. At the most basic level, most Web sites\nauthorize anonymous users to browse most of the site, and many allow anonymous\nposting of comments etc.\n\nDjango's permission framework does not have a place to store permissions for\nanonymous users. However, the user object passed to an authentication backend\nmay be an :class:`django.contrib.auth.models.AnonymousUser` object, allowing\nthe backend to specify custom authorization behavior for anonymous users. This\nis especially useful for the authors of re-usable apps, who can delegate all\nquestions of authorization to the auth backend, rather than needing settings,\nfor example, to control anonymous access.\n\n.. _inactive_auth:\n\nAuthorization for inactive users\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nAn inactive user is a one that is authenticated but has its attribute\n``is_active`` set to ``False``. However this does not mean they are not\nauthorized to do anything. For example they are allowed to activate their\naccount.\n\nThe support for anonymous users in the permission system allows for a scenario\nwhere anonymous users have permissions to do something while inactive\nauthenticated users do not.\n\nDo not forget to test for the ``is_active`` attribute of the user in your own\nbackend permission methods.\n\n\nHandling object permissions\n~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nDjango's permission framework has a foundation for object permissions, though\nthere is no implementation for it in the core. That means that checking for\nobject permissions will always return ``False`` or an empty list (depending on\nthe check performed). An authentication backend will receive the keyword\nparameters ``obj`` and ``user_obj`` for each object related authorization\nmethod and can return the object level permission as appropriate.\n\n.. _custom-permissions:\n\nCustom permissions\n==================\n\nTo create custom permissions for a given model object, use the ``permissions``\n:ref:`model Meta attribute <meta-options>`.\n\nThis example Task model creates three custom permissions, i.e., actions users\ncan or cannot do with Task instances, specific to your application::\n\n    class Task(models.Model):\n        ...\n        class Meta:\n            permissions = (\n                (\"view_task\", \"Can see available tasks\"),\n                (\"change_task_status\", \"Can change the status of tasks\"),\n                (\"close_task\", \"Can remove a task by setting its status as closed\"),\n            )\n\nThe only thing this does is create those extra permissions when you run\n:djadmin:`manage.py syncdb <syncdb>`. Your code is in charge of checking the\nvalue of these permissions when an user is trying to access the functionality\nprovided by the application (viewing tasks, changing the status of tasks,\nclosing tasks.) Continuing the above example, the following checks if a user may\nview tasks::\n\n    user.has_perm('app.view_task')\n\n.. _extending-user:\n\nExtending the existing User model\n=================================\n\nThere are two ways to extend the default\n:class:`~django.contrib.auth.models.User` model without substituting your own\nmodel. If the changes you need are purely behavioral, and don't require any\nchange to what is stored in the database, you can create a :ref:`proxy model\n<proxy-models>` based on :class:`~django.contrib.auth.models.User`. This\nallows for any of the features offered by proxy models including default\nordering, custom managers, or custom model methods.\n\nIf you wish to store information related to ``User``, you can use a :ref:`one-to-one\nrelationship <ref-onetoone>` to a model containing the fields for\nadditional information. This one-to-one model is often called a profile model,\nas it might store non-auth related information about a site user. For example\nyou might create an Employee model::\n\n    from django.contrib.auth.models import User\n\n    class Employee(models.Model):\n        user = models.OneToOneField(User)\n        department = models.CharField(max_length=100)\n\nAssuming an existing Employee Fred Smith who has both a User and Employee\nmodel, you can access the related information using Django's standard related\nmodel conventions::\n\n    >>> u = User.objects.get(username='fsmith')\n    >>> freds_department = u.employee.department\n\nTo add a profile model's fields to the user page in the admin, define an\n:class:`~django.contrib.admin.InlineModelAdmin` (for this example, we'll use a\n:class:`~django.contrib.admin.StackedInline`) in your app's ``admin.py`` and\nadd it to a ``UserAdmin`` class which is registered with the\n:class:`~django.contrib.auth.models.User` class::\n\n    from django.contrib import admin\n    from django.contrib.auth.admin import UserAdmin\n    from django.contrib.auth.models import User\n\n    from my_user_profile_app.models import Employee\n\n    # Define an inline admin descriptor for Employee model\n    # which acts a bit like a singleton\n    class EmployeeInline(admin.StackedInline):\n        model = Employee\n        can_delete = False\n        verbose_name_plural = 'employee'\n\n    # Define a new User admin\n    class UserAdmin(UserAdmin):\n        inlines = (EmployeeInline, )\n\n    # Re-register UserAdmin\n    admin.site.unregister(User)\n    admin.site.register(User, UserAdmin)\n\nThese profile models are not special in any way - they are just Django models that\nhappen to have a one-to-one link with a User model. As such, they do not get\nauto created when a user is created, but\na :attr:`django.db.models.signals.post_save` could be used to create or update\nrelated models as appropriate.\n\nNote that using related models results in additional queries or joins to\nretrieve the related data, and depending on your needs substituting the User\nmodel and adding the related fields may be your better option.  However\nexisting links to the default User model within your project's apps may justify\nthe extra database load.\n\n.. _auth-profiles:\n\n.. deprecated:: 1.5\n    With the introduction of :ref:`custom User models <auth-custom-user>`,\n    the use of :setting:`AUTH_PROFILE_MODULE` to define a single profile\n    model is no longer supported. See the\n    :doc:`Django 1.5 release notes</releases/1.5>` for more information.\n\nPrior to 1.5, a single profile model could be specified site-wide with the\nsetting :setting:`AUTH_PROFILE_MODULE` with a string consisting of the\nfollowing items, separated by a dot:\n\n1. The name of the application (case sensitive) in which the user\n   profile model is defined (in other words, the\n   name which was passed to :djadmin:`manage.py startapp <startapp>` to create\n   the application).\n\n2. The name of the model (not case sensitive) class.\n\nFor example, if the profile model was a class named ``UserProfile`` and was\ndefined inside an application named ``accounts``, the appropriate setting would\nbe::\n\n    AUTH_PROFILE_MODULE = 'accounts.UserProfile'\n\nWhen a user profile model has been defined and specified in this manner, each\n:class:`~django.contrib.auth.models.User` object will have a method --\n:class:`~django.contrib.auth.models.User.get_profile()` -- which returns the\ninstance of the user profile model associated with that\n:class:`~django.contrib.auth.models.User`.\n\nThe method :class:`~django.contrib.auth.models.User.get_profile()`\ndoes not create a profile if one does not exist.\n\n.. _auth-custom-user:\n\nSubstituting a custom User model\n================================\n\n.. versionadded:: 1.5\n\nSome kinds of projects may have authentication requirements for which Django's\nbuilt-in :class:`~django.contrib.auth.models.User` model is not always\nappropriate. For instance, on some sites it makes more sense to use an email\naddress as your identification token instead of a username.\n\nDjango allows you to override the default User model by providing a value for\nthe :setting:`AUTH_USER_MODEL` setting that references a custom model::\n\n     AUTH_USER_MODEL = 'myapp.MyUser'\n\nThis dotted pair describes the name of the Django app (which must be in your\n:setting:`INSTALLED_APPS`), and the name of the Django model that you wish to\nuse as your User model.\n\n.. admonition:: Warning\n\n   Changing :setting:`AUTH_USER_MODEL` has a big effect on your database\n   structure. It changes the tables that are available, and it will affect the\n   construction of foreign keys and many-to-many relationships. If you intend\n   to set :setting:`AUTH_USER_MODEL`, you should set it before running\n   ``manage.py syncdb`` for the first time.\n\n   If you have an existing project and you want to migrate to using a custom\n   User model, you may need to look into using a migration tool like South_\n   to ease the transition.\n\n.. _South: http://south.aeracode.org\n\nReferencing the User model\n--------------------------\n\n.. currentmodule:: django.contrib.auth\n\nIf you reference :class:`~django.contrib.auth.models.User` directly (for\nexample, by referring to it in a foreign key), your code will not work in\nprojects where the :setting:`AUTH_USER_MODEL` setting has been changed to a\ndifferent User model.\n\n.. function:: get_user_model()\n\n    Instead of referring to :class:`~django.contrib.auth.models.User` directly,\n    you should reference the user model using\n    ``django.contrib.auth.get_user_model()``. This method will return the\n    currently active User model -- the custom User model if one is specified, or\n    :class:`~django.contrib.auth.models.User` otherwise.\n\n    When you define a foreign key or many-to-many relations to the User model,\n    you should specify the custom model using the :setting:`AUTH_USER_MODEL`\n    setting. For example::\n\n        from django.conf import settings\n        from django.db import models\n\n        class Article(models.Model):\n            author = models.ForeignKey(settings.AUTH_USER_MODEL)\n\nSpecifying a custom User model\n------------------------------\n\n.. admonition:: Model design considerations\n\n    Think carefully before handling information not directly related to\n    authentication in your custom User Model.\n\n    It may be better to store app-specific user information in a model\n    that has a relation with the User model. That allows each app to specify\n    its own user data requirements without risking conflicts with other\n    apps. On the other hand, queries to retrieve this related information\n    will involve a database join, which may have an effect on performance.\n\nDjango expects your custom User model to meet some minimum requirements.\n\n1. Your model must have an integer primary key.\n\n2. Your model must have a single unique field that can be used for\n   identification purposes. This can be a username, an email address,\n   or any other unique attribute.\n\n3. Your model must provide a way to address the user in a \"short\" and\n   \"long\" form. The most common interpretation of this would be to use\n   the user's given name as the \"short\" identifier, and the user's full\n   name as the \"long\" identifier. However, there are no constraints on\n   what these two methods return - if you want, they can return exactly\n   the same value.\n\nThe easiest way to construct a compliant custom User model is to inherit from\n:class:`~django.contrib.auth.models.AbstractBaseUser`.\n:class:`~django.contrib.auth.models.AbstractBaseUser` provides the core\nimplementation of a ``User`` model, including hashed passwords and tokenized\npassword resets. You must then provide some key implementation details:\n\n.. currentmodule:: django.contrib.auth\n\n.. class:: models.CustomUser\n\n    .. attribute:: USERNAME_FIELD\n\n        A string describing the name of the field on the User model that is\n        used as the unique identifier. This will usually be a username of\n        some kind, but it can also be an email address, or any other unique\n        identifier. The field *must* be unique (i.e., have ``unique=True``\n        set in its definition).\n\n        In the following example, the field ``identifier`` is used\n        as the identifying field::\n\n            class MyUser(AbstractBaseUser):\n                identifier = models.CharField(max_length=40, unique=True, db_index=True)\n                ...\n                USERNAME_FIELD = 'identifier'\n\n    .. attribute:: REQUIRED_FIELDS\n\n        A list of the field names that *must* be provided when creating a user\n        via the :djadmin:`createsuperuser` management command. The user will be\n        prompted to supply a value for each of these fields. It should include\n        any field for which :attr:`~django.db.models.Field.blank` is ``False``\n        or undefined, but may include additional fields you want prompted for\n        when a user is created interactively. However, it will not work for\n        :class:`~django.db.models.ForeignKey` fields.\n\n        For example, here is the partial definition for a ``User`` model that\n        defines two required fields - a date of birth and height::\n\n            class MyUser(AbstractBaseUser):\n                ...\n                date_of_birth = models.DateField()\n                height = models.FloatField()\n                ...\n                REQUIRED_FIELDS = ['date_of_birth', 'height']\n\n        .. note::\n\n            ``REQUIRED_FIELDS`` must contain all required fields on your User\n            model, but should *not* contain the ``USERNAME_FIELD``.\n\n    .. attribute:: is_active\n\n        A boolean attribute that indicates whether the user is considered\n        \"active\".  This attribute is provided as an attribute on\n        ``AbstractBaseUser`` defaulting to ``True``. How you choose to\n        implement it will depend on the details of your chosen auth backends.\n        See the documentation of the :attr:`attribute on the builtin user model\n        <django.contrib.auth.models.User.is_active>` for details.\n\n    .. method:: get_full_name()\n\n        A longer formal identifier for the user. A common interpretation\n        would be the full name name of the user, but it can be any string that\n        identifies the user.\n\n    .. method:: get_short_name()\n\n        A short, informal identifier for the user. A common interpretation\n        would be the first name of the user, but it can be any string that\n        identifies the user in an informal way. It may also return the same\n        value as :meth:`django.contrib.auth.models.User.get_full_name()`.\n\nThe following methods are available on any subclass of\n:class:`~django.contrib.auth.models.AbstractBaseUser`:\n\n.. class:: models.AbstractBaseUser\n\n    .. method:: get_username()\n\n        Returns the value of the field nominated by ``USERNAME_FIELD``.\n\n    .. method:: models.AbstractBaseUser.is_anonymous()\n\n        Always returns ``False``. This is a way of differentiating\n        from  :class:`~django.contrib.auth.models.AnonymousUser` objects.\n        Generally, you should prefer using\n        :meth:`~django.contrib.auth.models.AbstractBaseUser.is_authenticated()` to this\n        method.\n\n    .. method:: models.AbstractBaseUser.is_authenticated()\n\n        Always returns ``True``. This is a way to tell if the user has been\n        authenticated. This does not imply any permissions, and doesn't check\n        if the user is active - it only indicates that the user has provided a\n        valid username and password.\n\n    .. method:: models.AbstractBaseUser.set_password(raw_password)\n\n        Sets the user's password to the given raw string, taking care of the\n        password hashing. Doesn't save the\n        :class:`~django.contrib.auth.models.AbstractBaseUser` object.\n\n    .. method:: models.AbstractBaseUser.check_password(raw_password)\n\n        Returns ``True`` if the given raw string is the correct password for\n        the user. (This takes care of the password hashing in making the\n        comparison.)\n\n    .. method:: models.AbstractBaseUser.set_unusable_password()\n\n        Marks the user as having no password set.  This isn't the same as\n        having a blank string for a password.\n        :meth:`~django.contrib.auth.models.AbstractBaseUser.check_password()` for this user\n        will never return ``True``. Doesn't save the\n        :class:`~django.contrib.auth.models.AbstractBaseUser` object.\n\n        You may need this if authentication for your application takes place\n        against an existing external source such as an LDAP directory.\n\n    .. method:: models.AbstractBaseUser.has_usable_password()\n\n        Returns ``False`` if\n        :meth:`~django.contrib.auth.models.AbstractBaseUser.set_unusable_password()` has\n        been called for this user.\n\nYou should also define a custom manager for your ``User`` model. If your\n``User`` model defines ``username`` and ``email`` fields the same as Django's\ndefault ``User``, you can just install Django's\n:class:`~django.contrib.auth.models.UserManager`; however, if your ``User``\nmodel defines different fields, you will need to define a custom manager that\nextends :class:`~django.contrib.auth.models.BaseUserManager` providing two\nadditional methods:\n\n.. class:: models.CustomUserManager\n\n    .. method:: models.CustomUserManager.create_user(*username_field*, password=None, \\**other_fields)\n\n        The prototype of ``create_user()`` should accept the username field,\n        plus all required fields as arguments. For example, if your user model\n        uses ``email`` as the username field, and has ``date_of_birth`` as a\n        required fields, then ``create_user`` should be defined as::\n\n            def create_user(self, email, date_of_birth, password=None):\n                # create user here\n                ...\n\n    .. method:: models.CustomUserManager.create_superuser(*username_field*, password, \\**other_fields)\n\n        The prototype of ``create_superuser()`` should accept the username\n        field, plus all required fields as arguments. For example, if your user\n        model uses ``email`` as the username field, and has ``date_of_birth``\n        as a required fields, then ``create_superuser`` should be defined as::\n\n            def create_superuser(self, email, date_of_birth, password):\n                # create superuser here\n                ...\n\n        Unlike ``create_user()``, ``create_superuser()`` *must* require the\n        caller to provider a password.\n\n:class:`~django.contrib.auth.models.BaseUserManager` provides the following\nutility methods:\n\n.. class:: models.BaseUserManager\n\n    .. method:: models.BaseUserManager.normalize_email(email)\n\n        A classmethod that normalizes email addresses by lowercasing\n        the domain portion of the email address.\n\n    .. method:: models.BaseUserManager.get_by_natural_key(username)\n\n        Retrieves a user instance using the contents of the field\n        nominated by ``USERNAME_FIELD``.\n\n    .. method:: models.BaseUserManager.make_random_password(length=10, allowed_chars='abcdefghjkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ23456789')\n\n        Returns a random password with the given length and given string of\n        allowed characters. (Note that the default value of ``allowed_chars``\n        doesn't contain letters that can cause user confusion, including:\n\n        * ``i``, ``l``, ``I``, and ``1`` (lowercase letter i, lowercase\n          letter L, uppercase letter i, and the number one)\n        * ``o``, ``O``, and ``0`` (uppercase letter o, lowercase letter o,\n          and zero)\n\nExtending Django's default User\n-------------------------------\n\nIf you're entirely happy with Django's :class:`~django.contrib.auth.models.User`\nmodel and you just want to add some additional profile information, you can\nsimply subclass ``django.contrib.auth.models.AbstractUser`` and add your\ncustom profile fields. This class provides the full implementation of the\ndefault :class:`~django.contrib.auth.models.User` as an :ref:`abstract model\n<abstract-base-classes>`.\n\n.. _custom-users-and-the-built-in-auth-forms:\n\nCustom users and the built-in auth forms\n----------------------------------------\n\nAs you may expect, built-in Django's :ref:`forms <built-in-auth-forms>` and\n:ref:`views <built-in-auth-views>` make certain assumptions about the user\nmodel that they are working with.\n\nIf your user model doesn't follow the same assumptions, it may be necessary to define\na replacement form, and pass that form in as part of the configuration of the\nauth views.\n\n* :class:`~django.contrib.auth.forms.UserCreationForm`\n\n  Depends on the :class:`~django.contrib.auth.models.User` model.\n  Must be re-written for any custom user model.\n\n* :class:`~django.contrib.auth.forms.UserChangeForm`\n\n  Depends on the :class:`~django.contrib.auth.models.User` model.\n  Must be re-written for any custom user model.\n\n* :class:`~django.contrib.auth.forms.AuthenticationForm`\n\n  Works with any subclass of :class:`~django.contrib.auth.models.AbstractBaseUser`,\n  and will adapt to use the field defined in `USERNAME_FIELD`.\n\n* :class:`~django.contrib.auth.forms.PasswordResetForm`\n\n  Assumes that the user model has an integer primary key, has a field named\n  ``email`` that can be used to identify the user, and a boolean field\n  named `is_active` to prevent password resets for inactive users.\n\n* :class:`~django.contrib.auth.forms.SetPasswordForm`\n\n  Works with any subclass of :class:`~django.contrib.auth.models.AbstractBaseUser`\n\n* :class:`~django.contrib.auth.forms.PasswordChangeForm`\n\n  Works with any subclass of :class:`~django.contrib.auth.models.AbstractBaseUser`\n\n* :class:`~django.contrib.auth.forms.AdminPasswordChangeForm`\n\n  Works with any subclass of :class:`~django.contrib.auth.models.AbstractBaseUser`\n\n\nCustom users and :mod:`django.contrib.admin`\n--------------------------------------------\n\nIf you want your custom User model to also work with Admin, your User model must\ndefine some additional attributes and methods. These methods allow the admin to\ncontrol access of the User to admin content:\n\n.. class:: models.CustomUser\n\n.. attribute:: is_staff\n\n    Returns ``True`` if the user is allowed to have access to the admin site.\n\n.. attribute:: is_active\n\n    Returns ``True`` if the user account is currently active.\n\n.. method:: has_perm(perm, obj=None):\n\n    Returns ``True`` if the user has the named permission. If ``obj`` is\n    provided, the permission needs to be checked against a specific object\n    instance.\n\n.. method:: has_module_perms(app_label):\n\n    Returns ``True`` if the user has permission to access models in\n    the given app.\n\nYou will also need to register your custom User model with the admin. If\nyour custom User model extends ``django.contrib.auth.models.AbstractUser``,\nyou can use Django's existing ``django.contrib.auth.admin.UserAdmin``\nclass. However, if your User model extends\n:class:`~django.contrib.auth.models.AbstractBaseUser`, you'll need to define\na custom ModelAdmin class. It may be possible to subclass the default\n``django.contrib.auth.admin.UserAdmin``; however, you'll need to\noverride any of the definitions that refer to fields on\n``django.contrib.auth.models.AbstractUser`` that aren't on your\ncustom User class.\n\nCustom users and permissions\n----------------------------\n\nTo make it easy to include Django's permission framework into your own User\nclass, Django provides :class:`~django.contrib.auth.models.PermissionsMixin`.\nThis is an abstract model you can include in the class hierarchy for your User\nmodel, giving you all the methods and database fields necessary to support\nDjango's permission model.\n\n:class:`~django.contrib.auth.models.PermissionsMixin` provides the following\nmethods and attributes:\n\n.. class:: models.PermissionsMixin\n\n    .. attribute:: models.PermissionsMixin.is_superuser\n\n        Boolean. Designates that this user has all permissions without\n        explicitly assigning them.\n\n    .. method:: models.PermissionsMixin.get_group_permissions(obj=None)\n\n        Returns a set of permission strings that the user has, through his/her\n        groups.\n\n        If ``obj`` is passed in, only returns the group permissions for\n        this specific object.\n\n    .. method:: models.PermissionsMixin.get_all_permissions(obj=None)\n\n        Returns a set of permission strings that the user has, both through\n        group and user permissions.\n\n        If ``obj`` is passed in, only returns the permissions for this\n        specific object.\n\n    .. method:: models.PermissionsMixin.has_perm(perm, obj=None)\n\n        Returns ``True`` if the user has the specified permission, where perm is\n        in the format ``\"<app label>.<permission codename>\"`` (see\n        :ref:`permissions <topic-authorization>`). If the user is inactive, this method will\n        always return ``False``.\n\n        If ``obj`` is passed in, this method won't check for a permission for\n        the model, but for this specific object.\n\n    .. method:: models.PermissionsMixin.has_perms(perm_list, obj=None)\n\n        Returns ``True`` if the user has each of the specified permissions,\n        where each perm is in the format\n        ``\"<app label>.<permission codename>\"``. If the user is inactive,\n        this method will always return ``False``.\n\n        If ``obj`` is passed in, this method won't check for permissions for\n        the model, but for the specific object.\n\n    .. method:: models.PermissionsMixin.has_module_perms(package_name)\n\n        Returns ``True`` if the user has any permissions in the given package\n        (the Django app label). If the user is inactive, this method will\n        always return ``False``.\n\n.. admonition:: ModelBackend\n\n    If you don't include the\n    :class:`~django.contrib.auth.models.PermissionsMixin`, you must ensure you\n    don't invoke the permissions methods on ``ModelBackend``. ``ModelBackend``\n    assumes that certain fields are available on your user model. If your User\n    model doesn't provide  those fields, you will receive database errors when\n    you check permissions.\n\nCustom users and Proxy models\n-----------------------------\n\nOne limitation of custom User models is that installing a custom User model\nwill break any proxy model extending :class:`~django.contrib.auth.models.User`.\nProxy models must be based on a concrete base class; by defining a custom User\nmodel, you remove the ability of Django to reliably identify the base class.\n\nIf your project uses proxy models, you must either modify the proxy to extend\nthe User model that is currently in use in your project, or merge your proxy's\nbehavior into your User subclass.\n\nCustom users and signals\n------------------------\n\nAnother limitation of custom User models is that you can't use\n:func:`django.contrib.auth.get_user_model()` as the sender or target of a signal\nhandler. Instead, you must register the handler with the resulting User model.\nSee :doc:`/topics/signals` for more information on registering an sending\nsignals.\n\nCustom users and testing/fixtures\n---------------------------------\n\nIf you are writing an application that interacts with the User model, you must\ntake some precautions to ensure that your test suite will run regardless of\nthe User model that is being used by a project. Any test that instantiates an\ninstance of User will fail if the User model has been swapped out. This\nincludes any attempt to create an instance of User with a fixture.\n\nTo ensure that your test suite will pass in any project configuration,\n``django.contrib.auth.tests.utils`` defines a ``@skipIfCustomUser`` decorator.\nThis decorator will cause a test case to be skipped if any User model other\nthan the default Django user is in use. This decorator can be applied to a\nsingle test, or to an entire test class.\n\nDepending on your application, tests may also be needed to be added to ensure\nthat the application works with *any* user model, not just the default User\nmodel. To assist with this, Django provides two substitute user models that\ncan be used in test suites:\n\n* ``django.contrib.auth.tests.custom_user.CustomUser``, a custom user\n  model that uses an ``email`` field as the username, and has a basic\n  admin-compliant permissions setup\n\n* ``django.contrib.auth.tests.custom_user.ExtensionUser``, a custom\n  user model that extends ``django.contrib.auth.models.AbstractUser``,\n  adding a ``date_of_birth`` field.\n\nYou can then use the ``@override_settings`` decorator to make that test run\nwith the custom User model. For example, here is a skeleton for a test that\nwould test three possible User models -- the default, plus the two User\nmodels provided by ``auth`` app::\n\n    from django.contrib.auth.tests.utils import skipIfCustomUser\n    from django.test import TestCase\n    from django.test.utils import override_settings\n\n\n    class ApplicationTestCase(TestCase):\n        @skipIfCustomUser\n        def test_normal_user(self):\n            \"Run tests for the normal user model\"\n            self.assertSomething()\n\n        @override_settings(AUTH_USER_MODEL='auth.CustomUser')\n        def test_custom_user(self):\n            \"Run tests for a custom user model with email-based authentication\"\n            self.assertSomething()\n\n        @override_settings(AUTH_USER_MODEL='auth.ExtensionUser')\n        def test_extension_user(self):\n            \"Run tests for a simple extension of the built-in User.\"\n            self.assertSomething()\n\n\nA full example\n--------------\n\nHere is an example of an admin-compliant custom user app. This user model uses\nan email address as the username, and has a required date of birth; it\nprovides no permission checking, beyond a simple ``admin`` flag on the user\naccount. This model would be compatible with all the built-in auth forms and\nviews, except for the User creation forms. This example illustrates how most of\nthe components work together, but is not intended to be copied directly into\nprojects for production use.\n\nThis code would all live in a ``models.py`` file for a custom\nauthentication app::\n\n    from django.db import models\n    from django.contrib.auth.models import (\n        BaseUserManager, AbstractBaseUser\n    )\n\n\n    class MyUserManager(BaseUserManager):\n        def create_user(self, email, date_of_birth, password=None):\n            \"\"\"\n            Creates and saves a User with the given email, date of\n            birth and password.\n            \"\"\"\n            if not email:\n                raise ValueError('Users must have an email address')\n\n            user = self.model(\n                email=MyUserManager.normalize_email(email),\n                date_of_birth=date_of_birth,\n            )\n\n            user.set_password(password)\n            user.save(using=self._db)\n            return user\n\n        def create_superuser(self, email, date_of_birth, password):\n            \"\"\"\n            Creates and saves a superuser with the given email, date of\n            birth and password.\n            \"\"\"\n            user = self.create_user(email,\n                password=password,\n                date_of_birth=date_of_birth\n            )\n            user.is_admin = True\n            user.save(using=self._db)\n            return user\n\n\n    class MyUser(AbstractBaseUser):\n        email = models.EmailField(\n            verbose_name='email address',\n            max_length=255,\n            unique=True,\n            db_index=True,\n        )\n        date_of_birth = models.DateField()\n        is_active = models.BooleanField(default=True)\n        is_admin = models.BooleanField(default=False)\n\n        objects = MyUserManager()\n\n        USERNAME_FIELD = 'email'\n        REQUIRED_FIELDS = ['date_of_birth']\n\n        def get_full_name(self):\n            # The user is identified by their email address\n            return self.email\n\n        def get_short_name(self):\n            # The user is identified by their email address\n            return self.email\n\n        def __unicode__(self):\n            return self.email\n\n        def has_perm(self, perm, obj=None):\n            \"Does the user have a specific permission?\"\n            # Simplest possible answer: Yes, always\n            return True\n\n        def has_module_perms(self, app_label):\n            \"Does the user have permissions to view the app `app_label`?\"\n            # Simplest possible answer: Yes, always\n            return True\n\n        @property\n        def is_staff(self):\n            \"Is the user a member of staff?\"\n            # Simplest possible answer: All admins are staff\n            return self.is_admin\n\nThen, to register this custom User model with Django's admin, the following\ncode would be required in the app's ``admin.py`` file::\n\n    from django import forms\n    from django.contrib import admin\n    from django.contrib.auth.models import Group\n    from django.contrib.auth.admin import UserAdmin\n    from django.contrib.auth.forms import ReadOnlyPasswordHashField\n\n    from customauth.models import MyUser\n\n\n    class UserCreationForm(forms.ModelForm):\n        \"\"\"A form for creating new users. Includes all the required\n        fields, plus a repeated password.\"\"\"\n        password1 = forms.CharField(label='Password', widget=forms.PasswordInput)\n        password2 = forms.CharField(label='Password confirmation', widget=forms.PasswordInput)\n\n        class Meta:\n            model = MyUser\n            fields = ('email', 'date_of_birth')\n\n        def clean_password2(self):\n            # Check that the two password entries match\n            password1 = self.cleaned_data.get(\"password1\")\n            password2 = self.cleaned_data.get(\"password2\")\n            if password1 and password2 and password1 != password2:\n                raise forms.ValidationError(\"Passwords don't match\")\n            return password2\n\n        def save(self, commit=True):\n            # Save the provided password in hashed format\n            user = super(UserCreationForm, self).save(commit=False)\n            user.set_password(self.cleaned_data[\"password1\"])\n            if commit:\n                user.save()\n            return user\n\n\n    class UserChangeForm(forms.ModelForm):\n        \"\"\"A form for updating users. Includes all the fields on\n        the user, but replaces the password field with admin's\n        password hash display field.\n        \"\"\"\n        password = ReadOnlyPasswordHashField()\n\n        class Meta:\n            model = MyUser\n\n        def clean_password(self):\n            # Regardless of what the user provides, return the initial value.\n            # This is done here, rather than on the field, because the\n            # field does not have access to the initial value\n            return self.initial[\"password\"]\n\n\n    class MyUserAdmin(UserAdmin):\n        # The forms to add and change user instances\n        form = UserChangeForm\n        add_form = UserCreationForm\n\n        # The fields to be used in displaying the User model.\n        # These override the definitions on the base UserAdmin\n        # that reference specific fields on auth.User.\n        list_display = ('email', 'date_of_birth', 'is_admin')\n        list_filter = ('is_admin',)\n        fieldsets = (\n            (None, {'fields': ('email', 'password')}),\n            ('Personal info', {'fields': ('date_of_birth',)}),\n            ('Permissions', {'fields': ('is_admin',)}),\n            ('Important dates', {'fields': ('last_login',)}),\n        )\n        add_fieldsets = (\n            (None, {\n                'classes': ('wide',),\n                'fields': ('email', 'date_of_birth', 'password1', 'password2')}\n            ),\n        )\n        search_fields = ('email',)\n        ordering = ('email',)\n        filter_horizontal = ()\n\n    # Now register the new UserAdmin...\n    admin.site.register(MyUser, MyUserAdmin)\n    # ... and, since we're not using Django's builtin permissions,\n    # unregister the Group model from admin.\n    admin.site.unregister(Group)\n"
  },
  {
    "path": "Django-1.5.1/docs/topics/auth/default.txt",
    "content": "======================================\nUsing the Django authentication system\n======================================\n\n.. currentmodule:: django.contrib.auth\n\nThis document explains the usage of Django's authentication system in its\ndefault configuration. This configuration has evolved to serve the most common\nproject needs, handling a reasonably wide range of tasks, and has a careful\nimplementation of passwords and permissions, and can handle many projects as\nis.  For projects where authentication needs differ from the default, Django\nsupports extensive :doc:`extension and customization\n</topics/auth/customizing>` of authentication.\n\nDjango authentication provides both authentication and authorization, together\nand is generally referred to as the authentication system, as these features\nsomewhat coupled.\n\n.. _user-objects:\n\nUser objects\n============\n\n:class:`~django.contrib.auth.models.User` objects are the core of the\nauthentication system. They typically represent the people interacting with\nyour site and are used to enable things like restricting access, registering\nuser profiles, associating content with creators etc. Only one class of user\nexists in Django's authentication framework, i.e., 'superusers' or admin\n'staff' users are just user objects with special attributes set, not different\nclasses of user objects.\n\nThe primary attributes of the default user are:\n\n* username\n* password\n* email\n* first name\n* last name\n\nSee the :class:`full API documentation <django.contrib.auth.models.User>` for\nfull reference, the documentation that follows is more task oriented.\n\n.. _topics-auth-creating-users:\n\nCreating users\n--------------\n\nThe most direct way to create users is to use the included\n:meth:`~django.contrib.auth.models.UserManager.create_user` helper function::\n\n    >>> from django.contrib.auth.models import User\n    >>> user = User.objects.create_user('john', 'lennon@thebeatles.com', 'johnpassword')\n\n    # At this point, user is a User object that has already been saved\n    # to the database. You can continue to change its attributes\n    # if you want to change other fields.\n    >>> user.last_name = 'Lennon'\n    >>> user.save()\n\nIf you have the Django admin installed, you can also :ref:`create users\ninteractively <auth-admin>`.\n\n.. _topics-auth-creating-superusers:\n\nCreating superusers\n-------------------\n\n:djadmin:`manage.py syncdb <syncdb>` prompts you to create a superuser the\nfirst time you run it with ``'django.contrib.auth'`` in your\n:setting:`INSTALLED_APPS`. If you need to create a superuser at a later date,\nyou can use a command line utility::\n\n    manage.py createsuperuser --username=joe --email=joe@example.com\n\nYou will be prompted for a password. After you enter one, the user will be\ncreated immediately. If you leave off the :djadminopt:`--username` or the\n:djadminopt:`--email` options, it will prompt you for those values.\n\nChanging passwords\n------------------\n\nDjango does not store raw (clear text) passwords on the user model, but only\na hash (see :doc:`documentation of how passwords are managed\n</topics/auth/passwords>` for full details). Because of this, do not attempt to\nmanipulate the password attribute of the user directly. This is why a helper\nfunction is used when creating a user.\n\nTo change a user's password, you have several options:\n\n:djadmin:`manage.py changepassword *username* <changepassword>` offers a method\nof changing a User's password from the command line. It prompts you to\nchange the password of a given user which you must enter twice. If\nthey both match, the new password will be changed immediately. If you\ndo not supply a user, the command will attempt to change the password\nwhose username matches the current system user.\n\nYou can also change a password programmatically, using\n:meth:`~django.contrib.auth.models.User.set_password()`:\n\n.. code-block:: python\n\n    >>> from django.contrib.auth.models import User\n    >>> u = User.objects.get(username__exact='john')\n    >>> u.set_password('new password')\n    >>> u.save()\n\nIf you have the Django admin installed, you can also change user's passwords\non the :ref:`authentication system's admin pages <auth-admin>`.\n\nDjango also provides :ref:`views <built-in-auth-views>` and :ref:`forms\n<built-in-auth-forms>` that may be used to allow users to change their own\npasswords.\n\nAuthenticating Users\n--------------------\n\n.. function:: authenticate(\\**credentials)\n\n    To authenticate a given username and password, use\n    :func:`~django.contrib.auth.authenticate()`. It takes credentials in the\n    form of keyword arguments, for the default configuration this is\n    ``username`` and ``password``, and it returns\n    a :class:`~django.contrib.auth.models.User` object if the password is valid\n    for the given username. If the password is invalid,\n    :func:`~django.contrib.auth.authenticate()` returns ``None``. Example::\n\n        from django.contrib.auth import authenticate\n        user = authenticate(username='john', password='secret')\n        if user is not None:\n            # the password verified for the user\n            if user.is_active:\n                print(\"User is valid, active and authenticated\")\n            else:\n                print(\"The password is valid, but the account has been disabled!\")\n        else:\n            # the authentication system was unable to verify the username and password\n            print(\"The username and password were incorrect.\")\n\n.. _topic-authorization:\n\nPermissions and Authorization\n=============================\n\nDjango comes with a simple permissions system. It provides a way to assign\npermissions to specific users and groups of users.\n\nIt's used by the Django admin site, but you're welcome to use it in your own\ncode.\n\nThe Django admin site uses permissions as follows:\n\n* Access to view the \"add\" form and add an object is limited to users with\n  the \"add\" permission for that type of object.\n* Access to view the change list, view the \"change\" form and change an\n  object is limited to users with the \"change\" permission for that type of\n  object.\n* Access to delete an object is limited to users with the \"delete\"\n  permission for that type of object.\n\nPermissions can be set not only per type of object, but also per specific\nobject instance. By using the\n:meth:`~django.contrib.admin.ModelAdmin.has_add_permission`,\n:meth:`~django.contrib.admin.ModelAdmin.has_change_permission` and\n:meth:`~django.contrib.admin.ModelAdmin.has_delete_permission` methods provided\nby the :class:`~django.contrib.admin.ModelAdmin` class, it is possible to\ncustomize permissions for different object instances of the same type.\n\n:class:`~django.contrib.auth.models.User` objects have two many-to-many\nfields: ``groups`` and ``user_permissions``.\n:class:`~django.contrib.auth.models.User` objects can access their related\nobjects in the same way as any other :doc:`Django model\n</topics/db/models>`:\n\n.. code-block:: python\n\n    myuser.groups = [group_list]\n    myuser.groups.add(group, group, ...)\n    myuser.groups.remove(group, group, ...)\n    myuser.groups.clear()\n    myuser.user_permissions = [permission_list]\n    myuser.user_permissions.add(permission, permission, ...)\n    myuser.user_permissions.remove(permission, permission, ...)\n    myuser.user_permissions.clear()\n\nDefault permissions\n-------------------\n\nWhen ``django.contrib.auth`` is listed in your :setting:`INSTALLED_APPS`\nsetting, it will ensure that three default permissions -- add, change and\ndelete -- are created for each Django model defined in one of your installed\napplications.\n\nThese permissions will be created when you run :djadmin:`manage.py syncdb\n<syncdb>`; the first time you run ``syncdb`` after adding\n``django.contrib.auth`` to :setting:`INSTALLED_APPS`, the default permissions\nwill be created for all previously-installed models, as well as for any new\nmodels being installed at that time. Afterward, it will create default\npermissions for new models each time you run :djadmin:`manage.py syncdb\n<syncdb>`.\n\nAssuming you have an application with an\n:attr:`~django.db.models.Options.app_label` ``foo`` and a model named ``Bar``,\nto test for basic permissions you should use:\n\n* add: ``user.has_perm('foo.add_bar')``\n* change: ``user.has_perm('foo.change_bar')``\n* delete: ``user.has_perm('foo.delete_bar')``\n\nThe :class:`~django.contrib.auth.models.Permission` model is rarely accessed\ndirectly.\n\nGroups\n------\n\n:class:`django.contrib.auth.models.Group` models are a generic way of\ncategorizing users so you can apply permissions, or some other label, to those\nusers. A user can belong to any number of groups.\n\nA user in a group automatically has the permissions granted to that group. For\nexample, if the group ``Site editors`` has the permission\n``can_edit_home_page``, any user in that group will have that permission.\n\nBeyond permissions, groups are a convenient way to categorize users to give\nthem some label, or extended functionality. For example, you could create a\ngroup ``'Special users'``, and you could write code that could, say, give them\naccess to a members-only portion of your site, or send them members-only email\nmessages.\n\nProgrammatically creating permissions\n-------------------------------------\n\nWhile :ref:`custom permissions <custom-permissions>` can be defined within\na model's ``Meta`` class, you can also create permissions directly. For\nexample, you can create the ``can_publish`` permission for a ``BlogPost`` model\nin ``myapp``::\n\n    from django.contrib.auth.models import Group, Permission\n    from django.contrib.contenttypes.models import ContentType\n\n    content_type = ContentType.objects.get(app_label='myapp', model='BlogPost')\n    permission = Permission.objects.create(codename='can_publish',\n                                           name='Can Publish Posts',\n                                           content_type=content_type)\n\nThe permission can then be assigned to a\n:class:`~django.contrib.auth.models.User` via its ``user_permissions``\nattribute or to a :class:`~django.contrib.auth.models.Group` via its\n``permissions`` attribute.\n\n.. _auth-web-requests:\n\nAuthentication in Web requests\n==============================\n\nDjango uses :doc:`sessions </topics/http/sessions>` and middleware to hook the\nauthentication system into :class:`request objects <django.http.HttpRequest>`.\n\nThese provide a :attr:`request.user <django.http.HttpRequest.user>`  attribute\non every request which represents the current user. If the current user has not\nlogged in, this attribute will be set to an instance\nof :class:`~django.contrib.auth.models.AnonymousUser`, otherwise it will be an\ninstance of :class:`~django.contrib.auth.models.User`.\n\nYou can tell them apart with\n:meth:`~django.contrib.auth.models.User.is_authenticated()`, like so::\n\n    if request.user.is_authenticated():\n        # Do something for authenticated users.\n    else:\n        # Do something for anonymous users.\n\n.. _how-to-log-a-user-in:\n\nHow to log a user in\n--------------------\n\nIf you have an authenticated user you want to attach to the current session\n- this is done with a :func:`~django.contrib.auth.login` function.\n\n.. function:: login()\n\n    To log a user in, from a view, use :func:`~django.contrib.auth.login()`. It\n    takes an :class:`~django.http.HttpRequest` object and a\n    :class:`~django.contrib.auth.models.User` object.\n    :func:`~django.contrib.auth.login()` saves the user's ID in the session,\n    using Django's session framework.\n\n    Note that any data set during the anonymous session is retained in the\n    session after a user logs in.\n\n    This example shows how you might use both\n    :func:`~django.contrib.auth.authenticate()` and\n    :func:`~django.contrib.auth.login()`::\n\n        from django.contrib.auth import authenticate, login\n\n        def my_view(request):\n            username = request.POST['username']\n            password = request.POST['password']\n            user = authenticate(username=username, password=password)\n            if user is not None:\n                if user.is_active:\n                    login(request, user)\n                    # Redirect to a success page.\n                else:\n                    # Return a 'disabled account' error message\n            else:\n                # Return an 'invalid login' error message.\n\n.. admonition:: Calling ``authenticate()`` first\n\n    When you're manually logging a user in, you *must* call\n    :func:`~django.contrib.auth.authenticate()` before you call\n    :func:`~django.contrib.auth.login()`.\n    :func:`~django.contrib.auth.authenticate()`\n    sets an attribute on the :class:`~django.contrib.auth.models.User` noting\n    which authentication backend successfully authenticated that user (see the\n    :ref:`backends documentation <authentication-backends>` for details), and\n    this information is needed later during the login process. An error will be\n    raise if you try to login a user object retrieved from the database\n    directly.\n\nHow to log a user out\n---------------------\n\n.. function:: logout()\n\n    To log out a user who has been logged in via\n    :func:`django.contrib.auth.login()`, use\n    :func:`django.contrib.auth.logout()` within your view. It takes an\n    :class:`~django.http.HttpRequest` object and has no return value.\n    Example::\n\n        from django.contrib.auth import logout\n\n        def logout_view(request):\n            logout(request)\n            # Redirect to a success page.\n\n    Note that :func:`~django.contrib.auth.logout()` doesn't throw any errors if\n    the user wasn't logged in.\n\n    When you call :func:`~django.contrib.auth.logout()`, the session data for\n    the current request is completely cleaned out. All existing data is\n    removed. This is to prevent another person from using the same Web browser\n    to log in and have access to the previous user's session data. If you want\n    to put anything into the session that will be available to the user\n    immediately after logging out, do that *after* calling\n    :func:`django.contrib.auth.logout()`.\n\nLimiting access to logged-in users\n----------------------------------\n\nThe raw way\n~~~~~~~~~~~\n\nThe simple, raw way to limit access to pages is to check\n:meth:`request.user.is_authenticated()\n<django.contrib.auth.models.User.is_authenticated()>` and either redirect to a\nlogin page::\n\n    from django.shortcuts import redirect\n\n    def my_view(request):\n        if not request.user.is_authenticated():\n            return redirect('/login/?next=%s' % request.path)\n        # ...\n\n...or display an error message::\n\n    from django.shortcuts import render\n\n    def my_view(request):\n        if not request.user.is_authenticated():\n            return render(request, 'myapp/login_error.html')\n        # ...\n\n.. currentmodule:: django.contrib.auth.decorators\n\nThe login_required decorator\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. function:: login_required([redirect_field_name=REDIRECT_FIELD_NAME, login_url=None])\n\n    As a shortcut, you can use the convenient\n    :func:`~django.contrib.auth.decorators.login_required` decorator::\n\n        from django.contrib.auth.decorators import login_required\n\n        @login_required\n        def my_view(request):\n            ...\n\n    :func:`~django.contrib.auth.decorators.login_required` does the following:\n\n    * If the user isn't logged in, redirect to\n      :setting:`settings.LOGIN_URL <LOGIN_URL>`, passing the current absolute\n      path in the query string. Example: ``/accounts/login/?next=/polls/3/``.\n\n    * If the user is logged in, execute the view normally. The view code is\n      free to assume the user is logged in.\n\n    By default, the path that the user should be redirected to upon\n    successful authentication is stored in a query string parameter called\n    ``\"next\"``. If you would prefer to use a different name for this parameter,\n    :func:`~django.contrib.auth.decorators.login_required` takes an\n    optional ``redirect_field_name`` parameter::\n\n        from django.contrib.auth.decorators import login_required\n\n        @login_required(redirect_field_name='my_redirect_field')\n        def my_view(request):\n            ...\n\n    Note that if you provide a value to ``redirect_field_name``, you will most\n    likely need to customize your login template as well, since the template\n    context variable which stores the redirect path will use the value of\n    ``redirect_field_name`` as its key rather than ``\"next\"`` (the default).\n\n    :func:`~django.contrib.auth.decorators.login_required` also takes an\n    optional ``login_url`` parameter. Example::\n\n        from django.contrib.auth.decorators import login_required\n\n        @login_required(login_url='/accounts/login/')\n        def my_view(request):\n            ...\n\n    Note that if you don't specify the ``login_url`` parameter, you'll need to\n    ensure that the :setting:`settings.LOGIN_URL <LOGIN_URL>` and your login\n    view are properly associated. For example, using the defaults, add the\n    following line to your URLconf::\n\n        (r'^accounts/login/$', 'django.contrib.auth.views.login'),\n\n    .. versionchanged:: 1.5\n\n    The :setting:`settings.LOGIN_URL <LOGIN_URL>` also accepts\n    view function names and :ref:`named URL patterns <naming-url-patterns>`.\n    This allows you to freely remap your login view within your URLconf\n    without having to update the setting.\n\n.. note::\n\n    The login_required decorator does NOT check the is_active flag on a user.\n\nLimiting access to logged-in users that pass a test\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nTo limit access based on certain permissions or some other test, you'd do\nessentially the same thing as described in the previous section.\n\nThe simple way is to run your test on :attr:`request.user\n<django.http.HttpRequest.user>` in the view directly. For example, this view\nchecks to make sure the user has an email in the desired domain::\n\n    def my_view(request):\n        if not '@example.com' in request.user.email:\n            return HttpResponse(\"You can't vote in this poll.\")\n        # ...\n\n.. function:: user_passes_test(func, [login_url=None])\n\n    As a shortcut, you can use the convenient ``user_passes_test`` decorator::\n\n        from django.contrib.auth.decorators import user_passes_test\n\n        def email_check(user):\n            return '@example.com' in user.email\n\n        @user_passes_test(email_check)\n        def my_view(request):\n            ...\n\n    :func:`~django.contrib.auth.decorators.user_passes_test` takes a required\n    argument: a callable that takes a\n    :class:`~django.contrib.auth.models.User` object and returns ``True`` if\n    the user is allowed to view the page. Note that\n    :func:`~django.contrib.auth.decorators.user_passes_test` does not\n    automatically check that the :class:`~django.contrib.auth.models.User` is\n    not anonymous.\n\n    :func:`~django.contrib.auth.decorators.user_passes_test()` takes an\n    optional ``login_url`` argument, which lets you specify the URL for your\n    login page (:setting:`settings.LOGIN_URL <LOGIN_URL>` by default).\n\n    For example::\n\n        @user_passes_test(email_check, login_url='/login/')\n        def my_view(request):\n            ...\n\nThe permission_required decorator\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. function:: permission_required([login_url=None, raise_exception=False])\n\n    It's a relatively common task to check whether a user has a particular\n    permission. For that reason, Django provides a shortcut for that case: the\n    :func:`~django.contrib.auth.decorators.permission_required()` decorator.::\n\n        from django.contrib.auth.decorators import permission_required\n\n        @permission_required('polls.can_vote')\n        def my_view(request):\n            ...\n\n    As for the :meth:`~django.contrib.auth.models.User.has_perm` method,\n    permission names take the form ``\"<app label>.<permission codename>\"``\n    (i.e. ``polls.can_vote`` for a permission on a model in the ``polls``\n    application).\n\n    Note that :func:`~django.contrib.auth.decorators.permission_required()`\n    also takes an optional ``login_url`` parameter. Example::\n\n        from django.contrib.auth.decorators import permission_required\n\n        @permission_required('polls.can_vote', login_url='/loginpage/')\n        def my_view(request):\n            ...\n\n    As in the :func:`~django.contrib.auth.decorators.login_required` decorator,\n    ``login_url`` defaults to :setting:`settings.LOGIN_URL <LOGIN_URL>`.\n\n    .. versionchanged:: 1.4\n\n    Added ``raise_exception`` parameter. If given, the decorator will raise\n    :exc:`~django.core.exceptions.PermissionDenied`, prompting\n    :ref:`the 403 (HTTP Forbidden) view<http_forbidden_view>` instead of\n    redirecting to the login page.\n\nApplying permissions to generic views\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nTo apply a permission to a :doc:`class-based generic view\n</ref/class-based-views/index>`, decorate the :meth:`View.dispatch\n<django.views.generic.base.View.dispatch>` method on the class. See\n:ref:`decorating-class-based-views` for details.\n\n\n.. _built-in-auth-views:\n\nAuthentication Views\n--------------------\n\n.. module:: django.contrib.auth.views\n\nDjango provides several views that you can use for handling login, logout, and\npassword management. These make use of the :ref:`stock auth forms\n<built-in-auth-forms>` but you can pass in your own forms as well.\n\nDjango provides no default template for the authentication views - however the\ntemplate context is documented for each view below.\n\n.. versionadded:: 1.4\n\nThe built-in views all return\na :class:`~django.template.response.TemplateResponse` instance, which allows\nyou to easily customize the response data before rendering.  For more details,\nsee the :doc:`TemplateResponse documentation </ref/template-response>`.\n\nMost built-in authentication views provide a URL name for easier reference. See\n:doc:`the URL documentation </topics/http/urls>` for details on using named URL\npatterns.\n\n\n.. function:: login(request, [template_name, redirect_field_name, authentication_form])\n\n    **URL name:** ``login``\n\n    See :doc:`the URL documentation </topics/http/urls>` for details on using\n    named URL patterns.\n\n    Here's what ``django.contrib.auth.views.login`` does:\n\n    * If called via ``GET``, it displays a login form that POSTs to the\n      same URL. More on this in a bit.\n\n    * If called via ``POST`` with user submitted credentials, it tries to log\n      the user in. If login is successful, the view redirects to the URL\n      specified in ``next``. If ``next`` isn't provided, it redirects to\n      :setting:`settings.LOGIN_REDIRECT_URL <LOGIN_REDIRECT_URL>` (which\n      defaults to ``/accounts/profile/``). If login isn't successful, it\n      redisplays the login form.\n\n    It's your responsibility to provide the html for the login template\n    , called ``registration/login.html`` by default. This template gets passed\n    four template context variables:\n\n    * ``form``: A :class:`~django.forms.Form` object representing the\n      :class:`~django.contrib.auth.forms.AuthenticationForm`.\n\n    * ``next``: The URL to redirect to after successful login. This may\n      contain a query string, too.\n\n    * ``site``: The current :class:`~django.contrib.sites.models.Site`,\n      according to the :setting:`SITE_ID` setting. If you don't have the\n      site framework installed, this will be set to an instance of\n      :class:`~django.contrib.sites.models.RequestSite`, which derives the\n      site name and domain from the current\n      :class:`~django.http.HttpRequest`.\n\n    * ``site_name``: An alias for ``site.name``. If you don't have the site\n      framework installed, this will be set to the value of\n      :attr:`request.META['SERVER_NAME'] <django.http.HttpRequest.META>`.\n      For more on sites, see :doc:`/ref/contrib/sites`.\n\n    If you'd prefer not to call the template :file:`registration/login.html`,\n    you can pass the ``template_name`` parameter via the extra arguments to\n    the view in your URLconf. For example, this URLconf line would use\n    :file:`myapp/login.html` instead::\n\n        (r'^accounts/login/$', 'django.contrib.auth.views.login', {'template_name': 'myapp/login.html'}),\n\n    You can also specify the name of the ``GET`` field which contains the URL\n    to redirect to after login by passing ``redirect_field_name`` to the view.\n    By default, the field is called ``next``.\n\n    Here's a sample :file:`registration/login.html` template you can use as a\n    starting point. It assumes you have a :file:`base.html` template that\n    defines a ``content`` block:\n\n    .. code-block:: html+django\n\n        {% extends \"base.html\" %}\n\n        {% block content %}\n\n        {% if form.errors %}\n        <p>Your username and password didn't match. Please try again.</p>\n        {% endif %}\n\n        <form method=\"post\" action=\"{% url 'django.contrib.auth.views.login' %}\">\n        {% csrf_token %}\n        <table>\n        <tr>\n            <td>{{ form.username.label_tag }}</td>\n            <td>{{ form.username }}</td>\n        </tr>\n        <tr>\n            <td>{{ form.password.label_tag }}</td>\n            <td>{{ form.password }}</td>\n        </tr>\n        </table>\n\n        <input type=\"submit\" value=\"login\" />\n        <input type=\"hidden\" name=\"next\" value=\"{{ next }}\" />\n        </form>\n\n        {% endblock %}\n\n    If you have customized authentication (see\n    :doc:`Customizing Authentication </topics/auth/customizing>`) you can pass a custom authentication form\n    to the login view via the ``authentication_form`` parameter. This form must\n    accept a ``request`` keyword argument in its ``__init__`` method, and\n    provide a ``get_user`` method which returns the authenticated user object\n    (this method is only ever called after successful form validation).\n\n    .. _forms documentation: ../forms/\n    .. _site framework docs: ../sites/\n\n\n.. function:: logout(request, [next_page, template_name, redirect_field_name])\n\n    Logs a user out.\n\n    **URL name:** ``logout``\n\n    **Optional arguments:**\n\n    * ``next_page``: The URL to redirect to after logout.\n\n    * ``template_name``: The full name of a template to display after\n      logging the user out. Defaults to\n      :file:`registration/logged_out.html` if no argument is supplied.\n\n    * ``redirect_field_name``: The name of a ``GET`` field containing the\n      URL to redirect to after log out. Overrides ``next_page`` if the given\n      ``GET`` parameter is passed.\n\n    **Template context:**\n\n    * ``title``: The string \"Logged out\", localized.\n\n    * ``site``: The current :class:`~django.contrib.sites.models.Site`,\n      according to the :setting:`SITE_ID` setting. If you don't have the\n      site framework installed, this will be set to an instance of\n      :class:`~django.contrib.sites.models.RequestSite`, which derives the\n      site name and domain from the current\n      :class:`~django.http.HttpRequest`.\n\n    * ``site_name``: An alias for ``site.name``. If you don't have the site\n      framework installed, this will be set to the value of\n      :attr:`request.META['SERVER_NAME'] <django.http.HttpRequest.META>`.\n      For more on sites, see :doc:`/ref/contrib/sites`.\n\n.. function:: logout_then_login(request[, login_url])\n\n    Logs a user out, then redirects to the login page.\n\n    **URL name:** No default URL provided\n\n    **Optional arguments:**\n\n    * ``login_url``: The URL of the login page to redirect to.\n      Defaults to :setting:`settings.LOGIN_URL <LOGIN_URL>` if not supplied.\n\n.. function:: password_change(request[, template_name, post_change_redirect, password_change_form])\n\n    Allows a user to change their password.\n\n    **URL name:** ``password_change``\n\n    **Optional arguments:**\n\n    * ``template_name``: The full name of a template to use for\n      displaying the password change form. Defaults to\n      :file:`registration/password_change_form.html` if not supplied.\n\n    * ``post_change_redirect``: The URL to redirect to after a successful\n      password change.\n\n    * ``password_change_form``: A custom \"change password\" form which must\n      accept a ``user`` keyword argument. The form is responsible for\n      actually changing the user's password. Defaults to\n      :class:`~django.contrib.auth.forms.PasswordChangeForm`.\n\n    **Template context:**\n\n    * ``form``: The password change form (see ``password_change_form`` above).\n\n.. function:: password_change_done(request[, template_name])\n\n    The page shown after a user has changed their password.\n\n    **URL name:** ``password_change_done``\n\n    **Optional arguments:**\n\n    * ``template_name``: The full name of a template to use.\n      Defaults to :file:`registration/password_change_done.html` if not\n      supplied.\n\n.. function:: password_reset(request[, is_admin_site, template_name, email_template_name, password_reset_form, token_generator, post_reset_redirect, from_email])\n\n    Allows a user to reset their password by generating a one-time use link\n    that can be used to reset the password, and sending that link to the\n    user's registered email address.\n\n    .. versionchanged:: 1.4\n        Users flagged with an unusable password (see\n        :meth:`~django.contrib.auth.models.User.set_unusable_password()`\n        will not be able to request a password reset to prevent misuse\n        when using an external authentication source like LDAP.\n\n    **URL name:** ``password_reset``\n\n    **Optional arguments:**\n\n    * ``template_name``: The full name of a template to use for\n      displaying the password reset form. Defaults to\n      :file:`registration/password_reset_form.html` if not supplied.\n\n    * ``email_template_name``: The full name of a template to use for\n      generating the email with the reset password link. Defaults to\n      :file:`registration/password_reset_email.html` if not supplied.\n\n    * ``subject_template_name``: The full name of a template to use for\n      the subject of the email with the reset password link. Defaults\n      to :file:`registration/password_reset_subject.txt` if not supplied.\n\n      .. versionadded:: 1.4\n\n    * ``password_reset_form``: Form that will be used to get the email of\n      the user to reset the password for. Defaults to\n      :class:`~django.contrib.auth.forms.PasswordResetForm`.\n\n    * ``token_generator``: Instance of the class to check the one time link.\n      This will default to ``default_token_generator``, it's an instance of\n      ``django.contrib.auth.tokens.PasswordResetTokenGenerator``.\n\n    * ``post_reset_redirect``: The URL to redirect to after a successful\n      password reset request.\n\n    * ``from_email``: A valid email address. By default Django uses\n      the :setting:`DEFAULT_FROM_EMAIL`.\n\n    **Template context:**\n\n    * ``form``: The form (see ``password_reset_form`` above) for resetting\n      the user's password.\n\n    **Email template context:**\n\n    * ``email``: An alias for ``user.email``\n\n    * ``user``: The current :class:`~django.contrib.auth.models.User`,\n      according to the ``email`` form field. Only active users are able to\n      reset their passwords (``User.is_active is True``).\n\n    * ``site_name``: An alias for ``site.name``. If you don't have the site\n      framework installed, this will be set to the value of\n      :attr:`request.META['SERVER_NAME'] <django.http.HttpRequest.META>`.\n      For more on sites, see :doc:`/ref/contrib/sites`.\n\n    * ``domain``: An alias for ``site.domain``. If you don't have the site\n      framework installed, this will be set to the value of\n      ``request.get_host()``.\n\n    * ``protocol``: http or https\n\n    * ``uid``: The user's id encoded in base 36.\n\n    * ``token``: Token to check that the reset link is valid.\n\n    Sample ``registration/password_reset_email.html`` (email body template):\n\n    .. code-block:: html+django\n\n        Someone asked for password reset for email {{ email }}. Follow the link below:\n        {{ protocol}}://{{ domain }}{% url 'password_reset_confirm' uidb36=uid token=token %}\n\n    The same template context is used for subject template. Subject must be\n    single line plain text string.\n\n\n.. function:: password_reset_done(request[, template_name])\n\n    The page shown after a user has been emailed a link to reset their\n    password. This view is called by default if the :func:`password_reset` view\n    doesn't have an explicit ``post_reset_redirect`` URL set.\n\n    **URL name:** ``password_reset_done``\n\n    **Optional arguments:**\n\n    * ``template_name``: The full name of a template to use.\n      Defaults to :file:`registration/password_reset_done.html` if not\n      supplied.\n\n.. function:: password_reset_confirm(request[, uidb36, token, template_name, token_generator, set_password_form, post_reset_redirect])\n\n    Presents a form for entering a new password.\n\n    **URL name:** ``password_reset_confirm``\n\n    **Optional arguments:**\n\n    * ``uidb36``: The user's id encoded in base 36. Defaults to ``None``.\n\n    * ``token``: Token to check that the password is valid. Defaults to\n      ``None``.\n\n    * ``template_name``: The full name of a template to display the confirm\n      password view. Default value is :file:`registration/password_reset_confirm.html`.\n\n    * ``token_generator``: Instance of the class to check the password. This\n      will default to ``default_token_generator``, it's an instance of\n      ``django.contrib.auth.tokens.PasswordResetTokenGenerator``.\n\n    * ``set_password_form``: Form that will be used to set the password.\n      Defaults to :class:`~django.contrib.auth.forms.SetPasswordForm`\n\n    * ``post_reset_redirect``: URL to redirect after the password reset\n      done. Defaults to ``None``.\n\n    **Template context:**\n\n    * ``form``: The form (see ``set_password_form`` above) for setting the\n      new user's password.\n\n    * ``validlink``: Boolean, True if the link (combination of uidb36 and\n      token) is valid or unused yet.\n\n.. function:: password_reset_complete(request[,template_name])\n\n   Presents a view which informs the user that the password has been\n   successfully changed.\n\n   **URL name:** ``password_reset_complete``\n\n   **Optional arguments:**\n\n   * ``template_name``: The full name of a template to display the view.\n     Defaults to :file:`registration/password_reset_complete.html`.\n\nHelper functions\n----------------\n\n.. currentmodule:: django.contrib.auth.views\n\n.. function:: redirect_to_login(next[, login_url, redirect_field_name])\n\n    Redirects to the login page, and then back to another URL after a\n    successful login.\n\n    **Required arguments:**\n\n    * ``next``: The URL to redirect to after a successful login.\n\n    **Optional arguments:**\n\n    * ``login_url``: The URL of the login page to redirect to.\n      Defaults to :setting:`settings.LOGIN_URL <LOGIN_URL>` if not supplied.\n\n    * ``redirect_field_name``: The name of a ``GET`` field containing the\n      URL to redirect to after log out. Overrides ``next`` if the given\n      ``GET`` parameter is passed.\n\n\n.. _built-in-auth-forms:\n\nBuilt-in forms\n--------------\n\n.. module:: django.contrib.auth.forms\n\nIf you don't want to use the built-in views, but want the convenience of not\nhaving to write forms for this functionality, the authentication system\nprovides several built-in forms located in :mod:`django.contrib.auth.forms`:\n\n.. note::\n    The built-in authentication forms make certain assumptions about the user\n    model that they are working with. If you're using a :ref:`custom User model\n    <auth-custom-user>`, it may be necessary to define your own forms for the\n    authentication system. For more information, refer to the documentation\n    about :ref:`using the built-in authentication forms with custom user models\n    <custom-users-and-the-built-in-auth-forms>`.\n\n.. class:: AdminPasswordChangeForm\n\n    A form used in the admin interface to change a user's password.\n\n.. class:: AuthenticationForm\n\n    A form for logging a user in.\n\n.. class:: PasswordChangeForm\n\n    A form for allowing a user to change their password.\n\n.. class:: PasswordResetForm\n\n    A form for generating and emailing a one-time use link to reset a\n    user's password.\n\n.. class:: SetPasswordForm\n\n    A form that lets a user change his/her password without entering the old\n    password.\n\n.. class:: UserChangeForm\n\n    A form used in the admin interface to change a user's information and\n    permissions.\n\n.. class:: UserCreationForm\n\n    A form for creating a new user.\n\n.. currentmodule:: django.contrib.auth\n\n\nAuthentication data in templates\n--------------------------------\n\nThe currently logged-in user and his/her permissions are made available in the\n:doc:`template context </ref/templates/api>` when you use\n:class:`~django.template.RequestContext`.\n\n.. admonition:: Technicality\n\n   Technically, these variables are only made available in the template context\n   if you use :class:`~django.template.RequestContext` *and* your\n   :setting:`TEMPLATE_CONTEXT_PROCESSORS` setting contains\n   ``\"django.contrib.auth.context_processors.auth\"``, which is default. For\n   more, see the :ref:`RequestContext docs <subclassing-context-requestcontext>`.\n\nUsers\n~~~~~\n\nWhen rendering a template :class:`~django.template.RequestContext`, the\ncurrently logged-in user, either a  :class:`~django.contrib.auth.models.User`\ninstance or an :class:`~django.contrib.auth.models.AnonymousUser` instance, is\nstored in the template variable ``{{ user }}``:\n\n.. code-block:: html+django\n\n    {% if user.is_authenticated %}\n        <p>Welcome, {{ user.username }}. Thanks for logging in.</p>\n    {% else %}\n        <p>Welcome, new user. Please log in.</p>\n    {% endif %}\n\nThis template context variable is not available if a ``RequestContext`` is not\nbeing used.\n\nPermissions\n~~~~~~~~~~~\n\nThe currently logged-in user's permissions are stored in the template variable\n``{{ perms }}``. This is an instance of\n``django.contrib.auth.context_processors.PermWrapper``, which is a\ntemplate-friendly proxy of permissions.\n\nIn the ``{{ perms }}`` object, single-attribute lookup is a proxy to\n:meth:`User.has_module_perms <django.contrib.auth.models.User.has_module_perms>`.\nThis example would display ``True`` if the logged-in user had any permissions\nin the ``foo`` app::\n\n    {{ perms.foo }}\n\nTwo-level-attribute lookup is a proxy to\n:meth:`User.has_perm <django.contrib.auth.models.User.has_perm>`. This example\nwould display ``True`` if the logged-in user had the permission\n``foo.can_vote``::\n\n    {{ perms.foo.can_vote }}\n\nThus, you can check permissions in template ``{% if %}`` statements:\n\n.. code-block:: html+django\n\n    {% if perms.foo %}\n        <p>You have permission to do something in the foo app.</p>\n        {% if perms.foo.can_vote %}\n            <p>You can vote!</p>\n        {% endif %}\n        {% if perms.foo.can_drive %}\n            <p>You can drive!</p>\n        {% endif %}\n    {% else %}\n        <p>You don't have permission to do anything in the foo app.</p>\n    {% endif %}\n\n.. versionadded:: 1.5\n    Permission lookup by \"if in\".\n\nIt is possible to also look permissions up by ``{% if in %}`` statements.\nFor example:\n\n.. code-block:: html+django\n\n    {% if 'foo' in perms %}\n        {% if 'foo.can_vote' in perms %}\n            <p>In lookup works, too.</p>\n        {% endif %}\n    {% endif %}\n\n.. _auth-admin:\n\nManaging users in the admin\n===========================\n\nWhen you have both ``django.contrib.admin`` and ``django.contrib.auth``\ninstalled, the admin provides a convenient way to view and manage users,\ngroups, and permissions. Users can be created and deleted like any Django\nmodel. Groups can be created, and permissions can be assigned to users or\ngroups. A log of user edits to models made within the admin is also stored and\ndisplayed.\n\nCreating Users\n--------------\n\nYou should see a link to \"Users\" in the \"Auth\"\nsection of the main admin index page. The \"Add user\" admin page is different\nthan standard admin pages in that it requires you to choose a username and\npassword before allowing you to edit the rest of the user's fields.\n\nAlso note: if you want a user account to be able to create users using the\nDjango admin site, you'll need to give them permission to add users *and*\nchange users (i.e., the \"Add user\" and \"Change user\" permissions). If an\naccount has permission to add users but not to change them, that account won't\nbe able to add users. Why? Because if you have permission to add users, you\nhave the power to create superusers, which can then, in turn, change other\nusers. So Django requires add *and* change permissions as a slight security\nmeasure.\n\nChanging Passwords\n------------------\n\nUser passwords are not displayed in the admin (nor stored in the database), but\nthe :doc:`password storage details </topics/auth/passwords>` are displayed.\nIncluded in the display of this information is a link to\na password change form that allows admins to change user passwords.\n"
  },
  {
    "path": "Django-1.5.1/docs/topics/auth/index.txt",
    "content": "=============================\nUser authentication in Django\n=============================\n\n.. toctree::\n   :hidden:\n\n   default\n   passwords\n   customizing\n\n.. module:: django.contrib.auth\n   :synopsis: Django's authentication framework.\n\nDjango comes with an user authentication system. It handles user accounts,\ngroups, permissions and cookie-based user sessions. This section of the\ndocumentation explains how the default implementation works out of the box, as\nwell as how to :doc:`extend and customize </topics/auth/customizing>` it to\nsuit your project's needs.\n\nOverview\n========\n\nThe Django authentication system handles both authentication and authorization.\nBriefly, authentication verifies a user is who they claim to be, and\nauthorization determines what an authenticated user is allowed to do. Here the\nterm authentication is used to refer to both tasks.\n\nThe auth system consists of:\n\n* Users\n* Permissions: Binary (yes/no) flags designating whether a user may perform\n  a certain task.\n* Groups: A generic way of applying labels and permissions to more than one\n  user.\n* A configurable password hashing system\n* Forms and view tools for logging in users, or restricting content\n* A pluggable backend system\n\nThe authentication system in Django aims to be very generic and doesn't provide\nsome features commonly found in web authentication systems. Solutions for some\nof these common problems have been implemented in third-party packages:\n\n* Password strength checking\n* Throttling of login attempts\n* Authentication against third-parties (OAuth, for example)\n\nInstallation\n============\n\nAuthentication support is bundled as a Django contrib module in\n``django.contrib.auth``. By default, the required configuration is already\nincluded in the :file:`settings.py` generated by :djadmin:`django-admin.py\nstartproject <startproject>`, these consist of two items listed in your\n:setting:`INSTALLED_APPS` setting:\n\n1. ``'django.contrib.auth'`` contains the core of the authentication framework,\n   and its default models.\n2. ``'django.contrib.contenttypes'`` is the Django :doc:`content type system\n   </ref/contrib/contenttypes>`, which allows permissions to be associated with\n   models you create.\n\nand two items in your :setting:`MIDDLEWARE_CLASSES` setting:\n\n1. :class:`~django.contrib.sessions.middleware.SessionMiddleware` manages\n   :doc:`sessions </topics/http/sessions>` across requests.\n2. :class:`~django.contrib.auth.middleware.AuthenticationMiddleware` associates\n   users with requests using sessions.\n\nWith these settings in place, running the command ``manage.py syncdb`` creates\nthe necessary database tables for auth related models, creates permissions for\nany models defined in your installed apps, and prompts you to create\na superuser account the first time you run it.\n\nUsage\n=====\n\n:doc:`Using Django's default implementation <default>`\n\n* :ref:`Working with User objects <user-objects>`\n* :ref:`Permissions and authorization <topic-authorization>`\n* :ref:`Authentication in web requests <auth-web-requests>`\n* :ref:`Managing users in the admin <auth-admin>`\n\n:doc:`API reference for the default implementation </ref/contrib/auth>`\n\n:doc:`Customizing Users and authentication <customizing>`\n\n:doc:`Password management in Django <passwords>`\n"
  },
  {
    "path": "Django-1.5.1/docs/topics/auth/passwords.txt",
    "content": "=============================\nPassword management in Django\n=============================\n\nPassword management is something that should generally not be reinvented\nunnecessarily, and Django endeavors to provide a secure and flexible set of\ntools for managing user passwords. This document describes how Django stores\npasswords, how the storage hashing can be configured, and some utilities to\nwork with hashed passwords.\n\n.. _auth_password_storage:\n\nHow Django stores passwords\n===========================\n\n.. versionadded:: 1.4\n   Django 1.4 introduces a new flexible password storage system and uses\n   PBKDF2 by default. Previous versions of Django used SHA1, and other\n   algorithms couldn't be chosen.\n\nThe :attr:`~django.contrib.auth.models.User.password` attribute of a\n:class:`~django.contrib.auth.models.User` object is a string in this format::\n\n    <algorithm>$<iterations>$<salt>$<hash>\n\nThose are the components used for storing a User's password, separated by the\ndollar-sign character and consist of: the hashing algorithm, the number of\nalgorithm iterations (work factor), the random salt, and the resulting password\nhash.  The algorithm is one of a number of one-way hashing or password storage\nalgorithms Django can use; see below. Iterations describe the number of times\nthe algorithm is run over the hash. Salt is the random seed used and the hash\nis the result of the one-way function.\n\nBy default, Django uses the PBKDF2_ algorithm with a SHA256 hash, a\npassword stretching mechanism recommended by NIST_. This should be\nsufficient for most users: it's quite secure, requiring massive\namounts of computing time to break.\n\nHowever, depending on your requirements, you may choose a different\nalgorithm, or even use a custom algorithm to match your specific\nsecurity situation. Again, most users shouldn't need to do this -- if\nyou're not sure, you probably don't.  If you do, please read on:\n\nDjango chooses the algorithm to use by consulting the\n:setting:`PASSWORD_HASHERS` setting. This is a list of hashing algorithm\nclasses that this Django installation supports. The first entry in this list\n(that is, ``settings.PASSWORD_HASHERS[0]``) will be used to store passwords,\nand all the other entries are valid hashers that can be used to check existing\npasswords.  This means that if you want to use a different algorithm, you'll\nneed to modify :setting:`PASSWORD_HASHERS` to list your preferred algorithm\nfirst in the list.\n\nThe default for :setting:`PASSWORD_HASHERS` is::\n\n    PASSWORD_HASHERS = (\n        'django.contrib.auth.hashers.PBKDF2PasswordHasher',\n        'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher',\n        'django.contrib.auth.hashers.BCryptPasswordHasher',\n        'django.contrib.auth.hashers.SHA1PasswordHasher',\n        'django.contrib.auth.hashers.MD5PasswordHasher',\n        'django.contrib.auth.hashers.CryptPasswordHasher',\n    )\n\nThis means that Django will use PBKDF2_ to store all passwords, but will support\nchecking passwords stored with PBKDF2SHA1, bcrypt_, SHA1_, etc. The next few\nsections describe a couple of common ways advanced users may want to modify this\nsetting.\n\n.. _bcrypt_usage:\n\nUsing bcrypt with Django\n------------------------\n\nBcrypt_ is a popular password storage algorithm that's specifically designed\nfor long-term password storage. It's not the default used by Django since it\nrequires the use of third-party libraries, but since many people may want to\nuse it Django supports bcrypt with minimal effort.\n\nTo use Bcrypt as your default storage algorithm, do the following:\n\n1. Install the `py-bcrypt`_ library (probably by running ``sudo pip install\n   py-bcrypt``, or downloading the library and installing it with ``python\n   setup.py install``).\n\n2. Modify :setting:`PASSWORD_HASHERS` to list ``BCryptPasswordHasher``\n   first. That is, in your settings file, you'd put::\n\n        PASSWORD_HASHERS = (\n            'django.contrib.auth.hashers.BCryptPasswordHasher',\n            'django.contrib.auth.hashers.PBKDF2PasswordHasher',\n            'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher',\n            'django.contrib.auth.hashers.SHA1PasswordHasher',\n            'django.contrib.auth.hashers.MD5PasswordHasher',\n            'django.contrib.auth.hashers.CryptPasswordHasher',\n        )\n\n   (You need to keep the other entries in this list, or else Django won't\n   be able to upgrade passwords; see below).\n\nThat's it -- now your Django install will use Bcrypt as the default storage\nalgorithm.\n\n.. admonition:: Password truncation with BCryptPasswordHasher\n\n    The designers of bcrypt truncate all passwords at 72 characters which means\n    that ``bcrypt(password_with_100_chars) == bcrypt(password_with_100_chars[:72])``.\n    ``BCryptPasswordHasher`` does not have any special handling and\n    thus is also subject to this hidden password length limit. The practical\n    ramification of this truncation is pretty marginal as the average user does\n    not have a password greater than 72 characters in length and even being\n    truncated at 72 the compute powered required to brute force bcrypt in any\n    useful amount of time is still astronomical.\n\n.. admonition:: Other bcrypt implementations\n\n   There are several other implementations that allow bcrypt to be\n   used with Django. Django's bcrypt support is NOT directly\n   compatible with these. To upgrade, you will need to modify the\n   hashes in your database to be in the form ``bcrypt$(raw bcrypt\n   output)``. For example:\n   ``bcrypt$$2a$12$NT0I31Sa7ihGEWpka9ASYrEFkhuTNeBQ2xfZskIiiJeyFXhRgS.Sy``.\n\nIncreasing the work factor\n--------------------------\n\nThe PBKDF2 and bcrypt algorithms use a number of iterations or rounds of\nhashing. This deliberately slows down attackers, making attacks against hashed\npasswords harder. However, as computing power increases, the number of\niterations needs to be increased. We've chosen a reasonable default (and will\nincrease it with each release of Django), but you may wish to tune it up or\ndown, depending on your security needs and available processing power. To do so,\nyou'll subclass the appropriate algorithm and override the ``iterations``\nparameters. For example, to increase the number of iterations used by the\ndefault PBKDF2 algorithm:\n\n1. Create a subclass of ``django.contrib.auth.hashers.PBKDF2PasswordHasher``::\n\n        from django.contrib.auth.hashers import PBKDF2PasswordHasher\n\n        class MyPBKDF2PasswordHasher(PBKDF2PasswordHasher):\n            \"\"\"\n            A subclass of PBKDF2PasswordHasher that uses 100 times more iterations.\n            \"\"\"\n            iterations = PBKDF2PasswordHasher.iterations * 100\n\n   Save this somewhere in your project. For example, you might put this in\n   a file like ``myproject/hashers.py``.\n\n2. Add your new hasher as the first entry in :setting:`PASSWORD_HASHERS`::\n\n        PASSWORD_HASHERS = (\n            'myproject.hashers.MyPBKDF2PasswordHasher',\n            'django.contrib.auth.hashers.PBKDF2PasswordHasher',\n            'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher',\n            'django.contrib.auth.hashers.BCryptPasswordHasher',\n            'django.contrib.auth.hashers.SHA1PasswordHasher',\n            'django.contrib.auth.hashers.MD5PasswordHasher',\n            'django.contrib.auth.hashers.CryptPasswordHasher',\n        )\n\n\nThat's it -- now your Django install will use more iterations when it\nstores passwords using PBKDF2.\n\nPassword upgrading\n------------------\n\nWhen users log in, if their passwords are stored with anything other than\nthe preferred algorithm, Django will automatically upgrade the algorithm\nto the preferred one. This means that old installs of Django will get\nautomatically more secure as users log in, and it also means that you\ncan switch to new (and better) storage algorithms as they get invented.\n\nHowever, Django can only upgrade passwords that use algorithms mentioned in\n:setting:`PASSWORD_HASHERS`, so as you upgrade to new systems you should make\nsure never to *remove* entries from this list. If you do, users using un-\nmentioned algorithms won't be able to upgrade.\n\n.. _sha1: http://en.wikipedia.org/wiki/SHA1\n.. _pbkdf2: http://en.wikipedia.org/wiki/PBKDF2\n.. _nist: http://csrc.nist.gov/publications/nistpubs/800-132/nist-sp800-132.pdf\n.. _bcrypt: http://en.wikipedia.org/wiki/Bcrypt\n.. _py-bcrypt: http://pypi.python.org/pypi/py-bcrypt/\n\n\nManually managing a user's password\n===================================\n\n.. module:: django.contrib.auth.hashers\n\n.. versionadded:: 1.4\n    The :mod:`django.contrib.auth.hashers` module provides a set of functions\n    to create and validate hashed password. You can use them independently\n    from the ``User`` model.\n\n.. function:: check_password(password, encoded)\n\n    .. versionadded:: 1.4\n\n    If you'd like to manually authenticate a user by comparing a plain-text\n    password to the hashed password in the database, use the convenience\n    function :func:`check_password`. It takes two arguments: the plain-text\n    password to check, and the full value of a user's ``password`` field in the\n    database to check against, and returns ``True`` if they match, ``False``\n    otherwise.\n\n.. function:: make_password(password[, salt, hashers])\n\n    .. versionadded:: 1.4\n\n    Creates a hashed password in the format used by this application. It takes\n    one mandatory argument: the password in plain-text. Optionally, you can\n    provide a salt and a hashing algorithm to use, if you don't want to use the\n    defaults (first entry of ``PASSWORD_HASHERS`` setting).\n    Currently supported algorithms are: ``'pbkdf2_sha256'``, ``'pbkdf2_sha1'``,\n    ``'bcrypt'`` (see :ref:`bcrypt_usage`), ``'sha1'``, ``'md5'``,\n    ``'unsalted_md5'`` (only for backward compatibility) and ``'crypt'``\n    if you have the ``crypt`` library installed. If the password argument is\n    ``None``, an unusable password is returned (a one that will be never\n    accepted by :func:`check_password`).\n\n.. function:: is_password_usable(encoded_password)\n\n   .. versionadded:: 1.4\n\n   Checks if the given string is a hashed password that has a chance\n   of being verified against :func:`check_password`.\n"
  },
  {
    "path": "Django-1.5.1/docs/topics/cache.txt",
    "content": "========================\nDjango's cache framework\n========================\n\nA fundamental trade-off in dynamic Web sites is, well, they're dynamic. Each\ntime a user requests a page, the Web server makes all sorts of calculations --\nfrom database queries to template rendering to business logic -- to create the\npage that your site's visitor sees. This is a lot more expensive, from a\nprocessing-overhead perspective, than your standard\nread-a-file-off-the-filesystem server arrangement.\n\nFor most Web applications, this overhead isn't a big deal. Most Web\napplications aren't washingtonpost.com or slashdot.org; they're simply small-\nto medium-sized sites with so-so traffic. But for medium- to high-traffic\nsites, it's essential to cut as much overhead as possible.\n\nThat's where caching comes in.\n\nTo cache something is to save the result of an expensive calculation so that\nyou don't have to perform the calculation next time. Here's some pseudocode\nexplaining how this would work for a dynamically generated Web page::\n\n    given a URL, try finding that page in the cache\n    if the page is in the cache:\n        return the cached page\n    else:\n        generate the page\n        save the generated page in the cache (for next time)\n        return the generated page\n\nDjango comes with a robust cache system that lets you save dynamic pages so\nthey don't have to be calculated for each request. For convenience, Django\noffers different levels of cache granularity: You can cache the output of\nspecific views, you can cache only the pieces that are difficult to produce,\nor you can cache your entire site.\n\nDjango also works well with \"upstream\" caches, such as `Squid\n<http://www.squid-cache.org>`_ and browser-based caches. These are the types of\ncaches that you don't directly control but to which you can provide hints (via\nHTTP headers) about which parts of your site should be cached, and how.\n\nSetting up the cache\n====================\n\nThe cache system requires a small amount of setup. Namely, you have to tell it\nwhere your cached data should live -- whether in a database, on the filesystem\nor directly in memory. This is an important decision that affects your cache's\nperformance; yes, some cache types are faster than others.\n\nYour cache preference goes in the :setting:`CACHES` setting in your\nsettings file. Here's an explanation of all available values for\n:setting:`CACHES`.\n\n.. _memcached:\n\nMemcached\n---------\n\nBy far the fastest, most efficient type of cache available to Django,\nMemcached__ is an entirely memory-based cache framework originally developed to\nhandle high loads at LiveJournal.com and subsequently open-sourced by Danga\nInteractive.  It is used by sites such as Facebook and Wikipedia to reduce\ndatabase access and dramatically increase site performance.\n\n__ http://memcached.org/\n\nMemcached runs as a daemon and is allotted a specified amount of RAM. All it does is\nprovide a fast interface for adding, retrieving and deleting arbitrary data in\nthe cache.  All data is stored directly in memory, so there's no overhead of\ndatabase or filesystem usage.\n\nAfter installing Memcached itself, you'll need to install a memcached\nbinding. There are several python memcached bindings available; the\ntwo most common are `python-memcached`_ and `pylibmc`_.\n\n.. _`python-memcached`: ftp://ftp.tummy.com/pub/python-memcached/\n.. _`pylibmc`: http://sendapatch.se/projects/pylibmc/\n\nTo use Memcached with Django:\n\n* Set :setting:`BACKEND <CACHES-BACKEND>` to\n  ``django.core.cache.backends.memcached.MemcachedCache`` or\n  ``django.core.cache.backends.memcached.PyLibMCCache`` (depending\n  on your chosen memcached binding)\n\n* Set :setting:`LOCATION <CACHES-LOCATION>` to ``ip:port`` values,\n  where ``ip`` is the IP address of the Memcached daemon and ``port`` is the\n  port on which Memcached is running, or to a ``unix:path`` value, where\n  ``path`` is the path to a Memcached Unix socket file.\n\nIn this example, Memcached is running on localhost (127.0.0.1) port 11211, using\nthe ``python-memcached`` binding::\n\n    CACHES = {\n        'default': {\n            'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',\n            'LOCATION': '127.0.0.1:11211',\n        }\n    }\n\nIn this example, Memcached is available through a local Unix socket file\n:file:`/tmp/memcached.sock` using the ``python-memcached`` binding::\n\n    CACHES = {\n        'default': {\n            'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',\n            'LOCATION': 'unix:/tmp/memcached.sock',\n        }\n    }\n\nOne excellent feature of Memcached is its ability to share cache over multiple\nservers. This means you can run Memcached daemons on multiple machines, and the\nprogram will treat the group of machines as a *single* cache, without the need\nto duplicate cache values on each machine. To take advantage of this feature,\ninclude all server addresses in :setting:`LOCATION <CACHES-LOCATION>`, either\nseparated by semicolons or as a list.\n\nIn this example, the cache is shared over Memcached instances running on IP\naddress 172.19.26.240 and 172.19.26.242, both on port 11211::\n\n    CACHES = {\n        'default': {\n            'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',\n            'LOCATION': [\n                '172.19.26.240:11211',\n                '172.19.26.242:11211',\n            ]\n        }\n    }\n\nIn the following example, the cache is shared over Memcached instances running\non the IP addresses 172.19.26.240 (port 11211), 172.19.26.242 (port 11212), and\n172.19.26.244 (port 11213)::\n\n    CACHES = {\n        'default': {\n            'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',\n            'LOCATION': [\n                '172.19.26.240:11211',\n                '172.19.26.242:11212',\n                '172.19.26.244:11213',\n            ]\n        }\n    }\n\nA final point about Memcached is that memory-based caching has one\ndisadvantage: Because the cached data is stored in memory, the data will be\nlost if your server crashes. Clearly, memory isn't intended for permanent data\nstorage, so don't rely on memory-based caching as your only data storage.\nWithout a doubt, *none* of the Django caching backends should be used for\npermanent storage -- they're all intended to be solutions for caching, not\nstorage -- but we point this out here because memory-based caching is\nparticularly temporary.\n\nDatabase caching\n----------------\n\nTo use a database table as your cache backend, first create a cache table in\nyour database by running this command::\n\n    python manage.py createcachetable [cache_table_name]\n\n...where ``[cache_table_name]`` is the name of the database table to create.\n(This name can be whatever you want, as long as it's a valid table name that's\nnot already being used in your database.) This command creates a single table\nin your database that is in the proper format that Django's database-cache\nsystem expects.\n\nOnce you've created that database table, set your\n:setting:`BACKEND <CACHES-BACKEND>` setting to\n``\"django.core.cache.backends.db.DatabaseCache\"``, and\n:setting:`LOCATION <CACHES-LOCATION>` to ``tablename`` -- the name of the\ndatabase table. In this example, the cache table's name is ``my_cache_table``::\n\n    CACHES = {\n        'default': {\n            'BACKEND': 'django.core.cache.backends.db.DatabaseCache',\n            'LOCATION': 'my_cache_table',\n        }\n    }\n\n\nThe database caching backend uses the same database as specified in your\nsettings file. You can't use a different database backend for your cache table.\n\nDatabase caching works best if you've got a fast, well-indexed database server.\n\nDatabase caching and multiple databases\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nIf you use database caching with multiple databases, you'll also need\nto set up routing instructions for your database cache table. For the\npurposes of routing, the database cache table appears as a model named\n``CacheEntry``, in an application named ``django_cache``. This model\nwon't appear in the models cache, but the model details can be used\nfor routing purposes.\n\nFor example, the following router would direct all cache read\noperations to ``cache_slave``, and all write operations to\n``cache_master``. The cache table will only be synchronized onto\n``cache_master``::\n\n    class CacheRouter(object):\n        \"\"\"A router to control all database cache operations\"\"\"\n\n        def db_for_read(self, model, **hints):\n            \"All cache read operations go to the slave\"\n            if model._meta.app_label in ('django_cache',):\n                return 'cache_slave'\n            return None\n\n        def db_for_write(self, model, **hints):\n            \"All cache write operations go to master\"\n            if model._meta.app_label in ('django_cache',):\n                return 'cache_master'\n            return None\n\n        def allow_syncdb(self, db, model):\n            \"Only synchronize the cache model on master\"\n            if model._meta.app_label in ('django_cache',):\n                return db == 'cache_master'\n            return None\n\nIf you don't specify routing directions for the database cache model,\nthe cache backend will use the ``default`` database.\n\nOf course, if you don't use the database cache backend, you don't need\nto worry about providing routing instructions for the database cache\nmodel.\n\nFilesystem caching\n------------------\n\nTo store cached items on a filesystem, use\n``\"django.core.cache.backends.filebased.FileBasedCache\"`` for\n:setting:`BACKEND <CACHES-BACKEND>`. For example, to store cached data in\n``/var/tmp/django_cache``, use this setting::\n\n    CACHES = {\n        'default': {\n            'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',\n            'LOCATION': '/var/tmp/django_cache',\n        }\n    }\n\n\nIf you're on Windows, put the drive letter at the beginning of the path,\nlike this::\n\n    CACHES = {\n        'default': {\n            'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',\n            'LOCATION': 'c:/foo/bar',\n        }\n    }\n\nThe directory path should be absolute -- that is, it should start at the root\nof your filesystem. It doesn't matter whether you put a slash at the end of the\nsetting.\n\nMake sure the directory pointed-to by this setting exists and is readable and\nwritable by the system user under which your Web server runs. Continuing the\nabove example, if your server runs as the user ``apache``, make sure the\ndirectory ``/var/tmp/django_cache`` exists and is readable and writable by the\nuser ``apache``.\n\nEach cache value will be stored as a separate file whose contents are the\ncache data saved in a serialized (\"pickled\") format, using Python's ``pickle``\nmodule. Each file's name is the cache key, escaped for safe filesystem use.\n\nLocal-memory caching\n--------------------\n\nIf you want the speed advantages of in-memory caching but don't have the\ncapability of running Memcached, consider the local-memory cache backend. This\ncache is multi-process and thread-safe. To use it, set\n:setting:`BACKEND <CACHES-BACKEND>` to\n``\"django.core.cache.backends.locmem.LocMemCache\"``. For example::\n\n    CACHES = {\n        'default': {\n            'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',\n            'LOCATION': 'unique-snowflake'\n        }\n    }\n\nThe cache :setting:`LOCATION <CACHES-LOCATION>` is used to identify individual\nmemory stores. If you only have one locmem cache, you can omit the\n:setting:`LOCATION <CACHES-LOCATION>`; however, if you have more than one local\nmemory cache, you will need to assign a name to at least one of them in\norder to keep them separate.\n\nNote that each process will have its own private cache instance, which means no\ncross-process caching is possible. This obviously also means the local memory\ncache isn't particularly memory-efficient, so it's probably not a good choice\nfor production environments. It's nice for development.\n\nDummy caching (for development)\n-------------------------------\n\nFinally, Django comes with a \"dummy\" cache that doesn't actually cache -- it\njust implements the cache interface without doing anything.\n\nThis is useful if you have a production site that uses heavy-duty caching in\nvarious places but a development/test environment where you don't want to cache\nand don't want to have to change your code to special-case the latter. To\nactivate dummy caching, set :setting:`BACKEND <CACHES-BACKEND>` like so::\n\n    CACHES = {\n        'default': {\n            'BACKEND': 'django.core.cache.backends.dummy.DummyCache',\n        }\n    }\n\nUsing a custom cache backend\n----------------------------\n\nWhile Django includes support for a number of cache backends out-of-the-box,\nsometimes you might want to use a customized cache backend. To use an external\ncache backend with Django, use the Python import path as the\n:setting:`BACKEND <CACHES-BACKEND>` of the :setting:`CACHES` setting, like so::\n\n    CACHES = {\n        'default': {\n            'BACKEND': 'path.to.backend',\n        }\n    }\n\nIf you're building your own backend, you can use the standard cache backends\nas reference implementations. You'll find the code in the\n``django/core/cache/backends/`` directory of the Django source.\n\nNote: Without a really compelling reason, such as a host that doesn't support\nthem, you should stick to the cache backends included with Django. They've\nbeen well-tested and are easy to use.\n\nCache arguments\n---------------\n\nIn addition to the defining the engine and name of the each cache\nbackend, each cache backend can be given additional arguments to\ncontrol caching behavior. These arguments are provided as additional\nkeys in the :setting:`CACHES` setting. Valid arguments are as follows:\n\n* :setting:`TIMEOUT <CACHES-TIMEOUT>`: The default timeout, in\n  seconds, to use for the cache. This argument defaults to 300\n  seconds (5 minutes).\n\n* :setting:`OPTIONS <CACHES-OPTIONS>`: Any options that should be\n  passed to cache backend. The list options understood by each\n  backend vary with each backend.\n\n  Cache backends that implement their own culling strategy (i.e.,\n  the ``locmem``, ``filesystem`` and ``database`` backends) will\n  honor the following options:\n\n  * ``MAX_ENTRIES``: the maximum number of entries allowed in\n    the cache before old values are deleted. This argument\n    defaults to ``300``.\n\n  * ``CULL_FREQUENCY``: The fraction of entries that are culled\n    when ``MAX_ENTRIES`` is reached. The actual ratio is\n    ``1/CULL_FREQUENCY``, so set ``CULL_FREQUENCY``: to ``2`` to\n    cull half of the entries when ``MAX_ENTRIES`` is reached.\n\n    A value of ``0`` for ``CULL_FREQUENCY`` means that the\n    entire cache will be dumped when ``MAX_ENTRIES`` is reached.\n    This makes culling *much* faster at the expense of more\n    cache misses.\n\n  Cache backends backed by a third-party library will pass their\n  options directly to the underlying cache library. As a result,\n  the list of valid options depends on the library in use.\n\n* :setting:`KEY_PREFIX <CACHES-KEY_PREFIX>`: A string that will be\n  automatically included (prepended by default) to all cache keys\n  used by the Django server.\n\n  See the :ref:`cache documentation <cache_key_prefixing>` for\n  more information.\n\n* :setting:`VERSION <CACHES-VERSION>`: The default version number\n  for cache keys generated by the Django server.\n\n  See the :ref:`cache documentation <cache_versioning>` for more\n  information.\n\n* :setting:`KEY_FUNCTION <CACHES-KEY_FUNCTION>`\n  A string containing a dotted path to a function that defines how\n  to compose a prefix, version and key into a final cache key.\n\n  See the :ref:`cache documentation <cache_key_transformation>`\n  for more information.\n\nIn this example, a filesystem backend is being configured with a timeout\nof 60 seconds, and a maximum capacity of 1000 items::\n\n    CACHES = {\n        'default': {\n            'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',\n            'LOCATION': '/var/tmp/django_cache',\n            'TIMEOUT': 60,\n            'OPTIONS': {\n                'MAX_ENTRIES': 1000\n            }\n        }\n    }\n\nInvalid arguments are silently ignored, as are invalid values of known\narguments.\n\nThe per-site cache\n==================\n\nOnce the cache is set up, the simplest way to use caching is to cache your\nentire site. You'll need to add\n``'django.middleware.cache.UpdateCacheMiddleware'`` and\n``'django.middleware.cache.FetchFromCacheMiddleware'`` to your\n:setting:`MIDDLEWARE_CLASSES` setting, as in this example::\n\n    MIDDLEWARE_CLASSES = (\n        'django.middleware.cache.UpdateCacheMiddleware',\n        'django.middleware.common.CommonMiddleware',\n        'django.middleware.cache.FetchFromCacheMiddleware',\n    )\n\n.. note::\n\n    No, that's not a typo: the \"update\" middleware must be first in the list,\n    and the \"fetch\" middleware must be last. The details are a bit obscure, but\n    see `Order of MIDDLEWARE_CLASSES`_ below if you'd like the full story.\n\nThen, add the following required settings to your Django settings file:\n\n* :setting:`CACHE_MIDDLEWARE_ALIAS` -- The cache alias to use for storage.\n* :setting:`CACHE_MIDDLEWARE_SECONDS` -- The number of seconds each page should\n  be cached.\n* :setting:`CACHE_MIDDLEWARE_KEY_PREFIX` -- If the cache is shared across\n  multiple sites using the same Django installation, set this to the name of\n  the site, or some other string that is unique to this Django instance, to\n  prevent key collisions. Use an empty string if you don't care.\n\nThe cache middleware caches GET and HEAD responses with status 200, where the request\nand response headers allow. Responses to requests for the same URL with different\nquery parameters are considered to be unique pages and are cached separately.\nOptionally, if the :setting:`CACHE_MIDDLEWARE_ANONYMOUS_ONLY`\nsetting is ``True``, only anonymous requests (i.e., not those made by a\nlogged-in user) will be cached. This is a simple and effective way of disabling\ncaching for any user-specific pages (including Django's admin interface). Note\nthat if you use :setting:`CACHE_MIDDLEWARE_ANONYMOUS_ONLY`, you should make\nsure you've activated ``AuthenticationMiddleware``. The cache middleware\nexpects that a HEAD request is answered with the same response headers as\nthe corresponding GET request; in which case it can return a cached GET\nresponse for HEAD request.\n\nAdditionally, the cache middleware automatically sets a few headers in each\n:class:`~django.http.HttpResponse`:\n\n* Sets the ``Last-Modified`` header to the current date/time when a fresh\n  (uncached) version of the page is requested.\n\n* Sets the ``Expires`` header to the current date/time plus the defined\n  :setting:`CACHE_MIDDLEWARE_SECONDS`.\n\n* Sets the ``Cache-Control`` header to give a max age for the page --\n  again, from the :setting:`CACHE_MIDDLEWARE_SECONDS` setting.\n\nSee :doc:`/topics/http/middleware` for more on middleware.\n\nIf a view sets its own cache expiry time (i.e. it has a ``max-age`` section in\nits ``Cache-Control`` header) then the page will be cached until the expiry\ntime, rather than :setting:`CACHE_MIDDLEWARE_SECONDS`. Using the decorators in\n``django.views.decorators.cache`` you can easily set a view's expiry time\n(using the ``cache_control`` decorator) or disable caching for a view (using\nthe ``never_cache`` decorator). See the `using other headers`__ section for\nmore on these decorators.\n\n.. _i18n-cache-key:\n\nIf :setting:`USE_I18N` is set to ``True`` then the generated cache key will\ninclude the name of the active :term:`language<language code>` -- see also\n:ref:`how-django-discovers-language-preference`). This allows you to easily\ncache multilingual sites without having to create the cache key yourself.\n\n.. versionchanged:: 1.4\n\nCache keys also include the active :term:`language <language code>` when\n:setting:`USE_L10N` is set to ``True`` and the :ref:`current time zone\n<default-current-time-zone>` when :setting:`USE_TZ` is set to ``True``.\n\n__ `Controlling cache: Using other headers`_\n\nThe per-view cache\n==================\n\n.. function:: django.views.decorators.cache.cache_page\n\nA more granular way to use the caching framework is by caching the output of\nindividual views. ``django.views.decorators.cache`` defines a ``cache_page``\ndecorator that will automatically cache the view's response for you. It's easy\nto use::\n\n    from django.views.decorators.cache import cache_page\n\n    @cache_page(60 * 15)\n    def my_view(request):\n        ...\n\n``cache_page`` takes a single argument: the cache timeout, in seconds. In the\nabove example, the result of the ``my_view()`` view will be cached for 15\nminutes. (Note that we've written it as ``60 * 15`` for the purpose of\nreadability. ``60 * 15`` will be evaluated to ``900`` -- that is, 15 minutes\nmultiplied by 60 seconds per minute.)\n\nThe per-view cache, like the per-site cache, is keyed off of the URL. If\nmultiple URLs point at the same view, each URL will be cached separately.\nContinuing the ``my_view`` example, if your URLconf looks like this::\n\n    urlpatterns = ('',\n        (r'^foo/(\\d{1,2})/$', my_view),\n    )\n\nthen requests to ``/foo/1/`` and ``/foo/23/`` will be cached separately, as\nyou may expect. But once a particular URL (e.g., ``/foo/23/``) has been\nrequested, subsequent requests to that URL will use the cache.\n\n``cache_page`` can also take an optional keyword argument, ``cache``,\nwhich directs the decorator to use a specific cache (from your\n:setting:`CACHES` setting) when caching view results. By default, the\n``default`` cache will be used, but you can specify any cache you\nwant::\n\n    @cache_page(60 * 15, cache=\"special_cache\")\n    def my_view(request):\n        ...\n\nYou can also override the cache prefix on a per-view basis. ``cache_page``\ntakes an optional keyword argument, ``key_prefix``,\nwhich works in the same way as the :setting:`CACHE_MIDDLEWARE_KEY_PREFIX`\nsetting for the middleware.  It can be used like this::\n\n    @cache_page(60 * 15, key_prefix=\"site1\")\n    def my_view(request):\n        ...\n\nThe two settings can also be combined. If you specify a ``cache`` *and*\na ``key_prefix``, you will get all the settings of the requested cache\nalias, but with the key_prefix overridden.\n\nSpecifying per-view cache in the URLconf\n----------------------------------------\n\nThe examples in the previous section have hard-coded the fact that the view is\ncached, because ``cache_page`` alters the ``my_view`` function in place. This\napproach couples your view to the cache system, which is not ideal for several\nreasons. For instance, you might want to reuse the view functions on another,\ncache-less site, or you might want to distribute the views to people who might\nwant to use them without being cached. The solution to these problems is to\nspecify the per-view cache in the URLconf rather than next to the view functions\nthemselves.\n\nDoing so is easy: simply wrap the view function with ``cache_page`` when you\nrefer to it in the URLconf. Here's the old URLconf from earlier::\n\n    urlpatterns = ('',\n        (r'^foo/(\\d{1,2})/$', my_view),\n    )\n\nHere's the same thing, with ``my_view`` wrapped in ``cache_page``::\n\n    from django.views.decorators.cache import cache_page\n\n    urlpatterns = ('',\n        (r'^foo/(\\d{1,2})/$', cache_page(60 * 15)(my_view)),\n    )\n\n.. templatetag:: cache\n\nTemplate fragment caching\n=========================\n\nIf you're after even more control, you can also cache template fragments using\nthe ``cache`` template tag. To give your template access to this tag, put\n``{% load cache %}`` near the top of your template.\n\nThe ``{% cache %}`` template tag caches the contents of the block for a given\namount of time. It takes at least two arguments: the cache timeout, in seconds,\nand the name to give the cache fragment. The name will be taken as is, do not\nuse a variable. For example:\n\n.. code-block:: html+django\n\n    {% load cache %}\n    {% cache 500 sidebar %}\n        .. sidebar ..\n    {% endcache %}\n\nSometimes you might want to cache multiple copies of a fragment depending on\nsome dynamic data that appears inside the fragment. For example, you might want a\nseparate cached copy of the sidebar used in the previous example for every user\nof your site. Do this by passing additional arguments to the ``{% cache %}``\ntemplate tag to uniquely identify the cache fragment:\n\n.. code-block:: html+django\n\n    {% load cache %}\n    {% cache 500 sidebar request.user.username %}\n        .. sidebar for logged in user ..\n    {% endcache %}\n\nIt's perfectly fine to specify more than one argument to identify the fragment.\nSimply pass as many arguments to ``{% cache %}`` as you need.\n\nIf :setting:`USE_I18N` is set to ``True`` the per-site middleware cache will\n:ref:`respect the active language<i18n-cache-key>`. For the ``cache`` template\ntag you could use one of the\n:ref:`translation-specific variables<template-translation-vars>` available in\ntemplates to achieve the same result:\n\n.. code-block:: html+django\n\n    {% load i18n %}\n    {% load cache %}\n\n    {% get_current_language as LANGUAGE_CODE %}\n\n    {% cache 600 welcome LANGUAGE_CODE %}\n        {% trans \"Welcome to example.com\" %}\n    {% endcache %}\n\nThe cache timeout can be a template variable, as long as the template variable\nresolves to an integer value. For example, if the template variable\n``my_timeout`` is set to the value ``600``, then the following two examples are\nequivalent:\n\n.. code-block:: html+django\n\n    {% cache 600 sidebar %} ... {% endcache %}\n    {% cache my_timeout sidebar %} ... {% endcache %}\n\nThis feature is useful in avoiding repetition in templates. You can set the\ntimeout in a variable, in one place, and just reuse that value.\n\nThe low-level cache API\n=======================\n\n.. highlight:: python\n\nSometimes, caching an entire rendered page doesn't gain you very much and is,\nin fact, inconvenient overkill.\n\nPerhaps, for instance, your site includes a view whose results depend on\nseveral expensive queries, the results of which change at different intervals.\nIn this case, it would not be ideal to use the full-page caching that the\nper-site or per-view cache strategies offer, because you wouldn't want to\ncache the entire result (since some of the data changes often), but you'd still\nwant to cache the results that rarely change.\n\nFor cases like this, Django exposes a simple, low-level cache API. You can use\nthis API to store objects in the cache with any level of granularity you like.\nYou can cache any Python object that can be pickled safely: strings,\ndictionaries, lists of model objects, and so forth. (Most common Python objects\ncan be pickled; refer to the Python documentation for more information about\npickling.)\n\nAccessing the cache\n-------------------\n\n.. function:: django.core.cache.get_cache(backend, **kwargs)\n\nThe cache module, ``django.core.cache``, has a ``cache`` object that's\nautomatically created from the ``'default'`` entry in the :setting:`CACHES`\nsetting::\n\n    >>> from django.core.cache import cache\n\nIf you have multiple caches defined in :setting:`CACHES`, then you can use\n:func:`django.core.cache.get_cache` to retrieve a cache object for any key::\n\n    >>> from django.core.cache import get_cache\n    >>> cache = get_cache('alternate')\n\nIf the named key does not exist, ``InvalidCacheBackendError`` will be raised.\n\n\nBasic usage\n-----------\n\nThe basic interface is ``set(key, value, timeout)`` and ``get(key)``::\n\n    >>> cache.set('my_key', 'hello, world!', 30)\n    >>> cache.get('my_key')\n    'hello, world!'\n\nThe ``timeout`` argument is optional and defaults to the ``timeout``\nargument of the appropriate backend in the :setting:`CACHES` setting\n(explained above). It's the number of seconds the value should be stored\nin the cache.\n\nIf the object doesn't exist in the cache, ``cache.get()`` returns ``None``::\n\n    # Wait 30 seconds for 'my_key' to expire...\n\n    >>> cache.get('my_key')\n    None\n\nWe advise against storing the literal value ``None`` in the cache, because you\nwon't be able to distinguish between your stored ``None`` value and a cache\nmiss signified by a return value of ``None``.\n\n``cache.get()`` can take a ``default`` argument. This specifies which value to\nreturn if the object doesn't exist in the cache::\n\n    >>> cache.get('my_key', 'has expired')\n    'has expired'\n\nTo add a key only if it doesn't already exist, use the ``add()`` method.\nIt takes the same parameters as ``set()``, but it will not attempt to\nupdate the cache if the key specified is already present::\n\n    >>> cache.set('add_key', 'Initial value')\n    >>> cache.add('add_key', 'New value')\n    >>> cache.get('add_key')\n    'Initial value'\n\nIf you need to know whether ``add()`` stored a value in the cache, you can\ncheck the return value. It will return ``True`` if the value was stored,\n``False`` otherwise.\n\nThere's also a ``get_many()`` interface that only hits the cache once.\n``get_many()`` returns a dictionary with all the keys you asked for that\nactually exist in the cache (and haven't expired)::\n\n    >>> cache.set('a', 1)\n    >>> cache.set('b', 2)\n    >>> cache.set('c', 3)\n    >>> cache.get_many(['a', 'b', 'c'])\n    {'a': 1, 'b': 2, 'c': 3}\n\nTo set multiple values more efficiently, use ``set_many()`` to pass a dictionary\nof key-value pairs::\n\n    >>> cache.set_many({'a': 1, 'b': 2, 'c': 3})\n    >>> cache.get_many(['a', 'b', 'c'])\n    {'a': 1, 'b': 2, 'c': 3}\n\nLike ``cache.set()``, ``set_many()`` takes an optional ``timeout`` parameter.\n\nYou can delete keys explicitly with ``delete()``. This is an easy way of\nclearing the cache for a particular object::\n\n    >>> cache.delete('a')\n\nIf you want to clear a bunch of keys at once, ``delete_many()`` can take a list\nof keys to be cleared::\n\n    >>> cache.delete_many(['a', 'b', 'c'])\n\nFinally, if you want to delete all the keys in the cache, use\n``cache.clear()``.  Be careful with this; ``clear()`` will remove *everything*\nfrom the cache, not just the keys set by your application. ::\n\n    >>> cache.clear()\n\nYou can also increment or decrement a key that already exists using the\n``incr()`` or ``decr()`` methods, respectively. By default, the existing cache\nvalue will incremented or decremented by 1. Other increment/decrement values\ncan be specified by providing an argument to the increment/decrement call. A\nValueError will be raised if you attempt to increment or decrement a\nnonexistent cache key.::\n\n    >>> cache.set('num', 1)\n    >>> cache.incr('num')\n    2\n    >>> cache.incr('num', 10)\n    12\n    >>> cache.decr('num')\n    11\n    >>> cache.decr('num', 5)\n    6\n\n.. note::\n\n    ``incr()``/``decr()`` methods are not guaranteed to be atomic. On those\n    backends that support atomic increment/decrement (most notably, the\n    memcached backend), increment and decrement operations will be atomic.\n    However, if the backend doesn't natively provide an increment/decrement\n    operation, it will be implemented using a two-step retrieve/update.\n\n.. _cache_key_prefixing:\n\nCache key prefixing\n-------------------\n\nIf you are sharing a cache instance between servers, or between your\nproduction and development environments, it's possible for data cached\nby one server to be used by another server. If the format of cached\ndata is different between servers, this can lead to some very hard to\ndiagnose problems.\n\nTo prevent this, Django provides the ability to prefix all cache keys\nused by a server. When a particular cache key is saved or retrieved,\nDjango will automatically prefix the cache key with the value of the\n:setting:`KEY_PREFIX <CACHES-KEY_PREFIX>` cache setting.\n\nBy ensuring each Django instance has a different\n:setting:`KEY_PREFIX <CACHES-KEY_PREFIX>`, you can ensure that there will be no\ncollisions in cache values.\n\n.. _cache_versioning:\n\nCache versioning\n----------------\n\nWhen you change running code that uses cached values, you may need to\npurge any existing cached values. The easiest way to do this is to\nflush the entire cache, but this can lead to the loss of cache values\nthat are still valid and useful.\n\nDjango provides a better way to target individual cache values.\nDjango's cache framework has a system-wide version identifier,\nspecified using the :setting:`VERSION <CACHES-VERSION>` cache setting.\nThe value of this setting is automatically combined with the cache\nprefix and the user-provided cache key to obtain the final cache key.\n\nBy default, any key request will automatically include the site\ndefault cache key version. However, the primitive cache functions all\ninclude a ``version`` argument, so you can specify a particular cache\nkey version to set or get. For example::\n\n    # Set version 2 of a cache key\n    >>> cache.set('my_key', 'hello world!', version=2)\n    # Get the default version (assuming version=1)\n    >>> cache.get('my_key')\n    None\n    # Get version 2 of the same key\n    >>> cache.get('my_key', version=2)\n    'hello world!'\n\nThe version of a specific key can be incremented and decremented using\nthe ``incr_version()`` and ``decr_version()`` methods. This\nenables specific keys to be bumped to a new version, leaving other\nkeys unaffected. Continuing our previous example::\n\n    # Increment the version of 'my_key'\n    >>> cache.incr_version('my_key')\n    # The default version still isn't available\n    >>> cache.get('my_key')\n    None\n    # Version 2 isn't available, either\n    >>> cache.get('my_key', version=2)\n    None\n    # But version 3 *is* available\n    >>> cache.get('my_key', version=3)\n    'hello world!'\n\n.. _cache_key_transformation:\n\nCache key transformation\n------------------------\n\nAs described in the previous two sections, the cache key provided by a\nuser is not used verbatim -- it is combined with the cache prefix and\nkey version to provide a final cache key. By default, the three parts\nare joined using colons to produce a final string::\n\n    def make_key(key, key_prefix, version):\n        return ':'.join([key_prefix, str(version), key])\n\nIf you want to combine the parts in different ways, or apply other\nprocessing to the final key (e.g., taking a hash digest of the key\nparts), you can provide a custom key function.\n\nThe :setting:`KEY_FUNCTION <CACHES-KEY_FUNCTION>` cache setting\nspecifies a dotted-path to a function matching the prototype of\n``make_key()`` above. If provided, this custom key function will\nbe used instead of the default key combining function.\n\nCache key warnings\n------------------\n\nMemcached, the most commonly-used production cache backend, does not allow\ncache keys longer than 250 characters or containing whitespace or control\ncharacters, and using such keys will cause an exception. To encourage\ncache-portable code and minimize unpleasant surprises, the other built-in cache\nbackends issue a warning (``django.core.cache.backends.base.CacheKeyWarning``)\nif a key is used that would cause an error on memcached.\n\nIf you are using a production backend that can accept a wider range of keys (a\ncustom backend, or one of the non-memcached built-in backends), and want to use\nthis wider range without warnings, you can silence ``CacheKeyWarning`` with\nthis code in the ``management`` module of one of your\n:setting:`INSTALLED_APPS`::\n\n     import warnings\n\n     from django.core.cache import CacheKeyWarning\n\n     warnings.simplefilter(\"ignore\", CacheKeyWarning)\n\nIf you want to instead provide custom key validation logic for one of the\nbuilt-in backends, you can subclass it, override just the ``validate_key``\nmethod, and follow the instructions for `using a custom cache backend`_. For\ninstance, to do this for the ``locmem`` backend, put this code in a module::\n\n    from django.core.cache.backends.locmem import LocMemCache\n\n    class CustomLocMemCache(LocMemCache):\n        def validate_key(self, key):\n            \"\"\"Custom validation, raising exceptions or warnings as needed.\"\"\"\n            # ...\n\n...and use the dotted Python path to this class in the\n:setting:`BACKEND <CACHES-BACKEND>` portion of your :setting:`CACHES` setting.\n\nUpstream caches\n===============\n\nSo far, this document has focused on caching your *own* data. But another type\nof caching is relevant to Web development, too: caching performed by \"upstream\"\ncaches. These are systems that cache pages for users even before the request\nreaches your Web site.\n\nHere are a few examples of upstream caches:\n\n* Your ISP may cache certain pages, so if you requested a page from\n  http://example.com/, your ISP would send you the page without having to\n  access example.com directly. The maintainers of example.com have no\n  knowledge of this caching; the ISP sits between example.com and your Web\n  browser, handling all of the caching transparently.\n\n* Your Django Web site may sit behind a *proxy cache*, such as Squid Web\n  Proxy Cache (http://www.squid-cache.org/), that caches pages for\n  performance. In this case, each request first would be handled by the\n  proxy, and it would be passed to your application only if needed.\n\n* Your Web browser caches pages, too. If a Web page sends out the\n  appropriate headers, your browser will use the local cached copy for\n  subsequent requests to that page, without even contacting the Web page\n  again to see whether it has changed.\n\nUpstream caching is a nice efficiency boost, but there's a danger to it:\nMany Web pages' contents differ based on authentication and a host of other\nvariables, and cache systems that blindly save pages based purely on URLs could\nexpose incorrect or sensitive data to subsequent visitors to those pages.\n\nFor example, say you operate a Web email system, and the contents of the\n\"inbox\" page obviously depend on which user is logged in. If an ISP blindly\ncached your site, then the first user who logged in through that ISP would have\nhis user-specific inbox page cached for subsequent visitors to the site. That's\nnot cool.\n\nFortunately, HTTP provides a solution to this problem. A number of HTTP headers\nexist to instruct upstream caches to differ their cache contents depending on\ndesignated variables, and to tell caching mechanisms not to cache particular\npages. We'll look at some of these headers in the sections that follow.\n\n.. _using-vary-headers:\n\nUsing Vary headers\n==================\n\nThe ``Vary`` header defines which request headers a cache\nmechanism should take into account when building its cache key. For example, if\nthe contents of a Web page depend on a user's language preference, the page is\nsaid to \"vary on language.\"\n\nBy default, Django's cache system creates its cache keys using the requested\npath and query -- e.g., ``\"/stories/2005/?order_by=author\"``. This means every\nrequest to that URL will use the same cached version, regardless of user-agent\ndifferences such as cookies or language preferences. However, if this page\nproduces different content based on some difference in request headers -- such\nas a cookie, or a language, or a user-agent -- you'll need to use the ``Vary``\nheader to tell caching mechanisms that the page output depends on those things.\n\nTo do this in Django, use the convenient ``vary_on_headers`` view decorator,\nlike so::\n\n    from django.views.decorators.vary import vary_on_headers\n\n    @vary_on_headers('User-Agent')\n    def my_view(request):\n        # ...\n\nIn this case, a caching mechanism (such as Django's own cache middleware) will\ncache a separate version of the page for each unique user-agent.\n\nThe advantage to using the ``vary_on_headers`` decorator rather than manually\nsetting the ``Vary`` header (using something like\n``response['Vary'] = 'user-agent'``) is that the decorator *adds* to the\n``Vary`` header (which may already exist), rather than setting it from scratch\nand potentially overriding anything that was already in there.\n\nYou can pass multiple headers to ``vary_on_headers()``::\n\n    @vary_on_headers('User-Agent', 'Cookie')\n    def my_view(request):\n        # ...\n\nThis tells upstream caches to vary on *both*, which means each combination of\nuser-agent and cookie will get its own cache value. For example, a request with\nthe user-agent ``Mozilla`` and the cookie value ``foo=bar`` will be considered\ndifferent from a request with the user-agent ``Mozilla`` and the cookie value\n``foo=ham``.\n\nBecause varying on cookie is so common, there's a ``vary_on_cookie``\ndecorator. These two views are equivalent::\n\n    @vary_on_cookie\n    def my_view(request):\n        # ...\n\n    @vary_on_headers('Cookie')\n    def my_view(request):\n        # ...\n\nThe headers you pass to ``vary_on_headers`` are not case sensitive;\n``\"User-Agent\"`` is the same thing as ``\"user-agent\"``.\n\nYou can also use a helper function, ``django.utils.cache.patch_vary_headers``,\ndirectly. This function sets, or adds to, the ``Vary header``. For example::\n\n    from django.utils.cache import patch_vary_headers\n\n    def my_view(request):\n        # ...\n        response = render_to_response('template_name', context)\n        patch_vary_headers(response, ['Cookie'])\n        return response\n\n``patch_vary_headers`` takes an :class:`~django.http.HttpResponse` instance as\nits first argument and a list/tuple of case-insensitive header names as its\nsecond argument.\n\nFor more on Vary headers, see the `official Vary spec`_.\n\n.. _`official Vary spec`: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.44\n\nControlling cache: Using other headers\n======================================\n\nOther problems with caching are the privacy of data and the question of where\ndata should be stored in a cascade of caches.\n\nA user usually faces two kinds of caches: his or her own browser cache (a\nprivate cache) and his or her provider's cache (a public cache). A public cache\nis used by multiple users and controlled by someone else. This poses problems\nwith sensitive data--you don't want, say, your bank account number stored in a\npublic cache. So Web applications need a way to tell caches which data is\nprivate and which is public.\n\nThe solution is to indicate a page's cache should be \"private.\" To do this in\nDjango, use the ``cache_control`` view decorator. Example::\n\n    from django.views.decorators.cache import cache_control\n\n    @cache_control(private=True)\n    def my_view(request):\n        # ...\n\nThis decorator takes care of sending out the appropriate HTTP header behind the\nscenes.\n\nNote that the cache control settings \"private\" and \"public\" are mutually\nexclusive. The decorator ensures that the \"public\" directive is removed if\n\"private\" should be set (and vice versa). An example use of the two directives\nwould be a blog site that offers both private and public entries. Public\nentries may be cached on any shared cache. The following code uses\n``patch_cache_control``, the manual way to modify the cache control header\n(it is internally called by the ``cache_control`` decorator)::\n\n    from django.views.decorators.cache import patch_cache_control\n    from django.views.decorators.vary import vary_on_cookie\n\n    @vary_on_cookie\n    def list_blog_entries_view(request):\n        if request.user.is_anonymous():\n            response = render_only_public_entries()\n            patch_cache_control(response, public=True)\n        else:\n            response = render_private_and_public_entries(request.user)\n            patch_cache_control(response, private=True)\n\n        return response\n\nThere are a few other ways to control cache parameters. For example, HTTP\nallows applications to do the following:\n\n* Define the maximum time a page should be cached.\n\n* Specify whether a cache should always check for newer versions, only\n  delivering the cached content when there are no changes. (Some caches\n  might deliver cached content even if the server page changed, simply\n  because the cache copy isn't yet expired.)\n\nIn Django, use the ``cache_control`` view decorator to specify these cache\nparameters. In this example, ``cache_control`` tells caches to revalidate the\ncache on every access and to store cached versions for, at most, 3,600 seconds::\n\n    from django.views.decorators.cache import cache_control\n\n    @cache_control(must_revalidate=True, max_age=3600)\n    def my_view(request):\n        # ...\n\nAny valid ``Cache-Control`` HTTP directive is valid in ``cache_control()``.\nHere's a full list:\n\n* ``public=True``\n* ``private=True``\n* ``no_cache=True``\n* ``no_transform=True``\n* ``must_revalidate=True``\n* ``proxy_revalidate=True``\n* ``max_age=num_seconds``\n* ``s_maxage=num_seconds``\n\nFor explanation of Cache-Control HTTP directives, see the `Cache-Control spec`_.\n\n(Note that the caching middleware already sets the cache header's max-age with\nthe value of the :setting:`CACHE_MIDDLEWARE_SECONDS` setting. If you use a custom\n``max_age`` in a ``cache_control`` decorator, the decorator will take\nprecedence, and the header values will be merged correctly.)\n\nIf you want to use headers to disable caching altogether,\n``django.views.decorators.cache.never_cache`` is a view decorator that adds\nheaders to ensure the response won't be cached by browsers or other caches.\nExample::\n\n    from django.views.decorators.cache import never_cache\n\n    @never_cache\n    def myview(request):\n        # ...\n\n.. _`Cache-Control spec`: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9\n\nOther optimizations\n===================\n\nDjango comes with a few other pieces of middleware that can help optimize your\nsite's performance:\n\n* ``django.middleware.http.ConditionalGetMiddleware`` adds support for\n  modern browsers to conditionally GET responses based on the ``ETag``\n  and ``Last-Modified`` headers.\n\n* :class:`django.middleware.gzip.GZipMiddleware` compresses responses for all\n  modern browsers, saving bandwidth and transfer time.\n\nOrder of MIDDLEWARE_CLASSES\n===========================\n\nIf you use caching middleware, it's important to put each half in the right\nplace within the :setting:`MIDDLEWARE_CLASSES` setting. That's because the cache\nmiddleware needs to know which headers by which to vary the cache storage.\nMiddleware always adds something to the ``Vary`` response header when it can.\n\n``UpdateCacheMiddleware`` runs during the response phase, where middleware is\nrun in reverse order, so an item at the top of the list runs *last* during the\nresponse phase. Thus, you need to make sure that ``UpdateCacheMiddleware``\nappears *before* any other middleware that might add something to the ``Vary``\nheader. The following middleware modules do so:\n\n* ``SessionMiddleware`` adds ``Cookie``\n* ``GZipMiddleware`` adds ``Accept-Encoding``\n* ``LocaleMiddleware`` adds ``Accept-Language``\n\n``FetchFromCacheMiddleware``, on the other hand, runs during the request phase,\nwhere middleware is applied first-to-last, so an item at the top of the list\nruns *first* during the request phase. The ``FetchFromCacheMiddleware`` also\nneeds to run after other middleware updates the ``Vary`` header, so\n``FetchFromCacheMiddleware`` must be *after* any item that does so.\n"
  },
  {
    "path": "Django-1.5.1/docs/topics/class-based-views/generic-display.txt",
    "content": ".. _Generic views:\n\n=========================\nClass-based generic views\n=========================\n\nWriting Web applications can be monotonous, because we repeat certain patterns\nagain and again. Django tries to take away some of that monotony at the model\nand template layers, but Web developers also experience this boredom at the view\nlevel.\n\nDjango's *generic views* were developed to ease that pain. They take certain\ncommon idioms and patterns found in view development and abstract them so that\nyou can quickly write common views of data without having to write too much\ncode.\n\nWe can recognize certain common tasks, like displaying a list of objects, and\nwrite code that displays a list of *any* object. Then the model in question can\nbe passed as an extra argument to the URLconf.\n\nDjango ships with generic views to do the following:\n\n* Display list and detail pages for a single object. If we were creating an\n  application to manage conferences then a ``TalkListView`` and a\n  ``RegisteredUserListView`` would be examples of list views. A single\n  talk page is an example of what we call a \"detail\" view.\n\n* Present date-based objects in year/month/day archive pages,\n  associated detail, and \"latest\" pages.\n\n* Allow users to create, update, and delete objects -- with or\n  without authorization.\n\nTaken together, these views provide easy interfaces to perform the most common\ntasks developers encounter.\n\n\nExtending generic views\n=======================\n\nThere's no question that using generic views can speed up development\nsubstantially. In most projects, however, there comes a moment when the\ngeneric views no longer suffice. Indeed, the most common question asked by new\nDjango developers is how to make generic views handle a wider array of\nsituations.\n\nThis is one of the reasons generic views were redesigned for the 1.3 release -\npreviously, they were just view functions with a bewildering array of options;\nnow, rather than passing in a large amount of configuration in the URLconf,\nthe recommended way to extend generic views is to subclass them, and override\ntheir attributes or methods.\n\nThat said, generic views will have a limit. If you find you're struggling to\nimplement your view as a subclass of a generic view, then you may find it more\neffective to write just the code you need, using your own class-based or\nfunctional views.\n\nMore examples of generic views are available in some third party applications,\nor you could write your own as needed.\n\n\nGeneric views of objects\n========================\n\n:class:`~django.views.generic.base.TemplateView` certainly is useful, but\nDjango's generic views really shine when it comes to presenting views of your\ndatabase content. Because it's such a common task, Django comes with a handful\nof built-in generic views that make generating list and detail views of objects\nincredibly easy.\n\nLet's start by looking at some examples of showing a list of objects or an\nindividual object.\n\n.. comment: link here to the other topic pages (form handling, date based, mixins)\n\nWe'll be using these models::\n\n    # models.py\n    from django.db import models\n\n    class Publisher(models.Model):\n        name = models.CharField(max_length=30)\n        address = models.CharField(max_length=50)\n        city = models.CharField(max_length=60)\n        state_province = models.CharField(max_length=30)\n        country = models.CharField(max_length=50)\n        website = models.URLField()\n\n        class Meta:\n            ordering = [\"-name\"]\n\n        def __unicode__(self):\n            return self.name\n\n    class Book(models.Model):\n        title = models.CharField(max_length=100)\n        authors = models.ManyToManyField('Author')\n        publisher = models.ForeignKey(Publisher)\n        publication_date = models.DateField()\n\nNow we need to define a view::\n\n    # views.py\n    from django.views.generic import ListView\n    from books.models import Publisher\n\n    class PublisherList(ListView):\n        model = Publisher\n\nFinally hook that view into your urls::\n\n    # urls.py\n    from django.conf.urls import patterns, url\n    from books.views import PublisherList\n\n    urlpatterns = patterns('',\n        url(r'^publishers/$', PublisherList.as_view()),\n    )\n\nThat's all the Python code we need to write. We still need to write a template,\nhowever. We could explicitly tell the view which template to use by adding a\n``template_name`` attribute to the view, but in the absence of an explicit\ntemplate Django will infer one from the object's name. In this case, the\ninferred template will be ``\"books/publisher_list.html\"`` -- the \"books\" part\ncomes from the name of the app that defines the model, while the \"publisher\"\nbit is just the lowercased version of the model's name.\n\n.. note::\n\n    Thus, when (for example) the\n    :class:`django.template.loaders.app_directories.Loader` template loader is\n    enabled in :setting:`TEMPLATE_LOADERS`, a template location could be:\n    /path/to/project/books/templates/books/publisher_list.html\n\n.. highlightlang:: html+django\n\nThis template will be rendered against a context containing a variable called\n``object_list`` that contains all the publisher objects. A very simple template\nmight look like the following::\n\n    {% extends \"base.html\" %}\n\n    {% block content %}\n        <h2>Publishers</h2>\n        <ul>\n            {% for publisher in object_list %}\n                <li>{{ publisher.name }}</li>\n            {% endfor %}\n        </ul>\n    {% endblock %}\n\nThat's really all there is to it. All the cool features of generic views come\nfrom changing the attributes set on the generic view. The\n:doc:`generic views reference</ref/class-based-views/index>` documents all the\ngeneric views and their options in detail; the rest of this document will\nconsider some of the common ways you might customize and extend generic views.\n\n\nMaking \"friendly\" template contexts\n-----------------------------------\n\n.. highlightlang:: python\n\nYou might have noticed that our sample publisher list template stores all the\npublishers in a variable named ``object_list``. While this works just fine, it\nisn't all that \"friendly\" to template authors: they have to \"just know\" that\nthey're dealing with publishers here.\n\nWell, if you're dealing with a model object, this is already done for you. When\nyou are dealing with an object or queryset, Django is able to populate the\ncontext using the lower cased version of the model class' name. This is\nprovided in addition to the default ``object_list`` entry, but contains exactly\nthe same data, i.e. ``publisher_list``.\n\nIf this still isn't a good match, you can manually set the name of the\ncontext variable. The ``context_object_name`` attribute on a generic view\nspecifies the context variable to use::\n\n    # views.py\n    from django.views.generic import ListView\n    from books.models import Publisher\n\n    class PublisherList(ListView):\n        model = Publisher\n        context_object_name = 'my_favourite_publishers'\n\nProviding a useful ``context_object_name`` is always a good idea. Your\ncoworkers who design templates will thank you.\n\n\nAdding extra context\n--------------------\n\nOften you simply need to present some extra information beyond that\nprovided by the generic view. For example, think of showing a list of\nall the books on each publisher detail page. The\n:class:`~django.views.generic.detail.DetailView` generic view provides\nthe publisher to the context, but how do we get additional information\nin that template.\n\nHowever, there is; you can subclass\n:class:`~django.views.generic.detail.DetailView` and provide your own\nimplementation of the ``get_context_data`` method. The default\nimplementation of this that comes with\n:class:`~django.views.generic.detail.DetailView` simply adds in the\nobject being displayed to the template, but you can override it to send\nmore::\n\n    from django.views.generic import DetailView\n    from books.models import Publisher, Book\n\n    class PublisherDetail(DetailView):\n\n        model = Publisher\n\n        def get_context_data(self, **kwargs):\n            # Call the base implementation first to get a context\n            context = super(PublisherDetail, self).get_context_data(**kwargs)\n            # Add in a QuerySet of all the books\n            context['book_list'] = Book.objects.all()\n            return context\n\n.. note::\n\n    Generally, get_context_data will merge the context data of all parent\n    classes with those of the current class. To preserve this behavior in your\n    own classes where you want to alter the context, you should be sure to call\n    get_context_data on the super class. When no two classes try to define the\n    same key, this will give the expected results. However if any class\n    attempts to override a key after parent classes have set it (after the call\n    to super), any children of that class will also need to explictly set it\n    after super if they want to be sure to override all parents. If you're\n    having trouble, review the method resolution order of your view.\n\n.. _generic-views-list-subsets:\n\nViewing subsets of objects\n--------------------------\n\nNow let's take a closer look at the ``model`` argument we've been\nusing all along. The ``model`` argument, which specifies the database\nmodel that the view will operate upon, is available on all the\ngeneric views that operate on a single object or a collection of\nobjects. However, the ``model`` argument is not the only way to\nspecify the objects that the view will operate upon -- you can also\nspecify the list of objects using the ``queryset`` argument::\n\n    from django.views.generic import DetailView\n    from books.models import Publisher, Book\n\n    class PublisherDetail(DetailView):\n\n        context_object_name = 'publisher'\n        queryset = Publisher.objects.all()\n\nSpecifying ``model = Publisher`` is really just shorthand for saying\n``queryset = Publisher.objects.all()``. However, by using ``queryset``\nto define a filtered list of objects you can be more specific about the\nobjects that will be visible in the view (see :doc:`/topics/db/queries`\nfor more information about :class:`~django.db.models.query.QuerySet` objects,\nand see the :doc:`class-based views reference </ref/class-based-views/index>`\nfor the complete details).\n\nTo pick a simple example, we might want to order a list of books by\npublication date, with the most recent first::\n\n    from django.views.generic import ListView\n    from books.models import Book\n\n    class BookList(ListView):\n        queryset = Book.objects.order_by('-publication_date')\n        context_object_name = 'book_list'\n\nThat's a pretty simple example, but it illustrates the idea nicely. Of course,\nyou'll usually want to do more than just reorder objects. If you want to\npresent a list of books by a particular publisher, you can use the same\ntechnique::\n\n    from django.views.generic import ListView\n    from books.models import Book\n\n    class AcmeBookList(ListView):\n\n        context_object_name = 'book_list'\n        queryset = Book.objects.filter(publisher__name='Acme Publishing')\n        template_name = 'books/acme_list.html'\n\nNotice that along with a filtered ``queryset``, we're also using a custom\ntemplate name. If we didn't, the generic view would use the same template as the\n\"vanilla\" object list, which might not be what we want.\n\nAlso notice that this isn't a very elegant way of doing publisher-specific\nbooks. If we want to add another publisher page, we'd need another handful of\nlines in the URLconf, and more than a few publishers would get unreasonable.\nWe'll deal with this problem in the next section.\n\n.. note::\n\n    If you get a 404 when requesting ``/books/acme/``, check to ensure you\n    actually have a Publisher with the name 'ACME Publishing'.  Generic\n    views have an ``allow_empty`` parameter for this case.  See the\n    :doc:`class-based-views reference</ref/class-based-views/index>` for more\n    details.\n\n\nDynamic filtering\n-----------------\n\nAnother common need is to filter down the objects given in a list page by some\nkey in the URL. Earlier we hard-coded the publisher's name in the URLconf, but\nwhat if we wanted to write a view that displayed all the books by some arbitrary\npublisher?\n\nHandily, the ``ListView`` has a\n:meth:`~django.views.generic.list.MultipleObjectMixin.get_queryset` method we\ncan override. Previously, it has just been returning the value of the\n``queryset`` attribute, but now we can add more logic.\n\nThe key part to making this work is that when class-based views are called,\nvarious useful things are stored on ``self``; as well as the request\n(``self.request``) this includes the positional (``self.args``) and name-based\n(``self.kwargs``) arguments captured according to the URLconf.\n\nHere, we have a URLconf with a single captured group::\n\n    # urls.py\n    from books.views import PublisherBookList\n\n    urlpatterns = patterns('',\n        (r'^books/([\\w-]+)/$', PublisherBookList.as_view()),\n    )\n\nNext, we'll write the ``PublisherBookList`` view itself::\n\n    # views.py\n    from django.shortcuts import get_object_or_404\n    from django.views.generic import ListView\n    from books.models import Book, Publisher\n\n    class PublisherBookList(ListView):\n\n        template_name = 'books/books_by_publisher.html'\n\n        def get_queryset(self):\n            self.publisher = get_object_or_404(Publisher, name=self.args[0])\n            return Book.objects.filter(publisher=self.publisher)\n\nAs you can see, it's quite easy to add more logic to the queryset selection;\nif we wanted, we could use ``self.request.user`` to filter using the current\nuser, or other more complex logic.\n\nWe can also add the publisher into the context at the same time, so we can\nuse it in the template::\n\n        # ...\n\n        def get_context_data(self, **kwargs):\n            # Call the base implementation first to get a context\n            context = super(PublisherBookList, self).get_context_data(**kwargs)\n            # Add in the publisher\n            context['publisher'] = self.publisher\n            return context\n\n.. _generic-views-extra-work:\n\nPerforming extra work\n---------------------\n\nThe last common pattern we'll look at involves doing some extra work before\nor after calling the generic view.\n\nImagine we had a ``last_accessed`` field on our ``Author`` object that we were\nusing to keep track of the last time anybody looked at that author::\n\n    # models.py\n\n    class Author(models.Model):\n        salutation = models.CharField(max_length=10)\n        name = models.CharField(max_length=200)\n        email = models.EmailField()\n        headshot = models.ImageField(upload_to='/tmp')\n        last_accessed = models.DateTimeField()\n\nThe generic ``DetailView`` class, of course, wouldn't know anything about this\nfield, but once again we could easily write a custom view to keep that field\nupdated.\n\nFirst, we'd need to add an author detail bit in the URLconf to point to a\ncustom view::\n\n    from books.views import AuthorDetailView\n\n    urlpatterns = patterns('',\n        #...\n        url(r'^authors/(?P<pk>\\d+)/$', AuthorDetailView.as_view(), name='author-detail'),\n    )\n\nThen we'd write our new view -- ``get_object`` is the method that retrieves the\nobject -- so we simply override it and wrap the call::\n\n    from django.views.generic import DetailView\n    from django.shortcuts import get_object_or_404\n    from django.utils import timezone\n    from books.models import Author\n\n    class AuthorDetailView(DetailView):\n\n        queryset = Author.objects.all()\n\n        def get_object(self):\n            # Call the superclass\n            object = super(AuthorDetailView, self).get_object()\n            # Record the last accessed date\n            object.last_accessed = timezone.now()\n            object.save()\n            # Return the object\n            return object\n\n.. note::\n\n    The URLconf here uses the named group ``pk`` - this name is the default\n    name that ``DetailView`` uses to find the value of the primary key used to\n    filter the queryset.\n\n    If you want to call the group something else, you can set ``pk_url_kwarg``\n    on the view. More details can be found in the reference for\n    :class:`~django.views.generic.detail.DetailView`\n"
  },
  {
    "path": "Django-1.5.1/docs/topics/class-based-views/generic-editing.txt",
    "content": "Form handling with class-based views\n====================================\n\nForm processing generally has 3 paths:\n\n* Initial GET (blank or prepopulated form)\n* POST with invalid data (typically redisplay form with errors)\n* POST with valid data (process the data and typically redirect)\n\nImplementing this yourself often results in a lot of repeated boilerplate code\n(see :ref:`Using a form in a view<using-a-form-in-a-view>`). To help avoid\nthis, Django provides a collection of generic class-based views for form\nprocessing.\n\nBasic Forms\n-----------\n\nGiven a simple contact form::\n\n    # forms.py\n    from django import forms\n\n    class ContactForm(forms.Form):\n        name = forms.CharField()\n        message = forms.CharField(widget=forms.Textarea)\n\n        def send_email(self):\n            # send email using the self.cleaned_data dictionary\n            pass\n\nThe view can be constructed using a ``FormView``::\n\n    # views.py\n    from myapp.forms import ContactForm\n    from django.views.generic.edit import FormView\n\n    class ContactView(FormView):\n        template_name = 'contact.html'\n        form_class = ContactForm\n        success_url = '/thanks/'\n\n        def form_valid(self, form):\n            # This method is called when valid form data has been POSTed.\n            # It should return an HttpResponse.\n            form.send_email()\n            return super(ContactView, self).form_valid(form)\n\nNotes:\n\n* FormView inherits\n  :class:`~django.views.generic.base.TemplateResponseMixin` so\n  :attr:`~django.views.generic.base.TemplateResponseMixin.template_name`\n  can be used here.\n* The default implementation for\n  :meth:`~django.views.generic.edit.FormMixin.form_valid` simply\n  redirects to the :attr:`~django.views.generic.edit.FormMixin.success_url`.\n\nModel Forms\n-----------\n\nGeneric views really shine when working with models.  These generic\nviews will automatically create a :class:`~django.forms.ModelForm`, so long as\nthey can work out which model class to use:\n\n* If the :attr:`~django.views.generic.edit.ModelFormMixin.model` attribute is\n  given, that model class will be used.\n* If :meth:`~django.views.generic.detail.SingleObjectMixin.get_object()`\n  returns an object, the class of that object will be used.\n* If a :attr:`~django.views.generic.detail.SingleObjectMixin.queryset` is\n  given, the model for that queryset will be used.\n\nModel form views provide a\n:meth:`~django.views.generic.edit.ModelFormMixin.form_valid()` implementation\nthat saves the model automatically.  You can override this if you have any\nspecial requirements; see below for examples.\n\nYou don't even need to provide a ``success_url`` for\n:class:`~django.views.generic.edit.CreateView` or\n:class:`~django.views.generic.edit.UpdateView` - they will use\n:meth:`~django.db.models.Model.get_absolute_url()` on the model object if available.\n\nIf you want to use a custom :class:`~django.forms.ModelForm` (for instance to\nadd extra validation) simply set\n:attr:`~django.views.generic.edit.FormMixin.form_class` on your view.\n\n.. note::\n    When specifying a custom form class, you must still specify the model,\n    even though the :attr:`~django.views.generic.edit.FormMixin.form_class` may\n    be a :class:`~django.forms.ModelForm`.\n\nFirst we need to add :meth:`~django.db.models.Model.get_absolute_url()` to our\n``Author`` class:\n\n.. code-block:: python\n\n    # models.py\n    from django.core.urlresolvers import reverse\n    from django.db import models\n\n    class Author(models.Model):\n        name = models.CharField(max_length=200)\n\n        def get_absolute_url(self):\n            return reverse('author-detail', kwargs={'pk': self.pk})\n\nThen we can use :class:`CreateView` and friends to do the actual\nwork. Notice how we're just configuring the generic class-based views\nhere; we don't have to write any logic ourselves::\n\n    # views.py\n    from django.views.generic.edit import CreateView, UpdateView, DeleteView\n    from django.core.urlresolvers import reverse_lazy\n    from myapp.models import Author\n\n    class AuthorCreate(CreateView):\n        model = Author\n\n    class AuthorUpdate(UpdateView):\n        model = Author\n\n    class AuthorDelete(DeleteView):\n        model = Author\n        success_url = reverse_lazy('author-list')\n\n.. note::\n    We have to use :func:`~django.core.urlresolvers.reverse_lazy` here, not\n    just ``reverse`` as the urls are not loaded when the file is imported.\n\nFinally, we hook these new views into the URLconf::\n\n    # urls.py\n    from django.conf.urls import patterns, url\n    from myapp.views import AuthorCreate, AuthorUpdate, AuthorDelete\n\n    urlpatterns = patterns('',\n        # ...\n        url(r'author/add/$', AuthorCreate.as_view(), name='author_add'),\n        url(r'author/(?P<pk>\\d+)/$', AuthorUpdate.as_view(), name='author_update'),\n        url(r'author/(?P<pk>\\d+)/delete/$', AuthorDelete.as_view(), name='author_delete'),\n    )\n\n.. note::\n\n    These views inherit\n    :class:`~django.views.generic.detail.SingleObjectTemplateResponseMixin`\n    which uses\n    :attr:`~django.views.generic.detail.SingleObjectTemplateResponseMixin.template_name_suffix`\n    to construct the\n    :attr:`~django.views.generic.base.TemplateResponseMixin.template_name`\n    based on the model.\n\n    In this example:\n\n    * :class:`CreateView` and :class:`UpdateView` use ``myapp/author_form.html``\n    * :class:`DeleteView` uses ``myapp/author_confirm_delete.html``\n\n    If you wish to have separate templates for :class:`CreateView` and\n    :class:`UpdateView`, you can set either\n    :attr:`~django.views.generic.base.TemplateResponseMixin.template_name` or\n    :attr:`~django.views.generic.detail.SingleObjectTemplateResponseMixin.template_name_suffix`\n    on your view class.\n\nModels and request.user\n-----------------------\n\nTo track the user that created an object using a :class:`CreateView`,\nyou can use a custom :class:`~django.forms.ModelForm` to do this. First, add\nthe foreign key relation to the model::\n\n    # models.py\n    from django.contrib.auth import User\n    from django.db import models\n\n    class Author(models.Model):\n        name = models.CharField(max_length=200)\n        created_by = models.ForeignKey(User)\n\n        # ...\n\nCreate a custom :class:`~django.forms.ModelForm` in order to exclude the\n``created_by`` field and prevent the user from editing it:\n\n.. code-block:: python\n\n    # forms.py\n    from django import forms\n    from myapp.models import Author\n\n    class AuthorForm(forms.ModelForm):\n        class Meta:\n            model = Author\n            exclude = ('created_by',)\n\nIn the view, use the custom\n:attr:`~django.views.generic.edit.FormMixin.form_class` and override\n:meth:`~django.views.generic.edit.ModelFormMixin.form_valid()` to add the\nuser::\n\n    # views.py\n    from django.views.generic.edit import CreateView\n    from myapp.models import Author\n    from myapp.forms import AuthorForm\n\n    class AuthorCreate(CreateView):\n        form_class = AuthorForm\n        model = Author\n\n        def form_valid(self, form):\n            form.instance.created_by = self.request.user\n            return super(AuthorCreate, self).form_valid(form)\n\nNote that you'll need to :ref:`decorate this\nview<decorating-class-based-views>` using\n:func:`~django.contrib.auth.decorators.login_required`, or\nalternatively handle unauthorized users in the\n:meth:`~django.views.generic.edit.ModelFormMixin.form_valid()`.\n\nAJAX example\n------------\n\nHere is a simple example showing how you might go about implementing a form that\nworks for AJAX requests as well as 'normal' form POSTs::\n\n    import json\n\n    from django.http import HttpResponse\n    from django.views.generic.edit import CreateView\n\n    class AjaxableResponseMixin(object):\n        \"\"\"\n        Mixin to add AJAX support to a form.\n        Must be used with an object-based FormView (e.g. CreateView)\n        \"\"\"\n        def render_to_json_response(self, context, **response_kwargs):\n            data = json.dumps(context)\n            response_kwargs['content_type'] = 'application/json'\n            return HttpResponse(data, **response_kwargs)\n\n        def form_invalid(self, form):\n            if self.request.is_ajax():\n                return self.render_to_json_response(form.errors, status=400)\n            else:\n                return super(AjaxableResponseMixin, self).form_invalid(form)\n\n        def form_valid(self, form):\n            if self.request.is_ajax():\n                data = {\n                    'pk': form.instance.pk,\n                }\n                return self.render_to_json_response(data)\n            else:\n                return super(AjaxableResponseMixin, self).form_valid(form)\n\n    class AuthorCreate(AjaxableResponseMixin, CreateView):\n        model = Author\n"
  },
  {
    "path": "Django-1.5.1/docs/topics/class-based-views/index.txt",
    "content": "=================\nClass-based views\n=================\n\nA view is a callable which takes a request and returns a\nresponse. This can be more than just a function, and Django provides\nan example of some classes which can be used as views. These allow you\nto structure your views and reuse code by harnessing inheritance and\nmixins. There are also some generic views for simple tasks which we'll\nget to later, but you may want to design your own structure of\nreusable views which suits your use case. For full details, see the\n:doc:`class-based views reference documentation</ref/class-based-views/index>`.\n\n.. toctree::\n   :maxdepth: 1\n\n   intro\n   generic-display\n   generic-editing\n   mixins\n\nBasic examples\n==============\n\nDjango provides base view classes which will suit a wide range of applications.\nAll views inherit from the :class:`~django.views.generic.base.View` class, which\nhandles linking the view in to the URLs, HTTP method dispatching and other\nsimple features. :class:`~django.views.generic.base.RedirectView` is for a\nsimple HTTP redirect, and :class:`~django.views.generic.base.TemplateView`\nextends the base class to make it also render a template.\n\n\nSimple usage in your URLconf\n============================\n\nThe simplest way to use generic views is to create them directly in your\nURLconf. If you're only changing a few simple attributes on a class-based view,\nyou can simply pass them into the\n:meth:`~django.views.generic.base.View.as_view` method call itself::\n\n    from django.conf.urls import patterns\n    from django.views.generic import TemplateView\n\n    urlpatterns = patterns('',\n        (r'^about/', TemplateView.as_view(template_name=\"about.html\")),\n    )\n\nAny arguments passed to :meth:`~django.views.generic.base.View.as_view` will\noverride attributes set on the class. In this example, we set ``template_name``\non the ``TemplateView``. A similar overriding pattern can be used for the\n``url`` attribute on :class:`~django.views.generic.base.RedirectView`.\n\n\nSubclassing generic views\n=========================\n\nThe second, more powerful way to use generic views is to inherit from an\nexisting view and override attributes (such as the ``template_name``) or\nmethods (such as ``get_context_data``) in your subclass to provide new values\nor methods. Consider, for example, a view that just displays one template,\n``about.html``. Django has a generic view to do this -\n:class:`~django.views.generic.base.TemplateView` - so we can just subclass it,\nand override the template name::\n\n    # some_app/views.py\n    from django.views.generic import TemplateView\n\n    class AboutView(TemplateView):\n        template_name = \"about.html\"\n\nThen we just need to add this new view into our URLconf.\n`~django.views.generic.base.TemplateView` is a class, not a function, so we\npoint the URL to the :meth:`~django.views.generic.base.View.as_view` class\nmethod instead, which provides a function-like entry to class-based views::\n\n    # urls.py\n    from django.conf.urls import patterns\n    from some_app.views import AboutView\n\n    urlpatterns = patterns('',\n        (r'^about/', AboutView.as_view()),\n    )\n\n\nFor more information on how to use the built in generic views, consult the next\ntopic on :doc:`generic class based views</topics/class-based-views/generic-display>`.\n\n.. _supporting-other-http-methods:\n\nSupporting other HTTP methods\n-----------------------------\n\nSuppose somebody wants to access our book library over HTTP using the views\nas an API. The API client would connect every now and then and download book\ndata for the books published since last visit. But if no new books appeared\nsince then, it is a waste of CPU time and bandwidth to fetch the books from the\ndatabase, render a full response and send it to the client. It might be\npreferable to ask the API when the most recent book was published.\n\nWe map the URL to book list view in the URLconf::\n\n    from django.conf.urls import patterns\n    from books.views import BookListView\n\n    urlpatterns = patterns('',\n        (r'^books/$', BookListView.as_view()),\n    )\n\nAnd the view::\n\n    from django.http import HttpResponse\n    from django.views.generic import ListView\n    from books.models import Book\n\n    class BookListView(ListView):\n        model = Book\n\n        def head(self, *args, **kwargs):\n            last_book = self.get_queryset().latest('publication_date')\n            response = HttpResponse('')\n            # RFC 1123 date format\n            response['Last-Modified'] = last_book.publication_date.strftime('%a, %d %b %Y %H:%M:%S GMT')\n            return response\n\nIf the view is accessed from a ``GET`` request, a plain-and-simple object\nlist is returned in the response (using ``book_list.html`` template). But if\nthe client issues a ``HEAD`` request, the response has an empty body and\nthe ``Last-Modified`` header indicates when the most recent book was published.\nBased on this information, the client may or may not download the full object\nlist.\n"
  },
  {
    "path": "Django-1.5.1/docs/topics/class-based-views/intro.txt",
    "content": "=================================\nIntroduction to Class-based views\n=================================\n\nClass-based views provide an alternative way to implement views as Python\nobjects instead of functions. They do not replace function-based views, but\nhave certain differences and advantages when compared to function-based views:\n\n* Organization of code related to specific HTTP methods (``GET``, ``POST``,\n  etc) can be addressed by separate methods instead of conditional branching.\n\n* Object oriented techniques such as mixins (multiple inheritance) can be\n  used to factor code into reusable components.\n\nThe relationship and history of generic views, class-based views, and class-based generic views\n===============================================================================================\n\nIn the beginning there was only the view function contract, Django passed your\nfunction an :class:`~django.http.HttpRequest` and expected back an\n:class:`~django.http.HttpResponse`. This was the extent of what Django provided.\n\nEarly on it was recognized that there were common idioms and patterns found in\nview development. Function-based generic views were introduced to abstract\nthese patterns and ease view development for the common cases.\n\nThe problem with function-based generic views is that while they covered the\nsimple cases well, there was no way to extend or customize them beyond some\nsimple configuration options, limiting their usefulness in many real-world\napplications.\n\nClass-based generic views were created with the same objective as\nfunction-based generic views, to make view development easier. However, the way\nthe solution is implemented, through the use of mixins, provides a toolkit that\nresults in class-based generic views being more extensible and flexible than\ntheir function-based counterparts.\n\nIf you have tried function based generic views in the past and found them\nlacking, you should not think of class-based generic views as simply a\nclass-based equivalent, but rather as a fresh approach to solving the original\nproblems that generic views were meant to solve.\n\nThe toolkit of base classes and mixins that Django uses to build class-based\ngeneric views are built for maximum flexibility, and as such have many hooks in\nthe form of default method implementations and attributes that you are unlikely\nto be concerned with in the simplest use cases. For example, instead of\nlimiting you to a class based attribute for ``form_class``, the implementation\nuses a ``get_form`` method, which calls a ``get_form_class`` method, which in\nits default implementation just returns the ``form_class`` attribute of the\nclass. This gives you several options for specifying what form to use, from a\nsimple attribute, to a fully dynamic, callable hook. These options seem to add\nhollow complexity for simple situations, but without them, more advanced\ndesigns would be limited.\n\nUsing class-based views\n=======================\n\nAt its core, a class-based view allows you to respond to different HTTP request\nmethods with different class instance methods, instead of with conditionally\nbranching code inside a single view function.\n\nSo where the code to handle HTTP ``GET`` in a view function would look\nsomething like::\n\n    from django.http import HttpResponse\n\n    def my_view(request):\n        if request.method == 'GET':\n            # <view logic>\n            return HttpResponse('result')\n\nIn a class-based view, this would become::\n\n    from django.http import HttpResponse\n    from django.views.base import View\n\n    class MyView(View):\n        def get(self, request):\n            # <view logic>\n            return HttpResponse('result')\n\nBecause Django's URL resolver expects to send the request and associated\narguments to a callable function, not a class, class-based views have an\n:meth:`~django.views.generic.base.View.as_view` class method which serves as\nthe callable entry point to your class. The ``as_view`` entry point creates an\ninstance of your class and calls its\n:meth:`~django.views.generic.base.View.dispatch` method. ``dispatch`` looks at\nthe request to determine whether it is a ``GET``, ``POST``, etc, and relays the\nrequest to a matching method if one is defined, or raises\n:class:`~django.http.HttpResponseNotAllowed` if not::\n\n    # urls.py\n    from django.conf.urls import patterns\n    from myapp.views import MyView\n\n    urlpatterns = patterns('',\n        (r'^about/', MyView.as_view()),\n    )\n\n\nIt is worth noting that what your method returns is identical to what you\nreturn from a function-based view, namely some form of\n:class:`~django.http.HttpResponse`. This means that\n:doc:`http shortcuts </topics/http/shortcuts>` or\n:class:`~django.template.response.TemplateResponse` objects are valid to use\ninside a class-based view.\n\nWhile a minimal class-based view does not require any class attributes to\nperform its job, class attributes are useful in many class-based designs,\nand there are two ways to configure or set class attributes.\n\nThe first is the standard Python way of subclassing and overriding attributes\nand methods in the subclass. So that if your parent class had an attribute\n``greeting`` like this::\n\n    from django.http import HttpResponse\n    from django.views.base import View\n\n    class GreetingView(View):\n        greeting = \"Good Day\"\n\n        def get(self, request):\n            return HttpResponse(self.greeting)\n\nYou can override that in a subclass::\n\n    class MorningGreetingView(GreetingView):\n        greeting = \"Morning to ya\"\n\nAnother option is to configure class attributes as keyword arguments to the\n:meth:`~django.views.generic.base.View.as_view` call in the URLconf::\n\n    urlpatterns = patterns('',\n        (r'^about/', MyView.as_view(greeting=\"G'day\")),\n    )\n\n.. note::\n\n    While your class is instantiated for each request dispatched to it, class\n    attributes set through the\n    :meth:`~django.views.generic.base.View.as_view` entry point are\n    configured only once at the time your URLs are imported.\n\nUsing mixins\n============\n\nMixins are a form of multiple inheritance where behaviors and attributes of\nmultiple parent classes can be combined.\n\nFor example, in the generic class-based views there is a mixin called\n:class:`~django.views.generic.base.TemplateResponseMixin` whose primary purpose\nis to define the method\n:meth:`~django.views.generic.base.TemplateResponseMixin.render_to_response`.\nWhen combined with the behavior of the :class:`~django.views.generic.base.View`\nbase class, the result is a :class:`~django.views.generic.base.TemplateView`\nclass that will dispatch requests to the appropriate matching methods (a\nbehavior defined in the ``View`` base class), and that has a\n:meth:`~django.views.generic.base.TemplateResponseMixin.render_to_response`\nmethod that uses a\n:attr:`~django.views.generic.base.TemplateResponseMixin.template_name`\nattribute to return a :class:`~django.template.response.TemplateResponse`\nobject (a behavior defined in the ``TemplateResponseMixin``).\n\nMixins are an excellent way of reusing code across multiple classes, but they\ncome with some cost. The more your code is scattered among mixins, the harder\nit will be to read a child class and know what exactly it is doing, and the\nharder it will be to know which methods from which mixins to override if you\nare subclassing something that has a deep inheritance tree.\n\nNote also that you can only inherit from one generic view - that is, only one\nparent class may inherit from :class:`~django.views.generic.base.View` and\nthe rest (if any) should be mixins. Trying to inherit from more than one class\nthat inherits from ``View`` - for example, trying to use a form at the top of a\nlist and combining :class:`~django.views.generic.edit.ProcessFormView` and\n:class:`~django.views.generic.list.ListView` - won't work as expected.\n\nHandling forms with class-based views\n=====================================\n\nA basic function-based view that handles forms may look something like this::\n\n    from django.http import HttpResponseRedirect\n    from django.shortcuts import render\n\n    from .forms import MyForm\n\n    def myview(request):\n        if request.method == \"POST\":\n            form = MyForm(request.POST)\n            if form.is_valid():\n                # <process form cleaned data>\n                return HttpResponseRedirect('/success/')\n        else:\n            form = MyForm(initial={'key': 'value'})\n\n        return render(request, 'form_template.html', {'form': form})\n\nA similar class-based view might look like::\n\n    from django.http import HttpResponseRedirect\n    from django.shortcuts import render\n\n    from .forms import MyForm\n\n    class MyFormView(View):\n        form_class = MyForm\n        initial = {'key': 'value'}\n        template_name = 'form_template.html'\n\n        def get(self, request, *args, **kwargs):\n            form = self.form_class(initial=self.initial)\n            return render(request,  self.template_name, {'form': form})\n\n        def post(self, request, *args, **kwargs):\n            form = self.form_class(request.POST)\n            if form.is_valid():\n                # <process form cleaned data>\n                return HttpResponseRedirect('/success/')\n\n            return render(request, self.template_name, {'form': form})\n\nThis is a very simple case, but you can see that you would then have the option\nof customizing this view by overriding any of the class attributes, e.g.\n``form_class``, via URLconf configuration, or subclassing and overriding one or\nmore of the methods (or both!).\n\nDecorating class-based views\n============================\n\nThe extension of class-based views isn't limited to using mixins. You\ncan use also use decorators. Since class-based views aren't functions,\ndecorating them works differently depending on if you're using ``as_view`` or\ncreating a subclass.\n\nDecorating in URLconf\n---------------------\n\nThe simplest way of decorating class-based views is to decorate the\nresult of the :meth:`~django.views.generic.base.View.as_view` method.\nThe easiest place to do this is in the URLconf where you deploy your view::\n\n    from django.contrib.auth.decorators import login_required, permission_required\n    from django.views.generic import TemplateView\n\n    from .views import VoteView\n\n    urlpatterns = patterns('',\n        (r'^about/', login_required(TemplateView.as_view(template_name=\"secret.html\"))),\n        (r'^vote/', permission_required('polls.can_vote')(VoteView.as_view())),\n    )\n\nThis approach applies the decorator on a per-instance basis. If you\nwant every instance of a view to be decorated, you need to take a\ndifferent approach.\n\n.. _decorating-class-based-views:\n\nDecorating the class\n--------------------\n\nTo decorate every instance of a class-based view, you need to decorate\nthe class definition itself. To do this you apply the decorator to the\n:meth:`~django.views.generic.base.View.dispatch` method of the class.\n\nA method on a class isn't quite the same as a standalone function, so\nyou can't just apply a function decorator to the method -- you need to\ntransform it into a method decorator first. The ``method_decorator``\ndecorator transforms a function decorator into a method decorator so\nthat it can be used on an instance method. For example::\n\n    from django.contrib.auth.decorators import login_required\n    from django.utils.decorators import method_decorator\n    from django.views.generic import TemplateView\n\n    class ProtectedView(TemplateView):\n        template_name = 'secret.html'\n\n        @method_decorator(login_required)\n        def dispatch(self, *args, **kwargs):\n            return super(ProtectedView, self).dispatch(*args, **kwargs)\n\nIn this example, every instance of ``ProtectedView`` will have\nlogin protection.\n\n.. note::\n\n    ``method_decorator`` passes ``*args`` and ``**kwargs``\n    as parameters to the decorated method on the class. If your method\n    does not accept a compatible set of parameters it will raise a\n    ``TypeError`` exception.\n"
  },
  {
    "path": "Django-1.5.1/docs/topics/class-based-views/mixins.txt",
    "content": "===================================\nUsing mixins with class-based views\n===================================\n\n.. caution::\n\n    This is an advanced topic. A working knowledge of :doc:`Django's\n    class-based views<index>` is advised before exploring these\n    techniques.\n\nDjango's built-in class-based views provide a lot of functionality,\nbut some of it you may want to use separately. For instance, you may\nwant to write a view that renders a template to make the HTTP\nresponse, but you can't use\n:class:`~django.views.generic.base.TemplateView`; perhaps you need to\nrender a template only on ``POST``, with ``GET`` doing something else\nentirely. While you could use\n:class:`~django.template.response.TemplateResponse` directly, this\nwill likely result in duplicate code.\n\nFor this reason, Django also provides a number of mixins that provide\nmore discrete functionality. Template rendering, for instance, is\nencapsulated in the\n:class:`~django.views.generic.base.TemplateResponseMixin`. The Django\nreference documentation contains :doc:`full documentation of all the\nmixins</ref/class-based-views/mixins>`.\n\nContext and template responses\n==============================\n\nTwo central mixins are provided that help in providing a consistent\ninterface to working with templates in class-based views.\n\n:class:`~django.views.generic.base.TemplateResponseMixin`\n    Every built in view which returns a\n    :class:`~django.template.response.TemplateResponse` will call the\n    :meth:`~django.views.generic.base.TemplateResponseMixin.render_to_response`\n    method that ``TemplateResponseMixin`` provides. Most of the time this\n    will be called for you (for instance, it is called by the ``get()`` method\n    implemented by both :class:`~django.views.generic.base.TemplateView` and\n    :class:`~django.views.generic.detail.DetailView`); similarly, it's unlikely\n    that you'll need to override it, although if you want your response to\n    return something not rendered via a Django template then you'll want to do\n    it. For an example of this, see the :ref:`JSONResponseMixin example\n    <jsonresponsemixin-example>`.\n\n    ``render_to_response`` itself calls\n    :meth:`~django.views.generic.base.TemplateResponseMixin.get_template_names`,\n    which by default will just look up\n    :attr:`~django.views.generic.base.TemplateResponseMixin.template_name` on\n    the class-based view; two other mixins\n    (:class:`~django.views.generic.detail.SingleObjectTemplateResponseMixin`\n    and\n    :class:`~django.views.generic.list.MultipleObjectTemplateResponseMixin`)\n    override this to provide more flexible defaults when dealing with actual\n    objects.\n\n.. versionadded:: 1.5\n\n:class:`~django.views.generic.base.ContextMixin`\n    Every built in view which needs context data, such as for rendering a\n    template (including ``TemplateResponseMixin`` above), should call\n    :meth:`~django.views.generic.base.ContextMixin.get_context_data` passing\n    any data they want to ensure is in there as keyword arguments.\n    ``get_context_data`` returns a dictionary; in ``ContextMixin`` it\n    simply returns its keyword arguments, but it is common to override this to\n    add more members to the dictionary.\n\nBuilding up Django's generic class-based views\n==============================================\n\nLet's look at how two of Django's generic class-based views are built\nout of mixins providing discrete functionality. We'll consider\n:class:`~django.views.generic.detail.DetailView`, which renders a\n\"detail\" view of an object, and\n:class:`~django.views.generic.list.ListView`, which will render a list\nof objects, typically from a queryset, and optionally paginate\nthem. This will introduce us to four mixins which between them provide\nuseful functionality when working with either a single Django object,\nor multiple objects.\n\nThere are also mixins involved in the generic edit views\n(:class:`~django.views.generic.edit.FormView`, and the model-specific\nviews :class:`~django.views.generic.edit.CreateView`,\n:class:`~django.views.generic.edit.UpdateView` and\n:class:`~django.views.generic.edit.DeleteView`), and in the\ndate-based generic views. These are\ncovered in the :doc:`mixin reference\ndocumentation</ref/class-based-views/mixins>`.\n\nDetailView: working with a single Django object\n-----------------------------------------------\n\nTo show the detail of an object, we basically need to do two things:\nwe need to look up the object and then we need to make a\n:class:`~django.template.response.TemplateResponse` with a suitable template,\nand that object as context.\n\nTo get the object, :class:`~django.views.generic.detail.DetailView`\nrelies on :class:`~django.views.generic.detail.SingleObjectMixin`,\nwhich provides a\n:meth:`~django.views.generic.detail.SingleObjectMixin.get_object`\nmethod that figures out the object based on the URL of the request (it\nlooks for ``pk`` and ``slug`` keyword arguments as declared in the\nURLConf, and looks the object up either from the\n:attr:`~django.views.generic.detail.SingleObjectMixin.model` attribute\non the view, or the\n:attr:`~django.views.generic.detail.SingleObjectMixin.queryset`\nattribute if that's provided). ``SingleObjectMixin`` also overrides\n:meth:`~django.views.generic.base.ContextMixin.get_context_data`,\nwhich is used across all Django's built in class-based views to supply\ncontext data for template renders.\n\nTo then make a :class:`~django.template.response.TemplateResponse`,\n:class:`DetailView` uses\n:class:`~django.views.generic.detail.SingleObjectTemplateResponseMixin`,\nwhich extends :class:`~django.views.generic.base.TemplateResponseMixin`,\noverriding\n:meth:`~django.views.generic.base.TemplateResponseMixin.get_template_names()`\nas discussed above. It actually provides a fairly sophisticated set of options,\nbut the main one that most people are going to use is\n``<app_label>/<object_name>_detail.html``. The ``_detail`` part can be changed\nby setting\n:attr:`~django.views.generic.detail.SingleObjectTemplateResponseMixin.template_name_suffix`\non a subclass to something else. (For instance, the :doc:`generic edit\nviews<generic-editing>` use ``_form`` for create and update views, and\n``_confirm_delete`` for delete views.)\n\nListView: working with many Django objects\n------------------------------------------\n\nLists of objects follow roughly the same pattern: we need a (possibly\npaginated) list of objects, typically a\n:class:`~django.db.models.query.QuerySet`, and then we need to make a\n:class:`~django.template.response.TemplateResponse` with a suitable template\nusing that list of objects.\n\nTo get the objects, :class:`~django.views.generic.list.ListView` uses\n:class:`~django.views.generic.list.MultipleObjectMixin`, which\nprovides both\n:meth:`~django.views.generic.list.MultipleObjectMixin.get_queryset`\nand\n:meth:`~django.views.generic.list.MultipleObjectMixin.paginate_queryset`. Unlike\nwith :class:`~django.views.generic.detail.SingleObjectMixin`, there's no need\nto key off parts of the URL to figure out the queryset to work with, so the\ndefault just uses the\n:attr:`~django.views.generic.list.MultipleObjectMixin.queryset` or\n:attr:`~django.views.generic.list.MultipleObjectMixin.model` attribute\non the view class. A common reason to override\n:meth:`~django.views.generic.list.MultipleObjectMixin.get_queryset`\nhere would be to dynamically vary the objects, such as depending on\nthe current user or to exclude posts in the future for a blog.\n\n:class:`~django.views.generic.list.MultipleObjectMixin` also overrides\n:meth:`~django.views.generic.base.ContextMixin.get_context_data` to\ninclude appropriate context variables for pagination (providing\ndummies if pagination is disabled). It relies on ``object_list`` being\npassed in as a keyword argument, which :class:`ListView` arranges for\nit.\n\nTo make a :class:`~django.template.response.TemplateResponse`,\n:class:`ListView` then uses\n:class:`~django.views.generic.list.MultipleObjectTemplateResponseMixin`;\nas with :class:`~django.views.generic.detail.SingleObjectTemplateResponseMixin`\nabove, this overrides ``get_template_names()`` to provide :meth:`a range of\noptions <django.views.generic.list.MultipleObjectTemplateResponseMixin>`,\nwith the most commonly-used being\n``<app_label>/<object_name>_list.html``, with the ``_list`` part again\nbeing taken from the\n:attr:`~django.views.generic.list.MultipleObjectTemplateResponseMixin.template_name_suffix`\nattribute. (The date based generic views use suffixes such as ``_archive``,\n``_archive_year`` and so on to use different templates for the various\nspecialised date-based list views.)\n\nUsing Django's class-based view mixins\n======================================\n\nNow we've seen how Django's generic class-based views use the provided\nmixins, let's look at other ways we can combine them. Of course we're\nstill going to be combining them with either built-in class-based\nviews, or other generic class-based views, but there are a range of\nrarer problems you can solve than are provided for by Django out of\nthe box.\n\n.. warning::\n\n    Not all mixins can be used together, and not all generic class\n    based views can be used with all other mixins. Here we present a\n    few examples that do work; if you want to bring together other\n    functionality then you'll have to consider interactions between\n    attributes and methods that overlap between the different classes\n    you're using, and how `method resolution order`_ will affect which\n    versions of the methods will be called in what order.\n\n    The reference documentation for Django's :doc:`class-based\n    views</ref/class-based-views/index>` and :doc:`class-based view\n    mixins</ref/class-based-views/mixins>` will help you in\n    understanding which attributes and methods are likely to cause\n    conflict between different classes and mixins.\n\n    If in doubt, it's often better to back off and base your work on\n    :class:`View` or :class:`TemplateView`, perhaps with\n    :class:`~django.views.generic.detail.SingleObjectMixin` and\n    :class:`~django.views.generic.list.MultipleObjectMixin`. Although you\n    will probably end up writing more code, it is more likely to be clearly\n    understandable to someone else coming to it later, and with fewer\n    interactions to worry about you will save yourself some thinking. (Of\n    course, you can always dip into Django's implementation of the generic\n    class based views for inspiration on how to tackle problems.)\n\n.. _method resolution order: http://www.python.org/download/releases/2.3/mro/\n\n\nUsing SingleObjectMixin with View\n---------------------------------\n\nIf we want to write a simple class-based view that responds only to\n``POST``, we'll subclass :class:`~django.views.generic.base.View` and\nwrite a ``post()`` method in the subclass. However if we want our\nprocessing to work on a particular object, identified from the URL,\nwe'll want the functionality provided by\n:class:`~django.views.generic.detail.SingleObjectMixin`.\n\nWe'll demonstrate this with the publisher modelling we used in the\n:doc:`generic class-based views introduction<generic-display>`.\n\n.. code-block:: python\n\n    # views.py\n    from django.http import HttpResponseForbidden, HttpResponseRedirect\n    from django.core.urlresolvers import reverse\n    from django.views.generic import View\n    from django.views.generic.detail import SingleObjectMixin\n    from books.models import Author\n\n    class RecordInterest(View, SingleObjectMixin):\n        \"\"\"Records the current user's interest in an author.\"\"\"\n        model = Author\n\n        def post(self, request, *args, **kwargs):\n            if not request.user.is_authenticated():\n                return HttpResponseForbidden()\n\n            # Look up the author we're interested in.\n            self.object = self.get_object()\n            # Actually record interest somehow here!\n\n            return HttpResponseRedirect(reverse('author-detail', kwargs={'pk': self.object.pk}))\n\nIn practice you'd probably want to record the interest in a key-value\nstore rather than in a relational database, so we've left that bit\nout. The only bit of the view that needs to worry about using\n:class:`~django.views.generic.detail.SingleObjectMixin` is where we want to\nlook up the author we're interested in, which it just does with a simple call\nto ``self.get_object()``. Everything else is taken care of for us by the\nmixin.\n\nWe can hook this into our URLs easily enough::\n\n    # urls.py\n    from books.views import RecordInterest\n\n    urlpatterns = patterns('',\n        #...\n        url(r'^author/(?P<pk>\\d+)/interest/$', RecordInterest.as_view(), name='author-interest'),\n    )\n\nNote the ``pk`` named group, which\n:meth:`~django.views.generic.detail.SingleObjectMixin.get_object` uses\nto look up the ``Author`` instance. You could also use a slug, or\nany of the other features of\n:class:`~django.views.generic.detail.SingleObjectMixin`.\n\nUsing SingleObjectMixin with ListView\n-------------------------------------\n\n:class:`~django.views.generic.list.ListView` provides built-in\npagination, but you might want to paginate a list of objects that are\nall linked (by a foreign key) to another object. In our publishing\nexample, you might want to paginate through all the books by a\nparticular publisher.\n\nOne way to do this is to combine :class:`ListView` with\n:class:`~django.views.generic.detail.SingleObjectMixin`, so that the queryset\nfor the paginated list of books can hang off the publisher found as the single\nobject. In order to do this, we need to have two different querysets:\n\n**Publisher queryset for use in get_object**\n    We'll set that up directly when we call ``get_object()``.\n\n**Book queryset for use by ListView**\n    We'll figure that out ourselves in ``get_queryset()`` so we\n    can take into account the ``Publisher`` we're looking at.\n\n.. note::\n\n    We have to think carefully about ``get_context_data()``.\n    Since both :class:`~django.views.generic.detail.SingleObjectMixin` and\n    :class:`ListView` will\n    put things in the context data under the value of\n    ``context_object_name`` if it's set, we'll instead explictly\n    ensure the Publisher is in the context data. :class:`ListView`\n    will add in the suitable ``page_obj`` and ``paginator`` for us\n    providing we remember to call ``super()``.\n\nNow we can write a new ``PublisherDetail``::\n\n    from django.views.generic import ListView\n    from django.views.generic.detail import SingleObjectMixin\n    from books.models import Publisher\n\n    class PublisherDetail(SingleObjectMixin, ListView):\n        paginate_by = 2\n        template_name = \"books/publisher_detail.html\"\n\n        def get_context_data(self, **kwargs):\n            kwargs['publisher'] = self.object\n            return super(PublisherDetail, self).get_context_data(**kwargs)\n\n        def get_queryset(self):\n            self.object = self.get_object(Publisher.objects.all())\n            return self.object.book_set.all()\n\nNotice how we set ``self.object`` within ``get_queryset()`` so we\ncan use it again later in ``get_context_data()``. If you don't set\n``template_name``, the template will default to the normal\n:class:`ListView` choice, which in this case would be\n``\"books/book_list.html\"`` because it's a list of books;\n:class:`ListView` knows nothing about\n:class:`~django.views.generic.detail.SingleObjectMixin`, so it doesn't have\nany clue this view is anything to do with a Publisher.\n\n.. highlightlang:: html+django\n\nThe ``paginate_by`` is deliberately small in the example so you don't\nhave to create lots of books to see the pagination working! Here's the\ntemplate you'd want to use::\n\n    {% extends \"base.html\" %}\n\n    {% block content %}\n        <h2>Publisher {{ publisher.name }}</h2>\n\n        <ol>\n          {% for book in page_obj %}\n            <li>{{ book.title }}</li>\n          {% endfor %}\n        </ol>\n\n        <div class=\"pagination\">\n            <span class=\"step-links\">\n                {% if page_obj.has_previous %}\n                    <a href=\"?page={{ page_obj.previous_page_number }}\">previous</a>\n                {% endif %}\n\n                <span class=\"current\">\n                    Page {{ page_obj.number }} of {{ paginator.num_pages }}.\n                </span>\n\n                {% if page_obj.has_next %}\n                    <a href=\"?page={{ page_obj.next_page_number }}\">next</a>\n                {% endif %}\n            </span>\n        </div>\n    {% endblock %}\n\nAvoid anything more complex\n===========================\n\nGenerally you can use\n:class:`~django.views.generic.base.TemplateResponseMixin` and\n:class:`~django.views.generic.detail.SingleObjectMixin` when you need\ntheir functionality. As shown above, with a bit of care you can even\ncombine ``SingleObjectMixin`` with\n:class:`~django.views.generic.list.ListView`. However things get\nincreasingly complex as you try to do so, and a good rule of thumb is:\n\n.. hint::\n\n    Each of your views should use only mixins or views from one of the\n    groups of generic class-based views: :doc:`detail,\n    list<generic-display>`, :doc:`editing<generic-editing>` and\n    date. For example it's fine to combine\n    :class:`TemplateView` (built in view) with\n    :class:`~django.views.generic.list.MultipleObjectMixin` (generic list), but\n    you're likely to have problems combining ``SingleObjectMixin`` (generic\n    detail) with ``MultipleObjectMixin`` (generic list).\n\nTo show what happens when you try to get more sophisticated, we show\nan example that sacrifices readability and maintainability when there\nis a simpler solution. First, let's look at a naive attempt to combine\n:class:`~django.views.generic.detail.DetailView` with\n:class:`~django.views.generic.edit.FormMixin` to enable use to\n``POST`` a Django :class:`~django.forms.Form` to the same URL as we're\ndisplaying an object using :class:`DetailView`.\n\nUsing FormMixin with DetailView\n-------------------------------\n\nThink back to our earlier example of using :class:`View` and\n:class:`~django.views.generic.detail.SingleObjectMixin` together. We were\nrecording a user's interest in a particular author; say now that we want to\nlet them leave a message saying why they like them. Again, let's assume we're\nnot going to store this in a relational database but instead in\nsomething more esoteric that we won't worry about here.\n\nAt this point it's natural to reach for a :class:`~django.forms.Form` to\nencapsulate the information sent from the user's browser to Django. Say also\nthat we're heavily invested in `REST`_, so we want to use the same URL for\ndisplaying the author as for capturing the message from the\nuser. Let's rewrite our ``AuthorDetailView`` to do that.\n\n.. _REST: http://en.wikipedia.org/wiki/Representational_state_transfer\n\nWe'll keep the ``GET`` handling from :class:`DetailView`, although\nwe'll have to add a :class:`~django.forms.Form` into the context data so we can\nrender it in the template. We'll also want to pull in form processing\nfrom :class:`~django.views.generic.edit.FormMixin`, and write a bit of\ncode so that on ``POST`` the form gets called appropriately.\n\n.. note::\n\n    We use :class:`~django.views.generic.edit.FormMixin` and implement\n    ``post()`` ourselves rather than try to mix :class:`DetailView` with\n    :class:`FormView` (which provides a suitable ``post()`` already) because\n    both of the views implement ``get()``, and things would get much more\n    confusing.\n\n.. highlightlang:: python\n\nOur new ``AuthorDetail`` looks like this::\n\n    # CAUTION: you almost certainly do not want to do this.\n    # It is provided as part of a discussion of problems you can\n    # run into when combining different generic class-based view\n    # functionality that is not designed to be used together.\n\n    from django import forms\n    from django.http import HttpResponseForbidden\n    from django.core.urlresolvers import reverse\n    from django.views.generic import DetailView\n    from django.views.generic.edit import FormMixin\n\n    class AuthorInterestForm(forms.Form):\n        message = forms.CharField()\n\n    class AuthorDetail(DetailView, FormMixin):\n        model = Author\n        form_class = AuthorInterestForm\n\n        def get_success_url(self):\n            return reverse(\n                'author-detail',\n                kwargs = {'pk': self.object.pk},\n            )\n\n        def get_context_data(self, **kwargs):\n            form_class = self.get_form_class()\n            form = self.get_form(form_class)\n            context = {\n                'form': form\n            }\n            context.update(kwargs)\n            return super(AuthorDetail, self).get_context_data(**context)\n\n        def post(self, request, *args, **kwargs):\n            form_class = self.get_form_class()\n            form = self.get_form(form_class)\n            if form.is_valid():\n                return self.form_valid(form)\n            else:\n                return self.form_invalid(form)\n\n        def form_valid(self, form):\n            if not self.request.user.is_authenticated():\n                return HttpResponseForbidden()\n            self.object = self.get_object()\n            # record the interest using the message in form.cleaned_data\n            return super(AuthorDetail, self).form_valid(form)\n\n``get_success_url()`` is just providing somewhere to redirect to,\nwhich gets used in the default implementation of\n``form_valid()``. We have to provide our own ``post()`` as\nnoted earlier, and override ``get_context_data()`` to make the\n:class:`~django.forms.Form` available in the context data.\n\nA better solution\n-----------------\n\nIt should be obvious that the number of subtle interactions between\n:class:`~django.views.generic.edit.FormMixin` and :class:`DetailView` is\nalready testing our ability to manage things. It's unlikely you'd want to\nwrite this kind of class yourself.\n\nIn this case, it would be fairly easy to just write the ``post()``\nmethod yourself, keeping :class:`DetailView` as the only generic\nfunctionality, although writing :class:`~django.forms.Form` handling code\ninvolves a lot of duplication.\n\nAlternatively, it would still be easier than the above approach to\nhave a separate view for processing the form, which could use\n:class:`~django.views.generic.edit.FormView` distinct from\n:class:`DetailView` without concerns.\n\nAn alternative better solution\n------------------------------\n\nWhat we're really trying to do here is to use two different class\nbased views from the same URL. So why not do just that? We have a very\nclear division here: ``GET`` requests should get the\n:class:`DetailView` (with the :class:`~django.forms.Form` added to the context\ndata), and ``POST`` requests should get the :class:`FormView`. Let's\nset up those views first.\n\nThe ``AuthorDisplay`` view is almost the same as :ref:`when we\nfirst introduced AuthorDetail<generic-views-extra-work>`; we have to\nwrite our own ``get_context_data()`` to make the\n``AuthorInterestForm`` available to the template. We'll skip the\n``get_object()`` override from before for clarity.\n\n.. code-block:: python\n\n    from django.views.generic import DetailView\n    from django import forms\n    from books.models import Author\n\n    class AuthorInterestForm(forms.Form):\n        message = forms.CharField()\n\n    class AuthorDisplay(DetailView):\n\n        queryset = Author.objects.all()\n\n        def get_context_data(self, **kwargs):\n            context = {\n                'form': AuthorInterestForm(),\n            }\n            context.update(kwargs)\n            return super(AuthorDisplay, self).get_context_data(**context)\n\nThen the ``AuthorInterest`` is a simple :class:`FormView`, but we\nhave to bring in :class:`~django.views.generic.detail.SingleObjectMixin` so we\ncan find the author we're talking about, and we have to remember to set\n``template_name`` to ensure that form errors will render the same\ntemplate as ``AuthorDisplay`` is using on ``GET``.\n\n.. code-block:: python\n\n    from django.views.generic import FormView\n    from django.views.generic.detail import SingleObjectMixin\n\n    class AuthorInterest(FormView, SingleObjectMixin):\n        template_name = 'books/author_detail.html'\n        form_class = AuthorInterestForm\n        model = Author\n\n        def get_context_data(self, **kwargs):\n            context = {\n                'object': self.get_object(),\n            }\n            return super(AuthorInterest, self).get_context_data(**context)\n\n        def get_success_url(self):\n            return reverse(\n                'author-detail',\n                kwargs = {'pk': self.object.pk},\n            )\n\n        def form_valid(self, form):\n            if not self.request.user.is_authenticated():\n                return HttpResponseForbidden()\n            self.object = self.get_object()\n            # record the interest using the message in form.cleaned_data\n            return super(AuthorInterest, self).form_valid(form)\n\nFinally we bring this together in a new ``AuthorDetail`` view. We\nalready know that calling :meth:`~django.views.generic.base.View.as_view()` on\na class-based view gives us something that behaves exactly like a function\nbased view, so we can do that at the point we choose between the two subviews.\n\nYou can of course pass through keyword arguments to\n:meth:`~django.views.generic.base.View.as_view()` in the same way you\nwould in your URLconf, such as if you wanted the ``AuthorInterest`` behavior\nto also appear at another URL but using a different template.\n\n.. code-block:: python\n\n    from django.views.generic import View\n\n    class AuthorDetail(View):\n\n        def get(self, request, *args, **kwargs):\n            view = AuthorDisplay.as_view()\n            return view(request, *args, **kwargs)\n\n        def post(self, request, *args, **kwargs):\n            view = AuthorInterest.as_view()\n            return view(request, *args, **kwargs)\n\nThis approach can also be used with any other generic class-based\nviews or your own class-based views inheriting directly from\n:class:`View` or :class:`TemplateView`, as it keeps the different\nviews as separate as possible.\n\n.. _jsonresponsemixin-example:\n\nMore than just HTML\n===================\n\nWhere class based views shine is when you want to do the same thing many times.\nSuppose you're writing an API, and every view should return JSON instead of\nrendered HTML.\n\nWe can create a mixin class to use in all of our views, handling the\nconversion to JSON once.\n\nFor example, a simple JSON mixin might look something like this::\n\n    import json\n    from django.http import HttpResponse\n\n    class JSONResponseMixin(object):\n        \"\"\"\n        A mixin that can be used to render a JSON response.\n        \"\"\"\n        response_class = HttpResponse\n\n        def render_to_response(self, context, **response_kwargs):\n            \"\"\"\n            Returns a JSON response, transforming 'context' to make the payload.\n            \"\"\"\n            response_kwargs['content_type'] = 'application/json'\n            return self.response_class(\n                self.convert_context_to_json(context),\n                **response_kwargs\n            )\n\n        def convert_context_to_json(self, context):\n            \"Convert the context dictionary into a JSON object\"\n            # Note: This is *EXTREMELY* naive; in reality, you'll need\n            # to do much more complex handling to ensure that arbitrary\n            # objects -- such as Django model instances or querysets\n            # -- can be serialized as JSON.\n            return json.dumps(context)\n\nNow we mix this into the base TemplateView::\n\n    from django.views.generic import TemplateView\n\n    class JSONView(JSONResponseMixin, TemplateView):\n        pass\n\nEqually we could use our mixin with one of the generic views. We can make our\nown version of :class:`~django.views.generic.detail.DetailView` by mixing\n``JSONResponseMixin`` with the\n``django.views.generic.detail.BaseDetailView`` -- (the\n:class:`~django.views.generic.detail.DetailView` before template\nrendering behavior has been mixed in)::\n\n    class JSONDetailView(JSONResponseMixin, BaseDetailView):\n        pass\n\nThis view can then be deployed in the same way as any other\n:class:`~django.views.generic.detail.DetailView`, with exactly the\nsame behavior -- except for the format of the response.\n\nIf you want to be really adventurous, you could even mix a\n:class:`~django.views.generic.detail.DetailView` subclass that is able\nto return *both* HTML and JSON content, depending on some property of\nthe HTTP request, such as a query argument or a HTTP header. Just mix\nin both the ``JSONResponseMixin`` and a\n:class:`~django.views.generic.detail.SingleObjectTemplateResponseMixin`,\nand override the implementation of\n:func:`~django.views.generic.base.TemplateResponseMixin.render_to_response()`\nto defer to the appropriate subclass depending on the type of response that the\nuser requested::\n\n    class HybridDetailView(JSONResponseMixin, SingleObjectTemplateResponseMixin, BaseDetailView):\n        def render_to_response(self, context):\n            # Look for a 'format=json' GET argument\n            if self.request.GET.get('format','html') == 'json':\n                return JSONResponseMixin.render_to_response(self, context)\n            else:\n                return SingleObjectTemplateResponseMixin.render_to_response(self, context)\n\nBecause of the way that Python resolves method overloading, the local\n``render_to_response()`` implementation will override the versions provided by\n``JSONResponseMixin`` and\n:class:`~django.views.generic.detail.SingleObjectTemplateResponseMixin`.\n"
  },
  {
    "path": "Django-1.5.1/docs/topics/conditional-view-processing.txt",
    "content": "===========================\nConditional View Processing\n===========================\n\nHTTP clients can send a number of headers to tell the server about copies of a\nresource that they have already seen. This is commonly used when retrieving a\nWeb page (using an HTTP ``GET`` request) to avoid sending all the data for\nsomething the client has already retrieved. However, the same headers can be\nused for all HTTP methods (``POST``, ``PUT``, ``DELETE``, etc).\n\nFor each page (response) that Django sends back from a view, it might provide\ntwo HTTP headers: the ``ETag`` header and the ``Last-Modified`` header. These\nheaders are optional on HTTP responses. They can be set by your view function,\nor you can rely on the :class:`~django.middleware.common.CommonMiddleware`\nmiddleware to set the ``ETag`` header.\n\nWhen the client next requests the same resource, it might send along a header\nsuch as `If-modified-since`_, containing the date of the last modification\ntime it was sent, or `If-none-match`_, containing the ``ETag`` it was sent.\nIf the current version of the page matches the ``ETag`` sent by the client, or\nif the resource has not been modified, a 304 status code can be sent back,\ninstead of a full response, telling the client that nothing has changed.\n\n.. _If-none-match: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.26\n.. _If-modified-since: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.25\n\nWhen you need more fine-grained control you may use per-view conditional\nprocessing functions.\n\n.. _conditional-decorators:\n\nThe ``condition`` decorator\n===========================\n\nSometimes (in fact, quite often) you can create functions to rapidly compute the ETag_\nvalue or the last-modified time for a resource, **without** needing to do all\nthe computations needed to construct the full view. Django can then use these\nfunctions to provide an \"early bailout\" option for the view processing.\nTelling the client that the content has not been modified since the last\nrequest, perhaps.\n\n.. _ETag: http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.11\n\nThese two functions are passed as parameters the\n``django.views.decorators.http.condition`` decorator. This decorator uses\nthe two functions (you only need to supply one, if you can't compute both\nquantities easily and quickly) to work out if the headers in the HTTP request\nmatch those on the resource. If they don't match, a new copy of the resource\nmust be computed and your normal view is called.\n\nThe ``condition`` decorator's signature looks like this::\n\n    condition(etag_func=None, last_modified_func=None)\n\nThe two functions, to compute the ETag and the last modified time, will be\npassed the incoming ``request`` object and the same parameters, in the same\norder, as the view function they are helping to wrap. The function passed\n``last_modified_func`` should return a standard datetime value specifying the\nlast time the resource was modified, or ``None`` if the resource doesn't\nexist. The function passed to the ``etag`` decorator should return a string\nrepresenting the `Etag`_ for the resource, or ``None`` if it doesn't exist.\n\nUsing this feature usefully is probably best explained with an example.\nSuppose you have this pair of models, representing a simple blog system::\n\n    import datetime\n    from django.db import models\n\n    class Blog(models.Model):\n        ...\n\n    class Entry(models.Model):\n        blog = models.ForeignKey(Blog)\n        published = models.DateTimeField(default=datetime.datetime.now)\n        ...\n\nIf the front page, displaying the latest blog entries, only changes when you\nadd a new blog entry, you can compute the last modified time very quickly. You\nneed the latest ``published`` date for every entry associated with that blog.\nOne way to do this would be::\n\n    def latest_entry(request, blog_id):\n        return Entry.objects.filter(blog=blog_id).latest(\"published\").published\n\nYou can then use this function to provide early detection of an unchanged page\nfor your front page view::\n\n    from django.views.decorators.http import condition\n\n    @condition(last_modified_func=latest_entry)\n    def front_page(request, blog_id):\n        ...\n\nShortcuts for only computing one value\n======================================\n\nAs a general rule, if you can provide functions to compute *both* the ETag and\nthe last modified time, you should do so. You don't know which headers any\ngiven HTTP client will send you, so be prepared to handle both. However,\nsometimes only one value is easy to compute and Django provides decorators\nthat handle only ETag or only last-modified computations.\n\nThe ``django.views.decorators.http.etag`` and\n``django.views.decorators.http.last_modified`` decorators are passed the same\ntype of functions as the ``condition`` decorator. Their signatures are::\n\n    etag(etag_func)\n    last_modified(last_modified_func)\n\nWe could write the earlier example, which only uses a last-modified function,\nusing one of these decorators::\n\n    @last_modified(latest_entry)\n    def front_page(request, blog_id):\n        ...\n\n...or::\n\n    def front_page(request, blog_id):\n        ...\n    front_page = last_modified(latest_entry)(front_page)\n\nUse ``condition`` when testing both conditions\n------------------------------------------------\n\nIt might look nicer to some people to try and chain the ``etag`` and\n``last_modified`` decorators if you want to test both preconditions. However,\nthis would lead to incorrect behavior.\n\n::\n\n    # Bad code. Don't do this!\n    @etag(etag_func)\n    @last_modified(last_modified_func)\n    def my_view(request):\n        # ...\n\n    # End of bad code.\n\nThe first decorator doesn't know anything about the second and might\nanswer that the response is not modified even if the second decorators would\ndetermine otherwise. The ``condition`` decorator uses both callback functions\nsimultaneously to work out the right action to take.\n\nUsing the decorators with other HTTP methods\n============================================\n\nThe ``condition`` decorator is useful for more than only ``GET`` and\n``HEAD`` requests (``HEAD`` requests are the same as ``GET`` in this\nsituation). It can be used also to be used to provide checking for ``POST``,\n``PUT`` and ``DELETE`` requests. In these situations, the idea isn't to return\na \"not modified\" response, but to tell the client that the resource they are\ntrying to change has been altered in the meantime.\n\nFor example, consider the following exchange between the client and server:\n\n1. Client requests ``/foo/``.\n2. Server responds with some content with an ETag of ``\"abcd1234\"``.\n3. Client sends an HTTP ``PUT`` request to ``/foo/`` to update the\n   resource. It also sends an ``If-Match: \"abcd1234\"`` header to specify\n   the version it is trying to update.\n4. Server checks to see if the resource has changed, by computing the ETag\n   the same way it does for a ``GET`` request (using the same function).\n   If the resource *has* changed, it will return a 412 status code code,\n   meaning \"precondition failed\".\n5. Client sends a ``GET`` request to ``/foo/``, after receiving a 412\n   response, to retrieve an updated version of the content before updating\n   it.\n\nThe important thing this example shows is that the same functions can be used\nto compute the ETag and last modification values in all situations. In fact,\nyou **should** use the same functions, so that the same values are returned\nevery time.\n\nComparison with middleware conditional processing\n=================================================\n\nYou may notice that Django already provides simple and straightforward\nconditional ``GET`` handling via the\n:class:`django.middleware.http.ConditionalGetMiddleware` and\n:class:`~django.middleware.common.CommonMiddleware`. Whilst certainly being\neasy to use and suitable for many situations, those pieces of middleware\nfunctionality have limitations for advanced usage:\n\n* They are applied globally to all views in your project\n* They don't save you from generating the response itself, which may be\n  expensive\n* They are only appropriate for HTTP ``GET`` requests.\n\nYou should choose the most appropriate tool for your particular problem here.\nIf you have a way to compute ETags and modification times quickly and if some\nview takes a while to generate the content, you should consider using the\n``condition`` decorator described in this document. If everything already runs\nfairly quickly, stick to using the middleware and the amount of network\ntraffic sent back to the clients will still be reduced if the view hasn't\nchanged.\n\n"
  },
  {
    "path": "Django-1.5.1/docs/topics/db/aggregation.txt",
    "content": "===========\nAggregation\n===========\n\n.. currentmodule:: django.db.models\n\nThe topic guide on :doc:`Django's database-abstraction API </topics/db/queries>`\ndescribed the way that you can use Django queries that create,\nretrieve, update and delete individual objects. However, sometimes you will\nneed to retrieve values that are derived by summarizing or *aggregating* a\ncollection of objects. This topic guide describes the ways that aggregate values\ncan be generated and returned using Django queries.\n\nThroughout this guide, we'll refer to the following models. These models are\nused to track the inventory for a series of online bookstores:\n\n.. _queryset-model-example:\n\n.. code-block:: python\n\n    class Author(models.Model):\n       name = models.CharField(max_length=100)\n       age = models.IntegerField()\n\n    class Publisher(models.Model):\n       name = models.CharField(max_length=300)\n       num_awards = models.IntegerField()\n\n    class Book(models.Model):\n       name = models.CharField(max_length=300)\n       pages = models.IntegerField()\n       price = models.DecimalField(max_digits=10, decimal_places=2)\n       rating = models.FloatField()\n       authors = models.ManyToManyField(Author)\n       publisher = models.ForeignKey(Publisher)\n       pubdate = models.DateField()\n\n    class Store(models.Model):\n       name = models.CharField(max_length=300)\n       books = models.ManyToManyField(Book)\n       registered_users = models.PositiveIntegerField()\n\nCheat sheet\n===========\n\nIn a hurry? Here's how to do common aggregate queries, assuming the models above:\n\n.. code-block:: python\n\n    # Total number of books.\n    >>> Book.objects.count()\n    2452\n\n    # Total number of books with publisher=BaloneyPress\n    >>> Book.objects.filter(publisher__name='BaloneyPress').count()\n    73\n\n    # Average price across all books.\n    >>> from django.db.models import Avg\n    >>> Book.objects.all().aggregate(Avg('price'))\n    {'price__avg': 34.35}\n\n    # Max price across all books.\n    >>> from django.db.models import Max\n    >>> Book.objects.all().aggregate(Max('price'))\n    {'price__max': Decimal('81.20')}\n\n    # All the following queries involve traversing the Book<->Publisher\n    # many-to-many relationship backward\n\n    # Each publisher, each with a count of books as a \"num_books\" attribute.\n    >>> from django.db.models import Count\n    >>> pubs = Publisher.objects.annotate(num_books=Count('book'))\n    >>> pubs\n    [<Publisher BaloneyPress>, <Publisher SalamiPress>, ...]\n    >>> pubs[0].num_books\n    73\n\n    # The top 5 publishers, in order by number of books.\n    >>> pubs = Publisher.objects.annotate(num_books=Count('book')).order_by('-num_books')[:5]\n    >>> pubs[0].num_books\n    1323\n\nGenerating aggregates over a QuerySet\n=====================================\n\nDjango provides two ways to generate aggregates. The first way is to generate\nsummary values over an entire ``QuerySet``. For example, say you wanted to\ncalculate the average price of all books available for sale. Django's query\nsyntax provides a means for describing the set of all books::\n\n    >>> Book.objects.all()\n\nWhat we need is a way to calculate summary values over the objects that\nbelong to this ``QuerySet``. This is done by appending an ``aggregate()``\nclause onto the ``QuerySet``::\n\n    >>> from django.db.models import Avg\n    >>> Book.objects.all().aggregate(Avg('price'))\n    {'price__avg': 34.35}\n\nThe ``all()`` is redundant in this example, so this could be simplified to::\n\n    >>> Book.objects.aggregate(Avg('price'))\n    {'price__avg': 34.35}\n\nThe argument to the ``aggregate()`` clause describes the aggregate value that\nwe want to compute - in this case, the average of the ``price`` field on the\n``Book`` model. A list of the aggregate functions that are available can be\nfound in the :ref:`QuerySet reference <aggregation-functions>`.\n\n``aggregate()`` is a terminal clause for a ``QuerySet`` that, when invoked,\nreturns a dictionary of name-value pairs. The name is an identifier for the\naggregate value; the value is the computed aggregate. The name is\nautomatically generated from the name of the field and the aggregate function.\nIf you want to manually specify a name for the aggregate value, you can do so\nby providing that name when you specify the aggregate clause::\n\n    >>> Book.objects.aggregate(average_price=Avg('price'))\n    {'average_price': 34.35}\n\nIf you want to generate more than one aggregate, you just add another\nargument to the ``aggregate()`` clause. So, if we also wanted to know\nthe maximum and minimum price of all books, we would issue the query::\n\n    >>> from django.db.models import Avg, Max, Min, Count\n    >>> Book.objects.aggregate(Avg('price'), Max('price'), Min('price'))\n    {'price__avg': 34.35, 'price__max': Decimal('81.20'), 'price__min': Decimal('12.99')}\n\nGenerating aggregates for each item in a QuerySet\n=================================================\n\nThe second way to generate summary values is to generate an independent\nsummary for each object in a ``QuerySet``. For example, if you are retrieving\na list of books, you may want to know how many authors contributed to\neach book. Each Book has a many-to-many relationship with the Author; we\nwant to summarize this relationship for each book in the ``QuerySet``.\n\nPer-object summaries can be generated using the ``annotate()`` clause.\nWhen an ``annotate()`` clause is specified, each object in the ``QuerySet``\nwill be annotated with the specified values.\n\nThe syntax for these annotations is identical to that used for the\n``aggregate()`` clause. Each argument to ``annotate()`` describes an\naggregate that is to be calculated. For example, to annotate books with\nthe number of authors:\n\n.. code-block:: python\n\n    # Build an annotated queryset\n    >>> q = Book.objects.annotate(Count('authors'))\n    # Interrogate the first object in the queryset\n    >>> q[0]\n    <Book: The Definitive Guide to Django>\n    >>> q[0].authors__count\n    2\n    # Interrogate the second object in the queryset\n    >>> q[1]\n    <Book: Practical Django Projects>\n    >>> q[1].authors__count\n    1\n\nAs with ``aggregate()``, the name for the annotation is automatically derived\nfrom the name of the aggregate function and the name of the field being\naggregated. You can override this default name by providing an alias when you\nspecify the annotation::\n\n    >>> q = Book.objects.annotate(num_authors=Count('authors'))\n    >>> q[0].num_authors\n    2\n    >>> q[1].num_authors\n    1\n\nUnlike ``aggregate()``, ``annotate()`` is *not* a terminal clause. The output\nof the ``annotate()`` clause is a ``QuerySet``; this ``QuerySet`` can be\nmodified using any other ``QuerySet`` operation, including ``filter()``,\n``order_by()``, or even additional calls to ``annotate()``.\n\nJoins and aggregates\n====================\n\nSo far, we have dealt with aggregates over fields that belong to the\nmodel being queried. However, sometimes the value you want to aggregate\nwill belong to a model that is related to the model you are querying.\n\nWhen specifying the field to be aggregated in an aggregate function, Django\nwill allow you to use the same :ref:`double underscore notation\n<field-lookups-intro>` that is used when referring to related fields in\nfilters. Django will then handle any table joins that are required to retrieve\nand aggregate the related value.\n\nFor example, to find the price range of books offered in each store,\nyou could use the annotation::\n\n    >>> Store.objects.annotate(min_price=Min('books__price'), max_price=Max('books__price'))\n\nThis tells Django to retrieve the ``Store`` model, join (through the\nmany-to-many relationship) with the ``Book`` model, and aggregate on the\nprice field of the book model to produce a minimum and maximum value.\n\nThe same rules apply to the ``aggregate()`` clause. If you wanted to\nknow the lowest and highest price of any book that is available for sale\nin a store, you could use the aggregate::\n\n    >>> Store.objects.aggregate(min_price=Min('books__price'), max_price=Max('books__price'))\n\nJoin chains can be as deep as you require. For example, to extract the\nage of the youngest author of any book available for sale, you could\nissue the query::\n\n    >>> Store.objects.aggregate(youngest_age=Min('books__authors__age'))\n\nFollowing relationships backwards\n---------------------------------\n\nIn a way similar to :ref:`lookups-that-span-relationships`, aggregations and\nannotations on fields of models or models that are related to the one you are\nquerying can include traversing \"reverse\" relationships. The lowercase name\nof related models and double-underscores are used here too.\n\nFor example, we can ask for all publishers, annotated with their respective\ntotal book stock counters (note how we use ``'book'`` to specify the\n``Publisher`` -> ``Book`` reverse foreign key hop)::\n\n    >>> from django.db.models import Count, Min, Sum, Max, Avg\n    >>> Publisher.objects.annotate(Count('book'))\n\n(Every ``Publisher`` in the resulting ``QuerySet`` will have an extra attribute\ncalled ``book__count``.)\n\nWe can also ask for the oldest book of any of those managed by every publisher::\n\n    >>> Publisher.objects.aggregate(oldest_pubdate=Min('book__pubdate'))\n\n(The resulting dictionary will have a key called ``'oldest_pubdate'``. If no\nsuch alias were specified, it would be the rather long ``'book__pubdate__min'``.)\n\nThis doesn't apply just to foreign keys. It also works with many-to-many\nrelations. For example, we can ask for every author, annotated with the total\nnumber of pages considering all the books he/she has (co-)authored (note how we\nuse ``'book'`` to specify the ``Author`` -> ``Book`` reverse many-to-many hop)::\n\n    >>> Author.objects.annotate(total_pages=Sum('book__pages'))\n\n(Every ``Author`` in the resulting ``QuerySet`` will have an extra attribute\ncalled ``total_pages``. If no such alias were specified, it would be the rather\nlong ``book__pages__sum``.)\n\nOr ask for the average rating of all the books written by author(s) we have on\nfile::\n\n    >>> Author.objects.aggregate(average_rating=Avg('book__rating'))\n\n(The resulting dictionary will have a key called ``'average__rating'``. If no\nsuch alias were specified, it would be the rather long ``'book__rating__avg'``.)\n\nAggregations and other QuerySet clauses\n=======================================\n\n``filter()`` and ``exclude()``\n------------------------------\n\nAggregates can also participate in filters. Any ``filter()`` (or\n``exclude()``) applied to normal model fields will have the effect of\nconstraining the objects that are considered for aggregation.\n\nWhen used with an ``annotate()`` clause, a filter has the effect of\nconstraining the objects for which an annotation is calculated. For example,\nyou can generate an annotated list of all books that have a title starting\nwith \"Django\" using the query::\n\n    >>> Book.objects.filter(name__startswith=\"Django\").annotate(num_authors=Count('authors'))\n\nWhen used with an ``aggregate()`` clause, a filter has the effect of\nconstraining the objects over which the aggregate is calculated.\nFor example, you can generate the average price of all books with a\ntitle that starts with \"Django\" using the query::\n\n    >>> Book.objects.filter(name__startswith=\"Django\").aggregate(Avg('price'))\n\nFiltering on annotations\n~~~~~~~~~~~~~~~~~~~~~~~~\n\nAnnotated values can also be filtered. The alias for the annotation can be\nused in ``filter()`` and ``exclude()`` clauses in the same way as any other\nmodel field.\n\nFor example, to generate a list of books that have more than one author,\nyou can issue the query::\n\n    >>> Book.objects.annotate(num_authors=Count('authors')).filter(num_authors__gt=1)\n\nThis query generates an annotated result set, and then generates a filter\nbased upon that annotation.\n\nOrder of ``annotate()`` and ``filter()`` clauses\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nWhen developing a complex query that involves both ``annotate()`` and\n``filter()`` clauses, particular attention should be paid to the order\nin which the clauses are applied to the ``QuerySet``.\n\nWhen an ``annotate()`` clause is applied to a query, the annotation is\ncomputed over the state of the query up to the point where the annotation\nis requested. The practical implication of this is that ``filter()`` and\n``annotate()`` are not commutative operations -- that is, there is a\ndifference between the query::\n\n    >>> Publisher.objects.annotate(num_books=Count('book')).filter(book__rating__gt=3.0)\n\nand the query::\n\n    >>> Publisher.objects.filter(book__rating__gt=3.0).annotate(num_books=Count('book'))\n\nBoth queries will return a list of publishers that have at least one good\nbook (i.e., a book with a rating exceeding 3.0). However, the annotation in\nthe first query will provide the total number of all books published by the\npublisher; the second query will only include good books in the annotated\ncount. In the first query, the annotation precedes the filter, so the\nfilter has no effect on the annotation. In the second query, the filter\nprecedes the annotation, and as a result, the filter constrains the objects\nconsidered when calculating the annotation.\n\n``order_by()``\n--------------\n\nAnnotations can be used as a basis for ordering. When you\ndefine an ``order_by()`` clause, the aggregates you provide can reference\nany alias defined as part of an ``annotate()`` clause in the query.\n\nFor example, to order a ``QuerySet`` of books by the number of authors\nthat have contributed to the book, you could use the following query::\n\n    >>> Book.objects.annotate(num_authors=Count('authors')).order_by('num_authors')\n\n``values()``\n------------\n\nOrdinarily, annotations are generated on a per-object basis - an annotated\n``QuerySet`` will return one result for each object in the original\n``QuerySet``. However, when a ``values()`` clause is used to constrain the\ncolumns that are returned in the result set, the method for evaluating\nannotations is slightly different. Instead of returning an annotated result\nfor each result in the original ``QuerySet``, the original results are\ngrouped according to the unique combinations of the fields specified in the\n``values()`` clause. An annotation is then provided for each unique group;\nthe annotation is computed over all members of the group.\n\nFor example, consider an author query that attempts to find out the average\nrating of books written by each author:\n\n    >>> Author.objects.annotate(average_rating=Avg('book__rating'))\n\nThis will return one result for each author in the database, annotated with\ntheir average book rating.\n\nHowever, the result will be slightly different if you use a ``values()`` clause::\n\n    >>> Author.objects.values('name').annotate(average_rating=Avg('book__rating'))\n\nIn this example, the authors will be grouped by name, so you will only get\nan annotated result for each *unique* author name. This means if you have\ntwo authors with the same name, their results will be merged into a single\nresult in the output of the query; the average will be computed as the\naverage over the books written by both authors.\n\nOrder of ``annotate()`` and ``values()`` clauses\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nAs with the ``filter()`` clause, the order in which ``annotate()`` and\n``values()`` clauses are applied to a query is significant. If the\n``values()`` clause precedes the ``annotate()``, the annotation will be\ncomputed using the grouping described by the ``values()`` clause.\n\nHowever, if the ``annotate()`` clause precedes the ``values()`` clause,\nthe annotations will be generated over the entire query set. In this case,\nthe ``values()`` clause only constrains the fields that are generated on\noutput.\n\nFor example, if we reverse the order of the ``values()`` and ``annotate()``\nclause from our previous example::\n\n    >>> Author.objects.annotate(average_rating=Avg('book__rating')).values('name', 'average_rating')\n\nThis will now yield one unique result for each author; however, only\nthe author's name and the ``average_rating`` annotation will be returned\nin the output data.\n\nYou should also note that ``average_rating`` has been explicitly included\nin the list of values to be returned. This is required because of the\nordering of the ``values()`` and ``annotate()`` clause.\n\nIf the ``values()`` clause precedes the ``annotate()`` clause, any annotations\nwill be automatically added to the result set. However, if the ``values()``\nclause is applied after the ``annotate()`` clause, you need to explicitly\ninclude the aggregate column.\n\nInteraction with default ordering or ``order_by()``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nFields that are mentioned in the ``order_by()`` part of a queryset (or which\nare used in the default ordering on a model) are used when selecting the\noutput data, even if they are not otherwise specified in the ``values()``\ncall. These extra fields are used to group \"like\" results together and they\ncan make otherwise identical result rows appear to be separate. This shows up,\nparticularly, when counting things.\n\nBy way of example, suppose you have a model like this::\n\n    class Item(models.Model):\n        name = models.CharField(max_length=10)\n        data = models.IntegerField()\n\n        class Meta:\n            ordering = [\"name\"]\n\nThe important part here is the default ordering on the ``name`` field. If you\nwant to count how many times each distinct ``data`` value appears, you might\ntry this::\n\n    # Warning: not quite correct!\n    Item.objects.values(\"data\").annotate(Count(\"id\"))\n\n...which will group the ``Item`` objects by their common ``data`` values and\nthen count the number of ``id`` values in each group. Except that it won't\nquite work. The default ordering by ``name`` will also play a part in the\ngrouping, so this query will group by distinct ``(data, name)`` pairs, which\nisn't what you want. Instead, you should construct this queryset::\n\n    Item.objects.values(\"data\").annotate(Count(\"id\")).order_by()\n\n...clearing any ordering in the query. You could also order by, say, ``data``\nwithout any harmful effects, since that is already playing a role in the\nquery.\n\nThis behavior is the same as that noted in the queryset documentation for\n:meth:`~django.db.models.query.QuerySet.distinct` and the general rule is the\nsame: normally you won't want extra columns playing a part in the result, so\nclear out the ordering, or at least make sure it's restricted only to those\nfields you also select in a ``values()`` call.\n\n.. note::\n    You might reasonably ask why Django doesn't remove the extraneous columns\n    for you. The main reason is consistency with ``distinct()`` and other\n    places: Django **never** removes ordering constraints that you have\n    specified (and we can't change those other methods' behavior, as that\n    would violate our :doc:`/misc/api-stability` policy).\n\nAggregating annotations\n-----------------------\n\nYou can also generate an aggregate on the result of an annotation. When you\ndefine an ``aggregate()`` clause, the aggregates you provide can reference\nany alias defined as part of an ``annotate()`` clause in the query.\n\nFor example, if you wanted to calculate the average number of authors per\nbook you first annotate the set of books with the author count, then\naggregate that author count, referencing the annotation field::\n\n    >>> Book.objects.annotate(num_authors=Count('authors')).aggregate(Avg('num_authors'))\n    {'num_authors__avg': 1.66}\n"
  },
  {
    "path": "Django-1.5.1/docs/topics/db/examples/index.txt",
    "content": "========================================\nExamples of model relationship API usage\n========================================\n\n.. toctree::\n   :maxdepth: 1\n\n   many_to_many\n   many_to_one\n   one_to_one\n"
  },
  {
    "path": "Django-1.5.1/docs/topics/db/examples/many_to_many.txt",
    "content": "##########################\nMany-to-many relationships\n##########################\n\n.. highlight:: pycon\n\nTo define a many-to-many relationship, use :ref:`ref-manytomany`.\n\nIn this example, an ``Article`` can be published in multiple ``Publication``\nobjects, and a ``Publication`` has multiple ``Article`` objects:\n\n.. code-block:: python\n\n    from django.db import models\n\n    class Publication(models.Model):\n        title = models.CharField(max_length=30)\n\n        def __unicode__(self):\n            return self.title\n\n        class Meta:\n            ordering = ('title',)\n\n    class Article(models.Model):\n        headline = models.CharField(max_length=100)\n        publications = models.ManyToManyField(Publication)\n\n        def __unicode__(self):\n            return self.headline\n\n        class Meta:\n            ordering = ('headline',)\n\nWhat follows are examples of operations that can be performed using the Python\nAPI facilities.\n\nCreate a couple of ``Publications``::\n\n    >>> p1 = Publication(title='The Python Journal')\n    >>> p1.save()\n    >>> p2 = Publication(title='Science News')\n    >>> p2.save()\n    >>> p3 = Publication(title='Science Weekly')\n    >>> p3.save()\n\nCreate an ``Article``::\n\n    >>> a1 = Article(headline='Django lets you build Web apps easily')\n\nYou can't associate it with a ``Publication`` until it's been saved::\n\n    >>> a1.publications.add(p1)\n    Traceback (most recent call last):\n    ...\n    ValueError: 'Article' instance needs to have a primary key value before a many-to-many relationship can be used.\n\nSave it!\n::\n\n    >>> a1.save()\n\nAssociate the ``Article`` with a ``Publication``::\n\n    >>> a1.publications.add(p1)\n\nCreate another ``Article``, and set it to appear in both ``Publications``::\n\n    >>> a2 = Article(headline='NASA uses Python')\n    >>> a2.save()\n    >>> a2.publications.add(p1, p2)\n    >>> a2.publications.add(p3)\n\nAdding a second time is OK::\n\n    >>> a2.publications.add(p3)\n\nAdding an object of the wrong type raises :exc:`~exceptions.TypeError`::\n\n    >>> a2.publications.add(a1)\n    Traceback (most recent call last):\n    ...\n    TypeError: 'Publication' instance expected\n\nCreate and add a ``Publication`` to an ``Article`` in one step using\n:meth:`~django.db.models.fields.related.RelatedManager.create`::\n\n    >>> new_publication = a2.publications.create(title='Highlights for Children')\n\n``Article`` objects have access to their related ``Publication`` objects::\n\n    >>> a1.publications.all()\n    [<Publication: The Python Journal>]\n    >>> a2.publications.all()\n    [<Publication: Highlights for Children>, <Publication: Science News>, <Publication: Science Weekly>, <Publication: The Python Journal>]\n\n``Publication`` objects have access to their related ``Article`` objects::\n\n    >>> p2.article_set.all()\n    [<Article: NASA uses Python>]\n    >>> p1.article_set.all()\n    [<Article: Django lets you build Web apps easily>, <Article: NASA uses Python>]\n    >>> Publication.objects.get(id=4).article_set.all()\n    [<Article: NASA uses Python>]\n\nMany-to-many relationships can be queried using :ref:`lookups across\nrelationships <lookups-that-span-relationships>`::\n\n    >>> Article.objects.filter(publications__id__exact=1)\n    [<Article: Django lets you build Web apps easily>, <Article: NASA uses Python>]\n    >>> Article.objects.filter(publications__pk=1)\n    [<Article: Django lets you build Web apps easily>, <Article: NASA uses Python>]\n    >>> Article.objects.filter(publications=1)\n    [<Article: Django lets you build Web apps easily>, <Article: NASA uses Python>]\n    >>> Article.objects.filter(publications=p1)\n    [<Article: Django lets you build Web apps easily>, <Article: NASA uses Python>]\n\n    >>> Article.objects.filter(publications__title__startswith=\"Science\")\n    [<Article: NASA uses Python>, <Article: NASA uses Python>]\n\n    >>> Article.objects.filter(publications__title__startswith=\"Science\").distinct()\n    [<Article: NASA uses Python>]\n\nThe :meth:`~django.db.models.query.QuerySet.count` function respects\n:meth:`~django.db.models.query.QuerySet.distinct` as well::\n\n    >>> Article.objects.filter(publications__title__startswith=\"Science\").count()\n    2\n\n    >>> Article.objects.filter(publications__title__startswith=\"Science\").distinct().count()\n    1\n\n    >>> Article.objects.filter(publications__in=[1,2]).distinct()\n    [<Article: Django lets you build Web apps easily>, <Article: NASA uses Python>]\n    >>> Article.objects.filter(publications__in=[p1,p2]).distinct()\n    [<Article: Django lets you build Web apps easily>, <Article: NASA uses Python>]\n\nReverse m2m queries are supported (i.e., starting at the table that doesn't have\na :class:`~django.db.models.ManyToManyField`)::\n\n    >>> Publication.objects.filter(id__exact=1)\n    [<Publication: The Python Journal>]\n    >>> Publication.objects.filter(pk=1)\n    [<Publication: The Python Journal>]\n\n    >>> Publication.objects.filter(article__headline__startswith=\"NASA\")\n    [<Publication: Highlights for Children>, <Publication: Science News>, <Publication: Science Weekly>, <Publication: The Python Journal>]\n\n    >>> Publication.objects.filter(article__id__exact=1)\n    [<Publication: The Python Journal>]\n    >>> Publication.objects.filter(article__pk=1)\n    [<Publication: The Python Journal>]\n    >>> Publication.objects.filter(article=1)\n    [<Publication: The Python Journal>]\n    >>> Publication.objects.filter(article=a1)\n    [<Publication: The Python Journal>]\n\n    >>> Publication.objects.filter(article__in=[1,2]).distinct()\n    [<Publication: Highlights for Children>, <Publication: Science News>, <Publication: Science Weekly>, <Publication: The Python Journal>]\n    >>> Publication.objects.filter(article__in=[a1,a2]).distinct()\n    [<Publication: Highlights for Children>, <Publication: Science News>, <Publication: Science Weekly>, <Publication: The Python Journal>]\n\nExcluding a related item works as you would expect, too (although the SQL\ninvolved is a little complex)::\n\n    >>> Article.objects.exclude(publications=p2)\n    [<Article: Django lets you build Web apps easily>]\n\nIf we delete a ``Publication``, its ``Articles`` won't be able to access it::\n\n    >>> p1.delete()\n    >>> Publication.objects.all()\n    [<Publication: Highlights for Children>, <Publication: Science News>, <Publication: Science Weekly>]\n    >>> a1 = Article.objects.get(pk=1)\n    >>> a1.publications.all()\n    []\n\nIf we delete an ``Article``, its ``Publications`` won't be able to access it::\n\n    >>> a2.delete()\n    >>> Article.objects.all()\n    [<Article: Django lets you build Web apps easily>]\n    >>> p2.article_set.all()\n    []\n\nAdding via the 'other' end of an m2m::\n\n    >>> a4 = Article(headline='NASA finds intelligent life on Earth')\n    >>> a4.save()\n    >>> p2.article_set.add(a4)\n    >>> p2.article_set.all()\n    [<Article: NASA finds intelligent life on Earth>]\n    >>> a4.publications.all()\n    [<Publication: Science News>]\n\nAdding via the other end using keywords::\n\n    >>> new_article = p2.article_set.create(headline='Oxygen-free diet works wonders')\n    >>> p2.article_set.all()\n    [<Article: NASA finds intelligent life on Earth>, <Article: Oxygen-free diet works wonders>]\n    >>> a5 = p2.article_set.all()[1]\n    >>> a5.publications.all()\n    [<Publication: Science News>]\n\nRemoving ``Publication`` from an ``Article``::\n\n    >>> a4.publications.remove(p2)\n    >>> p2.article_set.all()\n    [<Article: Oxygen-free diet works wonders>]\n    >>> a4.publications.all()\n    []\n\nAnd from the other end::\n\n    >>> p2.article_set.remove(a5)\n    >>> p2.article_set.all()\n    []\n    >>> a5.publications.all()\n    []\n\nRelation sets can be assigned. Assignment clears any existing set members::\n\n    >>> a4.publications.all()\n    [<Publication: Science News>]\n    >>> a4.publications = [p3]\n    >>> a4.publications.all()\n    [<Publication: Science Weekly>]\n\nRelation sets can be cleared::\n\n    >>> p2.article_set.clear()\n    >>> p2.article_set.all()\n    []\n\nAnd you can clear from the other end::\n\n    >>> p2.article_set.add(a4, a5)\n    >>> p2.article_set.all()\n    [<Article: NASA finds intelligent life on Earth>, <Article: Oxygen-free diet works wonders>]\n    >>> a4.publications.all()\n    [<Publication: Science News>, <Publication: Science Weekly>]\n    >>> a4.publications.clear()\n    >>> a4.publications.all()\n    []\n    >>> p2.article_set.all()\n    [<Article: Oxygen-free diet works wonders>]\n\nRecreate the ``Article`` and ``Publication`` we have deleted::\n\n    >>> p1 = Publication(title='The Python Journal')\n    >>> p1.save()\n    >>> a2 = Article(headline='NASA uses Python')\n    >>> a2.save()\n    >>> a2.publications.add(p1, p2, p3)\n\nBulk delete some ``Publications`` - references to deleted publications should\ngo::\n\n    >>> Publication.objects.filter(title__startswith='Science').delete()\n    >>> Publication.objects.all()\n    [<Publication: Highlights for Children>, <Publication: The Python Journal>]\n    >>> Article.objects.all()\n    [<Article: Django lets you build Web apps easily>, <Article: NASA finds intelligent life on Earth>, <Article: NASA uses Python>, <Article: Oxygen-free diet works wonders>]\n    >>> a2.publications.all()\n    [<Publication: The Python Journal>]\n\nBulk delete some articles - references to deleted objects should go::\n\n    >>> q = Article.objects.filter(headline__startswith='Django')\n    >>> print(q)\n    [<Article: Django lets you build Web apps easily>]\n    >>> q.delete()\n\nAfter the :meth:`~django.db.models.query.QuerySet.delete`, the\n:class:`~django.db.models.query.QuerySet` cache needs to be cleared, and the\nreferenced objects should be gone::\n\n    >>> print(q)\n    []\n    >>> p1.article_set.all()\n    [<Article: NASA uses Python>]\n\nAn alternate to calling\n:meth:`~django.db.models.fields.related.RelatedManager.clear` is to assign the\nempty set::\n\n    >>> p1.article_set = []\n    >>> p1.article_set.all()\n    []\n\n    >>> a2.publications = [p1, new_publication]\n    >>> a2.publications.all()\n    [<Publication: Highlights for Children>, <Publication: The Python Journal>]\n    >>> a2.publications = []\n    >>> a2.publications.all()\n    []\n"
  },
  {
    "path": "Django-1.5.1/docs/topics/db/examples/many_to_one.txt",
    "content": "#########################\nMany-to-one relationships\n#########################\n\n.. highlight:: pycon\n\nTo define a many-to-one relationship, use :class:`~django.db.models.ForeignKey`.\n\n.. code-block:: python\n\n    from django.db import models\n\n    class Reporter(models.Model):\n        first_name = models.CharField(max_length=30)\n        last_name = models.CharField(max_length=30)\n        email = models.EmailField()\n\n        def __unicode__(self):\n            return u\"%s %s\" % (self.first_name, self.last_name)\n\n    class Article(models.Model):\n        headline = models.CharField(max_length=100)\n        pub_date = models.DateField()\n        reporter = models.ForeignKey(Reporter)\n\n        def __unicode__(self):\n            return self.headline\n\n        class Meta:\n            ordering = ('headline',)\n\nWhat follows are examples of operations that can be performed using the Python\nAPI facilities.\n\nCreate a few Reporters::\n\n    >>> r = Reporter(first_name='John', last_name='Smith', email='john@example.com')\n    >>> r.save()\n\n    >>> r2 = Reporter(first_name='Paul', last_name='Jones', email='paul@example.com')\n    >>> r2.save()\n\nCreate an Article::\n\n    >>> from datetime import date\n    >>> a = Article(id=None, headline=\"This is a test\", pub_date=date(2005, 7, 27), reporter=r)\n    >>> a.save()\n\n    >>> a.reporter.id\n    1\n\n    >>> a.reporter\n    <Reporter: John Smith>\n\nArticle objects have access to their related Reporter objects::\n\n    >>> r = a.reporter\n\nThese are strings instead of unicode strings because that's what was used in\nthe creation of this reporter (and we haven't refreshed the data from the\ndatabase, which always returns unicode strings)::\n\n    >>> r.first_name, r.last_name\n    ('John', 'Smith')\n\nCreate an Article via the Reporter object::\n\n    >>> new_article = r.article_set.create(headline=\"John's second story\", pub_date=date(2005, 7, 29))\n    >>> new_article\n    <Article: John's second story>\n    >>> new_article.reporter\n    <Reporter: John Smith>\n    >>> new_article.reporter.id\n    1\n\nCreate a new article, and add it to the article set::\n\n    >>> new_article2 = Article(headline=\"Paul's story\", pub_date=date(2006, 1, 17))\n    >>> r.article_set.add(new_article2)\n    >>> new_article2.reporter\n    <Reporter: John Smith>\n    >>> new_article2.reporter.id\n    1\n    >>> r.article_set.all()\n    [<Article: John's second story>, <Article: Paul's story>, <Article: This is a test>]\n\nAdd the same article to a different article set - check that it moves::\n\n    >>> r2.article_set.add(new_article2)\n    >>> new_article2.reporter.id\n    2\n    >>> new_article2.reporter\n    <Reporter: Paul Jones>\n\nAdding an object of the wrong type raises TypeError::\n\n    >>> r.article_set.add(r2)\n    Traceback (most recent call last):\n    ...\n    TypeError: 'Article' instance expected\n\n    >>> r.article_set.all()\n    [<Article: John's second story>, <Article: This is a test>]\n    >>> r2.article_set.all()\n    [<Article: Paul's story>]\n\n    >>> r.article_set.count()\n    2\n\n    >>> r2.article_set.count()\n    1\n\nNote that in the last example the article has moved from John to Paul.\n\nRelated managers support field lookups as well.\nThe API automatically follows relationships as far as you need.\nUse double underscores to separate relationships.\nThis works as many levels deep as you want. There's no limit. For example::\n\n    >>> r.article_set.filter(headline__startswith='This')\n    [<Article: This is a test>]\n\n    # Find all Articles for any Reporter whose first name is \"John\".\n    >>> Article.objects.filter(reporter__first_name__exact='John')\n    [<Article: John's second story>, <Article: This is a test>]\n\nExact match is implied here::\n\n    >>> Article.objects.filter(reporter__first_name='John')\n    [<Article: John's second story>, <Article: This is a test>]\n\nQuery twice over the related field. This translates to an AND condition in the\nWHERE clause::\n\n    >>> Article.objects.filter(reporter__first_name__exact='John', reporter__last_name__exact='Smith')\n    [<Article: John's second story>, <Article: This is a test>]\n\nFor the related lookup you can supply a primary key value or pass the related\nobject explicitly::\n\n    >>> Article.objects.filter(reporter__pk=1)\n    [<Article: John's second story>, <Article: This is a test>]\n    >>> Article.objects.filter(reporter=1)\n    [<Article: John's second story>, <Article: This is a test>]\n    >>> Article.objects.filter(reporter=r)\n    [<Article: John's second story>, <Article: This is a test>]\n\n    >>> Article.objects.filter(reporter__in=[1,2]).distinct()\n    [<Article: John's second story>, <Article: Paul's story>, <Article: This is a test>]\n    >>> Article.objects.filter(reporter__in=[r,r2]).distinct()\n    [<Article: John's second story>, <Article: Paul's story>, <Article: This is a test>]\n\nYou can also use a queryset instead of a literal list of instances::\n\n    >>> Article.objects.filter(reporter__in=Reporter.objects.filter(first_name='John')).distinct()\n    [<Article: John's second story>, <Article: This is a test>]\n\nQuerying in the opposite direction::\n\n    >>> Reporter.objects.filter(article__pk=1)\n    [<Reporter: John Smith>]\n    >>> Reporter.objects.filter(article=1)\n    [<Reporter: John Smith>]\n    >>> Reporter.objects.filter(article=a)\n    [<Reporter: John Smith>]\n\n    >>> Reporter.objects.filter(article__headline__startswith='This')\n    [<Reporter: John Smith>, <Reporter: John Smith>, <Reporter: John Smith>]\n    >>> Reporter.objects.filter(article__headline__startswith='This').distinct()\n    [<Reporter: John Smith>]\n\nCounting in the opposite direction works in conjunction with distinct()::\n\n    >>> Reporter.objects.filter(article__headline__startswith='This').count()\n    3\n    >>> Reporter.objects.filter(article__headline__startswith='This').distinct().count()\n    1\n\nQueries can go round in circles::\n\n    >>> Reporter.objects.filter(article__reporter__first_name__startswith='John')\n    [<Reporter: John Smith>, <Reporter: John Smith>, <Reporter: John Smith>, <Reporter: John Smith>]\n    >>> Reporter.objects.filter(article__reporter__first_name__startswith='John').distinct()\n    [<Reporter: John Smith>]\n    >>> Reporter.objects.filter(article__reporter__exact=r).distinct()\n    [<Reporter: John Smith>]\n\nIf you delete a reporter, his articles will be deleted (assuming that the\nForeignKey was defined with :attr:`django.db.models.ForeignKey.on_delete` set to\n``CASCADE``, which is the default)::\n\n    >>> Article.objects.all()\n    [<Article: John's second story>, <Article: Paul's story>, <Article: This is a test>]\n    >>> Reporter.objects.order_by('first_name')\n    [<Reporter: John Smith>, <Reporter: Paul Jones>]\n    >>> r2.delete()\n    >>> Article.objects.all()\n    [<Article: John's second story>, <Article: This is a test>]\n    >>> Reporter.objects.order_by('first_name')\n    [<Reporter: John Smith>]\n\nYou can delete using a JOIN in the query::\n\n    >>> Reporter.objects.filter(article__headline__startswith='This').delete()\n    >>> Reporter.objects.all()\n    []\n    >>> Article.objects.all()\n    []\n"
  },
  {
    "path": "Django-1.5.1/docs/topics/db/examples/one_to_one.txt",
    "content": "########################\nOne-to-one relationships\n########################\n\n.. highlight:: pycon\n\nTo define a one-to-one relationship, use :ref:`ref-onetoone`.\n\nIn this example, a ``Place`` optionally can be a ``Restaurant``:\n\n.. code-block:: python\n\n    from django.db import models, transaction, IntegrityError\n\n    class Place(models.Model):\n        name = models.CharField(max_length=50)\n        address = models.CharField(max_length=80)\n\n        def __unicode__(self):\n            return u\"%s the place\" % self.name\n\n    class Restaurant(models.Model):\n        place = models.OneToOneField(Place, primary_key=True)\n        serves_hot_dogs = models.BooleanField()\n        serves_pizza = models.BooleanField()\n\n        def __unicode__(self):\n            return u\"%s the restaurant\" % self.place.name\n\n    class Waiter(models.Model):\n        restaurant = models.ForeignKey(Restaurant)\n        name = models.CharField(max_length=50)\n\n        def __unicode__(self):\n            return u\"%s the waiter at %s\" % (self.name, self.restaurant)\n\nWhat follows are examples of operations that can be performed using the Python\nAPI facilities.\n\nCreate a couple of Places::\n\n    >>> p1 = Place(name='Demon Dogs', address='944 W. Fullerton')\n    >>> p1.save()\n    >>> p2 = Place(name='Ace Hardware', address='1013 N. Ashland')\n    >>> p2.save()\n\nCreate a Restaurant. Pass the ID of the \"parent\" object as this object's ID::\n\n    >>> r = Restaurant(place=p1, serves_hot_dogs=True, serves_pizza=False)\n    >>> r.save()\n\nA Restaurant can access its place::\n\n    >>> r.place\n    <Place: Demon Dogs the place>\n\nA Place can access its restaurant, if available::\n\n    >>> p1.restaurant\n    <Restaurant: Demon Dogs the restaurant>\n\np2 doesn't have an associated restaurant::\n\n    >>> p2.restaurant\n    Traceback (most recent call last):\n        ...\n    DoesNotExist: Restaurant matching query does not exist.\n\nSet the place using assignment notation. Because place is the primary key on\nRestaurant, the save will create a new restaurant::\n\n    >>> r.place = p2\n    >>> r.save()\n    >>> p2.restaurant\n    <Restaurant: Ace Hardware the restaurant>\n    >>> r.place\n    <Place: Ace Hardware the place>\n\nSet the place back again, using assignment in the reverse direction::\n\n    >>> p1.restaurant = r\n    >>> p1.restaurant\n    <Restaurant: Demon Dogs the restaurant>\n\nRestaurant.objects.all() just returns the Restaurants, not the Places.  Note\nthat there are two restaurants - Ace Hardware the Restaurant was created in the\ncall to r.place = p2::\n\n    >>> Restaurant.objects.all()\n    [<Restaurant: Demon Dogs the restaurant>, <Restaurant: Ace Hardware the restaurant>]\n\nPlace.objects.all() returns all Places, regardless of whether they have\nRestaurants::\n\n    >>> Place.objects.order_by('name')\n    [<Place: Ace Hardware the place>, <Place: Demon Dogs the place>]\n\nYou can query the models using :ref:`lookups across relationships <lookups-that-span-relationships>`::\n\n    >>> Restaurant.objects.get(place=p1)\n    <Restaurant: Demon Dogs the restaurant>\n    >>> Restaurant.objects.get(place__pk=1)\n    <Restaurant: Demon Dogs the restaurant>\n    >>> Restaurant.objects.filter(place__name__startswith=\"Demon\")\n    [<Restaurant: Demon Dogs the restaurant>]\n    >>> Restaurant.objects.exclude(place__address__contains=\"Ashland\")\n    [<Restaurant: Demon Dogs the restaurant>]\n\nThis of course works in reverse::\n\n    >>> Place.objects.get(pk=1)\n    <Place: Demon Dogs the place>\n    >>> Place.objects.get(restaurant__place__exact=p1)\n    <Place: Demon Dogs the place>\n    >>> Place.objects.get(restaurant=r)\n    <Place: Demon Dogs the place>\n    >>> Place.objects.get(restaurant__place__name__startswith=\"Demon\")\n    <Place: Demon Dogs the place>\n\nAdd a Waiter to the Restaurant::\n\n    >>> w = r.waiter_set.create(name='Joe')\n    >>> w.save()\n    >>> w\n    <Waiter: Joe the waiter at Demon Dogs the restaurant>\n\nQuery the waiters::\n\n    >>> Waiter.objects.filter(restaurant__place=p1)\n    [<Waiter: Joe the waiter at Demon Dogs the restaurant>]\n    >>> Waiter.objects.filter(restaurant__place__name__startswith=\"Demon\")\n    [<Waiter: Joe the waiter at Demon Dogs the restaurant>]\n"
  },
  {
    "path": "Django-1.5.1/docs/topics/db/index.txt",
    "content": "Models and databases\n====================\n\n.. module:: django.db\n\nA model is the single, definitive source of data about your data. It contains\nthe essential fields and behaviors of the data you're storing. Generally, each\nmodel maps to a single database table.\n\n.. toctree::\n   :maxdepth: 1\n\n   models\n   queries\n   aggregation\n   managers\n   sql\n   transactions\n   multi-db\n   tablespaces\n   optimization\n   examples/index\n"
  },
  {
    "path": "Django-1.5.1/docs/topics/db/managers.txt",
    "content": "========\nManagers\n========\n\n.. currentmodule:: django.db.models\n\n.. class:: Manager()\n\nA ``Manager`` is the interface through which database query operations are\nprovided to Django models. At least one ``Manager`` exists for every model in\na Django application.\n\nThe way ``Manager`` classes work is documented in :doc:`/topics/db/queries`;\nthis document specifically touches on model options that customize ``Manager``\nbehavior.\n\n.. _manager-names:\n\nManager names\n=============\n\nBy default, Django adds a ``Manager`` with the name ``objects`` to every Django\nmodel class. However, if you want to use ``objects`` as a field name, or if you\nwant to use a name other than ``objects`` for the ``Manager``, you can rename\nit on a per-model basis. To rename the ``Manager`` for a given class, define a\nclass attribute of type ``models.Manager()`` on that model. For example::\n\n    from django.db import models\n\n    class Person(models.Model):\n        #...\n        people = models.Manager()\n\nUsing this example model, ``Person.objects`` will generate an\n``AttributeError`` exception, but ``Person.people.all()`` will provide a list\nof all ``Person`` objects.\n\n.. _custom-managers:\n\nCustom Managers\n===============\n\nYou can use a custom ``Manager`` in a particular model by extending the base\n``Manager`` class and instantiating your custom ``Manager`` in your model.\n\nThere are two reasons you might want to customize a ``Manager``: to add extra\n``Manager`` methods, and/or to modify the initial ``QuerySet`` the ``Manager``\nreturns.\n\nAdding extra Manager methods\n----------------------------\n\nAdding extra ``Manager`` methods is the preferred way to add \"table-level\"\nfunctionality to your models. (For \"row-level\" functionality -- i.e., functions\nthat act on a single instance of a model object -- use :ref:`Model methods\n<model-methods>`, not custom ``Manager`` methods.)\n\nA custom ``Manager`` method can return anything you want. It doesn't have to\nreturn a ``QuerySet``.\n\nFor example, this custom ``Manager`` offers a method ``with_counts()``, which\nreturns a list of all ``OpinionPoll`` objects, each with an extra\n``num_responses`` attribute that is the result of an aggregate query::\n\n    class PollManager(models.Manager):\n        def with_counts(self):\n            from django.db import connection\n            cursor = connection.cursor()\n            cursor.execute(\"\"\"\n                SELECT p.id, p.question, p.poll_date, COUNT(*)\n                FROM polls_opinionpoll p, polls_response r\n                WHERE p.id = r.poll_id\n                GROUP BY 1, 2, 3\n                ORDER BY 3 DESC\"\"\")\n            result_list = []\n            for row in cursor.fetchall():\n                p = self.model(id=row[0], question=row[1], poll_date=row[2])\n                p.num_responses = row[3]\n                result_list.append(p)\n            return result_list\n\n    class OpinionPoll(models.Model):\n        question = models.CharField(max_length=200)\n        poll_date = models.DateField()\n        objects = PollManager()\n\n    class Response(models.Model):\n        poll = models.ForeignKey(Poll)\n        person_name = models.CharField(max_length=50)\n        response = models.TextField()\n\nWith this example, you'd use ``OpinionPoll.objects.with_counts()`` to return\nthat list of ``OpinionPoll`` objects with ``num_responses`` attributes.\n\nAnother thing to note about this example is that ``Manager`` methods can\naccess ``self.model`` to get the model class to which they're attached.\n\nModifying initial Manager QuerySets\n-----------------------------------\n\nA ``Manager``'s base ``QuerySet`` returns all objects in the system. For\nexample, using this model::\n\n    class Book(models.Model):\n        title = models.CharField(max_length=100)\n        author = models.CharField(max_length=50)\n\n...the statement ``Book.objects.all()`` will return all books in the database.\n\nYou can override a ``Manager``\\'s base ``QuerySet`` by overriding the\n``Manager.get_query_set()`` method. ``get_query_set()`` should return a\n``QuerySet`` with the properties you require.\n\nFor example, the following model has *two* ``Manager``\\s -- one that returns\nall objects, and one that returns only the books by Roald Dahl::\n\n    # First, define the Manager subclass.\n    class DahlBookManager(models.Manager):\n        def get_query_set(self):\n            return super(DahlBookManager, self).get_query_set().filter(author='Roald Dahl')\n\n    # Then hook it into the Book model explicitly.\n    class Book(models.Model):\n        title = models.CharField(max_length=100)\n        author = models.CharField(max_length=50)\n\n        objects = models.Manager() # The default manager.\n        dahl_objects = DahlBookManager() # The Dahl-specific manager.\n\nWith this sample model, ``Book.objects.all()`` will return all books in the\ndatabase, but ``Book.dahl_objects.all()`` will only return the ones written by\nRoald Dahl.\n\nOf course, because ``get_query_set()`` returns a ``QuerySet`` object, you can\nuse ``filter()``, ``exclude()`` and all the other ``QuerySet`` methods on it.\nSo these statements are all legal::\n\n    Book.dahl_objects.all()\n    Book.dahl_objects.filter(title='Matilda')\n    Book.dahl_objects.count()\n\nThis example also pointed out another interesting technique: using multiple\nmanagers on the same model. You can attach as many ``Manager()`` instances to\na model as you'd like. This is an easy way to define common \"filters\" for your\nmodels.\n\nFor example::\n\n    class MaleManager(models.Manager):\n        def get_query_set(self):\n            return super(MaleManager, self).get_query_set().filter(sex='M')\n\n    class FemaleManager(models.Manager):\n        def get_query_set(self):\n            return super(FemaleManager, self).get_query_set().filter(sex='F')\n\n    class Person(models.Model):\n        first_name = models.CharField(max_length=50)\n        last_name = models.CharField(max_length=50)\n        sex = models.CharField(max_length=1, choices=(('M', 'Male'), ('F', 'Female')))\n        people = models.Manager()\n        men = MaleManager()\n        women = FemaleManager()\n\nThis example allows you to request ``Person.men.all()``, ``Person.women.all()``,\nand ``Person.people.all()``, yielding predictable results.\n\nIf you use custom ``Manager`` objects, take note that the first ``Manager``\nDjango encounters (in the order in which they're defined in the model) has a\nspecial status. Django interprets the first ``Manager`` defined in a class as\nthe \"default\" ``Manager``, and several parts of Django\n(including :djadmin:`dumpdata`) will use that ``Manager``\nexclusively for that model. As a result, it's a good idea to be careful in\nyour choice of default manager in order to avoid a situation where overriding\n``get_query_set()`` results in an inability to retrieve objects you'd like to\nwork with.\n\n.. _managers-for-related-objects:\n\nUsing managers for related object access\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nBy default, Django uses an instance of a \"plain\" manager class when accessing\nrelated objects (i.e. ``choice.poll``), not the default manager on the related\nobject. This is because Django needs to be able to retrieve the related\nobject, even if it would otherwise be filtered out (and hence be inaccessible)\nby the default manager.\n\nIf the normal plain manager class (:class:`django.db.models.Manager`) is not\nappropriate for your circumstances, you can force Django to use the same class\nas the default manager for your model by setting the ``use_for_related_fields``\nattribute on the manager class. This is documented fully below_.\n\n.. _below: manager-types_\n\n.. _custom-managers-and-inheritance:\n\nCustom managers and model inheritance\n-------------------------------------\n\nClass inheritance and model managers aren't quite a perfect match for each\nother. Managers are often specific to the classes they are defined on and\ninheriting them in subclasses isn't necessarily a good idea. Also, because the\nfirst manager declared is the *default manager*, it is important to allow that\nto be controlled. So here's how Django handles custom managers and\n:ref:`model inheritance <model-inheritance>`:\n\n1. Managers defined on non-abstract base classes are *not* inherited by\n   child classes. If you want to reuse a manager from a non-abstract base,\n   redeclare it explicitly on the child class. These sorts of managers are\n   likely to be fairly specific to the class they are defined on, so\n   inheriting them can often lead to unexpected results (particularly as\n   far as the default manager goes). Therefore, they aren't passed onto\n   child classes.\n\n2. Managers from abstract base classes are always inherited by the child\n   class, using Python's normal name resolution order (names on the child\n   class override all others; then come names on the first parent class,\n   and so on). Abstract base classes are designed to capture information\n   and behavior that is common to their child classes. Defining common\n   managers is an appropriate part of this common information.\n\n3. The default manager on a class is either the first manager declared on\n   the class, if that exists, or the default manager of the first abstract\n   base class in the parent hierarchy, if that exists. If no default\n   manager is explicitly declared, Django's normal default manager is\n   used.\n\nThese rules provide the necessary flexibility if you want to install a\ncollection of custom managers on a group of models, via an abstract base\nclass, but still customize the default manager. For example, suppose you have\nthis base class::\n\n    class AbstractBase(models.Model):\n        ...\n        objects = CustomManager()\n\n        class Meta:\n            abstract = True\n\nIf you use this directly in a subclass, ``objects`` will be the default\nmanager if you declare no managers in the base class::\n\n    class ChildA(AbstractBase):\n        ...\n        # This class has CustomManager as the default manager.\n\nIf you want to inherit from ``AbstractBase``, but provide a different default\nmanager, you can provide the default manager on the child class::\n\n    class ChildB(AbstractBase):\n        ...\n        # An explicit default manager.\n        default_manager = OtherManager()\n\nHere, ``default_manager`` is the default. The ``objects`` manager is\nstill available, since it's inherited. It just isn't used as the default.\n\nFinally for this example, suppose you want to add extra managers to the child\nclass, but still use the default from ``AbstractBase``. You can't add the new\nmanager directly in the child class, as that would override the default and you would\nhave to also explicitly include all the managers from the abstract base class.\nThe solution is to put the extra managers in another base class and introduce\nit into the inheritance hierarchy *after* the defaults::\n\n    class ExtraManager(models.Model):\n        extra_manager = OtherManager()\n\n        class Meta:\n            abstract = True\n\n    class ChildC(AbstractBase, ExtraManager):\n        ...\n        # Default manager is CustomManager, but OtherManager is\n        # also available via the \"extra_manager\" attribute.\n\nNote that while you can *define* a custom manager on the abstract model, you\ncan't *invoke* any methods using the abstract model. That is::\n\n    ClassA.objects.do_something()\n\nis legal, but::\n\n    AbstractBase.objects.do_something()\n\nwill raise an exception. This is because managers are intended to encapsulate\nlogic for managing collections of objects. Since you can't have a collection of\nabstract objects, it doesn't make sense to be managing them. If you have\nfunctionality that applies to the abstract model, you should put that functionality\nin a ``staticmethod`` or ``classmethod`` on the abstract model.\n\nImplementation concerns\n-----------------------\n\nWhatever features you add to your custom ``Manager``, it must be\npossible to make a shallow copy of a ``Manager`` instance; i.e., the\nfollowing code must work::\n\n    >>> import copy\n    >>> manager = MyManager()\n    >>> my_copy = copy.copy(manager)\n\nDjango makes shallow copies of manager objects during certain queries;\nif your Manager cannot be copied, those queries will fail.\n\nThis won't be an issue for most custom managers. If you are just\nadding simple methods to your ``Manager``, it is unlikely that you\nwill inadvertently make instances of your ``Manager`` uncopyable.\nHowever, if you're overriding ``__getattr__`` or some other private\nmethod of your ``Manager`` object that controls object state, you\nshould ensure that you don't affect the ability of your ``Manager`` to\nbe copied.\n\n.. _manager-types:\n\nControlling automatic Manager types\n===================================\n\nThis document has already mentioned a couple of places where Django creates a\nmanager class for you: `default managers`_ and the \"plain\" manager used to\n`access related objects`_. There are other places in the implementation of\nDjango where temporary plain managers are needed. Those automatically created\nmanagers will normally be instances of the :class:`django.db.models.Manager`\nclass.\n\n.. _default managers: manager-names_\n.. _access related objects: managers-for-related-objects_\n\nThroughout this section, we will use the term \"automatic manager\" to mean a\nmanager that Django creates for you -- either as a default manager on a model\nwith no managers, or to use temporarily when accessing related objects.\n\nSometimes this default class won't be the right choice. One example is in the\n:mod:`django.contrib.gis` application that ships with Django itself. All ``gis``\nmodels must use a special manager class (:class:`~django.contrib.gis.db.models.GeoManager`)\nbecause they need a special queryset (:class:`~django.contrib.gis.db.models.GeoQuerySet`)\nto be used for interacting with the database.  It turns out that models which require\na special manager like this need to use the same manager class wherever an automatic\nmanager is created.\n\nDjango provides a way for custom manager developers to say that their manager\nclass should be used for automatic managers whenever it is the default manager\non a model. This is done by setting the ``use_for_related_fields`` attribute on\nthe manager class::\n\n    class MyManager(models.Manager):\n        use_for_related_fields = True\n\n        ...\n\nIf this attribute is set on the *default* manager for a model (only the\ndefault manager is considered in these situations), Django will use that class\nwhenever it needs to automatically create a manager for the class.  Otherwise,\nit will use :class:`django.db.models.Manager`.\n\n.. admonition:: Historical Note\n\n    Given the purpose for which it's used, the name of this attribute\n    (``use_for_related_fields``) might seem a little odd. Originally, the\n    attribute only controlled the type of manager used for related field\n    access, which is where the name came from. As it became clear the concept\n    was more broadly useful, the name hasn't been changed. This is primarily\n    so that existing code will :doc:`continue to work </misc/api-stability>` in\n    future Django versions.\n\nWriting correct Managers for use in automatic Manager instances\n---------------------------------------------------------------\n\nAs already suggested by the :mod:`django.contrib.gis` example, above, the\n``use_for_related_fields`` feature is primarily for managers that need to\nreturn a custom ``QuerySet`` subclass. In providing this functionality in your\nmanager, there are a couple of things to remember.\n\nDo not filter away any results in this type of manager subclass\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nOne reason an automatic manager is used is to access objects that are related\nto from some other model. In those situations, Django has to be able to see\nall the objects for the model it is fetching, so that *anything* which is\nreferred to can be retrieved.\n\nIf you override the ``get_query_set()`` method and filter out any rows, Django\nwill return incorrect results. Don't do that. A manager that filters results\nin ``get_query_set()`` is not appropriate for use as an automatic manager.\n\nSet ``use_for_related_fields`` when you define the class\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe ``use_for_related_fields`` attribute must be set on the manager *class*, not\non an *instance* of the class. The earlier example shows the correct way to set\nit, whereas the following will not work::\n\n    # BAD: Incorrect code\n    class MyManager(models.Manager):\n        ...\n\n    # Sets the attribute on an instance of MyManager. Django will\n    # ignore this setting.\n    mgr = MyManager()\n    mgr.use_for_related_fields = True\n\n    class MyModel(models.Model):\n        ...\n        objects = mgr\n\n    # End of incorrect code.\n\nYou also shouldn't change the attribute on the class object after it has been\nused in a model, since the attribute's value is processed when the model class\nis created and not subsequently reread. Set the attribute on the manager class\nwhen it is first defined, as in the initial example of this section and\neverything will work smoothly.\n"
  },
  {
    "path": "Django-1.5.1/docs/topics/db/models.txt",
    "content": "======\nModels\n======\n\n.. module:: django.db.models\n\nA model is the single, definitive source of data about your data. It contains\nthe essential fields and behaviors of the data you're storing. Generally, each\nmodel maps to a single database table.\n\nThe basics:\n\n* Each model is a Python class that subclasses\n  :class:`django.db.models.Model`.\n\n* Each attribute of the model represents a database field.\n\n* With all of this, Django gives you an automatically-generated\n  database-access API; see :doc:`/topics/db/queries`.\n\n\nQuick example\n=============\n\nThis example model defines a ``Person``, which has a ``first_name`` and\n``last_name``::\n\n    from django.db import models\n\n    class Person(models.Model):\n        first_name = models.CharField(max_length=30)\n        last_name = models.CharField(max_length=30)\n\n``first_name`` and ``last_name`` are fields_ of the model. Each field is\nspecified as a class attribute, and each attribute maps to a database column.\n\nThe above ``Person`` model would create a database table like this:\n\n.. code-block:: sql\n\n    CREATE TABLE myapp_person (\n        \"id\" serial NOT NULL PRIMARY KEY,\n        \"first_name\" varchar(30) NOT NULL,\n        \"last_name\" varchar(30) NOT NULL\n    );\n\nSome technical notes:\n\n* The name of the table, ``myapp_person``, is automatically derived from\n  some model metadata but can be overridden. See :ref:`table-names` for more\n  details..\n\n* An ``id`` field is added automatically, but this behavior can be\n  overridden. See :ref:`automatic-primary-key-fields`.\n\n* The ``CREATE TABLE`` SQL in this example is formatted using PostgreSQL\n  syntax, but it's worth noting Django uses SQL tailored to the database\n  backend specified in your :doc:`settings file </topics/settings>`.\n\nUsing models\n============\n\nOnce you have defined your models, you need to tell Django you're going to *use*\nthose models. Do this by editing your settings file and changing the\n:setting:`INSTALLED_APPS` setting to add the name of the module that contains\nyour ``models.py``.\n\nFor example, if the models for your application live in the module\n``myapp.models`` (the package structure that is created for an\napplication by the :djadmin:`manage.py startapp <startapp>` script),\n:setting:`INSTALLED_APPS` should read, in part::\n\n    INSTALLED_APPS = (\n        #...\n        'myapp',\n        #...\n    )\n\nWhen you add new apps to :setting:`INSTALLED_APPS`, be sure to run\n:djadmin:`manage.py syncdb <syncdb>`.\n\nFields\n======\n\nThe most important part of a model -- and the only required part of a model --\nis the list of database fields it defines. Fields are specified by class\nattributes. Be careful not to choose field names that conflict with the\n:doc:`models API </ref/models/instances>` like ``clean``, ``save``, or\n``delete``.\n\nExample::\n\n    class Musician(models.Model):\n        first_name = models.CharField(max_length=50)\n        last_name = models.CharField(max_length=50)\n        instrument = models.CharField(max_length=100)\n\n    class Album(models.Model):\n        artist = models.ForeignKey(Musician)\n        name = models.CharField(max_length=100)\n        release_date = models.DateField()\n        num_stars = models.IntegerField()\n\nField types\n-----------\n\nEach field in your model should be an instance of the appropriate\n:class:`~django.db.models.Field` class. Django uses the field class types to\ndetermine a few things:\n\n* The database column type (e.g. ``INTEGER``, ``VARCHAR``).\n\n* The default :doc:`widget </ref/forms/widgets>` to use when rendering a form\n  field (e.g. ``<input type=\"text\">``, ``<select>``).\n\n* The minimal validation requirements, used in Django's admin and in\n  automatically-generated forms.\n\nDjango ships with dozens of built-in field types; you can find the complete list\nin the :ref:`model field reference <model-field-types>`. You can easily write\nyour own fields if Django's built-in ones don't do the trick; see\n:doc:`/howto/custom-model-fields`.\n\nField options\n-------------\n\nEach field takes a certain set of field-specific arguments (documented in the\n:ref:`model field reference <model-field-types>`). For example,\n:class:`~django.db.models.CharField` (and its subclasses) require a\n:attr:`~django.db.models.CharField.max_length` argument which specifies the size\nof the ``VARCHAR`` database field used to store the data.\n\nThere's also a set of common arguments available to all field types. All are\noptional. They're fully explained in the :ref:`reference\n<common-model-field-options>`, but here's a quick summary of the most often-used\nones:\n\n:attr:`~Field.null`\n    If ``True``, Django will store empty values as ``NULL`` in the database.\n    Default is ``False``.\n\n:attr:`~Field.blank`\n    If ``True``, the field is allowed to be blank. Default is ``False``.\n\n    Note that this is different than :attr:`~Field.null`.\n    :attr:`~Field.null` is purely database-related, whereas\n    :attr:`~Field.blank` is validation-related. If a field has\n    :attr:`blank=True <Field.blank>`, form validation will\n    allow entry of an empty value. If a field has :attr:`blank=False\n    <Field.blank>`, the field will be required.\n\n:attr:`~Field.choices`\n    An iterable (e.g., a list or tuple) of 2-tuples to use as choices for\n    this field. If this is given, the default form widget will be a select box\n    instead of the standard text field and will limit choices to the choices\n    given.\n\n    A choices list looks like this::\n\n        YEAR_IN_SCHOOL_CHOICES = (\n            ('FR', 'Freshman'),\n            ('SO', 'Sophomore'),\n            ('JR', 'Junior'),\n            ('SR', 'Senior'),\n            ('GR', 'Graduate'),\n        )\n\n    The first element in each tuple is the value that will be stored in the\n    database, the second element will be displayed by the default form widget\n    or in a ModelChoiceField. Given an instance of a model object, the\n    display value for a choices field can be accessed using the\n    ``get_FOO_display`` method. For example::\n\n        from django.db import models\n\n        class Person(models.Model):\n            SHIRT_SIZES = (\n                ('S', 'Small'),\n                ('M', 'Medium'),\n                ('L', 'Large'),\n            )\n            name = models.CharField(max_length=60)\n            shirt_size = models.CharField(max_length=2, choices=SHIRT_SIZES)\n\n    ::\n\n        >>> p = Person(name=\"Fred Flintstone\", shirt_size=\"L\")\n        >>> p.save()\n        >>> p.shirt_size\n        u'L'\n        >>> p.get_shirt_size_display()\n        u'Large'\n\n:attr:`~Field.default`\n    The default value for the field. This can be a value or a callable\n    object. If callable it will be called every time a new object is\n    created.\n\n:attr:`~Field.help_text`\n    Extra \"help\" text to be displayed with the form widget. It's useful for\n    documentation even if your field isn't used on a form.\n\n:attr:`~Field.primary_key`\n    If ``True``, this field is the primary key for the model.\n\n    If you don't specify :attr:`primary_key=True <Field.primary_key>` for\n    any fields in your model, Django will automatically add an\n    :class:`IntegerField` to hold the primary key, so you don't need to set\n    :attr:`primary_key=True <Field.primary_key>` on any of your fields\n    unless you want to override the default primary-key behavior. For more,\n    see :ref:`automatic-primary-key-fields`.\n\n:attr:`~Field.unique`\n    If ``True``, this field must be unique throughout the table.\n\nAgain, these are just short descriptions of the most common field options. Full\ndetails can be found in the :ref:`common model field option reference\n<common-model-field-options>`.\n\n.. _automatic-primary-key-fields:\n\nAutomatic primary key fields\n----------------------------\n\nBy default, Django gives each model the following field::\n\n    id = models.AutoField(primary_key=True)\n\nThis is an auto-incrementing primary key.\n\nIf you'd like to specify a custom primary key, just specify\n:attr:`primary_key=True <Field.primary_key>` on one of your fields. If Django\nsees you've explicitly set :attr:`Field.primary_key`, it won't add the automatic\n``id`` column.\n\nEach model requires exactly one field to have :attr:`primary_key=True\n<Field.primary_key>`.\n\n.. _verbose-field-names:\n\nVerbose field names\n-------------------\n\nEach field type, except for :class:`~django.db.models.ForeignKey`,\n:class:`~django.db.models.ManyToManyField` and\n:class:`~django.db.models.OneToOneField`, takes an optional first positional\nargument -- a verbose name. If the verbose name isn't given, Django will\nautomatically create it using the field's attribute name, converting underscores\nto spaces.\n\nIn this example, the verbose name is ``\"person's first name\"``::\n\n    first_name = models.CharField(\"person's first name\", max_length=30)\n\nIn this example, the verbose name is ``\"first name\"``::\n\n    first_name = models.CharField(max_length=30)\n\n:class:`~django.db.models.ForeignKey`,\n:class:`~django.db.models.ManyToManyField` and\n:class:`~django.db.models.OneToOneField` require the first argument to be a\nmodel class, so use the :attr:`~Field.verbose_name` keyword argument::\n\n    poll = models.ForeignKey(Poll, verbose_name=\"the related poll\")\n    sites = models.ManyToManyField(Site, verbose_name=\"list of sites\")\n    place = models.OneToOneField(Place, verbose_name=\"related place\")\n\nThe convention is not to capitalize the first letter of the\n:attr:`~Field.verbose_name`. Django will automatically capitalize the first\nletter where it needs to.\n\nRelationships\n-------------\n\nClearly, the power of relational databases lies in relating tables to each\nother. Django offers ways to define the three most common types of database\nrelationships: many-to-one, many-to-many and one-to-one.\n\nMany-to-one relationships\n~~~~~~~~~~~~~~~~~~~~~~~~~\n\nTo define a many-to-one relationship, use :class:`django.db.models.ForeignKey`.\nYou use it just like any other :class:`~django.db.models.Field` type: by\nincluding it as a class attribute of your model.\n\n:class:`~django.db.models.ForeignKey` requires a positional argument: the class\nto which the model is related.\n\nFor example, if a ``Car`` model has a ``Manufacturer`` -- that is, a\n``Manufacturer`` makes multiple cars but each ``Car`` only has one\n``Manufacturer`` -- use the following definitions::\n\n    class Manufacturer(models.Model):\n        # ...\n\n    class Car(models.Model):\n        manufacturer = models.ForeignKey(Manufacturer)\n        # ...\n\nYou can also create :ref:`recursive relationships <recursive-relationships>` (an\nobject with a many-to-one relationship to itself) and :ref:`relationships to\nmodels not yet defined <lazy-relationships>`; see :ref:`the model field\nreference <ref-foreignkey>` for details.\n\nIt's suggested, but not required, that the name of a\n:class:`~django.db.models.ForeignKey` field (``manufacturer`` in the example\nabove) be the name of the model, lowercase. You can, of course, call the field\nwhatever you want. For example::\n\n    class Car(models.Model):\n        company_that_makes_it = models.ForeignKey(Manufacturer)\n        # ...\n\n.. seealso::\n\n    :class:`~django.db.models.ForeignKey` fields accept a number of extra\n    arguments which are explained in :ref:`the model field reference\n    <foreign-key-arguments>`. These options help define how the relationship\n    should work; all are optional.\n\n    For details on accessing backwards-related objects, see the\n    :ref:`Following relationships backward example <backwards-related-objects>`.\n\n    For sample code, see the :doc:`Many-to-one relationship model example\n    </topics/db/examples/many_to_one>`.\n\n\nMany-to-many relationships\n~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nTo define a many-to-many relationship, use\n:class:`~django.db.models.ManyToManyField`. You use it just like any other\n:class:`~django.db.models.Field` type: by including it as a class attribute of\nyour model.\n\n:class:`~django.db.models.ManyToManyField` requires a positional argument: the\nclass to which the model is related.\n\nFor example, if a ``Pizza`` has multiple ``Topping`` objects -- that is, a\n``Topping`` can be on multiple pizzas and each ``Pizza`` has multiple toppings\n-- here's how you'd represent that::\n\n    class Topping(models.Model):\n        # ...\n\n    class Pizza(models.Model):\n        # ...\n        toppings = models.ManyToManyField(Topping)\n\nAs with :class:`~django.db.models.ForeignKey`, you can also create\n:ref:`recursive relationships <recursive-relationships>` (an object with a\nmany-to-many relationship to itself) and :ref:`relationships to models not yet\ndefined <lazy-relationships>`; see :ref:`the model field reference\n<ref-manytomany>` for details.\n\nIt's suggested, but not required, that the name of a\n:class:`~django.db.models.ManyToManyField` (``toppings`` in the example above)\nbe a plural describing the set of related model objects.\n\nIt doesn't matter which model has the\n:class:`~django.db.models.ManyToManyField`, but you should only put it in one\nof the models -- not both.\n\nGenerally, :class:`~django.db.models.ManyToManyField` instances should go in\nthe object that's going to be edited on a form. In the above example,\n``toppings`` is in ``Pizza`` (rather than ``Topping`` having a ``pizzas``\n:class:`~django.db.models.ManyToManyField` ) because it's more natural to think\nabout a pizza having toppings than a topping being on multiple pizzas. The way\nit's set up above, the ``Pizza`` form would let users select the toppings.\n\n.. seealso::\n\n    See the :doc:`Many-to-many relationship model example\n    </topics/db/examples/many_to_many>` for a full example.\n\n:class:`~django.db.models.ManyToManyField` fields also accept a number of\nextra arguments which are explained in :ref:`the model field reference\n<manytomany-arguments>`. These options help define how the relationship\nshould work; all are optional.\n\n.. _intermediary-manytomany:\n\nExtra fields on many-to-many relationships\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nWhen you're only dealing with simple many-to-many relationships such as\nmixing and matching pizzas and toppings, a standard\n:class:`~django.db.models.ManyToManyField` is all you need. However, sometimes\nyou may need to associate data with the relationship between two models.\n\nFor example, consider the case of an application tracking the musical groups\nwhich musicians belong to. There is a many-to-many relationship between a person\nand the groups of which they are a member, so you could use a\n:class:`~django.db.models.ManyToManyField` to represent this relationship.\nHowever, there is a lot of detail about the membership that you might want to\ncollect, such as the date at which the person joined the group.\n\nFor these situations, Django allows you to specify the model that will be used\nto govern the many-to-many relationship. You can then put extra fields on the\nintermediate model. The intermediate model is associated with the\n:class:`~django.db.models.ManyToManyField` using the\n:attr:`through <ManyToManyField.through>` argument to point to the model\nthat will act as an intermediary. For our musician example, the code would look\nsomething like this::\n\n    class Person(models.Model):\n        name = models.CharField(max_length=128)\n\n        def __unicode__(self):\n            return self.name\n\n    class Group(models.Model):\n        name = models.CharField(max_length=128)\n        members = models.ManyToManyField(Person, through='Membership')\n\n        def __unicode__(self):\n            return self.name\n\n    class Membership(models.Model):\n        person = models.ForeignKey(Person)\n        group = models.ForeignKey(Group)\n        date_joined = models.DateField()\n        invite_reason = models.CharField(max_length=64)\n\nWhen you set up the intermediary model, you explicitly specify foreign\nkeys to the models that are involved in the ManyToMany relation. This\nexplicit declaration defines how the two models are related.\n\nThere are a few restrictions on the intermediate model:\n\n* Your intermediate model must contain one - and *only* one - foreign key\n  to the target model (this would be ``Person`` in our example). If you\n  have more than one foreign key, a validation error will be raised.\n\n* Your intermediate model must contain one - and *only* one - foreign key\n  to the source model (this would be ``Group`` in our example). If you\n  have more than one foreign key, a validation error will be raised.\n\n* The only exception to this is a model which has a many-to-many\n  relationship to itself, through an intermediary model. In this\n  case, two foreign keys to the same model are permitted, but they\n  will be treated as the two (different) sides of the many-to-many\n  relation.\n\n* When defining a many-to-many relationship from a model to\n  itself, using an intermediary model, you *must* use\n  :attr:`symmetrical=False <ManyToManyField.symmetrical>` (see\n  :ref:`the model field reference <manytomany-arguments>`).\n\nNow that you have set up your :class:`~django.db.models.ManyToManyField` to use\nyour intermediary model (``Membership``, in this case), you're ready to start\ncreating some many-to-many relationships. You do this by creating instances of\nthe intermediate model::\n\n    >>> ringo = Person.objects.create(name=\"Ringo Starr\")\n    >>> paul = Person.objects.create(name=\"Paul McCartney\")\n    >>> beatles = Group.objects.create(name=\"The Beatles\")\n    >>> m1 = Membership(person=ringo, group=beatles,\n    ...     date_joined=date(1962, 8, 16),\n    ...     invite_reason= \"Needed a new drummer.\")\n    >>> m1.save()\n    >>> beatles.members.all()\n    [<Person: Ringo Starr>]\n    >>> ringo.group_set.all()\n    [<Group: The Beatles>]\n    >>> m2 = Membership.objects.create(person=paul, group=beatles,\n    ...     date_joined=date(1960, 8, 1),\n    ...     invite_reason= \"Wanted to form a band.\")\n    >>> beatles.members.all()\n    [<Person: Ringo Starr>, <Person: Paul McCartney>]\n\nUnlike normal many-to-many fields, you *can't* use ``add``, ``create``,\nor assignment (i.e., ``beatles.members = [...]``) to create relationships::\n\n    # THIS WILL NOT WORK\n    >>> beatles.members.add(john)\n    # NEITHER WILL THIS\n    >>> beatles.members.create(name=\"George Harrison\")\n    # AND NEITHER WILL THIS\n    >>> beatles.members = [john, paul, ringo, george]\n\nWhy? You can't just create a relationship between a ``Person`` and a ``Group``\n- you need to specify all the detail for the relationship required by the\n``Membership`` model. The simple ``add``, ``create`` and assignment calls\ndon't provide a way to specify this extra detail. As a result, they are\ndisabled for many-to-many relationships that use an intermediate model.\nThe only way to create this type of relationship is to create instances of the\nintermediate model.\n\nThe :meth:`~django.db.models.fields.related.RelatedManager.remove` method is\ndisabled for similar reasons. However, the\n:meth:`~django.db.models.fields.related.RelatedManager.clear` method can be\nused to remove all many-to-many relationships for an instance::\n\n    # Beatles have broken up\n    >>> beatles.members.clear()\n\nOnce you have established the many-to-many relationships by creating instances\nof your intermediate model, you can issue queries. Just as with normal\nmany-to-many relationships, you can query using the attributes of the\nmany-to-many-related model::\n\n    # Find all the groups with a member whose name starts with 'Paul'\n    >>> Group.objects.filter(members__name__startswith='Paul')\n    [<Group: The Beatles>]\n\nAs you are using an intermediate model, you can also query on its attributes::\n\n    # Find all the members of the Beatles that joined after 1 Jan 1961\n    >>> Person.objects.filter(\n    ...     group__name='The Beatles',\n    ...     membership__date_joined__gt=date(1961,1,1))\n    [<Person: Ringo Starr]\n\nIf you need to access a membership's information you may do so by directly\nquerying the ``Membership`` model::\n\n    >>> ringos_membership = Membership.objects.get(group=beatles, person=ringo)\n    >>> ringos_membership.date_joined\n    datetime.date(1962, 8, 16)\n    >>> ringos_membership.invite_reason\n    u'Needed a new drummer.'\n\nAnother way to access the same information is by querying the\n:ref:`many-to-many reverse relationship<m2m-reverse-relationships>` from a\n``Person`` object::\n\n    >>> ringos_membership = ringo.membership_set.get(group=beatles)\n    >>> ringos_membership.date_joined\n    datetime.date(1962, 8, 16)\n    >>> ringos_membership.invite_reason\n    u'Needed a new drummer.'\n\n\nOne-to-one relationships\n~~~~~~~~~~~~~~~~~~~~~~~~\n\nTo define a one-to-one relationship, use\n:class:`~django.db.models.OneToOneField`. You use it just like any other\n``Field`` type: by including it as a class attribute of your model.\n\nThis is most useful on the primary key of an object when that object \"extends\"\nanother object in some way.\n\n:class:`~django.db.models.OneToOneField` requires a positional argument: the\nclass to which the model is related.\n\nFor example, if you were building a database of \"places\", you would\nbuild pretty standard stuff such as address, phone number, etc. in the\ndatabase. Then, if you wanted to build a database of restaurants on\ntop of the places, instead of repeating yourself and replicating those\nfields in the ``Restaurant`` model, you could make ``Restaurant`` have\na :class:`~django.db.models.OneToOneField` to ``Place`` (because a\nrestaurant \"is a\" place; in fact, to handle this you'd typically use\n:ref:`inheritance <model-inheritance>`, which involves an implicit\none-to-one relation).\n\nAs with :class:`~django.db.models.ForeignKey`, a\n:ref:`recursive relationship <recursive-relationships>`\ncan be defined and\n:ref:`references to as-yet undefined models <lazy-relationships>`\ncan be made; see :ref:`the model field reference <ref-onetoone>` for details.\n\n.. seealso::\n\n    See the :doc:`One-to-one relationship model example\n    </topics/db/examples/one_to_one>` for a full example.\n\n:class:`~django.db.models.OneToOneField` fields also accept one specific,\noptional ``parent_link`` argument described in the :ref:`model field\nreference <ref-onetoone>`.\n\n:class:`~django.db.models.OneToOneField` classes used to automatically become\nthe primary key on a model. This is no longer true (although you can manually\npass in the :attr:`~django.db.models.Field.primary_key` argument if you like).\nThus, it's now possible to have multiple fields of type\n:class:`~django.db.models.OneToOneField` on a single model.\n\nModels across files\n-------------------\n\nIt's perfectly OK to relate a model to one from another app. To do this, import\nthe related model at the top of the file where your model is defined. Then,\njust refer to the other model class wherever needed. For example::\n\n    from geography.models import ZipCode\n\n    class Restaurant(models.Model):\n        # ...\n        zip_code = models.ForeignKey(ZipCode)\n\nField name restrictions\n-----------------------\n\nDjango places only two restrictions on model field names:\n\n1. A field name cannot be a Python reserved word, because that would result\n   in a Python syntax error. For example::\n\n       class Example(models.Model):\n           pass = models.IntegerField() # 'pass' is a reserved word!\n\n2. A field name cannot contain more than one underscore in a row, due to\n   the way Django's query lookup syntax works. For example::\n\n       class Example(models.Model):\n           foo__bar = models.IntegerField() # 'foo__bar' has two underscores!\n\nThese limitations can be worked around, though, because your field name doesn't\nnecessarily have to match your database column name. See the\n:attr:`~Field.db_column` option.\n\nSQL reserved words, such as ``join``, ``where`` or ``select``, *are* allowed as\nmodel field names, because Django escapes all database table names and column\nnames in every underlying SQL query. It uses the quoting syntax of your\nparticular database engine.\n\nCustom field types\n------------------\n\nIf one of the existing model fields cannot be used to fit your purposes, or if\nyou wish to take advantage of some less common database column types, you can\ncreate your own field class. Full coverage of creating your own fields is\nprovided in :doc:`/howto/custom-model-fields`.\n\n.. _meta-options:\n\nMeta options\n============\n\nGive your model metadata by using an inner ``class Meta``, like so::\n\n    class Ox(models.Model):\n        horn_length = models.IntegerField()\n\n        class Meta:\n            ordering = [\"horn_length\"]\n            verbose_name_plural = \"oxen\"\n\nModel metadata is \"anything that's not a field\", such as ordering options\n(:attr:`~Options.ordering`), database table name (:attr:`~Options.db_table`), or\nhuman-readable singular and plural names (:attr:`~Options.verbose_name` and\n:attr:`~Options.verbose_name_plural`). None are required, and adding ``class\nMeta`` to a model is completely optional.\n\nA complete list of all possible ``Meta`` options can be found in the :doc:`model\noption reference </ref/models/options>`.\n\n.. _model-methods:\n\nModel methods\n=============\n\nDefine custom methods on a model to add custom \"row-level\" functionality to your\nobjects. Whereas :class:`~django.db.models.Manager` methods are intended to do\n\"table-wide\" things, model methods should act on a particular model instance.\n\nThis is a valuable technique for keeping business logic in one place -- the\nmodel.\n\nFor example, this model has a few custom methods::\n\n    from django.contrib.localflavor.us.models import USStateField\n\n    class Person(models.Model):\n        first_name = models.CharField(max_length=50)\n        last_name = models.CharField(max_length=50)\n        birth_date = models.DateField()\n        address = models.CharField(max_length=100)\n        city = models.CharField(max_length=50)\n        state = USStateField() # Yes, this is America-centric...\n\n        def baby_boomer_status(self):\n            \"Returns the person's baby-boomer status.\"\n            import datetime\n            if self.birth_date < datetime.date(1945, 8, 1):\n                return \"Pre-boomer\"\n            elif self.birth_date < datetime.date(1965, 1, 1):\n                return \"Baby boomer\"\n            else:\n                return \"Post-boomer\"\n\n        def is_midwestern(self):\n            \"Returns True if this person is from the Midwest.\"\n            return self.state in ('IL', 'WI', 'MI', 'IN', 'OH', 'IA', 'MO')\n\n        def _get_full_name(self):\n            \"Returns the person's full name.\"\n            return '%s %s' % (self.first_name, self.last_name)\n        full_name = property(_get_full_name)\n\nThe last method in this example is a :term:`property`.\n\nThe :doc:`model instance reference </ref/models/instances>` has a complete list\nof :ref:`methods automatically given to each model <model-instance-methods>`.\nYou can override most of these -- see `overriding predefined model methods`_,\nbelow -- but there are a couple that you'll almost always want to define:\n\n:meth:`~Model.__unicode__`\n    A Python \"magic method\" that returns a unicode \"representation\" of any\n    object. This is what Python and Django will use whenever a model\n    instance needs to be coerced and displayed as a plain string. Most\n    notably, this happens when you display an object in an interactive\n    console or in the admin.\n\n    You'll always want to define this method; the default isn't very helpful\n    at all.\n\n:meth:`~Model.get_absolute_url`\n    This tells Django how to calculate the URL for an object. Django uses\n    this in its admin interface, and any time it needs to figure out a URL\n    for an object.\n\n    Any object that has a URL that uniquely identifies it should define this\n    method.\n\n.. _overriding-model-methods:\n\nOverriding predefined model methods\n-----------------------------------\n\nThere's another set of :ref:`model methods <model-instance-methods>` that\nencapsulate a bunch of database behavior that you'll want to customize. In\nparticular you'll often want to change the way :meth:`~Model.save` and\n:meth:`~Model.delete` work.\n\nYou're free to override these methods (and any other model method) to alter\nbehavior.\n\nA classic use-case for overriding the built-in methods is if you want something\nto happen whenever you save an object. For example (see\n:meth:`~Model.save` for documentation of the parameters it accepts)::\n\n    class Blog(models.Model):\n        name = models.CharField(max_length=100)\n        tagline = models.TextField()\n\n        def save(self, *args, **kwargs):\n            do_something()\n            super(Blog, self).save(*args, **kwargs) # Call the \"real\" save() method.\n            do_something_else()\n\nYou can also prevent saving::\n\n    class Blog(models.Model):\n        name = models.CharField(max_length=100)\n        tagline = models.TextField()\n\n        def save(self, *args, **kwargs):\n            if self.name == \"Yoko Ono's blog\":\n                return # Yoko shall never have her own blog!\n            else:\n                super(Blog, self).save(*args, **kwargs) # Call the \"real\" save() method.\n\nIt's important to remember to call the superclass method -- that's\nthat ``super(Blog, self).save(*args, **kwargs)`` business -- to ensure\nthat the object still gets saved into the database. If you forget to\ncall the superclass method, the default behavior won't happen and the\ndatabase won't get touched.\n\nIt's also important that you pass through the arguments that can be\npassed to the model method -- that's what the ``*args, **kwargs`` bit\ndoes. Django will, from time to time, extend the capabilities of\nbuilt-in model methods, adding new arguments. If you use ``*args,\n**kwargs`` in your method definitions, you are guaranteed that your\ncode will automatically support those arguments when they are added.\n\n.. admonition:: Overridden model methods are not called on bulk operations\n\n    Note that the :meth:`~Model.delete()` method for an object is not\n    necessarily called when :ref:`deleting objects in bulk using a\n    QuerySet<topics-db-queries-delete>`. To ensure customized delete logic\n    gets executed, you can use :data:`~django.db.models.signals.pre_delete`\n    and/or :data:`~django.db.models.signals.post_delete` signals.\n\n    Unfortunately, there isn't a workaround when\n    :meth:`creating<django.db.models.query.QuerySet.bulk_create>` or\n    :meth:`updating<django.db.models.query.QuerySet.update>` objects in bulk,\n    since none of :meth:`~Model.save()`,\n    :data:`~django.db.models.signals.pre_save`, and\n    :data:`~django.db.models.signals.post_save` are called.\n\nExecuting custom SQL\n--------------------\n\nAnother common pattern is writing custom SQL statements in model methods and\nmodule-level methods. For more details on using raw SQL, see the documentation\non :doc:`using raw SQL</topics/db/sql>`.\n\n.. _model-inheritance:\n\nModel inheritance\n=================\n\nModel inheritance in Django works almost identically to the way normal\nclass inheritance works in Python. The only decision you have to make\nis whether you want the parent models to be models in their own right\n(with their own database tables), or if the parents are just holders\nof common information that will only be visible through the child\nmodels.\n\nThere are three styles of inheritance that are possible in Django.\n\n1. Often, you will just want to use the parent class to hold information that\n   you don't want to have to type out for each child model. This class isn't\n   going to ever be used in isolation, so :ref:`abstract-base-classes` are\n   what you're after.\n2. If you're subclassing an existing model (perhaps something from another\n   application entirely) and want each model to have its own database table,\n   :ref:`multi-table-inheritance` is the way to go.\n3. Finally, if you only want to modify the Python-level behavior of a model,\n   without changing the models fields in any way, you can use\n   :ref:`proxy-models`.\n\n.. _abstract-base-classes:\n\nAbstract base classes\n---------------------\n\nAbstract base classes are useful when you want to put some common\ninformation into a number of other models. You write your base class\nand put ``abstract=True`` in the :ref:`Meta <meta-options>`\nclass. This model will then not be used to create any database\ntable. Instead, when it is used as a base class for other models, its\nfields will be added to those of the child class. It is an error to\nhave fields in the abstract base class with the same name as those in\nthe child (and Django will raise an exception).\n\nAn example::\n\n    class CommonInfo(models.Model):\n        name = models.CharField(max_length=100)\n        age = models.PositiveIntegerField()\n\n        class Meta:\n            abstract = True\n\n    class Student(CommonInfo):\n        home_group = models.CharField(max_length=5)\n\nThe ``Student`` model will have three fields: ``name``, ``age`` and\n``home_group``. The ``CommonInfo`` model cannot be used as a normal Django\nmodel, since it is an abstract base class. It does not generate a database\ntable or have a manager, and cannot be instantiated or saved directly.\n\nFor many uses, this type of model inheritance will be exactly what you want.\nIt provides a way to factor out common information at the Python level, whilst\nstill only creating one database table per child model at the database level.\n\n``Meta`` inheritance\n~~~~~~~~~~~~~~~~~~~~\n\nWhen an abstract base class is created, Django makes any :ref:`Meta <meta-options>`\ninner class you declared in the base class available as an\nattribute. If a child class does not declare its own :ref:`Meta <meta-options>`\nclass, it will inherit the parent's :ref:`Meta <meta-options>`. If the child wants to\nextend the parent's :ref:`Meta <meta-options>` class, it can subclass it. For example::\n\n    class CommonInfo(models.Model):\n        ...\n        class Meta:\n            abstract = True\n            ordering = ['name']\n\n    class Student(CommonInfo):\n        ...\n        class Meta(CommonInfo.Meta):\n            db_table = 'student_info'\n\nDjango does make one adjustment to the :ref:`Meta <meta-options>` class of an abstract base\nclass: before installing the :ref:`Meta <meta-options>` attribute, it sets ``abstract=False``.\nThis means that children of abstract base classes don't automatically become\nabstract classes themselves. Of course, you can make an abstract base class\nthat inherits from another abstract base class. You just need to remember to\nexplicitly set ``abstract=True`` each time.\n\nSome attributes won't make sense to include in the :ref:`Meta <meta-options>` class of an\nabstract base class. For example, including ``db_table`` would mean that all\nthe child classes (the ones that don't specify their own :ref:`Meta <meta-options>`) would use\nthe same database table, which is almost certainly not what you want.\n\n.. _abstract-related-name:\n\nBe careful with ``related_name``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nIf you are using the :attr:`~django.db.models.ForeignKey.related_name` attribute on a ``ForeignKey`` or\n``ManyToManyField``, you must always specify a *unique* reverse name for the\nfield. This would normally cause a problem in abstract base classes, since the\nfields on this class are included into each of the child classes, with exactly\nthe same values for the attributes (including :attr:`~django.db.models.ForeignKey.related_name`) each time.\n\nTo work around this problem, when you are using :attr:`~django.db.models.ForeignKey.related_name` in an\nabstract base class (only), part of the name should contain\n``'%(app_label)s'`` and ``'%(class)s'``.\n\n- ``'%(class)s'`` is replaced by the lower-cased name of the child class\n  that the field is used in.\n- ``'%(app_label)s'`` is replaced by the lower-cased name of the app the child\n  class is contained within. Each installed application name must be unique\n  and the model class names within each app must also be unique, therefore the\n  resulting name will end up being different.\n\nFor example, given an app ``common/models.py``::\n\n    class Base(models.Model):\n        m2m = models.ManyToManyField(OtherModel, related_name=\"%(app_label)s_%(class)s_related\")\n\n        class Meta:\n            abstract = True\n\n    class ChildA(Base):\n        pass\n\n    class ChildB(Base):\n        pass\n\nAlong with another app ``rare/models.py``::\n\n    from common.models import Base\n\n    class ChildB(Base):\n        pass\n\nThe reverse name of the ``common.ChildA.m2m`` field will be\n``common_childa_related``, whilst the reverse name of the\n``common.ChildB.m2m`` field will be ``common_childb_related``, and finally the\nreverse name of the ``rare.ChildB.m2m`` field will be ``rare_childb_related``.\nIt is up to you how you use the ``'%(class)s'`` and ``'%(app_label)s`` portion\nto construct your related name, but if you forget to use it, Django will raise\nerrors when you validate your models (or run :djadmin:`syncdb`).\n\nIf you don't specify a :attr:`~django.db.models.ForeignKey.related_name`\nattribute for a field in an abstract base class, the default reverse name will\nbe the name of the child class followed by ``'_set'``, just as it normally\nwould be if you'd declared the field directly on the child class. For example,\nin the above code, if the :attr:`~django.db.models.ForeignKey.related_name`\nattribute was omitted, the reverse name for the ``m2m`` field would be\n``childa_set`` in the ``ChildA`` case and ``childb_set`` for the ``ChildB``\nfield.\n\n.. _multi-table-inheritance:\n\nMulti-table inheritance\n-----------------------\n\nThe second type of model inheritance supported by Django is when each model in\nthe hierarchy is a model all by itself. Each model corresponds to its own\ndatabase table and can be queried and created individually. The inheritance\nrelationship introduces links between the child model and each of its parents\n(via an automatically-created :class:`~django.db.models.OneToOneField`).\nFor example::\n\n    class Place(models.Model):\n        name = models.CharField(max_length=50)\n        address = models.CharField(max_length=80)\n\n    class Restaurant(Place):\n        serves_hot_dogs = models.BooleanField()\n        serves_pizza = models.BooleanField()\n\nAll of the fields of ``Place`` will also be available in ``Restaurant``,\nalthough the data will reside in a different database table. So these are both\npossible::\n\n    >>> Place.objects.filter(name=\"Bob's Cafe\")\n    >>> Restaurant.objects.filter(name=\"Bob's Cafe\")\n\nIf you have a ``Place`` that is also a ``Restaurant``, you can get from the\n``Place`` object to the ``Restaurant`` object by using the lower-case version\nof the model name::\n\n    >>> p = Place.objects.get(id=12)\n    # If p is a Restaurant object, this will give the child class:\n    >>> p.restaurant\n    <Restaurant: ...>\n\nHowever, if ``p`` in the above example was *not* a ``Restaurant`` (it had been\ncreated directly as a ``Place`` object or was the parent of some other class),\nreferring to ``p.restaurant`` would raise a Restaurant.DoesNotExist exception.\n\n``Meta`` and multi-table inheritance\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nIn the multi-table inheritance situation, it doesn't make sense for a child\nclass to inherit from its parent's :ref:`Meta <meta-options>` class. All the :ref:`Meta <meta-options>` options\nhave already been applied to the parent class and applying them again would\nnormally only lead to contradictory behavior (this is in contrast with the\nabstract base class case, where the base class doesn't exist in its own\nright).\n\nSo a child model does not have access to its parent's :ref:`Meta\n<meta-options>` class. However, there are a few limited cases where the child\ninherits behavior from the parent: if the child does not specify an\n:attr:`~django.db.models.Options.ordering` attribute or a\n:attr:`~django.db.models.Options.get_latest_by` attribute, it will inherit\nthese from its parent.\n\nIf the parent has an ordering and you don't want the child to have any natural\nordering, you can explicitly disable it::\n\n    class ChildModel(ParentModel):\n        ...\n        class Meta:\n            # Remove parent's ordering effect\n            ordering = []\n\nInheritance and reverse relations\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nBecause multi-table inheritance uses an implicit\n:class:`~django.db.models.OneToOneField` to link the child and\nthe parent, it's possible to move from the parent down to the child,\nas in the above example. However, this uses up the name that is the\ndefault :attr:`~django.db.models.ForeignKey.related_name` value for\n:class:`~django.db.models.ForeignKey` and\n:class:`~django.db.models.ManyToManyField` relations.  If you\nare putting those types of relations on a subclass of another model,\nyou **must** specify the\n:attr:`~django.db.models.ForeignKey.related_name` attribute on each\nsuch field. If you forget, Django will raise an error when you run\n:djadmin:`validate` or :djadmin:`syncdb`.\n\nFor example, using the above ``Place`` class again, let's create another\nsubclass with a :class:`~django.db.models.ManyToManyField`::\n\n    class Supplier(Place):\n        # Must specify related_name on all relations.\n        customers = models.ManyToManyField(Restaurant, related_name='provider')\n\n\nSpecifying the parent link field\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nAs mentioned, Django will automatically create a\n:class:`~django.db.models.OneToOneField` linking your child\nclass back any non-abstract parent models. If you want to control the\nname of the attribute linking back to the parent, you can create your\nown :class:`~django.db.models.OneToOneField` and set\n:attr:`parent_link=True <django.db.models.OneToOneField.parent_link>`\nto indicate that your field is the link back to the parent class.\n\n.. _proxy-models:\n\nProxy models\n------------\n\nWhen using :ref:`multi-table inheritance <multi-table-inheritance>`, a new\ndatabase table is created for each subclass of a model. This is usually the\ndesired behavior, since the subclass needs a place to store any additional\ndata fields that are not present on the base class. Sometimes, however, you\nonly want to change the Python behavior of a model -- perhaps to change the\ndefault manager, or add a new method.\n\nThis is what proxy model inheritance is for: creating a *proxy* for the\noriginal model. You can create, delete and update instances of the proxy model\nand all the data will be saved as if you were using the original (non-proxied)\nmodel. The difference is that you can change things like the default model\nordering or the default manager in the proxy, without having to alter the\noriginal.\n\nProxy models are declared like normal models. You tell Django that it's a\nproxy model by setting the :attr:`~django.db.models.Options.proxy` attribute of\nthe ``Meta`` class to ``True``.\n\nFor example, suppose you want to add a method to the ``Person`` model described\nabove. You can do it like this::\n\n    class MyPerson(Person):\n        class Meta:\n            proxy = True\n\n        def do_something(self):\n            ...\n\nThe ``MyPerson`` class operates on the same database table as its parent\n``Person`` class. In particular, any new instances of ``Person`` will also be\naccessible through ``MyPerson``, and vice-versa::\n\n    >>> p = Person.objects.create(first_name=\"foobar\")\n    >>> MyPerson.objects.get(first_name=\"foobar\")\n    <MyPerson: foobar>\n\nYou could also use a proxy model to define a different default ordering on\na model. You might not always want to order the ``Person`` model, but regularly\norder by the ``last_name`` attribute when you use the proxy. This is easy::\n\n    class OrderedPerson(Person):\n        class Meta:\n            ordering = [\"last_name\"]\n            proxy = True\n\nNow normal ``Person`` queries will be unordered\nand ``OrderedPerson`` queries will be ordered by ``last_name``.\n\nQuerySets still return the model that was requested\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThere is no way to have Django return, say, a ``MyPerson`` object whenever you\nquery for ``Person`` objects. A queryset for ``Person`` objects will return\nthose types of objects. The whole point of proxy objects is that code relying\non the original ``Person`` will use those and your own code can use the\nextensions you included (that no other code is relying on anyway). It is not\na way to replace the ``Person`` (or any other) model everywhere with something\nof your own creation.\n\nBase class restrictions\n~~~~~~~~~~~~~~~~~~~~~~~\n\nA proxy model must inherit from exactly one non-abstract model class. You\ncan't inherit from multiple non-abstract models as the proxy model doesn't\nprovide any connection between the rows in the different database tables. A\nproxy model can inherit from any number of abstract model classes, providing\nthey do *not* define any model fields.\n\nProxy models inherit any ``Meta`` options that they don't define from their\nnon-abstract model parent (the model they are proxying for).\n\nProxy model managers\n~~~~~~~~~~~~~~~~~~~~\n\nIf you don't specify any model managers on a proxy model, it inherits the\nmanagers from its model parents. If you define a manager on the proxy model,\nit will become the default, although any managers defined on the parent\nclasses will still be available.\n\nContinuing our example from above, you could change the default manager used\nwhen you query the ``Person`` model like this::\n\n    class NewManager(models.Manager):\n        ...\n\n    class MyPerson(Person):\n        objects = NewManager()\n\n        class Meta:\n            proxy = True\n\nIf you wanted to add a new manager to the Proxy, without replacing the\nexisting default, you can use the techniques described in the :ref:`custom\nmanager <custom-managers-and-inheritance>` documentation: create a base class\ncontaining the new managers and inherit that after the primary base class::\n\n    # Create an abstract class for the new manager.\n    class ExtraManagers(models.Model):\n        secondary = NewManager()\n\n        class Meta:\n            abstract = True\n\n    class MyPerson(Person, ExtraManagers):\n        class Meta:\n            proxy = True\n\nYou probably won't need to do this very often, but, when you do, it's\npossible.\n\n.. _proxy-vs-unmanaged-models:\n\nDifferences between proxy inheritance and  unmanaged models\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nProxy model inheritance might look fairly similar to creating an unmanaged\nmodel, using the :attr:`~django.db.models.Options.managed` attribute on a\nmodel's ``Meta`` class. The two alternatives are not quite the same and it's\nworth considering which one you should use.\n\nOne difference is that you can (and, in fact, must unless you want an empty\nmodel) specify model fields on models with ``Meta.managed=False``. You could,\nwith careful setting of :attr:`Meta.db_table\n<django.db.models.Options.db_table>` create an unmanaged model that shadowed\nan existing model and add Python methods to it. However, that would be very\nrepetitive and fragile as you need to keep both copies synchronized if you\nmake any changes.\n\nThe other difference that is more important for proxy models, is how model\nmanagers are handled. Proxy models are intended to behave exactly like the\nmodel they are proxying for. So they inherit the parent model's managers,\nincluding the default manager. In the normal multi-table model inheritance\ncase, children do not inherit managers from their parents as the custom\nmanagers aren't always appropriate when extra fields are involved. The\n:ref:`manager documentation <custom-managers-and-inheritance>` has more\ndetails about this latter case.\n\nWhen these two features were implemented, attempts were made to squash them\ninto a single option. It turned out that interactions with inheritance, in\ngeneral, and managers, in particular, made the API very complicated and\npotentially difficult to understand and use. It turned out that two options\nwere needed in any case, so the current separation arose.\n\nSo, the general rules are:\n\n1. If you are mirroring an existing model or database table and don't want\n   all the original database table columns, use ``Meta.managed=False``.\n   That option is normally useful for modeling database views and tables\n   not under the control of Django.\n2. If you are wanting to change the Python-only behavior of a model, but\n   keep all the same fields as in the original, use ``Meta.proxy=True``.\n   This sets things up so that the proxy model is an exact copy of the\n   storage structure of the original model when data is saved.\n\nMultiple inheritance\n--------------------\n\nJust as with Python's subclassing, it's possible for a Django model to inherit\nfrom multiple parent models. Keep in mind that normal Python name resolution\nrules apply. The first base class that a particular name (e.g. :ref:`Meta\n<meta-options>`) appears in will be the one that is used; for example, this\nmeans that if multiple parents contain a :ref:`Meta <meta-options>` class,\nonly the first one is going to be used, and all others will be ignored.\n\nGenerally, you won't need to inherit from multiple parents. The main use-case\nwhere this is useful is for \"mix-in\" classes: adding a particular extra\nfield or method to every class that inherits the mix-in. Try to keep your\ninheritance hierarchies as simple and straightforward as possible so that you\nwon't have to struggle to work out where a particular piece of information is\ncoming from.\n\nField name \"hiding\" is not permitted\n-------------------------------------\n\nIn normal Python class inheritance, it is permissible for a child class to\noverride any attribute from the parent class. In Django, this is not permitted\nfor attributes that are :class:`~django.db.models.Field` instances (at\nleast, not at the moment). If a base class has a field called ``author``, you\ncannot create another model field called ``author`` in any class that inherits\nfrom that base class.\n\nOverriding fields in a parent model leads to difficulties in areas such as\ninitializing new instances (specifying which field is being initialized in\n``Model.__init__``) and serialization. These are features which normal Python\nclass inheritance doesn't have to deal with in quite the same way, so the\ndifference between Django model inheritance and Python class inheritance isn't\narbitrary.\n\nThis restriction only applies to attributes which are\n:class:`~django.db.models.Field` instances. Normal Python attributes\ncan be overridden if you wish. It also only applies to the name of the\nattribute as Python sees it: if you are manually specifying the database\ncolumn name, you can have the same column name appearing in both a child and\nan ancestor model for multi-table inheritance (they are columns in two\ndifferent database tables).\n\nDjango will raise a :exc:`~django.core.exceptions.FieldError` if you override\nany model field in any ancestor model.\n"
  },
  {
    "path": "Django-1.5.1/docs/topics/db/multi-db.txt",
    "content": "==================\nMultiple databases\n==================\n\nThis topic guide describes Django's support for interacting with\nmultiple databases. Most of the rest of Django's documentation assumes\nyou are interacting with a single database. If you want to interact\nwith multiple databases, you'll need to take some additional steps.\n\nDefining your databases\n=======================\n\nThe first step to using more than one database with Django is to tell\nDjango about the database servers you'll be using. This is done using\nthe :setting:`DATABASES` setting. This setting maps database aliases,\nwhich are a way to refer to a specific database throughout Django, to\na dictionary of settings for that specific connection. The settings in\nthe inner dictionaries are described fully in the :setting:`DATABASES`\ndocumentation.\n\nDatabases can have any alias you choose. However, the alias\n``default`` has special significance. Django uses the database with\nthe alias of ``default`` when no other database has been selected.\n\nThe following is an example ``settings.py`` snippet defining two\ndatabases -- a default PostgreSQL database and a MySQL database called\n``users``:\n\n.. code-block:: python\n\n    DATABASES = {\n        'default': {\n            'NAME': 'app_data',\n            'ENGINE': 'django.db.backends.postgresql_psycopg2',\n            'USER': 'postgres_user',\n            'PASSWORD': 's3krit'\n        },\n        'users': {\n            'NAME': 'user_data',\n            'ENGINE': 'django.db.backends.mysql',\n            'USER': 'mysql_user',\n            'PASSWORD': 'priv4te'\n        }\n    }\n\nIf the concept of a ``default`` database doesn't make sense in the context\nof your project, you need to be careful to always specify the database\nthat you want to use. Django requires that a ``default`` database entry\nbe defined, but the parameters dictionary can be left blank if it will not be\nused. The following is an example ``settings.py`` snippet defining two\nnon-default databases, with the ``default`` entry intentionally left empty::\n\n    DATABASES = {\n        'default': {},\n        'users': {\n            'NAME': 'user_data',\n            'ENGINE': 'django.db.backends.mysql',\n            'USER': 'mysql_user',\n            'PASSWORD': 'superS3cret'\n        },\n        'customers': {\n            'NAME': 'customer_data',\n            'ENGINE': 'django.db.backends.mysql',\n            'USER': 'mysql_cust',\n            'PASSWORD': 'veryPriv@ate'\n        }\n    }\n\nIf you attempt to access a database that you haven't defined in your\n:setting:`DATABASES` setting, Django will raise a\n``django.db.utils.ConnectionDoesNotExist`` exception.\n\nSynchronizing your databases\n============================\n\nThe :djadmin:`syncdb` management command operates on one database at a\ntime. By default, it operates on the ``default`` database, but by\nproviding a :djadminopt:`--database` argument, you can tell syncdb to\nsynchronize a different database. So, to synchronize all models onto\nall databases in our example, you would need to call::\n\n    $ ./manage.py syncdb\n    $ ./manage.py syncdb --database=users\n\nIf you don't want every application to be synchronized onto a\nparticular database, you can define a :ref:`database\nrouter<topics-db-multi-db-routing>` that implements a policy\nconstraining the availability of particular models.\n\nAlternatively, if you want fine-grained control of synchronization,\nyou can pipe all or part of the output of :djadmin:`sqlall` for a\nparticular application directly into your database prompt, like this::\n\n    $ ./manage.py sqlall sales | ./manage.py dbshell\n\nUsing other management commands\n-------------------------------\n\nThe other ``django-admin.py`` commands that interact with the database\noperate in the same way as :djadmin:`syncdb` -- they only ever operate\non one database at a time, using :djadminopt:`--database` to control\nthe database used.\n\n.. _topics-db-multi-db-routing:\n\nAutomatic database routing\n==========================\n\nThe easiest way to use multiple databases is to set up a database\nrouting scheme. The default routing scheme ensures that objects remain\n'sticky' to their original database (i.e., an object retrieved from\nthe ``foo`` database will be saved on the same database). The default\nrouting scheme ensures that if a database isn't specified, all queries\nfall back to the ``default`` database.\n\nYou don't have to do anything to activate the default routing scheme\n-- it is provided 'out of the box' on every Django project. However,\nif you want to implement more interesting database allocation\nbehaviors, you can define and install your own database routers.\n\nDatabase routers\n----------------\n\nA database Router is a class that provides up to four methods:\n\n.. method:: db_for_read(model, **hints)\n\n    Suggest the database that should be used for read operations for\n    objects of type ``model``.\n\n    If a database operation is able to provide any additional\n    information that might assist in selecting a database, it will be\n    provided in the ``hints`` dictionary. Details on valid hints are\n    provided :ref:`below <topics-db-multi-db-hints>`.\n\n    Returns None if there is no suggestion.\n\n.. method:: db_for_write(model, **hints)\n\n    Suggest the database that should be used for writes of objects of\n    type Model.\n\n    If a database operation is able to provide any additional\n    information that might assist in selecting a database, it will be\n    provided in the ``hints`` dictionary. Details on valid hints are\n    provided :ref:`below <topics-db-multi-db-hints>`.\n\n    Returns None if there is no suggestion.\n\n.. method:: allow_relation(obj1, obj2, **hints)\n\n    Return True if a relation between obj1 and obj2 should be\n    allowed, False if the relation should be prevented, or None if\n    the router has no opinion. This is purely a validation operation,\n    used by foreign key and many to many operations to determine if a\n    relation should be allowed between two objects.\n\n.. method:: allow_syncdb(db, model)\n\n    Determine if the ``model`` should be synchronized onto the\n    database with alias ``db``. Return True if the model should be\n    synchronized, False if it should not be synchronized, or None if\n    the router has no opinion. This method can be used to determine\n    the availability of a model on a given database.\n\nA router doesn't have to provide *all* these methods -- it may omit one\nor more of them. If one of the methods is omitted, Django will skip\nthat router when performing the relevant check.\n\n.. _topics-db-multi-db-hints:\n\nHints\n~~~~~\n\nThe hints received by the database router can be used to decide which\ndatabase should receive a given request.\n\nAt present, the only hint that will be provided is ``instance``, an\nobject instance that is related to the read or write operation that is\nunderway. This might be the instance that is being saved, or it might\nbe an instance that is being added in a many-to-many relation. In some\ncases, no instance hint will be provided at all. The router checks for\nthe existence of an instance hint, and determine if that hint should be\nused to alter routing behavior.\n\nUsing routers\n-------------\n\nDatabase routers are installed using the :setting:`DATABASE_ROUTERS`\nsetting. This setting defines a list of class names, each specifying a\nrouter that should be used by the master router\n(``django.db.router``).\n\nThe master router is used by Django's database operations to allocate\ndatabase usage. Whenever a query needs to know which database to use,\nit calls the master router, providing a model and a hint (if\navailable). Django then tries each router in turn until a database\nsuggestion can be found. If no suggestion can be found, it tries the\ncurrent ``_state.db`` of the hint instance. If a hint instance wasn't\nprovided, or the instance doesn't currently have database state, the\nmaster router will allocate the ``default`` database.\n\nAn example\n----------\n\n.. admonition:: Example purposes only!\n\n    This example is intended as a demonstration of how the router\n    infrastructure can be used to alter database usage. It\n    intentionally ignores some complex issues in order to\n    demonstrate how routers are used.\n\n    This example won't work if any of the models in ``myapp`` contain\n    relationships to models outside of the ``other`` database.\n    :ref:`Cross-database relationships <no_cross_database_relations>`\n    introduce referential integrity problems that Django can't\n    currently handle.\n\n    The master/slave configuration described is also flawed -- it\n    doesn't provide any solution for handling replication lag (i.e.,\n    query inconsistencies introduced because of the time taken for a\n    write to propagate to the slaves). It also doesn't consider the\n    interaction of transactions with the database utilization strategy.\n\nSo - what does this mean in practice? Let's consider another sample\nconfiguration. This one will have several databases: one for the\n``auth`` application, and all other apps using a master/slave setup\nwith two read slaves. Here are the settings specifying these\ndatabases::\n\n    DATABASES = {\n        'auth_db': {\n            'NAME': 'auth_db',\n            'ENGINE': 'django.db.backends.mysql',\n            'USER': 'mysql_user',\n            'PASSWORD': 'swordfish',\n        },\n        'master': {\n            'NAME': 'master',\n            'ENGINE': 'django.db.backends.mysql',\n            'USER': 'mysql_user',\n            'PASSWORD': 'spam',\n        },\n        'slave1': {\n            'NAME': 'slave1',\n            'ENGINE': 'django.db.backends.mysql',\n            'USER': 'mysql_user',\n            'PASSWORD': 'eggs',\n        },\n        'slave2': {\n            'NAME': 'slave2',\n            'ENGINE': 'django.db.backends.mysql',\n            'USER': 'mysql_user',\n            'PASSWORD': 'bacon',\n        },\n    }\n\nNow we'll need to handle routing. First we want a router that knows to\nsend queries for the ``auth`` app to ``auth_db``::\n\n    class AuthRouter(object):\n        \"\"\"\n        A router to control all database operations on models in the\n        auth application.\n        \"\"\"\n        def db_for_read(self, model, **hints):\n            \"\"\"\n            Attempts to read auth models go to auth_db.\n            \"\"\"\n            if model._meta.app_label == 'auth':\n                return 'auth_db'\n            return None\n\n        def db_for_write(self, model, **hints):\n            \"\"\"\n            Attempts to write auth models go to auth_db.\n            \"\"\"\n            if model._meta.app_label == 'auth':\n                return 'auth_db'\n            return None\n\n        def allow_relation(self, obj1, obj2, **hints):\n            \"\"\"\n            Allow relations if a model in the auth app is involved.\n            \"\"\"\n            if obj1._meta.app_label == 'auth' or \\\n               obj2._meta.app_label == 'auth':\n               return True\n            return None\n\n        def allow_syncdb(self, db, model):\n            \"\"\"\n            Make sure the auth app only appears in the 'auth_db'\n            database.\n            \"\"\"\n            if db == 'auth_db':\n                return model._meta.app_label == 'auth'\n            elif model._meta.app_label == 'auth':\n                return False\n            return None\n\nAnd we also want a router that sends all other apps to the\nmaster/slave configuration, and randomly chooses a slave to read\nfrom::\n\n    import random\n\n    class MasterSlaveRouter(object):\n        def db_for_read(self, model, **hints):\n            \"\"\"\n            Reads go to a randomly-chosen slave.\n            \"\"\"\n            return random.choice(['slave1', 'slave2'])\n\n        def db_for_write(self, model, **hints):\n            \"\"\"\n            Writes always go to master.\n            \"\"\"\n            return 'master'\n\n        def allow_relation(self, obj1, obj2, **hints):\n            \"\"\"\n            Relations between objects are allowed if both objects are\n            in the master/slave pool.\n            \"\"\"\n            db_list = ('master', 'slave1', 'slave2')\n            if obj1.state.db in db_list and obj2.state.db in db_list:\n                return True\n            return None\n\n        def allow_syncdb(self, db, model):\n            \"\"\"\n            All non-auth models end up in this pool.\n            \"\"\"\n            return True\n\nFinally, in the settings file, we add the following (substituting\n``path.to.`` with the actual python path to the module(s) where the\nrouters are defined)::\n\n    DATABASE_ROUTERS = ['path.to.AuthRouter', 'path.to.MasterSlaveRouter']\n\nThe order in which routers are processed is significant. Routers will\nbe queried in the order the are listed in the\n:setting:`DATABASE_ROUTERS` setting . In this example, the\n``AuthRouter`` is processed before the ``MasterSlaveRouter``, and as a\nresult, decisions concerning the models in ``auth`` are processed\nbefore any other decision is made. If the :setting:`DATABASE_ROUTERS`\nsetting listed the two routers in the other order,\n``MasterSlaveRouter.allow_syncdb()`` would be processed first. The\ncatch-all nature of the MasterSlaveRouter implementation would mean\nthat all models would be available on all databases.\n\nWith this setup installed, lets run some Django code::\n\n    >>> # This retrieval will be performed on the 'auth_db' database\n    >>> fred = User.objects.get(username='fred')\n    >>> fred.first_name = 'Frederick'\n\n    >>> # This save will also be directed to 'auth_db'\n    >>> fred.save()\n\n    >>> # These retrieval will be randomly allocated to a slave database\n    >>> dna = Person.objects.get(name='Douglas Adams')\n\n    >>> # A new object has no database allocation when created\n    >>> mh = Book(title='Mostly Harmless')\n\n    >>> # This assignment will consult the router, and set mh onto\n    >>> # the same database as the author object\n    >>> mh.author = dna\n\n    >>> # This save will force the 'mh' instance onto the master database...\n    >>> mh.save()\n\n    >>> # ... but if we re-retrieve the object, it will come back on a slave\n    >>> mh = Book.objects.get(title='Mostly Harmless')\n\n\nManually selecting a database\n=============================\n\nDjango also provides an API that allows you to maintain complete control\nover database usage in your code. A manually specified database allocation\nwill take priority over a database allocated by a router.\n\nManually selecting a database for a ``QuerySet``\n------------------------------------------------\n\nYou can select the database for a ``QuerySet`` at any point in the\n``QuerySet`` \"chain.\" Just call ``using()`` on the ``QuerySet`` to get\nanother ``QuerySet`` that uses the specified database.\n\n``using()`` takes a single argument: the alias of the database on\nwhich you want to run the query. For example::\n\n    >>> # This will run on the 'default' database.\n    >>> Author.objects.all()\n\n    >>> # So will this.\n    >>> Author.objects.using('default').all()\n\n    >>> # This will run on the 'other' database.\n    >>> Author.objects.using('other').all()\n\nSelecting a database for ``save()``\n-----------------------------------\n\nUse the ``using`` keyword to ``Model.save()`` to specify to which\ndatabase the data should be saved.\n\nFor example, to save an object to the ``legacy_users`` database, you'd\nuse this::\n\n    >>> my_object.save(using='legacy_users')\n\nIf you don't specify ``using``, the ``save()`` method will save into\nthe default database allocated by the routers.\n\nMoving an object from one database to another\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nIf you've saved an instance to one database, it might be tempting to\nuse ``save(using=...)`` as a way to migrate the instance to a new\ndatabase. However, if you don't take appropriate steps, this could\nhave some unexpected consequences.\n\nConsider the following example::\n\n    >>> p = Person(name='Fred')\n    >>> p.save(using='first')  # (statement 1)\n    >>> p.save(using='second') # (statement 2)\n\nIn statement 1, a new ``Person`` object is saved to the ``first``\ndatabase. At this time, ``p`` doesn't have a primary key, so Django\nissues a SQL ``INSERT`` statement. This creates a primary key, and\nDjango assigns that primary key to ``p``.\n\nWhen the save occurs in statement 2, ``p`` already has a primary key\nvalue, and Django will attempt to use that primary key on the new\ndatabase. If the primary key value isn't in use in the ``second``\ndatabase, then you won't have any problems -- the object will be\ncopied to the new database.\n\nHowever, if the primary key of ``p`` is already in use on the\n``second`` database, the existing object in the ``second`` database\nwill be overridden when ``p`` is saved.\n\nYou can avoid this in two ways. First, you can clear the primary key\nof the instance. If an object has no primary key, Django will treat it\nas a new object, avoiding any loss of data on the ``second``\ndatabase::\n\n    >>> p = Person(name='Fred')\n    >>> p.save(using='first')\n    >>> p.pk = None # Clear the primary key.\n    >>> p.save(using='second') # Write a completely new object.\n\nThe second option is to use the ``force_insert`` option to ``save()``\nto ensure that Django does a SQL ``INSERT``::\n\n    >>> p = Person(name='Fred')\n    >>> p.save(using='first')\n    >>> p.save(using='second', force_insert=True)\n\nThis will ensure that the person named ``Fred`` will have the same\nprimary key on both databases. If that primary key is already in use\nwhen you try to save onto the ``second`` database, an error will be\nraised.\n\nSelecting a database to delete from\n-----------------------------------\n\nBy default, a call to delete an existing object will be executed on\nthe same database that was used to retrieve the object in the first\nplace::\n\n    >>> u = User.objects.using('legacy_users').get(username='fred')\n    >>> u.delete() # will delete from the `legacy_users` database\n\nTo specify the database from which a model will be deleted, pass a\n``using`` keyword argument to the ``Model.delete()`` method. This\nargument works just like the ``using`` keyword argument to ``save()``.\n\nFor example, if you're migrating a user from the ``legacy_users``\ndatabase to the ``new_users`` database, you might use these commands::\n\n    >>> user_obj.save(using='new_users')\n    >>> user_obj.delete(using='legacy_users')\n\nUsing managers with multiple databases\n--------------------------------------\n\nUse the ``db_manager()`` method on managers to give managers access to\na non-default database.\n\nFor example, say you have a custom manager method that touches the\ndatabase -- ``User.objects.create_user()``. Because ``create_user()``\nis a manager method, not a ``QuerySet`` method, you can't do\n``User.objects.using('new_users').create_user()``. (The\n``create_user()`` method is only available on ``User.objects``, the\nmanager, not on ``QuerySet`` objects derived from the manager.) The\nsolution is to use ``db_manager()``, like this::\n\n    User.objects.db_manager('new_users').create_user(...)\n\n``db_manager()`` returns a copy of the manager bound to the database you specify.\n\nUsing ``get_query_set()`` with multiple databases\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nIf you're overriding ``get_query_set()`` on your manager, be sure to\neither call the method on the parent (using ``super()``) or do the\nappropriate handling of the ``_db`` attribute on the manager (a string\ncontaining the name of the database to use).\n\nFor example, if you want to return a custom ``QuerySet`` class from\nthe ``get_query_set`` method, you could do this::\n\n    class MyManager(models.Manager):\n        def get_query_set(self):\n            qs = CustomQuerySet(self.model)\n            if self._db is not None:\n                qs = qs.using(self._db)\n            return qs\n\nExposing multiple databases in Django's admin interface\n=======================================================\n\nDjango's admin doesn't have any explicit support for multiple\ndatabases. If you want to provide an admin interface for a model on a\ndatabase other than that specified by your router chain, you'll\nneed to write custom :class:`~django.contrib.admin.ModelAdmin` classes\nthat will direct the admin to use a specific database for content.\n\n``ModelAdmin`` objects have five methods that require customization for\nmultiple-database support::\n\n    class MultiDBModelAdmin(admin.ModelAdmin):\n        # A handy constant for the name of the alternate database.\n        using = 'other'\n\n        def save_model(self, request, obj, form, change):\n            # Tell Django to save objects to the 'other' database.\n            obj.save(using=self.using)\n\n        def delete_model(self, request, obj):\n            # Tell Django to delete objects from the 'other' database\n            obj.delete(using=self.using)\n\n        def queryset(self, request):\n            # Tell Django to look for objects on the 'other' database.\n            return super(MultiDBModelAdmin, self).queryset(request).using(self.using)\n\n        def formfield_for_foreignkey(self, db_field, request=None, **kwargs):\n            # Tell Django to populate ForeignKey widgets using a query\n            # on the 'other' database.\n            return super(MultiDBModelAdmin, self).formfield_for_foreignkey(db_field, request=request, using=self.using, **kwargs)\n\n        def formfield_for_manytomany(self, db_field, request=None, **kwargs):\n            # Tell Django to populate ManyToMany widgets using a query\n            # on the 'other' database.\n            return super(MultiDBModelAdmin, self).formfield_for_manytomany(db_field, request=request, using=self.using, **kwargs)\n\nThe implementation provided here implements a multi-database strategy\nwhere all objects of a given type are stored on a specific database\n(e.g., all ``User`` objects are in the ``other`` database). If your\nusage of multiple databases is more complex, your ``ModelAdmin`` will\nneed to reflect that strategy.\n\nInlines can be handled in a similar fashion. They require three customized methods::\n\n    class MultiDBTabularInline(admin.TabularInline):\n        using = 'other'\n\n        def queryset(self, request):\n            # Tell Django to look for inline objects on the 'other' database.\n            return super(MultiDBTabularInline, self).queryset(request).using(self.using)\n\n        def formfield_for_foreignkey(self, db_field, request=None, **kwargs):\n            # Tell Django to populate ForeignKey widgets using a query\n            # on the 'other' database.\n            return super(MultiDBTabularInline, self).formfield_for_foreignkey(db_field, request=request, using=self.using, **kwargs)\n\n        def formfield_for_manytomany(self, db_field, request=None, **kwargs):\n            # Tell Django to populate ManyToMany widgets using a query\n            # on the 'other' database.\n            return super(MultiDBTabularInline, self).formfield_for_manytomany(db_field, request=request, using=self.using, **kwargs)\n\nOnce you've written your model admin definitions, they can be\nregistered with any ``Admin`` instance::\n\n    from django.contrib import admin\n\n    # Specialize the multi-db admin objects for use with specific models.\n    class BookInline(MultiDBTabularInline):\n        model = Book\n\n    class PublisherAdmin(MultiDBModelAdmin):\n        inlines = [BookInline]\n\n    admin.site.register(Author, MultiDBModelAdmin)\n    admin.site.register(Publisher, PublisherAdmin)\n\n    othersite = admin.AdminSite('othersite')\n    othersite.register(Publisher, MultiDBModelAdmin)\n\nThis example sets up two admin sites. On the first site, the\n``Author`` and ``Publisher`` objects are exposed; ``Publisher``\nobjects have an tabular inline showing books published by that\npublisher. The second site exposes just publishers, without the\ninlines.\n\nUsing raw cursors with multiple databases\n=========================================\n\nIf you are using more than one database you can use\n``django.db.connections`` to obtain the connection (and cursor) for a\nspecific database. ``django.db.connections`` is a dictionary-like\nobject that allows you to retrieve a specific connection using its\nalias::\n\n    from django.db import connections\n    cursor = connections['my_db_alias'].cursor()\n\nLimitations of multiple databases\n=================================\n\n.. _no_cross_database_relations:\n\nCross-database relations\n------------------------\n\nDjango doesn't currently provide any support for foreign key or\nmany-to-many relationships spanning multiple databases. If you\nhave used a router to partition models to different databases,\nany foreign key and many-to-many relationships defined by those\nmodels must be internal to a single database.\n\nThis is because of referential integrity. In order to maintain a\nrelationship between two objects, Django needs to know that the\nprimary key of the related object is valid. If the primary key is\nstored on a separate database, it's not possible to easily evaluate\nthe validity of a primary key.\n\nIf you're using Postgres, Oracle, or MySQL with InnoDB, this is\nenforced at the database integrity level -- database level key\nconstraints prevent the creation of relations that can't be validated.\n\nHowever, if you're using SQLite or MySQL with MyISAM tables, there is\nno enforced referential integrity; as a result, you may be able to\n'fake' cross database foreign keys. However, this configuration is not\nofficially supported by Django.\n\n.. _contrib_app_multiple_databases:\n\nBehavior of contrib apps\n------------------------\n\nSeveral contrib apps include models, and some apps depend on others. Since\ncross-database relationships are impossible, this creates some restrictions on\nhow you can split these models across databases:\n\n- each one of ``contenttypes.ContentType``, ``sessions.Session`` and\n  ``sites.Site`` can be stored in any database, given a suitable router.\n- ``auth`` models — ``User``, ``Group`` and ``Permission`` — are linked\n  together and linked to ``ContentType``, so they must be stored in the same\n  database as ``ContentType``.\n- ``admin`` and ``comments`` depend on ``auth``, so their models must be in\n  the same database as ``auth``.\n- ``flatpages`` and ``redirects`` depend on ``sites``, so their models must be\n  in the same database as ``sites``.\n\nIn addition, some objects are automatically created just after\n:djadmin:`syncdb` creates a table to hold them in a database:\n\n- a default ``Site``,\n- a ``ContentType`` for each model (including those not stored in that\n  database),\n- three ``Permission`` for each model (including those not stored in that\n  database).\n\n.. versionchanged:: 1.5\n    Previously, ``ContentType`` and ``Permission`` instances were created only\n    in the default database.\n\nFor common setups with multiple databases, it isn't useful to have these\nobjects in more than one database. Common setups include master / slave and\nconnecting to external databases. Therefore, it's recommended:\n\n- either to run :djadmin:`syncdb` only for the default database;\n- or to write :ref:`database router<topics-db-multi-db-routing>` that allows\n  synchronizing these three models only to one database.\n\n.. warning::\n\n    If you're synchronizing content types to more that one database, be aware\n    that their primary keys may not match across databases. This may result in\n    data corruption or data loss.\n"
  },
  {
    "path": "Django-1.5.1/docs/topics/db/optimization.txt",
    "content": "============================\nDatabase access optimization\n============================\n\nDjango's database layer provides various ways to help developers get the most\nout of their databases. This document gathers together links to the relevant\ndocumentation, and adds various tips, organized under a number of headings that\noutline the steps to take when attempting to optimize your database usage.\n\nProfile first\n=============\n\nAs general programming practice, this goes without saying. Find out :ref:`what\nqueries you are doing and what they are costing you\n<faq-see-raw-sql-queries>`. You may also want to use an external project like\ndjango-debug-toolbar_, or a tool that monitors your database directly.\n\nRemember that you may be optimizing for speed or memory or both, depending on\nyour requirements. Sometimes optimizing for one will be detrimental to the\nother, but sometimes they will help each other. Also, work that is done by the\ndatabase process might not have the same cost (to you) as the same amount of\nwork done in your Python process. It is up to you to decide what your\npriorities are, where the balance must lie, and profile all of these as required\nsince this will depend on your application and server.\n\nWith everything that follows, remember to profile after every change to ensure\nthat the change is a benefit, and a big enough benefit given the decrease in\nreadability of your code. **All** of the suggestions below come with the caveat\nthat in your circumstances the general principle might not apply, or might even\nbe reversed.\n\n.. _django-debug-toolbar: https://github.com/django-debug-toolbar/django-debug-toolbar/\n\nUse standard DB optimization techniques\n=======================================\n\n...including:\n\n* Indexes. This is a number one priority, *after* you have determined from\n  profiling what indexes should be added. Use\n  :attr:`django.db.models.Field.db_index` to add these from Django.\n\n* Appropriate use of field types.\n\nWe will assume you have done the obvious things above. The rest of this document\nfocuses on how to use Django in such a way that you are not doing unnecessary\nwork. This document also does not address other optimization techniques that\napply to all expensive operations, such as :doc:`general purpose caching\n</topics/cache>`.\n\nUnderstand QuerySets\n====================\n\nUnderstanding :doc:`QuerySets </ref/models/querysets>` is vital to getting good\nperformance with simple code. In particular:\n\nUnderstand QuerySet evaluation\n------------------------------\n\nTo avoid performance problems, it is important to understand:\n\n* that :ref:`QuerySets are lazy <querysets-are-lazy>`.\n\n* when :ref:`they are evaluated <when-querysets-are-evaluated>`.\n\n* how :ref:`the data is held in memory <caching-and-querysets>`.\n\nUnderstand cached attributes\n----------------------------\n\nAs well as caching of the whole ``QuerySet``, there is caching of the result of\nattributes on ORM objects. In general, attributes that are not callable will be\ncached. For example, assuming the :ref:`example Weblog models\n<queryset-model-example>`::\n\n  >>> entry = Entry.objects.get(id=1)\n  >>> entry.blog   # Blog object is retrieved at this point\n  >>> entry.blog   # cached version, no DB access\n\nBut in general, callable attributes cause DB lookups every time::\n\n  >>> entry = Entry.objects.get(id=1)\n  >>> entry.authors.all()   # query performed\n  >>> entry.authors.all()   # query performed again\n\nBe careful when reading template code - the template system does not allow use\nof parentheses, but will call callables automatically, hiding the above\ndistinction.\n\nBe careful with your own custom properties - it is up to you to implement\ncaching.\n\nUse the ``with`` template tag\n-----------------------------\n\nTo make use of the caching behavior of ``QuerySet``, you may need to use the\n:ttag:`with` template tag.\n\nUse ``iterator()``\n------------------\n\nWhen you have a lot of objects, the caching behavior of the ``QuerySet`` can\ncause a large amount of memory to be used. In this case,\n:meth:`~django.db.models.query.QuerySet.iterator()` may help.\n\nDo database work in the database rather than in Python\n======================================================\n\nFor instance:\n\n* At the most basic level, use :ref:`filter and exclude <queryset-api>` to do\n  filtering in the database.\n\n* Use :ref:`F() object query expressions <query-expressions>` to do filtering\n  against other fields within the same model.\n\n* Use :doc:`annotate to do aggregation in the database </topics/db/aggregation>`.\n\nIf these aren't enough to generate the SQL you need:\n\nUse ``QuerySet.extra()``\n------------------------\n\nA less portable but more powerful method is\n:meth:`~django.db.models.query.QuerySet.extra()`, which allows some SQL to be\nexplicitly added to the query. If that still isn't powerful enough:\n\nUse raw SQL\n-----------\n\nWrite your own :doc:`custom SQL to retrieve data or populate models\n</topics/db/sql>`. Use ``django.db.connection.queries`` to find out what Django\nis writing for you and start from there.\n\nRetrieve individual objects using a unique, indexed column\n==========================================================\n\nThere are two reasons to use a column with\n:attr:`~django.db.models.Field.unique` or\n:attr:`~django.db.models.Field.db_index` when using\n:meth:`~django.db.models.query.QuerySet.get` to retrieve individual objects.\nFirst, the query will be quicker because of the underlying database index.\nAlso, the query could run much slower if multiple objects match the lookup;\nhaving a unique constraint on the column guarantees this will never happen.\n\nSo using the :ref:`example Weblog models <queryset-model-example>`::\n\n  >>> entry = Entry.objects.get(id=10)\n\nwill be quicker than:\n\n  >>> entry = Entry.object.get(headline=\"News Item Title\")\n\nbecause ``id`` is indexed by the database and is guaranteed to be unique.\n\nDoing the following is potentially quite slow:\n\n  >>> entry = Entry.objects.get(headline__startswith=\"News\")\n\nFirst of all, ``headline`` is not indexed, which will make the underlying\ndatabase fetch slower.\n\nSecond, the lookup doesn't guarantee that only one object will be returned.\nIf the query matches more than one object, it will retrieve and transfer all of\nthem from the database. This penalty could be substantial if hundreds or\nthousands of records are returned. The penalty will be compounded if the\ndatabase lives on a separate server, where network overhead and latency also\nplay a factor.\n\nRetrieve everything at once if you know you will need it\n========================================================\n\nHitting the database multiple times for different parts of a single 'set' of\ndata that you will need all parts of is, in general, less efficient than\nretrieving it all in one query. This is particularly important if you have a\nquery that is executed in a loop, and could therefore end up doing many database\nqueries, when only one was needed. So:\n\nUse ``QuerySet.select_related()`` and ``prefetch_related()``\n------------------------------------------------------------\n\nUnderstand :meth:`~django.db.models.query.QuerySet.select_related` and\n:meth:`~django.db.models.query.QuerySet.prefetch_related` thoroughly, and use\nthem:\n\n* in view code,\n\n* and in :doc:`managers and default managers </topics/db/managers>` where\n  appropriate. Be aware when your manager is and is not used; sometimes this is\n  tricky so don't make assumptions.\n\nDon't retrieve things you don't need\n====================================\n\nUse ``QuerySet.values()`` and ``values_list()``\n-----------------------------------------------\n\nWhen you just want a ``dict`` or ``list`` of values, and don't need ORM model\nobjects, make appropriate usage of\n:meth:`~django.db.models.query.QuerySet.values()`.\nThese can be useful for replacing model objects in template code - as long as\nthe dicts you supply have the same attributes as those used in the template,\nyou are fine.\n\nUse ``QuerySet.defer()`` and ``only()``\n---------------------------------------\n\nUse :meth:`~django.db.models.query.QuerySet.defer()` and\n:meth:`~django.db.models.query.QuerySet.only()` if there are database columns\nyou know that you won't need (or won't need in most cases) to avoid loading\nthem. Note that if you *do* use them, the ORM will have to go and get them in\na separate query, making this a pessimization if you use it inappropriately.\n\nAlso, be aware that there is some (small extra) overhead incurred inside\nDjango when constructing a model with deferred fields. Don't be too aggressive\nin deferring fields without profiling as the database has to read most of the\nnon-text, non-VARCHAR data from the disk for a single row in the results, even\nif it ends up only using a few columns. The ``defer()`` and ``only()`` methods\nare most useful when you can avoid loading a lot of text data or for fields\nthat might take a lot of processing to convert back to Python. As always,\nprofile first, then optimize.\n\nUse QuerySet.count()\n--------------------\n\n...if you only want the count, rather than doing ``len(queryset)``.\n\nUse QuerySet.exists()\n---------------------\n\n...if you only want to find out if at least one result exists, rather than ``if\nqueryset``.\n\nBut:\n\nDon't overuse ``count()`` and ``exists()``\n------------------------------------------\n\nIf you are going to need other data from the QuerySet, just evaluate it.\n\nFor example, assuming an Email model that has a ``body`` attribute and a\nmany-to-many relation to User, the following template code is optimal:\n\n.. code-block:: html+django\n\n   {% if display_inbox %}\n     {% with emails=user.emails.all %}\n       {% if emails %}\n         <p>You have {{ emails|length }} email(s)</p>\n         {% for email in emails %}\n           <p>{{ email.body }}</p>\n         {% endfor %}\n       {% else %}\n         <p>No messages today.</p>\n       {% endif %}\n     {% endwith %}\n   {% endif %}\n\n\nIt is optimal because:\n\n1. Since QuerySets are lazy, this does no database queries if 'display_inbox'\n   is False.\n\n#. Use of :ttag:`with` means that we store ``user.emails.all`` in a variable\n   for later use, allowing its cache to be re-used.\n\n#. The line ``{% if emails %}`` causes ``QuerySet.__bool__()`` to be called,\n   which causes the ``user.emails.all()`` query to be run on the database, and\n   at the least the first line to be turned into an ORM object. If there aren't\n   any results, it will return False, otherwise True.\n\n#. The use of ``{{ emails|length }}`` calls ``QuerySet.__len__()``, filling\n   out the rest of the cache without doing another query.\n\n#. The :ttag:`for` loop iterates over the already filled cache.\n\nIn total, this code does either one or zero database queries. The only\ndeliberate optimization performed is the use of the :ttag:`with` tag. Using\n``QuerySet.exists()`` or ``QuerySet.count()`` at any point would cause\nadditional queries.\n\nUse ``QuerySet.update()`` and ``delete()``\n------------------------------------------\n\nRather than retrieve a load of objects, set some values, and save them\nindividual, use a bulk SQL UPDATE statement, via :ref:`QuerySet.update()\n<topics-db-queries-update>`. Similarly, do :ref:`bulk deletes\n<topics-db-queries-delete>` where possible.\n\nNote, however, that these bulk update methods cannot call the ``save()`` or\n``delete()`` methods of individual instances, which means that any custom\nbehavior you have added for these methods will not be executed, including\nanything driven from the normal database object :doc:`signals </ref/signals>`.\n\nUse foreign key values directly\n-------------------------------\n\nIf you only need a foreign key value, use the foreign key value that is already on\nthe object you've got, rather than getting the whole related object and taking\nits primary key. i.e. do::\n\n   entry.blog_id\n\ninstead of::\n\n   entry.blog.id\n\nInsert in bulk\n==============\n\nWhen creating objects, where possible, use the\n:meth:`~django.db.models.query.QuerySet.bulk_create()` method to reduce the\nnumber of SQL queries. For example::\n\n    Entry.objects.bulk_create([\n        Entry(headline=\"Python 3.0 Released\"),\n        Entry(headline=\"Python 3.1 Planned\")\n    ])\n\n...is preferable to::\n\n    Entry.objects.create(headline=\"Python 3.0 Released\")\n    Entry.objects.create(headline=\"Python 3.1 Planned\")\n\nNote that there are a number of :meth:`caveats to this method\n<django.db.models.query.QuerySet.bulk_create>`, so make sure it's appropriate\nfor your use case.\n\nThis also applies to :class:`ManyToManyFields\n<django.db.models.ManyToManyField>`, so doing::\n\n    my_band.members.add(me, my_friend)\n\n...is preferable to::\n\n    my_band.members.add(me)\n    my_band.members.add(my_friend)\n\n...where ``Bands`` and ``Artists`` have a many-to-many relationship.\n"
  },
  {
    "path": "Django-1.5.1/docs/topics/db/queries.txt",
    "content": "==============\nMaking queries\n==============\n\n.. currentmodule:: django.db.models\n\nOnce you've created your :doc:`data models </topics/db/models>`, Django\nautomatically gives you a database-abstraction API that lets you create,\nretrieve, update and delete objects. This document explains how to use this\nAPI. Refer to the :doc:`data model reference </ref/models/index>` for full\ndetails of all the various model lookup options.\n\nThroughout this guide (and in the reference), we'll refer to the following\nmodels, which comprise a Weblog application:\n\n.. _queryset-model-example:\n\n.. code-block:: python\n\n    class Blog(models.Model):\n        name = models.CharField(max_length=100)\n        tagline = models.TextField()\n\n        def __unicode__(self):\n            return self.name\n\n    class Author(models.Model):\n        name = models.CharField(max_length=50)\n        email = models.EmailField()\n\n        def __unicode__(self):\n            return self.name\n\n    class Entry(models.Model):\n        blog = models.ForeignKey(Blog)\n        headline = models.CharField(max_length=255)\n        body_text = models.TextField()\n        pub_date = models.DateField()\n        mod_date = models.DateField()\n        authors = models.ManyToManyField(Author)\n        n_comments = models.IntegerField()\n        n_pingbacks = models.IntegerField()\n        rating = models.IntegerField()\n\n        def __unicode__(self):\n            return self.headline\n\nCreating objects\n================\n\nTo represent database-table data in Python objects, Django uses an intuitive\nsystem: A model class represents a database table, and an instance of that\nclass represents a particular record in the database table.\n\nTo create an object, instantiate it using keyword arguments to the model class,\nthen call :meth:`~django.db.models.Model.save` to save it to the database.\n\nYou import the model class from wherever it lives on the Python path, as you\nmay expect. (We point this out here because previous Django versions required\nfunky model importing.)\n\nAssuming models live in a file ``mysite/blog/models.py``, here's an example::\n\n    >>> from blog.models import Blog\n    >>> b = Blog(name='Beatles Blog', tagline='All the latest Beatles news.')\n    >>> b.save()\n\nThis performs an ``INSERT`` SQL statement behind the scenes. Django doesn't hit\nthe database until you explicitly call :meth:`~django.db.models.Model.save`.\n\nThe :meth:`~django.db.models.Model.save` method has no return value.\n\n.. seealso::\n\n    :meth:`~django.db.models.Model.save` takes a number of advanced options not\n    described here. See the documentation for\n    :meth:`~django.db.models.Model.save` for complete details.\n\n    To create and save an object in a single step, use the\n    :meth:`~django.db.models.query.QuerySet.create()` method.\n\nSaving changes to objects\n=========================\n\nTo save changes to an object that's already in the database, use\n:meth:`~django.db.models.Model.save`.\n\nGiven a ``Blog`` instance ``b5`` that has already been saved to the database,\nthis example changes its name and updates its record in the database::\n\n    >> b5.name = 'New name'\n    >> b5.save()\n\nThis performs an ``UPDATE`` SQL statement behind the scenes. Django doesn't hit\nthe database until you explicitly call :meth:`~django.db.models.Model.save`.\n\nSaving ``ForeignKey`` and ``ManyToManyField`` fields\n----------------------------------------------------\n\nUpdating a :class:`~django.db.models.ForeignKey` field works exactly the same\nway as saving a normal field -- simply assign an object of the right type to\nthe field in question. This example updates the ``blog`` attribute of an\n``Entry`` instance ``entry``::\n\n    >>> from blog.models import Entry\n    >>> entry = Entry.objects.get(pk=1)\n    >>> cheese_blog = Blog.objects.get(name=\"Cheddar Talk\")\n    >>> entry.blog = cheese_blog\n    >>> entry.save()\n\nUpdating a :class:`~django.db.models.ManyToManyField` works a little\ndifferently -- use the\n:meth:`~django.db.models.fields.related.RelatedManager.add` method on the field\nto add a record to the relation. This example adds the ``Author`` instance\n``joe`` to the ``entry`` object::\n\n    >>> from blog.models import Author\n    >>> joe = Author.objects.create(name=\"Joe\")\n    >>> entry.authors.add(joe)\n\nTo add multiple records to a :class:`~django.db.models.ManyToManyField` in one\ngo, include multiple arguments in the call to\n:meth:`~django.db.models.fields.related.RelatedManager.add`, like this::\n\n    >>> john = Author.objects.create(name=\"John\")\n    >>> paul = Author.objects.create(name=\"Paul\")\n    >>> george = Author.objects.create(name=\"George\")\n    >>> ringo = Author.objects.create(name=\"Ringo\")\n    >>> entry.authors.add(john, paul, george, ringo)\n\nDjango will complain if you try to assign or add an object of the wrong type.\n\nRetrieving objects\n==================\n\nTo retrieve objects from your database, construct a\n:class:`~django.db.models.query.QuerySet` via a\n:class:`~django.db.models.Manager` on your model class.\n\nA :class:`~django.db.models.query.QuerySet` represents a collection of objects\nfrom your database. It can have zero, one or many *filters* -- criteria that\nnarrow down the collection based on given parameters. In SQL terms, a\n:class:`~django.db.models.query.QuerySet` equates to a ``SELECT`` statement,\nand a filter is a limiting clause such as ``WHERE`` or ``LIMIT``.\n\nYou get a :class:`~django.db.models.query.QuerySet` by using your model's\n:class:`~django.db.models.Manager`. Each model has at least one\n:class:`~django.db.models.Manager`, and it's called ``objects`` by\ndefault. Access it directly via the model class, like so::\n\n    >>> Blog.objects\n    <django.db.models.manager.Manager object at ...>\n    >>> b = Blog(name='Foo', tagline='Bar')\n    >>> b.objects\n    Traceback:\n        ...\n    AttributeError: \"Manager isn't accessible via Blog instances.\"\n\n.. note::\n\n    ``Managers`` are accessible only via model classes, rather than from model\n    instances, to enforce a separation between \"table-level\" operations and\n    \"record-level\" operations.\n\nThe :class:`~django.db.models.Manager` is the main source of ``QuerySets`` for\na model. For example, ``Blog.objects.all()`` returns a\n:class:`~django.db.models.query.QuerySet` that contains all ``Blog`` objects in\nthe database.\n\nRetrieving all objects\n----------------------\n\nThe simplest way to retrieve objects from a table is to get all of them. To do\nthis, use the :meth:`~django.db.models.query.QuerySet.all` method on a\n:class:`~django.db.models.Manager`::\n\n    >>> all_entries = Entry.objects.all()\n\nThe :meth:`~django.db.models.query.QuerySet.all` method returns a\n:class:`~django.db.models.query.QuerySet` of all the objects in the database.\n\nRetrieving specific objects with filters\n----------------------------------------\n\nThe :class:`~django.db.models.query.QuerySet` returned by\n:meth:`~django.db.models.query.QuerySet.all` describes all objects in the\ndatabase table. Usually, though, you'll need to select only a subset of the\ncomplete set of objects.\n\nTo create such a subset, you refine the initial\n:class:`~django.db.models.query.QuerySet`, adding filter conditions. The two\nmost common ways to refine a :class:`~django.db.models.query.QuerySet` are:\n\n``filter(**kwargs)``\n    Returns a new :class:`~django.db.models.query.QuerySet` containing objects\n    that match the given lookup parameters.\n\n``exclude(**kwargs)``\n    Returns a new :class:`~django.db.models.query.QuerySet` containing objects\n    that do *not* match the given lookup parameters.\n\nThe lookup parameters (``**kwargs`` in the above function definitions) should\nbe in the format described in `Field lookups`_ below.\n\nFor example, to get a :class:`~django.db.models.query.QuerySet` of blog entries\nfrom the year 2006, use :meth:`~django.db.models.query.QuerySet.filter` like\nso::\n\n    Entry.objects.filter(pub_date__year=2006)\n\nWith the default manager class, it is the same as::\n\n    Entry.objects.all().filter(pub_date__year=2006)\n\n.. _chaining-filters:\n\nChaining filters\n~~~~~~~~~~~~~~~~\n\nThe result of refining a :class:`~django.db.models.query.QuerySet` is itself a\n:class:`~django.db.models.query.QuerySet`, so it's possible to chain\nrefinements together. For example::\n\n    >>> Entry.objects.filter(\n    ...     headline__startswith='What'\n    ... ).exclude(\n    ...     pub_date__gte=datetime.date.today()\n    ... ).filter(\n    ...     pub_date__gte=datetime(2005, 1, 30)\n    ... )\n\nThis takes the initial :class:`~django.db.models.query.QuerySet` of all entries\nin the database, adds a filter, then an exclusion, then another filter. The\nfinal result is a :class:`~django.db.models.query.QuerySet` containing all\nentries with a headline that starts with \"What\", that were published between\nJanuary 30, 2005, and the current day.\n\n.. _filtered-querysets-are-unique:\n\nFiltered QuerySets are unique\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nEach time you refine a :class:`~django.db.models.query.QuerySet`, you get a\nbrand-new :class:`~django.db.models.query.QuerySet` that is in no way bound to\nthe previous :class:`~django.db.models.query.QuerySet`. Each refinement creates\na separate and distinct :class:`~django.db.models.query.QuerySet` that can be\nstored, used and reused.\n\nExample::\n\n    >> q1 = Entry.objects.filter(headline__startswith=\"What\")\n    >> q2 = q1.exclude(pub_date__gte=datetime.date.today())\n    >> q3 = q1.filter(pub_date__gte=datetime.date.today())\n\nThese three ``QuerySets`` are separate. The first is a base\n:class:`~django.db.models.query.QuerySet` containing all entries that contain a\nheadline starting with \"What\". The second is a subset of the first, with an\nadditional criteria that excludes records whose ``pub_date`` is greater than\nnow. The third is a subset of the first, with an additional criteria that\nselects only the records whose ``pub_date`` is greater than now. The initial\n:class:`~django.db.models.query.QuerySet` (``q1``) is unaffected by the\nrefinement process.\n\n.. _querysets-are-lazy:\n\nQuerySets are lazy\n~~~~~~~~~~~~~~~~~~\n\n``QuerySets`` are lazy -- the act of creating a\n:class:`~django.db.models.query.QuerySet` doesn't involve any database\nactivity. You can stack filters together all day long, and Django won't\nactually run the query until the :class:`~django.db.models.query.QuerySet` is\n*evaluated*. Take a look at this example::\n\n    >>> q = Entry.objects.filter(headline__startswith=\"What\")\n    >>> q = q.filter(pub_date__lte=datetime.date.today())\n    >>> q = q.exclude(body_text__icontains=\"food\")\n    >>> print(q)\n\nThough this looks like three database hits, in fact it hits the database only\nonce, at the last line (``print(q)``). In general, the results of a\n:class:`~django.db.models.query.QuerySet` aren't fetched from the database\nuntil you \"ask\" for them. When you do, the\n:class:`~django.db.models.query.QuerySet` is *evaluated* by accessing the\ndatabase. For more details on exactly when evaluation takes place, see\n:ref:`when-querysets-are-evaluated`.\n\n\n.. _retrieving-single-object-with-get:\n\nRetrieving a single object with get\n-----------------------------------\n\n:meth:`~django.db.models.query.QuerySet.filter` will always give you a\n:class:`~django.db.models.query.QuerySet`, even if only a single object matches\nthe query - in this case, it will be a\n:class:`~django.db.models.query.QuerySet` containing a single element.\n\nIf you know there is only one object that matches your query, you can use the\n:meth:`~django.db.models.query.QuerySet.get` method on a\n:class:`~django.db.models.Manager` which returns the object directly::\n\n    >>> one_entry = Entry.objects.get(pk=1)\n\nYou can use any query expression with\n:meth:`~django.db.models.query.QuerySet.get`, just like with\n:meth:`~django.db.models.query.QuerySet.filter` - again, see `Field lookups`_\nbelow.\n\nNote that there is a difference between using\n:meth:`~django.db.models.query.QuerySet.get`, and using\n:meth:`~django.db.models.query.QuerySet.filter` with a slice of ``[0]``. If\nthere are no results that match the query,\n:meth:`~django.db.models.query.QuerySet.get` will raise a ``DoesNotExist``\nexception. This exception is an attribute of the model class that the query is\nbeing performed on - so in the code above, if there is no ``Entry`` object with\na primary key of 1, Django will raise ``Entry.DoesNotExist``.\n\nSimilarly, Django will complain if more than one item matches the\n:meth:`~django.db.models.query.QuerySet.get` query. In this case, it will raise\n:exc:`~django.core.exceptions.MultipleObjectsReturned`, which again is an\nattribute of the model class itself.\n\n\nOther QuerySet methods\n----------------------\n\nMost of the time you'll use :meth:`~django.db.models.query.QuerySet.all`,\n:meth:`~django.db.models.query.QuerySet.get`,\n:meth:`~django.db.models.query.QuerySet.filter` and\n:meth:`~django.db.models.query.QuerySet.exclude` when you need to look up\nobjects from the database. However, that's far from all there is; see the\n:ref:`QuerySet API Reference <queryset-api>` for a complete list of all the\nvarious :class:`~django.db.models.query.QuerySet` methods.\n\n.. _limiting-querysets:\n\nLimiting QuerySets\n------------------\n\nUse a subset of Python's array-slicing syntax to limit your\n:class:`~django.db.models.query.QuerySet` to a certain number of results. This\nis the equivalent of SQL's ``LIMIT`` and ``OFFSET`` clauses.\n\nFor example, this returns the first 5 objects (``LIMIT 5``)::\n\n    >>> Entry.objects.all()[:5]\n\nThis returns the sixth through tenth objects (``OFFSET 5 LIMIT 5``)::\n\n    >>> Entry.objects.all()[5:10]\n\nNegative indexing (i.e. ``Entry.objects.all()[-1]``) is not supported.\n\nGenerally, slicing a :class:`~django.db.models.query.QuerySet` returns a new\n:class:`~django.db.models.query.QuerySet` -- it doesn't evaluate the query. An\nexception is if you use the \"step\" parameter of Python slice syntax. For\nexample, this would actually execute the query in order to return a list of\nevery *second* object of the first 10::\n\n    >>> Entry.objects.all()[:10:2]\n\nTo retrieve a *single* object rather than a list\n(e.g. ``SELECT foo FROM bar LIMIT 1``), use a simple index instead of a\nslice. For example, this returns the first ``Entry`` in the database, after\nordering entries alphabetically by headline::\n\n    >>> Entry.objects.order_by('headline')[0]\n\nThis is roughly equivalent to::\n\n    >>> Entry.objects.order_by('headline')[0:1].get()\n\nNote, however, that the first of these will raise ``IndexError`` while the\nsecond will raise ``DoesNotExist`` if no objects match the given criteria. See\n:meth:`~django.db.models.query.QuerySet.get` for more details.\n\n.. _field-lookups-intro:\n\nField lookups\n-------------\n\nField lookups are how you specify the meat of an SQL ``WHERE`` clause. They're\nspecified as keyword arguments to the :class:`~django.db.models.query.QuerySet`\nmethods :meth:`~django.db.models.query.QuerySet.filter`,\n:meth:`~django.db.models.query.QuerySet.exclude` and\n:meth:`~django.db.models.query.QuerySet.get`.\n\nBasic lookups keyword arguments take the form ``field__lookuptype=value``.\n(That's a double-underscore). For example::\n\n    >>> Entry.objects.filter(pub_date__lte='2006-01-01')\n\ntranslates (roughly) into the following SQL::\n\n    SELECT * FROM blog_entry WHERE pub_date <= '2006-01-01';\n\n.. admonition:: How this is possible\n\n   Python has the ability to define functions that accept arbitrary name-value\n   arguments whose names and values are evaluated at runtime. For more\n   information, see `Keyword Arguments`_ in the official Python tutorial.\n\n   .. _`Keyword Arguments`: http://docs.python.org/tutorial/controlflow.html#keyword-arguments\n\n.. versionchanged:: 1.4\n    The field specified in a lookup has to be the name of a model field.\n    There's one exception though, in case of a\n    :class:`~django.db.models.ForeignKey` you can specify the field\n    name suffixed with ``_id``. In this case, the value parameter is expected\n    to contain the raw value of the foreign model's primary key. For example:\n\n        >>> Entry.objects.filter(blog_id__exact=4)\n\nIf you pass an invalid keyword argument, a lookup function will raise\n``TypeError``.\n\nThe database API supports about two dozen lookup types; a complete reference\ncan be found in the :ref:`field lookup reference <field-lookups>`. To give you\na taste of what's available, here's some of the more common lookups you'll\nprobably use:\n\n:lookup:`exact`\n    An \"exact\" match. For example::\n\n        >>> Entry.objects.get(headline__exact=\"Man bites dog\")\n\n    Would generate SQL along these lines:\n\n    .. code-block:: sql\n\n        SELECT ... WHERE headline = 'Man bites dog';\n\n    If you don't provide a lookup type -- that is, if your keyword argument\n    doesn't contain a double underscore -- the lookup type is assumed to be\n    ``exact``.\n\n    For example, the following two statements are equivalent::\n\n        >>> Blog.objects.get(id__exact=14)  # Explicit form\n        >>> Blog.objects.get(id=14)         # __exact is implied\n\n    This is for convenience, because ``exact`` lookups are the common case.\n\n:lookup:`iexact`\n    A case-insensitive match. So, the query::\n\n        >>> Blog.objects.get(name__iexact=\"beatles blog\")\n\n    Would match a ``Blog`` titled \"Beatles Blog\", \"beatles blog\", or even\n    \"BeAtlES blOG\".\n\n:lookup:`contains`\n    Case-sensitive containment test. For example::\n\n        Entry.objects.get(headline__contains='Lennon')\n\n    Roughly translates to this SQL:\n\n    .. code-block:: sql\n\n        SELECT ... WHERE headline LIKE '%Lennon%';\n\n    Note this will match the headline ``'Today Lennon honored'`` but not\n    ``'today lennon honored'``.\n\n    There's also a case-insensitive version, :lookup:`icontains`.\n\n:lookup:`startswith`, :lookup:`endswith`\n    Starts-with and ends-with search, respectively. There are also\n    case-insensitive versions called :lookup:`istartswith` and\n    :lookup:`iendswith`.\n\nAgain, this only scratches the surface. A complete reference can be found in the\n:ref:`field lookup reference <field-lookups>`.\n\n.. _lookups-that-span-relationships:\n\nLookups that span relationships\n-------------------------------\n\nDjango offers a powerful and intuitive way to \"follow\" relationships in\nlookups, taking care of the SQL ``JOIN``\\s for you automatically, behind the\nscenes. To span a relationship, just use the field name of related fields\nacross models, separated by double underscores, until you get to the field you\nwant.\n\nThis example retrieves all ``Entry`` objects with a ``Blog`` whose ``name``\nis ``'Beatles Blog'``::\n\n    >>> Entry.objects.filter(blog__name__exact='Beatles Blog')\n\nThis spanning can be as deep as you'd like.\n\nIt works backwards, too. To refer to a \"reverse\" relationship, just use the\nlowercase name of the model.\n\nThis example retrieves all ``Blog`` objects which have at least one ``Entry``\nwhose ``headline`` contains ``'Lennon'``::\n\n    >>> Blog.objects.filter(entry__headline__contains='Lennon')\n\nIf you are filtering across multiple relationships and one of the intermediate\nmodels doesn't have a value that meets the filter condition, Django will treat\nit as if there is an empty (all values are ``NULL``), but valid, object there.\nAll this means is that no error will be raised. For example, in this filter::\n\n    Blog.objects.filter(entry__authors__name='Lennon')\n\n(if there was a related ``Author`` model), if there was no ``author``\nassociated with an entry, it would be treated as if there was also no ``name``\nattached, rather than raising an error because of the missing ``author``.\nUsually this is exactly what you want to have happen. The only case where it\nmight be confusing is if you are using :lookup:`isnull`. Thus::\n\n    Blog.objects.filter(entry__authors__name__isnull=True)\n\nwill return ``Blog`` objects that have an empty ``name`` on the ``author`` and\nalso those which have an empty ``author`` on the ``entry``. If you don't want\nthose latter objects, you could write::\n\n    Blog.objects.filter(entry__authors__isnull=False,\n            entry__authors__name__isnull=True)\n\nSpanning multi-valued relationships\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nWhen you are filtering an object based on a\n:class:`~django.db.models.ManyToManyField` or a reverse\n:class:`~django.db.models.ForeignKey`, there are two different sorts of filter\nyou may be interested in. Consider the ``Blog``/``Entry`` relationship\n(``Blog`` to ``Entry`` is a one-to-many relation). We might be interested in\nfinding blogs that have an entry which has both *\"Lennon\"* in the headline and\nwas published in 2008. Or we might want to find blogs that have an entry with\n*\"Lennon\"* in the headline as well as an entry that was published\nin 2008. Since there are multiple entries associated with a single ``Blog``,\nboth of these queries are possible and make sense in some situations.\n\nThe same type of situation arises with a\n:class:`~django.db.models.ManyToManyField`. For example, if an ``Entry`` has a\n:class:`~django.db.models.ManyToManyField` called ``tags``, we might want to\nfind entries linked to tags called *\"music\"* and *\"bands\"* or we might want an\nentry that contains a tag with a name of *\"music\"* and a status of *\"public\"*.\n\nTo handle both of these situations, Django has a consistent way of processing\n:meth:`~django.db.models.query.QuerySet.filter` and\n:meth:`~django.db.models.query.QuerySet.exclude` calls. Everything inside a\nsingle :meth:`~django.db.models.query.QuerySet.filter` call is applied\nsimultaneously to filter out items matching all those requirements. Successive\n:meth:`~django.db.models.query.QuerySet.filter` calls further restrict the set\nof objects, but for multi-valued relations, they apply to any object linked to\nthe primary model, not necessarily those objects that were selected by an\nearlier :meth:`~django.db.models.query.QuerySet.filter` call.\n\nThat may sound a bit confusing, so hopefully an example will clarify. To\nselect all blogs that contain entries with both *\"Lennon\"* in the headline\nand that were published in 2008 (the same entry satisfying both conditions),\nwe would write::\n\n    Blog.objects.filter(entry__headline__contains='Lennon',\n            entry__pub_date__year=2008)\n\nTo select all blogs that contain an entry with *\"Lennon\"* in the headline\n**as well as** an entry that was published in 2008, we would write::\n\n    Blog.objects.filter(entry__headline__contains='Lennon').filter(\n            entry__pub_date__year=2008)\n\nSuppose there is only one blog that had both entries containing *\"Lennon\"* and\nentries from 2008, but that none of the entries from 2008 contained *\"Lennon\"*.\nThe first query would not return any blogs, but the second query would return\nthat one blog.\n\nIn the second example, the first filter restricts the queryset to all those\nblogs linked to entries with *\"Lennon\"* in the headline. The second filter\nrestricts the set of blogs *further* to those that are also linked to entries\nthat were published in 2008. The entries selected by the second filter may or\nmay not be the same as the entries in the first filter. We are filtering the\n``Blog`` items with each filter statement, not the ``Entry`` items.\n\nAll of this behavior also applies to\n:meth:`~django.db.models.query.QuerySet.exclude`: all the conditions in a\nsingle :meth:`~django.db.models.query.QuerySet.exclude` statement apply to a\nsingle instance (if those conditions are talking about the same multi-valued\nrelation). Conditions in subsequent\n:meth:`~django.db.models.query.QuerySet.filter` or\n:meth:`~django.db.models.query.QuerySet.exclude` calls that refer to the same\nrelation may end up filtering on different linked objects.\n\n.. _query-expressions:\n\nFilters can reference fields on the model\n-----------------------------------------\n\n.. class:: F\n\nIn the examples given so far, we have constructed filters that compare\nthe value of a model field with a constant. But what if you want to compare\nthe value of a model field with another field on the same model?\n\nDjango provides the :ref:`F() expressions <query-expressions>` to allow such\ncomparisons. Instances of ``F()`` act as a reference to a model field within a\nquery. These references can then be used in query filters to compare the values\nof two different fields on the same model instance.\n\nFor example, to find a list of all blog entries that have had more comments\nthan pingbacks, we construct an ``F()`` object to reference the pingback count,\nand use that ``F()`` object in the query::\n\n    >>> from django.db.models import F\n    >>> Entry.objects.filter(n_comments__gt=F('n_pingbacks'))\n\nDjango supports the use of addition, subtraction, multiplication,\ndivision and modulo arithmetic with ``F()`` objects, both with constants\nand with other ``F()`` objects. To find all the blog entries with more than\n*twice* as many comments as pingbacks, we modify the query::\n\n    >>> Entry.objects.filter(n_comments__gt=F('n_pingbacks') * 2)\n\nTo find all the entries where the rating of the entry is less than the\nsum of the pingback count and comment count, we would issue the\nquery::\n\n    >>> Entry.objects.filter(rating__lt=F('n_comments') + F('n_pingbacks'))\n\nYou can also use the double underscore notation to span relationships in\nan ``F()`` object. An ``F()`` object with a double underscore will introduce\nany joins needed to access the related object. For example, to retrieve all\nthe entries where the author's name is the same as the blog name, we could\nissue the query::\n\n    >>> Entry.objects.filter(authors__name=F('blog__name'))\n\nFor date and date/time fields, you can add or subtract a\n:class:`~datetime.timedelta` object. The following would return all entries\nthat were modified more than 3 days after they were published::\n\n    >>> from datetime import timedelta\n    >>> Entry.objects.filter(mod_date__gt=F('pub_date') + timedelta(days=3))\n\n.. versionadded:: 1.5\n    ``.bitand()`` and ``.bitor()``\n\nThe ``F()`` objects now support bitwise operations by ``.bitand()`` and\n``.bitor()``, for example::\n\n    >>> F('somefield').bitand(16)\n\n.. versionchanged:: 1.5\n    The previously undocumented operators ``&`` and ``|`` no longer produce\n    bitwise operations, use ``.bitand()`` and ``.bitor()`` instead.\n\nThe pk lookup shortcut\n----------------------\n\nFor convenience, Django provides a ``pk`` lookup shortcut, which stands for\n\"primary key\".\n\nIn the example ``Blog`` model, the primary key is the ``id`` field, so these\nthree statements are equivalent::\n\n    >>> Blog.objects.get(id__exact=14) # Explicit form\n    >>> Blog.objects.get(id=14) # __exact is implied\n    >>> Blog.objects.get(pk=14) # pk implies id__exact\n\nThe use of ``pk`` isn't limited to ``__exact`` queries -- any query term\ncan be combined with ``pk`` to perform a query on the primary key of a model::\n\n    # Get blogs entries with id 1, 4 and 7\n    >>> Blog.objects.filter(pk__in=[1,4,7])\n\n    # Get all blog entries with id > 14\n    >>> Blog.objects.filter(pk__gt=14)\n\n``pk`` lookups also work across joins. For example, these three statements are\nequivalent::\n\n    >>> Entry.objects.filter(blog__id__exact=3) # Explicit form\n    >>> Entry.objects.filter(blog__id=3)        # __exact is implied\n    >>> Entry.objects.filter(blog__pk=3)        # __pk implies __id__exact\n\nEscaping percent signs and underscores in LIKE statements\n---------------------------------------------------------\n\nThe field lookups that equate to ``LIKE`` SQL statements (``iexact``,\n``contains``, ``icontains``, ``startswith``, ``istartswith``, ``endswith``\nand ``iendswith``) will automatically escape the two special characters used in\n``LIKE`` statements -- the percent sign and the underscore. (In a ``LIKE``\nstatement, the percent sign signifies a multiple-character wildcard and the\nunderscore signifies a single-character wildcard.)\n\nThis means things should work intuitively, so the abstraction doesn't leak.\nFor example, to retrieve all the entries that contain a percent sign, just use\nthe percent sign as any other character::\n\n    >>> Entry.objects.filter(headline__contains='%')\n\nDjango takes care of the quoting for you; the resulting SQL will look something\nlike this:\n\n.. code-block:: sql\n\n    SELECT ... WHERE headline LIKE '%\\%%';\n\nSame goes for underscores. Both percentage signs and underscores are handled\nfor you transparently.\n\n.. _caching-and-querysets:\n\nCaching and QuerySets\n---------------------\n\nEach :class:`~django.db.models.query.QuerySet` contains a cache, to minimize\ndatabase access. It's important to understand how it works, in order to write\nthe most efficient code.\n\nIn a newly created :class:`~django.db.models.query.QuerySet`, the cache is\nempty. The first time a :class:`~django.db.models.query.QuerySet` is evaluated\n-- and, hence, a database query happens -- Django saves the query results in\nthe :class:`~django.db.models.query.QuerySet`\\'s cache and returns the results\nthat have been explicitly requested (e.g., the next element, if the\n:class:`~django.db.models.query.QuerySet` is being iterated over). Subsequent\nevaluations of the :class:`~django.db.models.query.QuerySet` reuse the cached\nresults.\n\nKeep this caching behavior in mind, because it may bite you if you don't use\nyour :class:`~django.db.models.query.QuerySet`\\s correctly. For example, the\nfollowing will create two :class:`~django.db.models.query.QuerySet`\\s, evaluate\nthem, and throw them away::\n\n    >>> print([e.headline for e in Entry.objects.all()])\n    >>> print([e.pub_date for e in Entry.objects.all()])\n\nThat means the same database query will be executed twice, effectively doubling\nyour database load. Also, there's a possibility the two lists may not include\nthe same database records, because an ``Entry`` may have been added or deleted\nin the split second between the two requests.\n\nTo avoid this problem, simply save the\n:class:`~django.db.models.query.QuerySet` and reuse it::\n\n    >>> queryset = Entry.objects.all()\n    >>> print([p.headline for p in queryset]) # Evaluate the query set.\n    >>> print([p.pub_date for p in queryset]) # Re-use the cache from the evaluation.\n\n.. _complex-lookups-with-q:\n\nComplex lookups with Q objects\n==============================\n\n.. class:: Q\n\nKeyword argument queries -- in :meth:`~django.db.models.query.QuerySet.filter`,\netc. -- are \"AND\"ed together. If you need to execute more complex queries (for\nexample, queries with ``OR`` statements), you can use ``Q`` objects.\n\n.. comment: Link to Q does not work, since this documentation does not exist yet.\n\nA :class:`~django.db.models.Q` object (``django.db.models.Q``) is an object\nused to encapsulate a collection of keyword arguments. These keyword arguments\nare specified as in \"Field lookups\" above.\n\nFor example, this ``Q`` object encapsulates a single ``LIKE`` query::\n\n    from django.db.models import Q\n    Q(question__startswith='What')\n\n``Q`` objects can be combined using the ``&`` and ``|`` operators. When an\noperator is used on two ``Q`` objects, it yields a new ``Q`` object.\n\nFor example, this statement yields a single ``Q`` object that represents the\n\"OR\" of two ``\"question__startswith\"`` queries::\n\n    Q(question__startswith='Who') | Q(question__startswith='What')\n\nThis is equivalent to the following SQL ``WHERE`` clause::\n\n    WHERE question LIKE 'Who%' OR question LIKE 'What%'\n\nYou can compose statements of arbitrary complexity by combining ``Q`` objects\nwith the ``&`` and ``|`` operators and use parenthetical grouping. Also, ``Q``\nobjects can be negated using the ``~`` operator, allowing for combined lookups\nthat combine both a normal query and a negated (``NOT``) query::\n\n    Q(question__startswith='Who') | ~Q(pub_date__year=2005)\n\nEach lookup function that takes keyword-arguments\n(e.g. :meth:`~django.db.models.query.QuerySet.filter`,\n:meth:`~django.db.models.query.QuerySet.exclude`,\n:meth:`~django.db.models.query.QuerySet.get`) can also be passed one or more\n``Q`` objects as positional (not-named) arguments. If you provide multiple\n``Q`` object arguments to a lookup function, the arguments will be \"AND\"ed\ntogether. For example::\n\n    Poll.objects.get(\n        Q(question__startswith='Who'),\n        Q(pub_date=date(2005, 5, 2)) | Q(pub_date=date(2005, 5, 6))\n    )\n\n... roughly translates into the SQL::\n\n    SELECT * from polls WHERE question LIKE 'Who%'\n        AND (pub_date = '2005-05-02' OR pub_date = '2005-05-06')\n\nLookup functions can mix the use of ``Q`` objects and keyword arguments. All\narguments provided to a lookup function (be they keyword arguments or ``Q``\nobjects) are \"AND\"ed together. However, if a ``Q`` object is provided, it must\nprecede the definition of any keyword arguments. For example::\n\n    Poll.objects.get(\n        Q(pub_date=date(2005, 5, 2)) | Q(pub_date=date(2005, 5, 6)),\n        question__startswith='Who')\n\n... would be a valid query, equivalent to the previous example; but::\n\n    # INVALID QUERY\n    Poll.objects.get(\n        question__startswith='Who',\n        Q(pub_date=date(2005, 5, 2)) | Q(pub_date=date(2005, 5, 6)))\n\n... would not be valid.\n\n.. seealso::\n\n    The `OR lookups examples`_ in the Django unit tests show some possible uses\n    of ``Q``.\n\n    .. _OR lookups examples: https://github.com/django/django/blob/master/tests/or_lookups/tests.py\n\nComparing objects\n=================\n\nTo compare two model instances, just use the standard Python comparison operator,\nthe double equals sign: ``==``. Behind the scenes, that compares the primary\nkey values of two models.\n\nUsing the ``Entry`` example above, the following two statements are equivalent::\n\n    >>> some_entry == other_entry\n    >>> some_entry.id == other_entry.id\n\nIf a model's primary key isn't called ``id``, no problem. Comparisons will\nalways use the primary key, whatever it's called. For example, if a model's\nprimary key field is called ``name``, these two statements are equivalent::\n\n    >>> some_obj == other_obj\n    >>> some_obj.name == other_obj.name\n\n.. _topics-db-queries-delete:\n\nDeleting objects\n================\n\nThe delete method, conveniently, is named\n:meth:`~django.db.models.Model.delete`. This method immediately deletes the\nobject and has no return value. Example::\n\n    e.delete()\n\nYou can also delete objects in bulk. Every\n:class:`~django.db.models.query.QuerySet` has a\n:meth:`~django.db.models.query.QuerySet.delete` method, which deletes all\nmembers of that :class:`~django.db.models.query.QuerySet`.\n\nFor example, this deletes all ``Entry`` objects with a ``pub_date`` year of\n2005::\n\n    Entry.objects.filter(pub_date__year=2005).delete()\n\nKeep in mind that this will, whenever possible, be executed purely in SQL, and\nso the ``delete()`` methods of individual object instances will not necessarily\nbe called during the process. If you've provided a custom ``delete()`` method\non a model class and want to ensure that it is called, you will need to\n\"manually\" delete instances of that model (e.g., by iterating over a\n:class:`~django.db.models.query.QuerySet` and calling ``delete()`` on each\nobject individually) rather than using the bulk\n:meth:`~django.db.models.query.QuerySet.delete` method of a\n:class:`~django.db.models.query.QuerySet`.\n\nWhen Django deletes an object, by default it emulates the behavior of the SQL\nconstraint ``ON DELETE CASCADE`` -- in other words, any objects which had\nforeign keys pointing at the object to be deleted will be deleted along with\nit. For example::\n\n    b = Blog.objects.get(pk=1)\n    # This will delete the Blog and all of its Entry objects.\n    b.delete()\n\nThis cascade behavior is customizable via the\n:attr:`~django.db.models.ForeignKey.on_delete` argument to the\n:class:`~django.db.models.ForeignKey`.\n\nNote that :meth:`~django.db.models.query.QuerySet.delete` is the only\n:class:`~django.db.models.query.QuerySet` method that is not exposed on a\n:class:`~django.db.models.Manager` itself. This is a safety mechanism to\nprevent you from accidentally requesting ``Entry.objects.delete()``, and\ndeleting *all* the entries. If you *do* want to delete all the objects, then\nyou have to explicitly request a complete query set::\n\n    Entry.objects.all().delete()\n\n.. _topics-db-queries-copy:\n\nCopying model instances\n=======================\n\nAlthough there is no built-in method for copying model instances, it is\npossible to easily create new instance with all fields' values copied. In the\nsimplest case, you can just set ``pk`` to ``None``. Using our blog example::\n\n    blog = Blog(name='My blog', tagline='Blogging is easy')\n    blog.save() # blog.pk == 1\n\n    blog.pk = None\n    blog.save() # blog.pk == 2\n\nThings get more complicated if you use inheritance. Consider a subclass of\n``Blog``::\n\n    class ThemeBlog(Blog):\n        theme = models.CharField(max_length=200)\n\n    django_blog = ThemeBlog(name='Django', tagline='Django is easy', theme='python')\n    django_blog.save() # django_blog.pk == 3\n\nDue to how inheritance works, you have to set both ``pk`` and ``id`` to None::\n\n    django_blog.pk = None\n    django_blog.id = None\n    django_blog.save() # django_blog.pk == 4\n\nThis process does not copy related objects. If you want to copy relations,\nyou have to write a little bit more code. In our example, ``Entry`` has a many to many\nfield to ``Author``::\n\n    entry = Entry.objects.all()[0] # some previous entry\n    old_authors = entry.authors.all()\n    entry.pk = None\n    entry.save()\n    entry.authors = old_authors # saves new many2many relations\n\n.. _topics-db-queries-update:\n\nUpdating multiple objects at once\n=================================\n\nSometimes you want to set a field to a particular value for all the objects in\na :class:`~django.db.models.query.QuerySet`. You can do this with the\n:meth:`~django.db.models.query.QuerySet.update` method. For example::\n\n    # Update all the headlines with pub_date in 2007.\n    Entry.objects.filter(pub_date__year=2007).update(headline='Everything is the same')\n\nYou can only set non-relation fields and :class:`~django.db.models.ForeignKey`\nfields using this method. To update a non-relation field, provide the new value\nas a constant. To update :class:`~django.db.models.ForeignKey` fields, set the\nnew value to be the new model instance you want to point to. For example::\n\n    >>> b = Blog.objects.get(pk=1)\n\n    # Change every Entry so that it belongs to this Blog.\n    >>> Entry.objects.all().update(blog=b)\n\nThe ``update()`` method is applied instantly and returns the number of rows\nmatched by the query (which may not be equal to the number of rows updated if\nsome rows already have the new value). The only restriction on the\n:class:`~django.db.models.query.QuerySet` that is updated is that it can only\naccess one database table, the model's main table. You can filter based on\nrelated fields, but you can only update columns in the model's main\ntable. Example::\n\n    >>> b = Blog.objects.get(pk=1)\n\n    # Update all the headlines belonging to this Blog.\n    >>> Entry.objects.select_related().filter(blog=b).update(headline='Everything is the same')\n\nBe aware that the ``update()`` method is converted directly to an SQL\nstatement. It is a bulk operation for direct updates. It doesn't run any\n:meth:`~django.db.models.Model.save` methods on your models, or emit the\n``pre_save`` or ``post_save`` signals (which are a consequence of calling\n:meth:`~django.db.models.Model.save`), or honor the\n:attr:`~django.db.models.DateField.auto_now` field option.\nIf you want to save every item in a :class:`~django.db.models.query.QuerySet`\nand make sure that the :meth:`~django.db.models.Model.save` method is called on\neach instance, you don't need any special function to handle that. Just loop\nover them and call :meth:`~django.db.models.Model.save`::\n\n    for item in my_queryset:\n        item.save()\n\nCalls to update can also use :ref:`F() objects <query-expressions>` to update\none field based on the value of another field in the model. This is especially\nuseful for incrementing counters based upon their current value. For example, to\nincrement the pingback count for every entry in the blog::\n\n    >>> Entry.objects.all().update(n_pingbacks=F('n_pingbacks') + 1)\n\nHowever, unlike ``F()`` objects in filter and exclude clauses, you can't\nintroduce joins when you use ``F()`` objects in an update -- you can only\nreference fields local to the model being updated. If you attempt to introduce\na join with an ``F()`` object, a ``FieldError`` will be raised::\n\n    # THIS WILL RAISE A FieldError\n    >>> Entry.objects.update(headline=F('blog__name'))\n\n.. _topics-db-queries-related:\n\nRelated objects\n===============\n\nWhen you define a relationship in a model (i.e., a\n:class:`~django.db.models.ForeignKey`,\n:class:`~django.db.models.OneToOneField`, or\n:class:`~django.db.models.ManyToManyField`), instances of that model will have\na convenient API to access the related object(s).\n\nUsing the models at the top of this page, for example, an ``Entry`` object ``e``\ncan get its associated ``Blog`` object by accessing the ``blog`` attribute:\n``e.blog``.\n\n(Behind the scenes, this functionality is implemented by Python descriptors_.\nThis shouldn't really matter to you, but we point it out here for the curious.)\n\nDjango also creates API accessors for the \"other\" side of the relationship --\nthe link from the related model to the model that defines the relationship.\nFor example, a ``Blog`` object ``b`` has access to a list of all related\n``Entry`` objects via the ``entry_set`` attribute: ``b.entry_set.all()``.\n\nAll examples in this section use the sample ``Blog``, ``Author`` and ``Entry``\nmodels defined at the top of this page.\n\n.. _descriptors: http://users.rcn.com/python/download/Descriptor.htm\n\nOne-to-many relationships\n-------------------------\n\nForward\n~~~~~~~\n\nIf a model has a :class:`~django.db.models.ForeignKey`, instances of that model\nwill have access to the related (foreign) object via a simple attribute of the\nmodel.\n\nExample::\n\n    >>> e = Entry.objects.get(id=2)\n    >>> e.blog # Returns the related Blog object.\n\nYou can get and set via a foreign-key attribute. As you may expect, changes to\nthe foreign key aren't saved to the database until you call\n:meth:`~django.db.models.Model.save`. Example::\n\n    >>> e = Entry.objects.get(id=2)\n    >>> e.blog = some_blog\n    >>> e.save()\n\nIf a :class:`~django.db.models.ForeignKey` field has ``null=True`` set (i.e., it allows ``NULL``\nvalues), you can assign ``None`` to it. Example::\n\n    >>> e = Entry.objects.get(id=2)\n    >>> e.blog = None\n    >>> e.save() # \"UPDATE blog_entry SET blog_id = NULL ...;\"\n\nForward access to one-to-many relationships is cached the first time the\nrelated object is accessed. Subsequent accesses to the foreign key on the same\nobject instance are cached. Example::\n\n    >>> e = Entry.objects.get(id=2)\n    >>> print(e.blog)  # Hits the database to retrieve the associated Blog.\n    >>> print(e.blog)  # Doesn't hit the database; uses cached version.\n\nNote that the :meth:`~django.db.models.query.QuerySet.select_related`\n:class:`~django.db.models.query.QuerySet` method recursively prepopulates the\ncache of all one-to-many relationships ahead of time. Example::\n\n    >>> e = Entry.objects.select_related().get(id=2)\n    >>> print(e.blog)  # Doesn't hit the database; uses cached version.\n    >>> print(e.blog)  # Doesn't hit the database; uses cached version.\n\n.. _backwards-related-objects:\n\nFollowing relationships \"backward\"\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nIf a model has a :class:`~django.db.models.ForeignKey`, instances of the\nforeign-key model will have access to a :class:`~django.db.models.Manager` that\nreturns all instances of the first model. By default, this\n:class:`~django.db.models.Manager` is named ``FOO_set``, where ``FOO`` is the\nsource model name, lowercased. This :class:`~django.db.models.Manager` returns\n``QuerySets``, which can be filtered and manipulated as described in the\n\"Retrieving objects\" section above.\n\nExample::\n\n    >>> b = Blog.objects.get(id=1)\n    >>> b.entry_set.all() # Returns all Entry objects related to Blog.\n\n    # b.entry_set is a Manager that returns QuerySets.\n    >>> b.entry_set.filter(headline__contains='Lennon')\n    >>> b.entry_set.count()\n\nYou can override the ``FOO_set`` name by setting the ``related_name``\nparameter in the ``ForeignKey()`` definition. For example, if the ``Entry``\nmodel was altered to ``blog = ForeignKey(Blog, related_name='entries')``, the\nabove example code would look like this::\n\n    >>> b = Blog.objects.get(id=1)\n    >>> b.entries.all() # Returns all Entry objects related to Blog.\n\n    # b.entries is a Manager that returns QuerySets.\n    >>> b.entries.filter(headline__contains='Lennon')\n    >>> b.entries.count()\n\nYou cannot access a reverse :class:`~django.db.models.ForeignKey`\n:class:`~django.db.models.Manager` from the class; it must be accessed from an\ninstance::\n\n    >>> Blog.entry_set\n    Traceback:\n        ...\n    AttributeError: \"Manager must be accessed via instance\".\n\nIn addition to the :class:`~django.db.models.query.QuerySet` methods defined in\n\"Retrieving objects\" above, the :class:`~django.db.models.ForeignKey`\n:class:`~django.db.models.Manager` has additional methods used to handle the\nset of related objects. A synopsis of each is below, and complete details can\nbe found in the :doc:`related objects reference </ref/models/relations>`.\n\n``add(obj1, obj2, ...)``\n    Adds the specified model objects to the related object set.\n\n``create(**kwargs)``\n    Creates a new object, saves it and puts it in the related object set.\n    Returns the newly created object.\n\n``remove(obj1, obj2, ...)``\n    Removes the specified model objects from the related object set.\n\n``clear()``\n    Removes all objects from the related object set.\n\nTo assign the members of a related set in one fell swoop, just assign to it\nfrom any iterable object. The iterable can contain object instances, or just\na list of primary key values. For example::\n\n    b = Blog.objects.get(id=1)\n    b.entry_set = [e1, e2]\n\nIn this example, ``e1`` and ``e2`` can be full Entry instances, or integer\nprimary key values.\n\nIf the ``clear()`` method is available, any pre-existing objects will be\nremoved from the ``entry_set`` before all objects in the iterable (in this\ncase, a list) are added to the set. If the ``clear()`` method is *not*\navailable, all objects in the iterable will be added without removing any\nexisting elements.\n\nEach \"reverse\" operation described in this section has an immediate effect on\nthe database. Every addition, creation and deletion is immediately and\nautomatically saved to the database.\n\n.. _m2m-reverse-relationships:\n\nMany-to-many relationships\n--------------------------\n\nBoth ends of a many-to-many relationship get automatic API access to the other\nend. The API works just as a \"backward\" one-to-many relationship, above.\n\nThe only difference is in the attribute naming: The model that defines the\n:class:`~django.db.models.ManyToManyField` uses the attribute name of that\nfield itself, whereas the \"reverse\" model uses the lowercased model name of the\noriginal model, plus ``'_set'`` (just like reverse one-to-many relationships).\n\nAn example makes this easier to understand::\n\n    e = Entry.objects.get(id=3)\n    e.authors.all() # Returns all Author objects for this Entry.\n    e.authors.count()\n    e.authors.filter(name__contains='John')\n\n    a = Author.objects.get(id=5)\n    a.entry_set.all() # Returns all Entry objects for this Author.\n\nLike :class:`~django.db.models.ForeignKey`,\n:class:`~django.db.models.ManyToManyField` can specify ``related_name``. In the\nabove example, if the :class:`~django.db.models.ManyToManyField` in ``Entry``\nhad specified ``related_name='entries'``, then each ``Author`` instance would\nhave an ``entries`` attribute instead of ``entry_set``.\n\nOne-to-one relationships\n------------------------\n\nOne-to-one relationships are very similar to many-to-one relationships. If you\ndefine a :class:`~django.db.models.OneToOneField` on your model, instances of\nthat model will have access to the related object via a simple attribute of the\nmodel.\n\nFor example::\n\n    class EntryDetail(models.Model):\n        entry = models.OneToOneField(Entry)\n        details = models.TextField()\n\n    ed = EntryDetail.objects.get(id=2)\n    ed.entry # Returns the related Entry object.\n\nThe difference comes in \"reverse\" queries. The related model in a one-to-one\nrelationship also has access to a :class:`~django.db.models.Manager` object, but\nthat :class:`~django.db.models.Manager` represents a single object, rather than\na collection of objects::\n\n    e = Entry.objects.get(id=2)\n    e.entrydetail # returns the related EntryDetail object\n\nIf no object has been assigned to this relationship, Django will raise\na ``DoesNotExist`` exception.\n\nInstances can be assigned to the reverse relationship in the same way as\nyou would assign the forward relationship::\n\n    e.entrydetail = ed\n\nHow are the backward relationships possible?\n--------------------------------------------\n\nOther object-relational mappers require you to define relationships on both\nsides. The Django developers believe this is a violation of the DRY (Don't\nRepeat Yourself) principle, so Django only requires you to define the\nrelationship on one end.\n\nBut how is this possible, given that a model class doesn't know which other\nmodel classes are related to it until those other model classes are loaded?\n\nThe answer lies in the :setting:`INSTALLED_APPS` setting. The first time any\nmodel is loaded, Django iterates over every model in :setting:`INSTALLED_APPS`\nand creates the backward relationships in memory as needed. Essentially, one of\nthe functions of :setting:`INSTALLED_APPS` is to tell Django the entire model\ndomain.\n\nQueries over related objects\n----------------------------\n\nQueries involving related objects follow the same rules as queries involving\nnormal value fields. When specifying the value for a query to match, you may\nuse either an object instance itself, or the primary key value for the object.\n\nFor example, if you have a Blog object ``b`` with ``id=5``, the following\nthree queries would be identical::\n\n    Entry.objects.filter(blog=b) # Query using object instance\n    Entry.objects.filter(blog=b.id) # Query using id from instance\n    Entry.objects.filter(blog=5) # Query using id directly\n\nFalling back to raw SQL\n=======================\n\nIf you find yourself needing to write an SQL query that is too complex for\nDjango's database-mapper to handle, you can fall back on writing SQL by hand.\nDjango has a couple of options for writing raw SQL queries; see\n:doc:`/topics/db/sql`.\n\nFinally, it's important to note that the Django database layer is merely an\ninterface to your database. You can access your database via other tools,\nprogramming languages or database frameworks; there's nothing Django-specific\nabout your database.\n"
  },
  {
    "path": "Django-1.5.1/docs/topics/db/sql.txt",
    "content": "==========================\nPerforming raw SQL queries\n==========================\n\n.. currentmodule:: django.db.models\n\nWhen the :doc:`model query APIs </topics/db/queries>` don't go far enough, you\ncan fall back to writing raw SQL. Django gives you two ways of performing raw\nSQL queries: you can use :meth:`Manager.raw()` to `perform raw queries and\nreturn model instances`__, or you can avoid the model layer entirely and\n`execute custom SQL directly`__.\n\n__ `performing raw queries`_\n__ `executing custom SQL directly`_\n\n.. _executing-raw-queries:\n\nPerforming raw queries\n======================\n\nThe ``raw()`` manager method can be used to perform raw SQL queries that\nreturn model instances:\n\n.. method:: Manager.raw(raw_query, params=None, translations=None)\n\nThis method method takes a raw SQL query, executes it, and returns a\n``django.db.models.query.RawQuerySet`` instance. This ``RawQuerySet`` instance\ncan be iterated over just like an normal QuerySet to provide object instances.\n\nThis is best illustrated with an example. Suppose you've got the following model::\n\n    class Person(models.Model):\n        first_name = models.CharField(...)\n        last_name = models.CharField(...)\n        birth_date = models.DateField(...)\n\nYou could then execute custom SQL like so::\n\n    >>> for p in Person.objects.raw('SELECT * FROM myapp_person'):\n    ...     print(p)\n    John Smith\n    Jane Jones\n\nOf course, this example isn't very exciting -- it's exactly the same as\nrunning ``Person.objects.all()``. However, ``raw()`` has a bunch of other\noptions that make it very powerful.\n\n.. admonition:: Model table names\n\n    Where'd the name of the ``Person`` table come from in that example?\n\n    By default, Django figures out a database table name by joining the\n    model's \"app label\" -- the name you used in ``manage.py startapp`` -- to\n    the model's class name, with an underscore between them. In the example\n    we've assumed that the ``Person`` model lives in an app named ``myapp``,\n    so its table would be ``myapp_person``.\n\n    For more details check out the documentation for the\n    :attr:`~Options.db_table` option, which also lets you manually set the\n    database table name.\n\n.. warning::\n\n    No checking is done on the SQL statement that is passed in to ``.raw()``.\n    Django expects that the statement will return a set of rows from the\n    database, but does nothing to enforce that. If the query does not\n    return rows, a (possibly cryptic) error will result.\n\nMapping query fields to model fields\n------------------------------------\n\n``raw()`` automatically maps fields in the query to fields on the model.\n\nThe order of fields in your query doesn't matter. In other words, both\nof the following queries work identically::\n\n    >>> Person.objects.raw('SELECT id, first_name, last_name, birth_date FROM myapp_person')\n    ...\n    >>> Person.objects.raw('SELECT last_name, birth_date, first_name, id FROM myapp_person')\n    ...\n\nMatching is done by name. This means that you can use SQL's ``AS`` clauses to\nmap fields in the query to model fields. So if you had some other table that\nhad ``Person`` data in it, you could easily map it into ``Person`` instances::\n\n    >>> Person.objects.raw('''SELECT first AS first_name,\n    ...                              last AS last_name,\n    ...                              bd AS birth_date,\n    ...                              pk as id,\n    ...                       FROM some_other_table''')\n\nAs long as the names match, the model instances will be created correctly.\n\nAlternatively, you can map fields in the query to model fields using the\n``translations`` argument to ``raw()``. This is a dictionary mapping names of\nfields in the query to names of fields on the model. For example, the above\nquery could also be written::\n\n    >>> name_map = {'first': 'first_name', 'last': 'last_name', 'bd': 'birth_date', 'pk': 'id'}\n    >>> Person.objects.raw('SELECT * FROM some_other_table', translations=name_map)\n\nIndex lookups\n-------------\n\n``raw()`` supports indexing, so if you need only the first result you can\nwrite::\n\n    >>> first_person = Person.objects.raw('SELECT * from myapp_person')[0]\n\nHowever, the indexing and slicing are not performed at the database level. If\nyou have a big amount of ``Person`` objects in your database, it is more\nefficient to limit the query at the SQL level::\n\n    >>> first_person = Person.objects.raw('SELECT * from myapp_person LIMIT 1')[0]\n\nDeferring model fields\n----------------------\n\nFields may also be left out::\n\n    >>> people = Person.objects.raw('SELECT id, first_name FROM myapp_person')\n\nThe ``Person`` objects returned by this query will be deferred model instances\n(see :meth:`~django.db.models.query.QuerySet.defer()`). This means that the\nfields that are omitted from the query will be loaded on demand. For example::\n\n    >>> for p in Person.objects.raw('SELECT id, first_name FROM myapp_person'):\n    ...     print(p.first_name, # This will be retrieved by the original query\n    ...           p.last_name) # This will be retrieved on demand\n    ...\n    John Smith\n    Jane Jones\n\nFrom outward appearances, this looks like the query has retrieved both\nthe first name and last name. However, this example actually issued 3\nqueries. Only the first names were retrieved by the raw() query -- the\nlast names were both retrieved on demand when they were printed.\n\nThere is only one field that you can't leave out - the primary key\nfield. Django uses the primary key to identify model instances, so it\nmust always be included in a raw query. An ``InvalidQuery`` exception\nwill be raised if you forget to include the primary key.\n\nAdding annotations\n------------------\n\nYou can also execute queries containing fields that aren't defined on the\nmodel. For example, we could use `PostgreSQL's age() function`__ to get a list\nof people with their ages calculated by the database::\n\n    >>> people = Person.objects.raw('SELECT *, age(birth_date) AS age FROM myapp_person')\n    >>> for p in people:\n    ...     print(\"%s is %s.\" % (p.first_name, p.age))\n    John is 37.\n    Jane is 42.\n    ...\n\n__ http://www.postgresql.org/docs/8.4/static/functions-datetime.html\n\nPassing parameters into ``raw()``\n---------------------------------\n\nIf you need to perform parameterized queries, you can use the ``params``\nargument to ``raw()``::\n\n    >>> lname = 'Doe'\n    >>> Person.objects.raw('SELECT * FROM myapp_person WHERE last_name = %s', [lname])\n\n``params`` is a list of parameters. You'll use ``%s`` placeholders in the\nquery string (regardless of your database engine); they'll be replaced with\nparameters from the ``params`` list.\n\n.. warning::\n\n    **Do not use string formatting on raw queries!**\n\n    It's tempting to write the above query as::\n\n        >>> query = 'SELECT * FROM myapp_person WHERE last_name = %s' % lname\n        >>> Person.objects.raw(query)\n\n    **Don't.**\n\n    Using the ``params`` list completely protects you from `SQL injection\n    attacks`__, a common exploit where attackers inject arbitrary SQL into\n    your database. If you use string interpolation, sooner or later you'll\n    fall victim to SQL injection. As long as you remember to always use the\n    ``params`` list you'll be protected.\n\n__ http://en.wikipedia.org/wiki/SQL_injection\n\n.. _executing-custom-sql:\n\nExecuting custom SQL directly\n=============================\n\nSometimes even :meth:`Manager.raw` isn't quite enough: you might need to\nperform queries that don't map cleanly to models, or directly execute\n``UPDATE``, ``INSERT``, or ``DELETE`` queries.\n\nIn these cases, you can always access the database directly, routing around\nthe model layer entirely.\n\nThe object ``django.db.connection`` represents the\ndefault database connection, and ``django.db.transaction`` represents the\ndefault database transaction. To use the database connection, call\n``connection.cursor()`` to get a cursor object. Then, call\n``cursor.execute(sql, [params])`` to execute the SQL and ``cursor.fetchone()``\nor ``cursor.fetchall()`` to return the resulting rows. After performing a data\nchanging operation, you should then call\n``transaction.commit_unless_managed()`` to ensure your changes are committed\nto the database. If your query is purely a data retrieval operation, no commit\nis required. For example::\n\n    def my_custom_sql():\n        from django.db import connection, transaction\n        cursor = connection.cursor()\n\n        # Data modifying operation - commit required\n        cursor.execute(\"UPDATE bar SET foo = 1 WHERE baz = %s\", [self.baz])\n        transaction.commit_unless_managed()\n\n        # Data retrieval operation - no commit required\n        cursor.execute(\"SELECT foo FROM bar WHERE baz = %s\", [self.baz])\n        row = cursor.fetchone()\n\n        return row\n\nIf you are using :doc:`more than one database </topics/db/multi-db>`, you can\nuse ``django.db.connections`` to obtain the connection (and cursor) for a\nspecific database. ``django.db.connections`` is a dictionary-like\nobject that allows you to retrieve a specific connection using its\nalias::\n\n    from django.db import connections\n    cursor = connections['my_db_alias'].cursor()\n    # Your code here...\n    transaction.commit_unless_managed(using='my_db_alias')\n\nBy default, the Python DB API will return results without their field\nnames, which means you end up with a ``list`` of values, rather than a\n``dict``. At a small performance cost, you can return results as a\n``dict`` by using something like this::\n\n    def dictfetchall(cursor):\n        \"Returns all rows from a cursor as a dict\"\n        desc = cursor.description\n        return [\n            dict(zip([col[0] for col in desc], row))\n            for row in cursor.fetchall()\n        ]\n\nHere is an example of the difference between the two::\n\n    >>> cursor.execute(\"SELECT id, parent_id from test LIMIT 2\");\n    >>> cursor.fetchall()\n    ((54360982L, None), (54360880L, None))\n\n    >>> cursor.execute(\"SELECT id, parent_id from test LIMIT 2\");\n    >>> dictfetchall(cursor)\n    [{'parent_id': None, 'id': 54360982L}, {'parent_id': None, 'id': 54360880L}]\n\n\n.. _transactions-and-raw-sql:\n\nTransactions and raw SQL\n------------------------\n\nWhen you make a raw SQL call, Django will automatically mark the\ncurrent transaction as dirty. You must then ensure that the\ntransaction containing those calls is closed correctly. See :ref:`the\nnotes on the requirements of Django's transaction handling\n<topics-db-transactions-requirements>` for more details.\n\nConnections and cursors\n-----------------------\n\n``connection`` and ``cursor`` mostly implement the standard Python DB-API\ndescribed in :pep:`249` (except when it comes to :doc:`transaction handling\n</topics/db/transactions>`). If you're not familiar with the Python DB-API, note\nthat the SQL statement in ``cursor.execute()`` uses placeholders, ``\"%s\"``,\nrather than adding parameters directly within the SQL. If you use this\ntechnique, the underlying database library will automatically add quotes and\nescaping to your parameter(s) as necessary. (Also note that Django expects the\n``\"%s\"`` placeholder, *not* the ``\"?\"`` placeholder, which is used by the SQLite\nPython bindings. This is for the sake of consistency and sanity.)\n"
  },
  {
    "path": "Django-1.5.1/docs/topics/db/tablespaces.txt",
    "content": "===========\nTablespaces\n===========\n\nA common paradigm for optimizing performance in database systems is the use of\n`tablespaces`_ to organize disk layout.\n\n.. _`tablespaces`: http://en.wikipedia.org/wiki/Tablespace\n\n.. warning::\n    Django does not create the tablespaces for you. Please refer to your\n    database engine's documentation for details on creating and managing\n    tablespaces.\n\n\nDeclaring tablespaces for tables\n--------------------------------\n\nA tablespace can be specified for the table generated by a model by supplying\nthe :attr:`~django.db.models.Options.db_tablespace` option inside the model's\n``class Meta``. This option also affects tables automatically created for\n:class:`~django.db.models.ManyToManyField`\\ s in the model.\n\nYou can use the :setting:`DEFAULT_TABLESPACE` setting to specify a default value\nfor :attr:`~django.db.models.Options.db_tablespace`. This is useful for setting\na tablespace for the built-in Django apps and other applications whose code you\ncannot control.\n\nDeclaring tablespaces for indexes\n---------------------------------\n\nYou can pass the :attr:`~django.db.models.Field.db_tablespace` option to a\n``Field`` constructor to specify an alternate tablespace for the ``Field``'s\ncolumn index. If no index would be created for the column, the option is\nignored.\n\nYou can use the :setting:`DEFAULT_INDEX_TABLESPACE` setting to specify\na default value for :attr:`~django.db.models.Field.db_tablespace`.\n\nIf :attr:`~django.db.models.Field.db_tablespace` isn't specified and you didn't\nset :setting:`DEFAULT_INDEX_TABLESPACE`, the index is created in the same\ntablespace as the tables.\n\nAn example\n----------\n\n.. code-block:: python\n\n    class TablespaceExample(models.Model):\n        name = models.CharField(max_length=30, db_index=True, db_tablespace=\"indexes\")\n        data = models.CharField(max_length=255, db_index=True)\n        edges = models.ManyToManyField(to=\"self\", db_tablespace=\"indexes\")\n\n        class Meta:\n            db_tablespace = \"tables\"\n\nIn this example, the tables generated by the ``TablespaceExample`` model (i.e.\nthe model table and the many-to-many table) would be stored in the ``tables``\ntablespace. The index for the name field and the indexes on the many-to-many\ntable would be stored in the ``indexes`` tablespace. The ``data`` field would\nalso generate an index, but no tablespace for it is specified, so it would be\nstored in the model tablespace ``tables`` by default.\n\nDatabase support\n----------------\n\nPostgreSQL and Oracle support tablespaces. SQLite and MySQL don't.\n\nWhen you use a backend that lacks support for tablespaces, Django ignores all\ntablespace-related options.\n\n.. versionchanged:: 1.4\n    Since Django 1.4, the PostgreSQL backend supports tablespaces.\n"
  },
  {
    "path": "Django-1.5.1/docs/topics/db/transactions.txt",
    "content": "==============================\nManaging database transactions\n==============================\n\n.. module:: django.db.transaction\n\nDjango gives you a few ways to control how database transactions are managed,\nif you're using a database that supports transactions.\n\nDjango's default transaction behavior\n=====================================\n\nDjango's default behavior is to run with an open transaction which it\ncommits automatically when any built-in, data-altering model function is\ncalled. For example, if you call ``model.save()`` or ``model.delete()``, the\nchange will be committed immediately.\n\nThis is much like the auto-commit setting for most databases. As soon as you\nperform an action that needs to write to the database, Django produces the\n``INSERT``/``UPDATE``/``DELETE`` statements and then does the ``COMMIT``.\nThere's no implicit ``ROLLBACK``.\n\nTying transactions to HTTP requests\n===================================\n\nThe recommended way to handle transactions in Web requests is to tie them to\nthe request and response phases via Django's ``TransactionMiddleware``.\n\nIt works like this: When a request starts, Django starts a transaction. If the\nresponse is produced without problems, Django commits any pending transactions.\nIf the view function produces an exception, Django rolls back any pending\ntransactions.\n\nTo activate this feature, just add the ``TransactionMiddleware`` middleware to\nyour :setting:`MIDDLEWARE_CLASSES` setting::\n\n    MIDDLEWARE_CLASSES = (\n        'django.middleware.cache.UpdateCacheMiddleware',\n        'django.contrib.sessions.middleware.SessionMiddleware',\n        'django.middleware.common.CommonMiddleware',\n        'django.middleware.transaction.TransactionMiddleware',\n        'django.middleware.cache.FetchFromCacheMiddleware',\n    )\n\nThe order is quite important. The transaction middleware applies not only to\nview functions, but also for all middleware modules that come after it. So if\nyou use the session middleware after the transaction middleware, session\ncreation will be part of the transaction.\n\nThe various cache middlewares are an exception:\n``CacheMiddleware``, :class:`~django.middleware.cache.UpdateCacheMiddleware`,\nand :class:`~django.middleware.cache.FetchFromCacheMiddleware` are never\naffected. Even when using database caching, Django's cache backend uses its own\ndatabase cursor (which is mapped to its own database connection internally).\n\n.. note::\n\n    The ``TransactionMiddleware`` only affects the database aliased\n    as \"default\" within your :setting:`DATABASES` setting.  If you are using\n    multiple databases and want transaction control over databases other than\n    \"default\", you will need to write your own transaction middleware.\n\n.. _transaction-management-functions:\n\nControlling transaction management in views\n===========================================\n\nFor most people, implicit request-based transactions work wonderfully. However,\nif you need more fine-grained control over how transactions are managed, you can\nuse a set of functions in ``django.db.transaction`` to control transactions on a\nper-function or per-code-block basis.\n\nThese functions, described in detail below, can be used in two different ways:\n\n* As a decorator_ on a particular function. For example::\n\n    from django.db import transaction\n\n    @transaction.commit_on_success\n    def viewfunc(request):\n        # ...\n        # this code executes inside a transaction\n        # ...\n\n* As a `context manager`_ around a particular block of code::\n\n    from django.db import transaction\n\n    def viewfunc(request):\n        # ...\n        # this code executes using default transaction management\n        # ...\n\n        with transaction.commit_on_success():\n            # ...\n            # this code executes inside a transaction\n            # ...\n\nBoth techniques work with all supported version of Python.\n\n.. _decorator: http://docs.python.org/glossary.html#term-decorator\n.. _context manager: http://docs.python.org/glossary.html#term-context-manager\n\nFor maximum compatibility, all of the examples below show transactions using the\ndecorator syntax, but all of the follow functions may be used as context\nmanagers, too.\n\n.. note::\n\n    Although the examples below use view functions as examples, these\n    decorators and context managers can be used anywhere in your code\n    that you need to deal with transactions.\n\n.. _topics-db-transactions-autocommit:\n\n.. function:: autocommit\n\n    Use the ``autocommit`` decorator to switch a view function to Django's\n    default commit behavior, regardless of the global transaction setting.\n\n    Example::\n\n        from django.db import transaction\n\n        @transaction.autocommit\n        def viewfunc(request):\n            ....\n\n        @transaction.autocommit(using=\"my_other_database\")\n        def viewfunc2(request):\n            ....\n\n    Within ``viewfunc()``, transactions will be committed as soon as you call\n    ``model.save()``, ``model.delete()``, or any other function that writes to\n    the database.  ``viewfunc2()`` will have this same behavior, but for the\n    ``\"my_other_database\"`` connection.\n\n.. function:: commit_on_success\n\n    Use the ``commit_on_success`` decorator to use a single transaction for all\n    the work done in a function::\n\n        from django.db import transaction\n\n        @transaction.commit_on_success\n        def viewfunc(request):\n            ....\n\n        @transaction.commit_on_success(using=\"my_other_database\")\n        def viewfunc2(request):\n            ....\n\n    If the function returns successfully, then Django will commit all work done\n    within the function at that point. If the function raises an exception,\n    though, Django will roll back the transaction.\n\n.. function:: commit_manually\n\n    Use the ``commit_manually`` decorator if you need full control over\n    transactions. It tells Django you'll be managing the transaction on your\n    own.\n\n    Whether you are writing or simply reading from the database, you must\n    ``commit()`` or ``rollback()`` explicitly or Django will raise a\n    :exc:`TransactionManagementError` exception. This is required when reading\n    from the database because ``SELECT`` statements may call functions which\n    modify tables, and thus it is impossible to know if any data has been\n    modified.\n\n    Manual transaction management looks like this::\n\n        from django.db import transaction\n\n        @transaction.commit_manually\n        def viewfunc(request):\n            ...\n            # You can commit/rollback however and whenever you want\n            transaction.commit()\n            ...\n\n            # But you've got to remember to do it yourself!\n            try:\n                ...\n            except:\n                transaction.rollback()\n            else:\n                transaction.commit()\n\n        @transaction.commit_manually(using=\"my_other_database\")\n        def viewfunc2(request):\n            ....\n\n.. _topics-db-transactions-requirements:\n\nRequirements for transaction handling\n=====================================\n\nDjango requires that every transaction that is opened is closed before\nthe completion of a request. If you are using :func:`autocommit` (the\ndefault commit mode) or :func:`commit_on_success`, this will be done\nfor you automatically (with the exception of :ref:`executing custom SQL\n<executing-custom-sql>`). However, if you are manually managing\ntransactions (using the :func:`commit_manually` decorator), you must\nensure that the transaction is either committed or rolled back before\na request is completed.\n\nThis applies to all database operations, not just write operations. Even\nif your transaction only reads from the database, the transaction must\nbe committed or rolled back before you complete a request.\n\n.. _deactivate-transaction-management:\n\nHow to globally deactivate transaction management\n=================================================\n\nControl freaks can totally disable all transaction management by setting\n:setting:`TRANSACTIONS_MANAGED` to ``True`` in the Django settings file.\n\nIf you do this, Django won't provide any automatic transaction management\nwhatsoever. Middleware will no longer implicitly commit transactions, and\nyou'll need to roll management yourself. This even requires you to commit\nchanges done by middleware somewhere else.\n\nThus, this is best used in situations where you want to run your own\ntransaction-controlling middleware or do something really strange. In almost\nall situations, you'll be better off using the default behavior, or the\ntransaction middleware, and only modify selected functions as needed.\n\n.. _topics-db-transactions-savepoints:\n\nSavepoints\n==========\n\nA savepoint is a marker within a transaction that enables you to roll back part\nof a transaction, rather than the full transaction. Savepoints are available\nwith the PostgreSQL 8, Oracle and MySQL (when using the InnoDB storage engine)\nbackends. Other backends provide the savepoint functions, but they're empty\noperations -- they don't actually do anything.\n\n.. versionchanged:: 1.4\n   Savepoint support for the MySQL backend was added in Django 1.4.\n\nSavepoints aren't especially useful if you are using the default\n``autocommit`` behavior of Django. However, if you are using\n``commit_on_success`` or ``commit_manually``, each open transaction will build\nup a series of database operations, awaiting a commit or rollback. If you\nissue a rollback, the entire transaction is rolled back. Savepoints provide\nthe ability to perform a fine-grained rollback, rather than the full rollback\nthat would be performed by ``transaction.rollback()``.\n\nEach of these functions takes a ``using`` argument which should be the name of\na database for which the behavior applies.  If no ``using`` argument is\nprovided then the ``\"default\"`` database is used.\n\nSavepoints are controlled by three methods on the transaction object:\n\n.. method:: transaction.savepoint(using=None)\n\n    Creates a new savepoint. This marks a point in the transaction that\n    is known to be in a \"good\" state.\n\n    Returns the savepoint ID (sid).\n\n.. method:: transaction.savepoint_commit(sid, using=None)\n\n    Updates the savepoint to include any operations that have been performed\n    since the savepoint was created, or since the last commit.\n\n.. method:: transaction.savepoint_rollback(sid, using=None)\n\n    Rolls the transaction back to the last point at which the savepoint was\n    committed.\n\nThe following example demonstrates the use of savepoints::\n\n    from django.db import transaction\n\n    @transaction.commit_manually\n    def viewfunc(request):\n\n      a.save()\n      # open transaction now contains a.save()\n      sid = transaction.savepoint()\n\n      b.save()\n      # open transaction now contains a.save() and b.save()\n\n      if want_to_keep_b:\n          transaction.savepoint_commit(sid)\n          # open transaction still contains a.save() and b.save()\n      else:\n          transaction.savepoint_rollback(sid)\n          # open transaction now contains only a.save()\n\n      transaction.commit()\n\nTransactions in MySQL\n=====================\n\nIf you're using MySQL, your tables may or may not support transactions; it\ndepends on your MySQL version and the table types you're using. (By\n\"table types,\" we mean something like \"InnoDB\" or \"MyISAM\".) MySQL transaction\npeculiarities are outside the scope of this article, but the MySQL site has\n`information on MySQL transactions`_.\n\nIf your MySQL setup does *not* support transactions, then Django will function\nin auto-commit mode: Statements will be executed and committed as soon as\nthey're called. If your MySQL setup *does* support transactions, Django will\nhandle transactions as explained in this document.\n\n.. _information on MySQL transactions: http://dev.mysql.com/doc/refman/5.0/en/sql-syntax-transactions.html\n\nHandling exceptions within PostgreSQL transactions\n==================================================\n\nWhen a call to a PostgreSQL cursor raises an exception (typically\n``IntegrityError``), all subsequent SQL in the same transaction will fail with\nthe error \"current transaction is aborted, queries ignored until end of\ntransaction block\". Whilst simple use of ``save()`` is unlikely to raise an\nexception in PostgreSQL, there are more advanced usage patterns which\nmight, such as saving objects with unique fields, saving using the\nforce_insert/force_update flag, or invoking custom SQL.\n\nThere are several ways to recover from this sort of error.\n\nTransaction rollback\n--------------------\n\nThe first option is to roll back the entire transaction. For example::\n\n    a.save() # Succeeds, but may be undone by transaction rollback\n    try:\n        b.save() # Could throw exception\n    except IntegrityError:\n        transaction.rollback()\n    c.save() # Succeeds, but a.save() may have been undone\n\nCalling ``transaction.rollback()`` rolls back the entire transaction. Any\nuncommitted database operations will be lost. In this example, the changes\nmade by ``a.save()`` would be lost, even though that operation raised no error\nitself.\n\nSavepoint rollback\n------------------\n\nIf you are using PostgreSQL 8 or later, you can use :ref:`savepoints\n<topics-db-transactions-savepoints>` to control the extent of a rollback.\nBefore performing a database operation that could fail, you can set or update\nthe savepoint; that way, if the operation fails, you can roll back the single\noffending operation, rather than the entire transaction. For example::\n\n    a.save() # Succeeds, and never undone by savepoint rollback\n    try:\n        sid = transaction.savepoint()\n        b.save() # Could throw exception\n        transaction.savepoint_commit(sid)\n    except IntegrityError:\n        transaction.savepoint_rollback(sid)\n    c.save() # Succeeds, and a.save() is never undone\n\nIn this example, ``a.save()`` will not be undone in the case where\n``b.save()`` raises an exception.\n\nDatabase-level autocommit\n-------------------------\n\nWith PostgreSQL 8.2 or later, there is an advanced option to run PostgreSQL\nwith :doc:`database-level autocommit </ref/databases>`. If you use this option,\nthere is no constantly open transaction, so it is always possible to continue\nafter catching an exception. For example::\n\n    a.save() # succeeds\n    try:\n        b.save() # Could throw exception\n    except IntegrityError:\n        pass\n    c.save() # succeeds\n\n.. note::\n\n    This is not the same as the :ref:`autocommit decorator\n    <topics-db-transactions-autocommit>`. When using database level autocommit\n    there is no database transaction at all. The ``autocommit`` decorator\n    still uses transactions, automatically committing each transaction when\n    a database modifying operation occurs.\n"
  },
  {
    "path": "Django-1.5.1/docs/topics/email.txt",
    "content": "=============\nSending email\n=============\n\n.. module:: django.core.mail\n   :synopsis: Helpers to easily send email.\n\nAlthough Python makes sending email relatively easy via the :mod:`smtplib`\nmodule, Django provides a couple of light wrappers over it. These wrappers are\nprovided to make sending email extra quick, to make it easy to test email\nsending during development, and to provide support for platforms that can't use\nSMTP.\n\nThe code lives in the ``django.core.mail`` module.\n\nQuick example\n=============\n\nIn two lines::\n\n    from django.core.mail import send_mail\n\n    send_mail('Subject here', 'Here is the message.', 'from@example.com',\n        ['to@example.com'], fail_silently=False)\n\nMail is sent using the SMTP host and port specified in the\n:setting:`EMAIL_HOST` and :setting:`EMAIL_PORT` settings. The\n:setting:`EMAIL_HOST_USER` and :setting:`EMAIL_HOST_PASSWORD` settings, if\nset, are used to authenticate to the SMTP server, and the\n:setting:`EMAIL_USE_TLS` setting controls whether a secure connection is used.\n\n.. note::\n\n    The character set of email sent with ``django.core.mail`` will be set to\n    the value of your :setting:`DEFAULT_CHARSET` setting.\n\nsend_mail()\n===========\n\n.. function:: send_mail(subject, message, from_email, recipient_list, fail_silently=False, auth_user=None, auth_password=None, connection=None)\n\nThe simplest way to send email is using\n``django.core.mail.send_mail()``.\n\nThe ``subject``, ``message``, ``from_email`` and ``recipient_list`` parameters\nare required.\n\n* ``subject``: A string.\n* ``message``: A string.\n* ``from_email``: A string.\n* ``recipient_list``: A list of strings, each an email address. Each\n  member of ``recipient_list`` will see the other recipients in the \"To:\"\n  field of the email message.\n* ``fail_silently``: A boolean. If it's ``False``, ``send_mail`` will raise\n  an :exc:`smtplib.SMTPException`. See the :mod:`smtplib` docs for a list of\n  possible exceptions, all of which are subclasses of\n  :exc:`~smtplib.SMTPException`.\n* ``auth_user``: The optional username to use to authenticate to the SMTP\n  server. If this isn't provided, Django will use the value of the\n  :setting:`EMAIL_HOST_USER` setting.\n* ``auth_password``: The optional password to use to authenticate to the\n  SMTP server. If this isn't provided, Django will use the value of the\n  :setting:`EMAIL_HOST_PASSWORD` setting.\n* ``connection``: The optional email backend to use to send the mail.\n  If unspecified, an instance of the default backend will be used.\n  See the documentation on :ref:`Email backends <topic-email-backends>`\n  for more details.\n\nsend_mass_mail()\n================\n\n.. function:: send_mass_mail(datatuple, fail_silently=False, auth_user=None, auth_password=None, connection=None)\n\n``django.core.mail.send_mass_mail()`` is intended to handle mass emailing.\n\n``datatuple`` is a tuple in which each element is in this format::\n\n    (subject, message, from_email, recipient_list)\n\n``fail_silently``, ``auth_user`` and ``auth_password`` have the same functions\nas in :meth:`~django.core.mail.send_mail()`.\n\nEach separate element of ``datatuple`` results in a separate email message.\nAs in :meth:`~django.core.mail.send_mail()`, recipients in the same\n``recipient_list`` will all see the other addresses in the email messages'\n\"To:\" field.\n\nFor example, the following code would send two different messages to\ntwo different sets of recipients; however, only one connection to the\nmail server would be opened::\n\n    message1 = ('Subject here', 'Here is the message', 'from@example.com', ['first@example.com', 'other@example.com'])\n    message2 = ('Another Subject', 'Here is another message', 'from@example.com', ['second@test.com'])\n    send_mass_mail((message1, message2), fail_silently=False)\n\nsend_mass_mail() vs. send_mail()\n--------------------------------\n\nThe main difference between :meth:`~django.core.mail.send_mass_mail()` and\n:meth:`~django.core.mail.send_mail()` is that\n:meth:`~django.core.mail.send_mail()` opens a connection to the mail server\neach time it's executed, while :meth:`~django.core.mail.send_mass_mail()` uses\na single connection for all of its messages. This makes\n:meth:`~django.core.mail.send_mass_mail()` slightly more efficient.\n\nmail_admins()\n=============\n\n.. function:: mail_admins(subject, message, fail_silently=False, connection=None, html_message=None)\n\n``django.core.mail.mail_admins()`` is a shortcut for sending an email to the\nsite admins, as defined in the :setting:`ADMINS` setting.\n\n``mail_admins()`` prefixes the subject with the value of the\n:setting:`EMAIL_SUBJECT_PREFIX` setting, which is ``\"[Django] \"`` by default.\n\nThe \"From:\" header of the email will be the value of the\n:setting:`SERVER_EMAIL` setting.\n\nThis method exists for convenience and readability.\n\nIf ``html_message`` is provided, the resulting email will be a\n:mimetype:`multipart/alternative` email with ``message`` as the\n:mimetype:`text/plain` content type and ``html_message`` as the\n:mimetype:`text/html` content type.\n\nmail_managers()\n===============\n\n.. function:: mail_managers(subject, message, fail_silently=False, connection=None, html_message=None)\n\n``django.core.mail.mail_managers()`` is just like ``mail_admins()``, except it\nsends an email to the site managers, as defined in the :setting:`MANAGERS`\nsetting.\n\nExamples\n========\n\nThis sends a single email to john@example.com and jane@example.com, with them\nboth appearing in the \"To:\"::\n\n    send_mail('Subject', 'Message.', 'from@example.com',\n        ['john@example.com', 'jane@example.com'])\n\nThis sends a message to john@example.com and jane@example.com, with them both\nreceiving a separate email::\n\n    datatuple = (\n        ('Subject', 'Message.', 'from@example.com', ['john@example.com']),\n        ('Subject', 'Message.', 'from@example.com', ['jane@example.com']),\n    )\n    send_mass_mail(datatuple)\n\nPreventing header injection\n===========================\n\n`Header injection`_ is a security exploit in which an attacker inserts extra\nemail headers to control the \"To:\" and \"From:\" in email messages that your\nscripts generate.\n\nThe Django email functions outlined above all protect against header injection\nby forbidding newlines in header values. If any ``subject``, ``from_email`` or\n``recipient_list`` contains a newline (in either Unix, Windows or Mac style),\nthe email function (e.g. :meth:`~django.core.mail.send_mail()`) will raise\n``django.core.mail.BadHeaderError`` (a subclass of ``ValueError``) and, hence,\nwill not send the email. It's your responsibility to validate all data before\npassing it to the email functions.\n\nIf a ``message`` contains headers at the start of the string, the headers will\nsimply be printed as the first bit of the email message.\n\nHere's an example view that takes a ``subject``, ``message`` and ``from_email``\nfrom the request's POST data, sends that to admin@example.com and redirects to\n\"/contact/thanks/\" when it's done::\n\n    from django.core.mail import send_mail, BadHeaderError\n\n    def send_email(request):\n        subject = request.POST.get('subject', '')\n        message = request.POST.get('message', '')\n        from_email = request.POST.get('from_email', '')\n        if subject and message and from_email:\n            try:\n                send_mail(subject, message, from_email, ['admin@example.com'])\n            except BadHeaderError:\n                return HttpResponse('Invalid header found.')\n            return HttpResponseRedirect('/contact/thanks/')\n        else:\n            # In reality we'd use a form class\n            # to get proper validation errors.\n            return HttpResponse('Make sure all fields are entered and valid.')\n\n.. _Header injection: http://www.nyphp.org/phundamentals/8_Preventing-Email-Header-Injection\n\n.. _emailmessage-and-smtpconnection:\n\nThe EmailMessage class\n======================\n\nDjango's :meth:`~django.core.mail.send_mail()` and\n:meth:`~django.core.mail.send_mass_mail()` functions are actually thin\nwrappers that make use of the :class:`~django.core.mail.EmailMessage` class.\n\nNot all features of the :class:`~django.core.mail.EmailMessage` class are\navailable through the :meth:`~django.core.mail.send_mail()` and related\nwrapper functions. If you wish to use advanced features, such as BCC'ed\nrecipients, file attachments, or multi-part email, you'll need to create\n:class:`~django.core.mail.EmailMessage` instances directly.\n\n.. note::\n    This is a design feature. :meth:`~django.core.mail.send_mail()` and\n    related functions were originally the only interface Django provided.\n    However, the list of parameters they accepted was slowly growing over\n    time. It made sense to move to a more object-oriented design for email\n    messages and retain the original functions only for backwards\n    compatibility.\n\n:class:`~django.core.mail.EmailMessage` is responsible for creating the email\nmessage itself. The :ref:`email backend <topic-email-backends>` is then\nresponsible for sending the email.\n\nFor convenience, :class:`~django.core.mail.EmailMessage` provides a simple\n``send()`` method for sending a single email. If you need to send multiple\nmessages, the email backend API :ref:`provides an alternative\n<topics-sending-multiple-emails>`.\n\nEmailMessage Objects\n--------------------\n\n.. class:: EmailMessage\n\nThe :class:`~django.core.mail.EmailMessage` class is initialized with the\nfollowing parameters (in the given order, if positional arguments are used).\nAll parameters are optional and can be set at any time prior to calling the\n``send()`` method.\n\n* ``subject``: The subject line of the email.\n\n* ``body``: The body text. This should be a plain text message.\n\n* ``from_email``: The sender's address. Both ``fred@example.com`` and\n  ``Fred <fred@example.com>`` forms are legal. If omitted, the\n  :setting:`DEFAULT_FROM_EMAIL` setting is used.\n\n* ``to``: A list or tuple of recipient addresses.\n\n* ``bcc``: A list or tuple of addresses used in the \"Bcc\" header when\n  sending the email.\n\n* ``connection``: An email backend instance. Use this parameter if\n  you want to use the same connection for multiple messages. If omitted, a\n  new connection is created when ``send()`` is called.\n\n* ``attachments``: A list of attachments to put on the message. These can\n  be either ``email.MIMEBase.MIMEBase`` instances, or ``(filename,\n  content, mimetype)`` triples.\n\n* ``headers``: A dictionary of extra headers to put on the message. The\n  keys are the header name, values are the header values. It's up to the\n  caller to ensure header names and values are in the correct format for\n  an email message.\n\n* ``cc``: A list or tuple of recipient addresses used in the \"Cc\" header\n  when sending the email.\n\nFor example::\n\n    email = EmailMessage('Hello', 'Body goes here', 'from@example.com',\n                ['to1@example.com', 'to2@example.com'], ['bcc@example.com'],\n                headers = {'Reply-To': 'another@example.com'})\n\nThe class has the following methods:\n\n* ``send(fail_silently=False)`` sends the message. If a connection was\n  specified when the email was constructed, that connection will be used.\n  Otherwise, an instance of the default backend will be instantiated and\n  used. If the keyword argument ``fail_silently`` is ``True``, exceptions\n  raised while sending the message will be quashed.\n\n* ``message()`` constructs a ``django.core.mail.SafeMIMEText`` object (a\n  subclass of Python's ``email.MIMEText.MIMEText`` class) or a\n  ``django.core.mail.SafeMIMEMultipart`` object holding the message to be\n  sent. If you ever need to extend the\n  :class:`~django.core.mail.EmailMessage` class, you'll probably want to\n  override this method to put the content you want into the MIME object.\n\n* ``recipients()`` returns a list of all the recipients of the message,\n  whether they're recorded in the ``to``, ``cc`` or ``bcc`` attributes. This\n  is another method you might need to override when subclassing, because the\n  SMTP server needs to be told the full list of recipients when the message\n  is sent. If you add another way to specify recipients in your class, they\n  need to be returned from this method as well.\n\n* ``attach()`` creates a new file attachment and adds it to the message.\n  There are two ways to call ``attach()``:\n\n  * You can pass it a single argument that is an\n    ``email.MIMEBase.MIMEBase`` instance. This will be inserted directly\n    into the resulting message.\n\n  * Alternatively, you can pass ``attach()`` three arguments:\n    ``filename``, ``content`` and ``mimetype``. ``filename`` is the name\n    of the file attachment as it will appear in the email, ``content`` is\n    the data that will be contained inside the attachment and\n    ``mimetype`` is the optional MIME type for the attachment. If you\n    omit ``mimetype``, the MIME content type will be guessed from the\n    filename of the attachment.\n\n    For example::\n\n       message.attach('design.png', img_data, 'image/png')\n\n* ``attach_file()`` creates a new attachment using a file from your\n  filesystem. Call it with the path of the file to attach and, optionally,\n  the MIME type to use for the attachment. If the MIME type is omitted, it\n  will be guessed from the filename. The simplest use would be::\n\n    message.attach_file('/images/weather_map.png')\n\n.. _DEFAULT_FROM_EMAIL: ../settings/#default-from-email\n\nSending alternative content types\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nIt can be useful to include multiple versions of the content in an email; the\nclassic example is to send both text and HTML versions of a message. With\nDjango's email library, you can do this using the ``EmailMultiAlternatives``\nclass. This subclass of :class:`~django.core.mail.EmailMessage` has an\n``attach_alternative()`` method for including extra versions of the message\nbody in the email. All the other methods (including the class initialization)\nare inherited directly from :class:`~django.core.mail.EmailMessage`.\n\nTo send a text and HTML combination, you could write::\n\n    from django.core.mail import EmailMultiAlternatives\n\n    subject, from_email, to = 'hello', 'from@example.com', 'to@example.com'\n    text_content = 'This is an important message.'\n    html_content = '<p>This is an <strong>important</strong> message.</p>'\n    msg = EmailMultiAlternatives(subject, text_content, from_email, [to])\n    msg.attach_alternative(html_content, \"text/html\")\n    msg.send()\n\nBy default, the MIME type of the ``body`` parameter in an\n:class:`~django.core.mail.EmailMessage` is ``\"text/plain\"``. It is good\npractice to leave this alone, because it guarantees that any recipient will be\nable to read the email, regardless of their mail client. However, if you are\nconfident that your recipients can handle an alternative content type, you can\nuse the ``content_subtype`` attribute on the\n:class:`~django.core.mail.EmailMessage` class to change the main content type.\nThe major type will always be ``\"text\"``, but you can change the\nsubtype. For example::\n\n    msg = EmailMessage(subject, html_content, from_email, [to])\n    msg.content_subtype = \"html\"  # Main content is now text/html\n    msg.send()\n\n.. _topic-email-backends:\n\nEmail backends\n==============\n\nThe actual sending of an email is handled by the email backend.\n\nThe email backend class has the following methods:\n\n* ``open()`` instantiates an long-lived email-sending connection.\n\n* ``close()`` closes the current email-sending connection.\n\n* ``send_messages(email_messages)`` sends a list of\n  :class:`~django.core.mail.EmailMessage` objects. If the connection is\n  not open, this call will implicitly open the connection, and close the\n  connection afterwards. If the connection is already open, it will be\n  left open after mail has been sent.\n\nObtaining an instance of an email backend\n-----------------------------------------\n\nThe :meth:`get_connection` function in ``django.core.mail`` returns an\ninstance of the email backend that you can use.\n\n.. currentmodule:: django.core.mail\n\n.. function:: get_connection(backend=None, fail_silently=False, *args, **kwargs)\n\nBy default, a call to ``get_connection()`` will return an instance of the\nemail backend specified in :setting:`EMAIL_BACKEND`. If you specify the\n``backend`` argument, an instance of that backend will be instantiated.\n\nThe ``fail_silently`` argument controls how the backend should handle errors.\nIf ``fail_silently`` is True, exceptions during the email sending process\nwill be silently ignored.\n\nAll other arguments are passed directly to the constructor of the\nemail backend.\n\nDjango ships with several email sending backends. With the exception of the\nSMTP backend (which is the default), these backends are only useful during\ntesting and development. If you have special email sending requirements, you\ncan :ref:`write your own email backend <topic-custom-email-backend>`.\n\n.. _topic-email-smtp-backend:\n\nSMTP backend\n~~~~~~~~~~~~\n\nThis is the default backend. Email will be sent through a SMTP server.\nThe server address and authentication credentials are set in the\n:setting:`EMAIL_HOST`, :setting:`EMAIL_PORT`, :setting:`EMAIL_HOST_USER`,\n:setting:`EMAIL_HOST_PASSWORD` and :setting:`EMAIL_USE_TLS` settings in your\nsettings file.\n\nThe SMTP backend is the default configuration inherited by Django. If you\nwant to specify it explicitly, put the following in your settings::\n\n    EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'\n\n.. _topic-email-console-backend:\n\nConsole backend\n~~~~~~~~~~~~~~~\n\nInstead of sending out real emails the console backend just writes the\nemails that would be send to the standard output. By default, the console\nbackend writes to ``stdout``. You can use a different stream-like object by\nproviding the ``stream`` keyword argument when constructing the connection.\n\nTo specify this backend, put the following in your settings::\n\n    EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'\n\nThis backend is not intended for use in production -- it is provided as a\nconvenience that can be used during development.\n\n.. _topic-email-file-backend:\n\nFile backend\n~~~~~~~~~~~~\n\nThe file backend writes emails to a file. A new file is created for each new\nsession that is opened on this backend. The directory to which the files are\nwritten is either taken from the :setting:`EMAIL_FILE_PATH` setting or from\nthe ``file_path`` keyword when creating a connection with\n:meth:`~django.core.mail.get_connection`.\n\nTo specify this backend, put the following in your settings::\n\n    EMAIL_BACKEND = 'django.core.mail.backends.filebased.EmailBackend'\n    EMAIL_FILE_PATH = '/tmp/app-messages' # change this to a proper location\n\nThis backend is not intended for use in production -- it is provided as a\nconvenience that can be used during development.\n\n.. _topic-email-memory-backend:\n\nIn-memory backend\n~~~~~~~~~~~~~~~~~\n\nThe ``'locmem'`` backend stores messages in a special attribute of the\n``django.core.mail`` module. The ``outbox`` attribute is created when the\nfirst message is sent. It's a list with an\n:class:`~django.core.mail.EmailMessage` instance for each message that would\nbe send.\n\nTo specify this backend, put the following in your settings::\n\n  EMAIL_BACKEND = 'django.core.mail.backends.locmem.EmailBackend'\n\nThis backend is not intended for use in production -- it is provided as a\nconvenience that can be used during development and testing.\n\n.. _topic-email-dummy-backend:\n\nDummy backend\n~~~~~~~~~~~~~\n\nAs the name suggests the dummy backend does nothing with your messages. To\nspecify this backend, put the following in your settings::\n\n   EMAIL_BACKEND = 'django.core.mail.backends.dummy.EmailBackend'\n\nThis backend is not intended for use in production -- it is provided as a\nconvenience that can be used during development.\n\n.. _topic-custom-email-backend:\n\nDefining a custom email backend\n-------------------------------\n\nIf you need to change how emails are sent you can write your own email\nbackend. The :setting:`EMAIL_BACKEND` setting in your settings file is then\nthe Python import path for your backend class.\n\nCustom email backends should subclass ``BaseEmailBackend`` that is located in\nthe ``django.core.mail.backends.base`` module. A custom email backend must\nimplement the ``send_messages(email_messages)`` method. This method receives a\nlist of :class:`~django.core.mail.EmailMessage` instances and returns the\nnumber of successfully delivered messages. If your backend has any concept of\na persistent session or connection, you should also implement the ``open()``\nand ``close()`` methods. Refer to ``smtp.EmailBackend`` for a reference\nimplementation.\n\n.. _topics-sending-multiple-emails:\n\nSending multiple emails\n-----------------------\n\nEstablishing and closing an SMTP connection (or any other network connection,\nfor that matter) is an expensive process. If you have a lot of emails to send,\nit makes sense to reuse an SMTP connection, rather than creating and\ndestroying a connection every time you want to send an email.\n\nThere are two ways you tell an email backend to reuse a connection.\n\nFirstly, you can use the ``send_messages()`` method. ``send_messages()`` takes\na list of :class:`~django.core.mail.EmailMessage` instances (or subclasses),\nand sends them all using a single connection.\n\nFor example, if you have a function called ``get_notification_email()`` that\nreturns a list of :class:`~django.core.mail.EmailMessage` objects representing\nsome periodic email you wish to send out, you could send these emails using\na single call to send_messages::\n\n    from django.core import mail\n    connection = mail.get_connection()   # Use default email connection\n    messages = get_notification_email()\n    connection.send_messages(messages)\n\nIn this example, the call to ``send_messages()`` opens a connection on the\nbackend, sends the list of messages, and then closes the connection again.\n\nThe second approach is to use the ``open()`` and ``close()`` methods on the\nemail backend to manually control the connection. ``send_messages()`` will not\nmanually open or close the connection if it is already open, so if you\nmanually open the connection, you can control when it is closed. For example::\n\n    from django.core import mail\n    connection = mail.get_connection()\n\n    # Manually open the connection\n    connection.open()\n\n    # Construct an email message that uses the connection\n    email1 = mail.EmailMessage('Hello', 'Body goes here', 'from@example.com',\n                              ['to1@example.com'], connection=connection)\n    email1.send() # Send the email\n\n    # Construct two more messages\n    email2 = mail.EmailMessage('Hello', 'Body goes here', 'from@example.com',\n                              ['to2@example.com'])\n    email3 = mail.EmailMessage('Hello', 'Body goes here', 'from@example.com',\n                              ['to3@example.com'])\n\n    # Send the two emails in a single call -\n    connection.send_messages([email2, email3])\n    # The connection was already open so send_messages() doesn't close it.\n    # We need to manually close the connection.\n    connection.close()\n\n\nTesting email sending\n=====================\n\nThere are times when you do not want Django to send emails at\nall. For example, while developing a Web site, you probably don't want\nto send out thousands of emails -- but you may want to validate that\nemails will be sent to the right people under the right conditions,\nand that those emails will contain the correct content.\n\nThe easiest way to test your project's use of email is to use the ``console``\nemail backend. This backend redirects all email to stdout, allowing you to\ninspect the content of mail.\n\nThe ``file`` email backend can also be useful during development -- this backend\ndumps the contents of every SMTP connection to a file that can be inspected\nat your leisure.\n\nAnother approach is to use a \"dumb\" SMTP server that receives the emails\nlocally and displays them to the terminal, but does not actually send\nanything. Python has a built-in way to accomplish this with a single command::\n\n    python -m smtpd -n -c DebuggingServer localhost:1025\n\nThis command will start a simple SMTP server listening on port 1025 of\nlocalhost. This server simply prints to standard output all email headers and\nthe email body. You then only need to set the :setting:`EMAIL_HOST` and\n:setting:`EMAIL_PORT` accordingly, and you are set.\n\nFor a more detailed discussion of testing and processing of emails locally,\nsee the Python documentation for the :mod:`smtpd` module.\n"
  },
  {
    "path": "Django-1.5.1/docs/topics/files.txt",
    "content": "==============\nManaging files\n==============\n\nThis document describes Django's file access APIs for files such as those\nuploaded by a user. The lower level APIs are general enough that you could use\nthem for other purposes. If you want to handle \"static files\" (JS, CSS, etc),\nsee :doc:`/howto/static-files`.\n\nBy default, Django stores files locally, using the :setting:`MEDIA_ROOT` and\n:setting:`MEDIA_URL` settings. The examples below assume that you're using these\ndefaults.\n\nHowever, Django provides ways to write custom `file storage systems`_ that\nallow you to completely customize where and how Django stores files. The\nsecond half of this document describes how these storage systems work.\n\n.. _file storage systems: `File storage`_\n\nUsing files in models\n=====================\n\nWhen you use a :class:`~django.db.models.FileField` or\n:class:`~django.db.models.ImageField`, Django provides a set of APIs you can use\nto deal with that file.\n\nConsider the following model, using an :class:`~django.db.models.ImageField` to\nstore a photo::\n\n    class Car(models.Model):\n        name = models.CharField(max_length=255)\n        price = models.DecimalField(max_digits=5, decimal_places=2)\n        photo = models.ImageField(upload_to='cars')\n\nAny ``Car`` instance will have a ``photo`` attribute that you can use to get at\nthe details of the attached photo::\n\n    >>> car = Car.objects.get(name=\"57 Chevy\")\n    >>> car.photo\n    <ImageFieldFile: chevy.jpg>\n    >>> car.photo.name\n    u'cars/chevy.jpg'\n    >>> car.photo.path\n    u'/media/cars/chevy.jpg'\n    >>> car.photo.url\n    u'http://media.example.com/cars/chevy.jpg'\n\nThis object -- ``car.photo`` in the example -- is a ``File`` object, which means\nit has all the methods and attributes described below.\n\n.. note::\n    The file is saved as part of saving the model in the database, so the actual\n    file name used on disk cannot be relied on until after the model has been\n    saved.\n\n\nThe ``File`` object\n===================\n\nInternally, Django uses a :class:`django.core.files.File` instance any time it\nneeds to represent a file. This object is a thin wrapper around Python's\n`built-in file object`_ with some Django-specific additions.\n\n.. _built-in file object: http://docs.python.org/library/stdtypes.html#bltin-file-objects\n\nMost of the time you'll simply use a ``File`` that Django's given you (i.e. a\nfile attached to a model as above, or perhaps an uploaded file).\n\nIf you need to construct a ``File`` yourself, the easiest way is to create one\nusing a Python built-in ``file`` object::\n\n    >>> from django.core.files import File\n\n    # Create a Python file object using open()\n    >>> f = open('/tmp/hello.world', 'w')\n    >>> myfile = File(f)\n\nNow you can use any of the documented attributes and methods\nof the :class:`~django.core.files.File` class.\n\nBe aware that files created in this way are not automatically closed.\nThe following approach may be used to close files automatically::\n\n    >>> from django.core.files import File\n\n    # Create a Python file object using open() and the with statement\n    >>> with open('/tmp/hello.world', 'w') as f:\n    >>>     myfile = File(f)\n    >>>     for line in myfile:\n    >>>         print line\n    >>> myfile.closed\n    True\n    >>> f.closed\n    True\n\nClosing files is especially important when accessing file fields in a loop\nover a large number of objects:: If files are not manually closed after\naccessing them, the risk of running out of file descriptors may arise. This\nmay lead to the following error::\n\n    IOError: [Errno 24] Too many open files\n\n\nFile storage\n============\n\nBehind the scenes, Django delegates decisions about how and where to store files\nto a file storage system. This is the object that actually understands things\nlike file systems, opening and reading files, etc.\n\nDjango's default file storage is given by the :setting:`DEFAULT_FILE_STORAGE`\nsetting; if you don't explicitly provide a storage system, this is the one that\nwill be used.\n\nSee below for details of the built-in default file storage system, and see\n:doc:`/howto/custom-file-storage` for information on writing your own file\nstorage system.\n\nStorage objects\n---------------\n\nThough most of the time you'll want to use a ``File`` object (which delegates to\nthe proper storage for that file), you can use file storage systems directly.\nYou can create an instance of some custom file storage class, or -- often more\nuseful -- you can use the global default storage system::\n\n    >>> from django.core.files.storage import default_storage\n    >>> from django.core.files.base import ContentFile\n\n    >>> path = default_storage.save('/path/to/file', ContentFile('new content'))\n    >>> path\n    u'/path/to/file'\n\n    >>> default_storage.size(path)\n    11\n    >>> default_storage.open(path).read()\n    'new content'\n\n    >>> default_storage.delete(path)\n    >>> default_storage.exists(path)\n    False\n\nSee :doc:`/ref/files/storage` for the file storage API.\n\n.. _builtin-fs-storage:\n\nThe built-in filesystem storage class\n-------------------------------------\n\nDjango ships with a built-in ``FileSystemStorage`` class (defined in\n``django.core.files.storage``) which implements basic local filesystem file\nstorage. Its initializer takes two arguments:\n\n======================  ===================================================\nArgument                Description\n======================  ===================================================\n``location``            Optional. Absolute path to the directory that will\n                        hold the files. If omitted, it will be set to the\n                        value of your :setting:`MEDIA_ROOT` setting.\n``base_url``            Optional. URL that serves the files stored at this\n                        location. If omitted, it will default to the value\n                        of your :setting:`MEDIA_URL` setting.\n======================  ===================================================\n\nFor example, the following code will store uploaded files under\n``/media/photos`` regardless of what your :setting:`MEDIA_ROOT` setting is::\n\n    from django.db import models\n    from django.core.files.storage import FileSystemStorage\n\n    fs = FileSystemStorage(location='/media/photos')\n\n    class Car(models.Model):\n        ...\n        photo = models.ImageField(storage=fs)\n\n:doc:`Custom storage systems </howto/custom-file-storage>` work the same way:\nyou can pass them in as the ``storage`` argument to a\n:class:`~django.db.models.FileField`.\n"
  },
  {
    "path": "Django-1.5.1/docs/topics/forms/formsets.txt",
    "content": ".. _formsets:\n\nFormsets\n========\n\n.. class:: django.forms.formset.BaseFormSet\n\nA formset is a layer of abstraction to working with multiple forms on the same\npage. It can be best compared to a data grid. Let's say you have the following\nform::\n\n    >>> from django import forms\n    >>> class ArticleForm(forms.Form):\n    ...     title = forms.CharField()\n    ...     pub_date = forms.DateField()\n\nYou might want to allow the user to create several articles at once. To create\na formset out of an ``ArticleForm`` you would do::\n\n    >>> from django.forms.formsets import formset_factory\n    >>> ArticleFormSet = formset_factory(ArticleForm)\n\nYou now have created a formset named ``ArticleFormSet``. The formset gives you\nthe ability to iterate over the forms in the formset and display them as you\nwould with a regular form::\n\n    >>> formset = ArticleFormSet()\n    >>> for form in formset:\n    ...     print(form.as_table())\n    <tr><th><label for=\"id_form-0-title\">Title:</label></th><td><input type=\"text\" name=\"form-0-title\" id=\"id_form-0-title\" /></td></tr>\n    <tr><th><label for=\"id_form-0-pub_date\">Pub date:</label></th><td><input type=\"text\" name=\"form-0-pub_date\" id=\"id_form-0-pub_date\" /></td></tr>\n\nAs you can see it only displayed one empty form. The number of empty forms\nthat is displayed is controlled by the ``extra`` parameter. By default,\n``formset_factory`` defines one extra form; the following example will\ndisplay two blank forms::\n\n    >>> ArticleFormSet = formset_factory(ArticleForm, extra=2)\n\nIterating over the ``formset`` will render the forms in the order they were\ncreated. You can change this order by providing an alternate implementation for\nthe ``__iter__()`` method.\n\nFormsets can also be indexed into, which returns the corresponding form. If you\noverride ``__iter__``, you will need to also override ``__getitem__`` to have\nmatching behavior.\n\n.. _formsets-initial-data:\n\nUsing initial data with a formset\n---------------------------------\n\nInitial data is what drives the main usability of a formset. As shown above\nyou can define the number of extra forms. What this means is that you are\ntelling the formset how many additional forms to show in addition to the\nnumber of forms it generates from the initial data. Lets take a look at an\nexample::\n\n    >>> ArticleFormSet = formset_factory(ArticleForm, extra=2)\n    >>> formset = ArticleFormSet(initial=[\n    ...     {'title': u'Django is now open source',\n    ...      'pub_date': datetime.date.today(),}\n    ... ])\n\n    >>> for form in formset:\n    ...     print(form.as_table())\n    <tr><th><label for=\"id_form-0-title\">Title:</label></th><td><input type=\"text\" name=\"form-0-title\" value=\"Django is now open source\" id=\"id_form-0-title\" /></td></tr>\n    <tr><th><label for=\"id_form-0-pub_date\">Pub date:</label></th><td><input type=\"text\" name=\"form-0-pub_date\" value=\"2008-05-12\" id=\"id_form-0-pub_date\" /></td></tr>\n    <tr><th><label for=\"id_form-1-title\">Title:</label></th><td><input type=\"text\" name=\"form-1-title\" id=\"id_form-1-title\" /></td></tr>\n    <tr><th><label for=\"id_form-1-pub_date\">Pub date:</label></th><td><input type=\"text\" name=\"form-1-pub_date\" id=\"id_form-1-pub_date\" /></td></tr>\n    <tr><th><label for=\"id_form-2-title\">Title:</label></th><td><input type=\"text\" name=\"form-2-title\" id=\"id_form-2-title\" /></td></tr>\n    <tr><th><label for=\"id_form-2-pub_date\">Pub date:</label></th><td><input type=\"text\" name=\"form-2-pub_date\" id=\"id_form-2-pub_date\" /></td></tr>\n\nThere are now a total of three forms showing above. One for the initial data\nthat was passed in and two extra forms. Also note that we are passing in a\nlist of dictionaries as the initial data.\n\n.. seealso::\n\n    :ref:`Creating formsets from models with model formsets <model-formsets>`.\n\n.. _formsets-max-num:\n\nLimiting the maximum number of forms\n------------------------------------\n\nThe ``max_num`` parameter to ``formset_factory`` gives you the ability to\nlimit the maximum number of empty forms the formset will display::\n\n    >>> ArticleFormSet = formset_factory(ArticleForm, extra=2, max_num=1)\n    >>> formset = ArticleFormset()\n    >>> for form in formset:\n    ...     print(form.as_table())\n    <tr><th><label for=\"id_form-0-title\">Title:</label></th><td><input type=\"text\" name=\"form-0-title\" id=\"id_form-0-title\" /></td></tr>\n    <tr><th><label for=\"id_form-0-pub_date\">Pub date:</label></th><td><input type=\"text\" name=\"form-0-pub_date\" id=\"id_form-0-pub_date\" /></td></tr>\n\nIf the value of ``max_num`` is greater than the number of existing\nobjects, up to ``extra`` additional blank forms will be added to the formset,\nso long as the total number of forms does not exceed ``max_num``.\n\nA ``max_num`` value of ``None`` (the default) puts a high limit on the number\nof forms displayed (1000). In practice this is equivalent to no limit.\n\nFormset validation\n------------------\n\nValidation with a formset is almost identical to a regular ``Form``. There is\nan ``is_valid`` method on the formset to provide a convenient way to validate\nall forms in the formset::\n\n    >>> ArticleFormSet = formset_factory(ArticleForm)\n    >>> data = {\n    ...     'form-TOTAL_FORMS': u'1',\n    ...     'form-INITIAL_FORMS': u'0',\n    ...     'form-MAX_NUM_FORMS': u'',\n    ... }\n    >>> formset = ArticleFormSet(data)\n    >>> formset.is_valid()\n    True\n\nWe passed in no data to the formset which is resulting in a valid form. The\nformset is smart enough to ignore extra forms that were not changed. If we\nprovide an invalid article::\n\n    >>> data = {\n    ...     'form-TOTAL_FORMS': u'2',\n    ...     'form-INITIAL_FORMS': u'0',\n    ...     'form-MAX_NUM_FORMS': u'',\n    ...     'form-0-title': u'Test',\n    ...     'form-0-pub_date': u'1904-06-16',\n    ...     'form-1-title': u'Test',\n    ...     'form-1-pub_date': u'', # <-- this date is missing but required\n    ... }\n    >>> formset = ArticleFormSet(data)\n    >>> formset.is_valid()\n    False\n    >>> formset.errors\n    [{}, {'pub_date': [u'This field is required.']}]\n\nAs we can see, ``formset.errors`` is a list whose entries correspond to the\nforms in the formset. Validation was performed for each of the two forms, and\nthe expected error message appears for the second item.\n\n.. versionadded:: 1.4\n\nWe can also check if form data differs from the initial data (i.e. the form was\nsent without any data)::\n\n    >>> data = {\n    ...     'form-TOTAL_FORMS': u'1',\n    ...     'form-INITIAL_FORMS': u'0',\n    ...     'form-MAX_NUM_FORMS': u'',\n    ...     'form-0-title': u'',\n    ...     'form-0-pub_date': u'',\n    ... }\n    >>> formset = ArticleFormSet(data)\n    >>> formset.has_changed()\n    False\n\n.. _understanding-the-managementform:\n\nUnderstanding the ManagementForm\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nYou may have noticed the additional data (``form-TOTAL_FORMS``,\n``form-INITIAL_FORMS`` and ``form-MAX_NUM_FORMS``) that was required\nin the formset's data above. This data is required for the\n``ManagementForm``. This form is used by the formset to manage the\ncollection of forms contained in the formset. If you don't provide\nthis management data, an exception will be raised::\n\n    >>> data = {\n    ...     'form-0-title': u'Test',\n    ...     'form-0-pub_date': u'',\n    ... }\n    >>> formset = ArticleFormSet(data)\n    Traceback (most recent call last):\n    ...\n    django.forms.util.ValidationError: [u'ManagementForm data is missing or has been tampered with']\n\nIt is used to keep track of how many form instances are being displayed. If\nyou are adding new forms via JavaScript, you should increment the count fields\nin this form as well.\n\nThe management form is available as an attribute of the formset\nitself. When rendering a formset in a template, you can include all\nthe management data by rendering ``{{ my_formset.management_form }}``\n(substituting the name of your formset as appropriate).\n\n``total_form_count`` and ``initial_form_count``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n``BaseFormSet`` has a couple of methods that are closely related to the\n``ManagementForm``, ``total_form_count`` and ``initial_form_count``.\n\n``total_form_count`` returns the total number of forms in this formset.\n``initial_form_count`` returns the number of forms in the formset that were\npre-filled, and is also used to determine how many forms are required. You\nwill probably never need to override either of these methods, so please be\nsure you understand what they do before doing so.\n\n``empty_form``\n~~~~~~~~~~~~~~\n\n``BaseFormSet`` provides an additional attribute ``empty_form`` which returns\na form instance with a prefix of ``__prefix__`` for easier use in dynamic\nforms with JavaScript.\n\nCustom formset validation\n~~~~~~~~~~~~~~~~~~~~~~~~~\n\nA formset has a ``clean`` method similar to the one on a ``Form`` class. This\nis where you define your own validation that works at the formset level::\n\n    >>> from django.forms.formsets import BaseFormSet\n\n    >>> class BaseArticleFormSet(BaseFormSet):\n    ...     def clean(self):\n    ...         \"\"\"Checks that no two articles have the same title.\"\"\"\n    ...         if any(self.errors):\n    ...             # Don't bother validating the formset unless each form is valid on its own\n    ...             return\n    ...         titles = []\n    ...         for i in range(0, self.total_form_count()):\n    ...             form = self.forms[i]\n    ...             title = form.cleaned_data['title']\n    ...             if title in titles:\n    ...                 raise forms.ValidationError(\"Articles in a set must have distinct titles.\")\n    ...             titles.append(title)\n\n    >>> ArticleFormSet = formset_factory(ArticleForm, formset=BaseArticleFormSet)\n    >>> data = {\n    ...     'form-TOTAL_FORMS': u'2',\n    ...     'form-INITIAL_FORMS': u'0',\n    ...     'form-MAX_NUM_FORMS': u'',\n    ...     'form-0-title': u'Test',\n    ...     'form-0-pub_date': u'1904-06-16',\n    ...     'form-1-title': u'Test',\n    ...     'form-1-pub_date': u'1912-06-23',\n    ... }\n    >>> formset = ArticleFormSet(data)\n    >>> formset.is_valid()\n    False\n    >>> formset.errors\n    [{}, {}]\n    >>> formset.non_form_errors()\n    [u'Articles in a set must have distinct titles.']\n\nThe formset ``clean`` method is called after all the ``Form.clean`` methods\nhave been called. The errors will be found using the ``non_form_errors()``\nmethod on the formset.\n\nDealing with ordering and deletion of forms\n-------------------------------------------\n\nCommon use cases with a formset is dealing with ordering and deletion of the\nform instances. This has been dealt with for you. The ``formset_factory``\nprovides two optional parameters ``can_order`` and ``can_delete`` that will do\nthe extra work of adding the extra fields and providing simpler ways of\ngetting to that data.\n\n``can_order``\n~~~~~~~~~~~~~\n\nDefault: ``False``\n\nLets you create a formset with the ability to order::\n\n    >>> ArticleFormSet = formset_factory(ArticleForm, can_order=True)\n    >>> formset = ArticleFormSet(initial=[\n    ...     {'title': u'Article #1', 'pub_date': datetime.date(2008, 5, 10)},\n    ...     {'title': u'Article #2', 'pub_date': datetime.date(2008, 5, 11)},\n    ... ])\n    >>> for form in formset:\n    ...     print(form.as_table())\n    <tr><th><label for=\"id_form-0-title\">Title:</label></th><td><input type=\"text\" name=\"form-0-title\" value=\"Article #1\" id=\"id_form-0-title\" /></td></tr>\n    <tr><th><label for=\"id_form-0-pub_date\">Pub date:</label></th><td><input type=\"text\" name=\"form-0-pub_date\" value=\"2008-05-10\" id=\"id_form-0-pub_date\" /></td></tr>\n    <tr><th><label for=\"id_form-0-ORDER\">Order:</label></th><td><input type=\"text\" name=\"form-0-ORDER\" value=\"1\" id=\"id_form-0-ORDER\" /></td></tr>\n    <tr><th><label for=\"id_form-1-title\">Title:</label></th><td><input type=\"text\" name=\"form-1-title\" value=\"Article #2\" id=\"id_form-1-title\" /></td></tr>\n    <tr><th><label for=\"id_form-1-pub_date\">Pub date:</label></th><td><input type=\"text\" name=\"form-1-pub_date\" value=\"2008-05-11\" id=\"id_form-1-pub_date\" /></td></tr>\n    <tr><th><label for=\"id_form-1-ORDER\">Order:</label></th><td><input type=\"text\" name=\"form-1-ORDER\" value=\"2\" id=\"id_form-1-ORDER\" /></td></tr>\n    <tr><th><label for=\"id_form-2-title\">Title:</label></th><td><input type=\"text\" name=\"form-2-title\" id=\"id_form-2-title\" /></td></tr>\n    <tr><th><label for=\"id_form-2-pub_date\">Pub date:</label></th><td><input type=\"text\" name=\"form-2-pub_date\" id=\"id_form-2-pub_date\" /></td></tr>\n    <tr><th><label for=\"id_form-2-ORDER\">Order:</label></th><td><input type=\"text\" name=\"form-2-ORDER\" id=\"id_form-2-ORDER\" /></td></tr>\n\nThis adds an additional field to each form. This new field is named ``ORDER``\nand is an ``forms.IntegerField``. For the forms that came from the initial\ndata it automatically assigned them a numeric value. Let's look at what will\nhappen when the user changes these values::\n\n    >>> data = {\n    ...     'form-TOTAL_FORMS': u'3',\n    ...     'form-INITIAL_FORMS': u'2',\n    ...     'form-MAX_NUM_FORMS': u'',\n    ...     'form-0-title': u'Article #1',\n    ...     'form-0-pub_date': u'2008-05-10',\n    ...     'form-0-ORDER': u'2',\n    ...     'form-1-title': u'Article #2',\n    ...     'form-1-pub_date': u'2008-05-11',\n    ...     'form-1-ORDER': u'1',\n    ...     'form-2-title': u'Article #3',\n    ...     'form-2-pub_date': u'2008-05-01',\n    ...     'form-2-ORDER': u'0',\n    ... }\n\n    >>> formset = ArticleFormSet(data, initial=[\n    ...     {'title': u'Article #1', 'pub_date': datetime.date(2008, 5, 10)},\n    ...     {'title': u'Article #2', 'pub_date': datetime.date(2008, 5, 11)},\n    ... ])\n    >>> formset.is_valid()\n    True\n    >>> for form in formset.ordered_forms:\n    ...     print(form.cleaned_data)\n    {'pub_date': datetime.date(2008, 5, 1), 'ORDER': 0, 'title': u'Article #3'}\n    {'pub_date': datetime.date(2008, 5, 11), 'ORDER': 1, 'title': u'Article #2'}\n    {'pub_date': datetime.date(2008, 5, 10), 'ORDER': 2, 'title': u'Article #1'}\n\n``can_delete``\n~~~~~~~~~~~~~~\n\nDefault: ``False``\n\nLets you create a formset with the ability to delete::\n\n    >>> ArticleFormSet = formset_factory(ArticleForm, can_delete=True)\n    >>> formset = ArticleFormSet(initial=[\n    ...     {'title': u'Article #1', 'pub_date': datetime.date(2008, 5, 10)},\n    ...     {'title': u'Article #2', 'pub_date': datetime.date(2008, 5, 11)},\n    ... ])\n    >>> for form in formset:\n    ....    print(form.as_table())\n    <input type=\"hidden\" name=\"form-TOTAL_FORMS\" value=\"3\" id=\"id_form-TOTAL_FORMS\" /><input type=\"hidden\" name=\"form-INITIAL_FORMS\" value=\"2\" id=\"id_form-INITIAL_FORMS\" /><input type=\"hidden\" name=\"form-MAX_NUM_FORMS\" id=\"id_form-MAX_NUM_FORMS\" />\n    <tr><th><label for=\"id_form-0-title\">Title:</label></th><td><input type=\"text\" name=\"form-0-title\" value=\"Article #1\" id=\"id_form-0-title\" /></td></tr>\n    <tr><th><label for=\"id_form-0-pub_date\">Pub date:</label></th><td><input type=\"text\" name=\"form-0-pub_date\" value=\"2008-05-10\" id=\"id_form-0-pub_date\" /></td></tr>\n    <tr><th><label for=\"id_form-0-DELETE\">Delete:</label></th><td><input type=\"checkbox\" name=\"form-0-DELETE\" id=\"id_form-0-DELETE\" /></td></tr>\n    <tr><th><label for=\"id_form-1-title\">Title:</label></th><td><input type=\"text\" name=\"form-1-title\" value=\"Article #2\" id=\"id_form-1-title\" /></td></tr>\n    <tr><th><label for=\"id_form-1-pub_date\">Pub date:</label></th><td><input type=\"text\" name=\"form-1-pub_date\" value=\"2008-05-11\" id=\"id_form-1-pub_date\" /></td></tr>\n    <tr><th><label for=\"id_form-1-DELETE\">Delete:</label></th><td><input type=\"checkbox\" name=\"form-1-DELETE\" id=\"id_form-1-DELETE\" /></td></tr>\n    <tr><th><label for=\"id_form-2-title\">Title:</label></th><td><input type=\"text\" name=\"form-2-title\" id=\"id_form-2-title\" /></td></tr>\n    <tr><th><label for=\"id_form-2-pub_date\">Pub date:</label></th><td><input type=\"text\" name=\"form-2-pub_date\" id=\"id_form-2-pub_date\" /></td></tr>\n    <tr><th><label for=\"id_form-2-DELETE\">Delete:</label></th><td><input type=\"checkbox\" name=\"form-2-DELETE\" id=\"id_form-2-DELETE\" /></td></tr>\n\nSimilar to ``can_order`` this adds a new field to each form named ``DELETE``\nand is a ``forms.BooleanField``. When data comes through marking any of the\ndelete fields you can access them with ``deleted_forms``::\n\n    >>> data = {\n    ...     'form-TOTAL_FORMS': u'3',\n    ...     'form-INITIAL_FORMS': u'2',\n    ...     'form-MAX_NUM_FORMS': u'',\n    ...     'form-0-title': u'Article #1',\n    ...     'form-0-pub_date': u'2008-05-10',\n    ...     'form-0-DELETE': u'on',\n    ...     'form-1-title': u'Article #2',\n    ...     'form-1-pub_date': u'2008-05-11',\n    ...     'form-1-DELETE': u'',\n    ...     'form-2-title': u'',\n    ...     'form-2-pub_date': u'',\n    ...     'form-2-DELETE': u'',\n    ... }\n\n    >>> formset = ArticleFormSet(data, initial=[\n    ...     {'title': u'Article #1', 'pub_date': datetime.date(2008, 5, 10)},\n    ...     {'title': u'Article #2', 'pub_date': datetime.date(2008, 5, 11)},\n    ... ])\n    >>> [form.cleaned_data for form in formset.deleted_forms]\n    [{'DELETE': True, 'pub_date': datetime.date(2008, 5, 10), 'title': u'Article #1'}]\n\nAdding additional fields to a formset\n-------------------------------------\n\nIf you need to add additional fields to the formset this can be easily\naccomplished. The formset base class provides an ``add_fields`` method. You\ncan simply override this method to add your own fields or even redefine the\ndefault fields/attributes of the order and deletion fields::\n\n    >>> class BaseArticleFormSet(BaseFormSet):\n    ...     def add_fields(self, form, index):\n    ...         super(BaseArticleFormSet, self).add_fields(form, index)\n    ...         form.fields[\"my_field\"] = forms.CharField()\n\n    >>> ArticleFormSet = formset_factory(ArticleForm, formset=BaseArticleFormSet)\n    >>> formset = ArticleFormSet()\n    >>> for form in formset:\n    ...     print(form.as_table())\n    <tr><th><label for=\"id_form-0-title\">Title:</label></th><td><input type=\"text\" name=\"form-0-title\" id=\"id_form-0-title\" /></td></tr>\n    <tr><th><label for=\"id_form-0-pub_date\">Pub date:</label></th><td><input type=\"text\" name=\"form-0-pub_date\" id=\"id_form-0-pub_date\" /></td></tr>\n    <tr><th><label for=\"id_form-0-my_field\">My field:</label></th><td><input type=\"text\" name=\"form-0-my_field\" id=\"id_form-0-my_field\" /></td></tr>\n\nUsing a formset in views and templates\n--------------------------------------\n\nUsing a formset inside a view is as easy as using a regular ``Form`` class.\nThe only thing you will want to be aware of is making sure to use the\nmanagement form inside the template. Let's look at a sample view:\n\n.. code-block:: python\n\n    def manage_articles(request):\n        ArticleFormSet = formset_factory(ArticleForm)\n        if request.method == 'POST':\n            formset = ArticleFormSet(request.POST, request.FILES)\n            if formset.is_valid():\n                # do something with the formset.cleaned_data\n                pass\n        else:\n            formset = ArticleFormSet()\n        return render_to_response('manage_articles.html', {'formset': formset})\n\nThe ``manage_articles.html`` template might look like this:\n\n.. code-block:: html+django\n\n    <form method=\"post\" action=\"\">\n        {{ formset.management_form }}\n        <table>\n            {% for form in formset %}\n            {{ form }}\n            {% endfor %}\n        </table>\n    </form>\n\nHowever the above can be slightly shortcutted and let the formset itself deal\nwith the management form:\n\n.. code-block:: html+django\n\n    <form method=\"post\" action=\"\">\n        <table>\n            {{ formset }}\n        </table>\n    </form>\n\nThe above ends up calling the ``as_table`` method on the formset class.\n\n.. _manually-rendered-can-delete-and-can-order:\n\nManually rendered ``can_delete`` and ``can_order``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nIf you manually render fields in the template, you can render\n``can_delete`` parameter with ``{{ form.DELETE }}``:\n\n.. code-block:: html+django\n\n    <form method=\"post\" action=\"\">\n        {{ formset.management_form }}\n        {% for form in formset %}\n            {{ form.id }}\n            <ul>\n                <li>{{ form.title }}</li>\n                {% if formset.can_delete %}\n                    <li>{{ form.DELETE }}</li>\n                {% endif %}\n            </ul>\n        {% endfor %}\n    </form>\n\n\nSimilarly, if the formset has the ability to order (``can_order=True``), it is possible to render it\nwith ``{{ form.ORDER }}``.\n\nUsing more than one formset in a view\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nYou are able to use more than one formset in a view if you like. Formsets\nborrow much of its behavior from forms. With that said you are able to use\n``prefix`` to prefix formset form field names with a given value to allow\nmore than one formset to be sent to a view without name clashing. Lets take\na look at how this might be accomplished:\n\n.. code-block:: python\n\n    def manage_articles(request):\n        ArticleFormSet = formset_factory(ArticleForm)\n        BookFormSet = formset_factory(BookForm)\n        if request.method == 'POST':\n            article_formset = ArticleFormSet(request.POST, request.FILES, prefix='articles')\n            book_formset = BookFormSet(request.POST, request.FILES, prefix='books')\n            if article_formset.is_valid() and book_formset.is_valid():\n                # do something with the cleaned_data on the formsets.\n                pass\n        else:\n            article_formset = ArticleFormSet(prefix='articles')\n            book_formset = BookFormSet(prefix='books')\n        return render_to_response('manage_articles.html', {\n            'article_formset': article_formset,\n            'book_formset': book_formset,\n        })\n\nYou would then render the formsets as normal. It is important to point out\nthat you need to pass ``prefix`` on both the POST and non-POST cases so that\nit is rendered and processed correctly.\n"
  },
  {
    "path": "Django-1.5.1/docs/topics/forms/index.txt",
    "content": "==================\nWorking with forms\n==================\n\n.. admonition:: About this document\n\n    This document provides an introduction to Django's form handling features.\n    For a more detailed look at specific areas of the forms API, see\n    :doc:`/ref/forms/api`, :doc:`/ref/forms/fields`, and\n    :doc:`/ref/forms/validation`.\n\n.. highlightlang:: html+django\n\n``django.forms`` is Django's form-handling library.\n\nWhile it is possible to process form submissions just using Django's\n:class:`~django.http.HttpRequest` class, using the form library takes care of a\nnumber of common form-related tasks. Using it, you can:\n\n1. Display an HTML form with automatically generated form widgets.\n2. Check submitted data against a set of validation rules.\n3. Redisplay a form in the case of validation errors.\n4. Convert submitted form data to the relevant Python data types.\n\nOverview\n========\n\nThe library deals with these concepts:\n\n.. glossary::\n\n    Widget\n        A class that corresponds to an HTML form widget, e.g.\n        ``<input type=\"text\">`` or ``<textarea>``. This handles rendering of the\n        widget as HTML.\n\n    Field\n        A class that is responsible for doing validation, e.g.\n        an ``EmailField`` that makes sure its data is a valid email address.\n\n    Form\n        A collection of fields that knows how to validate itself and\n        display itself as HTML.\n\n    Form Media\n        The CSS and JavaScript resources that are required to render a form.\n\nThe library is decoupled from the other Django components, such as the database\nlayer, views and templates. It relies only on Django settings, a couple of\n``django.utils`` helper functions and Django's internationalization hooks (but\nyou're not required to be using internationalization features to use this\nlibrary).\n\nForm objects\n============\n\nA Form object encapsulates a sequence of form fields and a collection of\nvalidation rules that must be fulfilled in order for the form to be accepted.\nForm classes are created as subclasses of ``django.forms.Form`` and\nmake use of a declarative style that you'll be familiar with if you've used\nDjango's database models.\n\nFor example, consider a form used to implement \"contact me\" functionality on a\npersonal Web site:\n\n.. code-block:: python\n\n    from django import forms\n\n    class ContactForm(forms.Form):\n        subject = forms.CharField(max_length=100)\n        message = forms.CharField()\n        sender = forms.EmailField()\n        cc_myself = forms.BooleanField(required=False)\n\nA form is composed of ``Field`` objects. In this case, our form has four\nfields: ``subject``, ``message``, ``sender`` and ``cc_myself``. ``CharField``,\n``EmailField`` and ``BooleanField`` are just three of the available field types;\na full list can be found in :doc:`/ref/forms/fields`.\n\nIf your form is going to be used to directly add or edit a Django model, you can\nuse a :doc:`ModelForm </topics/forms/modelforms>` to avoid duplicating your model\ndescription.\n\n.. _using-a-form-in-a-view:\n\nUsing a form in a view\n----------------------\n\nThe standard pattern for processing a form in a view looks like this:\n\n.. code-block:: python\n\n   from django.shortcuts import render\n   from django.http import HttpResponseRedirect\n\n   def contact(request):\n       if request.method == 'POST': # If the form has been submitted...\n           form = ContactForm(request.POST) # A form bound to the POST data\n           if form.is_valid(): # All validation rules pass\n               # Process the data in form.cleaned_data\n               # ...\n               return HttpResponseRedirect('/thanks/') # Redirect after POST\n       else:\n           form = ContactForm() # An unbound form\n\n       return render(request, 'contact.html', {\n           'form': form,\n       })\n\n\nThere are three possible code paths here:\n\n+------------------+---------------+-----------------------------------------+\n| Form submitted?  | Data?         | What occurs                             |\n+==================+===============+=========================================+\n| Unsubmitted      | None yet      | Template gets passed unbound instance   |\n|                  |               | of ContactForm.                         |\n+------------------+---------------+-----------------------------------------+\n| Submitted        | Invalid data  | Template gets passed bound instance     |\n|                  |               | of ContactForm.                         |\n+------------------+---------------+-----------------------------------------+\n| Submitted        | Valid data    | Valid data is processed. Redirect to a  |\n|                  |               | \"thanks\" page.                          |\n+------------------+---------------+-----------------------------------------+\n\nThe distinction between :ref:`ref-forms-api-bound-unbound` is important:\n\n* An unbound form has no data associated with it. When rendered to the user,\n  it will be empty or will contain default values.\n\n* A bound form has submitted data, and hence can be used to tell if that data\n  is valid. If an invalid bound form is rendered, it can include inline error\n  messages telling the user what data to correct.\n\nHandling file uploads with a form\n---------------------------------\n\nTo see how to handle file uploads with your form, see\n:ref:`binding-uploaded-files`.\n\nProcessing the data from a form\n-------------------------------\n\nOnce ``is_valid()`` returns ``True``, the successfully validated form data\nwill be in the ``form.cleaned_data`` dictionary. This data will have been\nconverted nicely into Python types for you.\n\n.. note::\n\n   You can still access the unvalidated data directly from ``request.POST`` at\n   this point, but the validated data is better.\n\nIn the above example, ``cc_myself`` will be a boolean value. Likewise, fields\nsuch as ``IntegerField`` and ``FloatField`` convert values to a Python int and\nfloat respectively.\n\nRead-only fields are not available in ``form.cleaned_data`` (and setting\na value in a custom ``clean()`` method won't have any effect). These\nfields are displayed as text rather than as input elements, and thus are not\nposted back to the server.\n\nExtending the earlier example, here's how the form data could be processed:\n\n.. code-block:: python\n\n    if form.is_valid():\n        subject = form.cleaned_data['subject']\n        message = form.cleaned_data['message']\n        sender = form.cleaned_data['sender']\n        cc_myself = form.cleaned_data['cc_myself']\n\n        recipients = ['info@example.com']\n        if cc_myself:\n            recipients.append(sender)\n\n        from django.core.mail import send_mail\n        send_mail(subject, message, sender, recipients)\n        return HttpResponseRedirect('/thanks/') # Redirect after POST\n\n.. tip::\n\n   For more on sending email from Django, see :doc:`/topics/email`.\n\nDisplaying a form using a template\n----------------------------------\n\nForms are designed to work with the Django template language. In the above\nexample, we passed our ``ContactForm`` instance to the template using the\ncontext variable ``form``. Here's a simple example template::\n\n    <form action=\"/contact/\" method=\"post\">{% csrf_token %}\n    {{ form.as_p }}\n    <input type=\"submit\" value=\"Submit\" />\n    </form>\n\nThe form only outputs its own fields; it is up to you to provide the surrounding\n``<form>`` tags and the submit button.\n\nIf your form includes uploaded files, be sure to include\n``enctype=\"multipart/form-data\"`` in the ``form`` element. If you wish to write\na generic template that will work whether or not the form has files, you can\nuse the :meth:`~django.forms.Form.is_multipart` attribute on the form::\n\n    <form action=\"/contact/\" method=\"post\"\n        {% if form.is_multipart %}enctype=\"multipart/form-data\"{% endif %}>\n\n.. admonition:: Forms and Cross Site Request Forgery protection\n\n   Django ships with an easy-to-use :doc:`protection against Cross Site Request\n   Forgeries </ref/contrib/csrf>`. When submitting a form via POST with\n   CSRF protection enabled you must use the :ttag:`csrf_token` template tag\n   as in the preceding example. However, since CSRF protection is not\n   directly tied to forms in templates, this tag is omitted from the\n   following examples in this document.\n\n``form.as_p`` will output the form with each form field and accompanying label\nwrapped in a paragraph. Here's the output for our example template::\n\n   <form action=\"/contact/\" method=\"post\">\n   <p><label for=\"id_subject\">Subject:</label>\n       <input id=\"id_subject\" type=\"text\" name=\"subject\" maxlength=\"100\" /></p>\n   <p><label for=\"id_message\">Message:</label>\n       <input type=\"text\" name=\"message\" id=\"id_message\" /></p>\n   <p><label for=\"id_sender\">Sender:</label>\n       <input type=\"text\" name=\"sender\" id=\"id_sender\" /></p>\n   <p><label for=\"id_cc_myself\">Cc myself:</label>\n       <input type=\"checkbox\" name=\"cc_myself\" id=\"id_cc_myself\" /></p>\n   <input type=\"submit\" value=\"Submit\" />\n   </form>\n\nNote that each form field has an ID attribute set to ``id_<field-name>``, which\nis referenced by the accompanying label tag. This is important for ensuring\nforms are accessible to assistive technology such as screen reader software. You\ncan also :ref:`customize the way in which labels and ids are generated\n<ref-forms-api-configuring-label>`.\n\nYou can also use ``form.as_table`` to output table rows (you'll need to provide\nyour own ``<table>`` tags) and ``form.as_ul`` to output list items.\n\nCustomizing the form template\n-----------------------------\n\nIf the default generated HTML is not to your taste, you can completely customize\nthe way a form is presented using the Django template language. Extending the\nabove example::\n\n    <form action=\"/contact/\" method=\"post\">\n        {{ form.non_field_errors }}\n        <div class=\"fieldWrapper\">\n            {{ form.subject.errors }}\n            <label for=\"id_subject\">Email subject:</label>\n            {{ form.subject }}\n        </div>\n        <div class=\"fieldWrapper\">\n            {{ form.message.errors }}\n            <label for=\"id_message\">Your message:</label>\n            {{ form.message }}\n        </div>\n        <div class=\"fieldWrapper\">\n            {{ form.sender.errors }}\n            <label for=\"id_sender\">Your email address:</label>\n            {{ form.sender }}\n        </div>\n        <div class=\"fieldWrapper\">\n            {{ form.cc_myself.errors }}\n            <label for=\"id_cc_myself\">CC yourself?</label>\n            {{ form.cc_myself }}\n        </div>\n        <p><input type=\"submit\" value=\"Send message\" /></p>\n    </form>\n\nEach named form-field can be output to the template using\n``{{ form.name_of_field }}``, which will produce the HTML needed to display the\nform widget. Using ``{{ form.name_of_field.errors }}`` displays a list of form\nerrors, rendered as an unordered list. This might look like::\n\n   <ul class=\"errorlist\">\n       <li>Sender is required.</li>\n   </ul>\n\nThe list has a CSS class of ``errorlist`` to allow you to style its appearance.\nIf you wish to further customize the display of errors you can do so by looping\nover them::\n\n    {% if form.subject.errors %}\n        <ol>\n        {% for error in form.subject.errors %}\n            <li><strong>{{ error|escape }}</strong></li>\n        {% endfor %}\n        </ol>\n    {% endif %}\n\nLooping over the form's fields\n------------------------------\n\nIf you're using the same HTML for each of your form fields, you can reduce\nduplicate code by looping through each field in turn using a ``{% for %}``\nloop::\n\n    <form action=\"/contact/\" method=\"post\">\n        {% for field in form %}\n            <div class=\"fieldWrapper\">\n                {{ field.errors }}\n                {{ field.label_tag }}: {{ field }}\n            </div>\n        {% endfor %}\n        <p><input type=\"submit\" value=\"Send message\" /></p>\n    </form>\n\nWithin this loop, ``{{ field }}`` is an instance of\n:class:`~django.forms.BoundField`. ``BoundField`` also has the following\nattributes, which can be useful in your templates:\n\n``{{ field.label }}``\n    The label of the field, e.g. ``Email address``.\n\n``{{ field.label_tag }}``\n    The field's label wrapped in the appropriate HTML ``<label>`` tag,\n    e.g. ``<label for=\"id_email\">Email address</label>``\n\n``{{ field.value }}``\n    The value of the field. e.g ``someone@example.com``\n\n``{{ field.html_name }}``\n    The name of the field that will be used in the input element's name\n    field. This takes the form prefix into account, if it has been set.\n\n``{{ field.help_text }}``\n    Any help text that has been associated with the field.\n\n``{{ field.errors }}``\n    Outputs a ``<ul class=\"errorlist\">`` containing any validation errors\n    corresponding to this field. You can customize the presentation of\n    the errors with a ``{% for error in field.errors %}`` loop. In this\n    case, each object in the loop is a simple string containing the error\n    message.\n\n``{{ field.is_hidden }}``\n    This attribute is ``True`` if the form field is a hidden field and\n    ``False`` otherwise. It's not particularly useful as a template\n    variable, but could be useful in conditional tests such as::\n\n        {% if field.is_hidden %}\n           {# Do something special #}\n        {% endif %}\n\n``{{ field.field }}``\n    The :class:`~django.forms.Field` instance from the form class that\n    this :class:`~django.forms.BoundField` wraps. You can use it to access\n    :class:`~django.forms.Field` attributes , e.g.\n    ``{{ char_field.field.max_length }}``.\n\nLooping over hidden and visible fields\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nIf you're manually laying out a form in a template, as opposed to relying on\nDjango's default form layout, you might want to treat ``<input type=\"hidden\">``\nfields differently than non-hidden fields. For example, because hidden fields\ndon't display anything, putting error messages \"next to\" the field could cause\nconfusion for your users -- so errors for those fields should be handled\ndifferently.\n\nDjango provides two methods on a form that allow you to loop over the hidden\nand visible fields independently: ``hidden_fields()`` and\n``visible_fields()``. Here's a modification of an earlier example that uses\nthese two methods::\n\n    <form action=\"/contact/\" method=\"post\">\n        {# Include the hidden fields #}\n        {% for hidden in form.hidden_fields %}\n        {{ hidden }}\n        {% endfor %}\n        {# Include the visible fields #}\n        {% for field in form.visible_fields %}\n            <div class=\"fieldWrapper\">\n                {{ field.errors }}\n                {{ field.label_tag }}: {{ field }}\n            </div>\n        {% endfor %}\n        <p><input type=\"submit\" value=\"Send message\" /></p>\n    </form>\n\nThis example does not handle any errors in the hidden fields. Usually, an\nerror in a hidden field is a sign of form tampering, since normal form\ninteraction won't alter them. However, you could easily insert some error\ndisplays for those form errors, as well.\n\nReusable form templates\n-----------------------\n\nIf your site uses the same rendering logic for forms in multiple places, you\ncan reduce duplication by saving the form's loop in a standalone template and\nusing the :ttag:`include` tag to reuse it in other templates::\n\n    <form action=\"/contact/\" method=\"post\">\n        {% include \"form_snippet.html\" %}\n        <p><input type=\"submit\" value=\"Send message\" /></p>\n    </form>\n\n    # In form_snippet.html:\n\n    {% for field in form %}\n        <div class=\"fieldWrapper\">\n            {{ field.errors }}\n            {{ field.label_tag }}: {{ field }}\n        </div>\n    {% endfor %}\n\nIf the form object passed to a template has a different name within the\ncontext, you can alias it using the ``with`` argument of the :ttag:`include`\ntag::\n\n    <form action=\"/comments/add/\" method=\"post\">\n        {% include \"form_snippet.html\" with form=comment_form %}\n        <p><input type=\"submit\" value=\"Submit comment\" /></p>\n    </form>\n\nIf you find yourself doing this often, you might consider creating a custom\n:ref:`inclusion tag<howto-custom-template-tags-inclusion-tags>`.\n\nFurther topics\n==============\n\nThis covers the basics, but forms can do a whole lot more:\n\n.. toctree::\n   :maxdepth: 2\n\n   formsets\n   modelforms\n   media\n\n.. seealso::\n\n    :doc:`The Forms Reference </ref/forms/index>`\n        Covers the full API reference, including form fields, form widgets,\n        and form and field validation.\n"
  },
  {
    "path": "Django-1.5.1/docs/topics/forms/media.txt",
    "content": "Form Media\n==========\n\nRendering an attractive and easy-to-use Web form requires more than just\nHTML - it also requires CSS stylesheets, and if you want to use fancy\n\"Web2.0\" widgets, you may also need to include some JavaScript on each\npage. The exact combination of CSS and JavaScript that is required for\nany given page will depend upon the widgets that are in use on that page.\n\nThis is where Django media definitions come in. Django allows you to\nassociate different media files with the forms and widgets that require\nthat media. For example, if you want to use a calendar to render DateFields,\nyou can define a custom Calendar widget. This widget can then be associated\nwith the CSS and JavaScript that is required to render the calendar. When\nthe Calendar widget is used on a form, Django is able to identify the CSS and\nJavaScript files that are required, and provide the list of file names\nin a form suitable for easy inclusion on your Web page.\n\n.. admonition:: Media and Django Admin\n\n    The Django Admin application defines a number of customized widgets\n    for calendars, filtered selections, and so on. These widgets define\n    media requirements, and the Django Admin uses the custom widgets\n    in place of the Django defaults. The Admin templates will only include\n    those media files that are required to render the widgets on any\n    given page.\n\n    If you like the widgets that the Django Admin application uses,\n    feel free to use them in your own application! They're all stored\n    in ``django.contrib.admin.widgets``.\n\n.. admonition:: Which JavaScript toolkit?\n\n    Many JavaScript toolkits exist, and many of them include widgets (such\n    as calendar widgets) that can be used to enhance your application.\n    Django has deliberately avoided blessing any one JavaScript toolkit.\n    Each toolkit has its own relative strengths and weaknesses - use\n    whichever toolkit suits your requirements. Django is able to integrate\n    with any JavaScript toolkit.\n\n.. _media-as-a-static-definition:\n\nMedia as a static definition\n----------------------------\n\nThe easiest way to define media is as a static definition. Using this method,\nthe media declaration is an inner class. The properties of the inner class\ndefine the media requirements.\n\nHere's a simple example::\n\n    class CalendarWidget(forms.TextInput):\n        class Media:\n            css = {\n                'all': ('pretty.css',)\n            }\n            js = ('animations.js', 'actions.js')\n\nThis code defines a ``CalendarWidget``, which will be based on ``TextInput``.\nEvery time the CalendarWidget is used on a form, that form will be directed\nto include the CSS file ``pretty.css``, and the JavaScript files\n``animations.js`` and ``actions.js``.\n\nThis static media definition is converted at runtime into a widget property\nnamed ``media``. The media for a CalendarWidget instance can be retrieved\nthrough this property::\n\n    >>> w = CalendarWidget()\n    >>> print(w.media)\n    <link href=\"http://static.example.com/pretty.css\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n    <script type=\"text/javascript\" src=\"http://static.example.com/animations.js\"></script>\n    <script type=\"text/javascript\" src=\"http://static.example.com/actions.js\"></script>\n\nHere's a list of all possible ``Media`` options. There are no required options.\n\n``css``\n~~~~~~~\n\nA dictionary describing the CSS files required for various forms of output\nmedia.\n\nThe values in the dictionary should be a tuple/list of file names. See\n:ref:`the section on media paths <form-media-paths>` for details of how to\nspecify paths to media files.\n\nThe keys in the dictionary are the output media types. These are the same\ntypes accepted by CSS files in media declarations: 'all', 'aural', 'braille',\n'embossed', 'handheld', 'print', 'projection', 'screen', 'tty' and 'tv'. If\nyou need to have different stylesheets for different media types, provide\na list of CSS files for each output medium. The following example would\nprovide two CSS options -- one for the screen, and one for print::\n\n    class Media:\n        css = {\n            'screen': ('pretty.css',),\n            'print': ('newspaper.css',)\n        }\n\nIf a group of CSS files are appropriate for multiple output media types,\nthe dictionary key can be a comma separated list of output media types.\nIn the following example, TV's and projectors will have the same media\nrequirements::\n\n    class Media:\n        css = {\n            'screen': ('pretty.css',),\n            'tv,projector': ('lo_res.css',),\n            'print': ('newspaper.css',)\n        }\n\nIf this last CSS definition were to be rendered, it would become the following HTML::\n\n    <link href=\"http://static.example.com/pretty.css\" type=\"text/css\" media=\"screen\" rel=\"stylesheet\" />\n    <link href=\"http://static.example.com/lo_res.css\" type=\"text/css\" media=\"tv,projector\" rel=\"stylesheet\" />\n    <link href=\"http://static.example.com/newspaper.css\" type=\"text/css\" media=\"print\" rel=\"stylesheet\" />\n\n``js``\n~~~~~~\n\nA tuple describing the required JavaScript files. See :ref:`the section on\nmedia paths <form-media-paths>` for details of how to specify paths to media\nfiles.\n\n``extend``\n~~~~~~~~~~\n\nA boolean defining inheritance behavior for media declarations.\n\nBy default, any object using a static media definition will inherit all the\nmedia associated with the parent widget. This occurs regardless of how the\nparent defines its media requirements. For example, if we were to extend our\nbasic Calendar widget from the example above::\n\n    >>> class FancyCalendarWidget(CalendarWidget):\n    ...     class Media:\n    ...         css = {\n    ...             'all': ('fancy.css',)\n    ...         }\n    ...         js = ('whizbang.js',)\n\n    >>> w = FancyCalendarWidget()\n    >>> print(w.media)\n    <link href=\"http://static.example.com/pretty.css\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n    <link href=\"http://static.example.com/fancy.css\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n    <script type=\"text/javascript\" src=\"http://static.example.com/animations.js\"></script>\n    <script type=\"text/javascript\" src=\"http://static.example.com/actions.js\"></script>\n    <script type=\"text/javascript\" src=\"http://static.example.com/whizbang.js\"></script>\n\nThe FancyCalendar widget inherits all the media from it's parent widget. If\nyou don't want media to be inherited in this way, add an ``extend=False``\ndeclaration to the media declaration::\n\n    >>> class FancyCalendarWidget(CalendarWidget):\n    ...     class Media:\n    ...         extend = False\n    ...         css = {\n    ...             'all': ('fancy.css',)\n    ...         }\n    ...         js = ('whizbang.js',)\n\n    >>> w = FancyCalendarWidget()\n    >>> print(w.media)\n    <link href=\"http://static.example.com/fancy.css\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n    <script type=\"text/javascript\" src=\"http://static.example.com/whizbang.js\"></script>\n\nIf you require even more control over media inheritance, define your media\nusing a :ref:`dynamic property <dynamic-property>`. Dynamic properties give\nyou complete control over which media files are inherited, and which are not.\n\n.. _dynamic-property:\n\nMedia as a dynamic property\n---------------------------\n\nIf you need to perform some more sophisticated manipulation of media\nrequirements, you can define the media property directly. This is done\nby defining a widget property that returns an instance of ``forms.Media``.\nThe constructor for ``forms.Media`` accepts ``css`` and ``js`` keyword\narguments in the same format as that used in a static media definition.\n\nFor example, the static media definition for our Calendar Widget could\nalso be defined in a dynamic fashion::\n\n    class CalendarWidget(forms.TextInput):\n        def _media(self):\n            return forms.Media(css={'all': ('pretty.css',)},\n                               js=('animations.js', 'actions.js'))\n        media = property(_media)\n\nSee the section on `Media objects`_ for more details on how to construct\nreturn values for dynamic media properties.\n\n.. _form-media-paths:\n\nPaths in media definitions\n--------------------------\n\nPaths used to specify media can be either relative or absolute. If a path\nstarts with ``/``, ``http://`` or ``https://``, it will be interpreted as an\nabsolute path, and left as-is. All other paths will be prepended with the value\nof the appropriate prefix.\n\nAs part of the introduction of the\n:doc:`staticfiles app </ref/contrib/staticfiles>` two new settings were added\nto refer to \"static files\" (images, CSS, Javascript, etc.) that are needed\nto render a complete web page: :setting:`STATIC_URL` and :setting:`STATIC_ROOT`.\n\nTo find the appropriate prefix to use, Django will check if the\n:setting:`STATIC_URL` setting is not ``None`` and automatically fall back\nto using :setting:`MEDIA_URL`. For example, if the :setting:`MEDIA_URL` for\nyour site was ``'http://uploads.example.com/'`` and :setting:`STATIC_URL`\nwas ``None``::\n\n    >>> class CalendarWidget(forms.TextInput):\n    ...     class Media:\n    ...         css = {\n    ...             'all': ('/css/pretty.css',),\n    ...         }\n    ...         js = ('animations.js', 'http://othersite.com/actions.js')\n\n    >>> w = CalendarWidget()\n    >>> print(w.media)\n    <link href=\"/css/pretty.css\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n    <script type=\"text/javascript\" src=\"http://uploads.example.com/animations.js\"></script>\n    <script type=\"text/javascript\" src=\"http://othersite.com/actions.js\"></script>\n\nBut if :setting:`STATIC_URL` is ``'http://static.example.com/'``::\n\n    >>> w = CalendarWidget()\n    >>> print(w.media)\n    <link href=\"/css/pretty.css\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n    <script type=\"text/javascript\" src=\"http://static.example.com/animations.js\"></script>\n    <script type=\"text/javascript\" src=\"http://othersite.com/actions.js\"></script>\n\n\nMedia objects\n-------------\n\nWhen you interrogate the media attribute of a widget or form, the value that\nis returned is a ``forms.Media`` object. As we have already seen, the string\nrepresentation of a Media object is the HTML required to include media\nin the ``<head>`` block of your HTML page.\n\nHowever, Media objects have some other interesting properties.\n\nMedia subsets\n~~~~~~~~~~~~~\n\nIf you only want media of a particular type, you can use the subscript operator\nto filter out a medium of interest. For example::\n\n    >>> w = CalendarWidget()\n    >>> print(w.media)\n    <link href=\"http://static.example.com/pretty.css\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n    <script type=\"text/javascript\" src=\"http://static.example.com/animations.js\"></script>\n    <script type=\"text/javascript\" src=\"http://static.example.com/actions.js\"></script>\n\n    >>> print(w.media)['css']\n    <link href=\"http://static.example.com/pretty.css\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n\nWhen you use the subscript operator, the value that is returned is a new\nMedia object -- but one that only contains the media of interest.\n\nCombining media objects\n~~~~~~~~~~~~~~~~~~~~~~~\n\nMedia objects can also be added together. When two media objects are added,\nthe resulting Media object contains the union of the media from both files::\n\n    >>> class CalendarWidget(forms.TextInput):\n    ...     class Media:\n    ...         css = {\n    ...             'all': ('pretty.css',)\n    ...         }\n    ...         js = ('animations.js', 'actions.js')\n\n    >>> class OtherWidget(forms.TextInput):\n    ...     class Media:\n    ...         js = ('whizbang.js',)\n\n    >>> w1 = CalendarWidget()\n    >>> w2 = OtherWidget()\n    >>> print(w1.media + w2.media)\n    <link href=\"http://static.example.com/pretty.css\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n    <script type=\"text/javascript\" src=\"http://static.example.com/animations.js\"></script>\n    <script type=\"text/javascript\" src=\"http://static.example.com/actions.js\"></script>\n    <script type=\"text/javascript\" src=\"http://static.example.com/whizbang.js\"></script>\n\nMedia on Forms\n--------------\n\nWidgets aren't the only objects that can have media definitions -- forms\ncan also define media. The rules for media definitions on forms are the\nsame as the rules for widgets: declarations can be static or dynamic;\npath and inheritance rules for those declarations are exactly the same.\n\nRegardless of whether you define a media declaration, *all* Form objects\nhave a media property. The default value for this property is the result\nof adding the media definitions for all widgets that are part of the form::\n\n    >>> class ContactForm(forms.Form):\n    ...     date = DateField(widget=CalendarWidget)\n    ...     name = CharField(max_length=40, widget=OtherWidget)\n\n    >>> f = ContactForm()\n    >>> f.media\n    <link href=\"http://static.example.com/pretty.css\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n    <script type=\"text/javascript\" src=\"http://static.example.com/animations.js\"></script>\n    <script type=\"text/javascript\" src=\"http://static.example.com/actions.js\"></script>\n    <script type=\"text/javascript\" src=\"http://static.example.com/whizbang.js\"></script>\n\nIf you want to associate additional media with a form -- for example, CSS for form\nlayout -- simply add a media declaration to the form::\n\n    >>> class ContactForm(forms.Form):\n    ...     date = DateField(widget=CalendarWidget)\n    ...     name = CharField(max_length=40, widget=OtherWidget)\n    ...\n    ...     class Media:\n    ...         css = {\n    ...             'all': ('layout.css',)\n    ...         }\n\n    >>> f = ContactForm()\n    >>> f.media\n    <link href=\"http://static.example.com/pretty.css\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n    <link href=\"http://static.example.com/layout.css\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n    <script type=\"text/javascript\" src=\"http://static.example.com/animations.js\"></script>\n    <script type=\"text/javascript\" src=\"http://static.example.com/actions.js\"></script>\n    <script type=\"text/javascript\" src=\"http://static.example.com/whizbang.js\"></script>\n"
  },
  {
    "path": "Django-1.5.1/docs/topics/forms/modelforms.txt",
    "content": "==========================\nCreating forms from models\n==========================\n\n.. module:: django.forms.models\n   :synopsis: ModelForm and ModelFormset.\n\n.. currentmodule:: django.forms\n\n``ModelForm``\n=============\n.. class:: ModelForm\n\nIf you're building a database-driven app, chances are you'll have forms that\nmap closely to Django models. For instance, you might have a ``BlogComment``\nmodel, and you want to create a form that lets people submit comments. In this\ncase, it would be redundant to define the field types in your form, because\nyou've already defined the fields in your model.\n\nFor this reason, Django provides a helper class that let you create a ``Form``\nclass from a Django model.\n\nFor example::\n\n    >>> from django.forms import ModelForm\n\n    # Create the form class.\n    >>> class ArticleForm(ModelForm):\n    ...     class Meta:\n    ...         model = Article\n\n    # Creating a form to add an article.\n    >>> form = ArticleForm()\n\n    # Creating a form to change an existing article.\n    >>> article = Article.objects.get(pk=1)\n    >>> form = ArticleForm(instance=article)\n\nField types\n-----------\n\nThe generated ``Form`` class will have a form field for every model field. Each\nmodel field has a corresponding default form field. For example, a\n``CharField`` on a model is represented as a ``CharField`` on a form. A\nmodel ``ManyToManyField`` is represented as a ``MultipleChoiceField``. Here is\nthe full list of conversions:\n\n===============================  ========================================\nModel field                      Form field\n===============================  ========================================\n``AutoField``                    Not represented in the form\n\n``BigIntegerField``              ``IntegerField`` with ``min_value`` set\n                                 to -9223372036854775808 and ``max_value``\n                                 set to 9223372036854775807.\n\n``BooleanField``                 ``BooleanField``\n\n``CharField``                    ``CharField`` with ``max_length`` set to\n                                 the model field's ``max_length``\n\n``CommaSeparatedIntegerField``   ``CharField``\n\n``DateField``                    ``DateField``\n\n``DateTimeField``                ``DateTimeField``\n\n``DecimalField``                 ``DecimalField``\n\n``EmailField``                   ``EmailField``\n\n``FileField``                    ``FileField``\n\n``FilePathField``                ``CharField``\n\n``FloatField``                   ``FloatField``\n\n``ForeignKey``                   ``ModelChoiceField`` (see below)\n\n``ImageField``                   ``ImageField``\n\n``IntegerField``                 ``IntegerField``\n\n``IPAddressField``               ``IPAddressField``\n\n``GenericIPAddressField``        ``GenericIPAddressField``\n\n``ManyToManyField``              ``ModelMultipleChoiceField`` (see\n                                 below)\n\n``NullBooleanField``             ``CharField``\n\n``PositiveIntegerField``         ``IntegerField``\n\n``PositiveSmallIntegerField``    ``IntegerField``\n\n``SlugField``                    ``SlugField``\n\n``SmallIntegerField``            ``IntegerField``\n\n``TextField``                    ``CharField`` with\n                                 ``widget=forms.Textarea``\n\n``TimeField``                    ``TimeField``\n\n``URLField``                     ``URLField``\n===============================  ========================================\n\n\nAs you might expect, the ``ForeignKey`` and ``ManyToManyField`` model field\ntypes are special cases:\n\n* ``ForeignKey`` is represented by ``django.forms.ModelChoiceField``,\n  which is a ``ChoiceField`` whose choices are a model ``QuerySet``.\n\n* ``ManyToManyField`` is represented by\n  ``django.forms.ModelMultipleChoiceField``, which is a\n  ``MultipleChoiceField`` whose choices are a model ``QuerySet``.\n\nIn addition, each generated form field has attributes set as follows:\n\n* If the model field has ``blank=True``, then ``required`` is set to\n  ``False`` on the form field. Otherwise, ``required=True``.\n\n* The form field's ``label`` is set to the ``verbose_name`` of the model\n  field, with the first character capitalized.\n\n* The form field's ``help_text`` is set to the ``help_text`` of the model\n  field.\n\n* If the model field has ``choices`` set, then the form field's ``widget``\n  will be set to ``Select``, with choices coming from the model field's\n  ``choices``. The choices will normally include the blank choice which is\n  selected by default. If the field is required, this forces the user to\n  make a selection. The blank choice will not be included if the model\n  field has ``blank=False`` and an explicit ``default`` value (the\n  ``default`` value will be initially selected instead).\n\nFinally, note that you can override the form field used for a given model\nfield. See `Overriding the default field types or widgets`_ below.\n\nA full example\n--------------\n\nConsider this set of models::\n\n    from django.db import models\n    from django.forms import ModelForm\n\n    TITLE_CHOICES = (\n        ('MR', 'Mr.'),\n        ('MRS', 'Mrs.'),\n        ('MS', 'Ms.'),\n    )\n\n    class Author(models.Model):\n        name = models.CharField(max_length=100)\n        title = models.CharField(max_length=3, choices=TITLE_CHOICES)\n        birth_date = models.DateField(blank=True, null=True)\n\n        def __unicode__(self):\n            return self.name\n\n    class Book(models.Model):\n        name = models.CharField(max_length=100)\n        authors = models.ManyToManyField(Author)\n\n    class AuthorForm(ModelForm):\n        class Meta:\n            model = Author\n\n    class BookForm(ModelForm):\n        class Meta:\n            model = Book\n\nWith these models, the ``ModelForm`` subclasses above would be roughly\nequivalent to this (the only difference being the ``save()`` method, which\nwe'll discuss in a moment.)::\n\n    from django import forms\n\n    class AuthorForm(forms.Form):\n        name = forms.CharField(max_length=100)\n        title = forms.CharField(max_length=3,\n                    widget=forms.Select(choices=TITLE_CHOICES))\n        birth_date = forms.DateField(required=False)\n\n    class BookForm(forms.Form):\n        name = forms.CharField(max_length=100)\n        authors = forms.ModelMultipleChoiceField(queryset=Author.objects.all())\n\n.. _modelform-is-valid-and-errors:\n\nThe ``is_valid()`` method and ``errors``\n----------------------------------------\n\nThe first time you call ``is_valid()`` or access the ``errors`` attribute of a\n``ModelForm`` triggers :ref:`form validation <form-and-field-validation>` as\nwell as :ref:`model validation <validating-objects>`. This has the side-effect\nof cleaning the model you pass to the ``ModelForm`` constructor. For instance,\ncalling ``is_valid()`` on your form will convert any date fields on your model\nto actual date objects. If form validation fails, only some of the updates\nmay be applied. For this reason, you'll probably want to avoid reusing the\nmodel instance passed to the form, especially if validation fails.\n\n\nThe ``save()`` method\n---------------------\n\nEvery form produced by ``ModelForm`` also has a ``save()``\nmethod. This method creates and saves a database object from the data\nbound to the form. A subclass of ``ModelForm`` can accept an existing\nmodel instance as the keyword argument ``instance``; if this is\nsupplied, ``save()`` will update that instance. If it's not supplied,\n``save()`` will create a new instance of the specified model:\n\n.. code-block:: python\n\n    # Create a form instance from POST data.\n    >>> f = ArticleForm(request.POST)\n\n    # Save a new Article object from the form's data.\n    >>> new_article = f.save()\n\n    # Create a form to edit an existing Article, but use\n    # POST data to populate the form.\n    >>> a = Article.objects.get(pk=1)\n    >>> f = ArticleForm(request.POST, instance=a)\n    >>> f.save()\n\nNote that if the form :ref:`hasn't been validated\n<modelform-is-valid-and-errors>`, calling ``save()`` will do so by checking\n``form.errors``. A ``ValueError`` will be raised if the data in the form\ndoesn't validate -- i.e., if ``form.errors`` evaluates to ``True``.\n\nThis ``save()`` method accepts an optional ``commit`` keyword argument, which\naccepts either ``True`` or ``False``. If you call ``save()`` with\n``commit=False``, then it will return an object that hasn't yet been saved to\nthe database. In this case, it's up to you to call ``save()`` on the resulting\nmodel instance. This is useful if you want to do custom processing on the\nobject before saving it, or if you want to use one of the specialized\n:ref:`model saving options <ref-models-force-insert>`. ``commit`` is ``True``\nby default.\n\nAnother side effect of using ``commit=False`` is seen when your model has\na many-to-many relation with another model. If your model has a many-to-many\nrelation and you specify ``commit=False`` when you save a form, Django cannot\nimmediately save the form data for the many-to-many relation. This is because\nit isn't possible to save many-to-many data for an instance until the instance\nexists in the database.\n\nTo work around this problem, every time you save a form using ``commit=False``,\nDjango adds a ``save_m2m()`` method to your ``ModelForm`` subclass. After\nyou've manually saved the instance produced by the form, you can invoke\n``save_m2m()`` to save the many-to-many form data. For example::\n\n    # Create a form instance with POST data.\n    >>> f = AuthorForm(request.POST)\n\n    # Create, but don't save the new author instance.\n    >>> new_author = f.save(commit=False)\n\n    # Modify the author in some way.\n    >>> new_author.some_field = 'some_value'\n\n    # Save the new instance.\n    >>> new_author.save()\n\n    # Now, save the many-to-many data for the form.\n    >>> f.save_m2m()\n\nCalling ``save_m2m()`` is only required if you use ``save(commit=False)``.\nWhen you use a simple ``save()`` on a form, all data -- including\nmany-to-many data -- is saved without the need for any additional method calls.\nFor example::\n\n    # Create a form instance with POST data.\n    >>> a = Author()\n    >>> f = AuthorForm(request.POST, instance=a)\n\n    # Create and save the new author instance. There's no need to do anything else.\n    >>> new_author = f.save()\n\nOther than the ``save()`` and ``save_m2m()`` methods, a ``ModelForm`` works\nexactly the same way as any other ``forms`` form. For example, the\n``is_valid()`` method is used to check for validity, the ``is_multipart()``\nmethod is used to determine whether a form requires multipart file upload (and\nhence whether ``request.FILES`` must be passed to the form), etc. See\n:ref:`binding-uploaded-files` for more information.\n\nUsing a subset of fields on the form\n------------------------------------\n\nIn some cases, you may not want all the model fields to appear on the generated\nform. There are three ways of telling ``ModelForm`` to use only a subset of the\nmodel fields:\n\n1. Set ``editable=False`` on the model field. As a result, *any* form\n   created from the model via ``ModelForm`` will not include that\n   field.\n\n2. Use the ``fields`` attribute of the ``ModelForm``'s inner ``Meta``\n   class.  This attribute, if given, should be a list of field names\n   to include in the form. The order in which the fields names are specified\n   in that list is respected when the form renders them.\n\n3. Use the ``exclude`` attribute of the ``ModelForm``'s inner ``Meta``\n   class.  This attribute, if given, should be a list of field names\n   to exclude from the form.\n\nFor example, if you want a form for the ``Author`` model (defined\nabove) that includes only the ``name`` and ``birth_date`` fields, you would\nspecify ``fields`` or ``exclude`` like this::\n\n    class PartialAuthorForm(ModelForm):\n        class Meta:\n            model = Author\n            fields = ('name', 'birth_date')\n\n    class PartialAuthorForm(ModelForm):\n        class Meta:\n            model = Author\n            exclude = ('title',)\n\nSince the Author model has only 3 fields, 'name', 'title', and\n'birth_date', the forms above will contain exactly the same fields.\n\n.. note::\n\n    If you specify ``fields`` or ``exclude`` when creating a form with\n    ``ModelForm``, then the fields that are not in the resulting form\n    will not be set by the form's ``save()`` method. Also, if you\n    manually add the excluded fields back to the form, they will not\n    be initialized from the model instance.\n\n    Django will prevent any attempt to save an incomplete model, so if\n    the model does not allow the missing fields to be empty, and does\n    not provide a default value for the missing fields, any attempt to\n    ``save()`` a ``ModelForm`` with missing fields will fail.  To\n    avoid this failure, you must instantiate your model with initial\n    values for the missing, but required fields::\n\n        author = Author(title='Mr')\n        form = PartialAuthorForm(request.POST, instance=author)\n        form.save()\n\n    Alternatively, you can use ``save(commit=False)`` and manually set\n    any extra required fields::\n\n        form = PartialAuthorForm(request.POST)\n        author = form.save(commit=False)\n        author.title = 'Mr'\n        author.save()\n\n    See the `section on saving forms`_ for more details on using\n    ``save(commit=False)``.\n\n.. _section on saving forms: `The save() method`_\n\nOverriding the default field types or widgets\n---------------------------------------------\n\nThe default field types, as described in the `Field types`_ table above, are\nsensible defaults. If you have a ``DateField`` in your model, chances are you'd\nwant that to be represented as a ``DateField`` in your form. But\n``ModelForm`` gives you the flexibility of changing the form field type and\nwidget for a given model field.\n\nTo specify a custom widget for a field, use the ``widgets`` attribute of the\ninner ``Meta`` class. This should be a dictionary mapping field names to widget\nclasses or instances.\n\nFor example, if you want the a ``CharField`` for the ``name``\nattribute of ``Author`` to be represented by a ``<textarea>`` instead\nof its default ``<input type=\"text\">``, you can override the field's\nwidget::\n\n    from django.forms import ModelForm, Textarea\n\n    class AuthorForm(ModelForm):\n        class Meta:\n            model = Author\n            fields = ('name', 'title', 'birth_date')\n            widgets = {\n                'name': Textarea(attrs={'cols': 80, 'rows': 20}),\n            }\n\nThe ``widgets`` dictionary accepts either widget instances (e.g.,\n``Textarea(...)``) or classes (e.g., ``Textarea``).\n\nIf you want to further customize a field -- including its type, label, etc. --\nyou can do this by declaratively specifying fields like you would in a regular\n``Form``. Declared fields will override the default ones generated by using the\n``model`` attribute.\n\nFor example, if you wanted to use ``MyDateFormField`` for the ``pub_date``\nfield, you could do the following::\n\n    class ArticleForm(ModelForm):\n        pub_date = MyDateFormField()\n\n        class Meta:\n            model = Article\n\nIf you want to override a field's default label, then specify the ``label``\nparameter when declaring the form field::\n\n   >>> class ArticleForm(ModelForm):\n   ...     pub_date = DateField(label='Publication date')\n   ...\n   ...     class Meta:\n   ...         model = Article\n\n.. note::\n\n    If you explicitly instantiate a form field like this, Django assumes that you\n    want to completely define its behavior; therefore, default attributes (such as\n    ``max_length`` or ``required``) are not drawn from the corresponding model. If\n    you want to maintain the behavior specified in the model, you must set the\n    relevant arguments explicitly when declaring the form field.\n\n    For example, if the ``Article`` model looks like this::\n\n        class Article(models.Model):\n            headline = models.CharField(max_length=200, null=True, blank=True,\n                                        help_text=\"Use puns liberally\")\n            content = models.TextField()\n\n    and you want to do some custom validation for ``headline``, while keeping\n    the ``blank`` and ``help_text`` values as specified, you might define\n    ``ArticleForm`` like this::\n\n        class ArticleForm(ModelForm):\n            headline = MyFormField(max_length=200, required=False,\n                                   help_text=\"Use puns liberally\")\n\n            class Meta:\n                model = Article\n\n    You must ensure that the type of the form field can be used to set the\n    contents of the corresponding model field. When they are not compatible,\n    you will get a ``ValueError`` as no implicit conversion takes place.\n\n    See the :doc:`form field documentation </ref/forms/fields>` for more information\n    on fields and their arguments.\n\nChanging the order of fields\n----------------------------\n\nBy default, a ``ModelForm`` will render fields in the same order that they are\ndefined on the model, with ``ManyToManyField`` instances appearing last. If\nyou want to change the order in which fields are rendered, you can use the\n``fields`` attribute on the ``Meta`` class.\n\nThe ``fields`` attribute defines the subset of model fields that will be\nrendered, and the order in which they will be rendered. For example given this\nmodel::\n\n    class Book(models.Model):\n        author = models.ForeignKey(Author)\n        title = models.CharField(max_length=100)\n\nthe ``author`` field would be rendered first. If we wanted the title field\nto be rendered first, we could specify the following ``ModelForm``::\n\n    >>> class BookForm(ModelForm):\n    ...     class Meta:\n    ...         model = Book\n    ...         fields = ('title', 'author')\n\n.. _overriding-modelform-clean-method:\n\nOverriding the clean() method\n-----------------------------\n\nYou can override the ``clean()`` method on a model form to provide additional\nvalidation in the same way you can on a normal form.\n\nIn this regard, model forms have two specific characteristics when compared to\nforms:\n\nBy default the ``clean()`` method validates the uniqueness of fields that are\nmarked as ``unique``, ``unique_together`` or ``unique_for_date|month|year`` on\nthe model.  Therefore, if you would like to override the ``clean()`` method and\nmaintain the default validation, you must call the parent class's ``clean()``\nmethod.\n\nAlso, a model form instance bound to a model object will contain a\n``self.instance`` attribute that gives model form methods access to that\nspecific model instance.\n\nForm inheritance\n----------------\n\nAs with basic forms, you can extend and reuse ``ModelForms`` by inheriting\nthem. This is useful if you need to declare extra fields or extra methods on a\nparent class for use in a number of forms derived from models. For example,\nusing the previous ``ArticleForm`` class::\n\n    >>> class EnhancedArticleForm(ArticleForm):\n    ...     def clean_pub_date(self):\n    ...         ...\n\nThis creates a form that behaves identically to ``ArticleForm``, except there's\nsome extra validation and cleaning for the ``pub_date`` field.\n\nYou can also subclass the parent's ``Meta`` inner class if you want to change\nthe ``Meta.fields`` or ``Meta.excludes`` lists::\n\n    >>> class RestrictedArticleForm(EnhancedArticleForm):\n    ...     class Meta(ArticleForm.Meta):\n    ...         exclude = ('body',)\n\nThis adds the extra method from the ``EnhancedArticleForm`` and modifies\nthe original ``ArticleForm.Meta`` to remove one field.\n\nThere are a couple of things to note, however.\n\n* Normal Python name resolution rules apply. If you have multiple base\n  classes that declare a ``Meta`` inner class, only the first one will be\n  used. This means the child's ``Meta``, if it exists, otherwise the\n  ``Meta`` of the first parent, etc.\n\n* For technical reasons, a subclass cannot inherit from both a ``ModelForm``\n  and a ``Form`` simultaneously.\n\nChances are these notes won't affect you unless you're trying to do something\ntricky with subclassing.\n\nInteraction with model validation\n---------------------------------\n\nAs part of its validation process, ``ModelForm`` will call the ``clean()``\nmethod of each field on your model that has a corresponding field on your form.\nIf you have excluded any model fields, validation will not be run on those\nfields. See the :doc:`form validation </ref/forms/validation>` documentation\nfor more on how field cleaning and validation work. Also, your model's\n``clean()`` method will be called before any uniqueness checks are made. See\n:ref:`Validating objects <validating-objects>` for more information on the\nmodel's ``clean()`` hook.\n\n.. _modelforms-factory:\n\nModelForm factory function\n--------------------------\n\nYou can create forms from a given model using the standalone function\n:func:`~django.forms.models.modelform_factory`, instead of using a class\ndefinition. This may be more convenient if you do not have many customizations\nto make::\n\n    >>> from django.forms.models import modelform_factory\n    >>> BookForm = modelform_factory(Book)\n\nThis can also be used to make simple modifications to existing forms, for\nexample by specifying which fields should be displayed::\n\n    >>> Form = modelform_factory(Book, form=BookForm, fields=(\"author\",))\n\n... or which fields should be excluded::\n\n    >>> Form = modelform_factory(Book, form=BookForm, exclude=(\"title\",))\n\nYou can also specify the widgets to be used for a given field::\n\n    >>> from django.forms import Textarea\n    >>> Form = modelform_factory(Book, form=BookForm, widgets={\"title\": Textarea()})\n\n.. _model-formsets:\n\nModel formsets\n==============\n\n.. class:: models.BaseModelFormSet\n\nLike :doc:`regular formsets </topics/forms/formsets>`, Django provides a couple\nof enhanced formset classes that make it easy to work with Django models. Let's\nreuse the ``Author`` model from above::\n\n    >>> from django.forms.models import modelformset_factory\n    >>> AuthorFormSet = modelformset_factory(Author)\n\nThis will create a formset that is capable of working with the data associated\nwith the ``Author`` model. It works just like a regular formset::\n\n    >>> formset = AuthorFormSet()\n    >>> print(formset)\n    <input type=\"hidden\" name=\"form-TOTAL_FORMS\" value=\"1\" id=\"id_form-TOTAL_FORMS\" /><input type=\"hidden\" name=\"form-INITIAL_FORMS\" value=\"0\" id=\"id_form-INITIAL_FORMS\" /><input type=\"hidden\" name=\"form-MAX_NUM_FORMS\" id=\"id_form-MAX_NUM_FORMS\" />\n    <tr><th><label for=\"id_form-0-name\">Name:</label></th><td><input id=\"id_form-0-name\" type=\"text\" name=\"form-0-name\" maxlength=\"100\" /></td></tr>\n    <tr><th><label for=\"id_form-0-title\">Title:</label></th><td><select name=\"form-0-title\" id=\"id_form-0-title\">\n    <option value=\"\" selected=\"selected\">---------</option>\n    <option value=\"MR\">Mr.</option>\n    <option value=\"MRS\">Mrs.</option>\n    <option value=\"MS\">Ms.</option>\n    </select></td></tr>\n    <tr><th><label for=\"id_form-0-birth_date\">Birth date:</label></th><td><input type=\"text\" name=\"form-0-birth_date\" id=\"id_form-0-birth_date\" /><input type=\"hidden\" name=\"form-0-id\" id=\"id_form-0-id\" /></td></tr>\n\n.. note::\n\n    :func:`~django.forms.models.modelformset_factory` uses ``formset_factory``\n    to generate formsets. This means that a model formset is just an extension\n    of a basic formset that knows how to interact with a particular model.\n\nChanging the queryset\n---------------------\n\nBy default, when you create a formset from a model, the formset will use a\nqueryset that includes all objects in the model (e.g.,\n``Author.objects.all()``). You can override this behavior by using the\n``queryset`` argument::\n\n    >>> formset = AuthorFormSet(queryset=Author.objects.filter(name__startswith='O'))\n\nAlternatively, you can create a subclass that sets ``self.queryset`` in\n``__init__``::\n\n    from django.forms.models import BaseModelFormSet\n\n    class BaseAuthorFormSet(BaseModelFormSet):\n        def __init__(self, *args, **kwargs):\n            super(BaseAuthorFormSet, self).__init__(*args, **kwargs)\n            self.queryset = Author.objects.filter(name__startswith='O')\n\nThen, pass your ``BaseAuthorFormSet`` class to the factory function::\n\n    >>> AuthorFormSet = modelformset_factory(Author, formset=BaseAuthorFormSet)\n\nIf you want to return a formset that doesn't include *any* pre-existing\ninstances of the model, you can specify an empty QuerySet::\n\n   >>> AuthorFormSet(queryset=Author.objects.none())\n\n\nControlling which fields are used with ``fields`` and ``exclude``\n-----------------------------------------------------------------\n\nBy default, a model formset uses all fields in the model that are not marked\nwith ``editable=False``. However, this can be overridden at the formset level::\n\n    >>> AuthorFormSet = modelformset_factory(Author, fields=('name', 'title'))\n\nUsing ``fields`` restricts the formset to use only the given fields.\nAlternatively, you can take an \"opt-out\" approach, specifying which fields to\nexclude::\n\n    >>> AuthorFormSet = modelformset_factory(Author, exclude=('birth_date',))\n\nProviding initial values\n------------------------\n\n.. versionadded:: 1.4\n\nAs with regular formsets, it's possible to :ref:`specify initial data\n<formsets-initial-data>` for forms in the formset by specifying an ``initial``\nparameter when instantiating the model formset class returned by\n:func:`~django.forms.models.modelformset_factory`. However, with model\nformsets, the initial values only apply to extra forms, those that aren't bound\nto an existing object instance.\n\n.. _saving-objects-in-the-formset:\n\nSaving objects in the formset\n-----------------------------\n\nAs with a ``ModelForm``, you can save the data as a model object. This is done\nwith the formset's ``save()`` method::\n\n    # Create a formset instance with POST data.\n    >>> formset = AuthorFormSet(request.POST)\n\n    # Assuming all is valid, save the data.\n    >>> instances = formset.save()\n\nThe ``save()`` method returns the instances that have been saved to the\ndatabase. If a given instance's data didn't change in the bound data, the\ninstance won't be saved to the database and won't be included in the return\nvalue (``instances``, in the above example).\n\nWhen fields are missing from the form (for example because they have\nbeen excluded), these fields will not be set by the ``save()``\nmethod. You can find more information about this restriction, which\nalso holds for regular ``ModelForms``, in `Using a subset of fields on\nthe form`_.\n\nPass ``commit=False`` to return the unsaved model instances::\n\n    # don't save to the database\n    >>> instances = formset.save(commit=False)\n    >>> for instance in instances:\n    ...     # do something with instance\n    ...     instance.save()\n\nThis gives you the ability to attach data to the instances before saving them\nto the database. If your formset contains a ``ManyToManyField``, you'll also\nneed to call ``formset.save_m2m()`` to ensure the many-to-many relationships\nare saved properly.\n\n.. _model-formsets-max-num:\n\nLimiting the number of editable objects\n---------------------------------------\n\nAs with regular formsets, you can use the ``max_num`` and ``extra`` parameters\nto :func:`~django.forms.models.modelformset_factory` to limit the number of\nextra forms displayed.\n\n``max_num`` does not prevent existing objects from being displayed::\n\n    >>> Author.objects.order_by('name')\n    [<Author: Charles Baudelaire>, <Author: Paul Verlaine>, <Author: Walt Whitman>]\n\n    >>> AuthorFormSet = modelformset_factory(Author, max_num=1)\n    >>> formset = AuthorFormSet(queryset=Author.objects.order_by('name'))\n    >>> [x.name for x in formset.get_queryset()]\n    [u'Charles Baudelaire', u'Paul Verlaine', u'Walt Whitman']\n\nIf the value of ``max_num`` is greater than the number of existing related\nobjects, up to ``extra`` additional blank forms will be added to the formset,\nso long as the total number of forms does not exceed ``max_num``::\n\n    >>> AuthorFormSet = modelformset_factory(Author, max_num=4, extra=2)\n    >>> formset = AuthorFormSet(queryset=Author.objects.order_by('name'))\n    >>> for form in formset:\n    ...     print(form.as_table())\n    <tr><th><label for=\"id_form-0-name\">Name:</label></th><td><input id=\"id_form-0-name\" type=\"text\" name=\"form-0-name\" value=\"Charles Baudelaire\" maxlength=\"100\" /><input type=\"hidden\" name=\"form-0-id\" value=\"1\" id=\"id_form-0-id\" /></td></tr>\n    <tr><th><label for=\"id_form-1-name\">Name:</label></th><td><input id=\"id_form-1-name\" type=\"text\" name=\"form-1-name\" value=\"Paul Verlaine\" maxlength=\"100\" /><input type=\"hidden\" name=\"form-1-id\" value=\"3\" id=\"id_form-1-id\" /></td></tr>\n    <tr><th><label for=\"id_form-2-name\">Name:</label></th><td><input id=\"id_form-2-name\" type=\"text\" name=\"form-2-name\" value=\"Walt Whitman\" maxlength=\"100\" /><input type=\"hidden\" name=\"form-2-id\" value=\"2\" id=\"id_form-2-id\" /></td></tr>\n    <tr><th><label for=\"id_form-3-name\">Name:</label></th><td><input id=\"id_form-3-name\" type=\"text\" name=\"form-3-name\" maxlength=\"100\" /><input type=\"hidden\" name=\"form-3-id\" id=\"id_form-3-id\" /></td></tr>\n\nA ``max_num`` value of ``None`` (the default) puts a high limit on the number\nof forms displayed (1000). In practice this is equivalent to no limit.\n\nUsing a model formset in a view\n-------------------------------\n\nModel formsets are very similar to formsets. Let's say we want to present a\nformset to edit ``Author`` model instances::\n\n    def manage_authors(request):\n        AuthorFormSet = modelformset_factory(Author)\n        if request.method == 'POST':\n            formset = AuthorFormSet(request.POST, request.FILES)\n            if formset.is_valid():\n                formset.save()\n                # do something.\n        else:\n            formset = AuthorFormSet()\n        return render_to_response(\"manage_authors.html\", {\n            \"formset\": formset,\n        })\n\nAs you can see, the view logic of a model formset isn't drastically different\nthan that of a \"normal\" formset. The only difference is that we call\n``formset.save()`` to save the data into the database. (This was described\nabove, in :ref:`saving-objects-in-the-formset`.)\n\nOveriding ``clean()`` on a ``model_formset``\n--------------------------------------------\n\nJust like with ``ModelForms``, by default the ``clean()`` method of a\n``model_formset`` will validate that none of the items in the formset violate\nthe unique constraints on your model (either ``unique``, ``unique_together`` or\n``unique_for_date|month|year``).  If you want to override the ``clean()`` method\non a ``model_formset`` and maintain this validation, you must call the parent\nclass's ``clean`` method::\n\n    class MyModelFormSet(BaseModelFormSet):\n        def clean(self):\n            super(MyModelFormSet, self).clean()\n            # example custom validation across forms in the formset:\n            for form in self.forms:\n                # your custom formset validation\n\nUsing a custom queryset\n-----------------------\n\nAs stated earlier, you can override the default queryset used by the model\nformset::\n\n    def manage_authors(request):\n        AuthorFormSet = modelformset_factory(Author)\n        if request.method == \"POST\":\n            formset = AuthorFormSet(request.POST, request.FILES,\n                                    queryset=Author.objects.filter(name__startswith='O'))\n            if formset.is_valid():\n                formset.save()\n                # Do something.\n        else:\n            formset = AuthorFormSet(queryset=Author.objects.filter(name__startswith='O'))\n        return render_to_response(\"manage_authors.html\", {\n            \"formset\": formset,\n        })\n\nNote that we pass the ``queryset`` argument in both the ``POST`` and ``GET``\ncases in this example.\n\nUsing the formset in the template\n---------------------------------\n\n.. highlight:: html+django\n\nThere are three ways to render a formset in a Django template.\n\nFirst, you can let the formset do most of the work::\n\n    <form method=\"post\" action=\"\">\n        {{ formset }}\n    </form>\n\nSecond, you can manually render the formset, but let the form deal with\nitself::\n\n    <form method=\"post\" action=\"\">\n        {{ formset.management_form }}\n        {% for form in formset %}\n            {{ form }}\n        {% endfor %}\n    </form>\n\nWhen you manually render the forms yourself, be sure to render the management\nform as shown above. See the :ref:`management form documentation\n<understanding-the-managementform>`.\n\nThird, you can manually render each field::\n\n    <form method=\"post\" action=\"\">\n        {{ formset.management_form }}\n        {% for form in formset %}\n            {% for field in form %}\n                {{ field.label_tag }}: {{ field }}\n            {% endfor %}\n        {% endfor %}\n    </form>\n\nIf you opt to use this third method and you don't iterate over the fields with\na ``{% for %}`` loop, you'll need to render the primary key field. For example,\nif you were rendering the ``name`` and ``age`` fields of a model::\n\n    <form method=\"post\" action=\"\">\n        {{ formset.management_form }}\n        {% for form in formset %}\n            {{ form.id }}\n            <ul>\n                <li>{{ form.name }}</li>\n                <li>{{ form.age }}</li>\n            </ul>\n        {% endfor %}\n    </form>\n\nNotice how we need to explicitly render ``{{ form.id }}``. This ensures that\nthe model formset, in the ``POST`` case, will work correctly. (This example\nassumes a primary key named ``id``. If you've explicitly defined your own\nprimary key that isn't called ``id``, make sure it gets rendered.)\n\n.. highlight:: python\n\n.. _inline-formsets:\n\nInline formsets\n===============\n\nInline formsets is a small abstraction layer on top of model formsets. These\nsimplify the case of working with related objects via a foreign key. Suppose\nyou have these two models::\n\n    class Author(models.Model):\n        name = models.CharField(max_length=100)\n\n    class Book(models.Model):\n        author = models.ForeignKey(Author)\n        title = models.CharField(max_length=100)\n\nIf you want to create a formset that allows you to edit books belonging to\na particular author, you could do this::\n\n    >>> from django.forms.models import inlineformset_factory\n    >>> BookFormSet = inlineformset_factory(Author, Book)\n    >>> author = Author.objects.get(name=u'Mike Royko')\n    >>> formset = BookFormSet(instance=author)\n\n.. note::\n\n    :func:`~django.forms.models.inlineformset_factory` uses\n    :func:`~django.forms.models.modelformset_factory` and marks\n    ``can_delete=True``.\n\n.. seealso::\n\n    :ref:`Manually rendered can_delete and can_order <manually-rendered-can-delete-and-can-order>`.\n\nMore than one foreign key to the same model\n-------------------------------------------\n\nIf your model contains more than one foreign key to the same model, you'll\nneed to resolve the ambiguity manually using ``fk_name``. For example, consider\nthe following model::\n\n    class Friendship(models.Model):\n        from_friend = models.ForeignKey(Friend)\n        to_friend = models.ForeignKey(Friend)\n        length_in_months = models.IntegerField()\n\nTo resolve this, you can use ``fk_name`` to\n:func:`~django.forms.models.inlineformset_factory`::\n\n    >>> FriendshipFormSet = inlineformset_factory(Friend, Friendship, fk_name=\"from_friend\")\n\nUsing an inline formset in a view\n---------------------------------\n\nYou may want to provide a view that allows a user to edit the related objects\nof a model. Here's how you can do that::\n\n    def manage_books(request, author_id):\n        author = Author.objects.get(pk=author_id)\n        BookInlineFormSet = inlineformset_factory(Author, Book)\n        if request.method == \"POST\":\n            formset = BookInlineFormSet(request.POST, request.FILES, instance=author)\n            if formset.is_valid():\n                formset.save()\n                # Do something. Should generally end with a redirect. For example:\n                return HttpResponseRedirect(author.get_absolute_url())\n        else:\n            formset = BookInlineFormSet(instance=author)\n        return render_to_response(\"manage_books.html\", {\n            \"formset\": formset,\n        })\n\nNotice how we pass ``instance`` in both the ``POST`` and ``GET`` cases.\n"
  },
  {
    "path": "Django-1.5.1/docs/topics/http/decorators.txt",
    "content": "===============\nView decorators\n===============\n\n.. module:: django.views.decorators.http\n\nDjango provides several decorators that can be applied to views to support\nvarious HTTP features.\n\nAllowed HTTP methods\n====================\n\nThe decorators in :mod:`django.views.decorators.http` can be used to restrict\naccess to views based on the request method. These decorators will return\na :class:`django.http.HttpResponseNotAllowed` if the conditions are not met.\n\n.. function:: require_http_methods(request_method_list)\n\n    Decorator to require that a view only accept particular request\n    methods. Usage::\n\n        from django.views.decorators.http import require_http_methods\n\n        @require_http_methods([\"GET\", \"POST\"])\n        def my_view(request):\n            # I can assume now that only GET or POST requests make it this far\n            # ...\n            pass\n\n    Note that request methods should be in uppercase.\n\n.. function:: require_GET()\n\n    Decorator to require that a view only accept the GET method.\n\n.. function:: require_POST()\n\n    Decorator to require that a view only accept the POST method.\n\n.. function:: require_safe()\n\n    .. versionadded:: 1.4\n\n    Decorator to require that a view only accept the GET and HEAD methods.\n    These methods are commonly considered \"safe\" because they should not have\n    the significance of taking an action other than retrieving the requested\n    resource.\n\n    .. note::\n        Django will automatically strip the content of responses to HEAD\n        requests while leaving the headers unchanged, so you may handle HEAD\n        requests exactly like GET requests in your views. Since some software,\n        such as link checkers, rely on HEAD requests, you might prefer\n        using ``require_safe`` instead of ``require_GET``.\n\nConditional view processing\n===========================\n\nThe following decorators in :mod:`django.views.decorators.http` can be used to\ncontrol caching behavior on particular views.\n\n.. function:: condition(etag_func=None, last_modified_func=None)\n\n.. function:: etag(etag_func)\n\n.. function:: last_modified(last_modified_func)\n\n    These decorators can be used to generate ``ETag`` and ``Last-Modified``\n    headers; see\n    :doc:`conditional view processing </topics/conditional-view-processing>`.\n\n.. module:: django.views.decorators.gzip\n\nGZip compression\n================\n\nThe decorators in :mod:`django.views.decorators.gzip` control content\ncompression on a per-view basis.\n\n.. function:: gzip_page()\n\n    This decorator compresses content if the browser allows gzip compression.\n    It sets the ``Vary`` header accordingly, so that caches will base their\n    storage on the ``Accept-Encoding`` header.\n\n.. module:: django.views.decorators.vary\n\nVary headers\n============\n\nThe decorators in :mod:`django.views.decorators.vary` can be used to control\ncaching based on specific request headers.\n\n.. function:: vary_on_cookie(func)\n\n.. function:: vary_on_headers(*headers)\n\n    The ``Vary`` header defines which request headers a cache mechanism should take\n    into account when building its cache key.\n\n    See :ref:`using vary headers <using-vary-headers>`.\n"
  },
  {
    "path": "Django-1.5.1/docs/topics/http/file-uploads.txt",
    "content": "============\nFile Uploads\n============\n\n.. currentmodule:: django.core.files.uploadedfile\n\nWhen Django handles a file upload, the file data ends up placed in\n:attr:`request.FILES <django.http.HttpRequest.FILES>` (for more on the\n``request`` object see the documentation for :doc:`request and response objects\n</ref/request-response>`). This document explains how files are stored on disk\nand in memory, and how to customize the default behavior.\n\nBasic file uploads\n==================\n\nConsider a simple form containing a :class:`~django.forms.FileField`::\n\n    from django import forms\n\n    class UploadFileForm(forms.Form):\n        title = forms.CharField(max_length=50)\n        file  = forms.FileField()\n\nA view handling this form will receive the file data in\n:attr:`request.FILES <django.http.HttpRequest.FILES>`, which is a dictionary\ncontaining a key for each :class:`~django.forms.FileField` (or\n:class:`~django.forms.ImageField`, or other :class:`~django.forms.FileField`\nsubclass) in the form. So the data from the above form would\nbe accessible as ``request.FILES['file']``.\n\nNote that :attr:`request.FILES <django.http.HttpRequest.FILES>` will only\ncontain data if the request method was ``POST`` and the ``<form>`` that posted\nthe request has the attribute ``enctype=\"multipart/form-data\"``. Otherwise,\n``request.FILES`` will be empty.\n\nMost of the time, you'll simply pass the file data from ``request`` into the\nform as described in :ref:`binding-uploaded-files`. This would look\nsomething like::\n\n    from django.http import HttpResponseRedirect\n    from django.shortcuts import render_to_response\n\n    # Imaginary function to handle an uploaded file.\n    from somewhere import handle_uploaded_file\n\n    def upload_file(request):\n        if request.method == 'POST':\n            form = UploadFileForm(request.POST, request.FILES)\n            if form.is_valid():\n                handle_uploaded_file(request.FILES['file'])\n                return HttpResponseRedirect('/success/url/')\n        else:\n            form = UploadFileForm()\n        return render_to_response('upload.html', {'form': form})\n\nNotice that we have to pass :attr:`request.FILES <django.http.HttpRequest.FILES>`\ninto the form's constructor; this is how file data gets bound into a form.\n\nHandling uploaded files\n-----------------------\n\n.. class:: UploadedFile\n\n    The final piece of the puzzle is handling the actual file data from\n    :attr:`request.FILES <django.http.HttpRequest.FILES>`. Each entry in this\n    dictionary is an ``UploadedFile`` object -- a simple wrapper around an uploaded\n    file. You'll usually use one of these methods to access the uploaded content:\n\n    .. method:: read()\n\n        Read the entire uploaded data from the file. Be careful with this\n        method: if the uploaded file is huge it can overwhelm your system if you\n        try to read it into memory. You'll probably want to use ``chunks()``\n        instead; see below.\n\n    .. method:: multiple_chunks()\n\n        Returns ``True`` if the uploaded file is big enough to require\n        reading in multiple chunks. By default this will be any file\n        larger than 2.5 megabytes, but that's configurable; see below.\n\n    .. method:: chunks()\n\n        A generator returning chunks of the file. If ``multiple_chunks()`` is\n        ``True``, you should use this method in a loop instead of ``read()``.\n\n        In practice, it's often easiest simply to use ``chunks()`` all the time;\n        see the example below.\n\n    .. attribute:: name\n\n        The name of the uploaded file (e.g. ``my_file.txt``).\n\n    .. attribute:: size\n\n        The size, in bytes, of the uploaded file.\n\nThere are a few other methods and attributes available on ``UploadedFile``\nobjects; see `UploadedFile objects`_ for a complete reference.\n\nPutting it all together, here's a common way you might handle an uploaded file::\n\n    def handle_uploaded_file(f):\n        with open('some/file/name.txt', 'wb+') as destination:\n            for chunk in f.chunks():\n                destination.write(chunk)\n\nLooping over ``UploadedFile.chunks()`` instead of using ``read()`` ensures that\nlarge files don't overwhelm your system's memory.\n\nWhere uploaded data is stored\n-----------------------------\n\nBefore you save uploaded files, the data needs to be stored somewhere.\n\nBy default, if an uploaded file is smaller than 2.5 megabytes, Django will hold\nthe entire contents of the upload in memory. This means that saving the file\ninvolves only a read from memory and a write to disk and thus is very fast.\n\nHowever, if an uploaded file is too large, Django will write the uploaded file\nto a temporary file stored in your system's temporary directory. On a Unix-like\nplatform this means you can expect Django to generate a file called something\nlike ``/tmp/tmpzfp6I6.upload``. If an upload is large enough, you can watch this\nfile grow in size as Django streams the data onto disk.\n\nThese specifics -- 2.5 megabytes; ``/tmp``; etc. -- are simply \"reasonable\ndefaults\". Read on for details on how you can customize or completely replace\nupload behavior.\n\nChanging upload handler behavior\n--------------------------------\n\nThree settings control Django's file upload behavior:\n\n:setting:`FILE_UPLOAD_MAX_MEMORY_SIZE`\n    The maximum size, in bytes, for files that will be uploaded into memory.\n    Files larger than :setting:`FILE_UPLOAD_MAX_MEMORY_SIZE` will be\n    streamed to disk.\n\n    Defaults to 2.5 megabytes.\n\n:setting:`FILE_UPLOAD_TEMP_DIR`\n    The directory where uploaded files larger than\n    :setting:`FILE_UPLOAD_MAX_MEMORY_SIZE` will be stored.\n\n    Defaults to your system's standard temporary directory (i.e. ``/tmp`` on\n    most Unix-like systems).\n\n:setting:`FILE_UPLOAD_PERMISSIONS`\n    The numeric mode (i.e. ``0644``) to set newly uploaded files to. For\n    more information about what these modes mean, see the documentation for\n    :func:`os.chmod`.\n\n    If this isn't given or is ``None``, you'll get operating-system\n    dependent behavior. On most platforms, temporary files will have a mode\n    of ``0600``, and files saved from memory will be saved using the\n    system's standard umask.\n\n    .. warning::\n\n        If you're not familiar with file modes, please note that the leading\n        ``0`` is very important: it indicates an octal number, which is the\n        way that modes must be specified. If you try to use ``644``, you'll\n        get totally incorrect behavior.\n\n        **Always prefix the mode with a 0.**\n\n:setting:`FILE_UPLOAD_HANDLERS`\n    The actual handlers for uploaded files. Changing this setting allows\n    complete customization -- even replacement -- of Django's upload\n    process. See `upload handlers`_, below, for details.\n\n    Defaults to::\n\n        (\"django.core.files.uploadhandler.MemoryFileUploadHandler\",\n         \"django.core.files.uploadhandler.TemporaryFileUploadHandler\",)\n\n    Which means \"try to upload to memory first, then fall back to temporary\n    files.\"\n\nHandling uploaded files with a model\n------------------------------------\n\nIf you're saving a file on a :class:`~django.db.models.Model` with a\n:class:`~django.db.models.FileField`, using a :class:`~django.forms.ModelForm`\nmakes this process much easier. The file object will be saved to the location\nspecified by the :attr:`~django.db.models.FileField.upload_to` argument of the\ncorresponding :class:`~django.db.models.FileField` when calling\n``form.save()``::\n\n    from django.http import HttpResponseRedirect\n    from django.shortcuts import render\n    from .forms import ModelFormWithFileField\n\n    def upload_file(request):\n        if request.method == 'POST':\n            form = ModelFormWithFileField(request.POST, request.FILES)\n            if form.is_valid():\n                # file is saved\n                form.save()\n                return HttpResponseRedirect('/success/url/')\n        else:\n            form = ModelFormWithFileField()\n        return render(request, 'upload.html', {'form': form})\n\nIf you are constructing an object manually, you can simply assign the file\nobject from :attr:`request.FILES <django.http.HttpRequest.FILES>` to the file\nfield in the model::\n\n    from django.http import HttpResponseRedirect\n    from django.shortcuts import render\n    from .forms import UploadFileForm\n    from .models import ModelWithFileField\n\n    def upload_file(request):\n        if request.method == 'POST':\n            form = UploadFileForm(request.POST, request.FILES)\n            if form.is_valid():\n                instance = ModelWithFileField(file_field=request.FILES['file'])\n                instance.save()\n                return HttpResponseRedirect('/success/url/')\n        else:\n            form = UploadFileForm()\n        return render(request, 'upload.html', {'form': form})\n\n\n``UploadedFile`` objects\n========================\n\nIn addition to those inherited from :class:`~django.core.files.File`, all\n``UploadedFile`` objects define the following methods/attributes:\n\n.. attribute:: UploadedFile.content_type\n\n    The content-type header uploaded with the file (e.g. :mimetype:`text/plain`\n    or :mimetype:`application/pdf`). Like any data supplied by the user, you\n    shouldn't trust that the uploaded file is actually this type. You'll still\n    need to validate that the file contains the content that the content-type\n    header claims -- \"trust but verify.\"\n\n.. attribute:: UploadedFile.charset\n\n    For :mimetype:`text/*` content-types, the character set (i.e. ``utf8``)\n    supplied by the browser. Again, \"trust but verify\" is the best policy here.\n\n.. attribute:: UploadedFile.temporary_file_path()\n\n    Only files uploaded onto disk will have this method; it returns the full\n    path to the temporary uploaded file.\n\n.. note::\n\n    Like regular Python files, you can read the file line-by-line simply by\n    iterating over the uploaded file:\n\n    .. code-block:: python\n\n        for line in uploadedfile:\n            do_something_with(line)\n\n    However, *unlike* standard Python files, :class:`UploadedFile` only\n    understands ``\\n`` (also known as \"Unix-style\") line endings. If you know\n    that you need to handle uploaded files with different line endings, you'll\n    need to do so in your view.\n\nUpload Handlers\n===============\n\nWhen a user uploads a file, Django passes off the file data to an *upload\nhandler* -- a small class that handles file data as it gets uploaded. Upload\nhandlers are initially defined in the :setting:`FILE_UPLOAD_HANDLERS` setting,\nwhich defaults to::\n\n    (\"django.core.files.uploadhandler.MemoryFileUploadHandler\",\n     \"django.core.files.uploadhandler.TemporaryFileUploadHandler\",)\n\nTogether the ``MemoryFileUploadHandler`` and ``TemporaryFileUploadHandler``\nprovide Django's default file upload behavior of reading small files into memory\nand large ones onto disk.\n\nYou can write custom handlers that customize how Django handles files. You\ncould, for example, use custom handlers to enforce user-level quotas, compress\ndata on the fly, render progress bars, and even send data to another storage\nlocation directly without storing it locally.\n\n.. _modifying_upload_handlers_on_the_fly:\n\nModifying upload handlers on the fly\n------------------------------------\n\nSometimes particular views require different upload behavior. In these cases,\nyou can override upload handlers on a per-request basis by modifying\n``request.upload_handlers``. By default, this list will contain the upload\nhandlers given by :setting:`FILE_UPLOAD_HANDLERS`, but you can modify the list\nas you would any other list.\n\nFor instance, suppose you've written a ``ProgressBarUploadHandler`` that\nprovides feedback on upload progress to some sort of AJAX widget. You'd add this\nhandler to your upload handlers like this::\n\n    request.upload_handlers.insert(0, ProgressBarUploadHandler())\n\nYou'd probably want to use ``list.insert()`` in this case (instead of\n``append()``) because a progress bar handler would need to run *before* any\nother handlers. Remember, the upload handlers are processed in order.\n\nIf you want to replace the upload handlers completely, you can just assign a new\nlist::\n\n   request.upload_handlers = [ProgressBarUploadHandler()]\n\n.. note::\n\n    You can only modify upload handlers *before* accessing\n    ``request.POST`` or ``request.FILES`` -- it doesn't make sense to\n    change upload handlers after upload handling has already\n    started. If you try to modify ``request.upload_handlers`` after\n    reading from ``request.POST`` or ``request.FILES`` Django will\n    throw an error.\n\n    Thus, you should always modify uploading handlers as early in your view as\n    possible.\n\n    Also, ``request.POST`` is accessed by\n    :class:`~django.middleware.csrf.CsrfViewMiddleware` which is enabled by\n    default. This means you will need to use\n    :func:`~django.views.decorators.csrf.csrf_exempt` on your view to allow you\n    to change the upload handlers.  You will then need to use\n    :func:`~django.views.decorators.csrf.csrf_protect` on the function that\n    actually processes the request.  Note that this means that the handlers may\n    start receiving the file upload before the CSRF checks have been done.\n    Example code:\n\n    .. code-block:: python\n\n        from django.views.decorators.csrf import csrf_exempt, csrf_protect\n\n        @csrf_exempt\n        def upload_file_view(request):\n            request.upload_handlers.insert(0, ProgressBarUploadHandler())\n            return _upload_file_view(request)\n\n        @csrf_protect\n        def _upload_file_view(request):\n            ... # Process request\n\n\nWriting custom upload handlers\n------------------------------\n\nAll file upload handlers should be subclasses of\n``django.core.files.uploadhandler.FileUploadHandler``. You can define upload\nhandlers wherever you wish.\n\nRequired methods\n~~~~~~~~~~~~~~~~\n\nCustom file upload handlers **must** define the following methods:\n\n``FileUploadHandler.receive_data_chunk(self, raw_data, start)``\n    Receives a \"chunk\" of data from the file upload.\n\n    ``raw_data`` is a byte string containing the uploaded data.\n\n    ``start`` is the position in the file where this ``raw_data`` chunk\n    begins.\n\n    The data you return will get fed into the subsequent upload handlers'\n    ``receive_data_chunk`` methods. In this way, one handler can be a\n    \"filter\" for other handlers.\n\n    Return ``None`` from ``receive_data_chunk`` to sort-circuit remaining\n    upload handlers from getting this chunk.. This is useful if you're\n    storing the uploaded data yourself and don't want future handlers to\n    store a copy of the data.\n\n    If you raise a ``StopUpload`` or a ``SkipFile`` exception, the upload\n    will abort or the file will be completely skipped.\n\n``FileUploadHandler.file_complete(self, file_size)``\n    Called when a file has finished uploading.\n\n    The handler should return an ``UploadedFile`` object that will be stored\n    in ``request.FILES``. Handlers may also return ``None`` to indicate that\n    the ``UploadedFile`` object should come from subsequent upload handlers.\n\nOptional methods\n~~~~~~~~~~~~~~~~\n\nCustom upload handlers may also define any of the following optional methods or\nattributes:\n\n``FileUploadHandler.chunk_size``\n    Size, in bytes, of the \"chunks\" Django should store into memory and feed\n    into the handler. That is, this attribute controls the size of chunks\n    fed into ``FileUploadHandler.receive_data_chunk``.\n\n    For maximum performance the chunk sizes should be divisible by ``4`` and\n    should not exceed 2 GB (2\\ :sup:`31` bytes) in size. When there are\n    multiple chunk sizes provided by multiple handlers, Django will use the\n    smallest chunk size defined by any handler.\n\n    The default is 64*2\\ :sup:`10` bytes, or 64 KB.\n\n``FileUploadHandler.new_file(self, field_name, file_name, content_type, content_length, charset)``\n    Callback signaling that a new file upload is starting. This is called\n    before any data has been fed to any upload handlers.\n\n    ``field_name`` is a string name of the file ``<input>`` field.\n\n    ``file_name`` is the unicode filename that was provided by the browser.\n\n    ``content_type`` is the MIME type provided by the browser -- E.g.\n    ``'image/jpeg'``.\n\n    ``content_length`` is the length of the image given by the browser.\n    Sometimes this won't be provided and will be ``None``.\n\n    ``charset`` is the character set (i.e. ``utf8``) given by the browser.\n    Like ``content_length``, this sometimes won't be provided.\n\n    This method may raise a ``StopFutureHandlers`` exception to prevent\n    future handlers from handling this file.\n\n``FileUploadHandler.upload_complete(self)``\n    Callback signaling that the entire upload (all files) has completed.\n\n``FileUploadHandler.handle_raw_input(self, input_data, META, content_length, boundary, encoding)``\n    Allows the handler to completely override the parsing of the raw\n    HTTP input.\n\n    ``input_data`` is a file-like object that supports ``read()``-ing.\n\n    ``META`` is the same object as ``request.META``.\n\n    ``content_length`` is the length of the data in ``input_data``. Don't\n    read more than ``content_length`` bytes from ``input_data``.\n\n    ``boundary`` is the MIME boundary for this request.\n\n    ``encoding`` is the encoding of the request.\n\n    Return ``None`` if you want upload handling to continue, or a tuple of\n    ``(POST, FILES)`` if you want to return the new data structures suitable\n    for the request directly.\n"
  },
  {
    "path": "Django-1.5.1/docs/topics/http/generic-views.txt",
    "content": "=============\nGeneric views\n=============\n\nSee :doc:`/ref/class-based-views/index`.\n"
  },
  {
    "path": "Django-1.5.1/docs/topics/http/index.txt",
    "content": "Handling HTTP requests\n======================\n\nInformation on handling HTTP requests in Django:\n\n.. toctree::\n   :maxdepth: 1\n   \n   urls\n   views\n   decorators\n   file-uploads\n   shortcuts\n   generic-views\n   middleware\n   sessions\n"
  },
  {
    "path": "Django-1.5.1/docs/topics/http/middleware.txt",
    "content": "==========\nMiddleware\n==========\n\nMiddleware is a framework of hooks into Django's request/response processing.\nIt's a light, low-level \"plugin\" system for globally altering Django's input\nand/or output.\n\nEach middleware component is responsible for doing some specific function. For\nexample, Django includes a middleware component, ``XViewMiddleware``, that adds\nan ``\"X-View\"`` HTTP header to every response to a ``HEAD`` request.\n\nThis document explains how middleware works, how you activate middleware, and\nhow to write your own middleware. Django ships with some built-in middleware\nyou can use right out of the box; they're documented in the :doc:`built-in\nmiddleware reference </ref/middleware>`.\n\nActivating middleware\n=====================\n\nTo activate a middleware component, add it to the :setting:`MIDDLEWARE_CLASSES`\nlist in your Django settings. In :setting:`MIDDLEWARE_CLASSES`, each middleware\ncomponent is represented by a string: the full Python path to the middleware's\nclass name. For example, here's the default :setting:`MIDDLEWARE_CLASSES`\ncreated by :djadmin:`django-admin.py startproject <startproject>`::\n\n    MIDDLEWARE_CLASSES = (\n        'django.middleware.common.CommonMiddleware',\n        'django.contrib.sessions.middleware.SessionMiddleware',\n        'django.middleware.csrf.CsrfViewMiddleware',\n        'django.contrib.auth.middleware.AuthenticationMiddleware',\n        'django.contrib.messages.middleware.MessageMiddleware',\n    )\n\nDuring the request phases (:meth:`process_request` and :meth:`process_view`\nmiddleware), Django applies middleware in the order it's defined in\n:setting:`MIDDLEWARE_CLASSES`, top-down. During the response phases\n(:meth:`process_response` and :meth:`process_exception` middleware), the\nclasses are applied in reverse order, from the bottom up. You can think of it\nlike an onion: each middleware class is a \"layer\" that wraps the view:\n\n.. image:: _images/middleware.png\n   :width: 502\n   :height: 417\n   :alt: Middleware application order.\n\nA Django installation doesn't require any middleware -- e.g.,\n:setting:`MIDDLEWARE_CLASSES` can be empty, if you'd like -- but it's strongly\nsuggested that you at least use\n:class:`~django.middleware.common.CommonMiddleware`.\n\nWriting your own middleware\n===========================\n\nWriting your own middleware is easy. Each middleware component is a single\nPython class that defines one or more of the following methods:\n\n.. _request-middleware:\n\n``process_request``\n-------------------\n\n.. method:: process_request(self, request)\n\n``request`` is an :class:`~django.http.HttpRequest` object. This method is\ncalled on each request, before Django decides which view to execute.\n\n``process_request()`` should return either ``None`` or an\n:class:`~django.http.HttpResponse` object. If it returns ``None``, Django will\ncontinue processing this request, executing any other middleware and, then, the\nappropriate view. If it returns an :class:`~django.http.HttpResponse` object,\nDjango won't bother calling ANY other request, view or exception middleware, or\nthe appropriate view; it'll return that :class:`~django.http.HttpResponse`.\nResponse middleware is always called on every response.\n\n.. _view-middleware:\n\n``process_view``\n----------------\n\n.. method:: process_view(self, request, view_func, view_args, view_kwargs)\n\n``request`` is an :class:`~django.http.HttpRequest` object. ``view_func`` is\nthe Python function that Django is about to use. (It's the actual function\nobject, not the name of the function as a string.) ``view_args`` is a list of\npositional arguments that will be passed to the view, and ``view_kwargs`` is a\ndictionary of keyword arguments that will be passed to the view. Neither\n``view_args`` nor ``view_kwargs`` include the first view argument\n(``request``).\n\n``process_view()`` is called just before Django calls the view. It should\nreturn either ``None`` or an :class:`~django.http.HttpResponse` object. If it\nreturns ``None``, Django will continue processing this request, executing any\nother ``process_view()`` middleware and, then, the appropriate view. If it\nreturns an :class:`~django.http.HttpResponse` object, Django won't bother\ncalling ANY other request, view or exception middleware, or the appropriate\nview; it'll return that :class:`~django.http.HttpResponse`. Response\nmiddleware is always called on every response.\n\n.. note::\n\n    Accessing :attr:`request.POST <django.http.HttpRequest.POST>` or\n    :attr:`request.REQUEST <django.http.HttpRequest.REQUEST>` inside middleware\n    from ``process_request`` or ``process_view`` will prevent any view running\n    after the middleware from being able to :ref:`modify the upload handlers\n    for the request <modifying_upload_handlers_on_the_fly>`, and should\n    normally be avoided.\n\n    The :class:`~django.middleware.csrf.CsrfViewMiddleware` class can be\n    considered an exception, as it provides the\n    :func:`~django.views.decorators.csrf.csrf_exempt` and\n    :func:`~django.views.decorators.csrf.csrf_protect` decorators which allow\n    views to explicitly control at what point the CSRF validation should occur.\n\n.. _template-response-middleware:\n\n``process_template_response``\n-----------------------------\n\n.. method:: process_template_response(self, request, response)\n\n``request`` is an :class:`~django.http.HttpRequest` object. ``response`` is a\nsubclass of :class:`~django.template.response.SimpleTemplateResponse` (e.g.\n:class:`~django.template.response.TemplateResponse`) or any response object\nthat implements a ``render`` method.\n\n``process_template_response()`` must return a response object that implements a\n``render`` method. It could alter the given ``response`` by changing\n``response.template_name`` and ``response.context_data``, or it could create\nand return a brand-new\n:class:`~django.template.response.SimpleTemplateResponse` or equivalent.\n\n``process_template_response()`` will only be called if the response\ninstance has a ``render()`` method, indicating that it is a\n:class:`~django.template.response.TemplateResponse` or equivalent.\n\nYou don't need to explicitly render responses -- responses will be\nautomatically rendered once all template response middleware has been\ncalled.\n\nMiddleware are run in reverse order during the response phase, which\nincludes process_template_response.\n\n.. _response-middleware:\n\n``process_response``\n--------------------\n\n.. method:: process_response(self, request, response)\n\n``request`` is an :class:`~django.http.HttpRequest` object. ``response`` is the\n:class:`~django.http.HttpResponse` object returned by a Django view.\n\n``process_response()`` must return an :class:`~django.http.HttpResponse`\nobject. It could alter the given ``response``, or it could create and return a\nbrand-new :class:`~django.http.HttpResponse`.\n\nUnlike the ``process_request()`` and ``process_view()`` methods, the\n``process_response()`` method is always called, even if the ``process_request()``\nand ``process_view()`` methods of the same middleware class were skipped because\nan earlier middleware method returned an :class:`~django.http.HttpResponse`\n(this means that your ``process_response()`` method cannot rely on setup done in\n``process_request()``, for example). In addition, during the response phase the\nclasses are applied in reverse order, from the bottom up. This means classes\ndefined at the end of :setting:`MIDDLEWARE_CLASSES` will be run first.\n\n.. versionchanged:: 1.5\n    ``response`` may also be an :class:`~django.http.StreamingHttpResponse`\n    object.\n\nUnlike :class:`~django.http.HttpResponse`,\n:class:`~django.http.StreamingHttpResponse` does not have a ``content``\nattribute. As a result, middleware can no longer assume that all responses\nwill have a ``content`` attribute. If they need access to the content, they\nmust test for streaming responses and adjust their behavior accordingly::\n\n    if response.streaming:\n        response.streaming_content = wrap_streaming_content(response.streaming_content)\n    else:\n        response.content = wrap_content(response.content)\n\n``streaming_content`` should be assumed to be too large to hold in memory.\nMiddleware may wrap it in a new generator, but must not consume it.\n\n.. _exception-middleware:\n\n``process_exception``\n---------------------\n\n.. method:: process_exception(self, request, exception)\n\n``request`` is an :class:`~django.http.HttpRequest` object. ``exception`` is an\n``Exception`` object raised by the view function.\n\nDjango calls ``process_exception()`` when a view raises an exception.\n``process_exception()`` should return either ``None`` or an\n:class:`~django.http.HttpResponse` object. If it returns an\n:class:`~django.http.HttpResponse` object, the response will be returned to\nthe browser. Otherwise, default exception handling kicks in.\n\nAgain, middleware are run in reverse order during the response phase, which\nincludes ``process_exception``. If an exception middleware returns a response,\nthe middleware classes above that middleware will not be called at all.\n\n``__init__``\n------------\n\nMost middleware classes won't need an initializer since middleware classes are\nessentially placeholders for the ``process_*`` methods. If you do need some\nglobal state you may use ``__init__`` to set up. However, keep in mind a couple\nof caveats:\n\n* Django initializes your middleware without any arguments, so you can't\n  define ``__init__`` as requiring any arguments.\n\n* Unlike the ``process_*`` methods which get called once per request,\n  ``__init__`` gets called only *once*, when the Web server responds to the\n  first request.\n\nMarking middleware as unused\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nIt's sometimes useful to determine at run-time whether a piece of middleware\nshould be used. In these cases, your middleware's ``__init__`` method may raise\n``django.core.exceptions.MiddlewareNotUsed``. Django will then remove that\npiece of middleware from the middleware process.\n\nGuidelines\n----------\n\n* Middleware classes don't have to subclass anything.\n\n* The middleware class can live anywhere on your Python path. All Django\n  cares about is that the :setting:`MIDDLEWARE_CLASSES` setting includes\n  the path to it.\n\n* Feel free to look at :doc:`Django's available middleware\n  </ref/middleware>` for examples.\n\n* If you write a middleware component that you think would be useful to\n  other people, contribute to the community! :doc:`Let us know\n  </internals/contributing/index>`, and we'll consider adding it to Django.\n"
  },
  {
    "path": "Django-1.5.1/docs/topics/http/sessions.txt",
    "content": "===================\nHow to use sessions\n===================\n\n.. module:: django.contrib.sessions\n   :synopsis: Provides session management for Django projects.\n\nDjango provides full support for anonymous sessions. The session framework\nlets you store and retrieve arbitrary data on a per-site-visitor basis. It\nstores data on the server side and abstracts the sending and receiving of\ncookies. Cookies contain a session ID -- not the data itself (unless you're\nusing the :ref:`cookie based backend<cookie-session-backend>`).\n\nEnabling sessions\n=================\n\nSessions are implemented via a piece of :doc:`middleware </ref/middleware>`.\n\nTo enable session functionality, do the following:\n\n* Edit the :setting:`MIDDLEWARE_CLASSES` setting and make sure\n  it contains ``'django.contrib.sessions.middleware.SessionMiddleware'``.\n  The default ``settings.py`` created by ``django-admin.py startproject``\n  has ``SessionMiddleware`` activated.\n\nIf you don't want to use sessions, you might as well remove the\n``SessionMiddleware`` line from :setting:`MIDDLEWARE_CLASSES` and\n``'django.contrib.sessions'`` from your :setting:`INSTALLED_APPS`.\nIt'll save you a small bit of overhead.\n\nConfiguring the session engine\n==============================\n\nBy default, Django stores sessions in your database (using the model\n``django.contrib.sessions.models.Session``). Though this is convenient, in\nsome setups it's faster to store session data elsewhere, so Django can be\nconfigured to store session data on your filesystem or in your cache.\n\nUsing database-backed sessions\n------------------------------\n\nIf you want to use a database-backed session, you need to add\n``'django.contrib.sessions'`` to your :setting:`INSTALLED_APPS` setting.\n\nOnce you have configured your installation, run ``manage.py syncdb``\nto install the single database table that stores session data.\n\n.. _cached-sessions-backend:\n\nUsing cached sessions\n---------------------\n\nFor better performance, you may want to use a cache-based session backend.\n\nTo store session data using Django's cache system, you'll first need to make\nsure you've configured your cache; see the :doc:`cache documentation\n</topics/cache>` for details.\n\n.. warning::\n\n    You should only use cache-based sessions if you're using the Memcached\n    cache backend. The local-memory cache backend doesn't retain data long\n    enough to be a good choice, and it'll be faster to use file or database\n    sessions directly instead of sending everything through the file or\n    database cache backends.\n\nIf you have multiple caches defined in :setting:`CACHES`, Django will use the\ndefault cache. To use another cache, set :setting:`SESSION_CACHE_ALIAS` to the\nname of that cache.\n\n.. versionchanged:: 1.5\n    The :setting:`SESSION_CACHE_ALIAS` setting was added.\n\nOnce your cache is configured, you've got two choices for how to store data in\nthe cache:\n\n* Set :setting:`SESSION_ENGINE` to\n  ``\"django.contrib.sessions.backends.cache\"`` for a simple caching session\n  store. Session data will be stored directly your cache. However, session\n  data may not be persistent: cached data can be evicted if the cache fills\n  up or if the cache server is restarted.\n\n* For persistent, cached data, set :setting:`SESSION_ENGINE` to\n  ``\"django.contrib.sessions.backends.cached_db\"``. This uses a\n  write-through cache -- every write to the cache will also be written to\n  the database. Session reads only use the database if the data is not\n  already in the cache.\n\nBoth session stores are quite fast, but the simple cache is faster because it\ndisregards persistence. In most cases, the ``cached_db`` backend will be fast\nenough, but if you need that last bit of performance, and are willing to let\nsession data be expunged from time to time, the ``cache`` backend is for you.\n\nIf you use the ``cached_db`` session backend, you also need to follow the\nconfiguration instructions for the `using database-backed sessions`_.\n\nUsing file-based sessions\n-------------------------\n\nTo use file-based sessions, set the :setting:`SESSION_ENGINE` setting to\n``\"django.contrib.sessions.backends.file\"``.\n\nYou might also want to set the :setting:`SESSION_FILE_PATH` setting (which\ndefaults to output from ``tempfile.gettempdir()``, most likely ``/tmp``) to\ncontrol where Django stores session files. Be sure to check that your Web\nserver has permissions to read and write to this location.\n\n.. _cookie-session-backend:\n\nUsing cookie-based sessions\n---------------------------\n\n.. versionadded:: 1.4\n\nTo use cookies-based sessions, set the :setting:`SESSION_ENGINE` setting to\n``\"django.contrib.sessions.backends.signed_cookies\"``. The session data will be\nstored using Django's tools for :doc:`cryptographic signing </topics/signing>`\nand the :setting:`SECRET_KEY` setting.\n\n.. note::\n\n    It's recommended to leave the :setting:`SESSION_COOKIE_HTTPONLY` setting\n    ``True`` to prevent tampering of the stored data from JavaScript.\n\n.. warning::\n\n    **The session data is signed but not encrypted**\n\n    When using the cookies backend the session data can be read by the client.\n\n    A MAC (Message Authentication Code) is used to protect the data against\n    changes by the client, so that the session data will be invalidated when being\n    tampered with. The same invalidation happens if the client storing the\n    cookie (e.g. your user's browser) can't store all of the session cookie and\n    drops data. Even though Django compresses the data, it's still entirely\n    possible to exceed the `common limit of 4096 bytes`_ per cookie.\n\n    **No freshness guarantee**\n\n    Note also that while the MAC can guarantee the authenticity of the data\n    (that it was generated by your site, and not someone else), and the\n    integrity of the data (that it is all there and correct), it cannot\n    guarantee freshness i.e. that you are being sent back the last thing you\n    sent to the client. This means that for some uses of session data, the\n    cookie backend might open you up to `replay attacks`_. Cookies will only be\n    detected as 'stale' if they are older than your\n    :setting:`SESSION_COOKIE_AGE`.\n\n    **Performance**\n\n    Finally, the size of a cookie can have an impact on the `speed of your site`_.\n\n.. _`common limit of 4096 bytes`: http://tools.ietf.org/html/rfc2965#section-5.3\n.. _`replay attacks`: http://en.wikipedia.org/wiki/Replay_attack\n.. _`speed of your site`: http://yuiblog.com/blog/2007/03/01/performance-research-part-3/\n\nUsing sessions in views\n=======================\n\nWhen ``SessionMiddleware`` is activated, each :class:`~django.http.HttpRequest`\nobject -- the first argument to any Django view function -- will have a\n``session`` attribute, which is a dictionary-like object.\n\nYou can read it and write to ``request.session`` at any point in your view.\nYou can edit it multiple times.\n\n.. class:: backends.base.SessionBase\n\n    This is the base class for all session objects. It has the following\n    standard dictionary methods:\n\n    .. method:: __getitem__(key)\n\n      Example: ``fav_color = request.session['fav_color']``\n\n    .. method:: __setitem__(key, value)\n\n      Example: ``request.session['fav_color'] = 'blue'``\n\n    .. method:: __delitem__(key)\n\n      Example: ``del request.session['fav_color']``. This raises ``KeyError``\n      if the given ``key`` isn't already in the session.\n\n    .. method:: __contains__(key)\n\n      Example: ``'fav_color' in request.session``\n\n    .. method:: get(key, default=None)\n\n      Example: ``fav_color = request.session.get('fav_color', 'red')``\n\n    .. method:: pop(key)\n\n      Example: ``fav_color = request.session.pop('fav_color')``\n\n    .. method:: keys\n\n    .. method:: items\n\n    .. method:: setdefault\n\n    .. method:: clear\n\n    It also has these methods:\n\n    .. method:: flush\n\n      Delete the current session data from the session and regenerate the\n      session key value that is sent back to the user in the cookie. This is\n      used if you want to ensure that the previous session data can't be\n      accessed again from the user's browser (for example, the\n      :func:`django.contrib.auth.logout()` function calls it).\n\n    .. method:: set_test_cookie\n\n      Sets a test cookie to determine whether the user's browser supports\n      cookies. Due to the way cookies work, you won't be able to test this\n      until the user's next page request. See `Setting test cookies`_ below for\n      more information.\n\n    .. method:: test_cookie_worked\n\n      Returns either ``True`` or ``False``, depending on whether the user's\n      browser accepted the test cookie. Due to the way cookies work, you'll\n      have to call ``set_test_cookie()`` on a previous, separate page request.\n      See `Setting test cookies`_ below for more information.\n\n    .. method:: delete_test_cookie\n\n      Deletes the test cookie. Use this to clean up after yourself.\n\n    .. method:: set_expiry(value)\n\n      Sets the expiration time for the session. You can pass a number of\n      different values:\n\n      * If ``value`` is an integer, the session will expire after that\n        many seconds of inactivity. For example, calling\n        ``request.session.set_expiry(300)`` would make the session expire\n        in 5 minutes.\n\n      * If ``value`` is a ``datetime`` or ``timedelta`` object, the\n        session will expire at that specific date/time.\n\n      * If ``value`` is ``0``, the user's session cookie will expire\n        when the user's Web browser is closed.\n\n      * If ``value`` is ``None``, the session reverts to using the global\n        session expiry policy.\n\n      Reading a session is not considered activity for expiration\n      purposes. Session expiration is computed from the last time the\n      session was *modified*.\n\n    .. method:: get_expiry_age\n\n      Returns the number of seconds until this session expires. For sessions\n      with no custom expiration (or those set to expire at browser close), this\n      will equal :setting:`SESSION_COOKIE_AGE`.\n\n      This function accepts two optional keyword arguments:\n\n      - ``modification``: last modification of the session, as a\n        :class:`~datetime.datetime` object. Defaults to the current time.\n      - ``expiry``: expiry information for the session, as a\n        :class:`~datetime.datetime` object, an :func:`int` (in seconds), or\n        ``None``. Defaults to the value stored in the session by\n        :meth:`set_expiry`, if there is one, or ``None``.\n\n    .. method:: get_expiry_date\n\n      Returns the date this session will expire. For sessions with no custom\n      expiration (or those set to expire at browser close), this will equal the\n      date :setting:`SESSION_COOKIE_AGE` seconds from now.\n\n      This function accepts the same keyword argumets as :meth:`get_expiry_age`.\n\n    .. method:: get_expire_at_browser_close\n\n      Returns either ``True`` or ``False``, depending on whether the user's\n      session cookie will expire when the user's Web browser is closed.\n\n    .. method:: SessionBase.clear_expired\n\n      .. versionadded:: 1.5\n\n      Removes expired sessions from the session store. This class method is\n      called by :djadmin:`clearsessions`.\n\nSession object guidelines\n-------------------------\n\n* Use normal Python strings as dictionary keys on ``request.session``. This\n  is more of a convention than a hard-and-fast rule.\n\n* Session dictionary keys that begin with an underscore are reserved for\n  internal use by Django.\n\n* Don't override ``request.session`` with a new object, and don't access or\n  set its attributes. Use it like a Python dictionary.\n\nExamples\n--------\n\nThis simplistic view sets a ``has_commented`` variable to ``True`` after a user\nposts a comment. It doesn't let a user post a comment more than once::\n\n    def post_comment(request, new_comment):\n        if request.session.get('has_commented', False):\n            return HttpResponse(\"You've already commented.\")\n        c = comments.Comment(comment=new_comment)\n        c.save()\n        request.session['has_commented'] = True\n        return HttpResponse('Thanks for your comment!')\n\nThis simplistic view logs in a \"member\" of the site::\n\n    def login(request):\n        m = Member.objects.get(username=request.POST['username'])\n        if m.password == request.POST['password']:\n            request.session['member_id'] = m.id\n            return HttpResponse(\"You're logged in.\")\n        else:\n            return HttpResponse(\"Your username and password didn't match.\")\n\n...And this one logs a member out, according to ``login()`` above::\n\n    def logout(request):\n        try:\n            del request.session['member_id']\n        except KeyError:\n            pass\n        return HttpResponse(\"You're logged out.\")\n\nThe standard :meth:`django.contrib.auth.logout` function actually does a bit\nmore than this to prevent inadvertent data leakage. It calls the\n:meth:`~backends.base.SessionBase.flush` method of ``request.session``.\nWe are using this example as a demonstration of how to work with session\nobjects, not as a full ``logout()`` implementation.\n\nSetting test cookies\n====================\n\nAs a convenience, Django provides an easy way to test whether the user's\nbrowser accepts cookies. Just call the\n:meth:`~backends.base.SessionBase.set_test_cookie` method of\n``request.session`` in a view, and call\n:meth:`~backends.base.SessionBase.test_cookie_worked` in a subsequent view --\nnot in the same view call.\n\nThis awkward split between ``set_test_cookie()`` and ``test_cookie_worked()``\nis necessary due to the way cookies work. When you set a cookie, you can't\nactually tell whether a browser accepted it until the browser's next request.\n\nIt's good practice to use\n:meth:`~backends.base.SessionBase.delete_test_cookie()` to clean up after\nyourself. Do this after you've verified that the test cookie worked.\n\nHere's a typical usage example::\n\n    def login(request):\n        if request.method == 'POST':\n            if request.session.test_cookie_worked():\n                request.session.delete_test_cookie()\n                return HttpResponse(\"You're logged in.\")\n            else:\n                return HttpResponse(\"Please enable cookies and try again.\")\n        request.session.set_test_cookie()\n        return render_to_response('foo/login_form.html')\n\nUsing sessions out of views\n===========================\n\nAn API is available to manipulate session data outside of a view::\n\n    >>> from django.contrib.sessions.backends.db import SessionStore\n    >>> import datetime\n    >>> s = SessionStore()\n    >>> s['last_login'] = datetime.datetime(2005, 8, 20, 13, 35, 10)\n    >>> s.save()\n    >>> s.session_key\n    '2b1189a188b44ad18c35e113ac6ceead'\n\n    >>> s = SessionStore(session_key='2b1189a188b44ad18c35e113ac6ceead')\n    >>> s['last_login']\n    datetime.datetime(2005, 8, 20, 13, 35, 0)\n\nIn order to prevent session fixation attacks, sessions keys that don't exist\nare regenerated::\n\n    >>> from django.contrib.sessions.backends.db import SessionStore\n    >>> s = SessionStore(session_key='no-such-session-here')\n    >>> s.save()\n    >>> s.session_key\n    'ff882814010ccbc3c870523934fee5a2'\n\nIf you're using the ``django.contrib.sessions.backends.db`` backend, each\nsession is just a normal Django model. The ``Session`` model is defined in\n``django/contrib/sessions/models.py``. Because it's a normal model, you can\naccess sessions using the normal Django database API::\n\n    >>> from django.contrib.sessions.models import Session\n    >>> s = Session.objects.get(pk='2b1189a188b44ad18c35e113ac6ceead')\n    >>> s.expire_date\n    datetime.datetime(2005, 8, 20, 13, 35, 12)\n\nNote that you'll need to call ``get_decoded()`` to get the session dictionary.\nThis is necessary because the dictionary is stored in an encoded format::\n\n    >>> s.session_data\n    'KGRwMQpTJ19hdXRoX3VzZXJfaWQnCnAyCkkxCnMuMTExY2ZjODI2Yj...'\n    >>> s.get_decoded()\n    {'user_id': 42}\n\nWhen sessions are saved\n=======================\n\nBy default, Django only saves to the session database when the session has been\nmodified -- that is if any of its dictionary values have been assigned or\ndeleted::\n\n    # Session is modified.\n    request.session['foo'] = 'bar'\n\n    # Session is modified.\n    del request.session['foo']\n\n    # Session is modified.\n    request.session['foo'] = {}\n\n    # Gotcha: Session is NOT modified, because this alters\n    # request.session['foo'] instead of request.session.\n    request.session['foo']['bar'] = 'baz'\n\nIn the last case of the above example, we can tell the session object\nexplicitly that it has been modified by setting the ``modified`` attribute on\nthe session object::\n\n    request.session.modified = True\n\nTo change this default behavior, set the :setting:`SESSION_SAVE_EVERY_REQUEST`\nsetting to ``True``. When set to ``True``, Django will save the session to the\ndatabase on every single request.\n\nNote that the session cookie is only sent when a session has been created or\nmodified. If :setting:`SESSION_SAVE_EVERY_REQUEST` is ``True``, the session\ncookie will be sent on every request.\n\nSimilarly, the ``expires`` part of a session cookie is updated each time the\nsession cookie is sent.\n\n.. versionchanged:: 1.5\n  The session is not saved if the response's status code is 500.\n\nBrowser-length sessions vs. persistent sessions\n===============================================\n\nYou can control whether the session framework uses browser-length sessions vs.\npersistent sessions with the :setting:`SESSION_EXPIRE_AT_BROWSER_CLOSE`\nsetting.\n\nBy default, :setting:`SESSION_EXPIRE_AT_BROWSER_CLOSE` is set to ``False``,\nwhich means session cookies will be stored in users' browsers for as long as\n:setting:`SESSION_COOKIE_AGE`. Use this if you don't want people to have to\nlog in every time they open a browser.\n\nIf :setting:`SESSION_EXPIRE_AT_BROWSER_CLOSE` is set to ``True``, Django will\nuse browser-length cookies -- cookies that expire as soon as the user closes\nhis or her browser. Use this if you want people to have to log in every time\nthey open a browser.\n\nThis setting is a global default and can be overwritten at a per-session level\nby explicitly calling the :meth:`~backends.base.SessionBase.set_expiry` method\nof ``request.session`` as described above in `using sessions in views`_.\n\n.. note::\n\n    Some browsers (Chrome, for example) provide settings that allow users to\n    continue browsing sessions after closing and re-opening the browser. In\n    some cases, this can interfere with the\n    :setting:`SESSION_EXPIRE_AT_BROWSER_CLOSE` setting and prevent sessions\n    from expiring on browser close. Please be aware of this while testing\n    Django applications which have the\n    :setting:`SESSION_EXPIRE_AT_BROWSER_CLOSE` setting enabled.\n\nClearing the session store\n==========================\n\nAs users create new sessions on your website, session data can accumulate in\nyour session store. If you're using the database backend, the\n``django_session`` database table will grow. If you're using the file backend,\nyour temporary directory will contain an increasing number of files.\n\nTo understand this problem, consider what happens with the database backend.\nWhen a user logs in, Django adds a row to the ``django_session`` database\ntable. Django updates this row each time the session data changes. If the user\nlogs out manually, Django deletes the row. But if the user does *not* log out,\nthe row never gets deleted. A similar process happens with the file backend.\n\nDjango does *not* provide automatic purging of expired sessions. Therefore,\nit's your job to purge expired sessions on a regular basis. Django provides a\nclean-up management command for this purpose: :djadmin:`clearsessions`. It's\nrecommended to call this command on a regular basis, for example as a daily\ncron job.\n\nNote that the cache backend isn't vulnerable to this problem, because caches\nautomatically delete stale data. Neither is the cookie backend, because the\nsession data is stored by the users' browsers.\n\nSettings\n========\n\nA few :doc:`Django settings </ref/settings>` give you control over session\nbehavior:\n\nSESSION_ENGINE\n--------------\n\nDefault: ``django.contrib.sessions.backends.db``\n\nControls where Django stores session data. Valid values are:\n\n* ``'django.contrib.sessions.backends.db'``\n* ``'django.contrib.sessions.backends.file'``\n* ``'django.contrib.sessions.backends.cache'``\n* ``'django.contrib.sessions.backends.cached_db'``\n* ``'django.contrib.sessions.backends.signed_cookies'``\n\nSee `configuring the session engine`_ for more details.\n\nSESSION_FILE_PATH\n-----------------\n\nDefault: ``/tmp/``\n\nIf you're using file-based session storage, this sets the directory in\nwhich Django will store session data.\n\nSESSION_COOKIE_AGE\n------------------\n\nDefault: ``1209600`` (2 weeks, in seconds)\n\nThe age of session cookies, in seconds.\n\nSESSION_COOKIE_DOMAIN\n---------------------\n\nDefault: ``None``\n\nThe domain to use for session cookies. Set this to a string such as\n``\".example.com\"`` (note the leading dot!) for cross-domain cookies, or use\n``None`` for a standard domain cookie.\n\nSESSION_COOKIE_HTTPONLY\n-----------------------\n\nDefault: ``True``\n\nWhether to use HTTPOnly flag on the session cookie. If this is set to\n``True``, client-side JavaScript will not to be able to access the\nsession cookie.\n\nHTTPOnly_ is a flag included in a Set-Cookie HTTP response header. It\nis not part of the :rfc:`2109` standard for cookies, and it isn't honored\nconsistently by all browsers. However, when it is honored, it can be a\nuseful way to mitigate the risk of client side script accessing the\nprotected cookie data.\n\n.. versionchanged:: 1.4\n    The default value of the setting was changed from ``False`` to ``True``.\n\n.. _HTTPOnly: https://www.owasp.org/index.php/HTTPOnly\n\nSESSION_COOKIE_NAME\n-------------------\n\nDefault: ``'sessionid'``\n\nThe name of the cookie to use for sessions. This can be whatever you want.\n\nSESSION_COOKIE_PATH\n-------------------\n\nDefault: ``'/'``\n\nThe path set on the session cookie. This should either match the URL path of\nyour Django installation or be parent of that path.\n\nThis is useful if you have multiple Django instances running under the same\nhostname. They can use different cookie paths, and each instance will only see\nits own session cookie.\n\nSESSION_COOKIE_SECURE\n---------------------\n\nDefault: ``False``\n\nWhether to use a secure cookie for the session cookie. If this is set to\n``True``, the cookie will be marked as \"secure,\" which means browsers may\nensure that the cookie is only sent under an HTTPS connection.\n\nSESSION_EXPIRE_AT_BROWSER_CLOSE\n-------------------------------\n\nDefault: ``False``\n\nWhether to expire the session when the user closes his or her browser. See\n\"Browser-length sessions vs. persistent sessions\" above.\n\nSESSION_SAVE_EVERY_REQUEST\n--------------------------\n\nDefault: ``False``\n\nWhether to save the session data on every request. If this is ``False``\n(default), then the session data will only be saved if it has been modified --\nthat is, if any of its dictionary values have been assigned or deleted.\n\n.. _Django settings: ../settings/\n\nTechnical details\n=================\n\n* The session dictionary should accept any pickleable Python object. See\n  the :mod:`pickle` module for more information.\n\n* Session data is stored in a database table named ``django_session`` .\n\n* Django only sends a cookie if it needs to. If you don't set any session\n  data, it won't send a session cookie.\n\nSession IDs in URLs\n===================\n\nThe Django sessions framework is entirely, and solely, cookie-based. It does\nnot fall back to putting session IDs in URLs as a last resort, as PHP does.\nThis is an intentional design decision. Not only does that behavior make URLs\nugly, it makes your site vulnerable to session-ID theft via the \"Referer\"\nheader.\n"
  },
  {
    "path": "Django-1.5.1/docs/topics/http/shortcuts.txt",
    "content": "=========================\nDjango shortcut functions\n=========================\n\n.. module:: django.shortcuts\n   :synopsis:\n       Convenience shortcuts that span multiple levels of Django's MVC stack.\n\n.. index:: shortcuts\n\nThe package ``django.shortcuts`` collects helper functions and classes that\n\"span\" multiple levels of MVC. In other words, these functions/classes\nintroduce controlled coupling for convenience's sake.\n\n``render``\n==========\n\n.. function:: render(request, template_name[, dictionary][, context_instance][, content_type][, status][, current_app])\n\n   Combines a given template with a given context dictionary and returns an\n   :class:`~django.http.HttpResponse` object with that rendered text.\n\n   :func:`render()` is the same as a call to\n   :func:`render_to_response()` with a `context_instance` argument that\n   forces the use of a :class:`~django.template.RequestContext`.\n\nRequired arguments\n------------------\n\n``request``\n    The request object used to generate this response.\n\n``template_name``\n    The full name of a template to use or sequence of template names.\n\nOptional arguments\n------------------\n\n``dictionary``\n    A dictionary of values to add to the template context. By default, this\n    is an empty dictionary. If a value in the dictionary is callable, the\n    view will call it just before rendering the template.\n\n``context_instance``\n    The context instance to render the template with. By default, the template\n    will be rendered with a ``RequestContext`` instance (filled with values from\n    ``request`` and ``dictionary``).\n\n``content_type``\n    The MIME type to use for the resulting document. Defaults to the value of\n    the :setting:`DEFAULT_CONTENT_TYPE` setting.\n\n    .. versionchanged:: 1.5\n        This parameter used to be called ``mimetype``.\n\n``status``\n    The status code for the response. Defaults to ``200``.\n\n``current_app``\n    A hint indicating which application contains the current view. See the\n    :ref:`namespaced URL resolution strategy <topics-http-reversing-url-namespaces>`\n    for more information.\n\nExample\n-------\n\nThe following example renders the template ``myapp/index.html`` with the\nMIME type :mimetype:`application/xhtml+xml`::\n\n    from django.shortcuts import render\n\n    def my_view(request):\n        # View code here...\n        return render(request, 'myapp/index.html', {\"foo\": \"bar\"},\n            content_type=\"application/xhtml+xml\")\n\nThis example is equivalent to::\n\n    from django.http import HttpResponse\n    from django.template import RequestContext, loader\n\n    def my_view(request):\n        # View code here...\n        t = loader.get_template('myapp/template.html')\n        c = RequestContext(request, {'foo': 'bar'})\n        return HttpResponse(t.render(c),\n            content_type=\"application/xhtml+xml\")\n\n\n``render_to_response``\n======================\n\n.. function:: render_to_response(template_name[, dictionary][, context_instance][, content_type])\n\n   Renders a given template with a given context dictionary and returns an\n   :class:`~django.http.HttpResponse` object with that rendered text.\n\nRequired arguments\n------------------\n\n``template_name``\n    The full name of a template to use or sequence of template names. If a\n    sequence is given, the first template that exists will be used. See the\n    :ref:`template loader documentation <ref-templates-api-the-python-api>`\n    for more information on how templates are found.\n\nOptional arguments\n------------------\n\n``dictionary``\n    A dictionary of values to add to the template context. By default, this\n    is an empty dictionary. If a value in the dictionary is callable, the\n    view will call it just before rendering the template.\n\n``context_instance``\n    The context instance to render the template with. By default, the template\n    will be rendered with a :class:`~django.template.Context` instance (filled\n    with values from ``dictionary``). If you need to use :ref:`context\n    processors <subclassing-context-requestcontext>`, render the template with\n    a :class:`~django.template.RequestContext` instance instead. Your code\n    might look something like this::\n\n        return render_to_response('my_template.html',\n                                  my_data_dictionary,\n                                  context_instance=RequestContext(request))\n\n``content_type``\n    The MIME type to use for the resulting document. Defaults to the value of\n    the :setting:`DEFAULT_CONTENT_TYPE` setting.\n\n    .. versionchanged:: 1.5\n        This parameter used to be called ``mimetype``.\n\n\nExample\n-------\n\nThe following example renders the template ``myapp/index.html`` with the\nMIME type :mimetype:`application/xhtml+xml`::\n\n    from django.shortcuts import render_to_response\n\n    def my_view(request):\n        # View code here...\n        return render_to_response('myapp/index.html', {\"foo\": \"bar\"},\n            mimetype=\"application/xhtml+xml\")\n\nThis example is equivalent to::\n\n    from django.http import HttpResponse\n    from django.template import Context, loader\n\n    def my_view(request):\n        # View code here...\n        t = loader.get_template('myapp/template.html')\n        c = Context({'foo': 'bar'})\n        return HttpResponse(t.render(c),\n            content_type=\"application/xhtml+xml\")\n\n``redirect``\n============\n\n.. function:: redirect(to[, permanent=False], *args, **kwargs)\n\n   Returns an :class:`~django.http.HttpResponseRedirect` to the appropriate URL\n   for the arguments passed.\n\n   The arguments could be:\n\n   * A model: the model's `get_absolute_url()` function will be called.\n\n   * A view name, possibly with arguments: :func:`urlresolvers.reverse\n     <django.core.urlresolvers.reverse>` will be used to reverse-resolve the\n     name.\n\n   * A URL, which will be used as-is for the redirect location.\n\n   By default issues a temporary redirect; pass ``permanent=True`` to issue a\n   permanent redirect\n\nExamples\n--------\n\nYou can use the :func:`redirect` function in a number of ways.\n\n1. By passing some object; that object's\n   :meth:`~django.db.models.Model.get_absolute_url` method will be called\n   to figure out the redirect URL::\n\n        from django.shortcuts import redirect\n\n        def my_view(request):\n            ...\n            object = MyModel.objects.get(...)\n            return redirect(object)\n\n2. By passing the name of a view and optionally some positional or\n   keyword arguments; the URL will be reverse resolved using the\n   :func:`~django.core.urlresolvers.reverse` method::\n\n        def my_view(request):\n            ...\n            return redirect('some-view-name', foo='bar')\n\n3. By passing a hardcoded URL to redirect to::\n\n        def my_view(request):\n            ...\n            return redirect('/some/url/')\n\n   This also works with full URLs::\n\n        def my_view(request):\n            ...\n            return redirect('http://example.com/')\n\nBy default, :func:`redirect` returns a temporary redirect. All of the above\nforms accept a ``permanent`` argument; if set to ``True`` a permanent redirect\nwill be returned::\n\n    def my_view(request):\n        ...\n        object = MyModel.objects.get(...)\n        return redirect(object, permanent=True)\n\n``get_object_or_404``\n=====================\n\n.. function:: get_object_or_404(klass, *args, **kwargs)\n\n   Calls :meth:`~django.db.models.query.QuerySet.get()` on a given model manager,\n   but it raises :class:`~django.http.Http404` instead of the model's\n   :class:`~django.core.exceptions.DoesNotExist` exception.\n\nRequired arguments\n------------------\n\n``klass``\n    A :class:`~django.db.models.Model`, :class:`~django.db.models.Manager` or\n    :class:`~django.db.models.query.QuerySet` instance from which to get the\n    object.\n\n``**kwargs``\n    Lookup parameters, which should be in the format accepted by ``get()`` and\n    ``filter()``.\n\nExample\n-------\n\nThe following example gets the object with the primary key of 1 from\n``MyModel``::\n\n    from django.shortcuts import get_object_or_404\n\n    def my_view(request):\n        my_object = get_object_or_404(MyModel, pk=1)\n\nThis example is equivalent to::\n\n    from django.http import Http404\n\n    def my_view(request):\n        try:\n            my_object = MyModel.objects.get(pk=1)\n        except MyModel.DoesNotExist:\n            raise Http404\n\nNote: As with ``get()``, a\n:class:`~django.core.exceptions.MultipleObjectsReturned` exception\nwill be raised if more than one object is found.\n\n``get_list_or_404``\n===================\n\n.. function:: get_list_or_404(klass, *args, **kwargs)\n\n   Returns the result of :meth:`~django.db.models.query.QuerySet.filter()` on a\n   given model manager, raising :class:`~django.http.Http404` if the resulting\n   list is empty.\n\nRequired arguments\n------------------\n\n``klass``\n    A :class:`~django.db.models.Model`, :class:`~django.db.models.Manager` or\n    :class:`~django.db.models.query.QuerySet` instance from which to get the\n    list.\n\n``**kwargs``\n    Lookup parameters, which should be in the format accepted by ``get()`` and\n    ``filter()``.\n\nExample\n-------\n\nThe following example gets all published objects from ``MyModel``::\n\n    from django.shortcuts import get_list_or_404\n\n    def my_view(request):\n        my_objects = get_list_or_404(MyModel, published=True)\n\nThis example is equivalent to::\n\n    from django.http import Http404\n\n    def my_view(request):\n        my_objects = list(MyModel.objects.filter(published=True))\n        if not my_objects:\n            raise Http404\n"
  },
  {
    "path": "Django-1.5.1/docs/topics/http/urls.txt",
    "content": "==============\nURL dispatcher\n==============\n\nA clean, elegant URL scheme is an important detail in a high-quality Web\napplication. Django lets you design URLs however you want, with no framework\nlimitations.\n\nThere's no ``.php`` or ``.cgi`` required, and certainly none of that\n``0,2097,1-1-1928,00`` nonsense.\n\nSee `Cool URIs don't change`_, by World Wide Web creator Tim Berners-Lee, for\nexcellent arguments on why URLs should be clean and usable.\n\n.. _Cool URIs don't change: http://www.w3.org/Provider/Style/URI\n\nOverview\n========\n\nTo design URLs for an app, you create a Python module informally called a\n**URLconf** (URL configuration). This module is pure Python code and is a\nsimple mapping between URL patterns (simple regular expressions) to Python\nfunctions (your views).\n\nThis mapping can be as short or as long as needed. It can reference other\nmappings. And, because it's pure Python code, it can be constructed\ndynamically.\n\n.. versionadded:: 1.4\n    Django also provides a way to translate URLs according to the active\n    language. See the :ref:`internationalization documentation\n    <url-internationalization>` for more information.\n\n.. _how-django-processes-a-request:\n\nHow Django processes a request\n==============================\n\nWhen a user requests a page from your Django-powered site, this is the\nalgorithm the system follows to determine which Python code to execute:\n\n1. Django determines the root URLconf module to use. Ordinarily,\n   this is the value of the :setting:`ROOT_URLCONF` setting, but if the incoming\n   ``HttpRequest`` object has an attribute called ``urlconf`` (set by\n   middleware :ref:`request processing <request-middleware>`), its value\n   will be used in place of the :setting:`ROOT_URLCONF` setting.\n\n2. Django loads that Python module and looks for the variable\n   ``urlpatterns``. This should be a Python list, in the format returned by\n   the function :func:`django.conf.urls.patterns`.\n\n3. Django runs through each URL pattern, in order, and stops at the first\n   one that matches the requested URL.\n\n4. Once one of the regexes matches, Django imports and calls the given\n   view, which is a simple Python function (or a :doc:`class based view\n   </topics/class-based-views/index>`). The view gets passed an\n   :class:`~django.http.HttpRequest` as its first argument and any values\n   captured in the regex as remaining arguments.\n\n5. If no regex matches, or if an exception is raised during any\n   point in this process, Django invokes an appropriate\n   error-handling view. See `Error handling`_ below.\n\nExample\n=======\n\nHere's a sample URLconf::\n\n    from django.conf.urls import patterns\n\n    urlpatterns = patterns('',\n        (r'^articles/2003/$', 'news.views.special_case_2003'),\n        (r'^articles/(\\d{4})/$', 'news.views.year_archive'),\n        (r'^articles/(\\d{4})/(\\d{2})/$', 'news.views.month_archive'),\n        (r'^articles/(\\d{4})/(\\d{2})/(\\d+)/$', 'news.views.article_detail'),\n    )\n\nNotes:\n\n* To capture a value from the URL, just put parenthesis around it.\n\n* There's no need to add a leading slash, because every URL has that. For\n  example, it's ``^articles``, not ``^/articles``.\n\n* The ``'r'`` in front of each regular expression string is optional but\n  recommended. It tells Python that a string is \"raw\" -- that nothing in\n  the string should be escaped. See `Dive Into Python's explanation`_.\n\nExample requests:\n\n* A request to ``/articles/2005/03/`` would match the third entry in the\n  list. Django would call the function\n  ``news.views.month_archive(request, '2005', '03')``.\n\n* ``/articles/2005/3/`` would not match any URL patterns, because the\n  third entry in the list requires two digits for the month.\n\n* ``/articles/2003/`` would match the first pattern in the list, not the\n  second one, because the patterns are tested in order, and the first one\n  is the first test to pass. Feel free to exploit the ordering to insert\n  special cases like this.\n\n* ``/articles/2003`` would not match any of these patterns, because each\n  pattern requires that the URL end with a slash.\n\n* ``/articles/2003/03/03/`` would match the final pattern. Django would call\n  the function ``news.views.article_detail(request, '2003', '03', '03')``.\n\n.. _Dive Into Python's explanation: http://diveintopython.net/regular_expressions/street_addresses.html#re.matching.2.3\n\nNamed groups\n============\n\nThe above example used simple, *non-named* regular-expression groups (via\nparenthesis) to capture bits of the URL and pass them as *positional* arguments\nto a view. In more advanced usage, it's possible to use *named*\nregular-expression groups to capture URL bits and pass them as *keyword*\narguments to a view.\n\nIn Python regular expressions, the syntax for named regular-expression groups\nis ``(?P<name>pattern)``, where ``name`` is the name of the group and\n``pattern`` is some pattern to match.\n\nHere's the above example URLconf, rewritten to use named groups::\n\n    urlpatterns = patterns('',\n        (r'^articles/2003/$', 'news.views.special_case_2003'),\n        (r'^articles/(?P<year>\\d{4})/$', 'news.views.year_archive'),\n        (r'^articles/(?P<year>\\d{4})/(?P<month>\\d{2})/$', 'news.views.month_archive'),\n        (r'^articles/(?P<year>\\d{4})/(?P<month>\\d{2})/(?P<day>\\d{2})/$', 'news.views.article_detail'),\n    )\n\nThis accomplishes exactly the same thing as the previous example, with one\nsubtle difference: The captured values are passed to view functions as keyword\narguments rather than positional arguments. For example:\n\n* A request to ``/articles/2005/03/`` would call the function\n  ``news.views.month_archive(request, year='2005', month='03')``, instead\n  of ``news.views.month_archive(request, '2005', '03')``.\n\n* A request to ``/articles/2003/03/03/`` would call the function\n  ``news.views.article_detail(request, year='2003', month='03', day='03')``.\n\nIn practice, this means your URLconfs are slightly more explicit and less prone\nto argument-order bugs -- and you can reorder the arguments in your views'\nfunction definitions. Of course, these benefits come at the cost of brevity;\nsome developers find the named-group syntax ugly and too verbose.\n\nThe matching/grouping algorithm\n-------------------------------\n\nHere's the algorithm the URLconf parser follows, with respect to named groups\nvs. non-named groups in a regular expression:\n\n1. If there are any named arguments, it will use those, ignoring non-named\n   arguments.\n\n2. Otherwise, it will pass all non-named arguments as positional arguments.\n\nIn both cases, any extra keyword arguments that have been given as per `Passing\nextra options to view functions`_ (below) will also be passed to the view.\n\nWhat the URLconf searches against\n=================================\n\nThe URLconf searches against the requested URL, as a normal Python string. This\ndoes not include GET or POST parameters, or the domain name.\n\nFor example, in a request to ``http://www.example.com/myapp/``, the URLconf\nwill look for ``myapp/``.\n\nIn a request to ``http://www.example.com/myapp/?page=3``, the URLconf will look\nfor ``myapp/``.\n\nThe URLconf doesn't look at the request method. In other words, all request\nmethods -- ``POST``, ``GET``, ``HEAD``, etc. -- will be routed to the same\nfunction for the same URL.\n\nNotes on capturing text in URLs\n===============================\n\nEach captured argument is sent to the view as a plain Python string, regardless\nof what sort of match the regular expression makes. For example, in this\nURLconf line::\n\n    (r'^articles/(?P<year>\\d{4})/$', 'news.views.year_archive'),\n\n...the ``year`` argument to ``news.views.year_archive()`` will be a string, not\nan integer, even though the ``\\d{4}`` will only match integer strings.\n\nA convenient trick is to specify default parameters for your views' arguments.\nHere's an example URLconf and view::\n\n    # URLconf\n    urlpatterns = patterns('',\n        (r'^blog/$', 'blog.views.page'),\n        (r'^blog/page(?P<num>\\d+)/$', 'blog.views.page'),\n    )\n\n    # View (in blog/views.py)\n    def page(request, num=\"1\"):\n        # Output the appropriate page of blog entries, according to num.\n\nIn the above example, both URL patterns point to the same view --\n``blog.views.page`` -- but the first pattern doesn't capture anything from the\nURL. If the first pattern matches, the ``page()`` function will use its\ndefault argument for ``num``, ``\"1\"``. If the second pattern matches,\n``page()`` will use whatever ``num`` value was captured by the regex.\n\nPerformance\n===========\n\nEach regular expression in a ``urlpatterns`` is compiled the first time it's\naccessed. This makes the system blazingly fast.\n\nSyntax of the urlpatterns variable\n==================================\n\n``urlpatterns`` should be a Python list, in the format returned by the function\n:func:`django.conf.urls.patterns`. Always use ``patterns()`` to create\nthe ``urlpatterns`` variable.\n\nError handling\n==============\n\nWhen Django can't find a regex matching the requested URL, or when an\nexception is raised, Django will invoke an error-handling view.\n\nThe views to use for these cases are specified by three variables. Their\ndefault values should suffice for most projects, but further customization is\npossible by assigning values to them.\n\nSee the documentation on :ref:`customizing error views\n<customizing-error-views>` for the full details.\n\nSuch values can be set in your root URLconf. Setting these variables in any\nother URLconf will have no effect.\n\nValues must be callables, or strings representing the full Python import path\nto the view that should be called to handle the error condition at hand.\n\nThe variables are:\n\n* ``handler404`` -- See :data:`django.conf.urls.handler404`.\n* ``handler500`` -- See :data:`django.conf.urls.handler500`.\n* ``handler403`` -- See :data:`django.conf.urls.handler403`.\n\n.. versionadded:: 1.4\n    ``handler403`` is new in Django 1.4.\n\n.. _urlpatterns-view-prefix:\n\nThe view prefix\n===============\n\nYou can specify a common prefix in your ``patterns()`` call, to cut down on\ncode duplication.\n\nHere's the example URLconf from the :doc:`Django overview </intro/overview>`::\n\n    from django.conf.urls import patterns\n\n    urlpatterns = patterns('',\n        (r'^articles/(\\d{4})/$', 'news.views.year_archive'),\n        (r'^articles/(\\d{4})/(\\d{2})/$', 'news.views.month_archive'),\n        (r'^articles/(\\d{4})/(\\d{2})/(\\d+)/$', 'news.views.article_detail'),\n    )\n\nIn this example, each view has a common prefix -- ``'news.views'``.\nInstead of typing that out for each entry in ``urlpatterns``, you can use the\nfirst argument to the ``patterns()`` function to specify a prefix to apply to\neach view function.\n\nWith this in mind, the above example can be written more concisely as::\n\n    from django.conf.urls import patterns\n\n    urlpatterns = patterns('news.views',\n        (r'^articles/(\\d{4})/$', 'year_archive'),\n        (r'^articles/(\\d{4})/(\\d{2})/$', 'month_archive'),\n        (r'^articles/(\\d{4})/(\\d{2})/(\\d+)/$', 'article_detail'),\n    )\n\nNote that you don't put a trailing dot (``\".\"``) in the prefix. Django puts\nthat in automatically.\n\nMultiple view prefixes\n----------------------\n\nIn practice, you'll probably end up mixing and matching views to the point\nwhere the views in your ``urlpatterns`` won't have a common prefix. However,\nyou can still take advantage of the view prefix shortcut to remove duplication.\nJust add multiple ``patterns()`` objects together, like this:\n\nOld::\n\n    from django.conf.urls import patterns\n\n    urlpatterns = patterns('',\n        (r'^$', 'myapp.views.app_index'),\n        (r'^(?P<year>\\d{4})/(?P<month>[a-z]{3})/$', 'myapp.views.month_display'),\n        (r'^tag/(?P<tag>\\w+)/$', 'weblog.views.tag'),\n    )\n\nNew::\n\n    from django.conf.urls import patterns\n\n    urlpatterns = patterns('myapp.views',\n        (r'^$', 'app_index'),\n        (r'^(?P<year>\\d{4})/(?P<month>[a-z]{3})/$','month_display'),\n    )\n\n    urlpatterns += patterns('weblog.views',\n        (r'^tag/(?P<tag>\\w+)/$', 'tag'),\n    )\n\n.. _including-other-urlconfs:\n\nIncluding other URLconfs\n========================\n\nAt any point, your ``urlpatterns`` can \"include\" other URLconf modules. This\nessentially \"roots\" a set of URLs below other ones.\n\nFor example, here's an excerpt of the URLconf for the `Django Web site`_\nitself. It includes a number of other URLconfs::\n\n    from django.conf.urls import patterns, include\n\n    urlpatterns = patterns('',\n        # ... snip ...\n        (r'^comments/', include('django.contrib.comments.urls')),\n        (r'^community/', include('django_website.aggregator.urls')),\n        (r'^contact/', include('django_website.contact.urls')),\n        (r'^r/', include('django.conf.urls.shortcut')),\n        # ... snip ...\n    )\n\nNote that the regular expressions in this example don't have a ``$``\n(end-of-string match character) but do include a trailing slash. Whenever\nDjango encounters ``include()`` (:func:`django.conf.urls.include()`), it chops\noff whatever part of the URL matched up to that point and sends the remaining\nstring to the included URLconf for further processing.\n\nAnother possibility is to include additional URL patterns not by specifying the\nURLconf Python module defining them as the ``include()`` argument but by using\ndirectly the pattern list as returned by :func:`~django.conf.urls.patterns`\ninstead. For example, consider this URLconf::\n\n    from django.conf.urls import patterns, url, include\n\n    extra_patterns = patterns('',\n        url(r'^reports/(?P<id>\\d+)/$', 'credit.views.report'),\n        url(r'^charge/$', 'credit.views.charge'),\n    )\n\n    urlpatterns = patterns('',\n        url(r'^$', 'apps.main.views.homepage'),\n        (r'^help/', include('apps.help.urls')),\n        (r'^credit/', include(extra_patterns)),\n    )\n\nIn this example, the ``/credit/reports/`` URL will be handled by the\n``credit.views.report()`` Django view.\n\n.. _`Django Web site`: https://www.djangoproject.com/\n\nCaptured parameters\n-------------------\n\nAn included URLconf receives any captured parameters from parent URLconfs, so\nthe following example is valid::\n\n    # In settings/urls/main.py\n    urlpatterns = patterns('',\n        (r'^(?P<username>\\w+)/blog/', include('foo.urls.blog')),\n    )\n\n    # In foo/urls/blog.py\n    urlpatterns = patterns('foo.views',\n        (r'^$', 'blog.index'),\n        (r'^archive/$', 'blog.archive'),\n    )\n\nIn the above example, the captured ``\"username\"`` variable is passed to the\nincluded URLconf, as expected.\n\n.. _views-extra-options:\n\nPassing extra options to view functions\n=======================================\n\nURLconfs have a hook that lets you pass extra arguments to your view functions,\nas a Python dictionary.\n\nAny URLconf tuple can have an optional third element, which should be a\ndictionary of extra keyword arguments to pass to the view function.\n\nFor example::\n\n    urlpatterns = patterns('blog.views',\n        (r'^blog/(?P<year>\\d{4})/$', 'year_archive', {'foo': 'bar'}),\n    )\n\nIn this example, for a request to ``/blog/2005/``, Django will call\n``blog.views.year_archive(year='2005', foo='bar')``.\n\nThis technique is used in the\n:doc:`syndication framework </ref/contrib/syndication>` to pass metadata and\noptions to views.\n\n.. admonition:: Dealing with conflicts\n\n    It's possible to have a URL pattern which captures named keyword arguments,\n    and also passes arguments with the same names in its dictionary of extra\n    arguments. When this happens, the arguments in the dictionary will be used\n    instead of the arguments captured in the URL.\n\nPassing extra options to ``include()``\n--------------------------------------\n\nSimilarly, you can pass extra options to :func:`~django.conf.urls.include`.\nWhen you pass extra options to ``include()``, *each* line in the included\nURLconf will be passed the extra options.\n\nFor example, these two URLconf sets are functionally identical:\n\nSet one::\n\n    # main.py\n    urlpatterns = patterns('',\n        (r'^blog/', include('inner'), {'blogid': 3}),\n    )\n\n    # inner.py\n    urlpatterns = patterns('',\n        (r'^archive/$', 'mysite.views.archive'),\n        (r'^about/$', 'mysite.views.about'),\n    )\n\nSet two::\n\n    # main.py\n    urlpatterns = patterns('',\n        (r'^blog/', include('inner')),\n    )\n\n    # inner.py\n    urlpatterns = patterns('',\n        (r'^archive/$', 'mysite.views.archive', {'blogid': 3}),\n        (r'^about/$', 'mysite.views.about', {'blogid': 3}),\n    )\n\nNote that extra options will *always* be passed to *every* line in the included\nURLconf, regardless of whether the line's view actually accepts those options\nas valid. For this reason, this technique is only useful if you're certain that\nevery view in the included URLconf accepts the extra options you're passing.\n\nPassing callable objects instead of strings\n===========================================\n\nSome developers find it more natural to pass the actual Python function object\nrather than a string containing the path to its module. This alternative is\nsupported -- you can pass any callable object as the view.\n\nFor example, given this URLconf in \"string\" notation::\n\n    urlpatterns = patterns('',\n        (r'^archive/$', 'mysite.views.archive'),\n        (r'^about/$', 'mysite.views.about'),\n        (r'^contact/$', 'mysite.views.contact'),\n    )\n\nYou can accomplish the same thing by passing objects rather than strings. Just\nbe sure to import the objects::\n\n    from mysite.views import archive, about, contact\n\n    urlpatterns = patterns('',\n        (r'^archive/$', archive),\n        (r'^about/$', about),\n        (r'^contact/$', contact),\n    )\n\nThe following example is functionally identical. It's just a bit more compact\nbecause it imports the module that contains the views, rather than importing\neach view individually::\n\n    from mysite import views\n\n    urlpatterns = patterns('',\n        (r'^archive/$', views.archive),\n        (r'^about/$', views.about),\n        (r'^contact/$', views.contact),\n    )\n\nThe style you use is up to you.\n\nNote that if you use this technique -- passing objects rather than strings --\nthe view prefix (as explained in \"The view prefix\" above) will have no effect.\n\nNote that :doc:`class based views</topics/class-based-views/index>` must be\nimported::\n\n    from mysite.views import ClassBasedView\n\n    urlpatterns = patterns('',\n        (r'^myview/$', ClassBasedView.as_view()),\n    )\n\nReverse resolution of URLs\n==========================\n\nA common need when working on a Django project is the possibility to obtain URLs\nin their final forms either for embedding in generated content (views and assets\nURLs, URLs shown to the user, etc.) or for handling of the navigation flow on\nthe server side (redirections, etc.)\n\nIt is strongly desirable not having to hard-code these URLs (a laborious,\nnon-scalable and error-prone strategy) or having to devise ad-hoc mechanisms for\ngenerating URLs that are parallel to the design described by the URLconf and as\nsuch in danger of producing stale URLs at some point.\n\nIn other words, what's needed is a DRY mechanism. Among other advantages it\nwould allow evolution of the URL design without having to go all over the\nproject source code to search and replace outdated URLs.\n\nThe piece of information we have available as a starting point to get a URL is\nan identification (e.g. the name) of the view in charge of handling it, other\npieces of information that necessarily must participate in the lookup of the\nright URL are the types (positional, keyword) and values of the view arguments.\n\nDjango provides a solution such that the URL mapper is the only repository of\nthe URL design. You feed it with your URLconf and then it can be used in both\ndirections:\n\n* Starting with a URL requested by the user/browser, it calls the right Django\n  view providing any arguments it might need with their values as extracted from\n  the URL.\n\n* Starting with the identification of the corresponding Django view plus the\n  values of arguments that would be passed to it, obtain the associated URL.\n\nThe first one is the usage we've been discussing in the previous sections. The\nsecond one is what is known as *reverse resolution of URLs*, *reverse URL\nmatching*, *reverse URL lookup*, or simply *URL reversing*.\n\nDjango provides tools for performing URL reversing that match the different\nlayers where URLs are needed:\n\n* In templates: Using the :ttag:`url` template tag.\n\n* In Python code: Using the :func:`django.core.urlresolvers.reverse`\n  function.\n\n* In higher level code related to handling of URLs of Django model instances:\n  The :meth:`~django.db.models.Model.get_absolute_url` method.\n\nExamples\n--------\n\nConsider again this URLconf entry::\n\n    from django.conf.urls import patterns, url\n\n    urlpatterns = patterns('',\n        #...\n        url(r'^articles/(\\d{4})/$', 'news.views.year_archive'),\n        #...\n    )\n\nAccording to this design, the URL for the archive corresponding to year *nnnn*\nis ``/articles/nnnn/``.\n\nYou can obtain these in template code by using:\n\n.. code-block:: html+django\n\n    <a href=\"{% url 'news.views.year_archive' 2012 %}\">2012 Archive</a>\n    {# Or with the year in a template context variable: #}\n    <ul>\n    {% for yearvar in year_list %}\n    <li><a href=\"{% url 'news.views.year_archive' yearvar %}\">{{ yearvar }} Archive</a></li>\n    {% endfor %}\n    </ul>\n\nOr in Python code::\n\n    from django.core.urlresolvers import reverse\n    from django.http import HttpResponseRedirect\n\n    def redirect_to_year(request):\n        # ...\n        year = 2006\n        # ...\n        return HttpResponseRedirect(reverse('news.views.year_archive', args=(year,)))\n\nIf, for some reason, it was decided that the URLs where content for yearly\narticle archives are published at should be changed then you would only need to\nchange the entry in the URLconf.\n\nIn some scenarios where views are of a generic nature, a many-to-one\nrelationship might exist between URLs and views. For these cases the view name\nisn't a good enough identificator for it when it comes the time of reversing\nURLs. Read the next section to know about the solution Django provides for this.\n\n.. _naming-url-patterns:\n\nNaming URL patterns\n===================\n\nIt's fairly common to use the same view function in multiple URL patterns in\nyour URLconf. For example, these two URL patterns both point to the ``archive``\nview::\n\n    urlpatterns = patterns('',\n        (r'^archive/(\\d{4})/$', archive),\n        (r'^archive-summary/(\\d{4})/$', archive, {'summary': True}),\n    )\n\nThis is completely valid, but it leads to problems when you try to do reverse\nURL matching (through the :func:`~django.core.urlresolvers.reverse` function\nor the :ttag:`url` template tag). Continuing this example, if you wanted to\nretrieve the URL for the ``archive`` view, Django's reverse URL matcher would\nget confused, because *two* URL patterns point at that view.\n\nTo solve this problem, Django supports **named URL patterns**. That is, you can\ngive a name to a URL pattern in order to distinguish it from other patterns\nusing the same view and parameters. Then, you can use this name in reverse URL\nmatching.\n\nHere's the above example, rewritten to use named URL patterns::\n\n    urlpatterns = patterns('',\n        url(r'^archive/(\\d{4})/$', archive, name=\"full-archive\"),\n        url(r'^archive-summary/(\\d{4})/$', archive, {'summary': True}, \"arch-summary\"),\n    )\n\nWith these names in place (``full-archive`` and ``arch-summary``), you can\ntarget each pattern individually by using its name:\n\n.. code-block:: html+django\n\n    {% url 'arch-summary' 1945 %}\n    {% url 'full-archive' 2007 %}\n\nEven though both URL patterns refer to the ``archive`` view here, using the\n``name`` parameter to ``url()`` allows you to tell them apart in templates.\n\nThe string used for the URL name can contain any characters you like. You are\nnot restricted to valid Python names.\n\n.. note::\n\n    When you name your URL patterns, make sure you use names that are unlikely\n    to clash with any other application's choice of names. If you call your URL\n    pattern ``comment``, and another application does the same thing, there's\n    no guarantee which URL will be inserted into your template when you use\n    this name.\n\n    Putting a prefix on your URL names, perhaps derived from the application\n    name, will decrease the chances of collision. We recommend something like\n    ``myapp-comment`` instead of ``comment``.\n\n.. _topics-http-defining-url-namespaces:\n\nURL namespaces\n==============\n\nIntroduction\n------------\n\nWhen you need to deploy multiple instances of a single application, it can be\nhelpful to be able to differentiate between instances. This is especially\nimportant when using :ref:`named URL patterns <naming-url-patterns>`, since\nmultiple instances of a single application will share named URLs. Namespaces\nprovide a way to tell these named URLs apart.\n\nA URL namespace comes in two parts, both of which are strings:\n\n.. glossary::\n\n  application namespace\n    This describes the name of the application that is being deployed. Every\n    instance of a single application will have the same application namespace.\n    For example, Django's admin application has the somewhat predictable\n    application namespace of ``'admin'``.\n\n  instance namespace\n    This identifies a specific instance of an application. Instance namespaces\n    should be unique across your entire project. However, an instance namespace\n    can be the same as the application namespace. This is used to specify a\n    default instance of an application. For example, the default Django Admin\n    instance has an instance namespace of ``'admin'``.\n\nNamespaced URLs are specified using the ``':'`` operator. For example, the main\nindex page of the admin application is referenced using ``'admin:index'``. This\nindicates a namespace of ``'admin'``, and a named URL of ``'index'``.\n\nNamespaces can also be nested. The named URL ``'foo:bar:whiz'`` would look for\na pattern named ``'whiz'`` in the namespace ``'bar'`` that is itself defined\nwithin the top-level namespace ``'foo'``.\n\n.. _topics-http-reversing-url-namespaces:\n\nReversing namespaced URLs\n-------------------------\n\nWhen given a namespaced URL (e.g. ``'myapp:index'``) to resolve, Django splits\nthe fully qualified name into parts, and then tries the following lookup:\n\n1. First, Django looks for a matching :term:`application namespace` (in this\n   example, ``'myapp'``). This will yield a list of instances of that\n   application.\n\n2. If there is a *current* application defined, Django finds and returns\n   the URL resolver for that instance. The *current* application can be\n   specified as an attribute on the template context - applications that\n   expect to have multiple deployments should set the ``current_app``\n   attribute on any ``Context`` or ``RequestContext`` that is used to\n   render a template.\n\n   The current application can also be specified manually as an argument\n   to the :func:`django.core.urlresolvers.reverse` function.\n\n3. If there is no current application. Django looks for a default\n   application instance. The default application instance is the instance\n   that has an :term:`instance namespace` matching the :term:`application\n   namespace` (in this example, an instance of the ``myapp`` called\n   ``'myapp'``).\n\n4. If there is no default application instance, Django will pick the last\n   deployed instance of the application, whatever its instance name may be.\n\n5. If the provided namespace doesn't match an :term:`application namespace` in\n   step 1, Django will attempt a direct lookup of the namespace as an\n   :term:`instance namespace`.\n\nIf there are nested namespaces, these steps are repeated for each part of the\nnamespace until only the view name is unresolved. The view name will then be\nresolved into a URL in the namespace that has been found.\n\nExample\n~~~~~~~\n\nTo show this resolution strategy in action, consider an example of two instances\nof ``myapp``: one called ``'foo'``, and one called ``'bar'``. ``myapp`` has a\nmain index page with a URL named ``'index'``. Using this setup, the following\nlookups are possible:\n\n* If one of the instances is current - say, if we were rendering a utility page\n  in the instance ``'bar'`` - ``'myapp:index'`` will resolve to the index page\n  of the instance ``'bar'``.\n\n* If there is no current instance - say, if we were rendering a page\n  somewhere else on the site - ``'myapp:index'`` will resolve to the last\n  registered instance of ``myapp``. Since there is no default instance,\n  the last instance of ``myapp`` that is registered will be used. This could\n  be ``'foo'`` or ``'bar'``, depending on the order they are introduced into the\n  urlpatterns of the project.\n\n* ``'foo:index'`` will always resolve to the index page of the instance\n  ``'foo'``.\n\nIf there was also a default instance - i.e., an instance named ``'myapp'`` - the\nfollowing would happen:\n\n* If one of the instances is current - say, if we were rendering a utility page\n  in the instance ``'bar'`` - ``'myapp:index'`` will resolve to the index page\n  of the instance ``'bar'``.\n\n* If there is no current instance - say, if we were rendering a page somewhere\n  else on the site - ``'myapp:index'`` will resolve to the index page of the\n  default instance.\n\n* ``'foo:index'`` will again resolve to the index page of the instance\n  ``'foo'``.\n\n.. _namespaces-and-include:\n\nURL namespaces and included URLconfs\n------------------------------------\n\nURL namespaces of included URLconfs can be specified in two ways.\n\nFirstly, you can provide the :term:`application <application namespace>` and\n:term:`instance <instance namespace>` namespaces as arguments to\n:func:`django.conf.urls.include()` when you construct your URL patterns. For\nexample,::\n\n    (r'^help/', include('apps.help.urls', namespace='foo', app_name='bar')),\n\nThis will include the URLs defined in ``apps.help.urls`` into the\n:term:`application namespace` ``'bar'``, with the :term:`instance namespace`\n``'foo'``.\n\nSecondly, you can include an object that contains embedded namespace data. If\nyou ``include()`` an object as returned by :func:`~django.conf.urls.patterns`,\nthe URLs contained in that object will be added to the global namespace.\nHowever, you can also ``include()`` a 3-tuple containing::\n\n    (<patterns object>, <application namespace>, <instance namespace>)\n\nFor example::\n\n    help_patterns = patterns('',\n        url(r'^basic/$', 'apps.help.views.views.basic'),\n        url(r'^advanced/$', 'apps.help.views.views.advanced'),\n    )\n\n    (r'^help/', include(help_patterns, 'bar', 'foo')),\n\nThis will include the nominated URL patterns into the given application and\ninstance namespace.\n\nFor example, the Django Admin is deployed as instances of\n:class:`~django.contrib.admin.AdminSite`.  ``AdminSite`` objects have a ``urls``\nattribute: A 3-tuple that contains all the patterns in the corresponding admin\nsite, plus the application namespace ``'admin'``, and the name of the admin\ninstance. It is this ``urls`` attribute that you ``include()`` into your\nprojects ``urlpatterns`` when you deploy an Admin instance.\n"
  },
  {
    "path": "Django-1.5.1/docs/topics/http/views.txt",
    "content": "=============\nWriting views\n=============\n\nA view function, or *view* for short, is simply a Python function that takes a\nWeb request and returns a Web response. This response can be the HTML contents\nof a Web page, or a redirect, or a 404 error, or an XML document, or an image .\n. . or anything, really. The view itself contains whatever arbitrary logic is\nnecessary to return that response. This code can live anywhere you want, as long\nas it's on your Python path. There's no other requirement--no \"magic,\" so to\nspeak. For the sake of putting the code *somewhere*, the convention is to\nput views in a file called ``views.py``, placed in your project or\napplication directory.\n\nA simple view\n=============\n\nHere's a view that returns the current date and time, as an HTML document:\n\n.. code-block:: python\n\n    from django.http import HttpResponse\n    import datetime\n\n    def current_datetime(request):\n        now = datetime.datetime.now()\n        html = \"<html><body>It is now %s.</body></html>\" % now\n        return HttpResponse(html)\n\nLet's step through this code one line at a time:\n\n* First, we import the class :class:`~django.http.HttpResponse` from the\n  :mod:`django.http` module, along with Python's ``datetime`` library.\n\n* Next, we define a function called ``current_datetime``. This is the view\n  function. Each view function takes an :class:`~django.http.HttpRequest`\n  object as its first parameter, which is typically named ``request``.\n\n  Note that the name of the view function doesn't matter; it doesn't have to\n  be named in a certain way in order for Django to recognize it. We're\n  calling it ``current_datetime`` here, because that name clearly indicates\n  what it does.\n\n* The view returns an :class:`~django.http.HttpResponse` object that\n  contains the generated response. Each view function is responsible for\n  returning an :class:`~django.http.HttpResponse` object. (There are\n  exceptions, but we'll get to those later.)\n\n.. admonition:: Django's Time Zone\n\n    Django includes a :setting:`TIME_ZONE` setting that defaults to\n    ``America/Chicago``. This probably isn't where you live, so you might want\n    to change it in your settings file.\n\nMapping URLs to views\n=====================\n\nSo, to recap, this view function returns an HTML page that includes the current\ndate and time. To display this view at a particular URL, you'll need to create a\n*URLconf*; see :doc:`/topics/http/urls` for instructions.\n\nReturning errors\n================\n\nReturning HTTP error codes in Django is easy. There are subclasses of\n:class:`~django.http.HttpResponse` for a number of common HTTP status codes\nother than 200 (which means *\"OK\"*). You can find the full list of available\nsubclasses in the :ref:`request/response <ref-httpresponse-subclasses>`\ndocumentation.  Just return an instance of one of those subclasses instead of\na normal :class:`~django.http.HttpResponse` in order to signify an error. For\nexample::\n\n    def my_view(request):\n        # ...\n        if foo:\n            return HttpResponseNotFound('<h1>Page not found</h1>')\n        else:\n            return HttpResponse('<h1>Page was found</h1>')\n\nThere isn't a specialized subclass for every possible HTTP response code,\nsince many of them aren't going to be that common. However, as documented in\nthe :class:`~django.http.HttpResponse` documentation, you can also pass the\nHTTP status code into the constructor for :class:`~django.http.HttpResponse`\nto create a return class for any status code you like. For example::\n\n    def my_view(request):\n        # ...\n\n        # Return a \"created\" (201) response code.\n        return HttpResponse(status=201)\n\nBecause 404 errors are by far the most common HTTP error, there's an easier way\nto handle those errors.\n\nThe Http404 exception\n---------------------\n\n.. class:: django.http.Http404()\n\nWhen you return an error such as :class:`~django.http.HttpResponseNotFound`,\nyou're responsible for defining the HTML of the resulting error page::\n\n    return HttpResponseNotFound('<h1>Page not found</h1>')\n\nFor convenience, and because it's a good idea to have a consistent 404 error page\nacross your site, Django provides an ``Http404`` exception. If you raise\n``Http404`` at any point in a view function, Django will catch it and return the\nstandard error page for your application, along with an HTTP error code 404.\n\nExample usage::\n\n    from django.http import Http404\n\n    def detail(request, poll_id):\n        try:\n            p = Poll.objects.get(pk=poll_id)\n        except Poll.DoesNotExist:\n            raise Http404\n        return render_to_response('polls/detail.html', {'poll': p})\n\nIn order to use the ``Http404`` exception to its fullest, you should create a\ntemplate that is displayed when a 404 error is raised. This template should be\ncalled ``404.html`` and located in the top level of your template tree.\n\n.. _customizing-error-views:\n\nCustomizing error views\n=======================\n\n.. _http_not_found_view:\n\nThe 404 (page not found) view\n-----------------------------\n\n.. function:: django.views.defaults.page_not_found(request, template_name='404.html')\n\nWhen you raise an ``Http404`` exception, Django loads a special view devoted\nto handling 404 errors. By default, it's the view\n``django.views.defaults.page_not_found``, which either produces a very simple\n\"Not Found\" message or loads and renders the template ``404.html`` if you\ncreated it in your root template directory.\n\nThe default 404 view will pass one variable to the template: ``request_path``,\nwhich is the URL that resulted in the error.\n\nThe ``page_not_found`` view should suffice for 99% of Web applications, but if\nyou want to override it, you can specify ``handler404`` in your URLconf, like\nso::\n\n    handler404 = 'mysite.views.my_custom_404_view'\n\nBehind the scenes, Django determines the 404 view by looking for\n``handler404`` in your root URLconf, and falling back to\n``django.views.defaults.page_not_found`` if you did not define one.\n\nThree things to note about 404 views:\n\n* The 404 view is also called if Django doesn't find a match after\n  checking every regular expression in the URLconf.\n\n* The 404 view is passed a :class:`~django.template.RequestContext` and\n  will have access to variables supplied by your\n  :setting:`TEMPLATE_CONTEXT_PROCESSORS` setting (e.g., ``MEDIA_URL``).\n\n* If :setting:`DEBUG` is set to ``True`` (in your settings module), then\n  your 404 view will never be used, and your URLconf will be displayed\n  instead, with some debug information.\n\n.. _http_internal_server_error_view:\n\nThe 500 (server error) view\n----------------------------\n\nSimilarly, Django executes special-case behavior in the case of runtime errors\nin view code. If a view results in an exception, Django will, by default, call\nthe view ``django.views.defaults.server_error``, which either produces a very\nsimple \"Server Error\" message or loads and renders the template ``500.html`` if\nyou created it in your root template directory.\n\nThe default 500 view passes no variables to the ``500.html`` template and is\nrendered with an empty ``Context`` to lessen the chance of additional errors.\n\nThis ``server_error`` view should suffice for 99% of Web applications, but if\nyou want to override the view, you can specify ``handler500`` in your URLconf,\nlike so::\n\n    handler500 = 'mysite.views.my_custom_error_view'\n\nBehind the scenes, Django determines the 500 view by looking for\n``handler500`` in your root URLconf, and falling back to\n``django.views.defaults.server_error`` if you did not define one.\n\nOne thing to note about 500 views:\n\n* If :setting:`DEBUG` is set to ``True`` (in your settings module), then\n  your 500 view will never be used, and the traceback will be displayed\n  instead, with some debug information.\n\n.. _http_forbidden_view:\n\nThe 403 (HTTP Forbidden) view\n-----------------------------\n\n.. versionadded:: 1.4\n\nIn the same vein as the 404 and 500 views, Django has a view to handle 403\nForbidden errors. If a view results in a 403 exception then Django will, by\ndefault, call the view ``django.views.defaults.permission_denied``.\n\nThis view loads and renders the template ``403.html`` in your root template\ndirectory, or if this file does not exist, instead serves the text\n\"403 Forbidden\", as per :rfc:`2616` (the HTTP 1.1 Specification).\n\n``django.views.defaults.permission_denied`` is triggered by a\n:exc:`~django.core.exceptions.PermissionDenied` exception. To deny access in a\nview you can use code like this::\n\n    from django.core.exceptions import PermissionDenied\n\n    def edit(request, pk):\n        if not request.user.is_staff:\n            raise PermissionDenied\n        # ...\n\nIt is possible to override ``django.views.defaults.permission_denied`` in the\nsame way you can for the 404 and 500 views by specifying a ``handler403`` in\nyour URLconf::\n\n    handler403 = 'mysite.views.my_custom_permission_denied_view'\n"
  },
  {
    "path": "Django-1.5.1/docs/topics/i18n/formatting.txt",
    "content": ".. _format-localization:\n\n===================\nFormat localization\n===================\n\nOverview\n========\n\nDjango's formatting system is capable to display dates, times and numbers in templates using the format specified for the current :term:`locale <locale\nname>`. It also handles localized input in forms.\n\nWhen it's enabled, two users accessing the same content may see dates, times and\nnumbers formatted in different ways, depending on the formats for their current\nlocale.\n\nThe formatting system is disabled by default. To enable it, it's\nnecessary to set :setting:`USE_L10N = True <USE_L10N>` in your settings file.\n\n.. note::\n\n    The default :file:`settings.py` file created by :djadmin:`django-admin.py\n    startproject <startproject>` includes :setting:`USE_L10N = True <USE_L10N>`\n    for convenience.  Note, however, that to enable number formatting with\n    thousand separators it is necessary to set :setting:`USE_THOUSAND_SEPARATOR\n    = True <USE_THOUSAND_SEPARATOR>` in your settings file. Alternatively, you\n    could use :tfilter:`intcomma` to format numbers in your template.\n\n.. note::\n\n    There is also an independent but related :setting:`USE_I18N` setting that\n    controls if Django should activate translation. See\n    :doc:`/topics/i18n/translation` for more details.\n\nLocale aware input in forms\n===========================\n\nWhen formatting is enabled, Django can use localized formats when parsing dates,\ntimes and numbers in forms. That means it tries different formats for different\nlocales when guessing the format used by the user when inputting data on forms.\n\n.. note::\n    Django uses different formats for displaying data to those it uses for\n    parsing data. Most notably, the formats for parsing dates can't use the\n    ``%a`` (abbreviated weekday name), ``%A`` (full weekday name),\n    ``%b`` (abbreviated month name), ``%B`` (full month name),\n    or ``%p`` (AM/PM).\n\nTo enable a form field to localize input and output data simply use its\n``localize`` argument::\n\n    class CashRegisterForm(forms.Form):\n       product = forms.CharField()\n       revenue = forms.DecimalField(max_digits=4, decimal_places=2, localize=True)\n\n.. _topic-l10n-templates:\n\nControlling localization in templates\n=====================================\n\nWhen you have enabled formatting with :setting:`USE_L10N`, Django\nwill try to use a locale specific format whenever it outputs a value\nin a template.\n\nHowever, it may not always be appropriate to use localized values --\nfor example, if you're outputting Javascript or XML that is designed\nto be machine-readable, you will always want unlocalized values. You\nmay also want to use localization in selected templates, rather than\nusing localization everywhere.\n\nTo allow for fine control over the use of localization, Django\nprovides the ``l10n`` template library that contains the following\ntags and filters.\n\nTemplate tags\n-------------\n\n.. templatetag:: localize\n\nlocalize\n~~~~~~~~\n\nEnables or disables localization of template variables in the\ncontained block.\n\nThis tag allows a more fine grained control of localization than\n:setting:`USE_L10N`.\n\nTo activate or deactivate localization for a template block, use::\n\n    {% load l10n %}\n\n    {% localize on %}\n        {{ value }}\n    {% endlocalize %}\n\n    {% localize off %}\n        {{ value }}\n    {% endlocalize %}\n\n.. note::\n\n    The value of :setting:`USE_L10N` isn't respected inside of a\n    ``{% localize %}`` block.\n\nSee :tfilter:`localize` and :tfilter:`unlocalize` for template filters that will\ndo the same job on a per-variable basis.\n\nTemplate filters\n----------------\n\n.. templatefilter:: localize\n\nlocalize\n~~~~~~~~\n\nForces localization of a single value.\n\nFor example::\n\n    {% load l10n %}\n\n    {{ value|localize }}\n\nTo disable localization on a single value, use :tfilter:`unlocalize`. To control\nlocalization over a large section of a template, use the :ttag:`localize` template\ntag.\n\n\n.. templatefilter:: unlocalize\n\nunlocalize\n~~~~~~~~~~\n\nForces a single value to be printed without localization.\n\nFor example::\n\n    {% load l10n %}\n\n    {{ value|unlocalize }}\n\nTo force localization of a single value, use :tfilter:`localize`. To\ncontrol localization over a large section of a template, use the\n:ttag:`localize` template tag.\n\n.. _custom-format-files:\n\nCreating custom format files\n============================\n\nDjango provides format definitions for many locales, but sometimes you might\nwant to create your own, because a format files doesn't exist for your locale,\nor because you want to overwrite some of the values.\n\nTo use custom formats, specify the path where you'll place format files first.\nTo do that, just set your :setting:`FORMAT_MODULE_PATH` setting to the package\nwhere format files will exist, for instance::\n\n    FORMAT_MODULE_PATH = 'mysite.formats'\n\nFiles are not placed directly in this directory, but in a directory named as\nthe locale, and must be named ``formats.py``.\n\nTo customize the English formats, a structure like this would be needed::\n\n    mysite/\n        formats/\n            __init__.py\n            en/\n                __init__.py\n                formats.py\n\nwhere :file:`formats.py` contains custom format definitions. For example::\n\n    THOUSAND_SEPARATOR = u'\\xa0'\n\nto use a non-breaking space (Unicode ``00A0``) as a thousand separator,\ninstead of the default for English, a comma.\n\nLimitations of the provided locale formats\n==========================================\n\nSome locales use context-sensitive formats for numbers, which Django's\nlocalization system cannot handle automatically.\n\nSwitzerland (German)\n--------------------\n\nThe Swiss number formatting depends on the type of number that is being\nformatted. For monetary values, a comma is used as the thousand separator and\na decimal point for the decimal separator. For all other numbers, a comma is\nused as decimal separator and a space as thousand separator. The locale format\nprovided by Django uses the generic separators, a comma for decimal and a space\nfor thousand separators.\n"
  },
  {
    "path": "Django-1.5.1/docs/topics/i18n/index.txt",
    "content": "=====================================\nInternationalization and localization\n=====================================\n\n.. toctree::\n   :hidden:\n   :maxdepth: 1\n\n   translation\n   formatting\n   timezones\n\nOverview\n========\n\nThe goal of internationalization and localization is to allow a single Web\napplication to offer its content in languages and formats tailored to the\naudience.\n\nDjango has full support for :doc:`translation of text\n</topics/i18n/translation>`, :doc:`formatting of dates, times and numbers\n</topics/i18n/formatting>`, and :doc:`time zones </topics/i18n/timezones>`.\n\nEssentially, Django does two things:\n\n* It allows developers and template authors to specify which parts of their apps\n  should be translated or formatted for local languages and cultures.\n* It uses these hooks to localize Web apps for particular users according to\n  their preferences.\n\nObviously, translation depends on the target language, and formatting usually\ndepends on the target country. These informations are provided by browsers in\nthe ``Accept-Language`` header. However, the time zone isn't readily available.\n\nDefinitions\n===========\n\nThe words \"internationalization\" and \"localization\" often cause confusion;\nhere's a simplified definition:\n\n.. glossary::\n\n    internationalization\n      Preparing the software for localization. Usually done by developers.\n\n    localization\n      Writing the translations and local formats. Usually done by translators.\n\nMore details can be found in the `W3C Web Internationalization FAQ`_, the `Wikipedia article`_ or the `GNU gettext documentation`_.\n\n.. _W3C Web Internationalization FAQ: http://www.w3.org/International/questions/qa-i18n\n.. _GNU gettext documentation: http://www.gnu.org/software/gettext/manual/gettext.html#Concepts\n.. _Wikipedia article: http://en.wikipedia.org/wiki/Internationalization_and_localization\n\n.. warning::\n\n    Translation and formatting are controlled by :setting:`USE_I18N` and\n    :setting:`USE_L10N` settings respectively. However, both features involve\n    internationalization and localization. The names of the settings are an\n    unfortunate result of Django's history.\n\nHere are some other terms that will help us to handle a common language:\n\n.. glossary::\n\n    locale name\n      A locale name, either a language specification of the form ``ll`` or a\n      combined language and country specification of the form ``ll_CC``.\n      Examples: ``it``, ``de_AT``, ``es``, ``pt_BR``. The language part is\n      always is lower case and the country part in upper case. The separator\n      is an underscore.\n\n    language code\n      Represents the name of a language. Browsers send the names of the\n      languages they accept in the ``Accept-Language`` HTTP header using this\n      format. Examples: ``it``, ``de-at``, ``es``, ``pt-br``. Both the language\n      and the country parts are in lower case. The separator is a dash.\n\n    message file\n      A message file is a plain-text file, representing a single language,\n      that contains all available :term:`translation strings\n      <translation string>` and how they should be represented in the given\n      language. Message files have a ``.po`` file extension.\n\n    translation string\n      A literal that can be translated.\n\n    format file\n      A format file is a Python module that defines the data formats for a given\n      locale."
  },
  {
    "path": "Django-1.5.1/docs/topics/i18n/timezones.txt",
    "content": ".. _time-zones:\n\n==========\nTime zones\n==========\n\n.. versionadded:: 1.4\n\n.. _time-zones-overview:\n\nOverview\n========\n\nWhen support for time zones is enabled, Django stores date and time\ninformation in UTC in the database, uses time-zone-aware datetime objects\ninternally, and translates them to the end user's time zone in templates and\nforms.\n\nThis is handy if your users live in more than one time zone and you want to\ndisplay date and time information according to each user's wall clock.\n\nEven if your Web site is available in only one time zone, it's still good\npractice to store data in UTC in your database. One main reason is Daylight\nSaving Time (DST). Many countries have a system of DST, where clocks are moved\nforward in spring and backward in autumn. If you're working in local time,\nyou're likely to encounter errors twice a year, when the transitions happen.\n(The pytz_ documentation discusses `these issues`_ in greater detail.) This\nprobably doesn't matter for your blog, but it's a problem if you over-bill or\nunder-bill your customers by one hour, twice a year, every year. The solution\nto this problem is to use UTC in the code and use local time only when\ninteracting with end users.\n\nTime zone support is disabled by default. To enable it, set :setting:`USE_TZ =\nTrue <USE_TZ>` in your settings file. Installing pytz_ is highly recommended,\nbut not mandatory. It's as simple as:\n\n.. code-block:: bash\n\n    $ sudo pip install pytz\n\n.. note::\n\n    The default :file:`settings.py` file created by :djadmin:`django-admin.py\n    startproject <startproject>` includes :setting:`USE_TZ = True <USE_TZ>`\n    for convenience.\n\n.. note::\n\n    There is also an independent but related :setting:`USE_L10N` setting that\n    controls whether Django should activate format localization. See\n    :doc:`/topics/i18n/formatting` for more details.\n\nIf you're wrestling with a particular problem, start with the :ref:`time zone\nFAQ <time-zones-faq>`.\n\nConcepts\n========\n\nNaive and aware datetime objects\n--------------------------------\n\nPython's :class:`datetime.datetime` objects have a ``tzinfo`` attribute that\ncan be used to store time zone information, represented as an instance of a\nsubclass of :class:`datetime.tzinfo`. When this attribute is set and describes\nan offset, a datetime object is **aware**. Otherwise, it's **naive**.\n\nYou can use :func:`~django.utils.timezone.is_aware` and\n:func:`~django.utils.timezone.is_naive` to determine whether datetimes are\naware or naive.\n\nWhen time zone support is disabled, Django uses naive datetime objects in local\ntime. This is simple and sufficient for many use cases. In this mode, to obtain\nthe current time, you would write::\n\n    import datetime\n\n    now = datetime.datetime.now()\n\nWhen time zone support is enabled, Django uses time-zone-aware datetime\nobjects. If your code creates datetime objects, they should be aware too. In\nthis mode, the example above becomes::\n\n    import datetime\n    from django.utils.timezone import utc\n\n    now = datetime.datetime.utcnow().replace(tzinfo=utc)\n\n.. note::\n\n    :mod:`django.utils.timezone` provides a\n    :func:`~django.utils.timezone.now()` function that returns a naive or\n    aware datetime object according to the value of :setting:`USE_TZ`.\n\n.. warning::\n\n    Dealing with aware datetime objects isn't always intuitive. For instance,\n    the ``tzinfo`` argument of the standard datetime constructor doesn't work\n    reliably for time zones with DST. Using UTC is generally safe; if you're\n    using other time zones, you should review the `pytz`_ documentation\n    carefully.\n\n.. note::\n\n    Python's :class:`datetime.time` objects also feature a ``tzinfo``\n    attribute, and PostgreSQL has a matching ``time with time zone`` type.\n    However, as PostgreSQL's docs put it, this type \"exhibits properties which\n    lead to questionable usefulness\".\n\n    Django only supports naive time objects and will raise an exception if you\n    attempt to save an aware time object.\n\n.. _naive-datetime-objects:\n\nInterpretation of naive datetime objects\n----------------------------------------\n\nWhen :setting:`USE_TZ` is ``True``, Django still accepts naive datetime\nobjects, in order to preserve backwards-compatibility. When the database layer\nreceives one, it attempts to make it aware by interpreting it in the\n:ref:`default time zone <default-current-time-zone>` and raises a warning.\n\nUnfortunately, during DST transitions, some datetimes don't exist or are\nambiguous. In such situations, pytz_ raises an exception. Other\n:class:`~datetime.tzinfo` implementations, such as the local time zone used as\na fallback when pytz_ isn't installed, may raise an exception or return\ninaccurate results. That's why you should always create aware datetime objects\nwhen time zone support is enabled.\n\nIn practice, this is rarely an issue. Django gives you aware datetime objects\nin the models and forms, and most often, new datetime objects are created from\nexisting ones through :class:`~datetime.timedelta` arithmetic. The only\ndatetime that's often created in application code is the current time, and\n:func:`timezone.now() <django.utils.timezone.now>` automatically does the\nright thing.\n\n.. _default-current-time-zone:\n\nDefault time zone and current time zone\n---------------------------------------\n\nThe **default time zone** is the time zone defined by the :setting:`TIME_ZONE`\nsetting.\n\nThe **current time zone** is the time zone that's used for rendering.\n\nYou should set the current time zone to the end user's actual time zone with\n:func:`~django.utils.timezone.activate`. Otherwise, the default time zone is\nused.\n\n.. note::\n\n    As explained in the documentation of :setting:`TIME_ZONE`, Django sets\n    environment variables so that its process runs in the default time zone.\n    This happens regardless of the value of :setting:`USE_TZ` and of the\n    current time zone.\n\n    When :setting:`USE_TZ` is ``True``, this is useful to preserve\n    backwards-compatibility with applications that still rely on local time.\n    However, :ref:`as explained above <naive-datetime-objects>`, this isn't\n    entirely reliable, and you should always work with aware datetimes in UTC\n    in your own code. For instance, use\n    :meth:`~datetime.datetime.utcfromtimestamp` instead of\n    :meth:`~datetime.datetime.fromtimestamp` -- and don't forget to set\n    ``tzinfo`` to :data:`~django.utils.timezone.utc`.\n\nSelecting the current time zone\n-------------------------------\n\nThe current time zone is the equivalent of the current :term:`locale <locale\nname>` for translations. However, there's no equivalent of the\n``Accept-Language`` HTTP header that Django could use to determine the user's\ntime zone automatically. Instead, Django provides :ref:`time zone selection\nfunctions <time-zone-selection-functions>`. Use them to build the time zone\nselection logic that makes sense for you.\n\nMost Web sites that care about time zones just ask users in which time zone they\nlive and store this information in the user's profile. For anonymous users,\nthey use the time zone of their primary audience or UTC. pytz_ provides\nhelpers_, like a list of time zones per country, that you can use to pre-select\nthe most likely choices.\n\nHere's an example that stores the current timezone in the session. (It skips\nerror handling entirely for the sake of simplicity.)\n\nAdd the following middleware to :setting:`MIDDLEWARE_CLASSES`::\n\n    from django.utils import timezone\n\n    class TimezoneMiddleware(object):\n        def process_request(self, request):\n            tz = request.session.get('django_timezone')\n            if tz:\n                timezone.activate(tz)\n\nCreate a view that can set the current timezone::\n\n    import pytz\n    from django.shortcuts import redirect, render\n\n    def set_timezone(request):\n        if request.method == 'POST':\n            request.session['django_timezone'] = pytz.timezone(request.POST['timezone'])\n            return redirect('/')\n        else:\n            return render(request, 'template.html', {'timezones': pytz.common_timezones})\n\nInclude a form in ``template.html`` that will ``POST`` to this view:\n\n.. code-block:: html+django\n\n    {% load tz %}\n    <form action=\"{% url 'set_timezone' %}\" method=\"POST\">\n        {% csrf_token %}\n        <label for=\"timezone\">Time zone:</label>\n        <select name=\"timezone\">\n            {% for tz in timezones %}\n            <option value=\"{{ tz }}\"{% if tz == TIME_ZONE %} selected=\"selected\"{% endif %}>{{ tz }}</option>\n            {% endfor %}\n        </select>\n        <input type=\"submit\" value=\"Set\" />\n    </form>\n\n.. _time-zones-in-forms:\n\nTime zone aware input in forms\n==============================\n\nWhen you enable time zone support, Django interprets datetimes entered in\nforms in the :ref:`current time zone <default-current-time-zone>` and returns\naware datetime objects in ``cleaned_data``.\n\nIf the current time zone raises an exception for datetimes that don't exist or\nare ambiguous because they fall in a DST transition (the timezones provided by\npytz_ do this), such datetimes will be reported as invalid values.\n\n.. _time-zones-in-templates:\n\nTime zone aware output in templates\n===================================\n\nWhen you enable time zone support, Django converts aware datetime objects to\nthe :ref:`current time zone <default-current-time-zone>` when they're rendered\nin templates. This behaves very much like :doc:`format localization\n</topics/i18n/formatting>`.\n\n.. warning::\n\n    Django doesn't convert naive datetime objects, because they could be\n    ambiguous, and because your code should never produce naive datetimes when\n    time zone support is enabled. However, you can force conversion with the\n    template filters described below.\n\nConversion to local time isn't always appropriate -- you may be generating\noutput for computers rather than for humans. The following filters and tags,\nprovided by the ``tz`` template tag library, allow you to control the time zone\nconversions.\n\nTemplate tags\n-------------\n\n.. templatetag:: localtime\n\nlocaltime\n~~~~~~~~~\n\nEnables or disables conversion of aware datetime objects to the current time\nzone in the contained block.\n\nThis tag has exactly the same effects as the :setting:`USE_TZ` setting as far\nas the template engine is concerned. It allows a more fine grained control of\nconversion.\n\nTo activate or deactivate conversion for a template block, use::\n\n    {% load tz %}\n\n    {% localtime on %}\n        {{ value }}\n    {% endlocaltime %}\n\n    {% localtime off %}\n        {{ value }}\n    {% endlocaltime %}\n\n.. note::\n\n    The value of :setting:`USE_TZ` isn't respected inside of a\n    ``{% localtime %}`` block.\n\n.. templatetag:: timezone\n\ntimezone\n~~~~~~~~\n\nSets or unsets the current time zone in the contained block. When the current\ntime zone is unset, the default time zone applies.\n\n::\n\n    {% load tz %}\n\n    {% timezone \"Europe/Paris\" %}\n        Paris time: {{ value }}\n    {% endtimezone %}\n\n    {% timezone None %}\n        Server time: {{ value }}\n    {% endtimezone %}\n\n.. templatetag:: get_current_timezone\n\nget_current_timezone\n~~~~~~~~~~~~~~~~~~~~\n\nWhen the ``django.core.context_processors.tz`` context processor is\nenabled -- by default, it is -- each :class:`~django.template.RequestContext`\ncontains a ``TIME_ZONE`` variable that provides the name of the current time\nzone.\n\nIf you don't use a :class:`~django.template.RequestContext`, you can obtain\nthis value with the ``get_current_timezone`` tag::\n\n    {% get_current_timezone as TIME_ZONE %}\n\nTemplate filters\n----------------\n\nThese filters accept both aware and naive datetimes. For conversion purposes,\nthey assume that naive datetimes are in the default time zone. They always\nreturn aware datetimes.\n\n.. templatefilter:: localtime\n\nlocaltime\n~~~~~~~~~\n\nForces conversion of a single value to the current time zone.\n\nFor example::\n\n    {% load tz %}\n\n    {{ value|localtime }}\n\n.. templatefilter:: utc\n\nutc\n~~~\n\nForces conversion of a single value to UTC.\n\nFor example::\n\n    {% load tz %}\n\n    {{ value|utc }}\n\n.. templatefilter:: timezone\n\ntimezone\n~~~~~~~~\n\nForces conversion of a single value to an arbitrary timezone.\n\nThe argument must be an instance of a :class:`~datetime.tzinfo` subclass or a\ntime zone name. If it is a time zone name, pytz_ is required.\n\nFor example::\n\n    {% load tz %}\n\n    {{ value|timezone:\"Europe/Paris\" }}\n\n.. _time-zones-migration-guide:\n\nMigration guide\n===============\n\nHere's how to migrate a project that was started before Django supported time\nzones.\n\nDatabase\n--------\n\nPostgreSQL\n~~~~~~~~~~\n\nThe PostgreSQL backend stores datetimes as ``timestamp with time zone``. In\npractice, this means it converts datetimes from the connection's time zone to\nUTC on storage, and from UTC to the connection's time zone on retrieval.\n\nAs a consequence, if you're using PostgreSQL, you can switch between ``USE_TZ\n= False`` and ``USE_TZ = True`` freely. The database connection's time zone\nwill be set to :setting:`TIME_ZONE` or ``UTC`` respectively, so that Django\nobtains correct datetimes in all cases. You don't need to perform any data\nconversions.\n\nOther databases\n~~~~~~~~~~~~~~~\n\nOther backends store datetimes without time zone information. If you switch\nfrom ``USE_TZ = False`` to ``USE_TZ = True``, you must convert your data from\nlocal time to UTC -- which isn't deterministic if your local time has DST.\n\nCode\n----\n\nThe first step is to add :setting:`USE_TZ = True <USE_TZ>` to your settings\nfile and install pytz_ (if possible). At this point, things should mostly\nwork. If you create naive datetime objects in your code, Django makes them\naware when necessary.\n\nHowever, these conversions may fail around DST transitions, which means you\naren't getting the full benefits of time zone support yet. Also, you're likely\nto run into a few problems because it's impossible to compare a naive datetime\nwith an aware datetime. Since Django now gives you aware datetimes, you'll get\nexceptions wherever you compare a datetime that comes from a model or a form\nwith a naive datetime that you've created in your code.\n\nSo the second step is to refactor your code wherever you instantiate datetime\nobjects to make them aware. This can be done incrementally.\n:mod:`django.utils.timezone` defines some handy helpers for compatibility\ncode: :func:`~django.utils.timezone.now`,\n:func:`~django.utils.timezone.is_aware`,\n:func:`~django.utils.timezone.is_naive`,\n:func:`~django.utils.timezone.make_aware`, and\n:func:`~django.utils.timezone.make_naive`.\n\nFinally, in order to help you locate code that needs upgrading, Django raises\na warning when you attempt to save a naive datetime to the database::\n\n    RuntimeWarning: DateTimeField received a naive datetime (2012-01-01 00:00:00) while time zone support is active.\n\nDuring development, you can turn such warnings into exceptions and get a\ntraceback by adding the following to your settings file::\n\n    import warnings\n    warnings.filterwarnings(\n            'error', r\"DateTimeField received a naive datetime\",\n            RuntimeWarning, r'django\\.db\\.models\\.fields')\n\nFixtures\n--------\n\nWhen serializing an aware datetime, the UTC offset is included, like this::\n\n    \"2011-09-01T13:20:30+03:00\"\n\nFor a naive datetime, it obviously isn't::\n\n    \"2011-09-01T13:20:30\"\n\nFor models with :class:`~django.db.models.DateTimeField`\\ s, this difference\nmakes it impossible to write a fixture that works both with and without time\nzone support.\n\nFixtures generated with ``USE_TZ = False``, or before Django 1.4, use the\n\"naive\" format. If your project contains such fixtures, after you enable time\nzone support, you'll see :exc:`~exceptions.RuntimeWarning`\\ s when you load\nthem. To get rid of the warnings, you must convert your fixtures to the \"aware\"\nformat.\n\nYou can regenerate fixtures with :djadmin:`loaddata` then :djadmin:`dumpdata`.\nOr, if they're small enough, you can simply edit them to add the UTC offset\nthat matches your :setting:`TIME_ZONE` to each serialized datetime.\n\n.. _time-zones-faq:\n\nFAQ\n===\n\nSetup\n-----\n\n1. **I don't need multiple time zones. Should I enable time zone support?**\n\n   Yes. When time zone support is enabled, Django uses a more accurate model\n   of local time. This shields you from subtle and unreproducible bugs around\n   Daylight Saving Time (DST) transitions.\n\n   In this regard, time zones are comparable to ``unicode`` in Python. At first\n   it's hard. You get encoding and decoding errors. Then you learn the rules.\n   And some problems disappear -- you never get mangled output again when your\n   application receives non-ASCII input.\n\n   When you enable time zone support, you'll encounter some errors because\n   you're using naive datetimes where Django expects aware datetimes. Such\n   errors show up when running tests and they're easy to fix. You'll quickly\n   learn how to avoid invalid operations.\n\n   On the other hand, bugs caused by the lack of time zone support are much\n   harder to prevent, diagnose and fix. Anything that involves scheduled tasks\n   or datetime arithmetic is a candidate for subtle bugs that will bite you\n   only once or twice a year.\n\n   For these reasons, time zone support is enabled by default in new projects,\n   and you should keep it unless you have a very good reason not to.\n\n2. **I've enabled time zone support. Am I safe?**\n\n   Maybe. You're better protected from DST-related bugs, but you can still\n   shoot yourself in the foot by carelessly turning naive datetimes into aware\n   datetimes, and vice-versa.\n\n   If your application connects to other systems -- for instance, if it queries\n   a Web service -- make sure datetimes are properly specified. To transmit\n   datetimes safely, their representation should include the UTC offset, or\n   their values should be in UTC (or both!).\n\n   Finally, our calendar system contains interesting traps for computers::\n\n       >>> import datetime\n       >>> def one_year_before(value):       # DON'T DO THAT!\n       ...     return value.replace(year=value.year - 1)\n       >>> one_year_before(datetime.datetime(2012, 3, 1, 10, 0))\n       datetime.datetime(2011, 3, 1, 10, 0)\n       >>> one_year_before(datetime.datetime(2012, 2, 29, 10, 0))\n       Traceback (most recent call last):\n       ...\n       ValueError: day is out of range for month\n\n   (To implement this function, you must decide whether 2012-02-29 minus\n   one year is 2011-02-28 or 2011-03-01, which depends on your business\n   requirements.)\n\n3. **Should I install pytz?**\n\n   Yes. Django has a policy of not requiring external dependencies, and for\n   this reason pytz_ is optional. However, it's much safer to install it.\n\n   As soon as you activate time zone support, Django needs a definition of the\n   default time zone. When pytz is available, Django loads this definition\n   from the `tz database`_. This is the most accurate solution. Otherwise, it\n   relies on the difference between local time and UTC, as reported by the\n   operating system, to compute conversions. This is less reliable, especially\n   around DST transitions.\n\n   Furthermore, if you want to support users in more than one time zone, pytz\n   is the reference for time zone definitions.\n\nTroubleshooting\n---------------\n\n1. **My application crashes with** ``TypeError: can't compare offset-naive``\n   ``and offset-aware datetimes`` **-- what's wrong?**\n\n   Let's reproduce this error by comparing a naive and an aware datetime::\n\n       >>> import datetime\n       >>> from django.utils import timezone\n       >>> naive = datetime.datetime.utcnow()\n       >>> aware = naive.replace(tzinfo=timezone.utc)\n       >>> naive == aware\n       Traceback (most recent call last):\n       ...\n       TypeError: can't compare offset-naive and offset-aware datetimes\n\n   If you encounter this error, most likely your code is comparing these two\n   things:\n\n   - a datetime provided by Django -- for instance, a value read from a form or\n     a model field. Since you enabled time zone support, it's aware.\n   - a datetime generated by your code, which is naive (or you wouldn't be\n     reading this).\n\n   Generally, the correct solution is to change your code to use an aware\n   datetime instead.\n\n   If you're writing a pluggable application that's expected to work\n   independently of the value of :setting:`USE_TZ`, you may find\n   :func:`django.utils.timezone.now` useful. This function returns the current\n   date and time as a naive datetime when ``USE_TZ = False`` and as an aware\n   datetime when ``USE_TZ = True``. You can add or subtract\n   :class:`datetime.timedelta` as needed.\n\n2. **I see lots of** ``RuntimeWarning: DateTimeField received a naive\n   datetime`` ``(YYYY-MM-DD HH:MM:SS)`` ``while time zone support is active``\n   **-- is that bad?**\n\n   When time zone support is enabled, the database layer expects to receive\n   only aware datetimes from your code. This warning occurs when it receives a\n   naive datetime. This indicates that you haven't finished porting your code\n   for time zone support. Please refer to the :ref:`migration guide\n   <time-zones-migration-guide>` for tips on this process.\n\n   In the meantime, for backwards compatibility, the datetime is considered to\n   be in the default time zone, which is generally what you expect.\n\n3. ``now.date()`` **is yesterday! (or tomorrow)**\n\n   If you've always used naive datetimes, you probably believe that you can\n   convert a datetime to a date by calling its :meth:`~datetime.datetime.date`\n   method. You also consider that a :class:`~datetime.date` is a lot like a\n   :class:`~datetime.datetime`, except that it's less accurate.\n\n   None of this is true in a time zone aware environment::\n\n       >>> import datetime\n       >>> import pytz\n       >>> paris_tz = pytz.timezone(\"Europe/Paris\")\n       >>> new_york_tz = pytz.timezone(\"America/New_York\")\n       >>> paris = paris_tz.localize(datetime.datetime(2012, 3, 3, 1, 30))\n       # This is the correct way to convert between time zones with pytz.\n       >>> new_york = new_york_tz.normalize(paris.astimezone(new_york_tz))\n       >>> paris == new_york, paris.date() == new_york.date()\n       (True, False)\n       >>> paris - new_york, paris.date() - new_york.date()\n       (datetime.timedelta(0), datetime.timedelta(1))\n       >>> paris\n       datetime.datetime(2012, 3, 3, 1, 30, tzinfo=<DstTzInfo 'Europe/Paris' CET+1:00:00 STD>)\n       >>> new_york\n       datetime.datetime(2012, 3, 2, 19, 30, tzinfo=<DstTzInfo 'America/New_York' EST-1 day, 19:00:00 STD>)\n\n   As this example shows, the same datetime has a different date, depending on\n   the time zone in which it is represented. But the real problem is more\n   fundamental.\n\n   A datetime represents a **point in time**. It's absolute: it doesn't depend\n   on anything. On the contrary, a date is a **calendaring concept**. It's a\n   period of time whose bounds depend on the time zone in which the date is\n   considered. As you can see, these two concepts are fundamentally different,\n   and converting a datetime to a date isn't a deterministic operation.\n\n   What does this mean in practice?\n\n   Generally, you should avoid converting a :class:`~datetime.datetime` to\n   :class:`~datetime.date`. For instance, you can use the :tfilter:`date`\n   template filter to only show the date part of a datetime. This filter will\n   convert the datetime into the current time zone before formatting it,\n   ensuring the results appear correctly.\n\n   If you really need to do the conversion yourself, you must ensure the\n   datetime is converted to the appropriate time zone first. Usually, this\n   will be the current timezone::\n\n       >>> from django.utils import timezone\n       >>> timezone.activate(pytz.timezone(\"Asia/Singapore\"))\n       # For this example, we just set the time zone to Singapore, but here's how\n       # you would obtain the current time zone in the general case.\n       >>> current_tz = timezone.get_current_timezone()\n       # Again, this is the correct way to convert between time zones with pytz.\n       >>> local = current_tz.normalize(paris.astimezone(current_tz))\n       >>> local\n       datetime.datetime(2012, 3, 3, 8, 30, tzinfo=<DstTzInfo 'Asia/Singapore' SGT+8:00:00 STD>)\n       >>> local.date()\n       datetime.date(2012, 3, 3)\n\nUsage\n-----\n\n1. **I have a string** ``\"2012-02-21 10:28:45\"`` **and I know it's in the**\n   ``\"Europe/Helsinki\"`` **time zone. How do I turn that into an aware\n   datetime?**\n\n   This is exactly what pytz_ is for.\n\n       >>> from django.utils.dateparse import parse_datetime\n       >>> naive = parse_datetime(\"2012-02-21 10:28:45\")\n       >>> import pytz\n       >>> pytz.timezone(\"Europe/Helsinki\").localize(naive, is_dst=None)\n       datetime.datetime(2012, 2, 21, 10, 28, 45, tzinfo=<DstTzInfo 'Europe/Helsinki' EET+2:00:00 STD>)\n\n   Note that ``localize`` is a pytz extension to the :class:`~datetime.tzinfo`\n   API. Also, you may want to catch ``pytz.InvalidTimeError``. The\n   documentation of pytz contains `more examples`_. You should review it\n   before attempting to manipulate aware datetimes.\n\n2. **How can I obtain the local time in the current time zone?**\n\n   Well, the first question is, do you really need to?\n\n   You should only use local time when you're interacting with humans, and the\n   template layer provides :ref:`filters and tags <time-zones-in-templates>`\n   to convert datetimes to the time zone of your choice.\n\n   Furthermore, Python knows how to compare aware datetimes, taking into\n   account UTC offsets when necessary. It's much easier (and possibly faster)\n   to write all your model and view code in UTC. So, in most circumstances,\n   the datetime in UTC returned by :func:`django.utils.timezone.now` will be\n   sufficient.\n\n   For the sake of completeness, though, if you really want the local time\n   in the current time zone, here's how you can obtain it::\n\n       >>> from django.utils import timezone\n       >>> timezone.localtime(timezone.now())\n       datetime.datetime(2012, 3, 3, 20, 10, 53, 873365, tzinfo=<DstTzInfo 'Europe/Paris' CET+1:00:00 STD>)\n\n   In this example, pytz_ is installed and the current time zone is\n   ``\"Europe/Paris\"``.\n\n3. **How can I see all available time zones?**\n\n   pytz_ provides helpers_, including a list of current time zones and a list\n   of all available time zones -- some of which are only of historical\n   interest.\n\n.. _pytz: http://pytz.sourceforge.net/\n.. _more examples: http://pytz.sourceforge.net/#example-usage\n.. _these issues: http://pytz.sourceforge.net/#problems-with-localtime\n.. _helpers: http://pytz.sourceforge.net/#helpers\n.. _tz database: http://en.wikipedia.org/wiki/Tz_database\n"
  },
  {
    "path": "Django-1.5.1/docs/topics/i18n/translation.txt",
    "content": "===========\nTranslation\n===========\n\n.. module:: django.utils.translation\n\nOverview\n========\n\nIn order to make a Django project translatable, you have to add a minimal amount\nof hooks to your Python code and templates. These hooks are called\n:term:`translation strings <translation string>`. They tell Django: \"This text\nshould be translated into the end user's language, if a translation for this\ntext is available in that language.\" It's your responsibility to mark\ntranslatable strings; the system can only translate strings it knows about.\n\nDjango then provides utilities to extract the translation strings into a\n:term:`message file`. This file is a convenient way for translators to provide\nthe equivalent of the translation strings in the target language. Once the\ntranslators have filled in the message file, it must be compiled. This process\nrelies on the GNU gettext toolset.\n\nOnce this is done, Django takes care of translating Web apps on the fly in each\navailable language, according to users' language preferences.\n\nDjango's internationalization hooks are on by default, and that means there's a\nbit of i18n-related overhead in certain places of the framework. If you don't\nuse internationalization, you should take the two seconds to set\n:setting:`USE_I18N = False <USE_I18N>` in your settings file. Then Django will\nmake some optimizations so as not to load the internationalization machinery.\nYou'll probably also want to remove ``'django.core.context_processors.i18n'``\nfrom your :setting:`TEMPLATE_CONTEXT_PROCESSORS` setting.\n\n.. note::\n\n    There is also an independent but related :setting:`USE_L10N` setting that\n    controls if Django should implement format localization. See\n    :doc:`/topics/i18n/formatting` for more details.\n\n.. note::\n\n    Make sure you've activated translation for your project (the fastest way is\n    to check if :setting:`MIDDLEWARE_CLASSES` includes\n    :mod:`django.middleware.locale.LocaleMiddleware`). If you haven't yet,\n    see :ref:`how-django-discovers-language-preference`.\n\nInternationalization: in Python code\n====================================\n\nStandard translation\n--------------------\n\nSpecify a translation string by using the function\n:func:`~django.utils.translation.ugettext`. It's convention to import this\nas a shorter alias, ``_``, to save typing.\n\n.. note::\n    Python's standard library ``gettext`` module installs ``_()`` into the\n    global namespace, as an alias for ``gettext()``. In Django, we have chosen\n    not to follow this practice, for a couple of reasons:\n\n    1. For international character set (Unicode) support,\n       :func:`~django.utils.translation.ugettext` is more useful than\n       ``gettext()``. Sometimes, you should be using\n       :func:`~django.utils.translation.ugettext_lazy` as the default\n       translation method for a particular file. Without ``_()`` in the\n       global namespace, the developer has to think about which is the\n       most appropriate translation function.\n\n    2. The underscore character (``_``) is used to represent \"the previous\n       result\" in Python's interactive shell and doctest tests. Installing a\n       global ``_()`` function causes interference. Explicitly importing\n       ``ugettext()`` as ``_()`` avoids this problem.\n\n.. highlightlang:: python\n\nIn this example, the text ``\"Welcome to my site.\"`` is marked as a translation\nstring::\n\n    from django.utils.translation import ugettext as _\n\n    def my_view(request):\n        output = _(\"Welcome to my site.\")\n        return HttpResponse(output)\n\nObviously, you could code this without using the alias. This example is\nidentical to the previous one::\n\n    from django.utils.translation import ugettext\n\n    def my_view(request):\n        output = ugettext(\"Welcome to my site.\")\n        return HttpResponse(output)\n\nTranslation works on computed values. This example is identical to the previous\ntwo::\n\n    def my_view(request):\n        words = ['Welcome', 'to', 'my', 'site.']\n        output = _(' '.join(words))\n        return HttpResponse(output)\n\nTranslation works on variables. Again, here's an identical example::\n\n    def my_view(request):\n        sentence = 'Welcome to my site.'\n        output = _(sentence)\n        return HttpResponse(output)\n\n(The caveat with using variables or computed values, as in the previous two\nexamples, is that Django's translation-string-detecting utility,\n:djadmin:`django-admin.py makemessages <makemessages>`, won't be able to find\nthese strings. More on :djadmin:`makemessages` later.)\n\nThe strings you pass to ``_()`` or ``ugettext()`` can take placeholders,\nspecified with Python's standard named-string interpolation syntax. Example::\n\n    def my_view(request, m, d):\n        output = _('Today is %(month)s %(day)s.') % {'month': m, 'day': d}\n        return HttpResponse(output)\n\nThis technique lets language-specific translations reorder the placeholder\ntext. For example, an English translation may be ``\"Today is November 26.\"``,\nwhile a Spanish translation may be ``\"Hoy es 26 de Noviembre.\"`` -- with the\nthe month and the day placeholders swapped.\n\nFor this reason, you should use named-string interpolation (e.g., ``%(day)s``)\ninstead of positional interpolation (e.g., ``%s`` or ``%d``) whenever you\nhave more than a single parameter. If you used positional interpolation,\ntranslations wouldn't be able to reorder placeholder text.\n\n.. _translator-comments:\n\nComments for translators\n------------------------\n\nIf you would like to give translators hints about a translatable string, you\ncan add a comment prefixed with the ``Translators`` keyword on the line\npreceding the string, e.g.::\n\n    def my_view(request):\n        # Translators: This message appears on the home page only\n        output = ugettext(\"Welcome to my site.\")\n\nThe comment will then appear in the resulting ``.po`` file associated with the\ntranslatable contruct located below it and should also be displayed by most\ntranslation tools.\n\n.. note:: Just for completeness, this is the corresponding fragment of the\n    resulting ``.po`` file:\n\n    .. code-block:: po\n\n        #. Translators: This message appears on the home page only\n        # path/to/python/file.py:123\n        msgid \"Welcome to my site.\"\n        msgstr \"\"\n\nThis also works in templates. See :ref:`translator-comments-in-templates` for\nmore details.\n\nMarking strings as no-op\n------------------------\n\nUse the function :func:`django.utils.translation.ugettext_noop()` to mark a\nstring as a translation string without translating it. The string is later\ntranslated from a variable.\n\nUse this if you have constant strings that should be stored in the source\nlanguage because they are exchanged over systems or users -- such as strings\nin a database -- but should be translated at the last possible point in time,\nsuch as when the string is presented to the user.\n\nPluralization\n-------------\n\nUse the function :func:`django.utils.translation.ungettext()` to specify\npluralized messages.\n\n``ungettext`` takes three arguments: the singular translation string, the plural\ntranslation string and the number of objects.\n\nThis function is useful when you need your Django application to be localizable\nto languages where the number and complexity of `plural forms\n<http://www.gnu.org/software/gettext/manual/gettext.html#Plural-forms>`_ is\ngreater than the two forms used in English ('object' for the singular and\n'objects' for all the cases where ``count`` is different from one, irrespective\nof its value.)\n\nFor example::\n\n    from django.utils.translation import ungettext\n\n    def hello_world(request, count):\n        page = ungettext(\n            'there is %(count)d object',\n            'there are %(count)d objects',\n        count) % {\n            'count': count,\n        }\n        return HttpResponse(page)\n\nIn this example the number of objects is passed to the translation\nlanguages as the ``count`` variable.\n\nLets see a slightly more complex usage example::\n\n    from django.utils.translation import ungettext\n\n    count = Report.objects.count()\n    if count == 1:\n        name = Report._meta.verbose_name\n    else:\n        name = Report._meta.verbose_name_plural\n\n    text = ungettext(\n            'There is %(count)d %(name)s available.',\n            'There are %(count)d %(name)s available.',\n            count\n    ) % {\n        'count': count,\n        'name': name\n    }\n\nHere we reuse localizable, hopefully already translated literals (contained in\nthe ``verbose_name`` and ``verbose_name_plural`` model ``Meta`` options) for\nother parts of the sentence so all of it is consistently based on the\ncardinality of the elements at play.\n\n.. _pluralization-var-notes:\n\n.. note::\n\n    When using this technique, make sure you use a single name for every\n    extrapolated variable included in the literal. In the example above note how\n    we used the ``name`` Python variable in both translation strings. This\n    example would fail::\n\n        from django.utils.translation import ungettext\n        from myapp.models import Report\n\n        count = Report.objects.count()\n        d = {\n            'count': count,\n            'name': Report._meta.verbose_name,\n            'plural_name': Report._meta.verbose_name_plural\n        }\n        text = ungettext(\n                'There is %(count)d %(name)s available.',\n                'There are %(count)d %(plural_name)s available.',\n                count\n        ) % d\n\n    You would get an error when running :djadmin:`django-admin.py\n    compilemessages <compilemessages>`::\n\n        a format specification for argument 'name', as in 'msgstr[0]', doesn't exist in 'msgid'\n\n.. _contextual-markers:\n\nContextual markers\n------------------\n\nSometimes words have several meanings, such as ``\"May\"`` in English, which\nrefers to a month name and to a verb. To enable translators to translate\nthese words correctly in different contexts, you can use the\n:func:`django.utils.translation.pgettext()` function, or the\n:func:`django.utils.translation.npgettext()` function if the string needs\npluralization. Both take a context string as the first variable.\n\nIn the resulting ``.po`` file, the string will then appear as often as there are\ndifferent contextual markers for the same string (the context will appear on the\n``msgctxt`` line), allowing the translator to give a different translation for\neach of them.\n\nFor example::\n\n    from django.utils.translation import pgettext\n\n    month = pgettext(\"month name\", \"May\")\n\nor::\n\n    from django.utils.translation import pgettext_lazy\n\n    class MyThing(models.Model):\n        name = models.CharField(help_text=pgettext_lazy(\n            'help text for MyThing model', 'This is the help text'))\n\nwill appear in the ``.po`` file as:\n\n.. code-block:: po\n\n    msgctxt \"month name\"\n    msgid \"May\"\n    msgstr \"\"\n\n.. versionadded:: 1.4\n\nContextual markers are also supported by the :ttag:`trans` and\n:ttag:`blocktrans` template tags.\n\n.. _lazy-translations:\n\nLazy translation\n----------------\n\nUse the lazy versions of translation functions in\n:mod:`django.utils.translation` (easily recognizable by the ``lazy`` suffix in\ntheir names) to translate strings lazily -- when the value is accessed rather\nthan when they're called.\n\nThese functions store a lazy reference to the string -- not the actual\ntranslation. The translation itself will be done when the string is used in a\nstring context, such as in template rendering.\n\nThis is essential when calls to these functions are located in code paths that\nare executed at module load time.\n\nThis is something that can easily happen when defining models, forms and\nmodel forms, because Django implements these such that their fields are\nactually class-level attributes. For that reason, make sure to use lazy\ntranslations in the following cases:\n\nModel fields and relationships ``verbose_name`` and ``help_text`` option values\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nFor example, to translate the help text of the *name* field in the following\nmodel, do the following::\n\n    from django.utils.translation import ugettext_lazy as _\n\n    class MyThing(models.Model):\n        name = models.CharField(help_text=_('This is the help text'))\n\nYou can mark names of ``ForeignKey``, ``ManyTomanyField`` or ``OneToOneField``\nrelationship as translatable by using their ``verbose_name`` options::\n\n    from django.utils.translation import ugettext_lazy as _\n\n    class MyThing(models.Model):\n        kind = models.ForeignKey(ThingKind, related_name='kinds',\n                                 verbose_name=_('kind'))\n\nJust like you would do in :attr:`~django.db.models.Options.verbose_name` you\nshould provide a lowercase verbose name text for the relation as Django will\nautomatically titlecase it when required.\n\nModel verbose names values\n~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nIt is recommended to always provide explicit\n:attr:`~django.db.models.Options.verbose_name` and\n:attr:`~django.db.models.Options.verbose_name_plural` options rather than\nrelying on the fallback English-centric and somewhat naïve determination of\nverbose names Django performs by looking at the model's class name::\n\n    from django.utils.translation import ugettext_lazy as _\n\n    class MyThing(models.Model):\n        name = models.CharField(_('name'), help_text=_('This is the help text'))\n\n        class Meta:\n            verbose_name = _('my thing')\n            verbose_name_plural = _('my things')\n\nModel methods ``short_description`` attribute values\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nFor model methods, you can provide translations to Django and the admin site\nwith the ``short_description`` attribute::\n\n    from django.utils.translation import ugettext_lazy as _\n\n    class MyThing(models.Model):\n        kind = models.ForeignKey(ThingKind, related_name='kinds',\n                                 verbose_name=_('kind'))\n\n        def is_mouse(self):\n            return self.kind.type == MOUSE_TYPE\n        is_mouse.short_description = _('Is it a mouse?')\n\nWorking with lazy translation objects\n-------------------------------------\n\nThe result of a ``ugettext_lazy()`` call can be used wherever you would use a\nunicode string (an object with type ``unicode``) in Python. If you try to use\nit where a bytestring (a ``str`` object) is expected, things will not work as\nexpected, since a ``ugettext_lazy()`` object doesn't know how to convert\nitself to a bytestring. You can't use a unicode string inside a bytestring,\neither, so this is consistent with normal Python behavior. For example::\n\n    # This is fine: putting a unicode proxy into a unicode string.\n    u\"Hello %s\" % ugettext_lazy(\"people\")\n\n    # This will not work, since you cannot insert a unicode object\n    # into a bytestring (nor can you insert our unicode proxy there)\n    \"Hello %s\" % ugettext_lazy(\"people\")\n\nIf you ever see output that looks like ``\"hello\n<django.utils.functional...>\"``, you have tried to insert the result of\n``ugettext_lazy()`` into a bytestring. That's a bug in your code.\n\nIf you don't like the long ``ugettext_lazy`` name, you can just alias it as\n``_`` (underscore), like so::\n\n    from django.utils.translation import ugettext_lazy as _\n\n    class MyThing(models.Model):\n        name = models.CharField(help_text=_('This is the help text'))\n\nUsing ``ugettext_lazy()`` and ``ungettext_lazy()`` to mark strings in models\nand utility functions is a common operation. When you're working with these\nobjects elsewhere in your code, you should ensure that you don't accidentally\nconvert them to strings, because they should be converted as late as possible\n(so that the correct locale is in effect). This necessitates the use of the\nhelper function described next.\n\nJoining strings: string_concat()\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nStandard Python string joins (``''.join([...])``) will not work on lists\ncontaining lazy translation objects. Instead, you can use\n:func:`django.utils.translation.string_concat()`, which creates a lazy object\nthat concatenates its contents *and* converts them to strings only when the\nresult is included in a string. For example::\n\n    from django.utils.translation import string_concat\n    ...\n    name = ugettext_lazy('John Lennon')\n    instrument = ugettext_lazy('guitar')\n    result = string_concat(name, ': ', instrument)\n\nIn this case, the lazy translations in ``result`` will only be converted to\nstrings when ``result`` itself is used in a string (usually at template\nrendering time).\n\nOther uses of lazy in delayed translations\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nFor any other case where you would like to delay the translation, but have to\npass the translatable string as argument to another function, you can wrap\nthis function inside a lazy call yourself. For example::\n\n    from django.utils import six  # Python 3 compatibility\n    from django.utils.functional import lazy\n    from django.utils.safestring import mark_safe\n    from django.utils.translation import ugettext_lazy as _\n\n    mark_safe_lazy = lazy(mark_safe, six.text_type)\n\nAnd then later::\n\n    lazy_string = mark_safe_lazy(_(\"<p>My <strong>string!</strong></p>\"))\n\nLocalized names of languages\n----------------------------\n\n.. function:: get_language_info\n\nThe ``get_language_info()`` function provides detailed information about\nlanguages::\n\n    >>> from django.utils.translation import get_language_info\n    >>> li = get_language_info('de')\n    >>> print(li['name'], li['name_local'], li['bidi'])\n    German Deutsch False\n\nThe ``name`` and ``name_local`` attributes of the dictionary contain the name of\nthe language in English and in the language itself, respectively.  The ``bidi``\nattribute is True only for bi-directional languages.\n\nThe source of the language information is the ``django.conf.locale`` module.\nSimilar access to this information is available for template code. See below.\n\n.. _specifying-translation-strings-in-template-code:\n\nInternationalization: in template code\n======================================\n\n.. highlightlang:: html+django\n\nTranslations in :doc:`Django templates </topics/templates>` uses two template\ntags and a slightly different syntax than in Python code. To give your template\naccess to these tags, put ``{% load i18n %}`` toward the top of your template.\nAs with all template tags, this tag needs to be loaded in all templates which\nuse translations, even those templates that extend from other templates which\nhave already loaded the ``i18n`` tag.\n\n.. templatetag:: trans\n\n``trans`` template tag\n----------------------\n\nThe ``{% trans %}`` template tag translates either a constant string\n(enclosed in single or double quotes) or variable content::\n\n    <title>{% trans \"This is the title.\" %}</title>\n    <title>{% trans myvar %}</title>\n\nIf the ``noop`` option is present, variable lookup still takes place but the\ntranslation is skipped. This is useful when \"stubbing out\" content that will\nrequire translation in the future::\n\n    <title>{% trans \"myvar\" noop %}</title>\n\nInternally, inline translations use an\n:func:`~django.utils.translation.ugettext` call.\n\nIn case a template var (``myvar`` above) is passed to the tag, the tag will\nfirst resolve such variable to a string at run-time and then look up that\nstring in the message catalogs.\n\nIt's not possible to mix a template variable inside a string within ``{% trans\n%}``. If your translations require strings with variables (placeholders), use\n``{% blocktrans %}`` instead.\n\n.. versionadded:: 1.4\n\nIf you'd like to retrieve a translated string without displaying it, you can\nuse the following syntax::\n\n    {% trans \"This is the title\" as the_title %}\n\n    <title>{{ the_title }}</title>\n    <meta name=\"description\" content=\"{{ the_title }}\">\n\nIn practice you'll use this to get strings that are used in multiple places\nor should be used as arguments for other template tags or filters::\n\n    {% trans \"starting point\" as start %}\n    {% trans \"end point\" as end %}\n    {% trans \"La Grande Boucle\" as race %}\n\n    <h1>\n      <a href=\"/\" title=\"{% blocktrans %}Back to '{{ race }}' homepage{% endblocktrans %}\">{{ race }}</a>\n    </h1>\n    <p>\n    {% for stage in tour_stages %}\n        {% cycle start end %}: {{ stage }}{% if forloop.counter|divisibleby:2 %}<br />{% else %}, {% endif %}\n    {% endfor %}\n    </p>\n\n.. versionadded:: 1.4\n\n``{% trans %}`` also supports :ref:`contextual markers<contextual-markers>`\nusing the ``context`` keyword:\n\n.. code-block:: html+django\n\n    {% trans \"May\" context \"month name\" %}\n\n.. templatetag:: blocktrans\n\n``blocktrans`` template tag\n---------------------------\n\nContrarily to the :ttag:`trans` tag, the ``blocktrans`` tag allows you to mark\ncomplex sentences consisting of literals and variable content for translation\nby making use of placeholders::\n\n    {% blocktrans %}This string will have {{ value }} inside.{% endblocktrans %}\n\nTo translate a template expression -- say, accessing object attributes or\nusing template filters -- you need to bind the expression to a local variable\nfor use within the translation block. Examples::\n\n    {% blocktrans with amount=article.price %}\n    That will cost $ {{ amount }}.\n    {% endblocktrans %}\n\n    {% blocktrans with myvar=value|filter %}\n    This will have {{ myvar }} inside.\n    {% endblocktrans %}\n\nYou can use multiple expressions inside a single ``blocktrans`` tag::\n\n    {% blocktrans with book_t=book|title author_t=author|title %}\n    This is {{ book_t }} by {{ author_t }}\n    {% endblocktrans %}\n\n.. note:: The previous more verbose format is still supported:\n   ``{% blocktrans with book|title as book_t and author|title as author_t %}``\n\n.. versionchanged:: 1.4\n\nIf resolving one of the block arguments fails, blocktrans will fall back to\nthe default language by deactivating the currently active language\ntemporarily with the :func:`~django.utils.translation.deactivate_all`\nfunction.\n\nThis tag also provides for pluralization. To use it:\n\n* Designate and bind a counter value with the name ``count``. This value will\n  be the one used to select the right plural form.\n\n* Specify both the singular and plural forms separating them with the\n  ``{% plural %}`` tag within the ``{% blocktrans %}`` and\n  ``{% endblocktrans %}`` tags.\n\nAn example::\n\n    {% blocktrans count counter=list|length %}\n    There is only one {{ name }} object.\n    {% plural %}\n    There are {{ counter }} {{ name }} objects.\n    {% endblocktrans %}\n\nA more complex example::\n\n    {% blocktrans with amount=article.price count years=i.length %}\n    That will cost $ {{ amount }} per year.\n    {% plural %}\n    That will cost $ {{ amount }} per {{ years }} years.\n    {% endblocktrans %}\n\nWhen you use both the pluralization feature and bind values to local variables\nin addition to the counter value, keep in mind that the ``blocktrans``\nconstruct is internally converted to an ``ungettext`` call. This means the\nsame :ref:`notes regarding ungettext variables <pluralization-var-notes>`\napply.\n\nReverse URL lookups cannot be carried out within the ``blocktrans`` and should\nbe retrieved (and stored) beforehand::\n\n    {% url 'path.to.view' arg arg2 as the_url %}\n    {% blocktrans %}\n    This is a URL: {{ the_url }}\n    {% endblocktrans %}\n\n.. versionadded:: 1.4\n\n``{% blocktrans %}`` also supports :ref:`contextual\nmarkers<contextual-markers>` using the ``context`` keyword:\n\n.. code-block:: html+django\n\n    {% blocktrans with name=user.username context \"greeting\" %}Hi {{ name }}{% endblocktrans %}\n\n.. _translator-comments-in-templates:\n\nComments for translators in templates\n-------------------------------------\n\nJust like with :ref:`Python code <translator-comments>`, these notes for\ntranslators can be specified using comments, either with the :ttag:`comment`\ntag:\n\n.. code-block:: html+django\n\n    {% comment %}Translators: View verb{% endcomment %}\n    {% trans \"View\" %}\n\n    {% comment %}Translators: Short intro blurb{% endcomment %}\n    <p>{% blocktrans %}A multiline translatable\n    literal.{% endblocktrans %}</p>\n\nor with the ``{#`` ... ``#}`` :ref:`one-line comment constructs <template-comments>`:\n\n.. code-block:: html+django\n\n    {# Translators: Label of a button that triggers search{% endcomment #}\n    <button type=\"submit\">{% trans \"Go\" %}</button>\n\n    {# Translators: This is a text of the base template #}\n    {% blocktrans %}Ambiguous translatable block of text{% endblocktrans %}\n\n.. note:: Just for completeness, these are the corresponding fragments of the\n    resulting ``.po`` file:\n\n    .. code-block:: po\n\n        #. Translators: View verb\n        # path/to/template/file.html:10\n        msgid \"View\"\n        msgstr \"\"\n\n        #. Translators: Short intro blurb\n        # path/to/template/file.html:13\n        msgid \"\"\n        \"A multiline translatable\"\n        \"literal.\"\n        msgstr \"\"\n\n        # ...\n\n        #. Translators: Label of a button that triggers search\n        # path/to/template/file.html:100\n        msgid \"Go\"\n        msgstr \"\"\n\n        #. Translators:\n        # path/to/template/file.html:103\n        msgid \"Ambiguous translatable block of text\"\n        msgstr \"\"\n\n.. _template-translation-vars:\n\nOther tags\n----------\n\nEach ``RequestContext`` has access to three translation-specific variables:\n\n* ``LANGUAGES`` is a list of tuples in which the first element is the\n  :term:`language code` and the second is the language name (translated into\n  the currently active locale).\n\n* ``LANGUAGE_CODE`` is the current user's preferred language, as a string.\n  Example: ``en-us``. (See :ref:`how-django-discovers-language-preference`.)\n\n* ``LANGUAGE_BIDI`` is the current locale's direction. If True, it's a\n  right-to-left language, e.g.: Hebrew, Arabic. If False it's a\n  left-to-right language, e.g.: English, French, German etc.\n\nIf you don't use the ``RequestContext`` extension, you can get those values with\nthree tags::\n\n    {% get_current_language as LANGUAGE_CODE %}\n    {% get_available_languages as LANGUAGES %}\n    {% get_current_language_bidi as LANGUAGE_BIDI %}\n\nThese tags also require a ``{% load i18n %}``.\n\nTranslation hooks are also available within any template block tag that accepts\nconstant strings. In those cases, just use ``_()`` syntax to specify a\ntranslation string::\n\n    {% some_special_tag _(\"Page not found\") value|yesno:_(\"yes,no\") %}\n\nIn this case, both the tag and the filter will see the already-translated\nstring, so they don't need to be aware of translations.\n\n.. note::\n    In this example, the translation infrastructure will be passed the string\n    ``\"yes,no\"``, not the individual strings ``\"yes\"`` and ``\"no\"``. The\n    translated string will need to contain the comma so that the filter\n    parsing code knows how to split up the arguments. For example, a German\n    translator might translate the string ``\"yes,no\"`` as ``\"ja,nein\"``\n    (keeping the comma intact).\n\nYou can also retrieve information about any of the available languages using\nprovided template tags and filters. To get information about a single language,\nuse the ``{% get_language_info %}`` tag::\n\n    {% get_language_info for LANGUAGE_CODE as lang %}\n    {% get_language_info for \"pl\" as lang %}\n\nYou can then access the information::\n\n    Language code: {{ lang.code }}<br />\n    Name of language: {{ lang.name_local }}<br />\n    Name in English: {{ lang.name }}<br />\n    Bi-directional: {{ lang.bidi }}\n\nYou can also use the ``{% get_language_info_list %}`` template tag to retrieve\ninformation for a list of languages (e.g. active languages as specified in\n:setting:`LANGUAGES`). See :ref:`the section about the set_language redirect\nview <set_language-redirect-view>` for an example of how to display a language\nselector using ``{% get_language_info_list %}``.\n\nIn addition to :setting:`LANGUAGES` style nested tuples,\n``{% get_language_info_list %}`` supports simple lists of language codes.\nIf you do this in your view:\n\n.. code-block:: python\n\n    return render_to_response('mytemplate.html', {\n        'available_languages': ['en', 'es', 'fr'],\n    }, RequestContext(request))\n\nyou can iterate over those languages in the template::\n\n  {% get_language_info_list for available_languages as langs %}\n  {% for lang in langs %} ... {% endfor %}\n\nThere are also simple filters available for convenience:\n\n* ``{{ LANGUAGE_CODE|language_name }}`` (\"German\")\n* ``{{ LANGUAGE_CODE|language_name_local }}`` (\"Deutsch\")\n* ``{{ LANGUAGE_CODE|bidi }}`` (False)\n\n.. _Django templates: ../templates_python/\n\nInternationalization: in JavaScript code\n========================================\n\n.. highlightlang:: python\n\nAdding translations to JavaScript poses some problems:\n\n* JavaScript code doesn't have access to a ``gettext`` implementation.\n\n* JavaScript code doesn't have access to ``.po`` or ``.mo`` files; they need to\n  be delivered by the server.\n\n* The translation catalogs for JavaScript should be kept as small as\n  possible.\n\nDjango provides an integrated solution for these problems: It passes the\ntranslations into JavaScript, so you can call ``gettext``, etc., from within\nJavaScript.\n\n.. _javascript_catalog-view:\n\nThe ``javascript_catalog`` view\n-------------------------------\n\n.. module:: django.views.i18n\n\n.. function:: javascript_catalog(request, domain='djangojs', packages=None)\n\nThe main solution to these problems is the\n:meth:`django.views.i18n.javascript_catalog` view, which sends out a JavaScript\ncode library with functions that mimic the ``gettext`` interface, plus an array\nof translation strings. Those translation strings are taken from applications or\nDjango core, according to what you specify in either the ``info_dict`` or the\nURL. Paths listed in :setting:`LOCALE_PATHS` are also included.\n\nYou hook it up like this::\n\n    js_info_dict = {\n        'packages': ('your.app.package',),\n    }\n\n    urlpatterns = patterns('',\n        (r'^jsi18n/$', 'django.views.i18n.javascript_catalog', js_info_dict),\n    )\n\nEach string in ``packages`` should be in Python dotted-package syntax (the\nsame format as the strings in :setting:`INSTALLED_APPS`) and should refer to a\npackage that contains a ``locale`` directory. If you specify multiple packages,\nall those catalogs are merged into one catalog. This is useful if you have\nJavaScript that uses strings from different applications.\n\nThe precedence of translations is such that the packages appearing later in the\n``packages`` argument have higher precedence than the ones appearing at the\nbeginning, this is important in the case of clashing translations for the same\nliteral.\n\nBy default, the view uses the ``djangojs`` gettext domain. This can be\nchanged by altering the ``domain`` argument.\n\nYou can make the view dynamic by putting the packages into the URL pattern::\n\n    urlpatterns = patterns('',\n        (r'^jsi18n/(?P<packages>\\S+?)/$', 'django.views.i18n.javascript_catalog'),\n    )\n\nWith this, you specify the packages as a list of package names delimited by '+'\nsigns in the URL. This is especially useful if your pages use code from\ndifferent apps and this changes often and you don't want to pull in one big\ncatalog file. As a security measure, these values can only be either\n``django.conf`` or any package from the :setting:`INSTALLED_APPS` setting.\n\nThe JavaScript translations found in the paths listed in the\n:setting:`LOCALE_PATHS` setting are also always included. To keep consistency\nwith the translations lookup order algorithm used for Python and templates, the\ndirectories listed in :setting:`LOCALE_PATHS` have the highest precedence with\nthe ones appearing first having higher precedence than the ones appearing\nlater.\n\nUsing the JavaScript translation catalog\n----------------------------------------\n\n.. highlightlang:: javascript\n\nTo use the catalog, just pull in the dynamically generated script like this:\n\n.. code-block:: html+django\n\n    <script type=\"text/javascript\" src=\"{% url 'django.views.i18n.javascript_catalog' %}\"></script>\n\nThis uses reverse URL lookup to find the URL of the JavaScript catalog view.\nWhen the catalog is loaded, your JavaScript code can use the standard\n``gettext`` interface to access it::\n\n    document.write(gettext('this is to be translated'));\n\nThere is also an ``ngettext`` interface::\n\n    var object_cnt = 1 // or 0, or 2, or 3, ...\n    s = ngettext('literal for the singular case',\n            'literal for the plural case', object_cnt);\n\nand even a string interpolation function::\n\n    function interpolate(fmt, obj, named);\n\nThe interpolation syntax is borrowed from Python, so the ``interpolate``\nfunction supports both positional and named interpolation:\n\n* Positional interpolation: ``obj`` contains a JavaScript Array object\n  whose elements values are then sequentially interpolated in their\n  corresponding ``fmt`` placeholders in the same order they appear.\n  For example::\n\n    fmts = ngettext('There is %s object. Remaining: %s',\n            'There are %s objects. Remaining: %s', 11);\n    s = interpolate(fmts, [11, 20]);\n    // s is 'There are 11 objects. Remaining: 20'\n\n* Named interpolation: This mode is selected by passing the optional\n  boolean ``named`` parameter as true. ``obj`` contains a JavaScript\n  object or associative array. For example::\n\n    d = {\n        count: 10,\n        total: 50\n    };\n\n    fmts = ngettext('Total: %(total)s, there is %(count)s object',\n    'there are %(count)s of a total of %(total)s objects', d.count);\n    s = interpolate(fmts, d, true);\n\nYou shouldn't go over the top with string interpolation, though: this is still\nJavaScript, so the code has to make repeated regular-expression substitutions.\nThis isn't as fast as string interpolation in Python, so keep it to those\ncases where you really need it (for example, in conjunction with ``ngettext``\nto produce proper pluralizations).\n\nNote on performance\n-------------------\n\nThe :func:`~django.views.i18n.javascript_catalog` view generates the catalog\nfrom ``.mo`` files on every request. Since its output is constant — at least\nfor a given version of a site — it's a good candidate for caching.\n\nServer-side caching will reduce CPU load. It's easily implemented with the\n:func:`~django.views.decorators.cache.cache_page` decorator. To trigger cache\ninvalidation when your translations change, provide a version-dependant key\nprefix, as shown in the example below, or map the view at a version-dependant\nURL.\n\n.. code-block:: python\n\n    from django.views.decorators.cache import cache_page\n    from django.views.i18n import javascript_catalog\n\n    # The value returned by get_version() must change when translations change.\n    @cache_page(86400, key_prefix='js18n-%s' % get_version())\n    def cached_javascript_catalog(request, domain='djangojs', packages=None):\n        return javascript_catalog(request, domain, packages)\n\nClient-side caching will save bandwidth and make your site load faster. If\nyou're using ETags (:setting:`USE_ETAGS = True <USE_ETAGS>`), you're already\ncovered. Otherwise, you can apply :ref:`conditional decorators\n<conditional-decorators>`. In the following example, the cache is invalidated\nwhenever your restart your application server.\n\n.. code-block:: python\n\n    from django.utils import timezone\n    from django.views.decorators.http import last_modified\n    from django.views.i18n import javascript_catalog\n\n    last_modified_date = timezone.now()\n    @last_modified(lambda req, **kw: last_modified_date)\n    def cached_javascript_catalog(request, domain='djangojs', packages=None):\n        return javascript_catalog(request, domain, packages)\n\nYou can even pre-generate the javascript catalog as part of your deployment\nprocedure and serve it as a static file. This radical technique is implemented\nin django-statici18n_.\n\n.. _django-statici18n: http://django-statici18n.readthedocs.org/en/latest/\n\n.. _url-internationalization:\n\nInternationalization: in URL patterns\n=====================================\n\n..  versionadded:: 1.4\n\n.. module:: django.conf.urls.i18n\n\nDjango provides two mechanisms to internationalize URL patterns:\n\n* Adding the language prefix to the root of the URL patterns to make it\n  possible for :class:`~django.middleware.locale.LocaleMiddleware` to detect\n  the language to activate from the requested URL.\n\n* Making URL patterns themselves translatable via the\n  :func:`django.utils.translation.ugettext_lazy()` function.\n\n.. warning::\n\n    Using either one of these features requires that an active language be set\n    for each request; in other words, you need to have\n    :class:`django.middleware.locale.LocaleMiddleware` in your\n    :setting:`MIDDLEWARE_CLASSES` setting.\n\nLanguage prefix in URL patterns\n-------------------------------\n\n.. function:: i18n_patterns(prefix, pattern_description, ...)\n\nThis function can be used in your root URLconf as a replacement for the normal\n:func:`django.conf.urls.patterns` function. Django will automatically\nprepend the current active language code to all url patterns defined within\n:func:`~django.conf.urls.i18n.i18n_patterns`. Example URL patterns::\n\n    from django.conf.urls import patterns, include, url\n    from django.conf.urls.i18n import i18n_patterns\n\n    urlpatterns = patterns(''\n        url(r'^sitemap\\.xml$', 'sitemap.view', name='sitemap_xml'),\n    )\n\n    news_patterns = patterns(''\n        url(r'^$', 'news.views.index', name='index'),\n        url(r'^category/(?P<slug>[\\w-]+)/$', 'news.views.category', name='category'),\n        url(r'^(?P<slug>[\\w-]+)/$', 'news.views.details', name='detail'),\n    )\n\n    urlpatterns += i18n_patterns('',\n        url(r'^about/$', 'about.view', name='about'),\n        url(r'^news/', include(news_patterns, namespace='news')),\n    )\n\n\nAfter defining these URL patterns, Django will automatically add the\nlanguage prefix to the URL patterns that were added by the ``i18n_patterns``\nfunction. Example::\n\n    from django.core.urlresolvers import reverse\n    from django.utils.translation import activate\n\n    >>> activate('en')\n    >>> reverse('sitemap_xml')\n    '/sitemap.xml'\n    >>> reverse('news:index')\n    '/en/news/'\n\n    >>> activate('nl')\n    >>> reverse('news:detail', kwargs={'slug': 'news-slug'})\n    '/nl/news/news-slug/'\n\n.. warning::\n\n    :func:`~django.conf.urls.i18n.i18n_patterns` is only allowed in your root\n    URLconf. Using it within an included URLconf will throw an\n    :exc:`~django.core.exceptions.ImproperlyConfigured` exception.\n\n.. warning::\n\n    Ensure that you don't have non-prefixed URL patterns that might collide\n    with an automatically-added language prefix.\n\n\nTranslating URL patterns\n------------------------\n\nURL patterns can also be marked translatable using the\n:func:`~django.utils.translation.ugettext_lazy` function. Example::\n\n    from django.conf.urls import patterns, include, url\n    from django.conf.urls.i18n import i18n_patterns\n    from django.utils.translation import ugettext_lazy as _\n\n    urlpatterns = patterns(''\n        url(r'^sitemap\\.xml$', 'sitemap.view', name='sitemap_xml'),\n    )\n\n    news_patterns = patterns(''\n        url(r'^$', 'news.views.index', name='index'),\n        url(_(r'^category/(?P<slug>[\\w-]+)/$'), 'news.views.category', name='category'),\n        url(r'^(?P<slug>[\\w-]+)/$', 'news.views.details', name='detail'),\n    )\n\n    urlpatterns += i18n_patterns('',\n        url(_(r'^about/$'), 'about.view', name='about'),\n        url(_(r'^news/'), include(news_patterns, namespace='news')),\n    )\n\n\nAfter you've created the translations, the\n:func:`~django.core.urlresolvers.reverse` function will return the URL in the\nactive language. Example::\n\n    from django.core.urlresolvers import reverse\n    from django.utils.translation import activate\n\n    >>> activate('en')\n    >>> reverse('news:category', kwargs={'slug': 'recent'})\n    '/en/news/category/recent/'\n\n    >>> activate('nl')\n    >>> reverse('news:category', kwargs={'slug': 'recent'})\n    '/nl/nieuws/categorie/recent/'\n\n.. warning::\n\n    In most cases, it's best to use translated URLs only within a\n    language-code-prefixed block of patterns (using\n    :func:`~django.conf.urls.i18n.i18n_patterns`), to avoid the possibility\n    that a carelessly translated URL causes a collision with a non-translated\n    URL pattern.\n\n.. _reversing_in_templates:\n\n.. templatetag:: language\n\nReversing in templates\n----------------------\n\nIf localized URLs get reversed in templates they always use the current\nlanguage. To link to a URL in another language use the ``language``\ntemplate tag. It enables the given language in the enclosed template section:\n\n.. code-block:: html+django\n\n    {% load i18n %}\n\n    {% get_available_languages as languages %}\n\n    {% trans \"View this category in:\" %}\n    {% for lang_code, lang_name in languages %}\n        {% language lang_code %}\n        <a href=\"{% url 'category' slug=category.slug %}\">{{ lang_name }}</a>\n        {% endlanguage %}\n    {% endfor %}\n\nThe :ttag:`language` tag expects the language code as the only argument.\n\n.. _how-to-create-language-files:\n\nLocalization: how to create language files\n==========================================\n\nOnce the string literals of an application have been tagged for later\ntranslation, the translation themselves need to be written (or obtained). Here's\nhow that works.\n\n.. _locale-restrictions:\n\n.. admonition:: Locale restrictions\n\n    Django does not support localizing your application into a locale for which\n    Django itself has not been translated. In this case, it will ignore your\n    translation files. If you were to try this and Django supported it, you\n    would inevitably see a mixture of translated strings (from your application)\n    and English strings (from Django itself). If you want to support a locale\n    for your application that is not already part of Django, you'll need to make\n    at least a minimal translation of the Django core.\n\n    A good starting point is to copy the Django English ``.po`` file and to\n    translate at least some :term:`translation strings <translation string>`.\n\nMessage files\n-------------\n\nThe first step is to create a :term:`message file` for a new language. A message\nfile is a plain-text file, representing a single language, that contains all\navailable translation strings and how they should be represented in the given\nlanguage. Message files have a ``.po`` file extension.\n\nDjango comes with a tool, :djadmin:`django-admin.py makemessages\n<makemessages>`, that automates the creation and upkeep of these files.\n\n.. admonition:: Gettext utilities\n\n    The ``makemessages`` command (and ``compilemessages`` discussed later) use\n    commands from the GNU gettext toolset: ``xgettext``, ``msgfmt``,\n    ``msgmerge`` and ``msguniq``.\n\n    The minimum version of the ``gettext`` utilities supported is 0.15.\n\nTo create or update a message file, run this command::\n\n    django-admin.py makemessages -l de\n\n...where ``de`` is the language code for the message file you want to create.\nThe language code, in this case, is in :term:`locale format<locale name>`. For\nexample, it's ``pt_BR`` for Brazilian Portuguese and ``de_AT`` for Austrian\nGerman.\n\nThe script should be run from one of two places:\n\n* The root directory of your Django project.\n* The root directory of your Django app.\n\nThe script runs over your project source tree or your application source tree\nand pulls out all strings marked for translation. It creates (or updates) a\nmessage file in the directory ``locale/LANG/LC_MESSAGES``. In the ``de``\nexample, the file will be ``locale/de/LC_MESSAGES/django.po``.\n\nBy default :djadmin:`django-admin.py makemessages <makemessages>` examines every\nfile that has the ``.html`` or ``.txt`` file extension. In case you want to\noverride that default, use the ``--extension`` or ``-e`` option to specify the\nfile extensions to examine::\n\n    django-admin.py makemessages -l de -e txt\n\nSeparate multiple extensions with commas and/or use ``-e`` or ``--extension``\nmultiple times::\n\n    django-admin.py makemessages -l de -e html,txt -e xml\n\n.. warning::\n\n    When :ref:`creating message files from JavaScript source code\n    <creating-message-files-from-js-code>` you need to use the special\n    'djangojs' domain, **not** ``-e js``.\n\n.. admonition:: No gettext?\n\n    If you don't have the ``gettext`` utilities installed,\n    :djadmin:`makemessages` will create empty files. If that's the case, either\n    install the ``gettext`` utilities or just copy the English message file\n    (``locale/en/LC_MESSAGES/django.po``) if available and use it as a starting\n    point; it's just an empty translation file.\n\n.. admonition:: Working on Windows?\n\n   If you're using Windows and need to install the GNU gettext utilities so\n   :djadmin:`makemessages` works, see :ref:`gettext_on_windows` for more\n   information.\n\nThe format of ``.po`` files is straightforward. Each ``.po`` file contains a\nsmall bit of metadata, such as the translation maintainer's contact\ninformation, but the bulk of the file is a list of **messages** -- simple\nmappings between translation strings and the actual translated text for the\nparticular language.\n\nFor example, if your Django app contained a translation string for the text\n``\"Welcome to my site.\"``, like so::\n\n    _(\"Welcome to my site.\")\n\n...then :djadmin:`django-admin.py makemessages <makemessages>` will have created\na ``.po`` file containing the following snippet -- a message::\n\n    #: path/to/python/module.py:23\n    msgid \"Welcome to my site.\"\n    msgstr \"\"\n\nA quick explanation:\n\n* ``msgid`` is the translation string, which appears in the source. Don't\n  change it.\n* ``msgstr`` is where you put the language-specific translation. It starts\n  out empty, so it's your responsibility to change it. Make sure you keep\n  the quotes around your translation.\n* As a convenience, each message includes, in the form of a comment line\n  prefixed with ``#`` and located above the ``msgid`` line, the filename and\n  line number from which the translation string was gleaned.\n\nLong messages are a special case. There, the first string directly after the\n``msgstr`` (or ``msgid``) is an empty string. Then the content itself will be\nwritten over the next few lines as one string per line. Those strings are\ndirectly concatenated. Don't forget trailing spaces within the strings;\notherwise, they'll be tacked together without whitespace!\n\n.. admonition:: Mind your charset\n\n    When creating a PO file with your favorite text editor, first edit\n    the charset line (search for ``\"CHARSET\"``) and set it to the charset\n    you'll be using to edit the content. Due to the way the ``gettext`` tools\n    work internally and because we want to allow non-ASCII source strings in\n    Django's core and your applications, you **must** use UTF-8 as the encoding\n    for your PO file. This means that everybody will be using the same\n    encoding, which is important when Django processes the PO files.\n\nTo reexamine all source code and templates for new translation strings and\nupdate all message files for **all** languages, run this::\n\n    django-admin.py makemessages -a\n\nCompiling message files\n-----------------------\n\nAfter you create your message file -- and each time you make changes to it --\nyou'll need to compile it into a more efficient form, for use by ``gettext``. Do\nthis with the :djadmin:`django-admin.py compilemessages <compilemessages>`\nutility.\n\nThis tool runs over all available ``.po`` files and creates ``.mo`` files, which\nare binary files optimized for use by ``gettext``. In the same directory from\nwhich you ran :djadmin:`django-admin.py makemessages <makemessages>`, run :djadmin:`django-admin.py compilemessages <compilemessages>` like this::\n\n   django-admin.py compilemessages\n\nThat's it. Your translations are ready for use.\n\n.. admonition:: Working on Windows?\n\n   If you're using Windows and need to install the GNU gettext utilities so\n   :djadmin:`django-admin.py compilemessages <compilemessages>` works see\n   :ref:`gettext_on_windows` for more information.\n\n.. admonition:: .po files: Encoding and BOM usage.\n\n   Django only supports ``.po`` files encoded in UTF-8 and without any BOM\n   (Byte Order Mark) so if your text editor adds such marks to the beginning of\n   files by default then you will need to reconfigure it.\n\n.. _creating-message-files-from-js-code:\n\nCreating message files from JavaScript source code\n--------------------------------------------------\n\nYou create and update the message files the same way as the other Django message\nfiles -- with the :djadmin:`django-admin.py makemessages <makemessages>` tool.\nThe only difference is you need to explicitly specify what in gettext parlance\nis known as a domain in this case the ``djangojs`` domain, by providing a ``-d\ndjangojs`` parameter, like this::\n\n    django-admin.py makemessages -d djangojs -l de\n\nThis would create or update the message file for JavaScript for German. After\nupdating message files, just run :djadmin:`django-admin.py compilemessages\n<compilemessages>` the same way as you do with normal Django message files.\n\n.. _gettext_on_windows:\n\n``gettext`` on Windows\n----------------------\n\nThis is only needed for people who either want to extract message IDs or compile\nmessage files (``.po``). Translation work itself just involves editing existing\nfiles of this type, but if you want to create your own message files, or want to\ntest or compile a changed message file, you will need the ``gettext`` utilities:\n\n* Download the following zip files from the GNOME servers\n  http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/ or from one\n  of its mirrors_\n\n  * ``gettext-runtime-X.zip``\n  * ``gettext-tools-X.zip``\n\n  ``X`` is the version number, we are requiring ``0.15`` or higher.\n\n* Extract the contents of the ``bin\\`` directories in both files to the\n  same folder on your system (i.e. ``C:\\Program Files\\gettext-utils``)\n\n* Update the system PATH:\n\n  * ``Control Panel > System > Advanced > Environment Variables``.\n  * In the ``System variables`` list, click ``Path``, click ``Edit``.\n  * Add ``;C:\\Program Files\\gettext-utils\\bin`` at the end of the\n    ``Variable value`` field.\n\n.. _mirrors: http://ftp.gnome.org/pub/GNOME/MIRRORS\n\nYou may also use ``gettext`` binaries you have obtained elsewhere, so long as\nthe ``xgettext --version`` command works properly. Do not attempt to use Django\ntranslation utilities with a ``gettext`` package if the command ``xgettext\n--version`` entered at a Windows command prompt causes a popup window saying\n\"xgettext.exe has generated errors and will be closed by Windows\".\n\n\nMiscellaneous\n=============\n\n.. _set_language-redirect-view:\n\nThe ``set_language`` redirect view\n----------------------------------\n\n.. highlightlang:: python\n\n.. currentmodule:: django.views.i18n\n\n.. function:: set_language(request)\n\nAs a convenience, Django comes with a view, :func:`django.views.i18n.set_language`,\nthat sets a user's language preference and redirects to a given URL or, by default,\nback to the previous page.\n\nMake sure that the following item is in your\n:setting:`TEMPLATE_CONTEXT_PROCESSORS` list in your settings file::\n\n    'django.core.context_processors.i18n'\n\nActivate this view by adding the following line to your URLconf::\n\n    (r'^i18n/', include('django.conf.urls.i18n')),\n\n(Note that this example makes the view available at ``/i18n/setlang/``.)\n\n.. warning::\n\n    Make sure that you don't include the above URL within\n    :func:`~django.conf.urls.i18n.i18n_patterns` - it needs to be\n    language-independent itself to work correctly.\n\nThe view expects to be called via the ``POST`` method, with a ``language``\nparameter set in request. If session support is enabled, the view\nsaves the language choice in the user's session. Otherwise, it saves the\nlanguage choice in a cookie that is by default named ``django_language``.\n(The name can be changed through the :setting:`LANGUAGE_COOKIE_NAME` setting.)\n\nAfter setting the language choice, Django redirects the user, following this\nalgorithm:\n\n* Django looks for a ``next`` parameter in the ``POST`` data.\n* If that doesn't exist, or is empty, Django tries the URL in the\n  ``Referrer`` header.\n* If that's empty -- say, if a user's browser suppresses that header --\n  then the user will be redirected to ``/`` (the site root) as a fallback.\n\nHere's example HTML template code:\n\n.. code-block:: html+django\n\n    <form action=\"{% url 'set_language' %}\" method=\"post\">\n    {% csrf_token %}\n    <input name=\"next\" type=\"hidden\" value=\"{{ redirect_to }}\" />\n    <select name=\"language\">\n    {% get_language_info_list for LANGUAGES as languages %}\n    {% for language in languages %}\n    <option value=\"{{ language.code }}\">{{ language.name_local }} ({{ language.code }})</option>\n    {% endfor %}\n    </select>\n    <input type=\"submit\" value=\"Go\" />\n    </form>\n\nIn this example, Django looks up the URL of the page to which the user will be\nredirected in the ``redirect_to`` context variable.\n\nUsing translations outside views and templates\n----------------------------------------------\n\nWhile Django provides a rich set of i18n tools for use in views and templates,\nit does not restrict the usage to Django-specific code. The Django translation\nmechanisms can be used to translate arbitrary texts to any language that is\nsupported by Django (as long as an appropriate translation catalog exists, of\ncourse). You can load a translation catalog, activate it and translate text to\nlanguage of your choice, but remember to switch back to original language, as\nactivating a translation catalog is done on per-thread basis and such change\nwill affect code running in the same thread.\n\nFor example::\n\n    from django.utils import translation\n    def welcome_translated(language):\n        cur_language = translation.get_language()\n        try:\n            translation.activate(language)\n            text = translation.ugettext('welcome')\n        finally:\n            translation.activate(cur_language)\n        return text\n\nCalling this function with the value 'de' will give you ``\"Willkommen\"``,\nregardless of :setting:`LANGUAGE_CODE` and language set by middleware.\n\nFunctions of particular interest are ``django.utils.translation.get_language()``\nwhich returns the language used in the current thread,\n``django.utils.translation.activate()`` which activates a translation catalog\nfor the current thread, and ``django.utils.translation.check_for_language()``\nwhich checks if the given language is supported by Django.\n\nImplementation notes\n====================\n\n.. _specialties-of-django-i18n:\n\nSpecialties of Django translation\n---------------------------------\n\nDjango's translation machinery uses the standard ``gettext`` module that comes\nwith Python. If you know ``gettext``, you might note these specialties in the\nway Django does translation:\n\n* The string domain is ``django`` or ``djangojs``. This string domain is\n  used to differentiate between different programs that store their data\n  in a common message-file library (usually ``/usr/share/locale/``). The\n  ``django`` domain is used for python and template translation strings\n  and is loaded into the global translation catalogs. The ``djangojs``\n  domain is only used for JavaScript translation catalogs to make sure\n  that those are as small as possible.\n* Django doesn't use ``xgettext`` alone. It uses Python wrappers around\n  ``xgettext`` and ``msgfmt``. This is mostly for convenience.\n\n.. _how-django-discovers-language-preference:\n\nHow Django discovers language preference\n----------------------------------------\n\nOnce you've prepared your translations -- or, if you just want to use the\ntranslations that come with Django -- you'll just need to activate translation\nfor your app.\n\nBehind the scenes, Django has a very flexible model of deciding which language\nshould be used -- installation-wide, for a particular user, or both.\n\nTo set an installation-wide language preference, set :setting:`LANGUAGE_CODE`.\nDjango uses this language as the default translation -- the final attempt if no\nother translator finds a translation.\n\nIf all you want to do is run Django with your native language, and a language\nfile is available for it, all you need to do is set :setting:`LANGUAGE_CODE`.\n\nIf you want to let each individual user specify which language he or she\nprefers, use ``LocaleMiddleware``. ``LocaleMiddleware`` enables language\nselection based on data from the request. It customizes content for each user.\n\nTo use ``LocaleMiddleware``, add ``'django.middleware.locale.LocaleMiddleware'``\nto your :setting:`MIDDLEWARE_CLASSES` setting. Because middleware order\nmatters, you should follow these guidelines:\n\n* Make sure it's one of the first middlewares installed.\n* It should come after ``SessionMiddleware``, because ``LocaleMiddleware``\n  makes use of session data. And it should come before ``CommonMiddleware``\n  because ``CommonMiddleware`` needs an activated language in order\n  to resolve the requested URL.\n* If you use ``CacheMiddleware``, put ``LocaleMiddleware`` after it.\n\nFor example, your :setting:`MIDDLEWARE_CLASSES` might look like this::\n\n    MIDDLEWARE_CLASSES = (\n       'django.contrib.sessions.middleware.SessionMiddleware',\n       'django.middleware.locale.LocaleMiddleware',\n       'django.middleware.common.CommonMiddleware',\n    )\n\n(For more on middleware, see the :doc:`middleware documentation\n</topics/http/middleware>`.)\n\n``LocaleMiddleware`` tries to determine the user's language preference by\nfollowing this algorithm:\n\n.. versionchanged:: 1.4\n\n* First, it looks for the language prefix in the requested URL.  This is\n  only performed when you are using the ``i18n_patterns`` function in your\n  root URLconf. See :ref:`url-internationalization` for more information\n  about the language prefix and how to internationalize URL patterns.\n\n* Failing that, it looks for a ``django_language`` key in the current\n  user's session.\n\n* Failing that, it looks for a cookie.\n\n  The name of the cookie used is set by the :setting:`LANGUAGE_COOKIE_NAME`\n  setting. (The default name is ``django_language``.)\n\n* Failing that, it looks at the ``Accept-Language`` HTTP header. This\n  header is sent by your browser and tells the server which language(s) you\n  prefer, in order by priority. Django tries each language in the header\n  until it finds one with available translations.\n\n* Failing that, it uses the global :setting:`LANGUAGE_CODE` setting.\n\n.. _locale-middleware-notes:\n\nNotes:\n\n* In each of these places, the language preference is expected to be in the\n  standard :term:`language format<language code>`, as a string. For example,\n  Brazilian Portuguese is ``pt-br``.\n\n* If a base language is available but the sublanguage specified is not,\n  Django uses the base language. For example, if a user specifies ``de-at``\n  (Austrian German) but Django only has ``de`` available, Django uses\n  ``de``.\n\n* Only languages listed in the :setting:`LANGUAGES` setting can be selected.\n  If you want to restrict the language selection to a subset of provided\n  languages (because your application doesn't provide all those languages),\n  set :setting:`LANGUAGES` to a list of languages. For example::\n\n      LANGUAGES = (\n        ('de', _('German')),\n        ('en', _('English')),\n      )\n\n  This example restricts languages that are available for automatic\n  selection to German and English (and any sublanguage, like de-ch or\n  en-us).\n\n* If you define a custom :setting:`LANGUAGES` setting, as explained in the\n  previous bullet, it's OK to mark the languages as translation strings\n  -- but use a \"dummy\" ``ugettext()`` function, not the one in\n  ``django.utils.translation``. You should *never* import\n  ``django.utils.translation`` from within your settings file, because that\n  module in itself depends on the settings, and that would cause a circular\n  import.\n\n  The solution is to use a \"dummy\" ``ugettext()`` function. Here's a sample\n  settings file::\n\n      ugettext = lambda s: s\n\n      LANGUAGES = (\n          ('de', ugettext('German')),\n          ('en', ugettext('English')),\n      )\n\n  With this arrangement, :djadmin:`django-admin.py makemessages <makemessages>`\n  will still find and mark these strings for translation, but the translation\n  won't happen at runtime -- so you'll have to remember to wrap the languages in\n  the *real* ``ugettext()`` in any code that uses :setting:`LANGUAGES` at\n  runtime.\n\n* The ``LocaleMiddleware`` can only select languages for which there is a\n  Django-provided base translation. If you want to provide translations\n  for your application that aren't already in the set of translations\n  in Django's source tree, you'll want to provide at least a basic\n  one as described in the :ref:`Locale restrictions<locale-restrictions>`\n  note.\n\nOnce ``LocaleMiddleware`` determines the user's preference, it makes this\npreference available as ``request.LANGUAGE_CODE`` for each\n:class:`~django.http.HttpRequest`. Feel free to read this value in your view\ncode. Here's a simple example::\n\n    def hello_world(request, count):\n        if request.LANGUAGE_CODE == 'de-at':\n            return HttpResponse(\"You prefer to read Austrian German.\")\n        else:\n            return HttpResponse(\"You prefer to read another language.\")\n\nNote that, with static (middleware-less) translation, the language is in\n``settings.LANGUAGE_CODE``, while with dynamic (middleware) translation, it's\nin ``request.LANGUAGE_CODE``.\n\n.. _settings file: ../settings/\n.. _middleware documentation: ../middleware/\n.. _session: ../sessions/\n.. _request object: ../request_response/#httprequest-objects\n\n.. _how-django-discovers-translations:\n\nHow Django discovers translations\n---------------------------------\n\nAt runtime, Django builds an in-memory unified catalog of literals-translations.\nTo achieve this it looks for translations by following this algorithm regarding\nthe order in which it examines the different file paths to load the compiled\n:term:`message files <message file>` (``.mo``) and the precedence of multiple\ntranslations for the same literal:\n\n1. The directories listed in :setting:`LOCALE_PATHS` have the highest\n   precedence, with the ones appearing first having higher precedence than\n   the ones appearing later.\n2. Then, it looks for and uses if it exists a ``locale`` directory in each\n   of the installed apps listed in :setting:`INSTALLED_APPS`.  The ones\n   appearing first have higher precedence than the ones appearing later.\n3. Finally, the Django-provided base translation in ``django/conf/locale``\n   is used as a fallback.\n\n.. seealso::\n\n    The translations for literals included in JavaScript assets are looked up\n    following a similar but not identical algorithm. See the\n    :ref:`javascript_catalog view documentation <javascript_catalog-view>` for\n    more details.\n\nIn all cases the name of the directory containing the translation is expected to\nbe named using :term:`locale name` notation. E.g. ``de``, ``pt_BR``, ``es_AR``,\netc.\n\nThis way, you can write applications that include their own translations, and\nyou can override base translations in your project. Or, you can just build\na big project out of several apps and put all translations into one big common\nmessage file specific to the project you are composing. The choice is yours.\n\nAll message file repositories are structured the same way. They are:\n\n* All paths listed in :setting:`LOCALE_PATHS` in your settings file are\n  searched for ``<language>/LC_MESSAGES/django.(po|mo)``\n* ``$APPPATH/locale/<language>/LC_MESSAGES/django.(po|mo)``\n* ``$PYTHONPATH/django/conf/locale/<language>/LC_MESSAGES/django.(po|mo)``\n\nTo create message files, you use the :djadmin:`django-admin.py makemessages <makemessages>`\ntool. You only need to be in the same directory where the ``locale/`` directory\nis located. And you use :djadmin:`django-admin.py compilemessages <compilemessages>`\nto produce the binary ``.mo`` files that are used by ``gettext``.\n\nYou can also run :djadmin:`django-admin.py compilemessages\n--settings=path.to.settings <compilemessages>` to make the compiler process all\nthe directories in your :setting:`LOCALE_PATHS` setting.\n\nFinally, you should give some thought to the structure of your translation\nfiles. If your applications need to be delivered to other users and will be used\nin other projects, you might want to use app-specific translations. But using\napp-specific translations and project-specific translations could produce weird\nproblems with :djadmin:`makemessages`: it will traverse all directories below\nthe current path and so might put message IDs into a unified, common message\nfile for the current project that are already in application message files.\n\nThe easiest way out is to store applications that are not part of the project\n(and so carry their own translations) outside the project tree. That way,\n:djadmin:`django-admin.py makemessages <makemessages>`, when ran on a project\nlevel will only extract strings that are connected to your explicit project and\nnot strings that are distributed independently.\n"
  },
  {
    "path": "Django-1.5.1/docs/topics/index.txt",
    "content": "Using Django\n============\n\nIntroductions to all the key parts of Django you'll need to know:\n\n.. toctree::\n   :maxdepth: 1\n\n   install\n   db/index\n   http/index\n   forms/index\n   templates\n   class-based-views/index\n   files\n   testing/index\n   auth/index\n   cache\n   conditional-view-processing\n   signing\n   email\n   i18n/index\n   logging\n   pagination\n   python3\n   security\n   serialization\n   settings\n   signals\n"
  },
  {
    "path": "Django-1.5.1/docs/topics/install.txt",
    "content": "=====================\nHow to install Django\n=====================\n\nThis document will get you up and running with Django.\n\nInstall Python\n==============\n\nBeing a Python Web framework, Django requires Python.\n\nIt works with any Python version from 2.6.5 to 2.7. It also features\nexperimental support for versions from 3.2.3 to 3.3.\n\nGet Python at http://www.python.org. If you're running Linux or Mac OS X, you\nprobably already have it installed.\n\n.. admonition:: Django on Jython\n\n    If you use Jython_ (a Python implementation for the Java platform), you'll\n    need to follow a few additional steps. See :doc:`/howto/jython` for details.\n\n.. _jython: http://jython.org/\n\n.. admonition:: Python on Windows\n\n    On Windows, you might need to adjust your ``PATH`` environment variable\n    to include paths to Python executable and additional scripts. For example,\n    if your Python is installed in ``C:\\Python27\\``, the following paths need\n    to be added to ``PATH``::\n\n        C:\\Python27\\;C:\\Python27\\Scripts;\n\nInstall Apache and mod_wsgi\n=============================\n\nIf you just want to experiment with Django, skip ahead to the next\nsection; Django includes a lightweight web server you can use for\ntesting, so you won't need to set up Apache until you're ready to\ndeploy Django in production.\n\nIf you want to use Django on a production site, use `Apache`_ with\n`mod_wsgi`_. mod_wsgi can operate in one of two modes: an embedded\nmode and a daemon mode. In embedded mode, mod_wsgi is similar to\nmod_perl -- it embeds Python within Apache and loads Python code into\nmemory when the server starts. Code stays in memory throughout the\nlife of an Apache process, which leads to significant performance\ngains over other server arrangements. In daemon mode, mod_wsgi spawns\nan independent daemon process that handles requests. The daemon\nprocess can run as a different user than the Web server, possibly\nleading to improved security, and the daemon process can be restarted\nwithout restarting the entire Apache Web server, possibly making\nrefreshing your codebase more seamless. Consult the mod_wsgi\ndocumentation to determine which mode is right for your setup. Make\nsure you have Apache installed, with the mod_wsgi module activated.\nDjango will work with any version of Apache that supports mod_wsgi.\n\nSee :doc:`How to use Django with mod_wsgi </howto/deployment/wsgi/modwsgi>`\nfor information on how to configure mod_wsgi once you have it\ninstalled.\n\nIf you can't use mod_wsgi for some reason, fear not: Django supports many other\ndeployment options. One is :doc:`uWSGI </howto/deployment/wsgi/uwsgi>`; it works\nvery well with `nginx`_. Another is :doc:`FastCGI </howto/deployment/fastcgi>`,\nperfect for using Django with servers other than Apache. Additionally, Django\nfollows the WSGI spec (:pep:`3333`), which allows it to run on a variety of\nserver platforms. See the `server-arrangements wiki page`_ for specific\ninstallation instructions for each platform.\n\n.. _Apache: http://httpd.apache.org/\n.. _nginx: http://nginx.org/\n.. _mod_wsgi: http://code.google.com/p/modwsgi/\n.. _server-arrangements wiki page: https://code.djangoproject.com/wiki/ServerArrangements\n\n.. _database-installation:\n\nGet your database running\n=========================\n\nIf you plan to use Django's database API functionality, you'll need to make\nsure a database server is running. Django supports many different database\nservers and is officially supported with PostgreSQL_, MySQL_, Oracle_ and\nSQLite_.\n\nIf you are developing a simple project or something you don't plan to deploy\nin a production environment, SQLite is generally the simplest option as it\ndoesn't require running a separate server. However, SQLite has many differences\nfrom other databases, so if you are working on something substantial, it's\nrecommended to develop with the same database as you plan on using in\nproduction.\n\nIn addition to the officially supported databases, there are backends provided\nby 3rd parties that allow you to use other databases with Django:\n\n* `Sybase SQL Anywhere`_\n* `IBM DB2`_\n* `Microsoft SQL Server 2005`_\n* Firebird_\n* ODBC_\n\nThe Django versions and ORM features supported by these unofficial backends\nvary considerably. Queries regarding the specific capabilities of these\nunofficial backends, along with any support queries, should be directed to the\nsupport channels provided by each 3rd party project.\n\nIn addition to a database backend, you'll need to make sure your Python\ndatabase bindings are installed.\n\n* If you're using PostgreSQL, you'll need the `postgresql_psycopg2`_ package.\n  You might want to refer to our :ref:`PostgreSQL notes <postgresql-notes>` for\n  further technical details specific to this database.\n\n  If you're on Windows, check out the unofficial `compiled Windows version`_.\n\n* If you're using MySQL, you'll need the ``MySQL-python`` package, version\n  1.2.1p2 or higher. You will also want to read the database-specific\n  :ref:`notes for the MySQL backend <mysql-notes>`.\n\n* If you're using Oracle, you'll need a copy of cx_Oracle_, but please\n  read the database-specific :ref:`notes for the Oracle backend <oracle-notes>`\n  for important information regarding supported versions of both Oracle and\n  ``cx_Oracle``.\n\n* If you're using an unofficial 3rd party backend, please consult the\n  documentation provided for any additional requirements.\n\nIf you plan to use Django's ``manage.py syncdb`` command to automatically\ncreate database tables for your models (after first installing Django and\ncreating a project), you'll need to ensure that Django has permission to create\nand alter tables in the database you're using; if you plan to manually create\nthe tables, you can simply grant Django ``SELECT``, ``INSERT``, ``UPDATE`` and\n``DELETE`` permissions. On some databases, Django will need ``ALTER TABLE``\nprivileges during ``syncdb`` but won't issue ``ALTER TABLE`` statements on a\ntable once ``syncdb`` has created it. After creating a database user with these\npermissions, you'll specify the details in your project's settings file,\nsee :setting:`DATABASES` for details.\n\nIf you're using Django's :doc:`testing framework</topics/testing/index>` to test\ndatabase queries, Django will need permission to create a test database.\n\n.. _PostgreSQL: http://www.postgresql.org/\n.. _MySQL: http://www.mysql.com/\n.. _postgresql_psycopg2: http://initd.org/psycopg/\n.. _compiled Windows version: http://stickpeople.com/projects/python/win-psycopg/\n.. _SQLite: http://www.sqlite.org/\n.. _pysqlite: http://trac.edgewall.org/wiki/PySqlite\n.. _cx_Oracle: http://cx-oracle.sourceforge.net/\n.. _Oracle: http://www.oracle.com/\n.. _Sybase SQL Anywhere: http://code.google.com/p/sqlany-django/\n.. _IBM DB2: http://code.google.com/p/ibm-db/\n.. _Microsoft SQL Server 2005: http://code.google.com/p/django-mssql/\n.. _Firebird: http://code.google.com/p/django-firebird/\n.. _ODBC: http://code.google.com/p/django-pyodbc/\n.. _removing-old-versions-of-django:\n\nRemove any old versions of Django\n=================================\n\nIf you are upgrading your installation of Django from a previous version,\nyou will need to uninstall the old Django version before installing the\nnew version.\n\nIf you installed Django using pip_ or ``easy_install`` previously, installing\nwith pip_ or ``easy_install`` again will automatically take care of the old\nversion, so you don't need to do it yourself.\n\nIf you previously installed Django using ``python setup.py install``,\nuninstalling is as simple as deleting the ``django`` directory from your Python\n``site-packages``. To find the directory you need to remove, you can run the\nfollowing at your shell prompt (not the interactive Python prompt):\n\n.. code-block:: bash\n\n    python -c \"import sys; sys.path = sys.path[1:]; import django; print(django.__path__)\"\n\n\n.. _install-django-code:\n\nInstall the Django code\n=======================\n\nInstallation instructions are slightly different depending on whether you're\ninstalling a distribution-specific package, downloading the latest official\nrelease, or fetching the latest development version.\n\nIt's easy, no matter which way you choose.\n\nInstalling a distribution-specific package\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nCheck the :doc:`distribution specific notes </misc/distributions>` to see if\nyour platform/distribution provides official Django packages/installers.\nDistribution-provided packages will typically allow for automatic installation\nof dependencies and easy upgrade paths.\n\n.. _installing-official-release:\n\nInstalling an official release with ``pip``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThis is the recommended way to install Django.\n\n1. Install pip_. The easiest is to use the `standalone pip installer`_. If your\n   distribution already has ``pip`` installed, you might need to update it if\n   it's outdated. (If it's outdated, you'll know because installation won't\n   work.)\n\n2. (optional) Take a look at virtualenv_ and virtualenvwrapper_. These tools\n   provide isolated Python environments, which are more practical than\n   installing packages systemwide. They also allow installing packages\n   without administrator privileges. It's up to you to decide if you want to\n   learn and use them.\n\n3. If you're using Linux, Mac OS X or some other flavor of Unix, enter the\n   command ``sudo pip install Django`` at the shell prompt. If you're using\n   Windows, start a command shell with administrator privileges and run\n   the command ``pip install Django``. This will install Django in your Python\n   installation's ``site-packages`` directory.\n\n   If you're using a virtualenv, you don't need ``sudo`` or administrator\n   privileges, and this will install Django in the virtualenv's\n   ``site-packages`` directory.\n\n.. _pip: http://www.pip-installer.org/\n.. _virtualenv: http://www.virtualenv.org/\n.. _virtualenvwrapper: http://www.doughellmann.com/docs/virtualenvwrapper/\n.. _standalone pip installer: http://www.pip-installer.org/en/latest/installing.html#using-the-installer\n\nInstalling an official release manually\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n1. Download the latest release from our `download page`_.\n\n2. Untar the downloaded file (e.g. ``tar xzvf Django-X.Y.tar.gz``,\n   where ``X.Y`` is the version number of the latest release).\n   If you're using Windows, you can download the command-line tool\n   bsdtar_ to do this, or you can use a GUI-based tool such as 7-zip_.\n\n3. Change into the directory created in step 2 (e.g. ``cd Django-X.Y``).\n\n4. If you're using Linux, Mac OS X or some other flavor of Unix, enter the\n   command ``sudo python setup.py install`` at the shell prompt. If you're\n   using Windows, start a command shell with administrator privileges and\n   run the command ``python setup.py install``. This will install Django in\n   your Python installation's ``site-packages`` directory.\n\n   .. admonition:: Removing an old version\n\n       If you use this installation technique, it is particularly important\n       that you :ref:`remove any existing\n       installations<removing-old-versions-of-django>` of Django\n       first. Otherwise, you can end up with a broken installation that\n       includes files from previous versions that have since been removed from\n       Django.\n\n.. _download page: https://www.djangoproject.com/download/\n.. _bsdtar: http://gnuwin32.sourceforge.net/packages/bsdtar.htm\n.. _7-zip: http://www.7-zip.org/\n\n.. _installing-development-version:\n\nInstalling the development version\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. admonition:: Tracking Django development\n\n    If you decide to use the latest development version of Django,\n    you'll want to pay close attention to `the development timeline`_,\n    and you'll want to keep an eye on the :ref:`release notes for the\n    upcoming release <development_release_notes>`. This will help you stay\n    on top of any new features you might want to use, as well as any changes\n    you'll need to make to your code when updating your copy of Django.\n    (For stable releases, any necessary changes are documented in the\n    release notes.)\n\n.. _the development timeline: https://code.djangoproject.com/timeline\n\nIf you'd like to be able to update your Django code occasionally with the\nlatest bug fixes and improvements, follow these instructions:\n\n1. Make sure that you have Git_ installed and that you can run its commands\n   from a shell. (Enter ``git help`` at a shell prompt to test this.)\n\n2. Check out Django's main development branch (the 'trunk' or 'master') like\n   so:\n\n   .. code-block:: bash\n\n       git clone git://github.com/django/django.git django-trunk\n\n   This will create a directory ``django-trunk`` in your current directory.\n\n3. Make sure that the Python interpreter can load Django's code. The most\n   convenient way to do this is via pip_. Run the following command:\n\n   .. code-block:: bash\n\n       sudo pip install -e django-trunk/\n\n   (If using a virtualenv_ you can omit ``sudo``.)\n\n   This will make Django's code importable, and will also make the\n   ``django-admin.py`` utility command available. In other words, you're all\n   set!\n\n   If you don't have pip_ available, see the alternative instructions for\n   `installing the development version without pip`_.\n\n.. warning::\n\n    Don't run ``sudo python setup.py install``, because you've already\n    carried out the equivalent actions in step 3.\n\nWhen you want to update your copy of the Django source code, just run the\ncommand ``git pull`` from within the ``django-trunk`` directory. When you do\nthis, Git will automatically download any changes.\n\n.. _Git: http://git-scm.com/\n.. _`modify Python's search path`: http://docs.python.org/install/index.html#modifying-python-s-search-path\n.. _installing-the-development-version-without-pip:\n\nInstalling the development version without pip\n----------------------------------------------\n\nIf you don't have pip_, you can instead manually `modify Python's search\npath`_.\n\nFirst follow steps 1 and 2 above, so that you have a ``django-trunk`` directory\nwith a checkout of Django's latest code in it. Then add a ``.pth`` file\ncontaining the full path to the ``django-trunk`` directory to your system's\n``site-packages`` directory. For example, on a Unix-like system:\n\n.. code-block:: bash\n\n    echo WORKING-DIR/django-trunk > SITE-PACKAGES-DIR/django.pth\n\nIn the above line, change ``WORKING-DIR/django-trunk`` to match the full path\nto your new ``django-trunk`` directory, and change ``SITE-PACKAGES-DIR`` to\nmatch the location of your system's ``site-packages`` directory.\n\nThe location of the ``site-packages`` directory depends on the operating\nsystem, and the location in which Python was installed. To find your system's\n``site-packages`` location, execute the following:\n\n.. code-block:: bash\n\n    python -c \"from distutils.sysconfig import get_python_lib; print(get_python_lib())\"\n\n(Note that this should be run from a shell prompt, not a Python interactive\nprompt.)\n\nSome Debian-based Linux distributions have separate ``site-packages``\ndirectories for user-installed packages, such as when installing Django from\na downloaded tarball. The command listed above will give you the system's\n``site-packages``, the user's directory can be found in ``/usr/local/lib/``\ninstead of ``/usr/lib/``.\n\nNext you need to make the ``django-admin.py`` utility available in your\nshell PATH.\n\nOn Unix-like systems, create a symbolic link to the file\n``django-trunk/django/bin/django-admin.py`` in a directory on your system\npath, such as ``/usr/local/bin``. For example:\n\n.. code-block:: bash\n\n    ln -s WORKING-DIR/django-trunk/django/bin/django-admin.py /usr/local/bin/\n\n(In the above line, change WORKING-DIR to match the full path to your new\n``django-trunk`` directory.)\n\nThis simply lets you type ``django-admin.py`` from within any directory,\nrather than having to qualify the command with the full path to the file.\n\nOn Windows systems, the same result can be achieved by copying the file\n``django-trunk/django/bin/django-admin.py`` to somewhere on your system\npath, for example ``C:\\Python27\\Scripts``.\n"
  },
  {
    "path": "Django-1.5.1/docs/topics/logging.txt",
    "content": "=======\nLogging\n=======\n\n.. module:: django.utils.log\n   :synopsis: Logging tools for Django applications\n\nA quick logging primer\n======================\n\nDjango uses Python's builtin :mod:`logging` module to perform system logging.\nThe usage of this module is discussed in detail in Python's own documentation.\nHowever, if you've never used Python's logging framework (or even if you have),\nhere's a quick primer.\n\nThe cast of players\n-------------------\n\nA Python logging configuration consists of four parts:\n\n* :ref:`topic-logging-parts-loggers`\n* :ref:`topic-logging-parts-handlers`\n* :ref:`topic-logging-parts-filters`\n* :ref:`topic-logging-parts-formatters`\n\n.. _topic-logging-parts-loggers:\n\nLoggers\n~~~~~~~\n\nA logger is the entry point into the logging system. Each logger is\na named bucket to which messages can be written for processing.\n\nA logger is configured to have a *log level*. This log level describes\nthe severity of the messages that the logger will handle. Python\ndefines the following log levels:\n\n* ``DEBUG``: Low level system information for debugging purposes\n\n* ``INFO``: General system information\n\n* ``WARNING``: Information describing a minor problem that has\n  occurred.\n\n* ``ERROR``: Information describing a major problem that has\n  occurred.\n\n* ``CRITICAL``: Information describing a critical problem that has\n  occurred.\n\nEach message that is written to the logger is a *Log Record*. Each log\nrecord also has a *log level* indicating the severity of that specific\nmessage. A log record can also contain useful metadata that describes\nthe event that is being logged. This can include details such as a\nstack trace or an error code.\n\nWhen a message is given to the logger, the log level of the message is\ncompared to the log level of the logger. If the log level of the\nmessage meets or exceeds the log level of the logger itself, the\nmessage will undergo further processing. If it doesn't, the message\nwill be ignored.\n\nOnce a logger has determined that a message needs to be processed,\nit is passed to a *Handler*.\n\n.. _topic-logging-parts-handlers:\n\nHandlers\n~~~~~~~~\n\nThe handler is the engine that determines what happens to each message\nin a logger. It describes a particular logging behavior, such as\nwriting a message to the screen, to a file, or to a network socket.\n\nLike loggers, handlers also have a log level. If the log level of a\nlog record doesn't meet or exceed the level of the handler, the\nhandler will ignore the message.\n\nA logger can have multiple handlers, and each handler can have a\ndifferent log level. In this way, it is possible to provide different\nforms of notification depending on the importance of a message. For\nexample, you could install one handler that forwards ``ERROR`` and\n``CRITICAL`` messages to a paging service, while a second handler\nlogs all messages (including ``ERROR`` and ``CRITICAL`` messages) to a\nfile for later analysis.\n\n.. _topic-logging-parts-filters:\n\nFilters\n~~~~~~~\n\nA filter is used to provide additional control over which log records\nare passed from logger to handler.\n\nBy default, any log message that meets log level requirements will be\nhandled. However, by installing a filter, you can place additional\ncriteria on the logging process. For example, you could install a\nfilter that only allows ``ERROR`` messages from a particular source to\nbe emitted.\n\nFilters can also be used to modify the logging record prior to being\nemitted. For example, you could write a filter that downgrades\n``ERROR`` log records to ``WARNING`` records if a particular set of\ncriteria are met.\n\nFilters can be installed on loggers or on handlers; multiple filters\ncan be used in a chain to perform multiple filtering actions.\n\n.. _topic-logging-parts-formatters:\n\nFormatters\n~~~~~~~~~~\n\nUltimately, a log record needs to be rendered as text. Formatters\ndescribe the exact format of that text. A formatter usually consists\nof a Python formatting string; however, you can also write custom\nformatters to implement specific formatting behavior.\n\nUsing logging\n=============\n\nOnce you have configured your loggers, handlers, filters and\nformatters, you need to place logging calls into your code. Using the\nlogging framework is very simple. Here's an example::\n\n    # import the logging library\n    import logging\n\n    # Get an instance of a logger\n    logger = logging.getLogger(__name__)\n\n    def my_view(request, arg1, arg):\n        ...\n        if bad_mojo:\n            # Log an error message\n            logger.error('Something went wrong!')\n\nAnd that's it! Every time the ``bad_mojo`` condition is activated, an\nerror log record will be written.\n\nNaming loggers\n--------------\n\nThe call to :func:`logging.getLogger()` obtains (creating, if\nnecessary) an instance of a logger. The logger instance is identified\nby a name. This name is used to identify the logger for configuration\npurposes.\n\nBy convention, the logger name is usually ``__name__``, the name of\nthe python module that contains the logger. This allows you to filter\nand handle logging calls on a per-module basis. However, if you have\nsome other way of organizing your logging messages, you can provide\nany dot-separated name to identify your logger::\n\n    # Get an instance of a specific named logger\n    logger = logging.getLogger('project.interesting.stuff')\n\nThe dotted paths of logger names define a hierarchy. The\n``project.interesting`` logger is considered to be a parent of the\n``project.interesting.stuff`` logger; the ``project`` logger\nis a parent of the ``project.interesting`` logger.\n\nWhy is the hierarchy important? Well, because loggers can be set to\n*propagate* their logging calls to their parents. In this way, you can\ndefine a single set of handlers at the root of a logger tree, and\ncapture all logging calls in the subtree of loggers. A logging handler\ndefined in the ``project`` namespace will catch all logging messages\nissued on the ``project.interesting`` and\n``project.interesting.stuff`` loggers.\n\nThis propagation can be controlled on a per-logger basis. If\nyou don't want a particular logger to propagate to it's parents, you\ncan turn off this behavior.\n\nMaking logging calls\n--------------------\n\nThe logger instance contains an entry method for each of the default\nlog levels:\n\n* ``logger.critical()``\n* ``logger.error()``\n* ``logger.warning()``\n* ``logger.info()``\n* ``logger.debug()``\n\nThere are two other logging calls available:\n\n* ``logger.log()``: Manually emits a logging message with a\n  specific log level.\n\n* ``logger.exception()``: Creates an ``ERROR`` level logging\n  message wrapping the current exception stack frame.\n\n.. _configuring-logging:\n\nConfiguring logging\n===================\n\nOf course, it isn't enough to just put logging calls into your code.\nYou also need to configure the loggers, handlers, filters and\nformatters to ensure that logging output is output in a useful way.\n\nPython's logging library provides several techniques to configure\nlogging, ranging from a programmatic interface to configuration files.\nBy default, Django uses the `dictConfig format`_.\n\n.. note::\n    ``logging.dictConfig`` is a builtin library in Python 2.7. In\n    order to make this library available for users of earlier Python\n    versions, Django includes a copy as part of ``django.utils.log``.\n    If you have Python 2.7 or later, the system native library will be used; if\n    you have Python 2.6, Django's copy will be used.\n\nIn order to configure logging, you use :setting:`LOGGING` to define a\ndictionary of logging settings. These settings describes the loggers,\nhandlers, filters and formatters that you want in your logging setup,\nand the log levels and other properties that you want those components\nto have.\n\nPrior to Django 1.5, the :setting:`LOGGING` setting overwrote the :ref:`default\nDjango logging configuration <default-logging-configuration>`. From Django\n1.5 forward, the project's logging configuration is merged with Django's\ndefaults, hence you can decide if you want to add to, or replace the existing\nconfiguration. To completely override the default configuration, set the\n``disable_existing_loggers`` key to True in the :setting:`LOGGING`\ndictConfig. Alternatively you can redefine some or all of the loggers.\n\nLogging is configured as soon as settings have been loaded\n(either manually using :func:`~django.conf.settings.configure` or when at least\none setting is accessed). Since the loading of settings is one of the first\nthings that Django does, you can be certain that loggers are always ready for\nuse in your project code.\n\n.. _dictConfig format: http://docs.python.org/library/logging.config.html#configuration-dictionary-schema\n\n.. _a third-party library: http://bitbucket.org/vinay.sajip/dictconfig\n\nAn example\n----------\n\nThe full documentation for `dictConfig format`_ is the best source of\ninformation about logging configuration dictionaries. However, to give\nyou a taste of what is possible, here is an example of a fairly\ncomplex logging setup, configured using :func:`logging.config.dictConfig`::\n\n    LOGGING = {\n        'version': 1,\n        'disable_existing_loggers': True,\n        'formatters': {\n            'verbose': {\n                'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'\n            },\n            'simple': {\n                'format': '%(levelname)s %(message)s'\n            },\n        },\n        'filters': {\n            'special': {\n                '()': 'project.logging.SpecialFilter',\n                'foo': 'bar',\n            }\n        },\n        'handlers': {\n            'null': {\n                'level': 'DEBUG',\n                'class': 'django.utils.log.NullHandler',\n            },\n            'console':{\n                'level': 'DEBUG',\n                'class': 'logging.StreamHandler',\n                'formatter': 'simple'\n            },\n            'mail_admins': {\n                'level': 'ERROR',\n                'class': 'django.utils.log.AdminEmailHandler',\n                'filters': ['special']\n            }\n        },\n        'loggers': {\n            'django': {\n                'handlers': ['null'],\n                'propagate': True,\n                'level': 'INFO',\n            },\n            'django.request': {\n                'handlers': ['mail_admins'],\n                'level': 'ERROR',\n                'propagate': False,\n            },\n            'myproject.custom': {\n                'handlers': ['console', 'mail_admins'],\n                'level': 'INFO',\n                'filters': ['special']\n            }\n        }\n    }\n\nThis logging configuration does the following things:\n\n* Identifies the configuration as being in 'dictConfig version 1'\n  format. At present, this is the only dictConfig format version.\n\n* Disables all existing logging configurations.\n\n* Defines two formatters:\n\n  * ``simple``, that just outputs the log level name (e.g.,\n    ``DEBUG``) and the log message.\n\n    The ``format`` string is a normal Python formatting string\n    describing the details that are to be output on each logging\n    line. The full list of detail that can be output can be\n    found in the `formatter documentation`_.\n\n  * ``verbose``, that outputs the log level name, the log\n    message, plus the time, process, thread and module that\n    generate the log message.\n\n* Defines one filter -- ``project.logging.SpecialFilter``,\n  using the alias ``special``. If this filter required additional\n  arguments at time of construction, they can be provided as\n  additional keys in the filter configuration dictionary. In this\n  case, the argument ``foo`` will be given a value of ``bar`` when\n  instantiating the ``SpecialFilter``.\n\n* Defines three handlers:\n\n  * ``null``, a NullHandler, which will pass any ``DEBUG`` (or\n    higher) message to ``/dev/null``.\n\n  * ``console``, a StreamHandler, which will print any ``DEBUG``\n    (or higher) message to stderr. This handler uses the ``simple`` output\n    format.\n\n  * ``mail_admins``, an AdminEmailHandler, which will email any\n    ``ERROR`` (or higher) message to the site admins. This handler uses\n    the ``special`` filter.\n\n* Configures three loggers:\n\n  * ``django``, which passes all messages at ``INFO`` or higher\n    to the ``null`` handler.\n\n  * ``django.request``, which passes all ``ERROR`` messages to\n    the ``mail_admins`` handler. In addition, this logger is\n    marked to *not* propagate messages. This means that log\n    messages written to ``django.request`` will not be handled\n    by the ``django`` logger.\n\n  * ``myproject.custom``, which passes all messages at ``INFO``\n    or higher that also pass the ``special`` filter to two\n    handlers -- the ``console``, and ``mail_admins``. This\n    means that all ``INFO`` level messages (or higher) will be\n    printed to the console; ``ERROR`` and ``CRITICAL``\n    messages will also be output via email.\n\n.. _formatter documentation: http://docs.python.org/library/logging.html#formatter-objects\n\nCustom logging configuration\n----------------------------\n\nIf you don't want to use Python's dictConfig format to configure your\nlogger, you can specify your own configuration scheme.\n\nThe :setting:`LOGGING_CONFIG` setting defines the callable that will\nbe used to configure Django's loggers. By default, it points at\nPython's :func:`logging.config.dictConfig()` function. However, if you want to\nuse a different configuration process, you can use any other callable\nthat takes a single argument. The contents of :setting:`LOGGING` will\nbe provided as the value of that argument when logging is configured.\n\nDisabling logging configuration\n-------------------------------\n\nIf you don't want to configure logging at all (or you want to manually\nconfigure logging using your own approach), you can set\n:setting:`LOGGING_CONFIG` to ``None``. This will disable the\nconfiguration process.\n\n.. note::\n    Setting :setting:`LOGGING_CONFIG` to ``None`` only means that the\n    configuration process is disabled, not logging itself. If you\n    disable the configuration process, Django will still make logging\n    calls, falling back to whatever default logging behavior is\n    defined.\n\nDjango's logging extensions\n===========================\n\nDjango provides a number of utilities to handle the unique\nrequirements of logging in Web server environment.\n\nLoggers\n-------\n\nDjango provides three built-in loggers.\n\n``django``\n~~~~~~~~~~\n\n``django`` is the catch-all logger. No messages are posted directly to\nthis logger.\n\n``django.request``\n~~~~~~~~~~~~~~~~~~\n\nLog messages related to the handling of requests. 5XX responses are\nraised as ``ERROR`` messages; 4XX responses are raised as ``WARNING``\nmessages.\n\nMessages to this logger have the following extra context:\n\n* ``status_code``: The HTTP response code associated with the\n  request.\n\n* ``request``: The request object that generated the logging\n  message.\n\n``django.db.backends``\n~~~~~~~~~~~~~~~~~~~~~~\n\nMessages relating to the interaction of code with the database.\nFor example, every SQL statement executed by a request is logged\nat the ``DEBUG`` level to this logger.\n\nMessages to this logger have the following extra context:\n\n* ``duration``: The time taken to execute the SQL statement.\n* ``sql``: The SQL statement that was executed.\n* ``params``: The parameters that were used in the SQL call.\n\nFor performance reasons, SQL logging is only enabled when\n``settings.DEBUG`` is set to ``True``, regardless of the logging\nlevel or handlers that are installed.\n\nHandlers\n--------\n\nDjango provides one log handler in addition to those provided by the\nPython logging module.\n\n.. class:: AdminEmailHandler([include_html=False])\n\n    This handler sends an email to the site admins for each log\n    message it receives.\n\n    If the log record contains a ``request`` attribute, the full details\n    of the request will be included in the email.\n\n    If the log record contains stack trace information, that stack\n    trace will be included in the email.\n\n    The ``include_html`` argument of ``AdminEmailHandler`` is used to\n    control whether the traceback email includes an HTML attachment\n    containing the full content of the debug Web page that would have been\n    produced if :setting:`DEBUG` were ``True``. To set this value in your\n    configuration, include it in the handler definition for\n    ``django.utils.log.AdminEmailHandler``, like this::\n\n        'handlers': {\n            'mail_admins': {\n                'level': 'ERROR',\n                'class': 'django.utils.log.AdminEmailHandler',\n                'include_html': True,\n            }\n        },\n\n    Note that this HTML version of the email contains a full traceback,\n    with names and values of local variables at each level of the stack, plus\n    the values of your Django settings. This information is potentially very\n    sensitive, and you may not want to send it over email. Consider using\n    something such as `Sentry`_ to get the best of both worlds -- the\n    rich information of full tracebacks plus the security of *not* sending the\n    information over email. You may also explicitly designate certain\n    sensitive information to be filtered out of error reports -- learn more on\n    :ref:`Filtering error reports<filtering-error-reports>`.\n\n.. _Sentry: http://pypi.python.org/pypi/sentry\n\n\nFilters\n-------\n\nDjango provides two log filters in addition to those provided by the Python\nlogging module.\n\n.. class:: CallbackFilter(callback)\n\n   .. versionadded:: 1.4\n\n   This filter accepts a callback function (which should accept a single\n   argument, the record to be logged), and calls it for each record that passes\n   through the filter. Handling of that record will not proceed if the callback\n   returns False.\n\n   For instance, to filter out :exc:`~django.http.UnreadablePostError`\n   (raised when a user cancels an upload) from the admin emails, you would\n   create a filter function::\n\n    from django.http import UnreadablePostError\n\n    def skip_unreadable_post(record):\n        if record.exc_info:\n            exc_type, exc_value = record.exc_info[:2]\n            if isinstance(exc_value, UnreadablePostError):\n                return False\n        return True\n\n   and then add it to your logging config::\n\n        'filters': {\n            'skip_unreadable_posts': {\n                '()': 'django.utils.log.CallbackFilter',\n                'callback': skip_unreadable_post,\n            }\n        },\n        'handlers': {\n            'mail_admins': {\n                'level': 'ERROR',\n                'filters': ['skip_unreadable_posts'],\n                'class': 'django.utils.log.AdminEmailHandler'\n            }\n        },\n\n.. class:: RequireDebugFalse()\n\n   .. versionadded:: 1.4\n\n   This filter will only pass on records when settings.DEBUG is False.\n\n   This filter is used as follows in the default :setting:`LOGGING`\n   configuration to ensure that the :class:`AdminEmailHandler` only sends error\n   emails to admins when :setting:`DEBUG` is ``False``::\n\n       'filters': {\n            'require_debug_false': {\n                '()': 'django.utils.log.RequireDebugFalse',\n            }\n        },\n        'handlers': {\n            'mail_admins': {\n                'level': 'ERROR',\n                'filters': ['require_debug_false'],\n                'class': 'django.utils.log.AdminEmailHandler'\n            }\n        },\n\n.. class:: RequireDebugTrue()\n\n   .. versionadded:: 1.5\n\n   This filter is similar to :class:`RequireDebugFalse`, except that records are\n   passed only when :setting:`DEBUG` is ``True``.\n\n.. _default-logging-configuration:\n\nDjango's default logging configuration\n======================================\n\nBy default, Django configures the ``django.request`` logger so that all messages\nwith ``ERROR`` or ``CRITICAL`` level are sent to :class:`AdminEmailHandler`, as\nlong as the :setting:`DEBUG` setting is set to ``False``.\n\nAll messages reaching the ``django`` catch-all logger when :setting:`DEBUG` is\n``True`` are sent to the console. They are simply discarded (sent to\n``NullHandler``) when :setting:`DEBUG` is ``False``.\n\n.. versionchanged:: 1.5\n\n    Before Django 1.5, all messages reaching the ``django`` logger were\n    discarded, regardless of :setting:`DEBUG`.\n\nSee also :ref:`Configuring logging <configuring-logging>` to learn how you can\ncomplement or replace this default logging configuration.\n"
  },
  {
    "path": "Django-1.5.1/docs/topics/pagination.txt",
    "content": "==========\nPagination\n==========\n\n.. module:: django.core.paginator\n   :synopsis: Classes to help you easily manage paginated data.\n\nDjango provides a few classes that help you manage paginated data -- that is,\ndata that's split across several pages, with \"Previous/Next\" links. These\nclasses live in :file:`django/core/paginator.py`.\n\nExample\n=======\n\nGive :class:`Paginator` a list of objects, plus the number of items you'd like to\nhave on each page, and it gives you methods for accessing the items for each\npage::\n\n    >>> from django.core.paginator import Paginator\n    >>> objects = ['john', 'paul', 'george', 'ringo']\n    >>> p = Paginator(objects, 2)\n\n    >>> p.count\n    4\n    >>> p.num_pages\n    2\n    >>> p.page_range\n    [1, 2]\n\n    >>> page1 = p.page(1)\n    >>> page1\n    <Page 1 of 2>\n    >>> page1.object_list\n    ['john', 'paul']\n\n    >>> page2 = p.page(2)\n    >>> page2.object_list\n    ['george', 'ringo']\n    >>> page2.has_next()\n    False\n    >>> page2.has_previous()\n    True\n    >>> page2.has_other_pages()\n    True\n    >>> page2.next_page_number()\n    Traceback (most recent call last):\n    ...\n    EmptyPage: That page contains no results\n    >>> page2.previous_page_number()\n    1\n    >>> page2.start_index() # The 1-based index of the first item on this page\n    3\n    >>> page2.end_index() # The 1-based index of the last item on this page\n    4\n\n    >>> p.page(0)\n    Traceback (most recent call last):\n    ...\n    EmptyPage: That page number is less than 1\n    >>> p.page(3)\n    Traceback (most recent call last):\n    ...\n    EmptyPage: That page contains no results\n\n.. note::\n\n    Note that you can give ``Paginator`` a list/tuple, a Django ``QuerySet``,\n    or any other object with a ``count()`` or ``__len__()`` method. When\n    determining the number of objects contained in the passed object,\n    ``Paginator`` will first try calling ``count()``, then fallback to using\n    ``len()`` if the passed object has no ``count()`` method. This allows\n    objects such as Django's ``QuerySet`` to use a more efficient ``count()``\n    method when available.\n\n\nUsing ``Paginator`` in a view\n==============================\n\nHere's a slightly more complex example using :class:`Paginator` in a view to\npaginate a queryset. We give both the view and the accompanying template to\nshow how you can display the results. This example assumes you have a\n``Contacts`` model that has already been imported.\n\nThe view function looks like this::\n\n    from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger\n\n    def listing(request):\n        contact_list = Contacts.objects.all()\n        paginator = Paginator(contact_list, 25) # Show 25 contacts per page\n\n        page = request.GET.get('page')\n        try:\n            contacts = paginator.page(page)\n        except PageNotAnInteger:\n            # If page is not an integer, deliver first page.\n            contacts = paginator.page(1)\n        except EmptyPage:\n            # If page is out of range (e.g. 9999), deliver last page of results.\n            contacts = paginator.page(paginator.num_pages)\n\n        return render_to_response('list.html', {\"contacts\": contacts})\n\nIn the template :file:`list.html`, you'll want to include navigation between\npages along with any interesting information from the objects themselves::\n\n    {% for contact in contacts %}\n        {# Each \"contact\" is a Contact model object. #}\n        {{ contact.full_name|upper }}<br />\n        ...\n    {% endfor %}\n\n    <div class=\"pagination\">\n        <span class=\"step-links\">\n            {% if contacts.has_previous %}\n                <a href=\"?page={{ contacts.previous_page_number }}\">previous</a>\n            {% endif %}\n\n            <span class=\"current\">\n                Page {{ contacts.number }} of {{ contacts.paginator.num_pages }}.\n            </span>\n\n            {% if contacts.has_next %}\n                <a href=\"?page={{ contacts.next_page_number }}\">next</a>\n            {% endif %}\n        </span>\n    </div>\n\n.. versionchanged:: 1.4\n    Previously, you would need to use\n    ``{% for contact in contacts.object_list %}``, since the ``Page``\n    object was not iterable.\n\n\n``Paginator`` objects\n=====================\n\nThe :class:`Paginator` class has this constructor:\n\n.. class:: Paginator(object_list, per_page, orphans=0, allow_empty_first_page=True)\n\nRequired arguments\n------------------\n\n``object_list``\n    A list, tuple, Django ``QuerySet``, or other sliceable object with a\n    ``count()`` or ``__len__()`` method.\n\n``per_page``\n    The maximum number of items to include on a page, not including orphans\n    (see the ``orphans`` optional argument below).\n\nOptional arguments\n------------------\n\n``orphans``\n    The minimum number of items allowed on the last page, defaults to zero.\n    Use this when you don't want to have a last page with very few items.\n    If the last page would normally have a number of items less than or equal\n    to ``orphans``, then those items will be added to the previous page (which\n    becomes the last page) instead of leaving the items on a page by\n    themselves. For example, with 23 items, ``per_page=10``, and\n    ``orphans=3``, there will be two pages; the first page with 10 items and\n    the  second (and last) page with 13 items.\n\n``allow_empty_first_page``\n    Whether or not the first page is allowed to be empty.  If ``False`` and\n    ``object_list`` is  empty, then an ``EmptyPage`` error will be raised.\n\nMethods\n-------\n\n.. method:: Paginator.page(number)\n\n    Returns a :class:`Page` object with the given 1-based index. Raises\n    :exc:`InvalidPage` if the given page number doesn't exist.\n\nAttributes\n----------\n\n.. attribute:: Paginator.count\n\n    The total number of objects, across all pages.\n\n    .. note::\n\n        When determining the number of objects contained in ``object_list``,\n        ``Paginator`` will first try calling ``object_list.count()``. If\n        ``object_list`` has no ``count()`` method, then ``Paginator`` will\n        fallback to using ``len(object_list)``. This allows objects, such as\n        Django's ``QuerySet``, to use a more efficient ``count()`` method when\n        available.\n\n.. attribute:: Paginator.num_pages\n\n    The total number of pages.\n\n.. attribute:: Paginator.page_range\n\n    A 1-based range of page numbers, e.g., ``[1, 2, 3, 4]``.\n\n\n``InvalidPage`` exceptions\n==========================\n\n.. exception:: InvalidPage\n\n    A base class for exceptions raised when a paginator is passed an invalid\n    page number.\n\nThe :meth:`Paginator.page` method raises an exception if the requested page is\ninvalid (i.e., not an integer) or contains no objects. Generally, it's enough\nto trap the ``InvalidPage`` exception, but if you'd like more granularity, you\ncan trap either of the following exceptions:\n\n.. exception:: PageNotAnInteger\n\n    Raised when ``page()`` is given a value that isn't an integer.\n\n.. exception:: EmptyPage\n\n    Raised when ``page()`` is given a valid value but no objects exist on that\n    page.\n\nBoth of the exceptions are subclasses of :exc:`InvalidPage`, so you can handle\nthem both with a simple ``except InvalidPage``.\n\n\n``Page`` objects\n================\n\nYou usually won't construct ``Page`` objects by hand -- you'll get them\nusing :meth:`Paginator.page`.\n\n.. class:: Page(object_list, number, paginator)\n\n.. versionadded:: 1.4\n    A page acts like a sequence of :attr:`Page.object_list` when using\n    ``len()`` or iterating it directly.\n\nMethods\n-------\n\n.. method:: Page.has_next()\n\n    Returns ``True`` if there's a next page.\n\n.. method:: Page.has_previous()\n\n    Returns ``True`` if there's a previous page.\n\n.. method:: Page.has_other_pages()\n\n    Returns ``True`` if there's a next *or* previous page.\n\n.. method:: Page.next_page_number()\n\n    Returns the next page number.\n\n    .. versionchanged:: 1.5\n\n    Raises :exc:`InvalidPage` if next page doesn't exist.\n\n.. method:: Page.previous_page_number()\n\n    Returns the previous page number.\n\n    .. versionchanged:: 1.5\n\n    Raises :exc:`InvalidPage` if previous page doesn't exist.\n\n.. method:: Page.start_index()\n\n    Returns the 1-based index of the first object on the page, relative to all\n    of the objects in the paginator's list. For example, when paginating a list\n    of 5 objects with 2 objects per page, the second page's\n    :meth:`~Page.start_index` would return ``3``.\n\n.. method:: Page.end_index()\n\n    Returns the 1-based index of the last object on the page, relative to all\n    of the objects in the paginator's list. For example, when paginating a list\n    of 5 objects with 2 objects per page, the second page's\n    :meth:`~Page.end_index` would return ``4``.\n\nAttributes\n----------\n\n.. attribute:: Page.object_list\n\n    The list of objects on this page.\n\n.. attribute:: Page.number\n\n    The 1-based page number for this page.\n\n.. attribute:: Page.paginator\n\n    The associated :class:`Paginator` object.\n"
  },
  {
    "path": "Django-1.5.1/docs/topics/python3.txt",
    "content": "===================\nPorting to Python 3\n===================\n\nDjango 1.5 is the first version of Django to support Python 3. The same code\nruns both on Python 2 (≥ 2.6.5) and Python 3 (≥ 3.2), thanks to the six_\ncompatibility layer.\n\n.. _six: http://packages.python.org/six/\n\nThis document is primarily targeted at authors of pluggable application\nwho want to support both Python 2 and 3. It also describes guidelines that\napply to Django's code.\n\nPhilosophy\n==========\n\nThis document assumes that you are familiar with the changes between Python 2\nand Python 3. If you aren't, read `Python's official porting guide`_ first.\nRefreshing your knowledge of unicode handling on Python 2 and 3 will help; the\n`Pragmatic Unicode`_ presentation is a good resource.\n\nDjango uses the *Python 2/3 Compatible Source* strategy. Of course, you're\nfree to chose another strategy for your own code, especially if you don't need\nto stay compatible with Python 2. But authors of pluggable applications are\nencouraged to use the same porting strategy as Django itself.\n\nWriting compatible code is much easier if you target Python ≥ 2.6. Django 1.5\nintroduces compatibility tools such as :mod:`django.utils.six`. For\nconvenience, forwards-compatible aliases were introduced in Django 1.4.2. If\nyour application takes advantage of these tools, it will require Django ≥\n1.4.2.\n\nObviously, writing compatible source code adds some overhead, and that can\ncause frustration. Django's developers have found that attempting to write\nPython 3 code that's compatible with Python 2 is much more rewarding than the\nopposite. Not only does that make your code more future-proof, but Python 3's\nadvantages (like the saner string handling) start shining quickly. Dealing\nwith Python 2 becomes a backwards compatibility requirement, and we as\ndevelopers are used to dealing with such constraints.\n\nPorting tools provided by Django are inspired by this philosophy, and it's\nreflected throughout this guide.\n\n.. _Python's official porting guide: http://docs.python.org/py3k/howto/pyporting.html\n.. _Pragmatic Unicode: http://nedbatchelder.com/text/unipain.html\n\nPorting tips\n============\n\nUnicode literals\n----------------\n\nThis step consists in:\n\n- Adding ``from __future__ import unicode_literals`` at the top of your Python\n  modules -- it's best to put it in each and every module, otherwise you'll\n  keep checking the top of your files to see which mode is in effect;\n- Removing the ``u`` prefix before unicode strings;\n- Adding a ``b`` prefix before bytestrings.\n\nPerforming these changes systematically guarantees backwards compatibility.\n\nHowever, Django applications generally don't need bytestrings, since Django\nonly exposes unicode interfaces to the programmer. Python 3 discourages using\nbytestrings, except for binary data or byte-oriented interfaces. Python 2\nmakes bytestrings and unicode strings effectively interchangeable, as long as\nthey only contain ASCII data. Take advantage of this to use unicode strings\nwherever possible and avoid the ``b`` prefixes.\n\n.. note::\n\n    Python 2's ``u`` prefix is a syntax error in Python 3.2 but it will be\n    allowed again in Python 3.3 thanks to :pep:`414`. Thus, this\n    transformation is optional if you target Python ≥ 3.3. It's still\n    recommended, per the \"write Python 3 code\" philosophy.\n\nString handling\n---------------\n\nPython 2's :func:`unicode` type was renamed :func:`str` in Python 3,\n:func:`str` was renamed ``bytes()``, and :func:`basestring` disappeared.\nsix_ provides :ref:`tools <string-handling-with-six>` to deal with these\nchanges.\n\nDjango also contains several string related classes and functions in the\n:mod:`django.utils.encoding` and :mod:`django.utils.safestring` modules. Their\nnames used the words ``str``, which doesn't mean the same thing in Python 2\nand Python 3, and ``unicode``, which doesn't exist in Python 3. In order to\navoid ambiguity and confusion these concepts were renamed ``bytes`` and\n``text``.\n\nHere are the name changes in :mod:`django.utils.encoding`:\n\n==================  ==================\nOld name            New name\n==================  ==================\n``smart_str``       ``smart_bytes``\n``smart_unicode``   ``smart_text``\n``force_unicode``   ``force_text``\n==================  ==================\n\nFor backwards compatibility, the old names still work on Python 2. Under\nPython 3, ``smart_str`` is an alias for ``smart_text``.\n\nFor forwards compatibility, the new names work as of Django 1.4.2.\n\n.. note::\n\n    :mod:`django.utils.encoding` was deeply refactored in Django 1.5 to\n    provide a more consistent API. Check its documentation for more\n    information.\n\n:mod:`django.utils.safestring` is mostly used via the\n:func:`~django.utils.safestring.mark_safe` and\n:func:`~django.utils.safestring.mark_for_escaping` functions, which didn't\nchange. In case you're using the internals, here are the name changes:\n\n==================  ==================\nOld name            New name\n==================  ==================\n``EscapeString``    ``EscapeBytes``\n``EscapeUnicode``   ``EscapeText``\n``SafeString``      ``SafeBytes``\n``SafeUnicode``     ``SafeText``\n==================  ==================\n\nFor backwards compatibility, the old names still work on Python 2. Under\nPython 3, ``EscapeString`` and ``SafeString`` are aliases for ``EscapeText``\nand ``SafeText`` respectively.\n\nFor forwards compatibility, the new names work as of Django 1.4.2.\n\n:meth:`~object.__str__` and :meth:`~object.__unicode__` methods\n---------------------------------------------------------------\n\nIn Python 2, the object model specifies :meth:`~object.__str__` and\n:meth:`~object.__unicode__` methods. If these methods exist, they must return\n``str`` (bytes) and ``unicode`` (text) respectively.\n\nThe ``print`` statement and the :func:`str` built-in call\n:meth:`~object.__str__` to determine the human-readable representation of an\nobject. The :func:`unicode` built-in calls :meth:`~object.__unicode__` if it\nexists, and otherwise falls back to :meth:`~object.__str__` and decodes the\nresult with the system encoding. Conversely, the\n:class:`~django.db.models.Model` base class automatically derives\n:meth:`~object.__str__` from :meth:`~object.__unicode__` by encoding to UTF-8.\n\nIn Python 3, there's simply :meth:`~object.__str__`, which must return ``str``\n(text).\n\n(It is also possible to define ``__bytes__()``, but Django application have\nlittle use for that method, because they hardly ever deal with\n``bytes``.)\n\nDjango provides a simple way to define :meth:`~object.__str__` and\n:meth:`~object.__unicode__` methods that work on Python 2 and 3: you must\ndefine a :meth:`~object.__str__` method returning text and to apply the\n:func:`~django.utils.encoding.python_2_unicode_compatible` decorator.\n\nOn Python 3, the decorator is a no-op. On Python 2, it defines appropriate\n:meth:`~object.__unicode__` and :meth:`~object.__str__` methods (replacing the\noriginal :meth:`~object.__str__` method in the process). Here's an example::\n\n    from __future__ import unicode_literals\n    from django.utils.encoding import python_2_unicode_compatible\n\n    @python_2_unicode_compatible\n    class MyClass(object):\n        def __str__(self):\n            return \"Instance of my class\"\n\nThis technique is the best match for Django's porting philosophy.\n\nFor forwards compatibility, this decorator is available as of Django 1.4.2.\n\nFinally, note that :meth:`~object.__repr__` must return a ``str`` on all\nversions of Python.\n\n:class:`dict` and :class:`dict`-like classes\n--------------------------------------------\n\n:meth:`dict.keys`, :meth:`dict.items` and :meth:`dict.values` return lists in\nPython 2 and iterators in Python 3. :class:`~django.http.QueryDict` and the\n:class:`dict`-like classes defined in :mod:`django.utils.datastructures`\nbehave likewise in Python 3.\n\nsix_ provides compatibility functions to work around this change:\n:func:`~six.iterkeys`, :func:`~six.iteritems`, and :func:`~six.itervalues`.\nIt also contains an undocumented ``iterlists`` function that works well for\n``django.utils.datastructures.MultiValueDict`` and its subclasses.\n\n:class:`~django.http.HttpRequest` and :class:`~django.http.HttpResponse` objects\n--------------------------------------------------------------------------------\n\nAccording to :pep:`3333`:\n\n- headers are always ``str`` objects,\n- input and output streams are always ``bytes`` objects.\n\nSpecifically, :attr:`HttpResponse.content <django.http.HttpResponse.content>`\ncontains ``bytes``, which may become an issue if you compare it with a\n``str`` in your tests. The preferred solution is to rely on\n:meth:`~django.test.TestCase.assertContains` and\n:meth:`~django.test.TestCase.assertNotContains`. These methods accept a\nresponse and a unicode string as arguments.\n\nCoding guidelines\n=================\n\nThe following guidelines are enforced in Django's source code. They're also\nrecommended for third-party application who follow the same porting strategy.\n\nSyntax requirements\n-------------------\n\nUnicode\n~~~~~~~\n\nIn Python 3, all strings are considered Unicode by default. The ``unicode``\ntype from Python 2 is called ``str`` in Python 3, and ``str`` becomes\n``bytes``.\n\nYou mustn't use the ``u`` prefix before a unicode string literal because it's\na syntax error in Python 3.2. You must prefix byte strings with ``b``.\n\nIn order to enable the same behavior in Python 2, every module must import\n``unicode_literals`` from ``__future__``::\n\n    from __future__ import unicode_literals\n\n    my_string = \"This is an unicode literal\"\n    my_bytestring = b\"This is a bytestring\"\n\nIf you need a byte string literal under Python 2 and a unicode string literal\nunder Python 3, use the :func:`str` builtin::\n\n    str('my string')\n\nIn Python 3, there aren't any automatic conversions between ``str`` and\n``bytes``, and the :mod:`codecs` module became more strict. :meth:`str.encode`\nalways returns ``bytes``, and ``bytes.decode`` always returns ``str``. As a\nconsequence, the following pattern is sometimes necessary::\n\n    value = value.encode('ascii', 'ignore').decode('ascii')\n\nBe cautious if you have to `index bytestrings`_.\n\n.. _index bytestrings: http://docs.python.org/py3k/howto/pyporting.html#bytes-literals\n\nExceptions\n~~~~~~~~~~\n\nWhen you capture exceptions, use the ``as`` keyword::\n\n    try:\n        ...\n    except MyException as exc:\n        ...\n\nThis older syntax was removed in Python 3::\n\n    try:\n        ...\n    except MyException, exc:    # Don't do that!\n        ...\n\nThe syntax to reraise an exception with a different traceback also changed.\nUse :func:`six.reraise`.\n\nMagic methods\n-------------\n\nUse the patterns below to handle magic methods renamed in Python 3.\n\nIterators\n~~~~~~~~~\n\n::\n\n    class MyIterator(six.Iterator):\n        def __iter__(self):\n            return self             # implement some logic here\n\n        def __next__(self):\n            raise StopIteration     # implement some logic here\n\nBoolean evaluation\n~~~~~~~~~~~~~~~~~~\n\n::\n\n    class MyBoolean(object):\n\n        def __bool__(self):\n            return True             # implement some logic here\n\n        def __nonzero__(self):      # Python 2 compatibility\n            return type(self).__bool__(self)\n\nDivision\n~~~~~~~~\n\n::\n\n    class MyDivisible(object):\n\n        def __truediv__(self, other):\n            return self / other     # implement some logic here\n\n        def __div__(self, other):   # Python 2 compatibility\n            return type(self).__truediv__(self, other)\n\n        def __itruediv__(self, other):\n            return self // other    # implement some logic here\n\n        def __idiv__(self, other):  # Python 2 compatibility\n            return type(self).__itruediv__(self, other)\n\n.. module: django.utils.six\n\nWriting compatible code with six\n--------------------------------\n\nsix_ is the canonical compatibility library for supporting Python 2 and 3 in\na single codebase. Read its documentation!\n\n:mod:`six` is bundled with Django as of version 1.4.2. You can import it as\n:mod:`django.utils.six`.\n\nHere are the most common changes required to write compatible code.\n\n.. _string-handling-with-six:\n\nString handling\n~~~~~~~~~~~~~~~\n\nThe ``basestring`` and ``unicode`` types were removed in Python 3, and the\nmeaning of ``str`` changed. To test these types, use the following idioms::\n\n    isinstance(myvalue, six.string_types)       # replacement for basestring\n    isinstance(myvalue, six.text_type)          # replacement for unicode\n    isinstance(myvalue, bytes)                  # replacement for str\n\nPython ≥ 2.6 provides ``bytes`` as an alias for ``str``, so you don't need\n:data:`six.binary_type`.\n\n``long``\n~~~~~~~~\n\nThe ``long`` type no longer exists in Python 3. ``1L`` is a syntax error. Use\n:data:`six.integer_types` check if a value is an integer or a long::\n\n    isinstance(myvalue, six.integer_types)      # replacement for (int, long)\n\n``xrange``\n~~~~~~~~~~\n\nImport ``six.moves.xrange`` wherever you use ``xrange``.\n\nMoved modules\n~~~~~~~~~~~~~\n\nSome modules were renamed in Python 3. The :mod:`django.utils.six.moves\n<six.moves>` module provides a compatible location to import them.\n\nThe ``urllib``, ``urllib2`` and ``urlparse`` modules were reworked in depth\nand :mod:`django.utils.six.moves <six.moves>` doesn't handle them. Django\nexplicitly tries both locations, as follows::\n\n    try:\n        from urllib.parse import urlparse, urlunparse\n    except ImportError:     # Python 2\n        from urlparse import urlparse, urlunparse\n\nPY3\n~~~\n\nIf you need different code in Python 2 and Python 3, check :data:`six.PY3`::\n\n    if six.PY3:\n        # do stuff Python 3-wise\n    else:\n        # do stuff Python 2-wise\n\nThis is a last resort solution when :mod:`six` doesn't provide an appropriate\nfunction.\n\n.. module:: django.utils.six\n\nCustomizations of six\n---------------------\n\nThe version of six bundled with Django includes a few extras.\n\n.. function:: assertRaisesRegex(testcase, *args, **kwargs)\n\n    This replaces ``testcase.assertRaisesRegexp`` on Python 2, and\n    ``testcase.assertRaisesRegex`` on Python 3. ``assertRaisesRegexp`` still\n    exists in current Python3 versions, but issues a warning.\n\n\nIn addition to six' defaults moves, Django's version provides ``thread`` as\n``_thread`` and ``dummy_thread`` as ``_dummy_thread``.\n"
  },
  {
    "path": "Django-1.5.1/docs/topics/security.txt",
    "content": "==================\nSecurity in Django\n==================\n\nThis document is an overview of Django's security features. It includes advice\non securing a Django-powered site.\n\n.. _cross-site-scripting:\n\nCross site scripting (XSS) protection\n=====================================\n\n.. highlightlang:: html+django\n\nXSS attacks allow a user to inject client side scripts into the browsers of\nother users. This is usually achieved by storing the malicious scripts in the\ndatabase where it will be retrieved and displayed to other users, or by getting\nusers to click a link which will cause the attacker's JavaScript to be executed\nby the user's browser. However, XSS attacks can originate from any untrusted\nsource of data, such as cookies or Web services, whenever the data is not\nsufficiently sanitized before including in a page.\n\nUsing Django templates protects you against the majority of XSS attacks.\nHowever, it is important to understand what protections it provides\nand its limitations.\n\nDjango templates :ref:`escape specific characters <automatic-html-escaping>`\nwhich are particularly dangerous to HTML. While this protects users from most\nmalicious input, it is not entirely foolproof. For example, it will not\nprotect the following:\n\n.. code-block:: html+django\n\n    <style class={{ var }}>...</style>\n\nIf ``var`` is set to ``'class1 onmouseover=javascript:func()'``, this can result\nin unauthorized JavaScript execution, depending on how the browser renders\nimperfect HTML.\n\nIt is also important to be particularly careful when using ``is_safe`` with\ncustom template tags, the :tfilter:`safe` template tag, :mod:`mark_safe\n<django.utils.safestring>`, and when autoescape is turned off.\n\nIn addition, if you are using the template system to output something other\nthan HTML, there may be entirely separate characters and words which require\nescaping.\n\nYou should also be very careful when storing HTML in the database, especially\nwhen that HTML is retrieved and displayed.\n\nMarkup library\n--------------\n\nIf you use :mod:`django.contrib.markup`, you need to ensure that the filters are\nonly used on trusted input, or that you have correctly configured them to ensure\nthey do not allow raw HTML output. See the documentation of that module for more\ninformation.\n\nCross site request forgery (CSRF) protection\n============================================\n\nCSRF attacks allow a malicious user to execute actions using the credentials\nof another user without that user's knowledge or consent.\n\nDjango has built-in protection against most types of CSRF attacks, providing you\nhave :ref:`enabled and used it <using-csrf>` where appropriate. However, as with\nany mitigation technique, there are limitations. For example, it is possible to\ndisable the CSRF module globally or for particular views. You should only do\nthis if you know what you are doing. There are other :ref:`limitations\n<csrf-limitations>` if your site has subdomains that are outside of your\ncontrol.\n\n:ref:`CSRF protection works <how-csrf-works>` by checking for a nonce in each\nPOST request. This ensures that a malicious user cannot simply \"replay\" a form\nPOST to your Web site and have another logged in user unwittingly submit that\nform. The malicious user would have to know the nonce, which is user specific\n(using a cookie).\n\nWhen deployed with :ref:`HTTPS <security-recommendation-ssl>`,\n``CsrfViewMiddleware`` will check that the HTTP referer header is set to a\nURL on the same origin (including subdomain and port). Because HTTPS\nprovides additional security, it is imperative to ensure connections use HTTPS\nwhere it is available by forwarding insecure connection requests and using\nHSTS for supported browsers.\n\nBe very careful with marking views with the ``csrf_exempt`` decorator unless\nit is absolutely necessary.\n\n\nSQL injection protection\n========================\n\nSQL injection is a type of attack where a malicious user is able to execute\narbitrary SQL code on a database. This can result in records\nbeing deleted or data leakage.\n\nBy using Django's querysets, the resulting SQL will be properly escaped by\nthe underlying database driver. However, Django also gives developers power to\nwrite :ref:`raw queries <executing-raw-queries>` or execute\n:ref:`custom sql <executing-custom-sql>`. These capabilities should be used\nsparingly and you should always be careful to properly escape any parameters\nthat the user can control. In addition, you should exercise caution when using\n:meth:`extra() <django.db.models.query.QuerySet.extra>`.\n\nClickjacking protection\n=======================\n\nClickjacking is a type of attack where a malicious site wraps another site\nin a frame. This attack can result in an unsuspecting user being tricked\ninto performing unintended actions on the target site.\n\nDjango contains :ref:`clickjacking protection <clickjacking-prevention>` in\nthe form of the\n:mod:`X-Frame-Options middleware <django.middleware.clickjacking.XFrameOptionsMiddleware>`\nwhich in a supporting browser can prevent a site from being rendered inside\na frame. It is possible to disable the protection on a per view basis\nor to configure the exact header value sent.\n\nThe middleware is strongly recommended for any site that does not need to have\nits pages wrapped in a frame by third party sites, or only needs to allow that\nfor a small section of the site.\n\n.. _security-recommendation-ssl:\n\nSSL/HTTPS\n=========\n\nIt is always better for security, though not always practical in all cases, to\ndeploy your site behind HTTPS. Without this, it is possible for malicious\nnetwork users to sniff authentication credentials or any other information\ntransferred between client and server, and in some cases -- **active** network\nattackers -- to alter data that is sent in either direction.\n\nIf you want the protection that HTTPS provides, and have enabled it on your\nserver, there are some additional steps you may need:\n\n* If necessary, set :setting:`SECURE_PROXY_SSL_HEADER`, ensuring that you have\n  understood the warnings there thoroughly. Failure to do this can result\n  in CSRF vulnerabilities, and failure to do it correctly can also be\n  dangerous!\n\n* Set up redirection so that requests over HTTP are redirected to HTTPS.\n\n  This could be done using a custom middleware. Please note the caveats under\n  :setting:`SECURE_PROXY_SSL_HEADER`. For the case of a reverse proxy, it may be\n  easier or more secure to configure the main Web server to do the redirect to\n  HTTPS.\n\n* Use 'secure' cookies.\n\n  If a browser connects initially via HTTP, which is the default for most\n  browsers, it is possible for existing cookies to be leaked. For this reason,\n  you should set your :setting:`SESSION_COOKIE_SECURE` and\n  :setting:`CSRF_COOKIE_SECURE` settings to ``True``. This instructs the browser\n  to only send these cookies over HTTPS connections. Note that this will mean\n  that sessions will not work over HTTP, and the CSRF protection will prevent\n  any POST data being accepted over HTTP (which will be fine if you are\n  redirecting all HTTP traffic to HTTPS).\n\n* Use HTTP Strict Transport Security (HSTS)\n\n  HSTS is an HTTP header that informs a browser that all future connections\n  to a particular site should always use HTTPS. Combined with redirecting\n  requests over HTTP to HTTPS, this will ensure that connections always enjoy\n  the added security of SSL provided one successful connection has occurred.\n  HSTS is usually configured on the web server.\n\n.. _host-headers-virtual-hosting:\n\nHost header validation\n======================\n\nDjango uses the ``Host`` header provided by the client to construct URLs in\ncertain cases. While these values are sanitized to prevent Cross Site Scripting\nattacks, a fake ``Host`` value can be used for Cross-Site Request Forgery,\ncache poisoning attacks, and poisoning links in emails.\n\nBecause even seemingly-secure webserver configurations are susceptible to fake\n``Host`` headers, Django validates ``Host`` headers against the\n:setting:`ALLOWED_HOSTS` setting in the\n:meth:`django.http.HttpRequest.get_host()` method.\n\nThis validation only applies via :meth:`~django.http.HttpRequest.get_host()`;\nif your code accesses the ``Host`` header directly from ``request.META`` you\nare bypassing this security protection.\n\nFor more details see the full :setting:`ALLOWED_HOSTS` documentation.\n\n.. warning::\n\n   Previous versions of this document recommended configuring your webserver to\n   ensure it validates incoming HTTP ``Host`` headers. While this is still\n   recommended, in many common webservers a configuration that seems to\n   validate the ``Host`` header may not in fact do so. For instance, even if\n   Apache is configured such that your Django site is served from a non-default\n   virtual host with the ``ServerName`` set, it is still possible for an HTTP\n   request to match this virtual host and supply a fake ``Host`` header. Thus,\n   Django now requires that you set :setting:`ALLOWED_HOSTS` explicitly rather\n   than relying on webserver configuration.\n\nAdditionally, as of 1.3.1, Django requires you to explicitly enable support for\nthe ``X-Forwarded-Host`` header (via the :setting:`USE_X_FORWARDED_HOST`\nsetting) if your configuration requires it.\n\n\n.. _additional-security-topics:\n\nAdditional security topics\n==========================\n\nWhile Django provides good security protection out of the box, it is still\nimportant to properly deploy your application and take advantage of the\nsecurity protection of the Web server, operating system and other components.\n\n* Make sure that your Python code is outside of the Web server's root. This\n  will ensure that your Python code is not accidentally served as plain text\n  (or accidentally executed).\n* Take care with any :ref:`user uploaded files <file-upload-security>`.\n* Django does not throttle requests to authenticate users. To protect against\n  brute-force attacks against the authentication system, you may consider\n  deploying a Django plugin or Web server module to throttle these requests.\n* If your site accepts file uploads, it is strongly advised that you limit\n  these uploads in your Web server configuration to a reasonable\n  size in order to prevent denial of service (DOS) attacks. In Apache, this\n  can be easily set using the LimitRequestBody_ directive.\n* Keep your :setting:`SECRET_KEY` a secret.\n* It is a good idea to limit the accessibility of your caching system and\n  database using a firewall.\n\n.. _LimitRequestBody: http://httpd.apache.org/docs/2.2/mod/core.html#limitrequestbody\n"
  },
  {
    "path": "Django-1.5.1/docs/topics/serialization.txt",
    "content": "==========================\nSerializing Django objects\n==========================\n\nDjango's serialization framework provides a mechanism for \"translating\" Django\nmodels into other formats. Usually these other formats will be text-based and\nused for sending Django data over a wire, but it's possible for a\nserializer to handle any format (text-based or not).\n\n.. seealso::\n\n    If you just want to get some data from your tables into a serialized\n    form, you could use the :djadmin:`dumpdata` management command.\n\nSerializing data\n----------------\n\nAt the highest level, serializing data is a very simple operation::\n\n    from django.core import serializers\n    data = serializers.serialize(\"xml\", SomeModel.objects.all())\n\nThe arguments to the ``serialize`` function are the format to serialize the data\nto (see `Serialization formats`_) and a\n:class:`~django.db.models.query.QuerySet` to serialize. (Actually, the second\nargument can be any iterator that yields Django model instances, but it'll\nalmost always be a QuerySet).\n\n.. function:: django.core.serializers.get_serializer(format)\n\nYou can also use a serializer object directly::\n\n    XMLSerializer = serializers.get_serializer(\"xml\")\n    xml_serializer = XMLSerializer()\n    xml_serializer.serialize(queryset)\n    data = xml_serializer.getvalue()\n\nThis is useful if you want to serialize data directly to a file-like object\n(which includes an :class:`~django.http.HttpResponse`)::\n\n    with open(\"file.xml\", \"w\") as out:\n        xml_serializer.serialize(SomeModel.objects.all(), stream=out)\n\n.. note::\n\n    Calling :func:`~django.core.serializers.get_serializer` with an unknown\n    :ref:`format <serialization-formats>` will raise a\n    ``django.core.serializers.SerializerDoesNotExist`` exception.\n\nSubset of fields\n~~~~~~~~~~~~~~~~\n\nIf you only want a subset of fields to be serialized, you can\nspecify a ``fields`` argument to the serializer::\n\n    from django.core import serializers\n    data = serializers.serialize('xml', SomeModel.objects.all(), fields=('name','size'))\n\nIn this example, only the ``name`` and ``size`` attributes of each model will\nbe serialized.\n\n.. note::\n\n    Depending on your model, you may find that it is not possible to\n    deserialize a model that only serializes a subset of its fields. If a\n    serialized object doesn't specify all the fields that are required by a\n    model, the deserializer will not be able to save deserialized instances.\n\nInherited Models\n~~~~~~~~~~~~~~~~\n\nIf you have a model that is defined using an :ref:`abstract base class\n<abstract-base-classes>`, you don't have to do anything special to serialize\nthat model. Just call the serializer on the object (or objects) that you want to\nserialize, and the output will be a complete representation of the serialized\nobject.\n\nHowever, if you have a model that uses :ref:`multi-table inheritance\n<multi-table-inheritance>`, you also need to serialize all of the base classes\nfor the model. This is because only the fields that are locally defined on the\nmodel will be serialized. For example, consider the following models::\n\n    class Place(models.Model):\n        name = models.CharField(max_length=50)\n\n    class Restaurant(Place):\n        serves_hot_dogs = models.BooleanField()\n\nIf you only serialize the Restaurant model::\n\n    data = serializers.serialize('xml', Restaurant.objects.all())\n\nthe fields on the serialized output will only contain the ``serves_hot_dogs``\nattribute. The ``name`` attribute of the base class will be ignored.\n\nIn order to fully serialize your ``Restaurant`` instances, you will need to\nserialize the ``Place`` models as well::\n\n    all_objects = list(Restaurant.objects.all()) + list(Place.objects.all())\n    data = serializers.serialize('xml', all_objects)\n\nDeserializing data\n------------------\n\nDeserializing data is also a fairly simple operation::\n\n    for obj in serializers.deserialize(\"xml\", data):\n        do_something_with(obj)\n\nAs you can see, the ``deserialize`` function takes the same format argument as\n``serialize``, a string or stream of data, and returns an iterator.\n\nHowever, here it gets slightly complicated. The objects returned by the\n``deserialize`` iterator *aren't* simple Django objects. Instead, they are\nspecial ``DeserializedObject`` instances that wrap a created -- but unsaved --\nobject and any associated relationship data.\n\nCalling ``DeserializedObject.save()`` saves the object to the database.\n\nThis ensures that deserializing is a non-destructive operation even if the\ndata in your serialized representation doesn't match what's currently in the\ndatabase. Usually, working with these ``DeserializedObject`` instances looks\nsomething like::\n\n    for deserialized_object in serializers.deserialize(\"xml\", data):\n        if object_should_be_saved(deserialized_object):\n            deserialized_object.save()\n\nIn other words, the usual use is to examine the deserialized objects to make\nsure that they are \"appropriate\" for saving before doing so.  Of course, if you\ntrust your data source you could just save the object and move on.\n\nThe Django object itself can be inspected as ``deserialized_object.object``.\n\n.. versionadded:: 1.5\n\nIf fields in the serialized data do not exist on a model,\na ``DeserializationError`` will be raised unless the ``ignorenonexistent``\nargument is passed in as True::\n\n    serializers.deserialize(\"xml\", data, ignorenonexistent=True)\n\n.. _serialization-formats:\n\nSerialization formats\n---------------------\n\nDjango supports a number of serialization formats, some of which require you\nto install third-party Python modules:\n\n==========  ==============================================================\nIdentifier  Information\n==========  ==============================================================\n``xml``     Serializes to and from a simple XML dialect.\n\n``json``    Serializes to and from JSON_.\n\n``yaml``    Serializes to YAML (YAML Ain't a Markup Language). This\n            serializer is only available if PyYAML_ is installed.\n==========  ==============================================================\n\n.. _json: http://json.org/\n.. _PyYAML: http://www.pyyaml.org/\n\nNotes for specific serialization formats\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\njson\n^^^^\n\nBe aware that not all Django output can be passed unmodified to :mod:`json`.\nIn particular, :ref:`lazy translation objects <lazy-translations>` need a\n`special encoder`_ written for them. Something like this will work::\n\n    import json\n    from django.utils.functional import Promise\n    from django.utils.encoding import force_text\n\n    class LazyEncoder(json.JSONEncoder):\n        def default(self, obj):\n            if isinstance(obj, Promise):\n                return force_text(obj)\n            return super(LazyEncoder, self).default(obj)\n\n.. _special encoder: http://docs.python.org/library/json.html#encoders-and-decoders\n\n.. _topics-serialization-natural-keys:\n\nNatural keys\n------------\n\nThe default serialization strategy for foreign keys and many-to-many relations\nis to serialize the value of the primary key(s) of the objects in the relation.\nThis strategy works well for most objects, but it can cause difficulty in some\ncircumstances.\n\nConsider the case of a list of objects that have a foreign key referencing\n:class:`~django.contrib.contenttypes.models.ContentType`. If you're going to\nserialize an object that refers to a content type, then you need to have a way\nto refer to that content type to begin with. Since ``ContentType`` objects are\nautomatically created by Django during the database synchronization process,\nthe primary key of a given content type isn't easy to predict; it will\ndepend on how and when :djadmin:`syncdb` was executed. This is true for all\nmodels which automatically generate objects, notably including\n:class:`~django.contrib.auth.models.Permission`,\n:class:`~django.contrib.auth.models.Group`, and\n:class:`~django.contrib.auth.models.User`.\n\n.. warning::\n\n    You should never include automatically generated objects in a fixture or\n    other serialized data. By chance, the primary keys in the fixture\n    may match those in the database and loading the fixture will\n    have no effect. In the more likely case that they don't match, the fixture\n    loading will fail with an :class:`~django.db.IntegrityError`.\n\nThere is also the matter of convenience. An integer id isn't always\nthe most convenient way to refer to an object; sometimes, a\nmore natural reference would be helpful.\n\nIt is for these reasons that Django provides *natural keys*. A natural\nkey is a tuple of values that can be used to uniquely identify an\nobject instance without using the primary key value.\n\nDeserialization of natural keys\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nConsider the following two models::\n\n    from django.db import models\n\n    class Person(models.Model):\n        first_name = models.CharField(max_length=100)\n        last_name = models.CharField(max_length=100)\n\n        birthdate = models.DateField()\n\n        class Meta:\n            unique_together = (('first_name', 'last_name'),)\n\n    class Book(models.Model):\n        name = models.CharField(max_length=100)\n        author = models.ForeignKey(Person)\n\nOrdinarily, serialized data for ``Book`` would use an integer to refer to\nthe author. For example, in JSON, a Book might be serialized as::\n\n    ...\n    {\n        \"pk\": 1,\n        \"model\": \"store.book\",\n        \"fields\": {\n            \"name\": \"Mostly Harmless\",\n            \"author\": 42\n        }\n    }\n    ...\n\nThis isn't a particularly natural way to refer to an author. It\nrequires that you know the primary key value for the author; it also\nrequires that this primary key value is stable and predictable.\n\nHowever, if we add natural key handling to Person, the fixture becomes\nmuch more humane. To add natural key handling, you define a default\nManager for Person with a ``get_by_natural_key()`` method. In the case\nof a Person, a good natural key might be the pair of first and last\nname::\n\n    from django.db import models\n\n    class PersonManager(models.Manager):\n        def get_by_natural_key(self, first_name, last_name):\n            return self.get(first_name=first_name, last_name=last_name)\n\n    class Person(models.Model):\n        objects = PersonManager()\n\n        first_name = models.CharField(max_length=100)\n        last_name = models.CharField(max_length=100)\n\n        birthdate = models.DateField()\n\n        class Meta:\n            unique_together = (('first_name', 'last_name'),)\n\nNow books can use that natural key to refer to ``Person`` objects::\n\n    ...\n    {\n        \"pk\": 1,\n        \"model\": \"store.book\",\n        \"fields\": {\n            \"name\": \"Mostly Harmless\",\n            \"author\": [\"Douglas\", \"Adams\"]\n        }\n    }\n    ...\n\nWhen you try to load this serialized data, Django will use the\n``get_by_natural_key()`` method to resolve ``[\"Douglas\", \"Adams\"]``\ninto the primary key of an actual ``Person`` object.\n\n.. note::\n\n    Whatever fields you use for a natural key must be able to uniquely\n    identify an object. This will usually mean that your model will\n    have a uniqueness clause (either unique=True on a single field, or\n    ``unique_together`` over multiple fields) for the field or fields\n    in your natural key. However, uniqueness doesn't need to be\n    enforced at the database level. If you are certain that a set of\n    fields will be effectively unique, you can still use those fields\n    as a natural key.\n\nSerialization of natural keys\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nSo how do you get Django to emit a natural key when serializing an object?\nFirstly, you need to add another method -- this time to the model itself::\n\n    class Person(models.Model):\n        objects = PersonManager()\n\n        first_name = models.CharField(max_length=100)\n        last_name = models.CharField(max_length=100)\n\n        birthdate = models.DateField()\n\n        def natural_key(self):\n            return (self.first_name, self.last_name)\n\n        class Meta:\n            unique_together = (('first_name', 'last_name'),)\n\nThat method should always return a natural key tuple -- in this\nexample, ``(first name, last name)``. Then, when you call\n``serializers.serialize()``, you provide a ``use_natural_keys=True``\nargument::\n\n    >>> serializers.serialize('json', [book1, book2], indent=2, use_natural_keys=True)\n\nWhen ``use_natural_keys=True`` is specified, Django will use the\n``natural_key()`` method to serialize any reference to objects of the\ntype that defines the method.\n\nIf you are using :djadmin:`dumpdata` to generate serialized data, you\nuse the :djadminopt:`--natural` command line flag to generate natural keys.\n\n.. note::\n\n    You don't need to define both ``natural_key()`` and\n    ``get_by_natural_key()``. If you don't want Django to output\n    natural keys during serialization, but you want to retain the\n    ability to load natural keys, then you can opt to not implement\n    the ``natural_key()`` method.\n\n    Conversely, if (for some strange reason) you want Django to output\n    natural keys during serialization, but *not* be able to load those\n    key values, just don't define the ``get_by_natural_key()`` method.\n\nDependencies during serialization\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nSince natural keys rely on database lookups to resolve references, it\nis important that the data exists before it is referenced. You can't make\na \"forward reference\" with natural keys -- the data you're referencing\nmust exist before you include a natural key reference to that data.\n\nTo accommodate this limitation, calls to :djadmin:`dumpdata` that use\nthe :djadminopt:`--natural` option will serialize any model with a\n``natural_key()`` method before serializing standard primary key objects.\n\nHowever, this may not always be enough. If your natural key refers to\nanother object (by using a foreign key or natural key to another object\nas part of a natural key), then you need to be able to ensure that\nthe objects on which a natural key depends occur in the serialized data\nbefore the natural key requires them.\n\nTo control this ordering, you can define dependencies on your\n``natural_key()`` methods. You do this by setting a ``dependencies``\nattribute on the ``natural_key()`` method itself.\n\nFor example, let's add a natural key to the ``Book`` model from the\nexample above::\n\n    class Book(models.Model):\n        name = models.CharField(max_length=100)\n        author = models.ForeignKey(Person)\n\n        def natural_key(self):\n            return (self.name,) + self.author.natural_key()\n\nThe natural key for a ``Book`` is a combination of its name and its\nauthor. This means that ``Person`` must be serialized before ``Book``.\nTo define this dependency, we add one extra line::\n\n        def natural_key(self):\n            return (self.name,) + self.author.natural_key()\n        natural_key.dependencies = ['example_app.person']\n\nThis definition ensures that all ``Person`` objects are serialized before\nany ``Book`` objects. In turn, any object referencing ``Book`` will be\nserialized after both ``Person`` and ``Book`` have been serialized.\n"
  },
  {
    "path": "Django-1.5.1/docs/topics/settings.txt",
    "content": "===============\nDjango settings\n===============\n\nA Django settings file contains all the configuration of your Django\ninstallation. This document explains how settings work and which settings are\navailable.\n\nThe basics\n==========\n\nA settings file is just a Python module with module-level variables.\n\nHere are a couple of example settings::\n\n    DEBUG = False\n    DEFAULT_FROM_EMAIL = 'webmaster@example.com'\n    TEMPLATE_DIRS = ('/home/templates/mike', '/home/templates/john')\n\nBecause a settings file is a Python module, the following apply:\n\n* It doesn't allow for Python syntax errors.\n* It can assign settings dynamically using normal Python syntax.\n  For example::\n\n      MY_SETTING = [str(i) for i in range(30)]\n\n* It can import values from other settings files.\n\n.. _django-settings-module:\n\nDesignating the settings\n========================\n\n.. envvar:: DJANGO_SETTINGS_MODULE\n\nWhen you use Django, you have to tell it which settings you're using. Do this\nby using an environment variable, ``DJANGO_SETTINGS_MODULE``.\n\nThe value of ``DJANGO_SETTINGS_MODULE`` should be in Python path syntax, e.g.\n``mysite.settings``. Note that the settings module should be on the\nPython `import search path`_.\n\n.. _import search path: http://diveintopython.net/getting_to_know_python/everything_is_an_object.html\n\nThe django-admin.py utility\n---------------------------\n\nWhen using :doc:`django-admin.py </ref/django-admin>`, you can either set the\nenvironment variable once, or explicitly pass in the settings module each time\nyou run the utility.\n\nExample (Unix Bash shell)::\n\n    export DJANGO_SETTINGS_MODULE=mysite.settings\n    django-admin.py runserver\n\nExample (Windows shell)::\n\n    set DJANGO_SETTINGS_MODULE=mysite.settings\n    django-admin.py runserver\n\nUse the ``--settings`` command-line argument to specify the settings manually::\n\n    django-admin.py runserver --settings=mysite.settings\n\n.. _django-admin.py: ../django-admin/\n\nOn the server (mod_wsgi)\n--------------------------\n\nIn your live server environment, you'll need to tell your WSGI\napplication what settings file to use. Do that with ``os.environ``::\n\n    import os\n\n    os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'\n\nRead the :doc:`Django mod_wsgi documentation\n</howto/deployment/wsgi/modwsgi>` for more information and other common\nelements to a Django WSGI application.\n\nDefault settings\n================\n\nA Django settings file doesn't have to define any settings if it doesn't need\nto. Each setting has a sensible default value. These defaults live in the\nmodule :file:`django/conf/global_settings.py`.\n\nHere's the algorithm Django uses in compiling settings:\n\n* Load settings from ``global_settings.py``.\n* Load settings from the specified settings file, overriding the global\n  settings as necessary.\n\nNote that a settings file should *not* import from ``global_settings``, because\nthat's redundant.\n\nSeeing which settings you've changed\n------------------------------------\n\nThere's an easy way to view which of your settings deviate from the default\nsettings. The command ``python manage.py diffsettings`` displays differences\nbetween the current settings file and Django's default settings.\n\nFor more, see the :djadmin:`diffsettings` documentation.\n\nUsing settings in Python code\n=============================\n\nIn your Django apps, use settings by importing the object\n``django.conf.settings``. Example::\n\n    from django.conf import settings\n\n    if settings.DEBUG:\n        # Do something\n\nNote that ``django.conf.settings`` isn't a module -- it's an object. So\nimporting individual settings is not possible::\n\n    from django.conf.settings import DEBUG  # This won't work.\n\nAlso note that your code should *not* import from either ``global_settings`` or\nyour own settings file. ``django.conf.settings`` abstracts the concepts of\ndefault settings and site-specific settings; it presents a single interface.\nIt also decouples the code that uses settings from the location of your\nsettings.\n\nAltering settings at runtime\n============================\n\nYou shouldn't alter settings in your applications at runtime. For example,\ndon't do this in a view::\n\n    from django.conf import settings\n\n    settings.DEBUG = True   # Don't do this!\n\nThe only place you should assign to settings is in a settings file.\n\nSecurity\n========\n\nBecause a settings file contains sensitive information, such as the database\npassword, you should make every attempt to limit access to it. For example,\nchange its file permissions so that only you and your Web server's user can\nread it. This is especially important in a shared-hosting environment.\n\nAvailable settings\n==================\n\nFor a full list of available settings, see the :doc:`settings reference </ref/settings>`.\n\nCreating your own settings\n==========================\n\nThere's nothing stopping you from creating your own settings, for your own\nDjango apps. Just follow these conventions:\n\n* Setting names are in all uppercase.\n* Don't reinvent an already-existing setting.\n\nFor settings that are sequences, Django itself uses tuples, rather than lists,\nbut this is only a convention.\n\n.. _settings-without-django-settings-module:\n\nUsing settings without setting DJANGO_SETTINGS_MODULE\n=====================================================\n\nIn some cases, you might want to bypass the ``DJANGO_SETTINGS_MODULE``\nenvironment variable. For example, if you're using the template system by\nitself, you likely don't want to have to set up an environment variable\npointing to a settings module.\n\nIn these cases, you can configure Django's settings manually. Do this by\ncalling:\n\n.. function:: django.conf.settings.configure(default_settings, **settings)\n\nExample::\n\n    from django.conf import settings\n\n    settings.configure(DEBUG=True, TEMPLATE_DEBUG=True,\n        TEMPLATE_DIRS=('/home/web-apps/myapp', '/home/web-apps/base'))\n\nPass ``configure()`` as many keyword arguments as you'd like, with each keyword\nargument representing a setting and its value. Each argument name should be all\nuppercase, with the same name as the settings described above. If a particular\nsetting is not passed to ``configure()`` and is needed at some later point,\nDjango will use the default setting value.\n\nConfiguring Django in this fashion is mostly necessary -- and, indeed,\nrecommended -- when you're using a piece of the framework inside a larger\napplication.\n\nConsequently, when configured via ``settings.configure()``, Django will not\nmake any modifications to the process environment variables (see the\ndocumentation of :setting:`TIME_ZONE` for why this would normally occur). It's\nassumed that you're already in full control of your environment in these\ncases.\n\nCustom default settings\n-----------------------\n\nIf you'd like default values to come from somewhere other than\n``django.conf.global_settings``, you can pass in a module or class that\nprovides the default settings as the ``default_settings`` argument (or as the\nfirst positional argument) in the call to ``configure()``.\n\nIn this example, default settings are taken from ``myapp_defaults``, and the\n:setting:`DEBUG` setting is set to ``True``, regardless of its value in\n``myapp_defaults``::\n\n    from django.conf import settings\n    from myapp import myapp_defaults\n\n    settings.configure(default_settings=myapp_defaults, DEBUG=True)\n\nThe following example, which uses ``myapp_defaults`` as a positional argument,\nis equivalent::\n\n    settings.configure(myapp_defaults, DEBUG=True)\n\nNormally, you will not need to override the defaults in this fashion. The\nDjango defaults are sufficiently tame that you can safely use them. Be aware\nthat if you do pass in a new default module, it entirely *replaces* the Django\ndefaults, so you must specify a value for every possible setting that might be\nused in that code you are importing. Check in\n``django.conf.settings.global_settings`` for the full list.\n\nEither configure() or DJANGO_SETTINGS_MODULE is required\n--------------------------------------------------------\n\nIf you're not setting the ``DJANGO_SETTINGS_MODULE`` environment variable, you\n*must* call ``configure()`` at some point before using any code that reads\nsettings.\n\nIf you don't set ``DJANGO_SETTINGS_MODULE`` and don't call ``configure()``,\nDjango will raise an ``ImportError`` exception the first time a setting\nis accessed.\n\nIf you set ``DJANGO_SETTINGS_MODULE``, access settings values somehow, *then*\ncall ``configure()``, Django will raise a ``RuntimeError`` indicating\nthat settings have already been configured. There is a property just for this\npurpose:\n\n.. attribute: django.conf.settings.configured\n\nFor example::\n\n    from django.conf import settings\n    if not settings.configured:\n        settings.configure(myapp_defaults, DEBUG=True)\n\nAlso, it's an error to call ``configure()`` more than once, or to call\n``configure()`` after any setting has been accessed.\n\nIt boils down to this: Use exactly one of either ``configure()`` or\n``DJANGO_SETTINGS_MODULE``. Not both, and not neither.\n\n.. _@login_required: ../authentication/#the-login-required-decorator\n"
  },
  {
    "path": "Django-1.5.1/docs/topics/signals.txt",
    "content": "=======\nSignals\n=======\n\n.. module:: django.dispatch\n   :synopsis: Signal dispatch\n\nDjango includes a \"signal dispatcher\" which helps allow decoupled applications\nget notified when actions occur elsewhere in the framework. In a nutshell,\nsignals allow certain *senders* to notify a set of *receivers* that some action\nhas taken place. They're especially useful when many pieces of code may be\ninterested in the same events.\n\nDjango provides a :doc:`set of built-in signals </ref/signals>` that let user\ncode get notified by Django itself of certain actions. These include some useful\nnotifications:\n\n* :data:`django.db.models.signals.pre_save` &\n  :data:`django.db.models.signals.post_save`\n\n  Sent before or after a model's :meth:`~django.db.models.Model.save` method\n  is called.\n\n* :data:`django.db.models.signals.pre_delete` &\n  :data:`django.db.models.signals.post_delete`\n\n  Sent before or after a model's :meth:`~django.db.models.Model.delete`\n  method or queryset's :meth:`~django.db.models.query.QuerySet.delete`\n  method is called.\n\n* :data:`django.db.models.signals.m2m_changed`\n\n  Sent when a :class:`~django.db.models.ManyToManyField` on a model is changed.\n\n* :data:`django.core.signals.request_started` &\n  :data:`django.core.signals.request_finished`\n\n  Sent when Django starts or finishes an HTTP request.\n\nSee the :doc:`built-in signal documentation </ref/signals>` for a complete list,\nand a complete explanation of each signal.\n\nYou can also `define and send your own custom signals`_; see below.\n\n.. _define and send your own custom signals: `defining and sending signals`_\n\nListening to signals\n====================\n\nTo receive a signal, you need to register a *receiver* function that gets\ncalled when the signal is sent by using the\n:meth:`.Signal.connect` method:\n\n.. method:: Signal.connect(receiver, [sender=None, weak=True, dispatch_uid=None])\n\n    :param receiver: The callback function which will be connected to this\n        signal. See :ref:`receiver-functions` for more information.\n\n    :param sender: Specifies a particular sender to receive signals from. See\n        :ref:`connecting-to-specific-signals` for more information.\n\n    :param weak: Django stores signal handlers as weak references by\n        default. Thus, if your receiver is a local function, it may be\n        garbage collected. To prevent this, pass ``weak=False`` when you call\n        the signal's ``connect()`` method.\n\n    :param dispatch_uid: A unique identifier for a signal receiver in cases\n        where duplicate signals may be sent. See\n        :ref:`preventing-duplicate-signals` for more information.\n\nLet's see how this works by registering a signal that\ngets called after each HTTP request is finished. We'll be connecting to the\n:data:`~django.core.signals.request_finished` signal.\n\n.. _receiver-functions:\n\nReceiver functions\n------------------\n\nFirst, we need to define a receiver function. A receiver can be any Python\nfunction or method:\n\n.. code-block:: python\n\n    def my_callback(sender, **kwargs):\n        print(\"Request finished!\")\n\nNotice that the function takes a ``sender`` argument, along with wildcard\nkeyword arguments (``**kwargs``); all signal handlers must take these arguments.\n\nWe'll look at senders `a bit later`_, but right now look at the ``**kwargs``\nargument. All signals send keyword arguments, and may change those keyword\narguments at any time. In the case of\n:data:`~django.core.signals.request_finished`, it's documented as sending no\narguments, which means we might be tempted to write our signal handling as\n``my_callback(sender)``.\n\n.. _a bit later: `connecting to signals sent by specific senders`_\n\nThis would be wrong -- in fact, Django will throw an error if you do so. That's\nbecause at any point arguments could get added to the signal and your receiver\nmust be able to handle those new arguments.\n\n.. _connecting-receiver-functions:\n\nConnecting receiver functions\n-----------------------------\n\nThere are two ways you can connect a receiver to a signal. You can take the\nmanual connect route:\n\n.. code-block:: python\n\n    from django.core.signals import request_finished\n\n    request_finished.connect(my_callback)\n\nAlternatively, you can use a ``receiver`` decorator when you define your\nreceiver:\n\n.. code-block:: python\n\n    from django.core.signals import request_finished\n    from django.dispatch import receiver\n\n    @receiver(request_finished)\n    def my_callback(sender, **kwargs):\n        print(\"Request finished!\")\n\nNow, our ``my_callback`` function will be called each time a request finishes.\n\nNote that ``receiver`` can also take a list of signals to connect a function\nto.\n\n.. versionchanged:: 1.5\n\nThe ability to pass a list of signals was added.\n\n.. admonition:: Where should this code live?\n\n    You can put signal handling and registration code anywhere you like.\n    However, you'll need to make sure that the module it's in gets imported\n    early on so that the signal handling gets registered before any signals need\n    to be sent. This makes your app's ``models.py`` a good place to put\n    registration of signal handlers.\n\n.. _connecting-to-specific-signals:\n\nConnecting to signals sent by specific senders\n----------------------------------------------\n\nSome signals get sent many times, but you'll only be interested in receiving a\ncertain subset of those signals. For example, consider the\n:data:`django.db.models.signals.pre_save` signal sent before a model gets saved.\nMost of the time, you don't need to know when *any* model gets saved -- just\nwhen one *specific* model is saved.\n\nIn these cases, you can register to receive signals sent only by particular\nsenders. In the case of :data:`django.db.models.signals.pre_save`, the sender\nwill be the model class being saved, so you can indicate that you only want\nsignals sent by some model:\n\n.. code-block:: python\n\n    from django.db.models.signals import pre_save\n    from django.dispatch import receiver\n    from myapp.models import MyModel\n\n    @receiver(pre_save, sender=MyModel)\n    def my_handler(sender, **kwargs):\n        ...\n\nThe ``my_handler`` function will only be called when an instance of ``MyModel``\nis saved.\n\nDifferent signals use different objects as their senders; you'll need to consult\nthe :doc:`built-in signal documentation </ref/signals>` for details of each\nparticular signal.\n\n.. _preventing-duplicate-signals:\n\nPreventing duplicate signals\n----------------------------\n\nIn some circumstances, the module in which you are connecting signals may be\nimported multiple times. This can cause your receiver function to be\nregistered more than once, and thus called multiples times for a single signal\nevent.\n\nIf this behavior is problematic (such as when using signals to\nsend an email whenever a model is saved), pass a unique identifier as\nthe ``dispatch_uid`` argument to identify your receiver function. This\nidentifier will usually be a string, although any hashable object will\nsuffice. The end result is that your receiver function will only be\nbound to the signal once for each unique ``dispatch_uid`` value.\n\n.. code-block:: python\n\n    from django.core.signals import request_finished\n\n    request_finished.connect(my_callback, dispatch_uid=\"my_unique_identifier\")\n\nDefining and sending signals\n============================\n\nYour applications can take advantage of the signal infrastructure and provide\nits own signals.\n\nDefining signals\n----------------\n\n.. class:: Signal([providing_args=list])\n\nAll signals are :class:`django.dispatch.Signal` instances. The\n``providing_args`` is a list of the names of arguments the signal will provide\nto listeners. This is purely documentational, however, as there is nothing that\nchecks that the signal actually provides these arguments to its listeners.\n\nFor example:\n\n.. code-block:: python\n\n    import django.dispatch\n\n    pizza_done = django.dispatch.Signal(providing_args=[\"toppings\", \"size\"])\n\nThis declares a ``pizza_done`` signal that will provide receivers with\n``toppings`` and ``size`` arguments.\n\nRemember that you're allowed to change this list of arguments at any time, so getting the API right on the first try isn't necessary.\n\nSending signals\n---------------\n\nThere are two ways to send signals in Django.\n\n.. method:: Signal.send(sender, **kwargs)\n.. method:: Signal.send_robust(sender, **kwargs)\n\nTo send a signal, call either :meth:`Signal.send` or :meth:`Signal.send_robust`.\nYou must provide the ``sender`` argument, and may provide as many other keyword\narguments as you like.\n\nFor example, here's how sending our ``pizza_done`` signal might look:\n\n.. code-block:: python\n\n    class PizzaStore(object):\n        ...\n\n        def send_pizza(self, toppings, size):\n            pizza_done.send(sender=self, toppings=toppings, size=size)\n            ...\n\nBoth ``send()`` and ``send_robust()`` return a list of tuple pairs\n``[(receiver, response), ... ]``, representing the list of called receiver\nfunctions and their response values.\n\n``send()`` differs from ``send_robust()`` in how exceptions raised by receiver\nfunctions are handled. ``send()`` does *not* catch any exceptions raised by\nreceivers; it simply allows errors to propagate. Thus not all receivers may\nbe notified of a signal in the face of an error.\n\n``send_robust()`` catches all errors derived from Python's ``Exception`` class,\nand ensures all receivers are notified of the signal. If an error occurs, the\nerror instance is returned in the tuple pair for the receiver that raised the error.\n\nDisconnecting signals\n=====================\n\n.. method:: Signal.disconnect([receiver=None, sender=None, weak=True, dispatch_uid=None])\n\nTo disconnect a receiver from a signal, call :meth:`Signal.disconnect`. The\narguments are as described in :meth:`.Signal.connect`.\n\nThe *receiver* argument indicates the registered receiver to disconnect. It may\nbe ``None`` if ``dispatch_uid`` is used to identify the receiver.\n"
  },
  {
    "path": "Django-1.5.1/docs/topics/signing.txt",
    "content": "=====================\nCryptographic signing\n=====================\n\n.. module:: django.core.signing\n   :synopsis: Django's signing framework.\n\n.. versionadded:: 1.4\n\nThe golden rule of Web application security is to never trust data from\nuntrusted sources. Sometimes it can be useful to pass data through an\nuntrusted medium. Cryptographically signed values can be passed through an\nuntrusted channel safe in the knowledge that any tampering will be detected.\n\nDjango provides both a low-level API for signing values and a high-level API\nfor setting and reading signed cookies, one of the most common uses of\nsigning in Web applications.\n\nYou may also find signing useful for the following:\n\n* Generating \"recover my account\" URLs for sending to users who have\n  lost their password.\n\n* Ensuring data stored in hidden form fields has not been tampered with.\n\n* Generating one-time secret URLs for allowing temporary access to a\n  protected resource, for example a downloadable file that a user has\n  paid for.\n\nProtecting the SECRET_KEY\n=========================\n\nWhen you create a new Django project using :djadmin:`startproject`, the\n``settings.py`` file is generated automatically and gets a random\n:setting:`SECRET_KEY` value. This value is the key to securing signed\ndata -- it is vital you keep this secure, or attackers could use it to\ngenerate their own signed values.\n\nUsing the low-level API\n=======================\n\n.. class:: Signer\n\nDjango's signing methods live in the ``django.core.signing`` module.\nTo sign a value, first instantiate a ``Signer`` instance::\n\n    >>> from django.core.signing import Signer\n    >>> signer = Signer()\n    >>> value = signer.sign('My string')\n    >>> value\n    'My string:GdMGD6HNQ_qdgxYP8yBZAdAIV1w'\n\nThe signature is appended to the end of the string, following the colon.\nYou can retrieve the original value using the ``unsign`` method::\n\n    >>> original = signer.unsign(value)\n    >>> original\n    u'My string'\n\nIf the signature or value have been altered in any way, a\n``django.core.signing.BadSignature`` exception will be raised::\n\n    >>> from django.core import signing\n    >>> value += 'm'\n    >>> try:\n    ...    original = signer.unsign(value)\n    ... except signing.BadSignature:\n    ...    print(\"Tampering detected!\")\n\nBy default, the ``Signer`` class uses the :setting:`SECRET_KEY` setting to\ngenerate signatures. You can use a different secret by passing it to the\n``Signer`` constructor::\n\n    >>> signer = Signer('my-other-secret')\n    >>> value = signer.sign('My string')\n    >>> value\n    'My string:EkfQJafvGyiofrdGnuthdxImIJw'\n\nUsing the salt argument\n-----------------------\n\nIf you do not wish for every occurrence of a particular string to have the same\nsignature hash, you can use the optional ``salt`` argument to the ``Signer``\nclass. Using a salt will seed the signing hash function with both the salt and\nyour :setting:`SECRET_KEY`::\n\n    >>> signer = Signer()\n    >>> signer.sign('My string')\n    'My string:GdMGD6HNQ_qdgxYP8yBZAdAIV1w'\n    >>> signer = Signer(salt='extra')\n    >>> signer.sign('My string')\n    'My string:Ee7vGi-ING6n02gkcJ-QLHg6vFw'\n    >>> signer.unsign('My string:Ee7vGi-ING6n02gkcJ-QLHg6vFw')\n    u'My string'\n\nUsing salt in this way puts the different signatures into different\nnamespaces.  A signature that comes from one namespace (a particular salt\nvalue) cannot be used to validate the same plaintext string in a different\nnamespace that is using a different salt setting. The result is to prevent an\nattacker from using a signed string generated in one place in the code as input\nto another piece of code that is generating (and verifying) signatures using a\ndifferent salt.\n\nUnlike your :setting:`SECRET_KEY`, your salt argument does not need to stay\nsecret.\n\nVerifying timestamped values\n----------------------------\n\n.. class:: TimestampSigner\n\n``TimestampSigner`` is a subclass of :class:`~Signer` that appends a signed\ntimestamp to the value. This allows you to confirm that a signed value was\ncreated within a specified period of time::\n\n    >>> from django.core.signing import TimestampSigner\n    >>> signer = TimestampSigner()\n    >>> value = signer.sign('hello')\n    >>> value\n    'hello:1NMg5H:oPVuCqlJWmChm1rA2lyTUtelC-c'\n    >>> signer.unsign(value)\n    u'hello'\n    >>> signer.unsign(value, max_age=10)\n    ...\n    SignatureExpired: Signature age 15.5289158821 > 10 seconds\n    >>> signer.unsign(value, max_age=20)\n    u'hello'\n\nProtecting complex data structures\n----------------------------------\n\nIf you wish to protect a list, tuple or dictionary you can do so using the\nsigning module's ``dumps`` and ``loads`` functions. These imitate Python's\npickle module, but use JSON serialization under the hood. JSON ensures that\neven if your :setting:`SECRET_KEY` is stolen an attacker will not be able\nto execute arbitrary commands by exploiting the pickle format.::\n\n    >>> from django.core import signing\n    >>> value = signing.dumps({\"foo\": \"bar\"})\n    >>> value\n    'eyJmb28iOiJiYXIifQ:1NMg1b:zGcDE4-TCkaeGzLeW9UQwZesciI'\n    >>> signing.loads(value)\n    {'foo': 'bar'}\n\n.. function:: dumps(obj, key=None, salt='django.core.signing', compress=False)\n\n    Returns URL-safe, sha1 signed base64 compressed JSON string.\n\n.. function:: loads(string, key=None, salt='django.core.signing', max_age=None)\n\n    Reverse of dumps(), raises ``BadSignature`` if signature fails.\n"
  },
  {
    "path": "Django-1.5.1/docs/topics/templates.txt",
    "content": "============================\nThe Django template language\n============================\n\n.. admonition:: About this document\n\n    This document explains the language syntax of the Django template system. If\n    you're looking for a more technical perspective on how it works and how to\n    extend it, see :doc:`/ref/templates/api`.\n\nDjango's template language is designed to strike a balance between power and\nease. It's designed to feel comfortable to those used to working with HTML. If\nyou have any exposure to other text-based template languages, such as Smarty_\nor CheetahTemplate_, you should feel right at home with Django's templates.\n\n.. admonition:: Philosophy\n\n    If you have a background in programming, or if you're used to languages\n    which mix programming code directly into HTML, you'll want to bear in\n    mind that the Django template system is not simply Python embedded into\n    HTML. This is by design: the template system is meant to express\n    presentation, not program logic.\n\n    The Django template system provides tags which function similarly to some\n    programming constructs -- an :ttag:`if` tag for boolean tests, a :ttag:`for`\n    tag for looping, etc. -- but these are not simply executed as the\n    corresponding Python code, and the template system will not execute\n    arbitrary Python expressions. Only the tags, filters and syntax listed below\n    are supported by default (although you can add :doc:`your own extensions\n    </howto/custom-template-tags>` to the template language as needed).\n\n.. _`The Django template language: For Python programmers`: ../templates_python/\n.. _Smarty: http://smarty.php.net/\n.. _CheetahTemplate: http://www.cheetahtemplate.org/\n\nTemplates\n=========\n\n.. highlightlang:: html+django\n\nA template is simply a text file. It can generate any text-based format (HTML,\nXML, CSV, etc.).\n\nA template contains **variables**, which get replaced with values when the\ntemplate is evaluated, and **tags**, which control the logic of the template.\n\nBelow is a minimal template that illustrates a few basics. Each element will be\nexplained later in this document.::\n\n    {% extends \"base_generic.html\" %}\n\n    {% block title %}{{ section.title }}{% endblock %}\n\n    {% block content %}\n    <h1>{{ section.title }}</h1>\n\n    {% for story in story_list %}\n    <h2>\n      <a href=\"{{ story.get_absolute_url }}\">\n        {{ story.headline|upper }}\n      </a>\n    </h2>\n    <p>{{ story.tease|truncatewords:\"100\" }}</p>\n    {% endfor %}\n    {% endblock %}\n\n.. admonition:: Philosophy\n\n    Why use a text-based template instead of an XML-based one (like Zope's\n    TAL)? We wanted Django's template language to be usable for more than\n    just XML/HTML templates. At World Online, we use it for emails,\n    JavaScript and CSV. You can use the template language for any text-based\n    format.\n\n    Oh, and one more thing: Making humans edit XML is sadistic!\n\nVariables\n=========\n\nVariables look like this: ``{{ variable }}``. When the template engine\nencounters a variable, it evaluates that variable and replaces it with the\nresult. Variable names consist of any combination of alphanumeric characters\nand the underscore (``\"_\"``). The dot (``\".\"``) also appears in variable\nsections, although that has a special meaning, as indicated below.\nImportantly, *you cannot have spaces or punctuation characters in variable\nnames.*\n\nUse a dot (``.``) to access attributes of a variable.\n\n.. admonition:: Behind the scenes\n\n    Technically, when the template system encounters a dot, it tries the\n    following lookups, in this order:\n\n    * Dictionary lookup\n    * Attribute lookup\n    * Method call\n    * List-index lookup\n\n    This can cause some unexpected behavior with objects that override\n    dictionary lookup. For example, consider the following code snippet that\n    attempts to loop over a ``collections.defaultdict``::\n\n        {% for k, v in defaultdict.iteritems %}\n            Do something with k and v here...\n        {% endfor %}\n\n    Because dictionary lookup happens first, that behavior kicks in and provides\n    a default value instead of using the intended ``.iteritems()``\n    method. In this case, consider converting to a dictionary first.\n\nIn the above example, ``{{ section.title }}`` will be replaced with the\n``title`` attribute of the ``section`` object.\n\nIf you use a variable that doesn't exist, the template system will insert\nthe value of the :setting:`TEMPLATE_STRING_IF_INVALID` setting, which is set\nto ``''`` (the empty string) by default.\n\nNote that \"bar\" in a template expression like ``{{ foo.bar }}`` will be\ninterpreted as a literal string and not using the value of the variable \"bar\",\nif one exists in the template context.\n\nFilters\n=======\n\nYou can modify variables for display by using **filters**.\n\nFilters look like this: ``{{ name|lower }}``. This displays the value of the\n``{{ name }}`` variable after being filtered through the :tfilter:`lower`\nfilter, which converts text to lowercase. Use a pipe (``|``) to apply a filter.\n\nFilters can be \"chained.\" The output of one filter is applied to the next.\n``{{ text|escape|linebreaks }}`` is a common idiom for escaping text contents,\nthen converting line breaks to ``<p>`` tags.\n\nSome filters take arguments. A filter argument looks like this: ``{{\nbio|truncatewords:30 }}``. This will display the first 30 words of the ``bio``\nvariable.\n\nFilter arguments that contain spaces must be quoted; for example, to join a\nlist with commas and spaced you'd use ``{{ list|join:\", \" }}``.\n\nDjango provides about thirty built-in template filters. You can read all about\nthem in the :ref:`built-in filter reference <ref-templates-builtins-filters>`.\nTo give you a taste of what's available, here are some of the more commonly\nused template filters:\n\n:tfilter:`default`\n    If a variable is false or empty, use given default. Otherwise, use the\n    value of the variable\n\n    For example::\n\n        {{ value|default:\"nothing\" }}\n\n    If ``value`` isn't provided or is empty, the above will display\n    \"``nothing``\".\n\n:tfilter:`length`\n    Returns the length of the value. This works for both strings and lists;\n    for example::\n\n        {{ value|length }}\n\n    If ``value`` is ``['a', 'b', 'c', 'd']``, the output will be ``4``.\n\n:tfilter:`striptags`\n    Strips all [X]HTML tags. For example::\n\n        {{ value|striptags }}\n\n    If ``value`` is ``\"<b>Joel</b> <button>is</button> a\n    <span>slug</span>\"``, the output will be ``\"Joel is a slug\"``.\n\nAgain, these are just a few examples; see the :ref:`built-in filter reference\n<ref-templates-builtins-filters>` for the complete list.\n\nYou can also create your own custom template filters; see\n:doc:`/howto/custom-template-tags`.\n\n.. seealso::\n\n    Django's admin interface can include a complete reference of all template\n    tags and filters available for a given site. See\n    :doc:`/ref/contrib/admin/admindocs`.\n\nTags\n====\n\nTags look like this: ``{% tag %}``. Tags are more complex than variables: Some\ncreate text in the output, some control flow by performing loops or logic, and\nsome load external information into the template to be used by later variables.\n\nSome tags require beginning and ending tags (i.e. ``{% tag %} ... tag contents\n... {% endtag %}``).\n\nDjango ships with about two dozen built-in template tags. You can read all about\nthem in the :ref:`built-in tag reference <ref-templates-builtins-tags>`. To give\nyou a taste of what's available, here are some of the more commonly used\ntags:\n\n:ttag:`for`\n    Loop over each item in an array.  For example, to display a list of athletes\n    provided in ``athlete_list``::\n\n        <ul>\n        {% for athlete in athlete_list %}\n            <li>{{ athlete.name }}</li>\n        {% endfor %}\n        </ul>\n\n:ttag:`if` and ``else``\n    Evaluates a variable, and if that variable is \"true\" the contents of the\n    block are displayed::\n\n        {% if athlete_list %}\n            Number of athletes: {{ athlete_list|length }}\n        {% else %}\n            No athletes.\n        {% endif %}\n\n    In the above, if ``athlete_list`` is not empty, the number of athletes\n    will be displayed by the ``{{ athlete_list|length }}`` variable.\n\n    You can also use filters and various operators in the :ttag:`if` tag::\n\n        {% if athlete_list|length > 1 %}\n           Team: {% for athlete in athlete_list %} ... {% endfor %}\n        {% else %}\n           Athlete: {{ athlete_list.0.name }}\n        {% endif %}\n\n    While the above example works, be aware that most template filters return\n    strings, so mathematical comparisons using filters will generally not work\n    as you expect. :tfilter:`length` is an exception.\n\n:ttag:`block` and :ttag:`extends`\n    Set up `template inheritance`_ (see below), a powerful way\n    of cutting down on \"boilerplate\" in templates.\n\nAgain, the above is only a selection of the whole list; see the :ref:`built-in\ntag reference <ref-templates-builtins-tags>` for the complete list.\n\nYou can also create your own custom template tags; see\n:doc:`/howto/custom-template-tags`.\n\n.. seealso::\n\n    Django's admin interface can include a complete reference of all template\n    tags and filters available for a given site. See\n    :doc:`/ref/contrib/admin/admindocs`.\n\n.. _template-comments:\n\nComments\n========\n\nTo comment-out part of a line in a template, use the comment syntax: ``{# #}``.\n\nFor example, this template would render as ``'hello'``::\n\n    {# greeting #}hello\n\nA comment can contain any template code, invalid or not. For example::\n\n    {# {% if foo %}bar{% else %} #}\n\nThis syntax can only be used for single-line comments (no newlines are permitted\nbetween the ``{#`` and ``#}`` delimiters). If you need to comment out a\nmultiline portion of the template, see the :ttag:`comment` tag.\n\n.. _template-inheritance:\n\nTemplate inheritance\n====================\n\nThe most powerful -- and thus the most complex -- part of Django's template\nengine is template inheritance. Template inheritance allows you to build a base\n\"skeleton\" template that contains all the common elements of your site and\ndefines **blocks** that child templates can override.\n\nIt's easiest to understand template inheritance by starting with an example::\n\n    <!DOCTYPE html>\n    <html lang=\"en\">\n    <head>\n        <link rel=\"stylesheet\" href=\"style.css\" />\n        <title>{% block title %}My amazing site{% endblock %}</title>\n    </head>\n\n    <body>\n        <div id=\"sidebar\">\n            {% block sidebar %}\n            <ul>\n                <li><a href=\"/\">Home</a></li>\n                <li><a href=\"/blog/\">Blog</a></li>\n            </ul>\n            {% endblock %}\n        </div>\n\n        <div id=\"content\">\n            {% block content %}{% endblock %}\n        </div>\n    </body>\n    </html>\n\nThis template, which we'll call ``base.html``, defines a simple HTML skeleton\ndocument that you might use for a simple two-column page. It's the job of\n\"child\" templates to fill the empty blocks with content.\n\nIn this example, the :ttag:`block` tag defines three blocks that child\ntemplates can fill in. All the :ttag:`block` tag does is to tell the template\nengine that a child template may override those portions of the template.\n\nA child template might look like this::\n\n    {% extends \"base.html\" %}\n\n    {% block title %}My amazing blog{% endblock %}\n\n    {% block content %}\n    {% for entry in blog_entries %}\n        <h2>{{ entry.title }}</h2>\n        <p>{{ entry.body }}</p>\n    {% endfor %}\n    {% endblock %}\n\nThe :ttag:`extends` tag is the key here. It tells the template engine that\nthis template \"extends\" another template. When the template system evaluates\nthis template, first it locates the parent -- in this case, \"base.html\".\n\nAt that point, the template engine will notice the three :ttag:`block` tags\nin ``base.html`` and replace those blocks with the contents of the child\ntemplate. Depending on the value of ``blog_entries``, the output might look\nlike::\n\n    <!DOCTYPE html>\n    <html lang=\"en\">\n    <head>\n        <link rel=\"stylesheet\" href=\"style.css\" />\n        <title>My amazing blog</title>\n    </head>\n\n    <body>\n        <div id=\"sidebar\">\n            <ul>\n                <li><a href=\"/\">Home</a></li>\n                <li><a href=\"/blog/\">Blog</a></li>\n            </ul>\n        </div>\n\n        <div id=\"content\">\n            <h2>Entry one</h2>\n            <p>This is my first entry.</p>\n\n            <h2>Entry two</h2>\n            <p>This is my second entry.</p>\n        </div>\n    </body>\n    </html>\n\nNote that since the child template didn't define the ``sidebar`` block, the\nvalue from the parent template is used instead. Content within a ``{% block %}``\ntag in a parent template is always used as a fallback.\n\nYou can use as many levels of inheritance as needed. One common way of using\ninheritance is the following three-level approach:\n\n* Create a ``base.html`` template that holds the main look-and-feel of your\n  site.\n* Create a ``base_SECTIONNAME.html`` template for each \"section\" of your\n  site. For example, ``base_news.html``, ``base_sports.html``. These\n  templates all extend ``base.html`` and include section-specific\n  styles/design.\n* Create individual templates for each type of page, such as a news\n  article or blog entry. These templates extend the appropriate section\n  template.\n\nThis approach maximizes code reuse and makes it easy to add items to shared\ncontent areas, such as section-wide navigation.\n\nHere are some tips for working with inheritance:\n\n* If you use :ttag:`{% extends %}<extends>` in a template, it must be the first template\n  tag in that template. Template inheritance won't work, otherwise.\n\n* More :ttag:`{% block %}<block>` tags in your base templates are better. Remember,\n  child templates don't have to define all parent blocks, so you can fill\n  in reasonable defaults in a number of blocks, then only define the ones\n  you need later. It's better to have more hooks than fewer hooks.\n\n* If you find yourself duplicating content in a number of templates, it\n  probably means you should move that content to a ``{% block %}`` in a\n  parent template.\n\n* If you need to get the content of the block from the parent template,\n  the ``{{ block.super }}`` variable will do the trick. This is useful\n  if you want to add to the contents of a parent block instead of\n  completely overriding it. Data inserted using ``{{ block.super }}`` will\n  not be automatically escaped (see the `next section`_), since it was\n  already escaped, if necessary, in the parent template.\n\n* For extra readability, you can optionally give a *name* to your\n  ``{% endblock %}`` tag. For example::\n\n      {% block content %}\n      ...\n      {% endblock content %}\n\n  In larger templates, this technique helps you see which ``{% block %}``\n  tags are being closed.\n\nFinally, note that you can't define multiple :ttag:`block` tags with the same\nname in the same template. This limitation exists because a block tag works in\n\"both\" directions. That is, a block tag doesn't just provide a hole to fill --\nit also defines the content that fills the hole in the *parent*. If there were\ntwo similarly-named :ttag:`block` tags in a template, that template's parent\nwouldn't know which one of the blocks' content to use.\n\n.. _next section: #automatic-html-escaping\n.. _automatic-html-escaping:\n\nAutomatic HTML escaping\n=======================\n\nWhen generating HTML from templates, there's always a risk that a variable will\ninclude characters that affect the resulting HTML. For example, consider this\ntemplate fragment::\n\n    Hello, {{ name }}.\n\nAt first, this seems like a harmless way to display a user's name, but consider\nwhat would happen if the user entered his name as this::\n\n    <script>alert('hello')</script>\n\nWith this name value, the template would be rendered as::\n\n    Hello, <script>alert('hello')</script>\n\n...which means the browser would pop-up a JavaScript alert box!\n\nSimilarly, what if the name contained a ``'<'`` symbol, like this?\n\n.. code-block:: html\n\n    <b>username\n\nThat would result in a rendered template like this::\n\n    Hello, <b>username\n\n...which, in turn, would result in the remainder of the Web page being bolded!\n\nClearly, user-submitted data shouldn't be trusted blindly and inserted directly\ninto your Web pages, because a malicious user could use this kind of hole to\ndo potentially bad things. This type of security exploit is called a\n`Cross Site Scripting`_ (XSS) attack.\n\nTo avoid this problem, you have two options:\n\n* One, you can make sure to run each untrusted variable through the\n  :tfilter:`escape` filter (documented below), which converts potentially\n  harmful HTML characters to unharmful ones. This was the default solution\n  in Django for its first few years, but the problem is that it puts the\n  onus on *you*, the developer / template author, to ensure you're escaping\n  everything. It's easy to forget to escape data.\n\n* Two, you can take advantage of Django's automatic HTML escaping. The\n  remainder of this section describes how auto-escaping works.\n\nBy default in Django, every template automatically escapes the output\nof every variable tag. Specifically, these five characters are\nescaped:\n\n* ``<`` is converted to ``&lt;``\n* ``>`` is converted to ``&gt;``\n* ``'`` (single quote) is converted to ``&#39;``\n* ``\"`` (double quote) is converted to ``&quot;``\n* ``&`` is converted to ``&amp;``\n\nAgain, we stress that this behavior is on by default. If you're using Django's\ntemplate system, you're protected.\n\n.. _Cross Site Scripting: http://en.wikipedia.org/wiki/Cross-site_scripting\n\nHow to turn it off\n------------------\n\nIf you don't want data to be auto-escaped, on a per-site, per-template level or\nper-variable level, you can turn it off in several ways.\n\nWhy would you want to turn it off? Because sometimes, template variables\ncontain data that you *intend* to be rendered as raw HTML, in which case you\ndon't want their contents to be escaped. For example, you might store a blob of\nHTML in your database and want to embed that directly into your template. Or,\nyou might be using Django's template system to produce text that is *not* HTML\n-- like an email message, for instance.\n\nFor individual variables\n~~~~~~~~~~~~~~~~~~~~~~~~\n\nTo disable auto-escaping for an individual variable, use the :tfilter:`safe`\nfilter::\n\n    This will be escaped: {{ data }}\n    This will not be escaped: {{ data|safe }}\n\nThink of *safe* as shorthand for *safe from further escaping* or *can be\nsafely interpreted as HTML*. In this example, if ``data`` contains ``'<b>'``,\nthe output will be::\n\n    This will be escaped: &lt;b&gt;\n    This will not be escaped: <b>\n\nFor template blocks\n~~~~~~~~~~~~~~~~~~~\n\nTo control auto-escaping for a template, wrap the template (or just a\nparticular section of the template) in the :ttag:`autoescape` tag, like so::\n\n    {% autoescape off %}\n        Hello {{ name }}\n    {% endautoescape %}\n\nThe :ttag:`autoescape` tag takes either ``on`` or ``off`` as its argument. At\ntimes, you might want to force auto-escaping when it would otherwise be\ndisabled. Here is an example template::\n\n    Auto-escaping is on by default. Hello {{ name }}\n\n    {% autoescape off %}\n        This will not be auto-escaped: {{ data }}.\n\n        Nor this: {{ other_data }}\n        {% autoescape on %}\n            Auto-escaping applies again: {{ name }}\n        {% endautoescape %}\n    {% endautoescape %}\n\nThe auto-escaping tag passes its effect onto templates that extend the\ncurrent one as well as templates included via the :ttag:`include` tag,\njust like all block tags. For example::\n\n    # base.html\n\n    {% autoescape off %}\n    <h1>{% block title %}{% endblock %}</h1>\n    {% block content %}\n    {% endblock %}\n    {% endautoescape %}\n\n\n    # child.html\n\n    {% extends \"base.html\" %}\n    {% block title %}This & that{% endblock %}\n    {% block content %}{{ greeting }}{% endblock %}\n\nBecause auto-escaping is turned off in the base template, it will also be\nturned off in the child template, resulting in the following rendered\nHTML when the ``greeting`` variable contains the string ``<b>Hello!</b>``::\n\n    <h1>This & that</h1>\n    <b>Hello!</b>\n\nNotes\n-----\n\nGenerally, template authors don't need to worry about auto-escaping very much.\nDevelopers on the Python side (people writing views and custom filters) need to\nthink about the cases in which data shouldn't be escaped, and mark data\nappropriately, so things Just Work in the template.\n\nIf you're creating a template that might be used in situations where you're\nnot sure whether auto-escaping is enabled, then add an :tfilter:`escape` filter\nto any variable that needs escaping. When auto-escaping is on, there's no\ndanger of the :tfilter:`escape` filter *double-escaping* data -- the\n:tfilter:`escape` filter does not affect auto-escaped variables.\n\n.. _string-literals-and-automatic-escaping:\n\nString literals and automatic escaping\n--------------------------------------\n\nAs we mentioned earlier, filter arguments can be strings::\n\n    {{ data|default:\"This is a string literal.\" }}\n\nAll string literals are inserted **without** any automatic escaping into the\ntemplate -- they act as if they were all passed through the :tfilter:`safe`\nfilter. The reasoning behind this is that the template author is in control of\nwhat goes into the string literal, so they can make sure the text is correctly\nescaped when the template is written.\n\nThis means you would write ::\n\n    {{ data|default:\"3 &lt; 2\" }}\n\n...rather than ::\n\n    {{ data|default:\"3 < 2\" }}  <-- Bad! Don't do this.\n\nThis doesn't affect what happens to data coming from the variable itself.\nThe variable's contents are still automatically escaped, if necessary, because\nthey're beyond the control of the template author.\n\n.. _template-accessing-methods:\n\nAccessing method calls\n======================\n\nMost method calls attached to objects are also available from within templates.\nThis means that templates have access to much more than just class attributes\n(like field names) and variables passed in from views. For example, the Django\nORM provides the :ref:`\"entry_set\"<topics-db-queries-related>` syntax for\nfinding a collection of objects related on a foreign key. Therefore, given\na model called \"comment\" with a foreign key relationship to a model called\n\"task\" you can loop through all comments attached to a given task like this::\n\n    {% for comment in task.comment_set.all %}\n        {{ comment }}\n    {% endfor %}\n\nSimilarly, :doc:`QuerySets</ref/models/querysets>` provide a ``count()`` method\nto count the number of objects they contain. Therefore, you can obtain a count\nof all comments related to the current task with::\n\n    {{ task.comment_set.all.count }}\n\nAnd of course you can easily access methods you've explicitly defined on your\nown models::\n\n    # In model\n    class Task(models.Model):\n        def foo(self):\n            return \"bar\"\n\n    # In template\n    {{ task.foo }}\n\nBecause Django intentionally limits the amount of logic processing available\nin the template language, it is not possible to pass arguments to method calls\naccessed from within templates. Data should be calculated in views, then passed\nto templates for display.\n\n.. _loading-custom-template-libraries:\n\nCustom tag and filter libraries\n===============================\n\nCertain applications provide custom tag and filter libraries. To access them in\na template, use the :ttag:`load` tag::\n\n    {% load comments %}\n\n    {% comment_form for blogs.entries entry.id with is_public yes %}\n\nIn the above, the :ttag:`load` tag loads the ``comments`` tag library, which then\nmakes the ``comment_form`` tag available for use. Consult the documentation\narea in your admin to find the list of custom libraries in your installation.\n\nThe :ttag:`load` tag can take multiple library names, separated by spaces.\nExample::\n\n    {% load comments i18n %}\n\nSee :doc:`/howto/custom-template-tags` for information on writing your own custom\ntemplate libraries.\n\nCustom libraries and template inheritance\n-----------------------------------------\n\nWhen you load a custom tag or filter library, the tags/filters are only made\navailable to the current template -- not any parent or child templates along\nthe template-inheritance path.\n\nFor example, if a template ``foo.html`` has ``{% load comments %}``, a child\ntemplate (e.g., one that has ``{% extends \"foo.html\" %}``) will *not* have\naccess to the comments template tags and filters. The child template is\nresponsible for its own ``{% load comments %}``.\n\nThis is a feature for the sake of maintainability and sanity.\n"
  },
  {
    "path": "Django-1.5.1/docs/topics/testing/advanced.txt",
    "content": "=======================\nAdvanced testing topics\n=======================\n\nThe request factory\n===================\n\n.. module:: django.test.client\n\n.. class:: RequestFactory\n\nThe :class:`~django.test.client.RequestFactory` shares the same API as\nthe test client. However, instead of behaving like a browser, the\nRequestFactory provides a way to generate a request instance that can\nbe used as the first argument to any view. This means you can test a\nview function the same way as you would test any other function -- as\na black box, with exactly known inputs, testing for specific outputs.\n\nThe API for the :class:`~django.test.client.RequestFactory` is a slightly\nrestricted subset of the test client API:\n\n* It only has access to the HTTP methods :meth:`~Client.get()`,\n  :meth:`~Client.post()`, :meth:`~Client.put()`,\n  :meth:`~Client.delete()`, :meth:`~Client.head()` and\n  :meth:`~Client.options()`.\n\n* These methods accept all the same arguments *except* for\n  ``follows``. Since this is just a factory for producing\n  requests, it's up to you to handle the response.\n\n* It does not support middleware. Session and authentication\n  attributes must be supplied by the test itself if required\n  for the view to function properly.\n\nExample\n-------\n\nThe following is a simple unit test using the request factory::\n\n    from django.utils import unittest\n    from django.test.client import RequestFactory\n\n    class SimpleTest(unittest.TestCase):\n        def setUp(self):\n            # Every test needs access to the request factory.\n            self.factory = RequestFactory()\n\n        def test_details(self):\n            # Create an instance of a GET request.\n            request = self.factory.get('/customer/details')\n\n            # Test my_view() as if it were deployed at /customer/details\n            response = my_view(request)\n            self.assertEqual(response.status_code, 200)\n\n.. _topics-testing-advanced-multidb:\n\nTests and multiple databases\n============================\n\n.. _topics-testing-masterslave:\n\nTesting master/slave configurations\n-----------------------------------\n\nIf you're testing a multiple database configuration with master/slave\nreplication, this strategy of creating test databases poses a problem.\nWhen the test databases are created, there won't be any replication,\nand as a result, data created on the master won't be seen on the\nslave.\n\nTo compensate for this, Django allows you to define that a database is\na *test mirror*. Consider the following (simplified) example database\nconfiguration::\n\n    DATABASES = {\n        'default': {\n            'ENGINE': 'django.db.backends.mysql',\n            'NAME': 'myproject',\n            'HOST': 'dbmaster',\n             # ... plus some other settings\n        },\n        'slave': {\n            'ENGINE': 'django.db.backends.mysql',\n            'NAME': 'myproject',\n            'HOST': 'dbslave',\n            'TEST_MIRROR': 'default'\n            # ... plus some other settings\n        }\n    }\n\nIn this setup, we have two database servers: ``dbmaster``, described\nby the database alias ``default``, and ``dbslave`` described by the\nalias ``slave``. As you might expect, ``dbslave`` has been configured\nby the database administrator as a read slave of ``dbmaster``, so in\nnormal activity, any write to ``default`` will appear on ``slave``.\n\nIf Django created two independent test databases, this would break any\ntests that expected replication to occur. However, the ``slave``\ndatabase has been configured as a test mirror (using the\n:setting:`TEST_MIRROR` setting), indicating that under testing,\n``slave`` should be treated as a mirror of ``default``.\n\nWhen the test environment is configured, a test version of ``slave``\nwill *not* be created. Instead the connection to ``slave``\nwill be redirected to point at ``default``. As a result, writes to\n``default`` will appear on ``slave`` -- but because they are actually\nthe same database, not because there is data replication between the\ntwo databases.\n\n.. _topics-testing-creation-dependencies:\n\nControlling creation order for test databases\n---------------------------------------------\n\nBy default, Django will always create the ``default`` database first.\nHowever, no guarantees are made on the creation order of any other\ndatabases in your test setup.\n\nIf your database configuration requires a specific creation order, you\ncan specify the dependencies that exist using the\n:setting:`TEST_DEPENDENCIES` setting. Consider the following\n(simplified) example database configuration::\n\n    DATABASES = {\n        'default': {\n             # ... db settings\n             'TEST_DEPENDENCIES': ['diamonds']\n        },\n        'diamonds': {\n            # ... db settings\n        },\n        'clubs': {\n            # ... db settings\n            'TEST_DEPENDENCIES': ['diamonds']\n        },\n        'spades': {\n            # ... db settings\n            'TEST_DEPENDENCIES': ['diamonds','hearts']\n        },\n        'hearts': {\n            # ... db settings\n            'TEST_DEPENDENCIES': ['diamonds','clubs']\n        }\n    }\n\nUnder this configuration, the ``diamonds`` database will be created first,\nas it is the only database alias without dependencies. The ``default`` and\n``clubs`` alias will be created next (although the order of creation of this\npair is not guaranteed); then ``hearts``; and finally ``spades``.\n\nIf there are any circular dependencies in the\n:setting:`TEST_DEPENDENCIES` definition, an ``ImproperlyConfigured``\nexception will be raised.\n\nRunning tests outside the test runner\n=====================================\n\nIf you want to run tests outside of ``./manage.py test`` -- for example,\nfrom a shell prompt -- you will need to set up the test\nenvironment first. Django provides a convenience method to do this::\n\n    >>> from django.test.utils import setup_test_environment\n    >>> setup_test_environment()\n\nThis convenience method sets up the test database, and puts other\nDjango features into modes that allow for repeatable testing.\n\nThe call to :meth:`~django.test.utils.setup_test_environment` is made\nautomatically as part of the setup of ``./manage.py test``. You only\nneed to manually invoke this method if you're not using running your\ntests via Django's test runner.\n\n.. _other-testing-frameworks:\n\nUsing different testing frameworks\n==================================\n\nClearly, :mod:`doctest` and :mod:`unittest` are not the only Python testing\nframeworks. While Django doesn't provide explicit support for alternative\nframeworks, it does provide a way to invoke tests constructed for an\nalternative framework as if they were normal Django tests.\n\nWhen you run ``./manage.py test``, Django looks at the :setting:`TEST_RUNNER`\nsetting to determine what to do. By default, :setting:`TEST_RUNNER` points to\n``'django.test.simple.DjangoTestSuiteRunner'``. This class defines the default Django\ntesting behavior. This behavior involves:\n\n#. Performing global pre-test setup.\n\n#. Looking for unit tests and doctests in the ``models.py`` and\n   ``tests.py`` files in each installed application.\n\n#. Creating the test databases.\n\n#. Running ``syncdb`` to install models and initial data into the test\n   databases.\n\n#. Running the unit tests and doctests that are found.\n\n#. Destroying the test databases.\n\n#. Performing global post-test teardown.\n\nIf you define your own test runner class and point :setting:`TEST_RUNNER` at\nthat class, Django will execute your test runner whenever you run\n``./manage.py test``. In this way, it is possible to use any test framework\nthat can be executed from Python code, or to modify the Django test execution\nprocess to satisfy whatever testing requirements you may have.\n\n.. _topics-testing-test_runner:\n\nDefining a test runner\n----------------------\n\n.. currentmodule:: django.test.simple\n\nA test runner is a class defining a ``run_tests()`` method. Django ships\nwith a ``DjangoTestSuiteRunner`` class that defines the default Django\ntesting behavior. This class defines the ``run_tests()`` entry point,\nplus a selection of other methods that are used to by ``run_tests()`` to\nset up, execute and tear down the test suite.\n\n.. class:: DjangoTestSuiteRunner(verbosity=1, interactive=True, failfast=True, **kwargs)\n\n    ``verbosity`` determines the amount of notification and debug information\n    that will be printed to the console; ``0`` is no output, ``1`` is normal\n    output, and ``2`` is verbose output.\n\n    If ``interactive`` is ``True``, the test suite has permission to ask the\n    user for instructions when the test suite is executed. An example of this\n    behavior would be asking for permission to delete an existing test\n    database. If ``interactive`` is ``False``, the test suite must be able to\n    run without any manual intervention.\n\n    If ``failfast`` is ``True``, the test suite will stop running after the\n    first test failure is detected.\n\n    Django will, from time to time, extend the capabilities of\n    the test runner by adding new arguments. The ``**kwargs`` declaration\n    allows for this expansion. If you subclass ``DjangoTestSuiteRunner`` or\n    write your own test runner, ensure accept and handle the ``**kwargs``\n    parameter.\n\n    .. versionadded:: 1.4\n\n    Your test runner may also define additional command-line options.\n    If you add an ``option_list`` attribute to a subclassed test runner,\n    those options will be added to the list of command-line options that\n    the :djadmin:`test` command can use.\n\nAttributes\n~~~~~~~~~~\n\n.. attribute:: DjangoTestSuiteRunner.option_list\n\n    .. versionadded:: 1.4\n\n    This is the tuple of ``optparse`` options which will be fed into the\n    management command's ``OptionParser`` for parsing arguments. See the\n    documentation for Python's ``optparse`` module for more details.\n\nMethods\n~~~~~~~\n\n.. method:: DjangoTestSuiteRunner.run_tests(test_labels, extra_tests=None, **kwargs)\n\n    Run the test suite.\n\n    ``test_labels`` is a list of strings describing the tests to be run. A test\n    label can take one of three forms:\n\n    * ``app.TestCase.test_method`` -- Run a single test method in a test\n      case.\n    * ``app.TestCase`` -- Run all the test methods in a test case.\n    * ``app`` -- Search for and run all tests in the named application.\n\n    If ``test_labels`` has a value of ``None``, the test runner should run\n    search for tests in all the applications in :setting:`INSTALLED_APPS`.\n\n    ``extra_tests`` is a list of extra ``TestCase`` instances to add to the\n    suite that is executed by the test runner. These extra tests are run\n    in addition to those discovered in the modules listed in ``test_labels``.\n\n    This method should return the number of tests that failed.\n\n.. method:: DjangoTestSuiteRunner.setup_test_environment(**kwargs)\n\n    Sets up the test environment ready for testing.\n\n.. method:: DjangoTestSuiteRunner.build_suite(test_labels, extra_tests=None, **kwargs)\n\n    Constructs a test suite that matches the test labels provided.\n\n    ``test_labels`` is a list of strings describing the tests to be run. A test\n    label can take one of three forms:\n\n    * ``app.TestCase.test_method`` -- Run a single test method in a test\n      case.\n    * ``app.TestCase`` -- Run all the test methods in a test case.\n    * ``app`` -- Search for and run all tests in the named application.\n\n    If ``test_labels`` has a value of ``None``, the test runner should run\n    search for tests in all the applications in :setting:`INSTALLED_APPS`.\n\n    ``extra_tests`` is a list of extra ``TestCase`` instances to add to the\n    suite that is executed by the test runner. These extra tests are run\n    in addition to those discovered in the modules listed in ``test_labels``.\n\n    Returns a ``TestSuite`` instance ready to be run.\n\n.. method:: DjangoTestSuiteRunner.setup_databases(**kwargs)\n\n    Creates the test databases.\n\n    Returns a data structure that provides enough detail to undo the changes\n    that have been made. This data will be provided to the ``teardown_databases()``\n    function at the conclusion of testing.\n\n.. method:: DjangoTestSuiteRunner.run_suite(suite, **kwargs)\n\n    Runs the test suite.\n\n    Returns the result produced by the running the test suite.\n\n.. method:: DjangoTestSuiteRunner.teardown_databases(old_config, **kwargs)\n\n    Destroys the test databases, restoring pre-test conditions.\n\n    ``old_config`` is a data structure defining the changes in the\n    database configuration that need to be reversed. It is the return\n    value of the ``setup_databases()`` method.\n\n.. method:: DjangoTestSuiteRunner.teardown_test_environment(**kwargs)\n\n    Restores the pre-test environment.\n\n.. method:: DjangoTestSuiteRunner.suite_result(suite, result, **kwargs)\n\n    Computes and returns a return code based on a test suite, and the result\n    from that test suite.\n\n\nTesting utilities\n-----------------\n\n.. module:: django.test.utils\n   :synopsis: Helpers to write custom test runners.\n\nTo assist in the creation of your own test runner, Django provides a number of\nutility methods in the ``django.test.utils`` module.\n\n.. function:: setup_test_environment()\n\n    Performs any global pre-test setup, such as the installing the\n    instrumentation of the template rendering system and setting up\n    the dummy email outbox.\n\n.. function:: teardown_test_environment()\n\n    Performs any global post-test teardown, such as removing the black\n    magic hooks into the template system and restoring normal email\n    services.\n\n.. currentmodule:: django.db.connection.creation\n\nThe creation module of the database backend (``connection.creation``)\nalso provides some utilities that can be useful during testing.\n\n.. function:: create_test_db([verbosity=1, autoclobber=False])\n\n    Creates a new test database and runs ``syncdb`` against it.\n\n    ``verbosity`` has the same behavior as in ``run_tests()``.\n\n    ``autoclobber`` describes the behavior that will occur if a\n    database with the same name as the test database is discovered:\n\n    * If ``autoclobber`` is ``False``, the user will be asked to\n      approve destroying the existing database. ``sys.exit`` is\n      called if the user does not approve.\n\n    * If autoclobber is ``True``, the database will be destroyed\n      without consulting the user.\n\n    Returns the name of the test database that it created.\n\n    ``create_test_db()`` has the side effect of modifying the value of\n    :setting:`NAME` in :setting:`DATABASES` to match the name of the test\n    database.\n\n.. function:: destroy_test_db(old_database_name, [verbosity=1])\n\n    Destroys the database whose name is the value of :setting:`NAME` in\n    :setting:`DATABASES`, and sets :setting:`NAME` to the value of\n    ``old_database_name``.\n\n    The ``verbosity`` argument has the same behavior as for\n    :class:`~django.test.simple.DjangoTestSuiteRunner`.\n\n.. _topics-testing-code-coverage:\n\nIntegration with coverage.py\n============================\n\nCode coverage describes how much source code has been tested. It shows which\nparts of your code are being exercised by tests and which are not. It's an\nimportant part of testing applications, so it's strongly recommended to check\nthe coverage of your tests.\n\nDjango can be easily integrated with `coverage.py`_, a tool for measuring code\ncoverage of Python programs. First, `install coverage.py`_. Next, run the\nfollowing from your project folder containing ``manage.py``::\n\n   coverage run --source='.' manage.py test myapp\n\nThis runs your tests and collects coverage data of the executed files in your\nproject. You can see a report of this data by typing following command::\n\n   coverage report\n\nNote that some Django code was executed while running tests, but it is not\nlisted here because of the ``source`` flag passed to the previous command.\n\nFor more options like annotated HTML listings detailing missed lines, see the\n`coverage.py`_ docs.\n\n.. _coverage.py: http://nedbatchelder.com/code/coverage/\n.. _install coverage.py: http://pypi.python.org/pypi/coverage\n"
  },
  {
    "path": "Django-1.5.1/docs/topics/testing/doctests.txt",
    "content": "===================\nDjango and doctests\n===================\n\nDoctests use Python's standard :mod:`doctest` module, which searches your\ndocstrings for statements that resemble a session of the Python interactive\ninterpreter. A full explanation of how :mod:`doctest` works is out of the scope\nof this document; read Python's official documentation for the details.\n\n.. admonition:: What's a **docstring**?\n\n    A good explanation of docstrings (and some guidelines for using them\n    effectively) can be found in :pep:`257`:\n\n        A docstring is a string literal that occurs as the first statement in\n        a module, function, class, or method definition.  Such a docstring\n        becomes the ``__doc__`` special attribute of that object.\n\n    For example, this function has a docstring that describes what it does::\n\n        def add_two(num):\n            \"Return the result of adding two to the provided number.\"\n            return num + 2\n\n    Because tests often make great documentation, putting tests directly in\n    your docstrings is an effective way to document *and* test your code.\n\nAs with unit tests, for a given Django application, the test runner looks for\ndoctests in two places:\n\n* The ``models.py`` file. You can define module-level doctests and/or a\n  doctest for individual models. It's common practice to put\n  application-level doctests in the module docstring and model-level\n  doctests in the model docstrings.\n\n* A file called ``tests.py`` in the application directory -- i.e., the\n  directory that holds ``models.py``. This file is a hook for any and all\n  doctests you want to write that aren't necessarily related to models.\n\nThis example doctest is equivalent to the example given in the unittest section\nabove::\n\n    # models.py\n\n    from django.db import models\n\n    class Animal(models.Model):\n        \"\"\"\n        An animal that knows how to make noise\n\n        # Create some animals\n        >>> lion = Animal.objects.create(name=\"lion\", sound=\"roar\")\n        >>> cat = Animal.objects.create(name=\"cat\", sound=\"meow\")\n\n        # Make 'em speak\n        >>> lion.speak()\n        'The lion says \"roar\"'\n        >>> cat.speak()\n        'The cat says \"meow\"'\n        \"\"\"\n        name = models.CharField(max_length=20)\n        sound = models.CharField(max_length=20)\n\n        def speak(self):\n            return 'The %s says \"%s\"' % (self.name, self.sound)\n\nWhen you :ref:`run your tests <running-tests>`, the test runner will find this\ndocstring, notice that portions of it look like an interactive Python session,\nand execute those lines while checking that the results match.\n\nIn the case of model tests, note that the test runner takes care of creating\nits own test database. That is, any test that accesses a database -- by\ncreating and saving model instances, for example -- will not affect your\nproduction database. However, the database is not refreshed between doctests,\nso if your doctest requires a certain state you should consider flushing the\ndatabase or loading a fixture. (See the section on :ref:`fixtures\n<topics-testing-fixtures>` for more on this.) Note that to use this feature,\nthe database user Django is connecting as must have ``CREATE DATABASE``\nrights.\n\nFor more details about :mod:`doctest`, see the Python documentation.\n"
  },
  {
    "path": "Django-1.5.1/docs/topics/testing/index.txt",
    "content": "=================\nTesting in Django\n=================\n\n.. toctree::\n   :hidden:\n\n   overview\n   doctests\n   advanced\n\nAutomated testing is an extremely useful bug-killing tool for the modern\nWeb developer. You can use a collection of tests -- a **test suite** -- to\nsolve, or avoid, a number of problems:\n\n* When you're writing new code, you can use tests to validate your code\n  works as expected.\n\n* When you're refactoring or modifying old code, you can use tests to\n  ensure your changes haven't affected your application's behavior\n  unexpectedly.\n\nTesting a Web application is a complex task, because a Web application is made\nof several layers of logic -- from HTTP-level request handling, to form\nvalidation and processing, to template rendering. With Django's test-execution\nframework and assorted utilities, you can simulate requests, insert test data,\ninspect your application's output and generally verify your code is doing what\nit should be doing.\n\nThe best part is, it's really easy.\n\nUnit tests v. doctests\n======================\n\nThere are two primary ways to write tests with Django, corresponding to the\ntwo test frameworks that ship in the Python standard library. The two\nframeworks are:\n\n* **Unit tests** -- tests that are expressed as methods on a Python class\n  that subclasses :class:`unittest.TestCase` or Django's customized\n  :class:`~django.test.TestCase`. For example::\n\n      import unittest\n\n      class MyFuncTestCase(unittest.TestCase):\n          def testBasic(self):\n              a = ['larry', 'curly', 'moe']\n              self.assertEqual(my_func(a, 0), 'larry')\n              self.assertEqual(my_func(a, 1), 'curly')\n\n* **Doctests** -- tests that are embedded in your functions' docstrings and\n  are written in a way that emulates a session of the Python interactive\n  interpreter. For example::\n\n      def my_func(a_list, idx):\n          \"\"\"\n          >>> a = ['larry', 'curly', 'moe']\n          >>> my_func(a, 0)\n          'larry'\n          >>> my_func(a, 1)\n          'curly'\n          \"\"\"\n          return a_list[idx]\n\nWhich should I use?\n-------------------\n\nBecause Django supports both of the standard Python test frameworks, it's up to\nyou and your tastes to decide which one to use. You can even decide to use\n*both*.\n\nFor developers new to testing, however, this choice can seem confusing. Here,\nthen, are a few key differences to help you decide which approach is right for\nyou:\n\n* If you've been using Python for a while, :mod:`doctest` will probably feel\n  more \"pythonic\". It's designed to make writing tests as easy as possible,\n  so it requires no overhead of writing classes or methods. You simply put\n  tests in docstrings. This has the added advantage of serving as\n  documentation (and correct documentation, at that!). However, while\n  doctests are good for some simple example code, they are not very good if\n  you want to produce either high quality, comprehensive tests or high\n  quality documentation. Test failures are often difficult to debug\n  as it can be unclear exactly why the test failed. Thus, doctests should\n  generally be avoided and used primarily for documentation examples only.\n\n* The :mod:`unittest` framework will probably feel very familiar to\n  developers coming from Java. :mod:`unittest` is inspired by Java's JUnit,\n  so you'll feel at home with this method if you've used JUnit or any test\n  framework inspired by JUnit.\n\n* If you need to write a bunch of tests that share similar code, then\n  you'll appreciate the :mod:`unittest` framework's organization around\n  classes and methods. This makes it easy to abstract common tasks into\n  common methods. The framework also supports explicit setup and/or cleanup\n  routines, which give you a high level of control over the environment\n  in which your test cases are run.\n\n* If you're writing tests for Django itself, you should use :mod:`unittest`.\n\nWhere to go from here\n=====================\n\nAs unit tests are preferred in Django, we treat them in detail in the\n:doc:`overview` document.\n\n:doc:`doctests` describes Django-specific features when using doctests.\n\nYou can also use any *other* Python test framework, Django provides an API and\ntools for that kind of integration. They are described in the\n:ref:`other-testing-frameworks` section of :doc:`advanced`.\n"
  },
  {
    "path": "Django-1.5.1/docs/topics/testing/overview.txt",
    "content": "===========================\nTesting Django applications\n===========================\n\n.. module:: django.test\n   :synopsis: Testing tools for Django applications.\n\n.. seealso::\n\n    The :doc:`testing tutorial </intro/tutorial05>` and the\n    :doc:`advanced testing topics </topics/testing/advanced>`.\n\nThis document is split into two primary sections. First, we explain how to write\ntests with Django. Then, we explain how to run them.\n\nWriting tests\n=============\n\nDjango's unit tests use a Python standard library module: :mod:`unittest`. This\nmodule defines tests in class-based approach.\n\n.. admonition:: unittest2\n\n    Python 2.7 introduced some major changes to the unittest library,\n    adding some extremely useful features. To ensure that every Django\n    project can benefit from these new features, Django ships with a\n    copy of unittest2_, a copy of the Python 2.7 unittest library,\n    backported for Python 2.5 compatibility.\n\n    To access this library, Django provides the\n    ``django.utils.unittest`` module alias. If you are using Python\n    2.7, or you have installed unittest2 locally, Django will map the\n    alias to the installed version of the unittest library. Otherwise,\n    Django will use its own bundled version of unittest2.\n\n    To use this alias, simply use::\n\n        from django.utils import unittest\n\n    wherever you would have historically used::\n\n        import unittest\n\n    If you want to continue to use the base unittest library, you can --\n    you just won't get any of the nice new unittest2 features.\n\n.. _unittest2: http://pypi.python.org/pypi/unittest2\n\nFor a given Django application, the test runner looks for unit tests in two\nplaces:\n\n* The ``models.py`` file. The test runner looks for any subclass of\n  :class:`unittest.TestCase` in this module.\n\n* A file called ``tests.py`` in the application directory -- i.e., the\n  directory that holds ``models.py``. Again, the test runner looks for any\n  subclass of :class:`unittest.TestCase` in this module.\n\nHere is an example :class:`unittest.TestCase` subclass::\n\n    from django.utils import unittest\n    from myapp.models import Animal\n\n    class AnimalTestCase(unittest.TestCase):\n        def setUp(self):\n            self.lion = Animal(name=\"lion\", sound=\"roar\")\n            self.cat = Animal(name=\"cat\", sound=\"meow\")\n\n        def test_animals_can_speak(self):\n            \"\"\"Animals that can speak are correctly identified\"\"\"\n            self.assertEqual(self.lion.speak(), 'The lion says \"roar\"')\n            self.assertEqual(self.cat.speak(), 'The cat says \"meow\"')\n\nWhen you :ref:`run your tests <running-tests>`, the default behavior of the test\nutility is to find all the test cases (that is, subclasses of\n:class:`unittest.TestCase`) in ``models.py`` and ``tests.py``, automatically\nbuild a test suite out of those test cases, and run that suite.\n\nThere is a second way to define the test suite for a module: if you define a\nfunction called ``suite()`` in either ``models.py`` or ``tests.py``, the\nDjango test runner will use that function to construct the test suite for that\nmodule. This follows the `suggested organization`_ for unit tests. See the\nPython documentation for more details on how to construct a complex test\nsuite.\n\nFor more details about :mod:`unittest`, see the Python documentation.\n\n.. _suggested organization: http://docs.python.org/library/unittest.html#organizing-tests\n\n.. warning::\n\n    If your tests rely on database access such as creating or querying models,\n    be sure to create your test classes as subclasses of\n    :class:`django.test.TestCase` rather than :class:`unittest.TestCase`.\n\n    In the example above, we instantiate some models but do not save them to\n    the database. Using :class:`unittest.TestCase` avoids the cost of running\n    each test in a transaction and flushing the database, but for most\n    applications the scope of tests you will be able to write this way will\n    be fairly limited, so it's easiest to use :class:`django.test.TestCase`.\n\n.. _running-tests:\n\nRunning tests\n=============\n\nOnce you've written tests, run them using the :djadmin:`test` command of\nyour project's ``manage.py`` utility::\n\n    $ ./manage.py test\n\nBy default, this will run every test in every application in\n:setting:`INSTALLED_APPS`. If you only want to run tests for a particular\napplication, add the application name to the command line. For example, if your\n:setting:`INSTALLED_APPS` contains ``'myproject.polls'`` and\n``'myproject.animals'``, you can run the ``myproject.animals`` unit tests alone\nwith this command::\n\n    $ ./manage.py test animals\n\nNote that we used ``animals``, not ``myproject.animals``.\n\nYou can be even *more* specific by naming an individual test case. To\nrun a single test case in an application (for example, the\n``AnimalTestCase`` described in the \"Writing unit tests\" section), add\nthe name of the test case to the label on the command line::\n\n    $ ./manage.py test animals.AnimalTestCase\n\nAnd it gets even more granular than that! To run a *single* test\nmethod inside a test case, add the name of the test method to the\nlabel::\n\n    $ ./manage.py test animals.AnimalTestCase.test_animals_can_speak\n\nYou can use the same rules if you're using doctests. Django will use the\ntest label as a path to the test method or class that you want to run.\nIf your ``models.py`` or ``tests.py`` has a function with a doctest, or\nclass with a class-level doctest, you can invoke that test by appending the\nname of the test method or class to the label::\n\n    $ ./manage.py test animals.classify\n\nIf you want to run the doctest for a specific method in a class, add the\nname of the method to the label::\n\n    $ ./manage.py test animals.Classifier.run\n\nIf you're using a ``__test__`` dictionary to specify doctests for a\nmodule, Django will use the label as a key in the ``__test__`` dictionary\nfor defined in ``models.py`` and ``tests.py``.\n\nIf you press ``Ctrl-C`` while the tests are running, the test runner will\nwait for the currently running test to complete and then exit gracefully.\nDuring a graceful exit the test runner will output details of any test\nfailures, report on how many tests were run and how many errors and failures\nwere encountered, and destroy any test databases as usual. Thus pressing\n``Ctrl-C`` can be very useful if you forget to pass the :djadminopt:`--failfast`\noption, notice that some tests are unexpectedly failing, and want to get details\non the failures without waiting for the full test run to complete.\n\nIf you do not want to wait for the currently running test to finish, you\ncan press ``Ctrl-C`` a second time and the test run will halt immediately,\nbut not gracefully. No details of the tests run before the interruption will\nbe reported, and any test databases created by the run will not be destroyed.\n\n.. admonition:: Test with warnings enabled\n\n    It's a good idea to run your tests with Python warnings enabled:\n    ``python -Wall manage.py test``. The ``-Wall`` flag tells Python to\n    display deprecation warnings. Django, like many other Python libraries,\n    uses these warnings to flag when features are going away. It also might\n    flag areas in your code that aren't strictly wrong but could benefit\n    from a better implementation.\n\n.. _the-test-database:\n\nThe test database\n-----------------\n\nTests that require a database (namely, model tests) will not use your \"real\"\n(production) database. Separate, blank databases are created for the tests.\n\nRegardless of whether the tests pass or fail, the test databases are destroyed\nwhen all the tests have been executed.\n\nBy default the test databases get their names by prepending ``test_``\nto the value of the :setting:`NAME` settings for the databases\ndefined in :setting:`DATABASES`. When using the SQLite database engine\nthe tests will by default use an in-memory database (i.e., the\ndatabase will be created in memory, bypassing the filesystem\nentirely!). If you want to use a different database name, specify\n:setting:`TEST_NAME` in the dictionary for any given database in\n:setting:`DATABASES`.\n\nAside from using a separate database, the test runner will otherwise\nuse all of the same database settings you have in your settings file:\n:setting:`ENGINE <DATABASE-ENGINE>`, :setting:`USER`, :setting:`HOST`, etc. The\ntest database is created by the user specified by :setting:`USER`, so you'll\nneed to make sure that the given user account has sufficient privileges to\ncreate a new database on the system.\n\nFor fine-grained control over the character encoding of your test\ndatabase, use the :setting:`TEST_CHARSET` option. If you're using\nMySQL, you can also use the :setting:`TEST_COLLATION` option to\ncontrol the particular collation used by the test database. See the\n:doc:`settings documentation </ref/settings>` for details of these\nadvanced settings.\n\n.. admonition:: Finding data from your production database when running tests?\n\n    If your code attempts to access the database when its modules are compiled,\n    this will occur *before* the test database is set up, with potentially\n    unexpected results. For example, if you have a database query in\n    module-level code and a real database exists, production data could pollute\n    your tests. *It is a bad idea to have such import-time database queries in\n    your code* anyway - rewrite your code so that it doesn't do this.\n\n.. seealso::\n\n    The :ref:`advanced multi-db testing topics <topics-testing-advanced-multidb>`.\n\nOrder in which tests are executed\n---------------------------------\n\nIn order to guarantee that all ``TestCase`` code starts with a clean database,\nthe Django test runner reorders tests in the following way:\n\n* First, all unittests (including :class:`unittest.TestCase`,\n  :class:`~django.test.SimpleTestCase`, :class:`~django.test.TestCase` and\n  :class:`~django.test.TransactionTestCase`) are run with no particular ordering\n  guaranteed nor enforced among them.\n\n* Then any other tests (e.g. doctests) that may alter the database without\n  restoring it to its original state are run.\n\n.. versionchanged:: 1.5\n    Before Django 1.5, the only guarantee was that\n    :class:`~django.test.TestCase` tests were always ran first, before any other\n    tests.\n\n.. note::\n\n    The new ordering of tests may reveal unexpected dependencies on test case\n    ordering. This is the case with doctests that relied on state left in the\n    database by a given :class:`~django.test.TransactionTestCase` test, they\n    must be updated to be able to run independently.\n\nOther test conditions\n---------------------\n\nRegardless of the value of the :setting:`DEBUG` setting in your configuration\nfile, all Django tests run with :setting:`DEBUG`\\=False. This is to ensure that\nthe observed output of your code matches what will be seen in a production\nsetting.\n\nCaches are not cleared after each test, and running \"manage.py test fooapp\" can\ninsert data from the tests into the cache of a live system if you run your\ntests in production because, unlike databases, a separate \"test cache\" is not\nused. This behavior `may change`_ in the future.\n\n.. _may change: https://code.djangoproject.com/ticket/11505\n\nUnderstanding the test output\n-----------------------------\n\nWhen you run your tests, you'll see a number of messages as the test runner\nprepares itself. You can control the level of detail of these messages with the\n``verbosity`` option on the command line::\n\n    Creating test database...\n    Creating table myapp_animal\n    Creating table myapp_mineral\n    Loading 'initial_data' fixtures...\n    No fixtures found.\n\nThis tells you that the test runner is creating a test database, as described\nin the previous section.\n\nOnce the test database has been created, Django will run your tests.\nIf everything goes well, you'll see something like this::\n\n    ----------------------------------------------------------------------\n    Ran 22 tests in 0.221s\n\n    OK\n\nIf there are test failures, however, you'll see full details about which tests\nfailed::\n\n    ======================================================================\n    FAIL: Doctest: ellington.core.throttle.models\n    ----------------------------------------------------------------------\n    Traceback (most recent call last):\n      File \"/dev/django/test/doctest.py\", line 2153, in runTest\n        raise self.failureException(self.format_failure(new.getvalue()))\n    AssertionError: Failed doctest test for myapp.models\n      File \"/dev/myapp/models.py\", line 0, in models\n\n    ----------------------------------------------------------------------\n    File \"/dev/myapp/models.py\", line 14, in myapp.models\n    Failed example:\n        throttle.check(\"actor A\", \"action one\", limit=2, hours=1)\n    Expected:\n        True\n    Got:\n        False\n\n    ----------------------------------------------------------------------\n    Ran 2 tests in 0.048s\n\n    FAILED (failures=1)\n\nA full explanation of this error output is beyond the scope of this document,\nbut it's pretty intuitive. You can consult the documentation of Python's\n:mod:`unittest` library for details.\n\nNote that the return code for the test-runner script is 1 for any number of\nfailed and erroneous tests. If all the tests pass, the return code is 0. This\nfeature is useful if you're using the test-runner script in a shell script and\nneed to test for success or failure at that level.\n\nSpeeding up the tests\n---------------------\n\nIn recent versions of Django, the default password hasher is rather slow by\ndesign. If during your tests you are authenticating many users, you may want\nto use a custom settings file and set the :setting:`PASSWORD_HASHERS` setting\nto a faster hashing algorithm::\n\n    PASSWORD_HASHERS = (\n        'django.contrib.auth.hashers.MD5PasswordHasher',\n    )\n\nDon't forget to also include in :setting:`PASSWORD_HASHERS` any hashing\nalgorithm used in fixtures, if any.\n\nTesting tools\n=============\n\nDjango provides a small set of tools that come in handy when writing tests.\n\n.. _test-client:\n\nThe test client\n---------------\n\n.. module:: django.test.client\n   :synopsis: Django's test client.\n\nThe test client is a Python class that acts as a dummy Web browser, allowing\nyou to test your views and interact with your Django-powered application\nprogrammatically.\n\nSome of the things you can do with the test client are:\n\n* Simulate GET and POST requests on a URL and observe the response --\n  everything from low-level HTTP (result headers and status codes) to\n  page content.\n\n* Test that the correct view is executed for a given URL.\n\n* Test that a given request is rendered by a given Django template, with\n  a template context that contains certain values.\n\nNote that the test client is not intended to be a replacement for Selenium_ or\nother \"in-browser\" frameworks. Django's test client has a different focus. In\nshort:\n\n* Use Django's test client to establish that the correct view is being\n  called and that the view is collecting the correct context data.\n\n* Use in-browser frameworks like Selenium_ to test *rendered* HTML and the\n  *behavior* of Web pages, namely JavaScript functionality. Django also\n  provides special support for those frameworks; see the section on\n  :class:`~django.test.LiveServerTestCase` for more details.\n\nA comprehensive test suite should use a combination of both test types.\n\nOverview and a quick example\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nTo use the test client, instantiate ``django.test.client.Client`` and retrieve\nWeb pages::\n\n    >>> from django.test.client import Client\n    >>> c = Client()\n    >>> response = c.post('/login/', {'username': 'john', 'password': 'smith'})\n    >>> response.status_code\n    200\n    >>> response = c.get('/customer/details/')\n    >>> response.content\n    '<!DOCTYPE html...'\n\nAs this example suggests, you can instantiate ``Client`` from within a session\nof the Python interactive interpreter.\n\nNote a few important things about how the test client works:\n\n* The test client does *not* require the Web server to be running. In fact,\n  it will run just fine with no Web server running at all! That's because\n  it avoids the overhead of HTTP and deals directly with the Django\n  framework. This helps make the unit tests run quickly.\n\n* When retrieving pages, remember to specify the *path* of the URL, not the\n  whole domain. For example, this is correct::\n\n      >>> c.get('/login/')\n\n  This is incorrect::\n\n      >>> c.get('http://www.example.com/login/')\n\n  The test client is not capable of retrieving Web pages that are not\n  powered by your Django project. If you need to retrieve other Web pages,\n  use a Python standard library module such as :mod:`urllib` or\n  :mod:`urllib2`.\n\n* To resolve URLs, the test client uses whatever URLconf is pointed-to by\n  your :setting:`ROOT_URLCONF` setting.\n\n* Although the above example would work in the Python interactive\n  interpreter, some of the test client's functionality, notably the\n  template-related functionality, is only available *while tests are\n  running*.\n\n  The reason for this is that Django's test runner performs a bit of black\n  magic in order to determine which template was loaded by a given view.\n  This black magic (essentially a patching of Django's template system in\n  memory) only happens during test running.\n\n* By default, the test client will disable any CSRF checks\n  performed by your site.\n\n  If, for some reason, you *want* the test client to perform CSRF\n  checks, you can create an instance of the test client that\n  enforces CSRF checks. To do this, pass in the\n  ``enforce_csrf_checks`` argument when you construct your\n  client::\n\n      >>> from django.test import Client\n      >>> csrf_client = Client(enforce_csrf_checks=True)\n\nMaking requests\n~~~~~~~~~~~~~~~\n\nUse the ``django.test.client.Client`` class to make requests.\n\n.. class:: Client(enforce_csrf_checks=False, **defaults)\n\n    It requires no arguments at time of construction. However, you can use\n    keywords arguments to specify some default headers. For example, this will\n    send a ``User-Agent`` HTTP header in each request::\n\n        >>> c = Client(HTTP_USER_AGENT='Mozilla/5.0')\n\n    The values from the ``extra`` keywords arguments passed to\n    :meth:`~django.test.client.Client.get()`,\n    :meth:`~django.test.client.Client.post()`, etc. have precedence over\n    the defaults passed to the class constructor.\n\n    The ``enforce_csrf_checks`` argument can be used to test CSRF\n    protection (see above).\n\n    Once you have a ``Client`` instance, you can call any of the following\n    methods:\n\n    .. method:: Client.get(path, data={}, follow=False, **extra)\n\n\n        Makes a GET request on the provided ``path`` and returns a ``Response``\n        object, which is documented below.\n\n        The key-value pairs in the ``data`` dictionary are used to create a GET\n        data payload. For example::\n\n            >>> c = Client()\n            >>> c.get('/customers/details/', {'name': 'fred', 'age': 7})\n\n        ...will result in the evaluation of a GET request equivalent to::\n\n            /customers/details/?name=fred&age=7\n\n        The ``extra`` keyword arguments parameter can be used to specify\n        headers to be sent in the request. For example::\n\n            >>> c = Client()\n            >>> c.get('/customers/details/', {'name': 'fred', 'age': 7},\n            ...       HTTP_X_REQUESTED_WITH='XMLHttpRequest')\n\n        ...will send the HTTP header ``HTTP_X_REQUESTED_WITH`` to the\n        details view, which is a good way to test code paths that use the\n        :meth:`django.http.HttpRequest.is_ajax()` method.\n\n        .. admonition:: CGI specification\n\n            The headers sent via ``**extra`` should follow CGI_ specification.\n            For example, emulating a different \"Host\" header as sent in the\n            HTTP request from the browser to the server should be passed\n            as ``HTTP_HOST``.\n\n            .. _CGI: http://www.w3.org/CGI/\n\n        If you already have the GET arguments in URL-encoded form, you can\n        use that encoding instead of using the data argument. For example,\n        the previous GET request could also be posed as::\n\n        >>> c = Client()\n        >>> c.get('/customers/details/?name=fred&age=7')\n\n        If you provide a URL with both an encoded GET data and a data argument,\n        the data argument will take precedence.\n\n        If you set ``follow`` to ``True`` the client will follow any redirects\n        and a ``redirect_chain`` attribute will be set in the response object\n        containing tuples of the intermediate urls and status codes.\n\n        If you had a URL ``/redirect_me/`` that redirected to ``/next/``, that\n        redirected to ``/final/``, this is what you'd see::\n\n            >>> response = c.get('/redirect_me/', follow=True)\n            >>> response.redirect_chain\n            [(u'http://testserver/next/', 302), (u'http://testserver/final/', 302)]\n\n    .. method:: Client.post(path, data={}, content_type=MULTIPART_CONTENT, follow=False, **extra)\n\n        Makes a POST request on the provided ``path`` and returns a\n        ``Response`` object, which is documented below.\n\n        The key-value pairs in the ``data`` dictionary are used to submit POST\n        data. For example::\n\n            >>> c = Client()\n            >>> c.post('/login/', {'name': 'fred', 'passwd': 'secret'})\n\n        ...will result in the evaluation of a POST request to this URL::\n\n            /login/\n\n        ...with this POST data::\n\n            name=fred&passwd=secret\n\n        If you provide ``content_type`` (e.g. :mimetype:`text/xml` for an XML\n        payload), the contents of ``data`` will be sent as-is in the POST\n        request, using ``content_type`` in the HTTP ``Content-Type`` header.\n\n        If you don't provide a value for ``content_type``, the values in\n        ``data`` will be transmitted with a content type of\n        :mimetype:`multipart/form-data`. In this case, the key-value pairs in\n        ``data`` will be encoded as a multipart message and used to create the\n        POST data payload.\n\n        To submit multiple values for a given key -- for example, to specify\n        the selections for a ``<select multiple>`` -- provide the values as a\n        list or tuple for the required key. For example, this value of ``data``\n        would submit three selected values for the field named ``choices``::\n\n            {'choices': ('a', 'b', 'd')}\n\n        Submitting files is a special case. To POST a file, you need only\n        provide the file field name as a key, and a file handle to the file you\n        wish to upload as a value. For example::\n\n            >>> c = Client()\n            >>> with open('wishlist.doc') as fp:\n            ...     c.post('/customers/wishes/', {'name': 'fred', 'attachment': fp})\n\n        (The name ``attachment`` here is not relevant; use whatever name your\n        file-processing code expects.)\n\n        Note that if you wish to use the same file handle for multiple\n        ``post()`` calls then you will need to manually reset the file\n        pointer between posts. The easiest way to do this is to\n        manually close the file after it has been provided to\n        ``post()``, as demonstrated above.\n\n        You should also ensure that the file is opened in a way that\n        allows the data to be read. If your file contains binary data\n        such as an image, this means you will need to open the file in\n        ``rb`` (read binary) mode.\n\n        The ``extra`` argument acts the same as for :meth:`Client.get`.\n\n        If the URL you request with a POST contains encoded parameters, these\n        parameters will be made available in the request.GET data. For example,\n        if you were to make the request::\n\n        >>> c.post('/login/?visitor=true', {'name': 'fred', 'passwd': 'secret'})\n\n        ... the view handling this request could interrogate request.POST\n        to retrieve the username and password, and could interrogate request.GET\n        to determine if the user was a visitor.\n\n        If you set ``follow`` to ``True`` the client will follow any redirects\n        and a ``redirect_chain`` attribute will be set in the response object\n        containing tuples of the intermediate urls and status codes.\n\n    .. method:: Client.head(path, data={}, follow=False, **extra)\n\n        Makes a HEAD request on the provided ``path`` and returns a\n        ``Response`` object. This method works just like :meth:`Client.get`,\n        including the ``follow`` and ``extra`` arguments, except it does not\n        return a message body.\n\n    .. method:: Client.options(path, data='', content_type='application/octet-stream', follow=False, **extra)\n\n        Makes an OPTIONS request on the provided ``path`` and returns a\n        ``Response`` object. Useful for testing RESTful interfaces.\n\n        When ``data`` is provided, it is used as the request body, and\n        a ``Content-Type`` header is set to ``content_type``.\n\n        .. versionchanged:: 1.5\n            :meth:`Client.options` used to process ``data`` like\n            :meth:`Client.get`.\n\n        The ``follow`` and ``extra`` arguments act the same as for\n        :meth:`Client.get`.\n\n    .. method:: Client.put(path, data='', content_type='application/octet-stream', follow=False, **extra)\n\n        Makes a PUT request on the provided ``path`` and returns a\n        ``Response`` object. Useful for testing RESTful interfaces.\n\n        When ``data`` is provided, it is used as the request body, and\n        a ``Content-Type`` header is set to ``content_type``.\n\n        .. versionchanged:: 1.5\n            :meth:`Client.put` used to process ``data`` like\n            :meth:`Client.post`.\n\n        The ``follow`` and ``extra`` arguments act the same as for\n        :meth:`Client.get`.\n\n    .. method:: Client.delete(path, data='', content_type='application/octet-stream', follow=False, **extra)\n\n        Makes an DELETE request on the provided ``path`` and returns a\n        ``Response`` object. Useful for testing RESTful interfaces.\n\n        When ``data`` is provided, it is used as the request body, and\n        a ``Content-Type`` header is set to ``content_type``.\n\n        .. versionchanged:: 1.5\n            :meth:`Client.delete` used to process ``data`` like\n            :meth:`Client.get`.\n\n        The ``follow`` and ``extra`` arguments act the same as for\n        :meth:`Client.get`.\n\n\n    .. method:: Client.login(**credentials)\n\n        If your site uses Django's :doc:`authentication system</topics/auth/index>`\n        and you deal with logging in users, you can use the test client's\n        ``login()`` method to simulate the effect of a user logging into the\n        site.\n\n        After you call this method, the test client will have all the cookies\n        and session data required to pass any login-based tests that may form\n        part of a view.\n\n        The format of the ``credentials`` argument depends on which\n        :ref:`authentication backend <authentication-backends>` you're using\n        (which is configured by your :setting:`AUTHENTICATION_BACKENDS`\n        setting). If you're using the standard authentication backend provided\n        by Django (``ModelBackend``), ``credentials`` should be the user's\n        username and password, provided as keyword arguments::\n\n            >>> c = Client()\n            >>> c.login(username='fred', password='secret')\n\n            # Now you can access a view that's only available to logged-in users.\n\n        If you're using a different authentication backend, this method may\n        require different credentials. It requires whichever credentials are\n        required by your backend's ``authenticate()`` method.\n\n        ``login()`` returns ``True`` if it the credentials were accepted and\n        login was successful.\n\n        Finally, you'll need to remember to create user accounts before you can\n        use this method. As we explained above, the test runner is executed\n        using a test database, which contains no users by default. As a result,\n        user accounts that are valid on your production site will not work\n        under test conditions. You'll need to create users as part of the test\n        suite -- either manually (using the Django model API) or with a test\n        fixture. Remember that if you want your test user to have a password,\n        you can't set the user's password by setting the password attribute\n        directly -- you must use the\n        :meth:`~django.contrib.auth.models.User.set_password()` function to\n        store a correctly hashed password. Alternatively, you can use the\n        :meth:`~django.contrib.auth.models.UserManager.create_user` helper\n        method to create a new user with a correctly hashed password.\n\n    .. method:: Client.logout()\n\n        If your site uses Django's :doc:`authentication system</topics/auth/index>`,\n        the ``logout()`` method can be used to simulate the effect of a user\n        logging out of your site.\n\n        After you call this method, the test client will have all the cookies\n        and session data cleared to defaults. Subsequent requests will appear\n        to come from an AnonymousUser.\n\nTesting responses\n~~~~~~~~~~~~~~~~~\n\nThe ``get()`` and ``post()`` methods both return a ``Response`` object. This\n``Response`` object is *not* the same as the ``HttpResponse`` object returned\nDjango views; the test response object has some additional data useful for\ntest code to verify.\n\nSpecifically, a ``Response`` object has the following attributes:\n\n.. class:: Response()\n\n    .. attribute:: client\n\n        The test client that was used to make the request that resulted in the\n        response.\n\n    .. attribute:: content\n\n        The body of the response, as a string. This is the final page content as\n        rendered by the view, or any error message.\n\n    .. attribute:: context\n\n        The template ``Context`` instance that was used to render the template that\n        produced the response content.\n\n        If the rendered page used multiple templates, then ``context`` will be a\n        list of ``Context`` objects, in the order in which they were rendered.\n\n        Regardless of the number of templates used during rendering, you can\n        retrieve context values using the ``[]`` operator. For example, the\n        context variable ``name`` could be retrieved using::\n\n            >>> response = client.get('/foo/')\n            >>> response.context['name']\n            'Arthur'\n\n    .. attribute:: request\n\n        The request data that stimulated the response.\n\n    .. attribute:: status_code\n\n        The HTTP status of the response, as an integer. See\n        :rfc:`2616#section-10` for a full list of HTTP status codes.\n\n    .. attribute:: templates\n\n        A list of ``Template`` instances used to render the final content, in\n        the order they were rendered. For each template in the list, use\n        ``template.name`` to get the template's file name, if the template was\n        loaded from a file. (The name is a string such as\n        ``'admin/index.html'``.)\n\nYou can also use dictionary syntax on the response object to query the value\nof any settings in the HTTP headers. For example, you could determine the\ncontent type of a response using ``response['Content-Type']``.\n\nExceptions\n~~~~~~~~~~\n\nIf you point the test client at a view that raises an exception, that exception\nwill be visible in the test case. You can then use a standard ``try ... except``\nblock or :meth:`~unittest.TestCase.assertRaises` to test for exceptions.\n\nThe only exceptions that are not visible to the test client are ``Http404``,\n``PermissionDenied`` and ``SystemExit``. Django catches these exceptions\ninternally and converts them into the appropriate HTTP response codes. In these\ncases, you can check ``response.status_code`` in your test.\n\nPersistent state\n~~~~~~~~~~~~~~~~\n\nThe test client is stateful. If a response returns a cookie, then that cookie\nwill be stored in the test client and sent with all subsequent ``get()`` and\n``post()`` requests.\n\nExpiration policies for these cookies are not followed. If you want a cookie\nto expire, either delete it manually or create a new ``Client`` instance (which\nwill effectively delete all cookies).\n\nA test client has two attributes that store persistent state information. You\ncan access these properties as part of a test condition.\n\n.. attribute:: Client.cookies\n\n    A Python :class:`~Cookie.SimpleCookie` object, containing the current values\n    of all the client cookies. See the documentation of the :mod:`Cookie` module\n    for more.\n\n.. attribute:: Client.session\n\n    A dictionary-like object containing session information. See the\n    :doc:`session documentation</topics/http/sessions>` for full details.\n\n    To modify the session and then save it, it must be stored in a variable\n    first (because a new ``SessionStore`` is created every time this property\n    is accessed)::\n\n        def test_something(self):\n            session = self.client.session\n            session['somekey'] = 'test'\n            session.save()\n\nExample\n~~~~~~~\n\nThe following is a simple unit test using the test client::\n\n    from django.utils import unittest\n    from django.test.client import Client\n\n    class SimpleTest(unittest.TestCase):\n        def setUp(self):\n            # Every test needs a client.\n            self.client = Client()\n\n        def test_details(self):\n            # Issue a GET request.\n            response = self.client.get('/customer/details/')\n\n            # Check that the response is 200 OK.\n            self.assertEqual(response.status_code, 200)\n\n            # Check that the rendered context contains 5 customers.\n            self.assertEqual(len(response.context['customers']), 5)\n\n.. seealso::\n\n    :class:`django.test.client.RequestFactory`\n\nProvided test case classes\n--------------------------\n\n.. currentmodule:: django.test\n\nNormal Python unit test classes extend a base class of\n:class:`unittest.TestCase`. Django provides a few extensions of this base class:\n\n.. _testcase_hierarchy_diagram:\n\n.. figure:: _images/django_unittest_classes_hierarchy.png\n   :alt: Hierarchy of Django unit testing classes (TestCase subclasses)\n\n   Hierarchy of Django unit testing classes\n\nRegardless of the version of Python you're using, if you've installed\n``unittest2``, ``django.utils.unittest`` will point to that library.\n\nSimpleTestCase\n~~~~~~~~~~~~~~\n\n.. class:: SimpleTestCase()\n\n.. versionadded:: 1.4\n\nA very thin subclass of :class:`unittest.TestCase`, it extends it with some\nbasic functionality like:\n\n* Saving and restoring the Python warning machinery state.\n* Checking that a callable :meth:`raises a certain exception <SimpleTestCase.assertRaisesMessage>`.\n* :meth:`Testing form field rendering <SimpleTestCase.assertFieldOutput>`.\n* Testing server :ref:`HTML responses for the presence/lack of a given fragment <assertions>`.\n* The ability to run tests with :ref:`modified settings <overriding-settings>`\n\nIf you need any of the other more complex and heavyweight Django-specific\nfeatures like:\n\n* Using the :attr:`~TestCase.client` :class:`~django.test.client.Client`.\n* Testing or using the ORM.\n* Database :attr:`~TestCase.fixtures`.\n* Custom test-time :attr:`URL maps <TestCase.urls>`.\n* Test :ref:`skipping based on database backend features <skipping-tests>`.\n* The remaining specialized :ref:`assert* <assertions>` methods.\n\nthen you should use :class:`~django.test.TransactionTestCase` or\n:class:`~django.test.TestCase` instead.\n\n``SimpleTestCase`` inherits from ``django.utils.unittest.TestCase``.\n\nTransactionTestCase\n~~~~~~~~~~~~~~~~~~~\n\n.. class:: TransactionTestCase()\n\nDjango ``TestCase`` classes make use of database transaction facilities, if\navailable, to speed up the process of resetting the database to a known state\nat the beginning of each test. A consequence of this, however, is that the\neffects of transaction commit and rollback cannot be tested by a Django\n``TestCase`` class. If your test requires testing of such transactional\nbehavior, you should use a Django ``TransactionTestCase``.\n\n``TransactionTestCase`` and ``TestCase`` are identical except for the manner\nin which the database is reset to a known state and the ability for test code\nto test the effects of commit and rollback:\n\n* A ``TransactionTestCase`` resets the database after the test runs by\n  truncating all tables. A ``TransactionTestCase`` may call commit and rollback\n  and observe the effects of these calls on the database.\n\n* A ``TestCase``, on the other hand, does not truncate tables after a test.\n  Instead, it encloses the test code in a database transaction that is rolled\n  back at the end of the test.  It also prevents the code under test from\n  issuing any commit or rollback operations on the database, to ensure that the\n  rollback at the end of the test restores the database to its initial state.\n\n  When running on a database that does not support rollback (e.g. MySQL with the\n  MyISAM storage engine), ``TestCase`` falls back to initializing the database\n  by truncating tables and reloading initial data.\n\n.. note::\n\n    .. versionchanged:: 1.5\n\n    Prior to 1.5, ``TransactionTestCase`` flushed the database tables *before*\n    each test. In Django 1.5, this is instead done *after* the test has been run.\n\n    When the flush took place before the test, it was guaranteed that primary\n    key values started at one in :class:`~django.test.TransactionTestCase`\n    tests.\n\n    Tests should not depend on this behaviour, but for legacy tests that do, the\n    :attr:`~TransactionTestCase.reset_sequences` attribute can be used until\n    the test has been properly updated.\n\n.. versionchanged:: 1.5\n    The order in which tests are run has changed. See `Order in which tests are\n    executed`_.\n\n``TransactionTestCase`` inherits from :class:`~django.test.SimpleTestCase`.\n\n.. attribute:: TransactionTestCase.reset_sequences\n\n    .. versionadded:: 1.5\n\n    Setting ``reset_sequences = True`` on a ``TransactionTestCase`` will make\n    sure sequences are always reset before the test run::\n\n        class TestsThatDependsOnPrimaryKeySequences(TransactionTestCase):\n            reset_sequences = True\n\n            def test_animal_pk(self):\n                lion = Animal.objects.create(name=\"lion\", sound=\"roar\")\n                # lion.pk is guaranteed to always be 1\n                self.assertEqual(lion.pk, 1)\n\n    Unless you are explicitly testing primary keys sequence numbers, it is\n    recommended that you do not hard code primary key values in tests.\n\n    Using ``reset_sequences = True`` will slow down the test, since the primary\n    key reset is an relatively expensive database operation.\n\nTestCase\n~~~~~~~~\n\n.. class:: TestCase()\n\nThis class provides some additional capabilities that can be useful for testing\nWeb sites.\n\nConverting a normal :class:`unittest.TestCase` to a Django :class:`TestCase` is\neasy: Just change the base class of your test from ``'unittest.TestCase'`` to\n``'django.test.TestCase'``. All of the standard Python unit test functionality\nwill continue to be available, but it will be augmented with some useful\nadditions, including:\n\n* Automatic loading of fixtures.\n\n* Wraps each test in a transaction.\n\n* Creates a TestClient instance.\n\n* Django-specific assertions for testing for things like redirection and form\n  errors.\n\n.. versionchanged:: 1.5\n    The order in which tests are run has changed. See `Order in which tests are\n    executed`_.\n\n``TestCase`` inherits from :class:`~django.test.TransactionTestCase`.\n\n.. _live-test-server:\n\nLiveServerTestCase\n~~~~~~~~~~~~~~~~~~\n\n.. versionadded:: 1.4\n\n.. class:: LiveServerTestCase()\n\n``LiveServerTestCase`` does basically the same as\n:class:`~django.test.TransactionTestCase` with one extra feature: it launches a\nlive Django server in the background on setup, and shuts it down on teardown.\nThis allows the use of automated test clients other than the\n:ref:`Django dummy client <test-client>` such as, for example, the Selenium_\nclient, to execute a series of functional tests inside a browser and simulate a\nreal user's actions.\n\nBy default the live server's address is ``'localhost:8081'`` and the full URL\ncan be accessed during the tests with ``self.live_server_url``. If you'd like\nto change the default address (in the case, for example, where the 8081 port is\nalready taken) then you may pass a different one to the :djadmin:`test` command\nvia the :djadminopt:`--liveserver` option, for example:\n\n.. code-block:: bash\n\n    ./manage.py test --liveserver=localhost:8082\n\nAnother way of changing the default server address is by setting the\n`DJANGO_LIVE_TEST_SERVER_ADDRESS` environment variable somewhere in your\ncode (for example, in a :ref:`custom test runner<topics-testing-test_runner>`):\n\n.. code-block:: python\n\n    import os\n    os.environ['DJANGO_LIVE_TEST_SERVER_ADDRESS'] = 'localhost:8082'\n\nIn the case where the tests are run by multiple processes in parallel (for\nexample, in the context of several simultaneous `continuous integration`_\nbuilds), the processes will compete for the same address, and therefore your\ntests might randomly fail with an \"Address already in use\" error. To avoid this\nproblem, you can pass a comma-separated list of ports or ranges of ports (at\nleast as many as the number of potential parallel processes). For example:\n\n.. code-block:: bash\n\n    ./manage.py test --liveserver=localhost:8082,8090-8100,9000-9200,7041\n\nThen, during test execution, each new live test server will try every specified\nport until it finds one that is free and takes it.\n\n.. _continuous integration: http://en.wikipedia.org/wiki/Continuous_integration\n\nTo demonstrate how to use ``LiveServerTestCase``, let's write a simple Selenium\ntest. First of all, you need to install the `selenium package`_ into your\nPython path:\n\n.. code-block:: bash\n\n   pip install selenium\n\nThen, add a ``LiveServerTestCase``-based test to your app's tests module\n(for example: ``myapp/tests.py``). The code for this test may look as follows:\n\n.. code-block:: python\n\n    from django.test import LiveServerTestCase\n    from selenium.webdriver.firefox.webdriver import WebDriver\n\n    class MySeleniumTests(LiveServerTestCase):\n        fixtures = ['user-data.json']\n\n        @classmethod\n        def setUpClass(cls):\n            cls.selenium = WebDriver()\n            super(MySeleniumTests, cls).setUpClass()\n\n        @classmethod\n        def tearDownClass(cls):\n            cls.selenium.quit()\n            super(MySeleniumTests, cls).tearDownClass()\n\n        def test_login(self):\n            self.selenium.get('%s%s' % (self.live_server_url, '/login/'))\n            username_input = self.selenium.find_element_by_name(\"username\")\n            username_input.send_keys('myuser')\n            password_input = self.selenium.find_element_by_name(\"password\")\n            password_input.send_keys('secret')\n            self.selenium.find_element_by_xpath('//input[@value=\"Log in\"]').click()\n\nFinally, you may run the test as follows:\n\n.. code-block:: bash\n\n    ./manage.py test myapp.MySeleniumTests.test_login\n\nThis example will automatically open Firefox then go to the login page, enter\nthe credentials and press the \"Log in\" button. Selenium offers other drivers in\ncase you do not have Firefox installed or wish to use another browser. The\nexample above is just a tiny fraction of what the Selenium client can do; check\nout the `full reference`_ for more details.\n\n.. _Selenium: http://seleniumhq.org/\n.. _selenium package: http://pypi.python.org/pypi/selenium\n.. _full reference: http://selenium-python.readthedocs.org/en/latest/api.html\n.. _Firefox: http://www.mozilla.com/firefox/\n\n.. note::\n\n    ``LiveServerTestCase`` makes use of the :doc:`staticfiles contrib app\n    </howto/static-files>` so you'll need to have your project configured\n    accordingly (in particular by setting :setting:`STATIC_URL`).\n\n.. note::\n\n    When using an in-memory SQLite database to run the tests, the same database\n    connection will be shared by two threads in parallel: the thread in which\n    the live server is run and the thread in which the test case is run. It's\n    important to prevent simultaneous database queries via this shared\n    connection by the two threads, as that may sometimes randomly cause the\n    tests to fail. So you need to ensure that the two threads don't access the\n    database at the same time. In particular, this means that in some cases\n    (for example, just after clicking a link or submitting a form), you might\n    need to check that a response is received by Selenium and that the next\n    page is loaded before proceeding with further test execution.\n    Do this, for example, by making Selenium wait until the ``<body>`` HTML tag\n    is found in the response (requires Selenium > 2.13):\n\n    .. code-block:: python\n\n        def test_login(self):\n            from selenium.webdriver.support.wait import WebDriverWait\n            timeout = 2\n            ...\n            self.selenium.find_element_by_xpath('//input[@value=\"Log in\"]').click()\n            # Wait until the response is received\n            WebDriverWait(self.selenium, timeout).until(\n                lambda driver: driver.find_element_by_tag_name('body'))\n\n    The tricky thing here is that there's really no such thing as a \"page load,\"\n    especially in modern Web apps that generate HTML dynamically after the\n    server generates the initial document. So, simply checking for the presence\n    of ``<body>`` in the response might not necessarily be appropriate for all\n    use cases. Please refer to the `Selenium FAQ`_ and\n    `Selenium documentation`_ for more information.\n\n    .. _Selenium FAQ: http://code.google.com/p/selenium/wiki/FrequentlyAskedQuestions#Q:_WebDriver_fails_to_find_elements_/_Does_not_block_on_page_loa\n    .. _Selenium documentation: http://seleniumhq.org/docs/04_webdriver_advanced.html#explicit-waits\n\nTest cases features\n-------------------\n\nDefault test client\n~~~~~~~~~~~~~~~~~~~\n\n.. attribute:: TestCase.client\n\nEvery test case in a ``django.test.TestCase`` instance has access to an\ninstance of a Django test client. This client can be accessed as\n``self.client``. This client is recreated for each test, so you don't have to\nworry about state (such as cookies) carrying over from one test to another.\n\nThis means, instead of instantiating a ``Client`` in each test::\n\n    from django.utils import unittest\n    from django.test.client import Client\n\n    class SimpleTest(unittest.TestCase):\n        def test_details(self):\n            client = Client()\n            response = client.get('/customer/details/')\n            self.assertEqual(response.status_code, 200)\n\n        def test_index(self):\n            client = Client()\n            response = client.get('/customer/index/')\n            self.assertEqual(response.status_code, 200)\n\n...you can just refer to ``self.client``, like so::\n\n    from django.test import TestCase\n\n    class SimpleTest(TestCase):\n        def test_details(self):\n            response = self.client.get('/customer/details/')\n            self.assertEqual(response.status_code, 200)\n\n        def test_index(self):\n            response = self.client.get('/customer/index/')\n            self.assertEqual(response.status_code, 200)\n\nCustomizing the test client\n~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. attribute:: TestCase.client_class\n\nIf you want to use a different ``Client`` class (for example, a subclass\nwith customized behavior), use the :attr:`~TestCase.client_class` class\nattribute::\n\n    from django.test import TestCase\n    from django.test.client import Client\n\n    class MyTestClient(Client):\n        # Specialized methods for your environment...\n\n    class MyTest(TestCase):\n        client_class = MyTestClient\n\n        def test_my_stuff(self):\n            # Here self.client is an instance of MyTestClient...\n            call_some_test_code()\n\n.. _topics-testing-fixtures:\n\nFixture loading\n~~~~~~~~~~~~~~~\n\n.. attribute:: TestCase.fixtures\n\nA test case for a database-backed Web site isn't much use if there isn't any\ndata in the database. To make it easy to put test data into the database,\nDjango's custom ``TestCase`` class provides a way of loading **fixtures**.\n\nA fixture is a collection of data that Django knows how to import into a\ndatabase. For example, if your site has user accounts, you might set up a\nfixture of fake user accounts in order to populate your database during tests.\n\nThe most straightforward way of creating a fixture is to use the\n:djadmin:`manage.py dumpdata <dumpdata>` command. This assumes you\nalready have some data in your database. See the :djadmin:`dumpdata\ndocumentation<dumpdata>` for more details.\n\n.. note::\n\n    If you've ever run :djadmin:`manage.py syncdb<syncdb>`, you've\n    already used a fixture without even knowing it! When you call\n    :djadmin:`syncdb` in the database for the first time, Django\n    installs a fixture called ``initial_data``. This gives you a way\n    of populating a new database with any initial data, such as a\n    default set of categories.\n\n    Fixtures with other names can always be installed manually using\n    the :djadmin:`manage.py loaddata<loaddata>` command.\n\n.. admonition:: Initial SQL data and testing\n\n    Django provides a second way to insert initial data into models --\n    the :ref:`custom SQL hook <initial-sql>`. However, this technique\n    *cannot* be used to provide initial data for testing purposes.\n    Django's test framework flushes the contents of the test database\n    after each test; as a result, any data added using the custom SQL\n    hook will be lost.\n\nOnce you've created a fixture and placed it in a ``fixtures`` directory in one\nof your :setting:`INSTALLED_APPS`, you can use it in your unit tests by\nspecifying a ``fixtures`` class attribute on your :class:`django.test.TestCase`\nsubclass::\n\n    from django.test import TestCase\n    from myapp.models import Animal\n\n    class AnimalTestCase(TestCase):\n        fixtures = ['mammals.json', 'birds']\n\n        def setUp(self):\n            # Test definitions as before.\n            call_setup_methods()\n\n        def testFluffyAnimals(self):\n            # A test that uses the fixtures.\n            call_some_test_code()\n\nHere's specifically what will happen:\n\n* At the start of each test case, before ``setUp()`` is run, Django will\n  flush the database, returning the database to the state it was in\n  directly after :djadmin:`syncdb` was called.\n\n* Then, all the named fixtures are installed. In this example, Django will\n  install any JSON fixture named ``mammals``, followed by any fixture named\n  ``birds``. See the :djadmin:`loaddata` documentation for more\n  details on defining and installing fixtures.\n\nThis flush/load procedure is repeated for each test in the test case, so you\ncan be certain that the outcome of a test will not be affected by another test,\nor by the order of test execution.\n\nURLconf configuration\n~~~~~~~~~~~~~~~~~~~~~\n\n.. attribute:: TestCase.urls\n\nIf your application provides views, you may want to include tests that use the\ntest client to exercise those views. However, an end user is free to deploy the\nviews in your application at any URL of their choosing. This means that your\ntests can't rely upon the fact that your views will be available at a\nparticular URL.\n\nIn order to provide a reliable URL space for your test,\n``django.test.TestCase`` provides the ability to customize the URLconf\nconfiguration for the duration of the execution of a test suite. If your\n``TestCase`` instance defines an ``urls`` attribute, the ``TestCase`` will use\nthe value of that attribute as the :setting:`ROOT_URLCONF` for the duration\nof that test.\n\nFor example::\n\n    from django.test import TestCase\n\n    class TestMyViews(TestCase):\n        urls = 'myapp.test_urls'\n\n        def testIndexPageView(self):\n            # Here you'd test your view using ``Client``.\n            call_some_test_code()\n\nThis test case will use the contents of ``myapp.test_urls`` as the\nURLconf for the duration of the test case.\n\n.. _emptying-test-outbox:\n\nMulti-database support\n~~~~~~~~~~~~~~~~~~~~~~\n\n.. attribute:: TestCase.multi_db\n\nDjango sets up a test database corresponding to every database that is\ndefined in the :setting:`DATABASES` definition in your settings\nfile. However, a big part of the time taken to run a Django TestCase\nis consumed by the call to ``flush`` that ensures that you have a\nclean database at the start of each test run. If you have multiple\ndatabases, multiple flushes are required (one for each database),\nwhich can be a time consuming activity -- especially if your tests\ndon't need to test multi-database activity.\n\nAs an optimization, Django only flushes the ``default`` database at\nthe start of each test run. If your setup contains multiple databases,\nand you have a test that requires every database to be clean, you can\nuse the ``multi_db`` attribute on the test suite to request a full\nflush.\n\nFor example::\n\n    class TestMyViews(TestCase):\n        multi_db = True\n\n        def testIndexPageView(self):\n            call_some_test_code()\n\nThis test case will flush *all* the test databases before running\n``testIndexPageView``.\n\n.. _overriding-settings:\n\nOverriding settings\n~~~~~~~~~~~~~~~~~~~\n\n.. method:: TestCase.settings\n\n.. versionadded:: 1.4\n\nFor testing purposes it's often useful to change a setting temporarily and\nrevert to the original value after running the testing code. For this use case\nDjango provides a standard Python context manager (see :pep:`343`)\n:meth:`~django.test.TestCase.settings`, which can be used like this::\n\n    from django.test import TestCase\n\n    class LoginTestCase(TestCase):\n\n        def test_login(self):\n\n            # First check for the default behavior\n            response = self.client.get('/sekrit/')\n            self.assertRedirects(response, '/accounts/login/?next=/sekrit/')\n\n            # Then override the LOGIN_URL setting\n            with self.settings(LOGIN_URL='/other/login/'):\n                response = self.client.get('/sekrit/')\n                self.assertRedirects(response, '/other/login/?next=/sekrit/')\n\nThis example will override the :setting:`LOGIN_URL` setting for the code\nin the ``with`` block and reset its value to the previous state afterwards.\n\n.. currentmodule:: django.test.utils\n\n.. function:: override_settings\n\nIn case you want to override a setting for just one test method or even the\nwhole :class:`~django.test.TestCase` class, Django provides the\n:func:`~django.test.utils.override_settings` decorator (see :pep:`318`). It's\nused like this::\n\n    from django.test import TestCase\n    from django.test.utils import override_settings\n\n    class LoginTestCase(TestCase):\n\n        @override_settings(LOGIN_URL='/other/login/')\n        def test_login(self):\n            response = self.client.get('/sekrit/')\n            self.assertRedirects(response, '/other/login/?next=/sekrit/')\n\nThe decorator can also be applied to test case classes::\n\n    from django.test import TestCase\n    from django.test.utils import override_settings\n\n    @override_settings(LOGIN_URL='/other/login/')\n    class LoginTestCase(TestCase):\n\n        def test_login(self):\n            response = self.client.get('/sekrit/')\n            self.assertRedirects(response, '/other/login/?next=/sekrit/')\n\n.. note::\n\n    When given a class, the decorator modifies the class directly and\n    returns it; it doesn't create and return a modified copy of it.  So if\n    you try to tweak the above example to assign the return value to a\n    different name than ``LoginTestCase``, you may be surprised to find that\n    the original ``LoginTestCase`` is still equally affected by the\n    decorator.\n\nWhen overriding settings, make sure to handle the cases in which your app's\ncode uses a cache or similar feature that retains state even if the\nsetting is changed. Django provides the\n:data:`django.test.signals.setting_changed` signal that lets you register\ncallbacks to clean up and otherwise reset state when settings are changed.\n\nDjango itself uses this signal to reset various data:\n\n================================ ========================\nOverriden settings               Data reset\n================================ ========================\nUSE_TZ, TIME_ZONE                Databases timezone\nTEMPLATE_CONTEXT_PROCESSORS      Context processors cache\nTEMPLATE_LOADERS                 Template loaders cache\nSERIALIZATION_MODULES            Serializers cache\nLOCALE_PATHS, LANGUAGE_CODE      Default translation and loaded translations\nMEDIA_ROOT, DEFAULT_FILE_STORAGE Default file storage\n================================ ========================\n\nEmptying the test outbox\n~~~~~~~~~~~~~~~~~~~~~~~~\n\nIf you use Django's custom ``TestCase`` class, the test runner will clear the\ncontents of the test email outbox at the start of each test case.\n\nFor more detail on email services during tests, see `Email services`_ below.\n\n.. _assertions:\n\nAssertions\n~~~~~~~~~~\n\n.. currentmodule:: django.test\n\nAs Python's normal :class:`unittest.TestCase` class implements assertion methods\nsuch as :meth:`~unittest.TestCase.assertTrue` and\n:meth:`~unittest.TestCase.assertEqual`, Django's custom :class:`TestCase` class\nprovides a number of custom assertion methods that are useful for testing Web\napplications:\n\nThe failure messages given by most of these assertion methods can be customized\nwith the ``msg_prefix`` argument. This string will be prefixed to any failure\nmessage generated by the assertion. This allows you to provide additional\ndetails that may help you to identify the location and cause of an failure in\nyour test suite.\n\n.. method:: SimpleTestCase.assertRaisesMessage(expected_exception, expected_message, callable_obj=None, *args, **kwargs)\n\n    .. versionadded:: 1.4\n\n    Asserts that execution of callable ``callable_obj`` raised the\n    ``expected_exception`` exception and that such exception has an\n    ``expected_message`` representation. Any other outcome is reported as a\n    failure. Similar to unittest's :meth:`~unittest.TestCase.assertRaisesRegexp`\n    with the difference that ``expected_message`` isn't a regular expression.\n\n.. method:: SimpleTestCase.assertFieldOutput(self, fieldclass, valid, invalid, field_args=None, field_kwargs=None, empty_value=u'')\n\n    .. versionadded:: 1.4\n\n    Asserts that a form field behaves correctly with various inputs.\n\n    :param fieldclass: the class of the field to be tested.\n    :param valid: a dictionary mapping valid inputs to their expected cleaned\n        values.\n    :param invalid: a dictionary mapping invalid inputs to one or more raised\n        error messages.\n    :param field_args: the args passed to instantiate the field.\n    :param field_kwargs: the kwargs passed to instantiate the field.\n    :param empty_value: the expected clean output for inputs in ``EMPTY_VALUES``.\n\n    For example, the following code tests that an ``EmailField`` accepts\n    \"a@a.com\" as a valid email address, but rejects \"aaa\" with a reasonable\n    error message::\n\n        self.assertFieldOutput(EmailField, {'a@a.com': 'a@a.com'}, {'aaa': [u'Enter a valid email address.']})\n\n\n.. method:: TestCase.assertContains(response, text, count=None, status_code=200, msg_prefix='', html=False)\n\n    Asserts that a ``Response`` instance produced the given ``status_code`` and\n    that ``text`` appears in the content of the response. If ``count`` is\n    provided, ``text`` must occur exactly ``count`` times in the response.\n\n    .. versionadded:: 1.4\n\n    Set ``html`` to ``True`` to handle ``text`` as HTML. The comparison with\n    the response content will be based on HTML semantics instead of\n    character-by-character equality. Whitespace is ignored in most cases,\n    attribute ordering is not significant. See\n    :meth:`~SimpleTestCase.assertHTMLEqual` for more details.\n\n.. method:: TestCase.assertNotContains(response, text, status_code=200, msg_prefix='', html=False)\n\n    Asserts that a ``Response`` instance produced the given ``status_code`` and\n    that ``text`` does not appears in the content of the response.\n\n    .. versionadded:: 1.4\n\n    Set ``html`` to ``True`` to handle ``text`` as HTML. The comparison with\n    the response content will be based on HTML semantics instead of\n    character-by-character equality. Whitespace is ignored in most cases,\n    attribute ordering is not significant. See\n    :meth:`~SimpleTestCase.assertHTMLEqual` for more details.\n\n.. method:: TestCase.assertFormError(response, form, field, errors, msg_prefix='')\n\n    Asserts that a field on a form raises the provided list of errors when\n    rendered on the form.\n\n    ``form`` is the name the ``Form`` instance was given in the template\n    context.\n\n    ``field`` is the name of the field on the form to check. If ``field``\n    has a value of ``None``, non-field errors (errors you can access via\n    ``form.non_field_errors()``) will be checked.\n\n    ``errors`` is an error string, or a list of error strings, that are\n    expected as a result of form validation.\n\n.. method:: TestCase.assertTemplateUsed(response, template_name, msg_prefix='')\n\n    Asserts that the template with the given name was used in rendering the\n    response.\n\n    The name is a string such as ``'admin/index.html'``.\n\n    .. versionadded:: 1.4\n\n    You can use this as a context manager, like this::\n\n        with self.assertTemplateUsed('index.html'):\n            render_to_string('index.html')\n        with self.assertTemplateUsed(template_name='index.html'):\n            render_to_string('index.html')\n\n.. method:: TestCase.assertTemplateNotUsed(response, template_name, msg_prefix='')\n\n    Asserts that the template with the given name was *not* used in rendering\n    the response.\n\n    .. versionadded:: 1.4\n\n    You can use this as a context manager in the same way as\n    :meth:`~TestCase.assertTemplateUsed`.\n\n.. method:: TestCase.assertRedirects(response, expected_url, status_code=302, target_status_code=200, msg_prefix='')\n\n    Asserts that the response return a ``status_code`` redirect status, it\n    redirected to ``expected_url`` (including any GET data), and the final\n    page was received with ``target_status_code``.\n\n    If your request used the ``follow`` argument, the ``expected_url`` and\n    ``target_status_code`` will be the url and status code for the final\n    point of the redirect chain.\n\n.. method:: TestCase.assertQuerysetEqual(qs, values, transform=repr, ordered=True)\n\n    Asserts that a queryset ``qs`` returns a particular list of values ``values``.\n\n    The comparison of the contents of ``qs`` and ``values`` is performed using\n    the function ``transform``; by default, this means that the ``repr()`` of\n    each value is compared. Any other callable can be used if ``repr()`` doesn't\n    provide a unique or helpful comparison.\n\n    By default, the comparison is also ordering dependent. If ``qs`` doesn't\n    provide an implicit ordering, you can set the ``ordered`` parameter to\n    ``False``, which turns the comparison into a Python set comparison.\n\n    .. versionchanged:: 1.4\n\tThe ``ordered`` parameter is new in version 1.4. In earlier versions,\n\tyou would need to ensure the queryset is ordered consistently, possibly\n\tvia an explicit ``order_by()`` call on the queryset prior to\n\tcomparison.\n\n\n.. method:: TestCase.assertNumQueries(num, func, *args, **kwargs)\n\n    Asserts that when ``func`` is called with ``*args`` and ``**kwargs`` that\n    ``num`` database queries are executed.\n\n    If a ``\"using\"`` key is present in ``kwargs`` it is used as the database\n    alias for which to check the number of queries.  If you wish to call a\n    function with a ``using`` parameter you can do it by wrapping the call with\n    a ``lambda`` to add an extra parameter::\n\n        self.assertNumQueries(7, lambda: my_function(using=7))\n\n    You can also use this as a context manager::\n\n        with self.assertNumQueries(2):\n            Person.objects.create(name=\"Aaron\")\n            Person.objects.create(name=\"Daniel\")\n\n.. method:: SimpleTestCase.assertHTMLEqual(html1, html2, msg=None)\n\n    .. versionadded:: 1.4\n\n    Asserts that the strings ``html1`` and ``html2`` are equal. The comparison\n    is based on HTML semantics. The comparison takes following things into\n    account:\n\n    * Whitespace before and after HTML tags is ignored.\n    * All types of whitespace are considered equivalent.\n    * All open tags are closed implicitly, e.g. when a surrounding tag is\n      closed or the HTML document ends.\n    * Empty tags are equivalent to their self-closing version.\n    * The ordering of attributes of an HTML element is not significant.\n    * Attributes without an argument are equal to attributes that equal in\n      name and value (see the examples).\n\n    The following examples are valid tests and don't raise any\n    ``AssertionError``::\n\n        self.assertHTMLEqual('<p>Hello <b>world!</p>',\n            '''<p>\n                Hello   <b>world! <b/>\n            </p>''')\n        self.assertHTMLEqual(\n            '<input type=\"checkbox\" checked=\"checked\" id=\"id_accept_terms\" />',\n            '<input id=\"id_accept_terms\" type='checkbox' checked>')\n\n    ``html1`` and ``html2`` must be valid HTML. An ``AssertionError`` will be\n    raised if one of them cannot be parsed.\n\n.. method:: SimpleTestCase.assertHTMLNotEqual(html1, html2, msg=None)\n\n    .. versionadded:: 1.4\n\n    Asserts that the strings ``html1`` and ``html2`` are *not* equal. The\n    comparison is based on HTML semantics. See\n    :meth:`~SimpleTestCase.assertHTMLEqual` for details.\n\n    ``html1`` and ``html2`` must be valid HTML. An ``AssertionError`` will be\n    raised if one of them cannot be parsed.\n\n.. method:: SimpleTestCase.assertXMLEqual(xml1, xml2, msg=None)\n\n    .. versionadded:: 1.5\n\n    Asserts that the strings ``xml1`` and ``xml2`` are equal. The\n    comparison is based on XML semantics. Similarily to\n    :meth:`~SimpleTestCase.assertHTMLEqual`, the comparison is\n    made on parsed content, hence only semantic differences are considered, not\n    syntax differences. When unvalid XML is passed in any parameter, an\n    ``AssertionError`` is always raised, even if both string are identical.\n\n.. method:: SimpleTestCase.assertXMLNotEqual(xml1, xml2, msg=None)\n\n    .. versionadded:: 1.5\n\n    Asserts that the strings ``xml1`` and ``xml2`` are *not* equal. The\n    comparison is based on XML semantics. See\n    :meth:`~SimpleTestCase.assertXMLEqual` for details.\n\n.. _topics-testing-email:\n\nEmail services\n--------------\n\nIf any of your Django views send email using :doc:`Django's email\nfunctionality </topics/email>`, you probably don't want to send email each time\nyou run a test using that view. For this reason, Django's test runner\nautomatically redirects all Django-sent email to a dummy outbox. This lets you\ntest every aspect of sending email -- from the number of messages sent to the\ncontents of each message -- without actually sending the messages.\n\nThe test runner accomplishes this by transparently replacing the normal\nemail backend with a testing backend.\n(Don't worry -- this has no effect on any other email senders outside of\nDjango, such as your machine's mail server, if you're running one.)\n\n.. currentmodule:: django.core.mail\n\n.. data:: django.core.mail.outbox\n\nDuring test running, each outgoing email is saved in\n``django.core.mail.outbox``. This is a simple list of all\n:class:`~django.core.mail.EmailMessage` instances that have been sent.\nThe ``outbox`` attribute is a special attribute that is created *only* when\nthe ``locmem`` email backend is used. It doesn't normally exist as part of the\n:mod:`django.core.mail` module and you can't import it directly. The code\nbelow shows how to access this attribute correctly.\n\nHere's an example test that examines ``django.core.mail.outbox`` for length\nand contents::\n\n    from django.core import mail\n    from django.test import TestCase\n\n    class EmailTest(TestCase):\n        def test_send_email(self):\n            # Send message.\n            mail.send_mail('Subject here', 'Here is the message.',\n                'from@example.com', ['to@example.com'],\n                fail_silently=False)\n\n            # Test that one message has been sent.\n            self.assertEqual(len(mail.outbox), 1)\n\n            # Verify that the subject of the first message is correct.\n            self.assertEqual(mail.outbox[0].subject, 'Subject here')\n\nAs noted :ref:`previously <emptying-test-outbox>`, the test outbox is emptied\nat the start of every test in a Django ``TestCase``. To empty the outbox\nmanually, assign the empty list to ``mail.outbox``::\n\n    from django.core import mail\n\n    # Empty the test outbox\n    mail.outbox = []\n\n.. _skipping-tests:\n\nSkipping tests\n--------------\n\n.. currentmodule:: django.test\n\nThe unittest library provides the :func:`@skipIf <unittest.skipIf>` and\n:func:`@skipUnless <unittest.skipUnless>` decorators to allow you to skip tests\nif you know ahead of time that those tests are going to fail under certain\nconditions.\n\nFor example, if your test requires a particular optional library in order to\nsucceed, you could decorate the test case with :func:`@skipIf\n<unittest.skipIf>`. Then, the test runner will report that the test wasn't\nexecuted and why, instead of failing the test or omitting the test altogether.\n\nTo supplement these test skipping behaviors, Django provides two\nadditional skip decorators. Instead of testing a generic boolean,\nthese decorators check the capabilities of the database, and skip the\ntest if the database doesn't support a specific named feature.\n\nThe decorators use a string identifier to describe database features.\nThis string corresponds to attributes of the database connection\nfeatures class. See ``django.db.backends.BaseDatabaseFeatures``\nclass for a full list of database features that can be used as a basis\nfor skipping tests.\n\n.. function:: skipIfDBFeature(feature_name_string)\n\nSkip the decorated test if the named database feature is supported.\n\nFor example, the following test will not be executed if the database\nsupports transactions (e.g., it would *not* run under PostgreSQL, but\nit would under MySQL with MyISAM tables)::\n\n    class MyTests(TestCase):\n        @skipIfDBFeature('supports_transactions')\n        def test_transaction_behavior(self):\n            # ... conditional test code\n\n.. function:: skipUnlessDBFeature(feature_name_string)\n\nSkip the decorated test if the named database feature is *not*\nsupported.\n\nFor example, the following test will only be executed if the database\nsupports transactions (e.g., it would run under PostgreSQL, but *not*\nunder MySQL with MyISAM tables)::\n\n    class MyTests(TestCase):\n        @skipUnlessDBFeature('supports_transactions')\n        def test_transaction_behavior(self):\n            # ... conditional test code\n"
  },
  {
    "path": "Django-1.5.1/extras/README.TXT",
    "content": "This directory contains extra stuff that can improve your Django experience.\n"
  },
  {
    "path": "Django-1.5.1/extras/csrf_migration_helper.py",
    "content": "#!/usr/bin/env python\n\n# This script aims to help developers locate forms and view code that needs to\n# use the new CSRF protection in Django 1.2.  It tries to find all the code that\n# may need the steps described in the CSRF documentation.  It does not modify\n# any code directly, it merely attempts to locate it.  Developers should be\n# aware of its limitations, described below.\n#\n# For each template that contains at least one POST form, the following info is printed:\n#\n# <Absolute path to template>\n#   AKA: <Aliases (relative to template directory/directories that contain it)>\n#   POST forms: <Number of POST forms>\n#   With token: <Number of POST forms with the CSRF token already added>\n#   Without token:\n#     <File name and line number of form without token>\n#\n#   Searching for:\n#     <Template names that need to be searched for in view code\n#      (includes templates that 'include' current template)>\n#\n#   Found:\n#     <File name and line number of any view code found>\n#\n# The format used allows this script to be used in Emacs grep mode:\n#   M-x grep\n#   Run grep (like this): /path/to/my/virtualenv/python /path/to/django/src/extras/csrf_migration_helper.py --settings=mysettings /path/to/my/srcs\n\n\n# Limitations\n# ===========\n#\n# - All templates must be stored on disk in '.html' or '.htm' files.\n#   (extensions configurable below)\n#\n# - All Python code must be stored on disk in '.py' files.  (extensions\n#   configurable below)\n#\n# - All templates must be accessible from TEMPLATE_DIRS or from the 'templates/'\n#   directory in apps specified in INSTALLED_APPS.  Non-file based template\n#   loaders are out of the picture, because there is no way to ask them to\n#   return all templates.\n#\n# - It's impossible to programmatically determine which forms should and should\n#   not have the token added.  The developer must decide when to do this,\n#   ensuring that the token is only added to internally targeted forms.\n#\n# - It's impossible to programmatically work out when a template is used.  The\n#   attempts to trace back to view functions are guesses, and could easily fail\n#   in the following ways:\n#\n#   * If the 'include' template tag is used with a variable\n#     i.e. {% include tname %} where tname is a variable containing the actual\n#     template name, rather than {% include \"my_template.html\" %}.\n#\n#   * If the template name has been built up by view code instead of as a simple\n#     string.  For example, generic views and the admin both do this.  (These\n#     apps are both contrib and both use RequestContext already, as it happens).\n#\n#   * If the 'ssl' tag (or any template tag other than 'include') is used to\n#     include the template in another template.\n#\n# - All templates belonging to apps referenced in INSTALLED_APPS will be\n#   searched, which may include third party apps or Django contrib.  In some\n#   cases, this will be a good thing, because even if the templates of these\n#   apps have been fixed by someone else, your own view code may reference the\n#   same template and may need to be updated.\n#\n#   You may, however, wish to comment out some entries in INSTALLED_APPS or\n#   TEMPLATE_DIRS before running this script.\n\n# Improvements to this script are welcome!\n\n# Configuration\n# =============\n\nTEMPLATE_EXTENSIONS = [\n    \".html\",\n    \".htm\",\n    ]\n\nPYTHON_SOURCE_EXTENSIONS = [\n    \".py\",\n    ]\n\nTEMPLATE_ENCODING = \"UTF-8\"\n\nPYTHON_ENCODING = \"UTF-8\"\n\n# Method\n# ======\n\n# Find templates:\n#  - template dirs\n#  - installed apps\n#\n# Search for POST forms\n#  - Work out what the name of the template is, as it would appear in an\n#    'include' or get_template() call. This can be done by comparing template\n#    filename to all template dirs.  Some templates can have more than one\n#    'name' e.g.  if a directory and one of its child directories are both in\n#    TEMPLATE_DIRS.  This is actually a common hack used for\n#    overriding-and-extending admin templates.\n#\n# For each POST form,\n# - see if it already contains '{% csrf_token %}' immediately after <form>\n# - work back to the view function(s):\n#   - First, see if the form is included in any other templates, then\n#     recursively compile a list of affected templates.\n#   - Find any code function that references that template.  This is just a\n#     brute force text search that can easily return false positives\n#     and fail to find real instances.\n\n\nimport os\nimport sys\nimport re\nfrom optparse import OptionParser\n\nUSAGE = \"\"\"\nThis tool helps to locate forms that need CSRF tokens added and the\ncorresponding view code.  This processing is NOT fool proof, and you should read\nthe help contained in the script itself.  Also, this script may need configuring\n(by editing the script) before use.\n\nUsage:\n\npython csrf_migration_helper.py [--settings=path.to.your.settings] /path/to/python/code [more paths...]\n\n  Paths can be specified as relative paths.\n\n  With no arguments, this help is printed.\n\"\"\"\n\n_POST_FORM_RE = \\\n    re.compile(r'(<form\\W[^>]*\\bmethod\\s*=\\s*(\\'|\"|)POST(\\'|\"|)\\b[^>]*>)', re.IGNORECASE)\n_FORM_CLOSE_RE = re.compile(r'</form\\s*>')\n_TOKEN_RE = re.compile('\\{% csrf_token')\n\ndef get_template_dirs():\n    \"\"\"\n    Returns a set of all directories that contain project templates.\n    \"\"\"\n    from django.conf import settings\n    dirs = set()\n    if ('django.template.loaders.filesystem.load_template_source' in settings.TEMPLATE_LOADERS \n        or  'django.template.loaders.filesystem.Loader' in settings.TEMPLATE_LOADERS):\n        dirs.update(map(unicode, settings.TEMPLATE_DIRS))\n\n    if ('django.template.loaders.app_directories.load_template_source' in settings.TEMPLATE_LOADERS\n        or 'django.template.loaders.app_directories.Loader' in settings.TEMPLATE_LOADERS):\n        from django.template.loaders.app_directories import app_template_dirs\n        dirs.update(app_template_dirs)\n    return dirs\n\ndef make_template_info(filename, root_dirs):\n    \"\"\"\n    Creates a Template object for a filename, calculating the possible\n    relative_filenames from the supplied filename and root template directories\n    \"\"\"\n    return Template(filename,\n                    [filename[len(d)+1:] for d in root_dirs if filename.startswith(d)])\n\n\nclass Template(object):\n    def __init__(self, absolute_filename, relative_filenames):\n        self.absolute_filename, self.relative_filenames = absolute_filename, relative_filenames\n\n    def content(self):\n        try:\n            return self._content\n        except AttributeError:\n            with open(self.absolute_filename) as fd:\n                try:\n                    content = fd.read().decode(TEMPLATE_ENCODING)\n                except UnicodeDecodeError as e:\n                    message = '%s in %s' % (\n                        e[4], self.absolute_filename.encode('UTF-8', 'ignore'))\n                    raise UnicodeDecodeError(*(e.args[:4] + (message,)))\n            self._content = content\n            return content\n    content = property(content)\n\n    def post_form_info(self):\n        \"\"\"\n        Get information about any POST forms in the template.\n        Returns [(linenumber, csrf_token added)]\n        \"\"\"\n        forms = {}\n        form_line = 0\n        for ln, line in enumerate(self.content.split(\"\\n\")):\n            if not form_line and _POST_FORM_RE.search(line):\n                # record the form with no CSRF token yet\n                form_line = ln + 1\n                forms[form_line] = False\n            if form_line and _TOKEN_RE.search(line):\n                # found the CSRF token\n                forms[form_line] = True\n                form_line = 0\n            if form_line and _FORM_CLOSE_RE.search(line):\n                # no token found by form closing tag\n                form_line = 0\n\n        return forms.items()\n\n    def includes_template(self, t):\n        \"\"\"\n        Returns true if this template includes template 't' (via {% include %})\n        \"\"\"\n        for r in t.relative_filenames:\n            if re.search(r'\\{%\\s*include\\s+(\\'|\")' + re.escape(r) + r'(\\1)\\s*%\\}', self.content):\n                return True\n        return False\n\n    def related_templates(self):\n        \"\"\"\n        Returns all templates that include this one, recursively.  (starting\n        with this one)\n        \"\"\"\n        try:\n            return self._related_templates\n        except AttributeError:\n            pass\n\n        retval = set([self])\n        for t in self.all_templates:\n            if t.includes_template(self):\n                # If two templates mutually include each other, directly or\n                # indirectly, we have a problem here...\n                retval = retval.union(t.related_templates())\n\n        self._related_templates = retval\n        return retval\n\n    def __repr__(self):\n        return repr(self.absolute_filename)\n\n    def __eq__(self, other):\n        return self.absolute_filename == other.absolute_filename\n\n    def __hash__(self):\n        return hash(self.absolute_filename)\n\ndef get_templates(dirs):\n    \"\"\"\n    Returns all files in dirs that have template extensions, as Template\n    objects.\n    \"\"\"\n    templates = set()\n    for root in dirs:\n        for (dirpath, dirnames, filenames) in os.walk(root):\n            for f in filenames:\n                if len([True for e in TEMPLATE_EXTENSIONS if f.endswith(e)]) > 0:\n                    t = make_template_info(os.path.join(dirpath, f), dirs)\n                    # templates need to be able to search others:\n                    t.all_templates = templates\n                    templates.add(t)\n    return templates\n\ndef get_python_code(paths):\n    \"\"\"\n    Returns all Python code, as a list of tuples, each one being:\n     (filename, list of lines)\n    \"\"\"\n    retval = []\n    for p in paths:\n        if not os.path.isdir(p):\n            raise Exception(\"'%s' is not a directory.\" % p)\n        for (dirpath, dirnames, filenames) in os.walk(p):\n            for f in filenames:\n                if len([True for e in PYTHON_SOURCE_EXTENSIONS if f.endswith(e)]) > 0:\n                    fn = os.path.join(dirpath, f)\n                    with open(fn) as fd:\n                        content = [l.decode(PYTHON_ENCODING) for l in fd.readlines()]\n                    retval.append((fn, content))\n    return retval\n\ndef search_python_list(python_code, template_names):\n    \"\"\"\n    Searches python code for a list of template names.\n    Returns a list of tuples, each one being:\n     (filename, line number)\n    \"\"\"\n    retval = []\n    for tn in template_names:\n        retval.extend(search_python(python_code, tn))\n    retval = list(set(retval))\n    retval.sort()\n    return retval\n\ndef search_python(python_code, template_name):\n    \"\"\"\n    Searches Python code for a template name.\n    Returns a list of tuples, each one being:\n     (filename, line number)\n    \"\"\"\n    retval = []\n    for fn, content in python_code:\n        for ln, line in enumerate(content):\n            if ((u'\"%s\"' % template_name) in line) or \\\n               ((u\"'%s'\" % template_name) in line):\n                retval.append((fn, ln + 1))\n    return retval\n\ndef main(pythonpaths):\n    template_dirs = get_template_dirs()\n    templates = get_templates(template_dirs)\n    python_code = get_python_code(pythonpaths)\n    for t in templates:\n        # Logic\n        form_matches = t.post_form_info()\n        num_post_forms = len(form_matches)\n        form_lines_without_token = [ln for (ln, has_token) in form_matches if not has_token]\n        if num_post_forms == 0:\n            continue\n        to_search = [rf for rt in t.related_templates() for rf in rt.relative_filenames]\n        found = search_python_list(python_code, to_search)\n\n        # Display:\n        print(t.absolute_filename)\n        for r in t.relative_filenames:\n            print(\"  AKA %s\" % r)\n        print(\"  POST forms: %s\" % num_post_forms)\n        print(\"  With token: %s\" % (num_post_forms - len(form_lines_without_token)))\n        if form_lines_without_token:\n            print(\"  Without token:\")\n            for ln in form_lines_without_token:\n                print(\"%s:%d:\" % (t.absolute_filename, ln))\n        print('')\n        print(\"  Searching for:\")\n        for r in to_search:\n            print(\"    \" + r)\n        print('')\n        print(\"  Found:\")\n        if len(found) == 0:\n            print(\"    Nothing\")\n        else:\n            for fn, ln in found:\n                print(\"%s:%d:\" % (fn, ln))\n\n        print('')\n        print(\"----\")\n\n\nparser = OptionParser(usage=USAGE)\nparser.add_option(\"\", \"--settings\", action=\"store\", dest=\"settings\", help=\"Dotted path to settings file\")\n\nif __name__ == '__main__':\n    options, args = parser.parse_args()\n    if len(args) == 0:\n        parser.print_help()\n        sys.exit(1)\n\n    settings = getattr(options, 'settings', None)\n    if settings is None:\n        if os.environ.get(\"DJANGO_SETTINGS_MODULE\", None) is None:\n            print(\"You need to set DJANGO_SETTINGS_MODULE or use the '--settings' parameter\")\n            sys.exit(1)\n    else:\n        os.environ[\"DJANGO_SETTINGS_MODULE\"] = settings\n\n    main(args)\n"
  },
  {
    "path": "Django-1.5.1/extras/django_bash_completion",
    "content": "# #########################################################################\n# This bash script adds tab-completion feature to django-admin.py and\n# manage.py.\n#\n# Testing it out without installing\n# =================================\n#\n# To test out the completion without \"installing\" this, just run this file\n# directly, like so:\n#\n#     . ~/path/to/django_bash_completion\n#\n# Note: There's a dot ('.') at the beginning of that command.\n#\n# After you do that, tab completion will immediately be made available in your\n# current Bash shell. But it won't be available next time you log in.\n#\n# Installing\n# ==========\n#\n# To install this, point to this file from your .bash_profile, like so:\n#\n#     . ~/path/to/django_bash_completion\n#\n# Do the same in your .bashrc if .bashrc doesn't invoke .bash_profile.\n#\n# Settings will take effect the next time you log in.\n#\n# Uninstalling\n# ============\n#\n# To uninstall, just remove the line from your .bash_profile and .bashrc.\n\n_django_completion()\n{\n    COMPREPLY=( $( COMP_WORDS=\"${COMP_WORDS[*]}\" \\\n                   COMP_CWORD=$COMP_CWORD \\\n\t               DJANGO_AUTO_COMPLETE=1 $1 ) )\n}\ncomplete -F _django_completion -o default django-admin.py manage.py django-admin\n\n_python_django_completion()\n{\n    if [[ ${COMP_CWORD} -ge 2 ]]; then\n        PYTHON_EXE=$( basename -- ${COMP_WORDS[0]} )\n        echo $PYTHON_EXE | egrep \"python([2-9]\\.[0-9])?\" >/dev/null 2>&1\n        if [[ $? == 0 ]]; then\n            PYTHON_SCRIPT=$( basename -- ${COMP_WORDS[1]} )\n            echo $PYTHON_SCRIPT | egrep \"manage\\.py|django-admin(\\.py)?\" >/dev/null 2>&1\n            if [[ $? == 0 ]]; then\n                COMPREPLY=( $( COMP_WORDS=\"${COMP_WORDS[*]:1}\" \\\n                               COMP_CWORD=$(( COMP_CWORD-1 )) \\\n                               DJANGO_AUTO_COMPLETE=1 ${COMP_WORDS[*]} ) )\n            fi\n        fi\n    fi\n}\n\n# Support for multiple interpreters.\nunset pythons\nif command -v whereis &>/dev/null; then\n    python_interpreters=$(whereis python | cut -d \" \" -f 2-)\n    for python in $python_interpreters; do\n        pythons=\"${pythons} $(basename -- $python)\"\n    done\n    pythons=$(echo $pythons | tr \" \" \"\\n\" | sort -u | tr \"\\n\" \" \")\nelse\n    pythons=python\nfi\n\ncomplete -F _python_django_completion -o default $pythons\n\n"
  },
  {
    "path": "Django-1.5.1/scripts/manage_translations.py",
    "content": "#!/usr/bin/env python\n#\n# This python file contains utility scripts to manage Django translations.\n# It has to be run inside the django git root directory.\n#\n# The following commands are available:\n#\n# * update_catalogs: check for new strings in core and contrib catalogs, and\n#                    output how much strings are new/changed.\n#\n# * lang_stats: output statistics for each catalog/language combination\n#\n# * fetch: fetch translations from transifex.com\n#\n# Each command support the --languages and --resources options to limit their\n# operation to the specified language or resource. For example, to get stats\n# for Spanish in contrib.admin, run:\n#\n#  $ python scripts/manage_translations.py lang_stats --language=es --resources=admin\n\nimport os\nfrom optparse import OptionParser\nfrom subprocess import call, Popen, PIPE\n\nfrom django.core.management import call_command\n\n\nHAVE_JS = ['admin']\n\ndef _get_locale_dirs(include_core=True):\n    \"\"\"\n    Return a tuple (contrib name, absolute path) for all locale directories,\n    optionally including the django core catalog.\n    \"\"\"\n    contrib_dir = os.path.join(os.getcwd(), 'django', 'contrib')\n    dirs = []\n    for contrib_name in os.listdir(contrib_dir):\n        path = os.path.join(contrib_dir, contrib_name, 'locale')\n        if os.path.isdir(path):\n            dirs.append((contrib_name, path))\n            if contrib_name in HAVE_JS:\n                dirs.append((\"%s-js\" % contrib_name, path))\n    if include_core:\n        dirs.insert(0, ('core', os.path.join(os.getcwd(), 'django', 'conf', 'locale')))\n    return dirs\n\ndef _tx_resource_for_name(name):\n    \"\"\" Return the Transifex resource name \"\"\"\n    if name == 'core':\n        return \"django.core\"\n    else:\n        return \"django.contrib-%s\" % name\n\ndef _check_diff(cat_name, base_path):\n    \"\"\"\n    Output the approximate number of changed/added strings in the en catalog.\n    \"\"\"\n    po_path = '%(path)s/en/LC_MESSAGES/django%(ext)s.po' % {\n        'path': base_path, 'ext': 'js' if cat_name.endswith('-js') else ''}\n    p = Popen(\"git diff -U0 %s | egrep -v '^@@|^[-+]#|^..POT-Creation' | wc -l\" % po_path,\n              stdout=PIPE, stderr=PIPE, shell=True)\n    output, errors = p.communicate()\n    num_changes = int(output.strip()) - 4\n    print(\"%d changed/added messages in '%s' catalog.\" % (num_changes, cat_name))\n\n\ndef update_catalogs(resources=None, languages=None):\n    \"\"\"\n    Update the en/LC_MESSAGES/django.po (main and contrib) files with\n    new/updated translatable strings.\n    \"\"\"\n    contrib_dirs = _get_locale_dirs(include_core=False)\n\n    os.chdir(os.path.join(os.getcwd(), 'django'))\n    print(\"Updating main en catalog\")\n    call_command('makemessages', locale='en')\n    _check_diff('core', os.path.join(os.getcwd(), 'conf', 'locale'))\n\n    # Contrib catalogs\n    for name, dir_ in contrib_dirs:\n        if resources and not name in resources:\n            continue\n        os.chdir(os.path.join(dir_, '..'))\n        print(\"Updating en catalog in %s\" % dir_)\n        if name.endswith('-js'):\n            call_command('makemessages', locale='en', domain='djangojs')\n        else:\n            call_command('makemessages', locale='en')\n        _check_diff(name, dir_)\n\n\ndef lang_stats(resources=None, languages=None):\n    \"\"\"\n    Output language statistics of committed translation files for each\n    Django catalog.\n    If resources is provided, it should be a list of translation resource to\n    limit the output (e.g. ['core', 'gis']).\n    \"\"\"\n    locale_dirs = _get_locale_dirs()\n\n    for name, dir_ in locale_dirs:\n        if resources and not name in resources:\n            continue\n        print(\"\\nShowing translations stats for '%s':\" % name) \n        langs = sorted([d for d in os.listdir(dir_) if not d.startswith('_')])\n        for lang in langs:\n            if languages and not lang in languages:\n                continue\n            # TODO: merge first with the latest en catalog\n            p = Popen(\"msgfmt -vc -o /dev/null %(path)s/%(lang)s/LC_MESSAGES/django%(ext)s.po\" % {\n                'path': dir_, 'lang': lang, 'ext': 'js' if name.endswith('-js') else ''},\n                stdout=PIPE, stderr=PIPE, shell=True)\n            output, errors = p.communicate()\n            if p.returncode == 0:\n                # msgfmt output stats on stderr\n                print(\"%s: %s\" % (lang, errors.strip()))\n\n\ndef fetch(resources=None, languages=None):\n    \"\"\"\n    Fetch translations from Transifex, wrap long lines, generate mo files.\n    \"\"\"\n    locale_dirs = _get_locale_dirs()\n\n    for name, dir_ in locale_dirs:\n        if resources and not name in resources:\n            continue\n\n        # Transifex pull\n        if languages is None:\n            call('tx pull -r %(res)s -a -f' % {'res': _tx_resource_for_name(name)}, shell=True)\n            languages = sorted([d for d in os.listdir(dir_) if not d.startswith('_')])\n        else:\n            for lang in languages:\n                call('tx pull -r %(res)s -f -l %(lang)s' % {\n                    'res': _tx_resource_for_name(name), 'lang': lang}, shell=True)\n\n        # msgcat to wrap lines and msgfmt for compilation of .mo file\n        for lang in languages:\n            po_path = '%(path)s/%(lang)s/LC_MESSAGES/django%(ext)s.po' % {\n                'path': dir_, 'lang': lang, 'ext': 'js' if name.endswith('-js') else ''}\n            call('msgcat -o %s %s' % (po_path, po_path), shell=True)\n            mo_path = '%s.mo' % po_path[:-3]\n            call('msgfmt -o %s %s' % (mo_path, po_path), shell=True)\n\n\nif __name__ == \"__main__\":\n    RUNABLE_SCRIPTS = ('update_catalogs', 'lang_stats', 'fetch')\n\n    parser = OptionParser(usage=\"usage: %prog [options] cmd\")\n    parser.add_option(\"-r\", \"--resources\", action='append',\n        help=\"limit operation to the specified resources\")\n    parser.add_option(\"-l\", \"--languages\", action='append',\n        help=\"limit operation to the specified languages\")\n    options, args = parser.parse_args()\n\n    if not args:\n        parser.print_usage()\n        exit(1)\n\n    if args[0] in RUNABLE_SCRIPTS:\n        eval(args[0])(options.resources, options.languages)\n    else:\n        print(\"Available commands are: %s\" % \", \".join(RUNABLE_SCRIPTS))\n"
  },
  {
    "path": "Django-1.5.1/scripts/rpm-install.sh",
    "content": "#! /bin/sh\n#\n# This file becomes the install section of the generated spec file.\n#\n\n# This is what dist.py normally does.\n%{__python} setup.py install --root=${RPM_BUILD_ROOT} --record=\"INSTALLED_FILES\"\n\n# Sort the filelist so that directories appear before files. This avoids\n# duplicate filename problems on some systems.\ntouch DIRS\nfor i in `cat INSTALLED_FILES`; do\n  if [ -f ${RPM_BUILD_ROOT}/$i ]; then\n    echo $i >>FILES\n  fi\n  if [ -d ${RPM_BUILD_ROOT}/$i ]; then\n    echo %dir $i >>DIRS\n  fi\ndone\n\n# Make sure we match foo.pyo and foo.pyc along with foo.py (but only once each)\nsed -e \"/\\.py[co]$/d\" -e \"s/\\.py$/.py*/\" DIRS FILES >INSTALLED_FILES\n\nmkdir -p ${RPM_BUILD_ROOT}/%{_mandir}/man1/\ncp docs/man/* ${RPM_BUILD_ROOT}/%{_mandir}/man1/\ncat << EOF >> INSTALLED_FILES\n%doc %{_mandir}/man1/*\"\nEOF\n"
  },
  {
    "path": "Django-1.5.1/setup.cfg",
    "content": "[bdist_rpm]\ndoc_files = docs extras AUTHORS INSTALL LICENSE README.rst\ninstall-script = scripts/rpm-install.sh\n\n"
  },
  {
    "path": "Django-1.5.1/setup.py",
    "content": "from distutils.core import setup\nfrom distutils.command.install_data import install_data\nfrom distutils.command.install import INSTALL_SCHEMES\nfrom distutils.sysconfig import get_python_lib\nimport os\nimport sys\n\n# Warn if we are installing over top of an existing installation. This can\n# cause issues where files that were deleted from a more recent Django are\n# still present in site-packages. See #18115.\noverlay_warning = False\nif \"install\" in sys.argv:\n    # We have to try also with an explicit prefix of /usr/local in order to\n    # catch Debian's custom user site-packages directory.\n    for lib_path in get_python_lib(), get_python_lib(prefix=\"/usr/local\"):\n        existing_path = os.path.abspath(os.path.join(lib_path, \"django\"))\n        if os.path.exists(existing_path):\n            # We note the need for the warning here, but present it after the\n            # command is run, so it's more likely to be seen.\n            overlay_warning = True\n            break\n\nclass osx_install_data(install_data):\n    # On MacOS, the platform-specific lib dir is /System/Library/Framework/Python/.../\n    # which is wrong. Python 2.5 supplied with MacOS 10.5 has an Apple-specific fix\n    # for this in distutils.command.install_data#306. It fixes install_lib but not\n    # install_data, which is why we roll our own install_data class.\n\n    def finalize_options(self):\n        # By the time finalize_options is called, install.install_lib is set to the\n        # fixed directory, so we set the installdir to install_lib. The\n        # install_data class uses ('install_data', 'install_dir') instead.\n        self.set_undefined_options('install', ('install_lib', 'install_dir'))\n        install_data.finalize_options(self)\n\nif sys.platform == \"darwin\":\n    cmdclasses = {'install_data': osx_install_data}\nelse:\n    cmdclasses = {'install_data': install_data}\n\ndef fullsplit(path, result=None):\n    \"\"\"\n    Split a pathname into components (the opposite of os.path.join) in a\n    platform-neutral way.\n    \"\"\"\n    if result is None:\n        result = []\n    head, tail = os.path.split(path)\n    if head == '':\n        return [tail] + result\n    if head == path:\n        return result\n    return fullsplit(head, [tail] + result)\n\n# Tell distutils not to put the data_files in platform-specific installation\n# locations. See here for an explanation:\n# http://groups.google.com/group/comp.lang.python/browse_thread/thread/35ec7b2fed36eaec/2105ee4d9e8042cb\nfor scheme in INSTALL_SCHEMES.values():\n    scheme['data'] = scheme['purelib']\n\n# Compile the list of packages available, because distutils doesn't have\n# an easy way to do this.\npackages, data_files = [], []\nroot_dir = os.path.dirname(__file__)\nif root_dir != '':\n    os.chdir(root_dir)\ndjango_dir = 'django'\n\nfor dirpath, dirnames, filenames in os.walk(django_dir):\n    # Ignore PEP 3147 cache dirs and those whose names start with '.'\n    dirnames[:] = [d for d in dirnames if not d.startswith('.') and d != '__pycache__']\n    if '__init__.py' in filenames:\n        packages.append('.'.join(fullsplit(dirpath)))\n    elif filenames:\n        data_files.append([dirpath, [os.path.join(dirpath, f) for f in filenames]])\n\n# Small hack for working with bdist_wininst.\n# See http://mail.python.org/pipermail/distutils-sig/2004-August/004134.html\nif len(sys.argv) > 1 and sys.argv[1] == 'bdist_wininst':\n    for file_info in data_files:\n        file_info[0] = '\\\\PURELIB\\\\%s' % file_info[0]\n\n# Dynamically calculate the version based on django.VERSION.\nversion = __import__('django').get_version()\n\nsetup(\n    name = \"Django\",\n    version = version,\n    url = 'http://www.djangoproject.com/',\n    author = 'Django Software Foundation',\n    author_email = 'foundation@djangoproject.com',\n    description = 'A high-level Python Web framework that encourages rapid development and clean, pragmatic design.',\n    download_url = 'https://www.djangoproject.com/m/releases/1.5/Django-1.5.1.tar.gz',\n    license = \"BSD\",\n    packages = packages,\n    cmdclass = cmdclasses,\n    data_files = data_files,\n    scripts = ['django/bin/django-admin.py'],\n    classifiers = [\n        'Development Status :: 5 - Production/Stable',\n        'Environment :: Web Environment',\n        'Framework :: Django',\n        'Intended Audience :: Developers',\n        'License :: OSI Approved :: BSD License',\n        'Operating System :: OS Independent',\n        'Programming Language :: Python',\n        'Programming Language :: Python :: 2.6',\n        'Programming Language :: Python :: 2.7',\n        'Programming Language :: Python :: 3.2',\n        'Programming Language :: Python :: 3.3',\n        'Topic :: Internet :: WWW/HTTP',\n        'Topic :: Internet :: WWW/HTTP :: Dynamic Content',\n        'Topic :: Internet :: WWW/HTTP :: WSGI',\n        'Topic :: Software Development :: Libraries :: Application Frameworks',\n        'Topic :: Software Development :: Libraries :: Python Modules',\n   ],\n)\n\nif overlay_warning:\n    sys.stderr.write(\"\"\"\n\n========\nWARNING!\n========\n\nYou have just installed Django over top of an existing\ninstallation, without removing it first. Because of this,\nyour install may now include extraneous files from a\nprevious version that have since been removed from\nDjango. This is known to cause a variety of problems. You\nshould manually remove the\n\n%(existing_path)s\n\ndirectory and re-install Django.\n\n\"\"\" % { \"existing_path\": existing_path })\n"
  },
  {
    "path": "Django-1.5.1/tests/.coveragerc",
    "content": "[run]\nomit = runtests,test_sqlite,regressiontests*,modeltests*,*/django/contrib/*/tests*,*/django/utils/unittest*,*/django/utils/simplejson*,*/django/utils/importlib.py,*/django/test/_doctest.py,*/django/core/servers/fastcgi.py,*/django/utils/autoreload.py,*/django/utils/dictconfig.py\n\n[html]\ndirectory = coverage_html\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/aggregation/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/aggregation/fixtures/aggregation.json",
    "content": "[\n    {\n        \"pk\": 1,\n        \"model\": \"aggregation.publisher\",\n        \"fields\": {\n            \"name\": \"Apress\",\n            \"num_awards\": 3\n        }\n    },\n    {\n        \"pk\": 2,\n        \"model\": \"aggregation.publisher\",\n        \"fields\": {\n            \"name\": \"Sams\",\n            \"num_awards\": 1\n        }\n    },\n    {\n        \"pk\": 3,\n        \"model\": \"aggregation.publisher\",\n        \"fields\": {\n            \"name\": \"Prentice Hall\",\n            \"num_awards\": 7\n        }\n    },\n    {\n        \"pk\": 4,\n        \"model\": \"aggregation.publisher\",\n        \"fields\": {\n            \"name\": \"Morgan Kaufmann\",\n            \"num_awards\": 9\n        }\n    },\n    {\n        \"pk\": 5,\n        \"model\": \"aggregation.publisher\",\n        \"fields\": {\n            \"name\": \"Jonno's House of Books\",\n            \"num_awards\": 0\n        }\n    },\n    {\n        \"pk\": 1,\n        \"model\": \"aggregation.book\",\n        \"fields\": {\n            \"publisher\": 1,\n            \"isbn\": \"159059725\",\n            \"name\": \"The Definitive Guide to Django: Web Development Done Right\",\n            \"price\": \"30.00\",\n            \"rating\": 4.5,\n            \"authors\": [1, 2],\n            \"contact\": 1,\n            \"pages\": 447,\n            \"pubdate\": \"2007-12-6\"\n        }\n    },\n    {\n        \"pk\": 2,\n        \"model\": \"aggregation.book\",\n        \"fields\": {\n            \"publisher\": 2,\n            \"isbn\": \"067232959\",\n            \"name\": \"Sams Teach Yourself Django in 24 Hours\",\n            \"price\": \"23.09\",\n            \"rating\": 3.0,\n            \"authors\": [3],\n            \"contact\": 3,\n            \"pages\": 528,\n            \"pubdate\": \"2008-3-3\"\n        }\n    },\n    {\n        \"pk\": 3,\n        \"model\": \"aggregation.book\",\n        \"fields\": {\n            \"publisher\": 1,\n            \"isbn\": \"159059996\",\n            \"name\": \"Practical Django Projects\",\n            \"price\": \"29.69\",\n            \"rating\": 4.0,\n            \"authors\": [4],\n            \"contact\": 4,\n            \"pages\": 300,\n            \"pubdate\": \"2008-6-23\"\n        }\n    },\n    {\n        \"pk\": 4,\n        \"model\": \"aggregation.book\",\n        \"fields\": {\n            \"publisher\": 3,\n            \"isbn\": \"013235613\",\n            \"name\": \"Python Web Development with Django\",\n            \"price\": \"29.69\",\n            \"rating\": 4.0,\n            \"authors\": [5, 6, 7],\n            \"contact\": 5,\n            \"pages\": 350,\n            \"pubdate\": \"2008-11-3\"\n        }\n    },\n    {\n        \"pk\": 5,\n        \"model\": \"aggregation.book\",\n        \"fields\": {\n            \"publisher\": 3,\n            \"isbn\": \"013790395\",\n            \"name\": \"Artificial Intelligence: A Modern Approach\",\n            \"price\": \"82.80\",\n            \"rating\": 4.0,\n            \"authors\": [8, 9],\n            \"contact\": 8,\n            \"pages\": 1132,\n            \"pubdate\": \"1995-1-15\"\n        }\n    },\n    {\n        \"pk\": 6,\n        \"model\": \"aggregation.book\",\n        \"fields\": {\n            \"publisher\": 4,\n            \"isbn\": \"155860191\",\n            \"name\": \"Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp\",\n            \"price\": \"75.00\",\n            \"rating\": 5.0,\n            \"authors\": [8],\n            \"contact\": 8,\n            \"pages\": 946,\n            \"pubdate\": \"1991-10-15\"\n        }\n    },\n    {\n        \"pk\": 1,\n        \"model\": \"aggregation.store\",\n        \"fields\": {\n            \"books\": [1, 2, 3, 4, 5, 6],\n            \"name\": \"Amazon.com\",\n            \"original_opening\": \"1994-4-23 9:17:42\",\n            \"friday_night_closing\": \"23:59:59\"\n        }\n    },\n    {\n        \"pk\": 2,\n        \"model\": \"aggregation.store\",\n        \"fields\": {\n            \"books\": [1, 3, 5, 6],\n            \"name\": \"Books.com\",\n            \"original_opening\": \"2001-3-15 11:23:37\",\n            \"friday_night_closing\": \"23:59:59\"\n        }\n    },\n    {\n        \"pk\": 3,\n        \"model\": \"aggregation.store\",\n        \"fields\": {\n            \"books\": [3, 4, 6],\n            \"name\": \"Mamma and Pappa's Books\",\n            \"original_opening\": \"1945-4-25 16:24:14\",\n            \"friday_night_closing\": \"21:30:00\"\n        }\n    },\n    {\n        \"pk\": 1,\n        \"model\": \"aggregation.author\",\n        \"fields\": {\n            \"age\": 34,\n            \"friends\": [2, 4],\n            \"name\": \"Adrian Holovaty\"\n        }\n    },\n    {\n        \"pk\": 2,\n        \"model\": \"aggregation.author\",\n        \"fields\": {\n            \"age\": 35,\n            \"friends\": [1, 7],\n            \"name\": \"Jacob Kaplan-Moss\"\n        }\n    },\n    {\n        \"pk\": 3,\n        \"model\": \"aggregation.author\",\n        \"fields\": {\n            \"age\": 45,\n            \"friends\": [],\n            \"name\": \"Brad Dayley\"\n        }\n    },\n    {\n        \"pk\": 4,\n        \"model\": \"aggregation.author\",\n        \"fields\": {\n            \"age\": 29,\n            \"friends\": [1],\n            \"name\": \"James Bennett\"\n        }\n    },\n    {\n        \"pk\": 5,\n        \"model\": \"aggregation.author\",\n        \"fields\": {\n            \"age\": 37,\n            \"friends\": [6, 7],\n            \"name\": \"Jeffrey Forcier\"\n        }\n    },\n    {\n        \"pk\": 6,\n        \"model\": \"aggregation.author\",\n        \"fields\": {\n            \"age\": 29,\n            \"friends\": [5, 7],\n            \"name\": \"Paul Bissex\"\n        }\n    },\n    {\n        \"pk\": 7,\n        \"model\": \"aggregation.author\",\n        \"fields\": {\n            \"age\": 25,\n            \"friends\": [2, 5, 6],\n            \"name\": \"Wesley J. Chun\"\n        }\n    },\n    {\n        \"pk\": 8,\n        \"model\": \"aggregation.author\",\n        \"fields\": {\n            \"age\": 57,\n            \"friends\": [9],\n            \"name\": \"Peter Norvig\"\n        }\n    },\n    {\n        \"pk\": 9,\n        \"model\": \"aggregation.author\",\n        \"fields\": {\n            \"age\": 46,\n            \"friends\": [8],\n            \"name\": \"Stuart Russell\"\n        }\n    }\n]\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/aggregation/models.py",
    "content": "# coding: utf-8\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n@python_2_unicode_compatible\nclass Author(models.Model):\n    name = models.CharField(max_length=100)\n    age = models.IntegerField()\n    friends = models.ManyToManyField('self', blank=True)\n\n    def __str__(self):\n        return self.name\n\n@python_2_unicode_compatible\nclass Publisher(models.Model):\n    name = models.CharField(max_length=255)\n    num_awards = models.IntegerField()\n\n    def __str__(self):\n        return self.name\n\n@python_2_unicode_compatible\nclass Book(models.Model):\n    isbn = models.CharField(max_length=9)\n    name = models.CharField(max_length=255)\n    pages = models.IntegerField()\n    rating = models.FloatField()\n    price = models.DecimalField(decimal_places=2, max_digits=6)\n    authors = models.ManyToManyField(Author)\n    contact = models.ForeignKey(Author, related_name='book_contact_set')\n    publisher = models.ForeignKey(Publisher)\n    pubdate = models.DateField()\n\n    def __str__(self):\n        return self.name\n\n@python_2_unicode_compatible\nclass Store(models.Model):\n    name = models.CharField(max_length=255)\n    books = models.ManyToManyField(Book)\n    original_opening = models.DateTimeField()\n    friday_night_closing = models.TimeField()\n\n    def __str__(self):\n        return self.name\n\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/aggregation/tests.py",
    "content": "from __future__ import absolute_import\n\nimport datetime\nfrom decimal import Decimal\n\nfrom django.db.models import Avg, Sum, Count, Max, Min\nfrom django.test import TestCase, Approximate\n\nfrom .models import Author, Publisher, Book, Store\n\n\nclass BaseAggregateTestCase(TestCase):\n    fixtures = [\"aggregation.json\"]\n\n    def test_empty_aggregate(self):\n        self.assertEqual(Author.objects.all().aggregate(), {})\n\n    def test_single_aggregate(self):\n        vals = Author.objects.aggregate(Avg(\"age\"))\n        self.assertEqual(vals, {\"age__avg\": Approximate(37.4, places=1)})\n\n    def test_multiple_aggregates(self):\n        vals = Author.objects.aggregate(Sum(\"age\"), Avg(\"age\"))\n        self.assertEqual(vals, {\"age__sum\": 337, \"age__avg\": Approximate(37.4, places=1)})\n\n    def test_filter_aggregate(self):\n        vals = Author.objects.filter(age__gt=29).aggregate(Sum(\"age\"))\n        self.assertEqual(len(vals), 1)\n        self.assertEqual(vals[\"age__sum\"], 254)\n\n    def test_related_aggregate(self):\n        vals = Author.objects.aggregate(Avg(\"friends__age\"))\n        self.assertEqual(len(vals), 1)\n        self.assertAlmostEqual(vals[\"friends__age__avg\"], 34.07, places=2)\n\n        vals = Book.objects.filter(rating__lt=4.5).aggregate(Avg(\"authors__age\"))\n        self.assertEqual(len(vals), 1)\n        self.assertAlmostEqual(vals[\"authors__age__avg\"], 38.2857, places=2)\n\n        vals = Author.objects.all().filter(name__contains=\"a\").aggregate(Avg(\"book__rating\"))\n        self.assertEqual(len(vals), 1)\n        self.assertEqual(vals[\"book__rating__avg\"], 4.0)\n\n        vals = Book.objects.aggregate(Sum(\"publisher__num_awards\"))\n        self.assertEqual(len(vals), 1)\n        self.assertEqual(vals[\"publisher__num_awards__sum\"], 30)\n\n        vals = Publisher.objects.aggregate(Sum(\"book__price\"))\n        self.assertEqual(len(vals), 1)\n        self.assertEqual(vals[\"book__price__sum\"], Decimal(\"270.27\"))\n\n    def test_aggregate_multi_join(self):\n        vals = Store.objects.aggregate(Max(\"books__authors__age\"))\n        self.assertEqual(len(vals), 1)\n        self.assertEqual(vals[\"books__authors__age__max\"], 57)\n\n        vals = Author.objects.aggregate(Min(\"book__publisher__num_awards\"))\n        self.assertEqual(len(vals), 1)\n        self.assertEqual(vals[\"book__publisher__num_awards__min\"], 1)\n\n    def test_aggregate_alias(self):\n        vals = Store.objects.filter(name=\"Amazon.com\").aggregate(amazon_mean=Avg(\"books__rating\"))\n        self.assertEqual(len(vals), 1)\n        self.assertAlmostEqual(vals[\"amazon_mean\"], 4.08, places=2)\n\n    def test_annotate_basic(self):\n        self.assertQuerysetEqual(\n            Book.objects.annotate().order_by('pk'), [\n                \"The Definitive Guide to Django: Web Development Done Right\",\n                \"Sams Teach Yourself Django in 24 Hours\",\n                \"Practical Django Projects\",\n                \"Python Web Development with Django\",\n                \"Artificial Intelligence: A Modern Approach\",\n                \"Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp\"\n            ],\n            lambda b: b.name\n        )\n\n        books = Book.objects.annotate(mean_age=Avg(\"authors__age\"))\n        b = books.get(pk=1)\n        self.assertEqual(\n            b.name,\n            'The Definitive Guide to Django: Web Development Done Right'\n        )\n        self.assertEqual(b.mean_age, 34.5)\n\n    def test_annotate_m2m(self):\n        books = Book.objects.filter(rating__lt=4.5).annotate(Avg(\"authors__age\")).order_by(\"name\")\n        self.assertQuerysetEqual(\n            books, [\n                ('Artificial Intelligence: A Modern Approach', 51.5),\n                ('Practical Django Projects', 29.0),\n                ('Python Web Development with Django', Approximate(30.3, places=1)),\n                ('Sams Teach Yourself Django in 24 Hours', 45.0)\n            ],\n            lambda b: (b.name, b.authors__age__avg),\n        )\n\n        books = Book.objects.annotate(num_authors=Count(\"authors\")).order_by(\"name\")\n        self.assertQuerysetEqual(\n            books, [\n                ('Artificial Intelligence: A Modern Approach', 2),\n                ('Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp', 1),\n                ('Practical Django Projects', 1),\n                ('Python Web Development with Django', 3),\n                ('Sams Teach Yourself Django in 24 Hours', 1),\n                ('The Definitive Guide to Django: Web Development Done Right', 2)\n            ],\n            lambda b: (b.name, b.num_authors)\n        )\n\n    def test_backwards_m2m_annotate(self):\n        authors = Author.objects.filter(name__contains=\"a\").annotate(Avg(\"book__rating\")).order_by(\"name\")\n        self.assertQuerysetEqual(\n            authors, [\n                ('Adrian Holovaty', 4.5),\n                ('Brad Dayley', 3.0),\n                ('Jacob Kaplan-Moss', 4.5),\n                ('James Bennett', 4.0),\n                ('Paul Bissex', 4.0),\n                ('Stuart Russell', 4.0)\n            ],\n            lambda a: (a.name, a.book__rating__avg)\n        )\n\n        authors = Author.objects.annotate(num_books=Count(\"book\")).order_by(\"name\")\n        self.assertQuerysetEqual(\n            authors, [\n                ('Adrian Holovaty', 1),\n                ('Brad Dayley', 1),\n                ('Jacob Kaplan-Moss', 1),\n                ('James Bennett', 1),\n                ('Jeffrey Forcier', 1),\n                ('Paul Bissex', 1),\n                ('Peter Norvig', 2),\n                ('Stuart Russell', 1),\n                ('Wesley J. Chun', 1)\n            ],\n            lambda a: (a.name, a.num_books)\n        )\n\n    def test_reverse_fkey_annotate(self):\n        books = Book.objects.annotate(Sum(\"publisher__num_awards\")).order_by(\"name\")\n        self.assertQuerysetEqual(\n            books, [\n                ('Artificial Intelligence: A Modern Approach', 7),\n                ('Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp', 9),\n                ('Practical Django Projects', 3),\n                ('Python Web Development with Django', 7),\n                ('Sams Teach Yourself Django in 24 Hours', 1),\n                ('The Definitive Guide to Django: Web Development Done Right', 3)\n            ],\n            lambda b: (b.name, b.publisher__num_awards__sum)\n        )\n\n        publishers = Publisher.objects.annotate(Sum(\"book__price\")).order_by(\"name\")\n        self.assertQuerysetEqual(\n            publishers, [\n                ('Apress', Decimal(\"59.69\")),\n                (\"Jonno's House of Books\", None),\n                ('Morgan Kaufmann', Decimal(\"75.00\")),\n                ('Prentice Hall', Decimal(\"112.49\")),\n                ('Sams', Decimal(\"23.09\"))\n            ],\n            lambda p: (p.name, p.book__price__sum)\n        )\n\n    def test_annotate_values(self):\n        books = list(Book.objects.filter(pk=1).annotate(mean_age=Avg(\"authors__age\")).values())\n        self.assertEqual(\n            books, [\n                {\n                    \"contact_id\": 1,\n                    \"id\": 1,\n                    \"isbn\": \"159059725\",\n                    \"mean_age\": 34.5,\n                    \"name\": \"The Definitive Guide to Django: Web Development Done Right\",\n                    \"pages\": 447,\n                    \"price\": Approximate(Decimal(\"30\")),\n                    \"pubdate\": datetime.date(2007, 12, 6),\n                    \"publisher_id\": 1,\n                    \"rating\": 4.5,\n                }\n            ]\n        )\n\n        books = Book.objects.filter(pk=1).annotate(mean_age=Avg('authors__age')).values('pk', 'isbn', 'mean_age')\n        self.assertEqual(\n            list(books), [\n                {\n                    \"pk\": 1,\n                    \"isbn\": \"159059725\",\n                    \"mean_age\": 34.5,\n                }\n            ]\n        )\n\n        books = Book.objects.filter(pk=1).annotate(mean_age=Avg(\"authors__age\")).values(\"name\")\n        self.assertEqual(\n            list(books), [\n                {\n                    \"name\": \"The Definitive Guide to Django: Web Development Done Right\"\n                }\n            ]\n        )\n\n        books = Book.objects.filter(pk=1).values().annotate(mean_age=Avg('authors__age'))\n        self.assertEqual(\n            list(books), [\n                {\n                    \"contact_id\": 1,\n                    \"id\": 1,\n                    \"isbn\": \"159059725\",\n                    \"mean_age\": 34.5,\n                    \"name\": \"The Definitive Guide to Django: Web Development Done Right\",\n                    \"pages\": 447,\n                    \"price\": Approximate(Decimal(\"30\")),\n                    \"pubdate\": datetime.date(2007, 12, 6),\n                    \"publisher_id\": 1,\n                    \"rating\": 4.5,\n                }\n            ]\n        )\n\n        books = Book.objects.values(\"rating\").annotate(n_authors=Count(\"authors__id\"), mean_age=Avg(\"authors__age\")).order_by(\"rating\")\n        self.assertEqual(\n            list(books), [\n                {\n                    \"rating\": 3.0,\n                    \"n_authors\": 1,\n                    \"mean_age\": 45.0,\n                },\n                {\n                    \"rating\": 4.0,\n                    \"n_authors\": 6,\n                    \"mean_age\": Approximate(37.16, places=1)\n                },\n                {\n                    \"rating\": 4.5,\n                    \"n_authors\": 2,\n                    \"mean_age\": 34.5,\n                },\n                {\n                    \"rating\": 5.0,\n                    \"n_authors\": 1,\n                    \"mean_age\": 57.0,\n                }\n            ]\n        )\n\n        authors = Author.objects.annotate(Avg(\"friends__age\")).order_by(\"name\")\n        self.assertEqual(len(authors), 9)\n        self.assertQuerysetEqual(\n            authors, [\n                ('Adrian Holovaty', 32.0),\n                ('Brad Dayley', None),\n                ('Jacob Kaplan-Moss', 29.5),\n                ('James Bennett', 34.0),\n                ('Jeffrey Forcier', 27.0),\n                ('Paul Bissex', 31.0),\n                ('Peter Norvig', 46.0),\n                ('Stuart Russell', 57.0),\n                ('Wesley J. Chun', Approximate(33.66, places=1))\n            ],\n            lambda a: (a.name, a.friends__age__avg)\n        )\n\n    def test_count(self):\n        vals = Book.objects.aggregate(Count(\"rating\"))\n        self.assertEqual(vals, {\"rating__count\": 6})\n\n        vals = Book.objects.aggregate(Count(\"rating\", distinct=True))\n        self.assertEqual(vals, {\"rating__count\": 4})\n\n    def test_fkey_aggregate(self):\n        explicit = list(Author.objects.annotate(Count('book__id')))\n        implicit = list(Author.objects.annotate(Count('book')))\n        self.assertEqual(explicit, implicit)\n\n    def test_annotate_ordering(self):\n        books = Book.objects.values('rating').annotate(oldest=Max('authors__age')).order_by('oldest', 'rating')\n        self.assertEqual(\n            list(books), [\n                {\n                    \"rating\": 4.5,\n                    \"oldest\": 35,\n                },\n                {\n                    \"rating\": 3.0,\n                    \"oldest\": 45\n                },\n                {\n                    \"rating\": 4.0,\n                    \"oldest\": 57,\n                },\n                {\n                    \"rating\": 5.0,\n                    \"oldest\": 57,\n                }\n            ]\n        )\n\n        books = Book.objects.values(\"rating\").annotate(oldest=Max(\"authors__age\")).order_by(\"-oldest\", \"-rating\")\n        self.assertEqual(\n            list(books), [\n                {\n                    \"rating\": 5.0,\n                    \"oldest\": 57,\n                },\n                {\n                    \"rating\": 4.0,\n                    \"oldest\": 57,\n                },\n                {\n                    \"rating\": 3.0,\n                    \"oldest\": 45,\n                },\n                {\n                    \"rating\": 4.5,\n                    \"oldest\": 35,\n                }\n            ]\n        )\n\n    def test_aggregate_annotation(self):\n        vals = Book.objects.annotate(num_authors=Count(\"authors__id\")).aggregate(Avg(\"num_authors\"))\n        self.assertEqual(vals, {\"num_authors__avg\": Approximate(1.66, places=1)})\n\n    def test_filtering(self):\n        p = Publisher.objects.create(name='Expensive Publisher', num_awards=0)\n        Book.objects.create(\n            name='ExpensiveBook1',\n            pages=1,\n            isbn='111',\n            rating=3.5,\n            price=Decimal(\"1000\"),\n            publisher=p,\n            contact_id=1,\n            pubdate=datetime.date(2008,12,1)\n        )\n        Book.objects.create(\n            name='ExpensiveBook2',\n            pages=1,\n            isbn='222',\n            rating=4.0,\n            price=Decimal(\"1000\"),\n            publisher=p,\n            contact_id=1,\n            pubdate=datetime.date(2008,12,2)\n        )\n        Book.objects.create(\n            name='ExpensiveBook3',\n            pages=1,\n            isbn='333',\n            rating=4.5,\n            price=Decimal(\"35\"),\n            publisher=p,\n            contact_id=1,\n            pubdate=datetime.date(2008,12,3)\n        )\n\n        publishers = Publisher.objects.annotate(num_books=Count(\"book__id\")).filter(num_books__gt=1).order_by(\"pk\")\n        self.assertQuerysetEqual(\n            publishers, [\n                \"Apress\",\n                \"Prentice Hall\",\n                \"Expensive Publisher\",\n            ],\n            lambda p: p.name,\n        )\n\n        publishers = Publisher.objects.filter(book__price__lt=Decimal(\"40.0\")).order_by(\"pk\")\n        self.assertQuerysetEqual(\n            publishers, [\n                \"Apress\",\n                \"Apress\",\n                \"Sams\",\n                \"Prentice Hall\",\n                \"Expensive Publisher\",\n            ],\n            lambda p: p.name\n        )\n\n        publishers = Publisher.objects.annotate(num_books=Count(\"book__id\")).filter(num_books__gt=1, book__price__lt=Decimal(\"40.0\")).order_by(\"pk\")\n        self.assertQuerysetEqual(\n            publishers, [\n                \"Apress\",\n                \"Prentice Hall\",\n                \"Expensive Publisher\",\n            ],\n            lambda p: p.name,\n        )\n\n        publishers = Publisher.objects.filter(book__price__lt=Decimal(\"40.0\")).annotate(num_books=Count(\"book__id\")).filter(num_books__gt=1).order_by(\"pk\")\n        self.assertQuerysetEqual(\n            publishers, [\n                \"Apress\",\n            ],\n            lambda p: p.name\n        )\n\n        publishers = Publisher.objects.annotate(num_books=Count(\"book\")).filter(num_books__range=[1, 3]).order_by(\"pk\")\n        self.assertQuerysetEqual(\n            publishers, [\n                \"Apress\",\n                \"Sams\",\n                \"Prentice Hall\",\n                \"Morgan Kaufmann\",\n                \"Expensive Publisher\",\n            ],\n            lambda p: p.name\n        )\n\n        publishers = Publisher.objects.annotate(num_books=Count(\"book\")).filter(num_books__range=[1, 2]).order_by(\"pk\")\n        self.assertQuerysetEqual(\n            publishers, [\n                \"Apress\",\n                \"Sams\",\n                \"Prentice Hall\",\n                \"Morgan Kaufmann\",\n            ],\n            lambda p: p.name\n        )\n\n        publishers = Publisher.objects.annotate(num_books=Count(\"book\")).filter(num_books__in=[1, 3]).order_by(\"pk\")\n        self.assertQuerysetEqual(\n            publishers, [\n                \"Sams\",\n                \"Morgan Kaufmann\",\n                \"Expensive Publisher\",\n            ],\n            lambda p: p.name,\n        )\n\n        publishers = Publisher.objects.annotate(num_books=Count(\"book\")).filter(num_books__isnull=True)\n        self.assertEqual(len(publishers), 0)\n\n    def test_annotation(self):\n        vals = Author.objects.filter(pk=1).aggregate(Count(\"friends__id\"))\n        self.assertEqual(vals, {\"friends__id__count\": 2})\n\n        books = Book.objects.annotate(num_authors=Count(\"authors__name\")).filter(num_authors__ge=2).order_by(\"pk\")\n        self.assertQuerysetEqual(\n            books, [\n                \"The Definitive Guide to Django: Web Development Done Right\",\n                \"Artificial Intelligence: A Modern Approach\",\n            ],\n            lambda b: b.name\n        )\n\n        authors = Author.objects.annotate(num_friends=Count(\"friends__id\", distinct=True)).filter(num_friends=0).order_by(\"pk\")\n        self.assertQuerysetEqual(\n            authors, [\n                \"Brad Dayley\",\n            ],\n            lambda a: a.name\n        )\n\n        publishers = Publisher.objects.annotate(num_books=Count(\"book__id\")).filter(num_books__gt=1).order_by(\"pk\")\n        self.assertQuerysetEqual(\n            publishers, [\n                \"Apress\",\n                \"Prentice Hall\",\n            ],\n            lambda p: p.name\n        )\n\n        publishers = Publisher.objects.filter(book__price__lt=Decimal(\"40.0\")).annotate(num_books=Count(\"book__id\")).filter(num_books__gt=1)\n        self.assertQuerysetEqual(\n            publishers, [\n                \"Apress\",\n            ],\n            lambda p: p.name\n        )\n\n        books = Book.objects.annotate(num_authors=Count(\"authors__id\")).filter(authors__name__contains=\"Norvig\", num_authors__gt=1)\n        self.assertQuerysetEqual(\n            books, [\n                \"Artificial Intelligence: A Modern Approach\",\n            ],\n            lambda b: b.name\n        )\n\n    def test_more_aggregation(self):\n        a = Author.objects.get(name__contains='Norvig')\n        b = Book.objects.get(name__contains='Done Right')\n        b.authors.add(a)\n        b.save()\n\n        vals = Book.objects.annotate(num_authors=Count(\"authors__id\")).filter(authors__name__contains=\"Norvig\", num_authors__gt=1).aggregate(Avg(\"rating\"))\n        self.assertEqual(vals, {\"rating__avg\": 4.25})\n\n    def test_even_more_aggregate(self):\n        publishers = Publisher.objects.annotate(earliest_book=Min(\"book__pubdate\")).exclude(earliest_book=None).order_by(\"earliest_book\").values()\n        self.assertEqual(\n            list(publishers), [\n                {\n                    'earliest_book': datetime.date(1991, 10, 15),\n                    'num_awards': 9,\n                    'id': 4,\n                    'name': 'Morgan Kaufmann'\n                },\n                {\n                    'earliest_book': datetime.date(1995, 1, 15),\n                    'num_awards': 7,\n                    'id': 3,\n                    'name': 'Prentice Hall'\n                },\n                {\n                    'earliest_book': datetime.date(2007, 12, 6),\n                    'num_awards': 3,\n                    'id': 1,\n                    'name': 'Apress'\n                },\n                {\n                    'earliest_book': datetime.date(2008, 3, 3),\n                    'num_awards': 1,\n                    'id': 2,\n                    'name': 'Sams'\n                }\n            ]\n        )\n\n        vals = Store.objects.aggregate(Max(\"friday_night_closing\"), Min(\"original_opening\"))\n        self.assertEqual(\n            vals,\n            {\n                \"friday_night_closing__max\": datetime.time(23, 59, 59),\n                \"original_opening__min\": datetime.datetime(1945, 4, 25, 16, 24, 14),\n            }\n        )\n\n    def test_annotate_values_list(self):\n        books = Book.objects.filter(pk=1).annotate(mean_age=Avg(\"authors__age\")).values_list(\"pk\", \"isbn\", \"mean_age\")\n        self.assertEqual(\n            list(books), [\n                (1, \"159059725\", 34.5),\n            ]\n        )\n\n        books = Book.objects.filter(pk=1).annotate(mean_age=Avg(\"authors__age\")).values_list(\"isbn\")\n        self.assertEqual(\n            list(books), [\n                ('159059725',)\n            ]\n        )\n\n        books = Book.objects.filter(pk=1).annotate(mean_age=Avg(\"authors__age\")).values_list(\"mean_age\")\n        self.assertEqual(\n            list(books), [\n                (34.5,)\n            ]\n        )\n\n        books = Book.objects.filter(pk=1).annotate(mean_age=Avg(\"authors__age\")).values_list(\"mean_age\", flat=True)\n        self.assertEqual(list(books), [34.5])\n\n        books = Book.objects.values_list(\"price\").annotate(count=Count(\"price\")).order_by(\"-count\", \"price\")\n        self.assertEqual(\n            list(books), [\n                (Decimal(\"29.69\"), 2),\n                (Decimal('23.09'), 1),\n                (Decimal('30'), 1),\n                (Decimal('75'), 1),\n                (Decimal('82.8'), 1),\n            ]\n        )\n\n    def test_dates_with_aggregation(self):\n        \"\"\"\n        Test that .dates() returns a distinct set of dates when applied to a\n        QuerySet with aggregation.\n\n        Refs #18056. Previously, .dates() would return distinct (date_kind,\n        aggregation) sets, in this case (year, num_authors), so 2008 would be\n        returned twice because there are books from 2008 with a different\n        number of authors.\n        \"\"\"\n        dates = Book.objects.annotate(num_authors=Count(\"authors\")).dates('pubdate', 'year')\n        self.assertQuerysetEqual(\n            dates, [\n                \"datetime.datetime(1991, 1, 1, 0, 0)\",\n                \"datetime.datetime(1995, 1, 1, 0, 0)\",\n                \"datetime.datetime(2007, 1, 1, 0, 0)\",\n                \"datetime.datetime(2008, 1, 1, 0, 0)\"\n            ]\n        )\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/base/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/base/models.py",
    "content": "from __future__ import unicode_literals\n\nfrom django.db import models\nfrom django.utils import six\n\n\n# The models definitions below used to crash. Generating models dynamically\n# at runtime is a bad idea because it pollutes the app cache. This doesn't\n# integrate well with the test suite but at least it prevents regressions.\n\n\nclass CustomBaseModel(models.base.ModelBase):\n    pass\n\n\nclass MyModel(six.with_metaclass(CustomBaseModel, models.Model)):\n        \"\"\"Model subclass with a custom base using six.with_metaclass.\"\"\"\n\n\nif not six.PY3:\n    class MyModel(models.Model):\n        \"\"\"Model subclass with a custom base using __metaclass__.\"\"\"\n        __metaclass__ = CustomBaseModel\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/basic/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/basic/models.py",
    "content": "# coding: utf-8\n\"\"\"\n1. Bare-bones model\n\nThis is a basic model with only two non-primary-key fields.\n\"\"\"\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n@python_2_unicode_compatible\nclass Article(models.Model):\n    headline = models.CharField(max_length=100, default='Default headline')\n    pub_date = models.DateTimeField()\n\n    class Meta:\n        ordering = ('pub_date','headline')\n\n    def __str__(self):\n        return self.headline\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/basic/tests.py",
    "content": "from __future__ import absolute_import, unicode_literals\n\nfrom datetime import datetime\n\nfrom django.core.exceptions import ObjectDoesNotExist, MultipleObjectsReturned\nfrom django.db.models.fields import Field, FieldDoesNotExist\nfrom django.test import TestCase, skipIfDBFeature, skipUnlessDBFeature\nfrom django.utils import six\nfrom django.utils.translation import ugettext_lazy\n\nfrom .models import Article\n\n\nclass ModelTest(TestCase):\n\n    def test_lookup(self):\n        # No articles are in the system yet.\n        self.assertQuerysetEqual(Article.objects.all(), [])\n\n        # Create an Article.\n        a = Article(\n            id=None,\n            headline='Area man programs in Python',\n            pub_date=datetime(2005, 7, 28),\n        )\n\n        # Save it into the database. You have to call save() explicitly.\n        a.save()\n\n        # Now it has an ID.\n        self.assertTrue(a.id != None)\n\n        # Models have a pk property that is an alias for the primary key\n        # attribute (by default, the 'id' attribute).\n        self.assertEqual(a.pk, a.id)\n\n        # Access database columns via Python attributes.\n        self.assertEqual(a.headline, 'Area man programs in Python')\n        self.assertEqual(a.pub_date, datetime(2005, 7, 28, 0, 0))\n\n        # Change values by changing the attributes, then calling save().\n        a.headline = 'Area woman programs in Python'\n        a.save()\n\n        # Article.objects.all() returns all the articles in the database.\n        self.assertQuerysetEqual(Article.objects.all(),\n            ['<Article: Area woman programs in Python>'])\n\n        # Django provides a rich database lookup API.\n        self.assertEqual(Article.objects.get(id__exact=a.id), a)\n        self.assertEqual(Article.objects.get(headline__startswith='Area woman'), a)\n        self.assertEqual(Article.objects.get(pub_date__year=2005), a)\n        self.assertEqual(Article.objects.get(pub_date__year=2005, pub_date__month=7), a)\n        self.assertEqual(Article.objects.get(pub_date__year=2005, pub_date__month=7, pub_date__day=28), a)\n        self.assertEqual(Article.objects.get(pub_date__week_day=5), a)\n\n        # The \"__exact\" lookup type can be omitted, as a shortcut.\n        self.assertEqual(Article.objects.get(id=a.id), a)\n        self.assertEqual(Article.objects.get(headline='Area woman programs in Python'), a)\n\n        self.assertQuerysetEqual(\n            Article.objects.filter(pub_date__year=2005),\n            ['<Article: Area woman programs in Python>'],\n        )\n        self.assertQuerysetEqual(\n            Article.objects.filter(pub_date__year=2004),\n            [],\n        )\n        self.assertQuerysetEqual(\n            Article.objects.filter(pub_date__year=2005, pub_date__month=7),\n            ['<Article: Area woman programs in Python>'],\n        )\n\n        self.assertQuerysetEqual(\n            Article.objects.filter(pub_date__week_day=5),\n            ['<Article: Area woman programs in Python>'],\n        )\n        self.assertQuerysetEqual(\n            Article.objects.filter(pub_date__week_day=6),\n            [],\n        )\n\n        # Django raises an Article.DoesNotExist exception for get() if the\n        # parameters don't match any object.\n        six.assertRaisesRegex(self,\n            ObjectDoesNotExist,\n            \"Article matching query does not exist. Lookup parameters were \"\n            \"{'id__exact': 2000}\",\n            Article.objects.get,\n            id__exact=2000,\n        )\n        # To avoid dict-ordering related errors check only one lookup\n        # in single assert.\n        six.assertRaisesRegex(self,\n            ObjectDoesNotExist,\n            \".*'pub_date__year': 2005.*\",\n            Article.objects.get,\n            pub_date__year=2005,\n            pub_date__month=8,\n        )\n        six.assertRaisesRegex(self,\n            ObjectDoesNotExist,\n            \".*'pub_date__month': 8.*\",\n            Article.objects.get,\n            pub_date__year=2005,\n            pub_date__month=8,\n        )\n\n        six.assertRaisesRegex(self,\n            ObjectDoesNotExist,\n            \"Article matching query does not exist. Lookup parameters were \"\n            \"{'pub_date__week_day': 6}\",\n            Article.objects.get,\n            pub_date__week_day=6,\n        )\n\n        # Lookup by a primary key is the most common case, so Django\n        # provides a shortcut for primary-key exact lookups.\n        # The following is identical to articles.get(id=a.id).\n        self.assertEqual(Article.objects.get(pk=a.id), a)\n\n        # pk can be used as a shortcut for the primary key name in any query.\n        self.assertQuerysetEqual(Article.objects.filter(pk__in=[a.id]),\n            [\"<Article: Area woman programs in Python>\"])\n\n        # Model instances of the same type and same ID are considered equal.\n        a = Article.objects.get(pk=a.id)\n        b = Article.objects.get(pk=a.id)\n        self.assertEqual(a, b)\n\n        # Create a very similar object\n        a = Article(\n            id=None,\n            headline='Area man programs in Python',\n            pub_date=datetime(2005, 7, 28),\n        )\n        a.save()\n\n        self.assertEqual(Article.objects.count(), 2)\n\n        # Django raises an Article.MultipleObjectsReturned exception if the\n        # lookup matches more than one object\n        six.assertRaisesRegex(self,\n            MultipleObjectsReturned,\n            \"get\\(\\) returned more than one Article -- it returned 2!\",\n            Article.objects.get,\n            headline__startswith='Area',\n        )\n\n        six.assertRaisesRegex(self,\n            MultipleObjectsReturned,\n            \"get\\(\\) returned more than one Article -- it returned 2!\",\n            Article.objects.get,\n            pub_date__year=2005,\n        )\n\n        six.assertRaisesRegex(self,\n            MultipleObjectsReturned,\n            \"get\\(\\) returned more than one Article -- it returned 2!\",\n            Article.objects.get,\n            pub_date__year=2005,\n            pub_date__month=7,\n        )\n\n    def test_object_creation(self):\n        # Create an Article.\n        a = Article(\n            id=None,\n            headline='Area man programs in Python',\n            pub_date=datetime(2005, 7, 28),\n        )\n\n        # Save it into the database. You have to call save() explicitly.\n        a.save()\n\n        # You can initialize a model instance using positional arguments,\n        # which should match the field order as defined in the model.\n        a2 = Article(None, 'Second article', datetime(2005, 7, 29))\n        a2.save()\n\n        self.assertNotEqual(a2.id, a.id)\n        self.assertEqual(a2.headline, 'Second article')\n        self.assertEqual(a2.pub_date, datetime(2005, 7, 29, 0, 0))\n\n        # ...or, you can use keyword arguments.\n        a3 = Article(\n            id=None,\n            headline='Third article',\n            pub_date=datetime(2005, 7, 30),\n        )\n        a3.save()\n\n        self.assertNotEqual(a3.id, a.id)\n        self.assertNotEqual(a3.id, a2.id)\n        self.assertEqual(a3.headline, 'Third article')\n        self.assertEqual(a3.pub_date, datetime(2005, 7, 30, 0, 0))\n\n        # You can also mix and match position and keyword arguments, but\n        # be sure not to duplicate field information.\n        a4 = Article(None, 'Fourth article', pub_date=datetime(2005, 7, 31))\n        a4.save()\n        self.assertEqual(a4.headline, 'Fourth article')\n\n        # Don't use invalid keyword arguments.\n        six.assertRaisesRegex(self,\n            TypeError,\n            \"'foo' is an invalid keyword argument for this function\",\n            Article,\n            id=None,\n            headline='Invalid',\n            pub_date=datetime(2005, 7, 31),\n            foo='bar',\n        )\n\n        # You can leave off the value for an AutoField when creating an\n        # object, because it'll get filled in automatically when you save().\n        a5 = Article(headline='Article 6', pub_date=datetime(2005, 7, 31))\n        a5.save()\n        self.assertEqual(a5.headline, 'Article 6')\n\n        # If you leave off a field with \"default\" set, Django will use\n        # the default.\n        a6 = Article(pub_date=datetime(2005, 7, 31))\n        a6.save()\n        self.assertEqual(a6.headline, 'Default headline')\n\n        # For DateTimeFields, Django saves as much precision (in seconds)\n        # as you give it.\n        a7 = Article(\n            headline='Article 7',\n            pub_date=datetime(2005, 7, 31, 12, 30),\n        )\n        a7.save()\n        self.assertEqual(Article.objects.get(id__exact=a7.id).pub_date,\n            datetime(2005, 7, 31, 12, 30))\n\n        a8 = Article(\n            headline='Article 8',\n            pub_date=datetime(2005, 7, 31, 12, 30, 45),\n        )\n        a8.save()\n        self.assertEqual(Article.objects.get(id__exact=a8.id).pub_date,\n            datetime(2005, 7, 31, 12, 30, 45))\n\n        # Saving an object again doesn't create a new object -- it just saves\n        # the old one.\n        current_id = a8.id\n        a8.save()\n        self.assertEqual(a8.id, current_id)\n        a8.headline = 'Updated article 8'\n        a8.save()\n        self.assertEqual(a8.id, current_id)\n\n        # Check that != and == operators behave as expecte on instances\n        self.assertTrue(a7 != a8)\n        self.assertFalse(a7 == a8)\n        self.assertEqual(a8, Article.objects.get(id__exact=a8.id))\n\n        self.assertTrue(Article.objects.get(id__exact=a8.id) != Article.objects.get(id__exact=a7.id))\n        self.assertFalse(Article.objects.get(id__exact=a8.id) == Article.objects.get(id__exact=a7.id))\n\n        # You can use 'in' to test for membership...\n        self.assertTrue(a8 in Article.objects.all())\n\n        # ... but there will often be more efficient ways if that is all you need:\n        self.assertTrue(Article.objects.filter(id=a8.id).exists())\n\n        # dates() returns a list of available dates of the given scope for\n        # the given field.\n        self.assertQuerysetEqual(\n            Article.objects.dates('pub_date', 'year'),\n            [\"datetime.datetime(2005, 1, 1, 0, 0)\"])\n        self.assertQuerysetEqual(\n            Article.objects.dates('pub_date', 'month'),\n            [\"datetime.datetime(2005, 7, 1, 0, 0)\"])\n        self.assertQuerysetEqual(\n            Article.objects.dates('pub_date', 'day'),\n            [\"datetime.datetime(2005, 7, 28, 0, 0)\",\n             \"datetime.datetime(2005, 7, 29, 0, 0)\",\n             \"datetime.datetime(2005, 7, 30, 0, 0)\",\n             \"datetime.datetime(2005, 7, 31, 0, 0)\"])\n        self.assertQuerysetEqual(\n            Article.objects.dates('pub_date', 'day', order='ASC'),\n            [\"datetime.datetime(2005, 7, 28, 0, 0)\",\n             \"datetime.datetime(2005, 7, 29, 0, 0)\",\n             \"datetime.datetime(2005, 7, 30, 0, 0)\",\n             \"datetime.datetime(2005, 7, 31, 0, 0)\"])\n        self.assertQuerysetEqual(\n            Article.objects.dates('pub_date', 'day', order='DESC'),\n            [\"datetime.datetime(2005, 7, 31, 0, 0)\",\n             \"datetime.datetime(2005, 7, 30, 0, 0)\",\n             \"datetime.datetime(2005, 7, 29, 0, 0)\",\n             \"datetime.datetime(2005, 7, 28, 0, 0)\"])\n\n        # dates() requires valid arguments.\n        self.assertRaises(\n            TypeError,\n            Article.objects.dates,\n        )\n\n        six.assertRaisesRegex(self,\n            FieldDoesNotExist,\n            \"Article has no field named 'invalid_field'\",\n            Article.objects.dates,\n            \"invalid_field\",\n            \"year\",\n        )\n\n        six.assertRaisesRegex(self,\n            AssertionError,\n            \"'kind' must be one of 'year', 'month' or 'day'.\",\n            Article.objects.dates,\n            \"pub_date\",\n            \"bad_kind\",\n        )\n\n        six.assertRaisesRegex(self,\n            AssertionError,\n            \"'order' must be either 'ASC' or 'DESC'.\",\n            Article.objects.dates,\n            \"pub_date\",\n            \"year\",\n            order=\"bad order\",\n        )\n\n        # Use iterator() with dates() to return a generator that lazily\n        # requests each result one at a time, to save memory.\n        dates = []\n        for article in Article.objects.dates('pub_date', 'day', order='DESC').iterator():\n            dates.append(article)\n        self.assertEqual(dates, [\n            datetime(2005, 7, 31, 0, 0),\n            datetime(2005, 7, 30, 0, 0),\n            datetime(2005, 7, 29, 0, 0),\n            datetime(2005, 7, 28, 0, 0)])\n\n        # You can combine queries with & and |.\n        s1 = Article.objects.filter(id__exact=a.id)\n        s2 = Article.objects.filter(id__exact=a2.id)\n        self.assertQuerysetEqual(s1 | s2,\n            [\"<Article: Area man programs in Python>\",\n             \"<Article: Second article>\"])\n        self.assertQuerysetEqual(s1 & s2, [])\n\n        # You can get the number of objects like this:\n        self.assertEqual(len(Article.objects.filter(id__exact=a.id)), 1)\n\n        # You can get items using index and slice notation.\n        self.assertEqual(Article.objects.all()[0], a)\n        self.assertQuerysetEqual(Article.objects.all()[1:3],\n            [\"<Article: Second article>\", \"<Article: Third article>\"])\n\n        s3 = Article.objects.filter(id__exact=a3.id)\n        self.assertQuerysetEqual((s1 | s2 | s3)[::2],\n            [\"<Article: Area man programs in Python>\",\n             \"<Article: Third article>\"])\n\n        # Slicing works with longs (Python 2 only -- Python 3 doesn't have longs).\n        if not six.PY3:\n            self.assertEqual(Article.objects.all()[long(0)], a)\n            self.assertQuerysetEqual(Article.objects.all()[long(1):long(3)],\n                [\"<Article: Second article>\", \"<Article: Third article>\"])\n            self.assertQuerysetEqual((s1 | s2 | s3)[::long(2)],\n                [\"<Article: Area man programs in Python>\",\n                \"<Article: Third article>\"])\n\n            # And can be mixed with ints.\n            self.assertQuerysetEqual(Article.objects.all()[1:long(3)],\n                [\"<Article: Second article>\", \"<Article: Third article>\"])\n\n        # Slices (without step) are lazy:\n        self.assertQuerysetEqual(Article.objects.all()[0:5].filter(),\n            [\"<Article: Area man programs in Python>\",\n             \"<Article: Second article>\",\n             \"<Article: Third article>\",\n             \"<Article: Article 6>\",\n             \"<Article: Default headline>\"])\n\n        # Slicing again works:\n        self.assertQuerysetEqual(Article.objects.all()[0:5][0:2],\n            [\"<Article: Area man programs in Python>\",\n             \"<Article: Second article>\"])\n        self.assertQuerysetEqual(Article.objects.all()[0:5][:2],\n            [\"<Article: Area man programs in Python>\",\n             \"<Article: Second article>\"])\n        self.assertQuerysetEqual(Article.objects.all()[0:5][4:],\n            [\"<Article: Default headline>\"])\n        self.assertQuerysetEqual(Article.objects.all()[0:5][5:], [])\n\n        # Some more tests!\n        self.assertQuerysetEqual(Article.objects.all()[2:][0:2],\n            [\"<Article: Third article>\", \"<Article: Article 6>\"])\n        self.assertQuerysetEqual(Article.objects.all()[2:][:2],\n            [\"<Article: Third article>\", \"<Article: Article 6>\"])\n        self.assertQuerysetEqual(Article.objects.all()[2:][2:3],\n            [\"<Article: Default headline>\"])\n\n        # Using an offset without a limit is also possible.\n        self.assertQuerysetEqual(Article.objects.all()[5:],\n            [\"<Article: Fourth article>\",\n             \"<Article: Article 7>\",\n             \"<Article: Updated article 8>\"])\n\n        # Also, once you have sliced you can't filter, re-order or combine\n        six.assertRaisesRegex(self,\n            AssertionError,\n            \"Cannot filter a query once a slice has been taken.\",\n            Article.objects.all()[0:5].filter,\n            id=a.id,\n        )\n\n        six.assertRaisesRegex(self,\n            AssertionError,\n            \"Cannot reorder a query once a slice has been taken.\",\n            Article.objects.all()[0:5].order_by,\n            'id',\n        )\n\n        try:\n            Article.objects.all()[0:1] & Article.objects.all()[4:5]\n            self.fail('Should raise an AssertionError')\n        except AssertionError as e:\n            self.assertEqual(str(e), \"Cannot combine queries once a slice has been taken.\")\n        except Exception as e:\n            self.fail('Should raise an AssertionError, not %s' % e)\n\n        # Negative slices are not supported, due to database constraints.\n        # (hint: inverting your ordering might do what you need).\n        try:\n            Article.objects.all()[-1]\n            self.fail('Should raise an AssertionError')\n        except AssertionError as e:\n            self.assertEqual(str(e), \"Negative indexing is not supported.\")\n        except Exception as e:\n            self.fail('Should raise an AssertionError, not %s' % e)\n\n        error = None\n        try:\n            Article.objects.all()[0:-5]\n        except Exception as e:\n            error = e\n        self.assertTrue(isinstance(error, AssertionError))\n        self.assertEqual(str(error), \"Negative indexing is not supported.\")\n\n        # An Article instance doesn't have access to the \"objects\" attribute.\n        # That's only available on the class.\n        six.assertRaisesRegex(self,\n            AttributeError,\n            \"Manager isn't accessible via Article instances\",\n            getattr,\n            a7,\n            \"objects\",\n        )\n\n        # Bulk delete test: How many objects before and after the delete?\n        self.assertQuerysetEqual(Article.objects.all(),\n            [\"<Article: Area man programs in Python>\",\n             \"<Article: Second article>\",\n             \"<Article: Third article>\",\n             \"<Article: Article 6>\",\n             \"<Article: Default headline>\",\n             \"<Article: Fourth article>\",\n             \"<Article: Article 7>\",\n             \"<Article: Updated article 8>\"])\n        Article.objects.filter(id__lte=a4.id).delete()\n        self.assertQuerysetEqual(Article.objects.all(),\n            [\"<Article: Article 6>\",\n             \"<Article: Default headline>\",\n             \"<Article: Article 7>\",\n             \"<Article: Updated article 8>\"])\n\n    @skipUnlessDBFeature('supports_microsecond_precision')\n    def test_microsecond_precision(self):\n        # In PostgreSQL, microsecond-level precision is available.\n        a9 = Article(\n            headline='Article 9',\n            pub_date=datetime(2005, 7, 31, 12, 30, 45, 180),\n        )\n        a9.save()\n        self.assertEqual(Article.objects.get(pk=a9.pk).pub_date,\n            datetime(2005, 7, 31, 12, 30, 45, 180))\n\n    @skipIfDBFeature('supports_microsecond_precision')\n    def test_microsecond_precision_not_supported(self):\n        # In MySQL, microsecond-level precision isn't available. You'll lose\n        # microsecond-level precision once the data is saved.\n        a9 = Article(\n            headline='Article 9',\n            pub_date=datetime(2005, 7, 31, 12, 30, 45, 180),\n        )\n        a9.save()\n        self.assertEqual(Article.objects.get(id__exact=a9.id).pub_date,\n            datetime(2005, 7, 31, 12, 30, 45))\n\n    def test_manually_specify_primary_key(self):\n        # You can manually specify the primary key when creating a new object.\n        a101 = Article(\n            id=101,\n            headline='Article 101',\n            pub_date=datetime(2005, 7, 31, 12, 30, 45),\n        )\n        a101.save()\n        a101 = Article.objects.get(pk=101)\n        self.assertEqual(a101.headline, 'Article 101')\n\n    def test_create_method(self):\n        # You can create saved objects in a single step\n        a10 = Article.objects.create(\n            headline=\"Article 10\",\n            pub_date=datetime(2005, 7, 31, 12, 30, 45),\n        )\n        self.assertEqual(Article.objects.get(headline=\"Article 10\"), a10)\n\n    def test_year_lookup_edge_case(self):\n        # Edge-case test: A year lookup should retrieve all objects in\n        # the given year, including Jan. 1 and Dec. 31.\n        a11 = Article.objects.create(\n            headline='Article 11',\n            pub_date=datetime(2008, 1, 1),\n        )\n        a12 = Article.objects.create(\n            headline='Article 12',\n            pub_date=datetime(2008, 12, 31, 23, 59, 59, 999999),\n        )\n        self.assertQuerysetEqual(Article.objects.filter(pub_date__year=2008),\n            [\"<Article: Article 11>\", \"<Article: Article 12>\"])\n\n    def test_unicode_data(self):\n        # Unicode data works, too.\n        a = Article(\n            headline='\\u6797\\u539f \\u3081\\u3050\\u307f',\n            pub_date=datetime(2005, 7, 28),\n        )\n        a.save()\n        self.assertEqual(Article.objects.get(pk=a.id).headline,\n            '\\u6797\\u539f \\u3081\\u3050\\u307f')\n\n    def test_hash_function(self):\n        # Model instances have a hash function, so they can be used in sets\n        # or as dictionary keys. Two models compare as equal if their primary\n        # keys are equal.\n        a10 = Article.objects.create(\n            headline=\"Article 10\",\n            pub_date=datetime(2005, 7, 31, 12, 30, 45),\n        )\n        a11 = Article.objects.create(\n            headline='Article 11',\n            pub_date=datetime(2008, 1, 1),\n        )\n        a12 = Article.objects.create(\n            headline='Article 12',\n            pub_date=datetime(2008, 12, 31, 23, 59, 59, 999999),\n        )\n\n        s = set([a10, a11, a12])\n        self.assertTrue(Article.objects.get(headline='Article 11') in s)\n\n    def test_field_ordering(self):\n        \"\"\"\n        Field instances have a `__lt__` comparison function to define an\n        ordering based on their creation. Prior to #17851 this ordering\n        comparison relied on the now unsupported `__cmp__` and was assuming\n        compared objects were both Field instances raising `AttributeError`\n        when it should have returned `NotImplemented`.\n        \"\"\"\n        f1 = Field()\n        f2 = Field(auto_created=True)\n        f3 = Field()\n        self.assertTrue(f2 < f1)\n        self.assertTrue(f3 > f1)\n        self.assertFalse(f1 == None)\n        self.assertFalse(f2 in (None, 1, ''))\n\n    def test_extra_method_select_argument_with_dashes_and_values(self):\n        # The 'select' argument to extra() supports names with dashes in\n        # them, as long as you use values().\n        a10 = Article.objects.create(\n            headline=\"Article 10\",\n            pub_date=datetime(2005, 7, 31, 12, 30, 45),\n        )\n        a11 = Article.objects.create(\n            headline='Article 11',\n            pub_date=datetime(2008, 1, 1),\n        )\n        a12 = Article.objects.create(\n            headline='Article 12',\n            pub_date=datetime(2008, 12, 31, 23, 59, 59, 999999),\n        )\n\n        dicts = Article.objects.filter(\n            pub_date__year=2008).extra(\n                select={'dashed-value': '1'}\n            ).values('headline', 'dashed-value')\n        self.assertEqual([sorted(d.items()) for d in dicts],\n            [[('dashed-value', 1), ('headline', 'Article 11')], [('dashed-value', 1), ('headline', 'Article 12')]])\n\n    def test_extra_method_select_argument_with_dashes(self):\n        # If you use 'select' with extra() and names containing dashes on a\n        # query that's *not* a values() query, those extra 'select' values\n        # will silently be ignored.\n        a10 = Article.objects.create(\n            headline=\"Article 10\",\n            pub_date=datetime(2005, 7, 31, 12, 30, 45),\n        )\n        a11 = Article.objects.create(\n            headline='Article 11',\n            pub_date=datetime(2008, 1, 1),\n        )\n        a12 = Article.objects.create(\n            headline='Article 12',\n            pub_date=datetime(2008, 12, 31, 23, 59, 59, 999999),\n        )\n\n        articles = Article.objects.filter(\n            pub_date__year=2008).extra(\n                select={'dashed-value': '1', 'undashedvalue': '2'})\n        self.assertEqual(articles[0].undashedvalue, 2)\n\n    def test_create_relation_with_ugettext_lazy(self):\n        \"\"\"\n        Test that ugettext_lazy objects work when saving model instances\n        through various methods. Refs #10498.\n        \"\"\"\n        notlazy = 'test'\n        lazy = ugettext_lazy(notlazy)\n        reporter = Article.objects.create(headline=lazy, pub_date=datetime.now())\n        article = Article.objects.get()\n        self.assertEqual(article.headline, notlazy)\n        # test that assign + save works with Promise objecs\n        article.headline = lazy\n        article.save()\n        self.assertEqual(article.headline, notlazy)\n        # test .update()\n        Article.objects.update(headline=lazy)\n        article = Article.objects.get()\n        self.assertEqual(article.headline, notlazy)\n        # still test bulk_create()\n        Article.objects.all().delete()\n        Article.objects.bulk_create([Article(headline=lazy, pub_date=datetime.now())])\n        article = Article.objects.get()\n        self.assertEqual(article.headline, notlazy)\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/choices/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/choices/models.py",
    "content": "\"\"\"\n21. Specifying 'choices' for a field\n\nMost fields take a ``choices`` parameter, which should be a tuple of tuples\nspecifying which are the valid values for that field.\n\nFor each field that has ``choices``, a model instance gets a\n``get_fieldname_display()`` method, where ``fieldname`` is the name of the\nfield. This method returns the \"human-readable\" value of the field.\n\"\"\"\n\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\nGENDER_CHOICES = (\n    ('M', 'Male'),\n    ('F', 'Female'),\n)\n\n@python_2_unicode_compatible\nclass Person(models.Model):\n    name = models.CharField(max_length=20)\n    gender = models.CharField(max_length=1, choices=GENDER_CHOICES)\n\n    def __str__(self):\n        return self.name\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/choices/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom django.test import TestCase\n\nfrom .models import Person\n\n\nclass ChoicesTests(TestCase):\n    def test_display(self):\n        a = Person.objects.create(name='Adrian', gender='M')\n        s = Person.objects.create(name='Sara', gender='F')\n        self.assertEqual(a.gender, 'M')\n        self.assertEqual(s.gender, 'F')\n\n        self.assertEqual(a.get_gender_display(), 'Male')\n        self.assertEqual(s.get_gender_display(), 'Female')\n\n        # If the value for the field doesn't correspond to a valid choice,\n        # the value itself is provided as a display value.\n        a.gender = ''\n        self.assertEqual(a.get_gender_display(), '')\n\n        a.gender = 'U'\n        self.assertEqual(a.get_gender_display(), 'U')\n\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/custom_columns/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/custom_columns/models.py",
    "content": "\"\"\"\n17. Custom column/table names\n\nIf your database column name is different than your model attribute, use the\n``db_column`` parameter. Note that you'll use the field's name, not its column\nname, in API usage.\n\nIf your database table name is different than your model name, use the\n``db_table`` Meta attribute. This has no effect on the API used to\nquery the database.\n\nIf you need to use a table name for a many-to-many relationship that differs\nfrom the default generated name, use the ``db_table`` parameter on the\n``ManyToManyField``. This has no effect on the API for querying the database.\n\n\"\"\"\n\nfrom __future__ import unicode_literals\n\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n@python_2_unicode_compatible\nclass Author(models.Model):\n    first_name = models.CharField(max_length=30, db_column='firstname')\n    last_name = models.CharField(max_length=30, db_column='last')\n\n    def __str__(self):\n        return '%s %s' % (self.first_name, self.last_name)\n\n    class Meta:\n        db_table = 'my_author_table'\n        ordering = ('last_name','first_name')\n\n@python_2_unicode_compatible\nclass Article(models.Model):\n    headline = models.CharField(max_length=100)\n    authors = models.ManyToManyField(Author, db_table='my_m2m_table')\n\n    def __str__(self):\n        return self.headline\n\n    class Meta:\n        ordering = ('headline',)\n\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/custom_columns/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom django.core.exceptions import FieldError\nfrom django.test import TestCase\nfrom django.utils import six\n\nfrom .models import Author, Article\n\n\nclass CustomColumnsTests(TestCase):\n    def test_db_column(self):\n        a1 = Author.objects.create(first_name=\"John\", last_name=\"Smith\")\n        a2 = Author.objects.create(first_name=\"Peter\", last_name=\"Jones\")\n\n        art = Article.objects.create(headline=\"Django lets you build Web apps easily\")\n        art.authors = [a1, a2]\n\n        # Although the table and column names on Author have been set to custom\n        # values, nothing about using the Author model has changed...\n\n        # Query the available authors\n        self.assertQuerysetEqual(\n            Author.objects.all(), [\n                \"Peter Jones\", \"John Smith\",\n            ],\n            six.text_type\n        )\n        self.assertQuerysetEqual(\n            Author.objects.filter(first_name__exact=\"John\"), [\n                \"John Smith\",\n            ],\n            six.text_type\n        )\n        self.assertEqual(\n            Author.objects.get(first_name__exact=\"John\"),\n            a1,\n        )\n\n        self.assertRaises(FieldError,\n            lambda: Author.objects.filter(firstname__exact=\"John\")\n        )\n\n        a = Author.objects.get(last_name__exact=\"Smith\")\n        a.first_name = \"John\"\n        a.last_name = \"Smith\"\n\n        self.assertRaises(AttributeError, lambda: a.firstname)\n        self.assertRaises(AttributeError, lambda: a.last)\n\n        # Although the Article table uses a custom m2m table,\n        # nothing about using the m2m relationship has changed...\n\n        # Get all the authors for an article\n        self.assertQuerysetEqual(\n            art.authors.all(), [\n                \"Peter Jones\",\n                \"John Smith\",\n            ],\n            six.text_type\n        )\n        # Get the articles for an author\n        self.assertQuerysetEqual(\n            a.article_set.all(), [\n                \"Django lets you build Web apps easily\",\n            ],\n            lambda a: a.headline\n        )\n        # Query the authors across the m2m relation\n        self.assertQuerysetEqual(\n            art.authors.filter(last_name='Jones'), [\n                \"Peter Jones\"\n            ],\n            six.text_type\n        )\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/custom_managers/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/custom_managers/models.py",
    "content": "\"\"\"\n23. Giving models a custom manager\n\nYou can use a custom ``Manager`` in a particular model by extending the base\n``Manager`` class and instantiating your custom ``Manager`` in your model.\n\nThere are two reasons you might want to customize a ``Manager``: to add extra\n``Manager`` methods, and/or to modify the initial ``QuerySet`` the ``Manager``\nreturns.\n\"\"\"\n\nfrom __future__ import unicode_literals\n\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n# An example of a custom manager called \"objects\".\n\nclass PersonManager(models.Manager):\n    def get_fun_people(self):\n        return self.filter(fun=True)\n\n@python_2_unicode_compatible\nclass Person(models.Model):\n    first_name = models.CharField(max_length=30)\n    last_name = models.CharField(max_length=30)\n    fun = models.BooleanField()\n    objects = PersonManager()\n\n    def __str__(self):\n        return \"%s %s\" % (self.first_name, self.last_name)\n\n# An example of a custom manager that sets get_query_set().\n\nclass PublishedBookManager(models.Manager):\n    def get_query_set(self):\n        return super(PublishedBookManager, self).get_query_set().filter(is_published=True)\n\n@python_2_unicode_compatible\nclass Book(models.Model):\n    title = models.CharField(max_length=50)\n    author = models.CharField(max_length=30)\n    is_published = models.BooleanField()\n    published_objects = PublishedBookManager()\n    authors = models.ManyToManyField(Person, related_name='books')\n\n    def __str__(self):\n        return self.title\n\n# An example of providing multiple custom managers.\n\nclass FastCarManager(models.Manager):\n    def get_query_set(self):\n        return super(FastCarManager, self).get_query_set().filter(top_speed__gt=150)\n\n@python_2_unicode_compatible\nclass Car(models.Model):\n    name = models.CharField(max_length=10)\n    mileage = models.IntegerField()\n    top_speed = models.IntegerField(help_text=\"In miles per hour.\")\n    cars = models.Manager()\n    fast_cars = FastCarManager()\n\n    def __str__(self):\n        return self.name\n\n\n# Bug #19652\nclass ObjectQuerySet(models.query.QuerySet):\n    pass\n\nclass ObjectManager(models.Manager):\n    use_for_related_fields = True\n\n    def get_query_set(self):\n        return ObjectQuerySet(self.model, using=self._db)\n\n\nclass RelatedObject(models.Model):\n    pass\n\n\nclass Object(models.Model):\n    related = models.ForeignKey(RelatedObject, related_name='objs')\n\n    objects = ObjectManager()\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/custom_managers/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom django.test import TestCase\nfrom django.utils import six\n\nfrom .models import (ObjectQuerySet, RelatedObject, Person, Book, Car, PersonManager,\n    PublishedBookManager)\n\n\nclass CustomManagerTests(TestCase):\n    def test_manager(self):\n        p1 = Person.objects.create(first_name=\"Bugs\", last_name=\"Bunny\", fun=True)\n        p2 = Person.objects.create(first_name=\"Droopy\", last_name=\"Dog\", fun=False)\n\n        self.assertQuerysetEqual(\n            Person.objects.get_fun_people(), [\n                \"Bugs Bunny\"\n            ],\n            six.text_type\n        )\n        # The RelatedManager used on the 'books' descriptor extends the default\n        # manager\n        self.assertTrue(isinstance(p2.books, PublishedBookManager))\n\n        b1 = Book.published_objects.create(\n            title=\"How to program\", author=\"Rodney Dangerfield\", is_published=True\n        )\n        b2 = Book.published_objects.create(\n            title=\"How to be smart\", author=\"Albert Einstein\", is_published=False\n        )\n\n        # The default manager, \"objects\", doesn't exist, because a custom one\n        # was provided.\n        self.assertRaises(AttributeError, lambda: Book.objects)\n\n        # The RelatedManager used on the 'authors' descriptor extends the\n        # default manager\n        self.assertTrue(isinstance(b2.authors, PersonManager))\n\n        self.assertQuerysetEqual(\n            Book.published_objects.all(), [\n                \"How to program\",\n            ],\n            lambda b: b.title\n        )\n\n        c1 = Car.cars.create(name=\"Corvette\", mileage=21, top_speed=180)\n        c2 = Car.cars.create(name=\"Neon\", mileage=31, top_speed=100)\n\n        self.assertQuerysetEqual(\n            Car.cars.order_by(\"name\"), [\n                \"Corvette\",\n                \"Neon\",\n            ],\n            lambda c: c.name\n        )\n\n        self.assertQuerysetEqual(\n            Car.fast_cars.all(), [\n                \"Corvette\",\n            ],\n            lambda c: c.name\n        )\n\n        # Each model class gets a \"_default_manager\" attribute, which is a\n        # reference to the first manager defined in the class. In this case,\n        # it's \"cars\".\n\n        self.assertQuerysetEqual(\n            Car._default_manager.order_by(\"name\"), [\n                \"Corvette\",\n                \"Neon\",\n            ],\n            lambda c: c.name\n        )\n\n    def test_related_manager(self):\n        \"\"\"\n        Make sure un-saved object's related managers always return an instance\n        of the same class the manager's `get_query_set` returns. Refs #19652.\n        \"\"\"\n        rel_qs = RelatedObject().objs.all()\n        self.assertIsInstance(rel_qs, ObjectQuerySet)\n        with self.assertNumQueries(0):\n            self.assertFalse(rel_qs.exists())\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/custom_methods/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/custom_methods/models.py",
    "content": "\"\"\"\n3. Giving models custom methods\n\nAny method you add to a model will be available to instances.\n\"\"\"\n\nimport datetime\n\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n@python_2_unicode_compatible\nclass Article(models.Model):\n    headline = models.CharField(max_length=100)\n    pub_date = models.DateField()\n\n    def __str__(self):\n        return self.headline\n\n    def was_published_today(self):\n        return self.pub_date == datetime.date.today()\n\n    def articles_from_same_day_1(self):\n        return Article.objects.filter(pub_date=self.pub_date).exclude(id=self.id)\n\n    def articles_from_same_day_2(self):\n        \"\"\"\n        Verbose version of get_articles_from_same_day_1, which does a custom\n        database query for the sake of demonstration.\n        \"\"\"\n        from django.db import connection\n        cursor = connection.cursor()\n        cursor.execute(\"\"\"\n            SELECT id, headline, pub_date\n            FROM custom_methods_article\n            WHERE pub_date = %s\n                AND id != %s\"\"\", [connection.ops.value_to_db_date(self.pub_date),\n                                  self.id])\n        return [self.__class__(*row) for row in cursor.fetchall()]\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/custom_methods/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom datetime import date\n\nfrom django.test import TestCase\n\nfrom .models import Article\n\n\nclass MethodsTests(TestCase):\n    def test_custom_methods(self):\n        a = Article.objects.create(\n            headline=\"Area man programs in Python\", pub_date=date(2005, 7, 27)\n        )\n        b = Article.objects.create(\n            headline=\"Beatles reunite\", pub_date=date(2005, 7, 27)\n        )\n\n        self.assertFalse(a.was_published_today())\n        self.assertQuerysetEqual(\n            a.articles_from_same_day_1(), [\n                \"Beatles reunite\",\n            ],\n            lambda a: a.headline,\n        )\n        self.assertQuerysetEqual(\n            a.articles_from_same_day_2(), [\n                \"Beatles reunite\",\n            ],\n            lambda a: a.headline\n        )\n\n        self.assertQuerysetEqual(\n            b.articles_from_same_day_1(), [\n                \"Area man programs in Python\",\n            ],\n            lambda a: a.headline,\n        )\n        self.assertQuerysetEqual(\n            b.articles_from_same_day_2(), [\n                \"Area man programs in Python\",\n            ],\n            lambda a: a.headline\n        )\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/custom_pk/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/custom_pk/fields.py",
    "content": "import random\nimport string\n\nfrom django.db import models\nfrom django.utils import six\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n@python_2_unicode_compatible\nclass MyWrapper(object):\n    def __init__(self, value):\n        self.value = value\n\n    def __repr__(self):\n        return \"<%s: %s>\" % (self.__class__.__name__, self.value)\n\n    def __str__(self):\n        return self.value\n\n    def __eq__(self, other):\n        if isinstance(other, self.__class__):\n            return self.value == other.value\n        return self.value == other\n\nclass MyAutoField(six.with_metaclass(models.SubfieldBase, models.CharField)):\n\n    def __init__(self, *args, **kwargs):\n        kwargs['max_length'] = 10\n        super(MyAutoField, self).__init__(*args, **kwargs)\n\n    def pre_save(self, instance, add):\n        value = getattr(instance, self.attname, None)\n        if not value:\n            value = MyWrapper(''.join(random.sample(string.ascii_lowercase, 10)))\n            setattr(instance, self.attname, value)\n        return value\n\n    def to_python(self, value):\n        if not value:\n            return\n        if not isinstance(value, MyWrapper):\n            value = MyWrapper(value)\n        return value\n\n    def get_db_prep_save(self, value, connection):\n        if not value:\n            return\n        if isinstance(value, MyWrapper):\n            return six.text_type(value)\n        return value\n\n    def get_db_prep_value(self, value, connection, prepared=False):\n        if not value:\n            return\n        if isinstance(value, MyWrapper):\n            return six.text_type(value)\n        return value\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/custom_pk/models.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\n14. Using a custom primary key\n\nBy default, Django adds an ``\"id\"`` field to each model. But you can override\nthis behavior by explicitly adding ``primary_key=True`` to a field.\n\"\"\"\n\nfrom __future__ import absolute_import, unicode_literals\n\nfrom django.db import models\n\nfrom .fields import MyAutoField\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n@python_2_unicode_compatible\nclass Employee(models.Model):\n    employee_code = models.IntegerField(primary_key=True, db_column = 'code')\n    first_name = models.CharField(max_length=20)\n    last_name = models.CharField(max_length=20)\n    class Meta:\n        ordering = ('last_name', 'first_name')\n\n    def __str__(self):\n        return \"%s %s\" % (self.first_name, self.last_name)\n\n@python_2_unicode_compatible\nclass Business(models.Model):\n    name = models.CharField(max_length=20, primary_key=True)\n    employees = models.ManyToManyField(Employee)\n    class Meta:\n        verbose_name_plural = 'businesses'\n\n    def __str__(self):\n        return self.name\n\n@python_2_unicode_compatible\nclass Bar(models.Model):\n    id = MyAutoField(primary_key=True, db_index=True)\n\n    def __str__(self):\n        return repr(self.pk)\n\n\nclass Foo(models.Model):\n    bar = models.ForeignKey(Bar)\n\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/custom_pk/tests.py",
    "content": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import, unicode_literals\n\nfrom django.db import transaction, IntegrityError\nfrom django.test import TestCase, skipIfDBFeature\nfrom django.utils import six\n\nfrom .models import Employee, Business, Bar, Foo\n\n\nclass CustomPKTests(TestCase):\n    def test_custom_pk(self):\n        dan = Employee.objects.create(\n            employee_code=123, first_name=\"Dan\", last_name=\"Jones\"\n        )\n        self.assertQuerysetEqual(\n            Employee.objects.all(), [\n                \"Dan Jones\",\n            ],\n            six.text_type\n        )\n\n        fran = Employee.objects.create(\n            employee_code=456, first_name=\"Fran\", last_name=\"Bones\"\n        )\n        self.assertQuerysetEqual(\n            Employee.objects.all(), [\n                \"Fran Bones\",\n                \"Dan Jones\",\n            ],\n            six.text_type\n        )\n\n        self.assertEqual(Employee.objects.get(pk=123), dan)\n        self.assertEqual(Employee.objects.get(pk=456), fran)\n\n        self.assertRaises(Employee.DoesNotExist,\n            lambda: Employee.objects.get(pk=42)\n        )\n\n        # Use the name of the primary key, rather than pk.\n        self.assertEqual(Employee.objects.get(employee_code=123), dan)\n        # pk can be used as a substitute for the primary key.\n        self.assertQuerysetEqual(\n            Employee.objects.filter(pk__in=[123, 456]), [\n                \"Fran Bones\",\n                \"Dan Jones\",\n            ],\n            six.text_type\n        )\n        # The primary key can be accessed via the pk property on the model.\n        e = Employee.objects.get(pk=123)\n        self.assertEqual(e.pk, 123)\n        # Or we can use the real attribute name for the primary key:\n        self.assertEqual(e.employee_code, 123)\n\n        # Fran got married and changed her last name.\n        fran = Employee.objects.get(pk=456)\n        fran.last_name = \"Jones\"\n        fran.save()\n\n        self.assertQuerysetEqual(\n            Employee.objects.filter(last_name=\"Jones\"), [\n                \"Dan Jones\",\n                \"Fran Jones\",\n            ],\n            six.text_type\n        )\n\n        emps = Employee.objects.in_bulk([123, 456])\n        self.assertEqual(emps[123], dan)\n\n        b = Business.objects.create(name=\"Sears\")\n        b.employees.add(dan, fran)\n        self.assertQuerysetEqual(\n            b.employees.all(), [\n                \"Dan Jones\",\n                \"Fran Jones\",\n            ],\n            six.text_type\n        )\n        self.assertQuerysetEqual(\n            fran.business_set.all(), [\n                \"Sears\",\n            ],\n            lambda b: b.name\n        )\n\n        self.assertEqual(Business.objects.in_bulk([\"Sears\"]), {\n            \"Sears\": b,\n        })\n\n        self.assertQuerysetEqual(\n            Business.objects.filter(name=\"Sears\"), [\n                \"Sears\"\n            ],\n            lambda b: b.name\n        )\n        self.assertQuerysetEqual(\n            Business.objects.filter(pk=\"Sears\"), [\n                \"Sears\",\n            ],\n            lambda b: b.name\n        )\n\n        # Queries across tables, involving primary key\n        self.assertQuerysetEqual(\n            Employee.objects.filter(business__name=\"Sears\"), [\n                \"Dan Jones\",\n                \"Fran Jones\",\n            ],\n            six.text_type,\n        )\n        self.assertQuerysetEqual(\n            Employee.objects.filter(business__pk=\"Sears\"), [\n                \"Dan Jones\",\n                \"Fran Jones\",\n            ],\n            six.text_type,\n        )\n\n        self.assertQuerysetEqual(\n            Business.objects.filter(employees__employee_code=123), [\n                \"Sears\",\n            ],\n            lambda b: b.name\n        )\n        self.assertQuerysetEqual(\n            Business.objects.filter(employees__pk=123), [\n                \"Sears\",\n            ],\n            lambda b: b.name,\n        )\n\n        self.assertQuerysetEqual(\n            Business.objects.filter(employees__first_name__startswith=\"Fran\"), [\n                \"Sears\",\n            ],\n            lambda b: b.name\n        )\n\n    def test_unicode_pk(self):\n        # Primary key may be unicode string\n        bus = Business.objects.create(name='jaźń')\n\n    def test_unique_pk(self):\n        # The primary key must also obviously be unique, so trying to create a\n        # new object with the same primary key will fail.\n        e = Employee.objects.create(\n            employee_code=123, first_name=\"Frank\", last_name=\"Jones\"\n        )\n        sid = transaction.savepoint()\n        self.assertRaises(IntegrityError,\n            Employee.objects.create, employee_code=123, first_name=\"Fred\", last_name=\"Jones\"\n        )\n        transaction.savepoint_rollback(sid)\n\n    def test_custom_field_pk(self):\n        # Regression for #10785 -- Custom fields can be used for primary keys.\n        new_bar = Bar.objects.create()\n        new_foo = Foo.objects.create(bar=new_bar)\n\n        f = Foo.objects.get(bar=new_bar.pk)\n        self.assertEqual(f, new_foo)\n        self.assertEqual(f.bar, new_bar)\n\n        f = Foo.objects.get(bar=new_bar)\n        self.assertEqual(f, new_foo),\n        self.assertEqual(f.bar, new_bar)\n\n    # SQLite lets objects be saved with an empty primary key, even though an\n    # integer is expected. So we can't check for an error being raised in that\n    # case for SQLite. Remove it from the suite for this next bit.\n    @skipIfDBFeature('supports_unspecified_pk')\n    def test_required_pk(self):\n        # The primary key must be specified, so an error is raised if you\n        # try to create an object without it.\n        sid = transaction.savepoint()\n        self.assertRaises(IntegrityError,\n            Employee.objects.create, first_name=\"Tom\", last_name=\"Smith\"\n        )\n        transaction.savepoint_rollback(sid)\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/defer/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/defer/models.py",
    "content": "\"\"\"\nTests for defer() and only().\n\"\"\"\n\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\nclass Secondary(models.Model):\n    first = models.CharField(max_length=50)\n    second = models.CharField(max_length=50)\n\n@python_2_unicode_compatible\nclass Primary(models.Model):\n    name = models.CharField(max_length=50)\n    value = models.CharField(max_length=50)\n    related = models.ForeignKey(Secondary)\n\n    def __str__(self):\n        return self.name\n\nclass Child(Primary):\n    pass\n\nclass BigChild(Primary):\n    other = models.CharField(max_length=50)\n\nclass ChildProxy(Child):\n    class Meta:\n        proxy=True\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/defer/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom django.db.models.query_utils import DeferredAttribute, InvalidQuery\nfrom django.test import TestCase\n\nfrom .models import Secondary, Primary, Child, BigChild, ChildProxy\n\n\nclass DeferTests(TestCase):\n    def assert_delayed(self, obj, num):\n        count = 0\n        for field in obj._meta.fields:\n            if isinstance(obj.__class__.__dict__.get(field.attname),\n                DeferredAttribute):\n                count += 1\n        self.assertEqual(count, num)\n\n    def test_defer(self):\n        # To all outward appearances, instances with deferred fields look the\n        # same as normal instances when we examine attribute values. Therefore\n        # we test for the number of deferred fields on returned instances (by\n        # poking at the internals), as a way to observe what is going on.\n\n        s1 = Secondary.objects.create(first=\"x1\", second=\"y1\")\n        p1 = Primary.objects.create(name=\"p1\", value=\"xx\", related=s1)\n\n        qs = Primary.objects.all()\n\n        self.assert_delayed(qs.defer(\"name\")[0], 1)\n        self.assert_delayed(qs.only(\"name\")[0], 2)\n        self.assert_delayed(qs.defer(\"related__first\")[0], 0)\n\n        # Using 'pk' with only() should result in 3 deferred fields, namely all\n        # of them except the model's primary key see #15494\n        self.assert_delayed(qs.only(\"pk\")[0], 3)\n\n        obj = qs.select_related().only(\"related__first\")[0]\n        self.assert_delayed(obj, 2)\n\n        self.assertEqual(obj.related_id, s1.pk)\n\n        # You can use 'pk' with reverse foreign key lookups.\n        self.assert_delayed(s1.primary_set.all().only('pk')[0], 3)\n\n        self.assert_delayed(qs.defer(\"name\").extra(select={\"a\": 1})[0], 1)\n        self.assert_delayed(qs.extra(select={\"a\": 1}).defer(\"name\")[0], 1)\n        self.assert_delayed(qs.defer(\"name\").defer(\"value\")[0], 2)\n        self.assert_delayed(qs.only(\"name\").only(\"value\")[0], 2)\n        self.assert_delayed(qs.only(\"name\").defer(\"value\")[0], 2)\n        self.assert_delayed(qs.only(\"name\", \"value\").defer(\"value\")[0], 2)\n        self.assert_delayed(qs.defer(\"name\").only(\"value\")[0], 2)\n\n        obj = qs.only()[0]\n        self.assert_delayed(qs.defer(None)[0], 0)\n        self.assert_delayed(qs.only(\"name\").defer(None)[0], 0)\n\n        # User values() won't defer anything (you get the full list of\n        # dictionaries back), but it still works.\n        self.assertEqual(qs.defer(\"name\").values()[0], {\n            \"id\": p1.id,\n            \"name\": \"p1\",\n            \"value\": \"xx\",\n            \"related_id\": s1.id,\n        })\n        self.assertEqual(qs.only(\"name\").values()[0], {\n            \"id\": p1.id,\n            \"name\": \"p1\",\n            \"value\": \"xx\",\n            \"related_id\": s1.id,\n        })\n\n        # Using defer() and only() with get() is also valid.\n        self.assert_delayed(qs.defer(\"name\").get(pk=p1.pk), 1)\n        self.assert_delayed(qs.only(\"name\").get(pk=p1.pk), 2)\n\n        # When we defer a field and also select_related it, the query is\n        # invalid and raises an exception.\n        with self.assertRaises(InvalidQuery):\n            qs.only(\"name\").select_related(\"related\")[0]\n        with self.assertRaises(InvalidQuery):\n            qs.defer(\"related\").select_related(\"related\")[0]\n\n        # With a depth-based select_related, all deferred ForeignKeys are\n        # deferred instead of traversed.\n        with self.assertNumQueries(3):\n            obj = qs.defer(\"related\").select_related()[0]\n            self.assert_delayed(obj, 1)\n            self.assertEqual(obj.related.id, s1.pk)\n\n        # Saving models with deferred fields is possible (but inefficient,\n        # since every field has to be retrieved first).\n        obj = Primary.objects.defer(\"value\").get(name=\"p1\")\n        obj.name = \"a new name\"\n        obj.save()\n        self.assertQuerysetEqual(\n            Primary.objects.all(), [\n                \"a new name\",\n            ],\n            lambda p: p.name\n        )\n\n        # Regression for #10572 - A subclass with no extra fields can defer\n        # fields from the base class\n        Child.objects.create(name=\"c1\", value=\"foo\", related=s1)\n        # You can defer a field on a baseclass when the subclass has no fields\n        obj = Child.objects.defer(\"value\").get(name=\"c1\")\n        self.assert_delayed(obj, 1)\n        self.assertEqual(obj.name, \"c1\")\n        self.assertEqual(obj.value, \"foo\")\n        obj.name = \"c2\"\n        obj.save()\n\n        # You can retrive a single column on a base class with no fields\n        obj = Child.objects.only(\"name\").get(name=\"c2\")\n        self.assert_delayed(obj, 3)\n        self.assertEqual(obj.name, \"c2\")\n        self.assertEqual(obj.value, \"foo\")\n        obj.name = \"cc\"\n        obj.save()\n\n        BigChild.objects.create(name=\"b1\", value=\"foo\", related=s1, other=\"bar\")\n        # You can defer a field on a baseclass\n        obj = BigChild.objects.defer(\"value\").get(name=\"b1\")\n        self.assert_delayed(obj, 1)\n        self.assertEqual(obj.name, \"b1\")\n        self.assertEqual(obj.value, \"foo\")\n        self.assertEqual(obj.other, \"bar\")\n        obj.name = \"b2\"\n        obj.save()\n\n        # You can defer a field on a subclass\n        obj = BigChild.objects.defer(\"other\").get(name=\"b2\")\n        self.assert_delayed(obj, 1)\n        self.assertEqual(obj.name, \"b2\")\n        self.assertEqual(obj.value, \"foo\")\n        self.assertEqual(obj.other, \"bar\")\n        obj.name = \"b3\"\n        obj.save()\n\n        # You can retrieve a single field on a baseclass\n        obj = BigChild.objects.only(\"name\").get(name=\"b3\")\n        self.assert_delayed(obj, 4)\n        self.assertEqual(obj.name, \"b3\")\n        self.assertEqual(obj.value, \"foo\")\n        self.assertEqual(obj.other, \"bar\")\n        obj.name = \"b4\"\n        obj.save()\n\n        # You can retrieve a single field on a baseclass\n        obj = BigChild.objects.only(\"other\").get(name=\"b4\")\n        self.assert_delayed(obj, 4)\n        self.assertEqual(obj.name, \"b4\")\n        self.assertEqual(obj.value, \"foo\")\n        self.assertEqual(obj.other, \"bar\")\n        obj.name = \"bb\"\n        obj.save()\n\n    def test_defer_proxy(self):\n        \"\"\"\n        Ensure select_related together with only on a proxy model behaves\n        as expected. See #17876.\n        \"\"\"\n        related = Secondary.objects.create(first='x1', second='x2')\n        ChildProxy.objects.create(name='p1', value='xx', related=related)\n        children = ChildProxy.objects.all().select_related().only('id', 'name')\n        self.assertEqual(len(children), 1)\n        child = children[0]\n        self.assert_delayed(child, 2)\n        self.assertEqual(child.name, 'p1')\n        self.assertEqual(child.value, 'xx')\n\n    def test_defer_inheritance_pk_chaining(self):\n        \"\"\"\n        When an inherited model is fetched from the DB, its PK is also fetched.\n        When getting the PK of the parent model it is useful to use the already\n        fetched parent model PK if it happens to be available. Tests that this\n        is done.\n        \"\"\"\n        s1 = Secondary.objects.create(first=\"x1\", second=\"y1\")\n        bc = BigChild.objects.create(name=\"b1\", value=\"foo\", related=s1,\n                                     other=\"bar\")\n        bc_deferred = BigChild.objects.only('name').get(pk=bc.pk)\n        with self.assertNumQueries(0):\n            bc_deferred.id\n        self.assertEqual(bc_deferred.pk, bc_deferred.id)\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/delete/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/delete/models.py",
    "content": "from __future__ import unicode_literals\n\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n@python_2_unicode_compatible\nclass R(models.Model):\n    is_default = models.BooleanField(default=False)\n\n    def __str__(self):\n        return \"%s\" % self.pk\n\n\nget_default_r = lambda: R.objects.get_or_create(is_default=True)[0]\n\n\nclass S(models.Model):\n    r = models.ForeignKey(R)\n\n\nclass T(models.Model):\n    s = models.ForeignKey(S)\n\n\nclass U(models.Model):\n    t = models.ForeignKey(T)\n\n\nclass RChild(R):\n    pass\n\n\nclass A(models.Model):\n    name = models.CharField(max_length=30)\n\n    auto = models.ForeignKey(R, related_name=\"auto_set\")\n    auto_nullable = models.ForeignKey(R, null=True,\n        related_name='auto_nullable_set')\n    setvalue = models.ForeignKey(R, on_delete=models.SET(get_default_r),\n        related_name='setvalue')\n    setnull = models.ForeignKey(R, on_delete=models.SET_NULL, null=True,\n        related_name='setnull_set')\n    setdefault = models.ForeignKey(R, on_delete=models.SET_DEFAULT,\n        default=get_default_r, related_name='setdefault_set')\n    setdefault_none = models.ForeignKey(R, on_delete=models.SET_DEFAULT,\n        default=None, null=True, related_name='setnull_nullable_set')\n    cascade = models.ForeignKey(R, on_delete=models.CASCADE,\n        related_name='cascade_set')\n    cascade_nullable = models.ForeignKey(R, on_delete=models.CASCADE, null=True,\n        related_name='cascade_nullable_set')\n    protect = models.ForeignKey(R, on_delete=models.PROTECT, null=True)\n    donothing = models.ForeignKey(R, on_delete=models.DO_NOTHING, null=True,\n        related_name='donothing_set')\n    child = models.ForeignKey(RChild, related_name=\"child\")\n    child_setnull = models.ForeignKey(RChild, on_delete=models.SET_NULL, null=True,\n        related_name=\"child_setnull\")\n\n    # A OneToOneField is just a ForeignKey unique=True, so we don't duplicate\n    # all the tests; just one smoke test to ensure on_delete works for it as\n    # well.\n    o2o_setnull = models.ForeignKey(R, null=True,\n        on_delete=models.SET_NULL, related_name=\"o2o_nullable_set\")\n\n\ndef create_a(name):\n    a = A(name=name)\n    for name in ('auto', 'auto_nullable', 'setvalue', 'setnull', 'setdefault',\n                 'setdefault_none', 'cascade', 'cascade_nullable', 'protect',\n                 'donothing', 'o2o_setnull'):\n        r = R.objects.create()\n        setattr(a, name, r)\n    a.child = RChild.objects.create()\n    a.child_setnull = RChild.objects.create()\n    a.save()\n    return a\n\n\nclass M(models.Model):\n    m2m = models.ManyToManyField(R, related_name=\"m_set\")\n    m2m_through = models.ManyToManyField(R, through=\"MR\",\n        related_name=\"m_through_set\")\n    m2m_through_null = models.ManyToManyField(R, through=\"MRNull\",\n        related_name=\"m_through_null_set\")\n\n\nclass MR(models.Model):\n    m = models.ForeignKey(M)\n    r = models.ForeignKey(R)\n\n\nclass MRNull(models.Model):\n    m = models.ForeignKey(M)\n    r = models.ForeignKey(R, null=True, on_delete=models.SET_NULL)\n\n\nclass Avatar(models.Model):\n    desc = models.TextField(null=True)\n\n\nclass User(models.Model):\n    avatar = models.ForeignKey(Avatar, null=True)\n\n\nclass HiddenUser(models.Model):\n    r = models.ForeignKey(R, related_name=\"+\")\n\n\nclass HiddenUserProfile(models.Model):\n    user = models.ForeignKey(HiddenUser)\n\nclass M2MTo(models.Model):\n    pass\n\nclass M2MFrom(models.Model):\n    m2m = models.ManyToManyField(M2MTo)\n\nclass Parent(models.Model):\n    pass\n\nclass Child(Parent):\n    pass\n\nclass Base(models.Model):\n    pass\n\nclass RelToBase(models.Model):\n    base = models.ForeignKey(Base, on_delete=models.DO_NOTHING)\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/delete/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom django.db import models, IntegrityError, connection\nfrom django.test import TestCase, skipUnlessDBFeature, skipIfDBFeature\nfrom django.utils.six.moves import xrange\n\nfrom .models import (R, RChild, S, T, U, A, M, MR, MRNull,\n    create_a, get_default_r, User, Avatar, HiddenUser, HiddenUserProfile,\n    M2MTo, M2MFrom, Parent, Child, Base)\n\n\nclass OnDeleteTests(TestCase):\n    def setUp(self):\n        self.DEFAULT = get_default_r()\n\n    def test_auto(self):\n        a = create_a('auto')\n        a.auto.delete()\n        self.assertFalse(A.objects.filter(name='auto').exists())\n\n    def test_auto_nullable(self):\n        a = create_a('auto_nullable')\n        a.auto_nullable.delete()\n        self.assertFalse(A.objects.filter(name='auto_nullable').exists())\n\n    def test_setvalue(self):\n        a = create_a('setvalue')\n        a.setvalue.delete()\n        a = A.objects.get(pk=a.pk)\n        self.assertEqual(self.DEFAULT, a.setvalue)\n\n    def test_setnull(self):\n        a = create_a('setnull')\n        a.setnull.delete()\n        a = A.objects.get(pk=a.pk)\n        self.assertEqual(None, a.setnull)\n\n    def test_setdefault(self):\n        a = create_a('setdefault')\n        a.setdefault.delete()\n        a = A.objects.get(pk=a.pk)\n        self.assertEqual(self.DEFAULT, a.setdefault)\n\n    def test_setdefault_none(self):\n        a = create_a('setdefault_none')\n        a.setdefault_none.delete()\n        a = A.objects.get(pk=a.pk)\n        self.assertEqual(None, a.setdefault_none)\n\n    def test_cascade(self):\n        a = create_a('cascade')\n        a.cascade.delete()\n        self.assertFalse(A.objects.filter(name='cascade').exists())\n\n    def test_cascade_nullable(self):\n        a = create_a('cascade_nullable')\n        a.cascade_nullable.delete()\n        self.assertFalse(A.objects.filter(name='cascade_nullable').exists())\n\n    def test_protect(self):\n        a = create_a('protect')\n        self.assertRaises(IntegrityError, a.protect.delete)\n\n    def test_do_nothing(self):\n        # Testing DO_NOTHING is a bit harder: It would raise IntegrityError for a normal model,\n        # so we connect to pre_delete and set the fk to a known value.\n        replacement_r = R.objects.create()\n        def check_do_nothing(sender, **kwargs):\n            obj = kwargs['instance']\n            obj.donothing_set.update(donothing=replacement_r)\n        models.signals.pre_delete.connect(check_do_nothing)\n        a = create_a('do_nothing')\n        a.donothing.delete()\n        a = A.objects.get(pk=a.pk)\n        self.assertEqual(replacement_r, a.donothing)\n        models.signals.pre_delete.disconnect(check_do_nothing)\n\n    def test_do_nothing_qscount(self):\n        \"\"\"\n        Test that a models.DO_NOTHING relation doesn't trigger a query.\n        \"\"\"\n        b = Base.objects.create()\n        with self.assertNumQueries(1):\n            # RelToBase should not be queried.\n            b.delete()\n        self.assertEqual(Base.objects.count(), 0)\n\n    def test_inheritance_cascade_up(self):\n        child = RChild.objects.create()\n        child.delete()\n        self.assertFalse(R.objects.filter(pk=child.pk).exists())\n\n    def test_inheritance_cascade_down(self):\n        child = RChild.objects.create()\n        parent = child.r_ptr\n        parent.delete()\n        self.assertFalse(RChild.objects.filter(pk=child.pk).exists())\n\n    def test_cascade_from_child(self):\n        a = create_a('child')\n        a.child.delete()\n        self.assertFalse(A.objects.filter(name='child').exists())\n        self.assertFalse(R.objects.filter(pk=a.child_id).exists())\n\n    def test_cascade_from_parent(self):\n        a = create_a('child')\n        R.objects.get(pk=a.child_id).delete()\n        self.assertFalse(A.objects.filter(name='child').exists())\n        self.assertFalse(RChild.objects.filter(pk=a.child_id).exists())\n\n    def test_setnull_from_child(self):\n        a = create_a('child_setnull')\n        a.child_setnull.delete()\n        self.assertFalse(R.objects.filter(pk=a.child_setnull_id).exists())\n\n        a = A.objects.get(pk=a.pk)\n        self.assertEqual(None, a.child_setnull)\n\n    def test_setnull_from_parent(self):\n        a = create_a('child_setnull')\n        R.objects.get(pk=a.child_setnull_id).delete()\n        self.assertFalse(RChild.objects.filter(pk=a.child_setnull_id).exists())\n\n        a = A.objects.get(pk=a.pk)\n        self.assertEqual(None, a.child_setnull)\n\n    def test_o2o_setnull(self):\n        a = create_a('o2o_setnull')\n        a.o2o_setnull.delete()\n        a = A.objects.get(pk=a.pk)\n        self.assertEqual(None, a.o2o_setnull)\n\n\nclass DeletionTests(TestCase):\n    def test_m2m(self):\n        m = M.objects.create()\n        r = R.objects.create()\n        MR.objects.create(m=m, r=r)\n        r.delete()\n        self.assertFalse(MR.objects.exists())\n\n        r = R.objects.create()\n        MR.objects.create(m=m, r=r)\n        m.delete()\n        self.assertFalse(MR.objects.exists())\n\n        m = M.objects.create()\n        r = R.objects.create()\n        m.m2m.add(r)\n        r.delete()\n        through = M._meta.get_field('m2m').rel.through\n        self.assertFalse(through.objects.exists())\n\n        r = R.objects.create()\n        m.m2m.add(r)\n        m.delete()\n        self.assertFalse(through.objects.exists())\n\n        m = M.objects.create()\n        r = R.objects.create()\n        MRNull.objects.create(m=m, r=r)\n        r.delete()\n        self.assertFalse(not MRNull.objects.exists())\n        self.assertFalse(m.m2m_through_null.exists())\n\n    def test_bulk(self):\n        from django.db.models.sql.constants import GET_ITERATOR_CHUNK_SIZE\n        s = S.objects.create(r=R.objects.create())\n        for i in xrange(2*GET_ITERATOR_CHUNK_SIZE):\n            T.objects.create(s=s)\n        #   1 (select related `T` instances)\n        # + 1 (select related `U` instances)\n        # + 2 (delete `T` instances in batches)\n        # + 1 (delete `s`)\n        self.assertNumQueries(5, s.delete)\n        self.assertFalse(S.objects.exists())\n\n    def test_instance_update(self):\n        deleted = []\n        related_setnull_sets = []\n        def pre_delete(sender, **kwargs):\n            obj = kwargs['instance']\n            deleted.append(obj)\n            if isinstance(obj, R):\n                related_setnull_sets.append(list(a.pk for a in obj.setnull_set.all()))\n\n        models.signals.pre_delete.connect(pre_delete)\n        a = create_a('update_setnull')\n        a.setnull.delete()\n\n        a = create_a('update_cascade')\n        a.cascade.delete()\n\n        for obj in deleted:\n            self.assertEqual(None, obj.pk)\n\n        for pk_list in related_setnull_sets:\n            for a in A.objects.filter(id__in=pk_list):\n                self.assertEqual(None, a.setnull)\n\n        models.signals.pre_delete.disconnect(pre_delete)\n\n    def test_deletion_order(self):\n        pre_delete_order = []\n        post_delete_order = []\n\n        def log_post_delete(sender, **kwargs):\n            pre_delete_order.append((sender, kwargs['instance'].pk))\n\n        def log_pre_delete(sender, **kwargs):\n            post_delete_order.append((sender, kwargs['instance'].pk))\n\n        models.signals.post_delete.connect(log_post_delete)\n        models.signals.pre_delete.connect(log_pre_delete)\n\n        r = R.objects.create(pk=1)\n        s1 = S.objects.create(pk=1, r=r)\n        s2 = S.objects.create(pk=2, r=r)\n        t1 = T.objects.create(pk=1, s=s1)\n        t2 = T.objects.create(pk=2, s=s2)\n        r.delete()\n        self.assertEqual(\n            pre_delete_order, [(T, 2), (T, 1), (S, 2), (S, 1), (R, 1)]\n        )\n        self.assertEqual(\n            post_delete_order, [(T, 1), (T, 2), (S, 1), (S, 2), (R, 1)]\n        )\n\n        models.signals.post_delete.disconnect(log_post_delete)\n        models.signals.pre_delete.disconnect(log_pre_delete)\n\n    @skipUnlessDBFeature(\"can_defer_constraint_checks\")\n    def test_can_defer_constraint_checks(self):\n        u = User.objects.create(\n            avatar=Avatar.objects.create()\n        )\n        a = Avatar.objects.get(pk=u.avatar_id)\n        # 1 query to find the users for the avatar.\n        # 1 query to delete the user\n        # 1 query to delete the avatar\n        # The important thing is that when we can defer constraint checks there\n        # is no need to do an UPDATE on User.avatar to null it out.\n\n        # Attach a signal to make sure we will not do fast_deletes.\n        calls = []\n        def noop(*args, **kwargs):\n            calls.append('')\n        models.signals.post_delete.connect(noop, sender=User)\n\n        self.assertNumQueries(3, a.delete)\n        self.assertFalse(User.objects.exists())\n        self.assertFalse(Avatar.objects.exists())\n        self.assertEqual(len(calls), 1)\n        models.signals.post_delete.disconnect(noop, sender=User)\n\n    @skipIfDBFeature(\"can_defer_constraint_checks\")\n    def test_cannot_defer_constraint_checks(self):\n        u = User.objects.create(\n            avatar=Avatar.objects.create()\n        )\n        # Attach a signal to make sure we will not do fast_deletes.\n        calls = []\n        def noop(*args, **kwargs):\n            calls.append('')\n        models.signals.post_delete.connect(noop, sender=User)\n\n        a = Avatar.objects.get(pk=u.avatar_id)\n        # The below doesn't make sense... Why do we need to null out\n        # user.avatar if we are going to delete the user immediately after it,\n        # and there are no more cascades.\n        # 1 query to find the users for the avatar.\n        # 1 query to delete the user\n        # 1 query to null out user.avatar, because we can't defer the constraint\n        # 1 query to delete the avatar\n        self.assertNumQueries(4, a.delete)\n        self.assertFalse(User.objects.exists())\n        self.assertFalse(Avatar.objects.exists())\n        self.assertEqual(len(calls), 1)\n        models.signals.post_delete.disconnect(noop, sender=User)\n\n    def test_hidden_related(self):\n        r = R.objects.create()\n        h = HiddenUser.objects.create(r=r)\n        p = HiddenUserProfile.objects.create(user=h)\n\n        r.delete()\n        self.assertEqual(HiddenUserProfile.objects.count(), 0)\n\nclass FastDeleteTests(TestCase):\n\n    def test_fast_delete_fk(self):\n        u = User.objects.create(\n            avatar=Avatar.objects.create()\n        )\n        a = Avatar.objects.get(pk=u.avatar_id)\n        # 1 query to fast-delete the user\n        # 1 query to delete the avatar\n        self.assertNumQueries(2, a.delete)\n        self.assertFalse(User.objects.exists())\n        self.assertFalse(Avatar.objects.exists())\n\n    def test_fast_delete_m2m(self):\n        t = M2MTo.objects.create()\n        f = M2MFrom.objects.create()\n        f.m2m.add(t)\n        # 1 to delete f, 1 to fast-delete m2m for f\n        self.assertNumQueries(2, f.delete)\n\n    def test_fast_delete_revm2m(self):\n        t = M2MTo.objects.create()\n        f = M2MFrom.objects.create()\n        f.m2m.add(t)\n        # 1 to delete t, 1 to fast-delete t's m_set\n        self.assertNumQueries(2, f.delete)\n\n    def test_fast_delete_qs(self):\n        u1 = User.objects.create()\n        u2 = User.objects.create()\n        self.assertNumQueries(1, User.objects.filter(pk=u1.pk).delete)\n        self.assertEqual(User.objects.count(), 1)\n        self.assertTrue(User.objects.filter(pk=u2.pk).exists())\n\n    def test_fast_delete_joined_qs(self):\n        a = Avatar.objects.create(desc='a')\n        User.objects.create(avatar=a)\n        u2 = User.objects.create()\n        expected_queries = 1 if connection.features.update_can_self_select else 2\n        self.assertNumQueries(expected_queries,\n                              User.objects.filter(avatar__desc='a').delete)\n        self.assertEqual(User.objects.count(), 1)\n        self.assertTrue(User.objects.filter(pk=u2.pk).exists())\n\n    def test_fast_delete_inheritance(self):\n        c = Child.objects.create()\n        p = Parent.objects.create()\n        # 1 for self, 1 for parent\n        # However, this doesn't work as child.parent access creates a query,\n        # and this means we will be generating extra queries (a lot for large\n        # querysets). This is not a fast-delete problem.\n        # self.assertNumQueries(2, c.delete)\n        c.delete()\n        self.assertFalse(Child.objects.exists())\n        self.assertEqual(Parent.objects.count(), 1)\n        self.assertEqual(Parent.objects.filter(pk=p.pk).count(), 1)\n        # 1 for self delete, 1 for fast delete of empty \"child\" qs.\n        self.assertNumQueries(2, p.delete)\n        self.assertFalse(Parent.objects.exists())\n        # 1 for self delete, 1 for fast delete of empty \"child\" qs.\n        c = Child.objects.create()\n        p = c.parent_ptr\n        self.assertNumQueries(2, p.delete)\n        self.assertFalse(Parent.objects.exists())\n        self.assertFalse(Child.objects.exists())\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/distinct_on_fields/__init__.py",
    "content": "#\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/distinct_on_fields/models.py",
    "content": "from __future__ import unicode_literals\n\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n@python_2_unicode_compatible\nclass Tag(models.Model):\n    name = models.CharField(max_length=10)\n    parent = models.ForeignKey('self', blank=True, null=True,\n            related_name='children')\n\n    class Meta:\n        ordering = ['name']\n\n    def __str__(self):\n        return self.name\n\n@python_2_unicode_compatible\nclass Celebrity(models.Model):\n    name = models.CharField(\"Name\", max_length=20)\n    greatest_fan = models.ForeignKey(\"Fan\", null=True, unique=True)\n\n    def __str__(self):\n        return self.name\n\nclass Fan(models.Model):\n    fan_of = models.ForeignKey(Celebrity)\n\n@python_2_unicode_compatible\nclass Staff(models.Model):\n    id = models.IntegerField(primary_key=True)\n    name = models.CharField(max_length=50)\n    organisation = models.CharField(max_length=100)\n    tags = models.ManyToManyField(Tag, through='StaffTag')\n    coworkers = models.ManyToManyField('self')\n\n    def __str__(self):\n        return self.name\n\n@python_2_unicode_compatible\nclass StaffTag(models.Model):\n    staff = models.ForeignKey(Staff)\n    tag = models.ForeignKey(Tag)\n\n    def __str__(self):\n        return \"%s -> %s\" % (self.tag, self.staff)\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/distinct_on_fields/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom django.db.models import Max\nfrom django.test import TestCase, skipUnlessDBFeature\nfrom django.test.utils import str_prefix\n\nfrom .models import Tag, Celebrity, Fan, Staff, StaffTag\n\nclass DistinctOnTests(TestCase):\n    def setUp(self):\n        t1 = Tag.objects.create(name='t1')\n        t2 = Tag.objects.create(name='t2', parent=t1)\n        t3 = Tag.objects.create(name='t3', parent=t1)\n        t4 = Tag.objects.create(name='t4', parent=t3)\n        t5 = Tag.objects.create(name='t5', parent=t3)\n\n        p1_o1 = Staff.objects.create(id=1, name=\"p1\", organisation=\"o1\")\n        p2_o1 = Staff.objects.create(id=2, name=\"p2\", organisation=\"o1\")\n        p3_o1 = Staff.objects.create(id=3, name=\"p3\", organisation=\"o1\")\n        p1_o2 = Staff.objects.create(id=4, name=\"p1\", organisation=\"o2\")\n        p1_o1.coworkers.add(p2_o1, p3_o1)\n        StaffTag.objects.create(staff=p1_o1, tag=t1)\n        StaffTag.objects.create(staff=p1_o1, tag=t1)\n\n        celeb1 = Celebrity.objects.create(name=\"c1\")\n        celeb2 = Celebrity.objects.create(name=\"c2\")\n\n        self.fan1 = Fan.objects.create(fan_of=celeb1)\n        self.fan2 = Fan.objects.create(fan_of=celeb1)\n        self.fan3 = Fan.objects.create(fan_of=celeb2)\n\n    @skipUnlessDBFeature('can_distinct_on_fields')\n    def test_basic_distinct_on(self):\n        \"\"\"QuerySet.distinct('field', ...) works\"\"\"\n        # (qset, expected) tuples\n        qsets = (\n            (\n                Staff.objects.distinct().order_by('name'),\n                ['<Staff: p1>', '<Staff: p1>', '<Staff: p2>', '<Staff: p3>'],\n            ),\n            (\n                Staff.objects.distinct('name').order_by('name'),\n                ['<Staff: p1>', '<Staff: p2>', '<Staff: p3>'],\n            ),\n            (\n                Staff.objects.distinct('organisation').order_by('organisation', 'name'),\n                ['<Staff: p1>', '<Staff: p1>'],\n            ),\n            (\n                Staff.objects.distinct('name', 'organisation').order_by('name', 'organisation'),\n                ['<Staff: p1>', '<Staff: p1>', '<Staff: p2>', '<Staff: p3>'],\n            ),\n            (\n                Celebrity.objects.filter(fan__in=[self.fan1, self.fan2, self.fan3]).\\\n                    distinct('name').order_by('name'),\n                ['<Celebrity: c1>', '<Celebrity: c2>'],\n            ),\n            # Does combining querysets work?\n            (\n                (Celebrity.objects.filter(fan__in=[self.fan1, self.fan2]).\\\n                    distinct('name').order_by('name')\n                |Celebrity.objects.filter(fan__in=[self.fan3]).\\\n                    distinct('name').order_by('name')),\n                ['<Celebrity: c1>', '<Celebrity: c2>'],\n            ),\n            (\n                StaffTag.objects.distinct('staff','tag'),\n                ['<StaffTag: t1 -> p1>'],\n            ),\n            (\n                Tag.objects.order_by('parent__pk', 'pk').distinct('parent'),\n                ['<Tag: t2>', '<Tag: t4>', '<Tag: t1>'],\n            ),\n            (\n                StaffTag.objects.select_related('staff').distinct('staff__name').order_by('staff__name'),\n                ['<StaffTag: t1 -> p1>'],\n            ),\n            # Fetch the alphabetically first coworker for each worker\n            (\n                (Staff.objects.distinct('id').order_by('id', 'coworkers__name').\n                               values_list('id', 'coworkers__name')),\n                [str_prefix(\"(1, %(_)s'p2')\"), str_prefix(\"(2, %(_)s'p1')\"),\n                 str_prefix(\"(3, %(_)s'p1')\"), \"(4, None)\"]\n            ),\n        )\n        for qset, expected in qsets:\n            self.assertQuerysetEqual(qset, expected)\n            self.assertEqual(qset.count(), len(expected))\n\n        # Combining queries with different distinct_fields is not allowed.\n        base_qs = Celebrity.objects.all()\n        self.assertRaisesMessage(\n            AssertionError,\n            \"Cannot combine queries with different distinct fields.\",\n            lambda: (base_qs.distinct('id') & base_qs.distinct('name'))\n        )\n\n        # Test join unreffing\n        c1 = Celebrity.objects.distinct('greatest_fan__id', 'greatest_fan__fan_of')\n        self.assertIn('OUTER JOIN', str(c1.query))\n        c2 = c1.distinct('pk')\n        self.assertNotIn('OUTER JOIN', str(c2.query))\n\n    @skipUnlessDBFeature('can_distinct_on_fields')\n    def test_distinct_not_implemented_checks(self):\n        # distinct + annotate not allowed\n        with self.assertRaises(NotImplementedError):\n            Celebrity.objects.annotate(Max('id')).distinct('id')[0]\n        with self.assertRaises(NotImplementedError):\n            Celebrity.objects.distinct('id').annotate(Max('id'))[0]\n\n        # However this check is done only when the query executes, so you\n        # can use distinct() to remove the fields before execution.\n        Celebrity.objects.distinct('id').annotate(Max('id')).distinct()[0]\n        # distinct + aggregate not allowed\n        with self.assertRaises(NotImplementedError):\n            Celebrity.objects.distinct('id').aggregate(Max('id'))\n\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/empty/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/empty/models.py",
    "content": "\"\"\"\n40. Empty model tests\n\nThese test that things behave sensibly for the rare corner-case of a model with\nno fields.\n\"\"\"\n\nfrom django.db import models\n\n\nclass Empty(models.Model):\n    pass\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/empty/no_models/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/empty/no_models/tests.py",
    "content": "from django.test import TestCase\n\n\nclass NoModelTests(TestCase):\n    \"\"\" A placeholder test case. See modeltests.empty.tests for more info. \"\"\"\n    pass\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/empty/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom django.core.exceptions import ImproperlyConfigured\nfrom django.db.models.loading import get_app\nfrom django.test import TestCase\nfrom django.test.utils import override_settings\nfrom django.utils import six\n\nfrom .models import Empty\n\n\nclass EmptyModelTests(TestCase):\n    def test_empty(self):\n        m = Empty()\n        self.assertEqual(m.id, None)\n        m.save()\n        Empty.objects.create()\n        self.assertEqual(len(Empty.objects.all()), 2)\n        self.assertTrue(m.id is not None)\n        existing = Empty(m.id)\n        existing.save()\n\n\nclass NoModelTests(TestCase):\n    \"\"\"\n    Test for #7198 to ensure that the proper error message is raised\n    when attempting to load an app with no models.py file.\n\n    Because the test runner won't currently load a test module with no\n    models.py file, this TestCase instead lives in this module.\n\n    It seemed like an appropriate home for it.\n    \"\"\"\n    @override_settings(INSTALLED_APPS=(\"modeltests.empty.no_models\",))\n    def test_no_models(self):\n        with six.assertRaisesRegex(self, ImproperlyConfigured,\n                    'App with label no_models is missing a models.py module.'):\n            get_app('no_models')\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/expressions/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/expressions/models.py",
    "content": "\"\"\"\nTests for F() query expression syntax.\n\"\"\"\nfrom __future__ import unicode_literals\n\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n@python_2_unicode_compatible\nclass Employee(models.Model):\n    firstname = models.CharField(max_length=50)\n    lastname = models.CharField(max_length=50)\n\n    def __str__(self):\n        return '%s %s' % (self.firstname, self.lastname)\n\n@python_2_unicode_compatible\nclass Company(models.Model):\n    name = models.CharField(max_length=100)\n    num_employees = models.PositiveIntegerField()\n    num_chairs = models.PositiveIntegerField()\n    ceo = models.ForeignKey(\n        Employee,\n        related_name='company_ceo_set')\n    point_of_contact = models.ForeignKey(\n        Employee,\n        related_name='company_point_of_contact_set',\n        null=True)\n\n    def __str__(self):\n        return self.name\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/expressions/tests.py",
    "content": "from __future__ import absolute_import, unicode_literals\n\nfrom django.core.exceptions import FieldError\nfrom django.db.models import F\nfrom django.test import TestCase\nfrom django.utils import six\n\nfrom .models import Company, Employee\n\n\nclass ExpressionsTests(TestCase):\n    def test_filter(self):\n        Company.objects.create(\n            name=\"Example Inc.\", num_employees=2300, num_chairs=5,\n            ceo=Employee.objects.create(firstname=\"Joe\", lastname=\"Smith\")\n        )\n        Company.objects.create(\n            name=\"Foobar Ltd.\", num_employees=3, num_chairs=4,\n            ceo=Employee.objects.create(firstname=\"Frank\", lastname=\"Meyer\")\n        )\n        Company.objects.create(\n            name=\"Test GmbH\", num_employees=32, num_chairs=1,\n            ceo=Employee.objects.create(firstname=\"Max\", lastname=\"Mustermann\")\n        )\n\n        company_query = Company.objects.values(\n            \"name\", \"num_employees\", \"num_chairs\"\n        ).order_by(\n            \"name\", \"num_employees\", \"num_chairs\"\n        )\n\n        # We can filter for companies where the number of employees is greater\n        # than the number of chairs.\n        self.assertQuerysetEqual(\n            company_query.filter(num_employees__gt=F(\"num_chairs\")), [\n                {\n                    \"num_chairs\": 5,\n                    \"name\": \"Example Inc.\",\n                    \"num_employees\": 2300,\n                },\n                {\n                    \"num_chairs\": 1,\n                    \"name\": \"Test GmbH\",\n                    \"num_employees\": 32\n                },\n            ],\n            lambda o: o\n        )\n\n        # We can set one field to have the value of another field\n        # Make sure we have enough chairs\n        company_query.update(num_chairs=F(\"num_employees\"))\n        self.assertQuerysetEqual(\n            company_query, [\n                {\n                    \"num_chairs\": 2300,\n                    \"name\": \"Example Inc.\",\n                    \"num_employees\": 2300\n                },\n                {\n                    \"num_chairs\": 3,\n                    \"name\": \"Foobar Ltd.\",\n                    \"num_employees\": 3\n                },\n                {\n                    \"num_chairs\": 32,\n                    \"name\": \"Test GmbH\",\n                    \"num_employees\": 32\n                }\n            ],\n            lambda o: o\n        )\n\n        # We can perform arithmetic operations in expressions\n        # Make sure we have 2 spare chairs\n        company_query.update(num_chairs=F(\"num_employees\")+2)\n        self.assertQuerysetEqual(\n            company_query, [\n                {\n                    'num_chairs': 2302,\n                    'name': 'Example Inc.',\n                    'num_employees': 2300\n                },\n                {\n                    'num_chairs': 5,\n                    'name': 'Foobar Ltd.',\n                    'num_employees': 3\n                },\n                {\n                    'num_chairs': 34,\n                    'name': 'Test GmbH',\n                    'num_employees': 32\n                }\n            ],\n            lambda o: o,\n        )\n\n        # Law of order of operations is followed\n        company_query.update(\n            num_chairs=F('num_employees') + 2 * F('num_employees')\n        )\n        self.assertQuerysetEqual(\n            company_query, [\n                {\n                    'num_chairs': 6900,\n                    'name': 'Example Inc.',\n                    'num_employees': 2300\n                },\n                {\n                    'num_chairs': 9,\n                    'name': 'Foobar Ltd.',\n                    'num_employees': 3\n                },\n                {\n                    'num_chairs': 96,\n                    'name': 'Test GmbH',\n                    'num_employees': 32\n                }\n            ],\n            lambda o: o,\n        )\n\n        # Law of order of operations can be overridden by parentheses\n        company_query.update(\n            num_chairs=((F('num_employees') + 2) * F('num_employees'))\n        )\n        self.assertQuerysetEqual(\n            company_query, [\n                {\n                    'num_chairs': 5294600,\n                    'name': 'Example Inc.',\n                    'num_employees': 2300\n                },\n                {\n                    'num_chairs': 15,\n                    'name': 'Foobar Ltd.',\n                    'num_employees': 3\n                },\n                {\n                    'num_chairs': 1088,\n                    'name': 'Test GmbH',\n                    'num_employees': 32\n                }\n            ],\n            lambda o: o,\n        )\n\n        # The relation of a foreign key can become copied over to an other\n        # foreign key.\n        self.assertEqual(\n            Company.objects.update(point_of_contact=F('ceo')),\n            3\n        )\n        self.assertQuerysetEqual(\n            Company.objects.all(), [\n                \"Joe Smith\",\n                \"Frank Meyer\",\n                \"Max Mustermann\",\n            ],\n            lambda c: six.text_type(c.point_of_contact),\n        )\n\n        c = Company.objects.all()[0]\n        c.point_of_contact = Employee.objects.create(firstname=\"Guido\", lastname=\"van Rossum\")\n        c.save()\n\n        # F Expressions can also span joins\n        self.assertQuerysetEqual(\n            Company.objects.filter(ceo__firstname=F(\"point_of_contact__firstname\")), [\n                \"Foobar Ltd.\",\n                \"Test GmbH\",\n            ],\n            lambda c: c.name\n        )\n\n        Company.objects.exclude(\n            ceo__firstname=F(\"point_of_contact__firstname\")\n        ).update(name=\"foo\")\n        self.assertEqual(\n            Company.objects.exclude(\n                ceo__firstname=F('point_of_contact__firstname')\n            ).get().name,\n            \"foo\",\n        )\n\n        self.assertRaises(FieldError,\n            lambda: Company.objects.exclude(\n                ceo__firstname=F('point_of_contact__firstname')\n            ).update(name=F('point_of_contact__lastname'))\n        )\n\n        # F expressions can be used to update attributes on single objects\n        test_gmbh = Company.objects.get(name=\"Test GmbH\")\n        self.assertEqual(test_gmbh.num_employees, 32)\n        test_gmbh.num_employees = F(\"num_employees\") + 4\n        test_gmbh.save()\n        test_gmbh = Company.objects.get(pk=test_gmbh.pk)\n        self.assertEqual(test_gmbh.num_employees, 36)\n\n        # F expressions cannot be used to update attributes which are foreign\n        # keys, or attributes which involve joins.\n        test_gmbh.point_of_contact = None\n        test_gmbh.save()\n        self.assertTrue(test_gmbh.point_of_contact is None)\n        def test():\n            test_gmbh.point_of_contact = F(\"ceo\")\n        self.assertRaises(ValueError, test)\n\n        test_gmbh.point_of_contact = test_gmbh.ceo\n        test_gmbh.save()\n        test_gmbh.name = F(\"ceo__last_name\")\n        self.assertRaises(FieldError, test_gmbh.save)\n\n        # F expressions cannot be used to update attributes on objects which do\n        # not yet exist in the database\n        acme = Company(\n            name=\"The Acme Widget Co.\", num_employees=12, num_chairs=5,\n            ceo=test_gmbh.ceo\n        )\n        acme.num_employees = F(\"num_employees\") + 16\n        self.assertRaises(TypeError, acme.save)\n\n    def test_ticket_18375_join_reuse(self):\n        # Test that reverse multijoin F() references and the lookup target\n        # the same join. Pre #18375 the F() join was generated first, and the\n        # lookup couldn't reuse that join.\n        qs = Employee.objects.filter(\n            company_ceo_set__num_chairs=F('company_ceo_set__num_employees'))\n        self.assertEqual(str(qs.query).count('JOIN'), 1)\n\n    def test_ticket_18375_kwarg_ordering(self):\n        # The next query was dict-randomization dependent - if the \"gte=1\"\n        # was seen first, then the F() will reuse the join generated by the\n        # gte lookup, if F() was seen first, then it generated a join the\n        # other lookups could not reuse.\n        qs = Employee.objects.filter(\n            company_ceo_set__num_chairs=F('company_ceo_set__num_employees'),\n            company_ceo_set__num_chairs__gte=1)\n        self.assertEqual(str(qs.query).count('JOIN'), 1)\n\n    def test_ticket_18375_kwarg_ordering_2(self):\n        # Another similar case for F() than above. Now we have the same join\n        # in two filter kwargs, one in the lhs lookup, one in F. Here pre\n        # #18375 the amount of joins generated was random if dict\n        # randomization was enabled, that is the generated query dependend\n        # on which clause was seen first.\n        qs = Employee.objects.filter(\n            company_ceo_set__num_employees=F('pk'),\n            pk=F('company_ceo_set__num_employees')\n        )\n        self.assertEqual(str(qs.query).count('JOIN'), 1)\n\n    def test_ticket_18375_chained_filters(self):\n        # Test that F() expressions do not reuse joins from previous filter.\n        qs = Employee.objects.filter(\n            company_ceo_set__num_employees=F('pk')\n        ).filter(\n            company_ceo_set__num_employees=F('company_ceo_set__num_employees')\n        )\n        self.assertEqual(str(qs.query).count('JOIN'), 2)\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/field_defaults/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/field_defaults/models.py",
    "content": "# coding: utf-8\n\"\"\"\n32. Callable defaults\n\nYou can pass callable objects as the ``default`` parameter to a field. When\nthe object is created without an explicit value passed in, Django will call\nthe method to determine the default value.\n\nThis example uses ``datetime.datetime.now`` as the default for the ``pub_date``\nfield.\n\"\"\"\n\nfrom datetime import datetime\n\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n@python_2_unicode_compatible\nclass Article(models.Model):\n    headline = models.CharField(max_length=100, default='Default headline')\n    pub_date = models.DateTimeField(default=datetime.now)\n\n    def __str__(self):\n        return self.headline\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/field_defaults/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom datetime import datetime\n\nfrom django.test import TestCase\nfrom django.utils import six\n\nfrom .models import Article\n\n\nclass DefaultTests(TestCase):\n    def test_field_defaults(self):\n        a = Article()\n        now = datetime.now()\n        a.save()\n\n        self.assertTrue(isinstance(a.id, six.integer_types))\n        self.assertEqual(a.headline, \"Default headline\")\n        self.assertTrue((now - a.pub_date).seconds < 5)\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/field_subclassing/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/field_subclassing/fields.py",
    "content": "from __future__ import unicode_literals\n\nimport json\n\nfrom django.db import models\nfrom django.utils.encoding import force_text\nfrom django.utils import six\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n@python_2_unicode_compatible\nclass Small(object):\n    \"\"\"\n    A simple class to show that non-trivial Python objects can be used as\n    attributes.\n    \"\"\"\n    def __init__(self, first, second):\n        self.first, self.second = first, second\n\n    def __str__(self):\n        return '%s%s' % (force_text(self.first), force_text(self.second))\n\nclass SmallField(six.with_metaclass(models.SubfieldBase, models.Field)):\n    \"\"\"\n    Turns the \"Small\" class into a Django field. Because of the similarities\n    with normal character fields and the fact that Small.__unicode__ does\n    something sensible, we don't need to implement a lot here.\n    \"\"\"\n\n    def __init__(self, *args, **kwargs):\n        kwargs['max_length'] = 2\n        super(SmallField, self).__init__(*args, **kwargs)\n\n    def get_internal_type(self):\n        return 'CharField'\n\n    def to_python(self, value):\n        if isinstance(value, Small):\n            return value\n        return Small(value[0], value[1])\n\n    def get_db_prep_save(self, value, connection):\n        return six.text_type(value)\n\n    def get_prep_lookup(self, lookup_type, value):\n        if lookup_type == 'exact':\n            return force_text(value)\n        if lookup_type == 'in':\n            return [force_text(v) for v in value]\n        if lookup_type == 'isnull':\n            return []\n        raise TypeError('Invalid lookup type: %r' % lookup_type)\n\nclass SmallerField(SmallField):\n    pass\n\n\nclass JSONField(six.with_metaclass(models.SubfieldBase, models.TextField)):\n\n    description = (\"JSONField automatically serializes and desializes values to \"\n        \"and from JSON.\")\n\n    def to_python(self, value):\n        if not value:\n            return None\n\n        if isinstance(value, six.string_types):\n            value = json.loads(value)\n        return value\n\n    def get_db_prep_save(self, value, connection):\n        if value is None:\n            return None\n        return json.dumps(value)\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/field_subclassing/models.py",
    "content": "\"\"\"\nTests for field subclassing.\n\"\"\"\n\nfrom __future__ import absolute_import\n\nfrom django.db import models\nfrom django.utils.encoding import force_text\n\nfrom .fields import SmallField, SmallerField, JSONField\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n@python_2_unicode_compatible\nclass MyModel(models.Model):\n    name = models.CharField(max_length=10)\n    data = SmallField('small field')\n\n    def __str__(self):\n        return force_text(self.name)\n\nclass OtherModel(models.Model):\n    data = SmallerField()\n\nclass DataModel(models.Model):\n    data = JSONField()\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/field_subclassing/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom django.core import serializers\nfrom django.test import TestCase\n\nfrom .fields import Small\nfrom .models import DataModel, MyModel, OtherModel\n\n\nclass CustomField(TestCase):\n    def test_defer(self):\n        d = DataModel.objects.create(data=[1, 2, 3])\n\n        self.assertTrue(isinstance(d.data, list))\n\n        d = DataModel.objects.get(pk=d.pk)\n        self.assertTrue(isinstance(d.data, list))\n        self.assertEqual(d.data, [1, 2, 3])\n\n        d = DataModel.objects.defer(\"data\").get(pk=d.pk)\n        self.assertTrue(isinstance(d.data, list))\n        self.assertEqual(d.data, [1, 2, 3])\n        # Refetch for save\n        d = DataModel.objects.defer(\"data\").get(pk=d.pk)\n        d.save()\n\n        d = DataModel.objects.get(pk=d.pk)\n        self.assertTrue(isinstance(d.data, list))\n        self.assertEqual(d.data, [1, 2, 3])\n\n    def test_custom_field(self):\n        # Creating a model with custom fields is done as per normal.\n        s = Small(1, 2)\n        self.assertEqual(str(s), \"12\")\n\n        m = MyModel.objects.create(name=\"m\", data=s)\n        # Custom fields still have normal field's attributes.\n        self.assertEqual(m._meta.get_field(\"data\").verbose_name, \"small field\")\n\n        # The m.data attribute has been initialised correctly. It's a Small\n        # object.\n        self.assertEqual((m.data.first, m.data.second), (1, 2))\n\n        # The data loads back from the database correctly and 'data' has the\n        # right type.\n        m1 = MyModel.objects.get(pk=m.pk)\n        self.assertTrue(isinstance(m1.data, Small))\n        self.assertEqual(str(m1.data), \"12\")\n\n        # We can do normal filtering on the custom field (and will get an error\n        # when we use a lookup type that does not make sense).\n        s1 = Small(1, 3)\n        s2 = Small(\"a\", \"b\")\n        self.assertQuerysetEqual(\n            MyModel.objects.filter(data__in=[s, s1, s2]), [\n                \"m\",\n            ],\n            lambda m: m.name,\n        )\n        self.assertRaises(TypeError, lambda: MyModel.objects.filter(data__lt=s))\n\n        # Serialization works, too.\n        stream = serializers.serialize(\"json\", MyModel.objects.all())\n        self.assertJSONEqual(stream, [{\n            \"pk\": m1.pk,\n            \"model\": \"field_subclassing.mymodel\",\n            \"fields\": {\"data\": \"12\", \"name\": \"m\"}\n        }])\n\n        obj = list(serializers.deserialize(\"json\", stream))[0]\n        self.assertEqual(obj.object, m)\n\n        # Test retrieving custom field data\n        m.delete()\n\n        m1 = MyModel.objects.create(name=\"1\", data=Small(1, 2))\n        m2 = MyModel.objects.create(name=\"2\", data=Small(2, 3))\n\n        self.assertQuerysetEqual(\n            MyModel.objects.all(), [\n                \"12\",\n                \"23\",\n            ],\n            lambda m: str(m.data)\n        )\n\n    def test_field_subclassing(self):\n        o = OtherModel.objects.create(data=Small(\"a\", \"b\"))\n        o = OtherModel.objects.get()\n        self.assertEqual(o.data.first, \"a\")\n        self.assertEqual(o.data.second, \"b\")\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/files/__init__.py",
    "content": "\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/files/models.py",
    "content": "\"\"\"\n42. Storing files according to a custom storage system\n\n``FileField`` and its variations can take a ``storage`` argument to specify how\nand where files should be stored.\n\"\"\"\n\nimport random\nimport tempfile\n\nfrom django.db import models\nfrom django.core.files.storage import FileSystemStorage\n\n\ntemp_storage_location = tempfile.mkdtemp()\ntemp_storage = FileSystemStorage(location=temp_storage_location)\n\nclass Storage(models.Model):\n    def custom_upload_to(self, filename):\n        return 'foo'\n\n    def random_upload_to(self, filename):\n        # This returns a different result each time,\n        # to make sure it only gets called once.\n        return '%s/%s' % (random.randint(100, 999), filename)\n\n    normal = models.FileField(storage=temp_storage, upload_to='tests')\n    custom = models.FileField(storage=temp_storage, upload_to=custom_upload_to)\n    random = models.FileField(storage=temp_storage, upload_to=random_upload_to)\n    default = models.FileField(storage=temp_storage, upload_to='tests', default='tests/default.txt')\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/files/tests.py",
    "content": "from __future__ import absolute_import\n\nimport gzip\nimport shutil\nimport tempfile\n\nfrom django.core.cache import cache\nfrom django.core.files import File\nfrom django.core.files.base import ContentFile\nfrom django.core.files.uploadedfile import SimpleUploadedFile\nfrom django.test import TestCase\nfrom django.utils import unittest\n\nfrom .models import Storage, temp_storage, temp_storage_location\n\n\nclass FileStorageTests(TestCase):\n    def tearDown(self):\n        shutil.rmtree(temp_storage_location)\n\n    def test_files(self):\n        temp_storage.save('tests/default.txt', ContentFile('default content'))\n        # Attempting to access a FileField from the class raises a descriptive\n        # error\n        self.assertRaises(AttributeError, lambda: Storage.normal)\n\n        # An object without a file has limited functionality.\n        obj1 = Storage()\n        self.assertEqual(obj1.normal.name, \"\")\n        self.assertRaises(ValueError, lambda: obj1.normal.size)\n\n        # Saving a file enables full functionality.\n        obj1.normal.save(\"django_test.txt\", ContentFile(\"content\"))\n        self.assertEqual(obj1.normal.name, \"tests/django_test.txt\")\n        self.assertEqual(obj1.normal.size, 7)\n        self.assertEqual(obj1.normal.read(), b\"content\")\n        obj1.normal.close()\n\n        # File objects can be assigned to FileField attributes, but shouldn't\n        # get committed until the model it's attached to is saved.\n        obj1.normal = SimpleUploadedFile(\"assignment.txt\", b\"content\")\n        dirs, files = temp_storage.listdir(\"tests\")\n        self.assertEqual(dirs, [])\n        self.assertEqual(sorted(files), [\"default.txt\", \"django_test.txt\"])\n\n        obj1.save()\n        dirs, files = temp_storage.listdir(\"tests\")\n        self.assertEqual(\n            sorted(files), [\"assignment.txt\", \"default.txt\", \"django_test.txt\"]\n        )\n\n        # Files can be read in a little at a time, if necessary.\n        obj1.normal.open()\n        self.assertEqual(obj1.normal.read(3), b\"con\")\n        self.assertEqual(obj1.normal.read(), b\"tent\")\n        self.assertEqual(list(obj1.normal.chunks(chunk_size=2)), [b\"co\", b\"nt\", b\"en\", b\"t\"])\n        obj1.normal.close()\n\n        # Save another file with the same name.\n        obj2 = Storage()\n        obj2.normal.save(\"django_test.txt\", ContentFile(\"more content\"))\n        self.assertEqual(obj2.normal.name, \"tests/django_test_1.txt\")\n        self.assertEqual(obj2.normal.size, 12)\n\n        # Push the objects into the cache to make sure they pickle properly\n        cache.set(\"obj1\", obj1)\n        cache.set(\"obj2\", obj2)\n        self.assertEqual(cache.get(\"obj2\").normal.name, \"tests/django_test_1.txt\")\n\n        # Deleting an object does not delete the file it uses.\n        obj2.delete()\n        obj2.normal.save(\"django_test.txt\", ContentFile(\"more content\"))\n        self.assertEqual(obj2.normal.name, \"tests/django_test_2.txt\")\n\n        # Multiple files with the same name get _N appended to them.\n        objs = [Storage() for i in range(3)]\n        for o in objs:\n            o.normal.save(\"multiple_files.txt\", ContentFile(\"Same Content\"))\n        self.assertEqual(\n            [o.normal.name for o in objs],\n            [\"tests/multiple_files.txt\", \"tests/multiple_files_1.txt\", \"tests/multiple_files_2.txt\"]\n        )\n        for o in objs:\n            o.delete()\n\n        # Default values allow an object to access a single file.\n        obj3 = Storage.objects.create()\n        self.assertEqual(obj3.default.name, \"tests/default.txt\")\n        self.assertEqual(obj3.default.read(), b\"default content\")\n        obj3.default.close()\n\n        # But it shouldn't be deleted, even if there are no more objects using\n        # it.\n        obj3.delete()\n        obj3 = Storage()\n        self.assertEqual(obj3.default.read(), b\"default content\")\n        obj3.default.close()\n\n        # Verify the fix for #5655, making sure the directory is only\n        # determined once.\n        obj4 = Storage()\n        obj4.random.save(\"random_file\", ContentFile(\"random content\"))\n        self.assertTrue(obj4.random.name.endswith(\"/random_file\"))\n\n\nclass FileTests(unittest.TestCase):\n    def test_context_manager(self):\n        orig_file = tempfile.TemporaryFile()\n        base_file = File(orig_file)\n        with base_file as f:\n            self.assertIs(base_file, f)\n            self.assertFalse(f.closed)\n        self.assertTrue(f.closed)\n        self.assertTrue(orig_file.closed)\n\n    def test_file_mode(self):\n        # Should not set mode to None if it is not present.\n        # See #14681, stdlib gzip module crashes if mode is set to None\n        file = SimpleUploadedFile(\"mode_test.txt\", b\"content\")\n        self.assertFalse(hasattr(file, 'mode'))\n        g = gzip.GzipFile(fileobj=file)\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/fixtures/__init__.py",
    "content": "\n\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/fixtures/fixtures/db_fixture_1.default.json",
    "content": "[\n    {\n        \"pk\": \"6\",\n        \"model\": \"fixtures.article\",\n        \"fields\": {\n            \"headline\": \"Who needs more than one database?\",\n            \"pub_date\": \"2006-06-16 14:00:00\"\n        }\n    }\n]"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/fixtures/fixtures/db_fixture_3.nosuchdb.json",
    "content": "[\n    {\n        \"pk\": \"8\",\n        \"model\": \"fixtures.article\",\n        \"fields\": {\n            \"headline\": \"There is no spoon.\",\n            \"pub_date\": \"2006-06-16 14:00:00\"\n        }\n    }\n]"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/fixtures/fixtures/fixture1.json",
    "content": "[\n    {\n        \"pk\": 1,\n        \"model\": \"sites.site\",\n        \"fields\": {\n            \"domain\": \"example.com\",\n            \"name\": \"example.com\"\n        }\n    },\n    {\n        \"pk\": \"2\",\n        \"model\": \"fixtures.article\",\n        \"fields\": {\n            \"headline\": \"Poker has no place on ESPN\",\n            \"pub_date\": \"2006-06-16 12:00:00\"\n        }\n    },\n    {\n        \"pk\": \"3\",\n        \"model\": \"fixtures.article\",\n        \"fields\": {\n            \"headline\": \"Time to reform copyright\",\n            \"pub_date\": \"2006-06-16 13:00:00\"\n        }\n    },\n    {\n        \"pk\": 1,\n        \"model\": \"fixtures.category\",\n        \"fields\": {\n            \"description\": \"Latest news stories\",\n            \"title\": \"News Stories\"\n        }\n    }\n]"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/fixtures/fixtures/fixture2.json",
    "content": "[\n    {\n        \"pk\": \"3\", \n        \"model\": \"fixtures.article\", \n        \"fields\": {\n            \"headline\": \"Copyright is fine the way it is\", \n            \"pub_date\": \"2006-06-16 14:00:00\"\n        }\n    }, \n    {\n        \"pk\": \"4\", \n        \"model\": \"fixtures.article\", \n        \"fields\": {\n            \"headline\": \"Django conquers world!\", \n            \"pub_date\": \"2006-06-16 15:00:00\"\n        }\n    }\n]"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/fixtures/fixtures/fixture2.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<django-objects version=\"1.0\">\n    <object pk=\"2\" model=\"fixtures.article\">\n        <field type=\"CharField\" name=\"headline\">Poker on TV is great!</field>\n        <field type=\"DateTimeField\" name=\"pub_date\">2006-06-16 11:00:00</field>\n    </object>\n    <object pk=\"5\" model=\"fixtures.article\">\n        <field type=\"CharField\" name=\"headline\">XML identified as leading cause of cancer</field>\n        <field type=\"DateTimeField\" name=\"pub_date\">2006-06-16 16:00:00</field>\n    </object>\n</django-objects>"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/fixtures/fixtures/fixture3.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<django-objects version=\"1.0\">\n    <object pk=\"2\" model=\"fixtures.article\">\n        <field type=\"CharField\" name=\"headline\">Poker on TV is great!</field>\n        <field type=\"DateTimeField\" name=\"pub_date\">2006-06-16 11:00:00</field>\n    </object>\n    <object pk=\"5\" model=\"fixtures.article\">\n        <field type=\"CharField\" name=\"headline\">XML identified as leading cause of cancer</field>\n        <field type=\"DateTimeField\" name=\"pub_date\">2006-06-16 16:00:00</field>\n    </object>\n</django-objects>"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/fixtures/fixtures/fixture6.json",
    "content": "[\n    {\n        \"pk\": \"1\",\n        \"model\": \"fixtures.tag\",\n        \"fields\": {\n            \"name\": \"copyright\",\n            \"tagged_type\": [\"fixtures\", \"article\"],\n            \"tagged_id\": \"3\"\n        }\n    },\n    {\n        \"pk\": \"2\",\n        \"model\": \"fixtures.tag\",\n        \"fields\": {\n            \"name\": \"law\",\n            \"tagged_type\": [\"fixtures\", \"article\"],\n            \"tagged_id\": \"3\"\n        }\n    },\n    {\n    \t\"pk\": \"1\",\n    \t\"model\": \"fixtures.person\",\n    \t\"fields\": {\n    \t    \"name\": \"Django Reinhardt\"\n    \t}\n    },\n    {\n    \t\"pk\": \"2\",\n    \t\"model\": \"fixtures.person\",\n    \t\"fields\": {\n    \t    \"name\": \"Stephane Grappelli\"\n    \t}\n    },\n        {\n    \t\"pk\": \"3\",\n    \t\"model\": \"fixtures.person\",\n    \t\"fields\": {\n    \t    \"name\": \"Prince\"\n    \t}\n    }\n]\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/fixtures/fixtures/fixture7.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<django-objects version=\"1.0\">\n    <object pk=\"2\" model=\"fixtures.tag\">\n        <field type=\"CharField\" name=\"name\">legal</field>\n        <field to=\"contenttypes.contenttype\" name=\"tagged_type\" rel=\"ManyToOneRel\">\n            <natural>fixtures</natural>\n            <natural>article</natural>\n        </field>\n        <field type=\"PositiveIntegerField\" name=\"tagged_id\">3</field>\n    </object>\n    <object pk=\"3\" model=\"fixtures.tag\">\n        <field type=\"CharField\" name=\"name\">django</field>\n        <field to=\"contenttypes.contenttype\" name=\"tagged_type\" rel=\"ManyToOneRel\">\n            <natural>fixtures</natural>\n            <natural>article</natural>\n        </field>\n        <field type=\"PositiveIntegerField\" name=\"tagged_id\">4</field>\n    </object>\n    <object pk=\"4\" model=\"fixtures.tag\">\n        <field type=\"CharField\" name=\"name\">world domination</field>\n        <field to=\"contenttypes.contenttype\" name=\"tagged_type\" rel=\"ManyToOneRel\">\n            <natural>fixtures</natural>\n            <natural>article</natural>\n        </field>\n        <field type=\"PositiveIntegerField\" name=\"tagged_id\">4</field>\n    </object>\n</django-objects>\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/fixtures/fixtures/fixture8.json",
    "content": "[\n    {\n    \t\"pk\": \"1\",\n    \t\"model\": \"fixtures.visa\",\n    \t\"fields\": {\n    \t    \"person\": [\"Django Reinhardt\"],\n    \t    \"permissions\": [\n    \t        [\"add_user\", \"auth\", \"user\"],\n    \t        [\"change_user\", \"auth\", \"user\"],\n    \t        [\"delete_user\", \"auth\", \"user\"]\n    \t    ]\n    \t}\n    },\n    {\n    \t\"pk\": \"2\",\n    \t\"model\": \"fixtures.visa\",\n    \t\"fields\": {\n    \t    \"person\": [\"Stephane Grappelli\"],\n    \t    \"permissions\": [\n    \t        [\"add_user\", \"auth\", \"user\"]\n    \t    ]\n    \t}\n    },\n        {\n    \t\"pk\": \"3\",\n    \t\"model\": \"fixtures.visa\",\n    \t\"fields\": {\n    \t    \"person\": [\"Prince\"],\n    \t    \"permissions\": []\n    \t}\n    }\n]\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/fixtures/fixtures/fixture9.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<django-objects version=\"1.0\">\n    <object pk=\"2\" model=\"fixtures.visa\">\n        <field type=\"CharField\" name=\"person\">\n            <natural>Stephane Grappelli</natural>\n        </field>\n        <field to=\"auth.permission\" name=\"permissions\" rel=\"ManyToManyRel\">\n            <object>\n                <natural>add_user</natural>\n                <natural>auth</natural>\n                <natural>user</natural>\n            </object>\n            <object>\n                <natural>delete_user</natural>\n                <natural>auth</natural>\n                <natural>user</natural>\n            </object>\n        </field>\n    </object>\n    <object pk=\"3\" model=\"fixtures.person\">\n        <field type=\"CharField\" name=\"name\">\n            <natural>Artist formerly known as &quot;Prince&quot;</natural>\n        </field>\n    </object>\n    <object pk=\"3\" model=\"fixtures.visa\">\n        <field type=\"CharField\" name=\"person\">\n            <natural>Artist formerly known as &quot;Prince&quot;</natural>\n        </field>\n        <field to=\"auth.permission\" name=\"permissions\" rel=\"ManyToManyRel\">\n            <object>\n                <natural>change_user</natural>\n                <natural>auth</natural>\n                <natural>user</natural>\n            </object>\n        </field>\n    </object>\n    <object pk=\"1\" model=\"fixtures.book\">\n        <field type=\"CharField\" name=\"name\">Music for all ages</field>\n        <field to=\"fixtures.person\" name=\"authors\" rel=\"ManyToManyRel\">\n            <object>\n                <natural>Django Reinhardt</natural>\n            </object>\n            <object>\n                <natural>Artist formerly known as &quot;Prince&quot;</natural>\n            </object>\n        </field>\n    </object>\n</django-objects>\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/fixtures/fixtures/initial_data.json",
    "content": "[\n    {\n        \"pk\": \"10\",\n        \"model\": \"fixtures.book\",\n        \"fields\": {\n            \"name\": \"Achieving self-awareness of Python programs\"\n        }\n    }\n]\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/fixtures/fixtures/invalid.json",
    "content": "[\n    {\n        \"pk\": \"1\",\n        \"model\": \"fixtures.article\",\n        \"fields\": {\n            \"headline\": \"Breaking news\",\n            \"pub_date\": null\n        }\n    }\n]\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/fixtures/models.py",
    "content": "\"\"\"\n37. Fixtures.\n\nFixtures are a way of loading data into the database in bulk. Fixure data\ncan be stored in any serializable format (including JSON and XML). Fixtures\nare identified by name, and are stored in either a directory named 'fixtures'\nin the application directory, or in one of the directories named in the\n``FIXTURE_DIRS`` setting.\n\"\"\"\n\nfrom django.contrib.auth.models import Permission\nfrom django.contrib.contenttypes import generic\nfrom django.contrib.contenttypes.models import ContentType\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n@python_2_unicode_compatible\nclass Category(models.Model):\n    title = models.CharField(max_length=100)\n    description = models.TextField()\n\n    def __str__(self):\n        return self.title\n\n    class Meta:\n        ordering = ('title',)\n\n@python_2_unicode_compatible\nclass Article(models.Model):\n    headline = models.CharField(max_length=100, default='Default headline')\n    pub_date = models.DateTimeField()\n\n    def __str__(self):\n        return self.headline\n\n    class Meta:\n        ordering = ('-pub_date', 'headline')\n\n@python_2_unicode_compatible\nclass Blog(models.Model):\n    name = models.CharField(max_length=100)\n    featured = models.ForeignKey(Article, related_name='fixtures_featured_set')\n    articles = models.ManyToManyField(Article, blank=True,\n                                      related_name='fixtures_articles_set')\n\n    def __str__(self):\n        return self.name\n\n\n@python_2_unicode_compatible\nclass Tag(models.Model):\n    name = models.CharField(max_length=100)\n    tagged_type = models.ForeignKey(ContentType, related_name=\"fixtures_tag_set\")\n    tagged_id = models.PositiveIntegerField(default=0)\n    tagged = generic.GenericForeignKey(ct_field='tagged_type',\n                                       fk_field='tagged_id')\n\n    def __str__(self):\n        return '<%s: %s> tagged \"%s\"' % (self.tagged.__class__.__name__,\n                                         self.tagged, self.name)\n\nclass PersonManager(models.Manager):\n    def get_by_natural_key(self, name):\n        return self.get(name=name)\n\n@python_2_unicode_compatible\nclass Person(models.Model):\n    objects = PersonManager()\n    name = models.CharField(max_length=100)\n    def __str__(self):\n        return self.name\n\n    class Meta:\n        ordering = ('name',)\n\n    def natural_key(self):\n        return (self.name,)\n\nclass SpyManager(PersonManager):\n    def get_query_set(self):\n        return super(SpyManager, self).get_query_set().filter(cover_blown=False)\n\nclass Spy(Person):\n    objects = SpyManager()\n    cover_blown = models.BooleanField(default=False)\n\n@python_2_unicode_compatible\nclass Visa(models.Model):\n    person = models.ForeignKey(Person)\n    permissions = models.ManyToManyField(Permission, blank=True)\n\n    def __str__(self):\n        return '%s %s' % (self.person.name,\n                          ', '.join(p.name for p in self.permissions.all()))\n\n@python_2_unicode_compatible\nclass Book(models.Model):\n    name = models.CharField(max_length=100)\n    authors = models.ManyToManyField(Person)\n\n    def __str__(self):\n        authors = ' and '.join(a.name for a in self.authors.all())\n        return '%s by %s' % (self.name, authors) if authors else self.name\n\n    class Meta:\n        ordering = ('name',)\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/fixtures/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom django.contrib.sites.models import Site\nfrom django.core import management\nfrom django.db import connection, IntegrityError\nfrom django.test import TestCase, TransactionTestCase, skipUnlessDBFeature\nfrom django.utils import six\n\nfrom .models import Article, Book, Spy, Tag, Visa\n\n\nclass TestCaseFixtureLoadingTests(TestCase):\n    fixtures = ['fixture1.json', 'fixture2.json']\n\n    def testClassFixtures(self):\n        \"Check that test case has installed 3 fixture objects\"\n        self.assertEqual(Article.objects.count(), 3)\n        self.assertQuerysetEqual(Article.objects.all(), [\n            '<Article: Django conquers world!>',\n            '<Article: Copyright is fine the way it is>',\n            '<Article: Poker has no place on ESPN>',\n        ])\n\n\nclass DumpDataAssertMixin(object):\n\n    def _dumpdata_assert(self, args, output, format='json', natural_keys=False,\n                         use_base_manager=False, exclude_list=[]):\n        new_io = six.StringIO()\n        management.call_command('dumpdata', *args, **{'format': format,\n                                                      'stdout': new_io,\n                                                      'stderr': new_io,\n                                                      'use_natural_keys': natural_keys,\n                                                      'use_base_manager': use_base_manager,\n                                                      'exclude': exclude_list})\n        command_output = new_io.getvalue().strip()\n        if format == \"json\":\n            self.assertJSONEqual(command_output, output)\n        elif format == \"xml\":\n            self.assertXMLEqual(command_output, output)\n        else:\n            self.assertEqual(command_output, output)\n\n\nclass FixtureLoadingTests(DumpDataAssertMixin, TestCase):\n\n    def test_initial_data(self):\n        # syncdb introduces 1 initial data object from initial_data.json.\n        self.assertQuerysetEqual(Book.objects.all(), [\n            '<Book: Achieving self-awareness of Python programs>'\n        ])\n\n    def test_loading_and_dumping(self):\n        Site.objects.all().delete()\n        # Load fixture 1. Single JSON file, with two objects.\n        management.call_command('loaddata', 'fixture1.json', verbosity=0, commit=False)\n        self.assertQuerysetEqual(Article.objects.all(), [\n            '<Article: Time to reform copyright>',\n            '<Article: Poker has no place on ESPN>',\n        ])\n\n        # Dump the current contents of the database as a JSON fixture\n        self._dumpdata_assert(['fixtures'], '[{\"pk\": 1, \"model\": \"fixtures.category\", \"fields\": {\"description\": \"Latest news stories\", \"title\": \"News Stories\"}}, {\"pk\": 2, \"model\": \"fixtures.article\", \"fields\": {\"headline\": \"Poker has no place on ESPN\", \"pub_date\": \"2006-06-16T12:00:00\"}}, {\"pk\": 3, \"model\": \"fixtures.article\", \"fields\": {\"headline\": \"Time to reform copyright\", \"pub_date\": \"2006-06-16T13:00:00\"}}, {\"pk\": 10, \"model\": \"fixtures.book\", \"fields\": {\"name\": \"Achieving self-awareness of Python programs\", \"authors\": []}}]')\n\n        # Try just dumping the contents of fixtures.Category\n        self._dumpdata_assert(['fixtures.Category'], '[{\"pk\": 1, \"model\": \"fixtures.category\", \"fields\": {\"description\": \"Latest news stories\", \"title\": \"News Stories\"}}]')\n\n        # ...and just fixtures.Article\n        self._dumpdata_assert(['fixtures.Article'], '[{\"pk\": 2, \"model\": \"fixtures.article\", \"fields\": {\"headline\": \"Poker has no place on ESPN\", \"pub_date\": \"2006-06-16T12:00:00\"}}, {\"pk\": 3, \"model\": \"fixtures.article\", \"fields\": {\"headline\": \"Time to reform copyright\", \"pub_date\": \"2006-06-16T13:00:00\"}}]')\n\n        # ...and both\n        self._dumpdata_assert(['fixtures.Category', 'fixtures.Article'], '[{\"pk\": 1, \"model\": \"fixtures.category\", \"fields\": {\"description\": \"Latest news stories\", \"title\": \"News Stories\"}}, {\"pk\": 2, \"model\": \"fixtures.article\", \"fields\": {\"headline\": \"Poker has no place on ESPN\", \"pub_date\": \"2006-06-16T12:00:00\"}}, {\"pk\": 3, \"model\": \"fixtures.article\", \"fields\": {\"headline\": \"Time to reform copyright\", \"pub_date\": \"2006-06-16T13:00:00\"}}]')\n\n        # Specify a specific model twice\n        self._dumpdata_assert(['fixtures.Article', 'fixtures.Article'], '[{\"pk\": 2, \"model\": \"fixtures.article\", \"fields\": {\"headline\": \"Poker has no place on ESPN\", \"pub_date\": \"2006-06-16T12:00:00\"}}, {\"pk\": 3, \"model\": \"fixtures.article\", \"fields\": {\"headline\": \"Time to reform copyright\", \"pub_date\": \"2006-06-16T13:00:00\"}}]')\n\n        # Specify a dump that specifies Article both explicitly and implicitly\n        self._dumpdata_assert(['fixtures.Article', 'fixtures'], '[{\"pk\": 1, \"model\": \"fixtures.category\", \"fields\": {\"description\": \"Latest news stories\", \"title\": \"News Stories\"}}, {\"pk\": 2, \"model\": \"fixtures.article\", \"fields\": {\"headline\": \"Poker has no place on ESPN\", \"pub_date\": \"2006-06-16T12:00:00\"}}, {\"pk\": 3, \"model\": \"fixtures.article\", \"fields\": {\"headline\": \"Time to reform copyright\", \"pub_date\": \"2006-06-16T13:00:00\"}}, {\"pk\": 10, \"model\": \"fixtures.book\", \"fields\": {\"name\": \"Achieving self-awareness of Python programs\", \"authors\": []}}]')\n\n        # Same again, but specify in the reverse order\n        self._dumpdata_assert(['fixtures'], '[{\"pk\": 1, \"model\": \"fixtures.category\", \"fields\": {\"description\": \"Latest news stories\", \"title\": \"News Stories\"}}, {\"pk\": 2, \"model\": \"fixtures.article\", \"fields\": {\"headline\": \"Poker has no place on ESPN\", \"pub_date\": \"2006-06-16T12:00:00\"}}, {\"pk\": 3, \"model\": \"fixtures.article\", \"fields\": {\"headline\": \"Time to reform copyright\", \"pub_date\": \"2006-06-16T13:00:00\"}}, {\"pk\": 10, \"model\": \"fixtures.book\", \"fields\": {\"name\": \"Achieving self-awareness of Python programs\", \"authors\": []}}]')\n\n        # Specify one model from one application, and an entire other application.\n        self._dumpdata_assert(['fixtures.Category', 'sites'], '[{\"pk\": 1, \"model\": \"fixtures.category\", \"fields\": {\"description\": \"Latest news stories\", \"title\": \"News Stories\"}}, {\"pk\": 1, \"model\": \"sites.site\", \"fields\": {\"domain\": \"example.com\", \"name\": \"example.com\"}}]')\n\n        # Load fixture 2. JSON file imported by default. Overwrites some existing objects\n        management.call_command('loaddata', 'fixture2.json', verbosity=0, commit=False)\n        self.assertQuerysetEqual(Article.objects.all(), [\n            '<Article: Django conquers world!>',\n            '<Article: Copyright is fine the way it is>',\n            '<Article: Poker has no place on ESPN>',\n        ])\n\n        # Load fixture 3, XML format.\n        management.call_command('loaddata', 'fixture3.xml', verbosity=0, commit=False)\n        self.assertQuerysetEqual(Article.objects.all(), [\n            '<Article: XML identified as leading cause of cancer>',\n            '<Article: Django conquers world!>',\n            '<Article: Copyright is fine the way it is>',\n            '<Article: Poker on TV is great!>',\n        ])\n\n        # Load fixture 6, JSON file with dynamic ContentType fields. Testing ManyToOne.\n        management.call_command('loaddata', 'fixture6.json', verbosity=0, commit=False)\n        self.assertQuerysetEqual(Tag.objects.all(), [\n            '<Tag: <Article: Copyright is fine the way it is> tagged \"copyright\">',\n            '<Tag: <Article: Copyright is fine the way it is> tagged \"law\">'\n        ])\n\n        # Load fixture 7, XML file with dynamic ContentType fields. Testing ManyToOne.\n        management.call_command('loaddata', 'fixture7.xml', verbosity=0, commit=False)\n        self.assertQuerysetEqual(Tag.objects.all(), [\n            '<Tag: <Article: Copyright is fine the way it is> tagged \"copyright\">',\n            '<Tag: <Article: Copyright is fine the way it is> tagged \"legal\">',\n            '<Tag: <Article: Django conquers world!> tagged \"django\">',\n            '<Tag: <Article: Django conquers world!> tagged \"world domination\">'\n        ])\n\n        # Load fixture 8, JSON file with dynamic Permission fields. Testing ManyToMany.\n        management.call_command('loaddata', 'fixture8.json', verbosity=0, commit=False)\n        self.assertQuerysetEqual(Visa.objects.all(), [\n            '<Visa: Django Reinhardt Can add user, Can change user, Can delete user>',\n            '<Visa: Stephane Grappelli Can add user>',\n            '<Visa: Prince >'\n        ])\n\n        # Load fixture 9, XML file with dynamic Permission fields. Testing ManyToMany.\n        management.call_command('loaddata', 'fixture9.xml', verbosity=0, commit=False)\n        self.assertQuerysetEqual(Visa.objects.all(), [\n            '<Visa: Django Reinhardt Can add user, Can change user, Can delete user>',\n            '<Visa: Stephane Grappelli Can add user, Can delete user>',\n            '<Visa: Artist formerly known as \"Prince\" Can change user>'\n        ])\n\n        self.assertQuerysetEqual(Book.objects.all(), [\n            '<Book: Achieving self-awareness of Python programs>',\n            '<Book: Music for all ages by Artist formerly known as \"Prince\" and Django Reinhardt>'\n        ])\n\n        # Load a fixture that doesn't exist\n        management.call_command('loaddata', 'unknown.json', verbosity=0, commit=False)\n\n        # object list is unaffected\n        self.assertQuerysetEqual(Article.objects.all(), [\n            '<Article: XML identified as leading cause of cancer>',\n            '<Article: Django conquers world!>',\n            '<Article: Copyright is fine the way it is>',\n            '<Article: Poker on TV is great!>',\n        ])\n\n        # By default, you get raw keys on dumpdata\n        self._dumpdata_assert(['fixtures.book'], '[{\"pk\": 1, \"model\": \"fixtures.book\", \"fields\": {\"name\": \"Music for all ages\", \"authors\": [3, 1]}}, {\"pk\": 10, \"model\": \"fixtures.book\", \"fields\": {\"name\": \"Achieving self-awareness of Python programs\", \"authors\": []}}]')\n\n        # But you can get natural keys if you ask for them and they are available\n        self._dumpdata_assert(['fixtures.book'], '[{\"pk\": 1, \"model\": \"fixtures.book\", \"fields\": {\"name\": \"Music for all ages\", \"authors\": [[\"Artist formerly known as \\\\\"Prince\\\\\"\"], [\"Django Reinhardt\"]]}}, {\"pk\": 10, \"model\": \"fixtures.book\", \"fields\": {\"name\": \"Achieving self-awareness of Python programs\", \"authors\": []}}]', natural_keys=True)\n\n        # Dump the current contents of the database as a JSON fixture\n        self._dumpdata_assert(['fixtures'], '[{\"pk\": 1, \"model\": \"fixtures.category\", \"fields\": {\"description\": \"Latest news stories\", \"title\": \"News Stories\"}}, {\"pk\": 2, \"model\": \"fixtures.article\", \"fields\": {\"headline\": \"Poker on TV is great!\", \"pub_date\": \"2006-06-16T11:00:00\"}}, {\"pk\": 3, \"model\": \"fixtures.article\", \"fields\": {\"headline\": \"Copyright is fine the way it is\", \"pub_date\": \"2006-06-16T14:00:00\"}}, {\"pk\": 4, \"model\": \"fixtures.article\", \"fields\": {\"headline\": \"Django conquers world!\", \"pub_date\": \"2006-06-16T15:00:00\"}}, {\"pk\": 5, \"model\": \"fixtures.article\", \"fields\": {\"headline\": \"XML identified as leading cause of cancer\", \"pub_date\": \"2006-06-16T16:00:00\"}}, {\"pk\": 1, \"model\": \"fixtures.tag\", \"fields\": {\"tagged_type\": [\"fixtures\", \"article\"], \"name\": \"copyright\", \"tagged_id\": 3}}, {\"pk\": 2, \"model\": \"fixtures.tag\", \"fields\": {\"tagged_type\": [\"fixtures\", \"article\"], \"name\": \"legal\", \"tagged_id\": 3}}, {\"pk\": 3, \"model\": \"fixtures.tag\", \"fields\": {\"tagged_type\": [\"fixtures\", \"article\"], \"name\": \"django\", \"tagged_id\": 4}}, {\"pk\": 4, \"model\": \"fixtures.tag\", \"fields\": {\"tagged_type\": [\"fixtures\", \"article\"], \"name\": \"world domination\", \"tagged_id\": 4}}, {\"pk\": 1, \"model\": \"fixtures.person\", \"fields\": {\"name\": \"Django Reinhardt\"}}, {\"pk\": 2, \"model\": \"fixtures.person\", \"fields\": {\"name\": \"Stephane Grappelli\"}}, {\"pk\": 3, \"model\": \"fixtures.person\", \"fields\": {\"name\": \"Artist formerly known as \\\\\"Prince\\\\\"\"}}, {\"pk\": 1, \"model\": \"fixtures.visa\", \"fields\": {\"person\": [\"Django Reinhardt\"], \"permissions\": [[\"add_user\", \"auth\", \"user\"], [\"change_user\", \"auth\", \"user\"], [\"delete_user\", \"auth\", \"user\"]]}}, {\"pk\": 2, \"model\": \"fixtures.visa\", \"fields\": {\"person\": [\"Stephane Grappelli\"], \"permissions\": [[\"add_user\", \"auth\", \"user\"], [\"delete_user\", \"auth\", \"user\"]]}}, {\"pk\": 3, \"model\": \"fixtures.visa\", \"fields\": {\"person\": [\"Artist formerly known as \\\\\"Prince\\\\\"\"], \"permissions\": [[\"change_user\", \"auth\", \"user\"]]}}, {\"pk\": 1, \"model\": \"fixtures.book\", \"fields\": {\"name\": \"Music for all ages\", \"authors\": [[\"Artist formerly known as \\\\\"Prince\\\\\"\"], [\"Django Reinhardt\"]]}}, {\"pk\": 10, \"model\": \"fixtures.book\", \"fields\": {\"name\": \"Achieving self-awareness of Python programs\", \"authors\": []}}]', natural_keys=True)\n\n        # Dump the current contents of the database as an XML fixture\n        self._dumpdata_assert(['fixtures'], \"\"\"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<django-objects version=\"1.0\"><object pk=\"1\" model=\"fixtures.category\"><field type=\"CharField\" name=\"title\">News Stories</field><field type=\"TextField\" name=\"description\">Latest news stories</field></object><object pk=\"2\" model=\"fixtures.article\"><field type=\"CharField\" name=\"headline\">Poker on TV is great!</field><field type=\"DateTimeField\" name=\"pub_date\">2006-06-16T11:00:00</field></object><object pk=\"3\" model=\"fixtures.article\"><field type=\"CharField\" name=\"headline\">Copyright is fine the way it is</field><field type=\"DateTimeField\" name=\"pub_date\">2006-06-16T14:00:00</field></object><object pk=\"4\" model=\"fixtures.article\"><field type=\"CharField\" name=\"headline\">Django conquers world!</field><field type=\"DateTimeField\" name=\"pub_date\">2006-06-16T15:00:00</field></object><object pk=\"5\" model=\"fixtures.article\"><field type=\"CharField\" name=\"headline\">XML identified as leading cause of cancer</field><field type=\"DateTimeField\" name=\"pub_date\">2006-06-16T16:00:00</field></object><object pk=\"1\" model=\"fixtures.tag\"><field type=\"CharField\" name=\"name\">copyright</field><field to=\"contenttypes.contenttype\" name=\"tagged_type\" rel=\"ManyToOneRel\"><natural>fixtures</natural><natural>article</natural></field><field type=\"PositiveIntegerField\" name=\"tagged_id\">3</field></object><object pk=\"2\" model=\"fixtures.tag\"><field type=\"CharField\" name=\"name\">legal</field><field to=\"contenttypes.contenttype\" name=\"tagged_type\" rel=\"ManyToOneRel\"><natural>fixtures</natural><natural>article</natural></field><field type=\"PositiveIntegerField\" name=\"tagged_id\">3</field></object><object pk=\"3\" model=\"fixtures.tag\"><field type=\"CharField\" name=\"name\">django</field><field to=\"contenttypes.contenttype\" name=\"tagged_type\" rel=\"ManyToOneRel\"><natural>fixtures</natural><natural>article</natural></field><field type=\"PositiveIntegerField\" name=\"tagged_id\">4</field></object><object pk=\"4\" model=\"fixtures.tag\"><field type=\"CharField\" name=\"name\">world domination</field><field to=\"contenttypes.contenttype\" name=\"tagged_type\" rel=\"ManyToOneRel\"><natural>fixtures</natural><natural>article</natural></field><field type=\"PositiveIntegerField\" name=\"tagged_id\">4</field></object><object pk=\"1\" model=\"fixtures.person\"><field type=\"CharField\" name=\"name\">Django Reinhardt</field></object><object pk=\"2\" model=\"fixtures.person\"><field type=\"CharField\" name=\"name\">Stephane Grappelli</field></object><object pk=\"3\" model=\"fixtures.person\"><field type=\"CharField\" name=\"name\">Artist formerly known as \"Prince\"</field></object><object pk=\"1\" model=\"fixtures.visa\"><field to=\"fixtures.person\" name=\"person\" rel=\"ManyToOneRel\"><natural>Django Reinhardt</natural></field><field to=\"auth.permission\" name=\"permissions\" rel=\"ManyToManyRel\"><object><natural>add_user</natural><natural>auth</natural><natural>user</natural></object><object><natural>change_user</natural><natural>auth</natural><natural>user</natural></object><object><natural>delete_user</natural><natural>auth</natural><natural>user</natural></object></field></object><object pk=\"2\" model=\"fixtures.visa\"><field to=\"fixtures.person\" name=\"person\" rel=\"ManyToOneRel\"><natural>Stephane Grappelli</natural></field><field to=\"auth.permission\" name=\"permissions\" rel=\"ManyToManyRel\"><object><natural>add_user</natural><natural>auth</natural><natural>user</natural></object><object><natural>delete_user</natural><natural>auth</natural><natural>user</natural></object></field></object><object pk=\"3\" model=\"fixtures.visa\"><field to=\"fixtures.person\" name=\"person\" rel=\"ManyToOneRel\"><natural>Artist formerly known as \"Prince\"</natural></field><field to=\"auth.permission\" name=\"permissions\" rel=\"ManyToManyRel\"><object><natural>change_user</natural><natural>auth</natural><natural>user</natural></object></field></object><object pk=\"1\" model=\"fixtures.book\"><field type=\"CharField\" name=\"name\">Music for all ages</field><field to=\"fixtures.person\" name=\"authors\" rel=\"ManyToManyRel\"><object><natural>Artist formerly known as \"Prince\"</natural></object><object><natural>Django Reinhardt</natural></object></field></object><object pk=\"10\" model=\"fixtures.book\"><field type=\"CharField\" name=\"name\">Achieving self-awareness of Python programs</field><field to=\"fixtures.person\" name=\"authors\" rel=\"ManyToManyRel\"></field></object></django-objects>\"\"\", format='xml', natural_keys=True)\n\n    def test_dumpdata_with_excludes(self):\n        # Load fixture1 which has a site, two articles, and a category\n        Site.objects.all().delete()\n        management.call_command('loaddata', 'fixture1.json', verbosity=0, commit=False)\n\n        # Excluding fixtures app should only leave sites\n        self._dumpdata_assert(\n            ['sites', 'fixtures'],\n            '[{\"pk\": 1, \"model\": \"sites.site\", \"fields\": {\"domain\": \"example.com\", \"name\": \"example.com\"}}]',\n            exclude_list=['fixtures'])\n\n        # Excluding fixtures.Article/Book should leave fixtures.Category\n        self._dumpdata_assert(\n            ['sites', 'fixtures'],\n            '[{\"pk\": 1, \"model\": \"sites.site\", \"fields\": {\"domain\": \"example.com\", \"name\": \"example.com\"}}, {\"pk\": 1, \"model\": \"fixtures.category\", \"fields\": {\"description\": \"Latest news stories\", \"title\": \"News Stories\"}}]',\n            exclude_list=['fixtures.Article', 'fixtures.Book'])\n\n        # Excluding fixtures and fixtures.Article/Book should be a no-op\n        self._dumpdata_assert(\n            ['sites', 'fixtures'],\n            '[{\"pk\": 1, \"model\": \"sites.site\", \"fields\": {\"domain\": \"example.com\", \"name\": \"example.com\"}}, {\"pk\": 1, \"model\": \"fixtures.category\", \"fields\": {\"description\": \"Latest news stories\", \"title\": \"News Stories\"}}]',\n            exclude_list=['fixtures.Article', 'fixtures.Book'])\n\n        # Excluding sites and fixtures.Article/Book should only leave fixtures.Category\n        self._dumpdata_assert(\n            ['sites', 'fixtures'],\n            '[{\"pk\": 1, \"model\": \"fixtures.category\", \"fields\": {\"description\": \"Latest news stories\", \"title\": \"News Stories\"}}]',\n            exclude_list=['fixtures.Article', 'fixtures.Book', 'sites'])\n\n        # Excluding a bogus app should throw an error\n        with six.assertRaisesRegex(self, management.CommandError,\n                \"Unknown app in excludes: foo_app\"):\n            self._dumpdata_assert(['fixtures', 'sites'], '', exclude_list=['foo_app'])\n\n        # Excluding a bogus model should throw an error\n        with six.assertRaisesRegex(self, management.CommandError,\n                \"Unknown model in excludes: fixtures.FooModel\"):\n            self._dumpdata_assert(['fixtures', 'sites'], '', exclude_list=['fixtures.FooModel'])\n\n    def test_dumpdata_with_filtering_manager(self):\n        spy1 = Spy.objects.create(name='Paul')\n        spy2 = Spy.objects.create(name='Alex', cover_blown=True)\n        self.assertQuerysetEqual(Spy.objects.all(),\n                                 ['<Spy: Paul>'])\n        # Use the default manager\n        self._dumpdata_assert(['fixtures.Spy'], '[{\"pk\": %d, \"model\": \"fixtures.spy\", \"fields\": {\"cover_blown\": false}}]' % spy1.pk)\n        # Dump using Django's base manager. Should return all objects,\n        # even those normally filtered by the manager\n        self._dumpdata_assert(['fixtures.Spy'], '[{\"pk\": %d, \"model\": \"fixtures.spy\", \"fields\": {\"cover_blown\": true}}, {\"pk\": %d, \"model\": \"fixtures.spy\", \"fields\": {\"cover_blown\": false}}]' % (spy2.pk, spy1.pk), use_base_manager=True)\n\n    def test_compress_format_loading(self):\n        # Load fixture 4 (compressed), using format specification\n        management.call_command('loaddata', 'fixture4.json', verbosity=0, commit=False)\n        self.assertQuerysetEqual(Article.objects.all(), [\n            '<Article: Django pets kitten>',\n        ])\n\n    def test_compressed_specified_loading(self):\n        # Load fixture 5 (compressed), using format *and* compression specification\n        management.call_command('loaddata', 'fixture5.json.zip', verbosity=0, commit=False)\n        self.assertQuerysetEqual(Article.objects.all(), [\n            '<Article: WoW subscribers now outnumber readers>',\n        ])\n\n    def test_compressed_loading(self):\n        # Load fixture 5 (compressed), only compression specification\n        management.call_command('loaddata', 'fixture5.zip', verbosity=0, commit=False)\n        self.assertQuerysetEqual(Article.objects.all(), [\n            '<Article: WoW subscribers now outnumber readers>',\n        ])\n\n    def test_ambiguous_compressed_fixture(self):\n        # The name \"fixture5\" is ambigous, so loading it will raise an error\n        with self.assertRaises(management.CommandError) as cm:\n            management.call_command('loaddata', 'fixture5', verbosity=0, commit=False)\n            self.assertIn(\"Multiple fixtures named 'fixture5'\", cm.exception.args[0])\n\n    def test_db_loading(self):\n        # Load db fixtures 1 and 2. These will load using the 'default' database identifier implicitly\n        management.call_command('loaddata', 'db_fixture_1', verbosity=0, commit=False)\n        management.call_command('loaddata', 'db_fixture_2', verbosity=0, commit=False)\n        self.assertQuerysetEqual(Article.objects.all(), [\n            '<Article: Who needs more than one database?>',\n            '<Article: Who needs to use compressed data?>',\n        ])\n\n    def test_loaddata_error_message(self):\n        \"\"\"\n        Verifies that loading a fixture which contains an invalid object\n        outputs an error message which contains the pk of the object\n        that triggered the error.\n        \"\"\"\n        # MySQL needs a little prodding to reject invalid data.\n        # This won't affect other tests because the database connection\n        # is closed at the end of each test.\n        if connection.vendor == 'mysql':\n            connection.cursor().execute(\"SET sql_mode = 'TRADITIONAL'\")\n        with self.assertRaises(IntegrityError) as cm:\n            management.call_command('loaddata', 'invalid.json', verbosity=0, commit=False)\n            self.assertIn(\"Could not load fixtures.Article(pk=1):\", cm.exception.args[0])\n\n    def test_loading_using(self):\n        # Load db fixtures 1 and 2. These will load using the 'default' database identifier explicitly\n        management.call_command('loaddata', 'db_fixture_1', verbosity=0, using='default', commit=False)\n        management.call_command('loaddata', 'db_fixture_2', verbosity=0, using='default', commit=False)\n        self.assertQuerysetEqual(Article.objects.all(), [\n            '<Article: Who needs more than one database?>',\n            '<Article: Who needs to use compressed data?>',\n        ])\n\n    def test_unmatched_identifier_loading(self):\n        # Try to load db fixture 3. This won't load because the database identifier doesn't match\n        management.call_command('loaddata', 'db_fixture_3', verbosity=0, commit=False)\n        self.assertQuerysetEqual(Article.objects.all(), [])\n\n        management.call_command('loaddata', 'db_fixture_3', verbosity=0, using='default', commit=False)\n        self.assertQuerysetEqual(Article.objects.all(), [])\n\n    def test_output_formats(self):\n        # Load back in fixture 1, we need the articles from it\n        management.call_command('loaddata', 'fixture1', verbosity=0, commit=False)\n\n        # Try to load fixture 6 using format discovery\n        management.call_command('loaddata', 'fixture6', verbosity=0, commit=False)\n        self.assertQuerysetEqual(Tag.objects.all(), [\n            '<Tag: <Article: Time to reform copyright> tagged \"copyright\">',\n            '<Tag: <Article: Time to reform copyright> tagged \"law\">'\n        ])\n\n        # Dump the current contents of the database as a JSON fixture\n        self._dumpdata_assert(['fixtures'], '[{\"pk\": 1, \"model\": \"fixtures.category\", \"fields\": {\"description\": \"Latest news stories\", \"title\": \"News Stories\"}}, {\"pk\": 2, \"model\": \"fixtures.article\", \"fields\": {\"headline\": \"Poker has no place on ESPN\", \"pub_date\": \"2006-06-16T12:00:00\"}}, {\"pk\": 3, \"model\": \"fixtures.article\", \"fields\": {\"headline\": \"Time to reform copyright\", \"pub_date\": \"2006-06-16T13:00:00\"}}, {\"pk\": 1, \"model\": \"fixtures.tag\", \"fields\": {\"tagged_type\": [\"fixtures\", \"article\"], \"name\": \"copyright\", \"tagged_id\": 3}}, {\"pk\": 2, \"model\": \"fixtures.tag\", \"fields\": {\"tagged_type\": [\"fixtures\", \"article\"], \"name\": \"law\", \"tagged_id\": 3}}, {\"pk\": 1, \"model\": \"fixtures.person\", \"fields\": {\"name\": \"Django Reinhardt\"}}, {\"pk\": 2, \"model\": \"fixtures.person\", \"fields\": {\"name\": \"Stephane Grappelli\"}}, {\"pk\": 3, \"model\": \"fixtures.person\", \"fields\": {\"name\": \"Prince\"}}, {\"pk\": 10, \"model\": \"fixtures.book\", \"fields\": {\"name\": \"Achieving self-awareness of Python programs\", \"authors\": []}}]', natural_keys=True)\n\n        # Dump the current contents of the database as an XML fixture\n        self._dumpdata_assert(['fixtures'], \"\"\"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<django-objects version=\"1.0\"><object pk=\"1\" model=\"fixtures.category\"><field type=\"CharField\" name=\"title\">News Stories</field><field type=\"TextField\" name=\"description\">Latest news stories</field></object><object pk=\"2\" model=\"fixtures.article\"><field type=\"CharField\" name=\"headline\">Poker has no place on ESPN</field><field type=\"DateTimeField\" name=\"pub_date\">2006-06-16T12:00:00</field></object><object pk=\"3\" model=\"fixtures.article\"><field type=\"CharField\" name=\"headline\">Time to reform copyright</field><field type=\"DateTimeField\" name=\"pub_date\">2006-06-16T13:00:00</field></object><object pk=\"1\" model=\"fixtures.tag\"><field type=\"CharField\" name=\"name\">copyright</field><field to=\"contenttypes.contenttype\" name=\"tagged_type\" rel=\"ManyToOneRel\"><natural>fixtures</natural><natural>article</natural></field><field type=\"PositiveIntegerField\" name=\"tagged_id\">3</field></object><object pk=\"2\" model=\"fixtures.tag\"><field type=\"CharField\" name=\"name\">law</field><field to=\"contenttypes.contenttype\" name=\"tagged_type\" rel=\"ManyToOneRel\"><natural>fixtures</natural><natural>article</natural></field><field type=\"PositiveIntegerField\" name=\"tagged_id\">3</field></object><object pk=\"1\" model=\"fixtures.person\"><field type=\"CharField\" name=\"name\">Django Reinhardt</field></object><object pk=\"2\" model=\"fixtures.person\"><field type=\"CharField\" name=\"name\">Stephane Grappelli</field></object><object pk=\"3\" model=\"fixtures.person\"><field type=\"CharField\" name=\"name\">Prince</field></object><object pk=\"10\" model=\"fixtures.book\"><field type=\"CharField\" name=\"name\">Achieving self-awareness of Python programs</field><field to=\"fixtures.person\" name=\"authors\" rel=\"ManyToManyRel\"></field></object></django-objects>\"\"\", format='xml', natural_keys=True)\n\n\nclass FixtureTransactionTests(DumpDataAssertMixin, TransactionTestCase):\n\n    @skipUnlessDBFeature('supports_forward_references')\n    def test_format_discovery(self):\n        # Load fixture 1 again, using format discovery\n        management.call_command('loaddata', 'fixture1', verbosity=0, commit=False)\n        self.assertQuerysetEqual(Article.objects.all(), [\n            '<Article: Time to reform copyright>',\n            '<Article: Poker has no place on ESPN>',\n        ])\n\n        # Try to load fixture 2 using format discovery; this will fail\n        # because there are two fixture2's in the fixtures directory\n        with self.assertRaises(management.CommandError) as cm:\n            management.call_command('loaddata', 'fixture2', verbosity=0)\n            self.assertIn(\"Multiple fixtures named 'fixture2'\", cm.exception.args[0])\n\n        # object list is unaffected\n        self.assertQuerysetEqual(Article.objects.all(), [\n            '<Article: Time to reform copyright>',\n            '<Article: Poker has no place on ESPN>',\n        ])\n\n        # Dump the current contents of the database as a JSON fixture\n        self._dumpdata_assert(['fixtures'], '[{\"pk\": 1, \"model\": \"fixtures.category\", \"fields\": {\"description\": \"Latest news stories\", \"title\": \"News Stories\"}}, {\"pk\": 2, \"model\": \"fixtures.article\", \"fields\": {\"headline\": \"Poker has no place on ESPN\", \"pub_date\": \"2006-06-16T12:00:00\"}}, {\"pk\": 3, \"model\": \"fixtures.article\", \"fields\": {\"headline\": \"Time to reform copyright\", \"pub_date\": \"2006-06-16T13:00:00\"}}, {\"pk\": 10, \"model\": \"fixtures.book\", \"fields\": {\"name\": \"Achieving self-awareness of Python programs\", \"authors\": []}}]')\n\n        # Load fixture 4 (compressed), using format discovery\n        management.call_command('loaddata', 'fixture4', verbosity=0, commit=False)\n        self.assertQuerysetEqual(Article.objects.all(), [\n            '<Article: Django pets kitten>',\n            '<Article: Time to reform copyright>',\n            '<Article: Poker has no place on ESPN>',\n        ])\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/fixtures_model_package/__init__.py",
    "content": "\n\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/fixtures_model_package/fixtures/fixture1.json",
    "content": "[\n    {\n        \"pk\": \"2\", \n        \"model\": \"fixtures_model_package.article\", \n        \"fields\": {\n            \"headline\": \"Poker has no place on ESPN\", \n            \"pub_date\": \"2006-06-16 12:00:00\"\n        }\n    }, \n    {\n        \"pk\": \"3\", \n        \"model\": \"fixtures_model_package.article\", \n        \"fields\": {\n            \"headline\": \"Time to reform copyright\", \n            \"pub_date\": \"2006-06-16 13:00:00\"\n        }\n    }\n]\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/fixtures_model_package/fixtures/fixture2.json",
    "content": "[\n    {\n        \"pk\": \"3\", \n        \"model\": \"fixtures_model_package.article\", \n        \"fields\": {\n            \"headline\": \"Copyright is fine the way it is\", \n            \"pub_date\": \"2006-06-16 14:00:00\"\n        }\n    }, \n    {\n        \"pk\": \"4\", \n        \"model\": \"fixtures_model_package.article\", \n        \"fields\": {\n            \"headline\": \"Django conquers world!\", \n            \"pub_date\": \"2006-06-16 15:00:00\"\n        }\n    }\n]\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/fixtures_model_package/fixtures/fixture2.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<django-objects version=\"1.0\">\n    <object pk=\"2\" model=\"fixtures_model_package.article\">\n        <field type=\"CharField\" name=\"headline\">Poker on TV is great!</field>\n        <field type=\"DateTimeField\" name=\"pub_date\">2006-06-16 11:00:00</field>\n    </object>\n    <object pk=\"5\" model=\"fixtures_model_package.article\">\n        <field type=\"CharField\" name=\"headline\">XML identified as leading cause of cancer</field>\n        <field type=\"DateTimeField\" name=\"pub_date\">2006-06-16 16:00:00</field>\n    </object>\n</django-objects>\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/fixtures_model_package/fixtures/initial_data.json",
    "content": "[\n    {\n        \"pk\": \"10\",\n        \"model\": \"fixtures_model_package.book\",\n        \"fields\": {\n            \"name\": \"Achieving self-awareness of Python programs\"\n        }\n    }\n]\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/fixtures_model_package/models/__init__.py",
    "content": "from django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n@python_2_unicode_compatible\nclass Article(models.Model):\n    headline = models.CharField(max_length=100, default='Default headline')\n    pub_date = models.DateTimeField()\n\n    def __str__(self):\n        return self.headline\n\n    class Meta:\n        app_label = 'fixtures_model_package'\n        ordering = ('-pub_date', 'headline')\n\nclass Book(models.Model):\n    name = models.CharField(max_length=100)\n\n    class Meta:\n        ordering = ('name',)\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/fixtures_model_package/tests.py",
    "content": "from __future__ import unicode_literals\n\nfrom django.core import management\nfrom django.db import transaction\nfrom django.test import TestCase, TransactionTestCase\n\nfrom .models import Article, Book\n\n\nclass SampleTestCase(TestCase):\n    fixtures = ['fixture1.json', 'fixture2.json']\n\n    def testClassFixtures(self):\n        \"Test cases can load fixture objects into models defined in packages\"\n        self.assertEqual(Article.objects.count(), 3)\n        self.assertQuerysetEqual(\n            Article.objects.all(),[\n                \"Django conquers world!\",\n                \"Copyright is fine the way it is\",\n                \"Poker has no place on ESPN\",\n            ],\n            lambda a: a.headline\n        )\n\n\nclass TestNoInitialDataLoading(TransactionTestCase):\n    def test_syncdb(self):\n        with transaction.commit_manually():\n            Book.objects.all().delete()\n\n            management.call_command(\n                'syncdb',\n                verbosity=0,\n                load_initial_data=False\n            )\n            self.assertQuerysetEqual(Book.objects.all(), [])\n            transaction.rollback()\n\n    def test_flush(self):\n        # Test presence of fixture (flush called by TransactionTestCase)\n        self.assertQuerysetEqual(\n            Book.objects.all(), [\n                'Achieving self-awareness of Python programs'\n            ],\n            lambda a: a.name\n        )\n\n        with transaction.commit_manually():\n            management.call_command(\n                'flush',\n                verbosity=0,\n                interactive=False,\n                commit=False,\n                load_initial_data=False\n            )\n            self.assertQuerysetEqual(Book.objects.all(), [])\n            transaction.rollback()\n\n\nclass FixtureTestCase(TestCase):\n    def test_initial_data(self):\n        \"Fixtures can load initial data into models defined in packages\"\n        # syncdb introduces 1 initial data object from initial_data.json\n        self.assertQuerysetEqual(\n            Book.objects.all(), [\n                'Achieving self-awareness of Python programs'\n            ],\n            lambda a: a.name\n        )\n\n    def test_loaddata(self):\n        \"Fixtures can load data into models defined in packages\"\n        # Load fixture 1. Single JSON file, with two objects\n        management.call_command(\"loaddata\", \"fixture1.json\", verbosity=0, commit=False)\n        self.assertQuerysetEqual(\n            Article.objects.all(), [\n                \"Time to reform copyright\",\n                \"Poker has no place on ESPN\",\n            ],\n            lambda a: a.headline,\n        )\n\n        # Load fixture 2. JSON file imported by default. Overwrites some\n        # existing objects\n        management.call_command(\"loaddata\", \"fixture2.json\", verbosity=0, commit=False)\n        self.assertQuerysetEqual(\n            Article.objects.all(), [\n                \"Django conquers world!\",\n                \"Copyright is fine the way it is\",\n                \"Poker has no place on ESPN\",\n            ],\n            lambda a: a.headline,\n        )\n\n        # Load a fixture that doesn't exist\n        management.call_command(\"loaddata\", \"unknown.json\", verbosity=0, commit=False)\n        self.assertQuerysetEqual(\n            Article.objects.all(), [\n                \"Django conquers world!\",\n                \"Copyright is fine the way it is\",\n                \"Poker has no place on ESPN\",\n            ],\n            lambda a: a.headline,\n        )\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/force_insert_update/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/force_insert_update/models.py",
    "content": "\"\"\"\nTests for forcing insert and update queries (instead of Django's normal\nautomatic behavior).\n\"\"\"\nfrom django.db import models\n\n\nclass Counter(models.Model):\n    name = models.CharField(max_length = 10)\n    value = models.IntegerField()\n\nclass InheritedCounter(Counter):\n    tag = models.CharField(max_length=10)\n\nclass ProxyCounter(Counter):\n    class Meta:\n        proxy = True\n\nclass SubCounter(Counter):\n    pass\n\nclass WithCustomPK(models.Model):\n    name = models.IntegerField(primary_key=True)\n    value = models.IntegerField()\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/force_insert_update/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom django.db import transaction, IntegrityError, DatabaseError\nfrom django.test import TestCase\n\nfrom .models import (Counter, WithCustomPK, InheritedCounter, ProxyCounter,\n                     SubCounter)\n\n\nclass ForceTests(TestCase):\n    def test_force_update(self):\n        c = Counter.objects.create(name=\"one\", value=1)\n\n        # The normal case\n        c.value = 2\n        c.save()\n        # Same thing, via an update\n        c.value = 3\n        c.save(force_update=True)\n\n        # Won't work because force_update and force_insert are mutually\n        # exclusive\n        c.value = 4\n        self.assertRaises(ValueError, c.save, force_insert=True, force_update=True)\n\n        # Try to update something that doesn't have a primary key in the first\n        # place.\n        c1 = Counter(name=\"two\", value=2)\n        self.assertRaises(ValueError, c1.save, force_update=True)\n        c1.save(force_insert=True)\n\n        # Won't work because we can't insert a pk of the same value.\n        sid = transaction.savepoint()\n        c.value = 5\n        self.assertRaises(IntegrityError, c.save, force_insert=True)\n        transaction.savepoint_rollback(sid)\n\n        # Trying to update should still fail, even with manual primary keys, if\n        # the data isn't in the database already.\n        obj = WithCustomPK(name=1, value=1)\n        self.assertRaises(DatabaseError, obj.save, force_update=True)\n\n\nclass InheritanceTests(TestCase):\n    def test_force_update_on_inherited_model(self):\n        a = InheritedCounter(name=\"count\", value=1, tag=\"spam\")\n        a.save()\n        a.save(force_update=True)\n\n    def test_force_update_on_proxy_model(self):\n        a = ProxyCounter(name=\"count\", value=1)\n        a.save()\n        a.save(force_update=True)\n\n    def test_force_update_on_inherited_model_without_fields(self):\n        '''\n        Issue 13864: force_update fails on subclassed models, if they don't\n        specify custom fields.\n        '''\n        a = SubCounter(name=\"count\", value=1)\n        a.save()\n        a.value = 2\n        a.save(force_update=True)\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/generic_relations/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/generic_relations/models.py",
    "content": "\"\"\"\n34. Generic relations\n\nGeneric relations let an object have a foreign key to any object through a\ncontent-type/object-id field. A ``GenericForeignKey`` field can point to any\nobject, be it animal, vegetable, or mineral.\n\nThe canonical example is tags (although this example implementation is *far*\nfrom complete).\n\"\"\"\n\nfrom __future__ import unicode_literals\n\nfrom django.contrib.contenttypes import generic\nfrom django.contrib.contenttypes.models import ContentType\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n@python_2_unicode_compatible\nclass TaggedItem(models.Model):\n    \"\"\"A tag on an item.\"\"\"\n    tag = models.SlugField()\n    content_type = models.ForeignKey(ContentType)\n    object_id = models.PositiveIntegerField()\n\n    content_object = generic.GenericForeignKey()\n\n    class Meta:\n        ordering = [\"tag\", \"content_type__name\"]\n\n    def __str__(self):\n        return self.tag\n\nclass ValuableTaggedItem(TaggedItem):\n    value = models.PositiveIntegerField()\n\n@python_2_unicode_compatible\nclass Comparison(models.Model):\n    \"\"\"\n    A model that tests having multiple GenericForeignKeys\n    \"\"\"\n    comparative = models.CharField(max_length=50)\n\n    content_type1 = models.ForeignKey(ContentType, related_name=\"comparative1_set\")\n    object_id1 = models.PositiveIntegerField()\n\n    content_type2 = models.ForeignKey(ContentType,  related_name=\"comparative2_set\")\n    object_id2 = models.PositiveIntegerField()\n\n    first_obj = generic.GenericForeignKey(ct_field=\"content_type1\", fk_field=\"object_id1\")\n    other_obj = generic.GenericForeignKey(ct_field=\"content_type2\", fk_field=\"object_id2\")\n\n    def __str__(self):\n        return \"%s is %s than %s\" % (self.first_obj, self.comparative, self.other_obj)\n\n@python_2_unicode_compatible\nclass Animal(models.Model):\n    common_name = models.CharField(max_length=150)\n    latin_name = models.CharField(max_length=150)\n\n    tags = generic.GenericRelation(TaggedItem)\n    comparisons = generic.GenericRelation(Comparison,\n                                          object_id_field=\"object_id1\",\n                                          content_type_field=\"content_type1\")\n\n    def __str__(self):\n        return self.common_name\n\n@python_2_unicode_compatible\nclass Vegetable(models.Model):\n    name = models.CharField(max_length=150)\n    is_yucky = models.BooleanField(default=True)\n\n    tags = generic.GenericRelation(TaggedItem)\n\n    def __str__(self):\n        return self.name\n\n@python_2_unicode_compatible\nclass Mineral(models.Model):\n    name = models.CharField(max_length=150)\n    hardness = models.PositiveSmallIntegerField()\n\n    # note the lack of an explicit GenericRelation here...\n\n    def __str__(self):\n        return self.name\n\nclass GeckoManager(models.Manager):\n    def get_query_set(self):\n        return super(GeckoManager, self).get_query_set().filter(has_tail=True)\n\nclass Gecko(models.Model):\n    has_tail = models.BooleanField()\n    objects = GeckoManager()\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/generic_relations/tests.py",
    "content": "from __future__ import absolute_import, unicode_literals\n\nfrom django import forms\nfrom django.contrib.contenttypes.generic import generic_inlineformset_factory\nfrom django.contrib.contenttypes.models import ContentType\nfrom django.test import TestCase\n\nfrom .models import (TaggedItem, ValuableTaggedItem, Comparison, Animal,\n    Vegetable, Mineral, Gecko)\n\n\nclass GenericRelationsTests(TestCase):\n    def test_generic_relations(self):\n        # Create the world in 7 lines of code...\n        lion = Animal.objects.create(common_name=\"Lion\", latin_name=\"Panthera leo\")\n        platypus = Animal.objects.create(\n            common_name=\"Platypus\", latin_name=\"Ornithorhynchus anatinus\"\n        )\n        eggplant = Vegetable.objects.create(name=\"Eggplant\", is_yucky=True)\n        bacon = Vegetable.objects.create(name=\"Bacon\", is_yucky=False)\n        quartz = Mineral.objects.create(name=\"Quartz\", hardness=7)\n\n        # Objects with declared GenericRelations can be tagged directly -- the\n        # API mimics the many-to-many API.\n        bacon.tags.create(tag=\"fatty\")\n        bacon.tags.create(tag=\"salty\")\n        lion.tags.create(tag=\"yellow\")\n        lion.tags.create(tag=\"hairy\")\n        platypus.tags.create(tag=\"fatty\")\n        self.assertQuerysetEqual(lion.tags.all(), [\n            \"<TaggedItem: hairy>\",\n            \"<TaggedItem: yellow>\"\n        ])\n        self.assertQuerysetEqual(bacon.tags.all(), [\n            \"<TaggedItem: fatty>\",\n            \"<TaggedItem: salty>\"\n        ])\n\n        # You can easily access the content object like a foreign key.\n        t = TaggedItem.objects.get(tag=\"salty\")\n        self.assertEqual(t.content_object, bacon)\n\n        # Recall that the Mineral class doesn't have an explicit GenericRelation\n        # defined. That's OK, because you can create TaggedItems explicitly.\n        tag1 = TaggedItem.objects.create(content_object=quartz, tag=\"shiny\")\n        tag2 = TaggedItem.objects.create(content_object=quartz, tag=\"clearish\")\n\n        # However, excluding GenericRelations means your lookups have to be a\n        # bit more explicit.\n        ctype = ContentType.objects.get_for_model(quartz)\n        q = TaggedItem.objects.filter(\n            content_type__pk=ctype.id, object_id=quartz.id\n        )\n        self.assertQuerysetEqual(q, [\n            \"<TaggedItem: clearish>\",\n            \"<TaggedItem: shiny>\"\n        ])\n\n        # You can set a generic foreign key in the way you'd expect.\n        tag1.content_object = platypus\n        tag1.save()\n        self.assertQuerysetEqual(platypus.tags.all(), [\n            \"<TaggedItem: fatty>\",\n            \"<TaggedItem: shiny>\"\n        ])\n        q = TaggedItem.objects.filter(\n            content_type__pk=ctype.id, object_id=quartz.id\n        )\n        self.assertQuerysetEqual(q, [\"<TaggedItem: clearish>\"])\n\n        # Queries across generic relations respect the content types. Even\n        # though there are two TaggedItems with a tag of \"fatty\", this query\n        # only pulls out the one with the content type related to Animals.\n        self.assertQuerysetEqual(Animal.objects.order_by('common_name'), [\n            \"<Animal: Lion>\",\n            \"<Animal: Platypus>\"\n        ])\n        self.assertQuerysetEqual(Animal.objects.filter(tags__tag='fatty'), [\n            \"<Animal: Platypus>\"\n        ])\n        self.assertQuerysetEqual(Animal.objects.exclude(tags__tag='fatty'), [\n            \"<Animal: Lion>\"\n        ])\n\n        # If you delete an object with an explicit Generic relation, the related\n        # objects are deleted when the source object is deleted.\n        # Original list of tags:\n        comp_func = lambda obj: (\n            obj.tag, obj.content_type.model_class(), obj.object_id\n        )\n\n        self.assertQuerysetEqual(TaggedItem.objects.all(), [\n                ('clearish', Mineral, quartz.pk),\n                ('fatty', Animal, platypus.pk),\n                ('fatty', Vegetable, bacon.pk),\n                ('hairy', Animal, lion.pk),\n                ('salty', Vegetable, bacon.pk),\n                ('shiny', Animal, platypus.pk),\n                ('yellow', Animal, lion.pk)\n            ],\n            comp_func\n        )\n        lion.delete()\n        self.assertQuerysetEqual(TaggedItem.objects.all(), [\n                ('clearish', Mineral, quartz.pk),\n                ('fatty', Animal, platypus.pk),\n                ('fatty', Vegetable, bacon.pk),\n                ('salty', Vegetable, bacon.pk),\n                ('shiny', Animal, platypus.pk)\n            ],\n            comp_func\n        )\n\n        # If Generic Relation is not explicitly defined, any related objects\n        # remain after deletion of the source object.\n        quartz_pk = quartz.pk\n        quartz.delete()\n        self.assertQuerysetEqual(TaggedItem.objects.all(), [\n                ('clearish', Mineral, quartz_pk),\n                ('fatty', Animal, platypus.pk),\n                ('fatty', Vegetable, bacon.pk),\n                ('salty', Vegetable, bacon.pk),\n                ('shiny', Animal, platypus.pk)\n            ],\n            comp_func\n        )\n        # If you delete a tag, the objects using the tag are unaffected\n        # (other than losing a tag)\n        tag = TaggedItem.objects.order_by(\"id\")[0]\n        tag.delete()\n        self.assertQuerysetEqual(bacon.tags.all(), [\"<TaggedItem: salty>\"])\n        self.assertQuerysetEqual(TaggedItem.objects.all(), [\n                ('clearish', Mineral, quartz_pk),\n                ('fatty', Animal, platypus.pk),\n                ('salty', Vegetable, bacon.pk),\n                ('shiny', Animal, platypus.pk)\n            ],\n            comp_func\n        )\n        TaggedItem.objects.filter(tag='fatty').delete()\n        ctype = ContentType.objects.get_for_model(lion)\n        self.assertQuerysetEqual(Animal.objects.filter(tags__content_type=ctype), [\n            \"<Animal: Platypus>\"\n        ])\n\n\n    def test_multiple_gfk(self):\n        # Simple tests for multiple GenericForeignKeys\n        # only uses one model, since the above tests should be sufficient.\n        tiger = Animal.objects.create(common_name=\"tiger\")\n        cheetah = Animal.objects.create(common_name=\"cheetah\")\n        bear = Animal.objects.create(common_name=\"bear\")\n\n        # Create directly\n        Comparison.objects.create(\n            first_obj=cheetah, other_obj=tiger, comparative=\"faster\"\n        )\n        Comparison.objects.create(\n            first_obj=tiger, other_obj=cheetah, comparative=\"cooler\"\n        )\n\n        # Create using GenericRelation\n        tiger.comparisons.create(other_obj=bear, comparative=\"cooler\")\n        tiger.comparisons.create(other_obj=cheetah, comparative=\"stronger\")\n        self.assertQuerysetEqual(cheetah.comparisons.all(), [\n            \"<Comparison: cheetah is faster than tiger>\"\n        ])\n\n        # Filtering works\n        self.assertQuerysetEqual(tiger.comparisons.filter(comparative=\"cooler\"), [\n            \"<Comparison: tiger is cooler than cheetah>\",\n            \"<Comparison: tiger is cooler than bear>\"\n        ])\n\n        # Filtering and deleting works\n        subjective = [\"cooler\"]\n        tiger.comparisons.filter(comparative__in=subjective).delete()\n        self.assertQuerysetEqual(Comparison.objects.all(), [\n            \"<Comparison: cheetah is faster than tiger>\",\n            \"<Comparison: tiger is stronger than cheetah>\"\n        ])\n\n        # If we delete cheetah, Comparisons with cheetah as 'first_obj' will be\n        # deleted since Animal has an explicit GenericRelation to Comparison\n        # through first_obj. Comparisons with cheetah as 'other_obj' will not\n        # be deleted.\n        cheetah.delete()\n        self.assertQuerysetEqual(Comparison.objects.all(), [\n            \"<Comparison: tiger is stronger than None>\"\n        ])\n\n    def test_gfk_subclasses(self):\n        # GenericForeignKey should work with subclasses (see #8309)\n        quartz = Mineral.objects.create(name=\"Quartz\", hardness=7)\n        valuedtag = ValuableTaggedItem.objects.create(\n            content_object=quartz, tag=\"shiny\", value=10\n        )\n        self.assertEqual(valuedtag.content_object, quartz)\n\n    def test_generic_inline_formsets(self):\n        GenericFormSet = generic_inlineformset_factory(TaggedItem, extra=1)\n        formset = GenericFormSet()\n        self.assertHTMLEqual(''.join(form.as_p() for form in formset.forms), \"\"\"<p><label for=\"id_generic_relations-taggeditem-content_type-object_id-0-tag\">Tag:</label> <input id=\"id_generic_relations-taggeditem-content_type-object_id-0-tag\" type=\"text\" name=\"generic_relations-taggeditem-content_type-object_id-0-tag\" maxlength=\"50\" /></p>\n<p><label for=\"id_generic_relations-taggeditem-content_type-object_id-0-DELETE\">Delete:</label> <input type=\"checkbox\" name=\"generic_relations-taggeditem-content_type-object_id-0-DELETE\" id=\"id_generic_relations-taggeditem-content_type-object_id-0-DELETE\" /><input type=\"hidden\" name=\"generic_relations-taggeditem-content_type-object_id-0-id\" id=\"id_generic_relations-taggeditem-content_type-object_id-0-id\" /></p>\"\"\")\n\n        formset = GenericFormSet(instance=Animal())\n        self.assertHTMLEqual(''.join(form.as_p() for form in formset.forms), \"\"\"<p><label for=\"id_generic_relations-taggeditem-content_type-object_id-0-tag\">Tag:</label> <input id=\"id_generic_relations-taggeditem-content_type-object_id-0-tag\" type=\"text\" name=\"generic_relations-taggeditem-content_type-object_id-0-tag\" maxlength=\"50\" /></p>\n<p><label for=\"id_generic_relations-taggeditem-content_type-object_id-0-DELETE\">Delete:</label> <input type=\"checkbox\" name=\"generic_relations-taggeditem-content_type-object_id-0-DELETE\" id=\"id_generic_relations-taggeditem-content_type-object_id-0-DELETE\" /><input type=\"hidden\" name=\"generic_relations-taggeditem-content_type-object_id-0-id\" id=\"id_generic_relations-taggeditem-content_type-object_id-0-id\" /></p>\"\"\")\n\n        platypus = Animal.objects.create(\n            common_name=\"Platypus\", latin_name=\"Ornithorhynchus anatinus\"\n        )\n        platypus.tags.create(tag=\"shiny\")\n        GenericFormSet = generic_inlineformset_factory(TaggedItem, extra=1)\n        formset = GenericFormSet(instance=platypus)\n        tagged_item_id = TaggedItem.objects.get(\n            tag='shiny', object_id=platypus.id\n        ).id\n        self.assertHTMLEqual(''.join(form.as_p() for form in formset.forms), \"\"\"<p><label for=\"id_generic_relations-taggeditem-content_type-object_id-0-tag\">Tag:</label> <input id=\"id_generic_relations-taggeditem-content_type-object_id-0-tag\" type=\"text\" name=\"generic_relations-taggeditem-content_type-object_id-0-tag\" value=\"shiny\" maxlength=\"50\" /></p>\n<p><label for=\"id_generic_relations-taggeditem-content_type-object_id-0-DELETE\">Delete:</label> <input type=\"checkbox\" name=\"generic_relations-taggeditem-content_type-object_id-0-DELETE\" id=\"id_generic_relations-taggeditem-content_type-object_id-0-DELETE\" /><input type=\"hidden\" name=\"generic_relations-taggeditem-content_type-object_id-0-id\" value=\"%s\" id=\"id_generic_relations-taggeditem-content_type-object_id-0-id\" /></p><p><label for=\"id_generic_relations-taggeditem-content_type-object_id-1-tag\">Tag:</label> <input id=\"id_generic_relations-taggeditem-content_type-object_id-1-tag\" type=\"text\" name=\"generic_relations-taggeditem-content_type-object_id-1-tag\" maxlength=\"50\" /></p>\n<p><label for=\"id_generic_relations-taggeditem-content_type-object_id-1-DELETE\">Delete:</label> <input type=\"checkbox\" name=\"generic_relations-taggeditem-content_type-object_id-1-DELETE\" id=\"id_generic_relations-taggeditem-content_type-object_id-1-DELETE\" /><input type=\"hidden\" name=\"generic_relations-taggeditem-content_type-object_id-1-id\" id=\"id_generic_relations-taggeditem-content_type-object_id-1-id\" /></p>\"\"\" % tagged_item_id)\n\n        lion = Animal.objects.create(common_name=\"Lion\", latin_name=\"Panthera leo\")\n        formset = GenericFormSet(instance=lion, prefix='x')\n        self.assertHTMLEqual(''.join(form.as_p() for form in formset.forms), \"\"\"<p><label for=\"id_x-0-tag\">Tag:</label> <input id=\"id_x-0-tag\" type=\"text\" name=\"x-0-tag\" maxlength=\"50\" /></p>\n<p><label for=\"id_x-0-DELETE\">Delete:</label> <input type=\"checkbox\" name=\"x-0-DELETE\" id=\"id_x-0-DELETE\" /><input type=\"hidden\" name=\"x-0-id\" id=\"id_x-0-id\" /></p>\"\"\")\n\n    def test_gfk_manager(self):\n        # GenericForeignKey should not use the default manager (which may filter objects) #16048\n        tailless = Gecko.objects.create(has_tail=False)\n        tag = TaggedItem.objects.create(content_object=tailless, tag=\"lizard\")\n        self.assertEqual(tag.content_object, tailless)\n\nclass CustomWidget(forms.TextInput):\n    pass\n\nclass TaggedItemForm(forms.ModelForm):\n    class Meta:\n        model = TaggedItem\n        widgets = {'tag': CustomWidget}\n\nclass GenericInlineFormsetTest(TestCase):\n    \"\"\"\n    Regression for #14572: Using base forms with widgets\n    defined in Meta should not raise errors.\n    \"\"\"\n\n    def test_generic_inlineformset_factory(self):\n        Formset = generic_inlineformset_factory(TaggedItem, TaggedItemForm)\n        form = Formset().forms[0]\n        self.assertTrue(isinstance(form['tag'].field.widget, CustomWidget))\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/get_latest/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/get_latest/models.py",
    "content": "\"\"\"\n8. get_latest_by\n\nModels can have a ``get_latest_by`` attribute, which should be set to the name\nof a ``DateField`` or ``DateTimeField``. If ``get_latest_by`` exists, the\nmodel's manager will get a ``latest()`` method, which will return the latest\nobject in the database according to that field. \"Latest\" means \"having the date\nfarthest into the future.\"\n\"\"\"\n\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n@python_2_unicode_compatible\nclass Article(models.Model):\n    headline = models.CharField(max_length=100)\n    pub_date = models.DateField()\n    expire_date = models.DateField()\n    class Meta:\n        get_latest_by = 'pub_date'\n\n    def __str__(self):\n        return self.headline\n\n@python_2_unicode_compatible\nclass Person(models.Model):\n    name = models.CharField(max_length=30)\n    birthday = models.DateField()\n\n    # Note that this model doesn't have \"get_latest_by\" set.\n\n    def __str__(self):\n        return self.name\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/get_latest/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom datetime import datetime\n\nfrom django.test import TestCase\n\nfrom .models import Article, Person\n\n\nclass LatestTests(TestCase):\n    def test_latest(self):\n        # Because no Articles exist yet, latest() raises ArticleDoesNotExist.\n        self.assertRaises(Article.DoesNotExist, Article.objects.latest)\n\n        a1 = Article.objects.create(\n            headline=\"Article 1\", pub_date=datetime(2005, 7, 26),\n            expire_date=datetime(2005, 9, 1)\n        )\n        a2 = Article.objects.create(\n            headline=\"Article 2\", pub_date=datetime(2005, 7, 27),\n            expire_date=datetime(2005, 7, 28)\n        )\n        a3 = Article.objects.create(\n            headline=\"Article 3\", pub_date=datetime(2005, 7, 27),\n            expire_date=datetime(2005, 8, 27)\n        )\n        a4 = Article.objects.create(\n            headline=\"Article 4\", pub_date=datetime(2005, 7, 28),\n            expire_date=datetime(2005, 7, 30)\n        )\n\n        # Get the latest Article.\n        self.assertEqual(Article.objects.latest(), a4)\n        # Get the latest Article that matches certain filters.\n        self.assertEqual(\n            Article.objects.filter(pub_date__lt=datetime(2005, 7, 27)).latest(),\n            a1\n        )\n\n        # Pass a custom field name to latest() to change the field that's used\n        # to determine the latest object.\n        self.assertEqual(Article.objects.latest('expire_date'), a1)\n        self.assertEqual(\n            Article.objects.filter(pub_date__gt=datetime(2005, 7, 26)).latest('expire_date'),\n            a3,\n        )\n\n        # Ensure that latest() overrides any other ordering specified on the query. Refs #11283.\n        self.assertEqual(Article.objects.order_by('id').latest(), a4)\n\n    def test_latest_manual(self):\n        # You can still use latest() with a model that doesn't have\n        # \"get_latest_by\" set -- just pass in the field name manually.\n        p1 = Person.objects.create(name=\"Ralph\", birthday=datetime(1950, 1, 1))\n        p2 = Person.objects.create(name=\"Stephanie\", birthday=datetime(1960, 2, 3))\n        self.assertRaises(AssertionError, Person.objects.latest)\n\n        self.assertEqual(Person.objects.latest(\"birthday\"), p2)\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/get_object_or_404/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/get_object_or_404/models.py",
    "content": "\"\"\"\n35. DB-API Shortcuts\n\n``get_object_or_404()`` is a shortcut function to be used in view functions for\nperforming a ``get()`` lookup and raising a ``Http404`` exception if a\n``DoesNotExist`` exception was raised during the ``get()`` call.\n\n``get_list_or_404()`` is a shortcut function to be used in view functions for\nperforming a ``filter()`` lookup and raising a ``Http404`` exception if a\n``DoesNotExist`` exception was raised during the ``filter()`` call.\n\"\"\"\n\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n@python_2_unicode_compatible\nclass Author(models.Model):\n    name = models.CharField(max_length=50)\n\n    def __str__(self):\n        return self.name\n\nclass ArticleManager(models.Manager):\n    def get_query_set(self):\n        return super(ArticleManager, self).get_query_set().filter(authors__name__icontains='sir')\n\n@python_2_unicode_compatible\nclass Article(models.Model):\n    authors = models.ManyToManyField(Author)\n    title = models.CharField(max_length=50)\n    objects = models.Manager()\n    by_a_sir = ArticleManager()\n\n    def __str__(self):\n        return self.title\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/get_object_or_404/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom django.http import Http404\nfrom django.shortcuts import get_object_or_404, get_list_or_404\nfrom django.test import TestCase\n\nfrom .models import Author, Article\n\n\nclass GetObjectOr404Tests(TestCase):\n    def test_get_object_or_404(self):\n        a1 = Author.objects.create(name=\"Brave Sir Robin\")\n        a2 = Author.objects.create(name=\"Patsy\")\n\n        # No Articles yet, so we should get a Http404 error.\n        self.assertRaises(Http404, get_object_or_404, Article, title=\"Foo\")\n\n        article = Article.objects.create(title=\"Run away!\")\n        article.authors = [a1, a2]\n        # get_object_or_404 can be passed a Model to query.\n        self.assertEqual(\n            get_object_or_404(Article, title__contains=\"Run\"),\n            article\n        )\n\n        # We can also use the Article manager through an Author object.\n        self.assertEqual(\n            get_object_or_404(a1.article_set, title__contains=\"Run\"),\n            article\n        )\n\n        # No articles containing \"Camelot\".  This should raise a Http404 error.\n        self.assertRaises(Http404,\n            get_object_or_404, a1.article_set, title__contains=\"Camelot\"\n        )\n\n        # Custom managers can be used too.\n        self.assertEqual(\n            get_object_or_404(Article.by_a_sir, title=\"Run away!\"),\n            article\n        )\n\n        # QuerySets can be used too.\n        self.assertEqual(\n            get_object_or_404(Article.objects.all(), title__contains=\"Run\"),\n            article\n        )\n\n        # Just as when using a get() lookup, you will get an error if more than\n        # one object is returned.\n\n        self.assertRaises(Author.MultipleObjectsReturned,\n            get_object_or_404, Author.objects.all()\n        )\n\n        # Using an EmptyQuerySet raises a Http404 error.\n        self.assertRaises(Http404,\n            get_object_or_404, Article.objects.none(), title__contains=\"Run\"\n        )\n\n        # get_list_or_404 can be used to get lists of objects\n        self.assertEqual(\n            get_list_or_404(a1.article_set, title__icontains=\"Run\"),\n            [article]\n        )\n\n        # Http404 is returned if the list is empty.\n        self.assertRaises(Http404,\n            get_list_or_404, a1.article_set, title__icontains=\"Shrubbery\"\n        )\n\n        # Custom managers can be used too.\n        self.assertEqual(\n            get_list_or_404(Article.by_a_sir, title__icontains=\"Run\"),\n            [article]\n        )\n\n        # QuerySets can be used too.\n        self.assertEqual(\n            get_list_or_404(Article.objects.all(), title__icontains=\"Run\"),\n            [article]\n        )\n\n    def test_bad_class(self):\n        # Given an argument klass that is not a Model, Manager, or Queryset\n        # raises a helpful ValueError message\n        self.assertRaisesMessage(ValueError,\n            \"Object is of type 'str', but must be a Django Model, Manager, \"\n            \"or QuerySet\",\n            get_object_or_404, \"Article\", title__icontains=\"Run\"\n        )\n\n        class CustomClass(object):\n            pass\n\n        self.assertRaisesMessage(ValueError,\n            \"Object is of type 'CustomClass', but must be a Django Model, \"\n            \"Manager, or QuerySet\",\n            get_object_or_404, CustomClass, title__icontains=\"Run\"\n        )\n\n        # Works for lists too\n        self.assertRaisesMessage(ValueError,\n            \"Object is of type 'list', but must be a Django Model, Manager, \"\n            \"or QuerySet\",\n            get_list_or_404, [Article], title__icontains=\"Run\"\n        )\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/get_or_create/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/get_or_create/models.py",
    "content": "\"\"\"\n33. get_or_create()\n\n``get_or_create()`` does what it says: it tries to look up an object with the\ngiven parameters. If an object isn't found, it creates one with the given\nparameters.\n\"\"\"\n\nfrom __future__ import unicode_literals\n\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n@python_2_unicode_compatible\nclass Person(models.Model):\n    first_name = models.CharField(max_length=100)\n    last_name = models.CharField(max_length=100)\n    birthday = models.DateField()\n\n    def __str__(self):\n        return '%s %s' % (self.first_name, self.last_name)\n\nclass ManualPrimaryKeyTest(models.Model):\n    id = models.IntegerField(primary_key=True)\n    data = models.CharField(max_length=100)\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/get_or_create/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom datetime import date\nimport traceback\n\nfrom django.db import IntegrityError\nfrom django.test import TestCase\n\nfrom .models import Person, ManualPrimaryKeyTest\n\n\nclass GetOrCreateTests(TestCase):\n    def test_get_or_create(self):\n        p = Person.objects.create(\n            first_name='John', last_name='Lennon', birthday=date(1940, 10, 9)\n        )\n\n        p, created = Person.objects.get_or_create(\n            first_name=\"John\", last_name=\"Lennon\", defaults={\n                \"birthday\": date(1940, 10, 9)\n            }\n        )\n        self.assertFalse(created)\n        self.assertEqual(Person.objects.count(), 1)\n\n        p, created = Person.objects.get_or_create(\n            first_name='George', last_name='Harrison', defaults={\n                'birthday': date(1943, 2, 25)\n            }\n        )\n        self.assertTrue(created)\n        self.assertEqual(Person.objects.count(), 2)\n\n        # If we execute the exact same statement, it won't create a Person.\n        p, created = Person.objects.get_or_create(\n            first_name='George', last_name='Harrison', defaults={\n                'birthday': date(1943, 2, 25)\n            }\n        )\n        self.assertFalse(created)\n        self.assertEqual(Person.objects.count(), 2)\n\n        # If you don't specify a value or default value for all required\n        # fields, you will get an error.\n        self.assertRaises(IntegrityError,\n            Person.objects.get_or_create, first_name=\"Tom\", last_name=\"Smith\"\n        )\n\n        # If you specify an existing primary key, but different other fields,\n        # then you will get an error and data will not be updated.\n        m = ManualPrimaryKeyTest.objects.create(id=1, data=\"Original\")\n        self.assertRaises(IntegrityError,\n            ManualPrimaryKeyTest.objects.get_or_create, id=1, data=\"Different\"\n        )\n        self.assertEqual(ManualPrimaryKeyTest.objects.get(id=1).data, \"Original\")\n\n        # get_or_create should raise IntegrityErrors with the full traceback.\n        # This is tested by checking that a known method call is in the traceback.\n        # We cannot use assertRaises/assertRaises here because we need to inspect\n        # the actual traceback. Refs #16340.\n        try:\n            ManualPrimaryKeyTest.objects.get_or_create(id=1, data=\"Different\")\n        except IntegrityError as e:\n            formatted_traceback = traceback.format_exc()\n            self.assertIn('obj.save', formatted_traceback)\n\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/invalid_models/__init__.py",
    "content": "\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/invalid_models/invalid_models/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/invalid_models/invalid_models/models.py",
    "content": "#encoding=utf-8\n\"\"\"\n26. Invalid models\n\nThis example exists purely to point out errors in models.\n\"\"\"\n\nfrom __future__ import unicode_literals\n\nfrom django.db import connection, models\n\n\nclass FieldErrors(models.Model):\n    charfield = models.CharField()\n    charfield2 = models.CharField(max_length=-1)\n    charfield3 = models.CharField(max_length=\"bad\")\n    decimalfield = models.DecimalField()\n    decimalfield2 = models.DecimalField(max_digits=-1, decimal_places=-1)\n    decimalfield3 = models.DecimalField(max_digits=\"bad\", decimal_places=\"bad\")\n    decimalfield4 = models.DecimalField(max_digits=9, decimal_places=10)\n    decimalfield5 = models.DecimalField(max_digits=10, decimal_places=10)\n    filefield = models.FileField()\n    choices = models.CharField(max_length=10, choices='bad')\n    choices2 = models.CharField(max_length=10, choices=[(1, 2, 3), (1, 2, 3)])\n    index = models.CharField(max_length=10, db_index='bad')\n    field_ = models.CharField(max_length=10)\n    nullbool = models.BooleanField(null=True)\n\n\nclass Target(models.Model):\n    tgt_safe = models.CharField(max_length=10)\n    clash1 = models.CharField(max_length=10)\n    clash2 = models.CharField(max_length=10)\n\n    clash1_set = models.CharField(max_length=10)\n\n\nclass Clash1(models.Model):\n    src_safe = models.CharField(max_length=10)\n\n    foreign = models.ForeignKey(Target)\n    m2m = models.ManyToManyField(Target)\n\n\nclass Clash2(models.Model):\n    src_safe = models.CharField(max_length=10)\n\n    foreign_1 = models.ForeignKey(Target, related_name='id')\n    foreign_2 = models.ForeignKey(Target, related_name='src_safe')\n\n    m2m_1 = models.ManyToManyField(Target, related_name='id')\n    m2m_2 = models.ManyToManyField(Target, related_name='src_safe')\n\n\nclass Target2(models.Model):\n    clash3 = models.CharField(max_length=10)\n    foreign_tgt = models.ForeignKey(Target)\n    clashforeign_set = models.ForeignKey(Target)\n\n    m2m_tgt = models.ManyToManyField(Target)\n    clashm2m_set = models.ManyToManyField(Target)\n\n\nclass Clash3(models.Model):\n    src_safe = models.CharField(max_length=10)\n\n    foreign_1 = models.ForeignKey(Target2, related_name='foreign_tgt')\n    foreign_2 = models.ForeignKey(Target2, related_name='m2m_tgt')\n\n    m2m_1 = models.ManyToManyField(Target2, related_name='foreign_tgt')\n    m2m_2 = models.ManyToManyField(Target2, related_name='m2m_tgt')\n\n\nclass ClashForeign(models.Model):\n    foreign = models.ForeignKey(Target2)\n\n\nclass ClashM2M(models.Model):\n    m2m = models.ManyToManyField(Target2)\n\n\nclass SelfClashForeign(models.Model):\n    src_safe = models.CharField(max_length=10)\n    selfclashforeign = models.CharField(max_length=10)\n\n    selfclashforeign_set = models.ForeignKey(\"SelfClashForeign\")\n    foreign_1 = models.ForeignKey(\"SelfClashForeign\", related_name='id')\n    foreign_2 = models.ForeignKey(\"SelfClashForeign\", related_name='src_safe')\n\n\nclass ValidM2M(models.Model):\n    src_safe = models.CharField(max_length=10)\n    validm2m = models.CharField(max_length=10)\n\n    # M2M fields are symmetrical by default. Symmetrical M2M fields\n    # on self don't require a related accessor, so many potential\n    # clashes are avoided.\n    validm2m_set = models.ManyToManyField(\"self\")\n\n    m2m_1 = models.ManyToManyField(\"self\", related_name='id')\n    m2m_2 = models.ManyToManyField(\"self\", related_name='src_safe')\n\n    m2m_3 = models.ManyToManyField('self')\n    m2m_4 = models.ManyToManyField('self')\n\n\nclass SelfClashM2M(models.Model):\n    src_safe = models.CharField(max_length=10)\n    selfclashm2m = models.CharField(max_length=10)\n\n    # Non-symmetrical M2M fields _do_ have related accessors, so\n    # there is potential for clashes.\n    selfclashm2m_set = models.ManyToManyField(\"self\", symmetrical=False)\n\n    m2m_1 = models.ManyToManyField(\"self\", related_name='id', symmetrical=False)\n    m2m_2 = models.ManyToManyField(\"self\", related_name='src_safe', symmetrical=False)\n\n    m2m_3 = models.ManyToManyField('self', symmetrical=False)\n    m2m_4 = models.ManyToManyField('self', symmetrical=False)\n\n\nclass Model(models.Model):\n    \"But it's valid to call a model Model.\"\n    year = models.PositiveIntegerField()  # 1960\n    make = models.CharField(max_length=10)  # Aston Martin\n    name = models.CharField(max_length=10)  # DB 4 GT\n\n\nclass Car(models.Model):\n    colour = models.CharField(max_length=5)\n    model = models.ForeignKey(Model)\n\n\nclass MissingRelations(models.Model):\n    rel1 = models.ForeignKey(\"Rel1\")\n    rel2 = models.ManyToManyField(\"Rel2\")\n\n\nclass MissingManualM2MModel(models.Model):\n    name = models.CharField(max_length=5)\n    missing_m2m = models.ManyToManyField(Model, through=\"MissingM2MModel\")\n\n\nclass Person(models.Model):\n    name = models.CharField(max_length=5)\n\n\nclass Group(models.Model):\n    name = models.CharField(max_length=5)\n    primary = models.ManyToManyField(Person, through=\"Membership\", related_name=\"primary\")\n    secondary = models.ManyToManyField(Person, through=\"Membership\", related_name=\"secondary\")\n    tertiary = models.ManyToManyField(Person, through=\"RelationshipDoubleFK\", related_name=\"tertiary\")\n\n\nclass GroupTwo(models.Model):\n    name = models.CharField(max_length=5)\n    primary = models.ManyToManyField(Person, through=\"Membership\")\n    secondary = models.ManyToManyField(Group, through=\"MembershipMissingFK\")\n\n\nclass Membership(models.Model):\n    person = models.ForeignKey(Person)\n    group = models.ForeignKey(Group)\n    not_default_or_null = models.CharField(max_length=5)\n\n\nclass MembershipMissingFK(models.Model):\n    person = models.ForeignKey(Person)\n\n\nclass PersonSelfRefM2M(models.Model):\n    name = models.CharField(max_length=5)\n    friends = models.ManyToManyField('self', through=\"Relationship\")\n    too_many_friends = models.ManyToManyField('self', through=\"RelationshipTripleFK\")\n\n\nclass PersonSelfRefM2MExplicit(models.Model):\n    name = models.CharField(max_length=5)\n    friends = models.ManyToManyField('self', through=\"ExplicitRelationship\", symmetrical=True)\n\n\nclass Relationship(models.Model):\n    first = models.ForeignKey(PersonSelfRefM2M, related_name=\"rel_from_set\")\n    second = models.ForeignKey(PersonSelfRefM2M, related_name=\"rel_to_set\")\n    date_added = models.DateTimeField()\n\n\nclass ExplicitRelationship(models.Model):\n    first = models.ForeignKey(PersonSelfRefM2MExplicit, related_name=\"rel_from_set\")\n    second = models.ForeignKey(PersonSelfRefM2MExplicit, related_name=\"rel_to_set\")\n    date_added = models.DateTimeField()\n\n\nclass RelationshipTripleFK(models.Model):\n    first = models.ForeignKey(PersonSelfRefM2M, related_name=\"rel_from_set_2\")\n    second = models.ForeignKey(PersonSelfRefM2M, related_name=\"rel_to_set_2\")\n    third = models.ForeignKey(PersonSelfRefM2M, related_name=\"too_many_by_far\")\n    date_added = models.DateTimeField()\n\n\nclass RelationshipDoubleFK(models.Model):\n    first = models.ForeignKey(Person, related_name=\"first_related_name\")\n    second = models.ForeignKey(Person, related_name=\"second_related_name\")\n    third = models.ForeignKey(Group, related_name=\"rel_to_set\")\n    date_added = models.DateTimeField()\n\n\nclass AbstractModel(models.Model):\n    name = models.CharField(max_length=10)\n\n    class Meta:\n        abstract = True\n\n\nclass AbstractRelationModel(models.Model):\n    fk1 = models.ForeignKey('AbstractModel')\n    fk2 = models.ManyToManyField('AbstractModel')\n\n\nclass UniqueM2M(models.Model):\n    \"\"\" Model to test for unique ManyToManyFields, which are invalid. \"\"\"\n    unique_people = models.ManyToManyField(Person, unique=True)\n\n\nclass NonUniqueFKTarget1(models.Model):\n    \"\"\" Model to test for non-unique FK target in yet-to-be-defined model: expect an error \"\"\"\n    tgt = models.ForeignKey('FKTarget', to_field='bad')\n\n\nclass UniqueFKTarget1(models.Model):\n    \"\"\" Model to test for unique FK target in yet-to-be-defined model: expect no error \"\"\"\n    tgt = models.ForeignKey('FKTarget', to_field='good')\n\n\nclass FKTarget(models.Model):\n    bad = models.IntegerField()\n    good = models.IntegerField(unique=True)\n\n\nclass NonUniqueFKTarget2(models.Model):\n    \"\"\" Model to test for non-unique FK target in previously seen model: expect an error \"\"\"\n    tgt = models.ForeignKey(FKTarget, to_field='bad')\n\n\nclass UniqueFKTarget2(models.Model):\n    \"\"\" Model to test for unique FK target in previously seen model: expect no error \"\"\"\n    tgt = models.ForeignKey(FKTarget, to_field='good')\n\n\nclass NonExistingOrderingWithSingleUnderscore(models.Model):\n    class Meta:\n        ordering = (\"does_not_exist\",)\n\n\nclass InvalidSetNull(models.Model):\n    fk = models.ForeignKey('self', on_delete=models.SET_NULL)\n\n\nclass InvalidSetDefault(models.Model):\n    fk = models.ForeignKey('self', on_delete=models.SET_DEFAULT)\n\n\nclass UnicodeForeignKeys(models.Model):\n    \"\"\"Foreign keys which can translate to ascii should be OK, but fail if\n    they're not.\"\"\"\n    good = models.ForeignKey('FKTarget')\n    also_good = models.ManyToManyField('FKTarget', related_name='unicode2')\n\n    # In Python 3 this should become legal, but currently causes unicode errors\n    # when adding the errors in core/management/validation.py\n    #bad = models.ForeignKey('★')\n\n\nclass PrimaryKeyNull(models.Model):\n    my_pk_field = models.IntegerField(primary_key=True, null=True)\n\n\nclass OrderByPKModel(models.Model):\n    \"\"\"\n    Model to test that ordering by pk passes validation.\n    Refs #8291\n    \"\"\"\n    name = models.CharField(max_length=100, blank=True)\n\n    class Meta:\n        ordering = ('pk',)\n\n\nclass SwappableModel(models.Model):\n    \"\"\"A model that can be, but isn't swapped out.\n\n    References to this model *shoudln't* raise any validation error.\n    \"\"\"\n    name = models.CharField(max_length=100)\n\n    class Meta:\n        swappable = 'TEST_SWAPPABLE_MODEL'\n\n\nclass SwappedModel(models.Model):\n    \"\"\"A model that is swapped out.\n\n    References to this model *should* raise a validation error.\n    Requires TEST_SWAPPED_MODEL to be defined in the test environment;\n    this is guaranteed by the test runner using @override_settings.\n\n    The foreign keys and m2m relations on this model *shouldn't*\n    install related accessors, so there shouldn't be clashes with\n    the equivalent names on the replacement.\n    \"\"\"\n    name = models.CharField(max_length=100)\n\n    foreign = models.ForeignKey(Target, related_name='swappable_fk_set')\n    m2m = models.ManyToManyField(Target, related_name='swappable_m2m_set')\n\n    class Meta:\n        swappable = 'TEST_SWAPPED_MODEL'\n\n\nclass ReplacementModel(models.Model):\n    \"\"\"A replacement model for swapping purposes.\"\"\"\n    name = models.CharField(max_length=100)\n\n    foreign = models.ForeignKey(Target, related_name='swappable_fk_set')\n    m2m = models.ManyToManyField(Target, related_name='swappable_m2m_set')\n\n\nclass BadSwappableValue(models.Model):\n    \"\"\"A model that can be swapped out; during testing, the swappable\n    value is not of the format app.model\n    \"\"\"\n    name = models.CharField(max_length=100)\n\n    class Meta:\n        swappable = 'TEST_SWAPPED_MODEL_BAD_VALUE'\n\n\nclass BadSwappableModel(models.Model):\n    \"\"\"A model that can be swapped out; during testing, the swappable\n    value references an unknown model.\n    \"\"\"\n    name = models.CharField(max_length=100)\n\n    class Meta:\n        swappable = 'TEST_SWAPPED_MODEL_BAD_MODEL'\n\n\nclass HardReferenceModel(models.Model):\n    fk_1 = models.ForeignKey(SwappableModel, related_name='fk_hardref1')\n    fk_2 = models.ForeignKey('invalid_models.SwappableModel', related_name='fk_hardref2')\n    fk_3 = models.ForeignKey(SwappedModel, related_name='fk_hardref3')\n    fk_4 = models.ForeignKey('invalid_models.SwappedModel', related_name='fk_hardref4')\n    m2m_1 = models.ManyToManyField(SwappableModel, related_name='m2m_hardref1')\n    m2m_2 = models.ManyToManyField('invalid_models.SwappableModel', related_name='m2m_hardref2')\n    m2m_3 = models.ManyToManyField(SwappedModel, related_name='m2m_hardref3')\n    m2m_4 = models.ManyToManyField('invalid_models.SwappedModel', related_name='m2m_hardref4')\n\n\nclass BadIndexTogether1(models.Model):\n    class Meta:\n        index_together = [\n            [\"field_that_does_not_exist\"],\n        ]\n\n\nmodel_errors = \"\"\"invalid_models.fielderrors: \"charfield\": CharFields require a \"max_length\" attribute that is a positive integer.\ninvalid_models.fielderrors: \"charfield2\": CharFields require a \"max_length\" attribute that is a positive integer.\ninvalid_models.fielderrors: \"charfield3\": CharFields require a \"max_length\" attribute that is a positive integer.\ninvalid_models.fielderrors: \"decimalfield\": DecimalFields require a \"decimal_places\" attribute that is a non-negative integer.\ninvalid_models.fielderrors: \"decimalfield\": DecimalFields require a \"max_digits\" attribute that is a positive integer.\ninvalid_models.fielderrors: \"decimalfield2\": DecimalFields require a \"decimal_places\" attribute that is a non-negative integer.\ninvalid_models.fielderrors: \"decimalfield2\": DecimalFields require a \"max_digits\" attribute that is a positive integer.\ninvalid_models.fielderrors: \"decimalfield3\": DecimalFields require a \"decimal_places\" attribute that is a non-negative integer.\ninvalid_models.fielderrors: \"decimalfield3\": DecimalFields require a \"max_digits\" attribute that is a positive integer.\ninvalid_models.fielderrors: \"decimalfield4\": DecimalFields require a \"max_digits\" attribute value that is greater than or equal to the value of the \"decimal_places\" attribute.\ninvalid_models.fielderrors: \"filefield\": FileFields require an \"upload_to\" attribute.\ninvalid_models.fielderrors: \"choices\": \"choices\" should be iterable (e.g., a tuple or list).\ninvalid_models.fielderrors: \"choices2\": \"choices\" should be a sequence of two-tuples.\ninvalid_models.fielderrors: \"choices2\": \"choices\" should be a sequence of two-tuples.\ninvalid_models.fielderrors: \"index\": \"db_index\" should be either None, True or False.\ninvalid_models.fielderrors: \"field_\": Field names cannot end with underscores, because this would lead to ambiguous queryset filters.\ninvalid_models.fielderrors: \"nullbool\": BooleanFields do not accept null values. Use a NullBooleanField instead.\ninvalid_models.clash1: Accessor for field 'foreign' clashes with field 'Target.clash1_set'. Add a related_name argument to the definition for 'foreign'.\ninvalid_models.clash1: Accessor for field 'foreign' clashes with related m2m field 'Target.clash1_set'. Add a related_name argument to the definition for 'foreign'.\ninvalid_models.clash1: Reverse query name for field 'foreign' clashes with field 'Target.clash1'. Add a related_name argument to the definition for 'foreign'.\ninvalid_models.clash1: Accessor for m2m field 'm2m' clashes with field 'Target.clash1_set'. Add a related_name argument to the definition for 'm2m'.\ninvalid_models.clash1: Accessor for m2m field 'm2m' clashes with related field 'Target.clash1_set'. Add a related_name argument to the definition for 'm2m'.\ninvalid_models.clash1: Reverse query name for m2m field 'm2m' clashes with field 'Target.clash1'. Add a related_name argument to the definition for 'm2m'.\ninvalid_models.clash2: Accessor for field 'foreign_1' clashes with field 'Target.id'. Add a related_name argument to the definition for 'foreign_1'.\ninvalid_models.clash2: Accessor for field 'foreign_1' clashes with related m2m field 'Target.id'. Add a related_name argument to the definition for 'foreign_1'.\ninvalid_models.clash2: Reverse query name for field 'foreign_1' clashes with field 'Target.id'. Add a related_name argument to the definition for 'foreign_1'.\ninvalid_models.clash2: Reverse query name for field 'foreign_1' clashes with related m2m field 'Target.id'. Add a related_name argument to the definition for 'foreign_1'.\ninvalid_models.clash2: Accessor for field 'foreign_2' clashes with related m2m field 'Target.src_safe'. Add a related_name argument to the definition for 'foreign_2'.\ninvalid_models.clash2: Reverse query name for field 'foreign_2' clashes with related m2m field 'Target.src_safe'. Add a related_name argument to the definition for 'foreign_2'.\ninvalid_models.clash2: Accessor for m2m field 'm2m_1' clashes with field 'Target.id'. Add a related_name argument to the definition for 'm2m_1'.\ninvalid_models.clash2: Accessor for m2m field 'm2m_1' clashes with related field 'Target.id'. Add a related_name argument to the definition for 'm2m_1'.\ninvalid_models.clash2: Reverse query name for m2m field 'm2m_1' clashes with field 'Target.id'. Add a related_name argument to the definition for 'm2m_1'.\ninvalid_models.clash2: Reverse query name for m2m field 'm2m_1' clashes with related field 'Target.id'. Add a related_name argument to the definition for 'm2m_1'.\ninvalid_models.clash2: Accessor for m2m field 'm2m_2' clashes with related field 'Target.src_safe'. Add a related_name argument to the definition for 'm2m_2'.\ninvalid_models.clash2: Reverse query name for m2m field 'm2m_2' clashes with related field 'Target.src_safe'. Add a related_name argument to the definition for 'm2m_2'.\ninvalid_models.clash3: Accessor for field 'foreign_1' clashes with field 'Target2.foreign_tgt'. Add a related_name argument to the definition for 'foreign_1'.\ninvalid_models.clash3: Accessor for field 'foreign_1' clashes with related m2m field 'Target2.foreign_tgt'. Add a related_name argument to the definition for 'foreign_1'.\ninvalid_models.clash3: Reverse query name for field 'foreign_1' clashes with field 'Target2.foreign_tgt'. Add a related_name argument to the definition for 'foreign_1'.\ninvalid_models.clash3: Reverse query name for field 'foreign_1' clashes with related m2m field 'Target2.foreign_tgt'. Add a related_name argument to the definition for 'foreign_1'.\ninvalid_models.clash3: Accessor for field 'foreign_2' clashes with m2m field 'Target2.m2m_tgt'. Add a related_name argument to the definition for 'foreign_2'.\ninvalid_models.clash3: Accessor for field 'foreign_2' clashes with related m2m field 'Target2.m2m_tgt'. Add a related_name argument to the definition for 'foreign_2'.\ninvalid_models.clash3: Reverse query name for field 'foreign_2' clashes with m2m field 'Target2.m2m_tgt'. Add a related_name argument to the definition for 'foreign_2'.\ninvalid_models.clash3: Reverse query name for field 'foreign_2' clashes with related m2m field 'Target2.m2m_tgt'. Add a related_name argument to the definition for 'foreign_2'.\ninvalid_models.clash3: Accessor for m2m field 'm2m_1' clashes with field 'Target2.foreign_tgt'. Add a related_name argument to the definition for 'm2m_1'.\ninvalid_models.clash3: Accessor for m2m field 'm2m_1' clashes with related field 'Target2.foreign_tgt'. Add a related_name argument to the definition for 'm2m_1'.\ninvalid_models.clash3: Reverse query name for m2m field 'm2m_1' clashes with field 'Target2.foreign_tgt'. Add a related_name argument to the definition for 'm2m_1'.\ninvalid_models.clash3: Reverse query name for m2m field 'm2m_1' clashes with related field 'Target2.foreign_tgt'. Add a related_name argument to the definition for 'm2m_1'.\ninvalid_models.clash3: Accessor for m2m field 'm2m_2' clashes with m2m field 'Target2.m2m_tgt'. Add a related_name argument to the definition for 'm2m_2'.\ninvalid_models.clash3: Accessor for m2m field 'm2m_2' clashes with related field 'Target2.m2m_tgt'. Add a related_name argument to the definition for 'm2m_2'.\ninvalid_models.clash3: Reverse query name for m2m field 'm2m_2' clashes with m2m field 'Target2.m2m_tgt'. Add a related_name argument to the definition for 'm2m_2'.\ninvalid_models.clash3: Reverse query name for m2m field 'm2m_2' clashes with related field 'Target2.m2m_tgt'. Add a related_name argument to the definition for 'm2m_2'.\ninvalid_models.clashforeign: Accessor for field 'foreign' clashes with field 'Target2.clashforeign_set'. Add a related_name argument to the definition for 'foreign'.\ninvalid_models.clashm2m: Accessor for m2m field 'm2m' clashes with m2m field 'Target2.clashm2m_set'. Add a related_name argument to the definition for 'm2m'.\ninvalid_models.target2: Accessor for field 'foreign_tgt' clashes with related m2m field 'Target.target2_set'. Add a related_name argument to the definition for 'foreign_tgt'.\ninvalid_models.target2: Accessor for field 'foreign_tgt' clashes with related m2m field 'Target.target2_set'. Add a related_name argument to the definition for 'foreign_tgt'.\ninvalid_models.target2: Accessor for field 'foreign_tgt' clashes with related field 'Target.target2_set'. Add a related_name argument to the definition for 'foreign_tgt'.\ninvalid_models.target2: Accessor for field 'clashforeign_set' clashes with related m2m field 'Target.target2_set'. Add a related_name argument to the definition for 'clashforeign_set'.\ninvalid_models.target2: Accessor for field 'clashforeign_set' clashes with related m2m field 'Target.target2_set'. Add a related_name argument to the definition for 'clashforeign_set'.\ninvalid_models.target2: Accessor for field 'clashforeign_set' clashes with related field 'Target.target2_set'. Add a related_name argument to the definition for 'clashforeign_set'.\ninvalid_models.target2: Accessor for m2m field 'm2m_tgt' clashes with related field 'Target.target2_set'. Add a related_name argument to the definition for 'm2m_tgt'.\ninvalid_models.target2: Accessor for m2m field 'm2m_tgt' clashes with related field 'Target.target2_set'. Add a related_name argument to the definition for 'm2m_tgt'.\ninvalid_models.target2: Accessor for m2m field 'm2m_tgt' clashes with related m2m field 'Target.target2_set'. Add a related_name argument to the definition for 'm2m_tgt'.\ninvalid_models.target2: Accessor for m2m field 'm2m_tgt' clashes with related m2m field 'Target.target2_set'. Add a related_name argument to the definition for 'm2m_tgt'.\ninvalid_models.target2: Accessor for m2m field 'm2m_tgt' clashes with related m2m field 'Target.target2_set'. Add a related_name argument to the definition for 'm2m_tgt'.\ninvalid_models.target2: Accessor for m2m field 'clashm2m_set' clashes with related field 'Target.target2_set'. Add a related_name argument to the definition for 'clashm2m_set'.\ninvalid_models.target2: Accessor for m2m field 'clashm2m_set' clashes with related field 'Target.target2_set'. Add a related_name argument to the definition for 'clashm2m_set'.\ninvalid_models.target2: Accessor for m2m field 'clashm2m_set' clashes with related m2m field 'Target.target2_set'. Add a related_name argument to the definition for 'clashm2m_set'.\ninvalid_models.target2: Accessor for m2m field 'clashm2m_set' clashes with related m2m field 'Target.target2_set'. Add a related_name argument to the definition for 'clashm2m_set'.\ninvalid_models.target2: Accessor for m2m field 'clashm2m_set' clashes with related m2m field 'Target.target2_set'. Add a related_name argument to the definition for 'clashm2m_set'.\ninvalid_models.selfclashforeign: Accessor for field 'selfclashforeign_set' clashes with field 'SelfClashForeign.selfclashforeign_set'. Add a related_name argument to the definition for 'selfclashforeign_set'.\ninvalid_models.selfclashforeign: Reverse query name for field 'selfclashforeign_set' clashes with field 'SelfClashForeign.selfclashforeign'. Add a related_name argument to the definition for 'selfclashforeign_set'.\ninvalid_models.selfclashforeign: Accessor for field 'foreign_1' clashes with field 'SelfClashForeign.id'. Add a related_name argument to the definition for 'foreign_1'.\ninvalid_models.selfclashforeign: Reverse query name for field 'foreign_1' clashes with field 'SelfClashForeign.id'. Add a related_name argument to the definition for 'foreign_1'.\ninvalid_models.selfclashforeign: Accessor for field 'foreign_2' clashes with field 'SelfClashForeign.src_safe'. Add a related_name argument to the definition for 'foreign_2'.\ninvalid_models.selfclashforeign: Reverse query name for field 'foreign_2' clashes with field 'SelfClashForeign.src_safe'. Add a related_name argument to the definition for 'foreign_2'.\ninvalid_models.selfclashm2m: Accessor for m2m field 'selfclashm2m_set' clashes with m2m field 'SelfClashM2M.selfclashm2m_set'. Add a related_name argument to the definition for 'selfclashm2m_set'.\ninvalid_models.selfclashm2m: Reverse query name for m2m field 'selfclashm2m_set' clashes with field 'SelfClashM2M.selfclashm2m'. Add a related_name argument to the definition for 'selfclashm2m_set'.\ninvalid_models.selfclashm2m: Accessor for m2m field 'selfclashm2m_set' clashes with related m2m field 'SelfClashM2M.selfclashm2m_set'. Add a related_name argument to the definition for 'selfclashm2m_set'.\ninvalid_models.selfclashm2m: Accessor for m2m field 'm2m_1' clashes with field 'SelfClashM2M.id'. Add a related_name argument to the definition for 'm2m_1'.\ninvalid_models.selfclashm2m: Accessor for m2m field 'm2m_2' clashes with field 'SelfClashM2M.src_safe'. Add a related_name argument to the definition for 'm2m_2'.\ninvalid_models.selfclashm2m: Reverse query name for m2m field 'm2m_1' clashes with field 'SelfClashM2M.id'. Add a related_name argument to the definition for 'm2m_1'.\ninvalid_models.selfclashm2m: Reverse query name for m2m field 'm2m_2' clashes with field 'SelfClashM2M.src_safe'. Add a related_name argument to the definition for 'm2m_2'.\ninvalid_models.selfclashm2m: Accessor for m2m field 'm2m_3' clashes with m2m field 'SelfClashM2M.selfclashm2m_set'. Add a related_name argument to the definition for 'm2m_3'.\ninvalid_models.selfclashm2m: Accessor for m2m field 'm2m_3' clashes with related m2m field 'SelfClashM2M.selfclashm2m_set'. Add a related_name argument to the definition for 'm2m_3'.\ninvalid_models.selfclashm2m: Accessor for m2m field 'm2m_3' clashes with related m2m field 'SelfClashM2M.selfclashm2m_set'. Add a related_name argument to the definition for 'm2m_3'.\ninvalid_models.selfclashm2m: Accessor for m2m field 'm2m_4' clashes with m2m field 'SelfClashM2M.selfclashm2m_set'. Add a related_name argument to the definition for 'm2m_4'.\ninvalid_models.selfclashm2m: Accessor for m2m field 'm2m_4' clashes with related m2m field 'SelfClashM2M.selfclashm2m_set'. Add a related_name argument to the definition for 'm2m_4'.\ninvalid_models.selfclashm2m: Accessor for m2m field 'm2m_4' clashes with related m2m field 'SelfClashM2M.selfclashm2m_set'. Add a related_name argument to the definition for 'm2m_4'.\ninvalid_models.selfclashm2m: Reverse query name for m2m field 'm2m_3' clashes with field 'SelfClashM2M.selfclashm2m'. Add a related_name argument to the definition for 'm2m_3'.\ninvalid_models.selfclashm2m: Reverse query name for m2m field 'm2m_4' clashes with field 'SelfClashM2M.selfclashm2m'. Add a related_name argument to the definition for 'm2m_4'.\ninvalid_models.missingrelations: 'rel1' has a relation with model Rel1, which has either not been installed or is abstract.\ninvalid_models.missingrelations: 'rel2' has an m2m relation with model Rel2, which has either not been installed or is abstract.\ninvalid_models.grouptwo: 'primary' is a manually-defined m2m relation through model Membership, which does not have foreign keys to Person and GroupTwo\ninvalid_models.grouptwo: 'secondary' is a manually-defined m2m relation through model MembershipMissingFK, which does not have foreign keys to Group and GroupTwo\ninvalid_models.missingmanualm2mmodel: 'missing_m2m' specifies an m2m relation through model MissingM2MModel, which has not been installed\ninvalid_models.group: The model Group has two manually-defined m2m relations through the model Membership, which is not permitted. Please consider using an extra field on your intermediary model instead.\ninvalid_models.group: Intermediary model RelationshipDoubleFK has more than one foreign key to Person, which is ambiguous and is not permitted.\ninvalid_models.personselfrefm2m: Many-to-many fields with intermediate tables cannot be symmetrical.\ninvalid_models.personselfrefm2m: Intermediary model RelationshipTripleFK has more than two foreign keys to PersonSelfRefM2M, which is ambiguous and is not permitted.\ninvalid_models.personselfrefm2mexplicit: Many-to-many fields with intermediate tables cannot be symmetrical.\ninvalid_models.abstractrelationmodel: 'fk1' has a relation with model AbstractModel, which has either not been installed or is abstract.\ninvalid_models.abstractrelationmodel: 'fk2' has an m2m relation with model AbstractModel, which has either not been installed or is abstract.\ninvalid_models.uniquem2m: ManyToManyFields cannot be unique.  Remove the unique argument on 'unique_people'.\ninvalid_models.nonuniquefktarget1: Field 'bad' under model 'FKTarget' must have a unique=True constraint.\ninvalid_models.nonuniquefktarget2: Field 'bad' under model 'FKTarget' must have a unique=True constraint.\ninvalid_models.nonexistingorderingwithsingleunderscore: \"ordering\" refers to \"does_not_exist\", a field that doesn't exist.\ninvalid_models.invalidsetnull: 'fk' specifies on_delete=SET_NULL, but cannot be null.\ninvalid_models.invalidsetdefault: 'fk' specifies on_delete=SET_DEFAULT, but has no default value.\ninvalid_models.hardreferencemodel: 'fk_3' defines a relation with the model 'invalid_models.SwappedModel', which has been swapped out. Update the relation to point at settings.TEST_SWAPPED_MODEL.\ninvalid_models.hardreferencemodel: 'fk_4' defines a relation with the model 'invalid_models.SwappedModel', which has been swapped out. Update the relation to point at settings.TEST_SWAPPED_MODEL.\ninvalid_models.hardreferencemodel: 'm2m_3' defines a relation with the model 'invalid_models.SwappedModel', which has been swapped out. Update the relation to point at settings.TEST_SWAPPED_MODEL.\ninvalid_models.hardreferencemodel: 'm2m_4' defines a relation with the model 'invalid_models.SwappedModel', which has been swapped out. Update the relation to point at settings.TEST_SWAPPED_MODEL.\ninvalid_models.badswappablevalue: TEST_SWAPPED_MODEL_BAD_VALUE is not of the form 'app_label.app_name'.\ninvalid_models.badswappablemodel: Model has been swapped out for 'not_an_app.Target' which has not been installed or is abstract.\ninvalid_models.badindextogether1: \"index_together\" refers to field_that_does_not_exist, a field that doesn't exist.\n\"\"\"\n\nif not connection.features.interprets_empty_strings_as_nulls:\n    model_errors += \"\"\"invalid_models.primarykeynull: \"my_pk_field\": Primary key fields cannot have null=True.\n\"\"\"\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/invalid_models/models.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/invalid_models/tests.py",
    "content": "import copy\nimport sys\n\nfrom django.core.management.validation import get_validation_errors\nfrom django.db.models.loading import cache, load_app\n\nfrom django.test.utils import override_settings\nfrom django.utils import unittest\nfrom django.utils.six import StringIO\n\n\nclass InvalidModelTestCase(unittest.TestCase):\n    \"\"\"Import an appliation with invalid models and test the exceptions.\"\"\"\n\n    def setUp(self):\n        # Make sure sys.stdout is not a tty so that we get errors without\n        # coloring attached (makes matching the results easier). We restore\n        # sys.stderr afterwards.\n        self.old_stdout = sys.stdout\n        self.stdout = StringIO()\n        sys.stdout = self.stdout\n\n        # This test adds dummy applications to the app cache. These\n        # need to be removed in order to prevent bad interactions\n        # with the flush operation in other tests.\n        self.old_app_models = copy.deepcopy(cache.app_models)\n        self.old_app_store = copy.deepcopy(cache.app_store)\n\n    def tearDown(self):\n        cache.app_models = self.old_app_models\n        cache.app_store = self.old_app_store\n        cache._get_models_cache = {}\n        sys.stdout = self.old_stdout\n\n    # Technically, this isn't an override -- TEST_SWAPPED_MODEL must be\n    # set to *something* in order for the test to work. However, it's\n    # easier to set this up as an override than to require every developer\n    # to specify a value in their test settings.\n    @override_settings(\n        TEST_SWAPPED_MODEL='invalid_models.ReplacementModel',\n        TEST_SWAPPED_MODEL_BAD_VALUE='not-a-model',\n        TEST_SWAPPED_MODEL_BAD_MODEL='not_an_app.Target',\n    )\n    def test_invalid_models(self):\n        try:\n            module = load_app(\"modeltests.invalid_models.invalid_models\")\n        except Exception:\n            self.fail('Unable to load invalid model module')\n\n        get_validation_errors(self.stdout, module)\n        self.stdout.seek(0)\n        error_log = self.stdout.read()\n        actual = error_log.split('\\n')\n        expected = module.model_errors.split('\\n')\n\n        unexpected = [err for err in actual if err not in expected]\n        missing = [err for err in expected if err not in actual]\n        self.assertFalse(unexpected, \"Unexpected Errors: \" + '\\n'.join(unexpected))\n        self.assertFalse(missing, \"Missing Errors: \" + '\\n'.join(missing))\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/known_related_objects/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/known_related_objects/fixtures/tournament.json",
    "content": "[\n    {\n        \"pk\": 1,\n        \"model\": \"known_related_objects.tournament\",\n        \"fields\": {\n            \"name\": \"Tourney 1\"\n        }\n    },\n    {\n        \"pk\": 2,\n        \"model\": \"known_related_objects.tournament\",\n        \"fields\": {\n            \"name\": \"Tourney 2\"\n        }\n    },\n    {\n        \"pk\": 1,\n        \"model\": \"known_related_objects.organiser\",\n        \"fields\": {\n            \"name\": \"Organiser 1\"\n        }\n    },\n    {\n        \"pk\": 1,\n        \"model\": \"known_related_objects.pool\",\n        \"fields\": {\n            \"tournament\": 1,\n            \"organiser\": 1,\n            \"name\": \"T1 Pool 1\"\n        }\n    },\n    {\n        \"pk\": 2,\n        \"model\": \"known_related_objects.pool\",\n        \"fields\": {\n            \"tournament\": 1,\n            \"organiser\": 1,\n            \"name\": \"T1 Pool 2\"\n        }\n    },\n    {\n        \"pk\": 3,\n        \"model\": \"known_related_objects.pool\",\n        \"fields\": {\n            \"tournament\": 2,\n            \"organiser\": 1,\n            \"name\": \"T2 Pool 1\"\n        }\n    },\n    {\n        \"pk\": 4,\n        \"model\": \"known_related_objects.pool\",\n        \"fields\": {\n            \"tournament\": 2,\n            \"organiser\": 1,\n            \"name\": \"T2 Pool 2\"\n        }\n    },\n    {\n        \"pk\": 1,\n        \"model\": \"known_related_objects.poolstyle\",\n        \"fields\": {\n            \"name\": \"T1 Pool 2 Style\",\n            \"pool\": 2\n        }\n    },\n    {\n        \"pk\": 2,\n        \"model\": \"known_related_objects.poolstyle\",\n        \"fields\": {\n            \"name\": \"T2 Pool 1 Style\",\n            \"pool\": 3\n        }\n    }\n]\n\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/known_related_objects/models.py",
    "content": "\"\"\"\nExisting related object instance caching.\n\nTest that queries are not redone when going back through known relations.\n\"\"\"\n\nfrom django.db import models\n\nclass Tournament(models.Model):\n    name = models.CharField(max_length=30)\n\nclass Organiser(models.Model):\n    name = models.CharField(max_length=30)\n\nclass Pool(models.Model):\n    name = models.CharField(max_length=30)\n    tournament = models.ForeignKey(Tournament)\n    organiser = models.ForeignKey(Organiser)\n\nclass PoolStyle(models.Model):\n    name = models.CharField(max_length=30)\n    pool = models.OneToOneField(Pool)\n\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/known_related_objects/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom django.test import TestCase\n\nfrom .models import Tournament, Organiser, Pool, PoolStyle\n\nclass ExistingRelatedInstancesTests(TestCase):\n    fixtures = ['tournament.json']\n\n    def test_foreign_key(self):\n        with self.assertNumQueries(2):\n            tournament = Tournament.objects.get(pk=1)\n            pool = tournament.pool_set.all()[0]\n            self.assertIs(tournament, pool.tournament)\n\n    def test_foreign_key_prefetch_related(self):\n        with self.assertNumQueries(2):\n            tournament = (Tournament.objects.prefetch_related('pool_set').get(pk=1))\n            pool = tournament.pool_set.all()[0]\n            self.assertIs(tournament, pool.tournament)\n\n    def test_foreign_key_multiple_prefetch(self):\n        with self.assertNumQueries(2):\n            tournaments = list(Tournament.objects.prefetch_related('pool_set').order_by('pk'))\n            pool1 = tournaments[0].pool_set.all()[0]\n            self.assertIs(tournaments[0], pool1.tournament)\n            pool2 = tournaments[1].pool_set.all()[0]\n            self.assertIs(tournaments[1], pool2.tournament)\n\n    def test_queryset_or(self):\n        tournament_1 = Tournament.objects.get(pk=1)\n        tournament_2 = Tournament.objects.get(pk=2)\n        with self.assertNumQueries(1):\n            pools = tournament_1.pool_set.all() | tournament_2.pool_set.all()\n            related_objects = set(pool.tournament for pool in pools)\n            self.assertEqual(related_objects, set((tournament_1, tournament_2)))\n\n    def test_queryset_or_different_cached_items(self):\n        tournament = Tournament.objects.get(pk=1)\n        organiser = Organiser.objects.get(pk=1)\n        with self.assertNumQueries(1):\n            pools = tournament.pool_set.all() | organiser.pool_set.all()\n            first = pools.filter(pk=1)[0]\n            self.assertIs(first.tournament, tournament)\n            self.assertIs(first.organiser, organiser)\n\n    def test_queryset_or_only_one_with_precache(self):\n        tournament_1 = Tournament.objects.get(pk=1)\n        tournament_2 = Tournament.objects.get(pk=2)\n        # 2 queries here as pool id 3 has tournament 2, which is not cached\n        with self.assertNumQueries(2):\n            pools = tournament_1.pool_set.all() | Pool.objects.filter(pk=3)\n            related_objects = set(pool.tournament for pool in pools)\n            self.assertEqual(related_objects, set((tournament_1, tournament_2)))\n        # and the other direction\n        with self.assertNumQueries(2):\n            pools = Pool.objects.filter(pk=3) | tournament_1.pool_set.all()\n            related_objects = set(pool.tournament for pool in pools)\n            self.assertEqual(related_objects, set((tournament_1, tournament_2)))\n\n    def test_queryset_and(self):\n        tournament = Tournament.objects.get(pk=1)\n        organiser = Organiser.objects.get(pk=1)\n        with self.assertNumQueries(1):\n            pools = tournament.pool_set.all() & organiser.pool_set.all()\n            first = pools.filter(pk=1)[0]\n            self.assertIs(first.tournament, tournament)\n            self.assertIs(first.organiser, organiser)\n\n    def test_one_to_one(self):\n        with self.assertNumQueries(2):\n            style = PoolStyle.objects.get(pk=1)\n            pool = style.pool\n            self.assertIs(style, pool.poolstyle)\n\n    def test_one_to_one_select_related(self):\n        with self.assertNumQueries(1):\n            style = PoolStyle.objects.select_related('pool').get(pk=1)\n            pool = style.pool\n            self.assertIs(style, pool.poolstyle)\n\n    def test_one_to_one_multi_select_related(self):\n        with self.assertNumQueries(1):\n            poolstyles = list(PoolStyle.objects.select_related('pool').order_by('pk'))\n            self.assertIs(poolstyles[0], poolstyles[0].pool.poolstyle)\n            self.assertIs(poolstyles[1], poolstyles[1].pool.poolstyle)\n\n    def test_one_to_one_prefetch_related(self):\n        with self.assertNumQueries(2):\n            style = PoolStyle.objects.prefetch_related('pool').get(pk=1)\n            pool = style.pool\n            self.assertIs(style, pool.poolstyle)\n\n    def test_one_to_one_multi_prefetch_related(self):\n        with self.assertNumQueries(2):\n            poolstyles = list(PoolStyle.objects.prefetch_related('pool').order_by('pk'))\n            self.assertIs(poolstyles[0], poolstyles[0].pool.poolstyle)\n            self.assertIs(poolstyles[1], poolstyles[1].pool.poolstyle)\n\n    def test_reverse_one_to_one(self):\n        with self.assertNumQueries(2):\n            pool = Pool.objects.get(pk=2)\n            style = pool.poolstyle\n            self.assertIs(pool, style.pool)\n\n    def test_reverse_one_to_one_select_related(self):\n        with self.assertNumQueries(1):\n            pool = Pool.objects.select_related('poolstyle').get(pk=2)\n            style = pool.poolstyle\n            self.assertIs(pool, style.pool)\n\n    def test_reverse_one_to_one_prefetch_related(self):\n        with self.assertNumQueries(2):\n            pool = Pool.objects.prefetch_related('poolstyle').get(pk=2)\n            style = pool.poolstyle\n            self.assertIs(pool, style.pool)\n\n    def test_reverse_one_to_one_multi_select_related(self):\n        with self.assertNumQueries(1):\n            pools = list(Pool.objects.select_related('poolstyle').order_by('pk'))\n            self.assertIs(pools[1], pools[1].poolstyle.pool)\n            self.assertIs(pools[2], pools[2].poolstyle.pool)\n\n    def test_reverse_one_to_one_multi_prefetch_related(self):\n        with self.assertNumQueries(2):\n            pools = list(Pool.objects.prefetch_related('poolstyle').order_by('pk'))\n            self.assertIs(pools[1], pools[1].poolstyle.pool)\n            self.assertIs(pools[2], pools[2].poolstyle.pool)\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/lookup/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/lookup/models.py",
    "content": "\"\"\"\n7. The lookup API\n\nThis demonstrates features of the database API.\n\"\"\"\n\nfrom __future__ import unicode_literals\n\nfrom django.db import models\nfrom django.utils import six\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\nclass Author(models.Model):\n    name = models.CharField(max_length=100)\n    class Meta:\n        ordering = ('name', )\n\n@python_2_unicode_compatible\nclass Article(models.Model):\n    headline = models.CharField(max_length=100)\n    pub_date = models.DateTimeField()\n    author = models.ForeignKey(Author, blank=True, null=True)\n    class Meta:\n        ordering = ('-pub_date', 'headline')\n\n    def __str__(self):\n        return self.headline\n\nclass Tag(models.Model):\n    articles = models.ManyToManyField(Article)\n    name = models.CharField(max_length=100)\n    class Meta:\n        ordering = ('name', )\n\n@python_2_unicode_compatible\nclass Season(models.Model):\n    year = models.PositiveSmallIntegerField()\n    gt = models.IntegerField(null=True, blank=True)\n\n    def __str__(self):\n        return six.text_type(self.year)\n\n@python_2_unicode_compatible\nclass Game(models.Model):\n    season = models.ForeignKey(Season, related_name='games')\n    home = models.CharField(max_length=100)\n    away = models.CharField(max_length=100)\n\n    def __str__(self):\n        return \"%s at %s\" % (self.away, self.home)\n\n@python_2_unicode_compatible\nclass Player(models.Model):\n    name = models.CharField(max_length=100)\n    games = models.ManyToManyField(Game, related_name='players')\n\n    def __str__(self):\n        return self.name\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/lookup/tests.py",
    "content": "from __future__ import absolute_import, unicode_literals\n\nfrom datetime import datetime\nfrom operator import attrgetter\n\nfrom django.core.exceptions import FieldError\nfrom django.test import TestCase, skipUnlessDBFeature\n\nfrom .models import Author, Article, Tag, Game, Season, Player\n\n\nclass LookupTests(TestCase):\n\n    def setUp(self):\n        # Create a few Authors.\n        self.au1 = Author(name='Author 1')\n        self.au1.save()\n        self.au2 = Author(name='Author 2')\n        self.au2.save()\n        # Create a couple of Articles.\n        self.a1 = Article(headline='Article 1', pub_date=datetime(2005, 7, 26), author=self.au1)\n        self.a1.save()\n        self.a2 = Article(headline='Article 2', pub_date=datetime(2005, 7, 27), author=self.au1)\n        self.a2.save()\n        self.a3 = Article(headline='Article 3', pub_date=datetime(2005, 7, 27), author=self.au1)\n        self.a3.save()\n        self.a4 = Article(headline='Article 4', pub_date=datetime(2005, 7, 28), author=self.au1)\n        self.a4.save()\n        self.a5 = Article(headline='Article 5', pub_date=datetime(2005, 8, 1, 9, 0), author=self.au2)\n        self.a5.save()\n        self.a6 = Article(headline='Article 6', pub_date=datetime(2005, 8, 1, 8, 0), author=self.au2)\n        self.a6.save()\n        self.a7 = Article(headline='Article 7', pub_date=datetime(2005, 7, 27), author=self.au2)\n        self.a7.save()\n        # Create a few Tags.\n        self.t1 = Tag(name='Tag 1')\n        self.t1.save()\n        self.t1.articles.add(self.a1, self.a2, self.a3)\n        self.t2 = Tag(name='Tag 2')\n        self.t2.save()\n        self.t2.articles.add(self.a3, self.a4, self.a5)\n        self.t3 = Tag(name='Tag 3')\n        self.t3.save()\n        self.t3.articles.add(self.a5, self.a6, self.a7)\n\n    def test_exists(self):\n        # We can use .exists() to check that there are some\n        self.assertTrue(Article.objects.exists())\n        for a in Article.objects.all():\n            a.delete()\n        # There should be none now!\n        self.assertFalse(Article.objects.exists())\n\n    def test_lookup_int_as_str(self):\n        # Integer value can be queried using string\n        self.assertQuerysetEqual(Article.objects.filter(id__iexact=str(self.a1.id)),\n                                 ['<Article: Article 1>'])\n\n    @skipUnlessDBFeature('supports_date_lookup_using_string')\n    def test_lookup_date_as_str(self):\n        # A date lookup can be performed using a string search\n        self.assertQuerysetEqual(Article.objects.filter(pub_date__startswith='2005'),\n            [\n                '<Article: Article 5>',\n                '<Article: Article 6>',\n                '<Article: Article 4>',\n                '<Article: Article 2>',\n                '<Article: Article 3>',\n                '<Article: Article 7>',\n                '<Article: Article 1>',\n            ])\n\n    def test_iterator(self):\n        # Each QuerySet gets iterator(), which is a generator that \"lazily\"\n        # returns results using database-level iteration.\n        self.assertQuerysetEqual(Article.objects.iterator(),\n            [\n                'Article 5',\n                'Article 6',\n                'Article 4',\n                'Article 2',\n                'Article 3',\n                'Article 7',\n                'Article 1',\n            ],\n            transform=attrgetter('headline'))\n        # iterator() can be used on any QuerySet.\n        self.assertQuerysetEqual(\n            Article.objects.filter(headline__endswith='4').iterator(),\n            ['Article 4'],\n            transform=attrgetter('headline'))\n\n    def test_count(self):\n        # count() returns the number of objects matching search criteria.\n        self.assertEqual(Article.objects.count(), 7)\n        self.assertEqual(Article.objects.filter(pub_date__exact=datetime(2005, 7, 27)).count(), 3)\n        self.assertEqual(Article.objects.filter(headline__startswith='Blah blah').count(), 0)\n\n        # count() should respect sliced query sets.\n        articles = Article.objects.all()\n        self.assertEqual(articles.count(), 7)\n        self.assertEqual(articles[:4].count(), 4)\n        self.assertEqual(articles[1:100].count(), 6)\n        self.assertEqual(articles[10:100].count(), 0)\n\n        # Date and date/time lookups can also be done with strings.\n        self.assertEqual(Article.objects.filter(pub_date__exact='2005-07-27 00:00:00').count(), 3)\n\n    def test_in_bulk(self):\n        # in_bulk() takes a list of IDs and returns a dictionary mapping IDs to objects.\n        arts = Article.objects.in_bulk([self.a1.id, self.a2.id])\n        self.assertEqual(arts[self.a1.id], self.a1)\n        self.assertEqual(arts[self.a2.id], self.a2)\n        self.assertEqual(Article.objects.in_bulk([self.a3.id]), {self.a3.id: self.a3})\n        self.assertEqual(Article.objects.in_bulk(set([self.a3.id])), {self.a3.id: self.a3})\n        self.assertEqual(Article.objects.in_bulk(frozenset([self.a3.id])), {self.a3.id: self.a3})\n        self.assertEqual(Article.objects.in_bulk((self.a3.id,)), {self.a3.id: self.a3})\n        self.assertEqual(Article.objects.in_bulk([1000]), {})\n        self.assertEqual(Article.objects.in_bulk([]), {})\n        self.assertEqual(Article.objects.in_bulk(iter([self.a1.id])), {self.a1.id: self.a1})\n        self.assertEqual(Article.objects.in_bulk(iter([])), {})\n        self.assertRaises(TypeError, Article.objects.in_bulk)\n        self.assertRaises(TypeError, Article.objects.in_bulk, headline__startswith='Blah')\n\n    def test_values(self):\n        # values() returns a list of dictionaries instead of object instances --\n        # and you can specify which fields you want to retrieve.\n        identity = lambda x:x\n        self.assertQuerysetEqual(Article.objects.values('headline'),\n            [\n                {'headline': 'Article 5'},\n                {'headline': 'Article 6'},\n                {'headline': 'Article 4'},\n                {'headline': 'Article 2'},\n                {'headline': 'Article 3'},\n                {'headline': 'Article 7'},\n                {'headline': 'Article 1'},\n            ],\n            transform=identity)\n        self.assertQuerysetEqual(\n            Article.objects.filter(pub_date__exact=datetime(2005, 7, 27)).values('id'),\n            [{'id': self.a2.id}, {'id': self.a3.id}, {'id': self.a7.id}],\n            transform=identity)\n        self.assertQuerysetEqual(Article.objects.values('id', 'headline'),\n            [\n                {'id': self.a5.id, 'headline': 'Article 5'},\n                {'id': self.a6.id, 'headline': 'Article 6'},\n                {'id': self.a4.id, 'headline': 'Article 4'},\n                {'id': self.a2.id, 'headline': 'Article 2'},\n                {'id': self.a3.id, 'headline': 'Article 3'},\n                {'id': self.a7.id, 'headline': 'Article 7'},\n                {'id': self.a1.id, 'headline': 'Article 1'},\n            ],\n            transform=identity)\n        # You can use values() with iterator() for memory savings,\n        # because iterator() uses database-level iteration.\n        self.assertQuerysetEqual(Article.objects.values('id', 'headline').iterator(),\n            [\n                {'headline': 'Article 5', 'id': self.a5.id},\n                {'headline': 'Article 6', 'id': self.a6.id},\n                {'headline': 'Article 4', 'id': self.a4.id},\n                {'headline': 'Article 2', 'id': self.a2.id},\n                {'headline': 'Article 3', 'id': self.a3.id},\n                {'headline': 'Article 7', 'id': self.a7.id},\n                {'headline': 'Article 1', 'id': self.a1.id},\n            ],\n            transform=identity)\n        # The values() method works with \"extra\" fields specified in extra(select).\n        self.assertQuerysetEqual(\n            Article.objects.extra(select={'id_plus_one': 'id + 1'}).values('id', 'id_plus_one'),\n            [\n                {'id': self.a5.id, 'id_plus_one': self.a5.id + 1},\n                {'id': self.a6.id, 'id_plus_one': self.a6.id + 1},\n                {'id': self.a4.id, 'id_plus_one': self.a4.id + 1},\n                {'id': self.a2.id, 'id_plus_one': self.a2.id + 1},\n                {'id': self.a3.id, 'id_plus_one': self.a3.id + 1},\n                {'id': self.a7.id, 'id_plus_one': self.a7.id + 1},\n                {'id': self.a1.id, 'id_plus_one': self.a1.id + 1},\n            ],\n            transform=identity)\n        data = {\n            'id_plus_one': 'id+1',\n            'id_plus_two': 'id+2',\n            'id_plus_three': 'id+3',\n            'id_plus_four': 'id+4',\n            'id_plus_five': 'id+5',\n            'id_plus_six': 'id+6',\n            'id_plus_seven': 'id+7',\n            'id_plus_eight': 'id+8',\n        }\n        self.assertQuerysetEqual(\n            Article.objects.filter(id=self.a1.id).extra(select=data).values(*data.keys()),\n            [{\n                'id_plus_one': self.a1.id + 1,\n                'id_plus_two': self.a1.id + 2,\n                'id_plus_three': self.a1.id + 3,\n                'id_plus_four': self.a1.id + 4,\n                'id_plus_five': self.a1.id + 5,\n                'id_plus_six': self.a1.id + 6,\n                'id_plus_seven': self.a1.id + 7,\n                'id_plus_eight': self.a1.id + 8,\n            }], transform=identity)\n        # You can specify fields from forward and reverse relations, just like filter().\n        self.assertQuerysetEqual(\n            Article.objects.values('headline', 'author__name'),\n            [\n                {'headline': self.a5.headline, 'author__name': self.au2.name},\n                {'headline': self.a6.headline, 'author__name': self.au2.name},\n                {'headline': self.a4.headline, 'author__name': self.au1.name},\n                {'headline': self.a2.headline, 'author__name': self.au1.name},\n                {'headline': self.a3.headline, 'author__name': self.au1.name},\n                {'headline': self.a7.headline, 'author__name': self.au2.name},\n                {'headline': self.a1.headline, 'author__name': self.au1.name},\n            ], transform=identity)\n        self.assertQuerysetEqual(\n            Author.objects.values('name', 'article__headline').order_by('name', 'article__headline'),\n            [\n                {'name': self.au1.name, 'article__headline': self.a1.headline},\n                {'name': self.au1.name, 'article__headline': self.a2.headline},\n                {'name': self.au1.name, 'article__headline': self.a3.headline},\n                {'name': self.au1.name, 'article__headline': self.a4.headline},\n                {'name': self.au2.name, 'article__headline': self.a5.headline},\n                {'name': self.au2.name, 'article__headline': self.a6.headline},\n                {'name': self.au2.name, 'article__headline': self.a7.headline},\n            ], transform=identity)\n        self.assertQuerysetEqual(\n            Author.objects.values('name', 'article__headline', 'article__tag__name').order_by('name', 'article__headline', 'article__tag__name'),\n            [\n                {'name': self.au1.name, 'article__headline': self.a1.headline, 'article__tag__name': self.t1.name},\n                {'name': self.au1.name, 'article__headline': self.a2.headline, 'article__tag__name': self.t1.name},\n                {'name': self.au1.name, 'article__headline': self.a3.headline, 'article__tag__name': self.t1.name},\n                {'name': self.au1.name, 'article__headline': self.a3.headline, 'article__tag__name': self.t2.name},\n                {'name': self.au1.name, 'article__headline': self.a4.headline, 'article__tag__name': self.t2.name},\n                {'name': self.au2.name, 'article__headline': self.a5.headline, 'article__tag__name': self.t2.name},\n                {'name': self.au2.name, 'article__headline': self.a5.headline, 'article__tag__name': self.t3.name},\n                {'name': self.au2.name, 'article__headline': self.a6.headline, 'article__tag__name': self.t3.name},\n                {'name': self.au2.name, 'article__headline': self.a7.headline, 'article__tag__name': self.t3.name},\n            ], transform=identity)\n        # However, an exception FieldDoesNotExist will be thrown if you specify\n        # a non-existent field name in values() (a field that is neither in the\n        # model nor in extra(select)).\n        self.assertRaises(FieldError,\n            Article.objects.extra(select={'id_plus_one': 'id + 1'}).values,\n            'id', 'id_plus_two')\n        # If you don't specify field names to values(), all are returned.\n        self.assertQuerysetEqual(Article.objects.filter(id=self.a5.id).values(),\n            [{\n                'id': self.a5.id,\n                'author_id': self.au2.id,\n                'headline': 'Article 5',\n                'pub_date': datetime(2005, 8, 1, 9, 0)\n            }], transform=identity)\n\n    def test_values_list(self):\n        # values_list() is similar to values(), except that the results are\n        # returned as a list of tuples, rather than a list of dictionaries.\n        # Within each tuple, the order of the elements is the same as the order\n        # of fields in the values_list() call.\n        identity = lambda x:x\n        self.assertQuerysetEqual(Article.objects.values_list('headline'),\n            [\n                ('Article 5',),\n                ('Article 6',),\n                ('Article 4',),\n                ('Article 2',),\n                ('Article 3',),\n                ('Article 7',),\n                ('Article 1',),\n            ], transform=identity)\n        self.assertQuerysetEqual(Article.objects.values_list('id').order_by('id'),\n            [(self.a1.id,), (self.a2.id,), (self.a3.id,), (self.a4.id,), (self.a5.id,), (self.a6.id,), (self.a7.id,)],\n            transform=identity)\n        self.assertQuerysetEqual(\n            Article.objects.values_list('id', flat=True).order_by('id'),\n            [self.a1.id, self.a2.id, self.a3.id, self.a4.id, self.a5.id, self.a6.id, self.a7.id],\n            transform=identity)\n        self.assertQuerysetEqual(\n            Article.objects.extra(select={'id_plus_one': 'id+1'})\n                           .order_by('id').values_list('id'),\n            [(self.a1.id,), (self.a2.id,), (self.a3.id,), (self.a4.id,), (self.a5.id,), (self.a6.id,), (self.a7.id,)],\n            transform=identity)\n        self.assertQuerysetEqual(\n            Article.objects.extra(select={'id_plus_one': 'id+1'})\n                           .order_by('id').values_list('id_plus_one', 'id'),\n            [\n                (self.a1.id+1, self.a1.id),\n                (self.a2.id+1, self.a2.id),\n                (self.a3.id+1, self.a3.id),\n                (self.a4.id+1, self.a4.id),\n                (self.a5.id+1, self.a5.id),\n                (self.a6.id+1, self.a6.id),\n                (self.a7.id+1, self.a7.id)\n            ],\n            transform=identity)\n        self.assertQuerysetEqual(\n            Article.objects.extra(select={'id_plus_one': 'id+1'})\n                           .order_by('id').values_list('id', 'id_plus_one'),\n            [\n                (self.a1.id, self.a1.id+1),\n                (self.a2.id, self.a2.id+1),\n                (self.a3.id, self.a3.id+1),\n                (self.a4.id, self.a4.id+1),\n                (self.a5.id, self.a5.id+1),\n                (self.a6.id, self.a6.id+1),\n                (self.a7.id, self.a7.id+1)\n            ],\n            transform=identity)\n        self.assertQuerysetEqual(\n            Author.objects.values_list('name', 'article__headline', 'article__tag__name').order_by('name', 'article__headline', 'article__tag__name'),\n            [\n                (self.au1.name, self.a1.headline, self.t1.name),\n                (self.au1.name, self.a2.headline, self.t1.name),\n                (self.au1.name, self.a3.headline, self.t1.name),\n                (self.au1.name, self.a3.headline, self.t2.name),\n                (self.au1.name, self.a4.headline, self.t2.name),\n                (self.au2.name, self.a5.headline, self.t2.name),\n                (self.au2.name, self.a5.headline, self.t3.name),\n                (self.au2.name, self.a6.headline, self.t3.name),\n                (self.au2.name, self.a7.headline, self.t3.name),\n            ], transform=identity)\n        self.assertRaises(TypeError, Article.objects.values_list, 'id', 'headline', flat=True)\n\n    def test_get_next_previous_by(self):\n        # Every DateField and DateTimeField creates get_next_by_FOO() and\n        # get_previous_by_FOO() methods. In the case of identical date values,\n        # these methods will use the ID as a fallback check. This guarantees\n        # that no records are skipped or duplicated.\n        self.assertEqual(repr(self.a1.get_next_by_pub_date()),\n                         '<Article: Article 2>')\n        self.assertEqual(repr(self.a2.get_next_by_pub_date()),\n                         '<Article: Article 3>')\n        self.assertEqual(repr(self.a2.get_next_by_pub_date(headline__endswith='6')),\n                         '<Article: Article 6>')\n        self.assertEqual(repr(self.a3.get_next_by_pub_date()),\n                         '<Article: Article 7>')\n        self.assertEqual(repr(self.a4.get_next_by_pub_date()),\n                         '<Article: Article 6>')\n        self.assertRaises(Article.DoesNotExist, self.a5.get_next_by_pub_date)\n        self.assertEqual(repr(self.a6.get_next_by_pub_date()),\n                         '<Article: Article 5>')\n        self.assertEqual(repr(self.a7.get_next_by_pub_date()),\n                         '<Article: Article 4>')\n\n        self.assertEqual(repr(self.a7.get_previous_by_pub_date()),\n                         '<Article: Article 3>')\n        self.assertEqual(repr(self.a6.get_previous_by_pub_date()),\n                         '<Article: Article 4>')\n        self.assertEqual(repr(self.a5.get_previous_by_pub_date()),\n                         '<Article: Article 6>')\n        self.assertEqual(repr(self.a4.get_previous_by_pub_date()),\n                         '<Article: Article 7>')\n        self.assertEqual(repr(self.a3.get_previous_by_pub_date()),\n                         '<Article: Article 2>')\n        self.assertEqual(repr(self.a2.get_previous_by_pub_date()),\n                         '<Article: Article 1>')\n\n    def test_escaping(self):\n        # Underscores, percent signs and backslashes have special meaning in the\n        # underlying SQL code, but Django handles the quoting of them automatically.\n        a8 = Article(headline='Article_ with underscore', pub_date=datetime(2005, 11, 20))\n        a8.save()\n        self.assertQuerysetEqual(Article.objects.filter(headline__startswith='Article'),\n            [\n                '<Article: Article_ with underscore>',\n                '<Article: Article 5>',\n                '<Article: Article 6>',\n                '<Article: Article 4>',\n                '<Article: Article 2>',\n                '<Article: Article 3>',\n                '<Article: Article 7>',\n                '<Article: Article 1>',\n            ])\n        self.assertQuerysetEqual(Article.objects.filter(headline__startswith='Article_'),\n                                 ['<Article: Article_ with underscore>'])\n        a9 = Article(headline='Article% with percent sign', pub_date=datetime(2005, 11, 21))\n        a9.save()\n        self.assertQuerysetEqual(Article.objects.filter(headline__startswith='Article'),\n            [\n                '<Article: Article% with percent sign>',\n                '<Article: Article_ with underscore>',\n                '<Article: Article 5>',\n                '<Article: Article 6>',\n                '<Article: Article 4>',\n                '<Article: Article 2>',\n                '<Article: Article 3>',\n                '<Article: Article 7>',\n                '<Article: Article 1>',\n            ])\n        self.assertQuerysetEqual(Article.objects.filter(headline__startswith='Article%'),\n                                 ['<Article: Article% with percent sign>'])\n        a10 = Article(headline='Article with \\\\ backslash', pub_date=datetime(2005, 11, 22))\n        a10.save()\n        self.assertQuerysetEqual(Article.objects.filter(headline__contains='\\\\'),\n                                 ['<Article: Article with \\ backslash>'])\n\n    def test_exclude(self):\n        a8 = Article.objects.create(headline='Article_ with underscore', pub_date=datetime(2005, 11, 20))\n        a9 = Article.objects.create(headline='Article% with percent sign', pub_date=datetime(2005, 11, 21))\n        a10 = Article.objects.create(headline='Article with \\\\ backslash', pub_date=datetime(2005, 11, 22))\n\n        # exclude() is the opposite of filter() when doing lookups:\n        self.assertQuerysetEqual(\n            Article.objects.filter(headline__contains='Article').exclude(headline__contains='with'),\n            [\n                '<Article: Article 5>',\n                '<Article: Article 6>',\n                '<Article: Article 4>',\n                '<Article: Article 2>',\n                '<Article: Article 3>',\n                '<Article: Article 7>',\n                '<Article: Article 1>',\n            ])\n        self.assertQuerysetEqual(Article.objects.exclude(headline__startswith=\"Article_\"),\n            [\n                '<Article: Article with \\\\ backslash>',\n                '<Article: Article% with percent sign>',\n                '<Article: Article 5>',\n                '<Article: Article 6>',\n                '<Article: Article 4>',\n                '<Article: Article 2>',\n                '<Article: Article 3>',\n                '<Article: Article 7>',\n                '<Article: Article 1>',\n            ])\n        self.assertQuerysetEqual(Article.objects.exclude(headline=\"Article 7\"),\n            [\n                '<Article: Article with \\\\ backslash>',\n                '<Article: Article% with percent sign>',\n                '<Article: Article_ with underscore>',\n                '<Article: Article 5>',\n                '<Article: Article 6>',\n                '<Article: Article 4>',\n                '<Article: Article 2>',\n                '<Article: Article 3>',\n                '<Article: Article 1>',\n            ])\n\n    def test_none(self):\n       # none() returns an EmptyQuerySet that behaves like any other QuerySet object\n        self.assertQuerysetEqual(Article.objects.none(), [])\n        self.assertQuerysetEqual(\n            Article.objects.none().filter(headline__startswith='Article'), [])\n        self.assertQuerysetEqual(\n            Article.objects.filter(headline__startswith='Article').none(), [])\n        self.assertEqual(Article.objects.none().count(), 0)\n        self.assertEqual(\n            Article.objects.none().update(headline=\"This should not take effect\"), 0)\n        self.assertQuerysetEqual(\n            [article for article in Article.objects.none().iterator()],\n            [])\n\n    def test_in(self):\n        # using __in with an empty list should return an empty query set\n        self.assertQuerysetEqual(Article.objects.filter(id__in=[]), [])\n        self.assertQuerysetEqual(Article.objects.exclude(id__in=[]),\n            [\n                '<Article: Article 5>',\n                '<Article: Article 6>',\n                '<Article: Article 4>',\n                '<Article: Article 2>',\n                '<Article: Article 3>',\n                '<Article: Article 7>',\n                '<Article: Article 1>',\n            ])\n\n    def test_error_messages(self):\n        # Programming errors are pointed out with nice error messages\n        try:\n            Article.objects.filter(pub_date_year='2005').count()\n            self.fail('FieldError not raised')\n        except FieldError as ex:\n            self.assertEqual(str(ex), \"Cannot resolve keyword 'pub_date_year' \"\n                             \"into field. Choices are: author, headline, id, pub_date, tag\")\n        try:\n            Article.objects.filter(headline__starts='Article')\n            self.fail('FieldError not raised')\n        except FieldError as ex:\n            self.assertEqual(str(ex), \"Join on field 'headline' not permitted. \"\n                             \"Did you misspell 'starts' for the lookup type?\")\n\n    def test_regex(self):\n        # Create some articles with a bit more interesting headlines for testing field lookups:\n        for a in Article.objects.all():\n            a.delete()\n        now = datetime.now()\n        a1 = Article(pub_date=now, headline='f')\n        a1.save()\n        a2 = Article(pub_date=now, headline='fo')\n        a2.save()\n        a3 = Article(pub_date=now, headline='foo')\n        a3.save()\n        a4 = Article(pub_date=now, headline='fooo')\n        a4.save()\n        a5 = Article(pub_date=now, headline='hey-Foo')\n        a5.save()\n        a6 = Article(pub_date=now, headline='bar')\n        a6.save()\n        a7 = Article(pub_date=now, headline='AbBa')\n        a7.save()\n        a8 = Article(pub_date=now, headline='baz')\n        a8.save()\n        a9 = Article(pub_date=now, headline='baxZ')\n        a9.save()\n        # zero-or-more\n        self.assertQuerysetEqual(Article.objects.filter(headline__regex=r'fo*'),\n            ['<Article: f>', '<Article: fo>', '<Article: foo>', '<Article: fooo>'])\n        self.assertQuerysetEqual(Article.objects.filter(headline__iregex=r'fo*'),\n            [\n                '<Article: f>',\n                '<Article: fo>',\n                '<Article: foo>',\n                '<Article: fooo>',\n                '<Article: hey-Foo>',\n            ])\n        # one-or-more\n        self.assertQuerysetEqual(Article.objects.filter(headline__regex=r'fo+'),\n            ['<Article: fo>', '<Article: foo>', '<Article: fooo>'])\n        # wildcard\n        self.assertQuerysetEqual(Article.objects.filter(headline__regex=r'fooo?'),\n            ['<Article: foo>', '<Article: fooo>'])\n        # leading anchor\n        self.assertQuerysetEqual(Article.objects.filter(headline__regex=r'^b'),\n            ['<Article: bar>', '<Article: baxZ>', '<Article: baz>'])\n        self.assertQuerysetEqual(Article.objects.filter(headline__iregex=r'^a'),\n            ['<Article: AbBa>'])\n        # trailing anchor\n        self.assertQuerysetEqual(Article.objects.filter(headline__regex=r'z$'),\n            ['<Article: baz>'])\n        self.assertQuerysetEqual(Article.objects.filter(headline__iregex=r'z$'),\n            ['<Article: baxZ>', '<Article: baz>'])\n        # character sets\n        self.assertQuerysetEqual(Article.objects.filter(headline__regex=r'ba[rz]'),\n            ['<Article: bar>', '<Article: baz>'])\n        self.assertQuerysetEqual(Article.objects.filter(headline__regex=r'ba.[RxZ]'),\n            ['<Article: baxZ>'])\n        self.assertQuerysetEqual(Article.objects.filter(headline__iregex=r'ba[RxZ]'),\n            ['<Article: bar>', '<Article: baxZ>', '<Article: baz>'])\n\n        # and more articles:\n        a10 = Article(pub_date=now, headline='foobar')\n        a10.save()\n        a11 = Article(pub_date=now, headline='foobaz')\n        a11.save()\n        a12 = Article(pub_date=now, headline='ooF')\n        a12.save()\n        a13 = Article(pub_date=now, headline='foobarbaz')\n        a13.save()\n        a14 = Article(pub_date=now, headline='zoocarfaz')\n        a14.save()\n        a15 = Article(pub_date=now, headline='barfoobaz')\n        a15.save()\n        a16 = Article(pub_date=now, headline='bazbaRFOO')\n        a16.save()\n\n        # alternation\n        self.assertQuerysetEqual(Article.objects.filter(headline__regex=r'oo(f|b)'),\n            [\n                '<Article: barfoobaz>',\n                '<Article: foobar>',\n                '<Article: foobarbaz>',\n                '<Article: foobaz>',\n            ])\n        self.assertQuerysetEqual(Article.objects.filter(headline__iregex=r'oo(f|b)'),\n            [\n                '<Article: barfoobaz>',\n                '<Article: foobar>',\n                '<Article: foobarbaz>',\n                '<Article: foobaz>',\n                '<Article: ooF>',\n            ])\n        self.assertQuerysetEqual(Article.objects.filter(headline__regex=r'^foo(f|b)'),\n            ['<Article: foobar>', '<Article: foobarbaz>', '<Article: foobaz>'])\n\n        # greedy matching\n        self.assertQuerysetEqual(Article.objects.filter(headline__regex=r'b.*az'),\n            [\n                '<Article: barfoobaz>',\n                '<Article: baz>',\n                '<Article: bazbaRFOO>',\n                '<Article: foobarbaz>',\n                '<Article: foobaz>',\n            ])\n        self.assertQuerysetEqual(Article.objects.filter(headline__iregex=r'b.*ar'),\n            [\n                '<Article: bar>',\n                '<Article: barfoobaz>',\n                '<Article: bazbaRFOO>',\n                '<Article: foobar>',\n                '<Article: foobarbaz>',\n            ])\n\n    @skipUnlessDBFeature('supports_regex_backreferencing')\n    def test_regex_backreferencing(self):\n        # grouping and backreferences\n        now = datetime.now()\n        a10 = Article(pub_date=now, headline='foobar')\n        a10.save()\n        a11 = Article(pub_date=now, headline='foobaz')\n        a11.save()\n        a12 = Article(pub_date=now, headline='ooF')\n        a12.save()\n        a13 = Article(pub_date=now, headline='foobarbaz')\n        a13.save()\n        a14 = Article(pub_date=now, headline='zoocarfaz')\n        a14.save()\n        a15 = Article(pub_date=now, headline='barfoobaz')\n        a15.save()\n        a16 = Article(pub_date=now, headline='bazbaRFOO')\n        a16.save()\n        self.assertQuerysetEqual(Article.objects.filter(headline__regex=r'b(.).*b\\1'),\n            ['<Article: barfoobaz>', '<Article: bazbaRFOO>', '<Article: foobarbaz>'])\n\n    def test_nonfield_lookups(self):\n        \"\"\"\n        Ensure that a lookup query containing non-fields raises the proper\n        exception.\n        \"\"\"\n        with self.assertRaises(FieldError):\n            Article.objects.filter(headline__blahblah=99)\n        with self.assertRaises(FieldError):\n            Article.objects.filter(headline__blahblah__exact=99)\n        with self.assertRaises(FieldError):\n            Article.objects.filter(blahblah=99)\n\n    def test_lookup_collision(self):\n        \"\"\"\n        Ensure that genuine field names don't collide with built-in lookup\n        types ('year', 'gt', 'range', 'in' etc.).\n        Refs #11670.\n        \"\"\"\n\n        # Here we're using 'gt' as a code number for the year, e.g. 111=>2009.\n        season_2009 = Season.objects.create(year=2009, gt=111)\n        season_2009.games.create(home=\"Houston Astros\", away=\"St. Louis Cardinals\")\n        season_2010 = Season.objects.create(year=2010, gt=222)\n        season_2010.games.create(home=\"Houston Astros\", away=\"Chicago Cubs\")\n        season_2010.games.create(home=\"Houston Astros\", away=\"Milwaukee Brewers\")\n        season_2010.games.create(home=\"Houston Astros\", away=\"St. Louis Cardinals\")\n        season_2011 = Season.objects.create(year=2011, gt=333)\n        season_2011.games.create(home=\"Houston Astros\", away=\"St. Louis Cardinals\")\n        season_2011.games.create(home=\"Houston Astros\", away=\"Milwaukee Brewers\")\n        hunter_pence = Player.objects.create(name=\"Hunter Pence\")\n        hunter_pence.games = Game.objects.filter(season__year__in=[2009, 2010])\n        pudge = Player.objects.create(name=\"Ivan Rodriquez\")\n        pudge.games = Game.objects.filter(season__year=2009)\n        pedro_feliz = Player.objects.create(name=\"Pedro Feliz\")\n        pedro_feliz.games = Game.objects.filter(season__year__in=[2011])\n        johnson = Player.objects.create(name=\"Johnson\")\n        johnson.games = Game.objects.filter(season__year__in=[2011])\n\n        # Games in 2010\n        self.assertEqual(Game.objects.filter(season__year=2010).count(), 3)\n        self.assertEqual(Game.objects.filter(season__year__exact=2010).count(), 3)\n        self.assertEqual(Game.objects.filter(season__gt=222).count(), 3)\n        self.assertEqual(Game.objects.filter(season__gt__exact=222).count(), 3)\n\n        # Games in 2011\n        self.assertEqual(Game.objects.filter(season__year=2011).count(), 2)\n        self.assertEqual(Game.objects.filter(season__year__exact=2011).count(), 2)\n        self.assertEqual(Game.objects.filter(season__gt=333).count(), 2)\n        self.assertEqual(Game.objects.filter(season__gt__exact=333).count(), 2)\n        self.assertEqual(Game.objects.filter(season__year__gt=2010).count(), 2)\n        self.assertEqual(Game.objects.filter(season__gt__gt=222).count(), 2)\n\n        # Games played in 2010 and 2011\n        self.assertEqual(Game.objects.filter(season__year__in=[2010, 2011]).count(), 5)\n        self.assertEqual(Game.objects.filter(season__year__gt=2009).count(), 5)\n        self.assertEqual(Game.objects.filter(season__gt__in=[222, 333]).count(), 5)\n        self.assertEqual(Game.objects.filter(season__gt__gt=111).count(), 5)\n\n        # Players who played in 2009\n        self.assertEqual(Player.objects.filter(games__season__year=2009).distinct().count(), 2)\n        self.assertEqual(Player.objects.filter(games__season__year__exact=2009).distinct().count(), 2)\n        self.assertEqual(Player.objects.filter(games__season__gt=111).distinct().count(), 2)\n        self.assertEqual(Player.objects.filter(games__season__gt__exact=111).distinct().count(), 2)\n\n        # Players who played in 2010\n        self.assertEqual(Player.objects.filter(games__season__year=2010).distinct().count(), 1)\n        self.assertEqual(Player.objects.filter(games__season__year__exact=2010).distinct().count(), 1)\n        self.assertEqual(Player.objects.filter(games__season__gt=222).distinct().count(), 1)\n        self.assertEqual(Player.objects.filter(games__season__gt__exact=222).distinct().count(), 1)\n\n        # Players who played in 2011\n        self.assertEqual(Player.objects.filter(games__season__year=2011).distinct().count(), 2)\n        self.assertEqual(Player.objects.filter(games__season__year__exact=2011).distinct().count(), 2)\n        self.assertEqual(Player.objects.filter(games__season__gt=333).distinct().count(), 2)\n        self.assertEqual(Player.objects.filter(games__season__year__gt=2010).distinct().count(), 2)\n        self.assertEqual(Player.objects.filter(games__season__gt__gt=222).distinct().count(), 2)\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/m2m_and_m2o/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/m2m_and_m2o/models.py",
    "content": "\"\"\"\n29. Many-to-many and many-to-one relationships to the same table\n\nMake sure to set ``related_name`` if you use relationships to the same table.\n\"\"\"\nfrom __future__ import unicode_literals\n\nfrom django.db import models\nfrom django.utils import six\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\nclass User(models.Model):\n    username = models.CharField(max_length=20)\n\n@python_2_unicode_compatible\nclass Issue(models.Model):\n    num = models.IntegerField()\n    cc = models.ManyToManyField(User, blank=True, related_name='test_issue_cc')\n    client = models.ForeignKey(User, related_name='test_issue_client')\n\n    def __str__(self):\n        return six.text_type(self.num)\n\n    class Meta:\n        ordering = ('num',)\n\nclass UnicodeReferenceModel(models.Model):\n    others = models.ManyToManyField(\"UnicodeReferenceModel\")\n\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/m2m_and_m2o/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom django.db.models import Q\nfrom django.test import TestCase\n\nfrom .models import Issue, User, UnicodeReferenceModel\n\n\nclass RelatedObjectTests(TestCase):\n    def test_m2m_and_m2o(self):\n        r = User.objects.create(username=\"russell\")\n        g = User.objects.create(username=\"gustav\")\n\n        i1 = Issue(num=1)\n        i1.client = r\n        i1.save()\n\n        i2 = Issue(num=2)\n        i2.client = r\n        i2.save()\n        i2.cc.add(r)\n\n        i3 = Issue(num=3)\n        i3.client = g\n        i3.save()\n        i3.cc.add(r)\n\n        self.assertQuerysetEqual(\n            Issue.objects.filter(client=r.id), [\n                1,\n                2,\n            ],\n            lambda i: i.num\n        )\n        self.assertQuerysetEqual(\n            Issue.objects.filter(client=g.id), [\n                3,\n            ],\n            lambda i: i.num\n        )\n        self.assertQuerysetEqual(\n            Issue.objects.filter(cc__id__exact=g.id), []\n        )\n        self.assertQuerysetEqual(\n            Issue.objects.filter(cc__id__exact=r.id), [\n                2,\n                3,\n            ],\n            lambda i: i.num\n        )\n\n        # These queries combine results from the m2m and the m2o relationships.\n        # They're three ways of saying the same thing.\n        self.assertQuerysetEqual(\n            Issue.objects.filter(Q(cc__id__exact = r.id) | Q(client=r.id)), [\n                1,\n                2,\n                3,\n            ],\n            lambda i: i.num\n        )\n        self.assertQuerysetEqual(\n            Issue.objects.filter(cc__id__exact=r.id) | Issue.objects.filter(client=r.id), [\n                1,\n                2,\n                3,\n            ],\n            lambda i: i.num\n        )\n        self.assertQuerysetEqual(\n            Issue.objects.filter(Q(client=r.id) | Q(cc__id__exact=r.id)), [\n                1,\n                2,\n                3,\n            ],\n            lambda i: i.num\n        )\n\nclass RelatedObjectTests(TestCase):\n    def test_m2m_with_unicode_reference(self):\n        \"\"\"\n        Regression test for #6045: references to other models can be unicode\n        strings, providing they are directly convertible to ASCII.\n        \"\"\"\n        m1=UnicodeReferenceModel.objects.create()\n        m2=UnicodeReferenceModel.objects.create()\n        m2.others.add(m1) # used to cause an error (see ticket #6045)\n        m2.save()\n        list(m2.others.all()) # Force retrieval.\n\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/m2m_intermediary/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/m2m_intermediary/models.py",
    "content": "\"\"\"\n9. Many-to-many relationships via an intermediary table\n\nFor many-to-many relationships that need extra fields on the intermediary\ntable, use an intermediary model.\n\nIn this example, an ``Article`` can have multiple ``Reporter`` objects, and\neach ``Article``-``Reporter`` combination (a ``Writer``) has a ``position``\nfield, which specifies the ``Reporter``'s position for the given article\n(e.g. \"Staff writer\").\n\"\"\"\nfrom __future__ import unicode_literals\n\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n@python_2_unicode_compatible\nclass Reporter(models.Model):\n    first_name = models.CharField(max_length=30)\n    last_name = models.CharField(max_length=30)\n\n    def __str__(self):\n        return \"%s %s\" % (self.first_name, self.last_name)\n\n@python_2_unicode_compatible\nclass Article(models.Model):\n    headline = models.CharField(max_length=100)\n    pub_date = models.DateField()\n\n    def __str__(self):\n        return self.headline\n\n@python_2_unicode_compatible\nclass Writer(models.Model):\n    reporter = models.ForeignKey(Reporter)\n    article = models.ForeignKey(Article)\n    position = models.CharField(max_length=100)\n\n    def __str__(self):\n        return '%s (%s)' % (self.reporter, self.position)\n\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/m2m_intermediary/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom datetime import datetime\n\nfrom django.test import TestCase\nfrom django.utils import six\n\nfrom .models import Reporter, Article, Writer\n\n\nclass M2MIntermediaryTests(TestCase):\n    def test_intermeiary(self):\n        r1 = Reporter.objects.create(first_name=\"John\", last_name=\"Smith\")\n        r2 = Reporter.objects.create(first_name=\"Jane\", last_name=\"Doe\")\n\n        a = Article.objects.create(\n            headline=\"This is a test\", pub_date=datetime(2005, 7, 27)\n        )\n\n        w1 = Writer.objects.create(reporter=r1, article=a, position=\"Main writer\")\n        w2 = Writer.objects.create(reporter=r2, article=a, position=\"Contributor\")\n\n        self.assertQuerysetEqual(\n            a.writer_set.select_related().order_by(\"-position\"), [\n                (\"John Smith\", \"Main writer\"),\n                (\"Jane Doe\", \"Contributor\"),\n            ],\n            lambda w: (six.text_type(w.reporter), w.position)\n        )\n        self.assertEqual(w1.reporter, r1)\n        self.assertEqual(w2.reporter, r2)\n\n        self.assertEqual(w1.article, a)\n        self.assertEqual(w2.article, a)\n\n        self.assertQuerysetEqual(\n            r1.writer_set.all(), [\n                (\"John Smith\", \"Main writer\")\n            ],\n            lambda w: (six.text_type(w.reporter), w.position)\n        )\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/m2m_multiple/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/m2m_multiple/models.py",
    "content": "\"\"\"\n20. Multiple many-to-many relationships between the same two tables\n\nIn this example, an ``Article`` can have many \"primary\" ``Category`` objects\nand many \"secondary\" ``Category`` objects.\n\nSet ``related_name`` to designate what the reverse relationship is called.\n\"\"\"\n\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n@python_2_unicode_compatible\nclass Category(models.Model):\n    name = models.CharField(max_length=20)\n    class Meta:\n       ordering = ('name',)\n\n    def __str__(self):\n        return self.name\n\n@python_2_unicode_compatible\nclass Article(models.Model):\n    headline = models.CharField(max_length=50)\n    pub_date = models.DateTimeField()\n    primary_categories = models.ManyToManyField(Category, related_name='primary_article_set')\n    secondary_categories = models.ManyToManyField(Category, related_name='secondary_article_set')\n    class Meta:\n       ordering = ('pub_date',)\n\n    def __str__(self):\n        return self.headline\n\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/m2m_multiple/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom datetime import datetime\n\nfrom django.test import TestCase\n\nfrom .models import Article, Category\n\n\nclass M2MMultipleTests(TestCase):\n    def test_multiple(self):\n        c1, c2, c3, c4 = [\n            Category.objects.create(name=name)\n            for name in [\"Sports\", \"News\", \"Crime\", \"Life\"]\n        ]\n\n        a1 = Article.objects.create(\n            headline=\"Area man steals\", pub_date=datetime(2005, 11, 27)\n        )\n        a1.primary_categories.add(c2, c3)\n        a1.secondary_categories.add(c4)\n\n        a2 = Article.objects.create(\n            headline=\"Area man runs\", pub_date=datetime(2005, 11, 28)\n        )\n        a2.primary_categories.add(c1, c2)\n        a2.secondary_categories.add(c4)\n\n        self.assertQuerysetEqual(\n            a1.primary_categories.all(), [\n                \"Crime\",\n                \"News\",\n            ],\n            lambda c: c.name\n        )\n        self.assertQuerysetEqual(\n            a2.primary_categories.all(), [\n                \"News\",\n                \"Sports\",\n            ],\n            lambda c: c.name\n        )\n        self.assertQuerysetEqual(\n            a1.secondary_categories.all(), [\n                \"Life\",\n            ],\n            lambda c: c.name\n        )\n        self.assertQuerysetEqual(\n            c1.primary_article_set.all(), [\n                \"Area man runs\",\n            ],\n            lambda a: a.headline\n        )\n        self.assertQuerysetEqual(\n            c1.secondary_article_set.all(), []\n        )\n        self.assertQuerysetEqual(\n            c2.primary_article_set.all(), [\n                \"Area man steals\",\n                \"Area man runs\",\n            ],\n            lambda a: a.headline\n        )\n        self.assertQuerysetEqual(\n            c2.secondary_article_set.all(), []\n        )\n        self.assertQuerysetEqual(\n            c3.primary_article_set.all(), [\n                \"Area man steals\",\n            ],\n            lambda a: a.headline\n        )\n        self.assertQuerysetEqual(\n            c3.secondary_article_set.all(), []\n        )\n        self.assertQuerysetEqual(\n            c4.primary_article_set.all(), []\n        )\n        self.assertQuerysetEqual(\n            c4.secondary_article_set.all(), [\n                \"Area man steals\",\n                \"Area man runs\",\n            ],\n            lambda a: a.headline\n        )\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/m2m_recursive/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/m2m_recursive/models.py",
    "content": "\"\"\"\n28. Many-to-many relationships between the same two tables\n\nIn this example, a ``Person`` can have many friends, who are also ``Person``\nobjects. Friendship is a symmetrical relationship - if I am your friend, you\nare my friend. Here, ``friends`` is an example of a symmetrical\n``ManyToManyField``.\n\nA ``Person`` can also have many idols - but while I may idolize you, you may\nnot think the same of me. Here, ``idols`` is an example of a non-symmetrical\n``ManyToManyField``. Only recursive ``ManyToManyField`` fields may be\nnon-symmetrical, and they are symmetrical by default.\n\nThis test validates that the many-to-many table is created using a mangled name\nif there is a name clash, and tests that symmetry is preserved where\nappropriate.\n\"\"\"\n\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n@python_2_unicode_compatible\nclass Person(models.Model):\n    name = models.CharField(max_length=20)\n    friends = models.ManyToManyField('self')\n    idols = models.ManyToManyField('self', symmetrical=False, related_name='stalkers')\n\n    def __str__(self):\n        return self.name\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/m2m_recursive/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom operator import attrgetter\n\nfrom django.test import TestCase\n\nfrom .models import Person\n\n\nclass RecursiveM2MTests(TestCase):\n    def test_recursive_m2m(self):\n        a, b, c, d = [\n            Person.objects.create(name=name)\n            for name in [\"Anne\", \"Bill\", \"Chuck\", \"David\"]\n        ]\n\n        # Add some friends in the direction of field definition\n        # Anne is friends with Bill and Chuck\n        a.friends.add(b, c)\n\n        # David is friends with Anne and Chuck - add in reverse direction\n        d.friends.add(a,c)\n\n        # Who is friends with Anne?\n        self.assertQuerysetEqual(\n            a.friends.all(), [\n                \"Bill\",\n                \"Chuck\",\n                \"David\"\n            ],\n            attrgetter(\"name\")\n        )\n        # Who is friends with Bill?\n        self.assertQuerysetEqual(\n            b.friends.all(), [\n                \"Anne\",\n            ],\n            attrgetter(\"name\")\n        )\n        # Who is friends with Chuck?\n        self.assertQuerysetEqual(\n            c.friends.all(), [\n                \"Anne\",\n                \"David\"\n            ],\n            attrgetter(\"name\")\n        )\n        # Who is friends with David?\n        self.assertQuerysetEqual(\n            d.friends.all(), [\n                \"Anne\",\n                \"Chuck\",\n            ],\n            attrgetter(\"name\")\n        )\n        # Bill is already friends with Anne - add Anne again, but in the\n        # reverse direction\n        b.friends.add(a)\n\n        # Who is friends with Anne?\n        self.assertQuerysetEqual(\n            a.friends.all(), [\n                \"Bill\",\n                \"Chuck\",\n                \"David\",\n            ],\n            attrgetter(\"name\")\n        )\n        # Who is friends with Bill?\n        self.assertQuerysetEqual(\n            b.friends.all(), [\n                \"Anne\",\n            ],\n            attrgetter(\"name\")\n        )\n        # Remove Anne from Bill's friends\n        b.friends.remove(a)\n        # Who is friends with Anne?\n        self.assertQuerysetEqual(\n            a.friends.all(), [\n                \"Chuck\",\n                \"David\",\n            ],\n            attrgetter(\"name\")\n        )\n        # Who is friends with Bill?\n        self.assertQuerysetEqual(\n            b.friends.all(), []\n        )\n\n        # Clear Anne's group of friends\n        a.friends.clear()\n        # Who is friends with Anne?\n        self.assertQuerysetEqual(\n            a.friends.all(), []\n        )\n        # Reverse relationships should also be gone\n        # Who is friends with Chuck?\n        self.assertQuerysetEqual(\n            c.friends.all(), [\n                \"David\",\n            ],\n            attrgetter(\"name\")\n        )\n        # Who is friends with David?\n        self.assertQuerysetEqual(\n            d.friends.all(), [\n                \"Chuck\",\n            ],\n            attrgetter(\"name\")\n        )\n\n        # Add some idols in the direction of field definition\n        # Anne idolizes Bill and Chuck\n        a.idols.add(b, c)\n        # Bill idolizes Anne right back\n        b.idols.add(a)\n        # David is idolized by Anne and Chuck - add in reverse direction\n        d.stalkers.add(a, c)\n\n        # Who are Anne's idols?\n        self.assertQuerysetEqual(\n            a.idols.all(), [\n                \"Bill\",\n                \"Chuck\",\n                \"David\",\n            ],\n            attrgetter(\"name\")\n        )\n        # Who is stalking Anne?\n        self.assertQuerysetEqual(\n            a.stalkers.all(), [\n                \"Bill\",\n            ],\n            attrgetter(\"name\")\n        )\n        # Who are Bill's idols?\n        self.assertQuerysetEqual(\n            b.idols.all(), [\n                \"Anne\",\n            ],\n            attrgetter(\"name\")\n        )\n        # Who is stalking Bill?\n        self.assertQuerysetEqual(\n            b.stalkers.all(), [\n                \"Anne\",\n            ],\n            attrgetter(\"name\")\n        )\n        # Who are Chuck's idols?\n        self.assertQuerysetEqual(\n            c.idols.all(), [\n                \"David\",\n            ],\n            attrgetter(\"name\"),\n        )\n        # Who is stalking Chuck?\n        self.assertQuerysetEqual(\n            c.stalkers.all(), [\n                \"Anne\",\n            ],\n            attrgetter(\"name\")\n        )\n        # Who are David's idols?\n        self.assertQuerysetEqual(\n            d.idols.all(), []\n        )\n        # Who is stalking David\n        self.assertQuerysetEqual(\n            d.stalkers.all(), [\n                \"Anne\",\n                \"Chuck\",\n            ],\n            attrgetter(\"name\")\n        )\n        # Bill is already being stalked by Anne - add Anne again, but in the\n        # reverse direction\n        b.stalkers.add(a)\n        # Who are Anne's idols?\n        self.assertQuerysetEqual(\n            a.idols.all(), [\n                \"Bill\",\n                \"Chuck\",\n                \"David\",\n            ],\n            attrgetter(\"name\")\n        )\n        # Who is stalking Anne?\n        self.assertQuerysetEqual(\n            a.stalkers.all(), [\n                \"Bill\",\n            ],\n            attrgetter(\"name\")\n        )\n        # Who are Bill's idols\n        self.assertQuerysetEqual(\n            b.idols.all(), [\n                \"Anne\",\n            ],\n            attrgetter(\"name\")\n        )\n        # Who is stalking Bill?\n        self.assertQuerysetEqual(\n            b.stalkers.all(), [\n                \"Anne\",\n            ],\n            attrgetter(\"name\"),\n        )\n        # Remove Anne from Bill's list of stalkers\n        b.stalkers.remove(a)\n        # Who are Anne's idols?\n        self.assertQuerysetEqual(\n            a.idols.all(), [\n                \"Chuck\",\n                \"David\",\n            ],\n            attrgetter(\"name\")\n        )\n        # Who is stalking Anne?\n        self.assertQuerysetEqual(\n            a.stalkers.all(), [\n                \"Bill\",\n            ],\n            attrgetter(\"name\")\n        )\n        # Who are Bill's idols?\n        self.assertQuerysetEqual(\n            b.idols.all(), [\n                \"Anne\",\n            ],\n            attrgetter(\"name\")\n        )\n        # Who is stalking Bill?\n        self.assertQuerysetEqual(\n            b.stalkers.all(), []\n        )\n        # Clear Anne's group of idols\n        a.idols.clear()\n        # Who are Anne's idols\n        self.assertQuerysetEqual(\n            a.idols.all(), []\n        )\n        # Reverse relationships should also be gone\n        # Who is stalking Chuck?\n        self.assertQuerysetEqual(\n            c.stalkers.all(), []\n        )\n        # Who is friends with David?\n        self.assertQuerysetEqual(\n            d.stalkers.all(), [\n                \"Chuck\",\n            ],\n            attrgetter(\"name\")\n        )\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/m2m_signals/__init__.py",
    "content": "\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/m2m_signals/models.py",
    "content": "from django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n@python_2_unicode_compatible\nclass Part(models.Model):\n    name = models.CharField(max_length=20)\n\n    class Meta:\n        ordering = ('name',)\n\n    def __str__(self):\n        return self.name\n\n@python_2_unicode_compatible\nclass Car(models.Model):\n    name = models.CharField(max_length=20)\n    default_parts = models.ManyToManyField(Part)\n    optional_parts = models.ManyToManyField(Part, related_name='cars_optional')\n\n    class Meta:\n        ordering = ('name',)\n\n    def __str__(self):\n        return self.name\n\nclass SportsCar(Car):\n    price = models.IntegerField()\n\n@python_2_unicode_compatible\nclass Person(models.Model):\n    name = models.CharField(max_length=20)\n    fans = models.ManyToManyField('self', related_name='idols', symmetrical=False)\n    friends = models.ManyToManyField('self')\n\n    class Meta:\n        ordering = ('name',)\n\n    def __str__(self):\n        return self.name\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/m2m_signals/tests.py",
    "content": "\"\"\"\nTesting signals emitted on changing m2m relations.\n\"\"\"\n\nfrom .models import Person\n\nfrom django.db import models\nfrom django.test import TestCase\n\nfrom .models import Part, Car, SportsCar, Person\n\n\nclass ManyToManySignalsTest(TestCase):\n    def m2m_changed_signal_receiver(self, signal, sender, **kwargs):\n        message = {\n            'instance': kwargs['instance'],\n            'action': kwargs['action'],\n            'reverse': kwargs['reverse'],\n            'model': kwargs['model'],\n        }\n        if kwargs['pk_set']:\n            message['objects'] = list(\n                kwargs['model'].objects.filter(pk__in=kwargs['pk_set'])\n            )\n        self.m2m_changed_messages.append(message)\n\n    def setUp(self):\n        self.m2m_changed_messages = []\n\n        self.vw = Car.objects.create(name='VW')\n        self.bmw = Car.objects.create(name='BMW')\n        self.toyota = Car.objects.create(name='Toyota')\n        self.wheelset = Part.objects.create(name='Wheelset')\n        self.doors = Part.objects.create(name='Doors')\n        self.engine = Part.objects.create(name='Engine')\n        self.airbag = Part.objects.create(name='Airbag')\n        self.sunroof = Part.objects.create(name='Sunroof')\n\n        self.alice = Person.objects.create(name='Alice')\n        self.bob = Person.objects.create(name='Bob')\n        self.chuck = Person.objects.create(name='Chuck')\n        self.daisy = Person.objects.create(name='Daisy')\n\n    def tearDown(self):\n        # disconnect all signal handlers\n        models.signals.m2m_changed.disconnect(\n            self.m2m_changed_signal_receiver, Car.default_parts.through\n        )\n        models.signals.m2m_changed.disconnect(\n            self.m2m_changed_signal_receiver, Car.optional_parts.through\n        )\n        models.signals.m2m_changed.disconnect(\n            self.m2m_changed_signal_receiver, Person.fans.through\n        )\n        models.signals.m2m_changed.disconnect(\n            self.m2m_changed_signal_receiver, Person.friends.through\n        )\n\n    def test_m2m_relations_add_remove_clear(self):\n        expected_messages = []\n\n        # Install a listener on one of the two m2m relations.\n        models.signals.m2m_changed.connect(\n            self.m2m_changed_signal_receiver, Car.optional_parts.through\n        )\n\n        # Test the add, remove and clear methods on both sides of the\n        # many-to-many relation\n\n        # adding a default part to our car - no signal listener installed\n        self.vw.default_parts.add(self.sunroof)\n\n        # Now install a listener\n        models.signals.m2m_changed.connect(\n            self.m2m_changed_signal_receiver, Car.default_parts.through\n        )\n\n        self.vw.default_parts.add(self.wheelset, self.doors, self.engine)\n        expected_messages.append({\n            'instance': self.vw,\n            'action': 'pre_add',\n            'reverse': False,\n            'model': Part,\n            'objects': [self.doors, self.engine, self.wheelset],\n        })\n        expected_messages.append({\n            'instance': self.vw,\n            'action': 'post_add',\n            'reverse': False,\n            'model': Part,\n            'objects': [self.doors, self.engine, self.wheelset],\n        })\n        self.assertEqual(self.m2m_changed_messages, expected_messages)\n\n        # give the BMW and Toyata some doors as well\n        self.doors.car_set.add(self.bmw, self.toyota)\n        expected_messages.append({\n            'instance': self.doors,\n            'action': 'pre_add',\n            'reverse': True,\n            'model': Car,\n            'objects': [self.bmw, self.toyota],\n        })\n        expected_messages.append({\n            'instance': self.doors,\n            'action': 'post_add',\n            'reverse': True,\n            'model': Car,\n            'objects': [self.bmw, self.toyota],\n        })\n        self.assertEqual(self.m2m_changed_messages, expected_messages)\n\n        # remove the engine from the self.vw and the airbag (which is not set\n        # but is returned)\n        self.vw.default_parts.remove(self.engine, self.airbag)\n        expected_messages.append({\n            'instance': self.vw,\n            'action': 'pre_remove',\n            'reverse': False,\n            'model': Part,\n            'objects': [self.airbag, self.engine],\n        })\n        expected_messages.append({\n            'instance': self.vw,\n            'action': 'post_remove',\n            'reverse': False,\n            'model': Part,\n            'objects': [self.airbag, self.engine],\n        })\n        self.assertEqual(self.m2m_changed_messages, expected_messages)\n\n        # give the self.vw some optional parts (second relation to same model)\n        self.vw.optional_parts.add(self.airbag, self.sunroof)\n        expected_messages.append({\n            'instance': self.vw,\n            'action': 'pre_add',\n            'reverse': False,\n            'model': Part,\n            'objects': [self.airbag, self.sunroof],\n        })\n        expected_messages.append({\n            'instance': self.vw,\n            'action': 'post_add',\n            'reverse': False,\n            'model': Part,\n            'objects': [self.airbag, self.sunroof],\n        })\n        self.assertEqual(self.m2m_changed_messages, expected_messages)\n\n        # add airbag to all the cars (even though the self.vw already has one)\n        self.airbag.cars_optional.add(self.vw, self.bmw, self.toyota)\n        expected_messages.append({\n            'instance': self.airbag,\n            'action': 'pre_add',\n            'reverse': True,\n            'model': Car,\n            'objects': [self.bmw, self.toyota],\n        })\n        expected_messages.append({\n            'instance': self.airbag,\n            'action': 'post_add',\n            'reverse': True,\n            'model': Car,\n            'objects': [self.bmw, self.toyota],\n        })\n        self.assertEqual(self.m2m_changed_messages, expected_messages)\n\n        # remove airbag from the self.vw (reverse relation with custom\n        # related_name)\n        self.airbag.cars_optional.remove(self.vw)\n        expected_messages.append({\n            'instance': self.airbag,\n            'action': 'pre_remove',\n            'reverse': True,\n            'model': Car,\n            'objects': [self.vw],\n        })\n        expected_messages.append({\n            'instance': self.airbag,\n            'action': 'post_remove',\n            'reverse': True,\n            'model': Car,\n            'objects': [self.vw],\n        })\n        self.assertEqual(self.m2m_changed_messages, expected_messages)\n\n        # clear all parts of the self.vw\n        self.vw.default_parts.clear()\n        expected_messages.append({\n            'instance': self.vw,\n            'action': 'pre_clear',\n            'reverse': False,\n            'model': Part,\n        })\n        expected_messages.append({\n            'instance': self.vw,\n            'action': 'post_clear',\n            'reverse': False,\n            'model': Part,\n        })\n        self.assertEqual(self.m2m_changed_messages, expected_messages)\n\n        # take all the doors off of cars\n        self.doors.car_set.clear()\n        expected_messages.append({\n            'instance': self.doors,\n            'action': 'pre_clear',\n            'reverse': True,\n            'model': Car,\n        })\n        expected_messages.append({\n            'instance': self.doors,\n            'action': 'post_clear',\n            'reverse': True,\n            'model': Car,\n        })\n        self.assertEqual(self.m2m_changed_messages, expected_messages)\n\n        # take all the airbags off of cars (clear reverse relation with custom\n        # related_name)\n        self.airbag.cars_optional.clear()\n        expected_messages.append({\n            'instance': self.airbag,\n            'action': 'pre_clear',\n            'reverse': True,\n            'model': Car,\n        })\n        expected_messages.append({\n            'instance': self.airbag,\n            'action': 'post_clear',\n            'reverse': True,\n            'model': Car,\n        })\n        self.assertEqual(self.m2m_changed_messages, expected_messages)\n\n        # alternative ways of setting relation:\n        self.vw.default_parts.create(name='Windows')\n        p6 = Part.objects.get(name='Windows')\n        expected_messages.append({\n            'instance': self.vw,\n            'action': 'pre_add',\n            'reverse': False,\n            'model': Part,\n            'objects': [p6],\n        })\n        expected_messages.append({\n            'instance': self.vw,\n            'action': 'post_add',\n            'reverse': False,\n            'model': Part,\n            'objects': [p6],\n        })\n        self.assertEqual(self.m2m_changed_messages, expected_messages)\n\n        # direct assignment clears the set first, then adds\n        self.vw.default_parts = [self.wheelset,self.doors,self.engine]\n        expected_messages.append({\n            'instance': self.vw,\n            'action': 'pre_clear',\n            'reverse': False,\n            'model': Part,\n        })\n        expected_messages.append({\n            'instance': self.vw,\n            'action': 'post_clear',\n            'reverse': False,\n            'model': Part,\n        })\n        expected_messages.append({\n            'instance': self.vw,\n            'action': 'pre_add',\n            'reverse': False,\n            'model': Part,\n            'objects': [self.doors, self.engine, self.wheelset],\n        })\n        expected_messages.append({\n            'instance': self.vw,\n            'action': 'post_add',\n            'reverse': False,\n            'model': Part,\n            'objects': [self.doors, self.engine, self.wheelset],\n        })\n        self.assertEqual(self.m2m_changed_messages, expected_messages)\n\n        # Check that signals still work when model inheritance is involved\n        c4 = SportsCar.objects.create(name='Bugatti', price='1000000')\n        c4b = Car.objects.get(name='Bugatti')\n        c4.default_parts = [self.doors]\n        expected_messages.append({\n            'instance': c4,\n            'action': 'pre_clear',\n            'reverse': False,\n            'model': Part,\n        })\n        expected_messages.append({\n            'instance': c4,\n            'action': 'post_clear',\n            'reverse': False,\n            'model': Part,\n        })\n        expected_messages.append({\n            'instance': c4,\n            'action': 'pre_add',\n            'reverse': False,\n            'model': Part,\n            'objects': [self.doors],\n        })\n        expected_messages.append({\n            'instance': c4,\n            'action': 'post_add',\n            'reverse': False,\n            'model': Part,\n            'objects': [self.doors],\n        })\n        self.assertEqual(self.m2m_changed_messages, expected_messages)\n\n        self.engine.car_set.add(c4)\n        expected_messages.append({\n            'instance': self.engine,\n            'action': 'pre_add',\n            'reverse': True,\n            'model': Car,\n            'objects': [c4b],\n        })\n        expected_messages.append({\n            'instance': self.engine,\n            'action': 'post_add',\n            'reverse': True,\n            'model': Car,\n            'objects': [c4b],\n        })\n        self.assertEqual(self.m2m_changed_messages, expected_messages)\n\n    def test_m2m_relations_with_self(self):\n        expected_messages = []\n\n        models.signals.m2m_changed.connect(\n            self.m2m_changed_signal_receiver, Person.fans.through\n        )\n        models.signals.m2m_changed.connect(\n            self.m2m_changed_signal_receiver, Person.friends.through\n        )\n\n        self.alice.friends = [self.bob, self.chuck]\n        expected_messages.append({\n            'instance': self.alice,\n            'action': 'pre_clear',\n            'reverse': False,\n            'model': Person,\n        })\n        expected_messages.append({\n            'instance': self.alice,\n            'action': 'post_clear',\n            'reverse': False,\n            'model': Person,\n        })\n        expected_messages.append({\n            'instance': self.alice,\n            'action': 'pre_add',\n            'reverse': False,\n            'model': Person,\n            'objects': [self.bob, self.chuck],\n        })\n        expected_messages.append({\n            'instance': self.alice,\n            'action': 'post_add',\n            'reverse': False,\n            'model': Person,\n            'objects': [self.bob, self.chuck],\n        })\n        self.assertEqual(self.m2m_changed_messages, expected_messages)\n\n        self.alice.fans = [self.daisy]\n        expected_messages.append({\n            'instance': self.alice,\n            'action': 'pre_clear',\n            'reverse': False,\n            'model': Person,\n        })\n        expected_messages.append({\n            'instance': self.alice,\n            'action': 'post_clear',\n            'reverse': False,\n            'model': Person,\n        })\n        expected_messages.append({\n            'instance': self.alice,\n            'action': 'pre_add',\n            'reverse': False,\n            'model': Person,\n            'objects': [self.daisy],\n        })\n        expected_messages.append({\n            'instance': self.alice,\n            'action': 'post_add',\n            'reverse': False,\n            'model': Person,\n            'objects': [self.daisy],\n        })\n        self.assertEqual(self.m2m_changed_messages, expected_messages)\n\n        self.chuck.idols = [self.alice,self.bob]\n        expected_messages.append({\n            'instance': self.chuck,\n            'action': 'pre_clear',\n            'reverse': True,\n            'model': Person,\n        })\n        expected_messages.append({\n            'instance': self.chuck,\n            'action': 'post_clear',\n            'reverse': True,\n            'model': Person,\n        })\n        expected_messages.append({\n            'instance': self.chuck,\n            'action': 'pre_add',\n            'reverse': True,\n            'model': Person,\n            'objects': [self.alice, self.bob],\n        })\n        expected_messages.append({\n            'instance': self.chuck,\n            'action': 'post_add',\n            'reverse': True,\n            'model': Person,\n            'objects': [self.alice, self.bob],\n        })\n        self.assertEqual(self.m2m_changed_messages, expected_messages)\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/m2m_through/__init__.py",
    "content": "\n\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/m2m_through/models.py",
    "content": "from datetime import datetime\n\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n# M2M described on one of the models\n@python_2_unicode_compatible\nclass Person(models.Model):\n    name = models.CharField(max_length=128)\n\n    class Meta:\n        ordering = ('name',)\n\n    def __str__(self):\n        return self.name\n\n@python_2_unicode_compatible\nclass Group(models.Model):\n    name = models.CharField(max_length=128)\n    members = models.ManyToManyField(Person, through='Membership')\n    custom_members = models.ManyToManyField(Person, through='CustomMembership', related_name=\"custom\")\n    nodefaultsnonulls = models.ManyToManyField(Person, through='TestNoDefaultsOrNulls', related_name=\"testnodefaultsnonulls\")\n\n    class Meta:\n        ordering = ('name',)\n\n    def __str__(self):\n        return self.name\n\n@python_2_unicode_compatible\nclass Membership(models.Model):\n    person = models.ForeignKey(Person)\n    group = models.ForeignKey(Group)\n    date_joined = models.DateTimeField(default=datetime.now)\n    invite_reason = models.CharField(max_length=64, null=True)\n\n    class Meta:\n        ordering = ('date_joined', 'invite_reason', 'group')\n\n    def __str__(self):\n        return \"%s is a member of %s\" % (self.person.name, self.group.name)\n\n@python_2_unicode_compatible\nclass CustomMembership(models.Model):\n    person = models.ForeignKey(Person, db_column=\"custom_person_column\", related_name=\"custom_person_related_name\")\n    group = models.ForeignKey(Group)\n    weird_fk = models.ForeignKey(Membership, null=True)\n    date_joined = models.DateTimeField(default=datetime.now)\n\n    def __str__(self):\n        return \"%s is a member of %s\" % (self.person.name, self.group.name)\n\n    class Meta:\n        db_table = \"test_table\"\n\nclass TestNoDefaultsOrNulls(models.Model):\n    person = models.ForeignKey(Person)\n    group = models.ForeignKey(Group)\n    nodefaultnonull = models.CharField(max_length=5)\n\n@python_2_unicode_compatible\nclass PersonSelfRefM2M(models.Model):\n    name = models.CharField(max_length=5)\n    friends = models.ManyToManyField('self', through=\"Friendship\", symmetrical=False)\n\n    def __str__(self):\n        return self.name\n\nclass Friendship(models.Model):\n    first = models.ForeignKey(PersonSelfRefM2M, related_name=\"rel_from_set\")\n    second = models.ForeignKey(PersonSelfRefM2M, related_name=\"rel_to_set\")\n    date_friended = models.DateTimeField()\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/m2m_through/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom datetime import datetime\nfrom operator import attrgetter\n\nfrom django.test import TestCase\n\nfrom .models import (Person, Group, Membership, CustomMembership,\n    PersonSelfRefM2M, Friendship)\n\n\nclass M2mThroughTests(TestCase):\n    def setUp(self):\n        self.bob = Person.objects.create(name='Bob')\n        self.jim = Person.objects.create(name='Jim')\n        self.jane = Person.objects.create(name='Jane')\n        self.rock = Group.objects.create(name='Rock')\n        self.roll = Group.objects.create(name='Roll')\n\n    def test_m2m_through(self):\n        # We start out by making sure that the Group 'rock' has no members.\n        self.assertQuerysetEqual(\n            self.rock.members.all(),\n            []\n        )\n        # To make Jim a member of Group Rock, simply create a Membership object.\n        m1 = Membership.objects.create(person=self.jim, group=self.rock)\n        # We can do the same for Jane and Rock.\n        m2 = Membership.objects.create(person=self.jane, group=self.rock)\n        # Let's check to make sure that it worked.  Jane and Jim should be members of Rock.\n        self.assertQuerysetEqual(\n            self.rock.members.all(), [\n                'Jane',\n                'Jim'\n            ],\n            attrgetter(\"name\")\n        )\n        # Now we can add a bunch more Membership objects to test with.\n        m3 = Membership.objects.create(person=self.bob, group=self.roll)\n        m4 = Membership.objects.create(person=self.jim, group=self.roll)\n        m5 = Membership.objects.create(person=self.jane, group=self.roll)\n        # We can get Jim's Group membership as with any ForeignKey.\n        self.assertQuerysetEqual(\n            self.jim.group_set.all(), [\n                'Rock',\n                'Roll'\n            ],\n            attrgetter(\"name\")\n        )\n        # Querying the intermediary model works like normal.\n        self.assertEqual(\n            repr(Membership.objects.get(person=self.jane, group=self.rock)),\n            '<Membership: Jane is a member of Rock>'\n        )\n        # It's not only get that works. Filter works like normal as well.\n        self.assertQuerysetEqual(\n            Membership.objects.filter(person=self.jim), [\n                '<Membership: Jim is a member of Rock>',\n                '<Membership: Jim is a member of Roll>'\n            ]\n        )\n        self.rock.members.clear()\n        # Now there will be no members of Rock.\n        self.assertQuerysetEqual(\n            self.rock.members.all(),\n            []\n        )\n\n\n\n    def test_forward_descriptors(self):\n        # Due to complications with adding via an intermediary model,\n        # the add method is not provided.\n        self.assertRaises(AttributeError, lambda: self.rock.members.add(self.bob))\n        # Create is also disabled as it suffers from the same problems as add.\n        self.assertRaises(AttributeError, lambda: self.rock.members.create(name='Anne'))\n        # Remove has similar complications, and is not provided either.\n        self.assertRaises(AttributeError, lambda: self.rock.members.remove(self.jim))\n\n        m1 = Membership.objects.create(person=self.jim, group=self.rock)\n        m2 = Membership.objects.create(person=self.jane, group=self.rock)\n\n        # Here we back up the list of all members of Rock.\n        backup = list(self.rock.members.all())\n        # ...and we verify that it has worked.\n        self.assertEqual(\n            [p.name for p in backup],\n            ['Jane', 'Jim']\n        )\n        # The clear function should still work.\n        self.rock.members.clear()\n        # Now there will be no members of Rock.\n        self.assertQuerysetEqual(\n            self.rock.members.all(),\n            []\n        )\n\n        # Assignment should not work with models specifying a through model for many of\n        # the same reasons as adding.\n        self.assertRaises(AttributeError, setattr, self.rock, \"members\", backup)\n        # Let's re-save those instances that we've cleared.\n        m1.save()\n        m2.save()\n        # Verifying that those instances were re-saved successfully.\n        self.assertQuerysetEqual(\n            self.rock.members.all(),[\n                'Jane',\n                'Jim'\n            ],\n            attrgetter(\"name\")\n        )\n\n    def test_reverse_descriptors(self):\n        # Due to complications with adding via an intermediary model,\n        # the add method is not provided.\n        self.assertRaises(AttributeError, lambda: self.bob.group_set.add(self.rock))\n        # Create is also disabled as it suffers from the same problems as add.\n        self.assertRaises(AttributeError, lambda: self.bob.group_set.create(name=\"funk\"))\n        # Remove has similar complications, and is not provided either.\n        self.assertRaises(AttributeError, lambda: self.jim.group_set.remove(self.rock))\n\n        m1 = Membership.objects.create(person=self.jim, group=self.rock)\n        m2 = Membership.objects.create(person=self.jim, group=self.roll)\n\n        # Here we back up the list of all of Jim's groups.\n        backup = list(self.jim.group_set.all())\n        self.assertEqual(\n            [g.name for g in backup],\n            ['Rock', 'Roll']\n        )\n        # The clear function should still work.\n        self.jim.group_set.clear()\n        # Now Jim will be in no groups.\n        self.assertQuerysetEqual(\n            self.jim.group_set.all(),\n            []\n        )\n        # Assignment should not work with models specifying a through model for many of\n        # the same reasons as adding.\n        self.assertRaises(AttributeError, setattr, self.jim, \"group_set\", backup)\n        # Let's re-save those instances that we've cleared.\n\n        m1.save()\n        m2.save()\n        # Verifying that those instances were re-saved successfully.\n        self.assertQuerysetEqual(\n            self.jim.group_set.all(),[\n                'Rock',\n                'Roll'\n            ],\n            attrgetter(\"name\")\n        )\n\n    def test_custom_tests(self):\n        # Let's see if we can query through our second relationship.\n        self.assertQuerysetEqual(\n            self.rock.custom_members.all(),\n            []\n        )\n        # We can query in the opposite direction as well.\n        self.assertQuerysetEqual(\n            self.bob.custom.all(),\n            []\n        )\n\n        cm1 = CustomMembership.objects.create(person=self.bob, group=self.rock)\n        cm2 = CustomMembership.objects.create(person=self.jim, group=self.rock)\n\n        # If we get the number of people in Rock, it should be both Bob and Jim.\n        self.assertQuerysetEqual(\n            self.rock.custom_members.all(),[\n                'Bob',\n                'Jim'\n            ],\n            attrgetter(\"name\")\n        )\n        # Bob should only be in one custom group.\n        self.assertQuerysetEqual(\n            self.bob.custom.all(),[\n                'Rock'\n            ],\n            attrgetter(\"name\")\n        )\n        # Let's make sure our new descriptors don't conflict with the FK related_name.\n        self.assertQuerysetEqual(\n            self.bob.custom_person_related_name.all(),[\n                '<CustomMembership: Bob is a member of Rock>'\n            ]\n        )\n\n    def test_self_referential_tests(self):\n        # Let's first create a person who has no friends.\n        tony = PersonSelfRefM2M.objects.create(name=\"Tony\")\n        self.assertQuerysetEqual(\n            tony.friends.all(),\n            []\n        )\n\n        chris = PersonSelfRefM2M.objects.create(name=\"Chris\")\n        f = Friendship.objects.create(first=tony, second=chris, date_friended=datetime.now())\n\n        # Tony should now show that Chris is his friend.\n        self.assertQuerysetEqual(\n            tony.friends.all(),[\n                'Chris'\n            ],\n            attrgetter(\"name\")\n        )\n        # But we haven't established that Chris is Tony's Friend.\n        self.assertQuerysetEqual(\n            chris.friends.all(),\n            []\n        )\n        f2 = Friendship.objects.create(first=chris, second=tony, date_friended=datetime.now())\n\n        # Having added Chris as a friend, let's make sure that his friend set reflects\n        # that addition.\n        self.assertQuerysetEqual(\n            chris.friends.all(),[\n                'Tony'\n            ],\n            attrgetter(\"name\")\n        )\n\n        # Chris gets mad and wants to get rid of all of his friends.\n        chris.friends.clear()\n        # Now he should not have any more friends.\n        self.assertQuerysetEqual(\n            chris.friends.all(),\n            []\n        )\n        # Since this isn't a symmetrical relation, Tony's friend link still exists.\n        self.assertQuerysetEqual(\n            tony.friends.all(),[\n                'Chris'\n            ],\n            attrgetter(\"name\")\n        )\n\n    def test_query_tests(self):\n        m1 = Membership.objects.create(person=self.jim, group=self.rock)\n        m2 = Membership.objects.create(person=self.jane, group=self.rock)\n        m3 = Membership.objects.create(person=self.bob, group=self.roll)\n        m4 = Membership.objects.create(person=self.jim, group=self.roll)\n        m5 = Membership.objects.create(person=self.jane, group=self.roll)\n\n        m2.invite_reason = \"She was just awesome.\"\n        m2.date_joined = datetime(2006, 1, 1)\n        m2.save()\n        m3.date_joined = datetime(2004, 1, 1)\n        m3.save()\n        m5.date_joined = datetime(2004, 1, 1)\n        m5.save()\n\n        # We can query for the related model by using its attribute name (members, in\n        # this case).\n        self.assertQuerysetEqual(\n            Group.objects.filter(members__name='Bob'),[\n                'Roll'\n            ],\n            attrgetter(\"name\")\n        )\n\n        # To query through the intermediary model, we specify its model name.\n        # In this case, membership.\n        self.assertQuerysetEqual(\n            Group.objects.filter(membership__invite_reason=\"She was just awesome.\"),[\n                'Rock'\n            ],\n            attrgetter(\"name\")\n        )\n\n        # If we want to query in the reverse direction by the related model, use its\n        # model name (group, in this case).\n        self.assertQuerysetEqual(\n            Person.objects.filter(group__name=\"Rock\"),[\n                'Jane',\n                'Jim'\n            ],\n            attrgetter(\"name\")\n        )\n\n        cm1 = CustomMembership.objects.create(person=self.bob, group=self.rock)\n        cm2 = CustomMembership.objects.create(person=self.jim, group=self.rock)\n        # If the m2m field has specified a related_name, using that will work.\n        self.assertQuerysetEqual(\n            Person.objects.filter(custom__name=\"Rock\"),[\n                'Bob',\n                'Jim'\n            ],\n            attrgetter(\"name\")\n        )\n\n        # To query through the intermediary model in the reverse direction, we again\n        # specify its model name (membership, in this case).\n        self.assertQuerysetEqual(\n            Person.objects.filter(membership__invite_reason=\"She was just awesome.\"),[\n                'Jane'\n            ],\n            attrgetter(\"name\")\n        )\n\n        # Let's see all of the groups that Jane joined after 1 Jan 2005:\n        self.assertQuerysetEqual(\n            Group.objects.filter(membership__date_joined__gt=datetime(2005, 1, 1), membership__person=self.jane),[\n                'Rock'\n            ],\n            attrgetter(\"name\")\n        )\n\n        # Queries also work in the reverse direction: Now let's see all of the people\n        # that have joined Rock since 1 Jan 2005:\n        self.assertQuerysetEqual(\n            Person.objects.filter(membership__date_joined__gt=datetime(2005, 1, 1), membership__group=self.rock),[\n                'Jane',\n                'Jim'\n            ],\n            attrgetter(\"name\")\n        )\n\n        # Conceivably, queries through membership could return correct, but non-unique\n        # querysets.  To demonstrate this, we query for all people who have joined a\n        # group after 2004:\n        self.assertQuerysetEqual(\n            Person.objects.filter(membership__date_joined__gt=datetime(2004, 1, 1)),[\n                'Jane',\n                'Jim',\n                'Jim'\n            ],\n            attrgetter(\"name\")\n        )\n\n        # Jim showed up twice, because he joined two groups ('Rock', and 'Roll'):\n        self.assertEqual(\n            [(m.person.name, m.group.name) for m in Membership.objects.filter(date_joined__gt=datetime(2004, 1, 1))],\n            [('Jane', 'Rock'), ('Jim', 'Rock'), ('Jim', 'Roll')]\n        )\n        # QuerySet's distinct() method can correct this problem.\n        self.assertQuerysetEqual(\n            Person.objects.filter(membership__date_joined__gt=datetime(2004, 1, 1)).distinct(),[\n                'Jane',\n                'Jim'\n            ],\n            attrgetter(\"name\")\n        )\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/m2o_recursive/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/m2o_recursive/models.py",
    "content": "\"\"\"\n11. Relating an object to itself, many-to-one\n\nTo define a many-to-one relationship between a model and itself, use\n``ForeignKey('self')``.\n\nIn this example, a ``Category`` is related to itself. That is, each\n``Category`` has a parent ``Category``.\n\nSet ``related_name`` to designate what the reverse relationship is called.\n\"\"\"\n\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n@python_2_unicode_compatible\nclass Category(models.Model):\n    name = models.CharField(max_length=20)\n    parent = models.ForeignKey('self', blank=True, null=True, related_name='child_set')\n\n    def __str__(self):\n        return self.name\n\n@python_2_unicode_compatible\nclass Person(models.Model):\n    full_name = models.CharField(max_length=20)\n    mother = models.ForeignKey('self', null=True, related_name='mothers_child_set')\n    father = models.ForeignKey('self', null=True, related_name='fathers_child_set')\n\n    def __str__(self):\n        return self.full_name\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/m2o_recursive/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom django.test import TestCase\n\nfrom .models import Category, Person\n\n\nclass ManyToOneRecursiveTests(TestCase):\n\n    def setUp(self):\n        self.r = Category(id=None, name='Root category', parent=None)\n        self.r.save()\n        self.c = Category(id=None, name='Child category', parent=self.r)\n        self.c.save()\n\n    def test_m2o_recursive(self):\n        self.assertQuerysetEqual(self.r.child_set.all(),\n                                 ['<Category: Child category>'])\n        self.assertEqual(self.r.child_set.get(name__startswith='Child').id, self.c.id)\n        self.assertEqual(self.r.parent, None)\n        self.assertQuerysetEqual(self.c.child_set.all(), [])\n        self.assertEqual(self.c.parent.id, self.r.id)\n\nclass MultipleManyToOneRecursiveTests(TestCase):\n\n    def setUp(self):\n        self.dad = Person(full_name='John Smith Senior', mother=None, father=None)\n        self.dad.save()\n        self.mom = Person(full_name='Jane Smith', mother=None, father=None)\n        self.mom.save()\n        self.kid = Person(full_name='John Smith Junior', mother=self.mom, father=self.dad)\n        self.kid.save()\n\n    def test_m2o_recursive2(self):\n        self.assertEqual(self.kid.mother.id, self.mom.id)\n        self.assertEqual(self.kid.father.id, self.dad.id)\n        self.assertQuerysetEqual(self.dad.fathers_child_set.all(),\n                                 ['<Person: John Smith Junior>'])\n        self.assertQuerysetEqual(self.mom.mothers_child_set.all(),\n                                 ['<Person: John Smith Junior>'])\n        self.assertQuerysetEqual(self.kid.mothers_child_set.all(), [])\n        self.assertQuerysetEqual(self.kid.fathers_child_set.all(), [])\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/many_to_many/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/many_to_many/models.py",
    "content": "\"\"\"\n5. Many-to-many relationships\n\nTo define a many-to-many relationship, use ``ManyToManyField()``.\n\nIn this example, an ``Article`` can be published in multiple ``Publication``\nobjects, and a ``Publication`` has multiple ``Article`` objects.\n\"\"\"\n\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n@python_2_unicode_compatible\nclass Publication(models.Model):\n    title = models.CharField(max_length=30)\n\n    def __str__(self):\n        return self.title\n\n    class Meta:\n        ordering = ('title',)\n\n@python_2_unicode_compatible\nclass Article(models.Model):\n    headline = models.CharField(max_length=100)\n    publications = models.ManyToManyField(Publication)\n\n    def __str__(self):\n        return self.headline\n\n    class Meta:\n        ordering = ('headline',)\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/many_to_many/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom django.test import TestCase\nfrom django.utils import six\n\nfrom .models import Article, Publication\n\n\nclass ManyToManyTests(TestCase):\n\n    def setUp(self):\n        # Create a couple of Publications.\n        self.p1 = Publication.objects.create(id=None, title='The Python Journal')\n        self.p2 = Publication.objects.create(id=None, title='Science News')\n        self.p3 = Publication.objects.create(id=None, title='Science Weekly')\n        self.p4 = Publication.objects.create(title='Highlights for Children')\n\n        self.a1 = Article.objects.create(id=None, headline='Django lets you build Web apps easily')\n        self.a1.publications.add(self.p1)\n\n        self.a2 = Article.objects.create(id=None, headline='NASA uses Python')\n        self.a2.publications.add(self.p1, self.p2, self.p3, self.p4)\n\n        self.a3 = Article.objects.create(headline='NASA finds intelligent life on Earth')\n        self.a3.publications.add(self.p2)\n\n        self.a4 = Article.objects.create(headline='Oxygen-free diet works wonders')\n        self.a4.publications.add(self.p2)\n\n    def test_add(self):\n        # Create an Article.\n        a5 = Article(id=None, headline='Django lets you reate Web apps easily')\n        # You can't associate it with a Publication until it's been saved.\n        self.assertRaises(ValueError, getattr, a5, 'publications')\n        # Save it!\n        a5.save()\n        # Associate the Article with a Publication.\n        a5.publications.add(self.p1)\n        self.assertQuerysetEqual(a5.publications.all(),\n                                 ['<Publication: The Python Journal>'])\n        # Create another Article, and set it to appear in both Publications.\n        a6 = Article(id=None, headline='ESA uses Python')\n        a6.save()\n        a6.publications.add(self.p1, self.p2)\n        a6.publications.add(self.p3)\n        # Adding a second time is OK\n        a6.publications.add(self.p3)\n        self.assertQuerysetEqual(a6.publications.all(),\n            [\n                '<Publication: Science News>',\n                '<Publication: Science Weekly>',\n                '<Publication: The Python Journal>',\n            ])\n\n        # Adding an object of the wrong type raises TypeError\n        with six.assertRaisesRegex(self, TypeError, \"'Publication' instance expected, got <Article.*\"):\n            a6.publications.add(a5)\n        # Add a Publication directly via publications.add by using keyword arguments.\n        p4 = a6.publications.create(title='Highlights for Adults')\n        self.assertQuerysetEqual(a6.publications.all(),\n            [\n                '<Publication: Highlights for Adults>',\n                '<Publication: Science News>',\n                '<Publication: Science Weekly>',\n                '<Publication: The Python Journal>',\n            ])\n\n    def test_reverse_add(self):\n        # Adding via the 'other' end of an m2m\n        a5 = Article(headline='NASA finds intelligent life on Mars')\n        a5.save()\n        self.p2.article_set.add(a5)\n        self.assertQuerysetEqual(self.p2.article_set.all(),\n            [\n                '<Article: NASA finds intelligent life on Earth>',\n                '<Article: NASA finds intelligent life on Mars>',\n                '<Article: NASA uses Python>',\n                '<Article: Oxygen-free diet works wonders>',\n            ])\n        self.assertQuerysetEqual(a5.publications.all(),\n                                 ['<Publication: Science News>'])\n\n        # Adding via the other end using keywords\n        new_article = self.p2.article_set.create(headline='Carbon-free diet works wonders')\n        self.assertQuerysetEqual(\n            self.p2.article_set.all(),\n            [\n                '<Article: Carbon-free diet works wonders>',\n                '<Article: NASA finds intelligent life on Earth>',\n                '<Article: NASA finds intelligent life on Mars>',\n                '<Article: NASA uses Python>',\n                '<Article: Oxygen-free diet works wonders>',\n            ])\n        a6 = self.p2.article_set.all()[3]\n        self.assertQuerysetEqual(a6.publications.all(),\n            [\n                '<Publication: Highlights for Children>',\n                '<Publication: Science News>',\n                '<Publication: Science Weekly>',\n                '<Publication: The Python Journal>',\n            ])\n\n    def test_related_sets(self):\n        # Article objects have access to their related Publication objects.\n        self.assertQuerysetEqual(self.a1.publications.all(),\n             ['<Publication: The Python Journal>'])\n        self.assertQuerysetEqual(self.a2.publications.all(),\n            [\n                '<Publication: Highlights for Children>',\n                '<Publication: Science News>',\n                '<Publication: Science Weekly>',\n                '<Publication: The Python Journal>',\n            ])\n        # Publication objects have access to their related Article objects.\n        self.assertQuerysetEqual(self.p2.article_set.all(),\n            [\n                '<Article: NASA finds intelligent life on Earth>',\n                '<Article: NASA uses Python>',\n                '<Article: Oxygen-free diet works wonders>',\n            ])\n        self.assertQuerysetEqual(self.p1.article_set.all(),\n            [\n                '<Article: Django lets you build Web apps easily>',\n                '<Article: NASA uses Python>',\n            ])\n        self.assertQuerysetEqual(Publication.objects.get(id=self.p4.id).article_set.all(),\n                                 ['<Article: NASA uses Python>'])\n\n    def test_selects(self):\n        # We can perform kwarg queries across m2m relationships\n        self.assertQuerysetEqual(\n            Article.objects.filter(publications__id__exact=self.p1.id),\n            [\n                '<Article: Django lets you build Web apps easily>',\n                '<Article: NASA uses Python>',\n            ])\n        self.assertQuerysetEqual(\n            Article.objects.filter(publications__pk=self.p1.id),\n            [\n                '<Article: Django lets you build Web apps easily>',\n                '<Article: NASA uses Python>',\n            ])\n        self.assertQuerysetEqual(\n            Article.objects.filter(publications=self.p1.id),\n            [\n                '<Article: Django lets you build Web apps easily>',\n                '<Article: NASA uses Python>',\n            ])\n        self.assertQuerysetEqual(\n            Article.objects.filter(publications=self.p1),\n            [\n                '<Article: Django lets you build Web apps easily>',\n                '<Article: NASA uses Python>',\n            ])\n        self.assertQuerysetEqual(\n            Article.objects.filter(publications__title__startswith=\"Science\"),\n            [\n                '<Article: NASA finds intelligent life on Earth>',\n                '<Article: NASA uses Python>',\n                '<Article: NASA uses Python>',\n                '<Article: Oxygen-free diet works wonders>',\n            ])\n        self.assertQuerysetEqual(\n            Article.objects.filter(publications__title__startswith=\"Science\").distinct(),\n            [\n                '<Article: NASA finds intelligent life on Earth>',\n                '<Article: NASA uses Python>',\n                '<Article: Oxygen-free diet works wonders>',\n            ])\n\n        # The count() function respects distinct() as well.\n        self.assertEqual(Article.objects.filter(publications__title__startswith=\"Science\").count(), 4)\n        self.assertEqual(Article.objects.filter(publications__title__startswith=\"Science\").distinct().count(), 3)\n        self.assertQuerysetEqual(\n            Article.objects.filter(publications__in=[self.p1.id,self.p2.id]).distinct(),\n            [\n                '<Article: Django lets you build Web apps easily>',\n                '<Article: NASA finds intelligent life on Earth>',\n                '<Article: NASA uses Python>',\n                '<Article: Oxygen-free diet works wonders>',\n            ])\n        self.assertQuerysetEqual(\n            Article.objects.filter(publications__in=[self.p1.id,self.p2]).distinct(),\n            [\n                '<Article: Django lets you build Web apps easily>',\n                '<Article: NASA finds intelligent life on Earth>',\n                '<Article: NASA uses Python>',\n                '<Article: Oxygen-free diet works wonders>',\n            ])\n        self.assertQuerysetEqual(\n            Article.objects.filter(publications__in=[self.p1,self.p2]).distinct(),\n            [\n                '<Article: Django lets you build Web apps easily>',\n                '<Article: NASA finds intelligent life on Earth>',\n                '<Article: NASA uses Python>',\n                '<Article: Oxygen-free diet works wonders>',\n            ])\n\n        # Excluding a related item works as you would expect, too (although the SQL\n        # involved is a little complex).\n        self.assertQuerysetEqual(Article.objects.exclude(publications=self.p2),\n                                 ['<Article: Django lets you build Web apps easily>'])\n\n    def test_reverse_selects(self):\n        # Reverse m2m queries are supported (i.e., starting at the table that\n        # doesn't have a ManyToManyField).\n        self.assertQuerysetEqual(Publication.objects.filter(id__exact=self.p1.id),\n                                 ['<Publication: The Python Journal>'])\n        self.assertQuerysetEqual(Publication.objects.filter(pk=self.p1.id),\n                                 ['<Publication: The Python Journal>'])\n        self.assertQuerysetEqual(\n            Publication.objects.filter(article__headline__startswith=\"NASA\"),\n            [\n                '<Publication: Highlights for Children>',\n                '<Publication: Science News>',\n                '<Publication: Science News>',\n                '<Publication: Science Weekly>',\n                '<Publication: The Python Journal>',\n            ])\n        self.assertQuerysetEqual(Publication.objects.filter(article__id__exact=self.a1.id),\n                                 ['<Publication: The Python Journal>'])\n        self.assertQuerysetEqual(Publication.objects.filter(article__pk=self.a1.id),\n                                 ['<Publication: The Python Journal>'])\n        self.assertQuerysetEqual(Publication.objects.filter(article=self.a1.id),\n                                 ['<Publication: The Python Journal>'])\n        self.assertQuerysetEqual(Publication.objects.filter(article=self.a1),\n                                 ['<Publication: The Python Journal>'])\n\n        self.assertQuerysetEqual(\n            Publication.objects.filter(article__in=[self.a1.id,self.a2.id]).distinct(),\n            [\n                '<Publication: Highlights for Children>',\n                '<Publication: Science News>',\n                '<Publication: Science Weekly>',\n                '<Publication: The Python Journal>',\n            ])\n        self.assertQuerysetEqual(\n            Publication.objects.filter(article__in=[self.a1.id,self.a2]).distinct(),\n            [\n                '<Publication: Highlights for Children>',\n                '<Publication: Science News>',\n                '<Publication: Science Weekly>',\n                '<Publication: The Python Journal>',\n            ])\n        self.assertQuerysetEqual(\n            Publication.objects.filter(article__in=[self.a1,self.a2]).distinct(),\n            [\n                '<Publication: Highlights for Children>',\n                '<Publication: Science News>',\n                '<Publication: Science Weekly>',\n                '<Publication: The Python Journal>',\n            ])\n\n    def test_delete(self):\n        # If we delete a Publication, its Articles won't be able to access it.\n        self.p1.delete()\n        self.assertQuerysetEqual(Publication.objects.all(),\n            [\n                '<Publication: Highlights for Children>',\n                '<Publication: Science News>',\n                '<Publication: Science Weekly>',\n            ])\n        self.assertQuerysetEqual(self.a1.publications.all(), [])\n        # If we delete an Article, its Publications won't be able to access it.\n        self.a2.delete()\n        self.assertQuerysetEqual(Article.objects.all(),\n            [\n                '<Article: Django lets you build Web apps easily>',\n                '<Article: NASA finds intelligent life on Earth>',\n                '<Article: Oxygen-free diet works wonders>',\n            ])\n        self.assertQuerysetEqual(self.p2.article_set.all(),\n            [\n                '<Article: NASA finds intelligent life on Earth>',\n                '<Article: Oxygen-free diet works wonders>',\n            ])\n\n    def test_bulk_delete(self):\n        # Bulk delete some Publications - references to deleted publications should go\n        Publication.objects.filter(title__startswith='Science').delete()\n        self.assertQuerysetEqual(Publication.objects.all(),\n            [\n                '<Publication: Highlights for Children>',\n                '<Publication: The Python Journal>',\n            ])\n        self.assertQuerysetEqual(Article.objects.all(),\n            [\n                '<Article: Django lets you build Web apps easily>',\n                '<Article: NASA finds intelligent life on Earth>',\n                '<Article: NASA uses Python>',\n                '<Article: Oxygen-free diet works wonders>',\n            ])\n        self.assertQuerysetEqual(self.a2.publications.all(),\n            [\n                '<Publication: Highlights for Children>',\n                '<Publication: The Python Journal>',\n            ])\n\n        # Bulk delete some articles - references to deleted objects should go\n        q = Article.objects.filter(headline__startswith='Django')\n        self.assertQuerysetEqual(q, ['<Article: Django lets you build Web apps easily>'])\n        q.delete()\n        # After the delete, the QuerySet cache needs to be cleared,\n        # and the referenced objects should be gone\n        self.assertQuerysetEqual(q, [])\n        self.assertQuerysetEqual(self.p1.article_set.all(),\n                                 ['<Article: NASA uses Python>'])\n\n    def test_remove(self):\n        # Removing publication from an article:\n        self.assertQuerysetEqual(self.p2.article_set.all(),\n            [\n                '<Article: NASA finds intelligent life on Earth>',\n                '<Article: NASA uses Python>',\n                '<Article: Oxygen-free diet works wonders>',\n            ])\n        self.a4.publications.remove(self.p2)\n        self.assertQuerysetEqual(self.p2.article_set.all(),\n            [\n                '<Article: NASA finds intelligent life on Earth>',\n                '<Article: NASA uses Python>',\n            ])\n        self.assertQuerysetEqual(self.a4.publications.all(), [])\n        # And from the other end\n        self.p2.article_set.remove(self.a3)\n        self.assertQuerysetEqual(self.p2.article_set.all(),\n            [\n                '<Article: NASA uses Python>',\n            ])\n        self.assertQuerysetEqual(self.a3.publications.all(), [])\n\n    def test_assign(self):\n        # Relation sets can be assigned. Assignment clears any existing set members\n        self.p2.article_set = [self.a4, self.a3]\n        self.assertQuerysetEqual(self.p2.article_set.all(),\n            [\n                '<Article: NASA finds intelligent life on Earth>',\n                '<Article: Oxygen-free diet works wonders>',\n            ])\n        self.assertQuerysetEqual(self.a4.publications.all(),\n                                 ['<Publication: Science News>'])\n        self.a4.publications = [self.p3.id]\n        self.assertQuerysetEqual(self.p2.article_set.all(),\n                                 ['<Article: NASA finds intelligent life on Earth>'])\n        self.assertQuerysetEqual(self.a4.publications.all(),\n                                 ['<Publication: Science Weekly>'])\n\n        # An alternate to calling clear() is to assign the empty set\n        self.p2.article_set = []\n        self.assertQuerysetEqual(self.p2.article_set.all(), [])\n        self.a4.publications = []\n        self.assertQuerysetEqual(self.a4.publications.all(), [])\n\n    def test_assign_ids(self):\n        # Relation sets can also be set using primary key values\n        self.p2.article_set = [self.a4.id, self.a3.id]\n        self.assertQuerysetEqual(self.p2.article_set.all(),\n            [\n                '<Article: NASA finds intelligent life on Earth>',\n                '<Article: Oxygen-free diet works wonders>',\n            ])\n        self.assertQuerysetEqual(self.a4.publications.all(),\n                                 ['<Publication: Science News>'])\n        self.a4.publications = [self.p3.id]\n        self.assertQuerysetEqual(self.p2.article_set.all(),\n                                 ['<Article: NASA finds intelligent life on Earth>'])\n        self.assertQuerysetEqual(self.a4.publications.all(),\n                                 ['<Publication: Science Weekly>'])\n\n    def test_clear(self):\n        # Relation sets can be cleared:\n        self.p2.article_set.clear()\n        self.assertQuerysetEqual(self.p2.article_set.all(), [])\n        self.assertQuerysetEqual(self.a4.publications.all(), [])\n\n        # And you can clear from the other end\n        self.p2.article_set.add(self.a3, self.a4)\n        self.assertQuerysetEqual(self.p2.article_set.all(),\n            [\n                '<Article: NASA finds intelligent life on Earth>',\n                '<Article: Oxygen-free diet works wonders>',\n            ])\n        self.assertQuerysetEqual(self.a4.publications.all(),\n            [\n                '<Publication: Science News>',\n            ])\n        self.a4.publications.clear()\n        self.assertQuerysetEqual(self.a4.publications.all(), [])\n        self.assertQuerysetEqual(self.p2.article_set.all(),\n                                 ['<Article: NASA finds intelligent life on Earth>'])\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/many_to_one/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/many_to_one/models.py",
    "content": "\"\"\"\n4. Many-to-one relationships\n\nTo define a many-to-one relationship, use ``ForeignKey()``.\n\"\"\"\nfrom __future__ import unicode_literals\n\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n@python_2_unicode_compatible\nclass Reporter(models.Model):\n    first_name = models.CharField(max_length=30)\n    last_name = models.CharField(max_length=30)\n    email = models.EmailField()\n\n    def __str__(self):\n        return \"%s %s\" % (self.first_name, self.last_name)\n\n@python_2_unicode_compatible\nclass Article(models.Model):\n    headline = models.CharField(max_length=100)\n    pub_date = models.DateField()\n    reporter = models.ForeignKey(Reporter)\n\n    def __str__(self):\n        return self.headline\n\n    class Meta:\n        ordering = ('headline',)\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/many_to_one/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom copy import deepcopy\nfrom datetime import datetime\n\nfrom django.core.exceptions import MultipleObjectsReturned, FieldError\nfrom django.test import TestCase\nfrom django.utils import six\nfrom django.utils.translation import ugettext_lazy\n\nfrom .models import Article, Reporter\n\n\nclass ManyToOneTests(TestCase):\n    def setUp(self):\n        # Create a few Reporters.\n        self.r = Reporter(first_name='John', last_name='Smith', email='john@example.com')\n        self.r.save()\n        self.r2 = Reporter(first_name='Paul', last_name='Jones', email='paul@example.com')\n        self.r2.save()\n        # Create an Article.\n        self.a = Article(id=None, headline=\"This is a test\",\n                         pub_date=datetime(2005, 7, 27), reporter=self.r)\n        self.a.save()\n\n    def test_get(self):\n        # Article objects have access to their related Reporter objects.\n        r = self.a.reporter\n        self.assertEqual(r.id, self.r.id)\n        # These are strings instead of unicode strings because that's what was used in\n        # the creation of this reporter (and we haven't refreshed the data from the\n        # database, which always returns unicode strings).\n        self.assertEqual((r.first_name, self.r.last_name), ('John', 'Smith'))\n\n    def test_create(self):\n        # You can also instantiate an Article by passing the Reporter's ID\n        # instead of a Reporter object.\n        a3 = Article(id=None, headline=\"Third article\",\n                     pub_date=datetime(2005, 7, 27), reporter_id=self.r.id)\n        a3.save()\n        self.assertEqual(a3.reporter.id, self.r.id)\n\n        # Similarly, the reporter ID can be a string.\n        a4 = Article(id=None, headline=\"Fourth article\",\n                     pub_date=datetime(2005, 7, 27), reporter_id=str(self.r.id))\n        a4.save()\n        self.assertEqual(repr(a4.reporter), \"<Reporter: John Smith>\")\n\n    def test_add(self):\n        # Create an Article via the Reporter object.\n        new_article = self.r.article_set.create(headline=\"John's second story\",\n                                                pub_date=datetime(2005, 7, 29))\n        self.assertEqual(repr(new_article), \"<Article: John's second story>\")\n        self.assertEqual(new_article.reporter.id, self.r.id)\n\n        # Create a new article, and add it to the article set.\n        new_article2 = Article(headline=\"Paul's story\", pub_date=datetime(2006, 1, 17))\n        self.r.article_set.add(new_article2)\n        self.assertEqual(new_article2.reporter.id, self.r.id)\n        self.assertQuerysetEqual(self.r.article_set.all(),\n            [\n                \"<Article: John's second story>\",\n                \"<Article: Paul's story>\",\n                \"<Article: This is a test>\",\n            ])\n\n        # Add the same article to a different article set - check that it moves.\n        self.r2.article_set.add(new_article2)\n        self.assertEqual(new_article2.reporter.id, self.r2.id)\n        self.assertQuerysetEqual(self.r2.article_set.all(), [\"<Article: Paul's story>\"])\n\n        # Adding an object of the wrong type raises TypeError.\n        with six.assertRaisesRegex(self, TypeError, \"'Article' instance expected, got <Reporter.*\"):\n            self.r.article_set.add(self.r2)\n        self.assertQuerysetEqual(self.r.article_set.all(),\n            [\n                \"<Article: John's second story>\",\n                \"<Article: This is a test>\",\n            ])\n\n    def test_assign(self):\n        new_article = self.r.article_set.create(headline=\"John's second story\",\n                                                pub_date=datetime(2005, 7, 29))\n        new_article2 = self.r2.article_set.create(headline=\"Paul's story\",\n                                                  pub_date=datetime(2006, 1, 17))\n        # Assign the article to the reporter directly using the descriptor.\n        new_article2.reporter = self.r\n        new_article2.save()\n        self.assertEqual(repr(new_article2.reporter), \"<Reporter: John Smith>\")\n        self.assertEqual(new_article2.reporter.id, self.r.id)\n        self.assertQuerysetEqual(self.r.article_set.all(), [\n            \"<Article: John's second story>\",\n            \"<Article: Paul's story>\",\n            \"<Article: This is a test>\",\n        ])\n        self.assertQuerysetEqual(self.r2.article_set.all(), [])\n        # Set the article back again using set descriptor.\n        self.r2.article_set = [new_article, new_article2]\n        self.assertQuerysetEqual(self.r.article_set.all(), [\"<Article: This is a test>\"])\n        self.assertQuerysetEqual(self.r2.article_set.all(),\n            [\n                \"<Article: John's second story>\",\n                \"<Article: Paul's story>\",\n            ])\n\n        # Funny case - assignment notation can only go so far; because the\n        # ForeignKey cannot be null, existing members of the set must remain.\n        self.r.article_set = [new_article]\n        self.assertQuerysetEqual(self.r.article_set.all(),\n            [\n                \"<Article: John's second story>\",\n                \"<Article: This is a test>\",\n            ])\n        self.assertQuerysetEqual(self.r2.article_set.all(), [\"<Article: Paul's story>\"])\n        # Reporter cannot be null - there should not be a clear or remove method\n        self.assertFalse(hasattr(self.r2.article_set, 'remove'))\n        self.assertFalse(hasattr(self.r2.article_set, 'clear'))\n\n    def test_selects(self):\n        new_article = self.r.article_set.create(headline=\"John's second story\",\n                                                pub_date=datetime(2005, 7, 29))\n        new_article2 = self.r2.article_set.create(headline=\"Paul's story\",\n                                                  pub_date=datetime(2006, 1, 17))\n        # Reporter objects have access to their related Article objects.\n        self.assertQuerysetEqual(self.r.article_set.all(), [\n            \"<Article: John's second story>\",\n            \"<Article: This is a test>\",\n        ])\n        self.assertQuerysetEqual(self.r.article_set.filter(headline__startswith='This'),\n                                 [\"<Article: This is a test>\"])\n        self.assertEqual(self.r.article_set.count(), 2)\n        self.assertEqual(self.r2.article_set.count(), 1)\n        # Get articles by id\n        self.assertQuerysetEqual(Article.objects.filter(id__exact=self.a.id),\n                                 [\"<Article: This is a test>\"])\n        self.assertQuerysetEqual(Article.objects.filter(pk=self.a.id),\n                                 [\"<Article: This is a test>\"])\n        # Query on an article property\n        self.assertQuerysetEqual(Article.objects.filter(headline__startswith='This'),\n                                 [\"<Article: This is a test>\"])\n        # The API automatically follows relationships as far as you need.\n        # Use double underscores to separate relationships.\n        # This works as many levels deep as you want. There's no limit.\n        # Find all Articles for any Reporter whose first name is \"John\".\n        self.assertQuerysetEqual(Article.objects.filter(reporter__first_name__exact='John'),\n            [\n                \"<Article: John's second story>\",\n                \"<Article: This is a test>\",\n            ])\n        # Check that implied __exact also works\n        self.assertQuerysetEqual(Article.objects.filter(reporter__first_name='John'),\n            [\n                \"<Article: John's second story>\",\n                \"<Article: This is a test>\",\n            ])\n        # Query twice over the related field.\n        self.assertQuerysetEqual(\n            Article.objects.filter(reporter__first_name__exact='John',\n                                   reporter__last_name__exact='Smith'),\n            [\n                \"<Article: John's second story>\",\n                \"<Article: This is a test>\",\n            ])\n        # The underlying query only makes one join when a related table is referenced twice.\n        queryset = Article.objects.filter(reporter__first_name__exact='John',\n                                       reporter__last_name__exact='Smith')\n        self.assertNumQueries(1, list, queryset)\n        self.assertEqual(queryset.query.get_compiler(queryset.db).as_sql()[0].count('INNER JOIN'), 1)\n\n        # The automatically joined table has a predictable name.\n        self.assertQuerysetEqual(\n            Article.objects.filter(reporter__first_name__exact='John').extra(\n                where=[\"many_to_one_reporter.last_name='Smith'\"]),\n            [\n                \"<Article: John's second story>\",\n                \"<Article: This is a test>\",\n            ])\n        # ... and should work fine with the unicode that comes out of forms.Form.cleaned_data\n        self.assertQuerysetEqual(\n            Article.objects.filter(reporter__first_name__exact='John'\n                                  ).extra(where=[\"many_to_one_reporter.last_name='%s'\" % 'Smith']),\n            [\n                \"<Article: John's second story>\",\n                \"<Article: This is a test>\",\n            ])\n        # Find all Articles for a Reporter.\n        # Use direct ID check, pk check, and object comparison\n        self.assertQuerysetEqual(\n            Article.objects.filter(reporter__id__exact=self.r.id),\n            [\n                \"<Article: John's second story>\",\n                \"<Article: This is a test>\",\n            ])\n        self.assertQuerysetEqual(\n            Article.objects.filter(reporter__pk=self.r.id),\n            [\n                \"<Article: John's second story>\",\n                \"<Article: This is a test>\",\n            ])\n        self.assertQuerysetEqual(\n            Article.objects.filter(reporter=self.r.id),\n            [\n                \"<Article: John's second story>\",\n                \"<Article: This is a test>\",\n            ])\n        self.assertQuerysetEqual(\n            Article.objects.filter(reporter=self.r),\n            [\n                \"<Article: John's second story>\",\n                \"<Article: This is a test>\",\n            ])\n        self.assertQuerysetEqual(\n            Article.objects.filter(reporter__in=[self.r.id,self.r2.id]).distinct(),\n            [\n                    \"<Article: John's second story>\",\n                    \"<Article: Paul's story>\",\n                    \"<Article: This is a test>\",\n            ])\n        self.assertQuerysetEqual(\n            Article.objects.filter(reporter__in=[self.r,self.r2]).distinct(),\n            [\n                \"<Article: John's second story>\",\n                \"<Article: Paul's story>\",\n                \"<Article: This is a test>\",\n            ])\n        # You can also use a queryset instead of a literal list of instances.\n        # The queryset must be reduced to a list of values using values(),\n        # then converted into a query\n        self.assertQuerysetEqual(\n            Article.objects.filter(\n                        reporter__in=Reporter.objects.filter(first_name='John').values('pk').query\n                    ).distinct(),\n            [\n                \"<Article: John's second story>\",\n                \"<Article: This is a test>\",\n            ])\n\n    def test_reverse_selects(self):\n        a3 = Article.objects.create(id=None, headline=\"Third article\",\n                                    pub_date=datetime(2005, 7, 27), reporter_id=self.r.id)\n        a4 = Article.objects.create(id=None, headline=\"Fourth article\",\n                                    pub_date=datetime(2005, 7, 27), reporter_id=str(self.r.id))\n        # Reporters can be queried\n        self.assertQuerysetEqual(Reporter.objects.filter(id__exact=self.r.id),\n                                 [\"<Reporter: John Smith>\"])\n        self.assertQuerysetEqual(Reporter.objects.filter(pk=self.r.id),\n                                 [\"<Reporter: John Smith>\"])\n        self.assertQuerysetEqual(Reporter.objects.filter(first_name__startswith='John'),\n                                 [\"<Reporter: John Smith>\"])\n        # Reporters can query in opposite direction of ForeignKey definition\n        self.assertQuerysetEqual(Reporter.objects.filter(article__id__exact=self.a.id),\n                                 [\"<Reporter: John Smith>\"])\n        self.assertQuerysetEqual(Reporter.objects.filter(article__pk=self.a.id),\n                                 [\"<Reporter: John Smith>\"])\n        self.assertQuerysetEqual(Reporter.objects.filter(article=self.a.id),\n                                 [\"<Reporter: John Smith>\"])\n        self.assertQuerysetEqual(Reporter.objects.filter(article=self.a),\n                                 [\"<Reporter: John Smith>\"])\n        self.assertQuerysetEqual(\n            Reporter.objects.filter(article__in=[self.a.id,a3.id]).distinct(),\n            [\"<Reporter: John Smith>\"])\n        self.assertQuerysetEqual(\n            Reporter.objects.filter(article__in=[self.a.id,a3]).distinct(),\n            [\"<Reporter: John Smith>\"])\n        self.assertQuerysetEqual(\n            Reporter.objects.filter(article__in=[self.a,a3]).distinct(),\n            [\"<Reporter: John Smith>\"])\n        self.assertQuerysetEqual(\n            Reporter.objects.filter(article__headline__startswith='T'),\n            [\"<Reporter: John Smith>\", \"<Reporter: John Smith>\"])\n        self.assertQuerysetEqual(\n            Reporter.objects.filter(article__headline__startswith='T').distinct(),\n            [\"<Reporter: John Smith>\"])\n\n        # Counting in the opposite direction works in conjunction with distinct()\n        self.assertEqual(\n            Reporter.objects.filter(article__headline__startswith='T').count(), 2)\n        self.assertEqual(\n            Reporter.objects.filter(article__headline__startswith='T').distinct().count(), 1)\n\n        # Queries can go round in circles.\n        self.assertQuerysetEqual(\n            Reporter.objects.filter(article__reporter__first_name__startswith='John'),\n            [\n                \"<Reporter: John Smith>\",\n                \"<Reporter: John Smith>\",\n                \"<Reporter: John Smith>\",\n            ])\n        self.assertQuerysetEqual(\n            Reporter.objects.filter(article__reporter__first_name__startswith='John').distinct(),\n            [\"<Reporter: John Smith>\"])\n        self.assertQuerysetEqual(\n            Reporter.objects.filter(article__reporter__exact=self.r).distinct(),\n            [\"<Reporter: John Smith>\"])\n\n        # Check that implied __exact also works.\n        self.assertQuerysetEqual(\n            Reporter.objects.filter(article__reporter=self.r).distinct(),\n            [\"<Reporter: John Smith>\"])\n\n        # It's possible to use values() calls across many-to-one relations.\n        # (Note, too, that we clear the ordering here so as not to drag the\n        # 'headline' field into the columns being used to determine uniqueness)\n        d = {'reporter__first_name': 'John', 'reporter__last_name': 'Smith'}\n        self.assertEqual([d],\n            list(Article.objects.filter(reporter=self.r).distinct().order_by()\n                 .values('reporter__first_name', 'reporter__last_name')))\n\n    def test_select_related(self):\n        # Check that Article.objects.select_related().dates() works properly when\n        # there are multiple Articles with the same date but different foreign-key\n        # objects (Reporters).\n        r1 = Reporter.objects.create(first_name='Mike', last_name='Royko', email='royko@suntimes.com')\n        r2 = Reporter.objects.create(first_name='John', last_name='Kass', email='jkass@tribune.com')\n        a1 = Article.objects.create(headline='First', pub_date=datetime(1980, 4, 23), reporter=r1)\n        a2 = Article.objects.create(headline='Second', pub_date=datetime(1980, 4, 23), reporter=r2)\n        self.assertEqual(list(Article.objects.select_related().dates('pub_date', 'day')),\n            [\n                datetime(1980, 4, 23, 0, 0),\n                datetime(2005, 7, 27, 0, 0),\n            ])\n        self.assertEqual(list(Article.objects.select_related().dates('pub_date', 'month')),\n            [\n                datetime(1980, 4, 1, 0, 0),\n                datetime(2005, 7, 1, 0, 0),\n            ])\n        self.assertEqual(list(Article.objects.select_related().dates('pub_date', 'year')),\n            [\n                datetime(1980, 1, 1, 0, 0),\n                datetime(2005, 1, 1, 0, 0),\n            ])\n\n    def test_delete(self):\n        new_article = self.r.article_set.create(headline=\"John's second story\",\n                                                pub_date=datetime(2005, 7, 29))\n        new_article2 = self.r2.article_set.create(headline=\"Paul's story\",\n                                                  pub_date=datetime(2006, 1, 17))\n        a3 = Article.objects.create(id=None, headline=\"Third article\",\n                                    pub_date=datetime(2005, 7, 27), reporter_id=self.r.id)\n        a4 = Article.objects.create(id=None, headline=\"Fourth article\",\n                                    pub_date=datetime(2005, 7, 27), reporter_id=str(self.r.id))\n        # If you delete a reporter, his articles will be deleted.\n        self.assertQuerysetEqual(Article.objects.all(),\n            [\n                \"<Article: Fourth article>\",\n                \"<Article: John's second story>\",\n                \"<Article: Paul's story>\",\n                \"<Article: Third article>\",\n                \"<Article: This is a test>\",\n            ])\n        self.assertQuerysetEqual(Reporter.objects.order_by('first_name'),\n            [\n                \"<Reporter: John Smith>\",\n                \"<Reporter: Paul Jones>\",\n            ])\n        self.r2.delete()\n        self.assertQuerysetEqual(Article.objects.all(),\n            [\n                \"<Article: Fourth article>\",\n                \"<Article: John's second story>\",\n                \"<Article: Third article>\",\n                \"<Article: This is a test>\",\n            ])\n        self.assertQuerysetEqual(Reporter.objects.order_by('first_name'),\n                                 [\"<Reporter: John Smith>\"])\n        # You can delete using a JOIN in the query.\n        Reporter.objects.filter(article__headline__startswith='This').delete()\n        self.assertQuerysetEqual(Reporter.objects.all(), [])\n        self.assertQuerysetEqual(Article.objects.all(), [])\n\n    def test_regression_12876(self):\n        # Regression for #12876 -- Model methods that include queries that\n        # recursive don't cause recursion depth problems under deepcopy.\n        self.r.cached_query = Article.objects.filter(reporter=self.r)\n        self.assertEqual(repr(deepcopy(self.r)), \"<Reporter: John Smith>\")\n\n    def test_explicit_fk(self):\n        # Create a new Article with get_or_create using an explicit value\n        # for a ForeignKey.\n        a2, created = Article.objects.get_or_create(id=None,\n                                                    headline=\"John's second test\",\n                                                    pub_date=datetime(2011, 5, 7),\n                                                    reporter_id=self.r.id)\n        self.assertTrue(created)\n        self.assertEqual(a2.reporter.id, self.r.id)\n\n        # You can specify filters containing the explicit FK value.\n        self.assertQuerysetEqual(\n            Article.objects.filter(reporter_id__exact=self.r.id),\n            [\n                \"<Article: John's second test>\",\n                \"<Article: This is a test>\",\n            ])\n\n        # Create an Article by Paul for the same date.\n        a3 = Article.objects.create(id=None, headline=\"Paul's commentary\",\n                                    pub_date=datetime(2011, 5, 7),\n                                    reporter_id=self.r2.id)\n        self.assertEqual(a3.reporter.id, self.r2.id)\n\n        # Get should respect explicit foreign keys as well.\n        self.assertRaises(MultipleObjectsReturned,\n                          Article.objects.get, reporter_id=self.r.id)\n        self.assertEqual(repr(a3),\n                         repr(Article.objects.get(reporter_id=self.r2.id,\n                                             pub_date=datetime(2011, 5, 7))))\n\n    def test_manager_class_caching(self):\n        r1 = Reporter.objects.create(first_name='Mike')\n        r2 = Reporter.objects.create(first_name='John')\n\n        # Same twice\n        self.assertTrue(r1.article_set.__class__ is r1.article_set.__class__)\n\n        # Same as each other\n        self.assertTrue(r1.article_set.__class__ is r2.article_set.__class__)\n\n    def test_create_relation_with_ugettext_lazy(self):\n        reporter = Reporter.objects.create(first_name='John',\n                                           last_name='Smith',\n                                           email='john.smith@example.com')\n        lazy = ugettext_lazy('test')\n        reporter.article_set.create(headline=lazy,\n                                    pub_date=datetime(2011, 6, 10))\n        notlazy = six.text_type(lazy)\n        article = reporter.article_set.get()\n        self.assertEqual(article.headline, notlazy)\n\n    def test_values_list_exception(self):\n        expected_message = \"Cannot resolve keyword 'notafield' into field. Choices are: %s\"\n\n        self.assertRaisesMessage(FieldError,\n                                 expected_message % ', '.join(Reporter._meta.get_all_field_names()),\n                                 Article.objects.values_list,\n                                 'reporter__notafield')\n        self.assertRaisesMessage(FieldError,\n                                 expected_message % ', '.join(['EXTRA',] + Article._meta.get_all_field_names()),\n                                 Article.objects.extra(select={'EXTRA': 'EXTRA_SELECT'}).values_list,\n                                 'notafield')\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/many_to_one_null/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/many_to_one_null/models.py",
    "content": "\"\"\"\n16. Many-to-one relationships that can be null\n\nTo define a many-to-one relationship that can have a null foreign key, use\n``ForeignKey()`` with ``null=True`` .\n\"\"\"\n\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n@python_2_unicode_compatible\nclass Reporter(models.Model):\n    name = models.CharField(max_length=30)\n\n    def __str__(self):\n        return self.name\n\n@python_2_unicode_compatible\nclass Article(models.Model):\n    headline = models.CharField(max_length=100)\n    reporter = models.ForeignKey(Reporter, null=True)\n\n    class Meta:\n        ordering = ('headline',)\n\n    def __str__(self):\n        return self.headline\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/many_to_one_null/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom django.test import TestCase\n\nfrom .models import Reporter, Article\n\n\nclass ManyToOneNullTests(TestCase):\n    def setUp(self):\n        # Create a Reporter.\n        self.r = Reporter(name='John Smith')\n        self.r.save()\n        # Create an Article.\n        self.a = Article(headline=\"First\", reporter=self.r)\n        self.a.save()\n        # Create an Article via the Reporter object.\n        self.a2 = self.r.article_set.create(headline=\"Second\")\n        # Create an Article with no Reporter by passing \"reporter=None\".\n        self.a3 = Article(headline=\"Third\", reporter=None)\n        self.a3.save()\n        # Create another article and reporter\n        self.r2 = Reporter(name='Paul Jones')\n        self.r2.save()\n        self.a4 = self.r2.article_set.create(headline='Fourth')\n\n    def test_get_related(self):\n        self.assertEqual(self.a.reporter.id, self.r.id)\n        # Article objects have access to their related Reporter objects.\n        r = self.a.reporter\n        self.assertEqual(r.id, self.r.id)\n\n    def test_created_via_related_set(self):\n        self.assertEqual(self.a2.reporter.id, self.r.id)\n\n    def test_related_set(self):\n        # Reporter objects have access to their related Article objects.\n        self.assertQuerysetEqual(self.r.article_set.all(),\n                                 ['<Article: First>', '<Article: Second>'])\n        self.assertQuerysetEqual(self.r.article_set.filter(headline__startswith='Fir'),\n                                 ['<Article: First>'])\n        self.assertEqual(self.r.article_set.count(), 2)\n\n    def test_created_without_related(self):\n        self.assertEqual(self.a3.reporter, None)\n        # Need to reget a3 to refresh the cache\n        a3 = Article.objects.get(pk=self.a3.pk)\n        self.assertRaises(AttributeError, getattr, a3.reporter, 'id')\n        # Accessing an article's 'reporter' attribute returns None\n        # if the reporter is set to None.\n        self.assertEqual(a3.reporter, None)\n        # To retrieve the articles with no reporters set, use \"reporter__isnull=True\".\n        self.assertQuerysetEqual(Article.objects.filter(reporter__isnull=True),\n                                 ['<Article: Third>'])\n        # We can achieve the same thing by filtering for the case where the\n        # reporter is None.\n        self.assertQuerysetEqual(Article.objects.filter(reporter=None),\n                                 ['<Article: Third>'])\n        # Set the reporter for the Third article\n        self.assertQuerysetEqual(self.r.article_set.all(),\n            ['<Article: First>', '<Article: Second>'])\n        self.r.article_set.add(a3)\n        self.assertQuerysetEqual(self.r.article_set.all(),\n            ['<Article: First>', '<Article: Second>', '<Article: Third>'])\n        # Remove an article from the set, and check that it was removed.\n        self.r.article_set.remove(a3)\n        self.assertQuerysetEqual(self.r.article_set.all(),\n                                 ['<Article: First>', '<Article: Second>'])\n        self.assertQuerysetEqual(Article.objects.filter(reporter__isnull=True),\n                                 ['<Article: Third>'])\n\n    def test_remove_from_wrong_set(self):\n        self.assertQuerysetEqual(self.r2.article_set.all(), ['<Article: Fourth>'])\n        # Try to remove a4 from a set it does not belong to\n        self.assertRaises(Reporter.DoesNotExist, self.r.article_set.remove, self.a4)\n        self.assertQuerysetEqual(self.r2.article_set.all(), ['<Article: Fourth>'])\n\n    def test_assign_clear_related_set(self):\n        # Use descriptor assignment to allocate ForeignKey. Null is legal, so\n        # existing members of set that are not in the assignment set are set null\n        self.r2.article_set = [self.a2, self.a3]\n        self.assertQuerysetEqual(self.r2.article_set.all(),\n                                 ['<Article: Second>', '<Article: Third>'])\n        # Clear the rest of the set\n        self.r.article_set.clear()\n        self.assertQuerysetEqual(self.r.article_set.all(), [])\n        self.assertQuerysetEqual(Article.objects.filter(reporter__isnull=True),\n                                 ['<Article: First>', '<Article: Fourth>'])\n\n    def test_clear_efficiency(self):\n        r = Reporter.objects.create()\n        for _ in range(3):\n            r.article_set.create()\n        with self.assertNumQueries(1):\n            r.article_set.clear()\n        self.assertEqual(r.article_set.count(), 0)\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/model_forms/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/model_forms/models.py",
    "content": "\"\"\"\nXX. Generating HTML forms from models\n\nThis is mostly just a reworking of the ``form_for_model``/``form_for_instance``\ntests to use ``ModelForm``. As such, the text may not make sense in all cases,\nand the examples are probably a poor fit for the ``ModelForm`` syntax. In other\nwords, most of these tests should be rewritten.\n\"\"\"\nfrom __future__ import unicode_literals\n\nimport os\nimport tempfile\n\nfrom django.core.files.storage import FileSystemStorage\nfrom django.db import models\nfrom django.utils import six\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\ntemp_storage_dir = tempfile.mkdtemp(dir=os.environ['DJANGO_TEST_TEMP_DIR'])\ntemp_storage = FileSystemStorage(temp_storage_dir)\n\nARTICLE_STATUS = (\n    (1, 'Draft'),\n    (2, 'Pending'),\n    (3, 'Live'),\n)\n\nARTICLE_STATUS_CHAR = (\n    ('d', 'Draft'),\n    ('p', 'Pending'),\n    ('l', 'Live'),\n)\n\n@python_2_unicode_compatible\nclass Category(models.Model):\n    name = models.CharField(max_length=20)\n    slug = models.SlugField(max_length=20)\n    url = models.CharField('The URL', max_length=40)\n\n    def __str__(self):\n        return self.name\n\n    def __repr__(self):\n        return self.__str__()\n\n@python_2_unicode_compatible\nclass Writer(models.Model):\n    name = models.CharField(max_length=50, help_text='Use both first and last names.')\n\n    class Meta:\n        ordering = ('name',)\n\n    def __str__(self):\n        return self.name\n\n@python_2_unicode_compatible\nclass Article(models.Model):\n    headline = models.CharField(max_length=50)\n    slug = models.SlugField()\n    pub_date = models.DateField()\n    created = models.DateField(editable=False)\n    writer = models.ForeignKey(Writer)\n    article = models.TextField()\n    categories = models.ManyToManyField(Category, blank=True)\n    status = models.PositiveIntegerField(choices=ARTICLE_STATUS, blank=True, null=True)\n\n    def save(self):\n        import datetime\n        if not self.id:\n            self.created = datetime.date.today()\n        return super(Article, self).save()\n\n    def __str__(self):\n        return self.headline\n\nclass ImprovedArticle(models.Model):\n    article = models.OneToOneField(Article)\n\nclass ImprovedArticleWithParentLink(models.Model):\n    article = models.OneToOneField(Article, parent_link=True)\n\nclass BetterWriter(Writer):\n    score = models.IntegerField()\n\n@python_2_unicode_compatible\nclass WriterProfile(models.Model):\n    writer = models.OneToOneField(Writer, primary_key=True)\n    age = models.PositiveIntegerField()\n\n    def __str__(self):\n        return \"%s is %s\" % (self.writer, self.age)\n\n@python_2_unicode_compatible\nclass TextFile(models.Model):\n    description = models.CharField(max_length=20)\n    file = models.FileField(storage=temp_storage, upload_to='tests', max_length=15)\n\n    def __str__(self):\n        return self.description\n\ntry:\n    # If PIL is available, try testing ImageFields. Checking for the existence\n    # of Image is enough for CPython, but for PyPy, you need to check for the\n    # underlying modules If PIL is not available, ImageField tests are omitted.\n    # Try to import PIL in either of the two ways it can end up installed.\n    try:\n        from PIL import Image, _imaging\n    except ImportError:\n        import Image, _imaging\n\n    test_images = True\n\n    @python_2_unicode_compatible\n    class ImageFile(models.Model):\n        def custom_upload_path(self, filename):\n            path = self.path or 'tests'\n            return '%s/%s' % (path, filename)\n\n        description = models.CharField(max_length=20)\n\n        # Deliberately put the image field *after* the width/height fields to\n        # trigger the bug in #10404 with width/height not getting assigned.\n        width = models.IntegerField(editable=False)\n        height = models.IntegerField(editable=False)\n        image = models.ImageField(storage=temp_storage, upload_to=custom_upload_path,\n                                  width_field='width', height_field='height')\n        path = models.CharField(max_length=16, blank=True, default='')\n\n        def __str__(self):\n            return self.description\n\n    @python_2_unicode_compatible\n    class OptionalImageFile(models.Model):\n        def custom_upload_path(self, filename):\n            path = self.path or 'tests'\n            return '%s/%s' % (path, filename)\n\n        description = models.CharField(max_length=20)\n        image = models.ImageField(storage=temp_storage, upload_to=custom_upload_path,\n                                  width_field='width', height_field='height',\n                                  blank=True, null=True)\n        width = models.IntegerField(editable=False, null=True)\n        height = models.IntegerField(editable=False, null=True)\n        path = models.CharField(max_length=16, blank=True, default='')\n\n        def __str__(self):\n            return self.description\nexcept ImportError:\n    test_images = False\n\n@python_2_unicode_compatible\nclass CommaSeparatedInteger(models.Model):\n    field = models.CommaSeparatedIntegerField(max_length=20)\n\n    def __str__(self):\n        return self.field\n\n@python_2_unicode_compatible\nclass Product(models.Model):\n    slug = models.SlugField(unique=True)\n\n    def __str__(self):\n        return self.slug\n\n@python_2_unicode_compatible\nclass Price(models.Model):\n    price = models.DecimalField(max_digits=10, decimal_places=2)\n    quantity = models.PositiveIntegerField()\n\n    def __str__(self):\n        return \"%s for %s\" % (self.quantity, self.price)\n\n    class Meta:\n        unique_together = (('price', 'quantity'),)\n\nclass ArticleStatus(models.Model):\n    status = models.CharField(max_length=2, choices=ARTICLE_STATUS_CHAR, blank=True, null=True)\n\n@python_2_unicode_compatible\nclass Inventory(models.Model):\n    barcode = models.PositiveIntegerField(unique=True)\n    parent = models.ForeignKey('self', to_field='barcode', blank=True, null=True)\n    name = models.CharField(blank=False, max_length=20)\n\n    class Meta:\n        ordering = ('name',)\n\n    def __str__(self):\n        return self.name\n\n    def __repr__(self):\n        return self.__str__()\n\nclass Book(models.Model):\n    title = models.CharField(max_length=40)\n    author = models.ForeignKey(Writer, blank=True, null=True)\n    special_id = models.IntegerField(blank=True, null=True, unique=True)\n\n    class Meta:\n        unique_together = ('title', 'author')\n\nclass BookXtra(models.Model):\n    isbn = models.CharField(max_length=16, unique=True)\n    suffix1 = models.IntegerField(blank=True, default=0)\n    suffix2 = models.IntegerField(blank=True, default=0)\n\n    class Meta:\n        unique_together = (('suffix1', 'suffix2'))\n        abstract = True\n\nclass DerivedBook(Book, BookXtra):\n    pass\n\n@python_2_unicode_compatible\nclass ExplicitPK(models.Model):\n    key = models.CharField(max_length=20, primary_key=True)\n    desc = models.CharField(max_length=20, blank=True, unique=True)\n    class Meta:\n        unique_together = ('key', 'desc')\n\n    def __str__(self):\n        return self.key\n\n@python_2_unicode_compatible\nclass Post(models.Model):\n    title = models.CharField(max_length=50, unique_for_date='posted', blank=True)\n    slug = models.CharField(max_length=50, unique_for_year='posted', blank=True)\n    subtitle = models.CharField(max_length=50, unique_for_month='posted', blank=True)\n    posted = models.DateField()\n\n    def __str__(self):\n        return self.name\n\nclass DerivedPost(Post):\n    pass\n\n@python_2_unicode_compatible\nclass BigInt(models.Model):\n    biggie = models.BigIntegerField()\n\n    def __str__(self):\n        return six.text_type(self.biggie)\n\nclass MarkupField(models.CharField):\n    def __init__(self, *args, **kwargs):\n        kwargs[\"max_length\"] = 20\n        super(MarkupField, self).__init__(*args, **kwargs)\n\n    def formfield(self, **kwargs):\n        # don't allow this field to be used in form (real use-case might be\n        # that you know the markup will always be X, but it is among an app\n        # that allows the user to say it could be something else)\n        # regressed at r10062\n        return None\n\nclass CustomFieldForExclusionModel(models.Model):\n    name = models.CharField(max_length=10)\n    markup = MarkupField()\n\nclass FlexibleDatePost(models.Model):\n    title = models.CharField(max_length=50, unique_for_date='posted', blank=True)\n    slug = models.CharField(max_length=50, unique_for_year='posted', blank=True)\n    subtitle = models.CharField(max_length=50, unique_for_month='posted', blank=True)\n    posted = models.DateField(blank=True, null=True)\n\n@python_2_unicode_compatible\nclass Colour(models.Model):\n    name = models.CharField(max_length=50)\n\n    def __iter__(self):\n        for number in xrange(5):\n            yield number\n\n    def __str__(self):\n        return self.name\n\nclass ColourfulItem(models.Model):\n    name = models.CharField(max_length=50)\n    colours = models.ManyToManyField(Colour)\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/model_forms/tests.py",
    "content": "from __future__ import absolute_import, unicode_literals\n\nimport datetime\nimport os\nfrom decimal import Decimal\n\nfrom django import forms\nfrom django.core.files.uploadedfile import SimpleUploadedFile\nfrom django.core.validators import ValidationError\nfrom django.db import connection\nfrom django.db.models.query import EmptyQuerySet\nfrom django.forms.models import model_to_dict\nfrom django.utils._os import upath\nfrom django.utils.unittest import skipUnless\nfrom django.test import TestCase\nfrom django.utils import six\n\nfrom .models import (Article, ArticleStatus, BetterWriter, BigInt, Book,\n    Category, CommaSeparatedInteger, CustomFieldForExclusionModel, DerivedBook,\n    DerivedPost, ExplicitPK, FlexibleDatePost, ImprovedArticle,\n    ImprovedArticleWithParentLink, Inventory, Post, Price,\n    Product, TextFile, Writer, WriterProfile, Colour, ColourfulItem,\n    test_images)\n\nif test_images:\n    from .models import ImageFile, OptionalImageFile\n    class ImageFileForm(forms.ModelForm):\n        class Meta:\n            model = ImageFile\n\n    class OptionalImageFileForm(forms.ModelForm):\n        class Meta:\n            model = OptionalImageFile\n\nclass ProductForm(forms.ModelForm):\n    class Meta:\n        model = Product\n\n\nclass PriceForm(forms.ModelForm):\n    class Meta:\n        model = Price\n\n\nclass BookForm(forms.ModelForm):\n    class Meta:\n       model = Book\n\n\nclass DerivedBookForm(forms.ModelForm):\n    class Meta:\n        model = DerivedBook\n\n\nclass ExplicitPKForm(forms.ModelForm):\n    class Meta:\n        model = ExplicitPK\n        fields = ('key', 'desc',)\n\n\nclass PostForm(forms.ModelForm):\n    class Meta:\n        model = Post\n\n\nclass DerivedPostForm(forms.ModelForm):\n    class Meta:\n        model = DerivedPost\n\n\nclass CustomWriterForm(forms.ModelForm):\n   name = forms.CharField(required=False)\n\n   class Meta:\n       model = Writer\n\n\nclass FlexDatePostForm(forms.ModelForm):\n    class Meta:\n        model = FlexibleDatePost\n\n\nclass BaseCategoryForm(forms.ModelForm):\n    class Meta:\n        model = Category\n\n\nclass ArticleForm(forms.ModelForm):\n    class Meta:\n        model = Article\n\n\nclass ArticleForm(forms.ModelForm):\n    class Meta:\n        model = Article\n\nclass PartialArticleForm(forms.ModelForm):\n    class Meta:\n        model = Article\n        fields = ('headline','pub_date')\n\nclass RoykoForm(forms.ModelForm):\n    class Meta:\n        model = Writer\n\nclass TestArticleForm(forms.ModelForm):\n    class Meta:\n        model = Article\n\nclass PartialArticleFormWithSlug(forms.ModelForm):\n    class Meta:\n        model = Article\n        fields=('headline', 'slug', 'pub_date')\n\nclass ArticleStatusForm(forms.ModelForm):\n    class Meta:\n        model = ArticleStatus\n\nclass InventoryForm(forms.ModelForm):\n    class Meta:\n        model = Inventory\n\nclass SelectInventoryForm(forms.Form):\n    items = forms.ModelMultipleChoiceField(Inventory.objects.all(), to_field_name='barcode')\n\nclass CustomFieldForExclusionForm(forms.ModelForm):\n    class Meta:\n        model = CustomFieldForExclusionModel\n        fields = ['name', 'markup']\n\nclass ShortCategory(forms.ModelForm):\n    name = forms.CharField(max_length=5)\n    slug = forms.CharField(max_length=5)\n    url = forms.CharField(max_length=3)\n\nclass ImprovedArticleForm(forms.ModelForm):\n    class Meta:\n        model = ImprovedArticle\n\nclass ImprovedArticleWithParentLinkForm(forms.ModelForm):\n    class Meta:\n        model = ImprovedArticleWithParentLink\n\nclass BetterWriterForm(forms.ModelForm):\n    class Meta:\n        model = BetterWriter\n\nclass WriterProfileForm(forms.ModelForm):\n    class Meta:\n        model = WriterProfile\n\nclass TextFileForm(forms.ModelForm):\n    class Meta:\n        model = TextFile\n\nclass BigIntForm(forms.ModelForm):\n    class Meta:\n        model = BigInt\n\nclass ModelFormWithMedia(forms.ModelForm):\n    class Media:\n        js = ('/some/form/javascript',)\n        css = {\n            'all': ('/some/form/css',)\n        }\n    class Meta:\n        model = TextFile\n\nclass CommaSeparatedIntegerForm(forms.ModelForm):\n   class Meta:\n       model = CommaSeparatedInteger\n\nclass PriceFormWithoutQuantity(forms.ModelForm):\n    class Meta:\n        model = Price\n        exclude = ('quantity',)\n\nclass ColourfulItemForm(forms.ModelForm):\n    class Meta:\n        model = ColourfulItem\n\n\nclass ModelFormBaseTest(TestCase):\n    def test_base_form(self):\n        self.assertEqual(list(BaseCategoryForm.base_fields),\n                         ['name', 'slug', 'url'])\n\n    def test_extra_fields(self):\n        class ExtraFields(BaseCategoryForm):\n            some_extra_field = forms.BooleanField()\n\n        self.assertEqual(list(ExtraFields.base_fields),\n                         ['name', 'slug', 'url', 'some_extra_field'])\n\n    def test_replace_field(self):\n        class ReplaceField(forms.ModelForm):\n            url = forms.BooleanField()\n\n            class Meta:\n                model = Category\n\n        self.assertTrue(isinstance(ReplaceField.base_fields['url'],\n                                     forms.fields.BooleanField))\n\n    def test_override_field(self):\n        class WriterForm(forms.ModelForm):\n            book = forms.CharField(required=False)\n\n            class Meta:\n                model = Writer\n\n        wf = WriterForm({'name': 'Richard Lockridge'})\n        self.assertTrue(wf.is_valid())\n\n    def test_limit_fields(self):\n        class LimitFields(forms.ModelForm):\n            class Meta:\n                model = Category\n                fields = ['url']\n\n        self.assertEqual(list(LimitFields.base_fields),\n                         ['url'])\n\n    def test_exclude_fields(self):\n        class ExcludeFields(forms.ModelForm):\n            class Meta:\n                model = Category\n                exclude = ['url']\n\n        self.assertEqual(list(ExcludeFields.base_fields),\n                         ['name', 'slug'])\n\n    def test_confused_form(self):\n        class ConfusedForm(forms.ModelForm):\n            \"\"\" Using 'fields' *and* 'exclude'. Not sure why you'd want to do\n            this, but uh, \"be liberal in what you accept\" and all.\n            \"\"\"\n            class Meta:\n                model = Category\n                fields = ['name', 'url']\n                exclude = ['url']\n\n        self.assertEqual(list(ConfusedForm.base_fields),\n                         ['name'])\n\n    def test_mixmodel_form(self):\n        class MixModelForm(BaseCategoryForm):\n            \"\"\" Don't allow more than one 'model' definition in the\n            inheritance hierarchy.  Technically, it would generate a valid\n            form, but the fact that the resulting save method won't deal with\n            multiple objects is likely to trip up people not familiar with the\n            mechanics.\n            \"\"\"\n            class Meta:\n                model = Article\n            # MixModelForm is now an Article-related thing, because MixModelForm.Meta\n            # overrides BaseCategoryForm.Meta.\n\n        self.assertEqual(\n            list(MixModelForm.base_fields),\n            ['headline', 'slug', 'pub_date', 'writer', 'article', 'categories', 'status']\n        )\n\n    def test_article_form(self):\n        self.assertEqual(\n            list(ArticleForm.base_fields),\n            ['headline', 'slug', 'pub_date', 'writer', 'article', 'categories', 'status']\n        )\n\n    def test_bad_form(self):\n        #First class with a Meta class wins...\n        class BadForm(ArticleForm, BaseCategoryForm):\n            pass\n\n        self.assertEqual(\n            list(BadForm.base_fields),\n            ['headline', 'slug', 'pub_date', 'writer', 'article', 'categories', 'status']\n        )\n\n    def test_subcategory_form(self):\n        class SubCategoryForm(BaseCategoryForm):\n            \"\"\" Subclassing without specifying a Meta on the class will use\n            the parent's Meta (or the first parent in the MRO if there are\n            multiple parent classes).\n            \"\"\"\n            pass\n\n        self.assertEqual(list(SubCategoryForm.base_fields),\n                         ['name', 'slug', 'url'])\n\n    def test_subclassmeta_form(self):\n        class SomeCategoryForm(forms.ModelForm):\n             checkbox = forms.BooleanField()\n\n             class Meta:\n                 model = Category\n\n        class SubclassMeta(SomeCategoryForm):\n            \"\"\" We can also subclass the Meta inner class to change the fields\n            list.\n            \"\"\"\n            class Meta(SomeCategoryForm.Meta):\n                exclude = ['url']\n\n        self.assertHTMLEqual(\n            str(SubclassMeta()),\n            \"\"\"<tr><th><label for=\"id_name\">Name:</label></th><td><input id=\"id_name\" type=\"text\" name=\"name\" maxlength=\"20\" /></td></tr>\n<tr><th><label for=\"id_slug\">Slug:</label></th><td><input id=\"id_slug\" type=\"text\" name=\"slug\" maxlength=\"20\" /></td></tr>\n<tr><th><label for=\"id_checkbox\">Checkbox:</label></th><td><input type=\"checkbox\" name=\"checkbox\" id=\"id_checkbox\" /></td></tr>\"\"\"\n            )\n\n    def test_orderfields_form(self):\n        class OrderFields(forms.ModelForm):\n            class Meta:\n                model = Category\n                fields = ['url', 'name']\n\n        self.assertEqual(list(OrderFields.base_fields),\n                         ['url', 'name'])\n        self.assertHTMLEqual(\n            str(OrderFields()),\n            \"\"\"<tr><th><label for=\"id_url\">The URL:</label></th><td><input id=\"id_url\" type=\"text\" name=\"url\" maxlength=\"40\" /></td></tr>\n<tr><th><label for=\"id_name\">Name:</label></th><td><input id=\"id_name\" type=\"text\" name=\"name\" maxlength=\"20\" /></td></tr>\"\"\"\n            )\n\n    def test_orderfields2_form(self):\n        class OrderFields2(forms.ModelForm):\n            class Meta:\n                model = Category\n                fields = ['slug', 'url', 'name']\n                exclude = ['url']\n\n        self.assertEqual(list(OrderFields2.base_fields),\n                         ['slug', 'name'])\n\n\nclass TestWidgetForm(forms.ModelForm):\n    class Meta:\n        model = Category\n        fields = ['name', 'url', 'slug']\n        widgets = {\n            'name': forms.Textarea,\n            'url': forms.TextInput(attrs={'class': 'url'})\n        }\n\n\n\nclass TestWidgets(TestCase):\n    def test_base_widgets(self):\n        frm = TestWidgetForm()\n        self.assertHTMLEqual(\n            str(frm['name']),\n            '<textarea id=\"id_name\" rows=\"10\" cols=\"40\" name=\"name\"></textarea>'\n        )\n        self.assertHTMLEqual(\n            str(frm['url']),\n            '<input id=\"id_url\" type=\"text\" class=\"url\" name=\"url\" maxlength=\"40\" />'\n        )\n        self.assertHTMLEqual(\n            str(frm['slug']),\n            '<input id=\"id_slug\" type=\"text\" name=\"slug\" maxlength=\"20\" />'\n        )\n\n\nclass IncompleteCategoryFormWithFields(forms.ModelForm):\n    \"\"\"\n    A form that replaces the model's url field with a custom one. This should\n    prevent the model field's validation from being called.\n    \"\"\"\n    url = forms.CharField(required=False)\n\n    class Meta:\n        fields = ('name', 'slug')\n        model = Category\n\nclass IncompleteCategoryFormWithExclude(forms.ModelForm):\n    \"\"\"\n    A form that replaces the model's url field with a custom one. This should\n    prevent the model field's validation from being called.\n    \"\"\"\n    url = forms.CharField(required=False)\n\n    class Meta:\n        exclude = ['url']\n        model = Category\n\n\nclass ValidationTest(TestCase):\n    def test_validates_with_replaced_field_not_specified(self):\n        form = IncompleteCategoryFormWithFields(data={'name': 'some name', 'slug': 'some-slug'})\n        assert form.is_valid()\n\n    def test_validates_with_replaced_field_excluded(self):\n        form = IncompleteCategoryFormWithExclude(data={'name': 'some name', 'slug': 'some-slug'})\n        assert form.is_valid()\n\n    def test_notrequired_overrides_notblank(self):\n        form = CustomWriterForm({})\n        assert form.is_valid()\n\n\n\n\n# unique/unique_together validation\nclass UniqueTest(TestCase):\n    def setUp(self):\n        self.writer = Writer.objects.create(name='Mike Royko')\n\n    def test_simple_unique(self):\n        form = ProductForm({'slug': 'teddy-bear-blue'})\n        self.assertTrue(form.is_valid())\n        obj = form.save()\n        form = ProductForm({'slug': 'teddy-bear-blue'})\n        self.assertEqual(len(form.errors), 1)\n        self.assertEqual(form.errors['slug'], ['Product with this Slug already exists.'])\n        form = ProductForm({'slug': 'teddy-bear-blue'}, instance=obj)\n        self.assertTrue(form.is_valid())\n\n    def test_unique_together(self):\n        \"\"\"ModelForm test of unique_together constraint\"\"\"\n        form = PriceForm({'price': '6.00', 'quantity': '1'})\n        self.assertTrue(form.is_valid())\n        form.save()\n        form = PriceForm({'price': '6.00', 'quantity': '1'})\n        self.assertFalse(form.is_valid())\n        self.assertEqual(len(form.errors), 1)\n        self.assertEqual(form.errors['__all__'], ['Price with this Price and Quantity already exists.'])\n\n    def test_unique_null(self):\n        title = 'I May Be Wrong But I Doubt It'\n        form = BookForm({'title': title, 'author': self.writer.pk})\n        self.assertTrue(form.is_valid())\n        form.save()\n        form = BookForm({'title': title, 'author': self.writer.pk})\n        self.assertFalse(form.is_valid())\n        self.assertEqual(len(form.errors), 1)\n        self.assertEqual(form.errors['__all__'], ['Book with this Title and Author already exists.'])\n        form = BookForm({'title': title})\n        self.assertTrue(form.is_valid())\n        form.save()\n        form = BookForm({'title': title})\n        self.assertTrue(form.is_valid())\n\n    def test_inherited_unique(self):\n        title = 'Boss'\n        Book.objects.create(title=title, author=self.writer, special_id=1)\n        form = DerivedBookForm({'title': 'Other', 'author': self.writer.pk, 'special_id': '1', 'isbn': '12345'})\n        self.assertFalse(form.is_valid())\n        self.assertEqual(len(form.errors), 1)\n        self.assertEqual(form.errors['special_id'], ['Book with this Special id already exists.'])\n\n    def test_inherited_unique_together(self):\n        title = 'Boss'\n        form = BookForm({'title': title, 'author': self.writer.pk})\n        self.assertTrue(form.is_valid())\n        form.save()\n        form = DerivedBookForm({'title': title, 'author': self.writer.pk, 'isbn': '12345'})\n        self.assertFalse(form.is_valid())\n        self.assertEqual(len(form.errors), 1)\n        self.assertEqual(form.errors['__all__'], ['Book with this Title and Author already exists.'])\n\n    def test_abstract_inherited_unique(self):\n        title = 'Boss'\n        isbn = '12345'\n        dbook = DerivedBook.objects.create(title=title, author=self.writer, isbn=isbn)\n        form = DerivedBookForm({'title': 'Other', 'author': self.writer.pk, 'isbn': isbn})\n        self.assertFalse(form.is_valid())\n        self.assertEqual(len(form.errors), 1)\n        self.assertEqual(form.errors['isbn'], ['Derived book with this Isbn already exists.'])\n\n    def test_abstract_inherited_unique_together(self):\n        title = 'Boss'\n        isbn = '12345'\n        dbook = DerivedBook.objects.create(title=title, author=self.writer, isbn=isbn)\n        form = DerivedBookForm({\n                    'title': 'Other',\n                    'author': self.writer.pk,\n                    'isbn': '9876',\n                    'suffix1': '0',\n                    'suffix2': '0'\n                })\n        self.assertFalse(form.is_valid())\n        self.assertEqual(len(form.errors), 1)\n        self.assertEqual(form.errors['__all__'],\n                         ['Derived book with this Suffix1 and Suffix2 already exists.'])\n\n    def test_explicitpk_unspecified(self):\n        \"\"\"Test for primary_key being in the form and failing validation.\"\"\"\n        form = ExplicitPKForm({'key': '', 'desc': '' })\n        self.assertFalse(form.is_valid())\n\n    def test_explicitpk_unique(self):\n        \"\"\"Ensure keys and blank character strings are tested for uniqueness.\"\"\"\n        form = ExplicitPKForm({'key': 'key1', 'desc': ''})\n        self.assertTrue(form.is_valid())\n        form.save()\n        form = ExplicitPKForm({'key': 'key1', 'desc': ''})\n        self.assertFalse(form.is_valid())\n        self.assertEqual(len(form.errors), 3)\n        self.assertEqual(form.errors['__all__'], ['Explicit pk with this Key and Desc already exists.'])\n        self.assertEqual(form.errors['desc'], ['Explicit pk with this Desc already exists.'])\n        self.assertEqual(form.errors['key'], ['Explicit pk with this Key already exists.'])\n\n    def test_unique_for_date(self):\n        p = Post.objects.create(title=\"Django 1.0 is released\",\n            slug=\"Django 1.0\", subtitle=\"Finally\", posted=datetime.date(2008, 9, 3))\n        form = PostForm({'title': \"Django 1.0 is released\", 'posted': '2008-09-03'})\n        self.assertFalse(form.is_valid())\n        self.assertEqual(len(form.errors), 1)\n        self.assertEqual(form.errors['title'], ['Title must be unique for Posted date.'])\n        form = PostForm({'title': \"Work on Django 1.1 begins\", 'posted': '2008-09-03'})\n        self.assertTrue(form.is_valid())\n        form = PostForm({'title': \"Django 1.0 is released\", 'posted': '2008-09-04'})\n        self.assertTrue(form.is_valid())\n        form = PostForm({'slug': \"Django 1.0\", 'posted': '2008-01-01'})\n        self.assertFalse(form.is_valid())\n        self.assertEqual(len(form.errors), 1)\n        self.assertEqual(form.errors['slug'], ['Slug must be unique for Posted year.'])\n        form = PostForm({'subtitle': \"Finally\", 'posted': '2008-09-30'})\n        self.assertFalse(form.is_valid())\n        self.assertEqual(form.errors['subtitle'], ['Subtitle must be unique for Posted month.'])\n        form = PostForm({'subtitle': \"Finally\", \"title\": \"Django 1.0 is released\",\n            \"slug\": \"Django 1.0\", 'posted': '2008-09-03'}, instance=p)\n        self.assertTrue(form.is_valid())\n        form = PostForm({'title': \"Django 1.0 is released\"})\n        self.assertFalse(form.is_valid())\n        self.assertEqual(len(form.errors), 1)\n        self.assertEqual(form.errors['posted'], ['This field is required.'])\n\n    def test_inherited_unique_for_date(self):\n        p = Post.objects.create(title=\"Django 1.0 is released\",\n            slug=\"Django 1.0\", subtitle=\"Finally\", posted=datetime.date(2008, 9, 3))\n        form = DerivedPostForm({'title': \"Django 1.0 is released\", 'posted': '2008-09-03'})\n        self.assertFalse(form.is_valid())\n        self.assertEqual(len(form.errors), 1)\n        self.assertEqual(form.errors['title'], ['Title must be unique for Posted date.'])\n        form = DerivedPostForm({'title': \"Work on Django 1.1 begins\", 'posted': '2008-09-03'})\n        self.assertTrue(form.is_valid())\n        form = DerivedPostForm({'title': \"Django 1.0 is released\", 'posted': '2008-09-04'})\n        self.assertTrue(form.is_valid())\n        form = DerivedPostForm({'slug': \"Django 1.0\", 'posted': '2008-01-01'})\n        self.assertFalse(form.is_valid())\n        self.assertEqual(len(form.errors), 1)\n        self.assertEqual(form.errors['slug'], ['Slug must be unique for Posted year.'])\n        form = DerivedPostForm({'subtitle': \"Finally\", 'posted': '2008-09-30'})\n        self.assertFalse(form.is_valid())\n        self.assertEqual(form.errors['subtitle'], ['Subtitle must be unique for Posted month.'])\n        form = DerivedPostForm({'subtitle': \"Finally\", \"title\": \"Django 1.0 is released\",\n            \"slug\": \"Django 1.0\", 'posted': '2008-09-03'}, instance=p)\n        self.assertTrue(form.is_valid())\n\n    def test_unique_for_date_with_nullable_date(self):\n        p = FlexibleDatePost.objects.create(title=\"Django 1.0 is released\",\n            slug=\"Django 1.0\", subtitle=\"Finally\", posted=datetime.date(2008, 9, 3))\n\n        form = FlexDatePostForm({'title': \"Django 1.0 is released\"})\n        self.assertTrue(form.is_valid())\n        form = FlexDatePostForm({'slug': \"Django 1.0\"})\n        self.assertTrue(form.is_valid())\n        form = FlexDatePostForm({'subtitle': \"Finally\"})\n        self.assertTrue(form.is_valid())\n        form = FlexDatePostForm({'subtitle': \"Finally\", \"title\": \"Django 1.0 is released\",\n            \"slug\": \"Django 1.0\"}, instance=p)\n        self.assertTrue(form.is_valid())\n\nclass ModelToDictTests(TestCase):\n    \"\"\"\n    Tests for forms.models.model_to_dict\n    \"\"\"\n    def test_model_to_dict_many_to_many(self):\n        categories=[\n            Category(name='TestName1', slug='TestName1', url='url1'),\n            Category(name='TestName2', slug='TestName2', url='url2'),\n            Category(name='TestName3', slug='TestName3', url='url3')\n        ]\n        for c in categories:\n            c.save()\n        writer = Writer(name='Test writer')\n        writer.save()\n\n        art = Article(\n            headline='Test article',\n            slug='test-article',\n            pub_date=datetime.date(1988, 1, 4),\n            writer=writer,\n            article='Hello.'\n        )\n        art.save()\n        for c in categories:\n            art.categories.add(c)\n        art.save()\n\n        with self.assertNumQueries(1):\n            d = model_to_dict(art)\n\n        #Ensure all many-to-many categories appear in model_to_dict\n        for c in categories:\n            self.assertIn(c.pk, d['categories'])\n        #Ensure many-to-many relation appears as a list\n        self.assertIsInstance(d['categories'], list)\n\nclass OldFormForXTests(TestCase):\n    def test_base_form(self):\n        self.assertEqual(Category.objects.count(), 0)\n        f = BaseCategoryForm()\n        self.assertHTMLEqual(\n            str(f),\n            \"\"\"<tr><th><label for=\"id_name\">Name:</label></th><td><input id=\"id_name\" type=\"text\" name=\"name\" maxlength=\"20\" /></td></tr>\n<tr><th><label for=\"id_slug\">Slug:</label></th><td><input id=\"id_slug\" type=\"text\" name=\"slug\" maxlength=\"20\" /></td></tr>\n<tr><th><label for=\"id_url\">The URL:</label></th><td><input id=\"id_url\" type=\"text\" name=\"url\" maxlength=\"40\" /></td></tr>\"\"\"\n            )\n        self.assertHTMLEqual(\n            str(f.as_ul()),\n            \"\"\"<li><label for=\"id_name\">Name:</label> <input id=\"id_name\" type=\"text\" name=\"name\" maxlength=\"20\" /></li>\n<li><label for=\"id_slug\">Slug:</label> <input id=\"id_slug\" type=\"text\" name=\"slug\" maxlength=\"20\" /></li>\n<li><label for=\"id_url\">The URL:</label> <input id=\"id_url\" type=\"text\" name=\"url\" maxlength=\"40\" /></li>\"\"\"\n            )\n        self.assertHTMLEqual(\n            str(f[\"name\"]),\n            \"\"\"<input id=\"id_name\" type=\"text\" name=\"name\" maxlength=\"20\" />\"\"\")\n\n    def test_auto_id(self):\n        f = BaseCategoryForm(auto_id=False)\n        self.assertHTMLEqual(\n            str(f.as_ul()),\n            \"\"\"<li>Name: <input type=\"text\" name=\"name\" maxlength=\"20\" /></li>\n<li>Slug: <input type=\"text\" name=\"slug\" maxlength=\"20\" /></li>\n<li>The URL: <input type=\"text\" name=\"url\" maxlength=\"40\" /></li>\"\"\"\n            )\n\n    def test_with_data(self):\n        self.assertEqual(Category.objects.count(), 0)\n        f = BaseCategoryForm({'name': 'Entertainment',\n                              'slug': 'entertainment',\n                              'url': 'entertainment'})\n        self.assertTrue(f.is_valid())\n        self.assertEqual(f.cleaned_data['name'], 'Entertainment')\n        self.assertEqual(f.cleaned_data['slug'], 'entertainment')\n        self.assertEqual(f.cleaned_data['url'], 'entertainment')\n        c1 = f.save()\n        # Testing wether the same object is returned from the\n        # ORM... not the fastest way...\n\n        self.assertEqual(c1, Category.objects.all()[0])\n        self.assertEqual(c1.name, \"Entertainment\")\n        self.assertEqual(Category.objects.count(), 1)\n\n        f = BaseCategoryForm({'name': \"It's a test\",\n                              'slug': 'its-test',\n                              'url': 'test'})\n        self.assertTrue(f.is_valid())\n        self.assertEqual(f.cleaned_data['name'], \"It's a test\")\n        self.assertEqual(f.cleaned_data['slug'], 'its-test')\n        self.assertEqual(f.cleaned_data['url'], 'test')\n        c2 = f.save()\n        # Testing wether the same object is returned from the\n        # ORM... not the fastest way...\n        self.assertEqual(c2, Category.objects.get(pk=c2.pk))\n        self.assertEqual(c2.name, \"It's a test\")\n        self.assertEqual(Category.objects.count(), 2)\n\n        # If you call save() with commit=False, then it will return an object that\n        # hasn't yet been saved to the database. In this case, it's up to you to call\n        # save() on the resulting model instance.\n        f = BaseCategoryForm({'name': 'Third test', 'slug': 'third-test', 'url': 'third'})\n        self.assertEqual(f.is_valid(), True)\n        self.assertEqual(f.cleaned_data['url'], 'third')\n        self.assertEqual(f.cleaned_data['name'], 'Third test')\n        self.assertEqual(f.cleaned_data['slug'], 'third-test')\n        c3 = f.save(commit=False)\n        self.assertEqual(c3.name, \"Third test\")\n        self.assertEqual(Category.objects.count(), 2)\n        c3.save()\n        self.assertEqual(Category.objects.count(), 3)\n\n        # If you call save() with invalid data, you'll get a ValueError.\n        f = BaseCategoryForm({'name': '', 'slug': 'not a slug!', 'url': 'foo'})\n        self.assertEqual(f.errors['name'], ['This field is required.'])\n        self.assertEqual(f.errors['slug'], [\"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.\"])\n        self.assertEqual(f.cleaned_data, {'url': 'foo'})\n        with self.assertRaises(ValueError):\n            f.save()\n        f = BaseCategoryForm({'name': '', 'slug': '', 'url': 'foo'})\n        with self.assertRaises(ValueError):\n            f.save()\n\n        # Create a couple of Writers.\n        w_royko = Writer(name='Mike Royko')\n        w_royko.save()\n        w_woodward = Writer(name='Bob Woodward')\n        w_woodward.save()\n        # ManyToManyFields are represented by a MultipleChoiceField, ForeignKeys and any\n        # fields with the 'choices' attribute are represented by a ChoiceField.\n        f = ArticleForm(auto_id=False)\n        self.assertHTMLEqual(six.text_type(f), '''<tr><th>Headline:</th><td><input type=\"text\" name=\"headline\" maxlength=\"50\" /></td></tr>\n<tr><th>Slug:</th><td><input type=\"text\" name=\"slug\" maxlength=\"50\" /></td></tr>\n<tr><th>Pub date:</th><td><input type=\"text\" name=\"pub_date\" /></td></tr>\n<tr><th>Writer:</th><td><select name=\"writer\">\n<option value=\"\" selected=\"selected\">---------</option>\n<option value=\"%s\">Bob Woodward</option>\n<option value=\"%s\">Mike Royko</option>\n</select></td></tr>\n<tr><th>Article:</th><td><textarea rows=\"10\" cols=\"40\" name=\"article\"></textarea></td></tr>\n<tr><th>Categories:</th><td><select multiple=\"multiple\" name=\"categories\">\n<option value=\"%s\">Entertainment</option>\n<option value=\"%s\">It&#39;s a test</option>\n<option value=\"%s\">Third test</option>\n</select><br /><span class=\"helptext\"> Hold down \"Control\", or \"Command\" on a Mac, to select more than one.</span></td></tr>\n<tr><th>Status:</th><td><select name=\"status\">\n<option value=\"\" selected=\"selected\">---------</option>\n<option value=\"1\">Draft</option>\n<option value=\"2\">Pending</option>\n<option value=\"3\">Live</option>\n</select></td></tr>''' % (w_woodward.pk, w_royko.pk, c1.pk, c2.pk, c3.pk))\n\n        # You can restrict a form to a subset of the complete list of fields\n        # by providing a 'fields' argument. If you try to save a\n        # model created with such a form, you need to ensure that the fields\n        # that are _not_ on the form have default values, or are allowed to have\n        # a value of None. If a field isn't specified on a form, the object created\n        # from the form can't provide a value for that field!\n        f = PartialArticleForm(auto_id=False)\n        self.assertHTMLEqual(six.text_type(f), '''<tr><th>Headline:</th><td><input type=\"text\" name=\"headline\" maxlength=\"50\" /></td></tr>\n<tr><th>Pub date:</th><td><input type=\"text\" name=\"pub_date\" /></td></tr>''')\n\n        # When the ModelForm is passed an instance, that instance's current values are\n        # inserted as 'initial' data in each Field.\n        w = Writer.objects.get(name='Mike Royko')\n        f = RoykoForm(auto_id=False, instance=w)\n        self.assertHTMLEqual(six.text_type(f), '''<tr><th>Name:</th><td><input type=\"text\" name=\"name\" value=\"Mike Royko\" maxlength=\"50\" /><br /><span class=\"helptext\">Use both first and last names.</span></td></tr>''')\n\n        art = Article(\n                    headline='Test article',\n                    slug='test-article',\n                    pub_date=datetime.date(1988, 1, 4),\n                    writer=w,\n                    article='Hello.'\n                )\n        art.save()\n        art_id_1 = art.id\n        self.assertEqual(art_id_1 is not None, True)\n        f = TestArticleForm(auto_id=False, instance=art)\n        self.assertHTMLEqual(f.as_ul(), '''<li>Headline: <input type=\"text\" name=\"headline\" value=\"Test article\" maxlength=\"50\" /></li>\n<li>Slug: <input type=\"text\" name=\"slug\" value=\"test-article\" maxlength=\"50\" /></li>\n<li>Pub date: <input type=\"text\" name=\"pub_date\" value=\"1988-01-04\" /></li>\n<li>Writer: <select name=\"writer\">\n<option value=\"\">---------</option>\n<option value=\"%s\">Bob Woodward</option>\n<option value=\"%s\" selected=\"selected\">Mike Royko</option>\n</select></li>\n<li>Article: <textarea rows=\"10\" cols=\"40\" name=\"article\">Hello.</textarea></li>\n<li>Categories: <select multiple=\"multiple\" name=\"categories\">\n<option value=\"%s\">Entertainment</option>\n<option value=\"%s\">It&#39;s a test</option>\n<option value=\"%s\">Third test</option>\n</select> <span class=\"helptext\"> Hold down \"Control\", or \"Command\" on a Mac, to select more than one.</span></li>\n<li>Status: <select name=\"status\">\n<option value=\"\" selected=\"selected\">---------</option>\n<option value=\"1\">Draft</option>\n<option value=\"2\">Pending</option>\n<option value=\"3\">Live</option>\n</select></li>''' % (w_woodward.pk, w_royko.pk, c1.pk, c2.pk, c3.pk))\n        f = TestArticleForm({\n                'headline': 'Test headline',\n                'slug': 'test-headline',\n                'pub_date': '1984-02-06',\n                'writer': six.text_type(w_royko.pk),\n                'article': 'Hello.'\n            }, instance=art)\n        self.assertEqual(f.errors, {})\n        self.assertEqual(f.is_valid(), True)\n        test_art = f.save()\n        self.assertEqual(test_art.id == art_id_1, True)\n        test_art = Article.objects.get(id=art_id_1)\n        self.assertEqual(test_art.headline, 'Test headline')\n        # You can create a form over a subset of the available fields\n        # by specifying a 'fields' argument to form_for_instance.\n        f = PartialArticleFormWithSlug({\n                'headline': 'New headline',\n                'slug': 'new-headline',\n                'pub_date': '1988-01-04'\n            }, auto_id=False, instance=art)\n        self.assertHTMLEqual(f.as_ul(), '''<li>Headline: <input type=\"text\" name=\"headline\" value=\"New headline\" maxlength=\"50\" /></li>\n<li>Slug: <input type=\"text\" name=\"slug\" value=\"new-headline\" maxlength=\"50\" /></li>\n<li>Pub date: <input type=\"text\" name=\"pub_date\" value=\"1988-01-04\" /></li>''')\n        self.assertEqual(f.is_valid(), True)\n        new_art = f.save()\n        self.assertEqual(new_art.id == art_id_1, True)\n        new_art = Article.objects.get(id=art_id_1)\n        self.assertEqual(new_art.headline, 'New headline')\n\n        # Add some categories and test the many-to-many form output.\n        self.assertQuerysetEqual(new_art.categories.all(), [])\n        new_art.categories.add(Category.objects.get(name='Entertainment'))\n        self.assertQuerysetEqual(new_art.categories.all(), [\"Entertainment\"])\n        f = TestArticleForm(auto_id=False, instance=new_art)\n        self.assertHTMLEqual(f.as_ul(), '''<li>Headline: <input type=\"text\" name=\"headline\" value=\"New headline\" maxlength=\"50\" /></li>\n<li>Slug: <input type=\"text\" name=\"slug\" value=\"new-headline\" maxlength=\"50\" /></li>\n<li>Pub date: <input type=\"text\" name=\"pub_date\" value=\"1988-01-04\" /></li>\n<li>Writer: <select name=\"writer\">\n<option value=\"\">---------</option>\n<option value=\"%s\">Bob Woodward</option>\n<option value=\"%s\" selected=\"selected\">Mike Royko</option>\n</select></li>\n<li>Article: <textarea rows=\"10\" cols=\"40\" name=\"article\">Hello.</textarea></li>\n<li>Categories: <select multiple=\"multiple\" name=\"categories\">\n<option value=\"%s\" selected=\"selected\">Entertainment</option>\n<option value=\"%s\">It&#39;s a test</option>\n<option value=\"%s\">Third test</option>\n</select> <span class=\"helptext\"> Hold down \"Control\", or \"Command\" on a Mac, to select more than one.</span></li>\n<li>Status: <select name=\"status\">\n<option value=\"\" selected=\"selected\">---------</option>\n<option value=\"1\">Draft</option>\n<option value=\"2\">Pending</option>\n<option value=\"3\">Live</option>\n</select></li>''' % (w_woodward.pk, w_royko.pk, c1.pk, c2.pk, c3.pk))\n\n        # Initial values can be provided for model forms\n        f = TestArticleForm(\n                auto_id=False,\n                initial={\n                    'headline': 'Your headline here',\n                    'categories': [str(c1.id), str(c2.id)]\n                })\n        self.assertHTMLEqual(f.as_ul(), '''<li>Headline: <input type=\"text\" name=\"headline\" value=\"Your headline here\" maxlength=\"50\" /></li>\n<li>Slug: <input type=\"text\" name=\"slug\" maxlength=\"50\" /></li>\n<li>Pub date: <input type=\"text\" name=\"pub_date\" /></li>\n<li>Writer: <select name=\"writer\">\n<option value=\"\" selected=\"selected\">---------</option>\n<option value=\"%s\">Bob Woodward</option>\n<option value=\"%s\">Mike Royko</option>\n</select></li>\n<li>Article: <textarea rows=\"10\" cols=\"40\" name=\"article\"></textarea></li>\n<li>Categories: <select multiple=\"multiple\" name=\"categories\">\n<option value=\"%s\" selected=\"selected\">Entertainment</option>\n<option value=\"%s\" selected=\"selected\">It&#39;s a test</option>\n<option value=\"%s\">Third test</option>\n</select> <span class=\"helptext\"> Hold down \"Control\", or \"Command\" on a Mac, to select more than one.</span></li>\n<li>Status: <select name=\"status\">\n<option value=\"\" selected=\"selected\">---------</option>\n<option value=\"1\">Draft</option>\n<option value=\"2\">Pending</option>\n<option value=\"3\">Live</option>\n</select></li>''' % (w_woodward.pk, w_royko.pk, c1.pk, c2.pk, c3.pk))\n\n        f = TestArticleForm({\n                'headline': 'New headline',\n                'slug': 'new-headline',\n                'pub_date': '1988-01-04',\n                'writer': six.text_type(w_royko.pk),\n                'article': 'Hello.',\n                'categories': [six.text_type(c1.id), six.text_type(c2.id)]\n            }, instance=new_art)\n        new_art = f.save()\n        self.assertEqual(new_art.id == art_id_1, True)\n        new_art = Article.objects.get(id=art_id_1)\n        self.assertQuerysetEqual(new_art.categories.order_by('name'),\n                         [\"Entertainment\", \"It's a test\"])\n\n        # Now, submit form data with no categories. This deletes the existing categories.\n        f = TestArticleForm({'headline': 'New headline', 'slug': 'new-headline', 'pub_date': '1988-01-04',\n            'writer': six.text_type(w_royko.pk), 'article': 'Hello.'}, instance=new_art)\n        new_art = f.save()\n        self.assertEqual(new_art.id == art_id_1, True)\n        new_art = Article.objects.get(id=art_id_1)\n        self.assertQuerysetEqual(new_art.categories.all(), [])\n\n        # Create a new article, with categories, via the form.\n        f = ArticleForm({'headline': 'The walrus was Paul', 'slug': 'walrus-was-paul', 'pub_date': '1967-11-01',\n            'writer': six.text_type(w_royko.pk), 'article': 'Test.', 'categories': [six.text_type(c1.id), six.text_type(c2.id)]})\n        new_art = f.save()\n        art_id_2 = new_art.id\n        self.assertEqual(art_id_2 not in (None, art_id_1), True)\n        new_art = Article.objects.get(id=art_id_2)\n        self.assertQuerysetEqual(new_art.categories.order_by('name'), [\"Entertainment\", \"It's a test\"])\n\n        # Create a new article, with no categories, via the form.\n        f = ArticleForm({'headline': 'The walrus was Paul', 'slug': 'walrus-was-paul', 'pub_date': '1967-11-01',\n            'writer': six.text_type(w_royko.pk), 'article': 'Test.'})\n        new_art = f.save()\n        art_id_3 = new_art.id\n        self.assertEqual(art_id_3 not in (None, art_id_1, art_id_2), True)\n        new_art = Article.objects.get(id=art_id_3)\n        self.assertQuerysetEqual(new_art.categories.all(), [])\n\n        # Create a new article, with categories, via the form, but use commit=False.\n        # The m2m data won't be saved until save_m2m() is invoked on the form.\n        f = ArticleForm({'headline': 'The walrus was Paul', 'slug': 'walrus-was-paul', 'pub_date': '1967-11-01',\n            'writer': six.text_type(w_royko.pk), 'article': 'Test.', 'categories': [six.text_type(c1.id), six.text_type(c2.id)]})\n        new_art = f.save(commit=False)\n\n        # Manually save the instance\n        new_art.save()\n        art_id_4 = new_art.id\n        self.assertEqual(art_id_4 not in (None, art_id_1, art_id_2, art_id_3), True)\n\n        # The instance doesn't have m2m data yet\n        new_art = Article.objects.get(id=art_id_4)\n        self.assertQuerysetEqual(new_art.categories.all(), [])\n\n        # Save the m2m data on the form\n        f.save_m2m()\n        self.assertQuerysetEqual(new_art.categories.order_by('name'), [\"Entertainment\", \"It's a test\"])\n\n        # Here, we define a custom ModelForm. Because it happens to have the same fields as\n        # the Category model, we can just call the form's save() to apply its changes to an\n        # existing Category instance.\n        cat = Category.objects.get(name='Third test')\n        self.assertEqual(cat.name, \"Third test\")\n        self.assertEqual(cat.id == c3.id, True)\n        form = ShortCategory({'name': 'Third', 'slug': 'third', 'url': '3rd'}, instance=cat)\n        self.assertEqual(form.save().name, 'Third')\n        self.assertEqual(Category.objects.get(id=c3.id).name, 'Third')\n\n        # Here, we demonstrate that choices for a ForeignKey ChoiceField are determined\n        # at runtime, based on the data in the database when the form is displayed, not\n        # the data in the database when the form is instantiated.\n        f = ArticleForm(auto_id=False)\n        self.assertHTMLEqual(f.as_ul(), '''<li>Headline: <input type=\"text\" name=\"headline\" maxlength=\"50\" /></li>\n<li>Slug: <input type=\"text\" name=\"slug\" maxlength=\"50\" /></li>\n<li>Pub date: <input type=\"text\" name=\"pub_date\" /></li>\n<li>Writer: <select name=\"writer\">\n<option value=\"\" selected=\"selected\">---------</option>\n<option value=\"%s\">Bob Woodward</option>\n<option value=\"%s\">Mike Royko</option>\n</select></li>\n<li>Article: <textarea rows=\"10\" cols=\"40\" name=\"article\"></textarea></li>\n<li>Categories: <select multiple=\"multiple\" name=\"categories\">\n<option value=\"%s\">Entertainment</option>\n<option value=\"%s\">It&#39;s a test</option>\n<option value=\"%s\">Third</option>\n</select> <span class=\"helptext\"> Hold down \"Control\", or \"Command\" on a Mac, to select more than one.</span></li>\n<li>Status: <select name=\"status\">\n<option value=\"\" selected=\"selected\">---------</option>\n<option value=\"1\">Draft</option>\n<option value=\"2\">Pending</option>\n<option value=\"3\">Live</option>\n</select></li>''' % (w_woodward.pk, w_royko.pk, c1.pk, c2.pk, c3.pk))\n\n        c4 = Category.objects.create(name='Fourth', url='4th')\n        self.assertEqual(c4.name, 'Fourth')\n        w_bernstein = Writer.objects.create(name='Carl Bernstein')\n        self.assertEqual(w_bernstein.name, 'Carl Bernstein')\n        self.assertHTMLEqual(f.as_ul(), '''<li>Headline: <input type=\"text\" name=\"headline\" maxlength=\"50\" /></li>\n<li>Slug: <input type=\"text\" name=\"slug\" maxlength=\"50\" /></li>\n<li>Pub date: <input type=\"text\" name=\"pub_date\" /></li>\n<li>Writer: <select name=\"writer\">\n<option value=\"\" selected=\"selected\">---------</option>\n<option value=\"%s\">Bob Woodward</option>\n<option value=\"%s\">Carl Bernstein</option>\n<option value=\"%s\">Mike Royko</option>\n</select></li>\n<li>Article: <textarea rows=\"10\" cols=\"40\" name=\"article\"></textarea></li>\n<li>Categories: <select multiple=\"multiple\" name=\"categories\">\n<option value=\"%s\">Entertainment</option>\n<option value=\"%s\">It&#39;s a test</option>\n<option value=\"%s\">Third</option>\n<option value=\"%s\">Fourth</option>\n</select> <span class=\"helptext\"> Hold down \"Control\", or \"Command\" on a Mac, to select more than one.</span></li>\n<li>Status: <select name=\"status\">\n<option value=\"\" selected=\"selected\">---------</option>\n<option value=\"1\">Draft</option>\n<option value=\"2\">Pending</option>\n<option value=\"3\">Live</option>\n</select></li>''' % (w_woodward.pk, w_bernstein.pk, w_royko.pk, c1.pk, c2.pk, c3.pk, c4.pk))\n\n        # ModelChoiceField ############################################################\n\n        f = forms.ModelChoiceField(Category.objects.all())\n        self.assertEqual(list(f.choices), [\n            ('', '---------'),\n            (c1.pk, 'Entertainment'),\n            (c2.pk, \"It's a test\"),\n            (c3.pk, 'Third'),\n            (c4.pk, 'Fourth')])\n        with self.assertRaises(ValidationError):\n            f.clean('')\n        with self.assertRaises(ValidationError):\n            f.clean(None)\n        with self.assertRaises(ValidationError):\n            f.clean(0)\n        self.assertEqual(f.clean(c3.id).name, 'Third')\n        self.assertEqual(f.clean(c2.id).name, \"It's a test\")\n\n        # Add a Category object *after* the ModelChoiceField has already been\n        # instantiated. This proves clean() checks the database during clean() rather\n        # than caching it at time of instantiation.\n        c5 = Category.objects.create(name='Fifth', url='5th')\n        self.assertEqual(c5.name, 'Fifth')\n        self.assertEqual(f.clean(c5.id).name, 'Fifth')\n\n        # Delete a Category object *after* the ModelChoiceField has already been\n        # instantiated. This proves clean() checks the database during clean() rather\n        # than caching it at time of instantiation.\n        Category.objects.get(url='5th').delete()\n        with self.assertRaises(ValidationError):\n            f.clean(c5.id)\n\n        f = forms.ModelChoiceField(Category.objects.filter(pk=c1.id), required=False)\n        self.assertEqual(f.clean(''), None)\n        f.clean('')\n        self.assertEqual(f.clean(str(c1.id)).name, \"Entertainment\")\n        with self.assertRaises(ValidationError):\n            f.clean('100')\n\n        # queryset can be changed after the field is created.\n        f.queryset = Category.objects.exclude(name='Fourth')\n        self.assertEqual(list(f.choices), [\n            ('', '---------'),\n            (c1.pk, 'Entertainment'),\n            (c2.pk, \"It's a test\"),\n            (c3.pk, 'Third')])\n        self.assertEqual(f.clean(c3.id).name, 'Third')\n        with self.assertRaises(ValidationError):\n            f.clean(c4.id)\n\n        # check that we can safely iterate choices repeatedly\n        gen_one = list(f.choices)\n        gen_two = f.choices\n        self.assertEqual(gen_one[2], (c2.pk, \"It's a test\"))\n        self.assertEqual(list(gen_two), [\n            ('', '---------'),\n            (c1.pk, 'Entertainment'),\n            (c2.pk, \"It's a test\"),\n            (c3.pk, 'Third')])\n\n        # check that we can override the label_from_instance method to print custom labels (#4620)\n        f.queryset = Category.objects.all()\n        f.label_from_instance = lambda obj: \"category \" + str(obj)\n        self.assertEqual(list(f.choices), [\n            ('', '---------'),\n            (c1.pk, 'category Entertainment'),\n            (c2.pk, \"category It's a test\"),\n            (c3.pk, 'category Third'),\n            (c4.pk, 'category Fourth')])\n\n        # ModelMultipleChoiceField ####################################################\n\n        f = forms.ModelMultipleChoiceField(Category.objects.all())\n        self.assertEqual(list(f.choices), [\n            (c1.pk, 'Entertainment'),\n            (c2.pk, \"It's a test\"),\n            (c3.pk, 'Third'),\n            (c4.pk, 'Fourth')])\n        with self.assertRaises(ValidationError):\n            f.clean(None)\n        with self.assertRaises(ValidationError):\n            f.clean([])\n        self.assertQuerysetEqual(f.clean([c1.id]), [\"Entertainment\"])\n        self.assertQuerysetEqual(f.clean([c2.id]), [\"It's a test\"])\n        self.assertQuerysetEqual(f.clean([str(c1.id)]), [\"Entertainment\"])\n        self.assertQuerysetEqual(f.clean([str(c1.id), str(c2.id)]), [\"Entertainment\", \"It's a test\"])\n        self.assertQuerysetEqual(f.clean([c1.id, str(c2.id)]), [\"Entertainment\", \"It's a test\"])\n        self.assertQuerysetEqual(f.clean((c1.id, str(c2.id))), [\"Entertainment\", \"It's a test\"])\n        with self.assertRaises(ValidationError):\n            f.clean(['100'])\n        with self.assertRaises(ValidationError):\n            f.clean('hello')\n        with self.assertRaises(ValidationError):\n            f.clean(['fail'])\n\n        # Add a Category object *after* the ModelMultipleChoiceField has already been\n        # instantiated. This proves clean() checks the database during clean() rather\n        # than caching it at time of instantiation.\n        # Note, we are using an id of 1006 here since tests that run before\n        # this may create categories with primary keys up to 6. Use\n        # a number that is will not conflict.\n        c6 = Category.objects.create(id=1006, name='Sixth', url='6th')\n        self.assertEqual(c6.name, 'Sixth')\n        self.assertQuerysetEqual(f.clean([c6.id]), [\"Sixth\"])\n\n        # Delete a Category object *after* the ModelMultipleChoiceField has already been\n        # instantiated. This proves clean() checks the database during clean() rather\n        # than caching it at time of instantiation.\n        Category.objects.get(url='6th').delete()\n        with self.assertRaises(ValidationError):\n            f.clean([c6.id])\n\n        f = forms.ModelMultipleChoiceField(Category.objects.all(), required=False)\n        self.assertIsInstance(f.clean([]), EmptyQuerySet)\n        self.assertIsInstance(f.clean(()), EmptyQuerySet)\n        with self.assertRaises(ValidationError):\n            f.clean(['10'])\n        with self.assertRaises(ValidationError):\n            f.clean([str(c3.id), '10'])\n        with self.assertRaises(ValidationError):\n            f.clean([str(c1.id), '10'])\n\n        # queryset can be changed after the field is created.\n        f.queryset = Category.objects.exclude(name='Fourth')\n        self.assertEqual(list(f.choices), [\n            (c1.pk, 'Entertainment'),\n            (c2.pk, \"It's a test\"),\n            (c3.pk, 'Third')])\n        self.assertQuerysetEqual(f.clean([c3.id]), [\"Third\"])\n        with self.assertRaises(ValidationError):\n            f.clean([c4.id])\n        with self.assertRaises(ValidationError):\n            f.clean([str(c3.id), str(c4.id)])\n\n        f.queryset = Category.objects.all()\n        f.label_from_instance = lambda obj: \"multicategory \" + str(obj)\n        self.assertEqual(list(f.choices), [\n            (c1.pk, 'multicategory Entertainment'),\n            (c2.pk, \"multicategory It's a test\"),\n            (c3.pk, 'multicategory Third'),\n            (c4.pk, 'multicategory Fourth')])\n\n        # OneToOneField ###############################################################\n\n        self.assertEqual(list(ImprovedArticleForm.base_fields), ['article'])\n\n        self.assertEqual(list(ImprovedArticleWithParentLinkForm.base_fields), [])\n\n        bw = BetterWriter(name='Joe Better', score=10)\n        bw.save()\n        self.assertEqual(sorted(model_to_dict(bw)),\n                         ['id', 'name', 'score', 'writer_ptr'])\n\n        form = BetterWriterForm({'name': 'Some Name', 'score': 12})\n        self.assertEqual(form.is_valid(), True)\n        bw2 = form.save()\n        bw2.delete()\n\n        form = WriterProfileForm()\n        self.assertHTMLEqual(form.as_p(), '''<p><label for=\"id_writer\">Writer:</label> <select name=\"writer\" id=\"id_writer\">\n<option value=\"\" selected=\"selected\">---------</option>\n<option value=\"%s\">Bob Woodward</option>\n<option value=\"%s\">Carl Bernstein</option>\n<option value=\"%s\">Joe Better</option>\n<option value=\"%s\">Mike Royko</option>\n</select></p>\n<p><label for=\"id_age\">Age:</label> <input type=\"text\" name=\"age\" id=\"id_age\" /></p>''' % (w_woodward.pk, w_bernstein.pk, bw.pk, w_royko.pk))\n\n        data = {\n            'writer': six.text_type(w_woodward.pk),\n            'age': '65',\n        }\n        form = WriterProfileForm(data)\n        instance = form.save()\n        self.assertEqual(six.text_type(instance), 'Bob Woodward is 65')\n\n        form = WriterProfileForm(instance=instance)\n        self.assertHTMLEqual(form.as_p(), '''<p><label for=\"id_writer\">Writer:</label> <select name=\"writer\" id=\"id_writer\">\n<option value=\"\">---------</option>\n<option value=\"%s\" selected=\"selected\">Bob Woodward</option>\n<option value=\"%s\">Carl Bernstein</option>\n<option value=\"%s\">Joe Better</option>\n<option value=\"%s\">Mike Royko</option>\n</select></p>\n<p><label for=\"id_age\">Age:</label> <input type=\"text\" name=\"age\" value=\"65\" id=\"id_age\" /></p>''' % (w_woodward.pk, w_bernstein.pk, bw.pk, w_royko.pk))\n\n    def test_file_field(self):\n        # Test conditions when files is either not given or empty.\n\n        f = TextFileForm(data={'description': 'Assistance'})\n        self.assertEqual(f.is_valid(), False)\n        f = TextFileForm(data={'description': 'Assistance'}, files={})\n        self.assertEqual(f.is_valid(), False)\n\n        # Upload a file and ensure it all works as expected.\n\n        f = TextFileForm(\n                data={'description': 'Assistance'},\n                files={'file': SimpleUploadedFile('test1.txt', b'hello world')})\n        self.assertEqual(f.is_valid(), True)\n        self.assertEqual(type(f.cleaned_data['file']), SimpleUploadedFile)\n        instance = f.save()\n        self.assertEqual(instance.file.name, 'tests/test1.txt')\n\n        instance.file.delete()\n        f = TextFileForm(\n                data={'description': 'Assistance'},\n                files={'file': SimpleUploadedFile('test1.txt', b'hello world')})\n        self.assertEqual(f.is_valid(), True)\n        self.assertEqual(type(f.cleaned_data['file']), SimpleUploadedFile)\n        instance = f.save()\n        self.assertEqual(instance.file.name, 'tests/test1.txt')\n\n        # Check if the max_length attribute has been inherited from the model.\n        f = TextFileForm(\n                data={'description': 'Assistance'},\n                files={'file': SimpleUploadedFile('test-maxlength.txt', b'hello world')})\n        self.assertEqual(f.is_valid(), False)\n\n        # Edit an instance that already has the file defined in the model. This will not\n        # save the file again, but leave it exactly as it is.\n\n        f = TextFileForm(\n                data={'description': 'Assistance'},\n                instance=instance)\n        self.assertEqual(f.is_valid(), True)\n        self.assertEqual(f.cleaned_data['file'].name, 'tests/test1.txt')\n        instance = f.save()\n        self.assertEqual(instance.file.name, 'tests/test1.txt')\n\n        # Delete the current file since this is not done by Django.\n        instance.file.delete()\n\n        # Override the file by uploading a new one.\n\n        f = TextFileForm(\n                data={'description': 'Assistance'},\n                files={'file': SimpleUploadedFile('test2.txt', b'hello world')}, instance=instance)\n        self.assertEqual(f.is_valid(), True)\n        instance = f.save()\n        self.assertEqual(instance.file.name, 'tests/test2.txt')\n\n        # Delete the current file since this is not done by Django.\n        instance.file.delete()\n        f = TextFileForm(\n                data={'description': 'Assistance'},\n                files={'file': SimpleUploadedFile('test2.txt', b'hello world')})\n        self.assertEqual(f.is_valid(), True)\n        instance = f.save()\n        self.assertEqual(instance.file.name, 'tests/test2.txt')\n\n        # Delete the current file since this is not done by Django.\n        instance.file.delete()\n\n        instance.delete()\n\n        # Test the non-required FileField\n        f = TextFileForm(data={'description': 'Assistance'})\n        f.fields['file'].required = False\n        self.assertEqual(f.is_valid(), True)\n        instance = f.save()\n        self.assertEqual(instance.file.name, '')\n\n        f = TextFileForm(\n                data={'description': 'Assistance'},\n                files={'file': SimpleUploadedFile('test3.txt', b'hello world')}, instance=instance)\n        self.assertEqual(f.is_valid(), True)\n        instance = f.save()\n        self.assertEqual(instance.file.name, 'tests/test3.txt')\n\n        # Instance can be edited w/out re-uploading the file and existing file should be preserved.\n\n        f = TextFileForm(\n                data={'description': 'New Description'},\n                instance=instance)\n        f.fields['file'].required = False\n        self.assertEqual(f.is_valid(), True)\n        instance = f.save()\n        self.assertEqual(instance.description, 'New Description')\n        self.assertEqual(instance.file.name, 'tests/test3.txt')\n\n        # Delete the current file since this is not done by Django.\n        instance.file.delete()\n        instance.delete()\n\n        f = TextFileForm(\n                data={'description': 'Assistance'},\n                files={'file': SimpleUploadedFile('test3.txt', b'hello world')})\n        self.assertEqual(f.is_valid(), True)\n        instance = f.save()\n        self.assertEqual(instance.file.name, 'tests/test3.txt')\n\n        # Delete the current file since this is not done by Django.\n        instance.file.delete()\n        instance.delete()\n\n    def test_big_integer_field(self):\n        bif = BigIntForm({'biggie': '-9223372036854775808'})\n        self.assertEqual(bif.is_valid(), True)\n        bif = BigIntForm({'biggie': '-9223372036854775809'})\n        self.assertEqual(bif.is_valid(), False)\n        self.assertEqual(bif.errors, {'biggie': ['Ensure this value is greater than or equal to -9223372036854775808.']})\n        bif = BigIntForm({'biggie': '9223372036854775807'})\n        self.assertEqual(bif.is_valid(), True)\n        bif = BigIntForm({'biggie': '9223372036854775808'})\n        self.assertEqual(bif.is_valid(), False)\n        self.assertEqual(bif.errors, {'biggie': ['Ensure this value is less than or equal to 9223372036854775807.']})\n\n    @skipUnless(test_images, \"PIL not installed\")\n    def test_image_field(self):\n        # ImageField and FileField are nearly identical, but they differ slighty when\n        # it comes to validation. This specifically tests that #6302 is fixed for\n        # both file fields and image fields.\n\n        with open(os.path.join(os.path.dirname(upath(__file__)), \"test.png\"), 'rb') as fp:\n            image_data = fp.read()\n        with open(os.path.join(os.path.dirname(upath(__file__)), \"test2.png\"), 'rb') as fp:\n            image_data2 = fp.read()\n\n        f = ImageFileForm(\n                data={'description': 'An image'},\n                files={'image': SimpleUploadedFile('test.png', image_data)})\n        self.assertEqual(f.is_valid(), True)\n        self.assertEqual(type(f.cleaned_data['image']), SimpleUploadedFile)\n        instance = f.save()\n        self.assertEqual(instance.image.name, 'tests/test.png')\n        self.assertEqual(instance.width, 16)\n        self.assertEqual(instance.height, 16)\n\n        # Delete the current file since this is not done by Django, but don't save\n        # because the dimension fields are not null=True.\n        instance.image.delete(save=False)\n        f = ImageFileForm(\n                data={'description': 'An image'},\n                files={'image': SimpleUploadedFile('test.png', image_data)})\n        self.assertEqual(f.is_valid(), True)\n        self.assertEqual(type(f.cleaned_data['image']), SimpleUploadedFile)\n        instance = f.save()\n        self.assertEqual(instance.image.name, 'tests/test.png')\n        self.assertEqual(instance.width, 16)\n        self.assertEqual(instance.height, 16)\n\n        # Edit an instance that already has the (required) image defined in the model. This will not\n        # save the image again, but leave it exactly as it is.\n\n        f = ImageFileForm(data={'description': 'Look, it changed'}, instance=instance)\n        self.assertEqual(f.is_valid(), True)\n        self.assertEqual(f.cleaned_data['image'].name, 'tests/test.png')\n        instance = f.save()\n        self.assertEqual(instance.image.name, 'tests/test.png')\n        self.assertEqual(instance.height, 16)\n        self.assertEqual(instance.width, 16)\n\n        # Delete the current file since this is not done by Django, but don't save\n        # because the dimension fields are not null=True.\n        instance.image.delete(save=False)\n        # Override the file by uploading a new one.\n\n        f = ImageFileForm(\n                data={'description': 'Changed it'},\n                files={'image': SimpleUploadedFile('test2.png', image_data2)}, instance=instance)\n        self.assertEqual(f.is_valid(), True)\n        instance = f.save()\n        self.assertEqual(instance.image.name, 'tests/test2.png')\n        self.assertEqual(instance.height, 32)\n        self.assertEqual(instance.width, 48)\n\n        # Delete the current file since this is not done by Django, but don't save\n        # because the dimension fields are not null=True.\n        instance.image.delete(save=False)\n        instance.delete()\n\n        f = ImageFileForm(\n                data={'description': 'Changed it'},\n                files={'image': SimpleUploadedFile('test2.png', image_data2)})\n        self.assertEqual(f.is_valid(), True)\n        instance = f.save()\n        self.assertEqual(instance.image.name, 'tests/test2.png')\n        self.assertEqual(instance.height, 32)\n        self.assertEqual(instance.width, 48)\n\n        # Delete the current file since this is not done by Django, but don't save\n        # because the dimension fields are not null=True.\n        instance.image.delete(save=False)\n        instance.delete()\n\n        # Test the non-required ImageField\n        # Note: In Oracle, we expect a null ImageField to return '' instead of\n        # None.\n        if connection.features.interprets_empty_strings_as_nulls:\n            expected_null_imagefield_repr = ''\n        else:\n            expected_null_imagefield_repr = None\n\n        f = OptionalImageFileForm(data={'description': 'Test'})\n        self.assertEqual(f.is_valid(), True)\n        instance = f.save()\n        self.assertEqual(instance.image.name, expected_null_imagefield_repr)\n        self.assertEqual(instance.width, None)\n        self.assertEqual(instance.height, None)\n\n        f = OptionalImageFileForm(\n                data={'description': 'And a final one'},\n                files={'image': SimpleUploadedFile('test3.png', image_data)}, instance=instance)\n        self.assertEqual(f.is_valid(), True)\n        instance = f.save()\n        self.assertEqual(instance.image.name, 'tests/test3.png')\n        self.assertEqual(instance.width, 16)\n        self.assertEqual(instance.height, 16)\n\n        # Editing the instance without re-uploading the image should not affect the image or its width/height properties\n        f = OptionalImageFileForm(\n                data={'description': 'New Description'},\n                instance=instance)\n        self.assertEqual(f.is_valid(), True)\n        instance = f.save()\n        self.assertEqual(instance.description, 'New Description')\n        self.assertEqual(instance.image.name, 'tests/test3.png')\n        self.assertEqual(instance.width, 16)\n        self.assertEqual(instance.height, 16)\n\n        # Delete the current file since this is not done by Django.\n        instance.image.delete()\n        instance.delete()\n\n        f = OptionalImageFileForm(\n                data={'description': 'And a final one'},\n                files={'image': SimpleUploadedFile('test4.png', image_data2)}\n            )\n        self.assertEqual(f.is_valid(), True)\n        instance = f.save()\n        self.assertEqual(instance.image.name, 'tests/test4.png')\n        self.assertEqual(instance.width, 48)\n        self.assertEqual(instance.height, 32)\n        instance.delete()\n        # Test callable upload_to behavior that's dependent on the value of another field in the model\n        f = ImageFileForm(\n                data={'description': 'And a final one', 'path': 'foo'},\n                files={'image': SimpleUploadedFile('test4.png', image_data)})\n        self.assertEqual(f.is_valid(), True)\n        instance = f.save()\n        self.assertEqual(instance.image.name, 'foo/test4.png')\n        instance.delete()\n\n    def test_media_on_modelform(self):\n        # Similar to a regular Form class you can define custom media to be used on\n        # the ModelForm.\n        f = ModelFormWithMedia()\n        self.assertHTMLEqual(six.text_type(f.media), '''<link href=\"/some/form/css\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"/some/form/javascript\"></script>''')\n\n        f = CommaSeparatedIntegerForm({'field': '1,2,3'})\n        self.assertEqual(f.is_valid(), True)\n        self.assertEqual(f.cleaned_data, {'field': '1,2,3'})\n        f = CommaSeparatedIntegerForm({'field': '1a,2'})\n        self.assertEqual(f.errors, {'field': ['Enter only digits separated by commas.']})\n        f = CommaSeparatedIntegerForm({'field': ',,,,'})\n        self.assertEqual(f.is_valid(), True)\n        self.assertEqual(f.cleaned_data, {'field': ',,,,'})\n        f = CommaSeparatedIntegerForm({'field': '1.2'})\n        self.assertEqual(f.errors, {'field': ['Enter only digits separated by commas.']})\n        f = CommaSeparatedIntegerForm({'field': '1,a,2'})\n        self.assertEqual(f.errors, {'field': ['Enter only digits separated by commas.']})\n        f = CommaSeparatedIntegerForm({'field': '1,,2'})\n        self.assertEqual(f.is_valid(), True)\n        self.assertEqual(f.cleaned_data, {'field': '1,,2'})\n        f = CommaSeparatedIntegerForm({'field': '1'})\n        self.assertEqual(f.is_valid(), True)\n        self.assertEqual(f.cleaned_data, {'field': '1'})\n\n        # This Price instance generated by this form is not valid because the quantity\n        # field is required, but the form is valid because the field is excluded from\n        # the form. This is for backwards compatibility.\n\n        form = PriceFormWithoutQuantity({'price': '6.00'})\n        self.assertEqual(form.is_valid(), True)\n        price = form.save(commit=False)\n        with self.assertRaises(ValidationError):\n            price.full_clean()\n\n        # The form should not validate fields that it doesn't contain even if they are\n        # specified using 'fields', not 'exclude'.\n            class Meta:\n                model = Price\n                fields = ('price',)\n        form = PriceFormWithoutQuantity({'price': '6.00'})\n        self.assertEqual(form.is_valid(), True)\n\n        # The form should still have an instance of a model that is not complete and\n        # not saved into a DB yet.\n\n        self.assertEqual(form.instance.price, Decimal('6.00'))\n        self.assertEqual(form.instance.quantity is None, True)\n        self.assertEqual(form.instance.pk is None, True)\n\n        # Choices on CharField and IntegerField\n        f = ArticleForm()\n        with self.assertRaises(ValidationError):\n            f.fields['status'].clean('42')\n\n        f = ArticleStatusForm()\n        with self.assertRaises(ValidationError):\n            f.fields['status'].clean('z')\n\n    def test_foreignkeys_which_use_to_field(self):\n        apple = Inventory.objects.create(barcode=86, name='Apple')\n        pear = Inventory.objects.create(barcode=22, name='Pear')\n        core = Inventory.objects.create(barcode=87, name='Core', parent=apple)\n\n        field = forms.ModelChoiceField(Inventory.objects.all(), to_field_name='barcode')\n        self.assertEqual(tuple(field.choices), (\n            ('', '---------'),\n            (86, 'Apple'),\n            (87, 'Core'),\n            (22, 'Pear')))\n\n        form = InventoryForm(instance=core)\n        self.assertHTMLEqual(six.text_type(form['parent']), '''<select name=\"parent\" id=\"id_parent\">\n<option value=\"\">---------</option>\n<option value=\"86\" selected=\"selected\">Apple</option>\n<option value=\"87\">Core</option>\n<option value=\"22\">Pear</option>\n</select>''')\n        data = model_to_dict(core)\n        data['parent'] = '22'\n        form = InventoryForm(data=data, instance=core)\n        core = form.save()\n        self.assertEqual(core.parent.name, 'Pear')\n\n        class CategoryForm(forms.ModelForm):\n            description = forms.CharField()\n            class Meta:\n                model = Category\n                fields = ['description', 'url']\n\n        self.assertEqual(list(CategoryForm.base_fields),\n                         ['description', 'url'])\n\n        self.assertHTMLEqual(six.text_type(CategoryForm()), '''<tr><th><label for=\"id_description\">Description:</label></th><td><input type=\"text\" name=\"description\" id=\"id_description\" /></td></tr>\n<tr><th><label for=\"id_url\">The URL:</label></th><td><input id=\"id_url\" type=\"text\" name=\"url\" maxlength=\"40\" /></td></tr>''')\n        # to_field_name should also work on ModelMultipleChoiceField ##################\n\n        field = forms.ModelMultipleChoiceField(Inventory.objects.all(), to_field_name='barcode')\n        self.assertEqual(tuple(field.choices), ((86, 'Apple'), (87, 'Core'), (22, 'Pear')))\n        self.assertQuerysetEqual(field.clean([86]), ['Apple'])\n\n        form = SelectInventoryForm({'items': [87, 22]})\n        self.assertEqual(form.is_valid(), True)\n        self.assertEqual(len(form.cleaned_data), 1)\n        self.assertQuerysetEqual(form.cleaned_data['items'], ['Core', 'Pear'])\n\n    def test_model_field_that_returns_none_to_exclude_itself_with_explicit_fields(self):\n        self.assertEqual(list(CustomFieldForExclusionForm.base_fields),\n                         ['name'])\n        self.assertHTMLEqual(six.text_type(CustomFieldForExclusionForm()),\n                         '''<tr><th><label for=\"id_name\">Name:</label></th><td><input id=\"id_name\" type=\"text\" name=\"name\" maxlength=\"10\" /></td></tr>''')\n\n    def test_iterable_model_m2m(self) :\n        colour = Colour.objects.create(name='Blue')\n        form = ColourfulItemForm()\n        self.maxDiff = 1024\n        self.assertHTMLEqual(\n            form.as_p(),\n            \"\"\"<p><label for=\"id_name\">Name:</label> <input id=\"id_name\" type=\"text\" name=\"name\" maxlength=\"50\" /></p>\n        <p><label for=\"id_colours\">Colours:</label> <select multiple=\"multiple\" name=\"colours\" id=\"id_colours\">\n        <option value=\"%(blue_pk)s\">Blue</option>\n        </select> <span class=\"helptext\"> Hold down \"Control\", or \"Command\" on a Mac, to select more than one.</span></p>\"\"\"\n            % {'blue_pk': colour.pk})\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/model_formsets/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/model_formsets/models.py",
    "content": "from __future__ import unicode_literals\n\nimport datetime\n\nfrom django.db import models\nfrom django.utils import six\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n@python_2_unicode_compatible\nclass Author(models.Model):\n    name = models.CharField(max_length=100)\n\n    class Meta:\n        ordering = ('name',)\n\n    def __str__(self):\n        return self.name\n\nclass BetterAuthor(Author):\n    write_speed = models.IntegerField()\n\n@python_2_unicode_compatible\nclass Book(models.Model):\n    author = models.ForeignKey(Author)\n    title = models.CharField(max_length=100)\n\n    class Meta:\n        unique_together = (\n            ('author', 'title'),\n        )\n        ordering = ['id']\n\n    def __str__(self):\n        return self.title\n\n@python_2_unicode_compatible\nclass BookWithCustomPK(models.Model):\n    my_pk = models.DecimalField(max_digits=5, decimal_places=0, primary_key=True)\n    author = models.ForeignKey(Author)\n    title = models.CharField(max_length=100)\n\n    def __str__(self):\n        return '%s: %s' % (self.my_pk, self.title)\n\nclass Editor(models.Model):\n    name = models.CharField(max_length=100)\n\n@python_2_unicode_compatible\nclass BookWithOptionalAltEditor(models.Model):\n    author = models.ForeignKey(Author)\n    # Optional secondary author\n    alt_editor = models.ForeignKey(Editor, blank=True, null=True)\n    title = models.CharField(max_length=100)\n\n    class Meta:\n        unique_together = (\n            ('author', 'title', 'alt_editor'),\n        )\n\n    def __str__(self):\n        return self.title\n\n@python_2_unicode_compatible\nclass AlternateBook(Book):\n    notes = models.CharField(max_length=100)\n\n    def __str__(self):\n        return '%s - %s' % (self.title, self.notes)\n\n@python_2_unicode_compatible\nclass AuthorMeeting(models.Model):\n    name = models.CharField(max_length=100)\n    authors = models.ManyToManyField(Author)\n    created = models.DateField(editable=False)\n\n    def __str__(self):\n        return self.name\n\nclass CustomPrimaryKey(models.Model):\n    my_pk = models.CharField(max_length=10, primary_key=True)\n    some_field = models.CharField(max_length=100)\n\n\n# models for inheritance tests.\n\n@python_2_unicode_compatible\nclass Place(models.Model):\n    name = models.CharField(max_length=50)\n    city = models.CharField(max_length=50)\n\n    def __str__(self):\n        return self.name\n\n@python_2_unicode_compatible\nclass Owner(models.Model):\n    auto_id = models.AutoField(primary_key=True)\n    name = models.CharField(max_length=100)\n    place = models.ForeignKey(Place)\n\n    def __str__(self):\n        return \"%s at %s\" % (self.name, self.place)\n\nclass Location(models.Model):\n    place = models.ForeignKey(Place, unique=True)\n    # this is purely for testing the data doesn't matter here :)\n    lat = models.CharField(max_length=100)\n    lon = models.CharField(max_length=100)\n\n@python_2_unicode_compatible\nclass OwnerProfile(models.Model):\n    owner = models.OneToOneField(Owner, primary_key=True)\n    age = models.PositiveIntegerField()\n\n    def __str__(self):\n        return \"%s is %d\" % (self.owner.name, self.age)\n\n@python_2_unicode_compatible\nclass Restaurant(Place):\n    serves_pizza = models.BooleanField()\n\n    def __str__(self):\n        return self.name\n\n@python_2_unicode_compatible\nclass Product(models.Model):\n    slug = models.SlugField(unique=True)\n\n    def __str__(self):\n        return self.slug\n\n@python_2_unicode_compatible\nclass Price(models.Model):\n    price = models.DecimalField(max_digits=10, decimal_places=2)\n    quantity = models.PositiveIntegerField()\n\n    def __str__(self):\n        return \"%s for %s\" % (self.quantity, self.price)\n\n    class Meta:\n        unique_together = (('price', 'quantity'),)\n\nclass MexicanRestaurant(Restaurant):\n    serves_tacos = models.BooleanField()\n\nclass ClassyMexicanRestaurant(MexicanRestaurant):\n    restaurant = models.OneToOneField(MexicanRestaurant, parent_link=True, primary_key=True)\n    tacos_are_yummy = models.BooleanField()\n\n# models for testing unique_together validation when a fk is involved and\n# using inlineformset_factory.\n@python_2_unicode_compatible\nclass Repository(models.Model):\n    name = models.CharField(max_length=25)\n\n    def __str__(self):\n        return self.name\n\n@python_2_unicode_compatible\nclass Revision(models.Model):\n    repository = models.ForeignKey(Repository)\n    revision = models.CharField(max_length=40)\n\n    class Meta:\n        unique_together = ((\"repository\", \"revision\"),)\n\n    def __str__(self):\n        return \"%s (%s)\" % (self.revision, six.text_type(self.repository))\n\n# models for testing callable defaults (see bug #7975). If you define a model\n# with a callable default value, you cannot rely on the initial value in a\n# form.\nclass Person(models.Model):\n    name = models.CharField(max_length=128)\n\nclass Membership(models.Model):\n    person = models.ForeignKey(Person)\n    date_joined = models.DateTimeField(default=datetime.datetime.now)\n    karma = models.IntegerField()\n\n# models for testing a null=True fk to a parent\nclass Team(models.Model):\n    name = models.CharField(max_length=100)\n\n@python_2_unicode_compatible\nclass Player(models.Model):\n    team = models.ForeignKey(Team, null=True)\n    name = models.CharField(max_length=100)\n\n    def __str__(self):\n        return self.name\n\n# Models for testing custom ModelForm save methods in formsets and inline formsets\n@python_2_unicode_compatible\nclass Poet(models.Model):\n    name = models.CharField(max_length=100)\n\n    def __str__(self):\n        return self.name\n\n@python_2_unicode_compatible\nclass Poem(models.Model):\n    poet = models.ForeignKey(Poet)\n    name = models.CharField(max_length=100)\n\n    def __str__(self):\n        return self.name\n\n@python_2_unicode_compatible\nclass Post(models.Model):\n    title = models.CharField(max_length=50, unique_for_date='posted', blank=True)\n    slug = models.CharField(max_length=50, unique_for_year='posted', blank=True)\n    subtitle = models.CharField(max_length=50, unique_for_month='posted', blank=True)\n    posted = models.DateField()\n\n    def __str__(self):\n        return self.name\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/model_formsets/tests.py",
    "content": "from __future__ import absolute_import, unicode_literals\n\nimport datetime\nimport re\nfrom datetime import date\nfrom decimal import Decimal\n\nfrom django import forms\nfrom django.db import models\nfrom django.forms.models import (_get_foreign_key, inlineformset_factory,\n    modelformset_factory)\nfrom django.test import TestCase, skipUnlessDBFeature\nfrom django.utils import six\n\nfrom .models import (Author, BetterAuthor, Book, BookWithCustomPK,\n    BookWithOptionalAltEditor, AlternateBook, AuthorMeeting, CustomPrimaryKey,\n    Place, Owner, Location, OwnerProfile, Restaurant, Product, Price,\n    MexicanRestaurant, ClassyMexicanRestaurant, Repository, Revision,\n    Person, Membership, Team, Player, Poet, Poem, Post)\n\n\nclass DeletionTests(TestCase):\n    def test_deletion(self):\n        PoetFormSet = modelformset_factory(Poet, can_delete=True)\n        poet = Poet.objects.create(name='test')\n        data = {\n            'form-TOTAL_FORMS': '1',\n            'form-INITIAL_FORMS': '1',\n            'form-MAX_NUM_FORMS': '0',\n            'form-0-id': str(poet.pk),\n            'form-0-name': 'test',\n            'form-0-DELETE': 'on',\n        }\n        formset = PoetFormSet(data, queryset=Poet.objects.all())\n        formset.save()\n        self.assertTrue(formset.is_valid())\n        self.assertEqual(Poet.objects.count(), 0)\n\n    def test_add_form_deletion_when_invalid(self):\n        \"\"\"\n        Make sure that an add form that is filled out, but marked for deletion\n        doesn't cause validation errors.\n        \"\"\"\n        PoetFormSet = modelformset_factory(Poet, can_delete=True)\n        data = {\n            'form-TOTAL_FORMS': '1',\n            'form-INITIAL_FORMS': '0',\n            'form-MAX_NUM_FORMS': '0',\n            'form-0-id': '',\n            'form-0-name': 'x' * 1000,\n        }\n        formset = PoetFormSet(data, queryset=Poet.objects.all())\n        # Make sure this form doesn't pass validation.\n        self.assertEqual(formset.is_valid(), False)\n        self.assertEqual(Poet.objects.count(), 0)\n\n        # Then make sure that it *does* pass validation and delete the object,\n        # even though the data isn't actually valid.\n        data['form-0-DELETE'] = 'on'\n        formset = PoetFormSet(data, queryset=Poet.objects.all())\n        self.assertEqual(formset.is_valid(), True)\n        formset.save()\n        self.assertEqual(Poet.objects.count(), 0)\n\n    def test_change_form_deletion_when_invalid(self):\n        \"\"\"\n        Make sure that an add form that is filled out, but marked for deletion\n        doesn't cause validation errors.\n        \"\"\"\n        PoetFormSet = modelformset_factory(Poet, can_delete=True)\n        poet = Poet.objects.create(name='test')\n        data = {\n            'form-TOTAL_FORMS': '1',\n            'form-INITIAL_FORMS': '1',\n            'form-MAX_NUM_FORMS': '0',\n            'form-0-id': six.text_type(poet.id),\n            'form-0-name': 'x' * 1000,\n        }\n        formset = PoetFormSet(data, queryset=Poet.objects.all())\n        # Make sure this form doesn't pass validation.\n        self.assertEqual(formset.is_valid(), False)\n        self.assertEqual(Poet.objects.count(), 1)\n\n        # Then make sure that it *does* pass validation and delete the object,\n        # even though the data isn't actually valid.\n        data['form-0-DELETE'] = 'on'\n        formset = PoetFormSet(data, queryset=Poet.objects.all())\n        self.assertEqual(formset.is_valid(), True)\n        formset.save()\n        self.assertEqual(Poet.objects.count(), 0)\n\nclass ModelFormsetTest(TestCase):\n    def test_simple_save(self):\n        qs = Author.objects.all()\n        AuthorFormSet = modelformset_factory(Author, extra=3)\n\n        formset = AuthorFormSet(queryset=qs)\n        self.assertEqual(len(formset.forms), 3)\n        self.assertHTMLEqual(formset.forms[0].as_p(),\n            '<p><label for=\"id_form-0-name\">Name:</label> <input id=\"id_form-0-name\" type=\"text\" name=\"form-0-name\" maxlength=\"100\" /><input type=\"hidden\" name=\"form-0-id\" id=\"id_form-0-id\" /></p>')\n        self.assertHTMLEqual(formset.forms[1].as_p(),\n            '<p><label for=\"id_form-1-name\">Name:</label> <input id=\"id_form-1-name\" type=\"text\" name=\"form-1-name\" maxlength=\"100\" /><input type=\"hidden\" name=\"form-1-id\" id=\"id_form-1-id\" /></p>')\n        self.assertHTMLEqual(formset.forms[2].as_p(),\n            '<p><label for=\"id_form-2-name\">Name:</label> <input id=\"id_form-2-name\" type=\"text\" name=\"form-2-name\" maxlength=\"100\" /><input type=\"hidden\" name=\"form-2-id\" id=\"id_form-2-id\" /></p>')\n\n        data = {\n            'form-TOTAL_FORMS': '3', # the number of forms rendered\n            'form-INITIAL_FORMS': '0', # the number of forms with initial data\n            'form-MAX_NUM_FORMS': '', # the max number of forms\n            'form-0-name': 'Charles Baudelaire',\n            'form-1-name': 'Arthur Rimbaud',\n            'form-2-name': '',\n        }\n\n        formset = AuthorFormSet(data=data, queryset=qs)\n        self.assertTrue(formset.is_valid())\n\n        saved = formset.save()\n        self.assertEqual(len(saved), 2)\n        author1, author2 = saved\n        self.assertEqual(author1, Author.objects.get(name='Charles Baudelaire'))\n        self.assertEqual(author2, Author.objects.get(name='Arthur Rimbaud'))\n\n        authors = list(Author.objects.order_by('name'))\n        self.assertEqual(authors, [author2, author1])\n\n        # Gah! We forgot Paul Verlaine. Let's create a formset to edit the\n        # existing authors with an extra form to add him. We *could* pass in a\n        # queryset to restrict the Author objects we edit, but in this case\n        # we'll use it to display them in alphabetical order by name.\n\n        qs = Author.objects.order_by('name')\n        AuthorFormSet = modelformset_factory(Author, extra=1, can_delete=False)\n\n        formset = AuthorFormSet(queryset=qs)\n        self.assertEqual(len(formset.forms), 3)\n        self.assertHTMLEqual(formset.forms[0].as_p(),\n            '<p><label for=\"id_form-0-name\">Name:</label> <input id=\"id_form-0-name\" type=\"text\" name=\"form-0-name\" value=\"Arthur Rimbaud\" maxlength=\"100\" /><input type=\"hidden\" name=\"form-0-id\" value=\"%d\" id=\"id_form-0-id\" /></p>' % author2.id)\n        self.assertHTMLEqual(formset.forms[1].as_p(),\n            '<p><label for=\"id_form-1-name\">Name:</label> <input id=\"id_form-1-name\" type=\"text\" name=\"form-1-name\" value=\"Charles Baudelaire\" maxlength=\"100\" /><input type=\"hidden\" name=\"form-1-id\" value=\"%d\" id=\"id_form-1-id\" /></p>' % author1.id)\n        self.assertHTMLEqual(formset.forms[2].as_p(),\n            '<p><label for=\"id_form-2-name\">Name:</label> <input id=\"id_form-2-name\" type=\"text\" name=\"form-2-name\" maxlength=\"100\" /><input type=\"hidden\" name=\"form-2-id\" id=\"id_form-2-id\" /></p>')\n\n        data = {\n            'form-TOTAL_FORMS': '3', # the number of forms rendered\n            'form-INITIAL_FORMS': '2', # the number of forms with initial data\n            'form-MAX_NUM_FORMS': '', # the max number of forms\n            'form-0-id': str(author2.id),\n            'form-0-name': 'Arthur Rimbaud',\n            'form-1-id': str(author1.id),\n            'form-1-name': 'Charles Baudelaire',\n            'form-2-name': 'Paul Verlaine',\n        }\n\n        formset = AuthorFormSet(data=data, queryset=qs)\n        self.assertTrue(formset.is_valid())\n\n        # Only changed or new objects are returned from formset.save()\n        saved = formset.save()\n        self.assertEqual(len(saved), 1)\n        author3 = saved[0]\n        self.assertEqual(author3, Author.objects.get(name='Paul Verlaine'))\n\n        authors = list(Author.objects.order_by('name'))\n        self.assertEqual(authors, [author2, author1, author3])\n\n        # This probably shouldn't happen, but it will. If an add form was\n        # marked for deletion, make sure we don't save that form.\n\n        qs = Author.objects.order_by('name')\n        AuthorFormSet = modelformset_factory(Author, extra=1, can_delete=True)\n\n        formset = AuthorFormSet(queryset=qs)\n        self.assertEqual(len(formset.forms), 4)\n        self.assertHTMLEqual(formset.forms[0].as_p(),\n            '<p><label for=\"id_form-0-name\">Name:</label> <input id=\"id_form-0-name\" type=\"text\" name=\"form-0-name\" value=\"Arthur Rimbaud\" maxlength=\"100\" /></p>\\n'\n            '<p><label for=\"id_form-0-DELETE\">Delete:</label> <input type=\"checkbox\" name=\"form-0-DELETE\" id=\"id_form-0-DELETE\" /><input type=\"hidden\" name=\"form-0-id\" value=\"%d\" id=\"id_form-0-id\" /></p>' % author2.id)\n        self.assertHTMLEqual(formset.forms[1].as_p(),\n            '<p><label for=\"id_form-1-name\">Name:</label> <input id=\"id_form-1-name\" type=\"text\" name=\"form-1-name\" value=\"Charles Baudelaire\" maxlength=\"100\" /></p>\\n'\n            '<p><label for=\"id_form-1-DELETE\">Delete:</label> <input type=\"checkbox\" name=\"form-1-DELETE\" id=\"id_form-1-DELETE\" /><input type=\"hidden\" name=\"form-1-id\" value=\"%d\" id=\"id_form-1-id\" /></p>' % author1.id)\n        self.assertHTMLEqual(formset.forms[2].as_p(),\n            '<p><label for=\"id_form-2-name\">Name:</label> <input id=\"id_form-2-name\" type=\"text\" name=\"form-2-name\" value=\"Paul Verlaine\" maxlength=\"100\" /></p>\\n'\n            '<p><label for=\"id_form-2-DELETE\">Delete:</label> <input type=\"checkbox\" name=\"form-2-DELETE\" id=\"id_form-2-DELETE\" /><input type=\"hidden\" name=\"form-2-id\" value=\"%d\" id=\"id_form-2-id\" /></p>' % author3.id)\n        self.assertHTMLEqual(formset.forms[3].as_p(),\n            '<p><label for=\"id_form-3-name\">Name:</label> <input id=\"id_form-3-name\" type=\"text\" name=\"form-3-name\" maxlength=\"100\" /></p>\\n'\n            '<p><label for=\"id_form-3-DELETE\">Delete:</label> <input type=\"checkbox\" name=\"form-3-DELETE\" id=\"id_form-3-DELETE\" /><input type=\"hidden\" name=\"form-3-id\" id=\"id_form-3-id\" /></p>')\n\n        data = {\n            'form-TOTAL_FORMS': '4', # the number of forms rendered\n            'form-INITIAL_FORMS': '3', # the number of forms with initial data\n            'form-MAX_NUM_FORMS': '', # the max number of forms\n            'form-0-id': str(author2.id),\n            'form-0-name': 'Arthur Rimbaud',\n            'form-1-id': str(author1.id),\n            'form-1-name': 'Charles Baudelaire',\n            'form-2-id': str(author3.id),\n            'form-2-name': 'Paul Verlaine',\n            'form-3-name': 'Walt Whitman',\n            'form-3-DELETE': 'on',\n        }\n\n        formset = AuthorFormSet(data=data, queryset=qs)\n        self.assertTrue(formset.is_valid())\n\n        # No objects were changed or saved so nothing will come back.\n\n        self.assertEqual(formset.save(), [])\n\n        authors = list(Author.objects.order_by('name'))\n        self.assertEqual(authors, [author2, author1, author3])\n\n        # Let's edit a record to ensure save only returns that one record.\n\n        data = {\n            'form-TOTAL_FORMS': '4', # the number of forms rendered\n            'form-INITIAL_FORMS': '3', # the number of forms with initial data\n            'form-MAX_NUM_FORMS': '', # the max number of forms\n            'form-0-id': str(author2.id),\n            'form-0-name': 'Walt Whitman',\n            'form-1-id': str(author1.id),\n            'form-1-name': 'Charles Baudelaire',\n            'form-2-id': str(author3.id),\n            'form-2-name': 'Paul Verlaine',\n            'form-3-name': '',\n            'form-3-DELETE': '',\n        }\n\n        formset = AuthorFormSet(data=data, queryset=qs)\n        self.assertTrue(formset.is_valid())\n\n        # One record has changed.\n\n        saved = formset.save()\n        self.assertEqual(len(saved), 1)\n        self.assertEqual(saved[0], Author.objects.get(name='Walt Whitman'))\n\n    def test_commit_false(self):\n        # Test the behavior of commit=False and save_m2m\n\n        author1 = Author.objects.create(name='Charles Baudelaire')\n        author2 = Author.objects.create(name='Paul Verlaine')\n        author3 = Author.objects.create(name='Walt Whitman')\n\n        meeting = AuthorMeeting.objects.create(created=date.today())\n        meeting.authors = Author.objects.all()\n\n        # create an Author instance to add to the meeting.\n\n        author4 = Author.objects.create(name='John Steinbeck')\n\n        AuthorMeetingFormSet = modelformset_factory(AuthorMeeting, extra=1, can_delete=True)\n        data = {\n            'form-TOTAL_FORMS': '2', # the number of forms rendered\n            'form-INITIAL_FORMS': '1', # the number of forms with initial data\n            'form-MAX_NUM_FORMS': '', # the max number of forms\n            'form-0-id': str(meeting.id),\n            'form-0-name': '2nd Tuesday of the Week Meeting',\n            'form-0-authors': [author2.id, author1.id, author3.id, author4.id],\n            'form-1-name': '',\n            'form-1-authors': '',\n            'form-1-DELETE': '',\n        }\n        formset = AuthorMeetingFormSet(data=data, queryset=AuthorMeeting.objects.all())\n        self.assertTrue(formset.is_valid())\n\n        instances = formset.save(commit=False)\n        for instance in instances:\n            instance.created = date.today()\n            instance.save()\n        formset.save_m2m()\n        self.assertQuerysetEqual(instances[0].authors.all(), [\n            '<Author: Charles Baudelaire>',\n            '<Author: John Steinbeck>',\n            '<Author: Paul Verlaine>',\n            '<Author: Walt Whitman>',\n        ])\n\n    def test_max_num(self):\n        # Test the behavior of max_num with model formsets. It should allow\n        # all existing related objects/inlines for a given object to be\n        # displayed, but not allow the creation of new inlines beyond max_num.\n\n        author1 = Author.objects.create(name='Charles Baudelaire')\n        author2 = Author.objects.create(name='Paul Verlaine')\n        author3 = Author.objects.create(name='Walt Whitman')\n\n        qs = Author.objects.order_by('name')\n\n        AuthorFormSet = modelformset_factory(Author, max_num=None, extra=3)\n        formset = AuthorFormSet(queryset=qs)\n        self.assertEqual(len(formset.forms), 6)\n        self.assertEqual(len(formset.extra_forms), 3)\n\n        AuthorFormSet = modelformset_factory(Author, max_num=4, extra=3)\n        formset = AuthorFormSet(queryset=qs)\n        self.assertEqual(len(formset.forms), 4)\n        self.assertEqual(len(formset.extra_forms), 1)\n\n        AuthorFormSet = modelformset_factory(Author, max_num=0, extra=3)\n        formset = AuthorFormSet(queryset=qs)\n        self.assertEqual(len(formset.forms), 3)\n        self.assertEqual(len(formset.extra_forms), 0)\n\n        AuthorFormSet = modelformset_factory(Author, max_num=None)\n        formset = AuthorFormSet(queryset=qs)\n        self.assertQuerysetEqual(formset.get_queryset(), [\n            '<Author: Charles Baudelaire>',\n            '<Author: Paul Verlaine>',\n            '<Author: Walt Whitman>',\n        ])\n\n        AuthorFormSet = modelformset_factory(Author, max_num=0)\n        formset = AuthorFormSet(queryset=qs)\n        self.assertQuerysetEqual(formset.get_queryset(), [\n            '<Author: Charles Baudelaire>',\n            '<Author: Paul Verlaine>',\n            '<Author: Walt Whitman>',\n        ])\n\n        AuthorFormSet = modelformset_factory(Author, max_num=4)\n        formset = AuthorFormSet(queryset=qs)\n        self.assertQuerysetEqual(formset.get_queryset(), [\n            '<Author: Charles Baudelaire>',\n            '<Author: Paul Verlaine>',\n            '<Author: Walt Whitman>',\n        ])\n\n    def test_custom_save_method(self):\n        class PoetForm(forms.ModelForm):\n            def save(self, commit=True):\n                # change the name to \"Vladimir Mayakovsky\" just to be a jerk.\n                author = super(PoetForm, self).save(commit=False)\n                author.name = \"Vladimir Mayakovsky\"\n                if commit:\n                    author.save()\n                return author\n\n        PoetFormSet = modelformset_factory(Poet, form=PoetForm)\n\n        data = {\n            'form-TOTAL_FORMS': '3', # the number of forms rendered\n            'form-INITIAL_FORMS': '0', # the number of forms with initial data\n            'form-MAX_NUM_FORMS': '', # the max number of forms\n            'form-0-name': 'Walt Whitman',\n            'form-1-name': 'Charles Baudelaire',\n            'form-2-name': '',\n        }\n\n        qs = Poet.objects.all()\n        formset = PoetFormSet(data=data, queryset=qs)\n        self.assertTrue(formset.is_valid())\n\n        poets = formset.save()\n        self.assertEqual(len(poets), 2)\n        poet1, poet2 = poets\n        self.assertEqual(poet1.name, 'Vladimir Mayakovsky')\n        self.assertEqual(poet2.name, 'Vladimir Mayakovsky')\n\n    def test_custom_form(self):\n        \"\"\" Test that model_formset respects fields and exclude parameters of\n            custom form\n        \"\"\"\n        class PostForm1(forms.ModelForm):\n            class Meta:\n                model = Post\n                fields = ('title', 'posted')\n\n        class PostForm2(forms.ModelForm):\n            class Meta:\n                model = Post\n                exclude = ('subtitle',)\n\n        PostFormSet = modelformset_factory(Post, form=PostForm1)\n        formset = PostFormSet()\n        self.assertFalse(\"subtitle\" in formset.forms[0].fields)\n\n        PostFormSet = modelformset_factory(Post, form=PostForm2)\n        formset = PostFormSet()\n        self.assertFalse(\"subtitle\" in formset.forms[0].fields)\n\n    def test_model_inheritance(self):\n        BetterAuthorFormSet = modelformset_factory(BetterAuthor)\n        formset = BetterAuthorFormSet()\n        self.assertEqual(len(formset.forms), 1)\n        self.assertHTMLEqual(formset.forms[0].as_p(),\n            '<p><label for=\"id_form-0-name\">Name:</label> <input id=\"id_form-0-name\" type=\"text\" name=\"form-0-name\" maxlength=\"100\" /></p>\\n'\n            '<p><label for=\"id_form-0-write_speed\">Write speed:</label> <input type=\"text\" name=\"form-0-write_speed\" id=\"id_form-0-write_speed\" /><input type=\"hidden\" name=\"form-0-author_ptr\" id=\"id_form-0-author_ptr\" /></p>')\n\n        data = {\n            'form-TOTAL_FORMS': '1', # the number of forms rendered\n            'form-INITIAL_FORMS': '0', # the number of forms with initial data\n            'form-MAX_NUM_FORMS': '', # the max number of forms\n            'form-0-author_ptr': '',\n            'form-0-name': 'Ernest Hemingway',\n            'form-0-write_speed': '10',\n        }\n\n        formset = BetterAuthorFormSet(data)\n        self.assertTrue(formset.is_valid())\n        saved = formset.save()\n        self.assertEqual(len(saved), 1)\n        author1, = saved\n        self.assertEqual(author1, BetterAuthor.objects.get(name='Ernest Hemingway'))\n        hemingway_id = BetterAuthor.objects.get(name=\"Ernest Hemingway\").pk\n\n        formset = BetterAuthorFormSet()\n        self.assertEqual(len(formset.forms), 2)\n        self.assertHTMLEqual(formset.forms[0].as_p(),\n            '<p><label for=\"id_form-0-name\">Name:</label> <input id=\"id_form-0-name\" type=\"text\" name=\"form-0-name\" value=\"Ernest Hemingway\" maxlength=\"100\" /></p>\\n'\n            '<p><label for=\"id_form-0-write_speed\">Write speed:</label> <input type=\"text\" name=\"form-0-write_speed\" value=\"10\" id=\"id_form-0-write_speed\" /><input type=\"hidden\" name=\"form-0-author_ptr\" value=\"%d\" id=\"id_form-0-author_ptr\" /></p>' % hemingway_id)\n        self.assertHTMLEqual(formset.forms[1].as_p(),\n            '<p><label for=\"id_form-1-name\">Name:</label> <input id=\"id_form-1-name\" type=\"text\" name=\"form-1-name\" maxlength=\"100\" /></p>\\n'\n            '<p><label for=\"id_form-1-write_speed\">Write speed:</label> <input type=\"text\" name=\"form-1-write_speed\" id=\"id_form-1-write_speed\" /><input type=\"hidden\" name=\"form-1-author_ptr\" id=\"id_form-1-author_ptr\" /></p>')\n\n        data = {\n            'form-TOTAL_FORMS': '2', # the number of forms rendered\n            'form-INITIAL_FORMS': '1', # the number of forms with initial data\n            'form-MAX_NUM_FORMS': '', # the max number of forms\n            'form-0-author_ptr': hemingway_id,\n            'form-0-name': 'Ernest Hemingway',\n            'form-0-write_speed': '10',\n            'form-1-author_ptr': '',\n            'form-1-name': '',\n            'form-1-write_speed': '',\n        }\n\n        formset = BetterAuthorFormSet(data)\n        self.assertTrue(formset.is_valid())\n        self.assertEqual(formset.save(), [])\n\n    def test_inline_formsets(self):\n        # We can also create a formset that is tied to a parent model. This is\n        # how the admin system's edit inline functionality works.\n\n        AuthorBooksFormSet = inlineformset_factory(Author, Book, can_delete=False, extra=3)\n        author = Author.objects.create(name='Charles Baudelaire')\n\n        formset = AuthorBooksFormSet(instance=author)\n        self.assertEqual(len(formset.forms), 3)\n        self.assertHTMLEqual(formset.forms[0].as_p(),\n            '<p><label for=\"id_book_set-0-title\">Title:</label> <input id=\"id_book_set-0-title\" type=\"text\" name=\"book_set-0-title\" maxlength=\"100\" /><input type=\"hidden\" name=\"book_set-0-author\" value=\"%d\" id=\"id_book_set-0-author\" /><input type=\"hidden\" name=\"book_set-0-id\" id=\"id_book_set-0-id\" /></p>'  % author.id)\n        self.assertHTMLEqual(formset.forms[1].as_p(),\n            '<p><label for=\"id_book_set-1-title\">Title:</label> <input id=\"id_book_set-1-title\" type=\"text\" name=\"book_set-1-title\" maxlength=\"100\" /><input type=\"hidden\" name=\"book_set-1-author\" value=\"%d\" id=\"id_book_set-1-author\" /><input type=\"hidden\" name=\"book_set-1-id\" id=\"id_book_set-1-id\" /></p>' % author.id)\n        self.assertHTMLEqual(formset.forms[2].as_p(),\n            '<p><label for=\"id_book_set-2-title\">Title:</label> <input id=\"id_book_set-2-title\" type=\"text\" name=\"book_set-2-title\" maxlength=\"100\" /><input type=\"hidden\" name=\"book_set-2-author\" value=\"%d\" id=\"id_book_set-2-author\" /><input type=\"hidden\" name=\"book_set-2-id\" id=\"id_book_set-2-id\" /></p>' % author.id)\n\n        data = {\n            'book_set-TOTAL_FORMS': '3', # the number of forms rendered\n            'book_set-INITIAL_FORMS': '0', # the number of forms with initial data\n            'book_set-MAX_NUM_FORMS': '', # the max number of forms\n            'book_set-0-title': 'Les Fleurs du Mal',\n            'book_set-1-title': '',\n            'book_set-2-title': '',\n        }\n\n        formset = AuthorBooksFormSet(data, instance=author)\n        self.assertTrue(formset.is_valid())\n\n        saved = formset.save()\n        self.assertEqual(len(saved), 1)\n        book1, = saved\n        self.assertEqual(book1, Book.objects.get(title='Les Fleurs du Mal'))\n        self.assertQuerysetEqual(author.book_set.all(), ['<Book: Les Fleurs du Mal>'])\n\n        # Now that we've added a book to Charles Baudelaire, let's try adding\n        # another one. This time though, an edit form will be available for\n        # every existing book.\n\n        AuthorBooksFormSet = inlineformset_factory(Author, Book, can_delete=False, extra=2)\n        author = Author.objects.get(name='Charles Baudelaire')\n\n        formset = AuthorBooksFormSet(instance=author)\n        self.assertEqual(len(formset.forms), 3)\n        self.assertHTMLEqual(formset.forms[0].as_p(),\n            '<p><label for=\"id_book_set-0-title\">Title:</label> <input id=\"id_book_set-0-title\" type=\"text\" name=\"book_set-0-title\" value=\"Les Fleurs du Mal\" maxlength=\"100\" /><input type=\"hidden\" name=\"book_set-0-author\" value=\"%d\" id=\"id_book_set-0-author\" /><input type=\"hidden\" name=\"book_set-0-id\" value=\"%d\" id=\"id_book_set-0-id\" /></p>' % (author.id, book1.id))\n        self.assertHTMLEqual(formset.forms[1].as_p(),\n            '<p><label for=\"id_book_set-1-title\">Title:</label> <input id=\"id_book_set-1-title\" type=\"text\" name=\"book_set-1-title\" maxlength=\"100\" /><input type=\"hidden\" name=\"book_set-1-author\" value=\"%d\" id=\"id_book_set-1-author\" /><input type=\"hidden\" name=\"book_set-1-id\" id=\"id_book_set-1-id\" /></p>' % author.id)\n        self.assertHTMLEqual(formset.forms[2].as_p(),\n            '<p><label for=\"id_book_set-2-title\">Title:</label> <input id=\"id_book_set-2-title\" type=\"text\" name=\"book_set-2-title\" maxlength=\"100\" /><input type=\"hidden\" name=\"book_set-2-author\" value=\"%d\" id=\"id_book_set-2-author\" /><input type=\"hidden\" name=\"book_set-2-id\" id=\"id_book_set-2-id\" /></p>' % author.id)\n\n        data = {\n            'book_set-TOTAL_FORMS': '3', # the number of forms rendered\n            'book_set-INITIAL_FORMS': '1', # the number of forms with initial data\n            'book_set-MAX_NUM_FORMS': '', # the max number of forms\n            'book_set-0-id': str(book1.id),\n            'book_set-0-title': 'Les Fleurs du Mal',\n            'book_set-1-title': 'Les Paradis Artificiels',\n            'book_set-2-title': '',\n        }\n\n        formset = AuthorBooksFormSet(data, instance=author)\n        self.assertTrue(formset.is_valid())\n\n        saved = formset.save()\n        self.assertEqual(len(saved), 1)\n        book2, = saved\n        self.assertEqual(book2, Book.objects.get(title='Les Paradis Artificiels'))\n\n        # As you can see, 'Les Paradis Artificiels' is now a book belonging to\n        # Charles Baudelaire.\n        self.assertQuerysetEqual(author.book_set.order_by('title'), [\n            '<Book: Les Fleurs du Mal>',\n            '<Book: Les Paradis Artificiels>',\n        ])\n\n    def test_inline_formsets_save_as_new(self):\n        # The save_as_new parameter lets you re-associate the data to a new\n        # instance.  This is used in the admin for save_as functionality.\n        AuthorBooksFormSet = inlineformset_factory(Author, Book, can_delete=False, extra=2)\n        author = Author.objects.create(name='Charles Baudelaire')\n\n        data = {\n            'book_set-TOTAL_FORMS': '3', # the number of forms rendered\n            'book_set-INITIAL_FORMS': '2', # the number of forms with initial data\n            'book_set-MAX_NUM_FORMS': '', # the max number of forms\n            'book_set-0-id': '1',\n            'book_set-0-title': 'Les Fleurs du Mal',\n            'book_set-1-id': '2',\n            'book_set-1-title': 'Les Paradis Artificiels',\n            'book_set-2-title': '',\n        }\n\n        formset = AuthorBooksFormSet(data, instance=Author(), save_as_new=True)\n        self.assertTrue(formset.is_valid())\n\n        new_author = Author.objects.create(name='Charles Baudelaire')\n        formset = AuthorBooksFormSet(data, instance=new_author, save_as_new=True)\n        saved = formset.save()\n        self.assertEqual(len(saved), 2)\n        book1, book2 = saved\n        self.assertEqual(book1.title, 'Les Fleurs du Mal')\n        self.assertEqual(book2.title, 'Les Paradis Artificiels')\n\n        # Test using a custom prefix on an inline formset.\n\n        formset = AuthorBooksFormSet(prefix=\"test\")\n        self.assertEqual(len(formset.forms), 2)\n        self.assertHTMLEqual(formset.forms[0].as_p(),\n            '<p><label for=\"id_test-0-title\">Title:</label> <input id=\"id_test-0-title\" type=\"text\" name=\"test-0-title\" maxlength=\"100\" /><input type=\"hidden\" name=\"test-0-author\" id=\"id_test-0-author\" /><input type=\"hidden\" name=\"test-0-id\" id=\"id_test-0-id\" /></p>')\n        self.assertHTMLEqual(formset.forms[1].as_p(),\n            '<p><label for=\"id_test-1-title\">Title:</label> <input id=\"id_test-1-title\" type=\"text\" name=\"test-1-title\" maxlength=\"100\" /><input type=\"hidden\" name=\"test-1-author\" id=\"id_test-1-author\" /><input type=\"hidden\" name=\"test-1-id\" id=\"id_test-1-id\" /></p>')\n\n    def test_inline_formsets_with_custom_pk(self):\n        # Test inline formsets where the inline-edited object has a custom\n        # primary key that is not the fk to the parent object.\n\n        AuthorBooksFormSet2 = inlineformset_factory(Author, BookWithCustomPK, can_delete=False, extra=1)\n        author = Author.objects.create(pk=1, name='Charles Baudelaire')\n\n        formset = AuthorBooksFormSet2(instance=author)\n        self.assertEqual(len(formset.forms), 1)\n        self.assertHTMLEqual(formset.forms[0].as_p(),\n            '<p><label for=\"id_bookwithcustompk_set-0-my_pk\">My pk:</label> <input type=\"text\" name=\"bookwithcustompk_set-0-my_pk\" id=\"id_bookwithcustompk_set-0-my_pk\" /></p>\\n'\n            '<p><label for=\"id_bookwithcustompk_set-0-title\">Title:</label> <input id=\"id_bookwithcustompk_set-0-title\" type=\"text\" name=\"bookwithcustompk_set-0-title\" maxlength=\"100\" /><input type=\"hidden\" name=\"bookwithcustompk_set-0-author\" value=\"1\" id=\"id_bookwithcustompk_set-0-author\" /></p>')\n\n        data = {\n            'bookwithcustompk_set-TOTAL_FORMS': '1', # the number of forms rendered\n            'bookwithcustompk_set-INITIAL_FORMS': '0', # the number of forms with initial data\n            'bookwithcustompk_set-MAX_NUM_FORMS': '', # the max number of forms\n            'bookwithcustompk_set-0-my_pk': '77777',\n            'bookwithcustompk_set-0-title': 'Les Fleurs du Mal',\n        }\n\n        formset = AuthorBooksFormSet2(data, instance=author)\n        self.assertTrue(formset.is_valid())\n\n        saved = formset.save()\n        self.assertEqual(len(saved), 1)\n        book1, = saved\n        self.assertEqual(book1.pk, 77777)\n\n        book1 = author.bookwithcustompk_set.get()\n        self.assertEqual(book1.title, 'Les Fleurs du Mal')\n\n    def test_inline_formsets_with_multi_table_inheritance(self):\n        # Test inline formsets where the inline-edited object uses multi-table\n        # inheritance, thus has a non AutoField yet auto-created primary key.\n\n        AuthorBooksFormSet3 = inlineformset_factory(Author, AlternateBook, can_delete=False, extra=1)\n        author = Author.objects.create(pk=1, name='Charles Baudelaire')\n\n        formset = AuthorBooksFormSet3(instance=author)\n        self.assertEqual(len(formset.forms), 1)\n        self.assertHTMLEqual(formset.forms[0].as_p(),\n            '<p><label for=\"id_alternatebook_set-0-title\">Title:</label> <input id=\"id_alternatebook_set-0-title\" type=\"text\" name=\"alternatebook_set-0-title\" maxlength=\"100\" /></p>\\n'\n            '<p><label for=\"id_alternatebook_set-0-notes\">Notes:</label> <input id=\"id_alternatebook_set-0-notes\" type=\"text\" name=\"alternatebook_set-0-notes\" maxlength=\"100\" /><input type=\"hidden\" name=\"alternatebook_set-0-author\" value=\"1\" id=\"id_alternatebook_set-0-author\" /><input type=\"hidden\" name=\"alternatebook_set-0-book_ptr\" id=\"id_alternatebook_set-0-book_ptr\" /></p>')\n\n        data = {\n            'alternatebook_set-TOTAL_FORMS': '1', # the number of forms rendered\n            'alternatebook_set-INITIAL_FORMS': '0', # the number of forms with initial data\n            'alternatebook_set-MAX_NUM_FORMS': '', # the max number of forms\n            'alternatebook_set-0-title': 'Flowers of Evil',\n            'alternatebook_set-0-notes': 'English translation of Les Fleurs du Mal'\n        }\n\n        formset = AuthorBooksFormSet3(data, instance=author)\n        self.assertTrue(formset.is_valid())\n\n        saved = formset.save()\n        self.assertEqual(len(saved), 1)\n        book1, = saved\n        self.assertEqual(book1.title, 'Flowers of Evil')\n        self.assertEqual(book1.notes, 'English translation of Les Fleurs du Mal')\n\n    @skipUnlessDBFeature('ignores_nulls_in_unique_constraints')\n    def test_inline_formsets_with_nullable_unique_together(self):\n        # Test inline formsets where the inline-edited object has a\n        # unique_together constraint with a nullable member\n\n        AuthorBooksFormSet4 = inlineformset_factory(Author, BookWithOptionalAltEditor, can_delete=False, extra=2)\n        author = Author.objects.create(pk=1, name='Charles Baudelaire')\n\n        data = {\n            'bookwithoptionalalteditor_set-TOTAL_FORMS': '2', # the number of forms rendered\n            'bookwithoptionalalteditor_set-INITIAL_FORMS': '0', # the number of forms with initial data\n            'bookwithoptionalalteditor_set-MAX_NUM_FORMS': '', # the max number of forms\n            'bookwithoptionalalteditor_set-0-author': '1',\n            'bookwithoptionalalteditor_set-0-title': 'Les Fleurs du Mal',\n            'bookwithoptionalalteditor_set-1-author': '1',\n            'bookwithoptionalalteditor_set-1-title': 'Les Fleurs du Mal',\n        }\n        formset = AuthorBooksFormSet4(data, instance=author)\n        self.assertTrue(formset.is_valid())\n\n        saved = formset.save()\n        self.assertEqual(len(saved), 2)\n        book1, book2 = saved\n        self.assertEqual(book1.author_id, 1)\n        self.assertEqual(book1.title, 'Les Fleurs du Mal')\n        self.assertEqual(book2.author_id, 1)\n        self.assertEqual(book2.title, 'Les Fleurs du Mal')\n\n    def test_inline_formsets_with_custom_save_method(self):\n        AuthorBooksFormSet = inlineformset_factory(Author, Book, can_delete=False, extra=2)\n        author = Author.objects.create(pk=1, name='Charles Baudelaire')\n        book1 = Book.objects.create(pk=1, author=author, title='Les Paradis Artificiels')\n        book2 = Book.objects.create(pk=2, author=author, title='Les Fleurs du Mal')\n        book3 = Book.objects.create(pk=3, author=author, title='Flowers of Evil')\n\n        class PoemForm(forms.ModelForm):\n            def save(self, commit=True):\n                # change the name to \"Brooklyn Bridge\" just to be a jerk.\n                poem = super(PoemForm, self).save(commit=False)\n                poem.name = \"Brooklyn Bridge\"\n                if commit:\n                    poem.save()\n                return poem\n\n        PoemFormSet = inlineformset_factory(Poet, Poem, form=PoemForm)\n\n        data = {\n            'poem_set-TOTAL_FORMS': '3', # the number of forms rendered\n            'poem_set-INITIAL_FORMS': '0', # the number of forms with initial data\n            'poem_set-MAX_NUM_FORMS': '', # the max number of forms\n            'poem_set-0-name': 'The Cloud in Trousers',\n            'poem_set-1-name': 'I',\n            'poem_set-2-name': '',\n        }\n\n        poet = Poet.objects.create(name='Vladimir Mayakovsky')\n        formset = PoemFormSet(data=data, instance=poet)\n        self.assertTrue(formset.is_valid())\n\n        saved = formset.save()\n        self.assertEqual(len(saved), 2)\n        poem1, poem2 = saved\n        self.assertEqual(poem1.name, 'Brooklyn Bridge')\n        self.assertEqual(poem2.name, 'Brooklyn Bridge')\n\n        # We can provide a custom queryset to our InlineFormSet:\n\n        custom_qs = Book.objects.order_by('-title')\n        formset = AuthorBooksFormSet(instance=author, queryset=custom_qs)\n        self.assertEqual(len(formset.forms), 5)\n        self.assertHTMLEqual(formset.forms[0].as_p(),\n            '<p><label for=\"id_book_set-0-title\">Title:</label> <input id=\"id_book_set-0-title\" type=\"text\" name=\"book_set-0-title\" value=\"Les Paradis Artificiels\" maxlength=\"100\" /><input type=\"hidden\" name=\"book_set-0-author\" value=\"1\" id=\"id_book_set-0-author\" /><input type=\"hidden\" name=\"book_set-0-id\" value=\"1\" id=\"id_book_set-0-id\" /></p>')\n        self.assertHTMLEqual(formset.forms[1].as_p(),\n            '<p><label for=\"id_book_set-1-title\">Title:</label> <input id=\"id_book_set-1-title\" type=\"text\" name=\"book_set-1-title\" value=\"Les Fleurs du Mal\" maxlength=\"100\" /><input type=\"hidden\" name=\"book_set-1-author\" value=\"1\" id=\"id_book_set-1-author\" /><input type=\"hidden\" name=\"book_set-1-id\" value=\"2\" id=\"id_book_set-1-id\" /></p>')\n        self.assertHTMLEqual(formset.forms[2].as_p(),\n            '<p><label for=\"id_book_set-2-title\">Title:</label> <input id=\"id_book_set-2-title\" type=\"text\" name=\"book_set-2-title\" value=\"Flowers of Evil\" maxlength=\"100\" /><input type=\"hidden\" name=\"book_set-2-author\" value=\"1\" id=\"id_book_set-2-author\" /><input type=\"hidden\" name=\"book_set-2-id\" value=\"3\" id=\"id_book_set-2-id\" /></p>')\n        self.assertHTMLEqual(formset.forms[3].as_p(),\n            '<p><label for=\"id_book_set-3-title\">Title:</label> <input id=\"id_book_set-3-title\" type=\"text\" name=\"book_set-3-title\" maxlength=\"100\" /><input type=\"hidden\" name=\"book_set-3-author\" value=\"1\" id=\"id_book_set-3-author\" /><input type=\"hidden\" name=\"book_set-3-id\" id=\"id_book_set-3-id\" /></p>')\n        self.assertHTMLEqual(formset.forms[4].as_p(),\n            '<p><label for=\"id_book_set-4-title\">Title:</label> <input id=\"id_book_set-4-title\" type=\"text\" name=\"book_set-4-title\" maxlength=\"100\" /><input type=\"hidden\" name=\"book_set-4-author\" value=\"1\" id=\"id_book_set-4-author\" /><input type=\"hidden\" name=\"book_set-4-id\" id=\"id_book_set-4-id\" /></p>')\n\n        data = {\n            'book_set-TOTAL_FORMS': '5', # the number of forms rendered\n            'book_set-INITIAL_FORMS': '3', # the number of forms with initial data\n            'book_set-MAX_NUM_FORMS': '', # the max number of forms\n            'book_set-0-id': str(book1.id),\n            'book_set-0-title': 'Les Paradis Artificiels',\n            'book_set-1-id': str(book2.id),\n            'book_set-1-title': 'Les Fleurs du Mal',\n            'book_set-2-id': str(book3.id),\n            'book_set-2-title': 'Flowers of Evil',\n            'book_set-3-title': 'Revue des deux mondes',\n            'book_set-4-title': '',\n        }\n        formset = AuthorBooksFormSet(data, instance=author, queryset=custom_qs)\n        self.assertTrue(formset.is_valid())\n\n        custom_qs = Book.objects.filter(title__startswith='F')\n        formset = AuthorBooksFormSet(instance=author, queryset=custom_qs)\n        self.assertHTMLEqual(formset.forms[0].as_p(),\n            '<p><label for=\"id_book_set-0-title\">Title:</label> <input id=\"id_book_set-0-title\" type=\"text\" name=\"book_set-0-title\" value=\"Flowers of Evil\" maxlength=\"100\" /><input type=\"hidden\" name=\"book_set-0-author\" value=\"1\" id=\"id_book_set-0-author\" /><input type=\"hidden\" name=\"book_set-0-id\" value=\"3\" id=\"id_book_set-0-id\" /></p>')\n        self.assertHTMLEqual(formset.forms[1].as_p(),\n            '<p><label for=\"id_book_set-1-title\">Title:</label> <input id=\"id_book_set-1-title\" type=\"text\" name=\"book_set-1-title\" maxlength=\"100\" /><input type=\"hidden\" name=\"book_set-1-author\" value=\"1\" id=\"id_book_set-1-author\" /><input type=\"hidden\" name=\"book_set-1-id\" id=\"id_book_set-1-id\" /></p>')\n        self.assertHTMLEqual(formset.forms[2].as_p(),\n            '<p><label for=\"id_book_set-2-title\">Title:</label> <input id=\"id_book_set-2-title\" type=\"text\" name=\"book_set-2-title\" maxlength=\"100\" /><input type=\"hidden\" name=\"book_set-2-author\" value=\"1\" id=\"id_book_set-2-author\" /><input type=\"hidden\" name=\"book_set-2-id\" id=\"id_book_set-2-id\" /></p>')\n\n        data = {\n            'book_set-TOTAL_FORMS': '3', # the number of forms rendered\n            'book_set-INITIAL_FORMS': '1', # the number of forms with initial data\n            'book_set-MAX_NUM_FORMS': '', # the max number of forms\n            'book_set-0-id': str(book3.id),\n            'book_set-0-title': 'Flowers of Evil',\n            'book_set-1-title': 'Revue des deux mondes',\n            'book_set-2-title': '',\n        }\n        formset = AuthorBooksFormSet(data, instance=author, queryset=custom_qs)\n        self.assertTrue(formset.is_valid())\n\n    def test_custom_pk(self):\n        # We need to ensure that it is displayed\n\n        CustomPrimaryKeyFormSet = modelformset_factory(CustomPrimaryKey)\n        formset = CustomPrimaryKeyFormSet()\n        self.assertEqual(len(formset.forms), 1)\n        self.assertHTMLEqual(formset.forms[0].as_p(),\n            '<p><label for=\"id_form-0-my_pk\">My pk:</label> <input id=\"id_form-0-my_pk\" type=\"text\" name=\"form-0-my_pk\" maxlength=\"10\" /></p>\\n'\n            '<p><label for=\"id_form-0-some_field\">Some field:</label> <input id=\"id_form-0-some_field\" type=\"text\" name=\"form-0-some_field\" maxlength=\"100\" /></p>')\n\n        # Custom primary keys with ForeignKey, OneToOneField and AutoField ############\n\n        place = Place.objects.create(pk=1, name='Giordanos', city='Chicago')\n\n        FormSet = inlineformset_factory(Place, Owner, extra=2, can_delete=False)\n        formset = FormSet(instance=place)\n        self.assertEqual(len(formset.forms), 2)\n        self.assertHTMLEqual(formset.forms[0].as_p(),\n            '<p><label for=\"id_owner_set-0-name\">Name:</label> <input id=\"id_owner_set-0-name\" type=\"text\" name=\"owner_set-0-name\" maxlength=\"100\" /><input type=\"hidden\" name=\"owner_set-0-place\" value=\"1\" id=\"id_owner_set-0-place\" /><input type=\"hidden\" name=\"owner_set-0-auto_id\" id=\"id_owner_set-0-auto_id\" /></p>')\n        self.assertHTMLEqual(formset.forms[1].as_p(),\n            '<p><label for=\"id_owner_set-1-name\">Name:</label> <input id=\"id_owner_set-1-name\" type=\"text\" name=\"owner_set-1-name\" maxlength=\"100\" /><input type=\"hidden\" name=\"owner_set-1-place\" value=\"1\" id=\"id_owner_set-1-place\" /><input type=\"hidden\" name=\"owner_set-1-auto_id\" id=\"id_owner_set-1-auto_id\" /></p>')\n\n        data = {\n            'owner_set-TOTAL_FORMS': '2',\n            'owner_set-INITIAL_FORMS': '0',\n            'owner_set-MAX_NUM_FORMS': '',\n            'owner_set-0-auto_id': '',\n            'owner_set-0-name': 'Joe Perry',\n            'owner_set-1-auto_id': '',\n            'owner_set-1-name': '',\n        }\n        formset = FormSet(data, instance=place)\n        self.assertTrue(formset.is_valid())\n        saved = formset.save()\n        self.assertEqual(len(saved), 1)\n        owner1, = saved\n        self.assertEqual(owner1.name, 'Joe Perry')\n        self.assertEqual(owner1.place.name, 'Giordanos')\n\n        formset = FormSet(instance=place)\n        self.assertEqual(len(formset.forms), 3)\n        self.assertHTMLEqual(formset.forms[0].as_p(),\n            '<p><label for=\"id_owner_set-0-name\">Name:</label> <input id=\"id_owner_set-0-name\" type=\"text\" name=\"owner_set-0-name\" value=\"Joe Perry\" maxlength=\"100\" /><input type=\"hidden\" name=\"owner_set-0-place\" value=\"1\" id=\"id_owner_set-0-place\" /><input type=\"hidden\" name=\"owner_set-0-auto_id\" value=\"%d\" id=\"id_owner_set-0-auto_id\" /></p>'\n            % owner1.auto_id)\n        self.assertHTMLEqual(formset.forms[1].as_p(),\n            '<p><label for=\"id_owner_set-1-name\">Name:</label> <input id=\"id_owner_set-1-name\" type=\"text\" name=\"owner_set-1-name\" maxlength=\"100\" /><input type=\"hidden\" name=\"owner_set-1-place\" value=\"1\" id=\"id_owner_set-1-place\" /><input type=\"hidden\" name=\"owner_set-1-auto_id\" id=\"id_owner_set-1-auto_id\" /></p>')\n        self.assertHTMLEqual(formset.forms[2].as_p(),\n            '<p><label for=\"id_owner_set-2-name\">Name:</label> <input id=\"id_owner_set-2-name\" type=\"text\" name=\"owner_set-2-name\" maxlength=\"100\" /><input type=\"hidden\" name=\"owner_set-2-place\" value=\"1\" id=\"id_owner_set-2-place\" /><input type=\"hidden\" name=\"owner_set-2-auto_id\" id=\"id_owner_set-2-auto_id\" /></p>')\n\n        data = {\n            'owner_set-TOTAL_FORMS': '3',\n            'owner_set-INITIAL_FORMS': '1',\n            'owner_set-MAX_NUM_FORMS': '',\n            'owner_set-0-auto_id': six.text_type(owner1.auto_id),\n            'owner_set-0-name': 'Joe Perry',\n            'owner_set-1-auto_id': '',\n            'owner_set-1-name': 'Jack Berry',\n            'owner_set-2-auto_id': '',\n            'owner_set-2-name': '',\n        }\n        formset = FormSet(data, instance=place)\n        self.assertTrue(formset.is_valid())\n        saved = formset.save()\n        self.assertEqual(len(saved), 1)\n        owner2, = saved\n        self.assertEqual(owner2.name, 'Jack Berry')\n        self.assertEqual(owner2.place.name, 'Giordanos')\n\n        # Ensure a custom primary key that is a ForeignKey or OneToOneField get rendered for the user to choose.\n\n        FormSet = modelformset_factory(OwnerProfile)\n        formset = FormSet()\n        self.assertHTMLEqual(formset.forms[0].as_p(),\n            '<p><label for=\"id_form-0-owner\">Owner:</label> <select name=\"form-0-owner\" id=\"id_form-0-owner\">\\n'\n            '<option value=\"\" selected=\"selected\">---------</option>\\n'\n            '<option value=\"%d\">Joe Perry at Giordanos</option>\\n'\n            '<option value=\"%d\">Jack Berry at Giordanos</option>\\n'\n            '</select></p>\\n'\n            '<p><label for=\"id_form-0-age\">Age:</label> <input type=\"text\" name=\"form-0-age\" id=\"id_form-0-age\" /></p>'\n            % (owner1.auto_id, owner2.auto_id))\n\n        owner1 = Owner.objects.get(name='Joe Perry')\n        FormSet = inlineformset_factory(Owner, OwnerProfile, max_num=1, can_delete=False)\n        self.assertEqual(FormSet.max_num, 1)\n\n        formset = FormSet(instance=owner1)\n        self.assertEqual(len(formset.forms), 1)\n        self.assertHTMLEqual(formset.forms[0].as_p(),\n            '<p><label for=\"id_ownerprofile-0-age\">Age:</label> <input type=\"text\" name=\"ownerprofile-0-age\" id=\"id_ownerprofile-0-age\" /><input type=\"hidden\" name=\"ownerprofile-0-owner\" value=\"%d\" id=\"id_ownerprofile-0-owner\" /></p>'\n            % owner1.auto_id)\n\n        data = {\n            'ownerprofile-TOTAL_FORMS': '1',\n            'ownerprofile-INITIAL_FORMS': '0',\n            'ownerprofile-MAX_NUM_FORMS': '1',\n            'ownerprofile-0-owner': '',\n            'ownerprofile-0-age': '54',\n        }\n        formset = FormSet(data, instance=owner1)\n        self.assertTrue(formset.is_valid())\n        saved = formset.save()\n        self.assertEqual(len(saved), 1)\n        profile1, = saved\n        self.assertEqual(profile1.owner, owner1)\n        self.assertEqual(profile1.age, 54)\n\n        formset = FormSet(instance=owner1)\n        self.assertEqual(len(formset.forms), 1)\n        self.assertHTMLEqual(formset.forms[0].as_p(),\n            '<p><label for=\"id_ownerprofile-0-age\">Age:</label> <input type=\"text\" name=\"ownerprofile-0-age\" value=\"54\" id=\"id_ownerprofile-0-age\" /><input type=\"hidden\" name=\"ownerprofile-0-owner\" value=\"%d\" id=\"id_ownerprofile-0-owner\" /></p>'\n            % owner1.auto_id)\n\n        data = {\n            'ownerprofile-TOTAL_FORMS': '1',\n            'ownerprofile-INITIAL_FORMS': '1',\n            'ownerprofile-MAX_NUM_FORMS': '1',\n            'ownerprofile-0-owner': six.text_type(owner1.auto_id),\n            'ownerprofile-0-age': '55',\n        }\n        formset = FormSet(data, instance=owner1)\n        self.assertTrue(formset.is_valid())\n        saved = formset.save()\n        self.assertEqual(len(saved), 1)\n        profile1, = saved\n        self.assertEqual(profile1.owner, owner1)\n        self.assertEqual(profile1.age, 55)\n\n    def test_unique_true_enforces_max_num_one(self):\n        # ForeignKey with unique=True should enforce max_num=1\n\n        place = Place.objects.create(pk=1, name='Giordanos', city='Chicago')\n\n        FormSet = inlineformset_factory(Place, Location, can_delete=False)\n        self.assertEqual(FormSet.max_num, 1)\n\n        formset = FormSet(instance=place)\n        self.assertEqual(len(formset.forms), 1)\n        self.assertHTMLEqual(formset.forms[0].as_p(),\n            '<p><label for=\"id_location_set-0-lat\">Lat:</label> <input id=\"id_location_set-0-lat\" type=\"text\" name=\"location_set-0-lat\" maxlength=\"100\" /></p>\\n'\n            '<p><label for=\"id_location_set-0-lon\">Lon:</label> <input id=\"id_location_set-0-lon\" type=\"text\" name=\"location_set-0-lon\" maxlength=\"100\" /><input type=\"hidden\" name=\"location_set-0-place\" value=\"1\" id=\"id_location_set-0-place\" /><input type=\"hidden\" name=\"location_set-0-id\" id=\"id_location_set-0-id\" /></p>')\n\n    def test_foreign_keys_in_parents(self):\n        self.assertEqual(type(_get_foreign_key(Restaurant, Owner)), models.ForeignKey)\n        self.assertEqual(type(_get_foreign_key(MexicanRestaurant, Owner)), models.ForeignKey)\n\n    def test_unique_validation(self):\n        FormSet = modelformset_factory(Product, extra=1)\n        data = {\n            'form-TOTAL_FORMS': '1',\n            'form-INITIAL_FORMS': '0',\n            'form-MAX_NUM_FORMS': '',\n            'form-0-slug': 'car-red',\n        }\n        formset = FormSet(data)\n        self.assertTrue(formset.is_valid())\n        saved = formset.save()\n        self.assertEqual(len(saved), 1)\n        product1, = saved\n        self.assertEqual(product1.slug, 'car-red')\n\n        data = {\n            'form-TOTAL_FORMS': '1',\n            'form-INITIAL_FORMS': '0',\n            'form-MAX_NUM_FORMS': '',\n            'form-0-slug': 'car-red',\n        }\n        formset = FormSet(data)\n        self.assertFalse(formset.is_valid())\n        self.assertEqual(formset.errors, [{'slug': ['Product with this Slug already exists.']}])\n\n    def test_unique_together_validation(self):\n        FormSet = modelformset_factory(Price, extra=1)\n        data = {\n            'form-TOTAL_FORMS': '1',\n            'form-INITIAL_FORMS': '0',\n            'form-MAX_NUM_FORMS': '',\n            'form-0-price': '12.00',\n            'form-0-quantity': '1',\n        }\n        formset = FormSet(data)\n        self.assertTrue(formset.is_valid())\n        saved = formset.save()\n        self.assertEqual(len(saved), 1)\n        price1, = saved\n        self.assertEqual(price1.price, Decimal('12.00'))\n        self.assertEqual(price1.quantity, 1)\n\n        data = {\n            'form-TOTAL_FORMS': '1',\n            'form-INITIAL_FORMS': '0',\n            'form-MAX_NUM_FORMS': '',\n            'form-0-price': '12.00',\n            'form-0-quantity': '1',\n        }\n        formset = FormSet(data)\n        self.assertFalse(formset.is_valid())\n        self.assertEqual(formset.errors, [{'__all__': ['Price with this Price and Quantity already exists.']}])\n\n    def test_unique_together_with_inlineformset_factory(self):\n        # Also see bug #8882.\n\n        repository = Repository.objects.create(name='Test Repo')\n        FormSet = inlineformset_factory(Repository, Revision, extra=1)\n        data = {\n            'revision_set-TOTAL_FORMS': '1',\n            'revision_set-INITIAL_FORMS': '0',\n            'revision_set-MAX_NUM_FORMS': '',\n            'revision_set-0-repository': repository.pk,\n            'revision_set-0-revision': '146239817507f148d448db38840db7c3cbf47c76',\n            'revision_set-0-DELETE': '',\n        }\n        formset = FormSet(data, instance=repository)\n        self.assertTrue(formset.is_valid())\n        saved = formset.save()\n        self.assertEqual(len(saved), 1)\n        revision1, = saved\n        self.assertEqual(revision1.repository, repository)\n        self.assertEqual(revision1.revision, '146239817507f148d448db38840db7c3cbf47c76')\n\n        # attempt to save the same revision against against the same repo.\n        data = {\n            'revision_set-TOTAL_FORMS': '1',\n            'revision_set-INITIAL_FORMS': '0',\n            'revision_set-MAX_NUM_FORMS': '',\n            'revision_set-0-repository': repository.pk,\n            'revision_set-0-revision': '146239817507f148d448db38840db7c3cbf47c76',\n            'revision_set-0-DELETE': '',\n        }\n        formset = FormSet(data, instance=repository)\n        self.assertFalse(formset.is_valid())\n        self.assertEqual(formset.errors, [{'__all__': ['Revision with this Repository and Revision already exists.']}])\n\n        # unique_together with inlineformset_factory with overridden form fields\n        # Also see #9494\n\n        FormSet = inlineformset_factory(Repository, Revision, fields=('revision',), extra=1)\n        data = {\n            'revision_set-TOTAL_FORMS': '1',\n            'revision_set-INITIAL_FORMS': '0',\n            'revision_set-MAX_NUM_FORMS': '',\n            'revision_set-0-repository': repository.pk,\n            'revision_set-0-revision': '146239817507f148d448db38840db7c3cbf47c76',\n            'revision_set-0-DELETE': '',\n        }\n        formset = FormSet(data, instance=repository)\n        self.assertFalse(formset.is_valid())\n\n    def test_callable_defaults(self):\n        # Use of callable defaults (see bug #7975).\n\n        person = Person.objects.create(name='Ringo')\n        FormSet = inlineformset_factory(Person, Membership, can_delete=False, extra=1)\n        formset = FormSet(instance=person)\n\n        # Django will render a hidden field for model fields that have a callable\n        # default. This is required to ensure the value is tested for change correctly\n        # when determine what extra forms have changed to save.\n\n        self.assertEqual(len(formset.forms), 1) # this formset only has one form\n        form = formset.forms[0]\n        now = form.fields['date_joined'].initial()\n        result = form.as_p()\n        result = re.sub(r'\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?', '__DATETIME__', result)\n        self.assertHTMLEqual(result,\n            '<p><label for=\"id_membership_set-0-date_joined\">Date joined:</label> <input type=\"text\" name=\"membership_set-0-date_joined\" value=\"__DATETIME__\" id=\"id_membership_set-0-date_joined\" /><input type=\"hidden\" name=\"initial-membership_set-0-date_joined\" value=\"__DATETIME__\" id=\"initial-membership_set-0-id_membership_set-0-date_joined\" /></p>\\n'\n            '<p><label for=\"id_membership_set-0-karma\">Karma:</label> <input type=\"text\" name=\"membership_set-0-karma\" id=\"id_membership_set-0-karma\" /><input type=\"hidden\" name=\"membership_set-0-person\" value=\"%d\" id=\"id_membership_set-0-person\" /><input type=\"hidden\" name=\"membership_set-0-id\" id=\"id_membership_set-0-id\" /></p>'\n            % person.id)\n\n        # test for validation with callable defaults. Validations rely on hidden fields\n\n        data = {\n            'membership_set-TOTAL_FORMS': '1',\n            'membership_set-INITIAL_FORMS': '0',\n            'membership_set-MAX_NUM_FORMS': '',\n            'membership_set-0-date_joined': six.text_type(now.strftime('%Y-%m-%d %H:%M:%S')),\n            'initial-membership_set-0-date_joined': six.text_type(now.strftime('%Y-%m-%d %H:%M:%S')),\n            'membership_set-0-karma': '',\n        }\n        formset = FormSet(data, instance=person)\n        self.assertTrue(formset.is_valid())\n\n        # now test for when the data changes\n\n        one_day_later = now + datetime.timedelta(days=1)\n        filled_data = {\n            'membership_set-TOTAL_FORMS': '1',\n            'membership_set-INITIAL_FORMS': '0',\n            'membership_set-MAX_NUM_FORMS': '',\n            'membership_set-0-date_joined': six.text_type(one_day_later.strftime('%Y-%m-%d %H:%M:%S')),\n            'initial-membership_set-0-date_joined': six.text_type(now.strftime('%Y-%m-%d %H:%M:%S')),\n            'membership_set-0-karma': '',\n        }\n        formset = FormSet(filled_data, instance=person)\n        self.assertFalse(formset.is_valid())\n\n        # now test with split datetime fields\n\n        class MembershipForm(forms.ModelForm):\n            date_joined = forms.SplitDateTimeField(initial=now)\n            class Meta:\n                model = Membership\n            def __init__(self, **kwargs):\n                super(MembershipForm, self).__init__(**kwargs)\n                self.fields['date_joined'].widget = forms.SplitDateTimeWidget()\n\n        FormSet = inlineformset_factory(Person, Membership, form=MembershipForm, can_delete=False, extra=1)\n        data = {\n            'membership_set-TOTAL_FORMS': '1',\n            'membership_set-INITIAL_FORMS': '0',\n            'membership_set-MAX_NUM_FORMS': '',\n            'membership_set-0-date_joined_0': six.text_type(now.strftime('%Y-%m-%d')),\n            'membership_set-0-date_joined_1': six.text_type(now.strftime('%H:%M:%S')),\n            'initial-membership_set-0-date_joined': six.text_type(now.strftime('%Y-%m-%d %H:%M:%S')),\n            'membership_set-0-karma': '',\n        }\n        formset = FormSet(data, instance=person)\n        self.assertTrue(formset.is_valid())\n\n    def test_inlineformset_factory_with_null_fk(self):\n        # inlineformset_factory tests with fk having null=True. see #9462.\n        # create some data that will exbit the issue\n        team = Team.objects.create(name=\"Red Vipers\")\n        Player(name=\"Timmy\").save()\n        Player(name=\"Bobby\", team=team).save()\n\n        PlayerInlineFormSet = inlineformset_factory(Team, Player)\n        formset = PlayerInlineFormSet()\n        self.assertQuerysetEqual(formset.get_queryset(), [])\n\n        formset = PlayerInlineFormSet(instance=team)\n        players = formset.get_queryset()\n        self.assertEqual(len(players), 1)\n        player1, = players\n        self.assertEqual(player1.team, team)\n        self.assertEqual(player1.name, 'Bobby')\n\n    def test_model_formset_with_custom_pk(self):\n        # a formset for a Model that has a custom primary key that still needs to be\n        # added to the formset automatically\n        FormSet = modelformset_factory(ClassyMexicanRestaurant, fields=[\"tacos_are_yummy\"])\n        self.assertEqual(sorted(FormSet().forms[0].fields.keys()), ['restaurant', 'tacos_are_yummy'])\n\n    def test_prevent_duplicates_from_with_the_same_formset(self):\n        FormSet = modelformset_factory(Product, extra=2)\n        data = {\n            'form-TOTAL_FORMS': 2,\n            'form-INITIAL_FORMS': 0,\n            'form-MAX_NUM_FORMS': '',\n            'form-0-slug': 'red_car',\n            'form-1-slug': 'red_car',\n        }\n        formset = FormSet(data)\n        self.assertFalse(formset.is_valid())\n        self.assertEqual(formset._non_form_errors,\n            ['Please correct the duplicate data for slug.'])\n\n        FormSet = modelformset_factory(Price, extra=2)\n        data = {\n            'form-TOTAL_FORMS': 2,\n            'form-INITIAL_FORMS': 0,\n            'form-MAX_NUM_FORMS': '',\n            'form-0-price': '25',\n            'form-0-quantity': '7',\n            'form-1-price': '25',\n            'form-1-quantity': '7',\n        }\n        formset = FormSet(data)\n        self.assertFalse(formset.is_valid())\n        self.assertEqual(formset._non_form_errors,\n            ['Please correct the duplicate data for price and quantity, which must be unique.'])\n\n        # Only the price field is specified, this should skip any unique checks since\n        # the unique_together is not fulfilled. This will fail with a KeyError if broken.\n        FormSet = modelformset_factory(Price, fields=(\"price\",), extra=2)\n        data = {\n            'form-TOTAL_FORMS': '2',\n            'form-INITIAL_FORMS': '0',\n            'form-MAX_NUM_FORMS': '',\n            'form-0-price': '24',\n            'form-1-price': '24',\n        }\n        formset = FormSet(data)\n        self.assertTrue(formset.is_valid())\n\n        FormSet = inlineformset_factory(Author, Book, extra=0)\n        author = Author.objects.create(pk=1, name='Charles Baudelaire')\n        book1 = Book.objects.create(pk=1, author=author, title='Les Paradis Artificiels')\n        book2 = Book.objects.create(pk=2, author=author, title='Les Fleurs du Mal')\n        book3 = Book.objects.create(pk=3, author=author, title='Flowers of Evil')\n\n        book_ids = author.book_set.order_by('id').values_list('id', flat=True)\n        data = {\n            'book_set-TOTAL_FORMS': '2',\n            'book_set-INITIAL_FORMS': '2',\n            'book_set-MAX_NUM_FORMS': '',\n\n            'book_set-0-title': 'The 2008 Election',\n            'book_set-0-author': str(author.id),\n            'book_set-0-id': str(book_ids[0]),\n\n            'book_set-1-title': 'The 2008 Election',\n            'book_set-1-author': str(author.id),\n            'book_set-1-id': str(book_ids[1]),\n        }\n        formset = FormSet(data=data, instance=author)\n        self.assertFalse(formset.is_valid())\n        self.assertEqual(formset._non_form_errors,\n            ['Please correct the duplicate data for title.'])\n        self.assertEqual(formset.errors,\n            [{}, {'__all__': ['Please correct the duplicate values below.']}])\n\n        FormSet = modelformset_factory(Post, extra=2)\n        data = {\n            'form-TOTAL_FORMS': '2',\n            'form-INITIAL_FORMS': '0',\n            'form-MAX_NUM_FORMS': '',\n\n            'form-0-title': 'blah',\n            'form-0-slug': 'Morning',\n            'form-0-subtitle': 'foo',\n            'form-0-posted': '2009-01-01',\n            'form-1-title': 'blah',\n            'form-1-slug': 'Morning in Prague',\n            'form-1-subtitle': 'rawr',\n            'form-1-posted': '2009-01-01'\n        }\n        formset = FormSet(data)\n        self.assertFalse(formset.is_valid())\n        self.assertEqual(formset._non_form_errors,\n            ['Please correct the duplicate data for title which must be unique for the date in posted.'])\n        self.assertEqual(formset.errors,\n            [{}, {'__all__': ['Please correct the duplicate values below.']}])\n\n        data = {\n            'form-TOTAL_FORMS': '2',\n            'form-INITIAL_FORMS': '0',\n            'form-MAX_NUM_FORMS': '',\n\n            'form-0-title': 'foo',\n            'form-0-slug': 'Morning in Prague',\n            'form-0-subtitle': 'foo',\n            'form-0-posted': '2009-01-01',\n            'form-1-title': 'blah',\n            'form-1-slug': 'Morning in Prague',\n            'form-1-subtitle': 'rawr',\n            'form-1-posted': '2009-08-02'\n        }\n        formset = FormSet(data)\n        self.assertFalse(formset.is_valid())\n        self.assertEqual(formset._non_form_errors,\n            ['Please correct the duplicate data for slug which must be unique for the year in posted.'])\n\n        data = {\n            'form-TOTAL_FORMS': '2',\n            'form-INITIAL_FORMS': '0',\n            'form-MAX_NUM_FORMS': '',\n\n            'form-0-title': 'foo',\n            'form-0-slug': 'Morning in Prague',\n            'form-0-subtitle': 'rawr',\n            'form-0-posted': '2008-08-01',\n            'form-1-title': 'blah',\n            'form-1-slug': 'Prague',\n            'form-1-subtitle': 'rawr',\n            'form-1-posted': '2009-08-02'\n        }\n        formset = FormSet(data)\n        self.assertFalse(formset.is_valid())\n        self.assertEqual(formset._non_form_errors,\n            ['Please correct the duplicate data for subtitle which must be unique for the month in posted.'])\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/model_inheritance/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/model_inheritance/models.py",
    "content": "\"\"\"\nXX. Model inheritance\n\nModel inheritance exists in two varieties:\n    - abstract base classes which are a way of specifying common\n      information inherited by the subclasses. They don't exist as a separate\n      model.\n    - non-abstract base classes (the default), which are models in their own\n      right with their own database tables and everything. Their subclasses\n      have references back to them, created automatically.\n\nBoth styles are demonstrated here.\n\"\"\"\nfrom __future__ import unicode_literals\n\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n#\n# Abstract base classes\n#\n\n@python_2_unicode_compatible\nclass CommonInfo(models.Model):\n    name = models.CharField(max_length=50)\n    age = models.PositiveIntegerField()\n\n    class Meta:\n        abstract = True\n        ordering = ['name']\n\n    def __str__(self):\n        return '%s %s' % (self.__class__.__name__, self.name)\n\nclass Worker(CommonInfo):\n    job = models.CharField(max_length=50)\n\nclass Student(CommonInfo):\n    school_class = models.CharField(max_length=10)\n\n    class Meta:\n        pass\n\nclass StudentWorker(Student, Worker):\n    pass\n\n#\n# Abstract base classes with related models\n#\n\nclass Post(models.Model):\n    title = models.CharField(max_length=50)\n\n@python_2_unicode_compatible\nclass Attachment(models.Model):\n    post = models.ForeignKey(Post, related_name='attached_%(class)s_set')\n    content = models.TextField()\n\n    class Meta:\n        abstract = True\n\n    def __str__(self):\n        return self.content\n\nclass Comment(Attachment):\n    is_spam = models.BooleanField()\n\nclass Link(Attachment):\n    url = models.URLField()\n\n#\n# Multi-table inheritance\n#\n\n@python_2_unicode_compatible\nclass Chef(models.Model):\n    name = models.CharField(max_length=50)\n\n    def __str__(self):\n        return \"%s the chef\" % self.name\n\n@python_2_unicode_compatible\nclass Place(models.Model):\n    name = models.CharField(max_length=50)\n    address = models.CharField(max_length=80)\n\n    def __str__(self):\n        return \"%s the place\" % self.name\n\nclass Rating(models.Model):\n    rating = models.IntegerField(null=True, blank=True)\n\n    class Meta:\n        abstract = True\n        ordering = ['-rating']\n\n@python_2_unicode_compatible\nclass Restaurant(Place, Rating):\n    serves_hot_dogs = models.BooleanField()\n    serves_pizza = models.BooleanField()\n    chef = models.ForeignKey(Chef, null=True, blank=True)\n\n    class Meta(Rating.Meta):\n        db_table = 'my_restaurant'\n\n    def __str__(self):\n        return \"%s the restaurant\" % self.name\n\n@python_2_unicode_compatible\nclass ItalianRestaurant(Restaurant):\n    serves_gnocchi = models.BooleanField()\n\n    def __str__(self):\n        return \"%s the italian restaurant\" % self.name\n\n@python_2_unicode_compatible\nclass Supplier(Place):\n    customers = models.ManyToManyField(Restaurant, related_name='provider')\n\n    def __str__(self):\n        return \"%s the supplier\" % self.name\n\n@python_2_unicode_compatible\nclass ParkingLot(Place):\n    # An explicit link to the parent (we can control the attribute name).\n    parent = models.OneToOneField(Place, primary_key=True, parent_link=True)\n    main_site = models.ForeignKey(Place, related_name='lot')\n\n    def __str__(self):\n        return \"%s the parking lot\" % self.name\n\n#\n# Abstract base classes with related models where the sub-class has the\n# same name in a different app and inherits from the same abstract base\n# class.\n# NOTE: The actual API tests for the following classes are in\n#       model_inheritance_same_model_name/models.py - They are defined\n#       here in order to have the name conflict between apps\n#\n\nclass Title(models.Model):\n    title = models.CharField(max_length=50)\n\nclass NamedURL(models.Model):\n    title = models.ForeignKey(Title, related_name='attached_%(app_label)s_%(class)s_set')\n    url = models.URLField()\n\n    class Meta:\n        abstract = True\n\n@python_2_unicode_compatible\nclass Copy(NamedURL):\n    content = models.TextField()\n\n    def __str__(self):\n        return self.content\n\nclass Mixin(object):\n    def __init__(self):\n        self.other_attr = 1\n        super(Mixin, self).__init__()\n\nclass MixinModel(models.Model, Mixin):\n    pass\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/model_inheritance/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom operator import attrgetter\n\nfrom django.core.exceptions import FieldError\nfrom django.test import TestCase\nfrom django.utils import six\n\nfrom .models import (Chef, CommonInfo, ItalianRestaurant, ParkingLot, Place,\n    Post, Restaurant, Student, StudentWorker, Supplier, Worker, MixinModel)\n\n\nclass ModelInheritanceTests(TestCase):\n    def test_abstract(self):\n        # The Student and Worker models both have 'name' and 'age' fields on\n        # them and inherit the __unicode__() method, just as with normal Python\n        # subclassing. This is useful if you want to factor out common\n        # information for programming purposes, but still completely\n        # independent separate models at the database level.\n        w1 = Worker.objects.create(name=\"Fred\", age=35, job=\"Quarry worker\")\n        w2 = Worker.objects.create(name=\"Barney\", age=34, job=\"Quarry worker\")\n\n        s = Student.objects.create(name=\"Pebbles\", age=5, school_class=\"1B\")\n\n        self.assertEqual(six.text_type(w1), \"Worker Fred\")\n        self.assertEqual(six.text_type(s), \"Student Pebbles\")\n\n        # The children inherit the Meta class of their parents (if they don't\n        # specify their own).\n        self.assertQuerysetEqual(\n            Worker.objects.values(\"name\"), [\n                {\"name\": \"Barney\"},\n                {\"name\": \"Fred\"},\n            ],\n            lambda o: o\n        )\n\n        # Since Student does not subclass CommonInfo's Meta, it has the effect\n        # of completely overriding it. So ordering by name doesn't take place\n        # for Students.\n        self.assertEqual(Student._meta.ordering, [])\n\n        # However, the CommonInfo class cannot be used as a normal model (it\n        # doesn't exist as a model).\n        self.assertRaises(AttributeError, lambda: CommonInfo.objects.all())\n\n        # A StudentWorker which does not exist is both a Student and Worker\n        # which does not exist.\n        self.assertRaises(Student.DoesNotExist,\n            StudentWorker.objects.get, pk=12321321\n        )\n        self.assertRaises(Worker.DoesNotExist,\n            StudentWorker.objects.get, pk=12321321\n        )\n\n        # MultipleObjectsReturned is also inherited.\n        # This is written out \"long form\", rather than using __init__/create()\n        # because of a bug with diamond inheritance (#10808)\n        sw1 = StudentWorker()\n        sw1.name = \"Wilma\"\n        sw1.age = 35\n        sw1.save()\n        sw2 = StudentWorker()\n        sw2.name = \"Betty\"\n        sw2.age = 24\n        sw2.save()\n\n        self.assertRaises(Student.MultipleObjectsReturned,\n            StudentWorker.objects.get, pk__lt=sw2.pk + 100\n        )\n        self.assertRaises(Worker.MultipleObjectsReturned,\n            StudentWorker.objects.get, pk__lt=sw2.pk + 100\n        )\n\n    def test_multiple_table(self):\n        post = Post.objects.create(title=\"Lorem Ipsum\")\n        # The Post model has distinct accessors for the Comment and Link models.\n        post.attached_comment_set.create(content=\"Save $ on V1agr@\", is_spam=True)\n        post.attached_link_set.create(\n            content=\"The Web framework for perfections with deadlines.\",\n            url=\"http://www.djangoproject.com/\"\n        )\n\n        # The Post model doesn't have an attribute called\n        # 'attached_%(class)s_set'.\n        self.assertRaises(AttributeError,\n            getattr, post, \"attached_%(class)s_set\"\n        )\n\n        # The Place/Restaurant/ItalianRestaurant models all exist as\n        # independent models. However, the subclasses also have transparent\n        # access to the fields of their ancestors.\n        # Create a couple of Places.\n        p1 = Place.objects.create(name=\"Master Shakes\", address=\"666 W. Jersey\")\n        p2 = Place.objects.create(name=\"Ace Harware\", address=\"1013 N. Ashland\")\n\n        # Test constructor for Restaurant.\n        r = Restaurant.objects.create(\n            name=\"Demon Dogs\",\n            address=\"944 W. Fullerton\",\n            serves_hot_dogs=True,\n            serves_pizza=False,\n            rating=2\n        )\n        # Test the constructor for ItalianRestaurant.\n        c = Chef.objects.create(name=\"Albert\")\n        ir = ItalianRestaurant.objects.create(\n            name=\"Ristorante Miron\",\n            address=\"1234 W. Ash\",\n            serves_hot_dogs=False,\n            serves_pizza=False,\n            serves_gnocchi=True,\n            rating=4,\n            chef=c\n        )\n        self.assertQuerysetEqual(\n            ItalianRestaurant.objects.filter(address=\"1234 W. Ash\"), [\n                \"Ristorante Miron\",\n            ],\n            attrgetter(\"name\")\n        )\n        ir.address = \"1234 W. Elm\"\n        ir.save()\n        self.assertQuerysetEqual(\n            ItalianRestaurant.objects.filter(address=\"1234 W. Elm\"), [\n                \"Ristorante Miron\",\n            ],\n            attrgetter(\"name\")\n        )\n\n        # Make sure Restaurant and ItalianRestaurant have the right fields in\n        # the right order.\n        self.assertEqual(\n            [f.name for f in Restaurant._meta.fields],\n            [\"id\", \"name\", \"address\", \"place_ptr\", \"rating\", \"serves_hot_dogs\", \"serves_pizza\", \"chef\"]\n        )\n        self.assertEqual(\n            [f.name for f in ItalianRestaurant._meta.fields],\n            [\"id\", \"name\", \"address\", \"place_ptr\", \"rating\", \"serves_hot_dogs\", \"serves_pizza\", \"chef\", \"restaurant_ptr\", \"serves_gnocchi\"],\n        )\n        self.assertEqual(Restaurant._meta.ordering, [\"-rating\"])\n\n        # Even though p.supplier for a Place 'p' (a parent of a Supplier), a\n        # Restaurant object cannot access that reverse relation, since it's not\n        # part of the Place-Supplier Hierarchy.\n        self.assertQuerysetEqual(Place.objects.filter(supplier__name=\"foo\"), [])\n        self.assertRaises(FieldError,\n            Restaurant.objects.filter, supplier__name=\"foo\"\n        )\n\n        # Parent fields can be used directly in filters on the child model.\n        self.assertQuerysetEqual(\n            Restaurant.objects.filter(name=\"Demon Dogs\"), [\n                \"Demon Dogs\",\n            ],\n            attrgetter(\"name\")\n        )\n        self.assertQuerysetEqual(\n            ItalianRestaurant.objects.filter(address=\"1234 W. Elm\"), [\n                \"Ristorante Miron\",\n            ],\n            attrgetter(\"name\")\n        )\n\n        # Filters against the parent model return objects of the parent's type.\n        p = Place.objects.get(name=\"Demon Dogs\")\n        self.assertIs(type(p), Place)\n\n        # Since the parent and child are linked by an automatically created\n        # OneToOneField, you can get from the parent to the child by using the\n        # child's name.\n        self.assertEqual(\n            p.restaurant, Restaurant.objects.get(name=\"Demon Dogs\")\n        )\n        self.assertEqual(\n            Place.objects.get(name=\"Ristorante Miron\").restaurant.italianrestaurant,\n            ItalianRestaurant.objects.get(name=\"Ristorante Miron\")\n        )\n        self.assertEqual(\n            Restaurant.objects.get(name=\"Ristorante Miron\").italianrestaurant,\n            ItalianRestaurant.objects.get(name=\"Ristorante Miron\")\n        )\n\n        # This won't work because the Demon Dogs restaurant is not an Italian\n        # restaurant.\n        self.assertRaises(ItalianRestaurant.DoesNotExist,\n            lambda: p.restaurant.italianrestaurant\n        )\n        # An ItalianRestaurant which does not exist is also a Place which does\n        # not exist.\n        self.assertRaises(Place.DoesNotExist,\n            ItalianRestaurant.objects.get, name=\"The Noodle Void\"\n        )\n        # MultipleObjectsReturned is also inherited.\n        self.assertRaises(Place.MultipleObjectsReturned,\n            Restaurant.objects.get, id__lt=12321\n        )\n\n        # Related objects work just as they normally do.\n        s1 = Supplier.objects.create(name=\"Joe's Chickens\", address=\"123 Sesame St\")\n        s1.customers = [r, ir]\n        s2 = Supplier.objects.create(name=\"Luigi's Pasta\", address=\"456 Sesame St\")\n        s2.customers = [ir]\n\n        # This won't work because the Place we select is not a Restaurant (it's\n        # a Supplier).\n        p = Place.objects.get(name=\"Joe's Chickens\")\n        self.assertRaises(Restaurant.DoesNotExist,\n            lambda: p.restaurant\n        )\n\n        self.assertEqual(p.supplier, s1)\n        self.assertQuerysetEqual(\n            ir.provider.order_by(\"-name\"), [\n                \"Luigi's Pasta\",\n                \"Joe's Chickens\"\n            ],\n            attrgetter(\"name\")\n        )\n        self.assertQuerysetEqual(\n            Restaurant.objects.filter(provider__name__contains=\"Chickens\"), [\n                \"Ristorante Miron\",\n                \"Demon Dogs\",\n            ],\n            attrgetter(\"name\")\n        )\n        self.assertQuerysetEqual(\n            ItalianRestaurant.objects.filter(provider__name__contains=\"Chickens\"), [\n                \"Ristorante Miron\",\n            ],\n            attrgetter(\"name\"),\n        )\n\n        park1 = ParkingLot.objects.create(\n            name=\"Main St\", address=\"111 Main St\", main_site=s1\n        )\n        park2 = ParkingLot.objects.create(\n            name=\"Well Lit\", address=\"124 Sesame St\", main_site=ir\n        )\n\n        self.assertEqual(\n            Restaurant.objects.get(lot__name=\"Well Lit\").name,\n            \"Ristorante Miron\"\n        )\n\n        # The update() command can update fields in parent and child classes at\n        # once (although it executed multiple SQL queries to do so).\n        rows = Restaurant.objects.filter(\n            serves_hot_dogs=True, name__contains=\"D\"\n        ).update(\n            name=\"Demon Puppies\", serves_hot_dogs=False\n        )\n        self.assertEqual(rows, 1)\n\n        r1 = Restaurant.objects.get(pk=r.pk)\n        self.assertFalse(r1.serves_hot_dogs)\n        self.assertEqual(r1.name, \"Demon Puppies\")\n\n        # The values() command also works on fields from parent models.\n        self.assertQuerysetEqual(\n            ItalianRestaurant.objects.values(\"name\", \"rating\"), [\n                {\"rating\": 4, \"name\": \"Ristorante Miron\"}\n            ],\n            lambda o: o\n        )\n\n        # select_related works with fields from the parent object as if they\n        # were a normal part of the model.\n        self.assertNumQueries(2,\n            lambda: ItalianRestaurant.objects.all()[0].chef\n        )\n        self.assertNumQueries(1,\n            lambda: ItalianRestaurant.objects.select_related(\"chef\")[0].chef\n        )\n\n    def test_mixin_init(self):\n        m = MixinModel()\n        self.assertEqual(m.other_attr, 1)\n\n    def test_update_query_counts(self):\n        \"\"\"\n        Test that update queries do not generate non-necessary queries.\n        Refs #18304.\n        \"\"\"\n        c = Chef.objects.create(name=\"Albert\")\n        ir = ItalianRestaurant.objects.create(\n            name=\"Ristorante Miron\",\n            address=\"1234 W. Ash\",\n            serves_hot_dogs=False,\n            serves_pizza=False,\n            serves_gnocchi=True,\n            rating=4,\n            chef=c\n        )\n        with self.assertNumQueries(6):\n            ir.save()\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/model_inheritance_same_model_name/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/model_inheritance_same_model_name/models.py",
    "content": "\"\"\"\nXX. Model inheritance\n\nModel inheritance across apps can result in models with the same name resulting\nin the need for an %(app_label)s format string. This app specifically tests\nthis feature by redefining the Copy model from model_inheritance/models.py\n\"\"\"\n\nfrom __future__ import absolute_import\n\nfrom django.db import models\n\nfrom ..model_inheritance.models import NamedURL\nfrom django.utils.encoding import python_2_unicode_compatible\n\n#\n# Abstract base classes with related models\n#\n@python_2_unicode_compatible\nclass Copy(NamedURL):\n    content = models.TextField()\n\n    def __str__(self):\n        return self.content\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/model_inheritance_same_model_name/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom django.test import TestCase\n\nfrom ..model_inheritance.models import Title\n\n\nclass InheritanceSameModelNameTests(TestCase):\n\n    def setUp(self):\n        # The Title model has distinct accessors for both\n        # model_inheritance.Copy and model_inheritance_same_model_name.Copy\n        # models.\n        self.title = Title.objects.create(title='Lorem Ipsum')\n\n    def test_inheritance_related_name(self):\n        from modeltests.model_inheritance.models import Copy\n        self.assertEqual(\n            self.title.attached_model_inheritance_copy_set.create(\n                content='Save $ on V1agr@',\n                url='http://v1agra.com/',\n                title='V1agra is spam',\n            ), Copy.objects.get(content='Save $ on V1agr@'))\n\n    def test_inheritance_with_same_model_name(self):\n        from modeltests.model_inheritance_same_model_name.models import Copy\n        self.assertEqual(\n            self.title.attached_model_inheritance_same_model_name_copy_set.create(\n                content='The Web framework for perfectionists with deadlines.',\n                url='http://www.djangoproject.com/',\n                title='Django Rocks'\n            ), Copy.objects.get(content='The Web framework for perfectionists with deadlines.'))\n\n    def test_related_name_attribute_exists(self):\n        # The Post model doesn't have an attribute called 'attached_%(app_label)s_%(class)s_set'.\n        self.assertEqual(hasattr(self.title, 'attached_%(app_label)s_%(class)s_set'), False)\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/model_package/__init__.py",
    "content": "\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/model_package/models/__init__.py",
    "content": "# Import all the models from subpackages\nfrom __future__ import absolute_import\n\nfrom .article import Article\nfrom .publication import Publication\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/model_package/models/article.py",
    "content": "from django.contrib.sites.models import Site\nfrom django.db import models\n\n\nclass Article(models.Model):\n    sites = models.ManyToManyField(Site)\n    headline = models.CharField(max_length=100)\n    publications = models.ManyToManyField(\"model_package.Publication\", null=True, blank=True,)\n\n    class Meta:\n        app_label = 'model_package'\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/model_package/models/publication.py",
    "content": "from django.db import models\n\n\nclass Publication(models.Model):\n    title = models.CharField(max_length=30)\n\n    class Meta:\n        app_label = 'model_package'\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/model_package/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom django.contrib.sites.models import Site\nfrom django.db import models\nfrom django.test import TestCase\n\nfrom .models.publication import Publication\nfrom .models.article import Article\n\n\nclass Advertisment(models.Model):\n    customer = models.CharField(max_length=100)\n    publications = models.ManyToManyField(\n        \"model_package.Publication\", null=True, blank=True\n    )\n\n    class Meta:\n        app_label = 'model_package'\n\n\nclass ModelPackageTests(TestCase):\n    def test_model_packages(self):\n        p = Publication.objects.create(title=\"FooBar\")\n\n        current_site = Site.objects.get_current()\n        self.assertEqual(current_site.domain, \"example.com\")\n\n        # Regression for #12168: models split into subpackages still get M2M\n        # tables\n        a = Article.objects.create(headline=\"a foo headline\")\n        a.publications.add(p)\n        a.sites.add(current_site)\n\n        a = Article.objects.get(id=a.pk)\n        self.assertEqual(a.id, a.pk)\n        self.assertEqual(a.sites.count(), 1)\n\n        # Regression for #12245 - Models can exist in the test package, too\n        ad = Advertisment.objects.create(customer=\"Lawrence Journal-World\")\n        ad.publications.add(p)\n\n        ad = Advertisment.objects.get(id=ad.pk)\n        self.assertEqual(ad.publications.count(), 1)\n\n        # Regression for #12386 - field names on the autogenerated intermediate\n        # class that are specified as dotted strings don't retain any path\n        # component for the field or column name\n        self.assertEqual(\n            Article.publications.through._meta.fields[1].name, 'article'\n        )\n        self.assertEqual(\n            Article.publications.through._meta.fields[1].get_attname_column(),\n            ('article_id', 'article_id')\n        )\n        self.assertEqual(\n            Article.publications.through._meta.fields[2].name, 'publication'\n        )\n        self.assertEqual(\n            Article.publications.through._meta.fields[2].get_attname_column(),\n            ('publication_id', 'publication_id')\n        )\n\n        # The oracle backend truncates the name to 'model_package_article_publ233f'.\n        self.assertTrue(\n            Article._meta.get_field('publications').m2m_db_table() in ('model_package_article_publications', 'model_package_article_publ233f')\n        )\n\n        self.assertEqual(\n            Article._meta.get_field('publications').m2m_column_name(), 'article_id'\n        )\n        self.assertEqual(\n            Article._meta.get_field('publications').m2m_reverse_name(),\n            'publication_id'\n        )\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/mutually_referential/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/mutually_referential/models.py",
    "content": "\"\"\"\n24. Mutually referential many-to-one relationships\n\nStrings can be used instead of model literals to set up \"lazy\" relations.\n\"\"\"\n\nfrom django.db import models\n\n\nclass Parent(models.Model):\n    name = models.CharField(max_length=100)\n\n    # Use a simple string for forward declarations.\n    bestchild = models.ForeignKey(\"Child\", null=True, related_name=\"favoured_by\")\n\nclass Child(models.Model):\n    name = models.CharField(max_length=100)\n\n    # You can also explicitally specify the related app.\n    parent = models.ForeignKey(\"mutually_referential.Parent\")\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/mutually_referential/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom django.test import TestCase\n\nfrom .models import Parent\n\n\nclass MutuallyReferentialTests(TestCase):\n\n    def test_mutually_referential(self):\n        # Create a Parent\n        q = Parent(name='Elizabeth')\n        q.save()\n\n        # Create some children\n        c = q.child_set.create(name='Charles')\n        e = q.child_set.create(name='Edward')\n\n        # Set the best child\n        # No assertion require here; if basic assignment and\n        # deletion works, the test passes.\n        q.bestchild = c\n        q.save()\n        q.delete()\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/one_to_one/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/one_to_one/models.py",
    "content": "\"\"\"\n10. One-to-one relationships\n\nTo define a one-to-one relationship, use ``OneToOneField()``.\n\nIn this example, a ``Place`` optionally can be a ``Restaurant``.\n\"\"\"\nfrom __future__ import unicode_literals\n\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n@python_2_unicode_compatible\nclass Place(models.Model):\n    name = models.CharField(max_length=50)\n    address = models.CharField(max_length=80)\n\n    def __str__(self):\n        return \"%s the place\" % self.name\n\n@python_2_unicode_compatible\nclass Restaurant(models.Model):\n    place = models.OneToOneField(Place, primary_key=True)\n    serves_hot_dogs = models.BooleanField()\n    serves_pizza = models.BooleanField()\n\n    def __str__(self):\n        return \"%s the restaurant\" % self.place.name\n\n@python_2_unicode_compatible\nclass Waiter(models.Model):\n    restaurant = models.ForeignKey(Restaurant)\n    name = models.CharField(max_length=50)\n\n    def __str__(self):\n        return \"%s the waiter at %s\" % (self.name, self.restaurant)\n\nclass ManualPrimaryKey(models.Model):\n    primary_key = models.CharField(max_length=10, primary_key=True)\n    name = models.CharField(max_length = 50)\n\nclass RelatedModel(models.Model):\n    link = models.OneToOneField(ManualPrimaryKey)\n    name = models.CharField(max_length = 50)\n\n@python_2_unicode_compatible\nclass MultiModel(models.Model):\n    link1 = models.OneToOneField(Place)\n    link2 = models.OneToOneField(ManualPrimaryKey)\n    name = models.CharField(max_length=50)\n\n    def __str__(self):\n        return \"Multimodel %s\" % self.name\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/one_to_one/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom django.db import transaction, IntegrityError\nfrom django.test import TestCase\n\nfrom .models import (Place, Restaurant, Waiter, ManualPrimaryKey, RelatedModel,\n    MultiModel)\n\nclass OneToOneTests(TestCase):\n\n    def setUp(self):\n        self.p1 = Place(name='Demon Dogs', address='944 W. Fullerton')\n        self.p1.save()\n        self.p2 = Place(name='Ace Hardware', address='1013 N. Ashland')\n        self.p2.save()\n        self.r = Restaurant(place=self.p1, serves_hot_dogs=True, serves_pizza=False)\n        self.r.save()\n\n    def test_getter(self):\n        # A Restaurant can access its place.\n        self.assertEqual(repr(self.r.place), '<Place: Demon Dogs the place>')\n        # A Place can access its restaurant, if available.\n        self.assertEqual(repr(self.p1.restaurant), '<Restaurant: Demon Dogs the restaurant>')\n        # p2 doesn't have an associated restaurant.\n        self.assertRaises(Restaurant.DoesNotExist, getattr, self.p2, 'restaurant')\n\n    def test_setter(self):\n        # Set the place using assignment notation. Because place is the primary\n        # key on Restaurant, the save will create a new restaurant\n        self.r.place = self.p2\n        self.r.save()\n        self.assertEqual(repr(self.p2.restaurant), '<Restaurant: Ace Hardware the restaurant>')\n        self.assertEqual(repr(self.r.place), '<Place: Ace Hardware the place>')\n        self.assertEqual(self.p2.pk, self.r.pk)\n        # Set the place back again, using assignment in the reverse direction.\n        self.p1.restaurant = self.r\n        self.assertEqual(repr(self.p1.restaurant), '<Restaurant: Demon Dogs the restaurant>')\n        r = Restaurant.objects.get(pk=self.p1.id)\n        self.assertEqual(repr(r.place), '<Place: Demon Dogs the place>')\n\n    def test_manager_all(self):\n        # Restaurant.objects.all() just returns the Restaurants, not the Places.\n        self.assertQuerysetEqual(Restaurant.objects.all(), [\n            '<Restaurant: Demon Dogs the restaurant>',\n        ])\n        # Place.objects.all() returns all Places, regardless of whether they\n        # have Restaurants.\n        self.assertQuerysetEqual(Place.objects.order_by('name'), [\n            '<Place: Ace Hardware the place>',\n            '<Place: Demon Dogs the place>',\n        ])\n\n    def test_manager_get(self):\n        def assert_get_restaurant(**params):\n            self.assertEqual(repr(Restaurant.objects.get(**params)),\n                             '<Restaurant: Demon Dogs the restaurant>')\n        assert_get_restaurant(place__id__exact=self.p1.pk)\n        assert_get_restaurant(place__id=self.p1.pk)\n        assert_get_restaurant(place__exact=self.p1.pk)\n        assert_get_restaurant(place__exact=self.p1)\n        assert_get_restaurant(place=self.p1.pk)\n        assert_get_restaurant(place=self.p1)\n        assert_get_restaurant(pk=self.p1.pk)\n        assert_get_restaurant(place__pk__exact=self.p1.pk)\n        assert_get_restaurant(place__pk=self.p1.pk)\n        assert_get_restaurant(place__name__startswith=\"Demon\")\n\n        def assert_get_place(**params):\n            self.assertEqual(repr(Place.objects.get(**params)),\n                             '<Place: Demon Dogs the place>')\n        assert_get_place(restaurant__place__exact=self.p1.pk)\n        assert_get_place(restaurant__place__exact=self.p1)\n        assert_get_place(restaurant__place__pk=self.p1.pk)\n        assert_get_place(restaurant__exact=self.p1.pk)\n        assert_get_place(restaurant__exact=self.r)\n        assert_get_place(restaurant__pk=self.p1.pk)\n        assert_get_place(restaurant=self.p1.pk)\n        assert_get_place(restaurant=self.r)\n        assert_get_place(id__exact=self.p1.pk)\n        assert_get_place(pk=self.p1.pk)\n\n    def test_foreign_key(self):\n        # Add a Waiter to the Restaurant.\n        w = self.r.waiter_set.create(name='Joe')\n        w.save()\n        self.assertEqual(repr(w), '<Waiter: Joe the waiter at Demon Dogs the restaurant>')\n        # Query the waiters\n        def assert_filter_waiters(**params):\n            self.assertQuerysetEqual(Waiter.objects.filter(**params), [\n                '<Waiter: Joe the waiter at Demon Dogs the restaurant>'\n            ])\n        assert_filter_waiters(restaurant__place__exact=self.p1.pk)\n        assert_filter_waiters(restaurant__place__exact=self.p1)\n        assert_filter_waiters(restaurant__place__pk=self.p1.pk)\n        assert_filter_waiters(restaurant__exact=self.p1.pk)\n        assert_filter_waiters(restaurant__exact=self.p1)\n        assert_filter_waiters(restaurant__pk=self.p1.pk)\n        assert_filter_waiters(restaurant=self.p1.pk)\n        assert_filter_waiters(restaurant=self.r)\n        assert_filter_waiters(id__exact=self.p1.pk)\n        assert_filter_waiters(pk=self.p1.pk)\n        # Delete the restaurant; the waiter should also be removed\n        r = Restaurant.objects.get(pk=self.p1.pk)\n        r.delete()\n        self.assertEqual(Waiter.objects.count(), 0)\n\n    def test_multiple_o2o(self):\n        # One-to-one fields still work if you create your own primary key\n        o1 = ManualPrimaryKey(primary_key=\"abc123\", name=\"primary\")\n        o1.save()\n        o2 = RelatedModel(link=o1, name=\"secondary\")\n        o2.save()\n\n        # You can have multiple one-to-one fields on a model, too.\n        x1 = MultiModel(link1=self.p1, link2=o1, name=\"x1\")\n        x1.save()\n        self.assertEqual(repr(o1.multimodel), '<MultiModel: Multimodel x1>')\n        # This will fail because each one-to-one field must be unique (and\n        # link2=o1 was used for x1, above).\n        sid = transaction.savepoint()\n        mm = MultiModel(link1=self.p2, link2=o1, name=\"x1\")\n        self.assertRaises(IntegrityError, mm.save)\n        transaction.savepoint_rollback(sid)\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/or_lookups/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/or_lookups/models.py",
    "content": "\"\"\"\n19. OR lookups\n\nTo perform an OR lookup, or a lookup that combines ANDs and ORs, combine\n``QuerySet`` objects using ``&`` and ``|`` operators.\n\nAlternatively, use positional arguments, and pass one or more expressions of\nclauses using the variable ``django.db.models.Q`` (or any object with an\n``add_to_query`` method).\n\"\"\"\n\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n@python_2_unicode_compatible\nclass Article(models.Model):\n    headline = models.CharField(max_length=50)\n    pub_date = models.DateTimeField()\n\n    class Meta:\n       ordering = ('pub_date',)\n\n    def __str__(self):\n        return self.headline\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/or_lookups/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom datetime import datetime\nfrom operator import attrgetter\n\nfrom django.db.models import Q\nfrom django.test import TestCase\n\nfrom .models import Article\n\n\nclass OrLookupsTests(TestCase):\n\n    def setUp(self):\n        self.a1 = Article.objects.create(\n            headline='Hello', pub_date=datetime(2005, 11, 27)\n        ).pk\n        self.a2 = Article.objects.create(\n            headline='Goodbye', pub_date=datetime(2005, 11, 28)\n        ).pk\n        self.a3 = Article.objects.create(\n            headline='Hello and goodbye', pub_date=datetime(2005, 11, 29)\n        ).pk\n\n    def test_filter_or(self):\n        self.assertQuerysetEqual(\n            Article.objects.filter(headline__startswith='Hello') |  Article.objects.filter(headline__startswith='Goodbye'), [\n                'Hello',\n                'Goodbye',\n                'Hello and goodbye'\n            ],\n            attrgetter(\"headline\")\n        )\n\n        self.assertQuerysetEqual(\n            Article.objects.filter(headline__contains='Hello') | Article.objects.filter(headline__contains='bye'), [\n                'Hello',\n                'Goodbye',\n                'Hello and goodbye'\n            ],\n            attrgetter(\"headline\")\n        )\n\n        self.assertQuerysetEqual(\n            Article.objects.filter(headline__iexact='Hello') | Article.objects.filter(headline__contains='ood'), [\n                'Hello',\n                'Goodbye',\n                'Hello and goodbye'\n            ],\n            attrgetter(\"headline\")\n        )\n\n        self.assertQuerysetEqual(\n            Article.objects.filter(Q(headline__startswith='Hello') | Q(headline__startswith='Goodbye')), [\n                'Hello',\n                'Goodbye',\n                'Hello and goodbye'\n            ],\n            attrgetter(\"headline\")\n        )\n\n\n    def test_stages(self):\n        # You can shorten this syntax with code like the following,  which is\n        # especially useful if building the query in stages:\n        articles = Article.objects.all()\n        self.assertQuerysetEqual(\n            articles.filter(headline__startswith='Hello') & articles.filter(headline__startswith='Goodbye'),\n            []\n        )\n        self.assertQuerysetEqual(\n            articles.filter(headline__startswith='Hello') & articles.filter(headline__contains='bye'), [\n                'Hello and goodbye'\n            ],\n            attrgetter(\"headline\")\n        )\n\n    def test_pk_q(self):\n        self.assertQuerysetEqual(\n            Article.objects.filter(Q(pk=self.a1) | Q(pk=self.a2)), [\n                'Hello',\n                'Goodbye'\n            ],\n            attrgetter(\"headline\")\n        )\n\n        self.assertQuerysetEqual(\n            Article.objects.filter(Q(pk=self.a1) | Q(pk=self.a2) | Q(pk=self.a3)), [\n                'Hello',\n                'Goodbye',\n                'Hello and goodbye'\n            ],\n            attrgetter(\"headline\"),\n        )\n\n    def test_pk_in(self):\n        self.assertQuerysetEqual(\n            Article.objects.filter(pk__in=[self.a1, self.a2, self.a3]), [\n                'Hello',\n                'Goodbye',\n                'Hello and goodbye'\n            ],\n            attrgetter(\"headline\"),\n        )\n\n        self.assertQuerysetEqual(\n            Article.objects.filter(pk__in=(self.a1, self.a2, self.a3)), [\n                'Hello',\n                'Goodbye',\n                'Hello and goodbye'\n            ],\n            attrgetter(\"headline\"),\n        )\n\n        self.assertQuerysetEqual(\n            Article.objects.filter(pk__in=[self.a1, self.a2, self.a3, 40000]), [\n                'Hello',\n                'Goodbye',\n                'Hello and goodbye'\n            ],\n            attrgetter(\"headline\"),\n        )\n\n    def test_q_negated(self):\n        # Q objects can be negated\n        self.assertQuerysetEqual(\n            Article.objects.filter(Q(pk=self.a1) | ~Q(pk=self.a2)), [\n                'Hello',\n                'Hello and goodbye'\n            ],\n            attrgetter(\"headline\")\n        )\n\n        self.assertQuerysetEqual(\n            Article.objects.filter(~Q(pk=self.a1) & ~Q(pk=self.a2)), [\n                'Hello and goodbye'\n            ],\n            attrgetter(\"headline\"),\n        )\n        # This allows for more complex queries than filter() and exclude()\n        # alone would allow\n        self.assertQuerysetEqual(\n            Article.objects.filter(Q(pk=self.a1) & (~Q(pk=self.a2) | Q(pk=self.a3))), [\n                'Hello'\n            ],\n            attrgetter(\"headline\"),\n        )\n\n    def test_complex_filter(self):\n        # The 'complex_filter' method supports framework features such as\n        # 'limit_choices_to' which normally take a single dictionary of lookup\n        # arguments but need to support arbitrary queries via Q objects too.\n        self.assertQuerysetEqual(\n            Article.objects.complex_filter({'pk': self.a1}), [\n                'Hello'\n            ],\n            attrgetter(\"headline\"),\n        )\n\n        self.assertQuerysetEqual(\n            Article.objects.complex_filter(Q(pk=self.a1) | Q(pk=self.a2)), [\n                'Hello',\n                'Goodbye'\n            ],\n            attrgetter(\"headline\"),\n        )\n\n    def test_empty_in(self):\n        # Passing \"in\" an empty list returns no results ...\n        self.assertQuerysetEqual(\n            Article.objects.filter(pk__in=[]),\n            []\n        )\n        # ... but can return results if we OR it with another query.\n        self.assertQuerysetEqual(\n            Article.objects.filter(Q(pk__in=[]) | Q(headline__icontains='goodbye')), [\n                'Goodbye',\n                'Hello and goodbye'\n            ],\n            attrgetter(\"headline\"),\n        )\n\n    def test_q_and(self):\n        # Q arg objects are ANDed\n        self.assertQuerysetEqual(\n            Article.objects.filter(Q(headline__startswith='Hello'), Q(headline__contains='bye')), [\n                'Hello and goodbye'\n            ],\n            attrgetter(\"headline\")\n        )\n        # Q arg AND order is irrelevant\n        self.assertQuerysetEqual(\n            Article.objects.filter(Q(headline__contains='bye'), headline__startswith='Hello'), [\n                'Hello and goodbye'\n            ],\n            attrgetter(\"headline\"),\n        )\n\n        self.assertQuerysetEqual(\n            Article.objects.filter(Q(headline__startswith='Hello') & Q(headline__startswith='Goodbye')),\n            []\n        )\n\n    def test_q_exclude(self):\n        self.assertQuerysetEqual(\n            Article.objects.exclude(Q(headline__startswith='Hello')), [\n                'Goodbye'\n            ],\n            attrgetter(\"headline\")\n        )\n\n    def test_other_arg_queries(self):\n        # Try some arg queries with operations other than filter.\n        self.assertEqual(\n            Article.objects.get(Q(headline__startswith='Hello'), Q(headline__contains='bye')).headline,\n            'Hello and goodbye'\n        )\n\n        self.assertEqual(\n            Article.objects.filter(Q(headline__startswith='Hello') | Q(headline__contains='bye')).count(),\n            3\n        )\n\n        self.assertQuerysetEqual(\n            Article.objects.filter(Q(headline__startswith='Hello'), Q(headline__contains='bye')).values(), [\n                {\"headline\": \"Hello and goodbye\", \"id\": self.a3, \"pub_date\": datetime(2005, 11, 29)},\n            ],\n            lambda o: o,\n        )\n\n        self.assertEqual(\n            Article.objects.filter(Q(headline__startswith='Hello')).in_bulk([self.a1, self.a2]),\n            {self.a1: Article.objects.get(pk=self.a1)}\n        )\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/order_with_respect_to/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/order_with_respect_to/models.py",
    "content": "\"\"\"\nTests for the order_with_respect_to Meta attribute.\n\"\"\"\n\nfrom django.db import models\nfrom django.utils import six\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\nclass Question(models.Model):\n    text = models.CharField(max_length=200)\n\n@python_2_unicode_compatible\nclass Answer(models.Model):\n    text = models.CharField(max_length=200)\n    question = models.ForeignKey(Question)\n\n    class Meta:\n        order_with_respect_to = 'question'\n\n    def __str__(self):\n        return six.text_type(self.text)\n\n@python_2_unicode_compatible\nclass Post(models.Model):\n    title = models.CharField(max_length=200)\n    parent = models.ForeignKey(\"self\", related_name=\"children\", null=True)\n\n    class Meta:\n        order_with_respect_to = \"parent\"\n\n    def __str__(self):\n        return self.title\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/order_with_respect_to/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom operator import attrgetter\n\nfrom django.test import TestCase\n\nfrom .models import Post, Question, Answer\n\n\nclass OrderWithRespectToTests(TestCase):\n    def test_basic(self):\n        q1 = Question.objects.create(text=\"Which Beatle starts with the letter 'R'?\")\n        q2 = Question.objects.create(text=\"What is your name?\")\n\n        Answer.objects.create(text=\"John\", question=q1)\n        Answer.objects.create(text=\"Jonno\", question=q2)\n        Answer.objects.create(text=\"Paul\", question=q1)\n        Answer.objects.create(text=\"Paulo\", question=q2)\n        Answer.objects.create(text=\"George\", question=q1)\n        Answer.objects.create(text=\"Ringo\", question=q1)\n\n        # The answers will always be ordered in the order they were inserted.\n        self.assertQuerysetEqual(\n            q1.answer_set.all(), [\n                \"John\", \"Paul\", \"George\", \"Ringo\",\n            ],\n            attrgetter(\"text\"),\n        )\n\n        # We can retrieve the answers related to a particular object, in the\n        # order they were created, once we have a particular object.\n        a1 = Answer.objects.filter(question=q1)[0]\n        self.assertEqual(a1.text, \"John\")\n        a2 = a1.get_next_in_order()\n        self.assertEqual(a2.text, \"Paul\")\n        a4 = list(Answer.objects.filter(question=q1))[-1]\n        self.assertEqual(a4.text, \"Ringo\")\n        self.assertEqual(a4.get_previous_in_order().text, \"George\")\n\n        # Determining (and setting) the ordering for a particular item is also\n        # possible.\n        id_list = [o.pk for o in q1.answer_set.all()]\n        self.assertEqual(a2.question.get_answer_order(), id_list)\n\n        a5 = Answer.objects.create(text=\"Number five\", question=q1)\n\n        # It doesn't matter which answer we use to check the order, it will\n        # always be the same.\n        self.assertEqual(\n            a2.question.get_answer_order(), a5.question.get_answer_order()\n        )\n\n        # The ordering can be altered:\n        id_list = [o.pk for o in q1.answer_set.all()]\n        x = id_list.pop()\n        id_list.insert(-1, x)\n        self.assertNotEqual(a5.question.get_answer_order(), id_list)\n        a5.question.set_answer_order(id_list)\n        self.assertQuerysetEqual(\n            q1.answer_set.all(), [\n                \"John\", \"Paul\", \"George\", \"Number five\", \"Ringo\"\n            ],\n            attrgetter(\"text\")\n        )\n\n    def test_recursive_ordering(self):\n        p1 = Post.objects.create(title='1')\n        p2 = Post.objects.create(title='2')\n        p1_1 = Post.objects.create(title=\"1.1\", parent=p1)\n        p1_2 = Post.objects.create(title=\"1.2\", parent=p1)\n        p2_1 = Post.objects.create(title=\"2.1\", parent=p2)\n        p1_3 = Post.objects.create(title=\"1.3\", parent=p1)\n        self.assertEqual(p1.get_post_order(), [p1_1.pk, p1_2.pk, p1_3.pk])\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/ordering/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/ordering/models.py",
    "content": "\"\"\"\n6. Specifying ordering\n\nSpecify default ordering for a model using the ``ordering`` attribute, which\nshould be a list or tuple of field names. This tells Django how to order\n``QuerySet`` results.\n\nIf a field name in ``ordering`` starts with a hyphen, that field will be\nordered in descending order. Otherwise, it'll be ordered in ascending order.\nThe special-case field name ``\"?\"`` specifies random order.\n\nThe ordering attribute is not required. If you leave it off, ordering will be\nundefined -- not random, just undefined.\n\"\"\"\n\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n@python_2_unicode_compatible\nclass Article(models.Model):\n    headline = models.CharField(max_length=100)\n    pub_date = models.DateTimeField()\n    class Meta:\n        ordering = ('-pub_date', 'headline')\n\n    def __str__(self):\n        return self.headline\n\n@python_2_unicode_compatible\nclass ArticlePKOrdering(models.Model):\n    headline = models.CharField(max_length=100)\n    pub_date = models.DateTimeField()\n    class Meta:\n        ordering = ('-pk',)\n\n    def __str__(self):\n        return self.headline\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/ordering/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom datetime import datetime\nfrom operator import attrgetter\n\nfrom django.test import TestCase\n\nfrom .models import Article, ArticlePKOrdering\n\n\nclass OrderingTests(TestCase):\n    def test_basic(self):\n        a1 = Article.objects.create(\n            headline=\"Article 1\", pub_date=datetime(2005, 7, 26)\n        )\n        a2 = Article.objects.create(\n            headline=\"Article 2\", pub_date=datetime(2005, 7, 27)\n        )\n        a3 = Article.objects.create(\n            headline=\"Article 3\", pub_date=datetime(2005, 7, 27)\n        )\n        a4 = Article.objects.create(\n            headline=\"Article 4\", pub_date=datetime(2005, 7, 28)\n        )\n\n        # By default, Article.objects.all() orders by pub_date descending, then\n        # headline ascending.\n        self.assertQuerysetEqual(\n            Article.objects.all(), [\n                \"Article 4\",\n                \"Article 2\",\n                \"Article 3\",\n                \"Article 1\",\n            ],\n            attrgetter(\"headline\")\n        )\n\n        # Override ordering with order_by, which is in the same format as the\n        # ordering attribute in models.\n        self.assertQuerysetEqual(\n            Article.objects.order_by(\"headline\"), [\n                \"Article 1\",\n                \"Article 2\",\n                \"Article 3\",\n                \"Article 4\",\n            ],\n            attrgetter(\"headline\")\n        )\n        self.assertQuerysetEqual(\n            Article.objects.order_by(\"pub_date\", \"-headline\"), [\n                \"Article 1\",\n                \"Article 3\",\n                \"Article 2\",\n                \"Article 4\",\n            ],\n            attrgetter(\"headline\")\n        )\n\n        # Only the last order_by has any effect (since they each override any\n        # previous ordering).\n        self.assertQuerysetEqual(\n            Article.objects.order_by(\"id\"), [\n                \"Article 1\",\n                \"Article 2\",\n                \"Article 3\",\n                \"Article 4\",\n            ],\n            attrgetter(\"headline\")\n        )\n        self.assertQuerysetEqual(\n            Article.objects.order_by(\"id\").order_by(\"-headline\"), [\n                \"Article 4\",\n                \"Article 3\",\n                \"Article 2\",\n                \"Article 1\",\n            ],\n            attrgetter(\"headline\")\n        )\n\n        # Use the 'stop' part of slicing notation to limit the results.\n        self.assertQuerysetEqual(\n            Article.objects.order_by(\"headline\")[:2], [\n                \"Article 1\",\n                \"Article 2\",\n            ],\n            attrgetter(\"headline\")\n        )\n\n        # Use the 'stop' and 'start' parts of slicing notation to offset the\n        # result list.\n        self.assertQuerysetEqual(\n            Article.objects.order_by(\"headline\")[1:3], [\n                \"Article 2\",\n                \"Article 3\",\n            ],\n            attrgetter(\"headline\")\n        )\n\n        # Getting a single item should work too:\n        self.assertEqual(Article.objects.all()[0], a4)\n\n        # Use '?' to order randomly.\n        self.assertEqual(\n            len(list(Article.objects.order_by(\"?\"))), 4\n        )\n\n        # Ordering can be reversed using the reverse() method on a queryset.\n        # This allows you to extract things like \"the last two items\" (reverse\n        # and then take the first two).\n        self.assertQuerysetEqual(\n            Article.objects.all().reverse()[:2], [\n                \"Article 1\",\n                \"Article 3\",\n            ],\n            attrgetter(\"headline\")\n        )\n\n        # Ordering can be based on fields included from an 'extra' clause\n        self.assertQuerysetEqual(\n            Article.objects.extra(select={\"foo\": \"pub_date\"}, order_by=[\"foo\", \"headline\"]), [\n                \"Article 1\",\n                \"Article 2\",\n                \"Article 3\",\n                \"Article 4\",\n            ],\n            attrgetter(\"headline\")\n        )\n\n        # If the extra clause uses an SQL keyword for a name, it will be\n        # protected by quoting.\n        self.assertQuerysetEqual(\n            Article.objects.extra(select={\"order\": \"pub_date\"}, order_by=[\"order\", \"headline\"]), [\n                \"Article 1\",\n                \"Article 2\",\n                \"Article 3\",\n                \"Article 4\",\n            ],\n            attrgetter(\"headline\")\n        )\n\n    def test_order_by_pk(self):\n        \"\"\"\n        Ensure that 'pk' works as an ordering option in Meta.\n        Refs #8291.\n        \"\"\"\n        a1 = ArticlePKOrdering.objects.create(\n            pk=1, headline=\"Article 1\", pub_date=datetime(2005, 7, 26)\n        )\n        a2 = ArticlePKOrdering.objects.create(\n            pk=2, headline=\"Article 2\", pub_date=datetime(2005, 7, 27)\n        )\n        a3 = ArticlePKOrdering.objects.create(\n            pk=3, headline=\"Article 3\", pub_date=datetime(2005, 7, 27)\n        )\n        a4 = ArticlePKOrdering.objects.create(\n            pk=4, headline=\"Article 4\", pub_date=datetime(2005, 7, 28)\n        )\n\n        self.assertQuerysetEqual(\n            ArticlePKOrdering.objects.all(), [\n                \"Article 4\",\n                \"Article 3\",\n                \"Article 2\",\n                \"Article 1\",\n            ],\n            attrgetter(\"headline\")\n        )\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/prefetch_related/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/prefetch_related/models.py",
    "content": "from django.contrib.contenttypes import generic\nfrom django.contrib.contenttypes.models import ContentType\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n## Basic tests\n\n@python_2_unicode_compatible\nclass Author(models.Model):\n    name = models.CharField(max_length=50, unique=True)\n    first_book = models.ForeignKey('Book', related_name='first_time_authors')\n    favorite_authors = models.ManyToManyField(\n        'self', through='FavoriteAuthors', symmetrical=False, related_name='favors_me')\n\n    def __str__(self):\n        return self.name\n\n    class Meta:\n        ordering = ['id']\n\n\nclass AuthorWithAge(Author):\n    author = models.OneToOneField(Author, parent_link=True)\n    age = models.IntegerField()\n\n\nclass FavoriteAuthors(models.Model):\n    author = models.ForeignKey(Author, to_field='name', related_name='i_like')\n    likes_author = models.ForeignKey(Author, to_field='name', related_name='likes_me')\n\n    class Meta:\n         ordering = ['id']\n\n\n@python_2_unicode_compatible\nclass AuthorAddress(models.Model):\n    author = models.ForeignKey(Author, to_field='name', related_name='addresses')\n    address = models.TextField()\n\n    class Meta:\n        ordering = ['id']\n\n    def __str__(self):\n        return self.address\n\n\n@python_2_unicode_compatible\nclass Book(models.Model):\n    title = models.CharField(max_length=255)\n    authors = models.ManyToManyField(Author, related_name='books')\n\n    def __str__(self):\n        return self.title\n\n    class Meta:\n        ordering = ['id']\n\nclass BookWithYear(Book):\n    book = models.OneToOneField(Book, parent_link=True)\n    published_year = models.IntegerField()\n    aged_authors = models.ManyToManyField(\n        AuthorWithAge, related_name='books_with_year')\n\n\n@python_2_unicode_compatible\nclass Reader(models.Model):\n    name = models.CharField(max_length=50)\n    books_read = models.ManyToManyField(Book, related_name='read_by')\n\n    def __str__(self):\n        return self.name\n\n    class Meta:\n        ordering = ['id']\n\nclass BookReview(models.Model):\n    book = models.ForeignKey(BookWithYear)\n    notes = models.TextField(null=True, blank=True)\n\n## Models for default manager tests\n\nclass Qualification(models.Model):\n    name = models.CharField(max_length=10)\n\n    class Meta:\n        ordering = ['id']\n\n\nclass TeacherManager(models.Manager):\n    def get_query_set(self):\n        return super(TeacherManager, self).get_query_set().prefetch_related('qualifications')\n\n\n@python_2_unicode_compatible\nclass Teacher(models.Model):\n    name = models.CharField(max_length=50)\n    qualifications = models.ManyToManyField(Qualification)\n\n    objects = TeacherManager()\n\n    def __str__(self):\n        return \"%s (%s)\" % (self.name, \", \".join(q.name for q in self.qualifications.all()))\n\n    class Meta:\n        ordering = ['id']\n\n\nclass Department(models.Model):\n    name = models.CharField(max_length=50)\n    teachers = models.ManyToManyField(Teacher)\n\n    class Meta:\n        ordering = ['id']\n\n\n## GenericRelation/GenericForeignKey tests\n\n@python_2_unicode_compatible\nclass TaggedItem(models.Model):\n    tag = models.SlugField()\n    content_type = models.ForeignKey(ContentType, related_name=\"taggeditem_set2\")\n    object_id = models.PositiveIntegerField()\n    content_object = generic.GenericForeignKey('content_type', 'object_id')\n    created_by_ct = models.ForeignKey(ContentType, null=True,\n                                      related_name='taggeditem_set3')\n    created_by_fkey = models.PositiveIntegerField(null=True)\n    created_by = generic.GenericForeignKey('created_by_ct', 'created_by_fkey',)\n    favorite_ct = models.ForeignKey(ContentType, null=True,\n                                    related_name='taggeditem_set4')\n    favorite_fkey = models.CharField(max_length=64, null=True)\n    favorite = generic.GenericForeignKey('favorite_ct', 'favorite_fkey')\n\n    def __str__(self):\n        return self.tag\n\n\nclass Bookmark(models.Model):\n    url = models.URLField()\n    tags = generic.GenericRelation(TaggedItem, related_name='bookmarks')\n    favorite_tags = generic.GenericRelation(TaggedItem,\n                                    content_type_field='favorite_ct',\n                                    object_id_field='favorite_fkey',\n                                    related_name='favorite_bookmarks')\n\n\nclass Comment(models.Model):\n    comment = models.TextField()\n\n    # Content-object field\n    content_type   = models.ForeignKey(ContentType)\n    object_pk      = models.TextField()\n    content_object = generic.GenericForeignKey(ct_field=\"content_type\", fk_field=\"object_pk\")\n\n\n## Models for lookup ordering tests\n\n\nclass House(models.Model):\n    address = models.CharField(max_length=255)\n\n    class Meta:\n        ordering = ['id']\n\nclass Room(models.Model):\n    name = models.CharField(max_length=50)\n    house = models.ForeignKey(House, related_name='rooms')\n\n    class Meta:\n        ordering = ['id']\n\n\nclass Person(models.Model):\n    name = models.CharField(max_length=50)\n    houses = models.ManyToManyField(House, related_name='occupants')\n\n    @property\n    def primary_house(self):\n        # Assume business logic forces every person to have at least one house.\n        return sorted(self.houses.all(), key=lambda house: -house.rooms.count())[0]\n\n    class Meta:\n        ordering = ['id']\n\n\n## Models for nullable FK tests\n\n@python_2_unicode_compatible\nclass Employee(models.Model):\n    name = models.CharField(max_length=50)\n    boss = models.ForeignKey('self', null=True,\n                             related_name='serfs')\n\n    def __str__(self):\n        return self.name\n\n    class Meta:\n        ordering = ['id']\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/prefetch_related/tests.py",
    "content": "from __future__ import absolute_import, unicode_literals\n\nfrom django.contrib.contenttypes.models import ContentType\nfrom django.db import connection\nfrom django.test import TestCase\nfrom django.test.utils import override_settings\nfrom django.utils import six\n\nfrom .models import (Author, Book, Reader, Qualification, Teacher, Department,\n    TaggedItem, Bookmark, AuthorAddress, FavoriteAuthors, AuthorWithAge,\n    BookWithYear, BookReview, Person, House, Room, Employee, Comment)\n\n\nclass PrefetchRelatedTests(TestCase):\n\n    def setUp(self):\n\n        self.book1 = Book.objects.create(title=\"Poems\")\n        self.book2 = Book.objects.create(title=\"Jane Eyre\")\n        self.book3 = Book.objects.create(title=\"Wuthering Heights\")\n        self.book4 = Book.objects.create(title=\"Sense and Sensibility\")\n\n        self.author1 = Author.objects.create(name=\"Charlotte\",\n                                             first_book=self.book1)\n        self.author2 = Author.objects.create(name=\"Anne\",\n                                             first_book=self.book1)\n        self.author3 = Author.objects.create(name=\"Emily\",\n                                             first_book=self.book1)\n        self.author4 = Author.objects.create(name=\"Jane\",\n                                             first_book=self.book4)\n\n        self.book1.authors.add(self.author1, self.author2, self.author3)\n        self.book2.authors.add(self.author1)\n        self.book3.authors.add(self.author3)\n        self.book4.authors.add(self.author4)\n\n        self.reader1 = Reader.objects.create(name=\"Amy\")\n        self.reader2 = Reader.objects.create(name=\"Belinda\")\n\n        self.reader1.books_read.add(self.book1, self.book4)\n        self.reader2.books_read.add(self.book2, self.book4)\n\n    def test_m2m_forward(self):\n        with self.assertNumQueries(2):\n            lists = [list(b.authors.all()) for b in Book.objects.prefetch_related('authors')]\n\n        normal_lists = [list(b.authors.all()) for b in Book.objects.all()]\n        self.assertEqual(lists, normal_lists)\n\n\n    def test_m2m_reverse(self):\n        with self.assertNumQueries(2):\n            lists = [list(a.books.all()) for a in Author.objects.prefetch_related('books')]\n\n        normal_lists = [list(a.books.all()) for a in Author.objects.all()]\n        self.assertEqual(lists, normal_lists)\n\n    def test_foreignkey_forward(self):\n        with self.assertNumQueries(2):\n            books = [a.first_book for a in Author.objects.prefetch_related('first_book')]\n\n        normal_books = [a.first_book for a in Author.objects.all()]\n        self.assertEqual(books, normal_books)\n\n    def test_foreignkey_reverse(self):\n        with self.assertNumQueries(2):\n            lists = [list(b.first_time_authors.all())\n                     for b in Book.objects.prefetch_related('first_time_authors')]\n\n        self.assertQuerysetEqual(self.book2.authors.all(), [\"<Author: Charlotte>\"])\n\n    def test_onetoone_reverse_no_match(self):\n        # Regression for #17439\n        with self.assertNumQueries(2):\n            book = Book.objects.prefetch_related('bookwithyear').all()[0]\n        with self.assertNumQueries(0):\n            with self.assertRaises(BookWithYear.DoesNotExist):\n                book.bookwithyear\n\n    def test_survives_clone(self):\n        with self.assertNumQueries(2):\n            lists = [list(b.first_time_authors.all())\n                     for b in Book.objects.prefetch_related('first_time_authors').exclude(id=1000)]\n\n    def test_len(self):\n        with self.assertNumQueries(2):\n            qs = Book.objects.prefetch_related('first_time_authors')\n            length = len(qs)\n            lists = [list(b.first_time_authors.all())\n                     for b in qs]\n\n    def test_bool(self):\n        with self.assertNumQueries(2):\n            qs = Book.objects.prefetch_related('first_time_authors')\n            x = bool(qs)\n            lists = [list(b.first_time_authors.all())\n                     for b in qs]\n\n    def test_count(self):\n        with self.assertNumQueries(2):\n            qs = Book.objects.prefetch_related('first_time_authors')\n            [b.first_time_authors.count() for b in qs]\n\n    def test_exists(self):\n        with self.assertNumQueries(2):\n            qs = Book.objects.prefetch_related('first_time_authors')\n            [b.first_time_authors.exists() for b in qs]\n\n    def test_clear(self):\n        \"\"\"\n        Test that we can clear the behavior by calling prefetch_related()\n        \"\"\"\n        with self.assertNumQueries(5):\n            with_prefetch = Author.objects.prefetch_related('books')\n            without_prefetch = with_prefetch.prefetch_related(None)\n            lists = [list(a.books.all()) for a in without_prefetch]\n\n    def test_m2m_then_m2m(self):\n        \"\"\"\n        Test we can follow a m2m and another m2m\n        \"\"\"\n        with self.assertNumQueries(3):\n            qs = Author.objects.prefetch_related('books__read_by')\n            lists = [[[six.text_type(r) for r in b.read_by.all()]\n                      for b in a.books.all()]\n                     for a in qs]\n            self.assertEqual(lists,\n            [\n                [[\"Amy\"], [\"Belinda\"]],  # Charlotte - Poems, Jane Eyre\n                [[\"Amy\"]],                # Anne - Poems\n                [[\"Amy\"], []],            # Emily - Poems, Wuthering Heights\n                [[\"Amy\", \"Belinda\"]],    # Jane - Sense and Sense\n            ])\n\n    def test_overriding_prefetch(self):\n        with self.assertNumQueries(3):\n            qs = Author.objects.prefetch_related('books', 'books__read_by')\n            lists = [[[six.text_type(r) for r in b.read_by.all()]\n                      for b in a.books.all()]\n                     for a in qs]\n            self.assertEqual(lists,\n            [\n                [[\"Amy\"], [\"Belinda\"]],  # Charlotte - Poems, Jane Eyre\n                [[\"Amy\"]],                # Anne - Poems\n                [[\"Amy\"], []],            # Emily - Poems, Wuthering Heights\n                [[\"Amy\", \"Belinda\"]],    # Jane - Sense and Sense\n            ])\n        with self.assertNumQueries(3):\n            qs = Author.objects.prefetch_related('books__read_by', 'books')\n            lists = [[[six.text_type(r) for r in b.read_by.all()]\n                      for b in a.books.all()]\n                     for a in qs]\n            self.assertEqual(lists,\n            [\n                [[\"Amy\"], [\"Belinda\"]],  # Charlotte - Poems, Jane Eyre\n                [[\"Amy\"]],                # Anne - Poems\n                [[\"Amy\"], []],            # Emily - Poems, Wuthering Heights\n                [[\"Amy\", \"Belinda\"]],    # Jane - Sense and Sense\n            ])\n\n    def test_get(self):\n        \"\"\"\n        Test that objects retrieved with .get() get the prefetch behavior.\n        \"\"\"\n        # Need a double\n        with self.assertNumQueries(3):\n            author = Author.objects.prefetch_related('books__read_by').get(name=\"Charlotte\")\n            lists = [[six.text_type(r) for r in b.read_by.all()]\n                      for b in author.books.all()]\n            self.assertEqual(lists, [[\"Amy\"], [\"Belinda\"]])  # Poems, Jane Eyre\n\n    def test_foreign_key_then_m2m(self):\n        \"\"\"\n        Test we can follow an m2m relation after a relation like ForeignKey\n        that doesn't have many objects\n        \"\"\"\n        with self.assertNumQueries(2):\n            qs = Author.objects.select_related('first_book').prefetch_related('first_book__read_by')\n            lists = [[six.text_type(r) for r in a.first_book.read_by.all()]\n                     for a in qs]\n            self.assertEqual(lists, [[\"Amy\"],\n                                     [\"Amy\"],\n                                     [\"Amy\"],\n                                     [\"Amy\", \"Belinda\"]])\n\n    def test_attribute_error(self):\n        qs = Reader.objects.all().prefetch_related('books_read__xyz')\n        with self.assertRaises(AttributeError) as cm:\n            list(qs)\n\n        self.assertTrue('prefetch_related' in str(cm.exception))\n\n    def test_invalid_final_lookup(self):\n        qs = Book.objects.prefetch_related('authors__name')\n        with self.assertRaises(ValueError) as cm:\n            list(qs)\n\n        self.assertTrue('prefetch_related' in str(cm.exception))\n        self.assertTrue(\"name\" in str(cm.exception))\n\n\nclass DefaultManagerTests(TestCase):\n\n    def setUp(self):\n        self.qual1 = Qualification.objects.create(name=\"BA\")\n        self.qual2 = Qualification.objects.create(name=\"BSci\")\n        self.qual3 = Qualification.objects.create(name=\"MA\")\n        self.qual4 = Qualification.objects.create(name=\"PhD\")\n\n        self.teacher1 = Teacher.objects.create(name=\"Mr Cleese\")\n        self.teacher2 = Teacher.objects.create(name=\"Mr Idle\")\n        self.teacher3 = Teacher.objects.create(name=\"Mr Chapman\")\n\n        self.teacher1.qualifications.add(self.qual1, self.qual2, self.qual3, self.qual4)\n        self.teacher2.qualifications.add(self.qual1)\n        self.teacher3.qualifications.add(self.qual2)\n\n        self.dept1 = Department.objects.create(name=\"English\")\n        self.dept2 = Department.objects.create(name=\"Physics\")\n\n        self.dept1.teachers.add(self.teacher1, self.teacher2)\n        self.dept2.teachers.add(self.teacher1, self.teacher3)\n\n    def test_m2m_then_m2m(self):\n        with self.assertNumQueries(3):\n            # When we prefetch the teachers, and force the query, we don't want\n            # the default manager on teachers to immediately get all the related\n            # qualifications, since this will do one query per teacher.\n            qs = Department.objects.prefetch_related('teachers')\n            depts = \"\".join([\"%s department: %s\\n\" %\n                             (dept.name, \", \".join(six.text_type(t) for t in dept.teachers.all()))\n                             for dept in qs])\n\n            self.assertEqual(depts,\n                             \"English department: Mr Cleese (BA, BSci, MA, PhD), Mr Idle (BA)\\n\"\n                             \"Physics department: Mr Cleese (BA, BSci, MA, PhD), Mr Chapman (BSci)\\n\")\n\n\nclass GenericRelationTests(TestCase):\n\n    def setUp(self):\n        book1 = Book.objects.create(title=\"Winnie the Pooh\")\n        book2 = Book.objects.create(title=\"Do you like green eggs and spam?\")\n        book3 = Book.objects.create(title=\"Three Men In A Boat\")\n\n        reader1 = Reader.objects.create(name=\"me\")\n        reader2 = Reader.objects.create(name=\"you\")\n        reader3 = Reader.objects.create(name=\"someone\")\n\n        book1.read_by.add(reader1, reader2)\n        book2.read_by.add(reader2)\n        book3.read_by.add(reader3)\n\n        self.book1, self.book2, self.book3 = book1, book2, book3\n        self.reader1, self.reader2, self.reader3 = reader1, reader2, reader3\n\n    def test_prefetch_GFK(self):\n        TaggedItem.objects.create(tag=\"awesome\", content_object=self.book1)\n        TaggedItem.objects.create(tag=\"great\", content_object=self.reader1)\n        TaggedItem.objects.create(tag=\"stupid\", content_object=self.book2)\n        TaggedItem.objects.create(tag=\"amazing\", content_object=self.reader3)\n\n        # 1 for TaggedItem table, 1 for Book table, 1 for Reader table\n        with self.assertNumQueries(3):\n            qs = TaggedItem.objects.prefetch_related('content_object')\n            list(qs)\n\n    def test_prefetch_GFK_nonint_pk(self):\n        Comment.objects.create(comment=\"awesome\", content_object=self.book1)\n\n        # 1 for Comment table, 1 for Book table\n        with self.assertNumQueries(2):\n            qs = Comment.objects.prefetch_related('content_object')\n            [c.content_object for c in qs]\n\n    def test_traverse_GFK(self):\n        \"\"\"\n        Test that we can traverse a 'content_object' with prefetch_related() and\n        get to related objects on the other side (assuming it is suitably\n        filtered)\n        \"\"\"\n        TaggedItem.objects.create(tag=\"awesome\", content_object=self.book1)\n        TaggedItem.objects.create(tag=\"awesome\", content_object=self.book2)\n        TaggedItem.objects.create(tag=\"awesome\", content_object=self.book3)\n        TaggedItem.objects.create(tag=\"awesome\", content_object=self.reader1)\n        TaggedItem.objects.create(tag=\"awesome\", content_object=self.reader2)\n\n        ct = ContentType.objects.get_for_model(Book)\n\n        # We get 3 queries - 1 for main query, 1 for content_objects since they\n        # all use the same table, and 1 for the 'read_by' relation.\n        with self.assertNumQueries(3):\n            # If we limit to books, we know that they will have 'read_by'\n            # attributes, so the following makes sense:\n            qs = TaggedItem.objects.filter(content_type=ct, tag='awesome').prefetch_related('content_object__read_by')\n            readers_of_awesome_books = set([r.name for tag in qs\n                                            for r in tag.content_object.read_by.all()])\n            self.assertEqual(readers_of_awesome_books, set([\"me\", \"you\", \"someone\"]))\n\n    def test_nullable_GFK(self):\n        TaggedItem.objects.create(tag=\"awesome\", content_object=self.book1,\n                                  created_by=self.reader1)\n        TaggedItem.objects.create(tag=\"great\", content_object=self.book2)\n        TaggedItem.objects.create(tag=\"rubbish\", content_object=self.book3)\n\n        with self.assertNumQueries(2):\n            result = [t.created_by for t in TaggedItem.objects.prefetch_related('created_by')]\n\n        self.assertEqual(result,\n                         [t.created_by for t in TaggedItem.objects.all()])\n\n    def test_generic_relation(self):\n        b = Bookmark.objects.create(url='http://www.djangoproject.com/')\n        t1 = TaggedItem.objects.create(content_object=b, tag='django')\n        t2 = TaggedItem.objects.create(content_object=b, tag='python')\n\n        with self.assertNumQueries(2):\n            tags = [t.tag for b in Bookmark.objects.prefetch_related('tags')\n                    for t in b.tags.all()]\n            self.assertEqual(sorted(tags), [\"django\", \"python\"])\n\n    def test_charfield_GFK(self):\n        b = Bookmark.objects.create(url='http://www.djangoproject.com/')\n        t1 = TaggedItem.objects.create(content_object=b, tag='django')\n        t2 = TaggedItem.objects.create(content_object=b, favorite=b, tag='python')\n\n        with self.assertNumQueries(3):\n            bookmark = Bookmark.objects.filter(pk=b.pk).prefetch_related('tags', 'favorite_tags')[0]\n            self.assertEqual(sorted([i.tag for i in bookmark.tags.all()]), [\"django\", \"python\"])\n            self.assertEqual([i.tag for i in bookmark.favorite_tags.all()], [\"python\"])\n\n\nclass MultiTableInheritanceTest(TestCase):\n\n    def setUp(self):\n        self.book1 = BookWithYear.objects.create(\n            title=\"Poems\", published_year=2010)\n        self.book2 = BookWithYear.objects.create(\n            title=\"More poems\", published_year=2011)\n        self.author1 = AuthorWithAge.objects.create(\n            name='Jane', first_book=self.book1, age=50)\n        self.author2 = AuthorWithAge.objects.create(\n            name='Tom', first_book=self.book1, age=49)\n        self.author3 = AuthorWithAge.objects.create(\n            name='Robert', first_book=self.book2, age=48)\n        self.authorAddress = AuthorAddress.objects.create(\n            author=self.author1, address='SomeStreet 1')\n        self.book2.aged_authors.add(self.author2, self.author3)\n        self.br1 = BookReview.objects.create(\n            book=self.book1, notes=\"review book1\")\n        self.br2 = BookReview.objects.create(\n            book=self.book2, notes=\"review book2\")\n\n    def test_foreignkey(self):\n        with self.assertNumQueries(2):\n            qs = AuthorWithAge.objects.prefetch_related('addresses')\n            addresses = [[six.text_type(address) for address in obj.addresses.all()]\n                         for obj in qs]\n        self.assertEqual(addresses, [[six.text_type(self.authorAddress)], [], []])\n\n    def test_foreignkey_to_inherited(self):\n        with self.assertNumQueries(2):\n            qs = BookReview.objects.prefetch_related('book')\n            titles = [obj.book.title for obj in qs]\n        self.assertEqual(titles, [\"Poems\", \"More poems\"])\n\n    def test_m2m_to_inheriting_model(self):\n        qs = AuthorWithAge.objects.prefetch_related('books_with_year')\n        with self.assertNumQueries(2):\n            lst = [[six.text_type(book) for book in author.books_with_year.all()]\n                   for author in qs]\n        qs = AuthorWithAge.objects.all()\n        lst2 = [[six.text_type(book) for book in author.books_with_year.all()]\n                for author in qs]\n        self.assertEqual(lst, lst2)\n\n        qs = BookWithYear.objects.prefetch_related('aged_authors')\n        with self.assertNumQueries(2):\n            lst = [[six.text_type(author) for author in book.aged_authors.all()]\n                   for book in qs]\n        qs = BookWithYear.objects.all()\n        lst2 = [[six.text_type(author) for author in book.aged_authors.all()]\n               for book in qs]\n        self.assertEqual(lst, lst2)\n\n    def test_parent_link_prefetch(self):\n        with self.assertNumQueries(2):\n            [a.author for a in AuthorWithAge.objects.prefetch_related('author')]\n\n    @override_settings(DEBUG=True)\n    def test_child_link_prefetch(self):\n        with self.assertNumQueries(2):\n            l = [a.authorwithage for a in Author.objects.prefetch_related('authorwithage')]\n\n        # Regression for #18090: the prefetching query must include an IN clause.\n        # Note that on Oracle the table name is upper case in the generated SQL,\n        # thus the .lower() call.\n        self.assertIn('authorwithage', connection.queries[-1]['sql'].lower())\n        self.assertIn(' IN ', connection.queries[-1]['sql'])\n\n        self.assertEqual(l, [a.authorwithage for a in Author.objects.all()])\n\n\nclass ForeignKeyToFieldTest(TestCase):\n\n    def setUp(self):\n        self.book = Book.objects.create(title=\"Poems\")\n        self.author1 = Author.objects.create(name='Jane', first_book=self.book)\n        self.author2 = Author.objects.create(name='Tom', first_book=self.book)\n        self.author3 = Author.objects.create(name='Robert', first_book=self.book)\n        self.authorAddress = AuthorAddress.objects.create(\n            author=self.author1, address='SomeStreet 1'\n        )\n        FavoriteAuthors.objects.create(author=self.author1,\n                                       likes_author=self.author2)\n        FavoriteAuthors.objects.create(author=self.author2,\n                                       likes_author=self.author3)\n        FavoriteAuthors.objects.create(author=self.author3,\n                                       likes_author=self.author1)\n\n    def test_foreignkey(self):\n        with self.assertNumQueries(2):\n            qs = Author.objects.prefetch_related('addresses')\n            addresses = [[six.text_type(address) for address in obj.addresses.all()]\n                         for obj in qs]\n        self.assertEqual(addresses, [[six.text_type(self.authorAddress)], [], []])\n\n    def test_m2m(self):\n        with self.assertNumQueries(3):\n            qs = Author.objects.all().prefetch_related('favorite_authors', 'favors_me')\n            favorites = [(\n                 [six.text_type(i_like) for i_like in author.favorite_authors.all()],\n                 [six.text_type(likes_me) for likes_me in author.favors_me.all()]\n                ) for author in qs]\n            self.assertEqual(\n                favorites,\n                [\n                    ([six.text_type(self.author2)],[six.text_type(self.author3)]),\n                    ([six.text_type(self.author3)],[six.text_type(self.author1)]),\n                    ([six.text_type(self.author1)],[six.text_type(self.author2)])\n                ]\n            )\n\n\nclass LookupOrderingTest(TestCase):\n    \"\"\"\n    Test cases that demonstrate that ordering of lookups is important, and\n    ensure it is preserved.\n    \"\"\"\n\n    def setUp(self):\n        self.person1 = Person.objects.create(name=\"Joe\")\n        self.person2 = Person.objects.create(name=\"Mary\")\n\n        self.house1 = House.objects.create(address=\"123 Main St\")\n        self.house2 = House.objects.create(address=\"45 Side St\")\n        self.house3 = House.objects.create(address=\"6 Downing St\")\n        self.house4 = House.objects.create(address=\"7 Regents St\")\n\n        self.room1_1 = Room.objects.create(name=\"Dining room\", house=self.house1)\n        self.room1_2 = Room.objects.create(name=\"Lounge\", house=self.house1)\n        self.room1_3 = Room.objects.create(name=\"Kitchen\", house=self.house1)\n\n        self.room2_1 = Room.objects.create(name=\"Dining room\", house=self.house2)\n        self.room2_2 = Room.objects.create(name=\"Lounge\", house=self.house2)\n\n        self.room3_1 = Room.objects.create(name=\"Dining room\", house=self.house3)\n        self.room3_2 = Room.objects.create(name=\"Lounge\", house=self.house3)\n        self.room3_3 = Room.objects.create(name=\"Kitchen\", house=self.house3)\n\n        self.room4_1 = Room.objects.create(name=\"Dining room\", house=self.house4)\n        self.room4_2 = Room.objects.create(name=\"Lounge\", house=self.house4)\n\n        self.person1.houses.add(self.house1, self.house2)\n        self.person2.houses.add(self.house3, self.house4)\n\n    def test_order(self):\n        with self.assertNumQueries(4):\n            # The following two queries must be done in the same order as written,\n            # otherwise 'primary_house' will cause non-prefetched lookups\n            qs = Person.objects.prefetch_related('houses__rooms',\n                                                 'primary_house__occupants')\n            [list(p.primary_house.occupants.all()) for p in qs]\n\n\nclass NullableTest(TestCase):\n\n    def setUp(self):\n        boss = Employee.objects.create(name=\"Peter\")\n        worker1 = Employee.objects.create(name=\"Joe\", boss=boss)\n        worker2 = Employee.objects.create(name=\"Angela\", boss=boss)\n\n    def test_traverse_nullable(self):\n        # Because we use select_related() for 'boss', it doesn't need to be\n        # prefetched, but we can still traverse it although it contains some nulls\n        with self.assertNumQueries(2):\n            qs = Employee.objects.select_related('boss').prefetch_related('boss__serfs')\n            co_serfs = [list(e.boss.serfs.all()) if e.boss is not None else []\n                        for e in qs]\n\n        qs2 =  Employee.objects.select_related('boss')\n        co_serfs2 =  [list(e.boss.serfs.all()) if e.boss is not None else []\n                        for e in qs2]\n\n        self.assertEqual(co_serfs, co_serfs2)\n\n    def test_prefetch_nullable(self):\n        # One for main employee, one for boss, one for serfs\n        with self.assertNumQueries(3):\n            qs = Employee.objects.prefetch_related('boss__serfs')\n            co_serfs = [list(e.boss.serfs.all()) if e.boss is not None else []\n                        for e in qs]\n\n        qs2 =  Employee.objects.all()\n        co_serfs2 =  [list(e.boss.serfs.all()) if e.boss is not None else []\n                        for e in qs2]\n\n        self.assertEqual(co_serfs, co_serfs2)\n\n    def test_in_bulk(self):\n        \"\"\"\n        In-bulk does correctly prefetch objects by not using .iterator()\n        directly.\n        \"\"\"\n        boss1 = Employee.objects.create(name=\"Peter\")\n        boss2 = Employee.objects.create(name=\"Jack\")\n        with self.assertNumQueries(2):\n            # Check that prefetch is done and it does not cause any errors.\n            bulk = Employee.objects.prefetch_related('serfs').in_bulk([boss1.pk, boss2.pk])\n            for b in bulk.values():\n                list(b.serfs.all())\n\n\nclass MultiDbTests(TestCase):\n    multi_db = True\n\n    def test_using_is_honored_m2m(self):\n        B = Book.objects.using('other')\n        A = Author.objects.using('other')\n        book1 = B.create(title=\"Poems\")\n        book2 = B.create(title=\"Jane Eyre\")\n        book3 = B.create(title=\"Wuthering Heights\")\n        book4 = B.create(title=\"Sense and Sensibility\")\n\n        author1 = A.create(name=\"Charlotte\", first_book=book1)\n        author2 = A.create(name=\"Anne\", first_book=book1)\n        author3 = A.create(name=\"Emily\", first_book=book1)\n        author4 = A.create(name=\"Jane\", first_book=book4)\n\n        book1.authors.add(author1, author2, author3)\n        book2.authors.add(author1)\n        book3.authors.add(author3)\n        book4.authors.add(author4)\n\n        # Forward\n        qs1 = B.prefetch_related('authors')\n        with self.assertNumQueries(2, using='other'):\n            books = \"\".join([\"%s (%s)\\n\" %\n                             (book.title, \", \".join(a.name for a in book.authors.all()))\n                             for book in qs1])\n        self.assertEqual(books,\n                         \"Poems (Charlotte, Anne, Emily)\\n\"\n                         \"Jane Eyre (Charlotte)\\n\"\n                         \"Wuthering Heights (Emily)\\n\"\n                         \"Sense and Sensibility (Jane)\\n\")\n\n        # Reverse\n        qs2 = A.prefetch_related('books')\n        with self.assertNumQueries(2, using='other'):\n            authors = \"\".join([\"%s: %s\\n\" %\n                               (author.name, \", \".join(b.title for b in author.books.all()))\n                               for author in qs2])\n        self.assertEqual(authors,\n                          \"Charlotte: Poems, Jane Eyre\\n\"\n                          \"Anne: Poems\\n\"\n                          \"Emily: Poems, Wuthering Heights\\n\"\n                          \"Jane: Sense and Sensibility\\n\")\n\n    def test_using_is_honored_fkey(self):\n        B = Book.objects.using('other')\n        A = Author.objects.using('other')\n        book1 = B.create(title=\"Poems\")\n        book2 = B.create(title=\"Sense and Sensibility\")\n\n        author1 = A.create(name=\"Charlotte Bronte\", first_book=book1)\n        author2 = A.create(name=\"Jane Austen\", first_book=book2)\n\n        # Forward\n        with self.assertNumQueries(2, using='other'):\n            books = \", \".join(a.first_book.title for a in A.prefetch_related('first_book'))\n        self.assertEqual(\"Poems, Sense and Sensibility\", books)\n\n        # Reverse\n        with self.assertNumQueries(2, using='other'):\n            books = \"\".join(\"%s (%s)\\n\" %\n                            (b.title, \", \".join(a.name for a in b.first_time_authors.all()))\n                            for b in B.prefetch_related('first_time_authors'))\n        self.assertEqual(books,\n                         \"Poems (Charlotte Bronte)\\n\"\n                         \"Sense and Sensibility (Jane Austen)\\n\")\n\n    def test_using_is_honored_inheritance(self):\n        B = BookWithYear.objects.using('other')\n        A = AuthorWithAge.objects.using('other')\n        book1 = B.create(title=\"Poems\", published_year=2010)\n        book2 = B.create(title=\"More poems\", published_year=2011)\n        author1 = A.create(name='Jane', first_book=book1, age=50)\n        author2 = A.create(name='Tom', first_book=book1, age=49)\n\n        # parent link\n        with self.assertNumQueries(2, using='other'):\n            authors = \", \".join(a.author.name for a in A.prefetch_related('author'))\n\n        self.assertEqual(authors, \"Jane, Tom\")\n\n        # child link\n        with self.assertNumQueries(2, using='other'):\n            ages = \", \".join(str(a.authorwithage.age) for a in A.prefetch_related('authorwithage'))\n\n        self.assertEqual(ages, \"50, 49\")\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/properties/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/properties/models.py",
    "content": "\"\"\"\n22. Using properties on models\n\nUse properties on models just like on any other Python object.\n\"\"\"\n\nfrom django.db import models\n\n\nclass Person(models.Model):\n    first_name = models.CharField(max_length=30)\n    last_name = models.CharField(max_length=30)\n\n    def _get_full_name(self):\n        return \"%s %s\" % (self.first_name, self.last_name)\n\n    def _set_full_name(self, combined_name):\n        self.first_name, self.last_name = combined_name.split(' ', 1)\n\n    full_name = property(_get_full_name)\n\n    full_name_2 = property(_get_full_name, _set_full_name)\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/properties/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom django.test import TestCase\n\nfrom .models import Person\n\n\nclass PropertyTests(TestCase):\n\n    def setUp(self):\n        self.a = Person(first_name='John', last_name='Lennon')\n        self.a.save()\n\n    def test_getter(self):\n        self.assertEqual(self.a.full_name, 'John Lennon')\n\n    def test_setter(self):\n        # The \"full_name\" property hasn't provided a \"set\" method.\n        self.assertRaises(AttributeError, setattr, self.a, 'full_name', 'Paul McCartney')\n\n        # But \"full_name_2\" has, and it can be used to initialise the class.\n        a2 = Person(full_name_2 = 'Paul McCartney')\n        a2.save()\n        self.assertEqual(a2.first_name, 'Paul')\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/proxy_model_inheritance/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/proxy_model_inheritance/app1/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/proxy_model_inheritance/app1/models.py",
    "content": "from __future__ import absolute_import\n\n# TODO: why can't I make this ..app2\nfrom app2.models import NiceModel\n\n\nclass ProxyModel(NiceModel):\n    class Meta:\n        proxy = True\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/proxy_model_inheritance/app2/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/proxy_model_inheritance/app2/models.py",
    "content": "from django.db import models\n\n\nclass NiceModel(models.Model):\n    pass\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/proxy_model_inheritance/models.py",
    "content": "\nfrom django.db import models\n\n\nclass ConcreteModel(models.Model):\n    pass\n\nclass ConcreteModelSubclass(ConcreteModel):\n    pass\n\nclass ConcreteModelSubclassProxy(ConcreteModelSubclass):\n    class Meta:\n        proxy = True\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/proxy_model_inheritance/tests.py",
    "content": "from __future__ import absolute_import\n\nimport os\nimport sys\n\nfrom django.conf import settings\nfrom django.core.management import call_command\nfrom django.db.models.loading import cache, load_app\nfrom django.test import TestCase, TransactionTestCase\nfrom django.test.utils import override_settings\nfrom django.utils._os import upath\n\nfrom .models import (ConcreteModel, ConcreteModelSubclass,\n    ConcreteModelSubclassProxy)\n\n\n@override_settings(INSTALLED_APPS=('app1', 'app2'))\nclass ProxyModelInheritanceTests(TransactionTestCase):\n    \"\"\"\n    Proxy model inheritance across apps can result in syncdb not creating the table\n    for the proxied model (as described in #12286).  This test creates two dummy\n    apps and calls syncdb, then verifies that the table has been created.\n    \"\"\"\n\n    def setUp(self):\n        self.old_sys_path = sys.path[:]\n        sys.path.append(os.path.dirname(os.path.abspath(upath(__file__))))\n        for app in settings.INSTALLED_APPS:\n            load_app(app)\n\n    def tearDown(self):\n        sys.path = self.old_sys_path\n        del cache.app_store[cache.app_labels['app1']]\n        del cache.app_store[cache.app_labels['app2']]\n        del cache.app_labels['app1']\n        del cache.app_labels['app2']\n        del cache.app_models['app1']\n        del cache.app_models['app2']\n\n    def test_table_exists(self):\n        call_command('syncdb', verbosity=0)\n        from .app1.models import ProxyModel\n        from .app2.models import NiceModel\n        self.assertEqual(NiceModel.objects.all().count(), 0)\n        self.assertEqual(ProxyModel.objects.all().count(), 0)\n\n\nclass MultiTableInheritanceProxyTest(TestCase):\n\n    def test_model_subclass_proxy(self):\n        \"\"\"\n        Deleting an instance of a model proxying a multi-table inherited\n        subclass should cascade delete down the whole inheritance chain (see\n        #18083).\n\n        \"\"\"\n        instance = ConcreteModelSubclassProxy.objects.create()\n        instance.delete()\n        self.assertEqual(0, ConcreteModelSubclassProxy.objects.count())\n        self.assertEqual(0, ConcreteModelSubclass.objects.count())\n        self.assertEqual(0, ConcreteModel.objects.count())\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/proxy_models/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/proxy_models/fixtures/mypeople.json",
    "content": "[\n    {\n        \"pk\": 100,\n        \"model\": \"proxy_models.myperson\",\n        \"fields\": {\n            \"name\": \"Elvis Presley\"\n        }\n    }\n]"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/proxy_models/models.py",
    "content": "\"\"\"\nBy specifying the 'proxy' Meta attribute, model subclasses can specify that\nthey will take data directly from the table of their base class table rather\nthan using a new table of their own. This allows them to act as simple proxies,\nproviding a modified interface to the data from the base class.\n\"\"\"\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n# A couple of managers for testing managing overriding in proxy model cases.\n\nclass PersonManager(models.Manager):\n    def get_query_set(self):\n        return super(PersonManager, self).get_query_set().exclude(name=\"fred\")\n\nclass SubManager(models.Manager):\n    def get_query_set(self):\n        return super(SubManager, self).get_query_set().exclude(name=\"wilma\")\n\n@python_2_unicode_compatible\nclass Person(models.Model):\n    \"\"\"\n    A simple concrete base class.\n    \"\"\"\n    name = models.CharField(max_length=50)\n\n    objects = PersonManager()\n\n    def __str__(self):\n        return self.name\n\nclass Abstract(models.Model):\n    \"\"\"\n    A simple abstract base class, to be used for error checking.\n    \"\"\"\n    data = models.CharField(max_length=10)\n\n    class Meta:\n        abstract = True\n\nclass MyPerson(Person):\n    \"\"\"\n    A proxy subclass, this should not get a new table. Overrides the default\n    manager.\n    \"\"\"\n    class Meta:\n        proxy = True\n        ordering = [\"name\"]\n        permissions = (\n            (\"display_users\", \"May display users information\"),\n        )\n\n    objects = SubManager()\n    other = PersonManager()\n\n    def has_special_name(self):\n        return self.name.lower() == \"special\"\n\nclass ManagerMixin(models.Model):\n    excluder = SubManager()\n\n    class Meta:\n        abstract = True\n\nclass OtherPerson(Person, ManagerMixin):\n    \"\"\"\n    A class with the default manager from Person, plus an secondary manager.\n    \"\"\"\n    class Meta:\n        proxy = True\n        ordering = [\"name\"]\n\nclass StatusPerson(MyPerson):\n    \"\"\"\n    A non-proxy subclass of a proxy, it should get a new table.\n    \"\"\"\n    status = models.CharField(max_length=80)\n\n# We can even have proxies of proxies (and subclass of those).\nclass MyPersonProxy(MyPerson):\n    class Meta:\n        proxy = True\n\nclass LowerStatusPerson(MyPersonProxy):\n    status = models.CharField(max_length=80)\n\n@python_2_unicode_compatible\nclass User(models.Model):\n    name = models.CharField(max_length=100)\n\n    def __str__(self):\n        return self.name\n\nclass UserProxy(User):\n    class Meta:\n        proxy = True\n\nclass UserProxyProxy(UserProxy):\n    class Meta:\n        proxy = True\n\n# We can still use `select_related()` to include related models in our querysets.\nclass Country(models.Model):\n    name = models.CharField(max_length=50)\n\n@python_2_unicode_compatible\nclass State(models.Model):\n    name = models.CharField(max_length=50)\n    country = models.ForeignKey(Country)\n\n    def __str__(self):\n        return self.name\n\nclass StateProxy(State):\n    class Meta:\n        proxy = True\n\n# Proxy models still works with filters (on related fields)\n# and select_related, even when mixed with model inheritance\nclass BaseUser(models.Model):\n    name = models.CharField(max_length=255)\n\nclass TrackerUser(BaseUser):\n    status = models.CharField(max_length=50)\n\nclass ProxyTrackerUser(TrackerUser):\n    class Meta:\n        proxy = True\n\n\n@python_2_unicode_compatible\nclass Issue(models.Model):\n    summary = models.CharField(max_length=255)\n    assignee = models.ForeignKey(TrackerUser)\n\n    def __str__(self):\n        return ':'.join((self.__class__.__name__,self.summary,))\n\nclass Bug(Issue):\n    version = models.CharField(max_length=50)\n    reporter = models.ForeignKey(BaseUser)\n\nclass ProxyBug(Bug):\n    \"\"\"\n    Proxy of an inherited class\n    \"\"\"\n    class Meta:\n        proxy = True\n\n\nclass ProxyProxyBug(ProxyBug):\n    \"\"\"\n    A proxy of proxy model with related field\n    \"\"\"\n    class Meta:\n        proxy = True\n\nclass Improvement(Issue):\n    \"\"\"\n    A model that has relation to a proxy model\n    or to a proxy of proxy model\n    \"\"\"\n    version = models.CharField(max_length=50)\n    reporter = models.ForeignKey(ProxyTrackerUser)\n    associated_bug = models.ForeignKey(ProxyProxyBug)\n\nclass ProxyImprovement(Improvement):\n    class Meta:\n        proxy = True\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/proxy_models/tests.py",
    "content": "from __future__ import absolute_import, unicode_literals\nimport copy\n\nfrom django.conf import settings\nfrom django.contrib.contenttypes.models import ContentType\nfrom django.core import management\nfrom django.core.exceptions import FieldError\nfrom django.db import models, DEFAULT_DB_ALIAS\nfrom django.db.models import signals\nfrom django.db.models.loading import cache\nfrom django.test import TestCase\n\n\nfrom .models import (MyPerson, Person, StatusPerson, LowerStatusPerson,\n    MyPersonProxy, Abstract, OtherPerson, User, UserProxy, UserProxyProxy,\n    Country, State, StateProxy, TrackerUser, BaseUser, Bug, ProxyTrackerUser,\n    Improvement, ProxyProxyBug, ProxyBug, ProxyImprovement)\n\n\nclass ProxyModelTests(TestCase):\n    def test_same_manager_queries(self):\n        \"\"\"\n        The MyPerson model should be generating the same database queries as\n        the Person model (when the same manager is used in each case).\n        \"\"\"\n        my_person_sql = MyPerson.other.all().query.get_compiler(\n            DEFAULT_DB_ALIAS).as_sql()\n        person_sql = Person.objects.order_by(\"name\").query.get_compiler(\n            DEFAULT_DB_ALIAS).as_sql()\n        self.assertEqual(my_person_sql, person_sql)\n\n    def test_inheretance_new_table(self):\n        \"\"\"\n        The StatusPerson models should have its own table (it's using ORM-level\n        inheritance).\n        \"\"\"\n        sp_sql = StatusPerson.objects.all().query.get_compiler(\n            DEFAULT_DB_ALIAS).as_sql()\n        p_sql = Person.objects.all().query.get_compiler(\n            DEFAULT_DB_ALIAS).as_sql()\n        self.assertNotEqual(sp_sql, p_sql)\n\n    def test_basic_proxy(self):\n        \"\"\"\n        Creating a Person makes them accessible through the MyPerson proxy.\n        \"\"\"\n        person = Person.objects.create(name=\"Foo McBar\")\n        self.assertEqual(len(Person.objects.all()), 1)\n        self.assertEqual(len(MyPerson.objects.all()), 1)\n        self.assertEqual(MyPerson.objects.get(name=\"Foo McBar\").id, person.id)\n        self.assertFalse(MyPerson.objects.get(id=person.id).has_special_name())\n\n    def test_no_proxy(self):\n        \"\"\"\n        Person is not proxied by StatusPerson subclass.\n        \"\"\"\n        Person.objects.create(name=\"Foo McBar\")\n        self.assertEqual(list(StatusPerson.objects.all()), [])\n\n    def test_basic_proxy_reverse(self):\n        \"\"\"\n        A new MyPerson also shows up as a standard Person.\n        \"\"\"\n        MyPerson.objects.create(name=\"Bazza del Frob\")\n        self.assertEqual(len(MyPerson.objects.all()), 1)\n        self.assertEqual(len(Person.objects.all()), 1)\n\n        LowerStatusPerson.objects.create(status=\"low\", name=\"homer\")\n        lsps = [lsp.name for lsp in LowerStatusPerson.objects.all()]\n        self.assertEqual(lsps, [\"homer\"])\n\n    def test_correct_type_proxy_of_proxy(self):\n        \"\"\"\n        Correct type when querying a proxy of proxy\n        \"\"\"\n        Person.objects.create(name=\"Foo McBar\")\n        MyPerson.objects.create(name=\"Bazza del Frob\")\n        LowerStatusPerson.objects.create(status=\"low\", name=\"homer\")\n        pp = sorted([mpp.name for mpp in MyPersonProxy.objects.all()])\n        self.assertEqual(pp, ['Bazza del Frob', 'Foo McBar', 'homer'])\n\n    def test_proxy_included_in_ancestors(self):\n        \"\"\"\n        Proxy models are included in the ancestors for a model's DoesNotExist\n        and MultipleObjectsReturned\n        \"\"\"\n        Person.objects.create(name=\"Foo McBar\")\n        MyPerson.objects.create(name=\"Bazza del Frob\")\n        LowerStatusPerson.objects.create(status=\"low\", name=\"homer\")\n        max_id = Person.objects.aggregate(max_id=models.Max('id'))['max_id']\n\n        self.assertRaises(Person.DoesNotExist,\n            MyPersonProxy.objects.get,\n            name='Zathras'\n        )\n        self.assertRaises(Person.MultipleObjectsReturned,\n            MyPersonProxy.objects.get,\n            id__lt=max_id + 1\n        )\n        self.assertRaises(Person.DoesNotExist,\n            StatusPerson.objects.get,\n            name='Zathras'\n        )\n\n        sp1 = StatusPerson.objects.create(name='Bazza Jr.')\n        sp2 = StatusPerson.objects.create(name='Foo Jr.')\n        max_id = Person.objects.aggregate(max_id=models.Max('id'))['max_id']\n\n        self.assertRaises(Person.MultipleObjectsReturned,\n            StatusPerson.objects.get,\n            id__lt=max_id + 1\n        )\n\n    def test_abc(self):\n        \"\"\"\n        All base classes must be non-abstract\n        \"\"\"\n        def build_abc():\n            class NoAbstract(Abstract):\n                class Meta:\n                    proxy = True\n        self.assertRaises(TypeError, build_abc)\n\n    def test_no_cbc(self):\n        \"\"\"\n        The proxy must actually have one concrete base class\n        \"\"\"\n        def build_no_cbc():\n            class TooManyBases(Person, Abstract):\n                class Meta:\n                    proxy = True\n        self.assertRaises(TypeError, build_no_cbc)\n\n    def test_no_base_classes(self):\n        def build_no_base_classes():\n            class NoBaseClasses(models.Model):\n                class Meta:\n                    proxy = True\n        self.assertRaises(TypeError, build_no_base_classes)\n\n    def test_new_fields(self):\n        def build_new_fields():\n            class NoNewFields(Person):\n                newfield = models.BooleanField()\n\n                class Meta:\n                    proxy = True\n        self.assertRaises(FieldError, build_new_fields)\n\n    def test_swappable(self):\n        try:\n            # This test adds dummy applications to the app cache. These\n            # need to be removed in order to prevent bad interactions\n            # with the flush operation in other tests.\n            old_app_models = copy.deepcopy(cache.app_models)\n            old_app_store = copy.deepcopy(cache.app_store)\n\n            settings.TEST_SWAPPABLE_MODEL = 'proxy_models.AlternateModel'\n\n            class SwappableModel(models.Model):\n\n                class Meta:\n                    swappable = 'TEST_SWAPPABLE_MODEL'\n\n            class AlternateModel(models.Model):\n                pass\n\n            # You can't proxy a swapped model\n            with self.assertRaises(TypeError):\n                class ProxyModel(SwappableModel):\n\n                    class Meta:\n                        proxy = True\n        finally:\n            del settings.TEST_SWAPPABLE_MODEL\n            cache.app_models = old_app_models\n            cache.app_store = old_app_store\n\n    def test_myperson_manager(self):\n        Person.objects.create(name=\"fred\")\n        Person.objects.create(name=\"wilma\")\n        Person.objects.create(name=\"barney\")\n\n        resp = [p.name for p in MyPerson.objects.all()]\n        self.assertEqual(resp, ['barney', 'fred'])\n\n        resp = [p.name for p in MyPerson._default_manager.all()]\n        self.assertEqual(resp, ['barney', 'fred'])\n\n    def test_otherperson_manager(self):\n        Person.objects.create(name=\"fred\")\n        Person.objects.create(name=\"wilma\")\n        Person.objects.create(name=\"barney\")\n\n        resp = [p.name for p in OtherPerson.objects.all()]\n        self.assertEqual(resp, ['barney', 'wilma'])\n\n        resp = [p.name for p in OtherPerson.excluder.all()]\n        self.assertEqual(resp, ['barney', 'fred'])\n\n        resp = [p.name for p in OtherPerson._default_manager.all()]\n        self.assertEqual(resp, ['barney', 'wilma'])\n\n    def test_permissions_created(self):\n        from django.contrib.auth.models import Permission\n        try:\n            Permission.objects.get(name=\"May display users information\")\n        except Permission.DoesNotExist:\n            self.fail(\"The permission 'May display users information' has not been created\")\n\n    def test_proxy_model_signals(self):\n        \"\"\"\n        Test save signals for proxy models\n        \"\"\"\n        output = []\n\n        def make_handler(model, event):\n            def _handler(*args, **kwargs):\n                output.append('%s %s save' % (model, event))\n            return _handler\n\n        h1 = make_handler('MyPerson', 'pre')\n        h2 = make_handler('MyPerson', 'post')\n        h3 = make_handler('Person', 'pre')\n        h4 = make_handler('Person', 'post')\n\n        signals.pre_save.connect(h1, sender=MyPerson)\n        signals.post_save.connect(h2, sender=MyPerson)\n        signals.pre_save.connect(h3, sender=Person)\n        signals.post_save.connect(h4, sender=Person)\n\n        dino = MyPerson.objects.create(name=\"dino\")\n        self.assertEqual(output, [\n            'MyPerson pre save',\n            'MyPerson post save'\n        ])\n\n        output = []\n\n        h5 = make_handler('MyPersonProxy', 'pre')\n        h6 = make_handler('MyPersonProxy', 'post')\n\n        signals.pre_save.connect(h5, sender=MyPersonProxy)\n        signals.post_save.connect(h6, sender=MyPersonProxy)\n\n        dino = MyPersonProxy.objects.create(name=\"pebbles\")\n\n        self.assertEqual(output, [\n            'MyPersonProxy pre save',\n            'MyPersonProxy post save'\n        ])\n\n        signals.pre_save.disconnect(h1, sender=MyPerson)\n        signals.post_save.disconnect(h2, sender=MyPerson)\n        signals.pre_save.disconnect(h3, sender=Person)\n        signals.post_save.disconnect(h4, sender=Person)\n        signals.pre_save.disconnect(h5, sender=MyPersonProxy)\n        signals.post_save.disconnect(h6, sender=MyPersonProxy)\n\n    def test_content_type(self):\n        ctype = ContentType.objects.get_for_model\n        self.assertTrue(ctype(Person) is ctype(OtherPerson))\n\n    def test_user_userproxy_userproxyproxy(self):\n        User.objects.create(name='Bruce')\n\n        resp = [u.name for u in User.objects.all()]\n        self.assertEqual(resp, ['Bruce'])\n\n        resp = [u.name for u in UserProxy.objects.all()]\n        self.assertEqual(resp, ['Bruce'])\n\n        resp = [u.name for u in UserProxyProxy.objects.all()]\n        self.assertEqual(resp, ['Bruce'])\n\n    def test_proxy_for_model(self):\n        self.assertEqual(UserProxy, UserProxyProxy._meta.proxy_for_model)\n\n    def test_concrete_model(self):\n        self.assertEqual(User, UserProxyProxy._meta.concrete_model)\n\n    def test_proxy_delete(self):\n        \"\"\"\n        Proxy objects can be deleted\n        \"\"\"\n        User.objects.create(name='Bruce')\n        u2 = UserProxy.objects.create(name='George')\n\n        resp = [u.name for u in UserProxy.objects.all()]\n        self.assertEqual(resp, ['Bruce', 'George'])\n\n        u2.delete()\n\n        resp = [u.name for u in UserProxy.objects.all()]\n        self.assertEqual(resp, ['Bruce'])\n\n    def test_select_related(self):\n        \"\"\"\n        We can still use `select_related()` to include related models in our\n        querysets.\n        \"\"\"\n        country = Country.objects.create(name='Australia')\n        state = State.objects.create(name='New South Wales', country=country)\n\n        resp = [s.name for s in State.objects.select_related()]\n        self.assertEqual(resp, ['New South Wales'])\n\n        resp = [s.name for s in StateProxy.objects.select_related()]\n        self.assertEqual(resp, ['New South Wales'])\n\n        self.assertEqual(StateProxy.objects.get(name='New South Wales').name,\n            'New South Wales')\n\n        resp = StateProxy.objects.select_related().get(name='New South Wales')\n        self.assertEqual(resp.name, 'New South Wales')\n\n    def test_proxy_bug(self):\n        contributor = TrackerUser.objects.create(name='Contributor',\n            status='contrib')\n        someone = BaseUser.objects.create(name='Someone')\n        Bug.objects.create(summary='fix this', version='1.1beta',\n            assignee=contributor, reporter=someone)\n        pcontributor = ProxyTrackerUser.objects.create(name='OtherContributor',\n            status='proxy')\n        Improvement.objects.create(summary='improve that', version='1.1beta',\n            assignee=contributor, reporter=pcontributor,\n            associated_bug=ProxyProxyBug.objects.all()[0])\n\n        # Related field filter on proxy\n        resp = ProxyBug.objects.get(version__icontains='beta')\n        self.assertEqual(repr(resp), '<ProxyBug: ProxyBug:fix this>')\n\n        # Select related + filter on proxy\n        resp = ProxyBug.objects.select_related().get(version__icontains='beta')\n        self.assertEqual(repr(resp), '<ProxyBug: ProxyBug:fix this>')\n\n        # Proxy of proxy, select_related + filter\n        resp = ProxyProxyBug.objects.select_related().get(\n            version__icontains='beta'\n        )\n        self.assertEqual(repr(resp), '<ProxyProxyBug: ProxyProxyBug:fix this>')\n\n        # Select related + filter on a related proxy field\n        resp = ProxyImprovement.objects.select_related().get(\n            reporter__name__icontains='butor'\n        )\n        self.assertEqual(repr(resp),\n            '<ProxyImprovement: ProxyImprovement:improve that>'\n        )\n\n        # Select related + filter on a related proxy of proxy field\n        resp = ProxyImprovement.objects.select_related().get(\n            associated_bug__summary__icontains='fix'\n        )\n        self.assertEqual(repr(resp),\n            '<ProxyImprovement: ProxyImprovement:improve that>'\n        )\n\n    def test_proxy_load_from_fixture(self):\n        management.call_command('loaddata', 'mypeople.json', verbosity=0, commit=False)\n        p = MyPerson.objects.get(pk=100)\n        self.assertEqual(p.name, 'Elvis Presley')\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/raw_query/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/raw_query/fixtures/raw_query_books.json",
    "content": "[\n    {\n        \"pk\": 1,\n        \"model\": \"raw_query.author\",\n        \"fields\": {\n            \"dob\": \"1950-09-20\",\n            \"first_name\": \"Joe\",\n            \"last_name\": \"Smith\"\n        }\n    },\n    {\n        \"pk\": 2,\n        \"model\": \"raw_query.author\",\n        \"fields\": {\n            \"dob\": \"1920-04-02\",\n            \"first_name\": \"Jill\",\n            \"last_name\": \"Doe\"\n        }\n    },\n    {\n        \"pk\": 3,\n        \"model\": \"raw_query.author\",\n        \"fields\": {\n            \"dob\": \"1986-01-25\",\n            \"first_name\": \"Bob\",\n            \"last_name\": \"Smith\"\n        }\n    },\n    {\n        \"pk\": 4,\n        \"model\": \"raw_query.author\",\n        \"fields\": {\n            \"dob\": \"1932-05-10\",\n            \"first_name\": \"Bill\",\n            \"last_name\": \"Jones\"\n        }\n    },\n    {\n        \"pk\": 1,\n        \"model\": \"raw_query.book\",\n        \"fields\": {\n            \"author\": 1,\n            \"title\": \"The awesome book\",\n            \"paperback\": false,\n            \"opening_line\": \"It was a bright cold day in April and the clocks were striking thirteen.\"\n        }\n    },\n    {\n        \"pk\": 2,\n        \"model\": \"raw_query.book\",\n        \"fields\": {\n            \"author\": 1,\n            \"title\": \"The horrible book\",\n            \"paperback\": true,\n            \"opening_line\": \"On an evening in the latter part of May a middle-aged man was walking homeward from Shaston to the village of Marlott, in the adjoining Vale of Blakemore, or Blackmoor.\"\n        }\n    },\n    {\n        \"pk\": 3,\n        \"model\": \"raw_query.book\",\n        \"fields\": {\n            \"author\": 1,\n            \"title\": \"Another awesome book\",\n            \"paperback\": false,\n            \"opening_line\": \"A squat grey building of only thirty-four stories.\"\n        }\n    },\n    {\n        \"pk\": 4,\n        \"model\": \"raw_query.book\",\n        \"fields\": {\n            \"author\": 3,\n            \"title\": \"Some other book\",\n            \"paperback\": true,\n            \"opening_line\": \"It was the day my grandmother exploded.\"\n        }\n    },\n    {\n        \"pk\": 1,\n        \"model\": \"raw_query.coffee\",\n        \"fields\": {\n            \"brand\": \"dunkin doughnuts\"\n        }\n    },\n    {\n        \"pk\": 2,\n        \"model\": \"raw_query.coffee\",\n        \"fields\": {\n            \"brand\": \"starbucks\"\n        }\n    },\n    {\n        \"pk\": 1,\n        \"model\": \"raw_query.reviewer\",\n        \"fields\": {\n            \"reviewed\": [\n                2,\n                3,\n                4\n            ]\n        }\n    },\n    {\n        \"pk\": 2,\n        \"model\": \"raw_query.reviewer\",\n        \"fields\": {\n            \"reviewed\": []\n        }\n    }\n]\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/raw_query/models.py",
    "content": "from django.db import models\n\n\nclass Author(models.Model):\n    first_name = models.CharField(max_length=255)\n    last_name = models.CharField(max_length=255)\n    dob = models.DateField()\n\n    def __init__(self, *args, **kwargs):\n        super(Author, self).__init__(*args, **kwargs)\n        # Protect against annotations being passed to __init__ --\n        # this'll make the test suite get angry if annotations aren't\n        # treated differently than fields.\n        for k in kwargs:\n            assert k in [f.attname for f in self._meta.fields], \\\n                \"Author.__init__ got an unexpected parameter: %s\" % k\n\nclass Book(models.Model):\n    title = models.CharField(max_length=255)\n    author = models.ForeignKey(Author)\n    paperback = models.BooleanField()\n    opening_line = models.TextField()\n\nclass Coffee(models.Model):\n    brand = models.CharField(max_length=255, db_column=\"name\")\n\nclass Reviewer(models.Model):\n    reviewed = models.ManyToManyField(Book)\n\nclass FriendlyAuthor(Author):\n    pass\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/raw_query/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom datetime import date\n\nfrom django.db.models.query_utils import InvalidQuery\nfrom django.test import TestCase\n\nfrom .models import Author, Book, Coffee, Reviewer, FriendlyAuthor\n\n\nclass RawQueryTests(TestCase):\n    fixtures = ['raw_query_books.json']\n\n    def assertSuccessfulRawQuery(self, model, query, expected_results,\n            expected_annotations=(), params=[], translations=None):\n        \"\"\"\n        Execute the passed query against the passed model and check the output\n        \"\"\"\n        results = list(model.objects.raw(query, params=params, translations=translations))\n        self.assertProcessed(model, results, expected_results, expected_annotations)\n        self.assertAnnotations(results, expected_annotations)\n\n    def assertProcessed(self, model, results, orig, expected_annotations=()):\n        \"\"\"\n        Compare the results of a raw query against expected results\n        \"\"\"\n        self.assertEqual(len(results), len(orig))\n        for index, item in enumerate(results):\n            orig_item = orig[index]\n            for annotation in expected_annotations:\n                setattr(orig_item, *annotation)\n\n            for field in model._meta.fields:\n                # Check that all values on the model are equal\n                self.assertEqual(getattr(item,field.attname),\n                                  getattr(orig_item,field.attname))\n                # This includes checking that they are the same type\n                self.assertEqual(type(getattr(item,field.attname)),\n                                  type(getattr(orig_item,field.attname)))\n\n    def assertNoAnnotations(self, results):\n        \"\"\"\n        Check that the results of a raw query contain no annotations\n        \"\"\"\n        self.assertAnnotations(results, ())\n\n    def assertAnnotations(self, results, expected_annotations):\n        \"\"\"\n        Check that the passed raw query results contain the expected\n        annotations\n        \"\"\"\n        if expected_annotations:\n            for index, result in enumerate(results):\n                annotation, value = expected_annotations[index]\n                self.assertTrue(hasattr(result, annotation))\n                self.assertEqual(getattr(result, annotation), value)\n\n    def testSimpleRawQuery(self):\n        \"\"\"\n        Basic test of raw query with a simple database query\n        \"\"\"\n        query = \"SELECT * FROM raw_query_author\"\n        authors = Author.objects.all()\n        self.assertSuccessfulRawQuery(Author, query, authors)\n\n    def testRawQueryLazy(self):\n        \"\"\"\n        Raw queries are lazy: they aren't actually executed until they're\n        iterated over.\n        \"\"\"\n        q = Author.objects.raw('SELECT * FROM raw_query_author')\n        self.assertTrue(q.query.cursor is None)\n        list(q)\n        self.assertTrue(q.query.cursor is not None)\n\n    def testFkeyRawQuery(self):\n        \"\"\"\n        Test of a simple raw query against a model containing a foreign key\n        \"\"\"\n        query = \"SELECT * FROM raw_query_book\"\n        books = Book.objects.all()\n        self.assertSuccessfulRawQuery(Book, query, books)\n\n    def testDBColumnHandler(self):\n        \"\"\"\n        Test of a simple raw query against a model containing a field with\n        db_column defined.\n        \"\"\"\n        query = \"SELECT * FROM raw_query_coffee\"\n        coffees = Coffee.objects.all()\n        self.assertSuccessfulRawQuery(Coffee, query, coffees)\n\n    def testOrderHandler(self):\n        \"\"\"\n        Test of raw raw query's tolerance for columns being returned in any\n        order\n        \"\"\"\n        selects = (\n            ('dob, last_name, first_name, id'),\n            ('last_name, dob, first_name, id'),\n            ('first_name, last_name, dob, id'),\n        )\n\n        for select in selects:\n            query = \"SELECT %s FROM raw_query_author\" % select\n            authors = Author.objects.all()\n            self.assertSuccessfulRawQuery(Author, query, authors)\n\n    def testTranslations(self):\n        \"\"\"\n        Test of raw query's optional ability to translate unexpected result\n        column names to specific model fields\n        \"\"\"\n        query = \"SELECT first_name AS first, last_name AS last, dob, id FROM raw_query_author\"\n        translations = {'first': 'first_name', 'last': 'last_name'}\n        authors = Author.objects.all()\n        self.assertSuccessfulRawQuery(Author, query, authors, translations=translations)\n\n    def testParams(self):\n        \"\"\"\n        Test passing optional query parameters\n        \"\"\"\n        query = \"SELECT * FROM raw_query_author WHERE first_name = %s\"\n        author = Author.objects.all()[2]\n        params = [author.first_name]\n        results = list(Author.objects.raw(query, params=params))\n        self.assertProcessed(Author, results, [author])\n        self.assertNoAnnotations(results)\n        self.assertEqual(len(results), 1)\n\n    def testManyToMany(self):\n        \"\"\"\n        Test of a simple raw query against a model containing a m2m field\n        \"\"\"\n        query = \"SELECT * FROM raw_query_reviewer\"\n        reviewers = Reviewer.objects.all()\n        self.assertSuccessfulRawQuery(Reviewer, query, reviewers)\n\n    def testExtraConversions(self):\n        \"\"\"\n        Test to insure that extra translations are ignored.\n        \"\"\"\n        query = \"SELECT * FROM raw_query_author\"\n        translations = {'something': 'else'}\n        authors = Author.objects.all()\n        self.assertSuccessfulRawQuery(Author, query, authors, translations=translations)\n\n    def testMissingFields(self):\n        query = \"SELECT id, first_name, dob FROM raw_query_author\"\n        for author in Author.objects.raw(query):\n            self.assertNotEqual(author.first_name, None)\n            # last_name isn't given, but it will be retrieved on demand\n            self.assertNotEqual(author.last_name, None)\n\n    def testMissingFieldsWithoutPK(self):\n        query = \"SELECT first_name, dob FROM raw_query_author\"\n        try:\n            list(Author.objects.raw(query))\n            self.fail('Query without primary key should fail')\n        except InvalidQuery:\n            pass\n\n    def testAnnotations(self):\n        query = \"SELECT a.*, count(b.id) as book_count FROM raw_query_author a LEFT JOIN raw_query_book b ON a.id = b.author_id GROUP BY a.id, a.first_name, a.last_name, a.dob ORDER BY a.id\"\n        expected_annotations = (\n            ('book_count', 3),\n            ('book_count', 0),\n            ('book_count', 1),\n            ('book_count', 0),\n        )\n        authors = Author.objects.all()\n        self.assertSuccessfulRawQuery(Author, query, authors, expected_annotations)\n\n    def testWhiteSpaceQuery(self):\n        query = \"    SELECT * FROM raw_query_author\"\n        authors = Author.objects.all()\n        self.assertSuccessfulRawQuery(Author, query, authors)\n\n    def testMultipleIterations(self):\n        query = \"SELECT * FROM raw_query_author\"\n        normal_authors = Author.objects.all()\n        raw_authors = Author.objects.raw(query)\n\n        # First Iteration\n        first_iterations = 0\n        for index, raw_author in enumerate(raw_authors):\n            self.assertEqual(normal_authors[index], raw_author)\n            first_iterations += 1\n\n        # Second Iteration\n        second_iterations = 0\n        for index, raw_author in enumerate(raw_authors):\n            self.assertEqual(normal_authors[index], raw_author)\n            second_iterations += 1\n\n        self.assertEqual(first_iterations, second_iterations)\n\n    def testGetItem(self):\n        # Indexing on RawQuerySets\n        query = \"SELECT * FROM raw_query_author ORDER BY id ASC\"\n        third_author = Author.objects.raw(query)[2]\n        self.assertEqual(third_author.first_name, 'Bob')\n\n        first_two = Author.objects.raw(query)[0:2]\n        self.assertEqual(len(first_two), 2)\n\n        self.assertRaises(TypeError, lambda: Author.objects.raw(query)['test'])\n\n    def test_inheritance(self):\n        # date is the end of the Cuban Missile Crisis, I have no idea when\n        # Wesley was bron\n        f = FriendlyAuthor.objects.create(first_name=\"Wesley\", last_name=\"Chun\",\n            dob=date(1962, 10, 28))\n        query = \"SELECT * FROM raw_query_friendlyauthor\"\n        self.assertEqual(\n            [o.pk for o in FriendlyAuthor.objects.raw(query)], [f.pk]\n        )\n\n    def test_query_count(self):\n        self.assertNumQueries(1,\n            list, Author.objects.raw(\"SELECT * FROM raw_query_author\")\n        )\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/reserved_names/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/reserved_names/models.py",
    "content": "\"\"\"\n18. Using SQL reserved names\n\nNeed to use a reserved SQL name as a column name or table name? Need to include\na hyphen in a column or table name? No problem. Django quotes names\nappropriately behind the scenes, so your database won't complain about\nreserved-name usage.\n\"\"\"\n\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n@python_2_unicode_compatible\nclass Thing(models.Model):\n    when = models.CharField(max_length=1, primary_key=True)\n    join = models.CharField(max_length=1)\n    like = models.CharField(max_length=1)\n    drop = models.CharField(max_length=1)\n    alter = models.CharField(max_length=1)\n    having = models.CharField(max_length=1)\n    where = models.DateField(max_length=1)\n    has_hyphen = models.CharField(max_length=1, db_column='has-hyphen')\n    class Meta:\n       db_table = 'select'\n\n    def __str__(self):\n        return self.when\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/reserved_names/tests.py",
    "content": "from __future__ import absolute_import\n\nimport datetime\n\nfrom django.test import TestCase\n\nfrom .models import Thing\n\n\nclass ReservedNameTests(TestCase):\n    def generate(self):\n        day1 = datetime.date(2005, 1, 1)\n        t = Thing.objects.create(when='a', join='b', like='c', drop='d',\n            alter='e', having='f', where=day1, has_hyphen='h')\n        day2 = datetime.date(2006, 2, 2)\n        u = Thing.objects.create(when='h', join='i', like='j', drop='k',\n            alter='l', having='m', where=day2)\n\n    def test_simple(self):\n        day1 = datetime.date(2005, 1, 1)\n        t = Thing.objects.create(when='a', join='b', like='c', drop='d',\n            alter='e', having='f', where=day1, has_hyphen='h')\n        self.assertEqual(t.when, 'a')\n\n        day2 = datetime.date(2006, 2, 2)\n        u = Thing.objects.create(when='h', join='i', like='j', drop='k',\n            alter='l', having='m', where=day2)\n        self.assertEqual(u.when, 'h')\n\n    def test_order_by(self):\n        self.generate()\n        things = [t.when for t in Thing.objects.order_by('when')]\n        self.assertEqual(things, ['a', 'h'])\n\n    def test_fields(self):\n        self.generate()\n        v = Thing.objects.get(pk='a')\n        self.assertEqual(v.join, 'b')\n        self.assertEqual(v.where, datetime.date(year=2005, month=1, day=1))\n\n    def test_dates(self):\n        self.generate()\n        resp = Thing.objects.dates('where', 'year')\n        self.assertEqual(list(resp), [\n            datetime.datetime(2005, 1, 1, 0, 0),\n            datetime.datetime(2006, 1, 1, 0, 0),\n        ])\n\n    def test_month_filter(self):\n        self.generate()\n        self.assertEqual(Thing.objects.filter(where__month=1)[0].when, 'a')\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/reverse_lookup/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/reverse_lookup/models.py",
    "content": "\"\"\"\n25. Reverse lookups\n\nThis demonstrates the reverse lookup features of the database API.\n\"\"\"\n\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n@python_2_unicode_compatible\nclass User(models.Model):\n    name = models.CharField(max_length=200)\n\n    def __str__(self):\n        return self.name\n\n@python_2_unicode_compatible\nclass Poll(models.Model):\n    question = models.CharField(max_length=200)\n    creator = models.ForeignKey(User)\n\n    def __str__(self):\n        return self.question\n\n@python_2_unicode_compatible\nclass Choice(models.Model):\n    name = models.CharField(max_length=100)\n    poll = models.ForeignKey(Poll, related_name=\"poll_choice\")\n    related_poll = models.ForeignKey(Poll, related_name=\"related_choice\")\n\n    def __str__(self):\n        return self.name\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/reverse_lookup/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom django.core.exceptions import FieldError\nfrom django.test import TestCase\n\nfrom .models import User, Poll, Choice\n\n\nclass ReverseLookupTests(TestCase):\n\n    def setUp(self):\n        john = User.objects.create(name=\"John Doe\")\n        jim = User.objects.create(name=\"Jim Bo\")\n        first_poll = Poll.objects.create(\n            question=\"What's the first question?\",\n            creator=john\n        )\n        second_poll = Poll.objects.create(\n            question=\"What's the second question?\",\n            creator=jim\n        )\n        new_choice = Choice.objects.create(\n            poll=first_poll,\n            related_poll=second_poll,\n            name=\"This is the answer.\"\n        )\n\n    def test_reverse_by_field(self):\n        u1 = User.objects.get(\n            poll__question__exact=\"What's the first question?\"\n        )\n        self.assertEqual(u1.name, \"John Doe\")\n\n        u2 = User.objects.get(\n            poll__question__exact=\"What's the second question?\"\n        )\n        self.assertEqual(u2.name, \"Jim Bo\")\n\n    def test_reverse_by_related_name(self):\n        p1 = Poll.objects.get(poll_choice__name__exact=\"This is the answer.\")\n        self.assertEqual(p1.question, \"What's the first question?\")\n\n        p2 = Poll.objects.get(\n            related_choice__name__exact=\"This is the answer.\")\n        self.assertEqual(p2.question, \"What's the second question?\")\n\n    def test_reverse_field_name_disallowed(self):\n        \"\"\"\n        If a related_name is given you can't use the field name instead\n        \"\"\"\n        self.assertRaises(FieldError, Poll.objects.get,\n            choice__name__exact=\"This is the answer\")\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/save_delete_hooks/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/save_delete_hooks/models.py",
    "content": "\"\"\"\n13. Adding hooks before/after saving and deleting\n\nTo execute arbitrary code around ``save()`` and ``delete()``, just subclass\nthe methods.\n\"\"\"\nfrom __future__ import unicode_literals\n\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n@python_2_unicode_compatible\nclass Person(models.Model):\n    first_name = models.CharField(max_length=20)\n    last_name = models.CharField(max_length=20)\n\n    def __init__(self, *args, **kwargs):\n        super(Person, self).__init__(*args, **kwargs)\n        self.data = []\n\n    def __str__(self):\n        return \"%s %s\" % (self.first_name, self.last_name)\n\n    def save(self, *args, **kwargs):\n        self.data.append(\"Before save\")\n         # Call the \"real\" save() method\n        super(Person, self).save(*args, **kwargs)\n        self.data.append(\"After save\")\n\n    def delete(self):\n        self.data.append(\"Before deletion\")\n        # Call the \"real\" delete() method\n        super(Person, self).delete()\n        self.data.append(\"After deletion\")\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/save_delete_hooks/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom django.test import TestCase\nfrom django.utils import six\n\nfrom .models import Person\n\n\nclass SaveDeleteHookTests(TestCase):\n    def test_basic(self):\n        p = Person(first_name=\"John\", last_name=\"Smith\")\n        self.assertEqual(p.data, [])\n        p.save()\n        self.assertEqual(p.data, [\n            \"Before save\",\n            \"After save\",\n        ])\n\n        self.assertQuerysetEqual(\n            Person.objects.all(), [\n                \"John Smith\",\n            ],\n            six.text_type\n        )\n\n        p.delete()\n        self.assertEqual(p.data, [\n            \"Before save\",\n            \"After save\",\n            \"Before deletion\",\n            \"After deletion\",\n        ])\n        self.assertQuerysetEqual(Person.objects.all(), [])\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/select_for_update/__init__.py",
    "content": "#\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/select_for_update/models.py",
    "content": "from django.db import models\n\n\nclass Person(models.Model):\n    name = models.CharField(max_length=30)\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/select_for_update/tests.py",
    "content": "from __future__ import absolute_import\n\nimport sys\nimport time\n\nfrom django.conf import settings\nfrom django.db import transaction, connection\nfrom django.db.utils import ConnectionHandler, DEFAULT_DB_ALIAS, DatabaseError\nfrom django.test import (TransactionTestCase, skipIfDBFeature,\n    skipUnlessDBFeature)\nfrom django.utils import unittest\n\nfrom .models import Person\n\n# Some tests require threading, which might not be available. So create a\n# skip-test decorator for those test functions.\ntry:\n    import threading\nexcept ImportError:\n    threading = None\nrequires_threading = unittest.skipUnless(threading, 'requires threading')\n\n\nclass SelectForUpdateTests(TransactionTestCase):\n\n    def setUp(self):\n        transaction.enter_transaction_management(True)\n        transaction.managed(True)\n        self.person = Person.objects.create(name='Reinhardt')\n\n        # We have to commit here so that code in run_select_for_update can\n        # see this data.\n        transaction.commit()\n\n        # We need another database connection to test that one connection\n        # issuing a SELECT ... FOR UPDATE will block.\n        new_connections = ConnectionHandler(settings.DATABASES)\n        self.new_connection = new_connections[DEFAULT_DB_ALIAS]\n        self.new_connection.enter_transaction_management()\n        self.new_connection.managed(True)\n\n        # We need to set settings.DEBUG to True so we can capture\n        # the output SQL to examine.\n        self._old_debug = settings.DEBUG\n        settings.DEBUG = True\n\n    def tearDown(self):\n        try:\n            # We don't really care if this fails - some of the tests will set\n            # this in the course of their run.\n            transaction.managed(False)\n            transaction.leave_transaction_management()\n            self.new_connection.leave_transaction_management()\n        except transaction.TransactionManagementError:\n            pass\n        self.new_connection.close()\n        settings.DEBUG = self._old_debug\n        try:\n            self.end_blocking_transaction()\n        except (DatabaseError, AttributeError):\n            pass\n\n    def start_blocking_transaction(self):\n        # Start a blocking transaction. At some point,\n        # end_blocking_transaction() should be called.\n        self.cursor = self.new_connection.cursor()\n        sql = 'SELECT * FROM %(db_table)s %(for_update)s;' % {\n            'db_table': Person._meta.db_table,\n            'for_update': self.new_connection.ops.for_update_sql(),\n            }\n        self.cursor.execute(sql, ())\n        self.cursor.fetchone()\n\n    def end_blocking_transaction(self):\n        # Roll back the blocking transaction.\n        self.new_connection._rollback()\n\n    def has_for_update_sql(self, tested_connection, nowait=False):\n        # Examine the SQL that was executed to determine whether it\n        # contains the 'SELECT..FOR UPDATE' stanza.\n        for_update_sql = tested_connection.ops.for_update_sql(nowait)\n        sql = tested_connection.queries[-1]['sql']\n        return bool(sql.find(for_update_sql) > -1)\n\n    def check_exc(self, exc):\n        self.assertTrue(isinstance(exc, DatabaseError))\n\n    @skipUnlessDBFeature('has_select_for_update')\n    def test_for_update_sql_generated(self):\n        \"\"\"\n        Test that the backend's FOR UPDATE variant appears in\n        generated SQL when select_for_update is invoked.\n        \"\"\"\n        list(Person.objects.all().select_for_update())\n        self.assertTrue(self.has_for_update_sql(connection))\n\n    @skipUnlessDBFeature('has_select_for_update_nowait')\n    def test_for_update_sql_generated_nowait(self):\n        \"\"\"\n        Test that the backend's FOR UPDATE NOWAIT variant appears in\n        generated SQL when select_for_update is invoked.\n        \"\"\"\n        list(Person.objects.all().select_for_update(nowait=True))\n        self.assertTrue(self.has_for_update_sql(connection, nowait=True))\n\n    # In Python 2.6 beta and some final releases, exceptions raised in __len__\n    # are swallowed (Python issue 1242657), so these cases return an empty\n    # list, rather than raising an exception. Not a lot we can do about that,\n    # unfortunately, due to the way Python handles list() calls internally.\n    # Python 2.6.1 is the \"in the wild\" version affected by this, so we skip\n    # the test for that version.\n    @requires_threading\n    @skipUnlessDBFeature('has_select_for_update_nowait')\n    @unittest.skipIf(sys.version_info[:3] == (2, 6, 1), \"Python version is 2.6.1\")\n    def test_nowait_raises_error_on_block(self):\n        \"\"\"\n        If nowait is specified, we expect an error to be raised rather\n        than blocking.\n        \"\"\"\n        self.start_blocking_transaction()\n        status = []\n        thread = threading.Thread(\n            target=self.run_select_for_update,\n            args=(status,),\n            kwargs={'nowait': True},\n        )\n\n        thread.start()\n        time.sleep(1)\n        thread.join()\n        self.end_blocking_transaction()\n        self.check_exc(status[-1])\n\n    # In Python 2.6 beta and some final releases, exceptions raised in __len__\n    # are swallowed (Python issue 1242657), so these cases return an empty\n    # list, rather than raising an exception. Not a lot we can do about that,\n    # unfortunately, due to the way Python handles list() calls internally.\n    # Python 2.6.1 is the \"in the wild\" version affected by this, so we skip\n    # the test for that version.\n    @skipIfDBFeature('has_select_for_update_nowait')\n    @skipUnlessDBFeature('has_select_for_update')\n    @unittest.skipIf(sys.version_info[:3] == (2, 6, 1), \"Python version is 2.6.1\")\n    def test_unsupported_nowait_raises_error(self):\n        \"\"\"\n        If a SELECT...FOR UPDATE NOWAIT is run on a database backend\n        that supports FOR UPDATE but not NOWAIT, then we should find\n        that a DatabaseError is raised.\n        \"\"\"\n        self.assertRaises(\n            DatabaseError,\n            list,\n            Person.objects.all().select_for_update(nowait=True)\n        )\n\n    def run_select_for_update(self, status, nowait=False):\n        \"\"\"\n        Utility method that runs a SELECT FOR UPDATE against all\n        Person instances. After the select_for_update, it attempts\n        to update the name of the only record, save, and commit.\n\n        This function expects to run in a separate thread.\n        \"\"\"\n        status.append('started')\n        try:\n            # We need to enter transaction management again, as this is done on\n            # per-thread basis\n            transaction.enter_transaction_management(True)\n            transaction.managed(True)\n            people = list(\n                Person.objects.all().select_for_update(nowait=nowait)\n            )\n            people[0].name = 'Fred'\n            people[0].save()\n            transaction.commit()\n        except DatabaseError as e:\n            status.append(e)\n        finally:\n            # This method is run in a separate thread. It uses its own\n            # database connection. Close it without waiting for the GC.\n            connection.close()\n\n    @requires_threading\n    @skipUnlessDBFeature('has_select_for_update')\n    @skipUnlessDBFeature('supports_transactions')\n    def test_block(self):\n        \"\"\"\n        Check that a thread running a select_for_update that\n        accesses rows being touched by a similar operation\n        on another connection blocks correctly.\n        \"\"\"\n        # First, let's start the transaction in our thread.\n        self.start_blocking_transaction()\n\n        # Now, try it again using the ORM's select_for_update\n        # facility. Do this in a separate thread.\n        status = []\n        thread = threading.Thread(\n            target=self.run_select_for_update, args=(status,)\n        )\n\n        # The thread should immediately block, but we'll sleep\n        # for a bit to make sure.\n        thread.start()\n        sanity_count = 0\n        while len(status) != 1 and sanity_count < 10:\n            sanity_count += 1\n            time.sleep(1)\n        if sanity_count >= 10:\n            raise ValueError('Thread did not run and block')\n\n        # Check the person hasn't been updated. Since this isn't\n        # using FOR UPDATE, it won't block.\n        p = Person.objects.get(pk=self.person.pk)\n        self.assertEqual('Reinhardt', p.name)\n\n        # When we end our blocking transaction, our thread should\n        # be able to continue.\n        self.end_blocking_transaction()\n        thread.join(5.0)\n\n        # Check the thread has finished. Assuming it has, we should\n        # find that it has updated the person's name.\n        self.assertFalse(thread.isAlive())\n\n        # We must commit the transaction to ensure that MySQL gets a fresh read,\n        # since by default it runs in REPEATABLE READ mode\n        transaction.commit()\n\n        p = Person.objects.get(pk=self.person.pk)\n        self.assertEqual('Fred', p.name)\n\n    @requires_threading\n    @skipUnlessDBFeature('has_select_for_update')\n    def test_raw_lock_not_available(self):\n        \"\"\"\n        Check that running a raw query which can't obtain a FOR UPDATE lock\n        raises the correct exception\n        \"\"\"\n        self.start_blocking_transaction()\n        def raw(status):\n            try:\n                list(\n                    Person.objects.raw(\n                        'SELECT * FROM %s %s' % (\n                            Person._meta.db_table,\n                            connection.ops.for_update_sql(nowait=True)\n                        )\n                    )\n                )\n            except DatabaseError as e:\n                status.append(e)\n            finally:\n                # This method is run in a separate thread. It uses its own\n                # database connection. Close it without waiting for the GC.\n                connection.close()\n\n        status = []\n        thread = threading.Thread(target=raw, kwargs={'status': status})\n        thread.start()\n        time.sleep(1)\n        thread.join()\n        self.end_blocking_transaction()\n        self.check_exc(status[-1])\n\n    @skipUnlessDBFeature('has_select_for_update')\n    def test_transaction_dirty_managed(self):\n        \"\"\" Check that a select_for_update sets the transaction to be\n        dirty when executed under txn management. Setting the txn dirty\n        means that it will be either committed or rolled back by Django,\n        which will release any locks held by the SELECT FOR UPDATE.\n        \"\"\"\n        people = list(Person.objects.select_for_update())\n        self.assertTrue(transaction.is_dirty())\n\n    @skipUnlessDBFeature('has_select_for_update')\n    def test_transaction_not_dirty_unmanaged(self):\n        \"\"\" If we're not under txn management, the txn will never be\n        marked as dirty.\n        \"\"\"\n        transaction.managed(False)\n        transaction.leave_transaction_management()\n        people = list(Person.objects.select_for_update())\n        self.assertFalse(transaction.is_dirty())\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/select_related/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/select_related/models.py",
    "content": "\"\"\"\n41. Tests for select_related()\n\n``select_related()`` follows all relationships and pre-caches any foreign key\nvalues so that complex trees can be fetched in a single query. However, this\nisn't always a good idea, so the ``depth`` argument control how many \"levels\"\nthe select-related behavior will traverse.\n\"\"\"\n\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n# Who remembers high school biology?\n\n@python_2_unicode_compatible\nclass Domain(models.Model):\n    name = models.CharField(max_length=50)\n    def __str__(self):\n        return self.name\n\n@python_2_unicode_compatible\nclass Kingdom(models.Model):\n    name = models.CharField(max_length=50)\n    domain = models.ForeignKey(Domain)\n    def __str__(self):\n        return self.name\n\n@python_2_unicode_compatible\nclass Phylum(models.Model):\n    name = models.CharField(max_length=50)\n    kingdom = models.ForeignKey(Kingdom)\n    def __str__(self):\n        return self.name\n\n@python_2_unicode_compatible\nclass Klass(models.Model):\n    name = models.CharField(max_length=50)\n    phylum = models.ForeignKey(Phylum)\n    def __str__(self):\n        return self.name\n\n@python_2_unicode_compatible\nclass Order(models.Model):\n    name = models.CharField(max_length=50)\n    klass = models.ForeignKey(Klass)\n    def __str__(self):\n        return self.name\n\n@python_2_unicode_compatible\nclass Family(models.Model):\n    name = models.CharField(max_length=50)\n    order = models.ForeignKey(Order)\n    def __str__(self):\n        return self.name\n\n@python_2_unicode_compatible\nclass Genus(models.Model):\n    name = models.CharField(max_length=50)\n    family = models.ForeignKey(Family)\n    def __str__(self):\n        return self.name\n\n@python_2_unicode_compatible\nclass Species(models.Model):\n    name = models.CharField(max_length=50)\n    genus = models.ForeignKey(Genus)\n    def __str__(self):\n        return self.name\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/select_related/tests.py",
    "content": "from __future__ import absolute_import, unicode_literals\n\nfrom django.test import TestCase\n\nfrom .models import Domain, Kingdom, Phylum, Klass, Order, Family, Genus, Species\n\n\nclass SelectRelatedTests(TestCase):\n\n    def create_tree(self, stringtree):\n        \"\"\"\n        Helper to create a complete tree.\n        \"\"\"\n        names = stringtree.split()\n        models = [Domain, Kingdom, Phylum, Klass, Order, Family, Genus, Species]\n        assert len(names) == len(models), (names, models)\n\n        parent = None\n        for name, model in zip(names, models):\n            try:\n                obj = model.objects.get(name=name)\n            except model.DoesNotExist:\n                obj = model(name=name)\n            if parent:\n                setattr(obj, parent.__class__.__name__.lower(), parent)\n            obj.save()\n            parent = obj\n\n    def create_base_data(self):\n        self.create_tree(\"Eukaryota Animalia Anthropoda Insecta Diptera Drosophilidae Drosophila melanogaster\")\n        self.create_tree(\"Eukaryota Animalia Chordata Mammalia Primates Hominidae Homo sapiens\")\n        self.create_tree(\"Eukaryota Plantae Magnoliophyta Magnoliopsida Fabales Fabaceae Pisum sativum\")\n        self.create_tree(\"Eukaryota Fungi Basidiomycota Homobasidiomycatae Agaricales Amanitacae Amanita muscaria\")\n\n    def setUp(self):\n        # The test runner sets settings.DEBUG to False, but we want to gather\n        # queries so we'll set it to True here and reset it at the end of the\n        # test case.\n        self.create_base_data()\n\n    def test_access_fks_without_select_related(self):\n        \"\"\"\n        Normally, accessing FKs doesn't fill in related objects\n        \"\"\"\n        with self.assertNumQueries(8):\n            fly = Species.objects.get(name=\"melanogaster\")\n            domain = fly.genus.family.order.klass.phylum.kingdom.domain\n            self.assertEqual(domain.name, 'Eukaryota')\n\n    def test_access_fks_with_select_related(self):\n        \"\"\"\n        A select_related() call will fill in those related objects without any\n        extra queries\n        \"\"\"\n        with self.assertNumQueries(1):\n            person = Species.objects.select_related(depth=10).get(name=\"sapiens\")\n            domain = person.genus.family.order.klass.phylum.kingdom.domain\n            self.assertEqual(domain.name, 'Eukaryota')\n\n    def test_list_without_select_related(self):\n        \"\"\"\n        select_related() also of course applies to entire lists, not just\n        items. This test verifies the expected behavior without select_related.\n        \"\"\"\n        with self.assertNumQueries(9):\n            world = Species.objects.all()\n            families = [o.genus.family.name for o in world]\n            self.assertEqual(sorted(families), [\n                'Amanitacae',\n                'Drosophilidae',\n                'Fabaceae',\n                'Hominidae',\n            ])\n\n    def test_list_with_select_related(self):\n        \"\"\"\n        select_related() also of course applies to entire lists, not just\n        items. This test verifies the expected behavior with select_related.\n        \"\"\"\n        with self.assertNumQueries(1):\n            world = Species.objects.all().select_related()\n            families = [o.genus.family.name for o in world]\n            self.assertEqual(sorted(families), [\n                'Amanitacae',\n                'Drosophilidae',\n                'Fabaceae',\n                'Hominidae',\n            ])\n\n    def test_depth(self, depth=1, expected=7):\n        \"\"\"\n        The \"depth\" argument to select_related() will stop the descent at a\n        particular level.\n        \"\"\"\n        # Notice: one fewer queries than above because of depth=1\n        with self.assertNumQueries(expected):\n            pea = Species.objects.select_related(depth=depth).get(name=\"sativum\")\n            self.assertEqual(\n                pea.genus.family.order.klass.phylum.kingdom.domain.name,\n                'Eukaryota'\n            )\n\n    def test_larger_depth(self):\n        \"\"\"\n        The \"depth\" argument to select_related() will stop the descent at a\n        particular level.  This tests a larger depth value.\n        \"\"\"\n        self.test_depth(depth=5, expected=3)\n\n    def test_list_with_depth(self):\n        \"\"\"\n        The \"depth\" argument to select_related() will stop the descent at a\n        particular level. This can be used on lists as well.\n        \"\"\"\n        with self.assertNumQueries(5):\n            world = Species.objects.all().select_related(depth=2)\n            orders = [o.genus.family.order.name for o in world]\n            self.assertEqual(sorted(orders),\n                ['Agaricales', 'Diptera', 'Fabales', 'Primates'])\n\n    def test_select_related_with_extra(self):\n        s = Species.objects.all().select_related(depth=1)\\\n            .extra(select={'a': 'select_related_species.id + 10'})[0]\n        self.assertEqual(s.id + 10, s.a)\n\n    def test_certain_fields(self):\n        \"\"\"\n        The optional fields passed to select_related() control which related\n        models we pull in. This allows for smaller queries and can act as an\n        alternative (or, in addition to) the depth parameter.\n\n        In this case, we explicitly say to select the 'genus' and\n        'genus.family' models, leading to the same number of queries as before.\n        \"\"\"\n        with self.assertNumQueries(1):\n            world = Species.objects.select_related('genus__family')\n            families = [o.genus.family.name for o in world]\n            self.assertEqual(sorted(families),\n                ['Amanitacae', 'Drosophilidae', 'Fabaceae', 'Hominidae'])\n\n    def test_more_certain_fields(self):\n        \"\"\"\n        In this case, we explicitly say to select the 'genus' and\n        'genus.family' models, leading to the same number of queries as before.\n        \"\"\"\n        with self.assertNumQueries(2):\n            world = Species.objects.filter(genus__name='Amanita')\\\n                .select_related('genus__family')\n            orders = [o.genus.family.order.name for o in world]\n            self.assertEqual(orders, ['Agaricales'])\n\n    def test_field_traversal(self):\n        with self.assertNumQueries(1):\n            s = Species.objects.all().select_related('genus__family__order'\n                ).order_by('id')[0:1].get().genus.family.order.name\n            self.assertEqual(s, 'Diptera')\n\n    def test_depth_fields_fails(self):\n        self.assertRaises(TypeError,\n            Species.objects.select_related,\n            'genus__family__order', depth=4\n        )\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/serializers/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/serializers/models.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\n42. Serialization\n\n``django.core.serializers`` provides interfaces to converting Django\n``QuerySet`` objects to and from \"flat\" data (i.e. strings).\n\"\"\"\nfrom __future__ import unicode_literals\n\nfrom decimal import Decimal\n\nfrom django.db import models\nfrom django.utils import six\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n@python_2_unicode_compatible\nclass Category(models.Model):\n    name = models.CharField(max_length=20)\n\n    class Meta:\n       ordering = ('name',)\n\n    def __str__(self):\n        return self.name\n\n\n@python_2_unicode_compatible\nclass Author(models.Model):\n    name = models.CharField(max_length=20)\n\n    class Meta:\n        ordering = ('name',)\n\n    def __str__(self):\n        return self.name\n\n\n@python_2_unicode_compatible\nclass Article(models.Model):\n    author = models.ForeignKey(Author)\n    headline = models.CharField(max_length=50)\n    pub_date = models.DateTimeField()\n    categories = models.ManyToManyField(Category)\n\n    class Meta:\n       ordering = ('pub_date',)\n\n    def __str__(self):\n        return self.headline\n\n\n@python_2_unicode_compatible\nclass AuthorProfile(models.Model):\n    author = models.OneToOneField(Author, primary_key=True)\n    date_of_birth = models.DateField()\n\n    def __str__(self):\n        return \"Profile of %s\" % self.author\n\n\n@python_2_unicode_compatible\nclass Actor(models.Model):\n    name = models.CharField(max_length=20, primary_key=True)\n\n    class Meta:\n        ordering = ('name',)\n\n    def __str__(self):\n        return self.name\n\n\n@python_2_unicode_compatible\nclass Movie(models.Model):\n    actor = models.ForeignKey(Actor)\n    title = models.CharField(max_length=50)\n    price = models.DecimalField(max_digits=6, decimal_places=2, default=Decimal('0.00'))\n\n    class Meta:\n       ordering = ('title',)\n\n    def __str__(self):\n        return self.title\n\n\nclass Score(models.Model):\n    score = models.FloatField()\n\n\n@python_2_unicode_compatible\nclass Team(object):\n    def __init__(self, title):\n        self.title = title\n\n    def __str__(self):\n        raise NotImplementedError(\"Not so simple\")\n\n    def to_string(self):\n        return \"%s\" % self.title\n\n\nclass TeamField(six.with_metaclass(models.SubfieldBase, models.CharField)):\n\n    def __init__(self):\n        super(TeamField, self).__init__(max_length=100)\n\n    def get_db_prep_save(self, value, connection):\n        return six.text_type(value.title)\n\n    def to_python(self, value):\n        if isinstance(value, Team):\n            return value\n        return Team(value)\n\n    def value_to_string(self, obj):\n        return self._get_val_from_obj(obj).to_string()\n\n\n@python_2_unicode_compatible\nclass Player(models.Model):\n    name = models.CharField(max_length=50)\n    rank = models.IntegerField()\n    team = TeamField()\n\n    def __str__(self):\n        return '%s (%d) playing for %s' % (self.name, self.rank, self.team.to_string())\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/serializers/tests.py",
    "content": "from __future__ import absolute_import, unicode_literals\n\n# -*- coding: utf-8 -*-\nimport json\nfrom datetime import datetime\nfrom xml.dom import minidom\n\nfrom django.conf import settings\nfrom django.core import serializers\nfrom django.db import transaction, connection\nfrom django.test import TestCase, TransactionTestCase, Approximate\nfrom django.utils import six\nfrom django.utils.six import StringIO\nfrom django.utils import unittest\n\nfrom .models import (Category, Author, Article, AuthorProfile, Actor, Movie,\n    Score, Player, Team)\n\n\nclass SerializerRegistrationTests(unittest.TestCase):\n    def setUp(self):\n        self.old_SERIALIZATION_MODULES = getattr(settings, 'SERIALIZATION_MODULES', None)\n        self.old_serializers = serializers._serializers\n\n        serializers._serializers = {}\n        settings.SERIALIZATION_MODULES = {\n            \"json2\" : \"django.core.serializers.json\",\n        }\n\n    def tearDown(self):\n        serializers._serializers = self.old_serializers\n        if self.old_SERIALIZATION_MODULES:\n            settings.SERIALIZATION_MODULES = self.old_SERIALIZATION_MODULES\n        else:\n            delattr(settings, 'SERIALIZATION_MODULES')\n\n    def test_register(self):\n        \"Registering a new serializer populates the full registry. Refs #14823\"\n        serializers.register_serializer('json3', 'django.core.serializers.json')\n\n        public_formats = serializers.get_public_serializer_formats()\n        self.assertIn('json3', public_formats)\n        self.assertIn('json2', public_formats)\n        self.assertIn('xml', public_formats)\n\n    def test_unregister(self):\n        \"Unregistering a serializer doesn't cause the registry to be repopulated. Refs #14823\"\n        serializers.unregister_serializer('xml')\n        serializers.register_serializer('json3', 'django.core.serializers.json')\n\n        public_formats = serializers.get_public_serializer_formats()\n\n        self.assertNotIn('xml', public_formats)\n        self.assertIn('json3', public_formats)\n\n    def test_builtin_serializers(self):\n        \"Requesting a list of serializer formats popuates the registry\"\n        all_formats = set(serializers.get_serializer_formats())\n        public_formats = set(serializers.get_public_serializer_formats())\n\n        self.assertIn('xml', all_formats),\n        self.assertIn('xml', public_formats)\n\n        self.assertIn('json2', all_formats)\n        self.assertIn('json2', public_formats)\n\n        self.assertIn('python', all_formats)\n        self.assertNotIn('python', public_formats)\n\nclass SerializersTestBase(object):\n    @staticmethod\n    def _comparison_value(value):\n        return value\n\n    def setUp(self):\n        sports = Category.objects.create(name=\"Sports\")\n        music = Category.objects.create(name=\"Music\")\n        op_ed = Category.objects.create(name=\"Op-Ed\")\n\n        self.joe = Author.objects.create(name=\"Joe\")\n        self.jane = Author.objects.create(name=\"Jane\")\n\n        self.a1 = Article(\n            author=self.jane,\n            headline=\"Poker has no place on ESPN\",\n            pub_date=datetime(2006, 6, 16, 11, 00)\n        )\n        self.a1.save()\n        self.a1.categories = [sports, op_ed]\n\n        self.a2 = Article(\n            author=self.joe,\n            headline=\"Time to reform copyright\",\n            pub_date=datetime(2006, 6, 16, 13, 00, 11, 345)\n        )\n        self.a2.save()\n        self.a2.categories = [music, op_ed]\n\n    def test_serialize(self):\n        \"\"\"Tests that basic serialization works.\"\"\"\n        serial_str = serializers.serialize(self.serializer_name,\n                                           Article.objects.all())\n        self.assertTrue(self._validate_output(serial_str))\n\n    def test_serializer_roundtrip(self):\n        \"\"\"Tests that serialized content can be deserialized.\"\"\"\n        serial_str = serializers.serialize(self.serializer_name,\n                                           Article.objects.all())\n        models = list(serializers.deserialize(self.serializer_name, serial_str))\n        self.assertEqual(len(models), 2)\n\n    def test_altering_serialized_output(self):\n        \"\"\"\n        Tests the ability to create new objects by\n        modifying serialized content.\n        \"\"\"\n        old_headline = \"Poker has no place on ESPN\"\n        new_headline = \"Poker has no place on television\"\n        serial_str = serializers.serialize(self.serializer_name,\n                                           Article.objects.all())\n        serial_str = serial_str.replace(old_headline, new_headline)\n        models = list(serializers.deserialize(self.serializer_name, serial_str))\n\n        # Prior to saving, old headline is in place\n        self.assertTrue(Article.objects.filter(headline=old_headline))\n        self.assertFalse(Article.objects.filter(headline=new_headline))\n\n        for model in models:\n            model.save()\n\n        # After saving, new headline is in place\n        self.assertTrue(Article.objects.filter(headline=new_headline))\n        self.assertFalse(Article.objects.filter(headline=old_headline))\n\n    def test_one_to_one_as_pk(self):\n        \"\"\"\n        Tests that if you use your own primary key field\n        (such as a OneToOneField), it doesn't appear in the\n        serialized field list - it replaces the pk identifier.\n        \"\"\"\n        profile = AuthorProfile(author=self.joe,\n                                date_of_birth=datetime(1970,1,1))\n        profile.save()\n        serial_str = serializers.serialize(self.serializer_name,\n                                           AuthorProfile.objects.all())\n        self.assertFalse(self._get_field_values(serial_str, 'author'))\n\n        for obj in serializers.deserialize(self.serializer_name, serial_str):\n            self.assertEqual(obj.object.pk, self._comparison_value(self.joe.pk))\n\n    def test_serialize_field_subset(self):\n        \"\"\"Tests that output can be restricted to a subset of fields\"\"\"\n        valid_fields = ('headline','pub_date')\n        invalid_fields = (\"author\", \"categories\")\n        serial_str = serializers.serialize(self.serializer_name,\n                                    Article.objects.all(),\n                                    fields=valid_fields)\n        for field_name in invalid_fields:\n            self.assertFalse(self._get_field_values(serial_str, field_name))\n\n        for field_name in valid_fields:\n            self.assertTrue(self._get_field_values(serial_str, field_name))\n\n    def test_serialize_unicode(self):\n        \"\"\"Tests that unicode makes the roundtrip intact\"\"\"\n        actor_name = \"Za\\u017c\\u00f3\\u0142\\u0107\"\n        movie_title = 'G\\u0119\\u015bl\\u0105 ja\\u017a\\u0144'\n        ac = Actor(name=actor_name)\n        mv = Movie(title=movie_title, actor=ac)\n        ac.save()\n        mv.save()\n\n        serial_str = serializers.serialize(self.serializer_name, [mv])\n        self.assertEqual(self._get_field_values(serial_str, \"title\")[0], movie_title)\n        self.assertEqual(self._get_field_values(serial_str, \"actor\")[0], actor_name)\n\n        obj_list = list(serializers.deserialize(self.serializer_name, serial_str))\n        mv_obj = obj_list[0].object\n        self.assertEqual(mv_obj.title, movie_title)\n\n    def test_serialize_superfluous_queries(self):\n        \"\"\"Ensure no superfluous queries are made when serializing ForeignKeys\n\n        #17602\n        \"\"\"\n        ac = Actor(name='Actor name')\n        ac.save()\n        mv = Movie(title='Movie title', actor_id=ac.pk)\n        mv.save()\n\n        with self.assertNumQueries(0):\n            serial_str = serializers.serialize(self.serializer_name, [mv])\n\n    def test_serialize_with_null_pk(self):\n        \"\"\"\n        Tests that serialized data with no primary key results\n        in a model instance with no id\n        \"\"\"\n        category = Category(name=\"Reference\")\n        serial_str = serializers.serialize(self.serializer_name, [category])\n        pk_value = self._get_pk_values(serial_str)[0]\n        self.assertFalse(pk_value)\n\n        cat_obj = list(serializers.deserialize(self.serializer_name,\n                                               serial_str))[0].object\n        self.assertEqual(cat_obj.id, None)\n\n    def test_float_serialization(self):\n        \"\"\"Tests that float values serialize and deserialize intact\"\"\"\n        sc = Score(score=3.4)\n        sc.save()\n        serial_str = serializers.serialize(self.serializer_name, [sc])\n        deserial_objs = list(serializers.deserialize(self.serializer_name,\n                                                serial_str))\n        self.assertEqual(deserial_objs[0].object.score, Approximate(3.4, places=1))\n\n    def test_custom_field_serialization(self):\n        \"\"\"Tests that custom fields serialize and deserialize intact\"\"\"\n        team_str = \"Spartak Moskva\"\n        player = Player()\n        player.name = \"Soslan Djanaev\"\n        player.rank = 1\n        player.team = Team(team_str)\n        player.save()\n        serial_str = serializers.serialize(self.serializer_name,\n                                           Player.objects.all())\n        team = self._get_field_values(serial_str, \"team\")\n        self.assertTrue(team)\n        self.assertEqual(team[0], team_str)\n\n        deserial_objs = list(serializers.deserialize(self.serializer_name, serial_str))\n        self.assertEqual(deserial_objs[0].object.team.to_string(),\n                         player.team.to_string())\n\n    def test_pre_1000ad_date(self):\n        \"\"\"Tests that year values before 1000AD are properly formatted\"\"\"\n        # Regression for #12524 -- dates before 1000AD get prefixed\n        # 0's on the year\n        a = Article.objects.create(\n        author = self.jane,\n        headline = \"Nobody remembers the early years\",\n        pub_date = datetime(1, 2, 3, 4, 5, 6))\n\n        serial_str = serializers.serialize(self.serializer_name, [a])\n        date_values = self._get_field_values(serial_str, \"pub_date\")\n        self.assertEqual(date_values[0].replace('T', ' '), \"0001-02-03 04:05:06\")\n\n    def test_pkless_serialized_strings(self):\n        \"\"\"\n        Tests that serialized strings without PKs\n        can be turned into models\n        \"\"\"\n        deserial_objs = list(serializers.deserialize(self.serializer_name,\n                                                     self.pkless_str))\n        for obj in deserial_objs:\n            self.assertFalse(obj.object.id)\n            obj.save()\n        self.assertEqual(Category.objects.all().count(), 4)\n\n\nclass SerializersTransactionTestBase(object):\n    def test_forward_refs(self):\n        \"\"\"\n        Tests that objects ids can be referenced before they are\n        defined in the serialization data.\n        \"\"\"\n        # The deserialization process needs to be contained\n        # within a transaction in order to test forward reference\n        # handling.\n        transaction.enter_transaction_management()\n        transaction.managed(True)\n        objs = serializers.deserialize(self.serializer_name, self.fwd_ref_str)\n        with connection.constraint_checks_disabled():\n            for obj in objs:\n                obj.save()\n        transaction.commit()\n        transaction.leave_transaction_management()\n\n        for model_cls in (Category, Author, Article):\n            self.assertEqual(model_cls.objects.all().count(), 1)\n        art_obj = Article.objects.all()[0]\n        self.assertEqual(art_obj.categories.all().count(), 1)\n        self.assertEqual(art_obj.author.name, \"Agnes\")\n\n\nclass XmlSerializerTestCase(SerializersTestBase, TestCase):\n    serializer_name = \"xml\"\n    pkless_str = \"\"\"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<django-objects version=\"1.0\">\n    <object model=\"serializers.category\">\n        <field type=\"CharField\" name=\"name\">Reference</field>\n    </object>\n</django-objects>\"\"\"\n\n    @staticmethod\n    def _comparison_value(value):\n        # The XML serializer handles everything as strings, so comparisons\n        # need to be performed on the stringified value\n        return six.text_type(value)\n\n    @staticmethod\n    def _validate_output(serial_str):\n        try:\n            minidom.parseString(serial_str)\n        except Exception:\n            return False\n        else:\n            return True\n\n    @staticmethod\n    def _get_pk_values(serial_str):\n        ret_list = []\n        dom = minidom.parseString(serial_str)\n        fields = dom.getElementsByTagName(\"object\")\n        for field in fields:\n            ret_list.append(field.getAttribute(\"pk\"))\n        return ret_list\n\n    @staticmethod\n    def _get_field_values(serial_str, field_name):\n        ret_list = []\n        dom = minidom.parseString(serial_str)\n        fields = dom.getElementsByTagName(\"field\")\n        for field in fields:\n            if field.getAttribute(\"name\") == field_name:\n                temp = []\n                for child in field.childNodes:\n                    temp.append(child.nodeValue)\n                ret_list.append(\"\".join(temp))\n        return ret_list\n\nclass XmlSerializerTransactionTestCase(SerializersTransactionTestBase, TransactionTestCase):\n    serializer_name = \"xml\"\n    fwd_ref_str = \"\"\"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<django-objects version=\"1.0\">\n    <object pk=\"1\" model=\"serializers.article\">\n        <field to=\"serializers.author\" name=\"author\" rel=\"ManyToOneRel\">1</field>\n        <field type=\"CharField\" name=\"headline\">Forward references pose no problem</field>\n        <field type=\"DateTimeField\" name=\"pub_date\">2006-06-16T15:00:00</field>\n        <field to=\"serializers.category\" name=\"categories\" rel=\"ManyToManyRel\">\n            <object pk=\"1\"></object>\n        </field>\n    </object>\n    <object pk=\"1\" model=\"serializers.author\">\n        <field type=\"CharField\" name=\"name\">Agnes</field>\n    </object>\n    <object pk=\"1\" model=\"serializers.category\">\n        <field type=\"CharField\" name=\"name\">Reference</field></object>\n</django-objects>\"\"\"\n\n\nclass JsonSerializerTestCase(SerializersTestBase, TestCase):\n    serializer_name = \"json\"\n    pkless_str = \"\"\"[{\"pk\": null, \"model\": \"serializers.category\", \"fields\": {\"name\": \"Reference\"}}]\"\"\"\n\n    @staticmethod\n    def _validate_output(serial_str):\n        try:\n            json.loads(serial_str)\n        except Exception:\n            return False\n        else:\n            return True\n\n    @staticmethod\n    def _get_pk_values(serial_str):\n        ret_list = []\n        serial_list = json.loads(serial_str)\n        for obj_dict in serial_list:\n            ret_list.append(obj_dict[\"pk\"])\n        return ret_list\n\n    @staticmethod\n    def _get_field_values(serial_str, field_name):\n        ret_list = []\n        serial_list = json.loads(serial_str)\n        for obj_dict in serial_list:\n            if field_name in obj_dict[\"fields\"]:\n                ret_list.append(obj_dict[\"fields\"][field_name])\n        return ret_list\n\nclass JsonSerializerTransactionTestCase(SerializersTransactionTestBase, TransactionTestCase):\n    serializer_name = \"json\"\n    fwd_ref_str = \"\"\"[\n    {\n        \"pk\": 1,\n        \"model\": \"serializers.article\",\n        \"fields\": {\n            \"headline\": \"Forward references pose no problem\",\n            \"pub_date\": \"2006-06-16T15:00:00\",\n            \"categories\": [1],\n            \"author\": 1\n        }\n    },\n    {\n        \"pk\": 1,\n        \"model\": \"serializers.category\",\n        \"fields\": {\n            \"name\": \"Reference\"\n        }\n    },\n    {\n        \"pk\": 1,\n        \"model\": \"serializers.author\",\n        \"fields\": {\n            \"name\": \"Agnes\"\n        }\n    }]\"\"\"\n\ntry:\n    import yaml\nexcept ImportError:\n    pass\nelse:\n    class YamlSerializerTestCase(SerializersTestBase, TestCase):\n        serializer_name = \"yaml\"\n        fwd_ref_str = \"\"\"- fields:\n    headline: Forward references pose no problem\n    pub_date: 2006-06-16 15:00:00\n    categories: [1]\n    author: 1\n  pk: 1\n  model: serializers.article\n- fields:\n    name: Reference\n  pk: 1\n  model: serializers.category\n- fields:\n    name: Agnes\n  pk: 1\n  model: serializers.author\"\"\"\n\n        pkless_str = \"\"\"- fields:\n    name: Reference\n  pk: null\n  model: serializers.category\"\"\"\n\n        @staticmethod\n        def _validate_output(serial_str):\n            try:\n                yaml.safe_load(StringIO(serial_str))\n            except Exception:\n                return False\n            else:\n                return True\n\n        @staticmethod\n        def _get_pk_values(serial_str):\n            ret_list = []\n            stream = StringIO(serial_str)\n            for obj_dict in yaml.safe_load(stream):\n                ret_list.append(obj_dict[\"pk\"])\n            return ret_list\n\n        @staticmethod\n        def _get_field_values(serial_str, field_name):\n            ret_list = []\n            stream = StringIO(serial_str)\n            for obj_dict in yaml.safe_load(stream):\n                if \"fields\" in obj_dict and field_name in obj_dict[\"fields\"]:\n                    field_value = obj_dict[\"fields\"][field_name]\n                    # yaml.safe_load will return non-string objects for some\n                    # of the fields we are interested in, this ensures that\n                    # everything comes back as a string\n                    if isinstance(field_value, six.string_types):\n                        ret_list.append(field_value)\n                    else:\n                        ret_list.append(str(field_value))\n            return ret_list\n\n    class YamlSerializerTransactionTestCase(SerializersTransactionTestBase, TransactionTestCase):\n        serializer_name = \"yaml\"\n        fwd_ref_str = \"\"\"- fields:\n    headline: Forward references pose no problem\n    pub_date: 2006-06-16 15:00:00\n    categories: [1]\n    author: 1\n  pk: 1\n  model: serializers.article\n- fields:\n    name: Reference\n  pk: 1\n  model: serializers.category\n- fields:\n    name: Agnes\n  pk: 1\n  model: serializers.author\"\"\"\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/signals/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/signals/models.py",
    "content": "\"\"\"\nTesting signals before/after saving and deleting.\n\"\"\"\nfrom __future__ import unicode_literals\n\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n@python_2_unicode_compatible\nclass Person(models.Model):\n    first_name = models.CharField(max_length=20)\n    last_name = models.CharField(max_length=20)\n\n    def __str__(self):\n        return \"%s %s\" % (self.first_name, self.last_name)\n\n@python_2_unicode_compatible\nclass Car(models.Model):\n    make = models.CharField(max_length=20)\n    model = models.CharField(max_length=20)\n\n    def __str__(self):\n        return \"%s %s\" % (self.make, self.model)\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/signals/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom django.db.models import signals\nfrom django.dispatch import receiver\nfrom django.test import TestCase\nfrom django.utils import six\n\nfrom .models import Person, Car\n\n\n# #8285: signals can be any callable\nclass PostDeleteHandler(object):\n    def __init__(self, data):\n        self.data = data\n\n    def __call__(self, signal, sender, instance, **kwargs):\n        self.data.append(\n            (instance, instance.id is None)\n        )\n\nclass MyReceiver(object):\n    def __init__(self, param):\n        self.param = param\n        self._run = False\n\n    def __call__(self, signal, sender, **kwargs):\n        self._run = True\n        signal.disconnect(receiver=self, sender=sender)\n\nclass SignalTests(TestCase):\n    def test_basic(self):\n        # Save up the number of connected signals so that we can check at the\n        # end that all the signals we register get properly unregistered (#9989)\n        pre_signals = (\n            len(signals.pre_save.receivers),\n            len(signals.post_save.receivers),\n            len(signals.pre_delete.receivers),\n            len(signals.post_delete.receivers),\n        )\n\n        data = []\n\n        def pre_save_test(signal, sender, instance, **kwargs):\n            data.append(\n                (instance, kwargs.get(\"raw\", False))\n            )\n        signals.pre_save.connect(pre_save_test)\n\n        def post_save_test(signal, sender, instance, **kwargs):\n            data.append(\n                (instance, kwargs.get(\"created\"), kwargs.get(\"raw\", False))\n            )\n        signals.post_save.connect(post_save_test)\n\n        def pre_delete_test(signal, sender, instance, **kwargs):\n            data.append(\n                (instance, instance.id is None)\n            )\n        signals.pre_delete.connect(pre_delete_test)\n\n        post_delete_test = PostDeleteHandler(data)\n        signals.post_delete.connect(post_delete_test)\n\n        # throw a decorator syntax receiver into the mix\n        @receiver(signals.pre_save)\n        def pre_save_decorator_test(signal, sender, instance, **kwargs):\n            data.append(instance)\n\n        @receiver(signals.pre_save, sender=Car)\n        def pre_save_decorator_sender_test(signal, sender, instance, **kwargs):\n            data.append(instance)\n\n        p1 = Person(first_name=\"John\", last_name=\"Smith\")\n        self.assertEqual(data, [])\n        p1.save()\n        self.assertEqual(data, [\n            (p1, False),\n            p1,\n            (p1, True, False),\n        ])\n        data[:] = []\n\n        p1.first_name = \"Tom\"\n        p1.save()\n        self.assertEqual(data, [\n            (p1, False),\n            p1,\n            (p1, False, False),\n        ])\n        data[:] = []\n\n        # Car signal (sender defined)\n        c1 = Car(make=\"Volkswagon\", model=\"Passat\")\n        c1.save()\n        self.assertEqual(data, [\n            (c1, False),\n            c1,\n            c1,\n            (c1, True, False),\n        ])\n        data[:] = []\n\n        # Calling an internal method purely so that we can trigger a \"raw\" save.\n        p1.save_base(raw=True)\n        self.assertEqual(data, [\n            (p1, True),\n            p1,\n            (p1, False, True),\n        ])\n        data[:] = []\n\n        p1.delete()\n        self.assertEqual(data, [\n            (p1, False),\n            (p1, False),\n        ])\n        data[:] = []\n\n        p2 = Person(first_name=\"James\", last_name=\"Jones\")\n        p2.id = 99999\n        p2.save()\n        self.assertEqual(data, [\n            (p2, False),\n            p2,\n            (p2, True, False),\n        ])\n        data[:] = []\n\n        p2.id = 99998\n        p2.save()\n        self.assertEqual(data, [\n            (p2, False),\n            p2,\n            (p2, True, False),\n        ])\n        data[:] = []\n\n        p2.delete()\n        self.assertEqual(data, [\n            (p2, False),\n            (p2, False)\n        ])\n\n        self.assertQuerysetEqual(\n            Person.objects.all(), [\n                \"James Jones\",\n            ],\n            six.text_type\n        )\n\n        signals.post_delete.disconnect(post_delete_test)\n        signals.pre_delete.disconnect(pre_delete_test)\n        signals.post_save.disconnect(post_save_test)\n        signals.pre_save.disconnect(pre_save_test)\n        signals.pre_save.disconnect(pre_save_decorator_test)\n        signals.pre_save.disconnect(pre_save_decorator_sender_test, sender=Car)\n\n        # Check that all our signals got disconnected properly.\n        post_signals = (\n            len(signals.pre_save.receivers),\n            len(signals.post_save.receivers),\n            len(signals.pre_delete.receivers),\n            len(signals.post_delete.receivers),\n        )\n        self.assertEqual(pre_signals, post_signals)\n\n    def test_disconnect_in_dispatch(self):\n        \"\"\"\n        Test that signals that disconnect when being called don't mess future\n        dispatching.\n        \"\"\"\n        a, b = MyReceiver(1), MyReceiver(2)\n        signals.post_save.connect(sender=Person, receiver=a)\n        signals.post_save.connect(sender=Person, receiver=b)\n        p = Person.objects.create(first_name='John', last_name='Smith')\n\n        self.assertTrue(a._run)\n        self.assertTrue(b._run)\n        self.assertEqual(signals.post_save.receivers, [])\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/str/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/str/models.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\n2. Adding __str__() or __unicode__() to models\n\nAlthough it's not a strict requirement, each model should have a\n``_str__()`` or ``__unicode__()`` method to return a \"human-readable\"\nrepresentation of the object. Do this not only for your own sanity when dealing\nwith the interactive prompt, but also because objects' representations are used\nthroughout Django's automatically-generated admin.\n\nNormally,  you should write ``__unicode__()`` method, since this will work for\nall field types (and Django will automatically provide an appropriate\n``__str__()`` method). However, you can write a ``__str__()`` method directly,\nif you prefer. You must be careful to encode the results correctly, though.\n\"\"\"\n\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\nclass Article(models.Model):\n    headline = models.CharField(max_length=100)\n    pub_date = models.DateTimeField()\n\n    def __str__(self):\n        # Caution: this is only safe if you are certain that headline will be\n        # in ASCII.\n        return self.headline\n\n@python_2_unicode_compatible\nclass BrokenArticle(models.Model):\n    headline = models.CharField(max_length=100)\n    pub_date = models.DateTimeField()\n\n    def __unicode__(self):      # instead of __str__\n        return self.headline\n\n@python_2_unicode_compatible\nclass InternationalArticle(models.Model):\n    headline = models.CharField(max_length=100)\n    pub_date = models.DateTimeField()\n\n    def __str__(self):\n        return self.headline\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/str/tests.py",
    "content": " # -*- coding: utf-8 -*-\nfrom __future__ import absolute_import, unicode_literals\n\nimport datetime\n\nfrom django.test import TestCase\nfrom django.utils import six\nfrom django.utils.unittest import skipIf\n\nfrom .models import Article, BrokenArticle, InternationalArticle\n\n\nclass SimpleTests(TestCase):\n\n    @skipIf(six.PY3, \"tests a __str__ method returning unicode under Python 2\")\n    def test_basic(self):\n        a = Article.objects.create(\n            headline=b'Area man programs in Python',\n            pub_date=datetime.datetime(2005, 7, 28)\n        )\n        self.assertEqual(str(a), str('Area man programs in Python'))\n        self.assertEqual(repr(a), str('<Article: Area man programs in Python>'))\n\n    @skipIf(six.PY3, \"tests Model's default __str__ method under Python 2\")\n    def test_broken(self):\n        # Regression test for #19362.\n        a = BrokenArticle.objects.create(\n            headline='Girl wins €12.500 in lottery',\n            pub_date=datetime.datetime(2005, 7, 28)\n        )\n        six.assertRaisesRegex(self, RuntimeError, \"Did you apply \"\n            \"@python_2_unicode_compatible without defining __str__\\?\", str, a)\n\n    def test_international(self):\n        a = InternationalArticle.objects.create(\n            headline='Girl wins €12.500 in lottery',\n            pub_date=datetime.datetime(2005, 7, 28)\n        )\n        if six.PY3:\n            self.assertEqual(str(a), 'Girl wins €12.500 in lottery')\n        else:\n            # On Python 2, the default str() output will be the UTF-8 encoded\n            # output of __unicode__() -- or __str__() when the\n            # python_2_unicode_compatible decorator is used.\n            self.assertEqual(str(a), b'Girl wins \\xe2\\x82\\xac12.500 in lottery')\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/tablespaces/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/tablespaces/models.py",
    "content": "from django.db import models\n\n# Since the test database doesn't have tablespaces, it's impossible for Django\n# to create the tables for models where db_tablespace is set. To avoid this\n# problem, we mark the models as unmanaged, and temporarily revert them to\n# managed during each test. We also set them to use the same tables as the\n# \"reference\" models to avoid errors when other tests run 'syncdb'\n# (proxy_models_inheritance does).\n\nclass ScientistRef(models.Model):\n    name = models.CharField(max_length=50)\n\nclass ArticleRef(models.Model):\n    title = models.CharField(max_length=50, unique=True)\n    code = models.CharField(max_length=50, unique=True)\n    authors = models.ManyToManyField(ScientistRef, related_name='articles_written_set')\n    reviewers = models.ManyToManyField(ScientistRef, related_name='articles_reviewed_set')\n\nclass Scientist(models.Model):\n    name = models.CharField(max_length=50)\n    class Meta:\n        db_table = 'tablespaces_scientistref'\n        db_tablespace = 'tbl_tbsp'\n        managed = False\n\nclass Article(models.Model):\n    title = models.CharField(max_length=50, unique=True)\n    code = models.CharField(max_length=50, unique=True, db_tablespace='idx_tbsp')\n    authors = models.ManyToManyField(Scientist, related_name='articles_written_set')\n    reviewers = models.ManyToManyField(Scientist, related_name='articles_reviewed_set', db_tablespace='idx_tbsp')\n    class Meta:\n        db_table = 'tablespaces_articleref'\n        db_tablespace = 'tbl_tbsp'\n        managed = False\n\n# Also set the tables for automatically created models\n\nAuthors = Article._meta.get_field('authors').rel.through\nAuthors._meta.db_table = 'tablespaces_articleref_authors'\n\nReviewers = Article._meta.get_field('reviewers').rel.through\nReviewers._meta.db_table = 'tablespaces_articleref_reviewers'\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/tablespaces/tests.py",
    "content": "from __future__ import absolute_import\n\nimport copy\n\nfrom django.conf import settings\nfrom django.db import connection\nfrom django.db import models\nfrom django.db.models.loading import cache\nfrom django.core.management.color import no_style \nfrom django.test import TestCase, skipIfDBFeature, skipUnlessDBFeature\n\nfrom .models import Article, ArticleRef, Authors, Reviewers, Scientist, ScientistRef\n\n# We can't test the DEFAULT_TABLESPACE and DEFAULT_INDEX_TABLESPACE settings\n# because they're evaluated when the model class is defined. As a consequence,\n# @override_settings doesn't work, and the tests depend\n\ndef sql_for_table(model):\n    return '\\n'.join(connection.creation.sql_create_model(model, no_style())[0])\n\ndef sql_for_index(model):\n    return '\\n'.join(connection.creation.sql_indexes_for_model(model, no_style()))\n\n\nclass TablespacesTests(TestCase):\n\n    def setUp(self):\n        # The unmanaged models need to be removed after the test in order to\n        # prevent bad interactions with the flush operation in other tests.\n        self.old_app_models = copy.deepcopy(cache.app_models)\n        self.old_app_store = copy.deepcopy(cache.app_store)\n\n        for model in Article, Authors, Reviewers, Scientist:\n            model._meta.managed = True\n\n    def tearDown(self):\n        for model in Article, Authors, Reviewers, Scientist:\n            model._meta.managed = False\n\n        cache.app_models = self.old_app_models\n        cache.app_store = self.old_app_store\n        cache._get_models_cache = {}\n\n    def assertNumContains(self, haystack, needle, count):\n        real_count = haystack.count(needle)\n        self.assertEqual(real_count, count, \"Found %d instances of '%s', \"\n                \"expected %d\" % (real_count, needle, count))\n\n    @skipUnlessDBFeature('supports_tablespaces')\n    def test_tablespace_for_model(self):\n        sql = sql_for_table(Scientist).lower()\n        if settings.DEFAULT_INDEX_TABLESPACE:\n            # 1 for the table\n            self.assertNumContains(sql, 'tbl_tbsp', 1)\n            # 1 for the index on the primary key\n            self.assertNumContains(sql, settings.DEFAULT_INDEX_TABLESPACE, 1)\n        else:\n            # 1 for the table + 1 for the index on the primary key\n            self.assertNumContains(sql, 'tbl_tbsp', 2)\n\n    @skipIfDBFeature('supports_tablespaces')\n    def test_tablespace_ignored_for_model(self):\n        # No tablespace-related SQL\n        self.assertEqual(sql_for_table(Scientist),\n                         sql_for_table(ScientistRef))\n\n    @skipUnlessDBFeature('supports_tablespaces')\n    def test_tablespace_for_indexed_field(self):\n        sql = sql_for_table(Article).lower()\n        if settings.DEFAULT_INDEX_TABLESPACE:\n            # 1 for the table\n            self.assertNumContains(sql, 'tbl_tbsp', 1)\n            # 1 for the primary key + 1 for the index on code\n            self.assertNumContains(sql, settings.DEFAULT_INDEX_TABLESPACE, 2)\n        else:\n            # 1 for the table + 1 for the primary key + 1 for the index on code\n            self.assertNumContains(sql, 'tbl_tbsp', 3)\n\n        # 1 for the index on reference\n        self.assertNumContains(sql, 'idx_tbsp', 1)\n\n    @skipIfDBFeature('supports_tablespaces')\n    def test_tablespace_ignored_for_indexed_field(self):\n        # No tablespace-related SQL\n        self.assertEqual(sql_for_table(Article),\n                         sql_for_table(ArticleRef))\n\n    @skipUnlessDBFeature('supports_tablespaces')\n    def test_tablespace_for_many_to_many_field(self):\n        sql = sql_for_table(Authors).lower()\n        # The join table of the ManyToManyField goes to the model's tablespace,\n        # and its indexes too, unless DEFAULT_INDEX_TABLESPACE is set.\n        if settings.DEFAULT_INDEX_TABLESPACE:\n            # 1 for the table\n            self.assertNumContains(sql, 'tbl_tbsp', 1)\n            # 1 for the primary key\n            self.assertNumContains(sql, settings.DEFAULT_INDEX_TABLESPACE, 1)\n        else:\n            # 1 for the table + 1 for the index on the primary key\n            self.assertNumContains(sql, 'tbl_tbsp', 2)\n        self.assertNumContains(sql, 'idx_tbsp', 0)\n\n        sql = sql_for_index(Authors).lower()\n        # The ManyToManyField declares no db_tablespace, its indexes go to\n        # the model's tablespace, unless DEFAULT_INDEX_TABLESPACE is set.\n        if settings.DEFAULT_INDEX_TABLESPACE:\n            self.assertNumContains(sql, settings.DEFAULT_INDEX_TABLESPACE, 2)\n        else:\n            self.assertNumContains(sql, 'tbl_tbsp', 2)\n        self.assertNumContains(sql, 'idx_tbsp', 0)\n\n        sql = sql_for_table(Reviewers).lower()\n        # The join table of the ManyToManyField goes to the model's tablespace,\n        # and its indexes too, unless DEFAULT_INDEX_TABLESPACE is set.\n        if settings.DEFAULT_INDEX_TABLESPACE:\n            # 1 for the table\n            self.assertNumContains(sql, 'tbl_tbsp', 1)\n            # 1 for the primary key\n            self.assertNumContains(sql, settings.DEFAULT_INDEX_TABLESPACE, 1)\n        else:\n            # 1 for the table + 1 for the index on the primary key\n            self.assertNumContains(sql, 'tbl_tbsp', 2)\n        self.assertNumContains(sql, 'idx_tbsp', 0)\n\n        sql = sql_for_index(Reviewers).lower()\n        # The ManyToManyField declares db_tablespace, its indexes go there.\n        self.assertNumContains(sql, 'tbl_tbsp', 0)\n        self.assertNumContains(sql, 'idx_tbsp', 2)\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/test_client/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/test_client/fixtures/testdata.json",
    "content": "[\n    {\n        \"pk\": \"1\", \n        \"model\": \"auth.user\", \n        \"fields\": {\n            \"username\": \"testclient\", \n            \"first_name\": \"Test\", \n            \"last_name\": \"Client\", \n            \"is_active\": true, \n            \"is_superuser\": false, \n            \"is_staff\": false, \n            \"last_login\": \"2006-12-17 07:03:31\", \n            \"groups\": [], \n            \"user_permissions\": [], \n            \"password\": \"sha1$6efc0$f93efe9fd7542f25a7be94871ea45aa95de57161\", \n            \"email\": \"testclient@example.com\", \n            \"date_joined\": \"2006-12-17 07:03:31\"\n        }\n    },\n    {\n        \"pk\": \"2\", \n        \"model\": \"auth.user\", \n        \"fields\": {\n            \"username\": \"inactive\", \n            \"first_name\": \"Inactive\", \n            \"last_name\": \"User\", \n            \"is_active\": false, \n            \"is_superuser\": false, \n            \"is_staff\": false, \n            \"last_login\": \"2006-12-17 07:03:31\", \n            \"groups\": [], \n            \"user_permissions\": [], \n            \"password\": \"sha1$6efc0$f93efe9fd7542f25a7be94871ea45aa95de57161\", \n            \"email\": \"testclient@example.com\", \n            \"date_joined\": \"2006-12-17 07:03:31\"\n        }\n    },\n    {\n        \"pk\": \"3\", \n        \"model\": \"auth.user\", \n        \"fields\": {\n            \"username\": \"staff\", \n            \"first_name\": \"Staff\", \n            \"last_name\": \"Member\", \n            \"is_active\": true, \n            \"is_superuser\": false, \n            \"is_staff\": true, \n            \"last_login\": \"2006-12-17 07:03:31\", \n            \"groups\": [], \n            \"user_permissions\": [], \n            \"password\": \"sha1$6efc0$f93efe9fd7542f25a7be94871ea45aa95de57161\", \n            \"email\": \"testclient@example.com\", \n            \"date_joined\": \"2006-12-17 07:03:31\"\n        }\n    }\n]"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/test_client/models.py",
    "content": "# coding: utf-8\n\"\"\"\n39. Testing using the Test Client\n\nThe test client is a class that can act like a simple\nbrowser for testing purposes.\n\nIt allows the user to compose GET and POST requests, and\nobtain the response that the server gave to those requests.\nThe server Response objects are annotated with the details\nof the contexts and templates that were rendered during the\nprocess of serving the request.\n\n``Client`` objects are stateful - they will retain cookie (and\nthus session) details for the lifetime of the ``Client`` instance.\n\nThis is not intended as a replacement for Twill, Selenium, or\nother browser automation frameworks - it is here to allow\ntesting against the contexts and templates produced by a view,\nrather than the HTML rendered to the end-user.\n\n\"\"\"\nfrom __future__ import absolute_import, unicode_literals\n\nfrom django.conf import settings\nfrom django.core import mail\nfrom django.test import Client, TestCase, RequestFactory\nfrom django.test.utils import override_settings\n\nfrom .views import get_view\n\n@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))\nclass ClientTest(TestCase):\n    fixtures = ['testdata.json']\n\n    def test_get_view(self):\n        \"GET a view\"\n        # The data is ignored, but let's check it doesn't crash the system\n        # anyway.\n        data = {'var': '\\xf2'}\n        response = self.client.get('/test_client/get_view/', data)\n\n        # Check some response details\n        self.assertContains(response, 'This is a test')\n        self.assertEqual(response.context['var'], '\\xf2')\n        self.assertEqual(response.templates[0].name, 'GET Template')\n\n    def test_get_post_view(self):\n        \"GET a view that normally expects POSTs\"\n        response = self.client.get('/test_client/post_view/', {})\n\n        # Check some response details\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.templates[0].name, 'Empty GET Template')\n        self.assertTemplateUsed(response, 'Empty GET Template')\n        self.assertTemplateNotUsed(response, 'Empty POST Template')\n\n    def test_empty_post(self):\n        \"POST an empty dictionary to a view\"\n        response = self.client.post('/test_client/post_view/', {})\n\n        # Check some response details\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.templates[0].name, 'Empty POST Template')\n        self.assertTemplateNotUsed(response, 'Empty GET Template')\n        self.assertTemplateUsed(response, 'Empty POST Template')\n\n    def test_post(self):\n        \"POST some data to a view\"\n        post_data = {\n            'value': 37\n        }\n        response = self.client.post('/test_client/post_view/', post_data)\n\n        # Check some response details\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.context['data'], '37')\n        self.assertEqual(response.templates[0].name, 'POST Template')\n        self.assertContains(response, 'Data received')\n\n    def test_response_headers(self):\n        \"Check the value of HTTP headers returned in a response\"\n        response = self.client.get(\"/test_client/header_view/\")\n\n        self.assertEqual(response['X-DJANGO-TEST'], 'Slartibartfast')\n\n    def test_raw_post(self):\n        \"POST raw data (with a content type) to a view\"\n        test_doc = \"\"\"<?xml version=\"1.0\" encoding=\"utf-8\"?><library><book><title>Blink</title><author>Malcolm Gladwell</author></book></library>\"\"\"\n        response = self.client.post(\"/test_client/raw_post_view/\", test_doc,\n                                    content_type=\"text/xml\")\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.templates[0].name, \"Book template\")\n        self.assertEqual(response.content, b\"Blink - Malcolm Gladwell\")\n\n    def test_redirect(self):\n        \"GET a URL that redirects elsewhere\"\n        response = self.client.get('/test_client/redirect_view/')\n        # Check that the response was a 302 (redirect) and that\n        # assertRedirect() understands to put an implicit http://testserver/ in\n        # front of non-absolute URLs.\n        self.assertRedirects(response, '/test_client/get_view/')\n\n        host = 'django.testserver'\n        client_providing_host = Client(HTTP_HOST=host)\n        response = client_providing_host.get('/test_client/redirect_view/')\n        # Check that the response was a 302 (redirect) with absolute URI\n        self.assertRedirects(response, '/test_client/get_view/', host=host)\n\n    def test_redirect_with_query(self):\n        \"GET a URL that redirects with given GET parameters\"\n        response = self.client.get('/test_client/redirect_view/', {'var': 'value'})\n\n        # Check if parameters are intact\n        self.assertRedirects(response, 'http://testserver/test_client/get_view/?var=value')\n\n    def test_permanent_redirect(self):\n        \"GET a URL that redirects permanently elsewhere\"\n        response = self.client.get('/test_client/permanent_redirect_view/')\n        # Check that the response was a 301 (permanent redirect)\n        self.assertRedirects(response, 'http://testserver/test_client/get_view/', status_code=301)\n\n        client_providing_host = Client(HTTP_HOST='django.testserver')\n        response = client_providing_host.get('/test_client/permanent_redirect_view/')\n        # Check that the response was a 301 (permanent redirect) with absolute URI\n        self.assertRedirects(response, 'http://django.testserver/test_client/get_view/', status_code=301)\n\n    def test_temporary_redirect(self):\n        \"GET a URL that does a non-permanent redirect\"\n        response = self.client.get('/test_client/temporary_redirect_view/')\n        # Check that the response was a 302 (non-permanent redirect)\n        self.assertRedirects(response, 'http://testserver/test_client/get_view/', status_code=302)\n\n    def test_redirect_to_strange_location(self):\n        \"GET a URL that redirects to a non-200 page\"\n        response = self.client.get('/test_client/double_redirect_view/')\n\n        # Check that the response was a 302, and that\n        # the attempt to get the redirection location returned 301 when retrieved\n        self.assertRedirects(response, 'http://testserver/test_client/permanent_redirect_view/', target_status_code=301)\n\n    def test_follow_redirect(self):\n        \"A URL that redirects can be followed to termination.\"\n        response = self.client.get('/test_client/double_redirect_view/', follow=True)\n        self.assertRedirects(response, 'http://testserver/test_client/get_view/', status_code=302, target_status_code=200)\n        self.assertEqual(len(response.redirect_chain), 2)\n\n    def test_redirect_http(self):\n        \"GET a URL that redirects to an http URI\"\n        response = self.client.get('/test_client/http_redirect_view/',follow=True)\n        self.assertFalse(response.test_was_secure_request)\n\n    def test_redirect_https(self):\n        \"GET a URL that redirects to an https URI\"\n        response = self.client.get('/test_client/https_redirect_view/',follow=True)\n        self.assertTrue(response.test_was_secure_request)\n\n    def test_notfound_response(self):\n        \"GET a URL that responds as '404:Not Found'\"\n        response = self.client.get('/test_client/bad_view/')\n\n        # Check that the response was a 404, and that the content contains MAGIC\n        self.assertContains(response, 'MAGIC', status_code=404)\n\n    def test_valid_form(self):\n        \"POST valid data to a form\"\n        post_data = {\n            'text': 'Hello World',\n            'email': 'foo@example.com',\n            'value': 37,\n            'single': 'b',\n            'multi': ('b','c','e')\n        }\n        response = self.client.post('/test_client/form_view/', post_data)\n        self.assertEqual(response.status_code, 200)\n        self.assertTemplateUsed(response, \"Valid POST Template\")\n\n    def test_valid_form_with_hints(self):\n        \"GET a form, providing hints in the GET data\"\n        hints = {\n            'text': 'Hello World',\n            'multi': ('b','c','e')\n        }\n        response = self.client.get('/test_client/form_view/', data=hints)\n        self.assertEqual(response.status_code, 200)\n        self.assertTemplateUsed(response, \"Form GET Template\")\n        # Check that the multi-value data has been rolled out ok\n        self.assertContains(response, 'Select a valid choice.', 0)\n\n    def test_incomplete_data_form(self):\n        \"POST incomplete data to a form\"\n        post_data = {\n            'text': 'Hello World',\n            'value': 37\n        }\n        response = self.client.post('/test_client/form_view/', post_data)\n        self.assertContains(response, 'This field is required.', 3)\n        self.assertEqual(response.status_code, 200)\n        self.assertTemplateUsed(response, \"Invalid POST Template\")\n\n        self.assertFormError(response, 'form', 'email', 'This field is required.')\n        self.assertFormError(response, 'form', 'single', 'This field is required.')\n        self.assertFormError(response, 'form', 'multi', 'This field is required.')\n\n    def test_form_error(self):\n        \"POST erroneous data to a form\"\n        post_data = {\n            'text': 'Hello World',\n            'email': 'not an email address',\n            'value': 37,\n            'single': 'b',\n            'multi': ('b','c','e')\n        }\n        response = self.client.post('/test_client/form_view/', post_data)\n        self.assertEqual(response.status_code, 200)\n        self.assertTemplateUsed(response, \"Invalid POST Template\")\n\n        self.assertFormError(response, 'form', 'email', 'Enter a valid email address.')\n\n    def test_valid_form_with_template(self):\n        \"POST valid data to a form using multiple templates\"\n        post_data = {\n            'text': 'Hello World',\n            'email': 'foo@example.com',\n            'value': 37,\n            'single': 'b',\n            'multi': ('b','c','e')\n        }\n        response = self.client.post('/test_client/form_view_with_template/', post_data)\n        self.assertContains(response, 'POST data OK')\n        self.assertTemplateUsed(response, \"form_view.html\")\n        self.assertTemplateUsed(response, 'base.html')\n        self.assertTemplateNotUsed(response, \"Valid POST Template\")\n\n    def test_incomplete_data_form_with_template(self):\n        \"POST incomplete data to a form using multiple templates\"\n        post_data = {\n            'text': 'Hello World',\n            'value': 37\n        }\n        response = self.client.post('/test_client/form_view_with_template/', post_data)\n        self.assertContains(response, 'POST data has errors')\n        self.assertTemplateUsed(response, 'form_view.html')\n        self.assertTemplateUsed(response, 'base.html')\n        self.assertTemplateNotUsed(response, \"Invalid POST Template\")\n\n        self.assertFormError(response, 'form', 'email', 'This field is required.')\n        self.assertFormError(response, 'form', 'single', 'This field is required.')\n        self.assertFormError(response, 'form', 'multi', 'This field is required.')\n\n    def test_form_error_with_template(self):\n        \"POST erroneous data to a form using multiple templates\"\n        post_data = {\n            'text': 'Hello World',\n            'email': 'not an email address',\n            'value': 37,\n            'single': 'b',\n            'multi': ('b','c','e')\n        }\n        response = self.client.post('/test_client/form_view_with_template/', post_data)\n        self.assertContains(response, 'POST data has errors')\n        self.assertTemplateUsed(response, \"form_view.html\")\n        self.assertTemplateUsed(response, 'base.html')\n        self.assertTemplateNotUsed(response, \"Invalid POST Template\")\n\n        self.assertFormError(response, 'form', 'email', 'Enter a valid email address.')\n\n    def test_unknown_page(self):\n        \"GET an invalid URL\"\n        response = self.client.get('/test_client/unknown_view/')\n\n        # Check that the response was a 404\n        self.assertEqual(response.status_code, 404)\n\n    def test_url_parameters(self):\n        \"Make sure that URL ;-parameters are not stripped.\"\n        response = self.client.get('/test_client/unknown_view/;some-parameter')\n\n        # Check that the path in the response includes it (ignore that it's a 404)\n        self.assertEqual(response.request['PATH_INFO'], '/test_client/unknown_view/;some-parameter')\n\n    def test_view_with_login(self):\n        \"Request a page that is protected with @login_required\"\n\n        # Get the page without logging in. Should result in 302.\n        response = self.client.get('/test_client/login_protected_view/')\n        self.assertRedirects(response, 'http://testserver/accounts/login/?next=/test_client/login_protected_view/')\n\n        # Log in\n        login = self.client.login(username='testclient', password='password')\n        self.assertTrue(login, 'Could not log in')\n\n        # Request a page that requires a login\n        response = self.client.get('/test_client/login_protected_view/')\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.context['user'].username, 'testclient')\n\n    def test_view_with_method_login(self):\n        \"Request a page that is protected with a @login_required method\"\n\n        # Get the page without logging in. Should result in 302.\n        response = self.client.get('/test_client/login_protected_method_view/')\n        self.assertRedirects(response, 'http://testserver/accounts/login/?next=/test_client/login_protected_method_view/')\n\n        # Log in\n        login = self.client.login(username='testclient', password='password')\n        self.assertTrue(login, 'Could not log in')\n\n        # Request a page that requires a login\n        response = self.client.get('/test_client/login_protected_method_view/')\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.context['user'].username, 'testclient')\n\n    def test_view_with_login_and_custom_redirect(self):\n        \"Request a page that is protected with @login_required(redirect_field_name='redirect_to')\"\n\n        # Get the page without logging in. Should result in 302.\n        response = self.client.get('/test_client/login_protected_view_custom_redirect/')\n        self.assertRedirects(response, 'http://testserver/accounts/login/?redirect_to=/test_client/login_protected_view_custom_redirect/')\n\n        # Log in\n        login = self.client.login(username='testclient', password='password')\n        self.assertTrue(login, 'Could not log in')\n\n        # Request a page that requires a login\n        response = self.client.get('/test_client/login_protected_view_custom_redirect/')\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.context['user'].username, 'testclient')\n\n    def test_view_with_bad_login(self):\n        \"Request a page that is protected with @login, but use bad credentials\"\n\n        login = self.client.login(username='otheruser', password='nopassword')\n        self.assertFalse(login)\n\n    def test_view_with_inactive_login(self):\n        \"Request a page that is protected with @login, but use an inactive login\"\n\n        login = self.client.login(username='inactive', password='password')\n        self.assertFalse(login)\n\n    def test_logout(self):\n        \"Request a logout after logging in\"\n        # Log in\n        self.client.login(username='testclient', password='password')\n\n        # Request a page that requires a login\n        response = self.client.get('/test_client/login_protected_view/')\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.context['user'].username, 'testclient')\n\n        # Log out\n        self.client.logout()\n\n        # Request a page that requires a login\n        response = self.client.get('/test_client/login_protected_view/')\n        self.assertRedirects(response, 'http://testserver/accounts/login/?next=/test_client/login_protected_view/')\n\n    def test_view_with_permissions(self):\n        \"Request a page that is protected with @permission_required\"\n\n        # Get the page without logging in. Should result in 302.\n        response = self.client.get('/test_client/permission_protected_view/')\n        self.assertRedirects(response, 'http://testserver/accounts/login/?next=/test_client/permission_protected_view/')\n\n        # Log in\n        login = self.client.login(username='testclient', password='password')\n        self.assertTrue(login, 'Could not log in')\n\n        # Log in with wrong permissions. Should result in 302.\n        response = self.client.get('/test_client/permission_protected_view/')\n        self.assertRedirects(response, 'http://testserver/accounts/login/?next=/test_client/permission_protected_view/')\n\n        # TODO: Log in with right permissions and request the page again\n\n    def test_view_with_permissions_exception(self):\n        \"Request a page that is protected with @permission_required but raises a exception\"\n\n        # Get the page without logging in. Should result in 403.\n        response = self.client.get('/test_client/permission_protected_view_exception/')\n        self.assertEqual(response.status_code, 403)\n\n        # Log in\n        login = self.client.login(username='testclient', password='password')\n        self.assertTrue(login, 'Could not log in')\n\n        # Log in with wrong permissions. Should result in 403.\n        response = self.client.get('/test_client/permission_protected_view_exception/')\n        self.assertEqual(response.status_code, 403)\n\n    def test_view_with_method_permissions(self):\n        \"Request a page that is protected with a @permission_required method\"\n\n        # Get the page without logging in. Should result in 302.\n        response = self.client.get('/test_client/permission_protected_method_view/')\n        self.assertRedirects(response, 'http://testserver/accounts/login/?next=/test_client/permission_protected_method_view/')\n\n        # Log in\n        login = self.client.login(username='testclient', password='password')\n        self.assertTrue(login, 'Could not log in')\n\n        # Log in with wrong permissions. Should result in 302.\n        response = self.client.get('/test_client/permission_protected_method_view/')\n        self.assertRedirects(response, 'http://testserver/accounts/login/?next=/test_client/permission_protected_method_view/')\n\n        # TODO: Log in with right permissions and request the page again\n\n    def test_session_modifying_view(self):\n        \"Request a page that modifies the session\"\n        # Session value isn't set initially\n        try:\n            self.client.session['tobacconist']\n            self.fail(\"Shouldn't have a session value\")\n        except KeyError:\n            pass\n\n        from django.contrib.sessions.models import Session\n        response = self.client.post('/test_client/session_view/')\n\n        # Check that the session was modified\n        self.assertEqual(self.client.session['tobacconist'], 'hovercraft')\n\n    def test_view_with_exception(self):\n        \"Request a page that is known to throw an error\"\n        self.assertRaises(KeyError, self.client.get, \"/test_client/broken_view/\")\n\n        #Try the same assertion, a different way\n        try:\n            self.client.get('/test_client/broken_view/')\n            self.fail('Should raise an error')\n        except KeyError:\n            pass\n\n    def test_mail_sending(self):\n        \"Test that mail is redirected to a dummy outbox during test setup\"\n\n        response = self.client.get('/test_client/mail_sending_view/')\n        self.assertEqual(response.status_code, 200)\n\n        self.assertEqual(len(mail.outbox), 1)\n        self.assertEqual(mail.outbox[0].subject, 'Test message')\n        self.assertEqual(mail.outbox[0].body, 'This is a test email')\n        self.assertEqual(mail.outbox[0].from_email, 'from@example.com')\n        self.assertEqual(mail.outbox[0].to[0], 'first@example.com')\n        self.assertEqual(mail.outbox[0].to[1], 'second@example.com')\n\n    def test_mass_mail_sending(self):\n        \"Test that mass mail is redirected to a dummy outbox during test setup\"\n\n        response = self.client.get('/test_client/mass_mail_sending_view/')\n        self.assertEqual(response.status_code, 200)\n\n        self.assertEqual(len(mail.outbox), 2)\n        self.assertEqual(mail.outbox[0].subject, 'First Test message')\n        self.assertEqual(mail.outbox[0].body, 'This is the first test email')\n        self.assertEqual(mail.outbox[0].from_email, 'from@example.com')\n        self.assertEqual(mail.outbox[0].to[0], 'first@example.com')\n        self.assertEqual(mail.outbox[0].to[1], 'second@example.com')\n\n        self.assertEqual(mail.outbox[1].subject, 'Second Test message')\n        self.assertEqual(mail.outbox[1].body, 'This is the second test email')\n        self.assertEqual(mail.outbox[1].from_email, 'from@example.com')\n        self.assertEqual(mail.outbox[1].to[0], 'second@example.com')\n        self.assertEqual(mail.outbox[1].to[1], 'third@example.com')\n\nclass CSRFEnabledClientTests(TestCase):\n    def setUp(self):\n        # Enable the CSRF middleware for this test\n        self.old_MIDDLEWARE_CLASSES = settings.MIDDLEWARE_CLASSES\n        csrf_middleware_class = 'django.middleware.csrf.CsrfViewMiddleware'\n        if csrf_middleware_class not in settings.MIDDLEWARE_CLASSES:\n            settings.MIDDLEWARE_CLASSES += (csrf_middleware_class,)\n\n    def tearDown(self):\n        settings.MIDDLEWARE_CLASSES = self.old_MIDDLEWARE_CLASSES\n\n    def test_csrf_enabled_client(self):\n        \"A client can be instantiated with CSRF checks enabled\"\n        csrf_client = Client(enforce_csrf_checks=True)\n\n        # The normal client allows the post\n        response = self.client.post('/test_client/post_view/', {})\n        self.assertEqual(response.status_code, 200)\n\n        # The CSRF-enabled client rejects it\n        response = csrf_client.post('/test_client/post_view/', {})\n        self.assertEqual(response.status_code, 403)\n\n\nclass CustomTestClient(Client):\n    i_am_customized = \"Yes\"\n\nclass CustomTestClientTest(TestCase):\n    client_class = CustomTestClient\n\n    def test_custom_test_client(self):\n        \"\"\"A test case can specify a custom class for self.client.\"\"\"\n        self.assertEqual(hasattr(self.client, \"i_am_customized\"), True)\n\n\nclass RequestFactoryTest(TestCase):\n    def test_request_factory(self):\n        factory = RequestFactory()\n        request = factory.get('/somewhere/')\n        response = get_view(request)\n\n        self.assertEqual(response.status_code, 200)\n        self.assertContains(response, 'This is a test')\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/test_client/tests.py",
    "content": "# Validate that you can override the default test suite\n\nfrom django.utils import unittest\n\n\ndef suite():\n    \"\"\"\n    Define a suite that deliberately ignores a test defined in\n    this module.\n    \"\"\"\n\n    testSuite = unittest.TestSuite()\n    testSuite.addTest(SampleTests('testGoodStuff'))\n    return testSuite\n\nclass SampleTests(unittest.TestCase):\n    def testGoodStuff(self):\n        pass\n\n    def testBadStuff(self):\n        self.fail(\"This test shouldn't run\")\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/test_client/urls.py",
    "content": "from __future__ import absolute_import\n\nfrom django.conf.urls import patterns\nfrom django.views.generic import RedirectView\n\nfrom . import views\n\n\nurlpatterns = patterns('',\n    (r'^get_view/$', views.get_view),\n    (r'^post_view/$', views.post_view),\n    (r'^header_view/$', views.view_with_header),\n    (r'^raw_post_view/$', views.raw_post_view),\n    (r'^redirect_view/$', views.redirect_view),\n    (r'^secure_view/$', views.view_with_secure),\n    (r'^permanent_redirect_view/$', RedirectView.as_view(url='/test_client/get_view/')),\n    (r'^temporary_redirect_view/$', RedirectView.as_view(url='/test_client/get_view/', permanent=False)),\n    (r'^http_redirect_view/$', RedirectView.as_view(url='/test_client/secure_view/')),\n    (r'^https_redirect_view/$', RedirectView.as_view(url='https://testserver/test_client/secure_view/')),\n    (r'^double_redirect_view/$', views.double_redirect_view),\n    (r'^bad_view/$', views.bad_view),\n    (r'^form_view/$', views.form_view),\n    (r'^form_view_with_template/$', views.form_view_with_template),\n    (r'^login_protected_view/$', views.login_protected_view),\n    (r'^login_protected_method_view/$', views.login_protected_method_view),\n    (r'^login_protected_view_custom_redirect/$', views.login_protected_view_changed_redirect),\n    (r'^permission_protected_view/$', views.permission_protected_view),\n    (r'^permission_protected_view_exception/$', views.permission_protected_view_exception),\n    (r'^permission_protected_method_view/$', views.permission_protected_method_view),\n    (r'^session_view/$', views.session_view),\n    (r'^broken_view/$', views.broken_view),\n    (r'^mail_sending_view/$', views.mail_sending_view),\n    (r'^mass_mail_sending_view/$', views.mass_mail_sending_view)\n)\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/test_client/views.py",
    "content": "try:\n    from urllib.parse import urlencode\nexcept ImportError:     # Python 2\n    from urllib import urlencode\nfrom xml.dom.minidom import parseString\n\nfrom django.contrib.auth.decorators import login_required, permission_required\nfrom django.core import mail\nfrom django.forms import fields\nfrom django.forms.forms import Form\nfrom django.http import HttpResponse, HttpResponseRedirect, HttpResponseNotFound\nfrom django.shortcuts import render_to_response\nfrom django.template import Context, Template\nfrom django.utils.decorators import method_decorator\n\ndef get_view(request):\n    \"A simple view that expects a GET request, and returns a rendered template\"\n    t = Template('This is a test. {{ var }} is the value.', name='GET Template')\n    c = Context({'var': request.GET.get('var', 42)})\n\n    return HttpResponse(t.render(c))\n\ndef post_view(request):\n    \"\"\"A view that expects a POST, and returns a different template depending\n    on whether any POST data is available\n    \"\"\"\n    if request.method == 'POST':\n        if request.POST:\n            t = Template('Data received: {{ data }} is the value.', name='POST Template')\n            c = Context({'data': request.POST['value']})\n        else:\n            t = Template('Viewing POST page.', name='Empty POST Template')\n            c = Context()\n    else:\n        t = Template('Viewing GET page.', name='Empty GET Template')\n        c = Context()\n\n    return HttpResponse(t.render(c))\n\ndef view_with_header(request):\n    \"A view that has a custom header\"\n    response = HttpResponse()\n    response['X-DJANGO-TEST'] = 'Slartibartfast'\n    return response\n\ndef raw_post_view(request):\n    \"\"\"A view which expects raw XML to be posted and returns content extracted\n    from the XML\"\"\"\n    if request.method == 'POST':\n        root = parseString(request.body)\n        first_book = root.firstChild.firstChild\n        title, author = [n.firstChild.nodeValue for n in first_book.childNodes]\n        t = Template(\"{{ title }} - {{ author }}\", name=\"Book template\")\n        c = Context({\"title\": title, \"author\": author})\n    else:\n        t = Template(\"GET request.\", name=\"Book GET template\")\n        c = Context()\n\n    return HttpResponse(t.render(c))\n\ndef redirect_view(request):\n    \"A view that redirects all requests to the GET view\"\n    if request.GET:\n        query = '?' + urlencode(request.GET, True)\n    else:\n        query = ''\n    return HttpResponseRedirect('/test_client/get_view/' + query)\n\ndef view_with_secure(request):\n    \"A view that indicates if the request was secure\"\n    response = HttpResponse()\n    response.test_was_secure_request = request.is_secure()\n    return response\n\ndef double_redirect_view(request):\n    \"A view that redirects all requests to a redirection view\"\n    return HttpResponseRedirect('/test_client/permanent_redirect_view/')\n\ndef bad_view(request):\n    \"A view that returns a 404 with some error content\"\n    return HttpResponseNotFound('Not found!. This page contains some MAGIC content')\n\nTestChoices = (\n    ('a', 'First Choice'),\n    ('b', 'Second Choice'),\n    ('c', 'Third Choice'),\n    ('d', 'Fourth Choice'),\n    ('e', 'Fifth Choice')\n)\n\nclass TestForm(Form):\n    text = fields.CharField()\n    email = fields.EmailField()\n    value = fields.IntegerField()\n    single = fields.ChoiceField(choices=TestChoices)\n    multi = fields.MultipleChoiceField(choices=TestChoices)\n\ndef form_view(request):\n    \"A view that tests a simple form\"\n    if request.method == 'POST':\n        form = TestForm(request.POST)\n        if form.is_valid():\n            t = Template('Valid POST data.', name='Valid POST Template')\n            c = Context()\n        else:\n            t = Template('Invalid POST data. {{ form.errors }}', name='Invalid POST Template')\n            c = Context({'form': form})\n    else:\n        form = TestForm(request.GET)\n        t = Template('Viewing base form. {{ form }}.', name='Form GET Template')\n        c = Context({'form': form})\n\n    return HttpResponse(t.render(c))\n\ndef form_view_with_template(request):\n    \"A view that tests a simple form\"\n    if request.method == 'POST':\n        form = TestForm(request.POST)\n        if form.is_valid():\n            message = 'POST data OK'\n        else:\n            message = 'POST data has errors'\n    else:\n        form = TestForm()\n        message = 'GET form page'\n    return render_to_response('form_view.html',\n        {\n            'form': form,\n            'message': message\n        }\n    )\n\ndef login_protected_view(request):\n    \"A simple view that is login protected.\"\n    t = Template('This is a login protected test. Username is {{ user.username }}.', name='Login Template')\n    c = Context({'user': request.user})\n\n    return HttpResponse(t.render(c))\nlogin_protected_view = login_required(login_protected_view)\n\ndef login_protected_view_changed_redirect(request):\n    \"A simple view that is login protected with a custom redirect field set\"\n    t = Template('This is a login protected test. Username is {{ user.username }}.', name='Login Template')\n    c = Context({'user': request.user})\n\n    return HttpResponse(t.render(c))\nlogin_protected_view_changed_redirect = login_required(redirect_field_name=\"redirect_to\")(login_protected_view_changed_redirect)\n\ndef _permission_protected_view(request):\n    \"A simple view that is permission protected.\"\n    t = Template('This is a permission protected test. '\n                 'Username is {{ user.username }}. '\n                 'Permissions are {{ user.get_all_permissions }}.' ,\n                 name='Permissions Template')\n    c = Context({'user': request.user})\n    return HttpResponse(t.render(c))\npermission_protected_view = permission_required('modeltests.test_perm')(_permission_protected_view)\npermission_protected_view_exception = permission_required('modeltests.test_perm', raise_exception=True)(_permission_protected_view)\n\nclass _ViewManager(object):\n    @method_decorator(login_required)\n    def login_protected_view(self, request):\n        t = Template('This is a login protected test using a method. '\n                     'Username is {{ user.username }}.',\n                     name='Login Method Template')\n        c = Context({'user': request.user})\n        return HttpResponse(t.render(c))\n\n    @method_decorator(permission_required('modeltests.test_perm'))\n    def permission_protected_view(self, request):\n        t = Template('This is a permission protected test using a method. '\n                     'Username is {{ user.username }}. '\n                     'Permissions are {{ user.get_all_permissions }}.' ,\n                     name='Permissions Template')\n        c = Context({'user': request.user})\n        return HttpResponse(t.render(c))\n\n_view_manager = _ViewManager()\nlogin_protected_method_view = _view_manager.login_protected_view\npermission_protected_method_view = _view_manager.permission_protected_view\n\ndef session_view(request):\n    \"A view that modifies the session\"\n    request.session['tobacconist'] = 'hovercraft'\n\n    t = Template('This is a view that modifies the session.',\n                 name='Session Modifying View Template')\n    c = Context()\n    return HttpResponse(t.render(c))\n\ndef broken_view(request):\n    \"\"\"A view which just raises an exception, simulating a broken view.\"\"\"\n    raise KeyError(\"Oops! Looks like you wrote some bad code.\")\n\ndef mail_sending_view(request):\n    mail.EmailMessage(\n        \"Test message\",\n        \"This is a test email\",\n        \"from@example.com\",\n        ['first@example.com', 'second@example.com']).send()\n    return HttpResponse(\"Mail sent\")\n\ndef mass_mail_sending_view(request):\n    m1 = mail.EmailMessage(\n        'First Test message',\n        'This is the first test email',\n        'from@example.com',\n        ['first@example.com', 'second@example.com'])\n    m2 = mail.EmailMessage(\n        'Second Test message',\n        'This is the second test email',\n        'from@example.com',\n        ['second@example.com', 'third@example.com'])\n\n    c = mail.get_connection()\n    c.send_messages([m1,m2])\n\n    return HttpResponse(\"Mail sent\")\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/timezones/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/timezones/admin.py",
    "content": "from __future__ import absolute_import\n\nfrom django.contrib import admin\n\nfrom .models import Event, Timestamp\n\nclass EventAdmin(admin.ModelAdmin):\n    list_display = ('dt',)\n\nadmin.site.register(Event, EventAdmin)\n\nclass TimestampAdmin(admin.ModelAdmin):\n    readonly_fields = ('created', 'updated')\n\nadmin.site.register(Timestamp, TimestampAdmin)\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/timezones/fixtures/tz_users.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<django-objects version=\"1.0\">\n    <object pk=\"100\" model=\"auth.user\">\n        <field type=\"CharField\" name=\"username\">super</field>\n        <field type=\"CharField\" name=\"first_name\">Super</field>\n        <field type=\"CharField\" name=\"last_name\">User</field>\n        <field type=\"CharField\" name=\"email\">super@example.com</field>\n        <field type=\"CharField\" name=\"password\">sha1$995a3$6011485ea3834267d719b4c801409b8b1ddd0158</field>\n        <field type=\"BooleanField\" name=\"is_staff\">True</field>\n        <field type=\"BooleanField\" name=\"is_active\">True</field>\n        <field type=\"BooleanField\" name=\"is_superuser\">True</field>\n        <field type=\"DateTimeField\" name=\"last_login\">2001-01-01 00:00:00+00:00</field>\n        <field type=\"DateTimeField\" name=\"date_joined\">2001-01-01 00:00:00+00:00</field>\n        <field to=\"auth.group\" name=\"groups\" rel=\"ManyToManyRel\"></field>\n        <field to=\"auth.permission\" name=\"user_permissions\" rel=\"ManyToManyRel\"></field>\n    </object>\n</django-objects>\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/timezones/forms.py",
    "content": "from django import forms\n\nfrom .models import Event\n\nclass EventForm(forms.Form):\n    dt = forms.DateTimeField()\n\nclass EventSplitForm(forms.Form):\n    dt = forms.SplitDateTimeField()\n\nclass EventModelForm(forms.ModelForm):\n    class Meta:\n        model = Event\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/timezones/models.py",
    "content": "from django.db import models\n\nclass Event(models.Model):\n    dt = models.DateTimeField()\n\nclass MaybeEvent(models.Model):\n    dt = models.DateTimeField(blank=True, null=True)\n\nclass Session(models.Model):\n    name = models.CharField(max_length=20)\n\nclass SessionEvent(models.Model):\n    dt = models.DateTimeField()\n    session = models.ForeignKey(Session, related_name='events')\n\nclass Timestamp(models.Model):\n    created = models.DateTimeField(auto_now_add=True)\n    updated = models.DateTimeField(auto_now=True)\n\nclass AllDayEvent(models.Model):\n    day = models.DateField()\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/timezones/tests.py",
    "content": "from __future__ import unicode_literals\n\nimport datetime\nimport os\nimport sys\nimport time\nimport warnings\nfrom xml.dom.minidom import parseString\n\ntry:\n    import pytz\nexcept ImportError:\n    pytz = None\n\nfrom django.conf import settings\nfrom django.core import serializers\nfrom django.core.urlresolvers import reverse\nfrom django.db import connection\nfrom django.db.models import Min, Max\nfrom django.http import HttpRequest\nfrom django.template import Context, RequestContext, Template, TemplateSyntaxError\nfrom django.test import TestCase, skipIfDBFeature, skipUnlessDBFeature\nfrom django.test.utils import override_settings\nfrom django.utils import six\nfrom django.utils import timezone\nfrom django.utils.tzinfo import FixedOffset\nfrom django.utils.unittest import skipIf, skipUnless\n\nfrom .forms import EventForm, EventSplitForm, EventModelForm\nfrom .models import Event, MaybeEvent, Session, SessionEvent, Timestamp, AllDayEvent\n\n\n# These tests use the EAT (Eastern Africa Time) and ICT (Indochina Time)\n# who don't have Daylight Saving Time, so we can represent them easily\n# with FixedOffset, and use them directly as tzinfo in the constructors.\n\n# settings.TIME_ZONE is forced to EAT. Most tests use a variant of\n# datetime.datetime(2011, 9, 1, 13, 20, 30), which translates to\n# 10:20:30 in UTC and 17:20:30 in ICT.\n\nUTC = timezone.utc\nEAT = FixedOffset(180)      # Africa/Nairobi\nICT = FixedOffset(420)      # Asia/Bangkok\n\nTZ_SUPPORT = hasattr(time, 'tzset')\n\n# On OSes that don't provide tzset (Windows), we can't set the timezone\n# in which the program runs. As a consequence, we must skip tests that\n# don't enforce a specific timezone (with timezone.override or equivalent),\n# or attempt to interpret naive datetimes in the default timezone.\n\nrequires_tz_support = skipUnless(TZ_SUPPORT,\n        \"This test relies on the ability to run a program in an arbitrary \"\n        \"time zone, but your operating system isn't able to do that.\")\n\n\n@override_settings(TIME_ZONE='Africa/Nairobi', USE_TZ=False)\nclass LegacyDatabaseTests(TestCase):\n\n    def test_naive_datetime(self):\n        dt = datetime.datetime(2011, 9, 1, 13, 20, 30)\n        Event.objects.create(dt=dt)\n        event = Event.objects.get()\n        self.assertEqual(event.dt, dt)\n\n    @skipUnlessDBFeature('supports_microsecond_precision')\n    def test_naive_datetime_with_microsecond(self):\n        dt = datetime.datetime(2011, 9, 1, 13, 20, 30, 405060)\n        Event.objects.create(dt=dt)\n        event = Event.objects.get()\n        self.assertEqual(event.dt, dt)\n\n    @skipIfDBFeature('supports_microsecond_precision')\n    def test_naive_datetime_with_microsecond_unsupported(self):\n        dt = datetime.datetime(2011, 9, 1, 13, 20, 30, 405060)\n        Event.objects.create(dt=dt)\n        event = Event.objects.get()\n        # microseconds are lost during a round-trip in the database\n        self.assertEqual(event.dt, dt.replace(microsecond=0))\n\n    @skipUnlessDBFeature('supports_timezones')\n    def test_aware_datetime_in_local_timezone(self):\n        dt = datetime.datetime(2011, 9, 1, 13, 20, 30, tzinfo=EAT)\n        Event.objects.create(dt=dt)\n        event = Event.objects.get()\n        self.assertIsNone(event.dt.tzinfo)\n        # interpret the naive datetime in local time to get the correct value\n        self.assertEqual(event.dt.replace(tzinfo=EAT), dt)\n\n    @skipUnlessDBFeature('supports_timezones')\n    @skipUnlessDBFeature('supports_microsecond_precision')\n    def test_aware_datetime_in_local_timezone_with_microsecond(self):\n        dt = datetime.datetime(2011, 9, 1, 13, 20, 30, 405060, tzinfo=EAT)\n        Event.objects.create(dt=dt)\n        event = Event.objects.get()\n        self.assertIsNone(event.dt.tzinfo)\n        # interpret the naive datetime in local time to get the correct value\n        self.assertEqual(event.dt.replace(tzinfo=EAT), dt)\n\n    # This combination actually never happens.\n    @skipUnlessDBFeature('supports_timezones')\n    @skipIfDBFeature('supports_microsecond_precision')\n    def test_aware_datetime_in_local_timezone_with_microsecond_unsupported(self):\n        dt = datetime.datetime(2011, 9, 1, 13, 20, 30, 405060, tzinfo=EAT)\n        Event.objects.create(dt=dt)\n        event = Event.objects.get()\n        self.assertIsNone(event.dt.tzinfo)\n        # interpret the naive datetime in local time to get the correct value\n        # microseconds are lost during a round-trip in the database\n        self.assertEqual(event.dt.replace(tzinfo=EAT), dt.replace(microsecond=0))\n\n    @skipUnlessDBFeature('supports_timezones')\n    @skipIfDBFeature('needs_datetime_string_cast')\n    def test_aware_datetime_in_utc(self):\n        dt = datetime.datetime(2011, 9, 1, 10, 20, 30, tzinfo=UTC)\n        Event.objects.create(dt=dt)\n        event = Event.objects.get()\n        self.assertIsNone(event.dt.tzinfo)\n        # interpret the naive datetime in local time to get the correct value\n        self.assertEqual(event.dt.replace(tzinfo=EAT), dt)\n\n    # This combination is no longer possible since timezone support\n    # was removed from the SQLite backend -- it didn't work.\n    @skipUnlessDBFeature('supports_timezones')\n    @skipUnlessDBFeature('needs_datetime_string_cast')\n    def test_aware_datetime_in_utc_unsupported(self):\n        dt = datetime.datetime(2011, 9, 1, 10, 20, 30, tzinfo=UTC)\n        Event.objects.create(dt=dt)\n        event = Event.objects.get()\n        self.assertIsNone(event.dt.tzinfo)\n        # django.db.backend.utils.typecast_dt will just drop the\n        # timezone, so a round-trip in the database alters the data (!)\n        # interpret the naive datetime in local time and you get a wrong value\n        self.assertNotEqual(event.dt.replace(tzinfo=EAT), dt)\n        # interpret the naive datetime in original time to get the correct value\n        self.assertEqual(event.dt.replace(tzinfo=UTC), dt)\n\n    @skipUnlessDBFeature('supports_timezones')\n    @skipIfDBFeature('needs_datetime_string_cast')\n    def test_aware_datetime_in_other_timezone(self):\n        dt = datetime.datetime(2011, 9, 1, 17, 20, 30, tzinfo=ICT)\n        Event.objects.create(dt=dt)\n        event = Event.objects.get()\n        self.assertIsNone(event.dt.tzinfo)\n        # interpret the naive datetime in local time to get the correct value\n        self.assertEqual(event.dt.replace(tzinfo=EAT), dt)\n\n    # This combination is no longer possible since timezone support\n    # was removed from the SQLite backend -- it didn't work.\n    @skipUnlessDBFeature('supports_timezones')\n    @skipUnlessDBFeature('needs_datetime_string_cast')\n    def test_aware_datetime_in_other_timezone_unsupported(self):\n        dt = datetime.datetime(2011, 9, 1, 17, 20, 30, tzinfo=ICT)\n        Event.objects.create(dt=dt)\n        event = Event.objects.get()\n        self.assertIsNone(event.dt.tzinfo)\n        # django.db.backend.utils.typecast_dt will just drop the\n        # timezone, so a round-trip in the database alters the data (!)\n        # interpret the naive datetime in local time and you get a wrong value\n        self.assertNotEqual(event.dt.replace(tzinfo=EAT), dt)\n        # interpret the naive datetime in original time to get the correct value\n        self.assertEqual(event.dt.replace(tzinfo=ICT), dt)\n\n    @skipIfDBFeature('supports_timezones')\n    def test_aware_datetime_unspported(self):\n        dt = datetime.datetime(2011, 9, 1, 13, 20, 30, tzinfo=EAT)\n        with self.assertRaises(ValueError):\n            Event.objects.create(dt=dt)\n\n    def test_auto_now_and_auto_now_add(self):\n        now = datetime.datetime.now()\n        past = now - datetime.timedelta(seconds=2)\n        future = now + datetime.timedelta(seconds=2)\n        Timestamp.objects.create()\n        ts = Timestamp.objects.get()\n        self.assertLess(past, ts.created)\n        self.assertLess(past, ts.updated)\n        self.assertGreater(future, ts.updated)\n        self.assertGreater(future, ts.updated)\n\n    def test_query_filter(self):\n        dt1 = datetime.datetime(2011, 9, 1, 12, 20, 30)\n        dt2 = datetime.datetime(2011, 9, 1, 14, 20, 30)\n        Event.objects.create(dt=dt1)\n        Event.objects.create(dt=dt2)\n        self.assertEqual(Event.objects.filter(dt__gte=dt1).count(), 2)\n        self.assertEqual(Event.objects.filter(dt__gt=dt1).count(), 1)\n        self.assertEqual(Event.objects.filter(dt__gte=dt2).count(), 1)\n        self.assertEqual(Event.objects.filter(dt__gt=dt2).count(), 0)\n\n    def test_query_date_related_filters(self):\n        Event.objects.create(dt=datetime.datetime(2011, 1, 1, 1, 30, 0))\n        Event.objects.create(dt=datetime.datetime(2011, 1, 1, 4, 30, 0))\n        self.assertEqual(Event.objects.filter(dt__year=2011).count(), 2)\n        self.assertEqual(Event.objects.filter(dt__month=1).count(), 2)\n        self.assertEqual(Event.objects.filter(dt__day=1).count(), 2)\n        self.assertEqual(Event.objects.filter(dt__week_day=7).count(), 2)\n\n    def test_query_aggregation(self):\n        # Only min and max make sense for datetimes.\n        Event.objects.create(dt=datetime.datetime(2011, 9, 1, 23, 20, 20))\n        Event.objects.create(dt=datetime.datetime(2011, 9, 1, 13, 20, 30))\n        Event.objects.create(dt=datetime.datetime(2011, 9, 1, 3, 20, 40))\n        result = Event.objects.all().aggregate(Min('dt'), Max('dt'))\n        self.assertEqual(result, {\n            'dt__min': datetime.datetime(2011, 9, 1, 3, 20, 40),\n            'dt__max': datetime.datetime(2011, 9, 1, 23, 20, 20),\n        })\n\n    def test_query_annotation(self):\n        # Only min and max make sense for datetimes.\n        morning = Session.objects.create(name='morning')\n        afternoon = Session.objects.create(name='afternoon')\n        SessionEvent.objects.create(dt=datetime.datetime(2011, 9, 1, 23, 20, 20), session=afternoon)\n        SessionEvent.objects.create(dt=datetime.datetime(2011, 9, 1, 13, 20, 30), session=afternoon)\n        SessionEvent.objects.create(dt=datetime.datetime(2011, 9, 1, 3, 20, 40), session=morning)\n        morning_min_dt = datetime.datetime(2011, 9, 1, 3, 20, 40)\n        afternoon_min_dt = datetime.datetime(2011, 9, 1, 13, 20, 30)\n        self.assertQuerysetEqual(\n                Session.objects.annotate(dt=Min('events__dt')).order_by('dt'),\n                [morning_min_dt, afternoon_min_dt],\n                transform=lambda d: d.dt)\n        self.assertQuerysetEqual(\n                Session.objects.annotate(dt=Min('events__dt')).filter(dt__lt=afternoon_min_dt),\n                [morning_min_dt],\n                transform=lambda d: d.dt)\n        self.assertQuerysetEqual(\n                Session.objects.annotate(dt=Min('events__dt')).filter(dt__gte=afternoon_min_dt),\n                [afternoon_min_dt],\n                transform=lambda d: d.dt)\n\n    def test_query_dates(self):\n        Event.objects.create(dt=datetime.datetime(2011, 1, 1, 1, 30, 0))\n        Event.objects.create(dt=datetime.datetime(2011, 1, 1, 4, 30, 0))\n        self.assertQuerysetEqual(Event.objects.dates('dt', 'year'),\n                [datetime.datetime(2011, 1, 1)], transform=lambda d: d)\n        self.assertQuerysetEqual(Event.objects.dates('dt', 'month'),\n                [datetime.datetime(2011, 1, 1)], transform=lambda d: d)\n        self.assertQuerysetEqual(Event.objects.dates('dt', 'day'),\n                [datetime.datetime(2011, 1, 1)], transform=lambda d: d)\n\n    def test_raw_sql(self):\n        # Regression test for #17755\n        dt = datetime.datetime(2011, 9, 1, 13, 20, 30)\n        event = Event.objects.create(dt=dt)\n        self.assertQuerysetEqual(\n                Event.objects.raw('SELECT * FROM timezones_event WHERE dt = %s', [dt]),\n                [event],\n                transform=lambda d: d)\n\n    def test_filter_date_field_with_aware_datetime(self):\n        # Regression test for #17742\n        day = datetime.date(2011, 9, 1)\n        event = AllDayEvent.objects.create(day=day)\n        # This is 2011-09-02T01:30:00+03:00 in EAT\n        dt = datetime.datetime(2011, 9, 1, 22, 30, 0, tzinfo=UTC)\n        self.assertTrue(AllDayEvent.objects.filter(day__gte=dt).exists())\n\n\n@override_settings(TIME_ZONE='Africa/Nairobi', USE_TZ=True)\nclass NewDatabaseTests(TestCase):\n\n    @requires_tz_support\n    def test_naive_datetime(self):\n        dt = datetime.datetime(2011, 9, 1, 13, 20, 30)\n        with warnings.catch_warnings(record=True) as recorded:\n            warnings.simplefilter('always')\n            Event.objects.create(dt=dt)\n            self.assertEqual(len(recorded), 1)\n            msg = str(recorded[0].message)\n            self.assertTrue(msg.startswith(\"DateTimeField received a naive datetime\"))\n        event = Event.objects.get()\n        # naive datetimes are interpreted in local time\n        self.assertEqual(event.dt, dt.replace(tzinfo=EAT))\n\n    @requires_tz_support\n    def test_datetime_from_date(self):\n        dt = datetime.date(2011, 9, 1)\n        with warnings.catch_warnings(record=True) as recorded:\n            warnings.simplefilter('always')\n            Event.objects.create(dt=dt)\n            self.assertEqual(len(recorded), 1)\n            msg = str(recorded[0].message)\n            self.assertTrue(msg.startswith(\"DateTimeField received a naive datetime\"))\n        event = Event.objects.get()\n        self.assertEqual(event.dt, datetime.datetime(2011, 9, 1, tzinfo=EAT))\n\n    @requires_tz_support\n    @skipUnlessDBFeature('supports_microsecond_precision')\n    def test_naive_datetime_with_microsecond(self):\n        dt = datetime.datetime(2011, 9, 1, 13, 20, 30, 405060)\n        with warnings.catch_warnings(record=True) as recorded:\n            warnings.simplefilter('always')\n            Event.objects.create(dt=dt)\n            self.assertEqual(len(recorded), 1)\n            msg = str(recorded[0].message)\n            self.assertTrue(msg.startswith(\"DateTimeField received a naive datetime\"))\n        event = Event.objects.get()\n        # naive datetimes are interpreted in local time\n        self.assertEqual(event.dt, dt.replace(tzinfo=EAT))\n\n    @requires_tz_support\n    @skipIfDBFeature('supports_microsecond_precision')\n    def test_naive_datetime_with_microsecond_unsupported(self):\n        dt = datetime.datetime(2011, 9, 1, 13, 20, 30, 405060)\n        with warnings.catch_warnings(record=True) as recorded:\n            warnings.simplefilter('always')\n            Event.objects.create(dt=dt)\n            self.assertEqual(len(recorded), 1)\n            msg = str(recorded[0].message)\n            self.assertTrue(msg.startswith(\"DateTimeField received a naive datetime\"))\n        event = Event.objects.get()\n        # microseconds are lost during a round-trip in the database\n        # naive datetimes are interpreted in local time\n        self.assertEqual(event.dt, dt.replace(microsecond=0, tzinfo=EAT))\n\n    def test_aware_datetime_in_local_timezone(self):\n        dt = datetime.datetime(2011, 9, 1, 13, 20, 30, tzinfo=EAT)\n        Event.objects.create(dt=dt)\n        event = Event.objects.get()\n        self.assertEqual(event.dt, dt)\n\n    @skipUnlessDBFeature('supports_microsecond_precision')\n    def test_aware_datetime_in_local_timezone_with_microsecond(self):\n        dt = datetime.datetime(2011, 9, 1, 13, 20, 30, 405060, tzinfo=EAT)\n        Event.objects.create(dt=dt)\n        event = Event.objects.get()\n        self.assertEqual(event.dt, dt)\n\n    @skipIfDBFeature('supports_microsecond_precision')\n    def test_aware_datetime_in_local_timezone_with_microsecond_unsupported(self):\n        dt = datetime.datetime(2011, 9, 1, 13, 20, 30, 405060, tzinfo=EAT)\n        Event.objects.create(dt=dt)\n        event = Event.objects.get()\n        # microseconds are lost during a round-trip in the database\n        self.assertEqual(event.dt, dt.replace(microsecond=0))\n\n    def test_aware_datetime_in_utc(self):\n        dt = datetime.datetime(2011, 9, 1, 10, 20, 30, tzinfo=UTC)\n        Event.objects.create(dt=dt)\n        event = Event.objects.get()\n        self.assertEqual(event.dt, dt)\n\n    def test_aware_datetime_in_other_timezone(self):\n        dt = datetime.datetime(2011, 9, 1, 17, 20, 30, tzinfo=ICT)\n        Event.objects.create(dt=dt)\n        event = Event.objects.get()\n        self.assertEqual(event.dt, dt)\n\n    def test_auto_now_and_auto_now_add(self):\n        now = timezone.now()\n        past = now - datetime.timedelta(seconds=2)\n        future = now + datetime.timedelta(seconds=2)\n        Timestamp.objects.create()\n        ts = Timestamp.objects.get()\n        self.assertLess(past, ts.created)\n        self.assertLess(past, ts.updated)\n        self.assertGreater(future, ts.updated)\n        self.assertGreater(future, ts.updated)\n\n    def test_query_filter(self):\n        dt1 = datetime.datetime(2011, 9, 1, 12, 20, 30, tzinfo=EAT)\n        dt2 = datetime.datetime(2011, 9, 1, 14, 20, 30, tzinfo=EAT)\n        Event.objects.create(dt=dt1)\n        Event.objects.create(dt=dt2)\n        self.assertEqual(Event.objects.filter(dt__gte=dt1).count(), 2)\n        self.assertEqual(Event.objects.filter(dt__gt=dt1).count(), 1)\n        self.assertEqual(Event.objects.filter(dt__gte=dt2).count(), 1)\n        self.assertEqual(Event.objects.filter(dt__gt=dt2).count(), 0)\n\n    @skipIf(pytz is None, \"this test requires pytz\")\n    def test_query_filter_with_pytz_timezones(self):\n        tz = pytz.timezone('Europe/Paris')\n        dt = datetime.datetime(2011, 9, 1, 12, 20, 30, tzinfo=tz)\n        Event.objects.create(dt=dt)\n        next = dt + datetime.timedelta(seconds=3)\n        prev = dt - datetime.timedelta(seconds=3)\n        self.assertEqual(Event.objects.filter(dt__exact=dt).count(), 1)\n        self.assertEqual(Event.objects.filter(dt__exact=next).count(), 0)\n        self.assertEqual(Event.objects.filter(dt__in=(prev, next)).count(), 0)\n        self.assertEqual(Event.objects.filter(dt__in=(prev, dt, next)).count(), 1)\n        self.assertEqual(Event.objects.filter(dt__range=(prev, next)).count(), 1)\n\n    @requires_tz_support\n    def test_query_filter_with_naive_datetime(self):\n        dt = datetime.datetime(2011, 9, 1, 12, 20, 30, tzinfo=EAT)\n        Event.objects.create(dt=dt)\n        dt = dt.replace(tzinfo=None)\n        with warnings.catch_warnings(record=True) as recorded:\n            warnings.simplefilter('always')\n            # naive datetimes are interpreted in local time\n            self.assertEqual(Event.objects.filter(dt__exact=dt).count(), 1)\n            self.assertEqual(Event.objects.filter(dt__lte=dt).count(), 1)\n            self.assertEqual(Event.objects.filter(dt__gt=dt).count(), 0)\n            self.assertEqual(len(recorded), 3)\n            for warning in recorded:\n                msg = str(warning.message)\n                self.assertTrue(msg.startswith(\"DateTimeField received a naive datetime\"))\n\n    def test_query_date_related_filters(self):\n        # These two dates fall in the same day in EAT, but in different days,\n        # years and months in UTC, and aggregation is performed in UTC when\n        # time zone support is enabled. This test could be changed if the\n        # implementation is changed to perform the aggregation is local time.\n        Event.objects.create(dt=datetime.datetime(2011, 1, 1, 1, 30, 0, tzinfo=EAT))\n        Event.objects.create(dt=datetime.datetime(2011, 1, 1, 4, 30, 0, tzinfo=EAT))\n        self.assertEqual(Event.objects.filter(dt__year=2011).count(), 1)\n        self.assertEqual(Event.objects.filter(dt__month=1).count(), 1)\n        self.assertEqual(Event.objects.filter(dt__day=1).count(), 1)\n        self.assertEqual(Event.objects.filter(dt__week_day=7).count(), 1)\n\n    def test_query_aggregation(self):\n        # Only min and max make sense for datetimes.\n        Event.objects.create(dt=datetime.datetime(2011, 9, 1, 23, 20, 20, tzinfo=EAT))\n        Event.objects.create(dt=datetime.datetime(2011, 9, 1, 13, 20, 30, tzinfo=EAT))\n        Event.objects.create(dt=datetime.datetime(2011, 9, 1, 3, 20, 40, tzinfo=EAT))\n        result = Event.objects.all().aggregate(Min('dt'), Max('dt'))\n        self.assertEqual(result, {\n            'dt__min': datetime.datetime(2011, 9, 1, 3, 20, 40, tzinfo=EAT),\n            'dt__max': datetime.datetime(2011, 9, 1, 23, 20, 20, tzinfo=EAT),\n        })\n\n    def test_query_annotation(self):\n        # Only min and max make sense for datetimes.\n        morning = Session.objects.create(name='morning')\n        afternoon = Session.objects.create(name='afternoon')\n        SessionEvent.objects.create(dt=datetime.datetime(2011, 9, 1, 23, 20, 20, tzinfo=EAT), session=afternoon)\n        SessionEvent.objects.create(dt=datetime.datetime(2011, 9, 1, 13, 20, 30, tzinfo=EAT), session=afternoon)\n        SessionEvent.objects.create(dt=datetime.datetime(2011, 9, 1, 3, 20, 40, tzinfo=EAT), session=morning)\n        morning_min_dt = datetime.datetime(2011, 9, 1, 3, 20, 40, tzinfo=EAT)\n        afternoon_min_dt = datetime.datetime(2011, 9, 1, 13, 20, 30, tzinfo=EAT)\n        self.assertQuerysetEqual(\n                Session.objects.annotate(dt=Min('events__dt')).order_by('dt'),\n                [morning_min_dt, afternoon_min_dt],\n                transform=lambda d: d.dt)\n        self.assertQuerysetEqual(\n                Session.objects.annotate(dt=Min('events__dt')).filter(dt__lt=afternoon_min_dt),\n                [morning_min_dt],\n                transform=lambda d: d.dt)\n        self.assertQuerysetEqual(\n                Session.objects.annotate(dt=Min('events__dt')).filter(dt__gte=afternoon_min_dt),\n                [afternoon_min_dt],\n                transform=lambda d: d.dt)\n\n    def test_query_dates(self):\n        # Same comment as in test_query_date_related_filters.\n        Event.objects.create(dt=datetime.datetime(2011, 1, 1, 1, 30, 0, tzinfo=EAT))\n        Event.objects.create(dt=datetime.datetime(2011, 1, 1, 4, 30, 0, tzinfo=EAT))\n        self.assertQuerysetEqual(Event.objects.dates('dt', 'year'),\n                [datetime.datetime(2010, 1, 1, tzinfo=UTC),\n                 datetime.datetime(2011, 1, 1, tzinfo=UTC)],\n                transform=lambda d: d)\n        self.assertQuerysetEqual(Event.objects.dates('dt', 'month'),\n                [datetime.datetime(2010, 12, 1, tzinfo=UTC),\n                 datetime.datetime(2011, 1, 1, tzinfo=UTC)],\n                transform=lambda d: d)\n        self.assertQuerysetEqual(Event.objects.dates('dt', 'day'),\n                [datetime.datetime(2010, 12, 31, tzinfo=UTC),\n                 datetime.datetime(2011, 1, 1, tzinfo=UTC)],\n                transform=lambda d: d)\n\n    def test_raw_sql(self):\n        # Regression test for #17755\n        dt = datetime.datetime(2011, 9, 1, 13, 20, 30, tzinfo=EAT)\n        event = Event.objects.create(dt=dt)\n        self.assertQuerysetEqual(\n                Event.objects.raw('SELECT * FROM timezones_event WHERE dt = %s', [dt]),\n                [event],\n                transform=lambda d: d)\n\n    @requires_tz_support\n    def test_filter_date_field_with_aware_datetime(self):\n        # Regression test for #17742\n        day = datetime.date(2011, 9, 1)\n        event = AllDayEvent.objects.create(day=day)\n        # This is 2011-09-02T01:30:00+03:00 in EAT\n        dt = datetime.datetime(2011, 9, 1, 22, 30, 0, tzinfo=UTC)\n        self.assertFalse(AllDayEvent.objects.filter(day__gte=dt).exists())\n\n    def test_null_datetime(self):\n        # Regression test for #17294\n        e = MaybeEvent.objects.create()\n        self.assertEqual(e.dt, None)\n\n\n@override_settings(TIME_ZONE='Africa/Nairobi')\nclass SerializationTests(TestCase):\n\n    # Backend-specific notes:\n    # - JSON supports only milliseconds, microseconds will be truncated.\n    # - PyYAML dumps the UTC offset correctly for timezone-aware datetimes,\n    #   but when it loads this representation, it substracts the offset and\n    #   returns a naive datetime object in UTC (http://pyyaml.org/ticket/202).\n    # Tests are adapted to take these quirks into account.\n\n    def assert_python_contains_datetime(self, objects, dt):\n        self.assertEqual(objects[0]['fields']['dt'], dt)\n\n    def assert_json_contains_datetime(self, json, dt):\n        self.assertIn('\"fields\": {\"dt\": \"%s\"}' % dt, json)\n\n    def assert_xml_contains_datetime(self, xml, dt):\n        field = parseString(xml).getElementsByTagName('field')[0]\n        self.assertXMLEqual(field.childNodes[0].wholeText, dt)\n\n    def assert_yaml_contains_datetime(self, yaml, dt):\n        self.assertIn(\"- fields: {dt: !!timestamp '%s'}\" % dt, yaml)\n\n    def test_naive_datetime(self):\n        dt = datetime.datetime(2011, 9, 1, 13, 20, 30)\n\n        data = serializers.serialize('python', [Event(dt=dt)])\n        self.assert_python_contains_datetime(data, dt)\n        obj = next(serializers.deserialize('python', data)).object\n        self.assertEqual(obj.dt, dt)\n\n        data = serializers.serialize('json', [Event(dt=dt)])\n        self.assert_json_contains_datetime(data, \"2011-09-01T13:20:30\")\n        obj = next(serializers.deserialize('json', data)).object\n        self.assertEqual(obj.dt, dt)\n\n        data = serializers.serialize('xml', [Event(dt=dt)])\n        self.assert_xml_contains_datetime(data, \"2011-09-01T13:20:30\")\n        obj = next(serializers.deserialize('xml', data)).object\n        self.assertEqual(obj.dt, dt)\n\n        if 'yaml' in serializers.get_serializer_formats():\n            data = serializers.serialize('yaml', [Event(dt=dt)])\n            self.assert_yaml_contains_datetime(data, \"2011-09-01 13:20:30\")\n            obj = next(serializers.deserialize('yaml', data)).object\n            self.assertEqual(obj.dt, dt)\n\n    def test_naive_datetime_with_microsecond(self):\n        dt = datetime.datetime(2011, 9, 1, 13, 20, 30, 405060)\n\n        data = serializers.serialize('python', [Event(dt=dt)])\n        self.assert_python_contains_datetime(data, dt)\n        obj = next(serializers.deserialize('python', data)).object\n        self.assertEqual(obj.dt, dt)\n\n        data = serializers.serialize('json', [Event(dt=dt)])\n        self.assert_json_contains_datetime(data, \"2011-09-01T13:20:30.405\")\n        obj = next(serializers.deserialize('json', data)).object\n        self.assertEqual(obj.dt, dt.replace(microsecond=405000))\n\n        data = serializers.serialize('xml', [Event(dt=dt)])\n        self.assert_xml_contains_datetime(data, \"2011-09-01T13:20:30.405060\")\n        obj = next(serializers.deserialize('xml', data)).object\n        self.assertEqual(obj.dt, dt)\n\n        if 'yaml' in serializers.get_serializer_formats():\n            data = serializers.serialize('yaml', [Event(dt=dt)])\n            self.assert_yaml_contains_datetime(data, \"2011-09-01 13:20:30.405060\")\n            obj = next(serializers.deserialize('yaml', data)).object\n            self.assertEqual(obj.dt, dt)\n\n    def test_aware_datetime_with_microsecond(self):\n        dt = datetime.datetime(2011, 9, 1, 17, 20, 30, 405060, tzinfo=ICT)\n\n        data = serializers.serialize('python', [Event(dt=dt)])\n        self.assert_python_contains_datetime(data, dt)\n        obj = next(serializers.deserialize('python', data)).object\n        self.assertEqual(obj.dt, dt)\n\n        data = serializers.serialize('json', [Event(dt=dt)])\n        self.assert_json_contains_datetime(data, \"2011-09-01T17:20:30.405+07:00\")\n        obj = next(serializers.deserialize('json', data)).object\n        self.assertEqual(obj.dt, dt.replace(microsecond=405000))\n\n        data = serializers.serialize('xml', [Event(dt=dt)])\n        self.assert_xml_contains_datetime(data, \"2011-09-01T17:20:30.405060+07:00\")\n        obj = next(serializers.deserialize('xml', data)).object\n        self.assertEqual(obj.dt, dt)\n\n        if 'yaml' in serializers.get_serializer_formats():\n            data = serializers.serialize('yaml', [Event(dt=dt)])\n            self.assert_yaml_contains_datetime(data, \"2011-09-01 17:20:30.405060+07:00\")\n            obj = next(serializers.deserialize('yaml', data)).object\n            self.assertEqual(obj.dt.replace(tzinfo=UTC), dt)\n\n    def test_aware_datetime_in_utc(self):\n        dt = datetime.datetime(2011, 9, 1, 10, 20, 30, tzinfo=UTC)\n\n        data = serializers.serialize('python', [Event(dt=dt)])\n        self.assert_python_contains_datetime(data, dt)\n        obj = next(serializers.deserialize('python', data)).object\n        self.assertEqual(obj.dt, dt)\n\n        data = serializers.serialize('json', [Event(dt=dt)])\n        self.assert_json_contains_datetime(data, \"2011-09-01T10:20:30Z\")\n        obj = next(serializers.deserialize('json', data)).object\n        self.assertEqual(obj.dt, dt)\n\n        data = serializers.serialize('xml', [Event(dt=dt)])\n        self.assert_xml_contains_datetime(data, \"2011-09-01T10:20:30+00:00\")\n        obj = next(serializers.deserialize('xml', data)).object\n        self.assertEqual(obj.dt, dt)\n\n        if 'yaml' in serializers.get_serializer_formats():\n            data = serializers.serialize('yaml', [Event(dt=dt)])\n            self.assert_yaml_contains_datetime(data, \"2011-09-01 10:20:30+00:00\")\n            obj = next(serializers.deserialize('yaml', data)).object\n            self.assertEqual(obj.dt.replace(tzinfo=UTC), dt)\n\n    def test_aware_datetime_in_local_timezone(self):\n        dt = datetime.datetime(2011, 9, 1, 13, 20, 30, tzinfo=EAT)\n\n        data = serializers.serialize('python', [Event(dt=dt)])\n        self.assert_python_contains_datetime(data, dt)\n        obj = next(serializers.deserialize('python', data)).object\n        self.assertEqual(obj.dt, dt)\n\n        data = serializers.serialize('json', [Event(dt=dt)])\n        self.assert_json_contains_datetime(data, \"2011-09-01T13:20:30+03:00\")\n        obj = next(serializers.deserialize('json', data)).object\n        self.assertEqual(obj.dt, dt)\n\n        data = serializers.serialize('xml', [Event(dt=dt)])\n        self.assert_xml_contains_datetime(data, \"2011-09-01T13:20:30+03:00\")\n        obj = next(serializers.deserialize('xml', data)).object\n        self.assertEqual(obj.dt, dt)\n\n        if 'yaml' in serializers.get_serializer_formats():\n            data = serializers.serialize('yaml', [Event(dt=dt)])\n            self.assert_yaml_contains_datetime(data, \"2011-09-01 13:20:30+03:00\")\n            obj = next(serializers.deserialize('yaml', data)).object\n            self.assertEqual(obj.dt.replace(tzinfo=UTC), dt)\n\n    def test_aware_datetime_in_other_timezone(self):\n        dt = datetime.datetime(2011, 9, 1, 17, 20, 30, tzinfo=ICT)\n\n        data = serializers.serialize('python', [Event(dt=dt)])\n        self.assert_python_contains_datetime(data, dt)\n        obj = next(serializers.deserialize('python', data)).object\n        self.assertEqual(obj.dt, dt)\n\n        data = serializers.serialize('json', [Event(dt=dt)])\n        self.assert_json_contains_datetime(data, \"2011-09-01T17:20:30+07:00\")\n        obj = next(serializers.deserialize('json', data)).object\n        self.assertEqual(obj.dt, dt)\n\n        data = serializers.serialize('xml', [Event(dt=dt)])\n        self.assert_xml_contains_datetime(data, \"2011-09-01T17:20:30+07:00\")\n        obj = next(serializers.deserialize('xml', data)).object\n        self.assertEqual(obj.dt, dt)\n\n        if 'yaml' in serializers.get_serializer_formats():\n            data = serializers.serialize('yaml', [Event(dt=dt)])\n            self.assert_yaml_contains_datetime(data, \"2011-09-01 17:20:30+07:00\")\n            obj = next(serializers.deserialize('yaml', data)).object\n            self.assertEqual(obj.dt.replace(tzinfo=UTC), dt)\n\n\n@override_settings(DATETIME_FORMAT='c', TIME_ZONE='Africa/Nairobi', USE_L10N=False, USE_TZ=True)\nclass TemplateTests(TestCase):\n\n    @requires_tz_support\n    def test_localtime_templatetag_and_filters(self):\n        \"\"\"\n        Test the {% localtime %} templatetag and related filters.\n        \"\"\"\n        datetimes = {\n            'utc': datetime.datetime(2011, 9, 1, 10, 20, 30, tzinfo=UTC),\n            'eat': datetime.datetime(2011, 9, 1, 13, 20, 30, tzinfo=EAT),\n            'ict': datetime.datetime(2011, 9, 1, 17, 20, 30, tzinfo=ICT),\n            'naive': datetime.datetime(2011, 9, 1, 13, 20, 30),\n        }\n        templates = {\n            'notag': Template(\"{% load tz %}{{ dt }}|{{ dt|localtime }}|{{ dt|utc }}|{{ dt|timezone:ICT }}\"),\n            'noarg': Template(\"{% load tz %}{% localtime %}{{ dt }}|{{ dt|localtime }}|{{ dt|utc }}|{{ dt|timezone:ICT }}{% endlocaltime %}\"),\n            'on':    Template(\"{% load tz %}{% localtime on %}{{ dt }}|{{ dt|localtime }}|{{ dt|utc }}|{{ dt|timezone:ICT }}{% endlocaltime %}\"),\n            'off':   Template(\"{% load tz %}{% localtime off %}{{ dt }}|{{ dt|localtime }}|{{ dt|utc }}|{{ dt|timezone:ICT }}{% endlocaltime %}\"),\n        }\n\n        # Transform a list of keys in 'datetimes' to the expected template\n        # output. This makes the definition of 'results' more readable.\n        def t(*result):\n            return '|'.join(datetimes[key].isoformat() for key in result)\n\n        # Results for USE_TZ = True\n\n        results = {\n            'utc': {\n                'notag': t('eat', 'eat', 'utc', 'ict'),\n                'noarg': t('eat', 'eat', 'utc', 'ict'),\n                'on':    t('eat', 'eat', 'utc', 'ict'),\n                'off':   t('utc', 'eat', 'utc', 'ict'),\n            },\n            'eat': {\n                'notag': t('eat', 'eat', 'utc', 'ict'),\n                'noarg': t('eat', 'eat', 'utc', 'ict'),\n                'on':    t('eat', 'eat', 'utc', 'ict'),\n                'off':   t('eat', 'eat', 'utc', 'ict'),\n            },\n            'ict': {\n                'notag': t('eat', 'eat', 'utc', 'ict'),\n                'noarg': t('eat', 'eat', 'utc', 'ict'),\n                'on':    t('eat', 'eat', 'utc', 'ict'),\n                'off':   t('ict', 'eat', 'utc', 'ict'),\n            },\n            'naive': {\n                'notag': t('naive', 'eat', 'utc', 'ict'),\n                'noarg': t('naive', 'eat', 'utc', 'ict'),\n                'on':    t('naive', 'eat', 'utc', 'ict'),\n                'off':   t('naive', 'eat', 'utc', 'ict'),\n            }\n        }\n\n        for k1, dt in six.iteritems(datetimes):\n            for k2, tpl in six.iteritems(templates):\n                ctx = Context({'dt': dt, 'ICT': ICT})\n                actual = tpl.render(ctx)\n                expected = results[k1][k2]\n                self.assertEqual(actual, expected, '%s / %s: %r != %r' % (k1, k2, actual, expected))\n\n        # Changes for USE_TZ = False\n\n        results['utc']['notag'] = t('utc', 'eat', 'utc', 'ict')\n        results['ict']['notag'] = t('ict', 'eat', 'utc', 'ict')\n\n        with self.settings(USE_TZ=False):\n            for k1, dt in six.iteritems(datetimes):\n                for k2, tpl in six.iteritems(templates):\n                    ctx = Context({'dt': dt, 'ICT': ICT})\n                    actual = tpl.render(ctx)\n                    expected = results[k1][k2]\n                    self.assertEqual(actual, expected, '%s / %s: %r != %r' % (k1, k2, actual, expected))\n\n    @skipIf(pytz is None, \"this test requires pytz\")\n    def test_localtime_filters_with_pytz(self):\n        \"\"\"\n        Test the |localtime, |utc, and |timezone filters with pytz.\n        \"\"\"\n        # Use a pytz timezone as local time\n        tpl = Template(\"{% load tz %}{{ dt|localtime }}|{{ dt|utc }}\")\n        ctx = Context({'dt': datetime.datetime(2011, 9, 1, 12, 20, 30)})\n\n        with self.settings(TIME_ZONE='Europe/Paris'):\n            self.assertEqual(tpl.render(ctx), \"2011-09-01T12:20:30+02:00|2011-09-01T10:20:30+00:00\")\n\n        # Use a pytz timezone as argument\n        tpl = Template(\"{% load tz %}{{ dt|timezone:tz }}\")\n        ctx = Context({'dt': datetime.datetime(2011, 9, 1, 13, 20, 30),\n                       'tz': pytz.timezone('Europe/Paris')})\n        self.assertEqual(tpl.render(ctx), \"2011-09-01T12:20:30+02:00\")\n\n        # Use a pytz timezone name as argument\n        tpl = Template(\"{% load tz %}{{ dt|timezone:'Europe/Paris' }}\")\n        ctx = Context({'dt': datetime.datetime(2011, 9, 1, 13, 20, 30),\n                       'tz': pytz.timezone('Europe/Paris')})\n        self.assertEqual(tpl.render(ctx), \"2011-09-01T12:20:30+02:00\")\n\n    def test_localtime_templatetag_invalid_argument(self):\n        with self.assertRaises(TemplateSyntaxError):\n            Template(\"{% load tz %}{% localtime foo %}{% endlocaltime %}\").render()\n\n    def test_localtime_filters_do_not_raise_exceptions(self):\n        \"\"\"\n        Test the |localtime, |utc, and |timezone filters on bad inputs.\n        \"\"\"\n        tpl = Template(\"{% load tz %}{{ dt }}|{{ dt|localtime }}|{{ dt|utc }}|{{ dt|timezone:tz }}\")\n        with self.settings(USE_TZ=True):\n            # bad datetime value\n            ctx = Context({'dt': None, 'tz': ICT})\n            self.assertEqual(tpl.render(ctx), \"None|||\")\n            ctx = Context({'dt': 'not a date', 'tz': ICT})\n            self.assertEqual(tpl.render(ctx), \"not a date|||\")\n            # bad timezone value\n            tpl = Template(\"{% load tz %}{{ dt|timezone:tz }}\")\n            ctx = Context({'dt': datetime.datetime(2011, 9, 1, 13, 20, 30), 'tz': None})\n            self.assertEqual(tpl.render(ctx), \"\")\n            ctx = Context({'dt': datetime.datetime(2011, 9, 1, 13, 20, 30), 'tz': 'not a tz'})\n            self.assertEqual(tpl.render(ctx), \"\")\n\n    @requires_tz_support\n    def test_timezone_templatetag(self):\n        \"\"\"\n        Test the {% timezone %} templatetag.\n        \"\"\"\n        tpl = Template(\"{% load tz %}\"\n                \"{{ dt }}|\"\n                \"{% timezone tz1 %}\"\n                    \"{{ dt }}|\"\n                    \"{% timezone tz2 %}\"\n                        \"{{ dt }}\"\n                    \"{% endtimezone %}\"\n                \"{% endtimezone %}\")\n        ctx = Context({'dt': datetime.datetime(2011, 9, 1, 10, 20, 30, tzinfo=UTC),\n                       'tz1': ICT, 'tz2': None})\n        self.assertEqual(tpl.render(ctx), \"2011-09-01T13:20:30+03:00|2011-09-01T17:20:30+07:00|2011-09-01T13:20:30+03:00\")\n\n    @skipIf(pytz is None, \"this test requires pytz\")\n    def test_timezone_templatetag_with_pytz(self):\n        \"\"\"\n        Test the {% timezone %} templatetag with pytz.\n        \"\"\"\n        tpl = Template(\"{% load tz %}{% timezone tz %}{{ dt }}{% endtimezone %}\")\n\n        # Use a pytz timezone as argument\n        ctx = Context({'dt': datetime.datetime(2011, 9, 1, 13, 20, 30, tzinfo=EAT),\n                       'tz': pytz.timezone('Europe/Paris')})\n        self.assertEqual(tpl.render(ctx), \"2011-09-01T12:20:30+02:00\")\n\n        # Use a pytz timezone name as argument\n        ctx = Context({'dt': datetime.datetime(2011, 9, 1, 13, 20, 30, tzinfo=EAT),\n                       'tz': 'Europe/Paris'})\n        self.assertEqual(tpl.render(ctx), \"2011-09-01T12:20:30+02:00\")\n\n    def test_timezone_templatetag_invalid_argument(self):\n        with self.assertRaises(TemplateSyntaxError):\n            Template(\"{% load tz %}{% timezone %}{% endtimezone %}\").render()\n        with self.assertRaises(ValueError if pytz is None else pytz.UnknownTimeZoneError):\n            Template(\"{% load tz %}{% timezone tz %}{% endtimezone %}\").render(Context({'tz': 'foobar'}))\n\n    @skipIf(sys.platform.startswith('win'), \"Windows uses non-standard time zone names\")\n    def test_get_current_timezone_templatetag(self):\n        \"\"\"\n        Test the {% get_current_timezone %} templatetag.\n        \"\"\"\n        tpl = Template(\"{% load tz %}{% get_current_timezone as time_zone %}{{ time_zone }}\")\n\n        self.assertEqual(tpl.render(Context()), \"Africa/Nairobi\" if pytz else \"EAT\")\n        with timezone.override(UTC):\n            self.assertEqual(tpl.render(Context()), \"UTC\")\n\n        tpl = Template(\"{% load tz %}{% timezone tz %}{% get_current_timezone as time_zone %}{% endtimezone %}{{ time_zone }}\")\n\n        self.assertEqual(tpl.render(Context({'tz': ICT})), \"+0700\")\n        with timezone.override(UTC):\n            self.assertEqual(tpl.render(Context({'tz': ICT})), \"+0700\")\n\n    @skipIf(pytz is None, \"this test requires pytz\")\n    def test_get_current_timezone_templatetag_with_pytz(self):\n        \"\"\"\n        Test the {% get_current_timezone %} templatetag with pytz.\n        \"\"\"\n        tpl = Template(\"{% load tz %}{% get_current_timezone as time_zone %}{{ time_zone }}\")\n        with timezone.override(pytz.timezone('Europe/Paris')):\n            self.assertEqual(tpl.render(Context()), \"Europe/Paris\")\n\n        tpl = Template(\"{% load tz %}{% timezone 'Europe/Paris' %}{% get_current_timezone as time_zone %}{% endtimezone %}{{ time_zone }}\")\n        self.assertEqual(tpl.render(Context()), \"Europe/Paris\")\n\n    def test_get_current_timezone_templatetag_invalid_argument(self):\n        with self.assertRaises(TemplateSyntaxError):\n            Template(\"{% load tz %}{% get_current_timezone %}\").render()\n\n    @skipIf(sys.platform.startswith('win'), \"Windows uses non-standard time zone names\")\n    def test_tz_template_context_processor(self):\n        \"\"\"\n        Test the django.core.context_processors.tz template context processor.\n        \"\"\"\n        tpl = Template(\"{{ TIME_ZONE }}\")\n        self.assertEqual(tpl.render(Context()), \"\")\n        self.assertEqual(tpl.render(RequestContext(HttpRequest())), \"Africa/Nairobi\" if pytz else \"EAT\")\n\n    @requires_tz_support\n    def test_date_and_time_template_filters(self):\n        tpl = Template(\"{{ dt|date:'Y-m-d' }} at {{ dt|time:'H:i:s' }}\")\n        ctx = Context({'dt': datetime.datetime(2011, 9, 1, 20, 20, 20, tzinfo=UTC)})\n        self.assertEqual(tpl.render(ctx), \"2011-09-01 at 23:20:20\")\n        with timezone.override(ICT):\n            self.assertEqual(tpl.render(ctx), \"2011-09-02 at 03:20:20\")\n\n    def test_date_and_time_template_filters_honor_localtime(self):\n        tpl = Template(\"{% load tz %}{% localtime off %}{{ dt|date:'Y-m-d' }} at {{ dt|time:'H:i:s' }}{% endlocaltime %}\")\n        ctx = Context({'dt': datetime.datetime(2011, 9, 1, 20, 20, 20, tzinfo=UTC)})\n        self.assertEqual(tpl.render(ctx), \"2011-09-01 at 20:20:20\")\n        with timezone.override(ICT):\n            self.assertEqual(tpl.render(ctx), \"2011-09-01 at 20:20:20\")\n\n    def test_localtime_with_time_zone_setting_set_to_none(self):\n        # Regression for #17274\n        tpl = Template(\"{% load tz %}{{ dt }}\")\n        ctx = Context({'dt': datetime.datetime(2011, 9, 1, 12, 20, 30, tzinfo=EAT)})\n\n        with self.settings(TIME_ZONE=None):\n            # the actual value depends on the system time zone of the host\n            self.assertTrue(tpl.render(ctx).startswith(\"2011\"))\n\n    @requires_tz_support\n    def test_now_template_tag_uses_current_time_zone(self):\n        # Regression for #17343\n        tpl = Template(\"{% now \\\"O\\\" %}\")\n        self.assertEqual(tpl.render(Context({})), \"+0300\")\n        with timezone.override(ICT):\n            self.assertEqual(tpl.render(Context({})), \"+0700\")\n\n\n@override_settings(DATETIME_FORMAT='c', TIME_ZONE='Africa/Nairobi', USE_L10N=False, USE_TZ=False)\nclass LegacyFormsTests(TestCase):\n\n    def test_form(self):\n        form = EventForm({'dt': '2011-09-01 13:20:30'})\n        self.assertTrue(form.is_valid())\n        self.assertEqual(form.cleaned_data['dt'], datetime.datetime(2011, 9, 1, 13, 20, 30))\n\n    @skipIf(pytz is None, \"this test requires pytz\")\n    def test_form_with_non_existent_time(self):\n        form = EventForm({'dt': '2011-03-27 02:30:00'})\n        with timezone.override(pytz.timezone('Europe/Paris')):\n            # this is obviously a bug\n            self.assertTrue(form.is_valid())\n            self.assertEqual(form.cleaned_data['dt'], datetime.datetime(2011, 3, 27, 2, 30, 0))\n\n    @skipIf(pytz is None, \"this test requires pytz\")\n    def test_form_with_ambiguous_time(self):\n        form = EventForm({'dt': '2011-10-30 02:30:00'})\n        with timezone.override(pytz.timezone('Europe/Paris')):\n            # this is obviously a bug\n            self.assertTrue(form.is_valid())\n            self.assertEqual(form.cleaned_data['dt'], datetime.datetime(2011, 10, 30, 2, 30, 0))\n\n    def test_split_form(self):\n        form = EventSplitForm({'dt_0': '2011-09-01', 'dt_1': '13:20:30'})\n        self.assertTrue(form.is_valid())\n        self.assertEqual(form.cleaned_data['dt'], datetime.datetime(2011, 9, 1, 13, 20, 30))\n\n    def test_model_form(self):\n        EventModelForm({'dt': '2011-09-01 13:20:30'}).save()\n        e = Event.objects.get()\n        self.assertEqual(e.dt, datetime.datetime(2011, 9, 1, 13, 20, 30))\n\n\n@override_settings(DATETIME_FORMAT='c', TIME_ZONE='Africa/Nairobi', USE_L10N=False, USE_TZ=True)\nclass NewFormsTests(TestCase):\n\n    @requires_tz_support\n    def test_form(self):\n        form = EventForm({'dt': '2011-09-01 13:20:30'})\n        self.assertTrue(form.is_valid())\n        self.assertEqual(form.cleaned_data['dt'], datetime.datetime(2011, 9, 1, 10, 20, 30, tzinfo=UTC))\n\n    def test_form_with_other_timezone(self):\n        form = EventForm({'dt': '2011-09-01 17:20:30'})\n        with timezone.override(ICT):\n            self.assertTrue(form.is_valid())\n            self.assertEqual(form.cleaned_data['dt'], datetime.datetime(2011, 9, 1, 10, 20, 30, tzinfo=UTC))\n\n    @skipIf(pytz is None, \"this test requires pytz\")\n    def test_form_with_non_existent_time(self):\n        with timezone.override(pytz.timezone('Europe/Paris')):\n            form = EventForm({'dt': '2011-03-27 02:30:00'})\n            self.assertFalse(form.is_valid())\n            self.assertEqual(form.errors['dt'],\n                [\"2011-03-27 02:30:00 couldn't be interpreted in time zone \"\n                 \"Europe/Paris; it may be ambiguous or it may not exist.\"])\n\n    @skipIf(pytz is None, \"this test requires pytz\")\n    def test_form_with_ambiguous_time(self):\n        with timezone.override(pytz.timezone('Europe/Paris')):\n            form = EventForm({'dt': '2011-10-30 02:30:00'})\n            self.assertFalse(form.is_valid())\n            self.assertEqual(form.errors['dt'],\n                [\"2011-10-30 02:30:00 couldn't be interpreted in time zone \"\n                 \"Europe/Paris; it may be ambiguous or it may not exist.\"])\n\n    @requires_tz_support\n    def test_split_form(self):\n        form = EventSplitForm({'dt_0': '2011-09-01', 'dt_1': '13:20:30'})\n        self.assertTrue(form.is_valid())\n        self.assertEqual(form.cleaned_data['dt'], datetime.datetime(2011, 9, 1, 10, 20, 30, tzinfo=UTC))\n\n    @requires_tz_support\n    def test_model_form(self):\n        EventModelForm({'dt': '2011-09-01 13:20:30'}).save()\n        e = Event.objects.get()\n        self.assertEqual(e.dt, datetime.datetime(2011, 9, 1, 10, 20, 30, tzinfo=UTC))\n\n\n@override_settings(DATETIME_FORMAT='c', TIME_ZONE='Africa/Nairobi', USE_L10N=False, USE_TZ=True,\n                  PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))\nclass AdminTests(TestCase):\n\n    urls = 'modeltests.timezones.urls'\n    fixtures = ['tz_users.xml']\n\n    def setUp(self):\n        self.client.login(username='super', password='secret')\n\n    @requires_tz_support\n    def test_changelist(self):\n        e = Event.objects.create(dt=datetime.datetime(2011, 9, 1, 10, 20, 30, tzinfo=UTC))\n        response = self.client.get(reverse('admin:timezones_event_changelist'))\n        self.assertContains(response, e.dt.astimezone(EAT).isoformat())\n\n    def test_changelist_in_other_timezone(self):\n        e = Event.objects.create(dt=datetime.datetime(2011, 9, 1, 10, 20, 30, tzinfo=UTC))\n        with timezone.override(ICT):\n            response = self.client.get(reverse('admin:timezones_event_changelist'))\n        self.assertContains(response, e.dt.astimezone(ICT).isoformat())\n\n    @requires_tz_support\n    def test_change_editable(self):\n        e = Event.objects.create(dt=datetime.datetime(2011, 9, 1, 10, 20, 30, tzinfo=UTC))\n        response = self.client.get(reverse('admin:timezones_event_change', args=(e.pk,)))\n        self.assertContains(response, e.dt.astimezone(EAT).date().isoformat())\n        self.assertContains(response, e.dt.astimezone(EAT).time().isoformat())\n\n    def test_change_editable_in_other_timezone(self):\n        e = Event.objects.create(dt=datetime.datetime(2011, 9, 1, 10, 20, 30, tzinfo=UTC))\n        with timezone.override(ICT):\n            response = self.client.get(reverse('admin:timezones_event_change', args=(e.pk,)))\n        self.assertContains(response, e.dt.astimezone(ICT).date().isoformat())\n        self.assertContains(response, e.dt.astimezone(ICT).time().isoformat())\n\n    @requires_tz_support\n    def test_change_readonly(self):\n        Timestamp.objects.create()\n        # re-fetch the object for backends that lose microseconds (MySQL)\n        t = Timestamp.objects.get()\n        response = self.client.get(reverse('admin:timezones_timestamp_change', args=(t.pk,)))\n        self.assertContains(response, t.created.astimezone(EAT).isoformat())\n\n    def test_change_readonly_in_other_timezone(self):\n        Timestamp.objects.create()\n        # re-fetch the object for backends that lose microseconds (MySQL)\n        t = Timestamp.objects.get()\n        with timezone.override(ICT):\n            response = self.client.get(reverse('admin:timezones_timestamp_change', args=(t.pk,)))\n        self.assertContains(response, t.created.astimezone(ICT).isoformat())\n\n\n@override_settings(TIME_ZONE='Africa/Nairobi')\nclass UtilitiesTests(TestCase):\n\n    def test_make_aware(self):\n        self.assertEqual(\n            timezone.make_aware(datetime.datetime(2011, 9, 1, 13, 20, 30), EAT),\n            datetime.datetime(2011, 9, 1, 13, 20, 30, tzinfo=EAT)\n        )\n        self.assertEqual(\n            timezone.make_aware(datetime.datetime(2011, 9, 1, 10, 20, 30), UTC),\n            datetime.datetime(2011, 9, 1, 10, 20, 30, tzinfo=UTC)\n        )\n\n    def test_make_naive(self):\n        self.assertEqual(\n            timezone.make_naive(datetime.datetime(2011, 9, 1, 13, 20, 30, tzinfo=EAT), EAT),\n            datetime.datetime(2011, 9, 1, 13, 20, 30)\n        )\n        self.assertEqual(\n            timezone.make_naive(datetime.datetime(2011, 9, 1, 13, 20, 30, tzinfo=EAT), UTC),\n            datetime.datetime(2011, 9, 1, 10, 20, 30)\n        )\n        self.assertEqual(\n            timezone.make_naive(datetime.datetime(2011, 9, 1, 10, 20, 30, tzinfo=UTC), UTC),\n            datetime.datetime(2011, 9, 1, 10, 20, 30)\n        )\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/timezones/urls.py",
    "content": "from __future__ import absolute_import\n\nfrom django.conf.urls import patterns, include\nfrom django.contrib import admin\n\nfrom . import admin as tz_admin\n\nurlpatterns = patterns('',\n    (r'^admin/', include(admin.site.urls)),\n)\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/transactions/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/transactions/models.py",
    "content": "\"\"\"\n15. Transactions\n\nDjango handles transactions in three different ways. The default is to commit\neach transaction upon a write, but you can decorate a function to get\ncommit-on-success behavior. Alternatively, you can manage the transaction\nmanually.\n\"\"\"\nfrom __future__ import unicode_literals\n\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n@python_2_unicode_compatible\nclass Reporter(models.Model):\n    first_name = models.CharField(max_length=30)\n    last_name = models.CharField(max_length=30)\n    email = models.EmailField()\n\n    class Meta:\n        ordering = ('first_name', 'last_name')\n\n    def __str__(self):\n        return \"%s %s\" % (self.first_name, self.last_name)\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/transactions/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom django.db import connection, transaction, IntegrityError\nfrom django.test import TransactionTestCase, skipUnlessDBFeature\n\nfrom .models import Reporter\n\n\nclass TransactionTests(TransactionTestCase):\n    def create_a_reporter_then_fail(self, first, last):\n        a = Reporter(first_name=first, last_name=last)\n        a.save()\n        raise Exception(\"I meant to do that\")\n\n    def remove_a_reporter(self, first_name):\n        r = Reporter.objects.get(first_name=\"Alice\")\n        r.delete()\n\n    def manually_managed(self):\n        r = Reporter(first_name=\"Dirk\", last_name=\"Gently\")\n        r.save()\n        transaction.commit()\n\n    def manually_managed_mistake(self):\n        r = Reporter(first_name=\"Edward\", last_name=\"Woodward\")\n        r.save()\n        # Oops, I forgot to commit/rollback!\n\n    @skipUnlessDBFeature('supports_transactions')\n    def test_autocommit(self):\n        \"\"\"\n        The default behavior is to autocommit after each save() action.\n        \"\"\"\n        self.assertRaises(Exception,\n            self.create_a_reporter_then_fail,\n            \"Alice\", \"Smith\"\n        )\n\n        # The object created before the exception still exists\n        self.assertEqual(Reporter.objects.count(), 1)\n\n    @skipUnlessDBFeature('supports_transactions')\n    def test_autocommit_decorator(self):\n        \"\"\"\n        The autocommit decorator works exactly the same as the default behavior.\n        \"\"\"\n        autocomitted_create_then_fail = transaction.autocommit(\n            self.create_a_reporter_then_fail\n        )\n        self.assertRaises(Exception,\n            autocomitted_create_then_fail,\n            \"Alice\", \"Smith\"\n        )\n        # Again, the object created before the exception still exists\n        self.assertEqual(Reporter.objects.count(), 1)\n\n    @skipUnlessDBFeature('supports_transactions')\n    def test_autocommit_decorator_with_using(self):\n        \"\"\"\n        The autocommit decorator also works with a using argument.\n        \"\"\"\n        autocomitted_create_then_fail = transaction.autocommit(using='default')(\n            self.create_a_reporter_then_fail\n        )\n        self.assertRaises(Exception,\n            autocomitted_create_then_fail,\n            \"Alice\", \"Smith\"\n        )\n        # Again, the object created before the exception still exists\n        self.assertEqual(Reporter.objects.count(), 1)\n\n    @skipUnlessDBFeature('supports_transactions')\n    def test_commit_on_success(self):\n        \"\"\"\n        With the commit_on_success decorator, the transaction is only committed\n        if the function doesn't throw an exception.\n        \"\"\"\n        committed_on_success = transaction.commit_on_success(\n            self.create_a_reporter_then_fail)\n        self.assertRaises(Exception, committed_on_success, \"Dirk\", \"Gently\")\n        # This time the object never got saved\n        self.assertEqual(Reporter.objects.count(), 0)\n\n    @skipUnlessDBFeature('supports_transactions')\n    def test_commit_on_success_with_using(self):\n        \"\"\"\n        The commit_on_success decorator also works with a using argument.\n        \"\"\"\n        using_committed_on_success = transaction.commit_on_success(using='default')(\n            self.create_a_reporter_then_fail\n        )\n        self.assertRaises(Exception,\n            using_committed_on_success,\n            \"Dirk\", \"Gently\"\n        )\n        # This time the object never got saved\n        self.assertEqual(Reporter.objects.count(), 0)\n\n    @skipUnlessDBFeature('supports_transactions')\n    def test_commit_on_success_succeed(self):\n        \"\"\"\n        If there aren't any exceptions, the data will get saved.\n        \"\"\"\n        Reporter.objects.create(first_name=\"Alice\", last_name=\"Smith\")\n        remove_comitted_on_success = transaction.commit_on_success(\n            self.remove_a_reporter\n        )\n        remove_comitted_on_success(\"Alice\")\n        self.assertEqual(list(Reporter.objects.all()), [])\n\n    @skipUnlessDBFeature('supports_transactions')\n    def test_commit_on_success_exit(self):\n        @transaction.autocommit()\n        def gen_reporter():\n            @transaction.commit_on_success\n            def create_reporter():\n                Reporter.objects.create(first_name=\"Bobby\", last_name=\"Tables\")\n\n            create_reporter()\n            # Much more formal\n            r = Reporter.objects.get()\n            r.first_name = \"Robert\"\n            r.save()\n\n        gen_reporter()\n        r = Reporter.objects.get()\n        self.assertEqual(r.first_name, \"Robert\")\n\n\n    @skipUnlessDBFeature('supports_transactions')\n    def test_manually_managed(self):\n        \"\"\"\n        You can manually manage transactions if you really want to, but you\n        have to remember to commit/rollback.\n        \"\"\"\n        manually_managed = transaction.commit_manually(self.manually_managed)\n        manually_managed()\n        self.assertEqual(Reporter.objects.count(), 1)\n\n    @skipUnlessDBFeature('supports_transactions')\n    def test_manually_managed_mistake(self):\n        \"\"\"\n        If you forget, you'll get bad errors.\n        \"\"\"\n        manually_managed_mistake = transaction.commit_manually(\n            self.manually_managed_mistake\n        )\n        self.assertRaises(transaction.TransactionManagementError,\n            manually_managed_mistake)\n\n    @skipUnlessDBFeature('supports_transactions')\n    def test_manually_managed_with_using(self):\n        \"\"\"\n        The commit_manually function also works with a using argument.\n        \"\"\"\n        using_manually_managed_mistake = transaction.commit_manually(using='default')(\n            self.manually_managed_mistake\n        )\n        self.assertRaises(transaction.TransactionManagementError,\n            using_manually_managed_mistake\n        )\n\n\nclass TransactionRollbackTests(TransactionTestCase):\n    def execute_bad_sql(self):\n        cursor = connection.cursor()\n        cursor.execute(\"INSERT INTO transactions_reporter (first_name, last_name) VALUES ('Douglas', 'Adams');\")\n        transaction.set_dirty()\n\n    @skipUnlessDBFeature('requires_rollback_on_dirty_transaction')\n    def test_bad_sql(self):\n        \"\"\"\n        Regression for #11900: If a function wrapped by commit_on_success\n        writes a transaction that can't be committed, that transaction should\n        be rolled back. The bug is only visible using the psycopg2 backend,\n        though the fix is generally a good idea.\n        \"\"\"\n        execute_bad_sql = transaction.commit_on_success(self.execute_bad_sql)\n        self.assertRaises(IntegrityError, execute_bad_sql)\n        transaction.rollback()\n\nclass TransactionContextManagerTests(TransactionTestCase):\n    def create_reporter_and_fail(self):\n        Reporter.objects.create(first_name=\"Bob\", last_name=\"Holtzman\")\n        raise Exception\n\n    @skipUnlessDBFeature('supports_transactions')\n    def test_autocommit(self):\n        \"\"\"\n        The default behavior is to autocommit after each save() action.\n        \"\"\"\n        with self.assertRaises(Exception):\n            self.create_reporter_and_fail()\n        # The object created before the exception still exists\n        self.assertEqual(Reporter.objects.count(), 1)\n\n    @skipUnlessDBFeature('supports_transactions')\n    def test_autocommit_context_manager(self):\n        \"\"\"\n        The autocommit context manager works exactly the same as the default\n        behavior.\n        \"\"\"\n        with self.assertRaises(Exception):\n            with transaction.autocommit():\n                self.create_reporter_and_fail()\n\n        self.assertEqual(Reporter.objects.count(), 1)\n\n    @skipUnlessDBFeature('supports_transactions')\n    def test_autocommit_context_manager_with_using(self):\n        \"\"\"\n        The autocommit context manager also works with a using argument.\n        \"\"\"\n        with self.assertRaises(Exception):\n            with transaction.autocommit(using=\"default\"):\n                self.create_reporter_and_fail()\n\n        self.assertEqual(Reporter.objects.count(), 1)\n\n    @skipUnlessDBFeature('supports_transactions')\n    def test_commit_on_success(self):\n        \"\"\"\n        With the commit_on_success context manager, the transaction is only\n        committed if the block doesn't throw an exception.\n        \"\"\"\n        with self.assertRaises(Exception):\n            with transaction.commit_on_success():\n                self.create_reporter_and_fail()\n\n        self.assertEqual(Reporter.objects.count(), 0)\n\n    @skipUnlessDBFeature('supports_transactions')\n    def test_commit_on_success_with_using(self):\n        \"\"\"\n        The commit_on_success context manager also works with a using argument.\n        \"\"\"\n        with self.assertRaises(Exception):\n            with transaction.commit_on_success(using=\"default\"):\n                self.create_reporter_and_fail()\n\n        self.assertEqual(Reporter.objects.count(), 0)\n\n    @skipUnlessDBFeature('supports_transactions')\n    def test_commit_on_success_succeed(self):\n        \"\"\"\n        If there aren't any exceptions, the data will get saved.\n        \"\"\"\n        Reporter.objects.create(first_name=\"Alice\", last_name=\"Smith\")\n        with transaction.commit_on_success():\n            Reporter.objects.filter(first_name=\"Alice\").delete()\n\n        self.assertQuerysetEqual(Reporter.objects.all(), [])\n\n    @skipUnlessDBFeature('supports_transactions')\n    def test_commit_on_success_exit(self):\n        with transaction.autocommit():\n            with transaction.commit_on_success():\n                Reporter.objects.create(first_name=\"Bobby\", last_name=\"Tables\")\n\n            # Much more formal\n            r = Reporter.objects.get()\n            r.first_name = \"Robert\"\n            r.save()\n\n        r = Reporter.objects.get()\n        self.assertEqual(r.first_name, \"Robert\")\n\n    @skipUnlessDBFeature('supports_transactions')\n    def test_manually_managed(self):\n        \"\"\"\n        You can manually manage transactions if you really want to, but you\n        have to remember to commit/rollback.\n        \"\"\"\n        with transaction.commit_manually():\n            Reporter.objects.create(first_name=\"Libby\", last_name=\"Holtzman\")\n            transaction.commit()\n        self.assertEqual(Reporter.objects.count(), 1)\n\n    @skipUnlessDBFeature('supports_transactions')\n    def test_manually_managed_mistake(self):\n        \"\"\"\n        If you forget, you'll get bad errors.\n        \"\"\"\n        with self.assertRaises(transaction.TransactionManagementError):\n            with transaction.commit_manually():\n                Reporter.objects.create(first_name=\"Scott\", last_name=\"Browning\")\n\n    @skipUnlessDBFeature('supports_transactions')\n    def test_manually_managed_with_using(self):\n        \"\"\"\n        The commit_manually function also works with a using argument.\n        \"\"\"\n        with self.assertRaises(transaction.TransactionManagementError):\n            with transaction.commit_manually(using=\"default\"):\n                Reporter.objects.create(first_name=\"Walter\", last_name=\"Cronkite\")\n\n    @skipUnlessDBFeature('requires_rollback_on_dirty_transaction')\n    def test_bad_sql(self):\n        \"\"\"\n        Regression for #11900: If a block wrapped by commit_on_success\n        writes a transaction that can't be committed, that transaction should\n        be rolled back. The bug is only visible using the psycopg2 backend,\n        though the fix is generally a good idea.\n        \"\"\"\n        with self.assertRaises(IntegrityError):\n            with transaction.commit_on_success():\n                cursor = connection.cursor()\n                cursor.execute(\"INSERT INTO transactions_reporter (first_name, last_name) VALUES ('Douglas', 'Adams');\")\n                transaction.set_dirty()\n        transaction.rollback()\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/unmanaged_models/__init__.py",
    "content": "\n\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/unmanaged_models/models.py",
    "content": "\"\"\"\nModels can have a ``managed`` attribute, which specifies whether the SQL code\nis generated for the table on various manage.py operations.\n\"\"\"\n\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n#  All of these models are created in the database by Django.\n\n@python_2_unicode_compatible\nclass A01(models.Model):\n    f_a = models.CharField(max_length=10, db_index=True)\n    f_b = models.IntegerField()\n\n    class Meta:\n        db_table = 'a01'\n\n    def __str__(self):\n        return self.f_a\n\n@python_2_unicode_compatible\nclass B01(models.Model):\n    fk_a = models.ForeignKey(A01)\n    f_a = models.CharField(max_length=10, db_index=True)\n    f_b = models.IntegerField()\n\n    class Meta:\n        db_table = 'b01'\n        # 'managed' is True by default. This tests we can set it explicitly.\n        managed = True\n\n    def __str__(self):\n        return self.f_a\n\n@python_2_unicode_compatible\nclass C01(models.Model):\n    mm_a = models.ManyToManyField(A01, db_table='d01')\n    f_a = models.CharField(max_length=10, db_index=True)\n    f_b = models.IntegerField()\n\n    class Meta:\n        db_table = 'c01'\n\n    def __str__(self):\n        return self.f_a\n\n# All of these models use the same tables as the previous set (they are shadows\n# of possibly a subset of the columns). There should be no creation errors,\n# since we have told Django they aren't managed by Django.\n\n@python_2_unicode_compatible\nclass A02(models.Model):\n    f_a = models.CharField(max_length=10, db_index=True)\n\n    class Meta:\n        db_table = 'a01'\n        managed = False\n\n    def __str__(self):\n        return self.f_a\n\n@python_2_unicode_compatible\nclass B02(models.Model):\n    class Meta:\n        db_table = 'b01'\n        managed = False\n\n    fk_a = models.ForeignKey(A02)\n    f_a = models.CharField(max_length=10, db_index=True)\n    f_b = models.IntegerField()\n\n    def __str__(self):\n        return self.f_a\n\n# To re-use the many-to-many intermediate table, we need to manually set up\n# things up.\n@python_2_unicode_compatible\nclass C02(models.Model):\n    mm_a = models.ManyToManyField(A02, through=\"Intermediate\")\n    f_a = models.CharField(max_length=10, db_index=True)\n    f_b = models.IntegerField()\n\n    class Meta:\n        db_table = 'c01'\n        managed = False\n\n    def __str__(self):\n        return self.f_a\n\nclass Intermediate(models.Model):\n    a02 = models.ForeignKey(A02, db_column=\"a01_id\")\n    c02 = models.ForeignKey(C02, db_column=\"c01_id\")\n\n    class Meta:\n        db_table = 'd01'\n        managed = False\n\n#\n# These next models test the creation (or not) of many to many join tables\n# between managed and unmanaged models. A join table between two unmanaged\n# models shouldn't be automatically created (see #10647).\n#\n\n# Firstly, we need some models that will create the tables, purely so that the\n# tables are created. This is a test setup, not a requirement for unmanaged\n# models.\nclass Proxy1(models.Model):\n    class Meta:\n        db_table = \"unmanaged_models_proxy1\"\n\nclass Proxy2(models.Model):\n    class Meta:\n        db_table = \"unmanaged_models_proxy2\"\n\nclass Unmanaged1(models.Model):\n    class Meta:\n        managed = False\n        db_table = \"unmanaged_models_proxy1\"\n\n# Unmanged with an m2m to unmanaged: the intermediary table won't be created.\nclass Unmanaged2(models.Model):\n    mm = models.ManyToManyField(Unmanaged1)\n\n    class Meta:\n        managed = False\n        db_table = \"unmanaged_models_proxy2\"\n\n# Here's an unmanaged model with an m2m to a managed one; the intermediary\n# table *will* be created (unless given a custom `through` as for C02 above).\nclass Managed1(models.Model):\n    mm = models.ManyToManyField(Unmanaged1)\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/unmanaged_models/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom django.db import connection\nfrom django.test import TestCase\n\nfrom .models import A01, A02, B01, B02, C01, C02, Unmanaged2, Managed1\n\n\nclass SimpleTests(TestCase):\n\n    def test_simple(self):\n        \"\"\"\n        The main test here is that the all the models can be created without\n        any database errors. We can also do some more simple insertion and\n        lookup tests whilst we're here to show that the second of models do\n        refer to the tables from the first set.\n        \"\"\"\n        # Insert some data into one set of models.\n        a = A01.objects.create(f_a=\"foo\", f_b=42)\n        B01.objects.create(fk_a=a, f_a=\"fred\", f_b=1729)\n        c = C01.objects.create(f_a=\"barney\", f_b=1)\n        c.mm_a = [a]\n\n        # ... and pull it out via the other set.\n        a2 = A02.objects.all()[0]\n        self.assertTrue(isinstance(a2, A02))\n        self.assertEqual(a2.f_a, \"foo\")\n\n        b2 = B02.objects.all()[0]\n        self.assertTrue(isinstance(b2, B02))\n        self.assertEqual(b2.f_a, \"fred\")\n\n        self.assertTrue(isinstance(b2.fk_a, A02))\n        self.assertEqual(b2.fk_a.f_a, \"foo\")\n\n        self.assertEqual(list(C02.objects.filter(f_a=None)), [])\n\n        resp = list(C02.objects.filter(mm_a=a.id))\n        self.assertEqual(len(resp), 1)\n\n        self.assertTrue(isinstance(resp[0], C02))\n        self.assertEqual(resp[0].f_a, 'barney')\n\n\nclass ManyToManyUnmanagedTests(TestCase):\n\n    def test_many_to_many_between_unmanaged(self):\n        \"\"\"\n        The intermediary table between two unmanaged models should not be created.\n        \"\"\"\n        table = Unmanaged2._meta.get_field('mm').m2m_db_table()\n        tables = connection.introspection.table_names()\n        self.assertTrue(table not in tables, \"Table '%s' should not exist, but it does.\" % table)\n\n    def test_many_to_many_between_unmanaged_and_managed(self):\n        \"\"\"\n        An intermediary table between a managed and an unmanaged model should be created.\n        \"\"\"\n        table = Managed1._meta.get_field('mm').m2m_db_table()\n        tables = connection.introspection.table_names()\n        self.assertTrue(table in tables, \"Table '%s' does not exist.\" % table)\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/update/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/update/models.py",
    "content": "\"\"\"\nTests for the update() queryset method that allows in-place, multi-object\nupdates.\n\"\"\"\n\nfrom django.db import models\nfrom django.utils import six\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n@python_2_unicode_compatible\nclass DataPoint(models.Model):\n    name = models.CharField(max_length=20)\n    value = models.CharField(max_length=20)\n    another_value = models.CharField(max_length=20, blank=True)\n\n    def __str__(self):\n        return six.text_type(self.name)\n\n@python_2_unicode_compatible\nclass RelatedPoint(models.Model):\n    name = models.CharField(max_length=20)\n    data = models.ForeignKey(DataPoint)\n\n    def __str__(self):\n        return six.text_type(self.name)\n\n\nclass A(models.Model):\n    x = models.IntegerField(default=10)\n\nclass B(models.Model):\n    a = models.ForeignKey(A)\n    y = models.IntegerField(default=10)\n\nclass C(models.Model):\n    y = models.IntegerField(default=10)\n\nclass D(C):\n    a = models.ForeignKey(A)\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/update/tests.py",
    "content": "from __future__ import absolute_import, unicode_literals\n\nfrom django.test import TestCase\n\nfrom .models import A, B, C, D, DataPoint, RelatedPoint\n\n\nclass SimpleTest(TestCase):\n    def setUp(self):\n        self.a1 = A.objects.create()\n        self.a2 = A.objects.create()\n        for x in range(20):\n            B.objects.create(a=self.a1)\n            D.objects.create(a=self.a1)\n\n    def test_nonempty_update(self):\n        \"\"\"\n        Test that update changes the right number of rows for a nonempty queryset\n        \"\"\"\n        num_updated = self.a1.b_set.update(y=100)\n        self.assertEqual(num_updated, 20)\n        cnt = B.objects.filter(y=100).count()\n        self.assertEqual(cnt, 20)\n\n    def test_empty_update(self):\n        \"\"\"\n        Test that update changes the right number of rows for an empty queryset\n        \"\"\"\n        num_updated = self.a2.b_set.update(y=100)\n        self.assertEqual(num_updated, 0)\n        cnt = B.objects.filter(y=100).count()\n        self.assertEqual(cnt, 0)\n\n    def test_nonempty_update_with_inheritance(self):\n        \"\"\"\n        Test that update changes the right number of rows for an empty queryset\n        when the update affects only a base table\n        \"\"\"\n        num_updated = self.a1.d_set.update(y=100)\n        self.assertEqual(num_updated, 20)\n        cnt = D.objects.filter(y=100).count()\n        self.assertEqual(cnt, 20)\n\n    def test_empty_update_with_inheritance(self):\n        \"\"\"\n        Test that update changes the right number of rows for an empty queryset\n        when the update affects only a base table\n        \"\"\"\n        num_updated = self.a2.d_set.update(y=100)\n        self.assertEqual(num_updated, 0)\n        cnt = D.objects.filter(y=100).count()\n        self.assertEqual(cnt, 0)\n\nclass AdvancedTests(TestCase):\n\n    def setUp(self):\n        self.d0 = DataPoint.objects.create(name=\"d0\", value=\"apple\")\n        self.d2 = DataPoint.objects.create(name=\"d2\", value=\"banana\")\n        self.d3 = DataPoint.objects.create(name=\"d3\", value=\"banana\")\n        self.r1 = RelatedPoint.objects.create(name=\"r1\", data=self.d3)\n\n    def test_update(self):\n        \"\"\"\n        Objects are updated by first filtering the candidates into a queryset\n        and then calling the update() method. It executes immediately and\n        returns nothing.\n        \"\"\"\n        resp = DataPoint.objects.filter(value=\"apple\").update(name=\"d1\")\n        self.assertEqual(resp, 1)\n        resp = DataPoint.objects.filter(value=\"apple\")\n        self.assertEqual(list(resp), [self.d0])\n\n    def test_update_multiple_objects(self):\n        \"\"\"\n        We can update multiple objects at once.\n        \"\"\"\n        resp = DataPoint.objects.filter(value=\"banana\").update(\n            value=\"pineapple\")\n        self.assertEqual(resp, 2)\n        self.assertEqual(DataPoint.objects.get(name=\"d2\").value, 'pineapple')\n\n    def test_update_fk(self):\n        \"\"\"\n        Foreign key fields can also be updated, although you can only update\n        the object referred to, not anything inside the related object.\n        \"\"\"\n        resp = RelatedPoint.objects.filter(name=\"r1\").update(data=self.d0)\n        self.assertEqual(resp, 1)\n        resp = RelatedPoint.objects.filter(data__name=\"d0\")\n        self.assertEqual(list(resp), [self.r1])\n\n    def test_update_multiple_fields(self):\n        \"\"\"\n        Multiple fields can be updated at once\n        \"\"\"\n        resp = DataPoint.objects.filter(value=\"apple\").update(\n            value=\"fruit\", another_value=\"peach\")\n        self.assertEqual(resp, 1)\n        d = DataPoint.objects.get(name=\"d0\")\n        self.assertEqual(d.value, 'fruit')\n        self.assertEqual(d.another_value, 'peach')\n\n    def test_update_all(self):\n        \"\"\"\n        In the rare case you want to update every instance of a model, update()\n        is also a manager method.\n        \"\"\"\n        self.assertEqual(DataPoint.objects.update(value='thing'), 3)\n        resp = DataPoint.objects.values('value').distinct()\n        self.assertEqual(list(resp), [{'value': 'thing'}])\n\n    def test_update_slice_fail(self):\n        \"\"\"\n        We do not support update on already sliced query sets.\n        \"\"\"\n        method = DataPoint.objects.all()[:2].update\n        self.assertRaises(AssertionError, method,\n            another_value='another thing')\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/update_only_fields/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/update_only_fields/models.py",
    "content": "\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\nGENDER_CHOICES = (\n    ('M', 'Male'),\n    ('F', 'Female'),\n)\n\nclass Account(models.Model):\n    num = models.IntegerField()\n\n\n@python_2_unicode_compatible\nclass Person(models.Model):\n    name = models.CharField(max_length=20)\n    gender = models.CharField(max_length=1, choices=GENDER_CHOICES)\n    pid = models.IntegerField(null=True, default=None)\n\n    def __str__(self):\n        return self.name\n\n\nclass Employee(Person):\n    employee_num = models.IntegerField(default=0)\n    profile = models.ForeignKey('Profile', related_name='profiles', null=True)\n    accounts = models.ManyToManyField('Account', related_name='employees', blank=True, null=True)\n\n\n@python_2_unicode_compatible\nclass Profile(models.Model):\n    name = models.CharField(max_length=200)\n    salary = models.FloatField(default=1000.0)\n\n    def __str__(self):\n        return self.name\n\n\nclass ProxyEmployee(Employee):\n    class Meta:\n        proxy = True\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/update_only_fields/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom django.db.models.signals import pre_save, post_save\nfrom django.test import TestCase\n\nfrom .models import Person, Employee, ProxyEmployee, Profile, Account\n\n\nclass UpdateOnlyFieldsTests(TestCase):\n    def test_update_fields_basic(self):\n        s = Person.objects.create(name='Sara', gender='F')\n        self.assertEqual(s.gender, 'F')\n\n        s.gender = 'M'\n        s.name = 'Ian'\n        s.save(update_fields=['name'])\n\n        s = Person.objects.get(pk=s.pk)\n        self.assertEqual(s.gender, 'F')\n        self.assertEqual(s.name, 'Ian')\n\n    def test_update_fields_deferred(self):\n        s = Person.objects.create(name='Sara', gender='F', pid=22)\n        self.assertEqual(s.gender, 'F')\n\n        s1 = Person.objects.defer(\"gender\", \"pid\").get(pk=s.pk)\n        s1.name = \"Emily\"\n        s1.gender = \"M\"\n\n        with self.assertNumQueries(1):\n            s1.save()\n\n        s2 = Person.objects.get(pk=s1.pk)\n        self.assertEqual(s2.name, \"Emily\")\n        self.assertEqual(s2.gender, \"M\")\n\n    def test_update_fields_only_1(self):\n        s = Person.objects.create(name='Sara', gender='F')\n        self.assertEqual(s.gender, 'F')\n\n        s1 = Person.objects.only('name').get(pk=s.pk)\n        s1.name = \"Emily\"\n        s1.gender = \"M\"\n\n        with self.assertNumQueries(1):\n            s1.save()\n\n        s2 = Person.objects.get(pk=s1.pk)\n        self.assertEqual(s2.name, \"Emily\")\n        self.assertEqual(s2.gender, \"M\")\n\n    def test_update_fields_only_2(self):\n        s = Person.objects.create(name='Sara', gender='F', pid=22)\n        self.assertEqual(s.gender, 'F')\n\n        s1 = Person.objects.only('name').get(pk=s.pk)\n        s1.name = \"Emily\"\n        s1.gender = \"M\"\n\n        with self.assertNumQueries(2):\n            s1.save(update_fields=['pid'])\n\n        s2 = Person.objects.get(pk=s1.pk)\n        self.assertEqual(s2.name, \"Sara\")\n        self.assertEqual(s2.gender, \"F\")\n\n    def test_update_fields_only_repeated(self):\n        s = Person.objects.create(name='Sara', gender='F')\n        self.assertEqual(s.gender, 'F')\n\n        s1 = Person.objects.only('name').get(pk=s.pk)\n        s1.gender = 'M'\n        with self.assertNumQueries(1):\n            s1.save()\n        # Test that the deferred class does not remember that gender was\n        # set, instead the instace should remember this.\n        s1 = Person.objects.only('name').get(pk=s.pk)\n        with self.assertNumQueries(1):\n            s1.save()\n\n    def test_update_fields_inheritance_defer(self):\n        profile_boss = Profile.objects.create(name='Boss', salary=3000)\n        e1 = Employee.objects.create(name='Sara', gender='F',\n            employee_num=1, profile=profile_boss)\n        e1 = Employee.objects.only('name').get(pk=e1.pk)\n        e1.name = 'Linda'\n        with self.assertNumQueries(1):\n            e1.save()\n        self.assertEqual(Employee.objects.get(pk=e1.pk).name,\n                         'Linda')\n\n    def test_update_fields_fk_defer(self):\n        profile_boss = Profile.objects.create(name='Boss', salary=3000)\n        profile_receptionist = Profile.objects.create(name='Receptionist', salary=1000)\n        e1 = Employee.objects.create(name='Sara', gender='F',\n            employee_num=1, profile=profile_boss)\n        e1 = Employee.objects.only('profile').get(pk=e1.pk)\n        e1.profile = profile_receptionist\n        with self.assertNumQueries(1):\n            e1.save()\n        self.assertEqual(Employee.objects.get(pk=e1.pk).profile, profile_receptionist)\n        e1.profile_id = profile_boss.pk\n        with self.assertNumQueries(1):\n            e1.save()\n        self.assertEqual(Employee.objects.get(pk=e1.pk).profile, profile_boss)\n\n    def test_select_related_only_interaction(self):\n        profile_boss = Profile.objects.create(name='Boss', salary=3000)\n        e1 = Employee.objects.create(name='Sara', gender='F',\n            employee_num=1, profile=profile_boss)\n        e1 = Employee.objects.only('profile__salary').select_related('profile').get(pk=e1.pk)\n        profile_boss.name = 'Clerk'\n        profile_boss.salary = 1000\n        profile_boss.save()\n        # The loaded salary of 3000 gets saved, the name of 'Clerk' isn't\n        # overwritten.\n        with self.assertNumQueries(1):\n            e1.profile.save()\n        reloaded_profile = Profile.objects.get(pk=profile_boss.pk)\n        self.assertEqual(reloaded_profile.name, profile_boss.name)\n        self.assertEqual(reloaded_profile.salary, 3000)\n\n    def test_update_fields_m2m(self):\n        profile_boss = Profile.objects.create(name='Boss', salary=3000)\n        e1 = Employee.objects.create(name='Sara', gender='F',\n            employee_num=1, profile=profile_boss)\n\n        a1 = Account.objects.create(num=1)\n        a2 = Account.objects.create(num=2)\n\n        e1.accounts = [a1,a2]\n\n        with self.assertRaises(ValueError):\n            e1.save(update_fields=['accounts'])\n\n    def test_update_fields_inheritance(self):\n        profile_boss = Profile.objects.create(name='Boss', salary=3000)\n        profile_receptionist = Profile.objects.create(name='Receptionist', salary=1000)\n\n        e1 = Employee.objects.create(name='Sara', gender='F',\n            employee_num=1, profile=profile_boss)\n\n        e1.name = 'Ian'\n        e1.gender = 'M'\n        e1.save(update_fields=['name'])\n\n        e2 = Employee.objects.get(pk=e1.pk)\n        self.assertEqual(e2.name, 'Ian')\n        self.assertEqual(e2.gender, 'F')\n        self.assertEqual(e2.profile, profile_boss)\n\n        e2.profile = profile_receptionist\n        e2.name = 'Sara'\n        e2.save(update_fields=['profile'])\n\n        e3 = Employee.objects.get(pk=e1.pk)\n        self.assertEqual(e3.name, 'Ian')\n        self.assertEqual(e3.profile, profile_receptionist)\n\n        with self.assertNumQueries(1):\n            e3.profile = profile_boss\n            e3.save(update_fields=['profile_id'])\n\n        e4 = Employee.objects.get(pk=e3.pk)\n        self.assertEqual(e4.profile, profile_boss)\n        self.assertEqual(e4.profile_id, profile_boss.pk)\n\n    def test_update_fields_inheritance_with_proxy_model(self):\n        profile_boss = Profile.objects.create(name='Boss', salary=3000)\n        profile_receptionist = Profile.objects.create(name='Receptionist', salary=1000)\n\n        e1 = ProxyEmployee.objects.create(name='Sara', gender='F',\n            employee_num=1, profile=profile_boss)\n\n        e1.name = 'Ian'\n        e1.gender = 'M'\n        e1.save(update_fields=['name'])\n\n        e2 = ProxyEmployee.objects.get(pk=e1.pk)\n        self.assertEqual(e2.name, 'Ian')\n        self.assertEqual(e2.gender, 'F')\n        self.assertEqual(e2.profile, profile_boss)\n\n        e2.profile = profile_receptionist\n        e2.name = 'Sara'\n        e2.save(update_fields=['profile'])\n\n        e3 = ProxyEmployee.objects.get(pk=e1.pk)\n        self.assertEqual(e3.name, 'Ian')\n        self.assertEqual(e3.profile, profile_receptionist)\n\n    def test_update_fields_signals(self):\n        p = Person.objects.create(name='Sara', gender='F')\n        pre_save_data = []\n        def pre_save_receiver(**kwargs):\n            pre_save_data.append(kwargs['update_fields'])\n        pre_save.connect(pre_save_receiver)\n        post_save_data = []\n        def post_save_receiver(**kwargs):\n            post_save_data.append(kwargs['update_fields'])\n        post_save.connect(post_save_receiver)\n        p.save(update_fields=['name'])\n        self.assertEqual(len(pre_save_data), 1)\n        self.assertEqual(len(pre_save_data[0]), 1)\n        self.assertTrue('name' in pre_save_data[0])\n        self.assertEqual(len(post_save_data), 1)\n        self.assertEqual(len(post_save_data[0]), 1)\n        self.assertTrue('name' in post_save_data[0])\n\n        pre_save.disconnect(pre_save_receiver)\n        post_save.disconnect(post_save_receiver)\n\n    def test_update_fields_incorrect_params(self):\n        s = Person.objects.create(name='Sara', gender='F')\n\n        with self.assertRaises(ValueError):\n            s.save(update_fields=['first_name'])\n\n        with self.assertRaises(ValueError):\n            s.save(update_fields=\"name\")\n\n    def test_empty_update_fields(self):\n        s = Person.objects.create(name='Sara', gender='F')\n        pre_save_data = []\n        def pre_save_receiver(**kwargs):\n            pre_save_data.append(kwargs['update_fields'])\n        pre_save.connect(pre_save_receiver)\n        post_save_data = []\n        def post_save_receiver(**kwargs):\n            post_save_data.append(kwargs['update_fields'])\n        post_save.connect(post_save_receiver)\n        # Save is skipped.\n        with self.assertNumQueries(0):\n            s.save(update_fields=[])\n        # Signals were skipped, too...\n        self.assertEqual(len(pre_save_data), 0)\n        self.assertEqual(len(post_save_data), 0)\n\n        pre_save.disconnect(pre_save_receiver)\n        post_save.disconnect(post_save_receiver)\n\n    def test_num_queries_inheritance(self):\n        s = Employee.objects.create(name='Sara', gender='F')\n        s.employee_num = 1\n        s.name = 'Emily'\n        with self.assertNumQueries(1):\n            s.save(update_fields=['employee_num'])\n        s = Employee.objects.get(pk=s.pk)\n        self.assertEqual(s.employee_num, 1)\n        self.assertEqual(s.name, 'Sara')\n        s.employee_num = 2\n        s.name = 'Emily'\n        with self.assertNumQueries(1):\n            s.save(update_fields=['name'])\n        s = Employee.objects.get(pk=s.pk)\n        self.assertEqual(s.name, 'Emily')\n        self.assertEqual(s.employee_num, 1)\n        # A little sanity check that we actually did updates...\n        self.assertEqual(Employee.objects.count(), 1)\n        self.assertEqual(Person.objects.count(), 1)\n        with self.assertNumQueries(2):\n            s.save(update_fields=['name', 'employee_num'])\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/user_commands/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/user_commands/management/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/user_commands/management/commands/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/user_commands/management/commands/dance.py",
    "content": "from optparse import make_option\n\nfrom django.core.management.base import BaseCommand, CommandError\n\n\nclass Command(BaseCommand):\n    help = \"Dance around like a madman.\"\n    args = ''\n    requires_model_validation = True\n\n    option_list = BaseCommand.option_list + (\n        make_option(\"-s\", \"--style\", default=\"Rock'n'Roll\"),\n        make_option(\"-x\", \"--example\")\n    )\n\n    def handle(self, *args, **options):\n        example = options[\"example\"]\n        if example == \"raise\":\n            raise CommandError()\n        self.stdout.write(\"I don't feel like dancing %s.\" % options[\"style\"])\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/user_commands/models.py",
    "content": "\"\"\"\n38. User-registered management commands\n\nThe ``manage.py`` utility provides a number of useful commands for managing a\nDjango project. If you want to add a utility command of your own, you can.\n\nThe user-defined command ``dance`` is defined in the management/commands\nsubdirectory of this test application. It is a simple command that responds\nwith a printed message when invoked.\n\nFor more details on how to define your own ``manage.py`` commands, look at the\n``django.core.management.commands`` directory. This directory contains the\ndefinitions for the base Django ``manage.py`` commands.\n\"\"\"\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/user_commands/tests.py",
    "content": "import sys\n\nfrom django.core import management\nfrom django.core.management.base import CommandError\nfrom django.test import TestCase\nfrom django.utils import translation\nfrom django.utils.six import StringIO\n\n\nclass CommandTests(TestCase):\n    def test_command(self):\n        out = StringIO()\n        management.call_command('dance', stdout=out)\n        self.assertEqual(out.getvalue(),\n            \"I don't feel like dancing Rock'n'Roll.\\n\")\n\n    def test_command_style(self):\n        out = StringIO()\n        management.call_command('dance', style='Jive', stdout=out)\n        self.assertEqual(out.getvalue(),\n            \"I don't feel like dancing Jive.\\n\")\n\n    def test_language_preserved(self):\n        out = StringIO()\n        with translation.override('fr'):\n            management.call_command('dance', stdout=out)\n            self.assertEqual(translation.get_language(), 'fr')\n\n    def test_explode(self):\n        \"\"\" Test that an unknown command raises CommandError \"\"\"\n        self.assertRaises(CommandError, management.call_command, ('explode',))\n\n    def test_system_exit(self):\n        \"\"\" Exception raised in a command should raise CommandError with\n            call_command, but SystemExit when run from command line\n        \"\"\"\n        with self.assertRaises(CommandError):\n            management.call_command('dance', example=\"raise\")\n        old_stderr = sys.stderr\n        sys.stderr = err = StringIO()\n        try:\n            with self.assertRaises(SystemExit):\n                management.ManagementUtility(['manage.py', 'dance', '--example=raise']).execute()\n        finally:\n            sys.stderr = old_stderr\n        self.assertIn(\"CommandError\", err.getvalue())\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/validation/__init__.py",
    "content": "from django.core.exceptions import ValidationError\nfrom django.test import TestCase\n\n\nclass ValidationTestCase(TestCase):\n    def assertFailsValidation(self, clean, failed_fields):\n        with self.assertRaises(ValidationError) as cm:\n            clean()\n        self.assertEqual(sorted(failed_fields), sorted(cm.exception.message_dict))\n\n    def assertFieldFailsValidationWithMessage(self, clean, field_name, message):\n        with self.assertRaises(ValidationError) as cm:\n            clean()\n        self.assertIn(field_name, cm.exception.message_dict)\n        self.assertEqual(message, cm.exception.message_dict[field_name])\n\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/validation/models.py",
    "content": "from __future__ import unicode_literals\n\nfrom datetime import datetime\n\nfrom django.core.exceptions import ValidationError\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\ndef validate_answer_to_universe(value):\n    if value != 42:\n        raise ValidationError('This is not the answer to life, universe and everything!', code='not42')\n\nclass ModelToValidate(models.Model):\n    name = models.CharField(max_length=100)\n    created = models.DateTimeField(default=datetime.now)\n    number = models.IntegerField(db_column='number_val')\n    parent = models.ForeignKey('self', blank=True, null=True, limit_choices_to={'number': 10})\n    email = models.EmailField(blank=True)\n    url = models.URLField(blank=True)\n    f_with_custom_validator = models.IntegerField(blank=True, null=True, validators=[validate_answer_to_universe])\n\n    def clean(self):\n        super(ModelToValidate, self).clean()\n        if self.number == 11:\n            raise ValidationError('Invalid number supplied!')\n\nclass UniqueFieldsModel(models.Model):\n    unique_charfield = models.CharField(max_length=100, unique=True)\n    unique_integerfield = models.IntegerField(unique=True)\n    non_unique_field = models.IntegerField()\n\nclass CustomPKModel(models.Model):\n    my_pk_field = models.CharField(max_length=100, primary_key=True)\n\nclass UniqueTogetherModel(models.Model):\n    cfield = models.CharField(max_length=100)\n    ifield = models.IntegerField()\n    efield = models.EmailField()\n\n    class Meta:\n        unique_together = (('ifield', 'cfield',), ['ifield', 'efield'])\n\nclass UniqueForDateModel(models.Model):\n    start_date = models.DateField()\n    end_date = models.DateTimeField()\n    count = models.IntegerField(unique_for_date=\"start_date\", unique_for_year=\"end_date\")\n    order = models.IntegerField(unique_for_month=\"end_date\")\n    name = models.CharField(max_length=100)\n\nclass CustomMessagesModel(models.Model):\n    other  = models.IntegerField(blank=True, null=True)\n    number = models.IntegerField(db_column='number_val',\n        error_messages={'null': 'NULL', 'not42': 'AAARGH', 'not_equal': '%s != me'},\n        validators=[validate_answer_to_universe]\n    )\n\nclass Author(models.Model):\n    name = models.CharField(max_length=100)\n\nclass Article(models.Model):\n    title = models.CharField(max_length=100)\n    author = models.ForeignKey(Author)\n    pub_date = models.DateTimeField(blank=True)\n\n    def clean(self):\n        if self.pub_date is None:\n            self.pub_date = datetime.now()\n\n@python_2_unicode_compatible\nclass Post(models.Model):\n    title = models.CharField(max_length=50, unique_for_date='posted', blank=True)\n    slug = models.CharField(max_length=50, unique_for_year='posted', blank=True)\n    subtitle = models.CharField(max_length=50, unique_for_month='posted', blank=True)\n    posted = models.DateField()\n\n    def __str__(self):\n        return self.name\n\nclass FlexibleDatePost(models.Model):\n    title = models.CharField(max_length=50, unique_for_date='posted', blank=True)\n    slug = models.CharField(max_length=50, unique_for_year='posted', blank=True)\n    subtitle = models.CharField(max_length=50, unique_for_month='posted', blank=True)\n    posted = models.DateField(blank=True, null=True)\n\nclass UniqueErrorsModel(models.Model):\n    name = models.CharField(max_length=100, unique=True, error_messages={'unique': 'Custom unique name message.'})\n    no = models.IntegerField(unique=True, error_messages={'unique': 'Custom unique number message.'})\n\nclass GenericIPAddressTestModel(models.Model):\n    generic_ip = models.GenericIPAddressField(blank=True, null=True, unique=True)\n    v4_ip = models.GenericIPAddressField(blank=True, null=True, protocol=\"ipv4\")\n    v6_ip = models.GenericIPAddressField(blank=True, null=True, protocol=\"ipv6\")\n    ip_verbose_name = models.GenericIPAddressField(\"IP Address Verbose\",\n            blank=True, null=True)\n\nclass GenericIPAddrUnpackUniqueTest(models.Model):\n    generic_v4unpack_ip = models.GenericIPAddressField(blank=True, unique=True, unpack_ipv4=True)\n\n\n# A model can't have multiple AutoFields\n# Refs #12467.\nassertion_error = None\ntry:\n    class MultipleAutoFields(models.Model):\n        auto1 = models.AutoField(primary_key=True)\n        auto2 = models.AutoField(primary_key=True)\nexcept AssertionError as exc:\n    assertion_error = exc\nassert str(assertion_error) == \"A model can't have more than one AutoField.\"\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/validation/test_custom_messages.py",
    "content": "from __future__ import absolute_import\n\nfrom . import ValidationTestCase\nfrom .models import CustomMessagesModel\n\n\nclass CustomMessagesTest(ValidationTestCase):\n    def test_custom_simple_validator_message(self):\n        cmm = CustomMessagesModel(number=12)\n        self.assertFieldFailsValidationWithMessage(cmm.full_clean, 'number', ['AAARGH'])\n\n    def test_custom_null_message(self):\n        cmm = CustomMessagesModel()\n        self.assertFieldFailsValidationWithMessage(cmm.full_clean, 'number', ['NULL'])\n\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/validation/test_error_messages.py",
    "content": "# -*- encoding: utf-8 -*-\nfrom __future__ import unicode_literals\n\nfrom django.core.exceptions import ValidationError\nfrom django.db import models\nfrom django.utils import six\nfrom django.utils.unittest import TestCase\n\n\nclass ValidationMessagesTest(TestCase):\n\n    def _test_validation_messages(self, field, value, expected):\n        with self.assertRaises(ValidationError) as cm:\n            field.clean(value, None)\n        self.assertEqual(cm.exception.messages, expected)\n\n    def test_autofield_field_raises_error_message(self):\n        f = models.AutoField(primary_key=True)\n        self._test_validation_messages(f, 'fõo',\n            [\"'fõo' value must be an integer.\"])\n        # primary_key must be True. Refs #12467.\n        with six.assertRaisesRegex(self, AssertionError,\n                \"AutoFields must have primary_key=True.\"):\n            models.AutoField(primary_key=False)\n\n    def test_integer_field_raises_error_message(self):\n        f = models.IntegerField()\n        self._test_validation_messages(f, 'fõo',\n            [\"'fõo' value must be an integer.\"])\n\n    def test_boolean_field_raises_error_message(self):\n        f = models.BooleanField()\n        self._test_validation_messages(f, 'fõo',\n            [\"'fõo' value must be either True or False.\"])\n\n    def test_float_field_raises_error_message(self):\n        f = models.FloatField()\n        self._test_validation_messages(f, 'fõo',\n            [\"'fõo' value must be a float.\"])\n\n    def test_decimal_field_raises_error_message(self):\n        f = models.DecimalField()\n        self._test_validation_messages(f, 'fõo',\n            [\"'fõo' value must be a decimal number.\"])\n\n    def test_null_boolean_field_raises_error_message(self):\n        f = models.NullBooleanField()\n        self._test_validation_messages(f, 'fõo',\n            [\"'fõo' value must be either None, True or False.\"])\n\n    def test_date_field_raises_error_message(self):\n        f = models.DateField()\n        self._test_validation_messages(f, 'fõo',\n            [\"'fõo' value has an invalid date format. \"\n             \"It must be in YYYY-MM-DD format.\"])\n\n        self._test_validation_messages(f, 'aaaa-10-10',\n            [\"'aaaa-10-10' value has an invalid date format. \"\n             \"It must be in YYYY-MM-DD format.\"])\n\n        self._test_validation_messages(f, '2011-13-10',\n            [\"'2011-13-10' value has the correct format (YYYY-MM-DD) \"\n             \"but it is an invalid date.\"])\n\n        self._test_validation_messages(f, '2011-10-32',\n            [\"'2011-10-32' value has the correct format (YYYY-MM-DD) \"\n             \"but it is an invalid date.\"])\n\n    def test_datetime_field_raises_error_message(self):\n        f = models.DateTimeField()\n        # Wrong format\n        self._test_validation_messages(f, 'fõo',\n            [\"'fõo' value has an invalid format. It must be \"\n             \"in YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ] format.\"])\n\n        # Correct format but invalid date\n        self._test_validation_messages(f, '2011-10-32',\n            [\"'2011-10-32' value has the correct format \"\n             \"(YYYY-MM-DD) but it is an invalid date.\"])\n\n        # Correct format but invalid date/time\n        self._test_validation_messages(f, '2011-10-32 10:10',\n            [\"'2011-10-32 10:10' value has the correct format \"\n             \"(YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) \"\n             \"but it is an invalid date/time.\"])\n\n    def test_time_field_raises_error_message(self):\n        f = models.TimeField()\n        # Wrong format\n        self._test_validation_messages(f, 'fõo',\n            [\"'fõo' value has an invalid format. It must be in \"\n             \"HH:MM[:ss[.uuuuuu]] format.\"])\n\n        # Correct format but invalid time\n        self._test_validation_messages(f, '25:50',\n            [\"'25:50' value has the correct format \"\n             \"(HH:MM[:ss[.uuuuuu]]) but it is an invalid time.\"])\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/validation/test_unique.py",
    "content": "from __future__ import absolute_import, unicode_literals\n\nimport datetime\n\nfrom django.core.exceptions import ValidationError\nfrom django.test import TestCase\nfrom django.utils import unittest\n\nfrom .models import (CustomPKModel, UniqueTogetherModel, UniqueFieldsModel,\n    UniqueForDateModel, ModelToValidate, Post, FlexibleDatePost,\n    UniqueErrorsModel)\n\n\nclass GetUniqueCheckTests(unittest.TestCase):\n    def test_unique_fields_get_collected(self):\n        m = UniqueFieldsModel()\n        self.assertEqual(\n            ([(UniqueFieldsModel, ('id',)),\n              (UniqueFieldsModel, ('unique_charfield',)),\n              (UniqueFieldsModel, ('unique_integerfield',))],\n             []),\n            m._get_unique_checks()\n        )\n\n    def test_unique_together_gets_picked_up_and_converted_to_tuple(self):\n        m = UniqueTogetherModel()\n        self.assertEqual(\n            ([(UniqueTogetherModel, ('ifield', 'cfield',)),\n              (UniqueTogetherModel, ('ifield', 'efield')),\n              (UniqueTogetherModel, ('id',)), ],\n             []),\n            m._get_unique_checks()\n        )\n\n    def test_primary_key_is_considered_unique(self):\n        m = CustomPKModel()\n        self.assertEqual(([(CustomPKModel, ('my_pk_field',))], []), m._get_unique_checks())\n\n    def test_unique_for_date_gets_picked_up(self):\n        m = UniqueForDateModel()\n        self.assertEqual((\n            [(UniqueForDateModel, ('id',))],\n            [(UniqueForDateModel, 'date', 'count', 'start_date'),\n             (UniqueForDateModel, 'year', 'count', 'end_date'),\n             (UniqueForDateModel, 'month', 'order', 'end_date')]\n            ), m._get_unique_checks()\n        )\n\n    def test_unique_for_date_exclusion(self):\n        m = UniqueForDateModel()\n        self.assertEqual((\n            [(UniqueForDateModel, ('id',))],\n            [(UniqueForDateModel, 'year', 'count', 'end_date'),\n             (UniqueForDateModel, 'month', 'order', 'end_date')]\n            ), m._get_unique_checks(exclude='start_date')\n        )\n\nclass PerformUniqueChecksTest(TestCase):\n    def test_primary_key_unique_check_not_performed_when_adding_and_pk_not_specified(self):\n        # Regression test for #12560\n        with self.assertNumQueries(0):\n            mtv = ModelToValidate(number=10, name='Some Name')\n            setattr(mtv, '_adding', True)\n            mtv.full_clean()\n\n    def test_primary_key_unique_check_performed_when_adding_and_pk_specified(self):\n        # Regression test for #12560\n        with self.assertNumQueries(1):\n            mtv = ModelToValidate(number=10, name='Some Name', id=123)\n            setattr(mtv, '_adding', True)\n            mtv.full_clean()\n\n    def test_primary_key_unique_check_not_performed_when_not_adding(self):\n        # Regression test for #12132\n        with self.assertNumQueries(0):\n            mtv = ModelToValidate(number=10, name='Some Name')\n            mtv.full_clean()\n\n    def test_unique_for_date(self):\n        p1 = Post.objects.create(title=\"Django 1.0 is released\",\n            slug=\"Django 1.0\", subtitle=\"Finally\", posted=datetime.date(2008, 9, 3))\n\n        p = Post(title=\"Django 1.0 is released\", posted=datetime.date(2008, 9, 3))\n        with self.assertRaises(ValidationError) as cm:\n            p.full_clean()\n        self.assertEqual(cm.exception.message_dict, {'title': ['Title must be unique for Posted date.']})\n\n        # Should work without errors\n        p = Post(title=\"Work on Django 1.1 begins\", posted=datetime.date(2008, 9, 3))\n        p.full_clean()\n\n        # Should work without errors\n        p = Post(title=\"Django 1.0 is released\", posted=datetime.datetime(2008, 9,4))\n        p.full_clean()\n\n        p = Post(slug=\"Django 1.0\", posted=datetime.datetime(2008, 1, 1))\n        with self.assertRaises(ValidationError) as cm:\n            p.full_clean()\n        self.assertEqual(cm.exception.message_dict, {'slug': ['Slug must be unique for Posted year.']})\n\n        p = Post(subtitle=\"Finally\", posted=datetime.datetime(2008, 9, 30))\n        with self.assertRaises(ValidationError) as cm:\n            p.full_clean()\n        self.assertEqual(cm.exception.message_dict, {'subtitle': ['Subtitle must be unique for Posted month.']})\n\n        p = Post(title=\"Django 1.0 is released\")\n        with self.assertRaises(ValidationError) as cm:\n            p.full_clean()\n        self.assertEqual(cm.exception.message_dict, {'posted': ['This field cannot be null.']})\n\n    def test_unique_for_date_with_nullable_date(self):\n        p1 = FlexibleDatePost.objects.create(title=\"Django 1.0 is released\",\n            slug=\"Django 1.0\", subtitle=\"Finally\", posted=datetime.date(2008, 9, 3))\n\n        p = FlexibleDatePost(title=\"Django 1.0 is released\")\n        try:\n            p.full_clean()\n        except ValidationError:\n            self.fail(\"unique_for_date checks shouldn't trigger when the associated DateField is None.\")\n\n        p = FlexibleDatePost(slug=\"Django 1.0\")\n        try:\n            p.full_clean()\n        except ValidationError:\n            self.fail(\"unique_for_year checks shouldn't trigger when the associated DateField is None.\")\n\n        p = FlexibleDatePost(subtitle=\"Finally\")\n        try:\n            p.full_clean()\n        except ValidationError:\n            self.fail(\"unique_for_month checks shouldn't trigger when the associated DateField is None.\")\n\n    def test_unique_errors(self):\n        m1 = UniqueErrorsModel.objects.create(name='Some Name', no=10)\n        m = UniqueErrorsModel(name='Some Name', no=11)\n        with self.assertRaises(ValidationError) as cm:\n            m.full_clean()\n        self.assertEqual(cm.exception.message_dict, {'name': ['Custom unique name message.']})\n\n        m = UniqueErrorsModel(name='Some Other Name', no=10)\n        with self.assertRaises(ValidationError) as cm:\n            m.full_clean()\n        self.assertEqual(cm.exception.message_dict, {'no': ['Custom unique number message.']})\n\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/validation/tests.py",
    "content": "from __future__ import absolute_import, unicode_literals\n\nfrom django import forms\nfrom django.core.exceptions import NON_FIELD_ERRORS\nfrom django.test import TestCase\n\nfrom . import ValidationTestCase\nfrom .models import (Author, Article, ModelToValidate,\n    GenericIPAddressTestModel, GenericIPAddrUnpackUniqueTest)\n\n# Import other tests for this package.\nfrom .test_custom_messages import CustomMessagesTest\nfrom .test_error_messages import ValidationMessagesTest\nfrom .test_unique import GetUniqueCheckTests, PerformUniqueChecksTest\nfrom .validators import TestModelsWithValidators\n\n\nclass BaseModelValidationTests(ValidationTestCase):\n\n    def test_missing_required_field_raises_error(self):\n        mtv = ModelToValidate(f_with_custom_validator=42)\n        self.assertFailsValidation(mtv.full_clean, ['name', 'number'])\n\n    def test_with_correct_value_model_validates(self):\n        mtv = ModelToValidate(number=10, name='Some Name')\n        self.assertEqual(None, mtv.full_clean())\n\n    def test_custom_validate_method(self):\n        mtv = ModelToValidate(number=11)\n        self.assertFailsValidation(mtv.full_clean, [NON_FIELD_ERRORS, 'name'])\n\n    def test_wrong_FK_value_raises_error(self):\n        mtv=ModelToValidate(number=10, name='Some Name', parent_id=3)\n        self.assertFailsValidation(mtv.full_clean, ['parent'])\n\n    def test_correct_FK_value_validates(self):\n        parent = ModelToValidate.objects.create(number=10, name='Some Name')\n        mtv = ModelToValidate(number=10, name='Some Name', parent_id=parent.pk)\n        self.assertEqual(None, mtv.full_clean())\n\n    def test_limited_FK_raises_error(self):\n        # The limit_choices_to on the parent field says that a parent object's\n        # number attribute must be 10, so this should fail validation.\n        parent = ModelToValidate.objects.create(number=11, name='Other Name')\n        mtv = ModelToValidate(number=10, name='Some Name', parent_id=parent.pk)\n        self.assertFailsValidation(mtv.full_clean, ['parent'])\n\n    def test_wrong_email_value_raises_error(self):\n        mtv = ModelToValidate(number=10, name='Some Name', email='not-an-email')\n        self.assertFailsValidation(mtv.full_clean, ['email'])\n\n    def test_correct_email_value_passes(self):\n        mtv = ModelToValidate(number=10, name='Some Name', email='valid@email.com')\n        self.assertEqual(None, mtv.full_clean())\n\n    def test_wrong_url_value_raises_error(self):\n        mtv = ModelToValidate(number=10, name='Some Name', url='not a url')\n        self.assertFieldFailsValidationWithMessage(mtv.full_clean, 'url', ['Enter a valid value.'])\n\n    def test_text_greater_that_charfields_max_length_raises_erros(self):\n        mtv = ModelToValidate(number=10, name='Some Name'*100)\n        self.assertFailsValidation(mtv.full_clean, ['name',])\n\n\nclass ArticleForm(forms.ModelForm):\n    class Meta:\n        model = Article\n        exclude = ['author']\n\nclass ModelFormsTests(TestCase):\n    def setUp(self):\n        self.author = Author.objects.create(name='Joseph Kocherhans')\n\n    def test_partial_validation(self):\n        # Make sure the \"commit=False and set field values later\" idiom still\n        # works with model validation.\n        data = {\n            'title': 'The state of model validation',\n            'pub_date': '2010-1-10 14:49:00'\n        }\n        form = ArticleForm(data)\n        self.assertEqual(list(form.errors), [])\n        article = form.save(commit=False)\n        article.author = self.author\n        article.save()\n\n    def test_validation_with_empty_blank_field(self):\n        # Since a value for pub_date wasn't provided and the field is\n        # blank=True, model-validation should pass.\n        # Also, Article.clean() should be run, so pub_date will be filled after\n        # validation, so the form should save cleanly even though pub_date is\n        # not allowed to be null.\n        data = {\n            'title': 'The state of model validation',\n        }\n        article = Article(author_id=self.author.id)\n        form = ArticleForm(data, instance=article)\n        self.assertEqual(list(form.errors), [])\n        self.assertNotEqual(form.instance.pub_date, None)\n        article = form.save()\n\n    def test_validation_with_invalid_blank_field(self):\n        # Even though pub_date is set to blank=True, an invalid value was\n        # provided, so it should fail validation.\n        data = {\n            'title': 'The state of model validation',\n            'pub_date': 'never'\n        }\n        article = Article(author_id=self.author.id)\n        form = ArticleForm(data, instance=article)\n        self.assertEqual(list(form.errors), ['pub_date'])\n\n\nclass GenericIPAddressFieldTests(ValidationTestCase):\n\n    def test_correct_generic_ip_passes(self):\n        giptm = GenericIPAddressTestModel(generic_ip=\"1.2.3.4\")\n        self.assertEqual(None, giptm.full_clean())\n        giptm = GenericIPAddressTestModel(generic_ip=\"2001::2\")\n        self.assertEqual(None, giptm.full_clean())\n\n    def test_invalid_generic_ip_raises_error(self):\n        giptm = GenericIPAddressTestModel(generic_ip=\"294.4.2.1\")\n        self.assertFailsValidation(giptm.full_clean, ['generic_ip',])\n        giptm = GenericIPAddressTestModel(generic_ip=\"1:2\")\n        self.assertFailsValidation(giptm.full_clean, ['generic_ip',])\n\n    def test_correct_v4_ip_passes(self):\n        giptm = GenericIPAddressTestModel(v4_ip=\"1.2.3.4\")\n        self.assertEqual(None, giptm.full_clean())\n\n    def test_invalid_v4_ip_raises_error(self):\n        giptm = GenericIPAddressTestModel(v4_ip=\"294.4.2.1\")\n        self.assertFailsValidation(giptm.full_clean, ['v4_ip',])\n        giptm = GenericIPAddressTestModel(v4_ip=\"2001::2\")\n        self.assertFailsValidation(giptm.full_clean, ['v4_ip',])\n\n    def test_correct_v6_ip_passes(self):\n        giptm = GenericIPAddressTestModel(v6_ip=\"2001::2\")\n        self.assertEqual(None, giptm.full_clean())\n\n    def test_invalid_v6_ip_raises_error(self):\n        giptm = GenericIPAddressTestModel(v6_ip=\"1.2.3.4\")\n        self.assertFailsValidation(giptm.full_clean, ['v6_ip',])\n        giptm = GenericIPAddressTestModel(v6_ip=\"1:2\")\n        self.assertFailsValidation(giptm.full_clean, ['v6_ip',])\n\n    def test_v6_uniqueness_detection(self):\n        # These two addresses are the same with different syntax\n        giptm = GenericIPAddressTestModel(generic_ip=\"2001::1:0:0:0:0:2\")\n        giptm.save()\n        giptm = GenericIPAddressTestModel(generic_ip=\"2001:0:1:2\")\n        self.assertFailsValidation(giptm.full_clean, ['generic_ip',])\n\n    def test_v4_unpack_uniqueness_detection(self):\n        # These two are different, because we are not doing IPv4 unpacking\n        giptm = GenericIPAddressTestModel(generic_ip=\"::ffff:10.10.10.10\")\n        giptm.save()\n        giptm = GenericIPAddressTestModel(generic_ip=\"10.10.10.10\")\n        self.assertEqual(None, giptm.full_clean())\n\n        # These two are the same, because we are doing IPv4 unpacking\n        giptm = GenericIPAddrUnpackUniqueTest(generic_v4unpack_ip=\"::ffff:18.52.18.52\")\n        giptm.save()\n        giptm = GenericIPAddrUnpackUniqueTest(generic_v4unpack_ip=\"18.52.18.52\")\n        self.assertFailsValidation(giptm.full_clean, ['generic_v4unpack_ip',])\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/validation/validators.py",
    "content": "from __future__ import absolute_import, unicode_literals\n\nfrom . import ValidationTestCase\nfrom .models import ModelToValidate\n\n\nclass TestModelsWithValidators(ValidationTestCase):\n    def test_custom_validator_passes_for_correct_value(self):\n        mtv = ModelToValidate(number=10, name='Some Name', f_with_custom_validator=42)\n        self.assertEqual(None, mtv.full_clean())\n\n    def test_custom_validator_raises_error_for_incorrect_value(self):\n        mtv = ModelToValidate(number=10, name='Some Name', f_with_custom_validator=12)\n        self.assertFailsValidation(mtv.full_clean, ['f_with_custom_validator'])\n        self.assertFieldFailsValidationWithMessage(\n            mtv.full_clean,\n            'f_with_custom_validator',\n            ['This is not the answer to life, universe and everything!']\n        )\n"
  },
  {
    "path": "Django-1.5.1/tests/modeltests/validators/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/validators/models.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/modeltests/validators/tests.py",
    "content": "# -*- coding: utf-8 -*-\nfrom __future__ import unicode_literals\n\nimport re\nimport types\nfrom datetime import datetime, timedelta\n\nfrom django.core.exceptions import ValidationError\nfrom django.core.validators import *\nfrom django.test.utils import str_prefix\nfrom django.utils.unittest import TestCase\n\n\nNOW = datetime.now()\n\nTEST_DATA = (\n    # (validator, value, expected),\n    (validate_integer, '42', None),\n    (validate_integer, '-42', None),\n    (validate_integer, -42, None),\n    (validate_integer, -42.5, None),\n\n    (validate_integer, None, ValidationError),\n    (validate_integer, 'a', ValidationError),\n\n    (validate_email, 'email@here.com', None),\n    (validate_email, 'weirder-email@here.and.there.com', None),\n    (validate_email, 'email@[127.0.0.1]', None),\n    (validate_email, 'example@valid-----hyphens.com', None),\n    (validate_email, 'example@valid-with-hyphens.com', None),\n    (validate_email, 'test@domain.with.idn.tld.उदाहरण.परीक्षा', None),\n\n    (validate_email, None, ValidationError),\n    (validate_email, '', ValidationError),\n    (validate_email, 'abc', ValidationError),\n    (validate_email, 'abc@', ValidationError),\n    (validate_email, 'abc@bar', ValidationError),\n    (validate_email, 'a @x.cz', ValidationError),\n    (validate_email, 'abc@.com', ValidationError),\n    (validate_email, 'something@@somewhere.com', ValidationError),\n    (validate_email, 'email@127.0.0.1', ValidationError),\n    (validate_email, 'example@invalid-.com', ValidationError),\n    (validate_email, 'example@-invalid.com', ValidationError),\n    (validate_email, 'example@inv-.alid-.com', ValidationError),\n    (validate_email, 'example@inv-.-alid.com', ValidationError),\n    # Quoted-string format (CR not allowed)\n    (validate_email, '\"\\\\\\011\"@here.com', None),\n    (validate_email, '\"\\\\\\012\"@here.com', ValidationError),\n\n    (validate_slug, 'slug-ok', None),\n    (validate_slug, 'longer-slug-still-ok', None),\n    (validate_slug, '--------', None),\n    (validate_slug, 'nohyphensoranything', None),\n\n    (validate_slug, '', ValidationError),\n    (validate_slug, ' text ', ValidationError),\n    (validate_slug, ' ', ValidationError),\n    (validate_slug, 'some@mail.com', ValidationError),\n    (validate_slug, '你好', ValidationError),\n    (validate_slug, '\\n', ValidationError),\n\n    (validate_ipv4_address, '1.1.1.1', None),\n    (validate_ipv4_address, '255.0.0.0', None),\n    (validate_ipv4_address, '0.0.0.0', None),\n\n    (validate_ipv4_address, '256.1.1.1', ValidationError),\n    (validate_ipv4_address, '25.1.1.', ValidationError),\n    (validate_ipv4_address, '25,1,1,1', ValidationError),\n    (validate_ipv4_address, '25.1 .1.1', ValidationError),\n\n    # validate_ipv6_address uses django.utils.ipv6, which\n    # is tested in much greater detail in it's own testcase\n    (validate_ipv6_address, 'fe80::1', None),\n    (validate_ipv6_address, '::1', None),\n    (validate_ipv6_address, '1:2:3:4:5:6:7:8', None),\n\n    (validate_ipv6_address, '1:2', ValidationError),\n    (validate_ipv6_address, '::zzz', ValidationError),\n    (validate_ipv6_address, '12345::', ValidationError),\n\n    (validate_ipv46_address, '1.1.1.1', None),\n    (validate_ipv46_address, '255.0.0.0', None),\n    (validate_ipv46_address, '0.0.0.0', None),\n    (validate_ipv46_address, 'fe80::1', None),\n    (validate_ipv46_address, '::1', None),\n    (validate_ipv46_address, '1:2:3:4:5:6:7:8', None),\n\n    (validate_ipv46_address, '256.1.1.1', ValidationError),\n    (validate_ipv46_address, '25.1.1.', ValidationError),\n    (validate_ipv46_address, '25,1,1,1', ValidationError),\n    (validate_ipv46_address, '25.1 .1.1', ValidationError),\n    (validate_ipv46_address, '1:2', ValidationError),\n    (validate_ipv46_address, '::zzz', ValidationError),\n    (validate_ipv46_address, '12345::', ValidationError),\n\n    (validate_comma_separated_integer_list, '1', None),\n    (validate_comma_separated_integer_list, '1,2,3', None),\n    (validate_comma_separated_integer_list, '1,2,3,', None),\n\n    (validate_comma_separated_integer_list, '', ValidationError),\n    (validate_comma_separated_integer_list, 'a,b,c', ValidationError),\n    (validate_comma_separated_integer_list, '1, 2, 3', ValidationError),\n\n    (MaxValueValidator(10), 10, None),\n    (MaxValueValidator(10), -10, None),\n    (MaxValueValidator(10), 0, None),\n    (MaxValueValidator(NOW), NOW, None),\n    (MaxValueValidator(NOW), NOW - timedelta(days=1), None),\n\n    (MaxValueValidator(0), 1, ValidationError),\n    (MaxValueValidator(NOW), NOW + timedelta(days=1), ValidationError),\n\n    (MinValueValidator(-10), -10, None),\n    (MinValueValidator(-10), 10, None),\n    (MinValueValidator(-10), 0, None),\n    (MinValueValidator(NOW), NOW, None),\n    (MinValueValidator(NOW), NOW + timedelta(days=1), None),\n\n    (MinValueValidator(0), -1, ValidationError),\n    (MinValueValidator(NOW), NOW - timedelta(days=1), ValidationError),\n\n    (MaxLengthValidator(10), '', None),\n    (MaxLengthValidator(10), 10*'x', None),\n\n    (MaxLengthValidator(10), 15*'x', ValidationError),\n\n    (MinLengthValidator(10), 15*'x', None),\n    (MinLengthValidator(10), 10*'x', None),\n\n    (MinLengthValidator(10), '', ValidationError),\n\n    (URLValidator(), 'http://www.djangoproject.com/', None),\n    (URLValidator(), 'http://localhost/', None),\n    (URLValidator(), 'http://example.com/', None),\n    (URLValidator(), 'http://www.example.com/', None),\n    (URLValidator(), 'http://www.example.com:8000/test', None),\n    (URLValidator(), 'http://valid-with-hyphens.com/', None),\n    (URLValidator(), 'http://subdomain.example.com/', None),\n    (URLValidator(), 'http://200.8.9.10/', None),\n    (URLValidator(), 'http://200.8.9.10:8000/test', None),\n    (URLValidator(), 'http://valid-----hyphens.com/', None),\n    (URLValidator(), 'http://example.com?something=value', None),\n    (URLValidator(), 'http://example.com/index.php?something=value&another=value2', None),\n\n    (URLValidator(), 'foo', ValidationError),\n    (URLValidator(), 'http://', ValidationError),\n    (URLValidator(), 'http://example', ValidationError),\n    (URLValidator(), 'http://example.', ValidationError),\n    (URLValidator(), 'http://.com', ValidationError),\n    (URLValidator(), 'http://invalid-.com', ValidationError),\n    (URLValidator(), 'http://-invalid.com', ValidationError),\n    (URLValidator(), 'http://inv-.alid-.com', ValidationError),\n    (URLValidator(), 'http://inv-.-alid.com', ValidationError),\n\n    (BaseValidator(True), True, None),\n    (BaseValidator(True), False, ValidationError),\n\n    (RegexValidator(), '', None),\n    (RegexValidator(), 'x1x2', None),\n    (RegexValidator('[0-9]+'), 'xxxxxx', ValidationError),\n    (RegexValidator('[0-9]+'), '1234', None),\n    (RegexValidator(re.compile('[0-9]+')), '1234', None),\n    (RegexValidator('.*'), '', None),\n    (RegexValidator(re.compile('.*')), '', None),\n    (RegexValidator('.*'), 'xxxxx', None),\n\n    (RegexValidator('x'), 'y', ValidationError),\n    (RegexValidator(re.compile('x')), 'y', ValidationError),\n)\n\ndef create_simple_test_method(validator, expected, value, num):\n    if expected is not None and issubclass(expected, Exception):\n        test_mask = 'test_%s_raises_error_%d'\n        def test_func(self):\n            # assertRaises not used, so as to be able to produce an error message\n            # containing the tested value\n            try:\n                validator(value)\n            except expected:\n                pass\n            else:\n                self.fail(\"%s not raised when validating '%s'\" % (\n                    expected.__name__, value))\n    else:\n        test_mask = 'test_%s_%d'\n        def test_func(self):\n            try:\n                self.assertEqual(expected, validator(value))\n            except ValidationError as e:\n                self.fail(\"Validation of '%s' failed. Error message was: %s\" % (\n                    value, str(e)))\n    if isinstance(validator, types.FunctionType):\n        val_name = validator.__name__\n    else:\n        val_name = validator.__class__.__name__\n    test_name = test_mask % (val_name, num)\n    return test_name, test_func\n\n# Dynamically assemble a test class with the contents of TEST_DATA\n\nclass TestSimpleValidators(TestCase):\n    def test_single_message(self):\n        v = ValidationError('Not Valid')\n        self.assertEqual(str(v), str_prefix(\"[%(_)s'Not Valid']\"))\n        self.assertEqual(repr(v), str_prefix(\"ValidationError([%(_)s'Not Valid'])\"))\n\n    def test_message_list(self):\n        v = ValidationError(['First Problem', 'Second Problem'])\n        self.assertEqual(str(v), str_prefix(\"[%(_)s'First Problem', %(_)s'Second Problem']\"))\n        self.assertEqual(repr(v), str_prefix(\"ValidationError([%(_)s'First Problem', %(_)s'Second Problem'])\"))\n\n    def test_message_dict(self):\n        v = ValidationError({'first': 'First Problem'})\n        self.assertEqual(str(v), str_prefix(\"{%(_)s'first': %(_)s'First Problem'}\"))\n        self.assertEqual(repr(v), str_prefix(\"ValidationError({%(_)s'first': %(_)s'First Problem'})\"))\n\ntest_counter = 0\nfor validator, value, expected in TEST_DATA:\n    name, method = create_simple_test_method(validator, expected, value, test_counter)\n    setattr(TestSimpleValidators, name, method)\n    test_counter += 1\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_changelist/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_changelist/admin.py",
    "content": "from __future__ import absolute_import\n\nfrom django.contrib import admin\nfrom django.core.paginator import Paginator\n\nfrom .models import (Event, Child, Parent, Genre, Band, Musician, Group,\n    Quartet, Membership, ChordsMusician, ChordsBand, Invitation, Swallow)\n\n\nsite = admin.AdminSite(name=\"admin\")\n\nclass CustomPaginator(Paginator):\n    def __init__(self, queryset, page_size, orphans=0, allow_empty_first_page=True):\n        super(CustomPaginator, self).__init__(queryset, 5, orphans=2,\n            allow_empty_first_page=allow_empty_first_page)\n\n\nclass EventAdmin(admin.ModelAdmin):\n    list_display = ['event_date_func']\n\n    def event_date_func(self, event):\n        return event.date\n\nsite.register(Event, EventAdmin)\n\n\nclass ParentAdmin(admin.ModelAdmin):\n    list_filter = ['child__name']\n    search_fields = ['child__name']\n\n\nclass ChildAdmin(admin.ModelAdmin):\n    list_display = ['name', 'parent']\n    list_per_page = 10\n    list_filter = ['parent', 'age']\n\n    def queryset(self, request):\n        return super(ChildAdmin, self).queryset(request).select_related(\"parent__name\")\n\n\nclass CustomPaginationAdmin(ChildAdmin):\n    paginator = CustomPaginator\n\n\nclass FilteredChildAdmin(admin.ModelAdmin):\n    list_display = ['name', 'parent']\n    list_per_page = 10\n\n    def queryset(self, request):\n        return super(FilteredChildAdmin, self).queryset(request).filter(\n            name__contains='filtered')\n\n\nclass BandAdmin(admin.ModelAdmin):\n    list_filter = ['genres']\n\n\nclass GroupAdmin(admin.ModelAdmin):\n    list_filter = ['members']\n\n\nclass QuartetAdmin(admin.ModelAdmin):\n    list_filter = ['members']\n\n\nclass ChordsBandAdmin(admin.ModelAdmin):\n    list_filter = ['members']\n\n\nclass DynamicListDisplayChildAdmin(admin.ModelAdmin):\n    list_display = ('parent', 'name', 'age')\n\n    def get_list_display(self, request):\n        my_list_display = super(DynamicListDisplayChildAdmin, self).get_list_display(request)\n        if request.user.username == 'noparents':\n            my_list_display = list(my_list_display)\n            my_list_display.remove('parent')\n        return my_list_display\n\nclass DynamicListDisplayLinksChildAdmin(admin.ModelAdmin):\n    list_display = ('parent', 'name', 'age')\n    list_display_links = ['parent', 'name']\n\n    def get_list_display_links(self, request, list_display):\n        return ['age']\n\nsite.register(Child, DynamicListDisplayChildAdmin)\n\nclass SwallowAdmin(admin.ModelAdmin):\n    actions = None # prevent ['action_checkbox'] + list(list_display)\n    list_display = ('origin', 'load', 'speed')\n\nsite.register(Swallow, SwallowAdmin)\n\nclass DynamicListFilterChildAdmin(admin.ModelAdmin):\n    list_filter = ('parent', 'name', 'age')\n\n    def get_list_filter(self, request):\n        my_list_filter = super(DynamicListFilterChildAdmin, self).get_list_filter(request)\n        if request.user.username == 'noparents':\n            my_list_filter = list(my_list_filter)\n            my_list_filter.remove('parent')\n        return my_list_filter\n\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_changelist/models.py",
    "content": "from django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\nclass Event(models.Model):\n    # Oracle can have problems with a column named \"date\"\n    date = models.DateField(db_column=\"event_date\")\n\nclass Parent(models.Model):\n    name = models.CharField(max_length=128)\n\nclass Child(models.Model):\n    parent = models.ForeignKey(Parent, editable=False, null=True)\n    name = models.CharField(max_length=30, blank=True)\n    age = models.IntegerField(null=True, blank=True)\n\nclass Genre(models.Model):\n    name = models.CharField(max_length=20)\n\nclass Band(models.Model):\n    name = models.CharField(max_length=20)\n    nr_of_members = models.PositiveIntegerField()\n    genres = models.ManyToManyField(Genre)\n\n@python_2_unicode_compatible\nclass Musician(models.Model):\n    name = models.CharField(max_length=30)\n\n    def __str__(self):\n        return self.name\n\n@python_2_unicode_compatible\nclass Group(models.Model):\n    name = models.CharField(max_length=30)\n    members = models.ManyToManyField(Musician, through='Membership')\n\n    def __str__(self):\n        return self.name\n\nclass Membership(models.Model):\n    music = models.ForeignKey(Musician)\n    group = models.ForeignKey(Group)\n    role = models.CharField(max_length=15)\n\nclass Quartet(Group):\n    pass\n\nclass ChordsMusician(Musician):\n    pass\n\nclass ChordsBand(models.Model):\n    name = models.CharField(max_length=30)\n    members = models.ManyToManyField(ChordsMusician, through='Invitation')\n\nclass Invitation(models.Model):\n    player = models.ForeignKey(ChordsMusician)\n    band = models.ForeignKey(ChordsBand)\n    instrument = models.CharField(max_length=15)\n\nclass Swallow(models.Model):\n    origin = models.CharField(max_length=255)\n    load = models.FloatField()\n    speed = models.FloatField()\n\n    class Meta:\n        ordering = ('speed', 'load')\n\n\nclass UnorderedObject(models.Model):\n    \"\"\"\n    Model without any defined `Meta.ordering`.\n    Refs #17198.\n    \"\"\"\n    bool = models.BooleanField(default=True)\n\n\nclass OrderedObjectManager(models.Manager):\n    def get_query_set(self):\n        return super(OrderedObjectManager, self).get_query_set().order_by('number')\n\nclass OrderedObject(models.Model):\n    \"\"\"\n    Model with Manager that defines a default order.\n    Refs #17198.\n    \"\"\"\n    name = models.CharField(max_length=255)\n    bool = models.BooleanField(default=True)\n    number = models.IntegerField(default=0, db_column='number_val')\n\n    objects = OrderedObjectManager()\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_changelist/tests.py",
    "content": "from __future__ import absolute_import\n\nimport datetime\n\nfrom django.contrib import admin\nfrom django.contrib.admin.options import IncorrectLookupParameters\nfrom django.contrib.admin.views.main import ChangeList, SEARCH_VAR, ALL_VAR\nfrom django.contrib.auth.models import User\nfrom django.core.urlresolvers import reverse\nfrom django.template import Context, Template\nfrom django.test import TestCase\nfrom django.test.client import RequestFactory\nfrom django.utils import formats\nfrom django.utils import six\n\nfrom .admin import (ChildAdmin, QuartetAdmin, BandAdmin, ChordsBandAdmin,\n    GroupAdmin, ParentAdmin, DynamicListDisplayChildAdmin,\n    DynamicListDisplayLinksChildAdmin, CustomPaginationAdmin,\n    FilteredChildAdmin, CustomPaginator, site as custom_site,\n    SwallowAdmin, DynamicListFilterChildAdmin)\nfrom .models import (Event, Child, Parent, Genre, Band, Musician, Group,\n    Quartet, Membership, ChordsMusician, ChordsBand, Invitation, Swallow,\n    UnorderedObject, OrderedObject)\n\n\nclass ChangeListTests(TestCase):\n    urls = \"regressiontests.admin_changelist.urls\"\n\n    def setUp(self):\n        self.factory = RequestFactory()\n\n    def _create_superuser(self, username):\n        return User.objects.create(username=username, is_superuser=True)\n\n    def _mocked_authenticated_request(self, url, user):\n        request = self.factory.get(url)\n        request.user = user\n        return request\n\n    def test_select_related_preserved(self):\n        \"\"\"\n        Regression test for #10348: ChangeList.get_query_set() shouldn't\n        overwrite a custom select_related provided by ModelAdmin.queryset().\n        \"\"\"\n        m = ChildAdmin(Child, admin.site)\n        request = self.factory.get('/child/')\n        cl = ChangeList(request, Child, m.list_display, m.list_display_links,\n                m.list_filter, m.date_hierarchy, m.search_fields,\n                m.list_select_related, m.list_per_page, m.list_max_show_all, m.list_editable, m)\n        self.assertEqual(cl.query_set.query.select_related, {'parent': {'name': {}}})\n\n    def test_result_list_empty_changelist_value(self):\n        \"\"\"\n        Regression test for #14982: EMPTY_CHANGELIST_VALUE should be honored\n        for relationship fields\n        \"\"\"\n        new_child = Child.objects.create(name='name', parent=None)\n        request = self.factory.get('/child/')\n        m = ChildAdmin(Child, admin.site)\n        list_display = m.get_list_display(request)\n        list_display_links = m.get_list_display_links(request, list_display)\n        cl = ChangeList(request, Child, list_display, list_display_links,\n                m.list_filter, m.date_hierarchy, m.search_fields,\n                m.list_select_related, m.list_per_page, m.list_max_show_all, m.list_editable, m)\n        cl.formset = None\n        template = Template('{% load admin_list %}{% spaceless %}{% result_list cl %}{% endspaceless %}')\n        context = Context({'cl': cl})\n        table_output = template.render(context)\n        link = reverse('admin:admin_changelist_child_change', args=(new_child.id,))\n        row_html = '<tbody><tr class=\"row1\"><th><a href=\"%s\">name</a></th><td class=\"nowrap\">(None)</td></tr></tbody>' % link\n        self.assertFalse(table_output.find(row_html) == -1,\n            'Failed to find expected row element: %s' % table_output)\n\n    def test_result_list_html(self):\n        \"\"\"\n        Verifies that inclusion tag result_list generates a table when with\n        default ModelAdmin settings.\n        \"\"\"\n        new_parent = Parent.objects.create(name='parent')\n        new_child = Child.objects.create(name='name', parent=new_parent)\n        request = self.factory.get('/child/')\n        m = ChildAdmin(Child, admin.site)\n        list_display = m.get_list_display(request)\n        list_display_links = m.get_list_display_links(request, list_display)\n        cl = ChangeList(request, Child, list_display, list_display_links,\n                m.list_filter, m.date_hierarchy, m.search_fields,\n                m.list_select_related, m.list_per_page, m.list_max_show_all, m.list_editable, m)\n        cl.formset = None\n        template = Template('{% load admin_list %}{% spaceless %}{% result_list cl %}{% endspaceless %}')\n        context = Context({'cl': cl})\n        table_output = template.render(context)\n        link = reverse('admin:admin_changelist_child_change', args=(new_child.id,))\n        row_html = '<tbody><tr class=\"row1\"><th><a href=\"%s\">name</a></th><td class=\"nowrap\">Parent object</td></tr></tbody>' % link\n        self.assertFalse(table_output.find(row_html) == -1,\n            'Failed to find expected row element: %s' % table_output)\n\n    def test_result_list_editable_html(self):\n        \"\"\"\n        Regression tests for #11791: Inclusion tag result_list generates a\n        table and this checks that the items are nested within the table\n        element tags.\n        Also a regression test for #13599, verifies that hidden fields\n        when list_editable is enabled are rendered in a div outside the\n        table.\n        \"\"\"\n        new_parent = Parent.objects.create(name='parent')\n        new_child = Child.objects.create(name='name', parent=new_parent)\n        request = self.factory.get('/child/')\n        m = ChildAdmin(Child, admin.site)\n\n        # Test with list_editable fields\n        m.list_display = ['id', 'name', 'parent']\n        m.list_display_links = ['id']\n        m.list_editable = ['name']\n        cl = ChangeList(request, Child, m.list_display, m.list_display_links,\n                m.list_filter, m.date_hierarchy, m.search_fields,\n                m.list_select_related, m.list_per_page, m.list_max_show_all, m.list_editable, m)\n        FormSet = m.get_changelist_formset(request)\n        cl.formset = FormSet(queryset=cl.result_list)\n        template = Template('{% load admin_list %}{% spaceless %}{% result_list cl %}{% endspaceless %}')\n        context = Context({'cl': cl})\n        table_output = template.render(context)\n        # make sure that hidden fields are in the correct place\n        hiddenfields_div = '<div class=\"hiddenfields\"><input type=\"hidden\" name=\"form-0-id\" value=\"%d\" id=\"id_form-0-id\" /></div>' % new_child.id\n        self.assertInHTML(hiddenfields_div, table_output, msg_prefix='Failed to find hidden fields')\n\n        # make sure that list editable fields are rendered in divs correctly\n        editable_name_field = '<input name=\"form-0-name\" value=\"name\" class=\"vTextField\" maxlength=\"30\" type=\"text\" id=\"id_form-0-name\" />'\n        self.assertInHTML('<td>%s</td>' % editable_name_field, table_output, msg_prefix='Failed to find \"name\" list_editable field')\n\n    def test_result_list_editable(self):\n        \"\"\"\n        Regression test for #14312: list_editable with pagination\n        \"\"\"\n\n        new_parent = Parent.objects.create(name='parent')\n        for i in range(200):\n            new_child = Child.objects.create(name='name %s' % i, parent=new_parent)\n        request = self.factory.get('/child/', data={'p': -1})  # Anything outside range\n        m = ChildAdmin(Child, admin.site)\n\n        # Test with list_editable fields\n        m.list_display = ['id', 'name', 'parent']\n        m.list_display_links = ['id']\n        m.list_editable = ['name']\n        self.assertRaises(IncorrectLookupParameters, lambda: \\\n            ChangeList(request, Child, m.list_display, m.list_display_links,\n                    m.list_filter, m.date_hierarchy, m.search_fields,\n                    m.list_select_related, m.list_per_page, m.list_max_show_all, m.list_editable, m))\n\n    def test_custom_paginator(self):\n        new_parent = Parent.objects.create(name='parent')\n        for i in range(200):\n            new_child = Child.objects.create(name='name %s' % i, parent=new_parent)\n\n        request = self.factory.get('/child/')\n        m = CustomPaginationAdmin(Child, admin.site)\n\n        cl = ChangeList(request, Child, m.list_display, m.list_display_links,\n                m.list_filter, m.date_hierarchy, m.search_fields,\n                m.list_select_related, m.list_per_page, m.list_max_show_all, m.list_editable, m)\n\n        cl.get_results(request)\n        self.assertIsInstance(cl.paginator, CustomPaginator)\n\n    def test_distinct_for_m2m_in_list_filter(self):\n        \"\"\"\n        Regression test for #13902: When using a ManyToMany in list_filter,\n        results shouldn't apper more than once. Basic ManyToMany.\n        \"\"\"\n        blues = Genre.objects.create(name='Blues')\n        band = Band.objects.create(name='B.B. King Review', nr_of_members=11)\n\n        band.genres.add(blues)\n        band.genres.add(blues)\n\n        m = BandAdmin(Band, admin.site)\n        request = self.factory.get('/band/', data={'genres': blues.pk})\n\n        cl = ChangeList(request, Band, m.list_display,\n                m.list_display_links, m.list_filter, m.date_hierarchy,\n                m.search_fields, m.list_select_related, m.list_per_page,\n                m.list_max_show_all, m.list_editable, m)\n\n        cl.get_results(request)\n\n        # There's only one Group instance\n        self.assertEqual(cl.result_count, 1)\n\n    def test_distinct_for_through_m2m_in_list_filter(self):\n        \"\"\"\n        Regression test for #13902: When using a ManyToMany in list_filter,\n        results shouldn't apper more than once. With an intermediate model.\n        \"\"\"\n        lead = Musician.objects.create(name='Vox')\n        band = Group.objects.create(name='The Hype')\n        Membership.objects.create(group=band, music=lead, role='lead voice')\n        Membership.objects.create(group=band, music=lead, role='bass player')\n\n        m = GroupAdmin(Group, admin.site)\n        request = self.factory.get('/group/', data={'members': lead.pk})\n\n        cl = ChangeList(request, Group, m.list_display,\n                m.list_display_links, m.list_filter, m.date_hierarchy,\n                m.search_fields, m.list_select_related, m.list_per_page,\n                m.list_max_show_all, m.list_editable, m)\n\n        cl.get_results(request)\n\n        # There's only one Group instance\n        self.assertEqual(cl.result_count, 1)\n\n    def test_distinct_for_inherited_m2m_in_list_filter(self):\n        \"\"\"\n        Regression test for #13902: When using a ManyToMany in list_filter,\n        results shouldn't apper more than once. Model managed in the\n        admin inherits from the one that defins the relationship.\n        \"\"\"\n        lead = Musician.objects.create(name='John')\n        four = Quartet.objects.create(name='The Beatles')\n        Membership.objects.create(group=four, music=lead, role='lead voice')\n        Membership.objects.create(group=four, music=lead, role='guitar player')\n\n        m = QuartetAdmin(Quartet, admin.site)\n        request = self.factory.get('/quartet/', data={'members': lead.pk})\n\n        cl = ChangeList(request, Quartet, m.list_display,\n                m.list_display_links, m.list_filter, m.date_hierarchy,\n                m.search_fields, m.list_select_related, m.list_per_page,\n                m.list_max_show_all, m.list_editable, m)\n\n        cl.get_results(request)\n\n        # There's only one Quartet instance\n        self.assertEqual(cl.result_count, 1)\n\n    def test_distinct_for_m2m_to_inherited_in_list_filter(self):\n        \"\"\"\n        Regression test for #13902: When using a ManyToMany in list_filter,\n        results shouldn't apper more than once. Target of the relationship\n        inherits from another.\n        \"\"\"\n        lead = ChordsMusician.objects.create(name='Player A')\n        three = ChordsBand.objects.create(name='The Chords Trio')\n        Invitation.objects.create(band=three, player=lead, instrument='guitar')\n        Invitation.objects.create(band=three, player=lead, instrument='bass')\n\n        m = ChordsBandAdmin(ChordsBand, admin.site)\n        request = self.factory.get('/chordsband/', data={'members': lead.pk})\n\n        cl = ChangeList(request, ChordsBand, m.list_display,\n                m.list_display_links, m.list_filter, m.date_hierarchy,\n                m.search_fields, m.list_select_related, m.list_per_page,\n                m.list_max_show_all, m.list_editable, m)\n\n        cl.get_results(request)\n\n        # There's only one ChordsBand instance\n        self.assertEqual(cl.result_count, 1)\n\n    def test_distinct_for_non_unique_related_object_in_list_filter(self):\n        \"\"\"\n        Regressions tests for #15819: If a field listed in list_filters\n        is a non-unique related object, distinct() must be called.\n        \"\"\"\n        parent = Parent.objects.create(name='Mary')\n        # Two children with the same name\n        Child.objects.create(parent=parent, name='Daniel')\n        Child.objects.create(parent=parent, name='Daniel')\n\n        m = ParentAdmin(Parent, admin.site)\n        request = self.factory.get('/parent/', data={'child__name': 'Daniel'})\n\n        cl = ChangeList(request, Parent, m.list_display, m.list_display_links,\n                        m.list_filter, m.date_hierarchy, m.search_fields,\n                        m.list_select_related, m.list_per_page,\n                        m.list_max_show_all, m.list_editable, m)\n\n        # Make sure distinct() was called\n        self.assertEqual(cl.query_set.count(), 1)\n\n    def test_distinct_for_non_unique_related_object_in_search_fields(self):\n        \"\"\"\n        Regressions tests for #15819: If a field listed in search_fields\n        is a non-unique related object, distinct() must be called.\n        \"\"\"\n        parent = Parent.objects.create(name='Mary')\n        Child.objects.create(parent=parent, name='Danielle')\n        Child.objects.create(parent=parent, name='Daniel')\n\n        m = ParentAdmin(Parent, admin.site)\n        request = self.factory.get('/parent/', data={SEARCH_VAR: 'daniel'})\n\n        cl = ChangeList(request, Parent, m.list_display, m.list_display_links,\n                        m.list_filter, m.date_hierarchy, m.search_fields,\n                        m.list_select_related, m.list_per_page,\n                        m.list_max_show_all, m.list_editable, m)\n\n        # Make sure distinct() was called\n        self.assertEqual(cl.query_set.count(), 1)\n\n    def test_pagination(self):\n        \"\"\"\n        Regression tests for #12893: Pagination in admins changelist doesn't\n        use queryset set by modeladmin.\n        \"\"\"\n        parent = Parent.objects.create(name='anything')\n        for i in range(30):\n            Child.objects.create(name='name %s' % i, parent=parent)\n            Child.objects.create(name='filtered %s' % i, parent=parent)\n\n        request = self.factory.get('/child/')\n\n        # Test default queryset\n        m = ChildAdmin(Child, admin.site)\n        cl = ChangeList(request, Child, m.list_display, m.list_display_links,\n                m.list_filter, m.date_hierarchy, m.search_fields,\n                m.list_select_related, m.list_per_page, m.list_max_show_all,\n                m.list_editable, m)\n        self.assertEqual(cl.query_set.count(), 60)\n        self.assertEqual(cl.paginator.count, 60)\n        self.assertEqual(list(cl.paginator.page_range), [1, 2, 3, 4, 5, 6])\n\n        # Test custom queryset\n        m = FilteredChildAdmin(Child, admin.site)\n        cl = ChangeList(request, Child, m.list_display, m.list_display_links,\n                m.list_filter, m.date_hierarchy, m.search_fields,\n                m.list_select_related, m.list_per_page, m.list_max_show_all,\n                m.list_editable, m)\n        self.assertEqual(cl.query_set.count(), 30)\n        self.assertEqual(cl.paginator.count, 30)\n        self.assertEqual(list(cl.paginator.page_range), [1, 2, 3])\n\n    def test_computed_list_display_localization(self):\n        \"\"\"\n        Regression test for #13196: output of functions should be  localized\n        in the changelist.\n        \"\"\"\n        User.objects.create_superuser(\n            username='super', email='super@localhost', password='secret')\n        self.client.login(username='super', password='secret')\n        event = Event.objects.create(date=datetime.date.today())\n        response = self.client.get('/admin/admin_changelist/event/')\n        self.assertContains(response, formats.localize(event.date))\n        self.assertNotContains(response, six.text_type(event.date))\n\n    def test_dynamic_list_display(self):\n        \"\"\"\n        Regression tests for #14206: dynamic list_display support.\n        \"\"\"\n        parent = Parent.objects.create(name='parent')\n        for i in range(10):\n            Child.objects.create(name='child %s' % i, parent=parent)\n\n        user_noparents = self._create_superuser('noparents')\n        user_parents = self._create_superuser('parents')\n\n        # Test with user 'noparents'\n        m = custom_site._registry[Child]\n        request = self._mocked_authenticated_request('/child/', user_noparents)\n        response = m.changelist_view(request)\n        self.assertNotContains(response, 'Parent object')\n\n        list_display = m.get_list_display(request)\n        list_display_links = m.get_list_display_links(request, list_display)\n        self.assertEqual(list_display, ['name', 'age'])\n        self.assertEqual(list_display_links, ['name'])\n\n        # Test with user 'parents'\n        m = DynamicListDisplayChildAdmin(Child, admin.site)\n        request = self._mocked_authenticated_request('/child/', user_parents)\n        response = m.changelist_view(request)\n        self.assertContains(response, 'Parent object')\n\n        custom_site.unregister(Child)\n\n        list_display = m.get_list_display(request)\n        list_display_links = m.get_list_display_links(request, list_display)\n        self.assertEqual(list_display, ('parent', 'name', 'age'))\n        self.assertEqual(list_display_links, ['parent'])\n\n        # Test default implementation\n        custom_site.register(Child, ChildAdmin)\n        m = custom_site._registry[Child]\n        request = self._mocked_authenticated_request('/child/', user_noparents)\n        response = m.changelist_view(request)\n        self.assertContains(response, 'Parent object')\n\n    def test_show_all(self):\n        parent = Parent.objects.create(name='anything')\n        for i in range(30):\n            Child.objects.create(name='name %s' % i, parent=parent)\n            Child.objects.create(name='filtered %s' % i, parent=parent)\n\n        # Add \"show all\" parameter to request\n        request = self.factory.get('/child/', data={ALL_VAR: ''})\n\n        # Test valid \"show all\" request (number of total objects is under max)\n        m = ChildAdmin(Child, admin.site)\n        # 200 is the max we'll pass to ChangeList\n        cl = ChangeList(request, Child, m.list_display, m.list_display_links,\n                m.list_filter, m.date_hierarchy, m.search_fields,\n                m.list_select_related, m.list_per_page, 200, m.list_editable, m)\n        cl.get_results(request)\n        self.assertEqual(len(cl.result_list), 60)\n\n        # Test invalid \"show all\" request (number of total objects over max)\n        # falls back to paginated pages\n        m = ChildAdmin(Child, admin.site)\n        # 30 is the max we'll pass to ChangeList for this test\n        cl = ChangeList(request, Child, m.list_display, m.list_display_links,\n                m.list_filter, m.date_hierarchy, m.search_fields,\n                m.list_select_related, m.list_per_page, 30, m.list_editable, m)\n        cl.get_results(request)\n        self.assertEqual(len(cl.result_list), 10)\n\n    def test_dynamic_list_display_links(self):\n        \"\"\"\n        Regression tests for #16257: dynamic list_display_links support.\n        \"\"\"\n        parent = Parent.objects.create(name='parent')\n        for i in range(1, 10):\n            Child.objects.create(id=i, name='child %s' % i, parent=parent, age=i)\n\n        m = DynamicListDisplayLinksChildAdmin(Child, admin.site)\n        superuser = self._create_superuser('superuser')\n        request = self._mocked_authenticated_request('/child/', superuser)\n        response = m.changelist_view(request)\n        for i in range(1, 10):\n            link = reverse('admin:admin_changelist_child_change', args=(i,))\n            self.assertContains(response, '<a href=\"%s\">%s</a>' % (link, i))\n\n        list_display = m.get_list_display(request)\n        list_display_links = m.get_list_display_links(request, list_display)\n        self.assertEqual(list_display, ('parent', 'name', 'age'))\n        self.assertEqual(list_display_links, ['age'])\n\n    def test_tuple_list_display(self):\n        \"\"\"\n        Regression test for #17128\n        (ChangeList failing under Python 2.5 after r16319)\n        \"\"\"\n        swallow = Swallow.objects.create(\n            origin='Africa', load='12.34', speed='22.2')\n        model_admin = SwallowAdmin(Swallow, admin.site)\n        superuser = self._create_superuser('superuser')\n        request = self._mocked_authenticated_request('/swallow/', superuser)\n        response = model_admin.changelist_view(request)\n        # just want to ensure it doesn't blow up during rendering\n        self.assertContains(response, six.text_type(swallow.origin))\n        self.assertContains(response, six.text_type(swallow.load))\n        self.assertContains(response, six.text_type(swallow.speed))\n\n    def test_deterministic_order_for_unordered_model(self):\n        \"\"\"\n        Ensure that the primary key is systematically used in the ordering of\n        the changelist's results to guarantee a deterministic order, even\n        when the Model doesn't have any default ordering defined.\n        Refs #17198.\n        \"\"\"\n        superuser = self._create_superuser('superuser')\n\n        for counter in range(1, 51):\n            UnorderedObject.objects.create(id=counter, bool=True)\n\n        class UnorderedObjectAdmin(admin.ModelAdmin):\n            list_per_page = 10\n\n        def check_results_order(ascending=False):\n            admin.site.register(UnorderedObject, UnorderedObjectAdmin)\n            model_admin = UnorderedObjectAdmin(UnorderedObject, admin.site)\n            counter = 0 if ascending else 51\n            for page in range (0, 5):\n                request = self._mocked_authenticated_request('/unorderedobject/?p=%s' % page, superuser)\n                response = model_admin.changelist_view(request)\n                for result in response.context_data['cl'].result_list:\n                    counter += 1 if ascending else -1\n                    self.assertEqual(result.id, counter)\n            admin.site.unregister(UnorderedObject)\n\n        # When no order is defined at all, everything is ordered by '-pk'.\n        check_results_order()\n\n        # When an order field is defined but multiple records have the same\n        # value for that field, make sure everything gets ordered by -pk as well.\n        UnorderedObjectAdmin.ordering = ['bool']\n        check_results_order()\n\n        # When order fields are defined, including the pk itself, use them.\n        UnorderedObjectAdmin.ordering = ['bool', '-pk']\n        check_results_order()\n        UnorderedObjectAdmin.ordering = ['bool', 'pk']\n        check_results_order(ascending=True)\n        UnorderedObjectAdmin.ordering = ['-id', 'bool']\n        check_results_order()\n        UnorderedObjectAdmin.ordering = ['id', 'bool']\n        check_results_order(ascending=True)\n\n    def test_deterministic_order_for_model_ordered_by_its_manager(self):\n        \"\"\"\n        Ensure that the primary key is systematically used in the ordering of\n        the changelist's results to guarantee a deterministic order, even\n        when the Model has a manager that defines a default ordering.\n        Refs #17198.\n        \"\"\"\n        superuser = self._create_superuser('superuser')\n\n        for counter in range(1, 51):\n            OrderedObject.objects.create(id=counter, bool=True, number=counter)\n\n        class OrderedObjectAdmin(admin.ModelAdmin):\n            list_per_page = 10\n\n        def check_results_order(ascending=False):\n            admin.site.register(OrderedObject, OrderedObjectAdmin)\n            model_admin = OrderedObjectAdmin(OrderedObject, admin.site)\n            counter = 0 if ascending else 51\n            for page in range (0, 5):\n                request = self._mocked_authenticated_request('/orderedobject/?p=%s' % page, superuser)\n                response = model_admin.changelist_view(request)\n                for result in response.context_data['cl'].result_list:\n                    counter += 1 if ascending else -1\n                    self.assertEqual(result.id, counter)\n            admin.site.unregister(OrderedObject)\n\n        # When no order is defined at all, use the model's default ordering (i.e. 'number')\n        check_results_order(ascending=True)\n\n        # When an order field is defined but multiple records have the same\n        # value for that field, make sure everything gets ordered by -pk as well.\n        OrderedObjectAdmin.ordering = ['bool']\n        check_results_order()\n\n        # When order fields are defined, including the pk itself, use them.\n        OrderedObjectAdmin.ordering = ['bool', '-pk']\n        check_results_order()\n        OrderedObjectAdmin.ordering = ['bool', 'pk']\n        check_results_order(ascending=True)\n        OrderedObjectAdmin.ordering = ['-id', 'bool']\n        check_results_order()\n        OrderedObjectAdmin.ordering = ['id', 'bool']\n        check_results_order(ascending=True)\n\n    def test_dynamic_list_filter(self):\n        \"\"\"\n        Regression tests for ticket #17646: dynamic list_filter support.\n        \"\"\"\n        parent = Parent.objects.create(name='parent')\n        for i in range(10):\n            Child.objects.create(name='child %s' % i, parent=parent)\n\n        user_noparents = self._create_superuser('noparents')\n        user_parents = self._create_superuser('parents')\n\n        # Test with user 'noparents'\n        m =  DynamicListFilterChildAdmin(Child, admin.site)\n        request = self._mocked_authenticated_request('/child/', user_noparents)\n        response = m.changelist_view(request)\n        self.assertEqual(response.context_data['cl'].list_filter, ['name', 'age'])\n\n        # Test with user 'parents'\n        m = DynamicListFilterChildAdmin(Child, admin.site)\n        request = self._mocked_authenticated_request('/child/', user_parents)\n        response = m.changelist_view(request)\n        self.assertEqual(response.context_data['cl'].list_filter, ('parent', 'name', 'age'))\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_changelist/urls.py",
    "content": "from django.conf.urls import patterns, include\n\nfrom . import admin\n\n\nurlpatterns = patterns('',\n    (r'^admin/', include(admin.site.urls)),\n)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_custom_urls/__init__.py",
    "content": "#\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_custom_urls/fixtures/actions.json",
    "content": "[\n  {\n    \"pk\": \"delete\", \n    \"model\": \"admin_custom_urls.action\", \n    \"fields\": {\n      \"description\": \"Remove things.\"\n    }\n  }, \n  {\n    \"pk\": \"rename\", \n    \"model\": \"admin_custom_urls.action\", \n    \"fields\": {\n      \"description\": \"Gives things other names.\"\n    }\n  }, \n  {\n    \"pk\": \"add\", \n    \"model\": \"admin_custom_urls.action\", \n    \"fields\": {\n      \"description\": \"Add things.\"\n    }\n  }, \n  {\n    \"pk\": \"path/to/file/\", \n    \"model\": \"admin_custom_urls.action\", \n    \"fields\": {\n      \"description\": \"An action with '/' in its name.\"\n    }\n  }, \n  {\n    \"pk\": \"path/to/html/document.html\", \n    \"model\": \"admin_custom_urls.action\", \n    \"fields\": {\n      \"description\": \"An action with a name similar to a HTML doc path.\"\n    }\n  }, \n  {\n    \"pk\": \"javascript:alert('Hello world');\\\">Click here</a>\", \n    \"model\": \"admin_custom_urls.action\", \n    \"fields\": {\n      \"description\": \"An action with a name suspected of being a XSS attempt\"\n    }\n  }\n]\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_custom_urls/fixtures/users.json",
    "content": "[\n  {\n    \"pk\": 100,\n    \"model\": \"auth.user\",\n    \"fields\": {\n      \"username\": \"super\",\n      \"first_name\": \"Super\",\n      \"last_name\": \"User\",\n      \"is_active\": true,\n      \"is_superuser\": true,\n      \"is_staff\": true,\n      \"last_login\": \"2007-05-30 13:20:10\",\n      \"groups\": [],\n      \"user_permissions\": [],\n      \"password\": \"sha1$995a3$6011485ea3834267d719b4c801409b8b1ddd0158\",\n      \"email\": \"super@example.com\",\n      \"date_joined\": \"2007-05-30 13:20:10\"\n    }\n  }\n]\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_custom_urls/models.py",
    "content": "from functools import update_wrapper\n\nfrom django.contrib import admin\nfrom django.core.urlresolvers import reverse\nfrom django.db import models\nfrom django.http import HttpResponseRedirect\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n@python_2_unicode_compatible\nclass Action(models.Model):\n    name = models.CharField(max_length=50, primary_key=True)\n    description = models.CharField(max_length=70)\n\n    def __str__(self):\n        return self.name\n\n\nclass ActionAdmin(admin.ModelAdmin):\n    \"\"\"\n    A ModelAdmin for the Action model that changes the URL of the add_view\n    to '<app name>/<model name>/!add/'\n    The Action model has a CharField PK.\n    \"\"\"\n\n    list_display = ('name', 'description')\n\n    def remove_url(self, name):\n        \"\"\"\n        Remove all entries named 'name' from the ModelAdmin instance URL\n        patterns list\n        \"\"\"\n        return [url for url in super(ActionAdmin, self).get_urls() if url.name != name]\n\n    def get_urls(self):\n        # Add the URL of our custom 'add_view' view to the front of the URLs\n        # list.  Remove the existing one(s) first\n        from django.conf.urls import patterns, url\n\n        def wrap(view):\n            def wrapper(*args, **kwargs):\n                return self.admin_site.admin_view(view)(*args, **kwargs)\n            return update_wrapper(wrapper, view)\n\n        info = self.model._meta.app_label, self.model._meta.module_name\n\n        view_name = '%s_%s_add' % info\n\n        return patterns('',\n            url(r'^!add/$', wrap(self.add_view), name=view_name),\n        ) + self.remove_url(view_name)\n\n\nclass Person(models.Model):\n    name = models.CharField(max_length=20)\n\nclass PersonAdmin(admin.ModelAdmin):\n\n    def response_post_save_add(self, request, obj):\n        return HttpResponseRedirect(\n            reverse('admin:admin_custom_urls_person_history', args=[obj.pk]))\n\n    def response_post_save_change(self, request, obj):\n        return HttpResponseRedirect(\n            reverse('admin:admin_custom_urls_person_delete', args=[obj.pk]))\n\n\nclass Car(models.Model):\n    name = models.CharField(max_length=20)\n\nclass CarAdmin(admin.ModelAdmin):\n\n    def response_add(self, request, obj, post_url_continue=None):\n        return super(CarAdmin, self).response_add(\n            request, obj, post_url_continue=reverse('admin:admin_custom_urls_car_history', args=[obj.pk]))\n\n\nclass CarDeprecated(models.Model):\n    \"\"\" This class must be removed in Django 1.6 \"\"\"\n    name = models.CharField(max_length=20)\n\nclass CarDeprecatedAdmin(admin.ModelAdmin):\n    \"\"\" This class must be removed in Django 1.6 \"\"\"\n    def response_add(self, request, obj, post_url_continue=None):\n        return super(CarDeprecatedAdmin, self).response_add(\n            request, obj, post_url_continue='../%s/history/')\n\n\nadmin.site.register(Action, ActionAdmin)\nadmin.site.register(Person, PersonAdmin)\nadmin.site.register(Car, CarAdmin)\nadmin.site.register(CarDeprecated, CarDeprecatedAdmin)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_custom_urls/tests.py",
    "content": "from __future__ import absolute_import, unicode_literals\nimport warnings\n\nfrom django.contrib.admin.util import quote\nfrom django.core.urlresolvers import reverse\nfrom django.template.response import TemplateResponse\nfrom django.test import TestCase\nfrom django.test.utils import override_settings\n\nfrom .models import Action, Person, Car, CarDeprecated\n\n\n@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))\nclass AdminCustomUrlsTest(TestCase):\n    \"\"\"\n    Remember that:\n    * The Action model has a CharField PK.\n    * The ModelAdmin for Action customizes the add_view URL, it's\n      '<app name>/<model name>/!add/'\n    \"\"\"\n    fixtures = ['users.json', 'actions.json']\n\n    def setUp(self):\n        self.client.login(username='super', password='secret')\n\n    def tearDown(self):\n        self.client.logout()\n\n    def testBasicAddGet(self):\n        \"\"\"\n        Ensure GET on the add_view works.\n        \"\"\"\n        response = self.client.get('/custom_urls/admin/admin_custom_urls/action/!add/')\n        self.assertIsInstance(response, TemplateResponse)\n        self.assertEqual(response.status_code, 200)\n\n    def testAddWithGETArgs(self):\n        \"\"\"\n        Ensure GET on the add_view plus specifying a field value in the query\n        string works.\n        \"\"\"\n        response = self.client.get('/custom_urls/admin/admin_custom_urls/action/!add/', {'name': 'My Action'})\n        self.assertEqual(response.status_code, 200)\n        self.assertContains(response, 'value=\"My Action\"')\n\n    def testBasicAddPost(self):\n        \"\"\"\n        Ensure POST on add_view works.\n        \"\"\"\n        post_data = {\n            '_popup': '1',\n            \"name\": 'Action added through a popup',\n            \"description\": \"Description of added action\",\n        }\n        response = self.client.post('/custom_urls/admin/admin_custom_urls/action/!add/', post_data)\n        self.assertEqual(response.status_code, 200)\n        self.assertContains(response, 'dismissAddAnotherPopup')\n        self.assertContains(response, 'Action added through a popup')\n\n    def testAdminUrlsNoClash(self):\n        \"\"\"\n        Test that some admin URLs work correctly.\n        \"\"\"\n        # Should get the change_view for model instance with PK 'add', not show\n        # the add_view\n        response = self.client.get('/custom_urls/admin/admin_custom_urls/action/add/')\n        self.assertEqual(response.status_code, 200)\n        self.assertContains(response, 'Change action')\n\n        # Ditto, but use reverse() to build the URL\n        url = reverse('admin:%s_action_change' % Action._meta.app_label,\n                args=(quote('add'),))\n        response = self.client.get(url)\n        self.assertEqual(response.status_code, 200)\n        self.assertContains(response, 'Change action')\n\n        # Should correctly get the change_view for the model instance with the\n        # funny-looking PK (the one wth a 'path/to/html/document.html' value)\n        url = reverse('admin:%s_action_change' % Action._meta.app_label,\n                args=(quote(\"path/to/html/document.html\"),))\n        response = self.client.get(url)\n        self.assertEqual(response.status_code, 200)\n        self.assertContains(response, 'Change action')\n        self.assertContains(response, 'value=\"path/to/html/document.html\"')\n\n\n@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))\nclass CustomRedirects(TestCase):\n    fixtures = ['users.json', 'actions.json']\n\n    def setUp(self):\n        self.client.login(username='super', password='secret')\n\n    def tearDown(self):\n        self.client.logout()\n\n    def test_post_save_add_redirect(self):\n        \"\"\"\n        Ensures that ModelAdmin.response_post_save_add() controls the\n        redirection after the 'Save' button has been pressed when adding a\n        new object.\n        Refs 8001, 18310, 19505.\n        \"\"\"\n        post_data = { 'name': 'John Doe', }\n        self.assertEqual(Person.objects.count(), 0)\n        response = self.client.post(\n            reverse('admin:admin_custom_urls_person_add'), post_data)\n        persons = Person.objects.all()\n        self.assertEqual(len(persons), 1)\n        self.assertRedirects(\n            response, reverse('admin:admin_custom_urls_person_history', args=[persons[0].pk]))\n\n    def test_post_save_change_redirect(self):\n        \"\"\"\n        Ensures that ModelAdmin.response_post_save_change() controls the\n        redirection after the 'Save' button has been pressed when editing an\n        existing object.\n        Refs 8001, 18310, 19505.\n        \"\"\"\n        Person.objects.create(name='John Doe')\n        self.assertEqual(Person.objects.count(), 1)\n        person = Person.objects.all()[0]\n        post_data = { 'name': 'Jack Doe', }\n        response = self.client.post(\n            reverse('admin:admin_custom_urls_person_change', args=[person.pk]), post_data)\n        self.assertRedirects(\n            response, reverse('admin:admin_custom_urls_person_delete', args=[person.pk]))\n\n    def test_post_url_continue(self):\n        \"\"\"\n        Ensures that the ModelAdmin.response_add()'s parameter `post_url_continue`\n        controls the redirection after an object has been created.\n        \"\"\"\n        post_data = { 'name': 'SuperFast', '_continue': '1' }\n        self.assertEqual(Car.objects.count(), 0)\n        response = self.client.post(\n            reverse('admin:admin_custom_urls_car_add'), post_data)\n        cars = Car.objects.all()\n        self.assertEqual(len(cars), 1)\n        self.assertRedirects(\n            response, reverse('admin:admin_custom_urls_car_history', args=[cars[0].pk]))\n\n    def test_post_url_continue_string_formats(self):\n        \"\"\"\n        Ensures that string formats are accepted for post_url_continue. This\n        is a deprecated functionality that will be removed in Django 1.6 along\n        with this test.\n        \"\"\"\n        with warnings.catch_warnings(record=True) as w:\n            post_data = { 'name': 'SuperFast', '_continue': '1' }\n            self.assertEqual(Car.objects.count(), 0)\n            response = self.client.post(\n                reverse('admin:admin_custom_urls_cardeprecated_add'), post_data)\n            cars = CarDeprecated.objects.all()\n            self.assertEqual(len(cars), 1)\n            self.assertRedirects(\n                response, reverse('admin:admin_custom_urls_cardeprecated_history', args=[cars[0].pk]))\n        self.assertEqual(len(w), 1)\n        self.assertTrue(isinstance(w[0].message, DeprecationWarning))\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_custom_urls/urls.py",
    "content": "from django.conf.urls import patterns, include\nfrom django.contrib import admin\n\n\nurlpatterns = patterns('',\n    (r'^admin/', include(admin.site.urls)),\n)\n\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_filters/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_filters/models.py",
    "content": "from __future__ import unicode_literals\n\nfrom django.contrib.auth.models import User\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n@python_2_unicode_compatible\nclass Book(models.Model):\n    title = models.CharField(max_length=50)\n    year = models.PositiveIntegerField(null=True, blank=True)\n    author = models.ForeignKey(User, verbose_name=\"Verbose Author\", related_name='books_authored', blank=True, null=True)\n    contributors = models.ManyToManyField(User, verbose_name=\"Verbose Contributors\", related_name='books_contributed', blank=True, null=True)\n    is_best_seller = models.NullBooleanField(default=0)\n    date_registered = models.DateField(null=True)\n    no = models.IntegerField(verbose_name='number', blank=True, null=True) # This field is intentionally 2 characters long. See #16080.\n\n    def __str__(self):\n        return self.title\n\n\n@python_2_unicode_compatible\nclass Department(models.Model):\n    code = models.CharField(max_length=4, unique=True)\n    description = models.CharField(max_length=50, blank=True, null=True)\n\n    def __str__(self):\n        return self.description\n\n@python_2_unicode_compatible\nclass Employee(models.Model):\n    department = models.ForeignKey(Department, to_field=\"code\")\n    name = models.CharField(max_length=100)\n\n    def __str__(self):\n        return self.name\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_filters/tests.py",
    "content": "from __future__ import absolute_import, unicode_literals\n\nimport datetime\n\nfrom django.contrib.admin import (site, ModelAdmin, SimpleListFilter,\n    BooleanFieldListFilter)\nfrom django.contrib.admin.views.main import ChangeList\nfrom django.contrib.auth.admin import UserAdmin\nfrom django.contrib.auth.models import User\nfrom django.core.exceptions import ImproperlyConfigured\nfrom django.test import TestCase, RequestFactory\nfrom django.test.utils import override_settings, six\nfrom django.utils.encoding import force_text\n\nfrom .models import Book, Department, Employee\n\n\ndef select_by(dictlist, key, value):\n    return [x for x in dictlist if x[key] == value][0]\n\n\nclass DecadeListFilter(SimpleListFilter):\n\n    def lookups(self, request, model_admin):\n        return (\n            ('the 80s', \"the 1980's\"),\n            ('the 90s', \"the 1990's\"),\n            ('the 00s', \"the 2000's\"),\n            ('other', \"other decades\"),\n        )\n\n    def queryset(self, request, queryset):\n        decade = self.value()\n        if decade == 'the 80s':\n            return queryset.filter(year__gte=1980, year__lte=1989)\n        if decade == 'the 90s':\n            return queryset.filter(year__gte=1990, year__lte=1999)\n        if decade == 'the 00s':\n            return queryset.filter(year__gte=2000, year__lte=2009)\n\nclass DecadeListFilterWithTitleAndParameter(DecadeListFilter):\n    title = 'publication decade'\n    parameter_name = 'publication-decade'\n\nclass DecadeListFilterWithoutTitle(DecadeListFilter):\n    parameter_name = 'publication-decade'\n\nclass DecadeListFilterWithoutParameter(DecadeListFilter):\n    title = 'publication decade'\n\nclass DecadeListFilterWithNoneReturningLookups(DecadeListFilterWithTitleAndParameter):\n\n    def lookups(self, request, model_admin):\n        pass\n\nclass DecadeListFilterWithFailingQueryset(DecadeListFilterWithTitleAndParameter):\n\n    def queryset(self, request, queryset):\n        raise 1/0\n\nclass DecadeListFilterWithQuerysetBasedLookups(DecadeListFilterWithTitleAndParameter):\n\n    def lookups(self, request, model_admin):\n        qs = model_admin.queryset(request)\n        if qs.filter(year__gte=1980, year__lte=1989).exists():\n            yield ('the 80s', \"the 1980's\")\n        if qs.filter(year__gte=1990, year__lte=1999).exists():\n            yield ('the 90s', \"the 1990's\")\n        if qs.filter(year__gte=2000, year__lte=2009).exists():\n            yield ('the 00s', \"the 2000's\")\n\nclass DecadeListFilterParameterEndsWith__In(DecadeListFilter):\n    title = 'publication decade'\n    parameter_name = 'decade__in' # Ends with '__in\"\n\nclass DecadeListFilterParameterEndsWith__Isnull(DecadeListFilter):\n    title = 'publication decade'\n    parameter_name = 'decade__isnull' # Ends with '__isnull\"\n\n\nclass DepartmentListFilterLookupWithNonStringValue(SimpleListFilter):\n    title = 'department'\n    parameter_name = 'department'\n\n    def lookups(self, request, model_admin):\n        return sorted(set([\n            (employee.department.id,  # Intentionally not a string (Refs #19318)\n             employee.department.code)\n            for employee in model_admin.queryset(request).all()\n        ]))\n\n    def queryset(self, request, queryset):\n        if self.value():\n            return queryset.filter(department__id=self.value())\n\nclass CustomUserAdmin(UserAdmin):\n    list_filter = ('books_authored', 'books_contributed')\n\nclass BookAdmin(ModelAdmin):\n    list_filter = ('year', 'author', 'contributors', 'is_best_seller', 'date_registered', 'no')\n    ordering = ('-id',)\n\nclass BookAdminWithTupleBooleanFilter(BookAdmin):\n    list_filter = ('year', 'author', 'contributors', ('is_best_seller', BooleanFieldListFilter), 'date_registered', 'no')\n\nclass DecadeFilterBookAdmin(ModelAdmin):\n    list_filter = ('author', DecadeListFilterWithTitleAndParameter)\n    ordering = ('-id',)\n\nclass DecadeFilterBookAdminWithoutTitle(ModelAdmin):\n    list_filter = (DecadeListFilterWithoutTitle,)\n\nclass DecadeFilterBookAdminWithoutParameter(ModelAdmin):\n    list_filter = (DecadeListFilterWithoutParameter,)\n\nclass DecadeFilterBookAdminWithNoneReturningLookups(ModelAdmin):\n    list_filter = (DecadeListFilterWithNoneReturningLookups,)\n\nclass DecadeFilterBookAdminWithFailingQueryset(ModelAdmin):\n    list_filter = (DecadeListFilterWithFailingQueryset,)\n\nclass DecadeFilterBookAdminWithQuerysetBasedLookups(ModelAdmin):\n    list_filter = (DecadeListFilterWithQuerysetBasedLookups,)\n\nclass DecadeFilterBookAdminParameterEndsWith__In(ModelAdmin):\n    list_filter = (DecadeListFilterParameterEndsWith__In,)\n\nclass DecadeFilterBookAdminParameterEndsWith__Isnull(ModelAdmin):\n    list_filter = (DecadeListFilterParameterEndsWith__Isnull,)\n\nclass EmployeeAdmin(ModelAdmin):\n    list_display = ['name', 'department']\n    list_filter = ['department']\n\n\nclass DepartmentFilterEmployeeAdmin(EmployeeAdmin):\n    list_filter = [DepartmentListFilterLookupWithNonStringValue, ]\n\n\nclass ListFiltersTests(TestCase):\n\n    def setUp(self):\n        self.today = datetime.date.today()\n        self.tomorrow = self.today + datetime.timedelta(days=1)\n        self.one_week_ago = self.today - datetime.timedelta(days=7)\n\n        self.request_factory = RequestFactory()\n\n        # Users\n        self.alfred = User.objects.create_user('alfred', 'alfred@example.com')\n        self.bob = User.objects.create_user('bob', 'bob@example.com')\n        self.lisa = User.objects.create_user('lisa', 'lisa@example.com')\n\n        # Books\n        self.djangonaut_book = Book.objects.create(title='Djangonaut: an art of living', year=2009, author=self.alfred, is_best_seller=True, date_registered=self.today)\n        self.bio_book = Book.objects.create(title='Django: a biography', year=1999, author=self.alfred, is_best_seller=False, no=207)\n        self.django_book = Book.objects.create(title='The Django Book', year=None, author=self.bob, is_best_seller=None, date_registered=self.today, no=103)\n        self.gipsy_book = Book.objects.create(title='Gipsy guitar for dummies', year=2002, is_best_seller=True, date_registered=self.one_week_ago)\n        self.gipsy_book.contributors = [self.bob, self.lisa]\n        self.gipsy_book.save()\n\n        # Departments\n        self.dev = Department.objects.create(code='DEV', description='Development')\n        self.design = Department.objects.create(code='DSN', description='Design')\n\n        # Employees\n        self.john = Employee.objects.create(name='John Blue', department=self.dev)\n        self.jack = Employee.objects.create(name='Jack Red', department=self.design)\n\n    def get_changelist(self, request, model, modeladmin):\n        return ChangeList(request, model, modeladmin.list_display, modeladmin.list_display_links,\n            modeladmin.list_filter, modeladmin.date_hierarchy, modeladmin.search_fields,\n            modeladmin.list_select_related, modeladmin.list_per_page, modeladmin.list_max_show_all, modeladmin.list_editable, modeladmin)\n\n    def test_datefieldlistfilter(self):\n        modeladmin = BookAdmin(Book, site)\n\n        request = self.request_factory.get('/')\n        changelist = self.get_changelist(request, Book, modeladmin)\n\n        request = self.request_factory.get('/', {'date_registered__gte': self.today,\n                                                 'date_registered__lt': self.tomorrow})\n        changelist = self.get_changelist(request, Book, modeladmin)\n\n        # Make sure the correct queryset is returned\n        queryset = changelist.get_query_set(request)\n        self.assertEqual(list(queryset), [self.django_book, self.djangonaut_book])\n\n        # Make sure the correct choice is selected\n        filterspec = changelist.get_filters(request)[0][4]\n        self.assertEqual(force_text(filterspec.title), 'date registered')\n        choice = select_by(filterspec.choices(changelist), \"display\", \"Today\")\n        self.assertEqual(choice['selected'], True)\n        self.assertEqual(choice['query_string'], '?date_registered__gte=%s'\n                                                 '&date_registered__lt=%s'\n                                                % (self.today, self.tomorrow))\n\n        request = self.request_factory.get('/', {'date_registered__gte': self.today.replace(day=1),\n                                                 'date_registered__lt': self.tomorrow})\n        changelist = self.get_changelist(request, Book, modeladmin)\n\n        # Make sure the correct queryset is returned\n        queryset = changelist.get_query_set(request)\n        if (self.today.year, self.today.month) == (self.one_week_ago.year, self.one_week_ago.month):\n            # In case one week ago is in the same month.\n            self.assertEqual(list(queryset), [self.gipsy_book, self.django_book, self.djangonaut_book])\n        else:\n            self.assertEqual(list(queryset), [self.django_book, self.djangonaut_book])\n\n        # Make sure the correct choice is selected\n        filterspec = changelist.get_filters(request)[0][4]\n        self.assertEqual(force_text(filterspec.title), 'date registered')\n        choice = select_by(filterspec.choices(changelist), \"display\", \"This month\")\n        self.assertEqual(choice['selected'], True)\n        self.assertEqual(choice['query_string'], '?date_registered__gte=%s'\n                                                 '&date_registered__lt=%s'\n                                                % (self.today.replace(day=1), self.tomorrow))\n\n        request = self.request_factory.get('/', {'date_registered__gte': self.today.replace(month=1, day=1),\n                                                 'date_registered__lt': self.tomorrow})\n        changelist = self.get_changelist(request, Book, modeladmin)\n\n        # Make sure the correct queryset is returned\n        queryset = changelist.get_query_set(request)\n        if self.today.year == self.one_week_ago.year:\n            # In case one week ago is in the same year.\n            self.assertEqual(list(queryset), [self.gipsy_book, self.django_book, self.djangonaut_book])\n        else:\n            self.assertEqual(list(queryset), [self.django_book, self.djangonaut_book])\n\n        # Make sure the correct choice is selected\n        filterspec = changelist.get_filters(request)[0][4]\n        self.assertEqual(force_text(filterspec.title), 'date registered')\n        choice = select_by(filterspec.choices(changelist), \"display\", \"This year\")\n        self.assertEqual(choice['selected'], True)\n        self.assertEqual(choice['query_string'], '?date_registered__gte=%s'\n                                                 '&date_registered__lt=%s'\n                                                % (self.today.replace(month=1, day=1), self.tomorrow))\n\n        request = self.request_factory.get('/', {'date_registered__gte': str(self.one_week_ago),\n                                                 'date_registered__lt': str(self.tomorrow)})\n        changelist = self.get_changelist(request, Book, modeladmin)\n\n        # Make sure the correct queryset is returned\n        queryset = changelist.get_query_set(request)\n        self.assertEqual(list(queryset), [self.gipsy_book, self.django_book, self.djangonaut_book])\n\n        # Make sure the correct choice is selected\n        filterspec = changelist.get_filters(request)[0][4]\n        self.assertEqual(force_text(filterspec.title), 'date registered')\n        choice = select_by(filterspec.choices(changelist), \"display\", \"Past 7 days\")\n        self.assertEqual(choice['selected'], True)\n        self.assertEqual(choice['query_string'], '?date_registered__gte=%s'\n                                                 '&date_registered__lt=%s'\n                                                % (str(self.one_week_ago), str(self.tomorrow)))\n\n    @override_settings(USE_TZ=True)\n    def test_datefieldlistfilter_with_time_zone_support(self):\n        # Regression for #17830\n        self.test_datefieldlistfilter()\n\n    def test_allvaluesfieldlistfilter(self):\n        modeladmin = BookAdmin(Book, site)\n\n        request = self.request_factory.get('/', {'year__isnull': 'True'})\n        changelist = self.get_changelist(request, Book, modeladmin)\n\n        # Make sure the correct queryset is returned\n        queryset = changelist.get_query_set(request)\n        self.assertEqual(list(queryset), [self.django_book])\n\n        # Make sure the last choice is None and is selected\n        filterspec = changelist.get_filters(request)[0][0]\n        self.assertEqual(force_text(filterspec.title), 'year')\n        choices = list(filterspec.choices(changelist))\n        self.assertEqual(choices[-1]['selected'], True)\n        self.assertEqual(choices[-1]['query_string'], '?year__isnull=True')\n\n        request = self.request_factory.get('/', {'year': '2002'})\n        changelist = self.get_changelist(request, Book, modeladmin)\n\n        # Make sure the correct choice is selected\n        filterspec = changelist.get_filters(request)[0][0]\n        self.assertEqual(force_text(filterspec.title), 'year')\n        choices = list(filterspec.choices(changelist))\n        self.assertEqual(choices[2]['selected'], True)\n        self.assertEqual(choices[2]['query_string'], '?year=2002')\n\n    def test_relatedfieldlistfilter_foreignkey(self):\n        modeladmin = BookAdmin(Book, site)\n\n        request = self.request_factory.get('/', {'author__isnull': 'True'})\n        changelist = self.get_changelist(request, Book, modeladmin)\n\n        # Make sure the correct queryset is returned\n        queryset = changelist.get_query_set(request)\n        self.assertEqual(list(queryset), [self.gipsy_book])\n\n        # Make sure the last choice is None and is selected\n        filterspec = changelist.get_filters(request)[0][1]\n        self.assertEqual(force_text(filterspec.title), 'Verbose Author')\n        choices = list(filterspec.choices(changelist))\n        self.assertEqual(choices[-1]['selected'], True)\n        self.assertEqual(choices[-1]['query_string'], '?author__isnull=True')\n\n        request = self.request_factory.get('/', {'author__id__exact': self.alfred.pk})\n        changelist = self.get_changelist(request, Book, modeladmin)\n\n        # Make sure the correct choice is selected\n        filterspec = changelist.get_filters(request)[0][1]\n        self.assertEqual(force_text(filterspec.title), 'Verbose Author')\n        # order of choices depends on User model, which has no order\n        choice = select_by(filterspec.choices(changelist), \"display\", \"alfred\")\n        self.assertEqual(choice['selected'], True)\n        self.assertEqual(choice['query_string'], '?author__id__exact=%d' % self.alfred.pk)\n\n    def test_relatedfieldlistfilter_manytomany(self):\n        modeladmin = BookAdmin(Book, site)\n\n        request = self.request_factory.get('/', {'contributors__isnull': 'True'})\n        changelist = self.get_changelist(request, Book, modeladmin)\n\n        # Make sure the correct queryset is returned\n        queryset = changelist.get_query_set(request)\n        self.assertEqual(list(queryset), [self.django_book, self.bio_book, self.djangonaut_book])\n\n        # Make sure the last choice is None and is selected\n        filterspec = changelist.get_filters(request)[0][2]\n        self.assertEqual(force_text(filterspec.title), 'Verbose Contributors')\n        choices = list(filterspec.choices(changelist))\n        self.assertEqual(choices[-1]['selected'], True)\n        self.assertEqual(choices[-1]['query_string'], '?contributors__isnull=True')\n\n        request = self.request_factory.get('/', {'contributors__id__exact': self.bob.pk})\n        changelist = self.get_changelist(request, Book, modeladmin)\n\n        # Make sure the correct choice is selected\n        filterspec = changelist.get_filters(request)[0][2]\n        self.assertEqual(force_text(filterspec.title), 'Verbose Contributors')\n        choice = select_by(filterspec.choices(changelist), \"display\", \"bob\")\n        self.assertEqual(choice['selected'], True)\n        self.assertEqual(choice['query_string'], '?contributors__id__exact=%d' % self.bob.pk)\n\n    def test_relatedfieldlistfilter_reverse_relationships(self):\n        modeladmin = CustomUserAdmin(User, site)\n\n        # FK relationship -----\n        request = self.request_factory.get('/', {'books_authored__isnull': 'True'})\n        changelist = self.get_changelist(request, User, modeladmin)\n\n        # Make sure the correct queryset is returned\n        queryset = changelist.get_query_set(request)\n        self.assertEqual(list(queryset), [self.lisa])\n\n        # Make sure the last choice is None and is selected\n        filterspec = changelist.get_filters(request)[0][0]\n        self.assertEqual(force_text(filterspec.title), 'book')\n        choices = list(filterspec.choices(changelist))\n        self.assertEqual(choices[-1]['selected'], True)\n        self.assertEqual(choices[-1]['query_string'], '?books_authored__isnull=True')\n\n        request = self.request_factory.get('/', {'books_authored__id__exact': self.bio_book.pk})\n        changelist = self.get_changelist(request, User, modeladmin)\n\n        # Make sure the correct choice is selected\n        filterspec = changelist.get_filters(request)[0][0]\n        self.assertEqual(force_text(filterspec.title), 'book')\n        choice = select_by(filterspec.choices(changelist), \"display\", self.bio_book.title)\n        self.assertEqual(choice['selected'], True)\n        self.assertEqual(choice['query_string'], '?books_authored__id__exact=%d' % self.bio_book.pk)\n\n        # M2M relationship -----\n        request = self.request_factory.get('/', {'books_contributed__isnull': 'True'})\n        changelist = self.get_changelist(request, User, modeladmin)\n\n        # Make sure the correct queryset is returned\n        queryset = changelist.get_query_set(request)\n        self.assertEqual(list(queryset), [self.alfred])\n\n        # Make sure the last choice is None and is selected\n        filterspec = changelist.get_filters(request)[0][1]\n        self.assertEqual(force_text(filterspec.title), 'book')\n        choices = list(filterspec.choices(changelist))\n        self.assertEqual(choices[-1]['selected'], True)\n        self.assertEqual(choices[-1]['query_string'], '?books_contributed__isnull=True')\n\n        request = self.request_factory.get('/', {'books_contributed__id__exact': self.django_book.pk})\n        changelist = self.get_changelist(request, User, modeladmin)\n\n        # Make sure the correct choice is selected\n        filterspec = changelist.get_filters(request)[0][1]\n        self.assertEqual(force_text(filterspec.title), 'book')\n        choice = select_by(filterspec.choices(changelist), \"display\", self.django_book.title)\n        self.assertEqual(choice['selected'], True)\n        self.assertEqual(choice['query_string'], '?books_contributed__id__exact=%d' % self.django_book.pk)\n\n    def test_booleanfieldlistfilter(self):\n        modeladmin = BookAdmin(Book, site)\n        self.verify_booleanfieldlistfilter(modeladmin)\n\n    def test_booleanfieldlistfilter_tuple(self):\n        modeladmin = BookAdminWithTupleBooleanFilter(Book, site)\n        self.verify_booleanfieldlistfilter(modeladmin)\n\n    def verify_booleanfieldlistfilter(self, modeladmin):\n        request = self.request_factory.get('/')\n        changelist = self.get_changelist(request, Book, modeladmin)\n\n        request = self.request_factory.get('/', {'is_best_seller__exact': 0})\n        changelist = self.get_changelist(request, Book, modeladmin)\n\n        # Make sure the correct queryset is returned\n        queryset = changelist.get_query_set(request)\n        self.assertEqual(list(queryset), [self.bio_book])\n\n        # Make sure the correct choice is selected\n        filterspec = changelist.get_filters(request)[0][3]\n        self.assertEqual(force_text(filterspec.title), 'is best seller')\n        choice = select_by(filterspec.choices(changelist), \"display\", \"No\")\n        self.assertEqual(choice['selected'], True)\n        self.assertEqual(choice['query_string'], '?is_best_seller__exact=0')\n\n        request = self.request_factory.get('/', {'is_best_seller__exact': 1})\n        changelist = self.get_changelist(request, Book, modeladmin)\n\n        # Make sure the correct queryset is returned\n        queryset = changelist.get_query_set(request)\n        self.assertEqual(list(queryset), [self.gipsy_book, self.djangonaut_book])\n\n        # Make sure the correct choice is selected\n        filterspec = changelist.get_filters(request)[0][3]\n        self.assertEqual(force_text(filterspec.title), 'is best seller')\n        choice = select_by(filterspec.choices(changelist), \"display\", \"Yes\")\n        self.assertEqual(choice['selected'], True)\n        self.assertEqual(choice['query_string'], '?is_best_seller__exact=1')\n\n        request = self.request_factory.get('/', {'is_best_seller__isnull': 'True'})\n        changelist = self.get_changelist(request, Book, modeladmin)\n\n        # Make sure the correct queryset is returned\n        queryset = changelist.get_query_set(request)\n        self.assertEqual(list(queryset), [self.django_book])\n\n        # Make sure the correct choice is selected\n        filterspec = changelist.get_filters(request)[0][3]\n        self.assertEqual(force_text(filterspec.title), 'is best seller')\n        choice = select_by(filterspec.choices(changelist), \"display\", \"Unknown\")\n        self.assertEqual(choice['selected'], True)\n        self.assertEqual(choice['query_string'], '?is_best_seller__isnull=True')\n\n    def test_simplelistfilter(self):\n        modeladmin = DecadeFilterBookAdmin(Book, site)\n\n        # Make sure that the first option is 'All' ---------------------------\n\n        request = self.request_factory.get('/', {})\n        changelist = self.get_changelist(request, Book, modeladmin)\n\n        # Make sure the correct queryset is returned\n        queryset = changelist.get_query_set(request)\n        self.assertEqual(list(queryset), list(Book.objects.all().order_by('-id')))\n\n        # Make sure the correct choice is selected\n        filterspec = changelist.get_filters(request)[0][1]\n        self.assertEqual(force_text(filterspec.title), 'publication decade')\n        choices = list(filterspec.choices(changelist))\n        self.assertEqual(choices[0]['display'], 'All')\n        self.assertEqual(choices[0]['selected'], True)\n        self.assertEqual(choices[0]['query_string'], '?')\n\n        # Look for books in the 1980s ----------------------------------------\n\n        request = self.request_factory.get('/', {'publication-decade': 'the 80s'})\n        changelist = self.get_changelist(request, Book, modeladmin)\n\n        # Make sure the correct queryset is returned\n        queryset = changelist.get_query_set(request)\n        self.assertEqual(list(queryset), [])\n\n        # Make sure the correct choice is selected\n        filterspec = changelist.get_filters(request)[0][1]\n        self.assertEqual(force_text(filterspec.title), 'publication decade')\n        choices = list(filterspec.choices(changelist))\n        self.assertEqual(choices[1]['display'], 'the 1980\\'s')\n        self.assertEqual(choices[1]['selected'], True)\n        self.assertEqual(choices[1]['query_string'], '?publication-decade=the+80s')\n\n        # Look for books in the 1990s ----------------------------------------\n\n        request = self.request_factory.get('/', {'publication-decade': 'the 90s'})\n        changelist = self.get_changelist(request, Book, modeladmin)\n\n        # Make sure the correct queryset is returned\n        queryset = changelist.get_query_set(request)\n        self.assertEqual(list(queryset), [self.bio_book])\n\n        # Make sure the correct choice is selected\n        filterspec = changelist.get_filters(request)[0][1]\n        self.assertEqual(force_text(filterspec.title), 'publication decade')\n        choices = list(filterspec.choices(changelist))\n        self.assertEqual(choices[2]['display'], 'the 1990\\'s')\n        self.assertEqual(choices[2]['selected'], True)\n        self.assertEqual(choices[2]['query_string'], '?publication-decade=the+90s')\n\n        # Look for books in the 2000s ----------------------------------------\n\n        request = self.request_factory.get('/', {'publication-decade': 'the 00s'})\n        changelist = self.get_changelist(request, Book, modeladmin)\n\n        # Make sure the correct queryset is returned\n        queryset = changelist.get_query_set(request)\n        self.assertEqual(list(queryset), [self.gipsy_book, self.djangonaut_book])\n\n        # Make sure the correct choice is selected\n        filterspec = changelist.get_filters(request)[0][1]\n        self.assertEqual(force_text(filterspec.title), 'publication decade')\n        choices = list(filterspec.choices(changelist))\n        self.assertEqual(choices[3]['display'], 'the 2000\\'s')\n        self.assertEqual(choices[3]['selected'], True)\n        self.assertEqual(choices[3]['query_string'], '?publication-decade=the+00s')\n\n        # Combine multiple filters -------------------------------------------\n\n        request = self.request_factory.get('/', {'publication-decade': 'the 00s', 'author__id__exact': self.alfred.pk})\n        changelist = self.get_changelist(request, Book, modeladmin)\n\n        # Make sure the correct queryset is returned\n        queryset = changelist.get_query_set(request)\n        self.assertEqual(list(queryset), [self.djangonaut_book])\n\n        # Make sure the correct choices are selected\n        filterspec = changelist.get_filters(request)[0][1]\n        self.assertEqual(force_text(filterspec.title), 'publication decade')\n        choices = list(filterspec.choices(changelist))\n        self.assertEqual(choices[3]['display'], 'the 2000\\'s')\n        self.assertEqual(choices[3]['selected'], True)\n        self.assertEqual(choices[3]['query_string'], '?author__id__exact=%s&publication-decade=the+00s' % self.alfred.pk)\n\n        filterspec = changelist.get_filters(request)[0][0]\n        self.assertEqual(force_text(filterspec.title), 'Verbose Author')\n        choice = select_by(filterspec.choices(changelist), \"display\", \"alfred\")\n        self.assertEqual(choice['selected'], True)\n        self.assertEqual(choice['query_string'], '?author__id__exact=%s&publication-decade=the+00s' % self.alfred.pk)\n\n    def test_listfilter_without_title(self):\n        \"\"\"\n        Any filter must define a title.\n        \"\"\"\n        modeladmin = DecadeFilterBookAdminWithoutTitle(Book, site)\n        request = self.request_factory.get('/', {})\n        six.assertRaisesRegex(self, ImproperlyConfigured,\n            \"The list filter 'DecadeListFilterWithoutTitle' does not specify a 'title'.\",\n            self.get_changelist, request, Book, modeladmin)\n\n    def test_simplelistfilter_without_parameter(self):\n        \"\"\"\n        Any SimpleListFilter must define a parameter_name.\n        \"\"\"\n        modeladmin = DecadeFilterBookAdminWithoutParameter(Book, site)\n        request = self.request_factory.get('/', {})\n        six.assertRaisesRegex(self, ImproperlyConfigured,\n            \"The list filter 'DecadeListFilterWithoutParameter' does not specify a 'parameter_name'.\",\n            self.get_changelist, request, Book, modeladmin)\n\n    def test_simplelistfilter_with_none_returning_lookups(self):\n        \"\"\"\n        A SimpleListFilter lookups method can return None but disables the\n        filter completely.\n        \"\"\"\n        modeladmin = DecadeFilterBookAdminWithNoneReturningLookups(Book, site)\n        request = self.request_factory.get('/', {})\n        changelist = self.get_changelist(request, Book, modeladmin)\n        filterspec = changelist.get_filters(request)[0]\n        self.assertEqual(len(filterspec), 0)\n\n    def test_filter_with_failing_queryset(self):\n        \"\"\"\n        Ensure that when a filter's queryset method fails, it fails loudly and\n        the corresponding exception doesn't get swallowed.\n        Refs #17828.\n        \"\"\"\n        modeladmin = DecadeFilterBookAdminWithFailingQueryset(Book, site)\n        request = self.request_factory.get('/', {})\n        self.assertRaises(ZeroDivisionError, self.get_changelist, request, Book, modeladmin)\n\n    def test_simplelistfilter_with_queryset_based_lookups(self):\n        modeladmin = DecadeFilterBookAdminWithQuerysetBasedLookups(Book, site)\n        request = self.request_factory.get('/', {})\n        changelist = self.get_changelist(request, Book, modeladmin)\n\n        filterspec = changelist.get_filters(request)[0][0]\n        self.assertEqual(force_text(filterspec.title), 'publication decade')\n        choices = list(filterspec.choices(changelist))\n        self.assertEqual(len(choices), 3)\n\n        self.assertEqual(choices[0]['display'], 'All')\n        self.assertEqual(choices[0]['selected'], True)\n        self.assertEqual(choices[0]['query_string'], '?')\n\n        self.assertEqual(choices[1]['display'], 'the 1990\\'s')\n        self.assertEqual(choices[1]['selected'], False)\n        self.assertEqual(choices[1]['query_string'], '?publication-decade=the+90s')\n\n        self.assertEqual(choices[2]['display'], 'the 2000\\'s')\n        self.assertEqual(choices[2]['selected'], False)\n        self.assertEqual(choices[2]['query_string'], '?publication-decade=the+00s')\n\n    def test_two_characters_long_field(self):\n        \"\"\"\n        Ensure that list_filter works with two-characters long field names.\n        Refs #16080.\n        \"\"\"\n        modeladmin = BookAdmin(Book, site)\n        request = self.request_factory.get('/', {'no': '207'})\n        changelist = self.get_changelist(request, Book, modeladmin)\n\n        # Make sure the correct queryset is returned\n        queryset = changelist.get_query_set(request)\n        self.assertEqual(list(queryset), [self.bio_book])\n\n        filterspec = changelist.get_filters(request)[0][-1]\n        self.assertEqual(force_text(filterspec.title), 'number')\n        choices = list(filterspec.choices(changelist))\n        self.assertEqual(choices[2]['selected'], True)\n        self.assertEqual(choices[2]['query_string'], '?no=207')\n\n    def test_parameter_ends_with__in__or__isnull(self):\n        \"\"\"\n        Ensure that a SimpleListFilter's parameter name is not mistaken for a\n        model field if it ends with '__isnull' or '__in'.\n        Refs #17091.\n        \"\"\"\n\n        # When it ends with '__in' -----------------------------------------\n        modeladmin = DecadeFilterBookAdminParameterEndsWith__In(Book, site)\n        request = self.request_factory.get('/', {'decade__in': 'the 90s'})\n        changelist = self.get_changelist(request, Book, modeladmin)\n\n        # Make sure the correct queryset is returned\n        queryset = changelist.get_query_set(request)\n        self.assertEqual(list(queryset), [self.bio_book])\n\n        # Make sure the correct choice is selected\n        filterspec = changelist.get_filters(request)[0][0]\n        self.assertEqual(force_text(filterspec.title), 'publication decade')\n        choices = list(filterspec.choices(changelist))\n        self.assertEqual(choices[2]['display'], 'the 1990\\'s')\n        self.assertEqual(choices[2]['selected'], True)\n        self.assertEqual(choices[2]['query_string'], '?decade__in=the+90s')\n\n        # When it ends with '__isnull' ---------------------------------------\n        modeladmin = DecadeFilterBookAdminParameterEndsWith__Isnull(Book, site)\n        request = self.request_factory.get('/', {'decade__isnull': 'the 90s'})\n        changelist = self.get_changelist(request, Book, modeladmin)\n\n        # Make sure the correct queryset is returned\n        queryset = changelist.get_query_set(request)\n        self.assertEqual(list(queryset), [self.bio_book])\n\n        # Make sure the correct choice is selected\n        filterspec = changelist.get_filters(request)[0][0]\n        self.assertEqual(force_text(filterspec.title), 'publication decade')\n        choices = list(filterspec.choices(changelist))\n        self.assertEqual(choices[2]['display'], 'the 1990\\'s')\n        self.assertEqual(choices[2]['selected'], True)\n        self.assertEqual(choices[2]['query_string'], '?decade__isnull=the+90s')\n\n    def test_lookup_with_non_string_value(self):\n        \"\"\"\n        Ensure choices are set the selected class when using non-string values\n        for lookups in SimpleListFilters.\n        Refs #19318\n        \"\"\"\n\n        modeladmin = DepartmentFilterEmployeeAdmin(Employee, site)\n        request = self.request_factory.get('/', {'department': self.john.pk})\n        changelist = self.get_changelist(request, Employee, modeladmin)\n\n        queryset = changelist.get_query_set(request)\n\n        self.assertEqual(list(queryset), [self.john])\n\n        filterspec = changelist.get_filters(request)[0][-1]\n        self.assertEqual(force_text(filterspec.title), 'department')\n        choices = list(filterspec.choices(changelist))\n        self.assertEqual(choices[1]['display'], 'DEV')\n        self.assertEqual(choices[1]['selected'], True)\n        self.assertEqual(choices[1]['query_string'], '?department=%s' % self.john.pk)\n\n    def test_fk_with_to_field(self):\n        \"\"\"\n        Ensure that a filter on a FK respects the FK's to_field attribute.\n        Refs #17972.\n        \"\"\"\n        modeladmin = EmployeeAdmin(Employee, site)\n\n        request = self.request_factory.get('/', {})\n        changelist = self.get_changelist(request, Employee, modeladmin)\n\n        # Make sure the correct queryset is returned\n        queryset = changelist.get_query_set(request)\n        self.assertEqual(list(queryset), [self.jack, self.john])\n\n        filterspec = changelist.get_filters(request)[0][-1]\n        self.assertEqual(force_text(filterspec.title), 'department')\n        choices = list(filterspec.choices(changelist))\n\n        self.assertEqual(choices[0]['display'], 'All')\n        self.assertEqual(choices[0]['selected'], True)\n        self.assertEqual(choices[0]['query_string'], '?')\n\n        self.assertEqual(choices[1]['display'], 'Development')\n        self.assertEqual(choices[1]['selected'], False)\n        self.assertEqual(choices[1]['query_string'], '?department__code__exact=DEV')\n\n        self.assertEqual(choices[2]['display'], 'Design')\n        self.assertEqual(choices[2]['selected'], False)\n        self.assertEqual(choices[2]['query_string'], '?department__code__exact=DSN')\n\n        # Filter by Department=='Development' --------------------------------\n\n        request = self.request_factory.get('/', {'department__code__exact': 'DEV'})\n        changelist = self.get_changelist(request, Employee, modeladmin)\n\n        # Make sure the correct queryset is returned\n        queryset = changelist.get_query_set(request)\n        self.assertEqual(list(queryset), [self.john])\n\n        filterspec = changelist.get_filters(request)[0][-1]\n        self.assertEqual(force_text(filterspec.title), 'department')\n        choices = list(filterspec.choices(changelist))\n\n        self.assertEqual(choices[0]['display'], 'All')\n        self.assertEqual(choices[0]['selected'], False)\n        self.assertEqual(choices[0]['query_string'], '?')\n\n        self.assertEqual(choices[1]['display'], 'Development')\n        self.assertEqual(choices[1]['selected'], True)\n        self.assertEqual(choices[1]['query_string'], '?department__code__exact=DEV')\n\n        self.assertEqual(choices[2]['display'], 'Design')\n        self.assertEqual(choices[2]['selected'], False)\n        self.assertEqual(choices[2]['query_string'], '?department__code__exact=DSN')\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_inlines/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_inlines/admin.py",
    "content": "from __future__ import absolute_import\n\nfrom django.contrib import admin\nfrom django import forms\n\nfrom .models import *\n\nsite = admin.AdminSite(name=\"admin\")\n\n\nclass BookInline(admin.TabularInline):\n    model = Author.books.through\n\n\nclass AuthorAdmin(admin.ModelAdmin):\n    inlines = [BookInline]\n\n\nclass InnerInline(admin.StackedInline):\n    model = Inner\n    can_delete = False\n    readonly_fields = ('readonly',) # For bug #13174 tests.\n\n\nclass HolderAdmin(admin.ModelAdmin):\n\n    class Media:\n        js = ('my_awesome_admin_scripts.js',)\n\n\nclass InnerInline2(admin.StackedInline):\n    model = Inner2\n\n    class Media:\n        js = ('my_awesome_inline_scripts.js',)\n\n\nclass InnerInline3(admin.StackedInline):\n    model = Inner3\n\n    class Media:\n        js = ('my_awesome_inline_scripts.js',)\n\n\nclass TitleForm(forms.ModelForm):\n\n    def clean(self):\n        cleaned_data = self.cleaned_data\n        title1 = cleaned_data.get(\"title1\")\n        title2 = cleaned_data.get(\"title2\")\n        if title1 != title2:\n            raise forms.ValidationError(\"The two titles must be the same\")\n        return cleaned_data\n\n\nclass TitleInline(admin.TabularInline):\n    model = Title\n    form = TitleForm\n    extra = 1\n\n\nclass Inner4StackedInline(admin.StackedInline):\n    model = Inner4Stacked\n\n\nclass Inner4TabularInline(admin.TabularInline):\n    model = Inner4Tabular\n\n\nclass Holder4Admin(admin.ModelAdmin):\n    inlines = [Inner4StackedInline, Inner4TabularInline]\n\n\nclass InlineWeakness(admin.TabularInline):\n    model = ShoppingWeakness\n    extra = 1\n\n\nclass QuestionInline(admin.TabularInline):\n    model = Question\n    readonly_fields=['call_me']\n\n    def call_me(self, obj):\n        return 'Callable in QuestionInline'\n\n\nclass PollAdmin(admin.ModelAdmin):\n    inlines = [QuestionInline]\n\n    def call_me(self, obj):\n        return 'Callable in PollAdmin'\n\n\nclass ChapterInline(admin.TabularInline):\n    model = Chapter\n    readonly_fields=['call_me']\n\n    def call_me(self, obj):\n        return 'Callable in ChapterInline'\n\n\nclass NovelAdmin(admin.ModelAdmin):\n    inlines = [ChapterInline]\n\n\nclass ConsigliereInline(admin.TabularInline):\n    model = Consigliere\n\n\nclass SottoCapoInline(admin.TabularInline):\n    model = SottoCapo\n\n\nclass ProfileInline(admin.TabularInline):\n    model = Profile\n    extra = 1\n\n\n# admin for #18433\nclass ChildModel1Inline(admin.TabularInline):\n    model = ChildModel1\n\n\nclass ChildModel2Inline(admin.StackedInline):\n    model = ChildModel2\n\n# admin for #19524\nclass SightingInline(admin.TabularInline):\n    model = Sighting\n\nsite.register(TitleCollection, inlines=[TitleInline])\n# Test bug #12561 and #12778\n# only ModelAdmin media\nsite.register(Holder, HolderAdmin, inlines=[InnerInline])\n# ModelAdmin and Inline media\nsite.register(Holder2, HolderAdmin, inlines=[InnerInline2])\n# only Inline media\nsite.register(Holder3, inlines=[InnerInline3])\n\nsite.register(Poll, PollAdmin)\nsite.register(Novel, NovelAdmin)\nsite.register(Fashionista, inlines=[InlineWeakness])\nsite.register(Holder4, Holder4Admin)\nsite.register(Author, AuthorAdmin)\nsite.register(CapoFamiglia, inlines=[ConsigliereInline, SottoCapoInline])\nsite.register(ProfileCollection, inlines=[ProfileInline])\nsite.register(ParentModelWithCustomPk, inlines=[ChildModel1Inline, ChildModel2Inline])\nsite.register(ExtraTerrestrial, inlines=[SightingInline])\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_inlines/fixtures/admin-views-users.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<django-objects version=\"1.0\">\n    <object pk=\"100\" model=\"auth.user\">\n        <field type=\"CharField\" name=\"username\">super</field>\n        <field type=\"CharField\" name=\"first_name\">Super</field>\n        <field type=\"CharField\" name=\"last_name\">User</field>\n        <field type=\"CharField\" name=\"email\">super@example.com</field>\n        <field type=\"CharField\" name=\"password\">sha1$995a3$6011485ea3834267d719b4c801409b8b1ddd0158</field>\n        <field type=\"BooleanField\" name=\"is_staff\">True</field>\n        <field type=\"BooleanField\" name=\"is_active\">True</field>\n        <field type=\"BooleanField\" name=\"is_superuser\">True</field>\n        <field type=\"DateTimeField\" name=\"last_login\">2007-05-30 13:20:10</field>\n        <field type=\"DateTimeField\" name=\"date_joined\">2007-05-30 13:20:10</field>\n        <field to=\"auth.group\" name=\"groups\" rel=\"ManyToManyRel\"></field>\n        <field to=\"auth.permission\" name=\"user_permissions\" rel=\"ManyToManyRel\"></field>\n    </object>\n</django-objects>\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_inlines/models.py",
    "content": "\"\"\"\nTesting of admin inline formsets.\n\n\"\"\"\nfrom __future__ import unicode_literals\n\nfrom django.db import models\nfrom django.contrib.contenttypes.models import ContentType\nfrom django.contrib.contenttypes import generic\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n@python_2_unicode_compatible\nclass Parent(models.Model):\n    name = models.CharField(max_length=50)\n\n    def __str__(self):\n        return self.name\n\n\n@python_2_unicode_compatible\nclass Teacher(models.Model):\n    name = models.CharField(max_length=50)\n\n    def __str__(self):\n        return self.name\n\n\n@python_2_unicode_compatible\nclass Child(models.Model):\n    name = models.CharField(max_length=50)\n    teacher = models.ForeignKey(Teacher)\n\n    content_type = models.ForeignKey(ContentType)\n    object_id = models.PositiveIntegerField()\n    parent = generic.GenericForeignKey()\n\n    def __str__(self):\n        return 'I am %s, a child of %s' % (self.name, self.parent)\n\n\nclass Book(models.Model):\n    name = models.CharField(max_length=50)\n\n\nclass Author(models.Model):\n    name = models.CharField(max_length=50)\n    books = models.ManyToManyField(Book)\n\n\nclass Holder(models.Model):\n    dummy = models.IntegerField()\n\n\nclass Inner(models.Model):\n    dummy = models.IntegerField()\n    holder = models.ForeignKey(Holder)\n    readonly = models.CharField(\"Inner readonly label\", max_length=1)\n\n    def get_absolute_url(self):\n        return '/inner/'\n\n\nclass Holder2(models.Model):\n    dummy = models.IntegerField()\n\n\nclass Inner2(models.Model):\n    dummy = models.IntegerField()\n    holder = models.ForeignKey(Holder2)\n\nclass Holder3(models.Model):\n    dummy = models.IntegerField()\n\n\nclass Inner3(models.Model):\n    dummy = models.IntegerField()\n    holder = models.ForeignKey(Holder3)\n\n# Models for ticket #8190\n\nclass Holder4(models.Model):\n    dummy = models.IntegerField()\n\nclass Inner4Stacked(models.Model):\n    dummy = models.IntegerField(help_text=\"Awesome stacked help text is awesome.\")\n    holder = models.ForeignKey(Holder4)\n\nclass Inner4Tabular(models.Model):\n    dummy = models.IntegerField(help_text=\"Awesome tabular help text is awesome.\")\n    holder = models.ForeignKey(Holder4)\n\n# Models for #12749\n\nclass Person(models.Model):\n    firstname = models.CharField(max_length=15)\n\nclass OutfitItem(models.Model):\n    name = models.CharField(max_length=15)\n\nclass Fashionista(models.Model):\n    person = models.OneToOneField(Person, primary_key=True)\n    weaknesses = models.ManyToManyField(OutfitItem, through='ShoppingWeakness', blank=True)\n\nclass ShoppingWeakness(models.Model):\n    fashionista = models.ForeignKey(Fashionista)\n    item = models.ForeignKey(OutfitItem)\n\n# Models for #13510\n\nclass TitleCollection(models.Model):\n    pass\n\nclass Title(models.Model):\n    collection = models.ForeignKey(TitleCollection, blank=True, null=True)\n    title1 = models.CharField(max_length=100)\n    title2 = models.CharField(max_length=100)\n\n# Models for #15424\n\nclass Poll(models.Model):\n    name = models.CharField(max_length=40)\n\nclass Question(models.Model):\n    poll = models.ForeignKey(Poll)\n\nclass Novel(models.Model):\n    name = models.CharField(max_length=40)\n\nclass Chapter(models.Model):\n    novel = models.ForeignKey(Novel)\n\n\n# Models for #16838\n\nclass CapoFamiglia(models.Model):\n    name = models.CharField(max_length=100)\n\n\nclass Consigliere(models.Model):\n    name = models.CharField(max_length=100)\n    capo_famiglia = models.ForeignKey(CapoFamiglia, related_name='+')\n\n\nclass SottoCapo(models.Model):\n    name = models.CharField(max_length=100)\n    capo_famiglia = models.ForeignKey(CapoFamiglia, related_name='+')\n\n# Models for #18433\n\nclass ParentModelWithCustomPk(models.Model):\n    my_own_pk = models.CharField(max_length=100, primary_key=True)\n    name = models.CharField(max_length=100)\n\n\nclass ChildModel1(models.Model):\n    my_own_pk = models.CharField(max_length=100, primary_key=True)\n    name = models.CharField(max_length=100)\n    parent = models.ForeignKey(ParentModelWithCustomPk)\n\n    def get_absolute_url(self):\n        return '/child_model1/'\n\n\nclass ChildModel2(models.Model):\n    my_own_pk = models.CharField(max_length=100, primary_key=True)\n    name = models.CharField(max_length=100)\n    parent = models.ForeignKey(ParentModelWithCustomPk)\n\n    def get_absolute_url(self):\n        return '/child_model2/'\n\n# Models for #19524\n\nclass LifeForm(models.Model):\n    pass\n\nclass ExtraTerrestrial(LifeForm):\n    name = models.CharField(max_length=100)\n\nclass Sighting(models.Model):\n    et = models.ForeignKey(ExtraTerrestrial)\n    place = models.CharField(max_length=100)\n\n# Other models\n\nclass ProfileCollection(models.Model):\n    pass\n\nclass Profile(models.Model):\n    collection = models.ForeignKey(ProfileCollection, blank=True, null=True)\n    first_name = models.CharField(max_length=100)\n    last_name = models.CharField(max_length=100)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_inlines/tests.py",
    "content": "from __future__ import absolute_import, unicode_literals\n\nfrom django.contrib.admin.tests import AdminSeleniumWebDriverTestCase\nfrom django.contrib.admin.helpers import InlineAdminForm\nfrom django.contrib.auth.models import User, Permission\nfrom django.contrib.contenttypes.models import ContentType\nfrom django.test import TestCase\nfrom django.test.utils import override_settings\n\n# local test models\nfrom .admin import InnerInline, TitleInline, site\nfrom .models import (Holder, Inner, Holder2, Inner2, Holder3, Inner3, Person,\n    OutfitItem, Fashionista, Teacher, Parent, Child, Author, Book, Profile,\n    ProfileCollection, ParentModelWithCustomPk, ChildModel1, ChildModel2,\n    Sighting, Title)\n\n\n@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))\nclass TestInline(TestCase):\n    urls = \"regressiontests.admin_inlines.urls\"\n    fixtures = ['admin-views-users.xml']\n\n    def setUp(self):\n        holder = Holder(dummy=13)\n        holder.save()\n        Inner(dummy=42, holder=holder).save()\n        self.change_url = '/admin/admin_inlines/holder/%i/' % holder.id\n\n        result = self.client.login(username='super', password='secret')\n        self.assertEqual(result, True)\n\n    def tearDown(self):\n        self.client.logout()\n\n    def test_can_delete(self):\n        \"\"\"\n        can_delete should be passed to inlineformset factory.\n        \"\"\"\n        response = self.client.get(self.change_url)\n        inner_formset = response.context['inline_admin_formsets'][0].formset\n        expected = InnerInline.can_delete\n        actual = inner_formset.can_delete\n        self.assertEqual(expected, actual, 'can_delete must be equal')\n\n    def test_readonly_stacked_inline_label(self):\n        \"\"\"Bug #13174.\"\"\"\n        holder = Holder.objects.create(dummy=42)\n        inner = Inner.objects.create(holder=holder, dummy=42, readonly='')\n        response = self.client.get('/admin/admin_inlines/holder/%i/'\n                                   % holder.id)\n        self.assertContains(response, '<label>Inner readonly label:</label>')\n\n    def test_many_to_many_inlines(self):\n        \"Autogenerated many-to-many inlines are displayed correctly (#13407)\"\n        response = self.client.get('/admin/admin_inlines/author/add/')\n        # The heading for the m2m inline block uses the right text\n        self.assertContains(response, '<h2>Author-book relationships</h2>')\n        # The \"add another\" label is correct\n        self.assertContains(response, 'Add another Author-Book Relationship')\n        # The '+' is dropped from the autogenerated form prefix (Author_books+)\n        self.assertContains(response, 'id=\"id_Author_books-TOTAL_FORMS\"')\n\n    def test_inline_primary(self):\n        person = Person.objects.create(firstname='Imelda')\n        item = OutfitItem.objects.create(name='Shoes')\n        # Imelda likes shoes, but can't cary her own bags.\n        data = {\n            'shoppingweakness_set-TOTAL_FORMS': 1,\n            'shoppingweakness_set-INITIAL_FORMS': 0,\n            'shoppingweakness_set-MAX_NUM_FORMS': 0,\n            '_save': 'Save',\n            'person': person.id,\n            'max_weight': 0,\n            'shoppingweakness_set-0-item': item.id,\n        }\n        response = self.client.post('/admin/admin_inlines/fashionista/add/', data)\n        self.assertEqual(response.status_code, 302)\n        self.assertEqual(len(Fashionista.objects.filter(person__firstname='Imelda')), 1)\n\n    def test_tabular_non_field_errors(self):\n        \"\"\"\n        Ensure that non_field_errors are displayed correctly, including the\n        right value for colspan. Refs #13510.\n        \"\"\"\n        data = {\n            'title_set-TOTAL_FORMS': 1,\n            'title_set-INITIAL_FORMS': 0,\n            'title_set-MAX_NUM_FORMS': 0,\n            '_save': 'Save',\n            'title_set-0-title1': 'a title',\n            'title_set-0-title2': 'a different title',\n        }\n        response = self.client.post('/admin/admin_inlines/titlecollection/add/', data)\n        # Here colspan is \"4\": two fields (title1 and title2), one hidden field and the delete checkbock.\n        self.assertContains(response, '<tr><td colspan=\"4\"><ul class=\"errorlist\"><li>The two titles must be the same</li></ul></td></tr>')\n\n    def test_no_parent_callable_lookup(self):\n        \"\"\"Admin inline `readonly_field` shouldn't invoke parent ModelAdmin callable\"\"\"\n        # Identically named callable isn't present in the parent ModelAdmin,\n        # rendering of the add view shouldn't explode\n        response = self.client.get('/admin/admin_inlines/novel/add/')\n        self.assertEqual(response.status_code, 200)\n        # View should have the child inlines section\n        self.assertContains(response, '<div class=\"inline-group\" id=\"chapter_set-group\">')\n\n    def test_callable_lookup(self):\n        \"\"\"Admin inline should invoke local callable when its name is listed in readonly_fields\"\"\"\n        response = self.client.get('/admin/admin_inlines/poll/add/')\n        self.assertEqual(response.status_code, 200)\n        # Add parent object view should have the child inlines section\n        self.assertContains(response, '<div class=\"inline-group\" id=\"question_set-group\">')\n        # The right callabe should be used for the inline readonly_fields\n        # column cells\n        self.assertContains(response, '<p>Callable in QuestionInline</p>')\n\n    def test_help_text(self):\n        \"\"\"\n        Ensure that the inlines' model field help texts are displayed when\n        using both the stacked and tabular layouts.\n        Ref #8190.\n        \"\"\"\n        response = self.client.get('/admin/admin_inlines/holder4/add/')\n        self.assertContains(response, '<p class=\"help\">Awesome stacked help text is awesome.</p>', 4)\n        self.assertContains(response, '<img src=\"/static/admin/img/icon-unknown.gif\" class=\"help help-tooltip\" width=\"10\" height=\"10\" alt=\"(Awesome tabular help text is awesome.)\" title=\"Awesome tabular help text is awesome.\" />', 1)\n\n    def test_non_related_name_inline(self):\n        \"\"\"\n        Ensure that multiple inlines with related_name='+' have correct form\n        prefixes. Bug #16838.\n        \"\"\"\n        response = self.client.get('/admin/admin_inlines/capofamiglia/add/')\n\n        self.assertContains(response,\n                '<input type=\"hidden\" name=\"-1-0-id\" id=\"id_-1-0-id\" />', html=True)\n        self.assertContains(response,\n                '<input type=\"hidden\" name=\"-1-0-capo_famiglia\" id=\"id_-1-0-capo_famiglia\" />', html=True)\n        self.assertContains(response,\n                '<input id=\"id_-1-0-name\" type=\"text\" class=\"vTextField\" '\n                'name=\"-1-0-name\" maxlength=\"100\" />', html=True)\n\n        self.assertContains(response,\n                '<input type=\"hidden\" name=\"-2-0-id\" id=\"id_-2-0-id\" />', html=True)\n        self.assertContains(response,\n                '<input type=\"hidden\" name=\"-2-0-capo_famiglia\" id=\"id_-2-0-capo_famiglia\" />', html=True)\n        self.assertContains(response,\n                '<input id=\"id_-2-0-name\" type=\"text\" class=\"vTextField\" '\n                'name=\"-2-0-name\" maxlength=\"100\" />', html=True)\n\n    @override_settings(USE_L10N=True, USE_THOUSAND_SEPARATOR=True)\n    def test_localize_pk_shortcut(self):\n        \"\"\"\n        Ensure that the \"View on Site\" link is correct for locales that use\n        thousand separators\n        \"\"\"\n        holder = Holder.objects.create(pk=123456789, dummy=42)\n        inner = Inner.objects.create(pk=987654321, holder=holder, dummy=42, readonly='')\n        response = self.client.get('/admin/admin_inlines/holder/%i/' % holder.id)\n        inner_shortcut = 'r/%s/%s/'%(ContentType.objects.get_for_model(inner).pk, inner.pk)\n        self.assertContains(response, inner_shortcut)\n\n    def test_custom_pk_shortcut(self):\n        \"\"\"\n        Ensure that the \"View on Site\" link is correct for models with a\n        custom primary key field. Bug #18433.\n        \"\"\"\n        parent = ParentModelWithCustomPk.objects.create(my_own_pk=\"foo\", name=\"Foo\")\n        child1 = ChildModel1.objects.create(my_own_pk=\"bar\", name=\"Bar\", parent=parent)\n        child2 = ChildModel2.objects.create(my_own_pk=\"baz\", name=\"Baz\", parent=parent)\n        response = self.client.get('/admin/admin_inlines/parentmodelwithcustompk/foo/')\n        child1_shortcut = 'r/%s/%s/'%(ContentType.objects.get_for_model(child1).pk, child1.pk)\n        child2_shortcut = 'r/%s/%s/'%(ContentType.objects.get_for_model(child2).pk, child2.pk)\n        self.assertContains(response, child1_shortcut)\n        self.assertContains(response, child2_shortcut)\n\n    def test_create_inlines_on_inherited_model(self):\n        \"\"\"\n        Ensure that an object can be created with inlines when it inherits\n        another class. Bug #19524.\n        \"\"\"\n        data = {\n            'name': 'Martian',\n            'sighting_set-TOTAL_FORMS': 1,\n            'sighting_set-INITIAL_FORMS': 0,\n            'sighting_set-MAX_NUM_FORMS': 0,\n            'sighting_set-0-place': 'Zone 51',\n            '_save': 'Save',\n        }\n        response = self.client.post('/admin/admin_inlines/extraterrestrial/add/', data)\n        self.assertEqual(response.status_code, 302)\n        self.assertEqual(Sighting.objects.filter(et__name='Martian').count(), 1)\n\n\n@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))\nclass TestInlineMedia(TestCase):\n    urls = \"regressiontests.admin_inlines.urls\"\n    fixtures = ['admin-views-users.xml']\n\n    def setUp(self):\n\n        result = self.client.login(username='super', password='secret')\n        self.assertEqual(result, True)\n\n    def tearDown(self):\n        self.client.logout()\n\n    def test_inline_media_only_base(self):\n        holder = Holder(dummy=13)\n        holder.save()\n        Inner(dummy=42, holder=holder).save()\n        change_url = '/admin/admin_inlines/holder/%i/' % holder.id\n        response = self.client.get(change_url)\n        self.assertContains(response, 'my_awesome_admin_scripts.js')\n\n    def test_inline_media_only_inline(self):\n        holder = Holder3(dummy=13)\n        holder.save()\n        Inner3(dummy=42, holder=holder).save()\n        change_url = '/admin/admin_inlines/holder3/%i/' % holder.id\n        response = self.client.get(change_url)\n        self.assertContains(response, 'my_awesome_inline_scripts.js')\n\n    def test_all_inline_media(self):\n        holder = Holder2(dummy=13)\n        holder.save()\n        Inner2(dummy=42, holder=holder).save()\n        change_url = '/admin/admin_inlines/holder2/%i/' % holder.id\n        response = self.client.get(change_url)\n        self.assertContains(response, 'my_awesome_admin_scripts.js')\n        self.assertContains(response, 'my_awesome_inline_scripts.js')\n\nclass TestInlineAdminForm(TestCase):\n    urls = \"regressiontests.admin_inlines.urls\"\n\n    def test_immutable_content_type(self):\n        \"\"\"Regression for #9362\n        The problem depends only on InlineAdminForm and its \"original\"\n        argument, so we can safely set the other arguments to None/{}. We just\n        need to check that the content_type argument of Child isn't altered by\n        the internals of the inline form.\"\"\"\n\n        sally = Teacher.objects.create(name='Sally')\n        john = Parent.objects.create(name='John')\n        joe = Child.objects.create(name='Joe', teacher=sally, parent=john)\n\n        iaf = InlineAdminForm(None, None, {}, {}, joe)\n        parent_ct = ContentType.objects.get_for_model(Parent)\n        self.assertEqual(iaf.original.content_type, parent_ct)\n\nclass TestInlinePermissions(TestCase):\n    \"\"\"\n    Make sure the admin respects permissions for objects that are edited\n    inline. Refs #8060.\n\n    \"\"\"\n    urls = \"regressiontests.admin_inlines.urls\"\n\n    def setUp(self):\n        self.user = User(username='admin')\n        self.user.is_staff = True\n        self.user.is_active = True\n        self.user.set_password('secret')\n        self.user.save()\n\n        self.author_ct = ContentType.objects.get_for_model(Author)\n        self.holder_ct = ContentType.objects.get_for_model(Holder2)\n        self.book_ct = ContentType.objects.get_for_model(Book)\n        self.inner_ct = ContentType.objects.get_for_model(Inner2)\n\n        # User always has permissions to add and change Authors, and Holders,\n        # the main (parent) models of the inlines. Permissions on the inlines\n        # vary per test.\n        permission = Permission.objects.get(codename='add_author', content_type=self.author_ct)\n        self.user.user_permissions.add(permission)\n        permission = Permission.objects.get(codename='change_author', content_type=self.author_ct)\n        self.user.user_permissions.add(permission)\n        permission = Permission.objects.get(codename='add_holder2', content_type=self.holder_ct)\n        self.user.user_permissions.add(permission)\n        permission = Permission.objects.get(codename='change_holder2', content_type=self.holder_ct)\n        self.user.user_permissions.add(permission)\n\n        author = Author.objects.create(pk=1, name='The Author')\n        book = author.books.create(name='The inline Book')\n        self.author_change_url = '/admin/admin_inlines/author/%i/' % author.id\n        # Get the ID of the automatically created intermediate model for thw Author-Book m2m\n        author_book_auto_m2m_intermediate = Author.books.through.objects.get(author=author, book=book)\n        self.author_book_auto_m2m_intermediate_id = author_book_auto_m2m_intermediate.pk\n\n        holder = Holder2.objects.create(dummy=13)\n        inner2 = Inner2.objects.create(dummy=42, holder=holder)\n        self.holder_change_url = '/admin/admin_inlines/holder2/%i/' % holder.id\n        self.inner2_id = inner2.id\n\n        self.assertEqual(\n            self.client.login(username='admin', password='secret'),\n            True)\n\n    def tearDown(self):\n        self.client.logout()\n\n    def test_inline_add_m2m_noperm(self):\n        response = self.client.get('/admin/admin_inlines/author/add/')\n        # No change permission on books, so no inline\n        self.assertNotContains(response, '<h2>Author-book relationships</h2>')\n        self.assertNotContains(response, 'Add another Author-Book Relationship')\n        self.assertNotContains(response, 'id=\"id_Author_books-TOTAL_FORMS\"')\n\n    def test_inline_add_fk_noperm(self):\n        response = self.client.get('/admin/admin_inlines/holder2/add/')\n        # No permissions on Inner2s, so no inline\n        self.assertNotContains(response, '<h2>Inner2s</h2>')\n        self.assertNotContains(response, 'Add another Inner2')\n        self.assertNotContains(response, 'id=\"id_inner2_set-TOTAL_FORMS\"')\n\n    def test_inline_change_m2m_noperm(self):\n        response = self.client.get(self.author_change_url)\n        # No change permission on books, so no inline\n        self.assertNotContains(response, '<h2>Author-book relationships</h2>')\n        self.assertNotContains(response, 'Add another Author-Book Relationship')\n        self.assertNotContains(response, 'id=\"id_Author_books-TOTAL_FORMS\"')\n\n    def test_inline_change_fk_noperm(self):\n        response = self.client.get(self.holder_change_url)\n        # No permissions on Inner2s, so no inline\n        self.assertNotContains(response, '<h2>Inner2s</h2>')\n        self.assertNotContains(response, 'Add another Inner2')\n        self.assertNotContains(response, 'id=\"id_inner2_set-TOTAL_FORMS\"')\n\n    def test_inline_add_m2m_add_perm(self):\n        permission = Permission.objects.get(codename='add_book', content_type=self.book_ct)\n        self.user.user_permissions.add(permission)\n        response = self.client.get('/admin/admin_inlines/author/add/')\n        # No change permission on Books, so no inline\n        self.assertNotContains(response, '<h2>Author-book relationships</h2>')\n        self.assertNotContains(response, 'Add another Author-Book Relationship')\n        self.assertNotContains(response, 'id=\"id_Author_books-TOTAL_FORMS\"')\n\n    def test_inline_add_fk_add_perm(self):\n        permission = Permission.objects.get(codename='add_inner2', content_type=self.inner_ct)\n        self.user.user_permissions.add(permission)\n        response = self.client.get('/admin/admin_inlines/holder2/add/')\n        # Add permission on inner2s, so we get the inline\n        self.assertContains(response, '<h2>Inner2s</h2>')\n        self.assertContains(response, 'Add another Inner2')\n        self.assertContains(response, '<input type=\"hidden\" id=\"id_inner2_set-TOTAL_FORMS\" '\n                            'value=\"3\" name=\"inner2_set-TOTAL_FORMS\" />', html=True)\n\n    def test_inline_change_m2m_add_perm(self):\n        permission = Permission.objects.get(codename='add_book', content_type=self.book_ct)\n        self.user.user_permissions.add(permission)\n        response = self.client.get(self.author_change_url)\n        # No change permission on books, so no inline\n        self.assertNotContains(response, '<h2>Author-book relationships</h2>')\n        self.assertNotContains(response, 'Add another Author-Book Relationship')\n        self.assertNotContains(response, 'id=\"id_Author_books-TOTAL_FORMS\"')\n        self.assertNotContains(response, 'id=\"id_Author_books-0-DELETE\"')\n\n    def test_inline_change_m2m_change_perm(self):\n        permission = Permission.objects.get(codename='change_book', content_type=self.book_ct)\n        self.user.user_permissions.add(permission)\n        response = self.client.get(self.author_change_url)\n        # We have change perm on books, so we can add/change/delete inlines\n        self.assertContains(response, '<h2>Author-book relationships</h2>')\n        self.assertContains(response, 'Add another Author-Book Relationship')\n        self.assertContains(response, '<input type=\"hidden\" id=\"id_Author_books-TOTAL_FORMS\" '\n                            'value=\"4\" name=\"Author_books-TOTAL_FORMS\" />', html=True)\n        self.assertContains(response, '<input type=\"hidden\" id=\"id_Author_books-0-id\" '\n                            'value=\"%i\" name=\"Author_books-0-id\" />' % self.author_book_auto_m2m_intermediate_id, html=True)\n        self.assertContains(response, 'id=\"id_Author_books-0-DELETE\"')\n\n    def test_inline_change_fk_add_perm(self):\n        permission = Permission.objects.get(codename='add_inner2', content_type=self.inner_ct)\n        self.user.user_permissions.add(permission)\n        response = self.client.get(self.holder_change_url)\n        # Add permission on inner2s, so we can add but not modify existing\n        self.assertContains(response, '<h2>Inner2s</h2>')\n        self.assertContains(response, 'Add another Inner2')\n        # 3 extra forms only, not the existing instance form\n        self.assertContains(response, '<input type=\"hidden\" id=\"id_inner2_set-TOTAL_FORMS\" '\n                                'value=\"3\" name=\"inner2_set-TOTAL_FORMS\" />', html=True)\n        self.assertNotContains(response, '<input type=\"hidden\" id=\"id_inner2_set-0-id\" '\n                            'value=\"%i\" name=\"inner2_set-0-id\" />' % self.inner2_id, html=True)\n\n    def test_inline_change_fk_change_perm(self):\n        permission = Permission.objects.get(codename='change_inner2', content_type=self.inner_ct)\n        self.user.user_permissions.add(permission)\n        response = self.client.get(self.holder_change_url)\n        # Change permission on inner2s, so we can change existing but not add new\n        self.assertContains(response, '<h2>Inner2s</h2>')\n        # Just the one form for existing instances\n        self.assertContains(response, '<input type=\"hidden\" id=\"id_inner2_set-TOTAL_FORMS\" '\n                                'value=\"1\" name=\"inner2_set-TOTAL_FORMS\" />', html=True)\n        self.assertContains(response, '<input type=\"hidden\" id=\"id_inner2_set-0-id\" '\n                            'value=\"%i\" name=\"inner2_set-0-id\" />' % self.inner2_id, html=True)\n        # max-num 0 means we can't add new ones\n        self.assertContains(response, '<input type=\"hidden\" id=\"id_inner2_set-MAX_NUM_FORMS\" '\n                                'value=\"0\" name=\"inner2_set-MAX_NUM_FORMS\" />', html=True)\n\n    def test_inline_change_fk_add_change_perm(self):\n        permission = Permission.objects.get(codename='add_inner2', content_type=self.inner_ct)\n        self.user.user_permissions.add(permission)\n        permission = Permission.objects.get(codename='change_inner2', content_type=self.inner_ct)\n        self.user.user_permissions.add(permission)\n        response = self.client.get(self.holder_change_url)\n        # Add/change perm, so we can add new and change existing\n        self.assertContains(response, '<h2>Inner2s</h2>')\n        # One form for existing instance and three extra for new\n        self.assertContains(response, '<input type=\"hidden\" id=\"id_inner2_set-TOTAL_FORMS\" '\n                                'value=\"4\" name=\"inner2_set-TOTAL_FORMS\" />', html=True)\n        self.assertContains(response, '<input type=\"hidden\" id=\"id_inner2_set-0-id\" '\n                            'value=\"%i\" name=\"inner2_set-0-id\" />' % self.inner2_id, html=True)\n\n    def test_inline_change_fk_change_del_perm(self):\n        permission = Permission.objects.get(codename='change_inner2', content_type=self.inner_ct)\n        self.user.user_permissions.add(permission)\n        permission = Permission.objects.get(codename='delete_inner2', content_type=self.inner_ct)\n        self.user.user_permissions.add(permission)\n        response = self.client.get(self.holder_change_url)\n        # Change/delete perm on inner2s, so we can change/delete existing\n        self.assertContains(response, '<h2>Inner2s</h2>')\n        # One form for existing instance only, no new\n        self.assertContains(response, '<input type=\"hidden\" id=\"id_inner2_set-TOTAL_FORMS\" '\n                                'value=\"1\" name=\"inner2_set-TOTAL_FORMS\" />', html=True)\n        self.assertContains(response, '<input type=\"hidden\" id=\"id_inner2_set-0-id\" '\n                            'value=\"%i\" name=\"inner2_set-0-id\" />' % self.inner2_id, html=True)\n        self.assertContains(response, 'id=\"id_inner2_set-0-DELETE\"')\n\n\n    def test_inline_change_fk_all_perms(self):\n        permission = Permission.objects.get(codename='add_inner2', content_type=self.inner_ct)\n        self.user.user_permissions.add(permission)\n        permission = Permission.objects.get(codename='change_inner2', content_type=self.inner_ct)\n        self.user.user_permissions.add(permission)\n        permission = Permission.objects.get(codename='delete_inner2', content_type=self.inner_ct)\n        self.user.user_permissions.add(permission)\n        response = self.client.get(self.holder_change_url)\n        # All perms on inner2s, so we can add/change/delete\n        self.assertContains(response, '<h2>Inner2s</h2>')\n        # One form for existing instance only, three for new\n        self.assertContains(response, '<input type=\"hidden\" id=\"id_inner2_set-TOTAL_FORMS\" '\n                                'value=\"4\" name=\"inner2_set-TOTAL_FORMS\" />', html=True)\n        self.assertContains(response, '<input type=\"hidden\" id=\"id_inner2_set-0-id\" '\n                            'value=\"%i\" name=\"inner2_set-0-id\" />' % self.inner2_id, html=True)\n        self.assertContains(response, 'id=\"id_inner2_set-0-DELETE\"')\n\n\n@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))\nclass SeleniumFirefoxTests(AdminSeleniumWebDriverTestCase):\n    webdriver_class = 'selenium.webdriver.firefox.webdriver.WebDriver'\n    fixtures = ['admin-views-users.xml']\n    urls = \"regressiontests.admin_inlines.urls\"\n\n    def test_add_stackeds(self):\n        \"\"\"\n        Ensure that the \"Add another XXX\" link correctly adds items to the\n        stacked formset.\n        \"\"\"\n        self.admin_login(username='super', password='secret')\n        self.selenium.get('%s%s' % (self.live_server_url,\n            '/admin/admin_inlines/holder4/add/'))\n\n        inline_id = '#inner4stacked_set-group'\n        rows_length = lambda: len(self.selenium.find_elements_by_css_selector(\n            '%s .dynamic-inner4stacked_set' % inline_id))\n        self.assertEqual(rows_length(), 3)\n\n        add_button = self.selenium.find_element_by_link_text(\n            'Add another Inner4 Stacked')\n        add_button.click()\n\n        self.assertEqual(rows_length(), 4)\n\n    def test_delete_stackeds(self):\n        self.admin_login(username='super', password='secret')\n        self.selenium.get('%s%s' % (self.live_server_url,\n            '/admin/admin_inlines/holder4/add/'))\n\n        inline_id = '#inner4stacked_set-group'\n        rows_length = lambda: len(self.selenium.find_elements_by_css_selector(\n            '%s .dynamic-inner4stacked_set' % inline_id))\n        self.assertEqual(rows_length(), 3)\n\n        add_button = self.selenium.find_element_by_link_text(\n            'Add another Inner4 Stacked')\n        add_button.click()\n        add_button.click()\n\n        self.assertEqual(rows_length(), 5, msg=\"sanity check\")\n        for delete_link in self.selenium.find_elements_by_css_selector(\n                '%s .inline-deletelink' % inline_id):\n            delete_link.click()\n        self.assertEqual(rows_length(), 3)\n\n    def test_add_inlines(self):\n        \"\"\"\n        Ensure that the \"Add another XXX\" link correctly adds items to the\n        inline form.\n        \"\"\"\n        from selenium.common.exceptions import TimeoutException\n        self.admin_login(username='super', password='secret')\n        self.selenium.get('%s%s' % (self.live_server_url,\n            '/admin/admin_inlines/profilecollection/add/'))\n\n        # Check that there's only one inline to start with and that it has the\n        # correct ID.\n        self.assertEqual(len(self.selenium.find_elements_by_css_selector(\n            '.dynamic-profile_set')), 1)\n        self.assertEqual(self.selenium.find_elements_by_css_selector(\n            '.dynamic-profile_set')[0].get_attribute('id'),\n            'profile_set-0')\n        self.assertEqual(len(self.selenium.find_elements_by_css_selector(\n            '.dynamic-profile_set#profile_set-0 input[name=profile_set-0-first_name]')), 1)\n        self.assertEqual(len(self.selenium.find_elements_by_css_selector(\n            '.dynamic-profile_set#profile_set-0 input[name=profile_set-0-last_name]')), 1)\n\n        # Add an inline\n        self.selenium.find_element_by_link_text('Add another Profile').click()\n\n        # Check that the inline has been added, that it has the right id, and\n        # that it contains the right fields.\n        self.assertEqual(len(self.selenium.find_elements_by_css_selector(\n            '.dynamic-profile_set')), 2)\n        self.assertEqual(self.selenium.find_elements_by_css_selector(\n            '.dynamic-profile_set')[1].get_attribute('id'), 'profile_set-1')\n        self.assertEqual(len(self.selenium.find_elements_by_css_selector(\n            '.dynamic-profile_set#profile_set-1 input[name=profile_set-1-first_name]')), 1)\n        self.assertEqual(len(self.selenium.find_elements_by_css_selector(\n            '.dynamic-profile_set#profile_set-1 input[name=profile_set-1-last_name]')), 1)\n\n        # Let's add another one to be sure\n        self.selenium.find_element_by_link_text('Add another Profile').click()\n        self.assertEqual(len(self.selenium.find_elements_by_css_selector(\n            '.dynamic-profile_set')), 3)\n        self.assertEqual(self.selenium.find_elements_by_css_selector(\n            '.dynamic-profile_set')[2].get_attribute('id'), 'profile_set-2')\n        self.assertEqual(len(self.selenium.find_elements_by_css_selector(\n            '.dynamic-profile_set#profile_set-2 input[name=profile_set-2-first_name]')), 1)\n        self.assertEqual(len(self.selenium.find_elements_by_css_selector(\n            '.dynamic-profile_set#profile_set-2 input[name=profile_set-2-last_name]')), 1)\n\n        # Enter some data and click 'Save'\n        self.selenium.find_element_by_name('profile_set-0-first_name').send_keys('0 first name 1')\n        self.selenium.find_element_by_name('profile_set-0-last_name').send_keys('0 last name 2')\n        self.selenium.find_element_by_name('profile_set-1-first_name').send_keys('1 first name 1')\n        self.selenium.find_element_by_name('profile_set-1-last_name').send_keys('1 last name 2')\n        self.selenium.find_element_by_name('profile_set-2-first_name').send_keys('2 first name 1')\n        self.selenium.find_element_by_name('profile_set-2-last_name').send_keys('2 last name 2')\n\n        self.selenium.find_element_by_xpath('//input[@value=\"Save\"]').click()\n        self.wait_page_loaded()\n\n        # Check that the objects have been created in the database\n        self.assertEqual(ProfileCollection.objects.all().count(), 1)\n        self.assertEqual(Profile.objects.all().count(), 3)\n\n    def test_delete_inlines(self):\n        self.admin_login(username='super', password='secret')\n        self.selenium.get('%s%s' % (self.live_server_url,\n            '/admin/admin_inlines/profilecollection/add/'))\n\n        # Add a few inlines\n        self.selenium.find_element_by_link_text('Add another Profile').click()\n        self.selenium.find_element_by_link_text('Add another Profile').click()\n        self.selenium.find_element_by_link_text('Add another Profile').click()\n        self.selenium.find_element_by_link_text('Add another Profile').click()\n        self.assertEqual(len(self.selenium.find_elements_by_css_selector(\n            '#profile_set-group table tr.dynamic-profile_set')), 5)\n        self.assertEqual(len(self.selenium.find_elements_by_css_selector(\n            'form#profilecollection_form tr.dynamic-profile_set#profile_set-0')), 1)\n        self.assertEqual(len(self.selenium.find_elements_by_css_selector(\n            'form#profilecollection_form tr.dynamic-profile_set#profile_set-1')), 1)\n        self.assertEqual(len(self.selenium.find_elements_by_css_selector(\n            'form#profilecollection_form tr.dynamic-profile_set#profile_set-2')), 1)\n        self.assertEqual(len(self.selenium.find_elements_by_css_selector(\n            'form#profilecollection_form tr.dynamic-profile_set#profile_set-3')), 1)\n        self.assertEqual(len(self.selenium.find_elements_by_css_selector(\n            'form#profilecollection_form tr.dynamic-profile_set#profile_set-4')), 1)\n\n        # Click on a few delete buttons\n        self.selenium.find_element_by_css_selector(\n            'form#profilecollection_form tr.dynamic-profile_set#profile_set-1 td.delete a').click()\n        self.selenium.find_element_by_css_selector(\n            'form#profilecollection_form tr.dynamic-profile_set#profile_set-2 td.delete a').click()\n        # Verify that they're gone and that the IDs have been re-sequenced\n        self.assertEqual(len(self.selenium.find_elements_by_css_selector(\n            '#profile_set-group table tr.dynamic-profile_set')), 3)\n        self.assertEqual(len(self.selenium.find_elements_by_css_selector(\n            'form#profilecollection_form tr.dynamic-profile_set#profile_set-0')), 1)\n        self.assertEqual(len(self.selenium.find_elements_by_css_selector(\n            'form#profilecollection_form tr.dynamic-profile_set#profile_set-1')), 1)\n        self.assertEqual(len(self.selenium.find_elements_by_css_selector(\n            'form#profilecollection_form tr.dynamic-profile_set#profile_set-2')), 1)\n\n    def test_alternating_rows(self):\n        self.admin_login(username='super', password='secret')\n        self.selenium.get('%s%s' % (self.live_server_url,\n            '/admin/admin_inlines/profilecollection/add/'))\n\n        # Add a few inlines\n        self.selenium.find_element_by_link_text('Add another Profile').click()\n        self.selenium.find_element_by_link_text('Add another Profile').click()\n\n        row_selector = 'form#profilecollection_form tr.dynamic-profile_set'\n        self.assertEqual(len(self.selenium.find_elements_by_css_selector(\n            \"%s.row1\" % row_selector)), 2, msg=\"Expect two row1 styled rows\")\n        self.assertEqual(len(self.selenium.find_elements_by_css_selector(\n            \"%s.row2\" % row_selector)), 1, msg=\"Expect one row2 styled row\")\n\n\nclass SeleniumChromeTests(SeleniumFirefoxTests):\n    webdriver_class = 'selenium.webdriver.chrome.webdriver.WebDriver'\n\nclass SeleniumIETests(SeleniumFirefoxTests):\n    webdriver_class = 'selenium.webdriver.ie.webdriver.WebDriver'\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_inlines/urls.py",
    "content": "from __future__ import absolute_import\n\nfrom django.conf.urls import patterns, include\n\nfrom . import admin\n\n\nurlpatterns = patterns('',\n    (r'^admin/', include(admin.site.urls)),\n)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_ordering/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_ordering/models.py",
    "content": "# coding: utf-8\nfrom django.contrib import admin\nfrom django.db import models\n\n\nclass Band(models.Model):\n    name = models.CharField(max_length=100)\n    bio = models.TextField()\n    rank = models.IntegerField()\n\n    class Meta:\n        ordering = ('name',)\n\nclass Song(models.Model):\n    band = models.ForeignKey(Band)\n    name = models.CharField(max_length=100)\n    duration = models.IntegerField()\n\n    class Meta:\n        ordering = ('name',)\n\nclass SongInlineDefaultOrdering(admin.StackedInline):\n    model = Song\n\nclass SongInlineNewOrdering(admin.StackedInline):\n    model = Song\n    ordering = ('duration', )\n\nclass DynOrderingBandAdmin(admin.ModelAdmin):\n\n    def get_ordering(self, request):\n        if request.user.is_superuser:\n            return ['rank']\n        else:\n            return ['name']\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_ordering/tests.py",
    "content": "from __future__ import absolute_import, unicode_literals\n\nfrom django.test import TestCase, RequestFactory\nfrom django.contrib.admin.options import ModelAdmin\nfrom django.contrib.auth.models import User\n\nfrom .models import (Band, Song, SongInlineDefaultOrdering,\n    SongInlineNewOrdering, DynOrderingBandAdmin)\n\n\nclass MockRequest(object):\n    pass\n\nclass MockSuperUser(object):\n    def has_perm(self, perm):\n        return True\n\nrequest = MockRequest()\nrequest.user = MockSuperUser()\n\n\nclass TestAdminOrdering(TestCase):\n    \"\"\"\n    Let's make sure that ModelAdmin.queryset uses the ordering we define in\n    ModelAdmin rather that ordering defined in the model's inner Meta\n    class.\n    \"\"\"\n\n    def setUp(self):\n        self.request_factory = RequestFactory()\n        b1 = Band(name='Aerosmith', bio='', rank=3)\n        b1.save()\n        b2 = Band(name='Radiohead', bio='', rank=1)\n        b2.save()\n        b3 = Band(name='Van Halen', bio='', rank=2)\n        b3.save()\n\n    def test_default_ordering(self):\n        \"\"\"\n        The default ordering should be by name, as specified in the inner Meta\n        class.\n        \"\"\"\n        ma = ModelAdmin(Band, None)\n        names = [b.name for b in ma.queryset(request)]\n        self.assertEqual(['Aerosmith', 'Radiohead', 'Van Halen'], names)\n\n    def test_specified_ordering(self):\n        \"\"\"\n        Let's use a custom ModelAdmin that changes the ordering, and make sure\n        it actually changes.\n        \"\"\"\n        class BandAdmin(ModelAdmin):\n            ordering = ('rank',) # default ordering is ('name',)\n        ma = BandAdmin(Band, None)\n        names = [b.name for b in ma.queryset(request)]\n        self.assertEqual(['Radiohead', 'Van Halen', 'Aerosmith'], names)\n\n    def test_dynamic_ordering(self):\n        \"\"\"\n        Let's use a custom ModelAdmin that changes the ordering dinamically.\n        \"\"\"\n        super_user = User.objects.create(username='admin', is_superuser=True)\n        other_user = User.objects.create(username='other')\n        request = self.request_factory.get('/')\n        request.user = super_user\n        ma = DynOrderingBandAdmin(Band, None)\n        names = [b.name for b in ma.queryset(request)]\n        self.assertEqual(['Radiohead', 'Van Halen', 'Aerosmith'], names)\n        request.user = other_user\n        names = [b.name for b in ma.queryset(request)]\n        self.assertEqual(['Aerosmith', 'Radiohead', 'Van Halen'], names)\n\n\nclass TestInlineModelAdminOrdering(TestCase):\n    \"\"\"\n    Let's make sure that InlineModelAdmin.queryset uses the ordering we define\n    in InlineModelAdmin.\n    \"\"\"\n\n    def setUp(self):\n        b = Band(name='Aerosmith', bio='', rank=3)\n        b.save()\n        self.b = b\n        s1 = Song(band=b, name='Pink', duration=235)\n        s1.save()\n        s2 = Song(band=b, name='Dude (Looks Like a Lady)', duration=264)\n        s2.save()\n        s3 = Song(band=b, name='Jaded', duration=214)\n        s3.save()\n\n    def test_default_ordering(self):\n        \"\"\"\n        The default ordering should be by name, as specified in the inner Meta\n        class.\n        \"\"\"\n        inline = SongInlineDefaultOrdering(self.b, None)\n        names = [s.name for s in inline.queryset(request)]\n        self.assertEqual(['Dude (Looks Like a Lady)', 'Jaded', 'Pink'], names)\n\n    def test_specified_ordering(self):\n        \"\"\"\n        Let's check with ordering set to something different than the default.\n        \"\"\"\n        inline = SongInlineNewOrdering(self.b, None)\n        names = [s.name for s in inline.queryset(request)]\n        self.assertEqual(['Jaded', 'Pink', 'Dude (Looks Like a Lady)'], names)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_registration/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_registration/models.py",
    "content": "\"\"\"\nTests for various ways of registering models with the admin site.\n\"\"\"\n\nfrom django.db import models\n\n\nclass Person(models.Model):\n    name = models.CharField(max_length=200)\n\nclass Location(models.Model):\n    class Meta:\n        abstract = True\n\nclass Place(Location):\n    name = models.CharField(max_length=200)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_registration/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom django.contrib import admin\nfrom django.core.exceptions import ImproperlyConfigured\nfrom django.test import TestCase\n\nfrom .models import Person, Place, Location\n\n\nclass NameAdmin(admin.ModelAdmin):\n    list_display = ['name']\n    save_on_top = True\n\nclass TestRegistration(TestCase):\n    def setUp(self):\n        self.site = admin.AdminSite()\n\n    def test_bare_registration(self):\n        self.site.register(Person)\n        self.assertTrue(\n            isinstance(self.site._registry[Person], admin.options.ModelAdmin)\n        )\n\n    def test_registration_with_model_admin(self):\n        self.site.register(Person, NameAdmin)\n        self.assertTrue(\n            isinstance(self.site._registry[Person], NameAdmin)\n        )\n\n    def test_prevent_double_registration(self):\n        self.site.register(Person)\n        self.assertRaises(admin.sites.AlreadyRegistered,\n                          self.site.register,\n                          Person)\n\n    def test_registration_with_star_star_options(self):\n        self.site.register(Person, search_fields=['name'])\n        self.assertEqual(self.site._registry[Person].search_fields, ['name'])\n\n    def test_star_star_overrides(self):\n        self.site.register(Person, NameAdmin,\n                           search_fields=[\"name\"], list_display=['__str__'])\n        self.assertEqual(self.site._registry[Person].search_fields, ['name'])\n        self.assertEqual(self.site._registry[Person].list_display,\n                         ['__str__'])\n        self.assertTrue(self.site._registry[Person].save_on_top)\n\n    def test_iterable_registration(self):\n        self.site.register([Person, Place], search_fields=['name'])\n        self.assertTrue(\n            isinstance(self.site._registry[Person], admin.options.ModelAdmin)\n        )\n        self.assertEqual(self.site._registry[Person].search_fields, ['name'])\n        self.assertTrue(\n            isinstance(self.site._registry[Place], admin.options.ModelAdmin)\n        )\n        self.assertEqual(self.site._registry[Place].search_fields, ['name'])\n\n    def test_abstract_model(self):\n        \"\"\"\n        Exception is raised when trying to register an abstract model.\n        Refs #12004.\n        \"\"\"\n        self.assertRaises(ImproperlyConfigured, self.site.register, Location)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_scripts/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_scripts/app_with_import/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_scripts/app_with_import/models.py",
    "content": "from django.db import models\nfrom django.contrib.comments.models import Comment\n\n\n# Regression for #13368. This is an example of a model\n# that imports a class that has an abstract base class.\nclass CommentScore(models.Model):\n    comment = models.OneToOneField(Comment, primary_key=True)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_scripts/broken_app/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_scripts/broken_app/models.py",
    "content": "from django.db import modelz\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_scripts/complex_app/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_scripts/complex_app/admin/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_scripts/complex_app/admin/foo.py",
    "content": "from __future__ import absolute_import\n\nfrom django.contrib import admin\n\nfrom ..models.foo import Foo\n\n\nadmin.site.register(Foo)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_scripts/complex_app/models/__init__.py",
    "content": "from .bar import Bar\nfrom .foo import Foo\n\n__all__ = ['Foo', 'Bar']\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_scripts/complex_app/models/bar.py",
    "content": "from __future__ import absolute_import\n\nfrom django.db import models\n\nfrom ..admin import foo\n\n\nclass Bar(models.Model):\n    name = models.CharField(max_length=5)\n    class Meta:\n        app_label = 'complex_app'\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_scripts/complex_app/models/foo.py",
    "content": "from django.db import models\n\n\nclass Foo(models.Model):\n    name = models.CharField(max_length=5)\n    class Meta:\n        app_label = 'complex_app'\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_scripts/custom_templates/app_template/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_scripts/custom_templates/app_template/api.py",
    "content": "# your API code"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_scripts/custom_templates/app_template/models.py",
    "content": "# whatever"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_scripts/custom_templates/project_template/additional_dir/Procfile",
    "content": "# some file for {{ project_name }} test project"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_scripts/custom_templates/project_template/additional_dir/additional_file.py",
    "content": "# some file for {{ project_name }} test project"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_scripts/custom_templates/project_template/additional_dir/extra.py",
    "content": "# this file uses the {{ extra }} variable\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_scripts/custom_templates/project_template/additional_dir/requirements.txt",
    "content": "# some file for {{ project_name }} test project"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_scripts/custom_templates/project_template/manage.py",
    "content": "# The manage.py of the {{ project_name }} test project\n\n# template context:\nproject_name = '{{ project_name }}'\nproject_directory = '{{ project_directory }}'\nsecret_key = '{{ secret_key }}'\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_scripts/custom_templates/project_template/project_name/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_scripts/custom_templates/project_template/project_name/settings.py",
    "content": "# Django settings for {{ project_name }} test project.\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_scripts/custom_templates/project_template/ticket-18091-non-ascii-template.txt",
    "content": "Some non-ASCII text for testing ticket #18091:\nüäö €\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_scripts/management/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_scripts/management/commands/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_scripts/management/commands/app_command.py",
    "content": "from django.core.management.base import AppCommand\n\n\nclass Command(AppCommand):\n    help = 'Test Application-based commands'\n    requires_model_validation = False\n    args = '[appname ...]'\n\n    def handle_app(self, app, **options):\n        print('EXECUTE:AppCommand app=%s, options=%s' % (app, sorted(options.items())))\n\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_scripts/management/commands/base_command.py",
    "content": "from optparse import make_option\n\nfrom django.core.management.base import BaseCommand\n\n\nclass Command(BaseCommand):\n    option_list = BaseCommand.option_list + (\n        make_option('--option_a','-a', action='store', dest='option_a', default='1'),\n        make_option('--option_b','-b', action='store', dest='option_b', default='2'),\n        make_option('--option_c','-c', action='store', dest='option_c', default='3'),\n    )\n    help = 'Test basic commands'\n    requires_model_validation = False\n    args = '[labels ...]'\n\n    def handle(self, *labels, **options):\n        print('EXECUTE:BaseCommand labels=%s, options=%s' % (labels, sorted(options.items())))\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_scripts/management/commands/custom_startproject.py",
    "content": "from optparse import make_option\n\nfrom django.core.management.commands.startproject import Command as BaseCommand\n\n\nclass Command(BaseCommand):\n    option_list = BaseCommand.option_list + (\n        make_option('--extra',\n                    action='store', dest='extra',\n                    help='An arbitrary extra value passed to the context'),\n        )\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_scripts/management/commands/label_command.py",
    "content": "from django.core.management.base import LabelCommand\n\n\nclass Command(LabelCommand):\n    help = \"Test Label-based commands\"\n    requires_model_validation = False\n    args = '<label>'\n\n    def handle_label(self, label, **options):\n        print('EXECUTE:LabelCommand label=%s, options=%s' % (label, sorted(options.items())))\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_scripts/management/commands/noargs_command.py",
    "content": "from django.core.management.base import NoArgsCommand\n\n\nclass Command(NoArgsCommand):\n    help = \"Test No-args commands\"\n    requires_model_validation = False\n\n\n    def handle_noargs(self, **options):\n        print('EXECUTE:NoArgsCommand options=%s' % sorted(options.items()))\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_scripts/models.py",
    "content": "from django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n@python_2_unicode_compatible\nclass Article(models.Model):\n    headline = models.CharField(max_length=100, default='Default headline')\n    pub_date = models.DateTimeField()\n\n    def __str__(self):\n        return self.headline\n\n    class Meta:\n        ordering = ('-pub_date', 'headline')\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_scripts/simple_app/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_scripts/simple_app/models.py",
    "content": "from __future__ import absolute_import\n\nfrom ..complex_app.models.bar import Bar\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_scripts/tests.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nA series of tests to establish that the command-line managment tools work as\nadvertised - especially with regards to the handling of the DJANGO_SETTINGS_MODULE\nand default settings.py files.\n\"\"\"\nfrom __future__ import unicode_literals\n\nimport os\nimport re\nimport shutil\nimport socket\nimport subprocess\nimport sys\nimport codecs\n\nfrom django import conf, bin, get_version\nfrom django.conf import settings\nfrom django.core.management import BaseCommand\nfrom django.db import connection\nfrom django.test.simple import DjangoTestSuiteRunner\nfrom django.utils import unittest\nfrom django.utils.encoding import force_str, force_text\nfrom django.utils._os import upath\nfrom django.utils.six import StringIO\nfrom django.test import LiveServerTestCase\n\ntest_dir = os.path.dirname(os.path.dirname(upath(__file__)))\n\nclass AdminScriptTestCase(unittest.TestCase):\n    def write_settings(self, filename, apps=None, is_dir=False, sdict=None):\n        test_dir = os.path.dirname(os.path.dirname(upath(__file__)))\n        if is_dir:\n            settings_dir = os.path.join(test_dir, filename)\n            os.mkdir(settings_dir)\n            settings_file_path = os.path.join(settings_dir, '__init__.py')\n        else:\n            settings_file_path = os.path.join(test_dir, filename)\n\n        with open(settings_file_path, 'w') as settings_file:\n            settings_file.write('# Settings file automatically generated by regressiontests.admin_scripts test case\\n')\n            exports = [\n                'DATABASES',\n                'ROOT_URLCONF',\n                'SECRET_KEY',\n            ]\n            for s in exports:\n                if hasattr(settings, s):\n                    o = getattr(settings, s)\n                    if not isinstance(o, dict):\n                        o = \"'%s'\" % o\n                    settings_file.write(\"%s = %s\\n\" % (s, o))\n\n            if apps is None:\n                apps = ['django.contrib.auth', 'django.contrib.contenttypes', 'regressiontests.admin_scripts']\n\n            settings_file.write(\"INSTALLED_APPS = %s\\n\" % apps)\n\n            if sdict:\n                for k, v in sdict.items():\n                    settings_file.write(\"%s = %s\\n\" % (k, v))\n\n    def remove_settings(self, filename, is_dir=False):\n        full_name = os.path.join(test_dir, filename)\n        if is_dir:\n            shutil.rmtree(full_name)\n        else:\n            os.remove(full_name)\n\n        # Also try to remove the compiled file; if it exists, it could\n        # mess up later tests that depend upon the .py file not existing\n        try:\n            if sys.platform.startswith('java'):\n                # Jython produces module$py.class files\n                os.remove(re.sub(r'\\.py$', '$py.class', full_name))\n            else:\n                # CPython produces module.pyc files\n                os.remove(full_name + 'c')\n        except OSError:\n            pass\n        # Also remove a __pycache__ directory, if it exists\n        cache_name = os.path.join(test_dir, '__pycache__')\n        if os.path.isdir(cache_name):\n            shutil.rmtree(cache_name)\n\n    def _ext_backend_paths(self):\n        \"\"\"\n        Returns the paths for any external backend packages.\n        \"\"\"\n        paths = []\n        first_package_re = re.compile(r'(^[^\\.]+)\\.')\n        for backend in settings.DATABASES.values():\n            result = first_package_re.findall(backend['ENGINE'])\n            if result and result != 'django':\n                backend_pkg = __import__(result[0])\n                backend_dir = os.path.dirname(backend_pkg.__file__)\n                paths.append(os.path.dirname(backend_dir))\n        return paths\n\n    def run_test(self, script, args, settings_file=None, apps=None):\n        test_dir = os.path.dirname(os.path.dirname(__file__))\n        project_dir = os.path.dirname(test_dir)\n        base_dir = os.path.dirname(project_dir)\n        ext_backend_base_dirs = self._ext_backend_paths()\n\n        # Remember the old environment\n        old_django_settings_module = os.environ.get('DJANGO_SETTINGS_MODULE', None)\n        if sys.platform.startswith('java'):\n            python_path_var_name = 'JYTHONPATH'\n        else:\n            python_path_var_name = 'PYTHONPATH'\n\n        old_python_path = os.environ.get(python_path_var_name, None)\n        old_cwd = os.getcwd()\n\n        # Set the test environment\n        if settings_file:\n            os.environ['DJANGO_SETTINGS_MODULE'] = settings_file\n        elif 'DJANGO_SETTINGS_MODULE' in os.environ:\n            del os.environ['DJANGO_SETTINGS_MODULE']\n        python_path = [project_dir, base_dir]\n        python_path.extend(ext_backend_base_dirs)\n        os.environ[python_path_var_name] = os.pathsep.join(python_path)\n\n        # Move to the test directory and run\n        os.chdir(test_dir)\n        out, err = subprocess.Popen([sys.executable, script] + args,\n                stdout=subprocess.PIPE, stderr=subprocess.PIPE,\n                universal_newlines=True).communicate()\n\n        # Restore the old environment\n        if old_django_settings_module:\n            os.environ['DJANGO_SETTINGS_MODULE'] = old_django_settings_module\n        if old_python_path:\n            os.environ[python_path_var_name] = old_python_path\n        # Move back to the old working directory\n        os.chdir(old_cwd)\n\n        return out, err\n\n    def run_django_admin(self, args, settings_file=None):\n        bin_dir = os.path.abspath(os.path.dirname(upath(bin.__file__)))\n        return self.run_test(os.path.join(bin_dir, 'django-admin.py'), args, settings_file)\n\n    def run_manage(self, args, settings_file=None):\n        def safe_remove(path):\n            try:\n                os.remove(path)\n            except OSError:\n                pass\n\n        conf_dir = os.path.dirname(upath(conf.__file__))\n        template_manage_py = os.path.join(conf_dir, 'project_template', 'manage.py')\n\n        test_manage_py = os.path.join(test_dir, 'manage.py')\n        shutil.copyfile(template_manage_py, test_manage_py)\n\n        with open(test_manage_py, 'r') as fp:\n            manage_py_contents = fp.read()\n        manage_py_contents = manage_py_contents.replace(\n            \"{{ project_name }}\", \"regressiontests\")\n        with open(test_manage_py, 'w') as fp:\n            fp.write(manage_py_contents)\n        self.addCleanup(safe_remove, test_manage_py)\n\n        return self.run_test('./manage.py', args, settings_file)\n\n    def assertNoOutput(self, stream):\n        \"Utility assertion: assert that the given stream is empty\"\n        self.assertEqual(len(stream), 0, \"Stream should be empty: actually contains '%s'\" % stream)\n\n    def assertOutput(self, stream, msg):\n        \"Utility assertion: assert that the given message exists in the output\"\n        stream = force_text(stream)\n        self.assertTrue(msg in stream, \"'%s' does not match actual output text '%s'\" % (msg, stream))\n\n    def assertNotInOutput(self, stream, msg):\n        \"Utility assertion: assert that the given message doesn't exist in the output\"\n        stream = force_text(stream)\n        self.assertFalse(msg in stream, \"'%s' matches actual output text '%s'\" % (msg, stream))\n\n##########################################################################\n# DJANGO ADMIN TESTS\n# This first series of test classes checks the environment processing\n# of the django-admin.py script\n##########################################################################\n\n\nclass DjangoAdminNoSettings(AdminScriptTestCase):\n    \"A series of tests for django-admin.py when there is no settings.py file.\"\n\n    def test_builtin_command(self):\n        \"no settings: django-admin builtin commands fail with an error when no settings provided\"\n        args = ['sqlall', 'admin_scripts']\n        out, err = self.run_django_admin(args)\n        self.assertNoOutput(out)\n        self.assertOutput(err, 'settings are not configured')\n\n    def test_builtin_with_bad_settings(self):\n        \"no settings: django-admin builtin commands fail if settings file (from argument) doesn't exist\"\n        args = ['sqlall', '--settings=bad_settings', 'admin_scripts']\n        out, err = self.run_django_admin(args)\n        self.assertNoOutput(out)\n        self.assertOutput(err, \"Could not import settings 'bad_settings'\")\n\n    def test_builtin_with_bad_environment(self):\n        \"no settings: django-admin builtin commands fail if settings file (from environment) doesn't exist\"\n        args = ['sqlall', 'admin_scripts']\n        out, err = self.run_django_admin(args, 'bad_settings')\n        self.assertNoOutput(out)\n        self.assertOutput(err, \"Could not import settings 'bad_settings'\")\n\n\nclass DjangoAdminDefaultSettings(AdminScriptTestCase):\n    \"\"\"A series of tests for django-admin.py when using a settings.py file that\n    contains the test application.\n    \"\"\"\n    def setUp(self):\n        self.write_settings('settings.py')\n\n    def tearDown(self):\n        self.remove_settings('settings.py')\n\n    def test_builtin_command(self):\n        \"default: django-admin builtin commands fail with an error when no settings provided\"\n        args = ['sqlall', 'admin_scripts']\n        out, err = self.run_django_admin(args)\n        self.assertNoOutput(out)\n        self.assertOutput(err, 'settings are not configured')\n\n    def test_builtin_with_settings(self):\n        \"default: django-admin builtin commands succeed if settings are provided as argument\"\n        args = ['sqlall', '--settings=regressiontests.settings', 'admin_scripts']\n        out, err = self.run_django_admin(args)\n        self.assertNoOutput(err)\n        self.assertOutput(out, 'CREATE TABLE')\n\n    def test_builtin_with_environment(self):\n        \"default: django-admin builtin commands succeed if settings are provided in the environment\"\n        args = ['sqlall', 'admin_scripts']\n        out, err = self.run_django_admin(args, 'regressiontests.settings')\n        self.assertNoOutput(err)\n        self.assertOutput(out, 'CREATE TABLE')\n\n    def test_builtin_with_bad_settings(self):\n        \"default: django-admin builtin commands fail if settings file (from argument) doesn't exist\"\n        args = ['sqlall', '--settings=bad_settings', 'admin_scripts']\n        out, err = self.run_django_admin(args)\n        self.assertNoOutput(out)\n        self.assertOutput(err, \"Could not import settings 'bad_settings'\")\n\n    def test_builtin_with_bad_environment(self):\n        \"default: django-admin builtin commands fail if settings file (from environment) doesn't exist\"\n        args = ['sqlall', 'admin_scripts']\n        out, err = self.run_django_admin(args, 'bad_settings')\n        self.assertNoOutput(out)\n        self.assertOutput(err, \"Could not import settings 'bad_settings'\")\n\n    def test_custom_command(self):\n        \"default: django-admin can't execute user commands if it isn't provided settings\"\n        args = ['noargs_command']\n        out, err = self.run_django_admin(args)\n        self.assertNoOutput(out)\n        self.assertOutput(err, \"Unknown command: 'noargs_command'\")\n\n    def test_custom_command_with_settings(self):\n        \"default: django-admin can execute user commands if settings are provided as argument\"\n        args = ['noargs_command', '--settings=regressiontests.settings']\n        out, err = self.run_django_admin(args)\n        self.assertNoOutput(err)\n        self.assertOutput(out, \"EXECUTE:NoArgsCommand\")\n\n    def test_custom_command_with_environment(self):\n        \"default: django-admin can execute user commands if settings are provided in environment\"\n        args = ['noargs_command']\n        out, err = self.run_django_admin(args, 'regressiontests.settings')\n        self.assertNoOutput(err)\n        self.assertOutput(out, \"EXECUTE:NoArgsCommand\")\n\nclass DjangoAdminFullPathDefaultSettings(AdminScriptTestCase):\n    \"\"\"A series of tests for django-admin.py when using a settings.py file that\n    contains the test application specified using a full path.\n    \"\"\"\n    def setUp(self):\n        self.write_settings('settings.py', ['django.contrib.auth', 'django.contrib.contenttypes', 'regressiontests.admin_scripts'])\n\n    def tearDown(self):\n        self.remove_settings('settings.py')\n\n    def test_builtin_command(self):\n        \"fulldefault: django-admin builtin commands fail with an error when no settings provided\"\n        args = ['sqlall', 'admin_scripts']\n        out, err = self.run_django_admin(args)\n        self.assertNoOutput(out)\n        self.assertOutput(err, 'settings are not configured')\n\n    def test_builtin_with_settings(self):\n        \"fulldefault: django-admin builtin commands succeed if a settings file is provided\"\n        args = ['sqlall', '--settings=regressiontests.settings', 'admin_scripts']\n        out, err = self.run_django_admin(args)\n        self.assertNoOutput(err)\n        self.assertOutput(out, 'CREATE TABLE')\n\n    def test_builtin_with_environment(self):\n        \"fulldefault: django-admin builtin commands succeed if the environment contains settings\"\n        args = ['sqlall', 'admin_scripts']\n        out, err = self.run_django_admin(args, 'regressiontests.settings')\n        self.assertNoOutput(err)\n        self.assertOutput(out, 'CREATE TABLE')\n\n    def test_builtin_with_bad_settings(self):\n        \"fulldefault: django-admin builtin commands fail if settings file (from argument) doesn't exist\"\n        args = ['sqlall', '--settings=bad_settings', 'admin_scripts']\n        out, err = self.run_django_admin(args)\n        self.assertNoOutput(out)\n        self.assertOutput(err, \"Could not import settings 'bad_settings'\")\n\n    def test_builtin_with_bad_environment(self):\n        \"fulldefault: django-admin builtin commands fail if settings file (from environment) doesn't exist\"\n        args = ['sqlall', 'admin_scripts']\n        out, err = self.run_django_admin(args, 'bad_settings')\n        self.assertNoOutput(out)\n        self.assertOutput(err, \"Could not import settings 'bad_settings'\")\n\n    def test_custom_command(self):\n        \"fulldefault: django-admin can't execute user commands unless settings are provided\"\n        args = ['noargs_command']\n        out, err = self.run_django_admin(args)\n        self.assertNoOutput(out)\n        self.assertOutput(err, \"Unknown command: 'noargs_command'\")\n\n    def test_custom_command_with_settings(self):\n        \"fulldefault: django-admin can execute user commands if settings are provided as argument\"\n        args = ['noargs_command', '--settings=regressiontests.settings']\n        out, err = self.run_django_admin(args)\n        self.assertNoOutput(err)\n        self.assertOutput(out, \"EXECUTE:NoArgsCommand\")\n\n    def test_custom_command_with_environment(self):\n        \"fulldefault: django-admin can execute user commands if settings are provided in environment\"\n        args = ['noargs_command']\n        out, err = self.run_django_admin(args, 'regressiontests.settings')\n        self.assertNoOutput(err)\n        self.assertOutput(out, \"EXECUTE:NoArgsCommand\")\n\nclass DjangoAdminMinimalSettings(AdminScriptTestCase):\n    \"\"\"A series of tests for django-admin.py when using a settings.py file that\n    doesn't contain the test application.\n    \"\"\"\n    def setUp(self):\n        self.write_settings('settings.py', apps=['django.contrib.auth', 'django.contrib.contenttypes'])\n\n    def tearDown(self):\n        self.remove_settings('settings.py')\n\n    def test_builtin_command(self):\n        \"minimal: django-admin builtin commands fail with an error when no settings provided\"\n        args = ['sqlall', 'admin_scripts']\n        out, err = self.run_django_admin(args)\n        self.assertNoOutput(out)\n        self.assertOutput(err, 'settings are not configured')\n\n    def test_builtin_with_settings(self):\n        \"minimal: django-admin builtin commands fail if settings are provided as argument\"\n        args = ['sqlall', '--settings=regressiontests.settings', 'admin_scripts']\n        out, err = self.run_django_admin(args)\n        self.assertNoOutput(out)\n        self.assertOutput(err, 'App with label admin_scripts could not be found')\n\n    def test_builtin_with_environment(self):\n        \"minimal: django-admin builtin commands fail if settings are provided in the environment\"\n        args = ['sqlall', 'admin_scripts']\n        out, err = self.run_django_admin(args, 'regressiontests.settings')\n        self.assertNoOutput(out)\n        self.assertOutput(err, 'App with label admin_scripts could not be found')\n\n    def test_builtin_with_bad_settings(self):\n        \"minimal: django-admin builtin commands fail if settings file (from argument) doesn't exist\"\n        args = ['sqlall', '--settings=bad_settings', 'admin_scripts']\n        out, err = self.run_django_admin(args)\n        self.assertNoOutput(out)\n        self.assertOutput(err, \"Could not import settings 'bad_settings'\")\n\n    def test_builtin_with_bad_environment(self):\n        \"minimal: django-admin builtin commands fail if settings file (from environment) doesn't exist\"\n        args = ['sqlall', 'admin_scripts']\n        out, err = self.run_django_admin(args, 'bad_settings')\n        self.assertNoOutput(out)\n        self.assertOutput(err, \"Could not import settings 'bad_settings'\")\n\n    def test_custom_command(self):\n        \"minimal: django-admin can't execute user commands unless settings are provided\"\n        args = ['noargs_command']\n        out, err = self.run_django_admin(args)\n        self.assertNoOutput(out)\n        self.assertOutput(err, \"Unknown command: 'noargs_command'\")\n\n    def test_custom_command_with_settings(self):\n        \"minimal: django-admin can't execute user commands, even if settings are provided as argument\"\n        args = ['noargs_command', '--settings=regressiontests.settings']\n        out, err = self.run_django_admin(args)\n        self.assertNoOutput(out)\n        self.assertOutput(err, \"Unknown command: 'noargs_command'\")\n\n    def test_custom_command_with_environment(self):\n        \"minimal: django-admin can't execute user commands, even if settings are provided in environment\"\n        args = ['noargs_command']\n        out, err = self.run_django_admin(args, 'regressiontests.settings')\n        self.assertNoOutput(out)\n        self.assertOutput(err, \"Unknown command: 'noargs_command'\")\n\nclass DjangoAdminAlternateSettings(AdminScriptTestCase):\n    \"\"\"A series of tests for django-admin.py when using a settings file\n    with a name other than 'settings.py'.\n    \"\"\"\n    def setUp(self):\n        self.write_settings('alternate_settings.py')\n\n    def tearDown(self):\n        self.remove_settings('alternate_settings.py')\n\n    def test_builtin_command(self):\n        \"alternate: django-admin builtin commands fail with an error when no settings provided\"\n        args = ['sqlall', 'admin_scripts']\n        out, err = self.run_django_admin(args)\n        self.assertNoOutput(out)\n        self.assertOutput(err, 'settings are not configured')\n\n    def test_builtin_with_settings(self):\n        \"alternate: django-admin builtin commands succeed if settings are provided as argument\"\n        args = ['sqlall', '--settings=regressiontests.alternate_settings', 'admin_scripts']\n        out, err = self.run_django_admin(args)\n        self.assertNoOutput(err)\n        self.assertOutput(out, 'CREATE TABLE')\n\n    def test_builtin_with_environment(self):\n        \"alternate: django-admin builtin commands succeed if settings are provided in the environment\"\n        args = ['sqlall', 'admin_scripts']\n        out, err = self.run_django_admin(args, 'regressiontests.alternate_settings')\n        self.assertNoOutput(err)\n        self.assertOutput(out, 'CREATE TABLE')\n\n    def test_builtin_with_bad_settings(self):\n        \"alternate: django-admin builtin commands fail if settings file (from argument) doesn't exist\"\n        args = ['sqlall', '--settings=bad_settings', 'admin_scripts']\n        out, err = self.run_django_admin(args)\n        self.assertNoOutput(out)\n        self.assertOutput(err, \"Could not import settings 'bad_settings'\")\n\n    def test_builtin_with_bad_environment(self):\n        \"alternate: django-admin builtin commands fail if settings file (from environment) doesn't exist\"\n        args = ['sqlall', 'admin_scripts']\n        out, err = self.run_django_admin(args, 'bad_settings')\n        self.assertNoOutput(out)\n        self.assertOutput(err, \"Could not import settings 'bad_settings'\")\n\n    def test_custom_command(self):\n        \"alternate: django-admin can't execute user commands unless settings are provided\"\n        args = ['noargs_command']\n        out, err = self.run_django_admin(args)\n        self.assertNoOutput(out)\n        self.assertOutput(err, \"Unknown command: 'noargs_command'\")\n\n    def test_custom_command_with_settings(self):\n        \"alternate: django-admin can execute user commands if settings are provided as argument\"\n        args = ['noargs_command', '--settings=regressiontests.alternate_settings']\n        out, err = self.run_django_admin(args)\n        self.assertNoOutput(err)\n        self.assertOutput(out, \"EXECUTE:NoArgsCommand\")\n\n    def test_custom_command_with_environment(self):\n        \"alternate: django-admin can execute user commands if settings are provided in environment\"\n        args = ['noargs_command']\n        out, err = self.run_django_admin(args, 'regressiontests.alternate_settings')\n        self.assertNoOutput(err)\n        self.assertOutput(out, \"EXECUTE:NoArgsCommand\")\n\n\nclass DjangoAdminMultipleSettings(AdminScriptTestCase):\n    \"\"\"A series of tests for django-admin.py when multiple settings files\n    (including the default 'settings.py') are available. The default settings\n    file is insufficient for performing the operations described, so the\n    alternate settings must be used by the running script.\n    \"\"\"\n    def setUp(self):\n        self.write_settings('settings.py', apps=['django.contrib.auth', 'django.contrib.contenttypes'])\n        self.write_settings('alternate_settings.py')\n\n    def tearDown(self):\n        self.remove_settings('settings.py')\n        self.remove_settings('alternate_settings.py')\n\n    def test_builtin_command(self):\n        \"alternate: django-admin builtin commands fail with an error when no settings provided\"\n        args = ['sqlall', 'admin_scripts']\n        out, err = self.run_django_admin(args)\n        self.assertNoOutput(out)\n        self.assertOutput(err, 'settings are not configured')\n\n    def test_builtin_with_settings(self):\n        \"alternate: django-admin builtin commands succeed if settings are provided as argument\"\n        args = ['sqlall', '--settings=regressiontests.alternate_settings', 'admin_scripts']\n        out, err = self.run_django_admin(args)\n        self.assertNoOutput(err)\n        self.assertOutput(out, 'CREATE TABLE')\n\n    def test_builtin_with_environment(self):\n        \"alternate: django-admin builtin commands succeed if settings are provided in the environment\"\n        args = ['sqlall', 'admin_scripts']\n        out, err = self.run_django_admin(args, 'regressiontests.alternate_settings')\n        self.assertNoOutput(err)\n        self.assertOutput(out, 'CREATE TABLE')\n\n    def test_builtin_with_bad_settings(self):\n        \"alternate: django-admin builtin commands fail if settings file (from argument) doesn't exist\"\n        args = ['sqlall', '--settings=bad_settings', 'admin_scripts']\n        out, err = self.run_django_admin(args)\n        self.assertOutput(err, \"Could not import settings 'bad_settings'\")\n\n    def test_builtin_with_bad_environment(self):\n        \"alternate: django-admin builtin commands fail if settings file (from environment) doesn't exist\"\n        args = ['sqlall', 'admin_scripts']\n        out, err = self.run_django_admin(args, 'bad_settings')\n        self.assertNoOutput(out)\n        self.assertOutput(err, \"Could not import settings 'bad_settings'\")\n\n    def test_custom_command(self):\n        \"alternate: django-admin can't execute user commands unless settings are provided\"\n        args = ['noargs_command']\n        out, err = self.run_django_admin(args)\n        self.assertNoOutput(out)\n        self.assertOutput(err, \"Unknown command: 'noargs_command'\")\n\n    def test_custom_command_with_settings(self):\n        \"alternate: django-admin can execute user commands if settings are provided as argument\"\n        args = ['noargs_command', '--settings=regressiontests.alternate_settings']\n        out, err = self.run_django_admin(args)\n        self.assertNoOutput(err)\n        self.assertOutput(out, \"EXECUTE:NoArgsCommand\")\n\n    def test_custom_command_with_environment(self):\n        \"alternate: django-admin can execute user commands if settings are provided in environment\"\n        args = ['noargs_command']\n        out, err = self.run_django_admin(args, 'regressiontests.alternate_settings')\n        self.assertNoOutput(err)\n        self.assertOutput(out, \"EXECUTE:NoArgsCommand\")\n\n\nclass DjangoAdminSettingsDirectory(AdminScriptTestCase):\n    \"\"\"\n    A series of tests for django-admin.py when the settings file is in a\n    directory. (see #9751).\n    \"\"\"\n\n    def setUp(self):\n        self.write_settings('settings', is_dir=True)\n\n    def tearDown(self):\n        self.remove_settings('settings', is_dir=True)\n\n    def test_setup_environ(self):\n        \"directory: startapp creates the correct directory\"\n        args = ['startapp', 'settings_test']\n        app_path = os.path.join(test_dir, 'settings_test')\n        out, err = self.run_django_admin(args, 'regressiontests.settings')\n        self.addCleanup(shutil.rmtree, app_path)\n        self.assertNoOutput(err)\n        self.assertTrue(os.path.exists(app_path))\n\n    def test_setup_environ_custom_template(self):\n        \"directory: startapp creates the correct directory with a custom template\"\n        template_path = os.path.join(test_dir, 'admin_scripts', 'custom_templates', 'app_template')\n        args = ['startapp', '--template', template_path, 'custom_settings_test']\n        app_path = os.path.join(test_dir, 'custom_settings_test')\n        out, err = self.run_django_admin(args, 'regressiontests.settings')\n        self.addCleanup(shutil.rmtree, app_path)\n        self.assertNoOutput(err)\n        self.assertTrue(os.path.exists(app_path))\n        self.assertTrue(os.path.exists(os.path.join(app_path, 'api.py')))\n\n    def test_builtin_command(self):\n        \"directory: django-admin builtin commands fail with an error when no settings provided\"\n        args = ['sqlall', 'admin_scripts']\n        out, err = self.run_django_admin(args)\n        self.assertNoOutput(out)\n        self.assertOutput(err, 'settings are not configured')\n\n    def test_builtin_with_bad_settings(self):\n        \"directory: django-admin builtin commands fail if settings file (from argument) doesn't exist\"\n        args = ['sqlall', '--settings=bad_settings', 'admin_scripts']\n        out, err = self.run_django_admin(args)\n        self.assertOutput(err, \"Could not import settings 'bad_settings'\")\n\n    def test_builtin_with_bad_environment(self):\n        \"directory: django-admin builtin commands fail if settings file (from environment) doesn't exist\"\n        args = ['sqlall', 'admin_scripts']\n        out, err = self.run_django_admin(args, 'bad_settings')\n        self.assertNoOutput(out)\n        self.assertOutput(err, \"Could not import settings 'bad_settings'\")\n\n    def test_custom_command(self):\n        \"directory: django-admin can't execute user commands unless settings are provided\"\n        args = ['noargs_command']\n        out, err = self.run_django_admin(args)\n        self.assertNoOutput(out)\n        self.assertOutput(err, \"Unknown command: 'noargs_command'\")\n\n    def test_builtin_with_settings(self):\n        \"directory: django-admin builtin commands succeed if settings are provided as argument\"\n        args = ['sqlall', '--settings=regressiontests.settings', 'admin_scripts']\n        out, err = self.run_django_admin(args)\n        self.assertNoOutput(err)\n        self.assertOutput(out, 'CREATE TABLE')\n\n    def test_builtin_with_environment(self):\n        \"directory: django-admin builtin commands succeed if settings are provided in the environment\"\n        args = ['sqlall', 'admin_scripts']\n        out, err = self.run_django_admin(args, 'regressiontests.settings')\n        self.assertNoOutput(err)\n        self.assertOutput(out, 'CREATE TABLE')\n\n\n##########################################################################\n# MANAGE.PY TESTS\n# This next series of test classes checks the environment processing\n# of the generated manage.py script\n##########################################################################\n\nclass ManageNoSettings(AdminScriptTestCase):\n    \"A series of tests for manage.py when there is no settings.py file.\"\n\n    def test_builtin_command(self):\n        \"no settings: manage.py builtin commands fail with an error when no settings provided\"\n        args = ['sqlall', 'admin_scripts']\n        out, err = self.run_manage(args)\n        self.assertNoOutput(out)\n        self.assertOutput(err, \"Could not import settings 'regressiontests.settings'\")\n\n    def test_builtin_with_bad_settings(self):\n        \"no settings: manage.py builtin commands fail if settings file (from argument) doesn't exist\"\n        args = ['sqlall', '--settings=bad_settings', 'admin_scripts']\n        out, err = self.run_manage(args)\n        self.assertNoOutput(out)\n        self.assertOutput(err, \"Could not import settings 'bad_settings'\")\n\n    def test_builtin_with_bad_environment(self):\n        \"no settings: manage.py builtin commands fail if settings file (from environment) doesn't exist\"\n        args = ['sqlall', 'admin_scripts']\n        out, err = self.run_manage(args, 'bad_settings')\n        self.assertNoOutput(out)\n        self.assertOutput(err, \"Could not import settings 'bad_settings'\")\n\n\nclass ManageDefaultSettings(AdminScriptTestCase):\n    \"\"\"A series of tests for manage.py when using a settings.py file that\n    contains the test application.\n    \"\"\"\n    def setUp(self):\n        self.write_settings('settings.py')\n\n    def tearDown(self):\n        self.remove_settings('settings.py')\n\n    def test_builtin_command(self):\n        \"default: manage.py builtin commands succeed when default settings are appropriate\"\n        args = ['sqlall', 'admin_scripts']\n        out, err = self.run_manage(args)\n        self.assertNoOutput(err)\n        self.assertOutput(out, 'CREATE TABLE')\n\n    def test_builtin_with_settings(self):\n        \"default: manage.py builtin commands succeed if settings are provided as argument\"\n        args = ['sqlall', '--settings=regressiontests.settings', 'admin_scripts']\n        out, err = self.run_manage(args)\n        self.assertNoOutput(err)\n        self.assertOutput(out, 'CREATE TABLE')\n\n    def test_builtin_with_environment(self):\n        \"default: manage.py builtin commands succeed if settings are provided in the environment\"\n        args = ['sqlall', 'admin_scripts']\n        out, err = self.run_manage(args, 'regressiontests.settings')\n        self.assertNoOutput(err)\n        self.assertOutput(out, 'CREATE TABLE')\n\n    def test_builtin_with_bad_settings(self):\n        \"default: manage.py builtin commands succeed if settings file (from argument) doesn't exist\"\n        args = ['sqlall', '--settings=bad_settings', 'admin_scripts']\n        out, err = self.run_manage(args)\n        self.assertNoOutput(out)\n        self.assertOutput(err, \"Could not import settings 'bad_settings'\")\n\n    def test_builtin_with_bad_environment(self):\n        \"default: manage.py builtin commands fail if settings file (from environment) doesn't exist\"\n        args = ['sqlall', 'admin_scripts']\n        out, err = self.run_manage(args, 'bad_settings')\n        self.assertNoOutput(out)\n        self.assertOutput(err, \"Could not import settings 'bad_settings'\")\n\n    def test_custom_command(self):\n        \"default: manage.py can execute user commands when default settings are appropriate\"\n        args = ['noargs_command']\n        out, err = self.run_manage(args)\n        self.assertNoOutput(err)\n        self.assertOutput(out, \"EXECUTE:NoArgsCommand\")\n\n    def test_custom_command_with_settings(self):\n        \"default: manage.py can execute user commands when settings are provided as argument\"\n        args = ['noargs_command', '--settings=regressiontests.settings']\n        out, err = self.run_manage(args)\n        self.assertNoOutput(err)\n        self.assertOutput(out, \"EXECUTE:NoArgsCommand\")\n\n    def test_custom_command_with_environment(self):\n        \"default: manage.py can execute user commands when settings are provided in environment\"\n        args = ['noargs_command']\n        out, err = self.run_manage(args, 'regressiontests.settings')\n        self.assertNoOutput(err)\n        self.assertOutput(out, \"EXECUTE:NoArgsCommand\")\n\n\nclass ManageFullPathDefaultSettings(AdminScriptTestCase):\n    \"\"\"A series of tests for manage.py when using a settings.py file that\n    contains the test application specified using a full path.\n    \"\"\"\n    def setUp(self):\n        self.write_settings('settings.py', ['django.contrib.auth', 'django.contrib.contenttypes', 'regressiontests.admin_scripts'])\n\n    def tearDown(self):\n        self.remove_settings('settings.py')\n\n    def test_builtin_command(self):\n        \"fulldefault: manage.py builtin commands succeed when default settings are appropriate\"\n        args = ['sqlall', 'admin_scripts']\n        out, err = self.run_manage(args)\n        self.assertNoOutput(err)\n        self.assertOutput(out, 'CREATE TABLE')\n\n    def test_builtin_with_settings(self):\n        \"fulldefault: manage.py builtin commands succeed if settings are provided as argument\"\n        args = ['sqlall', '--settings=regressiontests.settings', 'admin_scripts']\n        out, err = self.run_manage(args)\n        self.assertNoOutput(err)\n        self.assertOutput(out, 'CREATE TABLE')\n\n    def test_builtin_with_environment(self):\n        \"fulldefault: manage.py builtin commands succeed if settings are provided in the environment\"\n        args = ['sqlall', 'admin_scripts']\n        out, err = self.run_manage(args, 'regressiontests.settings')\n        self.assertNoOutput(err)\n        self.assertOutput(out, 'CREATE TABLE')\n\n    def test_builtin_with_bad_settings(self):\n        \"fulldefault: manage.py builtin commands succeed if settings file (from argument) doesn't exist\"\n        args = ['sqlall', '--settings=bad_settings', 'admin_scripts']\n        out, err = self.run_manage(args)\n        self.assertNoOutput(out)\n        self.assertOutput(err, \"Could not import settings 'bad_settings'\")\n\n    def test_builtin_with_bad_environment(self):\n        \"fulldefault: manage.py builtin commands fail if settings file (from environment) doesn't exist\"\n        args = ['sqlall', 'admin_scripts']\n        out, err = self.run_manage(args, 'bad_settings')\n        self.assertNoOutput(out)\n        self.assertOutput(err, \"Could not import settings 'bad_settings'\")\n\n    def test_custom_command(self):\n        \"fulldefault: manage.py can execute user commands when default settings are appropriate\"\n        args = ['noargs_command']\n        out, err = self.run_manage(args)\n        self.assertNoOutput(err)\n        self.assertOutput(out, \"EXECUTE:NoArgsCommand\")\n\n    def test_custom_command_with_settings(self):\n        \"fulldefault: manage.py can execute user commands when settings are provided as argument\"\n        args = ['noargs_command', '--settings=regressiontests.settings']\n        out, err = self.run_manage(args)\n        self.assertNoOutput(err)\n        self.assertOutput(out, \"EXECUTE:NoArgsCommand\")\n\n    def test_custom_command_with_environment(self):\n        \"fulldefault: manage.py can execute user commands when settings are provided in environment\"\n        args = ['noargs_command']\n        out, err = self.run_manage(args, 'regressiontests.settings')\n        self.assertNoOutput(err)\n        self.assertOutput(out, \"EXECUTE:NoArgsCommand\")\n\nclass ManageMinimalSettings(AdminScriptTestCase):\n    \"\"\"A series of tests for manage.py when using a settings.py file that\n    doesn't contain the test application.\n    \"\"\"\n    def setUp(self):\n        self.write_settings('settings.py', apps=['django.contrib.auth', 'django.contrib.contenttypes'])\n\n    def tearDown(self):\n        self.remove_settings('settings.py')\n\n    def test_builtin_command(self):\n        \"minimal: manage.py builtin commands fail with an error when no settings provided\"\n        args = ['sqlall', 'admin_scripts']\n        out, err = self.run_manage(args)\n        self.assertNoOutput(out)\n        self.assertOutput(err, 'App with label admin_scripts could not be found')\n\n    def test_builtin_with_settings(self):\n        \"minimal: manage.py builtin commands fail if settings are provided as argument\"\n        args = ['sqlall', '--settings=regressiontests.settings', 'admin_scripts']\n        out, err = self.run_manage(args)\n        self.assertNoOutput(out)\n        self.assertOutput(err, 'App with label admin_scripts could not be found')\n\n    def test_builtin_with_environment(self):\n        \"minimal: manage.py builtin commands fail if settings are provided in the environment\"\n        args = ['sqlall', 'admin_scripts']\n        out, err = self.run_manage(args, 'regressiontests.settings')\n        self.assertNoOutput(out)\n        self.assertOutput(err, 'App with label admin_scripts could not be found')\n\n    def test_builtin_with_bad_settings(self):\n        \"minimal: manage.py builtin commands fail if settings file (from argument) doesn't exist\"\n        args = ['sqlall', '--settings=bad_settings', 'admin_scripts']\n        out, err = self.run_manage(args)\n        self.assertNoOutput(out)\n        self.assertOutput(err, \"Could not import settings 'bad_settings'\")\n\n    def test_builtin_with_bad_environment(self):\n        \"minimal: manage.py builtin commands fail if settings file (from environment) doesn't exist\"\n        args = ['sqlall', 'admin_scripts']\n        out, err = self.run_manage(args, 'bad_settings')\n        self.assertNoOutput(out)\n        self.assertOutput(err, \"Could not import settings 'bad_settings'\")\n\n    def test_custom_command(self):\n        \"minimal: manage.py can't execute user commands without appropriate settings\"\n        args = ['noargs_command']\n        out, err = self.run_manage(args)\n        self.assertNoOutput(out)\n        self.assertOutput(err, \"Unknown command: 'noargs_command'\")\n\n    def test_custom_command_with_settings(self):\n        \"minimal: manage.py can't execute user commands, even if settings are provided as argument\"\n        args = ['noargs_command', '--settings=regressiontests.settings']\n        out, err = self.run_manage(args)\n        self.assertNoOutput(out)\n        self.assertOutput(err, \"Unknown command: 'noargs_command'\")\n\n    def test_custom_command_with_environment(self):\n        \"minimal: manage.py can't execute user commands, even if settings are provided in environment\"\n        args = ['noargs_command']\n        out, err = self.run_manage(args, 'regressiontests.settings')\n        self.assertNoOutput(out)\n        self.assertOutput(err, \"Unknown command: 'noargs_command'\")\n\nclass ManageAlternateSettings(AdminScriptTestCase):\n    \"\"\"A series of tests for manage.py when using a settings file\n    with a name other than 'settings.py'.\n    \"\"\"\n    def setUp(self):\n        self.write_settings('alternate_settings.py')\n\n    def tearDown(self):\n        self.remove_settings('alternate_settings.py')\n\n    def test_builtin_command(self):\n        \"alternate: manage.py builtin commands fail with an error when no default settings provided\"\n        args = ['sqlall', 'admin_scripts']\n        out, err = self.run_manage(args)\n        self.assertNoOutput(out)\n        self.assertOutput(err, \"Could not import settings 'regressiontests.settings'\")\n\n    def test_builtin_with_settings(self):\n        \"alternate: manage.py builtin commands work with settings provided as argument\"\n        args = ['sqlall', '--settings=alternate_settings', 'admin_scripts']\n        out, err = self.run_manage(args)\n        expected = ('create table %s'\n                    % connection.ops.quote_name('admin_scripts_article'))\n        self.assertTrue(expected.lower() in out.lower())\n        self.assertNoOutput(err)\n\n    def test_builtin_with_environment(self):\n        \"alternate: manage.py builtin commands work if settings are provided in the environment\"\n        args = ['sqlall', 'admin_scripts']\n        out, err = self.run_manage(args, 'alternate_settings')\n        expected = ('create table %s'\n                    % connection.ops.quote_name('admin_scripts_article'))\n        self.assertTrue(expected.lower() in out.lower())\n        self.assertNoOutput(err)\n\n    def test_builtin_with_bad_settings(self):\n        \"alternate: manage.py builtin commands fail if settings file (from argument) doesn't exist\"\n        args = ['sqlall', '--settings=bad_settings', 'admin_scripts']\n        out, err = self.run_manage(args)\n        self.assertNoOutput(out)\n        self.assertOutput(err, \"Could not import settings 'bad_settings'\")\n\n    def test_builtin_with_bad_environment(self):\n        \"alternate: manage.py builtin commands fail if settings file (from environment) doesn't exist\"\n        args = ['sqlall', 'admin_scripts']\n        out, err = self.run_manage(args, 'bad_settings')\n        self.assertNoOutput(out)\n        self.assertOutput(err, \"Could not import settings 'bad_settings'\")\n\n    def test_custom_command(self):\n        \"alternate: manage.py can't execute user commands without settings\"\n        args = ['noargs_command']\n        out, err = self.run_manage(args)\n        self.assertNoOutput(out)\n        self.assertOutput(err, \"Could not import settings 'regressiontests.settings'\")\n\n    def test_custom_command_with_settings(self):\n        \"alternate: manage.py can execute user commands if settings are provided as argument\"\n        args = ['noargs_command', '--settings=alternate_settings']\n        out, err = self.run_manage(args)\n        self.assertOutput(out, \"EXECUTE:NoArgsCommand options=[('pythonpath', None), ('settings', 'alternate_settings'), ('traceback', None), ('verbosity', '1')]\")\n        self.assertNoOutput(err)\n\n    def test_custom_command_with_environment(self):\n        \"alternate: manage.py can execute user commands if settings are provided in environment\"\n        args = ['noargs_command']\n        out, err = self.run_manage(args, 'alternate_settings')\n        self.assertOutput(out, \"EXECUTE:NoArgsCommand options=[('pythonpath', None), ('settings', None), ('traceback', None), ('verbosity', '1')]\")\n        self.assertNoOutput(err)\n\n\nclass ManageMultipleSettings(AdminScriptTestCase):\n    \"\"\"A series of tests for manage.py when multiple settings files\n    (including the default 'settings.py') are available. The default settings\n    file is insufficient for performing the operations described, so the\n    alternate settings must be used by the running script.\n    \"\"\"\n    def setUp(self):\n        self.write_settings('settings.py', apps=['django.contrib.auth', 'django.contrib.contenttypes'])\n        self.write_settings('alternate_settings.py')\n\n    def tearDown(self):\n        self.remove_settings('settings.py')\n        self.remove_settings('alternate_settings.py')\n\n    def test_builtin_command(self):\n        \"multiple: manage.py builtin commands fail with an error when no settings provided\"\n        args = ['sqlall', 'admin_scripts']\n        out, err = self.run_manage(args)\n        self.assertNoOutput(out)\n        self.assertOutput(err, 'App with label admin_scripts could not be found.')\n\n    def test_builtin_with_settings(self):\n        \"multiple: manage.py builtin commands succeed if settings are provided as argument\"\n        args = ['sqlall', '--settings=alternate_settings', 'admin_scripts']\n        out, err = self.run_manage(args)\n        self.assertNoOutput(err)\n        self.assertOutput(out, 'CREATE TABLE')\n\n    def test_builtin_with_environment(self):\n        \"multiple: manage.py can execute builtin commands if settings are provided in the environment\"\n        args = ['sqlall', 'admin_scripts']\n        out, err = self.run_manage(args, 'alternate_settings')\n        self.assertNoOutput(err)\n        self.assertOutput(out, 'CREATE TABLE')\n\n    def test_builtin_with_bad_settings(self):\n        \"multiple: manage.py builtin commands fail if settings file (from argument) doesn't exist\"\n        args = ['sqlall', '--settings=bad_settings', 'admin_scripts']\n        out, err = self.run_manage(args)\n        self.assertNoOutput(out)\n        self.assertOutput(err, \"Could not import settings 'bad_settings'\")\n\n    def test_builtin_with_bad_environment(self):\n        \"multiple: manage.py builtin commands fail if settings file (from environment) doesn't exist\"\n        args = ['sqlall', 'admin_scripts']\n        out, err = self.run_manage(args, 'bad_settings')\n        self.assertNoOutput(out)\n        self.assertOutput(err, \"Could not import settings 'bad_settings'\")\n\n    def test_custom_command(self):\n        \"multiple: manage.py can't execute user commands using default settings\"\n        args = ['noargs_command']\n        out, err = self.run_manage(args)\n        self.assertNoOutput(out)\n        self.assertOutput(err, \"Unknown command: 'noargs_command'\")\n\n    def test_custom_command_with_settings(self):\n        \"multiple: manage.py can execute user commands if settings are provided as argument\"\n        args = ['noargs_command', '--settings=alternate_settings']\n        out, err = self.run_manage(args)\n        self.assertNoOutput(err)\n        self.assertOutput(out, \"EXECUTE:NoArgsCommand\")\n\n    def test_custom_command_with_environment(self):\n        \"multiple: manage.py can execute user commands if settings are provided in environment\"\n        args = ['noargs_command']\n        out, err = self.run_manage(args, 'alternate_settings')\n        self.assertNoOutput(err)\n        self.assertOutput(out, \"EXECUTE:NoArgsCommand\")\n\n\nclass ManageSettingsWithImportError(AdminScriptTestCase):\n    \"\"\"Tests for manage.py when using the default settings.py file\n    with an import error. Ticket #14130.\n    \"\"\"\n    def tearDown(self):\n        self.remove_settings('settings.py')\n\n    def write_settings_with_import_error(self, filename, apps=None, is_dir=False, sdict=None):\n        if is_dir:\n            settings_dir = os.path.join(test_dir, filename)\n            os.mkdir(settings_dir)\n            settings_file_path = os.path.join(settings_dir, '__init__.py')\n        else:\n            settings_file_path = os.path.join(test_dir, filename)\n        with open(settings_file_path, 'w') as settings_file:\n            settings_file.write('# Settings file automatically generated by regressiontests.admin_scripts test case\\n')\n            settings_file.write('# The next line will cause an import error:\\nimport foo42bar\\n')\n\n    def test_builtin_command(self):\n        \"\"\"\n        import error: manage.py builtin commands shows useful diagnostic info\n        when settings with import errors is provided\n        \"\"\"\n        self.write_settings_with_import_error('settings.py')\n        args = ['sqlall', 'admin_scripts']\n        out, err = self.run_manage(args)\n        self.assertNoOutput(out)\n        self.assertOutput(err, \"No module named\")\n        self.assertOutput(err, \"foo42bar\")\n\n    def test_builtin_command_with_attribute_error(self):\n        \"\"\"\n        manage.py builtin commands does not swallow attribute errors from bad settings (#18845)\n        \"\"\"\n        self.write_settings('settings.py', sdict={'BAD_VAR': 'INSTALLED_APPS.crash'})\n        args = ['collectstatic', 'admin_scripts']\n        out, err = self.run_manage(args)\n        self.assertNoOutput(out)\n        self.assertOutput(err, \"AttributeError: 'list' object has no attribute 'crash'\")\n\n\nclass ManageValidate(AdminScriptTestCase):\n    def tearDown(self):\n        self.remove_settings('settings.py')\n\n    def test_nonexistent_app(self):\n        \"manage.py validate reports an error on a non-existent app in INSTALLED_APPS\"\n        self.write_settings('settings.py', apps=['admin_scriptz.broken_app'], sdict={'USE_I18N': False})\n        args = ['validate']\n        out, err = self.run_manage(args)\n        self.assertNoOutput(out)\n        self.assertOutput(err, 'No module named')\n        self.assertOutput(err, 'admin_scriptz')\n\n    def test_broken_app(self):\n        \"manage.py validate reports an ImportError if an app's models.py raises one on import\"\n        self.write_settings('settings.py', apps=['admin_scripts.broken_app'])\n        args = ['validate']\n        out, err = self.run_manage(args)\n        self.assertNoOutput(out)\n        self.assertOutput(err, 'ImportError')\n\n    def test_complex_app(self):\n        \"manage.py validate does not raise an ImportError validating a complex app with nested calls to load_app\"\n        self.write_settings('settings.py',\n            apps=['admin_scripts.complex_app', 'admin_scripts.simple_app'],\n            sdict={'DEBUG': True})\n        args = ['validate']\n        out, err = self.run_manage(args)\n        self.assertNoOutput(err)\n        self.assertOutput(out, '0 errors found')\n\n    def test_app_with_import(self):\n        \"manage.py validate does not raise errors when an app imports a base class that itself has an abstract base\"\n        self.write_settings('settings.py',\n            apps=['admin_scripts.app_with_import',\n                  'django.contrib.comments',\n                  'django.contrib.auth',\n                  'django.contrib.contenttypes',\n                  'django.contrib.sites'],\n            sdict={'DEBUG': True})\n        args = ['validate']\n        out, err = self.run_manage(args)\n        self.assertNoOutput(err)\n        self.assertOutput(out, '0 errors found')\n\n\nclass CustomTestRunner(DjangoTestSuiteRunner):\n\n    def __init__(self, *args, **kwargs):\n        assert 'liveserver' not in kwargs\n        super(CustomTestRunner, self).__init__(*args, **kwargs)\n\n    def run_tests(self, test_labels, extra_tests=None, **kwargs):\n        pass\n\nclass ManageTestCommand(AdminScriptTestCase):\n    def setUp(self):\n        from django.core.management.commands.test import Command as TestCommand\n        self.cmd = TestCommand()\n\n    def test_liveserver(self):\n        \"\"\"\n        Ensure that the --liveserver option sets the environment variable\n        correctly.\n        Refs #2879.\n        \"\"\"\n\n        # Backup original state\n        address_predefined = 'DJANGO_LIVE_TEST_SERVER_ADDRESS' in os.environ\n        old_address = os.environ.get('DJANGO_LIVE_TEST_SERVER_ADDRESS')\n\n        self.cmd.handle(verbosity=0, testrunner='regressiontests.admin_scripts.tests.CustomTestRunner')\n\n        # Original state hasn't changed\n        self.assertEqual('DJANGO_LIVE_TEST_SERVER_ADDRESS' in os.environ, address_predefined)\n        self.assertEqual(os.environ.get('DJANGO_LIVE_TEST_SERVER_ADDRESS'), old_address)\n\n        self.cmd.handle(verbosity=0, testrunner='regressiontests.admin_scripts.tests.CustomTestRunner',\n                        liveserver='blah')\n\n        # Variable was correctly set\n        self.assertEqual(os.environ['DJANGO_LIVE_TEST_SERVER_ADDRESS'], 'blah')\n\n        # Restore original state\n        if address_predefined:\n            os.environ['DJANGO_LIVE_TEST_SERVER_ADDRESS'] = old_address\n        else:\n            del os.environ['DJANGO_LIVE_TEST_SERVER_ADDRESS']\n\n\nclass ManageRunserver(AdminScriptTestCase):\n    def setUp(self):\n        from django.core.management.commands.runserver import Command\n\n        def monkey_run(*args, **options):\n            return\n\n        self.cmd = Command()\n        self.cmd.run = monkey_run\n\n    def assertServerSettings(self, addr, port, ipv6=None, raw_ipv6=False):\n        self.assertEqual(self.cmd.addr, addr)\n        self.assertEqual(self.cmd.port, port)\n        self.assertEqual(self.cmd.use_ipv6, ipv6)\n        self.assertEqual(self.cmd._raw_ipv6, raw_ipv6)\n\n    def test_runserver_addrport(self):\n        self.cmd.handle()\n        self.assertServerSettings('127.0.0.1', '8000')\n\n        self.cmd.handle(addrport=\"1.2.3.4:8000\")\n        self.assertServerSettings('1.2.3.4', '8000')\n\n        self.cmd.handle(addrport=\"7000\")\n        self.assertServerSettings('127.0.0.1', '7000')\n\n    @unittest.skipUnless(socket.has_ipv6, \"platform doesn't support IPv6\")\n    def test_runner_addrport_ipv6(self):\n        self.cmd.handle(addrport=\"\", use_ipv6=True)\n        self.assertServerSettings('::1', '8000', ipv6=True, raw_ipv6=True)\n\n        self.cmd.handle(addrport=\"7000\", use_ipv6=True)\n        self.assertServerSettings('::1', '7000', ipv6=True, raw_ipv6=True)\n\n        self.cmd.handle(addrport=\"[2001:0db8:1234:5678::9]:7000\")\n        self.assertServerSettings('2001:0db8:1234:5678::9', '7000', ipv6=True, raw_ipv6=True)\n\n    def test_runner_hostname(self):\n        self.cmd.handle(addrport=\"localhost:8000\")\n        self.assertServerSettings('localhost', '8000')\n\n        self.cmd.handle(addrport=\"test.domain.local:7000\")\n        self.assertServerSettings('test.domain.local', '7000')\n\n    @unittest.skipUnless(socket.has_ipv6, \"platform doesn't support IPv6\")\n    def test_runner_hostname_ipv6(self):\n        self.cmd.handle(addrport=\"test.domain.local:7000\", use_ipv6=True)\n        self.assertServerSettings('test.domain.local', '7000', ipv6=True)\n\n    def test_runner_ambiguous(self):\n        # Only 4 characters, all of which could be in an ipv6 address\n        self.cmd.handle(addrport=\"beef:7654\")\n        self.assertServerSettings('beef', '7654')\n\n        # Uses only characters that could be in an ipv6 address\n        self.cmd.handle(addrport=\"deadbeef:7654\")\n        self.assertServerSettings('deadbeef', '7654')\n\n\n##########################################################################\n# COMMAND PROCESSING TESTS\n# Check that user-space commands are correctly handled - in particular,\n# that arguments to the commands are correctly parsed and processed.\n##########################################################################\n\nclass CommandTypes(AdminScriptTestCase):\n    \"Tests for the various types of base command types that can be defined.\"\n    def setUp(self):\n        self.write_settings('settings.py')\n\n    def tearDown(self):\n        self.remove_settings('settings.py')\n\n    def test_version(self):\n        \"version is handled as a special case\"\n        args = ['version']\n        out, err = self.run_manage(args)\n        self.assertNoOutput(err)\n        self.assertOutput(out, get_version())\n\n    def test_version_alternative(self):\n        \"--version is equivalent to version\"\n        args1, args2 = ['version'], ['--version']\n        self.assertEqual(self.run_manage(args1), self.run_manage(args2))\n\n    def test_help(self):\n        \"help is handled as a special case\"\n        args = ['help']\n        out, err = self.run_manage(args)\n        self.assertOutput(out, \"Usage: manage.py subcommand [options] [args]\")\n        self.assertOutput(out, \"Type 'manage.py help <subcommand>' for help on a specific subcommand.\")\n        self.assertOutput(out, '[django]')\n        self.assertOutput(out, 'startapp')\n        self.assertOutput(out, 'startproject')\n\n    def test_help_commands(self):\n        \"help --commands shows the list of all available commands\"\n        args = ['help', '--commands']\n        out, err = self.run_manage(args)\n        self.assertNotInOutput(out, 'Usage:')\n        self.assertNotInOutput(out, 'Options:')\n        self.assertNotInOutput(out, '[django]')\n        self.assertOutput(out, 'startapp')\n        self.assertOutput(out, 'startproject')\n        self.assertNotInOutput(out, '\\n\\n')\n\n    def test_help_alternative(self):\n        \"--help is equivalent to help\"\n        args1, args2 = ['help'], ['--help']\n        self.assertEqual(self.run_manage(args1), self.run_manage(args2))\n\n    def test_help_short_altert(self):\n        \"-h is handled as a short form of --help\"\n        args1, args2 = ['--help'], ['-h']\n        self.assertEqual(self.run_manage(args1), self.run_manage(args2))\n\n    def test_specific_help(self):\n        \"--help can be used on a specific command\"\n        args = ['sqlall', '--help']\n        out, err = self.run_manage(args)\n        self.assertNoOutput(err)\n        self.assertOutput(out, \"Prints the CREATE TABLE, custom SQL and CREATE INDEX SQL statements for the given model module name(s).\")\n\n    def test_base_command(self):\n        \"User BaseCommands can execute when a label is provided\"\n        args = ['base_command', 'testlabel']\n        out, err = self.run_manage(args)\n        self.assertNoOutput(err)\n        self.assertOutput(out, \"EXECUTE:BaseCommand labels=('testlabel',), options=[('option_a', '1'), ('option_b', '2'), ('option_c', '3'), ('pythonpath', None), ('settings', None), ('traceback', None), ('verbosity', '1')]\")\n\n    def test_base_command_no_label(self):\n        \"User BaseCommands can execute when no labels are provided\"\n        args = ['base_command']\n        out, err = self.run_manage(args)\n        self.assertNoOutput(err)\n        self.assertOutput(out, \"EXECUTE:BaseCommand labels=(), options=[('option_a', '1'), ('option_b', '2'), ('option_c', '3'), ('pythonpath', None), ('settings', None), ('traceback', None), ('verbosity', '1')]\")\n\n    def test_base_command_multiple_label(self):\n        \"User BaseCommands can execute when no labels are provided\"\n        args = ['base_command', 'testlabel', 'anotherlabel']\n        out, err = self.run_manage(args)\n        self.assertNoOutput(err)\n        self.assertOutput(out, \"EXECUTE:BaseCommand labels=('testlabel', 'anotherlabel'), options=[('option_a', '1'), ('option_b', '2'), ('option_c', '3'), ('pythonpath', None), ('settings', None), ('traceback', None), ('verbosity', '1')]\")\n\n    def test_base_command_with_option(self):\n        \"User BaseCommands can execute with options when a label is provided\"\n        args = ['base_command', 'testlabel', '--option_a=x']\n        out, err = self.run_manage(args)\n        self.assertNoOutput(err)\n        self.assertOutput(out, \"EXECUTE:BaseCommand labels=('testlabel',), options=[('option_a', 'x'), ('option_b', '2'), ('option_c', '3'), ('pythonpath', None), ('settings', None), ('traceback', None), ('verbosity', '1')]\")\n\n    def test_base_command_with_options(self):\n        \"User BaseCommands can execute with multiple options when a label is provided\"\n        args = ['base_command', 'testlabel', '-a', 'x', '--option_b=y']\n        out, err = self.run_manage(args)\n        self.assertNoOutput(err)\n        self.assertOutput(out, \"EXECUTE:BaseCommand labels=('testlabel',), options=[('option_a', 'x'), ('option_b', 'y'), ('option_c', '3'), ('pythonpath', None), ('settings', None), ('traceback', None), ('verbosity', '1')]\")\n\n    def test_base_run_from_argv(self):\n        \"\"\"\n        Test run_from_argv properly terminates even with custom execute() (#19665)\n        Also test proper traceback display.\n        \"\"\"\n        command = BaseCommand()\n        command.execute = lambda args: args  # This will trigger TypeError\n\n        old_stderr = sys.stderr\n        sys.stderr = err = StringIO()\n        try:\n            with self.assertRaises(SystemExit):\n                command.run_from_argv(['', ''])\n            err_message = err.getvalue()\n            self.assertNotIn(\"Traceback\", err_message)\n            self.assertIn(\"TypeError\", err_message)\n\n            with self.assertRaises(SystemExit):\n                command.run_from_argv(['', '', '--traceback'])\n            err_message = err.getvalue()\n            self.assertIn(\"Traceback (most recent call last)\", err_message)\n            self.assertIn(\"TypeError\", err_message)\n        finally:\n            sys.stderr = old_stderr\n\n    def test_noargs(self):\n        \"NoArg Commands can be executed\"\n        args = ['noargs_command']\n        out, err = self.run_manage(args)\n        self.assertNoOutput(err)\n        self.assertOutput(out, \"EXECUTE:NoArgsCommand options=[('pythonpath', None), ('settings', None), ('traceback', None), ('verbosity', '1')]\")\n\n    def test_noargs_with_args(self):\n        \"NoArg Commands raise an error if an argument is provided\"\n        args = ['noargs_command', 'argument']\n        out, err = self.run_manage(args)\n        self.assertOutput(err, \"Error: Command doesn't accept any arguments\")\n\n    def test_app_command(self):\n        \"User AppCommands can execute when a single app name is provided\"\n        args = ['app_command', 'auth']\n        out, err = self.run_manage(args)\n        self.assertNoOutput(err)\n        self.assertOutput(out, \"EXECUTE:AppCommand app=<module 'django.contrib.auth.models'\")\n        self.assertOutput(out, os.sep.join(['django', 'contrib', 'auth', 'models.py']))\n        self.assertOutput(out, \"'>, options=[('pythonpath', None), ('settings', None), ('traceback', None), ('verbosity', '1')]\")\n\n    def test_app_command_no_apps(self):\n        \"User AppCommands raise an error when no app name is provided\"\n        args = ['app_command']\n        out, err = self.run_manage(args)\n        self.assertOutput(err, 'Error: Enter at least one appname.')\n\n    def test_app_command_multiple_apps(self):\n        \"User AppCommands raise an error when multiple app names are provided\"\n        args = ['app_command', 'auth', 'contenttypes']\n        out, err = self.run_manage(args)\n        self.assertNoOutput(err)\n        self.assertOutput(out, \"EXECUTE:AppCommand app=<module 'django.contrib.auth.models'\")\n        self.assertOutput(out, os.sep.join(['django', 'contrib', 'auth', 'models.py']))\n        self.assertOutput(out, \"'>, options=[('pythonpath', None), ('settings', None), ('traceback', None), ('verbosity', '1')]\")\n        self.assertOutput(out, \"EXECUTE:AppCommand app=<module 'django.contrib.contenttypes.models'\")\n        self.assertOutput(out, os.sep.join(['django', 'contrib', 'contenttypes', 'models.py']))\n        self.assertOutput(out, \"'>, options=[('pythonpath', None), ('settings', None), ('traceback', None), ('verbosity', '1')]\")\n\n    def test_app_command_invalid_appname(self):\n        \"User AppCommands can execute when a single app name is provided\"\n        args = ['app_command', 'NOT_AN_APP']\n        out, err = self.run_manage(args)\n        self.assertOutput(err, \"App with label NOT_AN_APP could not be found\")\n\n    def test_app_command_some_invalid_appnames(self):\n        \"User AppCommands can execute when some of the provided app names are invalid\"\n        args = ['app_command', 'auth', 'NOT_AN_APP']\n        out, err = self.run_manage(args)\n        self.assertOutput(err, \"App with label NOT_AN_APP could not be found\")\n\n    def test_label_command(self):\n        \"User LabelCommands can execute when a label is provided\"\n        args = ['label_command', 'testlabel']\n        out, err = self.run_manage(args)\n        self.assertNoOutput(err)\n        self.assertOutput(out, \"EXECUTE:LabelCommand label=testlabel, options=[('pythonpath', None), ('settings', None), ('traceback', None), ('verbosity', '1')]\")\n\n    def test_label_command_no_label(self):\n        \"User LabelCommands raise an error if no label is provided\"\n        args = ['label_command']\n        out, err = self.run_manage(args)\n        self.assertOutput(err, 'Enter at least one label')\n\n    def test_label_command_multiple_label(self):\n        \"User LabelCommands are executed multiple times if multiple labels are provided\"\n        args = ['label_command', 'testlabel', 'anotherlabel']\n        out, err = self.run_manage(args)\n        self.assertNoOutput(err)\n        self.assertOutput(out, \"EXECUTE:LabelCommand label=testlabel, options=[('pythonpath', None), ('settings', None), ('traceback', None), ('verbosity', '1')]\")\n        self.assertOutput(out, \"EXECUTE:LabelCommand label=anotherlabel, options=[('pythonpath', None), ('settings', None), ('traceback', None), ('verbosity', '1')]\")\n\nclass ArgumentOrder(AdminScriptTestCase):\n    \"\"\"Tests for 2-stage argument parsing scheme.\n\n    django-admin command arguments are parsed in 2 parts; the core arguments\n    (--settings, --traceback and --pythonpath) are parsed using a Lax parser.\n    This Lax parser ignores any unknown options. Then the full settings are\n    passed to the command parser, which extracts commands of interest to the\n    individual command.\n    \"\"\"\n    def setUp(self):\n        self.write_settings('settings.py', apps=['django.contrib.auth', 'django.contrib.contenttypes'])\n        self.write_settings('alternate_settings.py')\n\n    def tearDown(self):\n        self.remove_settings('settings.py')\n        self.remove_settings('alternate_settings.py')\n\n    def test_setting_then_option(self):\n        \"Options passed after settings are correctly handled\"\n        args = ['base_command', 'testlabel', '--settings=alternate_settings', '--option_a=x']\n        out, err = self.run_manage(args)\n        self.assertNoOutput(err)\n        self.assertOutput(out, \"EXECUTE:BaseCommand labels=('testlabel',), options=[('option_a', 'x'), ('option_b', '2'), ('option_c', '3'), ('pythonpath', None), ('settings', 'alternate_settings'), ('traceback', None), ('verbosity', '1')]\")\n\n    def test_setting_then_short_option(self):\n        \"Short options passed after settings are correctly handled\"\n        args = ['base_command', 'testlabel', '--settings=alternate_settings', '--option_a=x']\n        out, err = self.run_manage(args)\n        self.assertNoOutput(err)\n        self.assertOutput(out, \"EXECUTE:BaseCommand labels=('testlabel',), options=[('option_a', 'x'), ('option_b', '2'), ('option_c', '3'), ('pythonpath', None), ('settings', 'alternate_settings'), ('traceback', None), ('verbosity', '1')]\")\n\n    def test_option_then_setting(self):\n        \"Options passed before settings are correctly handled\"\n        args = ['base_command', 'testlabel', '--option_a=x', '--settings=alternate_settings']\n        out, err = self.run_manage(args)\n        self.assertNoOutput(err)\n        self.assertOutput(out, \"EXECUTE:BaseCommand labels=('testlabel',), options=[('option_a', 'x'), ('option_b', '2'), ('option_c', '3'), ('pythonpath', None), ('settings', 'alternate_settings'), ('traceback', None), ('verbosity', '1')]\")\n\n    def test_short_option_then_setting(self):\n        \"Short options passed before settings are correctly handled\"\n        args = ['base_command', 'testlabel', '-a', 'x', '--settings=alternate_settings']\n        out, err = self.run_manage(args)\n        self.assertNoOutput(err)\n        self.assertOutput(out, \"EXECUTE:BaseCommand labels=('testlabel',), options=[('option_a', 'x'), ('option_b', '2'), ('option_c', '3'), ('pythonpath', None), ('settings', 'alternate_settings'), ('traceback', None), ('verbosity', '1')]\")\n\n    def test_option_then_setting_then_option(self):\n        \"Options are correctly handled when they are passed before and after a setting\"\n        args = ['base_command', 'testlabel', '--option_a=x', '--settings=alternate_settings', '--option_b=y']\n        out, err = self.run_manage(args)\n        self.assertNoOutput(err)\n        self.assertOutput(out, \"EXECUTE:BaseCommand labels=('testlabel',), options=[('option_a', 'x'), ('option_b', 'y'), ('option_c', '3'), ('pythonpath', None), ('settings', 'alternate_settings'), ('traceback', None), ('verbosity', '1')]\")\n\n\nclass StartProject(LiveServerTestCase, AdminScriptTestCase):\n\n    def test_wrong_args(self):\n        \"Make sure passing the wrong kinds of arguments raises a CommandError\"\n        out, err = self.run_django_admin(['startproject'])\n        self.assertNoOutput(out)\n        self.assertOutput(err, \"you must provide a project name\")\n\n    def test_simple_project(self):\n        \"Make sure the startproject management command creates a project\"\n        args = ['startproject', 'testproject']\n        testproject_dir = os.path.join(test_dir, 'testproject')\n        self.addCleanup(shutil.rmtree, testproject_dir, True)\n\n        out, err = self.run_django_admin(args)\n        self.assertNoOutput(err)\n        self.assertTrue(os.path.isdir(testproject_dir))\n\n        # running again..\n        out, err = self.run_django_admin(args)\n        self.assertNoOutput(out)\n        self.assertOutput(err, \"already exists\")\n\n    def test_invalid_project_name(self):\n        \"Make sure the startproject management command validates a project name\"\n        args = ['startproject', '7testproject']\n        testproject_dir = os.path.join(test_dir, '7testproject')\n        self.addCleanup(shutil.rmtree, testproject_dir, True)\n\n        out, err = self.run_django_admin(args)\n        self.assertOutput(err, \"Error: '7testproject' is not a valid project name. Please make sure the name begins with a letter or underscore.\")\n        self.assertFalse(os.path.exists(testproject_dir))\n\n    def test_simple_project_different_directory(self):\n        \"Make sure the startproject management command creates a project in a specific directory\"\n        args = ['startproject', 'testproject', 'othertestproject']\n        testproject_dir = os.path.join(test_dir, 'othertestproject')\n        os.mkdir(testproject_dir)\n        self.addCleanup(shutil.rmtree, testproject_dir)\n\n        out, err = self.run_django_admin(args)\n        self.assertNoOutput(err)\n        self.assertTrue(os.path.exists(os.path.join(testproject_dir, 'manage.py')))\n\n        # running again..\n        out, err = self.run_django_admin(args)\n        self.assertNoOutput(out)\n        self.assertOutput(err, \"already exists\")\n\n    def test_custom_project_template(self):\n        \"Make sure the startproject management command is able to use a different project template\"\n        template_path = os.path.join(test_dir, 'admin_scripts', 'custom_templates', 'project_template')\n        args = ['startproject', '--template', template_path, 'customtestproject']\n        testproject_dir = os.path.join(test_dir, 'customtestproject')\n        self.addCleanup(shutil.rmtree, testproject_dir, True)\n\n        out, err = self.run_django_admin(args)\n        self.assertNoOutput(err)\n        self.assertTrue(os.path.isdir(testproject_dir))\n        self.assertTrue(os.path.exists(os.path.join(testproject_dir, 'additional_dir')))\n\n    def test_template_dir_with_trailing_slash(self):\n        \"Ticket 17475: Template dir passed has a trailing path separator\"\n        template_path = os.path.join(test_dir, 'admin_scripts', 'custom_templates', 'project_template' + os.sep)\n        args = ['startproject', '--template', template_path, 'customtestproject']\n        testproject_dir = os.path.join(test_dir, 'customtestproject')\n        self.addCleanup(shutil.rmtree, testproject_dir, True)\n\n        out, err = self.run_django_admin(args)\n        self.assertNoOutput(err)\n        self.assertTrue(os.path.isdir(testproject_dir))\n        self.assertTrue(os.path.exists(os.path.join(testproject_dir, 'additional_dir')))\n\n    def test_custom_project_template_from_tarball_by_path(self):\n        \"Make sure the startproject management command is able to use a different project template from a tarball\"\n        template_path = os.path.join(test_dir, 'admin_scripts', 'custom_templates', 'project_template.tgz')\n        args = ['startproject', '--template', template_path, 'tarballtestproject']\n        testproject_dir = os.path.join(test_dir, 'tarballtestproject')\n        self.addCleanup(shutil.rmtree, testproject_dir, True)\n\n        out, err = self.run_django_admin(args)\n        self.assertNoOutput(err)\n        self.assertTrue(os.path.isdir(testproject_dir))\n        self.assertTrue(os.path.exists(os.path.join(testproject_dir, 'run.py')))\n\n    def test_custom_project_template_from_tarball_to_alternative_location(self):\n        \"Startproject can use a project template from a tarball and create it in a specified location\"\n        template_path = os.path.join(test_dir, 'admin_scripts', 'custom_templates', 'project_template.tgz')\n        args = ['startproject', '--template', template_path, 'tarballtestproject', 'altlocation']\n        testproject_dir = os.path.join(test_dir, 'altlocation')\n        os.mkdir(testproject_dir)\n        self.addCleanup(shutil.rmtree, testproject_dir)\n\n        out, err = self.run_django_admin(args)\n        self.assertNoOutput(err)\n        self.assertTrue(os.path.isdir(testproject_dir))\n        self.assertTrue(os.path.exists(os.path.join(testproject_dir, 'run.py')))\n\n    def test_custom_project_template_from_tarball_by_url(self):\n        \"Make sure the startproject management command is able to use a different project template from a tarball via a url\"\n        template_url = '%s/admin_scripts/custom_templates/project_template.tgz' % self.live_server_url\n\n        args = ['startproject', '--template', template_url, 'urltestproject']\n        testproject_dir = os.path.join(test_dir, 'urltestproject')\n        self.addCleanup(shutil.rmtree, testproject_dir, True)\n\n        out, err = self.run_django_admin(args)\n        self.assertNoOutput(err)\n        self.assertTrue(os.path.isdir(testproject_dir))\n        self.assertTrue(os.path.exists(os.path.join(testproject_dir, 'run.py')))\n\n    def test_project_template_tarball_url(self):\n        \"Startproject management command handles project template tar/zip balls from non-canonical urls\"\n        template_url = '%s/admin_scripts/custom_templates/project_template.tgz/' % self.live_server_url\n\n        args = ['startproject', '--template', template_url, 'urltestproject']\n        testproject_dir = os.path.join(test_dir, 'urltestproject')\n        self.addCleanup(shutil.rmtree, testproject_dir, True)\n\n        out, err = self.run_django_admin(args)\n        self.assertNoOutput(err)\n        self.assertTrue(os.path.isdir(testproject_dir))\n        self.assertTrue(os.path.exists(os.path.join(testproject_dir, 'run.py')))\n\n    def test_file_without_extension(self):\n        \"Make sure the startproject management command is able to render custom files\"\n        template_path = os.path.join(test_dir, 'admin_scripts', 'custom_templates', 'project_template')\n        args = ['startproject', '--template', template_path, 'customtestproject', '-e', 'txt', '-n', 'Procfile']\n        testproject_dir = os.path.join(test_dir, 'customtestproject')\n        self.addCleanup(shutil.rmtree, testproject_dir, True)\n\n        out, err = self.run_django_admin(args)\n        self.assertNoOutput(err)\n        self.assertTrue(os.path.isdir(testproject_dir))\n        self.assertTrue(os.path.exists(os.path.join(testproject_dir, 'additional_dir')))\n        base_path = os.path.join(testproject_dir, 'additional_dir')\n        for f in ('Procfile', 'additional_file.py', 'requirements.txt'):\n            self.assertTrue(os.path.exists(os.path.join(base_path, f)))\n            with open(os.path.join(base_path, f)) as fh:\n                self.assertEqual(fh.read(),\n                    '# some file for customtestproject test project')\n\n    def test_custom_project_template_context_variables(self):\n        \"Make sure template context variables are rendered with proper values\"\n        template_path = os.path.join(test_dir, 'admin_scripts', 'custom_templates', 'project_template')\n        args = ['startproject', '--template', template_path, 'another_project', 'project_dir']\n        testproject_dir = os.path.join(test_dir, 'project_dir')\n        os.mkdir(testproject_dir)\n        self.addCleanup(shutil.rmtree, testproject_dir)\n        out, err = self.run_django_admin(args)\n        self.assertNoOutput(err)\n        test_manage_py = os.path.join(testproject_dir, 'manage.py')\n        with open(test_manage_py, 'r') as fp:\n            content = force_text(fp.read())\n            self.assertIn(\"project_name = 'another_project'\", content)\n            self.assertIn(\"project_directory = '%s'\" % testproject_dir, content)\n\n    def test_no_escaping_of_project_variables(self):\n        \"Make sure template context variables are not html escaped\"\n        # We're using a custom command so we need the alternate settings\n        self.write_settings('alternate_settings.py')\n        self.addCleanup(self.remove_settings, 'alternate_settings.py')\n        template_path = os.path.join(test_dir, 'admin_scripts', 'custom_templates', 'project_template')\n        args = ['custom_startproject', '--template', template_path, 'another_project', 'project_dir', '--extra', '<&>', '--settings=alternate_settings']\n        testproject_dir = os.path.join(test_dir, 'project_dir')\n        os.mkdir(testproject_dir)\n        self.addCleanup(shutil.rmtree, testproject_dir)\n        out, err = self.run_manage(args)\n        self.assertNoOutput(err)\n        test_manage_py = os.path.join(testproject_dir, 'additional_dir', 'extra.py')\n        with open(test_manage_py, 'r') as fp:\n            content = fp.read()\n            self.assertIn(\"<&>\", content)\n\n    def test_custom_project_destination_missing(self):\n        \"\"\"\n        Make sure an exception is raised when the provided\n        destination directory doesn't exist\n        \"\"\"\n        template_path = os.path.join(test_dir, 'admin_scripts', 'custom_templates', 'project_template')\n        args = ['startproject', '--template', template_path, 'yet_another_project', 'project_dir2']\n        testproject_dir = os.path.join(test_dir, 'project_dir2')\n        out, err = self.run_django_admin(args)\n        self.assertNoOutput(out)\n        self.assertOutput(err, \"Destination directory '%s' does not exist, please create it first.\" % testproject_dir)\n        self.assertFalse(os.path.exists(testproject_dir))\n\n    def test_custom_project_template_with_non_ascii_templates(self):\n        \"Ticket 18091: Make sure the startproject management command is able to render templates with non-ASCII content\"\n        template_path = os.path.join(test_dir, 'admin_scripts', 'custom_templates', 'project_template')\n        args = ['startproject', '--template', template_path, '--extension=txt', 'customtestproject']\n        testproject_dir = os.path.join(test_dir, 'customtestproject')\n        self.addCleanup(shutil.rmtree, testproject_dir, True)\n\n        out, err = self.run_django_admin(args)\n        self.assertNoOutput(err)\n        self.assertTrue(os.path.isdir(testproject_dir))\n        path = os.path.join(testproject_dir, 'ticket-18091-non-ascii-template.txt')\n        with codecs.open(path, 'r', 'utf-8') as f:\n            self.assertEqual(f.read(),\n                'Some non-ASCII text for testing ticket #18091:\\nüäö €\\n')\n\n\nclass DiffSettings(AdminScriptTestCase):\n    \"\"\"Tests for diffsettings management command.\"\"\"\n    def test_basic(self):\n        \"Runs without error and emits settings diff.\"\n        self.write_settings('settings_to_diff.py', sdict={'FOO': '\"bar\"'})\n        self.addCleanup(self.remove_settings, 'settings_to_diff.py')\n        args = ['diffsettings', '--settings=settings_to_diff']\n        out, err = self.run_manage(args)\n        self.assertNoOutput(err)\n        self.assertOutput(out, \"FOO = 'bar'  ###\")\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_scripts/urls.py",
    "content": "import os\nfrom django.conf.urls import patterns\nfrom django.utils._os import upath\n\nhere = os.path.dirname(upath(__file__))\n\nurlpatterns = patterns('',\n    (r'^custom_templates/(?P<path>.*)$', 'django.views.static.serve', {\n        'document_root': os.path.join(here, 'custom_templates'),\n    }),\n)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_util/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_util/models.py",
    "content": "from django.db import models\nfrom django.utils import six\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\nclass Article(models.Model):\n    \"\"\"\n    A simple Article model for testing\n    \"\"\"\n    site = models.ForeignKey('sites.Site', related_name=\"admin_articles\")\n    title = models.CharField(max_length=100)\n    title2 = models.CharField(max_length=100, verbose_name=\"another name\")\n    created = models.DateTimeField()\n\n    def test_from_model(self):\n        return \"nothing\"\n\n    def test_from_model_with_override(self):\n        return \"nothing\"\n    test_from_model_with_override.short_description = \"not What you Expect\"\n\n@python_2_unicode_compatible\nclass Count(models.Model):\n    num = models.PositiveSmallIntegerField()\n    parent = models.ForeignKey('self', null=True)\n\n    def __str__(self):\n        return six.text_type(self.num)\n\nclass Event(models.Model):\n    date = models.DateTimeField(auto_now_add=True)\n\nclass Location(models.Model):\n    event = models.OneToOneField(Event, verbose_name='awesome event')\n\nclass Guest(models.Model):\n    event = models.OneToOneField(Event)\n    name = models.CharField(max_length=255)\n\n    class Meta:\n        verbose_name = \"awesome guest\"\n\nclass EventGuide(models.Model):\n    event = models.ForeignKey(Event, on_delete=models.DO_NOTHING)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_util/tests.py",
    "content": "from __future__ import absolute_import, unicode_literals\n\nfrom datetime import datetime\n\nfrom django.conf import settings\nfrom django.contrib import admin\nfrom django.contrib.admin import helpers\nfrom django.contrib.admin.util import (display_for_field, label_for_field,\n    lookup_field, NestedObjects)\nfrom django.contrib.admin.views.main import EMPTY_CHANGELIST_VALUE\nfrom django.contrib.sites.models import Site\nfrom django.db import models, DEFAULT_DB_ALIAS\nfrom django import forms\nfrom django.test import TestCase\nfrom django.utils import unittest\nfrom django.utils.formats import localize\nfrom django.utils.safestring import mark_safe\nfrom django.utils import six\n\nfrom .models import Article, Count, Event, Location, EventGuide\n\n\nclass NestedObjectsTests(TestCase):\n    \"\"\"\n    Tests for ``NestedObject`` utility collection.\n\n    \"\"\"\n    def setUp(self):\n        self.n = NestedObjects(using=DEFAULT_DB_ALIAS)\n        self.objs = [Count.objects.create(num=i) for i in range(5)]\n\n    def _check(self, target):\n        self.assertEqual(self.n.nested(lambda obj: obj.num), target)\n\n    def _connect(self, i, j):\n        self.objs[i].parent = self.objs[j]\n        self.objs[i].save()\n\n    def _collect(self, *indices):\n        self.n.collect([self.objs[i] for i in indices])\n\n    def test_unrelated_roots(self):\n        self._connect(2, 1)\n        self._collect(0)\n        self._collect(1)\n        self._check([0, 1, [2]])\n\n    def test_siblings(self):\n        self._connect(1, 0)\n        self._connect(2, 0)\n        self._collect(0)\n        self._check([0, [1, 2]])\n\n    def test_non_added_parent(self):\n        self._connect(0, 1)\n        self._collect(0)\n        self._check([0])\n\n    def test_cyclic(self):\n        self._connect(0, 2)\n        self._connect(1, 0)\n        self._connect(2, 1)\n        self._collect(0)\n        self._check([0, [1, [2]]])\n\n    def test_queries(self):\n        self._connect(1, 0)\n        self._connect(2, 0)\n        # 1 query to fetch all children of 0 (1 and 2)\n        # 1 query to fetch all children of 1 and 2 (none)\n        # Should not require additional queries to populate the nested graph.\n        self.assertNumQueries(2, self._collect, 0)\n\n    def test_on_delete_do_nothing(self):\n        \"\"\"\n        Check that the nested collector doesn't query for DO_NOTHING objects.\n        \"\"\"\n        n = NestedObjects(using=DEFAULT_DB_ALIAS)\n        objs = [Event.objects.create()]\n        EventGuide.objects.create(event=objs[0])\n        with self.assertNumQueries(2):\n            # One for Location, one for Guest, and no query for EventGuide\n            n.collect(objs)\n\nclass UtilTests(unittest.TestCase):\n    def test_values_from_lookup_field(self):\n        \"\"\"\n        Regression test for #12654: lookup_field\n        \"\"\"\n        SITE_NAME = 'example.com'\n        TITLE_TEXT = 'Some title'\n        CREATED_DATE = datetime.min\n        ADMIN_METHOD = 'admin method'\n        SIMPLE_FUNCTION = 'function'\n        INSTANCE_ATTRIBUTE = 'attr'\n\n        class MockModelAdmin(object):\n            def get_admin_value(self, obj):\n                return ADMIN_METHOD\n\n        simple_function = lambda obj: SIMPLE_FUNCTION\n\n        article = Article(\n            site=Site(domain=SITE_NAME),\n            title=TITLE_TEXT,\n            created=CREATED_DATE,\n        )\n        article.non_field = INSTANCE_ATTRIBUTE\n\n        verifications = (\n            ('site', SITE_NAME),\n            ('created', localize(CREATED_DATE)),\n            ('title', TITLE_TEXT),\n            ('get_admin_value', ADMIN_METHOD),\n            (simple_function, SIMPLE_FUNCTION),\n            ('test_from_model', article.test_from_model()),\n            ('non_field', INSTANCE_ATTRIBUTE)\n        )\n\n        mock_admin = MockModelAdmin()\n        for name, value in verifications:\n            field, attr, resolved_value = lookup_field(name, article, mock_admin)\n\n            if field is not None:\n                resolved_value = display_for_field(resolved_value, field)\n\n            self.assertEqual(value, resolved_value)\n\n    def test_null_display_for_field(self):\n        \"\"\"\n        Regression test for #12550: display_for_field should handle None\n        value.\n        \"\"\"\n        display_value = display_for_field(None, models.CharField())\n        self.assertEqual(display_value, EMPTY_CHANGELIST_VALUE)\n\n        display_value = display_for_field(None, models.CharField(\n            choices=(\n                (None, \"test_none\"),\n            )\n        ))\n        self.assertEqual(display_value, \"test_none\")\n\n        display_value = display_for_field(None, models.DateField())\n        self.assertEqual(display_value, EMPTY_CHANGELIST_VALUE)\n\n        display_value = display_for_field(None, models.TimeField())\n        self.assertEqual(display_value, EMPTY_CHANGELIST_VALUE)\n\n        # Regression test for #13071: NullBooleanField has special\n        # handling.\n        display_value = display_for_field(None, models.NullBooleanField())\n        expected = '<img src=\"%sadmin/img/icon-unknown.gif\" alt=\"None\" />' % settings.STATIC_URL\n        self.assertEqual(display_value, expected)\n\n        display_value = display_for_field(None, models.DecimalField())\n        self.assertEqual(display_value, EMPTY_CHANGELIST_VALUE)\n\n        display_value = display_for_field(None, models.FloatField())\n        self.assertEqual(display_value, EMPTY_CHANGELIST_VALUE)\n\n    def test_label_for_field(self):\n        \"\"\"\n        Tests for label_for_field\n        \"\"\"\n        self.assertEqual(\n            label_for_field(\"title\", Article),\n            \"title\"\n        )\n        self.assertEqual(\n            label_for_field(\"title2\", Article),\n            \"another name\"\n        )\n        self.assertEqual(\n            label_for_field(\"title2\", Article, return_attr=True),\n            (\"another name\", None)\n        )\n\n        self.assertEqual(\n            label_for_field(\"__unicode__\", Article),\n            \"article\"\n        )\n        self.assertEqual(\n            label_for_field(\"__str__\", Article),\n            str(\"article\")\n        )\n\n        self.assertRaises(\n            AttributeError,\n            lambda: label_for_field(\"unknown\", Article)\n        )\n\n        def test_callable(obj):\n            return \"nothing\"\n        self.assertEqual(\n            label_for_field(test_callable, Article),\n            \"Test callable\"\n        )\n        self.assertEqual(\n            label_for_field(test_callable, Article, return_attr=True),\n            (\"Test callable\", test_callable)\n        )\n\n        self.assertEqual(\n            label_for_field(\"test_from_model\", Article),\n            \"Test from model\"\n        )\n        self.assertEqual(\n            label_for_field(\"test_from_model\", Article, return_attr=True),\n            (\"Test from model\", Article.test_from_model)\n        )\n        self.assertEqual(\n            label_for_field(\"test_from_model_with_override\", Article),\n            \"not What you Expect\"\n        )\n\n        self.assertEqual(\n            label_for_field(lambda x: \"nothing\", Article),\n            \"--\"\n        )\n\n        class MockModelAdmin(object):\n            def test_from_model(self, obj):\n                return \"nothing\"\n            test_from_model.short_description = \"not Really the Model\"\n\n        self.assertEqual(\n            label_for_field(\"test_from_model\", Article, model_admin=MockModelAdmin),\n            \"not Really the Model\"\n        )\n        self.assertEqual(\n            label_for_field(\"test_from_model\", Article,\n                model_admin = MockModelAdmin,\n                return_attr = True\n            ),\n            (\"not Really the Model\", MockModelAdmin.test_from_model)\n        )\n\n    def test_related_name(self):\n        \"\"\"\n        Regression test for #13963\n        \"\"\"\n        self.assertEqual(\n            label_for_field('location', Event, return_attr=True),\n            ('location', None),\n        )\n        self.assertEqual(\n            label_for_field('event', Location, return_attr=True),\n            ('awesome event', None),\n        )\n        self.assertEqual(\n            label_for_field('guest', Event, return_attr=True),\n            ('awesome guest', None),\n        )\n\n    def test_logentry_unicode(self):\n        \"\"\"\n        Regression test for #15661\n        \"\"\"\n        log_entry = admin.models.LogEntry()\n\n        log_entry.action_flag = admin.models.ADDITION\n        self.assertTrue(\n            six.text_type(log_entry).startswith('Added ')\n        )\n\n        log_entry.action_flag = admin.models.CHANGE\n        self.assertTrue(\n            six.text_type(log_entry).startswith('Changed ')\n        )\n\n        log_entry.action_flag = admin.models.DELETION\n        self.assertTrue(\n            six.text_type(log_entry).startswith('Deleted ')\n        )\n\n        # Make sure custom action_flags works\n        log_entry.action_flag = 4\n        self.assertEqual(six.text_type(log_entry), 'LogEntry Object')\n\n    def test_safestring_in_field_label(self):\n        # safestring should not be escaped\n        class MyForm(forms.Form):\n            text = forms.CharField(label=mark_safe('<i>text</i>'))\n            cb   = forms.BooleanField(label=mark_safe('<i>cb</i>'))\n\n        form = MyForm()\n        self.assertEqual(helpers.AdminField(form, 'text', is_first=False).label_tag(),\n                         '<label for=\"id_text\" class=\"required inline\"><i>text</i>:</label>')\n        self.assertEqual(helpers.AdminField(form, 'cb', is_first=False).label_tag(),\n                         '<label for=\"id_cb\" class=\"vCheckboxLabel required inline\"><i>cb</i></label>')\n\n        # normal strings needs to be escaped\n        class MyForm(forms.Form):\n            text = forms.CharField(label='&text')\n            cb   = forms.BooleanField(label='&cb')\n\n        form = MyForm()\n        self.assertEqual(helpers.AdminField(form, 'text', is_first=False).label_tag(),\n                         '<label for=\"id_text\" class=\"required inline\">&amp;text:</label>')\n        self.assertEqual(helpers.AdminField(form, 'cb', is_first=False).label_tag(),\n                         '<label for=\"id_cb\" class=\"vCheckboxLabel required inline\">&amp;cb</label>')\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_validation/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_validation/models.py",
    "content": "\"\"\"\nTests of ModelAdmin validation logic.\n\"\"\"\n\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\nclass Album(models.Model):\n    title = models.CharField(max_length=150)\n\n\n@python_2_unicode_compatible\nclass Song(models.Model):\n    title = models.CharField(max_length=150)\n    album = models.ForeignKey(Album)\n    original_release = models.DateField(editable=False)\n\n    class Meta:\n        ordering = ('title',)\n\n    def __str__(self):\n        return self.title\n\n    def readonly_method_on_model(self):\n        # does nothing\n        pass\n\n\nclass TwoAlbumFKAndAnE(models.Model):\n    album1 = models.ForeignKey(Album, related_name=\"album1_set\")\n    album2 = models.ForeignKey(Album, related_name=\"album2_set\")\n    e = models.CharField(max_length=1)\n\n\nclass Author(models.Model):\n    name = models.CharField(max_length=100)\n\n\nclass Book(models.Model):\n    name = models.CharField(max_length=100)\n    subtitle = models.CharField(max_length=100)\n    price = models.FloatField()\n    authors = models.ManyToManyField(Author, through='AuthorsBooks')\n\n\nclass AuthorsBooks(models.Model):\n    author = models.ForeignKey(Author)\n    book = models.ForeignKey(Book)\n\n\nclass State(models.Model):\n    name = models.CharField(max_length=15)\n\n\nclass City(models.Model):\n    state = models.ForeignKey(State)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_validation/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom django import forms\nfrom django.contrib import admin\nfrom django.contrib.admin.validation import validate, validate_inline\nfrom django.core.exceptions import ImproperlyConfigured\nfrom django.test import TestCase\n\nfrom .models import Song, Book, Album, TwoAlbumFKAndAnE, State, City\n\n\nclass SongForm(forms.ModelForm):\n    pass\n\nclass ValidFields(admin.ModelAdmin):\n    form = SongForm\n    fields = ['title']\n\nclass InvalidFields(admin.ModelAdmin):\n    form = SongForm\n    fields = ['spam']\n\nclass ValidFormFieldsets(admin.ModelAdmin):\n    def get_form(self, request, obj=None, **kwargs):\n        class ExtraFieldForm(SongForm):\n            name = forms.CharField(max_length=50)\n        return ExtraFieldForm\n\n    fieldsets = (\n        (None, {\n            'fields': ('name',),\n        }),\n    )\n\nclass ValidationTestCase(TestCase):\n\n    def test_readonly_and_editable(self):\n        class SongAdmin(admin.ModelAdmin):\n            readonly_fields = [\"original_release\"]\n            fieldsets = [\n                (None, {\n                    \"fields\": [\"title\", \"original_release\"],\n                }),\n            ]\n        validate(SongAdmin, Song)\n\n    def test_custom_modelforms_with_fields_fieldsets(self):\n        \"\"\"\n        # Regression test for #8027: custom ModelForms with fields/fieldsets\n        \"\"\"\n        validate(ValidFields, Song)\n        self.assertRaisesMessage(ImproperlyConfigured,\n            \"'InvalidFields.fields' refers to field 'spam' that is missing from the form.\",\n            validate,\n            InvalidFields, Song)\n\n    def test_custom_get_form_with_fieldsets(self):\n        \"\"\"\n        Ensure that the fieldsets validation is skipped when the ModelAdmin.get_form() method\n        is overridden.\n        Refs #19445.\n        \"\"\"\n        validate(ValidFormFieldsets, Song)\n\n    def test_exclude_values(self):\n        \"\"\"\n        Tests for basic validation of 'exclude' option values (#12689)\n        \"\"\"\n        class ExcludedFields1(admin.ModelAdmin):\n            exclude = ('foo')\n        self.assertRaisesMessage(ImproperlyConfigured,\n            \"'ExcludedFields1.exclude' must be a list or tuple.\",\n            validate,\n            ExcludedFields1, Book)\n\n    def test_exclude_duplicate_values(self):\n        class ExcludedFields2(admin.ModelAdmin):\n            exclude = ('name', 'name')\n        self.assertRaisesMessage(ImproperlyConfigured,\n            \"There are duplicate field(s) in ExcludedFields2.exclude\",\n            validate,\n            ExcludedFields2, Book)\n\n    def test_exclude_in_inline(self):\n        class ExcludedFieldsInline(admin.TabularInline):\n            model = Song\n            exclude = ('foo')\n\n        class ExcludedFieldsAlbumAdmin(admin.ModelAdmin):\n            model = Album\n            inlines = [ExcludedFieldsInline]\n\n        self.assertRaisesMessage(ImproperlyConfigured,\n            \"'ExcludedFieldsInline.exclude' must be a list or tuple.\",\n            validate,\n            ExcludedFieldsAlbumAdmin, Album)\n\n    def test_exclude_inline_model_admin(self):\n        \"\"\"\n        # Regression test for #9932 - exclude in InlineModelAdmin\n        # should not contain the ForeignKey field used in ModelAdmin.model\n        \"\"\"\n        class SongInline(admin.StackedInline):\n            model = Song\n            exclude = ['album']\n\n        class AlbumAdmin(admin.ModelAdmin):\n            model = Album\n            inlines = [SongInline]\n\n        self.assertRaisesMessage(ImproperlyConfigured,\n            \"SongInline cannot exclude the field 'album' - this is the foreign key to the parent model admin_validation.Album.\",\n            validate,\n            AlbumAdmin, Album)\n\n    def test_app_label_in_admin_validation(self):\n        \"\"\"\n        Regression test for #15669 - Include app label in admin validation messages\n        \"\"\"\n        class RawIdNonexistingAdmin(admin.ModelAdmin):\n            raw_id_fields = ('nonexisting',)\n\n        self.assertRaisesMessage(ImproperlyConfigured,\n            \"'RawIdNonexistingAdmin.raw_id_fields' refers to field 'nonexisting' that is missing from model 'admin_validation.Album'.\",\n            validate,\n            RawIdNonexistingAdmin, Album)\n\n    def test_fk_exclusion(self):\n        \"\"\"\n        Regression test for #11709 - when testing for fk excluding (when exclude is\n        given) make sure fk_name is honored or things blow up when there is more\n        than one fk to the parent model.\n        \"\"\"\n        class TwoAlbumFKAndAnEInline(admin.TabularInline):\n            model = TwoAlbumFKAndAnE\n            exclude = (\"e\",)\n            fk_name = \"album1\"\n        validate_inline(TwoAlbumFKAndAnEInline, None, Album)\n\n    def test_inline_self_validation(self):\n        class TwoAlbumFKAndAnEInline(admin.TabularInline):\n            model = TwoAlbumFKAndAnE\n\n        self.assertRaisesMessage(Exception,\n            \"<class 'regressiontests.admin_validation.models.TwoAlbumFKAndAnE'> has more than 1 ForeignKey to <class 'regressiontests.admin_validation.models.Album'>\",\n            validate_inline,\n            TwoAlbumFKAndAnEInline, None, Album)\n\n    def test_inline_with_specified(self):\n        class TwoAlbumFKAndAnEInline(admin.TabularInline):\n            model = TwoAlbumFKAndAnE\n            fk_name = \"album1\"\n        validate_inline(TwoAlbumFKAndAnEInline, None, Album)\n\n    def test_readonly(self):\n        class SongAdmin(admin.ModelAdmin):\n            readonly_fields = (\"title\",)\n\n        validate(SongAdmin, Song)\n\n    def test_readonly_on_method(self):\n        def my_function(obj):\n            pass\n\n        class SongAdmin(admin.ModelAdmin):\n            readonly_fields = (my_function,)\n\n        validate(SongAdmin, Song)\n\n    def test_readonly_on_modeladmin(self):\n        class SongAdmin(admin.ModelAdmin):\n            readonly_fields = (\"readonly_method_on_modeladmin\",)\n\n            def readonly_method_on_modeladmin(self, obj):\n                pass\n\n        validate(SongAdmin, Song)\n\n    def test_readonly_method_on_model(self):\n        class SongAdmin(admin.ModelAdmin):\n            readonly_fields = (\"readonly_method_on_model\",)\n\n        validate(SongAdmin, Song)\n\n    def test_nonexistant_field(self):\n        class SongAdmin(admin.ModelAdmin):\n            readonly_fields = (\"title\", \"nonexistant\")\n\n        self.assertRaisesMessage(ImproperlyConfigured,\n            \"SongAdmin.readonly_fields[1], 'nonexistant' is not a callable or an attribute of 'SongAdmin' or found in the model 'Song'.\",\n            validate,\n            SongAdmin, Song)\n\n    def test_nonexistant_field_on_inline(self):\n        class CityInline(admin.TabularInline):\n            model = City\n            readonly_fields=['i_dont_exist'] # Missing attribute\n\n        self.assertRaisesMessage(ImproperlyConfigured,\n            \"CityInline.readonly_fields[0], 'i_dont_exist' is not a callable or an attribute of 'CityInline' or found in the model 'City'.\",\n            validate_inline,\n            CityInline, None, State)\n\n    def test_extra(self):\n        class SongAdmin(admin.ModelAdmin):\n            def awesome_song(self, instance):\n                if instance.title == \"Born to Run\":\n                    return \"Best Ever!\"\n                return \"Status unknown.\"\n        validate(SongAdmin, Song)\n\n    def test_readonly_lambda(self):\n        class SongAdmin(admin.ModelAdmin):\n            readonly_fields = (lambda obj: \"test\",)\n\n        validate(SongAdmin, Song)\n\n    def test_graceful_m2m_fail(self):\n        \"\"\"\n        Regression test for #12203/#12237 - Fail more gracefully when a M2M field that\n        specifies the 'through' option is included in the 'fields' or the 'fieldsets'\n        ModelAdmin options.\n        \"\"\"\n\n        class BookAdmin(admin.ModelAdmin):\n            fields = ['authors']\n\n        self.assertRaisesMessage(ImproperlyConfigured,\n            \"'BookAdmin.fields' can't include the ManyToManyField field 'authors' because 'authors' manually specifies a 'through' model.\",\n            validate,\n            BookAdmin, Book)\n\n    def test_cannot_include_through(self):\n        class FieldsetBookAdmin(admin.ModelAdmin):\n            fieldsets = (\n                ('Header 1', {'fields': ('name',)}),\n                ('Header 2', {'fields': ('authors',)}),\n            )\n        self.assertRaisesMessage(ImproperlyConfigured,\n            \"'FieldsetBookAdmin.fieldsets[1][1]['fields']' can't include the ManyToManyField field 'authors' because 'authors' manually specifies a 'through' model.\",\n            validate,\n            FieldsetBookAdmin, Book)\n\n    def test_nested_fields(self):\n        class NestedFieldsAdmin(admin.ModelAdmin):\n           fields = ('price', ('name', 'subtitle'))\n        validate(NestedFieldsAdmin, Book)\n\n    def test_nested_fieldsets(self):\n        class NestedFieldsetAdmin(admin.ModelAdmin):\n           fieldsets = (\n               ('Main', {'fields': ('price', ('name', 'subtitle'))}),\n           )\n        validate(NestedFieldsetAdmin, Book)\n\n    def test_explicit_through_override(self):\n        \"\"\"\n        Regression test for #12209 -- If the explicitly provided through model\n        is specified as a string, the admin should still be able use\n        Model.m2m_field.through\n        \"\"\"\n\n        class AuthorsInline(admin.TabularInline):\n            model = Book.authors.through\n\n        class BookAdmin(admin.ModelAdmin):\n            inlines = [AuthorsInline]\n\n        # If the through model is still a string (and hasn't been resolved to a model)\n        # the validation will fail.\n        validate(BookAdmin, Book)\n\n    def test_non_model_fields(self):\n        \"\"\"\n        Regression for ensuring ModelAdmin.fields can contain non-model fields\n        that broke with r11737\n        \"\"\"\n        class SongForm(forms.ModelForm):\n            extra_data = forms.CharField()\n            class Meta:\n                model = Song\n\n        class FieldsOnFormOnlyAdmin(admin.ModelAdmin):\n            form = SongForm\n            fields = ['title', 'extra_data']\n\n        validate(FieldsOnFormOnlyAdmin, Song)\n\n    def test_non_model_first_field(self):\n        \"\"\"\n        Regression for ensuring ModelAdmin.field can handle first elem being a\n        non-model field (test fix for UnboundLocalError introduced with r16225).\n        \"\"\"\n        class SongForm(forms.ModelForm):\n            extra_data = forms.CharField()\n            class Meta:\n                model = Song\n\n        class FieldsOnFormOnlyAdmin(admin.ModelAdmin):\n            form = SongForm\n            fields = ['extra_data', 'title']\n\n        validate(FieldsOnFormOnlyAdmin, Song)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_views/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_views/admin.py",
    "content": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import, unicode_literals\n\nimport tempfile\nimport os\n\nfrom django import forms\nfrom django.contrib import admin\nfrom django.contrib.admin.views.main import ChangeList\nfrom django.core.files.storage import FileSystemStorage\nfrom django.core.mail import EmailMessage\nfrom django.conf.urls import patterns, url\nfrom django.db import models\nfrom django.forms.models import BaseModelFormSet\nfrom django.http import HttpResponse\nfrom django.contrib.admin import BooleanFieldListFilter\n\nfrom .models import (Article, Chapter, Account, Media, Child, Parent, Picture,\n    Widget, DooHickey, Grommet, Whatsit, FancyDoodad, Category, Link,\n    PrePopulatedPost, PrePopulatedSubPost, CustomArticle, Section,\n    ModelWithStringPrimaryKey, Color, Thing, Actor, Inquisition, Sketch, Person,\n    Persona, Subscriber, ExternalSubscriber, OldSubscriber, Vodcast, EmptyModel,\n    Fabric, Gallery, Language, Recommendation, Recommender, Collector, Post,\n    Gadget, Villain, SuperVillain, Plot, PlotDetails, CyclicOne, CyclicTwo,\n    WorkHour, Reservation, FoodDelivery, RowLevelChangePermissionModel, Paper,\n    CoverLetter, Story, OtherStory, Book, Promo, ChapterXtra1, Pizza, Topping,\n    Album, Question, Answer, ComplexSortedPerson, PrePopulatedPostLargeSlug,\n    AdminOrderedField, AdminOrderedModelMethod, AdminOrderedAdminMethod,\n    AdminOrderedCallable, Report, Color2, UnorderedObject, MainPrepopulated,\n    RelatedPrepopulated, UndeletableObject, UserMessenger, Simple, Choice,\n    ShortMessage, Telegram)\n\n\ndef callable_year(dt_value):\n    try:\n        return dt_value.year\n    except AttributeError:\n        return None\ncallable_year.admin_order_field = 'date'\n\n\nclass ArticleInline(admin.TabularInline):\n    model = Article\n    prepopulated_fields = {\n        'title' : ('content',)\n    }\n    fieldsets=(\n        ('Some fields', {\n            'classes': ('collapse',),\n            'fields': ('title', 'content')\n        }),\n        ('Some other fields', {\n            'classes': ('wide',),\n            'fields': ('date', 'section')\n        })\n    )\n\nclass ChapterInline(admin.TabularInline):\n    model = Chapter\n\n\nclass ChapterXtra1Admin(admin.ModelAdmin):\n    list_filter = ('chap',\n                   'chap__title',\n                   'chap__book',\n                   'chap__book__name',\n                   'chap__book__promo',\n                   'chap__book__promo__name',)\n\n\nclass ArticleAdmin(admin.ModelAdmin):\n    list_display = ('content', 'date', callable_year, 'model_year', 'modeladmin_year')\n    list_filter = ('date', 'section')\n\n    def changelist_view(self, request):\n        \"Test that extra_context works\"\n        return super(ArticleAdmin, self).changelist_view(\n            request, extra_context={\n                'extra_var': 'Hello!'\n            }\n        )\n\n    def modeladmin_year(self, obj):\n        return obj.date.year\n    modeladmin_year.admin_order_field = 'date'\n    modeladmin_year.short_description = None\n\n    def delete_model(self, request, obj):\n        EmailMessage(\n            'Greetings from a deleted object',\n            'I hereby inform you that some user deleted me',\n            'from@example.com',\n            ['to@example.com']\n        ).send()\n        return super(ArticleAdmin, self).delete_model(request, obj)\n\n    def save_model(self, request, obj, form, change=True):\n        EmailMessage(\n            'Greetings from a created object',\n            'I hereby inform you that some user created me',\n            'from@example.com',\n            ['to@example.com']\n        ).send()\n        return super(ArticleAdmin, self).save_model(request, obj, form, change)\n\n\nclass RowLevelChangePermissionModelAdmin(admin.ModelAdmin):\n    def has_change_permission(self, request, obj=None):\n        \"\"\" Only allow changing objects with even id number \"\"\"\n        return request.user.is_staff and (obj is not None) and (obj.id % 2 == 0)\n\n\nclass CustomArticleAdmin(admin.ModelAdmin):\n    \"\"\"\n    Tests various hooks for using custom templates and contexts.\n    \"\"\"\n    change_list_template = 'custom_admin/change_list.html'\n    change_form_template = 'custom_admin/change_form.html'\n    add_form_template = 'custom_admin/add_form.html'\n    object_history_template = 'custom_admin/object_history.html'\n    delete_confirmation_template = 'custom_admin/delete_confirmation.html'\n    delete_selected_confirmation_template = 'custom_admin/delete_selected_confirmation.html'\n\n    def changelist_view(self, request):\n        \"Test that extra_context works\"\n        return super(CustomArticleAdmin, self).changelist_view(\n            request, extra_context={\n                'extra_var': 'Hello!'\n            }\n        )\n\n\nclass ThingAdmin(admin.ModelAdmin):\n    list_filter = ('color__warm', 'color__value', 'pub_date',)\n\n\nclass InquisitionAdmin(admin.ModelAdmin):\n    list_display = ('leader', 'country', 'expected')\n\n\nclass SketchAdmin(admin.ModelAdmin):\n    raw_id_fields = ('inquisition',)\n\n\nclass FabricAdmin(admin.ModelAdmin):\n    list_display = ('surface',)\n    list_filter = ('surface',)\n\n\nclass BasePersonModelFormSet(BaseModelFormSet):\n    def clean(self):\n        for person_dict in self.cleaned_data:\n            person = person_dict.get('id')\n            alive = person_dict.get('alive')\n            if person and alive and person.name == \"Grace Hopper\":\n                raise forms.ValidationError(\"Grace is not a Zombie\")\n\n\nclass PersonAdmin(admin.ModelAdmin):\n    list_display = ('name', 'gender', 'alive')\n    list_editable = ('gender', 'alive')\n    list_filter = ('gender',)\n    search_fields = ('^name',)\n    save_as = True\n\n    def get_changelist_formset(self, request, **kwargs):\n        return super(PersonAdmin, self).get_changelist_formset(request,\n            formset=BasePersonModelFormSet, **kwargs)\n\n    def queryset(self, request):\n        # Order by a field that isn't in list display, to be able to test\n        # whether ordering is preserved.\n        return super(PersonAdmin, self).queryset(request).order_by('age')\n\n\nclass FooAccount(Account):\n    \"\"\"A service-specific account of type Foo.\"\"\"\n    servicename = 'foo'\n\n\nclass BarAccount(Account):\n    \"\"\"A service-specific account of type Bar.\"\"\"\n    servicename = 'bar'\n\n\nclass FooAccountAdmin(admin.StackedInline):\n    model = FooAccount\n    extra = 1\n\n\nclass BarAccountAdmin(admin.StackedInline):\n    model = BarAccount\n    extra = 1\n\n\nclass PersonaAdmin(admin.ModelAdmin):\n    inlines = (\n        FooAccountAdmin,\n        BarAccountAdmin\n    )\n\n\nclass SubscriberAdmin(admin.ModelAdmin):\n    actions = ['mail_admin']\n\n    def mail_admin(self, request, selected):\n        EmailMessage(\n            'Greetings from a ModelAdmin action',\n            'This is the test email from a admin action',\n            'from@example.com',\n            ['to@example.com']\n        ).send()\n\n\ndef external_mail(modeladmin, request, selected):\n    EmailMessage(\n        'Greetings from a function action',\n        'This is the test email from a function action',\n        'from@example.com',\n        ['to@example.com']\n    ).send()\nexternal_mail.short_description = 'External mail (Another awesome action)'\n\n\ndef redirect_to(modeladmin, request, selected):\n    from django.http import HttpResponseRedirect\n    return HttpResponseRedirect('/some-where-else/')\nredirect_to.short_description = 'Redirect to (Awesome action)'\n\n\nclass ExternalSubscriberAdmin(admin.ModelAdmin):\n    actions = [redirect_to, external_mail]\n\n\nclass Podcast(Media):\n    release_date = models.DateField()\n\n    class Meta:\n        ordering = ('release_date',) # overridden in PodcastAdmin\n\n\nclass PodcastAdmin(admin.ModelAdmin):\n    list_display = ('name', 'release_date')\n    list_editable = ('release_date',)\n    date_hierarchy = 'release_date'\n    ordering = ('name',)\n\n\nclass VodcastAdmin(admin.ModelAdmin):\n    list_display = ('name', 'released')\n    list_editable = ('released',)\n\n    ordering = ('name',)\n\n\nclass ChildInline(admin.StackedInline):\n    model = Child\n\n\nclass ParentAdmin(admin.ModelAdmin):\n    model = Parent\n    inlines = [ChildInline]\n\n    list_editable = ('name',)\n\n    def save_related(self, request, form, formsets, change):\n        super(ParentAdmin, self).save_related(request, form, formsets, change)\n        first_name, last_name = form.instance.name.split()\n        for child in form.instance.child_set.all():\n            if len(child.name.split()) < 2:\n                child.name = child.name + ' ' + last_name\n                child.save()\n\n\nclass EmptyModelAdmin(admin.ModelAdmin):\n    def queryset(self, request):\n        return super(EmptyModelAdmin, self).queryset(request).filter(pk__gt=1)\n\n\nclass OldSubscriberAdmin(admin.ModelAdmin):\n    actions = None\n\n\ntemp_storage = FileSystemStorage(tempfile.mkdtemp(dir=os.environ['DJANGO_TEST_TEMP_DIR']))\nUPLOAD_TO = os.path.join(temp_storage.location, 'test_upload')\n\n\nclass PictureInline(admin.TabularInline):\n    model = Picture\n    extra = 1\n\n\nclass GalleryAdmin(admin.ModelAdmin):\n    inlines = [PictureInline]\n\n\nclass PictureAdmin(admin.ModelAdmin):\n    pass\n\n\nclass LanguageAdmin(admin.ModelAdmin):\n    list_display = ['iso', 'shortlist', 'english_name', 'name']\n    list_editable = ['shortlist']\n\n\nclass RecommendationAdmin(admin.ModelAdmin):\n    search_fields = ('=titletranslation__text', '=recommender__titletranslation__text',)\n\n\nclass WidgetInline(admin.StackedInline):\n    model = Widget\n\n\nclass DooHickeyInline(admin.StackedInline):\n    model = DooHickey\n\n\nclass GrommetInline(admin.StackedInline):\n    model = Grommet\n\n\nclass WhatsitInline(admin.StackedInline):\n    model = Whatsit\n\n\nclass FancyDoodadInline(admin.StackedInline):\n    model = FancyDoodad\n\n\nclass CategoryAdmin(admin.ModelAdmin):\n    list_display = ('id', 'collector', 'order')\n    list_editable = ('order',)\n\n\nclass CategoryInline(admin.StackedInline):\n    model = Category\n\n\nclass CollectorAdmin(admin.ModelAdmin):\n    inlines = [\n        WidgetInline, DooHickeyInline, GrommetInline, WhatsitInline,\n        FancyDoodadInline, CategoryInline\n    ]\n\n\nclass LinkInline(admin.TabularInline):\n    model = Link\n    extra = 1\n\n    readonly_fields = (\"posted\", \"multiline\")\n\n    def multiline(self, instance):\n        return \"InlineMultiline\\ntest\\nstring\"\n\n\nclass SubPostInline(admin.TabularInline):\n    model = PrePopulatedSubPost\n\n    prepopulated_fields = {\n        'subslug' : ('subtitle',)\n    }\n\n    def get_readonly_fields(self, request, obj=None):\n        if obj and obj.published:\n            return ('subslug',)\n        return self.readonly_fields\n\n    def get_prepopulated_fields(self, request, obj=None):\n        if obj and obj.published:\n            return {}\n        return self.prepopulated_fields\n\n\nclass PrePopulatedPostAdmin(admin.ModelAdmin):\n    list_display = ['title', 'slug']\n    prepopulated_fields = {\n        'slug' : ('title',)\n    }\n\n    inlines = [SubPostInline]\n\n    def get_readonly_fields(self, request, obj=None):\n        if obj and obj.published:\n            return ('slug',)\n        return self.readonly_fields\n\n    def get_prepopulated_fields(self, request, obj=None):\n        if obj and obj.published:\n            return {}\n        return self.prepopulated_fields\n\n\nclass PostAdmin(admin.ModelAdmin):\n    list_display = ['title', 'public']\n    readonly_fields = (\n        'posted', 'awesomeness_level', 'coolness', 'value', 'multiline',\n        lambda obj: \"foo\"\n    )\n\n    inlines = [\n        LinkInline\n    ]\n\n    def coolness(self, instance):\n        if instance.pk:\n            return \"%d amount of cool.\" % instance.pk\n        else:\n            return \"Unkown coolness.\"\n\n    def value(self, instance):\n        return 1000\n\n    def multiline(self, instance):\n        return \"Multiline\\ntest\\nstring\"\n\n    value.short_description = 'Value in $US'\n\n\nclass CustomChangeList(ChangeList):\n    def get_query_set(self, request):\n        return self.root_query_set.filter(pk=9999) # Does not exist\n\n\nclass GadgetAdmin(admin.ModelAdmin):\n    def get_changelist(self, request, **kwargs):\n        return CustomChangeList\n\n\nclass PizzaAdmin(admin.ModelAdmin):\n    readonly_fields = ('toppings',)\n\n\nclass WorkHourAdmin(admin.ModelAdmin):\n    list_display = ('datum', 'employee')\n    list_filter = ('employee',)\n\n\nclass FoodDeliveryAdmin(admin.ModelAdmin):\n    list_display=('reference', 'driver', 'restaurant')\n    list_editable = ('driver', 'restaurant')\n\n\nclass CoverLetterAdmin(admin.ModelAdmin):\n    \"\"\"\n    A ModelAdmin with a custom queryset() method that uses defer(), to test\n    verbose_name display in messages shown after adding/editing CoverLetter\n    instances.\n    Note that the CoverLetter model defines a __unicode__ method.\n    For testing fix for ticket #14529.\n    \"\"\"\n\n    def queryset(self, request):\n        return super(CoverLetterAdmin, self).queryset(request).defer('date_written')\n\n\nclass PaperAdmin(admin.ModelAdmin):\n    \"\"\"\n    A ModelAdmin with a custom queryset() method that uses only(), to test\n    verbose_name display in messages shown after adding/editing Paper\n    instances.\n    For testing fix for ticket #14529.\n    \"\"\"\n\n    def queryset(self, request):\n        return super(PaperAdmin, self).queryset(request).only('title')\n\n\nclass ShortMessageAdmin(admin.ModelAdmin):\n    \"\"\"\n    A ModelAdmin with a custom queryset() method that uses defer(), to test\n    verbose_name display in messages shown after adding/editing ShortMessage\n    instances.\n    For testing fix for ticket #14529.\n    \"\"\"\n\n    def queryset(self, request):\n        return super(ShortMessageAdmin, self).queryset(request).defer('timestamp')\n\n\nclass TelegramAdmin(admin.ModelAdmin):\n    \"\"\"\n    A ModelAdmin with a custom queryset() method that uses only(), to test\n    verbose_name display in messages shown after adding/editing Telegram\n    instances.\n    Note that the Telegram model defines a __unicode__ method.\n    For testing fix for ticket #14529.\n    \"\"\"\n\n    def queryset(self, request):\n        return super(TelegramAdmin, self).queryset(request).only('title')\n\n\nclass StoryForm(forms.ModelForm):\n    class Meta:\n        widgets = {'title': forms.HiddenInput}\n\n\nclass StoryAdmin(admin.ModelAdmin):\n    list_display = ('id', 'title', 'content')\n    list_display_links = ('title',) # 'id' not in list_display_links\n    list_editable = ('content', )\n    form = StoryForm\n    ordering = [\"-pk\"]\n\n\nclass OtherStoryAdmin(admin.ModelAdmin):\n    list_display = ('id', 'title', 'content')\n    list_display_links = ('title', 'id') # 'id' in list_display_links\n    list_editable = ('content', )\n    ordering = [\"-pk\"]\n\n\nclass ComplexSortedPersonAdmin(admin.ModelAdmin):\n    list_display = ('name', 'age', 'is_employee', 'colored_name')\n    ordering = ('name',)\n\n    def colored_name(self, obj):\n        return '<span style=\"color: #%s;\">%s</span>' % ('ff00ff', obj.name)\n    colored_name.allow_tags = True\n    colored_name.admin_order_field = 'name'\n\n\nclass AlbumAdmin(admin.ModelAdmin):\n    list_filter = ['title']\n\n\nclass WorkHourAdmin(admin.ModelAdmin):\n    list_display = ('datum', 'employee')\n    list_filter = ('employee',)\n\n\nclass PrePopulatedPostLargeSlugAdmin(admin.ModelAdmin):\n    prepopulated_fields = {\n        'slug' : ('title',)\n    }\n\n\nclass AdminOrderedFieldAdmin(admin.ModelAdmin):\n    ordering = ('order',)\n    list_display = ('stuff', 'order')\n\nclass AdminOrderedModelMethodAdmin(admin.ModelAdmin):\n    ordering = ('order',)\n    list_display = ('stuff', 'some_order')\n\nclass AdminOrderedAdminMethodAdmin(admin.ModelAdmin):\n    def some_admin_order(self, obj):\n        return obj.order\n    some_admin_order.admin_order_field = 'order'\n    ordering = ('order',)\n    list_display = ('stuff', 'some_admin_order')\n\ndef admin_ordered_callable(obj):\n    return obj.order\nadmin_ordered_callable.admin_order_field = 'order'\nclass AdminOrderedCallableAdmin(admin.ModelAdmin):\n    ordering = ('order',)\n    list_display = ('stuff', admin_ordered_callable)\n\nclass ReportAdmin(admin.ModelAdmin):\n    def extra(self, request):\n        return HttpResponse()\n\n    def get_urls(self):\n        # Corner case: Don't call parent implementation\n        return patterns('',\n            url(r'^extra/$',\n                self.extra,\n                name='cable_extra'),\n        )\n\n\nclass CustomTemplateBooleanFieldListFilter(BooleanFieldListFilter):\n    template = 'custom_filter_template.html'\n\nclass CustomTemplateFilterColorAdmin(admin.ModelAdmin):\n    list_filter = (('warm', CustomTemplateBooleanFieldListFilter),)\n\n\n# For Selenium Prepopulated tests -------------------------------------\nclass RelatedPrepopulatedInline1(admin.StackedInline):\n    fieldsets = (\n        (None, {\n            'fields': (('pubdate', 'status'), ('name', 'slug1', 'slug2',),)\n        }),\n    )\n    model = RelatedPrepopulated\n    extra = 1\n    prepopulated_fields = {'slug1': ['name', 'pubdate'],\n                           'slug2': ['status', 'name']}\n\nclass RelatedPrepopulatedInline2(admin.TabularInline):\n    model = RelatedPrepopulated\n    extra = 1\n    prepopulated_fields = {'slug1': ['name', 'pubdate'],\n                           'slug2': ['status', 'name']}\n\nclass MainPrepopulatedAdmin(admin.ModelAdmin):\n    inlines = [RelatedPrepopulatedInline1, RelatedPrepopulatedInline2]\n    fieldsets = (\n        (None, {\n            'fields': (('pubdate', 'status'), ('name', 'slug1', 'slug2',),)\n        }),\n    )\n    prepopulated_fields = {'slug1': ['name', 'pubdate'],\n                           'slug2': ['status', 'name']}\n\n\nclass UnorderedObjectAdmin(admin.ModelAdmin):\n    list_display = ['name']\n    list_editable = ['name']\n    list_per_page = 2\n\n\nclass UndeletableObjectAdmin(admin.ModelAdmin):\n    def change_view(self, *args, **kwargs):\n        kwargs['extra_context'] = {'show_delete': False}\n        return super(UndeletableObjectAdmin, self).change_view(*args, **kwargs)\n\n\ndef callable_on_unknown(obj):\n    return obj.unknown\n\n\nclass AttributeErrorRaisingAdmin(admin.ModelAdmin):\n    list_display = [callable_on_unknown, ]\n\nclass MessageTestingAdmin(admin.ModelAdmin):\n    actions = [\"message_debug\", \"message_info\", \"message_success\",\n               \"message_warning\", \"message_error\", \"message_extra_tags\"]\n\n    def message_debug(self, request, selected):\n        self.message_user(request, \"Test debug\", level=\"debug\")\n\n    def message_info(self, request, selected):\n        self.message_user(request, \"Test info\", level=\"info\")\n\n    def message_success(self, request, selected):\n        self.message_user(request, \"Test success\", level=\"success\")\n\n    def message_warning(self, request, selected):\n        self.message_user(request, \"Test warning\", level=\"warning\")\n\n    def message_error(self, request, selected):\n        self.message_user(request, \"Test error\", level=\"error\")\n\n    def message_extra_tags(self, request, selected):\n        self.message_user(request, \"Test tags\", extra_tags=\"extra_tag\")\n\n\nclass ChoiceList(admin.ModelAdmin):\n    list_display = ['choice']\n    readonly_fields = ['choice']\n    fields = ['choice']\n\n\nsite = admin.AdminSite(name=\"admin\")\nsite.register(Article, ArticleAdmin)\nsite.register(CustomArticle, CustomArticleAdmin)\nsite.register(Section, save_as=True, inlines=[ArticleInline])\nsite.register(ModelWithStringPrimaryKey)\nsite.register(Color)\nsite.register(Thing, ThingAdmin)\nsite.register(Actor)\nsite.register(Inquisition, InquisitionAdmin)\nsite.register(Sketch, SketchAdmin)\nsite.register(Person, PersonAdmin)\nsite.register(Persona, PersonaAdmin)\nsite.register(Subscriber, SubscriberAdmin)\nsite.register(ExternalSubscriber, ExternalSubscriberAdmin)\nsite.register(OldSubscriber, OldSubscriberAdmin)\nsite.register(Podcast, PodcastAdmin)\nsite.register(Vodcast, VodcastAdmin)\nsite.register(Parent, ParentAdmin)\nsite.register(EmptyModel, EmptyModelAdmin)\nsite.register(Fabric, FabricAdmin)\nsite.register(Gallery, GalleryAdmin)\nsite.register(Picture, PictureAdmin)\nsite.register(Language, LanguageAdmin)\nsite.register(Recommendation, RecommendationAdmin)\nsite.register(Recommender)\nsite.register(Collector, CollectorAdmin)\nsite.register(Category, CategoryAdmin)\nsite.register(Post, PostAdmin)\nsite.register(Gadget, GadgetAdmin)\nsite.register(Villain)\nsite.register(SuperVillain)\nsite.register(Plot)\nsite.register(PlotDetails)\nsite.register(CyclicOne)\nsite.register(CyclicTwo)\nsite.register(WorkHour, WorkHourAdmin)\nsite.register(Reservation)\nsite.register(FoodDelivery, FoodDeliveryAdmin)\nsite.register(RowLevelChangePermissionModel, RowLevelChangePermissionModelAdmin)\nsite.register(Paper, PaperAdmin)\nsite.register(CoverLetter, CoverLetterAdmin)\nsite.register(ShortMessage, ShortMessageAdmin)\nsite.register(Telegram, TelegramAdmin)\nsite.register(Story, StoryAdmin)\nsite.register(OtherStory, OtherStoryAdmin)\nsite.register(Report, ReportAdmin)\nsite.register(MainPrepopulated, MainPrepopulatedAdmin)\nsite.register(UnorderedObject, UnorderedObjectAdmin)\nsite.register(UndeletableObject, UndeletableObjectAdmin)\n\n# We intentionally register Promo and ChapterXtra1 but not Chapter nor ChapterXtra2.\n# That way we cover all four cases:\n#     related ForeignKey object registered in admin\n#     related ForeignKey object not registered in admin\n#     related OneToOne object registered in admin\n#     related OneToOne object not registered in admin\n# when deleting Book so as exercise all four troublesome (w.r.t escaping\n# and calling force_text to avoid problems on Python 2.3) paths through\n# contrib.admin.util's get_deleted_objects function.\nsite.register(Book, inlines=[ChapterInline])\nsite.register(Promo)\nsite.register(ChapterXtra1, ChapterXtra1Admin)\nsite.register(Pizza, PizzaAdmin)\nsite.register(Topping)\nsite.register(Album, AlbumAdmin)\nsite.register(Question)\nsite.register(Answer)\nsite.register(PrePopulatedPost, PrePopulatedPostAdmin)\nsite.register(ComplexSortedPerson, ComplexSortedPersonAdmin)\nsite.register(PrePopulatedPostLargeSlug, PrePopulatedPostLargeSlugAdmin)\nsite.register(AdminOrderedField, AdminOrderedFieldAdmin)\nsite.register(AdminOrderedModelMethod, AdminOrderedModelMethodAdmin)\nsite.register(AdminOrderedAdminMethod, AdminOrderedAdminMethodAdmin)\nsite.register(AdminOrderedCallable, AdminOrderedCallableAdmin)\nsite.register(Color2, CustomTemplateFilterColorAdmin)\nsite.register(Simple, AttributeErrorRaisingAdmin)\nsite.register(UserMessenger, MessageTestingAdmin)\nsite.register(Choice, ChoiceList)\n\n# Register core models we need in our tests\nfrom django.contrib.auth.models import User, Group\nfrom django.contrib.auth.admin import UserAdmin, GroupAdmin\nsite.register(User, UserAdmin)\nsite.register(Group, GroupAdmin)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_views/customadmin.py",
    "content": "\"\"\"\nA second, custom AdminSite -- see tests.CustomAdminSiteTests.\n\"\"\"\nfrom __future__ import absolute_import\n\nfrom django.conf.urls import patterns\nfrom django.contrib import admin\nfrom django.http import HttpResponse\nfrom django.contrib.auth.models import User\nfrom django.contrib.auth.admin import UserAdmin\n\nfrom . import models, forms, admin as base_admin\n\n\nclass Admin2(admin.AdminSite):\n    login_form = forms.CustomAdminAuthenticationForm\n    login_template = 'custom_admin/login.html'\n    logout_template = 'custom_admin/logout.html'\n    index_template = ['custom_admin/index.html'] # a list, to test fix for #18697\n    password_change_template = 'custom_admin/password_change_form.html'\n    password_change_done_template = 'custom_admin/password_change_done.html'\n\n    # A custom index view.\n    def index(self, request, extra_context=None):\n        return super(Admin2, self).index(request, {'foo': '*bar*'})\n\n    def get_urls(self):\n        return patterns('',\n            (r'^my_view/$', self.admin_view(self.my_view)),\n        ) + super(Admin2, self).get_urls()\n\n    def my_view(self, request):\n        return HttpResponse(\"Django is a magical pony!\")\n\n\nclass UserLimitedAdmin(UserAdmin):\n    # used for testing password change on a user not in queryset\n    def queryset(self, request):\n        qs = super(UserLimitedAdmin, self).queryset(request)\n        return qs.filter(is_superuser=False)\n\n\nclass CustomPwdTemplateUserAdmin(UserAdmin):\n    change_user_password_template = ['admin/auth/user/change_password.html'] # a list, to test fix for #18697\n\n\nsite = Admin2(name=\"admin2\")\n\nsite.register(models.Article, base_admin.ArticleAdmin)\nsite.register(models.Section, inlines=[base_admin.ArticleInline])\nsite.register(models.Thing, base_admin.ThingAdmin)\nsite.register(models.Fabric, base_admin.FabricAdmin)\nsite.register(models.ChapterXtra1, base_admin.ChapterXtra1Admin)\nsite.register(User, UserLimitedAdmin)\nsite.register(models.UndeletableObject, base_admin.UndeletableObjectAdmin)\nsite.register(models.Simple, base_admin.AttributeErrorRaisingAdmin)\n\nsimple_site = Admin2(name='admin4')\nsimple_site.register(User, CustomPwdTemplateUserAdmin)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_views/fixtures/admin-views-actions.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<django-objects version=\"1.0\">\n    <object pk=\"1\" model=\"admin_views.subscriber\">\n        <field type=\"CharField\" name=\"name\">John Doe</field>\n        <field type=\"CharField\" name=\"email\">john@example.org</field>\n    </object>\n    <object pk=\"2\" model=\"admin_views.subscriber\">\n        <field type=\"CharField\" name=\"name\">Max Mustermann</field>\n        <field type=\"CharField\" name=\"email\">max@example.org</field>\n    </object>\n    <object pk=\"1\" model=\"admin_views.externalsubscriber\">\n        <field type=\"CharField\" name=\"name\">John Doe</field>\n        <field type=\"CharField\" name=\"email\">john@example.org</field>\n    </object>\n</django-objects>\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_views/fixtures/admin-views-books.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<django-objects version=\"1.0\">\n  <object pk=\"1\" model=\"admin_views.book\">\n    <field type=\"CharField\" name=\"name\">Book 1</field>\n  </object>\n  <object pk=\"2\" model=\"admin_views.book\">\n    <field type=\"CharField\" name=\"name\">Book 2</field>\n  </object>\n  <object pk=\"1\" model=\"admin_views.promo\">\n    <field type=\"CharField\" name=\"name\">Promo 1</field>\n    <field type=\"ForeignKey\" name=\"book\">1</field>\n  </object>\n  <object pk=\"2\" model=\"admin_views.promo\">\n    <field type=\"CharField\" name=\"name\">Promo 2</field>\n    <field type=\"ForeignKey\" name=\"book\">2</field>\n  </object>\n  <object pk=\"1\" model=\"admin_views.chapter\">\n    <field type=\"CharField\" name=\"title\">Chapter 1</field>\n    <field type=\"TextField\" name=\"content\">[ insert contents here ]</field>\n    <field type=\"ForeignKey\" name=\"book\">1</field>\n  </object>\n  <object pk=\"2\" model=\"admin_views.chapter\">\n    <field type=\"CharField\" name=\"title\">Chapter 2</field>\n    <field type=\"TextField\" name=\"content\">[ insert contents here ]</field>\n    <field type=\"ForeignKey\" name=\"book\">1</field>\n  </object>\n  <object pk=\"3\" model=\"admin_views.chapter\">\n    <field type=\"CharField\" name=\"title\">Chapter 1</field>\n    <field type=\"TextField\" name=\"content\">[ insert contents here ]</field>\n    <field type=\"ForeignKey\" name=\"book\">2</field>\n  </object>\n  <object pk=\"4\" model=\"admin_views.chapter\">\n    <field type=\"CharField\" name=\"title\">Chapter 2</field>\n    <field type=\"TextField\" name=\"content\">[ insert contents here ]</field>\n    <field type=\"ForeignKey\" name=\"book\">2</field>\n  </object>\n  <object pk=\"1\" model=\"admin_views.chapterxtra1\">\n    <field type=\"CharField\" name=\"xtra\">ChapterXtra1 1</field>\n    <field type=\"ForeignKey\" name=\"chap\">1</field>\n  </object>\n  <object pk=\"2\" model=\"admin_views.chapterxtra1\">\n    <field type=\"CharField\" name=\"xtra\">ChapterXtra1 2</field>\n    <field type=\"ForeignKey\" name=\"chap\">3</field>\n  </object>\n</django-objects>\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_views/fixtures/admin-views-colors.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<django-objects version=\"1.0\">\n    <object pk=\"1\" model=\"admin_views.color\">\n        <field type=\"CharField\" name=\"value\">Red</field>\n        <field type=\"BooleanField\" name=\"warm\">1</field>\n    </object>\n    <object pk=\"2\" model=\"admin_views.color\">\n        <field type=\"CharField\" name=\"value\">Orange</field>\n        <field type=\"BooleanField\" name=\"warm\">1</field>\n    </object>\n    <object pk=\"3\" model=\"admin_views.color\">\n        <field type=\"CharField\" name=\"value\">Blue</field>\n        <field type=\"BooleanField\" name=\"warm\">0</field>\n    </object>\n    <object pk=\"4\" model=\"admin_views.color\">\n        <field type=\"CharField\" name=\"value\">Green</field>\n        <field type=\"BooleanField\" name=\"warm\">0</field>\n    </object>\n</django-objects>\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_views/fixtures/admin-views-fabrics.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<django-objects version=\"1.0\">\n  <object pk=\"1\" model=\"admin_views.fabric\">\n    <field type=\"CharField\" name=\"surface\">x</field>\n  </object>\n  <object pk=\"2\" model=\"admin_views.fabric\">\n    <field type=\"CharField\" name=\"surface\">y</field>\n  </object>\n  <object pk=\"3\" model=\"admin_views.fabric\">\n    <field type=\"CharField\" name=\"surface\">plain</field>\n  </object>\n</django-objects>\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_views/fixtures/admin-views-person.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<django-objects version=\"1.0\">\n    <object pk=\"1\" model=\"admin_views.person\">\n        <field type=\"CharField\" name=\"name\">John Mauchly</field>\n        <field type=\"IntegerField\" name=\"gender\">1</field>\n        <field type=\"BooleanField\" name=\"alive\">True</field>\n    </object>\n    <object pk=\"2\" model=\"admin_views.person\">\n        <field type=\"CharField\" name=\"name\">Grace Hopper</field>\n        <field type=\"IntegerField\" name=\"gender\">1</field>\n        <field type=\"BooleanField\" name=\"alive\">False</field>\n    </object>\n    <object pk=\"3\" model=\"admin_views.person\">\n        <field type=\"CharField\" name=\"name\">Guido van Rossum</field>\n        <field type=\"IntegerField\" name=\"gender\">1</field>\n        <field type=\"BooleanField\" name=\"alive\">True</field>\n    </object>\n</django-objects>\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_views/fixtures/admin-views-unicode.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<django-objects version=\"1.0\">\n    <object pk=\"100\" model=\"auth.user\">\n        <field type=\"CharField\" name=\"username\">super</field>\n        <field type=\"CharField\" name=\"first_name\">Super</field>\n        <field type=\"CharField\" name=\"last_name\">User</field>\n        <field type=\"CharField\" name=\"email\">super@example.com</field>\n        <field type=\"CharField\" name=\"password\">sha1$995a3$6011485ea3834267d719b4c801409b8b1ddd0158</field>\n        <field type=\"BooleanField\" name=\"is_staff\">True</field>\n        <field type=\"BooleanField\" name=\"is_active\">True</field>\n        <field type=\"BooleanField\" name=\"is_superuser\">True</field>\n        <field type=\"DateTimeField\" name=\"last_login\">2007-05-30 13:20:10</field>\n        <field type=\"DateTimeField\" name=\"date_joined\">2007-05-30 13:20:10</field>\n        <field to=\"auth.group\" name=\"groups\" rel=\"ManyToManyRel\"></field>\n        <field to=\"auth.permission\" name=\"user_permissions\" rel=\"ManyToManyRel\"></field>\n    </object>\n    <object pk=\"1\" model=\"admin_views.book\">\n        <field type=\"CharField\" name=\"name\">Lærdommer</field>\n    </object>\n    <object pk=\"1\" model=\"admin_views.promo\">\n        <field type=\"CharField\" name=\"name\">&lt;Promo for Lærdommer&gt;</field>\n        <field to=\"admin_views.book\" name=\"book\" rel=\"ManyToOneRel\">1</field>\n    </object>\n    <object pk=\"1\" model=\"admin_views.chapter\">\n        <field type=\"CharField\" name=\"title\">Norske bostaver æøå skaper problemer</field>\n        <field type=\"TextField\" name=\"content\">&lt;p&gt;Svært frustrerende med UnicodeDecodeErro&lt;/p&gt;</field>\n        <field to=\"admin_views.book\" name=\"book\" rel=\"ManyToOneRel\">1</field>\n    </object>\n    <object pk=\"2\" model=\"admin_views.chapter\">\n        <field type=\"CharField\" name=\"title\">Kjærlighet</field>\n        <field type=\"TextField\" name=\"content\">&lt;p&gt;La kjærligheten til de lidende seire.&lt;/p&gt;</field>\n        <field to=\"admin_views.book\" name=\"book\" rel=\"ManyToOneRel\">1</field>\n    </object>\n    <object pk=\"3\" model=\"admin_views.chapter\">\n        <field type=\"CharField\" name=\"title\">Kjærlighet</field>\n        <field type=\"TextField\" name=\"content\">&lt;p&gt;Noe innhold&lt;/p&gt;</field>\n        <field to=\"admin_views.book\" name=\"book\" rel=\"ManyToOneRel\">1</field>\n    </object>\n    <object pk=\"1\" model=\"admin_views.chapterxtra1\">\n        <field type=\"CharField\" name=\"xtra\">&lt;Xtra(1) Norske bostaver æøå skaper problemer&gt;</field>\n        <field to=\"admin_views.chapter\" name=\"chap\" rel=\"OneToOneRel\">1</field>\n    </object>\n    <object pk=\"2\" model=\"admin_views.chapterxtra1\">\n        <field type=\"CharField\" name=\"xtra\">&lt;Xtra(1) Kjærlighet&gt;</field>\n        <field to=\"admin_views.chapter\" name=\"chap\" rel=\"OneToOneRel\">2</field>\n    </object>\n    <object pk=\"3\" model=\"admin_views.chapterxtra1\">\n        <field type=\"CharField\" name=\"xtra\">&lt;Xtra(1) Kjærlighet&gt;</field>\n        <field to=\"admin_views.chapter\" name=\"chap\" rel=\"OneToOneRel\">3</field>\n    </object>\n    <object pk=\"1\" model=\"admin_views.chapterxtra2\">\n        <field type=\"CharField\" name=\"xtra\">&lt;Xtra(2) Norske bostaver æøå skaper problemer&gt;</field>\n        <field to=\"admin_views.chapter\" name=\"chap\" rel=\"OneToOneRel\">1</field>\n    </object>\n    <object pk=\"2\" model=\"admin_views.chapterxtra2\">\n        <field type=\"CharField\" name=\"xtra\">&lt;Xtra(2) Kjærlighet&gt;</field>\n        <field to=\"admin_views.chapter\" name=\"chap\" rel=\"OneToOneRel\">2</field>\n    </object>\n    <object pk=\"3\" model=\"admin_views.chapterxtra2\">\n        <field type=\"CharField\" name=\"xtra\">&lt;Xtra(2) Kjærlighet&gt;</field>\n        <field to=\"admin_views.chapter\" name=\"chap\" rel=\"OneToOneRel\">3</field>\n    </object>\n</django-objects>\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_views/fixtures/admin-views-users.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<django-objects version=\"1.0\">\n    <object pk=\"100\" model=\"auth.user\">\n        <field type=\"CharField\" name=\"username\">super</field>\n        <field type=\"CharField\" name=\"first_name\">Super</field>\n        <field type=\"CharField\" name=\"last_name\">User</field>\n        <field type=\"CharField\" name=\"email\">super@example.com</field>\n        <field type=\"CharField\" name=\"password\">sha1$995a3$6011485ea3834267d719b4c801409b8b1ddd0158</field>\n        <field type=\"BooleanField\" name=\"is_staff\">True</field>\n        <field type=\"BooleanField\" name=\"is_active\">True</field>\n        <field type=\"BooleanField\" name=\"is_superuser\">True</field>\n        <field type=\"DateTimeField\" name=\"last_login\">2007-05-30 13:20:10</field>\n        <field type=\"DateTimeField\" name=\"date_joined\">2007-05-30 13:20:10</field>\n        <field to=\"auth.group\" name=\"groups\" rel=\"ManyToManyRel\"></field>\n        <field to=\"auth.permission\" name=\"user_permissions\" rel=\"ManyToManyRel\"></field>\n    </object>\n    <object pk=\"101\" model=\"auth.user\">\n        <field type=\"CharField\" name=\"username\">adduser</field>\n        <field type=\"CharField\" name=\"first_name\">Add</field>\n        <field type=\"CharField\" name=\"last_name\">User</field>\n        <field type=\"CharField\" name=\"email\">auser@example.com</field>\n        <field type=\"CharField\" name=\"password\">sha1$995a3$6011485ea3834267d719b4c801409b8b1ddd0158</field>\n        <field type=\"BooleanField\" name=\"is_staff\">True</field>\n        <field type=\"BooleanField\" name=\"is_active\">True</field>\n        <field type=\"BooleanField\" name=\"is_superuser\">False</field>\n        <field type=\"DateTimeField\" name=\"last_login\">2007-05-30 13:20:10</field>\n        <field type=\"DateTimeField\" name=\"date_joined\">2007-05-30 13:20:10</field>\n        <field to=\"auth.group\" name=\"groups\" rel=\"ManyToManyRel\"></field>\n        <field to=\"auth.permission\" name=\"user_permissions\" rel=\"ManyToManyRel\"></field>\n    </object>\n    <object pk=\"102\" model=\"auth.user\">\n        <field type=\"CharField\" name=\"username\">changeuser</field>\n        <field type=\"CharField\" name=\"first_name\">Change</field>\n        <field type=\"CharField\" name=\"last_name\">User</field>\n        <field type=\"CharField\" name=\"email\">cuser@example.com</field>\n        <field type=\"CharField\" name=\"password\">sha1$995a3$6011485ea3834267d719b4c801409b8b1ddd0158</field>\n        <field type=\"BooleanField\" name=\"is_staff\">True</field>\n        <field type=\"BooleanField\" name=\"is_active\">True</field>\n        <field type=\"BooleanField\" name=\"is_superuser\">False</field>\n        <field type=\"DateTimeField\" name=\"last_login\">2007-05-30 13:20:10</field>\n        <field type=\"DateTimeField\" name=\"date_joined\">2007-05-30 13:20:10</field>\n        <field to=\"auth.group\" name=\"groups\" rel=\"ManyToManyRel\"></field>\n        <field to=\"auth.permission\" name=\"user_permissions\" rel=\"ManyToManyRel\"></field>\n    </object>\n    <object pk=\"103\" model=\"auth.user\">\n        <field type=\"CharField\" name=\"username\">deleteuser</field>\n        <field type=\"CharField\" name=\"first_name\">Delete</field>\n        <field type=\"CharField\" name=\"last_name\">User</field>\n        <field type=\"CharField\" name=\"email\">duser@example.com</field>\n        <field type=\"CharField\" name=\"password\">sha1$995a3$6011485ea3834267d719b4c801409b8b1ddd0158</field>\n        <field type=\"BooleanField\" name=\"is_staff\">True</field>\n        <field type=\"BooleanField\" name=\"is_active\">True</field>\n        <field type=\"BooleanField\" name=\"is_superuser\">False</field>\n        <field type=\"DateTimeField\" name=\"last_login\">2007-05-30 13:20:10</field>\n        <field type=\"DateTimeField\" name=\"date_joined\">2007-05-30 13:20:10</field>\n        <field to=\"auth.group\" name=\"groups\" rel=\"ManyToManyRel\"></field>\n        <field to=\"auth.permission\" name=\"user_permissions\" rel=\"ManyToManyRel\"></field>\n    </object>\n    <object pk=\"104\" model=\"auth.user\">\n        <field type=\"CharField\" name=\"username\">joepublic</field>\n        <field type=\"CharField\" name=\"first_name\">Joe</field>\n        <field type=\"CharField\" name=\"last_name\">Public</field>\n        <field type=\"CharField\" name=\"email\">joepublic@example.com</field>\n        <field type=\"CharField\" name=\"password\">sha1$995a3$6011485ea3834267d719b4c801409b8b1ddd0158</field>\n        <field type=\"BooleanField\" name=\"is_staff\">False</field>\n        <field type=\"BooleanField\" name=\"is_active\">True</field>\n        <field type=\"BooleanField\" name=\"is_superuser\">False</field>\n        <field type=\"DateTimeField\" name=\"last_login\">2007-05-30 13:20:10</field>\n        <field type=\"DateTimeField\" name=\"date_joined\">2007-05-30 13:20:10</field>\n        <field to=\"auth.group\" name=\"groups\" rel=\"ManyToManyRel\"></field>\n        <field to=\"auth.permission\" name=\"user_permissions\" rel=\"ManyToManyRel\"></field>\n    </object>\n    <object pk=\"1\" model=\"admin_views.section\">\n        <field type=\"CharField\" name=\"name\">Test section</field>\n    </object>\n    <object pk=\"1\" model=\"admin_views.article\">\n        <field type=\"TextField\" name=\"content\">&lt;p&gt;Middle content&lt;/p&gt;</field>\n        <field type=\"DateTimeField\" name=\"date\">2008-03-18 11:54:58</field>\n        <field to=\"admin_views.section\" name=\"section\" rel=\"ManyToOneRel\">1</field>\n    </object>\n    <object pk=\"2\" model=\"admin_views.article\">\n        <field type=\"TextField\" name=\"content\">&lt;p&gt;Oldest content&lt;/p&gt;</field>\n        <field type=\"DateTimeField\" name=\"date\">2000-03-18 11:54:58</field>\n        <field to=\"admin_views.section\" name=\"section\" rel=\"ManyToOneRel\">1</field>\n    </object>\n    <object pk=\"3\" model=\"admin_views.article\">\n        <field type=\"TextField\" name=\"content\">&lt;p&gt;Newest content&lt;/p&gt;</field>\n        <field type=\"DateTimeField\" name=\"date\">2009-03-18 11:54:58</field>\n        <field to=\"admin_views.section\" name=\"section\" rel=\"ManyToOneRel\">1</field>\n    </object>\n    <object pk=\"1\" model=\"admin_views.prepopulatedpost\">\n        <field type=\"TextField\" name=\"title\">A Long Title</field>\n        <field type=\"BooleanField\" name=\"published\">True</field>\n        <field type=\"SlugField\" name=\"slug\">a-long-title</field>\n    </object>\n</django-objects>\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_views/fixtures/deleted-objects.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<django-objects version=\"1.0\">\n    <object pk=\"1\" model=\"admin_views.villain\">\n        <field type=\"CharField\" name=\"name\">Adam</field>\n    </object>\n    <object pk=\"2\" model=\"admin_views.villain\">\n        <field type=\"CharField\" name=\"name\">Sue</field>\n    </object>\n    <object pk=\"3\" model=\"admin_views.villain\">\n        <field type=\"CharField\" name=\"name\">Bob</field>\n    </object>\n    <object pk=\"3\" model=\"admin_views.supervillain\">\n    </object>\n    <object pk=\"1\" model=\"admin_views.plot\">\n        <field type=\"CharField\" name=\"name\">World Domination</field>\n        <field type=\"ForeignKey\" name=\"team_leader\">1</field>\n        <field type=\"ForeignKey\" name=\"contact\">2</field>\n    </object>\n    <object pk=\"2\" model=\"admin_views.plot\">\n        <field type=\"CharField\" name=\"name\">World Peace</field>\n        <field type=\"ForeignKey\" name=\"team_leader\">2</field>\n        <field type=\"ForeignKey\" name=\"contact\">2</field>\n    </object>\n    <object pk=\"1\" model=\"admin_views.plotdetails\">\n        <field type=\"CharField\" name=\"details\">almost finished</field>\n        <field type=\"ForeignKey\" name=\"plot\">1</field>\n    </object>\n    <object pk=\"1\" model=\"admin_views.secrethideout\">\n        <field type=\"CharField\" name=\"location\">underground bunker</field>\n        <field type=\"ForeignKey\" name=\"villain\">1</field>\n    </object>\n    <object pk=\"2\" model=\"admin_views.secrethideout\">\n        <field type=\"CharField\" name=\"location\">floating castle</field>\n        <field type=\"ForeignKey\" name=\"villain\">3</field>\n    </object>\n    <object pk=\"1\" model=\"admin_views.supersecrethideout\">\n        <field type=\"CharField\" name=\"location\">super floating castle!</field>\n        <field type=\"ForeignKey\" name=\"supervillain\">3</field>\n    </object>\n    <object pk=\"1\" model=\"admin_views.cyclicone\">\n        <field type=\"CharField\" name=\"name\">I am recursive</field>\n        <field type=\"ForeignKey\" name=\"two\">1</field>\n    </object>\n    <object pk=\"1\" model=\"admin_views.cyclictwo\">\n        <field type=\"CharField\" name=\"name\">I am recursive too</field>\n        <field type=\"ForeignKey\" name=\"one\">1</field>\n    </object>\n    <object pk=\"3\" model=\"admin_views.plot\">\n        <field type=\"CharField\" name=\"name\">Corn Conspiracy</field>\n        <field type=\"ForeignKey\" name=\"team_leader\">1</field>\n        <field type=\"ForeignKey\" name=\"contact\">1</field>\n    </object>\n</django-objects>\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_views/fixtures/multiple-child-classes.json",
    "content": "[\n    {\n        \"pk\": 1,\n         \"model\": \"admin_views.title\",\n         \"fields\":\n        {\n        }\n    },\n\n    {\n        \"pk\": 2,\n         \"model\": \"admin_views.title\",\n         \"fields\":\n        {\n        }\n    },\n\n    {\n        \"pk\": 3,\n         \"model\": \"admin_views.title\",\n         \"fields\":\n        {\n        }\n    },\n\n    {\n        \"pk\": 4,\n         \"model\": \"admin_views.title\",\n         \"fields\":\n        {\n        }\n    },\n\n    {\n        \"pk\": 1,\n         \"model\": \"admin_views.titletranslation\",\n         \"fields\":\n        {\n            \"text\": \"Bar\",\n             \"title\": 1\n        }\n    },\n\n    {\n        \"pk\": 2,\n         \"model\": \"admin_views.titletranslation\",\n         \"fields\":\n        {\n            \"text\": \"Foo\",\n             \"title\": 2\n        }\n    },\n\n    {\n        \"pk\": 3,\n         \"model\": \"admin_views.titletranslation\",\n         \"fields\":\n        {\n            \"text\": \"Few\",\n             \"title\": 3\n        }\n    },\n\n    {\n        \"pk\": 4,\n         \"model\": \"admin_views.titletranslation\",\n         \"fields\":\n        {\n            \"text\": \"Bas\",\n             \"title\": 4\n        }\n    },\n\n    {\n        \"pk\": 1,\n         \"model\": \"admin_views.recommender\",\n         \"fields\":\n        {\n        }\n    },\n\n    {\n        \"pk\": 4,\n         \"model\": \"admin_views.recommender\",\n         \"fields\":\n        {\n        }\n    },\n\n    {\n        \"pk\": 2,\n         \"model\": \"admin_views.recommendation\",\n         \"fields\":\n        {\n            \"recommender\": 1\n        }\n    },\n\n    {\n        \"pk\": 3,\n         \"model\": \"admin_views.recommendation\",\n         \"fields\":\n        {\n            \"recommender\": 4\n        }\n    }\n]"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_views/fixtures/string-primary-key.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<django-objects version=\"1.0\">\n    <object pk=\"1\" model=\"admin_views.modelwithstringprimarykey\">\n        <field type=\"CharField\" name=\"string_pk\"><![CDATA[abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ 1234567890 -_.!~*'() ;/?:@&=+$, <>#%\" {}|\\^[]`]]></field>\n    </object>\n</django-objects>\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_views/forms.py",
    "content": "from django import forms\nfrom django.contrib.admin.forms import AdminAuthenticationForm\n\n\nclass CustomAdminAuthenticationForm(AdminAuthenticationForm):\n\n    def clean_username(self):\n        username = self.cleaned_data.get('username')\n        if username == 'customform':\n            raise forms.ValidationError('custom form error')\n        return username\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_views/models.py",
    "content": "# -*- coding: utf-8 -*-\nfrom __future__ import unicode_literals\n\nimport datetime\nimport tempfile\nimport os\n\nfrom django.contrib.auth.models import User\nfrom django.contrib.contenttypes import generic\nfrom django.contrib.contenttypes.models import ContentType\nfrom django.core.files.storage import FileSystemStorage\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\nclass Section(models.Model):\n    \"\"\"\n    A simple section that links to articles, to test linking to related items\n    in admin views.\n    \"\"\"\n    name = models.CharField(max_length=100)\n\n\n@python_2_unicode_compatible\nclass Article(models.Model):\n    \"\"\"\n    A simple article to test admin views. Test backwards compatibility.\n    \"\"\"\n    title = models.CharField(max_length=100)\n    content = models.TextField()\n    date = models.DateTimeField()\n    section = models.ForeignKey(Section, null=True, blank=True)\n\n    def __str__(self):\n        return self.title\n\n    def model_year(self):\n        return self.date.year\n    model_year.admin_order_field = 'date'\n    model_year.short_description = ''\n\n\n@python_2_unicode_compatible\nclass Book(models.Model):\n    \"\"\"\n    A simple book that has chapters.\n    \"\"\"\n    name = models.CharField(max_length=100, verbose_name='¿Name?')\n\n    def __str__(self):\n        return self.name\n\n\n@python_2_unicode_compatible\nclass Promo(models.Model):\n    name = models.CharField(max_length=100, verbose_name='¿Name?')\n    book = models.ForeignKey(Book)\n\n    def __str__(self):\n        return self.name\n\n\n@python_2_unicode_compatible\nclass Chapter(models.Model):\n    title = models.CharField(max_length=100, verbose_name='¿Title?')\n    content = models.TextField()\n    book = models.ForeignKey(Book)\n\n    def __str__(self):\n        return self.title\n\n    class Meta:\n        # Use a utf-8 bytestring to ensure it works (see #11710)\n        verbose_name = '¿Chapter?'\n\n\n@python_2_unicode_compatible\nclass ChapterXtra1(models.Model):\n    chap = models.OneToOneField(Chapter, verbose_name='¿Chap?')\n    xtra = models.CharField(max_length=100, verbose_name='¿Xtra?')\n\n    def __str__(self):\n        return '¿Xtra1: %s' % self.xtra\n\n\n@python_2_unicode_compatible\nclass ChapterXtra2(models.Model):\n    chap = models.OneToOneField(Chapter, verbose_name='¿Chap?')\n    xtra = models.CharField(max_length=100, verbose_name='¿Xtra?')\n\n    def __str__(self):\n        return '¿Xtra2: %s' % self.xtra\n\n\nclass RowLevelChangePermissionModel(models.Model):\n    name = models.CharField(max_length=100, blank=True)\n\n\nclass CustomArticle(models.Model):\n    content = models.TextField()\n    date = models.DateTimeField()\n\n\n@python_2_unicode_compatible\nclass ModelWithStringPrimaryKey(models.Model):\n    string_pk = models.CharField(max_length=255, primary_key=True)\n\n    def __str__(self):\n        return self.string_pk\n\n    def get_absolute_url(self):\n        return '/dummy/%s/' % self.string_pk\n\n\n@python_2_unicode_compatible\nclass Color(models.Model):\n    value = models.CharField(max_length=10)\n    warm = models.BooleanField()\n    def __str__(self):\n        return self.value\n\n# we replicate Color to register with another ModelAdmin\nclass Color2(Color):\n    class Meta:\n        proxy = True\n\n@python_2_unicode_compatible\nclass Thing(models.Model):\n    title = models.CharField(max_length=20)\n    color = models.ForeignKey(Color, limit_choices_to={'warm': True})\n    pub_date = models.DateField(blank=True, null=True)\n    def __str__(self):\n        return self.title\n\n\n@python_2_unicode_compatible\nclass Actor(models.Model):\n    name = models.CharField(max_length=50)\n    age = models.IntegerField()\n    def __str__(self):\n        return self.name\n\n\n@python_2_unicode_compatible\nclass Inquisition(models.Model):\n    expected = models.BooleanField()\n    leader = models.ForeignKey(Actor)\n    country = models.CharField(max_length=20)\n\n    def __str__(self):\n        return \"by %s from %s\" % (self.leader, self.country)\n\n\n@python_2_unicode_compatible\nclass Sketch(models.Model):\n    title = models.CharField(max_length=100)\n    inquisition = models.ForeignKey(Inquisition, limit_choices_to={'leader__name': 'Palin',\n                                                                   'leader__age': 27,\n                                                                   'expected': False,\n                                                                   })\n\n    def __str__(self):\n        return self.title\n\n\nclass Fabric(models.Model):\n    NG_CHOICES = (\n        ('Textured', (\n                ('x', 'Horizontal'),\n                ('y', 'Vertical'),\n            )\n        ),\n        ('plain', 'Smooth'),\n    )\n    surface = models.CharField(max_length=20, choices=NG_CHOICES)\n\n\n@python_2_unicode_compatible\nclass Person(models.Model):\n    GENDER_CHOICES = (\n        (1, \"Male\"),\n        (2, \"Female\"),\n    )\n    name = models.CharField(max_length=100)\n    gender = models.IntegerField(choices=GENDER_CHOICES)\n    age = models.IntegerField(default=21)\n    alive = models.BooleanField()\n\n    def __str__(self):\n        return self.name\n\n\n@python_2_unicode_compatible\nclass Persona(models.Model):\n    \"\"\"\n    A simple persona associated with accounts, to test inlining of related\n    accounts which inherit from a common accounts class.\n    \"\"\"\n    name = models.CharField(blank=False,  max_length=80)\n    def __str__(self):\n        return self.name\n\n\n@python_2_unicode_compatible\nclass Account(models.Model):\n    \"\"\"\n    A simple, generic account encapsulating the information shared by all\n    types of accounts.\n    \"\"\"\n    username = models.CharField(blank=False,  max_length=80)\n    persona = models.ForeignKey(Persona, related_name=\"accounts\")\n    servicename = 'generic service'\n\n    def __str__(self):\n        return \"%s: %s\" % (self.servicename, self.username)\n\n\nclass FooAccount(Account):\n    \"\"\"A service-specific account of type Foo.\"\"\"\n    servicename = 'foo'\n\n\nclass BarAccount(Account):\n    \"\"\"A service-specific account of type Bar.\"\"\"\n    servicename = 'bar'\n\n\n@python_2_unicode_compatible\nclass Subscriber(models.Model):\n    name = models.CharField(blank=False, max_length=80)\n    email = models.EmailField(blank=False, max_length=175)\n\n    def __str__(self):\n        return \"%s (%s)\" % (self.name, self.email)\n\n\nclass ExternalSubscriber(Subscriber):\n    pass\n\n\nclass OldSubscriber(Subscriber):\n    pass\n\n\nclass Media(models.Model):\n    name = models.CharField(max_length=60)\n\n\nclass Podcast(Media):\n    release_date = models.DateField()\n\n    class Meta:\n        ordering = ('release_date',) # overridden in PodcastAdmin\n\n\nclass Vodcast(Media):\n    media = models.OneToOneField(Media, primary_key=True, parent_link=True)\n    released = models.BooleanField(default=False)\n\n\nclass Parent(models.Model):\n    name = models.CharField(max_length=128)\n\n\nclass Child(models.Model):\n    parent = models.ForeignKey(Parent, editable=False)\n    name = models.CharField(max_length=30, blank=True)\n\n\n@python_2_unicode_compatible\nclass EmptyModel(models.Model):\n    def __str__(self):\n        return \"Primary key = %s\" % self.id\n\n\ntemp_storage = FileSystemStorage(tempfile.mkdtemp(dir=os.environ['DJANGO_TEST_TEMP_DIR']))\nUPLOAD_TO = os.path.join(temp_storage.location, 'test_upload')\n\n\nclass Gallery(models.Model):\n    name = models.CharField(max_length=100)\n\n\nclass Picture(models.Model):\n    name = models.CharField(max_length=100)\n    image = models.FileField(storage=temp_storage, upload_to='test_upload')\n    gallery = models.ForeignKey(Gallery, related_name=\"pictures\")\n\n\nclass Language(models.Model):\n    iso = models.CharField(max_length=5, primary_key=True)\n    name = models.CharField(max_length=50)\n    english_name = models.CharField(max_length=50)\n    shortlist = models.BooleanField(default=False)\n\n    class Meta:\n        ordering = ('iso',)\n\n\n# a base class for Recommender and Recommendation\nclass Title(models.Model):\n    pass\n\n\nclass TitleTranslation(models.Model):\n    title = models.ForeignKey(Title)\n    text = models.CharField(max_length=100)\n\n\nclass Recommender(Title):\n    pass\n\n\nclass Recommendation(Title):\n    recommender = models.ForeignKey(Recommender)\n\n\nclass Collector(models.Model):\n    name = models.CharField(max_length=100)\n\n\nclass Widget(models.Model):\n    owner = models.ForeignKey(Collector)\n    name = models.CharField(max_length=100)\n\n\nclass DooHickey(models.Model):\n    code = models.CharField(max_length=10, primary_key=True)\n    owner = models.ForeignKey(Collector)\n    name = models.CharField(max_length=100)\n\n\nclass Grommet(models.Model):\n    code = models.AutoField(primary_key=True)\n    owner = models.ForeignKey(Collector)\n    name = models.CharField(max_length=100)\n\n\nclass Whatsit(models.Model):\n    index = models.IntegerField(primary_key=True)\n    owner = models.ForeignKey(Collector)\n    name = models.CharField(max_length=100)\n\n\nclass Doodad(models.Model):\n    name = models.CharField(max_length=100)\n\n\nclass FancyDoodad(Doodad):\n    owner = models.ForeignKey(Collector)\n    expensive = models.BooleanField(default=True)\n\n\n@python_2_unicode_compatible\nclass Category(models.Model):\n    collector = models.ForeignKey(Collector)\n    order = models.PositiveIntegerField()\n\n    class Meta:\n        ordering = ('order',)\n\n    def __str__(self):\n        return '%s:o%s' % (self.id, self.order)\n\n\nclass Link(models.Model):\n    posted = models.DateField(\n        default=lambda: datetime.date.today() - datetime.timedelta(days=7)\n    )\n    url = models.URLField()\n    post = models.ForeignKey(\"Post\")\n\n\nclass PrePopulatedPost(models.Model):\n    title = models.CharField(max_length=100)\n    published = models.BooleanField()\n    slug = models.SlugField()\n\n\nclass PrePopulatedSubPost(models.Model):\n    post = models.ForeignKey(PrePopulatedPost)\n    subtitle = models.CharField(max_length=100)\n    subslug = models.SlugField()\n\n\nclass Post(models.Model):\n    title = models.CharField(max_length=100, help_text=\"Some help text for the title (with unicode ŠĐĆŽćžšđ)\")\n    content = models.TextField(help_text=\"Some help text for the content (with unicode ŠĐĆŽćžšđ)\")\n    posted = models.DateField(\n            default=datetime.date.today,\n            help_text=\"Some help text for the date (with unicode ŠĐĆŽćžšđ)\"\n    )\n    public = models.NullBooleanField()\n\n    def awesomeness_level(self):\n        return \"Very awesome.\"\n\n\n@python_2_unicode_compatible\nclass Gadget(models.Model):\n    name = models.CharField(max_length=100)\n\n    def __str__(self):\n        return self.name\n\n\n@python_2_unicode_compatible\nclass Villain(models.Model):\n    name = models.CharField(max_length=100)\n\n    def __str__(self):\n        return self.name\n\n\nclass SuperVillain(Villain):\n    pass\n\n\n@python_2_unicode_compatible\nclass FunkyTag(models.Model):\n    \"Because we all know there's only one real use case for GFKs.\"\n    name = models.CharField(max_length=25)\n    content_type = models.ForeignKey(ContentType)\n    object_id = models.PositiveIntegerField()\n    content_object = generic.GenericForeignKey('content_type', 'object_id')\n\n    def __str__(self):\n        return self.name\n\n\n@python_2_unicode_compatible\nclass Plot(models.Model):\n    name = models.CharField(max_length=100)\n    team_leader = models.ForeignKey(Villain, related_name='lead_plots')\n    contact = models.ForeignKey(Villain, related_name='contact_plots')\n    tags = generic.GenericRelation(FunkyTag)\n\n    def __str__(self):\n        return self.name\n\n\n@python_2_unicode_compatible\nclass PlotDetails(models.Model):\n    details = models.CharField(max_length=100)\n    plot = models.OneToOneField(Plot)\n\n    def __str__(self):\n        return self.details\n\n\n@python_2_unicode_compatible\nclass SecretHideout(models.Model):\n    \"\"\" Secret! Not registered with the admin! \"\"\"\n    location = models.CharField(max_length=100)\n    villain = models.ForeignKey(Villain)\n\n    def __str__(self):\n        return self.location\n\n\n@python_2_unicode_compatible\nclass SuperSecretHideout(models.Model):\n    \"\"\" Secret! Not registered with the admin! \"\"\"\n    location = models.CharField(max_length=100)\n    supervillain = models.ForeignKey(SuperVillain)\n\n    def __str__(self):\n        return self.location\n\n\n@python_2_unicode_compatible\nclass CyclicOne(models.Model):\n    name = models.CharField(max_length=25)\n    two = models.ForeignKey('CyclicTwo')\n\n    def __str__(self):\n        return self.name\n\n\n@python_2_unicode_compatible\nclass CyclicTwo(models.Model):\n    name = models.CharField(max_length=25)\n    one = models.ForeignKey(CyclicOne)\n\n    def __str__(self):\n        return self.name\n\n\nclass Topping(models.Model):\n    name = models.CharField(max_length=20)\n\n\nclass Pizza(models.Model):\n    name = models.CharField(max_length=20)\n    toppings = models.ManyToManyField('Topping')\n\n\nclass Album(models.Model):\n    owner = models.ForeignKey(User)\n    title = models.CharField(max_length=30)\n\n\nclass Employee(Person):\n    code = models.CharField(max_length=20)\n\n\nclass WorkHour(models.Model):\n    datum = models.DateField()\n    employee = models.ForeignKey(Employee)\n\n\nclass Question(models.Model):\n    question = models.CharField(max_length=20)\n\n\n@python_2_unicode_compatible\nclass Answer(models.Model):\n    question = models.ForeignKey(Question, on_delete=models.PROTECT)\n    answer = models.CharField(max_length=20)\n\n    def __str__(self):\n        return self.answer\n\n\nclass Reservation(models.Model):\n    start_date = models.DateTimeField()\n    price = models.IntegerField()\n\n\nDRIVER_CHOICES = (\n    ('bill', 'Bill G'),\n    ('steve', 'Steve J'),\n)\n\nRESTAURANT_CHOICES = (\n    ('indian', 'A Taste of India'),\n    ('thai', 'Thai Pography'),\n    ('pizza', 'Pizza Mama'),\n)\n\n\nclass FoodDelivery(models.Model):\n    reference = models.CharField(max_length=100)\n    driver = models.CharField(max_length=100, choices=DRIVER_CHOICES, blank=True)\n    restaurant = models.CharField(max_length=100, choices=RESTAURANT_CHOICES, blank=True)\n\n    class Meta:\n        unique_together = ((\"driver\", \"restaurant\"),)\n\n\n@python_2_unicode_compatible\nclass CoverLetter(models.Model):\n    author = models.CharField(max_length=30)\n    date_written = models.DateField(null=True, blank=True)\n\n    def __str__(self):\n        return self.author\n\n\nclass Paper(models.Model):\n    title = models.CharField(max_length=30)\n    author = models.CharField(max_length=30, blank=True, null=True)\n\n\nclass ShortMessage(models.Model):\n    content = models.CharField(max_length=140)\n    timestamp = models.DateTimeField(null=True, blank=True)\n\n\n@python_2_unicode_compatible\nclass Telegram(models.Model):\n    title = models.CharField(max_length=30)\n    date_sent = models.DateField(null=True, blank=True)\n\n    def __str__(self):\n        return self.title\n\n\nclass Story(models.Model):\n    title = models.CharField(max_length=100)\n    content = models.TextField()\n\n\nclass OtherStory(models.Model):\n    title = models.CharField(max_length=100)\n    content = models.TextField()\n\n\nclass ComplexSortedPerson(models.Model):\n    name = models.CharField(max_length=100)\n    age = models.PositiveIntegerField()\n    is_employee = models.NullBooleanField()\n\nclass PrePopulatedPostLargeSlug(models.Model):\n    \"\"\"\n    Regression test for #15938: a large max_length for the slugfield must not\n    be localized in prepopulated_fields_js.html or it might end up breaking\n    the javascript (ie, using THOUSAND_SEPARATOR ends up with maxLength=1,000)\n    \"\"\"\n    title = models.CharField(max_length=100)\n    published = models.BooleanField()\n    slug = models.SlugField(max_length=1000)\n\nclass AdminOrderedField(models.Model):\n    order = models.IntegerField()\n    stuff = models.CharField(max_length=200)\n\nclass AdminOrderedModelMethod(models.Model):\n    order = models.IntegerField()\n    stuff = models.CharField(max_length=200)\n    def some_order(self):\n        return self.order\n    some_order.admin_order_field = 'order'\n\nclass AdminOrderedAdminMethod(models.Model):\n    order = models.IntegerField()\n    stuff = models.CharField(max_length=200)\n\nclass AdminOrderedCallable(models.Model):\n    order = models.IntegerField()\n    stuff = models.CharField(max_length=200)\n\n@python_2_unicode_compatible\nclass Report(models.Model):\n    title = models.CharField(max_length=100)\n\n    def __str__(self):\n        return self.title\n\n\nclass MainPrepopulated(models.Model):\n    name = models.CharField(max_length=100)\n    pubdate = models.DateField()\n    status = models.CharField(\n        max_length=20,\n        choices=(('option one', 'Option One'),\n                 ('option two', 'Option Two')))\n    slug1 = models.SlugField()\n    slug2 = models.SlugField()\n\nclass RelatedPrepopulated(models.Model):\n    parent = models.ForeignKey(MainPrepopulated)\n    name = models.CharField(max_length=75)\n    pubdate = models.DateField()\n    status = models.CharField(\n        max_length=20,\n        choices=(('option one', 'Option One'),\n                 ('option two', 'Option Two')))\n    slug1 = models.SlugField(max_length=50)\n    slug2 = models.SlugField(max_length=60)\n\n\nclass UnorderedObject(models.Model):\n    \"\"\"\n    Model without any defined `Meta.ordering`.\n    Refs #16819.\n    \"\"\"\n    name = models.CharField(max_length=255)\n    bool = models.BooleanField(default=True)\n\nclass UndeletableObject(models.Model):\n    \"\"\"\n    Model whose show_delete in admin change_view has been disabled\n    Refs #10057.\n    \"\"\"\n    name = models.CharField(max_length=255)\n\nclass UserMessenger(models.Model):\n    \"\"\"\n    Dummy class for testing message_user functions on ModelAdmin\n    \"\"\"\n\nclass Simple(models.Model):\n    \"\"\"\n    Simple model with nothing on it for use in testing\n    \"\"\"\n\nclass Choice(models.Model):\n    choice = models.IntegerField(blank=True, null=True,\n        choices=((1, 'Yes'), (0, 'No'), (None, 'No opinion')))\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_views/templates/custom_filter_template.html",
    "content": "<h3>By {{ filter_title }} (custom)</h3>\n<ul>\n{% for choice in choices %}\n    <li{% if choice.selected %} class=\"selected\"{% endif %}>\n    <a href=\"{{ choice.query_string|iriencode }}\">{{ choice.display }}</a></li>\n{% endfor %}\n</ul>\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_views/tests.py",
    "content": "# coding: utf-8\nfrom __future__ import absolute_import, unicode_literals\n\nimport os\nimport re\nimport datetime\ntry:\n    from urllib.parse import urljoin\nexcept ImportError:     # Python 2\n    from urlparse import urljoin\n\nfrom django.conf import settings, global_settings\nfrom django.core import mail\nfrom django.core.exceptions import SuspiciousOperation\nfrom django.core.files import temp as tempfile\nfrom django.core.urlresolvers import reverse\n# Register auth models with the admin.\nfrom django.contrib import admin\nfrom django.contrib.admin.helpers import ACTION_CHECKBOX_NAME\nfrom django.contrib.admin.models import LogEntry, DELETION\nfrom django.contrib.admin.sites import LOGIN_FORM_KEY\nfrom django.contrib.admin.util import quote\nfrom django.contrib.admin.views.main import IS_POPUP_VAR\nfrom django.contrib.admin.tests import AdminSeleniumWebDriverTestCase\nfrom django.contrib.auth import REDIRECT_FIELD_NAME\nfrom django.contrib.auth.models import Group, User, Permission, UNUSABLE_PASSWORD\nfrom django.contrib.contenttypes.models import ContentType\nfrom django.forms.util import ErrorList\nfrom django.template.response import TemplateResponse\nfrom django.test import TestCase\nfrom django.utils import formats, translation, unittest\nfrom django.utils.cache import get_max_age\nfrom django.utils.encoding import iri_to_uri, force_bytes\nfrom django.utils.html import escape\nfrom django.utils.http import urlencode\nfrom django.utils._os import upath\nfrom django.utils import six\nfrom django.test.utils import override_settings\n\n# local test models\nfrom .models import (Article, BarAccount, CustomArticle, EmptyModel, FooAccount,\n    Gallery, ModelWithStringPrimaryKey, Person, Persona, Picture, Podcast,\n    Section, Subscriber, Vodcast, Language, Collector, Widget, Grommet,\n    DooHickey, FancyDoodad, Whatsit, Category, Post, Plot, FunkyTag, Chapter,\n    Book, Promo, WorkHour, Employee, Question, Answer, Inquisition, Actor,\n    FoodDelivery, RowLevelChangePermissionModel, Paper, CoverLetter, Story,\n    OtherStory, ComplexSortedPerson, Parent, Child, AdminOrderedField,\n    AdminOrderedModelMethod, AdminOrderedAdminMethod, AdminOrderedCallable,\n    Report, MainPrepopulated, RelatedPrepopulated, UnorderedObject,\n    Simple, UndeletableObject, Choice, ShortMessage, Telegram)\n\n\nERROR_MESSAGE = \"Please enter the correct username and password \\\nfor a staff account. Note that both fields may be case-sensitive.\"\n\n\n@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))\nclass AdminViewBasicTest(TestCase):\n    fixtures = ['admin-views-users.xml', 'admin-views-colors.xml',\n                'admin-views-fabrics.xml', 'admin-views-books.xml']\n\n    # Store the bit of the URL where the admin is registered as a class\n    # variable. That way we can test a second AdminSite just by subclassing\n    # this test case and changing urlbit.\n    urlbit = 'admin'\n\n    urls = \"regressiontests.admin_views.urls\"\n\n    def setUp(self):\n        self.old_USE_I18N = settings.USE_I18N\n        self.old_USE_L10N = settings.USE_L10N\n        self.old_LANGUAGE_CODE = settings.LANGUAGE_CODE\n        self.client.login(username='super', password='secret')\n        settings.USE_I18N = True\n\n    def tearDown(self):\n        settings.USE_I18N = self.old_USE_I18N\n        settings.USE_L10N = self.old_USE_L10N\n        settings.LANGUAGE_CODE = self.old_LANGUAGE_CODE\n        self.client.logout()\n        formats.reset_format_cache()\n\n    def assertContentBefore(self, response, text1, text2, failing_msg=None):\n        \"\"\"\n        Testing utility asserting that text1 appears before text2 in response\n        content.\n        \"\"\"\n        self.assertEqual(response.status_code, 200)\n        self.assertTrue(response.content.index(force_bytes(text1)) < response.content.index(force_bytes(text2)),\n            failing_msg\n        )\n\n    def testTrailingSlashRequired(self):\n        \"\"\"\n        If you leave off the trailing slash, app should redirect and add it.\n        \"\"\"\n        response = self.client.get('/test_admin/%s/admin_views/article/add' % self.urlbit)\n        self.assertRedirects(response,\n            '/test_admin/%s/admin_views/article/add/' % self.urlbit, status_code=301\n        )\n\n    def testBasicAddGet(self):\n        \"\"\"\n        A smoke test to ensure GET on the add_view works.\n        \"\"\"\n        response = self.client.get('/test_admin/%s/admin_views/section/add/' % self.urlbit)\n        self.assertIsInstance(response, TemplateResponse)\n        self.assertEqual(response.status_code, 200)\n\n    def testAddWithGETArgs(self):\n        response = self.client.get('/test_admin/%s/admin_views/section/add/' % self.urlbit, {'name': 'My Section'})\n        self.assertEqual(response.status_code, 200)\n        self.assertContains(response, 'value=\"My Section\"',\n            msg_prefix=\"Couldn't find an input with the right value in the response\"\n        )\n\n    def testBasicEditGet(self):\n        \"\"\"\n        A smoke test to ensure GET on the change_view works.\n        \"\"\"\n        response = self.client.get('/test_admin/%s/admin_views/section/1/' % self.urlbit)\n        self.assertIsInstance(response, TemplateResponse)\n        self.assertEqual(response.status_code, 200)\n\n    def testBasicEditGetStringPK(self):\n        \"\"\"\n        A smoke test to ensure GET on the change_view works (returns an HTTP\n        404 error, see #11191) when passing a string as the PK argument for a\n        model with an integer PK field.\n        \"\"\"\n        response = self.client.get('/test_admin/%s/admin_views/section/abc/' % self.urlbit)\n        self.assertEqual(response.status_code, 404)\n\n    def testBasicAddPost(self):\n        \"\"\"\n        A smoke test to ensure POST on add_view works.\n        \"\"\"\n        post_data = {\n            \"name\": \"Another Section\",\n            # inline data\n            \"article_set-TOTAL_FORMS\": \"3\",\n            \"article_set-INITIAL_FORMS\": \"0\",\n            \"article_set-MAX_NUM_FORMS\": \"0\",\n        }\n        response = self.client.post('/test_admin/%s/admin_views/section/add/' % self.urlbit, post_data)\n        self.assertEqual(response.status_code, 302)  # redirect somewhere\n\n    def testPopupAddPost(self):\n        \"\"\"\n        Ensure http response from a popup is properly escaped.\n        \"\"\"\n        post_data = {\n            '_popup': '1',\n            'title': 'title with a new\\nline',\n            'content': 'some content',\n            'date_0': '2010-09-10',\n            'date_1': '14:55:39',\n        }\n        response = self.client.post('/test_admin/%s/admin_views/article/add/' % self.urlbit, post_data)\n        self.assertEqual(response.status_code, 200)\n        self.assertContains(response, 'dismissAddAnotherPopup')\n        self.assertContains(response, 'title with a new\\\\u000Aline')\n\n    # Post data for edit inline\n    inline_post_data = {\n        \"name\": \"Test section\",\n        # inline data\n        \"article_set-TOTAL_FORMS\": \"6\",\n        \"article_set-INITIAL_FORMS\": \"3\",\n        \"article_set-MAX_NUM_FORMS\": \"0\",\n        \"article_set-0-id\": \"1\",\n        # there is no title in database, give one here or formset will fail.\n        \"article_set-0-title\": \"Norske bostaver æøå skaper problemer\",\n        \"article_set-0-content\": \"&lt;p&gt;Middle content&lt;/p&gt;\",\n        \"article_set-0-date_0\": \"2008-03-18\",\n        \"article_set-0-date_1\": \"11:54:58\",\n        \"article_set-0-section\": \"1\",\n        \"article_set-1-id\": \"2\",\n        \"article_set-1-title\": \"Need a title.\",\n        \"article_set-1-content\": \"&lt;p&gt;Oldest content&lt;/p&gt;\",\n        \"article_set-1-date_0\": \"2000-03-18\",\n        \"article_set-1-date_1\": \"11:54:58\",\n        \"article_set-2-id\": \"3\",\n        \"article_set-2-title\": \"Need a title.\",\n        \"article_set-2-content\": \"&lt;p&gt;Newest content&lt;/p&gt;\",\n        \"article_set-2-date_0\": \"2009-03-18\",\n        \"article_set-2-date_1\": \"11:54:58\",\n        \"article_set-3-id\": \"\",\n        \"article_set-3-title\": \"\",\n        \"article_set-3-content\": \"\",\n        \"article_set-3-date_0\": \"\",\n        \"article_set-3-date_1\": \"\",\n        \"article_set-4-id\": \"\",\n        \"article_set-4-title\": \"\",\n        \"article_set-4-content\": \"\",\n        \"article_set-4-date_0\": \"\",\n        \"article_set-4-date_1\": \"\",\n        \"article_set-5-id\": \"\",\n        \"article_set-5-title\": \"\",\n        \"article_set-5-content\": \"\",\n        \"article_set-5-date_0\": \"\",\n        \"article_set-5-date_1\": \"\",\n    }\n\n    def testBasicEditPost(self):\n        \"\"\"\n        A smoke test to ensure POST on edit_view works.\n        \"\"\"\n        response = self.client.post('/test_admin/%s/admin_views/section/1/' % self.urlbit, self.inline_post_data)\n        self.assertEqual(response.status_code, 302)  # redirect somewhere\n\n    def testEditSaveAs(self):\n        \"\"\"\n        Test \"save as\".\n        \"\"\"\n        post_data = self.inline_post_data.copy()\n        post_data.update({\n            '_saveasnew': 'Save+as+new',\n            \"article_set-1-section\": \"1\",\n            \"article_set-2-section\": \"1\",\n            \"article_set-3-section\": \"1\",\n            \"article_set-4-section\": \"1\",\n            \"article_set-5-section\": \"1\",\n        })\n        response = self.client.post('/test_admin/%s/admin_views/section/1/' % self.urlbit, post_data)\n        self.assertEqual(response.status_code, 302)  # redirect somewhere\n\n    def testChangeListSortingCallable(self):\n        \"\"\"\n        Ensure we can sort on a list_display field that is a callable\n        (column 2 is callable_year in ArticleAdmin)\n        \"\"\"\n        response = self.client.get('/test_admin/%s/admin_views/article/' % self.urlbit, {'o': 2})\n        self.assertContentBefore(response, 'Oldest content', 'Middle content',\n            \"Results of sorting on callable are out of order.\")\n        self.assertContentBefore(response, 'Middle content', 'Newest content',\n            \"Results of sorting on callable are out of order.\")\n\n    def testChangeListSortingModel(self):\n        \"\"\"\n        Ensure we can sort on a list_display field that is a Model method\n        (colunn 3 is 'model_year' in ArticleAdmin)\n        \"\"\"\n        response = self.client.get('/test_admin/%s/admin_views/article/' % self.urlbit, {'o': '-3'})\n        self.assertContentBefore(response, 'Newest content', 'Middle content',\n            \"Results of sorting on Model method are out of order.\")\n        self.assertContentBefore(response, 'Middle content', 'Oldest content',\n            \"Results of sorting on Model method are out of order.\")\n\n    def testChangeListSortingModelAdmin(self):\n        \"\"\"\n        Ensure we can sort on a list_display field that is a ModelAdmin method\n        (colunn 4 is 'modeladmin_year' in ArticleAdmin)\n        \"\"\"\n        response = self.client.get('/test_admin/%s/admin_views/article/' % self.urlbit, {'o': '4'})\n        self.assertContentBefore(response, 'Oldest content', 'Middle content',\n            \"Results of sorting on ModelAdmin method are out of order.\")\n        self.assertContentBefore(response, 'Middle content', 'Newest content',\n            \"Results of sorting on ModelAdmin method are out of order.\")\n\n    def testChangeListSortingMultiple(self):\n        p1 = Person.objects.create(name=\"Chris\", gender=1, alive=True)\n        p2 = Person.objects.create(name=\"Chris\", gender=2, alive=True)\n        p3 = Person.objects.create(name=\"Bob\", gender=1, alive=True)\n        link1 = reverse('admin:admin_views_person_change', args=(p1.pk,))\n        link2 = reverse('admin:admin_views_person_change', args=(p2.pk,))\n        link3 = reverse('admin:admin_views_person_change', args=(p3.pk,))\n\n        # Sort by name, gender\n        # This hard-codes the URL because it'll fail if it runs against the\n        # 'admin2' custom admin (which doesn't have the Person model).\n        response = self.client.get('/test_admin/admin/admin_views/person/', {'o': '1.2'})\n        self.assertContentBefore(response, link3, link1)\n        self.assertContentBefore(response, link1, link2)\n\n        # Sort by gender descending, name\n        response = self.client.get('/test_admin/admin/admin_views/person/', {'o': '-2.1'})\n        self.assertContentBefore(response, link2, link3)\n        self.assertContentBefore(response, link3, link1)\n\n    def testChangeListSortingPreserveQuerySetOrdering(self):\n        \"\"\"\n        If no ordering is defined in `ModelAdmin.ordering` or in the query\n        string, then the underlying order of the queryset should not be\n        changed, even if it is defined in `Modeladmin.queryset()`.\n        Refs #11868, #7309.\n        \"\"\"\n        p1 = Person.objects.create(name=\"Amy\", gender=1, alive=True, age=80)\n        p2 = Person.objects.create(name=\"Bob\", gender=1, alive=True, age=70)\n        p3 = Person.objects.create(name=\"Chris\", gender=2, alive=False, age=60)\n        link1 = reverse('admin:admin_views_person_change', args=(p1.pk,))\n        link2 = reverse('admin:admin_views_person_change', args=(p2.pk,))\n        link3 = reverse('admin:admin_views_person_change', args=(p3.pk,))\n\n        # This hard-codes the URL because it'll fail if it runs against the\n        # 'admin2' custom admin (which doesn't have the Person model).\n        response = self.client.get('/test_admin/admin/admin_views/person/', {})\n        self.assertContentBefore(response, link3, link2)\n        self.assertContentBefore(response, link2, link1)\n\n    def testChangeListSortingModelMeta(self):\n        # Test ordering on Model Meta is respected\n\n        l1 = Language.objects.create(iso='ur', name='Urdu')\n        l2 = Language.objects.create(iso='ar', name='Arabic')\n        link1 = reverse('admin:admin_views_language_change', args=(quote(l1.pk),))\n        link2 = reverse('admin:admin_views_language_change', args=(quote(l2.pk),))\n\n        response = self.client.get('/test_admin/admin/admin_views/language/', {})\n        self.assertContentBefore(response, link2, link1)\n\n        # Test we can override with query string\n        response = self.client.get('/test_admin/admin/admin_views/language/', {'o': '-1'})\n        self.assertContentBefore(response, link1, link2)\n\n    def testChangeListSortingOverrideModelAdmin(self):\n        # Test ordering on Model Admin is respected, and overrides Model Meta\n        dt = datetime.datetime.now()\n        p1 = Podcast.objects.create(name=\"A\", release_date=dt)\n        p2 = Podcast.objects.create(name=\"B\", release_date=dt - datetime.timedelta(10))\n        link1 = reverse('admin:admin_views_podcast_change', args=(p1.pk,))\n        link2 = reverse('admin:admin_views_podcast_change', args=(p2.pk,))\n\n        response = self.client.get('/test_admin/admin/admin_views/podcast/', {})\n        self.assertContentBefore(response, link1, link2)\n\n    def testMultipleSortSameField(self):\n        # Check that we get the columns we expect if we have two columns\n        # that correspond to the same ordering field\n        dt = datetime.datetime.now()\n        p1 = Podcast.objects.create(name=\"A\", release_date=dt)\n        p2 = Podcast.objects.create(name=\"B\", release_date=dt - datetime.timedelta(10))\n        link1 = reverse('admin:admin_views_podcast_change', args=(quote(p1.pk),))\n        link2 = reverse('admin:admin_views_podcast_change', args=(quote(p2.pk),))\n\n        response = self.client.get('/test_admin/admin/admin_views/podcast/', {})\n        self.assertContentBefore(response, link1, link2)\n\n        p1 = ComplexSortedPerson.objects.create(name=\"Bob\", age=10)\n        p2 = ComplexSortedPerson.objects.create(name=\"Amy\", age=20)\n        link1 = reverse('admin:admin_views_complexsortedperson_change', args=(p1.pk,))\n        link2 = reverse('admin:admin_views_complexsortedperson_change', args=(p2.pk,))\n\n        response = self.client.get('/test_admin/admin/admin_views/complexsortedperson/', {})\n        # Should have 5 columns (including action checkbox col)\n        self.assertContains(response, '<th scope=\"col\"', count=5)\n\n        self.assertContains(response, 'Name')\n        self.assertContains(response, 'Colored name')\n\n        # Check order\n        self.assertContentBefore(response, 'Name', 'Colored name')\n\n        # Check sorting - should be by name\n        self.assertContentBefore(response, link2, link1)\n\n    def testSortIndicatorsAdminOrder(self):\n        \"\"\"\n        Ensures that the admin shows default sort indicators for all\n        kinds of 'ordering' fields: field names, method on the model\n        admin and model itself, and other callables. See #17252.\n        \"\"\"\n        models = [(AdminOrderedField, 'adminorderedfield'),\n                  (AdminOrderedModelMethod, 'adminorderedmodelmethod'),\n                  (AdminOrderedAdminMethod, 'adminorderedadminmethod'),\n                  (AdminOrderedCallable, 'adminorderedcallable')]\n        for model, url in models:\n            a1 = model.objects.create(stuff='The Last Item', order=3)\n            a2 = model.objects.create(stuff='The First Item', order=1)\n            a3 = model.objects.create(stuff='The Middle Item', order=2)\n            response = self.client.get('/test_admin/admin/admin_views/%s/' % url, {})\n            self.assertEqual(response.status_code, 200)\n            # Should have 3 columns including action checkbox col.\n            self.assertContains(response, '<th scope=\"col\"', count=3, msg_prefix=url)\n            # Check if the correct column was selected. 2 is the index of the\n            # 'order' column in the model admin's 'list_display' with 0 being\n            # the implicit 'action_checkbox' and 1 being the column 'stuff'.\n            self.assertEqual(response.context['cl'].get_ordering_field_columns(), {2: 'asc'})\n            # Check order of records.\n            self.assertContentBefore(response, 'The First Item', 'The Middle Item')\n            self.assertContentBefore(response, 'The Middle Item', 'The Last Item')\n\n    def testLimitedFilter(self):\n        \"\"\"Ensure admin changelist filters do not contain objects excluded via limit_choices_to.\n        This also tests relation-spanning filters (e.g. 'color__value').\n        \"\"\"\n        response = self.client.get('/test_admin/%s/admin_views/thing/' % self.urlbit)\n        self.assertEqual(response.status_code, 200)\n        self.assertContains(response, '<div id=\"changelist-filter\">',\n            msg_prefix=\"Expected filter not found in changelist view\"\n        )\n        self.assertNotContains(response, '<a href=\"?color__id__exact=3\">Blue</a>',\n            msg_prefix=\"Changelist filter not correctly limited by limit_choices_to\"\n        )\n\n    def testRelationSpanningFilters(self):\n        response = self.client.get('/test_admin/%s/admin_views/chapterxtra1/' %\n                                   self.urlbit)\n        self.assertEqual(response.status_code, 200)\n        self.assertContains(response, '<div id=\"changelist-filter\">')\n        filters = {\n            'chap__id__exact': dict(\n                values=[c.id for c in Chapter.objects.all()],\n                test=lambda obj, value: obj.chap.id == value),\n            'chap__title': dict(\n                values=[c.title for c in Chapter.objects.all()],\n                test=lambda obj, value: obj.chap.title == value),\n            'chap__book__id__exact': dict(\n                values=[b.id for b in Book.objects.all()],\n                test=lambda obj, value: obj.chap.book.id == value),\n            'chap__book__name': dict(\n                values=[b.name for b in Book.objects.all()],\n                test=lambda obj, value: obj.chap.book.name == value),\n            'chap__book__promo__id__exact': dict(\n                values=[p.id for p in Promo.objects.all()],\n                test=lambda obj, value:\n                    obj.chap.book.promo_set.filter(id=value).exists()),\n            'chap__book__promo__name': dict(\n                values=[p.name for p in Promo.objects.all()],\n                test=lambda obj, value:\n                    obj.chap.book.promo_set.filter(name=value).exists()),\n            }\n        for filter_path, params in filters.items():\n            for value in params['values']:\n                query_string = urlencode({filter_path: value})\n                # ensure filter link exists\n                self.assertContains(response, '<a href=\"?%s\">' % query_string)\n                # ensure link works\n                filtered_response = self.client.get(\n                    '/test_admin/%s/admin_views/chapterxtra1/?%s' % (\n                        self.urlbit, query_string))\n                self.assertEqual(filtered_response.status_code, 200)\n                # ensure changelist contains only valid objects\n                for obj in filtered_response.context['cl'].query_set.all():\n                    self.assertTrue(params['test'](obj, value))\n\n    def testIncorrectLookupParameters(self):\n        \"\"\"Ensure incorrect lookup parameters are handled gracefully.\"\"\"\n        response = self.client.get('/test_admin/%s/admin_views/thing/' % self.urlbit, {'notarealfield': '5'})\n        self.assertRedirects(response, '/test_admin/%s/admin_views/thing/?e=1' % self.urlbit)\n\n        # Spanning relationships through an inexistant related object (Refs #16716)\n        response = self.client.get('/test_admin/%s/admin_views/thing/' % self.urlbit, {'notarealfield__whatever': '5'})\n        self.assertRedirects(response, '/test_admin/%s/admin_views/thing/?e=1' % self.urlbit)\n\n        response = self.client.get('/test_admin/%s/admin_views/thing/' % self.urlbit, {'color__id__exact': 'StringNotInteger!'})\n        self.assertRedirects(response, '/test_admin/%s/admin_views/thing/?e=1' % self.urlbit)\n\n        # Regression test for #18530\n        response = self.client.get('/test_admin/%s/admin_views/thing/' % self.urlbit, {'pub_date__gte': 'foo'})\n        self.assertRedirects(response, '/test_admin/%s/admin_views/thing/?e=1' % self.urlbit)\n\n    def testIsNullLookups(self):\n        \"\"\"Ensure is_null is handled correctly.\"\"\"\n        Article.objects.create(title=\"I Could Go Anywhere\", content=\"Versatile\", date=datetime.datetime.now())\n        response = self.client.get('/test_admin/%s/admin_views/article/' % self.urlbit)\n        self.assertContains(response, '4 articles')\n        response = self.client.get('/test_admin/%s/admin_views/article/' % self.urlbit, {'section__isnull': 'false'})\n        self.assertContains(response, '3 articles')\n        response = self.client.get('/test_admin/%s/admin_views/article/' % self.urlbit, {'section__isnull': 'true'})\n        self.assertContains(response, '1 article')\n\n    def testLogoutAndPasswordChangeURLs(self):\n        response = self.client.get('/test_admin/%s/admin_views/article/' % self.urlbit)\n        self.assertContains(response, '<a href=\"/test_admin/%s/logout/\">' % self.urlbit)\n        self.assertContains(response, '<a href=\"/test_admin/%s/password_change/\">' % self.urlbit)\n\n    def testNamedGroupFieldChoicesChangeList(self):\n        \"\"\"\n        Ensures the admin changelist shows correct values in the relevant column\n        for rows corresponding to instances of a model in which a named group\n        has been used in the choices option of a field.\n        \"\"\"\n        link1 = reverse('admin:admin_views_fabric_change', args=(1,), current_app=self.urlbit)\n        link2 = reverse('admin:admin_views_fabric_change', args=(2,), current_app=self.urlbit)\n        response = self.client.get('/test_admin/%s/admin_views/fabric/' % self.urlbit)\n        fail_msg = \"Changelist table isn't showing the right human-readable values set by a model field 'choices' option named group.\"\n        self.assertContains(response, '<a href=\"%s\">Horizontal</a>' % link1, msg_prefix=fail_msg, html=True)\n        self.assertContains(response, '<a href=\"%s\">Vertical</a>' % link2, msg_prefix=fail_msg, html=True)\n\n    def testNamedGroupFieldChoicesFilter(self):\n        \"\"\"\n        Ensures the filter UI shows correctly when at least one named group has\n        been used in the choices option of a model field.\n        \"\"\"\n        response = self.client.get('/test_admin/%s/admin_views/fabric/' % self.urlbit)\n        fail_msg = \"Changelist filter isn't showing options contained inside a model field 'choices' option named group.\"\n        self.assertContains(response, '<div id=\"changelist-filter\">')\n        self.assertContains(response,\n            '<a href=\"?surface__exact=x\">Horizontal</a>', msg_prefix=fail_msg, html=True)\n        self.assertContains(response,\n            '<a href=\"?surface__exact=y\">Vertical</a>', msg_prefix=fail_msg, html=True)\n\n    def testChangeListNullBooleanDisplay(self):\n        Post.objects.create(public=None)\n        # This hard-codes the URl because it'll fail if it runs\n        # against the 'admin2' custom admin (which doesn't have the\n        # Post model).\n        response = self.client.get(\"/test_admin/admin/admin_views/post/\")\n        self.assertContains(response, 'icon-unknown.gif')\n\n    def testI18NLanguageNonEnglishDefault(self):\n        \"\"\"\n        Check if the JavaScript i18n view returns an empty language catalog\n        if the default language is non-English but the selected language\n        is English. See #13388 and #3594 for more details.\n        \"\"\"\n        with self.settings(LANGUAGE_CODE='fr'):\n            with translation.override('en-us'):\n                response = self.client.get('/test_admin/admin/jsi18n/')\n                self.assertNotContains(response, 'Choisir une heure')\n\n    def testI18NLanguageNonEnglishFallback(self):\n        \"\"\"\n        Makes sure that the fallback language is still working properly\n        in cases where the selected language cannot be found.\n        \"\"\"\n        with self.settings(LANGUAGE_CODE='fr'):\n            with translation.override('none'):\n                response = self.client.get('/test_admin/admin/jsi18n/')\n                self.assertContains(response, 'Choisir une heure')\n\n    def testL10NDeactivated(self):\n        \"\"\"\n        Check if L10N is deactivated, the JavaScript i18n view doesn't\n        return localized date/time formats. Refs #14824.\n        \"\"\"\n        with self.settings(LANGUAGE_CODE='ru', USE_L10N=False):\n            with translation.override('none'):\n                response = self.client.get('/test_admin/admin/jsi18n/')\n                self.assertNotContains(response, '%d.%m.%Y %H:%M:%S')\n                self.assertContains(response, '%Y-%m-%d %H:%M:%S')\n\n    def test_disallowed_filtering(self):\n        self.assertRaises(SuspiciousOperation,\n            self.client.get, \"/test_admin/admin/admin_views/album/?owner__email__startswith=fuzzy\"\n        )\n\n        try:\n            self.client.get(\"/test_admin/admin/admin_views/thing/?color__value__startswith=red\")\n            self.client.get(\"/test_admin/admin/admin_views/thing/?color__value=red\")\n        except SuspiciousOperation:\n            self.fail(\"Filters are allowed if explicitly included in list_filter\")\n\n        try:\n            self.client.get(\"/test_admin/admin/admin_views/person/?age__gt=30\")\n        except SuspiciousOperation:\n            self.fail(\"Filters should be allowed if they involve a local field without the need to whitelist them in list_filter or date_hierarchy.\")\n\n        e1 = Employee.objects.create(name='Anonymous', gender=1, age=22, alive=True, code='123')\n        e2 = Employee.objects.create(name='Visitor', gender=2, age=19, alive=True, code='124')\n        WorkHour.objects.create(datum=datetime.datetime.now(), employee=e1)\n        WorkHour.objects.create(datum=datetime.datetime.now(), employee=e2)\n        response = self.client.get(\"/test_admin/admin/admin_views/workhour/\")\n        self.assertEqual(response.status_code, 200)\n        self.assertContains(response, 'employee__person_ptr__exact')\n        response = self.client.get(\"/test_admin/admin/admin_views/workhour/?employee__person_ptr__exact=%d\" % e1.pk)\n        self.assertEqual(response.status_code, 200)\n\n    def test_allowed_filtering_15103(self):\n        \"\"\"\n        Regressions test for ticket 15103 - filtering on fields defined in a\n        ForeignKey 'limit_choices_to' should be allowed, otherwise raw_id_fields\n        can break.\n        \"\"\"\n        try:\n            self.client.get(\"/test_admin/admin/admin_views/inquisition/?leader__name=Palin&leader__age=27\")\n        except SuspiciousOperation:\n            self.fail(\"Filters should be allowed if they are defined on a ForeignKey pointing to this model\")\n\n    def test_hide_change_password(self):\n        \"\"\"\n        Tests if the \"change password\" link in the admin is hidden if the User\n        does not have a usable password set.\n        (against 9bea85795705d015cdadc82c68b99196a8554f5c)\n        \"\"\"\n        user = User.objects.get(username='super')\n        password = user.password\n        user.set_unusable_password()\n        user.save()\n\n        response = self.client.get('/test_admin/admin/')\n        self.assertNotContains(response, reverse('admin:password_change'),\n            msg_prefix='The \"change password\" link should not be displayed if a user does not have a usable password.')\n\n    def test_change_view_with_show_delete_extra_context(self):\n        \"\"\"\n        Ensured that the 'show_delete' context variable in the admin's change\n        view actually controls the display of the delete button.\n        Refs #10057.\n        \"\"\"\n        instance = UndeletableObject.objects.create(name='foo')\n        response = self.client.get('/test_admin/%s/admin_views/undeletableobject/%d/' %\n                                   (self.urlbit, instance.pk))\n        self.assertNotContains(response, 'deletelink')\n\n    def test_allows_attributeerror_to_bubble_up(self):\n        \"\"\"\n        Ensure that AttributeErrors are allowed to bubble when raised inside\n        a change list view.\n\n        Requires a model to be created so there's something to be displayed\n\n        Refs: #16655, #18593, and #18747\n        \"\"\"\n        Simple.objects.create()\n        with self.assertRaises(AttributeError):\n            self.client.get('/test_admin/%s/admin_views/simple/' % self.urlbit)\n\n\n@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))\nclass AdminViewFormUrlTest(TestCase):\n    urls = \"regressiontests.admin_views.urls\"\n    fixtures = [\"admin-views-users.xml\"]\n    urlbit = \"admin3\"\n\n    def setUp(self):\n        self.client.login(username='super', password='secret')\n\n    def tearDown(self):\n        self.client.logout()\n\n    def testChangeFormUrlHasCorrectValue(self):\n        \"\"\"\n        Tests whether change_view has form_url in response.context\n        \"\"\"\n        response = self.client.get('/test_admin/%s/admin_views/section/1/' % self.urlbit)\n        self.assertTrue('form_url' in response.context, msg='form_url not present in response.context')\n        self.assertEqual(response.context['form_url'], 'pony')\n\n    def test_filter_with_custom_template(self):\n        \"\"\"\n        Ensure that one can use a custom template to render an admin filter.\n        Refs #17515.\n        \"\"\"\n        template_dirs = settings.TEMPLATE_DIRS + (\n            os.path.join(os.path.dirname(upath(__file__)), 'templates'),)\n        with self.settings(TEMPLATE_DIRS=template_dirs):\n            response = self.client.get(\"/test_admin/admin/admin_views/color2/\")\n            self.assertTrue('custom_filter_template.html' in [t.name for t in response.templates])\n\n\n@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))\nclass AdminJavaScriptTest(TestCase):\n    fixtures = ['admin-views-users.xml']\n\n    urls = \"regressiontests.admin_views.urls\"\n\n    def setUp(self):\n        self.client.login(username='super', password='secret')\n\n    def tearDown(self):\n        self.client.logout()\n\n    def testSingleWidgetFirsFieldFocus(self):\n        \"\"\"\n        JavaScript-assisted auto-focus on first field.\n        \"\"\"\n        response = self.client.get('/test_admin/%s/admin_views/picture/add/' % 'admin')\n        self.assertContains(\n            response,\n            '<script type=\"text/javascript\">document.getElementById(\"id_name\").focus();</script>'\n        )\n\n    def testMultiWidgetFirsFieldFocus(self):\n        \"\"\"\n        JavaScript-assisted auto-focus should work if a model/ModelAdmin setup\n        is such that the first form field has a MultiWidget.\n        \"\"\"\n        response = self.client.get('/test_admin/%s/admin_views/reservation/add/' % 'admin')\n        self.assertContains(\n            response,\n            '<script type=\"text/javascript\">document.getElementById(\"id_start_date_0\").focus();</script>'\n        )\n\n    def test_js_minified_only_if_debug_is_false(self):\n        \"\"\"\n        Ensure that the minified versions of the JS files are only used when\n        DEBUG is False.\n        Refs #17521.\n        \"\"\"\n        with override_settings(DEBUG=False):\n            response = self.client.get(\n                '/test_admin/%s/admin_views/section/add/' % 'admin')\n            self.assertNotContains(response, 'jquery.js')\n            self.assertContains(response, 'jquery.min.js')\n            self.assertNotContains(response, 'prepopulate.js')\n            self.assertContains(response, 'prepopulate.min.js')\n            self.assertNotContains(response, 'actions.js')\n            self.assertContains(response, 'actions.min.js')\n            self.assertNotContains(response, 'collapse.js')\n            self.assertContains(response, 'collapse.min.js')\n            self.assertNotContains(response, 'inlines.js')\n            self.assertContains(response, 'inlines.min.js')\n        with override_settings(DEBUG=True):\n            response = self.client.get(\n                '/test_admin/%s/admin_views/section/add/' % 'admin')\n            self.assertContains(response, 'jquery.js')\n            self.assertNotContains(response, 'jquery.min.js')\n            self.assertContains(response, 'prepopulate.js')\n            self.assertNotContains(response, 'prepopulate.min.js')\n            self.assertContains(response, 'actions.js')\n            self.assertNotContains(response, 'actions.min.js')\n            self.assertContains(response, 'collapse.js')\n            self.assertNotContains(response, 'collapse.min.js')\n            self.assertContains(response, 'inlines.js')\n            self.assertNotContains(response, 'inlines.min.js')\n\n\n@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))\nclass SaveAsTests(TestCase):\n    urls = \"regressiontests.admin_views.urls\"\n    fixtures = ['admin-views-users.xml', 'admin-views-person.xml']\n\n    def setUp(self):\n        self.client.login(username='super', password='secret')\n\n    def tearDown(self):\n        self.client.logout()\n\n    def test_save_as_duplication(self):\n        \"\"\"Ensure save as actually creates a new person\"\"\"\n        post_data = {'_saveasnew': '', 'name': 'John M', 'gender': 1, 'age': 42}\n        response = self.client.post('/test_admin/admin/admin_views/person/1/', post_data)\n        self.assertEqual(len(Person.objects.filter(name='John M')), 1)\n        self.assertEqual(len(Person.objects.filter(id=1)), 1)\n\n    def test_save_as_display(self):\n        \"\"\"\n        Ensure that 'save as' is displayed when activated and after submitting\n        invalid data aside save_as_new will not show us a form to overwrite the\n        initial model.\n        \"\"\"\n        response = self.client.get('/test_admin/admin/admin_views/person/1/')\n        self.assertTrue(response.context['save_as'])\n        post_data = {'_saveasnew': '', 'name': 'John M', 'gender': 3, 'alive': 'checked'}\n        response = self.client.post('/test_admin/admin/admin_views/person/1/', post_data)\n        self.assertEqual(response.context['form_url'], '/test_admin/admin/admin_views/person/add/')\n\n\nclass CustomModelAdminTest(AdminViewBasicTest):\n    urls = \"regressiontests.admin_views.urls\"\n    urlbit = \"admin2\"\n\n    def testCustomAdminSiteLoginForm(self):\n        self.client.logout()\n        response = self.client.get('/test_admin/admin2/')\n        self.assertIsInstance(response, TemplateResponse)\n        self.assertEqual(response.status_code, 200)\n        login = self.client.post('/test_admin/admin2/', {\n            REDIRECT_FIELD_NAME: '/test_admin/admin2/',\n            LOGIN_FORM_KEY: 1,\n            'username': 'customform',\n            'password': 'secret',\n        })\n        self.assertIsInstance(login, TemplateResponse)\n        self.assertEqual(login.status_code, 200)\n        self.assertContains(login, 'custom form error')\n\n    def testCustomAdminSiteLoginTemplate(self):\n        self.client.logout()\n        response = self.client.get('/test_admin/admin2/')\n        self.assertIsInstance(response, TemplateResponse)\n        self.assertTemplateUsed(response, 'custom_admin/login.html')\n        self.assertContains(response, 'Hello from a custom login template')\n\n    def testCustomAdminSiteLogoutTemplate(self):\n        response = self.client.get('/test_admin/admin2/logout/')\n        self.assertIsInstance(response, TemplateResponse)\n        self.assertTemplateUsed(response, 'custom_admin/logout.html')\n        self.assertContains(response, 'Hello from a custom logout template')\n\n    def testCustomAdminSiteIndexViewAndTemplate(self):\n        try:\n            response = self.client.get('/test_admin/admin2/')\n        except TypeError:\n            self.fail('AdminSite.index_template should accept a list of template paths')\n        self.assertIsInstance(response, TemplateResponse)\n        self.assertTemplateUsed(response, 'custom_admin/index.html')\n        self.assertContains(response, 'Hello from a custom index template *bar*')\n\n    def testCustomAdminSitePasswordChangeTemplate(self):\n        response = self.client.get('/test_admin/admin2/password_change/')\n        self.assertIsInstance(response, TemplateResponse)\n        self.assertTemplateUsed(response, 'custom_admin/password_change_form.html')\n        self.assertContains(response, 'Hello from a custom password change form template')\n\n    def testCustomAdminSitePasswordChangeDoneTemplate(self):\n        response = self.client.get('/test_admin/admin2/password_change/done/')\n        self.assertIsInstance(response, TemplateResponse)\n        self.assertTemplateUsed(response, 'custom_admin/password_change_done.html')\n        self.assertContains(response, 'Hello from a custom password change done template')\n\n    def testCustomAdminSiteView(self):\n        self.client.login(username='super', password='secret')\n        response = self.client.get('/test_admin/%s/my_view/' % self.urlbit)\n        self.assertEqual(response.content, b\"Django is a magical pony!\")\n\n    def test_pwd_change_custom_template(self):\n        self.client.login(username='super', password='secret')\n        su = User.objects.get(username='super')\n        try:\n            response = self.client.get('/test_admin/admin4/auth/user/%s/password/' % su.pk)\n        except TypeError:\n            self.fail('ModelAdmin.change_user_password_template should accept a list of template paths')\n        self.assertEqual(response.status_code, 200)\n\n\ndef get_perm(Model, perm):\n    \"\"\"Return the permission object, for the Model\"\"\"\n    ct = ContentType.objects.get_for_model(Model)\n    return Permission.objects.get(content_type=ct, codename=perm)\n\n\n@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))\nclass AdminViewPermissionsTest(TestCase):\n    \"\"\"Tests for Admin Views Permissions.\"\"\"\n\n    urls = \"regressiontests.admin_views.urls\"\n    fixtures = ['admin-views-users.xml']\n\n    def setUp(self):\n        \"\"\"Test setup.\"\"\"\n        # Setup permissions, for our users who can add, change, and delete.\n        # We can't put this into the fixture, because the content type id\n        # and the permission id could be different on each run of the test.\n\n        opts = Article._meta\n\n        # User who can add Articles\n        add_user = User.objects.get(username='adduser')\n        add_user.user_permissions.add(get_perm(Article,\n            opts.get_add_permission()))\n\n        # User who can change Articles\n        change_user = User.objects.get(username='changeuser')\n        change_user.user_permissions.add(get_perm(Article,\n            opts.get_change_permission()))\n\n        # User who can delete Articles\n        delete_user = User.objects.get(username='deleteuser')\n        delete_user.user_permissions.add(get_perm(Article,\n            opts.get_delete_permission()))\n\n        delete_user.user_permissions.add(get_perm(Section,\n            Section._meta.get_delete_permission()))\n\n        # login POST dicts\n        self.super_login = {\n            REDIRECT_FIELD_NAME: '/test_admin/admin/',\n            LOGIN_FORM_KEY: 1,\n            'username': 'super',\n            'password': 'secret',\n        }\n        self.super_email_login = {\n            REDIRECT_FIELD_NAME: '/test_admin/admin/',\n            LOGIN_FORM_KEY: 1,\n            'username': 'super@example.com',\n            'password': 'secret',\n        }\n        self.super_email_bad_login = {\n            REDIRECT_FIELD_NAME: '/test_admin/admin/',\n            LOGIN_FORM_KEY: 1,\n            'username': 'super@example.com',\n            'password': 'notsecret',\n        }\n        self.adduser_login = {\n            REDIRECT_FIELD_NAME: '/test_admin/admin/',\n            LOGIN_FORM_KEY: 1,\n            'username': 'adduser',\n            'password': 'secret',\n        }\n        self.changeuser_login = {\n            REDIRECT_FIELD_NAME: '/test_admin/admin/',\n            LOGIN_FORM_KEY: 1,\n            'username': 'changeuser',\n            'password': 'secret',\n        }\n        self.deleteuser_login = {\n            REDIRECT_FIELD_NAME: '/test_admin/admin/',\n            LOGIN_FORM_KEY: 1,\n            'username': 'deleteuser',\n            'password': 'secret',\n        }\n        self.joepublic_login = {\n            REDIRECT_FIELD_NAME: '/test_admin/admin/',\n            LOGIN_FORM_KEY: 1,\n            'username': 'joepublic',\n            'password': 'secret',\n        }\n        self.no_username_login = {\n            REDIRECT_FIELD_NAME: '/test_admin/admin/',\n            LOGIN_FORM_KEY: 1,\n            'password': 'secret',\n        }\n\n    def testLogin(self):\n        \"\"\"\n        Make sure only staff members can log in.\n\n        Successful posts to the login page will redirect to the orignal url.\n        Unsuccessfull attempts will continue to render the login page with\n        a 200 status code.\n        \"\"\"\n        # Super User\n        response = self.client.get('/test_admin/admin/')\n        self.assertEqual(response.status_code, 200)\n        login = self.client.post('/test_admin/admin/', self.super_login)\n        self.assertRedirects(login, '/test_admin/admin/')\n        self.assertFalse(login.context)\n        self.client.get('/test_admin/admin/logout/')\n\n        # Test if user enters email address\n        response = self.client.get('/test_admin/admin/')\n        self.assertEqual(response.status_code, 200)\n        login = self.client.post('/test_admin/admin/', self.super_email_login)\n        self.assertContains(login, ERROR_MESSAGE)\n        # only correct passwords get a username hint\n        login = self.client.post('/test_admin/admin/', self.super_email_bad_login)\n        self.assertContains(login, ERROR_MESSAGE)\n        new_user = User(username='jondoe', password='secret', email='super@example.com')\n        new_user.save()\n        # check to ensure if there are multiple email addresses a user doesn't get a 500\n        login = self.client.post('/test_admin/admin/', self.super_email_login)\n        self.assertContains(login, ERROR_MESSAGE)\n\n        # Add User\n        response = self.client.get('/test_admin/admin/')\n        self.assertEqual(response.status_code, 200)\n        login = self.client.post('/test_admin/admin/', self.adduser_login)\n        self.assertRedirects(login, '/test_admin/admin/')\n        self.assertFalse(login.context)\n        self.client.get('/test_admin/admin/logout/')\n\n        # Change User\n        response = self.client.get('/test_admin/admin/')\n        self.assertEqual(response.status_code, 200)\n        login = self.client.post('/test_admin/admin/', self.changeuser_login)\n        self.assertRedirects(login, '/test_admin/admin/')\n        self.assertFalse(login.context)\n        self.client.get('/test_admin/admin/logout/')\n\n        # Delete User\n        response = self.client.get('/test_admin/admin/')\n        self.assertEqual(response.status_code, 200)\n        login = self.client.post('/test_admin/admin/', self.deleteuser_login)\n        self.assertRedirects(login, '/test_admin/admin/')\n        self.assertFalse(login.context)\n        self.client.get('/test_admin/admin/logout/')\n\n        # Regular User should not be able to login.\n        response = self.client.get('/test_admin/admin/')\n        self.assertEqual(response.status_code, 200)\n        login = self.client.post('/test_admin/admin/', self.joepublic_login)\n        self.assertEqual(login.status_code, 200)\n        self.assertContains(login, ERROR_MESSAGE)\n\n        # Requests without username should not return 500 errors.\n        response = self.client.get('/test_admin/admin/')\n        self.assertEqual(response.status_code, 200)\n        login = self.client.post('/test_admin/admin/', self.no_username_login)\n        self.assertEqual(login.status_code, 200)\n        form = login.context[0].get('form')\n        self.assertEqual(form.errors['username'][0], 'This field is required.')\n\n    def testLoginSuccessfullyRedirectsToOriginalUrl(self):\n        response = self.client.get('/test_admin/admin/')\n        self.assertEqual(response.status_code, 200)\n        query_string = 'the-answer=42'\n        redirect_url = '/test_admin/admin/?%s' % query_string\n        new_next = {REDIRECT_FIELD_NAME: redirect_url}\n        login = self.client.post('/test_admin/admin/', dict(self.super_login, **new_next), QUERY_STRING=query_string)\n        self.assertRedirects(login, redirect_url)\n\n    def testAddView(self):\n        \"\"\"Test add view restricts access and actually adds items.\"\"\"\n\n        add_dict = {'title': 'Døm ikke',\n                    'content': '<p>great article</p>',\n                    'date_0': '2008-03-18', 'date_1': '10:54:39',\n                    'section': 1}\n\n        # Change User should not have access to add articles\n        self.client.get('/test_admin/admin/')\n        self.client.post('/test_admin/admin/', self.changeuser_login)\n        # make sure the view removes test cookie\n        self.assertEqual(self.client.session.test_cookie_worked(), False)\n        response = self.client.get('/test_admin/admin/admin_views/article/add/')\n        self.assertEqual(response.status_code, 403)\n        # Try POST just to make sure\n        post = self.client.post('/test_admin/admin/admin_views/article/add/', add_dict)\n        self.assertEqual(post.status_code, 403)\n        self.assertEqual(Article.objects.all().count(), 3)\n        self.client.get('/test_admin/admin/logout/')\n\n        # Add user may login and POST to add view, then redirect to admin root\n        self.client.get('/test_admin/admin/')\n        self.client.post('/test_admin/admin/', self.adduser_login)\n        addpage = self.client.get('/test_admin/admin/admin_views/article/add/')\n        change_list_link = '&rsaquo; <a href=\"/test_admin/admin/admin_views/article/\">Articles</a>'\n        self.assertNotContains(addpage, change_list_link,\n            msg_prefix='User restricted to add permission is given link to change list view in breadcrumbs.')\n        post = self.client.post('/test_admin/admin/admin_views/article/add/', add_dict)\n        self.assertRedirects(post, '/test_admin/admin/')\n        self.assertEqual(Article.objects.all().count(), 4)\n        self.assertEqual(len(mail.outbox), 1)\n        self.assertEqual(mail.outbox[0].subject, 'Greetings from a created object')\n        self.client.get('/test_admin/admin/logout/')\n\n        # Super can add too, but is redirected to the change list view\n        self.client.get('/test_admin/admin/')\n        self.client.post('/test_admin/admin/', self.super_login)\n        addpage = self.client.get('/test_admin/admin/admin_views/article/add/')\n        self.assertContains(addpage, change_list_link,\n            msg_prefix='Unrestricted user is not given link to change list view in breadcrumbs.')\n        post = self.client.post('/test_admin/admin/admin_views/article/add/', add_dict)\n        self.assertRedirects(post, '/test_admin/admin/admin_views/article/')\n        self.assertEqual(Article.objects.all().count(), 5)\n        self.client.get('/test_admin/admin/logout/')\n\n        # 8509 - if a normal user is already logged in, it is possible\n        # to change user into the superuser without error\n        login = self.client.login(username='joepublic', password='secret')\n        # Check and make sure that if user expires, data still persists\n        self.client.get('/test_admin/admin/')\n        self.client.post('/test_admin/admin/', self.super_login)\n        # make sure the view removes test cookie\n        self.assertEqual(self.client.session.test_cookie_worked(), False)\n\n    def testChangeView(self):\n        \"\"\"Change view should restrict access and allow users to edit items.\"\"\"\n\n        change_dict = {'title': 'Ikke fordømt',\n                       'content': '<p>edited article</p>',\n                       'date_0': '2008-03-18', 'date_1': '10:54:39',\n                       'section': 1}\n\n        # add user shoud not be able to view the list of article or change any of them\n        self.client.get('/test_admin/admin/')\n        self.client.post('/test_admin/admin/', self.adduser_login)\n        response = self.client.get('/test_admin/admin/admin_views/article/')\n        self.assertEqual(response.status_code, 403)\n        response = self.client.get('/test_admin/admin/admin_views/article/1/')\n        self.assertEqual(response.status_code, 403)\n        post = self.client.post('/test_admin/admin/admin_views/article/1/', change_dict)\n        self.assertEqual(post.status_code, 403)\n        self.client.get('/test_admin/admin/logout/')\n\n        # change user can view all items and edit them\n        self.client.get('/test_admin/admin/')\n        self.client.post('/test_admin/admin/', self.changeuser_login)\n        response = self.client.get('/test_admin/admin/admin_views/article/')\n        self.assertEqual(response.status_code, 200)\n        response = self.client.get('/test_admin/admin/admin_views/article/1/')\n        self.assertEqual(response.status_code, 200)\n        post = self.client.post('/test_admin/admin/admin_views/article/1/', change_dict)\n        self.assertRedirects(post, '/test_admin/admin/admin_views/article/')\n        self.assertEqual(Article.objects.get(pk=1).content, '<p>edited article</p>')\n\n        # one error in form should produce singular error message, multiple errors plural\n        change_dict['title'] = ''\n        post = self.client.post('/test_admin/admin/admin_views/article/1/', change_dict)\n        self.assertContains(post, 'Please correct the error below.',\n            msg_prefix='Singular error message not found in response to post with one error')\n\n        change_dict['content'] = ''\n        post = self.client.post('/test_admin/admin/admin_views/article/1/', change_dict)\n        self.assertContains(post, 'Please correct the errors below.',\n            msg_prefix='Plural error message not found in response to post with multiple errors')\n        self.client.get('/test_admin/admin/logout/')\n\n        # Test redirection when using row-level change permissions. Refs #11513.\n        RowLevelChangePermissionModel.objects.create(id=1, name=\"odd id\")\n        RowLevelChangePermissionModel.objects.create(id=2, name=\"even id\")\n        for login_dict in [self.super_login, self.changeuser_login, self.adduser_login, self.deleteuser_login]:\n            self.client.post('/test_admin/admin/', login_dict)\n            response = self.client.get('/test_admin/admin/admin_views/rowlevelchangepermissionmodel/1/')\n            self.assertEqual(response.status_code, 403)\n            response = self.client.post('/test_admin/admin/admin_views/rowlevelchangepermissionmodel/1/', {'name': 'changed'})\n            self.assertEqual(RowLevelChangePermissionModel.objects.get(id=1).name, 'odd id')\n            self.assertEqual(response.status_code, 403)\n            response = self.client.get('/test_admin/admin/admin_views/rowlevelchangepermissionmodel/2/')\n            self.assertEqual(response.status_code, 200)\n            response = self.client.post('/test_admin/admin/admin_views/rowlevelchangepermissionmodel/2/', {'name': 'changed'})\n            self.assertEqual(RowLevelChangePermissionModel.objects.get(id=2).name, 'changed')\n            self.assertRedirects(response, '/test_admin/admin/')\n            self.client.get('/test_admin/admin/logout/')\n        for login_dict in [self.joepublic_login, self.no_username_login]:\n            self.client.post('/test_admin/admin/', login_dict)\n            response = self.client.get('/test_admin/admin/admin_views/rowlevelchangepermissionmodel/1/')\n            self.assertEqual(response.status_code, 200)\n            self.assertContains(response, 'login-form')\n            response = self.client.post('/test_admin/admin/admin_views/rowlevelchangepermissionmodel/1/', {'name': 'changed'})\n            self.assertEqual(RowLevelChangePermissionModel.objects.get(id=1).name, 'odd id')\n            self.assertEqual(response.status_code, 200)\n            self.assertContains(response, 'login-form')\n            response = self.client.get('/test_admin/admin/admin_views/rowlevelchangepermissionmodel/2/')\n            self.assertEqual(response.status_code, 200)\n            self.assertContains(response, 'login-form')\n            response = self.client.post('/test_admin/admin/admin_views/rowlevelchangepermissionmodel/2/', {'name': 'changed again'})\n            self.assertEqual(RowLevelChangePermissionModel.objects.get(id=2).name, 'changed')\n            self.assertEqual(response.status_code, 200)\n            self.assertContains(response, 'login-form')\n            self.client.get('/test_admin/admin/logout/')\n\n    def testHistoryView(self):\n        \"\"\"History view should restrict access.\"\"\"\n\n        # add user shoud not be able to view the list of article or change any of them\n        self.client.get('/test_admin/admin/')\n        self.client.post('/test_admin/admin/', self.adduser_login)\n        response = self.client.get('/test_admin/admin/admin_views/article/1/history/')\n        self.assertEqual(response.status_code, 403)\n        self.client.get('/test_admin/admin/logout/')\n\n        # change user can view all items and edit them\n        self.client.get('/test_admin/admin/')\n        self.client.post('/test_admin/admin/', self.changeuser_login)\n        response = self.client.get('/test_admin/admin/admin_views/article/1/history/')\n        self.assertEqual(response.status_code, 200)\n\n        # Test redirection when using row-level change permissions. Refs #11513.\n        RowLevelChangePermissionModel.objects.create(id=1, name=\"odd id\")\n        RowLevelChangePermissionModel.objects.create(id=2, name=\"even id\")\n        for login_dict in [self.super_login, self.changeuser_login, self.adduser_login, self.deleteuser_login]:\n            self.client.post('/test_admin/admin/', login_dict)\n            response = self.client.get('/test_admin/admin/admin_views/rowlevelchangepermissionmodel/1/history/')\n            self.assertEqual(response.status_code, 403)\n\n            response = self.client.get('/test_admin/admin/admin_views/rowlevelchangepermissionmodel/2/history/')\n            self.assertEqual(response.status_code, 200)\n\n            self.client.get('/test_admin/admin/logout/')\n\n        for login_dict in [self.joepublic_login, self.no_username_login]:\n            self.client.post('/test_admin/admin/', login_dict)\n            response = self.client.get('/test_admin/admin/admin_views/rowlevelchangepermissionmodel/1/history/')\n            self.assertEqual(response.status_code, 200)\n            self.assertContains(response, 'login-form')\n            response = self.client.get('/test_admin/admin/admin_views/rowlevelchangepermissionmodel/2/history/')\n            self.assertEqual(response.status_code, 200)\n            self.assertContains(response, 'login-form')\n\n            self.client.get('/test_admin/admin/logout/')\n\n    def testConditionallyShowAddSectionLink(self):\n        \"\"\"\n        The foreign key widget should only show the \"add related\" button if the\n        user has permission to add that related item.\n        \"\"\"\n        # Set up and log in user.\n        url = '/test_admin/admin/admin_views/article/add/'\n        add_link_text = ' class=\"add-another\"'\n        self.client.get('/test_admin/admin/')\n        self.client.post('/test_admin/admin/', self.adduser_login)\n        # The add user can't add sections yet, so they shouldn't see the \"add\n        # section\" link.\n        response = self.client.get(url)\n        self.assertNotContains(response, add_link_text)\n        # Allow the add user to add sections too. Now they can see the \"add\n        # section\" link.\n        add_user = User.objects.get(username='adduser')\n        perm = get_perm(Section, Section._meta.get_add_permission())\n        add_user.user_permissions.add(perm)\n        response = self.client.get(url)\n        self.assertContains(response, add_link_text)\n\n    def testCustomModelAdminTemplates(self):\n        self.client.get('/test_admin/admin/')\n        self.client.post('/test_admin/admin/', self.super_login)\n\n        # Test custom change list template with custom extra context\n        response = self.client.get('/test_admin/admin/admin_views/customarticle/')\n        self.assertContains(response, \"var hello = 'Hello!';\")\n        self.assertTemplateUsed(response, 'custom_admin/change_list.html')\n\n        # Test custom add form template\n        response = self.client.get('/test_admin/admin/admin_views/customarticle/add/')\n        self.assertTemplateUsed(response, 'custom_admin/add_form.html')\n\n        # Add an article so we can test delete, change, and history views\n        post = self.client.post('/test_admin/admin/admin_views/customarticle/add/', {\n            'content': '<p>great article</p>',\n            'date_0': '2008-03-18',\n            'date_1': '10:54:39'\n        })\n        self.assertRedirects(post, '/test_admin/admin/admin_views/customarticle/')\n        self.assertEqual(CustomArticle.objects.all().count(), 1)\n        article_pk = CustomArticle.objects.all()[0].pk\n\n        # Test custom delete, change, and object history templates\n        # Test custom change form template\n        response = self.client.get('/test_admin/admin/admin_views/customarticle/%d/' % article_pk)\n        self.assertTemplateUsed(response, 'custom_admin/change_form.html')\n        response = self.client.get('/test_admin/admin/admin_views/customarticle/%d/delete/' % article_pk)\n        self.assertTemplateUsed(response, 'custom_admin/delete_confirmation.html')\n        response = self.client.post('/test_admin/admin/admin_views/customarticle/', data={\n                'index': 0,\n                'action': ['delete_selected'],\n                '_selected_action': ['1'],\n            })\n        self.assertTemplateUsed(response, 'custom_admin/delete_selected_confirmation.html')\n        response = self.client.get('/test_admin/admin/admin_views/customarticle/%d/history/' % article_pk)\n        self.assertTemplateUsed(response, 'custom_admin/object_history.html')\n\n        self.client.get('/test_admin/admin/logout/')\n\n    def testDeleteView(self):\n        \"\"\"Delete view should restrict access and actually delete items.\"\"\"\n\n        delete_dict = {'post': 'yes'}\n\n        # add user shoud not be able to delete articles\n        self.client.get('/test_admin/admin/')\n        self.client.post('/test_admin/admin/', self.adduser_login)\n        response = self.client.get('/test_admin/admin/admin_views/article/1/delete/')\n        self.assertEqual(response.status_code, 403)\n        post = self.client.post('/test_admin/admin/admin_views/article/1/delete/', delete_dict)\n        self.assertEqual(post.status_code, 403)\n        self.assertEqual(Article.objects.all().count(), 3)\n        self.client.get('/test_admin/admin/logout/')\n\n        # Delete user can delete\n        self.client.get('/test_admin/admin/')\n        self.client.post('/test_admin/admin/', self.deleteuser_login)\n        response = self.client.get('/test_admin/admin/admin_views/section/1/delete/')\n         # test response contains link to related Article\n        self.assertContains(response, \"admin_views/article/1/\")\n\n        response = self.client.get('/test_admin/admin/admin_views/article/1/delete/')\n        self.assertEqual(response.status_code, 200)\n        post = self.client.post('/test_admin/admin/admin_views/article/1/delete/', delete_dict)\n        self.assertRedirects(post, '/test_admin/admin/')\n        self.assertEqual(Article.objects.all().count(), 2)\n        self.assertEqual(len(mail.outbox), 1)\n        self.assertEqual(mail.outbox[0].subject, 'Greetings from a deleted object')\n        article_ct = ContentType.objects.get_for_model(Article)\n        logged = LogEntry.objects.get(content_type=article_ct, action_flag=DELETION)\n        self.assertEqual(logged.object_id, '1')\n        self.client.get('/test_admin/admin/logout/')\n\n    def testDisabledPermissionsWhenLoggedIn(self):\n        self.client.login(username='super', password='secret')\n        superuser = User.objects.get(username='super')\n        superuser.is_active = False\n        superuser.save()\n\n        response = self.client.get('/test_admin/admin/')\n        self.assertContains(response, 'id=\"login-form\"')\n        self.assertNotContains(response, 'Log out')\n\n        response = self.client.get('/test_admin/admin/secure-view/')\n        self.assertContains(response, 'id=\"login-form\"')\n\n\n@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))\nclass AdminViewsNoUrlTest(TestCase):\n    \"\"\"Regression test for #17333\"\"\"\n\n    urls = \"regressiontests.admin_views.urls\"\n    fixtures = ['admin-views-users.xml']\n\n    def setUp(self):\n        opts = Report._meta\n        # User who can change Reports\n        change_user = User.objects.get(username='changeuser')\n        change_user.user_permissions.add(get_perm(Report,\n            opts.get_change_permission()))\n\n        # login POST dict\n        self.changeuser_login = {\n            REDIRECT_FIELD_NAME: '/test_admin/admin/',\n            LOGIN_FORM_KEY: 1,\n            'username': 'changeuser',\n            'password': 'secret',\n        }\n\n    def test_no_standard_modeladmin_urls(self):\n        \"\"\"Admin index views don't break when user's ModelAdmin removes standard urls\"\"\"\n        self.client.get('/test_admin/admin/')\n        self.client.post('/test_admin/admin/', self.changeuser_login)\n        r = self.client.get('/test_admin/admin/')\n        # we shouldn' get an 500 error caused by a NoReverseMatch\n        self.assertEqual(r.status_code, 200)\n        self.client.get('/test_admin/admin/logout/')\n\n\n@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))\nclass AdminViewDeletedObjectsTest(TestCase):\n    urls = \"regressiontests.admin_views.urls\"\n    fixtures = ['admin-views-users.xml', 'deleted-objects.xml']\n\n    def setUp(self):\n        self.client.login(username='super', password='secret')\n\n    def tearDown(self):\n        self.client.logout()\n\n    def test_nesting(self):\n        \"\"\"\n        Objects should be nested to display the relationships that\n        cause them to be scheduled for deletion.\n        \"\"\"\n        pattern = re.compile(br\"\"\"<li>Plot: <a href=\".+/admin_views/plot/1/\">World Domination</a>\\s*<ul>\\s*<li>Plot details: <a href=\".+/admin_views/plotdetails/1/\">almost finished</a>\"\"\")\n        response = self.client.get('/test_admin/admin/admin_views/villain/%s/delete/' % quote(1))\n        self.assertRegexpMatches(response.content, pattern)\n\n    def test_cyclic(self):\n        \"\"\"\n        Cyclic relationships should still cause each object to only be\n        listed once.\n\n        \"\"\"\n        one = \"\"\"<li>Cyclic one: <a href=\"/test_admin/admin/admin_views/cyclicone/1/\">I am recursive</a>\"\"\"\n        two = \"\"\"<li>Cyclic two: <a href=\"/test_admin/admin/admin_views/cyclictwo/1/\">I am recursive too</a>\"\"\"\n        response = self.client.get('/test_admin/admin/admin_views/cyclicone/%s/delete/' % quote(1))\n\n        self.assertContains(response, one, 1)\n        self.assertContains(response, two, 1)\n\n    def test_perms_needed(self):\n        self.client.logout()\n        delete_user = User.objects.get(username='deleteuser')\n        delete_user.user_permissions.add(get_perm(Plot,\n            Plot._meta.get_delete_permission()))\n\n        self.assertTrue(self.client.login(username='deleteuser',\n                                          password='secret'))\n\n        response = self.client.get('/test_admin/admin/admin_views/plot/%s/delete/' % quote(1))\n        self.assertContains(response, \"your account doesn't have permission to delete the following types of objects\")\n        self.assertContains(response, \"<li>plot details</li>\")\n\n    def test_protected(self):\n        q = Question.objects.create(question=\"Why?\")\n        a1 = Answer.objects.create(question=q, answer=\"Because.\")\n        a2 = Answer.objects.create(question=q, answer=\"Yes.\")\n\n        response = self.client.get(\"/test_admin/admin/admin_views/question/%s/delete/\" % quote(q.pk))\n        self.assertContains(response, \"would require deleting the following protected related objects\")\n        self.assertContains(response, '<li>Answer: <a href=\"/test_admin/admin/admin_views/answer/%s/\">Because.</a></li>' % a1.pk)\n        self.assertContains(response, '<li>Answer: <a href=\"/test_admin/admin/admin_views/answer/%s/\">Yes.</a></li>' % a2.pk)\n\n    def test_not_registered(self):\n        should_contain = \"\"\"<li>Secret hideout: underground bunker\"\"\"\n        response = self.client.get('/test_admin/admin/admin_views/villain/%s/delete/' % quote(1))\n        self.assertContains(response, should_contain, 1)\n\n    def test_multiple_fkeys_to_same_model(self):\n        \"\"\"\n        If a deleted object has two relationships from another model,\n        both of those should be followed in looking for related\n        objects to delete.\n\n        \"\"\"\n        should_contain = \"\"\"<li>Plot: <a href=\"/test_admin/admin/admin_views/plot/1/\">World Domination</a>\"\"\"\n        response = self.client.get('/test_admin/admin/admin_views/villain/%s/delete/' % quote(1))\n        self.assertContains(response, should_contain)\n        response = self.client.get('/test_admin/admin/admin_views/villain/%s/delete/' % quote(2))\n        self.assertContains(response, should_contain)\n\n    def test_multiple_fkeys_to_same_instance(self):\n        \"\"\"\n        If a deleted object has two relationships pointing to it from\n        another object, the other object should still only be listed\n        once.\n\n        \"\"\"\n        should_contain = \"\"\"<li>Plot: <a href=\"/test_admin/admin/admin_views/plot/2/\">World Peace</a></li>\"\"\"\n        response = self.client.get('/test_admin/admin/admin_views/villain/%s/delete/' % quote(2))\n        self.assertContains(response, should_contain, 1)\n\n    def test_inheritance(self):\n        \"\"\"\n        In the case of an inherited model, if either the child or\n        parent-model instance is deleted, both instances are listed\n        for deletion, as well as any relationships they have.\n\n        \"\"\"\n        should_contain = [\n            \"\"\"<li>Villain: <a href=\"/test_admin/admin/admin_views/villain/3/\">Bob</a>\"\"\",\n            \"\"\"<li>Super villain: <a href=\"/test_admin/admin/admin_views/supervillain/3/\">Bob</a>\"\"\",\n            \"\"\"<li>Secret hideout: floating castle\"\"\",\n            \"\"\"<li>Super secret hideout: super floating castle!\"\"\"\n            ]\n        response = self.client.get('/test_admin/admin/admin_views/villain/%s/delete/' % quote(3))\n        for should in should_contain:\n            self.assertContains(response, should, 1)\n        response = self.client.get('/test_admin/admin/admin_views/supervillain/%s/delete/' % quote(3))\n        for should in should_contain:\n            self.assertContains(response, should, 1)\n\n    def test_generic_relations(self):\n        \"\"\"\n        If a deleted object has GenericForeignKeys pointing to it,\n        those objects should be listed for deletion.\n\n        \"\"\"\n        plot = Plot.objects.get(pk=3)\n        tag = FunkyTag.objects.create(content_object=plot, name='hott')\n        should_contain = \"\"\"<li>Funky tag: hott\"\"\"\n        response = self.client.get('/test_admin/admin/admin_views/plot/%s/delete/' % quote(3))\n        self.assertContains(response, should_contain)\n\n\n@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))\nclass AdminViewStringPrimaryKeyTest(TestCase):\n    urls = \"regressiontests.admin_views.urls\"\n    fixtures = ['admin-views-users.xml', 'string-primary-key.xml']\n\n    def __init__(self, *args):\n        super(AdminViewStringPrimaryKeyTest, self).__init__(*args)\n        self.pk = \"\"\"abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ 1234567890 -_.!~*'() ;/?:@&=+$, <>#%\" {}|\\^[]`\"\"\"\n\n    def setUp(self):\n        self.client.login(username='super', password='secret')\n        content_type_pk = ContentType.objects.get_for_model(ModelWithStringPrimaryKey).pk\n        LogEntry.objects.log_action(100, content_type_pk, self.pk, self.pk, 2, change_message='Changed something')\n\n    def tearDown(self):\n        self.client.logout()\n\n    def test_get_history_view(self):\n        \"\"\"\n        Retrieving the history for an object using urlencoded form of primary\n        key should work.\n        Refs #12349, #18550.\n        \"\"\"\n        response = self.client.get('/test_admin/admin/admin_views/modelwithstringprimarykey/%s/history/' % quote(self.pk))\n        self.assertContains(response, escape(self.pk))\n        self.assertContains(response, 'Changed something')\n        self.assertEqual(response.status_code, 200)\n\n    def test_get_change_view(self):\n        \"Retrieving the object using urlencoded form of primary key should work\"\n        response = self.client.get('/test_admin/admin/admin_views/modelwithstringprimarykey/%s/' % quote(self.pk))\n        self.assertContains(response, escape(self.pk))\n        self.assertEqual(response.status_code, 200)\n\n    def test_changelist_to_changeform_link(self):\n        \"Link to the changeform of the object in changelist should use reverse() and be quoted -- #18072\"\n        prefix = '/test_admin/admin/admin_views/modelwithstringprimarykey/'\n        response = self.client.get(prefix)\n        # this URL now comes through reverse(), thus iri_to_uri encoding\n        pk_final_url = escape(iri_to_uri(quote(self.pk)))\n        should_contain = \"\"\"<th><a href=\"%s%s/\">%s</a></th>\"\"\" % (prefix, pk_final_url, escape(self.pk))\n        self.assertContains(response, should_contain)\n\n    def test_recentactions_link(self):\n        \"The link from the recent actions list referring to the changeform of the object should be quoted\"\n        response = self.client.get('/test_admin/admin/')\n        should_contain = \"\"\"<a href=\"admin_views/modelwithstringprimarykey/%s/\">%s</a>\"\"\" % (escape(quote(self.pk)), escape(self.pk))\n        self.assertContains(response, should_contain)\n\n    def test_recentactions_without_content_type(self):\n        \"If a LogEntry is missing content_type it will not display it in span tag under the hyperlink.\"\n        response = self.client.get('/test_admin/admin/')\n        should_contain = \"\"\"<a href=\"admin_views/modelwithstringprimarykey/%s/\">%s</a>\"\"\" % (escape(quote(self.pk)), escape(self.pk))\n        self.assertContains(response, should_contain)\n        should_contain = \"Model with string primary key\"  # capitalized in Recent Actions\n        self.assertContains(response, should_contain)\n        logentry = LogEntry.objects.get(content_type__name__iexact=should_contain)\n        # http://code.djangoproject.com/ticket/10275\n        # if the log entry doesn't have a content type it should still be\n        # possible to view the Recent Actions part\n        logentry.content_type = None\n        logentry.save()\n\n        counted_presence_before = response.content.count(force_bytes(should_contain))\n        response = self.client.get('/test_admin/admin/')\n        counted_presence_after = response.content.count(force_bytes(should_contain))\n        self.assertEqual(counted_presence_before - 1,\n                          counted_presence_after)\n\n    def test_deleteconfirmation_link(self):\n        \"The link from the delete confirmation page referring back to the changeform of the object should be quoted\"\n        response = self.client.get('/test_admin/admin/admin_views/modelwithstringprimarykey/%s/delete/' % quote(self.pk))\n        # this URL now comes through reverse(), thus iri_to_uri encoding\n        should_contain = \"\"\"/%s/\">%s</a>\"\"\" % (escape(iri_to_uri(quote(self.pk))), escape(self.pk))\n        self.assertContains(response, should_contain)\n\n    def test_url_conflicts_with_add(self):\n        \"A model with a primary key that ends with add should be visible\"\n        add_model = ModelWithStringPrimaryKey(pk=\"i have something to add\")\n        add_model.save()\n        response = self.client.get('/test_admin/admin/admin_views/modelwithstringprimarykey/%s/' % quote(add_model.pk))\n        should_contain = \"\"\"<h1>Change model with string primary key</h1>\"\"\"\n        self.assertContains(response, should_contain)\n\n    def test_url_conflicts_with_delete(self):\n        \"A model with a primary key that ends with delete should be visible\"\n        delete_model = ModelWithStringPrimaryKey(pk=\"delete\")\n        delete_model.save()\n        response = self.client.get('/test_admin/admin/admin_views/modelwithstringprimarykey/%s/' % quote(delete_model.pk))\n        should_contain = \"\"\"<h1>Change model with string primary key</h1>\"\"\"\n        self.assertContains(response, should_contain)\n\n    def test_url_conflicts_with_history(self):\n        \"A model with a primary key that ends with history should be visible\"\n        history_model = ModelWithStringPrimaryKey(pk=\"history\")\n        history_model.save()\n        response = self.client.get('/test_admin/admin/admin_views/modelwithstringprimarykey/%s/' % quote(history_model.pk))\n        should_contain = \"\"\"<h1>Change model with string primary key</h1>\"\"\"\n        self.assertContains(response, should_contain)\n\n    def test_shortcut_view_with_escaping(self):\n        \"'View on site should' work properly with char fields\"\n        model = ModelWithStringPrimaryKey(pk='abc_123')\n        model.save()\n        response = self.client.get('/test_admin/admin/admin_views/modelwithstringprimarykey/%s/' % quote(model.pk))\n        should_contain = '/%s/\" class=\"viewsitelink\">' % model.pk\n        self.assertContains(response, should_contain)\n\n    def test_change_view_history_link(self):\n        \"\"\"Object history button link should work and contain the pk value quoted.\"\"\"\n        url = reverse('admin:%s_modelwithstringprimarykey_change' %\n                          ModelWithStringPrimaryKey._meta.app_label,\n                      args=(quote(self.pk),))\n        response = self.client.get(url)\n        self.assertEqual(response.status_code, 200)\n        expected_link = reverse('admin:%s_modelwithstringprimarykey_history' %\n                                    ModelWithStringPrimaryKey._meta.app_label,\n                                args=(quote(self.pk),))\n        self.assertContains(response, '<a href=\"%s\" class=\"historylink\"' % expected_link)\n\n\n@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))\nclass SecureViewTests(TestCase):\n    urls = \"regressiontests.admin_views.urls\"\n    fixtures = ['admin-views-users.xml']\n\n    def setUp(self):\n        # login POST dicts\n        self.super_login = {\n            LOGIN_FORM_KEY: 1,\n            REDIRECT_FIELD_NAME: '/test_admin/admin/secure-view/',\n            'username': 'super',\n            'password': 'secret',\n        }\n        self.super_email_login = {\n            LOGIN_FORM_KEY: 1,\n            REDIRECT_FIELD_NAME: '/test_admin/admin/secure-view/',\n            'username': 'super@example.com',\n            'password': 'secret',\n        }\n        self.super_email_bad_login = {\n            LOGIN_FORM_KEY: 1,\n            REDIRECT_FIELD_NAME: '/test_admin/admin/secure-view/',\n            'username': 'super@example.com',\n            'password': 'notsecret',\n        }\n        self.adduser_login = {\n            LOGIN_FORM_KEY: 1,\n            REDIRECT_FIELD_NAME: '/test_admin/admin/secure-view/',\n            'username': 'adduser',\n            'password': 'secret',\n        }\n        self.changeuser_login = {\n            LOGIN_FORM_KEY: 1,\n            REDIRECT_FIELD_NAME: '/test_admin/admin/secure-view/',\n            'username': 'changeuser',\n            'password': 'secret',\n        }\n        self.deleteuser_login = {\n            LOGIN_FORM_KEY: 1,\n            REDIRECT_FIELD_NAME: '/test_admin/admin/secure-view/',\n            'username': 'deleteuser',\n            'password': 'secret',\n        }\n        self.joepublic_login = {\n            LOGIN_FORM_KEY: 1,\n            REDIRECT_FIELD_NAME: '/test_admin/admin/secure-view/',\n            'username': 'joepublic',\n            'password': 'secret',\n        }\n\n    def tearDown(self):\n        self.client.logout()\n\n    def test_secure_view_shows_login_if_not_logged_in(self):\n        \"Ensure that we see the login form\"\n        response = self.client.get('/test_admin/admin/secure-view/')\n        self.assertTemplateUsed(response, 'admin/login.html')\n\n    def test_secure_view_login_successfully_redirects_to_original_url(self):\n        response = self.client.get('/test_admin/admin/secure-view/')\n        self.assertEqual(response.status_code, 200)\n        query_string = 'the-answer=42'\n        redirect_url = '/test_admin/admin/secure-view/?%s' % query_string\n        new_next = {REDIRECT_FIELD_NAME: redirect_url}\n        login = self.client.post('/test_admin/admin/secure-view/', dict(self.super_login, **new_next), QUERY_STRING=query_string)\n        self.assertRedirects(login, redirect_url)\n\n    def test_staff_member_required_decorator_works_as_per_admin_login(self):\n        \"\"\"\n        Make sure only staff members can log in.\n\n        Successful posts to the login page will redirect to the orignal url.\n        Unsuccessfull attempts will continue to render the login page with\n        a 200 status code.\n        \"\"\"\n        # Super User\n        response = self.client.get('/test_admin/admin/secure-view/')\n        self.assertEqual(response.status_code, 200)\n        login = self.client.post('/test_admin/admin/secure-view/', self.super_login)\n        self.assertRedirects(login, '/test_admin/admin/secure-view/')\n        self.assertFalse(login.context)\n        self.client.get('/test_admin/admin/logout/')\n        # make sure the view removes test cookie\n        self.assertEqual(self.client.session.test_cookie_worked(), False)\n\n        # Test if user enters email address\n        response = self.client.get('/test_admin/admin/secure-view/')\n        self.assertEqual(response.status_code, 200)\n        login = self.client.post('/test_admin/admin/secure-view/', self.super_email_login)\n        self.assertContains(login, ERROR_MESSAGE)\n        # only correct passwords get a username hint\n        login = self.client.post('/test_admin/admin/secure-view/', self.super_email_bad_login)\n        self.assertContains(login, ERROR_MESSAGE)\n        new_user = User(username='jondoe', password='secret', email='super@example.com')\n        new_user.save()\n        # check to ensure if there are multiple email addresses a user doesn't get a 500\n        login = self.client.post('/test_admin/admin/secure-view/', self.super_email_login)\n        self.assertContains(login, ERROR_MESSAGE)\n\n        # Add User\n        response = self.client.get('/test_admin/admin/secure-view/')\n        self.assertEqual(response.status_code, 200)\n        login = self.client.post('/test_admin/admin/secure-view/', self.adduser_login)\n        self.assertRedirects(login, '/test_admin/admin/secure-view/')\n        self.assertFalse(login.context)\n        self.client.get('/test_admin/admin/logout/')\n\n        # Change User\n        response = self.client.get('/test_admin/admin/secure-view/')\n        self.assertEqual(response.status_code, 200)\n        login = self.client.post('/test_admin/admin/secure-view/', self.changeuser_login)\n        self.assertRedirects(login, '/test_admin/admin/secure-view/')\n        self.assertFalse(login.context)\n        self.client.get('/test_admin/admin/logout/')\n\n        # Delete User\n        response = self.client.get('/test_admin/admin/secure-view/')\n        self.assertEqual(response.status_code, 200)\n        login = self.client.post('/test_admin/admin/secure-view/', self.deleteuser_login)\n        self.assertRedirects(login, '/test_admin/admin/secure-view/')\n        self.assertFalse(login.context)\n        self.client.get('/test_admin/admin/logout/')\n\n        # Regular User should not be able to login.\n        response = self.client.get('/test_admin/admin/secure-view/')\n        self.assertEqual(response.status_code, 200)\n        login = self.client.post('/test_admin/admin/secure-view/', self.joepublic_login)\n        self.assertEqual(login.status_code, 200)\n        # Login.context is a list of context dicts we just need to check the first one.\n        self.assertContains(login, ERROR_MESSAGE)\n\n        # 8509 - if a normal user is already logged in, it is possible\n        # to change user into the superuser without error\n        login = self.client.login(username='joepublic', password='secret')\n        # Check and make sure that if user expires, data still persists\n        self.client.get('/test_admin/admin/secure-view/')\n        self.client.post('/test_admin/admin/secure-view/', self.super_login)\n        # make sure the view removes test cookie\n        self.assertEqual(self.client.session.test_cookie_worked(), False)\n\n    def test_shortcut_view_only_available_to_staff(self):\n        \"\"\"\n        Only admin users should be able to use the admin shortcut view.\n        \"\"\"\n        user_ctype = ContentType.objects.get_for_model(User)\n        user = User.objects.get(username='super')\n        shortcut_url = \"/test_admin/admin/r/%s/%s/\" % (user_ctype.pk, user.pk)\n\n        # Not logged in: we should see the login page.\n        response = self.client.get(shortcut_url, follow=False)\n        self.assertTemplateUsed(response, 'admin/login.html')\n\n        # Logged in? Redirect.\n        self.client.login(username='super', password='secret')\n        response = self.client.get(shortcut_url, follow=False)\n        # Can't use self.assertRedirects() because User.get_absolute_url() is silly.\n        self.assertEqual(response.status_code, 302)\n        self.assertEqual(response['Location'], 'http://example.com/users/super/')\n\n\n@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))\nclass AdminViewUnicodeTest(TestCase):\n    urls = \"regressiontests.admin_views.urls\"\n    fixtures = ['admin-views-unicode.xml']\n\n    def setUp(self):\n        self.client.login(username='super', password='secret')\n\n    def tearDown(self):\n        self.client.logout()\n\n    def testUnicodeEdit(self):\n        \"\"\"\n        A test to ensure that POST on edit_view handles non-ascii characters.\n        \"\"\"\n        post_data = {\n            \"name\": \"Test lærdommer\",\n            # inline data\n            \"chapter_set-TOTAL_FORMS\": \"6\",\n            \"chapter_set-INITIAL_FORMS\": \"3\",\n            \"chapter_set-MAX_NUM_FORMS\": \"0\",\n            \"chapter_set-0-id\": \"1\",\n            \"chapter_set-0-title\": \"Norske bostaver æøå skaper problemer\",\n            \"chapter_set-0-content\": \"&lt;p&gt;Svært frustrerende med UnicodeDecodeError&lt;/p&gt;\",\n            \"chapter_set-1-id\": \"2\",\n            \"chapter_set-1-title\": \"Kjærlighet.\",\n            \"chapter_set-1-content\": \"&lt;p&gt;La kjærligheten til de lidende seire.&lt;/p&gt;\",\n            \"chapter_set-2-id\": \"3\",\n            \"chapter_set-2-title\": \"Need a title.\",\n            \"chapter_set-2-content\": \"&lt;p&gt;Newest content&lt;/p&gt;\",\n            \"chapter_set-3-id\": \"\",\n            \"chapter_set-3-title\": \"\",\n            \"chapter_set-3-content\": \"\",\n            \"chapter_set-4-id\": \"\",\n            \"chapter_set-4-title\": \"\",\n            \"chapter_set-4-content\": \"\",\n            \"chapter_set-5-id\": \"\",\n            \"chapter_set-5-title\": \"\",\n            \"chapter_set-5-content\": \"\",\n        }\n\n        response = self.client.post('/test_admin/admin/admin_views/book/1/', post_data)\n        self.assertEqual(response.status_code, 302)  # redirect somewhere\n\n    def testUnicodeDelete(self):\n        \"\"\"\n        Ensure that the delete_view handles non-ascii characters\n        \"\"\"\n        delete_dict = {'post': 'yes'}\n        response = self.client.get('/test_admin/admin/admin_views/book/1/delete/')\n        self.assertEqual(response.status_code, 200)\n        response = self.client.post('/test_admin/admin/admin_views/book/1/delete/', delete_dict)\n        self.assertRedirects(response, '/test_admin/admin/admin_views/book/')\n\n\n@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))\nclass AdminViewListEditable(TestCase):\n    urls = \"regressiontests.admin_views.urls\"\n    fixtures = ['admin-views-users.xml', 'admin-views-person.xml']\n\n    def setUp(self):\n        self.client.login(username='super', password='secret')\n\n    def tearDown(self):\n        self.client.logout()\n\n    def test_inheritance(self):\n        Podcast.objects.create(name=\"This Week in Django\",\n            release_date=datetime.date.today())\n        response = self.client.get('/test_admin/admin/admin_views/podcast/')\n        self.assertEqual(response.status_code, 200)\n\n    def test_inheritance_2(self):\n        Vodcast.objects.create(name=\"This Week in Django\", released=True)\n        response = self.client.get('/test_admin/admin/admin_views/vodcast/')\n        self.assertEqual(response.status_code, 200)\n\n    def test_custom_pk(self):\n        Language.objects.create(iso='en', name='English', english_name='English')\n        response = self.client.get('/test_admin/admin/admin_views/language/')\n        self.assertEqual(response.status_code, 200)\n\n    def test_changelist_input_html(self):\n        response = self.client.get('/test_admin/admin/admin_views/person/')\n        # 2 inputs per object(the field and the hidden id field) = 6\n        # 3 management hidden fields = 3\n        # 4 action inputs (3 regular checkboxes, 1 checkbox to select all)\n        # main form submit button = 1\n        # search field and search submit button = 2\n        # CSRF field = 1\n        # field to track 'select all' across paginated views = 1\n        # 6 + 3 + 4 + 1 + 2 + 1 + 1 = 18 inputs\n        self.assertContains(response, \"<input\", count=18)\n        # 1 select per object = 3 selects\n        self.assertContains(response, \"<select\", count=4)\n\n    def test_post_messages(self):\n        # Ticket 12707: Saving inline editable should not show admin\n        # action warnings\n        data = {\n            \"form-TOTAL_FORMS\": \"3\",\n            \"form-INITIAL_FORMS\": \"3\",\n            \"form-MAX_NUM_FORMS\": \"0\",\n\n            \"form-0-gender\": \"1\",\n            \"form-0-id\": \"1\",\n\n            \"form-1-gender\": \"2\",\n            \"form-1-id\": \"2\",\n\n            \"form-2-alive\": \"checked\",\n            \"form-2-gender\": \"1\",\n            \"form-2-id\": \"3\",\n\n            \"_save\": \"Save\",\n        }\n        response = self.client.post('/test_admin/admin/admin_views/person/',\n                                    data, follow=True)\n        self.assertEqual(len(response.context['messages']), 1)\n\n    def test_post_submission(self):\n        data = {\n            \"form-TOTAL_FORMS\": \"3\",\n            \"form-INITIAL_FORMS\": \"3\",\n            \"form-MAX_NUM_FORMS\": \"0\",\n\n            \"form-0-gender\": \"1\",\n            \"form-0-id\": \"1\",\n\n            \"form-1-gender\": \"2\",\n            \"form-1-id\": \"2\",\n\n            \"form-2-alive\": \"checked\",\n            \"form-2-gender\": \"1\",\n            \"form-2-id\": \"3\",\n\n            \"_save\": \"Save\",\n        }\n        self.client.post('/test_admin/admin/admin_views/person/', data)\n\n        self.assertEqual(Person.objects.get(name=\"John Mauchly\").alive, False)\n        self.assertEqual(Person.objects.get(name=\"Grace Hopper\").gender, 2)\n\n        # test a filtered page\n        data = {\n            \"form-TOTAL_FORMS\": \"2\",\n            \"form-INITIAL_FORMS\": \"2\",\n            \"form-MAX_NUM_FORMS\": \"0\",\n\n            \"form-0-id\": \"1\",\n            \"form-0-gender\": \"1\",\n            \"form-0-alive\": \"checked\",\n\n            \"form-1-id\": \"3\",\n            \"form-1-gender\": \"1\",\n            \"form-1-alive\": \"checked\",\n\n            \"_save\": \"Save\",\n        }\n        self.client.post('/test_admin/admin/admin_views/person/?gender__exact=1', data)\n\n        self.assertEqual(Person.objects.get(name=\"John Mauchly\").alive, True)\n\n        # test a searched page\n        data = {\n            \"form-TOTAL_FORMS\": \"1\",\n            \"form-INITIAL_FORMS\": \"1\",\n            \"form-MAX_NUM_FORMS\": \"0\",\n\n            \"form-0-id\": \"1\",\n            \"form-0-gender\": \"1\",\n\n            \"_save\": \"Save\",\n        }\n        self.client.post('/test_admin/admin/admin_views/person/?q=john', data)\n\n        self.assertEqual(Person.objects.get(name=\"John Mauchly\").alive, False)\n\n    def test_non_field_errors(self):\n        ''' Ensure that non field errors are displayed for each of the\n            forms in the changelist's formset. Refs #13126.\n        '''\n        fd1 = FoodDelivery.objects.create(reference='123', driver='bill', restaurant='thai')\n        fd2 = FoodDelivery.objects.create(reference='456', driver='bill', restaurant='india')\n        fd3 = FoodDelivery.objects.create(reference='789', driver='bill', restaurant='pizza')\n\n        data = {\n            \"form-TOTAL_FORMS\": \"3\",\n            \"form-INITIAL_FORMS\": \"3\",\n            \"form-MAX_NUM_FORMS\": \"0\",\n\n            \"form-0-id\": str(fd1.id),\n            \"form-0-reference\": \"123\",\n            \"form-0-driver\": \"bill\",\n            \"form-0-restaurant\": \"thai\",\n\n            # Same data as above: Forbidden because of unique_together!\n            \"form-1-id\": str(fd2.id),\n            \"form-1-reference\": \"456\",\n            \"form-1-driver\": \"bill\",\n            \"form-1-restaurant\": \"thai\",\n\n            \"form-2-id\": str(fd3.id),\n            \"form-2-reference\": \"789\",\n            \"form-2-driver\": \"bill\",\n            \"form-2-restaurant\": \"pizza\",\n\n            \"_save\": \"Save\",\n        }\n        response = self.client.post('/test_admin/admin/admin_views/fooddelivery/', data)\n        self.assertContains(response, '<tr><td colspan=\"4\"><ul class=\"errorlist\"><li>Food delivery with this Driver and Restaurant already exists.</li></ul></td></tr>', 1, html=True)\n\n        data = {\n            \"form-TOTAL_FORMS\": \"3\",\n            \"form-INITIAL_FORMS\": \"3\",\n            \"form-MAX_NUM_FORMS\": \"0\",\n\n            \"form-0-id\": str(fd1.id),\n            \"form-0-reference\": \"123\",\n            \"form-0-driver\": \"bill\",\n            \"form-0-restaurant\": \"thai\",\n\n            # Same data as above: Forbidden because of unique_together!\n            \"form-1-id\": str(fd2.id),\n            \"form-1-reference\": \"456\",\n            \"form-1-driver\": \"bill\",\n            \"form-1-restaurant\": \"thai\",\n\n            # Same data also.\n            \"form-2-id\": str(fd3.id),\n            \"form-2-reference\": \"789\",\n            \"form-2-driver\": \"bill\",\n            \"form-2-restaurant\": \"thai\",\n\n            \"_save\": \"Save\",\n        }\n        response = self.client.post('/test_admin/admin/admin_views/fooddelivery/', data)\n        self.assertContains(response, '<tr><td colspan=\"4\"><ul class=\"errorlist\"><li>Food delivery with this Driver and Restaurant already exists.</li></ul></td></tr>', 2, html=True)\n\n    def test_non_form_errors(self):\n        # test if non-form errors are handled; ticket #12716\n        data = {\n            \"form-TOTAL_FORMS\": \"1\",\n            \"form-INITIAL_FORMS\": \"1\",\n            \"form-MAX_NUM_FORMS\": \"0\",\n\n            \"form-0-id\": \"2\",\n            \"form-0-alive\": \"1\",\n            \"form-0-gender\": \"2\",\n\n            # Ensure that the form processing understands this as a list_editable \"Save\"\n            # and not an action \"Go\".\n            \"_save\": \"Save\",\n        }\n        response = self.client.post('/test_admin/admin/admin_views/person/', data)\n        self.assertContains(response, \"Grace is not a Zombie\")\n\n    def test_non_form_errors_is_errorlist(self):\n        # test if non-form errors are correctly handled; ticket #12878\n        data = {\n            \"form-TOTAL_FORMS\": \"1\",\n            \"form-INITIAL_FORMS\": \"1\",\n            \"form-MAX_NUM_FORMS\": \"0\",\n\n            \"form-0-id\": \"2\",\n            \"form-0-alive\": \"1\",\n            \"form-0-gender\": \"2\",\n\n            \"_save\": \"Save\",\n        }\n        response = self.client.post('/test_admin/admin/admin_views/person/', data)\n        non_form_errors = response.context['cl'].formset.non_form_errors()\n        self.assertTrue(isinstance(non_form_errors, ErrorList))\n        self.assertEqual(str(non_form_errors), str(ErrorList([\"Grace is not a Zombie\"])))\n\n    def test_list_editable_ordering(self):\n        collector = Collector.objects.create(id=1, name=\"Frederick Clegg\")\n\n        Category.objects.create(id=1, order=1, collector=collector)\n        Category.objects.create(id=2, order=2, collector=collector)\n        Category.objects.create(id=3, order=0, collector=collector)\n        Category.objects.create(id=4, order=0, collector=collector)\n\n        # NB: The order values must be changed so that the items are reordered.\n        data = {\n            \"form-TOTAL_FORMS\": \"4\",\n            \"form-INITIAL_FORMS\": \"4\",\n            \"form-MAX_NUM_FORMS\": \"0\",\n\n            \"form-0-order\": \"14\",\n            \"form-0-id\": \"1\",\n            \"form-0-collector\": \"1\",\n\n            \"form-1-order\": \"13\",\n            \"form-1-id\": \"2\",\n            \"form-1-collector\": \"1\",\n\n            \"form-2-order\": \"1\",\n            \"form-2-id\": \"3\",\n            \"form-2-collector\": \"1\",\n\n            \"form-3-order\": \"0\",\n            \"form-3-id\": \"4\",\n            \"form-3-collector\": \"1\",\n\n            # Ensure that the form processing understands this as a list_editable \"Save\"\n            # and not an action \"Go\".\n            \"_save\": \"Save\",\n        }\n        response = self.client.post('/test_admin/admin/admin_views/category/', data)\n        # Successful post will redirect\n        self.assertEqual(response.status_code, 302)\n\n        # Check that the order values have been applied to the right objects\n        self.assertEqual(Category.objects.get(id=1).order, 14)\n        self.assertEqual(Category.objects.get(id=2).order, 13)\n        self.assertEqual(Category.objects.get(id=3).order, 1)\n        self.assertEqual(Category.objects.get(id=4).order, 0)\n\n    def test_list_editable_pagination(self):\n        \"\"\"\n        Ensure that pagination works for list_editable items.\n        Refs #16819.\n        \"\"\"\n        UnorderedObject.objects.create(id=1, name='Unordered object #1')\n        UnorderedObject.objects.create(id=2, name='Unordered object #2')\n        UnorderedObject.objects.create(id=3, name='Unordered object #3')\n        response = self.client.get('/test_admin/admin/admin_views/unorderedobject/')\n        self.assertContains(response, 'Unordered object #3')\n        self.assertContains(response, 'Unordered object #2')\n        self.assertNotContains(response, 'Unordered object #1')\n        response = self.client.get('/test_admin/admin/admin_views/unorderedobject/?p=1')\n        self.assertNotContains(response, 'Unordered object #3')\n        self.assertNotContains(response, 'Unordered object #2')\n        self.assertContains(response, 'Unordered object #1')\n\n    def test_list_editable_action_submit(self):\n        # List editable changes should not be executed if the action \"Go\" button is\n        # used to submit the form.\n        data = {\n            \"form-TOTAL_FORMS\": \"3\",\n            \"form-INITIAL_FORMS\": \"3\",\n            \"form-MAX_NUM_FORMS\": \"0\",\n\n            \"form-0-gender\": \"1\",\n            \"form-0-id\": \"1\",\n\n            \"form-1-gender\": \"2\",\n            \"form-1-id\": \"2\",\n\n            \"form-2-alive\": \"checked\",\n            \"form-2-gender\": \"1\",\n            \"form-2-id\": \"3\",\n\n            \"index\": \"0\",\n            \"_selected_action\": ['3'],\n            \"action\": ['', 'delete_selected'],\n        }\n        self.client.post('/test_admin/admin/admin_views/person/', data)\n\n        self.assertEqual(Person.objects.get(name=\"John Mauchly\").alive, True)\n        self.assertEqual(Person.objects.get(name=\"Grace Hopper\").gender, 1)\n\n    def test_list_editable_action_choices(self):\n        # List editable changes should be executed if the \"Save\" button is\n        # used to submit the form - any action choices should be ignored.\n        data = {\n            \"form-TOTAL_FORMS\": \"3\",\n            \"form-INITIAL_FORMS\": \"3\",\n            \"form-MAX_NUM_FORMS\": \"0\",\n\n            \"form-0-gender\": \"1\",\n            \"form-0-id\": \"1\",\n\n            \"form-1-gender\": \"2\",\n            \"form-1-id\": \"2\",\n\n            \"form-2-alive\": \"checked\",\n            \"form-2-gender\": \"1\",\n            \"form-2-id\": \"3\",\n\n            \"_save\": \"Save\",\n            \"_selected_action\": ['1'],\n            \"action\": ['', 'delete_selected'],\n        }\n        self.client.post('/test_admin/admin/admin_views/person/', data)\n\n        self.assertEqual(Person.objects.get(name=\"John Mauchly\").alive, False)\n        self.assertEqual(Person.objects.get(name=\"Grace Hopper\").gender, 2)\n\n    def test_list_editable_popup(self):\n        \"\"\"\n        Fields should not be list-editable in popups.\n        \"\"\"\n        response = self.client.get('/test_admin/admin/admin_views/person/')\n        self.assertNotEqual(response.context['cl'].list_editable, ())\n        response = self.client.get('/test_admin/admin/admin_views/person/?%s' % IS_POPUP_VAR)\n        self.assertEqual(response.context['cl'].list_editable, ())\n\n    def test_pk_hidden_fields(self):\n        \"\"\" Ensure that hidden pk fields aren't displayed in the table body and\n            that their corresponding human-readable value is displayed instead.\n            Note that the hidden pk fields are in fact be displayed but\n            separately (not in the table), and only once.\n            Refs #12475.\n        \"\"\"\n        story1 = Story.objects.create(title='The adventures of Guido', content='Once upon a time in Djangoland...')\n        story2 = Story.objects.create(title='Crouching Tiger, Hidden Python', content='The Python was sneaking into...')\n        response = self.client.get('/test_admin/admin/admin_views/story/')\n        self.assertContains(response, 'id=\"id_form-0-id\"', 1)  # Only one hidden field, in a separate place than the table.\n        self.assertContains(response, 'id=\"id_form-1-id\"', 1)\n        self.assertContains(response, '<div class=\"hiddenfields\">\\n<input type=\"hidden\" name=\"form-0-id\" value=\"%d\" id=\"id_form-0-id\" /><input type=\"hidden\" name=\"form-1-id\" value=\"%d\" id=\"id_form-1-id\" />\\n</div>' % (story2.id, story1.id), html=True)\n        self.assertContains(response, '<td>%d</td>' % story1.id, 1)\n        self.assertContains(response, '<td>%d</td>' % story2.id, 1)\n\n    def test_pk_hidden_fields_with_list_display_links(self):\n        \"\"\" Similarly as test_pk_hidden_fields, but when the hidden pk fields are\n            referenced in list_display_links.\n            Refs #12475.\n        \"\"\"\n        story1 = OtherStory.objects.create(title='The adventures of Guido', content='Once upon a time in Djangoland...')\n        story2 = OtherStory.objects.create(title='Crouching Tiger, Hidden Python', content='The Python was sneaking into...')\n        link1 = reverse('admin:admin_views_otherstory_change', args=(story1.pk,))\n        link2 = reverse('admin:admin_views_otherstory_change', args=(story2.pk,))\n        response = self.client.get('/test_admin/admin/admin_views/otherstory/')\n        self.assertContains(response, 'id=\"id_form-0-id\"', 1)  # Only one hidden field, in a separate place than the table.\n        self.assertContains(response, 'id=\"id_form-1-id\"', 1)\n        self.assertContains(response, '<div class=\"hiddenfields\">\\n<input type=\"hidden\" name=\"form-0-id\" value=\"%d\" id=\"id_form-0-id\" /><input type=\"hidden\" name=\"form-1-id\" value=\"%d\" id=\"id_form-1-id\" />\\n</div>' % (story2.id, story1.id), html=True)\n        self.assertContains(response, '<th><a href=\"%s\">%d</a></th>' % (link1, story1.id), 1)\n        self.assertContains(response, '<th><a href=\"%s\">%d</a></th>' % (link2, story2.id), 1)\n\n\n@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))\nclass AdminSearchTest(TestCase):\n    urls = \"regressiontests.admin_views.urls\"\n    fixtures = ['admin-views-users', 'multiple-child-classes',\n                'admin-views-person']\n\n    def setUp(self):\n        self.client.login(username='super', password='secret')\n\n    def tearDown(self):\n        self.client.logout()\n\n    def test_search_on_sibling_models(self):\n        \"Check that a search that mentions sibling models\"\n        response = self.client.get('/test_admin/admin/admin_views/recommendation/?q=bar')\n        # confirm the search returned 1 object\n        self.assertContains(response, \"\\n1 recommendation\\n\")\n\n    def test_with_fk_to_field(self):\n        \"\"\"Ensure that the to_field GET parameter is preserved when a search\n        is performed. Refs #10918.\n        \"\"\"\n        from django.contrib.admin.views.main import TO_FIELD_VAR\n        response = self.client.get('/test_admin/admin/auth/user/?q=joe&%s=username' % TO_FIELD_VAR)\n        self.assertContains(response, \"\\n1 user\\n\")\n        self.assertContains(response, '<input type=\"hidden\" name=\"t\" value=\"username\"/>', html=True)\n\n    def test_exact_matches(self):\n        response = self.client.get('/test_admin/admin/admin_views/recommendation/?q=bar')\n        # confirm the search returned one object\n        self.assertContains(response, \"\\n1 recommendation\\n\")\n\n        response = self.client.get('/test_admin/admin/admin_views/recommendation/?q=ba')\n        # confirm the search returned zero objects\n        self.assertContains(response, \"\\n0 recommendations\\n\")\n\n    def test_beginning_matches(self):\n        response = self.client.get('/test_admin/admin/admin_views/person/?q=Gui')\n        # confirm the search returned one object\n        self.assertContains(response, \"\\n1 person\\n\")\n        self.assertContains(response, \"Guido\")\n\n        response = self.client.get('/test_admin/admin/admin_views/person/?q=uido')\n        # confirm the search returned zero objects\n        self.assertContains(response, \"\\n0 persons\\n\")\n        self.assertNotContains(response, \"Guido\")\n\n\n@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))\nclass AdminInheritedInlinesTest(TestCase):\n    urls = \"regressiontests.admin_views.urls\"\n    fixtures = ['admin-views-users.xml']\n\n    def setUp(self):\n        self.client.login(username='super', password='secret')\n\n    def tearDown(self):\n        self.client.logout()\n\n    def testInline(self):\n        \"Ensure that inline models which inherit from a common parent are correctly handled by admin.\"\n\n        foo_user = \"foo username\"\n        bar_user = \"bar username\"\n\n        name_re = re.compile(b'name=\"(.*?)\"')\n\n        # test the add case\n        response = self.client.get('/test_admin/admin/admin_views/persona/add/')\n        names = name_re.findall(response.content)\n        # make sure we have no duplicate HTML names\n        self.assertEqual(len(names), len(set(names)))\n\n        # test the add case\n        post_data = {\n            \"name\": \"Test Name\",\n            # inline data\n            \"accounts-TOTAL_FORMS\": \"1\",\n            \"accounts-INITIAL_FORMS\": \"0\",\n            \"accounts-MAX_NUM_FORMS\": \"0\",\n            \"accounts-0-username\": foo_user,\n            \"accounts-2-TOTAL_FORMS\": \"1\",\n            \"accounts-2-INITIAL_FORMS\": \"0\",\n            \"accounts-2-MAX_NUM_FORMS\": \"0\",\n            \"accounts-2-0-username\": bar_user,\n        }\n\n        response = self.client.post('/test_admin/admin/admin_views/persona/add/', post_data)\n        self.assertEqual(response.status_code, 302)  # redirect somewhere\n        self.assertEqual(Persona.objects.count(), 1)\n        self.assertEqual(FooAccount.objects.count(), 1)\n        self.assertEqual(BarAccount.objects.count(), 1)\n        self.assertEqual(FooAccount.objects.all()[0].username, foo_user)\n        self.assertEqual(BarAccount.objects.all()[0].username, bar_user)\n        self.assertEqual(Persona.objects.all()[0].accounts.count(), 2)\n\n        persona_id = Persona.objects.all()[0].id\n        foo_id = FooAccount.objects.all()[0].id\n        bar_id = BarAccount.objects.all()[0].id\n\n        # test the edit case\n\n        response = self.client.get('/test_admin/admin/admin_views/persona/%d/' % persona_id)\n        names = name_re.findall(response.content)\n        # make sure we have no duplicate HTML names\n        self.assertEqual(len(names), len(set(names)))\n\n        post_data = {\n            \"name\": \"Test Name\",\n\n            \"accounts-TOTAL_FORMS\": \"2\",\n            \"accounts-INITIAL_FORMS\": \"1\",\n            \"accounts-MAX_NUM_FORMS\": \"0\",\n\n            \"accounts-0-username\": \"%s-1\" % foo_user,\n            \"accounts-0-account_ptr\": str(foo_id),\n            \"accounts-0-persona\": str(persona_id),\n\n            \"accounts-2-TOTAL_FORMS\": \"2\",\n            \"accounts-2-INITIAL_FORMS\": \"1\",\n            \"accounts-2-MAX_NUM_FORMS\": \"0\",\n\n            \"accounts-2-0-username\": \"%s-1\" % bar_user,\n            \"accounts-2-0-account_ptr\": str(bar_id),\n            \"accounts-2-0-persona\": str(persona_id),\n        }\n        response = self.client.post('/test_admin/admin/admin_views/persona/%d/' % persona_id, post_data)\n        self.assertEqual(response.status_code, 302)\n        self.assertEqual(Persona.objects.count(), 1)\n        self.assertEqual(FooAccount.objects.count(), 1)\n        self.assertEqual(BarAccount.objects.count(), 1)\n        self.assertEqual(FooAccount.objects.all()[0].username, \"%s-1\" % foo_user)\n        self.assertEqual(BarAccount.objects.all()[0].username, \"%s-1\" % bar_user)\n        self.assertEqual(Persona.objects.all()[0].accounts.count(), 2)\n\n\n@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))\nclass AdminActionsTest(TestCase):\n    urls = \"regressiontests.admin_views.urls\"\n    fixtures = ['admin-views-users.xml', 'admin-views-actions.xml']\n\n    def setUp(self):\n        self.client.login(username='super', password='secret')\n\n    def tearDown(self):\n        self.client.logout()\n\n    def test_model_admin_custom_action(self):\n        \"Tests a custom action defined in a ModelAdmin method\"\n        action_data = {\n            ACTION_CHECKBOX_NAME: [1],\n            'action': 'mail_admin',\n            'index': 0,\n        }\n        response = self.client.post('/test_admin/admin/admin_views/subscriber/', action_data)\n        self.assertEqual(len(mail.outbox), 1)\n        self.assertEqual(mail.outbox[0].subject, 'Greetings from a ModelAdmin action')\n\n    def test_model_admin_default_delete_action(self):\n        \"Tests the default delete action defined as a ModelAdmin method\"\n        action_data = {\n            ACTION_CHECKBOX_NAME: [1, 2],\n            'action': 'delete_selected',\n            'index': 0,\n        }\n        delete_confirmation_data = {\n            ACTION_CHECKBOX_NAME: [1, 2],\n            'action': 'delete_selected',\n            'post': 'yes',\n        }\n        confirmation = self.client.post('/test_admin/admin/admin_views/subscriber/', action_data)\n        self.assertIsInstance(confirmation, TemplateResponse)\n        self.assertContains(confirmation, \"Are you sure you want to delete the selected subscribers?\")\n        self.assertContains(confirmation, ACTION_CHECKBOX_NAME, count=2)\n        response = self.client.post('/test_admin/admin/admin_views/subscriber/', delete_confirmation_data)\n        self.assertEqual(Subscriber.objects.count(), 0)\n\n    def test_non_localized_pk(self):\n        \"\"\"If USE_THOUSAND_SEPARATOR is set, make sure that the ids for\n        the objects selected for deletion are rendered without separators.\n        Refs #14895.\n        \"\"\"\n        self.old_USE_THOUSAND_SEPARATOR = settings.USE_THOUSAND_SEPARATOR\n        self.old_USE_L10N = settings.USE_L10N\n        settings.USE_THOUSAND_SEPARATOR = True\n        settings.USE_L10N = True\n        subscriber = Subscriber.objects.get(id=1)\n        subscriber.id = 9999\n        subscriber.save()\n        action_data = {\n            ACTION_CHECKBOX_NAME: [9999, 2],\n            'action': 'delete_selected',\n            'index': 0,\n        }\n        response = self.client.post('/test_admin/admin/admin_views/subscriber/', action_data)\n        self.assertTemplateUsed(response, 'admin/delete_selected_confirmation.html')\n        self.assertContains(response, 'value=\"9999\"')  # Instead of 9,999\n        self.assertContains(response, 'value=\"2\"')\n        settings.USE_THOUSAND_SEPARATOR = self.old_USE_THOUSAND_SEPARATOR\n        settings.USE_L10N = self.old_USE_L10N\n\n    def test_model_admin_default_delete_action_protected(self):\n        \"\"\"\n        Tests the default delete action defined as a ModelAdmin method in the\n        case where some related objects are protected from deletion.\n        \"\"\"\n        q1 = Question.objects.create(question=\"Why?\")\n        a1 = Answer.objects.create(question=q1, answer=\"Because.\")\n        a2 = Answer.objects.create(question=q1, answer=\"Yes.\")\n        q2 = Question.objects.create(question=\"Wherefore?\")\n\n        action_data = {\n            ACTION_CHECKBOX_NAME: [q1.pk, q2.pk],\n            'action': 'delete_selected',\n            'index': 0,\n        }\n\n        response = self.client.post(\"/test_admin/admin/admin_views/question/\", action_data)\n\n        self.assertContains(response, \"would require deleting the following protected related objects\")\n        self.assertContains(response, '<li>Answer: <a href=\"/test_admin/admin/admin_views/answer/%s/\">Because.</a></li>' % a1.pk, html=True)\n        self.assertContains(response, '<li>Answer: <a href=\"/test_admin/admin/admin_views/answer/%s/\">Yes.</a></li>' % a2.pk, html=True)\n\n    def test_custom_function_mail_action(self):\n        \"Tests a custom action defined in a function\"\n        action_data = {\n            ACTION_CHECKBOX_NAME: [1],\n            'action': 'external_mail',\n            'index': 0,\n        }\n        response = self.client.post('/test_admin/admin/admin_views/externalsubscriber/', action_data)\n        self.assertEqual(len(mail.outbox), 1)\n        self.assertEqual(mail.outbox[0].subject, 'Greetings from a function action')\n\n    def test_custom_function_action_with_redirect(self):\n        \"Tests a custom action defined in a function\"\n        action_data = {\n            ACTION_CHECKBOX_NAME: [1],\n            'action': 'redirect_to',\n            'index': 0,\n        }\n        response = self.client.post('/test_admin/admin/admin_views/externalsubscriber/', action_data)\n        self.assertEqual(response.status_code, 302)\n\n    def test_default_redirect(self):\n        \"\"\"\n        Test that actions which don't return an HttpResponse are redirected to\n        the same page, retaining the querystring (which may contain changelist\n        information).\n        \"\"\"\n        action_data = {\n            ACTION_CHECKBOX_NAME: [1],\n            'action': 'external_mail',\n            'index': 0,\n        }\n        url = '/test_admin/admin/admin_views/externalsubscriber/?o=1'\n        response = self.client.post(url, action_data)\n        self.assertRedirects(response, url)\n\n    def test_actions_ordering(self):\n        \"\"\"\n        Ensure that actions are ordered as expected.\n        Refs #15964.\n        \"\"\"\n        response = self.client.get('/test_admin/admin/admin_views/externalsubscriber/')\n        self.assertContains(response, '''<label>Action: <select name=\"action\">\n<option value=\"\" selected=\"selected\">---------</option>\n<option value=\"delete_selected\">Delete selected external subscribers</option>\n<option value=\"redirect_to\">Redirect to (Awesome action)</option>\n<option value=\"external_mail\">External mail (Another awesome action)</option>\n</select>''', html=True)\n\n    def test_model_without_action(self):\n        \"Tests a ModelAdmin without any action\"\n        response = self.client.get('/test_admin/admin/admin_views/oldsubscriber/')\n        self.assertEqual(response.context[\"action_form\"], None)\n        self.assertNotContains(response, '<input type=\"checkbox\" class=\"action-select\"',\n            msg_prefix=\"Found an unexpected action toggle checkboxbox in response\")\n        self.assertNotContains(response, '<input type=\"checkbox\" class=\"action-select\"')\n\n    def test_model_without_action_still_has_jquery(self):\n        \"Tests that a ModelAdmin without any actions still gets jQuery included in page\"\n        response = self.client.get('/test_admin/admin/admin_views/oldsubscriber/')\n        self.assertEqual(response.context[\"action_form\"], None)\n        self.assertContains(response, 'jquery.min.js',\n            msg_prefix=\"jQuery missing from admin pages for model with no admin actions\"\n        )\n\n    def test_action_column_class(self):\n        \"Tests that the checkbox column class is present in the response\"\n        response = self.client.get('/test_admin/admin/admin_views/subscriber/')\n        self.assertNotEqual(response.context[\"action_form\"], None)\n        self.assertContains(response, 'action-checkbox-column')\n\n    def test_multiple_actions_form(self):\n        \"\"\"\n        Test that actions come from the form whose submit button was pressed (#10618).\n        \"\"\"\n        action_data = {\n            ACTION_CHECKBOX_NAME: [1],\n            # Two different actions selected on the two forms...\n            'action': ['external_mail', 'delete_selected'],\n            # ...but we clicked \"go\" on the top form.\n            'index': 0\n        }\n        response = self.client.post('/test_admin/admin/admin_views/externalsubscriber/', action_data)\n\n        # Send mail, don't delete.\n        self.assertEqual(len(mail.outbox), 1)\n        self.assertEqual(mail.outbox[0].subject, 'Greetings from a function action')\n\n    def test_user_message_on_none_selected(self):\n        \"\"\"\n        User should see a warning when 'Go' is pressed and no items are selected.\n        \"\"\"\n        action_data = {\n            ACTION_CHECKBOX_NAME: [],\n            'action': 'delete_selected',\n            'index': 0,\n        }\n        response = self.client.post('/test_admin/admin/admin_views/subscriber/', action_data)\n        msg = \"\"\"Items must be selected in order to perform actions on them. No items have been changed.\"\"\"\n        self.assertContains(response, msg)\n        self.assertEqual(Subscriber.objects.count(), 2)\n\n    def test_user_message_on_no_action(self):\n        \"\"\"\n        User should see a warning when 'Go' is pressed and no action is selected.\n        \"\"\"\n        action_data = {\n            ACTION_CHECKBOX_NAME: [1, 2],\n            'action': '',\n            'index': 0,\n        }\n        response = self.client.post('/test_admin/admin/admin_views/subscriber/', action_data)\n        msg = \"\"\"No action selected.\"\"\"\n        self.assertContains(response, msg)\n        self.assertEqual(Subscriber.objects.count(), 2)\n\n    def test_selection_counter(self):\n        \"\"\"\n        Check if the selection counter is there.\n        \"\"\"\n        response = self.client.get('/test_admin/admin/admin_views/subscriber/')\n        self.assertContains(response, '0 of 2 selected')\n\n    def test_popup_actions(self):\n        \"\"\" Actions should not be shown in popups. \"\"\"\n        response = self.client.get('/test_admin/admin/admin_views/subscriber/')\n        self.assertNotEqual(response.context[\"action_form\"], None)\n        response = self.client.get(\n            '/test_admin/admin/admin_views/subscriber/?%s' % IS_POPUP_VAR)\n        self.assertEqual(response.context[\"action_form\"], None)\n\n\n@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))\nclass TestCustomChangeList(TestCase):\n    urls = \"regressiontests.admin_views.urls\"\n    fixtures = ['admin-views-users.xml']\n    urlbit = 'admin'\n\n    def setUp(self):\n        result = self.client.login(username='super', password='secret')\n        self.assertEqual(result, True)\n\n    def tearDown(self):\n        self.client.logout()\n\n    def test_custom_changelist(self):\n        \"\"\"\n        Validate that a custom ChangeList class can be used (#9749)\n        \"\"\"\n        # Insert some data\n        post_data = {\"name\": \"First Gadget\"}\n        response = self.client.post('/test_admin/%s/admin_views/gadget/add/' % self.urlbit, post_data)\n        self.assertEqual(response.status_code, 302)  # redirect somewhere\n        # Hit the page once to get messages out of the queue message list\n        response = self.client.get('/test_admin/%s/admin_views/gadget/' % self.urlbit)\n        # Ensure that data is still not visible on the page\n        response = self.client.get('/test_admin/%s/admin_views/gadget/' % self.urlbit)\n        self.assertEqual(response.status_code, 200)\n        self.assertNotContains(response, 'First Gadget')\n\n\n@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))\nclass TestInlineNotEditable(TestCase):\n    urls = \"regressiontests.admin_views.urls\"\n    fixtures = ['admin-views-users.xml']\n\n    def setUp(self):\n        result = self.client.login(username='super', password='secret')\n        self.assertEqual(result, True)\n\n    def tearDown(self):\n        self.client.logout()\n\n    def test(self):\n        \"\"\"\n        InlineModelAdmin broken?\n        \"\"\"\n        response = self.client.get('/test_admin/admin/admin_views/parent/add/')\n        self.assertEqual(response.status_code, 200)\n\n\n@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))\nclass AdminCustomQuerysetTest(TestCase):\n    urls = \"regressiontests.admin_views.urls\"\n    fixtures = ['admin-views-users.xml']\n\n    def setUp(self):\n        self.client.login(username='super', password='secret')\n        self.pks = [EmptyModel.objects.create().id for i in range(3)]\n\n    def test_changelist_view(self):\n        response = self.client.get('/test_admin/admin/admin_views/emptymodel/')\n        for i in self.pks:\n            if i > 1:\n                self.assertContains(response, 'Primary key = %s' % i)\n            else:\n                self.assertNotContains(response, 'Primary key = %s' % i)\n\n    def test_change_view(self):\n        for i in self.pks:\n            response = self.client.get('/test_admin/admin/admin_views/emptymodel/%s/' % i)\n            if i > 1:\n                self.assertEqual(response.status_code, 200)\n            else:\n                self.assertEqual(response.status_code, 404)\n\n    def test_add_model_modeladmin_defer_qs(self):\n        # Test for #14529. defer() is used in ModelAdmin.queryset()\n\n        # model has __unicode__ method\n        self.assertEqual(CoverLetter.objects.count(), 0)\n        # Emulate model instance creation via the admin\n        post_data = {\n            \"author\": \"Candidate, Best\",\n            \"_save\": \"Save\",\n        }\n        response = self.client.post('/test_admin/admin/admin_views/coverletter/add/',\n                                    post_data, follow=True)\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(CoverLetter.objects.count(), 1)\n        # Message should contain non-ugly model verbose name\n        self.assertContains(\n            response,\n            '<li class=\"info\">The cover letter &quot;Candidate, Best&quot; was added successfully.</li>',\n            html=True\n        )\n\n        # model has no __unicode__ method\n        self.assertEqual(ShortMessage.objects.count(), 0)\n        # Emulate model instance creation via the admin\n        post_data = {\n            \"content\": \"What's this SMS thing?\",\n            \"_save\": \"Save\",\n        }\n        response = self.client.post('/test_admin/admin/admin_views/shortmessage/add/',\n                post_data, follow=True)\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(ShortMessage.objects.count(), 1)\n        # Message should contain non-ugly model verbose name\n        self.assertContains(\n            response,\n            '<li class=\"info\">The short message &quot;ShortMessage object&quot; was added successfully.</li>',\n            html=True\n        )\n\n    def test_add_model_modeladmin_only_qs(self):\n        # Test for #14529. only() is used in ModelAdmin.queryset()\n\n        # model has __unicode__ method\n        self.assertEqual(Telegram.objects.count(), 0)\n        # Emulate model instance creation via the admin\n        post_data = {\n            \"title\": \"Urgent telegram\",\n            \"_save\": \"Save\",\n        }\n        response = self.client.post('/test_admin/admin/admin_views/telegram/add/',\n                post_data, follow=True)\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(Telegram.objects.count(), 1)\n        # Message should contain non-ugly model verbose name\n        self.assertContains(\n            response,\n            '<li class=\"info\">The telegram &quot;Urgent telegram&quot; was added successfully.</li>',\n            html=True\n        )\n\n        # model has no __unicode__ method\n        self.assertEqual(Paper.objects.count(), 0)\n        # Emulate model instance creation via the admin\n        post_data = {\n            \"title\": \"My Modified Paper Title\",\n            \"_save\": \"Save\",\n        }\n        response = self.client.post('/test_admin/admin/admin_views/paper/add/',\n                post_data, follow=True)\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(Paper.objects.count(), 1)\n        # Message should contain non-ugly model verbose name\n        self.assertContains(\n            response,\n            '<li class=\"info\">The paper &quot;Paper object&quot; was added successfully.</li>',\n            html=True\n        )\n\n    def test_edit_model_modeladmin_defer_qs(self):\n        # Test for #14529. defer() is used in ModelAdmin.queryset()\n\n        # model has __unicode__ method\n        cl = CoverLetter.objects.create(author=\"John Doe\")\n        self.assertEqual(CoverLetter.objects.count(), 1)\n        response = self.client.get('/test_admin/admin/admin_views/coverletter/%s/' % cl.pk)\n        self.assertEqual(response.status_code, 200)\n        # Emulate model instance edit via the admin\n        post_data = {\n            \"author\": \"John Doe II\",\n            \"_save\": \"Save\",\n        }\n        response = self.client.post('/test_admin/admin/admin_views/coverletter/%s/' % cl.pk,\n                post_data, follow=True)\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(CoverLetter.objects.count(), 1)\n        # Message should contain non-ugly model verbose name. Instance\n        # representation is set by model's __unicode__()\n        self.assertContains(\n            response,\n            '<li class=\"info\">The cover letter &quot;John Doe II&quot; was changed successfully.</li>',\n            html=True\n        )\n\n        # model has no __unicode__ method\n        sm = ShortMessage.objects.create(content=\"This is expensive\")\n        self.assertEqual(ShortMessage.objects.count(), 1)\n        response = self.client.get('/test_admin/admin/admin_views/shortmessage/%s/' % sm.pk)\n        self.assertEqual(response.status_code, 200)\n        # Emulate model instance edit via the admin\n        post_data = {\n            \"content\": \"Too expensive\",\n            \"_save\": \"Save\",\n        }\n        response = self.client.post('/test_admin/admin/admin_views/shortmessage/%s/' % sm.pk,\n                post_data, follow=True)\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(ShortMessage.objects.count(), 1)\n        # Message should contain non-ugly model verbose name. The ugly(!)\n        # instance representation is set by six.text_type()\n        self.assertContains(\n            response,\n            '<li class=\"info\">The short message &quot;ShortMessage_Deferred_timestamp object&quot; was changed successfully.</li>',\n            html=True\n        )\n\n    def test_edit_model_modeladmin_only_qs(self):\n        # Test for #14529. only() is used in ModelAdmin.queryset()\n\n        # model has __unicode__ method\n        t = Telegram.objects.create(title=\"Frist Telegram\")\n        self.assertEqual(Telegram.objects.count(), 1)\n        response = self.client.get('/test_admin/admin/admin_views/telegram/%s/' % t.pk)\n        self.assertEqual(response.status_code, 200)\n        # Emulate model instance edit via the admin\n        post_data = {\n            \"title\": \"Telegram without typo\",\n            \"_save\": \"Save\",\n        }\n        response = self.client.post('/test_admin/admin/admin_views/telegram/%s/' % t.pk,\n                post_data, follow=True)\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(Telegram.objects.count(), 1)\n        # Message should contain non-ugly model verbose name. The instance\n        # representation is set by model's __unicode__()\n        self.assertContains(\n            response,\n            '<li class=\"info\">The telegram &quot;Telegram without typo&quot; was changed successfully.</li>',\n            html=True\n        )\n\n        # model has no __unicode__ method\n        p = Paper.objects.create(title=\"My Paper Title\")\n        self.assertEqual(Paper.objects.count(), 1)\n        response = self.client.get('/test_admin/admin/admin_views/paper/%s/' % p.pk)\n        self.assertEqual(response.status_code, 200)\n        # Emulate model instance edit via the admin\n        post_data = {\n            \"title\": \"My Modified Paper Title\",\n            \"_save\": \"Save\",\n        }\n        response = self.client.post('/test_admin/admin/admin_views/paper/%s/' % p.pk,\n                post_data, follow=True)\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(Paper.objects.count(), 1)\n        # Message should contain non-ugly model verbose name. The ugly(!)\n        # instance representation is set by six.text_type()\n        self.assertContains(\n            response,\n            '<li class=\"info\">The paper &quot;Paper_Deferred_author object&quot; was changed successfully.</li>',\n            html=True\n        )\n\n\n@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))\nclass AdminInlineFileUploadTest(TestCase):\n    urls = \"regressiontests.admin_views.urls\"\n    fixtures = ['admin-views-users.xml', 'admin-views-actions.xml']\n    urlbit = 'admin'\n\n    def setUp(self):\n        self.client.login(username='super', password='secret')\n\n        # Set up test Picture and Gallery.\n        # These must be set up here instead of in fixtures in order to allow Picture\n        # to use a NamedTemporaryFile.\n        tdir = tempfile.gettempdir()\n        file1 = tempfile.NamedTemporaryFile(suffix=\".file1\", dir=tdir)\n        file1.write(b'a' * (2 ** 21))\n        filename = file1.name\n        file1.close()\n        self.gallery = Gallery(name=\"Test Gallery\")\n        self.gallery.save()\n        self.picture = Picture(name=\"Test Picture\", image=filename, gallery=self.gallery)\n        self.picture.save()\n\n    def tearDown(self):\n        self.client.logout()\n\n    def test_inline_file_upload_edit_validation_error_post(self):\n        \"\"\"\n        Test that inline file uploads correctly display prior data (#10002).\n        \"\"\"\n        post_data = {\n            \"name\": \"Test Gallery\",\n            \"pictures-TOTAL_FORMS\": \"2\",\n            \"pictures-INITIAL_FORMS\": \"1\",\n            \"pictures-MAX_NUM_FORMS\": \"0\",\n            \"pictures-0-id\": six.text_type(self.picture.id),\n            \"pictures-0-gallery\": six.text_type(self.gallery.id),\n            \"pictures-0-name\": \"Test Picture\",\n            \"pictures-0-image\": \"\",\n            \"pictures-1-id\": \"\",\n            \"pictures-1-gallery\": str(self.gallery.id),\n            \"pictures-1-name\": \"Test Picture 2\",\n            \"pictures-1-image\": \"\",\n        }\n        response = self.client.post('/test_admin/%s/admin_views/gallery/%d/' % (self.urlbit, self.gallery.id), post_data)\n        self.assertTrue(response._container[0].find(\"Currently:\") > -1)\n\n\n@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))\nclass AdminInlineTests(TestCase):\n    urls = \"regressiontests.admin_views.urls\"\n    fixtures = ['admin-views-users.xml']\n\n    def setUp(self):\n        self.post_data = {\n            \"name\": \"Test Name\",\n\n            \"widget_set-TOTAL_FORMS\": \"3\",\n            \"widget_set-INITIAL_FORMS\": \"0\",\n            \"widget_set-MAX_NUM_FORMS\": \"0\",\n            \"widget_set-0-id\": \"\",\n            \"widget_set-0-owner\": \"1\",\n            \"widget_set-0-name\": \"\",\n            \"widget_set-1-id\": \"\",\n            \"widget_set-1-owner\": \"1\",\n            \"widget_set-1-name\": \"\",\n            \"widget_set-2-id\": \"\",\n            \"widget_set-2-owner\": \"1\",\n            \"widget_set-2-name\": \"\",\n\n            \"doohickey_set-TOTAL_FORMS\": \"3\",\n            \"doohickey_set-INITIAL_FORMS\": \"0\",\n            \"doohickey_set-MAX_NUM_FORMS\": \"0\",\n            \"doohickey_set-0-owner\": \"1\",\n            \"doohickey_set-0-code\": \"\",\n            \"doohickey_set-0-name\": \"\",\n            \"doohickey_set-1-owner\": \"1\",\n            \"doohickey_set-1-code\": \"\",\n            \"doohickey_set-1-name\": \"\",\n            \"doohickey_set-2-owner\": \"1\",\n            \"doohickey_set-2-code\": \"\",\n            \"doohickey_set-2-name\": \"\",\n\n            \"grommet_set-TOTAL_FORMS\": \"3\",\n            \"grommet_set-INITIAL_FORMS\": \"0\",\n            \"grommet_set-MAX_NUM_FORMS\": \"0\",\n            \"grommet_set-0-code\": \"\",\n            \"grommet_set-0-owner\": \"1\",\n            \"grommet_set-0-name\": \"\",\n            \"grommet_set-1-code\": \"\",\n            \"grommet_set-1-owner\": \"1\",\n            \"grommet_set-1-name\": \"\",\n            \"grommet_set-2-code\": \"\",\n            \"grommet_set-2-owner\": \"1\",\n            \"grommet_set-2-name\": \"\",\n\n            \"whatsit_set-TOTAL_FORMS\": \"3\",\n            \"whatsit_set-INITIAL_FORMS\": \"0\",\n            \"whatsit_set-MAX_NUM_FORMS\": \"0\",\n            \"whatsit_set-0-owner\": \"1\",\n            \"whatsit_set-0-index\": \"\",\n            \"whatsit_set-0-name\": \"\",\n            \"whatsit_set-1-owner\": \"1\",\n            \"whatsit_set-1-index\": \"\",\n            \"whatsit_set-1-name\": \"\",\n            \"whatsit_set-2-owner\": \"1\",\n            \"whatsit_set-2-index\": \"\",\n            \"whatsit_set-2-name\": \"\",\n\n            \"fancydoodad_set-TOTAL_FORMS\": \"3\",\n            \"fancydoodad_set-INITIAL_FORMS\": \"0\",\n            \"fancydoodad_set-MAX_NUM_FORMS\": \"0\",\n            \"fancydoodad_set-0-doodad_ptr\": \"\",\n            \"fancydoodad_set-0-owner\": \"1\",\n            \"fancydoodad_set-0-name\": \"\",\n            \"fancydoodad_set-0-expensive\": \"on\",\n            \"fancydoodad_set-1-doodad_ptr\": \"\",\n            \"fancydoodad_set-1-owner\": \"1\",\n            \"fancydoodad_set-1-name\": \"\",\n            \"fancydoodad_set-1-expensive\": \"on\",\n            \"fancydoodad_set-2-doodad_ptr\": \"\",\n            \"fancydoodad_set-2-owner\": \"1\",\n            \"fancydoodad_set-2-name\": \"\",\n            \"fancydoodad_set-2-expensive\": \"on\",\n\n            \"category_set-TOTAL_FORMS\": \"3\",\n            \"category_set-INITIAL_FORMS\": \"0\",\n            \"category_set-MAX_NUM_FORMS\": \"0\",\n            \"category_set-0-order\": \"\",\n            \"category_set-0-id\": \"\",\n            \"category_set-0-collector\": \"1\",\n            \"category_set-1-order\": \"\",\n            \"category_set-1-id\": \"\",\n            \"category_set-1-collector\": \"1\",\n            \"category_set-2-order\": \"\",\n            \"category_set-2-id\": \"\",\n            \"category_set-2-collector\": \"1\",\n        }\n\n        result = self.client.login(username='super', password='secret')\n        self.assertEqual(result, True)\n        self.collector = Collector(pk=1, name='John Fowles')\n        self.collector.save()\n\n    def tearDown(self):\n        self.client.logout()\n\n    def test_simple_inline(self):\n        \"A simple model can be saved as inlines\"\n        # First add a new inline\n        self.post_data['widget_set-0-name'] = \"Widget 1\"\n        collector_url = '/test_admin/admin/admin_views/collector/%d/' % self.collector.pk\n        response = self.client.post(collector_url, self.post_data)\n        self.assertEqual(response.status_code, 302)\n        self.assertEqual(Widget.objects.count(), 1)\n        self.assertEqual(Widget.objects.all()[0].name, \"Widget 1\")\n        widget_id = Widget.objects.all()[0].id\n\n        # Check that the PK link exists on the rendered form\n        response = self.client.get(collector_url)\n        self.assertContains(response, 'name=\"widget_set-0-id\"')\n\n        # Now resave that inline\n        self.post_data['widget_set-INITIAL_FORMS'] = \"1\"\n        self.post_data['widget_set-0-id'] = str(widget_id)\n        self.post_data['widget_set-0-name'] = \"Widget 1\"\n        response = self.client.post(collector_url, self.post_data)\n        self.assertEqual(response.status_code, 302)\n        self.assertEqual(Widget.objects.count(), 1)\n        self.assertEqual(Widget.objects.all()[0].name, \"Widget 1\")\n\n        # Now modify that inline\n        self.post_data['widget_set-INITIAL_FORMS'] = \"1\"\n        self.post_data['widget_set-0-id'] = str(widget_id)\n        self.post_data['widget_set-0-name'] = \"Widget 1 Updated\"\n        response = self.client.post(collector_url, self.post_data)\n        self.assertEqual(response.status_code, 302)\n        self.assertEqual(Widget.objects.count(), 1)\n        self.assertEqual(Widget.objects.all()[0].name, \"Widget 1 Updated\")\n\n    def test_explicit_autofield_inline(self):\n        \"A model with an explicit autofield primary key can be saved as inlines. Regression for #8093\"\n        # First add a new inline\n        self.post_data['grommet_set-0-name'] = \"Grommet 1\"\n        collector_url = '/test_admin/admin/admin_views/collector/%d/' % self.collector.pk\n        response = self.client.post(collector_url, self.post_data)\n        self.assertEqual(response.status_code, 302)\n        self.assertEqual(Grommet.objects.count(), 1)\n        self.assertEqual(Grommet.objects.all()[0].name, \"Grommet 1\")\n\n        # Check that the PK link exists on the rendered form\n        response = self.client.get(collector_url)\n        self.assertContains(response, 'name=\"grommet_set-0-code\"')\n\n        # Now resave that inline\n        self.post_data['grommet_set-INITIAL_FORMS'] = \"1\"\n        self.post_data['grommet_set-0-code'] = str(Grommet.objects.all()[0].code)\n        self.post_data['grommet_set-0-name'] = \"Grommet 1\"\n        response = self.client.post(collector_url, self.post_data)\n        self.assertEqual(response.status_code, 302)\n        self.assertEqual(Grommet.objects.count(), 1)\n        self.assertEqual(Grommet.objects.all()[0].name, \"Grommet 1\")\n\n        # Now modify that inline\n        self.post_data['grommet_set-INITIAL_FORMS'] = \"1\"\n        self.post_data['grommet_set-0-code'] = str(Grommet.objects.all()[0].code)\n        self.post_data['grommet_set-0-name'] = \"Grommet 1 Updated\"\n        response = self.client.post(collector_url, self.post_data)\n        self.assertEqual(response.status_code, 302)\n        self.assertEqual(Grommet.objects.count(), 1)\n        self.assertEqual(Grommet.objects.all()[0].name, \"Grommet 1 Updated\")\n\n    def test_char_pk_inline(self):\n        \"A model with a character PK can be saved as inlines. Regression for #10992\"\n        # First add a new inline\n        self.post_data['doohickey_set-0-code'] = \"DH1\"\n        self.post_data['doohickey_set-0-name'] = \"Doohickey 1\"\n        collector_url = '/test_admin/admin/admin_views/collector/%d/' % self.collector.pk\n        response = self.client.post(collector_url, self.post_data)\n        self.assertEqual(response.status_code, 302)\n        self.assertEqual(DooHickey.objects.count(), 1)\n        self.assertEqual(DooHickey.objects.all()[0].name, \"Doohickey 1\")\n\n        # Check that the PK link exists on the rendered form\n        response = self.client.get(collector_url)\n        self.assertContains(response, 'name=\"doohickey_set-0-code\"')\n\n        # Now resave that inline\n        self.post_data['doohickey_set-INITIAL_FORMS'] = \"1\"\n        self.post_data['doohickey_set-0-code'] = \"DH1\"\n        self.post_data['doohickey_set-0-name'] = \"Doohickey 1\"\n        response = self.client.post(collector_url, self.post_data)\n        self.assertEqual(response.status_code, 302)\n        self.assertEqual(DooHickey.objects.count(), 1)\n        self.assertEqual(DooHickey.objects.all()[0].name, \"Doohickey 1\")\n\n        # Now modify that inline\n        self.post_data['doohickey_set-INITIAL_FORMS'] = \"1\"\n        self.post_data['doohickey_set-0-code'] = \"DH1\"\n        self.post_data['doohickey_set-0-name'] = \"Doohickey 1 Updated\"\n        response = self.client.post(collector_url, self.post_data)\n        self.assertEqual(response.status_code, 302)\n        self.assertEqual(DooHickey.objects.count(), 1)\n        self.assertEqual(DooHickey.objects.all()[0].name, \"Doohickey 1 Updated\")\n\n    def test_integer_pk_inline(self):\n        \"A model with an integer PK can be saved as inlines. Regression for #10992\"\n        # First add a new inline\n        self.post_data['whatsit_set-0-index'] = \"42\"\n        self.post_data['whatsit_set-0-name'] = \"Whatsit 1\"\n        response = self.client.post('/test_admin/admin/admin_views/collector/1/', self.post_data)\n        self.assertEqual(response.status_code, 302)\n        self.assertEqual(Whatsit.objects.count(), 1)\n        self.assertEqual(Whatsit.objects.all()[0].name, \"Whatsit 1\")\n\n        # Check that the PK link exists on the rendered form\n        response = self.client.get('/test_admin/admin/admin_views/collector/1/')\n        self.assertContains(response, 'name=\"whatsit_set-0-index\"')\n\n        # Now resave that inline\n        self.post_data['whatsit_set-INITIAL_FORMS'] = \"1\"\n        self.post_data['whatsit_set-0-index'] = \"42\"\n        self.post_data['whatsit_set-0-name'] = \"Whatsit 1\"\n        response = self.client.post('/test_admin/admin/admin_views/collector/1/', self.post_data)\n        self.assertEqual(response.status_code, 302)\n        self.assertEqual(Whatsit.objects.count(), 1)\n        self.assertEqual(Whatsit.objects.all()[0].name, \"Whatsit 1\")\n\n        # Now modify that inline\n        self.post_data['whatsit_set-INITIAL_FORMS'] = \"1\"\n        self.post_data['whatsit_set-0-index'] = \"42\"\n        self.post_data['whatsit_set-0-name'] = \"Whatsit 1 Updated\"\n        response = self.client.post('/test_admin/admin/admin_views/collector/1/', self.post_data)\n        self.assertEqual(response.status_code, 302)\n        self.assertEqual(Whatsit.objects.count(), 1)\n        self.assertEqual(Whatsit.objects.all()[0].name, \"Whatsit 1 Updated\")\n\n    def test_inherited_inline(self):\n        \"An inherited model can be saved as inlines. Regression for #11042\"\n        # First add a new inline\n        self.post_data['fancydoodad_set-0-name'] = \"Fancy Doodad 1\"\n        collector_url = '/test_admin/admin/admin_views/collector/%d/' % self.collector.pk\n        response = self.client.post(collector_url, self.post_data)\n        self.assertEqual(response.status_code, 302)\n        self.assertEqual(FancyDoodad.objects.count(), 1)\n        self.assertEqual(FancyDoodad.objects.all()[0].name, \"Fancy Doodad 1\")\n        doodad_pk = FancyDoodad.objects.all()[0].pk\n\n        # Check that the PK link exists on the rendered form\n        response = self.client.get(collector_url)\n        self.assertContains(response, 'name=\"fancydoodad_set-0-doodad_ptr\"')\n\n        # Now resave that inline\n        self.post_data['fancydoodad_set-INITIAL_FORMS'] = \"1\"\n        self.post_data['fancydoodad_set-0-doodad_ptr'] = str(doodad_pk)\n        self.post_data['fancydoodad_set-0-name'] = \"Fancy Doodad 1\"\n        response = self.client.post(collector_url, self.post_data)\n        self.assertEqual(response.status_code, 302)\n        self.assertEqual(FancyDoodad.objects.count(), 1)\n        self.assertEqual(FancyDoodad.objects.all()[0].name, \"Fancy Doodad 1\")\n\n        # Now modify that inline\n        self.post_data['fancydoodad_set-INITIAL_FORMS'] = \"1\"\n        self.post_data['fancydoodad_set-0-doodad_ptr'] = str(doodad_pk)\n        self.post_data['fancydoodad_set-0-name'] = \"Fancy Doodad 1 Updated\"\n        response = self.client.post(collector_url, self.post_data)\n        self.assertEqual(response.status_code, 302)\n        self.assertEqual(FancyDoodad.objects.count(), 1)\n        self.assertEqual(FancyDoodad.objects.all()[0].name, \"Fancy Doodad 1 Updated\")\n\n    def test_ordered_inline(self):\n        \"\"\"Check that an inline with an editable ordering fields is\n        updated correctly. Regression for #10922\"\"\"\n        # Create some objects with an initial ordering\n        Category.objects.create(id=1, order=1, collector=self.collector)\n        Category.objects.create(id=2, order=2, collector=self.collector)\n        Category.objects.create(id=3, order=0, collector=self.collector)\n        Category.objects.create(id=4, order=0, collector=self.collector)\n\n        # NB: The order values must be changed so that the items are reordered.\n        self.post_data.update({\n            \"name\": \"Frederick Clegg\",\n\n            \"category_set-TOTAL_FORMS\": \"7\",\n            \"category_set-INITIAL_FORMS\": \"4\",\n            \"category_set-MAX_NUM_FORMS\": \"0\",\n\n            \"category_set-0-order\": \"14\",\n            \"category_set-0-id\": \"1\",\n            \"category_set-0-collector\": \"1\",\n\n            \"category_set-1-order\": \"13\",\n            \"category_set-1-id\": \"2\",\n            \"category_set-1-collector\": \"1\",\n\n            \"category_set-2-order\": \"1\",\n            \"category_set-2-id\": \"3\",\n            \"category_set-2-collector\": \"1\",\n\n            \"category_set-3-order\": \"0\",\n            \"category_set-3-id\": \"4\",\n            \"category_set-3-collector\": \"1\",\n\n            \"category_set-4-order\": \"\",\n            \"category_set-4-id\": \"\",\n            \"category_set-4-collector\": \"1\",\n\n            \"category_set-5-order\": \"\",\n            \"category_set-5-id\": \"\",\n            \"category_set-5-collector\": \"1\",\n\n            \"category_set-6-order\": \"\",\n            \"category_set-6-id\": \"\",\n            \"category_set-6-collector\": \"1\",\n        })\n        response = self.client.post('/test_admin/admin/admin_views/collector/1/', self.post_data)\n        # Successful post will redirect\n        self.assertEqual(response.status_code, 302)\n\n        # Check that the order values have been applied to the right objects\n        self.assertEqual(self.collector.category_set.count(), 4)\n        self.assertEqual(Category.objects.get(id=1).order, 14)\n        self.assertEqual(Category.objects.get(id=2).order, 13)\n        self.assertEqual(Category.objects.get(id=3).order, 1)\n        self.assertEqual(Category.objects.get(id=4).order, 0)\n\n\n@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))\nclass NeverCacheTests(TestCase):\n    urls = \"regressiontests.admin_views.urls\"\n    fixtures = ['admin-views-users.xml', 'admin-views-colors.xml', 'admin-views-fabrics.xml']\n\n    def setUp(self):\n        self.client.login(username='super', password='secret')\n\n    def tearDown(self):\n        self.client.logout()\n\n    def testAdminIndex(self):\n        \"Check the never-cache status of the main index\"\n        response = self.client.get('/test_admin/admin/')\n        self.assertEqual(get_max_age(response), 0)\n\n    def testAppIndex(self):\n        \"Check the never-cache status of an application index\"\n        response = self.client.get('/test_admin/admin/admin_views/')\n        self.assertEqual(get_max_age(response), 0)\n\n    def testModelIndex(self):\n        \"Check the never-cache status of a model index\"\n        response = self.client.get('/test_admin/admin/admin_views/fabric/')\n        self.assertEqual(get_max_age(response), 0)\n\n    def testModelAdd(self):\n        \"Check the never-cache status of a model add page\"\n        response = self.client.get('/test_admin/admin/admin_views/fabric/add/')\n        self.assertEqual(get_max_age(response), 0)\n\n    def testModelView(self):\n        \"Check the never-cache status of a model edit page\"\n        response = self.client.get('/test_admin/admin/admin_views/section/1/')\n        self.assertEqual(get_max_age(response), 0)\n\n    def testModelHistory(self):\n        \"Check the never-cache status of a model history page\"\n        response = self.client.get('/test_admin/admin/admin_views/section/1/history/')\n        self.assertEqual(get_max_age(response), 0)\n\n    def testModelDelete(self):\n        \"Check the never-cache status of a model delete page\"\n        response = self.client.get('/test_admin/admin/admin_views/section/1/delete/')\n        self.assertEqual(get_max_age(response), 0)\n\n    def testLogin(self):\n        \"Check the never-cache status of login views\"\n        self.client.logout()\n        response = self.client.get('/test_admin/admin/')\n        self.assertEqual(get_max_age(response), 0)\n\n    def testLogout(self):\n        \"Check the never-cache status of logout view\"\n        response = self.client.get('/test_admin/admin/logout/')\n        self.assertEqual(get_max_age(response), 0)\n\n    def testPasswordChange(self):\n        \"Check the never-cache status of the password change view\"\n        self.client.logout()\n        response = self.client.get('/test_admin/password_change/')\n        self.assertEqual(get_max_age(response), None)\n\n    def testPasswordChangeDone(self):\n        \"Check the never-cache status of the password change done view\"\n        response = self.client.get('/test_admin/admin/password_change/done/')\n        self.assertEqual(get_max_age(response), None)\n\n    def testJsi18n(self):\n        \"Check the never-cache status of the JavaScript i18n view\"\n        response = self.client.get('/test_admin/admin/jsi18n/')\n        self.assertEqual(get_max_age(response), None)\n\n\n@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))\nclass PrePopulatedTest(TestCase):\n    urls = \"regressiontests.admin_views.urls\"\n    fixtures = ['admin-views-users.xml']\n\n    def setUp(self):\n        self.client.login(username='super', password='secret')\n\n    def tearDown(self):\n        self.client.logout()\n\n    def test_prepopulated_on(self):\n        response = self.client.get('/test_admin/admin/admin_views/prepopulatedpost/add/')\n        self.assertEqual(response.status_code, 200)\n        self.assertContains(response, \"id: '#id_slug',\")\n        self.assertContains(response, \"field['dependency_ids'].push('#id_title');\")\n        self.assertContains(response, \"id: '#id_prepopulatedsubpost_set-0-subslug',\")\n\n    def test_prepopulated_off(self):\n        response = self.client.get('/test_admin/admin/admin_views/prepopulatedpost/1/')\n        self.assertEqual(response.status_code, 200)\n        self.assertContains(response, \"A Long Title\")\n        self.assertNotContains(response, \"id: '#id_slug'\")\n        self.assertNotContains(response, \"field['dependency_ids'].push('#id_title');\")\n        self.assertNotContains(response, \"id: '#id_prepopulatedsubpost_set-0-subslug',\")\n\n    @override_settings(USE_THOUSAND_SEPARATOR=True, USE_L10N=True)\n    def test_prepopulated_maxlength_localized(self):\n        \"\"\"\n        Regression test for #15938: if USE_THOUSAND_SEPARATOR is set, make sure\n        that maxLength (in the JavaScript) is rendered without separators.\n        \"\"\"\n        response = self.client.get('/test_admin/admin/admin_views/prepopulatedpostlargeslug/add/')\n        self.assertContains(response, \"maxLength: 1000\")  # instead of 1,000\n\n\n@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))\nclass SeleniumPrePopulatedFirefoxTests(AdminSeleniumWebDriverTestCase):\n    webdriver_class = 'selenium.webdriver.firefox.webdriver.WebDriver'\n    urls = \"regressiontests.admin_views.urls\"\n    fixtures = ['admin-views-users.xml']\n\n    def test_basic(self):\n        \"\"\"\n        Ensure that the JavaScript-automated prepopulated fields work with the\n        main form and with stacked and tabular inlines.\n        Refs #13068, #9264, #9983, #9784.\n        \"\"\"\n        from selenium.common.exceptions import TimeoutException\n        self.admin_login(username='super', password='secret', login_url='/test_admin/admin/')\n        self.selenium.get('%s%s' % (self.live_server_url,\n            '/test_admin/admin/admin_views/mainprepopulated/add/'))\n\n        # Main form ----------------------------------------------------------\n        self.selenium.find_element_by_css_selector('#id_pubdate').send_keys('2012-02-18')\n        self.get_select_option('#id_status', 'option two').click()\n        self.selenium.find_element_by_css_selector('#id_name').send_keys(' this is the mAin nÀMë and it\\'s awεšome')\n        slug1 = self.selenium.find_element_by_css_selector('#id_slug1').get_attribute('value')\n        slug2 = self.selenium.find_element_by_css_selector('#id_slug2').get_attribute('value')\n        self.assertEqual(slug1, 'main-name-and-its-awesome-2012-02-18')\n        self.assertEqual(slug2, 'option-two-main-name-and-its-awesome')\n\n        # Stacked inlines ----------------------------------------------------\n        # Initial inline\n        self.selenium.find_element_by_css_selector('#id_relatedprepopulated_set-0-pubdate').send_keys('2011-12-17')\n        self.get_select_option('#id_relatedprepopulated_set-0-status', 'option one').click()\n        self.selenium.find_element_by_css_selector('#id_relatedprepopulated_set-0-name').send_keys(' here is a sŤāÇkeð   inline !  ')\n        slug1 = self.selenium.find_element_by_css_selector('#id_relatedprepopulated_set-0-slug1').get_attribute('value')\n        slug2 = self.selenium.find_element_by_css_selector('#id_relatedprepopulated_set-0-slug2').get_attribute('value')\n        self.assertEqual(slug1, 'here-stacked-inline-2011-12-17')\n        self.assertEqual(slug2, 'option-one-here-stacked-inline')\n\n        # Add an inline\n        self.selenium.find_elements_by_link_text('Add another Related Prepopulated')[0].click()\n        self.selenium.find_element_by_css_selector('#id_relatedprepopulated_set-1-pubdate').send_keys('1999-01-25')\n        self.get_select_option('#id_relatedprepopulated_set-1-status', 'option two').click()\n        self.selenium.find_element_by_css_selector('#id_relatedprepopulated_set-1-name').send_keys(' now you haVe anöther   sŤāÇkeð  inline with a very ... loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooog text... ')\n        slug1 = self.selenium.find_element_by_css_selector('#id_relatedprepopulated_set-1-slug1').get_attribute('value')\n        slug2 = self.selenium.find_element_by_css_selector('#id_relatedprepopulated_set-1-slug2').get_attribute('value')\n        self.assertEqual(slug1, 'now-you-have-another-stacked-inline-very-loooooooo')  # 50 characters maximum for slug1 field\n        self.assertEqual(slug2, 'option-two-now-you-have-another-stacked-inline-very-looooooo')  # 60 characters maximum for slug2 field\n\n        # Tabular inlines ----------------------------------------------------\n        # Initial inline\n        self.selenium.find_element_by_css_selector('#id_relatedprepopulated_set-2-0-pubdate').send_keys('1234-12-07')\n        self.get_select_option('#id_relatedprepopulated_set-2-0-status', 'option two').click()\n        self.selenium.find_element_by_css_selector('#id_relatedprepopulated_set-2-0-name').send_keys('And now, with a tÃbűlaŘ inline !!!')\n        slug1 = self.selenium.find_element_by_css_selector('#id_relatedprepopulated_set-2-0-slug1').get_attribute('value')\n        slug2 = self.selenium.find_element_by_css_selector('#id_relatedprepopulated_set-2-0-slug2').get_attribute('value')\n        self.assertEqual(slug1, 'and-now-tabular-inline-1234-12-07')\n        self.assertEqual(slug2, 'option-two-and-now-tabular-inline')\n\n        # Add an inline\n        self.selenium.find_elements_by_link_text('Add another Related Prepopulated')[1].click()\n        self.selenium.find_element_by_css_selector('#id_relatedprepopulated_set-2-1-pubdate').send_keys('1981-08-22')\n        self.get_select_option('#id_relatedprepopulated_set-2-1-status', 'option one').click()\n        self.selenium.find_element_by_css_selector('#id_relatedprepopulated_set-2-1-name').send_keys('a tÃbűlaŘ inline with ignored ;\"&*^\\%$#@-/`~ characters')\n        slug1 = self.selenium.find_element_by_css_selector('#id_relatedprepopulated_set-2-1-slug1').get_attribute('value')\n        slug2 = self.selenium.find_element_by_css_selector('#id_relatedprepopulated_set-2-1-slug2').get_attribute('value')\n        self.assertEqual(slug1, 'tabular-inline-ignored-characters-1981-08-22')\n        self.assertEqual(slug2, 'option-one-tabular-inline-ignored-characters')\n\n        # Save and check that everything is properly stored in the database\n        self.selenium.find_element_by_xpath('//input[@value=\"Save\"]').click()\n        self.wait_page_loaded()\n        self.assertEqual(MainPrepopulated.objects.all().count(), 1)\n        MainPrepopulated.objects.get(\n            name=' this is the mAin nÀMë and it\\'s awεšome',\n            pubdate='2012-02-18',\n            status='option two',\n            slug1='main-name-and-its-awesome-2012-02-18',\n            slug2='option-two-main-name-and-its-awesome',\n        )\n        self.assertEqual(RelatedPrepopulated.objects.all().count(), 4)\n        RelatedPrepopulated.objects.get(\n            name=' here is a sŤāÇkeð   inline !  ',\n            pubdate='2011-12-17',\n            status='option one',\n            slug1='here-stacked-inline-2011-12-17',\n            slug2='option-one-here-stacked-inline',\n        )\n        RelatedPrepopulated.objects.get(\n            name=' now you haVe anöther   sŤāÇkeð  inline with a very ... loooooooooooooooooo',  # 75 characters in name field\n            pubdate='1999-01-25',\n            status='option two',\n            slug1='now-you-have-another-stacked-inline-very-loooooooo',\n            slug2='option-two-now-you-have-another-stacked-inline-very-looooooo',\n        )\n        RelatedPrepopulated.objects.get(\n            name='And now, with a tÃbűlaŘ inline !!!',\n            pubdate='1234-12-07',\n            status='option two',\n            slug1='and-now-tabular-inline-1234-12-07',\n            slug2='option-two-and-now-tabular-inline',\n        )\n        RelatedPrepopulated.objects.get(\n            name='a tÃbűlaŘ inline with ignored ;\"&*^\\%$#@-/`~ characters',\n            pubdate='1981-08-22',\n            status='option one',\n            slug1='tabular-inline-ignored-characters-1981-08-22',\n            slug2='option-one-tabular-inline-ignored-characters',\n        )\n\n\nclass SeleniumPrePopulatedChromeTests(SeleniumPrePopulatedFirefoxTests):\n    webdriver_class = 'selenium.webdriver.chrome.webdriver.WebDriver'\n\n\nclass SeleniumPrePopulatedIETests(SeleniumPrePopulatedFirefoxTests):\n    webdriver_class = 'selenium.webdriver.ie.webdriver.WebDriver'\n\n\n@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))\nclass ReadonlyTest(TestCase):\n    urls = \"regressiontests.admin_views.urls\"\n    fixtures = ['admin-views-users.xml']\n\n    def setUp(self):\n        self.client.login(username='super', password='secret')\n\n    def tearDown(self):\n        self.client.logout()\n\n    def test_readonly_get(self):\n        response = self.client.get('/test_admin/admin/admin_views/post/add/')\n        self.assertEqual(response.status_code, 200)\n        self.assertNotContains(response, 'name=\"posted\"')\n        # 3 fields + 2 submit buttons + 4 inline management form fields, + 2\n        # hidden fields for inlines + 1 field for the inline + 2 empty form\n        self.assertContains(response, \"<input\", count=14)\n        self.assertContains(response, formats.localize(datetime.date.today()))\n        self.assertContains(response,\n            \"<label>Awesomeness level:</label>\")\n        self.assertContains(response, \"Very awesome.\")\n        self.assertContains(response, \"Unkown coolness.\")\n        self.assertContains(response, \"foo\")\n\n        # Checks that multiline text in a readonly field gets <br /> tags\n        self.assertContains(response, \"Multiline<br />test<br />string\")\n        self.assertContains(response, \"InlineMultiline<br />test<br />string\")\n\n        self.assertContains(response,\n            formats.localize(datetime.date.today() - datetime.timedelta(days=7))\n        )\n\n        self.assertContains(response, '<div class=\"form-row field-coolness\">')\n        self.assertContains(response, '<div class=\"form-row field-awesomeness_level\">')\n        self.assertContains(response, '<div class=\"form-row field-posted\">')\n        self.assertContains(response, '<div class=\"form-row field-value\">')\n        self.assertContains(response, '<div class=\"form-row\">')\n        self.assertContains(response, '<p class=\"help\">', 3)\n        self.assertContains(response, '<p class=\"help\">Some help text for the title (with unicode ŠĐĆŽćžšđ)</p>', html=True)\n        self.assertContains(response, '<p class=\"help\">Some help text for the content (with unicode ŠĐĆŽćžšđ)</p>', html=True)\n        self.assertContains(response, '<p class=\"help\">Some help text for the date (with unicode ŠĐĆŽćžšđ)</p>', html=True)\n\n        p = Post.objects.create(title=\"I worked on readonly_fields\", content=\"Its good stuff\")\n        response = self.client.get('/test_admin/admin/admin_views/post/%d/' % p.pk)\n        self.assertContains(response, \"%d amount of cool\" % p.pk)\n\n    def test_readonly_post(self):\n        data = {\n            \"title\": \"Django Got Readonly Fields\",\n            \"content\": \"This is an incredible development.\",\n            \"link_set-TOTAL_FORMS\": \"1\",\n            \"link_set-INITIAL_FORMS\": \"0\",\n            \"link_set-MAX_NUM_FORMS\": \"0\",\n        }\n        response = self.client.post('/test_admin/admin/admin_views/post/add/', data)\n        self.assertEqual(response.status_code, 302)\n        self.assertEqual(Post.objects.count(), 1)\n        p = Post.objects.get()\n        self.assertEqual(p.posted, datetime.date.today())\n\n        data[\"posted\"] = \"10-8-1990\"  # some date that's not today\n        response = self.client.post('/test_admin/admin/admin_views/post/add/', data)\n        self.assertEqual(response.status_code, 302)\n        self.assertEqual(Post.objects.count(), 2)\n        p = Post.objects.order_by('-id')[0]\n        self.assertEqual(p.posted, datetime.date.today())\n\n    def test_readonly_manytomany(self):\n        \"Regression test for #13004\"\n        response = self.client.get('/test_admin/admin/admin_views/pizza/add/')\n        self.assertEqual(response.status_code, 200)\n\n    def test_user_password_change_limited_queryset(self):\n        su = User.objects.filter(is_superuser=True)[0]\n        response = self.client.get('/test_admin/admin2/auth/user/%s/password/' % su.pk)\n        self.assertEqual(response.status_code, 404)\n\n    def test_change_form_renders_correct_null_choice_value(self):\n        \"\"\"\n        Regression test for #17911.\n        \"\"\"\n        choice = Choice.objects.create(choice=None)\n        response = self.client.get('/test_admin/admin/admin_views/choice/%s/' % choice.pk)\n        self.assertContains(response, '<p>No opinion</p>', html=True)\n        self.assertNotContains(response, '<p>(None)</p>')\n\n\n@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))\nclass RawIdFieldsTest(TestCase):\n    urls = \"regressiontests.admin_views.urls\"\n    fixtures = ['admin-views-users.xml']\n\n    def setUp(self):\n        self.client.login(username='super', password='secret')\n\n    def tearDown(self):\n        self.client.logout()\n\n    def test_limit_choices_to(self):\n        \"\"\"Regression test for 14880\"\"\"\n        # This includes tests integers, strings and booleans in the lookup query string\n        actor = Actor.objects.create(name=\"Palin\", age=27)\n        inquisition1 = Inquisition.objects.create(expected=True,\n                                                  leader=actor,\n                                                  country=\"England\")\n        inquisition2 = Inquisition.objects.create(expected=False,\n                                                  leader=actor,\n                                                  country=\"Spain\")\n        response = self.client.get('/test_admin/admin/admin_views/sketch/add/')\n        # Find the link\n        m = re.search(br'<a href=\"([^\"]*)\"[^>]* id=\"lookup_id_inquisition\"', response.content)\n        self.assertTrue(m)  # Got a match\n        popup_url = m.groups()[0].decode().replace(\"&amp;\", \"&\")\n\n        # Handle relative links\n        popup_url = urljoin(response.request['PATH_INFO'], popup_url)\n        # Get the popup\n        response2 = self.client.get(popup_url)\n        self.assertContains(response2, \"Spain\")\n        self.assertNotContains(response2, \"England\")\n\n\n@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))\nclass UserAdminTest(TestCase):\n    \"\"\"\n    Tests user CRUD functionality.\n    \"\"\"\n    urls = \"regressiontests.admin_views.urls\"\n    fixtures = ['admin-views-users.xml']\n\n    def setUp(self):\n        self.client.login(username='super', password='secret')\n\n    def tearDown(self):\n        self.client.logout()\n\n    def test_save_button(self):\n        user_count = User.objects.count()\n        response = self.client.post('/test_admin/admin/auth/user/add/', {\n            'username': 'newuser',\n            'password1': 'newpassword',\n            'password2': 'newpassword',\n        })\n        new_user = User.objects.order_by('-id')[0]\n        self.assertRedirects(response, '/test_admin/admin/auth/user/%s/' % new_user.pk)\n        self.assertEqual(User.objects.count(), user_count + 1)\n        self.assertNotEqual(new_user.password, UNUSABLE_PASSWORD)\n\n    def test_save_continue_editing_button(self):\n        user_count = User.objects.count()\n        response = self.client.post('/test_admin/admin/auth/user/add/', {\n            'username': 'newuser',\n            'password1': 'newpassword',\n            'password2': 'newpassword',\n            '_continue': '1',\n        })\n        new_user = User.objects.order_by('-id')[0]\n        self.assertRedirects(response, '/test_admin/admin/auth/user/%s/' % new_user.pk)\n        self.assertEqual(User.objects.count(), user_count + 1)\n        self.assertNotEqual(new_user.password, UNUSABLE_PASSWORD)\n\n    def test_password_mismatch(self):\n        response = self.client.post('/test_admin/admin/auth/user/add/', {\n            'username': 'newuser',\n            'password1': 'newpassword',\n            'password2': 'mismatch',\n        })\n        self.assertEqual(response.status_code, 200)\n        adminform = response.context['adminform']\n        self.assertTrue('password' not in adminform.form.errors)\n        self.assertEqual(adminform.form.errors['password2'],\n                          [\"The two password fields didn't match.\"])\n\n    def test_user_fk_popup(self):\n        \"\"\"Quick user addition in a FK popup shouldn't invoke view for further user customization\"\"\"\n        response = self.client.get('/test_admin/admin/admin_views/album/add/')\n        self.assertEqual(response.status_code, 200)\n        self.assertContains(response, '/test_admin/admin/auth/user/add')\n        self.assertContains(response, 'class=\"add-another\" id=\"add_id_owner\" onclick=\"return showAddAnotherPopup(this);\"')\n        response = self.client.get('/test_admin/admin/auth/user/add/?_popup=1')\n        self.assertEqual(response.status_code, 200)\n        self.assertNotContains(response, 'name=\"_continue\"')\n        self.assertNotContains(response, 'name=\"_addanother\"')\n        data = {\n            'username': 'newuser',\n            'password1': 'newpassword',\n            'password2': 'newpassword',\n            '_popup': '1',\n            '_save': '1',\n        }\n        response = self.client.post('/test_admin/admin/auth/user/add/?_popup=1', data, follow=True)\n        self.assertEqual(response.status_code, 200)\n        self.assertContains(response, 'dismissAddAnotherPopup')\n\n    def test_save_add_another_button(self):\n        user_count = User.objects.count()\n        response = self.client.post('/test_admin/admin/auth/user/add/', {\n            'username': 'newuser',\n            'password1': 'newpassword',\n            'password2': 'newpassword',\n            '_addanother': '1',\n        })\n        new_user = User.objects.order_by('-id')[0]\n        self.assertRedirects(response, '/test_admin/admin/auth/user/add/')\n        self.assertEqual(User.objects.count(), user_count + 1)\n        self.assertNotEqual(new_user.password, UNUSABLE_PASSWORD)\n\n    def test_user_permission_performance(self):\n        u = User.objects.all()[0]\n\n        # Don't depend on a warm cache, see #17377.\n        ContentType.objects.clear_cache()\n        with self.assertNumQueries(8):\n            response = self.client.get('/test_admin/admin/auth/user/%s/' % u.pk)\n            self.assertEqual(response.status_code, 200)\n\n    def test_form_url_present_in_context(self):\n        u = User.objects.all()[0]\n        response = self.client.get('/test_admin/admin3/auth/user/%s/password/' % u.pk)\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.context['form_url'], 'pony')\n\n\n@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))\nclass GroupAdminTest(TestCase):\n    \"\"\"\n    Tests group CRUD functionality.\n    \"\"\"\n    urls = \"regressiontests.admin_views.urls\"\n    fixtures = ['admin-views-users.xml']\n\n    def setUp(self):\n        self.client.login(username='super', password='secret')\n\n    def tearDown(self):\n        self.client.logout()\n\n    def test_save_button(self):\n        group_count = Group.objects.count()\n        response = self.client.post('/test_admin/admin/auth/group/add/', {\n            'name': 'newgroup',\n        })\n\n        new_group = Group.objects.order_by('-id')[0]\n        self.assertRedirects(response, '/test_admin/admin/auth/group/')\n        self.assertEqual(Group.objects.count(), group_count + 1)\n\n    def test_group_permission_performance(self):\n        g = Group.objects.create(name=\"test_group\")\n\n        with self.assertNumQueries(6):  # instead of 259!\n            response = self.client.get('/test_admin/admin/auth/group/%s/' % g.pk)\n            self.assertEqual(response.status_code, 200)\n\n\n@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))\nclass CSSTest(TestCase):\n    urls = \"regressiontests.admin_views.urls\"\n    fixtures = ['admin-views-users.xml']\n\n    def setUp(self):\n        self.client.login(username='super', password='secret')\n\n    def tearDown(self):\n        self.client.logout()\n\n    def test_css_classes(self):\n        response = self.client.get('/test_admin/admin/admin_views/post/add/')\n\n        # The main form\n        self.assertContains(response, 'class=\"form-row field-title\"')\n        self.assertContains(response, 'class=\"form-row field-content\"')\n        self.assertContains(response, 'class=\"form-row field-public\"')\n        self.assertContains(response, 'class=\"form-row field-awesomeness_level\"')\n        self.assertContains(response, 'class=\"form-row field-coolness\"')\n        self.assertContains(response, 'class=\"form-row field-value\"')\n        self.assertContains(response, 'class=\"form-row\"')  # The lambda function\n\n        # The tabular inline\n        self.assertContains(response, '<td class=\"field-url\">')\n        self.assertContains(response, '<td class=\"field-posted\">')\n\n\ntry:\n    import docutils\nexcept ImportError:\n    docutils = None\n\n\n@unittest.skipUnless(docutils, \"no docutils installed.\")\n@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))\nclass AdminDocsTest(TestCase):\n    urls = \"regressiontests.admin_views.urls\"\n    fixtures = ['admin-views-users.xml']\n\n    def setUp(self):\n        self.client.login(username='super', password='secret')\n\n    def tearDown(self):\n        self.client.logout()\n\n    def test_tags(self):\n        response = self.client.get('/test_admin/admin/doc/tags/')\n\n        # The builtin tag group exists\n        self.assertContains(response, \"<h2>Built-in tags</h2>\", count=2, html=True)\n\n        # A builtin tag exists in both the index and detail\n        self.assertContains(response, '<h3 id=\"built_in-autoescape\">autoescape</h3>', html=True)\n        self.assertContains(response, '<li><a href=\"#built_in-autoescape\">autoescape</a></li>', html=True)\n\n        # An app tag exists in both the index and detail\n        self.assertContains(response, '<h3 id=\"flatpages-get_flatpages\">get_flatpages</h3>', html=True)\n        self.assertContains(response, '<li><a href=\"#flatpages-get_flatpages\">get_flatpages</a></li>', html=True)\n\n        # The admin list tag group exists\n        self.assertContains(response, \"<h2>admin_list</h2>\", count=2, html=True)\n\n        # An admin list tag exists in both the index and detail\n        self.assertContains(response, '<h3 id=\"admin_list-admin_actions\">admin_actions</h3>', html=True)\n        self.assertContains(response, '<li><a href=\"#admin_list-admin_actions\">admin_actions</a></li>', html=True)\n\n    def test_filters(self):\n        response = self.client.get('/test_admin/admin/doc/filters/')\n\n        # The builtin filter group exists\n        self.assertContains(response, \"<h2>Built-in filters</h2>\", count=2, html=True)\n\n        # A builtin filter exists in both the index and detail\n        self.assertContains(response, '<h3 id=\"built_in-add\">add</h3>', html=True)\n        self.assertContains(response, '<li><a href=\"#built_in-add\">add</a></li>', html=True)\n\n\n@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))\nclass ValidXHTMLTests(TestCase):\n    urls = \"regressiontests.admin_views.urls\"\n    fixtures = ['admin-views-users.xml']\n    urlbit = 'admin'\n\n    def setUp(self):\n        self.client.login(username='super', password='secret')\n\n    def tearDown(self):\n        self.client.logout()\n\n    @override_settings(\n        TEMPLATE_CONTEXT_PROCESSORS=filter(\n            lambda t: t != 'django.core.context_processors.i18n',\n            global_settings.TEMPLATE_CONTEXT_PROCESSORS),\n        USE_I18N=False,\n    )\n    def testLangNamePresent(self):\n        response = self.client.get('/test_admin/%s/admin_views/' % self.urlbit)\n        self.assertNotContains(response, ' lang=\"\"')\n        self.assertNotContains(response, ' xml:lang=\"\"')\n\n\n@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))\nclass DateHierarchyTests(TestCase):\n    urls = \"regressiontests.admin_views.urls\"\n    fixtures = ['admin-views-users.xml']\n\n    def setUp(self):\n        self.client.login(username='super', password='secret')\n        self.old_USE_THOUSAND_SEPARATOR = settings.USE_THOUSAND_SEPARATOR\n        self.old_USE_L10N = settings.USE_L10N\n        settings.USE_THOUSAND_SEPARATOR = True\n        settings.USE_L10N = True\n\n    def tearDown(self):\n        settings.USE_THOUSAND_SEPARATOR = self.old_USE_THOUSAND_SEPARATOR\n        settings.USE_L10N = self.old_USE_L10N\n        formats.reset_format_cache()\n\n    def assert_non_localized_year(self, response, year):\n        \"\"\"Ensure that the year is not localized with\n        USE_THOUSAND_SEPARATOR. Refs #15234.\n        \"\"\"\n        self.assertNotContains(response, formats.number_format(year))\n\n    def assert_contains_year_link(self, response, date):\n        self.assertContains(response, '?release_date__year=%d\"' % (date.year,))\n\n    def assert_contains_month_link(self, response, date):\n        self.assertContains(\n            response, '?release_date__month=%d&amp;release_date__year=%d\"' % (\n                date.month, date.year))\n\n    def assert_contains_day_link(self, response, date):\n        self.assertContains(\n            response, '?release_date__day=%d&amp;'\n            'release_date__month=%d&amp;release_date__year=%d\"' % (\n                date.day, date.month, date.year))\n\n    def test_empty(self):\n        \"\"\"\n        Ensure that no date hierarchy links display with empty changelist.\n        \"\"\"\n        response = self.client.get(\n            reverse('admin:admin_views_podcast_changelist'))\n        self.assertNotContains(response, 'release_date__year=')\n        self.assertNotContains(response, 'release_date__month=')\n        self.assertNotContains(response, 'release_date__day=')\n\n    def test_single(self):\n        \"\"\"\n        Ensure that single day-level date hierarchy appears for single object.\n        \"\"\"\n        DATE = datetime.date(2000, 6, 30)\n        Podcast.objects.create(release_date=DATE)\n        url = reverse('admin:admin_views_podcast_changelist')\n        response = self.client.get(url)\n        self.assert_contains_day_link(response, DATE)\n        self.assert_non_localized_year(response, 2000)\n\n    def test_within_month(self):\n        \"\"\"\n        Ensure that day-level links appear for changelist within single month.\n        \"\"\"\n        DATES = (datetime.date(2000, 6, 30),\n                 datetime.date(2000, 6, 15),\n                 datetime.date(2000, 6, 3))\n        for date in DATES:\n            Podcast.objects.create(release_date=date)\n        url = reverse('admin:admin_views_podcast_changelist')\n        response = self.client.get(url)\n        for date in DATES:\n            self.assert_contains_day_link(response, date)\n        self.assert_non_localized_year(response, 2000)\n\n    def test_within_year(self):\n        \"\"\"\n        Ensure that month-level links appear for changelist within single year.\n        \"\"\"\n        DATES = (datetime.date(2000, 1, 30),\n                 datetime.date(2000, 3, 15),\n                 datetime.date(2000, 5, 3))\n        for date in DATES:\n            Podcast.objects.create(release_date=date)\n        url = reverse('admin:admin_views_podcast_changelist')\n        response = self.client.get(url)\n        # no day-level links\n        self.assertNotContains(response, 'release_date__day=')\n        for date in DATES:\n            self.assert_contains_month_link(response, date)\n        self.assert_non_localized_year(response, 2000)\n\n    def test_multiple_years(self):\n        \"\"\"\n        Ensure that year-level links appear for year-spanning changelist.\n        \"\"\"\n        DATES = (datetime.date(2001, 1, 30),\n                 datetime.date(2003, 3, 15),\n                 datetime.date(2005, 5, 3))\n        for date in DATES:\n            Podcast.objects.create(release_date=date)\n        response = self.client.get(\n            reverse('admin:admin_views_podcast_changelist'))\n        # no day/month-level links\n        self.assertNotContains(response, 'release_date__day=')\n        self.assertNotContains(response, 'release_date__month=')\n        for date in DATES:\n            self.assert_contains_year_link(response, date)\n\n        # and make sure GET parameters still behave correctly\n        for date in DATES:\n            url = '%s?release_date__year=%d' % (\n                  reverse('admin:admin_views_podcast_changelist'),\n                  date.year)\n            response = self.client.get(url)\n            self.assert_contains_month_link(response, date)\n            self.assert_non_localized_year(response, 2000)\n            self.assert_non_localized_year(response, 2003)\n            self.assert_non_localized_year(response, 2005)\n\n            url = '%s?release_date__year=%d&release_date__month=%d' % (\n                  reverse('admin:admin_views_podcast_changelist'),\n                  date.year, date.month)\n            response = self.client.get(url)\n            self.assert_contains_day_link(response, date)\n            self.assert_non_localized_year(response, 2000)\n            self.assert_non_localized_year(response, 2003)\n            self.assert_non_localized_year(response, 2005)\n\n\n@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))\nclass AdminCustomSaveRelatedTests(TestCase):\n    \"\"\"\n    Ensure that one can easily customize the way related objects are saved.\n    Refs #16115.\n    \"\"\"\n    urls = \"regressiontests.admin_views.urls\"\n    fixtures = ['admin-views-users.xml']\n\n    def setUp(self):\n        self.client.login(username='super', password='secret')\n\n    def test_should_be_able_to_edit_related_objects_on_add_view(self):\n        post = {\n            'child_set-TOTAL_FORMS': '3',\n            'child_set-INITIAL_FORMS': '0',\n            'name': 'Josh Stone',\n            'child_set-0-name': 'Paul',\n            'child_set-1-name': 'Catherine',\n        }\n        response = self.client.post('/test_admin/admin/admin_views/parent/add/', post)\n        self.assertEqual(1, Parent.objects.count())\n        self.assertEqual(2, Child.objects.count())\n\n        children_names = list(Child.objects.order_by('name').values_list('name', flat=True))\n\n        self.assertEqual('Josh Stone', Parent.objects.latest('id').name)\n        self.assertEqual(['Catherine Stone', 'Paul Stone'], children_names)\n\n    def test_should_be_able_to_edit_related_objects_on_change_view(self):\n        parent = Parent.objects.create(name='Josh Stone')\n        paul = Child.objects.create(parent=parent, name='Paul')\n        catherine = Child.objects.create(parent=parent, name='Catherine')\n        post = {\n            'child_set-TOTAL_FORMS': '5',\n            'child_set-INITIAL_FORMS': '2',\n            'name': 'Josh Stone',\n            'child_set-0-name': 'Paul',\n            'child_set-0-id': paul.id,\n            'child_set-1-name': 'Catherine',\n            'child_set-1-id': catherine.id,\n        }\n        response = self.client.post('/test_admin/admin/admin_views/parent/%s/' % parent.id, post)\n\n        children_names = list(Child.objects.order_by('name').values_list('name', flat=True))\n\n        self.assertEqual('Josh Stone', Parent.objects.latest('id').name)\n        self.assertEqual(['Catherine Stone', 'Paul Stone'], children_names)\n\n    def test_should_be_able_to_edit_related_objects_on_changelist_view(self):\n        parent = Parent.objects.create(name='Josh Rock')\n        paul = Child.objects.create(parent=parent, name='Paul')\n        catherine = Child.objects.create(parent=parent, name='Catherine')\n        post = {\n            'form-TOTAL_FORMS': '1',\n            'form-INITIAL_FORMS': '1',\n            'form-MAX_NUM_FORMS': '0',\n            'form-0-id': parent.id,\n            'form-0-name': 'Josh Stone',\n            '_save': 'Save'\n        }\n\n        response = self.client.post('/test_admin/admin/admin_views/parent/', post)\n        children_names = list(Child.objects.order_by('name').values_list('name', flat=True))\n\n        self.assertEqual('Josh Stone', Parent.objects.latest('id').name)\n        self.assertEqual(['Catherine Stone', 'Paul Stone'], children_names)\n\n\n@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))\nclass AdminViewLogoutTest(TestCase):\n    urls = \"regressiontests.admin_views.urls\"\n    fixtures = ['admin-views-users.xml']\n\n    def setUp(self):\n        self.client.login(username='super', password='secret')\n\n    def tearDown(self):\n        self.client.logout()\n\n    def test_client_logout_url_can_be_used_to_login(self):\n        response = self.client.get('/test_admin/admin/logout/')\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.template_name, 'registration/logged_out.html')\n        self.assertEqual(response.request['PATH_INFO'], '/test_admin/admin/logout/')\n\n        # we are now logged out\n        response = self.client.get('/test_admin/admin/logout/')\n        self.assertEqual(response.status_code, 302)  # we should be redirected to the login page.\n\n        # follow the redirect and test results.\n        response = self.client.get('/test_admin/admin/logout/', follow=True)\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.template_name, 'admin/login.html')\n        self.assertEqual(response.request['PATH_INFO'], '/test_admin/admin/')\n        self.assertContains(response, '<input type=\"hidden\" name=\"next\" value=\"/test_admin/admin/\" />')\n\n\n@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))\nclass AdminUserMessageTest(TestCase):\n    urls = \"regressiontests.admin_views.urls\"\n    fixtures = ['admin-views-users.xml']\n\n    def setUp(self):\n        self.client.login(username='super', password='secret')\n\n    def tearDown(self):\n        self.client.logout()\n\n    def send_message(self, level):\n        \"\"\"\n        Helper that sends a post to the dummy test methods and asserts that a\n        message with the level has appeared in the response.\n        \"\"\"\n        action_data = {\n            ACTION_CHECKBOX_NAME: [1],\n            'action': 'message_%s' % level,\n            'index': 0,\n        }\n\n        response = self.client.post('/test_admin/admin/admin_views/usermessenger/',\n                                    action_data, follow=True)\n        self.assertContains(response,\n                            '<li class=\"%s\">Test %s</li>' % (level, level),\n                            html=True)\n\n    @override_settings(MESSAGE_LEVEL=10)  # Set to DEBUG for this request\n    def test_message_debug(self):\n        self.send_message('debug')\n\n    def test_message_info(self):\n        self.send_message('info')\n\n    def test_message_success(self):\n        self.send_message('success')\n\n    def test_message_warning(self):\n        self.send_message('warning')\n\n    def test_message_error(self):\n        self.send_message('error')\n\n    def test_message_extra_tags(self):\n        action_data = {\n            ACTION_CHECKBOX_NAME: [1],\n            'action': 'message_extra_tags',\n            'index': 0,\n        }\n\n        response = self.client.post('/test_admin/admin/admin_views/usermessenger/',\n                                    action_data, follow=True)\n        self.assertContains(response,\n                            '<li class=\"extra_tag info\">Test tags</li>',\n                            html=True)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_views/urls.py",
    "content": "from __future__ import absolute_import\n\nfrom django.conf.urls import patterns, include\n\nfrom . import views, customadmin, admin\n\n\nurlpatterns = patterns('',\n    (r'^test_admin/admin/doc/', include('django.contrib.admindocs.urls')),\n    (r'^test_admin/admin/secure-view/$', views.secure_view),\n    (r'^test_admin/admin/', include(admin.site.urls)),\n    (r'^test_admin/admin2/', include(customadmin.site.urls)),\n    (r'^test_admin/admin3/', include(admin.site.urls), dict(form_url='pony')),\n    (r'^test_admin/admin4/', include(customadmin.simple_site.urls)),\n)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_views/views.py",
    "content": "from django.contrib.admin.views.decorators import staff_member_required\nfrom django.http import HttpResponse\n\n@staff_member_required\ndef secure_view(request):\n    return HttpResponse('%s' % request.POST)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_widgets/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_widgets/fixtures/admin-widgets-users.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<django-objects version=\"1.0\">\n    <object pk=\"100\" model=\"auth.user\">\n        <field type=\"CharField\" name=\"username\">super</field>\n        <field type=\"CharField\" name=\"first_name\">Super</field>\n        <field type=\"CharField\" name=\"last_name\">User</field>\n        <field type=\"CharField\" name=\"email\">super@example.com</field>\n        <field type=\"CharField\" name=\"password\">sha1$995a3$6011485ea3834267d719b4c801409b8b1ddd0158</field>\n        <field type=\"BooleanField\" name=\"is_staff\">True</field>\n        <field type=\"BooleanField\" name=\"is_active\">True</field>\n        <field type=\"BooleanField\" name=\"is_superuser\">True</field>\n        <field type=\"DateTimeField\" name=\"last_login\">2007-05-30 13:20:10</field>\n        <field type=\"DateTimeField\" name=\"date_joined\">2007-05-30 13:20:10</field>\n        <field to=\"auth.group\" name=\"groups\" rel=\"ManyToManyRel\"></field>\n        <field to=\"auth.permission\" name=\"user_permissions\" rel=\"ManyToManyRel\"></field>\n    </object>\n    <object pk=\"101\" model=\"auth.user\">\n        <field type=\"CharField\" name=\"username\">testser</field>\n        <field type=\"CharField\" name=\"first_name\">Add</field>\n        <field type=\"CharField\" name=\"last_name\">User</field>\n        <field type=\"CharField\" name=\"email\">auser@example.com</field>\n        <field type=\"CharField\" name=\"password\">sha1$995a3$6011485ea3834267d719b4c801409b8b1ddd0158</field>\n        <field type=\"BooleanField\" name=\"is_staff\">True</field>\n        <field type=\"BooleanField\" name=\"is_active\">True</field>\n        <field type=\"BooleanField\" name=\"is_superuser\">False</field>\n        <field type=\"DateTimeField\" name=\"last_login\">2007-05-30 13:20:10</field>\n        <field type=\"DateTimeField\" name=\"date_joined\">2007-05-30 13:20:10</field>\n        <field to=\"auth.group\" name=\"groups\" rel=\"ManyToManyRel\"></field>\n        <field to=\"auth.permission\" name=\"user_permissions\" rel=\"ManyToManyRel\"></field>\n    </object>\n    \n    <object pk=\"1\" model=\"admin_widgets.car\">\n        <field to=\"auth.user\" name=\"owner\" rel=\"ManyToOneRel\">100</field>\n        <field type=\"CharField\" name=\"make\">Volkswagon</field>\n        <field type=\"CharField\" name=\"model\">Passat</field>\n    </object>\n    <object pk=\"2\" model=\"admin_widgets.car\">\n        <field to=\"auth.user\" name=\"owner\" rel=\"ManyToOneRel\">101</field>\n        <field type=\"CharField\" name=\"make\">BMW</field>\n        <field type=\"CharField\" name=\"model\">M3</field>\n    </object>\n\n</django-objects>"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_widgets/models.py",
    "content": "from __future__ import unicode_literals\n\nfrom django.db import models\nfrom django.contrib.auth.models import User\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\nclass MyFileField(models.FileField):\n    pass\n\n@python_2_unicode_compatible\nclass Member(models.Model):\n    name = models.CharField(max_length=100)\n    birthdate = models.DateTimeField(blank=True, null=True)\n    gender = models.CharField(max_length=1, blank=True, choices=[('M','Male'), ('F', 'Female')])\n\n    def __str__(self):\n        return self.name\n\n@python_2_unicode_compatible\nclass Band(models.Model):\n    name = models.CharField(max_length=100)\n    style = models.CharField(max_length=20)\n    members = models.ManyToManyField(Member)\n\n    def __str__(self):\n        return self.name\n\n@python_2_unicode_compatible\nclass Album(models.Model):\n    band = models.ForeignKey(Band)\n    name = models.CharField(max_length=100)\n    cover_art = models.FileField(upload_to='albums')\n    backside_art = MyFileField(upload_to='albums_back', null=True)\n\n    def __str__(self):\n        return self.name\n\nclass HiddenInventoryManager(models.Manager):\n    def get_query_set(self):\n        return super(HiddenInventoryManager, self).get_query_set().filter(hidden=False)\n\n@python_2_unicode_compatible\nclass Inventory(models.Model):\n   barcode = models.PositiveIntegerField(unique=True)\n   parent = models.ForeignKey('self', to_field='barcode', blank=True, null=True)\n   name = models.CharField(blank=False, max_length=20)\n   hidden = models.BooleanField(default=False)\n\n   # see #9258\n   default_manager = models.Manager()\n   objects = HiddenInventoryManager()\n\n   def __str__(self):\n      return self.name\n\nclass Event(models.Model):\n    band = models.ForeignKey(Band, limit_choices_to=models.Q(pk__gt=0))\n    start_date = models.DateField(blank=True, null=True)\n    start_time = models.TimeField(blank=True, null=True)\n    description = models.TextField(blank=True)\n    link = models.URLField(blank=True)\n    min_age = models.IntegerField(blank=True, null=True)\n\n@python_2_unicode_compatible\nclass Car(models.Model):\n    owner = models.ForeignKey(User)\n    make = models.CharField(max_length=30)\n    model = models.CharField(max_length=30)\n\n    def __str__(self):\n        return \"%s %s\" % (self.make, self.model)\n\nclass CarTire(models.Model):\n    \"\"\"\n    A single car tire. This to test that a user can only select their own cars.\n    \"\"\"\n    car = models.ForeignKey(Car)\n\nclass Honeycomb(models.Model):\n    location = models.CharField(max_length=20)\n\nclass Bee(models.Model):\n    \"\"\"\n    A model with a FK to a model that won't be registered with the admin\n    (Honeycomb) so the corresponding raw ID widget won't have a magnifying\n    glass link to select related honeycomb instances.\n    \"\"\"\n    honeycomb = models.ForeignKey(Honeycomb)\n\nclass Individual(models.Model):\n    \"\"\"\n    A model with a FK to itself. It won't be registered with the admin, so the\n    corresponding raw ID widget won't have a magnifying glass link to select\n    related instances (rendering will be called programmatically in this case).\n    \"\"\"\n    name = models.CharField(max_length=20)\n    parent = models.ForeignKey('self', null=True)\n\nclass Company(models.Model):\n    name = models.CharField(max_length=20)\n\nclass Advisor(models.Model):\n    \"\"\"\n    A model with a m2m to a model that won't be registered with the admin\n    (Company) so the corresponding raw ID widget won't have a magnifying\n    glass link to select related company instances.\n    \"\"\"\n    name = models.CharField(max_length=20)\n    companies = models.ManyToManyField(Company)\n\n\n@python_2_unicode_compatible\nclass Student(models.Model):\n    name = models.CharField(max_length=255)\n\n    def __str__(self):\n        return self.name\n\n    class Meta:\n        ordering = ('name',)\n\n@python_2_unicode_compatible\nclass School(models.Model):\n    name = models.CharField(max_length=255)\n    students = models.ManyToManyField(Student, related_name='current_schools')\n    alumni = models.ManyToManyField(Student, related_name='previous_schools')\n\n    def __str__(self):\n        return self.name\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_widgets/tests.py",
    "content": "# encoding: utf-8\nfrom __future__ import absolute_import, unicode_literals\n\nfrom datetime import datetime\n\nfrom django import forms\nfrom django.conf import settings\nfrom django.contrib import admin\nfrom django.contrib.admin import widgets\nfrom django.contrib.admin.tests import AdminSeleniumWebDriverTestCase\nfrom django.core.files.storage import default_storage\nfrom django.core.files.uploadedfile import SimpleUploadedFile\nfrom django.db.models import CharField, DateField\nfrom django.test import TestCase as DjangoTestCase\nfrom django.test.utils import override_settings\nfrom django.utils import translation\nfrom django.utils.html import conditional_escape\nfrom django.utils.unittest import TestCase\n\nfrom . import models\nfrom .widgetadmin import site as widget_admin_site\n\n\nadmin_static_prefix = lambda: {\n    'ADMIN_STATIC_PREFIX': \"%sadmin/\" % settings.STATIC_URL,\n}\n\nclass AdminFormfieldForDBFieldTests(TestCase):\n    \"\"\"\n    Tests for correct behavior of ModelAdmin.formfield_for_dbfield\n    \"\"\"\n\n    def assertFormfield(self, model, fieldname, widgetclass, **admin_overrides):\n        \"\"\"\n        Helper to call formfield_for_dbfield for a given model and field name\n        and verify that the returned formfield is appropriate.\n        \"\"\"\n        # Override any settings on the model admin\n        class MyModelAdmin(admin.ModelAdmin):\n            pass\n        for k in admin_overrides:\n            setattr(MyModelAdmin, k, admin_overrides[k])\n\n        # Construct the admin, and ask it for a formfield\n        ma = MyModelAdmin(model, admin.site)\n        ff = ma.formfield_for_dbfield(model._meta.get_field(fieldname), request=None)\n\n        # \"unwrap\" the widget wrapper, if needed\n        if isinstance(ff.widget, widgets.RelatedFieldWidgetWrapper):\n            widget = ff.widget.widget\n        else:\n            widget = ff.widget\n\n        # Check that we got a field of the right type\n        self.assertTrue(\n            isinstance(widget, widgetclass),\n            \"Wrong widget for %s.%s: expected %s, got %s\" % \\\n                (model.__class__.__name__, fieldname, widgetclass, type(widget))\n        )\n\n        # Return the formfield so that other tests can continue\n        return ff\n\n    def testDateField(self):\n        self.assertFormfield(models.Event, 'start_date', widgets.AdminDateWidget)\n\n    def testDateTimeField(self):\n        self.assertFormfield(models.Member, 'birthdate', widgets.AdminSplitDateTime)\n\n    def testTimeField(self):\n        self.assertFormfield(models.Event, 'start_time', widgets.AdminTimeWidget)\n\n    def testTextField(self):\n        self.assertFormfield(models.Event, 'description', widgets.AdminTextareaWidget)\n\n    def testURLField(self):\n        self.assertFormfield(models.Event, 'link', widgets.AdminURLFieldWidget)\n\n    def testIntegerField(self):\n        self.assertFormfield(models.Event, 'min_age', widgets.AdminIntegerFieldWidget)\n\n    def testCharField(self):\n        self.assertFormfield(models.Member, 'name', widgets.AdminTextInputWidget)\n\n    def testFileField(self):\n        self.assertFormfield(models.Album, 'cover_art', widgets.AdminFileWidget)\n\n    def testForeignKey(self):\n        self.assertFormfield(models.Event, 'band', forms.Select)\n\n    def testRawIDForeignKey(self):\n        self.assertFormfield(models.Event, 'band', widgets.ForeignKeyRawIdWidget,\n                             raw_id_fields=['band'])\n\n    def testRadioFieldsForeignKey(self):\n        ff = self.assertFormfield(models.Event, 'band', widgets.AdminRadioSelect,\n                                  radio_fields={'band':admin.VERTICAL})\n        self.assertEqual(ff.empty_label, None)\n\n    def testManyToMany(self):\n        self.assertFormfield(models.Band, 'members', forms.SelectMultiple)\n\n    def testRawIDManyTOMany(self):\n        self.assertFormfield(models.Band, 'members', widgets.ManyToManyRawIdWidget,\n                             raw_id_fields=['members'])\n\n    def testFilteredManyToMany(self):\n        self.assertFormfield(models.Band, 'members', widgets.FilteredSelectMultiple,\n                             filter_vertical=['members'])\n\n    def testFormfieldOverrides(self):\n        self.assertFormfield(models.Event, 'start_date', forms.TextInput,\n                             formfield_overrides={DateField: {'widget': forms.TextInput}})\n\n    def testFormfieldOverridesWidgetInstances(self):\n        \"\"\"\n        Test that widget instances in formfield_overrides are not shared between\n        different fields. (#19423)\n        \"\"\"\n        class BandAdmin(admin.ModelAdmin):\n            formfield_overrides = {\n                CharField: {'widget': forms.TextInput(attrs={'size':'10'})}\n            }\n        ma = BandAdmin(models.Band, admin.site)\n        f1 = ma.formfield_for_dbfield(models.Band._meta.get_field('name'), request=None)\n        f2 = ma.formfield_for_dbfield(models.Band._meta.get_field('style'), request=None)\n        self.assertNotEqual(f1.widget, f2.widget)\n        self.assertEqual(f1.widget.attrs['maxlength'], '100')\n        self.assertEqual(f2.widget.attrs['maxlength'], '20')\n        self.assertEqual(f2.widget.attrs['size'], '10')\n\n    def testFieldWithChoices(self):\n        self.assertFormfield(models.Member, 'gender', forms.Select)\n\n    def testChoicesWithRadioFields(self):\n        self.assertFormfield(models.Member, 'gender', widgets.AdminRadioSelect,\n                             radio_fields={'gender':admin.VERTICAL})\n\n    def testInheritance(self):\n        self.assertFormfield(models.Album, 'backside_art', widgets.AdminFileWidget)\n\n\n@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))\nclass AdminFormfieldForDBFieldWithRequestTests(DjangoTestCase):\n    fixtures = [\"admin-widgets-users.xml\"]\n\n    def testFilterChoicesByRequestUser(self):\n        \"\"\"\n        Ensure the user can only see their own cars in the foreign key dropdown.\n        \"\"\"\n        self.client.login(username=\"super\", password=\"secret\")\n        response = self.client.get(\"/widget_admin/admin_widgets/cartire/add/\")\n        self.assertNotContains(response, \"BMW M3\")\n        self.assertContains(response, \"Volkswagon Passat\")\n\n\n@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))\nclass AdminForeignKeyWidgetChangeList(DjangoTestCase):\n    fixtures = [\"admin-widgets-users.xml\"]\n    admin_root = '/widget_admin'\n\n    def setUp(self):\n        self.client.login(username=\"super\", password=\"secret\")\n\n    def tearDown(self):\n        self.client.logout()\n\n    def test_changelist_foreignkey(self):\n        response = self.client.get('%s/admin_widgets/car/' % self.admin_root)\n        self.assertContains(response, '%s/auth/user/add/' % self.admin_root)\n\n\n@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))\nclass AdminForeignKeyRawIdWidget(DjangoTestCase):\n    fixtures = [\"admin-widgets-users.xml\"]\n    admin_root = '/widget_admin'\n\n    def setUp(self):\n        self.client.login(username=\"super\", password=\"secret\")\n\n    def tearDown(self):\n        self.client.logout()\n\n    def test_nonexistent_target_id(self):\n        band = models.Band.objects.create(name='Bogey Blues')\n        pk = band.pk\n        band.delete()\n        post_data = {\n            \"band\": '%s' % pk,\n        }\n        # Try posting with a non-existent pk in a raw id field: this\n        # should result in an error message, not a server exception.\n        response = self.client.post('%s/admin_widgets/event/add/' % self.admin_root,\n            post_data)\n        self.assertContains(response,\n            'Select a valid choice. That choice is not one of the available choices.')\n\n    def test_invalid_target_id(self):\n\n        for test_str in ('Iñtërnâtiônàlizætiøn', \"1234'\", -1234):\n            # This should result in an error message, not a server exception.\n            response = self.client.post('%s/admin_widgets/event/add/' % self.admin_root,\n                {\"band\": test_str})\n\n            self.assertContains(response,\n                'Select a valid choice. That choice is not one of the available choices.')\n\n    def test_url_params_from_lookup_dict_any_iterable(self):\n        lookup1 = widgets.url_params_from_lookup_dict({'color__in': ('red', 'blue')})\n        lookup2 = widgets.url_params_from_lookup_dict({'color__in': ['red', 'blue']})\n        self.assertEqual(lookup1, {'color__in': 'red,blue'})\n        self.assertEqual(lookup1, lookup2)\n\n\nclass FilteredSelectMultipleWidgetTest(DjangoTestCase):\n    def test_render(self):\n        w = widgets.FilteredSelectMultiple('test', False)\n        self.assertHTMLEqual(\n            conditional_escape(w.render('test', 'test')),\n            '<select multiple=\"multiple\" name=\"test\" class=\"selectfilter\">\\n</select><script type=\"text/javascript\">addEvent(window, \"load\", function(e) {SelectFilter.init(\"id_test\", \"test\", 0, \"%(ADMIN_STATIC_PREFIX)s\"); });</script>\\n' % admin_static_prefix()\n        )\n\n    def test_stacked_render(self):\n        w = widgets.FilteredSelectMultiple('test', True)\n        self.assertHTMLEqual(\n            conditional_escape(w.render('test', 'test')),\n            '<select multiple=\"multiple\" name=\"test\" class=\"selectfilterstacked\">\\n</select><script type=\"text/javascript\">addEvent(window, \"load\", function(e) {SelectFilter.init(\"id_test\", \"test\", 1, \"%(ADMIN_STATIC_PREFIX)s\"); });</script>\\n' % admin_static_prefix()\n        )\n\nclass AdminDateWidgetTest(DjangoTestCase):\n    def test_attrs(self):\n        \"\"\"\n        Ensure that user-supplied attrs are used.\n        Refs #12073.\n        \"\"\"\n        w = widgets.AdminDateWidget()\n        self.assertHTMLEqual(\n            conditional_escape(w.render('test', datetime(2007, 12, 1, 9, 30))),\n            '<input value=\"2007-12-01\" type=\"text\" class=\"vDateField\" name=\"test\" size=\"10\" />',\n        )\n        # pass attrs to widget\n        w = widgets.AdminDateWidget(attrs={'size': 20, 'class': 'myDateField'})\n        self.assertHTMLEqual(\n            conditional_escape(w.render('test', datetime(2007, 12, 1, 9, 30))),\n            '<input value=\"2007-12-01\" type=\"text\" class=\"myDateField\" name=\"test\" size=\"20\" />',\n        )\n\nclass AdminTimeWidgetTest(DjangoTestCase):\n    def test_attrs(self):\n        \"\"\"\n        Ensure that user-supplied attrs are used.\n        Refs #12073.\n        \"\"\"\n        w = widgets.AdminTimeWidget()\n        self.assertHTMLEqual(\n            conditional_escape(w.render('test', datetime(2007, 12, 1, 9, 30))),\n            '<input value=\"09:30:00\" type=\"text\" class=\"vTimeField\" name=\"test\" size=\"8\" />',\n        )\n        # pass attrs to widget\n        w = widgets.AdminTimeWidget(attrs={'size': 20, 'class': 'myTimeField'})\n        self.assertHTMLEqual(\n            conditional_escape(w.render('test', datetime(2007, 12, 1, 9, 30))),\n            '<input value=\"09:30:00\" type=\"text\" class=\"myTimeField\" name=\"test\" size=\"20\" />',\n        )\n\nclass AdminSplitDateTimeWidgetTest(DjangoTestCase):\n    def test_render(self):\n        w = widgets.AdminSplitDateTime()\n        self.assertHTMLEqual(\n            conditional_escape(w.render('test', datetime(2007, 12, 1, 9, 30))),\n            '<p class=\"datetime\">Date: <input value=\"2007-12-01\" type=\"text\" class=\"vDateField\" name=\"test_0\" size=\"10\" /><br />Time: <input value=\"09:30:00\" type=\"text\" class=\"vTimeField\" name=\"test_1\" size=\"8\" /></p>',\n        )\n\n    def test_localization(self):\n        w = widgets.AdminSplitDateTime()\n\n        with self.settings(USE_L10N=True):\n            with translation.override('de-at'):\n                w.is_localized = True\n                self.assertHTMLEqual(\n                    conditional_escape(w.render('test', datetime(2007, 12, 1, 9, 30))),\n                    '<p class=\"datetime\">Datum: <input value=\"01.12.2007\" type=\"text\" class=\"vDateField\" name=\"test_0\" size=\"10\" /><br />Zeit: <input value=\"09:30:00\" type=\"text\" class=\"vTimeField\" name=\"test_1\" size=\"8\" /></p>',\n                )\n\n\nclass AdminURLWidgetTest(DjangoTestCase):\n    def test_render(self):\n        w = widgets.AdminURLFieldWidget()\n        self.assertHTMLEqual(\n            conditional_escape(w.render('test', '')),\n            '<input class=\"vURLField\" name=\"test\" type=\"text\" />'\n        )\n        self.assertHTMLEqual(\n            conditional_escape(w.render('test', 'http://example.com')),\n            '<p class=\"url\">Currently:<a href=\"http://example.com\">http://example.com</a><br />Change:<input class=\"vURLField\" name=\"test\" type=\"text\" value=\"http://example.com\" /></p>'\n        )\n\n    def test_render_idn(self):\n        w = widgets.AdminURLFieldWidget()\n        self.assertHTMLEqual(\n            conditional_escape(w.render('test', 'http://example-äüö.com')),\n            '<p class=\"url\">Currently:<a href=\"http://xn--example--7za4pnc.com\">http://example-äüö.com</a><br />Change:<input class=\"vURLField\" name=\"test\" type=\"text\" value=\"http://example-äüö.com\" /></p>'\n        )\n\n    def test_render_quoting(self):\n        w = widgets.AdminURLFieldWidget()\n        self.assertHTMLEqual(\n            conditional_escape(w.render('test', 'http://example.com/<sometag>some text</sometag>')),\n            '<p class=\"url\">Currently:<a href=\"http://example.com/%3Csometag%3Esome%20text%3C/sometag%3E\">http://example.com/&lt;sometag&gt;some text&lt;/sometag&gt;</a><br />Change:<input class=\"vURLField\" name=\"test\" type=\"text\" value=\"http://example.com/<sometag>some text</sometag>\" /></p>'\n        )\n        self.assertHTMLEqual(\n            conditional_escape(w.render('test', 'http://example-äüö.com/<sometag>some text</sometag>')),\n            '<p class=\"url\">Currently:<a href=\"http://xn--example--7za4pnc.com/%3Csometag%3Esome%20text%3C/sometag%3E\">http://example-äüö.com/&lt;sometag&gt;some text&lt;/sometag&gt;</a><br />Change:<input class=\"vURLField\" name=\"test\" type=\"text\" value=\"http://example-äüö.com/<sometag>some text</sometag>\" /></p>'\n        )\n\n\nclass AdminFileWidgetTest(DjangoTestCase):\n    def test_render(self):\n        band = models.Band.objects.create(name='Linkin Park')\n        album = band.album_set.create(\n            name='Hybrid Theory', cover_art=r'albums\\hybrid_theory.jpg'\n        )\n\n        w = widgets.AdminFileWidget()\n        self.assertHTMLEqual(\n            conditional_escape(w.render('test', album.cover_art)),\n            '<p class=\"file-upload\">Currently: <a href=\"%(STORAGE_URL)salbums/hybrid_theory.jpg\">albums\\hybrid_theory.jpg</a> <span class=\"clearable-file-input\"><input type=\"checkbox\" name=\"test-clear\" id=\"test-clear_id\" /> <label for=\"test-clear_id\">Clear</label></span><br />Change: <input type=\"file\" name=\"test\" /></p>' % { 'STORAGE_URL': default_storage.url('') },\n        )\n\n        self.assertHTMLEqual(\n            conditional_escape(w.render('test', SimpleUploadedFile('test', b'content'))),\n            '<input type=\"file\" name=\"test\" />',\n        )\n\n\nclass ForeignKeyRawIdWidgetTest(DjangoTestCase):\n    def test_render(self):\n        band = models.Band.objects.create(name='Linkin Park')\n        band.album_set.create(\n            name='Hybrid Theory', cover_art=r'albums\\hybrid_theory.jpg'\n        )\n        rel = models.Album._meta.get_field('band').rel\n\n        w = widgets.ForeignKeyRawIdWidget(rel, widget_admin_site)\n        self.assertHTMLEqual(\n            conditional_escape(w.render('test', band.pk, attrs={})),\n            '<input type=\"text\" name=\"test\" value=\"%(bandpk)s\" class=\"vForeignKeyRawIdAdminField\" /><a href=\"/widget_admin/admin_widgets/band/?t=id\" class=\"related-lookup\" id=\"lookup_id_test\" onclick=\"return showRelatedObjectLookupPopup(this);\"> <img src=\"%(ADMIN_STATIC_PREFIX)simg/selector-search.gif\" width=\"16\" height=\"16\" alt=\"Lookup\" /></a>&nbsp;<strong>Linkin Park</strong>' % dict(admin_static_prefix(), bandpk=band.pk)\n        )\n\n    def test_relations_to_non_primary_key(self):\n        # Check that ForeignKeyRawIdWidget works with fields which aren't\n        # related to the model's primary key.\n        apple = models.Inventory.objects.create(barcode=86, name='Apple')\n        models.Inventory.objects.create(barcode=22, name='Pear')\n        core = models.Inventory.objects.create(\n            barcode=87, name='Core', parent=apple\n        )\n        rel = models.Inventory._meta.get_field('parent').rel\n        w = widgets.ForeignKeyRawIdWidget(rel, widget_admin_site)\n        self.assertHTMLEqual(\n            w.render('test', core.parent_id, attrs={}),\n            '<input type=\"text\" name=\"test\" value=\"86\" class=\"vForeignKeyRawIdAdminField\" /><a href=\"/widget_admin/admin_widgets/inventory/?t=barcode\" class=\"related-lookup\" id=\"lookup_id_test\" onclick=\"return showRelatedObjectLookupPopup(this);\"> <img src=\"%(ADMIN_STATIC_PREFIX)simg/selector-search.gif\" width=\"16\" height=\"16\" alt=\"Lookup\" /></a>&nbsp;<strong>Apple</strong>' % admin_static_prefix()\n        )\n\n    def test_fk_related_model_not_in_admin(self):\n        # FK to a model not registered with admin site. Raw ID widget should\n        # have no magnifying glass link. See #16542\n        big_honeycomb = models.Honeycomb.objects.create(location='Old tree')\n        big_honeycomb.bee_set.create()\n        rel = models.Bee._meta.get_field('honeycomb').rel\n\n        w = widgets.ForeignKeyRawIdWidget(rel, widget_admin_site)\n        self.assertHTMLEqual(\n            conditional_escape(w.render('honeycomb_widget', big_honeycomb.pk, attrs={})),\n            '<input type=\"text\" name=\"honeycomb_widget\" value=\"%(hcombpk)s\" />&nbsp;<strong>Honeycomb object</strong>' % {'hcombpk': big_honeycomb.pk}\n        )\n\n    def test_fk_to_self_model_not_in_admin(self):\n        # FK to self, not registered with admin site. Raw ID widget should have\n        # no magnifying glass link. See #16542\n        subject1 = models.Individual.objects.create(name='Subject #1')\n        models.Individual.objects.create(name='Child', parent=subject1)\n        rel = models.Individual._meta.get_field('parent').rel\n\n        w = widgets.ForeignKeyRawIdWidget(rel, widget_admin_site)\n        self.assertHTMLEqual(\n            conditional_escape(w.render('individual_widget', subject1.pk, attrs={})),\n            '<input type=\"text\" name=\"individual_widget\" value=\"%(subj1pk)s\" />&nbsp;<strong>Individual object</strong>' % {'subj1pk': subject1.pk}\n        )\n\n    def test_proper_manager_for_label_lookup(self):\n        # see #9258\n        rel = models.Inventory._meta.get_field('parent').rel\n        w = widgets.ForeignKeyRawIdWidget(rel, widget_admin_site)\n\n        hidden = models.Inventory.objects.create(\n            barcode=93, name='Hidden', hidden=True\n        )\n        child_of_hidden = models.Inventory.objects.create(\n            barcode=94, name='Child of hidden', parent=hidden\n        )\n        self.assertHTMLEqual(\n            w.render('test', child_of_hidden.parent_id, attrs={}),\n            '<input type=\"text\" name=\"test\" value=\"93\" class=\"vForeignKeyRawIdAdminField\" /><a href=\"/widget_admin/admin_widgets/inventory/?t=barcode\" class=\"related-lookup\" id=\"lookup_id_test\" onclick=\"return showRelatedObjectLookupPopup(this);\"> <img src=\"%(ADMIN_STATIC_PREFIX)simg/selector-search.gif\" width=\"16\" height=\"16\" alt=\"Lookup\" /></a>&nbsp;<strong>Hidden</strong>' % admin_static_prefix()\n        )\n\n\nclass ManyToManyRawIdWidgetTest(DjangoTestCase):\n    def test_render(self):\n        band = models.Band.objects.create(name='Linkin Park')\n\n        m1 = models.Member.objects.create(name='Chester')\n        m2 = models.Member.objects.create(name='Mike')\n        band.members.add(m1, m2)\n        rel = models.Band._meta.get_field('members').rel\n\n        w = widgets.ManyToManyRawIdWidget(rel, widget_admin_site)\n        self.assertHTMLEqual(\n            conditional_escape(w.render('test', [m1.pk, m2.pk], attrs={})),\n            '<input type=\"text\" name=\"test\" value=\"%(m1pk)s,%(m2pk)s\" class=\"vManyToManyRawIdAdminField\" /><a href=\"/widget_admin/admin_widgets/member/\" class=\"related-lookup\" id=\"lookup_id_test\" onclick=\"return showRelatedObjectLookupPopup(this);\"> <img src=\"/static/admin/img/selector-search.gif\" width=\"16\" height=\"16\" alt=\"Lookup\" /></a>' % dict(admin_static_prefix(), m1pk=m1.pk, m2pk=m2.pk)\n        )\n\n        self.assertHTMLEqual(\n            conditional_escape(w.render('test', [m1.pk])),\n            '<input type=\"text\" name=\"test\" value=\"%(m1pk)s\" class=\"vManyToManyRawIdAdminField\" /><a href=\"/widget_admin/admin_widgets/member/\" class=\"related-lookup\" id=\"lookup_id_test\" onclick=\"return showRelatedObjectLookupPopup(this);\"> <img src=\"%(ADMIN_STATIC_PREFIX)simg/selector-search.gif\" width=\"16\" height=\"16\" alt=\"Lookup\" /></a>' % dict(admin_static_prefix(), m1pk=m1.pk)\n        )\n\n        self.assertEqual(w._has_changed(None, None), False)\n        self.assertEqual(w._has_changed([], None), False)\n        self.assertEqual(w._has_changed(None, ['1']), True)\n        self.assertEqual(w._has_changed([1, 2], ['1', '2']), False)\n        self.assertEqual(w._has_changed([1, 2], ['1']), True)\n        self.assertEqual(w._has_changed([1, 2], ['1', '3']), True)\n\n    def test_m2m_related_model_not_in_admin(self):\n        # M2M relationship with model not registered with admin site. Raw ID\n        # widget should have no magnifying glass link. See #16542\n        consultor1 = models.Advisor.objects.create(name='Rockstar Techie')\n\n        c1 = models.Company.objects.create(name='Doodle')\n        c2 = models.Company.objects.create(name='Pear')\n        consultor1.companies.add(c1, c2)\n        rel = models.Advisor._meta.get_field('companies').rel\n\n        w = widgets.ManyToManyRawIdWidget(rel, widget_admin_site)\n        self.assertHTMLEqual(\n            conditional_escape(w.render('company_widget1', [c1.pk, c2.pk], attrs={})),\n            '<input type=\"text\" name=\"company_widget1\" value=\"%(c1pk)s,%(c2pk)s\" />' % {'c1pk': c1.pk, 'c2pk': c2.pk}\n        )\n\n        self.assertHTMLEqual(\n            conditional_escape(w.render('company_widget2', [c1.pk])),\n            '<input type=\"text\" name=\"company_widget2\" value=\"%(c1pk)s\" />' % {'c1pk': c1.pk}\n        )\n\nclass RelatedFieldWidgetWrapperTests(DjangoTestCase):\n    def test_no_can_add_related(self):\n        rel = models.Individual._meta.get_field('parent').rel\n        w = widgets.AdminRadioSelect()\n        # Used to fail with a name error.\n        w = widgets.RelatedFieldWidgetWrapper(w, rel, widget_admin_site)\n        self.assertFalse(w.can_add_related)\n\n\n\n@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))\nclass DateTimePickerSeleniumFirefoxTests(AdminSeleniumWebDriverTestCase):\n    webdriver_class = 'selenium.webdriver.firefox.webdriver.WebDriver'\n    fixtures = ['admin-widgets-users.xml']\n    urls = \"regressiontests.admin_widgets.urls\"\n\n    def test_show_hide_date_time_picker_widgets(self):\n        \"\"\"\n        Ensure that pressing the ESC key closes the date and time picker\n        widgets.\n        Refs #17064.\n        \"\"\"\n        from selenium.webdriver.common.keys import Keys\n\n        self.admin_login(username='super', password='secret', login_url='/')\n        # Open a page that has a date and time picker widgets\n        self.selenium.get('%s%s' % (self.live_server_url,\n            '/admin_widgets/member/add/'))\n\n        # First, with the date picker widget ---------------------------------\n        # Check that the date picker is hidden\n        self.assertEqual(\n            self.get_css_value('#calendarbox0', 'display'), 'none')\n        # Click the calendar icon\n        self.selenium.find_element_by_id('calendarlink0').click()\n        # Check that the date picker is visible\n        self.assertEqual(\n            self.get_css_value('#calendarbox0', 'display'), 'block')\n        # Press the ESC key\n        self.selenium.find_element_by_tag_name('body').send_keys([Keys.ESCAPE])\n        # Check that the date picker is hidden again\n        self.assertEqual(\n            self.get_css_value('#calendarbox0', 'display'), 'none')\n\n        # Then, with the time picker widget ----------------------------------\n        # Check that the time picker is hidden\n        self.assertEqual(\n            self.get_css_value('#clockbox0', 'display'), 'none')\n        # Click the time icon\n        self.selenium.find_element_by_id('clocklink0').click()\n        # Check that the time picker is visible\n        self.assertEqual(\n            self.get_css_value('#clockbox0', 'display'), 'block')\n        # Press the ESC key\n        self.selenium.find_element_by_tag_name('body').send_keys([Keys.ESCAPE])\n        # Check that the time picker is hidden again\n        self.assertEqual(\n            self.get_css_value('#clockbox0', 'display'), 'none')\n\nclass DateTimePickerSeleniumChromeTests(DateTimePickerSeleniumFirefoxTests):\n    webdriver_class = 'selenium.webdriver.chrome.webdriver.WebDriver'\n\nclass DateTimePickerSeleniumIETests(DateTimePickerSeleniumFirefoxTests):\n    webdriver_class = 'selenium.webdriver.ie.webdriver.WebDriver'\n\n\n@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))\nclass HorizontalVerticalFilterSeleniumFirefoxTests(AdminSeleniumWebDriverTestCase):\n    webdriver_class = 'selenium.webdriver.firefox.webdriver.WebDriver'\n    fixtures = ['admin-widgets-users.xml']\n    urls = \"regressiontests.admin_widgets.urls\"\n\n    def setUp(self):\n        self.lisa = models.Student.objects.create(name='Lisa')\n        self.john = models.Student.objects.create(name='John')\n        self.bob = models.Student.objects.create(name='Bob')\n        self.peter = models.Student.objects.create(name='Peter')\n        self.jenny = models.Student.objects.create(name='Jenny')\n        self.jason = models.Student.objects.create(name='Jason')\n        self.cliff = models.Student.objects.create(name='Cliff')\n        self.arthur = models.Student.objects.create(name='Arthur')\n        self.school = models.School.objects.create(name='School of Awesome')\n        super(HorizontalVerticalFilterSeleniumFirefoxTests, self).setUp()\n\n    def assertActiveButtons(self, mode, field_name, choose, remove,\n                             choose_all=None, remove_all=None):\n        choose_link = '#id_%s_add_link' % field_name\n        choose_all_link = '#id_%s_add_all_link' % field_name\n        remove_link = '#id_%s_remove_link' % field_name\n        remove_all_link = '#id_%s_remove_all_link' % field_name\n        self.assertEqual(self.has_css_class(choose_link, 'active'), choose)\n        self.assertEqual(self.has_css_class(remove_link, 'active'), remove)\n        if mode == 'horizontal':\n            self.assertEqual(self.has_css_class(choose_all_link, 'active'), choose_all)\n            self.assertEqual(self.has_css_class(remove_all_link, 'active'), remove_all)\n\n    def execute_basic_operations(self, mode, field_name):\n        from_box = '#id_%s_from' % field_name\n        to_box = '#id_%s_to' % field_name\n        choose_link = 'id_%s_add_link' % field_name\n        choose_all_link = 'id_%s_add_all_link' % field_name\n        remove_link = 'id_%s_remove_link' % field_name\n        remove_all_link = 'id_%s_remove_all_link' % field_name\n\n        # Initial positions ---------------------------------------------------\n        self.assertSelectOptions(from_box,\n                        [str(self.arthur.id), str(self.bob.id),\n                         str(self.cliff.id), str(self.jason.id),\n                         str(self.jenny.id), str(self.john.id)])\n        self.assertSelectOptions(to_box,\n                        [str(self.lisa.id), str(self.peter.id)])\n        self.assertActiveButtons(mode, field_name, False, False, True, True)\n\n        # Click 'Choose all' --------------------------------------------------\n        if mode == 'horizontal':\n            self.selenium.find_element_by_id(choose_all_link).click()\n        elif mode == 'vertical':\n            # There 's no 'Choose all' button in vertical mode, so individually\n            # select all options and click 'Choose'.\n            for option in self.selenium.find_elements_by_css_selector(from_box + ' > option'):\n                option.click()\n            self.selenium.find_element_by_id(choose_link).click()\n        self.assertSelectOptions(from_box, [])\n        self.assertSelectOptions(to_box,\n                        [str(self.lisa.id), str(self.peter.id),\n                         str(self.arthur.id), str(self.bob.id),\n                         str(self.cliff.id), str(self.jason.id),\n                         str(self.jenny.id), str(self.john.id)])\n        self.assertActiveButtons(mode, field_name, False, False, False, True)\n\n        # Click 'Remove all' --------------------------------------------------\n        if mode == 'horizontal':\n            self.selenium.find_element_by_id(remove_all_link).click()\n        elif mode == 'vertical':\n            # There 's no 'Remove all' button in vertical mode, so individually\n            # select all options and click 'Remove'.\n            for option in self.selenium.find_elements_by_css_selector(to_box + ' > option'):\n                option.click()\n            self.selenium.find_element_by_id(remove_link).click()\n        self.assertSelectOptions(from_box,\n                        [str(self.lisa.id), str(self.peter.id),\n                         str(self.arthur.id), str(self.bob.id),\n                         str(self.cliff.id), str(self.jason.id),\n                         str(self.jenny.id), str(self.john.id)])\n        self.assertSelectOptions(to_box, [])\n        self.assertActiveButtons(mode, field_name, False, False, True, False)\n\n        # Choose some options ------------------------------------------------\n        self.get_select_option(from_box, str(self.lisa.id)).click()\n        self.get_select_option(from_box, str(self.jason.id)).click()\n        self.get_select_option(from_box, str(self.bob.id)).click()\n        self.get_select_option(from_box, str(self.john.id)).click()\n        self.assertActiveButtons(mode, field_name, True, False, True, False)\n        self.selenium.find_element_by_id(choose_link).click()\n        self.assertActiveButtons(mode, field_name, False, False, True, True)\n\n        self.assertSelectOptions(from_box,\n                        [str(self.peter.id), str(self.arthur.id),\n                         str(self.cliff.id), str(self.jenny.id)])\n        self.assertSelectOptions(to_box,\n                        [str(self.lisa.id), str(self.bob.id),\n                         str(self.jason.id), str(self.john.id)])\n\n        # Remove some options -------------------------------------------------\n        self.get_select_option(to_box, str(self.lisa.id)).click()\n        self.get_select_option(to_box, str(self.bob.id)).click()\n        self.assertActiveButtons(mode, field_name, False, True, True, True)\n        self.selenium.find_element_by_id(remove_link).click()\n        self.assertActiveButtons(mode, field_name, False, False, True, True)\n\n        self.assertSelectOptions(from_box,\n                        [str(self.peter.id), str(self.arthur.id),\n                         str(self.cliff.id), str(self.jenny.id),\n                         str(self.lisa.id), str(self.bob.id)])\n        self.assertSelectOptions(to_box,\n                        [str(self.jason.id), str(self.john.id)])\n\n        # Choose some more options --------------------------------------------\n        self.get_select_option(from_box, str(self.arthur.id)).click()\n        self.get_select_option(from_box, str(self.cliff.id)).click()\n        self.selenium.find_element_by_id(choose_link).click()\n\n        self.assertSelectOptions(from_box,\n                        [str(self.peter.id), str(self.jenny.id),\n                         str(self.lisa.id), str(self.bob.id)])\n        self.assertSelectOptions(to_box,\n                        [str(self.jason.id), str(self.john.id),\n                         str(self.arthur.id), str(self.cliff.id)])\n\n    def test_basic(self):\n        self.school.students = [self.lisa, self.peter]\n        self.school.alumni = [self.lisa, self.peter]\n        self.school.save()\n\n        self.admin_login(username='super', password='secret', login_url='/')\n        self.selenium.get(\n            '%s%s' % (self.live_server_url, '/admin_widgets/school/%s/' % self.school.id))\n\n        self.wait_page_loaded()\n        self.execute_basic_operations('vertical', 'students')\n        self.execute_basic_operations('horizontal', 'alumni')\n\n        # Save and check that everything is properly stored in the database ---\n        self.selenium.find_element_by_xpath('//input[@value=\"Save\"]').click()\n        self.wait_page_loaded()\n        self.school = models.School.objects.get(id=self.school.id)  # Reload from database\n        self.assertEqual(list(self.school.students.all()),\n                         [self.arthur, self.cliff, self.jason, self.john])\n        self.assertEqual(list(self.school.alumni.all()),\n                         [self.arthur, self.cliff, self.jason, self.john])\n\n    def test_filter(self):\n        \"\"\"\n        Ensure that typing in the search box filters out options displayed in\n        the 'from' box.\n        \"\"\"\n        from selenium.webdriver.common.keys import Keys\n\n        self.school.students = [self.lisa, self.peter]\n        self.school.alumni = [self.lisa, self.peter]\n        self.school.save()\n\n        self.admin_login(username='super', password='secret', login_url='/')\n        self.selenium.get(\n            '%s%s' % (self.live_server_url, '/admin_widgets/school/%s/' % self.school.id))\n\n\n        for field_name in ['students', 'alumni']:\n            from_box = '#id_%s_from' % field_name\n            to_box = '#id_%s_to' % field_name\n            choose_link = '#id_%s_add_link' % field_name\n            remove_link = '#id_%s_remove_link' % field_name\n            input = self.selenium.find_element_by_css_selector('#id_%s_input' % field_name)\n\n            # Initial values\n            self.assertSelectOptions(from_box,\n                        [str(self.arthur.id), str(self.bob.id),\n                         str(self.cliff.id), str(self.jason.id),\n                         str(self.jenny.id), str(self.john.id)])\n\n            # Typing in some characters filters out non-matching options\n            input.send_keys('a')\n            self.assertSelectOptions(from_box, [str(self.arthur.id), str(self.jason.id)])\n            input.send_keys('R')\n            self.assertSelectOptions(from_box, [str(self.arthur.id)])\n\n            # Clearing the text box makes the other options reappear\n            input.send_keys([Keys.BACK_SPACE])\n            self.assertSelectOptions(from_box, [str(self.arthur.id), str(self.jason.id)])\n            input.send_keys([Keys.BACK_SPACE])\n            self.assertSelectOptions(from_box,\n                        [str(self.arthur.id), str(self.bob.id),\n                         str(self.cliff.id), str(self.jason.id),\n                         str(self.jenny.id), str(self.john.id)])\n\n            # -----------------------------------------------------------------\n            # Check that chosing a filtered option sends it properly to the\n            # 'to' box.\n            input.send_keys('a')\n            self.assertSelectOptions(from_box, [str(self.arthur.id), str(self.jason.id)])\n            self.get_select_option(from_box, str(self.jason.id)).click()\n            self.selenium.find_element_by_css_selector(choose_link).click()\n            self.assertSelectOptions(from_box, [str(self.arthur.id)])\n            self.assertSelectOptions(to_box,\n                        [str(self.lisa.id), str(self.peter.id),\n                         str(self.jason.id)])\n\n            self.get_select_option(to_box, str(self.lisa.id)).click()\n            self.selenium.find_element_by_css_selector(remove_link).click()\n            self.assertSelectOptions(from_box,\n                        [str(self.arthur.id), str(self.lisa.id)])\n            self.assertSelectOptions(to_box,\n                        [str(self.peter.id), str(self.jason.id)])\n\n            input.send_keys([Keys.BACK_SPACE]) # Clear text box\n            self.assertSelectOptions(from_box,\n                        [str(self.arthur.id), str(self.bob.id),\n                         str(self.cliff.id), str(self.jenny.id),\n                         str(self.john.id), str(self.lisa.id)])\n            self.assertSelectOptions(to_box,\n                        [str(self.peter.id), str(self.jason.id)])\n\n        # Save and check that everything is properly stored in the database ---\n        self.selenium.find_element_by_xpath('//input[@value=\"Save\"]').click()\n        self.wait_page_loaded()\n        self.school = models.School.objects.get(id=self.school.id) # Reload from database\n        self.assertEqual(list(self.school.students.all()),\n                         [self.jason, self.peter])\n        self.assertEqual(list(self.school.alumni.all()),\n                         [self.jason, self.peter])\n\nclass HorizontalVerticalFilterSeleniumChromeTests(HorizontalVerticalFilterSeleniumFirefoxTests):\n    webdriver_class = 'selenium.webdriver.chrome.webdriver.WebDriver'\n\nclass HorizontalVerticalFilterSeleniumIETests(HorizontalVerticalFilterSeleniumFirefoxTests):\n    webdriver_class = 'selenium.webdriver.ie.webdriver.WebDriver'\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_widgets/urls.py",
    "content": "from __future__ import absolute_import\n\nfrom django.conf.urls import patterns, include\n\nfrom . import  widgetadmin\n\n\nurlpatterns = patterns('',\n    (r'^', include(widgetadmin.site.urls)),\n)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/admin_widgets/widgetadmin.py",
    "content": "\"\"\"\n\n\"\"\"\nfrom __future__ import absolute_import\n\nfrom django.contrib import admin\n\nfrom . import models\n\n\nclass WidgetAdmin(admin.AdminSite):\n    pass\n\nclass CarAdmin(admin.ModelAdmin):\n    list_display = ['make', 'model', 'owner']\n    list_editable = ['owner']\n\nclass CarTireAdmin(admin.ModelAdmin):\n    def formfield_for_foreignkey(self, db_field, request, **kwargs):\n        if db_field.name == \"car\":\n            kwargs[\"queryset\"] = models.Car.objects.filter(owner=request.user)\n            return db_field.formfield(**kwargs)\n        return super(CarTireAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)\n\nclass EventAdmin(admin.ModelAdmin):\n    raw_id_fields = ['band']\n\n\nclass SchoolAdmin(admin.ModelAdmin):\n    filter_vertical = ('students',)\n    filter_horizontal = ('alumni',)\n\nsite = WidgetAdmin(name='widget-admin')\n\nsite.register(models.User)\nsite.register(models.Car, CarAdmin)\nsite.register(models.CarTire, CarTireAdmin)\n\nsite.register(models.Member)\nsite.register(models.Band)\nsite.register(models.Event, EventAdmin)\nsite.register(models.Album)\n\nsite.register(models.Inventory)\n\nsite.register(models.Bee)\n\nsite.register(models.Advisor)\n\nsite.register(models.School, SchoolAdmin)"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/aggregation_regress/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/aggregation_regress/fixtures/aggregation_regress.json",
    "content": "[\n    {\n        \"pk\": 1,\n        \"model\": \"aggregation_regress.publisher\",\n        \"fields\": {\n            \"name\": \"Apress\",\n            \"num_awards\": 3\n        }\n    },\n    {\n        \"pk\": 2,\n        \"model\": \"aggregation_regress.publisher\",\n        \"fields\": {\n            \"name\": \"Sams\",\n            \"num_awards\": 1\n        }\n    },\n    {\n        \"pk\": 3,\n        \"model\": \"aggregation_regress.publisher\",\n        \"fields\": {\n            \"name\": \"Prentice Hall\",\n            \"num_awards\": 7\n        }\n    },\n    {\n        \"pk\": 4,\n        \"model\": \"aggregation_regress.publisher\",\n        \"fields\": {\n            \"name\": \"Morgan Kaufmann\",\n            \"num_awards\": 9\n        }\n    },\n    {\n        \"pk\": 5,\n        \"model\": \"aggregation_regress.publisher\",\n        \"fields\": {\n            \"name\": \"Jonno's House of Books\",\n            \"num_awards\": 0\n        }\n    },\n    {\n        \"pk\": 1,\n        \"model\": \"aggregation_regress.book\",\n        \"fields\": {\n            \"publisher\": 1,\n            \"isbn\": \"159059725\",\n            \"name\": \"The Definitive Guide to Django: Web Development Done Right\",\n            \"price\": \"30.00\",\n            \"rating\": 4.5,\n            \"authors\": [1, 2],\n            \"contact\": 1,\n            \"pages\": 447,\n            \"pubdate\": \"2007-12-6\"\n        }\n    },\n    {\n        \"pk\": 2,\n        \"model\": \"aggregation_regress.book\",\n        \"fields\": {\n            \"publisher\": 2,\n            \"isbn\": \"067232959\",\n            \"name\": \"Sams Teach Yourself Django in 24 Hours\",\n            \"price\": \"23.09\",\n            \"rating\": 3.0,\n            \"authors\": [3],\n            \"contact\": 3,\n            \"pages\": 528,\n            \"pubdate\": \"2008-3-3\"\n        }\n    },\n    {\n        \"pk\": 3,\n        \"model\": \"aggregation_regress.book\",\n        \"fields\": {\n            \"publisher\": 1,\n            \"isbn\": \"159059996\",\n            \"name\": \"Practical Django Projects\",\n            \"price\": \"29.69\",\n            \"rating\": 4.0,\n            \"authors\": [4],\n            \"contact\": 4,\n            \"pages\": 300,\n            \"pubdate\": \"2008-6-23\"\n        }\n    },\n    {\n        \"pk\": 4,\n        \"model\": \"aggregation_regress.book\",\n        \"fields\": {\n            \"publisher\": 3,\n            \"isbn\": \"013235613\",\n            \"name\": \"Python Web Development with Django\",\n            \"price\": \"29.69\",\n            \"rating\": 4.0,\n            \"authors\": [5, 6, 7],\n            \"contact\": 5,\n            \"pages\": 350,\n            \"pubdate\": \"2008-11-3\"\n        }\n    },\n    {\n        \"pk\": 5,\n        \"model\": \"aggregation_regress.book\",\n        \"fields\": {\n            \"publisher\": 3,\n            \"isbn\": \"013790395\",\n            \"name\": \"Artificial Intelligence: A Modern Approach\",\n            \"price\": \"82.80\",\n            \"rating\": 4.0,\n            \"authors\": [8, 9],\n            \"contact\": 8,\n            \"pages\": 1132,\n            \"pubdate\": \"1995-1-15\"\n        }\n    },\n    {\n        \"pk\": 6,\n        \"model\": \"aggregation_regress.book\",\n        \"fields\": {\n            \"publisher\": 4,\n            \"isbn\": \"155860191\",\n            \"name\": \"Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp\",\n            \"price\": \"75.00\",\n            \"rating\": 5.0,\n            \"authors\": [8],\n            \"contact\": 8,\n            \"pages\": 946,\n            \"pubdate\": \"1991-10-15\"\n        }\n    },\n    {\n        \"pk\": 1,\n        \"model\": \"aggregation_regress.store\",\n        \"fields\": {\n            \"books\": [1, 2, 3, 4, 5, 6],\n            \"name\": \"Amazon.com\",\n            \"original_opening\": \"1994-4-23 9:17:42\",\n            \"friday_night_closing\": \"23:59:59\"\n        }\n    },\n    {\n        \"pk\": 2,\n        \"model\": \"aggregation_regress.store\",\n        \"fields\": {\n            \"books\": [1, 3, 5, 6],\n            \"name\": \"Books.com\",\n            \"original_opening\": \"2001-3-15 11:23:37\",\n            \"friday_night_closing\": \"23:59:59\"\n        }\n    },\n    {\n        \"pk\": 3,\n        \"model\": \"aggregation_regress.store\",\n        \"fields\": {\n            \"books\": [3, 4, 6],\n            \"name\": \"Mamma and Pappa's Books\",\n            \"original_opening\": \"1945-4-25 16:24:14\",\n            \"friday_night_closing\": \"21:30:00\"\n        }\n    },\n    {\n        \"pk\": 1,\n        \"model\": \"aggregation_regress.author\",\n        \"fields\": {\n            \"age\": 34,\n            \"friends\": [2, 4],\n            \"name\": \"Adrian Holovaty\"\n        }\n    },\n    {\n        \"pk\": 2,\n        \"model\": \"aggregation_regress.author\",\n        \"fields\": {\n            \"age\": 35,\n            \"friends\": [1, 7],\n            \"name\": \"Jacob Kaplan-Moss\"\n        }\n    },\n    {\n        \"pk\": 3,\n        \"model\": \"aggregation_regress.author\",\n        \"fields\": {\n            \"age\": 45,\n            \"friends\": [],\n            \"name\": \"Brad Dayley\"\n        }\n    },\n    {\n        \"pk\": 4,\n        \"model\": \"aggregation_regress.author\",\n        \"fields\": {\n            \"age\": 29,\n            \"friends\": [1],\n            \"name\": \"James Bennett\"\n        }\n    },\n    {\n        \"pk\": 5,\n        \"model\": \"aggregation_regress.author\",\n        \"fields\": {\n            \"age\": 37,\n            \"friends\": [6, 7],\n            \"name\": \"Jeffrey Forcier\"\n        }\n    },\n    {\n        \"pk\": 6,\n        \"model\": \"aggregation_regress.author\",\n        \"fields\": {\n            \"age\": 29,\n            \"friends\": [5, 7],\n            \"name\": \"Paul Bissex\"\n        }\n    },\n    {\n        \"pk\": 7,\n        \"model\": \"aggregation_regress.author\",\n        \"fields\": {\n            \"age\": 25,\n            \"friends\": [2, 5, 6],\n            \"name\": \"Wesley J. Chun\"\n        }\n    },\n    {\n        \"pk\": 8,\n        \"model\": \"aggregation_regress.author\",\n        \"fields\": {\n            \"age\": 57,\n            \"friends\": [9],\n            \"name\": \"Peter Norvig\"\n        }\n    },\n    {\n        \"pk\": 9,\n        \"model\": \"aggregation_regress.author\",\n        \"fields\": {\n            \"age\": 46,\n            \"friends\": [8],\n            \"name\": \"Stuart Russell\"\n        }\n    },\n    {\n        \"pk\": 5,\n        \"model\": \"aggregation_regress.hardbackbook\",\n        \"fields\": {\n            \"weight\": 4.5\n        }\n    },\n    {\n        \"pk\": 6,\n        \"model\": \"aggregation_regress.hardbackbook\",\n        \"fields\": {\n            \"weight\": 3.7\n        }\n    }\n]\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/aggregation_regress/models.py",
    "content": "# coding: utf-8\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n@python_2_unicode_compatible\nclass Author(models.Model):\n    name = models.CharField(max_length=100)\n    age = models.IntegerField()\n    friends = models.ManyToManyField('self', blank=True)\n\n    def __str__(self):\n        return self.name\n\n\n@python_2_unicode_compatible\nclass Publisher(models.Model):\n    name = models.CharField(max_length=255)\n    num_awards = models.IntegerField()\n\n    def __str__(self):\n        return self.name\n\n\n@python_2_unicode_compatible\nclass Book(models.Model):\n    isbn = models.CharField(max_length=9)\n    name = models.CharField(max_length=255)\n    pages = models.IntegerField()\n    rating = models.FloatField()\n    price = models.DecimalField(decimal_places=2, max_digits=6)\n    authors = models.ManyToManyField(Author)\n    contact = models.ForeignKey(Author, related_name='book_contact_set')\n    publisher = models.ForeignKey(Publisher)\n    pubdate = models.DateField()\n\n    class Meta:\n        ordering = ('name',)\n\n    def __str__(self):\n        return self.name\n\n\n@python_2_unicode_compatible\nclass Store(models.Model):\n    name = models.CharField(max_length=255)\n    books = models.ManyToManyField(Book)\n    original_opening = models.DateTimeField()\n    friday_night_closing = models.TimeField()\n\n    def __str__(self):\n        return self.name\n\nclass Entries(models.Model):\n    EntryID = models.AutoField(primary_key=True, db_column='Entry ID')\n    Entry = models.CharField(unique=True, max_length=50)\n    Exclude = models.BooleanField()\n\n\nclass Clues(models.Model):\n    ID = models.AutoField(primary_key=True)\n    EntryID = models.ForeignKey(Entries, verbose_name='Entry', db_column = 'Entry ID')\n    Clue = models.CharField(max_length=150)\n\n\n@python_2_unicode_compatible\nclass HardbackBook(Book):\n    weight = models.FloatField()\n\n    def __str__(self):\n        return \"%s (hardback): %s\" % (self.name, self.weight)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/aggregation_regress/tests.py",
    "content": "from __future__ import absolute_import, unicode_literals\n\nimport datetime\nimport pickle\nfrom decimal import Decimal\nfrom operator import attrgetter\n\nfrom django.core.exceptions import FieldError\nfrom django.db.models import Count, Max, Avg, Sum, StdDev, Variance, F, Q\nfrom django.test import TestCase, Approximate, skipUnlessDBFeature\nfrom django.utils import six\n\nfrom .models import Author, Book, Publisher, Clues, Entries, HardbackBook\n\n\nclass AggregationTests(TestCase):\n    fixtures = [\"aggregation_regress.json\"]\n\n    def assertObjectAttrs(self, obj, **kwargs):\n        for attr, value in six.iteritems(kwargs):\n            self.assertEqual(getattr(obj, attr), value)\n\n    def test_aggregates_in_where_clause(self):\n        \"\"\"\n        Regression test for #12822: DatabaseError: aggregates not allowed in\n        WHERE clause\n\n        Tests that the subselect works and returns results equivalent to a\n        query with the IDs listed.\n\n        Before the corresponding fix for this bug, this test passed in 1.1 and\n        failed in 1.2-beta (trunk).\n        \"\"\"\n        qs = Book.objects.values('contact').annotate(Max('id'))\n        qs = qs.order_by('contact').values_list('id__max', flat=True)\n        # don't do anything with the queryset (qs) before including it as a\n        # subquery\n        books = Book.objects.order_by('id')\n        qs1 = books.filter(id__in=qs)\n        qs2 = books.filter(id__in=list(qs))\n        self.assertEqual(list(qs1), list(qs2))\n\n    def test_aggregates_in_where_clause_pre_eval(self):\n        \"\"\"\n        Regression test for #12822: DatabaseError: aggregates not allowed in\n        WHERE clause\n\n        Same as the above test, but evaluates the queryset for the subquery\n        before it's used as a subquery.\n\n        Before the corresponding fix for this bug, this test failed in both\n        1.1 and 1.2-beta (trunk).\n        \"\"\"\n        qs = Book.objects.values('contact').annotate(Max('id'))\n        qs = qs.order_by('contact').values_list('id__max', flat=True)\n        # force the queryset (qs) for the subquery to be evaluated in its\n        # current state\n        list(qs)\n        books = Book.objects.order_by('id')\n        qs1 = books.filter(id__in=qs)\n        qs2 = books.filter(id__in=list(qs))\n        self.assertEqual(list(qs1), list(qs2))\n\n    @skipUnlessDBFeature('supports_subqueries_in_group_by')\n    def test_annotate_with_extra(self):\n        \"\"\"\n        Regression test for #11916: Extra params + aggregation creates\n        incorrect SQL.\n        \"\"\"\n        #oracle doesn't support subqueries in group by clause\n        shortest_book_sql = \"\"\"\n        SELECT name\n        FROM aggregation_regress_book b\n        WHERE b.publisher_id = aggregation_regress_publisher.id\n        ORDER BY b.pages\n        LIMIT 1\n        \"\"\"\n        # tests that this query does not raise a DatabaseError due to the full\n        # subselect being (erroneously) added to the GROUP BY parameters\n        qs = Publisher.objects.extra(select={\n            'name_of_shortest_book': shortest_book_sql,\n        }).annotate(total_books=Count('book'))\n        # force execution of the query\n        list(qs)\n\n    def test_aggregate(self):\n        # Ordering requests are ignored\n        self.assertEqual(\n            Author.objects.order_by(\"name\").aggregate(Avg(\"age\")),\n            {\"age__avg\": Approximate(37.444, places=1)}\n        )\n\n        # Implicit ordering is also ignored\n        self.assertEqual(\n            Book.objects.aggregate(Sum(\"pages\")),\n            {\"pages__sum\": 3703},\n        )\n\n        # Baseline results\n        self.assertEqual(\n            Book.objects.aggregate(Sum('pages'), Avg('pages')),\n            {'pages__sum': 3703, 'pages__avg': Approximate(617.166, places=2)}\n        )\n\n        # Empty values query doesn't affect grouping or results\n        self.assertEqual(\n            Book.objects.values().aggregate(Sum('pages'), Avg('pages')),\n            {'pages__sum': 3703, 'pages__avg': Approximate(617.166, places=2)}\n        )\n\n        # Aggregate overrides extra selected column\n        self.assertEqual(\n            Book.objects.extra(select={'price_per_page' : 'price / pages'}).aggregate(Sum('pages')),\n            {'pages__sum': 3703}\n        )\n\n    def test_annotation(self):\n        # Annotations get combined with extra select clauses\n        obj = Book.objects.annotate(mean_auth_age=Avg(\"authors__age\")).extra(select={\"manufacture_cost\": \"price * .5\"}).get(pk=2)\n        self.assertObjectAttrs(obj,\n            contact_id=3,\n            id=2,\n            isbn='067232959',\n            mean_auth_age=45.0,\n            name='Sams Teach Yourself Django in 24 Hours',\n            pages=528,\n            price=Decimal(\"23.09\"),\n            pubdate=datetime.date(2008, 3, 3),\n            publisher_id=2,\n            rating=3.0\n        )\n        # Different DB backends return different types for the extra select computation\n        self.assertTrue(obj.manufacture_cost == 11.545 or obj.manufacture_cost == Decimal('11.545'))\n\n        # Order of the annotate/extra in the query doesn't matter\n        obj = Book.objects.extra(select={'manufacture_cost' : 'price * .5'}).annotate(mean_auth_age=Avg('authors__age')).get(pk=2)\n        self.assertObjectAttrs(obj,\n            contact_id=3,\n            id=2,\n            isbn='067232959',\n            mean_auth_age=45.0,\n            name='Sams Teach Yourself Django in 24 Hours',\n            pages=528,\n            price=Decimal(\"23.09\"),\n            pubdate=datetime.date(2008, 3, 3),\n            publisher_id=2,\n            rating=3.0\n        )\n        # Different DB backends return different types for the extra select computation\n        self.assertTrue(obj.manufacture_cost == 11.545 or obj.manufacture_cost == Decimal('11.545'))\n\n        # Values queries can be combined with annotate and extra\n        obj = Book.objects.annotate(mean_auth_age=Avg('authors__age')).extra(select={'manufacture_cost' : 'price * .5'}).values().get(pk=2)\n        manufacture_cost = obj['manufacture_cost']\n        self.assertTrue(manufacture_cost == 11.545 or manufacture_cost == Decimal('11.545'))\n        del obj['manufacture_cost']\n        self.assertEqual(obj, {\n            \"contact_id\": 3,\n            \"id\": 2,\n            \"isbn\": \"067232959\",\n            \"mean_auth_age\": 45.0,\n            \"name\": \"Sams Teach Yourself Django in 24 Hours\",\n            \"pages\": 528,\n            \"price\": Decimal(\"23.09\"),\n            \"pubdate\": datetime.date(2008, 3, 3),\n            \"publisher_id\": 2,\n            \"rating\": 3.0,\n        })\n\n        # The order of the (empty) values, annotate and extra clauses doesn't\n        # matter\n        obj = Book.objects.values().annotate(mean_auth_age=Avg('authors__age')).extra(select={'manufacture_cost' : 'price * .5'}).get(pk=2)\n        manufacture_cost = obj['manufacture_cost']\n        self.assertTrue(manufacture_cost == 11.545 or manufacture_cost == Decimal('11.545'))\n        del obj['manufacture_cost']\n        self.assertEqual(obj, {\n            'contact_id': 3,\n            'id': 2,\n            'isbn': '067232959',\n            'mean_auth_age': 45.0,\n            'name': 'Sams Teach Yourself Django in 24 Hours',\n            'pages': 528,\n            'price': Decimal(\"23.09\"),\n            'pubdate': datetime.date(2008, 3, 3),\n            'publisher_id': 2,\n            'rating': 3.0\n        })\n\n        # If the annotation precedes the values clause, it won't be included\n        # unless it is explicitly named\n        obj = Book.objects.annotate(mean_auth_age=Avg('authors__age')).extra(select={'price_per_page' : 'price / pages'}).values('name').get(pk=1)\n        self.assertEqual(obj, {\n            \"name\": 'The Definitive Guide to Django: Web Development Done Right',\n        })\n\n        obj = Book.objects.annotate(mean_auth_age=Avg('authors__age')).extra(select={'price_per_page' : 'price / pages'}).values('name','mean_auth_age').get(pk=1)\n        self.assertEqual(obj, {\n            'mean_auth_age': 34.5,\n            'name': 'The Definitive Guide to Django: Web Development Done Right',\n        })\n\n        # If an annotation isn't included in the values, it can still be used\n        # in a filter\n        qs = Book.objects.annotate(n_authors=Count('authors')).values('name').filter(n_authors__gt=2)\n        self.assertQuerysetEqual(\n            qs, [\n                {\"name\": 'Python Web Development with Django'}\n            ],\n            lambda b: b,\n        )\n\n        # The annotations are added to values output if values() precedes\n        # annotate()\n        obj = Book.objects.values('name').annotate(mean_auth_age=Avg('authors__age')).extra(select={'price_per_page' : 'price / pages'}).get(pk=1)\n        self.assertEqual(obj, {\n            'mean_auth_age': 34.5,\n            'name': 'The Definitive Guide to Django: Web Development Done Right',\n        })\n\n        # Check that all of the objects are getting counted (allow_nulls) and\n        # that values respects the amount of objects\n        self.assertEqual(\n            len(Author.objects.annotate(Avg('friends__age')).values()),\n            9\n        )\n\n        # Check that consecutive calls to annotate accumulate in the query\n        qs = Book.objects.values('price').annotate(oldest=Max('authors__age')).order_by('oldest', 'price').annotate(Max('publisher__num_awards'))\n        self.assertQuerysetEqual(\n            qs, [\n                {'price': Decimal(\"30\"), 'oldest': 35, 'publisher__num_awards__max': 3},\n                {'price': Decimal(\"29.69\"), 'oldest': 37, 'publisher__num_awards__max': 7},\n                {'price': Decimal(\"23.09\"), 'oldest': 45, 'publisher__num_awards__max': 1},\n                {'price': Decimal(\"75\"), 'oldest': 57, 'publisher__num_awards__max': 9},\n                {'price': Decimal(\"82.8\"), 'oldest': 57, 'publisher__num_awards__max': 7}\n            ],\n            lambda b: b,\n        )\n\n    def test_aggrate_annotation(self):\n        # Aggregates can be composed over annotations.\n        # The return type is derived from the composed aggregate\n        vals = Book.objects.all().annotate(num_authors=Count('authors__id')).aggregate(Max('pages'), Max('price'), Sum('num_authors'), Avg('num_authors'))\n        self.assertEqual(vals, {\n            'num_authors__sum': 10,\n            'num_authors__avg': Approximate(1.666, places=2),\n            'pages__max': 1132,\n            'price__max': Decimal(\"82.80\")\n        })\n\n    def test_field_error(self):\n        # Bad field requests in aggregates are caught and reported\n        self.assertRaises(\n            FieldError,\n            lambda: Book.objects.all().aggregate(num_authors=Count('foo'))\n        )\n\n        self.assertRaises(\n            FieldError,\n            lambda: Book.objects.all().annotate(num_authors=Count('foo'))\n        )\n\n        self.assertRaises(\n            FieldError,\n            lambda: Book.objects.all().annotate(num_authors=Count('authors__id')).aggregate(Max('foo'))\n        )\n\n    def test_more(self):\n        # Old-style count aggregations can be mixed with new-style\n        self.assertEqual(\n            Book.objects.annotate(num_authors=Count('authors')).count(),\n            6\n        )\n\n        # Non-ordinal, non-computed Aggregates over annotations correctly\n        # inherit the annotation's internal type if the annotation is ordinal\n        # or computed\n        vals = Book.objects.annotate(num_authors=Count('authors')).aggregate(Max('num_authors'))\n        self.assertEqual(\n            vals,\n            {'num_authors__max': 3}\n        )\n\n        vals = Publisher.objects.annotate(avg_price=Avg('book__price')).aggregate(Max('avg_price'))\n        self.assertEqual(\n            vals,\n            {'avg_price__max': 75.0}\n        )\n\n        # Aliases are quoted to protected aliases that might be reserved names\n        vals = Book.objects.aggregate(number=Max('pages'), select=Max('pages'))\n        self.assertEqual(\n            vals,\n            {'number': 1132, 'select': 1132}\n        )\n\n        # Regression for #10064: select_related() plays nice with aggregates\n        obj = Book.objects.select_related('publisher').annotate(num_authors=Count('authors')).values()[0]\n        self.assertEqual(obj, {\n            'contact_id': 8,\n            'id': 5,\n            'isbn': '013790395',\n            'name': 'Artificial Intelligence: A Modern Approach',\n            'num_authors': 2,\n            'pages': 1132,\n            'price': Decimal(\"82.8\"),\n            'pubdate': datetime.date(1995, 1, 15),\n            'publisher_id': 3,\n            'rating': 4.0,\n        })\n\n        # Regression for #10010: exclude on an aggregate field is correctly\n        # negated\n        self.assertEqual(\n            len(Book.objects.annotate(num_authors=Count('authors'))),\n            6\n        )\n        self.assertEqual(\n            len(Book.objects.annotate(num_authors=Count('authors')).filter(num_authors__gt=2)),\n            1\n        )\n        self.assertEqual(\n            len(Book.objects.annotate(num_authors=Count('authors')).exclude(num_authors__gt=2)),\n            5\n        )\n\n        self.assertEqual(\n            len(Book.objects.annotate(num_authors=Count('authors')).filter(num_authors__lt=3).exclude(num_authors__lt=2)),\n            2\n        )\n        self.assertEqual(\n            len(Book.objects.annotate(num_authors=Count('authors')).exclude(num_authors__lt=2).filter(num_authors__lt=3)),\n            2\n        )\n\n    def test_aggregate_fexpr(self):\n        # Aggregates can be used with F() expressions\n        # ... where the F() is pushed into the HAVING clause\n        qs = Publisher.objects.annotate(num_books=Count('book')).filter(num_books__lt=F('num_awards')/2).order_by('name').values('name','num_books','num_awards')\n        self.assertQuerysetEqual(\n            qs, [\n                {'num_books': 1, 'name': 'Morgan Kaufmann', 'num_awards': 9},\n                {'num_books': 2, 'name': 'Prentice Hall', 'num_awards': 7}\n            ],\n            lambda p: p,\n        )\n\n        qs = Publisher.objects.annotate(num_books=Count('book')).exclude(num_books__lt=F('num_awards')/2).order_by('name').values('name','num_books','num_awards')\n        self.assertQuerysetEqual(\n            qs, [\n                {'num_books': 2, 'name': 'Apress', 'num_awards': 3},\n                {'num_books': 0, 'name': \"Jonno's House of Books\", 'num_awards': 0},\n                {'num_books': 1, 'name': 'Sams', 'num_awards': 1}\n            ],\n            lambda p: p,\n        )\n\n        # ... and where the F() references an aggregate\n        qs = Publisher.objects.annotate(num_books=Count('book')).filter(num_awards__gt=2*F('num_books')).order_by('name').values('name','num_books','num_awards')\n        self.assertQuerysetEqual(\n            qs, [\n                {'num_books': 1, 'name': 'Morgan Kaufmann', 'num_awards': 9},\n                {'num_books': 2, 'name': 'Prentice Hall', 'num_awards': 7}\n            ],\n            lambda p: p,\n        )\n\n        qs = Publisher.objects.annotate(num_books=Count('book')).exclude(num_books__lt=F('num_awards')/2).order_by('name').values('name','num_books','num_awards')\n        self.assertQuerysetEqual(\n            qs, [\n                {'num_books': 2, 'name': 'Apress', 'num_awards': 3},\n                {'num_books': 0, 'name': \"Jonno's House of Books\", 'num_awards': 0},\n                {'num_books': 1, 'name': 'Sams', 'num_awards': 1}\n            ],\n            lambda p: p,\n        )\n\n    def test_db_col_table(self):\n        # Tests on fields with non-default table and column names.\n        qs = Clues.objects.values('EntryID__Entry').annotate(Appearances=Count('EntryID'), Distinct_Clues=Count('Clue', distinct=True))\n        self.assertQuerysetEqual(qs, [])\n\n        qs = Entries.objects.annotate(clue_count=Count('clues__ID'))\n        self.assertQuerysetEqual(qs, [])\n\n    def test_empty(self):\n        # Regression for #10089: Check handling of empty result sets with\n        # aggregates\n        self.assertEqual(\n            Book.objects.filter(id__in=[]).count(),\n            0\n        )\n\n        vals = Book.objects.filter(id__in=[]).aggregate(num_authors=Count('authors'), avg_authors=Avg('authors'), max_authors=Max('authors'), max_price=Max('price'), max_rating=Max('rating'))\n        self.assertEqual(\n            vals,\n            {'max_authors': None, 'max_rating': None, 'num_authors': 0, 'avg_authors': None, 'max_price': None}\n        )\n\n        qs = Publisher.objects.filter(pk=5).annotate(num_authors=Count('book__authors'), avg_authors=Avg('book__authors'), max_authors=Max('book__authors'), max_price=Max('book__price'), max_rating=Max('book__rating')).values()\n        self.assertQuerysetEqual(\n            qs, [\n                {'max_authors': None, 'name': \"Jonno's House of Books\", 'num_awards': 0, 'max_price': None, 'num_authors': 0, 'max_rating': None, 'id': 5, 'avg_authors': None}\n            ],\n            lambda p: p\n        )\n\n    def test_more_more(self):\n        # Regression for #10113 - Fields mentioned in order_by() must be\n        # included in the GROUP BY. This only becomes a problem when the\n        # order_by introduces a new join.\n        self.assertQuerysetEqual(\n            Book.objects.annotate(num_authors=Count('authors')).order_by('publisher__name', 'name'), [\n                \"Practical Django Projects\",\n                \"The Definitive Guide to Django: Web Development Done Right\",\n                \"Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp\",\n                \"Artificial Intelligence: A Modern Approach\",\n                \"Python Web Development with Django\",\n                \"Sams Teach Yourself Django in 24 Hours\",\n            ],\n            lambda b: b.name\n        )\n\n        # Regression for #10127 - Empty select_related() works with annotate\n        qs = Book.objects.filter(rating__lt=4.5).select_related().annotate(Avg('authors__age'))\n        self.assertQuerysetEqual(\n            qs, [\n                ('Artificial Intelligence: A Modern Approach', 51.5, 'Prentice Hall', 'Peter Norvig'),\n                ('Practical Django Projects', 29.0, 'Apress', 'James Bennett'),\n                ('Python Web Development with Django', Approximate(30.333, places=2), 'Prentice Hall', 'Jeffrey Forcier'),\n                ('Sams Teach Yourself Django in 24 Hours', 45.0, 'Sams', 'Brad Dayley')\n            ],\n            lambda b: (b.name, b.authors__age__avg, b.publisher.name, b.contact.name)\n        )\n\n        # Regression for #10132 - If the values() clause only mentioned extra\n        # (select=) columns, those columns are used for grouping\n        qs = Book.objects.extra(select={'pub':'publisher_id'}).values('pub').annotate(Count('id')).order_by('pub')\n        self.assertQuerysetEqual(\n            qs, [\n                {'pub': 1, 'id__count': 2},\n                {'pub': 2, 'id__count': 1},\n                {'pub': 3, 'id__count': 2},\n                {'pub': 4, 'id__count': 1}\n            ],\n            lambda b: b\n        )\n\n        qs = Book.objects.extra(select={'pub':'publisher_id', 'foo':'pages'}).values('pub').annotate(Count('id')).order_by('pub')\n        self.assertQuerysetEqual(\n            qs, [\n                {'pub': 1, 'id__count': 2},\n                {'pub': 2, 'id__count': 1},\n                {'pub': 3, 'id__count': 2},\n                {'pub': 4, 'id__count': 1}\n            ],\n            lambda b: b\n        )\n\n        # Regression for #10182 - Queries with aggregate calls are correctly\n        # realiased when used in a subquery\n        ids = Book.objects.filter(pages__gt=100).annotate(n_authors=Count('authors')).filter(n_authors__gt=2).order_by('n_authors')\n        self.assertQuerysetEqual(\n            Book.objects.filter(id__in=ids), [\n                \"Python Web Development with Django\",\n            ],\n            lambda b: b.name\n        )\n\n        # Regression for #15709 - Ensure each group_by field only exists once\n        # per query\n        qs = Book.objects.values('publisher').annotate(max_pages=Max('pages')).order_by()\n        grouping, gb_params = qs.query.get_compiler(qs.db).get_grouping([])\n        self.assertEqual(len(grouping), 1)\n\n    def test_duplicate_alias(self):\n        # Regression for #11256 - duplicating a default alias raises ValueError.\n        self.assertRaises(ValueError, Book.objects.all().annotate, Avg('authors__age'), authors__age__avg=Avg('authors__age'))\n\n    def test_field_name_conflict(self):\n        # Regression for #11256 - providing an aggregate name that conflicts with a field name on the model raises ValueError\n        self.assertRaises(ValueError, Author.objects.annotate, age=Avg('friends__age'))\n\n    def test_m2m_name_conflict(self):\n        # Regression for #11256 - providing an aggregate name that conflicts with an m2m name on the model raises ValueError\n        self.assertRaises(ValueError, Author.objects.annotate, friends=Count('friends'))\n\n    def test_values_queryset_non_conflict(self):\n        # Regression for #14707 -- If you're using a values query set, some potential conflicts are avoided.\n\n        # age is a field on Author, so it shouldn't be allowed as an aggregate.\n        # But age isn't included in the ValuesQuerySet, so it is.\n        results = Author.objects.values('name').annotate(age=Count('book_contact_set')).order_by('name')\n        self.assertEqual(len(results), 9)\n        self.assertEqual(results[0]['name'], 'Adrian Holovaty')\n        self.assertEqual(results[0]['age'], 1)\n\n        # Same problem, but aggregating over m2m fields\n        results = Author.objects.values('name').annotate(age=Avg('friends__age')).order_by('name')\n        self.assertEqual(len(results), 9)\n        self.assertEqual(results[0]['name'], 'Adrian Holovaty')\n        self.assertEqual(results[0]['age'], 32.0)\n\n        # Same problem, but colliding with an m2m field\n        results = Author.objects.values('name').annotate(friends=Count('friends')).order_by('name')\n        self.assertEqual(len(results), 9)\n        self.assertEqual(results[0]['name'], 'Adrian Holovaty')\n        self.assertEqual(results[0]['friends'], 2)\n\n    def test_reverse_relation_name_conflict(self):\n        # Regression for #11256 - providing an aggregate name that conflicts with a reverse-related name on the model raises ValueError\n        self.assertRaises(ValueError, Author.objects.annotate, book_contact_set=Avg('friends__age'))\n\n    def test_pickle(self):\n        # Regression for #10197 -- Queries with aggregates can be pickled.\n        # First check that pickling is possible at all. No crash = success\n        qs = Book.objects.annotate(num_authors=Count('authors'))\n        pickle.dumps(qs)\n\n        # Then check that the round trip works.\n        query = qs.query.get_compiler(qs.db).as_sql()[0]\n        qs2 = pickle.loads(pickle.dumps(qs))\n        self.assertEqual(\n            qs2.query.get_compiler(qs2.db).as_sql()[0],\n            query,\n        )\n\n    def test_more_more_more(self):\n        # Regression for #10199 - Aggregate calls clone the original query so\n        # the original query can still be used\n        books = Book.objects.all()\n        books.aggregate(Avg(\"authors__age\"))\n        self.assertQuerysetEqual(\n            books.all(), [\n                'Artificial Intelligence: A Modern Approach',\n                'Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp',\n                'Practical Django Projects',\n                'Python Web Development with Django',\n                'Sams Teach Yourself Django in 24 Hours',\n                'The Definitive Guide to Django: Web Development Done Right'\n            ],\n            lambda b: b.name\n        )\n\n        # Regression for #10248 - Annotations work with DateQuerySets\n        qs = Book.objects.annotate(num_authors=Count('authors')).filter(num_authors=2).dates('pubdate', 'day')\n        self.assertQuerysetEqual(\n            qs, [\n                datetime.datetime(1995, 1, 15, 0, 0),\n                datetime.datetime(2007, 12, 6, 0, 0)\n            ],\n            lambda b: b\n        )\n\n        # Regression for #10290 - extra selects with parameters can be used for\n        # grouping.\n        qs = Book.objects.annotate(mean_auth_age=Avg('authors__age')).extra(select={'sheets' : '(pages + %s) / %s'}, select_params=[1, 2]).order_by('sheets').values('sheets')\n        self.assertQuerysetEqual(\n            qs, [\n                150,\n                175,\n                224,\n                264,\n                473,\n                566\n            ],\n            lambda b: int(b[\"sheets\"])\n        )\n\n        # Regression for 10425 - annotations don't get in the way of a count()\n        # clause\n        self.assertEqual(\n            Book.objects.values('publisher').annotate(Count('publisher')).count(),\n            4\n        )\n        self.assertEqual(\n            Book.objects.annotate(Count('publisher')).values('publisher').count(),\n            6\n        )\n\n        publishers = Publisher.objects.filter(id__in=[1, 2])\n        self.assertEqual(\n            sorted(p.name for p in publishers),\n            [\n                \"Apress\",\n                \"Sams\"\n            ]\n        )\n\n        publishers = publishers.annotate(n_books=Count(\"book\"))\n        self.assertEqual(\n            publishers[0].n_books,\n            2\n        )\n\n        self.assertEqual(\n            sorted(p.name for p in publishers),\n            [\n                \"Apress\",\n                \"Sams\"\n            ]\n        )\n\n        books = Book.objects.filter(publisher__in=publishers)\n        self.assertQuerysetEqual(\n            books, [\n                \"Practical Django Projects\",\n                \"Sams Teach Yourself Django in 24 Hours\",\n                \"The Definitive Guide to Django: Web Development Done Right\",\n            ],\n            lambda b: b.name\n        )\n        self.assertEqual(\n            sorted(p.name for p in publishers),\n            [\n                \"Apress\",\n                \"Sams\"\n            ]\n        )\n\n        # Regression for 10666 - inherited fields work with annotations and\n        # aggregations\n        self.assertEqual(\n            HardbackBook.objects.aggregate(n_pages=Sum('book_ptr__pages')),\n            {'n_pages': 2078}\n        )\n\n        self.assertEqual(\n            HardbackBook.objects.aggregate(n_pages=Sum('pages')),\n            {'n_pages': 2078},\n        )\n\n        qs = HardbackBook.objects.annotate(n_authors=Count('book_ptr__authors')).values('name', 'n_authors')\n        self.assertQuerysetEqual(\n            qs, [\n                {'n_authors': 2, 'name': 'Artificial Intelligence: A Modern Approach'},\n                {'n_authors': 1, 'name': 'Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp'}\n            ],\n            lambda h: h\n        )\n\n        qs = HardbackBook.objects.annotate(n_authors=Count('authors')).values('name', 'n_authors')\n        self.assertQuerysetEqual(\n            qs, [\n                {'n_authors': 2, 'name': 'Artificial Intelligence: A Modern Approach'},\n                {'n_authors': 1, 'name': 'Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp'}\n            ],\n            lambda h: h,\n        )\n\n        # Regression for #10766 - Shouldn't be able to reference an aggregate\n        # fields in an aggregate() call.\n        self.assertRaises(\n            FieldError,\n            lambda: Book.objects.annotate(mean_age=Avg('authors__age')).annotate(Avg('mean_age'))\n        )\n\n    def test_empty_filter_count(self):\n        self.assertEqual(\n            Author.objects.filter(id__in=[]).annotate(Count(\"friends\")).count(),\n            0\n        )\n\n    def test_empty_filter_aggregate(self):\n        self.assertEqual(\n            Author.objects.filter(id__in=[]).annotate(Count(\"friends\")).aggregate(Count(\"pk\")),\n            {\"pk__count\": None}\n        )\n\n    def test_none_call_before_aggregate(self):\n        # Regression for #11789\n        self.assertEqual(\n            Author.objects.none().aggregate(Avg('age')),\n            {'age__avg': None}\n        )\n\n    def test_annotate_and_join(self):\n        self.assertEqual(\n            Author.objects.annotate(c=Count(\"friends__name\")).exclude(friends__name=\"Joe\").count(),\n            Author.objects.count()\n        )\n\n    def test_f_expression_annotation(self):\n        # Books with less than 200 pages per author.\n        qs = Book.objects.values(\"name\").annotate(\n            n_authors=Count(\"authors\")\n        ).filter(\n            pages__lt=F(\"n_authors\") * 200\n        ).values_list(\"pk\")\n        self.assertQuerysetEqual(\n            Book.objects.filter(pk__in=qs), [\n                \"Python Web Development with Django\"\n            ],\n            attrgetter(\"name\")\n        )\n\n    def test_values_annotate_values(self):\n        qs = Book.objects.values(\"name\").annotate(\n            n_authors=Count(\"authors\")\n        ).values_list(\"pk\", flat=True)\n        self.assertEqual(list(qs), list(Book.objects.values_list(\"pk\", flat=True)))\n\n    def test_having_group_by(self):\n        # Test that when a field occurs on the LHS of a HAVING clause that it\n        # appears correctly in the GROUP BY clause\n        qs = Book.objects.values_list(\"name\").annotate(\n            n_authors=Count(\"authors\")\n        ).filter(\n            pages__gt=F(\"n_authors\")\n        ).values_list(\"name\", flat=True)\n        # Results should be the same, all Books have more pages than authors\n        self.assertEqual(\n            list(qs), list(Book.objects.values_list(\"name\", flat=True))\n        )\n\n    def test_annotation_disjunction(self):\n        qs = Book.objects.annotate(n_authors=Count(\"authors\")).filter(\n            Q(n_authors=2) | Q(name=\"Python Web Development with Django\")\n        )\n        self.assertQuerysetEqual(\n            qs, [\n                \"Artificial Intelligence: A Modern Approach\",\n                \"Python Web Development with Django\",\n                \"The Definitive Guide to Django: Web Development Done Right\",\n            ],\n            attrgetter(\"name\")\n        )\n\n        qs = Book.objects.annotate(n_authors=Count(\"authors\")).filter(\n            Q(name=\"The Definitive Guide to Django: Web Development Done Right\") | (Q(name=\"Artificial Intelligence: A Modern Approach\") & Q(n_authors=3))\n        )\n        self.assertQuerysetEqual(\n            qs, [\n                \"The Definitive Guide to Django: Web Development Done Right\",\n            ],\n            attrgetter(\"name\")\n        )\n\n        qs = Publisher.objects.annotate(\n            rating_sum=Sum(\"book__rating\"),\n            book_count=Count(\"book\")\n        ).filter(\n            Q(rating_sum__gt=5.5) | Q(rating_sum__isnull=True)\n        ).order_by('pk')\n        self.assertQuerysetEqual(\n            qs, [\n                \"Apress\",\n                \"Prentice Hall\",\n                \"Jonno's House of Books\",\n            ],\n            attrgetter(\"name\")\n        )\n\n        qs = Publisher.objects.annotate(\n            rating_sum=Sum(\"book__rating\"),\n            book_count=Count(\"book\")\n        ).filter(\n            Q(pk__lt=F(\"book_count\")) | Q(rating_sum=None)\n        ).order_by(\"pk\")\n        self.assertQuerysetEqual(\n            qs, [\n                \"Apress\",\n                \"Jonno's House of Books\",\n            ],\n            attrgetter(\"name\")\n        )\n\n    def test_quoting_aggregate_order_by(self):\n        qs = Book.objects.filter(\n            name=\"Python Web Development with Django\"\n        ).annotate(\n            authorCount=Count(\"authors\")\n        ).order_by(\"authorCount\")\n        self.assertQuerysetEqual(\n            qs, [\n                (\"Python Web Development with Django\", 3),\n            ],\n            lambda b: (b.name, b.authorCount)\n        )\n\n    @skipUnlessDBFeature('supports_stddev')\n    def test_stddev(self):\n        self.assertEqual(\n            Book.objects.aggregate(StdDev('pages')),\n            {'pages__stddev': Approximate(311.46, 1)}\n        )\n\n        self.assertEqual(\n            Book.objects.aggregate(StdDev('rating')),\n            {'rating__stddev': Approximate(0.60, 1)}\n        )\n\n        self.assertEqual(\n            Book.objects.aggregate(StdDev('price')),\n            {'price__stddev': Approximate(24.16, 2)}\n        )\n\n        self.assertEqual(\n            Book.objects.aggregate(StdDev('pages', sample=True)),\n            {'pages__stddev': Approximate(341.19, 2)}\n        )\n\n        self.assertEqual(\n            Book.objects.aggregate(StdDev('rating', sample=True)),\n            {'rating__stddev': Approximate(0.66, 2)}\n        )\n\n        self.assertEqual(\n            Book.objects.aggregate(StdDev('price', sample=True)),\n            {'price__stddev': Approximate(26.46, 1)}\n        )\n\n        self.assertEqual(\n            Book.objects.aggregate(Variance('pages')),\n            {'pages__variance': Approximate(97010.80, 1)}\n        )\n\n        self.assertEqual(\n            Book.objects.aggregate(Variance('rating')),\n            {'rating__variance': Approximate(0.36, 1)}\n        )\n\n        self.assertEqual(\n            Book.objects.aggregate(Variance('price')),\n            {'price__variance': Approximate(583.77, 1)}\n        )\n\n        self.assertEqual(\n            Book.objects.aggregate(Variance('pages', sample=True)),\n            {'pages__variance': Approximate(116412.96, 1)}\n        )\n\n        self.assertEqual(\n            Book.objects.aggregate(Variance('rating', sample=True)),\n            {'rating__variance': Approximate(0.44, 2)}\n        )\n\n        self.assertEqual(\n            Book.objects.aggregate(Variance('price', sample=True)),\n            {'price__variance': Approximate(700.53, 2)}\n        )\n\n    def test_filtering_by_annotation_name(self):\n        # Regression test for #14476\n\n        # The name of the explicitly provided annotation name in this case\n        # poses no problem\n        qs = Author.objects.annotate(book_cnt=Count('book')).filter(book_cnt=2)\n        self.assertQuerysetEqual(\n            qs,\n            ['Peter Norvig'],\n            lambda b: b.name\n        )\n        # Neither in this case\n        qs = Author.objects.annotate(book_count=Count('book')).filter(book_count=2)\n        self.assertQuerysetEqual(\n            qs,\n            ['Peter Norvig'],\n            lambda b: b.name\n        )\n        # This case used to fail because the ORM couldn't resolve the\n        # automatically generated annotation name `book__count`\n        qs = Author.objects.annotate(Count('book')).filter(book__count=2)\n        self.assertQuerysetEqual(\n            qs,\n            ['Peter Norvig'],\n            lambda b: b.name\n        )\n\n    def test_type_conversion(self):\n        # The database backend convert_values function should not try to covert\n        # CharFields to float. Refs #13844.\n        from django.db.models import CharField\n        from django.db import connection\n        testData = 'not_a_float_value'\n        testField = CharField()\n        self.assertEqual(\n            connection.ops.convert_values(testData, testField),\n            testData\n        )\n\n    def test_annotate_joins(self):\n        \"\"\"\n        Test that the base table's join isn't promoted to LOUTER. This could\n        cause the query generation to fail if there is an exclude() for fk-field\n        in the query, too. Refs #19087.\n        \"\"\"\n        qs = Book.objects.annotate(n=Count('pk'))\n        self.assertIs(qs.query.alias_map['aggregation_regress_book'].join_type, None)\n        # Check that the query executes without problems.\n        self.assertEqual(len(qs.exclude(publisher=-1)), 6)\n\n    @skipUnlessDBFeature(\"allows_group_by_pk\")\n    def test_aggregate_duplicate_columns(self):\n        # Regression test for #17144\n\n        results = Author.objects.annotate(num_contacts=Count('book_contact_set'))\n\n        # There should only be one GROUP BY clause, for the `id` column.\n        # `name` and `age` should not be grouped on.\n        grouping, gb_params = results.query.get_compiler(using='default').get_grouping([])\n        self.assertEqual(len(grouping), 1)\n        assert 'id' in grouping[0]\n        assert 'name' not in grouping[0]\n        assert 'age' not in grouping[0]\n\n        # The query group_by property should also only show the `id`.\n        self.assertEqual(results.query.group_by, [('aggregation_regress_author', 'id')])\n\n        # Ensure that we get correct results.\n        self.assertEqual(\n            [(a.name, a.num_contacts) for a in results.order_by('name')],\n            [\n                ('Adrian Holovaty', 1),\n                ('Brad Dayley', 1),\n                ('Jacob Kaplan-Moss', 0),\n                ('James Bennett', 1),\n                ('Jeffrey Forcier', 1),\n                ('Paul Bissex', 0),\n                ('Peter Norvig', 2),\n                ('Stuart Russell', 0),\n                ('Wesley J. Chun', 0),\n            ]\n        )\n\n    @skipUnlessDBFeature(\"allows_group_by_pk\")\n    def test_aggregate_duplicate_columns_only(self):\n        # Works with only() too.\n        results = Author.objects.only('id', 'name').annotate(num_contacts=Count('book_contact_set'))\n        grouping, gb_params = results.query.get_compiler(using='default').get_grouping([])\n        self.assertEqual(len(grouping), 1)\n        assert 'id' in grouping[0]\n        assert 'name' not in grouping[0]\n        assert 'age' not in grouping[0]\n\n        # The query group_by property should also only show the `id`.\n        self.assertEqual(results.query.group_by, [('aggregation_regress_author', 'id')])\n\n        # Ensure that we get correct results.\n        self.assertEqual(\n            [(a.name, a.num_contacts) for a in results.order_by('name')],\n            [\n                ('Adrian Holovaty', 1),\n                ('Brad Dayley', 1),\n                ('Jacob Kaplan-Moss', 0),\n                ('James Bennett', 1),\n                ('Jeffrey Forcier', 1),\n                ('Paul Bissex', 0),\n                ('Peter Norvig', 2),\n                ('Stuart Russell', 0),\n                ('Wesley J. Chun', 0),\n            ]\n        )\n\n    @skipUnlessDBFeature(\"allows_group_by_pk\")\n    def test_aggregate_duplicate_columns_select_related(self):\n        # And select_related()\n        results = Book.objects.select_related('contact').annotate(\n            num_authors=Count('authors'))\n        grouping, gb_params = results.query.get_compiler(using='default').get_grouping([])\n        self.assertEqual(len(grouping), 1)\n        assert 'id' in grouping[0]\n        assert 'name' not in grouping[0]\n        assert 'contact' not in grouping[0]\n\n        # The query group_by property should also only show the `id`.\n        self.assertEqual(results.query.group_by, [('aggregation_regress_book', 'id')])\n\n        # Ensure that we get correct results.\n        self.assertEqual(\n            [(b.name, b.num_authors) for b in results.order_by('name')],\n            [\n                ('Artificial Intelligence: A Modern Approach', 2),\n                ('Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp', 1),\n                ('Practical Django Projects', 1),\n                ('Python Web Development with Django', 3),\n                ('Sams Teach Yourself Django in 24 Hours', 1),\n                ('The Definitive Guide to Django: Web Development Done Right', 2)\n            ]\n        )\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/app_loading/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/app_loading/models.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/app_loading/not_installed/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/app_loading/not_installed/models.py",
    "content": "from django.db import models\n\n\nclass NotInstalledModel(models.Model):\n    pass\n\n\nclass RelatedModel(models.Model):\n    not_installed = models.ForeignKey(NotInstalledModel)\n\n\nclass M2MRelatedModel(models.Model):\n    not_installed = models.ManyToManyField(NotInstalledModel)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/app_loading/tests.py",
    "content": "from __future__ import absolute_import\n\nimport copy\nimport os\nimport sys\nimport time\n\nfrom django.conf import Settings\nfrom django.db.models.loading import cache, load_app, get_model, get_models\nfrom django.utils._os import upath\nfrom django.utils.unittest import TestCase\n\nclass EggLoadingTest(TestCase):\n\n    def setUp(self):\n        self.old_path = sys.path[:]\n        self.egg_dir = '%s/eggs' % os.path.dirname(upath(__file__))\n\n        # This test adds dummy applications to the app cache. These\n        # need to be removed in order to prevent bad interactions\n        # with the flush operation in other tests.\n        self.old_app_models = copy.deepcopy(cache.app_models)\n        self.old_app_store = copy.deepcopy(cache.app_store)\n\n    def tearDown(self):\n        sys.path = self.old_path\n        cache.app_models = self.old_app_models\n        cache.app_store = self.old_app_store\n\n    def test_egg1(self):\n        \"\"\"Models module can be loaded from an app in an egg\"\"\"\n        egg_name = '%s/modelapp.egg' % self.egg_dir\n        sys.path.append(egg_name)\n        models = load_app('app_with_models')\n        self.assertFalse(models is None)\n\n    def test_egg2(self):\n        \"\"\"Loading an app from an egg that has no models returns no models (and no error)\"\"\"\n        egg_name = '%s/nomodelapp.egg' % self.egg_dir\n        sys.path.append(egg_name)\n        models = load_app('app_no_models')\n        self.assertTrue(models is None)\n\n    def test_egg3(self):\n        \"\"\"Models module can be loaded from an app located under an egg's top-level package\"\"\"\n        egg_name = '%s/omelet.egg' % self.egg_dir\n        sys.path.append(egg_name)\n        models = load_app('omelet.app_with_models')\n        self.assertFalse(models is None)\n\n    def test_egg4(self):\n        \"\"\"Loading an app with no models from under the top-level egg package generates no error\"\"\"\n        egg_name = '%s/omelet.egg' % self.egg_dir\n        sys.path.append(egg_name)\n        models = load_app('omelet.app_no_models')\n        self.assertTrue(models is None)\n\n    def test_egg5(self):\n        \"\"\"Loading an app from an egg that has an import error in its models module raises that error\"\"\"\n        egg_name = '%s/brokenapp.egg' % self.egg_dir\n        sys.path.append(egg_name)\n        self.assertRaises(ImportError, load_app, 'broken_app')\n        try:\n            load_app('broken_app')\n        except ImportError as e:\n            # Make sure the message is indicating the actual\n            # problem in the broken app.\n            self.assertTrue(\"modelz\" in e.args[0])\n\n\nclass GetModelsTest(TestCase):\n    def setUp(self):\n        from .not_installed import models\n        self.not_installed_module = models\n\n\n    def test_get_model_only_returns_installed_models(self):\n        self.assertEqual(\n            get_model(\"not_installed\", \"NotInstalledModel\"), None)\n\n\n    def test_get_model_with_not_installed(self):\n        self.assertEqual(\n            get_model(\n                \"not_installed\", \"NotInstalledModel\", only_installed=False),\n            self.not_installed_module.NotInstalledModel)\n\n\n    def test_get_models_only_returns_installed_models(self):\n        self.assertFalse(\n            \"NotInstalledModel\" in\n            [m.__name__ for m in get_models()])\n\n\n    def test_get_models_with_app_label_only_returns_installed_models(self):\n        self.assertEqual(get_models(self.not_installed_module), [])\n\n\n    def test_get_models_with_not_installed(self):\n        self.assertTrue(\n            \"NotInstalledModel\" in [\n                m.__name__ for m in get_models(only_installed=False)])\n\n\nclass NotInstalledModelsTest(TestCase):\n    def test_related_not_installed_model(self):\n        from .not_installed.models import NotInstalledModel\n        self.assertEqual(\n            set(NotInstalledModel._meta.get_all_field_names()),\n            set([\"id\", \"relatedmodel\", \"m2mrelatedmodel\"]))\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/backends/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/backends/models.py",
    "content": "from __future__ import unicode_literals\n\nfrom django.contrib.contenttypes import generic\nfrom django.contrib.contenttypes.models import ContentType\nfrom django.db import models, connection\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n@python_2_unicode_compatible\nclass Square(models.Model):\n    root = models.IntegerField()\n    square = models.PositiveIntegerField()\n\n    def __str__(self):\n        return \"%s ** 2 == %s\" % (self.root, self.square)\n\n\n@python_2_unicode_compatible\nclass Person(models.Model):\n    first_name = models.CharField(max_length=20)\n    last_name = models.CharField(max_length=20)\n\n    def __str__(self):\n        return '%s %s' % (self.first_name, self.last_name)\n\n\nclass SchoolClass(models.Model):\n    year = models.PositiveIntegerField()\n    day = models.CharField(max_length=9, blank=True)\n    last_updated = models.DateTimeField()\n\n# Unfortunately, the following model breaks MySQL hard.\n# Until #13711 is fixed, this test can't be run under MySQL.\nif connection.features.supports_long_model_names:\n    class VeryLongModelNameZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ(models.Model):\n        class Meta:\n            # We need to use a short actual table name or\n            # we hit issue #8548 which we're not testing!\n            verbose_name = 'model_with_long_table_name'\n        primary_key_is_quite_long_zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz = models.AutoField(primary_key=True)\n        charfield_is_quite_long_zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz = models.CharField(max_length=100)\n        m2m_also_quite_long_zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz = models.ManyToManyField(Person,blank=True)\n\n\nclass Tag(models.Model):\n    name = models.CharField(max_length=30)\n    content_type = models.ForeignKey(ContentType, related_name='backend_tags')\n    object_id = models.PositiveIntegerField()\n    content_object = generic.GenericForeignKey('content_type', 'object_id')\n\n\nclass Post(models.Model):\n    name = models.CharField(max_length=30)\n    text = models.TextField()\n    tags = generic.GenericRelation('Tag')\n\n    class Meta:\n        db_table = 'CaseSensitive_Post'\n\n\n@python_2_unicode_compatible\nclass Reporter(models.Model):\n    first_name = models.CharField(max_length=30)\n    last_name = models.CharField(max_length=30)\n\n    def __str__(self):\n        return \"%s %s\" % (self.first_name, self.last_name)\n\n\n@python_2_unicode_compatible\nclass Article(models.Model):\n    headline = models.CharField(max_length=100)\n    pub_date = models.DateField()\n    reporter = models.ForeignKey(Reporter)\n\n    def __str__(self):\n        return self.headline\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/backends/tests.py",
    "content": "# -*- coding: utf-8 -*-\n# Unit and doctests for specific database backends.\nfrom __future__ import absolute_import, unicode_literals\n\nimport datetime\nimport threading\n\nfrom django.conf import settings\nfrom django.core.management.color import no_style\nfrom django.core.exceptions import ImproperlyConfigured\nfrom django.db import (backend, connection, connections, DEFAULT_DB_ALIAS,\n    IntegrityError, transaction)\nfrom django.db.backends.signals import connection_created\nfrom django.db.backends.postgresql_psycopg2 import version as pg_version\nfrom django.db.utils import ConnectionHandler, DatabaseError, load_backend\nfrom django.test import (TestCase, skipUnlessDBFeature, skipIfDBFeature,\n    TransactionTestCase)\nfrom django.test.utils import override_settings\nfrom django.utils import six\nfrom django.utils.six.moves import xrange\nfrom django.utils import unittest\n\nfrom . import models\n\n\nclass DummyBackendTest(TestCase):\n    def test_no_databases(self):\n        \"\"\"\n        Test that empty DATABASES setting default to the dummy backend.\n        \"\"\"\n        DATABASES = {}\n        conns = ConnectionHandler(DATABASES)\n        self.assertEqual(conns[DEFAULT_DB_ALIAS].settings_dict['ENGINE'],\n            'django.db.backends.dummy')\n\n\nclass OracleChecks(unittest.TestCase):\n\n    @unittest.skipUnless(connection.vendor == 'oracle',\n                         \"No need to check Oracle quote_name semantics\")\n    def test_quote_name(self):\n        # Check that '%' chars are escaped for query execution.\n        name = '\"SOME%NAME\"'\n        quoted_name = connection.ops.quote_name(name)\n        self.assertEqual(quoted_name % (), name)\n\n    @unittest.skipUnless(connection.vendor == 'oracle',\n                         \"No need to check Oracle cursor semantics\")\n    def test_dbms_session(self):\n        # If the backend is Oracle, test that we can call a standard\n        # stored procedure through our cursor wrapper.\n        convert_unicode = backend.convert_unicode\n        cursor = connection.cursor()\n        cursor.callproc(convert_unicode('DBMS_SESSION.SET_IDENTIFIER'),\n                        [convert_unicode('_django_testing!'),])\n\n    @unittest.skipUnless(connection.vendor == 'oracle',\n                         \"No need to check Oracle cursor semantics\")\n    def test_cursor_var(self):\n        # If the backend is Oracle, test that we can pass cursor variables\n        # as query parameters.\n        cursor = connection.cursor()\n        var = cursor.var(backend.Database.STRING)\n        cursor.execute(\"BEGIN %s := 'X'; END; \", [var])\n        self.assertEqual(var.getvalue(), 'X')\n\n    @unittest.skipUnless(connection.vendor == 'oracle',\n                         \"No need to check Oracle cursor semantics\")\n    def test_long_string(self):\n        # If the backend is Oracle, test that we can save a text longer\n        # than 4000 chars and read it properly\n        c = connection.cursor()\n        c.execute('CREATE TABLE ltext (\"TEXT\" NCLOB)')\n        long_str = ''.join([six.text_type(x) for x in xrange(4000)])\n        c.execute('INSERT INTO ltext VALUES (%s)',[long_str])\n        c.execute('SELECT text FROM ltext')\n        row = c.fetchone()\n        self.assertEqual(long_str, row[0].read())\n        c.execute('DROP TABLE ltext')\n\n    @unittest.skipUnless(connection.vendor == 'oracle',\n                         \"No need to check Oracle connection semantics\")\n    def test_client_encoding(self):\n        # If the backend is Oracle, test that the client encoding is set\n        # correctly.  This was broken under Cygwin prior to r14781.\n        connection.cursor()  # Ensure the connection is initialized.\n        self.assertEqual(connection.connection.encoding, \"UTF-8\")\n        self.assertEqual(connection.connection.nencoding, \"UTF-8\")\n\n    @unittest.skipUnless(connection.vendor == 'oracle',\n                         \"No need to check Oracle connection semantics\")\n    def test_order_of_nls_parameters(self):\n        # an 'almost right' datetime should work with configured\n        # NLS parameters as per #18465.\n        c = connection.cursor()\n        query = \"select 1 from dual where '1936-12-29 00:00' < sysdate\"\n        # Test that the query succeeds without errors - pre #18465 this\n        # wasn't the case.\n        c.execute(query)\n        self.assertEqual(c.fetchone()[0], 1)\n\nclass MySQLTests(TestCase):\n    @unittest.skipUnless(connection.vendor == 'mysql',\n                        \"Test valid only for MySQL\")\n    def test_autoincrement(self):\n        \"\"\"\n        Check that auto_increment fields are reset correctly by sql_flush().\n        Before MySQL version 5.0.13 TRUNCATE did not do auto_increment reset.\n        Refs #16961.\n        \"\"\"\n        statements = connection.ops.sql_flush(no_style(),\n                                              tables=['test'],\n                                              sequences=[{\n                                                  'table': 'test',\n                                                  'col': 'somecol',\n                                              }])\n        found_reset = False\n        for sql in statements:\n            found_reset = found_reset or 'ALTER TABLE' in sql\n        if connection.mysql_version < (5,0,13):\n            self.assertTrue(found_reset)\n        else:\n            self.assertFalse(found_reset)\n\n    @unittest.skipUnless(connection.vendor == 'mysql',\n                        \"Test valid only for MySQL\")\n    def test_server_version_connections(self):\n        connection.close()\n        connection.mysql_version\n        self.assertTrue(connection.connection is None)\n\nclass DateQuotingTest(TestCase):\n\n    def test_django_date_trunc(self):\n        \"\"\"\n        Test the custom ``django_date_trunc method``, in particular against\n        fields which clash with strings passed to it (e.g. 'year') - see\n        #12818__.\n\n        __: http://code.djangoproject.com/ticket/12818\n\n        \"\"\"\n        updated = datetime.datetime(2010, 2, 20)\n        models.SchoolClass.objects.create(year=2009, last_updated=updated)\n        years = models.SchoolClass.objects.dates('last_updated', 'year')\n        self.assertEqual(list(years), [datetime.datetime(2010, 1, 1, 0, 0)])\n\n    def test_django_extract(self):\n        \"\"\"\n        Test the custom ``django_extract method``, in particular against fields\n        which clash with strings passed to it (e.g. 'day') - see #12818__.\n\n        __: http://code.djangoproject.com/ticket/12818\n\n        \"\"\"\n        updated = datetime.datetime(2010, 2, 20)\n        models.SchoolClass.objects.create(year=2009, last_updated=updated)\n        classes = models.SchoolClass.objects.filter(last_updated__day=20)\n        self.assertEqual(len(classes), 1)\n\n\nclass LastExecutedQueryTest(TestCase):\n    @override_settings(DEBUG=True)\n    def test_debug_sql(self):\n        list(models.Tag.objects.filter(name=\"test\"))\n        sql = connection.queries[-1]['sql'].lower()\n        self.assertTrue(sql.startswith(\"select\"))\n        self.assertIn(models.Tag._meta.db_table, sql)\n\n    def test_query_encoding(self):\n        \"\"\"\n        Test that last_executed_query() returns an Unicode string\n        \"\"\"\n        tags = models.Tag.objects.extra(select={'föö':1})\n        sql, params = tags.query.sql_with_params()\n        cursor = tags.query.get_compiler('default').execute_sql(None)\n        last_sql = cursor.db.ops.last_executed_query(cursor, sql, params)\n        self.assertTrue(isinstance(last_sql, six.text_type))\n\n\nclass ParameterHandlingTest(TestCase):\n    def test_bad_parameter_count(self):\n        \"An executemany call with too many/not enough parameters will raise an exception (Refs #12612)\"\n        cursor = connection.cursor()\n        query = ('INSERT INTO %s (%s, %s) VALUES (%%s, %%s)' % (\n            connection.introspection.table_name_converter('backends_square'),\n            connection.ops.quote_name('root'),\n            connection.ops.quote_name('square')\n        ))\n        self.assertRaises(Exception, cursor.executemany, query, [(1,2,3),])\n        self.assertRaises(Exception, cursor.executemany, query, [(1,),])\n\n# Unfortunately, the following tests would be a good test to run on all\n# backends, but it breaks MySQL hard. Until #13711 is fixed, it can't be run\n# everywhere (although it would be an effective test of #13711).\nclass LongNameTest(TestCase):\n    \"\"\"Long primary keys and model names can result in a sequence name\n    that exceeds the database limits, which will result in truncation\n    on certain databases (e.g., Postgres). The backend needs to use\n    the correct sequence name in last_insert_id and other places, so\n    check it is. Refs #8901.\n    \"\"\"\n\n    @skipUnlessDBFeature('supports_long_model_names')\n    def test_sequence_name_length_limits_create(self):\n        \"\"\"Test creation of model with long name and long pk name doesn't error. Ref #8901\"\"\"\n        models.VeryLongModelNameZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ.objects.create()\n\n    @skipUnlessDBFeature('supports_long_model_names')\n    def test_sequence_name_length_limits_m2m(self):\n        \"\"\"Test an m2m save of a model with a long name and a long m2m field name doesn't error as on Django >=1.2 this now uses object saves. Ref #8901\"\"\"\n        obj = models.VeryLongModelNameZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ.objects.create()\n        rel_obj = models.Person.objects.create(first_name='Django', last_name='Reinhardt')\n        obj.m2m_also_quite_long_zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz.add(rel_obj)\n\n    @skipUnlessDBFeature('supports_long_model_names')\n    def test_sequence_name_length_limits_flush(self):\n        \"\"\"Test that sequence resetting as part of a flush with model with long name and long pk name doesn't error. Ref #8901\"\"\"\n        # A full flush is expensive to the full test, so we dig into the\n        # internals to generate the likely offending SQL and run it manually\n\n        # Some convenience aliases\n        VLM = models.VeryLongModelNameZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ\n        VLM_m2m = VLM.m2m_also_quite_long_zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz.through\n        tables = [\n            VLM._meta.db_table,\n            VLM_m2m._meta.db_table,\n        ]\n        sequences = [\n            {\n                'column': VLM._meta.pk.column,\n                'table': VLM._meta.db_table\n            },\n        ]\n        cursor = connection.cursor()\n        for statement in connection.ops.sql_flush(no_style(), tables, sequences):\n            cursor.execute(statement)\n\nclass SequenceResetTest(TestCase):\n    def test_generic_relation(self):\n        \"Sequence names are correct when resetting generic relations (Ref #13941)\"\n        # Create an object with a manually specified PK\n        models.Post.objects.create(id=10, name='1st post', text='hello world')\n\n        # Reset the sequences for the database\n        cursor = connection.cursor()\n        commands = connections[DEFAULT_DB_ALIAS].ops.sequence_reset_sql(no_style(), [models.Post])\n        for sql in commands:\n            cursor.execute(sql)\n\n        # If we create a new object now, it should have a PK greater\n        # than the PK we specified manually.\n        obj = models.Post.objects.create(name='New post', text='goodbye world')\n        self.assertTrue(obj.pk > 10)\n\nclass PostgresVersionTest(TestCase):\n    def assert_parses(self, version_string, version):\n        self.assertEqual(pg_version._parse_version(version_string), version)\n\n    def test_parsing(self):\n        \"\"\"Test PostgreSQL version parsing from `SELECT version()` output\"\"\"\n        self.assert_parses(\"PostgreSQL 8.3 beta4\", 80300)\n        self.assert_parses(\"PostgreSQL 8.3\", 80300)\n        self.assert_parses(\"EnterpriseDB 8.3\", 80300)\n        self.assert_parses(\"PostgreSQL 8.3.6\", 80306)\n        self.assert_parses(\"PostgreSQL 8.4beta1\", 80400)\n        self.assert_parses(\"PostgreSQL 8.3.1 on i386-apple-darwin9.2.2, compiled by GCC i686-apple-darwin9-gcc-4.0.1 (GCC) 4.0.1 (Apple Inc. build 5478)\", 80301)\n\n    def test_version_detection(self):\n        \"\"\"Test PostgreSQL version detection\"\"\"\n\n        # Helper mocks\n        class CursorMock(object):\n            \"Very simple mock of DB-API cursor\"\n            def execute(self, arg):\n                pass\n\n            def fetchone(self):\n                return [\"PostgreSQL 8.3\"]\n\n        class OlderConnectionMock(object):\n            \"Mock of psycopg2 (< 2.0.12) connection\"\n            def cursor(self):\n                return CursorMock()\n\n        # psycopg2 < 2.0.12 code path\n        conn = OlderConnectionMock()\n        self.assertEqual(pg_version.get_version(conn), 80300)\n\nclass PostgresNewConnectionTest(TestCase):\n    \"\"\"\n    #17062: PostgreSQL shouldn't roll back SET TIME ZONE, even if the first\n    transaction is rolled back.\n    \"\"\"\n    @unittest.skipUnless(\n        connection.vendor == 'postgresql' and connection.isolation_level > 0,\n        \"This test applies only to PostgreSQL without autocommit\")\n    def test_connect_and_rollback(self):\n        new_connections = ConnectionHandler(settings.DATABASES)\n        new_connection = new_connections[DEFAULT_DB_ALIAS]\n        try:\n            # Ensure the database default time zone is different than\n            # the time zone in new_connection.settings_dict. We can\n            # get the default time zone by reset & show.\n            cursor = new_connection.cursor()\n            cursor.execute(\"RESET TIMEZONE\")\n            cursor.execute(\"SHOW TIMEZONE\")\n            db_default_tz = cursor.fetchone()[0]\n            new_tz = 'Europe/Paris' if db_default_tz == 'UTC' else 'UTC'\n            new_connection.close()\n\n            # Fetch a new connection with the new_tz as default\n            # time zone, run a query and rollback.\n            new_connection.settings_dict['TIME_ZONE'] = new_tz\n            new_connection.enter_transaction_management()\n            cursor = new_connection.cursor()\n            new_connection.rollback()\n\n            # Now let's see if the rollback rolled back the SET TIME ZONE.\n            cursor.execute(\"SHOW TIMEZONE\")\n            tz = cursor.fetchone()[0]\n            self.assertEqual(new_tz, tz)\n        finally:\n            try:\n                new_connection.close()\n            except DatabaseError:\n                pass\n\n\n# Unfortunately with sqlite3 the in-memory test database cannot be\n# closed, and so it cannot be re-opened during testing, and so we\n# sadly disable this test for now.\nclass ConnectionCreatedSignalTest(TestCase):\n    @skipUnlessDBFeature('test_db_allows_multiple_connections')\n    def test_signal(self):\n        data = {}\n        def receiver(sender, connection, **kwargs):\n            data[\"connection\"] = connection\n\n        connection_created.connect(receiver)\n        connection.close()\n        cursor = connection.cursor()\n        self.assertTrue(data[\"connection\"].connection is connection.connection)\n\n        connection_created.disconnect(receiver)\n        data.clear()\n        cursor = connection.cursor()\n        self.assertTrue(data == {})\n\n\nclass EscapingChecks(TestCase):\n\n    @unittest.skipUnless(connection.vendor == 'sqlite',\n                         \"This is a sqlite-specific issue\")\n    def test_parameter_escaping(self):\n        #13648: '%s' escaping support for sqlite3\n        cursor = connection.cursor()\n        response = cursor.execute(\n            \"select strftime('%%s', date('now'))\").fetchall()[0][0]\n        self.assertNotEqual(response, None)\n        # response should be an non-zero integer\n        self.assertTrue(int(response))\n\n\nclass BackendTestCase(TestCase):\n\n    def create_squares_with_executemany(self, args):\n        cursor = connection.cursor()\n        opts = models.Square._meta\n        tbl = connection.introspection.table_name_converter(opts.db_table)\n        f1 = connection.ops.quote_name(opts.get_field('root').column)\n        f2 = connection.ops.quote_name(opts.get_field('square').column)\n        query = 'INSERT INTO %s (%s, %s) VALUES (%%s, %%s)' % (tbl, f1, f2)\n        cursor.executemany(query, args)\n\n    def test_cursor_executemany(self):\n        #4896: Test cursor.executemany\n        args = [(i, i**2) for i in range(-5, 6)]\n        self.create_squares_with_executemany(args)\n        self.assertEqual(models.Square.objects.count(), 11)\n        for i in range(-5, 6):\n            square = models.Square.objects.get(root=i)\n            self.assertEqual(square.square, i**2)\n\n    def test_cursor_executemany_with_empty_params_list(self):\n        #4765: executemany with params=[] does nothing\n        args = []\n        self.create_squares_with_executemany(args)\n        self.assertEqual(models.Square.objects.count(), 0)\n\n    def test_cursor_executemany_with_iterator(self):\n        #10320: executemany accepts iterators\n        args = iter((i, i**2) for i in range(-3, 2))\n        self.create_squares_with_executemany(args)\n        self.assertEqual(models.Square.objects.count(), 5)\n\n        args = iter((i, i**2) for i in range(3, 7))\n        with override_settings(DEBUG=True):\n            # same test for DebugCursorWrapper\n            self.create_squares_with_executemany(args)\n        self.assertEqual(models.Square.objects.count(), 9)\n\n\n    def test_unicode_fetches(self):\n        #6254: fetchone, fetchmany, fetchall return strings as unicode objects\n        qn = connection.ops.quote_name\n        models.Person(first_name=\"John\", last_name=\"Doe\").save()\n        models.Person(first_name=\"Jane\", last_name=\"Doe\").save()\n        models.Person(first_name=\"Mary\", last_name=\"Agnelline\").save()\n        models.Person(first_name=\"Peter\", last_name=\"Parker\").save()\n        models.Person(first_name=\"Clark\", last_name=\"Kent\").save()\n        opts2 = models.Person._meta\n        f3, f4 = opts2.get_field('first_name'), opts2.get_field('last_name')\n        query2 = ('SELECT %s, %s FROM %s ORDER BY %s'\n          % (qn(f3.column), qn(f4.column), connection.introspection.table_name_converter(opts2.db_table),\n             qn(f3.column)))\n        cursor = connection.cursor()\n        cursor.execute(query2)\n        self.assertEqual(cursor.fetchone(), ('Clark', 'Kent'))\n        self.assertEqual(list(cursor.fetchmany(2)), [('Jane', 'Doe'), ('John', 'Doe')])\n        self.assertEqual(list(cursor.fetchall()), [('Mary', 'Agnelline'), ('Peter', 'Parker')])\n\n    def test_unicode_password(self):\n        old_password = connection.settings_dict['PASSWORD']\n        connection.settings_dict['PASSWORD'] = \"françois\"\n        try:\n            cursor = connection.cursor()\n        except backend.Database.DatabaseError:\n            # As password is probably wrong, a database exception is expected\n            pass\n        except Exception as e:\n            self.fail(\"Unexpected error raised with unicode password: %s\" % e)\n        finally:\n            connection.settings_dict['PASSWORD'] = old_password\n\n    def test_database_operations_helper_class(self):\n        # Ticket #13630\n        self.assertTrue(hasattr(connection, 'ops'))\n        self.assertTrue(hasattr(connection.ops, 'connection'))\n        self.assertEqual(connection, connection.ops.connection)\n\n    def test_cached_db_features(self):\n        self.assertIn(connection.features.supports_transactions, (True, False))\n        self.assertIn(connection.features.supports_stddev, (True, False))\n        self.assertIn(connection.features.can_introspect_foreign_keys, (True, False))\n\n    def test_duplicate_table_error(self):\n        \"\"\" Test that creating an existing table returns a DatabaseError \"\"\"\n        cursor = connection.cursor()\n        query = 'CREATE TABLE %s (id INTEGER);' % models.Article._meta.db_table\n        with self.assertRaises(DatabaseError):\n            cursor.execute(query)\n\n# We don't make these tests conditional because that means we would need to\n# check and differentiate between:\n# * MySQL+InnoDB, MySQL+MYISAM (something we currently can't do).\n# * if sqlite3 (if/once we get #14204 fixed) has referential integrity turned\n#   on or not, something that would be controlled by runtime support and user\n#   preference.\n# verify if its type is django.database.db.IntegrityError.\n\nclass FkConstraintsTests(TransactionTestCase):\n\n    def setUp(self):\n        # Create a Reporter.\n        self.r = models.Reporter.objects.create(first_name='John', last_name='Smith')\n\n    def test_integrity_checks_on_creation(self):\n        \"\"\"\n        Try to create a model instance that violates a FK constraint. If it\n        fails it should fail with IntegrityError.\n        \"\"\"\n        a = models.Article(headline=\"This is a test\", pub_date=datetime.datetime(2005, 7, 27), reporter_id=30)\n        try:\n            a.save()\n        except IntegrityError:\n            return\n        self.skipTest(\"This backend does not support integrity checks.\")\n\n    def test_integrity_checks_on_update(self):\n        \"\"\"\n        Try to update a model instance introducing a FK constraint violation.\n        If it fails it should fail with IntegrityError.\n        \"\"\"\n        # Create an Article.\n        models.Article.objects.create(headline=\"Test article\", pub_date=datetime.datetime(2010, 9, 4), reporter=self.r)\n        # Retrive it from the DB\n        a = models.Article.objects.get(headline=\"Test article\")\n        a.reporter_id = 30\n        try:\n            a.save()\n        except IntegrityError:\n            return\n        self.skipTest(\"This backend does not support integrity checks.\")\n\n    def test_disable_constraint_checks_manually(self):\n        \"\"\"\n        When constraint checks are disabled, should be able to write bad data without IntegrityErrors.\n        \"\"\"\n        with transaction.commit_manually():\n            # Create an Article.\n            models.Article.objects.create(headline=\"Test article\", pub_date=datetime.datetime(2010, 9, 4), reporter=self.r)\n            # Retrive it from the DB\n            a = models.Article.objects.get(headline=\"Test article\")\n            a.reporter_id = 30\n            try:\n                connection.disable_constraint_checking()\n                a.save()\n                connection.enable_constraint_checking()\n            except IntegrityError:\n                self.fail(\"IntegrityError should not have occurred.\")\n            finally:\n                transaction.rollback()\n\n    def test_disable_constraint_checks_context_manager(self):\n        \"\"\"\n        When constraint checks are disabled (using context manager), should be able to write bad data without IntegrityErrors.\n        \"\"\"\n        with transaction.commit_manually():\n            # Create an Article.\n            models.Article.objects.create(headline=\"Test article\", pub_date=datetime.datetime(2010, 9, 4), reporter=self.r)\n            # Retrive it from the DB\n            a = models.Article.objects.get(headline=\"Test article\")\n            a.reporter_id = 30\n            try:\n                with connection.constraint_checks_disabled():\n                    a.save()\n            except IntegrityError:\n                self.fail(\"IntegrityError should not have occurred.\")\n            finally:\n                transaction.rollback()\n\n    def test_check_constraints(self):\n        \"\"\"\n        Constraint checks should raise an IntegrityError when bad data is in the DB.\n        \"\"\"\n        with transaction.commit_manually():\n            # Create an Article.\n            models.Article.objects.create(headline=\"Test article\", pub_date=datetime.datetime(2010, 9, 4), reporter=self.r)\n            # Retrive it from the DB\n            a = models.Article.objects.get(headline=\"Test article\")\n            a.reporter_id = 30\n            try:\n                with connection.constraint_checks_disabled():\n                    a.save()\n                    with self.assertRaises(IntegrityError):\n                        connection.check_constraints()\n            finally:\n                transaction.rollback()\n\n\nclass ThreadTests(TestCase):\n\n    def test_default_connection_thread_local(self):\n        \"\"\"\n        Ensure that the default connection (i.e. django.db.connection) is\n        different for each thread.\n        Refs #17258.\n        \"\"\"\n        connections_set = set()\n        connection.cursor()\n        connections_set.add(connection.connection)\n        def runner():\n            from django.db import connection\n            connection.cursor()\n            connections_set.add(connection.connection)\n        for x in range(2):\n            t = threading.Thread(target=runner)\n            t.start()\n            t.join()\n        self.assertEqual(len(connections_set), 3)\n        # Finish by closing the connections opened by the other threads (the\n        # connection opened in the main thread will automatically be closed on\n        # teardown).\n        for conn in connections_set:\n            if conn != connection.connection:\n                conn.close()\n\n    def test_connections_thread_local(self):\n        \"\"\"\n        Ensure that the connections are different for each thread.\n        Refs #17258.\n        \"\"\"\n        # Map connections by id because connections with identical aliases\n        # have the same hash.\n        connections_dict = {}\n        for conn in connections.all():\n            connections_dict[id(conn)] = conn\n        def runner():\n            from django.db import connections\n            for conn in connections.all():\n                # Allow thread sharing so the connection can be closed by the\n                # main thread.\n                conn.allow_thread_sharing = True\n                connections_dict[id(conn)] = conn\n        for x in range(2):\n            t = threading.Thread(target=runner)\n            t.start()\n            t.join()\n        self.assertEqual(len(connections_dict), 6)\n        # Finish by closing the connections opened by the other threads (the\n        # connection opened in the main thread will automatically be closed on\n        # teardown).\n        for conn in connections_dict.values():\n            if conn != connection:\n                conn.close()\n\n    def test_pass_connection_between_threads(self):\n        \"\"\"\n        Ensure that a connection can be passed from one thread to the other.\n        Refs #17258.\n        \"\"\"\n        models.Person.objects.create(first_name=\"John\", last_name=\"Doe\")\n\n        def do_thread():\n            def runner(main_thread_connection):\n                from django.db import connections\n                connections['default'] = main_thread_connection\n                try:\n                    models.Person.objects.get(first_name=\"John\", last_name=\"Doe\")\n                except Exception as e:\n                    exceptions.append(e)\n            t = threading.Thread(target=runner, args=[connections['default']])\n            t.start()\n            t.join()\n\n        # Without touching allow_thread_sharing, which should be False by default.\n        exceptions = []\n        do_thread()\n        # Forbidden!\n        self.assertIsInstance(exceptions[0], DatabaseError)\n\n        # If explicitly setting allow_thread_sharing to False\n        connections['default'].allow_thread_sharing = False\n        exceptions = []\n        do_thread()\n        # Forbidden!\n        self.assertIsInstance(exceptions[0], DatabaseError)\n\n        # If explicitly setting allow_thread_sharing to True\n        connections['default'].allow_thread_sharing = True\n        exceptions = []\n        do_thread()\n        # All good\n        self.assertEqual(exceptions, [])\n\n    def test_closing_non_shared_connections(self):\n        \"\"\"\n        Ensure that a connection that is not explicitly shareable cannot be\n        closed by another thread.\n        Refs #17258.\n        \"\"\"\n        # First, without explicitly enabling the connection for sharing.\n        exceptions = set()\n        def runner1():\n            def runner2(other_thread_connection):\n                try:\n                    other_thread_connection.close()\n                except DatabaseError as e:\n                    exceptions.add(e)\n            t2 = threading.Thread(target=runner2, args=[connections['default']])\n            t2.start()\n            t2.join()\n        t1 = threading.Thread(target=runner1)\n        t1.start()\n        t1.join()\n        # The exception was raised\n        self.assertEqual(len(exceptions), 1)\n\n        # Then, with explicitly enabling the connection for sharing.\n        exceptions = set()\n        def runner1():\n            def runner2(other_thread_connection):\n                try:\n                    other_thread_connection.close()\n                except DatabaseError as e:\n                    exceptions.add(e)\n            # Enable thread sharing\n            connections['default'].allow_thread_sharing = True\n            t2 = threading.Thread(target=runner2, args=[connections['default']])\n            t2.start()\n            t2.join()\n        t1 = threading.Thread(target=runner1)\n        t1.start()\n        t1.join()\n        # No exception was raised\n        self.assertEqual(len(exceptions), 0)\n\n\nclass MySQLPKZeroTests(TestCase):\n    \"\"\"\n    Zero as id for AutoField should raise exception in MySQL, because MySQL\n    does not allow zero for automatic primary key.\n    \"\"\"\n\n    @skipIfDBFeature('allows_primary_key_0')\n    def test_zero_as_autoval(self):\n        with self.assertRaises(ValueError):\n            models.Square.objects.create(id=0, root=0, square=1)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/bash_completion/__init__.py",
    "content": "\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/bash_completion/management/__init__.py",
    "content": "\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/bash_completion/management/commands/__init__.py",
    "content": "\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/bash_completion/management/commands/test_command.py",
    "content": "from optparse import make_option\n\nfrom django.core.management.base import BaseCommand\n\n\nclass Command(BaseCommand):\n    option_list = BaseCommand.option_list + (\n        make_option(\"--list\", action=\"store_true\", dest=\"list\",\n                    help=\"Print all options\"),\n    )\n\n    def handle(self, *args, **options):\n        pass\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/bash_completion/models.py",
    "content": "\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/bash_completion/tests.py",
    "content": "\"\"\"\nA series of tests to establish that the command-line bash completion works.\n\"\"\"\nimport os\nimport sys\n\nfrom django.conf import settings\nfrom django.core.management import ManagementUtility\nfrom django.utils import unittest\nfrom django.utils.six import StringIO\n\n\nclass BashCompletionTests(unittest.TestCase):\n    \"\"\"\n    Testing the Python level bash completion code.\n    This requires setting up the environment as if we got passed data\n    from bash.\n    \"\"\"\n\n    def setUp(self):\n        self.old_DJANGO_AUTO_COMPLETE = os.environ.get('DJANGO_AUTO_COMPLETE')\n        os.environ['DJANGO_AUTO_COMPLETE'] = '1'\n        self.output = StringIO()\n        self.old_stdout = sys.stdout\n        sys.stdout = self.output\n\n    def tearDown(self):\n        sys.stdout = self.old_stdout\n        if self.old_DJANGO_AUTO_COMPLETE:\n            os.environ['DJANGO_AUTO_COMPLETE'] = self.old_DJANGO_AUTO_COMPLETE\n        else:\n            del os.environ['DJANGO_AUTO_COMPLETE']\n\n    def _user_input(self, input_str):\n        os.environ['COMP_WORDS'] = input_str\n        os.environ['COMP_CWORD'] = str(len(input_str.split()) - 1)\n        sys.argv = input_str.split(' ')\n\n    def _run_autocomplete(self):\n        util = ManagementUtility(argv=sys.argv)\n        try:\n            util.autocomplete()\n        except SystemExit:\n            pass\n        return self.output.getvalue().strip().split('\\n')\n\n    def test_django_admin_py(self):\n        \"django_admin.py will autocomplete option flags\"\n        self._user_input('django-admin.py sqlall --v')\n        output = self._run_autocomplete()\n        self.assertEqual(output, ['--verbosity='])\n\n    def test_manage_py(self):\n        \"manage.py will autocomplete option flags\"\n        self._user_input('manage.py sqlall --v')\n        output = self._run_autocomplete()\n        self.assertEqual(output, ['--verbosity='])\n\n    def test_custom_command(self):\n        \"A custom command can autocomplete option flags\"\n        self._user_input('django-admin.py test_command --l')\n        output = self._run_autocomplete()\n        self.assertEqual(output, ['--list'])\n\n    def test_subcommands(self):\n        \"Subcommands can be autocompleted\"\n        self._user_input('django-admin.py sql')\n        output = self._run_autocomplete()\n        self.assertEqual(output, ['sql sqlall sqlclear sqlcustom sqlflush sqlindexes sqlinitialdata sqlsequencereset'])\n\n    def test_help(self):\n        \"No errors, just an empty list if there are no autocomplete options\"\n        self._user_input('django-admin.py help --')\n        output = self._run_autocomplete()\n        self.assertEqual(output, [''])\n\n    def test_runfcgi(self):\n        \"Command arguments will be autocompleted\"\n        self._user_input('django-admin.py runfcgi h')\n        output = self._run_autocomplete()\n        self.assertEqual(output, ['host='])\n\n    def test_app_completion(self):\n        \"Application names will be autocompleted for an AppCommand\"\n        self._user_input('django-admin.py sqlall a')\n        output = self._run_autocomplete()\n        app_labels = [name.split('.')[-1] for name in settings.INSTALLED_APPS]\n        self.assertEqual(output, sorted(label for label in app_labels if label.startswith('a')))\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/bug639/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/bug639/models.py",
    "content": "import tempfile\n\nfrom django.core.files.storage import FileSystemStorage\nfrom django.db import models\nfrom django.forms import ModelForm\n\n\ntemp_storage_dir = tempfile.mkdtemp()\ntemp_storage = FileSystemStorage(temp_storage_dir)\n\nclass Photo(models.Model):\n    title = models.CharField(max_length=30)\n    image = models.FileField(storage=temp_storage, upload_to='tests')\n\n    # Support code for the tests; this keeps track of how many times save()\n    # gets called on each instance.\n    def __init__(self, *args, **kwargs):\n        super(Photo, self).__init__(*args, **kwargs)\n        self._savecount = 0\n\n    def save(self, force_insert=False, force_update=False):\n        super(Photo, self).save(force_insert, force_update)\n        self._savecount += 1\n\nclass PhotoForm(ModelForm):\n    class Meta:\n        model = Photo\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/bug639/tests.py",
    "content": "\"\"\"\nTests for file field behavior, and specifically #639, in which Model.save()\ngets called *again* for each FileField. This test will fail if calling a\nModelForm's save() method causes Model.save() to be called more than once.\n\"\"\"\n\nfrom __future__ import absolute_import\n\nimport os\nimport shutil\n\nfrom django.core.files.uploadedfile import SimpleUploadedFile\nfrom django.utils import unittest\nfrom django.utils._os import upath\n\nfrom .models import Photo, PhotoForm, temp_storage_dir\n\n\nclass Bug639Test(unittest.TestCase):\n\n    def testBug639(self):\n        \"\"\"\n        Simulate a file upload and check how many times Model.save() gets\n        called.\n        \"\"\"\n        # Grab an image for testing.\n        filename = os.path.join(os.path.dirname(upath(__file__)), \"test.jpg\")\n        with open(filename, \"rb\") as fp:\n            img = fp.read()\n\n        # Fake a POST QueryDict and FILES MultiValueDict.\n        data = {'title': 'Testing'}\n        files = {\"image\": SimpleUploadedFile('test.jpg', img, 'image/jpeg')}\n\n        form = PhotoForm(data=data, files=files)\n        p = form.save()\n\n        # Check the savecount stored on the object (see the model).\n        self.assertEqual(p._savecount, 1)\n\n    def tearDown(self):\n        \"\"\"\n        Make sure to delete the \"uploaded\" file to avoid clogging /tmp.\n        \"\"\"\n        p = Photo.objects.get()\n        p.image.delete(save=False)\n        shutil.rmtree(temp_storage_dir)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/bug8245/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/bug8245/admin.py",
    "content": "from __future__ import absolute_import\n\nfrom django.contrib import admin\n\nfrom .models import Story\n\n\nadmin.site.register(Story)\nraise Exception(\"Bad admin module\")\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/bug8245/models.py",
    "content": "from django.db import models\n\n\nclass Story(models.Model):\n    title = models.CharField(max_length=10)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/bug8245/tests.py",
    "content": "from django.contrib import admin\nfrom django.utils.unittest import TestCase\n\n\nclass Bug8245Test(TestCase):\n    \"\"\"\n    Test for bug #8245 - don't raise an AlreadyRegistered exception when using\n    autodiscover() and an admin.py module contains an error.\n    \"\"\"\n    def test_bug_8245(self):\n        # The first time autodiscover is called, we should get our real error.\n        with self.assertRaises(Exception) as cm:\n            admin.autodiscover()\n        self.assertEqual(str(cm.exception), \"Bad admin module\")\n\n        # Calling autodiscover again should raise the very same error it did\n        # the first time, not an AlreadyRegistered error.\n        with self.assertRaises(Exception) as cm:\n            admin.autodiscover()\n        self.assertEqual(str(cm.exception), \"Bad admin module\")\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/builtin_server/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/builtin_server/models.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/builtin_server/tests.py",
    "content": "from __future__ import unicode_literals\n\nfrom io import BytesIO\n\nfrom django.core.servers.basehttp import ServerHandler\nfrom django.utils.unittest import TestCase\n\n#\n# Tests for #9659: wsgi.file_wrapper in the builtin server.\n# We need to mock a couple of handlers and keep track of what\n# gets called when using a couple kinds of WSGI apps.\n#\n\nclass DummyHandler(object):\n    def log_request(*args, **kwargs):\n        pass\n\nclass FileWrapperHandler(ServerHandler):\n    def __init__(self, *args, **kwargs):\n        ServerHandler.__init__(self, *args, **kwargs)\n        self.request_handler = DummyHandler()\n        self._used_sendfile = False\n\n    def sendfile(self):\n        self._used_sendfile = True\n        return True\n\ndef wsgi_app(environ, start_response):\n    start_response(str('200 OK'), [(str('Content-Type'), str('text/plain'))])\n    return [b'Hello World!']\n\ndef wsgi_app_file_wrapper(environ, start_response):\n    start_response(str('200 OK'), [(str('Content-Type'), str('text/plain'))])\n    return environ['wsgi.file_wrapper'](BytesIO(b'foo'))\n\nclass WSGIFileWrapperTests(TestCase):\n    \"\"\"\n    Test that the wsgi.file_wrapper works for the builting server.\n    \"\"\"\n\n    def test_file_wrapper_uses_sendfile(self):\n        env = {'SERVER_PROTOCOL': 'HTTP/1.0'}\n        handler = FileWrapperHandler(None, BytesIO(), BytesIO(), env)\n        handler.run(wsgi_app_file_wrapper)\n        self.assertTrue(handler._used_sendfile)\n        self.assertEqual(handler.stdout.getvalue(), b'')\n        self.assertEqual(handler.stderr.getvalue(), b'')\n\n    def test_file_wrapper_no_sendfile(self):\n        env = {'SERVER_PROTOCOL': 'HTTP/1.0'}\n        handler = FileWrapperHandler(None, BytesIO(), BytesIO(), env)\n        handler.run(wsgi_app)\n        self.assertFalse(handler._used_sendfile)\n        self.assertEqual(handler.stdout.getvalue().splitlines()[-1], b'Hello World!')\n        self.assertEqual(handler.stderr.getvalue(), b'')\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/bulk_create/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/bulk_create/models.py",
    "content": "from django.db import models\n\n\nclass Country(models.Model):\n    name = models.CharField(max_length=255)\n    iso_two_letter = models.CharField(max_length=2)\n\nclass Place(models.Model):\n    name = models.CharField(max_length=100)\n\n    class Meta:\n        abstract = True\n\nclass Restaurant(Place):\n    pass\n\nclass Pizzeria(Restaurant):\n    pass\n\nclass State(models.Model):\n    two_letter_code = models.CharField(max_length=2, primary_key=True)\n\nclass TwoFields(models.Model):\n    f1 = models.IntegerField(unique=True)\n    f2 = models.IntegerField(unique=True)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/bulk_create/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom operator import attrgetter\n\nfrom django.db import connection\nfrom django.test import TestCase, skipIfDBFeature, skipUnlessDBFeature\nfrom django.test.utils import override_settings\n\nfrom .models import Country, Restaurant, Pizzeria, State, TwoFields\n\n\nclass BulkCreateTests(TestCase):\n    def setUp(self):\n        self.data = [\n            Country(name=\"United States of America\", iso_two_letter=\"US\"),\n            Country(name=\"The Netherlands\", iso_two_letter=\"NL\"),\n            Country(name=\"Germany\", iso_two_letter=\"DE\"),\n            Country(name=\"Czech Republic\", iso_two_letter=\"CZ\")\n        ]\n\n    def test_simple(self):\n        created = Country.objects.bulk_create(self.data)\n        self.assertEqual(len(created), 4)\n        self.assertQuerysetEqual(Country.objects.order_by(\"-name\"), [\n            \"United States of America\", \"The Netherlands\", \"Germany\", \"Czech Republic\"\n        ], attrgetter(\"name\"))\n\n        created = Country.objects.bulk_create([])\n        self.assertEqual(created, [])\n        self.assertEqual(Country.objects.count(), 4)\n\n    @skipUnlessDBFeature('has_bulk_insert')\n    def test_efficiency(self):\n        with self.assertNumQueries(1):\n            Country.objects.bulk_create(self.data)\n\n    def test_inheritance(self):\n        Restaurant.objects.bulk_create([\n            Restaurant(name=\"Nicholas's\")\n        ])\n        self.assertQuerysetEqual(Restaurant.objects.all(), [\n            \"Nicholas's\",\n        ], attrgetter(\"name\"))\n        with self.assertRaises(ValueError):\n            Pizzeria.objects.bulk_create([\n                Pizzeria(name=\"The Art of Pizza\")\n            ])\n        self.assertQuerysetEqual(Pizzeria.objects.all(), [])\n        self.assertQuerysetEqual(Restaurant.objects.all(), [\n            \"Nicholas's\",\n        ], attrgetter(\"name\"))\n\n    def test_non_auto_increment_pk(self):\n        State.objects.bulk_create([\n            State(two_letter_code=s)\n            for s in [\"IL\", \"NY\", \"CA\", \"ME\"]\n        ])\n        self.assertQuerysetEqual(State.objects.order_by(\"two_letter_code\"), [\n            \"CA\", \"IL\", \"ME\", \"NY\",\n        ], attrgetter(\"two_letter_code\"))\n\n    @skipUnlessDBFeature('has_bulk_insert')\n    def test_non_auto_increment_pk_efficiency(self):\n        with self.assertNumQueries(1):\n            State.objects.bulk_create([\n                State(two_letter_code=s)\n                for s in [\"IL\", \"NY\", \"CA\", \"ME\"]\n            ])\n        self.assertQuerysetEqual(State.objects.order_by(\"two_letter_code\"), [\n            \"CA\", \"IL\", \"ME\", \"NY\",\n        ], attrgetter(\"two_letter_code\"))\n\n    @skipIfDBFeature('allows_primary_key_0')\n    def test_zero_as_autoval(self):\n        \"\"\"\n        Zero as id for AutoField should raise exception in MySQL, because MySQL\n        does not allow zero for automatic primary key.\n        \"\"\"\n\n        valid_country = Country(name='Germany', iso_two_letter='DE')\n        invalid_country = Country(id=0, name='Poland', iso_two_letter='PL')\n        with self.assertRaises(ValueError):\n            Country.objects.bulk_create([valid_country, invalid_country])\n\n    def test_batch_same_vals(self):\n        # Sqlite had a problem where all the same-valued models were\n        # collapsed to one insert.\n        Restaurant.objects.bulk_create([\n            Restaurant(name='foo') for i in range(0, 2)\n        ])\n        self.assertEqual(Restaurant.objects.count(), 2)\n\n    def test_large_batch(self):\n        with override_settings(DEBUG=True):\n            connection.queries = []\n            TwoFields.objects.bulk_create([\n                   TwoFields(f1=i, f2=i+1) for i in range(0, 1001)\n                ])\n        self.assertEqual(TwoFields.objects.count(), 1001)\n        self.assertEqual(\n            TwoFields.objects.filter(f1__gte=450, f1__lte=550).count(),\n            101)\n        self.assertEqual(TwoFields.objects.filter(f2__gte=901).count(), 101)\n\n    @skipUnlessDBFeature('has_bulk_insert')\n    def test_large_single_field_batch(self):\n        # SQLite had a problem with more than 500 UNIONed selects in single\n        # query.\n        Restaurant.objects.bulk_create([\n            Restaurant() for i in range(0, 501)\n        ])\n\n    @skipUnlessDBFeature('has_bulk_insert')\n    def test_large_batch_efficiency(self):\n        with override_settings(DEBUG=True):\n            connection.queries = []\n            TwoFields.objects.bulk_create([\n                   TwoFields(f1=i, f2=i+1) for i in range(0, 1001)\n                ])\n            self.assertTrue(len(connection.queries) < 10)\n\n    def test_large_batch_mixed(self):\n        \"\"\"\n        Test inserting a large batch with objects having primary key set\n        mixed together with objects without PK set.\n        \"\"\"\n        with override_settings(DEBUG=True):\n            connection.queries = []\n            TwoFields.objects.bulk_create([\n                TwoFields(id=i if i % 2 == 0 else None, f1=i, f2=i+1)\n                for i in range(100000, 101000)])\n        self.assertEqual(TwoFields.objects.count(), 1000)\n        # We can't assume much about the ID's created, except that the above\n        # created IDs must exist.\n        id_range = range(100000, 101000, 2)\n        self.assertEqual(TwoFields.objects.filter(id__in=id_range).count(), 500)\n        self.assertEqual(TwoFields.objects.exclude(id__in=id_range).count(), 500)\n\n    @skipUnlessDBFeature('has_bulk_insert')\n    def test_large_batch_mixed_efficiency(self):\n        \"\"\"\n        Test inserting a large batch with objects having primary key set\n        mixed together with objects without PK set.\n        \"\"\"\n        with override_settings(DEBUG=True):\n            connection.queries = []\n            TwoFields.objects.bulk_create([\n                TwoFields(id=i if i % 2 == 0 else None, f1=i, f2=i+1)\n                for i in range(100000, 101000)])\n            self.assertTrue(len(connection.queries) < 10)\n\n    def test_explicit_batch_size(self):\n        objs = [TwoFields(f1=i, f2=i) for i in range(0, 4)]\n        TwoFields.objects.bulk_create(objs, 2)\n        self.assertEqual(TwoFields.objects.count(), len(objs))\n        TwoFields.objects.all().delete()\n        TwoFields.objects.bulk_create(objs, len(objs))\n        self.assertEqual(TwoFields.objects.count(), len(objs))\n\n    @skipUnlessDBFeature('has_bulk_insert')\n    def test_explicit_batch_size_efficiency(self):\n        objs = [TwoFields(f1=i, f2=i) for i in range(0, 100)]\n        with self.assertNumQueries(2):\n            TwoFields.objects.bulk_create(objs, 50)\n        TwoFields.objects.all().delete()\n        with self.assertNumQueries(1):\n            TwoFields.objects.bulk_create(objs, len(objs))\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/cache/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/cache/closeable_cache.py",
    "content": "from django.core.cache.backends.locmem import LocMemCache\n\n\nclass CloseHookMixin(object):\n    closed = False\n\n    def close(self, **kwargs):\n        self.closed = True\n\nclass CacheClass(CloseHookMixin, LocMemCache):\n    pass\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/cache/liberal_backend.py",
    "content": "from django.core.cache.backends.locmem import LocMemCache\n\n\nclass LiberalKeyValidationMixin(object):\n    def validate_key(self, key):\n        pass\n\nclass CacheClass(LiberalKeyValidationMixin, LocMemCache):\n    pass\n\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/cache/models.py",
    "content": "from django.utils import timezone\n\nfrom django.db import models\n\n\ndef expensive_calculation():\n    expensive_calculation.num_runs += 1\n    return timezone.now()\n\nclass Poll(models.Model):\n    question = models.CharField(max_length=200)\n    answer = models.CharField(max_length=200)\n    pub_date = models.DateTimeField('date published', default=expensive_calculation)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/cache/tests.py",
    "content": "# -*- coding: utf-8 -*-\n\n# Unit tests for cache framework\n# Uses whatever cache backend is set in the test settings file.\nfrom __future__ import absolute_import, unicode_literals\n\nimport hashlib\nimport os\nimport random\nimport re\nimport string\nimport tempfile\nimport time\nimport warnings\n\nfrom django.conf import settings\nfrom django.core import management\nfrom django.core.cache import get_cache\nfrom django.core.cache.backends.base import (CacheKeyWarning,\n    InvalidCacheBackendError)\nfrom django.db import router\nfrom django.http import (HttpResponse, HttpRequest, StreamingHttpResponse,\n    QueryDict)\nfrom django.middleware.cache import (FetchFromCacheMiddleware,\n    UpdateCacheMiddleware, CacheMiddleware)\nfrom django.template import Template\nfrom django.template.response import TemplateResponse\nfrom django.test import TestCase, TransactionTestCase, RequestFactory\nfrom django.test.utils import override_settings, six\nfrom django.utils import timezone, translation, unittest\nfrom django.utils.cache import (patch_vary_headers, get_cache_key,\n    learn_cache_key, patch_cache_control, patch_response_headers)\nfrom django.utils.encoding import force_text\nfrom django.views.decorators.cache import cache_page\n\nfrom .models import Poll, expensive_calculation\n\n# functions/classes for complex data type tests\ndef f():\n    return 42\n\nclass C:\n    def m(n):\n        return 24\n\n\nclass DummyCacheTests(unittest.TestCase):\n    # The Dummy cache backend doesn't really behave like a test backend,\n    # so it has different test requirements.\n    backend_name = 'django.core.cache.backends.dummy.DummyCache'\n\n    def setUp(self):\n        self.cache = get_cache(self.backend_name)\n\n    def test_simple(self):\n        \"Dummy cache backend ignores cache set calls\"\n        self.cache.set(\"key\", \"value\")\n        self.assertEqual(self.cache.get(\"key\"), None)\n\n    def test_add(self):\n        \"Add doesn't do anything in dummy cache backend\"\n        self.cache.add(\"addkey1\", \"value\")\n        result = self.cache.add(\"addkey1\", \"newvalue\")\n        self.assertEqual(result, True)\n        self.assertEqual(self.cache.get(\"addkey1\"), None)\n\n    def test_non_existent(self):\n        \"Non-existent keys aren't found in the dummy cache backend\"\n        self.assertEqual(self.cache.get(\"does_not_exist\"), None)\n        self.assertEqual(self.cache.get(\"does_not_exist\", \"bang!\"), \"bang!\")\n\n    def test_get_many(self):\n        \"get_many returns nothing for the dummy cache backend\"\n        self.cache.set('a', 'a')\n        self.cache.set('b', 'b')\n        self.cache.set('c', 'c')\n        self.cache.set('d', 'd')\n        self.assertEqual(self.cache.get_many(['a', 'c', 'd']), {})\n        self.assertEqual(self.cache.get_many(['a', 'b', 'e']), {})\n\n    def test_delete(self):\n        \"Cache deletion is transparently ignored on the dummy cache backend\"\n        self.cache.set(\"key1\", \"spam\")\n        self.cache.set(\"key2\", \"eggs\")\n        self.assertEqual(self.cache.get(\"key1\"), None)\n        self.cache.delete(\"key1\")\n        self.assertEqual(self.cache.get(\"key1\"), None)\n        self.assertEqual(self.cache.get(\"key2\"), None)\n\n    def test_has_key(self):\n        \"The has_key method doesn't ever return True for the dummy cache backend\"\n        self.cache.set(\"hello1\", \"goodbye1\")\n        self.assertEqual(self.cache.has_key(\"hello1\"), False)\n        self.assertEqual(self.cache.has_key(\"goodbye1\"), False)\n\n    def test_in(self):\n        \"The in operator doesn't ever return True for the dummy cache backend\"\n        self.cache.set(\"hello2\", \"goodbye2\")\n        self.assertEqual(\"hello2\" in self.cache, False)\n        self.assertEqual(\"goodbye2\" in self.cache, False)\n\n    def test_incr(self):\n        \"Dummy cache values can't be incremented\"\n        self.cache.set('answer', 42)\n        self.assertRaises(ValueError, self.cache.incr, 'answer')\n        self.assertRaises(ValueError, self.cache.incr, 'does_not_exist')\n\n    def test_decr(self):\n        \"Dummy cache values can't be decremented\"\n        self.cache.set('answer', 42)\n        self.assertRaises(ValueError, self.cache.decr, 'answer')\n        self.assertRaises(ValueError, self.cache.decr, 'does_not_exist')\n\n    def test_data_types(self):\n        \"All data types are ignored equally by the dummy cache\"\n        stuff = {\n            'string'    : 'this is a string',\n            'int'       : 42,\n            'list'      : [1, 2, 3, 4],\n            'tuple'     : (1, 2, 3, 4),\n            'dict'      : {'A': 1, 'B' : 2},\n            'function'  : f,\n            'class'     : C,\n        }\n        self.cache.set(\"stuff\", stuff)\n        self.assertEqual(self.cache.get(\"stuff\"), None)\n\n    def test_expiration(self):\n        \"Expiration has no effect on the dummy cache\"\n        self.cache.set('expire1', 'very quickly', 1)\n        self.cache.set('expire2', 'very quickly', 1)\n        self.cache.set('expire3', 'very quickly', 1)\n\n        time.sleep(2)\n        self.assertEqual(self.cache.get(\"expire1\"), None)\n\n        self.cache.add(\"expire2\", \"newvalue\")\n        self.assertEqual(self.cache.get(\"expire2\"), None)\n        self.assertEqual(self.cache.has_key(\"expire3\"), False)\n\n    def test_unicode(self):\n        \"Unicode values are ignored by the dummy cache\"\n        stuff = {\n            'ascii': 'ascii_value',\n            'unicode_ascii': 'Iñtërnâtiônàlizætiøn1',\n            'Iñtërnâtiônàlizætiøn': 'Iñtërnâtiônàlizætiøn2',\n            'ascii2': {'x' : 1 }\n            }\n        for (key, value) in stuff.items():\n            self.cache.set(key, value)\n            self.assertEqual(self.cache.get(key), None)\n\n    def test_set_many(self):\n        \"set_many does nothing for the dummy cache backend\"\n        self.cache.set_many({'a': 1, 'b': 2})\n        self.cache.set_many({'a': 1, 'b': 2}, timeout=2, version='1')\n\n    def test_delete_many(self):\n        \"delete_many does nothing for the dummy cache backend\"\n        self.cache.delete_many(['a', 'b'])\n\n    def test_clear(self):\n        \"clear does nothing for the dummy cache backend\"\n        self.cache.clear()\n\n    def test_incr_version(self):\n        \"Dummy cache versions can't be incremented\"\n        self.cache.set('answer', 42)\n        self.assertRaises(ValueError, self.cache.incr_version, 'answer')\n        self.assertRaises(ValueError, self.cache.incr_version, 'does_not_exist')\n\n    def test_decr_version(self):\n        \"Dummy cache versions can't be decremented\"\n        self.cache.set('answer', 42)\n        self.assertRaises(ValueError, self.cache.decr_version, 'answer')\n        self.assertRaises(ValueError, self.cache.decr_version, 'does_not_exist')\n\n\nclass BaseCacheTests(object):\n    # A common set of tests to apply to all cache backends\n\n    def _get_request_cache(self, path):\n        request = HttpRequest()\n        request.META = {\n            'SERVER_NAME': 'testserver',\n            'SERVER_PORT': 80,\n        }\n        request.path = request.path_info = path\n        request._cache_update_cache = True\n        request.method = 'GET'\n        return request\n\n    def test_simple(self):\n        # Simple cache set/get works\n        self.cache.set(\"key\", \"value\")\n        self.assertEqual(self.cache.get(\"key\"), \"value\")\n\n    def test_add(self):\n        # A key can be added to a cache\n        self.cache.add(\"addkey1\", \"value\")\n        result = self.cache.add(\"addkey1\", \"newvalue\")\n        self.assertEqual(result, False)\n        self.assertEqual(self.cache.get(\"addkey1\"), \"value\")\n\n    def test_prefix(self):\n        # Test for same cache key conflicts between shared backend\n        self.cache.set('somekey', 'value')\n\n        # should not be set in the prefixed cache\n        self.assertFalse(self.prefix_cache.has_key('somekey'))\n\n        self.prefix_cache.set('somekey', 'value2')\n\n        self.assertEqual(self.cache.get('somekey'), 'value')\n        self.assertEqual(self.prefix_cache.get('somekey'), 'value2')\n\n    def test_non_existent(self):\n        # Non-existent cache keys return as None/default\n        # get with non-existent keys\n        self.assertEqual(self.cache.get(\"does_not_exist\"), None)\n        self.assertEqual(self.cache.get(\"does_not_exist\", \"bang!\"), \"bang!\")\n\n    def test_get_many(self):\n        # Multiple cache keys can be returned using get_many\n        self.cache.set('a', 'a')\n        self.cache.set('b', 'b')\n        self.cache.set('c', 'c')\n        self.cache.set('d', 'd')\n        self.assertEqual(self.cache.get_many(['a', 'c', 'd']), {'a' : 'a', 'c' : 'c', 'd' : 'd'})\n        self.assertEqual(self.cache.get_many(['a', 'b', 'e']), {'a' : 'a', 'b' : 'b'})\n\n    def test_delete(self):\n        # Cache keys can be deleted\n        self.cache.set(\"key1\", \"spam\")\n        self.cache.set(\"key2\", \"eggs\")\n        self.assertEqual(self.cache.get(\"key1\"), \"spam\")\n        self.cache.delete(\"key1\")\n        self.assertEqual(self.cache.get(\"key1\"), None)\n        self.assertEqual(self.cache.get(\"key2\"), \"eggs\")\n\n    def test_has_key(self):\n        # The cache can be inspected for cache keys\n        self.cache.set(\"hello1\", \"goodbye1\")\n        self.assertEqual(self.cache.has_key(\"hello1\"), True)\n        self.assertEqual(self.cache.has_key(\"goodbye1\"), False)\n\n    def test_in(self):\n        # The in operator can be used to inspect cache contents\n        self.cache.set(\"hello2\", \"goodbye2\")\n        self.assertEqual(\"hello2\" in self.cache, True)\n        self.assertEqual(\"goodbye2\" in self.cache, False)\n\n    def test_incr(self):\n        # Cache values can be incremented\n        self.cache.set('answer', 41)\n        self.assertEqual(self.cache.incr('answer'), 42)\n        self.assertEqual(self.cache.get('answer'), 42)\n        self.assertEqual(self.cache.incr('answer', 10), 52)\n        self.assertEqual(self.cache.get('answer'), 52)\n        self.assertEqual(self.cache.incr('answer', -10), 42)\n        self.assertRaises(ValueError, self.cache.incr, 'does_not_exist')\n\n    def test_decr(self):\n        # Cache values can be decremented\n        self.cache.set('answer', 43)\n        self.assertEqual(self.cache.decr('answer'), 42)\n        self.assertEqual(self.cache.get('answer'), 42)\n        self.assertEqual(self.cache.decr('answer', 10), 32)\n        self.assertEqual(self.cache.get('answer'), 32)\n        self.assertEqual(self.cache.decr('answer', -10), 42)\n        self.assertRaises(ValueError, self.cache.decr, 'does_not_exist')\n\n    def test_data_types(self):\n        # Many different data types can be cached\n        stuff = {\n            'string'    : 'this is a string',\n            'int'       : 42,\n            'list'      : [1, 2, 3, 4],\n            'tuple'     : (1, 2, 3, 4),\n            'dict'      : {'A': 1, 'B' : 2},\n            'function'  : f,\n            'class'     : C,\n        }\n        self.cache.set(\"stuff\", stuff)\n        self.assertEqual(self.cache.get(\"stuff\"), stuff)\n\n    def test_cache_read_for_model_instance(self):\n        # Don't want fields with callable as default to be called on cache read\n        expensive_calculation.num_runs = 0\n        Poll.objects.all().delete()\n        my_poll = Poll.objects.create(question=\"Well?\")\n        self.assertEqual(Poll.objects.count(), 1)\n        pub_date = my_poll.pub_date\n        self.cache.set('question', my_poll)\n        cached_poll = self.cache.get('question')\n        self.assertEqual(cached_poll.pub_date, pub_date)\n        # We only want the default expensive calculation run once\n        self.assertEqual(expensive_calculation.num_runs, 1)\n\n    def test_cache_write_for_model_instance_with_deferred(self):\n        # Don't want fields with callable as default to be called on cache write\n        expensive_calculation.num_runs = 0\n        Poll.objects.all().delete()\n        my_poll = Poll.objects.create(question=\"What?\")\n        self.assertEqual(expensive_calculation.num_runs, 1)\n        defer_qs = Poll.objects.all().defer('question')\n        self.assertEqual(defer_qs.count(), 1)\n        self.assertEqual(expensive_calculation.num_runs, 1)\n        self.cache.set('deferred_queryset', defer_qs)\n        # cache set should not re-evaluate default functions\n        self.assertEqual(expensive_calculation.num_runs, 1)\n\n    def test_cache_read_for_model_instance_with_deferred(self):\n        # Don't want fields with callable as default to be called on cache read\n        expensive_calculation.num_runs = 0\n        Poll.objects.all().delete()\n        my_poll = Poll.objects.create(question=\"What?\")\n        self.assertEqual(expensive_calculation.num_runs, 1)\n        defer_qs = Poll.objects.all().defer('question')\n        self.assertEqual(defer_qs.count(), 1)\n        self.cache.set('deferred_queryset', defer_qs)\n        self.assertEqual(expensive_calculation.num_runs, 1)\n        runs_before_cache_read = expensive_calculation.num_runs\n        cached_polls = self.cache.get('deferred_queryset')\n        # We only want the default expensive calculation run on creation and set\n        self.assertEqual(expensive_calculation.num_runs, runs_before_cache_read)\n\n    def test_expiration(self):\n        # Cache values can be set to expire\n        self.cache.set('expire1', 'very quickly', 1)\n        self.cache.set('expire2', 'very quickly', 1)\n        self.cache.set('expire3', 'very quickly', 1)\n\n        time.sleep(2)\n        self.assertEqual(self.cache.get(\"expire1\"), None)\n\n        self.cache.add(\"expire2\", \"newvalue\")\n        self.assertEqual(self.cache.get(\"expire2\"), \"newvalue\")\n        self.assertEqual(self.cache.has_key(\"expire3\"), False)\n\n    def test_unicode(self):\n        # Unicode values can be cached\n        stuff = {\n            'ascii': 'ascii_value',\n            'unicode_ascii': 'Iñtërnâtiônàlizætiøn1',\n            'Iñtërnâtiônàlizætiøn': 'Iñtërnâtiônàlizætiøn2',\n            'ascii2': {'x' : 1 }\n            }\n        # Test `set`\n        for (key, value) in stuff.items():\n            self.cache.set(key, value)\n            self.assertEqual(self.cache.get(key), value)\n\n        # Test `add`\n        for (key, value) in stuff.items():\n            self.cache.delete(key)\n            self.cache.add(key, value)\n            self.assertEqual(self.cache.get(key), value)\n\n        # Test `set_many`\n        for (key, value) in stuff.items():\n            self.cache.delete(key)\n        self.cache.set_many(stuff)\n        for (key, value) in stuff.items():\n            self.assertEqual(self.cache.get(key), value)\n\n    def test_binary_string(self):\n        # Binary strings should be cacheable\n        from zlib import compress, decompress\n        value = 'value_to_be_compressed'\n        compressed_value = compress(value.encode())\n\n        # Test set\n        self.cache.set('binary1', compressed_value)\n        compressed_result = self.cache.get('binary1')\n        self.assertEqual(compressed_value, compressed_result)\n        self.assertEqual(value, decompress(compressed_result).decode())\n\n        # Test add\n        self.cache.add('binary1-add', compressed_value)\n        compressed_result = self.cache.get('binary1-add')\n        self.assertEqual(compressed_value, compressed_result)\n        self.assertEqual(value, decompress(compressed_result).decode())\n\n        # Test set_many\n        self.cache.set_many({'binary1-set_many': compressed_value})\n        compressed_result = self.cache.get('binary1-set_many')\n        self.assertEqual(compressed_value, compressed_result)\n        self.assertEqual(value, decompress(compressed_result).decode())\n\n    def test_set_many(self):\n        # Multiple keys can be set using set_many\n        self.cache.set_many({\"key1\": \"spam\", \"key2\": \"eggs\"})\n        self.assertEqual(self.cache.get(\"key1\"), \"spam\")\n        self.assertEqual(self.cache.get(\"key2\"), \"eggs\")\n\n    def test_set_many_expiration(self):\n        # set_many takes a second ``timeout`` parameter\n        self.cache.set_many({\"key1\": \"spam\", \"key2\": \"eggs\"}, 1)\n        time.sleep(2)\n        self.assertEqual(self.cache.get(\"key1\"), None)\n        self.assertEqual(self.cache.get(\"key2\"), None)\n\n    def test_delete_many(self):\n        # Multiple keys can be deleted using delete_many\n        self.cache.set(\"key1\", \"spam\")\n        self.cache.set(\"key2\", \"eggs\")\n        self.cache.set(\"key3\", \"ham\")\n        self.cache.delete_many([\"key1\", \"key2\"])\n        self.assertEqual(self.cache.get(\"key1\"), None)\n        self.assertEqual(self.cache.get(\"key2\"), None)\n        self.assertEqual(self.cache.get(\"key3\"), \"ham\")\n\n    def test_clear(self):\n        # The cache can be emptied using clear\n        self.cache.set(\"key1\", \"spam\")\n        self.cache.set(\"key2\", \"eggs\")\n        self.cache.clear()\n        self.assertEqual(self.cache.get(\"key1\"), None)\n        self.assertEqual(self.cache.get(\"key2\"), None)\n\n    def test_long_timeout(self):\n        '''\n        Using a timeout greater than 30 days makes memcached think\n        it is an absolute expiration timestamp instead of a relative\n        offset. Test that we honour this convention. Refs #12399.\n        '''\n        self.cache.set('key1', 'eggs', 60*60*24*30 + 1) #30 days + 1 second\n        self.assertEqual(self.cache.get('key1'), 'eggs')\n\n        self.cache.add('key2', 'ham', 60*60*24*30 + 1)\n        self.assertEqual(self.cache.get('key2'), 'ham')\n\n        self.cache.set_many({'key3': 'sausage', 'key4': 'lobster bisque'}, 60*60*24*30 + 1)\n        self.assertEqual(self.cache.get('key3'), 'sausage')\n        self.assertEqual(self.cache.get('key4'), 'lobster bisque')\n\n    def test_float_timeout(self):\n        # Make sure a timeout given as a float doesn't crash anything.\n        self.cache.set(\"key1\", \"spam\", 100.2)\n        self.assertEqual(self.cache.get(\"key1\"), \"spam\")\n\n    def perform_cull_test(self, initial_count, final_count):\n        \"\"\"This is implemented as a utility method, because only some of the backends\n        implement culling. The culling algorithm also varies slightly, so the final\n        number of entries will vary between backends\"\"\"\n        # Create initial cache key entries. This will overflow the cache, causing a cull\n        for i in range(1, initial_count):\n            self.cache.set('cull%d' % i, 'value', 1000)\n        count = 0\n        # Count how many keys are left in the cache.\n        for i in range(1, initial_count):\n            if self.cache.has_key('cull%d' % i):\n                count = count + 1\n        self.assertEqual(count, final_count)\n\n    def test_invalid_keys(self):\n        \"\"\"\n        All the builtin backends (except memcached, see below) should warn on\n        keys that would be refused by memcached. This encourages portable\n        caching code without making it too difficult to use production backends\n        with more liberal key rules. Refs #6447.\n\n        \"\"\"\n        # mimic custom ``make_key`` method being defined since the default will\n        # never show the below warnings\n        def func(key, *args):\n            return key\n\n        old_func = self.cache.key_func\n        self.cache.key_func = func\n\n        try:\n            with warnings.catch_warnings(record=True) as w:\n                warnings.simplefilter(\"always\")\n                # memcached does not allow whitespace or control characters in keys\n                self.cache.set('key with spaces', 'value')\n                self.assertEqual(len(w), 2)\n                self.assertTrue(isinstance(w[0].message, CacheKeyWarning))\n            with warnings.catch_warnings(record=True) as w:\n                warnings.simplefilter(\"always\")\n                # memcached limits key length to 250\n                self.cache.set('a' * 251, 'value')\n                self.assertEqual(len(w), 1)\n                self.assertTrue(isinstance(w[0].message, CacheKeyWarning))\n        finally:\n            self.cache.key_func = old_func\n\n    def test_cache_versioning_get_set(self):\n        # set, using default version = 1\n        self.cache.set('answer1', 42)\n        self.assertEqual(self.cache.get('answer1'), 42)\n        self.assertEqual(self.cache.get('answer1', version=1), 42)\n        self.assertEqual(self.cache.get('answer1', version=2), None)\n\n        self.assertEqual(self.v2_cache.get('answer1'), None)\n        self.assertEqual(self.v2_cache.get('answer1', version=1), 42)\n        self.assertEqual(self.v2_cache.get('answer1', version=2), None)\n\n        # set, default version = 1, but manually override version = 2\n        self.cache.set('answer2', 42, version=2)\n        self.assertEqual(self.cache.get('answer2'), None)\n        self.assertEqual(self.cache.get('answer2', version=1), None)\n        self.assertEqual(self.cache.get('answer2', version=2), 42)\n\n        self.assertEqual(self.v2_cache.get('answer2'), 42)\n        self.assertEqual(self.v2_cache.get('answer2', version=1), None)\n        self.assertEqual(self.v2_cache.get('answer2', version=2), 42)\n\n        # v2 set, using default version = 2\n        self.v2_cache.set('answer3', 42)\n        self.assertEqual(self.cache.get('answer3'), None)\n        self.assertEqual(self.cache.get('answer3', version=1), None)\n        self.assertEqual(self.cache.get('answer3', version=2), 42)\n\n        self.assertEqual(self.v2_cache.get('answer3'), 42)\n        self.assertEqual(self.v2_cache.get('answer3', version=1), None)\n        self.assertEqual(self.v2_cache.get('answer3', version=2), 42)\n\n        # v2 set, default version = 2, but manually override version = 1\n        self.v2_cache.set('answer4', 42, version=1)\n        self.assertEqual(self.cache.get('answer4'), 42)\n        self.assertEqual(self.cache.get('answer4', version=1), 42)\n        self.assertEqual(self.cache.get('answer4', version=2), None)\n\n        self.assertEqual(self.v2_cache.get('answer4'), None)\n        self.assertEqual(self.v2_cache.get('answer4', version=1), 42)\n        self.assertEqual(self.v2_cache.get('answer4', version=2), None)\n\n    def test_cache_versioning_add(self):\n\n        # add, default version = 1, but manually override version = 2\n        self.cache.add('answer1', 42, version=2)\n        self.assertEqual(self.cache.get('answer1', version=1), None)\n        self.assertEqual(self.cache.get('answer1', version=2), 42)\n\n        self.cache.add('answer1', 37, version=2)\n        self.assertEqual(self.cache.get('answer1', version=1), None)\n        self.assertEqual(self.cache.get('answer1', version=2), 42)\n\n        self.cache.add('answer1', 37, version=1)\n        self.assertEqual(self.cache.get('answer1', version=1), 37)\n        self.assertEqual(self.cache.get('answer1', version=2), 42)\n\n        # v2 add, using default version = 2\n        self.v2_cache.add('answer2', 42)\n        self.assertEqual(self.cache.get('answer2', version=1), None)\n        self.assertEqual(self.cache.get('answer2', version=2), 42)\n\n        self.v2_cache.add('answer2', 37)\n        self.assertEqual(self.cache.get('answer2', version=1), None)\n        self.assertEqual(self.cache.get('answer2', version=2), 42)\n\n        self.v2_cache.add('answer2', 37, version=1)\n        self.assertEqual(self.cache.get('answer2', version=1), 37)\n        self.assertEqual(self.cache.get('answer2', version=2), 42)\n\n        # v2 add, default version = 2, but manually override version = 1\n        self.v2_cache.add('answer3', 42, version=1)\n        self.assertEqual(self.cache.get('answer3', version=1), 42)\n        self.assertEqual(self.cache.get('answer3', version=2), None)\n\n        self.v2_cache.add('answer3', 37, version=1)\n        self.assertEqual(self.cache.get('answer3', version=1), 42)\n        self.assertEqual(self.cache.get('answer3', version=2), None)\n\n        self.v2_cache.add('answer3', 37)\n        self.assertEqual(self.cache.get('answer3', version=1), 42)\n        self.assertEqual(self.cache.get('answer3', version=2), 37)\n\n    def test_cache_versioning_has_key(self):\n        self.cache.set('answer1', 42)\n\n        # has_key\n        self.assertTrue(self.cache.has_key('answer1'))\n        self.assertTrue(self.cache.has_key('answer1', version=1))\n        self.assertFalse(self.cache.has_key('answer1', version=2))\n\n        self.assertFalse(self.v2_cache.has_key('answer1'))\n        self.assertTrue(self.v2_cache.has_key('answer1', version=1))\n        self.assertFalse(self.v2_cache.has_key('answer1', version=2))\n\n    def test_cache_versioning_delete(self):\n        self.cache.set('answer1', 37, version=1)\n        self.cache.set('answer1', 42, version=2)\n        self.cache.delete('answer1')\n        self.assertEqual(self.cache.get('answer1', version=1), None)\n        self.assertEqual(self.cache.get('answer1', version=2), 42)\n\n        self.cache.set('answer2', 37, version=1)\n        self.cache.set('answer2', 42, version=2)\n        self.cache.delete('answer2', version=2)\n        self.assertEqual(self.cache.get('answer2', version=1), 37)\n        self.assertEqual(self.cache.get('answer2', version=2), None)\n\n        self.cache.set('answer3', 37, version=1)\n        self.cache.set('answer3', 42, version=2)\n        self.v2_cache.delete('answer3')\n        self.assertEqual(self.cache.get('answer3', version=1), 37)\n        self.assertEqual(self.cache.get('answer3', version=2), None)\n\n        self.cache.set('answer4', 37, version=1)\n        self.cache.set('answer4', 42, version=2)\n        self.v2_cache.delete('answer4', version=1)\n        self.assertEqual(self.cache.get('answer4', version=1), None)\n        self.assertEqual(self.cache.get('answer4', version=2), 42)\n\n    def test_cache_versioning_incr_decr(self):\n        self.cache.set('answer1', 37, version=1)\n        self.cache.set('answer1', 42, version=2)\n        self.cache.incr('answer1')\n        self.assertEqual(self.cache.get('answer1', version=1), 38)\n        self.assertEqual(self.cache.get('answer1', version=2), 42)\n        self.cache.decr('answer1')\n        self.assertEqual(self.cache.get('answer1', version=1), 37)\n        self.assertEqual(self.cache.get('answer1', version=2), 42)\n\n        self.cache.set('answer2', 37, version=1)\n        self.cache.set('answer2', 42, version=2)\n        self.cache.incr('answer2', version=2)\n        self.assertEqual(self.cache.get('answer2', version=1), 37)\n        self.assertEqual(self.cache.get('answer2', version=2), 43)\n        self.cache.decr('answer2', version=2)\n        self.assertEqual(self.cache.get('answer2', version=1), 37)\n        self.assertEqual(self.cache.get('answer2', version=2), 42)\n\n        self.cache.set('answer3', 37, version=1)\n        self.cache.set('answer3', 42, version=2)\n        self.v2_cache.incr('answer3')\n        self.assertEqual(self.cache.get('answer3', version=1), 37)\n        self.assertEqual(self.cache.get('answer3', version=2), 43)\n        self.v2_cache.decr('answer3')\n        self.assertEqual(self.cache.get('answer3', version=1), 37)\n        self.assertEqual(self.cache.get('answer3', version=2), 42)\n\n        self.cache.set('answer4', 37, version=1)\n        self.cache.set('answer4', 42, version=2)\n        self.v2_cache.incr('answer4', version=1)\n        self.assertEqual(self.cache.get('answer4', version=1), 38)\n        self.assertEqual(self.cache.get('answer4', version=2), 42)\n        self.v2_cache.decr('answer4', version=1)\n        self.assertEqual(self.cache.get('answer4', version=1), 37)\n        self.assertEqual(self.cache.get('answer4', version=2), 42)\n\n    def test_cache_versioning_get_set_many(self):\n        # set, using default version = 1\n        self.cache.set_many({'ford1': 37, 'arthur1': 42})\n        self.assertEqual(self.cache.get_many(['ford1','arthur1']),\n                         {'ford1': 37, 'arthur1': 42})\n        self.assertEqual(self.cache.get_many(['ford1','arthur1'], version=1),\n                         {'ford1': 37, 'arthur1': 42})\n        self.assertEqual(self.cache.get_many(['ford1','arthur1'], version=2), {})\n\n        self.assertEqual(self.v2_cache.get_many(['ford1','arthur1']), {})\n        self.assertEqual(self.v2_cache.get_many(['ford1','arthur1'], version=1),\n                         {'ford1': 37, 'arthur1': 42})\n        self.assertEqual(self.v2_cache.get_many(['ford1','arthur1'], version=2), {})\n\n        # set, default version = 1, but manually override version = 2\n        self.cache.set_many({'ford2': 37, 'arthur2': 42}, version=2)\n        self.assertEqual(self.cache.get_many(['ford2','arthur2']), {})\n        self.assertEqual(self.cache.get_many(['ford2','arthur2'], version=1), {})\n        self.assertEqual(self.cache.get_many(['ford2','arthur2'], version=2),\n                         {'ford2': 37, 'arthur2': 42})\n\n        self.assertEqual(self.v2_cache.get_many(['ford2','arthur2']),\n                         {'ford2': 37, 'arthur2': 42})\n        self.assertEqual(self.v2_cache.get_many(['ford2','arthur2'], version=1), {})\n        self.assertEqual(self.v2_cache.get_many(['ford2','arthur2'], version=2),\n                         {'ford2': 37, 'arthur2': 42})\n\n        # v2 set, using default version = 2\n        self.v2_cache.set_many({'ford3': 37, 'arthur3': 42})\n        self.assertEqual(self.cache.get_many(['ford3','arthur3']), {})\n        self.assertEqual(self.cache.get_many(['ford3','arthur3'], version=1), {})\n        self.assertEqual(self.cache.get_many(['ford3','arthur3'], version=2),\n                         {'ford3': 37, 'arthur3': 42})\n\n        self.assertEqual(self.v2_cache.get_many(['ford3','arthur3']),\n                         {'ford3': 37, 'arthur3': 42})\n        self.assertEqual(self.v2_cache.get_many(['ford3','arthur3'], version=1), {})\n        self.assertEqual(self.v2_cache.get_many(['ford3','arthur3'], version=2),\n                         {'ford3': 37, 'arthur3': 42})\n\n        # v2 set, default version = 2, but manually override version = 1\n        self.v2_cache.set_many({'ford4': 37, 'arthur4': 42}, version=1)\n        self.assertEqual(self.cache.get_many(['ford4','arthur4']),\n                         {'ford4': 37, 'arthur4': 42})\n        self.assertEqual(self.cache.get_many(['ford4','arthur4'], version=1),\n                         {'ford4': 37, 'arthur4': 42})\n        self.assertEqual(self.cache.get_many(['ford4','arthur4'], version=2), {})\n\n        self.assertEqual(self.v2_cache.get_many(['ford4','arthur4']), {})\n        self.assertEqual(self.v2_cache.get_many(['ford4','arthur4'], version=1),\n                         {'ford4': 37, 'arthur4': 42})\n        self.assertEqual(self.v2_cache.get_many(['ford4','arthur4'], version=2), {})\n\n    def test_incr_version(self):\n        self.cache.set('answer', 42, version=2)\n        self.assertEqual(self.cache.get('answer'), None)\n        self.assertEqual(self.cache.get('answer', version=1), None)\n        self.assertEqual(self.cache.get('answer', version=2), 42)\n        self.assertEqual(self.cache.get('answer', version=3), None)\n\n        self.assertEqual(self.cache.incr_version('answer', version=2), 3)\n        self.assertEqual(self.cache.get('answer'), None)\n        self.assertEqual(self.cache.get('answer', version=1), None)\n        self.assertEqual(self.cache.get('answer', version=2), None)\n        self.assertEqual(self.cache.get('answer', version=3), 42)\n\n        self.v2_cache.set('answer2', 42)\n        self.assertEqual(self.v2_cache.get('answer2'), 42)\n        self.assertEqual(self.v2_cache.get('answer2', version=1), None)\n        self.assertEqual(self.v2_cache.get('answer2', version=2), 42)\n        self.assertEqual(self.v2_cache.get('answer2', version=3), None)\n\n        self.assertEqual(self.v2_cache.incr_version('answer2'), 3)\n        self.assertEqual(self.v2_cache.get('answer2'), None)\n        self.assertEqual(self.v2_cache.get('answer2', version=1), None)\n        self.assertEqual(self.v2_cache.get('answer2', version=2), None)\n        self.assertEqual(self.v2_cache.get('answer2', version=3), 42)\n\n        self.assertRaises(ValueError, self.cache.incr_version, 'does_not_exist')\n\n    def test_decr_version(self):\n        self.cache.set('answer', 42, version=2)\n        self.assertEqual(self.cache.get('answer'), None)\n        self.assertEqual(self.cache.get('answer', version=1), None)\n        self.assertEqual(self.cache.get('answer', version=2), 42)\n\n        self.assertEqual(self.cache.decr_version('answer', version=2), 1)\n        self.assertEqual(self.cache.get('answer'), 42)\n        self.assertEqual(self.cache.get('answer', version=1), 42)\n        self.assertEqual(self.cache.get('answer', version=2), None)\n\n        self.v2_cache.set('answer2', 42)\n        self.assertEqual(self.v2_cache.get('answer2'), 42)\n        self.assertEqual(self.v2_cache.get('answer2', version=1), None)\n        self.assertEqual(self.v2_cache.get('answer2', version=2), 42)\n\n        self.assertEqual(self.v2_cache.decr_version('answer2'), 1)\n        self.assertEqual(self.v2_cache.get('answer2'), None)\n        self.assertEqual(self.v2_cache.get('answer2', version=1), 42)\n        self.assertEqual(self.v2_cache.get('answer2', version=2), None)\n\n        self.assertRaises(ValueError, self.cache.decr_version, 'does_not_exist', version=2)\n\n    def test_custom_key_func(self):\n        # Two caches with different key functions aren't visible to each other\n        self.cache.set('answer1', 42)\n        self.assertEqual(self.cache.get('answer1'), 42)\n        self.assertEqual(self.custom_key_cache.get('answer1'), None)\n        self.assertEqual(self.custom_key_cache2.get('answer1'), None)\n\n        self.custom_key_cache.set('answer2', 42)\n        self.assertEqual(self.cache.get('answer2'), None)\n        self.assertEqual(self.custom_key_cache.get('answer2'), 42)\n        self.assertEqual(self.custom_key_cache2.get('answer2'), 42)\n\n\n    def test_cache_write_unpickable_object(self):\n        update_middleware = UpdateCacheMiddleware()\n        update_middleware.cache = self.cache\n\n        fetch_middleware = FetchFromCacheMiddleware()\n        fetch_middleware.cache = self.cache\n\n        request = self._get_request_cache('/cache/test')\n        get_cache_data = FetchFromCacheMiddleware().process_request(request)\n        self.assertEqual(get_cache_data, None)\n\n        response = HttpResponse()\n        content = 'Testing cookie serialization.'\n        response.content = content\n        response.set_cookie('foo', 'bar')\n\n        update_middleware.process_response(request, response)\n\n        get_cache_data = fetch_middleware.process_request(request)\n        self.assertNotEqual(get_cache_data, None)\n        self.assertEqual(get_cache_data.content, content.encode('utf-8'))\n        self.assertEqual(get_cache_data.cookies, response.cookies)\n\n        update_middleware.process_response(request, get_cache_data)\n        get_cache_data = fetch_middleware.process_request(request)\n        self.assertNotEqual(get_cache_data, None)\n        self.assertEqual(get_cache_data.content, content.encode('utf-8'))\n        self.assertEqual(get_cache_data.cookies, response.cookies)\n\ndef custom_key_func(key, key_prefix, version):\n    \"A customized cache key function\"\n    return 'CUSTOM-' + '-'.join([key_prefix, str(version), key])\n\n\nclass DBCacheTests(BaseCacheTests, TransactionTestCase):\n    backend_name = 'django.core.cache.backends.db.DatabaseCache'\n\n    def setUp(self):\n        # Spaces are used in the table name to ensure quoting/escaping is working\n        self._table_name = 'test cache table'\n        management.call_command('createcachetable', self._table_name, verbosity=0, interactive=False)\n        self.cache = get_cache(self.backend_name, LOCATION=self._table_name, OPTIONS={'MAX_ENTRIES': 30})\n        self.prefix_cache = get_cache(self.backend_name, LOCATION=self._table_name, KEY_PREFIX='cacheprefix')\n        self.v2_cache = get_cache(self.backend_name, LOCATION=self._table_name, VERSION=2)\n        self.custom_key_cache = get_cache(self.backend_name, LOCATION=self._table_name, KEY_FUNCTION=custom_key_func)\n        self.custom_key_cache2 = get_cache(self.backend_name, LOCATION=self._table_name, KEY_FUNCTION='regressiontests.cache.tests.custom_key_func')\n\n    def tearDown(self):\n        from django.db import connection\n        cursor = connection.cursor()\n        cursor.execute('DROP TABLE %s' % connection.ops.quote_name(self._table_name))\n        connection.commit()\n\n    def test_cull(self):\n        self.perform_cull_test(50, 29)\n\n    def test_zero_cull(self):\n        self.cache = get_cache(self.backend_name, LOCATION=self._table_name, OPTIONS={'MAX_ENTRIES': 30, 'CULL_FREQUENCY': 0})\n        self.perform_cull_test(50, 18)\n\n    def test_old_initialization(self):\n        self.cache = get_cache('db://%s?max_entries=30&cull_frequency=0' % self._table_name)\n        self.perform_cull_test(50, 18)\n\n    def test_second_call_doesnt_crash(self):\n        with six.assertRaisesRegex(self, management.CommandError,\n                \"Cache table 'test cache table' could not be created\"):\n            management.call_command(\n               'createcachetable',\n                self._table_name,\n                verbosity=0,\n                interactive=False\n            )\n\n\n@override_settings(USE_TZ=True)\nclass DBCacheWithTimeZoneTests(DBCacheTests):\n    pass\n\n\nclass DBCacheRouter(object):\n    \"\"\"A router that puts the cache table on the 'other' database.\"\"\"\n\n    def db_for_read(self, model, **hints):\n        if model._meta.app_label == 'django_cache':\n            return 'other'\n\n    def db_for_write(self, model, **hints):\n        if model._meta.app_label == 'django_cache':\n            return 'other'\n\n    def allow_syncdb(self, db, model):\n        if model._meta.app_label == 'django_cache':\n            return db == 'other'\n\n\nclass CreateCacheTableForDBCacheTests(TestCase):\n    multi_db = True\n\n    def test_createcachetable_observes_database_router(self):\n        old_routers = router.routers\n        try:\n            router.routers = [DBCacheRouter()]\n            # cache table should not be created on 'default'\n            with self.assertNumQueries(0, using='default'):\n                management.call_command('createcachetable', 'cache_table',\n                                        database='default',\n                                        verbosity=0, interactive=False)\n            # cache table should be created on 'other'\n            # one query is used to create the table and another one the index\n            with self.assertNumQueries(2, using='other'):\n                management.call_command('createcachetable', 'cache_table',\n                                        database='other',\n                                        verbosity=0, interactive=False)\n        finally:\n            router.routers = old_routers\n\n\nclass LocMemCacheTests(unittest.TestCase, BaseCacheTests):\n    backend_name = 'django.core.cache.backends.locmem.LocMemCache'\n\n    def setUp(self):\n        self.cache = get_cache(self.backend_name, OPTIONS={'MAX_ENTRIES': 30})\n        self.prefix_cache = get_cache(self.backend_name, KEY_PREFIX='cacheprefix')\n        self.v2_cache = get_cache(self.backend_name, VERSION=2)\n        self.custom_key_cache = get_cache(self.backend_name, OPTIONS={'MAX_ENTRIES': 30}, KEY_FUNCTION=custom_key_func)\n        self.custom_key_cache2 = get_cache(self.backend_name, OPTIONS={'MAX_ENTRIES': 30}, KEY_FUNCTION='regressiontests.cache.tests.custom_key_func')\n\n        # LocMem requires a hack to make the other caches\n        # share a data store with the 'normal' cache.\n        self.prefix_cache._cache = self.cache._cache\n        self.prefix_cache._expire_info = self.cache._expire_info\n\n        self.v2_cache._cache = self.cache._cache\n        self.v2_cache._expire_info = self.cache._expire_info\n\n        self.custom_key_cache._cache = self.cache._cache\n        self.custom_key_cache._expire_info = self.cache._expire_info\n\n        self.custom_key_cache2._cache = self.cache._cache\n        self.custom_key_cache2._expire_info = self.cache._expire_info\n\n    def tearDown(self):\n        self.cache.clear()\n\n    def test_cull(self):\n        self.perform_cull_test(50, 29)\n\n    def test_zero_cull(self):\n        self.cache = get_cache(self.backend_name, OPTIONS={'MAX_ENTRIES': 30, 'CULL_FREQUENCY': 0})\n        self.perform_cull_test(50, 19)\n\n    def test_old_initialization(self):\n        self.cache = get_cache('locmem://?max_entries=30&cull_frequency=0')\n        self.perform_cull_test(50, 19)\n\n    def test_multiple_caches(self):\n        \"Check that multiple locmem caches are isolated\"\n        mirror_cache = get_cache(self.backend_name)\n        other_cache = get_cache(self.backend_name, LOCATION='other')\n\n        self.cache.set('value1', 42)\n        self.assertEqual(mirror_cache.get('value1'), 42)\n        self.assertEqual(other_cache.get('value1'), None)\n\n    def test_incr_decr_timeout(self):\n        \"\"\"incr/decr does not modify expiry time (matches memcached behavior)\"\"\"\n        key = 'value'\n        _key = self.cache.make_key(key)\n        self.cache.set(key, 1, timeout=self.cache.default_timeout*10)\n        expire = self.cache._expire_info[_key]\n        self.cache.incr(key)\n        self.assertEqual(expire, self.cache._expire_info[_key])\n        self.cache.decr(key)\n        self.assertEqual(expire, self.cache._expire_info[_key])\n\n# memcached backend isn't guaranteed to be available.\n# To check the memcached backend, the test settings file will\n# need to contain at least one cache backend setting that points at\n# your memcache server.\n@unittest.skipUnless(\n    any(cache['BACKEND'].startswith('django.core.cache.backends.memcached.')\n        for cache in settings.CACHES.values()),\n    \"memcached not available\")\nclass MemcachedCacheTests(unittest.TestCase, BaseCacheTests):\n\n    def setUp(self):\n        for cache_key, cache in settings.CACHES.items():\n            if cache['BACKEND'].startswith('django.core.cache.backends.memcached.'):\n                break\n        random_prefix = ''.join(random.choice(string.ascii_letters) for x in range(10))\n        self.cache = get_cache(cache_key)\n        self.prefix_cache = get_cache(cache_key, KEY_PREFIX=random_prefix)\n        self.v2_cache = get_cache(cache_key, VERSION=2)\n        self.custom_key_cache = get_cache(cache_key, KEY_FUNCTION=custom_key_func)\n        self.custom_key_cache2 = get_cache(cache_key, KEY_FUNCTION='regressiontests.cache.tests.custom_key_func')\n\n    def tearDown(self):\n        self.cache.clear()\n\n    def test_invalid_keys(self):\n        \"\"\"\n        On memcached, we don't introduce a duplicate key validation\n        step (for speed reasons), we just let the memcached API\n        library raise its own exception on bad keys. Refs #6447.\n\n        In order to be memcached-API-library agnostic, we only assert\n        that a generic exception of some kind is raised.\n\n        \"\"\"\n        # memcached does not allow whitespace or control characters in keys\n        self.assertRaises(Exception, self.cache.set, 'key with spaces', 'value')\n        # memcached limits key length to 250\n        self.assertRaises(Exception, self.cache.set, 'a' * 251, 'value')\n\n\nclass FileBasedCacheTests(unittest.TestCase, BaseCacheTests):\n    \"\"\"\n    Specific test cases for the file-based cache.\n    \"\"\"\n    backend_name = 'django.core.cache.backends.filebased.FileBasedCache'\n\n    def setUp(self):\n        self.dirname = tempfile.mkdtemp()\n        self.cache = get_cache(self.backend_name, LOCATION=self.dirname, OPTIONS={'MAX_ENTRIES': 30})\n        self.prefix_cache = get_cache(self.backend_name, LOCATION=self.dirname, KEY_PREFIX='cacheprefix')\n        self.v2_cache = get_cache(self.backend_name, LOCATION=self.dirname, VERSION=2)\n        self.custom_key_cache = get_cache(self.backend_name, LOCATION=self.dirname, KEY_FUNCTION=custom_key_func)\n        self.custom_key_cache2 = get_cache(self.backend_name, LOCATION=self.dirname, KEY_FUNCTION='regressiontests.cache.tests.custom_key_func')\n\n    def tearDown(self):\n        self.cache.clear()\n\n    def test_hashing(self):\n        \"\"\"Test that keys are hashed into subdirectories correctly\"\"\"\n        self.cache.set(\"foo\", \"bar\")\n        key = self.cache.make_key(\"foo\")\n        keyhash = hashlib.md5(key.encode()).hexdigest()\n        keypath = os.path.join(self.dirname, keyhash[:2], keyhash[2:4], keyhash[4:])\n        self.assertTrue(os.path.exists(keypath))\n\n    def test_subdirectory_removal(self):\n        \"\"\"\n        Make sure that the created subdirectories are correctly removed when empty.\n        \"\"\"\n        self.cache.set(\"foo\", \"bar\")\n        key = self.cache.make_key(\"foo\")\n        keyhash = hashlib.md5(key.encode()).hexdigest()\n        keypath = os.path.join(self.dirname, keyhash[:2], keyhash[2:4], keyhash[4:])\n        self.assertTrue(os.path.exists(keypath))\n\n        self.cache.delete(\"foo\")\n        self.assertTrue(not os.path.exists(keypath))\n        self.assertTrue(not os.path.exists(os.path.dirname(keypath)))\n        self.assertTrue(not os.path.exists(os.path.dirname(os.path.dirname(keypath))))\n\n    def test_cull(self):\n        self.perform_cull_test(50, 29)\n\n    def test_old_initialization(self):\n        self.cache = get_cache('file://%s?max_entries=30' % self.dirname)\n        self.perform_cull_test(50, 29)\n\n\nclass CustomCacheKeyValidationTests(unittest.TestCase):\n    \"\"\"\n    Tests for the ability to mixin a custom ``validate_key`` method to\n    a custom cache backend that otherwise inherits from a builtin\n    backend, and override the default key validation. Refs #6447.\n\n    \"\"\"\n    def test_custom_key_validation(self):\n        cache = get_cache('regressiontests.cache.liberal_backend://')\n\n        # this key is both longer than 250 characters, and has spaces\n        key = 'some key with spaces' * 15\n        val = 'a value'\n        cache.set(key, val)\n        self.assertEqual(cache.get(key), val)\n\n\nclass GetCacheTests(unittest.TestCase):\n\n    def test_simple(self):\n        cache = get_cache('locmem://')\n        from django.core.cache.backends.locmem import LocMemCache\n        self.assertTrue(isinstance(cache, LocMemCache))\n\n        from django.core.cache import cache\n        self.assertTrue(isinstance(cache, get_cache('default').__class__))\n\n        cache = get_cache(\n            'django.core.cache.backends.dummy.DummyCache', **{'TIMEOUT': 120})\n        self.assertEqual(cache.default_timeout, 120)\n\n        self.assertRaises(InvalidCacheBackendError, get_cache, 'does_not_exist')\n\n    def test_close(self):\n        from django.core import signals\n        cache = get_cache('regressiontests.cache.closeable_cache.CacheClass')\n        self.assertFalse(cache.closed)\n        signals.request_finished.send(self.__class__)\n        self.assertTrue(cache.closed)\n\n\n@override_settings(\n        CACHE_MIDDLEWARE_KEY_PREFIX='settingsprefix',\n        CACHE_MIDDLEWARE_SECONDS=1,\n        CACHES={\n            'default': {\n                'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',\n            },\n        },\n        USE_I18N=False,\n)\nclass CacheUtils(TestCase):\n    \"\"\"TestCase for django.utils.cache functions.\"\"\"\n\n    def setUp(self):\n        self.path = '/cache/test/'\n        self.cache = get_cache('default')\n\n    def tearDown(self):\n        self.cache.clear()\n\n    def _get_request(self, path, method='GET'):\n        request = HttpRequest()\n        request.META = {\n            'SERVER_NAME': 'testserver',\n            'SERVER_PORT': 80,\n        }\n        request.method = method\n        request.path = request.path_info = \"/cache/%s\" % path\n        return request\n\n    def test_patch_vary_headers(self):\n        headers = (\n            # Initial vary, new headers, resulting vary.\n            (None, ('Accept-Encoding',), 'Accept-Encoding'),\n            ('Accept-Encoding', ('accept-encoding',), 'Accept-Encoding'),\n            ('Accept-Encoding', ('ACCEPT-ENCODING',), 'Accept-Encoding'),\n            ('Cookie', ('Accept-Encoding',), 'Cookie, Accept-Encoding'),\n            ('Cookie, Accept-Encoding', ('Accept-Encoding',), 'Cookie, Accept-Encoding'),\n            ('Cookie, Accept-Encoding', ('Accept-Encoding', 'cookie'), 'Cookie, Accept-Encoding'),\n            (None, ('Accept-Encoding', 'COOKIE'), 'Accept-Encoding, COOKIE'),\n            ('Cookie,     Accept-Encoding', ('Accept-Encoding', 'cookie'), 'Cookie, Accept-Encoding'),\n            ('Cookie    ,     Accept-Encoding', ('Accept-Encoding', 'cookie'), 'Cookie, Accept-Encoding'),\n        )\n        for initial_vary, newheaders, resulting_vary in headers:\n            response = HttpResponse()\n            if initial_vary is not None:\n                response['Vary'] = initial_vary\n            patch_vary_headers(response, newheaders)\n            self.assertEqual(response['Vary'], resulting_vary)\n\n    def test_get_cache_key(self):\n        request = self._get_request(self.path)\n        response = HttpResponse()\n        key_prefix = 'localprefix'\n        # Expect None if no headers have been set yet.\n        self.assertEqual(get_cache_key(request), None)\n        # Set headers to an empty list.\n        learn_cache_key(request, response)\n        self.assertEqual(get_cache_key(request), 'views.decorators.cache.cache_page.settingsprefix.GET.a8c87a3d8c44853d7f79474f7ffe4ad5.d41d8cd98f00b204e9800998ecf8427e')\n        # Verify that a specified key_prefix is taken into account.\n        learn_cache_key(request, response, key_prefix=key_prefix)\n        self.assertEqual(get_cache_key(request, key_prefix=key_prefix), 'views.decorators.cache.cache_page.localprefix.GET.a8c87a3d8c44853d7f79474f7ffe4ad5.d41d8cd98f00b204e9800998ecf8427e')\n\n    def test_get_cache_key_with_query(self):\n        request = self._get_request(self.path + '?test=1')\n        response = HttpResponse()\n        # Expect None if no headers have been set yet.\n        self.assertEqual(get_cache_key(request), None)\n        # Set headers to an empty list.\n        learn_cache_key(request, response)\n        # Verify that the querystring is taken into account.\n        self.assertEqual(get_cache_key(request), 'views.decorators.cache.cache_page.settingsprefix.GET.bd889c5a59603af44333ed21504db3cd.d41d8cd98f00b204e9800998ecf8427e')\n\n    def test_learn_cache_key(self):\n        request = self._get_request(self.path, 'HEAD')\n        response = HttpResponse()\n        response['Vary'] = 'Pony'\n        # Make sure that the Vary header is added to the key hash\n        learn_cache_key(request, response)\n        self.assertEqual(get_cache_key(request), 'views.decorators.cache.cache_page.settingsprefix.GET.a8c87a3d8c44853d7f79474f7ffe4ad5.d41d8cd98f00b204e9800998ecf8427e')\n\n    def test_patch_cache_control(self):\n        tests = (\n            # Initial Cache-Control, kwargs to patch_cache_control, expected Cache-Control parts\n            (None, {'private' : True}, set(['private'])),\n\n            # Test whether private/public attributes are mutually exclusive\n            ('private', {'private' : True}, set(['private'])),\n            ('private', {'public' : True}, set(['public'])),\n            ('public', {'public' : True}, set(['public'])),\n            ('public', {'private' : True}, set(['private'])),\n            ('must-revalidate,max-age=60,private', {'public' : True}, set(['must-revalidate', 'max-age=60', 'public'])),\n            ('must-revalidate,max-age=60,public', {'private' : True}, set(['must-revalidate', 'max-age=60', 'private'])),\n            ('must-revalidate,max-age=60', {'public' : True}, set(['must-revalidate', 'max-age=60', 'public'])),\n        )\n\n        cc_delim_re = re.compile(r'\\s*,\\s*')\n\n        for initial_cc, newheaders, expected_cc in tests:\n            response = HttpResponse()\n            if initial_cc is not None:\n                response['Cache-Control'] = initial_cc\n            patch_cache_control(response, **newheaders)\n            parts = set(cc_delim_re.split(response['Cache-Control']))\n            self.assertEqual(parts, expected_cc)\n\n\n@override_settings(\n        CACHES={\n            'default': {\n                'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',\n                'KEY_PREFIX': 'cacheprefix',\n            },\n        },\n)\nclass PrefixedCacheUtils(CacheUtils):\n    pass\n\n\n@override_settings(\n        CACHE_MIDDLEWARE_SECONDS=60,\n        CACHE_MIDDLEWARE_KEY_PREFIX='test',\n        CACHES={\n            'default': {\n                'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',\n            },\n        },\n)\nclass CacheHEADTest(TestCase):\n\n    def setUp(self):\n        self.path = '/cache/test/'\n        self.cache = get_cache('default')\n\n    def tearDown(self):\n        self.cache.clear()\n\n    def _get_request(self, method):\n        request = HttpRequest()\n        request.META = {\n            'SERVER_NAME': 'testserver',\n            'SERVER_PORT': 80,\n        }\n        request.method = method\n        request.path = request.path_info = self.path\n        return request\n\n    def _get_request_cache(self, method):\n        request = self._get_request(method)\n        request._cache_update_cache = True\n        return request\n\n    def _set_cache(self, request, msg):\n        response = HttpResponse()\n        response.content = msg\n        return UpdateCacheMiddleware().process_response(request, response)\n\n    def test_head_caches_correctly(self):\n        test_content = 'test content'\n\n        request = self._get_request_cache('HEAD')\n        self._set_cache(request, test_content)\n\n        request = self._get_request('HEAD')\n        get_cache_data = FetchFromCacheMiddleware().process_request(request)\n        self.assertNotEqual(get_cache_data, None)\n        self.assertEqual(test_content.encode(), get_cache_data.content)\n\n    def test_head_with_cached_get(self):\n        test_content = 'test content'\n\n        request = self._get_request_cache('GET')\n        self._set_cache(request, test_content)\n\n        request = self._get_request('HEAD')\n        get_cache_data = FetchFromCacheMiddleware().process_request(request)\n        self.assertNotEqual(get_cache_data, None)\n        self.assertEqual(test_content.encode(), get_cache_data.content)\n\n\n@override_settings(\n        CACHE_MIDDLEWARE_KEY_PREFIX='settingsprefix',\n        CACHES={\n            'default': {\n                'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',\n            },\n        },\n        LANGUAGES=(\n            ('en', 'English'),\n            ('es', 'Spanish'),\n        ),\n)\nclass CacheI18nTest(TestCase):\n\n    def setUp(self):\n        self.path = '/cache/test/'\n        self.cache = get_cache('default')\n\n    def tearDown(self):\n        self.cache.clear()\n\n    def _get_request(self, method='GET'):\n        request = HttpRequest()\n        request.META = {\n            'SERVER_NAME': 'testserver',\n            'SERVER_PORT': 80,\n        }\n        request.method = method\n        request.path = request.path_info = self.path\n        return request\n\n    def _get_request_cache(self, query_string=None):\n        request = HttpRequest()\n        request.META = {\n            'SERVER_NAME': 'testserver',\n            'SERVER_PORT': 80,\n        }\n        if query_string:\n            request.META['QUERY_STRING'] = query_string\n            request.GET = QueryDict(query_string)\n        request.path = request.path_info = self.path\n        request._cache_update_cache = True\n        request.method = 'GET'\n        request.session = {}\n        return request\n\n    @override_settings(USE_I18N=True, USE_L10N=False, USE_TZ=False)\n    def test_cache_key_i18n_translation(self):\n        request = self._get_request()\n        lang = translation.get_language()\n        response = HttpResponse()\n        key = learn_cache_key(request, response)\n        self.assertIn(lang, key, \"Cache keys should include the language name when translation is active\")\n        key2 = get_cache_key(request)\n        self.assertEqual(key, key2)\n\n    @override_settings(USE_I18N=False, USE_L10N=True, USE_TZ=False)\n    def test_cache_key_i18n_formatting(self):\n        request = self._get_request()\n        lang = translation.get_language()\n        response = HttpResponse()\n        key = learn_cache_key(request, response)\n        self.assertIn(lang, key, \"Cache keys should include the language name when formatting is active\")\n        key2 = get_cache_key(request)\n        self.assertEqual(key, key2)\n\n    @override_settings(USE_I18N=False, USE_L10N=False, USE_TZ=True)\n    def test_cache_key_i18n_timezone(self):\n        request = self._get_request()\n        # This is tightly coupled to the implementation,\n        # but it's the most straightforward way to test the key.\n        tz = force_text(timezone.get_current_timezone_name(), errors='ignore')\n        tz = tz.encode('ascii', 'ignore').decode('ascii').replace(' ', '_')\n        response = HttpResponse()\n        key = learn_cache_key(request, response)\n        self.assertIn(tz, key, \"Cache keys should include the time zone name when time zones are active\")\n        key2 = get_cache_key(request)\n        self.assertEqual(key, key2)\n\n    @override_settings(USE_I18N=False, USE_L10N=False)\n    def test_cache_key_no_i18n (self):\n        request = self._get_request()\n        lang = translation.get_language()\n        tz = force_text(timezone.get_current_timezone_name(), errors='ignore')\n        tz = tz.encode('ascii', 'ignore').decode('ascii').replace(' ', '_')\n        response = HttpResponse()\n        key = learn_cache_key(request, response)\n        self.assertNotIn(lang, key, \"Cache keys shouldn't include the language name when i18n isn't active\")\n        self.assertNotIn(tz, key, \"Cache keys shouldn't include the time zone name when i18n isn't active\")\n\n    @override_settings(USE_I18N=False, USE_L10N=False, USE_TZ=True)\n    def test_cache_key_with_non_ascii_tzname(self):\n        # Regression test for #17476\n        class CustomTzName(timezone.UTC):\n            name = ''\n            def tzname(self, dt):\n                return self.name\n\n        request = self._get_request()\n        response = HttpResponse()\n        with timezone.override(CustomTzName()):\n            CustomTzName.name = 'Hora estándar de Argentina'.encode('UTF-8') # UTF-8 string\n            sanitized_name = 'Hora_estndar_de_Argentina'\n            self.assertIn(sanitized_name, learn_cache_key(request, response),\n                    \"Cache keys should include the time zone name when time zones are active\")\n\n            CustomTzName.name = 'Hora estándar de Argentina'    # unicode\n            sanitized_name = 'Hora_estndar_de_Argentina'\n            self.assertIn(sanitized_name, learn_cache_key(request, response),\n                    \"Cache keys should include the time zone name when time zones are active\")\n\n\n    @override_settings(\n            CACHE_MIDDLEWARE_KEY_PREFIX=\"test\",\n            CACHE_MIDDLEWARE_SECONDS=60,\n            USE_ETAGS=True,\n            USE_I18N=True,\n    )\n    def test_middleware(self):\n        def set_cache(request, lang, msg):\n            translation.activate(lang)\n            response = HttpResponse()\n            response.content = msg\n            return UpdateCacheMiddleware().process_response(request, response)\n\n        # cache with non empty request.GET\n        request = self._get_request_cache(query_string='foo=bar&other=true')\n        get_cache_data = FetchFromCacheMiddleware().process_request(request)\n        # first access, cache must return None\n        self.assertEqual(get_cache_data, None)\n        response = HttpResponse()\n        content = 'Check for cache with QUERY_STRING'\n        response.content = content\n        UpdateCacheMiddleware().process_response(request, response)\n        get_cache_data = FetchFromCacheMiddleware().process_request(request)\n        # cache must return content\n        self.assertNotEqual(get_cache_data, None)\n        self.assertEqual(get_cache_data.content, content.encode())\n        # different QUERY_STRING, cache must be empty\n        request = self._get_request_cache(query_string='foo=bar&somethingelse=true')\n        get_cache_data = FetchFromCacheMiddleware().process_request(request)\n        self.assertEqual(get_cache_data, None)\n\n        # i18n tests\n        en_message =\"Hello world!\"\n        es_message =\"Hola mundo!\"\n\n        request = self._get_request_cache()\n        set_cache(request, 'en', en_message)\n        get_cache_data = FetchFromCacheMiddleware().process_request(request)\n        # Check that we can recover the cache\n        self.assertNotEqual(get_cache_data, None)\n        self.assertEqual(get_cache_data.content, en_message.encode())\n        # Check that we use etags\n        self.assertTrue(get_cache_data.has_header('ETag'))\n        # Check that we can disable etags\n        with self.settings(USE_ETAGS=False):\n            request._cache_update_cache = True\n            set_cache(request, 'en', en_message)\n            get_cache_data = FetchFromCacheMiddleware().process_request(request)\n            self.assertFalse(get_cache_data.has_header('ETag'))\n        # change the session language and set content\n        request = self._get_request_cache()\n        set_cache(request, 'es', es_message)\n        # change again the language\n        translation.activate('en')\n        # retrieve the content from cache\n        get_cache_data = FetchFromCacheMiddleware().process_request(request)\n        self.assertEqual(get_cache_data.content, en_message.encode())\n        # change again the language\n        translation.activate('es')\n        get_cache_data = FetchFromCacheMiddleware().process_request(request)\n        self.assertEqual(get_cache_data.content, es_message.encode())\n        # reset the language\n        translation.deactivate()\n\n    @override_settings(\n            CACHE_MIDDLEWARE_KEY_PREFIX=\"test\",\n            CACHE_MIDDLEWARE_SECONDS=60,\n            USE_ETAGS=True,\n    )\n    def test_middleware_doesnt_cache_streaming_response(self):\n        request = self._get_request()\n        get_cache_data = FetchFromCacheMiddleware().process_request(request)\n        self.assertIsNone(get_cache_data)\n\n        # This test passes on Python < 3.3 even without the corresponding code\n        # in UpdateCacheMiddleware, because pickling a StreamingHttpResponse\n        # fails (http://bugs.python.org/issue14288). LocMemCache silently\n        # swallows the exception and doesn't store the response in cache.\n        content = ['Check for cache with streaming content.']\n        response = StreamingHttpResponse(content)\n        UpdateCacheMiddleware().process_response(request, response)\n\n        get_cache_data = FetchFromCacheMiddleware().process_request(request)\n        self.assertIsNone(get_cache_data)\n\n@override_settings(\n        CACHES={\n            'default': {\n                'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',\n                'KEY_PREFIX': 'cacheprefix'\n            },\n        },\n)\nclass PrefixedCacheI18nTest(CacheI18nTest):\n    pass\n\n\ndef hello_world_view(request, value):\n    return HttpResponse('Hello World %s' % value)\n\n\n@override_settings(\n        CACHE_MIDDLEWARE_ALIAS='other',\n        CACHE_MIDDLEWARE_KEY_PREFIX='middlewareprefix',\n        CACHE_MIDDLEWARE_SECONDS=30,\n        CACHE_MIDDLEWARE_ANONYMOUS_ONLY=False,\n        CACHES={\n            'default': {\n                'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',\n            },\n            'other': {\n                'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',\n                'LOCATION': 'other',\n                'TIMEOUT': '1',\n            },\n        },\n)\nclass CacheMiddlewareTest(TestCase):\n\n    # The following tests will need to be modified in Django 1.6 to not use\n    # deprecated ways of using the cache_page decorator that will be removed in\n    # such version\n    def setUp(self):\n        self.factory = RequestFactory()\n        self.default_cache = get_cache('default')\n        self.other_cache = get_cache('other')\n        self.save_warnings_state()\n        warnings.filterwarnings('ignore', category=DeprecationWarning,\n            module='django.views.decorators.cache')\n\n    def tearDown(self):\n        self.restore_warnings_state()\n        self.default_cache.clear()\n        self.other_cache.clear()\n\n    def test_constructor(self):\n        \"\"\"\n        Ensure the constructor is correctly distinguishing between usage of CacheMiddleware as\n        Middleware vs. usage of CacheMiddleware as view decorator and setting attributes\n        appropriately.\n        \"\"\"\n        # If no arguments are passed in construction, it's being used as middleware.\n        middleware = CacheMiddleware()\n\n        # Now test object attributes against values defined in setUp above\n        self.assertEqual(middleware.cache_timeout, 30)\n        self.assertEqual(middleware.key_prefix, 'middlewareprefix')\n        self.assertEqual(middleware.cache_alias, 'other')\n        self.assertEqual(middleware.cache_anonymous_only, False)\n\n        # If arguments are being passed in construction, it's being used as a decorator.\n        # First, test with \"defaults\":\n        as_view_decorator = CacheMiddleware(cache_alias=None, key_prefix=None)\n\n        self.assertEqual(as_view_decorator.cache_timeout, 300) # Timeout value for 'default' cache, i.e. 300\n        self.assertEqual(as_view_decorator.key_prefix, '')\n        self.assertEqual(as_view_decorator.cache_alias, 'default') # Value of DEFAULT_CACHE_ALIAS from django.core.cache\n        self.assertEqual(as_view_decorator.cache_anonymous_only, False)\n\n        # Next, test with custom values:\n        as_view_decorator_with_custom = CacheMiddleware(cache_anonymous_only=True, cache_timeout=60, cache_alias='other', key_prefix='foo')\n\n        self.assertEqual(as_view_decorator_with_custom.cache_timeout, 60)\n        self.assertEqual(as_view_decorator_with_custom.key_prefix, 'foo')\n        self.assertEqual(as_view_decorator_with_custom.cache_alias, 'other')\n        self.assertEqual(as_view_decorator_with_custom.cache_anonymous_only, True)\n\n    def test_middleware(self):\n        middleware = CacheMiddleware()\n        prefix_middleware = CacheMiddleware(key_prefix='prefix1')\n        timeout_middleware = CacheMiddleware(cache_timeout=1)\n\n        request = self.factory.get('/view/')\n\n        # Put the request through the request middleware\n        result = middleware.process_request(request)\n        self.assertEqual(result, None)\n\n        response = hello_world_view(request, '1')\n\n        # Now put the response through the response middleware\n        response = middleware.process_response(request, response)\n\n        # Repeating the request should result in a cache hit\n        result = middleware.process_request(request)\n        self.assertNotEqual(result, None)\n        self.assertEqual(result.content, b'Hello World 1')\n\n        # The same request through a different middleware won't hit\n        result = prefix_middleware.process_request(request)\n        self.assertEqual(result, None)\n\n        # The same request with a timeout _will_ hit\n        result = timeout_middleware.process_request(request)\n        self.assertNotEqual(result, None)\n        self.assertEqual(result.content, b'Hello World 1')\n\n    @override_settings(CACHE_MIDDLEWARE_ANONYMOUS_ONLY=True)\n    def test_cache_middleware_anonymous_only_wont_cause_session_access(self):\n        \"\"\" The cache middleware shouldn't cause a session access due to\n        CACHE_MIDDLEWARE_ANONYMOUS_ONLY if nothing else has accessed the\n        session. Refs 13283 \"\"\"\n\n        from django.contrib.sessions.middleware import SessionMiddleware\n        from django.contrib.auth.middleware import AuthenticationMiddleware\n\n        middleware = CacheMiddleware()\n        session_middleware = SessionMiddleware()\n        auth_middleware = AuthenticationMiddleware()\n\n        request = self.factory.get('/view_anon/')\n\n        # Put the request through the request middleware\n        session_middleware.process_request(request)\n        auth_middleware.process_request(request)\n        result = middleware.process_request(request)\n        self.assertEqual(result, None)\n\n        response = hello_world_view(request, '1')\n\n        # Now put the response through the response middleware\n        session_middleware.process_response(request, response)\n        response = middleware.process_response(request, response)\n\n        self.assertEqual(request.session.accessed, False)\n\n    @override_settings(CACHE_MIDDLEWARE_ANONYMOUS_ONLY=True)\n    def test_cache_middleware_anonymous_only_with_cache_page(self):\n        \"\"\"CACHE_MIDDLEWARE_ANONYMOUS_ONLY should still be effective when used\n        with the cache_page decorator: the response to a request from an\n        authenticated user should not be cached.\"\"\"\n\n        request = self.factory.get('/view_anon/')\n\n        class MockAuthenticatedUser(object):\n            def is_authenticated(self):\n                return True\n\n        class MockAccessedSession(object):\n            accessed = True\n\n        request.user = MockAuthenticatedUser()\n        request.session = MockAccessedSession()\n\n        response = cache_page(hello_world_view)(request, '1')\n\n        self.assertFalse(\"Cache-Control\" in response)\n\n    def test_view_decorator(self):\n        # decorate the same view with different cache decorators\n        default_view = cache_page(hello_world_view)\n        default_with_prefix_view = cache_page(key_prefix='prefix1')(hello_world_view)\n\n        explicit_default_view = cache_page(cache='default')(hello_world_view)\n        explicit_default_with_prefix_view = cache_page(cache='default', key_prefix='prefix1')(hello_world_view)\n\n        other_view = cache_page(cache='other')(hello_world_view)\n        other_with_prefix_view = cache_page(cache='other', key_prefix='prefix2')(hello_world_view)\n        other_with_timeout_view = cache_page(3, cache='other', key_prefix='prefix3')(hello_world_view)\n\n        request = self.factory.get('/view/')\n\n        # Request the view once\n        response = default_view(request, '1')\n        self.assertEqual(response.content, b'Hello World 1')\n\n        # Request again -- hit the cache\n        response = default_view(request, '2')\n        self.assertEqual(response.content, b'Hello World 1')\n\n        # Requesting the same view with the explicit cache should yield the same result\n        response = explicit_default_view(request, '3')\n        self.assertEqual(response.content, b'Hello World 1')\n\n        # Requesting with a prefix will hit a different cache key\n        response = explicit_default_with_prefix_view(request, '4')\n        self.assertEqual(response.content, b'Hello World 4')\n\n        # Hitting the same view again gives a cache hit\n        response = explicit_default_with_prefix_view(request, '5')\n        self.assertEqual(response.content, b'Hello World 4')\n\n        # And going back to the implicit cache will hit the same cache\n        response = default_with_prefix_view(request, '6')\n        self.assertEqual(response.content, b'Hello World 4')\n\n        # Requesting from an alternate cache won't hit cache\n        response = other_view(request, '7')\n        self.assertEqual(response.content, b'Hello World 7')\n\n        # But a repeated hit will hit cache\n        response = other_view(request, '8')\n        self.assertEqual(response.content, b'Hello World 7')\n\n        # And prefixing the alternate cache yields yet another cache entry\n        response = other_with_prefix_view(request, '9')\n        self.assertEqual(response.content, b'Hello World 9')\n\n        # Request from the alternate cache with a new prefix and a custom timeout\n        response = other_with_timeout_view(request, '10')\n        self.assertEqual(response.content, b'Hello World 10')\n\n        # But if we wait a couple of seconds...\n        time.sleep(2)\n\n        # ... the default cache will still hit\n        cache = get_cache('default')\n        response = default_view(request, '11')\n        self.assertEqual(response.content, b'Hello World 1')\n\n        # ... the default cache with a prefix will still hit\n        response = default_with_prefix_view(request, '12')\n        self.assertEqual(response.content, b'Hello World 4')\n\n        # ... the explicit default cache will still hit\n        response = explicit_default_view(request, '13')\n        self.assertEqual(response.content, b'Hello World 1')\n\n        # ... the explicit default cache with a prefix will still hit\n        response = explicit_default_with_prefix_view(request, '14')\n        self.assertEqual(response.content, b'Hello World 4')\n\n        # .. but a rapidly expiring cache won't hit\n        response = other_view(request, '15')\n        self.assertEqual(response.content, b'Hello World 15')\n\n        # .. even if it has a prefix\n        response = other_with_prefix_view(request, '16')\n        self.assertEqual(response.content, b'Hello World 16')\n\n        # ... but a view with a custom timeout will still hit\n        response = other_with_timeout_view(request, '17')\n        self.assertEqual(response.content, b'Hello World 10')\n\n        # And if we wait a few more seconds\n        time.sleep(2)\n\n        # the custom timeout cache will miss\n        response = other_with_timeout_view(request, '18')\n        self.assertEqual(response.content, b'Hello World 18')\n\n\n@override_settings(\n        CACHE_MIDDLEWARE_KEY_PREFIX='settingsprefix',\n        CACHE_MIDDLEWARE_SECONDS=1,\n        CACHES={\n            'default': {\n                'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',\n            },\n        },\n        USE_I18N=False,\n)\nclass TestWithTemplateResponse(TestCase):\n    \"\"\"\n    Tests various headers w/ TemplateResponse.\n\n    Most are probably redundant since they manipulate the same object\n    anyway but the Etag header is 'special' because it relies on the\n    content being complete (which is not necessarily always the case\n    with a TemplateResponse)\n    \"\"\"\n    def setUp(self):\n        self.path = '/cache/test/'\n        self.cache = get_cache('default')\n\n    def tearDown(self):\n        self.cache.clear()\n\n    def _get_request(self, path, method='GET'):\n        request = HttpRequest()\n        request.META = {\n            'SERVER_NAME': 'testserver',\n            'SERVER_PORT': 80,\n        }\n        request.method = method\n        request.path = request.path_info = \"/cache/%s\" % path\n        return request\n\n    def test_patch_vary_headers(self):\n        headers = (\n            # Initial vary, new headers, resulting vary.\n            (None, ('Accept-Encoding',), 'Accept-Encoding'),\n            ('Accept-Encoding', ('accept-encoding',), 'Accept-Encoding'),\n            ('Accept-Encoding', ('ACCEPT-ENCODING',), 'Accept-Encoding'),\n            ('Cookie', ('Accept-Encoding',), 'Cookie, Accept-Encoding'),\n            ('Cookie, Accept-Encoding', ('Accept-Encoding',), 'Cookie, Accept-Encoding'),\n            ('Cookie, Accept-Encoding', ('Accept-Encoding', 'cookie'), 'Cookie, Accept-Encoding'),\n            (None, ('Accept-Encoding', 'COOKIE'), 'Accept-Encoding, COOKIE'),\n            ('Cookie,     Accept-Encoding', ('Accept-Encoding', 'cookie'), 'Cookie, Accept-Encoding'),\n            ('Cookie    ,     Accept-Encoding', ('Accept-Encoding', 'cookie'), 'Cookie, Accept-Encoding'),\n        )\n        for initial_vary, newheaders, resulting_vary in headers:\n            response = TemplateResponse(HttpResponse(), Template(\"This is a test\"))\n            if initial_vary is not None:\n                response['Vary'] = initial_vary\n            patch_vary_headers(response, newheaders)\n            self.assertEqual(response['Vary'], resulting_vary)\n\n    def test_get_cache_key(self):\n        request = self._get_request(self.path)\n        response = TemplateResponse(HttpResponse(), Template(\"This is a test\"))\n        key_prefix = 'localprefix'\n        # Expect None if no headers have been set yet.\n        self.assertEqual(get_cache_key(request), None)\n        # Set headers to an empty list.\n        learn_cache_key(request, response)\n        self.assertEqual(get_cache_key(request), 'views.decorators.cache.cache_page.settingsprefix.GET.a8c87a3d8c44853d7f79474f7ffe4ad5.d41d8cd98f00b204e9800998ecf8427e')\n        # Verify that a specified key_prefix is taken into account.\n        learn_cache_key(request, response, key_prefix=key_prefix)\n        self.assertEqual(get_cache_key(request, key_prefix=key_prefix), 'views.decorators.cache.cache_page.localprefix.GET.a8c87a3d8c44853d7f79474f7ffe4ad5.d41d8cd98f00b204e9800998ecf8427e')\n\n    def test_get_cache_key_with_query(self):\n        request = self._get_request(self.path + '?test=1')\n        response = TemplateResponse(HttpResponse(), Template(\"This is a test\"))\n        # Expect None if no headers have been set yet.\n        self.assertEqual(get_cache_key(request), None)\n        # Set headers to an empty list.\n        learn_cache_key(request, response)\n        # Verify that the querystring is taken into account.\n        self.assertEqual(get_cache_key(request), 'views.decorators.cache.cache_page.settingsprefix.GET.bd889c5a59603af44333ed21504db3cd.d41d8cd98f00b204e9800998ecf8427e')\n\n    @override_settings(USE_ETAGS=False)\n    def test_without_etag(self):\n        response = TemplateResponse(HttpResponse(), Template(\"This is a test\"))\n        self.assertFalse(response.has_header('ETag'))\n        patch_response_headers(response)\n        self.assertFalse(response.has_header('ETag'))\n        response = response.render()\n        self.assertFalse(response.has_header('ETag'))\n\n    @override_settings(USE_ETAGS=True)\n    def test_with_etag(self):\n        response = TemplateResponse(HttpResponse(), Template(\"This is a test\"))\n        self.assertFalse(response.has_header('ETag'))\n        patch_response_headers(response)\n        self.assertFalse(response.has_header('ETag'))\n        response = response.render()\n        self.assertTrue(response.has_header('ETag'))\n\n\nclass TestEtagWithAdmin(TestCase):\n    # See https://code.djangoproject.com/ticket/16003\n    urls = \"regressiontests.admin_views.urls\"\n\n    def test_admin(self):\n        with self.settings(USE_ETAGS=False):\n            response = self.client.get('/test_admin/admin/')\n            self.assertEqual(response.status_code, 200)\n            self.assertFalse(response.has_header('ETag'))\n\n        with self.settings(USE_ETAGS=True):\n            response = self.client.get('/test_admin/admin/')\n            self.assertEqual(response.status_code, 200)\n            self.assertTrue(response.has_header('ETag'))\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/comment_tests/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/comment_tests/custom_comments/__init__.py",
    "content": "from django.core import urlresolvers\nfrom regressiontests.comment_tests.custom_comments.models import CustomComment \nfrom regressiontests.comment_tests.custom_comments.forms import CustomCommentForm\n\ndef get_model():\n    return CustomComment \n\ndef get_form():\n    return CustomCommentForm\n\ndef get_form_target():\n    return urlresolvers.reverse(\n        \"regressiontests.comment_tests.custom_comments.views.custom_submit_comment\"\n    )\n\ndef get_flag_url(c):\n    return urlresolvers.reverse(\n        \"regressiontests.comment_tests.custom_comments.views.custom_flag_comment\", \n        args=(c.id,)\n    )\n\ndef get_delete_url(c):\n    return urlresolvers.reverse(\n        \"regressiontests.comment_tests.custom_comments.views.custom_delete_comment\", \n        args=(c.id,)\n    )\n\ndef get_approve_url(c):\n    return urlresolvers.reverse(\n        \"regressiontests.comment_tests.custom_comments.views.custom_approve_comment\", \n        args=(c.id,)\n    )\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/comment_tests/custom_comments/forms.py",
    "content": "from django import forms\n\n\nclass CustomCommentForm(forms.Form):\n    pass\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/comment_tests/custom_comments/models.py",
    "content": "from django.db import models\n\n\nclass CustomComment(models.Model):\n    pass\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/comment_tests/custom_comments/views.py",
    "content": "from django.http import HttpResponse\n\n\ndef custom_submit_comment(request):\n    return HttpResponse(\"Hello from the custom submit comment view.\")\n\ndef custom_flag_comment(request, comment_id):\n    return HttpResponse(\"Hello from the custom flag view.\")\n\ndef custom_delete_comment(request, comment_id):\n    return HttpResponse(\"Hello from the custom delete view.\")\n\ndef custom_approve_comment(request, comment_id):\n    return HttpResponse(\"Hello from the custom approve view.\")\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/comment_tests/fixtures/comment_tests.json",
    "content": "[\n  {\n    \"model\" : \"comment_tests.book\",\n    \"pk\" : 1,\n    \"fields\" : {\n        \"dewey_decimal\" : \"12.34\"\n    }\n  },\n  {\n    \"model\" : \"comment_tests.author\",\n    \"pk\" : 1,\n    \"fields\" : {\n        \"first_name\" : \"John\",\n        \"last_name\" : \"Smith\"\n    }\n  },\n  {\n    \"model\" : \"comment_tests.author\",\n    \"pk\" : 2,\n    \"fields\" : {\n        \"first_name\" : \"Peter\",\n        \"last_name\" : \"Jones\"\n    }\n  },\n  {\n    \"model\" : \"comment_tests.article\",\n    \"pk\" : 1,\n    \"fields\" : {\n        \"author\" : 1,\n        \"headline\" : \"Man Bites Dog\"\n    }\n  },\n  {\n    \"model\" : \"comment_tests.article\",\n    \"pk\" : 2,\n    \"fields\" : {\n        \"author\" : 2,\n        \"headline\" : \"Dog Bites Man\"\n    }\n  },\n\n  {\n    \"model\" : \"auth.user\",\n    \"pk\" : 100,\n    \"fields\" : {\n        \"username\" : \"normaluser\",\n        \"password\" : \"34ea4aaaf24efcbb4b30d27302f8657f\",\n        \"first_name\": \"Joe\",\n        \"last_name\": \"Normal\",\n        \"email\": \"joe.normal@example.com\"\n    }\n  }\n]\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/comment_tests/fixtures/comment_utils.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<django-objects version=\"1.0\">\n  <object pk=\"1\" model=\"comment_tests.entry\">\n      <field type=\"CharField\" name=\"title\">ABC</field>\n      <field type=\"TextField\" name=\"body\">This is the body</field>\n      <field type=\"DateField\" name=\"pub_date\">2008-01-01</field>\n      <field type=\"BooleanField\" name=\"enable_comments\">True</field>\n  </object>\n  <object pk=\"2\" model=\"comment_tests.entry\">\n      <field type=\"CharField\" name=\"title\">XYZ</field>\n      <field type=\"TextField\" name=\"body\">Text here</field>\n      <field type=\"DateField\" name=\"pub_date\">2008-01-02</field>\n      <field type=\"BooleanField\" name=\"enable_comments\">False</field>\n  </object>\n</django-objects>\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/comment_tests/models.py",
    "content": "\"\"\"\nComments may be attached to any object. See the comment documentation for\nmore information.\n\"\"\"\n\nfrom __future__ import unicode_literals\n\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n@python_2_unicode_compatible\nclass Author(models.Model):\n    first_name = models.CharField(max_length=30)\n    last_name = models.CharField(max_length=30)\n\n    def __str__(self):\n        return '%s %s' % (self.first_name, self.last_name)\n\n@python_2_unicode_compatible\nclass Article(models.Model):\n    author = models.ForeignKey(Author)\n    headline = models.CharField(max_length=100)\n\n    def __str__(self):\n        return self.headline\n\n@python_2_unicode_compatible\nclass Entry(models.Model):\n    title = models.CharField(max_length=250)\n    body = models.TextField()\n    pub_date = models.DateField()\n    enable_comments = models.BooleanField()\n\n    def __str__(self):\n        return self.title\n\nclass Book(models.Model):\n    dewey_decimal = models.DecimalField(primary_key=True, decimal_places=2, max_digits=5)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/comment_tests/tests/__init__.py",
    "content": "from __future__ import absolute_import\n\nfrom django.contrib.auth.models import User\nfrom django.contrib.comments.forms import CommentForm\nfrom django.contrib.comments.models import Comment\nfrom django.contrib.contenttypes.models import ContentType\nfrom django.contrib.sites.models import Site\nfrom django.test import TestCase\nfrom django.test.utils import override_settings\n\nfrom ..models import Article, Author\n\n# Shortcut\nCT = ContentType.objects.get_for_model\n\n# Helper base class for comment tests that need data.\n@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.UnsaltedMD5PasswordHasher',))\nclass CommentTestCase(TestCase):\n    fixtures = [\"comment_tests\"]\n    urls = 'regressiontests.comment_tests.urls_default'\n\n    def createSomeComments(self):\n        # Two anonymous comments on two different objects\n        c1 = Comment.objects.create(\n            content_type = CT(Article),\n            object_pk = \"1\",\n            user_name = \"Joe Somebody\",\n            user_email = \"jsomebody@example.com\",\n            user_url = \"http://example.com/~joe/\",\n            comment = \"First!\",\n            site = Site.objects.get_current(),\n        )\n        c2 = Comment.objects.create(\n            content_type = CT(Author),\n            object_pk = \"1\",\n            user_name = \"Joe Somebody\",\n            user_email = \"jsomebody@example.com\",\n            user_url = \"http://example.com/~joe/\",\n            comment = \"First here, too!\",\n            site = Site.objects.get_current(),\n        )\n\n        # Two authenticated comments: one on the same Article, and\n        # one on a different Author\n        user = User.objects.create(\n            username = \"frank_nobody\",\n            first_name = \"Frank\",\n            last_name = \"Nobody\",\n            email = \"fnobody@example.com\",\n            password = \"\",\n            is_staff = False,\n            is_active = True,\n            is_superuser = False,\n        )\n        c3 = Comment.objects.create(\n            content_type = CT(Article),\n            object_pk = \"1\",\n            user = user,\n            user_url = \"http://example.com/~frank/\",\n            comment = \"Damn, I wanted to be first.\",\n            site = Site.objects.get_current(),\n        )\n        c4 = Comment.objects.create(\n            content_type = CT(Author),\n            object_pk = \"2\",\n            user = user,\n            user_url = \"http://example.com/~frank/\",\n            comment = \"You get here first, too?\",\n            site = Site.objects.get_current(),\n        )\n\n        return c1, c2, c3, c4\n\n    def getData(self):\n        return {\n            'name'      : 'Jim Bob',\n            'email'     : 'jim.bob@example.com',\n            'url'       : '',\n            'comment'   : 'This is my comment',\n        }\n\n    def getValidData(self, obj):\n        f = CommentForm(obj)\n        d = self.getData()\n        d.update(f.initial)\n        return d\n\nfrom regressiontests.comment_tests.tests.app_api_tests import *\nfrom regressiontests.comment_tests.tests.feed_tests import *\nfrom regressiontests.comment_tests.tests.model_tests import *\nfrom regressiontests.comment_tests.tests.comment_form_tests import *\nfrom regressiontests.comment_tests.tests.templatetag_tests import *\nfrom regressiontests.comment_tests.tests.comment_view_tests import *\nfrom regressiontests.comment_tests.tests.moderation_view_tests import *\nfrom regressiontests.comment_tests.tests.comment_utils_moderators_tests import *\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/comment_tests/tests/app_api_tests.py",
    "content": "from __future__ import absolute_import\n\nfrom django.conf import settings\nfrom django.contrib import comments\nfrom django.contrib.comments.models import Comment\nfrom django.contrib.comments.forms import CommentForm\nfrom django.core.exceptions import ImproperlyConfigured\nfrom django.test.utils import override_settings\nfrom django.utils import six\n\nfrom . import CommentTestCase\n\n\nclass CommentAppAPITests(CommentTestCase):\n    \"\"\"Tests for the \"comment app\" API\"\"\"\n\n    def testGetCommentApp(self):\n        self.assertEqual(comments.get_comment_app(), comments)\n\n    @override_settings(\n        COMMENTS_APP='missing_app',\n        INSTALLED_APPS=list(settings.INSTALLED_APPS) + ['missing_app'],\n    )\n    def testGetMissingCommentApp(self):\n        with six.assertRaisesRegex(self, ImproperlyConfigured, 'missing_app'):\n            _ = comments.get_comment_app()\n\n    def testGetForm(self):\n        self.assertEqual(comments.get_form(), CommentForm)\n\n    def testGetFormTarget(self):\n        self.assertEqual(comments.get_form_target(), \"/post/\")\n\n    def testGetFlagURL(self):\n        c = Comment(id=12345)\n        self.assertEqual(comments.get_flag_url(c), \"/flag/12345/\")\n\n    def getGetDeleteURL(self):\n        c = Comment(id=12345)\n        self.assertEqual(comments.get_delete_url(c), \"/delete/12345/\")\n\n    def getGetApproveURL(self):\n        c = Comment(id=12345)\n        self.assertEqual(comments.get_approve_url(c), \"/approve/12345/\")\n\n\n@override_settings(\n    COMMENTS_APP='regressiontests.comment_tests.custom_comments',\n    INSTALLED_APPS=list(settings.INSTALLED_APPS) + [\n        'regressiontests.comment_tests.custom_comments'],\n)\nclass CustomCommentTest(CommentTestCase):\n    urls = 'regressiontests.comment_tests.urls'\n\n    def testGetCommentApp(self):\n        from regressiontests.comment_tests import custom_comments\n        self.assertEqual(comments.get_comment_app(), custom_comments)\n\n    def testGetModel(self):\n        from regressiontests.comment_tests.custom_comments.models import CustomComment\n        self.assertEqual(comments.get_model(), CustomComment)\n\n    def testGetForm(self):\n        from regressiontests.comment_tests.custom_comments.forms import CustomCommentForm\n        self.assertEqual(comments.get_form(), CustomCommentForm)\n\n    def testGetFormTarget(self):\n        self.assertEqual(comments.get_form_target(), \"/post/\")\n\n    def testGetFlagURL(self):\n        c = Comment(id=12345)\n        self.assertEqual(comments.get_flag_url(c), \"/flag/12345/\")\n\n    def getGetDeleteURL(self):\n        c = Comment(id=12345)\n        self.assertEqual(comments.get_delete_url(c), \"/delete/12345/\")\n\n    def getGetApproveURL(self):\n        c = Comment(id=12345)\n        self.assertEqual(comments.get_approve_url(c), \"/approve/12345/\")\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/comment_tests/tests/comment_form_tests.py",
    "content": "from __future__ import absolute_import\n\nimport time\n\nfrom django.conf import settings\nfrom django.contrib.comments.forms import CommentForm\nfrom django.contrib.comments.models import Comment\n\nfrom . import CommentTestCase\nfrom ..models import Article\n\n\nclass CommentFormTests(CommentTestCase):\n    def testInit(self):\n        f = CommentForm(Article.objects.get(pk=1))\n        self.assertEqual(f.initial['content_type'], str(Article._meta))\n        self.assertEqual(f.initial['object_pk'], \"1\")\n        self.assertNotEqual(f.initial['security_hash'], None)\n        self.assertNotEqual(f.initial['timestamp'], None)\n\n    def testValidPost(self):\n        a = Article.objects.get(pk=1)\n        f = CommentForm(a, data=self.getValidData(a))\n        self.assertTrue(f.is_valid(), f.errors)\n        return f\n\n    def tamperWithForm(self, **kwargs):\n        a = Article.objects.get(pk=1)\n        d = self.getValidData(a)\n        d.update(kwargs)\n        f = CommentForm(Article.objects.get(pk=1), data=d)\n        self.assertFalse(f.is_valid())\n        return f\n\n    def testHoneypotTampering(self):\n        self.tamperWithForm(honeypot=\"I am a robot\")\n\n    def testTimestampTampering(self):\n        self.tamperWithForm(timestamp=str(time.time() - 28800))\n\n    def testSecurityHashTampering(self):\n        self.tamperWithForm(security_hash=\"Nobody expects the Spanish Inquisition!\")\n\n    def testContentTypeTampering(self):\n        self.tamperWithForm(content_type=\"auth.user\")\n\n    def testObjectPKTampering(self):\n        self.tamperWithForm(object_pk=\"3\")\n\n    def testSecurityErrors(self):\n        f = self.tamperWithForm(honeypot=\"I am a robot\")\n        self.assertTrue(\"honeypot\" in f.security_errors())\n\n    def testGetCommentObject(self):\n        f = self.testValidPost()\n        c = f.get_comment_object()\n        self.assertTrue(isinstance(c, Comment))\n        self.assertEqual(c.content_object, Article.objects.get(pk=1))\n        self.assertEqual(c.comment, \"This is my comment\")\n        c.save()\n        self.assertEqual(Comment.objects.count(), 1)\n\n    def testProfanities(self):\n        \"\"\"Test COMMENTS_ALLOW_PROFANITIES and PROFANITIES_LIST settings\"\"\"\n        a = Article.objects.get(pk=1)\n        d = self.getValidData(a)\n\n        # Save settings in case other tests need 'em\n        saved = settings.PROFANITIES_LIST, settings.COMMENTS_ALLOW_PROFANITIES\n\n        # Don't wanna swear in the unit tests if we don't have to...\n        settings.PROFANITIES_LIST = [\"rooster\"]\n\n        # Try with COMMENTS_ALLOW_PROFANITIES off\n        settings.COMMENTS_ALLOW_PROFANITIES = False\n        f = CommentForm(a, data=dict(d, comment=\"What a rooster!\"))\n        self.assertFalse(f.is_valid())\n\n        # Now with COMMENTS_ALLOW_PROFANITIES on\n        settings.COMMENTS_ALLOW_PROFANITIES = True\n        f = CommentForm(a, data=dict(d, comment=\"What a rooster!\"))\n        self.assertTrue(f.is_valid())\n\n        # Restore settings\n        settings.PROFANITIES_LIST, settings.COMMENTS_ALLOW_PROFANITIES = saved\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/comment_tests/tests/comment_utils_moderators_tests.py",
    "content": "from __future__ import absolute_import\n\nfrom django.contrib.comments.models import Comment\nfrom django.contrib.comments.moderation import (moderator, CommentModerator,\n    AlreadyModerated)\nfrom django.core import mail\n\nfrom . import CommentTestCase\nfrom ..models import Entry\n\n\nclass EntryModerator1(CommentModerator):\n    email_notification = True\n\nclass EntryModerator2(CommentModerator):\n    enable_field = 'enable_comments'\n\nclass EntryModerator3(CommentModerator):\n    auto_close_field = 'pub_date'\n    close_after = 7\n\nclass EntryModerator4(CommentModerator):\n    auto_moderate_field = 'pub_date'\n    moderate_after = 7\n\nclass EntryModerator5(CommentModerator):\n    auto_moderate_field = 'pub_date'\n    moderate_after = 0\n\nclass EntryModerator6(CommentModerator):\n    auto_close_field = 'pub_date'\n    close_after = 0\n\nclass CommentUtilsModeratorTests(CommentTestCase):\n    fixtures = [\"comment_utils.xml\"]\n\n    def createSomeComments(self):\n        # Tests for the moderation signals must actually post data\n        # through the comment views, because only the comment views\n        # emit the custom signals moderation listens for.\n        e = Entry.objects.get(pk=1)\n        data = self.getValidData(e)\n\n        self.client.post(\"/post/\", data, REMOTE_ADDR=\"1.2.3.4\")\n\n        # We explicitly do a try/except to get the comment we've just\n        # posted because moderation may have disallowed it, in which\n        # case we can just return it as None.\n        try:\n            c1 = Comment.objects.all()[0]\n        except IndexError:\n            c1 = None\n\n        self.client.post(\"/post/\", data, REMOTE_ADDR=\"1.2.3.4\")\n\n        try:\n            c2 = Comment.objects.all()[0]\n        except IndexError:\n            c2 = None\n        return c1, c2\n\n    def tearDown(self):\n        moderator.unregister(Entry)\n\n    def testRegisterExistingModel(self):\n        moderator.register(Entry, EntryModerator1)\n        self.assertRaises(AlreadyModerated, moderator.register, Entry, EntryModerator1)\n\n    def testEmailNotification(self):\n        moderator.register(Entry, EntryModerator1)\n        self.createSomeComments()\n        self.assertEqual(len(mail.outbox), 2)\n\n    def testCommentsEnabled(self):\n        moderator.register(Entry, EntryModerator2)\n        self.createSomeComments()\n        self.assertEqual(Comment.objects.all().count(), 1)\n\n    def testAutoCloseField(self):\n        moderator.register(Entry, EntryModerator3)\n        self.createSomeComments()\n        self.assertEqual(Comment.objects.all().count(), 0)\n\n    def testAutoModerateField(self):\n        moderator.register(Entry, EntryModerator4)\n        c1, c2 = self.createSomeComments()\n        self.assertEqual(c2.is_public, False)\n\n    def testAutoModerateFieldImmediate(self):\n        moderator.register(Entry, EntryModerator5)\n        c1, c2 = self.createSomeComments()\n        self.assertEqual(c2.is_public, False)\n\n    def testAutoCloseFieldImmediate(self):\n        moderator.register(Entry, EntryModerator6)\n        c1, c2 = self.createSomeComments()\n        self.assertEqual(Comment.objects.all().count(), 0)"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/comment_tests/tests/comment_view_tests.py",
    "content": "from __future__ import absolute_import, unicode_literals\n\nimport re\n\nfrom django.conf import settings\nfrom django.contrib.auth.models import User\nfrom django.contrib.comments import signals\nfrom django.contrib.comments.models import Comment\n\nfrom . import CommentTestCase\nfrom ..models import Article, Book\n\n\npost_redirect_re = re.compile(r'^http://testserver/posted/\\?c=(?P<pk>\\d+$)')\n\nclass CommentViewTests(CommentTestCase):\n\n    def testPostCommentHTTPMethods(self):\n        a = Article.objects.get(pk=1)\n        data = self.getValidData(a)\n        response = self.client.get(\"/post/\", data)\n        self.assertEqual(response.status_code, 405)\n        self.assertEqual(response[\"Allow\"], \"POST\")\n\n    def testPostCommentMissingCtype(self):\n        a = Article.objects.get(pk=1)\n        data = self.getValidData(a)\n        del data[\"content_type\"]\n        response = self.client.post(\"/post/\", data)\n        self.assertEqual(response.status_code, 400)\n\n    def testPostCommentBadCtype(self):\n        a = Article.objects.get(pk=1)\n        data = self.getValidData(a)\n        data[\"content_type\"] = \"Nobody expects the Spanish Inquisition!\"\n        response = self.client.post(\"/post/\", data)\n        self.assertEqual(response.status_code, 400)\n\n    def testPostCommentMissingObjectPK(self):\n        a = Article.objects.get(pk=1)\n        data = self.getValidData(a)\n        del data[\"object_pk\"]\n        response = self.client.post(\"/post/\", data)\n        self.assertEqual(response.status_code, 400)\n\n    def testPostCommentBadObjectPK(self):\n        a = Article.objects.get(pk=1)\n        data = self.getValidData(a)\n        data[\"object_pk\"] = \"14\"\n        response = self.client.post(\"/post/\", data)\n        self.assertEqual(response.status_code, 400)\n\n    def testPostInvalidIntegerPK(self):\n        a = Article.objects.get(pk=1)\n        data = self.getValidData(a)\n        data[\"comment\"] = \"This is another comment\"\n        data[\"object_pk\"] = '\\ufffd'\n        response = self.client.post(\"/post/\", data)\n        self.assertEqual(response.status_code, 400)\n\n    def testPostInvalidDecimalPK(self):\n        b = Book.objects.get(pk='12.34')\n        data = self.getValidData(b)\n        data[\"comment\"] = \"This is another comment\"\n        data[\"object_pk\"] = 'cookies'\n        response = self.client.post(\"/post/\", data)\n        self.assertEqual(response.status_code, 400)\n\n    def testCommentPreview(self):\n        a = Article.objects.get(pk=1)\n        data = self.getValidData(a)\n        data[\"preview\"] = \"Preview\"\n        response = self.client.post(\"/post/\", data)\n        self.assertEqual(response.status_code, 200)\n        self.assertTemplateUsed(response, \"comments/preview.html\")\n\n    def testHashTampering(self):\n        a = Article.objects.get(pk=1)\n        data = self.getValidData(a)\n        data[\"security_hash\"] = \"Nobody expects the Spanish Inquisition!\"\n        response = self.client.post(\"/post/\", data)\n        self.assertEqual(response.status_code, 400)\n\n    def testDebugCommentErrors(self):\n        \"\"\"The debug error template should be shown only if DEBUG is True\"\"\"\n        olddebug = settings.DEBUG\n\n        settings.DEBUG = True\n        a = Article.objects.get(pk=1)\n        data = self.getValidData(a)\n        data[\"security_hash\"] = \"Nobody expects the Spanish Inquisition!\"\n        response = self.client.post(\"/post/\", data)\n        self.assertEqual(response.status_code, 400)\n        self.assertTemplateUsed(response, \"comments/400-debug.html\")\n\n        settings.DEBUG = False\n        response = self.client.post(\"/post/\", data)\n        self.assertEqual(response.status_code, 400)\n        self.assertTemplateNotUsed(response, \"comments/400-debug.html\")\n\n        settings.DEBUG = olddebug\n\n    def testCreateValidComment(self):\n        a = Article.objects.get(pk=1)\n        data = self.getValidData(a)\n        self.response = self.client.post(\"/post/\", data, REMOTE_ADDR=\"1.2.3.4\")\n        self.assertEqual(self.response.status_code, 302)\n        self.assertEqual(Comment.objects.count(), 1)\n        c = Comment.objects.all()[0]\n        self.assertEqual(c.ip_address, \"1.2.3.4\")\n        self.assertEqual(c.comment, \"This is my comment\")\n\n    def testPostAsAuthenticatedUser(self):\n        a = Article.objects.get(pk=1)\n        data = self.getValidData(a)\n        data['name'] = data['email'] = ''\n        self.client.login(username=\"normaluser\", password=\"normaluser\")\n        self.response = self.client.post(\"/post/\", data, REMOTE_ADDR=\"1.2.3.4\")\n        self.assertEqual(self.response.status_code, 302)\n        self.assertEqual(Comment.objects.count(), 1)\n        c = Comment.objects.all()[0]\n        self.assertEqual(c.ip_address, \"1.2.3.4\")\n        u = User.objects.get(username='normaluser')\n        self.assertEqual(c.user, u)\n        self.assertEqual(c.user_name, u.get_full_name())\n        self.assertEqual(c.user_email, u.email)\n\n    def testPostAsAuthenticatedUserWithoutFullname(self):\n        \"\"\"\n        Check that the user's name in the comment is populated for\n        authenticated users without first_name and last_name.\n        \"\"\"\n        user = User.objects.create_user(username='jane_other',\n                email='jane@example.com', password='jane_other')\n        a = Article.objects.get(pk=1)\n        data = self.getValidData(a)\n        data['name'] = data['email'] = ''\n        self.client.login(username=\"jane_other\", password=\"jane_other\")\n        self.response = self.client.post(\"/post/\", data, REMOTE_ADDR=\"1.2.3.4\")\n        c = Comment.objects.get(user=user)\n        self.assertEqual(c.ip_address, \"1.2.3.4\")\n        self.assertEqual(c.user_name, 'jane_other')\n        user.delete()\n\n    def testPreventDuplicateComments(self):\n        \"\"\"Prevent posting the exact same comment twice\"\"\"\n        a = Article.objects.get(pk=1)\n        data = self.getValidData(a)\n        self.client.post(\"/post/\", data)\n        self.client.post(\"/post/\", data)\n        self.assertEqual(Comment.objects.count(), 1)\n\n        # This should not trigger the duplicate prevention\n        self.client.post(\"/post/\", dict(data, comment=\"My second comment.\"))\n        self.assertEqual(Comment.objects.count(), 2)\n\n    def testCommentSignals(self):\n        \"\"\"Test signals emitted by the comment posting view\"\"\"\n\n        # callback\n        def receive(sender, **kwargs):\n            self.assertEqual(kwargs['comment'].comment, \"This is my comment\")\n            self.assertTrue('request' in kwargs)\n            received_signals.append(kwargs.get('signal'))\n\n        # Connect signals and keep track of handled ones\n        received_signals = []\n        expected_signals = [\n            signals.comment_will_be_posted, signals.comment_was_posted\n        ]\n        for signal in expected_signals:\n            signal.connect(receive)\n\n        # Post a comment and check the signals\n        self.testCreateValidComment()\n        self.assertEqual(received_signals, expected_signals)\n\n        for signal in expected_signals:\n            signal.disconnect(receive)\n\n    def testWillBePostedSignal(self):\n        \"\"\"\n        Test that the comment_will_be_posted signal can prevent the comment from\n        actually getting saved\n        \"\"\"\n        def receive(sender, **kwargs): return False\n        signals.comment_will_be_posted.connect(receive, dispatch_uid=\"comment-test\")\n        a = Article.objects.get(pk=1)\n        data = self.getValidData(a)\n        response = self.client.post(\"/post/\", data)\n        self.assertEqual(response.status_code, 400)\n        self.assertEqual(Comment.objects.count(), 0)\n        signals.comment_will_be_posted.disconnect(dispatch_uid=\"comment-test\")\n\n    def testWillBePostedSignalModifyComment(self):\n        \"\"\"\n        Test that the comment_will_be_posted signal can modify a comment before\n        it gets posted\n        \"\"\"\n        def receive(sender, **kwargs):\n             # a bad but effective spam filter :)...\n            kwargs['comment'].is_public = False\n\n        signals.comment_will_be_posted.connect(receive)\n        self.testCreateValidComment()\n        c = Comment.objects.all()[0]\n        self.assertFalse(c.is_public)\n\n    def testCommentNext(self):\n        \"\"\"Test the different \"next\" actions the comment view can take\"\"\"\n        a = Article.objects.get(pk=1)\n        data = self.getValidData(a)\n        response = self.client.post(\"/post/\", data)\n        location = response[\"Location\"]\n        match = post_redirect_re.match(location)\n        self.assertTrue(match != None, \"Unexpected redirect location: %s\" % location)\n\n        data[\"next\"] = \"/somewhere/else/\"\n        data[\"comment\"] = \"This is another comment\"\n        response = self.client.post(\"/post/\", data)\n        location = response[\"Location\"]\n        match = re.search(r\"^http://testserver/somewhere/else/\\?c=\\d+$\", location)\n        self.assertTrue(match != None, \"Unexpected redirect location: %s\" % location)\n\n        data[\"next\"] = \"http://badserver/somewhere/else/\"\n        data[\"comment\"] = \"This is another comment with an unsafe next url\"\n        response = self.client.post(\"/post/\", data)\n        location = response[\"Location\"]\n        match = post_redirect_re.match(location)\n        self.assertTrue(match != None, \"Unsafe redirection to: %s\" % location)\n\n    def testCommentDoneView(self):\n        a = Article.objects.get(pk=1)\n        data = self.getValidData(a)\n        response = self.client.post(\"/post/\", data)\n        location = response[\"Location\"]\n        match = post_redirect_re.match(location)\n        self.assertTrue(match != None, \"Unexpected redirect location: %s\" % location)\n        pk = int(match.group('pk'))\n        response = self.client.get(location)\n        self.assertTemplateUsed(response, \"comments/posted.html\")\n        self.assertEqual(response.context[0][\"comment\"], Comment.objects.get(pk=pk))\n\n    def testCommentNextWithQueryString(self):\n        \"\"\"\n        The `next` key needs to handle already having a query string (#10585)\n        \"\"\"\n        a = Article.objects.get(pk=1)\n        data = self.getValidData(a)\n        data[\"next\"] = \"/somewhere/else/?foo=bar\"\n        data[\"comment\"] = \"This is another comment\"\n        response = self.client.post(\"/post/\", data)\n        location = response[\"Location\"]\n        match = re.search(r\"^http://testserver/somewhere/else/\\?foo=bar&c=\\d+$\", location)\n        self.assertTrue(match != None, \"Unexpected redirect location: %s\" % location)\n\n    def testCommentPostRedirectWithInvalidIntegerPK(self):\n        \"\"\"\n        Tests that attempting to retrieve the location specified in the\n        post redirect, after adding some invalid data to the expected\n        querystring it ends with, doesn't cause a server error.\n        \"\"\"\n        a = Article.objects.get(pk=1)\n        data = self.getValidData(a)\n        data[\"comment\"] = \"This is another comment\"\n        response = self.client.post(\"/post/\", data)\n        location = response[\"Location\"]\n        broken_location = location + \"\\ufffd\"\n        response = self.client.get(broken_location)\n        self.assertEqual(response.status_code, 200)\n\n    def testCommentNextWithQueryStringAndAnchor(self):\n        \"\"\"\n        The `next` key needs to handle already having an anchor. Refs #13411.\n        \"\"\"\n        # With a query string also.\n        a = Article.objects.get(pk=1)\n        data = self.getValidData(a)\n        data[\"next\"] = \"/somewhere/else/?foo=bar#baz\"\n        data[\"comment\"] = \"This is another comment\"\n        response = self.client.post(\"/post/\", data)\n        location = response[\"Location\"]\n        match = re.search(r\"^http://testserver/somewhere/else/\\?foo=bar&c=\\d+#baz$\", location)\n        self.assertTrue(match != None, \"Unexpected redirect location: %s\" % location)\n\n        # Without a query string\n        a = Article.objects.get(pk=1)\n        data = self.getValidData(a)\n        data[\"next\"] = \"/somewhere/else/#baz\"\n        data[\"comment\"] = \"This is another comment\"\n        response = self.client.post(\"/post/\", data)\n        location = response[\"Location\"]\n        match = re.search(r\"^http://testserver/somewhere/else/\\?c=\\d+#baz$\", location)\n        self.assertTrue(match != None, \"Unexpected redirect location: %s\" % location)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/comment_tests/tests/feed_tests.py",
    "content": "from __future__ import absolute_import\n\nfrom xml.etree import ElementTree as ET\n\nfrom django.conf import settings\nfrom django.contrib.comments.models import Comment\nfrom django.contrib.contenttypes.models import ContentType\nfrom django.contrib.sites.models import Site\n\nfrom . import CommentTestCase\nfrom ..models import Article\n\n\nclass CommentFeedTests(CommentTestCase):\n    urls = 'regressiontests.comment_tests.urls'\n    feed_url = '/rss/comments/'\n\n    def setUp(self):\n        site_2 = Site.objects.create(id=settings.SITE_ID+1,\n            domain=\"example2.com\", name=\"example2.com\")\n        # A comment for another site\n        c5 = Comment.objects.create(\n            content_type = ContentType.objects.get_for_model(Article),\n            object_pk = \"1\",\n            user_name = \"Joe Somebody\",\n            user_email = \"jsomebody@example.com\",\n            user_url = \"http://example.com/~joe/\",\n            comment = \"A comment for the second site.\",\n            site = site_2,\n        )\n\n    def test_feed(self):\n        response = self.client.get(self.feed_url)\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response['Content-Type'], 'application/rss+xml; charset=utf-8')\n\n        rss_elem = ET.fromstring(response.content)\n\n        self.assertEqual(rss_elem.tag, \"rss\")\n        self.assertEqual(rss_elem.attrib, {\"version\": \"2.0\"})\n\n        channel_elem = rss_elem.find(\"channel\")\n\n        title_elem = channel_elem.find(\"title\")\n        self.assertEqual(title_elem.text, \"example.com comments\")\n\n        link_elem = channel_elem.find(\"link\")\n        self.assertEqual(link_elem.text, \"http://example.com/\")\n\n        atomlink_elem = channel_elem.find(\"{http://www.w3.org/2005/Atom}link\")\n        self.assertEqual(atomlink_elem.attrib, {\"href\": \"http://example.com/rss/comments/\", \"rel\": \"self\"})\n\n        self.assertNotContains(response, \"A comment for the second site.\")\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/comment_tests/tests/model_tests.py",
    "content": "from __future__ import absolute_import\n\nfrom django.contrib.comments.models import Comment\n\nfrom . import CommentTestCase\nfrom ..models import Author, Article\n\n\nclass CommentModelTests(CommentTestCase):\n    def testSave(self):\n        for c in self.createSomeComments():\n            self.assertNotEqual(c.submit_date, None)\n\n    def testUserProperties(self):\n        c1, c2, c3, c4 = self.createSomeComments()\n        self.assertEqual(c1.name, \"Joe Somebody\")\n        self.assertEqual(c2.email, \"jsomebody@example.com\")\n        self.assertEqual(c3.name, \"Frank Nobody\")\n        self.assertEqual(c3.url, \"http://example.com/~frank/\")\n        self.assertEqual(c1.user, None)\n        self.assertEqual(c3.user, c4.user)\n\nclass CommentManagerTests(CommentTestCase):\n\n    def testInModeration(self):\n        \"\"\"Comments that aren't public are considered in moderation\"\"\"\n        c1, c2, c3, c4 = self.createSomeComments()\n        c1.is_public = False\n        c2.is_public = False\n        c1.save()\n        c2.save()\n        moderated_comments = list(Comment.objects.in_moderation().order_by(\"id\"))\n        self.assertEqual(moderated_comments, [c1, c2])\n\n    def testRemovedCommentsNotInModeration(self):\n        \"\"\"Removed comments are not considered in moderation\"\"\"\n        c1, c2, c3, c4 = self.createSomeComments()\n        c1.is_public = False\n        c2.is_public = False\n        c2.is_removed = True\n        c1.save()\n        c2.save()\n        moderated_comments = list(Comment.objects.in_moderation())\n        self.assertEqual(moderated_comments, [c1])\n\n    def testForModel(self):\n        c1, c2, c3, c4 = self.createSomeComments()\n        article_comments = list(Comment.objects.for_model(Article).order_by(\"id\"))\n        author_comments = list(Comment.objects.for_model(Author.objects.get(pk=1)))\n        self.assertEqual(article_comments, [c1, c3])\n        self.assertEqual(author_comments, [c2])\n\n    def testPrefetchRelated(self):\n        c1, c2, c3, c4 = self.createSomeComments()\n        # one for comments, one for Articles, one for Author\n        with self.assertNumQueries(3):\n            qs = Comment.objects.prefetch_related('content_object')\n            [c.content_object for c in qs]\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/comment_tests/tests/moderation_view_tests.py",
    "content": "from __future__ import absolute_import\n\nfrom django.contrib.auth.models import User, Permission\nfrom django.contrib.comments import signals\nfrom django.contrib.comments.models import Comment, CommentFlag\nfrom django.contrib.contenttypes.models import ContentType\n\nfrom . import CommentTestCase\n\n\nclass FlagViewTests(CommentTestCase):\n\n    def testFlagGet(self):\n        \"\"\"GET the flag view: render a confirmation page.\"\"\"\n        comments = self.createSomeComments()\n        pk = comments[0].pk\n        self.client.login(username=\"normaluser\", password=\"normaluser\")\n        response = self.client.get(\"/flag/%d/\" % pk)\n        self.assertTemplateUsed(response, \"comments/flag.html\")\n\n    def testFlagPost(self):\n        \"\"\"POST the flag view: actually flag the view (nice for XHR)\"\"\"\n        comments = self.createSomeComments()\n        pk = comments[0].pk\n        self.client.login(username=\"normaluser\", password=\"normaluser\")\n        response = self.client.post(\"/flag/%d/\" % pk)\n        self.assertEqual(response[\"Location\"], \"http://testserver/flagged/?c=%d\" % pk)\n        c = Comment.objects.get(pk=pk)\n        self.assertEqual(c.flags.filter(flag=CommentFlag.SUGGEST_REMOVAL).count(), 1)\n        return c\n\n    def testFlagPostNext(self):\n        \"\"\"\n        POST the flag view, explicitly providing a next url.\n        \"\"\"\n        comments = self.createSomeComments()\n        pk = comments[0].pk\n        self.client.login(username=\"normaluser\", password=\"normaluser\")\n        response = self.client.post(\"/flag/%d/\" % pk, {'next': \"/go/here/\"})\n        self.assertEqual(response[\"Location\"],\n            \"http://testserver/go/here/?c=%d\" % pk)\n\n    def testFlagPostUnsafeNext(self):\n        \"\"\"\n        POSTing to the flag view with an unsafe next url will ignore the\n        provided url when redirecting.\n        \"\"\"\n        comments = self.createSomeComments()\n        pk = comments[0].pk\n        self.client.login(username=\"normaluser\", password=\"normaluser\")\n        response = self.client.post(\"/flag/%d/\" % pk,\n            {'next': \"http://elsewhere/bad\"})\n        self.assertEqual(response[\"Location\"],\n            \"http://testserver/flagged/?c=%d\" % pk)\n\n    def testFlagPostTwice(self):\n        \"\"\"Users don't get to flag comments more than once.\"\"\"\n        c = self.testFlagPost()\n        self.client.post(\"/flag/%d/\" % c.pk)\n        self.client.post(\"/flag/%d/\" % c.pk)\n        self.assertEqual(c.flags.filter(flag=CommentFlag.SUGGEST_REMOVAL).count(), 1)\n\n    def testFlagAnon(self):\n        \"\"\"GET/POST the flag view while not logged in: redirect to log in.\"\"\"\n        comments = self.createSomeComments()\n        pk = comments[0].pk\n        response = self.client.get(\"/flag/%d/\" % pk)\n        self.assertEqual(response[\"Location\"], \"http://testserver/accounts/login/?next=/flag/%d/\" % pk)\n        response = self.client.post(\"/flag/%d/\" % pk)\n        self.assertEqual(response[\"Location\"], \"http://testserver/accounts/login/?next=/flag/%d/\" % pk)\n\n    def testFlaggedView(self):\n        comments = self.createSomeComments()\n        pk = comments[0].pk\n        response = self.client.get(\"/flagged/\", data={\"c\": pk})\n        self.assertTemplateUsed(response, \"comments/flagged.html\")\n\n    def testFlagSignals(self):\n        \"\"\"Test signals emitted by the comment flag view\"\"\"\n\n        # callback\n        def receive(sender, **kwargs):\n            self.assertEqual(kwargs['flag'].flag, CommentFlag.SUGGEST_REMOVAL)\n            self.assertEqual(kwargs['request'].user.username, \"normaluser\")\n            received_signals.append(kwargs.get('signal'))\n\n        # Connect signals and keep track of handled ones\n        received_signals = []\n        signals.comment_was_flagged.connect(receive)\n\n        # Post a comment and check the signals\n        self.testFlagPost()\n        self.assertEqual(received_signals, [signals.comment_was_flagged])\n\n        signals.comment_was_flagged.disconnect(receive)\n\ndef makeModerator(username):\n    u = User.objects.get(username=username)\n    ct = ContentType.objects.get_for_model(Comment)\n    p = Permission.objects.get(content_type=ct, codename=\"can_moderate\")\n    u.user_permissions.add(p)\n\nclass DeleteViewTests(CommentTestCase):\n\n    def testDeletePermissions(self):\n        \"\"\"The delete view should only be accessible to 'moderators'\"\"\"\n        comments = self.createSomeComments()\n        pk = comments[0].pk\n        self.client.login(username=\"normaluser\", password=\"normaluser\")\n        response = self.client.get(\"/delete/%d/\" % pk)\n        self.assertEqual(response[\"Location\"], \"http://testserver/accounts/login/?next=/delete/%d/\" % pk)\n\n        makeModerator(\"normaluser\")\n        response = self.client.get(\"/delete/%d/\" % pk)\n        self.assertEqual(response.status_code, 200)\n\n    def testDeletePost(self):\n        \"\"\"POSTing the delete view should mark the comment as removed\"\"\"\n        comments = self.createSomeComments()\n        pk = comments[0].pk\n        makeModerator(\"normaluser\")\n        self.client.login(username=\"normaluser\", password=\"normaluser\")\n        response = self.client.post(\"/delete/%d/\" % pk)\n        self.assertEqual(response[\"Location\"], \"http://testserver/deleted/?c=%d\" % pk)\n        c = Comment.objects.get(pk=pk)\n        self.assertTrue(c.is_removed)\n        self.assertEqual(c.flags.filter(flag=CommentFlag.MODERATOR_DELETION, user__username=\"normaluser\").count(), 1)\n\n    def testDeletePostNext(self):\n        \"\"\"\n        POSTing the delete view will redirect to an explicitly provided a next\n        url.\n        \"\"\"\n        comments = self.createSomeComments()\n        pk = comments[0].pk\n        makeModerator(\"normaluser\")\n        self.client.login(username=\"normaluser\", password=\"normaluser\")\n        response = self.client.post(\"/delete/%d/\" % pk, {'next': \"/go/here/\"})\n        self.assertEqual(response[\"Location\"],\n            \"http://testserver/go/here/?c=%d\" % pk)\n\n    def testDeletePostUnsafeNext(self):\n        \"\"\"\n        POSTing to the delete view with an unsafe next url will ignore the\n        provided url when redirecting.\n        \"\"\"\n        comments = self.createSomeComments()\n        pk = comments[0].pk\n        makeModerator(\"normaluser\")\n        self.client.login(username=\"normaluser\", password=\"normaluser\")\n        response = self.client.post(\"/delete/%d/\" % pk,\n            {'next': \"http://elsewhere/bad\"})\n        self.assertEqual(response[\"Location\"],\n            \"http://testserver/deleted/?c=%d\" % pk)\n\n    def testDeleteSignals(self):\n        def receive(sender, **kwargs):\n            received_signals.append(kwargs.get('signal'))\n\n        # Connect signals and keep track of handled ones\n        received_signals = []\n        signals.comment_was_flagged.connect(receive)\n\n        # Post a comment and check the signals\n        self.testDeletePost()\n        self.assertEqual(received_signals, [signals.comment_was_flagged])\n\n        signals.comment_was_flagged.disconnect(receive)\n\n    def testDeletedView(self):\n        comments = self.createSomeComments()\n        pk = comments[0].pk\n        response = self.client.get(\"/deleted/\", data={\"c\": pk})\n        self.assertTemplateUsed(response, \"comments/deleted.html\")\n\nclass ApproveViewTests(CommentTestCase):\n\n    def testApprovePermissions(self):\n        \"\"\"The approve view should only be accessible to 'moderators'\"\"\"\n        comments = self.createSomeComments()\n        pk = comments[0].pk\n        self.client.login(username=\"normaluser\", password=\"normaluser\")\n        response = self.client.get(\"/approve/%d/\" % pk)\n        self.assertEqual(response[\"Location\"], \"http://testserver/accounts/login/?next=/approve/%d/\" % pk)\n\n        makeModerator(\"normaluser\")\n        response = self.client.get(\"/approve/%d/\" % pk)\n        self.assertEqual(response.status_code, 200)\n\n    def testApprovePost(self):\n        \"\"\"POSTing the approve view should mark the comment as removed\"\"\"\n        c1, c2, c3, c4 = self.createSomeComments()\n        c1.is_public = False; c1.save()\n\n        makeModerator(\"normaluser\")\n        self.client.login(username=\"normaluser\", password=\"normaluser\")\n        response = self.client.post(\"/approve/%d/\" % c1.pk)\n        self.assertEqual(response[\"Location\"], \"http://testserver/approved/?c=%d\" % c1.pk)\n        c = Comment.objects.get(pk=c1.pk)\n        self.assertTrue(c.is_public)\n        self.assertEqual(c.flags.filter(flag=CommentFlag.MODERATOR_APPROVAL, user__username=\"normaluser\").count(), 1)\n\n    def testApprovePostNext(self):\n        \"\"\"\n        POSTing the approve view will redirect to an explicitly provided a next\n        url.\n        \"\"\"\n        c1, c2, c3, c4 = self.createSomeComments()\n        c1.is_public = False; c1.save()\n\n        makeModerator(\"normaluser\")\n        self.client.login(username=\"normaluser\", password=\"normaluser\")\n        response = self.client.post(\"/approve/%d/\" % c1.pk,\n            {'next': \"/go/here/\"})\n        self.assertEqual(response[\"Location\"],\n            \"http://testserver/go/here/?c=%d\" % c1.pk)\n\n    def testApprovePostUnsafeNext(self):\n        \"\"\"\n        POSTing to the approve view with an unsafe next url will ignore the\n        provided url when redirecting.\n        \"\"\"\n        c1, c2, c3, c4 = self.createSomeComments()\n        c1.is_public = False; c1.save()\n\n        makeModerator(\"normaluser\")\n        self.client.login(username=\"normaluser\", password=\"normaluser\")\n        response = self.client.post(\"/approve/%d/\" % c1.pk,\n            {'next': \"http://elsewhere/bad\"})\n        self.assertEqual(response[\"Location\"],\n            \"http://testserver/approved/?c=%d\" % c1.pk)\n\n    def testApproveSignals(self):\n        def receive(sender, **kwargs):\n            received_signals.append(kwargs.get('signal'))\n\n        # Connect signals and keep track of handled ones\n        received_signals = []\n        signals.comment_was_flagged.connect(receive)\n\n        # Post a comment and check the signals\n        self.testApprovePost()\n        self.assertEqual(received_signals, [signals.comment_was_flagged])\n\n        signals.comment_was_flagged.disconnect(receive)\n\n    def testApprovedView(self):\n        comments = self.createSomeComments()\n        pk = comments[0].pk\n        response = self.client.get(\"/approved/\", data={\"c\":pk})\n        self.assertTemplateUsed(response, \"comments/approved.html\")\n\nclass AdminActionsTests(CommentTestCase):\n    urls = \"regressiontests.comment_tests.urls_admin\"\n\n    def setUp(self):\n        super(AdminActionsTests, self).setUp()\n\n        # Make \"normaluser\" a moderator\n        u = User.objects.get(username=\"normaluser\")\n        u.is_staff = True\n        perms = Permission.objects.filter(\n            content_type__app_label = 'comments',\n            codename__endswith = 'comment'\n        )\n        for perm in perms:\n            u.user_permissions.add(perm)\n        u.save()\n\n    def testActionsNonModerator(self):\n        comments = self.createSomeComments()\n        self.client.login(username=\"normaluser\", password=\"normaluser\")\n        response = self.client.get(\"/admin/comments/comment/\")\n        self.assertNotContains(response, \"approve_comments\")\n\n    def testActionsModerator(self):\n        comments = self.createSomeComments()\n        makeModerator(\"normaluser\")\n        self.client.login(username=\"normaluser\", password=\"normaluser\")\n        response = self.client.get(\"/admin/comments/comment/\")\n        self.assertContains(response, \"approve_comments\")\n\n    def testActionsDisabledDelete(self):\n        \"Tests a CommentAdmin where 'delete_selected' has been disabled.\"\n        comments = self.createSomeComments()\n        self.client.login(username=\"normaluser\", password=\"normaluser\")\n        response = self.client.get('/admin2/comments/comment/')\n        self.assertEqual(response.status_code, 200)\n        self.assertNotContains(response, '<option value=\"delete_selected\">')\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/comment_tests/tests/templatetag_tests.py",
    "content": "from __future__ import absolute_import\n\nfrom django.contrib.comments.forms import CommentForm\nfrom django.contrib.comments.models import Comment\nfrom django.contrib.contenttypes.models import ContentType\nfrom django.template import Template, Context\n\nfrom ..models import Article, Author\nfrom . import CommentTestCase\n\n\nclass CommentTemplateTagTests(CommentTestCase):\n\n    def render(self, t, **c):\n        ctx = Context(c)\n        out = Template(t).render(ctx)\n        return ctx, out\n\n    def testCommentFormTarget(self):\n        ctx, out = self.render(\"{% load comments %}{% comment_form_target %}\")\n        self.assertEqual(out, \"/post/\")\n\n    def testGetCommentForm(self, tag=None):\n        t = \"{% load comments %}\" + (tag or \"{% get_comment_form for comment_tests.article a.id as form %}\")\n        ctx, out = self.render(t, a=Article.objects.get(pk=1))\n        self.assertEqual(out, \"\")\n        self.assertTrue(isinstance(ctx[\"form\"], CommentForm))\n\n    def testGetCommentFormFromLiteral(self):\n        self.testGetCommentForm(\"{% get_comment_form for comment_tests.article 1 as form %}\")\n\n    def testGetCommentFormFromObject(self):\n        self.testGetCommentForm(\"{% get_comment_form for a as form %}\")\n\n    def testRenderCommentForm(self, tag=None):\n        t = \"{% load comments %}\" + (tag or \"{% render_comment_form for comment_tests.article a.id %}\")\n        ctx, out = self.render(t, a=Article.objects.get(pk=1))\n        self.assertTrue(out.strip().startswith(\"<form action=\"))\n        self.assertTrue(out.strip().endswith(\"</form>\"))\n\n    def testRenderCommentFormFromLiteral(self):\n        self.testRenderCommentForm(\"{% render_comment_form for comment_tests.article 1 %}\")\n\n    def testRenderCommentFormFromObject(self):\n        self.testRenderCommentForm(\"{% render_comment_form for a %}\")\n\n    def testRenderCommentFormFromObjectWithQueryCount(self):\n        with self.assertNumQueries(1):\n            self.testRenderCommentFormFromObject()\n\n    def verifyGetCommentCount(self, tag=None):\n        t = \"{% load comments %}\" + (tag or \"{% get_comment_count for comment_tests.article a.id as cc %}\") + \"{{ cc }}\"\n        ctx, out = self.render(t, a=Article.objects.get(pk=1))\n        self.assertEqual(out, \"2\")\n\n    def testGetCommentCount(self):\n        self.createSomeComments()\n        self.verifyGetCommentCount(\"{% get_comment_count for comment_tests.article a.id as cc %}\")\n\n    def testGetCommentCountFromLiteral(self):\n        self.createSomeComments()\n        self.verifyGetCommentCount(\"{% get_comment_count for comment_tests.article 1 as cc %}\")\n\n    def testGetCommentCountFromObject(self):\n        self.createSomeComments()\n        self.verifyGetCommentCount(\"{% get_comment_count for a as cc %}\")\n\n    def verifyGetCommentList(self, tag=None):\n        c1, c2, c3, c4 = Comment.objects.all()[:4]\n        t = \"{% load comments %}\" +  (tag or \"{% get_comment_list for comment_tests.author a.id as cl %}\")\n        ctx, out = self.render(t, a=Author.objects.get(pk=1))\n        self.assertEqual(out, \"\")\n        self.assertEqual(list(ctx[\"cl\"]), [c2])\n\n    def testGetCommentList(self):\n        self.createSomeComments()\n        self.verifyGetCommentList(\"{% get_comment_list for comment_tests.author a.id as cl %}\")\n\n    def testGetCommentListFromLiteral(self):\n        self.createSomeComments()\n        self.verifyGetCommentList(\"{% get_comment_list for comment_tests.author 1 as cl %}\")\n\n    def testGetCommentListFromObject(self):\n        self.createSomeComments()\n        self.verifyGetCommentList(\"{% get_comment_list for a as cl %}\")\n\n    def testGetCommentPermalink(self):\n        c1, c2, c3, c4 = self.createSomeComments()\n        t = \"{% load comments %}{% get_comment_list for comment_tests.author author.id as cl %}\"\n        t += \"{% get_comment_permalink cl.0 %}\"\n        ct = ContentType.objects.get_for_model(Author)\n        author = Author.objects.get(pk=1)\n        ctx, out = self.render(t, author=author)\n        self.assertEqual(out, \"/cr/%s/%s/#c%s\" % (ct.id, author.id, c2.id))\n\n    def testGetCommentPermalinkFormatted(self):\n        c1, c2, c3, c4 = self.createSomeComments()\n        t = \"{% load comments %}{% get_comment_list for comment_tests.author author.id as cl %}\"\n        t += \"{% get_comment_permalink cl.0 '#c%(id)s-by-%(user_name)s' %}\"\n        ct = ContentType.objects.get_for_model(Author)\n        author = Author.objects.get(pk=1)\n        ctx, out = self.render(t, author=author)\n        self.assertEqual(out, \"/cr/%s/%s/#c%s-by-Joe Somebody\" % (ct.id, author.id, c2.id))\n\n    def testRenderCommentList(self, tag=None):\n        t = \"{% load comments %}\" + (tag or \"{% render_comment_list for comment_tests.article a.id %}\")\n        ctx, out = self.render(t, a=Article.objects.get(pk=1))\n        self.assertTrue(out.strip().startswith(\"<dl id=\\\"comments\\\">\"))\n        self.assertTrue(out.strip().endswith(\"</dl>\"))\n\n    def testRenderCommentListFromLiteral(self):\n        self.testRenderCommentList(\"{% render_comment_list for comment_tests.article 1 %}\")\n\n    def testRenderCommentListFromObject(self):\n        self.testRenderCommentList(\"{% render_comment_list for a %}\")\n\n    def testNumberQueries(self):\n        \"\"\"\n        Ensure that the template tags use cached content types to reduce the\n        number of DB queries.\n        Refs #16042.\n        \"\"\"\n\n        self.createSomeComments()\n\n        # {% render_comment_list %} -----------------\n\n        # Clear CT cache\n        ContentType.objects.clear_cache()\n        with self.assertNumQueries(4):\n            self.testRenderCommentListFromObject()\n\n        # CT's should be cached\n        with self.assertNumQueries(3):\n            self.testRenderCommentListFromObject()\n\n        # {% get_comment_list %} --------------------\n\n        ContentType.objects.clear_cache()\n        with self.assertNumQueries(4):\n            self.verifyGetCommentList()\n\n        with self.assertNumQueries(3):\n            self.verifyGetCommentList()\n\n        # {% render_comment_form %} -----------------\n\n        ContentType.objects.clear_cache()\n        with self.assertNumQueries(3):\n            self.testRenderCommentForm()\n\n        with self.assertNumQueries(2):\n            self.testRenderCommentForm()\n\n        # {% get_comment_form %} --------------------\n\n        ContentType.objects.clear_cache()\n        with self.assertNumQueries(3):\n            self.testGetCommentForm()\n\n        with self.assertNumQueries(2):\n            self.testGetCommentForm()\n\n        # {% get_comment_count %} -------------------\n\n        ContentType.objects.clear_cache()\n        with self.assertNumQueries(3):\n            self.verifyGetCommentCount()\n\n        with self.assertNumQueries(2):\n            self.verifyGetCommentCount()\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/comment_tests/urls.py",
    "content": "from __future__ import absolute_import\n\nfrom django.conf.urls import patterns, url\nfrom django.contrib.comments.feeds import LatestCommentFeed\n\nfrom .custom_comments import views\n\n\nfeeds = {\n     'comments': LatestCommentFeed,\n}\n\nurlpatterns = patterns('',\n    url(r'^post/$', views.custom_submit_comment),\n    url(r'^flag/(\\d+)/$', views.custom_flag_comment),\n    url(r'^delete/(\\d+)/$', views.custom_delete_comment),\n    url(r'^approve/(\\d+)/$', views.custom_approve_comment),\n    url(r'^cr/(\\d+)/(.+)/$', 'django.contrib.contenttypes.views.shortcut', name='comments-url-redirect'),\n)\n\nurlpatterns += patterns('',\n    (r'^rss/comments/$', LatestCommentFeed()),\n)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/comment_tests/urls_admin.py",
    "content": "from django.conf.urls import patterns, include\nfrom django.contrib import admin\nfrom django.contrib.comments.admin import CommentsAdmin\nfrom django.contrib.comments.models import Comment\n\n# Make a new AdminSite to avoid picking up the deliberately broken admin\n# modules in other tests.\nadmin_site = admin.AdminSite()\nadmin_site.register(Comment, CommentsAdmin)\n\n# To demonstrate proper functionality even when ``delete_selected`` is removed.\nadmin_site2 = admin.AdminSite()\nadmin_site2.disable_action('delete_selected')\nadmin_site2.register(Comment, CommentsAdmin)\n\nurlpatterns = patterns('',\n    (r'^admin/', include(admin_site.urls)),\n    (r'^admin2/', include(admin_site2.urls)),\n)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/comment_tests/urls_default.py",
    "content": "from django.conf.urls import patterns, include\n\nurlpatterns = patterns('',\n    (r'^', include('django.contrib.comments.urls')),\n\n    # Provide the auth system login and logout views\n    (r'^accounts/login/$', 'django.contrib.auth.views.login', {'template_name': 'login.html'}),\n    (r'^accounts/logout/$', 'django.contrib.auth.views.logout'),\n)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/conditional_processing/__init__.py",
    "content": "# -*- coding:utf-8 -*-\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/conditional_processing/models.py",
    "content": "# -*- coding:utf-8 -*-\nfrom __future__ import unicode_literals\n\nfrom datetime import datetime\n\nfrom django.test import TestCase\n\n\nFULL_RESPONSE = 'Test conditional get response'\nLAST_MODIFIED = datetime(2007, 10, 21, 23, 21, 47)\nLAST_MODIFIED_STR = 'Sun, 21 Oct 2007 23:21:47 GMT'\nLAST_MODIFIED_NEWER_STR = 'Mon, 18 Oct 2010 16:56:23 GMT'\nLAST_MODIFIED_INVALID_STR = 'Mon, 32 Oct 2010 16:56:23 GMT'\nEXPIRED_LAST_MODIFIED_STR = 'Sat, 20 Oct 2007 23:21:47 GMT'\nETAG = 'b4246ffc4f62314ca13147c9d4f76974'\nEXPIRED_ETAG = '7fae4cd4b0f81e7d2914700043aa8ed6'\n\nclass ConditionalGet(TestCase):\n    urls = 'regressiontests.conditional_processing.urls'\n\n    def assertFullResponse(self, response, check_last_modified=True, check_etag=True):\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.content, FULL_RESPONSE.encode())\n        if check_last_modified:\n            self.assertEqual(response['Last-Modified'], LAST_MODIFIED_STR)\n        if check_etag:\n            self.assertEqual(response['ETag'], '\"%s\"' % ETAG)\n\n    def assertNotModified(self, response):\n        self.assertEqual(response.status_code, 304)\n        self.assertEqual(response.content, b'')\n\n    def testWithoutConditions(self):\n        response = self.client.get('/condition/')\n        self.assertFullResponse(response)\n\n    def testIfModifiedSince(self):\n        self.client.defaults['HTTP_IF_MODIFIED_SINCE'] = LAST_MODIFIED_STR\n        response = self.client.get('/condition/')\n        self.assertNotModified(response)\n        self.client.defaults['HTTP_IF_MODIFIED_SINCE'] = LAST_MODIFIED_NEWER_STR\n        response = self.client.get('/condition/')\n        self.assertNotModified(response)\n        self.client.defaults['HTTP_IF_MODIFIED_SINCE'] = LAST_MODIFIED_INVALID_STR\n        response = self.client.get('/condition/')\n        self.assertFullResponse(response)\n        self.client.defaults['HTTP_IF_MODIFIED_SINCE'] = EXPIRED_LAST_MODIFIED_STR\n        response = self.client.get('/condition/')\n        self.assertFullResponse(response)\n\n    def testIfNoneMatch(self):\n        self.client.defaults['HTTP_IF_NONE_MATCH'] = '\"%s\"' % ETAG\n        response = self.client.get('/condition/')\n        self.assertNotModified(response)\n        self.client.defaults['HTTP_IF_NONE_MATCH'] = '\"%s\"' % EXPIRED_ETAG\n        response = self.client.get('/condition/')\n        self.assertFullResponse(response)\n\n        # Several etags in If-None-Match is a bit exotic but why not?\n        self.client.defaults['HTTP_IF_NONE_MATCH'] = '\"%s\", \"%s\"' % (ETAG, EXPIRED_ETAG)\n        response = self.client.get('/condition/')\n        self.assertNotModified(response)\n\n    def testIfMatch(self):\n        self.client.defaults['HTTP_IF_MATCH'] = '\"%s\"' % ETAG\n        response = self.client.put('/condition/etag/')\n        self.assertEqual(response.status_code, 200)\n        self.client.defaults['HTTP_IF_MATCH'] = '\"%s\"' % EXPIRED_ETAG\n        response = self.client.put('/condition/etag/')\n        self.assertEqual(response.status_code, 412)\n\n    def testBothHeaders(self):\n        self.client.defaults['HTTP_IF_MODIFIED_SINCE'] = LAST_MODIFIED_STR\n        self.client.defaults['HTTP_IF_NONE_MATCH'] = '\"%s\"' % ETAG\n        response = self.client.get('/condition/')\n        self.assertNotModified(response)\n\n        self.client.defaults['HTTP_IF_MODIFIED_SINCE'] = EXPIRED_LAST_MODIFIED_STR\n        self.client.defaults['HTTP_IF_NONE_MATCH'] = '\"%s\"' % ETAG\n        response = self.client.get('/condition/')\n        self.assertFullResponse(response)\n\n        self.client.defaults['HTTP_IF_MODIFIED_SINCE'] = LAST_MODIFIED_STR\n        self.client.defaults['HTTP_IF_NONE_MATCH'] = '\"%s\"' % EXPIRED_ETAG\n        response = self.client.get('/condition/')\n        self.assertFullResponse(response)\n\n    def testSingleCondition1(self):\n        self.client.defaults['HTTP_IF_MODIFIED_SINCE'] = LAST_MODIFIED_STR\n        response = self.client.get('/condition/last_modified/')\n        self.assertNotModified(response)\n        response = self.client.get('/condition/etag/')\n        self.assertFullResponse(response, check_last_modified=False)\n\n    def testSingleCondition2(self):\n        self.client.defaults['HTTP_IF_NONE_MATCH'] = '\"%s\"' % ETAG\n        response = self.client.get('/condition/etag/')\n        self.assertNotModified(response)\n        response = self.client.get('/condition/last_modified/')\n        self.assertFullResponse(response, check_etag=False)\n\n    def testSingleCondition3(self):\n        self.client.defaults['HTTP_IF_MODIFIED_SINCE'] = EXPIRED_LAST_MODIFIED_STR\n        response = self.client.get('/condition/last_modified/')\n        self.assertFullResponse(response, check_etag=False)\n\n    def testSingleCondition4(self):\n        self.client.defaults['HTTP_IF_NONE_MATCH'] = '\"%s\"' % EXPIRED_ETAG\n        response = self.client.get('/condition/etag/')\n        self.assertFullResponse(response, check_last_modified=False)\n\n    def testSingleCondition5(self):\n        self.client.defaults['HTTP_IF_MODIFIED_SINCE'] = LAST_MODIFIED_STR\n        response = self.client.get('/condition/last_modified2/')\n        self.assertNotModified(response)\n        response = self.client.get('/condition/etag2/')\n        self.assertFullResponse(response, check_last_modified=False)\n\n    def testSingleCondition6(self):\n        self.client.defaults['HTTP_IF_NONE_MATCH'] = '\"%s\"' % ETAG\n        response = self.client.get('/condition/etag2/')\n        self.assertNotModified(response)\n        response = self.client.get('/condition/last_modified2/')\n        self.assertFullResponse(response, check_etag=False)\n\n    def testInvalidETag(self):\n        self.client.defaults['HTTP_IF_NONE_MATCH'] = r'\"\\\"'\n        response = self.client.get('/condition/etag/')\n        self.assertFullResponse(response, check_last_modified=False)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/conditional_processing/urls.py",
    "content": "from django.conf.urls import patterns\n\nfrom . import views\n\n\nurlpatterns = patterns('',\n    ('^condition/$', views.index),\n    ('^condition/last_modified/$', views.last_modified_view1),\n    ('^condition/last_modified2/$', views.last_modified_view2),\n    ('^condition/etag/$', views.etag_view1),\n    ('^condition/etag2/$', views.etag_view2),\n)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/conditional_processing/views.py",
    "content": "# -*- coding:utf-8 -*-\nfrom __future__ import absolute_import\n\nfrom django.views.decorators.http import condition, etag, last_modified\nfrom django.http import HttpResponse\n\nfrom .models import FULL_RESPONSE, LAST_MODIFIED, ETAG\n\n\ndef index(request):\n    return HttpResponse(FULL_RESPONSE)\nindex = condition(lambda r: ETAG, lambda r: LAST_MODIFIED)(index)\n\ndef last_modified_view1(request):\n    return HttpResponse(FULL_RESPONSE)\nlast_modified_view1 = condition(last_modified_func=lambda r: LAST_MODIFIED)(last_modified_view1)\n\ndef last_modified_view2(request):\n    return HttpResponse(FULL_RESPONSE)\nlast_modified_view2 = last_modified(lambda r: LAST_MODIFIED)(last_modified_view2)\n\ndef etag_view1(request):\n    return HttpResponse(FULL_RESPONSE)\netag_view1 = condition(etag_func=lambda r: ETAG)(etag_view1)\n\ndef etag_view2(request):\n    return HttpResponse(FULL_RESPONSE)\netag_view2 = etag(lambda r: ETAG)(etag_view2)\n\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/context_processors/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/context_processors/models.py",
    "content": "# Models file for tests to run.\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/context_processors/templates/context_processors/request_attrs.html",
    "content": "{% if request %}\nHave request\n{% else %}\nNo request\n{% endif %}\n\n{% if request.is_secure %}\nSecure\n{% else %}\nNot secure\n{% endif %}\n\n{{ request.path }}\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/context_processors/tests.py",
    "content": "\"\"\"\nTests for Django's bundled context processors.\n\"\"\"\nfrom django.test import TestCase\n\n\nclass RequestContextProcessorTests(TestCase):\n    \"\"\"\n    Tests for the ``django.core.context_processors.request`` processor.\n    \"\"\"\n\n    urls = 'regressiontests.context_processors.urls'\n\n    def test_request_attributes(self):\n        \"\"\"\n        Test that the request object is available in the template and that its\n        attributes can't be overridden by GET and POST parameters (#3828).\n        \"\"\"\n        url = '/request_attrs/'\n        # We should have the request object in the template.\n        response = self.client.get(url)\n        self.assertContains(response, 'Have request')\n        # Test is_secure.\n        response = self.client.get(url)\n        self.assertContains(response, 'Not secure')\n        response = self.client.get(url, {'is_secure': 'blah'})\n        self.assertContains(response, 'Not secure')\n        response = self.client.post(url, {'is_secure': 'blah'})\n        self.assertContains(response, 'Not secure')\n        # Test path.\n        response = self.client.get(url)\n        self.assertContains(response, url)\n        response = self.client.get(url, {'path': '/blah/'})\n        self.assertContains(response, url)\n        response = self.client.post(url, {'path': '/blah/'})\n        self.assertContains(response, url)\n\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/context_processors/urls.py",
    "content": "from __future__ import absolute_import\n\nfrom django.conf.urls import patterns, url\n\nfrom . import views\n\n\nurlpatterns = patterns('',\n    (r'^request_attrs/$', views.request_processor),\n)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/context_processors/views.py",
    "content": "from django.core import context_processors\nfrom django.shortcuts import render_to_response\nfrom django.template.context import RequestContext\n\n\ndef request_processor(request):\n    return render_to_response('context_processors/request_attrs.html',\n        RequestContext(request, {}, processors=[context_processors.request]))\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/createsuperuser/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/createsuperuser/models.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/createsuperuser/tests.py",
    "content": "from django.contrib.auth import models\nfrom django.contrib.auth.management.commands import changepassword\nfrom django.core.management import call_command\nfrom django.test import TestCase\nfrom django.utils.six import StringIO\n\n\nclass MultiDBChangepasswordManagementCommandTestCase(TestCase):\n    multi_db = True\n\n    def setUp(self):\n        self.user = models.User.objects.db_manager('other').create_user(username='joe', password='qwerty')\n        self.stdout = StringIO()\n\n    def tearDown(self):\n        self.stdout.close()\n\n    def test_that_changepassword_command_with_database_option_uses_given_db(self):\n        \"\"\"\n        Executing the changepassword management command with a database option\n        should operate on the specified DB\n        \"\"\"\n        self.assertTrue(self.user.check_password('qwerty'))\n        command = changepassword.Command()\n        command._get_pass = lambda *args: 'not qwerty'\n\n        command.execute(\"joe\", database='other', stdout=self.stdout)\n        command_output = self.stdout.getvalue().strip()\n\n        self.assertEqual(command_output, \"Changing password for user 'joe'\\nPassword changed successfully for user 'joe'\")\n        self.assertTrue(models.User.objects.using('other').get(username=\"joe\").check_password(\"not qwerty\"))\n\n\nclass MultiDBCreatesuperuserTestCase(TestCase):\n    multi_db = True\n\n    def test_createsuperuser_command_with_database_option(self):\n        \" createsuperuser command should operate on specified DB\"\n        new_io = StringIO()\n\n        call_command(\"createsuperuser\",\n            interactive=False,\n            username=\"joe\",\n            email=\"joe@somewhere.org\",\n            database='other',\n            stdout=new_io\n        )\n        command_output = new_io.getvalue().strip()\n\n        self.assertEqual(command_output, 'Superuser created successfully.')\n\n        u = models.User.objects.using('other').get(username=\"joe\")\n        self.assertEqual(u.email, 'joe@somewhere.org')\n\n        new_io.close()\n\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/csrf_tests/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/csrf_tests/models.py",
    "content": "# models.py file for tests to run.\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/csrf_tests/tests.py",
    "content": "# -*- coding: utf-8 -*-\nfrom __future__ import unicode_literals\n\nfrom django.conf import settings\nfrom django.core.context_processors import csrf\nfrom django.http import HttpRequest, HttpResponse\nfrom django.middleware.csrf import CsrfViewMiddleware, CSRF_KEY_LENGTH\nfrom django.template import RequestContext, Template\nfrom django.test import TestCase\nfrom django.test.utils import override_settings\nfrom django.views.decorators.csrf import csrf_exempt, requires_csrf_token, ensure_csrf_cookie\n\n\n# Response/views used for CsrfResponseMiddleware and CsrfViewMiddleware tests\ndef post_form_response():\n    resp = HttpResponse(content=\"\"\"\n<html><body><h1>\\u00a1Unicode!<form method=\"post\"><input type=\"text\" /></form></body></html>\n\"\"\", mimetype=\"text/html\")\n    return resp\n\ndef post_form_view(request):\n    \"\"\"A view that returns a POST form (without a token)\"\"\"\n    return post_form_response()\n\n# Response/views used for template tag tests\n\ndef token_view(request):\n    \"\"\"A view that uses {% csrf_token %}\"\"\"\n    context = RequestContext(request, processors=[csrf])\n    template = Template(\"{% csrf_token %}\")\n    return HttpResponse(template.render(context))\n\ndef non_token_view_using_request_processor(request):\n    \"\"\"\n    A view that doesn't use the token, but does use the csrf view processor.\n    \"\"\"\n    context = RequestContext(request, processors=[csrf])\n    template = Template(\"\")\n    return HttpResponse(template.render(context))\n\nclass TestingHttpRequest(HttpRequest):\n    \"\"\"\n    A version of HttpRequest that allows us to change some things\n    more easily\n    \"\"\"\n    def is_secure(self):\n        return getattr(self, '_is_secure_override', False)\n\nclass CsrfViewMiddlewareTest(TestCase):\n    # The csrf token is potentially from an untrusted source, so could have\n    # characters that need dealing with.\n    _csrf_id_cookie = b\"<1>\\xc2\\xa1\"\n    _csrf_id = \"1\"\n\n    def _get_GET_no_csrf_cookie_request(self):\n        return TestingHttpRequest()\n\n    def _get_GET_csrf_cookie_request(self):\n        req = TestingHttpRequest()\n        req.COOKIES[settings.CSRF_COOKIE_NAME] = self._csrf_id_cookie\n        return req\n\n    def _get_POST_csrf_cookie_request(self):\n        req = self._get_GET_csrf_cookie_request()\n        req.method = \"POST\"\n        return req\n\n    def _get_POST_no_csrf_cookie_request(self):\n        req = self._get_GET_no_csrf_cookie_request()\n        req.method = \"POST\"\n        return req\n\n    def _get_POST_request_with_token(self):\n        req = self._get_POST_csrf_cookie_request()\n        req.POST['csrfmiddlewaretoken'] = self._csrf_id\n        return req\n\n    def _check_token_present(self, response, csrf_id=None):\n        self.assertContains(response, \"name='csrfmiddlewaretoken' value='%s'\" % (csrf_id or self._csrf_id))\n\n    def test_process_view_token_too_long(self): \n        \"\"\" \n        Check that if the token is longer than expected, it is ignored and \n        a new token is created. \n        \"\"\" \n        req = self._get_GET_no_csrf_cookie_request() \n        req.COOKIES[settings.CSRF_COOKIE_NAME] = 'x' * 10000000 \n        CsrfViewMiddleware().process_view(req, token_view, (), {}) \n        resp = token_view(req) \n        resp2 = CsrfViewMiddleware().process_response(req, resp) \n        csrf_cookie = resp2.cookies.get(settings.CSRF_COOKIE_NAME, False) \n        self.assertEqual(len(csrf_cookie.value), CSRF_KEY_LENGTH) \n\n    def test_process_response_get_token_used(self):\n        \"\"\"\n        When get_token is used, check that the cookie is created and headers\n        patched.\n        \"\"\"\n        req = self._get_GET_no_csrf_cookie_request()\n\n        # Put tests for CSRF_COOKIE_* settings here\n        with self.settings(CSRF_COOKIE_NAME='myname',\n                           CSRF_COOKIE_DOMAIN='.example.com',\n                           CSRF_COOKIE_PATH='/test/',\n                           CSRF_COOKIE_SECURE=True):\n            # token_view calls get_token() indirectly\n            CsrfViewMiddleware().process_view(req, token_view, (), {})\n            resp = token_view(req)\n            resp2 = CsrfViewMiddleware().process_response(req, resp)\n        csrf_cookie = resp2.cookies.get('myname', False)\n        self.assertNotEqual(csrf_cookie, False)\n        self.assertEqual(csrf_cookie['domain'], '.example.com')\n        self.assertEqual(csrf_cookie['secure'], True)\n        self.assertEqual(csrf_cookie['path'], '/test/')\n        self.assertTrue('Cookie' in resp2.get('Vary',''))\n\n    def test_process_response_get_token_not_used(self):\n        \"\"\"\n        Check that if get_token() is not called, the view middleware does not\n        add a cookie.\n        \"\"\"\n        # This is important to make pages cacheable.  Pages which do call\n        # get_token(), assuming they use the token, are not cacheable because\n        # the token is specific to the user\n        req = self._get_GET_no_csrf_cookie_request()\n        # non_token_view_using_request_processor does not call get_token(), but\n        # does use the csrf request processor.  By using this, we are testing\n        # that the view processor is properly lazy and doesn't call get_token()\n        # until needed.\n        CsrfViewMiddleware().process_view(req, non_token_view_using_request_processor, (), {})\n        resp = non_token_view_using_request_processor(req)\n        resp2 = CsrfViewMiddleware().process_response(req, resp)\n\n        csrf_cookie = resp2.cookies.get(settings.CSRF_COOKIE_NAME, False)\n        self.assertEqual(csrf_cookie, False)\n\n    # Check the request processing\n    def test_process_request_no_csrf_cookie(self):\n        \"\"\"\n        Check that if no CSRF cookies is present, the middleware rejects the\n        incoming request.  This will stop login CSRF.\n        \"\"\"\n        req = self._get_POST_no_csrf_cookie_request()\n        req2 = CsrfViewMiddleware().process_view(req, post_form_view, (), {})\n        self.assertEqual(403, req2.status_code)\n\n    def test_process_request_csrf_cookie_no_token(self):\n        \"\"\"\n        Check that if a CSRF cookie is present but no token, the middleware\n        rejects the incoming request.\n        \"\"\"\n        req = self._get_POST_csrf_cookie_request()\n        req2 = CsrfViewMiddleware().process_view(req, post_form_view, (), {})\n        self.assertEqual(403, req2.status_code)\n\n    def test_process_request_csrf_cookie_and_token(self):\n        \"\"\"\n        Check that if both a cookie and a token is present, the middleware lets it through.\n        \"\"\"\n        req = self._get_POST_request_with_token()\n        req2 = CsrfViewMiddleware().process_view(req, post_form_view, (), {})\n        self.assertEqual(None, req2)\n\n    def test_process_request_csrf_cookie_no_token_exempt_view(self):\n        \"\"\"\n        Check that if a CSRF cookie is present and no token, but the csrf_exempt\n        decorator has been applied to the view, the middleware lets it through\n        \"\"\"\n        req = self._get_POST_csrf_cookie_request()\n        req2 = CsrfViewMiddleware().process_view(req, csrf_exempt(post_form_view), (), {})\n        self.assertEqual(None, req2)\n\n    def test_csrf_token_in_header(self):\n        \"\"\"\n        Check that we can pass in the token in a header instead of in the form\n        \"\"\"\n        req = self._get_POST_csrf_cookie_request()\n        req.META['HTTP_X_CSRFTOKEN'] = self._csrf_id\n        req2 = CsrfViewMiddleware().process_view(req, post_form_view, (), {})\n        self.assertEqual(None, req2)\n\n    def test_put_and_delete_rejected(self):\n        \"\"\"\n        Tests that HTTP PUT and DELETE methods have protection\n        \"\"\"\n        req = TestingHttpRequest()\n        req.method = 'PUT'\n        req2 = CsrfViewMiddleware().process_view(req, post_form_view, (), {})\n        self.assertEqual(403, req2.status_code)\n\n        req = TestingHttpRequest()\n        req.method = 'DELETE'\n        req2 = CsrfViewMiddleware().process_view(req, post_form_view, (), {})\n        self.assertEqual(403, req2.status_code)\n\n    def test_put_and_delete_allowed(self):\n        \"\"\"\n        Tests that HTTP PUT and DELETE methods can get through with\n        X-CSRFToken and a cookie\n        \"\"\"\n        req = self._get_GET_csrf_cookie_request()\n        req.method = 'PUT'\n        req.META['HTTP_X_CSRFTOKEN'] = self._csrf_id\n        req2 = CsrfViewMiddleware().process_view(req, post_form_view, (), {})\n        self.assertEqual(None, req2)\n\n        req = self._get_GET_csrf_cookie_request()\n        req.method = 'DELETE'\n        req.META['HTTP_X_CSRFTOKEN'] = self._csrf_id\n        req2 = CsrfViewMiddleware().process_view(req, post_form_view, (), {})\n        self.assertEqual(None, req2)\n\n    # Tests for the template tag method\n    def test_token_node_no_csrf_cookie(self):\n        \"\"\"\n        Check that CsrfTokenNode works when no CSRF cookie is set\n        \"\"\"\n        req = self._get_GET_no_csrf_cookie_request()\n        resp = token_view(req)\n        self.assertEqual(resp.content, b'')\n\n    def test_token_node_empty_csrf_cookie(self):\n        \"\"\"\n        Check that we get a new token if the csrf_cookie is the empty string\n        \"\"\"\n        req = self._get_GET_no_csrf_cookie_request()\n        req.COOKIES[settings.CSRF_COOKIE_NAME] = b\"\"\n        CsrfViewMiddleware().process_view(req, token_view, (), {})\n        resp = token_view(req)\n\n        self.assertNotEqual(\"\", resp.content)\n\n    def test_token_node_with_csrf_cookie(self):\n        \"\"\"\n        Check that CsrfTokenNode works when a CSRF cookie is set\n        \"\"\"\n        req = self._get_GET_csrf_cookie_request()\n        CsrfViewMiddleware().process_view(req, token_view, (), {})\n        resp = token_view(req)\n        self._check_token_present(resp)\n\n    def test_get_token_for_exempt_view(self):\n        \"\"\"\n        Check that get_token still works for a view decorated with 'csrf_exempt'.\n        \"\"\"\n        req = self._get_GET_csrf_cookie_request()\n        CsrfViewMiddleware().process_view(req, csrf_exempt(token_view), (), {})\n        resp = token_view(req)\n        self._check_token_present(resp)\n\n    def test_get_token_for_requires_csrf_token_view(self):\n        \"\"\"\n        Check that get_token works for a view decorated solely with requires_csrf_token\n        \"\"\"\n        req = self._get_GET_csrf_cookie_request()\n        resp = requires_csrf_token(token_view)(req)\n        self._check_token_present(resp)\n\n    def test_token_node_with_new_csrf_cookie(self):\n        \"\"\"\n        Check that CsrfTokenNode works when a CSRF cookie is created by\n        the middleware (when one was not already present)\n        \"\"\"\n        req = self._get_GET_no_csrf_cookie_request()\n        CsrfViewMiddleware().process_view(req, token_view, (), {})\n        resp = token_view(req)\n        resp2 = CsrfViewMiddleware().process_response(req, resp)\n        csrf_cookie = resp2.cookies[settings.CSRF_COOKIE_NAME]\n        self._check_token_present(resp, csrf_id=csrf_cookie.value)\n\n    @override_settings(ALLOWED_HOSTS=['www.example.com'])\n    def test_https_bad_referer(self):\n        \"\"\"\n        Test that a POST HTTPS request with a bad referer is rejected\n        \"\"\"\n        req = self._get_POST_request_with_token()\n        req._is_secure_override = True\n        req.META['HTTP_HOST'] = 'www.example.com'\n        req.META['HTTP_REFERER'] = 'https://www.evil.org/somepage'\n        req2 = CsrfViewMiddleware().process_view(req, post_form_view, (), {})\n        self.assertNotEqual(None, req2)\n        self.assertEqual(403, req2.status_code)\n\n    @override_settings(ALLOWED_HOSTS=['www.example.com'])\n    def test_https_good_referer(self):\n        \"\"\"\n        Test that a POST HTTPS request with a good referer is accepted\n        \"\"\"\n        req = self._get_POST_request_with_token()\n        req._is_secure_override = True\n        req.META['HTTP_HOST'] = 'www.example.com'\n        req.META['HTTP_REFERER'] = 'https://www.example.com/somepage'\n        req2 = CsrfViewMiddleware().process_view(req, post_form_view, (), {})\n        self.assertEqual(None, req2)\n\n    @override_settings(ALLOWED_HOSTS=['www.example.com'])\n    def test_https_good_referer_2(self):\n        \"\"\"\n        Test that a POST HTTPS request with a good referer is accepted\n        where the referer contains no trailing slash\n        \"\"\"\n        # See ticket #15617\n        req = self._get_POST_request_with_token()\n        req._is_secure_override = True\n        req.META['HTTP_HOST'] = 'www.example.com'\n        req.META['HTTP_REFERER'] = 'https://www.example.com'\n        req2 = CsrfViewMiddleware().process_view(req, post_form_view, (), {})\n        self.assertEqual(None, req2)\n\n    def test_ensures_csrf_cookie_no_middleware(self):\n        \"\"\"\n        Tests that ensures_csrf_cookie decorator fulfils its promise\n        with no middleware\n        \"\"\"\n        @ensure_csrf_cookie\n        def view(request):\n            # Doesn't insert a token or anything\n            return HttpResponse(content=\"\")\n\n        req = self._get_GET_no_csrf_cookie_request()\n        resp = view(req)\n        self.assertTrue(resp.cookies.get(settings.CSRF_COOKIE_NAME, False))\n        self.assertTrue('Cookie' in resp.get('Vary',''))\n\n    def test_ensures_csrf_cookie_with_middleware(self):\n        \"\"\"\n        Tests that ensures_csrf_cookie decorator fulfils its promise\n        with the middleware enabled.\n        \"\"\"\n        @ensure_csrf_cookie\n        def view(request):\n            # Doesn't insert a token or anything\n            return HttpResponse(content=\"\")\n\n        req = self._get_GET_no_csrf_cookie_request()\n        CsrfViewMiddleware().process_view(req, view, (), {})\n        resp = view(req)\n        resp2 = CsrfViewMiddleware().process_response(req, resp)\n        self.assertTrue(resp2.cookies.get(settings.CSRF_COOKIE_NAME, False))\n        self.assertTrue('Cookie' in resp2.get('Vary',''))\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/custom_columns_regress/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/custom_columns_regress/models.py",
    "content": "\"\"\"\nRegression for #9736.\n\nChecks some pathological column naming to make sure it doesn't break\ntable creation or queries.\n\n\"\"\"\nfrom __future__ import unicode_literals\n\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n@python_2_unicode_compatible\nclass Article(models.Model):\n    Article_ID = models.AutoField(primary_key=True, db_column='Article ID')\n    headline = models.CharField(max_length=100)\n    authors = models.ManyToManyField('Author', db_table='my m2m table')\n    primary_author = models.ForeignKey('Author', db_column='Author ID', related_name='primary_set')\n\n    def __str__(self):\n        return self.headline\n\n    class Meta:\n        ordering = ('headline',)\n\n@python_2_unicode_compatible\nclass Author(models.Model):\n    Author_ID = models.AutoField(primary_key=True, db_column='Author ID')\n    first_name = models.CharField(max_length=30, db_column='first name')\n    last_name = models.CharField(max_length=30, db_column='last name')\n\n    def __str__(self):\n        return '%s %s' % (self.first_name, self.last_name)\n\n    class Meta:\n        db_table = 'my author table'\n        ordering = ('last_name','first_name')\n\n\n\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/custom_columns_regress/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom django.core.exceptions import FieldError\nfrom django.test import TestCase\n\nfrom .models import Author, Article\n\n\ndef pks(objects):\n    \"\"\" Return pks to be able to compare lists\"\"\"\n    return [o.pk for o in objects]\n\nclass CustomColumnRegression(TestCase):\n\n    def setUp(self):\n        self.a1 = Author.objects.create(first_name='John', last_name='Smith')\n        self.a2 = Author.objects.create(first_name='Peter', last_name='Jones')\n        self.authors = [self.a1, self.a2]\n\n    def test_basic_creation(self):\n        art = Article(headline='Django lets you build Web apps easily', primary_author=self.a1)\n        art.save()\n        art.authors = [self.a1, self.a2]\n\n    def test_author_querying(self):\n        self.assertQuerysetEqual(\n            Author.objects.all().order_by('last_name'),\n            ['<Author: Peter Jones>', '<Author: John Smith>']\n        )\n\n    def test_author_filtering(self):\n        self.assertQuerysetEqual(\n            Author.objects.filter(first_name__exact='John'),\n            ['<Author: John Smith>']\n        )\n\n    def test_author_get(self):\n        self.assertEqual(self.a1, Author.objects.get(first_name__exact='John'))\n\n    def test_filter_on_nonexistant_field(self):\n        self.assertRaisesMessage(\n            FieldError,\n            \"Cannot resolve keyword 'firstname' into field. Choices are: Author_ID, article, first_name, last_name, primary_set\",\n            Author.objects.filter,\n            firstname__exact='John'\n        )\n\n    def test_author_get_attributes(self):\n        a = Author.objects.get(last_name__exact='Smith')\n        self.assertEqual('John', a.first_name)\n        self.assertEqual('Smith', a.last_name)\n        self.assertRaisesMessage(\n            AttributeError,\n            \"'Author' object has no attribute 'firstname'\",\n            getattr,\n            a, 'firstname'\n        )\n\n        self.assertRaisesMessage(\n            AttributeError,\n            \"'Author' object has no attribute 'last'\",\n            getattr,\n            a, 'last'\n        )\n\n    def test_m2m_table(self):\n        art = Article.objects.create(headline='Django lets you build Web apps easily', primary_author=self.a1)\n        art.authors = self.authors\n        self.assertQuerysetEqual(\n            art.authors.all().order_by('last_name'),\n            ['<Author: Peter Jones>', '<Author: John Smith>']\n        )\n        self.assertQuerysetEqual(\n            self.a1.article_set.all(),\n            ['<Article: Django lets you build Web apps easily>']\n        )\n        self.assertQuerysetEqual(\n            art.authors.filter(last_name='Jones'),\n            ['<Author: Peter Jones>']\n        )\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/custom_managers_regress/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/custom_managers_regress/models.py",
    "content": "\"\"\"\nRegression tests for custom manager classes.\n\"\"\"\n\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\nclass RestrictedManager(models.Manager):\n    \"\"\"\n    A manager that filters out non-public instances.\n    \"\"\"\n    def get_query_set(self):\n        return super(RestrictedManager, self).get_query_set().filter(is_public=True)\n\n@python_2_unicode_compatible\nclass RelatedModel(models.Model):\n    name = models.CharField(max_length=50)\n\n    def __str__(self):\n        return self.name\n\n@python_2_unicode_compatible\nclass RestrictedModel(models.Model):\n    name = models.CharField(max_length=50)\n    is_public = models.BooleanField(default=False)\n    related = models.ForeignKey(RelatedModel)\n\n    objects = RestrictedManager()\n    plain_manager = models.Manager()\n\n    def __str__(self):\n        return self.name\n\n@python_2_unicode_compatible\nclass OneToOneRestrictedModel(models.Model):\n    name = models.CharField(max_length=50)\n    is_public = models.BooleanField(default=False)\n    related = models.OneToOneField(RelatedModel)\n\n    objects = RestrictedManager()\n    plain_manager = models.Manager()\n\n    def __str__(self):\n        return self.name\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/custom_managers_regress/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom django.test import TestCase\n\nfrom .models import RelatedModel, RestrictedModel, OneToOneRestrictedModel\n\n\nclass CustomManagersRegressTestCase(TestCase):\n    def test_filtered_default_manager(self):\n        \"\"\"Even though the default manager filters out some records,\n        we must still be able to save (particularly, save by updating\n        existing records) those filtered instances. This is a\n        regression test for #8990, #9527\"\"\"\n        related = RelatedModel.objects.create(name=\"xyzzy\")\n        obj = RestrictedModel.objects.create(name=\"hidden\", related=related)\n        obj.name = \"still hidden\"\n        obj.save()\n\n        # If the hidden object wasn't seen during the save process,\n        # there would now be two objects in the database.\n        self.assertEqual(RestrictedModel.plain_manager.count(), 1)\n\n    def test_delete_related_on_filtered_manager(self):\n        \"\"\"Deleting related objects should also not be distracted by a\n        restricted manager on the related object. This is a regression\n        test for #2698.\"\"\"\n        related = RelatedModel.objects.create(name=\"xyzzy\")\n\n        for name, public in (('one', True), ('two', False), ('three', False)):\n            RestrictedModel.objects.create(name=name, is_public=public, related=related)\n\n        obj = RelatedModel.objects.get(name=\"xyzzy\")\n        obj.delete()\n\n        # All of the RestrictedModel instances should have been\n        # deleted, since they *all* pointed to the RelatedModel. If\n        # the default manager is used, only the public one will be\n        # deleted.\n        self.assertEqual(len(RestrictedModel.plain_manager.all()), 0)\n\n    def test_delete_one_to_one_manager(self):\n        # The same test case as the last one, but for one-to-one\n        # models, which are implemented slightly different internally,\n        # so it's a different code path.\n        obj = RelatedModel.objects.create(name=\"xyzzy\")\n        OneToOneRestrictedModel.objects.create(name=\"foo\", is_public=False, related=obj)\n        obj = RelatedModel.objects.get(name=\"xyzzy\")\n        obj.delete()\n        self.assertEqual(len(OneToOneRestrictedModel.plain_manager.all()), 0)\n\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/datatypes/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/datatypes/models.py",
    "content": "\"\"\"\nThis is a basic model to test saving and loading boolean and date-related\ntypes, which in the past were problematic for some database backends.\n\"\"\"\n\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n@python_2_unicode_compatible\nclass Donut(models.Model):\n    name = models.CharField(max_length=100)\n    is_frosted = models.BooleanField(default=False)\n    has_sprinkles = models.NullBooleanField()\n    baked_date = models.DateField(null=True)\n    baked_time = models.TimeField(null=True)\n    consumed_at = models.DateTimeField(null=True)\n    review = models.TextField()\n\n    class Meta:\n        ordering = ('consumed_at',)\n\n    def __str__(self):\n        return self.name\n\nclass RumBaba(models.Model):\n    baked_date = models.DateField(auto_now_add=True)\n    baked_timestamp = models.DateTimeField(auto_now_add=True)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/datatypes/tests.py",
    "content": "from __future__ import absolute_import, unicode_literals\n\nimport datetime\n\nfrom django.test import TestCase, skipIfDBFeature\nfrom django.utils import six\nfrom django.utils.timezone import utc\n\nfrom .models import Donut, RumBaba\n\n\nclass DataTypesTestCase(TestCase):\n\n    def test_boolean_type(self):\n        d = Donut(name='Apple Fritter')\n        self.assertFalse(d.is_frosted)\n        self.assertTrue(d.has_sprinkles is None)\n        d.has_sprinkles = True\n        self.assertTrue(d.has_sprinkles)\n\n        d.save()\n\n        d2 = Donut.objects.get(name='Apple Fritter')\n        self.assertFalse(d2.is_frosted)\n        self.assertTrue(d2.has_sprinkles)\n\n    def test_date_type(self):\n        d = Donut(name='Apple Fritter')\n        d.baked_date = datetime.date(year=1938, month=6, day=4)\n        d.baked_time = datetime.time(hour=5, minute=30)\n        d.consumed_at = datetime.datetime(year=2007, month=4, day=20, hour=16, minute=19, second=59)\n        d.save()\n\n        d2 = Donut.objects.get(name='Apple Fritter')\n        self.assertEqual(d2.baked_date, datetime.date(1938, 6, 4))\n        self.assertEqual(d2.baked_time, datetime.time(5, 30))\n        self.assertEqual(d2.consumed_at, datetime.datetime(2007, 4, 20, 16, 19, 59))\n\n    def test_time_field(self):\n        #Test for ticket #12059: TimeField wrongly handling datetime.datetime object.\n        d = Donut(name='Apple Fritter')\n        d.baked_time = datetime.datetime(year=2007, month=4, day=20, hour=16, minute=19, second=59)\n        d.save()\n\n        d2 = Donut.objects.get(name='Apple Fritter')\n        self.assertEqual(d2.baked_time, datetime.time(16, 19, 59))\n\n    def test_year_boundaries(self):\n        \"\"\"Year boundary tests (ticket #3689)\"\"\"\n        d = Donut.objects.create(name='Date Test 2007',\n             baked_date=datetime.datetime(year=2007, month=12, day=31),\n             consumed_at=datetime.datetime(year=2007, month=12, day=31, hour=23, minute=59, second=59))\n        d1 = Donut.objects.create(name='Date Test 2006',\n            baked_date=datetime.datetime(year=2006, month=1, day=1),\n            consumed_at=datetime.datetime(year=2006, month=1, day=1))\n\n        self.assertEqual(\"Date Test 2007\",\n                         Donut.objects.filter(baked_date__year=2007)[0].name)\n\n        self.assertEqual(\"Date Test 2006\",\n                         Donut.objects.filter(baked_date__year=2006)[0].name)\n\n        d2 = Donut.objects.create(name='Apple Fritter',\n            consumed_at = datetime.datetime(year=2007, month=4, day=20, hour=16, minute=19, second=59))\n\n        self.assertEqual(['Apple Fritter', 'Date Test 2007'],\n            list(Donut.objects.filter(consumed_at__year=2007).order_by('name').values_list('name', flat=True)))\n\n        self.assertEqual(0, Donut.objects.filter(consumed_at__year=2005).count())\n        self.assertEqual(0, Donut.objects.filter(consumed_at__year=2008).count())\n\n    def test_textfields_unicode(self):\n        \"\"\"Regression test for #10238: TextField values returned from the\n        database should be unicode.\"\"\"\n        d = Donut.objects.create(name='Jelly Donut', review='Outstanding')\n        newd = Donut.objects.get(id=d.id)\n        self.assertTrue(isinstance(newd.review, six.text_type))\n\n    @skipIfDBFeature('supports_timezones')\n    def test_error_on_timezone(self):\n        \"\"\"Regression test for #8354: the MySQL and Oracle backends should raise\n        an error if given a timezone-aware datetime object.\"\"\"\n        dt = datetime.datetime(2008, 8, 31, 16, 20, tzinfo=utc)\n        d = Donut(name='Bear claw', consumed_at=dt)\n        self.assertRaises(ValueError, d.save)\n        # ValueError: MySQL backend does not support timezone-aware datetimes.\n\n    def test_datefield_auto_now_add(self):\n        \"\"\"Regression test for #10970, auto_now_add for DateField should store\n        a Python datetime.date, not a datetime.datetime\"\"\"\n        b = RumBaba.objects.create()\n        # Verify we didn't break DateTimeField behavior\n        self.assertTrue(isinstance(b.baked_timestamp, datetime.datetime))\n        # We need to test this this way because datetime.datetime inherits\n        # from datetime.date:\n        self.assertTrue(isinstance(b.baked_date, datetime.date) and not isinstance(b.baked_date, datetime.datetime))\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/dates/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/dates/models.py",
    "content": "from django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n@python_2_unicode_compatible\nclass Article(models.Model):\n    title = models.CharField(max_length=100)\n    pub_date = models.DateField()\n\n    categories = models.ManyToManyField(\"Category\", related_name=\"articles\")\n\n    def __str__(self):\n        return self.title\n\n@python_2_unicode_compatible\nclass Comment(models.Model):\n    article = models.ForeignKey(Article, related_name=\"comments\")\n    text = models.TextField()\n    pub_date = models.DateField()\n    approval_date = models.DateField(null=True)\n\n    def __str__(self):\n        return 'Comment to %s (%s)' % (self.article.title, self.pub_date)\n\nclass Category(models.Model):\n    name = models.CharField(max_length=255)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/dates/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom datetime import datetime\n\nfrom django.test import TestCase\n\nfrom .models import Article, Comment, Category\n\n\nclass DatesTests(TestCase):\n    def test_related_model_traverse(self):\n        a1 = Article.objects.create(\n            title=\"First one\",\n            pub_date=datetime(2005, 7, 28),\n        )\n        a2 = Article.objects.create(\n            title=\"Another one\",\n            pub_date=datetime(2010, 7, 28),\n        )\n        a3 = Article.objects.create(\n            title=\"Third one, in the first day\",\n            pub_date=datetime(2005, 7, 28),\n        )\n\n        a1.comments.create(\n            text=\"Im the HULK!\",\n            pub_date=datetime(2005, 7, 28),\n        )\n        a1.comments.create(\n            text=\"HULK SMASH!\",\n            pub_date=datetime(2005, 7, 29),\n        )\n        a2.comments.create(\n            text=\"LMAO\",\n            pub_date=datetime(2010, 7, 28),\n        )\n        a3.comments.create(\n            text=\"+1\",\n            pub_date=datetime(2005, 8, 29),\n        )\n\n        c = Category.objects.create(name=\"serious-news\")\n        c.articles.add(a1, a3)\n\n        self.assertQuerysetEqual(\n            Comment.objects.dates(\"article__pub_date\", \"year\"), [\n                datetime(2005, 1, 1),\n                datetime(2010, 1, 1),\n            ],\n            lambda d: d,\n        )\n        self.assertQuerysetEqual(\n            Comment.objects.dates(\"article__pub_date\", \"month\"), [\n                datetime(2005, 7, 1),\n                datetime(2010, 7, 1),\n            ],\n            lambda d: d\n        )\n        self.assertQuerysetEqual(\n            Comment.objects.dates(\"article__pub_date\", \"day\"), [\n                datetime(2005, 7, 28),\n                datetime(2010, 7, 28),\n            ],\n            lambda d: d\n        )\n        self.assertQuerysetEqual(\n            Article.objects.dates(\"comments__pub_date\", \"day\"), [\n                datetime(2005, 7, 28),\n                datetime(2005, 7, 29),\n                datetime(2005, 8, 29),\n                datetime(2010, 7, 28),\n            ],\n            lambda d: d\n        )\n        self.assertQuerysetEqual(\n            Article.objects.dates(\"comments__approval_date\", \"day\"), []\n        )\n        self.assertQuerysetEqual(\n            Category.objects.dates(\"articles__pub_date\", \"day\"), [\n                datetime(2005, 7, 28),\n            ],\n            lambda d: d,\n        )\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/db_typecasts/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/db_typecasts/models.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/db_typecasts/tests.py",
    "content": "# Unit tests for typecast functions in django.db.backends.util\n\nimport datetime\n\nfrom django.db.backends import util as typecasts\nfrom django.utils import six\nfrom django.utils import unittest\n\n\nTEST_CASES = {\n    'typecast_date': (\n        ('', None),\n        (None, None),\n        ('2005-08-11', datetime.date(2005, 8, 11)),\n        ('1990-01-01', datetime.date(1990, 1, 1)),\n    ),\n    'typecast_time': (\n        ('', None),\n        (None, None),\n        ('0:00:00', datetime.time(0, 0)),\n        ('0:30:00', datetime.time(0, 30)),\n        ('8:50:00', datetime.time(8, 50)),\n        ('08:50:00', datetime.time(8, 50)),\n        ('12:00:00', datetime.time(12, 00)),\n        ('12:30:00', datetime.time(12, 30)),\n        ('13:00:00', datetime.time(13, 00)),\n        ('23:59:00', datetime.time(23, 59)),\n        ('00:00:12', datetime.time(0, 0, 12)),\n        ('00:00:12.5', datetime.time(0, 0, 12, 500000)),\n        ('7:22:13.312', datetime.time(7, 22, 13, 312000)),\n    ),\n    'typecast_timestamp': (\n        ('', None),\n        (None, None),\n        ('2005-08-11 0:00:00', datetime.datetime(2005, 8, 11)),\n        ('2005-08-11 0:30:00', datetime.datetime(2005, 8, 11, 0, 30)),\n        ('2005-08-11 8:50:30', datetime.datetime(2005, 8, 11, 8, 50, 30)),\n        ('2005-08-11 8:50:30.123', datetime.datetime(2005, 8, 11, 8, 50, 30, 123000)),\n        ('2005-08-11 8:50:30.9', datetime.datetime(2005, 8, 11, 8, 50, 30, 900000)),\n        ('2005-08-11 8:50:30.312-05', datetime.datetime(2005, 8, 11, 8, 50, 30, 312000)),\n        ('2005-08-11 8:50:30.312+02', datetime.datetime(2005, 8, 11, 8, 50, 30, 312000)),\n        # ticket 14453\n        ('2010-10-12 15:29:22.063202', datetime.datetime(2010, 10, 12, 15, 29, 22, 63202)),\n        ('2010-10-12 15:29:22.063202-03', datetime.datetime(2010, 10, 12, 15, 29, 22, 63202)),\n        ('2010-10-12 15:29:22.063202+04', datetime.datetime(2010, 10, 12, 15, 29, 22, 63202)),\n        ('2010-10-12 15:29:22.0632021', datetime.datetime(2010, 10, 12, 15, 29, 22, 63202)),\n        ('2010-10-12 15:29:22.0632029', datetime.datetime(2010, 10, 12, 15, 29, 22, 63202)),\n    ),\n}\n\nclass DBTypeCasts(unittest.TestCase):\n    def test_typeCasts(self):\n        for k, v in six.iteritems(TEST_CASES):\n            for inpt, expected in v:\n                got = getattr(typecasts, k)(inpt)\n                self.assertEqual(got, expected, \"In %s: %r doesn't match %r. Got %r instead.\" % (k, inpt, expected, got))\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/decorators/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/decorators/models.py",
    "content": "# A models.py so that tests run.\n\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/decorators/tests.py",
    "content": "import warnings\nfrom functools import wraps\n\nfrom django.contrib.admin.views.decorators import staff_member_required\nfrom django.contrib.auth.decorators import login_required, permission_required, user_passes_test\nfrom django.http import HttpResponse, HttpRequest, HttpResponseNotAllowed\nfrom django.middleware.clickjacking import XFrameOptionsMiddleware\nfrom django.utils.decorators import method_decorator\nfrom django.utils.functional import allow_lazy, lazy, memoize\nfrom django.utils.unittest import TestCase\nfrom django.views.decorators.cache import cache_page, never_cache, cache_control\nfrom django.views.decorators.clickjacking import xframe_options_deny, xframe_options_sameorigin, xframe_options_exempt\nfrom django.views.decorators.http import require_http_methods, require_GET, require_POST, require_safe, condition\nfrom django.views.decorators.vary import vary_on_headers, vary_on_cookie\n\n\ndef fully_decorated(request):\n    \"\"\"Expected __doc__\"\"\"\n    return HttpResponse('<html><body>dummy</body></html>')\nfully_decorated.anything = \"Expected __dict__\"\n\n\ndef compose(*functions):\n    # compose(f, g)(*args, **kwargs) == f(g(*args, **kwargs))\n    functions = list(reversed(functions))\n    def _inner(*args, **kwargs):\n        result = functions[0](*args, **kwargs)\n        for f in functions[1:]:\n            result = f(result)\n        return result\n    return _inner\n\n\nfull_decorator = compose(\n    # django.views.decorators.http\n    require_http_methods([\"GET\"]),\n    require_GET,\n    require_POST,\n    require_safe,\n    condition(lambda r: None, lambda r: None),\n\n    # django.views.decorators.vary\n    vary_on_headers('Accept-language'),\n    vary_on_cookie,\n\n    # django.views.decorators.cache\n    cache_page(60*15),\n    cache_control(private=True),\n    never_cache,\n\n    # django.contrib.auth.decorators\n    # Apply user_passes_test twice to check #9474\n    user_passes_test(lambda u:True),\n    login_required,\n    permission_required('change_world'),\n\n    # django.contrib.admin.views.decorators\n    staff_member_required,\n\n    # django.utils.functional\n    lambda f: memoize(f, {}, 1),\n    allow_lazy,\n    lazy,\n)\n\nfully_decorated = full_decorator(fully_decorated)\n\nclass DecoratorsTest(TestCase):\n\n    def test_attributes(self):\n        \"\"\"\n        Tests that django decorators set certain attributes of the wrapped\n        function.\n        \"\"\"\n        self.assertEqual(fully_decorated.__name__, 'fully_decorated')\n        self.assertEqual(fully_decorated.__doc__, 'Expected __doc__')\n        self.assertEqual(fully_decorated.__dict__['anything'], 'Expected __dict__')\n\n    def test_user_passes_test_composition(self):\n        \"\"\"\n        Test that the user_passes_test decorator can be applied multiple times\n        (#9474).\n        \"\"\"\n        def test1(user):\n            user.decorators_applied.append('test1')\n            return True\n\n        def test2(user):\n            user.decorators_applied.append('test2')\n            return True\n\n        def callback(request):\n            return request.user.decorators_applied\n\n        callback = user_passes_test(test1)(callback)\n        callback = user_passes_test(test2)(callback)\n\n        class DummyUser(object): pass\n        class DummyRequest(object): pass\n\n        request = DummyRequest()\n        request.user = DummyUser()\n        request.user.decorators_applied = []\n        response = callback(request)\n\n        self.assertEqual(response, ['test2', 'test1'])\n\n    def test_cache_page_new_style(self):\n        \"\"\"\n        Test that we can call cache_page the new way\n        \"\"\"\n        def my_view(request):\n            return \"response\"\n        my_view_cached = cache_page(123)(my_view)\n        self.assertEqual(my_view_cached(HttpRequest()), \"response\")\n        my_view_cached2 = cache_page(123, key_prefix=\"test\")(my_view)\n        self.assertEqual(my_view_cached2(HttpRequest()), \"response\")\n\n    def test_cache_page_old_style(self):\n        \"\"\"\n        Test that we can call cache_page the old way\n        \"\"\"\n        def my_view(request):\n            return \"response\"\n        with warnings.catch_warnings(record=True):\n            my_view_cached = cache_page(my_view, 123)\n            self.assertEqual(my_view_cached(HttpRequest()), \"response\")\n            my_view_cached2 = cache_page(my_view, 123, key_prefix=\"test\")\n            self.assertEqual(my_view_cached2(HttpRequest()), \"response\")\n            my_view_cached3 = cache_page(my_view)\n            self.assertEqual(my_view_cached3(HttpRequest()), \"response\")\n            my_view_cached4 = cache_page()(my_view)\n            self.assertEqual(my_view_cached4(HttpRequest()), \"response\")\n\n    def test_require_safe_accepts_only_safe_methods(self):\n        \"\"\"\n        Test for the require_safe decorator.\n        A view returns either a response or an exception.\n        Refs #15637.\n        \"\"\"\n        def my_view(request):\n            return HttpResponse(\"OK\")\n        my_safe_view = require_safe(my_view)\n        request = HttpRequest()\n        request.method = 'GET'\n        self.assertTrue(isinstance(my_safe_view(request), HttpResponse))\n        request.method = 'HEAD'\n        self.assertTrue(isinstance(my_safe_view(request), HttpResponse))\n        request.method = 'POST'\n        self.assertTrue(isinstance(my_safe_view(request), HttpResponseNotAllowed))\n        request.method = 'PUT'\n        self.assertTrue(isinstance(my_safe_view(request), HttpResponseNotAllowed))\n        request.method = 'DELETE'\n        self.assertTrue(isinstance(my_safe_view(request), HttpResponseNotAllowed))\n\n\n# For testing method_decorator, a decorator that assumes a single argument.\n# We will get type arguments if there is a mismatch in the number of arguments.\ndef simple_dec(func):\n    def wrapper(arg):\n        return func(\"test:\" + arg)\n    return wraps(func)(wrapper)\n\nsimple_dec_m = method_decorator(simple_dec)\n\n\n# For testing method_decorator, two decorators that add an attribute to the function\ndef myattr_dec(func):\n    def wrapper(*args, **kwargs):\n        return func(*args, **kwargs)\n    wrapper.myattr = True\n    return wraps(func)(wrapper)\n\nmyattr_dec_m = method_decorator(myattr_dec)\n\n\ndef myattr2_dec(func):\n    def wrapper(*args, **kwargs):\n        return func(*args, **kwargs)\n    wrapper.myattr2 = True\n    return wraps(func)(wrapper)\n\nmyattr2_dec_m = method_decorator(myattr2_dec)\n\n\nclass MethodDecoratorTests(TestCase):\n    \"\"\"\n    Tests for method_decorator\n    \"\"\"\n    def test_preserve_signature(self):\n        class Test(object):\n            @simple_dec_m\n            def say(self, arg):\n                return arg\n\n        self.assertEqual(\"test:hello\", Test().say(\"hello\"))\n\n    def test_preserve_attributes(self):\n        # Sanity check myattr_dec and myattr2_dec\n        @myattr_dec\n        @myattr2_dec\n        def func():\n            pass\n\n        self.assertEqual(getattr(func, 'myattr', False), True)\n        self.assertEqual(getattr(func, 'myattr2', False), True)\n\n        # Now check method_decorator\n        class Test(object):\n            @myattr_dec_m\n            @myattr2_dec_m\n            def method(self):\n                \"A method\"\n                pass\n\n        self.assertEqual(getattr(Test().method, 'myattr', False), True)\n        self.assertEqual(getattr(Test().method, 'myattr2', False), True)\n\n        self.assertEqual(getattr(Test.method, 'myattr', False), True)\n        self.assertEqual(getattr(Test.method, 'myattr2', False), True)\n\n        self.assertEqual(Test.method.__doc__, 'A method')\n        self.assertEqual(Test.method.__name__, 'method')\n\n\nclass XFrameOptionsDecoratorsTests(TestCase):\n    \"\"\"\n    Tests for the X-Frame-Options decorators.\n    \"\"\"\n    def test_deny_decorator(self):\n        \"\"\"\n        Ensures @xframe_options_deny properly sets the X-Frame-Options header.\n        \"\"\"\n        @xframe_options_deny\n        def a_view(request):\n            return HttpResponse()\n        r = a_view(HttpRequest())\n        self.assertEqual(r['X-Frame-Options'], 'DENY')\n\n    def test_sameorigin_decorator(self):\n        \"\"\"\n        Ensures @xframe_options_sameorigin properly sets the X-Frame-Options\n        header.\n        \"\"\"\n        @xframe_options_sameorigin\n        def a_view(request):\n            return HttpResponse()\n        r = a_view(HttpRequest())\n        self.assertEqual(r['X-Frame-Options'], 'SAMEORIGIN')\n\n    def test_exempt_decorator(self):\n        \"\"\"\n        Ensures @xframe_options_exempt properly instructs the\n        XFrameOptionsMiddleware to NOT set the header.\n        \"\"\"\n        @xframe_options_exempt\n        def a_view(request):\n            return HttpResponse()\n        req = HttpRequest()\n        resp = a_view(req)\n        self.assertEqual(resp.get('X-Frame-Options', None), None)\n        self.assertTrue(resp.xframe_options_exempt)\n\n        # Since the real purpose of the exempt decorator is to suppress\n        # the middleware's functionality, let's make sure it actually works...\n        r = XFrameOptionsMiddleware().process_response(req, resp)\n        self.assertEqual(r.get('X-Frame-Options', None), None)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/defaultfilters/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/defaultfilters/models.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/defaultfilters/tests.py",
    "content": "# -*- coding: utf-8 -*-\nfrom __future__ import unicode_literals\n\nimport datetime\nimport decimal\n\nfrom django.template.defaultfilters import *\nfrom django.test import TestCase\nfrom django.utils import six\nfrom django.utils import unittest, translation\nfrom django.utils.safestring import SafeData\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\nclass DefaultFiltersTests(TestCase):\n\n    def test_floatformat(self):\n        self.assertEqual(floatformat(7.7), '7.7')\n        self.assertEqual(floatformat(7.0), '7')\n        self.assertEqual(floatformat(0.7), '0.7')\n        self.assertEqual(floatformat(0.07), '0.1')\n        self.assertEqual(floatformat(0.007), '0.0')\n        self.assertEqual(floatformat(0.0), '0')\n        self.assertEqual(floatformat(7.7, 3), '7.700')\n        self.assertEqual(floatformat(6.000000, 3), '6.000')\n        self.assertEqual(floatformat(6.200000, 3), '6.200')\n        self.assertEqual(floatformat(6.200000, -3), '6.200')\n        self.assertEqual(floatformat(13.1031, -3), '13.103')\n        self.assertEqual(floatformat(11.1197, -2), '11.12')\n        self.assertEqual(floatformat(11.0000, -2), '11')\n        self.assertEqual(floatformat(11.000001, -2), '11.00')\n        self.assertEqual(floatformat(8.2798, 3), '8.280')\n        self.assertEqual(floatformat(5555.555, 2), '5555.56')\n        self.assertEqual(floatformat(001.3000, 2), '1.30')\n        self.assertEqual(floatformat(0.12345, 2), '0.12')\n        self.assertEqual(floatformat(decimal.Decimal('555.555'), 2), '555.56')\n        self.assertEqual(floatformat(decimal.Decimal('09.000')), '9')\n        self.assertEqual(floatformat('foo'), '')\n        self.assertEqual(floatformat(13.1031, 'bar'), '13.1031')\n        self.assertEqual(floatformat(18.125, 2), '18.13')\n        self.assertEqual(floatformat('foo', 'bar'), '')\n        self.assertEqual(floatformat('¿Cómo esta usted?'), '')\n        self.assertEqual(floatformat(None), '')\n\n        # Check that we're not converting to scientific notation.\n        self.assertEqual(floatformat(0, 6), '0.000000')\n        self.assertEqual(floatformat(0, 7), '0.0000000')\n        self.assertEqual(floatformat(0, 10), '0.0000000000')\n        self.assertEqual(floatformat(0.000000000000000000015, 20),\n                                     '0.00000000000000000002')\n\n        pos_inf = float(1e30000)\n        self.assertEqual(floatformat(pos_inf), six.text_type(pos_inf))\n\n        neg_inf = float(-1e30000)\n        self.assertEqual(floatformat(neg_inf), six.text_type(neg_inf))\n\n        nan = pos_inf / pos_inf\n        self.assertEqual(floatformat(nan), six.text_type(nan))\n\n        class FloatWrapper(object):\n            def __init__(self, value):\n                self.value = value\n            def __float__(self):\n                return self.value\n\n        self.assertEqual(floatformat(FloatWrapper(11.000001), -2), '11.00')\n\n        # Regression for #15789\n        decimal_ctx = decimal.getcontext()\n        old_prec, decimal_ctx.prec = decimal_ctx.prec, 2\n        try:\n            self.assertEqual(floatformat(1.2345, 2), '1.23')\n            self.assertEqual(floatformat(15.2042, -3), '15.204')\n            self.assertEqual(floatformat(1.2345, '2'), '1.23')\n            self.assertEqual(floatformat(15.2042, '-3'), '15.204')\n            self.assertEqual(floatformat(decimal.Decimal('1.2345'), 2), '1.23')\n            self.assertEqual(floatformat(decimal.Decimal('15.2042'), -3), '15.204')\n        finally:\n            decimal_ctx.prec = old_prec\n\n\n    def test_floatformat_py2_fail(self):\n        self.assertEqual(floatformat(1.00000000000000015, 16), '1.0000000000000002')\n\n    # The test above fails because of Python 2's float handling. Floats with\n    # many zeroes after the decimal point should be passed in as another type\n    # such as unicode or Decimal.\n    if not six.PY3:\n        test_floatformat_py2_fail = unittest.expectedFailure(test_floatformat_py2_fail)\n\n\n    def test_addslashes(self):\n        self.assertEqual(addslashes('\"double quotes\" and \\'single quotes\\''),\n                          '\\\\\"double quotes\\\\\" and \\\\\\'single quotes\\\\\\'')\n\n        self.assertEqual(addslashes(r'\\ : backslashes, too'),\n                          '\\\\\\\\ : backslashes, too')\n\n    def test_capfirst(self):\n        self.assertEqual(capfirst('hello world'), 'Hello world')\n\n    def test_escapejs(self):\n        self.assertEqual(escapejs_filter('\"double quotes\" and \\'single quotes\\''),\n            '\\\\u0022double quotes\\\\u0022 and \\\\u0027single quotes\\\\u0027')\n        self.assertEqual(escapejs_filter(r'\\ : backslashes, too'),\n            '\\\\u005C : backslashes, too')\n        self.assertEqual(escapejs_filter('and lots of whitespace: \\r\\n\\t\\v\\f\\b'),\n            'and lots of whitespace: \\\\u000D\\\\u000A\\\\u0009\\\\u000B\\\\u000C\\\\u0008')\n        self.assertEqual(escapejs_filter(r'<script>and this</script>'),\n            '\\\\u003Cscript\\\\u003Eand this\\\\u003C/script\\\\u003E')\n        self.assertEqual(\n            escapejs_filter('paragraph separator:\\u2029and line separator:\\u2028'),\n            'paragraph separator:\\\\u2029and line separator:\\\\u2028')\n\n    def test_fix_ampersands(self):\n        self.assertEqual(fix_ampersands_filter('Jack & Jill & Jeroboam'),\n                          'Jack &amp; Jill &amp; Jeroboam')\n\n    def test_linenumbers(self):\n        self.assertEqual(linenumbers('line 1\\nline 2'),\n                          '1. line 1\\n2. line 2')\n        self.assertEqual(linenumbers('\\n'.join(['x'] * 10)),\n                          '01. x\\n02. x\\n03. x\\n04. x\\n05. x\\n06. x\\n07. '\\\n                          'x\\n08. x\\n09. x\\n10. x')\n\n    def test_lower(self):\n        self.assertEqual(lower('TEST'), 'test')\n\n        # uppercase E umlaut\n        self.assertEqual(lower('\\xcb'), '\\xeb')\n\n    def test_make_list(self):\n        self.assertEqual(make_list('abc'), ['a', 'b', 'c'])\n        self.assertEqual(make_list(1234), ['1', '2', '3', '4'])\n\n    def test_slugify(self):\n        self.assertEqual(slugify(' Jack & Jill like numbers 1,2,3 and 4 and'\\\n            ' silly characters ?%.$!/'),\n            'jack-jill-like-numbers-123-and-4-and-silly-characters')\n\n        self.assertEqual(slugify(\"Un \\xe9l\\xe9phant \\xe0 l'or\\xe9e du bois\"),\n                          'un-elephant-a-loree-du-bois')\n\n    def test_stringformat(self):\n        self.assertEqual(stringformat(1, '03d'), '001')\n        self.assertEqual(stringformat(1, 'z'), '')\n\n    def test_title(self):\n        self.assertEqual(title('a nice title, isn\\'t it?'),\n                          \"A Nice Title, Isn't It?\")\n        self.assertEqual(title('discoth\\xe8que'), 'Discoth\\xe8que')\n\n    def test_truncatewords(self):\n        self.assertEqual(\n            truncatewords('A sentence with a few words in it', 1), 'A ...')\n        self.assertEqual(\n            truncatewords('A sentence with a few words in it', 5),\n            'A sentence with a few ...')\n        self.assertEqual(\n            truncatewords('A sentence with a few words in it', 100),\n            'A sentence with a few words in it')\n        self.assertEqual(\n            truncatewords('A sentence with a few words in it',\n            'not a number'), 'A sentence with a few words in it')\n\n    def test_truncatewords_html(self):\n        self.assertEqual(truncatewords_html(\n            '<p>one <a href=\"#\">two - three <br>four</a> five</p>', 0), '')\n        self.assertEqual(truncatewords_html('<p>one <a href=\"#\">two - '\\\n            'three <br>four</a> five</p>', 2),\n            '<p>one <a href=\"#\">two ...</a></p>')\n        self.assertEqual(truncatewords_html(\n            '<p>one <a href=\"#\">two - three <br>four</a> five</p>', 4),\n            '<p>one <a href=\"#\">two - three <br>four ...</a></p>')\n        self.assertEqual(truncatewords_html(\n            '<p>one <a href=\"#\">two - three <br>four</a> five</p>', 5),\n            '<p>one <a href=\"#\">two - three <br>four</a> five</p>')\n        self.assertEqual(truncatewords_html(\n            '<p>one <a href=\"#\">two - three <br>four</a> five</p>', 100),\n            '<p>one <a href=\"#\">two - three <br>four</a> five</p>')\n        self.assertEqual(truncatewords_html(\n            '\\xc5ngstr\\xf6m was here', 1), '\\xc5ngstr\\xf6m ...')\n\n    def test_upper(self):\n        self.assertEqual(upper('Mixed case input'), 'MIXED CASE INPUT')\n        # lowercase e umlaut\n        self.assertEqual(upper('\\xeb'), '\\xcb')\n\n    def test_urlencode(self):\n        self.assertEqual(urlencode('fran\\xe7ois & jill'),\n                          'fran%C3%A7ois%20%26%20jill')\n        self.assertEqual(urlencode(1), '1')\n\n    def test_iriencode(self):\n        self.assertEqual(iriencode('S\\xf8r-Tr\\xf8ndelag'),\n                          'S%C3%B8r-Tr%C3%B8ndelag')\n        self.assertEqual(iriencode(urlencode('fran\\xe7ois & jill')),\n                          'fran%C3%A7ois%20%26%20jill')\n\n    def test_urlizetrunc(self):\n        self.assertEqual(urlizetrunc('http://short.com/', 20), '<a href='\\\n            '\"http://short.com/\" rel=\"nofollow\">http://short.com/</a>')\n\n        self.assertEqual(urlizetrunc('http://www.google.co.uk/search?hl=en'\\\n            '&q=some+long+url&btnG=Search&meta=', 20), '<a href=\"http://'\\\n            'www.google.co.uk/search?hl=en&q=some+long+url&btnG=Search&'\\\n            'meta=\" rel=\"nofollow\">http://www.google...</a>')\n\n        self.assertEqual(urlizetrunc('http://www.google.co.uk/search?hl=en'\\\n            '&q=some+long+url&btnG=Search&meta=', 20), '<a href=\"http://'\\\n            'www.google.co.uk/search?hl=en&q=some+long+url&btnG=Search'\\\n            '&meta=\" rel=\"nofollow\">http://www.google...</a>')\n\n        # Check truncating of URIs which are the exact length\n        uri = 'http://31characteruri.com/test/'\n        self.assertEqual(len(uri), 31)\n\n        self.assertEqual(urlizetrunc(uri, 31),\n            '<a href=\"http://31characteruri.com/test/\" rel=\"nofollow\">'\\\n            'http://31characteruri.com/test/</a>')\n\n        self.assertEqual(urlizetrunc(uri, 30),\n            '<a href=\"http://31characteruri.com/test/\" rel=\"nofollow\">'\\\n            'http://31characteruri.com/t...</a>')\n\n        self.assertEqual(urlizetrunc(uri, 2),\n            '<a href=\"http://31characteruri.com/test/\"'\\\n            ' rel=\"nofollow\">...</a>')\n\n    def test_urlize(self):\n        # Check normal urlize\n        self.assertEqual(urlize('http://google.com'),\n            '<a href=\"http://google.com\" rel=\"nofollow\">http://google.com</a>')\n        self.assertEqual(urlize('http://google.com/'),\n            '<a href=\"http://google.com/\" rel=\"nofollow\">http://google.com/</a>')\n        self.assertEqual(urlize('www.google.com'),\n            '<a href=\"http://www.google.com\" rel=\"nofollow\">www.google.com</a>')\n        self.assertEqual(urlize('djangoproject.org'),\n            '<a href=\"http://djangoproject.org\" rel=\"nofollow\">djangoproject.org</a>')\n        self.assertEqual(urlize('info@djangoproject.org'),\n            '<a href=\"mailto:info@djangoproject.org\">info@djangoproject.org</a>')\n\n        # Check urlize with https addresses\n        self.assertEqual(urlize('https://google.com'),\n            '<a href=\"https://google.com\" rel=\"nofollow\">https://google.com</a>')\n\n        # Check urlize doesn't overquote already quoted urls - see #9655\n        self.assertEqual(urlize('http://hi.baidu.com/%D6%D8%D0%C2%BF'),\n            '<a href=\"http://hi.baidu.com/%D6%D8%D0%C2%BF\" rel=\"nofollow\">'\n            'http://hi.baidu.com/%D6%D8%D0%C2%BF</a>')\n        self.assertEqual(urlize('www.mystore.com/30%OffCoupons!'),\n            '<a href=\"http://www.mystore.com/30%25OffCoupons!\" rel=\"nofollow\">'\n            'www.mystore.com/30%OffCoupons!</a>')\n        self.assertEqual(urlize('http://en.wikipedia.org/wiki/Caf%C3%A9'),\n            '<a href=\"http://en.wikipedia.org/wiki/Caf%C3%A9\" rel=\"nofollow\">'\n            'http://en.wikipedia.org/wiki/Caf%C3%A9</a>')\n        self.assertEqual(urlize('http://en.wikipedia.org/wiki/Café'),\n            '<a href=\"http://en.wikipedia.org/wiki/Caf%C3%A9\" rel=\"nofollow\">'\n            'http://en.wikipedia.org/wiki/Café</a>')\n\n        # Check urlize keeps balanced parentheses - see #11911\n        self.assertEqual(urlize('http://en.wikipedia.org/wiki/Django_(web_framework)'),\n            '<a href=\"http://en.wikipedia.org/wiki/Django_(web_framework)\" rel=\"nofollow\">'\n            'http://en.wikipedia.org/wiki/Django_(web_framework)</a>')\n        self.assertEqual(urlize('(see http://en.wikipedia.org/wiki/Django_(web_framework))'),\n            '(see <a href=\"http://en.wikipedia.org/wiki/Django_(web_framework)\" rel=\"nofollow\">'\n            'http://en.wikipedia.org/wiki/Django_(web_framework)</a>)')\n\n        # Check urlize adds nofollow properly - see #12183\n        self.assertEqual(urlize('foo@bar.com or www.bar.com'),\n            '<a href=\"mailto:foo@bar.com\">foo@bar.com</a> or '\n            '<a href=\"http://www.bar.com\" rel=\"nofollow\">www.bar.com</a>')\n\n        # Check urlize handles IDN correctly - see #13704\n        self.assertEqual(urlize('http://c✶.ws'),\n            '<a href=\"http://xn--c-lgq.ws\" rel=\"nofollow\">http://c✶.ws</a>')\n        self.assertEqual(urlize('www.c✶.ws'),\n            '<a href=\"http://www.xn--c-lgq.ws\" rel=\"nofollow\">www.c✶.ws</a>')\n        self.assertEqual(urlize('c✶.org'),\n            '<a href=\"http://xn--c-lgq.org\" rel=\"nofollow\">c✶.org</a>')\n        self.assertEqual(urlize('info@c✶.org'),\n            '<a href=\"mailto:info@xn--c-lgq.org\">info@c✶.org</a>')\n\n        # Check urlize doesn't highlight malformed URIs - see #16395\n        self.assertEqual(urlize('http:///www.google.com'),\n           'http:///www.google.com')\n        self.assertEqual(urlize('http://.google.com'),\n            'http://.google.com')\n        self.assertEqual(urlize('http://@foo.com'),\n            'http://@foo.com')\n\n        # Check urlize accepts more TLDs - see #16656\n        self.assertEqual(urlize('usa.gov'),\n            '<a href=\"http://usa.gov\" rel=\"nofollow\">usa.gov</a>')\n\n        # Check urlize don't crash on invalid email with dot-starting domain - see #17592\n        self.assertEqual(urlize('email@.stream.ru'),\n            'email@.stream.ru')\n\n        # Check urlize accepts uppercased URL schemes - see #18071\n        self.assertEqual(urlize('HTTPS://github.com/'),\n            '<a href=\"https://github.com/\" rel=\"nofollow\">HTTPS://github.com/</a>')\n\n        # Check urlize trims trailing period when followed by parenthesis - see #18644\n        self.assertEqual(urlize('(Go to http://www.example.com/foo.)'),\n            '(Go to <a href=\"http://www.example.com/foo\" rel=\"nofollow\">http://www.example.com/foo</a>.)')\n\n        # Check urlize doesn't crash when square bracket is appended to url (#19070)\n        self.assertEqual(urlize('[see www.example.com]'),\n            '[see <a href=\"http://www.example.com\" rel=\"nofollow\">www.example.com</a>]' )\n\n\n    def test_wordcount(self):\n        self.assertEqual(wordcount(''), 0)\n        self.assertEqual(wordcount('oneword'), 1)\n        self.assertEqual(wordcount('lots of words'), 3)\n\n        self.assertEqual(wordwrap('this is a long paragraph of text that '\\\n            'really needs to be wrapped I\\'m afraid', 14),\n            \"this is a long\\nparagraph of\\ntext that\\nreally needs\\nto be \"\\\n            \"wrapped\\nI'm afraid\")\n\n        self.assertEqual(wordwrap('this is a short paragraph of text.\\n  '\\\n            'But this line should be indented', 14),\n            'this is a\\nshort\\nparagraph of\\ntext.\\n  But this\\nline '\\\n            'should be\\nindented')\n\n        self.assertEqual(wordwrap('this is a short paragraph of text.\\n  '\\\n            'But this line should be indented',15), 'this is a short\\n'\\\n            'paragraph of\\ntext.\\n  But this line\\nshould be\\nindented')\n\n    def test_rjust(self):\n        self.assertEqual(ljust('test', 10), 'test      ')\n        self.assertEqual(ljust('test', 3), 'test')\n        self.assertEqual(rjust('test', 10), '      test')\n        self.assertEqual(rjust('test', 3), 'test')\n\n    def test_center(self):\n        self.assertEqual(center('test', 6), ' test ')\n\n    def test_cut(self):\n        self.assertEqual(cut('a string to be mangled', 'a'),\n                          ' string to be mngled')\n        self.assertEqual(cut('a string to be mangled', 'ng'),\n                          'a stri to be maled')\n        self.assertEqual(cut('a string to be mangled', 'strings'),\n                          'a string to be mangled')\n\n    def test_force_escape(self):\n        escaped = force_escape('<some html & special characters > here')\n        self.assertEqual(\n            escaped, '&lt;some html &amp; special characters &gt; here')\n        self.assertTrue(isinstance(escaped, SafeData))\n        self.assertEqual(\n            force_escape('<some html & special characters > here ĐÅ€£'),\n            '&lt;some html &amp; special characters &gt; here'\\\n            ' \\u0110\\xc5\\u20ac\\xa3')\n\n    def test_linebreaks(self):\n        self.assertEqual(linebreaks_filter('line 1'), '<p>line 1</p>')\n        self.assertEqual(linebreaks_filter('line 1\\nline 2'),\n                          '<p>line 1<br />line 2</p>')\n        self.assertEqual(linebreaks_filter('line 1\\rline 2'),\n                          '<p>line 1<br />line 2</p>')\n        self.assertEqual(linebreaks_filter('line 1\\r\\nline 2'),\n                          '<p>line 1<br />line 2</p>')\n\n    def test_linebreaksbr(self):\n        self.assertEqual(linebreaksbr('line 1\\nline 2'),\n                          'line 1<br />line 2')\n        self.assertEqual(linebreaksbr('line 1\\rline 2'),\n                          'line 1<br />line 2')\n        self.assertEqual(linebreaksbr('line 1\\r\\nline 2'),\n                          'line 1<br />line 2')\n\n    def test_removetags(self):\n        self.assertEqual(removetags('some <b>html</b> with <script>alert'\\\n            '(\"You smell\")</script> disallowed <img /> tags', 'script img'),\n            'some <b>html</b> with alert(\"You smell\") disallowed  tags')\n        self.assertEqual(striptags('some <b>html</b> with <script>alert'\\\n            '(\"You smell\")</script> disallowed <img /> tags'),\n            'some html with alert(\"You smell\") disallowed  tags')\n\n    def test_dictsort(self):\n        sorted_dicts = dictsort([{'age': 23, 'name': 'Barbara-Ann'},\n                                 {'age': 63, 'name': 'Ra Ra Rasputin'},\n                                 {'name': 'Jonny B Goode', 'age': 18}], 'age')\n\n        self.assertEqual([sorted(dict.items()) for dict in sorted_dicts],\n            [[('age', 18), ('name', 'Jonny B Goode')],\n             [('age', 23), ('name', 'Barbara-Ann')],\n             [('age', 63), ('name', 'Ra Ra Rasputin')]])\n\n        # If it gets passed a list of something else different from\n        # dictionaries it should fail silently\n        self.assertEqual(dictsort([1, 2, 3], 'age'), '')\n        self.assertEqual(dictsort('Hello!', 'age'), '')\n        self.assertEqual(dictsort({'a': 1}, 'age'), '')\n        self.assertEqual(dictsort(1, 'age'), '')\n\n    def test_dictsortreversed(self):\n        sorted_dicts = dictsortreversed([{'age': 23, 'name': 'Barbara-Ann'},\n                                         {'age': 63, 'name': 'Ra Ra Rasputin'},\n                                         {'name': 'Jonny B Goode', 'age': 18}],\n                                        'age')\n\n        self.assertEqual([sorted(dict.items()) for dict in sorted_dicts],\n            [[('age', 63), ('name', 'Ra Ra Rasputin')],\n             [('age', 23), ('name', 'Barbara-Ann')],\n             [('age', 18), ('name', 'Jonny B Goode')]])\n\n        # If it gets passed a list of something else different from\n        # dictionaries it should fail silently\n        self.assertEqual(dictsortreversed([1, 2, 3], 'age'), '')\n        self.assertEqual(dictsortreversed('Hello!', 'age'), '')\n        self.assertEqual(dictsortreversed({'a': 1}, 'age'), '')\n        self.assertEqual(dictsortreversed(1, 'age'), '')\n\n    def test_first(self):\n        self.assertEqual(first([0,1,2]), 0)\n        self.assertEqual(first(''), '')\n        self.assertEqual(first('test'), 't')\n\n    def test_join(self):\n        self.assertEqual(join([0,1,2], 'glue'), '0glue1glue2')\n\n    def test_length(self):\n        self.assertEqual(length('1234'), 4)\n        self.assertEqual(length([1,2,3,4]), 4)\n        self.assertEqual(length_is([], 0), True)\n        self.assertEqual(length_is([], 1), False)\n        self.assertEqual(length_is('a', 1), True)\n        self.assertEqual(length_is('a', 10), False)\n\n    def test_slice(self):\n        self.assertEqual(slice_filter('abcdefg', '0'), '')\n        self.assertEqual(slice_filter('abcdefg', '1'), 'a')\n        self.assertEqual(slice_filter('abcdefg', '-1'), 'abcdef')\n        self.assertEqual(slice_filter('abcdefg', '1:2'), 'b')\n        self.assertEqual(slice_filter('abcdefg', '1:3'), 'bc')\n        self.assertEqual(slice_filter('abcdefg', '0::2'), 'aceg')\n\n    def test_unordered_list(self):\n        self.assertEqual(unordered_list(['item 1', 'item 2']),\n            '\\t<li>item 1</li>\\n\\t<li>item 2</li>')\n        self.assertEqual(unordered_list(['item 1', ['item 1.1']]),\n            '\\t<li>item 1\\n\\t<ul>\\n\\t\\t<li>item 1.1</li>\\n\\t</ul>\\n\\t</li>')\n\n        self.assertEqual(\n            unordered_list(['item 1', ['item 1.1', 'item1.2'], 'item 2']),\n            '\\t<li>item 1\\n\\t<ul>\\n\\t\\t<li>item 1.1</li>\\n\\t\\t<li>item1.2'\\\n            '</li>\\n\\t</ul>\\n\\t</li>\\n\\t<li>item 2</li>')\n\n        self.assertEqual(\n            unordered_list(['item 1', ['item 1.1', ['item 1.1.1',\n                                                      ['item 1.1.1.1']]]]),\n            '\\t<li>item 1\\n\\t<ul>\\n\\t\\t<li>item 1.1\\n\\t\\t<ul>\\n\\t\\t\\t<li>'\\\n            'item 1.1.1\\n\\t\\t\\t<ul>\\n\\t\\t\\t\\t<li>item 1.1.1.1</li>\\n\\t\\t\\t'\\\n            '</ul>\\n\\t\\t\\t</li>\\n\\t\\t</ul>\\n\\t\\t</li>\\n\\t</ul>\\n\\t</li>')\n\n        self.assertEqual(unordered_list(\n            ['States', ['Kansas', ['Lawrence', 'Topeka'], 'Illinois']]),\n            '\\t<li>States\\n\\t<ul>\\n\\t\\t<li>Kansas\\n\\t\\t<ul>\\n\\t\\t\\t<li>'\\\n            'Lawrence</li>\\n\\t\\t\\t<li>Topeka</li>\\n\\t\\t</ul>\\n\\t\\t</li>'\\\n            '\\n\\t\\t<li>Illinois</li>\\n\\t</ul>\\n\\t</li>')\n\n        @python_2_unicode_compatible\n        class ULItem(object):\n            def __init__(self, title):\n              self.title = title\n            def __str__(self):\n                return 'ulitem-%s' % str(self.title)\n\n        a = ULItem('a')\n        b = ULItem('b')\n        self.assertEqual(unordered_list([a,b]),\n                          '\\t<li>ulitem-a</li>\\n\\t<li>ulitem-b</li>')\n\n        # Old format for unordered lists should still work\n        self.assertEqual(unordered_list(['item 1', []]), '\\t<li>item 1</li>')\n\n        self.assertEqual(unordered_list(['item 1', [['item 1.1', []]]]),\n            '\\t<li>item 1\\n\\t<ul>\\n\\t\\t<li>item 1.1</li>\\n\\t</ul>\\n\\t</li>')\n\n        self.assertEqual(unordered_list(['item 1', [['item 1.1', []],\n            ['item 1.2', []]]]), '\\t<li>item 1\\n\\t<ul>\\n\\t\\t<li>item 1.1'\\\n            '</li>\\n\\t\\t<li>item 1.2</li>\\n\\t</ul>\\n\\t</li>')\n\n        self.assertEqual(unordered_list(['States', [['Kansas', [['Lawrence',\n            []], ['Topeka', []]]], ['Illinois', []]]]), '\\t<li>States\\n\\t'\\\n            '<ul>\\n\\t\\t<li>Kansas\\n\\t\\t<ul>\\n\\t\\t\\t<li>Lawrence</li>'\\\n            '\\n\\t\\t\\t<li>Topeka</li>\\n\\t\\t</ul>\\n\\t\\t</li>\\n\\t\\t<li>'\\\n            'Illinois</li>\\n\\t</ul>\\n\\t</li>')\n\n    def test_add(self):\n        self.assertEqual(add('1', '2'), 3)\n\n    def test_get_digit(self):\n        self.assertEqual(get_digit(123, 1), 3)\n        self.assertEqual(get_digit(123, 2), 2)\n        self.assertEqual(get_digit(123, 3), 1)\n        self.assertEqual(get_digit(123, 4), 0)\n        self.assertEqual(get_digit(123, 0), 123)\n        self.assertEqual(get_digit('xyz', 0), 'xyz')\n\n    def test_date(self):\n        # real testing of date() is in dateformat.py\n        self.assertEqual(date(datetime.datetime(2005, 12, 29), \"d F Y\"),\n                          '29 December 2005')\n        self.assertEqual(date(datetime.datetime(2005, 12, 29), r'jS \\o\\f F'),\n                          '29th of December')\n\n    def test_time(self):\n        # real testing of time() is done in dateformat.py\n        self.assertEqual(time(datetime.time(13), \"h\"), '01')\n        self.assertEqual(time(datetime.time(0), \"h\"), '12')\n\n    def test_timesince(self):\n        # real testing is done in timesince.py, where we can provide our own 'now'\n        self.assertEqual(\n            timesince_filter(datetime.datetime.now() - datetime.timedelta(1)),\n            '1 day')\n\n        self.assertEqual(\n            timesince_filter(datetime.datetime(2005, 12, 29),\n                             datetime.datetime(2005, 12, 30)),\n            '1 day')\n\n    def test_timeuntil(self):\n        self.assertEqual(\n            timeuntil_filter(datetime.datetime.now() + datetime.timedelta(1, 1)),\n            '1 day')\n\n        self.assertEqual(\n            timeuntil_filter(datetime.datetime(2005, 12, 30),\n                             datetime.datetime(2005, 12, 29)),\n            '1 day')\n\n    def test_default(self):\n        self.assertEqual(default(\"val\", \"default\"), 'val')\n        self.assertEqual(default(None, \"default\"), 'default')\n        self.assertEqual(default('', \"default\"), 'default')\n\n    def test_if_none(self):\n        self.assertEqual(default_if_none(\"val\", \"default\"), 'val')\n        self.assertEqual(default_if_none(None, \"default\"), 'default')\n        self.assertEqual(default_if_none('', \"default\"), '')\n\n    def test_divisibleby(self):\n        self.assertEqual(divisibleby(4, 2), True)\n        self.assertEqual(divisibleby(4, 3), False)\n\n    def test_yesno(self):\n        self.assertEqual(yesno(True), 'yes')\n        self.assertEqual(yesno(False), 'no')\n        self.assertEqual(yesno(None), 'maybe')\n        self.assertEqual(yesno(True, 'certainly,get out of town,perhaps'),\n                          'certainly')\n        self.assertEqual(yesno(False, 'certainly,get out of town,perhaps'),\n                          'get out of town')\n        self.assertEqual(yesno(None, 'certainly,get out of town,perhaps'),\n                          'perhaps')\n        self.assertEqual(yesno(None, 'certainly,get out of town'),\n                          'get out of town')\n\n    def test_filesizeformat(self):\n        self.assertEqual(filesizeformat(1023), '1023 bytes')\n        self.assertEqual(filesizeformat(1024), '1.0 KB')\n        self.assertEqual(filesizeformat(10*1024), '10.0 KB')\n        self.assertEqual(filesizeformat(1024*1024-1), '1024.0 KB')\n        self.assertEqual(filesizeformat(1024*1024), '1.0 MB')\n        self.assertEqual(filesizeformat(1024*1024*50), '50.0 MB')\n        self.assertEqual(filesizeformat(1024*1024*1024-1), '1024.0 MB')\n        self.assertEqual(filesizeformat(1024*1024*1024), '1.0 GB')\n        self.assertEqual(filesizeformat(1024*1024*1024*1024), '1.0 TB')\n        self.assertEqual(filesizeformat(1024*1024*1024*1024*1024), '1.0 PB')\n        self.assertEqual(filesizeformat(1024*1024*1024*1024*1024*2000),\n                          '2000.0 PB')\n        self.assertEqual(filesizeformat(complex(1,-1)), '0 bytes')\n        self.assertEqual(filesizeformat(\"\"), '0 bytes')\n        self.assertEqual(filesizeformat(\"\\N{GREEK SMALL LETTER ALPHA}\"),\n                          '0 bytes')\n\n    def test_localized_filesizeformat(self):\n        with self.settings(USE_L10N=True):\n            with translation.override('de', deactivate=True):\n                self.assertEqual(filesizeformat(1023), '1023 Bytes')\n                self.assertEqual(filesizeformat(1024), '1,0 KB')\n                self.assertEqual(filesizeformat(10*1024), '10,0 KB')\n                self.assertEqual(filesizeformat(1024*1024-1), '1024,0 KB')\n                self.assertEqual(filesizeformat(1024*1024), '1,0 MB')\n                self.assertEqual(filesizeformat(1024*1024*50), '50,0 MB')\n                self.assertEqual(filesizeformat(1024*1024*1024-1), '1024,0 MB')\n                self.assertEqual(filesizeformat(1024*1024*1024), '1,0 GB')\n                self.assertEqual(filesizeformat(1024*1024*1024*1024), '1,0 TB')\n                self.assertEqual(filesizeformat(1024*1024*1024*1024*1024),\n                                  '1,0 PB')\n                self.assertEqual(filesizeformat(1024*1024*1024*1024*1024*2000),\n                                  '2000,0 PB')\n                self.assertEqual(filesizeformat(complex(1,-1)), '0 Bytes')\n                self.assertEqual(filesizeformat(\"\"), '0 Bytes')\n                self.assertEqual(filesizeformat(\"\\N{GREEK SMALL LETTER ALPHA}\"),\n                                  '0 Bytes')\n\n    def test_pluralize(self):\n        self.assertEqual(pluralize(1), '')\n        self.assertEqual(pluralize(0), 's')\n        self.assertEqual(pluralize(2), 's')\n        self.assertEqual(pluralize([1]), '')\n        self.assertEqual(pluralize([]), 's')\n        self.assertEqual(pluralize([1,2,3]), 's')\n        self.assertEqual(pluralize(1,'es'), '')\n        self.assertEqual(pluralize(0,'es'), 'es')\n        self.assertEqual(pluralize(2,'es'), 'es')\n        self.assertEqual(pluralize(1,'y,ies'), 'y')\n        self.assertEqual(pluralize(0,'y,ies'), 'ies')\n        self.assertEqual(pluralize(2,'y,ies'), 'ies')\n        self.assertEqual(pluralize(0,'y,ies,error'), '')\n\n    def test_phone2numeric(self):\n        self.assertEqual(phone2numeric_filter('0800 flowers'), '0800 3569377')\n\n    def test_non_string_input(self):\n        # Filters shouldn't break if passed non-strings\n        self.assertEqual(addslashes(123), '123')\n        self.assertEqual(linenumbers(123), '1. 123')\n        self.assertEqual(lower(123), '123')\n        self.assertEqual(make_list(123), ['1', '2', '3'])\n        self.assertEqual(slugify(123), '123')\n        self.assertEqual(title(123), '123')\n        self.assertEqual(truncatewords(123, 2), '123')\n        self.assertEqual(upper(123), '123')\n        self.assertEqual(urlencode(123), '123')\n        self.assertEqual(urlize(123), '123')\n        self.assertEqual(urlizetrunc(123, 1), '123')\n        self.assertEqual(wordcount(123), 1)\n        self.assertEqual(wordwrap(123, 2), '123')\n        self.assertEqual(ljust('123', 4), '123 ')\n        self.assertEqual(rjust('123', 4), ' 123')\n        self.assertEqual(center('123', 5), ' 123 ')\n        self.assertEqual(center('123', 6), ' 123  ')\n        self.assertEqual(cut(123, '2'), '13')\n        self.assertEqual(escape(123), '123')\n        self.assertEqual(linebreaks_filter(123), '<p>123</p>')\n        self.assertEqual(linebreaksbr(123), '123')\n        self.assertEqual(removetags(123, 'a'), '123')\n        self.assertEqual(striptags(123), '123')\n\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/defer_regress/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/defer_regress/models.py",
    "content": "\"\"\"\nRegression tests for defer() / only() behavior.\n\"\"\"\n\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n@python_2_unicode_compatible\nclass Item(models.Model):\n    name = models.CharField(max_length=15)\n    text = models.TextField(default=\"xyzzy\")\n    value = models.IntegerField()\n    other_value = models.IntegerField(default=0)\n\n    def __str__(self):\n        return self.name\n\nclass RelatedItem(models.Model):\n    item = models.ForeignKey(Item)\n\nclass Child(models.Model):\n    name = models.CharField(max_length=10)\n    value = models.IntegerField()\n\n@python_2_unicode_compatible\nclass Leaf(models.Model):\n    name = models.CharField(max_length=10)\n    child = models.ForeignKey(Child)\n    second_child = models.ForeignKey(Child, related_name=\"other\", null=True)\n    value = models.IntegerField(default=42)\n\n    def __str__(self):\n        return self.name\n\nclass ResolveThis(models.Model):\n    num = models.FloatField()\n    name = models.CharField(max_length=16)\n\nclass Proxy(Item):\n    class Meta:\n        proxy = True\n\n@python_2_unicode_compatible\nclass SimpleItem(models.Model):\n    name = models.CharField(max_length=15)\n    value = models.IntegerField()\n\n    def __str__(self):\n        return self.name\n\nclass Feature(models.Model):\n    item = models.ForeignKey(SimpleItem)\n\nclass SpecialFeature(models.Model):\n    feature = models.ForeignKey(Feature)\n\nclass OneToOneItem(models.Model):\n    item = models.OneToOneField(Item, related_name=\"one_to_one_item\")\n    name = models.CharField(max_length=15)\n\nclass ItemAndSimpleItem(models.Model):\n    item = models.ForeignKey(Item)\n    simple = models.ForeignKey(SimpleItem)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/defer_regress/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom operator import attrgetter\n\nfrom django.contrib.contenttypes.models import ContentType\nfrom django.contrib.sessions.backends.db import SessionStore\nfrom django.db.models import Count\nfrom django.db.models.loading import cache\nfrom django.test import TestCase\n\nfrom .models import (ResolveThis, Item, RelatedItem, Child, Leaf, Proxy,\n    SimpleItem, Feature, ItemAndSimpleItem, OneToOneItem, SpecialFeature)\n\n\nclass DeferRegressionTest(TestCase):\n    def test_basic(self):\n        # Deferred fields should really be deferred and not accidentally use\n        # the field's default value just because they aren't passed to __init__\n\n        Item.objects.create(name=\"first\", value=42)\n        obj = Item.objects.only(\"name\", \"other_value\").get(name=\"first\")\n        # Accessing \"name\" doesn't trigger a new database query. Accessing\n        # \"value\" or \"text\" should.\n        with self.assertNumQueries(0):\n            self.assertEqual(obj.name, \"first\")\n            self.assertEqual(obj.other_value, 0)\n\n        with self.assertNumQueries(1):\n            self.assertEqual(obj.value, 42)\n\n        with self.assertNumQueries(1):\n            self.assertEqual(obj.text, \"xyzzy\")\n\n        with self.assertNumQueries(0):\n            self.assertEqual(obj.text, \"xyzzy\")\n\n        # Regression test for #10695. Make sure different instances don't\n        # inadvertently share data in the deferred descriptor objects.\n        i = Item.objects.create(name=\"no I'm first\", value=37)\n        items = Item.objects.only(\"value\").order_by(\"-value\")\n        self.assertEqual(items[0].name, \"first\")\n        self.assertEqual(items[1].name, \"no I'm first\")\n\n        RelatedItem.objects.create(item=i)\n        r = RelatedItem.objects.defer(\"item\").get()\n        self.assertEqual(r.item_id, i.id)\n        self.assertEqual(r.item, i)\n\n        # Some further checks for select_related() and inherited model\n        # behavior (regression for #10710).\n        c1 = Child.objects.create(name=\"c1\", value=42)\n        c2 = Child.objects.create(name=\"c2\", value=37)\n        Leaf.objects.create(name=\"l1\", child=c1, second_child=c2)\n\n        obj = Leaf.objects.only(\"name\", \"child\").select_related()[0]\n        self.assertEqual(obj.child.name, \"c1\")\n\n        self.assertQuerysetEqual(\n            Leaf.objects.select_related().only(\"child__name\", \"second_child__name\"), [\n                \"l1\",\n            ],\n            attrgetter(\"name\")\n        )\n\n        # Models instances with deferred fields should still return the same\n        # content types as their non-deferred versions (bug #10738).\n        ctype = ContentType.objects.get_for_model\n        c1 = ctype(Item.objects.all()[0])\n        c2 = ctype(Item.objects.defer(\"name\")[0])\n        c3 = ctype(Item.objects.only(\"name\")[0])\n        self.assertTrue(c1 is c2 is c3)\n\n        # Regression for #10733 - only() can be used on a model with two\n        # foreign keys.\n        results = Leaf.objects.only(\"name\", \"child\", \"second_child\").select_related()\n        self.assertEqual(results[0].child.name, \"c1\")\n        self.assertEqual(results[0].second_child.name, \"c2\")\n\n        results = Leaf.objects.only(\"name\", \"child\", \"second_child\", \"child__name\", \"second_child__name\").select_related()\n        self.assertEqual(results[0].child.name, \"c1\")\n        self.assertEqual(results[0].second_child.name, \"c2\")\n\n        # Test for #12163 - Pickling error saving session with unsaved model\n        # instances.\n        SESSION_KEY = '2b1189a188b44ad18c35e1baac6ceead'\n\n        item = Item()\n        item._deferred = False\n        s = SessionStore(SESSION_KEY)\n        s.clear()\n        s[\"item\"] = item\n        s.save()\n\n        s = SessionStore(SESSION_KEY)\n        s.modified = True\n        s.save()\n\n        i2 = s[\"item\"]\n        self.assertFalse(i2._deferred)\n\n        # Regression for #11936 - loading.get_models should not return deferred\n        # models by default.\n        klasses = sorted(\n            cache.get_models(cache.get_app(\"defer_regress\")),\n            key=lambda klass: klass.__name__\n        )\n        self.assertEqual(\n            klasses, [\n                Child,\n                Feature,\n                Item,\n                ItemAndSimpleItem,\n                Leaf,\n                OneToOneItem,\n                Proxy,\n                RelatedItem,\n                ResolveThis,\n                SimpleItem,\n                SpecialFeature,\n            ]\n        )\n\n        klasses = sorted(\n            map(\n                attrgetter(\"__name__\"),\n                cache.get_models(\n                    cache.get_app(\"defer_regress\"), include_deferred=True\n                ),\n            )\n        )\n        # FIXME: This is dependent on the order in which tests are run --\n        # this test case has to be the first, otherwise a LOT more classes\n        # appear.\n        self.assertEqual(\n            klasses, [\n                \"Child\",\n                \"Child_Deferred_value\",\n                \"Feature\",\n                \"Item\",\n                \"ItemAndSimpleItem\",\n                \"Item_Deferred_name\",\n                \"Item_Deferred_name_other_value_text\",\n                \"Item_Deferred_name_other_value_value\",\n                \"Item_Deferred_other_value_text_value\",\n                \"Item_Deferred_text_value\",\n                \"Leaf\",\n                \"Leaf_Deferred_child_id_second_child_id_value\",\n                \"Leaf_Deferred_name_value\",\n                \"Leaf_Deferred_second_child_id_value\",\n                \"Leaf_Deferred_value\",\n                \"OneToOneItem\",\n                \"Proxy\",\n                \"RelatedItem\",\n                \"RelatedItem_Deferred_\",\n                \"RelatedItem_Deferred_item_id\",\n                \"ResolveThis\",\n                \"SimpleItem\",\n                \"SpecialFeature\",\n            ]\n        )\n\n        # Regression for #16409 - make sure defer() and only() work with annotate()\n        self.assertIsInstance(list(SimpleItem.objects.annotate(Count('feature')).defer('name')), list)\n        self.assertIsInstance(list(SimpleItem.objects.annotate(Count('feature')).only('name')), list)\n\n    def test_only_and_defer_usage_on_proxy_models(self):\n        # Regression for #15790 - only() broken for proxy models\n        proxy = Proxy.objects.create(name=\"proxy\", value=42)\n\n        msg = 'QuerySet.only() return bogus results with proxy models'\n        dp = Proxy.objects.only('other_value').get(pk=proxy.pk)\n        self.assertEqual(dp.name, proxy.name, msg=msg)\n        self.assertEqual(dp.value, proxy.value, msg=msg)\n\n        # also test things with .defer()\n        msg = 'QuerySet.defer() return bogus results with proxy models'\n        dp = Proxy.objects.defer('name', 'text', 'value').get(pk=proxy.pk)\n        self.assertEqual(dp.name, proxy.name, msg=msg)\n        self.assertEqual(dp.value, proxy.value, msg=msg)\n\n    def test_resolve_columns(self):\n        rt = ResolveThis.objects.create(num=5.0, name='Foobar')\n        qs = ResolveThis.objects.defer('num')\n        self.assertEqual(1, qs.count())\n        self.assertEqual('Foobar', qs[0].name)\n\n    def test_reverse_one_to_one_relations(self):\n        # Refs #14694. Test reverse relations which are known unique (reverse\n        # side has o2ofield or unique FK) - the o2o case\n        item = Item.objects.create(name=\"first\", value=42)\n        o2o = OneToOneItem.objects.create(item=item, name=\"second\")\n        self.assertEqual(len(Item.objects.defer('one_to_one_item__name')), 1)\n        self.assertEqual(len(Item.objects.select_related('one_to_one_item')), 1)\n        self.assertEqual(len(Item.objects.select_related(\n            'one_to_one_item').defer('one_to_one_item__name')), 1)\n        self.assertEqual(len(Item.objects.select_related('one_to_one_item').defer('value')), 1)\n        # Make sure that `only()` doesn't break when we pass in a unique relation,\n        # rather than a field on the relation.\n        self.assertEqual(len(Item.objects.only('one_to_one_item')), 1)\n        with self.assertNumQueries(1):\n            i = Item.objects.select_related('one_to_one_item')[0]\n            self.assertEqual(i.one_to_one_item.pk, o2o.pk)\n            self.assertEqual(i.one_to_one_item.name, \"second\")\n        with self.assertNumQueries(1):\n            i = Item.objects.select_related('one_to_one_item').defer(\n                'value', 'one_to_one_item__name')[0]\n            self.assertEqual(i.one_to_one_item.pk, o2o.pk)\n            self.assertEqual(i.name, \"first\")\n        with self.assertNumQueries(1):\n            self.assertEqual(i.one_to_one_item.name, \"second\")\n        with self.assertNumQueries(1):\n            self.assertEqual(i.value, 42)\n\n    def test_defer_with_select_related(self):\n        item1 = Item.objects.create(name=\"first\", value=47)\n        item2 = Item.objects.create(name=\"second\", value=42)\n        simple = SimpleItem.objects.create(name=\"simple\", value=\"23\")\n        related = ItemAndSimpleItem.objects.create(item=item1, simple=simple)\n\n        obj = ItemAndSimpleItem.objects.defer('item').select_related('simple').get()\n        self.assertEqual(obj.item, item1)\n        self.assertEqual(obj.item_id, item1.id)\n\n        obj.item = item2\n        obj.save()\n\n        obj = ItemAndSimpleItem.objects.defer('item').select_related('simple').get()\n        self.assertEqual(obj.item, item2)\n        self.assertEqual(obj.item_id, item2.id)\n\n    def test_only_with_select_related(self):\n        # Test for #17485.\n        item = SimpleItem.objects.create(name='first', value=47)\n        feature = Feature.objects.create(item=item)\n        SpecialFeature.objects.create(feature=feature)\n\n        qs = Feature.objects.only('item__name').select_related('item')\n        self.assertEqual(len(qs), 1)\n\n        qs = SpecialFeature.objects.only('feature__item__name').select_related('feature__item')\n        self.assertEqual(len(qs), 1)\n\n    def test_deferred_class_factory(self):\n        from django.db.models.query_utils import deferred_class_factory\n        new_class = deferred_class_factory(Item,\n            ('this_is_some_very_long_attribute_name_so_modelname_truncation_is_triggered',))\n        self.assertEqual(new_class.__name__,\n            'Item_Deferred_this_is_some_very_long_attribute_nac34b1f495507dad6b02e2cb235c875e')\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/delete_regress/__init__.py",
    "content": "\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/delete_regress/models.py",
    "content": "from django.contrib.contenttypes import generic\nfrom django.contrib.contenttypes.models import ContentType\nfrom django.db import models\n\nclass Award(models.Model):\n    name = models.CharField(max_length=25)\n    object_id = models.PositiveIntegerField()\n    content_type = models.ForeignKey(ContentType)\n    content_object = generic.GenericForeignKey()\n\nclass AwardNote(models.Model):\n    award = models.ForeignKey(Award)\n    note = models.CharField(max_length=100)\n\nclass Person(models.Model):\n    name = models.CharField(max_length=25)\n    awards = generic.GenericRelation(Award)\n\nclass Book(models.Model):\n    pagecount = models.IntegerField()\n\nclass Toy(models.Model):\n    name = models.CharField(max_length=50)\n\nclass Child(models.Model):\n    name = models.CharField(max_length=50)\n    toys = models.ManyToManyField(Toy, through='PlayedWith')\n\nclass PlayedWith(models.Model):\n    child = models.ForeignKey(Child)\n    toy = models.ForeignKey(Toy)\n    date = models.DateField(db_column='date_col')\n\nclass PlayedWithNote(models.Model):\n    played = models.ForeignKey(PlayedWith)\n    note = models.TextField()\n\nclass Contact(models.Model):\n    label = models.CharField(max_length=100)\n\nclass Email(Contact):\n    email_address = models.EmailField(max_length=100)\n\nclass Researcher(models.Model):\n    contacts = models.ManyToManyField(Contact, related_name=\"research_contacts\")\n\nclass Food(models.Model):\n    name = models.CharField(max_length=20, unique=True)\n\nclass Eaten(models.Model):\n    food = models.ForeignKey(Food, to_field=\"name\")\n    meal = models.CharField(max_length=20)\n\n\n# Models for #15776\n\nclass Policy(models.Model):\n    policy_number = models.CharField(max_length=10)\n\nclass Version(models.Model):\n    policy = models.ForeignKey(Policy)\n\nclass Location(models.Model):\n    version = models.ForeignKey(Version, blank=True, null=True)\n\nclass Item(models.Model):\n    version = models.ForeignKey(Version)\n    location = models.ForeignKey(Location, blank=True, null=True)\n\n# Models for #16128\n\nclass File(models.Model):\n    pass\n\nclass Image(File):\n    class Meta:\n        proxy = True\n\nclass Photo(Image):\n    class Meta:\n        proxy = True\n\nclass FooImage(models.Model):\n    my_image = models.ForeignKey(Image)\n\nclass FooFile(models.Model):\n    my_file = models.ForeignKey(File)\n\nclass FooPhoto(models.Model):\n    my_photo = models.ForeignKey(Photo)\n\nclass FooFileProxy(FooFile):\n    class Meta:\n        proxy = True\n\nclass OrgUnit(models.Model):\n    name = models.CharField(max_length=64, unique=True)\n\nclass Login(models.Model):\n    description = models.CharField(max_length=32)\n    orgunit = models.ForeignKey(OrgUnit)\n\nclass House(models.Model):\n    address = models.CharField(max_length=32)\n\nclass OrderedPerson(models.Model):\n    name = models.CharField(max_length=32)\n    lives_in = models.ForeignKey(House)\n\n    class Meta:\n        ordering = ['name']\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/delete_regress/tests.py",
    "content": "from __future__ import absolute_import\n\nimport datetime\n\nfrom django.conf import settings\nfrom django.db import backend, transaction, DEFAULT_DB_ALIAS, models\nfrom django.test import TestCase, TransactionTestCase, skipUnlessDBFeature\n\nfrom .models import (Book, Award, AwardNote, Person, Child, Toy, PlayedWith,\n    PlayedWithNote, Email, Researcher, Food, Eaten, Policy, Version, Location,\n    Item, Image, File, Photo, FooFile, FooImage, FooPhoto, FooFileProxy, Login,\n    OrgUnit, OrderedPerson, House)\n\n\n# Can't run this test under SQLite, because you can't\n# get two connections to an in-memory database.\nclass DeleteLockingTest(TransactionTestCase):\n    def setUp(self):\n        # Create a second connection to the default database\n        conn_settings = settings.DATABASES[DEFAULT_DB_ALIAS]\n        self.conn2 = backend.DatabaseWrapper({\n            'HOST': conn_settings['HOST'],\n            'NAME': conn_settings['NAME'],\n            'OPTIONS': conn_settings['OPTIONS'],\n            'PASSWORD': conn_settings['PASSWORD'],\n            'PORT': conn_settings['PORT'],\n            'USER': conn_settings['USER'],\n            'TIME_ZONE': settings.TIME_ZONE,\n        })\n\n        # Put both DB connections into managed transaction mode\n        transaction.enter_transaction_management()\n        transaction.managed(True)\n        self.conn2._enter_transaction_management(True)\n\n    def tearDown(self):\n        # Close down the second connection.\n        transaction.leave_transaction_management()\n        self.conn2.close()\n\n    @skipUnlessDBFeature('test_db_allows_multiple_connections')\n    def test_concurrent_delete(self):\n        \"Deletes on concurrent transactions don't collide and lock the database. Regression for #9479\"\n\n        # Create some dummy data\n        b1 = Book(id=1, pagecount=100)\n        b2 = Book(id=2, pagecount=200)\n        b3 = Book(id=3, pagecount=300)\n        b1.save()\n        b2.save()\n        b3.save()\n\n        transaction.commit()\n\n        self.assertEqual(3, Book.objects.count())\n\n        # Delete something using connection 2.\n        cursor2 = self.conn2.cursor()\n        cursor2.execute('DELETE from delete_regress_book WHERE id=1')\n        self.conn2._commit()\n\n        # Now perform a queryset delete that covers the object\n        # deleted in connection 2. This causes an infinite loop\n        # under MySQL InnoDB unless we keep track of already\n        # deleted objects.\n        Book.objects.filter(pagecount__lt=250).delete()\n        transaction.commit()\n        self.assertEqual(1, Book.objects.count())\n        transaction.commit()\n\n\nclass DeleteCascadeTests(TestCase):\n    def test_generic_relation_cascade(self):\n        \"\"\"\n        Django cascades deletes through generic-related objects to their\n        reverse relations.\n\n        \"\"\"\n        person = Person.objects.create(name='Nelson Mandela')\n        award = Award.objects.create(name='Nobel', content_object=person)\n        note = AwardNote.objects.create(note='a peace prize',\n                                        award=award)\n        self.assertEqual(AwardNote.objects.count(), 1)\n        person.delete()\n        self.assertEqual(Award.objects.count(), 0)\n        # first two asserts are just sanity checks, this is the kicker:\n        self.assertEqual(AwardNote.objects.count(), 0)\n\n    def test_fk_to_m2m_through(self):\n        \"\"\"\n        If an M2M relationship has an explicitly-specified through model, and\n        some other model has an FK to that through model, deletion is cascaded\n        from one of the participants in the M2M, to the through model, to its\n        related model.\n\n        \"\"\"\n        juan = Child.objects.create(name='Juan')\n        paints = Toy.objects.create(name='Paints')\n        played = PlayedWith.objects.create(child=juan, toy=paints,\n                                           date=datetime.date.today())\n        note = PlayedWithNote.objects.create(played=played,\n                                             note='the next Jackson Pollock')\n        self.assertEqual(PlayedWithNote.objects.count(), 1)\n        paints.delete()\n        self.assertEqual(PlayedWith.objects.count(), 0)\n        # first two asserts just sanity checks, this is the kicker:\n        self.assertEqual(PlayedWithNote.objects.count(), 0)\n\n    def test_15776(self):\n        policy = Policy.objects.create(pk=1, policy_number=\"1234\")\n        version = Version.objects.create(policy=policy)\n        location = Location.objects.create(version=version)\n        item = Item.objects.create(version=version, location=location)\n        policy.delete()\n\n\nclass DeleteCascadeTransactionTests(TransactionTestCase):\n    def test_inheritance(self):\n        \"\"\"\n        Auto-created many-to-many through tables referencing a parent model are\n        correctly found by the delete cascade when a child of that parent is\n        deleted.\n\n        Refs #14896.\n        \"\"\"\n        r = Researcher.objects.create()\n        email = Email.objects.create(\n            label=\"office-email\", email_address=\"carl@science.edu\"\n        )\n        r.contacts.add(email)\n\n        email.delete()\n\n    def test_to_field(self):\n        \"\"\"\n        Cascade deletion works with ForeignKey.to_field set to non-PK.\n\n        \"\"\"\n        apple = Food.objects.create(name=\"apple\")\n        eaten = Eaten.objects.create(food=apple, meal=\"lunch\")\n\n        apple.delete()\n        self.assertFalse(Food.objects.exists())\n        self.assertFalse(Eaten.objects.exists())\n\n\nclass LargeDeleteTests(TestCase):\n    def test_large_deletes(self):\n        \"Regression for #13309 -- if the number of objects > chunk size, deletion still occurs\"\n        for x in range(300):\n            track = Book.objects.create(pagecount=x+100)\n        # attach a signal to make sure we will not fast-delete\n        def noop(*args, **kwargs):\n            pass\n        models.signals.post_delete.connect(noop, sender=Book)\n        Book.objects.all().delete()\n        models.signals.post_delete.disconnect(noop, sender=Book)\n        self.assertEqual(Book.objects.count(), 0)\n\n\nclass ProxyDeleteTest(TestCase):\n    \"\"\"\n    Tests on_delete behavior for proxy models.\n\n    See #16128.\n\n    \"\"\"\n    def create_image(self):\n        \"\"\"Return an Image referenced by both a FooImage and a FooFile.\"\"\"\n        # Create an Image\n        test_image = Image()\n        test_image.save()\n        foo_image = FooImage(my_image=test_image)\n        foo_image.save()\n\n        # Get the Image instance as a File\n        test_file = File.objects.get(pk=test_image.pk)\n        foo_file = FooFile(my_file=test_file)\n        foo_file.save()\n\n        return test_image\n\n\n    def test_delete_proxy(self):\n        \"\"\"\n        Deleting the *proxy* instance bubbles through to its non-proxy and\n        *all* referring objects are deleted.\n\n        \"\"\"\n        self.create_image()\n\n        Image.objects.all().delete()\n\n        # An Image deletion == File deletion\n        self.assertEqual(len(Image.objects.all()), 0)\n        self.assertEqual(len(File.objects.all()), 0)\n\n        # The Image deletion cascaded and *all* references to it are deleted.\n        self.assertEqual(len(FooImage.objects.all()), 0)\n        self.assertEqual(len(FooFile.objects.all()), 0)\n\n\n    def test_delete_proxy_of_proxy(self):\n        \"\"\"\n        Deleting a proxy-of-proxy instance should bubble through to its proxy\n        and non-proxy parents, deleting *all* referring objects.\n\n        \"\"\"\n        test_image = self.create_image()\n\n        # Get the Image as a Photo\n        test_photo = Photo.objects.get(pk=test_image.pk)\n        foo_photo = FooPhoto(my_photo=test_photo)\n        foo_photo.save()\n\n        Photo.objects.all().delete()\n\n        # A Photo deletion == Image deletion == File deletion\n        self.assertEqual(len(Photo.objects.all()), 0)\n        self.assertEqual(len(Image.objects.all()), 0)\n        self.assertEqual(len(File.objects.all()), 0)\n\n        # The Photo deletion should have cascaded and deleted *all*\n        # references to it.\n        self.assertEqual(len(FooPhoto.objects.all()), 0)\n        self.assertEqual(len(FooFile.objects.all()), 0)\n        self.assertEqual(len(FooImage.objects.all()), 0)\n\n\n    def test_delete_concrete_parent(self):\n        \"\"\"\n        Deleting an instance of a concrete model should also delete objects\n        referencing its proxy subclass.\n\n        \"\"\"\n        self.create_image()\n\n        File.objects.all().delete()\n\n        # A File deletion == Image deletion\n        self.assertEqual(len(File.objects.all()), 0)\n        self.assertEqual(len(Image.objects.all()), 0)\n\n        # The File deletion should have cascaded and deleted *all* references\n        # to it.\n        self.assertEqual(len(FooFile.objects.all()), 0)\n        self.assertEqual(len(FooImage.objects.all()), 0)\n\n\n    def test_delete_proxy_pair(self):\n        \"\"\"\n        If a pair of proxy models are linked by an FK from one concrete parent\n        to the other, deleting one proxy model cascade-deletes the other, and\n        the deletion happens in the right order (not triggering an\n        IntegrityError on databases unable to defer integrity checks).\n\n        Refs #17918.\n\n        \"\"\"\n        # Create an Image (proxy of File) and FooFileProxy (proxy of FooFile,\n        # which has an FK to File)\n        image = Image.objects.create()\n        as_file = File.objects.get(pk=image.pk)\n        FooFileProxy.objects.create(my_file=as_file)\n\n        Image.objects.all().delete()\n\n        self.assertEqual(len(FooFileProxy.objects.all()), 0)\n\n    def test_19187_values(self):\n        with self.assertRaises(TypeError):\n            Image.objects.values().delete()\n        with self.assertRaises(TypeError):\n            Image.objects.values_list().delete()\n\nclass Ticket19102Tests(TestCase):\n    \"\"\"\n    Test different queries which alter the SELECT clause of the query. We\n    also must be using a subquery for the deletion (that is, the original\n    query has a join in it). The deletion should be done as \"fast-path\"\n    deletion (that is, just one query for the .delete() call).\n\n    Note that .values() is not tested here on purpose. .values().delete()\n    doesn't work for non fast-path deletes at all.\n    \"\"\"\n    def setUp(self):\n        self.o1 = OrgUnit.objects.create(name='o1')\n        self.o2 = OrgUnit.objects.create(name='o2')\n        self.l1 = Login.objects.create(description='l1', orgunit=self.o1)\n        self.l2 = Login.objects.create(description='l2', orgunit=self.o2)\n\n    @skipUnlessDBFeature(\"update_can_self_select\")\n    def test_ticket_19102_annotate(self):\n        with self.assertNumQueries(1):\n            Login.objects.order_by('description').filter(\n                orgunit__name__isnull=False\n            ).annotate(\n                n=models.Count('description')\n            ).filter(\n                n=1, pk=self.l1.pk\n            ).delete()\n        self.assertFalse(Login.objects.filter(pk=self.l1.pk).exists())\n        self.assertTrue(Login.objects.filter(pk=self.l2.pk).exists())\n\n    @skipUnlessDBFeature(\"update_can_self_select\")\n    def test_ticket_19102_extra(self):\n        with self.assertNumQueries(1):\n            Login.objects.order_by('description').filter(\n                orgunit__name__isnull=False\n            ).extra(\n                select={'extraf':'1'}\n            ).filter(\n                pk=self.l1.pk\n            ).delete()\n        self.assertFalse(Login.objects.filter(pk=self.l1.pk).exists())\n        self.assertTrue(Login.objects.filter(pk=self.l2.pk).exists())\n\n    @skipUnlessDBFeature(\"update_can_self_select\")\n    @skipUnlessDBFeature('can_distinct_on_fields')\n    def test_ticket_19102_distinct_on(self):\n        # Both Login objs should have same description so that only the one\n        # having smaller PK will be deleted.\n        Login.objects.update(description='description')\n        with self.assertNumQueries(1):\n            Login.objects.distinct('description').order_by('pk').filter(\n                orgunit__name__isnull=False\n            ).delete()\n        # Assumed that l1 which is created first has smaller PK.\n        self.assertFalse(Login.objects.filter(pk=self.l1.pk).exists())\n        self.assertTrue(Login.objects.filter(pk=self.l2.pk).exists())\n\n    @skipUnlessDBFeature(\"update_can_self_select\")\n    def test_ticket_19102_select_related(self):\n        with self.assertNumQueries(1):\n            Login.objects.filter(\n                pk=self.l1.pk\n            ).filter(\n                orgunit__name__isnull=False\n            ).order_by(\n                'description'\n            ).select_related('orgunit').delete()\n        self.assertFalse(Login.objects.filter(pk=self.l1.pk).exists())\n        self.assertTrue(Login.objects.filter(pk=self.l2.pk).exists())\n    \n    @skipUnlessDBFeature(\"update_can_self_select\")\n    def test_ticket_19102_defer(self):\n        with self.assertNumQueries(1):\n            Login.objects.filter(\n                pk=self.l1.pk\n            ).filter(\n                orgunit__name__isnull=False\n            ).order_by(\n                'description'\n            ).only('id').delete()\n        self.assertFalse(Login.objects.filter(pk=self.l1.pk).exists())\n        self.assertTrue(Login.objects.filter(pk=self.l2.pk).exists())\n\n\nclass OrderedDeleteTests(TestCase):\n    def test_meta_ordered_delete(self):\n        # When a subquery is performed by deletion code, the subquery must be\n        # cleared of all ordering. There was a but that caused _meta ordering\n        # to be used. Refs #19720.\n        h = House.objects.create(address='Foo')\n        OrderedPerson.objects.create(name='Jack', lives_in=h)\n        OrderedPerson.objects.create(name='Bob', lives_in=h)\n        OrderedPerson.objects.filter(lives_in__address='Foo').delete()\n        self.assertEqual(OrderedPerson.objects.count(), 0)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/dispatch/__init__.py",
    "content": "\"\"\"Unit-tests for the dispatch project\n\"\"\"\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/dispatch/models.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/dispatch/tests/__init__.py",
    "content": "\"\"\"\nUnit-tests for the dispatch project\n\"\"\"\n\nfrom __future__ import absolute_import\n\nfrom .test_dispatcher import DispatcherTests, ReceiverTestCase\nfrom .test_saferef import SaferefTests\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/dispatch/tests/test_dispatcher.py",
    "content": "import gc\nimport sys\nimport time\n\nfrom django.dispatch import Signal, receiver\nfrom django.utils import unittest\n\n\nif sys.platform.startswith('java'):\n    def garbage_collect():\n        # Some JVM GCs will execute finalizers in a different thread, meaning\n        # we need to wait for that to complete before we go on looking for the\n        # effects of that.\n        gc.collect()\n        time.sleep(0.1)\nelif hasattr(sys, \"pypy_version_info\"):\n    def garbage_collect():\n        # Collecting weakreferences can take two collections on PyPy.\n        gc.collect()\n        gc.collect()\nelse:\n    def garbage_collect():\n        gc.collect()\n\ndef receiver_1_arg(val, **kwargs):\n    return val\n\nclass Callable(object):\n    def __call__(self, val, **kwargs):\n        return val\n\n    def a(self, val, **kwargs):\n        return val\n\na_signal = Signal(providing_args=[\"val\"])\nb_signal = Signal(providing_args=[\"val\"])\nc_signal = Signal(providing_args=[\"val\"])\n\nclass DispatcherTests(unittest.TestCase):\n    \"\"\"Test suite for dispatcher (barely started)\"\"\"\n\n    def _testIsClean(self, signal):\n        \"\"\"Assert that everything has been cleaned up automatically\"\"\"\n        self.assertEqual(signal.receivers, [])\n\n        # force cleanup just in case\n        signal.receivers = []\n\n    def testExact(self):\n        a_signal.connect(receiver_1_arg, sender=self)\n        expected = [(receiver_1_arg,\"test\")]\n        result = a_signal.send(sender=self, val=\"test\")\n        self.assertEqual(result, expected)\n        a_signal.disconnect(receiver_1_arg, sender=self)\n        self._testIsClean(a_signal)\n\n    def testIgnoredSender(self):\n        a_signal.connect(receiver_1_arg)\n        expected = [(receiver_1_arg,\"test\")]\n        result = a_signal.send(sender=self, val=\"test\")\n        self.assertEqual(result, expected)\n        a_signal.disconnect(receiver_1_arg)\n        self._testIsClean(a_signal)\n\n    def testGarbageCollected(self):\n        a = Callable()\n        a_signal.connect(a.a, sender=self)\n        expected = []\n        del a\n        garbage_collect()\n        result = a_signal.send(sender=self, val=\"test\")\n        self.assertEqual(result, expected)\n        self._testIsClean(a_signal)\n\n    def testMultipleRegistration(self):\n        a = Callable()\n        a_signal.connect(a)\n        a_signal.connect(a)\n        a_signal.connect(a)\n        a_signal.connect(a)\n        a_signal.connect(a)\n        a_signal.connect(a)\n        result = a_signal.send(sender=self, val=\"test\")\n        self.assertEqual(len(result), 1)\n        self.assertEqual(len(a_signal.receivers), 1)\n        del a\n        del result\n        garbage_collect()\n        self._testIsClean(a_signal)\n\n    def testUidRegistration(self):\n        def uid_based_receiver_1(**kwargs):\n            pass\n\n        def uid_based_receiver_2(**kwargs):\n            pass\n\n        a_signal.connect(uid_based_receiver_1, dispatch_uid = \"uid\")\n        a_signal.connect(uid_based_receiver_2, dispatch_uid = \"uid\")\n        self.assertEqual(len(a_signal.receivers), 1)\n        a_signal.disconnect(dispatch_uid = \"uid\")\n        self._testIsClean(a_signal)\n\n    def testRobust(self):\n        \"\"\"Test the sendRobust function\"\"\"\n        def fails(val, **kwargs):\n            raise ValueError('this')\n        a_signal.connect(fails)\n        result = a_signal.send_robust(sender=self, val=\"test\")\n        err = result[0][1]\n        self.assertTrue(isinstance(err, ValueError))\n        self.assertEqual(err.args, ('this',))\n        a_signal.disconnect(fails)\n        self._testIsClean(a_signal)\n\n    def testDisconnection(self):\n        receiver_1 = Callable()\n        receiver_2 = Callable()\n        receiver_3 = Callable()\n        a_signal.connect(receiver_1)\n        a_signal.connect(receiver_2)\n        a_signal.connect(receiver_3)\n        a_signal.disconnect(receiver_1)\n        del receiver_2\n        garbage_collect()\n        a_signal.disconnect(receiver_3)\n        self._testIsClean(a_signal)\n\n    def test_has_listeners(self):\n        self.assertFalse(a_signal.has_listeners())\n        self.assertFalse(a_signal.has_listeners(sender=object()))\n        receiver_1 = Callable()\n        a_signal.connect(receiver_1)\n        self.assertTrue(a_signal.has_listeners())\n        self.assertTrue(a_signal.has_listeners(sender=object()))\n        a_signal.disconnect(receiver_1)\n        self.assertFalse(a_signal.has_listeners())\n        self.assertFalse(a_signal.has_listeners(sender=object()))\n\n\nclass ReceiverTestCase(unittest.TestCase):\n    \"\"\"\n    Test suite for receiver.\n\n    \"\"\"\n    def testReceiverSingleSignal(self):\n        @receiver(a_signal)\n        def f(val, **kwargs):\n            self.state = val\n        self.state = False\n        a_signal.send(sender=self, val=True)\n        self.assertTrue(self.state)\n\n    def testReceiverSignalList(self):\n        @receiver([a_signal, b_signal, c_signal])\n        def f(val, **kwargs):\n            self.state.append(val)\n        self.state = []\n        a_signal.send(sender=self, val='a')\n        c_signal.send(sender=self, val='c')\n        b_signal.send(sender=self, val='b')\n        self.assertIn('a', self.state)\n        self.assertIn('b', self.state)\n        self.assertIn('c', self.state)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/dispatch/tests/test_saferef.py",
    "content": "from django.dispatch.saferef import safeRef\nfrom django.utils.six.moves import xrange\nfrom django.utils import unittest\n\nclass Test1(object):\n    def x(self):\n        pass\n\ndef test2(obj):\n    pass\n\nclass Test2(object):\n    def __call__(self, obj):\n        pass\n\nclass SaferefTests(unittest.TestCase):\n    def setUp(self):\n        ts = []\n        ss = []\n        for x in xrange(5000):\n            t = Test1()\n            ts.append(t)\n            s = safeRef(t.x, self._closure)\n            ss.append(s)\n        ts.append(test2)\n        ss.append(safeRef(test2, self._closure))\n        for x in xrange(30):\n            t = Test2()\n            ts.append(t)\n            s = safeRef(t, self._closure)\n            ss.append(s)\n        self.ts = ts\n        self.ss = ss\n        self.closureCount = 0\n\n    def tearDown(self):\n        del self.ts\n        del self.ss\n\n    def testIn(self):\n        \"\"\"Test the \"in\" operator for safe references (cmp)\"\"\"\n        for t in self.ts[:50]:\n            self.assertTrue(safeRef(t.x) in self.ss)\n\n    def testValid(self):\n        \"\"\"Test that the references are valid (return instance methods)\"\"\"\n        for s in self.ss:\n            self.assertTrue(s())\n\n    def testShortCircuit(self):\n        \"\"\"Test that creation short-circuits to reuse existing references\"\"\"\n        sd = {}\n        for s in self.ss:\n            sd[s] = 1\n        for t in self.ts:\n            if hasattr(t, 'x'):\n                self.assertTrue(safeRef(t.x) in sd)\n            else:\n                self.assertTrue(safeRef(t) in sd)\n\n    def testRepresentation(self):\n        \"\"\"Test that the reference object's representation works\n\n        XXX Doesn't currently check the results, just that no error\n            is raised\n        \"\"\"\n        repr(self.ss[-1])\n\n    def _closure(self, ref):\n        \"\"\"Dumb utility mechanism to increment deletion counter\"\"\"\n        self.closureCount +=1\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/expressions_regress/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/expressions_regress/models.py",
    "content": "from __future__ import unicode_literals\nfrom django.utils.encoding import python_2_unicode_compatible\n\"\"\"\nModel for testing arithmetic expressions.\n\"\"\"\nfrom django.db import models\n\n\n@python_2_unicode_compatible\nclass Number(models.Model):\n    integer = models.IntegerField(db_column='the_integer')\n    float = models.FloatField(null=True, db_column='the_float')\n\n    def __str__(self):\n        return '%i, %.3f' % (self.integer, self.float)\n\nclass Experiment(models.Model):\n    name = models.CharField(max_length=24)\n    assigned = models.DateField()\n    completed = models.DateField()\n    start = models.DateTimeField()\n    end = models.DateTimeField()\n\n    class Meta:\n        ordering = ('name',)\n\n    def duration(self):\n        return self.end - self.start\n\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/expressions_regress/tests.py",
    "content": "\"\"\"\nSpanning tests for all the operations that F() expressions can perform.\n\"\"\"\nfrom __future__ import absolute_import\n\nimport datetime\n\nfrom django.db import connection\nfrom django.db.models import F\nfrom django.test import TestCase, Approximate, skipUnlessDBFeature\n\nfrom .models import Number, Experiment\n\n\nclass ExpressionsRegressTests(TestCase):\n\n    def setUp(self):\n        Number(integer=-1).save()\n        Number(integer=42).save()\n        Number(integer=1337).save()\n        self.assertEqual(Number.objects.update(float=F('integer')), 3)\n\n    def test_fill_with_value_from_same_object(self):\n        \"\"\"\n        We can fill a value in all objects with an other value of the\n        same object.\n        \"\"\"\n        self.assertQuerysetEqual(\n                Number.objects.all(),\n                [\n                    '<Number: -1, -1.000>',\n                    '<Number: 42, 42.000>',\n                    '<Number: 1337, 1337.000>'\n                ]\n        )\n\n    def test_increment_value(self):\n        \"\"\"\n        We can increment a value of all objects in a query set.\n        \"\"\"\n        self.assertEqual(\n            Number.objects.filter(integer__gt=0)\n                  .update(integer=F('integer') + 1),\n            2)\n\n        self.assertQuerysetEqual(\n                Number.objects.all(),\n                [\n                    '<Number: -1, -1.000>',\n                    '<Number: 43, 42.000>',\n                    '<Number: 1338, 1337.000>'\n                ]\n        )\n\n    def test_filter_not_equals_other_field(self):\n        \"\"\"\n        We can filter for objects, where a value is not equals the value\n        of an other field.\n        \"\"\"\n        self.assertEqual(\n            Number.objects.filter(integer__gt=0)\n                  .update(integer=F('integer') + 1),\n            2)\n        self.assertQuerysetEqual(\n                Number.objects.exclude(float=F('integer')),\n                [\n                    '<Number: 43, 42.000>',\n                    '<Number: 1338, 1337.000>'\n                ]\n        )\n\n    def test_complex_expressions(self):\n        \"\"\"\n        Complex expressions of different connection types are possible.\n        \"\"\"\n        n = Number.objects.create(integer=10, float=123.45)\n        self.assertEqual(Number.objects.filter(pk=n.pk)\n                                .update(float=F('integer') + F('float') * 2),\n                          1)\n\n        self.assertEqual(Number.objects.get(pk=n.pk).integer, 10)\n        self.assertEqual(Number.objects.get(pk=n.pk).float, Approximate(256.900, places=3))\n\nclass ExpressionOperatorTests(TestCase):\n    def setUp(self):\n        self.n = Number.objects.create(integer=42, float=15.5)\n\n    def test_lefthand_addition(self):\n        # LH Addition of floats and integers\n        Number.objects.filter(pk=self.n.pk).update(\n            integer=F('integer') + 15,\n            float=F('float') + 42.7\n        )\n\n        self.assertEqual(Number.objects.get(pk=self.n.pk).integer, 57)\n        self.assertEqual(Number.objects.get(pk=self.n.pk).float, Approximate(58.200, places=3))\n\n    def test_lefthand_subtraction(self):\n        # LH Subtraction of floats and integers\n        Number.objects.filter(pk=self.n.pk).update(integer=F('integer') - 15,\n                                              float=F('float') - 42.7)\n\n        self.assertEqual(Number.objects.get(pk=self.n.pk).integer, 27)\n        self.assertEqual(Number.objects.get(pk=self.n.pk).float, Approximate(-27.200, places=3))\n\n    def test_lefthand_multiplication(self):\n        # Multiplication of floats and integers\n        Number.objects.filter(pk=self.n.pk).update(integer=F('integer') * 15,\n                                              float=F('float') * 42.7)\n\n        self.assertEqual(Number.objects.get(pk=self.n.pk).integer, 630)\n        self.assertEqual(Number.objects.get(pk=self.n.pk).float, Approximate(661.850, places=3))\n\n    def test_lefthand_division(self):\n        # LH Division of floats and integers\n        Number.objects.filter(pk=self.n.pk).update(integer=F('integer') / 2,\n                                              float=F('float') / 42.7)\n\n        self.assertEqual(Number.objects.get(pk=self.n.pk).integer, 21)\n        self.assertEqual(Number.objects.get(pk=self.n.pk).float, Approximate(0.363, places=3))\n\n    def test_lefthand_modulo(self):\n        # LH Modulo arithmetic on integers\n        Number.objects.filter(pk=self.n.pk).update(integer=F('integer') % 20)\n\n        self.assertEqual(Number.objects.get(pk=self.n.pk).integer, 2)\n        self.assertEqual(Number.objects.get(pk=self.n.pk).float, Approximate(15.500, places=3))\n\n    def test_lefthand_bitwise_and(self):\n        # LH Bitwise ands on integers\n        Number.objects.filter(pk=self.n.pk).update(integer=F('integer').bitand(56))\n\n        self.assertEqual(Number.objects.get(pk=self.n.pk).integer, 40)\n        self.assertEqual(Number.objects.get(pk=self.n.pk).float, Approximate(15.500, places=3))\n\n    @skipUnlessDBFeature('supports_bitwise_or')\n    def test_lefthand_bitwise_or(self):\n        # LH Bitwise or on integers\n        Number.objects.filter(pk=self.n.pk).update(integer=F('integer').bitor(48))\n\n        self.assertEqual(Number.objects.get(pk=self.n.pk).integer, 58)\n        self.assertEqual(Number.objects.get(pk=self.n.pk).float, Approximate(15.500, places=3))\n\n    def test_right_hand_addition(self):\n        # Right hand operators\n        Number.objects.filter(pk=self.n.pk).update(integer=15 + F('integer'),\n                                              float=42.7 + F('float'))\n\n        # RH Addition of floats and integers\n        self.assertEqual(Number.objects.get(pk=self.n.pk).integer, 57)\n        self.assertEqual(Number.objects.get(pk=self.n.pk).float, Approximate(58.200, places=3))\n\n    def test_right_hand_subtraction(self):\n        Number.objects.filter(pk=self.n.pk).update(integer=15 - F('integer'),\n                                              float=42.7 - F('float'))\n\n        # RH Subtraction of floats and integers\n        self.assertEqual(Number.objects.get(pk=self.n.pk).integer, -27)\n        self.assertEqual(Number.objects.get(pk=self.n.pk).float, Approximate(27.200, places=3))\n\n    def test_right_hand_multiplication(self):\n        # RH Multiplication of floats and integers\n        Number.objects.filter(pk=self.n.pk).update(integer=15 * F('integer'),\n                                              float=42.7 * F('float'))\n\n        self.assertEqual(Number.objects.get(pk=self.n.pk).integer, 630)\n        self.assertEqual(Number.objects.get(pk=self.n.pk).float, Approximate(661.850, places=3))\n\n    def test_right_hand_division(self):\n        # RH Division of floats and integers\n        Number.objects.filter(pk=self.n.pk).update(integer=640 / F('integer'),\n                                              float=42.7 / F('float'))\n\n        self.assertEqual(Number.objects.get(pk=self.n.pk).integer, 15)\n        self.assertEqual(Number.objects.get(pk=self.n.pk).float, Approximate(2.755, places=3))\n\n    def test_right_hand_modulo(self):\n        # RH Modulo arithmetic on integers\n        Number.objects.filter(pk=self.n.pk).update(integer=69 % F('integer'))\n\n        self.assertEqual(Number.objects.get(pk=self.n.pk).integer, 27)\n        self.assertEqual(Number.objects.get(pk=self.n.pk).float, Approximate(15.500, places=3))\n\n\nclass FTimeDeltaTests(TestCase):\n\n    def setUp(self):\n        sday = datetime.date(2010, 6, 25)\n        stime = datetime.datetime(2010, 6, 25, 12, 15, 30, 747000)\n        midnight = datetime.time(0)\n\n        delta0 = datetime.timedelta(0)\n        delta1 = datetime.timedelta(microseconds=253000)\n        delta2 = datetime.timedelta(seconds=44)\n        delta3 = datetime.timedelta(hours=21, minutes=8)\n        delta4 = datetime.timedelta(days=10)\n\n        # Test data is set so that deltas and delays will be\n        # strictly increasing.\n        self.deltas = []\n        self.delays = []\n        self.days_long = []\n\n        # e0: started same day as assigned, zero duration\n        end = stime+delta0\n        e0 = Experiment.objects.create(name='e0', assigned=sday, start=stime,\n            end=end, completed=end.date())\n        self.deltas.append(delta0)\n        self.delays.append(e0.start-\n            datetime.datetime.combine(e0.assigned, midnight))\n        self.days_long.append(e0.completed-e0.assigned)\n\n        # e1: started one day after assigned, tiny duration, data\n        # set so that end time has no fractional seconds, which\n        # tests an edge case on sqlite. This Experiment is only\n        # included in the test data when the DB supports microsecond\n        # precision.\n        if connection.features.supports_microsecond_precision:\n            delay = datetime.timedelta(1)\n            end = stime + delay + delta1\n            e1 = Experiment.objects.create(name='e1', assigned=sday,\n                start=stime+delay, end=end, completed=end.date())\n            self.deltas.append(delta1)\n            self.delays.append(e1.start-\n                datetime.datetime.combine(e1.assigned, midnight))\n            self.days_long.append(e1.completed-e1.assigned)\n\n        # e2: started three days after assigned, small duration\n        end = stime+delta2\n        e2 = Experiment.objects.create(name='e2',\n            assigned=sday-datetime.timedelta(3), start=stime, end=end,\n            completed=end.date())\n        self.deltas.append(delta2)\n        self.delays.append(e2.start-\n            datetime.datetime.combine(e2.assigned, midnight))\n        self.days_long.append(e2.completed-e2.assigned)\n\n        # e3: started four days after assigned, medium duration\n        delay = datetime.timedelta(4)\n        end = stime + delay + delta3\n        e3 = Experiment.objects.create(name='e3',\n            assigned=sday, start=stime+delay, end=end, completed=end.date())\n        self.deltas.append(delta3)\n        self.delays.append(e3.start-\n            datetime.datetime.combine(e3.assigned, midnight))\n        self.days_long.append(e3.completed-e3.assigned)\n\n        # e4: started 10 days after assignment, long duration\n        end = stime + delta4\n        e4 = Experiment.objects.create(name='e4',\n            assigned=sday-datetime.timedelta(10), start=stime, end=end,\n            completed=end.date())\n        self.deltas.append(delta4)\n        self.delays.append(e4.start-\n            datetime.datetime.combine(e4.assigned, midnight))\n        self.days_long.append(e4.completed-e4.assigned)\n        self.expnames = [e.name for e in Experiment.objects.all()]\n\n    def test_delta_add(self):\n        for i in range(len(self.deltas)):\n            delta = self.deltas[i]\n            test_set = [e.name for e in\n                Experiment.objects.filter(end__lt=F('start')+delta)]\n            self.assertEqual(test_set, self.expnames[:i])\n\n            test_set = [e.name for e in\n                Experiment.objects.filter(end__lte=F('start')+delta)]\n            self.assertEqual(test_set, self.expnames[:i+1])\n\n    def test_delta_subtract(self):\n        for i in range(len(self.deltas)):\n            delta = self.deltas[i]\n            test_set = [e.name for e in\n                Experiment.objects.filter(start__gt=F('end')-delta)]\n            self.assertEqual(test_set, self.expnames[:i])\n\n            test_set = [e.name for e in\n                Experiment.objects.filter(start__gte=F('end')-delta)]\n            self.assertEqual(test_set, self.expnames[:i+1])\n\n    def test_exclude(self):\n        for i in range(len(self.deltas)):\n            delta = self.deltas[i]\n            test_set = [e.name for e in\n                Experiment.objects.exclude(end__lt=F('start')+delta)]\n            self.assertEqual(test_set, self.expnames[i:])\n\n            test_set = [e.name for e in\n                Experiment.objects.exclude(end__lte=F('start')+delta)]\n            self.assertEqual(test_set, self.expnames[i+1:])\n\n    def test_date_comparison(self):\n        for i in range(len(self.days_long)):\n            days = self.days_long[i]\n            test_set = [e.name for e in\n                Experiment.objects.filter(completed__lt=F('assigned')+days)]\n            self.assertEqual(test_set, self.expnames[:i])\n\n            test_set = [e.name for e in\n                Experiment.objects.filter(completed__lte=F('assigned')+days)]\n            self.assertEqual(test_set, self.expnames[:i+1])\n\n    @skipUnlessDBFeature(\"supports_mixed_date_datetime_comparisons\")\n    def test_mixed_comparisons1(self):\n        for i in range(len(self.delays)):\n            delay = self.delays[i]\n            if not connection.features.supports_microsecond_precision:\n                delay = datetime.timedelta(delay.days, delay.seconds)\n            test_set = [e.name for e in\n                Experiment.objects.filter(assigned__gt=F('start')-delay)]\n            self.assertEqual(test_set, self.expnames[:i])\n\n            test_set = [e.name for e in\n                Experiment.objects.filter(assigned__gte=F('start')-delay)]\n            self.assertEqual(test_set, self.expnames[:i+1])\n\n    def test_mixed_comparisons2(self):\n        delays = [datetime.timedelta(delay.days) for delay in self.delays]\n        for i in range(len(delays)):\n            delay = delays[i]\n            test_set = [e.name for e in\n                Experiment.objects.filter(start__lt=F('assigned')+delay)]\n            self.assertEqual(test_set, self.expnames[:i])\n\n            test_set = [e.name for e in\n                Experiment.objects.filter(start__lte=F('assigned')+delay+\n                    datetime.timedelta(1))]\n            self.assertEqual(test_set, self.expnames[:i+1])\n\n    def test_delta_update(self):\n        for i in range(len(self.deltas)):\n            delta = self.deltas[i]\n            exps = Experiment.objects.all()\n            expected_durations = [e.duration() for e in exps]\n            expected_starts = [e.start+delta for e in exps]\n            expected_ends = [e.end+delta for e in exps]\n\n            Experiment.objects.update(start=F('start')+delta, end=F('end')+delta)\n            exps = Experiment.objects.all()\n            new_starts = [e.start for e in exps]\n            new_ends = [e.end for e in exps]\n            new_durations = [e.duration() for e in exps]\n            self.assertEqual(expected_starts, new_starts)\n            self.assertEqual(expected_ends, new_ends)\n            self.assertEqual(expected_durations, new_durations)\n\n    def test_delta_invalid_op_mult(self):\n        raised = False\n        try:\n            r = repr(Experiment.objects.filter(end__lt=F('start')*self.deltas[0]))\n        except TypeError:\n            raised = True\n        self.assertTrue(raised, \"TypeError not raised on attempt to multiply datetime by timedelta.\")\n\n    def test_delta_invalid_op_div(self):\n        raised = False\n        try:\n            r = repr(Experiment.objects.filter(end__lt=F('start')/self.deltas[0]))\n        except TypeError:\n            raised = True\n        self.assertTrue(raised, \"TypeError not raised on attempt to divide datetime by timedelta.\")\n\n    def test_delta_invalid_op_mod(self):\n        raised = False\n        try:\n            r = repr(Experiment.objects.filter(end__lt=F('start')%self.deltas[0]))\n        except TypeError:\n            raised = True\n        self.assertTrue(raised, \"TypeError not raised on attempt to modulo divide datetime by timedelta.\")\n\n    def test_delta_invalid_op_and(self):\n        raised = False\n        try:\n            r = repr(Experiment.objects.filter(end__lt=F('start').bitand(self.deltas[0])))\n        except TypeError:\n            raised = True\n        self.assertTrue(raised, \"TypeError not raised on attempt to binary and a datetime with a timedelta.\")\n\n    def test_delta_invalid_op_or(self):\n        raised = False\n        try:\n            r = repr(Experiment.objects.filter(end__lt=F('start').bitor(self.deltas[0])))\n        except TypeError:\n            raised = True\n        self.assertTrue(raised, \"TypeError not raised on attempt to binary or a datetime with a timedelta.\")\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/extra_regress/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/extra_regress/models.py",
    "content": "from __future__ import unicode_literals\n\nimport copy\nimport datetime\n\nfrom django.contrib.auth.models import User\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n@python_2_unicode_compatible\nclass RevisionableModel(models.Model):\n    base = models.ForeignKey('self', null=True)\n    title = models.CharField(blank=True, max_length=255)\n    when = models.DateTimeField(default=datetime.datetime.now)\n\n    def __str__(self):\n        return \"%s (%s, %s)\" % (self.title, self.id, self.base.id)\n\n    def save(self, *args, **kwargs):\n        super(RevisionableModel, self).save(*args, **kwargs)\n        if not self.base:\n            self.base = self\n            kwargs.pop('force_insert', None)\n            kwargs.pop('force_update', None)\n            super(RevisionableModel, self).save(*args, **kwargs)\n\n    def new_revision(self):\n        new_revision = copy.copy(self)\n        new_revision.pk = None\n        return new_revision\n\nclass Order(models.Model):\n    created_by = models.ForeignKey(User)\n    text = models.TextField()\n\n@python_2_unicode_compatible\nclass TestObject(models.Model):\n    first = models.CharField(max_length=20)\n    second = models.CharField(max_length=20)\n    third = models.CharField(max_length=20)\n\n    def __str__(self):\n        return 'TestObject: %s,%s,%s' % (self.first,self.second,self.third)\n\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/extra_regress/tests.py",
    "content": "from __future__ import absolute_import, unicode_literals\n\nimport datetime\n\nfrom django.contrib.auth.models import User\nfrom django.test import TestCase\nfrom django.utils.datastructures import SortedDict\n\nfrom .models import TestObject, Order, RevisionableModel\n\n\nclass ExtraRegressTests(TestCase):\n\n    def setUp(self):\n        self.u = User.objects.create_user(\n                    username=\"fred\",\n                    password=\"secret\",\n                    email=\"fred@example.com\"\n        )\n\n    def test_regression_7314_7372(self):\n        \"\"\"\n        Regression tests for #7314 and #7372\n        \"\"\"\n        rm = RevisionableModel.objects.create(\n            title='First Revision',\n            when=datetime.datetime(2008, 9, 28, 10, 30, 0)\n        )\n        self.assertEqual(rm.pk, rm.base.pk)\n\n        rm2 = rm.new_revision()\n        rm2.title = \"Second Revision\"\n        rm.when = datetime.datetime(2008, 9, 28, 14, 25, 0)\n        rm2.save()\n\n        self.assertEqual(rm2.title, 'Second Revision')\n        self.assertEqual(rm2.base.title, 'First Revision')\n\n        self.assertNotEqual(rm2.pk, rm.pk)\n        self.assertEqual(rm2.base.pk, rm.pk)\n\n        # Queryset to match most recent revision:\n        qs = RevisionableModel.objects.extra(\n                where=[\"%(table)s.id IN (SELECT MAX(rev.id) FROM %(table)s rev GROUP BY rev.base_id)\" % {\n                    'table': RevisionableModel._meta.db_table,\n                }]\n        )\n\n        self.assertQuerysetEqual(qs,\n            [('Second Revision', 'First Revision')],\n            transform=lambda r: (r.title, r.base.title)\n        )\n\n        # Queryset to search for string in title:\n        qs2 = RevisionableModel.objects.filter(title__contains=\"Revision\")\n        self.assertQuerysetEqual(qs2,\n            [\n                ('First Revision', 'First Revision'),\n                ('Second Revision', 'First Revision'),\n            ],\n            transform=lambda r: (r.title, r.base.title)\n        )\n\n        # Following queryset should return the most recent revision:\n        self.assertQuerysetEqual(qs & qs2,\n            [('Second Revision', 'First Revision')],\n            transform=lambda r: (r.title, r.base.title)\n        )\n\n    def test_extra_stay_tied(self):\n        # Extra select parameters should stay tied to their corresponding\n        # select portions. Applies when portions are updated or otherwise\n        # moved around.\n        qs = User.objects.extra(\n                    select=SortedDict(((\"alpha\", \"%s\"), (\"beta\", \"2\"),  (\"gamma\", \"%s\"))),\n                    select_params=(1, 3)\n        )\n        qs = qs.extra(select={\"beta\": 4})\n        qs = qs.extra(select={\"alpha\": \"%s\"}, select_params=[5])\n        self.assertEqual(\n            list(qs.filter(id=self.u.id).values('alpha', 'beta', 'gamma')),\n            [{'alpha': 5, 'beta': 4, 'gamma': 3}]\n        )\n\n    def test_regression_7957(self):\n        \"\"\"\n        Regression test for #7957: Combining extra() calls should leave the\n        corresponding parameters associated with the right extra() bit. I.e.\n        internal dictionary must remain sorted.\n        \"\"\"\n        self.assertEqual(\n            User.objects.extra(select={\"alpha\": \"%s\"}, select_params=(1,)\n                       ).extra(select={\"beta\": \"%s\"}, select_params=(2,))[0].alpha,\n            1)\n\n        self.assertEqual(\n            User.objects.extra(select={\"beta\": \"%s\"}, select_params=(1,)\n                       ).extra(select={\"alpha\": \"%s\"}, select_params=(2,))[0].alpha,\n            2)\n\n    def test_regression_7961(self):\n        \"\"\"\n        Regression test for #7961: When not using a portion of an\n        extra(...) in a query, remove any corresponding parameters from the\n        query as well.\n        \"\"\"\n        self.assertEqual(\n            list(User.objects.extra(select={\"alpha\": \"%s\"}, select_params=(-6,)\n                    ).filter(id=self.u.id).values_list('id', flat=True)),\n            [self.u.id]\n        )\n\n    def test_regression_8063(self):\n        \"\"\"\n        Regression test for #8063: limiting a query shouldn't discard any\n        extra() bits.\n        \"\"\"\n        qs = User.objects.all().extra(where=['id=%s'], params=[self.u.id])\n        self.assertQuerysetEqual(qs, ['<User: fred>'])\n        self.assertQuerysetEqual(qs[:1], ['<User: fred>'])\n\n    def test_regression_8039(self):\n        \"\"\"\n        Regression test for #8039: Ordering sometimes removed relevant tables\n        from extra(). This test is the critical case: ordering uses a table,\n        but then removes the reference because of an optimisation. The table\n        should still be present because of the extra() call.\n        \"\"\"\n        self.assertQuerysetEqual(\n                Order.objects.extra(where=[\"username=%s\"],\n                                    params=[\"fred\"],\n                                    tables=[\"auth_user\"]\n                            ).order_by('created_by'),\n                []\n        )\n\n    def test_regression_8819(self):\n        \"\"\"\n        Regression test for #8819: Fields in the extra(select=...) list\n        should be available to extra(order_by=...).\n        \"\"\"\n        self.assertQuerysetEqual(\n            User.objects.filter(pk=self.u.id).extra(select={'extra_field': 1}).distinct(),\n            ['<User: fred>']\n        )\n        self.assertQuerysetEqual(\n            User.objects.filter(pk=self.u.id).extra(select={'extra_field': 1}, order_by=['extra_field']),\n            ['<User: fred>']\n        )\n        self.assertQuerysetEqual(\n            User.objects.filter(pk=self.u.id).extra(select={'extra_field': 1}, order_by=['extra_field']).distinct(),\n            ['<User: fred>']\n        )\n\n    def test_dates_query(self):\n        \"\"\"\n        When calling the dates() method on a queryset with extra selection\n        columns, we can (and should) ignore those columns. They don't change\n        the result and cause incorrect SQL to be produced otherwise.\n        \"\"\"\n        rm = RevisionableModel.objects.create(\n            title='First Revision',\n            when=datetime.datetime(2008, 9, 28, 10, 30, 0)\n        )\n\n        self.assertQuerysetEqual(\n            RevisionableModel.objects.extra(select={\"the_answer\": 'id'}).dates('when', 'month'),\n            ['datetime.datetime(2008, 9, 1, 0, 0)']\n        )\n\n    def test_values_with_extra(self):\n        \"\"\"\n        Regression test for #10256... If there is a values() clause, Extra\n        columns are only returned if they are explicitly mentioned.\n        \"\"\"\n        obj = TestObject(first='first', second='second', third='third')\n        obj.save()\n\n        self.assertEqual(\n            list(TestObject.objects.extra(select=SortedDict((('foo','first'), ('bar','second'), ('whiz','third')))).values()),\n            [{'bar': 'second', 'third': 'third', 'second': 'second', 'whiz': 'third', 'foo': 'first', 'id': obj.pk, 'first': 'first'}]\n        )\n\n        # Extra clauses after an empty values clause are still included\n        self.assertEqual(\n            list(TestObject.objects.values().extra(select=SortedDict((('foo','first'), ('bar','second'), ('whiz','third'))))),\n            [{'bar': 'second', 'third': 'third', 'second': 'second', 'whiz': 'third', 'foo': 'first', 'id': obj.pk, 'first': 'first'}]\n        )\n\n        # Extra columns are ignored if not mentioned in the values() clause\n        self.assertEqual(\n            list(TestObject.objects.extra(select=SortedDict((('foo','first'), ('bar','second'), ('whiz','third')))).values('first', 'second')),\n            [{'second': 'second', 'first': 'first'}]\n        )\n\n        # Extra columns after a non-empty values() clause are ignored\n        self.assertEqual(\n            list(TestObject.objects.values('first', 'second').extra(select=SortedDict((('foo','first'), ('bar','second'), ('whiz','third'))))),\n            [{'second': 'second', 'first': 'first'}]\n        )\n\n        # Extra columns can be partially returned\n        self.assertEqual(\n            list(TestObject.objects.extra(select=SortedDict((('foo','first'), ('bar','second'), ('whiz','third')))).values('first', 'second', 'foo')),\n            [{'second': 'second', 'foo': 'first', 'first': 'first'}]\n        )\n\n        # Also works if only extra columns are included\n        self.assertEqual(\n            list(TestObject.objects.extra(select=SortedDict((('foo','first'), ('bar','second'), ('whiz','third')))).values('foo', 'whiz')),\n            [{'foo': 'first', 'whiz': 'third'}]\n        )\n\n        # Values list works the same way\n        # All columns are returned for an empty values_list()\n        self.assertEqual(\n            list(TestObject.objects.extra(select=SortedDict((('foo','first'), ('bar','second'), ('whiz','third')))).values_list()),\n            [('first', 'second', 'third', obj.pk, 'first', 'second', 'third')]\n        )\n\n        # Extra columns after an empty values_list() are still included\n        self.assertEqual(\n            list(TestObject.objects.values_list().extra(select=SortedDict((('foo','first'), ('bar','second'), ('whiz','third'))))),\n            [('first', 'second', 'third', obj.pk, 'first', 'second', 'third')]\n        )\n\n        # Extra columns ignored completely if not mentioned in values_list()\n        self.assertEqual(\n            list(TestObject.objects.extra(select=SortedDict((('foo','first'), ('bar','second'), ('whiz','third')))).values_list('first', 'second')),\n            [('first', 'second')]\n        )\n\n        # Extra columns after a non-empty values_list() clause are ignored completely\n        self.assertEqual(\n            list(TestObject.objects.values_list('first', 'second').extra(select=SortedDict((('foo','first'), ('bar','second'), ('whiz','third'))))),\n            [('first', 'second')]\n        )\n\n        self.assertEqual(\n            list(TestObject.objects.extra(select=SortedDict((('foo','first'), ('bar','second'), ('whiz','third')))).values_list('second', flat=True)),\n            ['second']\n        )\n\n        # Only the extra columns specified in the values_list() are returned\n        self.assertEqual(\n            list(TestObject.objects.extra(select=SortedDict((('foo','first'), ('bar','second'), ('whiz','third')))).values_list('first', 'second', 'whiz')),\n            [('first', 'second', 'third')]\n        )\n\n        # ...also works if only extra columns are included\n        self.assertEqual(\n            list(TestObject.objects.extra(select=SortedDict((('foo','first'), ('bar','second'), ('whiz','third')))).values_list('foo','whiz')),\n            [('first', 'third')]\n        )\n\n        self.assertEqual(\n            list(TestObject.objects.extra(select=SortedDict((('foo','first'), ('bar','second'), ('whiz','third')))).values_list('whiz', flat=True)),\n            ['third']\n        )\n\n        # ... and values are returned in the order they are specified\n        self.assertEqual(\n            list(TestObject.objects.extra(select=SortedDict((('foo','first'), ('bar','second'), ('whiz','third')))).values_list('whiz','foo')),\n            [('third', 'first')]\n        )\n\n        self.assertEqual(\n            list(TestObject.objects.extra(select=SortedDict((('foo','first'), ('bar','second'), ('whiz','third')))).values_list('first','id')),\n            [('first', obj.pk)]\n        )\n\n        self.assertEqual(\n            list(TestObject.objects.extra(select=SortedDict((('foo','first'), ('bar','second'), ('whiz','third')))).values_list('whiz', 'first', 'bar', 'id')),\n            [('third', 'first', 'second', obj.pk)]\n        )\n\n    def test_regression_10847(self):\n        \"\"\"\n        Regression for #10847: the list of extra columns can always be\n        accurately evaluated. Using an inner query ensures that as_sql() is\n        producing correct output without requiring full evaluation and\n        execution of the inner query.\n        \"\"\"\n        obj = TestObject(first='first', second='second', third='third')\n        obj.save()\n\n        self.assertEqual(\n            list(TestObject.objects.extra(select={'extra': 1}).values('pk')),\n            [{'pk': obj.pk}]\n        )\n\n        self.assertQuerysetEqual(\n            TestObject.objects.filter(\n                    pk__in=TestObject.objects.extra(select={'extra': 1}).values('pk')\n            ),\n            ['<TestObject: TestObject: first,second,third>']\n        )\n\n        self.assertEqual(\n            list(TestObject.objects.values('pk').extra(select={'extra': 1})),\n            [{'pk': obj.pk}]\n        )\n\n        self.assertQuerysetEqual(\n            TestObject.objects.filter(\n                 pk__in=TestObject.objects.values('pk').extra(select={'extra': 1})\n            ),\n            ['<TestObject: TestObject: first,second,third>']\n        )\n\n        self.assertQuerysetEqual(\n            TestObject.objects.filter(pk=obj.pk) |\n               TestObject.objects.extra(where=[\"id > %s\"], params=[obj.pk]),\n            ['<TestObject: TestObject: first,second,third>']\n        )\n\n    def test_regression_17877(self):\n        \"\"\"\n        Ensure that extra WHERE clauses get correctly ANDed, even when they\n        contain OR operations.\n        \"\"\"\n        # Test Case 1: should appear in queryset.\n        t = TestObject(first='a', second='a', third='a')\n        t.save()\n        # Test Case 2: should appear in queryset.\n        t = TestObject(first='b', second='a', third='a')\n        t.save()\n        # Test Case 3: should not appear in queryset, bug case.\n        t = TestObject(first='a', second='a', third='b')\n        t.save()\n        # Test Case 4: should not appear in queryset.\n        t = TestObject(first='b', second='a', third='b')\n        t.save()\n        # Test Case 5: should not appear in queryset.\n        t = TestObject(first='b', second='b', third='a')\n        t.save()\n        # Test Case 6: should not appear in queryset, bug case.\n        t = TestObject(first='a', second='b', third='b')\n        t.save()\n\n        self.assertQuerysetEqual(\n            TestObject.objects.extra(\n                where=[\"first = 'a' OR second = 'a'\", \"third = 'a'\"],\n            ),\n            ['<TestObject: TestObject: a,a,a>', '<TestObject: TestObject: b,a,a>']\n        )\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/file_storage/__init__.py",
    "content": "\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/file_storage/models.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/file_storage/tests.py",
    "content": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import, unicode_literals\n\nimport errno\nimport os\nimport shutil\nimport sys\nimport tempfile\nimport time\nfrom datetime import datetime, timedelta\nfrom io import BytesIO\n\ntry:\n    import threading\nexcept ImportError:\n    import dummy_threading as threading\n\nfrom django.conf import settings\nfrom django.core.exceptions import SuspiciousOperation, ImproperlyConfigured\nfrom django.core.files.base import File, ContentFile\nfrom django.core.files.images import get_image_dimensions\nfrom django.core.files.storage import FileSystemStorage, get_storage_class\nfrom django.core.files.uploadedfile import UploadedFile\nfrom django.test import SimpleTestCase\nfrom django.utils import six\nfrom django.utils import unittest\nfrom django.utils._os import upath\nfrom django.test.utils import override_settings\nfrom ..servers.tests import LiveServerBase\n\n# Try to import PIL in either of the two ways it can end up installed.\n# Checking for the existence of Image is enough for CPython, but\n# for PyPy, you need to check for the underlying modules\ntry:\n    from PIL import Image, _imaging\nexcept ImportError:\n    try:\n        import Image, _imaging\n    except ImportError:\n        Image = None\n\n\nclass GetStorageClassTests(SimpleTestCase):\n\n    def test_get_filesystem_storage(self):\n        \"\"\"\n        get_storage_class returns the class for a storage backend name/path.\n        \"\"\"\n        self.assertEqual(\n            get_storage_class('django.core.files.storage.FileSystemStorage'),\n            FileSystemStorage)\n\n    def test_get_invalid_storage_module(self):\n        \"\"\"\n        get_storage_class raises an error if the requested import don't exist.\n        \"\"\"\n        self.assertRaisesMessage(\n            ImproperlyConfigured,\n            \"NonExistingStorage isn't a storage module.\",\n            get_storage_class,\n            'NonExistingStorage')\n\n    def test_get_nonexisting_storage_class(self):\n        \"\"\"\n        get_storage_class raises an error if the requested class don't exist.\n        \"\"\"\n        self.assertRaisesMessage(\n            ImproperlyConfigured,\n            'Storage module \"django.core.files.storage\" does not define a '\\\n                '\"NonExistingStorage\" class.',\n            get_storage_class,\n            'django.core.files.storage.NonExistingStorage')\n\n    def test_get_nonexisting_storage_module(self):\n        \"\"\"\n        get_storage_class raises an error if the requested module don't exist.\n        \"\"\"\n        # Error message may or may not be the fully qualified path.\n        six.assertRaisesRegex(self,\n            ImproperlyConfigured,\n            ('Error importing storage module django.core.files.non_existing_'\n                'storage: \"No module named .*non_existing_storage'),\n            get_storage_class,\n            'django.core.files.non_existing_storage.NonExistingStorage'\n        )\n\nclass FileStorageTests(unittest.TestCase):\n    storage_class = FileSystemStorage\n\n    def setUp(self):\n        self.temp_dir = tempfile.mkdtemp()\n        self.storage = self.storage_class(location=self.temp_dir,\n            base_url='/test_media_url/')\n        # Set up a second temporary directory which is ensured to have a mixed\n        # case name.\n        self.temp_dir2 = tempfile.mkdtemp(suffix='aBc')\n\n    def tearDown(self):\n        shutil.rmtree(self.temp_dir)\n        shutil.rmtree(self.temp_dir2)\n\n    def test_emtpy_location(self):\n        \"\"\"\n        Makes sure an exception is raised if the location is empty\n        \"\"\"\n        storage = self.storage_class(location='')\n        self.assertEqual(storage.base_location, '')\n        self.assertEqual(storage.location, upath(os.getcwd()))\n\n    def test_file_access_options(self):\n        \"\"\"\n        Standard file access options are available, and work as expected.\n        \"\"\"\n        self.assertFalse(self.storage.exists('storage_test'))\n        f = self.storage.open('storage_test', 'w')\n        f.write('storage contents')\n        f.close()\n        self.assertTrue(self.storage.exists('storage_test'))\n\n        f = self.storage.open('storage_test', 'r')\n        self.assertEqual(f.read(), 'storage contents')\n        f.close()\n\n        self.storage.delete('storage_test')\n        self.assertFalse(self.storage.exists('storage_test'))\n\n    def test_file_accessed_time(self):\n        \"\"\"\n        File storage returns a Datetime object for the last accessed time of\n        a file.\n        \"\"\"\n        self.assertFalse(self.storage.exists('test.file'))\n\n        f = ContentFile('custom contents')\n        f_name = self.storage.save('test.file', f)\n        atime = self.storage.accessed_time(f_name)\n\n        self.assertEqual(atime, datetime.fromtimestamp(\n            os.path.getatime(self.storage.path(f_name))))\n        self.assertTrue(datetime.now() - self.storage.accessed_time(f_name) < timedelta(seconds=2))\n        self.storage.delete(f_name)\n\n    def test_file_created_time(self):\n        \"\"\"\n        File storage returns a Datetime object for the creation time of\n        a file.\n        \"\"\"\n        self.assertFalse(self.storage.exists('test.file'))\n\n        f = ContentFile('custom contents')\n        f_name = self.storage.save('test.file', f)\n        ctime = self.storage.created_time(f_name)\n\n        self.assertEqual(ctime, datetime.fromtimestamp(\n            os.path.getctime(self.storage.path(f_name))))\n        self.assertTrue(datetime.now() - self.storage.created_time(f_name) < timedelta(seconds=2))\n\n        self.storage.delete(f_name)\n\n    def test_file_modified_time(self):\n        \"\"\"\n        File storage returns a Datetime object for the last modified time of\n        a file.\n        \"\"\"\n        self.assertFalse(self.storage.exists('test.file'))\n\n        f = ContentFile('custom contents')\n        f_name = self.storage.save('test.file', f)\n        mtime = self.storage.modified_time(f_name)\n\n        self.assertEqual(mtime, datetime.fromtimestamp(\n            os.path.getmtime(self.storage.path(f_name))))\n        self.assertTrue(datetime.now() - self.storage.modified_time(f_name) < timedelta(seconds=2))\n\n        self.storage.delete(f_name)\n\n    def test_file_save_without_name(self):\n        \"\"\"\n        File storage extracts the filename from the content object if no\n        name is given explicitly.\n        \"\"\"\n        self.assertFalse(self.storage.exists('test.file'))\n\n        f = ContentFile('custom contents')\n        f.name = 'test.file'\n\n        storage_f_name = self.storage.save(None, f)\n\n        self.assertEqual(storage_f_name, f.name)\n\n        self.assertTrue(os.path.exists(os.path.join(self.temp_dir, f.name)))\n\n        self.storage.delete(storage_f_name)\n\n    def test_file_save_with_path(self):\n        \"\"\"\n        Saving a pathname should create intermediate directories as necessary.\n        \"\"\"\n        self.assertFalse(self.storage.exists('path/to'))\n        self.storage.save('path/to/test.file',\n            ContentFile('file saved with path'))\n\n        self.assertTrue(self.storage.exists('path/to'))\n        with self.storage.open('path/to/test.file') as f:\n            self.assertEqual(f.read(), b'file saved with path')\n\n        self.assertTrue(os.path.exists(\n            os.path.join(self.temp_dir, 'path', 'to', 'test.file')))\n\n        self.storage.delete('path/to/test.file')\n\n    def test_file_path(self):\n        \"\"\"\n        File storage returns the full path of a file\n        \"\"\"\n        self.assertFalse(self.storage.exists('test.file'))\n\n        f = ContentFile('custom contents')\n        f_name = self.storage.save('test.file', f)\n\n        self.assertEqual(self.storage.path(f_name),\n            os.path.join(self.temp_dir, f_name))\n\n        self.storage.delete(f_name)\n\n    def test_file_url(self):\n        \"\"\"\n        File storage returns a url to access a given file from the Web.\n        \"\"\"\n        self.assertEqual(self.storage.url('test.file'),\n            '%s%s' % (self.storage.base_url, 'test.file'))\n\n        # should encode special chars except ~!*()'\n        # like encodeURIComponent() JavaScript function do\n        self.assertEqual(self.storage.url(r\"\"\"~!*()'@#$%^&*abc`+ =.file\"\"\"),\n            \"\"\"/test_media_url/~!*()'%40%23%24%25%5E%26*abc%60%2B%20%3D.file\"\"\")\n\n        # should stanslate os path separator(s) to the url path separator\n        self.assertEqual(self.storage.url(\"\"\"a/b\\\\c.file\"\"\"),\n            \"\"\"/test_media_url/a/b/c.file\"\"\")\n\n        self.storage.base_url = None\n        self.assertRaises(ValueError, self.storage.url, 'test.file')\n\n    def test_listdir(self):\n        \"\"\"\n        File storage returns a tuple containing directories and files.\n        \"\"\"\n        self.assertFalse(self.storage.exists('storage_test_1'))\n        self.assertFalse(self.storage.exists('storage_test_2'))\n        self.assertFalse(self.storage.exists('storage_dir_1'))\n\n        f = self.storage.save('storage_test_1', ContentFile('custom content'))\n        f = self.storage.save('storage_test_2', ContentFile('custom content'))\n        os.mkdir(os.path.join(self.temp_dir, 'storage_dir_1'))\n\n        dirs, files = self.storage.listdir('')\n        self.assertEqual(set(dirs), set(['storage_dir_1']))\n        self.assertEqual(set(files),\n                         set(['storage_test_1', 'storage_test_2']))\n\n        self.storage.delete('storage_test_1')\n        self.storage.delete('storage_test_2')\n        os.rmdir(os.path.join(self.temp_dir, 'storage_dir_1'))\n\n    def test_file_storage_prevents_directory_traversal(self):\n        \"\"\"\n        File storage prevents directory traversal (files can only be accessed if\n        they're below the storage location).\n        \"\"\"\n        self.assertRaises(SuspiciousOperation, self.storage.exists, '..')\n        self.assertRaises(SuspiciousOperation, self.storage.exists, '/etc/passwd')\n\n    def test_file_storage_preserves_filename_case(self):\n        \"\"\"The storage backend should preserve case of filenames.\"\"\"\n        # Create a storage backend associated with the mixed case name\n        # directory.\n        temp_storage = self.storage_class(location=self.temp_dir2)\n        # Ask that storage backend to store a file with a mixed case filename.\n        mixed_case = 'CaSe_SeNsItIvE'\n        file = temp_storage.open(mixed_case, 'w')\n        file.write('storage contents')\n        file.close()\n        self.assertEqual(os.path.join(self.temp_dir2, mixed_case),\n                         temp_storage.path(mixed_case))\n        temp_storage.delete(mixed_case)\n\n    def test_makedirs_race_handling(self):\n        \"\"\"\n        File storage should be robust against directory creation race conditions.\n        \"\"\"\n        real_makedirs = os.makedirs\n\n        # Monkey-patch os.makedirs, to simulate a normal call, a raced call,\n        # and an error.\n        def fake_makedirs(path):\n            if path == os.path.join(self.temp_dir, 'normal'):\n                real_makedirs(path)\n            elif path == os.path.join(self.temp_dir, 'raced'):\n                real_makedirs(path)\n                raise OSError(errno.EEXIST, 'simulated EEXIST')\n            elif path == os.path.join(self.temp_dir, 'error'):\n                raise OSError(errno.EACCES, 'simulated EACCES')\n            else:\n                self.fail('unexpected argument %r' % path)\n\n        try:\n            os.makedirs = fake_makedirs\n\n            self.storage.save('normal/test.file',\n                ContentFile('saved normally'))\n            with self.storage.open('normal/test.file') as f:\n                self.assertEqual(f.read(), b'saved normally')\n\n            self.storage.save('raced/test.file',\n                ContentFile('saved with race'))\n            with self.storage.open('raced/test.file') as f:\n                self.assertEqual(f.read(), b'saved with race')\n\n            # Check that OSErrors aside from EEXIST are still raised.\n            self.assertRaises(OSError,\n                self.storage.save, 'error/test.file', ContentFile('not saved'))\n        finally:\n            os.makedirs = real_makedirs\n\n    def test_remove_race_handling(self):\n        \"\"\"\n        File storage should be robust against file removal race conditions.\n        \"\"\"\n        real_remove = os.remove\n\n        # Monkey-patch os.remove, to simulate a normal call, a raced call,\n        # and an error.\n        def fake_remove(path):\n            if path == os.path.join(self.temp_dir, 'normal.file'):\n                real_remove(path)\n            elif path == os.path.join(self.temp_dir, 'raced.file'):\n                real_remove(path)\n                raise OSError(errno.ENOENT, 'simulated ENOENT')\n            elif path == os.path.join(self.temp_dir, 'error.file'):\n                raise OSError(errno.EACCES, 'simulated EACCES')\n            else:\n                self.fail('unexpected argument %r' % path)\n\n        try:\n            os.remove = fake_remove\n\n            self.storage.save('normal.file', ContentFile('delete normally'))\n            self.storage.delete('normal.file')\n            self.assertFalse(self.storage.exists('normal.file'))\n\n            self.storage.save('raced.file', ContentFile('delete with race'))\n            self.storage.delete('raced.file')\n            self.assertFalse(self.storage.exists('normal.file'))\n\n            # Check that OSErrors aside from ENOENT are still raised.\n            self.storage.save('error.file', ContentFile('delete with error'))\n            self.assertRaises(OSError, self.storage.delete, 'error.file')\n        finally:\n            os.remove = real_remove\n\n    def test_file_chunks_error(self):\n        \"\"\"\n        Test behaviour when file.chunks() is raising an error\n        \"\"\"\n        f1 = ContentFile('chunks fails')\n        def failing_chunks():\n            raise IOError\n        f1.chunks = failing_chunks\n        with self.assertRaises(IOError):\n            self.storage.save('error.file', f1)\n\n\nclass CustomStorage(FileSystemStorage):\n    def get_available_name(self, name):\n        \"\"\"\n        Append numbers to duplicate files rather than underscores, like Trac.\n        \"\"\"\n        parts = name.split('.')\n        basename, ext = parts[0], parts[1:]\n        number = 2\n        while self.exists(name):\n            name = '.'.join([basename, str(number)] + ext)\n            number += 1\n\n        return name\n\nclass CustomStorageTests(FileStorageTests):\n    storage_class = CustomStorage\n\n    def test_custom_get_available_name(self):\n        first = self.storage.save('custom_storage', ContentFile('custom contents'))\n        self.assertEqual(first, 'custom_storage')\n        second = self.storage.save('custom_storage', ContentFile('more contents'))\n        self.assertEqual(second, 'custom_storage.2')\n        self.storage.delete(first)\n        self.storage.delete(second)\n\nclass UnicodeFileNameTests(unittest.TestCase):\n    def test_unicode_file_names(self):\n        \"\"\"\n        Regression test for #8156: files with unicode names I can't quite figure\n        out the encoding situation between doctest and this file, but the actual\n        repr doesn't matter; it just shouldn't return a unicode object.\n        \"\"\"\n        uf = UploadedFile(name='¿Cómo?',content_type='text')\n        self.assertEqual(type(uf.__repr__()), str)\n\n# Tests for a race condition on file saving (#4948).\n# This is written in such a way that it'll always pass on platforms\n# without threading.\n\nclass SlowFile(ContentFile):\n    def chunks(self):\n        time.sleep(1)\n        return super(ContentFile, self).chunks()\n\nclass FileSaveRaceConditionTest(unittest.TestCase):\n    def setUp(self):\n        self.storage_dir = tempfile.mkdtemp()\n        self.storage = FileSystemStorage(self.storage_dir)\n        self.thread = threading.Thread(target=self.save_file, args=['conflict'])\n\n    def tearDown(self):\n        shutil.rmtree(self.storage_dir)\n\n    def save_file(self, name):\n        name = self.storage.save(name, SlowFile(b\"Data\"))\n\n    def test_race_condition(self):\n        self.thread.start()\n        name = self.save_file('conflict')\n        self.thread.join()\n        self.assertTrue(self.storage.exists('conflict'))\n        self.assertTrue(self.storage.exists('conflict_1'))\n        self.storage.delete('conflict')\n        self.storage.delete('conflict_1')\n\n@unittest.skipIf(sys.platform.startswith('win'), \"Windows only partially supports umasks and chmod.\")\nclass FileStoragePermissions(unittest.TestCase):\n    def setUp(self):\n        self.umask = 0o027\n        self.old_umask = os.umask(self.umask)\n        self.storage_dir = tempfile.mkdtemp()\n        self.storage = FileSystemStorage(self.storage_dir)\n\n    def tearDown(self):\n        shutil.rmtree(self.storage_dir)\n        os.umask(self.old_umask)\n\n    @override_settings(FILE_UPLOAD_PERMISSIONS=0o654)\n    def test_file_upload_permissions(self):\n        name = self.storage.save(\"the_file\", ContentFile(\"data\"))\n        actual_mode = os.stat(self.storage.path(name))[0] & 0o777\n        self.assertEqual(actual_mode, 0o654)\n\n    @override_settings(FILE_UPLOAD_PERMISSIONS=None)\n    def test_file_upload_default_permissions(self):\n        fname = self.storage.save(\"some_file\", ContentFile(\"data\"))\n        mode = os.stat(self.storage.path(fname))[0] & 0o777\n        self.assertEqual(mode, 0o666 & ~self.umask)\n\nclass FileStoragePathParsing(unittest.TestCase):\n    def setUp(self):\n        self.storage_dir = tempfile.mkdtemp()\n        self.storage = FileSystemStorage(self.storage_dir)\n\n    def tearDown(self):\n        shutil.rmtree(self.storage_dir)\n\n    def test_directory_with_dot(self):\n        \"\"\"Regression test for #9610.\n\n        If the directory name contains a dot and the file name doesn't, make\n        sure we still mangle the file name instead of the directory name.\n        \"\"\"\n\n        self.storage.save('dotted.path/test', ContentFile(\"1\"))\n        self.storage.save('dotted.path/test', ContentFile(\"2\"))\n\n        self.assertFalse(os.path.exists(os.path.join(self.storage_dir, 'dotted_.path')))\n        self.assertTrue(os.path.exists(os.path.join(self.storage_dir, 'dotted.path/test')))\n        self.assertTrue(os.path.exists(os.path.join(self.storage_dir, 'dotted.path/test_1')))\n\n    def test_first_character_dot(self):\n        \"\"\"\n        File names with a dot as their first character don't have an extension,\n        and the underscore should get added to the end.\n        \"\"\"\n        self.storage.save('dotted.path/.test', ContentFile(\"1\"))\n        self.storage.save('dotted.path/.test', ContentFile(\"2\"))\n\n        self.assertTrue(os.path.exists(os.path.join(self.storage_dir, 'dotted.path/.test')))\n        self.assertTrue(os.path.exists(os.path.join(self.storage_dir, 'dotted.path/.test_1')))\n\nclass DimensionClosingBug(unittest.TestCase):\n    \"\"\"\n    Test that get_image_dimensions() properly closes files (#8817)\n    \"\"\"\n    @unittest.skipUnless(Image, \"PIL not installed\")\n    def test_not_closing_of_files(self):\n        \"\"\"\n        Open files passed into get_image_dimensions() should stay opened.\n        \"\"\"\n        empty_io = BytesIO()\n        try:\n            get_image_dimensions(empty_io)\n        finally:\n            self.assertTrue(not empty_io.closed)\n\n    @unittest.skipUnless(Image, \"PIL not installed\")\n    def test_closing_of_filenames(self):\n        \"\"\"\n        get_image_dimensions() called with a filename should closed the file.\n        \"\"\"\n        # We need to inject a modified open() builtin into the images module\n        # that checks if the file was closed properly if the function is\n        # called with a filename instead of an file object.\n        # get_image_dimensions will call our catching_open instead of the\n        # regular builtin one.\n\n        class FileWrapper(object):\n            _closed = []\n            def __init__(self, f):\n                self.f = f\n            def __getattr__(self, name):\n                return getattr(self.f, name)\n            def close(self):\n                self._closed.append(True)\n                self.f.close()\n\n        def catching_open(*args):\n            return FileWrapper(open(*args))\n\n        from django.core.files import images\n        images.open = catching_open\n        try:\n            get_image_dimensions(os.path.join(os.path.dirname(upath(__file__)), \"test1.png\"))\n        finally:\n            del images.open\n        self.assertTrue(FileWrapper._closed)\n\nclass InconsistentGetImageDimensionsBug(unittest.TestCase):\n    \"\"\"\n    Test that get_image_dimensions() works properly after various calls\n    using a file handler (#11158)\n    \"\"\"\n    @unittest.skipUnless(Image, \"PIL not installed\")\n    def test_multiple_calls(self):\n        \"\"\"\n        Multiple calls of get_image_dimensions() should return the same size.\n        \"\"\"\n        from django.core.files.images import ImageFile\n\n        img_path = os.path.join(os.path.dirname(upath(__file__)), \"test.png\")\n        image = ImageFile(open(img_path, 'rb'))\n        image_pil = Image.open(img_path)\n        size_1, size_2 = get_image_dimensions(image), get_image_dimensions(image)\n        self.assertEqual(image_pil.size, size_1)\n        self.assertEqual(size_1, size_2)\n\nclass ContentFileTestCase(unittest.TestCase):\n\n    def setUp(self):\n        self.storage_dir = tempfile.mkdtemp()\n        self.storage = FileSystemStorage(self.storage_dir)\n\n    def tearDown(self):\n        shutil.rmtree(self.storage_dir)\n\n    def test_content_file_default_name(self):\n        self.assertEqual(ContentFile(b\"content\").name, None)\n\n    def test_content_file_custom_name(self):\n        \"\"\"\n        Test that the constructor of ContentFile accepts 'name' (#16590).\n        \"\"\"\n        name = \"I can have a name too!\"\n        self.assertEqual(ContentFile(b\"content\", name=name).name, name)\n\n    def test_content_file_input_type(self):\n        \"\"\"\n        Test that ContentFile can accept both bytes and unicode and that the\n        retrieved content is of the same type.\n        \"\"\"\n        self.assertTrue(isinstance(ContentFile(b\"content\").read(), bytes))\n        if six.PY3:\n            self.assertTrue(isinstance(ContentFile(\"español\").read(), six.text_type))\n        else:\n            self.assertTrue(isinstance(ContentFile(\"español\").read(), bytes))\n\n    def test_content_saving(self):\n        \"\"\"\n        Test that ContentFile can be saved correctly with the filesystem storage,\n        both if it was initialized with string or unicode content\"\"\"\n        self.storage.save('bytes.txt', ContentFile(b\"content\"))\n        self.storage.save('unicode.txt', ContentFile(\"español\"))\n\n\nclass NoNameFileTestCase(unittest.TestCase):\n    \"\"\"\n    Other examples of unnamed files may be tempfile.SpooledTemporaryFile or\n    urllib.urlopen()\n    \"\"\"\n    def test_noname_file_default_name(self):\n        self.assertEqual(File(BytesIO(b'A file with no name')).name, None)\n\n    def test_noname_file_get_size(self):\n        self.assertEqual(File(BytesIO(b'A file with no name')).size, 19)\n\nclass FileLikeObjectTestCase(LiveServerBase):\n    \"\"\"\n    Test file-like objects (#15644).\n    \"\"\"\n    def setUp(self):\n        self.temp_dir = tempfile.mkdtemp()\n        self.storage = FileSystemStorage(location=self.temp_dir)\n\n    def tearDown(self):\n        shutil.rmtree(self.temp_dir)\n\n    def test_urllib2_urlopen(self):\n        \"\"\"\n        Test the File storage API with a file like object coming from urllib2.urlopen()\n        \"\"\"\n\n        file_like_object = self.urlopen('/example_view/')\n        f = File(file_like_object)\n        stored_filename = self.storage.save(\"remote_file.html\", f)\n\n        stored_file = self.storage.open(stored_filename)\n        remote_file = self.urlopen('/example_view/')\n\n        self.assertEqual(stored_file.read(), remote_file.read())\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/file_uploads/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/file_uploads/models.py",
    "content": "from django.db import models\n\n\nclass FileModel(models.Model):\n    testfile = models.FileField(upload_to='test_upload')\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/file_uploads/tests.py",
    "content": "#! -*- coding: utf-8 -*-\nfrom __future__ import absolute_import, unicode_literals\n\nimport base64\nimport errno\nimport hashlib\nimport json\nimport os\nimport shutil\nimport tempfile as sys_tempfile\n\nfrom django.core.files import temp as tempfile\nfrom django.core.files.uploadedfile import SimpleUploadedFile\nfrom django.http.multipartparser import MultiPartParser\nfrom django.test import TestCase, client\nfrom django.test.utils import override_settings\nfrom django.utils.encoding import force_bytes\nfrom django.utils.six import StringIO\nfrom django.utils import unittest\n\nfrom . import uploadhandler\nfrom .models import FileModel\n\n\nUNICODE_FILENAME = 'test-0123456789_中文_Orléans.jpg'\nMEDIA_ROOT = sys_tempfile.mkdtemp()\nUPLOAD_TO = os.path.join(MEDIA_ROOT, 'test_upload')\n\n@override_settings(MEDIA_ROOT=MEDIA_ROOT)\nclass FileUploadTests(TestCase):\n    @classmethod\n    def setUpClass(cls):\n        if not os.path.isdir(MEDIA_ROOT):\n            os.makedirs(MEDIA_ROOT)\n\n    @classmethod\n    def tearDownClass(cls):\n        shutil.rmtree(MEDIA_ROOT)\n\n    def test_simple_upload(self):\n        with open(__file__, 'rb') as fp:\n            post_data = {\n                'name': 'Ringo',\n                'file_field': fp,\n            }\n            response = self.client.post('/file_uploads/upload/', post_data)\n        self.assertEqual(response.status_code, 200)\n\n    def test_large_upload(self):\n        tdir = tempfile.gettempdir()\n\n        file1 = tempfile.NamedTemporaryFile(suffix=\".file1\", dir=tdir)\n        file1.write(b'a' * (2 ** 21))\n        file1.seek(0)\n\n        file2 = tempfile.NamedTemporaryFile(suffix=\".file2\", dir=tdir)\n        file2.write(b'a' * (10 * 2 ** 20))\n        file2.seek(0)\n\n        post_data = {\n            'name': 'Ringo',\n            'file_field1': file1,\n            'file_field2': file2,\n            }\n\n        for key in list(post_data):\n            try:\n                post_data[key + '_hash'] = hashlib.sha1(post_data[key].read()).hexdigest()\n                post_data[key].seek(0)\n            except AttributeError:\n                post_data[key + '_hash'] = hashlib.sha1(force_bytes(post_data[key])).hexdigest()\n\n        response = self.client.post('/file_uploads/verify/', post_data)\n\n        self.assertEqual(response.status_code, 200)\n\n    def _test_base64_upload(self, content):\n        payload = client.FakePayload(\"\\r\\n\".join([\n            '--' + client.BOUNDARY,\n            'Content-Disposition: form-data; name=\"file\"; filename=\"test.txt\"',\n            'Content-Type: application/octet-stream',\n            'Content-Transfer-Encoding: base64',\n            '',]))\n        payload.write(b\"\\r\\n\" + base64.b64encode(force_bytes(content)) + b\"\\r\\n\")\n        payload.write('--' + client.BOUNDARY + '--\\r\\n')\n        r = {\n            'CONTENT_LENGTH': len(payload),\n            'CONTENT_TYPE':   client.MULTIPART_CONTENT,\n            'PATH_INFO':      \"/file_uploads/echo_content/\",\n            'REQUEST_METHOD': 'POST',\n            'wsgi.input':     payload,\n        }\n        response = self.client.request(**r)\n        received = json.loads(response.content.decode('utf-8'))\n\n        self.assertEqual(received['file'], content)\n\n    def test_base64_upload(self):\n        self._test_base64_upload(\"This data will be transmitted base64-encoded.\")\n\n    def test_big_base64_upload(self):\n        self._test_base64_upload(\"Big data\" * 68000)  # > 512Kb\n\n    def test_unicode_file_name(self):\n        tdir = sys_tempfile.mkdtemp()\n        self.addCleanup(shutil.rmtree, tdir, True)\n\n        # This file contains chinese symbols and an accented char in the name.\n        with open(os.path.join(tdir, UNICODE_FILENAME), 'w+b') as file1:\n            file1.write(b'b' * (2 ** 10))\n            file1.seek(0)\n\n            post_data = {\n                'file_unicode': file1,\n                }\n\n            response = self.client.post('/file_uploads/unicode_name/', post_data)\n\n        self.assertEqual(response.status_code, 200)\n\n    def test_dangerous_file_names(self):\n        \"\"\"Uploaded file names should be sanitized before ever reaching the view.\"\"\"\n        # This test simulates possible directory traversal attacks by a\n        # malicious uploader We have to do some monkeybusiness here to construct\n        # a malicious payload with an invalid file name (containing os.sep or\n        # os.pardir). This similar to what an attacker would need to do when\n        # trying such an attack.\n        scary_file_names = [\n            \"/tmp/hax0rd.txt\",          # Absolute path, *nix-style.\n            \"C:\\\\Windows\\\\hax0rd.txt\",  # Absolute path, win-syle.\n            \"C:/Windows/hax0rd.txt\",    # Absolute path, broken-style.\n            \"\\\\tmp\\\\hax0rd.txt\",        # Absolute path, broken in a different way.\n            \"/tmp\\\\hax0rd.txt\",         # Absolute path, broken by mixing.\n            \"subdir/hax0rd.txt\",        # Descendant path, *nix-style.\n            \"subdir\\\\hax0rd.txt\",       # Descendant path, win-style.\n            \"sub/dir\\\\hax0rd.txt\",      # Descendant path, mixed.\n            \"../../hax0rd.txt\",         # Relative path, *nix-style.\n            \"..\\\\..\\\\hax0rd.txt\",       # Relative path, win-style.\n            \"../..\\\\hax0rd.txt\"         # Relative path, mixed.\n        ]\n\n        payload = client.FakePayload()\n        for i, name in enumerate(scary_file_names):\n            payload.write('\\r\\n'.join([\n                '--' + client.BOUNDARY,\n                'Content-Disposition: form-data; name=\"file%s\"; filename=\"%s\"' % (i, name),\n                'Content-Type: application/octet-stream',\n                '',\n                'You got pwnd.\\r\\n'\n            ]))\n        payload.write('\\r\\n--' + client.BOUNDARY + '--\\r\\n')\n\n        r = {\n            'CONTENT_LENGTH': len(payload),\n            'CONTENT_TYPE':   client.MULTIPART_CONTENT,\n            'PATH_INFO':      \"/file_uploads/echo/\",\n            'REQUEST_METHOD': 'POST',\n            'wsgi.input':     payload,\n        }\n        response = self.client.request(**r)\n\n        # The filenames should have been sanitized by the time it got to the view.\n        recieved = json.loads(response.content.decode('utf-8'))\n        for i, name in enumerate(scary_file_names):\n            got = recieved[\"file%s\" % i]\n            self.assertEqual(got, \"hax0rd.txt\")\n\n    def test_filename_overflow(self):\n        \"\"\"File names over 256 characters (dangerous on some platforms) get fixed up.\"\"\"\n        name = \"%s.txt\" % (\"f\"*500)\n        payload = client.FakePayload(\"\\r\\n\".join([\n            '--' + client.BOUNDARY,\n            'Content-Disposition: form-data; name=\"file\"; filename=\"%s\"' % name,\n            'Content-Type: application/octet-stream',\n            '',\n            'Oops.'\n            '--' + client.BOUNDARY + '--',\n            '',\n        ]))\n        r = {\n            'CONTENT_LENGTH': len(payload),\n            'CONTENT_TYPE':   client.MULTIPART_CONTENT,\n            'PATH_INFO':      \"/file_uploads/echo/\",\n            'REQUEST_METHOD': 'POST',\n            'wsgi.input':     payload,\n        }\n        got = json.loads(self.client.request(**r).content.decode('utf-8'))\n        self.assertTrue(len(got['file']) < 256, \"Got a long file name (%s characters).\" % len(got['file']))\n\n    def test_truncated_multipart_handled_gracefully(self):\n        \"\"\"\n        If passed an incomplete multipart message, MultiPartParser does not\n        attempt to read beyond the end of the stream, and simply will handle\n        the part that can be parsed gracefully.\n        \"\"\"\n        payload_str = \"\\r\\n\".join([\n            '--' + client.BOUNDARY,\n            'Content-Disposition: form-data; name=\"file\"; filename=\"foo.txt\"',\n            'Content-Type: application/octet-stream',\n            '',\n            'file contents'\n            '--' + client.BOUNDARY + '--',\n            '',\n        ])\n        payload = client.FakePayload(payload_str[:-10])\n        r = {\n            'CONTENT_LENGTH': len(payload),\n            'CONTENT_TYPE': client.MULTIPART_CONTENT,\n            'PATH_INFO': '/file_uploads/echo/',\n            'REQUEST_METHOD': 'POST',\n            'wsgi.input': payload,\n        }\n        got = json.loads(self.client.request(**r).content.decode('utf-8'))\n        self.assertEqual(got, {})\n\n    def test_empty_multipart_handled_gracefully(self):\n        \"\"\"\n        If passed an empty multipart message, MultiPartParser will return\n        an empty QueryDict.\n        \"\"\"\n        r = {\n            'CONTENT_LENGTH': 0,\n            'CONTENT_TYPE': client.MULTIPART_CONTENT,\n            'PATH_INFO': '/file_uploads/echo/',\n            'REQUEST_METHOD': 'POST',\n            'wsgi.input': client.FakePayload(b''),\n        }\n        got = json.loads(self.client.request(**r).content.decode('utf-8'))\n        self.assertEqual(got, {})\n\n    def test_custom_upload_handler(self):\n        # A small file (under the 5M quota)\n        smallfile = tempfile.NamedTemporaryFile()\n        smallfile.write(b'a' * (2 ** 21))\n        smallfile.seek(0)\n\n        # A big file (over the quota)\n        bigfile = tempfile.NamedTemporaryFile()\n        bigfile.write(b'a' * (10 * 2 ** 20))\n        bigfile.seek(0)\n\n        # Small file posting should work.\n        response = self.client.post('/file_uploads/quota/', {'f': smallfile})\n        got = json.loads(response.content.decode('utf-8'))\n        self.assertTrue('f' in got)\n\n        # Large files don't go through.\n        response = self.client.post(\"/file_uploads/quota/\", {'f': bigfile})\n        got = json.loads(response.content.decode('utf-8'))\n        self.assertTrue('f' not in got)\n\n    def test_broken_custom_upload_handler(self):\n        f = tempfile.NamedTemporaryFile()\n        f.write(b'a' * (2 ** 21))\n        f.seek(0)\n\n        # AttributeError: You cannot alter upload handlers after the upload has been processed.\n        self.assertRaises(\n            AttributeError,\n            self.client.post,\n            '/file_uploads/quota/broken/',\n            {'f': f}\n        )\n\n    def test_fileupload_getlist(self):\n        file1 = tempfile.NamedTemporaryFile()\n        file1.write(b'a' * (2 ** 23))\n        file1.seek(0)\n\n        file2 = tempfile.NamedTemporaryFile()\n        file2.write(b'a' * (2 * 2 ** 18))\n        file2.seek(0)\n\n        file2a = tempfile.NamedTemporaryFile()\n        file2a.write(b'a' * (5 * 2 ** 20))\n        file2a.seek(0)\n\n        response = self.client.post('/file_uploads/getlist_count/', {\n            'file1': file1,\n            'field1': 'test',\n            'field2': 'test3',\n            'field3': 'test5',\n            'field4': 'test6',\n            'field5': 'test7',\n            'file2': (file2, file2a)\n        })\n        got = json.loads(response.content.decode('utf-8'))\n\n        self.assertEqual(got.get('file1'), 1)\n        self.assertEqual(got.get('file2'), 2)\n\n    def test_file_error_blocking(self):\n        \"\"\"\n        The server should not block when there are upload errors (bug #8622).\n        This can happen if something -- i.e. an exception handler -- tries to\n        access POST while handling an error in parsing POST. This shouldn't\n        cause an infinite loop!\n        \"\"\"\n        class POSTAccessingHandler(client.ClientHandler):\n            \"\"\"A handler that'll access POST during an exception.\"\"\"\n            def handle_uncaught_exception(self, request, resolver, exc_info):\n                ret = super(POSTAccessingHandler, self).handle_uncaught_exception(request, resolver, exc_info)\n                p = request.POST\n                return ret\n\n        # Maybe this is a little more complicated that it needs to be; but if\n        # the django.test.client.FakePayload.read() implementation changes then\n        # this test would fail.  So we need to know exactly what kind of error\n        # it raises when there is an attempt to read more than the available bytes:\n        try:\n            client.FakePayload(b'a').read(2)\n        except Exception as err:\n            reference_error = err\n\n        # install the custom handler that tries to access request.POST\n        self.client.handler = POSTAccessingHandler()\n\n        with open(__file__, 'rb') as fp:\n            post_data = {\n                'name': 'Ringo',\n                'file_field': fp,\n            }\n            try:\n                response = self.client.post('/file_uploads/upload_errors/', post_data)\n            except reference_error.__class__ as err:\n                self.assertFalse(\n                    str(err) == str(reference_error),\n                    \"Caught a repeated exception that'll cause an infinite loop in file uploads.\"\n                )\n            except Exception as err:\n                # CustomUploadError is the error that should have been raised\n                self.assertEqual(err.__class__, uploadhandler.CustomUploadError)\n\n    def test_filename_case_preservation(self):\n        \"\"\"\n        The storage backend shouldn't mess with the case of the filenames\n        uploaded.\n        \"\"\"\n        # Synthesize the contents of a file upload with a mixed case filename\n        # so we don't have to carry such a file in the Django tests source code\n        # tree.\n        vars = {'boundary': 'oUrBoUnDaRyStRiNg'}\n        post_data = [\n            '--%(boundary)s',\n            'Content-Disposition: form-data; name=\"file_field\"; '\n                'filename=\"MiXeD_cAsE.txt\"',\n            'Content-Type: application/octet-stream',\n            '',\n            'file contents\\n'\n            '',\n            '--%(boundary)s--\\r\\n',\n        ]\n        response = self.client.post(\n            '/file_uploads/filename_case/',\n            '\\r\\n'.join(post_data) % vars,\n            'multipart/form-data; boundary=%(boundary)s' % vars\n        )\n        self.assertEqual(response.status_code, 200)\n        id = int(response.content)\n        obj = FileModel.objects.get(pk=id)\n        # The name of the file uploaded and the file stored in the server-side\n        # shouldn't differ.\n        self.assertEqual(os.path.basename(obj.testfile.path), 'MiXeD_cAsE.txt')\n\n@override_settings(MEDIA_ROOT=MEDIA_ROOT)\nclass DirectoryCreationTests(TestCase):\n    \"\"\"\n    Tests for error handling during directory creation\n    via _save_FIELD_file (ticket #6450)\n    \"\"\"\n    @classmethod\n    def setUpClass(cls):\n        if not os.path.isdir(MEDIA_ROOT):\n            os.makedirs(MEDIA_ROOT)\n\n    @classmethod\n    def tearDownClass(cls):\n        shutil.rmtree(MEDIA_ROOT)\n\n    def setUp(self):\n        self.obj = FileModel()\n\n    def test_readonly_root(self):\n        \"\"\"Permission errors are not swallowed\"\"\"\n        os.chmod(MEDIA_ROOT, 0o500)\n        self.addCleanup(os.chmod, MEDIA_ROOT, 0o700)\n        try:\n            self.obj.testfile.save('foo.txt', SimpleUploadedFile('foo.txt', b'x'))\n        except OSError as err:\n            self.assertEqual(err.errno, errno.EACCES)\n        except Exception:\n            self.fail(\"OSError [Errno %s] not raised.\" % errno.EACCES)\n\n    def test_not_a_directory(self):\n        \"\"\"The correct IOError is raised when the upload directory name exists but isn't a directory\"\"\"\n        # Create a file with the upload directory name\n        open(UPLOAD_TO, 'wb').close()\n        self.addCleanup(os.remove, UPLOAD_TO)\n        with self.assertRaises(IOError) as exc_info:\n            self.obj.testfile.save('foo.txt', SimpleUploadedFile('foo.txt', b'x'))\n        # The test needs to be done on a specific string as IOError\n        # is raised even without the patch (just not early enough)\n        self.assertEqual(exc_info.exception.args[0],\n                          \"%s exists and is not a directory.\" % UPLOAD_TO)\n\n\nclass MultiParserTests(unittest.TestCase):\n\n    def test_empty_upload_handlers(self):\n        # We're not actually parsing here; just checking if the parser properly\n        # instantiates with empty upload handlers.\n        parser = MultiPartParser({\n            'CONTENT_TYPE':     'multipart/form-data; boundary=_foo',\n            'CONTENT_LENGTH':   '1'\n        }, StringIO('x'), [], 'utf-8')\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/file_uploads/uploadhandler.py",
    "content": "\"\"\"\nUpload handlers to test the upload API.\n\"\"\"\n\nfrom django.core.files.uploadhandler import FileUploadHandler, StopUpload\n\n\nclass QuotaUploadHandler(FileUploadHandler):\n    \"\"\"\n    This test upload handler terminates the connection if more than a quota\n    (5MB) is uploaded.\n    \"\"\"\n\n    QUOTA = 5 * 2**20 # 5 MB\n\n    def __init__(self, request=None):\n        super(QuotaUploadHandler, self).__init__(request)\n        self.total_upload = 0\n\n    def receive_data_chunk(self, raw_data, start):\n        self.total_upload += len(raw_data)\n        if self.total_upload >= self.QUOTA:\n            raise StopUpload(connection_reset=True)\n        return raw_data\n\n    def file_complete(self, file_size):\n        return None\n\nclass CustomUploadError(Exception):\n    pass\n\nclass ErroringUploadHandler(FileUploadHandler):\n    \"\"\"A handler that raises an exception.\"\"\"\n    def receive_data_chunk(self, raw_data, start):\n        raise CustomUploadError(\"Oops!\")\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/file_uploads/urls.py",
    "content": "from __future__ import absolute_import\n\nfrom django.conf.urls import patterns\n\nfrom . import views\n\n\nurlpatterns = patterns('',\n    (r'^upload/$',          views.file_upload_view),\n    (r'^verify/$',          views.file_upload_view_verify),\n    (r'^unicode_name/$',    views.file_upload_unicode_name),\n    (r'^echo/$',            views.file_upload_echo),\n    (r'^echo_content/$',    views.file_upload_echo_content),\n    (r'^quota/$',           views.file_upload_quota),\n    (r'^quota/broken/$',    views.file_upload_quota_broken),\n    (r'^getlist_count/$',   views.file_upload_getlist_count),\n    (r'^upload_errors/$',   views.file_upload_errors),\n    (r'^filename_case/$',   views.file_upload_filename_case_view),\n)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/file_uploads/views.py",
    "content": "from __future__ import absolute_import, unicode_literals\n\nimport hashlib\nimport json\nimport os\n\nfrom django.core.files.uploadedfile import UploadedFile\nfrom django.http import HttpResponse, HttpResponseServerError\nfrom django.utils import six\nfrom django.utils.encoding import force_bytes\n\nfrom .models import FileModel\nfrom .tests import UNICODE_FILENAME, UPLOAD_TO\nfrom .uploadhandler import QuotaUploadHandler, ErroringUploadHandler\n\n\ndef file_upload_view(request):\n    \"\"\"\n    Check that a file upload can be updated into the POST dictionary without\n    going pear-shaped.\n    \"\"\"\n    form_data = request.POST.copy()\n    form_data.update(request.FILES)\n    if isinstance(form_data.get('file_field'), UploadedFile) and isinstance(form_data['name'], six.text_type):\n        # If a file is posted, the dummy client should only post the file name,\n        # not the full path.\n        if os.path.dirname(form_data['file_field'].name) != '':\n            return HttpResponseServerError()\n        return HttpResponse('')\n    else:\n        return HttpResponseServerError()\n\ndef file_upload_view_verify(request):\n    \"\"\"\n    Use the sha digest hash to verify the uploaded contents.\n    \"\"\"\n    form_data = request.POST.copy()\n    form_data.update(request.FILES)\n\n    for key, value in form_data.items():\n        if key.endswith('_hash'):\n            continue\n        if key + '_hash' not in form_data:\n            continue\n        submitted_hash = form_data[key + '_hash']\n        if isinstance(value, UploadedFile):\n            new_hash = hashlib.sha1(value.read()).hexdigest()\n        else:\n            new_hash = hashlib.sha1(force_bytes(value)).hexdigest()\n        if new_hash != submitted_hash:\n            return HttpResponseServerError()\n\n    # Adding large file to the database should succeed\n    largefile = request.FILES['file_field2']\n    obj = FileModel()\n    obj.testfile.save(largefile.name, largefile)\n\n    return HttpResponse('')\n\ndef file_upload_unicode_name(request):\n\n    # Check to see if unicode name came through properly.\n    if not request.FILES['file_unicode'].name.endswith(UNICODE_FILENAME):\n        return HttpResponseServerError()\n\n    response = None\n\n    # Check to make sure the exotic characters are preserved even\n    # through file save.\n    uni_named_file = request.FILES['file_unicode']\n    obj = FileModel.objects.create(testfile=uni_named_file)\n    full_name = '%s/%s' % (UPLOAD_TO, uni_named_file.name)\n    if not os.path.exists(full_name):\n        response = HttpResponseServerError()\n\n    # Cleanup the object with its exotic file name immediately.\n    # (shutil.rmtree used elsewhere in the tests to clean up the\n    # upload directory has been seen to choke on unicode\n    # filenames on Windows.)\n    obj.delete()\n    os.unlink(full_name)\n\n    if response:\n        return response\n    else:\n        return HttpResponse('')\n\ndef file_upload_echo(request):\n    \"\"\"\n    Simple view to echo back info about uploaded files for tests.\n    \"\"\"\n    r = dict([(k, f.name) for k, f in request.FILES.items()])\n    return HttpResponse(json.dumps(r))\n\ndef file_upload_echo_content(request):\n    \"\"\"\n    Simple view to echo back the content of uploaded files for tests.\n    \"\"\"\n    r = dict([(k, f.read().decode('utf-8')) for k, f in request.FILES.items()])\n    return HttpResponse(json.dumps(r))\n\ndef file_upload_quota(request):\n    \"\"\"\n    Dynamically add in an upload handler.\n    \"\"\"\n    request.upload_handlers.insert(0, QuotaUploadHandler())\n    return file_upload_echo(request)\n\ndef file_upload_quota_broken(request):\n    \"\"\"\n    You can't change handlers after reading FILES; this view shouldn't work.\n    \"\"\"\n    response = file_upload_echo(request)\n    request.upload_handlers.insert(0, QuotaUploadHandler())\n    return response\n\ndef file_upload_getlist_count(request):\n    \"\"\"\n    Check the .getlist() function to ensure we receive the correct number of files.\n    \"\"\"\n    file_counts = {}\n\n    for key in request.FILES.keys():\n        file_counts[key] = len(request.FILES.getlist(key))\n    return HttpResponse(json.dumps(file_counts))\n\ndef file_upload_errors(request):\n    request.upload_handlers.insert(0, ErroringUploadHandler())\n    return file_upload_echo(request)\n\ndef file_upload_filename_case_view(request):\n    \"\"\"\n    Check adding the file to the database will preserve the filename case.\n    \"\"\"\n    file = request.FILES['file_field']\n    obj = FileModel()\n    obj.testfile.save(file.name, file)\n    return HttpResponse('%d' % obj.pk)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/fixtures_regress/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/fixtures_regress/fixtures/absolute.json",
    "content": "[\n    {\n        \"pk\": \"1\", \n        \"model\": \"fixtures_regress.absolute\", \n        \"fields\": {\n            \"name\": \"Load Absolute Path Test\"\n        }\n    }\n]"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/fixtures_regress/fixtures/animal.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<django-objects version=\"1.0\">\n  <object pk=\"10\" model=\"fixtures_regress.animal\">\n      <field type=\"CharField\" name=\"name\">Emu</field>\n      <field type=\"CharField\" name=\"latin_name\">Dromaius novaehollandiae</field>\n      <field type=\"IntegerField\" name=\"count\">42</field>\n      <field type=\"FloatField\" name=\"weight\">1.2</field>\n  </object>\n</django-objects>"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/fixtures_regress/fixtures/bad_fixture1.unkn",
    "content": "This data shouldn't load, as it's of an unknown file format."
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/fixtures_regress/fixtures/bad_fixture2.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<django-objcts version=\"1.0\">\n    <objct pk=\"2\" model=\"fixtures.article\">\n        <field type=\"CharField\" name=\"headline\">Poker on TV is great!</field>\n        <field type=\"DateTimeField\" name=\"pub_date\">2006-06-16 11:00:00</field>\n    </objct>\n</django-objcts>"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/fixtures_regress/fixtures/big-fixture.json",
    "content": "[\n    {\n        \"pk\": 6,\n        \"model\": \"fixtures_regress.channel\",\n        \"fields\": {\n            \"name\": \"Business\"\n        }        \n    },\n    \n    {\n        \"pk\": 1,\n        \"model\": \"fixtures_regress.article\",\n        \"fields\": {\n            \"title\": \"Article Title 1\",\n            \"channels\": [6]\n        }    \n    },\n    {\n        \"pk\": 2,\n        \"model\": \"fixtures_regress.article\",\n        \"fields\": {\n            \"title\": \"Article Title 2\",\n            \"channels\": [6]\n        }    \n    },\n    {\n        \"pk\": 3,\n        \"model\": \"fixtures_regress.article\",\n        \"fields\": {\n            \"title\": \"Article Title 3\",\n            \"channels\": [6]\n        }    \n    },\n    {\n        \"pk\": 4,\n        \"model\": \"fixtures_regress.article\",\n        \"fields\": {\n            \"title\": \"Article Title 4\",\n            \"channels\": [6]\n        }    \n    },\n\n    {\n        \"pk\": 5,\n        \"model\": \"fixtures_regress.article\",\n        \"fields\": {\n            \"title\": \"Article Title 5\",\n            \"channels\": [6]\n        }    \n    },\n    {\n        \"pk\": 6,\n        \"model\": \"fixtures_regress.article\",\n        \"fields\": {\n            \"title\": \"Article Title 6\",\n            \"channels\": [6]\n        }    \n    },\n    {\n        \"pk\": 7,\n        \"model\": \"fixtures_regress.article\",\n        \"fields\": {\n            \"title\": \"Article Title 7\",\n            \"channels\": [6]\n        }    \n    },\n    {\n        \"pk\": 8,\n        \"model\": \"fixtures_regress.article\",\n        \"fields\": {\n            \"title\": \"Article Title 8\",\n            \"channels\": [6]\n        }    \n    },\n    {\n        \"pk\": 9,\n        \"model\": \"fixtures_regress.article\",\n        \"fields\": {\n            \"title\": \"Yet Another Article\",\n            \"channels\": [6]\n        }    \n    }\n]"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/fixtures_regress/fixtures/empty.json",
    "content": "[]"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/fixtures_regress/fixtures/forward_ref.json",
    "content": "[\n    {\n        \"pk\": 1,\n        \"model\": \"fixtures_regress.book\",\n        \"fields\": {\n            \"name\": \"Cryptonomicon\",\n            \"author\": 4\n        }\n    },\n    {\n        \"pk\": \"4\",\n        \"model\": \"fixtures_regress.person\",\n        \"fields\": {\n            \"name\": \"Neal Stephenson\"\n        }\n    }\n]"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/fixtures_regress/fixtures/forward_ref_bad_data.json",
    "content": "[\n    {\n        \"pk\": 1,\n        \"model\": \"fixtures_regress.book\",\n        \"fields\": {\n            \"name\": \"Cryptonomicon\",\n            \"author\": 3\n        }\n    },\n    {\n        \"pk\": \"4\",\n        \"model\": \"fixtures_regress.person\",\n        \"fields\": {\n            \"name\": \"Neal Stephenson\"\n        }\n    }\n]"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/fixtures_regress/fixtures/forward_ref_lookup.json",
    "content": "[\n    {\n        \"pk\": \"4\",\n        \"model\": \"fixtures_regress.person\",\n        \"fields\": {\n            \"name\": \"Neal Stephenson\"\n        }\n    },\n    {\n        \"pk\": \"2\",\n        \"model\": \"fixtures_regress.store\",\n        \"fields\": {\n            \"main\": null,\n            \"name\": \"Amazon\"\n        }\n    },\n    {\n        \"pk\": \"3\",\n        \"model\": \"fixtures_regress.store\",\n        \"fields\": {\n            \"main\": null,\n            \"name\": \"Borders\"\n        }\n    },\n    {\n        \"pk\": 1,\n        \"model\": \"fixtures_regress.book\",\n        \"fields\": {\n            \"name\": \"Cryptonomicon\",\n            \"author\": [\"Neal Stephenson\"],\n            \"stores\": [[\"Amazon\"], [\"Borders\"]]\n        }\n    }\n]\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/fixtures_regress/fixtures/model-inheritance.json",
    "content": "[\n    {\"pk\": 1, \"model\": \"fixtures_regress.parent\", \"fields\": {\"name\": \"fred\"}},\n    {\"pk\": 1, \"model\": \"fixtures_regress.child\", \"fields\": {\"data\": \"apple\"}}\n]\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/fixtures_regress/fixtures/nk-inheritance.json",
    "content": "[\n    {\n        \"pk\": 1,\n        \"model\": \"fixtures_regress.nkchild\",\n        \"fields\": {\n            \"data\": \"apple\"\n        }\n    },\n    {\n        \"pk\": 1,\n        \"model\": \"fixtures_regress.reftonkchild\",\n        \"fields\": {\n            \"text\": \"my text\",\n            \"nk_fk\" : [\"apple\"],\n            \"nk_m2m\": [[\"apple\"]]\n        }\n    }\n]\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/fixtures_regress/fixtures/nk-inheritance2.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<django-objects version=\"1.0\">\n    <object pk=\"2\" model=\"fixtures_regress.parent\">\n        <field type=\"CharField\" name=\"name\">james</field>\n    </object>\n    <object pk=\"2\" model=\"fixtures_regress.nkchild\">\n        <field type=\"CharField\" name=\"data\">banana</field>\n    </object>\n    <object pk=\"2\" model=\"fixtures_regress.reftonkchild\">\n        <field type=\"CharField\" name=\"text\">other text</field>\n        <field to=\"fixtures_regress.nkchild\" name=\"nk_fk\" rel=\"ManyToOneRel\">\n            <natural>apple</natural>\n        </field>\n        <field to=\"fixtures_regress.nkchild\" name=\"nk_m2m\" rel=\"ManyToManyRel\">\n            <object>\n                <natural>banana</natural>\n            </object>\n            <object>\n                <natural>apple</natural>\n            </object>\n        </field>\n    </object>\n</django-objects>"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/fixtures_regress/fixtures/non_natural_1.json",
    "content": "[\n    {\n        \"pk\": 12,\n        \"model\": \"fixtures_regress.person\",\n        \"fields\": {\n            \"name\": \"Greg Egan\"\n        }\n    },\n    {\n        \"pk\": 11,\n        \"model\": \"fixtures_regress.store\",\n        \"fields\": {\n            \"name\": \"Angus and Robertson\"\n        }\n    },\n    {\n        \"pk\": 10,\n        \"model\": \"fixtures_regress.book\",\n        \"fields\": {\n            \"name\": \"Permutation City\",\n            \"author\": 12,\n            \"stores\": [11]\n        }\n    }\n]"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/fixtures_regress/fixtures/non_natural_2.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<django-objects version=\"1.0\">\n    <object pk=\"22\" model=\"fixtures_regress.person\">\n        <field type=\"CharField\" name=\"name\">Orson Scott Card</field>\n    </object>\n    <object pk=\"21\" model=\"fixtures_regress.store\">\n        <field type=\"CharField\" name=\"name\">Collins Bookstore</field>\n    </object>\n    <object pk=\"20\" model=\"fixtures_regress.book\">\n        <field type=\"CharField\" name=\"name\">Ender's Game</field>\n        <field to=\"fixtures_regress.person\" name=\"author\" rel=\"ManyToOneRel\">22</field>\n        <field to=\"fixtures_regress.store\" name=\"stores\" rel=\"ManyToManyRel\">\n            <object pk=\"21\"/>\n        </field>\n    </object>\n</django-objects>"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/fixtures_regress/fixtures/pretty.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<django-objects version=\"1.0\">\n  <object pk=\"1\" model=\"fixtures_regress.stuff\">\n    <field type=\"CharField\" name=\"name\">\n      <None/>\n    </field>\n    <field to=\"auth.user\" name=\"owner\" rel=\"ManyToOneRel\">\n      <None/>\n    </field>\n  </object>\n</django-objects>"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/fixtures_regress/fixtures/sequence.json",
    "content": "[\n    {\n        \"pk\": \"1\", \n        \"model\": \"fixtures_regress.animal\", \n        \"fields\": {\n            \"name\": \"Lion\", \n            \"latin_name\": \"Panthera leo\",\n            \"count\": 3,\n            \"weight\": 1.2\n        }\n    }\n]"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/fixtures_regress/fixtures/sequence_extra.json",
    "content": "[\n    {\n        \"pk\": \"1\",\n        \"model\": \"fixtures_regress.animal\",\n        \"fields\": {\n            \"name\": \"Lion\",\n            \"extra_name\": \"Super Lion\",\n            \"latin_name\": \"Panthera leo\",\n            \"count\": 3,\n            \"weight\": 1.2\n        }\n    }\n]\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/fixtures_regress/fixtures/thingy.json",
    "content": "[\n    {\n        \"pk\": \"1\",\n        \"model\": \"fixtures_regress.thingy\",\n        \"fields\": {\n            \"name\": \"Whatchamacallit\"\n        }\n    }\n]\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/fixtures_regress/fixtures_1/forward_ref_1.json",
    "content": "[\n    {\n        \"pk\": 1,\n        \"model\": \"fixtures_regress.book\",\n        \"fields\": {\n            \"name\": \"Cryptonomicon\",\n            \"author\": 4\n        }\n    }\n]\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/fixtures_regress/fixtures_2/forward_ref_2.json",
    "content": "[\n    {\n        \"pk\": \"4\",\n        \"model\": \"fixtures_regress.person\",\n        \"fields\": {\n            \"name\": \"Neal Stephenson\"\n        }\n    }\n]\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/fixtures_regress/models.py",
    "content": "from __future__ import absolute_import, unicode_literals\n\nfrom django.contrib.auth.models import User\nfrom django.db import models\nfrom django.utils import six\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n@python_2_unicode_compatible\nclass Animal(models.Model):\n    name = models.CharField(max_length=150)\n    latin_name = models.CharField(max_length=150)\n    count = models.IntegerField()\n    weight = models.FloatField()\n\n    # use a non-default name for the default manager\n    specimens = models.Manager()\n\n    def __str__(self):\n        return self.name\n\n\nclass Plant(models.Model):\n    name = models.CharField(max_length=150)\n\n    class Meta:\n        # For testing when upper case letter in app name; regression for #4057\n        db_table = \"Fixtures_regress_plant\"\n\n@python_2_unicode_compatible\nclass Stuff(models.Model):\n    name = models.CharField(max_length=20, null=True)\n    owner = models.ForeignKey(User, null=True)\n\n    def __str__(self):\n        return six.text_type(self.name) + ' is owned by ' + six.text_type(self.owner)\n\n\nclass Absolute(models.Model):\n    name = models.CharField(max_length=40)\n\n    load_count = 0\n\n    def __init__(self, *args, **kwargs):\n        super(Absolute, self).__init__(*args, **kwargs)\n        Absolute.load_count += 1\n\n\nclass Parent(models.Model):\n    name = models.CharField(max_length=10)\n\n    class Meta:\n        ordering = ('id',)\n\n\nclass Child(Parent):\n    data = models.CharField(max_length=10)\n\n\n# Models to regression test #7572\nclass Channel(models.Model):\n    name = models.CharField(max_length=255)\n\n\nclass Article(models.Model):\n    title = models.CharField(max_length=255)\n    channels = models.ManyToManyField(Channel)\n\n    class Meta:\n        ordering = ('id',)\n\n\n# Models to regression test #11428\n@python_2_unicode_compatible\nclass Widget(models.Model):\n    name = models.CharField(max_length=255)\n\n    class Meta:\n        ordering = ('name',)\n\n    def __str__(self):\n        return self.name\n\n\nclass WidgetProxy(Widget):\n    class Meta:\n        proxy = True\n\n\n# Check for forward references in FKs and M2Ms with natural keys\nclass TestManager(models.Manager):\n    def get_by_natural_key(self, key):\n        return self.get(name=key)\n\n\n@python_2_unicode_compatible\nclass Store(models.Model):\n    objects = TestManager()\n    name = models.CharField(max_length=255)\n    main = models.ForeignKey('self', null=True)\n\n    class Meta:\n        ordering = ('name',)\n\n    def __str__(self):\n        return self.name\n\n    def natural_key(self):\n        return (self.name,)\n\n\n@python_2_unicode_compatible\nclass Person(models.Model):\n    objects = TestManager()\n    name = models.CharField(max_length=255)\n\n    class Meta:\n        ordering = ('name',)\n\n    def __str__(self):\n        return self.name\n\n    # Person doesn't actually have a dependency on store, but we need to define\n    # one to test the behavior of the dependency resolution algorithm.\n    def natural_key(self):\n        return (self.name,)\n    natural_key.dependencies = ['fixtures_regress.store']\n\n\n@python_2_unicode_compatible\nclass Book(models.Model):\n    name = models.CharField(max_length=255)\n    author = models.ForeignKey(Person)\n    stores = models.ManyToManyField(Store)\n\n    class Meta:\n        ordering = ('name',)\n\n    def __str__(self):\n        return '%s by %s (available at %s)' % (\n            self.name,\n            self.author.name,\n            ', '.join(s.name for s in self.stores.all())\n        )\n\n\nclass NKManager(models.Manager):\n    def get_by_natural_key(self, data):\n        return self.get(data=data)\n\n\n@python_2_unicode_compatible\nclass NKChild(Parent):\n    data = models.CharField(max_length=10, unique=True)\n    objects = NKManager()\n\n    def natural_key(self):\n        return self.data\n\n    def __str__(self):\n        return 'NKChild %s:%s' % (self.name, self.data)\n\n\n@python_2_unicode_compatible\nclass RefToNKChild(models.Model):\n    text = models.CharField(max_length=10)\n    nk_fk = models.ForeignKey(NKChild, related_name='ref_fks')\n    nk_m2m = models.ManyToManyField(NKChild, related_name='ref_m2ms')\n\n    def __str__(self):\n        return '%s: Reference to %s [%s]' % (\n            self.text,\n            self.nk_fk,\n            ', '.join(str(o) for o in self.nk_m2m.all())\n        )\n\n\n# ome models with pathological circular dependencies\nclass Circle1(models.Model):\n    name = models.CharField(max_length=255)\n\n    def natural_key(self):\n        return self.name\n    natural_key.dependencies = ['fixtures_regress.circle2']\n\n\nclass Circle2(models.Model):\n    name = models.CharField(max_length=255)\n\n    def natural_key(self):\n        return self.name\n    natural_key.dependencies = ['fixtures_regress.circle1']\n\n\nclass Circle3(models.Model):\n    name = models.CharField(max_length=255)\n\n    def natural_key(self):\n        return self.name\n    natural_key.dependencies = ['fixtures_regress.circle3']\n\n\nclass Circle4(models.Model):\n    name = models.CharField(max_length=255)\n\n    def natural_key(self):\n        return self.name\n    natural_key.dependencies = ['fixtures_regress.circle5']\n\n\nclass Circle5(models.Model):\n    name = models.CharField(max_length=255)\n\n    def natural_key(self):\n        return self.name\n    natural_key.dependencies = ['fixtures_regress.circle6']\n\n\nclass Circle6(models.Model):\n    name = models.CharField(max_length=255)\n\n    def natural_key(self):\n        return self.name\n    natural_key.dependencies = ['fixtures_regress.circle4']\n\n\nclass ExternalDependency(models.Model):\n    name = models.CharField(max_length=255)\n\n    def natural_key(self):\n        return self.name\n    natural_key.dependencies = ['fixtures_regress.book']\n\n\n# Model for regression test of #11101\nclass Thingy(models.Model):\n    name = models.CharField(max_length=255)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/fixtures_regress/tests.py",
    "content": "# -*- coding: utf-8 -*-\n# Unittests for fixtures.\nfrom __future__ import absolute_import, unicode_literals\n\nimport os\nimport re\n\nfrom django.core.serializers.base import DeserializationError\nfrom django.core import management\nfrom django.core.management.base import CommandError\nfrom django.core.management.commands.dumpdata import sort_dependencies\nfrom django.db import transaction, IntegrityError\nfrom django.db.models import signals\nfrom django.test import (TestCase, TransactionTestCase, skipIfDBFeature,\n    skipUnlessDBFeature)\nfrom django.test.utils import override_settings\nfrom django.utils.encoding import force_text\nfrom django.utils._os import upath\nfrom django.utils import six\nfrom django.utils.six import PY3, StringIO\nimport json\n\nfrom .models import (Animal, Stuff, Absolute, Parent, Child, Article, Widget,\n    Store, Person, Book, NKChild, RefToNKChild, Circle1, Circle2, Circle3,\n    ExternalDependency, Thingy)\n\n\nclass TestFixtures(TestCase):\n\n    def animal_pre_save_check(self, signal, sender, instance, **kwargs):\n        self.pre_save_checks.append(\n            (\n                'Count = %s (%s)' % (instance.count, type(instance.count)),\n                'Weight = %s (%s)' % (instance.weight, type(instance.weight)),\n            )\n        )\n\n    def test_duplicate_pk(self):\n        \"\"\"\n        This is a regression test for ticket #3790.\n        \"\"\"\n        # Load a fixture that uses PK=1\n        management.call_command(\n            'loaddata',\n            'sequence',\n            verbosity=0,\n            commit=False\n        )\n\n        # Create a new animal. Without a sequence reset, this new object\n        # will take a PK of 1 (on Postgres), and the save will fail.\n\n        animal = Animal(\n            name='Platypus',\n            latin_name='Ornithorhynchus anatinus',\n            count=2,\n            weight=2.2\n        )\n        animal.save()\n        self.assertGreater(animal.id, 1)\n\n    def test_loaddata_not_found_fields_not_ignore(self):\n        \"\"\"\n        Test for ticket #9279 -- Error is raised for entries in\n        the serialised data for fields that have been removed\n        from the database when not ignored.\n        \"\"\"\n        with self.assertRaises(DeserializationError):\n            management.call_command(\n                'loaddata',\n                'sequence_extra',\n                verbosity=0\n            )\n\n    def test_loaddata_not_found_fields_ignore(self):\n        \"\"\"\n        Test for ticket #9279 -- Ignores entries in\n        the serialised data for fields that have been removed\n        from the database.\n        \"\"\"\n        management.call_command(\n            'loaddata',\n            'sequence_extra',\n            ignore=True,\n            verbosity=0,\n            commit=False\n        )\n        self.assertEqual(Animal.specimens.all()[0].name, 'Lion')\n\n    @skipIfDBFeature('interprets_empty_strings_as_nulls')\n    def test_pretty_print_xml(self):\n        \"\"\"\n        Regression test for ticket #4558 -- pretty printing of XML fixtures\n        doesn't affect parsing of None values.\n        \"\"\"\n        # Load a pretty-printed XML fixture with Nulls.\n        management.call_command(\n            'loaddata',\n            'pretty.xml',\n            verbosity=0,\n            commit=False\n        )\n        self.assertEqual(Stuff.objects.all()[0].name, None)\n        self.assertEqual(Stuff.objects.all()[0].owner, None)\n\n    @skipUnlessDBFeature('interprets_empty_strings_as_nulls')\n    def test_pretty_print_xml_empty_strings(self):\n        \"\"\"\n        Regression test for ticket #4558 -- pretty printing of XML fixtures\n        doesn't affect parsing of None values.\n        \"\"\"\n        # Load a pretty-printed XML fixture with Nulls.\n        management.call_command(\n            'loaddata',\n            'pretty.xml',\n            verbosity=0,\n            commit=False\n        )\n        self.assertEqual(Stuff.objects.all()[0].name, '')\n        self.assertEqual(Stuff.objects.all()[0].owner, None)\n\n    def test_absolute_path(self):\n        \"\"\"\n        Regression test for ticket #6436 --\n        os.path.join will throw away the initial parts of a path if it\n        encounters an absolute path.\n        This means that if a fixture is specified as an absolute path,\n        we need to make sure we don't discover the absolute path in every\n        fixture directory.\n        \"\"\"\n        load_absolute_path = os.path.join(\n            os.path.dirname(upath(__file__)),\n            'fixtures',\n            'absolute.json'\n        )\n        management.call_command(\n            'loaddata',\n            load_absolute_path,\n            verbosity=0,\n            commit=False\n        )\n        self.assertEqual(Absolute.load_count, 1)\n\n    def test_unknown_format(self):\n        \"\"\"\n        Test for ticket #4371 -- Loading data of an unknown format should fail\n        Validate that error conditions are caught correctly\n        \"\"\"\n        with six.assertRaisesRegex(self, management.CommandError,\n                \"Problem installing fixture 'bad_fixture1': \"\n                \"unkn is not a known serialization format.\"):\n            management.call_command(\n                'loaddata',\n                'bad_fixture1.unkn',\n                verbosity=0,\n                commit=False,\n            )\n\n    @override_settings(SERIALIZATION_MODULES={'unkn': 'unexistent.path'})\n    def test_unimportable_serializer(self):\n        \"\"\"\n        Test that failing serializer import raises the proper error\n        \"\"\"\n        with six.assertRaisesRegex(self, ImportError,\n                r\"No module named.*unexistent\"):\n            management.call_command(\n                'loaddata',\n                'bad_fixture1.unkn',\n                verbosity=0,\n                commit=False,\n            )\n\n    def test_invalid_data(self):\n        \"\"\"\n        Test for ticket #4371 -- Loading a fixture file with invalid data\n        using explicit filename.\n        Validate that error conditions are caught correctly\n        \"\"\"\n        with six.assertRaisesRegex(self, management.CommandError,\n                \"No fixture data found for 'bad_fixture2'. \\(File format may be invalid.\\)\"):\n            management.call_command(\n                'loaddata',\n                'bad_fixture2.xml',\n                verbosity=0,\n                commit=False,\n            )\n\n    def test_invalid_data_no_ext(self):\n        \"\"\"\n        Test for ticket #4371 -- Loading a fixture file with invalid data\n        without file extension.\n        Validate that error conditions are caught correctly\n        \"\"\"\n        with six.assertRaisesRegex(self, management.CommandError,\n                \"No fixture data found for 'bad_fixture2'. \\(File format may be invalid.\\)\"):\n            management.call_command(\n                'loaddata',\n                'bad_fixture2',\n                verbosity=0,\n                commit=False,\n            )\n\n    def test_empty(self):\n        \"\"\"\n        Test for ticket #4371 -- Loading a fixture file with no data returns an error.\n        Validate that error conditions are caught correctly\n        \"\"\"\n        with six.assertRaisesRegex(self, management.CommandError,\n                \"No fixture data found for 'empty'. \\(File format may be invalid.\\)\"):\n            management.call_command(\n                'loaddata',\n                'empty',\n                verbosity=0,\n                commit=False,\n            )\n\n    def test_error_message(self):\n        \"\"\"\n        (Regression for #9011 - error message is correct)\n        \"\"\"\n        with six.assertRaisesRegex(self, management.CommandError,\n                \"^No fixture data found for 'bad_fixture2'. \\(File format may be invalid.\\)$\"):\n            management.call_command(\n                'loaddata',\n                'bad_fixture2',\n                'animal',\n                verbosity=0,\n                commit=False,\n            )\n\n    def test_pg_sequence_resetting_checks(self):\n        \"\"\"\n        Test for ticket #7565 -- PostgreSQL sequence resetting checks shouldn't\n        ascend to parent models when inheritance is used\n        (since they are treated individually).\n        \"\"\"\n        management.call_command(\n            'loaddata',\n            'model-inheritance.json',\n            verbosity=0,\n            commit=False\n        )\n        self.assertEqual(Parent.objects.all()[0].id, 1)\n        self.assertEqual(Child.objects.all()[0].id, 1)\n\n    def test_close_connection_after_loaddata(self):\n        \"\"\"\n        Test for ticket #7572 -- MySQL has a problem if the same connection is\n        used to create tables, load data, and then query over that data.\n        To compensate, we close the connection after running loaddata.\n        This ensures that a new connection is opened when test queries are\n        issued.\n        \"\"\"\n        management.call_command(\n            'loaddata',\n            'big-fixture.json',\n            verbosity=0,\n            commit=False\n        )\n        articles = Article.objects.exclude(id=9)\n        self.assertEqual(\n            list(articles.values_list('id', flat=True)),\n            [1, 2, 3, 4, 5, 6, 7, 8]\n        )\n        # Just for good measure, run the same query again.\n        # Under the influence of ticket #7572, this will\n        # give a different result to the previous call.\n        self.assertEqual(\n            list(articles.values_list('id', flat=True)),\n            [1, 2, 3, 4, 5, 6, 7, 8]\n        )\n\n    def test_field_value_coerce(self):\n        \"\"\"\n        Test for tickets #8298, #9942 - Field values should be coerced into the\n        correct type by the deserializer, not as part of the database write.\n        \"\"\"\n        self.pre_save_checks = []\n        signals.pre_save.connect(self.animal_pre_save_check)\n        try:\n            management.call_command(\n                'loaddata',\n                'animal.xml',\n                verbosity=0,\n                commit=False,\n            )\n            self.assertEqual(\n                self.pre_save_checks,\n                [\n                    (\"Count = 42 (<%s 'int'>)\" % ('class' if PY3 else 'type'),\n                     \"Weight = 1.2 (<%s 'float'>)\" % ('class' if PY3 else 'type'))\n                ]\n            )\n        finally:\n            signals.pre_save.disconnect(self.animal_pre_save_check)\n\n    def test_dumpdata_uses_default_manager(self):\n        \"\"\"\n        Regression for #11286\n        Ensure that dumpdata honors the default manager\n        Dump the current contents of the database as a JSON fixture\n        \"\"\"\n        management.call_command(\n            'loaddata',\n            'animal.xml',\n            verbosity=0,\n            commit=False,\n        )\n        management.call_command(\n            'loaddata',\n            'sequence.json',\n            verbosity=0,\n            commit=False,\n        )\n        animal = Animal(\n            name='Platypus',\n            latin_name='Ornithorhynchus anatinus',\n            count=2,\n            weight=2.2\n        )\n        animal.save()\n\n        stdout = StringIO()\n        management.call_command(\n            'dumpdata',\n            'fixtures_regress.animal',\n            format='json',\n            stdout=stdout\n        )\n\n        # Output order isn't guaranteed, so check for parts\n        data = stdout.getvalue()\n\n        # Get rid of artifacts like '000000002' to eliminate the differences\n        # between different Python versions.\n        data = re.sub('0{6,}\\d', '', data)\n\n        animals_data = sorted([\n            {\"pk\": 1, \"model\": \"fixtures_regress.animal\", \"fields\": {\"count\": 3, \"weight\": 1.2, \"name\": \"Lion\", \"latin_name\": \"Panthera leo\"}},\n            {\"pk\": 10, \"model\": \"fixtures_regress.animal\", \"fields\": {\"count\": 42, \"weight\": 1.2, \"name\": \"Emu\", \"latin_name\": \"Dromaius novaehollandiae\"}},\n            {\"pk\": animal.pk, \"model\": \"fixtures_regress.animal\", \"fields\": {\"count\": 2, \"weight\": 2.2, \"name\": \"Platypus\", \"latin_name\": \"Ornithorhynchus anatinus\"}},\n        ], key=lambda x: x[\"pk\"])\n\n        data = sorted(json.loads(data), key=lambda x: x[\"pk\"])\n\n        self.maxDiff = 1024\n        self.assertEqual(data, animals_data)\n\n\n    def test_proxy_model_included(self):\n        \"\"\"\n        Regression for #11428 - Proxy models aren't included when you dumpdata\n        \"\"\"\n        stdout = StringIO()\n        # Create an instance of the concrete class\n        widget = Widget.objects.create(name='grommet')\n        management.call_command(\n            'dumpdata',\n            'fixtures_regress.widget',\n            'fixtures_regress.widgetproxy',\n            format='json',\n            stdout=stdout\n        )\n        self.assertJSONEqual(\n            stdout.getvalue(),\n            \"\"\"[{\"pk\": %d, \"model\": \"fixtures_regress.widget\", \"fields\": {\"name\": \"grommet\"}}]\"\"\"\n            % widget.pk\n            )\n\n    def test_loaddata_works_when_fixture_has_forward_refs(self):\n        \"\"\"\n        Regression for #3615 - Forward references cause fixtures not to load in MySQL (InnoDB)\n        \"\"\"\n        management.call_command(\n            'loaddata',\n            'forward_ref.json',\n            verbosity=0,\n            commit=False\n        )\n        self.assertEqual(Book.objects.all()[0].id, 1)\n        self.assertEqual(Person.objects.all()[0].id, 4)\n\n    def test_loaddata_raises_error_when_fixture_has_invalid_foreign_key(self):\n        \"\"\"\n        Regression for #3615 - Ensure data with nonexistent child key references raises error\n        \"\"\"\n        with six.assertRaisesRegex(self, IntegrityError,\n                \"Problem installing fixture\"):\n            management.call_command(\n                'loaddata',\n                'forward_ref_bad_data.json',\n                verbosity=0,\n                commit=False,\n            )\n\n    _cur_dir = os.path.dirname(os.path.abspath(upath(__file__)))\n\n    @override_settings(FIXTURE_DIRS=[os.path.join(_cur_dir, 'fixtures_1'),\n                                     os.path.join(_cur_dir, 'fixtures_2')])\n    def test_loaddata_forward_refs_split_fixtures(self):\n        \"\"\"\n        Regression for #17530 - should be able to cope with forward references\n        when the fixtures are not in the same files or directories.\n        \"\"\"\n        management.call_command(\n            'loaddata',\n            'forward_ref_1.json',\n            'forward_ref_2.json',\n            verbosity=0,\n            commit=False\n        )\n        self.assertEqual(Book.objects.all()[0].id, 1)\n        self.assertEqual(Person.objects.all()[0].id, 4)\n\n    def test_loaddata_no_fixture_specified(self):\n        \"\"\"\n        Regression for #7043 - Error is quickly reported when no fixtures is provided in the command line.\n        \"\"\"\n        with six.assertRaisesRegex(self, management.CommandError,\n                \"No database fixture specified. Please provide the path of \"\n                \"at least one fixture in the command line.\"):\n            management.call_command(\n                'loaddata',\n                verbosity=0,\n                commit=False,\n            )\n\n    def test_loaddata_not_existant_fixture_file(self):\n        stdout_output = StringIO()\n        management.call_command(\n            'loaddata',\n            'this_fixture_doesnt_exist',\n            verbosity=2,\n            commit=False,\n            stdout=stdout_output,\n        )\n        self.assertTrue(\"No xml fixture 'this_fixture_doesnt_exist' in\" in\n            force_text(stdout_output.getvalue()))\n\n\nclass NaturalKeyFixtureTests(TestCase):\n\n    def test_nk_deserialize(self):\n        \"\"\"\n        Test for ticket #13030 - Python based parser version\n        natural keys deserialize with fk to inheriting model\n        \"\"\"\n        management.call_command(\n            'loaddata',\n            'model-inheritance.json',\n            verbosity=0,\n            commit=False\n        )\n        management.call_command(\n            'loaddata',\n            'nk-inheritance.json',\n            verbosity=0,\n            commit=False\n        )\n        self.assertEqual(\n            NKChild.objects.get(pk=1).data,\n            'apple'\n        )\n\n        self.assertEqual(\n            RefToNKChild.objects.get(pk=1).nk_fk.data,\n            'apple'\n        )\n\n    def test_nk_deserialize_xml(self):\n        \"\"\"\n        Test for ticket #13030 - XML version\n        natural keys deserialize with fk to inheriting model\n        \"\"\"\n        management.call_command(\n            'loaddata',\n            'model-inheritance.json',\n            verbosity=0,\n            commit=False\n        )\n        management.call_command(\n            'loaddata',\n            'nk-inheritance.json',\n            verbosity=0,\n            commit=False\n        )\n        management.call_command(\n            'loaddata',\n            'nk-inheritance2.xml',\n            verbosity=0,\n            commit=False\n        )\n        self.assertEqual(\n            NKChild.objects.get(pk=2).data,\n            'banana'\n        )\n        self.assertEqual(\n            RefToNKChild.objects.get(pk=2).nk_fk.data,\n            'apple'\n        )\n\n    def test_nk_on_serialize(self):\n        \"\"\"\n        Check that natural key requirements are taken into account\n        when serializing models\n        \"\"\"\n        management.call_command(\n            'loaddata',\n            'forward_ref_lookup.json',\n            verbosity=0,\n            commit=False\n            )\n\n        stdout = StringIO()\n        management.call_command(\n            'dumpdata',\n            'fixtures_regress.book',\n            'fixtures_regress.person',\n            'fixtures_regress.store',\n            verbosity=0,\n            format='json',\n            use_natural_keys=True,\n            stdout=stdout,\n        )\n        self.assertJSONEqual(\n            stdout.getvalue(),\n            \"\"\"[{\"pk\": 2, \"model\": \"fixtures_regress.store\", \"fields\": {\"main\": null, \"name\": \"Amazon\"}}, {\"pk\": 3, \"model\": \"fixtures_regress.store\", \"fields\": {\"main\": null, \"name\": \"Borders\"}}, {\"pk\": 4, \"model\": \"fixtures_regress.person\", \"fields\": {\"name\": \"Neal Stephenson\"}}, {\"pk\": 1, \"model\": \"fixtures_regress.book\", \"fields\": {\"stores\": [[\"Amazon\"], [\"Borders\"]], \"name\": \"Cryptonomicon\", \"author\": [\"Neal Stephenson\"]}}]\"\"\"\n        )\n\n    def test_dependency_sorting(self):\n        \"\"\"\n        Now lets check the dependency sorting explicitly\n        It doesn't matter what order you mention the models\n        Store *must* be serialized before then Person, and both\n        must be serialized before Book.\n        \"\"\"\n        sorted_deps = sort_dependencies(\n            [('fixtures_regress', [Book, Person, Store])]\n        )\n        self.assertEqual(\n            sorted_deps,\n            [Store, Person, Book]\n        )\n\n    def test_dependency_sorting_2(self):\n        sorted_deps = sort_dependencies(\n            [('fixtures_regress', [Book, Store, Person])]\n        )\n        self.assertEqual(\n            sorted_deps,\n            [Store, Person, Book]\n        )\n\n    def test_dependency_sorting_3(self):\n        sorted_deps = sort_dependencies(\n            [('fixtures_regress', [Store, Book, Person])]\n        )\n        self.assertEqual(\n            sorted_deps,\n            [Store, Person, Book]\n        )\n\n    def test_dependency_sorting_4(self):\n        sorted_deps = sort_dependencies(\n            [('fixtures_regress', [Store, Person, Book])]\n        )\n        self.assertEqual(\n            sorted_deps,\n            [Store, Person, Book]\n        )\n\n    def test_dependency_sorting_5(self):\n        sorted_deps = sort_dependencies(\n            [('fixtures_regress', [Person, Book, Store])]\n        )\n        self.assertEqual(\n            sorted_deps,\n            [Store, Person, Book]\n        )\n\n    def test_dependency_sorting_6(self):\n        sorted_deps = sort_dependencies(\n            [('fixtures_regress', [Person, Store, Book])]\n        )\n        self.assertEqual(\n            sorted_deps,\n            [Store, Person, Book]\n        )\n\n    def test_dependency_sorting_dangling(self):\n        sorted_deps = sort_dependencies(\n            [('fixtures_regress', [Person, Circle1, Store, Book])]\n        )\n        self.assertEqual(\n            sorted_deps,\n            [Circle1, Store, Person, Book]\n        )\n\n    def test_dependency_sorting_tight_circular(self):\n        self.assertRaisesMessage(\n            CommandError,\n            \"\"\"Can't resolve dependencies for fixtures_regress.Circle1, fixtures_regress.Circle2 in serialized app list.\"\"\",\n            sort_dependencies,\n            [('fixtures_regress', [Person, Circle2, Circle1, Store, Book])],\n        )\n\n    def test_dependency_sorting_tight_circular_2(self):\n        self.assertRaisesMessage(\n            CommandError,\n            \"\"\"Can't resolve dependencies for fixtures_regress.Circle1, fixtures_regress.Circle2 in serialized app list.\"\"\",\n            sort_dependencies,\n            [('fixtures_regress', [Circle1, Book, Circle2])],\n        )\n\n    def test_dependency_self_referential(self):\n        self.assertRaisesMessage(\n            CommandError,\n            \"\"\"Can't resolve dependencies for fixtures_regress.Circle3 in serialized app list.\"\"\",\n            sort_dependencies,\n            [('fixtures_regress', [Book, Circle3])],\n        )\n\n    def test_dependency_sorting_long(self):\n        self.assertRaisesMessage(\n            CommandError,\n            \"\"\"Can't resolve dependencies for fixtures_regress.Circle1, fixtures_regress.Circle2, fixtures_regress.Circle3 in serialized app list.\"\"\",\n            sort_dependencies,\n            [('fixtures_regress', [Person, Circle2, Circle1, Circle3, Store, Book])],\n        )\n\n    def test_dependency_sorting_normal(self):\n        sorted_deps = sort_dependencies(\n            [('fixtures_regress', [Person, ExternalDependency, Book])]\n        )\n        self.assertEqual(\n            sorted_deps,\n            [Person, Book, ExternalDependency]\n        )\n\n    def test_normal_pk(self):\n        \"\"\"\n        Check that normal primary keys still work\n        on a model with natural key capabilities\n        \"\"\"\n        management.call_command(\n            'loaddata',\n            'non_natural_1.json',\n            verbosity=0,\n            commit=False\n        )\n        management.call_command(\n            'loaddata',\n            'forward_ref_lookup.json',\n            verbosity=0,\n            commit=False\n        )\n        management.call_command(\n            'loaddata',\n            'non_natural_2.xml',\n            verbosity=0,\n            commit=False\n        )\n        books = Book.objects.all()\n        self.assertEqual(\n            books.__repr__(),\n            \"\"\"[<Book: Cryptonomicon by Neal Stephenson (available at Amazon, Borders)>, <Book: Ender's Game by Orson Scott Card (available at Collins Bookstore)>, <Book: Permutation City by Greg Egan (available at Angus and Robertson)>]\"\"\"\n        )\n\n\nclass TestTicket11101(TransactionTestCase):\n\n    def ticket_11101(self):\n        management.call_command(\n            'loaddata',\n            'thingy.json',\n            verbosity=0,\n            commit=False\n        )\n        self.assertEqual(Thingy.objects.count(), 1)\n        transaction.rollback()\n        self.assertEqual(Thingy.objects.count(), 0)\n        transaction.commit()\n\n    @skipUnlessDBFeature('supports_transactions')\n    def test_ticket_11101(self):\n        \"\"\"Test that fixtures can be rolled back (ticket #11101).\"\"\"\n        ticket_11101 = transaction.commit_manually(self.ticket_11101)\n        ticket_11101()\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/forms/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/forms/models.py",
    "content": "# -*- coding: utf-8 -*-\nfrom __future__ import unicode_literals\n\nimport os\nimport datetime\nimport tempfile\n\nfrom django.core.files.storage import FileSystemStorage\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\ntemp_storage_location = tempfile.mkdtemp(dir=os.environ['DJANGO_TEST_TEMP_DIR'])\ntemp_storage = FileSystemStorage(location=temp_storage_location)\n\n\nclass BoundaryModel(models.Model):\n    positive_integer = models.PositiveIntegerField(null=True, blank=True)\n\n\ncallable_default_value = 0\ndef callable_default():\n    global callable_default_value\n    callable_default_value = callable_default_value + 1\n    return callable_default_value\n\n\nclass Defaults(models.Model):\n    name = models.CharField(max_length=255, default='class default value')\n    def_date = models.DateField(default = datetime.date(1980, 1, 1))\n    value = models.IntegerField(default=42)\n    callable_default = models.IntegerField(default=callable_default)\n\n\nclass ChoiceModel(models.Model):\n    \"\"\"For ModelChoiceField and ModelMultipleChoiceField tests.\"\"\"\n    name = models.CharField(max_length=10)\n\n\n@python_2_unicode_compatible\nclass ChoiceOptionModel(models.Model):\n    \"\"\"Destination for ChoiceFieldModel's ForeignKey.\n    Can't reuse ChoiceModel because error_message tests require that it have no instances.\"\"\"\n    name = models.CharField(max_length=10)\n\n    class Meta:\n        ordering = ('name',)\n\n    def __str__(self):\n        return 'ChoiceOption %d' % self.pk\n\n\nclass ChoiceFieldModel(models.Model):\n    \"\"\"Model with ForeignKey to another model, for testing ModelForm\n    generation with ModelChoiceField.\"\"\"\n    choice = models.ForeignKey(ChoiceOptionModel, blank=False,\n                               default=lambda: ChoiceOptionModel.objects.get(name='default'))\n    choice_int = models.ForeignKey(ChoiceOptionModel, blank=False, related_name='choice_int',\n                                   default=lambda: 1)\n\n    multi_choice = models.ManyToManyField(ChoiceOptionModel, blank=False, related_name='multi_choice',\n                                          default=lambda: ChoiceOptionModel.objects.filter(name='default'))\n    multi_choice_int = models.ManyToManyField(ChoiceOptionModel, blank=False, related_name='multi_choice_int',\n                                              default=lambda: [1])\n\nclass OptionalMultiChoiceModel(models.Model):\n    multi_choice = models.ManyToManyField(ChoiceOptionModel, blank=False, related_name='not_relevant',\n                                          default=lambda: ChoiceOptionModel.objects.filter(name='default'))\n    multi_choice_optional = models.ManyToManyField(ChoiceOptionModel, blank=True, null=True,\n                                                   related_name='not_relevant2')\n\n\nclass FileModel(models.Model):\n    file = models.FileField(storage=temp_storage, upload_to='tests')\n\n\n@python_2_unicode_compatible\nclass Group(models.Model):\n    name = models.CharField(max_length=10)\n\n    def __str__(self):\n        return '%s' % self.name\n\n\nclass Cheese(models.Model):\n    name = models.CharField(max_length=100)\n\n\nclass Article(models.Model):\n    content = models.TextField()\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/forms/templates/forms/article_form.html",
    "content": "<html>\n<body>\n  <form method=\"post\" action=\".\">\n    {{ form.as_p }}<br>\n    <input id=\"submit\" type=\"submit\">\n  </form>\n</body>\n</html>\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/forms/tests/__init__.py",
    "content": "from __future__ import absolute_import\n\nfrom .error_messages import (FormsErrorMessagesTestCase,\n    ModelChoiceFieldErrorMessagesTestCase)\nfrom .extra import FormsExtraTestCase, FormsExtraL10NTestCase\nfrom .fields import FieldsTests\nfrom .forms import FormsTestCase\nfrom .formsets import (FormsFormsetTestCase, FormsetAsFooTests,\n    TestIsBoundBehavior, TestEmptyFormSet)\nfrom .input_formats import (LocalizedTimeTests, CustomTimeInputFormatsTests,\n    SimpleTimeFormatTests, LocalizedDateTests, CustomDateInputFormatsTests,\n    SimpleDateFormatTests, LocalizedDateTimeTests,\n    CustomDateTimeInputFormatsTests, SimpleDateTimeFormatTests)\nfrom .media import FormsMediaTestCase, StaticFormsMediaTestCase\nfrom .models import (TestTicket12510, ModelFormCallableModelDefault,\n    FormsModelTestCase, RelatedModelFormTests)\nfrom .regressions import FormsRegressionsTestCase\nfrom .util import FormsUtilTestCase\nfrom .validators import TestFieldWithValidators\nfrom .widgets import (FormsWidgetTestCase, FormsI18NWidgetsTestCase,\n    WidgetTests, LiveWidgetTests, ClearableFileInputTests)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/forms/tests/error_messages.py",
    "content": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import, unicode_literals\n\nfrom django.core.files.uploadedfile import SimpleUploadedFile\nfrom django.forms import *\nfrom django.test import TestCase\nfrom django.utils.safestring import mark_safe\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\nclass AssertFormErrorsMixin(object):\n    def assertFormErrors(self, expected, the_callable, *args, **kwargs):\n        try:\n            the_callable(*args, **kwargs)\n            self.fail(\"Testing the 'clean' method on %s failed to raise a ValidationError.\")\n        except ValidationError as e:\n            self.assertEqual(e.messages, expected)\n\nclass FormsErrorMessagesTestCase(TestCase, AssertFormErrorsMixin):\n    def test_charfield(self):\n        e = {\n            'required': 'REQUIRED',\n            'min_length': 'LENGTH %(show_value)s, MIN LENGTH %(limit_value)s',\n            'max_length': 'LENGTH %(show_value)s, MAX LENGTH %(limit_value)s',\n        }\n        f = CharField(min_length=5, max_length=10, error_messages=e)\n        self.assertFormErrors(['REQUIRED'], f.clean, '')\n        self.assertFormErrors(['LENGTH 4, MIN LENGTH 5'], f.clean, '1234')\n        self.assertFormErrors(['LENGTH 11, MAX LENGTH 10'], f.clean, '12345678901')\n\n    def test_integerfield(self):\n        e = {\n            'required': 'REQUIRED',\n            'invalid': 'INVALID',\n            'min_value': 'MIN VALUE IS %(limit_value)s',\n            'max_value': 'MAX VALUE IS %(limit_value)s',\n        }\n        f = IntegerField(min_value=5, max_value=10, error_messages=e)\n        self.assertFormErrors(['REQUIRED'], f.clean, '')\n        self.assertFormErrors(['INVALID'], f.clean, 'abc')\n        self.assertFormErrors(['MIN VALUE IS 5'], f.clean, '4')\n        self.assertFormErrors(['MAX VALUE IS 10'], f.clean, '11')\n\n    def test_floatfield(self):\n        e = {\n            'required': 'REQUIRED',\n            'invalid': 'INVALID',\n            'min_value': 'MIN VALUE IS %(limit_value)s',\n            'max_value': 'MAX VALUE IS %(limit_value)s',\n        }\n        f = FloatField(min_value=5, max_value=10, error_messages=e)\n        self.assertFormErrors(['REQUIRED'], f.clean, '')\n        self.assertFormErrors(['INVALID'], f.clean, 'abc')\n        self.assertFormErrors(['MIN VALUE IS 5'], f.clean, '4')\n        self.assertFormErrors(['MAX VALUE IS 10'], f.clean, '11')\n\n    def test_decimalfield(self):\n        e = {\n            'required': 'REQUIRED',\n            'invalid': 'INVALID',\n            'min_value': 'MIN VALUE IS %(limit_value)s',\n            'max_value': 'MAX VALUE IS %(limit_value)s',\n            'max_digits': 'MAX DIGITS IS %s',\n            'max_decimal_places': 'MAX DP IS %s',\n            'max_whole_digits': 'MAX DIGITS BEFORE DP IS %s',\n        }\n        f = DecimalField(min_value=5, max_value=10, error_messages=e)\n        self.assertFormErrors(['REQUIRED'], f.clean, '')\n        self.assertFormErrors(['INVALID'], f.clean, 'abc')\n        self.assertFormErrors(['MIN VALUE IS 5'], f.clean, '4')\n        self.assertFormErrors(['MAX VALUE IS 10'], f.clean, '11')\n\n        f2 = DecimalField(max_digits=4, decimal_places=2, error_messages=e)\n        self.assertFormErrors(['MAX DIGITS IS 4'], f2.clean, '123.45')\n        self.assertFormErrors(['MAX DP IS 2'], f2.clean, '1.234')\n        self.assertFormErrors(['MAX DIGITS BEFORE DP IS 2'], f2.clean, '123.4')\n\n    def test_datefield(self):\n        e = {\n            'required': 'REQUIRED',\n            'invalid': 'INVALID',\n        }\n        f = DateField(error_messages=e)\n        self.assertFormErrors(['REQUIRED'], f.clean, '')\n        self.assertFormErrors(['INVALID'], f.clean, 'abc')\n\n    def test_timefield(self):\n        e = {\n            'required': 'REQUIRED',\n            'invalid': 'INVALID',\n        }\n        f = TimeField(error_messages=e)\n        self.assertFormErrors(['REQUIRED'], f.clean, '')\n        self.assertFormErrors(['INVALID'], f.clean, 'abc')\n\n    def test_datetimefield(self):\n        e = {\n            'required': 'REQUIRED',\n            'invalid': 'INVALID',\n        }\n        f = DateTimeField(error_messages=e)\n        self.assertFormErrors(['REQUIRED'], f.clean, '')\n        self.assertFormErrors(['INVALID'], f.clean, 'abc')\n\n    def test_regexfield(self):\n        e = {\n            'required': 'REQUIRED',\n            'invalid': 'INVALID',\n            'min_length': 'LENGTH %(show_value)s, MIN LENGTH %(limit_value)s',\n            'max_length': 'LENGTH %(show_value)s, MAX LENGTH %(limit_value)s',\n        }\n        f = RegexField(r'^\\d+$', min_length=5, max_length=10, error_messages=e)\n        self.assertFormErrors(['REQUIRED'], f.clean, '')\n        self.assertFormErrors(['INVALID'], f.clean, 'abcde')\n        self.assertFormErrors(['LENGTH 4, MIN LENGTH 5'], f.clean, '1234')\n        self.assertFormErrors(['LENGTH 11, MAX LENGTH 10'], f.clean, '12345678901')\n\n    def test_emailfield(self):\n        e = {\n            'required': 'REQUIRED',\n            'invalid': 'INVALID',\n            'min_length': 'LENGTH %(show_value)s, MIN LENGTH %(limit_value)s',\n            'max_length': 'LENGTH %(show_value)s, MAX LENGTH %(limit_value)s',\n        }\n        f = EmailField(min_length=8, max_length=10, error_messages=e)\n        self.assertFormErrors(['REQUIRED'], f.clean, '')\n        self.assertFormErrors(['INVALID'], f.clean, 'abcdefgh')\n        self.assertFormErrors(['LENGTH 7, MIN LENGTH 8'], f.clean, 'a@b.com')\n        self.assertFormErrors(['LENGTH 11, MAX LENGTH 10'], f.clean, 'aye@bee.com')\n\n    def test_filefield(self):\n        e = {\n            'required': 'REQUIRED',\n            'invalid': 'INVALID',\n            'missing': 'MISSING',\n            'empty': 'EMPTY FILE',\n        }\n        f = FileField(error_messages=e)\n        self.assertFormErrors(['REQUIRED'], f.clean, '')\n        self.assertFormErrors(['INVALID'], f.clean, 'abc')\n        self.assertFormErrors(['EMPTY FILE'], f.clean, SimpleUploadedFile('name', None))\n        self.assertFormErrors(['EMPTY FILE'], f.clean, SimpleUploadedFile('name', ''))\n\n    def test_urlfield(self):\n        e = {\n            'required': 'REQUIRED',\n            'invalid': 'INVALID',\n        }\n        f = URLField(error_messages=e)\n        self.assertFormErrors(['REQUIRED'], f.clean, '')\n        self.assertFormErrors(['INVALID'], f.clean, 'abc.c')\n\n    def test_booleanfield(self):\n        e = {\n            'required': 'REQUIRED',\n        }\n        f = BooleanField(error_messages=e)\n        self.assertFormErrors(['REQUIRED'], f.clean, '')\n\n    def test_choicefield(self):\n        e = {\n            'required': 'REQUIRED',\n            'invalid_choice': '%(value)s IS INVALID CHOICE',\n        }\n        f = ChoiceField(choices=[('a', 'aye')], error_messages=e)\n        self.assertFormErrors(['REQUIRED'], f.clean, '')\n        self.assertFormErrors(['b IS INVALID CHOICE'], f.clean, 'b')\n\n    def test_multiplechoicefield(self):\n        e = {\n            'required': 'REQUIRED',\n            'invalid_choice': '%(value)s IS INVALID CHOICE',\n            'invalid_list': 'NOT A LIST',\n        }\n        f = MultipleChoiceField(choices=[('a', 'aye')], error_messages=e)\n        self.assertFormErrors(['REQUIRED'], f.clean, '')\n        self.assertFormErrors(['NOT A LIST'], f.clean, 'b')\n        self.assertFormErrors(['b IS INVALID CHOICE'], f.clean, ['b'])\n\n    def test_splitdatetimefield(self):\n        e = {\n            'required': 'REQUIRED',\n            'invalid_date': 'INVALID DATE',\n            'invalid_time': 'INVALID TIME',\n        }\n        f = SplitDateTimeField(error_messages=e)\n        self.assertFormErrors(['REQUIRED'], f.clean, '')\n        self.assertFormErrors(['INVALID DATE', 'INVALID TIME'], f.clean, ['a', 'b'])\n\n    def test_ipaddressfield(self):\n        e = {\n            'required': 'REQUIRED',\n            'invalid': 'INVALID IP ADDRESS',\n        }\n        f = IPAddressField(error_messages=e)\n        self.assertFormErrors(['REQUIRED'], f.clean, '')\n        self.assertFormErrors(['INVALID IP ADDRESS'], f.clean, '127.0.0')\n\n    def test_generic_ipaddressfield(self):\n        e = {\n            'required': 'REQUIRED',\n            'invalid': 'INVALID IP ADDRESS',\n        }\n        f = GenericIPAddressField(error_messages=e)\n        self.assertFormErrors(['REQUIRED'], f.clean, '')\n        self.assertFormErrors(['INVALID IP ADDRESS'], f.clean, '127.0.0')\n\n    def test_subclassing_errorlist(self):\n        class TestForm(Form):\n            first_name = CharField()\n            last_name = CharField()\n            birthday = DateField()\n\n            def clean(self):\n                raise ValidationError(\"I like to be awkward.\")\n\n        @python_2_unicode_compatible\n        class CustomErrorList(util.ErrorList):\n            def __str__(self):\n                return self.as_divs()\n\n            def as_divs(self):\n                if not self: return ''\n                return mark_safe('<div class=\"error\">%s</div>' % ''.join(['<p>%s</p>' % e for e in self]))\n\n        # This form should print errors the default way.\n        form1 = TestForm({'first_name': 'John'})\n        self.assertHTMLEqual(str(form1['last_name'].errors), '<ul class=\"errorlist\"><li>This field is required.</li></ul>')\n        self.assertHTMLEqual(str(form1.errors['__all__']), '<ul class=\"errorlist\"><li>I like to be awkward.</li></ul>')\n\n        # This one should wrap error groups in the customized way.\n        form2 = TestForm({'first_name': 'John'}, error_class=CustomErrorList)\n        self.assertHTMLEqual(str(form2['last_name'].errors), '<div class=\"error\"><p>This field is required.</p></div>')\n        self.assertHTMLEqual(str(form2.errors['__all__']), '<div class=\"error\"><p>I like to be awkward.</p></div>')\n\n\nclass ModelChoiceFieldErrorMessagesTestCase(TestCase, AssertFormErrorsMixin):\n    def test_modelchoicefield(self):\n        # Create choices for the model choice field tests below.\n        from regressiontests.forms.models import ChoiceModel\n        c1 = ChoiceModel.objects.create(pk=1, name='a')\n        c2 = ChoiceModel.objects.create(pk=2, name='b')\n        c3 = ChoiceModel.objects.create(pk=3, name='c')\n\n        # ModelChoiceField\n        e = {\n            'required': 'REQUIRED',\n            'invalid_choice': 'INVALID CHOICE',\n        }\n        f = ModelChoiceField(queryset=ChoiceModel.objects.all(), error_messages=e)\n        self.assertFormErrors(['REQUIRED'], f.clean, '')\n        self.assertFormErrors(['INVALID CHOICE'], f.clean, '4')\n\n        # ModelMultipleChoiceField\n        e = {\n            'required': 'REQUIRED',\n            'invalid_choice': '%s IS INVALID CHOICE',\n            'list': 'NOT A LIST OF VALUES',\n        }\n        f = ModelMultipleChoiceField(queryset=ChoiceModel.objects.all(), error_messages=e)\n        self.assertFormErrors(['REQUIRED'], f.clean, '')\n        self.assertFormErrors(['NOT A LIST OF VALUES'], f.clean, '3')\n        self.assertFormErrors(['4 IS INVALID CHOICE'], f.clean, ['4'])\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/forms/tests/extra.py",
    "content": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import, unicode_literals\n\nimport datetime\n\nfrom django.forms import *\nfrom django.forms.extras import SelectDateWidget\nfrom django.forms.util import ErrorList\nfrom django.test import TestCase\nfrom django.test.utils import override_settings\nfrom django.utils import six\nfrom django.utils import translation\nfrom django.utils.encoding import force_text, smart_text, python_2_unicode_compatible\n\nfrom .error_messages import AssertFormErrorsMixin\n\n\nclass GetDate(Form):\n    mydate = DateField(widget=SelectDateWidget)\n\nclass GetNotRequiredDate(Form):\n    mydate = DateField(widget=SelectDateWidget, required=False)\n\nclass GetDateShowHiddenInitial(Form):\n    mydate = DateField(widget=SelectDateWidget, show_hidden_initial=True)\n\nclass FormsExtraTestCase(TestCase, AssertFormErrorsMixin):\n    ###############\n    # Extra stuff #\n    ###############\n\n    # The forms library comes with some extra, higher-level Field and Widget\n    def test_selectdate(self):\n        w = SelectDateWidget(years=('2007','2008','2009','2010','2011','2012','2013','2014','2015','2016'))\n        self.assertHTMLEqual(w.render('mydate', ''), \"\"\"<select name=\"mydate_month\" id=\"id_mydate_month\">\n<option value=\"0\">---</option>\n<option value=\"1\">January</option>\n<option value=\"2\">February</option>\n<option value=\"3\">March</option>\n<option value=\"4\">April</option>\n<option value=\"5\">May</option>\n<option value=\"6\">June</option>\n<option value=\"7\">July</option>\n<option value=\"8\">August</option>\n<option value=\"9\">September</option>\n<option value=\"10\">October</option>\n<option value=\"11\">November</option>\n<option value=\"12\">December</option>\n</select>\n\n<select name=\"mydate_day\" id=\"id_mydate_day\">\n<option value=\"0\">---</option>\n<option value=\"1\">1</option>\n<option value=\"2\">2</option>\n<option value=\"3\">3</option>\n<option value=\"4\">4</option>\n<option value=\"5\">5</option>\n<option value=\"6\">6</option>\n<option value=\"7\">7</option>\n<option value=\"8\">8</option>\n<option value=\"9\">9</option>\n<option value=\"10\">10</option>\n<option value=\"11\">11</option>\n<option value=\"12\">12</option>\n<option value=\"13\">13</option>\n<option value=\"14\">14</option>\n<option value=\"15\">15</option>\n<option value=\"16\">16</option>\n<option value=\"17\">17</option>\n<option value=\"18\">18</option>\n<option value=\"19\">19</option>\n<option value=\"20\">20</option>\n<option value=\"21\">21</option>\n<option value=\"22\">22</option>\n<option value=\"23\">23</option>\n<option value=\"24\">24</option>\n<option value=\"25\">25</option>\n<option value=\"26\">26</option>\n<option value=\"27\">27</option>\n<option value=\"28\">28</option>\n<option value=\"29\">29</option>\n<option value=\"30\">30</option>\n<option value=\"31\">31</option>\n</select>\n\n<select name=\"mydate_year\" id=\"id_mydate_year\">\n<option value=\"0\">---</option>\n<option value=\"2007\">2007</option>\n<option value=\"2008\">2008</option>\n<option value=\"2009\">2009</option>\n<option value=\"2010\">2010</option>\n<option value=\"2011\">2011</option>\n<option value=\"2012\">2012</option>\n<option value=\"2013\">2013</option>\n<option value=\"2014\">2014</option>\n<option value=\"2015\">2015</option>\n<option value=\"2016\">2016</option>\n</select>\"\"\")\n        self.assertHTMLEqual(w.render('mydate', None), w.render('mydate', ''))\n\n        self.assertHTMLEqual(w.render('mydate', '2010-04-15'), \"\"\"<select name=\"mydate_month\" id=\"id_mydate_month\">\n<option value=\"1\">January</option>\n<option value=\"2\">February</option>\n<option value=\"3\">March</option>\n<option value=\"4\" selected=\"selected\">April</option>\n<option value=\"5\">May</option>\n<option value=\"6\">June</option>\n<option value=\"7\">July</option>\n<option value=\"8\">August</option>\n<option value=\"9\">September</option>\n<option value=\"10\">October</option>\n<option value=\"11\">November</option>\n<option value=\"12\">December</option>\n</select>\n<select name=\"mydate_day\" id=\"id_mydate_day\">\n<option value=\"1\">1</option>\n<option value=\"2\">2</option>\n<option value=\"3\">3</option>\n<option value=\"4\">4</option>\n<option value=\"5\">5</option>\n<option value=\"6\">6</option>\n<option value=\"7\">7</option>\n<option value=\"8\">8</option>\n<option value=\"9\">9</option>\n<option value=\"10\">10</option>\n<option value=\"11\">11</option>\n<option value=\"12\">12</option>\n<option value=\"13\">13</option>\n<option value=\"14\">14</option>\n<option value=\"15\" selected=\"selected\">15</option>\n<option value=\"16\">16</option>\n<option value=\"17\">17</option>\n<option value=\"18\">18</option>\n<option value=\"19\">19</option>\n<option value=\"20\">20</option>\n<option value=\"21\">21</option>\n<option value=\"22\">22</option>\n<option value=\"23\">23</option>\n<option value=\"24\">24</option>\n<option value=\"25\">25</option>\n<option value=\"26\">26</option>\n<option value=\"27\">27</option>\n<option value=\"28\">28</option>\n<option value=\"29\">29</option>\n<option value=\"30\">30</option>\n<option value=\"31\">31</option>\n</select>\n<select name=\"mydate_year\" id=\"id_mydate_year\">\n<option value=\"2007\">2007</option>\n<option value=\"2008\">2008</option>\n<option value=\"2009\">2009</option>\n<option value=\"2010\" selected=\"selected\">2010</option>\n<option value=\"2011\">2011</option>\n<option value=\"2012\">2012</option>\n<option value=\"2013\">2013</option>\n<option value=\"2014\">2014</option>\n<option value=\"2015\">2015</option>\n<option value=\"2016\">2016</option>\n</select>\"\"\")\n\n        # Accepts a datetime or a string:\n        self.assertHTMLEqual(w.render('mydate', datetime.date(2010, 4, 15)), w.render('mydate', '2010-04-15'))\n\n        # Invalid dates still render the failed date:\n        self.assertHTMLEqual(w.render('mydate', '2010-02-31'), \"\"\"<select name=\"mydate_month\" id=\"id_mydate_month\">\n<option value=\"1\">January</option>\n<option value=\"2\" selected=\"selected\">February</option>\n<option value=\"3\">March</option>\n<option value=\"4\">April</option>\n<option value=\"5\">May</option>\n<option value=\"6\">June</option>\n<option value=\"7\">July</option>\n<option value=\"8\">August</option>\n<option value=\"9\">September</option>\n<option value=\"10\">October</option>\n<option value=\"11\">November</option>\n<option value=\"12\">December</option>\n</select>\n<select name=\"mydate_day\" id=\"id_mydate_day\">\n<option value=\"1\">1</option>\n<option value=\"2\">2</option>\n<option value=\"3\">3</option>\n<option value=\"4\">4</option>\n<option value=\"5\">5</option>\n<option value=\"6\">6</option>\n<option value=\"7\">7</option>\n<option value=\"8\">8</option>\n<option value=\"9\">9</option>\n<option value=\"10\">10</option>\n<option value=\"11\">11</option>\n<option value=\"12\">12</option>\n<option value=\"13\">13</option>\n<option value=\"14\">14</option>\n<option value=\"15\">15</option>\n<option value=\"16\">16</option>\n<option value=\"17\">17</option>\n<option value=\"18\">18</option>\n<option value=\"19\">19</option>\n<option value=\"20\">20</option>\n<option value=\"21\">21</option>\n<option value=\"22\">22</option>\n<option value=\"23\">23</option>\n<option value=\"24\">24</option>\n<option value=\"25\">25</option>\n<option value=\"26\">26</option>\n<option value=\"27\">27</option>\n<option value=\"28\">28</option>\n<option value=\"29\">29</option>\n<option value=\"30\">30</option>\n<option value=\"31\" selected=\"selected\">31</option>\n</select>\n<select name=\"mydate_year\" id=\"id_mydate_year\">\n<option value=\"2007\">2007</option>\n<option value=\"2008\">2008</option>\n<option value=\"2009\">2009</option>\n<option value=\"2010\" selected=\"selected\">2010</option>\n<option value=\"2011\">2011</option>\n<option value=\"2012\">2012</option>\n<option value=\"2013\">2013</option>\n<option value=\"2014\">2014</option>\n<option value=\"2015\">2015</option>\n<option value=\"2016\">2016</option>\n</select>\"\"\")\n\n        # Using a SelectDateWidget in a form:\n        w = SelectDateWidget(years=('2007','2008','2009','2010','2011','2012','2013','2014','2015','2016'), required=False)\n        self.assertHTMLEqual(w.render('mydate', ''), \"\"\"<select name=\"mydate_month\" id=\"id_mydate_month\">\n<option value=\"0\">---</option>\n<option value=\"1\">January</option>\n<option value=\"2\">February</option>\n<option value=\"3\">March</option>\n<option value=\"4\">April</option>\n<option value=\"5\">May</option>\n<option value=\"6\">June</option>\n<option value=\"7\">July</option>\n<option value=\"8\">August</option>\n<option value=\"9\">September</option>\n<option value=\"10\">October</option>\n<option value=\"11\">November</option>\n<option value=\"12\">December</option>\n</select>\n<select name=\"mydate_day\" id=\"id_mydate_day\">\n<option value=\"0\">---</option>\n<option value=\"1\">1</option>\n<option value=\"2\">2</option>\n<option value=\"3\">3</option>\n<option value=\"4\">4</option>\n<option value=\"5\">5</option>\n<option value=\"6\">6</option>\n<option value=\"7\">7</option>\n<option value=\"8\">8</option>\n<option value=\"9\">9</option>\n<option value=\"10\">10</option>\n<option value=\"11\">11</option>\n<option value=\"12\">12</option>\n<option value=\"13\">13</option>\n<option value=\"14\">14</option>\n<option value=\"15\">15</option>\n<option value=\"16\">16</option>\n<option value=\"17\">17</option>\n<option value=\"18\">18</option>\n<option value=\"19\">19</option>\n<option value=\"20\">20</option>\n<option value=\"21\">21</option>\n<option value=\"22\">22</option>\n<option value=\"23\">23</option>\n<option value=\"24\">24</option>\n<option value=\"25\">25</option>\n<option value=\"26\">26</option>\n<option value=\"27\">27</option>\n<option value=\"28\">28</option>\n<option value=\"29\">29</option>\n<option value=\"30\">30</option>\n<option value=\"31\">31</option>\n</select>\n<select name=\"mydate_year\" id=\"id_mydate_year\">\n<option value=\"0\">---</option>\n<option value=\"2007\">2007</option>\n<option value=\"2008\">2008</option>\n<option value=\"2009\">2009</option>\n<option value=\"2010\">2010</option>\n<option value=\"2011\">2011</option>\n<option value=\"2012\">2012</option>\n<option value=\"2013\">2013</option>\n<option value=\"2014\">2014</option>\n<option value=\"2015\">2015</option>\n<option value=\"2016\">2016</option>\n</select>\"\"\")\n        self.assertHTMLEqual(w.render('mydate', '2010-04-15'), \"\"\"<select name=\"mydate_month\" id=\"id_mydate_month\">\n<option value=\"0\">---</option>\n<option value=\"1\">January</option>\n<option value=\"2\">February</option>\n<option value=\"3\">March</option>\n<option value=\"4\" selected=\"selected\">April</option>\n<option value=\"5\">May</option>\n<option value=\"6\">June</option>\n<option value=\"7\">July</option>\n<option value=\"8\">August</option>\n<option value=\"9\">September</option>\n<option value=\"10\">October</option>\n<option value=\"11\">November</option>\n<option value=\"12\">December</option>\n</select>\n<select name=\"mydate_day\" id=\"id_mydate_day\">\n<option value=\"0\">---</option>\n<option value=\"1\">1</option>\n<option value=\"2\">2</option>\n<option value=\"3\">3</option>\n<option value=\"4\">4</option>\n<option value=\"5\">5</option>\n<option value=\"6\">6</option>\n<option value=\"7\">7</option>\n<option value=\"8\">8</option>\n<option value=\"9\">9</option>\n<option value=\"10\">10</option>\n<option value=\"11\">11</option>\n<option value=\"12\">12</option>\n<option value=\"13\">13</option>\n<option value=\"14\">14</option>\n<option value=\"15\" selected=\"selected\">15</option>\n<option value=\"16\">16</option>\n<option value=\"17\">17</option>\n<option value=\"18\">18</option>\n<option value=\"19\">19</option>\n<option value=\"20\">20</option>\n<option value=\"21\">21</option>\n<option value=\"22\">22</option>\n<option value=\"23\">23</option>\n<option value=\"24\">24</option>\n<option value=\"25\">25</option>\n<option value=\"26\">26</option>\n<option value=\"27\">27</option>\n<option value=\"28\">28</option>\n<option value=\"29\">29</option>\n<option value=\"30\">30</option>\n<option value=\"31\">31</option>\n</select>\n<select name=\"mydate_year\" id=\"id_mydate_year\">\n<option value=\"0\">---</option>\n<option value=\"2007\">2007</option>\n<option value=\"2008\">2008</option>\n<option value=\"2009\">2009</option>\n<option value=\"2010\" selected=\"selected\">2010</option>\n<option value=\"2011\">2011</option>\n<option value=\"2012\">2012</option>\n<option value=\"2013\">2013</option>\n<option value=\"2014\">2014</option>\n<option value=\"2015\">2015</option>\n<option value=\"2016\">2016</option>\n</select>\"\"\")\n\n        a = GetDate({'mydate_month':'4', 'mydate_day':'1', 'mydate_year':'2008'})\n        self.assertTrue(a.is_valid())\n        self.assertEqual(a.cleaned_data['mydate'], datetime.date(2008, 4, 1))\n\n        # As with any widget that implements get_value_from_datadict,\n        # we must be prepared to accept the input from the \"as_hidden\"\n        # rendering as well.\n\n        self.assertHTMLEqual(a['mydate'].as_hidden(), '<input type=\"hidden\" name=\"mydate\" value=\"2008-4-1\" id=\"id_mydate\" />')\n\n        b = GetDate({'mydate':'2008-4-1'})\n        self.assertTrue(b.is_valid())\n        self.assertEqual(b.cleaned_data['mydate'], datetime.date(2008, 4, 1))\n\n        # Invalid dates shouldn't be allowed\n        c = GetDate({'mydate_month':'2', 'mydate_day':'31', 'mydate_year':'2010'})\n        self.assertFalse(c.is_valid())\n        self.assertEqual(c.errors, {'mydate': ['Enter a valid date.']})\n\n        # label tag is correctly associated with month dropdown\n        d = GetDate({'mydate_month':'1', 'mydate_day':'1', 'mydate_year':'2010'})\n        self.assertTrue('<label for=\"id_mydate_month\">' in d.as_p())\n\n    def test_multiwidget(self):\n        # MultiWidget and MultiValueField #############################################\n        # MultiWidgets are widgets composed of other widgets. They are usually\n        # combined with MultiValueFields - a field that is composed of other fields.\n        # MulitWidgets can themselved be composed of other MultiWidgets.\n        # SplitDateTimeWidget is one example of a MultiWidget.\n\n        class ComplexMultiWidget(MultiWidget):\n            def __init__(self, attrs=None):\n                widgets = (\n                    TextInput(),\n                    SelectMultiple(choices=(('J', 'John'), ('P', 'Paul'), ('G', 'George'), ('R', 'Ringo'))),\n                    SplitDateTimeWidget(),\n                )\n                super(ComplexMultiWidget, self).__init__(widgets, attrs)\n\n            def decompress(self, value):\n                if value:\n                    data = value.split(',')\n                    return [data[0], data[1], datetime.datetime.strptime(data[2], \"%Y-%m-%d %H:%M:%S\")]\n                return [None, None, None]\n\n            def format_output(self, rendered_widgets):\n                return '\\n'.join(rendered_widgets)\n\n        w = ComplexMultiWidget()\n        self.assertHTMLEqual(w.render('name', 'some text,JP,2007-04-25 06:24:00'), \"\"\"<input type=\"text\" name=\"name_0\" value=\"some text\" />\n<select multiple=\"multiple\" name=\"name_1\">\n<option value=\"J\" selected=\"selected\">John</option>\n<option value=\"P\" selected=\"selected\">Paul</option>\n<option value=\"G\">George</option>\n<option value=\"R\">Ringo</option>\n</select>\n<input type=\"text\" name=\"name_2_0\" value=\"2007-04-25\" /><input type=\"text\" name=\"name_2_1\" value=\"06:24:00\" />\"\"\")\n\n        class ComplexField(MultiValueField):\n            def __init__(self, required=True, widget=None, label=None, initial=None):\n                fields = (\n                    CharField(),\n                    MultipleChoiceField(choices=(('J', 'John'), ('P', 'Paul'), ('G', 'George'), ('R', 'Ringo'))),\n                    SplitDateTimeField()\n                )\n                super(ComplexField, self).__init__(fields, required, widget, label, initial)\n\n            def compress(self, data_list):\n                if data_list:\n                    return '%s,%s,%s' % (data_list[0],''.join(data_list[1]),data_list[2])\n                return None\n\n        f = ComplexField(widget=w)\n        self.assertEqual(f.clean(['some text', ['J','P'], ['2007-04-25','6:24:00']]), 'some text,JP,2007-04-25 06:24:00')\n        self.assertFormErrors(['Select a valid choice. X is not one of the available choices.'], f.clean, ['some text',['X'], ['2007-04-25','6:24:00']])\n\n        # If insufficient data is provided, None is substituted\n        self.assertFormErrors(['This field is required.'], f.clean, ['some text',['JP']])\n\n        class ComplexFieldForm(Form):\n            field1 = ComplexField(widget=w)\n\n        f = ComplexFieldForm()\n        self.assertHTMLEqual(f.as_table(), \"\"\"<tr><th><label for=\"id_field1_0\">Field1:</label></th><td><input type=\"text\" name=\"field1_0\" id=\"id_field1_0\" />\n<select multiple=\"multiple\" name=\"field1_1\" id=\"id_field1_1\">\n<option value=\"J\">John</option>\n<option value=\"P\">Paul</option>\n<option value=\"G\">George</option>\n<option value=\"R\">Ringo</option>\n</select>\n<input type=\"text\" name=\"field1_2_0\" id=\"id_field1_2_0\" /><input type=\"text\" name=\"field1_2_1\" id=\"id_field1_2_1\" /></td></tr>\"\"\")\n\n        f = ComplexFieldForm({'field1_0':'some text','field1_1':['J','P'], 'field1_2_0':'2007-04-25', 'field1_2_1':'06:24:00'})\n        self.assertHTMLEqual(f.as_table(), \"\"\"<tr><th><label for=\"id_field1_0\">Field1:</label></th><td><input type=\"text\" name=\"field1_0\" value=\"some text\" id=\"id_field1_0\" />\n<select multiple=\"multiple\" name=\"field1_1\" id=\"id_field1_1\">\n<option value=\"J\" selected=\"selected\">John</option>\n<option value=\"P\" selected=\"selected\">Paul</option>\n<option value=\"G\">George</option>\n<option value=\"R\">Ringo</option>\n</select>\n<input type=\"text\" name=\"field1_2_0\" value=\"2007-04-25\" id=\"id_field1_2_0\" /><input type=\"text\" name=\"field1_2_1\" value=\"06:24:00\" id=\"id_field1_2_1\" /></td></tr>\"\"\")\n\n        self.assertEqual(f.cleaned_data['field1'], 'some text,JP,2007-04-25 06:24:00')\n\n    def test_ipaddress(self):\n        f = IPAddressField()\n        self.assertFormErrors(['This field is required.'], f.clean, '')\n        self.assertFormErrors(['This field is required.'], f.clean, None)\n        self.assertEqual(f.clean('127.0.0.1'), '127.0.0.1')\n        self.assertFormErrors(['Enter a valid IPv4 address.'], f.clean, 'foo')\n        self.assertFormErrors(['Enter a valid IPv4 address.'], f.clean, '127.0.0.')\n        self.assertFormErrors(['Enter a valid IPv4 address.'], f.clean, '1.2.3.4.5')\n        self.assertFormErrors(['Enter a valid IPv4 address.'], f.clean, '256.125.1.5')\n\n        f = IPAddressField(required=False)\n        self.assertEqual(f.clean(''), '')\n        self.assertEqual(f.clean(None), '')\n        self.assertEqual(f.clean('127.0.0.1'), '127.0.0.1')\n        self.assertFormErrors(['Enter a valid IPv4 address.'], f.clean, 'foo')\n        self.assertFormErrors(['Enter a valid IPv4 address.'], f.clean, '127.0.0.')\n        self.assertFormErrors(['Enter a valid IPv4 address.'], f.clean, '1.2.3.4.5')\n        self.assertFormErrors(['Enter a valid IPv4 address.'], f.clean, '256.125.1.5')\n\n    def test_generic_ipaddress_invalid_arguments(self):\n        self.assertRaises(ValueError, GenericIPAddressField, protocol=\"hamster\")\n        self.assertRaises(ValueError, GenericIPAddressField, protocol=\"ipv4\", unpack_ipv4=True)\n\n    def test_generic_ipaddress_as_generic(self):\n        # The edge cases of the IPv6 validation code are not deeply tested\n        # here, they are covered in the tests for django.utils.ipv6\n        f = GenericIPAddressField()\n        self.assertFormErrors(['This field is required.'], f.clean, '')\n        self.assertFormErrors(['This field is required.'], f.clean, None)\n        self.assertEqual(f.clean('127.0.0.1'), '127.0.0.1')\n        self.assertFormErrors(['Enter a valid IPv4 or IPv6 address.'], f.clean, 'foo')\n        self.assertFormErrors(['Enter a valid IPv4 or IPv6 address.'], f.clean, '127.0.0.')\n        self.assertFormErrors(['Enter a valid IPv4 or IPv6 address.'], f.clean, '1.2.3.4.5')\n        self.assertFormErrors(['Enter a valid IPv4 or IPv6 address.'], f.clean, '256.125.1.5')\n        self.assertEqual(f.clean('fe80::223:6cff:fe8a:2e8a'), 'fe80::223:6cff:fe8a:2e8a')\n        self.assertEqual(f.clean('2a02::223:6cff:fe8a:2e8a'), '2a02::223:6cff:fe8a:2e8a')\n        self.assertFormErrors(['Enter a valid IPv4 or IPv6 address.'], f.clean, '12345:2:3:4')\n        self.assertFormErrors(['Enter a valid IPv4 or IPv6 address.'], f.clean, '1::2:3::4')\n        self.assertFormErrors(['Enter a valid IPv4 or IPv6 address.'], f.clean, 'foo::223:6cff:fe8a:2e8a')\n        self.assertFormErrors(['Enter a valid IPv4 or IPv6 address.'], f.clean, '1::2:3:4:5:6:7:8')\n        self.assertFormErrors(['Enter a valid IPv4 or IPv6 address.'], f.clean, '1:2')\n\n    def test_generic_ipaddress_as_ipv4_only(self):\n        f = GenericIPAddressField(protocol=\"IPv4\")\n        self.assertFormErrors(['This field is required.'], f.clean, '')\n        self.assertFormErrors(['This field is required.'], f.clean, None)\n        self.assertEqual(f.clean('127.0.0.1'), '127.0.0.1')\n        self.assertFormErrors(['Enter a valid IPv4 address.'], f.clean, 'foo')\n        self.assertFormErrors(['Enter a valid IPv4 address.'], f.clean, '127.0.0.')\n        self.assertFormErrors(['Enter a valid IPv4 address.'], f.clean, '1.2.3.4.5')\n        self.assertFormErrors(['Enter a valid IPv4 address.'], f.clean, '256.125.1.5')\n        self.assertFormErrors(['Enter a valid IPv4 address.'], f.clean, 'fe80::223:6cff:fe8a:2e8a')\n        self.assertFormErrors(['Enter a valid IPv4 address.'], f.clean, '2a02::223:6cff:fe8a:2e8a')\n\n    def test_generic_ipaddress_as_ipv6_only(self):\n        f = GenericIPAddressField(protocol=\"IPv6\")\n        self.assertFormErrors(['This field is required.'], f.clean, '')\n        self.assertFormErrors(['This field is required.'], f.clean, None)\n        self.assertFormErrors(['Enter a valid IPv6 address.'], f.clean, '127.0.0.1')\n        self.assertFormErrors(['Enter a valid IPv6 address.'], f.clean, 'foo')\n        self.assertFormErrors(['Enter a valid IPv6 address.'], f.clean, '127.0.0.')\n        self.assertFormErrors(['Enter a valid IPv6 address.'], f.clean, '1.2.3.4.5')\n        self.assertFormErrors(['Enter a valid IPv6 address.'], f.clean, '256.125.1.5')\n        self.assertEqual(f.clean('fe80::223:6cff:fe8a:2e8a'), 'fe80::223:6cff:fe8a:2e8a')\n        self.assertEqual(f.clean('2a02::223:6cff:fe8a:2e8a'), '2a02::223:6cff:fe8a:2e8a')\n        self.assertFormErrors(['Enter a valid IPv6 address.'], f.clean, '12345:2:3:4')\n        self.assertFormErrors(['Enter a valid IPv6 address.'], f.clean, '1::2:3::4')\n        self.assertFormErrors(['Enter a valid IPv6 address.'], f.clean, 'foo::223:6cff:fe8a:2e8a')\n        self.assertFormErrors(['Enter a valid IPv6 address.'], f.clean, '1::2:3:4:5:6:7:8')\n        self.assertFormErrors(['Enter a valid IPv6 address.'], f.clean, '1:2')\n\n    def test_generic_ipaddress_as_generic_not_required(self):\n        f = GenericIPAddressField(required=False)\n        self.assertEqual(f.clean(''), '')\n        self.assertEqual(f.clean(None), '')\n        self.assertEqual(f.clean('127.0.0.1'), '127.0.0.1')\n        self.assertFormErrors(['Enter a valid IPv4 or IPv6 address.'], f.clean, 'foo')\n        self.assertFormErrors(['Enter a valid IPv4 or IPv6 address.'], f.clean, '127.0.0.')\n        self.assertFormErrors(['Enter a valid IPv4 or IPv6 address.'], f.clean, '1.2.3.4.5')\n        self.assertFormErrors(['Enter a valid IPv4 or IPv6 address.'], f.clean, '256.125.1.5')\n        self.assertEqual(f.clean('fe80::223:6cff:fe8a:2e8a'), 'fe80::223:6cff:fe8a:2e8a')\n        self.assertEqual(f.clean('2a02::223:6cff:fe8a:2e8a'), '2a02::223:6cff:fe8a:2e8a')\n        self.assertFormErrors(['Enter a valid IPv4 or IPv6 address.'], f.clean, '12345:2:3:4')\n        self.assertFormErrors(['Enter a valid IPv4 or IPv6 address.'], f.clean, '1::2:3::4')\n        self.assertFormErrors(['Enter a valid IPv4 or IPv6 address.'], f.clean, 'foo::223:6cff:fe8a:2e8a')\n        self.assertFormErrors(['Enter a valid IPv4 or IPv6 address.'], f.clean, '1::2:3:4:5:6:7:8')\n        self.assertFormErrors(['Enter a valid IPv4 or IPv6 address.'], f.clean, '1:2')\n\n    def test_generic_ipaddress_normalization(self):\n        # Test the normalising code\n        f = GenericIPAddressField()\n        self.assertEqual(f.clean('::ffff:0a0a:0a0a'), '::ffff:10.10.10.10')\n        self.assertEqual(f.clean('::ffff:10.10.10.10'), '::ffff:10.10.10.10')\n        self.assertEqual(f.clean('2001:000:a:0000:0:fe:fe:beef'), '2001:0:a::fe:fe:beef')\n        self.assertEqual(f.clean('2001::a:0000:0:fe:fe:beef'), '2001:0:a::fe:fe:beef')\n\n        f = GenericIPAddressField(unpack_ipv4=True)\n        self.assertEqual(f.clean('::ffff:0a0a:0a0a'), '10.10.10.10')\n\n    def test_smart_text(self):\n        class Test:\n            if six.PY3:\n                def __str__(self):\n                    return 'ŠĐĆŽćžšđ'\n            else:\n                def __str__(self):\n                    return 'ŠĐĆŽćžšđ'.encode('utf-8')\n\n        class TestU:\n            if six.PY3:\n                def __str__(self):\n                    return 'ŠĐĆŽćžšđ'\n                def __bytes__(self):\n                    return b'Foo'\n            else:\n                def __str__(self):\n                    return b'Foo'\n                def __unicode__(self):\n                    return '\\u0160\\u0110\\u0106\\u017d\\u0107\\u017e\\u0161\\u0111'\n\n        self.assertEqual(smart_text(Test()), '\\u0160\\u0110\\u0106\\u017d\\u0107\\u017e\\u0161\\u0111')\n        self.assertEqual(smart_text(TestU()), '\\u0160\\u0110\\u0106\\u017d\\u0107\\u017e\\u0161\\u0111')\n        self.assertEqual(smart_text(1), '1')\n        self.assertEqual(smart_text('foo'), 'foo')\n\n    def test_accessing_clean(self):\n        class UserForm(Form):\n            username = CharField(max_length=10)\n            password = CharField(widget=PasswordInput)\n\n            def clean(self):\n                data = self.cleaned_data\n\n                if not self.errors:\n                    data['username'] = data['username'].lower()\n\n                return data\n\n        f = UserForm({'username': 'SirRobin', 'password': 'blue'})\n        self.assertTrue(f.is_valid())\n        self.assertEqual(f.cleaned_data['username'], 'sirrobin')\n\n    def test_overriding_errorlist(self):\n        @python_2_unicode_compatible\n        class DivErrorList(ErrorList):\n            def __str__(self):\n                return self.as_divs()\n\n            def as_divs(self):\n                if not self: return ''\n                return '<div class=\"errorlist\">%s</div>' % ''.join(['<div class=\"error\">%s</div>' % force_text(e) for e in self])\n\n        class CommentForm(Form):\n            name = CharField(max_length=50, required=False)\n            email = EmailField()\n            comment = CharField()\n\n        data = dict(email='invalid')\n        f = CommentForm(data, auto_id=False, error_class=DivErrorList)\n        self.assertHTMLEqual(f.as_p(), \"\"\"<p>Name: <input type=\"text\" name=\"name\" maxlength=\"50\" /></p>\n<div class=\"errorlist\"><div class=\"error\">Enter a valid email address.</div></div>\n<p>Email: <input type=\"text\" name=\"email\" value=\"invalid\" /></p>\n<div class=\"errorlist\"><div class=\"error\">This field is required.</div></div>\n<p>Comment: <input type=\"text\" name=\"comment\" /></p>\"\"\")\n\n    def test_multipart_encoded_form(self):\n        class FormWithoutFile(Form):\n            username = CharField()\n\n        class FormWithFile(Form):\n            username = CharField()\n            file = FileField()\n\n        class FormWithImage(Form):\n            image = ImageField()\n\n        self.assertFalse(FormWithoutFile().is_multipart())\n        self.assertTrue(FormWithFile().is_multipart())\n        self.assertTrue(FormWithImage().is_multipart())\n\n    def test_field_not_required(self):\n        b = GetNotRequiredDate({\n            'mydate_year': '',\n            'mydate_month': '',\n            'mydate_day': ''\n        })\n        self.assertFalse(b.has_changed())\n\n\n@override_settings(USE_L10N=True)\nclass FormsExtraL10NTestCase(TestCase):\n    def setUp(self):\n        super(FormsExtraL10NTestCase, self).setUp()\n        translation.activate('nl')\n\n    def tearDown(self):\n        translation.deactivate()\n        super(FormsExtraL10NTestCase, self).tearDown()\n\n    def test_l10n(self):\n        w = SelectDateWidget(years=('2007','2008','2009','2010','2011','2012','2013','2014','2015','2016'), required=False)\n        self.assertEqual(w.value_from_datadict({'date_year': '2010', 'date_month': '8', 'date_day': '13'}, {}, 'date'), '13-08-2010')\n\n        self.assertHTMLEqual(w.render('date', '13-08-2010'), \"\"\"<select name=\"date_day\" id=\"id_date_day\">\n<option value=\"0\">---</option>\n<option value=\"1\">1</option>\n<option value=\"2\">2</option>\n<option value=\"3\">3</option>\n<option value=\"4\">4</option>\n<option value=\"5\">5</option>\n<option value=\"6\">6</option>\n<option value=\"7\">7</option>\n<option value=\"8\">8</option>\n<option value=\"9\">9</option>\n<option value=\"10\">10</option>\n<option value=\"11\">11</option>\n<option value=\"12\">12</option>\n<option value=\"13\" selected=\"selected\">13</option>\n<option value=\"14\">14</option>\n<option value=\"15\">15</option>\n<option value=\"16\">16</option>\n<option value=\"17\">17</option>\n<option value=\"18\">18</option>\n<option value=\"19\">19</option>\n<option value=\"20\">20</option>\n<option value=\"21\">21</option>\n<option value=\"22\">22</option>\n<option value=\"23\">23</option>\n<option value=\"24\">24</option>\n<option value=\"25\">25</option>\n<option value=\"26\">26</option>\n<option value=\"27\">27</option>\n<option value=\"28\">28</option>\n<option value=\"29\">29</option>\n<option value=\"30\">30</option>\n<option value=\"31\">31</option>\n</select>\n<select name=\"date_month\" id=\"id_date_month\">\n<option value=\"0\">---</option>\n<option value=\"1\">januari</option>\n<option value=\"2\">februari</option>\n<option value=\"3\">maart</option>\n<option value=\"4\">april</option>\n<option value=\"5\">mei</option>\n<option value=\"6\">juni</option>\n<option value=\"7\">juli</option>\n<option value=\"8\" selected=\"selected\">augustus</option>\n<option value=\"9\">september</option>\n<option value=\"10\">oktober</option>\n<option value=\"11\">november</option>\n<option value=\"12\">december</option>\n</select>\n<select name=\"date_year\" id=\"id_date_year\">\n<option value=\"0\">---</option>\n<option value=\"2007\">2007</option>\n<option value=\"2008\">2008</option>\n<option value=\"2009\">2009</option>\n<option value=\"2010\" selected=\"selected\">2010</option>\n<option value=\"2011\">2011</option>\n<option value=\"2012\">2012</option>\n<option value=\"2013\">2013</option>\n<option value=\"2014\">2014</option>\n<option value=\"2015\">2015</option>\n<option value=\"2016\">2016</option>\n</select>\"\"\")\n\n        # Years before 1900 work\n        w = SelectDateWidget(years=('1899',))\n        self.assertEqual(w.value_from_datadict({'date_year': '1899', 'date_month': '8', 'date_day': '13'}, {}, 'date'), '13-08-1899')\n\n    def test_l10n_date_changed(self):\n        \"\"\"\n        Ensure that SelectDateWidget._has_changed() works correctly with a\n        localized date format.\n        Refs #17165.\n        \"\"\"\n        # With Field.show_hidden_initial=False -----------------------\n        b = GetDate({\n            'mydate_year': '2008',\n            'mydate_month': '4',\n            'mydate_day': '1',\n        }, initial={'mydate': datetime.date(2008, 4, 1)})\n        self.assertFalse(b.has_changed())\n\n        b = GetDate({\n            'mydate_year': '2008',\n            'mydate_month': '4',\n            'mydate_day': '2',\n        }, initial={'mydate': datetime.date(2008, 4, 1)})\n        self.assertTrue(b.has_changed())\n\n        # With Field.show_hidden_initial=True ------------------------\n        b = GetDateShowHiddenInitial({\n            'mydate_year': '2008',\n            'mydate_month': '4',\n            'mydate_day': '1',\n            'initial-mydate': HiddenInput()._format_value(datetime.date(2008, 4, 1))\n        }, initial={'mydate': datetime.date(2008, 4, 1)})\n        self.assertFalse(b.has_changed())\n\n        b = GetDateShowHiddenInitial({\n            'mydate_year': '2008',\n            'mydate_month': '4',\n            'mydate_day': '22',\n            'initial-mydate': HiddenInput()._format_value(datetime.date(2008, 4, 1))\n        }, initial={'mydate': datetime.date(2008, 4, 1)})\n        self.assertTrue(b.has_changed())\n\n        b = GetDateShowHiddenInitial({\n            'mydate_year': '2008',\n            'mydate_month': '4',\n            'mydate_day': '22',\n            'initial-mydate': HiddenInput()._format_value(datetime.date(2008, 4, 1))\n        }, initial={'mydate': datetime.date(2008, 4, 22)})\n        self.assertTrue(b.has_changed())\n\n        b = GetDateShowHiddenInitial({\n            'mydate_year': '2008',\n            'mydate_month': '4',\n            'mydate_day': '22',\n            'initial-mydate': HiddenInput()._format_value(datetime.date(2008, 4, 22))\n        }, initial={'mydate': datetime.date(2008, 4, 1)})\n        self.assertFalse(b.has_changed())\n\n    def test_l10n_invalid_date_in(self):\n        # Invalid dates shouldn't be allowed\n        a = GetDate({'mydate_month':'2', 'mydate_day':'31', 'mydate_year':'2010'})\n        self.assertFalse(a.is_valid())\n        # 'Geef een geldige datum op.' = 'Enter a valid date.'\n        self.assertEqual(a.errors, {'mydate': ['Geef een geldige datum op.']})\n\n    def test_form_label_association(self):\n        # label tag is correctly associated with first rendered dropdown\n        a = GetDate({'mydate_month':'1', 'mydate_day':'1', 'mydate_year':'2010'})\n        self.assertTrue('<label for=\"id_mydate_day\">' in a.as_p())\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/forms/tests/fields.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\n##########\n# Fields #\n##########\n\nEach Field class does some sort of validation. Each Field has a clean() method,\nwhich either raises django.forms.ValidationError or returns the \"clean\"\ndata -- usually a Unicode object, but, in some rare cases, a list.\n\nEach Field's __init__() takes at least these parameters:\n    required -- Boolean that specifies whether the field is required.\n                True by default.\n    widget -- A Widget class, or instance of a Widget class, that should be\n              used for this Field when displaying it. Each Field has a default\n              Widget that it'll use if you don't specify this. In most cases,\n              the default widget is TextInput.\n    label -- A verbose name for this field, for use in displaying this field in\n             a form. By default, Django will use a \"pretty\" version of the form\n             field name, if the Field is part of a Form.\n    initial -- A value to use in this Field's initial display. This value is\n               *not* used as a fallback if data isn't given.\n\nOther than that, the Field subclasses have class-specific options for\n__init__(). For example, CharField has a max_length option.\n\"\"\"\nfrom __future__ import unicode_literals\n\nimport datetime\nimport pickle\nimport re\nimport os\nfrom decimal import Decimal\n\nfrom django.core.files.uploadedfile import SimpleUploadedFile\nfrom django.forms import *\nfrom django.test import SimpleTestCase\nfrom django.utils import six\nfrom django.utils._os import upath\n\n\ndef fix_os_paths(x):\n    if isinstance(x, six.string_types):\n        return x.replace('\\\\', '/')\n    elif isinstance(x, tuple):\n        return tuple(fix_os_paths(list(x)))\n    elif isinstance(x, list):\n        return [fix_os_paths(y) for y in x]\n    else:\n        return x\n\n\nclass FieldsTests(SimpleTestCase):\n\n    def test_field_sets_widget_is_required(self):\n        self.assertTrue(Field(required=True).widget.is_required)\n        self.assertFalse(Field(required=False).widget.is_required)\n\n    # CharField ###################################################################\n\n    def test_charfield_1(self):\n        f = CharField()\n        self.assertEqual('1', f.clean(1))\n        self.assertEqual('hello', f.clean('hello'))\n        self.assertRaisesMessage(ValidationError, \"'This field is required.'\", f.clean, None)\n        self.assertRaisesMessage(ValidationError, \"'This field is required.'\", f.clean, '')\n        self.assertEqual('[1, 2, 3]', f.clean([1, 2, 3]))\n        self.assertEqual(f.max_length, None)\n        self.assertEqual(f.min_length, None)\n\n    def test_charfield_2(self):\n        f = CharField(required=False)\n        self.assertEqual('1', f.clean(1))\n        self.assertEqual('hello', f.clean('hello'))\n        self.assertEqual('', f.clean(None))\n        self.assertEqual('', f.clean(''))\n        self.assertEqual('[1, 2, 3]', f.clean([1, 2, 3]))\n        self.assertEqual(f.max_length, None)\n        self.assertEqual(f.min_length, None)\n\n    def test_charfield_3(self):\n        f = CharField(max_length=10, required=False)\n        self.assertEqual('12345', f.clean('12345'))\n        self.assertEqual('1234567890', f.clean('1234567890'))\n        self.assertRaisesMessage(ValidationError, \"'Ensure this value has at most 10 characters (it has 11).'\", f.clean, '1234567890a')\n        self.assertEqual(f.max_length, 10)\n        self.assertEqual(f.min_length, None)\n\n    def test_charfield_4(self):\n        f = CharField(min_length=10, required=False)\n        self.assertEqual('', f.clean(''))\n        self.assertRaisesMessage(ValidationError, \"'Ensure this value has at least 10 characters (it has 5).'\", f.clean, '12345')\n        self.assertEqual('1234567890', f.clean('1234567890'))\n        self.assertEqual('1234567890a', f.clean('1234567890a'))\n        self.assertEqual(f.max_length, None)\n        self.assertEqual(f.min_length, 10)\n\n    def test_charfield_5(self):\n        f = CharField(min_length=10, required=True)\n        self.assertRaisesMessage(ValidationError, \"'This field is required.'\", f.clean, '')\n        self.assertRaisesMessage(ValidationError, \"'Ensure this value has at least 10 characters (it has 5).'\", f.clean, '12345')\n        self.assertEqual('1234567890', f.clean('1234567890'))\n        self.assertEqual('1234567890a', f.clean('1234567890a'))\n        self.assertEqual(f.max_length, None)\n        self.assertEqual(f.min_length, 10)\n\n    def test_charfield_widget_attrs(self):\n        \"\"\"\n        Ensure that CharField.widget_attrs() always returns a dictionary.\n        Refs #15912\n        \"\"\"\n        # Return an empty dictionary if max_length is None\n        f = CharField()\n        self.assertEqual(f.widget_attrs(TextInput()), {})\n\n        # Or if the widget is not TextInput or PasswordInput\n        f = CharField(max_length=10)\n        self.assertEqual(f.widget_attrs(HiddenInput()), {})\n\n        # Otherwise, return a maxlength attribute equal to max_length\n        self.assertEqual(f.widget_attrs(TextInput()), {'maxlength': '10'})\n        self.assertEqual(f.widget_attrs(PasswordInput()), {'maxlength': '10'})\n\n    # IntegerField ################################################################\n\n    def test_integerfield_1(self):\n        f = IntegerField()\n        self.assertRaisesMessage(ValidationError, \"'This field is required.'\", f.clean, '')\n        self.assertRaisesMessage(ValidationError, \"'This field is required.'\", f.clean, None)\n        self.assertEqual(1, f.clean('1'))\n        self.assertEqual(True, isinstance(f.clean('1'), int))\n        self.assertEqual(23, f.clean('23'))\n        self.assertRaisesMessage(ValidationError, \"'Enter a whole number.'\", f.clean, 'a')\n        self.assertEqual(42, f.clean(42))\n        self.assertRaisesMessage(ValidationError, \"'Enter a whole number.'\", f.clean, 3.14)\n        self.assertEqual(1, f.clean('1 '))\n        self.assertEqual(1, f.clean(' 1'))\n        self.assertEqual(1, f.clean(' 1 '))\n        self.assertRaisesMessage(ValidationError, \"'Enter a whole number.'\", f.clean, '1a')\n        self.assertEqual(f.max_value, None)\n        self.assertEqual(f.min_value, None)\n\n    def test_integerfield_2(self):\n        f = IntegerField(required=False)\n        self.assertEqual(None, f.clean(''))\n        self.assertEqual('None', repr(f.clean('')))\n        self.assertEqual(None, f.clean(None))\n        self.assertEqual('None', repr(f.clean(None)))\n        self.assertEqual(1, f.clean('1'))\n        self.assertEqual(True, isinstance(f.clean('1'), int))\n        self.assertEqual(23, f.clean('23'))\n        self.assertRaisesMessage(ValidationError, \"'Enter a whole number.'\", f.clean, 'a')\n        self.assertEqual(1, f.clean('1 '))\n        self.assertEqual(1, f.clean(' 1'))\n        self.assertEqual(1, f.clean(' 1 '))\n        self.assertRaisesMessage(ValidationError, \"'Enter a whole number.'\", f.clean, '1a')\n        self.assertEqual(f.max_value, None)\n        self.assertEqual(f.min_value, None)\n\n    def test_integerfield_3(self):\n        f = IntegerField(max_value=10)\n        self.assertRaisesMessage(ValidationError, \"'This field is required.'\", f.clean, None)\n        self.assertEqual(1, f.clean(1))\n        self.assertEqual(10, f.clean(10))\n        self.assertRaisesMessage(ValidationError, \"'Ensure this value is less than or equal to 10.'\", f.clean, 11)\n        self.assertEqual(10, f.clean('10'))\n        self.assertRaisesMessage(ValidationError, \"'Ensure this value is less than or equal to 10.'\", f.clean, '11')\n        self.assertEqual(f.max_value, 10)\n        self.assertEqual(f.min_value, None)\n\n    def test_integerfield_4(self):\n        f = IntegerField(min_value=10)\n        self.assertRaisesMessage(ValidationError, \"'This field is required.'\", f.clean, None)\n        self.assertRaisesMessage(ValidationError, \"'Ensure this value is greater than or equal to 10.'\", f.clean, 1)\n        self.assertEqual(10, f.clean(10))\n        self.assertEqual(11, f.clean(11))\n        self.assertEqual(10, f.clean('10'))\n        self.assertEqual(11, f.clean('11'))\n        self.assertEqual(f.max_value, None)\n        self.assertEqual(f.min_value, 10)\n\n    def test_integerfield_5(self):\n        f = IntegerField(min_value=10, max_value=20)\n        self.assertRaisesMessage(ValidationError, \"'This field is required.'\", f.clean, None)\n        self.assertRaisesMessage(ValidationError, \"'Ensure this value is greater than or equal to 10.'\", f.clean, 1)\n        self.assertEqual(10, f.clean(10))\n        self.assertEqual(11, f.clean(11))\n        self.assertEqual(10, f.clean('10'))\n        self.assertEqual(11, f.clean('11'))\n        self.assertEqual(20, f.clean(20))\n        self.assertRaisesMessage(ValidationError, \"'Ensure this value is less than or equal to 20.'\", f.clean, 21)\n        self.assertEqual(f.max_value, 20)\n        self.assertEqual(f.min_value, 10)\n\n    # FloatField ##################################################################\n\n    def test_floatfield_1(self):\n        f = FloatField()\n        self.assertRaisesMessage(ValidationError, \"'This field is required.'\", f.clean, '')\n        self.assertRaisesMessage(ValidationError, \"'This field is required.'\", f.clean, None)\n        self.assertEqual(1.0, f.clean('1'))\n        self.assertEqual(True, isinstance(f.clean('1'), float))\n        self.assertEqual(23.0, f.clean('23'))\n        self.assertEqual(3.1400000000000001, f.clean('3.14'))\n        self.assertEqual(3.1400000000000001, f.clean(3.14))\n        self.assertEqual(42.0, f.clean(42))\n        self.assertRaisesMessage(ValidationError, \"'Enter a number.'\", f.clean, 'a')\n        self.assertEqual(1.0, f.clean('1.0 '))\n        self.assertEqual(1.0, f.clean(' 1.0'))\n        self.assertEqual(1.0, f.clean(' 1.0 '))\n        self.assertRaisesMessage(ValidationError, \"'Enter a number.'\", f.clean, '1.0a')\n        self.assertEqual(f.max_value, None)\n        self.assertEqual(f.min_value, None)\n\n    def test_floatfield_2(self):\n        f = FloatField(required=False)\n        self.assertEqual(None, f.clean(''))\n        self.assertEqual(None, f.clean(None))\n        self.assertEqual(1.0, f.clean('1'))\n        self.assertEqual(f.max_value, None)\n        self.assertEqual(f.min_value, None)\n\n    def test_floatfield_3(self):\n        f = FloatField(max_value=1.5, min_value=0.5)\n        self.assertRaisesMessage(ValidationError, \"'Ensure this value is less than or equal to 1.5.'\", f.clean, '1.6')\n        self.assertRaisesMessage(ValidationError, \"'Ensure this value is greater than or equal to 0.5.'\", f.clean, '0.4')\n        self.assertEqual(1.5, f.clean('1.5'))\n        self.assertEqual(0.5, f.clean('0.5'))\n        self.assertEqual(f.max_value, 1.5)\n        self.assertEqual(f.min_value, 0.5)\n\n    # DecimalField ################################################################\n\n    def test_decimalfield_1(self):\n        f = DecimalField(max_digits=4, decimal_places=2)\n        self.assertRaisesMessage(ValidationError, \"'This field is required.'\", f.clean, '')\n        self.assertRaisesMessage(ValidationError, \"'This field is required.'\", f.clean, None)\n        self.assertEqual(f.clean('1'), Decimal(\"1\"))\n        self.assertEqual(True, isinstance(f.clean('1'), Decimal))\n        self.assertEqual(f.clean('23'), Decimal(\"23\"))\n        self.assertEqual(f.clean('3.14'), Decimal(\"3.14\"))\n        self.assertEqual(f.clean(3.14), Decimal(\"3.14\"))\n        self.assertEqual(f.clean(Decimal('3.14')), Decimal(\"3.14\"))\n        self.assertRaisesMessage(ValidationError, \"'Enter a number.'\", f.clean, 'NaN')\n        self.assertRaisesMessage(ValidationError, \"'Enter a number.'\", f.clean, 'Inf')\n        self.assertRaisesMessage(ValidationError, \"'Enter a number.'\", f.clean, '-Inf')\n        self.assertRaisesMessage(ValidationError, \"'Enter a number.'\", f.clean, 'a')\n        self.assertRaisesMessage(ValidationError, \"'Enter a number.'\", f.clean, 'łąść')\n        self.assertEqual(f.clean('1.0 '), Decimal(\"1.0\"))\n        self.assertEqual(f.clean(' 1.0'), Decimal(\"1.0\"))\n        self.assertEqual(f.clean(' 1.0 '), Decimal(\"1.0\"))\n        self.assertRaisesMessage(ValidationError, \"'Enter a number.'\", f.clean, '1.0a')\n        self.assertRaisesMessage(ValidationError, \"'Ensure that there are no more than 4 digits in total.'\", f.clean, '123.45')\n        self.assertRaisesMessage(ValidationError, \"'Ensure that there are no more than 2 decimal places.'\", f.clean, '1.234')\n        self.assertRaisesMessage(ValidationError, \"'Ensure that there are no more than 2 digits before the decimal point.'\", f.clean, '123.4')\n        self.assertEqual(f.clean('-12.34'), Decimal(\"-12.34\"))\n        self.assertRaisesMessage(ValidationError, \"'Ensure that there are no more than 4 digits in total.'\", f.clean, '-123.45')\n        self.assertEqual(f.clean('-.12'), Decimal(\"-0.12\"))\n        self.assertEqual(f.clean('-00.12'), Decimal(\"-0.12\"))\n        self.assertEqual(f.clean('-000.12'), Decimal(\"-0.12\"))\n        self.assertRaisesMessage(ValidationError, \"'Ensure that there are no more than 2 decimal places.'\", f.clean, '-000.123')\n        self.assertRaisesMessage(ValidationError, \"'Ensure that there are no more than 4 digits in total.'\", f.clean, '-000.12345')\n        self.assertRaisesMessage(ValidationError, \"'Enter a number.'\", f.clean, '--0.12')\n        self.assertEqual(f.max_digits, 4)\n        self.assertEqual(f.decimal_places, 2)\n        self.assertEqual(f.max_value, None)\n        self.assertEqual(f.min_value, None)\n\n    def test_decimalfield_2(self):\n        f = DecimalField(max_digits=4, decimal_places=2, required=False)\n        self.assertEqual(None, f.clean(''))\n        self.assertEqual(None, f.clean(None))\n        self.assertEqual(f.clean('1'), Decimal(\"1\"))\n        self.assertEqual(f.max_digits, 4)\n        self.assertEqual(f.decimal_places, 2)\n        self.assertEqual(f.max_value, None)\n        self.assertEqual(f.min_value, None)\n\n    def test_decimalfield_3(self):\n        f = DecimalField(max_digits=4, decimal_places=2, max_value=Decimal('1.5'), min_value=Decimal('0.5'))\n        self.assertRaisesMessage(ValidationError, \"'Ensure this value is less than or equal to 1.5.'\", f.clean, '1.6')\n        self.assertRaisesMessage(ValidationError, \"'Ensure this value is greater than or equal to 0.5.'\", f.clean, '0.4')\n        self.assertEqual(f.clean('1.5'), Decimal(\"1.5\"))\n        self.assertEqual(f.clean('0.5'), Decimal(\"0.5\"))\n        self.assertEqual(f.clean('.5'), Decimal(\"0.5\"))\n        self.assertEqual(f.clean('00.50'), Decimal(\"0.50\"))\n        self.assertEqual(f.max_digits, 4)\n        self.assertEqual(f.decimal_places, 2)\n        self.assertEqual(f.max_value, Decimal('1.5'))\n        self.assertEqual(f.min_value, Decimal('0.5'))\n\n    def test_decimalfield_4(self):\n        f = DecimalField(decimal_places=2)\n        self.assertRaisesMessage(ValidationError, \"'Ensure that there are no more than 2 decimal places.'\", f.clean, '0.00000001')\n\n    def test_decimalfield_5(self):\n        f = DecimalField(max_digits=3)\n        # Leading whole zeros \"collapse\" to one digit.\n        self.assertEqual(f.clean('0000000.10'), Decimal(\"0.1\"))\n        # But a leading 0 before the . doesn't count towards max_digits\n        self.assertEqual(f.clean('0000000.100'), Decimal(\"0.100\"))\n        # Only leading whole zeros \"collapse\" to one digit.\n        self.assertEqual(f.clean('000000.02'), Decimal('0.02'))\n        self.assertRaisesMessage(ValidationError, \"'Ensure that there are no more than 3 digits in total.'\", f.clean, '000000.0002')\n        self.assertEqual(f.clean('.002'), Decimal(\"0.002\"))\n\n    def test_decimalfield_6(self):\n        f = DecimalField(max_digits=2, decimal_places=2)\n        self.assertEqual(f.clean('.01'), Decimal(\".01\"))\n        self.assertRaisesMessage(ValidationError, \"'Ensure that there are no more than 0 digits before the decimal point.'\", f.clean, '1.1')\n\n    # DateField ###################################################################\n\n    def test_datefield_1(self):\n        f = DateField()\n        self.assertEqual(datetime.date(2006, 10, 25), f.clean(datetime.date(2006, 10, 25)))\n        self.assertEqual(datetime.date(2006, 10, 25), f.clean(datetime.datetime(2006, 10, 25, 14, 30)))\n        self.assertEqual(datetime.date(2006, 10, 25), f.clean(datetime.datetime(2006, 10, 25, 14, 30, 59)))\n        self.assertEqual(datetime.date(2006, 10, 25), f.clean(datetime.datetime(2006, 10, 25, 14, 30, 59, 200)))\n        self.assertEqual(datetime.date(2006, 10, 25), f.clean('2006-10-25'))\n        self.assertEqual(datetime.date(2006, 10, 25), f.clean('10/25/2006'))\n        self.assertEqual(datetime.date(2006, 10, 25), f.clean('10/25/06'))\n        self.assertEqual(datetime.date(2006, 10, 25), f.clean('Oct 25 2006'))\n        self.assertEqual(datetime.date(2006, 10, 25), f.clean('October 25 2006'))\n        self.assertEqual(datetime.date(2006, 10, 25), f.clean('October 25, 2006'))\n        self.assertEqual(datetime.date(2006, 10, 25), f.clean('25 October 2006'))\n        self.assertEqual(datetime.date(2006, 10, 25), f.clean('25 October, 2006'))\n        self.assertRaisesMessage(ValidationError, \"'Enter a valid date.'\", f.clean, '2006-4-31')\n        self.assertRaisesMessage(ValidationError, \"'Enter a valid date.'\", f.clean, '200a-10-25')\n        self.assertRaisesMessage(ValidationError, \"'Enter a valid date.'\", f.clean, '25/10/06')\n        self.assertRaisesMessage(ValidationError, \"'This field is required.'\", f.clean, None)\n\n    def test_datefield_2(self):\n        f = DateField(required=False)\n        self.assertEqual(None, f.clean(None))\n        self.assertEqual('None', repr(f.clean(None)))\n        self.assertEqual(None, f.clean(''))\n        self.assertEqual('None', repr(f.clean('')))\n\n    def test_datefield_3(self):\n        f = DateField(input_formats=['%Y %m %d'])\n        self.assertEqual(datetime.date(2006, 10, 25), f.clean(datetime.date(2006, 10, 25)))\n        self.assertEqual(datetime.date(2006, 10, 25), f.clean(datetime.datetime(2006, 10, 25, 14, 30)))\n        self.assertEqual(datetime.date(2006, 10, 25), f.clean('2006 10 25'))\n        self.assertRaisesMessage(ValidationError, \"'Enter a valid date.'\", f.clean, '2006-10-25')\n        self.assertRaisesMessage(ValidationError, \"'Enter a valid date.'\", f.clean, '10/25/2006')\n        self.assertRaisesMessage(ValidationError, \"'Enter a valid date.'\", f.clean, '10/25/06')\n\n    def test_datefield_4(self):\n        # Test whitespace stripping behavior (#5714)\n        f = DateField()\n        self.assertEqual(datetime.date(2006, 10, 25), f.clean(' 10/25/2006 '))\n        self.assertEqual(datetime.date(2006, 10, 25), f.clean(' 10/25/06 '))\n        self.assertEqual(datetime.date(2006, 10, 25), f.clean(' Oct 25   2006 '))\n        self.assertEqual(datetime.date(2006, 10, 25), f.clean(' October  25 2006 '))\n        self.assertEqual(datetime.date(2006, 10, 25), f.clean(' October 25, 2006 '))\n        self.assertEqual(datetime.date(2006, 10, 25), f.clean(' 25 October 2006 '))\n        self.assertRaisesMessage(ValidationError, \"'Enter a valid date.'\", f.clean, '   ')\n\n    def test_datefield_5(self):\n        # Test null bytes (#18982)\n        f = DateField()\n        self.assertRaisesMessage(ValidationError, \"'Enter a valid date.'\", f.clean, 'a\\x00b')\n\n    # TimeField ###################################################################\n\n    def test_timefield_1(self):\n        f = TimeField()\n        self.assertEqual(datetime.time(14, 25), f.clean(datetime.time(14, 25)))\n        self.assertEqual(datetime.time(14, 25, 59), f.clean(datetime.time(14, 25, 59)))\n        self.assertEqual(datetime.time(14, 25), f.clean('14:25'))\n        self.assertEqual(datetime.time(14, 25, 59), f.clean('14:25:59'))\n        self.assertRaisesMessage(ValidationError, \"'Enter a valid time.'\", f.clean, 'hello')\n        self.assertRaisesMessage(ValidationError, \"'Enter a valid time.'\", f.clean, '1:24 p.m.')\n\n    def test_timefield_2(self):\n        f = TimeField(input_formats=['%I:%M %p'])\n        self.assertEqual(datetime.time(14, 25), f.clean(datetime.time(14, 25)))\n        self.assertEqual(datetime.time(14, 25, 59), f.clean(datetime.time(14, 25, 59)))\n        self.assertEqual(datetime.time(4, 25), f.clean('4:25 AM'))\n        self.assertEqual(datetime.time(16, 25), f.clean('4:25 PM'))\n        self.assertRaisesMessage(ValidationError, \"'Enter a valid time.'\", f.clean, '14:30:45')\n\n    def test_timefield_3(self):\n        f = TimeField()\n        # Test whitespace stripping behavior (#5714)\n        self.assertEqual(datetime.time(14, 25), f.clean(' 14:25 '))\n        self.assertEqual(datetime.time(14, 25, 59), f.clean(' 14:25:59 '))\n        self.assertRaisesMessage(ValidationError, \"'Enter a valid time.'\", f.clean, '   ')\n\n    # DateTimeField ###############################################################\n\n    def test_datetimefield_1(self):\n        f = DateTimeField()\n        self.assertEqual(datetime.datetime(2006, 10, 25, 0, 0), f.clean(datetime.date(2006, 10, 25)))\n        self.assertEqual(datetime.datetime(2006, 10, 25, 14, 30), f.clean(datetime.datetime(2006, 10, 25, 14, 30)))\n        self.assertEqual(datetime.datetime(2006, 10, 25, 14, 30, 59), f.clean(datetime.datetime(2006, 10, 25, 14, 30, 59)))\n        self.assertEqual(datetime.datetime(2006, 10, 25, 14, 30, 59, 200), f.clean(datetime.datetime(2006, 10, 25, 14, 30, 59, 200)))\n        self.assertEqual(datetime.datetime(2006, 10, 25, 14, 30, 45, 200), f.clean('2006-10-25 14:30:45.000200'))\n        self.assertEqual(datetime.datetime(2006, 10, 25, 14, 30, 45, 200), f.clean('2006-10-25 14:30:45.0002'))\n        self.assertEqual(datetime.datetime(2006, 10, 25, 14, 30, 45), f.clean('2006-10-25 14:30:45'))\n        self.assertEqual(datetime.datetime(2006, 10, 25, 14, 30), f.clean('2006-10-25 14:30:00'))\n        self.assertEqual(datetime.datetime(2006, 10, 25, 14, 30), f.clean('2006-10-25 14:30'))\n        self.assertEqual(datetime.datetime(2006, 10, 25, 0, 0), f.clean('2006-10-25'))\n        self.assertEqual(datetime.datetime(2006, 10, 25, 14, 30, 45, 200), f.clean('10/25/2006 14:30:45.000200'))\n        self.assertEqual(datetime.datetime(2006, 10, 25, 14, 30, 45), f.clean('10/25/2006 14:30:45'))\n        self.assertEqual(datetime.datetime(2006, 10, 25, 14, 30), f.clean('10/25/2006 14:30:00'))\n        self.assertEqual(datetime.datetime(2006, 10, 25, 14, 30), f.clean('10/25/2006 14:30'))\n        self.assertEqual(datetime.datetime(2006, 10, 25, 0, 0), f.clean('10/25/2006'))\n        self.assertEqual(datetime.datetime(2006, 10, 25, 14, 30, 45, 200), f.clean('10/25/06 14:30:45.000200'))\n        self.assertEqual(datetime.datetime(2006, 10, 25, 14, 30, 45), f.clean('10/25/06 14:30:45'))\n        self.assertEqual(datetime.datetime(2006, 10, 25, 14, 30), f.clean('10/25/06 14:30:00'))\n        self.assertEqual(datetime.datetime(2006, 10, 25, 14, 30), f.clean('10/25/06 14:30'))\n        self.assertEqual(datetime.datetime(2006, 10, 25, 0, 0), f.clean('10/25/06'))\n        self.assertRaisesMessage(ValidationError, \"'Enter a valid date/time.'\", f.clean, 'hello')\n        self.assertRaisesMessage(ValidationError, \"'Enter a valid date/time.'\", f.clean, '2006-10-25 4:30 p.m.')\n\n    def test_datetimefield_2(self):\n        f = DateTimeField(input_formats=['%Y %m %d %I:%M %p'])\n        self.assertEqual(datetime.datetime(2006, 10, 25, 0, 0), f.clean(datetime.date(2006, 10, 25)))\n        self.assertEqual(datetime.datetime(2006, 10, 25, 14, 30), f.clean(datetime.datetime(2006, 10, 25, 14, 30)))\n        self.assertEqual(datetime.datetime(2006, 10, 25, 14, 30, 59), f.clean(datetime.datetime(2006, 10, 25, 14, 30, 59)))\n        self.assertEqual(datetime.datetime(2006, 10, 25, 14, 30, 59, 200), f.clean(datetime.datetime(2006, 10, 25, 14, 30, 59, 200)))\n        self.assertEqual(datetime.datetime(2006, 10, 25, 14, 30), f.clean('2006 10 25 2:30 PM'))\n        self.assertRaisesMessage(ValidationError, \"'Enter a valid date/time.'\", f.clean, '2006-10-25 14:30:45')\n\n    def test_datetimefield_3(self):\n        f = DateTimeField(required=False)\n        self.assertEqual(None, f.clean(None))\n        self.assertEqual('None', repr(f.clean(None)))\n        self.assertEqual(None, f.clean(''))\n        self.assertEqual('None', repr(f.clean('')))\n\n    def test_datetimefield_4(self):\n        f = DateTimeField()\n        # Test whitespace stripping behavior (#5714)\n        self.assertEqual(datetime.datetime(2006, 10, 25, 14, 30, 45), f.clean(' 2006-10-25   14:30:45 '))\n        self.assertEqual(datetime.datetime(2006, 10, 25, 0, 0), f.clean(' 2006-10-25 '))\n        self.assertEqual(datetime.datetime(2006, 10, 25, 14, 30, 45), f.clean(' 10/25/2006 14:30:45 '))\n        self.assertEqual(datetime.datetime(2006, 10, 25, 14, 30), f.clean(' 10/25/2006 14:30 '))\n        self.assertEqual(datetime.datetime(2006, 10, 25, 0, 0), f.clean(' 10/25/2006 '))\n        self.assertEqual(datetime.datetime(2006, 10, 25, 14, 30, 45), f.clean(' 10/25/06 14:30:45 '))\n        self.assertEqual(datetime.datetime(2006, 10, 25, 0, 0), f.clean(' 10/25/06 '))\n        self.assertRaisesMessage(ValidationError, \"'Enter a valid date/time.'\", f.clean, '   ')\n\n    def test_datetimefield_5(self):\n        f = DateTimeField(input_formats=['%Y.%m.%d %H:%M:%S.%f'])\n        self.assertEqual(datetime.datetime(2006, 10, 25, 14, 30, 45, 200), f.clean('2006.10.25 14:30:45.0002'))\n    # RegexField ##################################################################\n\n    def test_regexfield_1(self):\n        f = RegexField('^\\d[A-F]\\d$')\n        self.assertEqual('2A2', f.clean('2A2'))\n        self.assertEqual('3F3', f.clean('3F3'))\n        self.assertRaisesMessage(ValidationError, \"'Enter a valid value.'\", f.clean, '3G3')\n        self.assertRaisesMessage(ValidationError, \"'Enter a valid value.'\", f.clean, ' 2A2')\n        self.assertRaisesMessage(ValidationError, \"'Enter a valid value.'\", f.clean, '2A2 ')\n        self.assertRaisesMessage(ValidationError, \"'This field is required.'\", f.clean, '')\n\n    def test_regexfield_2(self):\n        f = RegexField('^\\d[A-F]\\d$', required=False)\n        self.assertEqual('2A2', f.clean('2A2'))\n        self.assertEqual('3F3', f.clean('3F3'))\n        self.assertRaisesMessage(ValidationError, \"'Enter a valid value.'\", f.clean, '3G3')\n        self.assertEqual('', f.clean(''))\n\n    def test_regexfield_3(self):\n        f = RegexField(re.compile('^\\d[A-F]\\d$'))\n        self.assertEqual('2A2', f.clean('2A2'))\n        self.assertEqual('3F3', f.clean('3F3'))\n        self.assertRaisesMessage(ValidationError, \"'Enter a valid value.'\", f.clean, '3G3')\n        self.assertRaisesMessage(ValidationError, \"'Enter a valid value.'\", f.clean, ' 2A2')\n        self.assertRaisesMessage(ValidationError, \"'Enter a valid value.'\", f.clean, '2A2 ')\n\n    def test_regexfield_4(self):\n        f = RegexField('^\\d\\d\\d\\d$', error_message='Enter a four-digit number.')\n        self.assertEqual('1234', f.clean('1234'))\n        self.assertRaisesMessage(ValidationError, \"'Enter a four-digit number.'\", f.clean, '123')\n        self.assertRaisesMessage(ValidationError, \"'Enter a four-digit number.'\", f.clean, 'abcd')\n\n    def test_regexfield_5(self):\n        f = RegexField('^\\d+$', min_length=5, max_length=10)\n        self.assertRaisesMessage(ValidationError, \"'Ensure this value has at least 5 characters (it has 3).'\", f.clean, '123')\n        six.assertRaisesRegex(self, ValidationError, \"'Ensure this value has at least 5 characters \\(it has 3\\)\\.', u?'Enter a valid value\\.'\", f.clean, 'abc')\n        self.assertEqual('12345', f.clean('12345'))\n        self.assertEqual('1234567890', f.clean('1234567890'))\n        self.assertRaisesMessage(ValidationError, \"'Ensure this value has at most 10 characters (it has 11).'\", f.clean, '12345678901')\n        self.assertRaisesMessage(ValidationError, \"'Enter a valid value.'\", f.clean, '12345a')\n\n    def test_regexfield_6(self):\n        \"\"\"\n        Ensure that it works with unicode characters.\n        Refs #.\n        \"\"\"\n        f = RegexField('^\\w+$')\n        self.assertEqual('éèøçÎÎ你好', f.clean('éèøçÎÎ你好'))\n\n    def test_change_regex_after_init(self):\n        f = RegexField('^[a-z]+$')\n        f.regex = '^\\d+$'\n        self.assertEqual('1234', f.clean('1234'))\n        self.assertRaisesMessage(ValidationError, \"'Enter a valid value.'\", f.clean, 'abcd')\n\n    # EmailField ##################################################################\n    # See also modeltests/validators tests for validate_email specific tests\n\n    def test_emailfield_1(self):\n        f = EmailField()\n        self.assertRaisesMessage(ValidationError, \"'This field is required.'\", f.clean, '')\n        self.assertRaisesMessage(ValidationError, \"'This field is required.'\", f.clean, None)\n        self.assertEqual('person@example.com', f.clean('person@example.com'))\n        self.assertRaisesMessage(ValidationError, \"'Enter a valid email address.'\", f.clean, 'foo')\n        self.assertEqual('local@domain.with.idn.xyz\\xe4\\xf6\\xfc\\xdfabc.part.com',\n            f.clean('local@domain.with.idn.xyzäöüßabc.part.com'))\n\n    def test_email_regexp_for_performance(self):\n        f = EmailField()\n        # Check for runaway regex security problem. This will take for-freeking-ever\n        # if the security fix isn't in place.\n        addr = 'viewx3dtextx26qx3d@yahoo.comx26latlngx3d15854521645943074058'\n        self.assertEqual(addr, f.clean(addr))\n\n    def test_emailfield_not_required(self):\n        f = EmailField(required=False)\n        self.assertEqual('', f.clean(''))\n        self.assertEqual('', f.clean(None))\n        self.assertEqual('person@example.com', f.clean('person@example.com'))\n        self.assertEqual('example@example.com', f.clean('      example@example.com  \\t   \\t '))\n        self.assertRaisesMessage(ValidationError, \"'Enter a valid email address.'\", f.clean, 'foo')\n\n    def test_emailfield_min_max_length(self):\n        f = EmailField(min_length=10, max_length=15)\n        self.assertRaisesMessage(ValidationError, \"'Ensure this value has at least 10 characters (it has 9).'\", f.clean, 'a@foo.com')\n        self.assertEqual('alf@foo.com', f.clean('alf@foo.com'))\n        self.assertRaisesMessage(ValidationError, \"'Ensure this value has at most 15 characters (it has 20).'\", f.clean, 'alf123456788@foo.com')\n\n    # FileField ##################################################################\n\n    def test_filefield_1(self):\n        f = FileField()\n        self.assertRaisesMessage(ValidationError, \"'This field is required.'\", f.clean, '')\n        self.assertRaisesMessage(ValidationError, \"'This field is required.'\", f.clean, '', '')\n        self.assertEqual('files/test1.pdf', f.clean('', 'files/test1.pdf'))\n        self.assertRaisesMessage(ValidationError, \"'This field is required.'\", f.clean, None)\n        self.assertRaisesMessage(ValidationError, \"'This field is required.'\", f.clean, None, '')\n        self.assertEqual('files/test2.pdf', f.clean(None, 'files/test2.pdf'))\n        self.assertRaisesMessage(ValidationError, \"'No file was submitted. Check the encoding type on the form.'\", f.clean, SimpleUploadedFile('', b''))\n        self.assertRaisesMessage(ValidationError, \"'No file was submitted. Check the encoding type on the form.'\", f.clean, SimpleUploadedFile('', b''), '')\n        self.assertEqual('files/test3.pdf', f.clean(None, 'files/test3.pdf'))\n        self.assertRaisesMessage(ValidationError, \"'No file was submitted. Check the encoding type on the form.'\", f.clean, 'some content that is not a file')\n        self.assertRaisesMessage(ValidationError, \"'The submitted file is empty.'\", f.clean, SimpleUploadedFile('name', None))\n        self.assertRaisesMessage(ValidationError, \"'The submitted file is empty.'\", f.clean, SimpleUploadedFile('name', b''))\n        self.assertEqual(SimpleUploadedFile, type(f.clean(SimpleUploadedFile('name', b'Some File Content'))))\n        self.assertEqual(SimpleUploadedFile, type(f.clean(SimpleUploadedFile('我隻氣墊船裝滿晒鱔.txt', 'मेरी मँडराने वाली नाव सर्पमीनों से भरी ह'.encode('utf-8')))))\n        self.assertEqual(SimpleUploadedFile, type(f.clean(SimpleUploadedFile('name', b'Some File Content'), 'files/test4.pdf')))\n\n    def test_filefield_2(self):\n        f = FileField(max_length = 5)\n        self.assertRaisesMessage(ValidationError, \"'Ensure this filename has at most 5 characters (it has 18).'\", f.clean, SimpleUploadedFile('test_maxlength.txt', b'hello world'))\n        self.assertEqual('files/test1.pdf', f.clean('', 'files/test1.pdf'))\n        self.assertEqual('files/test2.pdf', f.clean(None, 'files/test2.pdf'))\n        self.assertEqual(SimpleUploadedFile, type(f.clean(SimpleUploadedFile('name', b'Some File Content'))))\n\n    def test_filefield_3(self):\n        f = FileField(allow_empty_file=True)\n        self.assertEqual(SimpleUploadedFile,\n                         type(f.clean(SimpleUploadedFile('name', b''))))\n\n    # URLField ##################################################################\n\n    def test_urlfield_1(self):\n        f = URLField()\n        self.assertRaisesMessage(ValidationError, \"'This field is required.'\", f.clean, '')\n        self.assertRaisesMessage(ValidationError, \"'This field is required.'\", f.clean, None)\n        self.assertEqual('http://localhost/', f.clean('http://localhost'))\n        self.assertEqual('http://example.com/', f.clean('http://example.com'))\n        self.assertEqual('http://example.com./', f.clean('http://example.com.'))\n        self.assertEqual('http://www.example.com/', f.clean('http://www.example.com'))\n        self.assertEqual('http://www.example.com:8000/test', f.clean('http://www.example.com:8000/test'))\n        self.assertEqual('http://valid-with-hyphens.com/', f.clean('valid-with-hyphens.com'))\n        self.assertEqual('http://subdomain.domain.com/', f.clean('subdomain.domain.com'))\n        self.assertEqual('http://200.8.9.10/', f.clean('http://200.8.9.10'))\n        self.assertEqual('http://200.8.9.10:8000/test', f.clean('http://200.8.9.10:8000/test'))\n        self.assertRaisesMessage(ValidationError, \"'Enter a valid URL.'\", f.clean, 'foo')\n        self.assertRaisesMessage(ValidationError, \"'Enter a valid URL.'\", f.clean, 'http://')\n        self.assertRaisesMessage(ValidationError, \"'Enter a valid URL.'\", f.clean, 'http://example')\n        self.assertRaisesMessage(ValidationError, \"'Enter a valid URL.'\", f.clean, 'http://example.')\n        self.assertRaisesMessage(ValidationError, \"'Enter a valid URL.'\", f.clean, 'com.')\n        self.assertRaisesMessage(ValidationError, \"'Enter a valid URL.'\", f.clean, '.')\n        self.assertRaisesMessage(ValidationError, \"'Enter a valid URL.'\", f.clean, 'http://.com')\n        self.assertRaisesMessage(ValidationError, \"'Enter a valid URL.'\", f.clean, 'http://invalid-.com')\n        self.assertRaisesMessage(ValidationError, \"'Enter a valid URL.'\", f.clean, 'http://-invalid.com')\n        self.assertRaisesMessage(ValidationError, \"'Enter a valid URL.'\", f.clean, 'http://inv-.alid-.com')\n        self.assertRaisesMessage(ValidationError, \"'Enter a valid URL.'\", f.clean, 'http://inv-.-alid.com')\n        self.assertEqual('http://valid-----hyphens.com/', f.clean('http://valid-----hyphens.com'))\n        self.assertEqual('http://some.idn.xyz\\xe4\\xf6\\xfc\\xdfabc.domain.com:123/blah', f.clean('http://some.idn.xyzäöüßabc.domain.com:123/blah'))\n        self.assertEqual('http://www.example.com/s/http://code.djangoproject.com/ticket/13804', f.clean('www.example.com/s/http://code.djangoproject.com/ticket/13804'))\n        self.assertRaisesMessage(ValidationError, \"'Enter a valid URL.'\", f.clean, '[a')\n        self.assertRaisesMessage(ValidationError, \"'Enter a valid URL.'\", f.clean, 'http://[a')\n\n    def test_url_regex_ticket11198(self):\n        f = URLField()\n        # hangs \"forever\" if catastrophic backtracking in ticket:#11198 not fixed\n        self.assertRaisesMessage(ValidationError, \"'Enter a valid URL.'\", f.clean, 'http://%s' % (\"X\"*200,))\n\n        # a second test, to make sure the problem is really addressed, even on\n        # domains that don't fail the domain label length check in the regex\n        self.assertRaisesMessage(ValidationError, \"'Enter a valid URL.'\", f.clean, 'http://%s' % (\"X\"*60,))\n\n    def test_urlfield_2(self):\n        f = URLField(required=False)\n        self.assertEqual('', f.clean(''))\n        self.assertEqual('', f.clean(None))\n        self.assertEqual('http://example.com/', f.clean('http://example.com'))\n        self.assertEqual('http://www.example.com/', f.clean('http://www.example.com'))\n        self.assertRaisesMessage(ValidationError, \"'Enter a valid URL.'\", f.clean, 'foo')\n        self.assertRaisesMessage(ValidationError, \"'Enter a valid URL.'\", f.clean, 'http://')\n        self.assertRaisesMessage(ValidationError, \"'Enter a valid URL.'\", f.clean, 'http://example')\n        self.assertRaisesMessage(ValidationError, \"'Enter a valid URL.'\", f.clean, 'http://example.')\n        self.assertRaisesMessage(ValidationError, \"'Enter a valid URL.'\", f.clean, 'http://.com')\n\n    def test_urlfield_5(self):\n        f = URLField(min_length=15, max_length=20)\n        self.assertRaisesMessage(ValidationError, \"'Ensure this value has at least 15 characters (it has 13).'\", f.clean, 'http://f.com')\n        self.assertEqual('http://example.com/', f.clean('http://example.com'))\n        self.assertRaisesMessage(ValidationError, \"'Ensure this value has at most 20 characters (it has 38).'\", f.clean, 'http://abcdefghijklmnopqrstuvwxyz.com')\n\n    def test_urlfield_6(self):\n        f = URLField(required=False)\n        self.assertEqual('http://example.com/', f.clean('example.com'))\n        self.assertEqual('', f.clean(''))\n        self.assertEqual('https://example.com/', f.clean('https://example.com'))\n\n    def test_urlfield_7(self):\n        f = URLField()\n        self.assertEqual('http://example.com/', f.clean('http://example.com'))\n        self.assertEqual('http://example.com/test', f.clean('http://example.com/test'))\n\n    def test_urlfield_8(self):\n        # ticket #11826\n        f = URLField()\n        self.assertEqual('http://example.com/?some_param=some_value', f.clean('http://example.com?some_param=some_value'))\n\n    def test_urlfield_9(self):\n        f = URLField()\n        urls = (\n            'http://עברית.idn.icann.org/',\n            'http://sãopaulo.com/',\n            'http://sãopaulo.com.br/',\n            'http://пример.испытание/',\n            'http://مثال.إختبار/',\n            'http://例子.测试/',\n            'http://例子.測試/',\n            'http://उदाहरण.परीक्षा/',\n            'http://例え.テスト/',\n            'http://مثال.آزمایشی/',\n            'http://실례.테스트/',\n            'http://العربية.idn.icann.org/',\n        )\n        for url in urls:\n            # Valid IDN\n            self.assertEqual(url, f.clean(url))\n\n    def test_urlfield_10(self):\n        \"\"\"Test URLField correctly validates IPv6 (#18779).\"\"\"\n        f = URLField()\n        urls = (\n            'http://::/',\n            'http://6:21b4:92/',\n            'http://[12:34:3a53]/',\n            'http://[a34:9238::]:8080/',\n        )\n        for url in urls:\n            self.assertEqual(url, f.clean(url))\n\n    def test_urlfield_not_string(self):\n        f = URLField(required=False)\n        self.assertRaisesMessage(ValidationError, \"'Enter a valid URL.'\", f.clean, 23)\n\n    # BooleanField ################################################################\n\n    def test_booleanfield_1(self):\n        f = BooleanField()\n        self.assertRaisesMessage(ValidationError, \"'This field is required.'\", f.clean, '')\n        self.assertRaisesMessage(ValidationError, \"'This field is required.'\", f.clean, None)\n        self.assertEqual(True, f.clean(True))\n        self.assertRaisesMessage(ValidationError, \"'This field is required.'\", f.clean, False)\n        self.assertEqual(True, f.clean(1))\n        self.assertRaisesMessage(ValidationError, \"'This field is required.'\", f.clean, 0)\n        self.assertEqual(True, f.clean('Django rocks'))\n        self.assertEqual(True, f.clean('True'))\n        self.assertRaisesMessage(ValidationError, \"'This field is required.'\", f.clean, 'False')\n\n    def test_booleanfield_2(self):\n        f = BooleanField(required=False)\n        self.assertEqual(False, f.clean(''))\n        self.assertEqual(False, f.clean(None))\n        self.assertEqual(True, f.clean(True))\n        self.assertEqual(False, f.clean(False))\n        self.assertEqual(True, f.clean(1))\n        self.assertEqual(False, f.clean(0))\n        self.assertEqual(True, f.clean('1'))\n        self.assertEqual(False, f.clean('0'))\n        self.assertEqual(True, f.clean('Django rocks'))\n        self.assertEqual(False, f.clean('False'))\n        self.assertEqual(False, f.clean('false'))\n        self.assertEqual(False, f.clean('FaLsE'))\n\n    def test_boolean_picklable(self):\n        self.assertIsInstance(pickle.loads(pickle.dumps(BooleanField())), BooleanField)\n\n    # ChoiceField #################################################################\n\n    def test_choicefield_1(self):\n        f = ChoiceField(choices=[('1', 'One'), ('2', 'Two')])\n        self.assertRaisesMessage(ValidationError, \"'This field is required.'\", f.clean, '')\n        self.assertRaisesMessage(ValidationError, \"'This field is required.'\", f.clean, None)\n        self.assertEqual('1', f.clean(1))\n        self.assertEqual('1', f.clean('1'))\n        self.assertRaisesMessage(ValidationError, \"'Select a valid choice. 3 is not one of the available choices.'\", f.clean, '3')\n\n    def test_choicefield_2(self):\n        f = ChoiceField(choices=[('1', 'One'), ('2', 'Two')], required=False)\n        self.assertEqual('', f.clean(''))\n        self.assertEqual('', f.clean(None))\n        self.assertEqual('1', f.clean(1))\n        self.assertEqual('1', f.clean('1'))\n        self.assertRaisesMessage(ValidationError, \"'Select a valid choice. 3 is not one of the available choices.'\", f.clean, '3')\n\n    def test_choicefield_3(self):\n        f = ChoiceField(choices=[('J', 'John'), ('P', 'Paul')])\n        self.assertEqual('J', f.clean('J'))\n        self.assertRaisesMessage(ValidationError, \"'Select a valid choice. John is not one of the available choices.'\", f.clean, 'John')\n\n    def test_choicefield_4(self):\n        f = ChoiceField(choices=[('Numbers', (('1', 'One'), ('2', 'Two'))), ('Letters', (('3','A'),('4','B'))), ('5','Other')])\n        self.assertEqual('1', f.clean(1))\n        self.assertEqual('1', f.clean('1'))\n        self.assertEqual('3', f.clean(3))\n        self.assertEqual('3', f.clean('3'))\n        self.assertEqual('5', f.clean(5))\n        self.assertEqual('5', f.clean('5'))\n        self.assertRaisesMessage(ValidationError, \"'Select a valid choice. 6 is not one of the available choices.'\", f.clean, '6')\n\n    # TypedChoiceField ############################################################\n    # TypedChoiceField is just like ChoiceField, except that coerced types will\n    # be returned:\n\n    def test_typedchoicefield_1(self):\n        f = TypedChoiceField(choices=[(1, \"+1\"), (-1, \"-1\")], coerce=int)\n        self.assertEqual(1, f.clean('1'))\n        self.assertRaisesMessage(ValidationError, \"'Select a valid choice. 2 is not one of the available choices.'\", f.clean, '2')\n\n    def test_typedchoicefield_2(self):\n        # Different coercion, same validation.\n        f = TypedChoiceField(choices=[(1, \"+1\"), (-1, \"-1\")], coerce=float)\n        self.assertEqual(1.0, f.clean('1'))\n\n    def test_typedchoicefield_3(self):\n        # This can also cause weirdness: be careful (bool(-1) == True, remember)\n        f = TypedChoiceField(choices=[(1, \"+1\"), (-1, \"-1\")], coerce=bool)\n        self.assertEqual(True, f.clean('-1'))\n\n    def test_typedchoicefield_4(self):\n        # Even more weirdness: if you have a valid choice but your coercion function\n        # can't coerce, yo'll still get a validation error. Don't do this!\n        f = TypedChoiceField(choices=[('A', 'A'), ('B', 'B')], coerce=int)\n        self.assertRaisesMessage(ValidationError, \"'Select a valid choice. B is not one of the available choices.'\", f.clean, 'B')\n        # Required fields require values\n        self.assertRaisesMessage(ValidationError, \"'This field is required.'\", f.clean, '')\n\n    def test_typedchoicefield_5(self):\n        # Non-required fields aren't required\n        f = TypedChoiceField(choices=[(1, \"+1\"), (-1, \"-1\")], coerce=int, required=False)\n        self.assertEqual('', f.clean(''))\n        # If you want cleaning an empty value to return a different type, tell the field\n\n    def test_typedchoicefield_6(self):\n        f = TypedChoiceField(choices=[(1, \"+1\"), (-1, \"-1\")], coerce=int, required=False, empty_value=None)\n        self.assertEqual(None, f.clean(''))\n\n    # NullBooleanField ############################################################\n\n    def test_nullbooleanfield_1(self):\n        f = NullBooleanField()\n        self.assertEqual(None, f.clean(''))\n        self.assertEqual(True, f.clean(True))\n        self.assertEqual(False, f.clean(False))\n        self.assertEqual(None, f.clean(None))\n        self.assertEqual(False, f.clean('0'))\n        self.assertEqual(True, f.clean('1'))\n        self.assertEqual(None, f.clean('2'))\n        self.assertEqual(None, f.clean('3'))\n        self.assertEqual(None, f.clean('hello'))\n\n\n    def test_nullbooleanfield_2(self):\n        # Make sure that the internal value is preserved if using HiddenInput (#7753)\n        class HiddenNullBooleanForm(Form):\n            hidden_nullbool1 = NullBooleanField(widget=HiddenInput, initial=True)\n            hidden_nullbool2 = NullBooleanField(widget=HiddenInput, initial=False)\n        f = HiddenNullBooleanForm()\n        self.assertHTMLEqual('<input type=\"hidden\" name=\"hidden_nullbool1\" value=\"True\" id=\"id_hidden_nullbool1\" /><input type=\"hidden\" name=\"hidden_nullbool2\" value=\"False\" id=\"id_hidden_nullbool2\" />', str(f))\n\n    def test_nullbooleanfield_3(self):\n        class HiddenNullBooleanForm(Form):\n            hidden_nullbool1 = NullBooleanField(widget=HiddenInput, initial=True)\n            hidden_nullbool2 = NullBooleanField(widget=HiddenInput, initial=False)\n        f = HiddenNullBooleanForm({ 'hidden_nullbool1': 'True', 'hidden_nullbool2': 'False' })\n        self.assertEqual(None, f.full_clean())\n        self.assertEqual(True, f.cleaned_data['hidden_nullbool1'])\n        self.assertEqual(False, f.cleaned_data['hidden_nullbool2'])\n\n    def test_nullbooleanfield_4(self):\n        # Make sure we're compatible with MySQL, which uses 0 and 1 for its boolean\n        # values. (#9609)\n        NULLBOOL_CHOICES = (('1', 'Yes'), ('0', 'No'), ('', 'Unknown'))\n        class MySQLNullBooleanForm(Form):\n            nullbool0 = NullBooleanField(widget=RadioSelect(choices=NULLBOOL_CHOICES))\n            nullbool1 = NullBooleanField(widget=RadioSelect(choices=NULLBOOL_CHOICES))\n            nullbool2 = NullBooleanField(widget=RadioSelect(choices=NULLBOOL_CHOICES))\n        f = MySQLNullBooleanForm({ 'nullbool0': '1', 'nullbool1': '0', 'nullbool2': '' })\n        self.assertEqual(None, f.full_clean())\n        self.assertEqual(True, f.cleaned_data['nullbool0'])\n        self.assertEqual(False, f.cleaned_data['nullbool1'])\n        self.assertEqual(None, f.cleaned_data['nullbool2'])\n\n    # MultipleChoiceField #########################################################\n\n    def test_multiplechoicefield_1(self):\n        f = MultipleChoiceField(choices=[('1', 'One'), ('2', 'Two')])\n        self.assertRaisesMessage(ValidationError, \"'This field is required.'\", f.clean, '')\n        self.assertRaisesMessage(ValidationError, \"'This field is required.'\", f.clean, None)\n        self.assertEqual(['1'], f.clean([1]))\n        self.assertEqual(['1'], f.clean(['1']))\n        self.assertEqual(['1', '2'], f.clean(['1', '2']))\n        self.assertEqual(['1', '2'], f.clean([1, '2']))\n        self.assertEqual(['1', '2'], f.clean((1, '2')))\n        self.assertRaisesMessage(ValidationError, \"'Enter a list of values.'\", f.clean, 'hello')\n        self.assertRaisesMessage(ValidationError, \"'This field is required.'\", f.clean, [])\n        self.assertRaisesMessage(ValidationError, \"'This field is required.'\", f.clean, ())\n        self.assertRaisesMessage(ValidationError, \"'Select a valid choice. 3 is not one of the available choices.'\", f.clean, ['3'])\n\n    def test_multiplechoicefield_2(self):\n        f = MultipleChoiceField(choices=[('1', 'One'), ('2', 'Two')], required=False)\n        self.assertEqual([], f.clean(''))\n        self.assertEqual([], f.clean(None))\n        self.assertEqual(['1'], f.clean([1]))\n        self.assertEqual(['1'], f.clean(['1']))\n        self.assertEqual(['1', '2'], f.clean(['1', '2']))\n        self.assertEqual(['1', '2'], f.clean([1, '2']))\n        self.assertEqual(['1', '2'], f.clean((1, '2')))\n        self.assertRaisesMessage(ValidationError, \"'Enter a list of values.'\", f.clean, 'hello')\n        self.assertEqual([], f.clean([]))\n        self.assertEqual([], f.clean(()))\n        self.assertRaisesMessage(ValidationError, \"'Select a valid choice. 3 is not one of the available choices.'\", f.clean, ['3'])\n\n    def test_multiplechoicefield_3(self):\n        f = MultipleChoiceField(choices=[('Numbers', (('1', 'One'), ('2', 'Two'))), ('Letters', (('3','A'),('4','B'))), ('5','Other')])\n        self.assertEqual(['1'], f.clean([1]))\n        self.assertEqual(['1'], f.clean(['1']))\n        self.assertEqual(['1', '5'], f.clean([1, 5]))\n        self.assertEqual(['1', '5'], f.clean([1, '5']))\n        self.assertEqual(['1', '5'], f.clean(['1', 5]))\n        self.assertEqual(['1', '5'], f.clean(['1', '5']))\n        self.assertRaisesMessage(ValidationError, \"'Select a valid choice. 6 is not one of the available choices.'\", f.clean, ['6'])\n        self.assertRaisesMessage(ValidationError, \"'Select a valid choice. 6 is not one of the available choices.'\", f.clean, ['1','6'])\n\n    # TypedMultipleChoiceField ############################################################\n    # TypedMultipleChoiceField is just like MultipleChoiceField, except that coerced types\n    # will be returned:\n\n    def test_typedmultiplechoicefield_1(self):\n        f = TypedMultipleChoiceField(choices=[(1, \"+1\"), (-1, \"-1\")], coerce=int)\n        self.assertEqual([1], f.clean(['1']))\n        self.assertRaisesMessage(ValidationError, \"'Select a valid choice. 2 is not one of the available choices.'\", f.clean, ['2'])\n\n    def test_typedmultiplechoicefield_2(self):\n        # Different coercion, same validation.\n        f = TypedMultipleChoiceField(choices=[(1, \"+1\"), (-1, \"-1\")], coerce=float)\n        self.assertEqual([1.0], f.clean(['1']))\n\n    def test_typedmultiplechoicefield_3(self):\n        # This can also cause weirdness: be careful (bool(-1) == True, remember)\n        f = TypedMultipleChoiceField(choices=[(1, \"+1\"), (-1, \"-1\")], coerce=bool)\n        self.assertEqual([True], f.clean(['-1']))\n\n    def test_typedmultiplechoicefield_4(self):\n        f = TypedMultipleChoiceField(choices=[(1, \"+1\"), (-1, \"-1\")], coerce=int)\n        self.assertEqual([1, -1], f.clean(['1','-1']))\n        self.assertRaisesMessage(ValidationError, \"'Select a valid choice. 2 is not one of the available choices.'\", f.clean, ['1','2'])\n\n    def test_typedmultiplechoicefield_5(self):\n        # Even more weirdness: if you have a valid choice but your coercion function\n        # can't coerce, you'll still get a validation error. Don't do this!\n        f = TypedMultipleChoiceField(choices=[('A', 'A'), ('B', 'B')], coerce=int)\n        self.assertRaisesMessage(ValidationError, \"'Select a valid choice. B is not one of the available choices.'\", f.clean, ['B'])\n        # Required fields require values\n        self.assertRaisesMessage(ValidationError, \"'This field is required.'\", f.clean, [])\n\n    def test_typedmultiplechoicefield_6(self):\n        # Non-required fields aren't required\n        f = TypedMultipleChoiceField(choices=[(1, \"+1\"), (-1, \"-1\")], coerce=int, required=False)\n        self.assertEqual([], f.clean([]))\n\n    def test_typedmultiplechoicefield_7(self):\n        # If you want cleaning an empty value to return a different type, tell the field\n        f = TypedMultipleChoiceField(choices=[(1, \"+1\"), (-1, \"-1\")], coerce=int, required=False, empty_value=None)\n        self.assertEqual(None, f.clean([]))\n\n   # ComboField ##################################################################\n\n    def test_combofield_1(self):\n        f = ComboField(fields=[CharField(max_length=20), EmailField()])\n        self.assertEqual('test@example.com', f.clean('test@example.com'))\n        self.assertRaisesMessage(ValidationError, \"'Ensure this value has at most 20 characters (it has 28).'\", f.clean, 'longemailaddress@example.com')\n        self.assertRaisesMessage(ValidationError, \"'Enter a valid email address.'\", f.clean, 'not an email')\n        self.assertRaisesMessage(ValidationError, \"'This field is required.'\", f.clean, '')\n        self.assertRaisesMessage(ValidationError, \"'This field is required.'\", f.clean, None)\n\n    def test_combofield_2(self):\n        f = ComboField(fields=[CharField(max_length=20), EmailField()], required=False)\n        self.assertEqual('test@example.com', f.clean('test@example.com'))\n        self.assertRaisesMessage(ValidationError, \"'Ensure this value has at most 20 characters (it has 28).'\", f.clean, 'longemailaddress@example.com')\n        self.assertRaisesMessage(ValidationError, \"'Enter a valid email address.'\", f.clean, 'not an email')\n        self.assertEqual('', f.clean(''))\n        self.assertEqual('', f.clean(None))\n\n    # FilePathField ###############################################################\n\n    def test_filepathfield_1(self):\n        path = os.path.abspath(upath(forms.__file__))\n        path = os.path.dirname(path) + '/'\n        self.assertTrue(fix_os_paths(path).endswith('/django/forms/'))\n\n    def test_filepathfield_2(self):\n        path = upath(forms.__file__)\n        path = os.path.dirname(os.path.abspath(path)) + '/'\n        f = FilePathField(path=path)\n        f.choices = [p for p in f.choices if p[0].endswith('.py')]\n        f.choices.sort()\n        expected = [\n                ('/django/forms/__init__.py', '__init__.py'),\n                ('/django/forms/fields.py', 'fields.py'),\n                ('/django/forms/forms.py', 'forms.py'),\n                ('/django/forms/formsets.py', 'formsets.py'),\n                ('/django/forms/models.py', 'models.py'),\n                ('/django/forms/util.py', 'util.py'),\n                ('/django/forms/widgets.py', 'widgets.py')\n            ]\n        for exp, got in zip(expected, fix_os_paths(f.choices)):\n            self.assertEqual(exp[1], got[1])\n            self.assertTrue(got[0].endswith(exp[0]))\n        self.assertRaisesMessage(ValidationError, \"'Select a valid choice. fields.py is not one of the available choices.'\", f.clean, 'fields.py')\n        assert fix_os_paths(f.clean(path + 'fields.py')).endswith('/django/forms/fields.py')\n\n    def test_filepathfield_3(self):\n        path = upath(forms.__file__)\n        path = os.path.dirname(os.path.abspath(path)) + '/'\n        f = FilePathField(path=path, match='^.*?\\.py$')\n        f.choices.sort()\n        expected = [\n                ('/django/forms/__init__.py', '__init__.py'),\n                ('/django/forms/fields.py', 'fields.py'),\n                ('/django/forms/forms.py', 'forms.py'),\n                ('/django/forms/formsets.py', 'formsets.py'),\n                ('/django/forms/models.py', 'models.py'),\n                ('/django/forms/util.py', 'util.py'),\n                ('/django/forms/widgets.py', 'widgets.py')\n            ]\n        for exp, got in zip(expected, fix_os_paths(f.choices)):\n            self.assertEqual(exp[1], got[1])\n            self.assertTrue(got[0].endswith(exp[0]))\n\n    def test_filepathfield_4(self):\n        path = os.path.abspath(upath(forms.__file__))\n        path = os.path.dirname(path) + '/'\n        f = FilePathField(path=path, recursive=True, match='^.*?\\.py$')\n        f.choices.sort()\n        expected = [\n                ('/django/forms/__init__.py', '__init__.py'),\n                ('/django/forms/extras/__init__.py', 'extras/__init__.py'),\n                ('/django/forms/extras/widgets.py', 'extras/widgets.py'),\n                ('/django/forms/fields.py', 'fields.py'),\n                ('/django/forms/forms.py', 'forms.py'),\n                ('/django/forms/formsets.py', 'formsets.py'),\n                ('/django/forms/models.py', 'models.py'),\n                ('/django/forms/util.py', 'util.py'),\n                ('/django/forms/widgets.py', 'widgets.py')\n            ]\n        for exp, got in zip(expected, fix_os_paths(f.choices)):\n            self.assertEqual(exp[1], got[1])\n            self.assertTrue(got[0].endswith(exp[0]))\n\n    def test_filepathfield_folders(self):\n        path = os.path.dirname(upath(__file__)) + '/filepath_test_files/'\n        f = FilePathField(path=path, allow_folders=True, allow_files=False)\n        f.choices.sort()\n        expected = [\n            ('/tests/regressiontests/forms/tests/filepath_test_files/directory', 'directory'),\n        ]\n        for exp, got in zip(expected, fix_os_paths(f.choices)):\n            self.assertEqual(exp[1], got[1])\n            self.assertTrue(got[0].endswith(exp[0]))\n\n        f = FilePathField(path=path, allow_folders=True, allow_files=True)\n        f.choices.sort()\n        expected = [\n            ('/tests/regressiontests/forms/tests/filepath_test_files/.dot-file', '.dot-file'),\n            ('/tests/regressiontests/forms/tests/filepath_test_files/directory', 'directory'),\n            ('/tests/regressiontests/forms/tests/filepath_test_files/fake-image.jpg', 'fake-image.jpg'),\n            ('/tests/regressiontests/forms/tests/filepath_test_files/real-text-file.txt', 'real-text-file.txt'),\n        ]\n\n        actual = fix_os_paths(f.choices)\n        self.assertEqual(len(expected), len(actual))\n        for exp, got in zip(expected, actual):\n            self.assertEqual(exp[1], got[1])\n            self.assertTrue(got[0].endswith(exp[0]))\n\n\n    # SplitDateTimeField ##########################################################\n\n    def test_splitdatetimefield_1(self):\n        from django.forms.widgets import SplitDateTimeWidget\n        f = SplitDateTimeField()\n        assert isinstance(f.widget, SplitDateTimeWidget)\n        self.assertEqual(datetime.datetime(2006, 1, 10, 7, 30), f.clean([datetime.date(2006, 1, 10), datetime.time(7, 30)]))\n        self.assertRaisesMessage(ValidationError, \"'This field is required.'\", f.clean, None)\n        self.assertRaisesMessage(ValidationError, \"'This field is required.'\", f.clean, '')\n        self.assertRaisesMessage(ValidationError, \"'Enter a list of values.'\", f.clean, 'hello')\n        six.assertRaisesRegex(self, ValidationError, \"'Enter a valid date\\.', u?'Enter a valid time\\.'\", f.clean, ['hello', 'there'])\n        self.assertRaisesMessage(ValidationError, \"'Enter a valid time.'\", f.clean, ['2006-01-10', 'there'])\n        self.assertRaisesMessage(ValidationError, \"'Enter a valid date.'\", f.clean, ['hello', '07:30'])\n\n    def test_splitdatetimefield_2(self):\n        f = SplitDateTimeField(required=False)\n        self.assertEqual(datetime.datetime(2006, 1, 10, 7, 30), f.clean([datetime.date(2006, 1, 10), datetime.time(7, 30)]))\n        self.assertEqual(datetime.datetime(2006, 1, 10, 7, 30), f.clean(['2006-01-10', '07:30']))\n        self.assertEqual(None, f.clean(None))\n        self.assertEqual(None, f.clean(''))\n        self.assertEqual(None, f.clean(['']))\n        self.assertEqual(None, f.clean(['', '']))\n        self.assertRaisesMessage(ValidationError, \"'Enter a list of values.'\", f.clean, 'hello')\n        six.assertRaisesRegex(self, ValidationError, \"'Enter a valid date\\.', u?'Enter a valid time\\.'\", f.clean, ['hello', 'there'])\n        self.assertRaisesMessage(ValidationError, \"'Enter a valid time.'\", f.clean, ['2006-01-10', 'there'])\n        self.assertRaisesMessage(ValidationError, \"'Enter a valid date.'\", f.clean, ['hello', '07:30'])\n        self.assertRaisesMessage(ValidationError, \"'Enter a valid time.'\", f.clean, ['2006-01-10', ''])\n        self.assertRaisesMessage(ValidationError, \"'Enter a valid time.'\", f.clean, ['2006-01-10'])\n        self.assertRaisesMessage(ValidationError, \"'Enter a valid date.'\", f.clean, ['', '07:30'])\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/forms/tests/filepath_test_files/.dot-file",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/forms/tests/filepath_test_files/directory/.keep",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/forms/tests/filepath_test_files/real-text-file.txt",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/forms/tests/forms.py",
    "content": "# -*- coding: utf-8 -*-\nfrom __future__ import unicode_literals\n\nimport datetime\n\nfrom django.core.files.uploadedfile import SimpleUploadedFile\nfrom django.forms import *\nfrom django.http import QueryDict\nfrom django.template import Template, Context\nfrom django.test import TestCase\nfrom django.test.utils import str_prefix\nfrom django.utils.datastructures import MultiValueDict, MergeDict\nfrom django.utils.safestring import mark_safe\nfrom django.utils import six\n\n\nclass Person(Form):\n    first_name = CharField()\n    last_name = CharField()\n    birthday = DateField()\n\n\nclass PersonNew(Form):\n    first_name = CharField(widget=TextInput(attrs={'id': 'first_name_id'}))\n    last_name = CharField()\n    birthday = DateField()\n\n\nclass FormsTestCase(TestCase):\n    # A Form is a collection of Fields. It knows how to validate a set of data and it\n    # knows how to render itself in a couple of default ways (e.g., an HTML table).\n    # You can pass it data in __init__(), as a dictionary.\n\n    def test_form(self):\n        # Pass a dictionary to a Form's __init__().\n        p = Person({'first_name': 'John', 'last_name': 'Lennon', 'birthday': '1940-10-9'})\n\n        self.assertTrue(p.is_bound)\n        self.assertEqual(p.errors, {})\n        self.assertTrue(p.is_valid())\n        self.assertHTMLEqual(p.errors.as_ul(), '')\n        self.assertEqual(p.errors.as_text(), '')\n        self.assertEqual(p.cleaned_data[\"first_name\"], 'John')\n        self.assertEqual(p.cleaned_data[\"last_name\"], 'Lennon')\n        self.assertEqual(p.cleaned_data[\"birthday\"], datetime.date(1940, 10, 9))\n        self.assertHTMLEqual(str(p['first_name']), '<input type=\"text\" name=\"first_name\" value=\"John\" id=\"id_first_name\" />')\n        self.assertHTMLEqual(str(p['last_name']), '<input type=\"text\" name=\"last_name\" value=\"Lennon\" id=\"id_last_name\" />')\n        self.assertHTMLEqual(str(p['birthday']), '<input type=\"text\" name=\"birthday\" value=\"1940-10-9\" id=\"id_birthday\" />')\n        try:\n            p['nonexistentfield']\n            self.fail('Attempts to access non-existent fields should fail.')\n        except KeyError:\n            pass\n\n        form_output = []\n\n        for boundfield in p:\n            form_output.append(str(boundfield))\n\n        self.assertHTMLEqual('\\n'.join(form_output), \"\"\"<input type=\"text\" name=\"first_name\" value=\"John\" id=\"id_first_name\" />\n<input type=\"text\" name=\"last_name\" value=\"Lennon\" id=\"id_last_name\" />\n<input type=\"text\" name=\"birthday\" value=\"1940-10-9\" id=\"id_birthday\" />\"\"\")\n\n        form_output = []\n\n        for boundfield in p:\n            form_output.append([boundfield.label, boundfield.data])\n\n        self.assertEqual(form_output, [\n            ['First name', 'John'],\n            ['Last name', 'Lennon'],\n            ['Birthday', '1940-10-9']\n        ])\n        self.assertHTMLEqual(str(p), \"\"\"<tr><th><label for=\"id_first_name\">First name:</label></th><td><input type=\"text\" name=\"first_name\" value=\"John\" id=\"id_first_name\" /></td></tr>\n<tr><th><label for=\"id_last_name\">Last name:</label></th><td><input type=\"text\" name=\"last_name\" value=\"Lennon\" id=\"id_last_name\" /></td></tr>\n<tr><th><label for=\"id_birthday\">Birthday:</label></th><td><input type=\"text\" name=\"birthday\" value=\"1940-10-9\" id=\"id_birthday\" /></td></tr>\"\"\")\n\n    def test_empty_dict(self):\n        # Empty dictionaries are valid, too.\n        p = Person({})\n        self.assertTrue(p.is_bound)\n        self.assertEqual(p.errors['first_name'], ['This field is required.'])\n        self.assertEqual(p.errors['last_name'], ['This field is required.'])\n        self.assertEqual(p.errors['birthday'], ['This field is required.'])\n        self.assertFalse(p.is_valid())\n        self.assertEqual(p.cleaned_data, {})\n        self.assertHTMLEqual(str(p), \"\"\"<tr><th><label for=\"id_first_name\">First name:</label></th><td><ul class=\"errorlist\"><li>This field is required.</li></ul><input type=\"text\" name=\"first_name\" id=\"id_first_name\" /></td></tr>\n<tr><th><label for=\"id_last_name\">Last name:</label></th><td><ul class=\"errorlist\"><li>This field is required.</li></ul><input type=\"text\" name=\"last_name\" id=\"id_last_name\" /></td></tr>\n<tr><th><label for=\"id_birthday\">Birthday:</label></th><td><ul class=\"errorlist\"><li>This field is required.</li></ul><input type=\"text\" name=\"birthday\" id=\"id_birthday\" /></td></tr>\"\"\")\n        self.assertHTMLEqual(p.as_table(), \"\"\"<tr><th><label for=\"id_first_name\">First name:</label></th><td><ul class=\"errorlist\"><li>This field is required.</li></ul><input type=\"text\" name=\"first_name\" id=\"id_first_name\" /></td></tr>\n<tr><th><label for=\"id_last_name\">Last name:</label></th><td><ul class=\"errorlist\"><li>This field is required.</li></ul><input type=\"text\" name=\"last_name\" id=\"id_last_name\" /></td></tr>\n<tr><th><label for=\"id_birthday\">Birthday:</label></th><td><ul class=\"errorlist\"><li>This field is required.</li></ul><input type=\"text\" name=\"birthday\" id=\"id_birthday\" /></td></tr>\"\"\")\n        self.assertHTMLEqual(p.as_ul(), \"\"\"<li><ul class=\"errorlist\"><li>This field is required.</li></ul><label for=\"id_first_name\">First name:</label> <input type=\"text\" name=\"first_name\" id=\"id_first_name\" /></li>\n<li><ul class=\"errorlist\"><li>This field is required.</li></ul><label for=\"id_last_name\">Last name:</label> <input type=\"text\" name=\"last_name\" id=\"id_last_name\" /></li>\n<li><ul class=\"errorlist\"><li>This field is required.</li></ul><label for=\"id_birthday\">Birthday:</label> <input type=\"text\" name=\"birthday\" id=\"id_birthday\" /></li>\"\"\")\n        self.assertHTMLEqual(p.as_p(), \"\"\"<ul class=\"errorlist\"><li>This field is required.</li></ul>\n<p><label for=\"id_first_name\">First name:</label> <input type=\"text\" name=\"first_name\" id=\"id_first_name\" /></p>\n<ul class=\"errorlist\"><li>This field is required.</li></ul>\n<p><label for=\"id_last_name\">Last name:</label> <input type=\"text\" name=\"last_name\" id=\"id_last_name\" /></p>\n<ul class=\"errorlist\"><li>This field is required.</li></ul>\n<p><label for=\"id_birthday\">Birthday:</label> <input type=\"text\" name=\"birthday\" id=\"id_birthday\" /></p>\"\"\")\n\n    def test_unbound_form(self):\n        # If you don't pass any values to the Form's __init__(), or if you pass None,\n        # the Form will be considered unbound and won't do any validation. Form.errors\n        # will be an empty dictionary *but* Form.is_valid() will return False.\n        p = Person()\n        self.assertFalse(p.is_bound)\n        self.assertEqual(p.errors, {})\n        self.assertFalse(p.is_valid())\n        try:\n            p.cleaned_data\n            self.fail('Attempts to access cleaned_data when validation fails should fail.')\n        except AttributeError:\n            pass\n        self.assertHTMLEqual(str(p), \"\"\"<tr><th><label for=\"id_first_name\">First name:</label></th><td><input type=\"text\" name=\"first_name\" id=\"id_first_name\" /></td></tr>\n<tr><th><label for=\"id_last_name\">Last name:</label></th><td><input type=\"text\" name=\"last_name\" id=\"id_last_name\" /></td></tr>\n<tr><th><label for=\"id_birthday\">Birthday:</label></th><td><input type=\"text\" name=\"birthday\" id=\"id_birthday\" /></td></tr>\"\"\")\n        self.assertHTMLEqual(p.as_table(), \"\"\"<tr><th><label for=\"id_first_name\">First name:</label></th><td><input type=\"text\" name=\"first_name\" id=\"id_first_name\" /></td></tr>\n<tr><th><label for=\"id_last_name\">Last name:</label></th><td><input type=\"text\" name=\"last_name\" id=\"id_last_name\" /></td></tr>\n<tr><th><label for=\"id_birthday\">Birthday:</label></th><td><input type=\"text\" name=\"birthday\" id=\"id_birthday\" /></td></tr>\"\"\")\n        self.assertHTMLEqual(p.as_ul(), \"\"\"<li><label for=\"id_first_name\">First name:</label> <input type=\"text\" name=\"first_name\" id=\"id_first_name\" /></li>\n<li><label for=\"id_last_name\">Last name:</label> <input type=\"text\" name=\"last_name\" id=\"id_last_name\" /></li>\n<li><label for=\"id_birthday\">Birthday:</label> <input type=\"text\" name=\"birthday\" id=\"id_birthday\" /></li>\"\"\")\n        self.assertHTMLEqual(p.as_p(), \"\"\"<p><label for=\"id_first_name\">First name:</label> <input type=\"text\" name=\"first_name\" id=\"id_first_name\" /></p>\n<p><label for=\"id_last_name\">Last name:</label> <input type=\"text\" name=\"last_name\" id=\"id_last_name\" /></p>\n<p><label for=\"id_birthday\">Birthday:</label> <input type=\"text\" name=\"birthday\" id=\"id_birthday\" /></p>\"\"\")\n\n    def test_unicode_values(self):\n        # Unicode values are handled properly.\n        p = Person({'first_name': 'John', 'last_name': '\\u0160\\u0110\\u0106\\u017d\\u0107\\u017e\\u0161\\u0111', 'birthday': '1940-10-9'})\n        self.assertHTMLEqual(p.as_table(), '<tr><th><label for=\"id_first_name\">First name:</label></th><td><input type=\"text\" name=\"first_name\" value=\"John\" id=\"id_first_name\" /></td></tr>\\n<tr><th><label for=\"id_last_name\">Last name:</label></th><td><input type=\"text\" name=\"last_name\" value=\"\\u0160\\u0110\\u0106\\u017d\\u0107\\u017e\\u0161\\u0111\" id=\"id_last_name\" /></td></tr>\\n<tr><th><label for=\"id_birthday\">Birthday:</label></th><td><input type=\"text\" name=\"birthday\" value=\"1940-10-9\" id=\"id_birthday\" /></td></tr>')\n        self.assertHTMLEqual(p.as_ul(), '<li><label for=\"id_first_name\">First name:</label> <input type=\"text\" name=\"first_name\" value=\"John\" id=\"id_first_name\" /></li>\\n<li><label for=\"id_last_name\">Last name:</label> <input type=\"text\" name=\"last_name\" value=\"\\u0160\\u0110\\u0106\\u017d\\u0107\\u017e\\u0161\\u0111\" id=\"id_last_name\" /></li>\\n<li><label for=\"id_birthday\">Birthday:</label> <input type=\"text\" name=\"birthday\" value=\"1940-10-9\" id=\"id_birthday\" /></li>')\n        self.assertHTMLEqual(p.as_p(), '<p><label for=\"id_first_name\">First name:</label> <input type=\"text\" name=\"first_name\" value=\"John\" id=\"id_first_name\" /></p>\\n<p><label for=\"id_last_name\">Last name:</label> <input type=\"text\" name=\"last_name\" value=\"\\u0160\\u0110\\u0106\\u017d\\u0107\\u017e\\u0161\\u0111\" id=\"id_last_name\" /></p>\\n<p><label for=\"id_birthday\">Birthday:</label> <input type=\"text\" name=\"birthday\" value=\"1940-10-9\" id=\"id_birthday\" /></p>')\n\n        p = Person({'last_name': 'Lennon'})\n        self.assertEqual(p.errors['first_name'], ['This field is required.'])\n        self.assertEqual(p.errors['birthday'], ['This field is required.'])\n        self.assertFalse(p.is_valid())\n        self.assertDictEqual(p.errors, {'birthday': ['This field is required.'], 'first_name': ['This field is required.']})\n        self.assertEqual(p.cleaned_data, {'last_name': 'Lennon'})\n        self.assertEqual(p['first_name'].errors, ['This field is required.'])\n        self.assertHTMLEqual(p['first_name'].errors.as_ul(), '<ul class=\"errorlist\"><li>This field is required.</li></ul>')\n        self.assertEqual(p['first_name'].errors.as_text(), '* This field is required.')\n\n        p = Person()\n        self.assertHTMLEqual(str(p['first_name']), '<input type=\"text\" name=\"first_name\" id=\"id_first_name\" />')\n        self.assertHTMLEqual(str(p['last_name']), '<input type=\"text\" name=\"last_name\" id=\"id_last_name\" />')\n        self.assertHTMLEqual(str(p['birthday']), '<input type=\"text\" name=\"birthday\" id=\"id_birthday\" />')\n\n    def test_cleaned_data_only_fields(self):\n        # cleaned_data will always *only* contain a key for fields defined in the\n        # Form, even if you pass extra data when you define the Form. In this\n        # example, we pass a bunch of extra fields to the form constructor,\n        # but cleaned_data contains only the form's fields.\n        data = {'first_name': 'John', 'last_name': 'Lennon', 'birthday': '1940-10-9', 'extra1': 'hello', 'extra2': 'hello'}\n        p = Person(data)\n        self.assertTrue(p.is_valid())\n        self.assertEqual(p.cleaned_data['first_name'], 'John')\n        self.assertEqual(p.cleaned_data['last_name'], 'Lennon')\n        self.assertEqual(p.cleaned_data['birthday'], datetime.date(1940, 10, 9))\n\n    def test_optional_data(self):\n        # cleaned_data will include a key and value for *all* fields defined in the Form,\n        # even if the Form's data didn't include a value for fields that are not\n        # required. In this example, the data dictionary doesn't include a value for the\n        # \"nick_name\" field, but cleaned_data includes it. For CharFields, it's set to the\n        # empty string.\n        class OptionalPersonForm(Form):\n            first_name = CharField()\n            last_name = CharField()\n            nick_name = CharField(required=False)\n\n        data = {'first_name': 'John', 'last_name': 'Lennon'}\n        f = OptionalPersonForm(data)\n        self.assertTrue(f.is_valid())\n        self.assertEqual(f.cleaned_data['nick_name'], '')\n        self.assertEqual(f.cleaned_data['first_name'], 'John')\n        self.assertEqual(f.cleaned_data['last_name'], 'Lennon')\n\n        # For DateFields, it's set to None.\n        class OptionalPersonForm(Form):\n            first_name = CharField()\n            last_name = CharField()\n            birth_date = DateField(required=False)\n\n        data = {'first_name': 'John', 'last_name': 'Lennon'}\n        f = OptionalPersonForm(data)\n        self.assertTrue(f.is_valid())\n        self.assertEqual(f.cleaned_data['birth_date'], None)\n        self.assertEqual(f.cleaned_data['first_name'], 'John')\n        self.assertEqual(f.cleaned_data['last_name'], 'Lennon')\n\n    def test_auto_id(self):\n        # \"auto_id\" tells the Form to add an \"id\" attribute to each form element.\n        # If it's a string that contains '%s', Django will use that as a format string\n        # into which the field's name will be inserted. It will also put a <label> around\n        # the human-readable labels for a field.\n        p = Person(auto_id='%s_id')\n        self.assertHTMLEqual(p.as_table(), \"\"\"<tr><th><label for=\"first_name_id\">First name:</label></th><td><input type=\"text\" name=\"first_name\" id=\"first_name_id\" /></td></tr>\n<tr><th><label for=\"last_name_id\">Last name:</label></th><td><input type=\"text\" name=\"last_name\" id=\"last_name_id\" /></td></tr>\n<tr><th><label for=\"birthday_id\">Birthday:</label></th><td><input type=\"text\" name=\"birthday\" id=\"birthday_id\" /></td></tr>\"\"\")\n        self.assertHTMLEqual(p.as_ul(), \"\"\"<li><label for=\"first_name_id\">First name:</label> <input type=\"text\" name=\"first_name\" id=\"first_name_id\" /></li>\n<li><label for=\"last_name_id\">Last name:</label> <input type=\"text\" name=\"last_name\" id=\"last_name_id\" /></li>\n<li><label for=\"birthday_id\">Birthday:</label> <input type=\"text\" name=\"birthday\" id=\"birthday_id\" /></li>\"\"\")\n        self.assertHTMLEqual(p.as_p(), \"\"\"<p><label for=\"first_name_id\">First name:</label> <input type=\"text\" name=\"first_name\" id=\"first_name_id\" /></p>\n<p><label for=\"last_name_id\">Last name:</label> <input type=\"text\" name=\"last_name\" id=\"last_name_id\" /></p>\n<p><label for=\"birthday_id\">Birthday:</label> <input type=\"text\" name=\"birthday\" id=\"birthday_id\" /></p>\"\"\")\n\n    def test_auto_id_true(self):\n        # If auto_id is any True value whose str() does not contain '%s', the \"id\"\n        # attribute will be the name of the field.\n        p = Person(auto_id=True)\n        self.assertHTMLEqual(p.as_ul(), \"\"\"<li><label for=\"first_name\">First name:</label> <input type=\"text\" name=\"first_name\" id=\"first_name\" /></li>\n<li><label for=\"last_name\">Last name:</label> <input type=\"text\" name=\"last_name\" id=\"last_name\" /></li>\n<li><label for=\"birthday\">Birthday:</label> <input type=\"text\" name=\"birthday\" id=\"birthday\" /></li>\"\"\")\n\n    def test_auto_id_false(self):\n        # If auto_id is any False value, an \"id\" attribute won't be output unless it\n        # was manually entered.\n        p = Person(auto_id=False)\n        self.assertHTMLEqual(p.as_ul(), \"\"\"<li>First name: <input type=\"text\" name=\"first_name\" /></li>\n<li>Last name: <input type=\"text\" name=\"last_name\" /></li>\n<li>Birthday: <input type=\"text\" name=\"birthday\" /></li>\"\"\")\n\n    def test_id_on_field(self):\n        # In this example, auto_id is False, but the \"id\" attribute for the \"first_name\"\n        # field is given. Also note that field gets a <label>, while the others don't.\n        p = PersonNew(auto_id=False)\n        self.assertHTMLEqual(p.as_ul(), \"\"\"<li><label for=\"first_name_id\">First name:</label> <input type=\"text\" id=\"first_name_id\" name=\"first_name\" /></li>\n<li>Last name: <input type=\"text\" name=\"last_name\" /></li>\n<li>Birthday: <input type=\"text\" name=\"birthday\" /></li>\"\"\")\n\n    def test_auto_id_on_form_and_field(self):\n        # If the \"id\" attribute is specified in the Form and auto_id is True, the \"id\"\n        # attribute in the Form gets precedence.\n        p = PersonNew(auto_id=True)\n        self.assertHTMLEqual(p.as_ul(), \"\"\"<li><label for=\"first_name_id\">First name:</label> <input type=\"text\" id=\"first_name_id\" name=\"first_name\" /></li>\n<li><label for=\"last_name\">Last name:</label> <input type=\"text\" name=\"last_name\" id=\"last_name\" /></li>\n<li><label for=\"birthday\">Birthday:</label> <input type=\"text\" name=\"birthday\" id=\"birthday\" /></li>\"\"\")\n\n    def test_various_boolean_values(self):\n        class SignupForm(Form):\n            email = EmailField()\n            get_spam = BooleanField()\n\n        f = SignupForm(auto_id=False)\n        self.assertHTMLEqual(str(f['email']), '<input type=\"text\" name=\"email\" />')\n        self.assertHTMLEqual(str(f['get_spam']), '<input type=\"checkbox\" name=\"get_spam\" />')\n\n        f = SignupForm({'email': 'test@example.com', 'get_spam': True}, auto_id=False)\n        self.assertHTMLEqual(str(f['email']), '<input type=\"text\" name=\"email\" value=\"test@example.com\" />')\n        self.assertHTMLEqual(str(f['get_spam']), '<input checked=\"checked\" type=\"checkbox\" name=\"get_spam\" />')\n\n        # 'True' or 'true' should be rendered without a value attribute\n        f = SignupForm({'email': 'test@example.com', 'get_spam': 'True'}, auto_id=False)\n        self.assertHTMLEqual(str(f['get_spam']), '<input checked=\"checked\" type=\"checkbox\" name=\"get_spam\" />')\n\n        f = SignupForm({'email': 'test@example.com', 'get_spam': 'true'}, auto_id=False)\n        self.assertHTMLEqual(str(f['get_spam']), '<input checked=\"checked\" type=\"checkbox\" name=\"get_spam\" />')\n\n        # A value of 'False' or 'false' should be rendered unchecked\n        f = SignupForm({'email': 'test@example.com', 'get_spam': 'False'}, auto_id=False)\n        self.assertHTMLEqual(str(f['get_spam']), '<input type=\"checkbox\" name=\"get_spam\" />')\n\n        f = SignupForm({'email': 'test@example.com', 'get_spam': 'false'}, auto_id=False)\n        self.assertHTMLEqual(str(f['get_spam']), '<input type=\"checkbox\" name=\"get_spam\" />')\n\n        # A value of '0' should be interpreted as a True value (#16820)\n        f = SignupForm({'email': 'test@example.com', 'get_spam': '0'})\n        self.assertTrue(f.is_valid())\n        self.assertTrue(f.cleaned_data.get('get_spam'))\n\n    def test_widget_output(self):\n        # Any Field can have a Widget class passed to its constructor:\n        class ContactForm(Form):\n            subject = CharField()\n            message = CharField(widget=Textarea)\n\n        f = ContactForm(auto_id=False)\n        self.assertHTMLEqual(str(f['subject']), '<input type=\"text\" name=\"subject\" />')\n        self.assertHTMLEqual(str(f['message']), '<textarea name=\"message\" rows=\"10\" cols=\"40\"></textarea>')\n\n        # as_textarea(), as_text() and as_hidden() are shortcuts for changing the output\n        # widget type:\n        self.assertHTMLEqual(f['subject'].as_textarea(), '<textarea name=\"subject\" rows=\"10\" cols=\"40\"></textarea>')\n        self.assertHTMLEqual(f['message'].as_text(), '<input type=\"text\" name=\"message\" />')\n        self.assertHTMLEqual(f['message'].as_hidden(), '<input type=\"hidden\" name=\"message\" />')\n\n        # The 'widget' parameter to a Field can also be an instance:\n        class ContactForm(Form):\n            subject = CharField()\n            message = CharField(widget=Textarea(attrs={'rows': 80, 'cols': 20}))\n\n        f = ContactForm(auto_id=False)\n        self.assertHTMLEqual(str(f['message']), '<textarea name=\"message\" rows=\"80\" cols=\"20\"></textarea>')\n\n        # Instance-level attrs are *not* carried over to as_textarea(), as_text() and\n        # as_hidden():\n        self.assertHTMLEqual(f['message'].as_text(), '<input type=\"text\" name=\"message\" />')\n        f = ContactForm({'subject': 'Hello', 'message': 'I love you.'}, auto_id=False)\n        self.assertHTMLEqual(f['subject'].as_textarea(), '<textarea rows=\"10\" cols=\"40\" name=\"subject\">Hello</textarea>')\n        self.assertHTMLEqual(f['message'].as_text(), '<input type=\"text\" name=\"message\" value=\"I love you.\" />')\n        self.assertHTMLEqual(f['message'].as_hidden(), '<input type=\"hidden\" name=\"message\" value=\"I love you.\" />')\n\n    def test_forms_with_choices(self):\n        # For a form with a <select>, use ChoiceField:\n        class FrameworkForm(Form):\n            name = CharField()\n            language = ChoiceField(choices=[('P', 'Python'), ('J', 'Java')])\n\n        f = FrameworkForm(auto_id=False)\n        self.assertHTMLEqual(str(f['language']), \"\"\"<select name=\"language\">\n<option value=\"P\">Python</option>\n<option value=\"J\">Java</option>\n</select>\"\"\")\n        f = FrameworkForm({'name': 'Django', 'language': 'P'}, auto_id=False)\n        self.assertHTMLEqual(str(f['language']), \"\"\"<select name=\"language\">\n<option value=\"P\" selected=\"selected\">Python</option>\n<option value=\"J\">Java</option>\n</select>\"\"\")\n\n        # A subtlety: If one of the choices' value is the empty string and the form is\n        # unbound, then the <option> for the empty-string choice will get selected=\"selected\".\n        class FrameworkForm(Form):\n            name = CharField()\n            language = ChoiceField(choices=[('', '------'), ('P', 'Python'), ('J', 'Java')])\n\n        f = FrameworkForm(auto_id=False)\n        self.assertHTMLEqual(str(f['language']), \"\"\"<select name=\"language\">\n<option value=\"\" selected=\"selected\">------</option>\n<option value=\"P\">Python</option>\n<option value=\"J\">Java</option>\n</select>\"\"\")\n\n        # You can specify widget attributes in the Widget constructor.\n        class FrameworkForm(Form):\n            name = CharField()\n            language = ChoiceField(choices=[('P', 'Python'), ('J', 'Java')], widget=Select(attrs={'class': 'foo'}))\n\n        f = FrameworkForm(auto_id=False)\n        self.assertHTMLEqual(str(f['language']), \"\"\"<select class=\"foo\" name=\"language\">\n<option value=\"P\">Python</option>\n<option value=\"J\">Java</option>\n</select>\"\"\")\n        f = FrameworkForm({'name': 'Django', 'language': 'P'}, auto_id=False)\n        self.assertHTMLEqual(str(f['language']), \"\"\"<select class=\"foo\" name=\"language\">\n<option value=\"P\" selected=\"selected\">Python</option>\n<option value=\"J\">Java</option>\n</select>\"\"\")\n\n        # When passing a custom widget instance to ChoiceField, note that setting\n        # 'choices' on the widget is meaningless. The widget will use the choices\n        # defined on the Field, not the ones defined on the Widget.\n        class FrameworkForm(Form):\n            name = CharField()\n            language = ChoiceField(choices=[('P', 'Python'), ('J', 'Java')], widget=Select(choices=[('R', 'Ruby'), ('P', 'Perl')], attrs={'class': 'foo'}))\n\n        f = FrameworkForm(auto_id=False)\n        self.assertHTMLEqual(str(f['language']), \"\"\"<select class=\"foo\" name=\"language\">\n<option value=\"P\">Python</option>\n<option value=\"J\">Java</option>\n</select>\"\"\")\n        f = FrameworkForm({'name': 'Django', 'language': 'P'}, auto_id=False)\n        self.assertHTMLEqual(str(f['language']), \"\"\"<select class=\"foo\" name=\"language\">\n<option value=\"P\" selected=\"selected\">Python</option>\n<option value=\"J\">Java</option>\n</select>\"\"\")\n\n        # You can set a ChoiceField's choices after the fact.\n        class FrameworkForm(Form):\n            name = CharField()\n            language = ChoiceField()\n\n        f = FrameworkForm(auto_id=False)\n        self.assertHTMLEqual(str(f['language']), \"\"\"<select name=\"language\">\n</select>\"\"\")\n        f.fields['language'].choices = [('P', 'Python'), ('J', 'Java')]\n        self.assertHTMLEqual(str(f['language']), \"\"\"<select name=\"language\">\n<option value=\"P\">Python</option>\n<option value=\"J\">Java</option>\n</select>\"\"\")\n\n    def test_forms_with_radio(self):\n        # Add widget=RadioSelect to use that widget with a ChoiceField.\n        class FrameworkForm(Form):\n            name = CharField()\n            language = ChoiceField(choices=[('P', 'Python'), ('J', 'Java')], widget=RadioSelect)\n\n        f = FrameworkForm(auto_id=False)\n        self.assertHTMLEqual(str(f['language']), \"\"\"<ul>\n<li><label><input type=\"radio\" name=\"language\" value=\"P\" /> Python</label></li>\n<li><label><input type=\"radio\" name=\"language\" value=\"J\" /> Java</label></li>\n</ul>\"\"\")\n        self.assertHTMLEqual(f.as_table(), \"\"\"<tr><th>Name:</th><td><input type=\"text\" name=\"name\" /></td></tr>\n<tr><th>Language:</th><td><ul>\n<li><label><input type=\"radio\" name=\"language\" value=\"P\" /> Python</label></li>\n<li><label><input type=\"radio\" name=\"language\" value=\"J\" /> Java</label></li>\n</ul></td></tr>\"\"\")\n        self.assertHTMLEqual(f.as_ul(), \"\"\"<li>Name: <input type=\"text\" name=\"name\" /></li>\n<li>Language: <ul>\n<li><label><input type=\"radio\" name=\"language\" value=\"P\" /> Python</label></li>\n<li><label><input type=\"radio\" name=\"language\" value=\"J\" /> Java</label></li>\n</ul></li>\"\"\")\n\n        # Regarding auto_id and <label>, RadioSelect is a special case. Each radio button\n        # gets a distinct ID, formed by appending an underscore plus the button's\n        # zero-based index.\n        f = FrameworkForm(auto_id='id_%s')\n        self.assertHTMLEqual(str(f['language']), \"\"\"<ul>\n<li><label for=\"id_language_0\"><input type=\"radio\" id=\"id_language_0\" value=\"P\" name=\"language\" /> Python</label></li>\n<li><label for=\"id_language_1\"><input type=\"radio\" id=\"id_language_1\" value=\"J\" name=\"language\" /> Java</label></li>\n</ul>\"\"\")\n\n        # When RadioSelect is used with auto_id, and the whole form is printed using\n        # either as_table() or as_ul(), the label for the RadioSelect will point to the\n        # ID of the *first* radio button.\n        self.assertHTMLEqual(f.as_table(), \"\"\"<tr><th><label for=\"id_name\">Name:</label></th><td><input type=\"text\" name=\"name\" id=\"id_name\" /></td></tr>\n<tr><th><label for=\"id_language_0\">Language:</label></th><td><ul>\n<li><label for=\"id_language_0\"><input type=\"radio\" id=\"id_language_0\" value=\"P\" name=\"language\" /> Python</label></li>\n<li><label for=\"id_language_1\"><input type=\"radio\" id=\"id_language_1\" value=\"J\" name=\"language\" /> Java</label></li>\n</ul></td></tr>\"\"\")\n        self.assertHTMLEqual(f.as_ul(), \"\"\"<li><label for=\"id_name\">Name:</label> <input type=\"text\" name=\"name\" id=\"id_name\" /></li>\n<li><label for=\"id_language_0\">Language:</label> <ul>\n<li><label for=\"id_language_0\"><input type=\"radio\" id=\"id_language_0\" value=\"P\" name=\"language\" /> Python</label></li>\n<li><label for=\"id_language_1\"><input type=\"radio\" id=\"id_language_1\" value=\"J\" name=\"language\" /> Java</label></li>\n</ul></li>\"\"\")\n        self.assertHTMLEqual(f.as_p(), \"\"\"<p><label for=\"id_name\">Name:</label> <input type=\"text\" name=\"name\" id=\"id_name\" /></p>\n<p><label for=\"id_language_0\">Language:</label> <ul>\n<li><label for=\"id_language_0\"><input type=\"radio\" id=\"id_language_0\" value=\"P\" name=\"language\" /> Python</label></li>\n<li><label for=\"id_language_1\"><input type=\"radio\" id=\"id_language_1\" value=\"J\" name=\"language\" /> Java</label></li>\n</ul></p>\"\"\")\n\n    def test_form_with_iterable_boundfield(self):\n        class BeatleForm(Form):\n            name = ChoiceField(choices=[('john', 'John'), ('paul', 'Paul'), ('george', 'George'), ('ringo', 'Ringo')], widget=RadioSelect)\n\n        f = BeatleForm(auto_id=False)\n        self.assertHTMLEqual('\\n'.join([str(bf) for bf in f['name']]), \"\"\"<label><input type=\"radio\" name=\"name\" value=\"john\" /> John</label>\n<label><input type=\"radio\" name=\"name\" value=\"paul\" /> Paul</label>\n<label><input type=\"radio\" name=\"name\" value=\"george\" /> George</label>\n<label><input type=\"radio\" name=\"name\" value=\"ringo\" /> Ringo</label>\"\"\")\n        self.assertHTMLEqual('\\n'.join(['<div>%s</div>' % bf for bf in f['name']]), \"\"\"<div><label><input type=\"radio\" name=\"name\" value=\"john\" /> John</label></div>\n<div><label><input type=\"radio\" name=\"name\" value=\"paul\" /> Paul</label></div>\n<div><label><input type=\"radio\" name=\"name\" value=\"george\" /> George</label></div>\n<div><label><input type=\"radio\" name=\"name\" value=\"ringo\" /> Ringo</label></div>\"\"\")\n\n    def test_form_with_noniterable_boundfield(self):\n        # You can iterate over any BoundField, not just those with widget=RadioSelect.\n        class BeatleForm(Form):\n            name = CharField()\n\n        f = BeatleForm(auto_id=False)\n        self.assertHTMLEqual('\\n'.join([str(bf) for bf in f['name']]), '<input type=\"text\" name=\"name\" />')\n\n    def test_forms_with_multiple_choice(self):\n        # MultipleChoiceField is a special case, as its data is required to be a list:\n        class SongForm(Form):\n            name = CharField()\n            composers = MultipleChoiceField()\n\n        f = SongForm(auto_id=False)\n        self.assertHTMLEqual(str(f['composers']), \"\"\"<select multiple=\"multiple\" name=\"composers\">\n</select>\"\"\")\n\n        class SongForm(Form):\n            name = CharField()\n            composers = MultipleChoiceField(choices=[('J', 'John Lennon'), ('P', 'Paul McCartney')])\n\n        f = SongForm(auto_id=False)\n        self.assertHTMLEqual(str(f['composers']), \"\"\"<select multiple=\"multiple\" name=\"composers\">\n<option value=\"J\">John Lennon</option>\n<option value=\"P\">Paul McCartney</option>\n</select>\"\"\")\n        f = SongForm({'name': 'Yesterday', 'composers': ['P']}, auto_id=False)\n        self.assertHTMLEqual(str(f['name']), '<input type=\"text\" name=\"name\" value=\"Yesterday\" />')\n        self.assertHTMLEqual(str(f['composers']), \"\"\"<select multiple=\"multiple\" name=\"composers\">\n<option value=\"J\">John Lennon</option>\n<option value=\"P\" selected=\"selected\">Paul McCartney</option>\n</select>\"\"\")\n\n    def test_hidden_data(self):\n        class SongForm(Form):\n            name = CharField()\n            composers = MultipleChoiceField(choices=[('J', 'John Lennon'), ('P', 'Paul McCartney')])\n\n        # MultipleChoiceField rendered as_hidden() is a special case. Because it can\n        # have multiple values, its as_hidden() renders multiple <input type=\"hidden\">\n        # tags.\n        f = SongForm({'name': 'Yesterday', 'composers': ['P']}, auto_id=False)\n        self.assertHTMLEqual(f['composers'].as_hidden(), '<input type=\"hidden\" name=\"composers\" value=\"P\" />')\n        f = SongForm({'name': 'From Me To You', 'composers': ['P', 'J']}, auto_id=False)\n        self.assertHTMLEqual(f['composers'].as_hidden(), \"\"\"<input type=\"hidden\" name=\"composers\" value=\"P\" />\n<input type=\"hidden\" name=\"composers\" value=\"J\" />\"\"\")\n\n        # DateTimeField rendered as_hidden() is special too\n        class MessageForm(Form):\n            when = SplitDateTimeField()\n\n        f = MessageForm({'when_0': '1992-01-01', 'when_1': '01:01'})\n        self.assertTrue(f.is_valid())\n        self.assertHTMLEqual(str(f['when']), '<input type=\"text\" name=\"when_0\" value=\"1992-01-01\" id=\"id_when_0\" /><input type=\"text\" name=\"when_1\" value=\"01:01\" id=\"id_when_1\" />')\n        self.assertHTMLEqual(f['when'].as_hidden(), '<input type=\"hidden\" name=\"when_0\" value=\"1992-01-01\" id=\"id_when_0\" /><input type=\"hidden\" name=\"when_1\" value=\"01:01\" id=\"id_when_1\" />')\n\n    def test_mulitple_choice_checkbox(self):\n        # MultipleChoiceField can also be used with the CheckboxSelectMultiple widget.\n        class SongForm(Form):\n            name = CharField()\n            composers = MultipleChoiceField(choices=[('J', 'John Lennon'), ('P', 'Paul McCartney')], widget=CheckboxSelectMultiple)\n\n        f = SongForm(auto_id=False)\n        self.assertHTMLEqual(str(f['composers']), \"\"\"<ul>\n<li><label><input type=\"checkbox\" name=\"composers\" value=\"J\" /> John Lennon</label></li>\n<li><label><input type=\"checkbox\" name=\"composers\" value=\"P\" /> Paul McCartney</label></li>\n</ul>\"\"\")\n        f = SongForm({'composers': ['J']}, auto_id=False)\n        self.assertHTMLEqual(str(f['composers']), \"\"\"<ul>\n<li><label><input checked=\"checked\" type=\"checkbox\" name=\"composers\" value=\"J\" /> John Lennon</label></li>\n<li><label><input type=\"checkbox\" name=\"composers\" value=\"P\" /> Paul McCartney</label></li>\n</ul>\"\"\")\n        f = SongForm({'composers': ['J', 'P']}, auto_id=False)\n        self.assertHTMLEqual(str(f['composers']), \"\"\"<ul>\n<li><label><input checked=\"checked\" type=\"checkbox\" name=\"composers\" value=\"J\" /> John Lennon</label></li>\n<li><label><input checked=\"checked\" type=\"checkbox\" name=\"composers\" value=\"P\" /> Paul McCartney</label></li>\n</ul>\"\"\")\n\n    def test_checkbox_auto_id(self):\n        # Regarding auto_id, CheckboxSelectMultiple is a special case. Each checkbox\n        # gets a distinct ID, formed by appending an underscore plus the checkbox's\n        # zero-based index.\n        class SongForm(Form):\n            name = CharField()\n            composers = MultipleChoiceField(choices=[('J', 'John Lennon'), ('P', 'Paul McCartney')], widget=CheckboxSelectMultiple)\n\n        f = SongForm(auto_id='%s_id')\n        self.assertHTMLEqual(str(f['composers']), \"\"\"<ul>\n<li><label for=\"composers_id_0\"><input type=\"checkbox\" name=\"composers\" value=\"J\" id=\"composers_id_0\" /> John Lennon</label></li>\n<li><label for=\"composers_id_1\"><input type=\"checkbox\" name=\"composers\" value=\"P\" id=\"composers_id_1\" /> Paul McCartney</label></li>\n</ul>\"\"\")\n\n    def test_multiple_choice_list_data(self):\n        # Data for a MultipleChoiceField should be a list. QueryDict, MultiValueDict and\n        # MergeDict (when created as a merge of MultiValueDicts) conveniently work with\n        # this.\n        class SongForm(Form):\n            name = CharField()\n            composers = MultipleChoiceField(choices=[('J', 'John Lennon'), ('P', 'Paul McCartney')], widget=CheckboxSelectMultiple)\n\n        data = {'name': 'Yesterday', 'composers': ['J', 'P']}\n        f = SongForm(data)\n        self.assertEqual(f.errors, {})\n\n        data = QueryDict('name=Yesterday&composers=J&composers=P')\n        f = SongForm(data)\n        self.assertEqual(f.errors, {})\n\n        data = MultiValueDict(dict(name=['Yesterday'], composers=['J', 'P']))\n        f = SongForm(data)\n        self.assertEqual(f.errors, {})\n\n        data = MergeDict(MultiValueDict(dict(name=['Yesterday'], composers=['J', 'P'])))\n        f = SongForm(data)\n        self.assertEqual(f.errors, {})\n\n    def test_multiple_hidden(self):\n        class SongForm(Form):\n            name = CharField()\n            composers = MultipleChoiceField(choices=[('J', 'John Lennon'), ('P', 'Paul McCartney')], widget=CheckboxSelectMultiple)\n\n        # The MultipleHiddenInput widget renders multiple values as hidden fields.\n        class SongFormHidden(Form):\n            name = CharField()\n            composers = MultipleChoiceField(choices=[('J', 'John Lennon'), ('P', 'Paul McCartney')], widget=MultipleHiddenInput)\n\n        f = SongFormHidden(MultiValueDict(dict(name=['Yesterday'], composers=['J', 'P'])), auto_id=False)\n        self.assertHTMLEqual(f.as_ul(), \"\"\"<li>Name: <input type=\"text\" name=\"name\" value=\"Yesterday\" /><input type=\"hidden\" name=\"composers\" value=\"J\" />\n<input type=\"hidden\" name=\"composers\" value=\"P\" /></li>\"\"\")\n\n        # When using CheckboxSelectMultiple, the framework expects a list of input and\n        # returns a list of input.\n        f = SongForm({'name': 'Yesterday'}, auto_id=False)\n        self.assertEqual(f.errors['composers'], ['This field is required.'])\n        f = SongForm({'name': 'Yesterday', 'composers': ['J']}, auto_id=False)\n        self.assertEqual(f.errors, {})\n        self.assertEqual(f.cleaned_data['composers'], ['J'])\n        self.assertEqual(f.cleaned_data['name'], 'Yesterday')\n        f = SongForm({'name': 'Yesterday', 'composers': ['J', 'P']}, auto_id=False)\n        self.assertEqual(f.errors, {})\n        self.assertEqual(f.cleaned_data['composers'], ['J', 'P'])\n        self.assertEqual(f.cleaned_data['name'], 'Yesterday')\n\n    def test_escaping(self):\n        # Validation errors are HTML-escaped when output as HTML.\n        class EscapingForm(Form):\n            special_name = CharField(label=\"<em>Special</em> Field\")\n            special_safe_name = CharField(label=mark_safe(\"<em>Special</em> Field\"))\n\n            def clean_special_name(self):\n                raise ValidationError(\"Something's wrong with '%s'\" % self.cleaned_data['special_name'])\n\n            def clean_special_safe_name(self):\n                raise ValidationError(mark_safe(\"'<b>%s</b>' is a safe string\" % self.cleaned_data['special_safe_name']))\n\n        f = EscapingForm({'special_name': \"Nothing to escape\", 'special_safe_name': \"Nothing to escape\"}, auto_id=False)\n        self.assertHTMLEqual(f.as_table(), \"\"\"<tr><th>&lt;em&gt;Special&lt;/em&gt; Field:</th><td><ul class=\"errorlist\"><li>Something&#39;s wrong with &#39;Nothing to escape&#39;</li></ul><input type=\"text\" name=\"special_name\" value=\"Nothing to escape\" /></td></tr>\n<tr><th><em>Special</em> Field:</th><td><ul class=\"errorlist\"><li>'<b>Nothing to escape</b>' is a safe string</li></ul><input type=\"text\" name=\"special_safe_name\" value=\"Nothing to escape\" /></td></tr>\"\"\")\n        f = EscapingForm({\n            'special_name': \"Should escape < & > and <script>alert('xss')</script>\",\n            'special_safe_name': \"<i>Do not escape</i>\"\n        }, auto_id=False)\n        self.assertHTMLEqual(f.as_table(), \"\"\"<tr><th>&lt;em&gt;Special&lt;/em&gt; Field:</th><td><ul class=\"errorlist\"><li>Something&#39;s wrong with &#39;Should escape &lt; &amp; &gt; and &lt;script&gt;alert(&#39;xss&#39;)&lt;/script&gt;&#39;</li></ul><input type=\"text\" name=\"special_name\" value=\"Should escape &lt; &amp; &gt; and &lt;script&gt;alert(&#39;xss&#39;)&lt;/script&gt;\" /></td></tr>\n<tr><th><em>Special</em> Field:</th><td><ul class=\"errorlist\"><li>'<b><i>Do not escape</i></b>' is a safe string</li></ul><input type=\"text\" name=\"special_safe_name\" value=\"&lt;i&gt;Do not escape&lt;/i&gt;\" /></td></tr>\"\"\")\n\n    def test_validating_multiple_fields(self):\n        # There are a couple of ways to do multiple-field validation. If you want the\n        # validation message to be associated with a particular field, implement the\n        # clean_XXX() method on the Form, where XXX is the field name. As in\n        # Field.clean(), the clean_XXX() method should return the cleaned value. In the\n        # clean_XXX() method, you have access to self.cleaned_data, which is a dictionary\n        # of all the data that has been cleaned *so far*, in order by the fields,\n        # including the current field (e.g., the field XXX if you're in clean_XXX()).\n        class UserRegistration(Form):\n            username = CharField(max_length=10)\n            password1 = CharField(widget=PasswordInput)\n            password2 = CharField(widget=PasswordInput)\n\n            def clean_password2(self):\n                if self.cleaned_data.get('password1') and self.cleaned_data.get('password2') and self.cleaned_data['password1'] != self.cleaned_data['password2']:\n                    raise ValidationError('Please make sure your passwords match.')\n\n                return self.cleaned_data['password2']\n\n        f = UserRegistration(auto_id=False)\n        self.assertEqual(f.errors, {})\n        f = UserRegistration({}, auto_id=False)\n        self.assertEqual(f.errors['username'], ['This field is required.'])\n        self.assertEqual(f.errors['password1'], ['This field is required.'])\n        self.assertEqual(f.errors['password2'], ['This field is required.'])\n        f = UserRegistration({'username': 'adrian', 'password1': 'foo', 'password2': 'bar'}, auto_id=False)\n        self.assertEqual(f.errors['password2'], ['Please make sure your passwords match.'])\n        f = UserRegistration({'username': 'adrian', 'password1': 'foo', 'password2': 'foo'}, auto_id=False)\n        self.assertEqual(f.errors, {})\n        self.assertEqual(f.cleaned_data['username'], 'adrian')\n        self.assertEqual(f.cleaned_data['password1'], 'foo')\n        self.assertEqual(f.cleaned_data['password2'], 'foo')\n\n        # Another way of doing multiple-field validation is by implementing the\n        # Form's clean() method. If you do this, any ValidationError raised by that\n        # method will not be associated with a particular field; it will have a\n        # special-case association with the field named '__all__'.\n        # Note that in Form.clean(), you have access to self.cleaned_data, a dictionary of\n        # all the fields/values that have *not* raised a ValidationError. Also note\n        # Form.clean() is required to return a dictionary of all clean data.\n        class UserRegistration(Form):\n            username = CharField(max_length=10)\n            password1 = CharField(widget=PasswordInput)\n            password2 = CharField(widget=PasswordInput)\n\n            def clean(self):\n                if self.cleaned_data.get('password1') and self.cleaned_data.get('password2') and self.cleaned_data['password1'] != self.cleaned_data['password2']:\n                    raise ValidationError('Please make sure your passwords match.')\n\n                return self.cleaned_data\n\n        f = UserRegistration(auto_id=False)\n        self.assertEqual(f.errors, {})\n        f = UserRegistration({}, auto_id=False)\n        self.assertHTMLEqual(f.as_table(), \"\"\"<tr><th>Username:</th><td><ul class=\"errorlist\"><li>This field is required.</li></ul><input type=\"text\" name=\"username\" maxlength=\"10\" /></td></tr>\n<tr><th>Password1:</th><td><ul class=\"errorlist\"><li>This field is required.</li></ul><input type=\"password\" name=\"password1\" /></td></tr>\n<tr><th>Password2:</th><td><ul class=\"errorlist\"><li>This field is required.</li></ul><input type=\"password\" name=\"password2\" /></td></tr>\"\"\")\n        self.assertEqual(f.errors['username'], ['This field is required.'])\n        self.assertEqual(f.errors['password1'], ['This field is required.'])\n        self.assertEqual(f.errors['password2'], ['This field is required.'])\n        f = UserRegistration({'username': 'adrian', 'password1': 'foo', 'password2': 'bar'}, auto_id=False)\n        self.assertEqual(f.errors['__all__'], ['Please make sure your passwords match.'])\n        self.assertHTMLEqual(f.as_table(), \"\"\"<tr><td colspan=\"2\"><ul class=\"errorlist\"><li>Please make sure your passwords match.</li></ul></td></tr>\n<tr><th>Username:</th><td><input type=\"text\" name=\"username\" value=\"adrian\" maxlength=\"10\" /></td></tr>\n<tr><th>Password1:</th><td><input type=\"password\" name=\"password1\" /></td></tr>\n<tr><th>Password2:</th><td><input type=\"password\" name=\"password2\" /></td></tr>\"\"\")\n        self.assertHTMLEqual(f.as_ul(), \"\"\"<li><ul class=\"errorlist\"><li>Please make sure your passwords match.</li></ul></li>\n<li>Username: <input type=\"text\" name=\"username\" value=\"adrian\" maxlength=\"10\" /></li>\n<li>Password1: <input type=\"password\" name=\"password1\" /></li>\n<li>Password2: <input type=\"password\" name=\"password2\" /></li>\"\"\")\n        f = UserRegistration({'username': 'adrian', 'password1': 'foo', 'password2': 'foo'}, auto_id=False)\n        self.assertEqual(f.errors, {})\n        self.assertEqual(f.cleaned_data['username'], 'adrian')\n        self.assertEqual(f.cleaned_data['password1'], 'foo')\n        self.assertEqual(f.cleaned_data['password2'], 'foo')\n\n    def test_dynamic_construction(self):\n        # It's possible to construct a Form dynamically by adding to the self.fields\n        # dictionary in __init__(). Don't forget to call Form.__init__() within the\n        # subclass' __init__().\n        class Person(Form):\n            first_name = CharField()\n            last_name = CharField()\n\n            def __init__(self, *args, **kwargs):\n                super(Person, self).__init__(*args, **kwargs)\n                self.fields['birthday'] = DateField()\n\n        p = Person(auto_id=False)\n        self.assertHTMLEqual(p.as_table(), \"\"\"<tr><th>First name:</th><td><input type=\"text\" name=\"first_name\" /></td></tr>\n<tr><th>Last name:</th><td><input type=\"text\" name=\"last_name\" /></td></tr>\n<tr><th>Birthday:</th><td><input type=\"text\" name=\"birthday\" /></td></tr>\"\"\")\n\n        # Instances of a dynamic Form do not persist fields from one Form instance to\n        # the next.\n        class MyForm(Form):\n            def __init__(self, data=None, auto_id=False, field_list=[]):\n                Form.__init__(self, data, auto_id=auto_id)\n\n                for field in field_list:\n                    self.fields[field[0]] = field[1]\n\n        field_list = [('field1', CharField()), ('field2', CharField())]\n        my_form = MyForm(field_list=field_list)\n        self.assertHTMLEqual(my_form.as_table(), \"\"\"<tr><th>Field1:</th><td><input type=\"text\" name=\"field1\" /></td></tr>\n<tr><th>Field2:</th><td><input type=\"text\" name=\"field2\" /></td></tr>\"\"\")\n        field_list = [('field3', CharField()), ('field4', CharField())]\n        my_form = MyForm(field_list=field_list)\n        self.assertHTMLEqual(my_form.as_table(), \"\"\"<tr><th>Field3:</th><td><input type=\"text\" name=\"field3\" /></td></tr>\n<tr><th>Field4:</th><td><input type=\"text\" name=\"field4\" /></td></tr>\"\"\")\n\n        class MyForm(Form):\n            default_field_1 = CharField()\n            default_field_2 = CharField()\n\n            def __init__(self, data=None, auto_id=False, field_list=[]):\n                Form.__init__(self, data, auto_id=auto_id)\n\n                for field in field_list:\n                    self.fields[field[0]] = field[1]\n\n        field_list = [('field1', CharField()), ('field2', CharField())]\n        my_form = MyForm(field_list=field_list)\n        self.assertHTMLEqual(my_form.as_table(), \"\"\"<tr><th>Default field 1:</th><td><input type=\"text\" name=\"default_field_1\" /></td></tr>\n<tr><th>Default field 2:</th><td><input type=\"text\" name=\"default_field_2\" /></td></tr>\n<tr><th>Field1:</th><td><input type=\"text\" name=\"field1\" /></td></tr>\n<tr><th>Field2:</th><td><input type=\"text\" name=\"field2\" /></td></tr>\"\"\")\n        field_list = [('field3', CharField()), ('field4', CharField())]\n        my_form = MyForm(field_list=field_list)\n        self.assertHTMLEqual(my_form.as_table(), \"\"\"<tr><th>Default field 1:</th><td><input type=\"text\" name=\"default_field_1\" /></td></tr>\n<tr><th>Default field 2:</th><td><input type=\"text\" name=\"default_field_2\" /></td></tr>\n<tr><th>Field3:</th><td><input type=\"text\" name=\"field3\" /></td></tr>\n<tr><th>Field4:</th><td><input type=\"text\" name=\"field4\" /></td></tr>\"\"\")\n\n        # Similarly, changes to field attributes do not persist from one Form instance\n        # to the next.\n        class Person(Form):\n            first_name = CharField(required=False)\n            last_name = CharField(required=False)\n\n            def __init__(self, names_required=False, *args, **kwargs):\n                super(Person, self).__init__(*args, **kwargs)\n\n                if names_required:\n                    self.fields['first_name'].required = True\n                    self.fields['first_name'].widget.attrs['class'] = 'required'\n                    self.fields['last_name'].required = True\n                    self.fields['last_name'].widget.attrs['class'] = 'required'\n\n        f = Person(names_required=False)\n        self.assertEqual(f['first_name'].field.required, f['last_name'].field.required, (False, False))\n        self.assertEqual(f['first_name'].field.widget.attrs, f['last_name'].field.widget.attrs, ({}, {}))\n        f = Person(names_required=True)\n        self.assertEqual(f['first_name'].field.required, f['last_name'].field.required, (True, True))\n        self.assertEqual(f['first_name'].field.widget.attrs, f['last_name'].field.widget.attrs, ({'class': 'required'}, {'class': 'required'}))\n        f = Person(names_required=False)\n        self.assertEqual(f['first_name'].field.required, f['last_name'].field.required, (False, False))\n        self.assertEqual(f['first_name'].field.widget.attrs, f['last_name'].field.widget.attrs, ({}, {}))\n\n        class Person(Form):\n            first_name = CharField(max_length=30)\n            last_name = CharField(max_length=30)\n\n            def __init__(self, name_max_length=None, *args, **kwargs):\n                super(Person, self).__init__(*args, **kwargs)\n\n                if name_max_length:\n                    self.fields['first_name'].max_length = name_max_length\n                    self.fields['last_name'].max_length = name_max_length\n\n        f = Person(name_max_length=None)\n        self.assertEqual(f['first_name'].field.max_length, f['last_name'].field.max_length, (30, 30))\n        f = Person(name_max_length=20)\n        self.assertEqual(f['first_name'].field.max_length, f['last_name'].field.max_length, (20, 20))\n        f = Person(name_max_length=None)\n        self.assertEqual(f['first_name'].field.max_length, f['last_name'].field.max_length, (30, 30))\n\n        # Similarly, choices do not persist from one Form instance to the next.\n        # Refs #15127.\n        class Person(Form):\n            first_name = CharField(required=False)\n            last_name = CharField(required=False)\n            gender = ChoiceField(choices=(('f', 'Female'), ('m', 'Male')))\n\n            def __init__(self, allow_unspec_gender=False, *args, **kwargs):\n                super(Person, self).__init__(*args, **kwargs)\n\n                if allow_unspec_gender:\n                    self.fields['gender'].choices += (('u', 'Unspecified'),)\n\n        f = Person()\n        self.assertEqual(f['gender'].field.choices, [('f', 'Female'), ('m', 'Male')])\n        f = Person(allow_unspec_gender=True)\n        self.assertEqual(f['gender'].field.choices, [('f', 'Female'), ('m', 'Male'), ('u', 'Unspecified')])\n        f = Person()\n        self.assertEqual(f['gender'].field.choices, [('f', 'Female'), ('m', 'Male')])\n\n    def test_validators_independence(self):\n        \"\"\" Test that we are able to modify a form field validators list without polluting\n            other forms \"\"\"\n        from django.core.validators import MaxValueValidator\n        class MyForm(Form):\n            myfield = CharField(max_length=25)\n\n        f1 = MyForm()\n        f2 = MyForm()\n\n        f1.fields['myfield'].validators[0] = MaxValueValidator(12)\n        self.assertFalse(f1.fields['myfield'].validators[0] == f2.fields['myfield'].validators[0])\n\n    def test_hidden_widget(self):\n        # HiddenInput widgets are displayed differently in the as_table(), as_ul())\n        # and as_p() output of a Form -- their verbose names are not displayed, and a\n        # separate row is not displayed. They're displayed in the last row of the\n        # form, directly after that row's form element.\n        class Person(Form):\n            first_name = CharField()\n            last_name = CharField()\n            hidden_text = CharField(widget=HiddenInput)\n            birthday = DateField()\n\n        p = Person(auto_id=False)\n        self.assertHTMLEqual(p.as_table(), \"\"\"<tr><th>First name:</th><td><input type=\"text\" name=\"first_name\" /></td></tr>\n<tr><th>Last name:</th><td><input type=\"text\" name=\"last_name\" /></td></tr>\n<tr><th>Birthday:</th><td><input type=\"text\" name=\"birthday\" /><input type=\"hidden\" name=\"hidden_text\" /></td></tr>\"\"\")\n        self.assertHTMLEqual(p.as_ul(), \"\"\"<li>First name: <input type=\"text\" name=\"first_name\" /></li>\n<li>Last name: <input type=\"text\" name=\"last_name\" /></li>\n<li>Birthday: <input type=\"text\" name=\"birthday\" /><input type=\"hidden\" name=\"hidden_text\" /></li>\"\"\")\n        self.assertHTMLEqual(p.as_p(), \"\"\"<p>First name: <input type=\"text\" name=\"first_name\" /></p>\n<p>Last name: <input type=\"text\" name=\"last_name\" /></p>\n<p>Birthday: <input type=\"text\" name=\"birthday\" /><input type=\"hidden\" name=\"hidden_text\" /></p>\"\"\")\n\n        # With auto_id set, a HiddenInput still gets an ID, but it doesn't get a label.\n        p = Person(auto_id='id_%s')\n        self.assertHTMLEqual(p.as_table(), \"\"\"<tr><th><label for=\"id_first_name\">First name:</label></th><td><input type=\"text\" name=\"first_name\" id=\"id_first_name\" /></td></tr>\n<tr><th><label for=\"id_last_name\">Last name:</label></th><td><input type=\"text\" name=\"last_name\" id=\"id_last_name\" /></td></tr>\n<tr><th><label for=\"id_birthday\">Birthday:</label></th><td><input type=\"text\" name=\"birthday\" id=\"id_birthday\" /><input type=\"hidden\" name=\"hidden_text\" id=\"id_hidden_text\" /></td></tr>\"\"\")\n        self.assertHTMLEqual(p.as_ul(), \"\"\"<li><label for=\"id_first_name\">First name:</label> <input type=\"text\" name=\"first_name\" id=\"id_first_name\" /></li>\n<li><label for=\"id_last_name\">Last name:</label> <input type=\"text\" name=\"last_name\" id=\"id_last_name\" /></li>\n<li><label for=\"id_birthday\">Birthday:</label> <input type=\"text\" name=\"birthday\" id=\"id_birthday\" /><input type=\"hidden\" name=\"hidden_text\" id=\"id_hidden_text\" /></li>\"\"\")\n        self.assertHTMLEqual(p.as_p(), \"\"\"<p><label for=\"id_first_name\">First name:</label> <input type=\"text\" name=\"first_name\" id=\"id_first_name\" /></p>\n<p><label for=\"id_last_name\">Last name:</label> <input type=\"text\" name=\"last_name\" id=\"id_last_name\" /></p>\n<p><label for=\"id_birthday\">Birthday:</label> <input type=\"text\" name=\"birthday\" id=\"id_birthday\" /><input type=\"hidden\" name=\"hidden_text\" id=\"id_hidden_text\" /></p>\"\"\")\n\n        # If a field with a HiddenInput has errors, the as_table() and as_ul() output\n        # will include the error message(s) with the text \"(Hidden field [fieldname]) \"\n        # prepended. This message is displayed at the top of the output, regardless of\n        # its field's order in the form.\n        p = Person({'first_name': 'John', 'last_name': 'Lennon', 'birthday': '1940-10-9'}, auto_id=False)\n        self.assertHTMLEqual(p.as_table(), \"\"\"<tr><td colspan=\"2\"><ul class=\"errorlist\"><li>(Hidden field hidden_text) This field is required.</li></ul></td></tr>\n<tr><th>First name:</th><td><input type=\"text\" name=\"first_name\" value=\"John\" /></td></tr>\n<tr><th>Last name:</th><td><input type=\"text\" name=\"last_name\" value=\"Lennon\" /></td></tr>\n<tr><th>Birthday:</th><td><input type=\"text\" name=\"birthday\" value=\"1940-10-9\" /><input type=\"hidden\" name=\"hidden_text\" /></td></tr>\"\"\")\n        self.assertHTMLEqual(p.as_ul(), \"\"\"<li><ul class=\"errorlist\"><li>(Hidden field hidden_text) This field is required.</li></ul></li>\n<li>First name: <input type=\"text\" name=\"first_name\" value=\"John\" /></li>\n<li>Last name: <input type=\"text\" name=\"last_name\" value=\"Lennon\" /></li>\n<li>Birthday: <input type=\"text\" name=\"birthday\" value=\"1940-10-9\" /><input type=\"hidden\" name=\"hidden_text\" /></li>\"\"\")\n        self.assertHTMLEqual(p.as_p(), \"\"\"<ul class=\"errorlist\"><li>(Hidden field hidden_text) This field is required.</li></ul>\n<p>First name: <input type=\"text\" name=\"first_name\" value=\"John\" /></p>\n<p>Last name: <input type=\"text\" name=\"last_name\" value=\"Lennon\" /></p>\n<p>Birthday: <input type=\"text\" name=\"birthday\" value=\"1940-10-9\" /><input type=\"hidden\" name=\"hidden_text\" /></p>\"\"\")\n\n        # A corner case: It's possible for a form to have only HiddenInputs.\n        class TestForm(Form):\n            foo = CharField(widget=HiddenInput)\n            bar = CharField(widget=HiddenInput)\n\n        p = TestForm(auto_id=False)\n        self.assertHTMLEqual(p.as_table(), '<input type=\"hidden\" name=\"foo\" /><input type=\"hidden\" name=\"bar\" />')\n        self.assertHTMLEqual(p.as_ul(), '<input type=\"hidden\" name=\"foo\" /><input type=\"hidden\" name=\"bar\" />')\n        self.assertHTMLEqual(p.as_p(), '<input type=\"hidden\" name=\"foo\" /><input type=\"hidden\" name=\"bar\" />')\n\n    def test_field_order(self):\n        # A Form's fields are displayed in the same order in which they were defined.\n        class TestForm(Form):\n            field1 = CharField()\n            field2 = CharField()\n            field3 = CharField()\n            field4 = CharField()\n            field5 = CharField()\n            field6 = CharField()\n            field7 = CharField()\n            field8 = CharField()\n            field9 = CharField()\n            field10 = CharField()\n            field11 = CharField()\n            field12 = CharField()\n            field13 = CharField()\n            field14 = CharField()\n\n        p = TestForm(auto_id=False)\n        self.assertHTMLEqual(p.as_table(), \"\"\"<tr><th>Field1:</th><td><input type=\"text\" name=\"field1\" /></td></tr>\n<tr><th>Field2:</th><td><input type=\"text\" name=\"field2\" /></td></tr>\n<tr><th>Field3:</th><td><input type=\"text\" name=\"field3\" /></td></tr>\n<tr><th>Field4:</th><td><input type=\"text\" name=\"field4\" /></td></tr>\n<tr><th>Field5:</th><td><input type=\"text\" name=\"field5\" /></td></tr>\n<tr><th>Field6:</th><td><input type=\"text\" name=\"field6\" /></td></tr>\n<tr><th>Field7:</th><td><input type=\"text\" name=\"field7\" /></td></tr>\n<tr><th>Field8:</th><td><input type=\"text\" name=\"field8\" /></td></tr>\n<tr><th>Field9:</th><td><input type=\"text\" name=\"field9\" /></td></tr>\n<tr><th>Field10:</th><td><input type=\"text\" name=\"field10\" /></td></tr>\n<tr><th>Field11:</th><td><input type=\"text\" name=\"field11\" /></td></tr>\n<tr><th>Field12:</th><td><input type=\"text\" name=\"field12\" /></td></tr>\n<tr><th>Field13:</th><td><input type=\"text\" name=\"field13\" /></td></tr>\n<tr><th>Field14:</th><td><input type=\"text\" name=\"field14\" /></td></tr>\"\"\")\n\n    def test_form_html_attributes(self):\n        # Some Field classes have an effect on the HTML attributes of their associated\n        # Widget. If you set max_length in a CharField and its associated widget is\n        # either a TextInput or PasswordInput, then the widget's rendered HTML will\n        # include the \"maxlength\" attribute.\n        class UserRegistration(Form):\n            username = CharField(max_length=10)                   # uses TextInput by default\n            password = CharField(max_length=10, widget=PasswordInput)\n            realname = CharField(max_length=10, widget=TextInput) # redundantly define widget, just to test\n            address = CharField()                                 # no max_length defined here\n\n        p = UserRegistration(auto_id=False)\n        self.assertHTMLEqual(p.as_ul(), \"\"\"<li>Username: <input type=\"text\" name=\"username\" maxlength=\"10\" /></li>\n<li>Password: <input type=\"password\" name=\"password\" maxlength=\"10\" /></li>\n<li>Realname: <input type=\"text\" name=\"realname\" maxlength=\"10\" /></li>\n<li>Address: <input type=\"text\" name=\"address\" /></li>\"\"\")\n\n        # If you specify a custom \"attrs\" that includes the \"maxlength\" attribute,\n        # the Field's max_length attribute will override whatever \"maxlength\" you specify\n        # in \"attrs\".\n        class UserRegistration(Form):\n            username = CharField(max_length=10, widget=TextInput(attrs={'maxlength': 20}))\n            password = CharField(max_length=10, widget=PasswordInput)\n\n        p = UserRegistration(auto_id=False)\n        self.assertHTMLEqual(p.as_ul(), \"\"\"<li>Username: <input type=\"text\" name=\"username\" maxlength=\"10\" /></li>\n<li>Password: <input type=\"password\" name=\"password\" maxlength=\"10\" /></li>\"\"\")\n\n    def test_specifying_labels(self):\n        # You can specify the label for a field by using the 'label' argument to a Field\n        # class. If you don't specify 'label', Django will use the field name with\n        # underscores converted to spaces, and the initial letter capitalized.\n        class UserRegistration(Form):\n            username = CharField(max_length=10, label='Your username')\n            password1 = CharField(widget=PasswordInput)\n            password2 = CharField(widget=PasswordInput, label='Password (again)')\n\n        p = UserRegistration(auto_id=False)\n        self.assertHTMLEqual(p.as_ul(), \"\"\"<li>Your username: <input type=\"text\" name=\"username\" maxlength=\"10\" /></li>\n<li>Password1: <input type=\"password\" name=\"password1\" /></li>\n<li>Password (again): <input type=\"password\" name=\"password2\" /></li>\"\"\")\n\n        # Labels for as_* methods will only end in a colon if they don't end in other\n        # punctuation already.\n        class Questions(Form):\n            q1 = CharField(label='The first question')\n            q2 = CharField(label='What is your name?')\n            q3 = CharField(label='The answer to life is:')\n            q4 = CharField(label='Answer this question!')\n            q5 = CharField(label='The last question. Period.')\n\n        self.assertHTMLEqual(Questions(auto_id=False).as_p(), \"\"\"<p>The first question: <input type=\"text\" name=\"q1\" /></p>\n<p>What is your name? <input type=\"text\" name=\"q2\" /></p>\n<p>The answer to life is: <input type=\"text\" name=\"q3\" /></p>\n<p>Answer this question! <input type=\"text\" name=\"q4\" /></p>\n<p>The last question. Period. <input type=\"text\" name=\"q5\" /></p>\"\"\")\n        self.assertHTMLEqual(Questions().as_p(), \"\"\"<p><label for=\"id_q1\">The first question:</label> <input type=\"text\" name=\"q1\" id=\"id_q1\" /></p>\n<p><label for=\"id_q2\">What is your name?</label> <input type=\"text\" name=\"q2\" id=\"id_q2\" /></p>\n<p><label for=\"id_q3\">The answer to life is:</label> <input type=\"text\" name=\"q3\" id=\"id_q3\" /></p>\n<p><label for=\"id_q4\">Answer this question!</label> <input type=\"text\" name=\"q4\" id=\"id_q4\" /></p>\n<p><label for=\"id_q5\">The last question. Period.</label> <input type=\"text\" name=\"q5\" id=\"id_q5\" /></p>\"\"\")\n\n        # A label can be a Unicode object or a bytestring with special characters.\n        class UserRegistration(Form):\n            username = CharField(max_length=10, label='ŠĐĆŽćžšđ')\n            password = CharField(widget=PasswordInput, label='\\u0160\\u0110\\u0106\\u017d\\u0107\\u017e\\u0161\\u0111')\n\n        p = UserRegistration(auto_id=False)\n        self.assertHTMLEqual(p.as_ul(), '<li>\\u0160\\u0110\\u0106\\u017d\\u0107\\u017e\\u0161\\u0111: <input type=\"text\" name=\"username\" maxlength=\"10\" /></li>\\n<li>\\u0160\\u0110\\u0106\\u017d\\u0107\\u017e\\u0161\\u0111: <input type=\"password\" name=\"password\" /></li>')\n\n        # If a label is set to the empty string for a field, that field won't get a label.\n        class UserRegistration(Form):\n            username = CharField(max_length=10, label='')\n            password = CharField(widget=PasswordInput)\n\n        p = UserRegistration(auto_id=False)\n        self.assertHTMLEqual(p.as_ul(), \"\"\"<li> <input type=\"text\" name=\"username\" maxlength=\"10\" /></li>\n<li>Password: <input type=\"password\" name=\"password\" /></li>\"\"\")\n        p = UserRegistration(auto_id='id_%s')\n        self.assertHTMLEqual(p.as_ul(), \"\"\"<li> <input id=\"id_username\" type=\"text\" name=\"username\" maxlength=\"10\" /></li>\n<li><label for=\"id_password\">Password:</label> <input type=\"password\" name=\"password\" id=\"id_password\" /></li>\"\"\")\n\n        # If label is None, Django will auto-create the label from the field name. This\n        # is default behavior.\n        class UserRegistration(Form):\n            username = CharField(max_length=10, label=None)\n            password = CharField(widget=PasswordInput)\n\n        p = UserRegistration(auto_id=False)\n        self.assertHTMLEqual(p.as_ul(), \"\"\"<li>Username: <input type=\"text\" name=\"username\" maxlength=\"10\" /></li>\n<li>Password: <input type=\"password\" name=\"password\" /></li>\"\"\")\n        p = UserRegistration(auto_id='id_%s')\n        self.assertHTMLEqual(p.as_ul(), \"\"\"<li><label for=\"id_username\">Username:</label> <input id=\"id_username\" type=\"text\" name=\"username\" maxlength=\"10\" /></li>\n<li><label for=\"id_password\">Password:</label> <input type=\"password\" name=\"password\" id=\"id_password\" /></li>\"\"\")\n\n    def test_label_suffix(self):\n        # You can specify the 'label_suffix' argument to a Form class to modify the\n        # punctuation symbol used at the end of a label.  By default, the colon (:) is\n        # used, and is only appended to the label if the label doesn't already end with a\n        # punctuation symbol: ., !, ? or :.  If you specify a different suffix, it will\n        # be appended regardless of the last character of the label.\n        class FavoriteForm(Form):\n            color = CharField(label='Favorite color?')\n            animal = CharField(label='Favorite animal')\n\n        f = FavoriteForm(auto_id=False)\n        self.assertHTMLEqual(f.as_ul(), \"\"\"<li>Favorite color? <input type=\"text\" name=\"color\" /></li>\n<li>Favorite animal: <input type=\"text\" name=\"animal\" /></li>\"\"\")\n        f = FavoriteForm(auto_id=False, label_suffix='?')\n        self.assertHTMLEqual(f.as_ul(), \"\"\"<li>Favorite color? <input type=\"text\" name=\"color\" /></li>\n<li>Favorite animal? <input type=\"text\" name=\"animal\" /></li>\"\"\")\n        f = FavoriteForm(auto_id=False, label_suffix='')\n        self.assertHTMLEqual(f.as_ul(), \"\"\"<li>Favorite color? <input type=\"text\" name=\"color\" /></li>\n<li>Favorite animal <input type=\"text\" name=\"animal\" /></li>\"\"\")\n        f = FavoriteForm(auto_id=False, label_suffix='\\u2192')\n        self.assertHTMLEqual(f.as_ul(), '<li>Favorite color? <input type=\"text\" name=\"color\" /></li>\\n<li>Favorite animal\\u2192 <input type=\"text\" name=\"animal\" /></li>')\n\n    def test_initial_data(self):\n        # You can specify initial data for a field by using the 'initial' argument to a\n        # Field class. This initial data is displayed when a Form is rendered with *no*\n        # data. It is not displayed when a Form is rendered with any data (including an\n        # empty dictionary). Also, the initial value is *not* used if data for a\n        # particular required field isn't provided.\n        class UserRegistration(Form):\n            username = CharField(max_length=10, initial='django')\n            password = CharField(widget=PasswordInput)\n\n        # Here, we're not submitting any data, so the initial value will be displayed.)\n        p = UserRegistration(auto_id=False)\n        self.assertHTMLEqual(p.as_ul(), \"\"\"<li>Username: <input type=\"text\" name=\"username\" value=\"django\" maxlength=\"10\" /></li>\n<li>Password: <input type=\"password\" name=\"password\" /></li>\"\"\")\n\n        # Here, we're submitting data, so the initial value will *not* be displayed.\n        p = UserRegistration({}, auto_id=False)\n        self.assertHTMLEqual(p.as_ul(), \"\"\"<li><ul class=\"errorlist\"><li>This field is required.</li></ul>Username: <input type=\"text\" name=\"username\" maxlength=\"10\" /></li>\n<li><ul class=\"errorlist\"><li>This field is required.</li></ul>Password: <input type=\"password\" name=\"password\" /></li>\"\"\")\n        p = UserRegistration({'username': ''}, auto_id=False)\n        self.assertHTMLEqual(p.as_ul(), \"\"\"<li><ul class=\"errorlist\"><li>This field is required.</li></ul>Username: <input type=\"text\" name=\"username\" maxlength=\"10\" /></li>\n<li><ul class=\"errorlist\"><li>This field is required.</li></ul>Password: <input type=\"password\" name=\"password\" /></li>\"\"\")\n        p = UserRegistration({'username': 'foo'}, auto_id=False)\n        self.assertHTMLEqual(p.as_ul(), \"\"\"<li>Username: <input type=\"text\" name=\"username\" value=\"foo\" maxlength=\"10\" /></li>\n<li><ul class=\"errorlist\"><li>This field is required.</li></ul>Password: <input type=\"password\" name=\"password\" /></li>\"\"\")\n\n        # An 'initial' value is *not* used as a fallback if data is not provided. In this\n        # example, we don't provide a value for 'username', and the form raises a\n        # validation error rather than using the initial value for 'username'.\n        p = UserRegistration({'password': 'secret'})\n        self.assertEqual(p.errors['username'], ['This field is required.'])\n        self.assertFalse(p.is_valid())\n\n    def test_dynamic_initial_data(self):\n        # The previous technique dealt with \"hard-coded\" initial data, but it's also\n        # possible to specify initial data after you've already created the Form class\n        # (i.e., at runtime). Use the 'initial' parameter to the Form constructor. This\n        # should be a dictionary containing initial values for one or more fields in the\n        # form, keyed by field name.\n        class UserRegistration(Form):\n            username = CharField(max_length=10)\n            password = CharField(widget=PasswordInput)\n\n        # Here, we're not submitting any data, so the initial value will be displayed.)\n        p = UserRegistration(initial={'username': 'django'}, auto_id=False)\n        self.assertHTMLEqual(p.as_ul(), \"\"\"<li>Username: <input type=\"text\" name=\"username\" value=\"django\" maxlength=\"10\" /></li>\n<li>Password: <input type=\"password\" name=\"password\" /></li>\"\"\")\n        p = UserRegistration(initial={'username': 'stephane'}, auto_id=False)\n        self.assertHTMLEqual(p.as_ul(), \"\"\"<li>Username: <input type=\"text\" name=\"username\" value=\"stephane\" maxlength=\"10\" /></li>\n<li>Password: <input type=\"password\" name=\"password\" /></li>\"\"\")\n\n        # The 'initial' parameter is meaningless if you pass data.\n        p = UserRegistration({}, initial={'username': 'django'}, auto_id=False)\n        self.assertHTMLEqual(p.as_ul(), \"\"\"<li><ul class=\"errorlist\"><li>This field is required.</li></ul>Username: <input type=\"text\" name=\"username\" maxlength=\"10\" /></li>\n<li><ul class=\"errorlist\"><li>This field is required.</li></ul>Password: <input type=\"password\" name=\"password\" /></li>\"\"\")\n        p = UserRegistration({'username': ''}, initial={'username': 'django'}, auto_id=False)\n        self.assertHTMLEqual(p.as_ul(), \"\"\"<li><ul class=\"errorlist\"><li>This field is required.</li></ul>Username: <input type=\"text\" name=\"username\" maxlength=\"10\" /></li>\n<li><ul class=\"errorlist\"><li>This field is required.</li></ul>Password: <input type=\"password\" name=\"password\" /></li>\"\"\")\n        p = UserRegistration({'username': 'foo'}, initial={'username': 'django'}, auto_id=False)\n        self.assertHTMLEqual(p.as_ul(), \"\"\"<li>Username: <input type=\"text\" name=\"username\" value=\"foo\" maxlength=\"10\" /></li>\n<li><ul class=\"errorlist\"><li>This field is required.</li></ul>Password: <input type=\"password\" name=\"password\" /></li>\"\"\")\n\n        # A dynamic 'initial' value is *not* used as a fallback if data is not provided.\n        # In this example, we don't provide a value for 'username', and the form raises a\n        # validation error rather than using the initial value for 'username'.\n        p = UserRegistration({'password': 'secret'}, initial={'username': 'django'})\n        self.assertEqual(p.errors['username'], ['This field is required.'])\n        self.assertFalse(p.is_valid())\n\n        # If a Form defines 'initial' *and* 'initial' is passed as a parameter to Form(),\n        # then the latter will get precedence.\n        class UserRegistration(Form):\n            username = CharField(max_length=10, initial='django')\n            password = CharField(widget=PasswordInput)\n\n        p = UserRegistration(initial={'username': 'babik'}, auto_id=False)\n        self.assertHTMLEqual(p.as_ul(), \"\"\"<li>Username: <input type=\"text\" name=\"username\" value=\"babik\" maxlength=\"10\" /></li>\n<li>Password: <input type=\"password\" name=\"password\" /></li>\"\"\")\n\n    def test_callable_initial_data(self):\n        # The previous technique dealt with raw values as initial data, but it's also\n        # possible to specify callable data.\n        class UserRegistration(Form):\n            username = CharField(max_length=10)\n            password = CharField(widget=PasswordInput)\n            options = MultipleChoiceField(choices=[('f','foo'),('b','bar'),('w','whiz')])\n\n        # We need to define functions that get called later.)\n        def initial_django():\n            return 'django'\n\n        def initial_stephane():\n            return 'stephane'\n\n        def initial_options():\n            return ['f','b']\n\n        def initial_other_options():\n            return ['b','w']\n\n        # Here, we're not submitting any data, so the initial value will be displayed.)\n        p = UserRegistration(initial={'username': initial_django, 'options': initial_options}, auto_id=False)\n        self.assertHTMLEqual(p.as_ul(), \"\"\"<li>Username: <input type=\"text\" name=\"username\" value=\"django\" maxlength=\"10\" /></li>\n<li>Password: <input type=\"password\" name=\"password\" /></li>\n<li>Options: <select multiple=\"multiple\" name=\"options\">\n<option value=\"f\" selected=\"selected\">foo</option>\n<option value=\"b\" selected=\"selected\">bar</option>\n<option value=\"w\">whiz</option>\n</select></li>\"\"\")\n\n        # The 'initial' parameter is meaningless if you pass data.\n        p = UserRegistration({}, initial={'username': initial_django, 'options': initial_options}, auto_id=False)\n        self.assertHTMLEqual(p.as_ul(), \"\"\"<li><ul class=\"errorlist\"><li>This field is required.</li></ul>Username: <input type=\"text\" name=\"username\" maxlength=\"10\" /></li>\n<li><ul class=\"errorlist\"><li>This field is required.</li></ul>Password: <input type=\"password\" name=\"password\" /></li>\n<li><ul class=\"errorlist\"><li>This field is required.</li></ul>Options: <select multiple=\"multiple\" name=\"options\">\n<option value=\"f\">foo</option>\n<option value=\"b\">bar</option>\n<option value=\"w\">whiz</option>\n</select></li>\"\"\")\n        p = UserRegistration({'username': ''}, initial={'username': initial_django}, auto_id=False)\n        self.assertHTMLEqual(p.as_ul(), \"\"\"<li><ul class=\"errorlist\"><li>This field is required.</li></ul>Username: <input type=\"text\" name=\"username\" maxlength=\"10\" /></li>\n<li><ul class=\"errorlist\"><li>This field is required.</li></ul>Password: <input type=\"password\" name=\"password\" /></li>\n<li><ul class=\"errorlist\"><li>This field is required.</li></ul>Options: <select multiple=\"multiple\" name=\"options\">\n<option value=\"f\">foo</option>\n<option value=\"b\">bar</option>\n<option value=\"w\">whiz</option>\n</select></li>\"\"\")\n        p = UserRegistration({'username': 'foo', 'options':['f','b']}, initial={'username': initial_django}, auto_id=False)\n        self.assertHTMLEqual(p.as_ul(), \"\"\"<li>Username: <input type=\"text\" name=\"username\" value=\"foo\" maxlength=\"10\" /></li>\n<li><ul class=\"errorlist\"><li>This field is required.</li></ul>Password: <input type=\"password\" name=\"password\" /></li>\n<li>Options: <select multiple=\"multiple\" name=\"options\">\n<option value=\"f\" selected=\"selected\">foo</option>\n<option value=\"b\" selected=\"selected\">bar</option>\n<option value=\"w\">whiz</option>\n</select></li>\"\"\")\n\n        # A callable 'initial' value is *not* used as a fallback if data is not provided.\n        # In this example, we don't provide a value for 'username', and the form raises a\n        # validation error rather than using the initial value for 'username'.\n        p = UserRegistration({'password': 'secret'}, initial={'username': initial_django, 'options': initial_options})\n        self.assertEqual(p.errors['username'], ['This field is required.'])\n        self.assertFalse(p.is_valid())\n\n        # If a Form defines 'initial' *and* 'initial' is passed as a parameter to Form(),\n        # then the latter will get precedence.\n        class UserRegistration(Form):\n           username = CharField(max_length=10, initial=initial_django)\n           password = CharField(widget=PasswordInput)\n           options = MultipleChoiceField(choices=[('f','foo'),('b','bar'),('w','whiz')], initial=initial_other_options)\n\n        p = UserRegistration(auto_id=False)\n        self.assertHTMLEqual(p.as_ul(), \"\"\"<li>Username: <input type=\"text\" name=\"username\" value=\"django\" maxlength=\"10\" /></li>\n<li>Password: <input type=\"password\" name=\"password\" /></li>\n<li>Options: <select multiple=\"multiple\" name=\"options\">\n<option value=\"f\">foo</option>\n<option value=\"b\" selected=\"selected\">bar</option>\n<option value=\"w\" selected=\"selected\">whiz</option>\n</select></li>\"\"\")\n        p = UserRegistration(initial={'username': initial_stephane, 'options': initial_options}, auto_id=False)\n        self.assertHTMLEqual(p.as_ul(), \"\"\"<li>Username: <input type=\"text\" name=\"username\" value=\"stephane\" maxlength=\"10\" /></li>\n<li>Password: <input type=\"password\" name=\"password\" /></li>\n<li>Options: <select multiple=\"multiple\" name=\"options\">\n<option value=\"f\" selected=\"selected\">foo</option>\n<option value=\"b\" selected=\"selected\">bar</option>\n<option value=\"w\">whiz</option>\n</select></li>\"\"\")\n\n    def test_boundfield_values(self):\n        # It's possible to get to the value which would be used for rendering\n        # the widget for a field by using the BoundField's value method.\n\n        class UserRegistration(Form):\n            username = CharField(max_length=10, initial='djangonaut')\n            password = CharField(widget=PasswordInput)\n\n        unbound = UserRegistration()\n        bound = UserRegistration({'password': 'foo'})\n        self.assertEqual(bound['username'].value(), None)\n        self.assertEqual(unbound['username'].value(), 'djangonaut')\n        self.assertEqual(bound['password'].value(), 'foo')\n        self.assertEqual(unbound['password'].value(), None)\n\n    def test_help_text(self):\n        # You can specify descriptive text for a field by using the 'help_text' argument)\n        class UserRegistration(Form):\n            username = CharField(max_length=10, help_text='e.g., user@example.com')\n            password = CharField(widget=PasswordInput, help_text='Choose wisely.')\n\n        p = UserRegistration(auto_id=False)\n        self.assertHTMLEqual(p.as_ul(), \"\"\"<li>Username: <input type=\"text\" name=\"username\" maxlength=\"10\" /> <span class=\"helptext\">e.g., user@example.com</span></li>\n<li>Password: <input type=\"password\" name=\"password\" /> <span class=\"helptext\">Choose wisely.</span></li>\"\"\")\n        self.assertHTMLEqual(p.as_p(), \"\"\"<p>Username: <input type=\"text\" name=\"username\" maxlength=\"10\" /> <span class=\"helptext\">e.g., user@example.com</span></p>\n<p>Password: <input type=\"password\" name=\"password\" /> <span class=\"helptext\">Choose wisely.</span></p>\"\"\")\n        self.assertHTMLEqual(p.as_table(), \"\"\"<tr><th>Username:</th><td><input type=\"text\" name=\"username\" maxlength=\"10\" /><br /><span class=\"helptext\">e.g., user@example.com</span></td></tr>\n<tr><th>Password:</th><td><input type=\"password\" name=\"password\" /><br /><span class=\"helptext\">Choose wisely.</span></td></tr>\"\"\")\n\n        # The help text is displayed whether or not data is provided for the form.\n        p = UserRegistration({'username': 'foo'}, auto_id=False)\n        self.assertHTMLEqual(p.as_ul(), \"\"\"<li>Username: <input type=\"text\" name=\"username\" value=\"foo\" maxlength=\"10\" /> <span class=\"helptext\">e.g., user@example.com</span></li>\n<li><ul class=\"errorlist\"><li>This field is required.</li></ul>Password: <input type=\"password\" name=\"password\" /> <span class=\"helptext\">Choose wisely.</span></li>\"\"\")\n\n        # help_text is not displayed for hidden fields. It can be used for documentation\n        # purposes, though.\n        class UserRegistration(Form):\n            username = CharField(max_length=10, help_text='e.g., user@example.com')\n            password = CharField(widget=PasswordInput)\n            next = CharField(widget=HiddenInput, initial='/', help_text='Redirect destination')\n\n        p = UserRegistration(auto_id=False)\n        self.assertHTMLEqual(p.as_ul(), \"\"\"<li>Username: <input type=\"text\" name=\"username\" maxlength=\"10\" /> <span class=\"helptext\">e.g., user@example.com</span></li>\n<li>Password: <input type=\"password\" name=\"password\" /><input type=\"hidden\" name=\"next\" value=\"/\" /></li>\"\"\")\n\n        # Help text can include arbitrary Unicode characters.\n        class UserRegistration(Form):\n            username = CharField(max_length=10, help_text='ŠĐĆŽćžšđ')\n\n        p = UserRegistration(auto_id=False)\n        self.assertHTMLEqual(p.as_ul(), '<li>Username: <input type=\"text\" name=\"username\" maxlength=\"10\" /> <span class=\"helptext\">\\u0160\\u0110\\u0106\\u017d\\u0107\\u017e\\u0161\\u0111</span></li>')\n\n    def test_subclassing_forms(self):\n        # You can subclass a Form to add fields. The resulting form subclass will have\n        # all of the fields of the parent Form, plus whichever fields you define in the\n        # subclass.\n        class Person(Form):\n            first_name = CharField()\n            last_name = CharField()\n            birthday = DateField()\n\n        class Musician(Person):\n            instrument = CharField()\n\n        p = Person(auto_id=False)\n        self.assertHTMLEqual(p.as_ul(), \"\"\"<li>First name: <input type=\"text\" name=\"first_name\" /></li>\n<li>Last name: <input type=\"text\" name=\"last_name\" /></li>\n<li>Birthday: <input type=\"text\" name=\"birthday\" /></li>\"\"\")\n        m = Musician(auto_id=False)\n        self.assertHTMLEqual(m.as_ul(), \"\"\"<li>First name: <input type=\"text\" name=\"first_name\" /></li>\n<li>Last name: <input type=\"text\" name=\"last_name\" /></li>\n<li>Birthday: <input type=\"text\" name=\"birthday\" /></li>\n<li>Instrument: <input type=\"text\" name=\"instrument\" /></li>\"\"\")\n\n        # Yes, you can subclass multiple forms. The fields are added in the order in\n        # which the parent classes are listed.\n        class Person(Form):\n            first_name = CharField()\n            last_name = CharField()\n            birthday = DateField()\n\n        class Instrument(Form):\n            instrument = CharField()\n\n        class Beatle(Person, Instrument):\n            haircut_type = CharField()\n\n        b = Beatle(auto_id=False)\n        self.assertHTMLEqual(b.as_ul(), \"\"\"<li>First name: <input type=\"text\" name=\"first_name\" /></li>\n<li>Last name: <input type=\"text\" name=\"last_name\" /></li>\n<li>Birthday: <input type=\"text\" name=\"birthday\" /></li>\n<li>Instrument: <input type=\"text\" name=\"instrument\" /></li>\n<li>Haircut type: <input type=\"text\" name=\"haircut_type\" /></li>\"\"\")\n\n    def test_forms_with_prefixes(self):\n        # Sometimes it's necessary to have multiple forms display on the same HTML page,\n        # or multiple copies of the same form. We can accomplish this with form prefixes.\n        # Pass the keyword argument 'prefix' to the Form constructor to use this feature.\n        # This value will be prepended to each HTML form field name. One way to think\n        # about this is \"namespaces for HTML forms\". Notice that in the data argument,\n        # each field's key has the prefix, in this case 'person1', prepended to the\n        # actual field name.\n        class Person(Form):\n            first_name = CharField()\n            last_name = CharField()\n            birthday = DateField()\n\n        data = {\n            'person1-first_name': 'John',\n            'person1-last_name': 'Lennon',\n            'person1-birthday': '1940-10-9'\n        }\n        p = Person(data, prefix='person1')\n        self.assertHTMLEqual(p.as_ul(), \"\"\"<li><label for=\"id_person1-first_name\">First name:</label> <input type=\"text\" name=\"person1-first_name\" value=\"John\" id=\"id_person1-first_name\" /></li>\n<li><label for=\"id_person1-last_name\">Last name:</label> <input type=\"text\" name=\"person1-last_name\" value=\"Lennon\" id=\"id_person1-last_name\" /></li>\n<li><label for=\"id_person1-birthday\">Birthday:</label> <input type=\"text\" name=\"person1-birthday\" value=\"1940-10-9\" id=\"id_person1-birthday\" /></li>\"\"\")\n        self.assertHTMLEqual(str(p['first_name']), '<input type=\"text\" name=\"person1-first_name\" value=\"John\" id=\"id_person1-first_name\" />')\n        self.assertHTMLEqual(str(p['last_name']), '<input type=\"text\" name=\"person1-last_name\" value=\"Lennon\" id=\"id_person1-last_name\" />')\n        self.assertHTMLEqual(str(p['birthday']), '<input type=\"text\" name=\"person1-birthday\" value=\"1940-10-9\" id=\"id_person1-birthday\" />')\n        self.assertEqual(p.errors, {})\n        self.assertTrue(p.is_valid())\n        self.assertEqual(p.cleaned_data['first_name'], 'John')\n        self.assertEqual(p.cleaned_data['last_name'], 'Lennon')\n        self.assertEqual(p.cleaned_data['birthday'], datetime.date(1940, 10, 9))\n\n        # Let's try submitting some bad data to make sure form.errors and field.errors\n        # work as expected.\n        data = {\n            'person1-first_name': '',\n            'person1-last_name': '',\n            'person1-birthday': ''\n        }\n        p = Person(data, prefix='person1')\n        self.assertEqual(p.errors['first_name'], ['This field is required.'])\n        self.assertEqual(p.errors['last_name'], ['This field is required.'])\n        self.assertEqual(p.errors['birthday'], ['This field is required.'])\n        self.assertEqual(p['first_name'].errors, ['This field is required.'])\n        try:\n            p['person1-first_name'].errors\n            self.fail('Attempts to access non-existent fields should fail.')\n        except KeyError:\n            pass\n\n        # In this example, the data doesn't have a prefix, but the form requires it, so\n        # the form doesn't \"see\" the fields.\n        data = {\n            'first_name': 'John',\n            'last_name': 'Lennon',\n            'birthday': '1940-10-9'\n        }\n        p = Person(data, prefix='person1')\n        self.assertEqual(p.errors['first_name'], ['This field is required.'])\n        self.assertEqual(p.errors['last_name'], ['This field is required.'])\n        self.assertEqual(p.errors['birthday'], ['This field is required.'])\n\n        # With prefixes, a single data dictionary can hold data for multiple instances\n        # of the same form.\n        data = {\n            'person1-first_name': 'John',\n            'person1-last_name': 'Lennon',\n            'person1-birthday': '1940-10-9',\n            'person2-first_name': 'Jim',\n            'person2-last_name': 'Morrison',\n            'person2-birthday': '1943-12-8'\n        }\n        p1 = Person(data, prefix='person1')\n        self.assertTrue(p1.is_valid())\n        self.assertEqual(p1.cleaned_data['first_name'], 'John')\n        self.assertEqual(p1.cleaned_data['last_name'], 'Lennon')\n        self.assertEqual(p1.cleaned_data['birthday'], datetime.date(1940, 10, 9))\n        p2 = Person(data, prefix='person2')\n        self.assertTrue(p2.is_valid())\n        self.assertEqual(p2.cleaned_data['first_name'], 'Jim')\n        self.assertEqual(p2.cleaned_data['last_name'], 'Morrison')\n        self.assertEqual(p2.cleaned_data['birthday'], datetime.date(1943, 12, 8))\n\n        # By default, forms append a hyphen between the prefix and the field name, but a\n        # form can alter that behavior by implementing the add_prefix() method. This\n        # method takes a field name and returns the prefixed field, according to\n        # self.prefix.\n        class Person(Form):\n            first_name = CharField()\n            last_name = CharField()\n            birthday = DateField()\n\n            def add_prefix(self, field_name):\n                return self.prefix and '%s-prefix-%s' % (self.prefix, field_name) or field_name\n\n        p = Person(prefix='foo')\n        self.assertHTMLEqual(p.as_ul(), \"\"\"<li><label for=\"id_foo-prefix-first_name\">First name:</label> <input type=\"text\" name=\"foo-prefix-first_name\" id=\"id_foo-prefix-first_name\" /></li>\n<li><label for=\"id_foo-prefix-last_name\">Last name:</label> <input type=\"text\" name=\"foo-prefix-last_name\" id=\"id_foo-prefix-last_name\" /></li>\n<li><label for=\"id_foo-prefix-birthday\">Birthday:</label> <input type=\"text\" name=\"foo-prefix-birthday\" id=\"id_foo-prefix-birthday\" /></li>\"\"\")\n        data = {\n            'foo-prefix-first_name': 'John',\n            'foo-prefix-last_name': 'Lennon',\n            'foo-prefix-birthday': '1940-10-9'\n        }\n        p = Person(data, prefix='foo')\n        self.assertTrue(p.is_valid())\n        self.assertEqual(p.cleaned_data['first_name'], 'John')\n        self.assertEqual(p.cleaned_data['last_name'], 'Lennon')\n        self.assertEqual(p.cleaned_data['birthday'], datetime.date(1940, 10, 9))\n\n    def test_forms_with_null_boolean(self):\n        # NullBooleanField is a bit of a special case because its presentation (widget)\n        # is different than its data. This is handled transparently, though.\n        class Person(Form):\n            name = CharField()\n            is_cool = NullBooleanField()\n\n        p = Person({'name': 'Joe'}, auto_id=False)\n        self.assertHTMLEqual(str(p['is_cool']), \"\"\"<select name=\"is_cool\">\n<option value=\"1\" selected=\"selected\">Unknown</option>\n<option value=\"2\">Yes</option>\n<option value=\"3\">No</option>\n</select>\"\"\")\n        p = Person({'name': 'Joe', 'is_cool': '1'}, auto_id=False)\n        self.assertHTMLEqual(str(p['is_cool']), \"\"\"<select name=\"is_cool\">\n<option value=\"1\" selected=\"selected\">Unknown</option>\n<option value=\"2\">Yes</option>\n<option value=\"3\">No</option>\n</select>\"\"\")\n        p = Person({'name': 'Joe', 'is_cool': '2'}, auto_id=False)\n        self.assertHTMLEqual(str(p['is_cool']), \"\"\"<select name=\"is_cool\">\n<option value=\"1\">Unknown</option>\n<option value=\"2\" selected=\"selected\">Yes</option>\n<option value=\"3\">No</option>\n</select>\"\"\")\n        p = Person({'name': 'Joe', 'is_cool': '3'}, auto_id=False)\n        self.assertHTMLEqual(str(p['is_cool']), \"\"\"<select name=\"is_cool\">\n<option value=\"1\">Unknown</option>\n<option value=\"2\">Yes</option>\n<option value=\"3\" selected=\"selected\">No</option>\n</select>\"\"\")\n        p = Person({'name': 'Joe', 'is_cool': True}, auto_id=False)\n        self.assertHTMLEqual(str(p['is_cool']), \"\"\"<select name=\"is_cool\">\n<option value=\"1\">Unknown</option>\n<option value=\"2\" selected=\"selected\">Yes</option>\n<option value=\"3\">No</option>\n</select>\"\"\")\n        p = Person({'name': 'Joe', 'is_cool': False}, auto_id=False)\n        self.assertHTMLEqual(str(p['is_cool']), \"\"\"<select name=\"is_cool\">\n<option value=\"1\">Unknown</option>\n<option value=\"2\">Yes</option>\n<option value=\"3\" selected=\"selected\">No</option>\n</select>\"\"\")\n\n    def test_forms_with_file_fields(self):\n        # FileFields are a special case because they take their data from the request.FILES,\n        # not request.POST.\n        class FileForm(Form):\n            file1 = FileField()\n\n        f = FileForm(auto_id=False)\n        self.assertHTMLEqual(f.as_table(), '<tr><th>File1:</th><td><input type=\"file\" name=\"file1\" /></td></tr>')\n\n        f = FileForm(data={}, files={}, auto_id=False)\n        self.assertHTMLEqual(f.as_table(), '<tr><th>File1:</th><td><ul class=\"errorlist\"><li>This field is required.</li></ul><input type=\"file\" name=\"file1\" /></td></tr>')\n\n        f = FileForm(data={}, files={'file1': SimpleUploadedFile('name', b'')}, auto_id=False)\n        self.assertHTMLEqual(f.as_table(), '<tr><th>File1:</th><td><ul class=\"errorlist\"><li>The submitted file is empty.</li></ul><input type=\"file\" name=\"file1\" /></td></tr>')\n\n        f = FileForm(data={}, files={'file1': 'something that is not a file'}, auto_id=False)\n        self.assertHTMLEqual(f.as_table(), '<tr><th>File1:</th><td><ul class=\"errorlist\"><li>No file was submitted. Check the encoding type on the form.</li></ul><input type=\"file\" name=\"file1\" /></td></tr>')\n\n        f = FileForm(data={}, files={'file1': SimpleUploadedFile('name', b'some content')}, auto_id=False)\n        self.assertHTMLEqual(f.as_table(), '<tr><th>File1:</th><td><input type=\"file\" name=\"file1\" /></td></tr>')\n        self.assertTrue(f.is_valid())\n\n        f = FileForm(data={}, files={'file1': SimpleUploadedFile('我隻氣墊船裝滿晒鱔.txt', 'मेरी मँडराने वाली नाव सर्पमीनों से भरी ह'.encode('utf-8'))}, auto_id=False)\n        self.assertHTMLEqual(f.as_table(), '<tr><th>File1:</th><td><input type=\"file\" name=\"file1\" /></td></tr>')\n\n    def test_basic_processing_in_view(self):\n        class UserRegistration(Form):\n            username = CharField(max_length=10)\n            password1 = CharField(widget=PasswordInput)\n            password2 = CharField(widget=PasswordInput)\n\n            def clean(self):\n                if self.cleaned_data.get('password1') and self.cleaned_data.get('password2') and self.cleaned_data['password1'] != self.cleaned_data['password2']:\n                    raise ValidationError('Please make sure your passwords match.')\n\n                return self.cleaned_data\n\n        def my_function(method, post_data):\n            if method == 'POST':\n                form = UserRegistration(post_data, auto_id=False)\n            else:\n                form = UserRegistration(auto_id=False)\n\n            if form.is_valid():\n                return 'VALID: %r' % sorted(six.iteritems(form.cleaned_data))\n\n            t = Template('<form action=\"\" method=\"post\">\\n<table>\\n{{ form }}\\n</table>\\n<input type=\"submit\" />\\n</form>')\n            return t.render(Context({'form': form}))\n\n        # Case 1: GET (an empty form, with no errors).)\n        self.assertHTMLEqual(my_function('GET', {}), \"\"\"<form action=\"\" method=\"post\">\n<table>\n<tr><th>Username:</th><td><input type=\"text\" name=\"username\" maxlength=\"10\" /></td></tr>\n<tr><th>Password1:</th><td><input type=\"password\" name=\"password1\" /></td></tr>\n<tr><th>Password2:</th><td><input type=\"password\" name=\"password2\" /></td></tr>\n</table>\n<input type=\"submit\" />\n</form>\"\"\")\n        # Case 2: POST with erroneous data (a redisplayed form, with errors).)\n        self.assertHTMLEqual(my_function('POST', {'username': 'this-is-a-long-username', 'password1': 'foo', 'password2': 'bar'}), \"\"\"<form action=\"\" method=\"post\">\n<table>\n<tr><td colspan=\"2\"><ul class=\"errorlist\"><li>Please make sure your passwords match.</li></ul></td></tr>\n<tr><th>Username:</th><td><ul class=\"errorlist\"><li>Ensure this value has at most 10 characters (it has 23).</li></ul><input type=\"text\" name=\"username\" value=\"this-is-a-long-username\" maxlength=\"10\" /></td></tr>\n<tr><th>Password1:</th><td><input type=\"password\" name=\"password1\" /></td></tr>\n<tr><th>Password2:</th><td><input type=\"password\" name=\"password2\" /></td></tr>\n</table>\n<input type=\"submit\" />\n</form>\"\"\")\n        # Case 3: POST with valid data (the success message).)\n        self.assertEqual(my_function('POST', {'username': 'adrian', 'password1': 'secret', 'password2': 'secret'}),\n                    str_prefix(\"VALID: [('password1', %(_)s'secret'), ('password2', %(_)s'secret'), ('username', %(_)s'adrian')]\"))\n\n    def test_templates_with_forms(self):\n        class UserRegistration(Form):\n            username = CharField(max_length=10, help_text=\"Good luck picking a username that doesn't already exist.\")\n            password1 = CharField(widget=PasswordInput)\n            password2 = CharField(widget=PasswordInput)\n\n            def clean(self):\n                if self.cleaned_data.get('password1') and self.cleaned_data.get('password2') and self.cleaned_data['password1'] != self.cleaned_data['password2']:\n                    raise ValidationError('Please make sure your passwords match.')\n\n                return self.cleaned_data\n\n        # You have full flexibility in displaying form fields in a template. Just pass a\n        # Form instance to the template, and use \"dot\" access to refer to individual\n        # fields. Note, however, that this flexibility comes with the responsibility of\n        # displaying all the errors, including any that might not be associated with a\n        # particular field.\n        t = Template('''<form action=\"\">\n{{ form.username.errors.as_ul }}<p><label>Your username: {{ form.username }}</label></p>\n{{ form.password1.errors.as_ul }}<p><label>Password: {{ form.password1 }}</label></p>\n{{ form.password2.errors.as_ul }}<p><label>Password (again): {{ form.password2 }}</label></p>\n<input type=\"submit\" />\n</form>''')\n        self.assertHTMLEqual(t.render(Context({'form': UserRegistration(auto_id=False)})), \"\"\"<form action=\"\">\n<p><label>Your username: <input type=\"text\" name=\"username\" maxlength=\"10\" /></label></p>\n<p><label>Password: <input type=\"password\" name=\"password1\" /></label></p>\n<p><label>Password (again): <input type=\"password\" name=\"password2\" /></label></p>\n<input type=\"submit\" />\n</form>\"\"\")\n        self.assertHTMLEqual(t.render(Context({'form': UserRegistration({'username': 'django'}, auto_id=False)})), \"\"\"<form action=\"\">\n<p><label>Your username: <input type=\"text\" name=\"username\" value=\"django\" maxlength=\"10\" /></label></p>\n<ul class=\"errorlist\"><li>This field is required.</li></ul><p><label>Password: <input type=\"password\" name=\"password1\" /></label></p>\n<ul class=\"errorlist\"><li>This field is required.</li></ul><p><label>Password (again): <input type=\"password\" name=\"password2\" /></label></p>\n<input type=\"submit\" />\n</form>\"\"\")\n\n        # Use form.[field].label to output a field's label. You can specify the label for\n        # a field by using the 'label' argument to a Field class. If you don't specify\n        # 'label', Django will use the field name with underscores converted to spaces,\n        # and the initial letter capitalized.\n        t = Template('''<form action=\"\">\n<p><label>{{ form.username.label }}: {{ form.username }}</label></p>\n<p><label>{{ form.password1.label }}: {{ form.password1 }}</label></p>\n<p><label>{{ form.password2.label }}: {{ form.password2 }}</label></p>\n<input type=\"submit\" />\n</form>''')\n        self.assertHTMLEqual(t.render(Context({'form': UserRegistration(auto_id=False)})), \"\"\"<form action=\"\">\n<p><label>Username: <input type=\"text\" name=\"username\" maxlength=\"10\" /></label></p>\n<p><label>Password1: <input type=\"password\" name=\"password1\" /></label></p>\n<p><label>Password2: <input type=\"password\" name=\"password2\" /></label></p>\n<input type=\"submit\" />\n</form>\"\"\")\n\n        # User form.[field].label_tag to output a field's label with a <label> tag\n        # wrapped around it, but *only* if the given field has an \"id\" attribute.\n        # Recall from above that passing the \"auto_id\" argument to a Form gives each\n        # field an \"id\" attribute.\n        t = Template('''<form action=\"\">\n<p>{{ form.username.label_tag }}: {{ form.username }}</p>\n<p>{{ form.password1.label_tag }}: {{ form.password1 }}</p>\n<p>{{ form.password2.label_tag }}: {{ form.password2 }}</p>\n<input type=\"submit\" />\n</form>''')\n        self.assertHTMLEqual(t.render(Context({'form': UserRegistration(auto_id=False)})), \"\"\"<form action=\"\">\n<p>Username: <input type=\"text\" name=\"username\" maxlength=\"10\" /></p>\n<p>Password1: <input type=\"password\" name=\"password1\" /></p>\n<p>Password2: <input type=\"password\" name=\"password2\" /></p>\n<input type=\"submit\" />\n</form>\"\"\")\n        self.assertHTMLEqual(t.render(Context({'form': UserRegistration(auto_id='id_%s')})), \"\"\"<form action=\"\">\n<p><label for=\"id_username\">Username</label>: <input id=\"id_username\" type=\"text\" name=\"username\" maxlength=\"10\" /></p>\n<p><label for=\"id_password1\">Password1</label>: <input type=\"password\" name=\"password1\" id=\"id_password1\" /></p>\n<p><label for=\"id_password2\">Password2</label>: <input type=\"password\" name=\"password2\" id=\"id_password2\" /></p>\n<input type=\"submit\" />\n</form>\"\"\")\n\n        # User form.[field].help_text to output a field's help text. If the given field\n        # does not have help text, nothing will be output.\n        t = Template('''<form action=\"\">\n<p>{{ form.username.label_tag }}: {{ form.username }}<br />{{ form.username.help_text }}</p>\n<p>{{ form.password1.label_tag }}: {{ form.password1 }}</p>\n<p>{{ form.password2.label_tag }}: {{ form.password2 }}</p>\n<input type=\"submit\" />\n</form>''')\n        self.assertHTMLEqual(t.render(Context({'form': UserRegistration(auto_id=False)})), \"\"\"<form action=\"\">\n<p>Username: <input type=\"text\" name=\"username\" maxlength=\"10\" /><br />Good luck picking a username that doesn&#39;t already exist.</p>\n<p>Password1: <input type=\"password\" name=\"password1\" /></p>\n<p>Password2: <input type=\"password\" name=\"password2\" /></p>\n<input type=\"submit\" />\n</form>\"\"\")\n        self.assertEqual(Template('{{ form.password1.help_text }}').render(Context({'form': UserRegistration(auto_id=False)})), '')\n\n        # The label_tag() method takes an optional attrs argument: a dictionary of HTML\n        # attributes to add to the <label> tag.\n        f = UserRegistration(auto_id='id_%s')\n        form_output = []\n\n        for bf in f:\n            form_output.append(bf.label_tag(attrs={'class': 'pretty'}))\n\n        expected_form_output = [\n            '<label for=\"id_username\" class=\"pretty\">Username</label>',\n            '<label for=\"id_password1\" class=\"pretty\">Password1</label>',\n            '<label for=\"id_password2\" class=\"pretty\">Password2</label>',\n        ]\n        self.assertEqual(len(form_output), len(expected_form_output))\n        for i in range(len(form_output)):\n            self.assertHTMLEqual(form_output[i], expected_form_output[i])\n\n        # To display the errors that aren't associated with a particular field -- e.g.,\n        # the errors caused by Form.clean() -- use {{ form.non_field_errors }} in the\n        # template. If used on its own, it is displayed as a <ul> (or an empty string, if\n        # the list of errors is empty). You can also use it in {% if %} statements.\n        t = Template('''<form action=\"\">\n{{ form.username.errors.as_ul }}<p><label>Your username: {{ form.username }}</label></p>\n{{ form.password1.errors.as_ul }}<p><label>Password: {{ form.password1 }}</label></p>\n{{ form.password2.errors.as_ul }}<p><label>Password (again): {{ form.password2 }}</label></p>\n<input type=\"submit\" />\n</form>''')\n        self.assertHTMLEqual(t.render(Context({'form': UserRegistration({'username': 'django', 'password1': 'foo', 'password2': 'bar'}, auto_id=False)})), \"\"\"<form action=\"\">\n<p><label>Your username: <input type=\"text\" name=\"username\" value=\"django\" maxlength=\"10\" /></label></p>\n<p><label>Password: <input type=\"password\" name=\"password1\" /></label></p>\n<p><label>Password (again): <input type=\"password\" name=\"password2\" /></label></p>\n<input type=\"submit\" />\n</form>\"\"\")\n        t = Template('''<form action=\"\">\n{{ form.non_field_errors }}\n{{ form.username.errors.as_ul }}<p><label>Your username: {{ form.username }}</label></p>\n{{ form.password1.errors.as_ul }}<p><label>Password: {{ form.password1 }}</label></p>\n{{ form.password2.errors.as_ul }}<p><label>Password (again): {{ form.password2 }}</label></p>\n<input type=\"submit\" />\n</form>''')\n        self.assertHTMLEqual(t.render(Context({'form': UserRegistration({'username': 'django', 'password1': 'foo', 'password2': 'bar'}, auto_id=False)})), \"\"\"<form action=\"\">\n<ul class=\"errorlist\"><li>Please make sure your passwords match.</li></ul>\n<p><label>Your username: <input type=\"text\" name=\"username\" value=\"django\" maxlength=\"10\" /></label></p>\n<p><label>Password: <input type=\"password\" name=\"password1\" /></label></p>\n<p><label>Password (again): <input type=\"password\" name=\"password2\" /></label></p>\n<input type=\"submit\" />\n</form>\"\"\")\n\n    def test_empty_permitted(self):\n        # Sometimes (pretty much in formsets) we want to allow a form to pass validation\n        # if it is completely empty. We can accomplish this by using the empty_permitted\n        # agrument to a form constructor.\n        class SongForm(Form):\n            artist = CharField()\n            name = CharField()\n\n        # First let's show what happens id empty_permitted=False (the default):\n        data = {'artist': '', 'song': ''}\n        form = SongForm(data, empty_permitted=False)\n        self.assertFalse(form.is_valid())\n        self.assertEqual(form.errors, {'name': ['This field is required.'], 'artist': ['This field is required.']})\n        self.assertEqual(form.cleaned_data, {})\n\n        # Now let's show what happens when empty_permitted=True and the form is empty.\n        form = SongForm(data, empty_permitted=True)\n        self.assertTrue(form.is_valid())\n        self.assertEqual(form.errors, {})\n        self.assertEqual(form.cleaned_data, {})\n\n        # But if we fill in data for one of the fields, the form is no longer empty and\n        # the whole thing must pass validation.\n        data = {'artist': 'The Doors', 'song': ''}\n        form = SongForm(data, empty_permitted=False)\n        self.assertFalse(form.is_valid())\n        self.assertEqual(form.errors, {'name': ['This field is required.']})\n        self.assertEqual(form.cleaned_data, {'artist': 'The Doors'})\n\n        # If a field is not given in the data then None is returned for its data. Lets\n        # make sure that when checking for empty_permitted that None is treated\n        # accordingly.\n        data = {'artist': None, 'song': ''}\n        form = SongForm(data, empty_permitted=True)\n        self.assertTrue(form.is_valid())\n\n        # However, we *really* need to be sure we are checking for None as any data in\n        # initial that returns False on a boolean call needs to be treated literally.\n        class PriceForm(Form):\n            amount = FloatField()\n            qty = IntegerField()\n\n        data = {'amount': '0.0', 'qty': ''}\n        form = PriceForm(data, initial={'amount': 0.0}, empty_permitted=True)\n        self.assertTrue(form.is_valid())\n\n    def test_extracting_hidden_and_visible(self):\n        class SongForm(Form):\n            token = CharField(widget=HiddenInput)\n            artist = CharField()\n            name = CharField()\n\n        form = SongForm()\n        self.assertEqual([f.name for f in form.hidden_fields()], ['token'])\n        self.assertEqual([f.name for f in form.visible_fields()], ['artist', 'name'])\n\n    def test_hidden_initial_gets_id(self):\n        class MyForm(Form):\n            field1 = CharField(max_length=50, show_hidden_initial=True)\n\n        self.assertHTMLEqual(MyForm().as_table(), '<tr><th><label for=\"id_field1\">Field1:</label></th><td><input id=\"id_field1\" type=\"text\" name=\"field1\" maxlength=\"50\" /><input type=\"hidden\" name=\"initial-field1\" id=\"initial-id_field1\" /></td></tr>')\n\n    def test_error_html_required_html_classes(self):\n        class Person(Form):\n            name = CharField()\n            is_cool = NullBooleanField()\n            email = EmailField(required=False)\n            age = IntegerField()\n\n        p = Person({})\n        p.error_css_class = 'error'\n        p.required_css_class = 'required'\n\n        self.assertHTMLEqual(p.as_ul(), \"\"\"<li class=\"required error\"><ul class=\"errorlist\"><li>This field is required.</li></ul><label for=\"id_name\">Name:</label> <input type=\"text\" name=\"name\" id=\"id_name\" /></li>\n<li class=\"required\"><label for=\"id_is_cool\">Is cool:</label> <select name=\"is_cool\" id=\"id_is_cool\">\n<option value=\"1\" selected=\"selected\">Unknown</option>\n<option value=\"2\">Yes</option>\n<option value=\"3\">No</option>\n</select></li>\n<li><label for=\"id_email\">Email:</label> <input type=\"text\" name=\"email\" id=\"id_email\" /></li>\n<li class=\"required error\"><ul class=\"errorlist\"><li>This field is required.</li></ul><label for=\"id_age\">Age:</label> <input type=\"text\" name=\"age\" id=\"id_age\" /></li>\"\"\")\n\n        self.assertHTMLEqual(p.as_p(), \"\"\"<ul class=\"errorlist\"><li>This field is required.</li></ul>\n<p class=\"required error\"><label for=\"id_name\">Name:</label> <input type=\"text\" name=\"name\" id=\"id_name\" /></p>\n<p class=\"required\"><label for=\"id_is_cool\">Is cool:</label> <select name=\"is_cool\" id=\"id_is_cool\">\n<option value=\"1\" selected=\"selected\">Unknown</option>\n<option value=\"2\">Yes</option>\n<option value=\"3\">No</option>\n</select></p>\n<p><label for=\"id_email\">Email:</label> <input type=\"text\" name=\"email\" id=\"id_email\" /></p>\n<ul class=\"errorlist\"><li>This field is required.</li></ul>\n<p class=\"required error\"><label for=\"id_age\">Age:</label> <input type=\"text\" name=\"age\" id=\"id_age\" /></p>\"\"\")\n\n        self.assertHTMLEqual(p.as_table(), \"\"\"<tr class=\"required error\"><th><label for=\"id_name\">Name:</label></th><td><ul class=\"errorlist\"><li>This field is required.</li></ul><input type=\"text\" name=\"name\" id=\"id_name\" /></td></tr>\n<tr class=\"required\"><th><label for=\"id_is_cool\">Is cool:</label></th><td><select name=\"is_cool\" id=\"id_is_cool\">\n<option value=\"1\" selected=\"selected\">Unknown</option>\n<option value=\"2\">Yes</option>\n<option value=\"3\">No</option>\n</select></td></tr>\n<tr><th><label for=\"id_email\">Email:</label></th><td><input type=\"text\" name=\"email\" id=\"id_email\" /></td></tr>\n<tr class=\"required error\"><th><label for=\"id_age\">Age:</label></th><td><ul class=\"errorlist\"><li>This field is required.</li></ul><input type=\"text\" name=\"age\" id=\"id_age\" /></td></tr>\"\"\")\n\n    def test_label_split_datetime_not_displayed(self):\n        class EventForm(Form):\n            happened_at = SplitDateTimeField(widget=widgets.SplitHiddenDateTimeWidget)\n\n        form = EventForm()\n        self.assertHTMLEqual(form.as_ul(), '<input type=\"hidden\" name=\"happened_at_0\" id=\"id_happened_at_0\" /><input type=\"hidden\" name=\"happened_at_1\" id=\"id_happened_at_1\" />')\n\n    def test_multivalue_field_validation(self):\n        def bad_names(value):\n            if value == 'bad value':\n                raise ValidationError('bad value not allowed')\n\n        class NameField(MultiValueField):\n            def __init__(self, fields=(), *args, **kwargs):\n                fields = (CharField(label='First name', max_length=10),\n                          CharField(label='Last name', max_length=10))\n                super(NameField, self).__init__(fields=fields, *args, **kwargs)\n\n            def compress(self, data_list):\n                return ' '.join(data_list)\n\n        class NameForm(Form):\n            name = NameField(validators=[bad_names])\n\n        form = NameForm(data={'name' : ['bad', 'value']})\n        form.full_clean()\n        self.assertFalse(form.is_valid())\n        self.assertEqual(form.errors, {'name': ['bad value not allowed']})\n        form = NameForm(data={'name' : ['should be overly', 'long for the field names']})\n        self.assertFalse(form.is_valid())\n        self.assertEqual(form.errors, {'name': ['Ensure this value has at most 10 characters (it has 16).',\n                                                'Ensure this value has at most 10 characters (it has 24).']})\n        form = NameForm(data={'name' : ['fname', 'lname']})\n        self.assertTrue(form.is_valid())\n        self.assertEqual(form.cleaned_data, {'name' : 'fname lname'})\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/forms/tests/formsets.py",
    "content": "# -*- coding: utf-8 -*-\nfrom __future__ import unicode_literals\n\nfrom django.forms import (CharField, DateField, FileField, Form, IntegerField,\n    ValidationError, formsets)\nfrom django.forms.formsets import BaseFormSet, formset_factory\nfrom django.forms.util import ErrorList\nfrom django.test import TestCase\n\n\nclass Choice(Form):\n    choice = CharField()\n    votes = IntegerField()\n\n\n# FormSet allows us to use multiple instance of the same form on 1 page. For now,\n# the best way to create a FormSet is by using the formset_factory function.\nChoiceFormSet = formset_factory(Choice)\n\n\nclass FavoriteDrinkForm(Form):\n    name = CharField()\n\n\nclass BaseFavoriteDrinksFormSet(BaseFormSet):\n    def clean(self):\n        seen_drinks = []\n\n        for drink in self.cleaned_data:\n            if drink['name'] in seen_drinks:\n                raise ValidationError('You may only specify a drink once.')\n\n            seen_drinks.append(drink['name'])\n\n\nclass EmptyFsetWontValidate(BaseFormSet):\n    def clean(self):\n        raise ValidationError(\"Clean method called\")\n\n\n# Let's define a FormSet that takes a list of favorite drinks, but raises an\n# error if there are any duplicates. Used in ``test_clean_hook``,\n# ``test_regression_6926`` & ``test_regression_12878``.\nFavoriteDrinksFormSet = formset_factory(FavoriteDrinkForm,\n    formset=BaseFavoriteDrinksFormSet, extra=3)\n\n\nclass FormsFormsetTestCase(TestCase):\n    def test_basic_formset(self):\n        # A FormSet constructor takes the same arguments as Form. Let's create a FormSet\n        # for adding data. By default, it displays 1 blank form. It can display more,\n        # but we'll look at how to do so later.\n        formset = ChoiceFormSet(auto_id=False, prefix='choices')\n        self.assertHTMLEqual(str(formset), \"\"\"<input type=\"hidden\" name=\"choices-TOTAL_FORMS\" value=\"1\" /><input type=\"hidden\" name=\"choices-INITIAL_FORMS\" value=\"0\" /><input type=\"hidden\" name=\"choices-MAX_NUM_FORMS\" value=\"1000\" />\n<tr><th>Choice:</th><td><input type=\"text\" name=\"choices-0-choice\" /></td></tr>\n<tr><th>Votes:</th><td><input type=\"text\" name=\"choices-0-votes\" /></td></tr>\"\"\")\n\n        # On thing to note is that there needs to be a special value in the data. This\n        # value tells the FormSet how many forms were displayed so it can tell how\n        # many forms it needs to clean and validate. You could use javascript to create\n        # new forms on the client side, but they won't get validated unless you increment\n        # the TOTAL_FORMS field appropriately.\n\n        data = {\n            'choices-TOTAL_FORMS': '1', # the number of forms rendered\n            'choices-INITIAL_FORMS': '0', # the number of forms with initial data\n            'choices-MAX_NUM_FORMS': '0', # max number of forms\n            'choices-0-choice': 'Calexico',\n            'choices-0-votes': '100',\n        }\n        # We treat FormSet pretty much like we would treat a normal Form. FormSet has an\n        # is_valid method, and a cleaned_data or errors attribute depending on whether all\n        # the forms passed validation. However, unlike a Form instance, cleaned_data and\n        # errors will be a list of dicts rather than just a single dict.\n\n        formset = ChoiceFormSet(data, auto_id=False, prefix='choices')\n        self.assertTrue(formset.is_valid())\n        self.assertEqual([form.cleaned_data for form in formset.forms], [{'votes': 100, 'choice': 'Calexico'}])\n\n        # If a FormSet was not passed any data, its is_valid and has_changed\n        # methods should return False.\n        formset = ChoiceFormSet()\n        self.assertFalse(formset.is_valid())\n        self.assertFalse(formset.has_changed())\n\n    def test_formset_validation(self):\n        # FormSet instances can also have an error attribute if validation failed for\n        # any of the forms.\n\n        data = {\n            'choices-TOTAL_FORMS': '1', # the number of forms rendered\n            'choices-INITIAL_FORMS': '0', # the number of forms with initial data\n            'choices-MAX_NUM_FORMS': '0', # max number of forms\n            'choices-0-choice': 'Calexico',\n            'choices-0-votes': '',\n        }\n\n        formset = ChoiceFormSet(data, auto_id=False, prefix='choices')\n        self.assertFalse(formset.is_valid())\n        self.assertEqual(formset.errors, [{'votes': ['This field is required.']}])\n\n    def test_formset_has_changed(self):\n        # FormSet instances has_changed method will be True if any data is\n        # passed to his forms, even if the formset didn't validate\n        data = {\n            'choices-TOTAL_FORMS': '1', # the number of forms rendered\n            'choices-INITIAL_FORMS': '0', # the number of forms with initial data\n            'choices-MAX_NUM_FORMS': '0', # max number of forms\n            'choices-0-choice': '',\n            'choices-0-votes': '',\n        }\n        blank_formset = ChoiceFormSet(data, auto_id=False, prefix='choices')\n        self.assertFalse(blank_formset.has_changed())\n\n        # invalid formset test\n        data['choices-0-choice'] = 'Calexico'\n        invalid_formset = ChoiceFormSet(data, auto_id=False, prefix='choices')\n        self.assertFalse(invalid_formset.is_valid())\n        self.assertTrue(invalid_formset.has_changed())\n\n        # valid formset test\n        data['choices-0-votes'] = '100'\n        valid_formset = ChoiceFormSet(data, auto_id=False, prefix='choices')\n        self.assertTrue(valid_formset.is_valid())\n        self.assertTrue(valid_formset.has_changed())\n\n    def test_formset_initial_data(self):\n        # We can also prefill a FormSet with existing data by providing an ``initial``\n        # argument to the constructor. ``initial`` should be a list of dicts. By default,\n        # an extra blank form is included.\n\n        initial = [{'choice': 'Calexico', 'votes': 100}]\n        formset = ChoiceFormSet(initial=initial, auto_id=False, prefix='choices')\n        form_output = []\n\n        for form in formset.forms:\n            form_output.append(form.as_ul())\n\n        self.assertHTMLEqual('\\n'.join(form_output), \"\"\"<li>Choice: <input type=\"text\" name=\"choices-0-choice\" value=\"Calexico\" /></li>\n<li>Votes: <input type=\"text\" name=\"choices-0-votes\" value=\"100\" /></li>\n<li>Choice: <input type=\"text\" name=\"choices-1-choice\" /></li>\n<li>Votes: <input type=\"text\" name=\"choices-1-votes\" /></li>\"\"\")\n\n        # Let's simulate what would happen if we submitted this form.\n\n        data = {\n            'choices-TOTAL_FORMS': '2', # the number of forms rendered\n            'choices-INITIAL_FORMS': '1', # the number of forms with initial data\n            'choices-MAX_NUM_FORMS': '0', # max number of forms\n            'choices-0-choice': 'Calexico',\n            'choices-0-votes': '100',\n            'choices-1-choice': '',\n            'choices-1-votes': '',\n        }\n\n        formset = ChoiceFormSet(data, auto_id=False, prefix='choices')\n        self.assertTrue(formset.is_valid())\n        self.assertEqual([form.cleaned_data for form in formset.forms], [{'votes': 100, 'choice': 'Calexico'}, {}])\n\n    def test_second_form_partially_filled(self):\n        # But the second form was blank! Shouldn't we get some errors? No. If we display\n        # a form as blank, it's ok for it to be submitted as blank. If we fill out even\n        # one of the fields of a blank form though, it will be validated. We may want to\n        # required that at least x number of forms are completed, but we'll show how to\n        # handle that later.\n\n        data = {\n            'choices-TOTAL_FORMS': '2', # the number of forms rendered\n            'choices-INITIAL_FORMS': '1', # the number of forms with initial data\n            'choices-MAX_NUM_FORMS': '0', # max number of forms\n            'choices-0-choice': 'Calexico',\n            'choices-0-votes': '100',\n            'choices-1-choice': 'The Decemberists',\n            'choices-1-votes': '', # missing value\n        }\n\n        formset = ChoiceFormSet(data, auto_id=False, prefix='choices')\n        self.assertFalse(formset.is_valid())\n        self.assertEqual(formset.errors, [{}, {'votes': ['This field is required.']}])\n\n    def test_delete_prefilled_data(self):\n        # If we delete data that was pre-filled, we should get an error. Simply removing\n        # data from form fields isn't the proper way to delete it. We'll see how to\n        # handle that case later.\n\n        data = {\n            'choices-TOTAL_FORMS': '2', # the number of forms rendered\n            'choices-INITIAL_FORMS': '1', # the number of forms with initial data\n            'choices-MAX_NUM_FORMS': '0', # max number of forms\n            'choices-0-choice': '', # deleted value\n            'choices-0-votes': '', # deleted value\n            'choices-1-choice': '',\n            'choices-1-votes': '',\n        }\n\n        formset = ChoiceFormSet(data, auto_id=False, prefix='choices')\n        self.assertFalse(formset.is_valid())\n        self.assertEqual(formset.errors, [{'votes': ['This field is required.'], 'choice': ['This field is required.']}, {}])\n\n    def test_displaying_more_than_one_blank_form(self):\n        # Displaying more than 1 blank form ###########################################\n        # We can also display more than 1 empty form at a time. To do so, pass a\n        # extra argument to formset_factory.\n        ChoiceFormSet = formset_factory(Choice, extra=3)\n\n        formset = ChoiceFormSet(auto_id=False, prefix='choices')\n        form_output = []\n\n        for form in formset.forms:\n            form_output.append(form.as_ul())\n\n        self.assertHTMLEqual('\\n'.join(form_output), \"\"\"<li>Choice: <input type=\"text\" name=\"choices-0-choice\" /></li>\n<li>Votes: <input type=\"text\" name=\"choices-0-votes\" /></li>\n<li>Choice: <input type=\"text\" name=\"choices-1-choice\" /></li>\n<li>Votes: <input type=\"text\" name=\"choices-1-votes\" /></li>\n<li>Choice: <input type=\"text\" name=\"choices-2-choice\" /></li>\n<li>Votes: <input type=\"text\" name=\"choices-2-votes\" /></li>\"\"\")\n\n        # Since we displayed every form as blank, we will also accept them back as blank.\n        # This may seem a little strange, but later we will show how to require a minimum\n        # number of forms to be completed.\n\n        data = {\n            'choices-TOTAL_FORMS': '3', # the number of forms rendered\n            'choices-INITIAL_FORMS': '0', # the number of forms with initial data\n            'choices-MAX_NUM_FORMS': '0', # max number of forms\n            'choices-0-choice': '',\n            'choices-0-votes': '',\n            'choices-1-choice': '',\n            'choices-1-votes': '',\n            'choices-2-choice': '',\n            'choices-2-votes': '',\n        }\n\n        formset = ChoiceFormSet(data, auto_id=False, prefix='choices')\n        self.assertTrue(formset.is_valid())\n        self.assertEqual([form.cleaned_data for form in formset.forms], [{}, {}, {}])\n\n    def test_single_form_completed(self):\n        # We can just fill out one of the forms.\n\n        data = {\n            'choices-TOTAL_FORMS': '3', # the number of forms rendered\n            'choices-INITIAL_FORMS': '0', # the number of forms with initial data\n            'choices-MAX_NUM_FORMS': '0', # max number of forms\n            'choices-0-choice': 'Calexico',\n            'choices-0-votes': '100',\n            'choices-1-choice': '',\n            'choices-1-votes': '',\n            'choices-2-choice': '',\n            'choices-2-votes': '',\n        }\n\n        ChoiceFormSet = formset_factory(Choice, extra=3)\n        formset = ChoiceFormSet(data, auto_id=False, prefix='choices')\n        self.assertTrue(formset.is_valid())\n        self.assertEqual([form.cleaned_data for form in formset.forms], [{'votes': 100, 'choice': 'Calexico'}, {}, {}])\n\n    def test_second_form_partially_filled_2(self):\n        # And once again, if we try to partially complete a form, validation will fail.\n\n        data = {\n            'choices-TOTAL_FORMS': '3', # the number of forms rendered\n            'choices-INITIAL_FORMS': '0', # the number of forms with initial data\n            'choices-MAX_NUM_FORMS': '0', # max number of forms\n            'choices-0-choice': 'Calexico',\n            'choices-0-votes': '100',\n            'choices-1-choice': 'The Decemberists',\n            'choices-1-votes': '', # missing value\n            'choices-2-choice': '',\n            'choices-2-votes': '',\n        }\n\n        ChoiceFormSet = formset_factory(Choice, extra=3)\n        formset = ChoiceFormSet(data, auto_id=False, prefix='choices')\n        self.assertFalse(formset.is_valid())\n        self.assertEqual(formset.errors, [{}, {'votes': ['This field is required.']}, {}])\n\n    def test_more_initial_data(self):\n        # The extra argument also works when the formset is pre-filled with initial\n        # data.\n\n        data = {\n            'choices-TOTAL_FORMS': '3', # the number of forms rendered\n            'choices-INITIAL_FORMS': '0', # the number of forms with initial data\n            'choices-MAX_NUM_FORMS': '0', # max number of forms\n            'choices-0-choice': 'Calexico',\n            'choices-0-votes': '100',\n            'choices-1-choice': '',\n            'choices-1-votes': '', # missing value\n            'choices-2-choice': '',\n            'choices-2-votes': '',\n        }\n\n        initial = [{'choice': 'Calexico', 'votes': 100}]\n        ChoiceFormSet = formset_factory(Choice, extra=3)\n        formset = ChoiceFormSet(initial=initial, auto_id=False, prefix='choices')\n        form_output = []\n\n        for form in formset.forms:\n            form_output.append(form.as_ul())\n\n        self.assertHTMLEqual('\\n'.join(form_output), \"\"\"<li>Choice: <input type=\"text\" name=\"choices-0-choice\" value=\"Calexico\" /></li>\n<li>Votes: <input type=\"text\" name=\"choices-0-votes\" value=\"100\" /></li>\n<li>Choice: <input type=\"text\" name=\"choices-1-choice\" /></li>\n<li>Votes: <input type=\"text\" name=\"choices-1-votes\" /></li>\n<li>Choice: <input type=\"text\" name=\"choices-2-choice\" /></li>\n<li>Votes: <input type=\"text\" name=\"choices-2-votes\" /></li>\n<li>Choice: <input type=\"text\" name=\"choices-3-choice\" /></li>\n<li>Votes: <input type=\"text\" name=\"choices-3-votes\" /></li>\"\"\")\n\n        # Make sure retrieving an empty form works, and it shows up in the form list\n\n        self.assertTrue(formset.empty_form.empty_permitted)\n        self.assertHTMLEqual(formset.empty_form.as_ul(), \"\"\"<li>Choice: <input type=\"text\" name=\"choices-__prefix__-choice\" /></li>\n<li>Votes: <input type=\"text\" name=\"choices-__prefix__-votes\" /></li>\"\"\")\n\n    def test_formset_with_deletion(self):\n        # FormSets with deletion ######################################################\n        # We can easily add deletion ability to a FormSet with an argument to\n        # formset_factory. This will add a boolean field to each form instance. When\n        # that boolean field is True, the form will be in formset.deleted_forms\n\n        ChoiceFormSet = formset_factory(Choice, can_delete=True)\n\n        initial = [{'choice': 'Calexico', 'votes': 100}, {'choice': 'Fergie', 'votes': 900}]\n        formset = ChoiceFormSet(initial=initial, auto_id=False, prefix='choices')\n        form_output = []\n\n        for form in formset.forms:\n            form_output.append(form.as_ul())\n\n        self.assertHTMLEqual('\\n'.join(form_output), \"\"\"<li>Choice: <input type=\"text\" name=\"choices-0-choice\" value=\"Calexico\" /></li>\n<li>Votes: <input type=\"text\" name=\"choices-0-votes\" value=\"100\" /></li>\n<li>Delete: <input type=\"checkbox\" name=\"choices-0-DELETE\" /></li>\n<li>Choice: <input type=\"text\" name=\"choices-1-choice\" value=\"Fergie\" /></li>\n<li>Votes: <input type=\"text\" name=\"choices-1-votes\" value=\"900\" /></li>\n<li>Delete: <input type=\"checkbox\" name=\"choices-1-DELETE\" /></li>\n<li>Choice: <input type=\"text\" name=\"choices-2-choice\" /></li>\n<li>Votes: <input type=\"text\" name=\"choices-2-votes\" /></li>\n<li>Delete: <input type=\"checkbox\" name=\"choices-2-DELETE\" /></li>\"\"\")\n\n        # To delete something, we just need to set that form's special delete field to\n        # 'on'. Let's go ahead and delete Fergie.\n\n        data = {\n            'choices-TOTAL_FORMS': '3', # the number of forms rendered\n            'choices-INITIAL_FORMS': '2', # the number of forms with initial data\n            'choices-MAX_NUM_FORMS': '0', # max number of forms\n            'choices-0-choice': 'Calexico',\n            'choices-0-votes': '100',\n            'choices-0-DELETE': '',\n            'choices-1-choice': 'Fergie',\n            'choices-1-votes': '900',\n            'choices-1-DELETE': 'on',\n            'choices-2-choice': '',\n            'choices-2-votes': '',\n            'choices-2-DELETE': '',\n        }\n\n        formset = ChoiceFormSet(data, auto_id=False, prefix='choices')\n        self.assertTrue(formset.is_valid())\n        self.assertEqual([form.cleaned_data for form in formset.forms], [{'votes': 100, 'DELETE': False, 'choice': 'Calexico'}, {'votes': 900, 'DELETE': True, 'choice': 'Fergie'}, {}])\n        self.assertEqual([form.cleaned_data for form in formset.deleted_forms], [{'votes': 900, 'DELETE': True, 'choice': 'Fergie'}])\n\n        # If we fill a form with something and then we check the can_delete checkbox for\n        # that form, that form's errors should not make the entire formset invalid since\n        # it's going to be deleted.\n\n        class CheckForm(Form):\n           field = IntegerField(min_value=100)\n\n        data = {\n            'check-TOTAL_FORMS': '3', # the number of forms rendered\n            'check-INITIAL_FORMS': '2', # the number of forms with initial data\n            'check-MAX_NUM_FORMS': '0', # max number of forms\n            'check-0-field': '200',\n            'check-0-DELETE': '',\n            'check-1-field': '50',\n            'check-1-DELETE': 'on',\n            'check-2-field': '',\n            'check-2-DELETE': '',\n        }\n        CheckFormSet = formset_factory(CheckForm, can_delete=True)\n        formset = CheckFormSet(data, prefix='check')\n        self.assertTrue(formset.is_valid())\n\n        # If we remove the deletion flag now we will have our validation back.\n        data['check-1-DELETE'] = ''\n        formset = CheckFormSet(data, prefix='check')\n        self.assertFalse(formset.is_valid())\n\n        # Should be able to get deleted_forms from a valid formset even if a\n        # deleted form would have been invalid.\n\n        class Person(Form):\n            name = CharField()\n\n        PeopleForm = formset_factory(\n            form=Person,\n            can_delete=True)\n\n        p = PeopleForm(\n            {'form-0-name': '', 'form-0-DELETE': 'on', # no name!\n             'form-TOTAL_FORMS': 1, 'form-INITIAL_FORMS': 1,\n             'form-MAX_NUM_FORMS': 1})\n\n        self.assertTrue(p.is_valid())\n        self.assertEqual(len(p.deleted_forms), 1)\n\n    def test_formsets_with_ordering(self):\n        # FormSets with ordering ######################################################\n        # We can also add ordering ability to a FormSet with an argument to\n        # formset_factory. This will add a integer field to each form instance. When\n        # form validation succeeds, [form.cleaned_data for form in formset.forms] will have the data in the correct\n        # order specified by the ordering fields. If a number is duplicated in the set\n        # of ordering fields, for instance form 0 and form 3 are both marked as 1, then\n        # the form index used as a secondary ordering criteria. In order to put\n        # something at the front of the list, you'd need to set it's order to 0.\n\n        ChoiceFormSet = formset_factory(Choice, can_order=True)\n\n        initial = [{'choice': 'Calexico', 'votes': 100}, {'choice': 'Fergie', 'votes': 900}]\n        formset = ChoiceFormSet(initial=initial, auto_id=False, prefix='choices')\n        form_output = []\n\n        for form in formset.forms:\n            form_output.append(form.as_ul())\n\n        self.assertHTMLEqual('\\n'.join(form_output), \"\"\"<li>Choice: <input type=\"text\" name=\"choices-0-choice\" value=\"Calexico\" /></li>\n<li>Votes: <input type=\"text\" name=\"choices-0-votes\" value=\"100\" /></li>\n<li>Order: <input type=\"text\" name=\"choices-0-ORDER\" value=\"1\" /></li>\n<li>Choice: <input type=\"text\" name=\"choices-1-choice\" value=\"Fergie\" /></li>\n<li>Votes: <input type=\"text\" name=\"choices-1-votes\" value=\"900\" /></li>\n<li>Order: <input type=\"text\" name=\"choices-1-ORDER\" value=\"2\" /></li>\n<li>Choice: <input type=\"text\" name=\"choices-2-choice\" /></li>\n<li>Votes: <input type=\"text\" name=\"choices-2-votes\" /></li>\n<li>Order: <input type=\"text\" name=\"choices-2-ORDER\" /></li>\"\"\")\n\n        data = {\n            'choices-TOTAL_FORMS': '3', # the number of forms rendered\n            'choices-INITIAL_FORMS': '2', # the number of forms with initial data\n            'choices-MAX_NUM_FORMS': '0', # max number of forms\n            'choices-0-choice': 'Calexico',\n            'choices-0-votes': '100',\n            'choices-0-ORDER': '1',\n            'choices-1-choice': 'Fergie',\n            'choices-1-votes': '900',\n            'choices-1-ORDER': '2',\n            'choices-2-choice': 'The Decemberists',\n            'choices-2-votes': '500',\n            'choices-2-ORDER': '0',\n        }\n\n        formset = ChoiceFormSet(data, auto_id=False, prefix='choices')\n        self.assertTrue(formset.is_valid())\n        form_output = []\n\n        for form in formset.ordered_forms:\n            form_output.append(form.cleaned_data)\n\n        self.assertEqual(form_output, [\n            {'votes': 500, 'ORDER': 0, 'choice': 'The Decemberists'},\n            {'votes': 100, 'ORDER': 1, 'choice': 'Calexico'},\n            {'votes': 900, 'ORDER': 2, 'choice': 'Fergie'},\n        ])\n\n    def test_empty_ordered_fields(self):\n        # Ordering fields are allowed to be left blank, and if they *are* left blank,\n        # they will be sorted below everything else.\n\n        data = {\n            'choices-TOTAL_FORMS': '4', # the number of forms rendered\n            'choices-INITIAL_FORMS': '3', # the number of forms with initial data\n            'choices-MAX_NUM_FORMS': '0', # max number of forms\n            'choices-0-choice': 'Calexico',\n            'choices-0-votes': '100',\n            'choices-0-ORDER': '1',\n            'choices-1-choice': 'Fergie',\n            'choices-1-votes': '900',\n            'choices-1-ORDER': '2',\n            'choices-2-choice': 'The Decemberists',\n            'choices-2-votes': '500',\n            'choices-2-ORDER': '',\n            'choices-3-choice': 'Basia Bulat',\n            'choices-3-votes': '50',\n            'choices-3-ORDER': '',\n        }\n\n        ChoiceFormSet = formset_factory(Choice, can_order=True)\n        formset = ChoiceFormSet(data, auto_id=False, prefix='choices')\n        self.assertTrue(formset.is_valid())\n        form_output = []\n\n        for form in formset.ordered_forms:\n            form_output.append(form.cleaned_data)\n\n        self.assertEqual(form_output, [\n            {'votes': 100, 'ORDER': 1, 'choice': 'Calexico'},\n            {'votes': 900, 'ORDER': 2, 'choice': 'Fergie'},\n            {'votes': 500, 'ORDER': None, 'choice': 'The Decemberists'},\n            {'votes': 50, 'ORDER': None, 'choice': 'Basia Bulat'},\n        ])\n\n    def test_ordering_blank_fieldsets(self):\n        # Ordering should work with blank fieldsets.\n\n        data = {\n            'choices-TOTAL_FORMS': '3', # the number of forms rendered\n            'choices-INITIAL_FORMS': '0', # the number of forms with initial data\n            'choices-MAX_NUM_FORMS': '0', # max number of forms\n        }\n\n        ChoiceFormSet = formset_factory(Choice, can_order=True)\n        formset = ChoiceFormSet(data, auto_id=False, prefix='choices')\n        self.assertTrue(formset.is_valid())\n        form_output = []\n\n        for form in formset.ordered_forms:\n            form_output.append(form.cleaned_data)\n\n        self.assertEqual(form_output, [])\n\n    def test_formset_with_ordering_and_deletion(self):\n        # FormSets with ordering + deletion ###########################################\n        # Let's try throwing ordering and deletion into the same form.\n\n        ChoiceFormSet = formset_factory(Choice, can_order=True, can_delete=True)\n\n        initial = [\n            {'choice': 'Calexico', 'votes': 100},\n            {'choice': 'Fergie', 'votes': 900},\n            {'choice': 'The Decemberists', 'votes': 500},\n        ]\n        formset = ChoiceFormSet(initial=initial, auto_id=False, prefix='choices')\n        form_output = []\n\n        for form in formset.forms:\n            form_output.append(form.as_ul())\n\n        self.assertHTMLEqual('\\n'.join(form_output), \"\"\"<li>Choice: <input type=\"text\" name=\"choices-0-choice\" value=\"Calexico\" /></li>\n<li>Votes: <input type=\"text\" name=\"choices-0-votes\" value=\"100\" /></li>\n<li>Order: <input type=\"text\" name=\"choices-0-ORDER\" value=\"1\" /></li>\n<li>Delete: <input type=\"checkbox\" name=\"choices-0-DELETE\" /></li>\n<li>Choice: <input type=\"text\" name=\"choices-1-choice\" value=\"Fergie\" /></li>\n<li>Votes: <input type=\"text\" name=\"choices-1-votes\" value=\"900\" /></li>\n<li>Order: <input type=\"text\" name=\"choices-1-ORDER\" value=\"2\" /></li>\n<li>Delete: <input type=\"checkbox\" name=\"choices-1-DELETE\" /></li>\n<li>Choice: <input type=\"text\" name=\"choices-2-choice\" value=\"The Decemberists\" /></li>\n<li>Votes: <input type=\"text\" name=\"choices-2-votes\" value=\"500\" /></li>\n<li>Order: <input type=\"text\" name=\"choices-2-ORDER\" value=\"3\" /></li>\n<li>Delete: <input type=\"checkbox\" name=\"choices-2-DELETE\" /></li>\n<li>Choice: <input type=\"text\" name=\"choices-3-choice\" /></li>\n<li>Votes: <input type=\"text\" name=\"choices-3-votes\" /></li>\n<li>Order: <input type=\"text\" name=\"choices-3-ORDER\" /></li>\n<li>Delete: <input type=\"checkbox\" name=\"choices-3-DELETE\" /></li>\"\"\")\n\n        # Let's delete Fergie, and put The Decemberists ahead of Calexico.\n\n        data = {\n            'choices-TOTAL_FORMS': '4', # the number of forms rendered\n            'choices-INITIAL_FORMS': '3', # the number of forms with initial data\n            'choices-MAX_NUM_FORMS': '0', # max number of forms\n            'choices-0-choice': 'Calexico',\n            'choices-0-votes': '100',\n            'choices-0-ORDER': '1',\n            'choices-0-DELETE': '',\n            'choices-1-choice': 'Fergie',\n            'choices-1-votes': '900',\n            'choices-1-ORDER': '2',\n            'choices-1-DELETE': 'on',\n            'choices-2-choice': 'The Decemberists',\n            'choices-2-votes': '500',\n            'choices-2-ORDER': '0',\n            'choices-2-DELETE': '',\n            'choices-3-choice': '',\n            'choices-3-votes': '',\n            'choices-3-ORDER': '',\n            'choices-3-DELETE': '',\n        }\n\n        formset = ChoiceFormSet(data, auto_id=False, prefix='choices')\n        self.assertTrue(formset.is_valid())\n        form_output = []\n\n        for form in formset.ordered_forms:\n            form_output.append(form.cleaned_data)\n\n        self.assertEqual(form_output, [\n            {'votes': 500, 'DELETE': False, 'ORDER': 0, 'choice': 'The Decemberists'},\n            {'votes': 100, 'DELETE': False, 'ORDER': 1, 'choice': 'Calexico'},\n        ])\n        self.assertEqual([form.cleaned_data for form in formset.deleted_forms], [{'votes': 900, 'DELETE': True, 'ORDER': 2, 'choice': 'Fergie'}])\n\n    def test_invalid_deleted_form_with_ordering(self):\n        # Should be able to get ordered forms from a valid formset even if a\n        # deleted form would have been invalid.\n\n        class Person(Form):\n            name = CharField()\n\n        PeopleForm = formset_factory(form=Person, can_delete=True, can_order=True)\n\n        p = PeopleForm({\n            'form-0-name': '',\n            'form-0-DELETE': 'on', # no name!\n            'form-TOTAL_FORMS': 1,\n            'form-INITIAL_FORMS': 1,\n            'form-MAX_NUM_FORMS': 1\n        })\n\n        self.assertTrue(p.is_valid())\n        self.assertEqual(p.ordered_forms, [])\n\n    def test_clean_hook(self):\n        # FormSet clean hook ##########################################################\n        # FormSets have a hook for doing extra validation that shouldn't be tied to any\n        # particular form. It follows the same pattern as the clean hook on Forms.\n\n        # We start out with a some duplicate data.\n\n        data = {\n            'drinks-TOTAL_FORMS': '2', # the number of forms rendered\n            'drinks-INITIAL_FORMS': '0', # the number of forms with initial data\n            'drinks-MAX_NUM_FORMS': '0', # max number of forms\n            'drinks-0-name': 'Gin and Tonic',\n            'drinks-1-name': 'Gin and Tonic',\n        }\n\n        formset = FavoriteDrinksFormSet(data, prefix='drinks')\n        self.assertFalse(formset.is_valid())\n\n        # Any errors raised by formset.clean() are available via the\n        # formset.non_form_errors() method.\n\n        for error in formset.non_form_errors():\n            self.assertEqual(str(error), 'You may only specify a drink once.')\n\n        # Make sure we didn't break the valid case.\n\n        data = {\n            'drinks-TOTAL_FORMS': '2', # the number of forms rendered\n            'drinks-INITIAL_FORMS': '0', # the number of forms with initial data\n            'drinks-MAX_NUM_FORMS': '0', # max number of forms\n            'drinks-0-name': 'Gin and Tonic',\n            'drinks-1-name': 'Bloody Mary',\n        }\n\n        formset = FavoriteDrinksFormSet(data, prefix='drinks')\n        self.assertTrue(formset.is_valid())\n        self.assertEqual(formset.non_form_errors(), [])\n\n    def test_limiting_max_forms(self):\n        # Limiting the maximum number of forms ########################################\n        # Base case for max_num.\n\n        # When not passed, max_num will take a high default value, leaving the\n        # number of forms only controlled by the value of the extra parameter.\n\n        LimitedFavoriteDrinkFormSet = formset_factory(FavoriteDrinkForm, extra=3)\n        formset = LimitedFavoriteDrinkFormSet()\n        form_output = []\n\n        for form in formset.forms:\n            form_output.append(str(form))\n\n        self.assertHTMLEqual('\\n'.join(form_output), \"\"\"<tr><th><label for=\"id_form-0-name\">Name:</label></th><td><input type=\"text\" name=\"form-0-name\" id=\"id_form-0-name\" /></td></tr>\n<tr><th><label for=\"id_form-1-name\">Name:</label></th><td><input type=\"text\" name=\"form-1-name\" id=\"id_form-1-name\" /></td></tr>\n<tr><th><label for=\"id_form-2-name\">Name:</label></th><td><input type=\"text\" name=\"form-2-name\" id=\"id_form-2-name\" /></td></tr>\"\"\")\n\n        # If max_num is 0 then no form is rendered at all.\n        LimitedFavoriteDrinkFormSet = formset_factory(FavoriteDrinkForm, extra=3, max_num=0)\n        formset = LimitedFavoriteDrinkFormSet()\n        form_output = []\n\n        for form in formset.forms:\n            form_output.append(str(form))\n\n        self.assertEqual('\\n'.join(form_output), \"\")\n\n        LimitedFavoriteDrinkFormSet = formset_factory(FavoriteDrinkForm, extra=5, max_num=2)\n        formset = LimitedFavoriteDrinkFormSet()\n        form_output = []\n\n        for form in formset.forms:\n            form_output.append(str(form))\n\n        self.assertHTMLEqual('\\n'.join(form_output), \"\"\"<tr><th><label for=\"id_form-0-name\">Name:</label></th><td><input type=\"text\" name=\"form-0-name\" id=\"id_form-0-name\" /></td></tr>\n<tr><th><label for=\"id_form-1-name\">Name:</label></th><td><input type=\"text\" name=\"form-1-name\" id=\"id_form-1-name\" /></td></tr>\"\"\")\n\n        # Ensure that max_num has no effect when extra is less than max_num.\n\n        LimitedFavoriteDrinkFormSet = formset_factory(FavoriteDrinkForm, extra=1, max_num=2)\n        formset = LimitedFavoriteDrinkFormSet()\n        form_output = []\n\n        for form in formset.forms:\n            form_output.append(str(form))\n\n        self.assertHTMLEqual('\\n'.join(form_output), \"\"\"<tr><th><label for=\"id_form-0-name\">Name:</label></th><td><input type=\"text\" name=\"form-0-name\" id=\"id_form-0-name\" /></td></tr>\"\"\")\n\n    def test_max_num_with_initial_data(self):\n        # max_num with initial data\n\n        # When not passed, max_num will take a high default value, leaving the\n        # number of forms only controlled by the value of the initial and extra\n        # parameters.\n\n        initial = [\n            {'name': 'Fernet and Coke'},\n        ]\n        LimitedFavoriteDrinkFormSet = formset_factory(FavoriteDrinkForm, extra=1)\n        formset = LimitedFavoriteDrinkFormSet(initial=initial)\n        form_output = []\n\n        for form in formset.forms:\n            form_output.append(str(form))\n\n        self.assertHTMLEqual('\\n'.join(form_output), \"\"\"<tr><th><label for=\"id_form-0-name\">Name:</label></th><td><input type=\"text\" name=\"form-0-name\" value=\"Fernet and Coke\" id=\"id_form-0-name\" /></td></tr>\n<tr><th><label for=\"id_form-1-name\">Name:</label></th><td><input type=\"text\" name=\"form-1-name\" id=\"id_form-1-name\" /></td></tr>\"\"\")\n\n    def test_max_num_zero(self):\n        # If max_num is 0 then no form is rendered at all, even if extra and initial\n        # are specified.\n\n        initial = [\n            {'name': 'Fernet and Coke'},\n            {'name': 'Bloody Mary'},\n        ]\n        LimitedFavoriteDrinkFormSet = formset_factory(FavoriteDrinkForm, extra=1, max_num=0)\n        formset = LimitedFavoriteDrinkFormSet(initial=initial)\n        form_output = []\n\n        for form in formset.forms:\n            form_output.append(str(form))\n\n        self.assertEqual('\\n'.join(form_output), \"\")\n\n    def test_more_initial_than_max_num(self):\n        # More initial forms than max_num will result in only the first max_num of\n        # them to be displayed with no extra forms.\n\n        initial = [\n            {'name': 'Gin Tonic'},\n            {'name': 'Bloody Mary'},\n            {'name': 'Jack and Coke'},\n        ]\n        LimitedFavoriteDrinkFormSet = formset_factory(FavoriteDrinkForm, extra=1, max_num=2)\n        formset = LimitedFavoriteDrinkFormSet(initial=initial)\n        form_output = []\n\n        for form in formset.forms:\n            form_output.append(str(form))\n\n        self.assertHTMLEqual('\\n'.join(form_output), \"\"\"<tr><th><label for=\"id_form-0-name\">Name:</label></th><td><input type=\"text\" name=\"form-0-name\" value=\"Gin Tonic\" id=\"id_form-0-name\" /></td></tr>\n<tr><th><label for=\"id_form-1-name\">Name:</label></th><td><input type=\"text\" name=\"form-1-name\" value=\"Bloody Mary\" id=\"id_form-1-name\" /></td></tr>\"\"\")\n\n        # One form from initial and extra=3 with max_num=2 should result in the one\n        # initial form and one extra.\n        initial = [\n            {'name': 'Gin Tonic'},\n        ]\n        LimitedFavoriteDrinkFormSet = formset_factory(FavoriteDrinkForm, extra=3, max_num=2)\n        formset = LimitedFavoriteDrinkFormSet(initial=initial)\n        form_output = []\n\n        for form in formset.forms:\n            form_output.append(str(form))\n\n        self.assertHTMLEqual('\\n'.join(form_output), \"\"\"<tr><th><label for=\"id_form-0-name\">Name:</label></th><td><input type=\"text\" name=\"form-0-name\" value=\"Gin Tonic\" id=\"id_form-0-name\" /></td></tr>\n<tr><th><label for=\"id_form-1-name\">Name:</label></th><td><input type=\"text\" name=\"form-1-name\" id=\"id_form-1-name\" /></td></tr>\"\"\")\n\n    def test_regression_6926(self):\n        # Regression test for #6926 ##################################################\n        # Make sure the management form has the correct prefix.\n\n        formset = FavoriteDrinksFormSet()\n        self.assertEqual(formset.management_form.prefix, 'form')\n\n        data = {\n            'form-TOTAL_FORMS': '2',\n            'form-INITIAL_FORMS': '0',\n            'form-MAX_NUM_FORMS': '0',\n        }\n        formset = FavoriteDrinksFormSet(data=data)\n        self.assertEqual(formset.management_form.prefix, 'form')\n\n        formset = FavoriteDrinksFormSet(initial={})\n        self.assertEqual(formset.management_form.prefix, 'form')\n\n    def test_regression_12878(self):\n        # Regression test for #12878 #################################################\n\n        data = {\n            'drinks-TOTAL_FORMS': '2', # the number of forms rendered\n            'drinks-INITIAL_FORMS': '0', # the number of forms with initial data\n            'drinks-MAX_NUM_FORMS': '0', # max number of forms\n            'drinks-0-name': 'Gin and Tonic',\n            'drinks-1-name': 'Gin and Tonic',\n        }\n\n        formset = FavoriteDrinksFormSet(data, prefix='drinks')\n        self.assertFalse(formset.is_valid())\n        self.assertEqual(formset.non_form_errors(), ['You may only specify a drink once.'])\n\n    def test_formset_iteration(self):\n        # Regression tests for #16455 -- formset instances are iterable\n        ChoiceFormset = formset_factory(Choice, extra=3)\n        formset = ChoiceFormset()\n\n        # confirm iterated formset yields formset.forms\n        forms = list(formset)\n        self.assertEqual(forms, formset.forms)\n        self.assertEqual(len(formset), len(forms))\n\n        # confirm indexing of formset\n        self.assertEqual(formset[0], forms[0])\n        try:\n            formset[3]\n            self.fail('Requesting an invalid formset index should raise an exception')\n        except IndexError:\n            pass\n\n        # Formets can override the default iteration order\n        class BaseReverseFormSet(BaseFormSet):\n            def __iter__(self):\n                return reversed(self.forms)\n\n            def __getitem__(self, idx):\n                return super(BaseReverseFormSet, self).__getitem__(len(self) - idx - 1)\n\n        ReverseChoiceFormset = formset_factory(Choice, BaseReverseFormSet, extra=3)\n        reverse_formset = ReverseChoiceFormset()\n\n        # confirm that __iter__ modifies rendering order\n        # compare forms from \"reverse\" formset with forms from original formset\n        self.assertEqual(str(reverse_formset[0]), str(forms[-1]))\n        self.assertEqual(str(reverse_formset[1]), str(forms[-2]))\n        self.assertEqual(len(reverse_formset), len(forms))\n\n    def test_formset_nonzero(self):\n        \"\"\"\n        Formsets with no forms should still evaluate as true.\n        Regression test for #15722\n        \"\"\"\n        ChoiceFormset = formset_factory(Choice, extra=0)\n        formset = ChoiceFormset()\n        self.assertEqual(len(formset.forms), 0)\n        self.assertTrue(formset)\n\n\n    def test_formset_error_class(self):\n        # Regression tests for #16479 -- formsets form use ErrorList instead of supplied error_class\n        class CustomErrorList(ErrorList):\n            pass\n\n        formset = FavoriteDrinksFormSet(error_class=CustomErrorList)\n        self.assertEqual(formset.forms[0].error_class, CustomErrorList)\n\n    def test_formset_calls_forms_is_valid(self):\n        # Regression tests for #18574 -- make sure formsets call\n        # is_valid() on each form.\n\n        class AnotherChoice(Choice):\n            def is_valid(self):\n                self.is_valid_called = True\n                return super(AnotherChoice, self).is_valid()\n\n        AnotherChoiceFormSet = formset_factory(AnotherChoice)\n        data = {\n            'choices-TOTAL_FORMS': '1',  # number of forms rendered\n            'choices-INITIAL_FORMS': '0',  # number of forms with initial data\n            'choices-MAX_NUM_FORMS': '0',  # max number of forms\n            'choices-0-choice': 'Calexico',\n            'choices-0-votes': '100',\n        }\n        formset = AnotherChoiceFormSet(data, auto_id=False, prefix='choices')\n        self.assertTrue(formset.is_valid())\n        self.assertTrue(all([form.is_valid_called for form in formset.forms]))\n\n    def test_hard_limit_on_instantiated_forms(self):\n        \"\"\"A formset has a hard limit on the number of forms instantiated.\"\"\"\n        # reduce the default limit of 1000 temporarily for testing\n        _old_DEFAULT_MAX_NUM = formsets.DEFAULT_MAX_NUM\n        try:\n            formsets.DEFAULT_MAX_NUM = 3\n            ChoiceFormSet = formset_factory(Choice)\n            # someone fiddles with the mgmt form data...\n            formset = ChoiceFormSet(\n                {\n                    'choices-TOTAL_FORMS': '4',\n                    'choices-INITIAL_FORMS': '0',\n                    'choices-MAX_NUM_FORMS': '4',\n                    'choices-0-choice': 'Zero',\n                    'choices-0-votes': '0',\n                    'choices-1-choice': 'One',\n                    'choices-1-votes': '1',\n                    'choices-2-choice': 'Two',\n                    'choices-2-votes': '2',\n                    'choices-3-choice': 'Three',\n                    'choices-3-votes': '3',\n                    },\n                prefix='choices',\n                )\n            # But we still only instantiate 3 forms\n            self.assertEqual(len(formset.forms), 3)\n        finally:\n            formsets.DEFAULT_MAX_NUM = _old_DEFAULT_MAX_NUM\n\n    def test_increase_hard_limit(self):\n        \"\"\"Can increase the built-in forms limit via a higher max_num.\"\"\"\n        # reduce the default limit of 1000 temporarily for testing\n        _old_DEFAULT_MAX_NUM = formsets.DEFAULT_MAX_NUM\n        try:\n            formsets.DEFAULT_MAX_NUM = 3\n            # for this form, we want a limit of 4\n            ChoiceFormSet = formset_factory(Choice, max_num=4)\n            formset = ChoiceFormSet(\n                {\n                    'choices-TOTAL_FORMS': '4',\n                    'choices-INITIAL_FORMS': '0',\n                    'choices-MAX_NUM_FORMS': '4',\n                    'choices-0-choice': 'Zero',\n                    'choices-0-votes': '0',\n                    'choices-1-choice': 'One',\n                    'choices-1-votes': '1',\n                    'choices-2-choice': 'Two',\n                    'choices-2-votes': '2',\n                    'choices-3-choice': 'Three',\n                    'choices-3-votes': '3',\n                    },\n                prefix='choices',\n                )\n            # This time four forms are instantiated\n            self.assertEqual(len(formset.forms), 4)\n        finally:\n            formsets.DEFAULT_MAX_NUM = _old_DEFAULT_MAX_NUM\n\n\ndata = {\n    'choices-TOTAL_FORMS': '1', # the number of forms rendered\n    'choices-INITIAL_FORMS': '0', # the number of forms with initial data\n    'choices-MAX_NUM_FORMS': '0', # max number of forms\n    'choices-0-choice': 'Calexico',\n    'choices-0-votes': '100',\n}\n\nclass Choice(Form):\n    choice = CharField()\n    votes = IntegerField()\n\nChoiceFormSet = formset_factory(Choice)\n\nclass FormsetAsFooTests(TestCase):\n    def test_as_table(self):\n        formset = ChoiceFormSet(data, auto_id=False, prefix='choices')\n        self.assertHTMLEqual(formset.as_table(),\"\"\"<input type=\"hidden\" name=\"choices-TOTAL_FORMS\" value=\"1\" /><input type=\"hidden\" name=\"choices-INITIAL_FORMS\" value=\"0\" /><input type=\"hidden\" name=\"choices-MAX_NUM_FORMS\" value=\"0\" />\n<tr><th>Choice:</th><td><input type=\"text\" name=\"choices-0-choice\" value=\"Calexico\" /></td></tr>\n<tr><th>Votes:</th><td><input type=\"text\" name=\"choices-0-votes\" value=\"100\" /></td></tr>\"\"\")\n\n    def test_as_p(self):\n        formset = ChoiceFormSet(data, auto_id=False, prefix='choices')\n        self.assertHTMLEqual(formset.as_p(),\"\"\"<input type=\"hidden\" name=\"choices-TOTAL_FORMS\" value=\"1\" /><input type=\"hidden\" name=\"choices-INITIAL_FORMS\" value=\"0\" /><input type=\"hidden\" name=\"choices-MAX_NUM_FORMS\" value=\"0\" />\n<p>Choice: <input type=\"text\" name=\"choices-0-choice\" value=\"Calexico\" /></p>\n<p>Votes: <input type=\"text\" name=\"choices-0-votes\" value=\"100\" /></p>\"\"\")\n\n    def test_as_ul(self):\n        formset = ChoiceFormSet(data, auto_id=False, prefix='choices')\n        self.assertHTMLEqual(formset.as_ul(),\"\"\"<input type=\"hidden\" name=\"choices-TOTAL_FORMS\" value=\"1\" /><input type=\"hidden\" name=\"choices-INITIAL_FORMS\" value=\"0\" /><input type=\"hidden\" name=\"choices-MAX_NUM_FORMS\" value=\"0\" />\n<li>Choice: <input type=\"text\" name=\"choices-0-choice\" value=\"Calexico\" /></li>\n<li>Votes: <input type=\"text\" name=\"choices-0-votes\" value=\"100\" /></li>\"\"\")\n\n\n# Regression test for #11418 #################################################\nclass ArticleForm(Form):\n    title = CharField()\n    pub_date = DateField()\n\nArticleFormSet = formset_factory(ArticleForm)\n\nclass TestIsBoundBehavior(TestCase):\n    def test_no_data_raises_validation_error(self):\n        self.assertRaises(ValidationError, ArticleFormSet, {})\n\n    def test_with_management_data_attrs_work_fine(self):\n        data = {\n            'form-TOTAL_FORMS': '1',\n            'form-INITIAL_FORMS': '0',\n        }\n        formset = ArticleFormSet(data)\n        self.assertEqual(0, formset.initial_form_count())\n        self.assertEqual(1, formset.total_form_count())\n        self.assertTrue(formset.is_bound)\n        self.assertTrue(formset.forms[0].is_bound)\n        self.assertTrue(formset.is_valid())\n        self.assertTrue(formset.forms[0].is_valid())\n        self.assertEqual([{}], formset.cleaned_data)\n\n\n    def test_form_errors_are_cought_by_formset(self):\n        data = {\n            'form-TOTAL_FORMS': '2',\n            'form-INITIAL_FORMS': '0',\n            'form-0-title': 'Test',\n            'form-0-pub_date': '1904-06-16',\n            'form-1-title': 'Test',\n            'form-1-pub_date': '', # <-- this date is missing but required\n        }\n        formset = ArticleFormSet(data)\n        self.assertFalse(formset.is_valid())\n        self.assertEqual([{}, {'pub_date': ['This field is required.']}], formset.errors)\n\n    def test_empty_forms_are_unbound(self):\n        data = {\n            'form-TOTAL_FORMS': '1',\n            'form-INITIAL_FORMS': '0',\n            'form-0-title': 'Test',\n            'form-0-pub_date': '1904-06-16',\n        }\n        unbound_formset = ArticleFormSet()\n        bound_formset = ArticleFormSet(data)\n\n        empty_forms = []\n\n        empty_forms.append(unbound_formset.empty_form)\n        empty_forms.append(bound_formset.empty_form)\n\n        # Empty forms should be unbound\n        self.assertFalse(empty_forms[0].is_bound)\n        self.assertFalse(empty_forms[1].is_bound)\n\n        # The empty forms should be equal.\n        self.assertHTMLEqual(empty_forms[0].as_p(), empty_forms[1].as_p())\n\nclass TestEmptyFormSet(TestCase):\n    def test_empty_formset_is_valid(self):\n        \"\"\"Test that an empty formset still calls clean()\"\"\"\n        EmptyFsetWontValidateFormset = formset_factory(FavoriteDrinkForm, extra=0, formset=EmptyFsetWontValidate)\n        formset = EmptyFsetWontValidateFormset(data={'form-INITIAL_FORMS':'0', 'form-TOTAL_FORMS':'0'},prefix=\"form\")\n        formset2 = EmptyFsetWontValidateFormset(data={'form-INITIAL_FORMS':'0', 'form-TOTAL_FORMS':'1', 'form-0-name':'bah' },prefix=\"form\")\n        self.assertFalse(formset.is_valid())\n        self.assertFalse(formset2.is_valid())\n\n    def test_empty_formset_media(self):\n        \"\"\"Make sure media is available on empty formset, refs #19545\"\"\"\n        class MediaForm(Form):\n            class Media:\n                js = ('some-file.js',)\n        self.assertIn('some-file.js', str(formset_factory(MediaForm, extra=0)().media))\n\n    def test_empty_formset_is_multipart(self):\n        \"\"\"Make sure `is_multipart()` works with empty formset, refs #19545\"\"\"\n        class FileForm(Form):\n            file = FileField()\n        self.assertTrue(formset_factory(FileForm, extra=0)().is_multipart())\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/forms/tests/input_formats.py",
    "content": "from datetime import time, date, datetime\n\nfrom django import forms\nfrom django.test.utils import override_settings\nfrom django.utils.translation import activate, deactivate\nfrom django.test import SimpleTestCase\n\n\n@override_settings(TIME_INPUT_FORMATS=[\"%I:%M:%S %p\", \"%I:%M %p\"], USE_L10N=True)\nclass LocalizedTimeTests(SimpleTestCase):\n    def setUp(self):\n        # nl/formats.py has customized TIME_INPUT_FORMATS\n        activate('nl')\n\n    def tearDown(self):\n        deactivate()\n\n    def test_timeField(self):\n        \"TimeFields can parse dates in the default format\"\n        f = forms.TimeField()\n        # Parse a time in an unaccepted format; get an error\n        self.assertRaises(forms.ValidationError, f.clean, '1:30:05 PM')\n\n        # Parse a time in a valid format, get a parsed result\n        result = f.clean('13:30:05')\n        self.assertEqual(result, time(13,30,5))\n\n        # Check that the parsed result does a round trip\n        text = f.widget._format_value(result)\n        self.assertEqual(text, '13:30:05')\n\n        # Parse a time in a valid, but non-default format, get a parsed result\n        result = f.clean('13:30')\n        self.assertEqual(result, time(13,30,0))\n\n        # Check that the parsed result does a round trip to default format\n        text = f.widget._format_value(result)\n        self.assertEqual(text, \"13:30:00\")\n\n    def test_localized_timeField(self):\n        \"Localized TimeFields act as unlocalized widgets\"\n        f = forms.TimeField(localize=True)\n        # Parse a time in an unaccepted format; get an error\n        self.assertRaises(forms.ValidationError, f.clean, '1:30:05 PM')\n\n        # Parse a time in a valid format, get a parsed result\n        result = f.clean('13:30:05')\n        self.assertEqual(result, time(13,30,5))\n\n        # Check that the parsed result does a round trip to the same format\n        text = f.widget._format_value(result)\n        self.assertEqual(text, '13:30:05')\n\n        # Parse a time in a valid format, get a parsed result\n        result = f.clean('13:30')\n        self.assertEqual(result, time(13,30,0))\n\n        # Check that the parsed result does a round trip to default format\n        text = f.widget._format_value(result)\n        self.assertEqual(text, \"13:30:00\")\n\n    def test_timeField_with_inputformat(self):\n        \"TimeFields with manually specified input formats can accept those formats\"\n        f = forms.TimeField(input_formats=[\"%H.%M.%S\", \"%H.%M\"])\n        # Parse a time in an unaccepted format; get an error\n        self.assertRaises(forms.ValidationError, f.clean, '1:30:05 PM')\n        self.assertRaises(forms.ValidationError, f.clean, '13:30:05')\n\n        # Parse a time in a valid format, get a parsed result\n        result = f.clean('13.30.05')\n        self.assertEqual(result, time(13,30,5))\n\n        # Check that the parsed result does a round trip to the same format\n        text = f.widget._format_value(result)\n        self.assertEqual(text, \"13:30:05\")\n\n        # Parse a time in a valid format, get a parsed result\n        result = f.clean('13.30')\n        self.assertEqual(result, time(13,30,0))\n\n        # Check that the parsed result does a round trip to default format\n        text = f.widget._format_value(result)\n        self.assertEqual(text, \"13:30:00\")\n\n    def test_localized_timeField_with_inputformat(self):\n        \"Localized TimeFields with manually specified input formats can accept those formats\"\n        f = forms.TimeField(input_formats=[\"%H.%M.%S\", \"%H.%M\"], localize=True)\n        # Parse a time in an unaccepted format; get an error\n        self.assertRaises(forms.ValidationError, f.clean, '1:30:05 PM')\n        self.assertRaises(forms.ValidationError, f.clean, '13:30:05')\n\n        # Parse a time in a valid format, get a parsed result\n        result = f.clean('13.30.05')\n        self.assertEqual(result, time(13,30,5))\n\n        # Check that the parsed result does a round trip to the same format\n        text = f.widget._format_value(result)\n        self.assertEqual(text, \"13:30:05\")\n\n        # Parse a time in a valid format, get a parsed result\n        result = f.clean('13.30')\n        self.assertEqual(result, time(13,30,0))\n\n        # Check that the parsed result does a round trip to default format\n        text = f.widget._format_value(result)\n        self.assertEqual(text, \"13:30:00\")\n\n\n@override_settings(TIME_INPUT_FORMATS=[\"%I:%M:%S %p\", \"%I:%M %p\"])\nclass CustomTimeInputFormatsTests(SimpleTestCase):\n    def test_timeField(self):\n        \"TimeFields can parse dates in the default format\"\n        f = forms.TimeField()\n        # Parse a time in an unaccepted format; get an error\n        self.assertRaises(forms.ValidationError, f.clean, '13:30:05')\n\n        # Parse a time in a valid format, get a parsed result\n        result = f.clean('1:30:05 PM')\n        self.assertEqual(result, time(13,30,5))\n\n        # Check that the parsed result does a round trip\n        text = f.widget._format_value(result)\n        self.assertEqual(text, '01:30:05 PM')\n\n        # Parse a time in a valid, but non-default format, get a parsed result\n        result = f.clean('1:30 PM')\n        self.assertEqual(result, time(13,30,0))\n\n        # Check that the parsed result does a round trip to default format\n        text = f.widget._format_value(result)\n        self.assertEqual(text, \"01:30:00 PM\")\n\n    def test_localized_timeField(self):\n        \"Localized TimeFields act as unlocalized widgets\"\n        f = forms.TimeField(localize=True)\n        # Parse a time in an unaccepted format; get an error\n        self.assertRaises(forms.ValidationError, f.clean, '13:30:05')\n\n        # Parse a time in a valid format, get a parsed result\n        result = f.clean('1:30:05 PM')\n        self.assertEqual(result, time(13,30,5))\n\n        # Check that the parsed result does a round trip to the same format\n        text = f.widget._format_value(result)\n        self.assertEqual(text, '01:30:05 PM')\n\n        # Parse a time in a valid format, get a parsed result\n        result = f.clean('01:30 PM')\n        self.assertEqual(result, time(13,30,0))\n\n        # Check that the parsed result does a round trip to default format\n        text = f.widget._format_value(result)\n        self.assertEqual(text, \"01:30:00 PM\")\n\n    def test_timeField_with_inputformat(self):\n        \"TimeFields with manually specified input formats can accept those formats\"\n        f = forms.TimeField(input_formats=[\"%H.%M.%S\", \"%H.%M\"])\n        # Parse a time in an unaccepted format; get an error\n        self.assertRaises(forms.ValidationError, f.clean, '1:30:05 PM')\n        self.assertRaises(forms.ValidationError, f.clean, '13:30:05')\n\n        # Parse a time in a valid format, get a parsed result\n        result = f.clean('13.30.05')\n        self.assertEqual(result, time(13,30,5))\n\n        # Check that the parsed result does a round trip to the same format\n        text = f.widget._format_value(result)\n        self.assertEqual(text, \"01:30:05 PM\")\n\n        # Parse a time in a valid format, get a parsed result\n        result = f.clean('13.30')\n        self.assertEqual(result, time(13,30,0))\n\n        # Check that the parsed result does a round trip to default format\n        text = f.widget._format_value(result)\n        self.assertEqual(text, \"01:30:00 PM\")\n\n    def test_localized_timeField_with_inputformat(self):\n        \"Localized TimeFields with manually specified input formats can accept those formats\"\n        f = forms.TimeField(input_formats=[\"%H.%M.%S\", \"%H.%M\"], localize=True)\n        # Parse a time in an unaccepted format; get an error\n        self.assertRaises(forms.ValidationError, f.clean, '1:30:05 PM')\n        self.assertRaises(forms.ValidationError, f.clean, '13:30:05')\n\n        # Parse a time in a valid format, get a parsed result\n        result = f.clean('13.30.05')\n        self.assertEqual(result, time(13,30,5))\n\n        # # Check that the parsed result does a round trip to the same format\n        text = f.widget._format_value(result)\n        self.assertEqual(text, \"01:30:05 PM\")\n\n        # Parse a time in a valid format, get a parsed result\n        result = f.clean('13.30')\n        self.assertEqual(result, time(13,30,0))\n\n        # Check that the parsed result does a round trip to default format\n        text = f.widget._format_value(result)\n        self.assertEqual(text, \"01:30:00 PM\")\n\n\nclass SimpleTimeFormatTests(SimpleTestCase):\n    def test_timeField(self):\n        \"TimeFields can parse dates in the default format\"\n        f = forms.TimeField()\n        # Parse a time in an unaccepted format; get an error\n        self.assertRaises(forms.ValidationError, f.clean, '1:30:05 PM')\n\n        # Parse a time in a valid format, get a parsed result\n        result = f.clean('13:30:05')\n        self.assertEqual(result, time(13,30,5))\n\n        # Check that the parsed result does a round trip to the same format\n        text = f.widget._format_value(result)\n        self.assertEqual(text, \"13:30:05\")\n\n        # Parse a time in a valid, but non-default format, get a parsed result\n        result = f.clean('13:30')\n        self.assertEqual(result, time(13,30,0))\n\n        # Check that the parsed result does a round trip to default format\n        text = f.widget._format_value(result)\n        self.assertEqual(text, \"13:30:00\")\n\n    def test_localized_timeField(self):\n        \"Localized TimeFields in a non-localized environment act as unlocalized widgets\"\n        f = forms.TimeField()\n        # Parse a time in an unaccepted format; get an error\n        self.assertRaises(forms.ValidationError, f.clean, '1:30:05 PM')\n\n        # Parse a time in a valid format, get a parsed result\n        result = f.clean('13:30:05')\n        self.assertEqual(result, time(13,30,5))\n\n        # Check that the parsed result does a round trip to the same format\n        text = f.widget._format_value(result)\n        self.assertEqual(text, \"13:30:05\")\n\n        # Parse a time in a valid format, get a parsed result\n        result = f.clean('13:30')\n        self.assertEqual(result, time(13,30,0))\n\n        # Check that the parsed result does a round trip to default format\n        text = f.widget._format_value(result)\n        self.assertEqual(text, \"13:30:00\")\n\n    def test_timeField_with_inputformat(self):\n        \"TimeFields with manually specified input formats can accept those formats\"\n        f = forms.TimeField(input_formats=[\"%I:%M:%S %p\", \"%I:%M %p\"])\n        # Parse a time in an unaccepted format; get an error\n        self.assertRaises(forms.ValidationError, f.clean, '13:30:05')\n\n        # Parse a time in a valid format, get a parsed result\n        result = f.clean('1:30:05 PM')\n        self.assertEqual(result, time(13,30,5))\n\n        # Check that the parsed result does a round trip to the same format\n        text = f.widget._format_value(result)\n        self.assertEqual(text, \"13:30:05\")\n\n        # Parse a time in a valid format, get a parsed result\n        result = f.clean('1:30 PM')\n        self.assertEqual(result, time(13,30,0))\n\n        # Check that the parsed result does a round trip to default format\n        text = f.widget._format_value(result)\n        self.assertEqual(text, \"13:30:00\")\n\n    def test_localized_timeField_with_inputformat(self):\n        \"Localized TimeFields with manually specified input formats can accept those formats\"\n        f = forms.TimeField(input_formats=[\"%I:%M:%S %p\", \"%I:%M %p\"], localize=True)\n        # Parse a time in an unaccepted format; get an error\n        self.assertRaises(forms.ValidationError, f.clean, '13:30:05')\n\n        # Parse a time in a valid format, get a parsed result\n        result = f.clean('1:30:05 PM')\n        self.assertEqual(result, time(13,30,5))\n\n        # Check that the parsed result does a round trip to the same format\n        text = f.widget._format_value(result)\n        self.assertEqual(text, \"13:30:05\")\n\n        # Parse a time in a valid format, get a parsed result\n        result = f.clean('1:30 PM')\n        self.assertEqual(result, time(13,30,0))\n\n        # Check that the parsed result does a round trip to default format\n        text = f.widget._format_value(result)\n        self.assertEqual(text, \"13:30:00\")\n\n\n@override_settings(DATE_INPUT_FORMATS=[\"%d/%m/%Y\", \"%d-%m-%Y\"], USE_L10N=True)\nclass LocalizedDateTests(SimpleTestCase):\n    def setUp(self):\n        activate('de')\n\n    def tearDown(self):\n        deactivate()\n\n    def test_dateField(self):\n        \"DateFields can parse dates in the default format\"\n        f = forms.DateField()\n        # Parse a date in an unaccepted format; get an error\n        self.assertRaises(forms.ValidationError, f.clean, '21/12/2010')\n\n        # ISO formats are accepted, even if not specified in formats.py\n        self.assertEqual(f.clean('2010-12-21'), date(2010,12,21))\n\n        # Parse a date in a valid format, get a parsed result\n        result = f.clean('21.12.2010')\n        self.assertEqual(result, date(2010,12,21))\n\n        # Check that the parsed result does a round trip\n        text = f.widget._format_value(result)\n        self.assertEqual(text, '21.12.2010')\n\n        # Parse a date in a valid, but non-default format, get a parsed result\n        result = f.clean('21.12.10')\n        self.assertEqual(result, date(2010,12,21))\n\n        # Check that the parsed result does a round trip to default format\n        text = f.widget._format_value(result)\n        self.assertEqual(text, \"21.12.2010\")\n\n    def test_localized_dateField(self):\n        \"Localized DateFields act as unlocalized widgets\"\n        f = forms.DateField(localize=True)\n        # Parse a date in an unaccepted format; get an error\n        self.assertRaises(forms.ValidationError, f.clean, '21/12/2010')\n\n        # Parse a date in a valid format, get a parsed result\n        result = f.clean('21.12.2010')\n        self.assertEqual(result, date(2010,12,21))\n\n        # Check that the parsed result does a round trip to the same format\n        text = f.widget._format_value(result)\n        self.assertEqual(text, '21.12.2010')\n\n        # Parse a date in a valid format, get a parsed result\n        result = f.clean('21.12.10')\n        self.assertEqual(result, date(2010,12,21))\n\n        # Check that the parsed result does a round trip to default format\n        text = f.widget._format_value(result)\n        self.assertEqual(text, \"21.12.2010\")\n\n    def test_dateField_with_inputformat(self):\n        \"DateFields with manually specified input formats can accept those formats\"\n        f = forms.DateField(input_formats=[\"%m.%d.%Y\", \"%m-%d-%Y\"])\n        # Parse a date in an unaccepted format; get an error\n        self.assertRaises(forms.ValidationError, f.clean, '2010-12-21')\n        self.assertRaises(forms.ValidationError, f.clean, '21/12/2010')\n        self.assertRaises(forms.ValidationError, f.clean, '21.12.2010')\n\n        # Parse a date in a valid format, get a parsed result\n        result = f.clean('12.21.2010')\n        self.assertEqual(result, date(2010,12,21))\n\n        # Check that the parsed result does a round trip to the same format\n        text = f.widget._format_value(result)\n        self.assertEqual(text, \"21.12.2010\")\n\n        # Parse a date in a valid format, get a parsed result\n        result = f.clean('12-21-2010')\n        self.assertEqual(result, date(2010,12,21))\n\n        # Check that the parsed result does a round trip to default format\n        text = f.widget._format_value(result)\n        self.assertEqual(text, \"21.12.2010\")\n\n    def test_localized_dateField_with_inputformat(self):\n        \"Localized DateFields with manually specified input formats can accept those formats\"\n        f = forms.DateField(input_formats=[\"%m.%d.%Y\", \"%m-%d-%Y\"], localize=True)\n        # Parse a date in an unaccepted format; get an error\n        self.assertRaises(forms.ValidationError, f.clean, '2010-12-21')\n        self.assertRaises(forms.ValidationError, f.clean, '21/12/2010')\n        self.assertRaises(forms.ValidationError, f.clean, '21.12.2010')\n\n        # Parse a date in a valid format, get a parsed result\n        result = f.clean('12.21.2010')\n        self.assertEqual(result, date(2010,12,21))\n\n        # # Check that the parsed result does a round trip to the same format\n        text = f.widget._format_value(result)\n        self.assertEqual(text, \"21.12.2010\")\n\n        # Parse a date in a valid format, get a parsed result\n        result = f.clean('12-21-2010')\n        self.assertEqual(result, date(2010,12,21))\n\n        # Check that the parsed result does a round trip to default format\n        text = f.widget._format_value(result)\n        self.assertEqual(text, \"21.12.2010\")\n\n\n@override_settings(DATE_INPUT_FORMATS=[\"%d.%m.%Y\", \"%d-%m-%Y\"])\nclass CustomDateInputFormatsTests(SimpleTestCase):\n    def test_dateField(self):\n        \"DateFields can parse dates in the default format\"\n        f = forms.DateField()\n        # Parse a date in an unaccepted format; get an error\n        self.assertRaises(forms.ValidationError, f.clean, '2010-12-21')\n\n        # Parse a date in a valid format, get a parsed result\n        result = f.clean('21.12.2010')\n        self.assertEqual(result, date(2010,12,21))\n\n        # Check that the parsed result does a round trip\n        text = f.widget._format_value(result)\n        self.assertEqual(text, '21.12.2010')\n\n        # Parse a date in a valid, but non-default format, get a parsed result\n        result = f.clean('21-12-2010')\n        self.assertEqual(result, date(2010,12,21))\n\n        # Check that the parsed result does a round trip to default format\n        text = f.widget._format_value(result)\n        self.assertEqual(text, \"21.12.2010\")\n\n    def test_localized_dateField(self):\n        \"Localized DateFields act as unlocalized widgets\"\n        f = forms.DateField(localize=True)\n        # Parse a date in an unaccepted format; get an error\n        self.assertRaises(forms.ValidationError, f.clean, '2010-12-21')\n\n        # Parse a date in a valid format, get a parsed result\n        result = f.clean('21.12.2010')\n        self.assertEqual(result, date(2010,12,21))\n\n        # Check that the parsed result does a round trip to the same format\n        text = f.widget._format_value(result)\n        self.assertEqual(text, '21.12.2010')\n\n        # Parse a date in a valid format, get a parsed result\n        result = f.clean('21-12-2010')\n        self.assertEqual(result, date(2010,12,21))\n\n        # Check that the parsed result does a round trip to default format\n        text = f.widget._format_value(result)\n        self.assertEqual(text, \"21.12.2010\")\n\n    def test_dateField_with_inputformat(self):\n        \"DateFields with manually specified input formats can accept those formats\"\n        f = forms.DateField(input_formats=[\"%m.%d.%Y\", \"%m-%d-%Y\"])\n        # Parse a date in an unaccepted format; get an error\n        self.assertRaises(forms.ValidationError, f.clean, '21.12.2010')\n        self.assertRaises(forms.ValidationError, f.clean, '2010-12-21')\n\n        # Parse a date in a valid format, get a parsed result\n        result = f.clean('12.21.2010')\n        self.assertEqual(result, date(2010,12,21))\n\n        # Check that the parsed result does a round trip to the same format\n        text = f.widget._format_value(result)\n        self.assertEqual(text, \"21.12.2010\")\n\n        # Parse a date in a valid format, get a parsed result\n        result = f.clean('12-21-2010')\n        self.assertEqual(result, date(2010,12,21))\n\n        # Check that the parsed result does a round trip to default format\n        text = f.widget._format_value(result)\n        self.assertEqual(text, \"21.12.2010\")\n\n    def test_localized_dateField_with_inputformat(self):\n        \"Localized DateFields with manually specified input formats can accept those formats\"\n        f = forms.DateField(input_formats=[\"%m.%d.%Y\", \"%m-%d-%Y\"], localize=True)\n        # Parse a date in an unaccepted format; get an error\n        self.assertRaises(forms.ValidationError, f.clean, '21.12.2010')\n        self.assertRaises(forms.ValidationError, f.clean, '2010-12-21')\n\n        # Parse a date in a valid format, get a parsed result\n        result = f.clean('12.21.2010')\n        self.assertEqual(result, date(2010,12,21))\n\n        # # Check that the parsed result does a round trip to the same format\n        text = f.widget._format_value(result)\n        self.assertEqual(text, \"21.12.2010\")\n\n        # Parse a date in a valid format, get a parsed result\n        result = f.clean('12-21-2010')\n        self.assertEqual(result, date(2010,12,21))\n\n        # Check that the parsed result does a round trip to default format\n        text = f.widget._format_value(result)\n        self.assertEqual(text, \"21.12.2010\")\n\nclass SimpleDateFormatTests(SimpleTestCase):\n    def test_dateField(self):\n        \"DateFields can parse dates in the default format\"\n        f = forms.DateField()\n        # Parse a date in an unaccepted format; get an error\n        self.assertRaises(forms.ValidationError, f.clean, '21.12.2010')\n\n        # Parse a date in a valid format, get a parsed result\n        result = f.clean('2010-12-21')\n        self.assertEqual(result, date(2010,12,21))\n\n        # Check that the parsed result does a round trip to the same format\n        text = f.widget._format_value(result)\n        self.assertEqual(text, \"2010-12-21\")\n\n        # Parse a date in a valid, but non-default format, get a parsed result\n        result = f.clean('12/21/2010')\n        self.assertEqual(result, date(2010,12,21))\n\n        # Check that the parsed result does a round trip to default format\n        text = f.widget._format_value(result)\n        self.assertEqual(text, \"2010-12-21\")\n\n    def test_localized_dateField(self):\n        \"Localized DateFields in a non-localized environment act as unlocalized widgets\"\n        f = forms.DateField()\n        # Parse a date in an unaccepted format; get an error\n        self.assertRaises(forms.ValidationError, f.clean, '21.12.2010')\n\n        # Parse a date in a valid format, get a parsed result\n        result = f.clean('2010-12-21')\n        self.assertEqual(result, date(2010,12,21))\n\n        # Check that the parsed result does a round trip to the same format\n        text = f.widget._format_value(result)\n        self.assertEqual(text, \"2010-12-21\")\n\n        # Parse a date in a valid format, get a parsed result\n        result = f.clean('12/21/2010')\n        self.assertEqual(result, date(2010,12,21))\n\n        # Check that the parsed result does a round trip to default format\n        text = f.widget._format_value(result)\n        self.assertEqual(text, \"2010-12-21\")\n\n    def test_dateField_with_inputformat(self):\n        \"DateFields with manually specified input formats can accept those formats\"\n        f = forms.DateField(input_formats=[\"%d.%m.%Y\", \"%d-%m-%Y\"])\n        # Parse a date in an unaccepted format; get an error\n        self.assertRaises(forms.ValidationError, f.clean, '2010-12-21')\n\n        # Parse a date in a valid format, get a parsed result\n        result = f.clean('21.12.2010')\n        self.assertEqual(result, date(2010,12,21))\n\n        # Check that the parsed result does a round trip to the same format\n        text = f.widget._format_value(result)\n        self.assertEqual(text, \"2010-12-21\")\n\n        # Parse a date in a valid format, get a parsed result\n        result = f.clean('21-12-2010')\n        self.assertEqual(result, date(2010,12,21))\n\n        # Check that the parsed result does a round trip to default format\n        text = f.widget._format_value(result)\n        self.assertEqual(text, \"2010-12-21\")\n\n    def test_localized_dateField_with_inputformat(self):\n        \"Localized DateFields with manually specified input formats can accept those formats\"\n        f = forms.DateField(input_formats=[\"%d.%m.%Y\", \"%d-%m-%Y\"], localize=True)\n        # Parse a date in an unaccepted format; get an error\n        self.assertRaises(forms.ValidationError, f.clean, '2010-12-21')\n\n        # Parse a date in a valid format, get a parsed result\n        result = f.clean('21.12.2010')\n        self.assertEqual(result, date(2010,12,21))\n\n        # Check that the parsed result does a round trip to the same format\n        text = f.widget._format_value(result)\n        self.assertEqual(text, \"2010-12-21\")\n\n        # Parse a date in a valid format, get a parsed result\n        result = f.clean('21-12-2010')\n        self.assertEqual(result, date(2010,12,21))\n\n        # Check that the parsed result does a round trip to default format\n        text = f.widget._format_value(result)\n        self.assertEqual(text, \"2010-12-21\")\n\n\n@override_settings(DATETIME_INPUT_FORMATS=[\"%I:%M:%S %p %d/%m/%Y\", \"%I:%M %p %d-%m-%Y\"], USE_L10N=True)\nclass LocalizedDateTimeTests(SimpleTestCase):\n    def setUp(self):\n        activate('de')\n\n    def tearDown(self):\n        deactivate()\n\n    def test_dateTimeField(self):\n        \"DateTimeFields can parse dates in the default format\"\n        f = forms.DateTimeField()\n        # Parse a date in an unaccepted format; get an error\n        self.assertRaises(forms.ValidationError, f.clean, '1:30:05 PM 21/12/2010')\n\n        # ISO formats are accepted, even if not specified in formats.py\n        self.assertEqual(f.clean('2010-12-21 13:30:05'), datetime(2010,12,21,13,30,5))\n\n        # Parse a date in a valid format, get a parsed result\n        result = f.clean('21.12.2010 13:30:05')\n        self.assertEqual(result, datetime(2010,12,21,13,30,5))\n\n        # Check that the parsed result does a round trip\n        text = f.widget._format_value(result)\n        self.assertEqual(text, '21.12.2010 13:30:05')\n\n        # Parse a date in a valid, but non-default format, get a parsed result\n        result = f.clean('21.12.2010 13:30')\n        self.assertEqual(result, datetime(2010,12,21,13,30))\n\n        # Check that the parsed result does a round trip to default format\n        text = f.widget._format_value(result)\n        self.assertEqual(text, \"21.12.2010 13:30:00\")\n\n    def test_localized_dateTimeField(self):\n        \"Localized DateTimeFields act as unlocalized widgets\"\n        f = forms.DateTimeField(localize=True)\n        # Parse a date in an unaccepted format; get an error\n        self.assertRaises(forms.ValidationError, f.clean, '1:30:05 PM 21/12/2010')\n\n        # Parse a date in a valid format, get a parsed result\n        result = f.clean('21.12.2010 13:30:05')\n        self.assertEqual(result, datetime(2010,12,21,13,30,5))\n\n        # Check that the parsed result does a round trip to the same format\n        text = f.widget._format_value(result)\n        self.assertEqual(text, '21.12.2010 13:30:05')\n\n        # Parse a date in a valid format, get a parsed result\n        result = f.clean('21.12.2010 13:30')\n        self.assertEqual(result, datetime(2010,12,21,13,30))\n\n        # Check that the parsed result does a round trip to default format\n        text = f.widget._format_value(result)\n        self.assertEqual(text, \"21.12.2010 13:30:00\")\n\n    def test_dateTimeField_with_inputformat(self):\n        \"DateTimeFields with manually specified input formats can accept those formats\"\n        f = forms.DateTimeField(input_formats=[\"%H.%M.%S %m.%d.%Y\", \"%H.%M %m-%d-%Y\"])\n        # Parse a date in an unaccepted format; get an error\n        self.assertRaises(forms.ValidationError, f.clean, '2010-12-21 13:30:05 13:30:05')\n        self.assertRaises(forms.ValidationError, f.clean, '1:30:05 PM 21/12/2010')\n        self.assertRaises(forms.ValidationError, f.clean, '13:30:05 21.12.2010')\n\n        # Parse a date in a valid format, get a parsed result\n        result = f.clean('13.30.05 12.21.2010')\n        self.assertEqual(result, datetime(2010,12,21,13,30,5))\n\n        # Check that the parsed result does a round trip to the same format\n        text = f.widget._format_value(result)\n        self.assertEqual(text, \"21.12.2010 13:30:05\")\n\n        # Parse a date in a valid format, get a parsed result\n        result = f.clean('13.30 12-21-2010')\n        self.assertEqual(result, datetime(2010,12,21,13,30))\n\n        # Check that the parsed result does a round trip to default format\n        text = f.widget._format_value(result)\n        self.assertEqual(text, \"21.12.2010 13:30:00\")\n\n    def test_localized_dateTimeField_with_inputformat(self):\n        \"Localized DateTimeFields with manually specified input formats can accept those formats\"\n        f = forms.DateTimeField(input_formats=[\"%H.%M.%S %m.%d.%Y\", \"%H.%M %m-%d-%Y\"], localize=True)\n        # Parse a date in an unaccepted format; get an error\n        self.assertRaises(forms.ValidationError, f.clean, '2010-12-21 13:30:05')\n        self.assertRaises(forms.ValidationError, f.clean, '1:30:05 PM 21/12/2010')\n        self.assertRaises(forms.ValidationError, f.clean, '13:30:05 21.12.2010')\n\n        # Parse a date in a valid format, get a parsed result\n        result = f.clean('13.30.05 12.21.2010')\n        self.assertEqual(result, datetime(2010,12,21,13,30,5))\n\n        # # Check that the parsed result does a round trip to the same format\n        text = f.widget._format_value(result)\n        self.assertEqual(text, \"21.12.2010 13:30:05\")\n\n        # Parse a date in a valid format, get a parsed result\n        result = f.clean('13.30 12-21-2010')\n        self.assertEqual(result, datetime(2010,12,21,13,30))\n\n        # Check that the parsed result does a round trip to default format\n        text = f.widget._format_value(result)\n        self.assertEqual(text, \"21.12.2010 13:30:00\")\n\n\n@override_settings(DATETIME_INPUT_FORMATS=[\"%I:%M:%S %p %d/%m/%Y\", \"%I:%M %p %d-%m-%Y\"])\nclass CustomDateTimeInputFormatsTests(SimpleTestCase):\n    def test_dateTimeField(self):\n        \"DateTimeFields can parse dates in the default format\"\n        f = forms.DateTimeField()\n        # Parse a date in an unaccepted format; get an error\n        self.assertRaises(forms.ValidationError, f.clean, '2010-12-21 13:30:05')\n\n        # Parse a date in a valid format, get a parsed result\n        result = f.clean('1:30:05 PM 21/12/2010')\n        self.assertEqual(result, datetime(2010,12,21,13,30,5))\n\n        # Check that the parsed result does a round trip\n        text = f.widget._format_value(result)\n        self.assertEqual(text, '01:30:05 PM 21/12/2010')\n\n        # Parse a date in a valid, but non-default format, get a parsed result\n        result = f.clean('1:30 PM 21-12-2010')\n        self.assertEqual(result, datetime(2010,12,21,13,30))\n\n        # Check that the parsed result does a round trip to default format\n        text = f.widget._format_value(result)\n        self.assertEqual(text, \"01:30:00 PM 21/12/2010\")\n\n    def test_localized_dateTimeField(self):\n        \"Localized DateTimeFields act as unlocalized widgets\"\n        f = forms.DateTimeField(localize=True)\n        # Parse a date in an unaccepted format; get an error\n        self.assertRaises(forms.ValidationError, f.clean, '2010-12-21 13:30:05')\n\n        # Parse a date in a valid format, get a parsed result\n        result = f.clean('1:30:05 PM 21/12/2010')\n        self.assertEqual(result, datetime(2010,12,21,13,30,5))\n\n        # Check that the parsed result does a round trip to the same format\n        text = f.widget._format_value(result)\n        self.assertEqual(text, '01:30:05 PM 21/12/2010')\n\n        # Parse a date in a valid format, get a parsed result\n        result = f.clean('1:30 PM 21-12-2010')\n        self.assertEqual(result, datetime(2010,12,21,13,30))\n\n        # Check that the parsed result does a round trip to default format\n        text = f.widget._format_value(result)\n        self.assertEqual(text, \"01:30:00 PM 21/12/2010\")\n\n    def test_dateTimeField_with_inputformat(self):\n        \"DateTimeFields with manually specified input formats can accept those formats\"\n        f = forms.DateTimeField(input_formats=[\"%m.%d.%Y %H:%M:%S\", \"%m-%d-%Y %H:%M\"])\n        # Parse a date in an unaccepted format; get an error\n        self.assertRaises(forms.ValidationError, f.clean, '13:30:05 21.12.2010')\n        self.assertRaises(forms.ValidationError, f.clean, '2010-12-21 13:30:05')\n\n        # Parse a date in a valid format, get a parsed result\n        result = f.clean('12.21.2010 13:30:05')\n        self.assertEqual(result, datetime(2010,12,21,13,30,5))\n\n        # Check that the parsed result does a round trip to the same format\n        text = f.widget._format_value(result)\n        self.assertEqual(text, \"01:30:05 PM 21/12/2010\")\n\n        # Parse a date in a valid format, get a parsed result\n        result = f.clean('12-21-2010 13:30')\n        self.assertEqual(result, datetime(2010,12,21,13,30))\n\n        # Check that the parsed result does a round trip to default format\n        text = f.widget._format_value(result)\n        self.assertEqual(text, \"01:30:00 PM 21/12/2010\")\n\n    def test_localized_dateTimeField_with_inputformat(self):\n        \"Localized DateTimeFields with manually specified input formats can accept those formats\"\n        f = forms.DateTimeField(input_formats=[\"%m.%d.%Y %H:%M:%S\", \"%m-%d-%Y %H:%M\"], localize=True)\n        # Parse a date in an unaccepted format; get an error\n        self.assertRaises(forms.ValidationError, f.clean, '13:30:05 21.12.2010')\n        self.assertRaises(forms.ValidationError, f.clean, '2010-12-21 13:30:05')\n\n        # Parse a date in a valid format, get a parsed result\n        result = f.clean('12.21.2010 13:30:05')\n        self.assertEqual(result, datetime(2010,12,21,13,30,5))\n\n        # # Check that the parsed result does a round trip to the same format\n        text = f.widget._format_value(result)\n        self.assertEqual(text, \"01:30:05 PM 21/12/2010\")\n\n        # Parse a date in a valid format, get a parsed result\n        result = f.clean('12-21-2010 13:30')\n        self.assertEqual(result, datetime(2010,12,21,13,30))\n\n        # Check that the parsed result does a round trip to default format\n        text = f.widget._format_value(result)\n        self.assertEqual(text, \"01:30:00 PM 21/12/2010\")\n\nclass SimpleDateTimeFormatTests(SimpleTestCase):\n    def test_dateTimeField(self):\n        \"DateTimeFields can parse dates in the default format\"\n        f = forms.DateTimeField()\n        # Parse a date in an unaccepted format; get an error\n        self.assertRaises(forms.ValidationError, f.clean, '13:30:05 21.12.2010')\n\n        # Parse a date in a valid format, get a parsed result\n        result = f.clean('2010-12-21 13:30:05')\n        self.assertEqual(result, datetime(2010,12,21,13,30,5))\n\n        # Check that the parsed result does a round trip to the same format\n        text = f.widget._format_value(result)\n        self.assertEqual(text, \"2010-12-21 13:30:05\")\n\n        # Parse a date in a valid, but non-default format, get a parsed result\n        result = f.clean('12/21/2010 13:30:05')\n        self.assertEqual(result, datetime(2010,12,21,13,30,5))\n\n        # Check that the parsed result does a round trip to default format\n        text = f.widget._format_value(result)\n        self.assertEqual(text, \"2010-12-21 13:30:05\")\n\n    def test_localized_dateTimeField(self):\n        \"Localized DateTimeFields in a non-localized environment act as unlocalized widgets\"\n        f = forms.DateTimeField()\n        # Parse a date in an unaccepted format; get an error\n        self.assertRaises(forms.ValidationError, f.clean, '13:30:05 21.12.2010')\n\n        # Parse a date in a valid format, get a parsed result\n        result = f.clean('2010-12-21 13:30:05')\n        self.assertEqual(result, datetime(2010,12,21,13,30,5))\n\n        # Check that the parsed result does a round trip to the same format\n        text = f.widget._format_value(result)\n        self.assertEqual(text, \"2010-12-21 13:30:05\")\n\n        # Parse a date in a valid format, get a parsed result\n        result = f.clean('12/21/2010 13:30:05')\n        self.assertEqual(result, datetime(2010,12,21,13,30,5))\n\n        # Check that the parsed result does a round trip to default format\n        text = f.widget._format_value(result)\n        self.assertEqual(text, \"2010-12-21 13:30:05\")\n\n    def test_dateTimeField_with_inputformat(self):\n        \"DateTimeFields with manually specified input formats can accept those formats\"\n        f = forms.DateTimeField(input_formats=[\"%I:%M:%S %p %d.%m.%Y\", \"%I:%M %p %d-%m-%Y\"])\n        # Parse a date in an unaccepted format; get an error\n        self.assertRaises(forms.ValidationError, f.clean, '2010-12-21 13:30:05')\n\n        # Parse a date in a valid format, get a parsed result\n        result = f.clean('1:30:05 PM 21.12.2010')\n        self.assertEqual(result, datetime(2010,12,21,13,30,5))\n\n        # Check that the parsed result does a round trip to the same format\n        text = f.widget._format_value(result)\n        self.assertEqual(text, \"2010-12-21 13:30:05\")\n\n        # Parse a date in a valid format, get a parsed result\n        result = f.clean('1:30 PM 21-12-2010')\n        self.assertEqual(result, datetime(2010,12,21,13,30))\n\n        # Check that the parsed result does a round trip to default format\n        text = f.widget._format_value(result)\n        self.assertEqual(text, \"2010-12-21 13:30:00\")\n\n    def test_localized_dateTimeField_with_inputformat(self):\n        \"Localized DateTimeFields with manually specified input formats can accept those formats\"\n        f = forms.DateTimeField(input_formats=[\"%I:%M:%S %p %d.%m.%Y\", \"%I:%M %p %d-%m-%Y\"], localize=True)\n        # Parse a date in an unaccepted format; get an error\n        self.assertRaises(forms.ValidationError, f.clean, '2010-12-21 13:30:05')\n\n        # Parse a date in a valid format, get a parsed result\n        result = f.clean('1:30:05 PM 21.12.2010')\n        self.assertEqual(result, datetime(2010,12,21,13,30,5))\n\n        # Check that the parsed result does a round trip to the same format\n        text = f.widget._format_value(result)\n        self.assertEqual(text, \"2010-12-21 13:30:05\")\n\n        # Parse a date in a valid format, get a parsed result\n        result = f.clean('1:30 PM 21-12-2010')\n        self.assertEqual(result, datetime(2010,12,21,13,30))\n\n        # Check that the parsed result does a round trip to default format\n        text = f.widget._format_value(result)\n        self.assertEqual(text, \"2010-12-21 13:30:00\")\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/forms/tests/media.py",
    "content": "# -*- coding: utf-8 -*-\nfrom django.forms import TextInput, Media, TextInput, CharField, Form, MultiWidget\nfrom django.template import Template, Context\nfrom django.test import TestCase\nfrom django.test.utils import override_settings\n\n\n@override_settings(\n    STATIC_URL=None,\n    MEDIA_URL='http://media.example.com/media/',\n)\nclass FormsMediaTestCase(TestCase):\n    \"\"\"Tests for the media handling on widgets and forms\"\"\"\n\n    def test_construction(self):\n        # Check construction of media objects\n        m = Media(css={'all': ('path/to/css1','/path/to/css2')}, js=('/path/to/js1','http://media.other.com/path/to/js2','https://secure.other.com/path/to/js3'))\n        self.assertEqual(str(m), \"\"\"<link href=\"http://media.example.com/media/path/to/css1\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<link href=\"/path/to/css2\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"/path/to/js1\"></script>\n<script type=\"text/javascript\" src=\"http://media.other.com/path/to/js2\"></script>\n<script type=\"text/javascript\" src=\"https://secure.other.com/path/to/js3\"></script>\"\"\")\n\n        class Foo:\n            css = {\n               'all': ('path/to/css1','/path/to/css2')\n            }\n            js = ('/path/to/js1','http://media.other.com/path/to/js2','https://secure.other.com/path/to/js3')\n\n        m3 = Media(Foo)\n        self.assertEqual(str(m3), \"\"\"<link href=\"http://media.example.com/media/path/to/css1\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<link href=\"/path/to/css2\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"/path/to/js1\"></script>\n<script type=\"text/javascript\" src=\"http://media.other.com/path/to/js2\"></script>\n<script type=\"text/javascript\" src=\"https://secure.other.com/path/to/js3\"></script>\"\"\")\n\n        # A widget can exist without a media definition\n        class MyWidget(TextInput):\n            pass\n\n        w = MyWidget()\n        self.assertEqual(str(w.media), '')\n\n    def test_media_dsl(self):\n        ###############################################################\n        # DSL Class-based media definitions\n        ###############################################################\n\n        # A widget can define media if it needs to.\n        # Any absolute path will be preserved; relative paths are combined\n        # with the value of settings.MEDIA_URL\n        class MyWidget1(TextInput):\n            class Media:\n                css = {\n                   'all': ('path/to/css1','/path/to/css2')\n                }\n                js = ('/path/to/js1','http://media.other.com/path/to/js2','https://secure.other.com/path/to/js3')\n\n        w1 = MyWidget1()\n        self.assertEqual(str(w1.media), \"\"\"<link href=\"http://media.example.com/media/path/to/css1\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<link href=\"/path/to/css2\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"/path/to/js1\"></script>\n<script type=\"text/javascript\" src=\"http://media.other.com/path/to/js2\"></script>\n<script type=\"text/javascript\" src=\"https://secure.other.com/path/to/js3\"></script>\"\"\")\n\n        # Media objects can be interrogated by media type\n        self.assertEqual(str(w1.media['css']), \"\"\"<link href=\"http://media.example.com/media/path/to/css1\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<link href=\"/path/to/css2\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\"\"\")\n\n        self.assertEqual(str(w1.media['js']), \"\"\"<script type=\"text/javascript\" src=\"/path/to/js1\"></script>\n<script type=\"text/javascript\" src=\"http://media.other.com/path/to/js2\"></script>\n<script type=\"text/javascript\" src=\"https://secure.other.com/path/to/js3\"></script>\"\"\")\n\n    def test_combine_media(self):\n        # Media objects can be combined. Any given media resource will appear only\n        # once. Duplicated media definitions are ignored.\n        class MyWidget1(TextInput):\n            class Media:\n                css = {\n                   'all': ('path/to/css1','/path/to/css2')\n                }\n                js = ('/path/to/js1','http://media.other.com/path/to/js2','https://secure.other.com/path/to/js3')\n\n        class MyWidget2(TextInput):\n            class Media:\n                css = {\n                   'all': ('/path/to/css2','/path/to/css3')\n                }\n                js = ('/path/to/js1','/path/to/js4')\n\n        class MyWidget3(TextInput):\n            class Media:\n                css = {\n                   'all': ('/path/to/css3','path/to/css1')\n                }\n                js = ('/path/to/js1','/path/to/js4')\n\n        w1 = MyWidget1()\n        w2 = MyWidget2()\n        w3 = MyWidget3()\n        self.assertEqual(str(w1.media + w2.media + w3.media), \"\"\"<link href=\"http://media.example.com/media/path/to/css1\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<link href=\"/path/to/css2\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<link href=\"/path/to/css3\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"/path/to/js1\"></script>\n<script type=\"text/javascript\" src=\"http://media.other.com/path/to/js2\"></script>\n<script type=\"text/javascript\" src=\"https://secure.other.com/path/to/js3\"></script>\n<script type=\"text/javascript\" src=\"/path/to/js4\"></script>\"\"\")\n\n        # Check that media addition hasn't affected the original objects\n        self.assertEqual(str(w1.media), \"\"\"<link href=\"http://media.example.com/media/path/to/css1\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<link href=\"/path/to/css2\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"/path/to/js1\"></script>\n<script type=\"text/javascript\" src=\"http://media.other.com/path/to/js2\"></script>\n<script type=\"text/javascript\" src=\"https://secure.other.com/path/to/js3\"></script>\"\"\")\n\n        # Regression check for #12879: specifying the same CSS or JS file\n        # multiple times in a single Media instance should result in that file\n        # only being included once.\n        class MyWidget4(TextInput):\n            class Media:\n                css = {'all': ('/path/to/css1', '/path/to/css1')}\n                js = ('/path/to/js1', '/path/to/js1')\n\n        w4 = MyWidget4()\n        self.assertEqual(str(w4.media), \"\"\"<link href=\"/path/to/css1\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"/path/to/js1\"></script>\"\"\")\n\n    def test_media_property(self):\n        ###############################################################\n        # Property-based media definitions\n        ###############################################################\n\n        # Widget media can be defined as a property\n        class MyWidget4(TextInput):\n            def _media(self):\n                return Media(css={'all': ('/some/path',)}, js = ('/some/js',))\n            media = property(_media)\n\n        w4 = MyWidget4()\n        self.assertEqual(str(w4.media), \"\"\"<link href=\"/some/path\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"/some/js\"></script>\"\"\")\n\n        # Media properties can reference the media of their parents\n        class MyWidget5(MyWidget4):\n            def _media(self):\n                return super(MyWidget5, self).media + Media(css={'all': ('/other/path',)}, js = ('/other/js',))\n            media = property(_media)\n\n        w5 = MyWidget5()\n        self.assertEqual(str(w5.media), \"\"\"<link href=\"/some/path\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<link href=\"/other/path\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"/some/js\"></script>\n<script type=\"text/javascript\" src=\"/other/js\"></script>\"\"\")\n\n    def test_media_property_parent_references(self):\n        # Media properties can reference the media of their parents,\n        # even if the parent media was defined using a class\n        class MyWidget1(TextInput):\n            class Media:\n                css = {\n                   'all': ('path/to/css1','/path/to/css2')\n                }\n                js = ('/path/to/js1','http://media.other.com/path/to/js2','https://secure.other.com/path/to/js3')\n\n        class MyWidget6(MyWidget1):\n            def _media(self):\n                return super(MyWidget6, self).media + Media(css={'all': ('/other/path',)}, js = ('/other/js',))\n            media = property(_media)\n\n        w6 = MyWidget6()\n        self.assertEqual(str(w6.media), \"\"\"<link href=\"http://media.example.com/media/path/to/css1\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<link href=\"/path/to/css2\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<link href=\"/other/path\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"/path/to/js1\"></script>\n<script type=\"text/javascript\" src=\"http://media.other.com/path/to/js2\"></script>\n<script type=\"text/javascript\" src=\"https://secure.other.com/path/to/js3\"></script>\n<script type=\"text/javascript\" src=\"/other/js\"></script>\"\"\")\n\n    def test_media_inheritance(self):\n        ###############################################################\n        # Inheritance of media\n        ###############################################################\n\n        # If a widget extends another but provides no media definition, it inherits the parent widget's media\n        class MyWidget1(TextInput):\n            class Media:\n                css = {\n                   'all': ('path/to/css1','/path/to/css2')\n                }\n                js = ('/path/to/js1','http://media.other.com/path/to/js2','https://secure.other.com/path/to/js3')\n\n        class MyWidget7(MyWidget1):\n            pass\n\n        w7 = MyWidget7()\n        self.assertEqual(str(w7.media), \"\"\"<link href=\"http://media.example.com/media/path/to/css1\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<link href=\"/path/to/css2\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"/path/to/js1\"></script>\n<script type=\"text/javascript\" src=\"http://media.other.com/path/to/js2\"></script>\n<script type=\"text/javascript\" src=\"https://secure.other.com/path/to/js3\"></script>\"\"\")\n\n        # If a widget extends another but defines media, it extends the parent widget's media by default\n        class MyWidget8(MyWidget1):\n            class Media:\n                css = {\n                   'all': ('/path/to/css3','path/to/css1')\n                }\n                js = ('/path/to/js1','/path/to/js4')\n\n        w8 = MyWidget8()\n        self.assertEqual(str(w8.media), \"\"\"<link href=\"http://media.example.com/media/path/to/css1\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<link href=\"/path/to/css2\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<link href=\"/path/to/css3\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"/path/to/js1\"></script>\n<script type=\"text/javascript\" src=\"http://media.other.com/path/to/js2\"></script>\n<script type=\"text/javascript\" src=\"https://secure.other.com/path/to/js3\"></script>\n<script type=\"text/javascript\" src=\"/path/to/js4\"></script>\"\"\")\n\n    def test_media_inheritance_from_property(self):\n        # If a widget extends another but defines media, it extends the parents widget's media,\n        # even if the parent defined media using a property.\n        class MyWidget1(TextInput):\n            class Media:\n                css = {\n                   'all': ('path/to/css1','/path/to/css2')\n                }\n                js = ('/path/to/js1','http://media.other.com/path/to/js2','https://secure.other.com/path/to/js3')\n\n        class MyWidget4(TextInput):\n            def _media(self):\n                return Media(css={'all': ('/some/path',)}, js = ('/some/js',))\n            media = property(_media)\n\n        class MyWidget9(MyWidget4):\n            class Media:\n                css = {\n                    'all': ('/other/path',)\n                }\n                js = ('/other/js',)\n\n        w9 = MyWidget9()\n        self.assertEqual(str(w9.media), \"\"\"<link href=\"/some/path\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<link href=\"/other/path\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"/some/js\"></script>\n<script type=\"text/javascript\" src=\"/other/js\"></script>\"\"\")\n\n        # A widget can disable media inheritance by specifying 'extend=False'\n        class MyWidget10(MyWidget1):\n            class Media:\n                extend = False\n                css = {\n                   'all': ('/path/to/css3','path/to/css1')\n                }\n                js = ('/path/to/js1','/path/to/js4')\n\n        w10 = MyWidget10()\n        self.assertEqual(str(w10.media), \"\"\"<link href=\"/path/to/css3\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<link href=\"http://media.example.com/media/path/to/css1\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"/path/to/js1\"></script>\n<script type=\"text/javascript\" src=\"/path/to/js4\"></script>\"\"\")\n\n    def test_media_inheritance_extends(self):\n        # A widget can explicitly enable full media inheritance by specifying 'extend=True'\n        class MyWidget1(TextInput):\n            class Media:\n                css = {\n                   'all': ('path/to/css1','/path/to/css2')\n                }\n                js = ('/path/to/js1','http://media.other.com/path/to/js2','https://secure.other.com/path/to/js3')\n\n        class MyWidget11(MyWidget1):\n            class Media:\n                extend = True\n                css = {\n                   'all': ('/path/to/css3','path/to/css1')\n                }\n                js = ('/path/to/js1','/path/to/js4')\n\n        w11 = MyWidget11()\n        self.assertEqual(str(w11.media), \"\"\"<link href=\"http://media.example.com/media/path/to/css1\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<link href=\"/path/to/css2\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<link href=\"/path/to/css3\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"/path/to/js1\"></script>\n<script type=\"text/javascript\" src=\"http://media.other.com/path/to/js2\"></script>\n<script type=\"text/javascript\" src=\"https://secure.other.com/path/to/js3\"></script>\n<script type=\"text/javascript\" src=\"/path/to/js4\"></script>\"\"\")\n\n    def test_media_inheritance_single_type(self):\n        # A widget can enable inheritance of one media type by specifying extend as a tuple\n        class MyWidget1(TextInput):\n            class Media:\n                css = {\n                   'all': ('path/to/css1','/path/to/css2')\n                }\n                js = ('/path/to/js1','http://media.other.com/path/to/js2','https://secure.other.com/path/to/js3')\n\n        class MyWidget12(MyWidget1):\n            class Media:\n                extend = ('css',)\n                css = {\n                   'all': ('/path/to/css3','path/to/css1')\n                }\n                js = ('/path/to/js1','/path/to/js4')\n\n        w12 = MyWidget12()\n        self.assertEqual(str(w12.media), \"\"\"<link href=\"http://media.example.com/media/path/to/css1\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<link href=\"/path/to/css2\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<link href=\"/path/to/css3\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"/path/to/js1\"></script>\n<script type=\"text/javascript\" src=\"/path/to/js4\"></script>\"\"\")\n\n    def test_multi_media(self):\n        ###############################################################\n        # Multi-media handling for CSS\n        ###############################################################\n\n        # A widget can define CSS media for multiple output media types\n        class MultimediaWidget(TextInput):\n            class Media:\n                css = {\n                   'screen, print': ('/file1','/file2'),\n                   'screen': ('/file3',),\n                   'print': ('/file4',)\n                }\n                js = ('/path/to/js1','/path/to/js4')\n\n        multimedia = MultimediaWidget()\n        self.assertEqual(str(multimedia.media), \"\"\"<link href=\"/file4\" type=\"text/css\" media=\"print\" rel=\"stylesheet\" />\n<link href=\"/file3\" type=\"text/css\" media=\"screen\" rel=\"stylesheet\" />\n<link href=\"/file1\" type=\"text/css\" media=\"screen, print\" rel=\"stylesheet\" />\n<link href=\"/file2\" type=\"text/css\" media=\"screen, print\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"/path/to/js1\"></script>\n<script type=\"text/javascript\" src=\"/path/to/js4\"></script>\"\"\")\n\n    def test_multi_widget(self):\n        ###############################################################\n        # Multiwidget media handling\n        ###############################################################\n\n        class MyWidget1(TextInput):\n            class Media:\n                css = {\n                   'all': ('path/to/css1','/path/to/css2')\n                }\n                js = ('/path/to/js1','http://media.other.com/path/to/js2','https://secure.other.com/path/to/js3')\n\n        class MyWidget2(TextInput):\n            class Media:\n                css = {\n                   'all': ('/path/to/css2','/path/to/css3')\n                }\n                js = ('/path/to/js1','/path/to/js4')\n\n        class MyWidget3(TextInput):\n            class Media:\n                css = {\n                   'all': ('/path/to/css3','path/to/css1')\n                }\n                js = ('/path/to/js1','/path/to/js4')\n\n        # MultiWidgets have a default media definition that gets all the\n        # media from the component widgets\n        class MyMultiWidget(MultiWidget):\n            def __init__(self, attrs=None):\n                widgets = [MyWidget1, MyWidget2, MyWidget3]\n                super(MyMultiWidget, self).__init__(widgets, attrs)\n\n        mymulti = MyMultiWidget()\n        self.assertEqual(str(mymulti.media), \"\"\"<link href=\"http://media.example.com/media/path/to/css1\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<link href=\"/path/to/css2\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<link href=\"/path/to/css3\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"/path/to/js1\"></script>\n<script type=\"text/javascript\" src=\"http://media.other.com/path/to/js2\"></script>\n<script type=\"text/javascript\" src=\"https://secure.other.com/path/to/js3\"></script>\n<script type=\"text/javascript\" src=\"/path/to/js4\"></script>\"\"\")\n\n    def test_form_media(self):\n        ###############################################################\n        # Media processing for forms\n        ###############################################################\n\n        class MyWidget1(TextInput):\n            class Media:\n                css = {\n                   'all': ('path/to/css1','/path/to/css2')\n                }\n                js = ('/path/to/js1','http://media.other.com/path/to/js2','https://secure.other.com/path/to/js3')\n\n        class MyWidget2(TextInput):\n            class Media:\n                css = {\n                   'all': ('/path/to/css2','/path/to/css3')\n                }\n                js = ('/path/to/js1','/path/to/js4')\n\n        class MyWidget3(TextInput):\n            class Media:\n                css = {\n                   'all': ('/path/to/css3','path/to/css1')\n                }\n                js = ('/path/to/js1','/path/to/js4')\n\n        # You can ask a form for the media required by its widgets.\n        class MyForm(Form):\n            field1 = CharField(max_length=20, widget=MyWidget1())\n            field2 = CharField(max_length=20, widget=MyWidget2())\n        f1 = MyForm()\n        self.assertEqual(str(f1.media), \"\"\"<link href=\"http://media.example.com/media/path/to/css1\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<link href=\"/path/to/css2\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<link href=\"/path/to/css3\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"/path/to/js1\"></script>\n<script type=\"text/javascript\" src=\"http://media.other.com/path/to/js2\"></script>\n<script type=\"text/javascript\" src=\"https://secure.other.com/path/to/js3\"></script>\n<script type=\"text/javascript\" src=\"/path/to/js4\"></script>\"\"\")\n\n        # Form media can be combined to produce a single media definition.\n        class AnotherForm(Form):\n            field3 = CharField(max_length=20, widget=MyWidget3())\n        f2 = AnotherForm()\n        self.assertEqual(str(f1.media + f2.media), \"\"\"<link href=\"http://media.example.com/media/path/to/css1\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<link href=\"/path/to/css2\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<link href=\"/path/to/css3\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"/path/to/js1\"></script>\n<script type=\"text/javascript\" src=\"http://media.other.com/path/to/js2\"></script>\n<script type=\"text/javascript\" src=\"https://secure.other.com/path/to/js3\"></script>\n<script type=\"text/javascript\" src=\"/path/to/js4\"></script>\"\"\")\n\n        # Forms can also define media, following the same rules as widgets.\n        class FormWithMedia(Form):\n            field1 = CharField(max_length=20, widget=MyWidget1())\n            field2 = CharField(max_length=20, widget=MyWidget2())\n            class Media:\n                js = ('/some/form/javascript',)\n                css = {\n                    'all': ('/some/form/css',)\n                }\n        f3 = FormWithMedia()\n        self.assertEqual(str(f3.media), \"\"\"<link href=\"http://media.example.com/media/path/to/css1\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<link href=\"/path/to/css2\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<link href=\"/path/to/css3\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<link href=\"/some/form/css\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"/path/to/js1\"></script>\n<script type=\"text/javascript\" src=\"http://media.other.com/path/to/js2\"></script>\n<script type=\"text/javascript\" src=\"https://secure.other.com/path/to/js3\"></script>\n<script type=\"text/javascript\" src=\"/path/to/js4\"></script>\n<script type=\"text/javascript\" src=\"/some/form/javascript\"></script>\"\"\")\n\n        # Media works in templates\n        self.assertEqual(Template(\"{{ form.media.js }}{{ form.media.css }}\").render(Context({'form': f3})), \"\"\"<script type=\"text/javascript\" src=\"/path/to/js1\"></script>\n<script type=\"text/javascript\" src=\"http://media.other.com/path/to/js2\"></script>\n<script type=\"text/javascript\" src=\"https://secure.other.com/path/to/js3\"></script>\n<script type=\"text/javascript\" src=\"/path/to/js4\"></script>\n<script type=\"text/javascript\" src=\"/some/form/javascript\"></script><link href=\"http://media.example.com/media/path/to/css1\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<link href=\"/path/to/css2\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<link href=\"/path/to/css3\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<link href=\"/some/form/css\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\"\"\")\n\n\n@override_settings(\n    STATIC_URL='http://media.example.com/static/',\n    MEDIA_URL='http://media.example.com/media/',\n)\nclass StaticFormsMediaTestCase(TestCase):\n    \"\"\"Tests for the media handling on widgets and forms\"\"\"\n\n    def test_construction(self):\n        # Check construction of media objects\n        m = Media(css={'all': ('path/to/css1','/path/to/css2')}, js=('/path/to/js1','http://media.other.com/path/to/js2','https://secure.other.com/path/to/js3'))\n        self.assertEqual(str(m), \"\"\"<link href=\"http://media.example.com/static/path/to/css1\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<link href=\"/path/to/css2\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"/path/to/js1\"></script>\n<script type=\"text/javascript\" src=\"http://media.other.com/path/to/js2\"></script>\n<script type=\"text/javascript\" src=\"https://secure.other.com/path/to/js3\"></script>\"\"\")\n\n        class Foo:\n            css = {\n               'all': ('path/to/css1','/path/to/css2')\n            }\n            js = ('/path/to/js1','http://media.other.com/path/to/js2','https://secure.other.com/path/to/js3')\n\n        m3 = Media(Foo)\n        self.assertEqual(str(m3), \"\"\"<link href=\"http://media.example.com/static/path/to/css1\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<link href=\"/path/to/css2\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"/path/to/js1\"></script>\n<script type=\"text/javascript\" src=\"http://media.other.com/path/to/js2\"></script>\n<script type=\"text/javascript\" src=\"https://secure.other.com/path/to/js3\"></script>\"\"\")\n\n        # A widget can exist without a media definition\n        class MyWidget(TextInput):\n            pass\n\n        w = MyWidget()\n        self.assertEqual(str(w.media), '')\n\n    def test_media_dsl(self):\n        ###############################################################\n        # DSL Class-based media definitions\n        ###############################################################\n\n        # A widget can define media if it needs to.\n        # Any absolute path will be preserved; relative paths are combined\n        # with the value of settings.MEDIA_URL\n        class MyWidget1(TextInput):\n            class Media:\n                css = {\n                   'all': ('path/to/css1','/path/to/css2')\n                }\n                js = ('/path/to/js1','http://media.other.com/path/to/js2','https://secure.other.com/path/to/js3')\n\n        w1 = MyWidget1()\n        self.assertEqual(str(w1.media), \"\"\"<link href=\"http://media.example.com/static/path/to/css1\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<link href=\"/path/to/css2\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"/path/to/js1\"></script>\n<script type=\"text/javascript\" src=\"http://media.other.com/path/to/js2\"></script>\n<script type=\"text/javascript\" src=\"https://secure.other.com/path/to/js3\"></script>\"\"\")\n\n        # Media objects can be interrogated by media type\n        self.assertEqual(str(w1.media['css']), \"\"\"<link href=\"http://media.example.com/static/path/to/css1\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<link href=\"/path/to/css2\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\"\"\")\n\n        self.assertEqual(str(w1.media['js']), \"\"\"<script type=\"text/javascript\" src=\"/path/to/js1\"></script>\n<script type=\"text/javascript\" src=\"http://media.other.com/path/to/js2\"></script>\n<script type=\"text/javascript\" src=\"https://secure.other.com/path/to/js3\"></script>\"\"\")\n\n    def test_combine_media(self):\n        # Media objects can be combined. Any given media resource will appear only\n        # once. Duplicated media definitions are ignored.\n        class MyWidget1(TextInput):\n            class Media:\n                css = {\n                   'all': ('path/to/css1','/path/to/css2')\n                }\n                js = ('/path/to/js1','http://media.other.com/path/to/js2','https://secure.other.com/path/to/js3')\n\n        class MyWidget2(TextInput):\n            class Media:\n                css = {\n                   'all': ('/path/to/css2','/path/to/css3')\n                }\n                js = ('/path/to/js1','/path/to/js4')\n\n        class MyWidget3(TextInput):\n            class Media:\n                css = {\n                   'all': ('/path/to/css3','path/to/css1')\n                }\n                js = ('/path/to/js1','/path/to/js4')\n\n        w1 = MyWidget1()\n        w2 = MyWidget2()\n        w3 = MyWidget3()\n        self.assertEqual(str(w1.media + w2.media + w3.media), \"\"\"<link href=\"http://media.example.com/static/path/to/css1\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<link href=\"/path/to/css2\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<link href=\"/path/to/css3\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"/path/to/js1\"></script>\n<script type=\"text/javascript\" src=\"http://media.other.com/path/to/js2\"></script>\n<script type=\"text/javascript\" src=\"https://secure.other.com/path/to/js3\"></script>\n<script type=\"text/javascript\" src=\"/path/to/js4\"></script>\"\"\")\n\n        # Check that media addition hasn't affected the original objects\n        self.assertEqual(str(w1.media), \"\"\"<link href=\"http://media.example.com/static/path/to/css1\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<link href=\"/path/to/css2\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"/path/to/js1\"></script>\n<script type=\"text/javascript\" src=\"http://media.other.com/path/to/js2\"></script>\n<script type=\"text/javascript\" src=\"https://secure.other.com/path/to/js3\"></script>\"\"\")\n\n        # Regression check for #12879: specifying the same CSS or JS file\n        # multiple times in a single Media instance should result in that file\n        # only being included once.\n        class MyWidget4(TextInput):\n            class Media:\n                css = {'all': ('/path/to/css1', '/path/to/css1')}\n                js = ('/path/to/js1', '/path/to/js1')\n\n        w4 = MyWidget4()\n        self.assertEqual(str(w4.media), \"\"\"<link href=\"/path/to/css1\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"/path/to/js1\"></script>\"\"\")\n\n    def test_media_property(self):\n        ###############################################################\n        # Property-based media definitions\n        ###############################################################\n\n        # Widget media can be defined as a property\n        class MyWidget4(TextInput):\n            def _media(self):\n                return Media(css={'all': ('/some/path',)}, js = ('/some/js',))\n            media = property(_media)\n\n        w4 = MyWidget4()\n        self.assertEqual(str(w4.media), \"\"\"<link href=\"/some/path\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"/some/js\"></script>\"\"\")\n\n        # Media properties can reference the media of their parents\n        class MyWidget5(MyWidget4):\n            def _media(self):\n                return super(MyWidget5, self).media + Media(css={'all': ('/other/path',)}, js = ('/other/js',))\n            media = property(_media)\n\n        w5 = MyWidget5()\n        self.assertEqual(str(w5.media), \"\"\"<link href=\"/some/path\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<link href=\"/other/path\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"/some/js\"></script>\n<script type=\"text/javascript\" src=\"/other/js\"></script>\"\"\")\n\n    def test_media_property_parent_references(self):\n        # Media properties can reference the media of their parents,\n        # even if the parent media was defined using a class\n        class MyWidget1(TextInput):\n            class Media:\n                css = {\n                   'all': ('path/to/css1','/path/to/css2')\n                }\n                js = ('/path/to/js1','http://media.other.com/path/to/js2','https://secure.other.com/path/to/js3')\n\n        class MyWidget6(MyWidget1):\n            def _media(self):\n                return super(MyWidget6, self).media + Media(css={'all': ('/other/path',)}, js = ('/other/js',))\n            media = property(_media)\n\n        w6 = MyWidget6()\n        self.assertEqual(str(w6.media), \"\"\"<link href=\"http://media.example.com/static/path/to/css1\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<link href=\"/path/to/css2\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<link href=\"/other/path\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"/path/to/js1\"></script>\n<script type=\"text/javascript\" src=\"http://media.other.com/path/to/js2\"></script>\n<script type=\"text/javascript\" src=\"https://secure.other.com/path/to/js3\"></script>\n<script type=\"text/javascript\" src=\"/other/js\"></script>\"\"\")\n\n    def test_media_inheritance(self):\n        ###############################################################\n        # Inheritance of media\n        ###############################################################\n\n        # If a widget extends another but provides no media definition, it inherits the parent widget's media\n        class MyWidget1(TextInput):\n            class Media:\n                css = {\n                   'all': ('path/to/css1','/path/to/css2')\n                }\n                js = ('/path/to/js1','http://media.other.com/path/to/js2','https://secure.other.com/path/to/js3')\n\n        class MyWidget7(MyWidget1):\n            pass\n\n        w7 = MyWidget7()\n        self.assertEqual(str(w7.media), \"\"\"<link href=\"http://media.example.com/static/path/to/css1\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<link href=\"/path/to/css2\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"/path/to/js1\"></script>\n<script type=\"text/javascript\" src=\"http://media.other.com/path/to/js2\"></script>\n<script type=\"text/javascript\" src=\"https://secure.other.com/path/to/js3\"></script>\"\"\")\n\n        # If a widget extends another but defines media, it extends the parent widget's media by default\n        class MyWidget8(MyWidget1):\n            class Media:\n                css = {\n                   'all': ('/path/to/css3','path/to/css1')\n                }\n                js = ('/path/to/js1','/path/to/js4')\n\n        w8 = MyWidget8()\n        self.assertEqual(str(w8.media), \"\"\"<link href=\"http://media.example.com/static/path/to/css1\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<link href=\"/path/to/css2\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<link href=\"/path/to/css3\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"/path/to/js1\"></script>\n<script type=\"text/javascript\" src=\"http://media.other.com/path/to/js2\"></script>\n<script type=\"text/javascript\" src=\"https://secure.other.com/path/to/js3\"></script>\n<script type=\"text/javascript\" src=\"/path/to/js4\"></script>\"\"\")\n\n    def test_media_inheritance_from_property(self):\n        # If a widget extends another but defines media, it extends the parents widget's media,\n        # even if the parent defined media using a property.\n        class MyWidget1(TextInput):\n            class Media:\n                css = {\n                   'all': ('path/to/css1','/path/to/css2')\n                }\n                js = ('/path/to/js1','http://media.other.com/path/to/js2','https://secure.other.com/path/to/js3')\n\n        class MyWidget4(TextInput):\n            def _media(self):\n                return Media(css={'all': ('/some/path',)}, js = ('/some/js',))\n            media = property(_media)\n\n        class MyWidget9(MyWidget4):\n            class Media:\n                css = {\n                    'all': ('/other/path',)\n                }\n                js = ('/other/js',)\n\n        w9 = MyWidget9()\n        self.assertEqual(str(w9.media), \"\"\"<link href=\"/some/path\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<link href=\"/other/path\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"/some/js\"></script>\n<script type=\"text/javascript\" src=\"/other/js\"></script>\"\"\")\n\n        # A widget can disable media inheritance by specifying 'extend=False'\n        class MyWidget10(MyWidget1):\n            class Media:\n                extend = False\n                css = {\n                   'all': ('/path/to/css3','path/to/css1')\n                }\n                js = ('/path/to/js1','/path/to/js4')\n\n        w10 = MyWidget10()\n        self.assertEqual(str(w10.media), \"\"\"<link href=\"/path/to/css3\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<link href=\"http://media.example.com/static/path/to/css1\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"/path/to/js1\"></script>\n<script type=\"text/javascript\" src=\"/path/to/js4\"></script>\"\"\")\n\n    def test_media_inheritance_extends(self):\n        # A widget can explicitly enable full media inheritance by specifying 'extend=True'\n        class MyWidget1(TextInput):\n            class Media:\n                css = {\n                   'all': ('path/to/css1','/path/to/css2')\n                }\n                js = ('/path/to/js1','http://media.other.com/path/to/js2','https://secure.other.com/path/to/js3')\n\n        class MyWidget11(MyWidget1):\n            class Media:\n                extend = True\n                css = {\n                   'all': ('/path/to/css3','path/to/css1')\n                }\n                js = ('/path/to/js1','/path/to/js4')\n\n        w11 = MyWidget11()\n        self.assertEqual(str(w11.media), \"\"\"<link href=\"http://media.example.com/static/path/to/css1\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<link href=\"/path/to/css2\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<link href=\"/path/to/css3\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"/path/to/js1\"></script>\n<script type=\"text/javascript\" src=\"http://media.other.com/path/to/js2\"></script>\n<script type=\"text/javascript\" src=\"https://secure.other.com/path/to/js3\"></script>\n<script type=\"text/javascript\" src=\"/path/to/js4\"></script>\"\"\")\n\n    def test_media_inheritance_single_type(self):\n        # A widget can enable inheritance of one media type by specifying extend as a tuple\n        class MyWidget1(TextInput):\n            class Media:\n                css = {\n                   'all': ('path/to/css1','/path/to/css2')\n                }\n                js = ('/path/to/js1','http://media.other.com/path/to/js2','https://secure.other.com/path/to/js3')\n\n        class MyWidget12(MyWidget1):\n            class Media:\n                extend = ('css',)\n                css = {\n                   'all': ('/path/to/css3','path/to/css1')\n                }\n                js = ('/path/to/js1','/path/to/js4')\n\n        w12 = MyWidget12()\n        self.assertEqual(str(w12.media), \"\"\"<link href=\"http://media.example.com/static/path/to/css1\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<link href=\"/path/to/css2\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<link href=\"/path/to/css3\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"/path/to/js1\"></script>\n<script type=\"text/javascript\" src=\"/path/to/js4\"></script>\"\"\")\n\n    def test_multi_media(self):\n        ###############################################################\n        # Multi-media handling for CSS\n        ###############################################################\n\n        # A widget can define CSS media for multiple output media types\n        class MultimediaWidget(TextInput):\n            class Media:\n                css = {\n                   'screen, print': ('/file1','/file2'),\n                   'screen': ('/file3',),\n                   'print': ('/file4',)\n                }\n                js = ('/path/to/js1','/path/to/js4')\n\n        multimedia = MultimediaWidget()\n        self.assertEqual(str(multimedia.media), \"\"\"<link href=\"/file4\" type=\"text/css\" media=\"print\" rel=\"stylesheet\" />\n<link href=\"/file3\" type=\"text/css\" media=\"screen\" rel=\"stylesheet\" />\n<link href=\"/file1\" type=\"text/css\" media=\"screen, print\" rel=\"stylesheet\" />\n<link href=\"/file2\" type=\"text/css\" media=\"screen, print\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"/path/to/js1\"></script>\n<script type=\"text/javascript\" src=\"/path/to/js4\"></script>\"\"\")\n\n    def test_multi_widget(self):\n        ###############################################################\n        # Multiwidget media handling\n        ###############################################################\n\n        class MyWidget1(TextInput):\n            class Media:\n                css = {\n                   'all': ('path/to/css1','/path/to/css2')\n                }\n                js = ('/path/to/js1','http://media.other.com/path/to/js2','https://secure.other.com/path/to/js3')\n\n        class MyWidget2(TextInput):\n            class Media:\n                css = {\n                   'all': ('/path/to/css2','/path/to/css3')\n                }\n                js = ('/path/to/js1','/path/to/js4')\n\n        class MyWidget3(TextInput):\n            class Media:\n                css = {\n                   'all': ('/path/to/css3','path/to/css1')\n                }\n                js = ('/path/to/js1','/path/to/js4')\n\n        # MultiWidgets have a default media definition that gets all the\n        # media from the component widgets\n        class MyMultiWidget(MultiWidget):\n            def __init__(self, attrs=None):\n                widgets = [MyWidget1, MyWidget2, MyWidget3]\n                super(MyMultiWidget, self).__init__(widgets, attrs)\n\n        mymulti = MyMultiWidget()\n        self.assertEqual(str(mymulti.media), \"\"\"<link href=\"http://media.example.com/static/path/to/css1\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<link href=\"/path/to/css2\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<link href=\"/path/to/css3\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"/path/to/js1\"></script>\n<script type=\"text/javascript\" src=\"http://media.other.com/path/to/js2\"></script>\n<script type=\"text/javascript\" src=\"https://secure.other.com/path/to/js3\"></script>\n<script type=\"text/javascript\" src=\"/path/to/js4\"></script>\"\"\")\n\n    def test_form_media(self):\n        ###############################################################\n        # Media processing for forms\n        ###############################################################\n\n        class MyWidget1(TextInput):\n            class Media:\n                css = {\n                   'all': ('path/to/css1','/path/to/css2')\n                }\n                js = ('/path/to/js1','http://media.other.com/path/to/js2','https://secure.other.com/path/to/js3')\n\n        class MyWidget2(TextInput):\n            class Media:\n                css = {\n                   'all': ('/path/to/css2','/path/to/css3')\n                }\n                js = ('/path/to/js1','/path/to/js4')\n\n        class MyWidget3(TextInput):\n            class Media:\n                css = {\n                   'all': ('/path/to/css3','path/to/css1')\n                }\n                js = ('/path/to/js1','/path/to/js4')\n\n        # You can ask a form for the media required by its widgets.\n        class MyForm(Form):\n            field1 = CharField(max_length=20, widget=MyWidget1())\n            field2 = CharField(max_length=20, widget=MyWidget2())\n        f1 = MyForm()\n        self.assertEqual(str(f1.media), \"\"\"<link href=\"http://media.example.com/static/path/to/css1\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<link href=\"/path/to/css2\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<link href=\"/path/to/css3\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"/path/to/js1\"></script>\n<script type=\"text/javascript\" src=\"http://media.other.com/path/to/js2\"></script>\n<script type=\"text/javascript\" src=\"https://secure.other.com/path/to/js3\"></script>\n<script type=\"text/javascript\" src=\"/path/to/js4\"></script>\"\"\")\n\n        # Form media can be combined to produce a single media definition.\n        class AnotherForm(Form):\n            field3 = CharField(max_length=20, widget=MyWidget3())\n        f2 = AnotherForm()\n        self.assertEqual(str(f1.media + f2.media), \"\"\"<link href=\"http://media.example.com/static/path/to/css1\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<link href=\"/path/to/css2\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<link href=\"/path/to/css3\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"/path/to/js1\"></script>\n<script type=\"text/javascript\" src=\"http://media.other.com/path/to/js2\"></script>\n<script type=\"text/javascript\" src=\"https://secure.other.com/path/to/js3\"></script>\n<script type=\"text/javascript\" src=\"/path/to/js4\"></script>\"\"\")\n\n        # Forms can also define media, following the same rules as widgets.\n        class FormWithMedia(Form):\n            field1 = CharField(max_length=20, widget=MyWidget1())\n            field2 = CharField(max_length=20, widget=MyWidget2())\n            class Media:\n                js = ('/some/form/javascript',)\n                css = {\n                    'all': ('/some/form/css',)\n                }\n        f3 = FormWithMedia()\n        self.assertEqual(str(f3.media), \"\"\"<link href=\"http://media.example.com/static/path/to/css1\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<link href=\"/path/to/css2\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<link href=\"/path/to/css3\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<link href=\"/some/form/css\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<script type=\"text/javascript\" src=\"/path/to/js1\"></script>\n<script type=\"text/javascript\" src=\"http://media.other.com/path/to/js2\"></script>\n<script type=\"text/javascript\" src=\"https://secure.other.com/path/to/js3\"></script>\n<script type=\"text/javascript\" src=\"/path/to/js4\"></script>\n<script type=\"text/javascript\" src=\"/some/form/javascript\"></script>\"\"\")\n\n        # Media works in templates\n        self.assertEqual(Template(\"{{ form.media.js }}{{ form.media.css }}\").render(Context({'form': f3})), \"\"\"<script type=\"text/javascript\" src=\"/path/to/js1\"></script>\n<script type=\"text/javascript\" src=\"http://media.other.com/path/to/js2\"></script>\n<script type=\"text/javascript\" src=\"https://secure.other.com/path/to/js3\"></script>\n<script type=\"text/javascript\" src=\"/path/to/js4\"></script>\n<script type=\"text/javascript\" src=\"/some/form/javascript\"></script><link href=\"http://media.example.com/static/path/to/css1\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<link href=\"/path/to/css2\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<link href=\"/path/to/css3\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\n<link href=\"/some/form/css\" type=\"text/css\" media=\"all\" rel=\"stylesheet\" />\"\"\")\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/forms/tests/models.py",
    "content": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import, unicode_literals\n\nimport datetime\n\nfrom django.core.files.uploadedfile import SimpleUploadedFile\nfrom django.db import models\nfrom django.forms import Form, ModelForm, FileField, ModelChoiceField\nfrom django.forms.models import ModelFormMetaclass\nfrom django.test import TestCase\nfrom django.utils import six\n\nfrom ..models import (ChoiceOptionModel, ChoiceFieldModel, FileModel, Group,\n    BoundaryModel, Defaults, OptionalMultiChoiceModel)\n\n\nclass ChoiceFieldForm(ModelForm):\n    class Meta:\n        model = ChoiceFieldModel\n\n\nclass OptionalMultiChoiceModelForm(ModelForm):\n    class Meta:\n        model = OptionalMultiChoiceModel\n\n\nclass FileForm(Form):\n    file1 = FileField()\n\n\nclass TestTicket12510(TestCase):\n    ''' It is not necessary to generate choices for ModelChoiceField (regression test for #12510). '''\n    def setUp(self):\n        self.groups = [Group.objects.create(name=name) for name in 'abc']\n\n    def test_choices_not_fetched_when_not_rendering(self):\n        # only one query is required to pull the model from DB\n        with self.assertNumQueries(1):\n            field = ModelChoiceField(Group.objects.order_by('-name'))\n            self.assertEqual('a', field.clean(self.groups[0].pk).name)\n\n\nclass TestTicket14567(TestCase):\n    \"\"\"\n    Check that the return values of ModelMultipleChoiceFields are QuerySets\n    \"\"\"\n    def test_empty_queryset_return(self):\n        \"If a model's ManyToManyField has blank=True and is saved with no data, a queryset is returned.\"\n        form = OptionalMultiChoiceModelForm({'multi_choice_optional': '', 'multi_choice': ['1']})\n        self.assertTrue(form.is_valid())\n        # Check that the empty value is a QuerySet\n        self.assertTrue(isinstance(form.cleaned_data['multi_choice_optional'], models.query.QuerySet))\n        # While we're at it, test whether a QuerySet is returned if there *is* a value.\n        self.assertTrue(isinstance(form.cleaned_data['multi_choice'], models.query.QuerySet))\n\n\nclass ModelFormCallableModelDefault(TestCase):\n    def test_no_empty_option(self):\n        \"If a model's ForeignKey has blank=False and a default, no empty option is created (Refs #10792).\"\n        option = ChoiceOptionModel.objects.create(name='default')\n\n        choices = list(ChoiceFieldForm().fields['choice'].choices)\n        self.assertEqual(len(choices), 1)\n        self.assertEqual(choices[0], (option.pk, six.text_type(option)))\n\n    def test_callable_initial_value(self):\n        \"The initial value for a callable default returning a queryset is the pk (refs #13769)\"\n        obj1 = ChoiceOptionModel.objects.create(id=1, name='default')\n        obj2 = ChoiceOptionModel.objects.create(id=2, name='option 2')\n        obj3 = ChoiceOptionModel.objects.create(id=3, name='option 3')\n        self.assertHTMLEqual(ChoiceFieldForm().as_p(), \"\"\"<p><label for=\"id_choice\">Choice:</label> <select name=\"choice\" id=\"id_choice\">\n<option value=\"1\" selected=\"selected\">ChoiceOption 1</option>\n<option value=\"2\">ChoiceOption 2</option>\n<option value=\"3\">ChoiceOption 3</option>\n</select><input type=\"hidden\" name=\"initial-choice\" value=\"1\" id=\"initial-id_choice\" /></p>\n<p><label for=\"id_choice_int\">Choice int:</label> <select name=\"choice_int\" id=\"id_choice_int\">\n<option value=\"1\" selected=\"selected\">ChoiceOption 1</option>\n<option value=\"2\">ChoiceOption 2</option>\n<option value=\"3\">ChoiceOption 3</option>\n</select><input type=\"hidden\" name=\"initial-choice_int\" value=\"1\" id=\"initial-id_choice_int\" /></p>\n<p><label for=\"id_multi_choice\">Multi choice:</label> <select multiple=\"multiple\" name=\"multi_choice\" id=\"id_multi_choice\">\n<option value=\"1\" selected=\"selected\">ChoiceOption 1</option>\n<option value=\"2\">ChoiceOption 2</option>\n<option value=\"3\">ChoiceOption 3</option>\n</select><input type=\"hidden\" name=\"initial-multi_choice\" value=\"1\" id=\"initial-id_multi_choice_0\" /> <span class=\"helptext\"> Hold down \"Control\", or \"Command\" on a Mac, to select more than one.</span></p>\n<p><label for=\"id_multi_choice_int\">Multi choice int:</label> <select multiple=\"multiple\" name=\"multi_choice_int\" id=\"id_multi_choice_int\">\n<option value=\"1\" selected=\"selected\">ChoiceOption 1</option>\n<option value=\"2\">ChoiceOption 2</option>\n<option value=\"3\">ChoiceOption 3</option>\n</select><input type=\"hidden\" name=\"initial-multi_choice_int\" value=\"1\" id=\"initial-id_multi_choice_int_0\" /> <span class=\"helptext\"> Hold down \"Control\", or \"Command\" on a Mac, to select more than one.</span></p>\"\"\")\n\n    def test_initial_instance_value(self):\n        \"Initial instances for model fields may also be instances (refs #7287)\"\n        obj1 = ChoiceOptionModel.objects.create(id=1, name='default')\n        obj2 = ChoiceOptionModel.objects.create(id=2, name='option 2')\n        obj3 = ChoiceOptionModel.objects.create(id=3, name='option 3')\n        self.assertHTMLEqual(ChoiceFieldForm(initial={\n                'choice': obj2,\n                'choice_int': obj2,\n                'multi_choice': [obj2,obj3],\n                'multi_choice_int': ChoiceOptionModel.objects.exclude(name=\"default\"),\n            }).as_p(), \"\"\"<p><label for=\"id_choice\">Choice:</label> <select name=\"choice\" id=\"id_choice\">\n<option value=\"1\">ChoiceOption 1</option>\n<option value=\"2\" selected=\"selected\">ChoiceOption 2</option>\n<option value=\"3\">ChoiceOption 3</option>\n</select><input type=\"hidden\" name=\"initial-choice\" value=\"2\" id=\"initial-id_choice\" /></p>\n<p><label for=\"id_choice_int\">Choice int:</label> <select name=\"choice_int\" id=\"id_choice_int\">\n<option value=\"1\">ChoiceOption 1</option>\n<option value=\"2\" selected=\"selected\">ChoiceOption 2</option>\n<option value=\"3\">ChoiceOption 3</option>\n</select><input type=\"hidden\" name=\"initial-choice_int\" value=\"2\" id=\"initial-id_choice_int\" /></p>\n<p><label for=\"id_multi_choice\">Multi choice:</label> <select multiple=\"multiple\" name=\"multi_choice\" id=\"id_multi_choice\">\n<option value=\"1\">ChoiceOption 1</option>\n<option value=\"2\" selected=\"selected\">ChoiceOption 2</option>\n<option value=\"3\" selected=\"selected\">ChoiceOption 3</option>\n</select><input type=\"hidden\" name=\"initial-multi_choice\" value=\"2\" id=\"initial-id_multi_choice_0\" />\n<input type=\"hidden\" name=\"initial-multi_choice\" value=\"3\" id=\"initial-id_multi_choice_1\" /> <span class=\"helptext\"> Hold down \"Control\", or \"Command\" on a Mac, to select more than one.</span></p>\n<p><label for=\"id_multi_choice_int\">Multi choice int:</label> <select multiple=\"multiple\" name=\"multi_choice_int\" id=\"id_multi_choice_int\">\n<option value=\"1\">ChoiceOption 1</option>\n<option value=\"2\" selected=\"selected\">ChoiceOption 2</option>\n<option value=\"3\" selected=\"selected\">ChoiceOption 3</option>\n</select><input type=\"hidden\" name=\"initial-multi_choice_int\" value=\"2\" id=\"initial-id_multi_choice_int_0\" />\n<input type=\"hidden\" name=\"initial-multi_choice_int\" value=\"3\" id=\"initial-id_multi_choice_int_1\" /> <span class=\"helptext\"> Hold down \"Control\", or \"Command\" on a Mac, to select more than one.</span></p>\"\"\")\n\n\nclass FormsModelTestCase(TestCase):\n    def test_unicode_filename(self):\n        # FileModel with unicode filename and data #########################\n        f = FileForm(data={}, files={'file1': SimpleUploadedFile('我隻氣墊船裝滿晒鱔.txt', 'मेरी मँडराने वाली नाव सर्पमीनों से भरी ह'.encode('utf-8'))}, auto_id=False)\n        self.assertTrue(f.is_valid())\n        self.assertTrue('file1' in f.cleaned_data)\n        m = FileModel.objects.create(file=f.cleaned_data['file1'])\n        self.assertEqual(m.file.name, 'tests/\\u6211\\u96bb\\u6c23\\u588a\\u8239\\u88dd\\u6eff\\u6652\\u9c54.txt')\n        m.delete()\n\n    def test_boundary_conditions(self):\n        # Boundary conditions on a PostitiveIntegerField #########################\n        class BoundaryForm(ModelForm):\n            class Meta:\n                model = BoundaryModel\n\n        f = BoundaryForm({'positive_integer': 100})\n        self.assertTrue(f.is_valid())\n        f = BoundaryForm({'positive_integer': 0})\n        self.assertTrue(f.is_valid())\n        f = BoundaryForm({'positive_integer': -100})\n        self.assertFalse(f.is_valid())\n\n    def test_formfield_initial(self):\n        # Formfield initial values ########\n        # If the model has default values for some fields, they are used as the formfield\n        # initial values.\n        class DefaultsForm(ModelForm):\n            class Meta:\n                model = Defaults\n\n        self.assertEqual(DefaultsForm().fields['name'].initial, 'class default value')\n        self.assertEqual(DefaultsForm().fields['def_date'].initial, datetime.date(1980, 1, 1))\n        self.assertEqual(DefaultsForm().fields['value'].initial, 42)\n        r1 = DefaultsForm()['callable_default'].as_widget()\n        r2 = DefaultsForm()['callable_default'].as_widget()\n        self.assertNotEqual(r1, r2)\n\n        # In a ModelForm that is passed an instance, the initial values come from the\n        # instance's values, not the model's defaults.\n        foo_instance = Defaults(name='instance value', def_date=datetime.date(1969, 4, 4), value=12)\n        instance_form = DefaultsForm(instance=foo_instance)\n        self.assertEqual(instance_form.initial['name'], 'instance value')\n        self.assertEqual(instance_form.initial['def_date'], datetime.date(1969, 4, 4))\n        self.assertEqual(instance_form.initial['value'], 12)\n\n        from django.forms import CharField\n\n        class ExcludingForm(ModelForm):\n            name = CharField(max_length=255)\n\n            class Meta:\n                model = Defaults\n                exclude = ['name', 'callable_default']\n\n        f = ExcludingForm({'name': 'Hello', 'value': 99, 'def_date': datetime.date(1999, 3, 2)})\n        self.assertTrue(f.is_valid())\n        self.assertEqual(f.cleaned_data['name'], 'Hello')\n        obj = f.save()\n        self.assertEqual(obj.name, 'class default value')\n        self.assertEqual(obj.value, 99)\n        self.assertEqual(obj.def_date, datetime.date(1999, 3, 2))\n\nclass RelatedModelFormTests(TestCase):\n    def test_invalid_loading_order(self):\n        \"\"\"\n        Test for issue 10405\n        \"\"\"\n        class A(models.Model):\n            ref = models.ForeignKey(\"B\")\n\n        class Meta:\n            model=A\n\n        self.assertRaises(ValueError, ModelFormMetaclass, str('Form'), (ModelForm,), {'Meta': Meta})\n\n        class B(models.Model):\n            pass\n\n    def test_valid_loading_order(self):\n        \"\"\"\n        Test for issue 10405\n        \"\"\"\n        class A(models.Model):\n            ref = models.ForeignKey(\"B\")\n\n        class B(models.Model):\n            pass\n\n        class Meta:\n            model=A\n\n        self.assertTrue(issubclass(ModelFormMetaclass(str('Form'), (ModelForm,), {'Meta': Meta}), ModelForm))\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/forms/tests/regressions.py",
    "content": "# -*- coding: utf-8 -*-\nfrom __future__ import unicode_literals\n\nfrom warnings import catch_warnings\n\nfrom django.forms import *\nfrom django.test import TestCase\nfrom django.utils.translation import ugettext_lazy, override\n\nfrom regressiontests.forms.models import Cheese\n\n\nclass FormsRegressionsTestCase(TestCase):\n    def test_class(self):\n        # Tests to prevent against recurrences of earlier bugs.\n        extra_attrs = {'class': 'special'}\n\n        class TestForm(Form):\n            f1 = CharField(max_length=10, widget=TextInput(attrs=extra_attrs))\n            f2 = CharField(widget=TextInput(attrs=extra_attrs))\n\n        self.assertHTMLEqual(TestForm(auto_id=False).as_p(), '<p>F1: <input type=\"text\" class=\"special\" name=\"f1\" maxlength=\"10\" /></p>\\n<p>F2: <input type=\"text\" class=\"special\" name=\"f2\" /></p>')\n\n    def test_regression_3600(self):\n        # Tests for form i18n #\n        # There were some problems with form translations in #3600\n\n        class SomeForm(Form):\n            username = CharField(max_length=10, label=ugettext_lazy('Username'))\n\n        f = SomeForm()\n        self.assertHTMLEqual(f.as_p(), '<p><label for=\"id_username\">Username:</label> <input id=\"id_username\" type=\"text\" name=\"username\" maxlength=\"10\" /></p>')\n\n        # Translations are done at rendering time, so multi-lingual apps can define forms)\n        with override('de'):\n            self.assertHTMLEqual(f.as_p(), '<p><label for=\"id_username\">Benutzername:</label> <input id=\"id_username\" type=\"text\" name=\"username\" maxlength=\"10\" /></p>')\n        with override('pl', deactivate=True):\n            self.assertHTMLEqual(f.as_p(), '<p><label for=\"id_username\">Nazwa u\\u017cytkownika:</label> <input id=\"id_username\" type=\"text\" name=\"username\" maxlength=\"10\" /></p>')\n\n    def test_regression_5216(self):\n        # There was some problems with form translations in #5216\n        class SomeForm(Form):\n            field_1 = CharField(max_length=10, label=ugettext_lazy('field_1'))\n            field_2 = CharField(max_length=10, label=ugettext_lazy('field_2'), widget=TextInput(attrs={'id': 'field_2_id'}))\n\n        f = SomeForm()\n        self.assertHTMLEqual(f['field_1'].label_tag(), '<label for=\"id_field_1\">field_1</label>')\n        self.assertHTMLEqual(f['field_2'].label_tag(), '<label for=\"field_2_id\">field_2</label>')\n\n        # Unicode decoding problems...\n        GENDERS = (('\\xc5', 'En tied\\xe4'), ('\\xf8', 'Mies'), ('\\xdf', 'Nainen'))\n\n        class SomeForm(Form):\n            somechoice = ChoiceField(choices=GENDERS, widget=RadioSelect(), label='\\xc5\\xf8\\xdf')\n\n        f = SomeForm()\n        self.assertHTMLEqual(f.as_p(), '<p><label for=\"id_somechoice_0\">\\xc5\\xf8\\xdf:</label> <ul>\\n<li><label for=\"id_somechoice_0\"><input type=\"radio\" id=\"id_somechoice_0\" value=\"\\xc5\" name=\"somechoice\" /> En tied\\xe4</label></li>\\n<li><label for=\"id_somechoice_1\"><input type=\"radio\" id=\"id_somechoice_1\" value=\"\\xf8\" name=\"somechoice\" /> Mies</label></li>\\n<li><label for=\"id_somechoice_2\"><input type=\"radio\" id=\"id_somechoice_2\" value=\"\\xdf\" name=\"somechoice\" /> Nainen</label></li>\\n</ul></p>')\n\n        # Testing choice validation with UTF-8 bytestrings as input (these are the\n        # Russian abbreviations \"мес.\" and \"шт.\".\n        UNITS = ((b'\\xd0\\xbc\\xd0\\xb5\\xd1\\x81.', b'\\xd0\\xbc\\xd0\\xb5\\xd1\\x81.'),\n                 (b'\\xd1\\x88\\xd1\\x82.', b'\\xd1\\x88\\xd1\\x82.'))\n        f = ChoiceField(choices=UNITS)\n        self.assertEqual(f.clean('\\u0448\\u0442.'), '\\u0448\\u0442.')\n        with catch_warnings(record=True):\n            # Ignore UnicodeWarning\n            self.assertEqual(f.clean(b'\\xd1\\x88\\xd1\\x82.'), '\\u0448\\u0442.')\n\n        # Translated error messages used to be buggy.\n        with override('ru'):\n            f = SomeForm({})\n            self.assertHTMLEqual(f.as_p(), '<ul class=\"errorlist\"><li>\\u041e\\u0431\\u044f\\u0437\\u0430\\u0442\\u0435\\u043b\\u044c\\u043d\\u043e\\u0435 \\u043f\\u043e\\u043b\\u0435.</li></ul>\\n<p><label for=\"id_somechoice_0\">\\xc5\\xf8\\xdf:</label> <ul>\\n<li><label for=\"id_somechoice_0\"><input type=\"radio\" id=\"id_somechoice_0\" value=\"\\xc5\" name=\"somechoice\" /> En tied\\xe4</label></li>\\n<li><label for=\"id_somechoice_1\"><input type=\"radio\" id=\"id_somechoice_1\" value=\"\\xf8\" name=\"somechoice\" /> Mies</label></li>\\n<li><label for=\"id_somechoice_2\"><input type=\"radio\" id=\"id_somechoice_2\" value=\"\\xdf\" name=\"somechoice\" /> Nainen</label></li>\\n</ul></p>')\n\n        # Deep copying translated text shouldn't raise an error)\n        from django.utils.translation import gettext_lazy\n\n        class CopyForm(Form):\n            degree = IntegerField(widget=Select(choices=((1, gettext_lazy('test')),)))\n\n        f = CopyForm()\n\n    def test_misc(self):\n        # There once was a problem with Form fields called \"data\". Let's make sure that\n        # doesn't come back.\n        class DataForm(Form):\n            data = CharField(max_length=10)\n\n        f = DataForm({'data': 'xyzzy'})\n        self.assertTrue(f.is_valid())\n        self.assertEqual(f.cleaned_data, {'data': 'xyzzy'})\n\n        # A form with *only* hidden fields that has errors is going to be very unusual.\n        class HiddenForm(Form):\n            data = IntegerField(widget=HiddenInput)\n\n        f = HiddenForm({})\n        self.assertHTMLEqual(f.as_p(), '<ul class=\"errorlist\"><li>(Hidden field data) This field is required.</li></ul>\\n<p> <input type=\"hidden\" name=\"data\" id=\"id_data\" /></p>')\n        self.assertHTMLEqual(f.as_table(), '<tr><td colspan=\"2\"><ul class=\"errorlist\"><li>(Hidden field data) This field is required.</li></ul><input type=\"hidden\" name=\"data\" id=\"id_data\" /></td></tr>')\n\n    def test_xss_error_messages(self):\n        ###################################################\n        # Tests for XSS vulnerabilities in error messages #\n        ###################################################\n\n        # The forms layer doesn't escape input values directly because error messages\n        # might be presented in non-HTML contexts. Instead, the message is just marked\n        # for escaping by the template engine. So we'll need to construct a little\n        # silly template to trigger the escaping.\n        from django.template import Template, Context\n        t = Template('{{ form.errors }}')\n\n        class SomeForm(Form):\n            field = ChoiceField(choices=[('one', 'One')])\n\n        f = SomeForm({'field': '<script>'})\n        self.assertHTMLEqual(t.render(Context({'form': f})), '<ul class=\"errorlist\"><li>field<ul class=\"errorlist\"><li>Select a valid choice. &lt;script&gt; is not one of the available choices.</li></ul></li></ul>')\n\n        class SomeForm(Form):\n            field = MultipleChoiceField(choices=[('one', 'One')])\n\n        f = SomeForm({'field': ['<script>']})\n        self.assertHTMLEqual(t.render(Context({'form': f})), '<ul class=\"errorlist\"><li>field<ul class=\"errorlist\"><li>Select a valid choice. &lt;script&gt; is not one of the available choices.</li></ul></li></ul>')\n\n        from regressiontests.forms.models import ChoiceModel\n\n        class SomeForm(Form):\n            field = ModelMultipleChoiceField(ChoiceModel.objects.all())\n\n        f = SomeForm({'field': ['<script>']})\n        self.assertHTMLEqual(t.render(Context({'form': f})), '<ul class=\"errorlist\"><li>field<ul class=\"errorlist\"><li>&quot;&lt;script&gt;&quot; is not a valid value for a primary key.</li></ul></li></ul>')\n\n    def test_regression_14234(self):\n        \"\"\"\n        Re-cleaning an instance that was added via a ModelForm should not raise\n        a pk uniqueness error.\n\n        \"\"\"\n        class CheeseForm(ModelForm):\n            class Meta:\n                model = Cheese\n\n        form = CheeseForm({\n            'name': 'Brie',\n        })\n\n        self.assertTrue(form.is_valid())\n\n        obj = form.save()\n        obj.name = 'Camembert'\n        obj.full_clean()\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/forms/tests/util.py",
    "content": "# -*- coding: utf-8 -*-\nfrom __future__ import unicode_literals\n\nfrom django.core.exceptions import ValidationError\nfrom django.forms.util import flatatt, ErrorDict, ErrorList\nfrom django.test import TestCase\nfrom django.utils.safestring import mark_safe\nfrom django.utils import six\nfrom django.utils.translation import ugettext_lazy\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\nclass FormsUtilTestCase(TestCase):\n        # Tests for forms/util.py module.\n\n    def test_flatatt(self):\n        ###########\n        # flatatt #\n        ###########\n\n        self.assertEqual(flatatt({'id': \"header\"}), ' id=\"header\"')\n        self.assertEqual(flatatt({'class': \"news\", 'title': \"Read this\"}), ' class=\"news\" title=\"Read this\"')\n        self.assertEqual(flatatt({}), '')\n\n    def test_validation_error(self):\n        ###################\n        # ValidationError #\n        ###################\n\n        # Can take a string.\n        self.assertHTMLEqual(str(ErrorList(ValidationError(\"There was an error.\").messages)),\n                         '<ul class=\"errorlist\"><li>There was an error.</li></ul>')\n\n        # Can take a unicode string.\n        self.assertHTMLEqual(six.text_type(ErrorList(ValidationError(\"Not \\u03C0.\").messages)),\n                         '<ul class=\"errorlist\"><li>Not π.</li></ul>')\n\n        # Can take a lazy string.\n        self.assertHTMLEqual(str(ErrorList(ValidationError(ugettext_lazy(\"Error.\")).messages)),\n                         '<ul class=\"errorlist\"><li>Error.</li></ul>')\n\n        # Can take a list.\n        self.assertHTMLEqual(str(ErrorList(ValidationError([\"Error one.\", \"Error two.\"]).messages)),\n                         '<ul class=\"errorlist\"><li>Error one.</li><li>Error two.</li></ul>')\n\n        # Can take a mixture in a list.\n        self.assertHTMLEqual(str(ErrorList(ValidationError([\"First error.\", \"Not \\u03C0.\", ugettext_lazy(\"Error.\")]).messages)),\n                         '<ul class=\"errorlist\"><li>First error.</li><li>Not π.</li><li>Error.</li></ul>')\n\n        @python_2_unicode_compatible\n        class VeryBadError:\n            def __str__(self): return \"A very bad error.\"\n\n        # Can take a non-string.\n        self.assertHTMLEqual(str(ErrorList(ValidationError(VeryBadError()).messages)),\n                         '<ul class=\"errorlist\"><li>A very bad error.</li></ul>')\n\n        # Escapes non-safe input but not input marked safe.\n        example = 'Example of link: <a href=\"http://www.example.com/\">example</a>'\n        self.assertHTMLEqual(str(ErrorList([example])),\n                         '<ul class=\"errorlist\"><li>Example of link: &lt;a href=&quot;http://www.example.com/&quot;&gt;example&lt;/a&gt;</li></ul>')\n        self.assertHTMLEqual(str(ErrorList([mark_safe(example)])),\n                         '<ul class=\"errorlist\"><li>Example of link: <a href=\"http://www.example.com/\">example</a></li></ul>')\n        self.assertHTMLEqual(str(ErrorDict({'name': example})),\n                         '<ul class=\"errorlist\"><li>nameExample of link: &lt;a href=&quot;http://www.example.com/&quot;&gt;example&lt;/a&gt;</li></ul>')\n        self.assertHTMLEqual(str(ErrorDict({'name': mark_safe(example)})),\n                         '<ul class=\"errorlist\"><li>nameExample of link: <a href=\"http://www.example.com/\">example</a></li></ul>')\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/forms/tests/validators.py",
    "content": "from django import forms\nfrom django.core import validators\nfrom django.core.exceptions import ValidationError\nfrom django.utils.unittest import TestCase\n\n\nclass TestFieldWithValidators(TestCase):\n    def test_all_errors_get_reported(self):\n        field = forms.CharField(\n            validators=[validators.validate_integer, validators.validate_email]\n        )\n        self.assertRaises(ValidationError, field.clean, 'not int nor mail')\n        try:\n            field.clean('not int nor mail')\n        except ValidationError as e:\n            self.assertEqual(2, len(e.messages))\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/forms/tests/widgets.py",
    "content": "# -*- coding: utf-8 -*-\nfrom __future__ import unicode_literals\n\nimport copy\nimport datetime\n\nfrom django.contrib.admin.tests import AdminSeleniumWebDriverTestCase\nfrom django.core.files.uploadedfile import SimpleUploadedFile\nfrom django.core.urlresolvers import reverse\nfrom django.forms import *\nfrom django.forms.widgets import RadioFieldRenderer\nfrom django.utils import formats\nfrom django.utils.safestring import mark_safe\nfrom django.utils import six\nfrom django.utils.translation import activate, deactivate\nfrom django.test import TestCase\nfrom django.test.utils import override_settings\nfrom django.utils.encoding import python_2_unicode_compatible\n\nfrom ..models import Article\n\n\nclass FormsWidgetTestCase(TestCase):\n    # Each Widget class corresponds to an HTML form widget. A Widget knows how to\n    # render itself, given a field name and some data. Widgets don't perform\n    # validation.\n    def test_textinput(self):\n        w = TextInput()\n        self.assertHTMLEqual(w.render('email', ''), '<input type=\"text\" name=\"email\" />')\n        self.assertHTMLEqual(w.render('email', None), '<input type=\"text\" name=\"email\" />')\n        self.assertHTMLEqual(w.render('email', 'test@example.com'), '<input type=\"text\" name=\"email\" value=\"test@example.com\" />')\n        self.assertHTMLEqual(w.render('email', 'some \"quoted\" & ampersanded value'), '<input type=\"text\" name=\"email\" value=\"some &quot;quoted&quot; &amp; ampersanded value\" />')\n        self.assertHTMLEqual(w.render('email', 'test@example.com', attrs={'class': 'fun'}), '<input type=\"text\" name=\"email\" value=\"test@example.com\" class=\"fun\" />')\n\n        self.assertHTMLEqual(w.render('email', 'ŠĐĆŽćžšđ', attrs={'class': 'fun'}), '<input type=\"text\" name=\"email\" value=\"\\u0160\\u0110\\u0106\\u017d\\u0107\\u017e\\u0161\\u0111\" class=\"fun\" />')\n\n        # You can also pass 'attrs' to the constructor:\n        w = TextInput(attrs={'class': 'fun', 'type': 'email'})\n        self.assertHTMLEqual(w.render('email', ''), '<input type=\"email\" class=\"fun\" name=\"email\" />')\n        self.assertHTMLEqual(w.render('email', 'foo@example.com'), '<input type=\"email\" class=\"fun\" value=\"foo@example.com\" name=\"email\" />')\n\n        # 'attrs' passed to render() get precedence over those passed to the constructor:\n        w = TextInput(attrs={'class': 'pretty'})\n        self.assertHTMLEqual(w.render('email', '', attrs={'class': 'special'}), '<input type=\"text\" class=\"special\" name=\"email\" />')\n\n        # 'attrs' can be safe-strings if needed)\n        w = TextInput(attrs={'onBlur': mark_safe(\"function('foo')\")})\n        self.assertHTMLEqual(w.render('email', ''), '<input onBlur=\"function(\\'foo\\')\" type=\"text\" name=\"email\" />')\n\n    def test_passwordinput(self):\n        w = PasswordInput()\n        self.assertHTMLEqual(w.render('email', ''), '<input type=\"password\" name=\"email\" />')\n        self.assertHTMLEqual(w.render('email', None), '<input type=\"password\" name=\"email\" />')\n        self.assertHTMLEqual(w.render('email', 'secret'), '<input type=\"password\" name=\"email\" />')\n\n        # The render_value argument lets you specify whether the widget should render\n        # its value. For security reasons, this is off by default.\n        w = PasswordInput(render_value=True)\n        self.assertHTMLEqual(w.render('email', ''), '<input type=\"password\" name=\"email\" />')\n        self.assertHTMLEqual(w.render('email', None), '<input type=\"password\" name=\"email\" />')\n        self.assertHTMLEqual(w.render('email', 'test@example.com'), '<input type=\"password\" name=\"email\" value=\"test@example.com\" />')\n        self.assertHTMLEqual(w.render('email', 'some \"quoted\" & ampersanded value'), '<input type=\"password\" name=\"email\" value=\"some &quot;quoted&quot; &amp; ampersanded value\" />')\n        self.assertHTMLEqual(w.render('email', 'test@example.com', attrs={'class': 'fun'}), '<input type=\"password\" name=\"email\" value=\"test@example.com\" class=\"fun\" />')\n\n        # You can also pass 'attrs' to the constructor:\n        w = PasswordInput(attrs={'class': 'fun'}, render_value=True)\n        self.assertHTMLEqual(w.render('email', ''), '<input type=\"password\" class=\"fun\" name=\"email\" />')\n        self.assertHTMLEqual(w.render('email', 'foo@example.com'), '<input type=\"password\" class=\"fun\" value=\"foo@example.com\" name=\"email\" />')\n\n        # 'attrs' passed to render() get precedence over those passed to the constructor:\n        w = PasswordInput(attrs={'class': 'pretty'}, render_value=True)\n        self.assertHTMLEqual(w.render('email', '', attrs={'class': 'special'}), '<input type=\"password\" class=\"special\" name=\"email\" />')\n\n        self.assertHTMLEqual(w.render('email', 'ŠĐĆŽćžšđ', attrs={'class': 'fun'}), '<input type=\"password\" class=\"fun\" value=\"\\u0160\\u0110\\u0106\\u017d\\u0107\\u017e\\u0161\\u0111\" name=\"email\" />')\n\n    def test_hiddeninput(self):\n        w = HiddenInput()\n        self.assertHTMLEqual(w.render('email', ''), '<input type=\"hidden\" name=\"email\" />')\n        self.assertHTMLEqual(w.render('email', None), '<input type=\"hidden\" name=\"email\" />')\n        self.assertHTMLEqual(w.render('email', 'test@example.com'), '<input type=\"hidden\" name=\"email\" value=\"test@example.com\" />')\n        self.assertHTMLEqual(w.render('email', 'some \"quoted\" & ampersanded value'), '<input type=\"hidden\" name=\"email\" value=\"some &quot;quoted&quot; &amp; ampersanded value\" />')\n        self.assertHTMLEqual(w.render('email', 'test@example.com', attrs={'class': 'fun'}), '<input type=\"hidden\" name=\"email\" value=\"test@example.com\" class=\"fun\" />')\n\n        # You can also pass 'attrs' to the constructor:\n        w = HiddenInput(attrs={'class': 'fun'})\n        self.assertHTMLEqual(w.render('email', ''), '<input type=\"hidden\" class=\"fun\" name=\"email\" />')\n        self.assertHTMLEqual(w.render('email', 'foo@example.com'), '<input type=\"hidden\" class=\"fun\" value=\"foo@example.com\" name=\"email\" />')\n\n        # 'attrs' passed to render() get precedence over those passed to the constructor:\n        w = HiddenInput(attrs={'class': 'pretty'})\n        self.assertHTMLEqual(w.render('email', '', attrs={'class': 'special'}), '<input type=\"hidden\" class=\"special\" name=\"email\" />')\n\n        self.assertHTMLEqual(w.render('email', 'ŠĐĆŽćžšđ', attrs={'class': 'fun'}), '<input type=\"hidden\" class=\"fun\" value=\"\\u0160\\u0110\\u0106\\u017d\\u0107\\u017e\\u0161\\u0111\" name=\"email\" />')\n\n        # 'attrs' passed to render() get precedence over those passed to the constructor:\n        w = HiddenInput(attrs={'class': 'pretty'})\n        self.assertHTMLEqual(w.render('email', '', attrs={'class': 'special'}), '<input type=\"hidden\" class=\"special\" name=\"email\" />')\n\n        # Boolean values are rendered to their string forms (\"True\" and \"False\").\n        w = HiddenInput()\n        self.assertHTMLEqual(w.render('get_spam', False), '<input type=\"hidden\" name=\"get_spam\" value=\"False\" />')\n        self.assertHTMLEqual(w.render('get_spam', True), '<input type=\"hidden\" name=\"get_spam\" value=\"True\" />')\n\n    def test_multiplehiddeninput(self):\n        w = MultipleHiddenInput()\n        self.assertHTMLEqual(w.render('email', []), '')\n        self.assertHTMLEqual(w.render('email', None), '')\n        self.assertHTMLEqual(w.render('email', ['test@example.com']), '<input type=\"hidden\" name=\"email\" value=\"test@example.com\" />')\n        self.assertHTMLEqual(w.render('email', ['some \"quoted\" & ampersanded value']), '<input type=\"hidden\" name=\"email\" value=\"some &quot;quoted&quot; &amp; ampersanded value\" />')\n        self.assertHTMLEqual(w.render('email', ['test@example.com', 'foo@example.com']), '<input type=\"hidden\" name=\"email\" value=\"test@example.com\" />\\n<input type=\"hidden\" name=\"email\" value=\"foo@example.com\" />')\n        self.assertHTMLEqual(w.render('email', ['test@example.com'], attrs={'class': 'fun'}), '<input type=\"hidden\" name=\"email\" value=\"test@example.com\" class=\"fun\" />')\n        self.assertHTMLEqual(w.render('email', ['test@example.com', 'foo@example.com'], attrs={'class': 'fun'}), '<input type=\"hidden\" name=\"email\" value=\"test@example.com\" class=\"fun\" />\\n<input type=\"hidden\" name=\"email\" value=\"foo@example.com\" class=\"fun\" />')\n\n        # You can also pass 'attrs' to the constructor:\n        w = MultipleHiddenInput(attrs={'class': 'fun'})\n        self.assertHTMLEqual(w.render('email', []), '')\n        self.assertHTMLEqual(w.render('email', ['foo@example.com']), '<input type=\"hidden\" class=\"fun\" value=\"foo@example.com\" name=\"email\" />')\n        self.assertHTMLEqual(w.render('email', ['foo@example.com', 'test@example.com']), '<input type=\"hidden\" class=\"fun\" value=\"foo@example.com\" name=\"email\" />\\n<input type=\"hidden\" class=\"fun\" value=\"test@example.com\" name=\"email\" />')\n\n        # 'attrs' passed to render() get precedence over those passed to the constructor:\n        w = MultipleHiddenInput(attrs={'class': 'pretty'})\n        self.assertHTMLEqual(w.render('email', ['foo@example.com'], attrs={'class': 'special'}), '<input type=\"hidden\" class=\"special\" value=\"foo@example.com\" name=\"email\" />')\n\n        self.assertHTMLEqual(w.render('email', ['ŠĐĆŽćžšđ'], attrs={'class': 'fun'}), '<input type=\"hidden\" class=\"fun\" value=\"\\u0160\\u0110\\u0106\\u017d\\u0107\\u017e\\u0161\\u0111\" name=\"email\" />')\n\n        # 'attrs' passed to render() get precedence over those passed to the constructor:\n        w = MultipleHiddenInput(attrs={'class': 'pretty'})\n        self.assertHTMLEqual(w.render('email', ['foo@example.com'], attrs={'class': 'special'}), '<input type=\"hidden\" class=\"special\" value=\"foo@example.com\" name=\"email\" />')\n\n        # Each input gets a separate ID.\n        w = MultipleHiddenInput()\n        self.assertHTMLEqual(w.render('letters', list('abc'), attrs={'id': 'hideme'}), '<input type=\"hidden\" name=\"letters\" value=\"a\" id=\"hideme_0\" />\\n<input type=\"hidden\" name=\"letters\" value=\"b\" id=\"hideme_1\" />\\n<input type=\"hidden\" name=\"letters\" value=\"c\" id=\"hideme_2\" />')\n\n    def test_fileinput(self):\n        # FileInput widgets don't ever show the value, because the old value is of no use\n        # if you are updating the form or if the provided file generated an error.\n        w = FileInput()\n        self.assertHTMLEqual(w.render('email', ''), '<input type=\"file\" name=\"email\" />')\n        self.assertHTMLEqual(w.render('email', None), '<input type=\"file\" name=\"email\" />')\n        self.assertHTMLEqual(w.render('email', 'test@example.com'), '<input type=\"file\" name=\"email\" />')\n        self.assertHTMLEqual(w.render('email', 'some \"quoted\" & ampersanded value'), '<input type=\"file\" name=\"email\" />')\n        self.assertHTMLEqual(w.render('email', 'test@example.com', attrs={'class': 'fun'}), '<input type=\"file\" name=\"email\" class=\"fun\" />')\n\n        # You can also pass 'attrs' to the constructor:\n        w = FileInput(attrs={'class': 'fun'})\n        self.assertHTMLEqual(w.render('email', ''), '<input type=\"file\" class=\"fun\" name=\"email\" />')\n        self.assertHTMLEqual(w.render('email', 'foo@example.com'), '<input type=\"file\" class=\"fun\" name=\"email\" />')\n\n        self.assertHTMLEqual(w.render('email', 'ŠĐĆŽćžšđ', attrs={'class': 'fun'}), '<input type=\"file\" class=\"fun\" name=\"email\" />')\n\n        # Test for the behavior of _has_changed for FileInput. The value of data will\n        # more than likely come from request.FILES. The value of initial data will\n        # likely be a filename stored in the database. Since its value is of no use to\n        # a FileInput it is ignored.\n        w = FileInput()\n\n        # No file was uploaded and no initial data.\n        self.assertFalse(w._has_changed('', None))\n\n        # A file was uploaded and no initial data.\n        self.assertTrue(w._has_changed('', {'filename': 'resume.txt', 'content': 'My resume'}))\n\n        # A file was not uploaded, but there is initial data\n        self.assertFalse(w._has_changed('resume.txt', None))\n\n        # A file was uploaded and there is initial data (file identity is not dealt\n        # with here)\n        self.assertTrue(w._has_changed('resume.txt', {'filename': 'resume.txt', 'content': 'My resume'}))\n\n    def test_textarea(self):\n        w = Textarea()\n        self.assertHTMLEqual(w.render('msg', ''), '<textarea rows=\"10\" cols=\"40\" name=\"msg\"></textarea>')\n        self.assertHTMLEqual(w.render('msg', None), '<textarea rows=\"10\" cols=\"40\" name=\"msg\"></textarea>')\n        self.assertHTMLEqual(w.render('msg', 'value'), '<textarea rows=\"10\" cols=\"40\" name=\"msg\">value</textarea>')\n        self.assertHTMLEqual(w.render('msg', 'some \"quoted\" & ampersanded value'), '<textarea rows=\"10\" cols=\"40\" name=\"msg\">some &quot;quoted&quot; &amp; ampersanded value</textarea>')\n        self.assertHTMLEqual(w.render('msg', mark_safe('pre &quot;quoted&quot; value')), '<textarea rows=\"10\" cols=\"40\" name=\"msg\">pre &quot;quoted&quot; value</textarea>')\n        self.assertHTMLEqual(w.render('msg', 'value', attrs={'class': 'pretty', 'rows': 20}), '<textarea class=\"pretty\" rows=\"20\" cols=\"40\" name=\"msg\">value</textarea>')\n\n        # You can also pass 'attrs' to the constructor:\n        w = Textarea(attrs={'class': 'pretty'})\n        self.assertHTMLEqual(w.render('msg', ''), '<textarea rows=\"10\" cols=\"40\" name=\"msg\" class=\"pretty\"></textarea>')\n        self.assertHTMLEqual(w.render('msg', 'example'), '<textarea rows=\"10\" cols=\"40\" name=\"msg\" class=\"pretty\">example</textarea>')\n\n        # 'attrs' passed to render() get precedence over those passed to the constructor:\n        w = Textarea(attrs={'class': 'pretty'})\n        self.assertHTMLEqual(w.render('msg', '', attrs={'class': 'special'}), '<textarea rows=\"10\" cols=\"40\" name=\"msg\" class=\"special\"></textarea>')\n\n        self.assertHTMLEqual(w.render('msg', 'ŠĐĆŽćžšđ', attrs={'class': 'fun'}), '<textarea rows=\"10\" cols=\"40\" name=\"msg\" class=\"fun\">\\u0160\\u0110\\u0106\\u017d\\u0107\\u017e\\u0161\\u0111</textarea>')\n\n    def test_checkboxinput(self):\n        w = CheckboxInput()\n        self.assertHTMLEqual(w.render('is_cool', ''), '<input type=\"checkbox\" name=\"is_cool\" />')\n        self.assertHTMLEqual(w.render('is_cool', None), '<input type=\"checkbox\" name=\"is_cool\" />')\n        self.assertHTMLEqual(w.render('is_cool', False), '<input type=\"checkbox\" name=\"is_cool\" />')\n        self.assertHTMLEqual(w.render('is_cool', True), '<input checked=\"checked\" type=\"checkbox\" name=\"is_cool\" />')\n\n        # Using any value that's not in ('', None, False, True) will check the checkbox\n        # and set the 'value' attribute.\n        self.assertHTMLEqual(w.render('is_cool', 'foo'), '<input checked=\"checked\" type=\"checkbox\" name=\"is_cool\" value=\"foo\" />')\n\n        self.assertHTMLEqual(w.render('is_cool', False, attrs={'class': 'pretty'}), '<input type=\"checkbox\" name=\"is_cool\" class=\"pretty\" />')\n\n        # regression for #17114\n        self.assertHTMLEqual(w.render('is_cool', 0), '<input checked=\"checked\" type=\"checkbox\" name=\"is_cool\" value=\"0\" />')\n        self.assertHTMLEqual(w.render('is_cool', 1), '<input checked=\"checked\" type=\"checkbox\" name=\"is_cool\" value=\"1\" />')\n\n        # You can also pass 'attrs' to the constructor:\n        w = CheckboxInput(attrs={'class': 'pretty'})\n        self.assertHTMLEqual(w.render('is_cool', ''), '<input type=\"checkbox\" class=\"pretty\" name=\"is_cool\" />')\n\n        # 'attrs' passed to render() get precedence over those passed to the constructor:\n        w = CheckboxInput(attrs={'class': 'pretty'})\n        self.assertHTMLEqual(w.render('is_cool', '', attrs={'class': 'special'}), '<input type=\"checkbox\" class=\"special\" name=\"is_cool\" />')\n\n        # You can pass 'check_test' to the constructor. This is a callable that takes the\n        # value and returns True if the box should be checked.\n        w = CheckboxInput(check_test=lambda value: value.startswith('hello'))\n        self.assertHTMLEqual(w.render('greeting', ''), '<input type=\"checkbox\" name=\"greeting\" />')\n        self.assertHTMLEqual(w.render('greeting', 'hello'), '<input checked=\"checked\" type=\"checkbox\" name=\"greeting\" value=\"hello\" />')\n        self.assertHTMLEqual(w.render('greeting', 'hello there'), '<input checked=\"checked\" type=\"checkbox\" name=\"greeting\" value=\"hello there\" />')\n        self.assertHTMLEqual(w.render('greeting', 'hello & goodbye'), '<input checked=\"checked\" type=\"checkbox\" name=\"greeting\" value=\"hello &amp; goodbye\" />')\n\n        # Ticket #17888: calling check_test shouldn't swallow exceptions\n        with self.assertRaises(AttributeError):\n            w.render('greeting', True)\n\n        # The CheckboxInput widget will return False if the key is not found in the data\n        # dictionary (because HTML form submission doesn't send any result for unchecked\n        # checkboxes).\n        self.assertFalse(w.value_from_datadict({}, {}, 'testing'))\n\n        value = w.value_from_datadict({'testing': '0'}, {}, 'testing')\n        self.assertIsInstance(value, bool)\n        self.assertTrue(value)\n\n        self.assertFalse(w._has_changed(None, None))\n        self.assertFalse(w._has_changed(None, ''))\n        self.assertFalse(w._has_changed('', None))\n        self.assertFalse(w._has_changed('', ''))\n        self.assertTrue(w._has_changed(False, 'on'))\n        self.assertFalse(w._has_changed(True, 'on'))\n        self.assertTrue(w._has_changed(True, ''))\n        # Initial value may have mutated to a string due to show_hidden_initial (#19537)\n        self.assertTrue(w._has_changed('False', 'on'))\n\n    def test_select(self):\n        w = Select()\n        self.assertHTMLEqual(w.render('beatle', 'J', choices=(('J', 'John'), ('P', 'Paul'), ('G', 'George'), ('R', 'Ringo'))), \"\"\"<select name=\"beatle\">\n<option value=\"J\" selected=\"selected\">John</option>\n<option value=\"P\">Paul</option>\n<option value=\"G\">George</option>\n<option value=\"R\">Ringo</option>\n</select>\"\"\")\n\n        # If the value is None, none of the options are selected:\n        self.assertHTMLEqual(w.render('beatle', None, choices=(('J', 'John'), ('P', 'Paul'), ('G', 'George'), ('R', 'Ringo'))), \"\"\"<select name=\"beatle\">\n<option value=\"J\">John</option>\n<option value=\"P\">Paul</option>\n<option value=\"G\">George</option>\n<option value=\"R\">Ringo</option>\n</select>\"\"\")\n\n        # If the value corresponds to a label (but not to an option value), none of the options are selected:\n        self.assertHTMLEqual(w.render('beatle', 'John', choices=(('J', 'John'), ('P', 'Paul'), ('G', 'George'), ('R', 'Ringo'))), \"\"\"<select name=\"beatle\">\n<option value=\"J\">John</option>\n<option value=\"P\">Paul</option>\n<option value=\"G\">George</option>\n<option value=\"R\">Ringo</option>\n</select>\"\"\")\n\n        # Only one option can be selected, see #8103:\n        self.assertHTMLEqual(w.render('choices', '0', choices=(('0', '0'), ('1', '1'), ('2', '2'), ('3', '3'), ('0', 'extra'))), \"\"\"<select name=\"choices\">\n<option value=\"0\" selected=\"selected\">0</option>\n<option value=\"1\">1</option>\n<option value=\"2\">2</option>\n<option value=\"3\">3</option>\n<option value=\"0\">extra</option>\n</select>\"\"\")\n\n        # The value is compared to its str():\n        self.assertHTMLEqual(w.render('num', 2, choices=[('1', '1'), ('2', '2'), ('3', '3')]), \"\"\"<select name=\"num\">\n<option value=\"1\">1</option>\n<option value=\"2\" selected=\"selected\">2</option>\n<option value=\"3\">3</option>\n</select>\"\"\")\n        self.assertHTMLEqual(w.render('num', '2', choices=[(1, 1), (2, 2), (3, 3)]), \"\"\"<select name=\"num\">\n<option value=\"1\">1</option>\n<option value=\"2\" selected=\"selected\">2</option>\n<option value=\"3\">3</option>\n</select>\"\"\")\n        self.assertHTMLEqual(w.render('num', 2, choices=[(1, 1), (2, 2), (3, 3)]), \"\"\"<select name=\"num\">\n<option value=\"1\">1</option>\n<option value=\"2\" selected=\"selected\">2</option>\n<option value=\"3\">3</option>\n</select>\"\"\")\n\n        # The 'choices' argument can be any iterable:\n        from itertools import chain\n        def get_choices():\n            for i in range(5):\n                yield (i, i)\n        self.assertHTMLEqual(w.render('num', 2, choices=get_choices()), \"\"\"<select name=\"num\">\n<option value=\"0\">0</option>\n<option value=\"1\">1</option>\n<option value=\"2\" selected=\"selected\">2</option>\n<option value=\"3\">3</option>\n<option value=\"4\">4</option>\n</select>\"\"\")\n        things = ({'id': 1, 'name': 'And Boom'}, {'id': 2, 'name': 'One More Thing!'})\n        class SomeForm(Form):\n            somechoice = ChoiceField(choices=chain((('', '-'*9),), [(thing['id'], thing['name']) for thing in things]))\n        f = SomeForm()\n        self.assertHTMLEqual(f.as_table(), '<tr><th><label for=\"id_somechoice\">Somechoice:</label></th><td><select name=\"somechoice\" id=\"id_somechoice\">\\n<option value=\"\" selected=\"selected\">---------</option>\\n<option value=\"1\">And Boom</option>\\n<option value=\"2\">One More Thing!</option>\\n</select></td></tr>')\n        self.assertHTMLEqual(f.as_table(), '<tr><th><label for=\"id_somechoice\">Somechoice:</label></th><td><select name=\"somechoice\" id=\"id_somechoice\">\\n<option value=\"\" selected=\"selected\">---------</option>\\n<option value=\"1\">And Boom</option>\\n<option value=\"2\">One More Thing!</option>\\n</select></td></tr>')\n        f = SomeForm({'somechoice': 2})\n        self.assertHTMLEqual(f.as_table(), '<tr><th><label for=\"id_somechoice\">Somechoice:</label></th><td><select name=\"somechoice\" id=\"id_somechoice\">\\n<option value=\"\">---------</option>\\n<option value=\"1\">And Boom</option>\\n<option value=\"2\" selected=\"selected\">One More Thing!</option>\\n</select></td></tr>')\n\n        # You can also pass 'choices' to the constructor:\n        w = Select(choices=[(1, 1), (2, 2), (3, 3)])\n        self.assertHTMLEqual(w.render('num', 2), \"\"\"<select name=\"num\">\n<option value=\"1\">1</option>\n<option value=\"2\" selected=\"selected\">2</option>\n<option value=\"3\">3</option>\n</select>\"\"\")\n\n        # If 'choices' is passed to both the constructor and render(), then they'll both be in the output:\n        self.assertHTMLEqual(w.render('num', 2, choices=[(4, 4), (5, 5)]), \"\"\"<select name=\"num\">\n<option value=\"1\">1</option>\n<option value=\"2\" selected=\"selected\">2</option>\n<option value=\"3\">3</option>\n<option value=\"4\">4</option>\n<option value=\"5\">5</option>\n</select>\"\"\")\n\n        # Choices are escaped correctly\n        self.assertHTMLEqual(w.render('escape', None, choices=(('bad', 'you & me'), ('good', mark_safe('you &gt; me')))), \"\"\"<select name=\"escape\">\n<option value=\"1\">1</option>\n<option value=\"2\">2</option>\n<option value=\"3\">3</option>\n<option value=\"bad\">you &amp; me</option>\n<option value=\"good\">you &gt; me</option>\n</select>\"\"\")\n\n        # Unicode choices are correctly rendered as HTML\n        self.assertHTMLEqual(w.render('email', 'ŠĐĆŽćžšđ', choices=[('ŠĐĆŽćžšđ', 'ŠĐabcĆŽćžšđ'), ('ćžšđ', 'abcćžšđ')]), '<select name=\"email\">\\n<option value=\"1\">1</option>\\n<option value=\"2\">2</option>\\n<option value=\"3\">3</option>\\n<option value=\"\\u0160\\u0110\\u0106\\u017d\\u0107\\u017e\\u0161\\u0111\" selected=\"selected\">\\u0160\\u0110abc\\u0106\\u017d\\u0107\\u017e\\u0161\\u0111</option>\\n<option value=\"\\u0107\\u017e\\u0161\\u0111\">abc\\u0107\\u017e\\u0161\\u0111</option>\\n</select>')\n\n        # If choices is passed to the constructor and is a generator, it can be iterated\n        # over multiple times without getting consumed:\n        w = Select(choices=get_choices())\n        self.assertHTMLEqual(w.render('num', 2), \"\"\"<select name=\"num\">\n<option value=\"0\">0</option>\n<option value=\"1\">1</option>\n<option value=\"2\" selected=\"selected\">2</option>\n<option value=\"3\">3</option>\n<option value=\"4\">4</option>\n</select>\"\"\")\n        self.assertHTMLEqual(w.render('num', 3), \"\"\"<select name=\"num\">\n<option value=\"0\">0</option>\n<option value=\"1\">1</option>\n<option value=\"2\">2</option>\n<option value=\"3\" selected=\"selected\">3</option>\n<option value=\"4\">4</option>\n</select>\"\"\")\n\n        # Choices can be nested one level in order to create HTML optgroups:\n        w.choices=(('outer1', 'Outer 1'), ('Group \"1\"', (('inner1', 'Inner 1'), ('inner2', 'Inner 2'))))\n        self.assertHTMLEqual(w.render('nestchoice', None), \"\"\"<select name=\"nestchoice\">\n<option value=\"outer1\">Outer 1</option>\n<optgroup label=\"Group &quot;1&quot;\">\n<option value=\"inner1\">Inner 1</option>\n<option value=\"inner2\">Inner 2</option>\n</optgroup>\n</select>\"\"\")\n\n        self.assertHTMLEqual(w.render('nestchoice', 'outer1'), \"\"\"<select name=\"nestchoice\">\n<option value=\"outer1\" selected=\"selected\">Outer 1</option>\n<optgroup label=\"Group &quot;1&quot;\">\n<option value=\"inner1\">Inner 1</option>\n<option value=\"inner2\">Inner 2</option>\n</optgroup>\n</select>\"\"\")\n\n        self.assertHTMLEqual(w.render('nestchoice', 'inner1'), \"\"\"<select name=\"nestchoice\">\n<option value=\"outer1\">Outer 1</option>\n<optgroup label=\"Group &quot;1&quot;\">\n<option value=\"inner1\" selected=\"selected\">Inner 1</option>\n<option value=\"inner2\">Inner 2</option>\n</optgroup>\n</select>\"\"\")\n\n    def test_nullbooleanselect(self):\n        w = NullBooleanSelect()\n        self.assertTrue(w.render('is_cool', True), \"\"\"<select name=\"is_cool\">\n<option value=\"1\">Unknown</option>\n<option value=\"2\" selected=\"selected\">Yes</option>\n<option value=\"3\">No</option>\n</select>\"\"\")\n        self.assertHTMLEqual(w.render('is_cool', False), \"\"\"<select name=\"is_cool\">\n<option value=\"1\">Unknown</option>\n<option value=\"2\">Yes</option>\n<option value=\"3\" selected=\"selected\">No</option>\n</select>\"\"\")\n        self.assertHTMLEqual(w.render('is_cool', None), \"\"\"<select name=\"is_cool\">\n<option value=\"1\" selected=\"selected\">Unknown</option>\n<option value=\"2\">Yes</option>\n<option value=\"3\">No</option>\n</select>\"\"\")\n        self.assertHTMLEqual(w.render('is_cool', '2'), \"\"\"<select name=\"is_cool\">\n<option value=\"1\">Unknown</option>\n<option value=\"2\" selected=\"selected\">Yes</option>\n<option value=\"3\">No</option>\n</select>\"\"\")\n        self.assertHTMLEqual(w.render('is_cool', '3'), \"\"\"<select name=\"is_cool\">\n<option value=\"1\">Unknown</option>\n<option value=\"2\">Yes</option>\n<option value=\"3\" selected=\"selected\">No</option>\n</select>\"\"\")\n        self.assertTrue(w._has_changed(False, None))\n        self.assertTrue(w._has_changed(None, False))\n        self.assertFalse(w._has_changed(None, None))\n        self.assertFalse(w._has_changed(False, False))\n        self.assertTrue(w._has_changed(True, False))\n        self.assertTrue(w._has_changed(True, None))\n        self.assertTrue(w._has_changed(True, False))\n\n    def test_selectmultiple(self):\n        w = SelectMultiple()\n        self.assertHTMLEqual(w.render('beatles', ['J'], choices=(('J', 'John'), ('P', 'Paul'), ('G', 'George'), ('R', 'Ringo'))), \"\"\"<select multiple=\"multiple\" name=\"beatles\">\n<option value=\"J\" selected=\"selected\">John</option>\n<option value=\"P\">Paul</option>\n<option value=\"G\">George</option>\n<option value=\"R\">Ringo</option>\n</select>\"\"\")\n        self.assertHTMLEqual(w.render('beatles', ['J', 'P'], choices=(('J', 'John'), ('P', 'Paul'), ('G', 'George'), ('R', 'Ringo'))), \"\"\"<select multiple=\"multiple\" name=\"beatles\">\n<option value=\"J\" selected=\"selected\">John</option>\n<option value=\"P\" selected=\"selected\">Paul</option>\n<option value=\"G\">George</option>\n<option value=\"R\">Ringo</option>\n</select>\"\"\")\n        self.assertHTMLEqual(w.render('beatles', ['J', 'P', 'R'], choices=(('J', 'John'), ('P', 'Paul'), ('G', 'George'), ('R', 'Ringo'))), \"\"\"<select multiple=\"multiple\" name=\"beatles\">\n<option value=\"J\" selected=\"selected\">John</option>\n<option value=\"P\" selected=\"selected\">Paul</option>\n<option value=\"G\">George</option>\n<option value=\"R\" selected=\"selected\">Ringo</option>\n</select>\"\"\")\n\n        # If the value is None, none of the options are selected:\n        self.assertHTMLEqual(w.render('beatles', None, choices=(('J', 'John'), ('P', 'Paul'), ('G', 'George'), ('R', 'Ringo'))), \"\"\"<select multiple=\"multiple\" name=\"beatles\">\n<option value=\"J\">John</option>\n<option value=\"P\">Paul</option>\n<option value=\"G\">George</option>\n<option value=\"R\">Ringo</option>\n</select>\"\"\")\n\n        # If the value corresponds to a label (but not to an option value), none of the options are selected:\n        self.assertHTMLEqual(w.render('beatles', ['John'], choices=(('J', 'John'), ('P', 'Paul'), ('G', 'George'), ('R', 'Ringo'))), \"\"\"<select multiple=\"multiple\" name=\"beatles\">\n<option value=\"J\">John</option>\n<option value=\"P\">Paul</option>\n<option value=\"G\">George</option>\n<option value=\"R\">Ringo</option>\n</select>\"\"\")\n\n        # Multiple options (with the same value) can be selected, see #8103:\n        self.assertHTMLEqual(w.render('choices', ['0'], choices=(('0', '0'), ('1', '1'), ('2', '2'), ('3', '3'), ('0', 'extra'))), \"\"\"<select multiple=\"multiple\" name=\"choices\">\n<option value=\"0\" selected=\"selected\">0</option>\n<option value=\"1\">1</option>\n<option value=\"2\">2</option>\n<option value=\"3\">3</option>\n<option value=\"0\" selected=\"selected\">extra</option>\n</select>\"\"\")\n\n        # If multiple values are given, but some of them are not valid, the valid ones are selected:\n        self.assertHTMLEqual(w.render('beatles', ['J', 'G', 'foo'], choices=(('J', 'John'), ('P', 'Paul'), ('G', 'George'), ('R', 'Ringo'))), \"\"\"<select multiple=\"multiple\" name=\"beatles\">\n<option value=\"J\" selected=\"selected\">John</option>\n<option value=\"P\">Paul</option>\n<option value=\"G\" selected=\"selected\">George</option>\n<option value=\"R\">Ringo</option>\n</select>\"\"\")\n\n        # The value is compared to its str():\n        self.assertHTMLEqual(w.render('nums', [2], choices=[('1', '1'), ('2', '2'), ('3', '3')]), \"\"\"<select multiple=\"multiple\" name=\"nums\">\n<option value=\"1\">1</option>\n<option value=\"2\" selected=\"selected\">2</option>\n<option value=\"3\">3</option>\n</select>\"\"\")\n        self.assertHTMLEqual(w.render('nums', ['2'], choices=[(1, 1), (2, 2), (3, 3)]), \"\"\"<select multiple=\"multiple\" name=\"nums\">\n<option value=\"1\">1</option>\n<option value=\"2\" selected=\"selected\">2</option>\n<option value=\"3\">3</option>\n</select>\"\"\")\n        self.assertHTMLEqual(w.render('nums', [2], choices=[(1, 1), (2, 2), (3, 3)]), \"\"\"<select multiple=\"multiple\" name=\"nums\">\n<option value=\"1\">1</option>\n<option value=\"2\" selected=\"selected\">2</option>\n<option value=\"3\">3</option>\n</select>\"\"\")\n\n        # The 'choices' argument can be any iterable:\n        def get_choices():\n            for i in range(5):\n                yield (i, i)\n        self.assertHTMLEqual(w.render('nums', [2], choices=get_choices()), \"\"\"<select multiple=\"multiple\" name=\"nums\">\n<option value=\"0\">0</option>\n<option value=\"1\">1</option>\n<option value=\"2\" selected=\"selected\">2</option>\n<option value=\"3\">3</option>\n<option value=\"4\">4</option>\n</select>\"\"\")\n\n        # You can also pass 'choices' to the constructor:\n        w = SelectMultiple(choices=[(1, 1), (2, 2), (3, 3)])\n        self.assertHTMLEqual(w.render('nums', [2]), \"\"\"<select multiple=\"multiple\" name=\"nums\">\n<option value=\"1\">1</option>\n<option value=\"2\" selected=\"selected\">2</option>\n<option value=\"3\">3</option>\n</select>\"\"\")\n\n        # If 'choices' is passed to both the constructor and render(), then they'll both be in the output:\n        self.assertHTMLEqual(w.render('nums', [2], choices=[(4, 4), (5, 5)]), \"\"\"<select multiple=\"multiple\" name=\"nums\">\n<option value=\"1\">1</option>\n<option value=\"2\" selected=\"selected\">2</option>\n<option value=\"3\">3</option>\n<option value=\"4\">4</option>\n<option value=\"5\">5</option>\n</select>\"\"\")\n\n        # Choices are escaped correctly\n        self.assertHTMLEqual(w.render('escape', None, choices=(('bad', 'you & me'), ('good', mark_safe('you &gt; me')))), \"\"\"<select multiple=\"multiple\" name=\"escape\">\n<option value=\"1\">1</option>\n<option value=\"2\">2</option>\n<option value=\"3\">3</option>\n<option value=\"bad\">you &amp; me</option>\n<option value=\"good\">you &gt; me</option>\n</select>\"\"\")\n\n        # Unicode choices are correctly rendered as HTML\n        self.assertHTMLEqual(w.render('nums', ['ŠĐĆŽćžšđ'], choices=[('ŠĐĆŽćžšđ', 'ŠĐabcĆŽćžšđ'), ('ćžšđ', 'abcćžšđ')]), '<select multiple=\"multiple\" name=\"nums\">\\n<option value=\"1\">1</option>\\n<option value=\"2\">2</option>\\n<option value=\"3\">3</option>\\n<option value=\"\\u0160\\u0110\\u0106\\u017d\\u0107\\u017e\\u0161\\u0111\" selected=\"selected\">\\u0160\\u0110abc\\u0106\\u017d\\u0107\\u017e\\u0161\\u0111</option>\\n<option value=\"\\u0107\\u017e\\u0161\\u0111\">abc\\u0107\\u017e\\u0161\\u0111</option>\\n</select>')\n\n        # Test the usage of _has_changed\n        self.assertFalse(w._has_changed(None, None))\n        self.assertFalse(w._has_changed([], None))\n        self.assertTrue(w._has_changed(None, ['1']))\n        self.assertFalse(w._has_changed([1, 2], ['1', '2']))\n        self.assertTrue(w._has_changed([1, 2], ['1']))\n        self.assertTrue(w._has_changed([1, 2], ['1', '3']))\n\n        # Choices can be nested one level in order to create HTML optgroups:\n        w.choices = (('outer1', 'Outer 1'), ('Group \"1\"', (('inner1', 'Inner 1'), ('inner2', 'Inner 2'))))\n        self.assertHTMLEqual(w.render('nestchoice', None), \"\"\"<select multiple=\"multiple\" name=\"nestchoice\">\n<option value=\"outer1\">Outer 1</option>\n<optgroup label=\"Group &quot;1&quot;\">\n<option value=\"inner1\">Inner 1</option>\n<option value=\"inner2\">Inner 2</option>\n</optgroup>\n</select>\"\"\")\n\n        self.assertHTMLEqual(w.render('nestchoice', ['outer1']), \"\"\"<select multiple=\"multiple\" name=\"nestchoice\">\n<option value=\"outer1\" selected=\"selected\">Outer 1</option>\n<optgroup label=\"Group &quot;1&quot;\">\n<option value=\"inner1\">Inner 1</option>\n<option value=\"inner2\">Inner 2</option>\n</optgroup>\n</select>\"\"\")\n\n        self.assertHTMLEqual(w.render('nestchoice', ['inner1']), \"\"\"<select multiple=\"multiple\" name=\"nestchoice\">\n<option value=\"outer1\">Outer 1</option>\n<optgroup label=\"Group &quot;1&quot;\">\n<option value=\"inner1\" selected=\"selected\">Inner 1</option>\n<option value=\"inner2\">Inner 2</option>\n</optgroup>\n</select>\"\"\")\n\n        self.assertHTMLEqual(w.render('nestchoice', ['outer1', 'inner2']), \"\"\"<select multiple=\"multiple\" name=\"nestchoice\">\n<option value=\"outer1\" selected=\"selected\">Outer 1</option>\n<optgroup label=\"Group &quot;1&quot;\">\n<option value=\"inner1\">Inner 1</option>\n<option value=\"inner2\" selected=\"selected\">Inner 2</option>\n</optgroup>\n</select>\"\"\")\n\n    def test_radioselect(self):\n        w = RadioSelect()\n        self.assertHTMLEqual(w.render('beatle', 'J', choices=(('J', 'John'), ('P', 'Paul'), ('G', 'George'), ('R', 'Ringo'))), \"\"\"<ul>\n<li><label><input checked=\"checked\" type=\"radio\" name=\"beatle\" value=\"J\" /> John</label></li>\n<li><label><input type=\"radio\" name=\"beatle\" value=\"P\" /> Paul</label></li>\n<li><label><input type=\"radio\" name=\"beatle\" value=\"G\" /> George</label></li>\n<li><label><input type=\"radio\" name=\"beatle\" value=\"R\" /> Ringo</label></li>\n</ul>\"\"\")\n\n        # If the value is None, none of the options are checked:\n        self.assertHTMLEqual(w.render('beatle', None, choices=(('J', 'John'), ('P', 'Paul'), ('G', 'George'), ('R', 'Ringo'))), \"\"\"<ul>\n<li><label><input type=\"radio\" name=\"beatle\" value=\"J\" /> John</label></li>\n<li><label><input type=\"radio\" name=\"beatle\" value=\"P\" /> Paul</label></li>\n<li><label><input type=\"radio\" name=\"beatle\" value=\"G\" /> George</label></li>\n<li><label><input type=\"radio\" name=\"beatle\" value=\"R\" /> Ringo</label></li>\n</ul>\"\"\")\n\n        # If the value corresponds to a label (but not to an option value), none of the options are checked:\n        self.assertHTMLEqual(w.render('beatle', 'John', choices=(('J', 'John'), ('P', 'Paul'), ('G', 'George'), ('R', 'Ringo'))), \"\"\"<ul>\n<li><label><input type=\"radio\" name=\"beatle\" value=\"J\" /> John</label></li>\n<li><label><input type=\"radio\" name=\"beatle\" value=\"P\" /> Paul</label></li>\n<li><label><input type=\"radio\" name=\"beatle\" value=\"G\" /> George</label></li>\n<li><label><input type=\"radio\" name=\"beatle\" value=\"R\" /> Ringo</label></li>\n</ul>\"\"\")\n\n        # The value is compared to its str():\n        self.assertHTMLEqual(w.render('num', 2, choices=[('1', '1'), ('2', '2'), ('3', '3')]), \"\"\"<ul>\n<li><label><input type=\"radio\" name=\"num\" value=\"1\" /> 1</label></li>\n<li><label><input checked=\"checked\" type=\"radio\" name=\"num\" value=\"2\" /> 2</label></li>\n<li><label><input type=\"radio\" name=\"num\" value=\"3\" /> 3</label></li>\n</ul>\"\"\")\n        self.assertHTMLEqual(w.render('num', '2', choices=[(1, 1), (2, 2), (3, 3)]), \"\"\"<ul>\n<li><label><input type=\"radio\" name=\"num\" value=\"1\" /> 1</label></li>\n<li><label><input checked=\"checked\" type=\"radio\" name=\"num\" value=\"2\" /> 2</label></li>\n<li><label><input type=\"radio\" name=\"num\" value=\"3\" /> 3</label></li>\n</ul>\"\"\")\n        self.assertHTMLEqual(w.render('num', 2, choices=[(1, 1), (2, 2), (3, 3)]), \"\"\"<ul>\n<li><label><input type=\"radio\" name=\"num\" value=\"1\" /> 1</label></li>\n<li><label><input checked=\"checked\" type=\"radio\" name=\"num\" value=\"2\" /> 2</label></li>\n<li><label><input type=\"radio\" name=\"num\" value=\"3\" /> 3</label></li>\n</ul>\"\"\")\n\n        # The 'choices' argument can be any iterable:\n        def get_choices():\n            for i in range(5):\n                yield (i, i)\n        self.assertHTMLEqual(w.render('num', 2, choices=get_choices()), \"\"\"<ul>\n<li><label><input type=\"radio\" name=\"num\" value=\"0\" /> 0</label></li>\n<li><label><input type=\"radio\" name=\"num\" value=\"1\" /> 1</label></li>\n<li><label><input checked=\"checked\" type=\"radio\" name=\"num\" value=\"2\" /> 2</label></li>\n<li><label><input type=\"radio\" name=\"num\" value=\"3\" /> 3</label></li>\n<li><label><input type=\"radio\" name=\"num\" value=\"4\" /> 4</label></li>\n</ul>\"\"\")\n\n        # You can also pass 'choices' to the constructor:\n        w = RadioSelect(choices=[(1, 1), (2, 2), (3, 3)])\n        self.assertHTMLEqual(w.render('num', 2), \"\"\"<ul>\n<li><label><input type=\"radio\" name=\"num\" value=\"1\" /> 1</label></li>\n<li><label><input checked=\"checked\" type=\"radio\" name=\"num\" value=\"2\" /> 2</label></li>\n<li><label><input type=\"radio\" name=\"num\" value=\"3\" /> 3</label></li>\n</ul>\"\"\")\n\n        # If 'choices' is passed to both the constructor and render(), then they'll both be in the output:\n        self.assertHTMLEqual(w.render('num', 2, choices=[(4, 4), (5, 5)]), \"\"\"<ul>\n<li><label><input type=\"radio\" name=\"num\" value=\"1\" /> 1</label></li>\n<li><label><input checked=\"checked\" type=\"radio\" name=\"num\" value=\"2\" /> 2</label></li>\n<li><label><input type=\"radio\" name=\"num\" value=\"3\" /> 3</label></li>\n<li><label><input type=\"radio\" name=\"num\" value=\"4\" /> 4</label></li>\n<li><label><input type=\"radio\" name=\"num\" value=\"5\" /> 5</label></li>\n</ul>\"\"\")\n\n        # RadioSelect uses a RadioFieldRenderer to render the individual radio inputs.\n        # You can manipulate that object directly to customize the way the RadioSelect\n        # is rendered.\n        w = RadioSelect()\n        r = w.get_renderer('beatle', 'J', choices=(('J', 'John'), ('P', 'Paul'), ('G', 'George'), ('R', 'Ringo')))\n        inp_set1 = []\n        inp_set2 = []\n        inp_set3 = []\n        inp_set4 = []\n\n        for inp in r:\n            inp_set1.append(str(inp))\n            inp_set2.append('%s<br />' % inp)\n            inp_set3.append('<p>%s %s</p>' % (inp.tag(), inp.choice_label))\n            inp_set4.append('%s %s %s %s %s' % (inp.name, inp.value, inp.choice_value, inp.choice_label, inp.is_checked()))\n\n        self.assertHTMLEqual('\\n'.join(inp_set1), \"\"\"<label><input checked=\"checked\" type=\"radio\" name=\"beatle\" value=\"J\" /> John</label>\n<label><input type=\"radio\" name=\"beatle\" value=\"P\" /> Paul</label>\n<label><input type=\"radio\" name=\"beatle\" value=\"G\" /> George</label>\n<label><input type=\"radio\" name=\"beatle\" value=\"R\" /> Ringo</label>\"\"\")\n        self.assertHTMLEqual('\\n'.join(inp_set2), \"\"\"<label><input checked=\"checked\" type=\"radio\" name=\"beatle\" value=\"J\" /> John</label><br />\n<label><input type=\"radio\" name=\"beatle\" value=\"P\" /> Paul</label><br />\n<label><input type=\"radio\" name=\"beatle\" value=\"G\" /> George</label><br />\n<label><input type=\"radio\" name=\"beatle\" value=\"R\" /> Ringo</label><br />\"\"\")\n        self.assertHTMLEqual('\\n'.join(inp_set3), \"\"\"<p><input checked=\"checked\" type=\"radio\" name=\"beatle\" value=\"J\" /> John</p>\n<p><input type=\"radio\" name=\"beatle\" value=\"P\" /> Paul</p>\n<p><input type=\"radio\" name=\"beatle\" value=\"G\" /> George</p>\n<p><input type=\"radio\" name=\"beatle\" value=\"R\" /> Ringo</p>\"\"\")\n        self.assertHTMLEqual('\\n'.join(inp_set4), \"\"\"beatle J J John True\nbeatle J P Paul False\nbeatle J G George False\nbeatle J R Ringo False\"\"\")\n\n        # You can create your own custom renderers for RadioSelect to use.\n        class MyRenderer(RadioFieldRenderer):\n           def render(self):\n               return '<br />\\n'.join([six.text_type(choice) for choice in self])\n        w = RadioSelect(renderer=MyRenderer)\n        self.assertHTMLEqual(w.render('beatle', 'G', choices=(('J', 'John'), ('P', 'Paul'), ('G', 'George'), ('R', 'Ringo'))), \"\"\"<label><input type=\"radio\" name=\"beatle\" value=\"J\" /> John</label><br />\n<label><input type=\"radio\" name=\"beatle\" value=\"P\" /> Paul</label><br />\n<label><input checked=\"checked\" type=\"radio\" name=\"beatle\" value=\"G\" /> George</label><br />\n<label><input type=\"radio\" name=\"beatle\" value=\"R\" /> Ringo</label>\"\"\")\n\n        # Or you can use custom RadioSelect fields that use your custom renderer.\n        class CustomRadioSelect(RadioSelect):\n           renderer = MyRenderer\n        w = CustomRadioSelect()\n        self.assertHTMLEqual(w.render('beatle', 'G', choices=(('J', 'John'), ('P', 'Paul'), ('G', 'George'), ('R', 'Ringo'))), \"\"\"<label><input type=\"radio\" name=\"beatle\" value=\"J\" /> John</label><br />\n<label><input type=\"radio\" name=\"beatle\" value=\"P\" /> Paul</label><br />\n<label><input checked=\"checked\" type=\"radio\" name=\"beatle\" value=\"G\" /> George</label><br />\n<label><input type=\"radio\" name=\"beatle\" value=\"R\" /> Ringo</label>\"\"\")\n\n        # A RadioFieldRenderer object also allows index access to individual RadioInput\n        w = RadioSelect()\n        r = w.get_renderer('beatle', 'J', choices=(('J', 'John'), ('P', 'Paul'), ('G', 'George'), ('R', 'Ringo')))\n        self.assertHTMLEqual(str(r[1]), '<label><input type=\"radio\" name=\"beatle\" value=\"P\" /> Paul</label>')\n        self.assertHTMLEqual(str(r[0]), '<label><input checked=\"checked\" type=\"radio\" name=\"beatle\" value=\"J\" /> John</label>')\n        self.assertTrue(r[0].is_checked())\n        self.assertFalse(r[1].is_checked())\n        self.assertEqual((r[1].name, r[1].value, r[1].choice_value, r[1].choice_label), ('beatle', 'J', 'P', 'Paul'))\n\n        try:\n            r[10]\n            self.fail(\"This offset should not exist.\")\n        except IndexError:\n            pass\n\n        # Choices are escaped correctly\n        w = RadioSelect()\n        self.assertHTMLEqual(w.render('escape', None, choices=(('bad', 'you & me'), ('good', mark_safe('you &gt; me')))), \"\"\"<ul>\n<li><label><input type=\"radio\" name=\"escape\" value=\"bad\" /> you &amp; me</label></li>\n<li><label><input type=\"radio\" name=\"escape\" value=\"good\" /> you &gt; me</label></li>\n</ul>\"\"\")\n\n        # Unicode choices are correctly rendered as HTML\n        w = RadioSelect()\n        self.assertHTMLEqual(six.text_type(w.render('email', 'ŠĐĆŽćžšđ', choices=[('ŠĐĆŽćžšđ', 'ŠĐabcĆŽćžšđ'), ('ćžšđ', 'abcćžšđ')])), '<ul>\\n<li><label><input checked=\"checked\" type=\"radio\" name=\"email\" value=\"\\u0160\\u0110\\u0106\\u017d\\u0107\\u017e\\u0161\\u0111\" /> \\u0160\\u0110abc\\u0106\\u017d\\u0107\\u017e\\u0161\\u0111</label></li>\\n<li><label><input type=\"radio\" name=\"email\" value=\"\\u0107\\u017e\\u0161\\u0111\" /> abc\\u0107\\u017e\\u0161\\u0111</label></li>\\n</ul>')\n\n        # Attributes provided at instantiation are passed to the constituent inputs\n        w = RadioSelect(attrs={'id':'foo'})\n        self.assertHTMLEqual(w.render('beatle', 'J', choices=(('J', 'John'), ('P', 'Paul'), ('G', 'George'), ('R', 'Ringo'))), \"\"\"<ul>\n<li><label for=\"foo_0\"><input checked=\"checked\" type=\"radio\" id=\"foo_0\" value=\"J\" name=\"beatle\" /> John</label></li>\n<li><label for=\"foo_1\"><input type=\"radio\" id=\"foo_1\" value=\"P\" name=\"beatle\" /> Paul</label></li>\n<li><label for=\"foo_2\"><input type=\"radio\" id=\"foo_2\" value=\"G\" name=\"beatle\" /> George</label></li>\n<li><label for=\"foo_3\"><input type=\"radio\" id=\"foo_3\" value=\"R\" name=\"beatle\" /> Ringo</label></li>\n</ul>\"\"\")\n\n        # Attributes provided at render-time are passed to the constituent inputs\n        w = RadioSelect()\n        self.assertHTMLEqual(w.render('beatle', 'J', choices=(('J', 'John'), ('P', 'Paul'), ('G', 'George'), ('R', 'Ringo')), attrs={'id':'bar'}), \"\"\"<ul>\n<li><label for=\"bar_0\"><input checked=\"checked\" type=\"radio\" id=\"bar_0\" value=\"J\" name=\"beatle\" /> John</label></li>\n<li><label for=\"bar_1\"><input type=\"radio\" id=\"bar_1\" value=\"P\" name=\"beatle\" /> Paul</label></li>\n<li><label for=\"bar_2\"><input type=\"radio\" id=\"bar_2\" value=\"G\" name=\"beatle\" /> George</label></li>\n<li><label for=\"bar_3\"><input type=\"radio\" id=\"bar_3\" value=\"R\" name=\"beatle\" /> Ringo</label></li>\n</ul>\"\"\")\n\n    def test_checkboxselectmultiple(self):\n        w = CheckboxSelectMultiple()\n        self.assertHTMLEqual(w.render('beatles', ['J'], choices=(('J', 'John'), ('P', 'Paul'), ('G', 'George'), ('R', 'Ringo'))), \"\"\"<ul>\n<li><label><input checked=\"checked\" type=\"checkbox\" name=\"beatles\" value=\"J\" /> John</label></li>\n<li><label><input type=\"checkbox\" name=\"beatles\" value=\"P\" /> Paul</label></li>\n<li><label><input type=\"checkbox\" name=\"beatles\" value=\"G\" /> George</label></li>\n<li><label><input type=\"checkbox\" name=\"beatles\" value=\"R\" /> Ringo</label></li>\n</ul>\"\"\")\n        self.assertHTMLEqual(w.render('beatles', ['J', 'P'], choices=(('J', 'John'), ('P', 'Paul'), ('G', 'George'), ('R', 'Ringo'))), \"\"\"<ul>\n<li><label><input checked=\"checked\" type=\"checkbox\" name=\"beatles\" value=\"J\" /> John</label></li>\n<li><label><input checked=\"checked\" type=\"checkbox\" name=\"beatles\" value=\"P\" /> Paul</label></li>\n<li><label><input type=\"checkbox\" name=\"beatles\" value=\"G\" /> George</label></li>\n<li><label><input type=\"checkbox\" name=\"beatles\" value=\"R\" /> Ringo</label></li>\n</ul>\"\"\")\n        self.assertHTMLEqual(w.render('beatles', ['J', 'P', 'R'], choices=(('J', 'John'), ('P', 'Paul'), ('G', 'George'), ('R', 'Ringo'))), \"\"\"<ul>\n<li><label><input checked=\"checked\" type=\"checkbox\" name=\"beatles\" value=\"J\" /> John</label></li>\n<li><label><input checked=\"checked\" type=\"checkbox\" name=\"beatles\" value=\"P\" /> Paul</label></li>\n<li><label><input type=\"checkbox\" name=\"beatles\" value=\"G\" /> George</label></li>\n<li><label><input checked=\"checked\" type=\"checkbox\" name=\"beatles\" value=\"R\" /> Ringo</label></li>\n</ul>\"\"\")\n\n        # If the value is None, none of the options are selected:\n        self.assertHTMLEqual(w.render('beatles', None, choices=(('J', 'John'), ('P', 'Paul'), ('G', 'George'), ('R', 'Ringo'))), \"\"\"<ul>\n<li><label><input type=\"checkbox\" name=\"beatles\" value=\"J\" /> John</label></li>\n<li><label><input type=\"checkbox\" name=\"beatles\" value=\"P\" /> Paul</label></li>\n<li><label><input type=\"checkbox\" name=\"beatles\" value=\"G\" /> George</label></li>\n<li><label><input type=\"checkbox\" name=\"beatles\" value=\"R\" /> Ringo</label></li>\n</ul>\"\"\")\n\n        # If the value corresponds to a label (but not to an option value), none of the options are selected:\n        self.assertHTMLEqual(w.render('beatles', ['John'], choices=(('J', 'John'), ('P', 'Paul'), ('G', 'George'), ('R', 'Ringo'))), \"\"\"<ul>\n<li><label><input type=\"checkbox\" name=\"beatles\" value=\"J\" /> John</label></li>\n<li><label><input type=\"checkbox\" name=\"beatles\" value=\"P\" /> Paul</label></li>\n<li><label><input type=\"checkbox\" name=\"beatles\" value=\"G\" /> George</label></li>\n<li><label><input type=\"checkbox\" name=\"beatles\" value=\"R\" /> Ringo</label></li>\n</ul>\"\"\")\n\n        # If multiple values are given, but some of them are not valid, the valid ones are selected:\n        self.assertHTMLEqual(w.render('beatles', ['J', 'G', 'foo'], choices=(('J', 'John'), ('P', 'Paul'), ('G', 'George'), ('R', 'Ringo'))), \"\"\"<ul>\n<li><label><input checked=\"checked\" type=\"checkbox\" name=\"beatles\" value=\"J\" /> John</label></li>\n<li><label><input type=\"checkbox\" name=\"beatles\" value=\"P\" /> Paul</label></li>\n<li><label><input checked=\"checked\" type=\"checkbox\" name=\"beatles\" value=\"G\" /> George</label></li>\n<li><label><input type=\"checkbox\" name=\"beatles\" value=\"R\" /> Ringo</label></li>\n</ul>\"\"\")\n\n        # The value is compared to its str():\n        self.assertHTMLEqual(w.render('nums', [2], choices=[('1', '1'), ('2', '2'), ('3', '3')]), \"\"\"<ul>\n<li><label><input type=\"checkbox\" name=\"nums\" value=\"1\" /> 1</label></li>\n<li><label><input checked=\"checked\" type=\"checkbox\" name=\"nums\" value=\"2\" /> 2</label></li>\n<li><label><input type=\"checkbox\" name=\"nums\" value=\"3\" /> 3</label></li>\n</ul>\"\"\")\n        self.assertHTMLEqual(w.render('nums', ['2'], choices=[(1, 1), (2, 2), (3, 3)]), \"\"\"<ul>\n<li><label><input type=\"checkbox\" name=\"nums\" value=\"1\" /> 1</label></li>\n<li><label><input checked=\"checked\" type=\"checkbox\" name=\"nums\" value=\"2\" /> 2</label></li>\n<li><label><input type=\"checkbox\" name=\"nums\" value=\"3\" /> 3</label></li>\n</ul>\"\"\")\n        self.assertHTMLEqual(w.render('nums', [2], choices=[(1, 1), (2, 2), (3, 3)]), \"\"\"<ul>\n<li><label><input type=\"checkbox\" name=\"nums\" value=\"1\" /> 1</label></li>\n<li><label><input checked=\"checked\" type=\"checkbox\" name=\"nums\" value=\"2\" /> 2</label></li>\n<li><label><input type=\"checkbox\" name=\"nums\" value=\"3\" /> 3</label></li>\n</ul>\"\"\")\n\n        # The 'choices' argument can be any iterable:\n        def get_choices():\n            for i in range(5):\n                yield (i, i)\n        self.assertHTMLEqual(w.render('nums', [2], choices=get_choices()), \"\"\"<ul>\n<li><label><input type=\"checkbox\" name=\"nums\" value=\"0\" /> 0</label></li>\n<li><label><input type=\"checkbox\" name=\"nums\" value=\"1\" /> 1</label></li>\n<li><label><input checked=\"checked\" type=\"checkbox\" name=\"nums\" value=\"2\" /> 2</label></li>\n<li><label><input type=\"checkbox\" name=\"nums\" value=\"3\" /> 3</label></li>\n<li><label><input type=\"checkbox\" name=\"nums\" value=\"4\" /> 4</label></li>\n</ul>\"\"\")\n\n        # You can also pass 'choices' to the constructor:\n        w = CheckboxSelectMultiple(choices=[(1, 1), (2, 2), (3, 3)])\n        self.assertHTMLEqual(w.render('nums', [2]), \"\"\"<ul>\n<li><label><input type=\"checkbox\" name=\"nums\" value=\"1\" /> 1</label></li>\n<li><label><input checked=\"checked\" type=\"checkbox\" name=\"nums\" value=\"2\" /> 2</label></li>\n<li><label><input type=\"checkbox\" name=\"nums\" value=\"3\" /> 3</label></li>\n</ul>\"\"\")\n\n        # If 'choices' is passed to both the constructor and render(), then they'll both be in the output:\n        self.assertHTMLEqual(w.render('nums', [2], choices=[(4, 4), (5, 5)]), \"\"\"<ul>\n<li><label><input type=\"checkbox\" name=\"nums\" value=\"1\" /> 1</label></li>\n<li><label><input checked=\"checked\" type=\"checkbox\" name=\"nums\" value=\"2\" /> 2</label></li>\n<li><label><input type=\"checkbox\" name=\"nums\" value=\"3\" /> 3</label></li>\n<li><label><input type=\"checkbox\" name=\"nums\" value=\"4\" /> 4</label></li>\n<li><label><input type=\"checkbox\" name=\"nums\" value=\"5\" /> 5</label></li>\n</ul>\"\"\")\n\n        # Choices are escaped correctly\n        self.assertHTMLEqual(w.render('escape', None, choices=(('bad', 'you & me'), ('good', mark_safe('you &gt; me')))), \"\"\"<ul>\n<li><label><input type=\"checkbox\" name=\"escape\" value=\"1\" /> 1</label></li>\n<li><label><input type=\"checkbox\" name=\"escape\" value=\"2\" /> 2</label></li>\n<li><label><input type=\"checkbox\" name=\"escape\" value=\"3\" /> 3</label></li>\n<li><label><input type=\"checkbox\" name=\"escape\" value=\"bad\" /> you &amp; me</label></li>\n<li><label><input type=\"checkbox\" name=\"escape\" value=\"good\" /> you &gt; me</label></li>\n</ul>\"\"\")\n\n        # Test the usage of _has_changed\n        self.assertFalse(w._has_changed(None, None))\n        self.assertFalse(w._has_changed([], None))\n        self.assertTrue(w._has_changed(None, ['1']))\n        self.assertFalse(w._has_changed([1, 2], ['1', '2']))\n        self.assertTrue(w._has_changed([1, 2], ['1']))\n        self.assertTrue(w._has_changed([1, 2], ['1', '3']))\n        self.assertFalse(w._has_changed([2, 1], ['1', '2']))\n\n        # Unicode choices are correctly rendered as HTML\n        self.assertHTMLEqual(w.render('nums', ['ŠĐĆŽćžšđ'], choices=[('ŠĐĆŽćžšđ', 'ŠĐabcĆŽćžšđ'), ('ćžšđ', 'abcćžšđ')]), '<ul>\\n<li><label><input type=\"checkbox\" name=\"nums\" value=\"1\" /> 1</label></li>\\n<li><label><input type=\"checkbox\" name=\"nums\" value=\"2\" /> 2</label></li>\\n<li><label><input type=\"checkbox\" name=\"nums\" value=\"3\" /> 3</label></li>\\n<li><label><input checked=\"checked\" type=\"checkbox\" name=\"nums\" value=\"\\u0160\\u0110\\u0106\\u017d\\u0107\\u017e\\u0161\\u0111\" /> \\u0160\\u0110abc\\u0106\\u017d\\u0107\\u017e\\u0161\\u0111</label></li>\\n<li><label><input type=\"checkbox\" name=\"nums\" value=\"\\u0107\\u017e\\u0161\\u0111\" /> abc\\u0107\\u017e\\u0161\\u0111</label></li>\\n</ul>')\n\n        # Each input gets a separate ID\n        self.assertHTMLEqual(CheckboxSelectMultiple().render('letters', list('ac'), choices=zip(list('abc'), list('ABC')), attrs={'id': 'abc'}), \"\"\"<ul>\n<li><label for=\"abc_0\"><input checked=\"checked\" type=\"checkbox\" name=\"letters\" value=\"a\" id=\"abc_0\" /> A</label></li>\n<li><label for=\"abc_1\"><input type=\"checkbox\" name=\"letters\" value=\"b\" id=\"abc_1\" /> B</label></li>\n<li><label for=\"abc_2\"><input checked=\"checked\" type=\"checkbox\" name=\"letters\" value=\"c\" id=\"abc_2\" /> C</label></li>\n</ul>\"\"\")\n\n    def test_multi(self):\n        class MyMultiWidget(MultiWidget):\n            def decompress(self, value):\n                if value:\n                    return value.split('__')\n                return ['', '']\n            def format_output(self, rendered_widgets):\n                return '<br />'.join(rendered_widgets)\n\n        w = MyMultiWidget(widgets=(TextInput(attrs={'class': 'big'}), TextInput(attrs={'class': 'small'})))\n        self.assertHTMLEqual(w.render('name', ['john', 'lennon']), '<input type=\"text\" class=\"big\" value=\"john\" name=\"name_0\" /><br /><input type=\"text\" class=\"small\" value=\"lennon\" name=\"name_1\" />')\n        self.assertHTMLEqual(w.render('name', 'john__lennon'), '<input type=\"text\" class=\"big\" value=\"john\" name=\"name_0\" /><br /><input type=\"text\" class=\"small\" value=\"lennon\" name=\"name_1\" />')\n        self.assertHTMLEqual(w.render('name', 'john__lennon', attrs={'id':'foo'}), '<input id=\"foo_0\" type=\"text\" class=\"big\" value=\"john\" name=\"name_0\" /><br /><input id=\"foo_1\" type=\"text\" class=\"small\" value=\"lennon\" name=\"name_1\" />')\n        w = MyMultiWidget(widgets=(TextInput(attrs={'class': 'big'}), TextInput(attrs={'class': 'small'})), attrs={'id': 'bar'})\n        self.assertHTMLEqual(w.render('name', ['john', 'lennon']), '<input id=\"bar_0\" type=\"text\" class=\"big\" value=\"john\" name=\"name_0\" /><br /><input id=\"bar_1\" type=\"text\" class=\"small\" value=\"lennon\" name=\"name_1\" />')\n\n        w = MyMultiWidget(widgets=(TextInput(), TextInput()))\n\n        # test with no initial data\n        self.assertTrue(w._has_changed(None, ['john', 'lennon']))\n\n        # test when the data is the same as initial\n        self.assertFalse(w._has_changed('john__lennon', ['john', 'lennon']))\n\n        # test when the first widget's data has changed\n        self.assertTrue(w._has_changed('john__lennon', ['alfred', 'lennon']))\n\n        # test when the last widget's data has changed. this ensures that it is not\n        # short circuiting while testing the widgets.\n        self.assertTrue(w._has_changed('john__lennon', ['john', 'denver']))\n\n    def test_splitdatetime(self):\n        w = SplitDateTimeWidget()\n        self.assertHTMLEqual(w.render('date', ''), '<input type=\"text\" name=\"date_0\" /><input type=\"text\" name=\"date_1\" />')\n        self.assertHTMLEqual(w.render('date', None), '<input type=\"text\" name=\"date_0\" /><input type=\"text\" name=\"date_1\" />')\n        self.assertHTMLEqual(w.render('date', datetime.datetime(2006, 1, 10, 7, 30)), '<input type=\"text\" name=\"date_0\" value=\"2006-01-10\" /><input type=\"text\" name=\"date_1\" value=\"07:30:00\" />')\n        self.assertHTMLEqual(w.render('date', [datetime.date(2006, 1, 10), datetime.time(7, 30)]), '<input type=\"text\" name=\"date_0\" value=\"2006-01-10\" /><input type=\"text\" name=\"date_1\" value=\"07:30:00\" />')\n\n        # You can also pass 'attrs' to the constructor. In this case, the attrs will be\n        w = SplitDateTimeWidget(attrs={'class': 'pretty'})\n        self.assertHTMLEqual(w.render('date', datetime.datetime(2006, 1, 10, 7, 30)), '<input type=\"text\" class=\"pretty\" value=\"2006-01-10\" name=\"date_0\" /><input type=\"text\" class=\"pretty\" value=\"07:30:00\" name=\"date_1\" />')\n\n        # Use 'date_format' and 'time_format' to change the way a value is displayed.\n        w = SplitDateTimeWidget(date_format='%d/%m/%Y', time_format='%H:%M')\n        self.assertHTMLEqual(w.render('date', datetime.datetime(2006, 1, 10, 7, 30)), '<input type=\"text\" name=\"date_0\" value=\"10/01/2006\" /><input type=\"text\" name=\"date_1\" value=\"07:30\" />')\n\n        self.assertTrue(w._has_changed(datetime.datetime(2008, 5, 6, 12, 40, 00), ['2008-05-06', '12:40:00']))\n        self.assertFalse(w._has_changed(datetime.datetime(2008, 5, 6, 12, 40, 00), ['06/05/2008', '12:40']))\n        self.assertTrue(w._has_changed(datetime.datetime(2008, 5, 6, 12, 40, 00), ['06/05/2008', '12:41']))\n\n    def test_datetimeinput(self):\n        w = DateTimeInput()\n        self.assertHTMLEqual(w.render('date', None), '<input type=\"text\" name=\"date\" />')\n        d = datetime.datetime(2007, 9, 17, 12, 51, 34, 482548)\n        self.assertEqual(str(d), '2007-09-17 12:51:34.482548')\n\n        # The microseconds are trimmed on display, by default.\n        self.assertHTMLEqual(w.render('date', d), '<input type=\"text\" name=\"date\" value=\"2007-09-17 12:51:34\" />')\n        self.assertHTMLEqual(w.render('date', datetime.datetime(2007, 9, 17, 12, 51, 34)), '<input type=\"text\" name=\"date\" value=\"2007-09-17 12:51:34\" />')\n        self.assertHTMLEqual(w.render('date', datetime.datetime(2007, 9, 17, 12, 51)), '<input type=\"text\" name=\"date\" value=\"2007-09-17 12:51:00\" />')\n\n        # Use 'format' to change the way a value is displayed.\n        w = DateTimeInput(format='%d/%m/%Y %H:%M', attrs={'type': 'datetime'})\n        self.assertHTMLEqual(w.render('date', d), '<input type=\"datetime\" name=\"date\" value=\"17/09/2007 12:51\" />')\n        self.assertFalse(w._has_changed(d, '17/09/2007 12:51'))\n\n        # Make sure a custom format works with _has_changed. The hidden input will use\n        data = datetime.datetime(2010, 3, 6, 12, 0, 0)\n        custom_format = '%d.%m.%Y %H:%M'\n        w = DateTimeInput(format=custom_format)\n        self.assertFalse(w._has_changed(formats.localize_input(data), data.strftime(custom_format)))\n\n    def test_dateinput(self):\n        w = DateInput()\n        self.assertHTMLEqual(w.render('date', None), '<input type=\"text\" name=\"date\" />')\n        d = datetime.date(2007, 9, 17)\n        self.assertEqual(str(d), '2007-09-17')\n\n        self.assertHTMLEqual(w.render('date', d), '<input type=\"text\" name=\"date\" value=\"2007-09-17\" />')\n        self.assertHTMLEqual(w.render('date', datetime.date(2007, 9, 17)), '<input type=\"text\" name=\"date\" value=\"2007-09-17\" />')\n\n        # We should be able to initialize from a unicode value.\n        self.assertHTMLEqual(w.render('date', '2007-09-17'), '<input type=\"text\" name=\"date\" value=\"2007-09-17\" />')\n\n        # Use 'format' to change the way a value is displayed.\n        w = DateInput(format='%d/%m/%Y', attrs={'type': 'date'})\n        self.assertHTMLEqual(w.render('date', d), '<input type=\"date\" name=\"date\" value=\"17/09/2007\" />')\n        self.assertFalse(w._has_changed(d, '17/09/2007'))\n\n        # Make sure a custom format works with _has_changed. The hidden input will use\n        data = datetime.date(2010, 3, 6)\n        custom_format = '%d.%m.%Y'\n        w = DateInput(format=custom_format)\n        self.assertFalse(w._has_changed(formats.localize_input(data), data.strftime(custom_format)))\n\n    def test_timeinput(self):\n        w = TimeInput()\n        self.assertHTMLEqual(w.render('time', None), '<input type=\"text\" name=\"time\" />')\n        t = datetime.time(12, 51, 34, 482548)\n        self.assertEqual(str(t), '12:51:34.482548')\n\n        # The microseconds are trimmed on display, by default.\n        self.assertHTMLEqual(w.render('time', t), '<input type=\"text\" name=\"time\" value=\"12:51:34\" />')\n        self.assertHTMLEqual(w.render('time', datetime.time(12, 51, 34)), '<input type=\"text\" name=\"time\" value=\"12:51:34\" />')\n        self.assertHTMLEqual(w.render('time', datetime.time(12, 51)), '<input type=\"text\" name=\"time\" value=\"12:51:00\" />')\n\n        # We should be able to initialize from a unicode value.\n        self.assertHTMLEqual(w.render('time', '13:12:11'), '<input type=\"text\" name=\"time\" value=\"13:12:11\" />')\n\n        # Use 'format' to change the way a value is displayed.\n        w = TimeInput(format='%H:%M', attrs={'type': 'time'})\n        self.assertHTMLEqual(w.render('time', t), '<input type=\"time\" name=\"time\" value=\"12:51\" />')\n        self.assertFalse(w._has_changed(t, '12:51'))\n\n        # Make sure a custom format works with _has_changed. The hidden input will use\n        data = datetime.time(13, 0)\n        custom_format = '%I:%M %p'\n        w = TimeInput(format=custom_format)\n        self.assertFalse(w._has_changed(formats.localize_input(data), data.strftime(custom_format)))\n\n    def test_splithiddendatetime(self):\n        from django.forms.widgets import SplitHiddenDateTimeWidget\n\n        w = SplitHiddenDateTimeWidget()\n        self.assertHTMLEqual(w.render('date', ''), '<input type=\"hidden\" name=\"date_0\" /><input type=\"hidden\" name=\"date_1\" />')\n        d = datetime.datetime(2007, 9, 17, 12, 51, 34, 482548)\n        self.assertHTMLEqual(str(d), '2007-09-17 12:51:34.482548')\n        self.assertHTMLEqual(w.render('date', d), '<input type=\"hidden\" name=\"date_0\" value=\"2007-09-17\" /><input type=\"hidden\" name=\"date_1\" value=\"12:51:34\" />')\n        self.assertHTMLEqual(w.render('date', datetime.datetime(2007, 9, 17, 12, 51, 34)), '<input type=\"hidden\" name=\"date_0\" value=\"2007-09-17\" /><input type=\"hidden\" name=\"date_1\" value=\"12:51:34\" />')\n        self.assertHTMLEqual(w.render('date', datetime.datetime(2007, 9, 17, 12, 51)), '<input type=\"hidden\" name=\"date_0\" value=\"2007-09-17\" /><input type=\"hidden\" name=\"date_1\" value=\"12:51:00\" />')\n\n\nclass NullBooleanSelectLazyForm(Form):\n    \"\"\"Form to test for lazy evaluation. Refs #17190\"\"\"\n    bool = BooleanField(widget=NullBooleanSelect())\n\n@override_settings(USE_L10N=True)\nclass FormsI18NWidgetsTestCase(TestCase):\n    def setUp(self):\n        super(FormsI18NWidgetsTestCase, self).setUp()\n        activate('de-at')\n\n    def tearDown(self):\n        deactivate()\n        super(FormsI18NWidgetsTestCase, self).tearDown()\n\n    def test_splitdatetime(self):\n        w = SplitDateTimeWidget(date_format='%d/%m/%Y', time_format='%H:%M')\n        self.assertTrue(w._has_changed(datetime.datetime(2008, 5, 6, 12, 40, 00), ['06.05.2008', '12:41']))\n\n    def test_datetimeinput(self):\n        w = DateTimeInput()\n        d = datetime.datetime(2007, 9, 17, 12, 51, 34, 482548)\n        w.is_localized = True\n        self.assertHTMLEqual(w.render('date', d), '<input type=\"text\" name=\"date\" value=\"17.09.2007 12:51:34\" />')\n\n    def test_dateinput(self):\n        w = DateInput()\n        d = datetime.date(2007, 9, 17)\n        w.is_localized = True\n        self.assertHTMLEqual(w.render('date', d), '<input type=\"text\" name=\"date\" value=\"17.09.2007\" />')\n\n    def test_timeinput(self):\n        w = TimeInput()\n        t = datetime.time(12, 51, 34, 482548)\n        w.is_localized = True\n        self.assertHTMLEqual(w.render('time', t), '<input type=\"text\" name=\"time\" value=\"12:51:34\" />')\n\n    def test_splithiddendatetime(self):\n        from django.forms.widgets import SplitHiddenDateTimeWidget\n\n        w = SplitHiddenDateTimeWidget()\n        w.is_localized = True\n        self.assertHTMLEqual(w.render('date', datetime.datetime(2007, 9, 17, 12, 51)), '<input type=\"hidden\" name=\"date_0\" value=\"17.09.2007\" /><input type=\"hidden\" name=\"date_1\" value=\"12:51:00\" />')\n\n    def test_nullbooleanselect(self):\n        \"\"\"\n        Ensure that the NullBooleanSelect widget's options are lazily\n        localized.\n        Refs #17190\n        \"\"\"\n        f = NullBooleanSelectLazyForm()\n        self.assertHTMLEqual(f.fields['bool'].widget.render('id_bool', True), '<select name=\"id_bool\">\\n<option value=\"1\">Unbekannt</option>\\n<option value=\"2\" selected=\"selected\">Ja</option>\\n<option value=\"3\">Nein</option>\\n</select>')\n\n\nclass SelectAndTextWidget(MultiWidget):\n    \"\"\"\n    MultiWidget subclass\n    \"\"\"\n    def __init__(self, choices=[]):\n        widgets = [\n            RadioSelect(choices=choices),\n            TextInput\n        ]\n        super(SelectAndTextWidget, self).__init__(widgets)\n\n    def _set_choices(self, choices):\n        \"\"\"\n        When choices are set for this widget, we want to pass those along to the Select widget\n        \"\"\"\n        self.widgets[0].choices = choices\n    def _get_choices(self):\n        \"\"\"\n        The choices for this widget are the Select widget's choices\n        \"\"\"\n        return self.widgets[0].choices\n    choices = property(_get_choices, _set_choices)\n\n\nclass WidgetTests(TestCase):\n    def test_12048(self):\n        # See ticket #12048.\n        w1 = SelectAndTextWidget(choices=[1,2,3])\n        w2 = copy.deepcopy(w1)\n        w2.choices = [4,5,6]\n        # w2 ought to be independent of w1, since MultiWidget ought\n        # to make a copy of its sub-widgets when it is copied.\n        self.assertEqual(w1.choices, [1,2,3])\n\n    def test_13390(self):\n        # See ticket #13390\n        class SplitDateForm(Form):\n            field = DateTimeField(widget=SplitDateTimeWidget, required=False)\n\n        form = SplitDateForm({'field': ''})\n        self.assertTrue(form.is_valid())\n        form = SplitDateForm({'field': ['', '']})\n        self.assertTrue(form.is_valid())\n\n        class SplitDateRequiredForm(Form):\n            field = DateTimeField(widget=SplitDateTimeWidget, required=True)\n\n        form = SplitDateRequiredForm({'field': ''})\n        self.assertFalse(form.is_valid())\n        form = SplitDateRequiredForm({'field': ['', '']})\n        self.assertFalse(form.is_valid())\n\n\nclass LiveWidgetTests(AdminSeleniumWebDriverTestCase):\n    urls = 'regressiontests.forms.urls'\n\n    def test_textarea_trailing_newlines(self):\n        \"\"\"\n        Test that a roundtrip on a ModelForm doesn't alter the TextField value\n        \"\"\"\n        article = Article.objects.create(content=\"\\nTst\\n\")\n        self.selenium.get('%s%s' % (self.live_server_url,\n            reverse('article_form', args=[article.pk])))\n        self.selenium.find_element_by_id('submit').submit()\n        article = Article.objects.get(pk=article.pk)\n        # Should be \"\\nTst\\n\" after #19251 is fixed\n        self.assertEqual(article.content, \"\\r\\nTst\\r\\n\")\n\n\n@python_2_unicode_compatible\nclass FakeFieldFile(object):\n    \"\"\"\n    Quacks like a FieldFile (has a .url and unicode representation), but\n    doesn't require us to care about storages etc.\n\n    \"\"\"\n    url = 'something'\n\n    def __str__(self):\n        return self.url\n\nclass ClearableFileInputTests(TestCase):\n    def test_clear_input_renders(self):\n        \"\"\"\n        A ClearableFileInput with is_required False and rendered with\n        an initial value that is a file renders a clear checkbox.\n\n        \"\"\"\n        widget = ClearableFileInput()\n        widget.is_required = False\n        self.assertHTMLEqual(widget.render('myfile', FakeFieldFile()),\n                         'Currently: <a href=\"something\">something</a> <input type=\"checkbox\" name=\"myfile-clear\" id=\"myfile-clear_id\" /> <label for=\"myfile-clear_id\">Clear</label><br />Change: <input type=\"file\" name=\"myfile\" />')\n\n    def test_html_escaped(self):\n        \"\"\"\n        A ClearableFileInput should escape name, filename and URL when\n        rendering HTML. Refs #15182.\n        \"\"\"\n\n        @python_2_unicode_compatible\n        class StrangeFieldFile(object):\n            url = \"something?chapter=1&sect=2&copy=3&lang=en\"\n\n            def __str__(self):\n                return '''something<div onclick=\"alert('oops')\">.jpg'''\n\n        widget = ClearableFileInput()\n        field = StrangeFieldFile()\n        output = widget.render('my<div>file', field)\n        self.assertFalse(field.url in output)\n        self.assertTrue('href=\"something?chapter=1&amp;sect=2&amp;copy=3&amp;lang=en\"' in output)\n        self.assertFalse(six.text_type(field) in output)\n        self.assertTrue('something&lt;div onclick=&quot;alert(&#39;oops&#39;)&quot;&gt;.jpg' in output)\n        self.assertTrue('my&lt;div&gt;file' in output)\n        self.assertFalse('my<div>file' in output)\n\n    def test_clear_input_renders_only_if_not_required(self):\n        \"\"\"\n        A ClearableFileInput with is_required=False does not render a clear\n        checkbox.\n\n        \"\"\"\n        widget = ClearableFileInput()\n        widget.is_required = True\n        self.assertHTMLEqual(widget.render('myfile', FakeFieldFile()),\n                         'Currently: <a href=\"something\">something</a> <br />Change: <input type=\"file\" name=\"myfile\" />')\n\n    def test_clear_input_renders_only_if_initial(self):\n        \"\"\"\n        A ClearableFileInput instantiated with no initial value does not render\n        a clear checkbox.\n\n        \"\"\"\n        widget = ClearableFileInput()\n        widget.is_required = False\n        self.assertHTMLEqual(widget.render('myfile', None),\n                         '<input type=\"file\" name=\"myfile\" />')\n\n    def test_clear_input_checked_returns_false(self):\n        \"\"\"\n        ClearableFileInput.value_from_datadict returns False if the clear\n        checkbox is checked, if not required.\n\n        \"\"\"\n        widget = ClearableFileInput()\n        widget.is_required = False\n        self.assertEqual(widget.value_from_datadict(\n                data={'myfile-clear': True},\n                files={},\n                name='myfile'), False)\n\n    def test_clear_input_checked_returns_false_only_if_not_required(self):\n        \"\"\"\n        ClearableFileInput.value_from_datadict never returns False if the field\n        is required.\n\n        \"\"\"\n        widget = ClearableFileInput()\n        widget.is_required = True\n        f = SimpleUploadedFile('something.txt', b'content')\n        self.assertEqual(widget.value_from_datadict(\n                data={'myfile-clear': True},\n                files={'myfile': f},\n                name='myfile'), f)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/forms/urls.py",
    "content": "from django.conf.urls import patterns, url\nfrom django.views.generic.edit import UpdateView\n\nfrom .views import ArticleFormView\n\n\nurlpatterns = patterns('',\n    url(r'^/model_form/(?P<pk>\\d+)/$', ArticleFormView.as_view(), name=\"article_form\"),\n)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/forms/views.py",
    "content": "from django.views.generic.edit import UpdateView\n\nfrom .models import Article\n\n\nclass ArticleFormView(UpdateView):\n    model = Article\n    success_url = '/'\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/generic_inline_admin/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/generic_inline_admin/admin.py",
    "content": "from __future__ import absolute_import\n\nfrom django.contrib import admin\nfrom django.contrib.contenttypes import generic\n\nfrom .models import (Media, PhoneNumber, Episode, EpisodeExtra, Contact,\n    Category, EpisodePermanent, EpisodeMaxNum)\n\n\nsite = admin.AdminSite(name=\"admin\")\n\nclass MediaInline(generic.GenericTabularInline):\n    model = Media\n\n\nclass EpisodeAdmin(admin.ModelAdmin):\n    inlines = [\n        MediaInline,\n    ]\n\n\nclass MediaExtraInline(generic.GenericTabularInline):\n    model = Media\n    extra = 0\n\n\nclass MediaMaxNumInline(generic.GenericTabularInline):\n    model = Media\n    extra = 5\n    max_num = 2\n\n\nclass PhoneNumberInline(generic.GenericTabularInline):\n    model = PhoneNumber\n\n\nclass MediaPermanentInline(generic.GenericTabularInline):\n    model = Media\n    can_delete = False\n\n\nsite.register(Episode, EpisodeAdmin)\nsite.register(EpisodeExtra, inlines=[MediaExtraInline])\nsite.register(EpisodeMaxNum, inlines=[MediaMaxNumInline])\nsite.register(Contact, inlines=[PhoneNumberInline])\nsite.register(Category)\nsite.register(EpisodePermanent, inlines=[MediaPermanentInline])\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/generic_inline_admin/fixtures/users.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<django-objects version=\"1.0\">\n    <object pk=\"100\" model=\"auth.user\">\n        <field type=\"CharField\" name=\"username\">super</field>\n        <field type=\"CharField\" name=\"first_name\">Super</field>\n        <field type=\"CharField\" name=\"last_name\">User</field>\n        <field type=\"CharField\" name=\"email\">super@example.com</field>\n        <field type=\"CharField\" name=\"password\">sha1$995a3$6011485ea3834267d719b4c801409b8b1ddd0158</field>\n        <field type=\"BooleanField\" name=\"is_staff\">True</field>\n        <field type=\"BooleanField\" name=\"is_active\">True</field>\n        <field type=\"BooleanField\" name=\"is_superuser\">True</field>\n        <field type=\"DateTimeField\" name=\"last_login\">2007-05-30 13:20:10</field>\n        <field type=\"DateTimeField\" name=\"date_joined\">2007-05-30 13:20:10</field>\n        <field to=\"auth.group\" name=\"groups\" rel=\"ManyToManyRel\"></field>\n        <field to=\"auth.permission\" name=\"user_permissions\" rel=\"ManyToManyRel\"></field>\n    </object>\n</django-objects>"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/generic_inline_admin/models.py",
    "content": "from django.contrib.contenttypes import generic\nfrom django.contrib.contenttypes.models import ContentType\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\nclass Episode(models.Model):\n    name = models.CharField(max_length=100)\n    length = models.CharField(max_length=100, blank=True)\n    author = models.CharField(max_length=100, blank=True)\n\n\n@python_2_unicode_compatible\nclass Media(models.Model):\n    \"\"\"\n    Media that can associated to any object.\n    \"\"\"\n    content_type = models.ForeignKey(ContentType)\n    object_id = models.PositiveIntegerField()\n    content_object = generic.GenericForeignKey()\n    url = models.URLField()\n    description = models.CharField(max_length=100, blank=True)\n    keywords = models.CharField(max_length=100, blank=True)\n\n    def __str__(self):\n        return self.url\n\n#\n# These models let us test the different GenericInline settings at\n# different urls in the admin site.\n#\n\n#\n# Generic inline with extra = 0\n#\n\nclass EpisodeExtra(Episode):\n    pass\n\n\n#\n# Generic inline with extra and max_num\n#\nclass EpisodeMaxNum(Episode):\n    pass\n\n\n#\n# Generic inline with unique_together\n#\nclass Category(models.Model):\n    name = models.CharField(max_length=50)\n\n\nclass PhoneNumber(models.Model):\n    content_type = models.ForeignKey(ContentType)\n    object_id = models.PositiveIntegerField()\n    content_object = generic.GenericForeignKey('content_type', 'object_id')\n    phone_number = models.CharField(max_length=30)\n    category = models.ForeignKey(Category, null=True, blank=True)\n\n    class Meta:\n        unique_together = (('content_type', 'object_id', 'phone_number',),)\n\n\nclass Contact(models.Model):\n    name = models.CharField(max_length=50)\n    phone_numbers = generic.GenericRelation(PhoneNumber)\n\n#\n# Generic inline with can_delete=False\n#\nclass EpisodePermanent(Episode):\n    pass\n\n\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/generic_inline_admin/tests.py",
    "content": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import, unicode_literals\n\nfrom django.conf import settings\nfrom django.contrib import admin\nfrom django.contrib.admin.sites import AdminSite\nfrom django.contrib.contenttypes.generic import (\n    generic_inlineformset_factory, GenericTabularInline)\nfrom django.forms.formsets import DEFAULT_MAX_NUM\nfrom django.forms.models import ModelForm\nfrom django.test import TestCase\nfrom django.test.utils import override_settings\n\n# local test models\nfrom .admin import MediaInline, MediaPermanentInline\nfrom .models import (Episode, EpisodeExtra, EpisodeMaxNum, Media,\n    EpisodePermanent, Category)\n\n\n@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))\nclass GenericAdminViewTest(TestCase):\n    urls = \"regressiontests.generic_inline_admin.urls\"\n    fixtures = ['users.xml']\n\n    def setUp(self):\n        # set TEMPLATE_DEBUG to True to ensure {% include %} will raise\n        # exceptions since that is how inlines are rendered and #9498 will\n        # bubble up if it is an issue.\n        self.original_template_debug = settings.TEMPLATE_DEBUG\n        settings.TEMPLATE_DEBUG = True\n        self.client.login(username='super', password='secret')\n\n        # Can't load content via a fixture (since the GenericForeignKey\n        # relies on content type IDs, which will vary depending on what\n        # other tests have been run), thus we do it here.\n        e = Episode.objects.create(name='This Week in Django')\n        self.episode_pk = e.pk\n        m = Media(content_object=e, url='http://example.com/podcast.mp3')\n        m.save()\n        self.mp3_media_pk = m.pk\n\n        m = Media(content_object=e, url='http://example.com/logo.png')\n        m.save()\n        self.png_media_pk = m.pk\n\n    def tearDown(self):\n        self.client.logout()\n        settings.TEMPLATE_DEBUG = self.original_template_debug\n\n    def testBasicAddGet(self):\n        \"\"\"\n        A smoke test to ensure GET on the add_view works.\n        \"\"\"\n        response = self.client.get('/generic_inline_admin/admin/generic_inline_admin/episode/add/')\n        self.assertEqual(response.status_code, 200)\n\n    def testBasicEditGet(self):\n        \"\"\"\n        A smoke test to ensure GET on the change_view works.\n        \"\"\"\n        response = self.client.get('/generic_inline_admin/admin/generic_inline_admin/episode/%d/' % self.episode_pk)\n        self.assertEqual(response.status_code, 200)\n\n    def testBasicAddPost(self):\n        \"\"\"\n        A smoke test to ensure POST on add_view works.\n        \"\"\"\n        post_data = {\n            \"name\": \"This Week in Django\",\n            # inline data\n            \"generic_inline_admin-media-content_type-object_id-TOTAL_FORMS\": \"1\",\n            \"generic_inline_admin-media-content_type-object_id-INITIAL_FORMS\": \"0\",\n            \"generic_inline_admin-media-content_type-object_id-MAX_NUM_FORMS\": \"0\",\n        }\n        response = self.client.post('/generic_inline_admin/admin/generic_inline_admin/episode/add/', post_data)\n        self.assertEqual(response.status_code, 302) # redirect somewhere\n\n    def testBasicEditPost(self):\n        \"\"\"\n        A smoke test to ensure POST on edit_view works.\n        \"\"\"\n        post_data = {\n            \"name\": \"This Week in Django\",\n            # inline data\n            \"generic_inline_admin-media-content_type-object_id-TOTAL_FORMS\": \"3\",\n            \"generic_inline_admin-media-content_type-object_id-INITIAL_FORMS\": \"2\",\n            \"generic_inline_admin-media-content_type-object_id-MAX_NUM_FORMS\": \"0\",\n            \"generic_inline_admin-media-content_type-object_id-0-id\": \"%d\" % self.mp3_media_pk,\n            \"generic_inline_admin-media-content_type-object_id-0-url\": \"http://example.com/podcast.mp3\",\n            \"generic_inline_admin-media-content_type-object_id-1-id\": \"%d\" % self.png_media_pk,\n            \"generic_inline_admin-media-content_type-object_id-1-url\": \"http://example.com/logo.png\",\n            \"generic_inline_admin-media-content_type-object_id-2-id\": \"\",\n            \"generic_inline_admin-media-content_type-object_id-2-url\": \"\",\n        }\n        url = '/generic_inline_admin/admin/generic_inline_admin/episode/%d/' % self.episode_pk\n        response = self.client.post(url, post_data)\n        self.assertEqual(response.status_code, 302) # redirect somewhere\n\n    def testGenericInlineFormset(self):\n        EpisodeMediaFormSet = generic_inlineformset_factory(Media, can_delete=False, exclude=['description', 'keywords'], extra=3)\n        e = Episode.objects.get(name='This Week in Django')\n\n        # Works with no queryset\n        formset = EpisodeMediaFormSet(instance=e)\n        self.assertEqual(len(formset.forms), 5)\n        self.assertHTMLEqual(formset.forms[0].as_p(), '<p><label for=\"id_generic_inline_admin-media-content_type-object_id-0-url\">Url:</label> <input id=\"id_generic_inline_admin-media-content_type-object_id-0-url\" type=\"text\" name=\"generic_inline_admin-media-content_type-object_id-0-url\" value=\"http://example.com/podcast.mp3\" maxlength=\"200\" /><input type=\"hidden\" name=\"generic_inline_admin-media-content_type-object_id-0-id\" value=\"%s\" id=\"id_generic_inline_admin-media-content_type-object_id-0-id\" /></p>' % self.mp3_media_pk)\n        self.assertHTMLEqual(formset.forms[1].as_p(), '<p><label for=\"id_generic_inline_admin-media-content_type-object_id-1-url\">Url:</label> <input id=\"id_generic_inline_admin-media-content_type-object_id-1-url\" type=\"text\" name=\"generic_inline_admin-media-content_type-object_id-1-url\" value=\"http://example.com/logo.png\" maxlength=\"200\" /><input type=\"hidden\" name=\"generic_inline_admin-media-content_type-object_id-1-id\" value=\"%s\" id=\"id_generic_inline_admin-media-content_type-object_id-1-id\" /></p>' % self.png_media_pk)\n        self.assertHTMLEqual(formset.forms[2].as_p(), '<p><label for=\"id_generic_inline_admin-media-content_type-object_id-2-url\">Url:</label> <input id=\"id_generic_inline_admin-media-content_type-object_id-2-url\" type=\"text\" name=\"generic_inline_admin-media-content_type-object_id-2-url\" maxlength=\"200\" /><input type=\"hidden\" name=\"generic_inline_admin-media-content_type-object_id-2-id\" id=\"id_generic_inline_admin-media-content_type-object_id-2-id\" /></p>')\n\n        # A queryset can be used to alter display ordering\n        formset = EpisodeMediaFormSet(instance=e, queryset=Media.objects.order_by('url'))\n        self.assertEqual(len(formset.forms), 5)\n        self.assertHTMLEqual(formset.forms[0].as_p(), '<p><label for=\"id_generic_inline_admin-media-content_type-object_id-0-url\">Url:</label> <input id=\"id_generic_inline_admin-media-content_type-object_id-0-url\" type=\"text\" name=\"generic_inline_admin-media-content_type-object_id-0-url\" value=\"http://example.com/logo.png\" maxlength=\"200\" /><input type=\"hidden\" name=\"generic_inline_admin-media-content_type-object_id-0-id\" value=\"%s\" id=\"id_generic_inline_admin-media-content_type-object_id-0-id\" /></p>' % self.png_media_pk)\n        self.assertHTMLEqual(formset.forms[1].as_p(), '<p><label for=\"id_generic_inline_admin-media-content_type-object_id-1-url\">Url:</label> <input id=\"id_generic_inline_admin-media-content_type-object_id-1-url\" type=\"text\" name=\"generic_inline_admin-media-content_type-object_id-1-url\" value=\"http://example.com/podcast.mp3\" maxlength=\"200\" /><input type=\"hidden\" name=\"generic_inline_admin-media-content_type-object_id-1-id\" value=\"%s\" id=\"id_generic_inline_admin-media-content_type-object_id-1-id\" /></p>' % self.mp3_media_pk)\n        self.assertHTMLEqual(formset.forms[2].as_p(), '<p><label for=\"id_generic_inline_admin-media-content_type-object_id-2-url\">Url:</label> <input id=\"id_generic_inline_admin-media-content_type-object_id-2-url\" type=\"text\" name=\"generic_inline_admin-media-content_type-object_id-2-url\" maxlength=\"200\" /><input type=\"hidden\" name=\"generic_inline_admin-media-content_type-object_id-2-id\" id=\"id_generic_inline_admin-media-content_type-object_id-2-id\" /></p>')\n\n        # Works with a queryset that omits items\n        formset = EpisodeMediaFormSet(instance=e, queryset=Media.objects.filter(url__endswith=\".png\"))\n        self.assertEqual(len(formset.forms), 4)\n        self.assertHTMLEqual(formset.forms[0].as_p(), '<p><label for=\"id_generic_inline_admin-media-content_type-object_id-0-url\">Url:</label> <input id=\"id_generic_inline_admin-media-content_type-object_id-0-url\" type=\"text\" name=\"generic_inline_admin-media-content_type-object_id-0-url\" value=\"http://example.com/logo.png\" maxlength=\"200\" /><input type=\"hidden\" name=\"generic_inline_admin-media-content_type-object_id-0-id\" value=\"%s\" id=\"id_generic_inline_admin-media-content_type-object_id-0-id\" /></p>' % self.png_media_pk)\n        self.assertHTMLEqual(formset.forms[1].as_p(), '<p><label for=\"id_generic_inline_admin-media-content_type-object_id-1-url\">Url:</label> <input id=\"id_generic_inline_admin-media-content_type-object_id-1-url\" type=\"text\" name=\"generic_inline_admin-media-content_type-object_id-1-url\" maxlength=\"200\" /><input type=\"hidden\" name=\"generic_inline_admin-media-content_type-object_id-1-id\" id=\"id_generic_inline_admin-media-content_type-object_id-1-id\" /></p>')\n\n    def testGenericInlineFormsetFactory(self):\n        # Regression test for #10522.\n        inline_formset = generic_inlineformset_factory(Media,\n            exclude=('url',))\n\n        # Regression test for #12340.\n        e = Episode.objects.get(name='This Week in Django')\n        formset = inline_formset(instance=e)\n        self.assertTrue(formset.get_queryset().ordered)\n\n@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))\nclass GenericInlineAdminParametersTest(TestCase):\n    urls = \"regressiontests.generic_inline_admin.urls\"\n    fixtures = ['users.xml']\n\n    def setUp(self):\n        self.client.login(username='super', password='secret')\n\n    def tearDown(self):\n        self.client.logout()\n\n    def _create_object(self, model):\n        \"\"\"\n        Create a model with an attached Media object via GFK. We can't\n        load content via a fixture (since the GenericForeignKey relies on\n        content type IDs, which will vary depending on what other tests\n        have been run), thus we do it here.\n        \"\"\"\n        e = model.objects.create(name='This Week in Django')\n        Media.objects.create(content_object=e, url='http://example.com/podcast.mp3')\n        return e\n\n    def testNoParam(self):\n        \"\"\"\n        With one initial form, extra (default) at 3, there should be 4 forms.\n        \"\"\"\n        e = self._create_object(Episode)\n        response = self.client.get('/generic_inline_admin/admin/generic_inline_admin/episode/%s/' % e.pk)\n        formset = response.context['inline_admin_formsets'][0].formset\n        self.assertEqual(formset.total_form_count(), 4)\n        self.assertEqual(formset.initial_form_count(), 1)\n\n    def testExtraParam(self):\n        \"\"\"\n        With extra=0, there should be one form.\n        \"\"\"\n        e = self._create_object(EpisodeExtra)\n        response = self.client.get('/generic_inline_admin/admin/generic_inline_admin/episodeextra/%s/' % e.pk)\n        formset = response.context['inline_admin_formsets'][0].formset\n        self.assertEqual(formset.total_form_count(), 1)\n        self.assertEqual(formset.initial_form_count(), 1)\n\n    def testMaxNumParam(self):\n        \"\"\"\n        With extra=5 and max_num=2, there should be only 2 forms.\n        \"\"\"\n        e = self._create_object(EpisodeMaxNum)\n        inline_form_data = '<input type=\"hidden\" name=\"generic_inline_admin-media-content_type-object_id-TOTAL_FORMS\" value=\"2\" id=\"id_generic_inline_admin-media-content_type-object_id-TOTAL_FORMS\" /><input type=\"hidden\" name=\"generic_inline_admin-media-content_type-object_id-INITIAL_FORMS\" value=\"1\" id=\"id_generic_inline_admin-media-content_type-object_id-INITIAL_FORMS\" />'\n        response = self.client.get('/generic_inline_admin/admin/generic_inline_admin/episodemaxnum/%s/' % e.pk)\n        formset = response.context['inline_admin_formsets'][0].formset\n        self.assertEqual(formset.total_form_count(), 2)\n        self.assertEqual(formset.initial_form_count(), 1)\n\n\n@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))\nclass GenericInlineAdminWithUniqueTogetherTest(TestCase):\n    urls = \"regressiontests.generic_inline_admin.urls\"\n    fixtures = ['users.xml']\n\n    def setUp(self):\n        self.client.login(username='super', password='secret')\n\n    def tearDown(self):\n        self.client.logout()\n\n    def testAdd(self):\n        category_id = Category.objects.create(name='male').pk\n        post_data = {\n            \"name\": \"John Doe\",\n            # inline data\n            \"generic_inline_admin-phonenumber-content_type-object_id-TOTAL_FORMS\": \"1\",\n            \"generic_inline_admin-phonenumber-content_type-object_id-INITIAL_FORMS\": \"0\",\n            \"generic_inline_admin-phonenumber-content_type-object_id-MAX_NUM_FORMS\": \"0\",\n            \"generic_inline_admin-phonenumber-content_type-object_id-0-id\": \"\",\n            \"generic_inline_admin-phonenumber-content_type-object_id-0-phone_number\": \"555-555-5555\",\n            \"generic_inline_admin-phonenumber-content_type-object_id-0-category\": \"%s\" % category_id,\n        }\n        response = self.client.get('/generic_inline_admin/admin/generic_inline_admin/contact/add/')\n        self.assertEqual(response.status_code, 200)\n        response = self.client.post('/generic_inline_admin/admin/generic_inline_admin/contact/add/', post_data)\n        self.assertEqual(response.status_code, 302) # redirect somewhere\n\nclass NoInlineDeletionTest(TestCase):\n    urls = \"regressiontests.generic_inline_admin.urls\"\n\n    def test_no_deletion(self):\n        fake_site = object()\n        inline = MediaPermanentInline(EpisodePermanent, fake_site)\n        fake_request = object()\n        formset = inline.get_formset(fake_request)\n        self.assertFalse(formset.can_delete)\n\n\nclass MockRequest(object):\n    pass\n\nclass MockSuperUser(object):\n    def has_perm(self, perm):\n        return True\n\nrequest = MockRequest()\nrequest.user = MockSuperUser()\n\n\nclass GenericInlineModelAdminTest(TestCase):\n    urls = \"regressiontests.generic_inline_admin.urls\"\n\n    def setUp(self):\n        self.site = AdminSite()\n\n    def test_get_formset_kwargs(self):\n        media_inline = MediaInline(Media, AdminSite())\n\n        # Create a formset with default arguments\n        formset = media_inline.get_formset(request)\n        self.assertEqual(formset.max_num, DEFAULT_MAX_NUM)\n        self.assertEqual(formset.can_order, False)\n\n        # Create a formset with custom keyword arguments\n        formset = media_inline.get_formset(request, max_num=100, can_order=True)\n        self.assertEqual(formset.max_num, 100)\n        self.assertEqual(formset.can_order, True)\n\n    def test_custom_form_meta_exclude_with_readonly(self):\n        \"\"\"\n        Ensure that the custom ModelForm's `Meta.exclude` is respected when\n        used in conjunction with `GenericInlineModelAdmin.readonly_fields`\n        and when no `ModelAdmin.exclude` is defined.\n        \"\"\"\n        class MediaForm(ModelForm):\n\n            class Meta:\n                model = Media\n                exclude = ['url']\n\n        class MediaInline(GenericTabularInline):\n            readonly_fields = ['description']\n            form = MediaForm\n            model = Media\n\n        class EpisodeAdmin(admin.ModelAdmin):\n            inlines = [\n                MediaInline\n            ]\n\n        ma = EpisodeAdmin(Episode, self.site)\n        self.assertEqual(\n            list(list(ma.get_formsets(request))[0]().forms[0].fields),\n            ['keywords', 'id', 'DELETE'])\n\n    def test_custom_form_meta_exclude(self):\n        \"\"\"\n        Ensure that the custom ModelForm's `Meta.exclude` is respected by\n        `GenericInlineModelAdmin.get_formset`, and overridden if\n        `ModelAdmin.exclude` or `GenericInlineModelAdmin.exclude` are defined.\n        Refs #15907.\n        \"\"\"\n        # First with `GenericInlineModelAdmin`  -----------------\n\n        class MediaForm(ModelForm):\n\n            class Meta:\n                model = Media\n                exclude = ['url']\n\n        class MediaInline(GenericTabularInline):\n            exclude = ['description']\n            form = MediaForm\n            model = Media\n\n        class EpisodeAdmin(admin.ModelAdmin):\n            inlines = [\n                MediaInline\n            ]\n\n        ma = EpisodeAdmin(Episode, self.site)\n        self.assertEqual(\n            list(list(ma.get_formsets(request))[0]().forms[0].fields),\n            ['url', 'keywords', 'id', 'DELETE'])\n\n        # Then, only with `ModelForm`  -----------------\n\n        class MediaInline(GenericTabularInline):\n            form = MediaForm\n            model = Media\n\n        class EpisodeAdmin(admin.ModelAdmin):\n            inlines = [\n                MediaInline\n            ]\n\n        ma = EpisodeAdmin(Episode, self.site)\n        self.assertEqual(\n            list(list(ma.get_formsets(request))[0]().forms[0].fields),\n            ['description', 'keywords', 'id', 'DELETE'])\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/generic_inline_admin/urls.py",
    "content": "from __future__ import absolute_import\n\nfrom django.conf.urls import patterns, include\n\nfrom . import admin\n\nurlpatterns = patterns('',\n    (r'^generic_inline_admin/admin/', include(admin.site.urls)),\n)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/generic_relations_regress/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/generic_relations_regress/models.py",
    "content": "from django.contrib.contenttypes import generic\nfrom django.contrib.contenttypes.models import ContentType\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n__all__ = ('Link', 'Place', 'Restaurant', 'Person', 'Address',\n           'CharLink', 'TextLink', 'OddRelation1', 'OddRelation2',\n           'Contact', 'Organization', 'Note')\n\n@python_2_unicode_compatible\nclass Link(models.Model):\n    content_type = models.ForeignKey(ContentType)\n    object_id = models.PositiveIntegerField()\n    content_object = generic.GenericForeignKey()\n\n    def __str__(self):\n        return \"Link to %s id=%s\" % (self.content_type, self.object_id)\n\n@python_2_unicode_compatible\nclass Place(models.Model):\n    name = models.CharField(max_length=100)\n    links = generic.GenericRelation(Link)\n\n    def __str__(self):\n        return \"Place: %s\" % self.name\n\n@python_2_unicode_compatible\nclass Restaurant(Place):\n    def __str__(self):\n        return \"Restaurant: %s\" % self.name\n\n@python_2_unicode_compatible\nclass Address(models.Model):\n    street = models.CharField(max_length=80)\n    city = models.CharField(max_length=50)\n    state = models.CharField(max_length=2)\n    zipcode = models.CharField(max_length=5)\n    content_type = models.ForeignKey(ContentType)\n    object_id = models.PositiveIntegerField()\n    content_object = generic.GenericForeignKey()\n\n    def __str__(self):\n        return '%s %s, %s %s' % (self.street, self.city, self.state, self.zipcode)\n\n@python_2_unicode_compatible\nclass Person(models.Model):\n    account = models.IntegerField(primary_key=True)\n    name = models.CharField(max_length=128)\n    addresses = generic.GenericRelation(Address)\n\n    def __str__(self):\n        return self.name\n\nclass CharLink(models.Model):\n    content_type = models.ForeignKey(ContentType)\n    object_id = models.CharField(max_length=100)\n    content_object = generic.GenericForeignKey()\n\nclass TextLink(models.Model):\n    content_type = models.ForeignKey(ContentType)\n    object_id = models.TextField()\n    content_object = generic.GenericForeignKey()\n\nclass OddRelation1(models.Model):\n    name = models.CharField(max_length=100)\n    clinks = generic.GenericRelation(CharLink)\n\nclass OddRelation2(models.Model):\n    name = models.CharField(max_length=100)\n    tlinks = generic.GenericRelation(TextLink)\n\n# models for test_q_object_or:\nclass Note(models.Model):\n    content_type = models.ForeignKey(ContentType)\n    object_id = models.PositiveIntegerField()\n    content_object = generic.GenericForeignKey()\n    note = models.TextField()\n\nclass Contact(models.Model):\n    notes = generic.GenericRelation(Note)\n\nclass Organization(models.Model):\n    name = models.CharField(max_length=255)\n    contacts = models.ManyToManyField(Contact, related_name='organizations')\n\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/generic_relations_regress/tests.py",
    "content": "from django.db.models import Q\nfrom django.test import TestCase\n\nfrom .models import (Address, Place, Restaurant, Link, CharLink, TextLink,\n    Person, Contact, Note, Organization, OddRelation1, OddRelation2)\n\n\nclass GenericRelationTests(TestCase):\n\n    def test_inherited_models_content_type(self):\n        \"\"\"\n        Test that GenericRelations on inherited classes use the correct content\n        type.\n        \"\"\"\n\n        p = Place.objects.create(name=\"South Park\")\n        r = Restaurant.objects.create(name=\"Chubby's\")\n        l1 = Link.objects.create(content_object=p)\n        l2 = Link.objects.create(content_object=r)\n        self.assertEqual(list(p.links.all()), [l1])\n        self.assertEqual(list(r.links.all()), [l2])\n\n    def test_reverse_relation_pk(self):\n        \"\"\"\n        Test that the correct column name is used for the primary key on the\n        originating model of a query.  See #12664.\n        \"\"\"\n        p = Person.objects.create(account=23, name='Chef')\n        a = Address.objects.create(street='123 Anywhere Place',\n                                   city='Conifer', state='CO',\n                                   zipcode='80433', content_object=p)\n\n        qs = Person.objects.filter(addresses__zipcode='80433')\n        self.assertEqual(1, qs.count())\n        self.assertEqual('Chef', qs[0].name)\n\n    def test_charlink_delete(self):\n        oddrel = OddRelation1.objects.create(name='clink')\n        cl = CharLink.objects.create(content_object=oddrel)\n        oddrel.delete()\n\n    def test_textlink_delete(self):\n        oddrel = OddRelation2.objects.create(name='tlink')\n        tl = TextLink.objects.create(content_object=oddrel)\n        oddrel.delete()\n\n    def test_q_object_or(self):\n        \"\"\"\n        Tests that SQL query parameters for generic relations are properly\n        grouped when OR is used.\n\n        Test for bug http://code.djangoproject.com/ticket/11535\n\n        In this bug the first query (below) works while the second, with the\n        query parameters the same but in reverse order, does not.\n\n        The issue is that the generic relation conditions do not get properly\n        grouped in parentheses.\n        \"\"\"\n        note_contact = Contact.objects.create()\n        org_contact = Contact.objects.create()\n        note = Note.objects.create(note='note', content_object=note_contact)\n        org = Organization.objects.create(name='org name')\n        org.contacts.add(org_contact)\n        # search with a non-matching note and a matching org name\n        qs = Contact.objects.filter(Q(notes__note__icontains=r'other note') |\n                            Q(organizations__name__icontains=r'org name'))\n        self.assertTrue(org_contact in qs)\n        # search again, with the same query parameters, in reverse order\n        qs = Contact.objects.filter(\n            Q(organizations__name__icontains=r'org name') |\n            Q(notes__note__icontains=r'other note'))\n        self.assertTrue(org_contact in qs)\n\n\n\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/generic_views/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/generic_views/base.py",
    "content": "from __future__ import absolute_import\n\nimport time\n\nfrom django.core.exceptions import ImproperlyConfigured\nfrom django.http import HttpResponse\nfrom django.test import TestCase, RequestFactory\nfrom django.utils import unittest\nfrom django.views.generic import View, TemplateView, RedirectView\n\nfrom . import views\n\nclass SimpleView(View):\n    \"\"\"\n    A simple view with a docstring.\n    \"\"\"\n    def get(self, request):\n        return HttpResponse('This is a simple view')\n\n\nclass SimplePostView(SimpleView):\n    post = SimpleView.get\n\n\nclass PostOnlyView(View):\n    def post(self, request):\n        return HttpResponse('This view only accepts POST')\n\n\nclass CustomizableView(SimpleView):\n    parameter = {}\n\n\ndef decorator(view):\n    view.is_decorated = True\n    return view\n\n\nclass DecoratedDispatchView(SimpleView):\n\n    @decorator\n    def dispatch(self, request, *args, **kwargs):\n        return super(DecoratedDispatchView, self).dispatch(request, *args, **kwargs)\n\n\nclass AboutTemplateView(TemplateView):\n    def get(self, request):\n        return self.render_to_response({})\n\n    def get_template_names(self):\n        return ['generic_views/about.html']\n\n\nclass AboutTemplateAttributeView(TemplateView):\n    template_name = 'generic_views/about.html'\n\n    def get(self, request):\n        return self.render_to_response(context={})\n\n\nclass InstanceView(View):\n\n    def get(self, request):\n        return self\n\n\nclass ViewTest(unittest.TestCase):\n    rf = RequestFactory()\n\n    def _assert_simple(self, response):\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.content, b'This is a simple view')\n\n    def test_no_init_kwargs(self):\n        \"\"\"\n        Test that a view can't be accidentally instantiated before deployment\n        \"\"\"\n        try:\n            view = SimpleView(key='value').as_view()\n            self.fail('Should not be able to instantiate a view')\n        except AttributeError:\n            pass\n\n    def test_no_init_args(self):\n        \"\"\"\n        Test that a view can't be accidentally instantiated before deployment\n        \"\"\"\n        try:\n            view = SimpleView.as_view('value')\n            self.fail('Should not be able to use non-keyword arguments instantiating a view')\n        except TypeError:\n            pass\n\n    def test_pathological_http_method(self):\n        \"\"\"\n        The edge case of a http request that spoofs an existing method name is caught.\n        \"\"\"\n        self.assertEqual(SimpleView.as_view()(\n            self.rf.get('/', REQUEST_METHOD='DISPATCH')\n        ).status_code, 405)\n\n    def test_get_only(self):\n        \"\"\"\n        Test a view which only allows GET doesn't allow other methods.\n        \"\"\"\n        self._assert_simple(SimpleView.as_view()(self.rf.get('/')))\n        self.assertEqual(SimpleView.as_view()(self.rf.post('/')).status_code, 405)\n        self.assertEqual(SimpleView.as_view()(\n            self.rf.get('/', REQUEST_METHOD='FAKE')\n        ).status_code, 405)\n\n    def test_get_and_head(self):\n        \"\"\"\n        Test a view which supplies a GET method also responds correctly to HEAD.\n        \"\"\"\n        self._assert_simple(SimpleView.as_view()(self.rf.get('/')))\n        response = SimpleView.as_view()(self.rf.head('/'))\n        self.assertEqual(response.status_code, 200)\n\n    def test_head_no_get(self):\n        \"\"\"\n        Test a view which supplies no GET method responds to HEAD with HTTP 405.\n        \"\"\"\n        response = PostOnlyView.as_view()(self.rf.head('/'))\n        self.assertEqual(response.status_code, 405)\n\n    def test_get_and_post(self):\n        \"\"\"\n        Test a view which only allows both GET and POST.\n        \"\"\"\n        self._assert_simple(SimplePostView.as_view()(self.rf.get('/')))\n        self._assert_simple(SimplePostView.as_view()(self.rf.post('/')))\n        self.assertEqual(SimplePostView.as_view()(\n            self.rf.get('/', REQUEST_METHOD='FAKE')\n        ).status_code, 405)\n\n    def test_invalid_keyword_argument(self):\n        \"\"\"\n        Test that view arguments must be predefined on the class and can't\n        be named like a HTTP method.\n        \"\"\"\n        # Check each of the allowed method names\n        for method in SimpleView.http_method_names:\n            kwargs = dict(((method, \"value\"),))\n            self.assertRaises(TypeError, SimpleView.as_view, **kwargs)\n\n        # Check the case view argument is ok if predefined on the class...\n        CustomizableView.as_view(parameter=\"value\")\n        # ...but raises errors otherwise.\n        self.assertRaises(TypeError, CustomizableView.as_view, foobar=\"value\")\n\n    def test_calling_more_than_once(self):\n        \"\"\"\n        Test a view can only be called once.\n        \"\"\"\n        request = self.rf.get('/')\n        view = InstanceView.as_view()\n        self.assertNotEqual(view(request), view(request))\n\n    def test_class_attributes(self):\n        \"\"\"\n        Test that the callable returned from as_view() has proper\n        docstring, name and module.\n        \"\"\"\n        self.assertEqual(SimpleView.__doc__, SimpleView.as_view().__doc__)\n        self.assertEqual(SimpleView.__name__, SimpleView.as_view().__name__)\n        self.assertEqual(SimpleView.__module__, SimpleView.as_view().__module__)\n\n    def test_dispatch_decoration(self):\n        \"\"\"\n        Test that attributes set by decorators on the dispatch method\n        are also present on the closure.\n        \"\"\"\n        self.assertTrue(DecoratedDispatchView.as_view().is_decorated)\n\n    def test_options(self):\n        \"\"\"\n        Test that views respond to HTTP OPTIONS requests with an Allow header\n        appropriate for the methods implemented by the view class.\n        \"\"\"\n        request = self.rf.options('/')\n        view = SimpleView.as_view()\n        response = view(request)\n        self.assertEqual(200, response.status_code)\n        self.assertTrue(response['Allow'])\n\n    def test_options_for_get_view(self):\n        \"\"\"\n        Test that a view implementing GET allows GET and HEAD.\n        \"\"\"\n        request = self.rf.options('/')\n        view = SimpleView.as_view()\n        response = view(request)\n        self._assert_allows(response, 'GET', 'HEAD')\n\n    def test_options_for_get_and_post_view(self):\n        \"\"\"\n        Test that a view implementing GET and POST allows GET, HEAD, and POST.\n        \"\"\"\n        request = self.rf.options('/')\n        view = SimplePostView.as_view()\n        response = view(request)\n        self._assert_allows(response, 'GET', 'HEAD', 'POST')\n\n    def test_options_for_post_view(self):\n        \"\"\"\n        Test that a view implementing POST allows POST.\n        \"\"\"\n        request = self.rf.options('/')\n        view = PostOnlyView.as_view()\n        response = view(request)\n        self._assert_allows(response, 'POST')\n\n    def _assert_allows(self, response, *expected_methods):\n        \"Assert allowed HTTP methods reported in the Allow response header\"\n        response_allows = set(response['Allow'].split(', '))\n        self.assertEqual(set(expected_methods + ('OPTIONS',)), response_allows)\n\n    def test_args_kwargs_request_on_self(self):\n        \"\"\"\n        Test a view only has args, kwargs & request once `as_view`\n        has been called.\n        \"\"\"\n        bare_view = InstanceView()\n        view = InstanceView.as_view()(self.rf.get('/'))\n        for attribute in ('args', 'kwargs', 'request'):\n            self.assertNotIn(attribute, dir(bare_view))\n            self.assertIn(attribute, dir(view))\n\n\nclass TemplateViewTest(TestCase):\n    urls = 'regressiontests.generic_views.urls'\n\n    rf = RequestFactory()\n\n    def _assert_about(self, response):\n        response.render()\n        self.assertEqual(response.status_code, 200)\n        self.assertContains(response, '<h1>About</h1>')\n\n    def test_get(self):\n        \"\"\"\n        Test a view that simply renders a template on GET\n        \"\"\"\n        self._assert_about(AboutTemplateView.as_view()(self.rf.get('/about/')))\n\n    def test_head(self):\n        \"\"\"\n        Test a TemplateView responds correctly to HEAD\n        \"\"\"\n        response = AboutTemplateView.as_view()(self.rf.head('/about/'))\n        self.assertEqual(response.status_code, 200)\n\n    def test_get_template_attribute(self):\n        \"\"\"\n        Test a view that renders a template on GET with the template name as\n        an attribute on the class.\n        \"\"\"\n        self._assert_about(AboutTemplateAttributeView.as_view()(self.rf.get('/about/')))\n\n    def test_get_generic_template(self):\n        \"\"\"\n        Test a completely generic view that renders a template on GET\n        with the template name as an argument at instantiation.\n        \"\"\"\n        self._assert_about(TemplateView.as_view(template_name='generic_views/about.html')(self.rf.get('/about/')))\n\n    def test_template_name_required(self):\n        \"\"\"\n        A template view must provide a template name\n        \"\"\"\n        self.assertRaises(ImproperlyConfigured, self.client.get, '/template/no_template/')\n\n    def test_template_params(self):\n        \"\"\"\n        A generic template view passes kwargs as context.\n        \"\"\"\n        response = self.client.get('/template/simple/bar/')\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.context['foo'], 'bar')\n        self.assertTrue(isinstance(response.context['view'], View))\n\n    def test_extra_template_params(self):\n        \"\"\"\n        A template view can be customized to return extra context.\n        \"\"\"\n        response = self.client.get('/template/custom/bar/')\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.context['foo'], 'bar')\n        self.assertEqual(response.context['key'], 'value')\n        self.assertTrue(isinstance(response.context['view'], View))\n\n    def test_cached_views(self):\n        \"\"\"\n        A template view can be cached\n        \"\"\"\n        response = self.client.get('/template/cached/bar/')\n        self.assertEqual(response.status_code, 200)\n\n        time.sleep(1.0)\n\n        response2 = self.client.get('/template/cached/bar/')\n        self.assertEqual(response2.status_code, 200)\n\n        self.assertEqual(response.content, response2.content)\n\n        time.sleep(2.0)\n\n        # Let the cache expire and test again\n        response2 = self.client.get('/template/cached/bar/')\n        self.assertEqual(response2.status_code, 200)\n\n        self.assertNotEqual(response.content, response2.content)\n\n    def test_content_type(self):\n        response = self.client.get('/template/content_type/')\n        self.assertEqual(response['Content-Type'], 'text/plain')\n\n\nclass RedirectViewTest(unittest.TestCase):\n    rf = RequestFactory()\n\n    def test_no_url(self):\n        \"Without any configuration, returns HTTP 410 GONE\"\n        response = RedirectView.as_view()(self.rf.get('/foo/'))\n        self.assertEqual(response.status_code, 410)\n\n    def test_permanent_redirect(self):\n        \"Default is a permanent redirect\"\n        response = RedirectView.as_view(url='/bar/')(self.rf.get('/foo/'))\n        self.assertEqual(response.status_code, 301)\n        self.assertEqual(response['Location'], '/bar/')\n\n    def test_temporary_redirect(self):\n        \"Permanent redirects are an option\"\n        response = RedirectView.as_view(url='/bar/', permanent=False)(self.rf.get('/foo/'))\n        self.assertEqual(response.status_code, 302)\n        self.assertEqual(response['Location'], '/bar/')\n\n    def test_include_args(self):\n        \"GET arguments can be included in the redirected URL\"\n        response = RedirectView.as_view(url='/bar/')(self.rf.get('/foo/'))\n        self.assertEqual(response.status_code, 301)\n        self.assertEqual(response['Location'], '/bar/')\n\n        response = RedirectView.as_view(url='/bar/', query_string=True)(self.rf.get('/foo/?pork=spam'))\n        self.assertEqual(response.status_code, 301)\n        self.assertEqual(response['Location'], '/bar/?pork=spam')\n\n    def test_include_urlencoded_args(self):\n        \"GET arguments can be URL-encoded when included in the redirected URL\"\n        response = RedirectView.as_view(url='/bar/', query_string=True)(\n            self.rf.get('/foo/?unicode=%E2%9C%93'))\n        self.assertEqual(response.status_code, 301)\n        self.assertEqual(response['Location'], '/bar/?unicode=%E2%9C%93')\n\n    def test_parameter_substitution(self):\n        \"Redirection URLs can be parameterized\"\n        response = RedirectView.as_view(url='/bar/%(object_id)d/')(self.rf.get('/foo/42/'), object_id=42)\n        self.assertEqual(response.status_code, 301)\n        self.assertEqual(response['Location'], '/bar/42/')\n\n    def test_redirect_POST(self):\n        \"Default is a permanent redirect\"\n        response = RedirectView.as_view(url='/bar/')(self.rf.post('/foo/'))\n        self.assertEqual(response.status_code, 301)\n        self.assertEqual(response['Location'], '/bar/')\n\n    def test_redirect_HEAD(self):\n        \"Default is a permanent redirect\"\n        response = RedirectView.as_view(url='/bar/')(self.rf.head('/foo/'))\n        self.assertEqual(response.status_code, 301)\n        self.assertEqual(response['Location'], '/bar/')\n\n    def test_redirect_OPTIONS(self):\n        \"Default is a permanent redirect\"\n        response = RedirectView.as_view(url='/bar/')(self.rf.options('/foo/'))\n        self.assertEqual(response.status_code, 301)\n        self.assertEqual(response['Location'], '/bar/')\n\n    def test_redirect_PUT(self):\n        \"Default is a permanent redirect\"\n        response = RedirectView.as_view(url='/bar/')(self.rf.put('/foo/'))\n        self.assertEqual(response.status_code, 301)\n        self.assertEqual(response['Location'], '/bar/')\n\n    def test_redirect_DELETE(self):\n        \"Default is a permanent redirect\"\n        response = RedirectView.as_view(url='/bar/')(self.rf.delete('/foo/'))\n        self.assertEqual(response.status_code, 301)\n        self.assertEqual(response['Location'], '/bar/')\n\n    def test_redirect_when_meta_contains_no_query_string(self):\n        \"regression for #16705\"\n        # we can't use self.rf.get because it always sets QUERY_STRING\n        response = RedirectView.as_view(url='/bar/')(self.rf.request(PATH_INFO='/foo/'))\n        self.assertEqual(response.status_code, 301)\n\n\nclass GetContextDataTest(unittest.TestCase):\n\n    def test_get_context_data_super(self):\n        test_view = views.CustomContextView()\n        context = test_view.get_context_data(kwarg_test='kwarg_value')\n\n        # the test_name key is inserted by the test classes parent\n        self.assertTrue('test_name' in context)\n        self.assertEqual(context['kwarg_test'], 'kwarg_value')\n        self.assertEqual(context['custom_key'], 'custom_value')\n\n        # test that kwarg overrides values assigned higher up\n        context = test_view.get_context_data(test_name='test_value')\n        self.assertEqual(context['test_name'], 'test_value')\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/generic_views/dates.py",
    "content": "from __future__ import absolute_import\n\nimport time\nimport datetime\n\nfrom django.core.exceptions import ImproperlyConfigured\nfrom django.test import TestCase\nfrom django.test.utils import override_settings\nfrom django.utils import timezone\nfrom django.utils.unittest import skipUnless\n\nfrom .models import Book, BookSigning\n\nTZ_SUPPORT = hasattr(time, 'tzset')\n\n# On OSes that don't provide tzset (Windows), we can't set the timezone\n# in which the program runs. As a consequence, we must skip tests that\n# don't enforce a specific timezone (with timezone.override or equivalent),\n# or attempt to interpret naive datetimes in the default timezone.\n\nrequires_tz_support = skipUnless(TZ_SUPPORT,\n        \"This test relies on the ability to run a program in an arbitrary \"\n        \"time zone, but your operating system isn't able to do that.\")\n\n\ndef _make_books(n, base_date):\n    for i in range(n):\n        b = Book.objects.create(\n            name='Book %d' % i,\n            slug='book-%d' % i,\n            pages=100+i,\n            pubdate=base_date - datetime.timedelta(days=i))\n\nclass ArchiveIndexViewTests(TestCase):\n    fixtures = ['generic-views-test-data.json']\n    urls = 'regressiontests.generic_views.urls'\n\n\n    def test_archive_view(self):\n        res = self.client.get('/dates/books/')\n        self.assertEqual(res.status_code, 200)\n        self.assertEqual(list(res.context['date_list']), list(Book.objects.dates('pubdate', 'year', 'DESC')))\n        self.assertEqual(list(res.context['latest']), list(Book.objects.all()))\n        self.assertTemplateUsed(res, 'generic_views/book_archive.html')\n\n    def test_archive_view_context_object_name(self):\n        res = self.client.get('/dates/books/context_object_name/')\n        self.assertEqual(res.status_code, 200)\n        self.assertEqual(list(res.context['date_list']), list(Book.objects.dates('pubdate', 'year', 'DESC')))\n        self.assertEqual(list(res.context['thingies']), list(Book.objects.all()))\n        self.assertFalse('latest' in res.context)\n        self.assertTemplateUsed(res, 'generic_views/book_archive.html')\n\n    def test_empty_archive_view(self):\n        Book.objects.all().delete()\n        res = self.client.get('/dates/books/')\n        self.assertEqual(res.status_code, 404)\n\n    def test_allow_empty_archive_view(self):\n        Book.objects.all().delete()\n        res = self.client.get('/dates/books/allow_empty/')\n        self.assertEqual(res.status_code, 200)\n        self.assertEqual(list(res.context['date_list']), [])\n        self.assertTemplateUsed(res, 'generic_views/book_archive.html')\n\n    def test_archive_view_template(self):\n        res = self.client.get('/dates/books/template_name/')\n        self.assertEqual(res.status_code, 200)\n        self.assertEqual(list(res.context['date_list']), list(Book.objects.dates('pubdate', 'year', 'DESC')))\n        self.assertEqual(list(res.context['latest']), list(Book.objects.all()))\n        self.assertTemplateUsed(res, 'generic_views/list.html')\n\n    def test_archive_view_template_suffix(self):\n        res = self.client.get('/dates/books/template_name_suffix/')\n        self.assertEqual(res.status_code, 200)\n        self.assertEqual(list(res.context['date_list']), list(Book.objects.dates('pubdate', 'year', 'DESC')))\n        self.assertEqual(list(res.context['latest']), list(Book.objects.all()))\n        self.assertTemplateUsed(res, 'generic_views/book_detail.html')\n\n    def test_archive_view_invalid(self):\n        self.assertRaises(ImproperlyConfigured, self.client.get, '/dates/books/invalid/')\n\n    def test_archive_view_by_month(self):\n        res = self.client.get('/dates/books/by_month/')\n        self.assertEqual(res.status_code, 200)\n        self.assertEqual(list(res.context['date_list']), list(Book.objects.dates('pubdate', 'month', 'DESC')))\n\n    def test_paginated_archive_view(self):\n        _make_books(20, base_date=datetime.date.today())\n        res = self.client.get('/dates/books/paginated/')\n        self.assertEqual(res.status_code, 200)\n        self.assertEqual(list(res.context['date_list']), list(Book.objects.dates('pubdate', 'year', 'DESC')))\n        self.assertEqual(list(res.context['latest']), list(Book.objects.all()[0:10]))\n        self.assertTemplateUsed(res, 'generic_views/book_archive.html')\n\n        res = self.client.get('/dates/books/paginated/?page=2')\n        self.assertEqual(res.status_code, 200)\n        self.assertEqual(res.context['page_obj'].number, 2)\n        self.assertEqual(list(res.context['latest']), list(Book.objects.all()[10:20]))\n\n    def test_paginated_archive_view_does_not_load_entire_table(self):\n        # Regression test for #18087\n        _make_books(20, base_date=datetime.date.today())\n        # 1 query for years list + 1 query for books\n        with self.assertNumQueries(2):\n            self.client.get('/dates/books/')\n        # same as above + 1 query to test if books exist + 1 query to count them\n        with self.assertNumQueries(4):\n            self.client.get('/dates/books/paginated/')\n\n    def test_no_duplicate_query(self):\n        # Regression test for #18354\n        with self.assertNumQueries(2):\n            self.client.get('/dates/books/reverse/')\n\n    def test_datetime_archive_view(self):\n        BookSigning.objects.create(event_date=datetime.datetime(2008, 4, 2, 12, 0))\n        res = self.client.get('/dates/booksignings/')\n        self.assertEqual(res.status_code, 200)\n\n    @requires_tz_support\n    @override_settings(USE_TZ=True, TIME_ZONE='Africa/Nairobi')\n    def test_aware_datetime_archive_view(self):\n        BookSigning.objects.create(event_date=datetime.datetime(2008, 4, 2, 12, 0, tzinfo=timezone.utc))\n        res = self.client.get('/dates/booksignings/')\n        self.assertEqual(res.status_code, 200)\n\n    def test_date_list_order(self):\n        \"\"\"date_list should be sorted descending in index\"\"\"\n        _make_books(5, base_date=datetime.date(2011, 12, 25))\n        res = self.client.get('/dates/books/')\n        self.assertEqual(res.status_code, 200)\n        self.assertEqual(list(res.context['date_list']), list(reversed(sorted(res.context['date_list']))))\n\n\nclass YearArchiveViewTests(TestCase):\n    fixtures = ['generic-views-test-data.json']\n    urls = 'regressiontests.generic_views.urls'\n\n    def test_year_view(self):\n        res = self.client.get('/dates/books/2008/')\n        self.assertEqual(res.status_code, 200)\n        self.assertEqual(list(res.context['date_list']), [datetime.datetime(2008, 10, 1)])\n        self.assertEqual(res.context['year'], datetime.date(2008, 1, 1))\n        self.assertTemplateUsed(res, 'generic_views/book_archive_year.html')\n\n        # Since allow_empty=False, next/prev years must be valid (#7164)\n        self.assertEqual(res.context['next_year'], None)\n        self.assertEqual(res.context['previous_year'], datetime.date(2006, 1, 1))\n\n    def test_year_view_make_object_list(self):\n        res = self.client.get('/dates/books/2006/make_object_list/')\n        self.assertEqual(res.status_code, 200)\n        self.assertEqual(list(res.context['date_list']), [datetime.datetime(2006, 5, 1)])\n        self.assertEqual(list(res.context['book_list']), list(Book.objects.filter(pubdate__year=2006)))\n        self.assertEqual(list(res.context['object_list']), list(Book.objects.filter(pubdate__year=2006)))\n        self.assertTemplateUsed(res, 'generic_views/book_archive_year.html')\n\n    def test_year_view_empty(self):\n        res = self.client.get('/dates/books/1999/')\n        self.assertEqual(res.status_code, 404)\n        res = self.client.get('/dates/books/1999/allow_empty/')\n        self.assertEqual(res.status_code, 200)\n        self.assertEqual(list(res.context['date_list']), [])\n        self.assertEqual(list(res.context['book_list']), [])\n\n        # Since allow_empty=True, next/prev are allowed to be empty years (#7164)\n        self.assertEqual(res.context['next_year'], datetime.date(2000, 1, 1))\n        self.assertEqual(res.context['previous_year'], datetime.date(1998, 1, 1))\n\n    def test_year_view_allow_future(self):\n        # Create a new book in the future\n        year = datetime.date.today().year + 1\n        b = Book.objects.create(name=\"The New New Testement\", pages=600, pubdate=datetime.date(year, 1, 1))\n        res = self.client.get('/dates/books/%s/' % year)\n        self.assertEqual(res.status_code, 404)\n\n        res = self.client.get('/dates/books/%s/allow_empty/' % year)\n        self.assertEqual(res.status_code, 200)\n        self.assertEqual(list(res.context['book_list']), [])\n\n        res = self.client.get('/dates/books/%s/allow_future/' % year)\n        self.assertEqual(res.status_code, 200)\n        self.assertEqual(list(res.context['date_list']), [datetime.datetime(year, 1, 1)])\n\n    def test_year_view_paginated(self):\n        res = self.client.get('/dates/books/2006/paginated/')\n        self.assertEqual(res.status_code, 200)\n        self.assertEqual(list(res.context['book_list']), list(Book.objects.filter(pubdate__year=2006)))\n        self.assertEqual(list(res.context['object_list']), list(Book.objects.filter(pubdate__year=2006)))\n        self.assertTemplateUsed(res, 'generic_views/book_archive_year.html')\n\n    def test_year_view_invalid_pattern(self):\n        res = self.client.get('/dates/books/no_year/')\n        self.assertEqual(res.status_code, 404)\n\n    def test_no_duplicate_query(self):\n        # Regression test for #18354\n        with self.assertNumQueries(4):\n            self.client.get('/dates/books/2008/reverse/')\n\n    def test_datetime_year_view(self):\n        BookSigning.objects.create(event_date=datetime.datetime(2008, 4, 2, 12, 0))\n        res = self.client.get('/dates/booksignings/2008/')\n        self.assertEqual(res.status_code, 200)\n\n    @override_settings(USE_TZ=True, TIME_ZONE='Africa/Nairobi')\n    def test_aware_datetime_year_view(self):\n        BookSigning.objects.create(event_date=datetime.datetime(2008, 4, 2, 12, 0, tzinfo=timezone.utc))\n        res = self.client.get('/dates/booksignings/2008/')\n        self.assertEqual(res.status_code, 200)\n\n    def test_date_list_order(self):\n        \"\"\"date_list should be sorted ascending in year view\"\"\"\n        _make_books(10, base_date=datetime.date(2011, 12, 25))\n        res = self.client.get('/dates/books/2011/')\n        self.assertEqual(list(res.context['date_list']), list(sorted(res.context['date_list'])))\n\n\nclass MonthArchiveViewTests(TestCase):\n    fixtures = ['generic-views-test-data.json']\n    urls = 'regressiontests.generic_views.urls'\n\n    def test_month_view(self):\n        res = self.client.get('/dates/books/2008/oct/')\n        self.assertEqual(res.status_code, 200)\n        self.assertTemplateUsed(res, 'generic_views/book_archive_month.html')\n        self.assertEqual(list(res.context['date_list']), [datetime.datetime(2008, 10, 1)])\n        self.assertEqual(list(res.context['book_list']),\n                         list(Book.objects.filter(pubdate=datetime.date(2008, 10, 1))))\n        self.assertEqual(res.context['month'], datetime.date(2008, 10, 1))\n\n        # Since allow_empty=False, next/prev months must be valid (#7164)\n        self.assertEqual(res.context['next_month'], None)\n        self.assertEqual(res.context['previous_month'], datetime.date(2006, 5, 1))\n\n    def test_month_view_allow_empty(self):\n        # allow_empty = False, empty month\n        res = self.client.get('/dates/books/2000/jan/')\n        self.assertEqual(res.status_code, 404)\n\n        # allow_empty = True, empty month\n        res = self.client.get('/dates/books/2000/jan/allow_empty/')\n        self.assertEqual(res.status_code, 200)\n        self.assertEqual(list(res.context['date_list']), [])\n        self.assertEqual(list(res.context['book_list']), [])\n        self.assertEqual(res.context['month'], datetime.date(2000, 1, 1))\n\n        # Since allow_empty=True, next/prev are allowed to be empty months (#7164)\n        self.assertEqual(res.context['next_month'], datetime.date(2000, 2, 1))\n        self.assertEqual(res.context['previous_month'], datetime.date(1999, 12, 1))\n\n        # allow_empty but not allow_future: next_month should be empty (#7164)\n        url = datetime.date.today().strftime('/dates/books/%Y/%b/allow_empty/').lower()\n        res = self.client.get(url)\n        self.assertEqual(res.status_code, 200)\n        self.assertEqual(res.context['next_month'], None)\n\n    def test_month_view_allow_future(self):\n        future = (datetime.date.today() + datetime.timedelta(days=60)).replace(day=1)\n        urlbit = future.strftime('%Y/%b').lower()\n        b = Book.objects.create(name=\"The New New Testement\", pages=600, pubdate=future)\n\n        # allow_future = False, future month\n        res = self.client.get('/dates/books/%s/' % urlbit)\n        self.assertEqual(res.status_code, 404)\n\n        # allow_future = True, valid future month\n        res = self.client.get('/dates/books/%s/allow_future/' % urlbit)\n        self.assertEqual(res.status_code, 200)\n        self.assertEqual(res.context['date_list'][0].date(), b.pubdate)\n        self.assertEqual(list(res.context['book_list']), [b])\n        self.assertEqual(res.context['month'], future)\n\n        # Since allow_future = True but not allow_empty, next/prev are not\n        # allowed to be empty months (#7164)\n        self.assertEqual(res.context['next_month'], None)\n        self.assertEqual(res.context['previous_month'], datetime.date(2008, 10, 1))\n\n        # allow_future, but not allow_empty, with a current month. So next\n        # should be in the future (yup, #7164, again)\n        res = self.client.get('/dates/books/2008/oct/allow_future/')\n        self.assertEqual(res.status_code, 200)\n        self.assertEqual(res.context['next_month'], future)\n        self.assertEqual(res.context['previous_month'], datetime.date(2006, 5, 1))\n\n    def test_month_view_paginated(self):\n        res = self.client.get('/dates/books/2008/oct/paginated/')\n        self.assertEqual(res.status_code, 200)\n        self.assertEqual(list(res.context['book_list']), list(Book.objects.filter(pubdate__year=2008, pubdate__month=10)))\n        self.assertEqual(list(res.context['object_list']), list(Book.objects.filter(pubdate__year=2008, pubdate__month=10)))\n        self.assertTemplateUsed(res, 'generic_views/book_archive_month.html')\n\n    def test_custom_month_format(self):\n        res = self.client.get('/dates/books/2008/10/')\n        self.assertEqual(res.status_code, 200)\n\n    def test_month_view_invalid_pattern(self):\n        res = self.client.get('/dates/books/2007/no_month/')\n        self.assertEqual(res.status_code, 404)\n\n    def test_previous_month_without_content(self):\n        \"Content can exist on any day of the previous month. Refs #14711\"\n        self.pubdate_list = [\n            datetime.date(2010, month, day)\n            for month,day in ((9,1), (10,2), (11,3))\n        ]\n        for pubdate in self.pubdate_list:\n            name = str(pubdate)\n            Book.objects.create(name=name, slug=name, pages=100, pubdate=pubdate)\n\n        res = self.client.get('/dates/books/2010/nov/allow_empty/')\n        self.assertEqual(res.status_code, 200)\n        self.assertEqual(res.context['previous_month'], datetime.date(2010,10,1))\n        # The following test demonstrates the bug\n        res = self.client.get('/dates/books/2010/nov/')\n        self.assertEqual(res.status_code, 200)\n        self.assertEqual(res.context['previous_month'], datetime.date(2010,10,1))\n        # The bug does not occur here because a Book with pubdate of Sep 1 exists\n        res = self.client.get('/dates/books/2010/oct/')\n        self.assertEqual(res.status_code, 200)\n        self.assertEqual(res.context['previous_month'], datetime.date(2010,9,1))\n\n    def test_datetime_month_view(self):\n        BookSigning.objects.create(event_date=datetime.datetime(2008, 2, 1, 12, 0))\n        BookSigning.objects.create(event_date=datetime.datetime(2008, 4, 2, 12, 0))\n        BookSigning.objects.create(event_date=datetime.datetime(2008, 6, 3, 12, 0))\n        res = self.client.get('/dates/booksignings/2008/apr/')\n        self.assertEqual(res.status_code, 200)\n\n    @override_settings(USE_TZ=True, TIME_ZONE='Africa/Nairobi')\n    def test_aware_datetime_month_view(self):\n        BookSigning.objects.create(event_date=datetime.datetime(2008, 2, 1, 12, 0, tzinfo=timezone.utc))\n        BookSigning.objects.create(event_date=datetime.datetime(2008, 4, 2, 12, 0, tzinfo=timezone.utc))\n        BookSigning.objects.create(event_date=datetime.datetime(2008, 6, 3, 12, 0, tzinfo=timezone.utc))\n        res = self.client.get('/dates/booksignings/2008/apr/')\n        self.assertEqual(res.status_code, 200)\n\n    def test_date_list_order(self):\n        \"\"\"date_list should be sorted ascending in month view\"\"\"\n        _make_books(10, base_date=datetime.date(2011, 12, 25))\n        res = self.client.get('/dates/books/2011/dec/')\n        self.assertEqual(list(res.context['date_list']), list(sorted(res.context['date_list'])))\n\n\nclass WeekArchiveViewTests(TestCase):\n    fixtures = ['generic-views-test-data.json']\n    urls = 'regressiontests.generic_views.urls'\n\n    def test_week_view(self):\n        res = self.client.get('/dates/books/2008/week/39/')\n        self.assertEqual(res.status_code, 200)\n        self.assertTemplateUsed(res, 'generic_views/book_archive_week.html')\n        self.assertEqual(res.context['book_list'][0], Book.objects.get(pubdate=datetime.date(2008, 10, 1)))\n        self.assertEqual(res.context['week'], datetime.date(2008, 9, 28))\n\n        # Since allow_empty=False, next/prev weeks must be valid\n        self.assertEqual(res.context['next_week'], None)\n        self.assertEqual(res.context['previous_week'], datetime.date(2006, 4, 30))\n\n    def test_week_view_allow_empty(self):\n        # allow_empty = False, empty week\n        res = self.client.get('/dates/books/2008/week/12/')\n        self.assertEqual(res.status_code, 404)\n\n        # allow_empty = True, empty month\n        res = self.client.get('/dates/books/2008/week/12/allow_empty/')\n        self.assertEqual(res.status_code, 200)\n        self.assertEqual(list(res.context['book_list']), [])\n        self.assertEqual(res.context['week'], datetime.date(2008, 3, 23))\n\n        # Since allow_empty=True, next/prev are allowed to be empty weeks\n        self.assertEqual(res.context['next_week'], datetime.date(2008, 3, 30))\n        self.assertEqual(res.context['previous_week'], datetime.date(2008, 3, 16))\n\n        # allow_empty but not allow_future: next_week should be empty\n        url = datetime.date.today().strftime('/dates/books/%Y/week/%U/allow_empty/').lower()\n        res = self.client.get(url)\n        self.assertEqual(res.status_code, 200)\n        self.assertEqual(res.context['next_week'], None)\n\n    def test_week_view_allow_future(self):\n        # January 7th always falls in week 1, given Python's definition of week numbers\n        future = datetime.date(datetime.date.today().year + 1, 1, 7)\n        future_sunday = future - datetime.timedelta(days=(future.weekday() + 1) % 7)\n        b = Book.objects.create(name=\"The New New Testement\", pages=600, pubdate=future)\n\n        res = self.client.get('/dates/books/%s/week/1/' % future.year)\n        self.assertEqual(res.status_code, 404)\n\n        res = self.client.get('/dates/books/%s/week/1/allow_future/' % future.year)\n        self.assertEqual(res.status_code, 200)\n        self.assertEqual(list(res.context['book_list']), [b])\n        self.assertEqual(res.context['week'], future_sunday)\n\n        # Since allow_future = True but not allow_empty, next/prev are not\n        # allowed to be empty weeks\n        self.assertEqual(res.context['next_week'], None)\n        self.assertEqual(res.context['previous_week'], datetime.date(2008, 9, 28))\n\n        # allow_future, but not allow_empty, with a current week. So next\n        # should be in the future\n        res = self.client.get('/dates/books/2008/week/39/allow_future/')\n        self.assertEqual(res.status_code, 200)\n        self.assertEqual(res.context['next_week'], future_sunday)\n        self.assertEqual(res.context['previous_week'], datetime.date(2006, 4, 30))\n\n    def test_week_view_paginated(self):\n        week_start = datetime.date(2008, 9, 28)\n        week_end = week_start + datetime.timedelta(days=7)\n        res = self.client.get('/dates/books/2008/week/39/')\n        self.assertEqual(res.status_code, 200)\n        self.assertEqual(list(res.context['book_list']), list(Book.objects.filter(pubdate__gte=week_start, pubdate__lt=week_end)))\n        self.assertEqual(list(res.context['object_list']), list(Book.objects.filter(pubdate__gte=week_start, pubdate__lt=week_end)))\n        self.assertTemplateUsed(res, 'generic_views/book_archive_week.html')\n\n    def test_week_view_invalid_pattern(self):\n        res = self.client.get('/dates/books/2007/week/no_week/')\n        self.assertEqual(res.status_code, 404)\n\n    def test_week_start_Monday(self):\n        # Regression for #14752\n        res = self.client.get('/dates/books/2008/week/39/')\n        self.assertEqual(res.status_code, 200)\n        self.assertEqual(res.context['week'], datetime.date(2008, 9, 28))\n\n        res = self.client.get('/dates/books/2008/week/39/monday/')\n        self.assertEqual(res.status_code, 200)\n        self.assertEqual(res.context['week'], datetime.date(2008, 9, 29))\n\n    def test_datetime_week_view(self):\n        BookSigning.objects.create(event_date=datetime.datetime(2008, 4, 2, 12, 0))\n        res = self.client.get('/dates/booksignings/2008/week/13/')\n        self.assertEqual(res.status_code, 200)\n\n    @override_settings(USE_TZ=True, TIME_ZONE='Africa/Nairobi')\n    def test_aware_datetime_week_view(self):\n        BookSigning.objects.create(event_date=datetime.datetime(2008, 4, 2, 12, 0, tzinfo=timezone.utc))\n        res = self.client.get('/dates/booksignings/2008/week/13/')\n        self.assertEqual(res.status_code, 200)\n\n\nclass DayArchiveViewTests(TestCase):\n    fixtures = ['generic-views-test-data.json']\n    urls = 'regressiontests.generic_views.urls'\n\n    def test_day_view(self):\n        res = self.client.get('/dates/books/2008/oct/01/')\n        self.assertEqual(res.status_code, 200)\n        self.assertTemplateUsed(res, 'generic_views/book_archive_day.html')\n        self.assertEqual(list(res.context['book_list']),\n                         list(Book.objects.filter(pubdate=datetime.date(2008, 10, 1))))\n        self.assertEqual(res.context['day'], datetime.date(2008, 10, 1))\n\n        # Since allow_empty=False, next/prev days must be valid.\n        self.assertEqual(res.context['next_day'], None)\n        self.assertEqual(res.context['previous_day'], datetime.date(2006, 5, 1))\n\n    def test_day_view_allow_empty(self):\n        # allow_empty = False, empty month\n        res = self.client.get('/dates/books/2000/jan/1/')\n        self.assertEqual(res.status_code, 404)\n\n        # allow_empty = True, empty month\n        res = self.client.get('/dates/books/2000/jan/1/allow_empty/')\n        self.assertEqual(res.status_code, 200)\n        self.assertEqual(list(res.context['book_list']), [])\n        self.assertEqual(res.context['day'], datetime.date(2000, 1, 1))\n\n        # Since it's allow empty, next/prev are allowed to be empty months (#7164)\n        self.assertEqual(res.context['next_day'], datetime.date(2000, 1, 2))\n        self.assertEqual(res.context['previous_day'], datetime.date(1999, 12, 31))\n\n        # allow_empty but not allow_future: next_month should be empty (#7164)\n        url = datetime.date.today().strftime('/dates/books/%Y/%b/%d/allow_empty/').lower()\n        res = self.client.get(url)\n        self.assertEqual(res.status_code, 200)\n        self.assertEqual(res.context['next_day'], None)\n\n    def test_day_view_allow_future(self):\n        future = (datetime.date.today() + datetime.timedelta(days=60))\n        urlbit = future.strftime('%Y/%b/%d').lower()\n        b = Book.objects.create(name=\"The New New Testement\", pages=600, pubdate=future)\n\n        # allow_future = False, future month\n        res = self.client.get('/dates/books/%s/' % urlbit)\n        self.assertEqual(res.status_code, 404)\n\n        # allow_future = True, valid future month\n        res = self.client.get('/dates/books/%s/allow_future/' % urlbit)\n        self.assertEqual(res.status_code, 200)\n        self.assertEqual(list(res.context['book_list']), [b])\n        self.assertEqual(res.context['day'], future)\n\n        # allow_future but not allow_empty, next/prev must be valid\n        self.assertEqual(res.context['next_day'], None)\n        self.assertEqual(res.context['previous_day'], datetime.date(2008, 10, 1))\n\n        # allow_future, but not allow_empty, with a current month.\n        res = self.client.get('/dates/books/2008/oct/01/allow_future/')\n        self.assertEqual(res.status_code, 200)\n        self.assertEqual(res.context['next_day'], future)\n        self.assertEqual(res.context['previous_day'], datetime.date(2006, 5, 1))\n\n        # allow_future for yesterday, next_day is today (#17192)\n        today = datetime.date.today()\n        yesterday = today - datetime.timedelta(days=1)\n        res = self.client.get('/dates/books/%s/allow_empty_and_future/'\n                              % yesterday.strftime('%Y/%b/%d').lower())\n        self.assertEqual(res.context['next_day'], today)\n\n    def test_day_view_paginated(self):\n        res = self.client.get('/dates/books/2008/oct/1/')\n        self.assertEqual(res.status_code, 200)\n        self.assertEqual(list(res.context['book_list']), list(Book.objects.filter(pubdate__year=2008, pubdate__month=10, pubdate__day=1)))\n        self.assertEqual(list(res.context['object_list']), list(Book.objects.filter(pubdate__year=2008, pubdate__month=10, pubdate__day=1)))\n        self.assertTemplateUsed(res, 'generic_views/book_archive_day.html')\n\n    def test_next_prev_context(self):\n        res = self.client.get('/dates/books/2008/oct/01/')\n        self.assertEqual(res.content, b\"Archive for Oct. 1, 2008. Previous day is May 1, 2006\")\n\n    def test_custom_month_format(self):\n        res = self.client.get('/dates/books/2008/10/01/')\n        self.assertEqual(res.status_code, 200)\n\n    def test_day_view_invalid_pattern(self):\n        res = self.client.get('/dates/books/2007/oct/no_day/')\n        self.assertEqual(res.status_code, 404)\n\n    def test_today_view(self):\n        res = self.client.get('/dates/books/today/')\n        self.assertEqual(res.status_code, 404)\n        res = self.client.get('/dates/books/today/allow_empty/')\n        self.assertEqual(res.status_code, 200)\n        self.assertEqual(res.context['day'], datetime.date.today())\n\n    def test_datetime_day_view(self):\n        BookSigning.objects.create(event_date=datetime.datetime(2008, 4, 2, 12, 0))\n        res = self.client.get('/dates/booksignings/2008/apr/2/')\n        self.assertEqual(res.status_code, 200)\n\n    @requires_tz_support\n    @override_settings(USE_TZ=True, TIME_ZONE='Africa/Nairobi')\n    def test_aware_datetime_day_view(self):\n        bs = BookSigning.objects.create(event_date=datetime.datetime(2008, 4, 2, 12, 0, tzinfo=timezone.utc))\n        res = self.client.get('/dates/booksignings/2008/apr/2/')\n        self.assertEqual(res.status_code, 200)\n        # 2008-04-02T00:00:00+03:00 (beginning of day) > 2008-04-01T22:00:00+00:00 (book signing event date)\n        bs.event_date = datetime.datetime(2008, 4, 1, 22, 0, tzinfo=timezone.utc)\n        bs.save()\n        res = self.client.get('/dates/booksignings/2008/apr/2/')\n        self.assertEqual(res.status_code, 200)\n        # 2008-04-03T00:00:00+03:00 (end of day) > 2008-04-02T22:00:00+00:00 (book signing event date)\n        bs.event_date = datetime.datetime(2008, 4, 2, 22, 0, tzinfo=timezone.utc)\n        bs.save()\n        res = self.client.get('/dates/booksignings/2008/apr/2/')\n        self.assertEqual(res.status_code, 404)\n\n\nclass DateDetailViewTests(TestCase):\n    fixtures = ['generic-views-test-data.json']\n    urls = 'regressiontests.generic_views.urls'\n\n    def test_date_detail_by_pk(self):\n        res = self.client.get('/dates/books/2008/oct/01/1/')\n        self.assertEqual(res.status_code, 200)\n        self.assertEqual(res.context['object'], Book.objects.get(pk=1))\n        self.assertEqual(res.context['book'], Book.objects.get(pk=1))\n        self.assertTemplateUsed(res, 'generic_views/book_detail.html')\n\n    def test_date_detail_by_slug(self):\n        res = self.client.get('/dates/books/2006/may/01/byslug/dreaming-in-code/')\n        self.assertEqual(res.status_code, 200)\n        self.assertEqual(res.context['book'], Book.objects.get(slug='dreaming-in-code'))\n\n    def test_date_detail_custom_month_format(self):\n        res = self.client.get('/dates/books/2008/10/01/1/')\n        self.assertEqual(res.status_code, 200)\n        self.assertEqual(res.context['book'], Book.objects.get(pk=1))\n\n    def test_date_detail_allow_future(self):\n        future = (datetime.date.today() + datetime.timedelta(days=60))\n        urlbit = future.strftime('%Y/%b/%d').lower()\n        b = Book.objects.create(name=\"The New New Testement\", slug=\"new-new\", pages=600, pubdate=future)\n\n        res = self.client.get('/dates/books/%s/new-new/' % urlbit)\n        self.assertEqual(res.status_code, 404)\n\n        res = self.client.get('/dates/books/%s/%s/allow_future/' % (urlbit, b.id))\n        self.assertEqual(res.status_code, 200)\n        self.assertEqual(res.context['book'], b)\n        self.assertTemplateUsed(res, 'generic_views/book_detail.html')\n\n    def test_invalid_url(self):\n        self.assertRaises(AttributeError, self.client.get, \"/dates/books/2008/oct/01/nopk/\")\n\n    def test_get_object_custom_queryset(self):\n        \"\"\"\n        Ensure that custom querysets are used when provided to\n        BaseDateDetailView.get_object()\n        Refs #16918.\n        \"\"\"\n        res = self.client.get(\n            '/dates/books/get_object_custom_queryset/2006/may/01/2/')\n        self.assertEqual(res.status_code, 200)\n        self.assertEqual(res.context['object'], Book.objects.get(pk=2))\n        self.assertEqual(res.context['book'], Book.objects.get(pk=2))\n        self.assertTemplateUsed(res, 'generic_views/book_detail.html')\n\n        res = self.client.get(\n            '/dates/books/get_object_custom_queryset/2008/oct/01/1/')\n        self.assertEqual(res.status_code, 404)\n\n    def test_datetime_date_detail(self):\n        bs = BookSigning.objects.create(event_date=datetime.datetime(2008, 4, 2, 12, 0))\n        res = self.client.get('/dates/booksignings/2008/apr/2/%d/' % bs.pk)\n        self.assertEqual(res.status_code, 200)\n\n    @requires_tz_support\n    @override_settings(USE_TZ=True, TIME_ZONE='Africa/Nairobi')\n    def test_aware_datetime_date_detail(self):\n        bs = BookSigning.objects.create(event_date=datetime.datetime(2008, 4, 2, 12, 0, tzinfo=timezone.utc))\n        res = self.client.get('/dates/booksignings/2008/apr/2/%d/' % bs.pk)\n        self.assertEqual(res.status_code, 200)\n        # 2008-04-02T00:00:00+03:00 (beginning of day) > 2008-04-01T22:00:00+00:00 (book signing event date)\n        bs.event_date = datetime.datetime(2008, 4, 1, 22, 0, tzinfo=timezone.utc)\n        bs.save()\n        res = self.client.get('/dates/booksignings/2008/apr/2/%d/' % bs.pk)\n        self.assertEqual(res.status_code, 200)\n        # 2008-04-03T00:00:00+03:00 (end of day) > 2008-04-02T22:00:00+00:00 (book signing event date)\n        bs.event_date = datetime.datetime(2008, 4, 2, 22, 0, tzinfo=timezone.utc)\n        bs.save()\n        res = self.client.get('/dates/booksignings/2008/apr/2/%d/' % bs.pk)\n        self.assertEqual(res.status_code, 404)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/generic_views/detail.py",
    "content": "from __future__ import absolute_import\n\nfrom django.core.exceptions import ImproperlyConfigured\nfrom django.test import TestCase\nfrom django.views.generic.base import View\n\nfrom .models import Artist, Author, Page\n\n\nclass DetailViewTest(TestCase):\n    fixtures = ['generic-views-test-data.json']\n    urls = 'regressiontests.generic_views.urls'\n\n    def test_simple_object(self):\n        res = self.client.get('/detail/obj/')\n        self.assertEqual(res.status_code, 200)\n        self.assertEqual(res.context['object'], {'foo': 'bar'})\n        self.assertTrue(isinstance(res.context['view'], View))\n        self.assertTemplateUsed(res, 'generic_views/detail.html')\n\n    def test_detail_by_pk(self):\n        res = self.client.get('/detail/author/1/')\n        self.assertEqual(res.status_code, 200)\n        self.assertEqual(res.context['object'], Author.objects.get(pk=1))\n        self.assertEqual(res.context['author'], Author.objects.get(pk=1))\n        self.assertTemplateUsed(res, 'generic_views/author_detail.html')\n\n    def test_detail_by_custom_pk(self):\n        res = self.client.get('/detail/author/bycustompk/1/')\n        self.assertEqual(res.status_code, 200)\n        self.assertEqual(res.context['object'], Author.objects.get(pk=1))\n        self.assertEqual(res.context['author'], Author.objects.get(pk=1))\n        self.assertTemplateUsed(res, 'generic_views/author_detail.html')\n\n    def test_detail_by_slug(self):\n        res = self.client.get('/detail/author/byslug/scott-rosenberg/')\n        self.assertEqual(res.status_code, 200)\n        self.assertEqual(res.context['object'], Author.objects.get(slug='scott-rosenberg'))\n        self.assertEqual(res.context['author'], Author.objects.get(slug='scott-rosenberg'))\n        self.assertTemplateUsed(res, 'generic_views/author_detail.html')\n\n    def test_detail_by_custom_slug(self):\n        res = self.client.get('/detail/author/bycustomslug/scott-rosenberg/')\n        self.assertEqual(res.status_code, 200)\n        self.assertEqual(res.context['object'], Author.objects.get(slug='scott-rosenberg'))\n        self.assertEqual(res.context['author'], Author.objects.get(slug='scott-rosenberg'))\n        self.assertTemplateUsed(res, 'generic_views/author_detail.html')\n\n    def test_verbose_name(self):\n        res = self.client.get('/detail/artist/1/')\n        self.assertEqual(res.status_code, 200)\n        self.assertEqual(res.context['object'], Artist.objects.get(pk=1))\n        self.assertEqual(res.context['artist'], Artist.objects.get(pk=1))\n        self.assertTemplateUsed(res, 'generic_views/artist_detail.html')\n\n    def test_template_name(self):\n        res = self.client.get('/detail/author/1/template_name/')\n        self.assertEqual(res.status_code, 200)\n        self.assertEqual(res.context['object'], Author.objects.get(pk=1))\n        self.assertEqual(res.context['author'], Author.objects.get(pk=1))\n        self.assertTemplateUsed(res, 'generic_views/about.html')\n\n    def test_template_name_suffix(self):\n        res = self.client.get('/detail/author/1/template_name_suffix/')\n        self.assertEqual(res.status_code, 200)\n        self.assertEqual(res.context['object'], Author.objects.get(pk=1))\n        self.assertEqual(res.context['author'], Author.objects.get(pk=1))\n        self.assertTemplateUsed(res, 'generic_views/author_view.html')\n\n    def test_template_name_field(self):\n        res = self.client.get('/detail/page/1/field/')\n        self.assertEqual(res.status_code, 200)\n        self.assertEqual(res.context['object'], Page.objects.get(pk=1))\n        self.assertEqual(res.context['page'], Page.objects.get(pk=1))\n        self.assertTemplateUsed(res, 'generic_views/page_template.html')\n\n    def test_context_object_name(self):\n        res = self.client.get('/detail/author/1/context_object_name/')\n        self.assertEqual(res.status_code, 200)\n        self.assertEqual(res.context['object'], Author.objects.get(pk=1))\n        self.assertEqual(res.context['thingy'], Author.objects.get(pk=1))\n        self.assertFalse('author' in res.context)\n        self.assertTemplateUsed(res, 'generic_views/author_detail.html')\n\n    def test_duplicated_context_object_name(self):\n        res = self.client.get('/detail/author/1/dupe_context_object_name/')\n        self.assertEqual(res.status_code, 200)\n        self.assertEqual(res.context['object'], Author.objects.get(pk=1))\n        self.assertFalse('author' in res.context)\n        self.assertTemplateUsed(res, 'generic_views/author_detail.html')\n\n    def test_invalid_url(self):\n        self.assertRaises(AttributeError, self.client.get, '/detail/author/invalid/url/')\n\n    def test_invalid_queryset(self):\n        self.assertRaises(ImproperlyConfigured, self.client.get, '/detail/author/invalid/qs/')\n\n    def test_non_model_object_with_meta(self):\n        res = self.client.get('/detail/nonmodel/1/')\n        self.assertEqual(res.status_code, 200)\n        self.assertEqual(res.context['object'].id, \"non_model_1\")\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/generic_views/edit.py",
    "content": "from __future__ import absolute_import\n\nfrom django.core.exceptions import ImproperlyConfigured\nfrom django.core.urlresolvers import reverse\nfrom django import forms\nfrom django.test import TestCase\nfrom django.utils.unittest import expectedFailure\nfrom django.views.generic.base import View\nfrom django.views.generic.edit import FormMixin\n\nfrom . import views\nfrom .models import Artist, Author\n\n\nclass FormMixinTests(TestCase):\n     def test_initial_data(self):\n         \"\"\" Test instance independence of initial data dict (see #16138) \"\"\"\n         initial_1 = FormMixin().get_initial()\n         initial_1['foo'] = 'bar'\n         initial_2 = FormMixin().get_initial()\n         self.assertNotEqual(initial_1, initial_2)\n\n\nclass BasicFormTests(TestCase):\n    urls = 'regressiontests.generic_views.urls'\n\n    def test_post_data(self):\n        res = self.client.post('/contact/', {'name': \"Me\", 'message': \"Hello\"})\n        self.assertRedirects(res, 'http://testserver/list/authors/')\n\n\nclass ModelFormMixinTests(TestCase):\n    def test_get_form(self):\n        form_class = views.AuthorGetQuerySetFormView().get_form_class()\n        self.assertEqual(form_class._meta.model, Author)\n\nclass CreateViewTests(TestCase):\n    urls = 'regressiontests.generic_views.urls'\n\n    def test_create(self):\n        res = self.client.get('/edit/authors/create/')\n        self.assertEqual(res.status_code, 200)\n        self.assertTrue(isinstance(res.context['form'], forms.ModelForm))\n        self.assertTrue(isinstance(res.context['view'], View))\n        self.assertFalse('object' in res.context)\n        self.assertFalse('author' in res.context)\n        self.assertTemplateUsed(res, 'generic_views/author_form.html')\n\n        res = self.client.post('/edit/authors/create/',\n                        {'name': 'Randall Munroe', 'slug': 'randall-munroe'})\n        self.assertEqual(res.status_code, 302)\n        self.assertRedirects(res, 'http://testserver/list/authors/')\n        self.assertQuerysetEqual(Author.objects.all(), ['<Author: Randall Munroe>'])\n\n    def test_create_invalid(self):\n        res = self.client.post('/edit/authors/create/',\n                        {'name': 'A' * 101, 'slug': 'randall-munroe'})\n        self.assertEqual(res.status_code, 200)\n        self.assertTemplateUsed(res, 'generic_views/author_form.html')\n        self.assertEqual(len(res.context['form'].errors), 1)\n        self.assertEqual(Author.objects.count(), 0)\n\n    def test_create_with_object_url(self):\n        res = self.client.post('/edit/artists/create/',\n                        {'name': 'Rene Magritte'})\n        self.assertEqual(res.status_code, 302)\n        artist = Artist.objects.get(name='Rene Magritte')\n        self.assertRedirects(res, 'http://testserver/detail/artist/%d/' % artist.pk)\n        self.assertQuerysetEqual(Artist.objects.all(), ['<Artist: Rene Magritte>'])\n\n    def test_create_with_redirect(self):\n        res = self.client.post('/edit/authors/create/redirect/',\n                            {'name': 'Randall Munroe', 'slug': 'randall-munroe'})\n        self.assertEqual(res.status_code, 302)\n        self.assertRedirects(res, 'http://testserver/edit/authors/create/')\n        self.assertQuerysetEqual(Author.objects.all(), ['<Author: Randall Munroe>'])\n\n    def test_create_with_interpolated_redirect(self):\n        res = self.client.post('/edit/authors/create/interpolate_redirect/',\n                            {'name': 'Randall Munroe', 'slug': 'randall-munroe'})\n        self.assertQuerysetEqual(Author.objects.all(), ['<Author: Randall Munroe>'])\n        self.assertEqual(res.status_code, 302)\n        pk = Author.objects.all()[0].pk\n        self.assertRedirects(res, 'http://testserver/edit/author/%d/update/' % pk)\n\n    def test_create_with_special_properties(self):\n        res = self.client.get('/edit/authors/create/special/')\n        self.assertEqual(res.status_code, 200)\n        self.assertTrue(isinstance(res.context['form'], views.AuthorForm))\n        self.assertFalse('object' in res.context)\n        self.assertFalse('author' in res.context)\n        self.assertTemplateUsed(res, 'generic_views/form.html')\n\n        res = self.client.post('/edit/authors/create/special/',\n                            {'name': 'Randall Munroe', 'slug': 'randall-munroe'})\n        self.assertEqual(res.status_code, 302)\n        obj = Author.objects.get(slug='randall-munroe')\n        self.assertRedirects(res, reverse('author_detail', kwargs={'pk': obj.pk}))\n        self.assertQuerysetEqual(Author.objects.all(), ['<Author: Randall Munroe>'])\n\n    def test_create_without_redirect(self):\n        try:\n            res = self.client.post('/edit/authors/create/naive/',\n                            {'name': 'Randall Munroe', 'slug': 'randall-munroe'})\n            self.fail('Should raise exception -- No redirect URL provided, and no get_absolute_url provided')\n        except ImproperlyConfigured:\n            pass\n\n    def test_create_restricted(self):\n        res = self.client.post('/edit/authors/create/restricted/',\n                        {'name': 'Randall Munroe', 'slug': 'randall-munroe'})\n        self.assertEqual(res.status_code, 302)\n        self.assertRedirects(res, 'http://testserver/accounts/login/?next=/edit/authors/create/restricted/')\n\n\nclass UpdateViewTests(TestCase):\n    urls = 'regressiontests.generic_views.urls'\n\n    def test_update_post(self):\n        a = Author.objects.create(\n            name='Randall Munroe',\n            slug='randall-munroe',\n        )\n        res = self.client.get('/edit/author/%d/update/' % a.pk)\n        self.assertEqual(res.status_code, 200)\n        self.assertTrue(isinstance(res.context['form'], forms.ModelForm))\n        self.assertEqual(res.context['object'], Author.objects.get(pk=a.pk))\n        self.assertEqual(res.context['author'], Author.objects.get(pk=a.pk))\n        self.assertTemplateUsed(res, 'generic_views/author_form.html')\n\n        # Modification with both POST and PUT (browser compatible)\n        res = self.client.post('/edit/author/%d/update/' % a.pk,\n                        {'name': 'Randall Munroe (xkcd)', 'slug': 'randall-munroe'})\n        self.assertEqual(res.status_code, 302)\n        self.assertRedirects(res, 'http://testserver/list/authors/')\n        self.assertQuerysetEqual(Author.objects.all(), ['<Author: Randall Munroe (xkcd)>'])\n\n    @expectedFailure\n    def test_update_put(self):\n        a = Author.objects.create(\n            name='Randall Munroe',\n            slug='randall-munroe',\n        )\n        res = self.client.get('/edit/author/%d/update/' % a.pk)\n        self.assertEqual(res.status_code, 200)\n        self.assertTemplateUsed(res, 'generic_views/author_form.html')\n\n        res = self.client.put('/edit/author/%d/update/' % a.pk,\n                        {'name': 'Randall Munroe (author of xkcd)', 'slug': 'randall-munroe'})\n        # Here is the expected failure. PUT data are not processed in any special\n        # way by django. So the request will equal to a POST without data, hence\n        # the form will be invalid and redisplayed with errors (status code 200).\n        # See also #12635\n        self.assertEqual(res.status_code, 302)\n        self.assertRedirects(res, 'http://testserver/list/authors/')\n        self.assertQuerysetEqual(Author.objects.all(), ['<Author: Randall Munroe (author of xkcd)>'])\n\n    def test_update_invalid(self):\n        a = Author.objects.create(\n            name='Randall Munroe',\n            slug='randall-munroe',\n        )\n        res = self.client.post('/edit/author/%d/update/' % a.pk,\n                        {'name': 'A' * 101, 'slug': 'randall-munroe'})\n        self.assertEqual(res.status_code, 200)\n        self.assertTemplateUsed(res, 'generic_views/author_form.html')\n        self.assertEqual(len(res.context['form'].errors), 1)\n        self.assertQuerysetEqual(Author.objects.all(), ['<Author: Randall Munroe>'])\n\n    def test_update_with_object_url(self):\n        a = Artist.objects.create(name='Rene Magritte')\n        res = self.client.post('/edit/artists/%d/update/' % a.pk,\n                        {'name': 'Rene Magritte'})\n        self.assertEqual(res.status_code, 302)\n        self.assertRedirects(res, 'http://testserver/detail/artist/%d/' % a.pk)\n        self.assertQuerysetEqual(Artist.objects.all(), ['<Artist: Rene Magritte>'])\n\n    def test_update_with_redirect(self):\n        a = Author.objects.create(\n            name='Randall Munroe',\n            slug='randall-munroe',\n        )\n        res = self.client.post('/edit/author/%d/update/redirect/' % a.pk,\n                        {'name': 'Randall Munroe (author of xkcd)', 'slug': 'randall-munroe'})\n        self.assertEqual(res.status_code, 302)\n        self.assertRedirects(res, 'http://testserver/edit/authors/create/')\n        self.assertQuerysetEqual(Author.objects.all(), ['<Author: Randall Munroe (author of xkcd)>'])\n\n    def test_update_with_interpolated_redirect(self):\n        a = Author.objects.create(\n            name='Randall Munroe',\n            slug='randall-munroe',\n        )\n        res = self.client.post('/edit/author/%d/update/interpolate_redirect/' % a.pk,\n                        {'name': 'Randall Munroe (author of xkcd)', 'slug': 'randall-munroe'})\n        self.assertQuerysetEqual(Author.objects.all(), ['<Author: Randall Munroe (author of xkcd)>'])\n        self.assertEqual(res.status_code, 302)\n        pk = Author.objects.all()[0].pk\n        self.assertRedirects(res, 'http://testserver/edit/author/%d/update/' % pk)\n\n    def test_update_with_special_properties(self):\n        a = Author.objects.create(\n            name='Randall Munroe',\n            slug='randall-munroe',\n        )\n        res = self.client.get('/edit/author/%d/update/special/' % a.pk)\n        self.assertEqual(res.status_code, 200)\n        self.assertTrue(isinstance(res.context['form'], views.AuthorForm))\n        self.assertEqual(res.context['object'], Author.objects.get(pk=a.pk))\n        self.assertEqual(res.context['thingy'], Author.objects.get(pk=a.pk))\n        self.assertFalse('author' in res.context)\n        self.assertTemplateUsed(res, 'generic_views/form.html')\n\n        res = self.client.post('/edit/author/%d/update/special/' % a.pk,\n                        {'name': 'Randall Munroe (author of xkcd)', 'slug': 'randall-munroe'})\n        self.assertEqual(res.status_code, 302)\n        self.assertRedirects(res, 'http://testserver/detail/author/%d/' % a.pk)\n        self.assertQuerysetEqual(Author.objects.all(), ['<Author: Randall Munroe (author of xkcd)>'])\n\n    def test_update_without_redirect(self):\n        try:\n            a = Author.objects.create(\n                name='Randall Munroe',\n                slug='randall-munroe',\n            )\n            res = self.client.post('/edit/author/%d/update/naive/' % a.pk,\n                            {'name': 'Randall Munroe (author of xkcd)', 'slug': 'randall-munroe'})\n            self.fail('Should raise exception -- No redirect URL provided, and no get_absolute_url provided')\n        except ImproperlyConfigured:\n            pass\n\n    def test_update_get_object(self):\n        a = Author.objects.create(\n            pk=1,\n            name='Randall Munroe',\n            slug='randall-munroe',\n        )\n        res = self.client.get('/edit/author/update/')\n        self.assertEqual(res.status_code, 200)\n        self.assertTrue(isinstance(res.context['form'], forms.ModelForm))\n        self.assertTrue(isinstance(res.context['view'], View))\n        self.assertEqual(res.context['object'], Author.objects.get(pk=a.pk))\n        self.assertEqual(res.context['author'], Author.objects.get(pk=a.pk))\n        self.assertTemplateUsed(res, 'generic_views/author_form.html')\n\n        # Modification with both POST and PUT (browser compatible)\n        res = self.client.post('/edit/author/update/',\n                        {'name': 'Randall Munroe (xkcd)', 'slug': 'randall-munroe'})\n        self.assertEqual(res.status_code, 302)\n        self.assertRedirects(res, 'http://testserver/list/authors/')\n        self.assertQuerysetEqual(Author.objects.all(), ['<Author: Randall Munroe (xkcd)>'])\n\n\nclass DeleteViewTests(TestCase):\n    urls = 'regressiontests.generic_views.urls'\n\n    def test_delete_by_post(self):\n        a = Author.objects.create(**{'name': 'Randall Munroe', 'slug': 'randall-munroe'})\n        res = self.client.get('/edit/author/%d/delete/' % a.pk)\n        self.assertEqual(res.status_code, 200)\n        self.assertEqual(res.context['object'], Author.objects.get(pk=a.pk))\n        self.assertEqual(res.context['author'], Author.objects.get(pk=a.pk))\n        self.assertTemplateUsed(res, 'generic_views/author_confirm_delete.html')\n\n        # Deletion with POST\n        res = self.client.post('/edit/author/%d/delete/' % a.pk)\n        self.assertEqual(res.status_code, 302)\n        self.assertRedirects(res, 'http://testserver/list/authors/')\n        self.assertQuerysetEqual(Author.objects.all(), [])\n\n    def test_delete_by_delete(self):\n        # Deletion with browser compatible DELETE method\n        a = Author.objects.create(**{'name': 'Randall Munroe', 'slug': 'randall-munroe'})\n        res = self.client.delete('/edit/author/%d/delete/' % a.pk)\n        self.assertEqual(res.status_code, 302)\n        self.assertRedirects(res, 'http://testserver/list/authors/')\n        self.assertQuerysetEqual(Author.objects.all(), [])\n\n    def test_delete_with_redirect(self):\n        a = Author.objects.create(**{'name': 'Randall Munroe', 'slug': 'randall-munroe'})\n        res = self.client.post('/edit/author/%d/delete/redirect/' % a.pk)\n        self.assertEqual(res.status_code, 302)\n        self.assertRedirects(res, 'http://testserver/edit/authors/create/')\n        self.assertQuerysetEqual(Author.objects.all(), [])\n\n    def test_delete_with_special_properties(self):\n        a = Author.objects.create(**{'name': 'Randall Munroe', 'slug': 'randall-munroe'})\n        res = self.client.get('/edit/author/%d/delete/special/' % a.pk)\n        self.assertEqual(res.status_code, 200)\n        self.assertEqual(res.context['object'], Author.objects.get(pk=a.pk))\n        self.assertEqual(res.context['thingy'], Author.objects.get(pk=a.pk))\n        self.assertFalse('author' in res.context)\n        self.assertTemplateUsed(res, 'generic_views/confirm_delete.html')\n\n        res = self.client.post('/edit/author/%d/delete/special/' % a.pk)\n        self.assertEqual(res.status_code, 302)\n        self.assertRedirects(res, 'http://testserver/list/authors/')\n        self.assertQuerysetEqual(Author.objects.all(), [])\n\n    def test_delete_without_redirect(self):\n        try:\n            a = Author.objects.create(\n                name='Randall Munroe',\n                slug='randall-munroe',\n            )\n            res = self.client.post('/edit/author/%d/delete/naive/' % a.pk)\n            self.fail('Should raise exception -- No redirect URL provided, and no get_absolute_url provided')\n        except ImproperlyConfigured:\n            pass\n\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/generic_views/fixtures/generic-views-test-data.json",
    "content": "[\n {\n   \"model\": \"generic_views.artist\",\n   \"pk\": 1,\n   \"fields\": {\n     \"name\": \"Rene Magritte\"\n   }\n },\n {\n   \"model\": \"generic_views.author\",\n   \"pk\": 1,\n   \"fields\": {\n     \"name\": \"Roberto Bolaño\",\n     \"slug\": \"roberto-bolano\"\n   }\n },\n {\n   \"model\": \"generic_views.author\",\n   \"pk\": 2,\n   \"fields\": {\n     \"name\": \"Scott Rosenberg\",\n     \"slug\": \"scott-rosenberg\"\n   }\n },\n {\n   \"model\": \"generic_views.book\",\n   \"pk\": 1,\n   \"fields\": {\n     \"name\": \"2066\",\n     \"slug\": \"2066\",\n     \"pages\": \"800\",\n     \"authors\": [1],\n     \"pubdate\": \"2008-10-01\"\n   }\n },\n {\n   \"model\": \"generic_views.book\",\n   \"pk\": 2,\n   \"fields\": {\n     \"name\": \"Dreaming in Code\",\n     \"slug\": \"dreaming-in-code\",\n     \"pages\": \"300\",\n     \"pubdate\": \"2006-05-01\"\n   }\n },\n {\n    \"model\": \"generic_views.page\",\n    \"pk\": 1,\n    \"fields\": {\n      \"template\": \"generic_views/page_template.html\",\n      \"content\": \"I was once bitten by a moose.\"\n    }\n }\n]"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/generic_views/forms.py",
    "content": "from __future__ import absolute_import\n\nfrom django import forms\n\nfrom .models import Author\n\n\nclass AuthorForm(forms.ModelForm):\n    name = forms.CharField()\n    slug = forms.SlugField()\n\n    class Meta:\n        model = Author\n\n\nclass ContactForm(forms.Form):\n    name = forms.CharField()\n    message = forms.CharField(widget=forms.Textarea)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/generic_views/list.py",
    "content": "from __future__ import absolute_import\n\nfrom django.core.exceptions import ImproperlyConfigured\nfrom django.test import TestCase\nfrom django.test.utils import override_settings\nfrom django.views.generic.base import View\nfrom django.utils.encoding import force_str\n\nfrom .models import Author, Artist\n\n\nclass ListViewTests(TestCase):\n    fixtures = ['generic-views-test-data.json']\n    urls = 'regressiontests.generic_views.urls'\n\n    def test_items(self):\n        res = self.client.get('/list/dict/')\n        self.assertEqual(res.status_code, 200)\n        self.assertTemplateUsed(res, 'generic_views/list.html')\n        self.assertEqual(res.context['object_list'][0]['first'], 'John')\n\n    def test_queryset(self):\n        res = self.client.get('/list/authors/')\n        self.assertEqual(res.status_code, 200)\n        self.assertTemplateUsed(res, 'generic_views/author_list.html')\n        self.assertEqual(list(res.context['object_list']), list(Author.objects.all()))\n        self.assertTrue(isinstance(res.context['view'], View))\n        self.assertIs(res.context['author_list'], res.context['object_list'])\n        self.assertIsNone(res.context['paginator'])\n        self.assertIsNone(res.context['page_obj'])\n        self.assertFalse(res.context['is_paginated'])\n\n    def test_paginated_queryset(self):\n        self._make_authors(100)\n        res = self.client.get('/list/authors/paginated/')\n        self.assertEqual(res.status_code, 200)\n        self.assertTemplateUsed(res, 'generic_views/author_list.html')\n        self.assertEqual(len(res.context['object_list']), 30)\n        self.assertIs(res.context['author_list'], res.context['object_list'])\n        self.assertTrue(res.context['is_paginated'])\n        self.assertEqual(res.context['page_obj'].number, 1)\n        self.assertEqual(res.context['paginator'].num_pages, 4)\n        self.assertEqual(res.context['author_list'][0].name, 'Author 00')\n        self.assertEqual(list(res.context['author_list'])[-1].name, 'Author 29')\n\n    def test_paginated_queryset_shortdata(self):\n        # Test that short datasets ALSO result in a paginated view.\n        res = self.client.get('/list/authors/paginated/')\n        self.assertEqual(res.status_code, 200)\n        self.assertTemplateUsed(res, 'generic_views/author_list.html')\n        self.assertEqual(list(res.context['object_list']), list(Author.objects.all()))\n        self.assertIs(res.context['author_list'], res.context['object_list'])\n        self.assertEqual(res.context['page_obj'].number, 1)\n        self.assertEqual(res.context['paginator'].num_pages, 1)\n        self.assertFalse(res.context['is_paginated'])\n\n    def test_paginated_get_page_by_query_string(self):\n        self._make_authors(100)\n        res = self.client.get('/list/authors/paginated/', {'page': '2'})\n        self.assertEqual(res.status_code, 200)\n        self.assertTemplateUsed(res, 'generic_views/author_list.html')\n        self.assertEqual(len(res.context['object_list']), 30)\n        self.assertIs(res.context['author_list'], res.context['object_list'])\n        self.assertEqual(res.context['author_list'][0].name, 'Author 30')\n        self.assertEqual(res.context['page_obj'].number, 2)\n\n    def test_paginated_get_last_page_by_query_string(self):\n        self._make_authors(100)\n        res = self.client.get('/list/authors/paginated/', {'page': 'last'})\n        self.assertEqual(res.status_code, 200)\n        self.assertEqual(len(res.context['object_list']), 10)\n        self.assertIs(res.context['author_list'], res.context['object_list'])\n        self.assertEqual(res.context['author_list'][0].name, 'Author 90')\n        self.assertEqual(res.context['page_obj'].number, 4)\n\n    def test_paginated_get_page_by_urlvar(self):\n        self._make_authors(100)\n        res = self.client.get('/list/authors/paginated/3/')\n        self.assertEqual(res.status_code, 200)\n        self.assertTemplateUsed(res, 'generic_views/author_list.html')\n        self.assertEqual(len(res.context['object_list']), 30)\n        self.assertIs(res.context['author_list'], res.context['object_list'])\n        self.assertEqual(res.context['author_list'][0].name, 'Author 60')\n        self.assertEqual(res.context['page_obj'].number, 3)\n\n    def test_paginated_page_out_of_range(self):\n        self._make_authors(100)\n        res = self.client.get('/list/authors/paginated/42/')\n        self.assertEqual(res.status_code, 404)\n\n    def test_paginated_invalid_page(self):\n        self._make_authors(100)\n        res = self.client.get('/list/authors/paginated/?page=frog')\n        self.assertEqual(res.status_code, 404)\n\n    def test_paginated_custom_paginator_class(self):\n        self._make_authors(7)\n        res = self.client.get('/list/authors/paginated/custom_class/')\n        self.assertEqual(res.status_code, 200)\n        self.assertEqual(res.context['paginator'].num_pages, 1)\n        # Custom pagination allows for 2 orphans on a page size of 5\n        self.assertEqual(len(res.context['object_list']), 7)\n\n    def test_paginated_custom_page_kwarg(self):\n        self._make_authors(100)\n        res = self.client.get('/list/authors/paginated/custom_page_kwarg/', {'pagina': '2'})\n        self.assertEqual(res.status_code, 200)\n        self.assertTemplateUsed(res, 'generic_views/author_list.html')\n        self.assertEqual(len(res.context['object_list']), 30)\n        self.assertIs(res.context['author_list'], res.context['object_list'])\n        self.assertEqual(res.context['author_list'][0].name, 'Author 30')\n        self.assertEqual(res.context['page_obj'].number, 2)\n\n    def test_paginated_custom_paginator_constructor(self):\n        self._make_authors(7)\n        res = self.client.get('/list/authors/paginated/custom_constructor/')\n        self.assertEqual(res.status_code, 200)\n        # Custom pagination allows for 2 orphans on a page size of 5\n        self.assertEqual(len(res.context['object_list']), 7)\n\n    def test_paginated_non_queryset(self):\n        res = self.client.get('/list/dict/paginated/')\n        self.assertEqual(res.status_code, 200)\n        self.assertEqual(len(res.context['object_list']), 1)\n\n    def test_verbose_name(self):\n        res = self.client.get('/list/artists/')\n        self.assertEqual(res.status_code, 200)\n        self.assertTemplateUsed(res, 'generic_views/list.html')\n        self.assertEqual(list(res.context['object_list']), list(Artist.objects.all()))\n        self.assertIs(res.context['artist_list'], res.context['object_list'])\n        self.assertIsNone(res.context['paginator'])\n        self.assertIsNone(res.context['page_obj'])\n        self.assertFalse(res.context['is_paginated'])\n\n    def test_allow_empty_false(self):\n        res = self.client.get('/list/authors/notempty/')\n        self.assertEqual(res.status_code, 200)\n        Author.objects.all().delete()\n        res = self.client.get('/list/authors/notempty/')\n        self.assertEqual(res.status_code, 404)\n\n    def test_template_name(self):\n        res = self.client.get('/list/authors/template_name/')\n        self.assertEqual(res.status_code, 200)\n        self.assertEqual(list(res.context['object_list']), list(Author.objects.all()))\n        self.assertIs(res.context['author_list'], res.context['object_list'])\n        self.assertTemplateUsed(res, 'generic_views/list.html')\n\n    def test_template_name_suffix(self):\n        res = self.client.get('/list/authors/template_name_suffix/')\n        self.assertEqual(res.status_code, 200)\n        self.assertEqual(list(res.context['object_list']), list(Author.objects.all()))\n        self.assertIs(res.context['author_list'], res.context['object_list'])\n        self.assertTemplateUsed(res, 'generic_views/author_objects.html')\n\n    def test_context_object_name(self):\n        res = self.client.get('/list/authors/context_object_name/')\n        self.assertEqual(res.status_code, 200)\n        self.assertEqual(list(res.context['object_list']), list(Author.objects.all()))\n        self.assertNotIn('authors', res.context)\n        self.assertIs(res.context['author_list'], res.context['object_list'])\n        self.assertTemplateUsed(res, 'generic_views/author_list.html')\n\n    def test_duplicate_context_object_name(self):\n        res = self.client.get('/list/authors/dupe_context_object_name/')\n        self.assertEqual(res.status_code, 200)\n        self.assertEqual(list(res.context['object_list']), list(Author.objects.all()))\n        self.assertNotIn('authors', res.context)\n        self.assertNotIn('author_list', res.context)\n        self.assertTemplateUsed(res, 'generic_views/author_list.html')\n\n    def test_missing_items(self):\n        self.assertRaises(ImproperlyConfigured, self.client.get, '/list/authors/invalid/')\n\n    def test_paginated_list_view_does_not_load_entire_table(self):\n        # Regression test for #17535\n        self._make_authors(3)\n        # 1 query for authors\n        with self.assertNumQueries(1):\n            self.client.get('/list/authors/notempty/')\n        # same as above + 1 query to test if authors exist + 1 query for pagination\n        with self.assertNumQueries(3):\n            self.client.get('/list/authors/notempty/paginated/')\n\n    @override_settings(DEBUG=True)\n    def test_paginated_list_view_returns_useful_message_on_invalid_page(self):\n        # test for #19240\n        # tests that source exception's message is included in page\n        self._make_authors(1)\n        res = self.client.get('/list/authors/paginated/2/')\n        self.assertEqual(res.status_code, 404)\n        self.assertEqual(force_str(res.context.get('reason')),\n                \"Invalid page (2): That page contains no results\")\n\n    def _make_authors(self, n):\n        Author.objects.all().delete()\n        for i in range(n):\n            Author.objects.create(name='Author %02i' % i, slug='a%s' % i)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/generic_views/models.py",
    "content": "from django.core.urlresolvers import reverse\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n@python_2_unicode_compatible\nclass Artist(models.Model):\n    name = models.CharField(max_length=100)\n\n    class Meta:\n        ordering = ['name']\n        verbose_name = 'professional artist'\n        verbose_name_plural = 'professional artists'\n\n    def __str__(self):\n        return self.name\n\n    def get_absolute_url(self):\n        return reverse('artist_detail', kwargs={'pk': self.id})\n\n@python_2_unicode_compatible\nclass Author(models.Model):\n    name = models.CharField(max_length=100)\n    slug = models.SlugField()\n\n    class Meta:\n        ordering = ['name']\n\n    def __str__(self):\n        return self.name\n\n@python_2_unicode_compatible\nclass Book(models.Model):\n    name = models.CharField(max_length=300)\n    slug = models.SlugField()\n    pages = models.IntegerField()\n    authors = models.ManyToManyField(Author)\n    pubdate = models.DateField()\n\n    class Meta:\n        ordering = ['-pubdate']\n\n    def __str__(self):\n        return self.name\n\nclass Page(models.Model):\n    content = models.TextField()\n    template = models.CharField(max_length=300)\n\nclass BookSigning(models.Model):\n    event_date = models.DateTimeField()\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/generic_views/templates/generic_views/about.html",
    "content": "<h1>About</h1>\n{% now \"U.u\" %}\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/generic_views/templates/generic_views/apple_detail.html",
    "content": "This is a {% if tasty %}tasty {% endif %}{{ apple.color }} apple{{ extra }}"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/generic_views/templates/generic_views/artist_detail.html",
    "content": "This is an {{ artist }}."
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/generic_views/templates/generic_views/artist_form.html",
    "content": "A form: {{ form }}"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/generic_views/templates/generic_views/author_confirm_delete.html",
    "content": "Are you sure?"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/generic_views/templates/generic_views/author_detail.html",
    "content": "This is an {{ author }}."
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/generic_views/templates/generic_views/author_form.html",
    "content": "A form: {{ form }}"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/generic_views/templates/generic_views/author_list.html",
    "content": "{% for item in object_list %}\n  {{ item }}\n{% endfor %}"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/generic_views/templates/generic_views/author_objects.html",
    "content": "{% for item in object_list %}\n  {{ item }}\n{% endfor %}"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/generic_views/templates/generic_views/author_view.html",
    "content": "This is an alternate template_name_suffix for an {{ author }}."
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/generic_views/templates/generic_views/book_archive.html",
    "content": "Archive of books from {{ date_list }}. {{ object_list|length }} books found.\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/generic_views/templates/generic_views/book_archive_day.html",
    "content": "Archive for {{ day }}. Previous day is {{ previous_day }}"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/generic_views/templates/generic_views/book_archive_month.html",
    "content": "Books in {{ month }}."
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/generic_views/templates/generic_views/book_archive_week.html",
    "content": "Archive for {{ week }}."
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/generic_views/templates/generic_views/book_archive_year.html",
    "content": "Archive of books from {{ year }}. {{ object_list|length }} books found.\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/generic_views/templates/generic_views/book_detail.html",
    "content": "This is {{ book }}."
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/generic_views/templates/generic_views/book_list.html",
    "content": "{% for item in object_list %}\n  {{ item }}\n{% endfor %}"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/generic_views/templates/generic_views/confirm_delete.html",
    "content": "Generic: Are you sure?"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/generic_views/templates/generic_views/detail.html",
    "content": "Look, an {{ object }}."
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/generic_views/templates/generic_views/form.html",
    "content": "A generic form: {{ form }}"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/generic_views/templates/generic_views/list.html",
    "content": "{% for item in object_list %}\n  {{ item }}\n{% endfor %}"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/generic_views/templates/generic_views/page_template.html",
    "content": "This is some content: {{ content }}"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/generic_views/templates/generic_views/robots.txt",
    "content": "User-Agent: *\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/generic_views/templates/registration/login.html",
    "content": "An empty login template."
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/generic_views/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom .base import (ViewTest, TemplateViewTest, RedirectViewTest,\n    GetContextDataTest)\nfrom .dates import (ArchiveIndexViewTests, YearArchiveViewTests,\n    MonthArchiveViewTests, WeekArchiveViewTests, DayArchiveViewTests,\n    DateDetailViewTests)\nfrom .detail import DetailViewTest\nfrom .edit import (FormMixinTests, BasicFormTests, ModelFormMixinTests,\n    CreateViewTests, UpdateViewTests, DeleteViewTests)\nfrom .list import ListViewTests\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/generic_views/urls.py",
    "content": "from __future__ import absolute_import\n\nfrom django.conf.urls import patterns, url\nfrom django.views.decorators.cache import cache_page\nfrom django.views.generic import TemplateView\n\nfrom . import models\nfrom . import views\n\n\nurlpatterns = patterns('',\n    # base\n    #(r'^about/login-required/$',\n    #    views.DecoratedAboutView()),\n\n    # TemplateView\n    (r'^template/no_template/$',\n        TemplateView.as_view()),\n    (r'^template/simple/(?P<foo>\\w+)/$',\n        TemplateView.as_view(template_name='generic_views/about.html')),\n    (r'^template/custom/(?P<foo>\\w+)/$',\n        views.CustomTemplateView.as_view(template_name='generic_views/about.html')),\n    (r'^template/content_type/$',\n        TemplateView.as_view(template_name='generic_views/robots.txt', content_type='text/plain')),\n\n    (r'^template/cached/(?P<foo>\\w+)/$',\n        cache_page(2.0)(TemplateView.as_view(template_name='generic_views/about.html'))),\n\n    # DetailView\n    (r'^detail/obj/$',\n        views.ObjectDetail.as_view()),\n    url(r'^detail/artist/(?P<pk>\\d+)/$',\n        views.ArtistDetail.as_view(),\n        name=\"artist_detail\"),\n    url(r'^detail/author/(?P<pk>\\d+)/$',\n        views.AuthorDetail.as_view(),\n        name=\"author_detail\"),\n    (r'^detail/author/bycustompk/(?P<foo>\\d+)/$',\n        views.AuthorDetail.as_view(pk_url_kwarg='foo')),\n    (r'^detail/author/byslug/(?P<slug>[\\w-]+)/$',\n        views.AuthorDetail.as_view()),\n    (r'^detail/author/bycustomslug/(?P<foo>[\\w-]+)/$',\n        views.AuthorDetail.as_view(slug_url_kwarg='foo')),\n    (r'^detail/author/(?P<pk>\\d+)/template_name_suffix/$',\n        views.AuthorDetail.as_view(template_name_suffix='_view')),\n    (r'^detail/author/(?P<pk>\\d+)/template_name/$',\n        views.AuthorDetail.as_view(template_name='generic_views/about.html')),\n    (r'^detail/author/(?P<pk>\\d+)/context_object_name/$',\n        views.AuthorDetail.as_view(context_object_name='thingy')),\n    (r'^detail/author/(?P<pk>\\d+)/dupe_context_object_name/$',\n        views.AuthorDetail.as_view(context_object_name='object')),\n    (r'^detail/page/(?P<pk>\\d+)/field/$',\n        views.PageDetail.as_view()),\n    (r'^detail/author/invalid/url/$',\n        views.AuthorDetail.as_view()),\n    (r'^detail/author/invalid/qs/$',\n        views.AuthorDetail.as_view(queryset=None)),\n    (r'^detail/nonmodel/1/$',\n        views.NonModelDetail.as_view()),\n\n    # FormView\n    (r'^contact/$',\n        views.ContactView.as_view()),\n\n    # Create/UpdateView\n    (r'^edit/artists/create/$',\n        views.ArtistCreate.as_view()),\n    (r'^edit/artists/(?P<pk>\\d+)/update/$',\n        views.ArtistUpdate.as_view()),\n\n    (r'^edit/authors/create/naive/$',\n        views.NaiveAuthorCreate.as_view()),\n    (r'^edit/authors/create/redirect/$',\n        views.NaiveAuthorCreate.as_view(success_url='/edit/authors/create/')),\n    (r'^edit/authors/create/interpolate_redirect/$',\n        views.NaiveAuthorCreate.as_view(success_url='/edit/author/%(id)d/update/')),\n    (r'^edit/authors/create/restricted/$',\n        views.AuthorCreateRestricted.as_view()),\n    (r'^edit/authors/create/$',\n        views.AuthorCreate.as_view()),\n    (r'^edit/authors/create/special/$',\n        views.SpecializedAuthorCreate.as_view()),\n\n    (r'^edit/author/(?P<pk>\\d+)/update/naive/$',\n        views.NaiveAuthorUpdate.as_view()),\n    (r'^edit/author/(?P<pk>\\d+)/update/redirect/$',\n        views.NaiveAuthorUpdate.as_view(success_url='/edit/authors/create/')),\n    (r'^edit/author/(?P<pk>\\d+)/update/interpolate_redirect/$',\n        views.NaiveAuthorUpdate.as_view(success_url='/edit/author/%(id)d/update/')),\n    (r'^edit/author/(?P<pk>\\d+)/update/$',\n        views.AuthorUpdate.as_view()),\n    (r'^edit/author/update/$',\n        views.OneAuthorUpdate.as_view()),\n    (r'^edit/author/(?P<pk>\\d+)/update/special/$',\n        views.SpecializedAuthorUpdate.as_view()),\n    (r'^edit/author/(?P<pk>\\d+)/delete/naive/$',\n        views.NaiveAuthorDelete.as_view()),\n    (r'^edit/author/(?P<pk>\\d+)/delete/redirect/$',\n        views.NaiveAuthorDelete.as_view(success_url='/edit/authors/create/')),\n    (r'^edit/author/(?P<pk>\\d+)/delete/$',\n        views.AuthorDelete.as_view()),\n    (r'^edit/author/(?P<pk>\\d+)/delete/special/$',\n        views.SpecializedAuthorDelete.as_view()),\n\n    # ArchiveIndexView\n    (r'^dates/books/$',\n        views.BookArchive.as_view()),\n    (r'^dates/books/context_object_name/$',\n        views.BookArchive.as_view(context_object_name='thingies')),\n    (r'^dates/books/allow_empty/$',\n        views.BookArchive.as_view(allow_empty=True)),\n    (r'^dates/books/template_name/$',\n        views.BookArchive.as_view(template_name='generic_views/list.html')),\n    (r'^dates/books/template_name_suffix/$',\n        views.BookArchive.as_view(template_name_suffix='_detail')),\n    (r'^dates/books/invalid/$',\n        views.BookArchive.as_view(queryset=None)),\n    (r'^dates/books/paginated/$',\n        views.BookArchive.as_view(paginate_by=10)),\n    (r'^dates/books/reverse/$',\n        views.BookArchive.as_view(queryset=models.Book.objects.order_by('pubdate'))),\n    (r'^dates/books/by_month/$',\n        views.BookArchive.as_view(date_list_period='month')),\n    (r'^dates/booksignings/$',\n        views.BookSigningArchive.as_view()),\n\n    # ListView\n    (r'^list/dict/$',\n        views.DictList.as_view()),\n    (r'^list/dict/paginated/$',\n        views.DictList.as_view(paginate_by=1)),\n    url(r'^list/artists/$',\n        views.ArtistList.as_view(),\n        name=\"artists_list\"),\n    url(r'^list/authors/$',\n        views.AuthorList.as_view(),\n        name=\"authors_list\"),\n    (r'^list/authors/paginated/$',\n        views.AuthorList.as_view(paginate_by=30)),\n    (r'^list/authors/paginated/(?P<page>\\d+)/$',\n        views.AuthorList.as_view(paginate_by=30)),\n    (r'^list/authors/notempty/$',\n        views.AuthorList.as_view(allow_empty=False)),\n    (r'^list/authors/notempty/paginated/$',\n        views.AuthorList.as_view(allow_empty=False, paginate_by=2)),\n    (r'^list/authors/template_name/$',\n        views.AuthorList.as_view(template_name='generic_views/list.html')),\n    (r'^list/authors/template_name_suffix/$',\n        views.AuthorList.as_view(template_name_suffix='_objects')),\n    (r'^list/authors/context_object_name/$',\n        views.AuthorList.as_view(context_object_name='author_list')),\n    (r'^list/authors/dupe_context_object_name/$',\n        views.AuthorList.as_view(context_object_name='object_list')),\n    (r'^list/authors/invalid/$',\n        views.AuthorList.as_view(queryset=None)),\n    (r'^list/authors/paginated/custom_class/$',\n        views.AuthorList.as_view(paginate_by=5, paginator_class=views.CustomPaginator)),\n    (r'^list/authors/paginated/custom_page_kwarg/$',\n        views.AuthorList.as_view(paginate_by=30, page_kwarg='pagina')),\n    (r'^list/authors/paginated/custom_constructor/$',\n        views.AuthorListCustomPaginator.as_view()),\n\n    # YearArchiveView\n    # Mixing keyword and possitional captures below is intentional; the views\n    # ought to be able to accept either.\n    (r'^dates/books/(?P<year>\\d{4})/$',\n        views.BookYearArchive.as_view()),\n    (r'^dates/books/(?P<year>\\d{4})/make_object_list/$',\n        views.BookYearArchive.as_view(make_object_list=True)),\n    (r'^dates/books/(?P<year>\\d{4})/allow_empty/$',\n        views.BookYearArchive.as_view(allow_empty=True)),\n    (r'^dates/books/(?P<year>\\d{4})/allow_future/$',\n        views.BookYearArchive.as_view(allow_future=True)),\n    (r'^dates/books/(?P<year>\\d{4})/paginated/$',\n        views.BookYearArchive.as_view(make_object_list=True, paginate_by=30)),\n    (r'^dates/books/no_year/$',\n        views.BookYearArchive.as_view()),\n    (r'^dates/books/(?P<year>\\d{4})/reverse/$',\n        views.BookYearArchive.as_view(queryset=models.Book.objects.order_by('pubdate'))),\n    (r'^dates/booksignings/(?P<year>\\d{4})/$',\n        views.BookSigningYearArchive.as_view()),\n\n    # MonthArchiveView\n    (r'^dates/books/(?P<year>\\d{4})/(?P<month>[a-z]{3})/$',\n        views.BookMonthArchive.as_view()),\n    (r'^dates/books/(?P<year>\\d{4})/(?P<month>\\d{1,2})/$',\n        views.BookMonthArchive.as_view(month_format='%m')),\n    (r'^dates/books/(?P<year>\\d{4})/(?P<month>[a-z]{3})/allow_empty/$',\n        views.BookMonthArchive.as_view(allow_empty=True)),\n    (r'^dates/books/(?P<year>\\d{4})/(?P<month>[a-z]{3})/allow_future/$',\n        views.BookMonthArchive.as_view(allow_future=True)),\n    (r'^dates/books/(?P<year>\\d{4})/(?P<month>[a-z]{3})/paginated/$',\n        views.BookMonthArchive.as_view(paginate_by=30)),\n    (r'^dates/books/(?P<year>\\d{4})/no_month/$',\n        views.BookMonthArchive.as_view()),\n    (r'^dates/booksignings/(?P<year>\\d{4})/(?P<month>[a-z]{3})/$',\n        views.BookSigningMonthArchive.as_view()),\n\n    # WeekArchiveView\n    (r'^dates/books/(?P<year>\\d{4})/week/(?P<week>\\d{1,2})/$',\n        views.BookWeekArchive.as_view()),\n    (r'^dates/books/(?P<year>\\d{4})/week/(?P<week>\\d{1,2})/allow_empty/$',\n        views.BookWeekArchive.as_view(allow_empty=True)),\n    (r'^dates/books/(?P<year>\\d{4})/week/(?P<week>\\d{1,2})/allow_future/$',\n        views.BookWeekArchive.as_view(allow_future=True)),\n    (r'^dates/books/(?P<year>\\d{4})/week/(?P<week>\\d{1,2})/paginated/$',\n        views.BookWeekArchive.as_view(paginate_by=30)),\n    (r'^dates/books/(?P<year>\\d{4})/week/no_week/$',\n        views.BookWeekArchive.as_view()),\n    (r'^dates/books/(?P<year>\\d{4})/week/(?P<week>\\d{1,2})/monday/$',\n        views.BookWeekArchive.as_view(week_format='%W')),\n    (r'^dates/booksignings/(?P<year>\\d{4})/week/(?P<week>\\d{1,2})/$',\n        views.BookSigningWeekArchive.as_view()),\n\n    # DayArchiveView\n    (r'^dates/books/(?P<year>\\d{4})/(?P<month>[a-z]{3})/(?P<day>\\d{1,2})/$',\n        views.BookDayArchive.as_view()),\n    (r'^dates/books/(?P<year>\\d{4})/(?P<month>\\d{1,2})/(?P<day>\\d{1,2})/$',\n        views.BookDayArchive.as_view(month_format='%m')),\n    (r'^dates/books/(?P<year>\\d{4})/(?P<month>[a-z]{3})/(?P<day>\\d{1,2})/allow_empty/$',\n        views.BookDayArchive.as_view(allow_empty=True)),\n    (r'^dates/books/(?P<year>\\d{4})/(?P<month>[a-z]{3})/(?P<day>\\d{1,2})/allow_future/$',\n        views.BookDayArchive.as_view(allow_future=True)),\n    (r'^dates/books/(?P<year>\\d{4})/(?P<month>[a-z]{3})/(?P<day>\\d{1,2})/allow_empty_and_future/$',\n        views.BookDayArchive.as_view(allow_empty=True, allow_future=True)),\n    (r'^dates/books/(?P<year>\\d{4})/(?P<month>[a-z]{3})/(?P<day>\\d{1,2})/paginated/$',\n        views.BookDayArchive.as_view(paginate_by=True)),\n    (r'^dates/books/(?P<year>\\d{4})/(?P<month>[a-z]{3})/no_day/$',\n        views.BookDayArchive.as_view()),\n    (r'^dates/booksignings/(?P<year>\\d{4})/(?P<month>[a-z]{3})/(?P<day>\\d{1,2})/$',\n        views.BookSigningDayArchive.as_view()),\n\n    # TodayArchiveView\n    (r'^dates/books/today/$',\n        views.BookTodayArchive.as_view()),\n    (r'^dates/books/today/allow_empty/$',\n        views.BookTodayArchive.as_view(allow_empty=True)),\n    (r'^dates/booksignings/today/$',\n        views.BookSigningTodayArchive.as_view()),\n\n    # DateDetailView\n    (r'^dates/books/(?P<year>\\d{4})/(?P<month>[a-z]{3})/(?P<day>\\d{1,2})/(?P<pk>\\d+)/$',\n        views.BookDetail.as_view()),\n    (r'^dates/books/(?P<year>\\d{4})/(?P<month>\\d{1,2})/(?P<day>\\d{1,2})/(?P<pk>\\d+)/$',\n        views.BookDetail.as_view(month_format='%m')),\n    (r'^dates/books/(?P<year>\\d{4})/(?P<month>[a-z]{3})/(?P<day>\\d{1,2})/(?P<pk>\\d+)/allow_future/$',\n        views.BookDetail.as_view(allow_future=True)),\n    (r'^dates/books/(?P<year>\\d{4})/(?P<month>[a-z]{3})/(?P<day>\\d{1,2})/nopk/$',\n        views.BookDetail.as_view()),\n\n    (r'^dates/books/(?P<year>\\d{4})/(?P<month>[a-z]{3})/(?P<day>\\d{1,2})/byslug/(?P<slug>[\\w-]+)/$',\n        views.BookDetail.as_view()),\n\n    (r'^dates/books/get_object_custom_queryset/(?P<year>\\d{4})/(?P<month>[a-z]{3})/(?P<day>\\d{1,2})/(?P<pk>\\d+)/$',\n        views.BookDetailGetObjectCustomQueryset.as_view()),\n\n    (r'^dates/booksignings/(?P<year>\\d{4})/(?P<month>[a-z]{3})/(?P<day>\\d{1,2})/(?P<pk>\\d+)/$',\n        views.BookSigningDetail.as_view()),\n\n    # Useful for testing redirects\n    (r'^accounts/login/$',  'django.contrib.auth.views.login')\n)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/generic_views/views.py",
    "content": "from __future__ import absolute_import\n\nfrom django.contrib.auth.decorators import login_required\nfrom django.core.paginator import Paginator\nfrom django.core.urlresolvers import reverse, reverse_lazy\nfrom django.utils.decorators import method_decorator\nfrom django.views import generic\n\nfrom .forms import AuthorForm, ContactForm\nfrom .models import Artist, Author, Book, Page, BookSigning\n\n\nclass CustomTemplateView(generic.TemplateView):\n    template_name = 'generic_views/about.html'\n\n    def get_context_data(self, **kwargs):\n        context = super(CustomTemplateView, self).get_context_data(**kwargs)\n        context.update({'key': 'value'})\n        return context\n\n\nclass ObjectDetail(generic.DetailView):\n    template_name = 'generic_views/detail.html'\n\n    def get_object(self):\n        return {'foo': 'bar'}\n\n\nclass ArtistDetail(generic.DetailView):\n    queryset = Artist.objects.all()\n\n\nclass AuthorDetail(generic.DetailView):\n    queryset = Author.objects.all()\n\n\nclass PageDetail(generic.DetailView):\n    queryset = Page.objects.all()\n    template_name_field = 'template'\n\n\nclass DictList(generic.ListView):\n    \"\"\"A ListView that doesn't use a model.\"\"\"\n    queryset = [\n        {'first': 'John', 'last': 'Lennon'},\n        {'first': 'Yoko',  'last': 'Ono'}\n    ]\n    template_name = 'generic_views/list.html'\n\n\nclass ArtistList(generic.ListView):\n    template_name = 'generic_views/list.html'\n    queryset = Artist.objects.all()\n\n\nclass AuthorList(generic.ListView):\n    queryset = Author.objects.all()\n\n\nclass CustomPaginator(Paginator):\n    def __init__(self, queryset, page_size, orphans=0, allow_empty_first_page=True):\n        super(CustomPaginator, self).__init__(\n            queryset,\n            page_size,\n            orphans=2,\n            allow_empty_first_page=allow_empty_first_page)\n\nclass AuthorListCustomPaginator(AuthorList):\n    paginate_by = 5\n\n    def get_paginator(self, queryset, page_size, orphans=0, allow_empty_first_page=True):\n        return super(AuthorListCustomPaginator, self).get_paginator(\n            queryset,\n            page_size,\n            orphans=2,\n            allow_empty_first_page=allow_empty_first_page)\n\n\nclass ContactView(generic.FormView):\n    form_class = ContactForm\n    success_url = reverse_lazy('authors_list')\n    template_name = 'generic_views/form.html'\n\n\nclass ArtistCreate(generic.CreateView):\n    model = Artist\n\n\nclass NaiveAuthorCreate(generic.CreateView):\n    queryset = Author.objects.all()\n\n\nclass AuthorCreate(generic.CreateView):\n    model = Author\n    success_url = '/list/authors/'\n\n\nclass SpecializedAuthorCreate(generic.CreateView):\n    model = Author\n    form_class = AuthorForm\n    template_name = 'generic_views/form.html'\n    context_object_name = 'thingy'\n\n    def get_success_url(self):\n        return reverse('author_detail', args=[self.object.id,])\n\n\nclass AuthorCreateRestricted(AuthorCreate):\n    post = method_decorator(login_required)(AuthorCreate.post)\n\n\nclass ArtistUpdate(generic.UpdateView):\n    model = Artist\n\n\nclass NaiveAuthorUpdate(generic.UpdateView):\n    queryset = Author.objects.all()\n\n\nclass AuthorUpdate(generic.UpdateView):\n    model = Author\n    success_url = '/list/authors/'\n\n\nclass OneAuthorUpdate(generic.UpdateView):\n    success_url = '/list/authors/'\n\n    def get_object(self):\n        return Author.objects.get(pk=1)\n\n\nclass SpecializedAuthorUpdate(generic.UpdateView):\n    model = Author\n    form_class = AuthorForm\n    template_name = 'generic_views/form.html'\n    context_object_name = 'thingy'\n\n    def get_success_url(self):\n        return reverse('author_detail', args=[self.object.id,])\n\n\nclass NaiveAuthorDelete(generic.DeleteView):\n    queryset = Author.objects.all()\n\n\nclass AuthorDelete(generic.DeleteView):\n    model = Author\n    success_url = '/list/authors/'\n\n\nclass SpecializedAuthorDelete(generic.DeleteView):\n    queryset = Author.objects.all()\n    template_name = 'generic_views/confirm_delete.html'\n    context_object_name = 'thingy'\n\n    def get_success_url(self):\n        return reverse('authors_list')\n\n\nclass BookConfig(object):\n    queryset = Book.objects.all()\n    date_field = 'pubdate'\n\nclass BookArchive(BookConfig, generic.ArchiveIndexView):\n    pass\n\nclass BookYearArchive(BookConfig, generic.YearArchiveView):\n    pass\n\nclass BookMonthArchive(BookConfig, generic.MonthArchiveView):\n    pass\n\nclass BookWeekArchive(BookConfig, generic.WeekArchiveView):\n    pass\n\nclass BookDayArchive(BookConfig, generic.DayArchiveView):\n    pass\n\nclass BookTodayArchive(BookConfig, generic.TodayArchiveView):\n    pass\n\nclass BookDetail(BookConfig, generic.DateDetailView):\n    pass\n\nclass AuthorGetQuerySetFormView(generic.edit.ModelFormMixin):\n    def get_queryset(self):\n        return Author.objects.all()\n\nclass BookDetailGetObjectCustomQueryset(BookDetail):\n    def get_object(self, queryset=None):\n        return super(BookDetailGetObjectCustomQueryset,self).get_object(\n            queryset=Book.objects.filter(pk=2))\n\nclass CustomContextView(generic.detail.SingleObjectMixin, generic.View):\n    model = Book\n    object = Book(name='dummy')\n\n    def get_object(self):\n        return Book(name=\"dummy\")\n\n    def get_context_data(self, **kwargs):\n        context = {'custom_key': 'custom_value'}\n        context.update(kwargs)\n        return super(CustomContextView, self).get_context_data(**context)\n\n    def get_context_object_name(self, obj):\n        return \"test_name\"\n\nclass BookSigningConfig(object):\n    model = BookSigning\n    date_field = 'event_date'\n    # use the same templates as for books\n    def get_template_names(self):\n        return ['generic_views/book%s.html' % self.template_name_suffix]\n\nclass BookSigningArchive(BookSigningConfig, generic.ArchiveIndexView):\n    pass\n\nclass BookSigningYearArchive(BookSigningConfig, generic.YearArchiveView):\n    pass\n\nclass BookSigningMonthArchive(BookSigningConfig, generic.MonthArchiveView):\n    pass\n\nclass BookSigningWeekArchive(BookSigningConfig, generic.WeekArchiveView):\n    pass\n\nclass BookSigningDayArchive(BookSigningConfig, generic.DayArchiveView):\n    pass\n\nclass BookSigningTodayArchive(BookSigningConfig, generic.TodayArchiveView):\n    pass\n\nclass BookSigningDetail(BookSigningConfig, generic.DateDetailView):\n    context_object_name = 'book'\n\n\nclass NonModel(object):\n    id = \"non_model_1\"\n\n    _meta = None\n\n\nclass NonModelDetail(generic.DetailView):\n\n    template_name = 'generic_views/detail.html'\n    model = NonModel\n\n    def get_object(self, queryset=None):\n        return NonModel()\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/get_or_create_regress/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/get_or_create_regress/models.py",
    "content": "from django.db import models\n\n\nclass Publisher(models.Model):\n    name = models.CharField(max_length=100)\n\nclass Author(models.Model):\n    name = models.CharField(max_length=100)\n\nclass Book(models.Model):\n    name = models.CharField(max_length=100)\n    authors = models.ManyToManyField(Author, related_name='books')\n    publisher = models.ForeignKey(Publisher, related_name='books', db_column=\"publisher_id_column\")\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/get_or_create_regress/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom django.test import TestCase\n\nfrom .models import Author, Publisher\n\n\nclass GetOrCreateTests(TestCase):\n    def test_related(self):\n        p = Publisher.objects.create(name=\"Acme Publishing\")\n        # Create a book through the publisher.\n        book, created = p.books.get_or_create(name=\"The Book of Ed & Fred\")\n        self.assertTrue(created)\n        # The publisher should have one book.\n        self.assertEqual(p.books.count(), 1)\n\n        # Try get_or_create again, this time nothing should be created.\n        book, created = p.books.get_or_create(name=\"The Book of Ed & Fred\")\n        self.assertFalse(created)\n        # And the publisher should still have one book.\n        self.assertEqual(p.books.count(), 1)\n\n        # Add an author to the book.\n        ed, created = book.authors.get_or_create(name=\"Ed\")\n        self.assertTrue(created)\n        # The book should have one author.\n        self.assertEqual(book.authors.count(), 1)\n\n        # Try get_or_create again, this time nothing should be created.\n        ed, created = book.authors.get_or_create(name=\"Ed\")\n        self.assertFalse(created)\n        # And the book should still have one author.\n        self.assertEqual(book.authors.count(), 1)\n\n        # Add a second author to the book.\n        fred, created = book.authors.get_or_create(name=\"Fred\")\n        self.assertTrue(created)\n\n        # The book should have two authors now.\n        self.assertEqual(book.authors.count(), 2)\n\n        # Create an Author not tied to any books.\n        Author.objects.create(name=\"Ted\")\n\n        # There should be three Authors in total. The book object should have two.\n        self.assertEqual(Author.objects.count(), 3)\n        self.assertEqual(book.authors.count(), 2)\n\n        # Try creating a book through an author.\n        _, created = ed.books.get_or_create(name=\"Ed's Recipes\", publisher=p)\n        self.assertTrue(created)\n\n        # Now Ed has two Books, Fred just one.\n        self.assertEqual(ed.books.count(), 2)\n        self.assertEqual(fred.books.count(), 1)\n\n        # Use the publisher's primary key value instead of a model instance.\n        _, created = ed.books.get_or_create(name='The Great Book of Ed', publisher_id=p.id)\n        self.assertTrue(created)\n\n        # Try get_or_create again, this time nothing should be created.\n        _, created = ed.books.get_or_create(name='The Great Book of Ed', publisher_id=p.id)\n        self.assertFalse(created)\n\n        # The publisher should have three books.\n        self.assertEqual(p.books.count(), 3)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/handlers/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/handlers/models.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/handlers/tests.py",
    "content": "from django.core.handlers.wsgi import WSGIHandler\nfrom django.core import signals\nfrom django.test import RequestFactory, TestCase\nfrom django.test.utils import override_settings\nfrom django.utils import six\n\n\nclass HandlerTests(TestCase):\n\n    # Mangle settings so the handler will fail\n    @override_settings(MIDDLEWARE_CLASSES=42)\n    def test_lock_safety(self):\n        \"\"\"\n        Tests for bug #11193 (errors inside middleware shouldn't leave\n        the initLock locked).\n        \"\"\"\n        # Try running the handler, it will fail in load_middleware\n        handler = WSGIHandler()\n        self.assertEqual(handler.initLock.locked(), False)\n        with self.assertRaises(Exception):\n            handler(None, None)\n        self.assertEqual(handler.initLock.locked(), False)\n\n    def test_bad_path_info(self):\n        \"\"\"Tests for bug #15672 ('request' referenced before assignment)\"\"\"\n        environ = RequestFactory().get('/').environ\n        environ['PATH_INFO'] = '\\xed'\n        handler = WSGIHandler()\n        response = handler(environ, lambda *a, **k: None)\n        self.assertEqual(response.status_code, 400)\n\n\nclass SignalsTests(TestCase):\n    urls = 'regressiontests.handlers.urls'\n\n    def setUp(self):\n        self.signals = []\n        signals.request_started.connect(self.register_started)\n        signals.request_finished.connect(self.register_finished)\n\n    def tearDown(self):\n        signals.request_started.disconnect(self.register_started)\n        signals.request_finished.disconnect(self.register_finished)\n\n    def register_started(self, **kwargs):\n        self.signals.append('started')\n\n    def register_finished(self, **kwargs):\n        self.signals.append('finished')\n\n    def test_request_signals(self):\n        response = self.client.get('/regular/')\n        self.assertEqual(self.signals, ['started', 'finished'])\n        self.assertEqual(response.content, b\"regular content\")\n\n    def test_request_signals_streaming_response(self):\n        response = self.client.get('/streaming/')\n        self.assertEqual(self.signals, ['started'])\n        self.assertEqual(b''.join(response.streaming_content), b\"streaming content\")\n        self.assertEqual(self.signals, ['started', 'finished'])\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/handlers/urls.py",
    "content": "from __future__ import unicode_literals\n\nfrom django.conf.urls import patterns, url\nfrom django.http import HttpResponse, StreamingHttpResponse\n\nurlpatterns = patterns('',\n    url(r'^regular/$', lambda request: HttpResponse(b\"regular content\")),\n    url(r'^streaming/$', lambda request: StreamingHttpResponse([b\"streaming\", b\" \", b\"content\"])),\n)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/http_utils/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/http_utils/models.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/http_utils/tests.py",
    "content": "from __future__ import unicode_literals\n\nfrom django.http import HttpRequest, HttpResponse, StreamingHttpResponse\nfrom django.http.utils import conditional_content_removal\nfrom django.test import TestCase\n\n\nclass HttpUtilTests(TestCase):\n\n    def test_conditional_content_removal(self):\n        \"\"\"\n        Tests that content is removed from regular and streaming responses with\n        a status_code of 100-199, 204, 304 or a method of \"HEAD\".\n        \"\"\"\n        req = HttpRequest()\n\n        # Do nothing for 200 responses.\n        res = HttpResponse('abc')\n        conditional_content_removal(req, res)\n        self.assertEqual(res.content, b'abc')\n\n        res = StreamingHttpResponse(['abc'])\n        conditional_content_removal(req, res)\n        self.assertEqual(b''.join(res), b'abc')\n\n        # Strip content for some status codes.\n        for status_code in (100, 150, 199, 204, 304):\n            res = HttpResponse('abc', status=status_code)\n            conditional_content_removal(req, res)\n            self.assertEqual(res.content, b'')\n\n            res = StreamingHttpResponse(['abc'], status=status_code)\n            conditional_content_removal(req, res)\n            self.assertEqual(b''.join(res), b'')\n\n        # Strip content for HEAD requests.\n        req.method = 'HEAD'\n\n        res = HttpResponse('abc')\n        conditional_content_removal(req, res)\n        self.assertEqual(res.content, b'')\n\n        res = StreamingHttpResponse(['abc'])\n        conditional_content_removal(req, res)\n        self.assertEqual(b''.join(res), b'')\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/httpwrappers/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/httpwrappers/abc.txt",
    "content": "random content\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/httpwrappers/models.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/httpwrappers/tests.py",
    "content": "# -*- encoding: utf-8 -*-\nfrom __future__ import unicode_literals\n\nimport copy\nimport os\nimport pickle\nimport warnings\n\nfrom django.core.exceptions import SuspiciousOperation\nfrom django.http import (QueryDict, HttpResponse, HttpResponseRedirect,\n                         HttpResponsePermanentRedirect, HttpResponseNotAllowed,\n                         HttpResponseNotModified, StreamingHttpResponse,\n                         SimpleCookie, BadHeaderError,\n                         parse_cookie)\nfrom django.test import TestCase\nfrom django.utils.encoding import smart_str\nfrom django.utils._os import upath\nfrom django.utils import six\nfrom django.utils import unittest\n\n\nclass QueryDictTests(unittest.TestCase):\n    def test_missing_key(self):\n        q = QueryDict(str(''))\n        self.assertRaises(KeyError, q.__getitem__, 'foo')\n\n    def test_immutability(self):\n        q = QueryDict(str(''))\n        self.assertRaises(AttributeError, q.__setitem__, 'something', 'bar')\n        self.assertRaises(AttributeError, q.setlist, 'foo', ['bar'])\n        self.assertRaises(AttributeError, q.appendlist, 'foo', ['bar'])\n        self.assertRaises(AttributeError, q.update, {'foo': 'bar'})\n        self.assertRaises(AttributeError, q.pop, 'foo')\n        self.assertRaises(AttributeError, q.popitem)\n        self.assertRaises(AttributeError, q.clear)\n\n    def test_immutable_get_with_default(self):\n        q = QueryDict(str(''))\n        self.assertEqual(q.get('foo', 'default'), 'default')\n\n    def test_immutable_basic_operations(self):\n        q = QueryDict(str(''))\n        self.assertEqual(q.getlist('foo'), [])\n        if not six.PY3:\n            self.assertEqual(q.has_key('foo'), False)\n        self.assertEqual('foo' in q, False)\n        self.assertEqual(list(six.iteritems(q)), [])\n        self.assertEqual(list(six.iterlists(q)), [])\n        self.assertEqual(list(six.iterkeys(q)), [])\n        self.assertEqual(list(six.itervalues(q)), [])\n        self.assertEqual(len(q), 0)\n        self.assertEqual(q.urlencode(), '')\n\n    def test_single_key_value(self):\n        \"\"\"Test QueryDict with one key/value pair\"\"\"\n\n        q = QueryDict(str('foo=bar'))\n        self.assertEqual(q['foo'], 'bar')\n        self.assertRaises(KeyError, q.__getitem__, 'bar')\n        self.assertRaises(AttributeError, q.__setitem__, 'something', 'bar')\n\n        self.assertEqual(q.get('foo', 'default'), 'bar')\n        self.assertEqual(q.get('bar', 'default'), 'default')\n        self.assertEqual(q.getlist('foo'), ['bar'])\n        self.assertEqual(q.getlist('bar'), [])\n\n        self.assertRaises(AttributeError, q.setlist, 'foo', ['bar'])\n        self.assertRaises(AttributeError, q.appendlist, 'foo', ['bar'])\n\n        if not six.PY3:\n            self.assertTrue(q.has_key('foo'))\n        self.assertTrue('foo' in q)\n        if not six.PY3:\n            self.assertFalse(q.has_key('bar'))\n        self.assertFalse('bar' in q)\n\n        self.assertEqual(list(six.iteritems(q)), [('foo', 'bar')])\n        self.assertEqual(list(six.iterlists(q)), [('foo', ['bar'])])\n        self.assertEqual(list(six.iterkeys(q)), ['foo'])\n        self.assertEqual(list(six.itervalues(q)), ['bar'])\n        self.assertEqual(len(q), 1)\n\n        self.assertRaises(AttributeError, q.update, {'foo': 'bar'})\n        self.assertRaises(AttributeError, q.pop, 'foo')\n        self.assertRaises(AttributeError, q.popitem)\n        self.assertRaises(AttributeError, q.clear)\n        self.assertRaises(AttributeError, q.setdefault, 'foo', 'bar')\n\n        self.assertEqual(q.urlencode(), 'foo=bar')\n\n    def test_urlencode(self):\n        q = QueryDict(str(''), mutable=True)\n        q['next'] = '/a&b/'\n        self.assertEqual(q.urlencode(), 'next=%2Fa%26b%2F')\n        self.assertEqual(q.urlencode(safe='/'), 'next=/a%26b/')\n        q = QueryDict(str(''), mutable=True)\n        q['next'] = '/t\\xebst&key/'\n        self.assertEqual(q.urlencode(), 'next=%2Ft%C3%ABst%26key%2F')\n        self.assertEqual(q.urlencode(safe='/'), 'next=/t%C3%ABst%26key/')\n\n    def test_mutable_copy(self):\n        \"\"\"A copy of a QueryDict is mutable.\"\"\"\n        q = QueryDict(str('')).copy()\n        self.assertRaises(KeyError, q.__getitem__, \"foo\")\n        q['name'] = 'john'\n        self.assertEqual(q['name'], 'john')\n\n    def test_mutable_delete(self):\n        q = QueryDict(str('')).copy()\n        q['name'] = 'john'\n        del q['name']\n        self.assertFalse('name' in q)\n\n    def test_basic_mutable_operations(self):\n        q = QueryDict(str('')).copy()\n        q['name'] = 'john'\n        self.assertEqual(q.get('foo', 'default'), 'default')\n        self.assertEqual(q.get('name', 'default'), 'john')\n        self.assertEqual(q.getlist('name'), ['john'])\n        self.assertEqual(q.getlist('foo'), [])\n\n        q.setlist('foo', ['bar', 'baz'])\n        self.assertEqual(q.get('foo', 'default'), 'baz')\n        self.assertEqual(q.getlist('foo'), ['bar', 'baz'])\n\n        q.appendlist('foo', 'another')\n        self.assertEqual(q.getlist('foo'), ['bar', 'baz', 'another'])\n        self.assertEqual(q['foo'], 'another')\n        if not six.PY3:\n            self.assertTrue(q.has_key('foo'))\n        self.assertTrue('foo' in q)\n\n        self.assertListEqual(sorted(list(six.iteritems(q))),\n                             [('foo', 'another'), ('name', 'john')])\n        self.assertListEqual(sorted(list(six.iterlists(q))),\n                             [('foo', ['bar', 'baz', 'another']), ('name', ['john'])])\n        self.assertListEqual(sorted(list(six.iterkeys(q))),\n                             ['foo', 'name'])\n        self.assertListEqual(sorted(list(six.itervalues(q))),\n                             ['another', 'john'])\n\n        q.update({'foo': 'hello'})\n        self.assertEqual(q['foo'], 'hello')\n        self.assertEqual(q.get('foo', 'not available'), 'hello')\n        self.assertEqual(q.getlist('foo'), ['bar', 'baz', 'another', 'hello'])\n        self.assertEqual(q.pop('foo'), ['bar', 'baz', 'another', 'hello'])\n        self.assertEqual(q.pop('foo', 'not there'), 'not there')\n        self.assertEqual(q.get('foo', 'not there'), 'not there')\n        self.assertEqual(q.setdefault('foo', 'bar'), 'bar')\n        self.assertEqual(q['foo'], 'bar')\n        self.assertEqual(q.getlist('foo'), ['bar'])\n        self.assertIn(q.urlencode(), ['foo=bar&name=john', 'name=john&foo=bar'])\n\n        q.clear()\n        self.assertEqual(len(q), 0)\n\n    def test_multiple_keys(self):\n        \"\"\"Test QueryDict with two key/value pairs with same keys.\"\"\"\n\n        q = QueryDict(str('vote=yes&vote=no'))\n\n        self.assertEqual(q['vote'], 'no')\n        self.assertRaises(AttributeError, q.__setitem__, 'something', 'bar')\n\n        self.assertEqual(q.get('vote', 'default'), 'no')\n        self.assertEqual(q.get('foo', 'default'), 'default')\n        self.assertEqual(q.getlist('vote'), ['yes', 'no'])\n        self.assertEqual(q.getlist('foo'), [])\n\n        self.assertRaises(AttributeError, q.setlist, 'foo', ['bar', 'baz'])\n        self.assertRaises(AttributeError, q.setlist, 'foo', ['bar', 'baz'])\n        self.assertRaises(AttributeError, q.appendlist, 'foo', ['bar'])\n\n        if not six.PY3:\n            self.assertEqual(q.has_key('vote'), True)\n        self.assertEqual('vote' in q, True)\n        if not six.PY3:\n            self.assertEqual(q.has_key('foo'), False)\n        self.assertEqual('foo' in q, False)\n        self.assertEqual(list(six.iteritems(q)), [('vote', 'no')])\n        self.assertEqual(list(six.iterlists(q)), [('vote', ['yes', 'no'])])\n        self.assertEqual(list(six.iterkeys(q)), ['vote'])\n        self.assertEqual(list(six.itervalues(q)), ['no'])\n        self.assertEqual(len(q), 1)\n\n        self.assertRaises(AttributeError, q.update, {'foo': 'bar'})\n        self.assertRaises(AttributeError, q.pop, 'foo')\n        self.assertRaises(AttributeError, q.popitem)\n        self.assertRaises(AttributeError, q.clear)\n        self.assertRaises(AttributeError, q.setdefault, 'foo', 'bar')\n        self.assertRaises(AttributeError, q.__delitem__, 'vote')\n\n    if not six.PY3:\n        def test_invalid_input_encoding(self):\n            \"\"\"\n            QueryDicts must be able to handle invalid input encoding (in this\n            case, bad UTF-8 encoding).\n\n            This test doesn't apply under Python 3 because the URL is a string\n            and not a bytestring.\n            \"\"\"\n            q = QueryDict(str(b'foo=bar&foo=\\xff'))\n            self.assertEqual(q['foo'], '\\ufffd')\n            self.assertEqual(q.getlist('foo'), ['bar', '\\ufffd'])\n\n    def test_pickle(self):\n        q = QueryDict(str(''))\n        q1 = pickle.loads(pickle.dumps(q, 2))\n        self.assertEqual(q == q1, True)\n        q = QueryDict(str('a=b&c=d'))\n        q1 = pickle.loads(pickle.dumps(q, 2))\n        self.assertEqual(q == q1, True)\n        q = QueryDict(str('a=b&c=d&a=1'))\n        q1 = pickle.loads(pickle.dumps(q, 2))\n        self.assertEqual(q == q1, True)\n\n    def test_update_from_querydict(self):\n        \"\"\"Regression test for #8278: QueryDict.update(QueryDict)\"\"\"\n        x = QueryDict(str(\"a=1&a=2\"), mutable=True)\n        y = QueryDict(str(\"a=3&a=4\"))\n        x.update(y)\n        self.assertEqual(x.getlist('a'), ['1', '2', '3', '4'])\n\n    def test_non_default_encoding(self):\n        \"\"\"#13572 - QueryDict with a non-default encoding\"\"\"\n        q = QueryDict(str('cur=%A4'), encoding='iso-8859-15')\n        self.assertEqual(q.encoding, 'iso-8859-15')\n        self.assertEqual(list(six.iteritems(q)), [('cur', '€')])\n        self.assertEqual(q.urlencode(), 'cur=%A4')\n        q = q.copy()\n        self.assertEqual(q.encoding, 'iso-8859-15')\n        self.assertEqual(list(six.iteritems(q)), [('cur', '€')])\n        self.assertEqual(q.urlencode(), 'cur=%A4')\n        self.assertEqual(copy.copy(q).encoding, 'iso-8859-15')\n        self.assertEqual(copy.deepcopy(q).encoding, 'iso-8859-15')\n\nclass HttpResponseTests(unittest.TestCase):\n\n    def test_headers_type(self):\n        r = HttpResponse()\n\n        # The following tests explicitly test types in addition to values\n        # because in Python 2 u'foo' == b'foo'.\n\n        # ASCII unicode or bytes values are converted to native strings.\n        r['key'] = 'test'\n        self.assertEqual(r['key'], str('test'))\n        self.assertIsInstance(r['key'], str)\n        r['key'] = 'test'.encode('ascii')\n        self.assertEqual(r['key'], str('test'))\n        self.assertIsInstance(r['key'], str)\n\n        # Latin-1 unicode or bytes values are also converted to native strings.\n        r['key'] = 'café'\n        self.assertEqual(r['key'], smart_str('café', 'latin-1'))\n        self.assertIsInstance(r['key'], str)\n        r['key'] = 'café'.encode('latin-1')\n        self.assertEqual(r['key'], smart_str('café', 'latin-1'))\n        self.assertIsInstance(r['key'], str)\n\n        # Other unicode values are MIME-encoded (there's no way to pass them as bytes).\n        r['key'] = '†'\n        self.assertEqual(r['key'], str('=?utf-8?b?4oCg?='))\n        self.assertIsInstance(r['key'], str)\n\n        # The response also converts unicode or bytes keys to strings, but requires\n        # them to contain ASCII\n        r = HttpResponse()\n        del r['Content-Type']\n        r['foo'] = 'bar'\n        l = list(r.items())\n        self.assertEqual(len(l), 1)\n        self.assertEqual(l[0], ('foo', 'bar'))\n        self.assertIsInstance(l[0][0], str)\n\n        r = HttpResponse()\n        del r['Content-Type']\n        r[b'foo'] = 'bar'\n        l = list(r.items())\n        self.assertEqual(len(l), 1)\n        self.assertEqual(l[0], ('foo', 'bar'))\n        self.assertIsInstance(l[0][0], str)\n\n        r = HttpResponse()\n        self.assertRaises(UnicodeError, r.__setitem__, 'føø', 'bar')\n        self.assertRaises(UnicodeError, r.__setitem__, 'føø'.encode('utf-8'), 'bar')\n\n\n    def test_newlines_in_headers(self):\n        # Bug #10188: Do not allow newlines in headers (CR or LF)\n        r = HttpResponse()\n        self.assertRaises(BadHeaderError, r.__setitem__, 'test\\rstr', 'test')\n        self.assertRaises(BadHeaderError, r.__setitem__, 'test\\nstr', 'test')\n\n    def test_dict_behavior(self):\n        \"\"\"\n        Test for bug #14020: Make HttpResponse.get work like dict.get\n        \"\"\"\n        r = HttpResponse()\n        self.assertEqual(r.get('test'), None)\n\n    def test_non_string_content(self):\n        #Bug 16494: HttpResponse should behave consistently with non-strings\n        r = HttpResponse(12345)\n        self.assertEqual(r.content, b'12345')\n\n        #test content via property\n        r = HttpResponse()\n        r.content = 12345\n        self.assertEqual(r.content, b'12345')\n\n    def test_iter_content(self):\n        r = HttpResponse(['abc', 'def', 'ghi'])\n        self.assertEqual(r.content, b'abcdefghi')\n\n        #test iter content via property\n        r = HttpResponse()\n        r.content = ['idan', 'alex', 'jacob']\n        self.assertEqual(r.content, b'idanalexjacob')\n\n        r = HttpResponse()\n        r.content = [1, 2, 3]\n        self.assertEqual(r.content, b'123')\n\n        #test retrieval explicitly using iter (deprecated) and odd inputs\n        r = HttpResponse()\n        r.content = ['1', '2', 3, '\\u079e']\n        with warnings.catch_warnings(record=True) as w:\n            warnings.simplefilter(\"always\", PendingDeprecationWarning)\n            my_iter = iter(r)\n            self.assertEqual(w[0].category, PendingDeprecationWarning)\n        with warnings.catch_warnings(record=True) as w:\n            warnings.simplefilter(\"always\", PendingDeprecationWarning)\n            result = list(my_iter)\n            self.assertEqual(w[0].category, PendingDeprecationWarning)\n        #'\\xde\\x9e' == unichr(1950).encode('utf-8')\n        self.assertEqual(result, [b'1', b'2', b'3', b'\\xde\\x9e'])\n        self.assertEqual(r.content, b'123\\xde\\x9e')\n\n        #with Content-Encoding header\n        r = HttpResponse()\n        r['Content-Encoding'] = 'winning'\n        r.content = [b'abc', b'def']\n        self.assertEqual(r.content, b'abcdef')\n        r.content = ['\\u079e']\n        self.assertRaises(TypeError if six.PY3 else UnicodeEncodeError,\n                          getattr, r, 'content')\n\n        # .content can safely be accessed multiple times.\n        r = HttpResponse(iter(['hello', 'world']))\n        self.assertEqual(r.content, r.content)\n        self.assertEqual(r.content, b'helloworld')\n        # accessing the iterator works (once) after accessing .content\n        self.assertEqual(b''.join(r), b'helloworld')\n        self.assertEqual(b''.join(r), b'')\n        # accessing .content still works\n        self.assertEqual(r.content, b'helloworld')\n\n        # XXX accessing .content doesn't work if the response was iterated first\n        # XXX change this when the deprecation completes in HttpResponse\n        r = HttpResponse(iter(['hello', 'world']))\n        with warnings.catch_warnings():\n            warnings.simplefilter(\"ignore\", PendingDeprecationWarning)\n            self.assertEqual(b''.join(r), b'helloworld')\n        self.assertEqual(r.content, b'')                # not the expected result!\n\n        # additional content can be written to the response.\n        r = HttpResponse(iter(['hello', 'world']))\n        self.assertEqual(r.content, b'helloworld')\n        r.write('!')\n        self.assertEqual(r.content, b'helloworld!')\n\n    def test_iterator_isnt_rewound(self):\n        # Regression test for #13222\n        r = HttpResponse('abc')\n        i = iter(r)\n        self.assertEqual(list(i), [b'abc'])\n        self.assertEqual(list(i), [])\n\n    def test_file_interface(self):\n        r = HttpResponse()\n        r.write(b\"hello\")\n        self.assertEqual(r.tell(), 5)\n        r.write(\"привет\")\n        self.assertEqual(r.tell(), 17)\n\n        r = HttpResponse(['abc'])\n        r.write('def')\n        self.assertEqual(r.tell(), 6)\n        self.assertEqual(r.content, b'abcdef')\n\n    def test_unsafe_redirect(self):\n        bad_urls = [\n            'data:text/html,<script>window.alert(\"xss\")</script>',\n            'mailto:test@example.com',\n            'file:///etc/passwd',\n        ]\n        for url in bad_urls:\n            self.assertRaises(SuspiciousOperation,\n                              HttpResponseRedirect, url)\n            self.assertRaises(SuspiciousOperation,\n                              HttpResponsePermanentRedirect, url)\n\nclass HttpResponseSubclassesTests(TestCase):\n    def test_redirect(self):\n        response = HttpResponseRedirect('/redirected/')\n        self.assertEqual(response.status_code, 302)\n        # Test that standard HttpResponse init args can be used\n        response = HttpResponseRedirect('/redirected/',\n            content='The resource has temporarily moved',\n            content_type='text/html')\n        self.assertContains(response, 'The resource has temporarily moved', status_code=302)\n\n    def test_not_modified(self):\n        response = HttpResponseNotModified()\n        self.assertEqual(response.status_code, 304)\n        # 304 responses should not have content/content-type\n        with self.assertRaises(AttributeError):\n            response.content = \"Hello dear\"\n        self.assertNotIn('content-type', response)\n\n    def test_not_allowed(self):\n        response = HttpResponseNotAllowed(['GET'])\n        self.assertEqual(response.status_code, 405)\n        # Test that standard HttpResponse init args can be used\n        response = HttpResponseNotAllowed(['GET'],\n            content='Only the GET method is allowed',\n            content_type='text/html')\n        self.assertContains(response, 'Only the GET method is allowed', status_code=405)\n\nclass StreamingHttpResponseTests(TestCase):\n    def test_streaming_response(self):\n        r = StreamingHttpResponse(iter(['hello', 'world']))\n\n        # iterating over the response itself yields bytestring chunks.\n        chunks = list(r)\n        self.assertEqual(chunks, [b'hello', b'world'])\n        for chunk in chunks:\n            self.assertIsInstance(chunk, six.binary_type)\n\n        # and the response can only be iterated once.\n        self.assertEqual(list(r), [])\n\n        # even when a sequence that can be iterated many times, like a list,\n        # is given as content.\n        r = StreamingHttpResponse(['abc', 'def'])\n        self.assertEqual(list(r), [b'abc', b'def'])\n        self.assertEqual(list(r), [])\n\n        # streaming responses don't have a `content` attribute.\n        self.assertFalse(hasattr(r, 'content'))\n\n        # and you can't accidentally assign to a `content` attribute.\n        with self.assertRaises(AttributeError):\n            r.content = 'xyz'\n\n        # but they do have a `streaming_content` attribute.\n        self.assertTrue(hasattr(r, 'streaming_content'))\n\n        # that exists so we can check if a response is streaming, and wrap or\n        # replace the content iterator.\n        r.streaming_content = iter(['abc', 'def'])\n        r.streaming_content = (chunk.upper() for chunk in r.streaming_content)\n        self.assertEqual(list(r), [b'ABC', b'DEF'])\n\n        # coercing a streaming response to bytes doesn't return a complete HTTP\n        # message like a regular response does. it only gives us the headers.\n        r = StreamingHttpResponse(iter(['hello', 'world']))\n        self.assertEqual(\n            six.binary_type(r), b'Content-Type: text/html; charset=utf-8')\n\n        # and this won't consume its content.\n        self.assertEqual(list(r), [b'hello', b'world'])\n\n        # additional content cannot be written to the response.\n        r = StreamingHttpResponse(iter(['hello', 'world']))\n        with self.assertRaises(Exception):\n            r.write('!')\n\n        # and we can't tell the current position.\n        with self.assertRaises(Exception):\n            r.tell()\n\nclass FileCloseTests(TestCase):\n    def test_response(self):\n        filename = os.path.join(os.path.dirname(upath(__file__)), 'abc.txt')\n\n        # file isn't closed until we close the response.\n        file1 = open(filename)\n        r = HttpResponse(file1)\n        self.assertFalse(file1.closed)\n        r.close()\n        self.assertTrue(file1.closed)\n\n        # don't automatically close file when we finish iterating the response.\n        file1 = open(filename)\n        r = HttpResponse(file1)\n        self.assertFalse(file1.closed)\n        with warnings.catch_warnings():\n            warnings.simplefilter(\"ignore\", PendingDeprecationWarning)\n            list(r)\n        self.assertFalse(file1.closed)\n        r.close()\n        self.assertTrue(file1.closed)\n\n        # when multiple file are assigned as content, make sure they are all\n        # closed with the response.\n        file1 = open(filename)\n        file2 = open(filename)\n        r = HttpResponse(file1)\n        r.content = file2\n        self.assertFalse(file1.closed)\n        self.assertFalse(file2.closed)\n        r.close()\n        self.assertTrue(file1.closed)\n        self.assertTrue(file2.closed)\n\n    def test_streaming_response(self):\n        filename = os.path.join(os.path.dirname(upath(__file__)), 'abc.txt')\n\n        # file isn't closed until we close the response.\n        file1 = open(filename)\n        r = StreamingHttpResponse(file1)\n        self.assertFalse(file1.closed)\n        r.close()\n        self.assertTrue(file1.closed)\n\n        # when multiple file are assigned as content, make sure they are all\n        # closed with the response.\n        file1 = open(filename)\n        file2 = open(filename)\n        r = StreamingHttpResponse(file1)\n        r.streaming_content = file2\n        self.assertFalse(file1.closed)\n        self.assertFalse(file2.closed)\n        r.close()\n        self.assertTrue(file1.closed)\n        self.assertTrue(file2.closed)\n\nclass CookieTests(unittest.TestCase):\n    def test_encode(self):\n        \"\"\"\n        Test that we don't output tricky characters in encoded value\n        \"\"\"\n        c = SimpleCookie()\n        c['test'] = \"An,awkward;value\"\n        self.assertTrue(\";\" not in c.output().rstrip(';')) # IE compat\n        self.assertTrue(\",\" not in c.output().rstrip(';')) # Safari compat\n\n    def test_decode(self):\n        \"\"\"\n        Test that we can still preserve semi-colons and commas\n        \"\"\"\n        c = SimpleCookie()\n        c['test'] = \"An,awkward;value\"\n        c2 = SimpleCookie()\n        c2.load(c.output())\n        self.assertEqual(c['test'].value, c2['test'].value)\n\n    def test_decode_2(self):\n        \"\"\"\n        Test that we haven't broken normal encoding\n        \"\"\"\n        c = SimpleCookie()\n        c['test'] = b\"\\xf0\"\n        c2 = SimpleCookie()\n        c2.load(c.output())\n        self.assertEqual(c['test'].value, c2['test'].value)\n\n    def test_nonstandard_keys(self):\n        \"\"\"\n        Test that a single non-standard cookie name doesn't affect all cookies. Ticket #13007.\n        \"\"\"\n        self.assertTrue('good_cookie' in parse_cookie('good_cookie=yes;bad:cookie=yes').keys())\n\n    def test_repeated_nonstandard_keys(self):\n        \"\"\"\n        Test that a repeated non-standard name doesn't affect all cookies. Ticket #15852\n        \"\"\"\n        self.assertTrue('good_cookie' in parse_cookie('a:=b; a:=c; good_cookie=yes').keys())\n\n    def test_httponly_after_load(self):\n        \"\"\"\n        Test that we can use httponly attribute on cookies that we load\n        \"\"\"\n        c = SimpleCookie()\n        c.load(\"name=val\")\n        c['name']['httponly'] = True\n        self.assertTrue(c['name']['httponly'])\n\n    def test_load_dict(self):\n        c = SimpleCookie()\n        c.load({'name': 'val'})\n        self.assertEqual(c['name'].value, 'val')\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/i18n/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/i18n/commands/__init__.py",
    "content": "from django.utils.translation import ugettext as _\n\n# Translators: This comment should be extracted\ndummy1 = _(\"This is a translatable string.\")\n\n# This comment should not be extracted\ndummy2 = _(\"This is another translatable string.\")\n\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/i18n/commands/code.sample",
    "content": "from django.utils.translation import ugettext\n\n# This will generate an xgettext warning\nmy_string = ugettext(\"This string contain two placeholders: %s and %s\" % ('a', 'b'))\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/i18n/commands/compilation.py",
    "content": "import os\n\nfrom django.core.management import call_command, CommandError\nfrom django.test import TestCase\nfrom django.test.utils import override_settings\nfrom django.utils import translation, six\nfrom django.utils._os import upath\nfrom django.utils.six import StringIO\n\ntest_dir = os.path.abspath(os.path.dirname(upath(__file__)))\n\n\nclass MessageCompilationTests(TestCase):\n\n    def setUp(self):\n        self._cwd = os.getcwd()\n\n    def tearDown(self):\n        os.chdir(self._cwd)\n\n\nclass PoFileTests(MessageCompilationTests):\n\n    LOCALE = 'es_AR'\n    MO_FILE = 'locale/%s/LC_MESSAGES/django.mo' % LOCALE\n\n    def test_bom_rejection(self):\n        os.chdir(test_dir)\n        with self.assertRaises(CommandError) as cm:\n            call_command('compilemessages', locale=self.LOCALE, stderr=StringIO())\n        self.assertIn(\"file has a BOM (Byte Order Mark)\", cm.exception.args[0])\n        self.assertFalse(os.path.exists(self.MO_FILE))\n\n\nclass PoFileContentsTests(MessageCompilationTests):\n    # Ticket #11240\n\n    LOCALE='fr'\n    MO_FILE='locale/%s/LC_MESSAGES/django.mo' % LOCALE\n\n    def setUp(self):\n        super(PoFileContentsTests, self).setUp()\n        self.addCleanup(os.unlink, os.path.join(test_dir, self.MO_FILE))\n\n    def test_percent_symbol_in_po_file(self):\n        os.chdir(test_dir)\n        call_command('compilemessages', locale=self.LOCALE, stderr=StringIO())\n        self.assertTrue(os.path.exists(self.MO_FILE))\n\n\nclass PercentRenderingTests(MessageCompilationTests):\n    # Ticket #11240 -- Testing rendering doesn't belong here but we are trying\n    # to keep tests for all the stack together\n\n    LOCALE='it'\n    MO_FILE='locale/%s/LC_MESSAGES/django.mo' % LOCALE\n\n    @override_settings(LOCALE_PATHS=(os.path.join(test_dir, 'locale'),))\n    def test_percent_symbol_escaping(self):\n        from django.template import Template, Context\n        os.chdir(test_dir)\n        call_command('compilemessages', locale=self.LOCALE, stderr=StringIO())\n        with translation.override(self.LOCALE):\n            t = Template('{% load i18n %}{% trans \"Looks like a str fmt spec %% o but shouldn\\'t be interpreted as such\" %}')\n            rendered = t.render(Context({}))\n            self.assertEqual(rendered, 'IT translation contains %% for the above string')\n\n            t = Template('{% load i18n %}{% trans \"Completed 50%% of all the tasks\" %}')\n            rendered = t.render(Context({}))\n            self.assertEqual(rendered, 'IT translation of Completed 50%% of all the tasks')\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/i18n/commands/extraction.py",
    "content": "# -*- encoding: utf-8 -*-\nfrom __future__ import unicode_literals\n\nimport os\nimport re\nimport shutil\n\nfrom django.core import management\nfrom django.test import TestCase\nfrom django.utils.encoding import force_text\nfrom django.utils._os import upath\nfrom django.utils.six import StringIO\n\n\nLOCALE='de'\n\nclass ExtractorTests(TestCase):\n\n    PO_FILE='locale/%s/LC_MESSAGES/django.po' % LOCALE\n\n    def setUp(self):\n        self._cwd = os.getcwd()\n        self.test_dir = os.path.abspath(os.path.dirname(upath(__file__)))\n\n    def _rmrf(self, dname):\n        if os.path.commonprefix([self.test_dir, os.path.abspath(dname)]) != self.test_dir:\n            return\n        shutil.rmtree(dname)\n\n    def tearDown(self):\n        os.chdir(self.test_dir)\n        try:\n            self._rmrf('locale/%s' % LOCALE)\n        except OSError:\n            pass\n        os.chdir(self._cwd)\n\n    def assertMsgId(self, msgid, s, use_quotes=True):\n        q = '\"'\n        if use_quotes:\n            msgid = '\"%s\"' % msgid\n            q = \"'\"\n        needle = 'msgid %s' % msgid\n        msgid = re.escape(msgid)\n        return self.assertTrue(re.search('^msgid %s' % msgid, s, re.MULTILINE), 'Could not find %(q)s%(n)s%(q)s in generated PO file' % {'n':needle, 'q':q})\n\n    def assertNotMsgId(self, msgid, s, use_quotes=True):\n        if use_quotes:\n            msgid = '\"%s\"' % msgid\n        msgid = re.escape(msgid)\n        return self.assertTrue(not re.search('^msgid %s' % msgid, s, re.MULTILINE))\n\n\nclass BasicExtractorTests(ExtractorTests):\n\n    def test_comments_extractor(self):\n        os.chdir(self.test_dir)\n        management.call_command('makemessages', locale=LOCALE, verbosity=0)\n        self.assertTrue(os.path.exists(self.PO_FILE))\n        with open(self.PO_FILE, 'r') as fp:\n            po_contents = force_text(fp.read())\n            self.assertTrue('#. Translators: This comment should be extracted' in po_contents)\n            self.assertTrue('This comment should not be extracted' not in po_contents)\n            # Comments in templates\n            self.assertTrue('#. Translators: Django template comment for translators' in po_contents)\n            self.assertTrue(\"#. Translators: Django comment block for translators\\n#. string's meaning unveiled\" in po_contents)\n\n            self.assertTrue('#. Translators: One-line translator comment #1' in po_contents)\n            self.assertTrue('#. Translators: Two-line translator comment #1\\n#. continued here.' in po_contents)\n\n            self.assertTrue('#. Translators: One-line translator comment #2' in po_contents)\n            self.assertTrue('#. Translators: Two-line translator comment #2\\n#. continued here.' in po_contents)\n\n            self.assertTrue('#. Translators: One-line translator comment #3' in po_contents)\n            self.assertTrue('#. Translators: Two-line translator comment #3\\n#. continued here.' in po_contents)\n\n            self.assertTrue('#. Translators: One-line translator comment #4' in po_contents)\n            self.assertTrue('#. Translators: Two-line translator comment #4\\n#. continued here.' in po_contents)\n\n            self.assertTrue('#. Translators: One-line translator comment #5 -- with non ASCII characters: áéíóúö' in po_contents)\n            self.assertTrue('#. Translators: Two-line translator comment #5 -- with non ASCII characters: áéíóúö\\n#. continued here.' in po_contents)\n\n    def test_templatize_trans_tag(self):\n        # ticket #11240\n        os.chdir(self.test_dir)\n        management.call_command('makemessages', locale=LOCALE, verbosity=0)\n        self.assertTrue(os.path.exists(self.PO_FILE))\n        with open(self.PO_FILE, 'r') as fp:\n            po_contents = force_text(fp.read())\n            self.assertMsgId('Literal with a percent symbol at the end %%', po_contents)\n            self.assertMsgId('Literal with a percent %% symbol in the middle', po_contents)\n            self.assertMsgId('Completed 50%% of all the tasks', po_contents)\n            self.assertMsgId('Completed 99%% of all the tasks', po_contents)\n            self.assertMsgId(\"Shouldn't double escape this sequence: %% (two percent signs)\", po_contents)\n            self.assertMsgId(\"Shouldn't double escape this sequence %% either\", po_contents)\n            self.assertMsgId(\"Looks like a str fmt spec %%s but shouldn't be interpreted as such\", po_contents)\n            self.assertMsgId(\"Looks like a str fmt spec %% o but shouldn't be interpreted as such\", po_contents)\n\n    def test_templatize_blocktrans_tag(self):\n        # ticket #11966\n        os.chdir(self.test_dir)\n        management.call_command('makemessages', locale=LOCALE, verbosity=0)\n        self.assertTrue(os.path.exists(self.PO_FILE))\n        with open(self.PO_FILE, 'r') as fp:\n            po_contents = force_text(fp.read())\n            self.assertMsgId('I think that 100%% is more that 50%% of anything.', po_contents)\n            self.assertMsgId('I think that 100%% is more that 50%% of %(obj)s.', po_contents)\n            self.assertMsgId(\"Blocktrans extraction shouldn't double escape this: %%, a=%(a)s\", po_contents)\n\n    def test_extraction_error(self):\n        os.chdir(self.test_dir)\n        shutil.copyfile('./templates/template_with_error.tpl', './templates/template_with_error.html')\n        self.assertRaises(SyntaxError, management.call_command, 'makemessages', locale=LOCALE, verbosity=0)\n        with self.assertRaises(SyntaxError) as context_manager:\n            management.call_command('makemessages', locale=LOCALE, verbosity=0)\n        self.assertRegexpMatches(str(context_manager.exception),\n                r'Translation blocks must not include other block tags: blocktrans \\(file templates[/\\\\]template_with_error\\.html, line 3\\)'\n            )\n        os.remove('./templates/template_with_error.html')\n        # Check that the temporary file was cleaned up\n        self.assertFalse(os.path.exists('./templates/template_with_error.html.py'))\n\n    def test_extraction_warning(self):\n        os.chdir(self.test_dir)\n        shutil.copyfile('./code.sample', './code_sample.py')\n        stdout = StringIO()\n        management.call_command('makemessages', locale=LOCALE, stdout=stdout)\n        os.remove('./code_sample.py')\n        self.assertIn(\"code_sample.py:4\", force_text(stdout.getvalue()))\n\n    def test_template_message_context_extractor(self):\n        \"\"\"\n        Ensure that message contexts are correctly extracted for the\n        {% trans %} and {% blocktrans %} template tags.\n        Refs #14806.\n        \"\"\"\n        os.chdir(self.test_dir)\n        management.call_command('makemessages', locale=LOCALE, verbosity=0)\n        self.assertTrue(os.path.exists(self.PO_FILE))\n        with open(self.PO_FILE, 'r') as fp:\n            po_contents = force_text(fp.read())\n            # {% trans %}\n            self.assertTrue('msgctxt \"Special trans context #1\"' in po_contents)\n            self.assertTrue(\"Translatable literal #7a\" in po_contents)\n            self.assertTrue('msgctxt \"Special trans context #2\"' in po_contents)\n            self.assertTrue(\"Translatable literal #7b\" in po_contents)\n            self.assertTrue('msgctxt \"Special trans context #3\"' in po_contents)\n            self.assertTrue(\"Translatable literal #7c\" in po_contents)\n\n            # {% blocktrans %}\n            self.assertTrue('msgctxt \"Special blocktrans context #1\"' in po_contents)\n            self.assertTrue(\"Translatable literal #8a\" in po_contents)\n            self.assertTrue('msgctxt \"Special blocktrans context #2\"' in po_contents)\n            self.assertTrue(\"Translatable literal #8b-singular\" in po_contents)\n            self.assertTrue(\"Translatable literal #8b-plural\" in po_contents)\n            self.assertTrue('msgctxt \"Special blocktrans context #3\"' in po_contents)\n            self.assertTrue(\"Translatable literal #8c-singular\" in po_contents)\n            self.assertTrue(\"Translatable literal #8c-plural\" in po_contents)\n            self.assertTrue('msgctxt \"Special blocktrans context #4\"' in po_contents)\n            self.assertTrue(\"Translatable literal #8d\" in po_contents)\n\n    def test_context_in_single_quotes(self):\n        os.chdir(self.test_dir)\n        management.call_command('makemessages', locale=LOCALE, verbosity=0)\n        self.assertTrue(os.path.exists(self.PO_FILE))\n        with open(self.PO_FILE, 'r') as fp:\n            po_contents = force_text(fp.read())\n            # {% trans %}\n            self.assertTrue('msgctxt \"Context wrapped in double quotes\"' in po_contents)\n            self.assertTrue('msgctxt \"Context wrapped in single quotes\"' in po_contents)\n\n            # {% blocktrans %}\n            self.assertTrue('msgctxt \"Special blocktrans context wrapped in double quotes\"' in po_contents)\n            self.assertTrue('msgctxt \"Special blocktrans context wrapped in single quotes\"' in po_contents)\n\n\nclass JavascriptExtractorTests(ExtractorTests):\n\n    PO_FILE='locale/%s/LC_MESSAGES/djangojs.po' % LOCALE\n\n    def test_javascript_literals(self):\n        os.chdir(self.test_dir)\n        management.call_command('makemessages', domain='djangojs', locale=LOCALE, verbosity=0)\n        self.assertTrue(os.path.exists(self.PO_FILE))\n        with open(self.PO_FILE, 'r') as fp:\n            po_contents = fp.read()\n            self.assertMsgId('This literal should be included.', po_contents)\n            self.assertMsgId('This one as well.', po_contents)\n            self.assertMsgId(r'He said, \\\"hello\\\".', po_contents)\n            self.assertMsgId(\"okkkk\", po_contents)\n            self.assertMsgId(\"TEXT\", po_contents)\n            self.assertMsgId(\"It's at http://example.com\", po_contents)\n            self.assertMsgId(\"String\", po_contents)\n            self.assertMsgId(\"/* but this one will be too */ 'cause there is no way of telling...\", po_contents)\n            self.assertMsgId(\"foo\", po_contents)\n            self.assertMsgId(\"bar\", po_contents)\n            self.assertMsgId(\"baz\", po_contents)\n            self.assertMsgId(\"quz\", po_contents)\n            self.assertMsgId(\"foobar\", po_contents)\n\nclass IgnoredExtractorTests(ExtractorTests):\n\n    def test_ignore_option(self):\n        os.chdir(self.test_dir)\n        pattern1 = os.path.join('ignore_dir', '*')\n        stdout = StringIO()\n        management.call_command('makemessages', locale=LOCALE, verbosity=2,\n            ignore_patterns=[pattern1], stdout=stdout)\n        data = stdout.getvalue()\n        self.assertTrue(\"ignoring directory ignore_dir\" in data)\n        self.assertTrue(os.path.exists(self.PO_FILE))\n        with open(self.PO_FILE, 'r') as fp:\n            po_contents = fp.read()\n            self.assertMsgId('This literal should be included.', po_contents)\n            self.assertNotMsgId('This should be ignored.', po_contents)\n\n\nclass SymlinkExtractorTests(ExtractorTests):\n\n    def setUp(self):\n        self._cwd = os.getcwd()\n        self.test_dir = os.path.abspath(os.path.dirname(upath(__file__)))\n        self.symlinked_dir = os.path.join(self.test_dir, 'templates_symlinked')\n\n    def tearDown(self):\n        super(SymlinkExtractorTests, self).tearDown()\n        os.chdir(self.test_dir)\n        try:\n            os.remove(self.symlinked_dir)\n        except OSError:\n            pass\n        os.chdir(self._cwd)\n\n    def test_symlink(self):\n        if hasattr(os, 'symlink'):\n            if os.path.exists(self.symlinked_dir):\n                self.assertTrue(os.path.islink(self.symlinked_dir))\n            else:\n                os.symlink(os.path.join(self.test_dir, 'templates'), self.symlinked_dir)\n            os.chdir(self.test_dir)\n            management.call_command('makemessages', locale=LOCALE, verbosity=0, symlinks=True)\n            self.assertTrue(os.path.exists(self.PO_FILE))\n            with open(self.PO_FILE, 'r') as fp:\n                po_contents = force_text(fp.read())\n                self.assertMsgId('This literal should be included.', po_contents)\n                self.assertTrue('templates_symlinked/test.html' in po_contents)\n\n\nclass CopyPluralFormsExtractorTests(ExtractorTests):\n\n    def test_copy_plural_forms(self):\n        os.chdir(self.test_dir)\n        management.call_command('makemessages', locale=LOCALE, verbosity=0)\n        self.assertTrue(os.path.exists(self.PO_FILE))\n        with open(self.PO_FILE, 'r') as fp:\n            po_contents = force_text(fp.read())\n            self.assertTrue('Plural-Forms: nplurals=2; plural=(n != 1)' in po_contents)\n\n\nclass NoWrapExtractorTests(ExtractorTests):\n\n    def test_no_wrap_enabled(self):\n        os.chdir(self.test_dir)\n        management.call_command('makemessages', locale=LOCALE, verbosity=0, no_wrap=True)\n        self.assertTrue(os.path.exists(self.PO_FILE))\n        with open(self.PO_FILE, 'r') as fp:\n            po_contents = force_text(fp.read())\n            self.assertMsgId('This literal should also be included wrapped or not wrapped depending on the use of the --no-wrap option.', po_contents)\n\n    def test_no_wrap_disabled(self):\n        os.chdir(self.test_dir)\n        management.call_command('makemessages', locale=LOCALE, verbosity=0, no_wrap=False)\n        self.assertTrue(os.path.exists(self.PO_FILE))\n        with open(self.PO_FILE, 'r') as fp:\n            po_contents = force_text(fp.read())\n            self.assertMsgId('\"\"\\n\"This literal should also be included wrapped or not wrapped depending on the \"\\n\"use of the --no-wrap option.\"', po_contents, use_quotes=False)\n\n\nclass NoLocationExtractorTests(ExtractorTests):\n\n    def test_no_location_enabled(self):\n        os.chdir(self.test_dir)\n        management.call_command('makemessages', locale=LOCALE, verbosity=0, no_location=True)\n        self.assertTrue(os.path.exists(self.PO_FILE))\n        with open(self.PO_FILE, 'r') as fp:\n            po_contents = force_text(fp.read())\n            self.assertFalse('#: templates/test.html:55' in po_contents)\n\n    def test_no_location_disabled(self):\n        os.chdir(self.test_dir)\n        management.call_command('makemessages', locale=LOCALE, verbosity=0, no_location=False)\n        self.assertTrue(os.path.exists(self.PO_FILE))\n        with open(self.PO_FILE, 'r') as fp:\n            po_contents = force_text(fp.read())\n            self.assertTrue('#: templates/test.html:55' in po_contents)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/i18n/commands/ignore_dir/ignored.html",
    "content": "{% load i18n %}\n{% trans \"This should be ignored.\" %}\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/i18n/commands/javascript.js",
    "content": "// '\ngettext('This literal should be included.')\nx = y; // '\ngettext(\"This one as well.\")\n\n/** (from ticket 7704)\n * *****************************\n * AddModule main / window\n * @constructor\n * @class MyDesktop.AddModule\n * *****************************\n */\n\ngettext('He said, \\\"hello\".')\n\n// from ticket 14045\nfunction mfunc() {\n    var val = 0;\n    return val ? 1 : 0;\n}\ngettext('okkkk');\nprint mysub();\n\n// from ticket 15495\n/* / ' */ gettext(\"TEXT\");\n\ngettext(\"It's at http://example.com\")\n\n// also from ticket 15495\ngettext(\"String\"); // This comment won't be caught by pythonize_re and it contains \"'\" which is a string start in Perl\n/*\n * This one will be removed by the patch\n */\ngettext(\"/* but this one will be too */ 'cause there is no way of telling...\");\nf(/* ... if it's different from this one */);\n\n// from ticket 15331\ngettext(\"foo\");\ntrue ? true : false;\ngettext(\"bar\");\ntrue ? true : false;\ngettext(\"baz\");\ntrue ? true : false; // ?\ngettext(\"quz\");\n\"?\";\ngettext(\"foobar\");\n\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/i18n/commands/locale/es_AR/LC_MESSAGES/django.po",
    "content": "﻿# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same license as the PACKAGE package.\n# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Django\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2010-01-05 20:25-0300\\n\"\n\"PO-Revision-Date: 2010-02-22 00:14-0300\\n\"\n\"Last-Translator: Translator <translator@example.com>\\n\"\n\"Language-Team: Django-I18N <team@example.com>\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms:  nplurals=2; plural=(n != 1);\\n\"\n\n#: path/file.py:1\nmsgid \"This file has a UTF-8 BOM an should be rejected by the Django makemessages command.\"\nmsgstr \"\"\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/i18n/commands/locale/fr/LC_MESSAGES/django.po",
    "content": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same license as the PACKAGE package.\n# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: PACKAGE VERSION\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2011-12-04 04:59-0600\\n\"\n\"PO-Revision-Date: 2011-12-10 19:12-0300\\n\"\n\"Last-Translator: FULL NAME <EMAIL@ADDRESS>\\n\"\n\"Language-Team: LANGUAGE <LL@li.org>\\n\"\n\"Language: fr\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1)\\n\"\n\n#. Translators: Django template comment for translators\n#: templates/test.html:9\n#, python-format\nmsgid \"I think that 100%% is more that 50%% of anything.\"\nmsgstr \"\"\n\n#: templates/test.html:10\n#, python-format\nmsgid \"I think that 100%% is more that 50%% of %(obj)s.\"\nmsgstr \"\"\n\n#: templates/test.html:70\n#, python-format\nmsgid \"Literal with a percent symbol at the end %%\"\nmsgstr \"\"\n\n#: templates/test.html:71\n#, python-format\nmsgid \"Literal with a percent %% symbol in the middle\"\nmsgstr \"\"\n\n#: templates/test.html:72\n#, python-format\nmsgid \"Completed 50%% of all the tasks\"\nmsgstr \"\"\n\n#: templates/test.html:73\n#, python-format\nmsgctxt \"ctx0\"\nmsgid \"Completed 99%% of all the tasks\"\nmsgstr \"\"\n\n#: templates/test.html:74\n#, python-format\nmsgid \"Shouldn't double escape this sequence: %% (two percent signs)\"\nmsgstr \"\"\n\n#: templates/test.html:75\n#, python-format\nmsgctxt \"ctx1\"\nmsgid \"Shouldn't double escape this sequence %% either\"\nmsgstr \"\"\n\n#: templates/test.html:76\n#, python-format\nmsgid \"Looks like a str fmt spec %%s but shouldn't be interpreted as such\"\nmsgstr \"Translation of the above string\"\n\n#: templates/test.html:77\n#, python-format\nmsgid \"Looks like a str fmt spec %% o but shouldn't be interpreted as such\"\nmsgstr \"Translation contains %% for the above string\"\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/i18n/commands/locale/it/LC_MESSAGES/django.po",
    "content": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same license as the PACKAGE package.\n# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: PACKAGE VERSION\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2011-12-04 04:59-0600\\n\"\n\"PO-Revision-Date: 2011-12-10 20:29-0300\\n\"\n\"Last-Translator: FULL NAME <EMAIL@ADDRESS>\\n\"\n\"Language-Team: LANGUAGE <LL@li.org>\\n\"\n\"Language: it\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1)\\n\"\n\n#, python-format\nmsgid \"Completed 50%% of all the tasks\"\nmsgstr \"IT translation of Completed 50%% of all the tasks\"\n\n#, python-format\nmsgid \"Looks like a str fmt spec %%s but shouldn't be interpreted as such\"\nmsgstr \"Translation of the above string\"\n\n#, python-format\nmsgid \"Looks like a str fmt spec %% o but shouldn't be interpreted as such\"\nmsgstr \"IT translation contains %% for the above string\"\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/i18n/commands/templates/template_with_error.tpl",
    "content": "{% load i18n %}\n<p>This template contains an error (no endblocktrans)</p>\n<p>{% blocktrans %}This should fail{% blocktrans %}</p>\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/i18n/commands/templates/test.html",
    "content": "{% load i18n %}\n{% comment %}Translators: Django comment block for translators\nstring's meaning unveiled\n{% endcomment %}\n{% trans \"This literal should be included.\" %}\n{% trans \"This literal should also be included wrapped or not wrapped depending on the use of the --no-wrap option.\" %}\n\n{# Translators: Django template comment for translators #}\n<p>{% blocktrans %}I think that 100% is more that 50% of anything.{% endblocktrans %}</p>\n{% blocktrans with 'txt' as obj %}I think that 100% is more that 50% of {{ obj }}.{% endblocktrans %}\n\n{% comment %}Some random comment\nSome random comment\nTranslators: One-line translator comment #1\n{% endcomment %}\n{% trans \"Translatable literal #1a\" %}\n\n{% comment %}Some random comment\nSome random comment\nTranslators: Two-line translator comment #1\ncontinued here.\n{% endcomment %}\n{% trans \"Translatable literal #1b\" %}\n\n{% comment %}Some random comment\nTranslators: One-line translator comment #2\n{% endcomment %}\n{% trans \"Translatable literal #2a\" %}\n\n{% comment %}Some random comment\nTranslators: Two-line translator comment #2\ncontinued here.\n{% endcomment %}\n{% trans \"Translatable literal #2b\" %}\n\n{% comment %}\n    Translators: One-line translator comment #3\n{% endcomment %}\n{% trans \"Translatable literal #3a\" %}\n\n{% comment %}\nTranslators: Two-line translator comment #3\ncontinued here.\n{% endcomment %}\n{% trans \"Translatable literal #3b\" %}\n\n{% comment %} Translators: One-line translator comment #4{% endcomment %}\n{% trans \"Translatable literal #4a\" %}\n\n{% comment %}  Translators: Two-line translator comment #4\ncontinued here.{% endcomment %}\n{% trans \"Translatable literal #4b\" %}\n\n{% comment %} Translators: One-line translator comment #5 -- with non ASCII characters: áéíóúö{% endcomment %}\n{% trans \"Translatable literal #5a\" %}\n\n{% comment %}  Translators: Two-line translator comment #5 -- with non ASCII characters: áéíóúö\ncontinued here.{% endcomment %}\n{% trans \"Translatable literal #6b\" %}\n\n{% trans \"Translatable literal #7a\" context \"Special trans context #1\" %}\n{% trans \"Translatable literal #7b\" as var context \"Special trans context #2\" %}\n{% trans \"Translatable literal #7c\" context \"Special trans context #3\" as var %}\n\n{% blocktrans context \"Special blocktrans context #1\" %}Translatable literal #8a{% endblocktrans %}\n{% blocktrans count 2 context \"Special blocktrans context #2\" %}Translatable literal #8b-singular{% plural %}Translatable literal #8b-plural{% endblocktrans %}\n{% blocktrans context \"Special blocktrans context #3\" count 2 %}Translatable literal #8c-singular{% plural %}Translatable literal #8c-plural{% endblocktrans %}\n{% blocktrans with a=1 context \"Special blocktrans context #4\" %}Translatable literal #8d {{ a }}{% endblocktrans %}\n\n{% blocktrans with a=1 %}Blocktrans extraction shouldn't double escape this: %%, a={{ a }}{% endblocktrans %}\n\n{% trans \"Literal with a percent symbol at the end %\" %}\n{% trans \"Literal with a percent % symbol in the middle\" %}\n{% trans \"Completed 50% of all the tasks\" %}\n{% trans \"Completed 99% of all the tasks\" context \"ctx0\" %}\n{% trans \"Shouldn't double escape this sequence: %% (two percent signs)\" %}\n{% trans \"Shouldn't double escape this sequence %% either\" context \"ctx1\" %}\n{% trans \"Looks like a str fmt spec %s but shouldn't be interpreted as such\" %}\n{% trans \"Looks like a str fmt spec % o but shouldn't be interpreted as such\" %}\n\n{% trans \"Translatable literal with context wrapped in single quotes\" context 'Context wrapped in single quotes' as var %}\n{% trans \"Translatable literal with context wrapped in double quotes\" context \"Context wrapped in double quotes\" as var %}\n{% blocktrans context 'Special blocktrans context wrapped in single quotes' %}Translatable literal with context wrapped in single quotes{% endblocktrans %}\n{% blocktrans context \"Special blocktrans context wrapped in double quotes\" %}Translatable literal with context wrapped in double quotes{% endblocktrans %}"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/i18n/commands/tests.py",
    "content": "import os\nimport re\nfrom subprocess import Popen, PIPE\n\nfrom django.utils import six\n\ncan_run_extraction_tests = False\ncan_run_compilation_tests = False\n\ndef find_command(cmd, path=None, pathext=None):\n    if path is None:\n        path = os.environ.get('PATH', []).split(os.pathsep)\n    if isinstance(path, six.string_types):\n        path = [path]\n    # check if there are funny path extensions for executables, e.g. Windows\n    if pathext is None:\n        pathext = os.environ.get('PATHEXT', '.COM;.EXE;.BAT;.CMD').split(os.pathsep)\n    # don't use extensions if the command ends with one of them\n    for ext in pathext:\n        if cmd.endswith(ext):\n            pathext = ['']\n            break\n    # check if we find the command on PATH\n    for p in path:\n        f = os.path.join(p, cmd)\n        if os.path.isfile(f):\n            return f\n        for ext in pathext:\n            fext = f + ext\n            if os.path.isfile(fext):\n                return fext\n    return None\n\n# checks if it can find xgettext on the PATH and\n# imports the extraction tests if yes\nxgettext_cmd = find_command('xgettext')\nif xgettext_cmd:\n    p = Popen('%s --version' % xgettext_cmd, shell=True, stdout=PIPE, stderr=PIPE, close_fds=os.name != 'nt', universal_newlines=True)\n    output = p.communicate()[0]\n    match = re.search(r'(?P<major>\\d+)\\.(?P<minor>\\d+)', output)\n    if match:\n        xversion = (int(match.group('major')), int(match.group('minor')))\n        if xversion >= (0, 15):\n            can_run_extraction_tests = True\n    del p\n\nif find_command('msgfmt'):\n    can_run_compilation_tests = True\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/i18n/contenttypes/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/i18n/contenttypes/locale/en/LC_MESSAGES/django.po",
    "content": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same license as the PACKAGE package.\n# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.\n#\n#, fuzzy\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: PACKAGE VERSION\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2011-09-15 15:41-0700\\n\"\n\"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\\n\"\n\"Last-Translator: FULL NAME <EMAIL@ADDRESS>\\n\"\n\"Language-Team: LANGUAGE <LL@li.org>\\n\"\n\"Language: \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\n#: models.py:6\nmsgid \"Anything\"\nmsgstr \"\"\n\n#: models.py:15\nmsgid \"Company\"\nmsgstr \"Company\""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/i18n/contenttypes/locale/fr/LC_MESSAGES/django.po",
    "content": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same license as the PACKAGE package.\n# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.\n#\n#, fuzzy\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: PACKAGE VERSION\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2011-09-15 15:41-0700\\n\"\n\"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\\n\"\n\"Last-Translator: FULL NAME <EMAIL@ADDRESS>\\n\"\n\"Language-Team: LANGUAGE <LL@li.org>\\n\"\n\"Language: \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=2; plural=(n > 1)\\n\"\n\n#: models.py:6\nmsgid \"Anything\"\nmsgstr \"\"\n\n#: models.py:15\nmsgid \"Company\"\nmsgstr \"Société\""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/i18n/contenttypes/tests.py",
    "content": "# coding: utf-8\nfrom __future__ import unicode_literals\n\nimport os\n\nfrom django.contrib.contenttypes.models import ContentType\nfrom django.test import TestCase\nfrom django.test.utils import override_settings\nfrom django.utils._os import upath\nfrom django.utils import six\nfrom django.utils import translation\n\n\n@override_settings(\n    USE_I18N=True,\n    LOCALE_PATHS=(\n        os.path.join(os.path.dirname(upath(__file__)), 'locale'),\n    ),\n    LANGUAGE_CODE='en',\n    LANGUAGES=(\n        ('en', 'English'),\n        ('fr', 'French'),\n    ),\n)\nclass ContentTypeTests(TestCase):\n    def test_verbose_name(self):\n        company_type = ContentType.objects.get(app_label='i18n', model='company')\n        with translation.override('en'):\n            self.assertEqual(six.text_type(company_type), 'Company')\n        with translation.override('fr'):\n            self.assertEqual(six.text_type(company_type), 'Société')\n\n    def test_field_override(self):\n        company_type = ContentType.objects.get(app_label='i18n', model='company')\n        company_type.name = 'Other'\n        self.assertEqual(six.text_type(company_type), 'Other')\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/i18n/forms.py",
    "content": "from __future__ import absolute_import\n\nfrom django import forms\nfrom django.forms.extras import SelectDateWidget\n\nfrom .models import Company\n\n\nclass I18nForm(forms.Form):\n    decimal_field = forms.DecimalField(localize=True)\n    float_field = forms.FloatField(localize=True)\n    date_field = forms.DateField(localize=True)\n    datetime_field = forms.DateTimeField(localize=True)\n    time_field = forms.TimeField(localize=True)\n    integer_field = forms.IntegerField(localize=True)\n\nclass SelectDateForm(forms.Form):\n    date_field = forms.DateField(widget=SelectDateWidget)\n\nclass CompanyForm(forms.ModelForm):\n    cents_paid = forms.DecimalField(max_digits=4, decimal_places=2, localize=True)\n    products_delivered = forms.IntegerField(localize=True)\n    date_added = forms.DateTimeField(localize=True)\n\n    class Meta:\n        model = Company\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/i18n/models.py",
    "content": "from datetime import datetime\n\nfrom django.db import models\nfrom django.utils.translation import ugettext_lazy as _\n\n\nclass TestModel(models.Model):\n    text = models.CharField(max_length=10, default=_('Anything'))\n\nclass Company(models.Model):\n    name = models.CharField(max_length=50)\n    date_added = models.DateTimeField(default=datetime(1799,1,31,23,59,59,0))\n    cents_paid = models.DecimalField(max_digits=4, decimal_places=2)\n    products_delivered = models.IntegerField()\n\n    class Meta:\n        verbose_name = _('Company')\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/i18n/other/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/i18n/other/locale/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/i18n/other/locale/de/LC_MESSAGES/django.po",
    "content": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same license as the PACKAGE package.\n# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: django tests\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2010-02-14 17:33+0100\\n\"\n\"PO-Revision-Date: 2011-01-21 21:37-0300\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: de <de@li.org>\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1)\\n\"\n\n#: models.py:3\nmsgid \"Time\"\nmsgstr \"Zeit (LOCALE_PATHS)\"\n\n#: models.py:5\nmsgid \"Date/time\"\nmsgstr \"Datum/Zeit (LOCALE_PATHS)\"\n\n#: models.py:7\nmsgctxt \"month name\"\nmsgid \"May\"\nmsgstr \"Mai\"\n\n#: models.py:9\nmsgctxt \"verb\"\nmsgid \"May\"\nmsgstr \"Kann\"\n\n#: models.py:11\nmsgctxt \"search\"\nmsgid \"%d result\"\nmsgid_plural \"%d results\"\nmsgstr[0] \"%d Resultat\"\nmsgstr[1] \"%d Resultate\"\n\n#: models.py:13\n#, python-format\nmsgid \"The result was %(percent)s%%\"\nmsgstr \"Das Ergebnis war %(percent)s%%\"\n\n#: models.py:13\n#, python-format\nmsgid \"%(percent)s%% represents %(num)s object\"\nmsgid_plural \"%(percent)s%% represents %(num)s objects\"\nmsgstr[0] \"%(percent)s%% stellt %(num)s Objekt dar\"\nmsgstr[1] \"%(percent)s%% stellt %(num)s Objekte dar\"\n\n#: models.py:17\nmsgctxt \"super search\"\nmsgid \"%(number)s super result\"\nmsgid_plural \"%(number)s super results\"\nmsgstr[0] \"%(number)s Super-Ergebnis\"\nmsgstr[1] \"%(number)s Super-Ergebnisse\"\n\n#: models.py:19\nmsgctxt \"other super search\"\nmsgid \"%(number)s super result\"\nmsgid_plural \"%(number)s super results\"\nmsgstr[0] \"%(number)s anderen Super-Ergebnis\"\nmsgstr[1] \"%(number)s andere Super-Ergebnisse\"\n\n#: models.py:21\nmsgctxt \"comment count\"\nmsgid \"There are %(num_comments)s comments\"\nmsgstr \"Es gibt %(num_comments)s Kommentare\"\n\n#: models.py:23\nmsgctxt \"other comment count\"\nmsgid \"There are %(num_comments)s comments\"\nmsgstr \"Andere: Es gibt %(num_comments)s Kommentare\""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/i18n/other/locale/de/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/i18n/other/locale/de/formats.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/i18n/other/locale/fr/LC_MESSAGES/django.po",
    "content": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same license as the PACKAGE package.\n# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: django tests\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2010-02-14 17:33+0100\\n\"\n\"PO-Revision-Date: 2011-01-21 21:37-0300\\n\"\n\"Last-Translator: Claude\\n\"\n\"Language-Team: fr <fr@li.org>\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1)\\n\"\n\n#: template.html:3\n# Note: Intentional: variable name is translated.\nmsgid \"My name is %(person)s.\"\nmsgstr \"Mon nom est %(personne)s.\"\n\n#: template.html:3\n# Note: Intentional: the variable name is badly formatted (missing 's' at the end)\nmsgid \"My other name is %(person)s.\"\nmsgstr \"Mon autre nom est %(person).\""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/i18n/patterns/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/i18n/patterns/locale/en/LC_MESSAGES/django.po",
    "content": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same license as the PACKAGE package.\n# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: PACKAGE VERSION\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2011-06-15 11:33+0200\\n\"\n\"PO-Revision-Date: 2011-06-14 16:16+0100\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: LANGUAGE <LL@li.org>\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: \\n\"\n\n#: urls/default.py:11\nmsgid \"^translated/$\"\nmsgstr \"^translated/$\"\n\n#: urls/default.py:12\nmsgid \"^translated/(?P<slug>[\\\\w-]+)/$\"\nmsgstr \"^translated/(?P<slug>[\\\\w-]+)/$\"\n\n#: urls/default.py:17\nmsgid \"^users/$\"\nmsgstr \"^users/$\"\n\n#: urls/default.py:18 urls/wrong.py:7\nmsgid \"^account/\"\nmsgstr \"^account/\"\n\n#: urls/namespace.py:9 urls/wrong_namespace.py:10\nmsgid \"^register/$\"\nmsgstr \"^register/$\"\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/i18n/patterns/locale/nl/LC_MESSAGES/django.po",
    "content": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same license as the PACKAGE package.\n# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: PACKAGE VERSION\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2011-06-15 11:33+0200\\n\"\n\"PO-Revision-Date: 2011-06-14 16:16+0100\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: LANGUAGE <LL@li.org>\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: \\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1)\\n\"\n\n#: urls/default.py:11\nmsgid \"^translated/$\"\nmsgstr \"^vertaald/$\"\n\n#: urls/default.py:12\nmsgid \"^translated/(?P<slug>[\\\\w-]+)/$\"\nmsgstr \"^vertaald/(?P<slug>[\\\\w-]+)/$\"\n\n#: urls/default.py:17\nmsgid \"^users/$\"\nmsgstr \"^gebruikers/$\"\n\n#: urls/default.py:18 urls/wrong.py:7\nmsgid \"^account/\"\nmsgstr \"^profiel/\"\n\n#: urls/namespace.py:9 urls/wrong_namespace.py:10\nmsgid \"^register/$\"\nmsgstr \"^registeren/$\"\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/i18n/patterns/locale/pt_BR/LC_MESSAGES/django.po",
    "content": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same license as the PACKAGE package.\n# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: PACKAGE VERSION\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2011-06-15 11:34+0200\\n\"\n\"PO-Revision-Date: 2011-06-14 16:17+0100\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: LANGUAGE <LL@li.org>\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: \\n\"\n\"Plural-Forms: nplurals=2; plural=(n > 1)\\n\"\n\n#: urls/default.py:11\nmsgid \"^translated/$\"\nmsgstr \"^traduzidos/$\"\n\n#: urls/default.py:12\nmsgid \"^translated/(?P<slug>[\\\\w-]+)/$\"\nmsgstr \"^traduzidos/(?P<slug>[\\\\w-]+)/$\"\n\n#: urls/default.py:17\nmsgid \"^users/$\"\nmsgstr \"^usuarios/$\"\n\n#: urls/default.py:18 urls/wrong.py:7\nmsgid \"^account/\"\nmsgstr \"^conta/\"\n\n#: urls/namespace.py:9 urls/wrong_namespace.py:10\nmsgid \"^register/$\"\nmsgstr \"^registre-se/$\"\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/i18n/patterns/templates/404.html",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/i18n/patterns/templates/dummy.html",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/i18n/patterns/tests.py",
    "content": "from __future__ import unicode_literals\n\nimport os\n\nfrom django.core.exceptions import ImproperlyConfigured\nfrom django.core.urlresolvers import reverse, clear_url_caches\nfrom django.test import TestCase\nfrom django.test.utils import override_settings\nfrom django.template import Template, Context\nfrom django.utils._os import upath\nfrom django.utils import translation\n\n\n@override_settings(\n    USE_I18N=True,\n    LOCALE_PATHS=(\n        os.path.join(os.path.dirname(upath(__file__)), 'locale'),\n    ),\n    TEMPLATE_DIRS=(\n        os.path.join(os.path.dirname(upath(__file__)), 'templates'),\n    ),\n    LANGUAGE_CODE='en',\n    LANGUAGES=(\n        ('nl', 'Dutch'),\n        ('en', 'English'),\n        ('pt-br', 'Brazilian Portuguese'),\n    ),\n    MIDDLEWARE_CLASSES=(\n        'django.middleware.locale.LocaleMiddleware',\n        'django.middleware.common.CommonMiddleware',\n    ),\n)\nclass URLTestCaseBase(TestCase):\n    \"\"\"\n    TestCase base-class for the URL tests.\n    \"\"\"\n    urls = 'regressiontests.i18n.patterns.urls.default'\n\n    def setUp(self):\n        # Make sure the cache is empty before we are doing our tests.\n        clear_url_caches()\n\n    def tearDown(self):\n        # Make sure we will leave an empty cache for other testcases.\n        clear_url_caches()\n\n\nclass URLPrefixTests(URLTestCaseBase):\n    \"\"\"\n    Tests if the `i18n_patterns` is adding the prefix correctly.\n    \"\"\"\n    def test_not_prefixed(self):\n        with translation.override('en'):\n            self.assertEqual(reverse('not-prefixed'), '/not-prefixed/')\n        with translation.override('nl'):\n            self.assertEqual(reverse('not-prefixed'), '/not-prefixed/')\n\n    def test_prefixed(self):\n        with translation.override('en'):\n            self.assertEqual(reverse('prefixed'), '/en/prefixed/')\n        with translation.override('nl'):\n            self.assertEqual(reverse('prefixed'), '/nl/prefixed/')\n\n    @override_settings(ROOT_URLCONF='regressiontests.i18n.patterns.urls.wrong')\n    def test_invalid_prefix_use(self):\n        self.assertRaises(ImproperlyConfigured, lambda: reverse('account:register'))\n\n\nclass URLDisabledTests(URLTestCaseBase):\n    urls = 'regressiontests.i18n.patterns.urls.disabled'\n\n    @override_settings(USE_I18N=False)\n    def test_prefixed_i18n_disabled(self):\n        with translation.override('en'):\n            self.assertEqual(reverse('prefixed'), '/prefixed/')\n        with translation.override('nl'):\n            self.assertEqual(reverse('prefixed'), '/prefixed/')\n\n\nclass PathUnusedTests(URLTestCaseBase):\n    \"\"\"\n    Check that if no i18n_patterns is used in root urlconfs, then no\n    language activation happens based on url prefix.\n    \"\"\"\n    urls = 'regressiontests.i18n.patterns.urls.path_unused'\n\n    def test_no_lang_activate(self):\n        response = self.client.get('/nl/foo/')\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response['content-language'], 'en')\n        self.assertEqual(response.context['LANGUAGE_CODE'], 'en')\n\n\nclass URLTranslationTests(URLTestCaseBase):\n    \"\"\"\n    Tests if the pattern-strings are translated correctly (within the\n    `i18n_patterns` and the normal `patterns` function).\n    \"\"\"\n    def test_no_prefix_translated(self):\n        with translation.override('en'):\n            self.assertEqual(reverse('no-prefix-translated'), '/translated/')\n            self.assertEqual(reverse('no-prefix-translated-slug', kwargs={'slug': 'yeah'}), '/translated/yeah/')\n\n        with translation.override('nl'):\n            self.assertEqual(reverse('no-prefix-translated'), '/vertaald/')\n            self.assertEqual(reverse('no-prefix-translated-slug', kwargs={'slug': 'yeah'}), '/vertaald/yeah/')\n\n        with translation.override('pt-br'):\n            self.assertEqual(reverse('no-prefix-translated'), '/traduzidos/')\n            self.assertEqual(reverse('no-prefix-translated-slug', kwargs={'slug': 'yeah'}), '/traduzidos/yeah/')\n\n    def test_users_url(self):\n        with translation.override('en'):\n            self.assertEqual(reverse('users'), '/en/users/')\n\n        with translation.override('nl'):\n            self.assertEqual(reverse('users'), '/nl/gebruikers/')\n            self.assertEqual(reverse('prefixed_xml'), '/nl/prefixed.xml')\n\n        with translation.override('pt-br'):\n            self.assertEqual(reverse('users'), '/pt-br/usuarios/')\n\n\nclass URLNamespaceTests(URLTestCaseBase):\n    \"\"\"\n    Tests if the translations are still working within namespaces.\n    \"\"\"\n    def test_account_register(self):\n        with translation.override('en'):\n            self.assertEqual(reverse('account:register'), '/en/account/register/')\n\n        with translation.override('nl'):\n            self.assertEqual(reverse('account:register'), '/nl/profiel/registeren/')\n\n\nclass URLRedirectTests(URLTestCaseBase):\n    \"\"\"\n    Tests if the user gets redirected to the right URL when there is no\n    language-prefix in the request URL.\n    \"\"\"\n    def test_no_prefix_response(self):\n        response = self.client.get('/not-prefixed/')\n        self.assertEqual(response.status_code, 200)\n\n    def test_en_redirect(self):\n        response = self.client.get('/account/register/', HTTP_ACCEPT_LANGUAGE='en')\n        self.assertRedirects(response, '/en/account/register/')\n\n        response = self.client.get(response['location'])\n        self.assertEqual(response.status_code, 200)\n\n    def test_en_redirect_wrong_url(self):\n        response = self.client.get('/profiel/registeren/', HTTP_ACCEPT_LANGUAGE='en')\n        self.assertEqual(response.status_code, 404)\n\n    def test_nl_redirect(self):\n        response = self.client.get('/profiel/registeren/', HTTP_ACCEPT_LANGUAGE='nl')\n        self.assertRedirects(response, '/nl/profiel/registeren/')\n\n        response = self.client.get(response['location'])\n        self.assertEqual(response.status_code, 200)\n\n    def test_nl_redirect_wrong_url(self):\n        response = self.client.get('/account/register/', HTTP_ACCEPT_LANGUAGE='nl')\n        self.assertEqual(response.status_code, 404)\n\n    def test_pt_br_redirect(self):\n        response = self.client.get('/conta/registre-se/', HTTP_ACCEPT_LANGUAGE='pt-br')\n        self.assertRedirects(response, '/pt-br/conta/registre-se/')\n\n        response = self.client.get(response['location'])\n        self.assertEqual(response.status_code, 200)\n\n\nclass URLRedirectWithoutTrailingSlashTests(URLTestCaseBase):\n    \"\"\"\n    Tests the redirect when the requested URL doesn't end with a slash\n    (`settings.APPEND_SLASH=True`).\n    \"\"\"\n    def test_not_prefixed_redirect(self):\n        response = self.client.get('/not-prefixed', HTTP_ACCEPT_LANGUAGE='en')\n        self.assertRedirects(response, '/not-prefixed/', 301)\n\n    def test_en_redirect(self):\n        response = self.client.get('/account/register', HTTP_ACCEPT_LANGUAGE='en', follow=True)\n        # target status code of 301 because of CommonMiddleware redirecting\n        self.assertIn(('http://testserver/en/account/register/', 301), response.redirect_chain)\n        self.assertRedirects(response, '/en/account/register/', 302)\n\n        response = self.client.get('/prefixed.xml', HTTP_ACCEPT_LANGUAGE='en', follow=True)\n        self.assertRedirects(response, '/en/prefixed.xml', 302)\n\n\nclass URLRedirectWithoutTrailingSlashSettingTests(URLTestCaseBase):\n    \"\"\"\n    Tests the redirect when the requested URL doesn't end with a slash\n    (`settings.APPEND_SLASH=False`).\n    \"\"\"\n    @override_settings(APPEND_SLASH=False)\n    def test_not_prefixed_redirect(self):\n        response = self.client.get('/not-prefixed', HTTP_ACCEPT_LANGUAGE='en')\n        self.assertEqual(response.status_code, 404)\n\n    @override_settings(APPEND_SLASH=False)\n    def test_en_redirect(self):\n        response = self.client.get('/account/register-without-slash', HTTP_ACCEPT_LANGUAGE='en')\n        self.assertRedirects(response, '/en/account/register-without-slash', 302)\n\n        response = self.client.get(response['location'])\n        self.assertEqual(response.status_code, 200)\n\n\nclass URLResponseTests(URLTestCaseBase):\n    \"\"\"\n    Tests if the response has the right language-code.\n    \"\"\"\n    def test_not_prefixed_with_prefix(self):\n        response = self.client.get('/en/not-prefixed/')\n        self.assertEqual(response.status_code, 404)\n\n    def test_en_url(self):\n        response = self.client.get('/en/account/register/')\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response['content-language'], 'en')\n        self.assertEqual(response.context['LANGUAGE_CODE'], 'en')\n\n    def test_nl_url(self):\n        response = self.client.get('/nl/profiel/registeren/')\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response['content-language'], 'nl')\n        self.assertEqual(response.context['LANGUAGE_CODE'], 'nl')\n\n    def test_wrong_en_prefix(self):\n        response = self.client.get('/en/profiel/registeren/')\n        self.assertEqual(response.status_code, 404)\n\n    def test_wrong_nl_prefix(self):\n        response = self.client.get('/nl/account/register/')\n        self.assertEqual(response.status_code, 404)\n\n    def test_pt_br_url(self):\n        response = self.client.get('/pt-br/conta/registre-se/')\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response['content-language'], 'pt-br')\n        self.assertEqual(response.context['LANGUAGE_CODE'], 'pt-br')\n\n\nclass URLTagTests(URLTestCaseBase):\n    \"\"\"\n    Test if the language tag works.\n    \"\"\"\n    def test_strings_only(self):\n        t = Template(\"\"\"{% load i18n %}\n            {% language 'nl' %}{% url 'no-prefix-translated' %}{% endlanguage %}\n            {% language 'pt-br' %}{% url 'no-prefix-translated' %}{% endlanguage %}\"\"\")\n        self.assertEqual(t.render(Context({})).strip().split(),\n                         ['/vertaald/', '/traduzidos/'])\n\n    def test_context(self):\n        ctx = Context({'lang1':'nl', 'lang2':'pt-br'})\n        tpl = Template(\"\"\"{% load i18n %}\n            {% language lang1 %}{% url 'no-prefix-translated' %}{% endlanguage %}\n            {% language lang2 %}{% url 'no-prefix-translated' %}{% endlanguage %}\"\"\")\n        self.assertEqual(tpl.render(ctx).strip().split(),\n                         ['/vertaald/', '/traduzidos/'])\n\n    def test_args(self):\n        tpl = Template(\"\"\"{% load i18n %}\n            {% language 'nl' %}{% url 'no-prefix-translated-slug' 'apo' %}{% endlanguage %}\n            {% language 'pt-br' %}{% url 'no-prefix-translated-slug' 'apo' %}{% endlanguage %}\"\"\")\n        self.assertEqual(tpl.render(Context({})).strip().split(),\n                         ['/vertaald/apo/', '/traduzidos/apo/'])\n\n    def test_kwargs(self):\n        tpl = Template(\"\"\"{% load i18n %}\n            {% language 'nl'  %}{% url 'no-prefix-translated-slug' slug='apo' %}{% endlanguage %}\n            {% language 'pt-br' %}{% url 'no-prefix-translated-slug' slug='apo' %}{% endlanguage %}\"\"\")\n        self.assertEqual(tpl.render(Context({})).strip().split(),\n                         ['/vertaald/apo/', '/traduzidos/apo/'])\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/i18n/patterns/urls/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/i18n/patterns/urls/default.py",
    "content": "from django.conf.urls import patterns, include, url\nfrom django.conf.urls.i18n import i18n_patterns\nfrom django.utils.translation import ugettext_lazy as _\nfrom django.views.generic import TemplateView\n\n\nview = TemplateView.as_view(template_name='dummy.html')\n\nurlpatterns = patterns('',\n    url(r'^not-prefixed/$', view, name='not-prefixed'),\n    url(_(r'^translated/$'), view, name='no-prefix-translated'),\n    url(_(r'^translated/(?P<slug>[\\w-]+)/$'), view, name='no-prefix-translated-slug'),\n)\n\nurlpatterns += i18n_patterns('',\n    url(r'^prefixed/$', view, name='prefixed'),\n    url(r'^prefixed\\.xml$', view, name='prefixed_xml'),\n    url(_(r'^users/$'), view, name='users'),\n    url(_(r'^account/'), include('regressiontests.i18n.patterns.urls.namespace', namespace='account')),\n)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/i18n/patterns/urls/disabled.py",
    "content": "from django.conf.urls import url\nfrom django.conf.urls.i18n import i18n_patterns\nfrom django.views.generic import TemplateView\n\nview = TemplateView.as_view(template_name='dummy.html')\n\nurlpatterns = i18n_patterns('',\n    url(r'^prefixed/$', view, name='prefixed'),\n)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/i18n/patterns/urls/namespace.py",
    "content": "from django.conf.urls import patterns, url\nfrom django.utils.translation import ugettext_lazy as _\nfrom django.views.generic import TemplateView\n\n\nview = TemplateView.as_view(template_name='dummy.html')\n\nurlpatterns = patterns('',\n    url(_(r'^register/$'), view, name='register'),\n    url(_(r'^register-without-slash$'), view, name='register-without-slash'),\n)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/i18n/patterns/urls/path_unused.py",
    "content": "from django.conf.urls import url\nfrom django.conf.urls import patterns\nfrom django.views.generic import TemplateView\n\n\nview = TemplateView.as_view(template_name='dummy.html')\n\nurlpatterns = patterns('',\n    url(r'^nl/foo/', view, name='not-translated'),\n)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/i18n/patterns/urls/wrong.py",
    "content": "from django.conf.urls import include, url\nfrom django.conf.urls.i18n import i18n_patterns\nfrom django.utils.translation import ugettext_lazy as _\n\n\nurlpatterns = i18n_patterns('',\n    url(_(r'^account/'), include('regressiontests.i18n.patterns.urls.wrong_namespace', namespace='account')),\n)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/i18n/patterns/urls/wrong_namespace.py",
    "content": "from django.conf.urls import url\nfrom django.conf.urls.i18n import i18n_patterns\nfrom django.utils.translation import ugettext_lazy as _\nfrom django.views.generic import TemplateView\n\n\nview = TemplateView.as_view(template_name='dummy.html')\n\nurlpatterns = i18n_patterns('',\n    url(_(r'^register/$'), view, name='register'),\n)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/i18n/resolution/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/i18n/resolution/locale/de/LC_MESSAGES/django.po",
    "content": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same license as the PACKAGE package.\n# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: django tests\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2010-02-14 17:33+0100\\n\"\n\"PO-Revision-Date: 2011-02-07 13:12-0300\\n\"\n\"Last-Translator: FULL NAME <EMAIL@ADDRESS>\\n\"\n\"Language-Team: LANGUAGE <LL@li.org>\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1)\\n\"\n\n#: models.py:3\nmsgid \"Time\"\nmsgstr \"Zeit (APP)\"\n\n#: models.py:5\nmsgid \"Date/time\"\nmsgstr \"Datum/Zeit (APP)\"\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/i18n/resolution/models.py",
    "content": "#"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/i18n/tests.py",
    "content": "# -*- encoding: utf-8 -*-\nfrom __future__ import absolute_import, unicode_literals\n\nimport datetime\nimport decimal\nimport os\nimport pickle\nfrom threading import local\n\nfrom django.conf import settings\nfrom django.template import Template, Context\nfrom django.template.base import TemplateSyntaxError\nfrom django.test import TestCase, RequestFactory\nfrom django.test.utils import override_settings\nfrom django.utils import translation\nfrom django.utils.formats import (get_format, date_format, time_format,\n    localize, localize_input, iter_format_modules, get_format_modules,\n    number_format)\nfrom django.utils.importlib import import_module\nfrom django.utils.numberformat import format as nformat\nfrom django.utils._os import upath\nfrom django.utils.safestring import mark_safe, SafeBytes, SafeString, SafeText\nfrom django.utils import six\nfrom django.utils.six import PY3\nfrom django.utils.translation import (ugettext, ugettext_lazy, activate,\n    deactivate, gettext_lazy, pgettext, npgettext, to_locale,\n    get_language_info, get_language, get_language_from_request, trans_real)\n\n\nfrom .commands.tests import can_run_extraction_tests, can_run_compilation_tests\nif can_run_extraction_tests:\n    from .commands.extraction import (ExtractorTests, BasicExtractorTests,\n        JavascriptExtractorTests, IgnoredExtractorTests, SymlinkExtractorTests,\n        CopyPluralFormsExtractorTests, NoWrapExtractorTests,\n        NoLocationExtractorTests)\nif can_run_compilation_tests:\n    from .commands.compilation import (PoFileTests, PoFileContentsTests,\n        PercentRenderingTests)\nfrom .contenttypes.tests import ContentTypeTests\nfrom .forms import I18nForm, SelectDateForm, SelectDateWidget, CompanyForm\nfrom .models import Company, TestModel\nfrom .patterns.tests import (URLRedirectWithoutTrailingSlashTests,\n    URLTranslationTests, URLDisabledTests, URLTagTests, URLTestCaseBase,\n    URLRedirectWithoutTrailingSlashSettingTests, URLNamespaceTests,\n    URLPrefixTests, URLResponseTests, URLRedirectTests, PathUnusedTests)\n\n\nhere = os.path.dirname(os.path.abspath(upath(__file__)))\nextended_locale_paths = settings.LOCALE_PATHS + (\n    os.path.join(here, 'other', 'locale'),\n)\n\nclass TranslationTests(TestCase):\n\n    def test_override(self):\n        activate('de')\n        with translation.override('pl'):\n            self.assertEqual(get_language(), 'pl')\n        self.assertEqual(get_language(), 'de')\n        with translation.override(None):\n            self.assertEqual(get_language(), settings.LANGUAGE_CODE)\n        self.assertEqual(get_language(), 'de')\n        deactivate()\n\n    def test_lazy_objects(self):\n        \"\"\"\n        Format string interpolation should work with *_lazy objects.\n        \"\"\"\n        s = ugettext_lazy('Add %(name)s')\n        d = {'name': 'Ringo'}\n        self.assertEqual('Add Ringo', s % d)\n        with translation.override('de', deactivate=True):\n            self.assertEqual('Ringo hinzuf\\xfcgen', s % d)\n            with translation.override('pl'):\n                self.assertEqual('Dodaj Ringo', s % d)\n\n        # It should be possible to compare *_lazy objects.\n        s1 = ugettext_lazy('Add %(name)s')\n        self.assertEqual(True, s == s1)\n        s2 = gettext_lazy('Add %(name)s')\n        s3 = gettext_lazy('Add %(name)s')\n        self.assertEqual(True, s2 == s3)\n        self.assertEqual(True, s == s2)\n        s4 = ugettext_lazy('Some other string')\n        self.assertEqual(False, s == s4)\n\n        if not six.PY3:\n            # On Python 2, gettext_lazy should not transform a bytestring to unicode\n            self.assertEqual(gettext_lazy(b\"test\").upper(), b\"TEST\")\n\n    def test_lazy_pickle(self):\n        s1 = ugettext_lazy(\"test\")\n        self.assertEqual(six.text_type(s1), \"test\")\n        s2 = pickle.loads(pickle.dumps(s1))\n        self.assertEqual(six.text_type(s2), \"test\")\n\n    @override_settings(LOCALE_PATHS=extended_locale_paths)\n    def test_pgettext(self):\n        trans_real._active = local()\n        trans_real._translations = {}\n        with translation.override('de'):\n            self.assertEqual(pgettext(\"unexisting\", \"May\"), \"May\")\n            self.assertEqual(pgettext(\"month name\", \"May\"), \"Mai\")\n            self.assertEqual(pgettext(\"verb\", \"May\"), \"Kann\")\n            self.assertEqual(npgettext(\"search\", \"%d result\", \"%d results\", 4) % 4, \"4 Resultate\")\n\n    @override_settings(LOCALE_PATHS=extended_locale_paths)\n    def test_template_tags_pgettext(self):\n        \"\"\"\n        Ensure that message contexts are taken into account the {% trans %} and\n        {% blocktrans %} template tags.\n        Refs #14806.\n        \"\"\"\n        trans_real._active = local()\n        trans_real._translations = {}\n        with translation.override('de'):\n\n            # {% trans %} -----------------------------------\n\n            # Inexisting context...\n            t = Template('{% load i18n %}{% trans \"May\" context \"unexisting\" %}')\n            rendered = t.render(Context())\n            self.assertEqual(rendered, 'May')\n\n            # Existing context...\n            # Using a literal\n            t = Template('{% load i18n %}{% trans \"May\" context \"month name\" %}')\n            rendered = t.render(Context())\n            self.assertEqual(rendered, 'Mai')\n            t = Template('{% load i18n %}{% trans \"May\" context \"verb\" %}')\n            rendered = t.render(Context())\n            self.assertEqual(rendered, 'Kann')\n\n            # Using a variable\n            t = Template('{% load i18n %}{% trans \"May\" context message_context %}')\n            rendered = t.render(Context({'message_context': 'month name'}))\n            self.assertEqual(rendered, 'Mai')\n            t = Template('{% load i18n %}{% trans \"May\" context message_context %}')\n            rendered = t.render(Context({'message_context': 'verb'}))\n            self.assertEqual(rendered, 'Kann')\n\n            # Using a filter\n            t = Template('{% load i18n %}{% trans \"May\" context message_context|lower %}')\n            rendered = t.render(Context({'message_context': 'MONTH NAME'}))\n            self.assertEqual(rendered, 'Mai')\n            t = Template('{% load i18n %}{% trans \"May\" context message_context|lower %}')\n            rendered = t.render(Context({'message_context': 'VERB'}))\n            self.assertEqual(rendered, 'Kann')\n\n            # Using 'as'\n            t = Template('{% load i18n %}{% trans \"May\" context \"month name\" as var %}Value: {{ var }}')\n            rendered = t.render(Context())\n            self.assertEqual(rendered, 'Value: Mai')\n            t = Template('{% load i18n %}{% trans \"May\" as var context \"verb\" %}Value: {{ var }}')\n            rendered = t.render(Context())\n            self.assertEqual(rendered, 'Value: Kann')\n\n            # Mis-uses\n            self.assertRaises(TemplateSyntaxError, Template, '{% load i18n %}{% trans \"May\" context as var %}{{ var }}')\n            self.assertRaises(TemplateSyntaxError, Template, '{% load i18n %}{% trans \"May\" as var context %}{{ var }}')\n\n            # {% blocktrans %} ------------------------------\n\n            # Inexisting context...\n            t = Template('{% load i18n %}{% blocktrans context \"unexisting\" %}May{% endblocktrans %}')\n            rendered = t.render(Context())\n            self.assertEqual(rendered, 'May')\n\n            # Existing context...\n            # Using a literal\n            t = Template('{% load i18n %}{% blocktrans context \"month name\" %}May{% endblocktrans %}')\n            rendered = t.render(Context())\n            self.assertEqual(rendered, 'Mai')\n            t = Template('{% load i18n %}{% blocktrans context \"verb\" %}May{% endblocktrans %}')\n            rendered = t.render(Context())\n            self.assertEqual(rendered, 'Kann')\n\n            # Using a variable\n            t = Template('{% load i18n %}{% blocktrans context message_context %}May{% endblocktrans %}')\n            rendered = t.render(Context({'message_context': 'month name'}))\n            self.assertEqual(rendered, 'Mai')\n            t = Template('{% load i18n %}{% blocktrans context message_context %}May{% endblocktrans %}')\n            rendered = t.render(Context({'message_context': 'verb'}))\n            self.assertEqual(rendered, 'Kann')\n\n            # Using a filter\n            t = Template('{% load i18n %}{% blocktrans context message_context|lower %}May{% endblocktrans %}')\n            rendered = t.render(Context({'message_context': 'MONTH NAME'}))\n            self.assertEqual(rendered, 'Mai')\n            t = Template('{% load i18n %}{% blocktrans context message_context|lower %}May{% endblocktrans %}')\n            rendered = t.render(Context({'message_context': 'VERB'}))\n            self.assertEqual(rendered, 'Kann')\n\n            # Using 'count'\n            t = Template('{% load i18n %}{% blocktrans count number=1 context \"super search\" %}{{ number }} super result{% plural %}{{ number }} super results{% endblocktrans %}')\n            rendered = t.render(Context())\n            self.assertEqual(rendered, '1 Super-Ergebnis')\n            t = Template('{% load i18n %}{% blocktrans count number=2 context \"super search\" %}{{ number }} super result{% plural %}{{ number }} super results{% endblocktrans %}')\n            rendered = t.render(Context())\n            self.assertEqual(rendered, '2 Super-Ergebnisse')\n            t = Template('{% load i18n %}{% blocktrans context \"other super search\" count number=1 %}{{ number }} super result{% plural %}{{ number }} super results{% endblocktrans %}')\n            rendered = t.render(Context())\n            self.assertEqual(rendered, '1 anderen Super-Ergebnis')\n            t = Template('{% load i18n %}{% blocktrans context \"other super search\" count number=2 %}{{ number }} super result{% plural %}{{ number }} super results{% endblocktrans %}')\n            rendered = t.render(Context())\n            self.assertEqual(rendered, '2 andere Super-Ergebnisse')\n\n            # Using 'with'\n            t = Template('{% load i18n %}{% blocktrans with num_comments=5 context \"comment count\" %}There are {{ num_comments }} comments{% endblocktrans %}')\n            rendered = t.render(Context())\n            self.assertEqual(rendered, 'Es gibt 5 Kommentare')\n            t = Template('{% load i18n %}{% blocktrans with num_comments=5 context \"other comment count\" %}There are {{ num_comments }} comments{% endblocktrans %}')\n            rendered = t.render(Context())\n            self.assertEqual(rendered, 'Andere: Es gibt 5 Kommentare')\n\n            # Mis-uses\n            self.assertRaises(TemplateSyntaxError, Template, '{% load i18n %}{% blocktrans context with month=\"May\" %}{{ month }}{% endblocktrans %}')\n            self.assertRaises(TemplateSyntaxError, Template, '{% load i18n %}{% blocktrans context %}{% endblocktrans %}')\n            self.assertRaises(TemplateSyntaxError, Template, '{% load i18n %}{% blocktrans count number=2 context %}{{ number }} super result{% plural %}{{ number }} super results{% endblocktrans %}')\n\n\n    def test_string_concat(self):\n        \"\"\"\n        six.text_type(string_concat(...)) should not raise a TypeError - #4796\n        \"\"\"\n        import django.utils.translation\n        self.assertEqual('django', six.text_type(django.utils.translation.string_concat(\"dja\", \"ngo\")))\n\n    def test_safe_status(self):\n        \"\"\"\n        Translating a string requiring no auto-escaping shouldn't change the \"safe\" status.\n        \"\"\"\n        s = mark_safe(str('Password'))\n        self.assertEqual(SafeString, type(s))\n        with translation.override('de', deactivate=True):\n            self.assertEqual(SafeText, type(ugettext(s)))\n        self.assertEqual('aPassword', SafeText('a') + s)\n        self.assertEqual('Passworda', s + SafeText('a'))\n        self.assertEqual('Passworda', s + mark_safe('a'))\n        self.assertEqual('aPassword', mark_safe('a') + s)\n        self.assertEqual('as', mark_safe('a') + mark_safe('s'))\n\n    def test_maclines(self):\n        \"\"\"\n        Translations on files with mac or dos end of lines will be converted\n        to unix eof in .po catalogs, and they have to match when retrieved\n        \"\"\"\n        ca_translation = trans_real.translation('ca')\n        ca_translation._catalog['Mac\\nEOF\\n'] = 'Catalan Mac\\nEOF\\n'\n        ca_translation._catalog['Win\\nEOF\\n'] = 'Catalan Win\\nEOF\\n'\n        with translation.override('ca', deactivate=True):\n            self.assertEqual('Catalan Mac\\nEOF\\n', ugettext('Mac\\rEOF\\r'))\n            self.assertEqual('Catalan Win\\nEOF\\n', ugettext('Win\\r\\nEOF\\r\\n'))\n\n    def test_to_locale(self):\n        \"\"\"\n        Tests the to_locale function and the special case of Serbian Latin\n        (refs #12230 and r11299)\n        \"\"\"\n        self.assertEqual(to_locale('en-us'), 'en_US')\n        self.assertEqual(to_locale('sr-lat'), 'sr_Lat')\n\n    def test_to_language(self):\n        \"\"\"\n        Test the to_language function\n        \"\"\"\n        self.assertEqual(trans_real.to_language('en_US'), 'en-us')\n        self.assertEqual(trans_real.to_language('sr_Lat'), 'sr-lat')\n\n    @override_settings(LOCALE_PATHS=(os.path.join(here, 'other', 'locale'),))\n    def test_bad_placeholder_1(self):\n        \"\"\"\n        Error in translation file should not crash template rendering\n        (%(person)s is translated as %(personne)s in fr.po)\n        Refs #16516.\n        \"\"\"\n        with translation.override('fr'):\n            t = Template('{% load i18n %}{% blocktrans %}My name is {{ person }}.{% endblocktrans %}')\n            rendered = t.render(Context({'person': 'James'}))\n            self.assertEqual(rendered, 'My name is James.')\n\n    @override_settings(LOCALE_PATHS=(os.path.join(here, 'other', 'locale'),))\n    def test_bad_placeholder_2(self):\n        \"\"\"\n        Error in translation file should not crash template rendering\n        (%(person) misses a 's' in fr.po, causing the string formatting to fail)\n        Refs #18393.\n        \"\"\"\n        with translation.override('fr'):\n            t = Template('{% load i18n %}{% blocktrans %}My other name is {{ person }}.{% endblocktrans %}')\n            rendered = t.render(Context({'person': 'James'}))\n            self.assertEqual(rendered, 'My other name is James.')\n\n\nclass FormattingTests(TestCase):\n\n    def setUp(self):\n        self.use_i18n = settings.USE_I18N\n        self.use_l10n = settings.USE_L10N\n        self.use_thousand_separator = settings.USE_THOUSAND_SEPARATOR\n        self.thousand_separator = settings.THOUSAND_SEPARATOR\n        self.number_grouping = settings.NUMBER_GROUPING\n        self.n = decimal.Decimal('66666.666')\n        self.f = 99999.999\n        self.d = datetime.date(2009, 12, 31)\n        self.dt = datetime.datetime(2009, 12, 31, 20, 50)\n        self.t = datetime.time(10, 15, 48)\n        self.l = 10000 if PY3 else long(10000)\n        self.ctxt = Context({\n            'n': self.n,\n            't': self.t,\n            'd': self.d,\n            'dt': self.dt,\n            'f': self.f,\n            'l': self.l,\n        })\n\n    def tearDown(self):\n        # Restore defaults\n        settings.USE_I18N = self.use_i18n\n        settings.USE_L10N = self.use_l10n\n        settings.USE_THOUSAND_SEPARATOR = self.use_thousand_separator\n        settings.THOUSAND_SEPARATOR = self.thousand_separator\n        settings.NUMBER_GROUPING = self.number_grouping\n\n    def test_locale_independent(self):\n        \"\"\"\n        Localization of numbers\n        \"\"\"\n        with self.settings(USE_L10N=True, USE_THOUSAND_SEPARATOR=False):\n            self.assertEqual('66666.66', nformat(self.n, decimal_sep='.', decimal_pos=2, grouping=3, thousand_sep=','))\n            self.assertEqual('66666A6', nformat(self.n, decimal_sep='A', decimal_pos=1, grouping=1, thousand_sep='B'))\n            self.assertEqual('66666', nformat(self.n, decimal_sep='X', decimal_pos=0, grouping=1, thousand_sep='Y'))\n\n        with self.settings(USE_L10N=True, USE_THOUSAND_SEPARATOR=True):\n            self.assertEqual('66,666.66', nformat(self.n, decimal_sep='.', decimal_pos=2, grouping=3, thousand_sep=','))\n            self.assertEqual('6B6B6B6B6A6', nformat(self.n, decimal_sep='A', decimal_pos=1, grouping=1, thousand_sep='B'))\n            self.assertEqual('-66666.6', nformat(-66666.666, decimal_sep='.', decimal_pos=1))\n            self.assertEqual('-66666.0', nformat(int('-66666'), decimal_sep='.', decimal_pos=1))\n            self.assertEqual('10000.0', nformat(self.l, decimal_sep='.', decimal_pos=1))\n            # This unusual grouping/force_grouping combination may be triggered by the intcomma filter (#17414)\n            self.assertEqual('10000', nformat(self.l, decimal_sep='.', decimal_pos=0, grouping=0, force_grouping=True))\n\n            # date filter\n            self.assertEqual('31.12.2009 в 20:50', Template('{{ dt|date:\"d.m.Y в H:i\" }}').render(self.ctxt))\n            self.assertEqual('⌚ 10:15', Template('{{ t|time:\"⌚ H:i\" }}').render(self.ctxt))\n\n    def test_l10n_disabled(self):\n        \"\"\"\n        Catalan locale with format i18n disabled translations will be used,\n        but not formats\n        \"\"\"\n        settings.USE_L10N = False\n        with translation.override('ca', deactivate=True):\n            self.assertEqual('N j, Y', get_format('DATE_FORMAT'))\n            self.assertEqual(0, get_format('FIRST_DAY_OF_WEEK'))\n            self.assertEqual('.', get_format('DECIMAL_SEPARATOR'))\n            self.assertEqual('10:15 a.m.', time_format(self.t))\n            self.assertEqual('des. 31, 2009', date_format(self.d))\n            self.assertEqual('desembre 2009', date_format(self.d, 'YEAR_MONTH_FORMAT'))\n            self.assertEqual('12/31/2009 8:50 p.m.', date_format(self.dt, 'SHORT_DATETIME_FORMAT'))\n            self.assertEqual('No localizable', localize('No localizable'))\n            self.assertEqual('66666.666', localize(self.n))\n            self.assertEqual('99999.999', localize(self.f))\n            self.assertEqual('10000', localize(self.l))\n            self.assertEqual('des. 31, 2009', localize(self.d))\n            self.assertEqual('des. 31, 2009, 8:50 p.m.', localize(self.dt))\n            self.assertEqual('66666.666', Template('{{ n }}').render(self.ctxt))\n            self.assertEqual('99999.999', Template('{{ f }}').render(self.ctxt))\n            self.assertEqual('des. 31, 2009', Template('{{ d }}').render(self.ctxt))\n            self.assertEqual('des. 31, 2009, 8:50 p.m.', Template('{{ dt }}').render(self.ctxt))\n            self.assertEqual('66666.67', Template('{{ n|floatformat:2 }}').render(self.ctxt))\n            self.assertEqual('100000.0', Template('{{ f|floatformat }}').render(self.ctxt))\n            self.assertEqual('10:15 a.m.', Template('{{ t|time:\"TIME_FORMAT\" }}').render(self.ctxt))\n            self.assertEqual('12/31/2009', Template('{{ d|date:\"SHORT_DATE_FORMAT\" }}').render(self.ctxt))\n            self.assertEqual('12/31/2009 8:50 p.m.', Template('{{ dt|date:\"SHORT_DATETIME_FORMAT\" }}').render(self.ctxt))\n\n            form = I18nForm({\n                'decimal_field': '66666,666',\n                'float_field': '99999,999',\n                'date_field': '31/12/2009',\n                'datetime_field': '31/12/2009 20:50',\n                'time_field': '20:50',\n                'integer_field': '1.234',\n            })\n            self.assertEqual(False, form.is_valid())\n            self.assertEqual(['Introdu\\xefu un n\\xfamero.'], form.errors['float_field'])\n            self.assertEqual(['Introdu\\xefu un n\\xfamero.'], form.errors['decimal_field'])\n            self.assertEqual(['Introdu\\xefu una data v\\xe0lida.'], form.errors['date_field'])\n            self.assertEqual(['Introdu\\xefu una data/hora v\\xe0lides.'], form.errors['datetime_field'])\n            self.assertEqual(['Introdu\\xefu un n\\xfamero sencer.'], form.errors['integer_field'])\n\n            form2 = SelectDateForm({\n                'date_field_month': '12',\n                'date_field_day': '31',\n                'date_field_year': '2009'\n            })\n            self.assertEqual(True, form2.is_valid())\n            self.assertEqual(datetime.date(2009, 12, 31), form2.cleaned_data['date_field'])\n            self.assertHTMLEqual(\n                '<select name=\"mydate_month\" id=\"id_mydate_month\">\\n<option value=\"1\">gener</option>\\n<option value=\"2\">febrer</option>\\n<option value=\"3\">mar\\xe7</option>\\n<option value=\"4\">abril</option>\\n<option value=\"5\">maig</option>\\n<option value=\"6\">juny</option>\\n<option value=\"7\">juliol</option>\\n<option value=\"8\">agost</option>\\n<option value=\"9\">setembre</option>\\n<option value=\"10\">octubre</option>\\n<option value=\"11\">novembre</option>\\n<option value=\"12\" selected=\"selected\">desembre</option>\\n</select>\\n<select name=\"mydate_day\" id=\"id_mydate_day\">\\n<option value=\"1\">1</option>\\n<option value=\"2\">2</option>\\n<option value=\"3\">3</option>\\n<option value=\"4\">4</option>\\n<option value=\"5\">5</option>\\n<option value=\"6\">6</option>\\n<option value=\"7\">7</option>\\n<option value=\"8\">8</option>\\n<option value=\"9\">9</option>\\n<option value=\"10\">10</option>\\n<option value=\"11\">11</option>\\n<option value=\"12\">12</option>\\n<option value=\"13\">13</option>\\n<option value=\"14\">14</option>\\n<option value=\"15\">15</option>\\n<option value=\"16\">16</option>\\n<option value=\"17\">17</option>\\n<option value=\"18\">18</option>\\n<option value=\"19\">19</option>\\n<option value=\"20\">20</option>\\n<option value=\"21\">21</option>\\n<option value=\"22\">22</option>\\n<option value=\"23\">23</option>\\n<option value=\"24\">24</option>\\n<option value=\"25\">25</option>\\n<option value=\"26\">26</option>\\n<option value=\"27\">27</option>\\n<option value=\"28\">28</option>\\n<option value=\"29\">29</option>\\n<option value=\"30\">30</option>\\n<option value=\"31\" selected=\"selected\">31</option>\\n</select>\\n<select name=\"mydate_year\" id=\"id_mydate_year\">\\n<option value=\"2009\" selected=\"selected\">2009</option>\\n<option value=\"2010\">2010</option>\\n<option value=\"2011\">2011</option>\\n<option value=\"2012\">2012</option>\\n<option value=\"2013\">2013</option>\\n<option value=\"2014\">2014</option>\\n<option value=\"2015\">2015</option>\\n<option value=\"2016\">2016</option>\\n<option value=\"2017\">2017</option>\\n<option value=\"2018\">2018</option>\\n</select>',\n                SelectDateWidget(years=range(2009, 2019)).render('mydate', datetime.date(2009, 12, 31))\n            )\n\n            # We shouldn't change the behavior of the floatformat filter re:\n            # thousand separator and grouping when USE_L10N is False even\n            # if the USE_THOUSAND_SEPARATOR, NUMBER_GROUPING and\n            # THOUSAND_SEPARATOR settings are specified\n            with self.settings(USE_THOUSAND_SEPARATOR=True,\n                    NUMBER_GROUPING=1, THOUSAND_SEPARATOR='!'):\n                self.assertEqual('66666.67', Template('{{ n|floatformat:2 }}').render(self.ctxt))\n                self.assertEqual('100000.0', Template('{{ f|floatformat }}').render(self.ctxt))\n\n    def test_false_like_locale_formats(self):\n        \"\"\"\n        Ensure that the active locale's formats take precedence over the\n        default settings even if they would be interpreted as False in a\n        conditional test (e.g. 0 or empty string).\n        Refs #16938.\n        \"\"\"\n        from django.conf.locale.fr import formats as fr_formats\n\n        # Back up original formats\n        backup_THOUSAND_SEPARATOR = fr_formats.THOUSAND_SEPARATOR\n        backup_FIRST_DAY_OF_WEEK = fr_formats.FIRST_DAY_OF_WEEK\n\n        # Set formats that would get interpreted as False in a conditional test\n        fr_formats.THOUSAND_SEPARATOR = ''\n        fr_formats.FIRST_DAY_OF_WEEK = 0\n\n        with translation.override('fr'):\n            with self.settings(USE_L10N=True, USE_THOUSAND_SEPARATOR=True,\n                               THOUSAND_SEPARATOR='!'):\n                self.assertEqual('', get_format('THOUSAND_SEPARATOR'))\n                # Even a second time (after the format has been cached)...\n                self.assertEqual('', get_format('THOUSAND_SEPARATOR'))\n\n            with self.settings(USE_L10N=True, FIRST_DAY_OF_WEEK=1):\n                self.assertEqual(0, get_format('FIRST_DAY_OF_WEEK'))\n                # Even a second time (after the format has been cached)...\n                self.assertEqual(0, get_format('FIRST_DAY_OF_WEEK'))\n\n        # Restore original formats\n        fr_formats.THOUSAND_SEPARATOR = backup_THOUSAND_SEPARATOR\n        fr_formats.FIRST_DAY_OF_WEEK = backup_FIRST_DAY_OF_WEEK\n\n    def test_l10n_enabled(self):\n        settings.USE_L10N = True\n        # Catalan locale\n        with translation.override('ca', deactivate=True):\n            self.assertEqual('j \\d\\e F \\d\\e Y', get_format('DATE_FORMAT'))\n            self.assertEqual(1, get_format('FIRST_DAY_OF_WEEK'))\n            self.assertEqual(',', get_format('DECIMAL_SEPARATOR'))\n            self.assertEqual('10:15:48', time_format(self.t))\n            self.assertEqual('31 de desembre de 2009', date_format(self.d))\n            self.assertEqual('desembre del 2009', date_format(self.d, 'YEAR_MONTH_FORMAT'))\n            self.assertEqual('31/12/2009 20:50', date_format(self.dt, 'SHORT_DATETIME_FORMAT'))\n            self.assertEqual('No localizable', localize('No localizable'))\n\n            settings.USE_THOUSAND_SEPARATOR = True\n            self.assertEqual('66.666,666', localize(self.n))\n            self.assertEqual('99.999,999', localize(self.f))\n            self.assertEqual('10.000', localize(self.l))\n            self.assertEqual('True', localize(True))\n\n            settings.USE_THOUSAND_SEPARATOR = False\n            self.assertEqual('66666,666', localize(self.n))\n            self.assertEqual('99999,999', localize(self.f))\n            self.assertEqual('10000', localize(self.l))\n            self.assertEqual('31 de desembre de 2009', localize(self.d))\n            self.assertEqual('31 de desembre de 2009 a les 20:50', localize(self.dt))\n\n            settings.USE_THOUSAND_SEPARATOR = True\n            self.assertEqual('66.666,666', Template('{{ n }}').render(self.ctxt))\n            self.assertEqual('99.999,999', Template('{{ f }}').render(self.ctxt))\n            self.assertEqual('10.000', Template('{{ l }}').render(self.ctxt))\n\n            form3 = I18nForm({\n                'decimal_field': '66.666,666',\n                'float_field': '99.999,999',\n                'date_field': '31/12/2009',\n                'datetime_field': '31/12/2009 20:50',\n                'time_field': '20:50',\n                'integer_field': '1.234',\n            })\n            self.assertEqual(True, form3.is_valid())\n            self.assertEqual(decimal.Decimal('66666.666'), form3.cleaned_data['decimal_field'])\n            self.assertEqual(99999.999, form3.cleaned_data['float_field'])\n            self.assertEqual(datetime.date(2009, 12, 31), form3.cleaned_data['date_field'])\n            self.assertEqual(datetime.datetime(2009, 12, 31, 20, 50), form3.cleaned_data['datetime_field'])\n            self.assertEqual(datetime.time(20, 50), form3.cleaned_data['time_field'])\n            self.assertEqual(1234, form3.cleaned_data['integer_field'])\n\n            settings.USE_THOUSAND_SEPARATOR = False\n            self.assertEqual('66666,666', Template('{{ n }}').render(self.ctxt))\n            self.assertEqual('99999,999', Template('{{ f }}').render(self.ctxt))\n            self.assertEqual('31 de desembre de 2009', Template('{{ d }}').render(self.ctxt))\n            self.assertEqual('31 de desembre de 2009 a les 20:50', Template('{{ dt }}').render(self.ctxt))\n            self.assertEqual('66666,67', Template('{{ n|floatformat:2 }}').render(self.ctxt))\n            self.assertEqual('100000,0', Template('{{ f|floatformat }}').render(self.ctxt))\n            self.assertEqual('10:15:48', Template('{{ t|time:\"TIME_FORMAT\" }}').render(self.ctxt))\n            self.assertEqual('31/12/2009', Template('{{ d|date:\"SHORT_DATE_FORMAT\" }}').render(self.ctxt))\n            self.assertEqual('31/12/2009 20:50', Template('{{ dt|date:\"SHORT_DATETIME_FORMAT\" }}').render(self.ctxt))\n            self.assertEqual(date_format(datetime.datetime.now(), \"DATE_FORMAT\"), Template('{% now \"DATE_FORMAT\" %}').render(self.ctxt))\n\n            form4 = I18nForm({\n                'decimal_field': '66666,666',\n                'float_field': '99999,999',\n                'date_field': '31/12/2009',\n                'datetime_field': '31/12/2009 20:50',\n                'time_field': '20:50',\n                'integer_field': '1234',\n            })\n            self.assertEqual(True, form4.is_valid())\n            self.assertEqual(decimal.Decimal('66666.666'), form4.cleaned_data['decimal_field'])\n            self.assertEqual(99999.999, form4.cleaned_data['float_field'])\n            self.assertEqual(datetime.date(2009, 12, 31), form4.cleaned_data['date_field'])\n            self.assertEqual(datetime.datetime(2009, 12, 31, 20, 50), form4.cleaned_data['datetime_field'])\n            self.assertEqual(datetime.time(20, 50), form4.cleaned_data['time_field'])\n            self.assertEqual(1234, form4.cleaned_data['integer_field'])\n\n            form5 = SelectDateForm({\n                'date_field_month': '12',\n                'date_field_day': '31',\n                'date_field_year': '2009'\n            })\n            self.assertEqual(True, form5.is_valid())\n            self.assertEqual(datetime.date(2009, 12, 31), form5.cleaned_data['date_field'])\n            self.assertHTMLEqual(\n                '<select name=\"mydate_day\" id=\"id_mydate_day\">\\n<option value=\"1\">1</option>\\n<option value=\"2\">2</option>\\n<option value=\"3\">3</option>\\n<option value=\"4\">4</option>\\n<option value=\"5\">5</option>\\n<option value=\"6\">6</option>\\n<option value=\"7\">7</option>\\n<option value=\"8\">8</option>\\n<option value=\"9\">9</option>\\n<option value=\"10\">10</option>\\n<option value=\"11\">11</option>\\n<option value=\"12\">12</option>\\n<option value=\"13\">13</option>\\n<option value=\"14\">14</option>\\n<option value=\"15\">15</option>\\n<option value=\"16\">16</option>\\n<option value=\"17\">17</option>\\n<option value=\"18\">18</option>\\n<option value=\"19\">19</option>\\n<option value=\"20\">20</option>\\n<option value=\"21\">21</option>\\n<option value=\"22\">22</option>\\n<option value=\"23\">23</option>\\n<option value=\"24\">24</option>\\n<option value=\"25\">25</option>\\n<option value=\"26\">26</option>\\n<option value=\"27\">27</option>\\n<option value=\"28\">28</option>\\n<option value=\"29\">29</option>\\n<option value=\"30\">30</option>\\n<option value=\"31\" selected=\"selected\">31</option>\\n</select>\\n<select name=\"mydate_month\" id=\"id_mydate_month\">\\n<option value=\"1\">gener</option>\\n<option value=\"2\">febrer</option>\\n<option value=\"3\">mar\\xe7</option>\\n<option value=\"4\">abril</option>\\n<option value=\"5\">maig</option>\\n<option value=\"6\">juny</option>\\n<option value=\"7\">juliol</option>\\n<option value=\"8\">agost</option>\\n<option value=\"9\">setembre</option>\\n<option value=\"10\">octubre</option>\\n<option value=\"11\">novembre</option>\\n<option value=\"12\" selected=\"selected\">desembre</option>\\n</select>\\n<select name=\"mydate_year\" id=\"id_mydate_year\">\\n<option value=\"2009\" selected=\"selected\">2009</option>\\n<option value=\"2010\">2010</option>\\n<option value=\"2011\">2011</option>\\n<option value=\"2012\">2012</option>\\n<option value=\"2013\">2013</option>\\n<option value=\"2014\">2014</option>\\n<option value=\"2015\">2015</option>\\n<option value=\"2016\">2016</option>\\n<option value=\"2017\">2017</option>\\n<option value=\"2018\">2018</option>\\n</select>',\n                SelectDateWidget(years=range(2009, 2019)).render('mydate', datetime.date(2009, 12, 31))\n            )\n\n        # Russian locale (with E as month)\n        with translation.override('ru', deactivate=True):\n            self.assertHTMLEqual(\n                    '<select name=\"mydate_day\" id=\"id_mydate_day\">\\n<option value=\"1\">1</option>\\n<option value=\"2\">2</option>\\n<option value=\"3\">3</option>\\n<option value=\"4\">4</option>\\n<option value=\"5\">5</option>\\n<option value=\"6\">6</option>\\n<option value=\"7\">7</option>\\n<option value=\"8\">8</option>\\n<option value=\"9\">9</option>\\n<option value=\"10\">10</option>\\n<option value=\"11\">11</option>\\n<option value=\"12\">12</option>\\n<option value=\"13\">13</option>\\n<option value=\"14\">14</option>\\n<option value=\"15\">15</option>\\n<option value=\"16\">16</option>\\n<option value=\"17\">17</option>\\n<option value=\"18\">18</option>\\n<option value=\"19\">19</option>\\n<option value=\"20\">20</option>\\n<option value=\"21\">21</option>\\n<option value=\"22\">22</option>\\n<option value=\"23\">23</option>\\n<option value=\"24\">24</option>\\n<option value=\"25\">25</option>\\n<option value=\"26\">26</option>\\n<option value=\"27\">27</option>\\n<option value=\"28\">28</option>\\n<option value=\"29\">29</option>\\n<option value=\"30\">30</option>\\n<option value=\"31\" selected=\"selected\">31</option>\\n</select>\\n<select name=\"mydate_month\" id=\"id_mydate_month\">\\n<option value=\"1\">\\u042f\\u043d\\u0432\\u0430\\u0440\\u044c</option>\\n<option value=\"2\">\\u0424\\u0435\\u0432\\u0440\\u0430\\u043b\\u044c</option>\\n<option value=\"3\">\\u041c\\u0430\\u0440\\u0442</option>\\n<option value=\"4\">\\u0410\\u043f\\u0440\\u0435\\u043b\\u044c</option>\\n<option value=\"5\">\\u041c\\u0430\\u0439</option>\\n<option value=\"6\">\\u0418\\u044e\\u043d\\u044c</option>\\n<option value=\"7\">\\u0418\\u044e\\u043b\\u044c</option>\\n<option value=\"8\">\\u0410\\u0432\\u0433\\u0443\\u0441\\u0442</option>\\n<option value=\"9\">\\u0421\\u0435\\u043d\\u0442\\u044f\\u0431\\u0440\\u044c</option>\\n<option value=\"10\">\\u041e\\u043a\\u0442\\u044f\\u0431\\u0440\\u044c</option>\\n<option value=\"11\">\\u041d\\u043e\\u044f\\u0431\\u0440\\u044c</option>\\n<option value=\"12\" selected=\"selected\">\\u0414\\u0435\\u043a\\u0430\\u0431\\u0440\\u044c</option>\\n</select>\\n<select name=\"mydate_year\" id=\"id_mydate_year\">\\n<option value=\"2009\" selected=\"selected\">2009</option>\\n<option value=\"2010\">2010</option>\\n<option value=\"2011\">2011</option>\\n<option value=\"2012\">2012</option>\\n<option value=\"2013\">2013</option>\\n<option value=\"2014\">2014</option>\\n<option value=\"2015\">2015</option>\\n<option value=\"2016\">2016</option>\\n<option value=\"2017\">2017</option>\\n<option value=\"2018\">2018</option>\\n</select>',\n                    SelectDateWidget(years=range(2009, 2019)).render('mydate', datetime.date(2009, 12, 31))\n            )\n\n        # English locale\n        with translation.override('en', deactivate=True):\n            self.assertEqual('N j, Y', get_format('DATE_FORMAT'))\n            self.assertEqual(0, get_format('FIRST_DAY_OF_WEEK'))\n            self.assertEqual('.', get_format('DECIMAL_SEPARATOR'))\n            self.assertEqual('Dec. 31, 2009', date_format(self.d))\n            self.assertEqual('December 2009', date_format(self.d, 'YEAR_MONTH_FORMAT'))\n            self.assertEqual('12/31/2009 8:50 p.m.', date_format(self.dt, 'SHORT_DATETIME_FORMAT'))\n            self.assertEqual('No localizable', localize('No localizable'))\n\n            settings.USE_THOUSAND_SEPARATOR = True\n            self.assertEqual('66,666.666', localize(self.n))\n            self.assertEqual('99,999.999', localize(self.f))\n            self.assertEqual('10,000', localize(self.l))\n\n            settings.USE_THOUSAND_SEPARATOR = False\n            self.assertEqual('66666.666', localize(self.n))\n            self.assertEqual('99999.999', localize(self.f))\n            self.assertEqual('10000', localize(self.l))\n            self.assertEqual('Dec. 31, 2009', localize(self.d))\n            self.assertEqual('Dec. 31, 2009, 8:50 p.m.', localize(self.dt))\n\n            settings.USE_THOUSAND_SEPARATOR = True\n            self.assertEqual('66,666.666', Template('{{ n }}').render(self.ctxt))\n            self.assertEqual('99,999.999', Template('{{ f }}').render(self.ctxt))\n            self.assertEqual('10,000', Template('{{ l }}').render(self.ctxt))\n\n            settings.USE_THOUSAND_SEPARATOR = False\n            self.assertEqual('66666.666', Template('{{ n }}').render(self.ctxt))\n            self.assertEqual('99999.999', Template('{{ f }}').render(self.ctxt))\n            self.assertEqual('Dec. 31, 2009', Template('{{ d }}').render(self.ctxt))\n            self.assertEqual('Dec. 31, 2009, 8:50 p.m.', Template('{{ dt }}').render(self.ctxt))\n            self.assertEqual('66666.67', Template('{{ n|floatformat:2 }}').render(self.ctxt))\n            self.assertEqual('100000.0', Template('{{ f|floatformat }}').render(self.ctxt))\n            self.assertEqual('12/31/2009', Template('{{ d|date:\"SHORT_DATE_FORMAT\" }}').render(self.ctxt))\n            self.assertEqual('12/31/2009 8:50 p.m.', Template('{{ dt|date:\"SHORT_DATETIME_FORMAT\" }}').render(self.ctxt))\n\n            form5 = I18nForm({\n                'decimal_field': '66666.666',\n                'float_field': '99999.999',\n                'date_field': '12/31/2009',\n                'datetime_field': '12/31/2009 20:50',\n                'time_field': '20:50',\n                'integer_field': '1234',\n            })\n            self.assertEqual(True, form5.is_valid())\n            self.assertEqual(decimal.Decimal('66666.666'), form5.cleaned_data['decimal_field'])\n            self.assertEqual(99999.999, form5.cleaned_data['float_field'])\n            self.assertEqual(datetime.date(2009, 12, 31), form5.cleaned_data['date_field'])\n            self.assertEqual(datetime.datetime(2009, 12, 31, 20, 50), form5.cleaned_data['datetime_field'])\n            self.assertEqual(datetime.time(20, 50), form5.cleaned_data['time_field'])\n            self.assertEqual(1234, form5.cleaned_data['integer_field'])\n\n            form6 = SelectDateForm({\n                'date_field_month': '12',\n                'date_field_day': '31',\n                'date_field_year': '2009'\n            })\n            self.assertEqual(True, form6.is_valid())\n            self.assertEqual(datetime.date(2009, 12, 31), form6.cleaned_data['date_field'])\n            self.assertHTMLEqual(\n                '<select name=\"mydate_month\" id=\"id_mydate_month\">\\n<option value=\"1\">January</option>\\n<option value=\"2\">February</option>\\n<option value=\"3\">March</option>\\n<option value=\"4\">April</option>\\n<option value=\"5\">May</option>\\n<option value=\"6\">June</option>\\n<option value=\"7\">July</option>\\n<option value=\"8\">August</option>\\n<option value=\"9\">September</option>\\n<option value=\"10\">October</option>\\n<option value=\"11\">November</option>\\n<option value=\"12\" selected=\"selected\">December</option>\\n</select>\\n<select name=\"mydate_day\" id=\"id_mydate_day\">\\n<option value=\"1\">1</option>\\n<option value=\"2\">2</option>\\n<option value=\"3\">3</option>\\n<option value=\"4\">4</option>\\n<option value=\"5\">5</option>\\n<option value=\"6\">6</option>\\n<option value=\"7\">7</option>\\n<option value=\"8\">8</option>\\n<option value=\"9\">9</option>\\n<option value=\"10\">10</option>\\n<option value=\"11\">11</option>\\n<option value=\"12\">12</option>\\n<option value=\"13\">13</option>\\n<option value=\"14\">14</option>\\n<option value=\"15\">15</option>\\n<option value=\"16\">16</option>\\n<option value=\"17\">17</option>\\n<option value=\"18\">18</option>\\n<option value=\"19\">19</option>\\n<option value=\"20\">20</option>\\n<option value=\"21\">21</option>\\n<option value=\"22\">22</option>\\n<option value=\"23\">23</option>\\n<option value=\"24\">24</option>\\n<option value=\"25\">25</option>\\n<option value=\"26\">26</option>\\n<option value=\"27\">27</option>\\n<option value=\"28\">28</option>\\n<option value=\"29\">29</option>\\n<option value=\"30\">30</option>\\n<option value=\"31\" selected=\"selected\">31</option>\\n</select>\\n<select name=\"mydate_year\" id=\"id_mydate_year\">\\n<option value=\"2009\" selected=\"selected\">2009</option>\\n<option value=\"2010\">2010</option>\\n<option value=\"2011\">2011</option>\\n<option value=\"2012\">2012</option>\\n<option value=\"2013\">2013</option>\\n<option value=\"2014\">2014</option>\\n<option value=\"2015\">2015</option>\\n<option value=\"2016\">2016</option>\\n<option value=\"2017\">2017</option>\\n<option value=\"2018\">2018</option>\\n</select>',\n                SelectDateWidget(years=range(2009, 2019)).render('mydate', datetime.date(2009, 12, 31))\n            )\n\n    def test_sub_locales(self):\n        \"\"\"\n        Check if sublocales fall back to the main locale\n        \"\"\"\n        with self.settings(USE_L10N=True, USE_THOUSAND_SEPARATOR=True):\n            with translation.override('de-at', deactivate=True):\n                self.assertEqual('66.666,666', Template('{{ n }}').render(self.ctxt))\n            with translation.override('es-us', deactivate=True):\n                self.assertEqual('31 de Diciembre de 2009', date_format(self.d))\n\n    def test_localized_input(self):\n        \"\"\"\n        Tests if form input is correctly localized\n        \"\"\"\n        settings.USE_L10N = True\n        with translation.override('de-at', deactivate=True):\n            form6 = CompanyForm({\n                'name': 'acme',\n                'date_added': datetime.datetime(2009, 12, 31, 6, 0, 0),\n                'cents_paid': decimal.Decimal('59.47'),\n                'products_delivered': 12000,\n            })\n            self.assertEqual(True, form6.is_valid())\n            self.assertHTMLEqual(\n                form6.as_ul(),\n                '<li><label for=\"id_name\">Name:</label> <input id=\"id_name\" type=\"text\" name=\"name\" value=\"acme\" maxlength=\"50\" /></li>\\n<li><label for=\"id_date_added\">Date added:</label> <input type=\"text\" name=\"date_added\" value=\"31.12.2009 06:00:00\" id=\"id_date_added\" /></li>\\n<li><label for=\"id_cents_paid\">Cents paid:</label> <input type=\"text\" name=\"cents_paid\" value=\"59,47\" id=\"id_cents_paid\" /></li>\\n<li><label for=\"id_products_delivered\">Products delivered:</label> <input type=\"text\" name=\"products_delivered\" value=\"12000\" id=\"id_products_delivered\" /></li>'\n            )\n            self.assertEqual(localize_input(datetime.datetime(2009, 12, 31, 6, 0, 0)), '31.12.2009 06:00:00')\n            self.assertEqual(datetime.datetime(2009, 12, 31, 6, 0, 0), form6.cleaned_data['date_added'])\n            with self.settings(USE_THOUSAND_SEPARATOR=True):\n                # Checking for the localized \"products_delivered\" field\n                self.assertInHTML('<input type=\"text\" name=\"products_delivered\" value=\"12.000\" id=\"id_products_delivered\" />', form6.as_ul())\n\n    def test_iter_format_modules(self):\n        \"\"\"\n        Tests the iter_format_modules function.\n        \"\"\"\n        settings.USE_L10N = True\n        with translation.override('de-at', deactivate=True):\n            de_format_mod = import_module('django.conf.locale.de.formats')\n            self.assertEqual(list(iter_format_modules('de')), [de_format_mod])\n            with self.settings(FORMAT_MODULE_PATH='regressiontests.i18n.other.locale'):\n                test_de_format_mod = import_module('regressiontests.i18n.other.locale.de.formats')\n                self.assertEqual(list(iter_format_modules('de')), [test_de_format_mod, de_format_mod])\n\n    def test_iter_format_modules_stability(self):\n        \"\"\"\n        Tests the iter_format_modules function always yields format modules in\n        a stable and correct order in presence of both base ll and ll_CC formats.\n        \"\"\"\n        settings.USE_L10N = True\n        en_format_mod = import_module('django.conf.locale.en.formats')\n        en_gb_format_mod = import_module('django.conf.locale.en_GB.formats')\n        self.assertEqual(list(iter_format_modules('en-gb')), [en_gb_format_mod, en_format_mod])\n\n    def test_get_format_modules_lang(self):\n        with self.settings(USE_L10N=True):\n            with translation.override('de', deactivate=True):\n                self.assertEqual('.', get_format('DECIMAL_SEPARATOR', lang='en'))\n\n    def test_get_format_modules_stability(self):\n        with self.settings(USE_L10N=True,\n                FORMAT_MODULE_PATH='regressiontests.i18n.other.locale'):\n            with translation.override('de', deactivate=True):\n                old = str(\"%r\") % get_format_modules(reverse=True)\n                new = str(\"%r\") % get_format_modules(reverse=True) # second try\n                self.assertEqual(new, old, 'Value returned by get_formats_modules() must be preserved between calls.')\n\n    def test_localize_templatetag_and_filter(self):\n        \"\"\"\n        Tests the {% localize %} templatetag\n        \"\"\"\n        context = Context({'value': 3.14 })\n        template1 = Template(\"{% load l10n %}{% localize %}{{ value }}{% endlocalize %};{% localize on %}{{ value }}{% endlocalize %}\")\n        template2 = Template(\"{% load l10n %}{{ value }};{% localize off %}{{ value }};{% endlocalize %}{{ value }}\")\n        template3 = Template('{% load l10n %}{{ value }};{{ value|unlocalize }}')\n        template4 = Template('{% load l10n %}{{ value }};{{ value|localize }}')\n        output1 = '3,14;3,14'\n        output2 = '3,14;3.14;3,14'\n        output3 = '3,14;3.14'\n        output4 = '3.14;3,14'\n        with translation.override('de', deactivate=True):\n            with self.settings(USE_L10N=False):\n                self.assertEqual(template1.render(context), output1)\n                self.assertEqual(template4.render(context), output4)\n            with self.settings(USE_L10N=True):\n                self.assertEqual(template1.render(context), output1)\n                self.assertEqual(template2.render(context), output2)\n                self.assertEqual(template3.render(context), output3)\n\nclass MiscTests(TestCase):\n\n    def setUp(self):\n        self.rf = RequestFactory()\n\n    def test_parse_spec_http_header(self):\n        \"\"\"\n        Testing HTTP header parsing. First, we test that we can parse the\n        values according to the spec (and that we extract all the pieces in\n        the right order).\n        \"\"\"\n        p = trans_real.parse_accept_lang_header\n        # Good headers.\n        self.assertEqual([('de', 1.0)], p('de'))\n        self.assertEqual([('en-AU', 1.0)], p('en-AU'))\n        self.assertEqual([('es-419', 1.0)], p('es-419'))\n        self.assertEqual([('*', 1.0)], p('*;q=1.00'))\n        self.assertEqual([('en-AU', 0.123)], p('en-AU;q=0.123'))\n        self.assertEqual([('en-au', 0.5)], p('en-au;q=0.5'))\n        self.assertEqual([('en-au', 1.0)], p('en-au;q=1.0'))\n        self.assertEqual([('da', 1.0), ('en', 0.5), ('en-gb', 0.25)], p('da, en-gb;q=0.25, en;q=0.5'))\n        self.assertEqual([('en-au-xx', 1.0)], p('en-au-xx'))\n        self.assertEqual([('de', 1.0), ('en-au', 0.75), ('en-us', 0.5), ('en', 0.25), ('es', 0.125), ('fa', 0.125)], p('de,en-au;q=0.75,en-us;q=0.5,en;q=0.25,es;q=0.125,fa;q=0.125'))\n        self.assertEqual([('*', 1.0)], p('*'))\n        self.assertEqual([('de', 1.0)], p('de;q=0.'))\n        self.assertEqual([('en', 1.0), ('*', 0.5)], p('en; q=1.0, * ; q=0.5'))\n        self.assertEqual([], p(''))\n\n        # Bad headers; should always return [].\n        self.assertEqual([], p('en-gb;q=1.0000'))\n        self.assertEqual([], p('en;q=0.1234'))\n        self.assertEqual([], p('en;q=.2'))\n        self.assertEqual([], p('abcdefghi-au'))\n        self.assertEqual([], p('**'))\n        self.assertEqual([], p('en,,gb'))\n        self.assertEqual([], p('en-au;q=0.1.0'))\n        self.assertEqual([], p('XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXZ,en'))\n        self.assertEqual([], p('da, en-gb;q=0.8, en;q=0.7,#'))\n        self.assertEqual([], p('de;q=2.0'))\n        self.assertEqual([], p('de;q=0.a'))\n        self.assertEqual([], p('12-345'))\n        self.assertEqual([], p(''))\n\n    def test_parse_literal_http_header(self):\n        \"\"\"\n        Now test that we parse a literal HTTP header correctly.\n        \"\"\"\n        g = get_language_from_request\n        r = self.rf.get('/')\n        r.COOKIES = {}\n        r.META = {'HTTP_ACCEPT_LANGUAGE': 'pt-br'}\n        self.assertEqual('pt-br', g(r))\n\n        r.META = {'HTTP_ACCEPT_LANGUAGE': 'pt'}\n        self.assertEqual('pt', g(r))\n\n        r.META = {'HTTP_ACCEPT_LANGUAGE': 'es,de'}\n        self.assertEqual('es', g(r))\n\n        r.META = {'HTTP_ACCEPT_LANGUAGE': 'es-ar,de'}\n        self.assertEqual('es-ar', g(r))\n\n        # This test assumes there won't be a Django translation to a US\n        # variation of the Spanish language, a safe assumption. When the\n        # user sets it as the preferred language, the main 'es'\n        # translation should be selected instead.\n        r.META = {'HTTP_ACCEPT_LANGUAGE': 'es-us'}\n        self.assertEqual(g(r), 'es')\n\n        # This tests the following scenario: there isn't a main language (zh)\n        # translation of Django but there is a translation to variation (zh_CN)\n        # the user sets zh-cn as the preferred language, it should be selected\n        # by Django without falling back nor ignoring it.\n        r.META = {'HTTP_ACCEPT_LANGUAGE': 'zh-cn,de'}\n        self.assertEqual(g(r), 'zh-cn')\n\n    def test_parse_language_cookie(self):\n        \"\"\"\n        Now test that we parse language preferences stored in a cookie correctly.\n        \"\"\"\n        g = get_language_from_request\n        r = self.rf.get('/')\n        r.COOKIES = {settings.LANGUAGE_COOKIE_NAME: 'pt-br'}\n        r.META = {}\n        self.assertEqual('pt-br', g(r))\n\n        r.COOKIES = {settings.LANGUAGE_COOKIE_NAME: 'pt'}\n        r.META = {}\n        self.assertEqual('pt', g(r))\n\n        r.COOKIES = {settings.LANGUAGE_COOKIE_NAME: 'es'}\n        r.META = {'HTTP_ACCEPT_LANGUAGE': 'de'}\n        self.assertEqual('es', g(r))\n\n        # This test assumes there won't be a Django translation to a US\n        # variation of the Spanish language, a safe assumption. When the\n        # user sets it as the preferred language, the main 'es'\n        # translation should be selected instead.\n        r.COOKIES = {settings.LANGUAGE_COOKIE_NAME: 'es-us'}\n        r.META = {}\n        self.assertEqual(g(r), 'es')\n\n        # This tests the following scenario: there isn't a main language (zh)\n        # translation of Django but there is a translation to variation (zh_CN)\n        # the user sets zh-cn as the preferred language, it should be selected\n        # by Django without falling back nor ignoring it.\n        r.COOKIES = {settings.LANGUAGE_COOKIE_NAME: 'zh-cn'}\n        r.META = {'HTTP_ACCEPT_LANGUAGE': 'de'}\n        self.assertEqual(g(r), 'zh-cn')\n\n    def test_get_language_from_path_real(self):\n        g = trans_real.get_language_from_path\n        self.assertEqual(g('/pl/'), 'pl')\n        self.assertEqual(g('/pl'), 'pl')\n        self.assertEqual(g('/xyz/'), None)\n\n    def test_get_language_from_path_null(self):\n        from django.utils.translation.trans_null import get_language_from_path as g\n        self.assertEqual(g('/pl/'), None)\n        self.assertEqual(g('/pl'), None)\n        self.assertEqual(g('/xyz/'), None)\n\n    @override_settings(LOCALE_PATHS=extended_locale_paths)\n    def test_percent_in_translatable_block(self):\n        t_sing = Template(\"{% load i18n %}{% blocktrans %}The result was {{ percent }}%{% endblocktrans %}\")\n        t_plur = Template(\"{% load i18n %}{% blocktrans count num as number %}{{ percent }}% represents {{ num }} object{% plural %}{{ percent }}% represents {{ num }} objects{% endblocktrans %}\")\n        with translation.override('de'):\n            self.assertEqual(t_sing.render(Context({'percent': 42})), 'Das Ergebnis war 42%')\n            self.assertEqual(t_plur.render(Context({'percent': 42, 'num': 1})), '42% stellt 1 Objekt dar')\n            self.assertEqual(t_plur.render(Context({'percent': 42, 'num': 4})), '42% stellt 4 Objekte dar')\n\n    @override_settings(LOCALE_PATHS=extended_locale_paths)\n    def test_percent_formatting_in_blocktrans(self):\n        \"\"\"\n        Test that using Python's %-formatting is properly escaped in blocktrans,\n        singular or plural\n        \"\"\"\n        t_sing = Template(\"{% load i18n %}{% blocktrans %}There are %(num_comments)s comments{% endblocktrans %}\")\n        t_plur = Template(\"{% load i18n %}{% blocktrans count num as number %}%(percent)s% represents {{ num }} object{% plural %}%(percent)s% represents {{ num }} objects{% endblocktrans %}\")\n        with translation.override('de'):\n            # Strings won't get translated as they don't match after escaping %\n            self.assertEqual(t_sing.render(Context({'num_comments': 42})), 'There are %(num_comments)s comments')\n            self.assertEqual(t_plur.render(Context({'percent': 42, 'num': 1})), '%(percent)s% represents 1 object')\n            self.assertEqual(t_plur.render(Context({'percent': 42, 'num': 4})), '%(percent)s% represents 4 objects')\n\n\nclass ResolutionOrderI18NTests(TestCase):\n\n    def setUp(self):\n        # Okay, this is brutal, but we have no other choice to fully reset\n        # the translation framework\n        trans_real._active = local()\n        trans_real._translations = {}\n        activate('de')\n\n    def tearDown(self):\n        deactivate()\n\n    def assertUgettext(self, msgid, msgstr):\n        result = ugettext(msgid)\n        self.assertTrue(msgstr in result, (\"The string '%s' isn't in the \"\n            \"translation of '%s'; the actual result is '%s'.\" % (msgstr, msgid, result)))\n\nclass AppResolutionOrderI18NTests(ResolutionOrderI18NTests):\n\n    def setUp(self):\n        self.old_installed_apps = settings.INSTALLED_APPS\n        settings.INSTALLED_APPS = ['regressiontests.i18n.resolution'] + list(settings.INSTALLED_APPS)\n        super(AppResolutionOrderI18NTests, self).setUp()\n\n    def tearDown(self):\n        settings.INSTALLED_APPS = self.old_installed_apps\n        super(AppResolutionOrderI18NTests, self).tearDown()\n\n    def test_app_translation(self):\n        self.assertUgettext('Date/time', 'APP')\n\n@override_settings(LOCALE_PATHS=extended_locale_paths)\nclass LocalePathsResolutionOrderI18NTests(ResolutionOrderI18NTests):\n\n    def test_locale_paths_translation(self):\n        self.assertUgettext('Time', 'LOCALE_PATHS')\n\n    def test_locale_paths_override_app_translation(self):\n        extended_apps = list(settings.INSTALLED_APPS) + ['regressiontests.i18n.resolution']\n        with self.settings(INSTALLED_APPS=extended_apps):\n            self.assertUgettext('Time', 'LOCALE_PATHS')\n\nclass DjangoFallbackResolutionOrderI18NTests(ResolutionOrderI18NTests):\n\n    def test_django_fallback(self):\n        self.assertEqual(ugettext('Date/time'), 'Datum/Zeit')\n\n\nclass TestModels(TestCase):\n    def test_lazy(self):\n        tm = TestModel()\n        tm.save()\n\n    def test_safestr(self):\n        c = Company(cents_paid=12, products_delivered=1)\n        c.name = SafeText('Iñtërnâtiônàlizætiøn1')\n        c.save()\n        c.name = SafeBytes('Iñtërnâtiônàlizætiøn1'.encode('utf-8'))\n        c.save()\n\n\nclass TestLanguageInfo(TestCase):\n    def test_localized_language_info(self):\n        li = get_language_info('de')\n        self.assertEqual(li['code'], 'de')\n        self.assertEqual(li['name_local'], 'Deutsch')\n        self.assertEqual(li['name'], 'German')\n        self.assertEqual(li['bidi'], False)\n\n\nclass MultipleLocaleActivationTests(TestCase):\n    \"\"\"\n    Tests for template rendering behavior when multiple locales are activated\n    during the lifetime of the same process.\n    \"\"\"\n    def setUp(self):\n        self._old_language = get_language()\n\n    def tearDown(self):\n        activate(self._old_language)\n\n    def test_single_locale_activation(self):\n        \"\"\"\n        Simple baseline behavior with one locale for all the supported i18n constructs.\n        \"\"\"\n        with translation.override('fr'):\n            self.assertEqual(Template(\"{{ _('Yes') }}\").render(Context({})), 'Oui')\n            self.assertEqual(Template(\"{% load i18n %}{% trans 'Yes' %}\").render(Context({})), 'Oui')\n            self.assertEqual(Template(\"{% load i18n %}{% blocktrans %}Yes{% endblocktrans %}\").render(Context({})), 'Oui')\n\n    # Literal marked up with _() in a filter expression\n\n    def test_multiple_locale_filter(self):\n        with translation.override('de'):\n            t = Template(\"{% load i18n %}{{ 0|yesno:_('yes,no,maybe') }}\")\n        with translation.override(self._old_language):\n            with translation.override('nl'):\n                self.assertEqual(t.render(Context({})), 'nee')\n\n    def test_multiple_locale_filter_deactivate(self):\n        with translation.override('de', deactivate=True):\n            t = Template(\"{% load i18n %}{{ 0|yesno:_('yes,no,maybe') }}\")\n        with translation.override('nl'):\n            self.assertEqual(t.render(Context({})), 'nee')\n\n    def test_multiple_locale_filter_direct_switch(self):\n        with translation.override('de'):\n            t = Template(\"{% load i18n %}{{ 0|yesno:_('yes,no,maybe') }}\")\n        with translation.override('nl'):\n            self.assertEqual(t.render(Context({})), 'nee')\n\n    # Literal marked up with _()\n\n    def test_multiple_locale(self):\n        with translation.override('de'):\n            t = Template(\"{{ _('No') }}\")\n        with translation.override(self._old_language):\n            with translation.override('nl'):\n                self.assertEqual(t.render(Context({})), 'Nee')\n\n    def test_multiple_locale_deactivate(self):\n        with translation.override('de', deactivate=True):\n            t = Template(\"{{ _('No') }}\")\n        with translation.override('nl'):\n            self.assertEqual(t.render(Context({})), 'Nee')\n\n    def test_multiple_locale_direct_switch(self):\n        with translation.override('de'):\n            t = Template(\"{{ _('No') }}\")\n        with translation.override('nl'):\n            self.assertEqual(t.render(Context({})), 'Nee')\n\n    # Literal marked up with _(), loading the i18n template tag library\n\n    def test_multiple_locale_loadi18n(self):\n        with translation.override('de'):\n            t = Template(\"{% load i18n %}{{ _('No') }}\")\n        with translation.override(self._old_language):\n            with translation.override('nl'):\n                self.assertEqual(t.render(Context({})), 'Nee')\n\n    def test_multiple_locale_loadi18n_deactivate(self):\n        with translation.override('de', deactivate=True):\n            t = Template(\"{% load i18n %}{{ _('No') }}\")\n        with translation.override('nl'):\n            self.assertEqual(t.render(Context({})), 'Nee')\n\n    def test_multiple_locale_loadi18n_direct_switch(self):\n        with translation.override('de'):\n            t = Template(\"{% load i18n %}{{ _('No') }}\")\n        with translation.override('nl'):\n            self.assertEqual(t.render(Context({})), 'Nee')\n\n    # trans i18n tag\n\n    def test_multiple_locale_trans(self):\n        with translation.override('de'):\n            t = Template(\"{% load i18n %}{% trans 'No' %}\")\n        with translation.override(self._old_language):\n            with translation.override('nl'):\n                self.assertEqual(t.render(Context({})), 'Nee')\n\n    def test_multiple_locale_deactivate_trans(self):\n        with translation.override('de', deactivate=True):\n            t = Template(\"{% load i18n %}{% trans 'No' %}\")\n        with translation.override('nl'):\n            self.assertEqual(t.render(Context({})), 'Nee')\n\n    def test_multiple_locale_direct_switch_trans(self):\n        with translation.override('de'):\n            t = Template(\"{% load i18n %}{% trans 'No' %}\")\n        with translation.override('nl'):\n            self.assertEqual(t.render(Context({})), 'Nee')\n\n    # blocktrans i18n tag\n\n    def test_multiple_locale_btrans(self):\n        with translation.override('de'):\n            t = Template(\"{% load i18n %}{% blocktrans %}No{% endblocktrans %}\")\n        with translation.override(self._old_language):\n            with translation.override('nl'):\n                self.assertEqual(t.render(Context({})), 'Nee')\n\n    def test_multiple_locale_deactivate_btrans(self):\n        with translation.override('de', deactivate=True):\n            t = Template(\"{% load i18n %}{% blocktrans %}No{% endblocktrans %}\")\n        with translation.override('nl'):\n            self.assertEqual(t.render(Context({})), 'Nee')\n\n    def test_multiple_locale_direct_switch_btrans(self):\n        with translation.override('de'):\n            t = Template(\"{% load i18n %}{% blocktrans %}No{% endblocktrans %}\")\n        with translation.override('nl'):\n            self.assertEqual(t.render(Context({})), 'Nee')\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/indexes/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/indexes/models.py",
    "content": "from django.db import connection\nfrom django.db import models\n\n\nclass Article(models.Model):\n    headline = models.CharField(max_length=100)\n    pub_date = models.DateTimeField()\n\n    class Meta:\n        index_together = [\n            [\"headline\", \"pub_date\"],\n        ]\n\n\n# Indexing a TextField on Oracle or MySQL results in index creation error.\nif connection.vendor == 'postgresql':\n    class IndexedArticle(models.Model):\n        headline = models.CharField(max_length=100, db_index=True)\n        body = models.TextField(db_index=True)\n        slug = models.CharField(max_length=40, unique=True)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/indexes/tests.py",
    "content": "from django.core.management.color import no_style\nfrom django.db import connections, DEFAULT_DB_ALIAS\nfrom django.test import TestCase\nfrom django.utils.unittest import skipUnless\n\nfrom .models import Article\n\n\nclass IndexesTests(TestCase):\n    def test_index_together(self):\n        connection = connections[DEFAULT_DB_ALIAS]\n        index_sql = connection.creation.sql_indexes_for_model(Article, no_style())\n        self.assertEqual(len(index_sql), 1)\n\n    @skipUnless(connections[DEFAULT_DB_ALIAS].vendor == 'postgresql',\n        \"This is a postgresql-specific issue\")\n    def test_postgresql_text_indexes(self):\n        \"\"\"Test creation of PostgreSQL-specific text indexes (#12234)\"\"\"\n        from .models import IndexedArticle\n        connection = connections[DEFAULT_DB_ALIAS]\n        index_sql = connection.creation.sql_indexes_for_model(IndexedArticle, no_style())\n        self.assertEqual(len(index_sql), 5)\n        self.assertIn('(\"headline\" varchar_pattern_ops)', index_sql[1])\n        self.assertIn('(\"body\" text_pattern_ops)', index_sql[3])\n        # unique=True and db_index=True should only create the varchar-specific\n        # index (#19441).\n        self.assertIn('(\"slug\" varchar_pattern_ops)', index_sql[4])\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/initial_sql_regress/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/initial_sql_regress/models.py",
    "content": "\"\"\"\nRegression tests for initial SQL insertion.\n\"\"\"\n\nfrom django.db import models\n\n\nclass Simple(models.Model):\n    name = models.CharField(max_length = 50)\n\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/initial_sql_regress/sql/simple.sql",
    "content": "-- a comment\nINSERT INTO initial_sql_regress_simple (name) VALUES ('John'); -- another comment\nINSERT INTO initial_sql_regress_simple (name) VALUES ('-- Comment Man');\nINSERT INTO initial_sql_regress_simple (name) VALUES ('Paul');\nINSERT INTO\n    initial_sql_regress_simple (name) VALUES ('Ringo');\nINSERT INTO initial_sql_regress_simple (name) VALUES ('George');\nINSERT INTO initial_sql_regress_simple (name) VALUES ('Miles O''Brien');\nINSERT INTO initial_sql_regress_simple (name) VALUES ('Semicolon;Man');\nINSERT INTO initial_sql_regress_simple (name) VALUES ('This line has a Windows line ending');\n\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/initial_sql_regress/tests.py",
    "content": "from django.core.management.color import no_style\nfrom django.core.management.sql import custom_sql_for_model\nfrom django.db import connections, DEFAULT_DB_ALIAS\nfrom django.test import TestCase\n\nfrom .models import Simple\n\n\nclass InitialSQLTests(TestCase):\n    # The format of the included SQL file for this test suite is important.\n    # It must end with a trailing newline in order to test the fix for #2161.\n\n    def test_initial_sql(self):\n        # As pointed out by #14661, test data loaded by custom SQL\n        # can't be relied upon; as a result, the test framework flushes the\n        # data contents before every test. This test validates that this has\n        # occurred.\n        self.assertEqual(Simple.objects.count(), 0)\n\n    def test_custom_sql(self):\n        # Simulate the custom SQL loading by syncdb\n        connection = connections[DEFAULT_DB_ALIAS]\n        custom_sql = custom_sql_for_model(Simple, no_style(), connection)\n        self.assertEqual(len(custom_sql), 8)\n        cursor = connection.cursor()\n        for sql in custom_sql:\n            cursor.execute(sql)\n        self.assertEqual(Simple.objects.count(), 8)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/inline_formsets/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/inline_formsets/models.py",
    "content": "# coding: utf-8\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\nclass School(models.Model):\n    name = models.CharField(max_length=100)\n\nclass Parent(models.Model):\n    name = models.CharField(max_length=100)\n\nclass Child(models.Model):\n    mother = models.ForeignKey(Parent, related_name='mothers_children')\n    father = models.ForeignKey(Parent, related_name='fathers_children')\n    school = models.ForeignKey(School)\n    name = models.CharField(max_length=100)\n\n@python_2_unicode_compatible\nclass Poet(models.Model):\n    name = models.CharField(max_length=100)\n\n    def __str__(self):\n        return self.name\n\n@python_2_unicode_compatible\nclass Poem(models.Model):\n    poet = models.ForeignKey(Poet)\n    name = models.CharField(max_length=100)\n\n    def __str__(self):\n        return self.name\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/inline_formsets/tests.py",
    "content": "from __future__ import absolute_import, unicode_literals\n\nfrom django.forms.models import inlineformset_factory\nfrom django.test import TestCase\nfrom django.utils import six\n\nfrom .models import Poet, Poem, School, Parent, Child\n\n\nclass DeletionTests(TestCase):\n\n    def test_deletion(self):\n        PoemFormSet = inlineformset_factory(Poet, Poem, can_delete=True)\n        poet = Poet.objects.create(name='test')\n        poem = poet.poem_set.create(name='test poem')\n        data = {\n            'poem_set-TOTAL_FORMS': '1',\n            'poem_set-INITIAL_FORMS': '1',\n            'poem_set-MAX_NUM_FORMS': '0',\n            'poem_set-0-id': str(poem.pk),\n            'poem_set-0-poet': str(poet.pk),\n            'poem_set-0-name': 'test',\n            'poem_set-0-DELETE': 'on',\n        }\n        formset = PoemFormSet(data, instance=poet)\n        formset.save()\n        self.assertTrue(formset.is_valid())\n        self.assertEqual(Poem.objects.count(), 0)\n\n    def test_add_form_deletion_when_invalid(self):\n        \"\"\"\n        Make sure that an add form that is filled out, but marked for deletion\n        doesn't cause validation errors.\n        \"\"\"\n        PoemFormSet = inlineformset_factory(Poet, Poem, can_delete=True)\n        poet = Poet.objects.create(name='test')\n        data = {\n            'poem_set-TOTAL_FORMS': '1',\n            'poem_set-INITIAL_FORMS': '0',\n            'poem_set-MAX_NUM_FORMS': '0',\n            'poem_set-0-id': '',\n            'poem_set-0-poem': '1',\n            'poem_set-0-name': 'x' * 1000,\n        }\n        formset = PoemFormSet(data, instance=poet)\n        # Make sure this form doesn't pass validation.\n        self.assertEqual(formset.is_valid(), False)\n        self.assertEqual(Poem.objects.count(), 0)\n\n        # Then make sure that it *does* pass validation and delete the object,\n        # even though the data isn't actually valid.\n        data['poem_set-0-DELETE'] = 'on'\n        formset = PoemFormSet(data, instance=poet)\n        self.assertEqual(formset.is_valid(), True)\n        formset.save()\n        self.assertEqual(Poem.objects.count(), 0)\n\n    def test_change_form_deletion_when_invalid(self):\n        \"\"\"\n        Make sure that a change form that is filled out, but marked for deletion\n        doesn't cause validation errors.\n        \"\"\"\n        PoemFormSet = inlineformset_factory(Poet, Poem, can_delete=True)\n        poet = Poet.objects.create(name='test')\n        poem = poet.poem_set.create(name='test poem')\n        data = {\n            'poem_set-TOTAL_FORMS': '1',\n            'poem_set-INITIAL_FORMS': '1',\n            'poem_set-MAX_NUM_FORMS': '0',\n            'poem_set-0-id': six.text_type(poem.id),\n            'poem_set-0-poem': six.text_type(poem.id),\n            'poem_set-0-name': 'x' * 1000,\n        }\n        formset = PoemFormSet(data, instance=poet)\n        # Make sure this form doesn't pass validation.\n        self.assertEqual(formset.is_valid(), False)\n        self.assertEqual(Poem.objects.count(), 1)\n\n        # Then make sure that it *does* pass validation and delete the object,\n        # even though the data isn't actually valid.\n        data['poem_set-0-DELETE'] = 'on'\n        formset = PoemFormSet(data, instance=poet)\n        self.assertEqual(formset.is_valid(), True)\n        formset.save()\n        self.assertEqual(Poem.objects.count(), 0)\n\n    def test_save_new(self):\n        \"\"\"\n        Make sure inlineformsets respect commit=False\n        regression for #10750\n        \"\"\"\n        # exclude some required field from the forms\n        ChildFormSet = inlineformset_factory(School, Child, exclude=['father', 'mother'])\n        school = School.objects.create(name='test')\n        mother = Parent.objects.create(name='mother')\n        father = Parent.objects.create(name='father')\n        data = {\n            'child_set-TOTAL_FORMS': '1',\n            'child_set-INITIAL_FORMS': '0',\n            'child_set-MAX_NUM_FORMS': '0',\n            'child_set-0-name': 'child',\n        }\n        formset = ChildFormSet(data, instance=school)\n        self.assertEqual(formset.is_valid(), True)\n        objects = formset.save(commit=False)\n        for obj in objects:\n            obj.mother = mother\n            obj.father = father\n            obj.save()\n        self.assertEqual(school.child_set.count(), 1)\n\n\nclass InlineFormsetFactoryTest(TestCase):\n    def test_inline_formset_factory(self):\n        \"\"\"\n        These should both work without a problem.\n        \"\"\"\n        inlineformset_factory(Parent, Child, fk_name='mother')\n        inlineformset_factory(Parent, Child, fk_name='father')\n\n    def test_exception_on_unspecified_foreign_key(self):\n        \"\"\"\n        Child has two ForeignKeys to Parent, so if we don't specify which one\n        to use for the inline formset, we should get an exception.\n        \"\"\"\n        six.assertRaisesRegex(self, Exception,\n            \"<class 'regressiontests.inline_formsets.models.Child'> has more than 1 ForeignKey to <class 'regressiontests.inline_formsets.models.Parent'>\",\n            inlineformset_factory, Parent, Child\n        )\n\n    def test_fk_name_not_foreign_key_field_from_child(self):\n        \"\"\"\n        If we specify fk_name, but it isn't a ForeignKey from the child model\n        to the parent model, we should get an exception.\n        \"\"\"\n        self.assertRaises(Exception,\n            \"fk_name 'school' is not a ForeignKey to <class 'regressiontests.inline_formsets.models.Parent'>\",\n            inlineformset_factory, Parent, Child, fk_name='school'\n        )\n\n    def test_non_foreign_key_field(self):\n        \"\"\"\n        If the field specified in fk_name is not a ForeignKey, we should get an\n        exception.\n        \"\"\"\n        six.assertRaisesRegex(self, Exception,\n            \"<class 'regressiontests.inline_formsets.models.Child'> has no field named 'test'\",\n            inlineformset_factory, Parent, Child, fk_name='test'\n        )\n\n    def test_any_iterable_allowed_as_argument_to_exclude(self):\n        # Regression test for #9171.\n        inlineformset_factory(\n            Parent, Child, exclude=['school'], fk_name='mother'\n        )\n\n        inlineformset_factory(\n            Parent, Child, exclude=('school',), fk_name='mother'\n        )\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/inspectdb/__init__.py",
    "content": "\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/inspectdb/models.py",
    "content": "from django.db import models\n\n\nclass People(models.Model):\n    name = models.CharField(max_length=255)\n\nclass Message(models.Model):\n    from_field = models.ForeignKey(People, db_column='from_id')\n\nclass PeopleData(models.Model):\n    people_pk = models.ForeignKey(People, primary_key=True)\n    ssn = models.CharField(max_length=11)\n\nclass PeopleMoreData(models.Model):\n    people_unique = models.ForeignKey(People, unique=True)\n    license = models.CharField(max_length=255)\n\nclass DigitsInColumnName(models.Model):\n    all_digits = models.CharField(max_length=11, db_column='123')\n    leading_digit = models.CharField(max_length=11, db_column='4extra')\n    leading_digits = models.CharField(max_length=11, db_column='45extra')\n\nclass SpecialColumnName(models.Model):\n    field = models.IntegerField(db_column='field')\n    # Underscores\n    field_field_0 = models.IntegerField(db_column='Field_')\n    field_field_1 = models.IntegerField(db_column='Field__')\n    field_field_2 = models.IntegerField(db_column='__field')\n    # Other chars\n    prc_x = models.IntegerField(db_column='prc(%) x')\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/inspectdb/tests.py",
    "content": "from __future__ import unicode_literals\n\nfrom django.core.management import call_command\nfrom django.db import connection\nfrom django.test import TestCase, skipUnlessDBFeature\nfrom django.utils.six import StringIO\n\n\nclass InspectDBTestCase(TestCase):\n\n    def test_stealth_table_name_filter_option(self):\n        out = StringIO()\n        # Lets limit the introspection to tables created for models of this\n        # application\n        call_command('inspectdb',\n                     table_name_filter=lambda tn:tn.startswith('inspectdb_'),\n                     stdout=out)\n        error_message = \"inspectdb has examined a table that should have been filtered out.\"\n        # contrib.contenttypes is one of the apps always installed when running\n        # the Django test suite, check that one of its tables hasn't been\n        # inspected\n        self.assertNotIn(\"class DjangoContentType(models.Model):\", out.getvalue(), msg=error_message)\n\n    @skipUnlessDBFeature('can_introspect_foreign_keys')\n    def test_attribute_name_not_python_keyword(self):\n        out = StringIO()\n        # Lets limit the introspection to tables created for models of this\n        # application\n        call_command('inspectdb',\n                     table_name_filter=lambda tn:tn.startswith('inspectdb_'),\n                     stdout=out)\n        output = out.getvalue()\n        error_message = \"inspectdb generated an attribute name which is a python keyword\"\n        self.assertNotIn(\"from = models.ForeignKey(InspectdbPeople)\", output, msg=error_message)\n        # As InspectdbPeople model is defined after InspectdbMessage, it should be quoted\n        self.assertIn(\"from_field = models.ForeignKey('InspectdbPeople', db_column='from_id')\",\n            output)\n        self.assertIn(\"people_pk = models.ForeignKey(InspectdbPeople, primary_key=True)\",\n            output)\n        self.assertIn(\"people_unique = models.ForeignKey(InspectdbPeople, unique=True)\",\n            output)\n\n    def test_digits_column_name_introspection(self):\n        \"\"\"Introspection of column names consist/start with digits (#16536/#17676)\"\"\"\n        out = StringIO()\n        # Lets limit the introspection to tables created for models of this\n        # application\n        call_command('inspectdb',\n                     table_name_filter=lambda tn:tn.startswith('inspectdb_'),\n                     stdout=out)\n        output = out.getvalue()\n        error_message = \"inspectdb generated a model field name which is a number\"\n        self.assertNotIn(\"    123 = models.CharField\", output, msg=error_message)\n        self.assertIn(\"number_123 = models.CharField\", output)\n\n        error_message = \"inspectdb generated a model field name which starts with a digit\"\n        self.assertNotIn(\"    4extra = models.CharField\", output, msg=error_message)\n        self.assertIn(\"number_4extra = models.CharField\", output)\n\n        self.assertNotIn(\"    45extra = models.CharField\", output, msg=error_message)\n        self.assertIn(\"number_45extra = models.CharField\", output)\n\n    def test_special_column_name_introspection(self):\n        \"\"\"\n        Introspection of column names containing special characters,\n        unsuitable for Python identifiers\n        \"\"\"\n        out = StringIO()\n        call_command('inspectdb', stdout=out)\n        output = out.getvalue()\n        base_name = 'Field' if connection.vendor != 'oracle' else 'field'\n        self.assertIn(\"field = models.IntegerField()\", output)\n        self.assertIn(\"field_field = models.IntegerField(db_column='%s_')\" % base_name, output)\n        self.assertIn(\"field_field_0 = models.IntegerField(db_column='%s__')\" % base_name, output)\n        self.assertIn(\"field_field_1 = models.IntegerField(db_column='__field')\", output)\n        self.assertIn(\"prc_x = models.IntegerField(db_column='prc(%) x')\", output)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/introspection/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/introspection/models.py",
    "content": "from __future__ import unicode_literals\n\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n@python_2_unicode_compatible\nclass Reporter(models.Model):\n    first_name = models.CharField(max_length=30)\n    last_name = models.CharField(max_length=30)\n    email = models.EmailField()\n    facebook_user_id = models.BigIntegerField(null=True)\n\n    class Meta:\n        unique_together = ('first_name', 'last_name')\n\n    def __str__(self):\n        return \"%s %s\" % (self.first_name, self.last_name)\n\n\n@python_2_unicode_compatible\nclass Article(models.Model):\n    headline = models.CharField(max_length=100)\n    pub_date = models.DateField()\n    reporter = models.ForeignKey(Reporter)\n\n    def __str__(self):\n        return self.headline\n\n    class Meta:\n        ordering = ('headline',)\n        index_together = [\n            [\"headline\", \"pub_date\"],\n        ]\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/introspection/tests.py",
    "content": "from __future__ import absolute_import, unicode_literals\n\nfrom functools import update_wrapper\n\nfrom django.db import connection\nfrom django.test import TestCase, skipUnlessDBFeature, skipIfDBFeature\nfrom django.utils import six, unittest\n\nfrom .models import Reporter, Article\n\nif connection.vendor == 'oracle':\n    expectedFailureOnOracle = unittest.expectedFailure\nelse:\n    expectedFailureOnOracle = lambda f: f\n\n\n# The introspection module is optional, so methods tested here might raise\n# NotImplementedError. This is perfectly acceptable behavior for the backend\n# in question, but the tests need to handle this without failing. Ideally we'd\n# skip these tests, but until #4788 is done we'll just ignore them.\n#\n# The easiest way to accomplish this is to decorate every test case with a\n# wrapper that ignores the exception.\n#\n# The metaclass is just for fun.\n\n\ndef ignore_not_implemented(func):\n    def _inner(*args, **kwargs):\n        try:\n            return func(*args, **kwargs)\n        except NotImplementedError:\n            return None\n    update_wrapper(_inner, func)\n    return _inner\n\n\nclass IgnoreNotimplementedError(type):\n    def __new__(cls, name, bases, attrs):\n        for k, v in attrs.items():\n            if k.startswith('test'):\n                attrs[k] = ignore_not_implemented(v)\n        return type.__new__(cls, name, bases, attrs)\n\n\nclass IntrospectionTests(six.with_metaclass(IgnoreNotimplementedError, TestCase)):\n    def test_table_names(self):\n        tl = connection.introspection.table_names()\n        self.assertEqual(tl, sorted(tl))\n        self.assertTrue(Reporter._meta.db_table in tl,\n                     \"'%s' isn't in table_list().\" % Reporter._meta.db_table)\n        self.assertTrue(Article._meta.db_table in tl,\n                     \"'%s' isn't in table_list().\" % Article._meta.db_table)\n\n    def test_django_table_names(self):\n        cursor = connection.cursor()\n        cursor.execute('CREATE TABLE django_ixn_test_table (id INTEGER);')\n        tl = connection.introspection.django_table_names()\n        cursor.execute(\"DROP TABLE django_ixn_test_table;\")\n        self.assertTrue('django_ixn_testcase_table' not in tl,\n                     \"django_table_names() returned a non-Django table\")\n\n    def test_django_table_names_retval_type(self):\n        # Ticket #15216\n        cursor = connection.cursor()\n        cursor.execute('CREATE TABLE django_ixn_test_table (id INTEGER);')\n\n        tl = connection.introspection.django_table_names(only_existing=True)\n        self.assertIs(type(tl), list)\n\n        tl = connection.introspection.django_table_names(only_existing=False)\n        self.assertIs(type(tl), list)\n\n    def test_installed_models(self):\n        tables = [Article._meta.db_table, Reporter._meta.db_table]\n        models = connection.introspection.installed_models(tables)\n        self.assertEqual(models, set([Article, Reporter]))\n\n    def test_sequence_list(self):\n        sequences = connection.introspection.sequence_list()\n        expected = {'table': Reporter._meta.db_table, 'column': 'id'}\n        self.assertTrue(expected in sequences,\n                     'Reporter sequence not found in sequence_list()')\n\n    def test_get_table_description_names(self):\n        cursor = connection.cursor()\n        desc = connection.introspection.get_table_description(cursor, Reporter._meta.db_table)\n        self.assertEqual([r[0] for r in desc],\n                         [f.column for f in Reporter._meta.fields])\n\n    def test_get_table_description_types(self):\n        cursor = connection.cursor()\n        desc = connection.introspection.get_table_description(cursor, Reporter._meta.db_table)\n        self.assertEqual(\n            [datatype(r[1], r) for r in desc],\n            ['IntegerField', 'CharField', 'CharField', 'CharField', 'BigIntegerField']\n        )\n\n    # The following test fails on Oracle due to #17202 (can't correctly\n    # inspect the length of character columns).\n    @expectedFailureOnOracle\n    def test_get_table_description_col_lengths(self):\n        cursor = connection.cursor()\n        desc = connection.introspection.get_table_description(cursor, Reporter._meta.db_table)\n        self.assertEqual(\n            [r[3] for r in desc if datatype(r[1], r) == 'CharField'],\n            [30, 30, 75]\n        )\n\n    # Oracle forces null=True under the hood in some cases (see\n    # https://docs.djangoproject.com/en/dev/ref/databases/#null-and-empty-strings)\n    # so its idea about null_ok in cursor.description is different from ours.\n    @skipIfDBFeature('interprets_empty_strings_as_nulls')\n    def test_get_table_description_nullable(self):\n        cursor = connection.cursor()\n        desc = connection.introspection.get_table_description(cursor, Reporter._meta.db_table)\n        self.assertEqual(\n            [r[6] for r in desc],\n            [False, False, False, False, True]\n        )\n\n    # Regression test for #9991 - 'real' types in postgres\n    @skipUnlessDBFeature('has_real_datatype')\n    def test_postgresql_real_type(self):\n        cursor = connection.cursor()\n        cursor.execute(\"CREATE TABLE django_ixn_real_test_table (number REAL);\")\n        desc = connection.introspection.get_table_description(cursor, 'django_ixn_real_test_table')\n        cursor.execute('DROP TABLE django_ixn_real_test_table;')\n        self.assertEqual(datatype(desc[0][1], desc[0]), 'FloatField')\n\n    def test_get_relations(self):\n        cursor = connection.cursor()\n        relations = connection.introspection.get_relations(cursor, Article._meta.db_table)\n\n        # Older versions of MySQL don't have the chops to report on this stuff,\n        # so just skip it if no relations come back. If they do, though, we\n        # should test that the response is correct.\n        if relations:\n            # That's {field_index: (field_index_other_table, other_table)}\n            self.assertEqual(relations, {3: (0, Reporter._meta.db_table)})\n\n    def test_get_key_columns(self):\n        cursor = connection.cursor()\n        key_columns = connection.introspection.get_key_columns(cursor, Article._meta.db_table)\n        self.assertEqual(key_columns, [('reporter_id', Reporter._meta.db_table, 'id')])\n\n    def test_get_primary_key_column(self):\n        cursor = connection.cursor()\n        primary_key_column = connection.introspection.get_primary_key_column(cursor, Article._meta.db_table)\n        self.assertEqual(primary_key_column, 'id')\n\n    def test_get_indexes(self):\n        cursor = connection.cursor()\n        indexes = connection.introspection.get_indexes(cursor, Article._meta.db_table)\n        self.assertEqual(indexes['reporter_id'], {'unique': False, 'primary_key': False})\n\n    def test_get_indexes_multicol(self):\n        \"\"\"\n        Test that multicolumn indexes are not included in the introspection\n        results.\n        \"\"\"\n        cursor = connection.cursor()\n        indexes = connection.introspection.get_indexes(cursor, Reporter._meta.db_table)\n        self.assertNotIn('first_name', indexes)\n        self.assertIn('id', indexes)\n\n\ndef datatype(dbtype, description):\n    \"\"\"Helper to convert a data type into a string.\"\"\"\n    dt = connection.introspection.get_field_type(dbtype, description)\n    if type(dt) is tuple:\n        return dt[0]\n    else:\n        return dt\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/localflavor/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/localflavor/generic/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/localflavor/generic/tests.py",
    "content": "from __future__ import unicode_literals\n\nimport datetime\n\nfrom django.contrib.localflavor.generic.forms import DateField, DateTimeField\n\nfrom django.test import SimpleTestCase\n\n\nclass GenericLocalFlavorTests(SimpleTestCase):\n    def test_GenericDateField(self):\n        error_invalid = ['Enter a valid date.']\n        valid = {\n            datetime.date(2006, 10, 25): datetime.date(2006, 10, 25),\n            datetime.datetime(2006, 10, 25, 14, 30): datetime.date(2006, 10, 25),\n            datetime.datetime(2006, 10, 25, 14, 30, 59): datetime.date(2006, 10, 25),\n            datetime.datetime(2006, 10, 25, 14, 30, 59, 200): datetime.date(2006, 10, 25),\n            '2006-10-25': datetime.date(2006, 10, 25),\n            '25/10/2006': datetime.date(2006, 10, 25),\n            '25/10/06': datetime.date(2006, 10, 25),\n            'Oct 25 2006': datetime.date(2006, 10, 25),\n            'October 25 2006': datetime.date(2006, 10, 25),\n            'October 25, 2006': datetime.date(2006, 10, 25),\n            '25 October 2006': datetime.date(2006, 10, 25),\n            '25 October, 2006': datetime.date(2006, 10, 25),\n        }\n        invalid = {\n            '2006-4-31': error_invalid,\n            '200a-10-25': error_invalid,\n            '10/25/06': error_invalid,\n        }\n        self.assertFieldOutput(DateField, valid, invalid, empty_value=None)\n\n        # DateField with optional input_formats parameter\n        valid = {\n            datetime.date(2006, 10, 25): datetime.date(2006, 10, 25),\n            datetime.datetime(2006, 10, 25, 14, 30): datetime.date(2006, 10, 25),\n            '2006 10 25': datetime.date(2006, 10, 25),\n        }\n        invalid = {\n            '2006-10-25': error_invalid,\n            '25/10/2006': error_invalid,\n            '25/10/06': error_invalid,\n        }\n        kwargs = {'input_formats':['%Y %m %d'],}\n        self.assertFieldOutput(DateField,\n            valid, invalid, field_kwargs=kwargs, empty_value=None\n        )\n\n    def test_GenericDateTimeField(self):\n        error_invalid = ['Enter a valid date/time.']\n        valid = {\n            datetime.date(2006, 10, 25): datetime.datetime(2006, 10, 25, 0, 0),\n            datetime.datetime(2006, 10, 25, 14, 30): datetime.datetime(2006, 10, 25, 14, 30),\n            datetime.datetime(2006, 10, 25, 14, 30, 59): datetime.datetime(2006, 10, 25, 14, 30, 59),\n            datetime.datetime(2006, 10, 25, 14, 30, 59, 200): datetime.datetime(2006, 10, 25, 14, 30, 59, 200),\n            '2006-10-25 14:30:45': datetime.datetime(2006, 10, 25, 14, 30, 45),\n            '2006-10-25 14:30:00': datetime.datetime(2006, 10, 25, 14, 30),\n            '2006-10-25 14:30': datetime.datetime(2006, 10, 25, 14, 30),\n            '2006-10-25': datetime.datetime(2006, 10, 25, 0, 0),\n            '25/10/2006 14:30:45': datetime.datetime(2006, 10, 25, 14, 30, 45),\n            '25/10/2006 14:30:00': datetime.datetime(2006, 10, 25, 14, 30),\n            '25/10/2006 14:30': datetime.datetime(2006, 10, 25, 14, 30),\n            '25/10/2006': datetime.datetime(2006, 10, 25, 0, 0),\n            '25/10/06 14:30:45': datetime.datetime(2006, 10, 25, 14, 30, 45),\n            '25/10/06 14:30:00': datetime.datetime(2006, 10, 25, 14, 30),\n            '25/10/06 14:30': datetime.datetime(2006, 10, 25, 14, 30),\n            '25/10/06': datetime.datetime(2006, 10, 25, 0, 0),\n        }\n        invalid = {\n            'hello': error_invalid,\n            '2006-10-25 4:30 p.m.': error_invalid,\n        }\n        self.assertFieldOutput(DateTimeField, valid, invalid, empty_value=None)\n\n        # DateTimeField with optional input_formats paramter\n        valid = {\n            datetime.date(2006, 10, 25): datetime.datetime(2006, 10, 25, 0, 0),\n            datetime.datetime(2006, 10, 25, 14, 30): datetime.datetime(2006, 10, 25, 14, 30),\n            datetime.datetime(2006, 10, 25, 14, 30, 59): datetime.datetime(2006, 10, 25, 14, 30, 59),\n            datetime.datetime(2006, 10, 25, 14, 30, 59, 200): datetime.datetime(2006, 10, 25, 14, 30, 59, 200),\n            '2006 10 25 2:30 PM': datetime.datetime(2006, 10, 25, 14, 30),\n        }\n        invalid = {\n            '2006-10-25 14:30:45': error_invalid,\n        }\n        kwargs = {'input_formats':['%Y %m %d %I:%M %p'],}\n        self.assertFieldOutput(DateTimeField,\n            valid, invalid, field_kwargs=kwargs, empty_value=None\n        )\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/localflavor/models.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/localflavor/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom .generic.tests import GenericLocalFlavorTests\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/logging_tests/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/logging_tests/logconfig.py",
    "content": "import logging\n\nfrom django.conf import settings\n\nclass MyHandler(logging.Handler):\n    def __init__(self):\n        logging.Handler.__init__(self)\n        self.config = settings.LOGGING\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/logging_tests/models.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/logging_tests/tests.py",
    "content": "from __future__ import unicode_literals\n\nimport copy\nimport logging\nimport sys\nimport warnings\n\nfrom django.conf import compat_patch_logging_config, LazySettings\nfrom django.core import mail\nfrom django.test import TestCase, RequestFactory\nfrom django.test.utils import override_settings\nfrom django.utils.encoding import force_text\nfrom django.utils.log import CallbackFilter, RequireDebugFalse\nfrom django.utils.six import StringIO\nfrom django.utils.unittest import skipUnless\n\nfrom ..admin_scripts.tests import AdminScriptTestCase\n\nPYVERS = sys.version_info[:2]\n\n# logging config prior to using filter with mail_admins\nOLD_LOGGING = {\n    'version': 1,\n    'disable_existing_loggers': False,\n    'handlers': {\n        'mail_admins': {\n            'level': 'ERROR',\n            'class': 'django.utils.log.AdminEmailHandler'\n        }\n    },\n    'loggers': {\n        'django.request': {\n            'handlers': ['mail_admins'],\n            'level': 'ERROR',\n            'propagate': True,\n        },\n    }\n}\n\n\nclass PatchLoggingConfigTest(TestCase):\n    \"\"\"\n    Tests for backward-compat shim for #16288. These tests should be removed in\n    Django 1.6 when that shim and DeprecationWarning are removed.\n\n    \"\"\"\n    def test_filter_added(self):\n        \"\"\"\n        Test that debug-false filter is added to mail_admins handler if it has\n        no filters.\n\n        \"\"\"\n        config = copy.deepcopy(OLD_LOGGING)\n\n        with warnings.catch_warnings(record=True) as w:\n            warnings.simplefilter(\"always\")\n            compat_patch_logging_config(config)\n            self.assertEqual(len(w), 1)\n\n        self.assertEqual(\n            config[\"handlers\"][\"mail_admins\"][\"filters\"],\n            ['require_debug_false'])\n\n    def test_filter_configuration(self):\n        \"\"\"\n        Test that the auto-added require_debug_false filter is an instance of\n        `RequireDebugFalse` filter class.\n\n        \"\"\"\n        config = copy.deepcopy(OLD_LOGGING)\n        with warnings.catch_warnings(record=True):\n            compat_patch_logging_config(config)\n\n        flt = config[\"filters\"][\"require_debug_false\"]\n        self.assertEqual(flt[\"()\"], \"django.utils.log.RequireDebugFalse\")\n\n    def test_require_debug_false_filter(self):\n        \"\"\"\n        Test the RequireDebugFalse filter class.\n\n        \"\"\"\n        filter_ = RequireDebugFalse()\n\n        with self.settings(DEBUG=True):\n            self.assertEqual(filter_.filter(\"record is not used\"), False)\n\n        with self.settings(DEBUG=False):\n            self.assertEqual(filter_.filter(\"record is not used\"), True)\n\n    def test_no_patch_if_filters_key_exists(self):\n        \"\"\"\n        Test that the logging configuration is not modified if the mail_admins\n        handler already has a \"filters\" key.\n\n        \"\"\"\n        config = copy.deepcopy(OLD_LOGGING)\n        config[\"handlers\"][\"mail_admins\"][\"filters\"] = []\n        new_config = copy.deepcopy(config)\n        compat_patch_logging_config(new_config)\n\n        self.assertEqual(config, new_config)\n\n    def test_no_patch_if_no_mail_admins_handler(self):\n        \"\"\"\n        Test that the logging configuration is not modified if the mail_admins\n        handler is not present.\n\n        \"\"\"\n        config = copy.deepcopy(OLD_LOGGING)\n        config[\"handlers\"].pop(\"mail_admins\")\n        new_config = copy.deepcopy(config)\n        compat_patch_logging_config(new_config)\n\n        self.assertEqual(config, new_config)\n\n\nclass DefaultLoggingTest(TestCase):\n    def setUp(self):\n        self.logger = logging.getLogger('django')\n        self.old_stream = self.logger.handlers[0].stream\n\n    def tearDown(self):\n        self.logger.handlers[0].stream = self.old_stream\n\n    def test_django_logger(self):\n        \"\"\"\n        The 'django' base logger only output anything when DEBUG=True.\n        \"\"\"\n        output = StringIO()\n        self.logger.handlers[0].stream = output\n        self.logger.error(\"Hey, this is an error.\")\n        self.assertEqual(output.getvalue(), '')\n\n        with self.settings(DEBUG=True):\n            self.logger.error(\"Hey, this is an error.\")\n            self.assertEqual(output.getvalue(), 'Hey, this is an error.\\n')\n\n@skipUnless(PYVERS > (2,6), \"warnings captured only in Python >= 2.7\")\nclass WarningLoggerTests(TestCase):\n    \"\"\"\n    Tests that warnings output for DeprecationWarnings is enabled\n    and captured to the logging system\n    \"\"\"\n    def setUp(self):\n        # If tests are invoke with \"-Wall\" (or any -W flag actually) then\n        # warning logging gets disabled (see django/conf/__init__.py). However,\n        # these tests expect warnings to be logged, so manually force warnings\n        # to the logs. Use getattr() here because the logging capture state is\n        # undocumented and (I assume) brittle.\n        self._old_capture_state = bool(getattr(logging, '_warnings_showwarning', False))\n        logging.captureWarnings(True)\n\n        # this convoluted setup is to avoid printing this deprecation to\n        # stderr during test running - as the test runner forces deprecations\n        # to be displayed at the global py.warnings level\n        self.logger = logging.getLogger('py.warnings')\n        self.outputs = []\n        self.old_streams = []\n        for handler in self.logger.handlers:\n            self.old_streams.append(handler.stream)\n            self.outputs.append(StringIO())\n            handler.stream = self.outputs[-1]\n\n    def tearDown(self):\n        for i, handler in enumerate(self.logger.handlers):\n            self.logger.handlers[i].stream = self.old_streams[i]\n\n        # Reset warnings state.\n        logging.captureWarnings(self._old_capture_state)\n\n    @override_settings(DEBUG=True)\n    def test_warnings_capture(self):\n        warnings.warn('Foo Deprecated', DeprecationWarning)\n        output = force_text(self.outputs[0].getvalue())\n        self.assertTrue('Foo Deprecated' in output)\n\n    def test_warnings_capture_debug_false(self):\n        warnings.warn('Foo Deprecated', DeprecationWarning)\n        output = force_text(self.outputs[0].getvalue())\n        self.assertFalse('Foo Deprecated' in output)\n\n\nclass CallbackFilterTest(TestCase):\n    def test_sense(self):\n        f_false = CallbackFilter(lambda r: False)\n        f_true = CallbackFilter(lambda r: True)\n\n        self.assertEqual(f_false.filter(\"record\"), False)\n        self.assertEqual(f_true.filter(\"record\"), True)\n\n    def test_passes_on_record(self):\n        collector = []\n\n        def _callback(record):\n            collector.append(record)\n            return True\n        f = CallbackFilter(_callback)\n\n        f.filter(\"a record\")\n\n        self.assertEqual(collector, [\"a record\"])\n\n\nclass AdminEmailHandlerTest(TestCase):\n    logger = logging.getLogger('django.request')\n\n    def get_admin_email_handler(self, logger):\n        # Inspired from regressiontests/views/views.py: send_log()\n        # ensuring the AdminEmailHandler does not get filtered out\n        # even with DEBUG=True.\n        admin_email_handler = [\n            h for h in logger.handlers\n            if h.__class__.__name__ == \"AdminEmailHandler\"\n            ][0]\n        return admin_email_handler\n\n    @override_settings(\n            ADMINS=(('whatever admin', 'admin@example.com'),),\n            EMAIL_SUBJECT_PREFIX='-SuperAwesomeSubject-'\n        )\n    def test_accepts_args(self):\n        \"\"\"\n        Ensure that user-supplied arguments and the EMAIL_SUBJECT_PREFIX\n        setting are used to compose the email subject.\n        Refs #16736.\n        \"\"\"\n        message = \"Custom message that says '%s' and '%s'\"\n        token1 = 'ping'\n        token2 = 'pong'\n\n        admin_email_handler = self.get_admin_email_handler(self.logger)\n        # Backup then override original filters\n        orig_filters = admin_email_handler.filters\n        try:\n            admin_email_handler.filters = []\n\n            self.logger.error(message, token1, token2)\n\n            self.assertEqual(len(mail.outbox), 1)\n            self.assertEqual(mail.outbox[0].to, ['admin@example.com'])\n            self.assertEqual(mail.outbox[0].subject,\n                             \"-SuperAwesomeSubject-ERROR: Custom message that says 'ping' and 'pong'\")\n        finally:\n            # Restore original filters\n            admin_email_handler.filters = orig_filters\n\n    @override_settings(\n            ADMINS=(('whatever admin', 'admin@example.com'),),\n            EMAIL_SUBJECT_PREFIX='-SuperAwesomeSubject-',\n            INTERNAL_IPS=('127.0.0.1',),\n        )\n    def test_accepts_args_and_request(self):\n        \"\"\"\n        Ensure that the subject is also handled if being\n        passed a request object.\n        \"\"\"\n        message = \"Custom message that says '%s' and '%s'\"\n        token1 = 'ping'\n        token2 = 'pong'\n\n        admin_email_handler = self.get_admin_email_handler(self.logger)\n        # Backup then override original filters\n        orig_filters = admin_email_handler.filters\n        try:\n            admin_email_handler.filters = []\n            rf = RequestFactory()\n            request = rf.get('/')\n            self.logger.error(message, token1, token2,\n                extra={\n                    'status_code': 403,\n                    'request': request,\n                }\n            )\n            self.assertEqual(len(mail.outbox), 1)\n            self.assertEqual(mail.outbox[0].to, ['admin@example.com'])\n            self.assertEqual(mail.outbox[0].subject,\n                             \"-SuperAwesomeSubject-ERROR (internal IP): Custom message that says 'ping' and 'pong'\")\n        finally:\n            # Restore original filters\n            admin_email_handler.filters = orig_filters\n\n    @override_settings(\n            ADMINS=(('admin', 'admin@example.com'),),\n            EMAIL_SUBJECT_PREFIX='',\n            DEBUG=False,\n        )\n    def test_subject_accepts_newlines(self):\n        \"\"\"\n        Ensure that newlines in email reports' subjects are escaped to avoid\n        AdminErrorHandler to fail.\n        Refs #17281.\n        \"\"\"\n        message = 'Message \\r\\n with newlines'\n        expected_subject = 'ERROR: Message \\\\r\\\\n with newlines'\n\n        self.assertEqual(len(mail.outbox), 0)\n\n        self.logger.error(message)\n\n        self.assertEqual(len(mail.outbox), 1)\n        self.assertFalse('\\n' in mail.outbox[0].subject)\n        self.assertFalse('\\r' in mail.outbox[0].subject)\n        self.assertEqual(mail.outbox[0].subject, expected_subject)\n\n    @override_settings(\n            ADMINS=(('admin', 'admin@example.com'),),\n            EMAIL_SUBJECT_PREFIX='',\n            DEBUG=False,\n        )\n    def test_truncate_subject(self):\n        \"\"\"\n        RFC 2822's hard limit is 998 characters per line.\n        So, minus \"Subject: \", the actual subject must be no longer than 989\n        characters.\n        Refs #17281.\n        \"\"\"\n        message = 'a' * 1000\n        expected_subject = 'ERROR: aa' + 'a' * 980\n\n        self.assertEqual(len(mail.outbox), 0)\n\n        self.logger.error(message)\n\n        self.assertEqual(len(mail.outbox), 1)\n        self.assertEqual(mail.outbox[0].subject, expected_subject)\n\n\nclass SettingsConfigTest(AdminScriptTestCase):\n    \"\"\"\n    Test that accessing settings in a custom logging handler does not trigger\n    a circular import error.\n    \"\"\"\n    def setUp(self):\n        log_config = \"\"\"{\n    'version': 1,\n    'handlers': {\n        'custom_handler': {\n            'level': 'INFO',\n            'class': 'logging_tests.logconfig.MyHandler',\n        }\n    }\n}\"\"\"\n        self.write_settings('settings.py', sdict={'LOGGING': log_config})\n\n    def tearDown(self):\n        self.remove_settings('settings.py')\n\n    def test_circular_dependency(self):\n        # validate is just an example command to trigger settings configuration\n        out, err = self.run_manage(['validate'])\n        self.assertNoOutput(err)\n        self.assertOutput(out, \"0 errors found\")\n\n\ndef dictConfig(config):\n    dictConfig.called = True\ndictConfig.called = False\n\n\nclass SettingsConfigureLogging(TestCase):\n    \"\"\"\n    Test that calling settings.configure() initializes the logging\n    configuration.\n    \"\"\"\n    def test_configure_initializes_logging(self):\n        settings = LazySettings()\n        settings.configure(\n            LOGGING_CONFIG='regressiontests.logging_tests.tests.dictConfig')\n        self.assertTrue(dictConfig.called)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/m2m_regress/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/m2m_regress/models.py",
    "content": "from django.contrib.auth import models as auth\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n# No related name is needed here, since symmetrical relations are not\n# explicitly reversible.\n@python_2_unicode_compatible\nclass SelfRefer(models.Model):\n    name = models.CharField(max_length=10)\n    references = models.ManyToManyField('self')\n    related = models.ManyToManyField('self')\n\n    def __str__(self):\n        return self.name\n\n@python_2_unicode_compatible\nclass Tag(models.Model):\n    name = models.CharField(max_length=10)\n\n    def __str__(self):\n        return self.name\n\n# Regression for #11956 -- a many to many to the base class\n@python_2_unicode_compatible\nclass TagCollection(Tag):\n    tags = models.ManyToManyField(Tag, related_name='tag_collections')\n\n    def __str__(self):\n        return self.name\n\n# A related_name is required on one of the ManyToManyField entries here because\n# they are both addressable as reverse relations from Tag.\n@python_2_unicode_compatible\nclass Entry(models.Model):\n    name = models.CharField(max_length=10)\n    topics = models.ManyToManyField(Tag)\n    related = models.ManyToManyField(Tag, related_name=\"similar\")\n\n    def __str__(self):\n        return self.name\n\n# Two models both inheriting from a base model with a self-referential m2m field\nclass SelfReferChild(SelfRefer):\n    pass\n\nclass SelfReferChildSibling(SelfRefer):\n    pass\n\n# Many-to-Many relation between models, where one of the PK's isn't an Autofield\nclass Line(models.Model):\n    name = models.CharField(max_length=100)\n\nclass Worksheet(models.Model):\n    id = models.CharField(primary_key=True, max_length=100)\n    lines = models.ManyToManyField(Line, blank=True, null=True)\n\n# Regression for #11226 -- A model with the same name that another one to\n# which it has a m2m relation. This shouldn't cause a name clash between\n# the automatically created m2m intermediary table FK field names when\n# running syncdb\nclass User(models.Model):\n    name = models.CharField(max_length=30)\n    friends = models.ManyToManyField(auth.User)\n\n\nclass BadModelWithSplit(models.Model):\n    name = models.CharField(max_length=1)\n\n    def split(self):\n        raise RuntimeError('split should not be called')\n\n    class Meta:\n        abstract = True\n\n\nclass RegressionModelSplit(BadModelWithSplit):\n    \"\"\"\n    Model with a split method should not cause an error in add_lazy_relation\n    \"\"\"\n    others = models.ManyToManyField('self')\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/m2m_regress/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom django.core.exceptions import FieldError\nfrom django.test import TestCase\nfrom django.utils import six\n\nfrom .models import (SelfRefer, Tag, TagCollection, Entry, SelfReferChild,\n    SelfReferChildSibling, Worksheet, RegressionModelSplit)\n\n\nclass M2MRegressionTests(TestCase):\n    def test_multiple_m2m(self):\n        # Multiple m2m references to model must be distinguished when\n        # accessing the relations through an instance attribute.\n\n        s1 = SelfRefer.objects.create(name='s1')\n        s2 = SelfRefer.objects.create(name='s2')\n        s3 = SelfRefer.objects.create(name='s3')\n        s1.references.add(s2)\n        s1.related.add(s3)\n\n        e1 = Entry.objects.create(name='e1')\n        t1 = Tag.objects.create(name='t1')\n        t2 = Tag.objects.create(name='t2')\n\n        e1.topics.add(t1)\n        e1.related.add(t2)\n\n        self.assertQuerysetEqual(s1.references.all(), [\"<SelfRefer: s2>\"])\n        self.assertQuerysetEqual(s1.related.all(), [\"<SelfRefer: s3>\"])\n\n        self.assertQuerysetEqual(e1.topics.all(), [\"<Tag: t1>\"])\n        self.assertQuerysetEqual(e1.related.all(), [\"<Tag: t2>\"])\n\n    def test_internal_related_name_not_in_error_msg(self):\n        # The secret internal related names for self-referential many-to-many\n        # fields shouldn't appear in the list when an error is made.\n\n        six.assertRaisesRegex(self, FieldError,\n            \"Choices are: id, name, references, related, selfreferchild, selfreferchildsibling$\",\n            lambda: SelfRefer.objects.filter(porcupine='fred')\n        )\n\n    def test_m2m_inheritance_symmetry(self):\n        # Test to ensure that the relationship between two inherited models\n        # with a self-referential m2m field maintains symmetry\n\n        sr_child = SelfReferChild(name=\"Hanna\")\n        sr_child.save()\n\n        sr_sibling = SelfReferChildSibling(name=\"Beth\")\n        sr_sibling.save()\n        sr_child.related.add(sr_sibling)\n\n        self.assertQuerysetEqual(sr_child.related.all(), [\"<SelfRefer: Beth>\"])\n        self.assertQuerysetEqual(sr_sibling.related.all(), [\"<SelfRefer: Hanna>\"])\n\n    def test_m2m_pk_field_type(self):\n        # Regression for #11311 - The primary key for models in a m2m relation\n        # doesn't have to be an AutoField\n\n        w = Worksheet(id='abc')\n        w.save()\n        w.delete()\n\n    def test_add_m2m_with_base_class(self):\n        # Regression for #11956 -- You can add an object to a m2m with the\n        # base class without causing integrity errors\n\n        t1 = Tag.objects.create(name='t1')\n        t2 = Tag.objects.create(name='t2')\n\n        c1 = TagCollection.objects.create(name='c1')\n        c1.tags = [t1, t2]\n        c1 = TagCollection.objects.get(name='c1')\n\n        self.assertQuerysetEqual(c1.tags.all(), [\"<Tag: t1>\", \"<Tag: t2>\"])\n        self.assertQuerysetEqual(t1.tag_collections.all(), [\"<TagCollection: c1>\"])\n\n    def test_manager_class_caching(self):\n        e1 = Entry.objects.create()\n        e2 = Entry.objects.create()\n        t1 = Tag.objects.create()\n        t2 = Tag.objects.create()\n\n        # Get same manager twice in a row:\n        self.assertTrue(t1.entry_set.__class__ is t1.entry_set.__class__)\n        self.assertTrue(e1.topics.__class__ is e1.topics.__class__)\n\n        # Get same manager for different instances\n        self.assertTrue(e1.topics.__class__ is e2.topics.__class__)\n        self.assertTrue(t1.entry_set.__class__ is t2.entry_set.__class__)\n\n    def test_m2m_abstract_split(self):\n        # Regression for #19236 - an abstract class with a 'split' method\n        # causes a TypeError in add_lazy_relation\n        m1 = RegressionModelSplit(name='1')\n        m1.save()\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/m2m_through_regress/__init__.py",
    "content": "\n\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/m2m_through_regress/fixtures/m2m_through.json",
    "content": "[\n    {\n        \"pk\": \"1\",\n        \"model\": \"m2m_through_regress.person\",\n        \"fields\": {\n            \"name\": \"Guido\"\n        }\n    },\n    {\n        \"pk\": \"1\",\n        \"model\": \"auth.user\",\n        \"fields\": {\n             \"username\": \"Guido\",\n             \"email\": \"bdfl@python.org\",\n             \"password\": \"abcde\"\n        }\n    },\n    {\n        \"pk\": \"1\",\n        \"model\": \"m2m_through_regress.group\",\n        \"fields\": {\n            \"name\": \"Python Core Group\"\n        }\n    },\n    {\n        \"pk\": \"1\",\n        \"model\": \"m2m_through_regress.usermembership\",\n        \"fields\": {\n            \"user\": \"1\",\n            \"group\": \"1\",\n            \"price\": \"100\"\n        }\n    }\n]"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/m2m_through_regress/models.py",
    "content": "from __future__ import unicode_literals\n\nfrom django.contrib.auth.models import User\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n# Forward declared intermediate model\n@python_2_unicode_compatible\nclass Membership(models.Model):\n    person = models.ForeignKey('Person')\n    group = models.ForeignKey('Group')\n    price = models.IntegerField(default=100)\n\n    def __str__(self):\n        return \"%s is a member of %s\" % (self.person.name, self.group.name)\n\n# using custom id column to test ticket #11107\n@python_2_unicode_compatible\nclass UserMembership(models.Model):\n    id = models.AutoField(db_column='usermembership_id', primary_key=True)\n    user = models.ForeignKey(User)\n    group = models.ForeignKey('Group')\n    price = models.IntegerField(default=100)\n\n    def __str__(self):\n        return \"%s is a user and member of %s\" % (self.user.username, self.group.name)\n\n@python_2_unicode_compatible\nclass Person(models.Model):\n    name = models.CharField(max_length=128)\n\n    def __str__(self):\n        return self.name\n\n@python_2_unicode_compatible\nclass Group(models.Model):\n    name = models.CharField(max_length=128)\n    # Membership object defined as a class\n    members = models.ManyToManyField(Person, through=Membership)\n    user_members = models.ManyToManyField(User, through='UserMembership')\n\n    def __str__(self):\n        return self.name\n\n# A set of models that use an non-abstract inherited model as the 'through' model.\nclass A(models.Model):\n    a_text = models.CharField(max_length=20)\n\nclass ThroughBase(models.Model):\n    a = models.ForeignKey(A)\n    b = models.ForeignKey('B')\n\nclass Through(ThroughBase):\n    extra = models.CharField(max_length=20)\n\nclass B(models.Model):\n    b_text = models.CharField(max_length=20)\n    a_list = models.ManyToManyField(A, through=Through)\n\n\n# Using to_field on the through model\n@python_2_unicode_compatible\nclass Car(models.Model):\n    make = models.CharField(max_length=20, unique=True, null=True)\n    drivers = models.ManyToManyField('Driver', through='CarDriver')\n\n    def __str__(self):\n        return \"%s\" % self.make\n\n@python_2_unicode_compatible\nclass Driver(models.Model):\n    name = models.CharField(max_length=20, unique=True, null=True)\n\n    def __str__(self):\n        return \"%s\" % self.name\n\n    class Meta:\n        ordering = ('name',)\n\n@python_2_unicode_compatible\nclass CarDriver(models.Model):\n    car = models.ForeignKey('Car', to_field='make')\n    driver = models.ForeignKey('Driver', to_field='name')\n\n    def __str__(self):\n        return \"pk=%s car=%s driver=%s\" % (str(self.pk), self.car, self.driver)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/m2m_through_regress/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom django.core import management\nfrom django.contrib.auth.models import User\nfrom django.test import TestCase\nfrom django.utils.six import StringIO\n\nfrom .models import (Person, Group, Membership, UserMembership, Car, Driver,\n    CarDriver)\n\n\nclass M2MThroughTestCase(TestCase):\n    def test_everything(self):\n        bob = Person.objects.create(name=\"Bob\")\n        jim = Person.objects.create(name=\"Jim\")\n\n        rock = Group.objects.create(name=\"Rock\")\n        roll = Group.objects.create(name=\"Roll\")\n\n        frank = User.objects.create_user(\"frank\", \"frank@example.com\", \"password\")\n        jane = User.objects.create_user(\"jane\", \"jane@example.com\", \"password\")\n\n        Membership.objects.create(person=bob, group=rock)\n        Membership.objects.create(person=bob, group=roll)\n        Membership.objects.create(person=jim, group=rock)\n\n        self.assertQuerysetEqual(\n            bob.group_set.all(), [\n                \"<Group: Rock>\",\n                \"<Group: Roll>\",\n            ]\n        )\n\n        self.assertQuerysetEqual(\n            roll.members.all(), [\n                \"<Person: Bob>\",\n            ]\n        )\n\n        self.assertRaises(AttributeError, setattr, bob, \"group_set\", [])\n        self.assertRaises(AttributeError, setattr, roll, \"members\", [])\n\n        self.assertRaises(AttributeError, rock.members.create, name=\"Anne\")\n        self.assertRaises(AttributeError, bob.group_set.create, name=\"Funk\")\n\n        UserMembership.objects.create(user=frank, group=rock)\n        UserMembership.objects.create(user=frank, group=roll)\n        UserMembership.objects.create(user=jane, group=rock)\n\n        self.assertQuerysetEqual(\n            frank.group_set.all(), [\n                \"<Group: Rock>\",\n                \"<Group: Roll>\",\n            ]\n        )\n\n        self.assertQuerysetEqual(\n            roll.user_members.all(), [\n                \"<User: frank>\",\n            ]\n        )\n\n    def test_serialization(self):\n        \"m2m-through models aren't serialized as m2m fields. Refs #8134\"\n\n        p = Person.objects.create(name=\"Bob\")\n        g = Group.objects.create(name=\"Roll\")\n        m =Membership.objects.create(person=p, group=g)\n\n        pks = {\"p_pk\": p.pk, \"g_pk\": g.pk, \"m_pk\": m.pk}\n\n        out = StringIO()\n        management.call_command(\"dumpdata\", \"m2m_through_regress\", format=\"json\", stdout=out)\n        self.assertJSONEqual(out.getvalue().strip(), \"\"\"[{\"pk\": %(m_pk)s, \"model\": \"m2m_through_regress.membership\", \"fields\": {\"person\": %(p_pk)s, \"price\": 100, \"group\": %(g_pk)s}}, {\"pk\": %(p_pk)s, \"model\": \"m2m_through_regress.person\", \"fields\": {\"name\": \"Bob\"}}, {\"pk\": %(g_pk)s, \"model\": \"m2m_through_regress.group\", \"fields\": {\"name\": \"Roll\"}}]\"\"\" % pks)\n\n        out = StringIO()\n        management.call_command(\"dumpdata\", \"m2m_through_regress\", format=\"xml\",\n            indent=2, stdout=out)\n        self.assertXMLEqual(out.getvalue().strip(), \"\"\"\n<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<django-objects version=\"1.0\">\n  <object pk=\"%(m_pk)s\" model=\"m2m_through_regress.membership\">\n    <field to=\"m2m_through_regress.person\" name=\"person\" rel=\"ManyToOneRel\">%(p_pk)s</field>\n    <field to=\"m2m_through_regress.group\" name=\"group\" rel=\"ManyToOneRel\">%(g_pk)s</field>\n    <field type=\"IntegerField\" name=\"price\">100</field>\n  </object>\n  <object pk=\"%(p_pk)s\" model=\"m2m_through_regress.person\">\n    <field type=\"CharField\" name=\"name\">Bob</field>\n  </object>\n  <object pk=\"%(g_pk)s\" model=\"m2m_through_regress.group\">\n    <field type=\"CharField\" name=\"name\">Roll</field>\n  </object>\n</django-objects>\n        \"\"\".strip() % pks)\n\n    def test_join_trimming(self):\n        \"Check that we don't involve too many copies of the intermediate table when doing a join. Refs #8046, #8254\"\n        bob  = Person.objects.create(name=\"Bob\")\n        jim = Person.objects.create(name=\"Jim\")\n\n        rock = Group.objects.create(name=\"Rock\")\n        roll = Group.objects.create(name=\"Roll\")\n\n        Membership.objects.create(person=bob, group=rock)\n        Membership.objects.create(person=jim, group=rock, price=50)\n        Membership.objects.create(person=bob, group=roll, price=50)\n\n        self.assertQuerysetEqual(\n            rock.members.filter(membership__price=50), [\n                \"<Person: Jim>\",\n            ]\n        )\n\n        self.assertQuerysetEqual(\n            bob.group_set.filter(membership__price=50), [\n                \"<Group: Roll>\",\n            ]\n        )\n\n\nclass ToFieldThroughTests(TestCase):\n    def setUp(self):\n        self.car = Car.objects.create(make=\"Toyota\")\n        self.driver = Driver.objects.create(name=\"Ryan Briscoe\")\n        CarDriver.objects.create(car=self.car, driver=self.driver)\n        # We are testing if wrong objects get deleted due to using wrong\n        # field value in m2m queries. So, it is essential that the pk\n        # numberings do not match.\n        # Create one intentionally unused driver to mix up the autonumbering\n        self.unused_driver = Driver.objects.create(name=\"Barney Gumble\")\n        # And two intentionally unused cars.\n        self.unused_car1 = Car.objects.create(make=\"Trabant\")\n        self.unused_car2 = Car.objects.create(make=\"Wartburg\")\n\n    def test_to_field(self):\n        self.assertQuerysetEqual(\n            self.car.drivers.all(),\n            [\"<Driver: Ryan Briscoe>\"]\n        )\n\n    def test_to_field_reverse(self):\n        self.assertQuerysetEqual(\n            self.driver.car_set.all(),\n            [\"<Car: Toyota>\"]\n        )\n\n    def test_to_field_clear_reverse(self):\n        self.driver.car_set.clear()\n        self.assertQuerysetEqual(\n            self.driver.car_set.all(),[])\n\n    def test_to_field_clear(self):\n        self.car.drivers.clear()\n        self.assertQuerysetEqual(\n            self.car.drivers.all(),[])\n\n    # Low level tests for _add_items and _remove_items. We test these methods\n    # because .add/.remove aren't available for m2m fields with through, but\n    # through is the only way to set to_field currently. We do want to make\n    # sure these methods are ready if the ability to use .add or .remove with\n    # to_field relations is added some day.\n    def test_add(self):\n        self.assertQuerysetEqual(\n            self.car.drivers.all(),\n            [\"<Driver: Ryan Briscoe>\"]\n        )\n        # Yikes - barney is going to drive...\n        self.car.drivers._add_items('car', 'driver', self.unused_driver)\n        self.assertQuerysetEqual(\n            self.car.drivers.all(),\n            [\"<Driver: Barney Gumble>\", \"<Driver: Ryan Briscoe>\"]\n        )\n\n    def test_add_null(self):\n        nullcar = Car.objects.create(make=None)\n        with self.assertRaises(ValueError):\n            nullcar.drivers._add_items('car', 'driver', self.unused_driver)\n\n    def test_add_related_null(self):\n        nulldriver = Driver.objects.create(name=None)\n        with self.assertRaises(ValueError):\n            self.car.drivers._add_items('car', 'driver', nulldriver)\n\n    def test_add_reverse(self):\n        car2 = Car.objects.create(make=\"Honda\")\n        self.assertQuerysetEqual(\n            self.driver.car_set.all(),\n            [\"<Car: Toyota>\"]\n        )\n        self.driver.car_set._add_items('driver', 'car', car2)\n        self.assertQuerysetEqual(\n            self.driver.car_set.all(),\n            [\"<Car: Toyota>\", \"<Car: Honda>\"]\n        )\n\n    def test_add_null_reverse(self):\n        nullcar = Car.objects.create(make=None)\n        with self.assertRaises(ValueError):\n            self.driver.car_set._add_items('driver', 'car', nullcar)\n\n    def test_add_null_reverse_related(self):\n        nulldriver = Driver.objects.create(name=None)\n        with self.assertRaises(ValueError):\n            nulldriver.car_set._add_items('driver', 'car', self.car)\n\n    def test_remove(self):\n        self.assertQuerysetEqual(\n            self.car.drivers.all(),\n            [\"<Driver: Ryan Briscoe>\"]\n        )\n        self.car.drivers._remove_items('car', 'driver', self.driver)\n        self.assertQuerysetEqual(\n            self.car.drivers.all(),[])\n\n    def test_remove_reverse(self):\n        self.assertQuerysetEqual(\n            self.driver.car_set.all(),\n            [\"<Car: Toyota>\"]\n        )\n        self.driver.car_set._remove_items('driver', 'car', self.car)\n        self.assertQuerysetEqual(\n            self.driver.car_set.all(),[])\n\n\nclass ThroughLoadDataTestCase(TestCase):\n    fixtures = [\"m2m_through\"]\n\n    def test_sequence_creation(self):\n        \"Check that sequences on an m2m_through are created for the through model, not a phantom auto-generated m2m table. Refs #11107\"\n        out = StringIO()\n        management.call_command(\"dumpdata\", \"m2m_through_regress\", format=\"json\", stdout=out)\n        self.assertJSONEqual(out.getvalue().strip(), \"\"\"[{\"pk\": 1, \"model\": \"m2m_through_regress.usermembership\", \"fields\": {\"price\": 100, \"group\": 1, \"user\": 1}}, {\"pk\": 1, \"model\": \"m2m_through_regress.person\", \"fields\": {\"name\": \"Guido\"}}, {\"pk\": 1, \"model\": \"m2m_through_regress.group\", \"fields\": {\"name\": \"Python Core Group\"}}]\"\"\")\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/mail/__init__.py",
    "content": "\n\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/mail/custombackend.py",
    "content": "\"\"\"A custom backend for testing.\"\"\"\n\nfrom django.core.mail.backends.base import BaseEmailBackend\n\n\nclass EmailBackend(BaseEmailBackend):\n\n    def __init__(self, *args, **kwargs):\n        super(EmailBackend, self).__init__(*args, **kwargs)\n        self.test_outbox = []\n\n    def send_messages(self, email_messages):\n        # Messages are stored in a instance variable for testing.\n        self.test_outbox.extend(email_messages)\n        return len(email_messages)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/mail/models.py",
    "content": "# This file intentionally left blank"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/mail/tests.py",
    "content": "# coding: utf-8\nfrom __future__ import unicode_literals\n\nimport asyncore\nimport email\nimport os\nimport shutil\nimport smtpd\nimport sys\nimport tempfile\nimport threading\n\nfrom django.core import mail\nfrom django.core.mail import (EmailMessage, mail_admins, mail_managers,\n        EmailMultiAlternatives, send_mail, send_mass_mail)\nfrom django.core.mail.backends import console, dummy, locmem, filebased, smtp\nfrom django.core.mail.message import BadHeaderError\nfrom django.test import TestCase\nfrom django.test.utils import override_settings\nfrom django.utils.encoding import force_str, force_text\nfrom django.utils.six import PY3, StringIO\nfrom django.utils.translation import ugettext_lazy\n\n\nclass MailTests(TestCase):\n    \"\"\"\n    Non-backend specific tests.\n    \"\"\"\n\n    def test_ascii(self):\n        email = EmailMessage('Subject', 'Content', 'from@example.com', ['to@example.com'])\n        message = email.message()\n        self.assertEqual(message['Subject'], 'Subject')\n        self.assertEqual(message.get_payload(), 'Content')\n        self.assertEqual(message['From'], 'from@example.com')\n        self.assertEqual(message['To'], 'to@example.com')\n\n    def test_multiple_recipients(self):\n        email = EmailMessage('Subject', 'Content', 'from@example.com', ['to@example.com', 'other@example.com'])\n        message = email.message()\n        self.assertEqual(message['Subject'], 'Subject')\n        self.assertEqual(message.get_payload(), 'Content')\n        self.assertEqual(message['From'], 'from@example.com')\n        self.assertEqual(message['To'], 'to@example.com, other@example.com')\n\n    def test_cc(self):\n        \"\"\"Regression test for #7722\"\"\"\n        email = EmailMessage('Subject', 'Content', 'from@example.com', ['to@example.com'], cc=['cc@example.com'])\n        message = email.message()\n        self.assertEqual(message['Cc'], 'cc@example.com')\n        self.assertEqual(email.recipients(), ['to@example.com', 'cc@example.com'])\n\n        # Test multiple CC with multiple To\n        email = EmailMessage('Subject', 'Content', 'from@example.com', ['to@example.com', 'other@example.com'], cc=['cc@example.com', 'cc.other@example.com'])\n        message = email.message()\n        self.assertEqual(message['Cc'], 'cc@example.com, cc.other@example.com')\n        self.assertEqual(email.recipients(), ['to@example.com', 'other@example.com', 'cc@example.com', 'cc.other@example.com'])\n\n        # Testing with Bcc\n        email = EmailMessage('Subject', 'Content', 'from@example.com', ['to@example.com', 'other@example.com'], cc=['cc@example.com', 'cc.other@example.com'], bcc=['bcc@example.com'])\n        message = email.message()\n        self.assertEqual(message['Cc'], 'cc@example.com, cc.other@example.com')\n        self.assertEqual(email.recipients(), ['to@example.com', 'other@example.com', 'cc@example.com', 'cc.other@example.com', 'bcc@example.com'])\n\n    def test_recipients_as_tuple(self):\n        email = EmailMessage('Subject', 'Content', 'from@example.com', ('to@example.com', 'other@example.com'), cc=('cc@example.com', 'cc.other@example.com'), bcc=('bcc@example.com',))\n        message = email.message()\n        self.assertEqual(message['Cc'], 'cc@example.com, cc.other@example.com')\n        self.assertEqual(email.recipients(), ['to@example.com', 'other@example.com', 'cc@example.com', 'cc.other@example.com', 'bcc@example.com'])\n\n    def test_header_injection(self):\n        email = EmailMessage('Subject\\nInjection Test', 'Content', 'from@example.com', ['to@example.com'])\n        self.assertRaises(BadHeaderError, email.message)\n        email = EmailMessage(ugettext_lazy('Subject\\nInjection Test'), 'Content', 'from@example.com', ['to@example.com'])\n        self.assertRaises(BadHeaderError, email.message)\n\n    def test_space_continuation(self):\n        \"\"\"\n        Test for space continuation character in long (ascii) subject headers (#7747)\n        \"\"\"\n        email = EmailMessage('Long subject lines that get wrapped should contain a space continuation character to get expected behavior in Outlook and Thunderbird', 'Content', 'from@example.com', ['to@example.com'])\n        message = email.message()\n        # Note that in Python 3, maximum line length has increased from 76 to 78\n        self.assertEqual(message['Subject'].encode(), b'Long subject lines that get wrapped should contain a space continuation\\n character to get expected behavior in Outlook and Thunderbird')\n\n    def test_message_header_overrides(self):\n        \"\"\"\n        Specifying dates or message-ids in the extra headers overrides the\n        default values (#9233)\n        \"\"\"\n        headers = {\"date\": \"Fri, 09 Nov 2001 01:08:47 -0000\", \"Message-ID\": \"foo\"}\n        email = EmailMessage('subject', 'content', 'from@example.com', ['to@example.com'], headers=headers)\n\n        self.assertEqual(sorted(email.message().items()), [\n            ('Content-Transfer-Encoding', '7bit'),\n            ('Content-Type', 'text/plain; charset=\"utf-8\"'),\n            ('From', 'from@example.com'),\n            ('MIME-Version', '1.0'),\n            ('Message-ID', 'foo'),\n            ('Subject', 'subject'),\n            ('To', 'to@example.com'),\n            ('date', 'Fri, 09 Nov 2001 01:08:47 -0000'),\n        ])\n\n    def test_from_header(self):\n        \"\"\"\n        Make sure we can manually set the From header (#9214)\n        \"\"\"\n        email = EmailMessage('Subject', 'Content', 'bounce@example.com', ['to@example.com'], headers={'From': 'from@example.com'})\n        message = email.message()\n        self.assertEqual(message['From'], 'from@example.com')\n\n    def test_to_header(self):\n        \"\"\"\n        Make sure we can manually set the To header (#17444)\n        \"\"\"\n        email = EmailMessage('Subject', 'Content', 'bounce@example.com',\n                             ['list-subscriber@example.com', 'list-subscriber2@example.com'],\n                             headers={'To': 'mailing-list@example.com'})\n        message = email.message()\n        self.assertEqual(message['To'], 'mailing-list@example.com')\n        self.assertEqual(email.to, ['list-subscriber@example.com', 'list-subscriber2@example.com'])\n\n        # If we don't set the To header manually, it should default to the `to` argument to the constructor\n        email = EmailMessage('Subject', 'Content', 'bounce@example.com',\n                             ['list-subscriber@example.com', 'list-subscriber2@example.com'])\n        message = email.message()\n        self.assertEqual(message['To'], 'list-subscriber@example.com, list-subscriber2@example.com')\n        self.assertEqual(email.to, ['list-subscriber@example.com', 'list-subscriber2@example.com'])\n\n    def test_multiple_message_call(self):\n        \"\"\"\n        Regression for #13259 - Make sure that headers are not changed when\n        calling EmailMessage.message()\n        \"\"\"\n        email = EmailMessage('Subject', 'Content', 'bounce@example.com', ['to@example.com'], headers={'From': 'from@example.com'})\n        message = email.message()\n        self.assertEqual(message['From'], 'from@example.com')\n        message = email.message()\n        self.assertEqual(message['From'], 'from@example.com')\n\n    def test_unicode_address_header(self):\n        \"\"\"\n        Regression for #11144 - When a to/from/cc header contains unicode,\n        make sure the email addresses are parsed correctly (especially with\n        regards to commas)\n        \"\"\"\n        email = EmailMessage('Subject', 'Content', 'from@example.com', ['\"Firstname Sürname\" <to@example.com>', 'other@example.com'])\n        self.assertEqual(email.message()['To'], '=?utf-8?q?Firstname_S=C3=BCrname?= <to@example.com>, other@example.com')\n        email = EmailMessage('Subject', 'Content', 'from@example.com', ['\"Sürname, Firstname\" <to@example.com>', 'other@example.com'])\n        self.assertEqual(email.message()['To'], '=?utf-8?q?S=C3=BCrname=2C_Firstname?= <to@example.com>, other@example.com')\n\n    def test_unicode_headers(self):\n        email = EmailMessage(\"Gżegżółka\", \"Content\", \"from@example.com\", [\"to@example.com\"],\n                             headers={\"Sender\": '\"Firstname Sürname\" <sender@example.com>',\n                                      \"Comments\": 'My Sürname is non-ASCII'})\n        message = email.message()\n        self.assertEqual(message['Subject'], '=?utf-8?b?R8W8ZWfFvMOzxYJrYQ==?=')\n        self.assertEqual(message['Sender'], '=?utf-8?q?Firstname_S=C3=BCrname?= <sender@example.com>')\n        self.assertEqual(message['Comments'], '=?utf-8?q?My_S=C3=BCrname_is_non-ASCII?=')\n\n    def test_safe_mime_multipart(self):\n        \"\"\"\n        Make sure headers can be set with a different encoding than utf-8 in\n        SafeMIMEMultipart as well\n        \"\"\"\n        headers = {\"Date\": \"Fri, 09 Nov 2001 01:08:47 -0000\", \"Message-ID\": \"foo\"}\n        subject, from_email, to = 'hello', 'from@example.com', '\"Sürname, Firstname\" <to@example.com>'\n        text_content = 'This is an important message.'\n        html_content = '<p>This is an <strong>important</strong> message.</p>'\n        msg = EmailMultiAlternatives('Message from Firstname Sürname', text_content, from_email, [to], headers=headers)\n        msg.attach_alternative(html_content, \"text/html\")\n        msg.encoding = 'iso-8859-1'\n        self.assertEqual(msg.message()['To'], '=?iso-8859-1?q?S=FCrname=2C_Firstname?= <to@example.com>')\n        self.assertEqual(msg.message()['Subject'], '=?iso-8859-1?q?Message_from_Firstname_S=FCrname?=')\n\n    def test_encoding(self):\n        \"\"\"\n        Regression for #12791 - Encode body correctly with other encodings\n        than utf-8\n        \"\"\"\n        email = EmailMessage('Subject', 'Firstname Sürname is a great guy.', 'from@example.com', ['other@example.com'])\n        email.encoding = 'iso-8859-1'\n        message = email.message()\n        self.assertTrue(message.as_string().startswith('Content-Type: text/plain; charset=\"iso-8859-1\"\\nMIME-Version: 1.0\\nContent-Transfer-Encoding: quoted-printable\\nSubject: Subject\\nFrom: from@example.com\\nTo: other@example.com'))\n        self.assertEqual(message.get_payload(), 'Firstname S=FCrname is a great guy.')\n\n        # Make sure MIME attachments also works correctly with other encodings than utf-8\n        text_content = 'Firstname Sürname is a great guy.'\n        html_content = '<p>Firstname Sürname is a <strong>great</strong> guy.</p>'\n        msg = EmailMultiAlternatives('Subject', text_content, 'from@example.com', ['to@example.com'])\n        msg.encoding = 'iso-8859-1'\n        msg.attach_alternative(html_content, \"text/html\")\n        self.assertEqual(msg.message().get_payload(0).as_string(), 'Content-Type: text/plain; charset=\"iso-8859-1\"\\nMIME-Version: 1.0\\nContent-Transfer-Encoding: quoted-printable\\n\\nFirstname S=FCrname is a great guy.')\n        self.assertEqual(msg.message().get_payload(1).as_string(), 'Content-Type: text/html; charset=\"iso-8859-1\"\\nMIME-Version: 1.0\\nContent-Transfer-Encoding: quoted-printable\\n\\n<p>Firstname S=FCrname is a <strong>great</strong> guy.</p>')\n\n    def test_attachments(self):\n        \"\"\"Regression test for #9367\"\"\"\n        headers = {\"Date\": \"Fri, 09 Nov 2001 01:08:47 -0000\", \"Message-ID\": \"foo\"}\n        subject, from_email, to = 'hello', 'from@example.com', 'to@example.com'\n        text_content = 'This is an important message.'\n        html_content = '<p>This is an <strong>important</strong> message.</p>'\n        msg = EmailMultiAlternatives(subject, text_content, from_email, [to], headers=headers)\n        msg.attach_alternative(html_content, \"text/html\")\n        msg.attach(\"an attachment.pdf\", b\"%PDF-1.4.%...\", mimetype=\"application/pdf\")\n        msg_str = msg.message().as_string()\n        message = email.message_from_string(msg_str)\n        self.assertTrue(message.is_multipart())\n        self.assertEqual(message.get_content_type(), 'multipart/mixed')\n        self.assertEqual(message.get_default_type(), 'text/plain')\n        payload = message.get_payload()\n        self.assertEqual(payload[0].get_content_type(), 'multipart/alternative')\n        self.assertEqual(payload[1].get_content_type(), 'application/pdf')\n\n    def test_non_ascii_attachment_filename(self):\n        \"\"\"Regression test for #14964\"\"\"\n        headers = {\"Date\": \"Fri, 09 Nov 2001 01:08:47 -0000\", \"Message-ID\": \"foo\"}\n        subject, from_email, to = 'hello', 'from@example.com', 'to@example.com'\n        content = 'This is the message.'\n        msg = EmailMessage(subject, content, from_email, [to], headers=headers)\n        # Unicode in file name\n        msg.attach(\"une pièce jointe.pdf\", b\"%PDF-1.4.%...\", mimetype=\"application/pdf\")\n        msg_str = msg.message().as_string()\n        message = email.message_from_string(msg_str)\n        payload = message.get_payload()\n        self.assertEqual(payload[1].get_filename(), 'une pièce jointe.pdf')\n\n    def test_dummy_backend(self):\n        \"\"\"\n        Make sure that dummy backends returns correct number of sent messages\n        \"\"\"\n        connection = dummy.EmailBackend()\n        email = EmailMessage('Subject', 'Content', 'bounce@example.com', ['to@example.com'], headers={'From': 'from@example.com'})\n        self.assertEqual(connection.send_messages([email, email, email]), 3)\n\n    def test_arbitrary_keyword(self):\n        \"\"\"\n        Make sure that get_connection() accepts arbitrary keyword that might be\n        used with custom backends.\n        \"\"\"\n        c = mail.get_connection(fail_silently=True, foo='bar')\n        self.assertTrue(c.fail_silently)\n\n    def test_custom_backend(self):\n        \"\"\"Test custom backend defined in this suite.\"\"\"\n        conn = mail.get_connection('regressiontests.mail.custombackend.EmailBackend')\n        self.assertTrue(hasattr(conn, 'test_outbox'))\n        email = EmailMessage('Subject', 'Content', 'bounce@example.com', ['to@example.com'], headers={'From': 'from@example.com'})\n        conn.send_messages([email])\n        self.assertEqual(len(conn.test_outbox), 1)\n\n    def test_backend_arg(self):\n        \"\"\"Test backend argument of mail.get_connection()\"\"\"\n        self.assertTrue(isinstance(mail.get_connection('django.core.mail.backends.smtp.EmailBackend'), smtp.EmailBackend))\n        self.assertTrue(isinstance(mail.get_connection('django.core.mail.backends.locmem.EmailBackend'), locmem.EmailBackend))\n        self.assertTrue(isinstance(mail.get_connection('django.core.mail.backends.dummy.EmailBackend'), dummy.EmailBackend))\n        self.assertTrue(isinstance(mail.get_connection('django.core.mail.backends.console.EmailBackend'), console.EmailBackend))\n        tmp_dir = tempfile.mkdtemp()\n        try:\n            self.assertTrue(isinstance(mail.get_connection('django.core.mail.backends.filebased.EmailBackend', file_path=tmp_dir), filebased.EmailBackend))\n        finally:\n            shutil.rmtree(tmp_dir)\n        self.assertTrue(isinstance(mail.get_connection(), locmem.EmailBackend))\n\n    @override_settings(\n        EMAIL_BACKEND='django.core.mail.backends.locmem.EmailBackend',\n        ADMINS=[('nobody', 'nobody@example.com')],\n        MANAGERS=[('nobody', 'nobody@example.com')])\n    def test_connection_arg(self):\n        \"\"\"Test connection argument to send_mail(), et. al.\"\"\"\n        mail.outbox = []\n\n        # Send using non-default connection\n        connection = mail.get_connection('regressiontests.mail.custombackend.EmailBackend')\n        send_mail('Subject', 'Content', 'from@example.com', ['to@example.com'], connection=connection)\n        self.assertEqual(mail.outbox, [])\n        self.assertEqual(len(connection.test_outbox), 1)\n        self.assertEqual(connection.test_outbox[0].subject, 'Subject')\n\n        connection = mail.get_connection('regressiontests.mail.custombackend.EmailBackend')\n        send_mass_mail([\n                ('Subject1', 'Content1', 'from1@example.com', ['to1@example.com']),\n                ('Subject2', 'Content2', 'from2@example.com', ['to2@example.com']),\n            ], connection=connection)\n        self.assertEqual(mail.outbox, [])\n        self.assertEqual(len(connection.test_outbox), 2)\n        self.assertEqual(connection.test_outbox[0].subject, 'Subject1')\n        self.assertEqual(connection.test_outbox[1].subject, 'Subject2')\n\n        connection = mail.get_connection('regressiontests.mail.custombackend.EmailBackend')\n        mail_admins('Admin message', 'Content', connection=connection)\n        self.assertEqual(mail.outbox, [])\n        self.assertEqual(len(connection.test_outbox), 1)\n        self.assertEqual(connection.test_outbox[0].subject, '[Django] Admin message')\n\n        connection = mail.get_connection('regressiontests.mail.custombackend.EmailBackend')\n        mail_managers('Manager message', 'Content', connection=connection)\n        self.assertEqual(mail.outbox, [])\n        self.assertEqual(len(connection.test_outbox), 1)\n        self.assertEqual(connection.test_outbox[0].subject, '[Django] Manager message')\n\n    def test_dont_mangle_from_in_body(self):\n        # Regression for #13433 - Make sure that EmailMessage doesn't mangle\n        # 'From ' in message body.\n        email = EmailMessage('Subject', 'From the future', 'bounce@example.com', ['to@example.com'], headers={'From': 'from@example.com'})\n        self.assertFalse('>From the future' in email.message().as_string())\n\n    def test_dont_base64_encode(self):\n        # Ticket #3472\n        # Shouldn't use Base64 encoding at all\n        msg = EmailMessage('Subject', 'UTF-8 encoded body', 'bounce@example.com', ['to@example.com'], headers={'From': 'from@example.com'})\n        self.assertFalse('Content-Transfer-Encoding: base64' in msg.message().as_string())\n\n        # Ticket #11212\n        # Shouldn't use quoted printable, should detect it can represent content with 7 bit data\n        msg = EmailMessage('Subject', 'Body with only ASCII characters.', 'bounce@example.com', ['to@example.com'], headers={'From': 'from@example.com'})\n        s = msg.message().as_string()\n        self.assertFalse('Content-Transfer-Encoding: quoted-printable' in s)\n        self.assertTrue('Content-Transfer-Encoding: 7bit' in s)\n\n        # Shouldn't use quoted printable, should detect it can represent content with 8 bit data\n        msg = EmailMessage('Subject', 'Body with latin characters: àáä.', 'bounce@example.com', ['to@example.com'], headers={'From': 'from@example.com'})\n        s = msg.message().as_string()\n        self.assertFalse(str('Content-Transfer-Encoding: quoted-printable') in s)\n        self.assertTrue(str('Content-Transfer-Encoding: 8bit') in s)\n\n        msg = EmailMessage('Subject', 'Body with non latin characters: А Б В Г Д Е Ж Ѕ З И І К Л М Н О П.', 'bounce@example.com', ['to@example.com'], headers={'From': 'from@example.com'})\n        s = msg.message().as_string()\n        self.assertFalse(str('Content-Transfer-Encoding: quoted-printable') in s)\n        self.assertTrue(str('Content-Transfer-Encoding: 8bit') in s)\n\n\nclass BaseEmailBackendTests(object):\n    email_backend = None\n\n    def setUp(self):\n        self.settings_override = override_settings(EMAIL_BACKEND=self.email_backend)\n        self.settings_override.enable()\n\n    def tearDown(self):\n        self.settings_override.disable()\n\n    def assertStartsWith(self, first, second):\n        if not first.startswith(second):\n            self.longMessage = True\n            self.assertEqual(first[:len(second)], second, \"First string doesn't start with the second.\")\n\n    def get_mailbox_content(self):\n        raise NotImplementedError\n\n    def flush_mailbox(self):\n        raise NotImplementedError\n\n    def get_the_message(self):\n        mailbox = self.get_mailbox_content()\n        self.assertEqual(len(mailbox), 1,\n            \"Expected exactly one message, got %d.\\n%r\" % (len(mailbox), [\n                m.as_string() for m in mailbox]))\n        return mailbox[0]\n\n    def test_send(self):\n        email = EmailMessage('Subject', 'Content', 'from@example.com', ['to@example.com'])\n        num_sent = mail.get_connection().send_messages([email])\n        self.assertEqual(num_sent, 1)\n        message = self.get_the_message()\n        self.assertEqual(message[\"subject\"], \"Subject\")\n        self.assertEqual(message.get_payload(), \"Content\")\n        self.assertEqual(message[\"from\"], \"from@example.com\")\n        self.assertEqual(message.get_all(\"to\"), [\"to@example.com\"])\n\n    def test_send_unicode(self):\n        email = EmailMessage('Chère maman', 'Je t\\'aime très fort', 'from@example.com', ['to@example.com'])\n        num_sent = mail.get_connection().send_messages([email])\n        self.assertEqual(num_sent, 1)\n        message = self.get_the_message()\n        self.assertEqual(message[\"subject\"], '=?utf-8?q?Ch=C3=A8re_maman?=')\n        self.assertEqual(force_text(message.get_payload()), 'Je t\\'aime très fort')\n\n    def test_send_many(self):\n        email1 = EmailMessage('Subject', 'Content1', 'from@example.com', ['to@example.com'])\n        email2 = EmailMessage('Subject', 'Content2', 'from@example.com', ['to@example.com'])\n        num_sent = mail.get_connection().send_messages([email1, email2])\n        self.assertEqual(num_sent, 2)\n        messages = self.get_mailbox_content()\n        self.assertEqual(len(messages), 2)\n        self.assertEqual(messages[0].get_payload(), \"Content1\")\n        self.assertEqual(messages[1].get_payload(), \"Content2\")\n\n    def test_send_verbose_name(self):\n        email = EmailMessage(\"Subject\", \"Content\", '\"Firstname Sürname\" <from@example.com>',\n                             [\"to@example.com\"])\n        email.send()\n        message = self.get_the_message()\n        self.assertEqual(message[\"subject\"], \"Subject\")\n        self.assertEqual(message.get_payload(), \"Content\")\n        self.assertEqual(message[\"from\"], \"=?utf-8?q?Firstname_S=C3=BCrname?= <from@example.com>\")\n\n    @override_settings(MANAGERS=[('nobody', 'nobody@example.com')])\n    def test_html_mail_managers(self):\n        \"\"\"Test html_message argument to mail_managers\"\"\"\n        mail_managers('Subject', 'Content', html_message='HTML Content')\n        message = self.get_the_message()\n\n        self.assertEqual(message.get('subject'), '[Django] Subject')\n        self.assertEqual(message.get_all('to'), ['nobody@example.com'])\n        self.assertTrue(message.is_multipart())\n        self.assertEqual(len(message.get_payload()), 2)\n        self.assertEqual(message.get_payload(0).get_payload(), 'Content')\n        self.assertEqual(message.get_payload(0).get_content_type(), 'text/plain')\n        self.assertEqual(message.get_payload(1).get_payload(), 'HTML Content')\n        self.assertEqual(message.get_payload(1).get_content_type(), 'text/html')\n\n    @override_settings(ADMINS=[('nobody', 'nobody@example.com')])\n    def test_html_mail_admins(self):\n        \"\"\"Test html_message argument to mail_admins \"\"\"\n        mail_admins('Subject', 'Content', html_message='HTML Content')\n        message = self.get_the_message()\n\n        self.assertEqual(message.get('subject'), '[Django] Subject')\n        self.assertEqual(message.get_all('to'), ['nobody@example.com'])\n        self.assertTrue(message.is_multipart())\n        self.assertEqual(len(message.get_payload()), 2)\n        self.assertEqual(message.get_payload(0).get_payload(), 'Content')\n        self.assertEqual(message.get_payload(0).get_content_type(), 'text/plain')\n        self.assertEqual(message.get_payload(1).get_payload(), 'HTML Content')\n        self.assertEqual(message.get_payload(1).get_content_type(), 'text/html')\n\n    @override_settings(\n        ADMINS=[('nobody', 'nobody+admin@example.com')],\n        MANAGERS=[('nobody', 'nobody+manager@example.com')])\n    def test_manager_and_admin_mail_prefix(self):\n        \"\"\"\n        String prefix + lazy translated subject = bad output\n        Regression for #13494\n        \"\"\"\n        mail_managers(ugettext_lazy('Subject'), 'Content')\n        message = self.get_the_message()\n        self.assertEqual(message.get('subject'), '[Django] Subject')\n\n        self.flush_mailbox()\n        mail_admins(ugettext_lazy('Subject'), 'Content')\n        message = self.get_the_message()\n        self.assertEqual(message.get('subject'), '[Django] Subject')\n\n    @override_settings(ADMINS=(), MANAGERS=())\n    def test_empty_admins(self):\n        \"\"\"\n        Test that mail_admins/mail_managers doesn't connect to the mail server\n        if there are no recipients (#9383)\n        \"\"\"\n        mail_admins('hi', 'there')\n        self.assertEqual(self.get_mailbox_content(), [])\n        mail_managers('hi', 'there')\n        self.assertEqual(self.get_mailbox_content(), [])\n\n    def test_message_cc_header(self):\n        \"\"\"\n        Regression test for #7722\n        \"\"\"\n        email = EmailMessage('Subject', 'Content', 'from@example.com', ['to@example.com'], cc=['cc@example.com'])\n        mail.get_connection().send_messages([email])\n        message = self.get_the_message()\n        self.assertStartsWith(message.as_string(), 'Content-Type: text/plain; charset=\"utf-8\"\\nMIME-Version: 1.0\\nContent-Transfer-Encoding: 7bit\\nSubject: Subject\\nFrom: from@example.com\\nTo: to@example.com\\nCc: cc@example.com\\nDate: ')\n\n    def test_idn_send(self):\n        \"\"\"\n        Regression test for #14301\n        \"\"\"\n        self.assertTrue(send_mail('Subject', 'Content', 'from@öäü.com', ['to@öäü.com']))\n        message = self.get_the_message()\n        self.assertEqual(message.get('subject'), 'Subject')\n        self.assertEqual(message.get('from'), 'from@xn--4ca9at.com')\n        self.assertEqual(message.get('to'), 'to@xn--4ca9at.com')\n\n        self.flush_mailbox()\n        m = EmailMessage('Subject', 'Content', 'from@öäü.com',\n                     ['to@öäü.com'], cc=['cc@öäü.com'])\n        m.send()\n        message = self.get_the_message()\n        self.assertEqual(message.get('subject'), 'Subject')\n        self.assertEqual(message.get('from'), 'from@xn--4ca9at.com')\n        self.assertEqual(message.get('to'), 'to@xn--4ca9at.com')\n        self.assertEqual(message.get('cc'), 'cc@xn--4ca9at.com')\n\n    def test_recipient_without_domain(self):\n        \"\"\"\n        Regression test for #15042\n        \"\"\"\n        self.assertTrue(send_mail(\"Subject\", \"Content\", \"tester\", [\"django\"]))\n        message = self.get_the_message()\n        self.assertEqual(message.get('subject'), 'Subject')\n        self.assertEqual(message.get('from'), \"tester\")\n        self.assertEqual(message.get('to'), \"django\")\n\n    def test_close_connection(self):\n        \"\"\"\n        Test that connection can be closed (even when not explicitely opened)\n        \"\"\"\n        conn = mail.get_connection(username='', password='')\n        try:\n            conn.close()\n        except Exception as e:\n            self.fail(\"close() unexpectedly raised an exception: %s\" % e)\n\n\nclass LocmemBackendTests(BaseEmailBackendTests, TestCase):\n    email_backend = 'django.core.mail.backends.locmem.EmailBackend'\n\n    def get_mailbox_content(self):\n        return [m.message() for m in mail.outbox]\n\n    def flush_mailbox(self):\n        mail.outbox = []\n\n    def tearDown(self):\n        super(LocmemBackendTests, self).tearDown()\n        mail.outbox = []\n\n    def test_locmem_shared_messages(self):\n        \"\"\"\n        Make sure that the locmen backend populates the outbox.\n        \"\"\"\n        connection = locmem.EmailBackend()\n        connection2 = locmem.EmailBackend()\n        email = EmailMessage('Subject', 'Content', 'bounce@example.com', ['to@example.com'], headers={'From': 'from@example.com'})\n        connection.send_messages([email])\n        connection2.send_messages([email])\n        self.assertEqual(len(mail.outbox), 2)\n\n    def test_validate_multiline_headers(self):\n        # Ticket #18861 - Validate emails when using the locmem backend\n        with self.assertRaises(BadHeaderError):\n            send_mail('Subject\\nMultiline', 'Content', 'from@example.com', ['to@example.com'])\n\n\nclass FileBackendTests(BaseEmailBackendTests, TestCase):\n    email_backend = 'django.core.mail.backends.filebased.EmailBackend'\n\n    def setUp(self):\n        super(FileBackendTests, self).setUp()\n        self.tmp_dir = tempfile.mkdtemp()\n        self.addCleanup(shutil.rmtree, self.tmp_dir)\n        self._settings_override = override_settings(EMAIL_FILE_PATH=self.tmp_dir)\n        self._settings_override.enable()\n\n    def tearDown(self):\n        self._settings_override.disable()\n        super(FileBackendTests, self).tearDown()\n\n    def flush_mailbox(self):\n        for filename in os.listdir(self.tmp_dir):\n            os.unlink(os.path.join(self.tmp_dir, filename))\n\n    def get_mailbox_content(self):\n        messages = []\n        for filename in os.listdir(self.tmp_dir):\n            with open(os.path.join(self.tmp_dir, filename), 'r') as fp:\n                session = force_text(fp.read()).split('\\n' + ('-' * 79) + '\\n')\n            messages.extend(email.message_from_string(force_str(m)) for m in session if m)\n        return messages\n\n    def test_file_sessions(self):\n        \"\"\"Make sure opening a connection creates a new file\"\"\"\n        msg = EmailMessage('Subject', 'Content', 'bounce@example.com', ['to@example.com'], headers={'From': 'from@example.com'})\n        connection = mail.get_connection()\n        connection.send_messages([msg])\n\n        self.assertEqual(len(os.listdir(self.tmp_dir)), 1)\n        with open(os.path.join(self.tmp_dir, os.listdir(self.tmp_dir)[0])) as fp:\n            message = email.message_from_file(fp)\n        self.assertEqual(message.get_content_type(), 'text/plain')\n        self.assertEqual(message.get('subject'), 'Subject')\n        self.assertEqual(message.get('from'), 'from@example.com')\n        self.assertEqual(message.get('to'), 'to@example.com')\n\n        connection2 = mail.get_connection()\n        connection2.send_messages([msg])\n        self.assertEqual(len(os.listdir(self.tmp_dir)), 2)\n\n        connection.send_messages([msg])\n        self.assertEqual(len(os.listdir(self.tmp_dir)), 2)\n\n        msg.connection = mail.get_connection()\n        self.assertTrue(connection.open())\n        msg.send()\n        self.assertEqual(len(os.listdir(self.tmp_dir)), 3)\n        msg.send()\n        self.assertEqual(len(os.listdir(self.tmp_dir)), 3)\n\n        connection.close()\n\n\nclass ConsoleBackendTests(BaseEmailBackendTests, TestCase):\n    email_backend = 'django.core.mail.backends.console.EmailBackend'\n\n    def setUp(self):\n        super(ConsoleBackendTests, self).setUp()\n        self.__stdout = sys.stdout\n        self.stream = sys.stdout = StringIO()\n\n    def tearDown(self):\n        del self.stream\n        sys.stdout = self.__stdout\n        del self.__stdout\n        super(ConsoleBackendTests, self).tearDown()\n\n    def flush_mailbox(self):\n        self.stream = sys.stdout = StringIO()\n\n    def get_mailbox_content(self):\n        messages = force_text(self.stream.getvalue()).split('\\n' + ('-' * 79) + '\\n')\n        return [email.message_from_string(force_str(m)) for m in messages if m]\n\n    def test_console_stream_kwarg(self):\n        \"\"\"\n        Test that the console backend can be pointed at an arbitrary stream.\n        \"\"\"\n        s = StringIO()\n        connection = mail.get_connection('django.core.mail.backends.console.EmailBackend', stream=s)\n        send_mail('Subject', 'Content', 'from@example.com', ['to@example.com'], connection=connection)\n        self.assertTrue(s.getvalue().startswith('Content-Type: text/plain; charset=\"utf-8\"\\nMIME-Version: 1.0\\nContent-Transfer-Encoding: 7bit\\nSubject: Subject\\nFrom: from@example.com\\nTo: to@example.com\\nDate: '))\n\n\nclass FakeSMTPServer(smtpd.SMTPServer, threading.Thread):\n    \"\"\"\n    Asyncore SMTP server wrapped into a thread. Based on DummyFTPServer from:\n    http://svn.python.org/view/python/branches/py3k/Lib/test/test_ftplib.py?revision=86061&view=markup\n    \"\"\"\n\n    def __init__(self, *args, **kwargs):\n        threading.Thread.__init__(self)\n        smtpd.SMTPServer.__init__(self, *args, **kwargs)\n        self._sink = []\n        self.active = False\n        self.active_lock = threading.Lock()\n        self.sink_lock = threading.Lock()\n\n    def process_message(self, peer, mailfrom, rcpttos, data):\n        m = email.message_from_string(data)\n        if PY3:\n            maddr = email.utils.parseaddr(m.get('from'))[1]\n        else:\n            maddr = email.Utils.parseaddr(m.get('from'))[1]\n        if mailfrom != maddr:\n            return \"553 '%s' != '%s'\" % (mailfrom, maddr)\n        with self.sink_lock:\n            self._sink.append(m)\n\n    def get_sink(self):\n        with self.sink_lock:\n            return self._sink[:]\n\n    def flush_sink(self):\n        with self.sink_lock:\n            self._sink[:] = []\n\n    def start(self):\n        assert not self.active\n        self.__flag = threading.Event()\n        threading.Thread.start(self)\n        self.__flag.wait()\n\n    def run(self):\n        self.active = True\n        self.__flag.set()\n        while self.active and asyncore.socket_map:\n            with self.active_lock:\n                asyncore.loop(timeout=0.1, count=1)\n        asyncore.close_all()\n\n    def stop(self):\n        if self.active:\n            self.active = False\n            self.join()\n\n\nclass SMTPBackendTests(BaseEmailBackendTests, TestCase):\n    email_backend = 'django.core.mail.backends.smtp.EmailBackend'\n\n    @classmethod\n    def setUpClass(cls):\n        cls.server = FakeSMTPServer(('127.0.0.1', 0), None)\n        cls._settings_override = override_settings(\n            EMAIL_HOST=\"127.0.0.1\",\n            EMAIL_PORT=cls.server.socket.getsockname()[1])\n        cls._settings_override.enable()\n        cls.server.start()\n\n    @classmethod\n    def tearDownClass(cls):\n        cls._settings_override.disable()\n        cls.server.stop()\n\n    def setUp(self):\n        super(SMTPBackendTests, self).setUp()\n        self.server.flush_sink()\n\n    def tearDown(self):\n        self.server.flush_sink()\n        super(SMTPBackendTests, self).tearDown()\n\n    def flush_mailbox(self):\n        self.server.flush_sink()\n\n    def get_mailbox_content(self):\n        return self.server.get_sink()\n\n    @override_settings(EMAIL_HOST_USER=\"not empty username\",\n                        EMAIL_HOST_PASSWORD=\"not empty password\")\n    def test_email_authentication_use_settings(self):\n        backend = smtp.EmailBackend()\n        self.assertEqual(backend.username, 'not empty username')\n        self.assertEqual(backend.password, 'not empty password')\n\n    @override_settings(EMAIL_HOST_USER=\"not empty username\",\n                        EMAIL_HOST_PASSWORD=\"not empty password\")\n    def test_email_authentication_override_settings(self):\n        backend = smtp.EmailBackend(username='username', password='password')\n        self.assertEqual(backend.username, 'username')\n        self.assertEqual(backend.password, 'password')\n\n    @override_settings(EMAIL_HOST_USER=\"not empty username\",\n                        EMAIL_HOST_PASSWORD=\"not empty password\")\n    def test_email_disabled_authentication(self):\n        backend = smtp.EmailBackend(username='', password='')\n        self.assertEqual(backend.username, '')\n        self.assertEqual(backend.password, '')\n\n    def test_server_stopped(self):\n        \"\"\"\n        Test that closing the backend while the SMTP server is stopped doesn't\n        raise an exception.\n        \"\"\"\n        backend = smtp.EmailBackend(username='', password='')\n        backend.open()\n        self.server.stop()\n        try:\n            backend.close()\n        except Exception as e:\n            self.fail(\"close() unexpectedly raised an exception: %s\" % e)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/managers_regress/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/managers_regress/models.py",
    "content": "\"\"\"\nVarious edge-cases for model managers.\n\"\"\"\n\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\nclass OnlyFred(models.Manager):\n    def get_query_set(self):\n        return super(OnlyFred, self).get_query_set().filter(name='fred')\n\n\nclass OnlyBarney(models.Manager):\n    def get_query_set(self):\n        return super(OnlyBarney, self).get_query_set().filter(name='barney')\n\n\nclass Value42(models.Manager):\n    def get_query_set(self):\n        return super(Value42, self).get_query_set().filter(value=42)\n\n\nclass AbstractBase1(models.Model):\n    name = models.CharField(max_length=50)\n\n    class Meta:\n        abstract = True\n\n    # Custom managers\n    manager1 = OnlyFred()\n    manager2 = OnlyBarney()\n    objects = models.Manager()\n\n\nclass AbstractBase2(models.Model):\n    value = models.IntegerField()\n\n    class Meta:\n        abstract = True\n\n    # Custom manager\n    restricted = Value42()\n\n\n# No custom manager on this class to make sure the default case doesn't break.\nclass AbstractBase3(models.Model):\n    comment = models.CharField(max_length=50)\n\n    class Meta:\n        abstract = True\n\n\n@python_2_unicode_compatible\nclass Parent(models.Model):\n    name = models.CharField(max_length=50)\n\n    manager = OnlyFred()\n\n    def __str__(self):\n        return self.name\n\n\n# Managers from base classes are inherited and, if no manager is specified\n# *and* the parent has a manager specified, the first one (in the MRO) will\n# become the default.\n@python_2_unicode_compatible\nclass Child1(AbstractBase1):\n    data = models.CharField(max_length=25)\n\n    def __str__(self):\n        return self.data\n\n\n@python_2_unicode_compatible\nclass Child2(AbstractBase1, AbstractBase2):\n    data = models.CharField(max_length=25)\n\n    def __str__(self):\n        return self.data\n\n\n@python_2_unicode_compatible\nclass Child3(AbstractBase1, AbstractBase3):\n    data = models.CharField(max_length=25)\n\n    def __str__(self):\n        return self.data\n\n\n@python_2_unicode_compatible\nclass Child4(AbstractBase1):\n    data = models.CharField(max_length=25)\n\n    # Should be the default manager, although the parent managers are\n    # inherited.\n    default = models.Manager()\n\n    def __str__(self):\n        return self.data\n\n\n@python_2_unicode_compatible\nclass Child5(AbstractBase3):\n    name = models.CharField(max_length=25)\n\n    default = OnlyFred()\n    objects = models.Manager()\n\n    def __str__(self):\n        return self.name\n\n\n# Will inherit managers from AbstractBase1, but not Child4.\nclass Child6(Child4):\n    value = models.IntegerField()\n\n\n# Will not inherit default manager from parent.\nclass Child7(Parent):\n    pass\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/managers_regress/tests.py",
    "content": "from __future__ import absolute_import\nimport copy\n\nfrom django.conf import settings\nfrom django.db import models\nfrom django.db.models.loading import cache\nfrom django.test import TestCase\nfrom django.test.utils import override_settings\n\nfrom .models import (\n    Child1,\n    Child2,\n    Child3,\n    Child4,\n    Child5,\n    Child6,\n    Child7,\n    AbstractBase1,\n    AbstractBase2,\n    AbstractBase3,\n)\n\n\nclass ManagersRegressionTests(TestCase):\n    def test_managers(self):\n        Child1.objects.create(name='fred', data='a1')\n        Child1.objects.create(name='barney', data='a2')\n        Child2.objects.create(name='fred', data='b1', value=1)\n        Child2.objects.create(name='barney', data='b2', value=42)\n        Child3.objects.create(name='fred', data='c1', comment='yes')\n        Child3.objects.create(name='barney', data='c2', comment='no')\n        Child4.objects.create(name='fred', data='d1')\n        Child4.objects.create(name='barney', data='d2')\n        Child5.objects.create(name='fred', comment='yes')\n        Child5.objects.create(name='barney', comment='no')\n        Child6.objects.create(name='fred', data='f1', value=42)\n        Child6.objects.create(name='barney', data='f2', value=42)\n        Child7.objects.create(name='fred')\n        Child7.objects.create(name='barney')\n\n        self.assertQuerysetEqual(Child1.manager1.all(), [\"<Child1: a1>\"])\n        self.assertQuerysetEqual(Child1.manager2.all(), [\"<Child1: a2>\"])\n        self.assertQuerysetEqual(Child1._default_manager.all(), [\"<Child1: a1>\"])\n\n        self.assertQuerysetEqual(Child2._default_manager.all(), [\"<Child2: b1>\"])\n        self.assertQuerysetEqual(Child2.restricted.all(), [\"<Child2: b2>\"])\n\n        self.assertQuerysetEqual(Child3._default_manager.all(), [\"<Child3: c1>\"])\n        self.assertQuerysetEqual(Child3.manager1.all(), [\"<Child3: c1>\"])\n        self.assertQuerysetEqual(Child3.manager2.all(), [\"<Child3: c2>\"])\n\n        # Since Child6 inherits from Child4, the corresponding rows from f1 and\n        # f2 also appear here. This is the expected result.\n        self.assertQuerysetEqual(Child4._default_manager.order_by('data'), [\n                \"<Child4: d1>\",\n                \"<Child4: d2>\",\n                \"<Child4: f1>\",\n                \"<Child4: f2>\"\n            ]\n        )\n        self.assertQuerysetEqual(Child4.manager1.all(), [\n                \"<Child4: d1>\",\n                \"<Child4: f1>\"\n            ]\n        )\n        self.assertQuerysetEqual(Child5._default_manager.all(), [\"<Child5: fred>\"])\n        self.assertQuerysetEqual(Child6._default_manager.all(), [\"<Child6: f1>\"])\n        self.assertQuerysetEqual(Child7._default_manager.order_by('name'), [\n                \"<Child7: barney>\",\n                \"<Child7: fred>\"\n            ]\n        )\n\n    def test_abstract_manager(self):\n        # Accessing the manager on an abstract model should\n        # raise an attribute error with an appropriate message.\n        try:\n            AbstractBase3.objects.all()\n            self.fail('Should raise an AttributeError')\n        except AttributeError as e:\n            # This error message isn't ideal, but if the model is abstract and\n            # a lot of the class instantiation logic isn't invoked; if the\n            # manager is implied, then we don't get a hook to install the\n            # error-raising manager.\n            self.assertEqual(str(e), \"type object 'AbstractBase3' has no attribute 'objects'\")\n\n    def test_custom_abstract_manager(self):\n        # Accessing the manager on an abstract model with an custom\n        # manager should raise an attribute error with an appropriate\n        # message.\n        try:\n            AbstractBase2.restricted.all()\n            self.fail('Should raise an AttributeError')\n        except AttributeError as e:\n            self.assertEqual(str(e), \"Manager isn't available; AbstractBase2 is abstract\")\n\n    def test_explicit_abstract_manager(self):\n        # Accessing the manager on an abstract model with an explicit\n        # manager should raise an attribute error with an appropriate\n        # message.\n        try:\n            AbstractBase1.objects.all()\n            self.fail('Should raise an AttributeError')\n        except AttributeError as e:\n            self.assertEqual(str(e), \"Manager isn't available; AbstractBase1 is abstract\")\n\n    def test_swappable_manager(self):\n        try:\n            # This test adds dummy models to the app cache. These\n            # need to be removed in order to prevent bad interactions\n            # with the flush operation in other tests.\n            old_app_models = copy.deepcopy(cache.app_models)\n            old_app_store = copy.deepcopy(cache.app_store)\n\n            settings.TEST_SWAPPABLE_MODEL = 'managers_regress.Parent'\n\n            class SwappableModel(models.Model):\n                class Meta:\n                    swappable = 'TEST_SWAPPABLE_MODEL'\n\n            # Accessing the manager on a swappable model should\n            # raise an attribute error with a helpful message\n            try:\n                SwappableModel.objects.all()\n                self.fail('Should raise an AttributeError')\n            except AttributeError as e:\n                self.assertEqual(str(e), \"Manager isn't available; SwappableModel has been swapped for 'managers_regress.Parent'\")\n\n        finally:\n            del settings.TEST_SWAPPABLE_MODEL\n            cache.app_models = old_app_models\n            cache.app_store = old_app_store\n\n    def test_custom_swappable_manager(self):\n        try:\n            # This test adds dummy models to the app cache. These\n            # need to be removed in order to prevent bad interactions\n            # with the flush operation in other tests.\n            old_app_models = copy.deepcopy(cache.app_models)\n            old_app_store = copy.deepcopy(cache.app_store)\n\n            settings.TEST_SWAPPABLE_MODEL = 'managers_regress.Parent'\n\n            class SwappableModel(models.Model):\n\n                stuff = models.Manager()\n\n                class Meta:\n                    swappable = 'TEST_SWAPPABLE_MODEL'\n\n            # Accessing the manager on a swappable model with an\n            # explicit manager should raise an attribute error with a\n            # helpful message\n            try:\n                SwappableModel.stuff.all()\n                self.fail('Should raise an AttributeError')\n            except AttributeError as e:\n                self.assertEqual(str(e), \"Manager isn't available; SwappableModel has been swapped for 'managers_regress.Parent'\")\n\n        finally:\n            del settings.TEST_SWAPPABLE_MODEL\n            cache.app_models = old_app_models\n            cache.app_store = old_app_store\n\n    def test_explicit_swappable_manager(self):\n        try:\n            # This test adds dummy models to the app cache. These\n            # need to be removed in order to prevent bad interactions\n            # with the flush operation in other tests.\n            old_app_models = copy.deepcopy(cache.app_models)\n            old_app_store = copy.deepcopy(cache.app_store)\n\n            settings.TEST_SWAPPABLE_MODEL = 'managers_regress.Parent'\n\n            class SwappableModel(models.Model):\n\n                objects = models.Manager()\n\n                class Meta:\n                    swappable = 'TEST_SWAPPABLE_MODEL'\n\n            # Accessing the manager on a swappable model with an\n            # explicit manager should raise an attribute error with a\n            # helpful message\n            try:\n                SwappableModel.objects.all()\n                self.fail('Should raise an AttributeError')\n            except AttributeError as e:\n                self.assertEqual(str(e), \"Manager isn't available; SwappableModel has been swapped for 'managers_regress.Parent'\")\n\n        finally:\n            del settings.TEST_SWAPPABLE_MODEL\n            cache.app_models = old_app_models\n            cache.app_store = old_app_store\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/many_to_one_regress/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/many_to_one_regress/models.py",
    "content": "\"\"\"\nRegression tests for a few ForeignKey bugs.\n\"\"\"\nfrom __future__ import unicode_literals\n\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n# If ticket #1578 ever slips back in, these models will not be able to be\n# created (the field names being lower-cased versions of their opposite\n# classes is important here).\n\nclass First(models.Model):\n    second = models.IntegerField()\n\nclass Second(models.Model):\n    first = models.ForeignKey(First, related_name = 'the_first')\n\n# Protect against repetition of #1839, #2415 and #2536.\nclass Third(models.Model):\n    name = models.CharField(max_length=20)\n    third = models.ForeignKey('self', null=True, related_name='child_set')\n\nclass Parent(models.Model):\n    name = models.CharField(max_length=20)\n    bestchild = models.ForeignKey('Child', null=True, related_name='favored_by')\n\nclass Child(models.Model):\n    name = models.CharField(max_length=20)\n    parent = models.ForeignKey(Parent)\n\n\n# Multiple paths to the same model (#7110, #7125)\n@python_2_unicode_compatible\nclass Category(models.Model):\n    name = models.CharField(max_length=20)\n\n    def __str__(self):\n        return self.name\n\nclass Record(models.Model):\n    category = models.ForeignKey(Category)\n\n@python_2_unicode_compatible\nclass Relation(models.Model):\n    left = models.ForeignKey(Record, related_name='left_set')\n    right = models.ForeignKey(Record, related_name='right_set')\n\n    def __str__(self):\n        return \"%s - %s\" % (self.left.category.name, self.right.category.name)\n\nclass Car(models.Model):\n    make = models.CharField(max_length=100, null=True, unique=True)\n\nclass Driver(models.Model):\n    car = models.ForeignKey(Car, to_field='make', null=True, related_name='drivers')\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/many_to_one_regress/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom django.db import models\nfrom django.test import TestCase\nfrom django.utils import six\n\nfrom .models import (\n    First, Third, Parent, Child, Category, Record, Relation, Car, Driver)\n\n\nclass ManyToOneRegressionTests(TestCase):\n    def test_object_creation(self):\n        Third.objects.create(id='3', name='An example')\n        parent = Parent(name='fred')\n        parent.save()\n        Child.objects.create(name='bam-bam', parent=parent)\n\n    def test_fk_assignment_and_related_object_cache(self):\n        # Tests of ForeignKey assignment and the related-object cache (see #6886).\n\n        p = Parent.objects.create(name=\"Parent\")\n        c = Child.objects.create(name=\"Child\", parent=p)\n\n        # Look up the object again so that we get a \"fresh\" object.\n        c = Child.objects.get(name=\"Child\")\n        p = c.parent\n\n        # Accessing the related object again returns the exactly same object.\n        self.assertTrue(c.parent is p)\n\n        # But if we kill the cache, we get a new object.\n        del c._parent_cache\n        self.assertFalse(c.parent is p)\n\n        # Assigning a new object results in that object getting cached immediately.\n        p2 = Parent.objects.create(name=\"Parent 2\")\n        c.parent = p2\n        self.assertTrue(c.parent is p2)\n\n        # Assigning None succeeds if field is null=True.\n        p.bestchild = None\n        self.assertTrue(p.bestchild is None)\n\n        # bestchild should still be None after saving.\n        p.save()\n        self.assertTrue(p.bestchild is None)\n\n        # bestchild should still be None after fetching the object again.\n        p = Parent.objects.get(name=\"Parent\")\n        self.assertTrue(p.bestchild is None)\n\n        # Assigning None fails: Child.parent is null=False.\n        self.assertRaises(ValueError, setattr, c, \"parent\", None)\n\n        # You also can't assign an object of the wrong type here\n        self.assertRaises(ValueError, setattr, c, \"parent\", First(id=1, second=1))\n\n        # Nor can you explicitly assign None to Child.parent during object\n        # creation (regression for #9649).\n        self.assertRaises(ValueError, Child, name='xyzzy', parent=None)\n        self.assertRaises(ValueError, Child.objects.create, name='xyzzy', parent=None)\n\n        # Trying to assign to unbound attribute raises AttributeError\n        six.assertRaisesRegex(self, AttributeError, \"must be accessed via instance\",\n            Child.parent.__set__, None, p)\n\n        # Creation using keyword argument should cache the related object.\n        p = Parent.objects.get(name=\"Parent\")\n        c = Child(parent=p)\n        self.assertTrue(c.parent is p)\n\n        # Creation using keyword argument and unsaved related instance (#8070).\n        p = Parent()\n        c = Child(parent=p)\n        self.assertTrue(c.parent is p)\n\n        # Creation using attname keyword argument and an id will cause the\n        # related object to be fetched.\n        p = Parent.objects.get(name=\"Parent\")\n        c = Child(parent_id=p.id)\n        self.assertFalse(c.parent is p)\n        self.assertEqual(c.parent, p)\n\n    def test_multiple_foreignkeys(self):\n        # Test of multiple ForeignKeys to the same model (bug #7125).\n        c1 = Category.objects.create(name='First')\n        c2 = Category.objects.create(name='Second')\n        c3 = Category.objects.create(name='Third')\n        r1 = Record.objects.create(category=c1)\n        r2 = Record.objects.create(category=c1)\n        r3 = Record.objects.create(category=c2)\n        r4 = Record.objects.create(category=c2)\n        r5 = Record.objects.create(category=c3)\n        r = Relation.objects.create(left=r1, right=r2)\n        r = Relation.objects.create(left=r3, right=r4)\n        r = Relation.objects.create(left=r1, right=r3)\n        r = Relation.objects.create(left=r5, right=r2)\n        r = Relation.objects.create(left=r3, right=r2)\n\n        q1 = Relation.objects.filter(left__category__name__in=['First'], right__category__name__in=['Second'])\n        self.assertQuerysetEqual(q1, [\"<Relation: First - Second>\"])\n\n        q2 = Category.objects.filter(record__left_set__right__category__name='Second').order_by('name')\n        self.assertQuerysetEqual(q2, [\"<Category: First>\", \"<Category: Second>\"])\n\n        p = Parent.objects.create(name=\"Parent\")\n        c = Child.objects.create(name=\"Child\", parent=p)\n        self.assertRaises(ValueError, Child.objects.create, name=\"Grandchild\", parent=c)\n\n    def test_fk_instantiation_outside_model(self):\n        # Regression for #12190 -- Should be able to instantiate a FK outside\n        # of a model, and interrogate its related field.\n        cat = models.ForeignKey(Category)\n        self.assertEqual('id', cat.rel.get_related_field().name)\n\n    def test_relation_unsaved(self):\n        # Test that the <field>_set manager does not join on Null value fields (#17541)\n        Third.objects.create(name='Third 1')\n        Third.objects.create(name='Third 2')\n        th = Third(name=\"testing\")\n        # The object isn't saved an thus the relation field is null - we won't even\n        # execute a query in this case.\n        with self.assertNumQueries(0):\n            self.assertEqual(th.child_set.count(), 0)\n        th.save()\n        # Now the model is saved, so we will need to execute an query.\n        with self.assertNumQueries(1):\n            self.assertEqual(th.child_set.count(), 0)\n\n    def test_related_null_to_field(self):\n        c1 = Car.objects.create()\n        c2 = Car.objects.create()\n        d1 = Driver.objects.create()\n        self.assertIs(d1.car, None)\n        with self.assertNumQueries(0):\n            self.assertEqual(list(c1.drivers.all()), [])\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/max_lengths/__init__.py",
    "content": "\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/max_lengths/models.py",
    "content": "from django.db import models\n\n\nclass PersonWithDefaultMaxLengths(models.Model):\n    email = models.EmailField()\n    vcard = models.FileField(upload_to='/tmp')\n    homepage = models.URLField()\n    avatar = models.FilePathField()\n\nclass PersonWithCustomMaxLengths(models.Model):\n    email = models.EmailField(max_length=250)\n    vcard = models.FileField(upload_to='/tmp', max_length=250)\n    homepage = models.URLField(max_length=250)\n    avatar = models.FilePathField(max_length=250)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/max_lengths/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom django.utils import unittest\n\nfrom .models import PersonWithDefaultMaxLengths, PersonWithCustomMaxLengths\n\n\nclass MaxLengthArgumentsTests(unittest.TestCase):\n\n    def verify_max_length(self, model,field,length):\n        self.assertEqual(model._meta.get_field(field).max_length,length)\n\n    def test_default_max_lengths(self):\n        self.verify_max_length(PersonWithDefaultMaxLengths, 'email', 75)\n        self.verify_max_length(PersonWithDefaultMaxLengths, 'vcard', 100)\n        self.verify_max_length(PersonWithDefaultMaxLengths, 'homepage', 200)\n        self.verify_max_length(PersonWithDefaultMaxLengths, 'avatar', 100)\n\n    def test_custom_max_lengths(self):\n        self.verify_max_length(PersonWithCustomMaxLengths, 'email', 250)\n        self.verify_max_length(PersonWithCustomMaxLengths, 'vcard', 250)\n        self.verify_max_length(PersonWithCustomMaxLengths, 'homepage', 250)\n        self.verify_max_length(PersonWithCustomMaxLengths, 'avatar', 250)\n\nclass MaxLengthORMTests(unittest.TestCase):\n\n    def test_custom_max_lengths(self):\n        args = {\n            \"email\": \"someone@example.com\",\n            \"vcard\": \"vcard\",\n            \"homepage\": \"http://example.com/\",\n            \"avatar\": \"me.jpg\"\n        }\n\n        for field in (\"email\", \"vcard\", \"homepage\", \"avatar\"):\n            new_args = args.copy()\n            new_args[field] = \"X\" * 250 # a value longer than any of the default fields could hold.\n            p = PersonWithCustomMaxLengths.objects.create(**new_args)\n            self.assertEqual(getattr(p, field), (\"X\" * 250))"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/middleware/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/middleware/cond_get_urls.py",
    "content": "from django.conf.urls import patterns\nfrom django.http import HttpResponse\n\nurlpatterns = patterns('',\n    (r'^$', lambda request: HttpResponse('root is here')),\n)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/middleware/extra_urls.py",
    "content": "from django.conf.urls import patterns\n\nurlpatterns = patterns('',\n    (r'^middleware/customurlconf/noslash$', 'view'),\n    (r'^middleware/customurlconf/slash/$', 'view'),\n    (r'^middleware/customurlconf/needsquoting#/$', 'view'),\n)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/middleware/models.py",
    "content": "from django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n@python_2_unicode_compatible\nclass Band(models.Model):\n    name = models.CharField(max_length=100)\n\n    class Meta:\n        ordering = ('name',)\n\n    def __str__(self):\n        return self.name\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/middleware/tests.py",
    "content": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import, unicode_literals\n\nimport gzip\nimport re\nimport random\nfrom io import BytesIO\n\nfrom django.conf import settings\nfrom django.core import mail\nfrom django.db import (transaction, connections, DEFAULT_DB_ALIAS,\n                       IntegrityError)\nfrom django.http import HttpRequest, HttpResponse, StreamingHttpResponse\nfrom django.middleware.clickjacking import XFrameOptionsMiddleware\nfrom django.middleware.common import CommonMiddleware\nfrom django.middleware.http import ConditionalGetMiddleware\nfrom django.middleware.gzip import GZipMiddleware\nfrom django.middleware.transaction import TransactionMiddleware\nfrom django.test import TransactionTestCase, TestCase, RequestFactory\nfrom django.test.utils import override_settings\nfrom django.utils import six\nfrom django.utils.encoding import force_str\nfrom django.utils.six.moves import xrange\n\nfrom .models import Band\n\n\nclass CommonMiddlewareTest(TestCase):\n    def setUp(self):\n        self.append_slash = settings.APPEND_SLASH\n        self.prepend_www = settings.PREPEND_WWW\n        self.ignorable_404_urls = settings.IGNORABLE_404_URLS\n        self.send_broken_email_links = settings.SEND_BROKEN_LINK_EMAILS\n\n    def tearDown(self):\n        settings.APPEND_SLASH = self.append_slash\n        settings.PREPEND_WWW = self.prepend_www\n        settings.IGNORABLE_404_URLS = self.ignorable_404_urls\n        settings.SEND_BROKEN_LINK_EMAILS = self.send_broken_email_links\n\n    def _get_request(self, path):\n        request = HttpRequest()\n        request.META = {\n            'SERVER_NAME': 'testserver',\n            'SERVER_PORT': 80,\n        }\n        request.path = request.path_info = \"/middleware/%s\" % path\n        return request\n\n    def test_append_slash_have_slash(self):\n        \"\"\"\n        Tests that URLs with slashes go unmolested.\n        \"\"\"\n        settings.APPEND_SLASH = True\n        request = self._get_request('slash/')\n        self.assertEqual(CommonMiddleware().process_request(request), None)\n\n    def test_append_slash_slashless_resource(self):\n        \"\"\"\n        Tests that matches to explicit slashless URLs go unmolested.\n        \"\"\"\n        settings.APPEND_SLASH = True\n        request = self._get_request('noslash')\n        self.assertEqual(CommonMiddleware().process_request(request), None)\n\n    def test_append_slash_slashless_unknown(self):\n        \"\"\"\n        Tests that APPEND_SLASH doesn't redirect to unknown resources.\n        \"\"\"\n        settings.APPEND_SLASH = True\n        request = self._get_request('unknown')\n        self.assertEqual(CommonMiddleware().process_request(request), None)\n\n    def test_append_slash_redirect(self):\n        \"\"\"\n        Tests that APPEND_SLASH redirects slashless URLs to a valid pattern.\n        \"\"\"\n        settings.APPEND_SLASH = True\n        request = self._get_request('slash')\n        r = CommonMiddleware().process_request(request)\n        self.assertEqual(r.status_code, 301)\n        self.assertEqual(r['Location'], 'http://testserver/middleware/slash/')\n\n    def test_append_slash_no_redirect_on_POST_in_DEBUG(self):\n        \"\"\"\n        Tests that while in debug mode, an exception is raised with a warning\n        when a failed attempt is made to POST to an URL which would normally be\n        redirected to a slashed version.\n        \"\"\"\n        settings.APPEND_SLASH = True\n        settings.DEBUG = True\n        request = self._get_request('slash')\n        request.method = 'POST'\n        self.assertRaises(\n            RuntimeError,\n            CommonMiddleware().process_request,\n            request)\n        try:\n            CommonMiddleware().process_request(request)\n        except RuntimeError as e:\n            self.assertTrue('end in a slash' in str(e))\n        settings.DEBUG = False\n\n    def test_append_slash_disabled(self):\n        \"\"\"\n        Tests disabling append slash functionality.\n        \"\"\"\n        settings.APPEND_SLASH = False\n        request = self._get_request('slash')\n        self.assertEqual(CommonMiddleware().process_request(request), None)\n\n    def test_append_slash_quoted(self):\n        \"\"\"\n        Tests that URLs which require quoting are redirected to their slash\n        version ok.\n        \"\"\"\n        settings.APPEND_SLASH = True\n        request = self._get_request('needsquoting#')\n        r = CommonMiddleware().process_request(request)\n        self.assertEqual(r.status_code, 301)\n        self.assertEqual(\n            r['Location'],\n            'http://testserver/middleware/needsquoting%23/')\n\n    def test_prepend_www(self):\n        settings.PREPEND_WWW = True\n        settings.APPEND_SLASH = False\n        request = self._get_request('path/')\n        r = CommonMiddleware().process_request(request)\n        self.assertEqual(r.status_code, 301)\n        self.assertEqual(\n            r['Location'],\n            'http://www.testserver/middleware/path/')\n\n    def test_prepend_www_append_slash_have_slash(self):\n        settings.PREPEND_WWW = True\n        settings.APPEND_SLASH = True\n        request = self._get_request('slash/')\n        r = CommonMiddleware().process_request(request)\n        self.assertEqual(r.status_code, 301)\n        self.assertEqual(r['Location'],\n                          'http://www.testserver/middleware/slash/')\n\n    def test_prepend_www_append_slash_slashless(self):\n        settings.PREPEND_WWW = True\n        settings.APPEND_SLASH = True\n        request = self._get_request('slash')\n        r = CommonMiddleware().process_request(request)\n        self.assertEqual(r.status_code, 301)\n        self.assertEqual(r['Location'],\n                          'http://www.testserver/middleware/slash/')\n\n\n    # The following tests examine expected behavior given a custom urlconf that\n    # overrides the default one through the request object.\n\n    def test_append_slash_have_slash_custom_urlconf(self):\n      \"\"\"\n      Tests that URLs with slashes go unmolested.\n      \"\"\"\n      settings.APPEND_SLASH = True\n      request = self._get_request('customurlconf/slash/')\n      request.urlconf = 'regressiontests.middleware.extra_urls'\n      self.assertEqual(CommonMiddleware().process_request(request), None)\n\n    def test_append_slash_slashless_resource_custom_urlconf(self):\n      \"\"\"\n      Tests that matches to explicit slashless URLs go unmolested.\n      \"\"\"\n      settings.APPEND_SLASH = True\n      request = self._get_request('customurlconf/noslash')\n      request.urlconf = 'regressiontests.middleware.extra_urls'\n      self.assertEqual(CommonMiddleware().process_request(request), None)\n\n    def test_append_slash_slashless_unknown_custom_urlconf(self):\n      \"\"\"\n      Tests that APPEND_SLASH doesn't redirect to unknown resources.\n      \"\"\"\n      settings.APPEND_SLASH = True\n      request = self._get_request('customurlconf/unknown')\n      request.urlconf = 'regressiontests.middleware.extra_urls'\n      self.assertEqual(CommonMiddleware().process_request(request), None)\n\n    def test_append_slash_redirect_custom_urlconf(self):\n      \"\"\"\n      Tests that APPEND_SLASH redirects slashless URLs to a valid pattern.\n      \"\"\"\n      settings.APPEND_SLASH = True\n      request = self._get_request('customurlconf/slash')\n      request.urlconf = 'regressiontests.middleware.extra_urls'\n      r = CommonMiddleware().process_request(request)\n      self.assertFalse(r is None,\n          \"CommonMiddlware failed to return APPEND_SLASH redirect using request.urlconf\")\n      self.assertEqual(r.status_code, 301)\n      self.assertEqual(r['Location'], 'http://testserver/middleware/customurlconf/slash/')\n\n    def test_append_slash_no_redirect_on_POST_in_DEBUG_custom_urlconf(self):\n      \"\"\"\n      Tests that while in debug mode, an exception is raised with a warning\n      when a failed attempt is made to POST to an URL which would normally be\n      redirected to a slashed version.\n      \"\"\"\n      settings.APPEND_SLASH = True\n      settings.DEBUG = True\n      request = self._get_request('customurlconf/slash')\n      request.urlconf = 'regressiontests.middleware.extra_urls'\n      request.method = 'POST'\n      self.assertRaises(\n          RuntimeError,\n          CommonMiddleware().process_request,\n          request)\n      try:\n          CommonMiddleware().process_request(request)\n      except RuntimeError as e:\n          self.assertTrue('end in a slash' in str(e))\n      settings.DEBUG = False\n\n    def test_append_slash_disabled_custom_urlconf(self):\n      \"\"\"\n      Tests disabling append slash functionality.\n      \"\"\"\n      settings.APPEND_SLASH = False\n      request = self._get_request('customurlconf/slash')\n      request.urlconf = 'regressiontests.middleware.extra_urls'\n      self.assertEqual(CommonMiddleware().process_request(request), None)\n\n    def test_append_slash_quoted_custom_urlconf(self):\n      \"\"\"\n      Tests that URLs which require quoting are redirected to their slash\n      version ok.\n      \"\"\"\n      settings.APPEND_SLASH = True\n      request = self._get_request('customurlconf/needsquoting#')\n      request.urlconf = 'regressiontests.middleware.extra_urls'\n      r = CommonMiddleware().process_request(request)\n      self.assertFalse(r is None,\n          \"CommonMiddlware failed to return APPEND_SLASH redirect using request.urlconf\")\n      self.assertEqual(r.status_code, 301)\n      self.assertEqual(\n          r['Location'],\n          'http://testserver/middleware/customurlconf/needsquoting%23/')\n\n    def test_prepend_www_custom_urlconf(self):\n      settings.PREPEND_WWW = True\n      settings.APPEND_SLASH = False\n      request = self._get_request('customurlconf/path/')\n      request.urlconf = 'regressiontests.middleware.extra_urls'\n      r = CommonMiddleware().process_request(request)\n      self.assertEqual(r.status_code, 301)\n      self.assertEqual(\n          r['Location'],\n          'http://www.testserver/middleware/customurlconf/path/')\n\n    def test_prepend_www_append_slash_have_slash_custom_urlconf(self):\n      settings.PREPEND_WWW = True\n      settings.APPEND_SLASH = True\n      request = self._get_request('customurlconf/slash/')\n      request.urlconf = 'regressiontests.middleware.extra_urls'\n      r = CommonMiddleware().process_request(request)\n      self.assertEqual(r.status_code, 301)\n      self.assertEqual(r['Location'],\n                        'http://www.testserver/middleware/customurlconf/slash/')\n\n    def test_prepend_www_append_slash_slashless_custom_urlconf(self):\n      settings.PREPEND_WWW = True\n      settings.APPEND_SLASH = True\n      request = self._get_request('customurlconf/slash')\n      request.urlconf = 'regressiontests.middleware.extra_urls'\n      r = CommonMiddleware().process_request(request)\n      self.assertEqual(r.status_code, 301)\n      self.assertEqual(r['Location'],\n                        'http://www.testserver/middleware/customurlconf/slash/')\n\n    # Tests for the 404 error reporting via email\n\n    def test_404_error_reporting(self):\n        settings.IGNORABLE_404_URLS = (re.compile(r'foo'),)\n        settings.SEND_BROKEN_LINK_EMAILS = True\n        request = self._get_request('regular_url/that/does/not/exist')\n        request.META['HTTP_REFERER'] = '/another/url/'\n        response = self.client.get(request.path)\n        CommonMiddleware().process_response(request, response)\n        self.assertEqual(len(mail.outbox), 1)\n        self.assertIn('Broken', mail.outbox[0].subject)\n\n    def test_404_error_reporting_no_referer(self):\n        settings.IGNORABLE_404_URLS = (re.compile(r'foo'),)\n        settings.SEND_BROKEN_LINK_EMAILS = True\n        request = self._get_request('regular_url/that/does/not/exist')\n        response = self.client.get(request.path)\n        CommonMiddleware().process_response(request, response)\n        self.assertEqual(len(mail.outbox), 0)\n\n    def test_404_error_reporting_ignored_url(self):\n        settings.IGNORABLE_404_URLS = (re.compile(r'foo'),)\n        settings.SEND_BROKEN_LINK_EMAILS = True\n        request = self._get_request('foo_url/that/does/not/exist/either')\n        request.META['HTTP_REFERER'] = '/another/url/'\n        response = self.client.get(request.path)\n        CommonMiddleware().process_response(request, response)\n        self.assertEqual(len(mail.outbox), 0)\n\n    # Other tests\n\n    def test_non_ascii_query_string_does_not_crash(self):\n        \"\"\"Regression test for #15152\"\"\"\n        request = self._get_request('slash')\n        request.META['QUERY_STRING'] = force_str('drink=café')\n        response = CommonMiddleware().process_request(request)\n        self.assertEqual(response.status_code, 301)\n\n\nclass ConditionalGetMiddlewareTest(TestCase):\n    urls = 'regressiontests.middleware.cond_get_urls'\n    def setUp(self):\n        self.req = HttpRequest()\n        self.req.META = {\n            'SERVER_NAME': 'testserver',\n            'SERVER_PORT': 80,\n        }\n        self.req.path = self.req.path_info = \"/\"\n        self.resp = self.client.get(self.req.path)\n\n    # Tests for the Date header\n\n    def test_date_header_added(self):\n        self.assertFalse('Date' in self.resp)\n        self.resp = ConditionalGetMiddleware().process_response(self.req, self.resp)\n        self.assertTrue('Date' in self.resp)\n\n    # Tests for the Content-Length header\n\n    def test_content_length_header_added(self):\n        content_length = len(self.resp.content)\n        self.assertFalse('Content-Length' in self.resp)\n        self.resp = ConditionalGetMiddleware().process_response(self.req, self.resp)\n        self.assertTrue('Content-Length' in self.resp)\n        self.assertEqual(int(self.resp['Content-Length']), content_length)\n\n    def test_content_length_header_not_added(self):\n        resp = StreamingHttpResponse('content')\n        self.assertFalse('Content-Length' in resp)\n        resp = ConditionalGetMiddleware().process_response(self.req, resp)\n        self.assertFalse('Content-Length' in resp)\n\n    def test_content_length_header_not_changed(self):\n        bad_content_length = len(self.resp.content) + 10\n        self.resp['Content-Length'] = bad_content_length\n        self.resp = ConditionalGetMiddleware().process_response(self.req, self.resp)\n        self.assertEqual(int(self.resp['Content-Length']), bad_content_length)\n\n    # Tests for the ETag header\n\n    def test_if_none_match_and_no_etag(self):\n        self.req.META['HTTP_IF_NONE_MATCH'] = 'spam'\n        self.resp = ConditionalGetMiddleware().process_response(self.req, self.resp)\n        self.assertEqual(self.resp.status_code, 200)\n\n    def test_no_if_none_match_and_etag(self):\n        self.resp['ETag'] = 'eggs'\n        self.resp = ConditionalGetMiddleware().process_response(self.req, self.resp)\n        self.assertEqual(self.resp.status_code, 200)\n\n    def test_if_none_match_and_same_etag(self):\n        self.req.META['HTTP_IF_NONE_MATCH'] = self.resp['ETag'] = 'spam'\n        self.resp = ConditionalGetMiddleware().process_response(self.req, self.resp)\n        self.assertEqual(self.resp.status_code, 304)\n\n    def test_if_none_match_and_different_etag(self):\n        self.req.META['HTTP_IF_NONE_MATCH'] = 'spam'\n        self.resp['ETag'] = 'eggs'\n        self.resp = ConditionalGetMiddleware().process_response(self.req, self.resp)\n        self.assertEqual(self.resp.status_code, 200)\n\n    @override_settings(USE_ETAGS=True)\n    def test_etag(self):\n        req = HttpRequest()\n        res = HttpResponse('content')\n        self.assertTrue(\n            CommonMiddleware().process_response(req, res).has_header('ETag'))\n\n    @override_settings(USE_ETAGS=True)\n    def test_etag_streaming_response(self):\n        req = HttpRequest()\n        res = StreamingHttpResponse(['content'])\n        res['ETag'] = 'tomatoes'\n        self.assertEqual(\n            CommonMiddleware().process_response(req, res).get('ETag'),\n            'tomatoes')\n\n    @override_settings(USE_ETAGS=True)\n    def test_no_etag_streaming_response(self):\n        req = HttpRequest()\n        res = StreamingHttpResponse(['content'])\n        self.assertFalse(\n            CommonMiddleware().process_response(req, res).has_header('ETag'))\n\n    # Tests for the Last-Modified header\n\n    def test_if_modified_since_and_no_last_modified(self):\n        self.req.META['HTTP_IF_MODIFIED_SINCE'] = 'Sat, 12 Feb 2011 17:38:44 GMT'\n        self.resp = ConditionalGetMiddleware().process_response(self.req, self.resp)\n        self.assertEqual(self.resp.status_code, 200)\n\n    def test_no_if_modified_since_and_last_modified(self):\n        self.resp['Last-Modified'] = 'Sat, 12 Feb 2011 17:38:44 GMT'\n        self.resp = ConditionalGetMiddleware().process_response(self.req, self.resp)\n        self.assertEqual(self.resp.status_code, 200)\n\n    def test_if_modified_since_and_same_last_modified(self):\n        self.req.META['HTTP_IF_MODIFIED_SINCE'] = 'Sat, 12 Feb 2011 17:38:44 GMT'\n        self.resp['Last-Modified'] = 'Sat, 12 Feb 2011 17:38:44 GMT'\n        self.resp = ConditionalGetMiddleware().process_response(self.req, self.resp)\n        self.assertEqual(self.resp.status_code, 304)\n\n    def test_if_modified_since_and_last_modified_in_the_past(self):\n        self.req.META['HTTP_IF_MODIFIED_SINCE'] = 'Sat, 12 Feb 2011 17:38:44 GMT'\n        self.resp['Last-Modified'] = 'Sat, 12 Feb 2011 17:35:44 GMT'\n        self.resp = ConditionalGetMiddleware().process_response(self.req, self.resp)\n        self.assertEqual(self.resp.status_code, 304)\n\n    def test_if_modified_since_and_last_modified_in_the_future(self):\n        self.req.META['HTTP_IF_MODIFIED_SINCE'] = 'Sat, 12 Feb 2011 17:38:44 GMT'\n        self.resp['Last-Modified'] = 'Sat, 12 Feb 2011 17:41:44 GMT'\n        self.resp = ConditionalGetMiddleware().process_response(self.req, self.resp)\n        self.assertEqual(self.resp.status_code, 200)\n\n\nclass XFrameOptionsMiddlewareTest(TestCase):\n    \"\"\"\n    Tests for the X-Frame-Options clickjacking prevention middleware.\n    \"\"\"\n    def setUp(self):\n        self.x_frame_options = settings.X_FRAME_OPTIONS\n\n    def tearDown(self):\n        settings.X_FRAME_OPTIONS = self.x_frame_options\n\n    def test_same_origin(self):\n        \"\"\"\n        Tests that the X_FRAME_OPTIONS setting can be set to SAMEORIGIN to\n        have the middleware use that value for the HTTP header.\n        \"\"\"\n        settings.X_FRAME_OPTIONS = 'SAMEORIGIN'\n        r = XFrameOptionsMiddleware().process_response(HttpRequest(),\n                                                       HttpResponse())\n        self.assertEqual(r['X-Frame-Options'], 'SAMEORIGIN')\n\n        settings.X_FRAME_OPTIONS = 'sameorigin'\n        r = XFrameOptionsMiddleware().process_response(HttpRequest(),\n                                                       HttpResponse())\n        self.assertEqual(r['X-Frame-Options'], 'SAMEORIGIN')\n\n    def test_deny(self):\n        \"\"\"\n        Tests that the X_FRAME_OPTIONS setting can be set to DENY to\n        have the middleware use that value for the HTTP header.\n        \"\"\"\n        settings.X_FRAME_OPTIONS = 'DENY'\n        r = XFrameOptionsMiddleware().process_response(HttpRequest(),\n                                                       HttpResponse())\n        self.assertEqual(r['X-Frame-Options'], 'DENY')\n\n        settings.X_FRAME_OPTIONS = 'deny'\n        r = XFrameOptionsMiddleware().process_response(HttpRequest(),\n                                                       HttpResponse())\n        self.assertEqual(r['X-Frame-Options'], 'DENY')\n\n    def test_defaults_sameorigin(self):\n        \"\"\"\n        Tests that if the X_FRAME_OPTIONS setting is not set then it defaults\n        to SAMEORIGIN.\n        \"\"\"\n        del settings.X_FRAME_OPTIONS\n        r = XFrameOptionsMiddleware().process_response(HttpRequest(),\n                                                       HttpResponse())\n        self.assertEqual(r['X-Frame-Options'], 'SAMEORIGIN')\n\n    def test_dont_set_if_set(self):\n        \"\"\"\n        Tests that if the X-Frame-Options header is already set then the\n        middleware does not attempt to override it.\n        \"\"\"\n        settings.X_FRAME_OPTIONS = 'DENY'\n        response = HttpResponse()\n        response['X-Frame-Options'] = 'SAMEORIGIN'\n        r = XFrameOptionsMiddleware().process_response(HttpRequest(),\n                                                       response)\n        self.assertEqual(r['X-Frame-Options'], 'SAMEORIGIN')\n\n        settings.X_FRAME_OPTIONS = 'SAMEORIGIN'\n        response = HttpResponse()\n        response['X-Frame-Options'] = 'DENY'\n        r = XFrameOptionsMiddleware().process_response(HttpRequest(),\n                                                       response)\n        self.assertEqual(r['X-Frame-Options'], 'DENY')\n\n    def test_response_exempt(self):\n        \"\"\"\n        Tests that if the response has a xframe_options_exempt attribute set\n        to False then it still sets the header, but if it's set to True then\n        it does not.\n        \"\"\"\n        settings.X_FRAME_OPTIONS = 'SAMEORIGIN'\n        response = HttpResponse()\n        response.xframe_options_exempt = False\n        r = XFrameOptionsMiddleware().process_response(HttpRequest(),\n                                                       response)\n        self.assertEqual(r['X-Frame-Options'], 'SAMEORIGIN')\n\n        response = HttpResponse()\n        response.xframe_options_exempt = True\n        r = XFrameOptionsMiddleware().process_response(HttpRequest(),\n                                                       response)\n        self.assertEqual(r.get('X-Frame-Options', None), None)\n\n    def test_is_extendable(self):\n        \"\"\"\n        Tests that the XFrameOptionsMiddleware method that determines the\n        X-Frame-Options header value can be overridden based on something in\n        the request or response.\n        \"\"\"\n        class OtherXFrameOptionsMiddleware(XFrameOptionsMiddleware):\n            # This is just an example for testing purposes...\n            def get_xframe_options_value(self, request, response):\n                if getattr(request, 'sameorigin', False):\n                    return 'SAMEORIGIN'\n                if getattr(response, 'sameorigin', False):\n                    return 'SAMEORIGIN'\n                return 'DENY'\n\n        settings.X_FRAME_OPTIONS = 'DENY'\n        response = HttpResponse()\n        response.sameorigin = True\n        r = OtherXFrameOptionsMiddleware().process_response(HttpRequest(),\n                                                            response)\n        self.assertEqual(r['X-Frame-Options'], 'SAMEORIGIN')\n\n        request = HttpRequest()\n        request.sameorigin = True\n        r = OtherXFrameOptionsMiddleware().process_response(request,\n                                                            HttpResponse())\n        self.assertEqual(r['X-Frame-Options'], 'SAMEORIGIN')\n\n        settings.X_FRAME_OPTIONS = 'SAMEORIGIN'\n        r = OtherXFrameOptionsMiddleware().process_response(HttpRequest(),\n                                                       HttpResponse())\n        self.assertEqual(r['X-Frame-Options'], 'DENY')\n\n\nclass GZipMiddlewareTest(TestCase):\n    \"\"\"\n    Tests the GZip middleware.\n    \"\"\"\n    short_string = b\"This string is too short to be worth compressing.\"\n    compressible_string = b'a' * 500\n    uncompressible_string = b''.join(six.int2byte(random.randint(0, 255)) for _ in xrange(500))\n    sequence = [b'a' * 500, b'b' * 200, b'a' * 300]\n\n    def setUp(self):\n        self.req = HttpRequest()\n        self.req.META = {\n            'SERVER_NAME': 'testserver',\n            'SERVER_PORT': 80,\n        }\n        self.req.path = self.req.path_info = \"/\"\n        self.req.META['HTTP_ACCEPT_ENCODING'] = 'gzip, deflate'\n        self.req.META['HTTP_USER_AGENT'] = 'Mozilla/5.0 (Windows NT 5.1; rv:9.0.1) Gecko/20100101 Firefox/9.0.1'\n        self.resp = HttpResponse()\n        self.resp.status_code = 200\n        self.resp.content = self.compressible_string\n        self.resp['Content-Type'] = 'text/html; charset=UTF-8'\n        self.stream_resp = StreamingHttpResponse(self.sequence)\n        self.stream_resp['Content-Type'] = 'text/html; charset=UTF-8'\n\n    @staticmethod\n    def decompress(gzipped_string):\n        return gzip.GzipFile(mode='rb', fileobj=BytesIO(gzipped_string)).read()\n\n    def test_compress_response(self):\n        \"\"\"\n        Tests that compression is performed on responses with compressible content.\n        \"\"\"\n        r = GZipMiddleware().process_response(self.req, self.resp)\n        self.assertEqual(self.decompress(r.content), self.compressible_string)\n        self.assertEqual(r.get('Content-Encoding'), 'gzip')\n        self.assertEqual(r.get('Content-Length'), str(len(r.content)))\n\n    def test_compress_streaming_response(self):\n        \"\"\"\n        Tests that compression is performed on responses with streaming content.\n        \"\"\"\n        r = GZipMiddleware().process_response(self.req, self.stream_resp)\n        self.assertEqual(self.decompress(b''.join(r)), b''.join(self.sequence))\n        self.assertEqual(r.get('Content-Encoding'), 'gzip')\n        self.assertFalse(r.has_header('Content-Length'))\n\n    def test_compress_non_200_response(self):\n        \"\"\"\n        Tests that compression is performed on responses with a status other than 200.\n        See #10762.\n        \"\"\"\n        self.resp.status_code = 404\n        r = GZipMiddleware().process_response(self.req, self.resp)\n        self.assertEqual(self.decompress(r.content), self.compressible_string)\n        self.assertEqual(r.get('Content-Encoding'), 'gzip')\n\n    def test_no_compress_short_response(self):\n        \"\"\"\n        Tests that compression isn't performed on responses with short content.\n        \"\"\"\n        self.resp.content = self.short_string\n        r = GZipMiddleware().process_response(self.req, self.resp)\n        self.assertEqual(r.content, self.short_string)\n        self.assertEqual(r.get('Content-Encoding'), None)\n\n    def test_no_compress_compressed_response(self):\n        \"\"\"\n        Tests that compression isn't performed on responses that are already compressed.\n        \"\"\"\n        self.resp['Content-Encoding'] = 'deflate'\n        r = GZipMiddleware().process_response(self.req, self.resp)\n        self.assertEqual(r.content, self.compressible_string)\n        self.assertEqual(r.get('Content-Encoding'), 'deflate')\n\n    def test_no_compress_ie_js_requests(self):\n        \"\"\"\n        Tests that compression isn't performed on JavaScript requests from Internet Explorer.\n        \"\"\"\n        self.req.META['HTTP_USER_AGENT'] = 'Mozilla/4.0 (compatible; MSIE 5.00; Windows 98)'\n        self.resp['Content-Type'] = 'application/javascript; charset=UTF-8'\n        r = GZipMiddleware().process_response(self.req, self.resp)\n        self.assertEqual(r.content, self.compressible_string)\n        self.assertEqual(r.get('Content-Encoding'), None)\n\n    def test_no_compress_uncompressible_response(self):\n        \"\"\"\n        Tests that compression isn't performed on responses with uncompressible content.\n        \"\"\"\n        self.resp.content = self.uncompressible_string\n        r = GZipMiddleware().process_response(self.req, self.resp)\n        self.assertEqual(r.content, self.uncompressible_string)\n        self.assertEqual(r.get('Content-Encoding'), None)\n\n\n@override_settings(USE_ETAGS=True)\nclass ETagGZipMiddlewareTest(TestCase):\n    \"\"\"\n    Tests if the ETag middleware behaves correctly with GZip middleware.\n    \"\"\"\n    compressible_string = b'a' * 500\n\n    def setUp(self):\n        self.rf = RequestFactory()\n\n    def test_compress_response(self):\n        \"\"\"\n        Tests that ETag is changed after gzip compression is performed.\n        \"\"\"\n        request = self.rf.get('/', HTTP_ACCEPT_ENCODING='gzip, deflate')\n        response = GZipMiddleware().process_response(request,\n            CommonMiddleware().process_response(request,\n                HttpResponse(self.compressible_string)))\n        gzip_etag = response.get('ETag')\n\n        request = self.rf.get('/', HTTP_ACCEPT_ENCODING='')\n        response = GZipMiddleware().process_response(request,\n            CommonMiddleware().process_response(request,\n                HttpResponse(self.compressible_string)))\n        nogzip_etag = response.get('ETag')\n\n        self.assertNotEqual(gzip_etag, nogzip_etag)\n\nclass TransactionMiddlewareTest(TransactionTestCase):\n    \"\"\"\n    Test the transaction middleware.\n    \"\"\"\n    def setUp(self):\n        self.request = HttpRequest()\n        self.request.META = {\n            'SERVER_NAME': 'testserver',\n            'SERVER_PORT': 80,\n        }\n        self.request.path = self.request.path_info = \"/\"\n        self.response = HttpResponse()\n        self.response.status_code = 200\n\n    def test_request(self):\n        TransactionMiddleware().process_request(self.request)\n        self.assertTrue(transaction.is_managed())\n\n    def test_managed_response(self):\n        transaction.enter_transaction_management()\n        transaction.managed(True)\n        Band.objects.create(name='The Beatles')\n        self.assertTrue(transaction.is_dirty())\n        TransactionMiddleware().process_response(self.request, self.response)\n        self.assertFalse(transaction.is_dirty())\n        self.assertEqual(Band.objects.count(), 1)\n\n    def test_unmanaged_response(self):\n        transaction.managed(False)\n        TransactionMiddleware().process_response(self.request, self.response)\n        self.assertFalse(transaction.is_managed())\n        self.assertFalse(transaction.is_dirty())\n\n    def test_exception(self):\n        transaction.enter_transaction_management()\n        transaction.managed(True)\n        Band.objects.create(name='The Beatles')\n        self.assertTrue(transaction.is_dirty())\n        TransactionMiddleware().process_exception(self.request, None)\n        self.assertEqual(Band.objects.count(), 0)\n        self.assertFalse(transaction.is_dirty())\n\n    def test_failing_commit(self):\n        # It is possible that connection.commit() fails. Check that\n        # TransactionMiddleware handles such cases correctly.\n        try:\n            def raise_exception():\n                raise IntegrityError()\n            connections[DEFAULT_DB_ALIAS].commit = raise_exception\n            transaction.enter_transaction_management()\n            transaction.managed(True)\n            Band.objects.create(name='The Beatles')\n            self.assertTrue(transaction.is_dirty())\n            with self.assertRaises(IntegrityError):\n                TransactionMiddleware().process_response(self.request, None)\n            self.assertEqual(Band.objects.count(), 0)\n            self.assertFalse(transaction.is_dirty())\n            self.assertFalse(transaction.is_managed())\n        finally:\n            del connections[DEFAULT_DB_ALIAS].commit\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/middleware/urls.py",
    "content": "from django.conf.urls import patterns\n\nurlpatterns = patterns('',\n    (r'^noslash$', 'view'),\n    (r'^slash/$', 'view'),\n    (r'^needsquoting#/$', 'view'),\n)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/middleware_exceptions/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/middleware_exceptions/models.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/middleware_exceptions/tests.py",
    "content": "import sys\n\nfrom django.conf import settings\nfrom django.core.signals import got_request_exception\nfrom django.http import HttpResponse\nfrom django.template.response import TemplateResponse\nfrom django.template import Template\nfrom django.test import TestCase\n\nclass TestException(Exception):\n    pass\n\n# A middleware base class that tracks which methods have been called\n\nclass TestMiddleware(object):\n    def __init__(self):\n        self.process_request_called = False\n        self.process_view_called = False\n        self.process_response_called = False\n        self.process_template_response_called = False\n        self.process_exception_called = False\n\n    def process_request(self, request):\n        self.process_request_called = True\n\n    def process_view(self, request, view_func, view_args, view_kwargs):\n        self.process_view_called = True\n\n    def process_template_response(self, request, response):\n        self.process_template_response_called = True\n        return response\n\n    def process_response(self, request, response):\n        self.process_response_called = True\n        return response\n\n    def process_exception(self, request, exception):\n        self.process_exception_called = True\n\n# Middleware examples that do the right thing\n\nclass RequestMiddleware(TestMiddleware):\n    def process_request(self, request):\n        super(RequestMiddleware, self).process_request(request)\n        return HttpResponse('Request Middleware')\n\nclass ViewMiddleware(TestMiddleware):\n    def process_view(self, request, view_func, view_args, view_kwargs):\n        super(ViewMiddleware, self).process_view(request, view_func, view_args, view_kwargs)\n        return HttpResponse('View Middleware')\n\nclass ResponseMiddleware(TestMiddleware):\n    def process_response(self, request, response):\n        super(ResponseMiddleware, self).process_response(request, response)\n        return HttpResponse('Response Middleware')\n\nclass TemplateResponseMiddleware(TestMiddleware):\n    def process_template_response(self, request, response):\n        super(TemplateResponseMiddleware, self).process_template_response(request, response)\n        return TemplateResponse(request, Template('Template Response Middleware'))\n\nclass ExceptionMiddleware(TestMiddleware):\n    def process_exception(self, request, exception):\n        super(ExceptionMiddleware, self).process_exception(request, exception)\n        return HttpResponse('Exception Middleware')\n\n\n# Sample middlewares that raise exceptions\n\nclass BadRequestMiddleware(TestMiddleware):\n    def process_request(self, request):\n        super(BadRequestMiddleware, self).process_request(request)\n        raise TestException('Test Request Exception')\n\nclass BadViewMiddleware(TestMiddleware):\n    def process_view(self, request, view_func, view_args, view_kwargs):\n        super(BadViewMiddleware, self).process_view(request, view_func, view_args, view_kwargs)\n        raise TestException('Test View Exception')\n\nclass BadTemplateResponseMiddleware(TestMiddleware):\n    def process_template_response(self, request, response):\n        super(BadTemplateResponseMiddleware, self).process_template_response(request, response)\n        raise TestException('Test Template Response Exception')\n\nclass BadResponseMiddleware(TestMiddleware):\n    def process_response(self, request, response):\n        super(BadResponseMiddleware, self).process_response(request, response)\n        raise TestException('Test Response Exception')\n\nclass BadExceptionMiddleware(TestMiddleware):\n    def process_exception(self, request, exception):\n        super(BadExceptionMiddleware, self).process_exception(request, exception)\n        raise TestException('Test Exception Exception')\n\n\nclass BaseMiddlewareExceptionTest(TestCase):\n    urls = 'regressiontests.middleware_exceptions.urls'\n\n    def setUp(self):\n        self.exceptions = []\n        got_request_exception.connect(self._on_request_exception)\n        self.client.handler.load_middleware()\n\n    def tearDown(self):\n        got_request_exception.disconnect(self._on_request_exception)\n        self.exceptions = []\n\n    def _on_request_exception(self, sender, request, **kwargs):\n        self.exceptions.append(sys.exc_info())\n\n    def _add_middleware(self, middleware):\n        self.client.handler._request_middleware.insert(0, middleware.process_request)\n        self.client.handler._view_middleware.insert(0, middleware.process_view)\n        self.client.handler._template_response_middleware.append(middleware.process_template_response)\n        self.client.handler._response_middleware.append(middleware.process_response)\n        self.client.handler._exception_middleware.append(middleware.process_exception)\n\n    def assert_exceptions_handled(self, url, errors, extra_error=None):\n        try:\n            response = self.client.get(url)\n        except TestException:\n            # Test client intentionally re-raises any exceptions being raised\n            # during request handling. Hence actual testing that exception was\n            # properly handled is done by relying on got_request_exception\n            # signal being sent.\n            pass\n        except Exception as e:\n            if type(extra_error) != type(e):\n                self.fail(\"Unexpected exception: %s\" % e)\n        self.assertEqual(len(self.exceptions), len(errors))\n        for i, error in enumerate(errors):\n            exception, value, tb = self.exceptions[i]\n            self.assertEqual(value.args, (error, ))\n\n    def assert_middleware_usage(self, middleware, request, view, template_response, response, exception):\n        self.assertEqual(middleware.process_request_called, request)\n        self.assertEqual(middleware.process_view_called, view)\n        self.assertEqual(middleware.process_template_response_called, template_response)\n        self.assertEqual(middleware.process_response_called, response)\n        self.assertEqual(middleware.process_exception_called, exception)\n\n\nclass MiddlewareTests(BaseMiddlewareExceptionTest):\n\n    def test_process_request_middleware(self):\n        pre_middleware = TestMiddleware()\n        middleware = RequestMiddleware()\n        post_middleware = TestMiddleware()\n        self._add_middleware(post_middleware)\n        self._add_middleware(middleware)\n        self._add_middleware(pre_middleware)\n        self.assert_exceptions_handled('/middleware_exceptions/view/', [])\n\n        # Check that the right middleware methods have been invoked\n        self.assert_middleware_usage(pre_middleware,  True,  False, False, True, False)\n        self.assert_middleware_usage(middleware,      True,  False, False, True, False)\n        self.assert_middleware_usage(post_middleware, False, False, False, True, False)\n\n    def test_process_view_middleware(self):\n        pre_middleware = TestMiddleware()\n        middleware = ViewMiddleware()\n        post_middleware = TestMiddleware()\n        self._add_middleware(post_middleware)\n        self._add_middleware(middleware)\n        self._add_middleware(pre_middleware)\n        self.assert_exceptions_handled('/middleware_exceptions/view/', [])\n\n        # Check that the right middleware methods have been invoked\n        self.assert_middleware_usage(pre_middleware,  True, True,  False, True, False)\n        self.assert_middleware_usage(middleware,      True, True,  False, True, False)\n        self.assert_middleware_usage(post_middleware, True, False, False, True, False)\n\n    def test_process_response_middleware(self):\n        pre_middleware = TestMiddleware()\n        middleware = ResponseMiddleware()\n        post_middleware = TestMiddleware()\n        self._add_middleware(post_middleware)\n        self._add_middleware(middleware)\n        self._add_middleware(pre_middleware)\n        self.assert_exceptions_handled('/middleware_exceptions/view/', [])\n\n        # Check that the right middleware methods have been invoked\n        self.assert_middleware_usage(pre_middleware,  True, True, False, True, False)\n        self.assert_middleware_usage(middleware,      True, True, False, True, False)\n        self.assert_middleware_usage(post_middleware, True, True, False, True, False)\n\n    def test_process_template_response_middleware(self):\n        pre_middleware = TestMiddleware()\n        middleware = TemplateResponseMiddleware()\n        post_middleware = TestMiddleware()\n        self._add_middleware(post_middleware)\n        self._add_middleware(middleware)\n        self._add_middleware(pre_middleware)\n        self.assert_exceptions_handled('/middleware_exceptions/template_response/', [])\n\n        # Check that the right middleware methods have been invoked\n        self.assert_middleware_usage(pre_middleware,  True, True, True, True, False)\n        self.assert_middleware_usage(middleware,      True, True, True, True, False)\n        self.assert_middleware_usage(post_middleware, True, True, True, True, False)\n\n    def test_process_exception_middleware(self):\n        pre_middleware = TestMiddleware()\n        middleware = ExceptionMiddleware()\n        post_middleware = TestMiddleware()\n        self._add_middleware(post_middleware)\n        self._add_middleware(middleware)\n        self._add_middleware(pre_middleware)\n        self.assert_exceptions_handled('/middleware_exceptions/view/', [])\n\n        # Check that the right middleware methods have been invoked\n        self.assert_middleware_usage(pre_middleware,  True, True, False, True, False)\n        self.assert_middleware_usage(middleware,      True, True, False, True, False)\n        self.assert_middleware_usage(post_middleware, True, True, False, True, False)\n\n    def test_process_request_middleware_not_found(self):\n        pre_middleware = TestMiddleware()\n        middleware = RequestMiddleware()\n        post_middleware = TestMiddleware()\n        self._add_middleware(post_middleware)\n        self._add_middleware(middleware)\n        self._add_middleware(pre_middleware)\n        self.assert_exceptions_handled('/middleware_exceptions/not_found/', [])\n\n        # Check that the right middleware methods have been invoked\n        self.assert_middleware_usage(pre_middleware,  True,  False, False, True, False)\n        self.assert_middleware_usage(middleware,      True,  False, False, True, False)\n        self.assert_middleware_usage(post_middleware, False, False, False, True, False)\n\n    def test_process_view_middleware_not_found(self):\n        pre_middleware = TestMiddleware()\n        middleware = ViewMiddleware()\n        post_middleware = TestMiddleware()\n        self._add_middleware(post_middleware)\n        self._add_middleware(middleware)\n        self._add_middleware(pre_middleware)\n        self.assert_exceptions_handled('/middleware_exceptions/not_found/', [])\n\n        # Check that the right middleware methods have been invoked\n        self.assert_middleware_usage(pre_middleware,  True, True,  False, True, False)\n        self.assert_middleware_usage(middleware,      True, True,  False, True, False)\n        self.assert_middleware_usage(post_middleware, True, False, False, True, False)\n\n    def test_process_template_response_middleware_not_found(self):\n        pre_middleware = TestMiddleware()\n        middleware = TemplateResponseMiddleware()\n        post_middleware = TestMiddleware()\n        self._add_middleware(post_middleware)\n        self._add_middleware(middleware)\n        self._add_middleware(pre_middleware)\n        self.assert_exceptions_handled('/middleware_exceptions/not_found/', [])\n\n        # Check that the right middleware methods have been invoked\n        self.assert_middleware_usage(pre_middleware,  True, True, False, True, True)\n        self.assert_middleware_usage(middleware,      True, True, False, True, True)\n        self.assert_middleware_usage(post_middleware, True, True, False, True, True)\n\n    def test_process_response_middleware_not_found(self):\n        pre_middleware = TestMiddleware()\n        middleware = ResponseMiddleware()\n        post_middleware = TestMiddleware()\n        self._add_middleware(post_middleware)\n        self._add_middleware(middleware)\n        self._add_middleware(pre_middleware)\n        self.assert_exceptions_handled('/middleware_exceptions/not_found/', [])\n\n        # Check that the right middleware methods have been invoked\n        self.assert_middleware_usage(pre_middleware,  True, True, False, True, True)\n        self.assert_middleware_usage(middleware,      True, True, False, True, True)\n        self.assert_middleware_usage(post_middleware, True, True, False, True, True)\n\n    def test_process_exception_middleware_not_found(self):\n        pre_middleware = TestMiddleware()\n        middleware = ExceptionMiddleware()\n        post_middleware = TestMiddleware()\n        self._add_middleware(post_middleware)\n        self._add_middleware(middleware)\n        self._add_middleware(pre_middleware)\n        self.assert_exceptions_handled('/middleware_exceptions/not_found/', [])\n\n        # Check that the right middleware methods have been invoked\n        self.assert_middleware_usage(pre_middleware,  True, True, False, True, False)\n        self.assert_middleware_usage(middleware,      True, True, False, True, True)\n        self.assert_middleware_usage(post_middleware, True, True, False, True, True)\n\n    def test_process_request_middleware_exception(self):\n        pre_middleware = TestMiddleware()\n        middleware = RequestMiddleware()\n        post_middleware = TestMiddleware()\n        self._add_middleware(post_middleware)\n        self._add_middleware(middleware)\n        self._add_middleware(pre_middleware)\n        self.assert_exceptions_handled('/middleware_exceptions/error/', [])\n\n        # Check that the right middleware methods have been invoked\n        self.assert_middleware_usage(pre_middleware,  True,  False, False, True, False)\n        self.assert_middleware_usage(middleware,      True,  False, False, True, False)\n        self.assert_middleware_usage(post_middleware, False, False, False, True, False)\n\n    def test_process_view_middleware_exception(self):\n        pre_middleware = TestMiddleware()\n        middleware = ViewMiddleware()\n        post_middleware = TestMiddleware()\n        self._add_middleware(post_middleware)\n        self._add_middleware(middleware)\n        self._add_middleware(pre_middleware)\n        self.assert_exceptions_handled('/middleware_exceptions/error/', [])\n\n        # Check that the right middleware methods have been invoked\n        self.assert_middleware_usage(pre_middleware,  True, True,  False, True, False)\n        self.assert_middleware_usage(middleware,      True, True,  False, True, False)\n        self.assert_middleware_usage(post_middleware, True, False, False, True, False)\n\n    def test_process_response_middleware_exception(self):\n        pre_middleware = TestMiddleware()\n        middleware = ResponseMiddleware()\n        post_middleware = TestMiddleware()\n        self._add_middleware(post_middleware)\n        self._add_middleware(middleware)\n        self._add_middleware(pre_middleware)\n        self.assert_exceptions_handled('/middleware_exceptions/error/', ['Error in view'], Exception())\n\n        # Check that the right middleware methods have been invoked\n        self.assert_middleware_usage(pre_middleware,  True, True, False, True, True)\n        self.assert_middleware_usage(middleware,      True, True, False, True, True)\n        self.assert_middleware_usage(post_middleware, True, True, False, True, True)\n\n    def test_process_exception_middleware_exception(self):\n        pre_middleware = TestMiddleware()\n        middleware = ExceptionMiddleware()\n        post_middleware = TestMiddleware()\n        self._add_middleware(post_middleware)\n        self._add_middleware(middleware)\n        self._add_middleware(pre_middleware)\n        self.assert_exceptions_handled('/middleware_exceptions/error/', [])\n\n        # Check that the right middleware methods have been invoked\n        self.assert_middleware_usage(pre_middleware,  True, True, False, True, False)\n        self.assert_middleware_usage(middleware,      True, True, False, True, True)\n        self.assert_middleware_usage(post_middleware, True, True, False, True, True)\n\n    def test_process_request_middleware_null_view(self):\n        pre_middleware = TestMiddleware()\n        middleware = RequestMiddleware()\n        post_middleware = TestMiddleware()\n        self._add_middleware(post_middleware)\n        self._add_middleware(middleware)\n        self._add_middleware(pre_middleware)\n        self.assert_exceptions_handled('/middleware_exceptions/null_view/', [])\n\n        # Check that the right middleware methods have been invoked\n        self.assert_middleware_usage(pre_middleware,  True,  False, False, True, False)\n        self.assert_middleware_usage(middleware,      True,  False, False, True, False)\n        self.assert_middleware_usage(post_middleware, False, False, False, True, False)\n\n    def test_process_view_middleware_null_view(self):\n        pre_middleware = TestMiddleware()\n        middleware = ViewMiddleware()\n        post_middleware = TestMiddleware()\n        self._add_middleware(post_middleware)\n        self._add_middleware(middleware)\n        self._add_middleware(pre_middleware)\n        self.assert_exceptions_handled('/middleware_exceptions/null_view/', [])\n\n        # Check that the right middleware methods have been invoked\n        self.assert_middleware_usage(pre_middleware,  True, True,  False, True, False)\n        self.assert_middleware_usage(middleware,      True, True,  False, True, False)\n        self.assert_middleware_usage(post_middleware, True, False, False, True, False)\n\n    def test_process_response_middleware_null_view(self):\n        pre_middleware = TestMiddleware()\n        middleware = ResponseMiddleware()\n        post_middleware = TestMiddleware()\n        self._add_middleware(post_middleware)\n        self._add_middleware(middleware)\n        self._add_middleware(pre_middleware)\n        self.assert_exceptions_handled('/middleware_exceptions/null_view/', [\n                \"The view regressiontests.middleware_exceptions.views.null_view didn't return an HttpResponse object.\",\n            ],\n            ValueError())\n\n        # Check that the right middleware methods have been invoked\n        self.assert_middleware_usage(pre_middleware,  True, True, False, True, False)\n        self.assert_middleware_usage(middleware,      True, True, False, True, False)\n        self.assert_middleware_usage(post_middleware, True, True, False, True, False)\n\n    def test_process_exception_middleware_null_view(self):\n        pre_middleware = TestMiddleware()\n        middleware = ExceptionMiddleware()\n        post_middleware = TestMiddleware()\n        self._add_middleware(post_middleware)\n        self._add_middleware(middleware)\n        self._add_middleware(pre_middleware)\n        self.assert_exceptions_handled('/middleware_exceptions/null_view/', [\n                \"The view regressiontests.middleware_exceptions.views.null_view didn't return an HttpResponse object.\"\n            ],\n            ValueError())\n\n        # Check that the right middleware methods have been invoked\n        self.assert_middleware_usage(pre_middleware,  True, True, False, True, False)\n        self.assert_middleware_usage(middleware,      True, True, False, True, False)\n        self.assert_middleware_usage(post_middleware, True, True, False, True, False)\n\n    def test_process_request_middleware_permission_denied(self):\n        pre_middleware = TestMiddleware()\n        middleware = RequestMiddleware()\n        post_middleware = TestMiddleware()\n        self._add_middleware(post_middleware)\n        self._add_middleware(middleware)\n        self._add_middleware(pre_middleware)\n        self.assert_exceptions_handled('/middleware_exceptions/permission_denied/', [])\n\n        # Check that the right middleware methods have been invoked\n        self.assert_middleware_usage(pre_middleware,  True,  False, False, True, False)\n        self.assert_middleware_usage(middleware,      True,  False, False, True, False)\n        self.assert_middleware_usage(post_middleware, False, False, False, True, False)\n\n    def test_process_view_middleware_permission_denied(self):\n        pre_middleware = TestMiddleware()\n        middleware = ViewMiddleware()\n        post_middleware = TestMiddleware()\n        self._add_middleware(post_middleware)\n        self._add_middleware(middleware)\n        self._add_middleware(pre_middleware)\n        self.assert_exceptions_handled('/middleware_exceptions/permission_denied/', [])\n\n        # Check that the right middleware methods have been invoked\n        self.assert_middleware_usage(pre_middleware,  True, True,  False, True, False)\n        self.assert_middleware_usage(middleware,      True, True,  False, True, False)\n        self.assert_middleware_usage(post_middleware, True, False, False, True, False)\n\n    def test_process_response_middleware_permission_denied(self):\n        pre_middleware = TestMiddleware()\n        middleware = ResponseMiddleware()\n        post_middleware = TestMiddleware()\n        self._add_middleware(post_middleware)\n        self._add_middleware(middleware)\n        self._add_middleware(pre_middleware)\n        self.assert_exceptions_handled('/middleware_exceptions/permission_denied/', [])\n\n        # Check that the right middleware methods have been invoked\n        self.assert_middleware_usage(pre_middleware,  True, True, False, True, True)\n        self.assert_middleware_usage(middleware,      True, True, False, True, True)\n        self.assert_middleware_usage(post_middleware, True, True, False, True, True)\n\n    def test_process_exception_middleware_permission_denied(self):\n        pre_middleware = TestMiddleware()\n        middleware = ExceptionMiddleware()\n        post_middleware = TestMiddleware()\n        self._add_middleware(post_middleware)\n        self._add_middleware(middleware)\n        self._add_middleware(pre_middleware)\n        self.assert_exceptions_handled('/middleware_exceptions/permission_denied/', [])\n\n        # Check that the right middleware methods have been invoked\n        self.assert_middleware_usage(pre_middleware,  True, True, False, True, False)\n        self.assert_middleware_usage(middleware,      True, True, False, True, True)\n        self.assert_middleware_usage(post_middleware, True, True, False, True, True)\n\n    def test_process_template_response_error(self):\n        middleware = TestMiddleware()\n        self._add_middleware(middleware)\n        self.assert_exceptions_handled('/middleware_exceptions/template_response_error/', [])\n\n        # Check that the right middleware methods have been invoked\n        self.assert_middleware_usage(middleware, True, True, True, True, False)\n\n\nclass BadMiddlewareTests(BaseMiddlewareExceptionTest):\n\n    def test_process_request_bad_middleware(self):\n        pre_middleware = TestMiddleware()\n        bad_middleware = BadRequestMiddleware()\n        post_middleware = TestMiddleware()\n        self._add_middleware(post_middleware)\n        self._add_middleware(bad_middleware)\n        self._add_middleware(pre_middleware)\n        self.assert_exceptions_handled('/middleware_exceptions/view/', ['Test Request Exception'])\n\n        # Check that the right middleware methods have been invoked\n        self.assert_middleware_usage(pre_middleware,  True,  False, False, True, False)\n        self.assert_middleware_usage(bad_middleware,  True,  False, False, True, False)\n        self.assert_middleware_usage(post_middleware, False, False, False, True, False)\n\n    def test_process_view_bad_middleware(self):\n        pre_middleware = TestMiddleware()\n        bad_middleware = BadViewMiddleware()\n        post_middleware = TestMiddleware()\n        self._add_middleware(post_middleware)\n        self._add_middleware(bad_middleware)\n        self._add_middleware(pre_middleware)\n        self.assert_exceptions_handled('/middleware_exceptions/view/', ['Test View Exception'])\n\n        # Check that the right middleware methods have been invoked\n        self.assert_middleware_usage(pre_middleware,  True, True,  False, True, False)\n        self.assert_middleware_usage(bad_middleware,  True, True,  False, True, False)\n        self.assert_middleware_usage(post_middleware, True, False, False, True, False)\n\n    def test_process_template_response_bad_middleware(self):\n        pre_middleware = TestMiddleware()\n        bad_middleware = BadTemplateResponseMiddleware()\n        post_middleware = TestMiddleware()\n        self._add_middleware(post_middleware)\n        self._add_middleware(bad_middleware)\n        self._add_middleware(pre_middleware)\n        self.assert_exceptions_handled('/middleware_exceptions/template_response/', ['Test Template Response Exception'])\n\n        # Check that the right middleware methods have been invoked\n        self.assert_middleware_usage(pre_middleware,  True, True, False, True, False)\n        self.assert_middleware_usage(bad_middleware,  True, True, True,  True, False)\n        self.assert_middleware_usage(post_middleware, True, True, True,  True, False)\n\n    def test_process_response_bad_middleware(self):\n        pre_middleware = TestMiddleware()\n        bad_middleware = BadResponseMiddleware()\n        post_middleware = TestMiddleware()\n        self._add_middleware(post_middleware)\n        self._add_middleware(bad_middleware)\n        self._add_middleware(pre_middleware)\n        self.assert_exceptions_handled('/middleware_exceptions/view/', ['Test Response Exception'])\n\n        # Check that the right middleware methods have been invoked\n        self.assert_middleware_usage(pre_middleware,  True, True, False, False, False)\n        self.assert_middleware_usage(bad_middleware,  True, True, False, True,  False)\n        self.assert_middleware_usage(post_middleware, True, True, False, True,  False)\n\n    def test_process_exception_bad_middleware(self):\n        pre_middleware = TestMiddleware()\n        bad_middleware = BadExceptionMiddleware()\n        post_middleware = TestMiddleware()\n        self._add_middleware(post_middleware)\n        self._add_middleware(bad_middleware)\n        self._add_middleware(pre_middleware)\n        self.assert_exceptions_handled('/middleware_exceptions/view/', [])\n\n        # Check that the right middleware methods have been invoked\n        self.assert_middleware_usage(pre_middleware,  True, True, False, True, False)\n        self.assert_middleware_usage(bad_middleware,  True, True, False, True, False)\n        self.assert_middleware_usage(post_middleware, True, True, False, True, False)\n\n    def test_process_request_bad_middleware_not_found(self):\n        pre_middleware = TestMiddleware()\n        bad_middleware = BadRequestMiddleware()\n        post_middleware = TestMiddleware()\n        self._add_middleware(post_middleware)\n        self._add_middleware(bad_middleware)\n        self._add_middleware(pre_middleware)\n        self.assert_exceptions_handled('/middleware_exceptions/not_found/', ['Test Request Exception'])\n\n        # Check that the right middleware methods have been invoked\n        self.assert_middleware_usage(pre_middleware,  True,  False, False, True, False)\n        self.assert_middleware_usage(bad_middleware,  True,  False, False, True, False)\n        self.assert_middleware_usage(post_middleware, False, False, False, True, False)\n\n    def test_process_view_bad_middleware_not_found(self):\n        pre_middleware = TestMiddleware()\n        bad_middleware = BadViewMiddleware()\n        post_middleware = TestMiddleware()\n        self._add_middleware(post_middleware)\n        self._add_middleware(bad_middleware)\n        self._add_middleware(pre_middleware)\n        self.assert_exceptions_handled('/middleware_exceptions/not_found/', ['Test View Exception'])\n\n        # Check that the right middleware methods have been invoked\n        self.assert_middleware_usage(pre_middleware,  True, True,  False, True, False)\n        self.assert_middleware_usage(bad_middleware,  True, True,  False, True, False)\n        self.assert_middleware_usage(post_middleware, True, False, False, True, False)\n\n    def test_process_response_bad_middleware_not_found(self):\n        pre_middleware = TestMiddleware()\n        bad_middleware = BadResponseMiddleware()\n        post_middleware = TestMiddleware()\n        self._add_middleware(post_middleware)\n        self._add_middleware(bad_middleware)\n        self._add_middleware(pre_middleware)\n        self.assert_exceptions_handled('/middleware_exceptions/not_found/', ['Test Response Exception'])\n\n        # Check that the right middleware methods have been invoked\n        self.assert_middleware_usage(pre_middleware,  True, True, False, False, True)\n        self.assert_middleware_usage(bad_middleware,  True, True, False, True,  True)\n        self.assert_middleware_usage(post_middleware, True, True, False, True,  True)\n\n    def test_process_exception_bad_middleware_not_found(self):\n        pre_middleware = TestMiddleware()\n        bad_middleware = BadExceptionMiddleware()\n        post_middleware = TestMiddleware()\n        self._add_middleware(post_middleware)\n        self._add_middleware(bad_middleware)\n        self._add_middleware(pre_middleware)\n        self.assert_exceptions_handled('/middleware_exceptions/not_found/', ['Test Exception Exception'])\n\n        # Check that the right middleware methods have been invoked\n        self.assert_middleware_usage(pre_middleware,  True, True, False, True, False)\n        self.assert_middleware_usage(bad_middleware,  True, True, False, True, True)\n        self.assert_middleware_usage(post_middleware, True, True, False, True, True)\n\n    def test_process_request_bad_middleware_exception(self):\n        pre_middleware = TestMiddleware()\n        bad_middleware = BadRequestMiddleware()\n        post_middleware = TestMiddleware()\n        self._add_middleware(post_middleware)\n        self._add_middleware(bad_middleware)\n        self._add_middleware(pre_middleware)\n        self.assert_exceptions_handled('/middleware_exceptions/error/', ['Test Request Exception'])\n\n        # Check that the right middleware methods have been invoked\n        self.assert_middleware_usage(pre_middleware,  True,  False, False, True, False)\n        self.assert_middleware_usage(bad_middleware,  True,  False, False, True, False)\n        self.assert_middleware_usage(post_middleware, False, False, False, True, False)\n\n    def test_process_view_bad_middleware_exception(self):\n        pre_middleware = TestMiddleware()\n        bad_middleware = BadViewMiddleware()\n        post_middleware = TestMiddleware()\n        self._add_middleware(post_middleware)\n        self._add_middleware(bad_middleware)\n        self._add_middleware(pre_middleware)\n        self.assert_exceptions_handled('/middleware_exceptions/error/', ['Test View Exception'])\n\n        # Check that the right middleware methods have been invoked\n        self.assert_middleware_usage(pre_middleware,  True, True,  False, True, False)\n        self.assert_middleware_usage(bad_middleware,  True, True,  False, True, False)\n        self.assert_middleware_usage(post_middleware, True, False, False, True, False)\n\n    def test_process_response_bad_middleware_exception(self):\n        pre_middleware = TestMiddleware()\n        bad_middleware = BadResponseMiddleware()\n        post_middleware = TestMiddleware()\n        self._add_middleware(post_middleware)\n        self._add_middleware(bad_middleware)\n        self._add_middleware(pre_middleware)\n        self.assert_exceptions_handled('/middleware_exceptions/error/', ['Error in view', 'Test Response Exception'])\n\n        # Check that the right middleware methods have been invoked\n        self.assert_middleware_usage(pre_middleware,  True, True, False, False, True)\n        self.assert_middleware_usage(bad_middleware,  True, True, False, True,  True)\n        self.assert_middleware_usage(post_middleware, True, True, False, True,  True)\n\n    def test_process_exception_bad_middleware_exception(self):\n        pre_middleware = TestMiddleware()\n        bad_middleware = BadExceptionMiddleware()\n        post_middleware = TestMiddleware()\n        self._add_middleware(post_middleware)\n        self._add_middleware(bad_middleware)\n        self._add_middleware(pre_middleware)\n        self.assert_exceptions_handled('/middleware_exceptions/error/', ['Test Exception Exception'])\n\n        # Check that the right middleware methods have been invoked\n        self.assert_middleware_usage(pre_middleware,  True, True, False, True, False)\n        self.assert_middleware_usage(bad_middleware,  True, True, False, True, True)\n        self.assert_middleware_usage(post_middleware, True, True, False, True, True)\n\n    def test_process_request_bad_middleware_null_view(self):\n        pre_middleware = TestMiddleware()\n        bad_middleware = BadRequestMiddleware()\n        post_middleware = TestMiddleware()\n        self._add_middleware(post_middleware)\n        self._add_middleware(bad_middleware)\n        self._add_middleware(pre_middleware)\n        self.assert_exceptions_handled('/middleware_exceptions/null_view/', ['Test Request Exception'])\n\n        # Check that the right middleware methods have been invoked\n        self.assert_middleware_usage(pre_middleware,  True,  False, False, True, False)\n        self.assert_middleware_usage(bad_middleware,  True,  False, False, True, False)\n        self.assert_middleware_usage(post_middleware, False, False, False, True, False)\n\n    def test_process_view_bad_middleware_null_view(self):\n        pre_middleware = TestMiddleware()\n        bad_middleware = BadViewMiddleware()\n        post_middleware = TestMiddleware()\n        self._add_middleware(post_middleware)\n        self._add_middleware(bad_middleware)\n        self._add_middleware(pre_middleware)\n        self.assert_exceptions_handled('/middleware_exceptions/null_view/', ['Test View Exception'])\n\n        # Check that the right middleware methods have been invoked\n        self.assert_middleware_usage(pre_middleware,  True, True,  False, True, False)\n        self.assert_middleware_usage(bad_middleware,  True, True,  False, True, False)\n        self.assert_middleware_usage(post_middleware, True, False, False, True, False)\n\n    def test_process_response_bad_middleware_null_view(self):\n        pre_middleware = TestMiddleware()\n        bad_middleware = BadResponseMiddleware()\n        post_middleware = TestMiddleware()\n        self._add_middleware(post_middleware)\n        self._add_middleware(bad_middleware)\n        self._add_middleware(pre_middleware)\n        self.assert_exceptions_handled('/middleware_exceptions/null_view/', [\n                \"The view regressiontests.middleware_exceptions.views.null_view didn't return an HttpResponse object.\",\n                'Test Response Exception'\n            ])\n\n        # Check that the right middleware methods have been invoked\n        self.assert_middleware_usage(pre_middleware,  True, True, False, False, False)\n        self.assert_middleware_usage(bad_middleware,  True, True, False, True,  False)\n        self.assert_middleware_usage(post_middleware, True, True, False, True,  False)\n\n    def test_process_exception_bad_middleware_null_view(self):\n        pre_middleware = TestMiddleware()\n        bad_middleware = BadExceptionMiddleware()\n        post_middleware = TestMiddleware()\n        self._add_middleware(post_middleware)\n        self._add_middleware(bad_middleware)\n        self._add_middleware(pre_middleware)\n        self.assert_exceptions_handled('/middleware_exceptions/null_view/', [\n                \"The view regressiontests.middleware_exceptions.views.null_view didn't return an HttpResponse object.\"\n            ],\n            ValueError())\n\n        # Check that the right middleware methods have been invoked\n        self.assert_middleware_usage(pre_middleware,  True, True, False, True, False)\n        self.assert_middleware_usage(bad_middleware,  True, True, False, True, False)\n        self.assert_middleware_usage(post_middleware, True, True, False, True, False)\n\n    def test_process_request_bad_middleware_permission_denied(self):\n        pre_middleware = TestMiddleware()\n        bad_middleware = BadRequestMiddleware()\n        post_middleware = TestMiddleware()\n        self._add_middleware(post_middleware)\n        self._add_middleware(bad_middleware)\n        self._add_middleware(pre_middleware)\n        self.assert_exceptions_handled('/middleware_exceptions/permission_denied/', ['Test Request Exception'])\n\n        # Check that the right middleware methods have been invoked\n        self.assert_middleware_usage(pre_middleware,  True,  False, False, True, False)\n        self.assert_middleware_usage(bad_middleware,  True,  False, False, True, False)\n        self.assert_middleware_usage(post_middleware, False, False, False, True, False)\n\n    def test_process_view_bad_middleware_permission_denied(self):\n        pre_middleware = TestMiddleware()\n        bad_middleware = BadViewMiddleware()\n        post_middleware = TestMiddleware()\n        self._add_middleware(post_middleware)\n        self._add_middleware(bad_middleware)\n        self._add_middleware(pre_middleware)\n        self.assert_exceptions_handled('/middleware_exceptions/permission_denied/', ['Test View Exception'])\n\n        # Check that the right middleware methods have been invoked\n        self.assert_middleware_usage(pre_middleware,  True, True,  False, True, False)\n        self.assert_middleware_usage(bad_middleware,  True, True,  False, True, False)\n        self.assert_middleware_usage(post_middleware, True, False, False, True, False)\n\n    def test_process_response_bad_middleware_permission_denied(self):\n        pre_middleware = TestMiddleware()\n        bad_middleware = BadResponseMiddleware()\n        post_middleware = TestMiddleware()\n        self._add_middleware(post_middleware)\n        self._add_middleware(bad_middleware)\n        self._add_middleware(pre_middleware)\n        self.assert_exceptions_handled('/middleware_exceptions/permission_denied/', ['Test Response Exception'])\n\n        # Check that the right middleware methods have been invoked\n        self.assert_middleware_usage(pre_middleware,  True, True, False, False, True)\n        self.assert_middleware_usage(bad_middleware,  True, True, False, True,  True)\n        self.assert_middleware_usage(post_middleware, True, True, False, True,  True)\n\n    def test_process_exception_bad_middleware_permission_denied(self):\n        pre_middleware = TestMiddleware()\n        bad_middleware = BadExceptionMiddleware()\n        post_middleware = TestMiddleware()\n        self._add_middleware(post_middleware)\n        self._add_middleware(bad_middleware)\n        self._add_middleware(pre_middleware)\n        self.assert_exceptions_handled('/middleware_exceptions/permission_denied/', ['Test Exception Exception'])\n\n        # Check that the right middleware methods have been invoked\n        self.assert_middleware_usage(pre_middleware,  True, True, False, True, False)\n        self.assert_middleware_usage(bad_middleware,  True, True, False, True, True)\n        self.assert_middleware_usage(post_middleware, True, True, False, True, True)\n\n\n_missing = object()\nclass RootUrlconfTests(TestCase):\n    urls = 'regressiontests.middleware_exceptions.urls'\n\n    def test_missing_root_urlconf(self):\n        try:\n            original_ROOT_URLCONF = settings.ROOT_URLCONF\n            del settings.ROOT_URLCONF\n        except AttributeError:\n            original_ROOT_URLCONF = _missing\n        self.assertRaises(AttributeError,\n            self.client.get, \"/middleware_exceptions/view/\"\n        )\n\n        if original_ROOT_URLCONF is not _missing:\n            settings.ROOT_URLCONF = original_ROOT_URLCONF\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/middleware_exceptions/urls.py",
    "content": "# coding: utf-8\nfrom __future__ import absolute_import\n\nfrom django.conf.urls import patterns\n\nfrom . import views\n\nurlpatterns = patterns('',\n    (r'^middleware_exceptions/view/$', views.normal_view),\n    (r'^middleware_exceptions/not_found/$', views.not_found),\n    (r'^middleware_exceptions/error/$', views.server_error),\n    (r'^middleware_exceptions/null_view/$', views.null_view),\n    (r'^middleware_exceptions/permission_denied/$', views.permission_denied),\n\n    (r'^middleware_exceptions/template_response/$', views.template_response),\n    (r'^middleware_exceptions/template_response_error/$', views.template_response_error),\n)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/middleware_exceptions/views.py",
    "content": "from django import http\nfrom django.core.exceptions import PermissionDenied\nfrom django.template import Template\nfrom django.template.response import TemplateResponse\n\n\ndef normal_view(request):\n    return http.HttpResponse('OK')\n\ndef template_response(request):\n    return TemplateResponse(request, Template('OK'))\n\ndef template_response_error(request):\n    return TemplateResponse(request, Template('{%'))\n\ndef not_found(request):\n    raise http.Http404()\n\ndef server_error(request):\n    raise Exception('Error in view')\n\ndef null_view(request):\n    return None\n\ndef permission_denied(request):\n    raise PermissionDenied()\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/model_fields/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/model_fields/imagefield.py",
    "content": "from __future__ import absolute_import\n\nimport os\nimport shutil\n\nfrom django.core.files import File\nfrom django.core.files.images import ImageFile\nfrom django.test import TestCase\nfrom django.utils._os import upath\nfrom django.utils.unittest import skipIf\n\nfrom .models import Image\n\nif Image:\n    from .models import (Person, PersonWithHeight, PersonWithHeightAndWidth,\n        PersonDimensionsFirst, PersonTwoImages, TestImageFieldFile)\n    from .models import temp_storage_dir\nelse:\n    # PIL not available, create dummy classes (tests will be skipped anyway)\n    class Person():\n        pass\n    PersonWithHeight = PersonWithHeightAndWidth = PersonDimensionsFirst = Person\n    PersonTwoImages = Person\n\n\nclass ImageFieldTestMixin(object):\n    \"\"\"\n    Mixin class to provide common functionality to ImageField test classes.\n    \"\"\"\n\n    # Person model to use for tests.\n    PersonModel = PersonWithHeightAndWidth\n    # File class to use for file instances.\n    File = ImageFile\n\n    def setUp(self):\n        \"\"\"\n        Creates a pristine temp directory (or deletes and recreates if it\n        already exists) that the model uses as its storage directory.\n\n        Sets up two ImageFile instances for use in tests.\n        \"\"\"\n        if os.path.exists(temp_storage_dir):\n            shutil.rmtree(temp_storage_dir)\n        os.mkdir(temp_storage_dir)\n\n        file_path1 = os.path.join(os.path.dirname(upath(__file__)), \"4x8.png\")\n        self.file1 = self.File(open(file_path1, 'rb'))\n\n        file_path2 = os.path.join(os.path.dirname(upath(__file__)), \"8x4.png\")\n        self.file2 = self.File(open(file_path2, 'rb'))\n\n    def tearDown(self):\n        \"\"\"\n        Removes temp directory and all its contents.\n        \"\"\"\n        shutil.rmtree(temp_storage_dir)\n\n    def check_dimensions(self, instance, width, height,\n                         field_name='mugshot'):\n        \"\"\"\n        Asserts that the given width and height values match both the\n        field's height and width attributes and the height and width fields\n        (if defined) the image field is caching to.\n\n        Note, this method will check for dimension fields named by adding\n        \"_width\" or \"_height\" to the name of the ImageField.  So, the\n        models used in these tests must have their fields named\n        accordingly.\n\n        By default, we check the field named \"mugshot\", but this can be\n        specified by passing the field_name parameter.\n        \"\"\"\n        field = getattr(instance, field_name)\n        # Check height/width attributes of field.\n        if width is None and height is None:\n            self.assertRaises(ValueError, getattr, field, 'width')\n            self.assertRaises(ValueError, getattr, field, 'height')\n        else:\n            self.assertEqual(field.width, width)\n            self.assertEqual(field.height, height)\n\n        # Check height/width fields of model, if defined.\n        width_field_name = field_name + '_width'\n        if hasattr(instance, width_field_name):\n            self.assertEqual(getattr(instance, width_field_name), width)\n        height_field_name = field_name + '_height'\n        if hasattr(instance, height_field_name):\n            self.assertEqual(getattr(instance, height_field_name), height)\n\n\n@skipIf(Image is None, \"PIL is required to test ImageField\")\nclass ImageFieldTests(ImageFieldTestMixin, TestCase):\n    \"\"\"\n    Tests for ImageField that don't need to be run with each of the\n    different test model classes.\n    \"\"\"\n\n    def test_equal_notequal_hash(self):\n        \"\"\"\n        Bug #9786: Ensure '==' and '!=' work correctly.\n        Bug #9508: make sure hash() works as expected (equal items must\n        hash to the same value).\n        \"\"\"\n        # Create two Persons with different mugshots.\n        p1 = self.PersonModel(name=\"Joe\")\n        p1.mugshot.save(\"mug\", self.file1)\n        p2 = self.PersonModel(name=\"Bob\")\n        p2.mugshot.save(\"mug\", self.file2)\n        self.assertEqual(p1.mugshot == p2.mugshot, False)\n        self.assertEqual(p1.mugshot != p2.mugshot, True)\n\n        # Test again with an instance fetched from the db.\n        p1_db = self.PersonModel.objects.get(name=\"Joe\")\n        self.assertEqual(p1_db.mugshot == p2.mugshot, False)\n        self.assertEqual(p1_db.mugshot != p2.mugshot, True)\n\n        # Instance from db should match the local instance.\n        self.assertEqual(p1_db.mugshot == p1.mugshot, True)\n        self.assertEqual(hash(p1_db.mugshot), hash(p1.mugshot))\n        self.assertEqual(p1_db.mugshot != p1.mugshot, False)\n\n    def test_instantiate_missing(self):\n        \"\"\"\n        If the underlying file is unavailable, still create instantiate the\n        object without error.\n        \"\"\"\n        p = self.PersonModel(name=\"Joan\")\n        p.mugshot.save(\"shot\", self.file1)\n        p = self.PersonModel.objects.get(name=\"Joan\")\n        path = p.mugshot.path\n        shutil.move(path, path + '.moved')\n        p2 = self.PersonModel.objects.get(name=\"Joan\")\n\n    def test_delete_when_missing(self):\n        \"\"\"\n        Bug #8175: correctly delete an object where the file no longer\n        exists on the file system.\n        \"\"\"\n        p = self.PersonModel(name=\"Fred\")\n        p.mugshot.save(\"shot\", self.file1)\n        os.remove(p.mugshot.path)\n        p.delete()\n\n    def test_size_method(self):\n        \"\"\"\n        Bug #8534: FileField.size should not leave the file open.\n        \"\"\"\n        p = self.PersonModel(name=\"Joan\")\n        p.mugshot.save(\"shot\", self.file1)\n\n        # Get a \"clean\" model instance\n        p = self.PersonModel.objects.get(name=\"Joan\")\n        # It won't have an opened file.\n        self.assertEqual(p.mugshot.closed, True)\n\n        # After asking for the size, the file should still be closed.\n        _ = p.mugshot.size\n        self.assertEqual(p.mugshot.closed, True)\n\n    def test_pickle(self):\n        \"\"\"\n        Tests that ImageField can be pickled, unpickled, and that the\n        image of the unpickled version is the same as the original.\n        \"\"\"\n        import pickle\n\n        p = Person(name=\"Joe\")\n        p.mugshot.save(\"mug\", self.file1)\n        dump = pickle.dumps(p)\n\n        p2 = Person(name=\"Bob\")\n        p2.mugshot = self.file1\n\n        loaded_p = pickle.loads(dump)\n        self.assertEqual(p.mugshot, loaded_p.mugshot)\n\n\n@skipIf(Image is None, \"PIL is required to test ImageField\")\nclass ImageFieldTwoDimensionsTests(ImageFieldTestMixin, TestCase):\n    \"\"\"\n    Tests behavior of an ImageField and its dimensions fields.\n    \"\"\"\n\n    def test_constructor(self):\n        \"\"\"\n        Tests assigning an image field through the model's constructor.\n        \"\"\"\n        p = self.PersonModel(name='Joe', mugshot=self.file1)\n        self.check_dimensions(p, 4, 8)\n        p.save()\n        self.check_dimensions(p, 4, 8)\n\n    def test_image_after_constructor(self):\n        \"\"\"\n        Tests behavior when image is not passed in constructor.\n        \"\"\"\n        p = self.PersonModel(name='Joe')\n        # TestImageField value will default to being an instance of its\n        # attr_class, a  TestImageFieldFile, with name == None, which will\n        # cause it to evaluate as False.\n        self.assertEqual(isinstance(p.mugshot, TestImageFieldFile), True)\n        self.assertEqual(bool(p.mugshot), False)\n\n        # Test setting a fresh created model instance.\n        p = self.PersonModel(name='Joe')\n        p.mugshot = self.file1\n        self.check_dimensions(p, 4, 8)\n\n    def test_create(self):\n        \"\"\"\n        Tests assigning an image in Manager.create().\n        \"\"\"\n        p = self.PersonModel.objects.create(name='Joe', mugshot=self.file1)\n        self.check_dimensions(p, 4, 8)\n\n    def test_default_value(self):\n        \"\"\"\n        Tests that the default value for an ImageField is an instance of\n        the field's attr_class (TestImageFieldFile in this case) with no\n        name (name set to None).\n        \"\"\"\n        p = self.PersonModel()\n        self.assertEqual(isinstance(p.mugshot, TestImageFieldFile), True)\n        self.assertEqual(bool(p.mugshot), False)\n\n    def test_assignment_to_None(self):\n        \"\"\"\n        Tests that assigning ImageField to None clears dimensions.\n        \"\"\"\n        p = self.PersonModel(name='Joe', mugshot=self.file1)\n        self.check_dimensions(p, 4, 8)\n\n        # If image assigned to None, dimension fields should be cleared.\n        p.mugshot = None\n        self.check_dimensions(p, None, None)\n\n        p.mugshot = self.file2\n        self.check_dimensions(p, 8, 4)\n\n    def test_field_save_and_delete_methods(self):\n        \"\"\"\n        Tests assignment using the field's save method and deletion using\n        the field's delete method.\n        \"\"\"\n        p = self.PersonModel(name='Joe')\n        p.mugshot.save(\"mug\", self.file1)\n        self.check_dimensions(p, 4, 8)\n\n        # A new file should update dimensions.\n        p.mugshot.save(\"mug\", self.file2)\n        self.check_dimensions(p, 8, 4)\n\n        # Field and dimensions should be cleared after a delete.\n        p.mugshot.delete(save=False)\n        self.assertEqual(p.mugshot, None)\n        self.check_dimensions(p, None, None)\n\n    def test_dimensions(self):\n        \"\"\"\n        Checks that dimensions are updated correctly in various situations.\n        \"\"\"\n        p = self.PersonModel(name='Joe')\n\n        # Dimensions should get set if file is saved.\n        p.mugshot.save(\"mug\", self.file1)\n        self.check_dimensions(p, 4, 8)\n\n        # Test dimensions after fetching from database.\n        p = self.PersonModel.objects.get(name='Joe')\n        # Bug 11084: Dimensions should not get recalculated if file is\n        # coming from the database.  We test this by checking if the file\n        # was opened.\n        self.assertEqual(p.mugshot.was_opened, False)\n        self.check_dimensions(p, 4, 8)\n        # After checking dimensions on the image field, the file will have\n        # opened.\n        self.assertEqual(p.mugshot.was_opened, True)\n        # Dimensions should now be cached, and if we reset was_opened and\n        # check dimensions again, the file should not have opened.\n        p.mugshot.was_opened = False\n        self.check_dimensions(p, 4, 8)\n        self.assertEqual(p.mugshot.was_opened, False)\n\n        # If we assign a new image to the instance, the dimensions should\n        # update.\n        p.mugshot = self.file2\n        self.check_dimensions(p, 8, 4)\n        # Dimensions were recalculated, and hence file should have opened.\n        self.assertEqual(p.mugshot.was_opened, True)\n\n\n@skipIf(Image is None, \"PIL is required to test ImageField\")\nclass ImageFieldNoDimensionsTests(ImageFieldTwoDimensionsTests):\n    \"\"\"\n    Tests behavior of an ImageField with no dimension fields.\n    \"\"\"\n\n    PersonModel = Person\n\n\n@skipIf(Image is None, \"PIL is required to test ImageField\")\nclass ImageFieldOneDimensionTests(ImageFieldTwoDimensionsTests):\n    \"\"\"\n    Tests behavior of an ImageField with one dimensions field.\n    \"\"\"\n\n    PersonModel = PersonWithHeight\n\n\n@skipIf(Image is None, \"PIL is required to test ImageField\")\nclass ImageFieldDimensionsFirstTests(ImageFieldTwoDimensionsTests):\n    \"\"\"\n    Tests behavior of an ImageField where the dimensions fields are\n    defined before the ImageField.\n    \"\"\"\n\n    PersonModel = PersonDimensionsFirst\n\n\n@skipIf(Image is None, \"PIL is required to test ImageField\")\nclass ImageFieldUsingFileTests(ImageFieldTwoDimensionsTests):\n    \"\"\"\n    Tests behavior of an ImageField when assigning it a File instance\n    rather than an ImageFile instance.\n    \"\"\"\n\n    PersonModel = PersonDimensionsFirst\n    File = File\n\n\n@skipIf(Image is None, \"PIL is required to test ImageField\")\nclass TwoImageFieldTests(ImageFieldTestMixin, TestCase):\n    \"\"\"\n    Tests a model with two ImageFields.\n    \"\"\"\n\n    PersonModel = PersonTwoImages\n\n    def test_constructor(self):\n        p = self.PersonModel(mugshot=self.file1, headshot=self.file2)\n        self.check_dimensions(p, 4, 8, 'mugshot')\n        self.check_dimensions(p, 8, 4, 'headshot')\n        p.save()\n        self.check_dimensions(p, 4, 8, 'mugshot')\n        self.check_dimensions(p, 8, 4, 'headshot')\n\n    def test_create(self):\n        p = self.PersonModel.objects.create(mugshot=self.file1,\n                                            headshot=self.file2)\n        self.check_dimensions(p, 4, 8)\n        self.check_dimensions(p, 8, 4, 'headshot')\n\n    def test_assignment(self):\n        p = self.PersonModel()\n        self.check_dimensions(p, None, None, 'mugshot')\n        self.check_dimensions(p, None, None, 'headshot')\n\n        p.mugshot = self.file1\n        self.check_dimensions(p, 4, 8, 'mugshot')\n        self.check_dimensions(p, None, None, 'headshot')\n        p.headshot = self.file2\n        self.check_dimensions(p, 4, 8, 'mugshot')\n        self.check_dimensions(p, 8, 4, 'headshot')\n\n        # Clear the ImageFields one at a time.\n        p.mugshot = None\n        self.check_dimensions(p, None, None, 'mugshot')\n        self.check_dimensions(p, 8, 4, 'headshot')\n        p.headshot = None\n        self.check_dimensions(p, None, None, 'mugshot')\n        self.check_dimensions(p, None, None, 'headshot')\n\n    def test_field_save_and_delete_methods(self):\n        p = self.PersonModel(name='Joe')\n        p.mugshot.save(\"mug\", self.file1)\n        self.check_dimensions(p, 4, 8, 'mugshot')\n        self.check_dimensions(p, None, None, 'headshot')\n        p.headshot.save(\"head\", self.file2)\n        self.check_dimensions(p, 4, 8, 'mugshot')\n        self.check_dimensions(p, 8, 4, 'headshot')\n\n        # We can use save=True when deleting the image field with null=True\n        # dimension fields and the other field has an image.\n        p.headshot.delete(save=True)\n        self.check_dimensions(p, 4, 8, 'mugshot')\n        self.check_dimensions(p, None, None, 'headshot')\n        p.mugshot.delete(save=False)\n        self.check_dimensions(p, None, None, 'mugshot')\n        self.check_dimensions(p, None, None, 'headshot')\n\n    def test_dimensions(self):\n        \"\"\"\n        Checks that dimensions are updated correctly in various situations.\n        \"\"\"\n        p = self.PersonModel(name='Joe')\n\n        # Dimensions should get set for the saved file.\n        p.mugshot.save(\"mug\", self.file1)\n        p.headshot.save(\"head\", self.file2)\n        self.check_dimensions(p, 4, 8, 'mugshot')\n        self.check_dimensions(p, 8, 4, 'headshot')\n\n        # Test dimensions after fetching from database.\n        p = self.PersonModel.objects.get(name='Joe')\n        # Bug 11084: Dimensions should not get recalculated if file is\n        # coming from the database.  We test this by checking if the file\n        # was opened.\n        self.assertEqual(p.mugshot.was_opened, False)\n        self.assertEqual(p.headshot.was_opened, False)\n        self.check_dimensions(p, 4, 8,'mugshot')\n        self.check_dimensions(p, 8, 4, 'headshot')\n        # After checking dimensions on the image fields, the files will\n        # have been opened.\n        self.assertEqual(p.mugshot.was_opened, True)\n        self.assertEqual(p.headshot.was_opened, True)\n        # Dimensions should now be cached, and if we reset was_opened and\n        # check dimensions again, the file should not have opened.\n        p.mugshot.was_opened = False\n        p.headshot.was_opened = False\n        self.check_dimensions(p, 4, 8,'mugshot')\n        self.check_dimensions(p, 8, 4, 'headshot')\n        self.assertEqual(p.mugshot.was_opened, False)\n        self.assertEqual(p.headshot.was_opened, False)\n\n        # If we assign a new image to the instance, the dimensions should\n        # update.\n        p.mugshot = self.file2\n        p.headshot = self.file1\n        self.check_dimensions(p, 8, 4, 'mugshot')\n        self.check_dimensions(p, 4, 8, 'headshot')\n        # Dimensions were recalculated, and hence file should have opened.\n        self.assertEqual(p.mugshot.was_opened, True)\n        self.assertEqual(p.headshot.was_opened, True)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/model_fields/models.py",
    "content": "import os\nimport tempfile\n\n# Try to import PIL in either of the two ways it can end up installed.\n# Checking for the existence of Image is enough for CPython, but for PyPy,\n# you need to check for the underlying modules.\n\ntry:\n    from PIL import Image, _imaging\nexcept ImportError:\n    try:\n        import Image, _imaging\n    except ImportError:\n        Image = None\n\nfrom django.core.files.storage import FileSystemStorage\nfrom django.db import models\nfrom django.db.models.fields.files import ImageFieldFile, ImageField\n\n\nclass Foo(models.Model):\n    a = models.CharField(max_length=10)\n    d = models.DecimalField(max_digits=5, decimal_places=3)\n\ndef get_foo():\n    return Foo.objects.get(id=1)\n\nclass Bar(models.Model):\n    b = models.CharField(max_length=10)\n    a = models.ForeignKey(Foo, default=get_foo)\n\nclass Whiz(models.Model):\n    CHOICES = (\n        ('Group 1', (\n                (1,'First'),\n                (2,'Second'),\n            )\n        ),\n        ('Group 2', (\n                (3,'Third'),\n                (4,'Fourth'),\n            )\n        ),\n        (0,'Other'),\n    )\n    c = models.IntegerField(choices=CHOICES, null=True)\n\nclass BigD(models.Model):\n    d = models.DecimalField(max_digits=38, decimal_places=30)\n\nclass BigS(models.Model):\n    s = models.SlugField(max_length=255)\n\nclass BigInt(models.Model):\n    value = models.BigIntegerField()\n    null_value = models.BigIntegerField(null = True, blank = True)\n\nclass Post(models.Model):\n    title = models.CharField(max_length=100)\n    body = models.TextField()\n\nclass NullBooleanModel(models.Model):\n    nbfield = models.NullBooleanField()\n\nclass BooleanModel(models.Model):\n    bfield = models.BooleanField()\n    string = models.CharField(max_length=10, default='abc')\n\nclass FksToBooleans(models.Model):\n    \"\"\"Model wih FKs to models with {Null,}BooleanField's, #15040\"\"\"\n    bf = models.ForeignKey(BooleanModel)\n    nbf = models.ForeignKey(NullBooleanModel)\n\nclass RenamedField(models.Model):\n    modelname = models.IntegerField(name=\"fieldname\", choices=((1,'One'),))\n\nclass VerboseNameField(models.Model):\n    id = models.AutoField(\"verbose pk\", primary_key=True)\n    field1 = models.BigIntegerField(\"verbose field1\")\n    field2 = models.BooleanField(\"verbose field2\")\n    field3 = models.CharField(\"verbose field3\", max_length=10)\n    field4 = models.CommaSeparatedIntegerField(\"verbose field4\", max_length=99)\n    field5 = models.DateField(\"verbose field5\")\n    field6 = models.DateTimeField(\"verbose field6\")\n    field7 = models.DecimalField(\"verbose field7\", max_digits=6, decimal_places=1)\n    field8 = models.EmailField(\"verbose field8\")\n    field9 = models.FileField(\"verbose field9\", upload_to=\"unused\")\n    field10 = models.FilePathField(\"verbose field10\")\n    field11 = models.FloatField(\"verbose field11\")\n    # Don't want to depend on PIL in this test\n    #field_image = models.ImageField(\"verbose field\")\n    field12 = models.IntegerField(\"verbose field12\")\n    field13 = models.IPAddressField(\"verbose field13\")\n    field14 = models.GenericIPAddressField(\"verbose field14\", protocol=\"ipv4\")\n    field15 = models.NullBooleanField(\"verbose field15\")\n    field16 = models.PositiveIntegerField(\"verbose field16\")\n    field17 = models.PositiveSmallIntegerField(\"verbose field17\")\n    field18 = models.SlugField(\"verbose field18\")\n    field19 = models.SmallIntegerField(\"verbose field19\")\n    field20 = models.TextField(\"verbose field20\")\n    field21 = models.TimeField(\"verbose field21\")\n    field22 = models.URLField(\"verbose field22\")\n\n# This model isn't used in any test, just here to ensure it validates successfully.\n# See ticket #16570.\nclass DecimalLessThanOne(models.Model):\n    d = models.DecimalField(max_digits=3, decimal_places=3)\n\n###############################################################################\n# FileField\n\nclass Document(models.Model):\n    myfile = models.FileField(upload_to='unused')\n\n###############################################################################\n# ImageField\n\n# If PIL available, do these tests.\nif Image:\n    class TestImageFieldFile(ImageFieldFile):\n        \"\"\"\n        Custom Field File class that records whether or not the underlying file\n        was opened.\n        \"\"\"\n        def __init__(self, *args, **kwargs):\n            self.was_opened = False\n            super(TestImageFieldFile, self).__init__(*args,**kwargs)\n        def open(self):\n            self.was_opened = True\n            super(TestImageFieldFile, self).open()\n\n    class TestImageField(ImageField):\n        attr_class = TestImageFieldFile\n\n    # Set up a temp directory for file storage.\n    temp_storage_dir = tempfile.mkdtemp()\n    temp_storage = FileSystemStorage(temp_storage_dir)\n    temp_upload_to_dir = os.path.join(temp_storage.location, 'tests')\n\n    class Person(models.Model):\n        \"\"\"\n        Model that defines an ImageField with no dimension fields.\n        \"\"\"\n        name = models.CharField(max_length=50)\n        mugshot = TestImageField(storage=temp_storage, upload_to='tests')\n\n    class PersonWithHeight(models.Model):\n        \"\"\"\n        Model that defines an ImageField with only one dimension field.\n        \"\"\"\n        name = models.CharField(max_length=50)\n        mugshot = TestImageField(storage=temp_storage, upload_to='tests',\n                                 height_field='mugshot_height')\n        mugshot_height = models.PositiveSmallIntegerField()\n\n    class PersonWithHeightAndWidth(models.Model):\n        \"\"\"\n        Model that defines height and width fields after the ImageField.\n        \"\"\"\n        name = models.CharField(max_length=50)\n        mugshot = TestImageField(storage=temp_storage, upload_to='tests',\n                                 height_field='mugshot_height',\n                                 width_field='mugshot_width')\n        mugshot_height = models.PositiveSmallIntegerField()\n        mugshot_width = models.PositiveSmallIntegerField()\n\n    class PersonDimensionsFirst(models.Model):\n        \"\"\"\n        Model that defines height and width fields before the ImageField.\n        \"\"\"\n        name = models.CharField(max_length=50)\n        mugshot_height = models.PositiveSmallIntegerField()\n        mugshot_width = models.PositiveSmallIntegerField()\n        mugshot = TestImageField(storage=temp_storage, upload_to='tests',\n                                 height_field='mugshot_height',\n                                 width_field='mugshot_width')\n\n    class PersonTwoImages(models.Model):\n        \"\"\"\n        Model that:\n        * Defines two ImageFields\n        * Defines the height/width fields before the ImageFields\n        * Has a nullalble ImageField\n        \"\"\"\n        name = models.CharField(max_length=50)\n        mugshot_height = models.PositiveSmallIntegerField()\n        mugshot_width = models.PositiveSmallIntegerField()\n        mugshot = TestImageField(storage=temp_storage, upload_to='tests',\n                                 height_field='mugshot_height',\n                                 width_field='mugshot_width')\n        headshot_height = models.PositiveSmallIntegerField(\n                blank=True, null=True)\n        headshot_width = models.PositiveSmallIntegerField(\n                blank=True, null=True)\n        headshot = TestImageField(blank=True, null=True,\n                                  storage=temp_storage, upload_to='tests',\n                                  height_field='headshot_height',\n                                  width_field='headshot_width')\n\n###############################################################################\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/model_fields/tests.py",
    "content": "from __future__ import absolute_import, unicode_literals\n\nimport datetime\nfrom decimal import Decimal\n\nfrom django import test\nfrom django import forms\nfrom django.core.exceptions import ValidationError\nfrom django.db import models\nfrom django.db.models.fields.files import FieldFile\nfrom django.utils import six\nfrom django.utils import unittest\n\nfrom .models import (Foo, Bar, Whiz, BigD, BigS, Image, BigInt, Post,\n    NullBooleanModel, BooleanModel, Document, RenamedField, VerboseNameField,\n    FksToBooleans)\n\nfrom .imagefield import (ImageFieldTests, ImageFieldTwoDimensionsTests,\n    TwoImageFieldTests, ImageFieldNoDimensionsTests,\n    ImageFieldOneDimensionTests, ImageFieldDimensionsFirstTests,\n    ImageFieldUsingFileTests)\n\n\nclass BasicFieldTests(test.TestCase):\n    def test_show_hidden_initial(self):\n        \"\"\"\n        Regression test for #12913. Make sure fields with choices respect\n        show_hidden_initial as a kwarg to models.Field.formfield()\n        \"\"\"\n        choices = [(0, 0), (1, 1)]\n        model_field = models.Field(choices=choices)\n        form_field = model_field.formfield(show_hidden_initial=True)\n        self.assertTrue(form_field.show_hidden_initial)\n\n        form_field = model_field.formfield(show_hidden_initial=False)\n        self.assertFalse(form_field.show_hidden_initial)\n\n    def test_nullbooleanfield_blank(self):\n        \"\"\"\n        Regression test for #13071: NullBooleanField should not throw\n        a validation error when given a value of None.\n\n        \"\"\"\n        nullboolean = NullBooleanModel(nbfield=None)\n        try:\n            nullboolean.full_clean()\n        except ValidationError as e:\n            self.fail(\"NullBooleanField failed validation with value of None: %s\" % e.messages)\n\n    def test_field_repr(self):\n        \"\"\"\n        Regression test for #5931: __repr__ of a field also displays its name\n        \"\"\"\n        f = Foo._meta.get_field('a')\n        self.assertEqual(repr(f), '<django.db.models.fields.CharField: a>')\n        f = models.fields.CharField()\n        self.assertEqual(repr(f), '<django.db.models.fields.CharField>')\n\n    def test_field_name(self):\n        \"\"\"\n        Regression test for #14695: explicitly defined field name overwritten\n        by model's attribute name.\n        \"\"\"\n        instance = RenamedField()\n        self.assertTrue(hasattr(instance, 'get_fieldname_display'))\n        self.assertFalse(hasattr(instance, 'get_modelname_display'))\n\n    def test_field_verbose_name(self):\n        m = VerboseNameField\n        for i in range(1, 23):\n            self.assertEqual(m._meta.get_field('field%d' % i).verbose_name,\n                    'verbose field%d' % i)\n\n        self.assertEqual(m._meta.get_field('id').verbose_name, 'verbose pk')\n\nclass DecimalFieldTests(test.TestCase):\n    def test_to_python(self):\n        f = models.DecimalField(max_digits=4, decimal_places=2)\n        self.assertEqual(f.to_python(3), Decimal(\"3\"))\n        self.assertEqual(f.to_python(\"3.14\"), Decimal(\"3.14\"))\n        self.assertRaises(ValidationError, f.to_python, \"abc\")\n\n    def test_default(self):\n        f = models.DecimalField(default=Decimal(\"0.00\"))\n        self.assertEqual(f.get_default(), Decimal(\"0.00\"))\n\n    def test_format(self):\n        f = models.DecimalField(max_digits=5, decimal_places=1)\n        self.assertEqual(f._format(f.to_python(2)), '2.0')\n        self.assertEqual(f._format(f.to_python('2.6')), '2.6')\n        self.assertEqual(f._format(None), None)\n\n    def test_get_db_prep_lookup(self):\n        from django.db import connection\n        f = models.DecimalField(max_digits=5, decimal_places=1)\n        self.assertEqual(f.get_db_prep_lookup('exact', None, connection=connection), [None])\n\n    def test_filter_with_strings(self):\n        \"\"\"\n        We should be able to filter decimal fields using strings (#8023)\n        \"\"\"\n        Foo.objects.create(id=1, a='abc', d=Decimal(\"12.34\"))\n        self.assertEqual(list(Foo.objects.filter(d='1.23')), [])\n\n    def test_save_without_float_conversion(self):\n        \"\"\"\n        Ensure decimals don't go through a corrupting float conversion during\n        save (#5079).\n        \"\"\"\n        bd = BigD(d=\"12.9\")\n        bd.save()\n        bd = BigD.objects.get(pk=bd.pk)\n        self.assertEqual(bd.d, Decimal(\"12.9\"))\n\n    def test_lookup_really_big_value(self):\n        \"\"\"\n        Ensure that really big values can be used in a filter statement, even\n        with older Python versions.\n        \"\"\"\n        # This should not crash. That counts as a win for our purposes.\n        Foo.objects.filter(d__gte=100000000000)\n\nclass ForeignKeyTests(test.TestCase):\n    def test_callable_default(self):\n        \"\"\"Test the use of a lazy callable for ForeignKey.default\"\"\"\n        a = Foo.objects.create(id=1, a='abc', d=Decimal(\"12.34\"))\n        b = Bar.objects.create(b=\"bcd\")\n        self.assertEqual(b.a, a)\n\nclass DateTimeFieldTests(unittest.TestCase):\n    def test_datetimefield_to_python_usecs(self):\n        \"\"\"DateTimeField.to_python should support usecs\"\"\"\n        f = models.DateTimeField()\n        self.assertEqual(f.to_python('2001-01-02 03:04:05.000006'),\n                         datetime.datetime(2001, 1, 2, 3, 4, 5, 6))\n        self.assertEqual(f.to_python('2001-01-02 03:04:05.999999'),\n                         datetime.datetime(2001, 1, 2, 3, 4, 5, 999999))\n\n    def test_timefield_to_python_usecs(self):\n        \"\"\"TimeField.to_python should support usecs\"\"\"\n        f = models.TimeField()\n        self.assertEqual(f.to_python('01:02:03.000004'),\n                         datetime.time(1, 2, 3, 4))\n        self.assertEqual(f.to_python('01:02:03.999999'),\n                         datetime.time(1, 2, 3, 999999))\n\nclass BooleanFieldTests(unittest.TestCase):\n    def _test_get_db_prep_lookup(self, f):\n        from django.db import connection\n        self.assertEqual(f.get_db_prep_lookup('exact', True, connection=connection), [True])\n        self.assertEqual(f.get_db_prep_lookup('exact', '1', connection=connection), [True])\n        self.assertEqual(f.get_db_prep_lookup('exact', 1, connection=connection), [True])\n        self.assertEqual(f.get_db_prep_lookup('exact', False, connection=connection), [False])\n        self.assertEqual(f.get_db_prep_lookup('exact', '0', connection=connection), [False])\n        self.assertEqual(f.get_db_prep_lookup('exact', 0, connection=connection), [False])\n        self.assertEqual(f.get_db_prep_lookup('exact', None, connection=connection), [None])\n\n    def _test_to_python(self, f):\n        self.assertTrue(f.to_python(1) is True)\n        self.assertTrue(f.to_python(0) is False)\n\n    def test_booleanfield_get_db_prep_lookup(self):\n        self._test_get_db_prep_lookup(models.BooleanField())\n\n    def test_nullbooleanfield_get_db_prep_lookup(self):\n        self._test_get_db_prep_lookup(models.NullBooleanField())\n\n    def test_booleanfield_to_python(self):\n        self._test_to_python(models.BooleanField())\n\n    def test_nullbooleanfield_to_python(self):\n        self._test_to_python(models.NullBooleanField())\n\n    def test_booleanfield_choices_blank(self):\n        \"\"\"\n        Test that BooleanField with choices and defaults doesn't generate a\n        formfield with the blank option (#9640, #10549).\n        \"\"\"\n        choices = [(1, 'Si'), (2, 'No')]\n        f = models.BooleanField(choices=choices, default=1, null=True)\n        self.assertEqual(f.formfield().choices, [('', '---------')] + choices)\n\n        f = models.BooleanField(choices=choices, default=1, null=False)\n        self.assertEqual(f.formfield().choices, choices)\n\n    def test_return_type(self):\n        b = BooleanModel()\n        b.bfield = True\n        b.save()\n        b2 = BooleanModel.objects.get(pk=b.pk)\n        self.assertTrue(isinstance(b2.bfield, bool))\n        self.assertEqual(b2.bfield, True)\n\n        b3 = BooleanModel()\n        b3.bfield = False\n        b3.save()\n        b4 = BooleanModel.objects.get(pk=b3.pk)\n        self.assertTrue(isinstance(b4.bfield, bool))\n        self.assertEqual(b4.bfield, False)\n\n        b = NullBooleanModel()\n        b.nbfield = True\n        b.save()\n        b2 = NullBooleanModel.objects.get(pk=b.pk)\n        self.assertTrue(isinstance(b2.nbfield, bool))\n        self.assertEqual(b2.nbfield, True)\n\n        b3 = NullBooleanModel()\n        b3.nbfield = False\n        b3.save()\n        b4 = NullBooleanModel.objects.get(pk=b3.pk)\n        self.assertTrue(isinstance(b4.nbfield, bool))\n        self.assertEqual(b4.nbfield, False)\n\n        # http://code.djangoproject.com/ticket/13293\n        # Verify that when an extra clause exists, the boolean\n        # conversions are applied with an offset\n        b5 = BooleanModel.objects.all().extra(\n            select={'string_col': 'string'})[0]\n        self.assertFalse(isinstance(b5.pk, bool))\n\n    def test_select_related(self):\n        \"\"\"\n        Test type of boolean fields when retrieved via select_related() (MySQL,\n        #15040)\n        \"\"\"\n        bmt = BooleanModel.objects.create(bfield=True)\n        bmf = BooleanModel.objects.create(bfield=False)\n        nbmt = NullBooleanModel.objects.create(nbfield=True)\n        nbmf = NullBooleanModel.objects.create(nbfield=False)\n\n        m1 = FksToBooleans.objects.create(bf=bmt, nbf=nbmt)\n        m2 = FksToBooleans.objects.create(bf=bmf, nbf=nbmf)\n\n        # Test select_related('fk_field_name')\n        ma = FksToBooleans.objects.select_related('bf').get(pk=m1.id)\n        # verify types -- should't be 0/1\n        self.assertIsInstance(ma.bf.bfield, bool)\n        self.assertIsInstance(ma.nbf.nbfield, bool)\n        # verify values\n        self.assertEqual(ma.bf.bfield, True)\n        self.assertEqual(ma.nbf.nbfield, True)\n\n        # Test select_related()\n        mb = FksToBooleans.objects.select_related().get(pk=m1.id)\n        mc = FksToBooleans.objects.select_related().get(pk=m2.id)\n        # verify types -- shouldn't be 0/1\n        self.assertIsInstance(mb.bf.bfield, bool)\n        self.assertIsInstance(mb.nbf.nbfield, bool)\n        self.assertIsInstance(mc.bf.bfield, bool)\n        self.assertIsInstance(mc.nbf.nbfield, bool)\n        # verify values\n        self.assertEqual(mb.bf.bfield, True)\n        self.assertEqual(mb.nbf.nbfield, True)\n        self.assertEqual(mc.bf.bfield, False)\n        self.assertEqual(mc.nbf.nbfield, False)\n\n\nclass ChoicesTests(test.TestCase):\n    def test_choices_and_field_display(self):\n        \"\"\"\n        Check that get_choices and get_flatchoices interact with\n        get_FIELD_display to return the expected values (#7913).\n        \"\"\"\n        self.assertEqual(Whiz(c=1).get_c_display(), 'First')    # A nested value\n        self.assertEqual(Whiz(c=0).get_c_display(), 'Other')    # A top level value\n        self.assertEqual(Whiz(c=9).get_c_display(), 9)          # Invalid value\n        self.assertEqual(Whiz(c=None).get_c_display(), None)    # Blank value\n        self.assertEqual(Whiz(c='').get_c_display(), '')        # Empty value\n\nclass SlugFieldTests(test.TestCase):\n    def test_slugfield_max_length(self):\n        \"\"\"\n        Make sure SlugField honors max_length (#9706)\n        \"\"\"\n        bs = BigS.objects.create(s = 'slug'*50)\n        bs = BigS.objects.get(pk=bs.pk)\n        self.assertEqual(bs.s, 'slug'*50)\n\n\nclass ValidationTest(test.TestCase):\n    def test_charfield_raises_error_on_empty_string(self):\n        f = models.CharField()\n        self.assertRaises(ValidationError, f.clean, \"\", None)\n\n    def test_charfield_cleans_empty_string_when_blank_true(self):\n        f = models.CharField(blank=True)\n        self.assertEqual('', f.clean('', None))\n\n    def test_integerfield_cleans_valid_string(self):\n        f = models.IntegerField()\n        self.assertEqual(2, f.clean('2', None))\n\n    def test_integerfield_raises_error_on_invalid_intput(self):\n        f = models.IntegerField()\n        self.assertRaises(ValidationError, f.clean, \"a\", None)\n\n    def test_charfield_with_choices_cleans_valid_choice(self):\n        f = models.CharField(max_length=1, choices=[('a','A'), ('b','B')])\n        self.assertEqual('a', f.clean('a', None))\n\n    def test_charfield_with_choices_raises_error_on_invalid_choice(self):\n        f = models.CharField(choices=[('a','A'), ('b','B')])\n        self.assertRaises(ValidationError, f.clean, \"not a\", None)\n\n    def test_choices_validation_supports_named_groups(self):\n        f = models.IntegerField(choices=(('group',((10,'A'),(20,'B'))),(30,'C')))\n        self.assertEqual(10, f.clean(10, None))\n\n    def test_nullable_integerfield_raises_error_with_blank_false(self):\n        f = models.IntegerField(null=True, blank=False)\n        self.assertRaises(ValidationError, f.clean, None, None)\n\n    def test_nullable_integerfield_cleans_none_on_null_and_blank_true(self):\n        f = models.IntegerField(null=True, blank=True)\n        self.assertEqual(None, f.clean(None, None))\n\n    def test_integerfield_raises_error_on_empty_input(self):\n        f = models.IntegerField(null=False)\n        self.assertRaises(ValidationError, f.clean, None, None)\n        self.assertRaises(ValidationError, f.clean, '', None)\n\n    def test_integerfield_validates_zero_against_choices(self):\n        f = models.IntegerField(choices=((1, 1),))\n        self.assertRaises(ValidationError, f.clean, '0', None)\n\n    def test_charfield_raises_error_on_empty_input(self):\n        f = models.CharField(null=False)\n        self.assertRaises(ValidationError, f.clean, None, None)\n\n    def test_datefield_cleans_date(self):\n        f = models.DateField()\n        self.assertEqual(datetime.date(2008, 10, 10), f.clean('2008-10-10', None))\n\n    def test_boolean_field_doesnt_accept_empty_input(self):\n        f = models.BooleanField()\n        self.assertRaises(ValidationError, f.clean, None, None)\n\n\nclass BigIntegerFieldTests(test.TestCase):\n    def test_limits(self):\n        # Ensure that values that are right at the limits can be saved\n        # and then retrieved without corruption.\n        maxval = 9223372036854775807\n        minval = -maxval - 1\n        BigInt.objects.create(value=maxval)\n        qs = BigInt.objects.filter(value__gte=maxval)\n        self.assertEqual(qs.count(), 1)\n        self.assertEqual(qs[0].value, maxval)\n        BigInt.objects.create(value=minval)\n        qs = BigInt.objects.filter(value__lte=minval)\n        self.assertEqual(qs.count(), 1)\n        self.assertEqual(qs[0].value, minval)\n\n    def test_types(self):\n        b = BigInt(value = 0)\n        self.assertTrue(isinstance(b.value, six.integer_types))\n        b.save()\n        self.assertTrue(isinstance(b.value, six.integer_types))\n        b = BigInt.objects.all()[0]\n        self.assertTrue(isinstance(b.value, six.integer_types))\n\n    def test_coercing(self):\n        BigInt.objects.create(value ='10')\n        b = BigInt.objects.get(value = '10')\n        self.assertEqual(b.value, 10)\n\nclass TypeCoercionTests(test.TestCase):\n    \"\"\"\n    Test that database lookups can accept the wrong types and convert\n    them with no error: especially on Postgres 8.3+ which does not do\n    automatic casting at the DB level. See #10015.\n\n    \"\"\"\n    def test_lookup_integer_in_charfield(self):\n        self.assertEqual(Post.objects.filter(title=9).count(), 0)\n\n    def test_lookup_integer_in_textfield(self):\n        self.assertEqual(Post.objects.filter(body=24).count(), 0)\n\nclass FileFieldTests(unittest.TestCase):\n    def test_clearable(self):\n        \"\"\"\n        Test that FileField.save_form_data will clear its instance attribute\n        value if passed False.\n\n        \"\"\"\n        d = Document(myfile='something.txt')\n        self.assertEqual(d.myfile, 'something.txt')\n        field = d._meta.get_field('myfile')\n        field.save_form_data(d, False)\n        self.assertEqual(d.myfile, '')\n\n    def test_unchanged(self):\n        \"\"\"\n        Test that FileField.save_form_data considers None to mean \"no change\"\n        rather than \"clear\".\n\n        \"\"\"\n        d = Document(myfile='something.txt')\n        self.assertEqual(d.myfile, 'something.txt')\n        field = d._meta.get_field('myfile')\n        field.save_form_data(d, None)\n        self.assertEqual(d.myfile, 'something.txt')\n\n    def test_changed(self):\n        \"\"\"\n        Test that FileField.save_form_data, if passed a truthy value, updates\n        its instance attribute.\n\n        \"\"\"\n        d = Document(myfile='something.txt')\n        self.assertEqual(d.myfile, 'something.txt')\n        field = d._meta.get_field('myfile')\n        field.save_form_data(d, 'else.txt')\n        self.assertEqual(d.myfile, 'else.txt')\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/model_forms_regress/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/model_forms_regress/models.py",
    "content": "from __future__ import unicode_literals\n\nimport os\n\nfrom django.core.exceptions import ValidationError\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\nfrom django.utils._os import upath\n\n\nclass Person(models.Model):\n    name = models.CharField(max_length=100)\n\nclass Triple(models.Model):\n    left = models.IntegerField()\n    middle = models.IntegerField()\n    right = models.IntegerField()\n\n    class Meta:\n        unique_together = (('left', 'middle'), ('middle', 'right'))\n\nclass FilePathModel(models.Model):\n    path = models.FilePathField(path=os.path.dirname(upath(__file__)), match=\".*\\.py$\", blank=True)\n\n@python_2_unicode_compatible\nclass Publication(models.Model):\n    title = models.CharField(max_length=30)\n    date_published = models.DateField()\n\n    def __str__(self):\n        return self.title\n\n@python_2_unicode_compatible\nclass Article(models.Model):\n    headline = models.CharField(max_length=100)\n    publications = models.ManyToManyField(Publication)\n\n    def __str__(self):\n        return self.headline\n\nclass CustomFileField(models.FileField):\n    def save_form_data(self, instance, data):\n        been_here = getattr(self, 'been_saved', False)\n        assert not been_here, \"save_form_data called more than once\"\n        setattr(self, 'been_saved', True)\n\nclass CustomFF(models.Model):\n    f = CustomFileField(upload_to='unused', blank=True)\n\nclass RealPerson(models.Model):\n    name = models.CharField(max_length=100)\n\n    def clean(self):\n        if self.name.lower() == 'anonymous':\n            raise ValidationError(\"Please specify a real name.\")\n\nclass Author(models.Model):\n    publication = models.OneToOneField(Publication, null=True, blank=True)\n    full_name = models.CharField(max_length=255)\n\nclass Author1(models.Model):\n    publication = models.OneToOneField(Publication, null=False)\n    full_name = models.CharField(max_length=255)\n\nclass Homepage(models.Model):\n    url = models.URLField()\n\nclass Document(models.Model):\n    myfile = models.FileField(upload_to='unused', blank=True)\n\nclass Edition(models.Model):\n    author = models.ForeignKey(Person)\n    publication = models.ForeignKey(Publication)\n    edition = models.IntegerField()\n    isbn = models.CharField(max_length=13, unique=True)\n\n    class Meta:\n        unique_together = (('author', 'publication'), ('publication', 'edition'),)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/model_forms_regress/tests.py",
    "content": "from __future__ import absolute_import, unicode_literals\n\nfrom datetime import date\n\nfrom django import forms\nfrom django.core.exceptions import FieldError, ValidationError\nfrom django.core.files.uploadedfile import SimpleUploadedFile\nfrom django.forms.models import (modelform_factory, ModelChoiceField,\n    fields_for_model, construct_instance, ModelFormMetaclass)\nfrom django.utils import six\nfrom django.utils import unittest\nfrom django.test import TestCase\n\nfrom .models import (Person, RealPerson, Triple, FilePathModel, Article,\n    Publication, CustomFF, Author, Author1, Homepage, Document, Edition)\n\n\nclass ModelMultipleChoiceFieldTests(TestCase):\n    def test_model_multiple_choice_number_of_queries(self):\n        \"\"\"\n        Test that ModelMultipleChoiceField does O(1) queries instead of\n        O(n) (#10156).\n        \"\"\"\n        persons = [Person.objects.create(name=\"Person %s\" % i) for i in range(30)]\n\n        f = forms.ModelMultipleChoiceField(queryset=Person.objects.all())\n        self.assertNumQueries(1, f.clean, [p.pk for p in persons[1:11:2]])\n\n    def test_model_multiple_choice_run_validators(self):\n        \"\"\"\n        Test that ModelMultipleChoiceField run given validators (#14144).\n        \"\"\"\n        for i in range(30):\n            Person.objects.create(name=\"Person %s\" % i)\n\n        self._validator_run = False\n        def my_validator(value):\n            self._validator_run = True\n\n        f = forms.ModelMultipleChoiceField(queryset=Person.objects.all(),\n                                           validators=[my_validator])\n\n        f.clean([p.pk for p in Person.objects.all()[8:9]])\n        self.assertTrue(self._validator_run)\n\nclass TripleForm(forms.ModelForm):\n    class Meta:\n        model = Triple\n\nclass UniqueTogetherTests(TestCase):\n    def test_multiple_field_unique_together(self):\n        \"\"\"\n        When the same field is involved in multiple unique_together\n        constraints, we need to make sure we don't remove the data for it\n        before doing all the validation checking (not just failing after\n        the first one).\n        \"\"\"\n        Triple.objects.create(left=1, middle=2, right=3)\n\n        form = TripleForm({'left': '1', 'middle': '2', 'right': '3'})\n        self.assertFalse(form.is_valid())\n\n        form = TripleForm({'left': '1', 'middle': '3', 'right': '1'})\n        self.assertTrue(form.is_valid())\n\nclass TripleFormWithCleanOverride(forms.ModelForm):\n    class Meta:\n        model = Triple\n\n    def clean(self):\n        if not self.cleaned_data['left'] == self.cleaned_data['right']:\n            raise forms.ValidationError('Left and right should be equal')\n        return self.cleaned_data\n\nclass OverrideCleanTests(TestCase):\n    def test_override_clean(self):\n        \"\"\"\n        Regression for #12596: Calling super from ModelForm.clean() should be\n        optional.\n        \"\"\"\n        form = TripleFormWithCleanOverride({'left': 1, 'middle': 2, 'right': 1})\n        self.assertTrue(form.is_valid())\n        # form.instance.left will be None if the instance was not constructed\n        # by form.full_clean().\n        self.assertEqual(form.instance.left, 1)\n\n# Regression test for #12960.\n# Make sure the cleaned_data returned from ModelForm.clean() is applied to the\n# model instance.\n\nclass PublicationForm(forms.ModelForm):\n    def clean(self):\n        self.cleaned_data['title'] = self.cleaned_data['title'].upper()\n        return self.cleaned_data\n\n    class Meta:\n        model = Publication\n\nclass ModelFormCleanTest(TestCase):\n    def test_model_form_clean_applies_to_model(self):\n        data = {'title': 'test', 'date_published': '2010-2-25'}\n        form = PublicationForm(data)\n        publication = form.save()\n        self.assertEqual(publication.title, 'TEST')\n\nclass FPForm(forms.ModelForm):\n    class Meta:\n        model = FilePathModel\n\nclass FilePathFieldTests(TestCase):\n    def test_file_path_field_blank(self):\n        \"\"\"\n        Regression test for #8842: FilePathField(blank=True)\n        \"\"\"\n        form = FPForm()\n        names = [p[1] for p in form['path'].field.choices]\n        names.sort()\n        self.assertEqual(names, ['---------', '__init__.py', 'models.py', 'tests.py'])\n\nclass ManyToManyCallableInitialTests(TestCase):\n    def test_callable(self):\n        \"Regression for #10349: A callable can be provided as the initial value for an m2m field\"\n\n        # Set up a callable initial value\n        def formfield_for_dbfield(db_field, **kwargs):\n            if db_field.name == 'publications':\n                kwargs['initial'] = lambda: Publication.objects.all().order_by('date_published')[:2]\n            return db_field.formfield(**kwargs)\n\n        # Set up some Publications to use as data\n        book1 = Publication.objects.create(title=\"First Book\", date_published=date(2007,1,1))\n        book2 = Publication.objects.create(title=\"Second Book\", date_published=date(2008,1,1))\n        book3 = Publication.objects.create(title=\"Third Book\", date_published=date(2009,1,1))\n\n        # Create a ModelForm, instantiate it, and check that the output is as expected\n        ModelForm = modelform_factory(Article, formfield_callback=formfield_for_dbfield)\n        form = ModelForm()\n        self.assertHTMLEqual(form.as_ul(), \"\"\"<li><label for=\"id_headline\">Headline:</label> <input id=\"id_headline\" type=\"text\" name=\"headline\" maxlength=\"100\" /></li>\n<li><label for=\"id_publications\">Publications:</label> <select multiple=\"multiple\" name=\"publications\" id=\"id_publications\">\n<option value=\"%d\" selected=\"selected\">First Book</option>\n<option value=\"%d\" selected=\"selected\">Second Book</option>\n<option value=\"%d\">Third Book</option>\n</select> <span class=\"helptext\"> Hold down \"Control\", or \"Command\" on a Mac, to select more than one.</span></li>\"\"\"\n            % (book1.pk, book2.pk, book3.pk))\n\nclass CFFForm(forms.ModelForm):\n    class Meta:\n        model = CustomFF\n\nclass CustomFieldSaveTests(TestCase):\n    def test_save(self):\n        \"Regression for #11149: save_form_data should be called only once\"\n\n        # It's enough that the form saves without error -- the custom save routine will\n        # generate an AssertionError if it is called more than once during save.\n        form = CFFForm(data = {'f': None})\n        form.save()\n\nclass ModelChoiceIteratorTests(TestCase):\n    def test_len(self):\n        class Form(forms.ModelForm):\n            class Meta:\n                model = Article\n                fields = [\"publications\"]\n\n        Publication.objects.create(title=\"Pravda\",\n            date_published=date(1991, 8, 22))\n        f = Form()\n        self.assertEqual(len(f.fields[\"publications\"].choices), 1)\n\nclass RealPersonForm(forms.ModelForm):\n    class Meta:\n        model = RealPerson\n\nclass CustomModelFormSaveMethod(TestCase):\n    def test_string_message(self):\n        data = {'name': 'anonymous'}\n        form = RealPersonForm(data)\n        self.assertEqual(form.is_valid(), False)\n        self.assertEqual(form.errors['__all__'], ['Please specify a real name.'])\n\nclass ModelClassTests(TestCase):\n    def test_no_model_class(self):\n        class NoModelModelForm(forms.ModelForm):\n            pass\n        self.assertRaises(ValueError, NoModelModelForm)\n\nclass OneToOneFieldTests(TestCase):\n    def test_assignment_of_none(self):\n        class AuthorForm(forms.ModelForm):\n            class Meta:\n                model = Author\n                fields = ['publication', 'full_name']\n\n        publication = Publication.objects.create(title=\"Pravda\",\n            date_published=date(1991, 8, 22))\n        author = Author.objects.create(publication=publication, full_name='John Doe')\n        form = AuthorForm({'publication':'', 'full_name':'John Doe'}, instance=author)\n        self.assertTrue(form.is_valid())\n        self.assertEqual(form.cleaned_data['publication'], None)\n        author = form.save()\n        # author object returned from form still retains original publication object\n        # that's why we need to retreive it from database again\n        new_author = Author.objects.get(pk=author.pk)\n        self.assertEqual(new_author.publication, None)\n\n    def test_assignment_of_none_null_false(self):\n        class AuthorForm(forms.ModelForm):\n            class Meta:\n                model = Author1\n                fields = ['publication', 'full_name']\n\n        publication = Publication.objects.create(title=\"Pravda\",\n            date_published=date(1991, 8, 22))\n        author = Author1.objects.create(publication=publication, full_name='John Doe')\n        form = AuthorForm({'publication':'', 'full_name':'John Doe'}, instance=author)\n        self.assertTrue(not form.is_valid())\n\n\nclass ModelChoiceForm(forms.Form):\n    person = ModelChoiceField(Person.objects.all())\n\n\nclass TestTicket11183(TestCase):\n    def test_11183(self):\n        form1 = ModelChoiceForm()\n        field1 = form1.fields['person']\n        # To allow the widget to change the queryset of field1.widget.choices correctly,\n        # without affecting other forms, the following must hold:\n        self.assertTrue(field1 is not ModelChoiceForm.base_fields['person'])\n        self.assertTrue(field1.widget.choices.field is field1)\n\nclass HomepageForm(forms.ModelForm):\n    class Meta:\n        model = Homepage\n\nclass URLFieldTests(TestCase):\n    def test_url_on_modelform(self):\n        \"Check basic URL field validation on model forms\"\n        self.assertFalse(HomepageForm({'url': 'foo'}).is_valid())\n        self.assertFalse(HomepageForm({'url': 'http://'}).is_valid())\n        self.assertFalse(HomepageForm({'url': 'http://example'}).is_valid())\n        self.assertFalse(HomepageForm({'url': 'http://example.'}).is_valid())\n        self.assertFalse(HomepageForm({'url': 'http://com.'}).is_valid())\n\n        self.assertTrue(HomepageForm({'url': 'http://localhost'}).is_valid())\n        self.assertTrue(HomepageForm({'url': 'http://example.com'}).is_valid())\n        self.assertTrue(HomepageForm({'url': 'http://www.example.com'}).is_valid())\n        self.assertTrue(HomepageForm({'url': 'http://www.example.com:8000'}).is_valid())\n        self.assertTrue(HomepageForm({'url': 'http://www.example.com/test'}).is_valid())\n        self.assertTrue(HomepageForm({'url': 'http://www.example.com:8000/test'}).is_valid())\n        self.assertTrue(HomepageForm({'url': 'http://example.com/foo/bar'}).is_valid())\n\n    def test_http_prefixing(self):\n        \"If the http:// prefix is omitted on form input, the field adds it again. (Refs #13613)\"\n        form = HomepageForm({'url': 'example.com'})\n        form.is_valid()\n        # self.assertTrue(form.is_valid())\n        # self.assertEqual(form.cleaned_data['url'], 'http://example.com/')\n\n        form = HomepageForm({'url': 'example.com/test'})\n        form.is_valid()\n        # self.assertTrue(form.is_valid())\n        # self.assertEqual(form.cleaned_data['url'], 'http://example.com/test')\n\n\nclass FormFieldCallbackTests(TestCase):\n\n    def test_baseform_with_widgets_in_meta(self):\n        \"\"\"Regression for #13095: Using base forms with widgets defined in Meta should not raise errors.\"\"\"\n        widget = forms.Textarea()\n\n        class BaseForm(forms.ModelForm):\n            class Meta:\n                model = Person\n                widgets = {'name': widget}\n\n        Form = modelform_factory(Person, form=BaseForm)\n        self.assertTrue(Form.base_fields['name'].widget is widget)\n\n    def test_factory_with_widget_argument(self):\n        \"\"\" Regression for #15315: modelform_factory should accept widgets\n            argument\n        \"\"\"\n        widget = forms.Textarea()\n\n        # Without a widget should not set the widget to textarea\n        Form = modelform_factory(Person)\n        self.assertNotEqual(Form.base_fields['name'].widget.__class__, forms.Textarea)\n\n        # With a widget should not set the widget to textarea\n        Form = modelform_factory(Person, widgets={'name':widget})\n        self.assertEqual(Form.base_fields['name'].widget.__class__, forms.Textarea)\n\n    def test_custom_callback(self):\n        \"\"\"Test that a custom formfield_callback is used if provided\"\"\"\n\n        callback_args = []\n\n        def callback(db_field, **kwargs):\n            callback_args.append((db_field, kwargs))\n            return db_field.formfield(**kwargs)\n\n        widget = forms.Textarea()\n\n        class BaseForm(forms.ModelForm):\n            class Meta:\n                model = Person\n                widgets = {'name': widget}\n\n        _ = modelform_factory(Person, form=BaseForm,\n                              formfield_callback=callback)\n        id_field, name_field = Person._meta.fields\n\n        self.assertEqual(callback_args,\n                         [(id_field, {}), (name_field, {'widget': widget})])\n\n    def test_bad_callback(self):\n        # A bad callback provided by user still gives an error\n        self.assertRaises(TypeError, modelform_factory, Person,\n                          formfield_callback='not a function or callable')\n\n\nclass InvalidFieldAndFactory(TestCase):\n    \"\"\" Tests for #11905 \"\"\"\n\n    def test_extra_field_model_form(self):\n        try:\n            class ExtraPersonForm(forms.ModelForm):\n                \"\"\" ModelForm with an extra field \"\"\"\n\n                age = forms.IntegerField()\n\n                class Meta:\n                    model = Person\n                    fields = ('name', 'no-field')\n        except FieldError as e:\n            # Make sure the exception contains some reference to the\n            # field responsible for the problem.\n            self.assertTrue('no-field' in e.args[0])\n        else:\n            self.fail('Invalid \"no-field\" field not caught')\n\n    def test_extra_declared_field_model_form(self):\n        try:\n            class ExtraPersonForm(forms.ModelForm):\n                \"\"\" ModelForm with an extra field \"\"\"\n\n                age = forms.IntegerField()\n\n                class Meta:\n                    model = Person\n                    fields = ('name', 'age')\n        except FieldError:\n            self.fail('Declarative field raised FieldError incorrectly')\n\n    def test_extra_field_modelform_factory(self):\n        self.assertRaises(FieldError, modelform_factory,\n                          Person, fields=['no-field', 'name'])\n\n\nclass DocumentForm(forms.ModelForm):\n    class Meta:\n        model = Document\n\nclass FileFieldTests(unittest.TestCase):\n    def test_clean_false(self):\n        \"\"\"\n        If the ``clean`` method on a non-required FileField receives False as\n        the data (meaning clear the field value), it returns False, regardless\n        of the value of ``initial``.\n\n        \"\"\"\n        f = forms.FileField(required=False)\n        self.assertEqual(f.clean(False), False)\n        self.assertEqual(f.clean(False, 'initial'), False)\n\n    def test_clean_false_required(self):\n        \"\"\"\n        If the ``clean`` method on a required FileField receives False as the\n        data, it has the same effect as None: initial is returned if non-empty,\n        otherwise the validation catches the lack of a required value.\n\n        \"\"\"\n        f = forms.FileField(required=True)\n        self.assertEqual(f.clean(False, 'initial'), 'initial')\n        self.assertRaises(ValidationError, f.clean, False)\n\n    def test_full_clear(self):\n        \"\"\"\n        Integration happy-path test that a model FileField can actually be set\n        and cleared via a ModelForm.\n\n        \"\"\"\n        form = DocumentForm()\n        self.assertTrue('name=\"myfile\"' in six.text_type(form))\n        self.assertTrue('myfile-clear' not in six.text_type(form))\n        form = DocumentForm(files={'myfile': SimpleUploadedFile('something.txt', b'content')})\n        self.assertTrue(form.is_valid())\n        doc = form.save(commit=False)\n        self.assertEqual(doc.myfile.name, 'something.txt')\n        form = DocumentForm(instance=doc)\n        self.assertTrue('myfile-clear' in six.text_type(form))\n        form = DocumentForm(instance=doc, data={'myfile-clear': 'true'})\n        doc = form.save(commit=False)\n        self.assertEqual(bool(doc.myfile), False)\n\n    def test_clear_and_file_contradiction(self):\n        \"\"\"\n        If the user submits a new file upload AND checks the clear checkbox,\n        they get a validation error, and the bound redisplay of the form still\n        includes the current file and the clear checkbox.\n\n        \"\"\"\n        form = DocumentForm(files={'myfile': SimpleUploadedFile('something.txt', b'content')})\n        self.assertTrue(form.is_valid())\n        doc = form.save(commit=False)\n        form = DocumentForm(instance=doc,\n                            files={'myfile': SimpleUploadedFile('something.txt', b'content')},\n                            data={'myfile-clear': 'true'})\n        self.assertTrue(not form.is_valid())\n        self.assertEqual(form.errors['myfile'],\n                         ['Please either submit a file or check the clear checkbox, not both.'])\n        rendered = six.text_type(form)\n        self.assertTrue('something.txt' in rendered)\n        self.assertTrue('myfile-clear' in rendered)\n\nclass EditionForm(forms.ModelForm):\n    author = forms.ModelChoiceField(queryset=Person.objects.all())\n    publication = forms.ModelChoiceField(queryset=Publication.objects.all())\n    edition = forms.IntegerField()\n    isbn = forms.CharField(max_length=13)\n\n    class Meta:\n        model = Edition\n\nclass UniqueErrorsTests(TestCase):\n    def setUp(self):\n        self.author1 = Person.objects.create(name='Author #1')\n        self.author2 = Person.objects.create(name='Author #2')\n        self.pub1 = Publication.objects.create(title='Pub #1', date_published=date(2000, 10, 31))\n        self.pub2 = Publication.objects.create(title='Pub #2', date_published=date(2004, 1, 5))\n        form = EditionForm(data={'author': self.author1.pk, 'publication': self.pub1.pk, 'edition': 1, 'isbn': '9783161484100'})\n        form.save()\n\n    def test_unique_error_message(self):\n        form = EditionForm(data={'author': self.author1.pk, 'publication': self.pub2.pk, 'edition': 1, 'isbn': '9783161484100'})\n        self.assertEqual(form.errors, {'isbn': ['Edition with this Isbn already exists.']})\n\n    def test_unique_together_error_message(self):\n        form = EditionForm(data={'author': self.author1.pk, 'publication': self.pub1.pk, 'edition': 2, 'isbn': '9783161489999'})\n        self.assertEqual(form.errors, {'__all__': ['Edition with this Author and Publication already exists.']})\n        form = EditionForm(data={'author': self.author2.pk, 'publication': self.pub1.pk, 'edition': 1, 'isbn': '9783161487777'})\n        self.assertEqual(form.errors, {'__all__': ['Edition with this Publication and Edition already exists.']})\n\n\nclass EmptyFieldsTestCase(TestCase):\n    \"Tests for fields=() cases as reported in #14119\"\n    class EmptyPersonForm(forms.ModelForm):\n        class Meta:\n            model = Person\n            fields = ()\n\n    def test_empty_fields_to_fields_for_model(self):\n        \"An argument of fields=() to fields_for_model should return an empty dictionary\"\n        field_dict = fields_for_model(Person, fields=())\n        self.assertEqual(len(field_dict), 0)\n\n    def test_empty_fields_on_modelform(self):\n        \"No fields on a ModelForm should actually result in no fields\"\n        form = self.EmptyPersonForm()\n        self.assertEqual(len(form.fields), 0)\n\n    def test_empty_fields_to_construct_instance(self):\n        \"No fields should be set on a model instance if construct_instance receives fields=()\"\n        form = modelform_factory(Person)({'name': 'John Doe'})\n        self.assertTrue(form.is_valid())\n        instance = construct_instance(form, Person(), fields=())\n        self.assertEqual(instance.name, '')\n\n\nclass CustomMetaclass(ModelFormMetaclass):\n    def __new__(cls, name, bases, attrs):\n        new = super(CustomMetaclass, cls).__new__(cls, name, bases, attrs)\n        new.base_fields = {}\n        return new\n\nclass CustomMetaclassForm(six.with_metaclass(CustomMetaclass, forms.ModelForm)):\n    pass\n\nclass CustomMetaclassTestCase(TestCase):\n    def test_modelform_factory_metaclass(self):\n        new_cls = modelform_factory(Person, form=CustomMetaclassForm)\n        self.assertEqual(new_cls.base_fields, {})\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/model_formsets_regress/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/model_formsets_regress/models.py",
    "content": "from django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\nclass User(models.Model):\n    username = models.CharField(max_length=12, unique=True)\n    serial = models.IntegerField()\n\nclass UserSite(models.Model):\n    user = models.ForeignKey(User, to_field=\"username\")\n    data = models.IntegerField()\n\nclass Place(models.Model):\n    name = models.CharField(max_length=50)\n\nclass Restaurant(Place):\n    pass\n\nclass Manager(models.Model):\n    retaurant = models.ForeignKey(Restaurant)\n    name = models.CharField(max_length=50)\n\nclass Network(models.Model):\n    name = models.CharField(max_length=15)\n\n@python_2_unicode_compatible\nclass Host(models.Model):\n    network = models.ForeignKey(Network)\n    hostname = models.CharField(max_length=25)\n\n    def __str__(self):\n        return self.hostname\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/model_formsets_regress/tests.py",
    "content": "from __future__ import absolute_import, unicode_literals\n\nfrom django import forms\nfrom django.forms.formsets import BaseFormSet, DELETION_FIELD_NAME\nfrom django.forms.util import ErrorDict, ErrorList\nfrom django.forms.models import modelform_factory, inlineformset_factory, modelformset_factory, BaseModelFormSet\nfrom django.test import TestCase\nfrom django.utils import six\n\nfrom .models import User, UserSite, Restaurant, Manager, Network, Host\n\n\nclass InlineFormsetTests(TestCase):\n    def test_formset_over_to_field(self):\n        \"A formset over a ForeignKey with a to_field can be saved. Regression for #10243\"\n        Form = modelform_factory(User)\n        FormSet = inlineformset_factory(User, UserSite)\n\n        # Instantiate the Form and FormSet to prove\n        # you can create a form with no data\n        form = Form()\n        form_set = FormSet(instance=User())\n\n        # Now create a new User and UserSite instance\n        data = {\n            'serial': '1',\n            'username': 'apollo13',\n            'usersite_set-TOTAL_FORMS': '1',\n            'usersite_set-INITIAL_FORMS': '0',\n            'usersite_set-MAX_NUM_FORMS': '0',\n            'usersite_set-0-data': '10',\n            'usersite_set-0-user': 'apollo13'\n        }\n        user = User()\n        form = Form(data)\n        if form.is_valid():\n            user = form.save()\n        else:\n            self.fail('Errors found on form:%s' % form_set)\n\n        form_set = FormSet(data, instance=user)\n        if form_set.is_valid():\n            form_set.save()\n            usersite = UserSite.objects.all().values()\n            self.assertEqual(usersite[0]['data'], 10)\n            self.assertEqual(usersite[0]['user_id'], 'apollo13')\n        else:\n            self.fail('Errors found on formset:%s' % form_set.errors)\n\n        # Now update the UserSite instance\n        data = {\n            'usersite_set-TOTAL_FORMS': '1',\n            'usersite_set-INITIAL_FORMS': '1',\n            'usersite_set-MAX_NUM_FORMS': '0',\n            'usersite_set-0-id': six.text_type(usersite[0]['id']),\n            'usersite_set-0-data': '11',\n            'usersite_set-0-user': 'apollo13'\n        }\n        form_set = FormSet(data, instance=user)\n        if form_set.is_valid():\n            form_set.save()\n            usersite = UserSite.objects.all().values()\n            self.assertEqual(usersite[0]['data'], 11)\n            self.assertEqual(usersite[0]['user_id'], 'apollo13')\n        else:\n            self.fail('Errors found on formset:%s' % form_set.errors)\n\n        # Now add a new UserSite instance\n        data = {\n            'usersite_set-TOTAL_FORMS': '2',\n            'usersite_set-INITIAL_FORMS': '1',\n            'usersite_set-MAX_NUM_FORMS': '0',\n            'usersite_set-0-id': six.text_type(usersite[0]['id']),\n            'usersite_set-0-data': '11',\n            'usersite_set-0-user': 'apollo13',\n            'usersite_set-1-data': '42',\n            'usersite_set-1-user': 'apollo13'\n        }\n        form_set = FormSet(data, instance=user)\n        if form_set.is_valid():\n            form_set.save()\n            usersite = UserSite.objects.all().values().order_by('data')\n            self.assertEqual(usersite[0]['data'], 11)\n            self.assertEqual(usersite[0]['user_id'], 'apollo13')\n            self.assertEqual(usersite[1]['data'], 42)\n            self.assertEqual(usersite[1]['user_id'], 'apollo13')\n        else:\n            self.fail('Errors found on formset:%s' % form_set.errors)\n\n    def test_formset_over_inherited_model(self):\n        \"A formset over a ForeignKey with a to_field can be saved. Regression for #11120\"\n        Form = modelform_factory(Restaurant)\n        FormSet = inlineformset_factory(Restaurant, Manager)\n\n        # Instantiate the Form and FormSet to prove\n        # you can create a form with no data\n        form = Form()\n        form_set = FormSet(instance=Restaurant())\n\n        # Now create a new Restaurant and Manager instance\n        data = {\n            'name': \"Guido's House of Pasta\",\n            'manager_set-TOTAL_FORMS': '1',\n            'manager_set-INITIAL_FORMS': '0',\n            'manager_set-MAX_NUM_FORMS': '0',\n            'manager_set-0-name': 'Guido Van Rossum'\n        }\n        restaurant = User()\n        form = Form(data)\n        if form.is_valid():\n            restaurant = form.save()\n        else:\n            self.fail('Errors found on form:%s' % form_set)\n\n        form_set = FormSet(data, instance=restaurant)\n        if form_set.is_valid():\n            form_set.save()\n            manager = Manager.objects.all().values()\n            self.assertEqual(manager[0]['name'], 'Guido Van Rossum')\n        else:\n            self.fail('Errors found on formset:%s' % form_set.errors)\n\n        # Now update the Manager instance\n        data = {\n            'manager_set-TOTAL_FORMS': '1',\n            'manager_set-INITIAL_FORMS': '1',\n            'manager_set-MAX_NUM_FORMS': '0',\n            'manager_set-0-id': six.text_type(manager[0]['id']),\n            'manager_set-0-name': 'Terry Gilliam'\n        }\n        form_set = FormSet(data, instance=restaurant)\n        if form_set.is_valid():\n            form_set.save()\n            manager = Manager.objects.all().values()\n            self.assertEqual(manager[0]['name'], 'Terry Gilliam')\n        else:\n            self.fail('Errors found on formset:%s' % form_set.errors)\n\n        # Now add a new Manager instance\n        data = {\n            'manager_set-TOTAL_FORMS': '2',\n            'manager_set-INITIAL_FORMS': '1',\n            'manager_set-MAX_NUM_FORMS': '0',\n            'manager_set-0-id': six.text_type(manager[0]['id']),\n            'manager_set-0-name': 'Terry Gilliam',\n            'manager_set-1-name': 'John Cleese'\n        }\n        form_set = FormSet(data, instance=restaurant)\n        if form_set.is_valid():\n            form_set.save()\n            manager = Manager.objects.all().values().order_by('name')\n            self.assertEqual(manager[0]['name'], 'John Cleese')\n            self.assertEqual(manager[1]['name'], 'Terry Gilliam')\n        else:\n            self.fail('Errors found on formset:%s' % form_set.errors)\n\n    def test_formset_with_none_instance(self):\n        \"A formset with instance=None can be created. Regression for #11872\"\n        Form = modelform_factory(User)\n        FormSet = inlineformset_factory(User, UserSite)\n\n        # Instantiate the Form and FormSet to prove\n        # you can create a formset with an instance of None\n        form = Form(instance=None)\n        formset = FormSet(instance=None)\n\n    def test_empty_fields_on_modelformset(self):\n        \"No fields passed to modelformset_factory should result in no fields on returned forms except for the id. See #14119.\"\n        UserFormSet = modelformset_factory(User, fields=())\n        formset = UserFormSet()\n        for form in formset.forms:\n            self.assertTrue('id' in form.fields)\n            self.assertEqual(len(form.fields), 1)\n\n    def test_save_as_new_with_new_inlines(self):\n        \"\"\"\n        Existing and new inlines are saved with save_as_new.\n\n        Regression for #14938.\n\n        \"\"\"\n        efnet = Network.objects.create(name=\"EFNet\")\n        host1 = Host.objects.create(hostname=\"irc.he.net\", network=efnet)\n\n        HostFormSet = inlineformset_factory(Network, Host)\n\n        # Add a new host, modify previous host, and save-as-new\n        data = {\n            'host_set-TOTAL_FORMS': '2',\n            'host_set-INITIAL_FORMS': '1',\n            'host_set-MAX_NUM_FORMS': '0',\n            'host_set-0-id': six.text_type(host1.id),\n            'host_set-0-hostname': 'tranquility.hub.dal.net',\n            'host_set-1-hostname': 'matrix.de.eu.dal.net'\n        }\n\n        # To save a formset as new, it needs a new hub instance\n        dalnet = Network.objects.create(name=\"DALnet\")\n        formset = HostFormSet(data, instance=dalnet, save_as_new=True)\n\n        self.assertTrue(formset.is_valid())\n        formset.save()\n        self.assertQuerysetEqual(\n            dalnet.host_set.order_by(\"hostname\"),\n            [\"<Host: matrix.de.eu.dal.net>\", \"<Host: tranquility.hub.dal.net>\"]\n            )\n\n    def test_initial_data(self):\n        user = User.objects.create(username=\"bibi\", serial=1)\n        UserSite.objects.create(user=user, data=7)\n        FormSet = inlineformset_factory(User, UserSite, extra=2)\n\n        formset = FormSet(instance=user, initial=[{'data': 41}, {'data': 42}])\n        self.assertEqual(formset.forms[0].initial['data'], 7)\n        self.assertEqual(formset.extra_forms[0].initial['data'], 41)\n        self.assertTrue('value=\"42\"' in formset.extra_forms[1].as_p())\n\n\nclass FormsetTests(TestCase):\n    def test_error_class(self):\n        '''\n        Test the type of Formset and Form error attributes\n        '''\n        Formset = modelformset_factory(User)\n        data = {\n            'form-TOTAL_FORMS': '2',\n            'form-INITIAL_FORMS': '0',\n            'form-MAX_NUM_FORMS': '0',\n            'form-0-id': '',\n            'form-0-username': 'apollo13',\n            'form-0-serial': '1',\n            'form-1-id': '',\n            'form-1-username': 'apollo13',\n            'form-1-serial': '2',\n        }\n        formset = Formset(data)\n        # check if the returned error classes are correct\n        # note: formset.errors returns a list as documented\n        self.assertTrue(isinstance(formset.errors, list))\n        self.assertTrue(isinstance(formset.non_form_errors(), ErrorList))\n        for form in formset.forms:\n            self.assertTrue(isinstance(form.errors, ErrorDict))\n            self.assertTrue(isinstance(form.non_field_errors(), ErrorList))\n\n    def test_initial_data(self):\n        User.objects.create(username=\"bibi\", serial=1)\n        Formset = modelformset_factory(User, extra=2)\n        formset = Formset(initial=[{'username': 'apollo11'}, {'username': 'apollo12'}])\n        self.assertEqual(formset.forms[0].initial['username'], \"bibi\")\n        self.assertEqual(formset.extra_forms[0].initial['username'], \"apollo11\")\n        self.assertTrue('value=\"apollo12\"' in formset.extra_forms[1].as_p())\n\n    def test_extraneous_query_is_not_run(self):\n        Formset = modelformset_factory(Network)\n        data = {'test-TOTAL_FORMS': '1',\n                'test-INITIAL_FORMS': '0',\n                'test-MAX_NUM_FORMS': '',\n                'test-0-name': 'Random Place', }\n        with self.assertNumQueries(1):\n            formset = Formset(data, prefix=\"test\")\n            formset.save()\n\n\nclass CustomWidget(forms.CharField):\n    pass\n\n\nclass UserSiteForm(forms.ModelForm):\n    class Meta:\n        model = UserSite\n        widgets = {'data': CustomWidget}\n\n\nclass Callback(object):\n\n    def __init__(self):\n        self.log = []\n\n    def __call__(self, db_field, **kwargs):\n        self.log.append((db_field, kwargs))\n        return db_field.formfield(**kwargs)\n\n\nclass FormfieldCallbackTests(TestCase):\n    \"\"\"\n    Regression for #13095: Using base forms with widgets\n    defined in Meta should not raise errors.\n    \"\"\"\n\n    def test_inlineformset_factory_default(self):\n        Formset = inlineformset_factory(User, UserSite, form=UserSiteForm)\n        form = Formset().forms[0]\n        self.assertTrue(isinstance(form['data'].field.widget, CustomWidget))\n\n    def test_modelformset_factory_default(self):\n        Formset = modelformset_factory(UserSite, form=UserSiteForm)\n        form = Formset().forms[0]\n        self.assertTrue(isinstance(form['data'].field.widget, CustomWidget))\n\n    def assertCallbackCalled(self, callback):\n        id_field, user_field, data_field = UserSite._meta.fields\n        expected_log = [\n            (id_field, {}),\n            (user_field, {}),\n            (data_field, {'widget': CustomWidget}),\n        ]\n        self.assertEqual(callback.log, expected_log)\n\n    def test_inlineformset_custom_callback(self):\n        callback = Callback()\n        inlineformset_factory(User, UserSite, form=UserSiteForm,\n                              formfield_callback=callback)\n        self.assertCallbackCalled(callback)\n\n    def test_modelformset_custom_callback(self):\n        callback = Callback()\n        modelformset_factory(UserSite, form=UserSiteForm,\n                             formfield_callback=callback)\n        self.assertCallbackCalled(callback)\n\n\nclass BaseCustomDeleteFormSet(BaseFormSet):\n    \"\"\"\n    A formset mix-in that lets a form decide if it's to be deleted.\n    Works for BaseFormSets. Also works for ModelFormSets with #14099 fixed.\n\n    form.should_delete() is called. The formset delete field is also suppressed.\n    \"\"\"\n    def add_fields(self, form, index):\n        super(BaseCustomDeleteFormSet, self).add_fields(form, index)\n        self.can_delete = True\n        if DELETION_FIELD_NAME in form.fields:\n            del form.fields[DELETION_FIELD_NAME]\n\n    def _should_delete_form(self, form):\n        return hasattr(form, 'should_delete') and form.should_delete()\n\n\nclass FormfieldShouldDeleteFormTests(TestCase):\n    \"\"\"\n    Regression for #14099: BaseModelFormSet should use ModelFormSet method _should_delete_form\n    \"\"\"\n\n    class BaseCustomDeleteModelFormSet(BaseModelFormSet, BaseCustomDeleteFormSet):\n        \"\"\" Model FormSet with CustomDelete MixIn \"\"\"\n\n    class CustomDeleteUserForm(forms.ModelForm):\n        \"\"\" A model form with a 'should_delete' method \"\"\"\n        class Meta:\n            model = User\n\n        def should_delete(self):\n            \"\"\" delete form if odd PK \"\"\"\n            return self.instance.pk % 2 != 0\n\n    NormalFormset = modelformset_factory(User, form=CustomDeleteUserForm, can_delete=True)\n    DeleteFormset = modelformset_factory(User, form=CustomDeleteUserForm, formset=BaseCustomDeleteModelFormSet)\n\n    data = {\n            'form-TOTAL_FORMS': '4',\n            'form-INITIAL_FORMS': '0',\n            'form-MAX_NUM_FORMS': '4',\n            'form-0-username': 'John',\n            'form-0-serial': '1',\n            'form-1-username': 'Paul',\n            'form-1-serial': '2',\n            'form-2-username': 'George',\n            'form-2-serial': '3',\n            'form-3-username': 'Ringo',\n            'form-3-serial': '5',\n            }\n\n    delete_all_ids = {\n            'form-0-DELETE': '1',\n            'form-1-DELETE': '1',\n            'form-2-DELETE': '1',\n            'form-3-DELETE': '1',\n            }\n\n    def test_init_database(self):\n        \"\"\" Add test data to database via formset \"\"\"\n        formset = self.NormalFormset(self.data)\n        self.assertTrue(formset.is_valid())\n        self.assertEqual(len(formset.save()), 4)\n\n    def test_no_delete(self):\n        \"\"\" Verify base formset doesn't modify database \"\"\"\n        # reload database\n        self.test_init_database()\n\n        # pass standard data dict & see none updated\n        data = dict(self.data)\n        data['form-INITIAL_FORMS'] = 4\n        data.update(dict(\n            ('form-%d-id' % i, user.pk)\n            for i,user in enumerate(User.objects.all())\n        ))\n        formset = self.NormalFormset(data, queryset=User.objects.all())\n        self.assertTrue(formset.is_valid())\n        self.assertEqual(len(formset.save()), 0)\n        self.assertEqual(len(User.objects.all()), 4)\n\n    def test_all_delete(self):\n        \"\"\" Verify base formset honors DELETE field \"\"\"\n        # reload database\n        self.test_init_database()\n\n        # create data dict with all fields marked for deletion\n        data = dict(self.data)\n        data['form-INITIAL_FORMS'] = 4\n        data.update(dict(\n            ('form-%d-id' % i, user.pk)\n            for i,user in enumerate(User.objects.all())\n        ))\n        data.update(self.delete_all_ids)\n        formset = self.NormalFormset(data, queryset=User.objects.all())\n        self.assertTrue(formset.is_valid())\n        self.assertEqual(len(formset.save()), 0)\n        self.assertEqual(len(User.objects.all()), 0)\n\n    def test_custom_delete(self):\n        \"\"\" Verify DeleteFormset ignores DELETE field and uses form method \"\"\"\n        # reload database\n        self.test_init_database()\n\n        # Create formset with custom Delete function\n        # create data dict with all fields marked for deletion\n        data = dict(self.data)\n        data['form-INITIAL_FORMS'] = 4\n        data.update(dict(\n            ('form-%d-id' % i, user.pk)\n            for i,user in enumerate(User.objects.all())\n        ))\n        data.update(self.delete_all_ids)\n        formset = self.DeleteFormset(data, queryset=User.objects.all())\n\n        # verify two were deleted\n        self.assertTrue(formset.is_valid())\n        self.assertEqual(len(formset.save()), 0)\n        self.assertEqual(len(User.objects.all()), 2)\n\n        # verify no \"odd\" PKs left\n        odd_ids = [user.pk for user in User.objects.all() if user.pk % 2]\n        self.assertEqual(len(odd_ids), 0)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/model_inheritance_regress/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/model_inheritance_regress/models.py",
    "content": "from __future__ import unicode_literals\n\nimport datetime\n\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n@python_2_unicode_compatible\nclass Place(models.Model):\n    name = models.CharField(max_length=50)\n    address = models.CharField(max_length=80)\n\n    class Meta:\n        ordering = ('name',)\n\n    def __str__(self):\n        return \"%s the place\" % self.name\n\n@python_2_unicode_compatible\nclass Restaurant(Place):\n    serves_hot_dogs = models.BooleanField()\n    serves_pizza = models.BooleanField()\n\n    def __str__(self):\n        return \"%s the restaurant\" % self.name\n\n@python_2_unicode_compatible\nclass ItalianRestaurant(Restaurant):\n    serves_gnocchi = models.BooleanField()\n\n    def __str__(self):\n        return \"%s the italian restaurant\" % self.name\n\n@python_2_unicode_compatible\nclass ParkingLot(Place):\n    # An explicit link to the parent (we can control the attribute name).\n    parent = models.OneToOneField(Place, primary_key=True, parent_link=True)\n    capacity = models.IntegerField()\n\n    def __str__(self):\n        return \"%s the parking lot\" % self.name\n\nclass ParkingLot2(Place):\n    # In lieu of any other connector, an existing OneToOneField will be\n    # promoted to the primary key.\n    parent = models.OneToOneField(Place)\n\nclass ParkingLot3(Place):\n    # The parent_link connector need not be the pk on the model.\n    primary_key = models.AutoField(primary_key=True)\n    parent = models.OneToOneField(Place, parent_link=True)\n\nclass Supplier(models.Model):\n    restaurant = models.ForeignKey(Restaurant)\n\nclass Wholesaler(Supplier):\n    retailer = models.ForeignKey(Supplier,related_name='wholesale_supplier')\n\nclass Parent(models.Model):\n    created = models.DateTimeField(default=datetime.datetime.now)\n\nclass Child(Parent):\n    name = models.CharField(max_length=10)\n\nclass SelfRefParent(models.Model):\n    parent_data = models.IntegerField()\n    self_data = models.ForeignKey('self', null=True)\n\nclass SelfRefChild(SelfRefParent):\n    child_data = models.IntegerField()\n\n@python_2_unicode_compatible\nclass Article(models.Model):\n    headline = models.CharField(max_length=100)\n    pub_date = models.DateTimeField()\n    class Meta:\n        ordering = ('-pub_date', 'headline')\n\n    def __str__(self):\n        return self.headline\n\nclass ArticleWithAuthor(Article):\n    author = models.CharField(max_length=100)\n\nclass M2MBase(models.Model):\n    articles = models.ManyToManyField(Article)\n\nclass M2MChild(M2MBase):\n    name = models.CharField(max_length=50)\n\nclass Evaluation(Article):\n    quality = models.IntegerField()\n\n    class Meta:\n        abstract = True\n\nclass QualityControl(Evaluation):\n    assignee = models.CharField(max_length=50)\n\n@python_2_unicode_compatible\nclass BaseM(models.Model):\n    base_name = models.CharField(max_length=100)\n\n    def __str__(self):\n        return self.base_name\n\n@python_2_unicode_compatible\nclass DerivedM(BaseM):\n    customPK = models.IntegerField(primary_key=True)\n    derived_name = models.CharField(max_length=100)\n\n    def __str__(self):\n        return \"PK = %d, base_name = %s, derived_name = %s\" \\\n                % (self.customPK, self.base_name, self.derived_name)\n\nclass AuditBase(models.Model):\n    planned_date = models.DateField()\n\n    class Meta:\n        abstract = True\n        verbose_name_plural = 'Audits'\n\nclass CertificationAudit(AuditBase):\n    class Meta(AuditBase.Meta):\n        abstract = True\n\nclass InternalCertificationAudit(CertificationAudit):\n    auditing_dept = models.CharField(max_length=20)\n\n# Check that abstract classes don't get m2m tables autocreated.\n@python_2_unicode_compatible\nclass Person(models.Model):\n    name = models.CharField(max_length=100)\n\n    class Meta:\n        ordering = ('name',)\n\n    def __str__(self):\n        return self.name\n\n@python_2_unicode_compatible\nclass AbstractEvent(models.Model):\n    name = models.CharField(max_length=100)\n    attendees = models.ManyToManyField(Person, related_name=\"%(class)s_set\")\n\n    class Meta:\n        abstract = True\n        ordering = ('name',)\n\n    def __str__(self):\n        return self.name\n\nclass BirthdayParty(AbstractEvent):\n    pass\n\nclass BachelorParty(AbstractEvent):\n    pass\n\nclass MessyBachelorParty(BachelorParty):\n    pass\n\n# Check concrete -> abstract -> concrete inheritance\nclass SearchableLocation(models.Model):\n    keywords = models.CharField(max_length=256)\n\nclass Station(SearchableLocation):\n    name = models.CharField(max_length=128)\n\n    class Meta:\n        abstract = True\n\nclass BusStation(Station):\n    bus_routes = models.CommaSeparatedIntegerField(max_length=128)\n    inbound = models.BooleanField()\n\nclass TrainStation(Station):\n    zone = models.IntegerField()\n\nclass User(models.Model):\n    username = models.CharField(max_length=30, unique=True)\n\nclass Profile(User):\n    profile_id = models.AutoField(primary_key=True)\n    extra = models.CharField(max_length=30, blank=True)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/model_inheritance_regress/tests.py",
    "content": "\"\"\"\nRegression tests for Model inheritance behavior.\n\"\"\"\nfrom __future__ import absolute_import, unicode_literals\n\nimport datetime\nfrom operator import attrgetter\nfrom django import forms\n\nfrom django.test import TestCase\n\nfrom .models import (Place, Restaurant, ItalianRestaurant, ParkingLot,\n    ParkingLot2, ParkingLot3, Supplier, Wholesaler, Child, SelfRefParent,\n    SelfRefChild, ArticleWithAuthor, M2MChild, QualityControl, DerivedM,\n    Person, BirthdayParty, BachelorParty, MessyBachelorParty,\n    InternalCertificationAudit, BusStation, TrainStation, User, Profile)\n\n\nclass ModelInheritanceTest(TestCase):\n    def test_model_inheritance(self):\n        # Regression for #7350, #7202\n        # Check that when you create a Parent object with a specific reference\n        # to an existent child instance, saving the Parent doesn't duplicate\n        # the child. This behavior is only activated during a raw save - it\n        # is mostly relevant to deserialization, but any sort of CORBA style\n        # 'narrow()' API would require a similar approach.\n\n        # Create a child-parent-grandparent chain\n        place1 = Place(\n            name=\"Guido's House of Pasta\",\n            address='944 W. Fullerton')\n        place1.save_base(raw=True)\n        restaurant = Restaurant(\n            place_ptr=place1,\n            serves_hot_dogs=True,\n            serves_pizza=False)\n        restaurant.save_base(raw=True)\n        italian_restaurant = ItalianRestaurant(\n            restaurant_ptr=restaurant,\n            serves_gnocchi=True)\n        italian_restaurant.save_base(raw=True)\n\n        # Create a child-parent chain with an explicit parent link\n        place2 = Place(name='Main St', address='111 Main St')\n        place2.save_base(raw=True)\n        park = ParkingLot(parent=place2, capacity=100)\n        park.save_base(raw=True)\n\n        # Check that no extra parent objects have been created.\n        places = list(Place.objects.all())\n        self.assertEqual(places, [place1, place2])\n\n        dicts = list(Restaurant.objects.values('name','serves_hot_dogs'))\n        self.assertEqual(dicts, [{\n            'name': \"Guido's House of Pasta\",\n            'serves_hot_dogs': True\n        }])\n\n        dicts = list(ItalianRestaurant.objects.values(\n            'name','serves_hot_dogs','serves_gnocchi'))\n        self.assertEqual(dicts, [{\n            'name': \"Guido's House of Pasta\",\n            'serves_gnocchi': True,\n            'serves_hot_dogs': True,\n        }])\n\n        dicts = list(ParkingLot.objects.values('name','capacity'))\n        self.assertEqual(dicts, [{\n            'capacity': 100,\n            'name': 'Main St',\n        }])\n\n        # You can also update objects when using a raw save.\n        place1.name = \"Guido's All New House of Pasta\"\n        place1.save_base(raw=True)\n\n        restaurant.serves_hot_dogs = False\n        restaurant.save_base(raw=True)\n\n        italian_restaurant.serves_gnocchi = False\n        italian_restaurant.save_base(raw=True)\n\n        place2.name='Derelict lot'\n        place2.save_base(raw=True)\n\n        park.capacity = 50\n        park.save_base(raw=True)\n\n        # No extra parent objects after an update, either.\n        places = list(Place.objects.all())\n        self.assertEqual(places, [place2, place1])\n        self.assertEqual(places[0].name, 'Derelict lot')\n        self.assertEqual(places[1].name, \"Guido's All New House of Pasta\")\n\n        dicts = list(Restaurant.objects.values('name','serves_hot_dogs'))\n        self.assertEqual(dicts, [{\n            'name': \"Guido's All New House of Pasta\",\n            'serves_hot_dogs': False,\n        }])\n\n        dicts = list(ItalianRestaurant.objects.values(\n            'name', 'serves_hot_dogs', 'serves_gnocchi'))\n        self.assertEqual(dicts, [{\n            'name': \"Guido's All New House of Pasta\",\n            'serves_gnocchi': False,\n            'serves_hot_dogs': False,\n        }])\n\n        dicts = list(ParkingLot.objects.values('name','capacity'))\n        self.assertEqual(dicts, [{\n            'capacity': 50,\n            'name': 'Derelict lot',\n        }])\n\n        # If you try to raw_save a parent attribute onto a child object,\n        # the attribute will be ignored.\n\n        italian_restaurant.name = \"Lorenzo's Pasta Hut\"\n        italian_restaurant.save_base(raw=True)\n\n        # Note that the name has not changed\n        # - name is an attribute of Place, not ItalianRestaurant\n        dicts = list(ItalianRestaurant.objects.values(\n            'name','serves_hot_dogs','serves_gnocchi'))\n        self.assertEqual(dicts, [{\n            'name': \"Guido's All New House of Pasta\",\n            'serves_gnocchi': False,\n            'serves_hot_dogs': False,\n        }])\n\n    def test_issue_7105(self):\n        # Regressions tests for #7105: dates() queries should be able to use\n        # fields from the parent model as easily as the child.\n        obj = Child.objects.create(\n            name='child',\n            created=datetime.datetime(2008, 6, 26, 17, 0, 0))\n        dates = list(Child.objects.dates('created', 'month'))\n        self.assertEqual(dates, [datetime.datetime(2008, 6, 1, 0, 0)])\n\n    def test_issue_7276(self):\n        # Regression test for #7276: calling delete() on a model with\n        # multi-table inheritance should delete the associated rows from any\n        # ancestor tables, as well as any descendent objects.\n        place1 = Place(\n            name=\"Guido's House of Pasta\",\n            address='944 W. Fullerton')\n        place1.save_base(raw=True)\n        restaurant = Restaurant(\n            place_ptr=place1,\n            serves_hot_dogs=True,\n            serves_pizza=False)\n        restaurant.save_base(raw=True)\n        italian_restaurant = ItalianRestaurant(\n            restaurant_ptr=restaurant,\n            serves_gnocchi=True)\n        italian_restaurant.save_base(raw=True)\n\n        ident = ItalianRestaurant.objects.all()[0].id\n        self.assertEqual(Place.objects.get(pk=ident), place1)\n        xx = Restaurant.objects.create(\n            name='a',\n            address='xx',\n            serves_hot_dogs=True,\n            serves_pizza=False)\n\n        # This should delete both Restuarants, plus the related places, plus\n        # the ItalianRestaurant.\n        Restaurant.objects.all().delete()\n\n        self.assertRaises(\n            Place.DoesNotExist,\n            Place.objects.get,\n            pk=ident)\n        self.assertRaises(\n            ItalianRestaurant.DoesNotExist,\n            ItalianRestaurant.objects.get,\n            pk=ident)\n\n    def test_issue_6755(self):\n        \"\"\"\n        Regression test for #6755\n        \"\"\"\n        r = Restaurant(serves_pizza=False)\n        r.save()\n        self.assertEqual(r.id, r.place_ptr_id)\n        orig_id = r.id\n        r = Restaurant(place_ptr_id=orig_id, serves_pizza=True)\n        r.save()\n        self.assertEqual(r.id, orig_id)\n        self.assertEqual(r.id, r.place_ptr_id)\n\n    def test_issue_7488(self):\n        # Regression test for #7488. This looks a little crazy, but it's the\n        # equivalent of what the admin interface has to do for the edit-inline\n        # case.\n        suppliers = Supplier.objects.filter(\n            restaurant=Restaurant(name='xx', address='yy'))\n        suppliers = list(suppliers)\n        self.assertEqual(suppliers, [])\n\n    def test_issue_11764(self):\n        \"\"\"\n        Regression test for #11764\n        \"\"\"\n        wholesalers = list(Wholesaler.objects.all().select_related())\n        self.assertEqual(wholesalers, [])\n\n    def test_issue_7853(self):\n        \"\"\"\n        Regression test for #7853\n        If the parent class has a self-referential link, make sure that any\n        updates to that link via the child update the right table.\n        \"\"\"\n        obj = SelfRefChild.objects.create(child_data=37, parent_data=42)\n        obj.delete()\n\n    def test_get_next_previous_by_date(self):\n        \"\"\"\n        Regression tests for #8076\n        get_(next/previous)_by_date should work\n        \"\"\"\n        c1 = ArticleWithAuthor(\n            headline='ArticleWithAuthor 1',\n            author=\"Person 1\",\n            pub_date=datetime.datetime(2005, 8, 1, 3, 0))\n        c1.save()\n        c2 = ArticleWithAuthor(\n            headline='ArticleWithAuthor 2',\n            author=\"Person 2\",\n            pub_date=datetime.datetime(2005, 8, 1, 10, 0))\n        c2.save()\n        c3 = ArticleWithAuthor(\n            headline='ArticleWithAuthor 3',\n            author=\"Person 3\",\n            pub_date=datetime.datetime(2005, 8, 2))\n        c3.save()\n\n        self.assertEqual(c1.get_next_by_pub_date(), c2)\n        self.assertEqual(c2.get_next_by_pub_date(), c3)\n        self.assertRaises(\n            ArticleWithAuthor.DoesNotExist,\n            c3.get_next_by_pub_date)\n        self.assertEqual(c3.get_previous_by_pub_date(), c2)\n        self.assertEqual(c2.get_previous_by_pub_date(), c1)\n        self.assertRaises(\n            ArticleWithAuthor.DoesNotExist,\n            c1.get_previous_by_pub_date)\n\n    def test_inherited_fields(self):\n        \"\"\"\n        Regression test for #8825 and #9390\n        Make sure all inherited fields (esp. m2m fields, in this case) appear\n        on the child class.\n        \"\"\"\n        m2mchildren = list(M2MChild.objects.filter(articles__isnull=False))\n        self.assertEqual(m2mchildren, [])\n\n        # Ordering should not include any database column more than once (this\n        # is most likely to ocurr naturally with model inheritance, so we\n        # check it here). Regression test for #9390. This necessarily pokes at\n        # the SQL string for the query, since the duplicate problems are only\n        # apparent at that late stage.\n        qs = ArticleWithAuthor.objects.order_by('pub_date', 'pk')\n        sql = qs.query.get_compiler(qs.db).as_sql()[0]\n        fragment = sql[sql.find('ORDER BY'):]\n        pos = fragment.find('pub_date')\n        self.assertEqual(fragment.find('pub_date', pos + 1), -1)\n\n    def test_queryset_update_on_parent_model(self):\n        \"\"\"\n        Regression test for #10362\n        It is possible to call update() and only change a field in\n        an ancestor model.\n        \"\"\"\n        article = ArticleWithAuthor.objects.create(\n            author=\"fred\",\n            headline=\"Hey there!\",\n            pub_date=datetime.datetime(2009, 3, 1, 8, 0, 0))\n        update = ArticleWithAuthor.objects.filter(\n            author=\"fred\").update(headline=\"Oh, no!\")\n        self.assertEqual(update, 1)\n        update = ArticleWithAuthor.objects.filter(\n            pk=article.pk).update(headline=\"Oh, no!\")\n        self.assertEqual(update, 1)\n\n        derivedm1 = DerivedM.objects.create(\n            customPK=44,\n            base_name=\"b1\",\n            derived_name=\"d1\")\n        self.assertEqual(derivedm1.customPK, 44)\n        self.assertEqual(derivedm1.base_name, 'b1')\n        self.assertEqual(derivedm1.derived_name, 'd1')\n        derivedms = list(DerivedM.objects.all())\n        self.assertEqual(derivedms, [derivedm1])\n\n    def test_use_explicit_o2o_to_parent_as_pk(self):\n        \"\"\"\n        Regression tests for #10406\n        If there's a one-to-one link between a child model and the parent and\n        no explicit pk declared, we can use the one-to-one link as the pk on\n        the child.\n        \"\"\"\n        self.assertEqual(ParkingLot2._meta.pk.name, \"parent\")\n\n        # However, the connector from child to parent need not be the pk on\n        # the child at all.\n        self.assertEqual(ParkingLot3._meta.pk.name, \"primary_key\")\n        # the child->parent link\n        self.assertEqual(\n            ParkingLot3._meta.get_ancestor_link(Place).name,\n            \"parent\")\n\n    def test_all_fields_from_abstract_base_class(self):\n        \"\"\"\n        Regression tests for #7588\n        \"\"\"\n        # All fields from an ABC, including those inherited non-abstractly\n        # should be available on child classes (#7588). Creating this instance\n        # should work without error.\n        QualityControl.objects.create(\n            headline=\"Problems in Django\",\n            pub_date=datetime.datetime.now(),\n            quality=10,\n            assignee=\"adrian\")\n\n    def test_abstract_base_class_m2m_relation_inheritance(self):\n        # Check that many-to-many relations defined on an abstract base class\n        # are correctly inherited (and created) on the child class.\n        p1 = Person.objects.create(name='Alice')\n        p2 = Person.objects.create(name='Bob')\n        p3 = Person.objects.create(name='Carol')\n        p4 = Person.objects.create(name='Dave')\n\n        birthday = BirthdayParty.objects.create(\n            name='Birthday party for Alice')\n        birthday.attendees = [p1, p3]\n\n        bachelor = BachelorParty.objects.create(name='Bachelor party for Bob')\n        bachelor.attendees = [p2, p4]\n\n        parties = list(p1.birthdayparty_set.all())\n        self.assertEqual(parties, [birthday])\n\n        parties = list(p1.bachelorparty_set.all())\n        self.assertEqual(parties, [])\n\n        parties = list(p2.bachelorparty_set.all())\n        self.assertEqual(parties, [bachelor])\n\n        # Check that a subclass of a subclass of an abstract model doesn't get\n        # it's own accessor.\n        self.assertFalse(hasattr(p2, 'messybachelorparty_set'))\n\n        # ... but it does inherit the m2m from it's parent\n        messy = MessyBachelorParty.objects.create(\n            name='Bachelor party for Dave')\n        messy.attendees = [p4]\n        messy_parent = messy.bachelorparty_ptr\n\n        parties = list(p4.bachelorparty_set.all())\n        self.assertEqual(parties, [bachelor, messy_parent])\n\n    def test_abstract_verbose_name_plural_inheritance(self):\n        \"\"\"\n        verbose_name_plural correctly inherited from ABC if inheritance chain\n        includes an abstract model.\n        \"\"\"\n        # Regression test for #11369: verbose_name_plural should be inherited\n        # from an ABC even when there are one or more intermediate\n        # abstract models in the inheritance chain, for consistency with\n        # verbose_name.\n        self.assertEqual(\n                InternalCertificationAudit._meta.verbose_name_plural,\n                'Audits'\n        )\n\n    def test_inherited_nullable_exclude(self):\n        obj = SelfRefChild.objects.create(child_data=37, parent_data=42)\n        self.assertQuerysetEqual(\n            SelfRefParent.objects.exclude(self_data=72), [\n                obj.pk\n            ],\n            attrgetter(\"pk\")\n        )\n        self.assertQuerysetEqual(\n            SelfRefChild.objects.exclude(self_data=72), [\n                obj.pk\n            ],\n            attrgetter(\"pk\")\n        )\n\n    def test_concrete_abstract_concrete_pk(self):\n        \"\"\"\n        Primary key set correctly with concrete->abstract->concrete inheritance.\n        \"\"\"\n        # Regression test for #13987: Primary key is incorrectly determined\n        # when more than one model has a concrete->abstract->concrete\n        # inheritance hierarchy.\n        self.assertEqual(\n            len([field for field in BusStation._meta.local_fields\n                       if field.primary_key]),\n            1\n        )\n        self.assertEqual(\n            len([field for field in TrainStation._meta.local_fields\n                       if field.primary_key]),\n            1\n        )\n        self.assertIs(BusStation._meta.pk.model, BusStation)\n        self.assertIs(TrainStation._meta.pk.model, TrainStation)\n\n    def test_inherited_unique_field_with_form(self):\n        \"\"\"\n        Test that a model which has different primary key for the parent model\n        passes unique field checking correctly. Refs #17615.\n        \"\"\"\n        class ProfileForm(forms.ModelForm):\n            class Meta:\n                model = Profile\n        User.objects.create(username=\"user_only\")\n        p = Profile.objects.create(username=\"user_with_profile\")\n        form = ProfileForm({'username': \"user_with_profile\", 'extra': \"hello\"},\n                           instance=p)\n        self.assertTrue(form.is_valid())\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/model_inheritance_select_related/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/model_inheritance_select_related/models.py",
    "content": "\"\"\"\nRegression tests for the interaction between model inheritance and\nselect_related().\n\"\"\"\nfrom __future__ import unicode_literals\n\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n@python_2_unicode_compatible\nclass Place(models.Model):\n    name = models.CharField(max_length=50)\n\n    class Meta:\n        ordering = ('name',)\n\n    def __str__(self):\n        return \"%s the place\" % self.name\n\n@python_2_unicode_compatible\nclass Restaurant(Place):\n    serves_sushi = models.BooleanField()\n    serves_steak = models.BooleanField()\n\n    def __str__(self):\n        return \"%s the restaurant\" % self.name\n\n@python_2_unicode_compatible\nclass Person(models.Model):\n    name = models.CharField(max_length=50)\n    favorite_restaurant = models.ForeignKey(Restaurant)\n\n    def __str__(self):\n        return self.name\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/model_inheritance_select_related/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom operator import attrgetter\n\nfrom django.test import TestCase\n\nfrom .models import Restaurant, Person\n\n\nclass ModelInheritanceSelectRelatedTests(TestCase):\n    def test_inherited_select_related(self):\n        # Regression test for #7246\n        r1 = Restaurant.objects.create(\n            name=\"Nobu\", serves_sushi=True, serves_steak=False\n        )\n        r2 = Restaurant.objects.create(\n            name=\"Craft\", serves_sushi=False, serves_steak=True\n        )\n        p1 = Person.objects.create(name=\"John\", favorite_restaurant=r1)\n        p2 = Person.objects.create(name=\"Jane\", favorite_restaurant=r2)\n\n        self.assertQuerysetEqual(\n            Person.objects.order_by(\"name\").select_related(), [\n                \"Jane\",\n                \"John\",\n            ],\n            attrgetter(\"name\")\n        )\n\n        jane = Person.objects.order_by(\"name\").select_related(\"favorite_restaurant\")[0]\n        self.assertEqual(jane.favorite_restaurant.name, \"Craft\")\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/model_permalink/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/model_permalink/models.py",
    "content": "from django.db import models\n\n\ndef set_attr(name, value):\n    def wrapper(function):\n        setattr(function, name, value)\n        return function\n    return wrapper\n\n\nclass Guitarist(models.Model):\n    name = models.CharField(max_length=50)\n    slug = models.CharField(max_length=50)\n\n    @models.permalink\n    def url(self):\n        \"Returns the URL for this guitarist.\"\n        return ('guitarist_detail', [self.slug])\n\n    @models.permalink\n    @set_attr('attribute', 'value')\n    def url_with_attribute(self):\n        \"Returns the URL for this guitarist and holds an attribute\"\n        return ('guitarist_detail', [self.slug])\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/model_permalink/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom django.test import TestCase\n\nfrom .models import Guitarist\n\n\nclass PermalinkTests(TestCase):\n    urls = 'regressiontests.model_permalink.urls'\n\n    def test_permalink(self):\n        g = Guitarist(name='Adrien Moignard', slug='adrienmoignard')\n        self.assertEqual(g.url(), '/guitarists/adrienmoignard/')\n\n    def test_wrapped_docstring(self):\n        \"Methods using the @permalink decorator retain their docstring.\"\n        g = Guitarist(name='Adrien Moignard', slug='adrienmoignard')\n        self.assertEqual(g.url.__doc__, \"Returns the URL for this guitarist.\")\n\n    def test_wrapped_attribute(self):\n        \"\"\"\n        Methods using the @permalink decorator can have attached attributes\n        from other decorators\n        \"\"\"\n        g = Guitarist(name='Adrien Moignard', slug='adrienmoignard')\n        self.assertTrue(hasattr(g.url_with_attribute, 'attribute'))\n        self.assertEqual(g.url_with_attribute.attribute, 'value')\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/model_permalink/urls.py",
    "content": "from django.conf.urls import patterns, url\n\nurlpatterns = patterns('',\n    url(r'^guitarists/(\\w{1,50})/$', 'unimplemented_view_placeholder', name='guitarist_detail'),\n)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/model_regress/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/model_regress/models.py",
    "content": "# coding: utf-8\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\nCHOICES = (\n    (1, 'first'),\n    (2, 'second'),\n)\n\n\n@python_2_unicode_compatible\nclass Article(models.Model):\n    headline = models.CharField(max_length=100, default='Default headline')\n    pub_date = models.DateTimeField()\n    status = models.IntegerField(blank=True, null=True, choices=CHOICES)\n    misc_data = models.CharField(max_length=100, blank=True)\n    article_text = models.TextField()\n\n    class Meta:\n        ordering = ('pub_date', 'headline')\n        # A utf-8 verbose name (Ångström's Articles) to test they are valid.\n        verbose_name = \"\\xc3\\x85ngstr\\xc3\\xb6m's Articles\"\n\n    def __str__(self):\n        return self.headline\n\n\nclass Movie(models.Model):\n    #5218: Test models with non-default primary keys / AutoFields\n    movie_id = models.AutoField(primary_key=True)\n    name = models.CharField(max_length=60)\n\n\nclass Party(models.Model):\n    when = models.DateField(null=True)\n\n\nclass Event(models.Model):\n    when = models.DateTimeField()\n\n\n@python_2_unicode_compatible\nclass Department(models.Model):\n    id = models.PositiveIntegerField(primary_key=True)\n    name = models.CharField(max_length=200)\n\n    def __str__(self):\n        return self.name\n\n\n@python_2_unicode_compatible\nclass Worker(models.Model):\n    department = models.ForeignKey(Department)\n    name = models.CharField(max_length=200)\n\n    def __str__(self):\n        return self.name\n\n\n@python_2_unicode_compatible\nclass BrokenUnicodeMethod(models.Model):\n    name = models.CharField(max_length=7)\n\n    def __str__(self):\n        # Intentionally broken (invalid start byte in byte string).\n        return b'Name\\xff: %s'.decode() % self.name\n\n\nclass NonAutoPK(models.Model):\n    name = models.CharField(max_length=10, primary_key=True)\n\n\n#18432: Chained foreign keys with to_field produce incorrect query\nclass Model1(models.Model):\n    pkey = models.IntegerField(unique=True, db_index=True)\n\n\nclass Model2(models.Model):\n    model1 = models.ForeignKey(Model1, unique=True, to_field='pkey')\n\n\nclass Model3(models.Model):\n    model2 = models.ForeignKey(Model2, unique=True, to_field='model1')\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/model_regress/tests.py",
    "content": "from __future__ import absolute_import, unicode_literals\n\nimport datetime\nfrom operator import attrgetter\n\nfrom django.core.exceptions import ValidationError\nfrom django.test import TestCase, skipUnlessDBFeature\nfrom django.utils import six\nfrom django.utils import tzinfo\n\nfrom .models import (Worker, Article, Party, Event, Department,\n    BrokenUnicodeMethod, NonAutoPK, Model1, Model2, Model3)\n\n\nclass ModelTests(TestCase):\n    # The bug is that the following queries would raise:\n    # \"TypeError: Related Field has invalid lookup: gte\"\n    def test_related_gte_lookup(self):\n        \"\"\"\n        Regression test for #10153: foreign key __gte lookups.\n        \"\"\"\n        Worker.objects.filter(department__gte=0)\n\n    def test_related_lte_lookup(self):\n        \"\"\"\n        Regression test for #10153: foreign key __lte lookups.\n        \"\"\"\n        Worker.objects.filter(department__lte=0)\n\n    def test_empty_choice(self):\n        # NOTE: Part of the regression test here is merely parsing the model\n        # declaration. The verbose_name, in particular, did not always work.\n        a = Article.objects.create(\n            headline=\"Look at me!\", pub_date=datetime.datetime.now()\n        )\n        # An empty choice field should return None for the display name.\n        self.assertIs(a.get_status_display(), None)\n\n        # Empty strings should be returned as Unicode\n        a = Article.objects.get(pk=a.pk)\n        self.assertEqual(a.misc_data, '')\n        self.assertIs(type(a.misc_data), six.text_type)\n\n    def test_long_textfield(self):\n        # TextFields can hold more than 4000 characters (this was broken in\n        # Oracle).\n        a = Article.objects.create(\n            headline=\"Really, really big\",\n            pub_date=datetime.datetime.now(),\n            article_text=\"ABCDE\" * 1000\n        )\n        a = Article.objects.get(pk=a.pk)\n        self.assertEqual(len(a.article_text), 5000)\n\n    def test_date_lookup(self):\n        # Regression test for #659\n        Party.objects.create(when=datetime.datetime(1999, 12, 31))\n        Party.objects.create(when=datetime.datetime(1998, 12, 31))\n        Party.objects.create(when=datetime.datetime(1999, 1, 1))\n        self.assertQuerysetEqual(\n            Party.objects.filter(when__month=2), []\n        )\n        self.assertQuerysetEqual(\n            Party.objects.filter(when__month=1), [\n                datetime.date(1999, 1, 1)\n            ],\n            attrgetter(\"when\")\n        )\n        self.assertQuerysetEqual(\n            Party.objects.filter(when__month=12), [\n                datetime.date(1999, 12, 31),\n                datetime.date(1998, 12, 31),\n            ],\n            attrgetter(\"when\")\n        )\n        self.assertQuerysetEqual(\n            Party.objects.filter(when__year=1998), [\n                datetime.date(1998, 12, 31),\n            ],\n            attrgetter(\"when\")\n        )\n        # Regression test for #8510\n        self.assertQuerysetEqual(\n            Party.objects.filter(when__day=\"31\"), [\n                datetime.date(1999, 12, 31),\n                datetime.date(1998, 12, 31),\n            ],\n            attrgetter(\"when\")\n        )\n        self.assertQuerysetEqual(\n            Party.objects.filter(when__month=\"12\"), [\n                datetime.date(1999, 12, 31),\n                datetime.date(1998, 12, 31),\n            ],\n            attrgetter(\"when\")\n        )\n        self.assertQuerysetEqual(\n            Party.objects.filter(when__year=\"1998\"), [\n                datetime.date(1998, 12, 31),\n            ],\n            attrgetter(\"when\")\n        )\n\n    def test_date_filter_null(self):\n        # Date filtering was failing with NULL date values in SQLite\n        # (regression test for #3501, amongst other things).\n        Party.objects.create(when=datetime.datetime(1999, 1, 1))\n        Party.objects.create()\n        p = Party.objects.filter(when__month=1)[0]\n        self.assertEqual(p.when, datetime.date(1999, 1, 1))\n        self.assertQuerysetEqual(\n            Party.objects.filter(pk=p.pk).dates(\"when\", \"month\"), [\n                1\n            ],\n            attrgetter(\"month\")\n        )\n\n    def test_get_next_prev_by_field(self):\n        # Check that get_next_by_FIELD and get_previous_by_FIELD don't crash\n        # when we have usecs values stored on the database\n        #\n        # It crashed after the Field.get_db_prep_* refactor, because on most\n        # backends DateTimeFields supports usecs, but DateTimeField.to_python\n        # didn't recognize them. (Note that\n        # Model._get_next_or_previous_by_FIELD coerces values to strings)\n        Event.objects.create(when=datetime.datetime(2000, 1, 1, 16, 0, 0))\n        Event.objects.create(when=datetime.datetime(2000, 1, 1, 6, 1, 1))\n        Event.objects.create(when=datetime.datetime(2000, 1, 1, 13, 1, 1))\n        e = Event.objects.create(when=datetime.datetime(2000, 1, 1, 12, 0, 20, 24))\n\n        self.assertEqual(\n            e.get_next_by_when().when, datetime.datetime(2000, 1, 1, 13, 1, 1)\n        )\n        self.assertEqual(\n            e.get_previous_by_when().when, datetime.datetime(2000, 1, 1, 6, 1, 1)\n        )\n\n    def test_primary_key_foreign_key_types(self):\n        # Check Department and Worker (non-default PK type)\n        d = Department.objects.create(id=10, name=\"IT\")\n        w = Worker.objects.create(department=d, name=\"Full-time\")\n        self.assertEqual(six.text_type(w), \"Full-time\")\n\n    def test_broken_unicode(self):\n        # Models with broken unicode methods should still have a printable repr\n        b = BrokenUnicodeMethod.objects.create(name=\"Jerry\")\n        self.assertEqual(repr(b), \"<BrokenUnicodeMethod: [Bad Unicode data]>\")\n\n    @skipUnlessDBFeature(\"supports_timezones\")\n    def test_timezones(self):\n        # Saving an updating with timezone-aware datetime Python objects.\n        # Regression test for #10443.\n        # The idea is that all these creations and saving should work without\n        # crashing. It's not rocket science.\n        dt1 = datetime.datetime(2008, 8, 31, 16, 20, tzinfo=tzinfo.FixedOffset(600))\n        dt2 = datetime.datetime(2008, 8, 31, 17, 20, tzinfo=tzinfo.FixedOffset(600))\n        obj = Article.objects.create(\n            headline=\"A headline\", pub_date=dt1, article_text=\"foo\"\n        )\n        obj.pub_date = dt2\n        obj.save()\n        self.assertEqual(\n            Article.objects.filter(headline=\"A headline\").update(pub_date=dt1),\n            1\n        )\n\n    def test_chained_fks(self):\n        \"\"\"\n        Regression for #18432: Chained foreign keys with to_field produce incorrect query\n        \"\"\"\n\n        m1 = Model1.objects.create(pkey=1000)\n        m2 = Model2.objects.create(model1=m1)\n        m3 = Model3.objects.create(model2=m2)\n\n        # this is the actual test for #18432\n        m3 = Model3.objects.get(model2=1000)\n        m3.model2\n\n\nclass ModelValidationTest(TestCase):\n    def test_pk_validation(self):\n        one = NonAutoPK.objects.create(name=\"one\")\n        again = NonAutoPK(name=\"one\")\n        self.assertRaises(ValidationError, again.validate_unique)\n\n\nclass EvaluateMethodTest(TestCase):\n    \"\"\"\n    Regression test for #13640: cannot filter by objects with 'evaluate' attr\n    \"\"\"\n\n    def test_model_with_evaluate_method(self):\n        \"\"\"\n        Ensures that you can filter by objects that have an 'evaluate' attr\n        \"\"\"\n        dept = Department.objects.create(pk=1, name='abc')\n        dept.evaluate = 'abc'\n        Worker.objects.filter(department=dept)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/modeladmin/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/modeladmin/models.py",
    "content": "# coding: utf-8\nfrom django.contrib.auth.models import User\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n@python_2_unicode_compatible\nclass Band(models.Model):\n    name = models.CharField(max_length=100)\n    bio = models.TextField()\n    sign_date = models.DateField()\n\n    class Meta:\n        ordering = ('name',)\n\n    def __str__(self):\n        return self.name\n\nclass Concert(models.Model):\n    main_band = models.ForeignKey(Band, related_name='main_concerts')\n    opening_band = models.ForeignKey(Band, related_name='opening_concerts',\n        blank=True)\n    day = models.CharField(max_length=3, choices=((1, 'Fri'), (2, 'Sat')))\n    transport = models.CharField(max_length=100, choices=(\n        (1, 'Plane'),\n        (2, 'Train'),\n        (3, 'Bus')\n    ), blank=True)\n\nclass ValidationTestModel(models.Model):\n    name = models.CharField(max_length=100)\n    slug = models.SlugField()\n    users = models.ManyToManyField(User)\n    state = models.CharField(max_length=2, choices=((\"CO\", \"Colorado\"), (\"WA\", \"Washington\")))\n    is_active = models.BooleanField()\n    pub_date = models.DateTimeField()\n    band = models.ForeignKey(Band)\n    no = models.IntegerField(verbose_name=\"Number\", blank=True, null=True) # This field is intentionally 2 characters long. See #16080.\n\n    def decade_published_in(self):\n        return self.pub_date.strftime('%Y')[:3] + \"0's\"\n\nclass ValidationTestInlineModel(models.Model):\n    parent = models.ForeignKey(ValidationTestModel)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/modeladmin/tests.py",
    "content": "from __future__ import absolute_import, unicode_literals\n\nfrom datetime import date\n\nfrom django import forms\nfrom django.conf import settings\nfrom django.contrib.admin.options import (ModelAdmin, TabularInline,\n     HORIZONTAL, VERTICAL)\nfrom django.contrib.admin.sites import AdminSite\nfrom django.contrib.admin.validation import validate\nfrom django.contrib.admin.widgets import AdminDateWidget, AdminRadioSelect\nfrom django.contrib.admin import (SimpleListFilter,\n     BooleanFieldListFilter)\nfrom django.core.exceptions import ImproperlyConfigured\nfrom django.forms.models import BaseModelFormSet\nfrom django.forms.widgets import Select\nfrom django.test import TestCase\nfrom django.test.utils import str_prefix\nfrom django.utils import unittest, six\n\nfrom .models import Band, Concert, ValidationTestModel, ValidationTestInlineModel\n\n\nclass MockRequest(object):\n    pass\n\n\nclass MockSuperUser(object):\n    def has_perm(self, perm):\n        return True\n\nrequest = MockRequest()\nrequest.user = MockSuperUser()\n\n\nclass ModelAdminTests(TestCase):\n\n    def setUp(self):\n        self.band = Band.objects.create(\n            name='The Doors',\n            bio='',\n            sign_date=date(1965, 1, 1),\n        )\n        self.site = AdminSite()\n\n    # form/fields/fieldsets interaction ##############################\n\n    def test_default_fields(self):\n        ma = ModelAdmin(Band, self.site)\n\n        self.assertEqual(list(ma.get_form(request).base_fields),\n            ['name', 'bio', 'sign_date'])\n\n    def test_default_fieldsets(self):\n        # fieldsets_add and fieldsets_change should return a special data structure that\n        # is used in the templates. They should generate the \"right thing\" whether we\n        # have specified a custom form, the fields argument, or nothing at all.\n        #\n        # Here's the default case. There are no custom form_add/form_change methods,\n        # no fields argument, and no fieldsets argument.\n        ma = ModelAdmin(Band, self.site)\n        self.assertEqual(ma.get_fieldsets(request),\n            [(None, {'fields': ['name', 'bio', 'sign_date']})])\n\n        self.assertEqual(ma.get_fieldsets(request, self.band),\n            [(None, {'fields': ['name', 'bio', 'sign_date']})])\n\n    def test_field_arguments(self):\n        # If we specify the fields argument, fieldsets_add and fielsets_change should\n        # just stick the fields into a formsets structure and return it.\n        class BandAdmin(ModelAdmin):\n             fields = ['name']\n\n        ma = BandAdmin(Band, self.site)\n\n        self.assertEqual(ma.get_fieldsets(request),\n            [(None, {'fields': ['name']})])\n\n        self.assertEqual(ma.get_fieldsets(request, self.band),\n            [(None, {'fields': ['name']})])\n\n    def test_field_arguments_restricted_on_form(self):\n        # If we specify fields or fieldsets, it should exclude fields on the Form class\n        # to the fields specified. This may cause errors to be raised in the db layer if\n        # required model fields arent in fields/fieldsets, but that's preferable to\n        # ghost errors where you have a field in your Form class that isn't being\n        # displayed because you forgot to add it to fields/fieldsets\n\n        # Using `fields`.\n        class BandAdmin(ModelAdmin):\n            fields = ['name']\n\n        ma = BandAdmin(Band, self.site)\n        self.assertEqual(list(ma.get_form(request).base_fields), ['name'])\n        self.assertEqual(list(ma.get_form(request, self.band).base_fields),\n            ['name'])\n\n        # Using `fieldsets`.\n        class BandAdmin(ModelAdmin):\n            fieldsets = [(None, {'fields': ['name']})]\n\n        ma = BandAdmin(Band, self.site)\n        self.assertEqual(list(ma.get_form(request).base_fields), ['name'])\n        self.assertEqual(list(ma.get_form(request, self.band).base_fields),\n            ['name'])\n\n        # Using `exclude`.\n        class BandAdmin(ModelAdmin):\n            exclude = ['bio']\n\n        ma = BandAdmin(Band, self.site)\n        self.assertEqual(list(ma.get_form(request).base_fields),\n            ['name', 'sign_date'])\n\n        # You can also pass a tuple to `exclude`.\n        class BandAdmin(ModelAdmin):\n            exclude = ('bio',)\n\n        ma = BandAdmin(Band, self.site)\n        self.assertEqual(list(ma.get_form(request).base_fields),\n            ['name', 'sign_date'])\n\n        # Using `fields` and `exclude`.\n        class BandAdmin(ModelAdmin):\n            fields = ['name', 'bio']\n            exclude = ['bio']\n\n        ma = BandAdmin(Band, self.site)\n        self.assertEqual(list(ma.get_form(request).base_fields),\n            ['name'])\n\n    def test_custom_form_meta_exclude_with_readonly(self):\n        \"\"\"\n        Ensure that the custom ModelForm's `Meta.exclude` is respected when\n        used in conjunction with `ModelAdmin.readonly_fields` and when no\n        `ModelAdmin.exclude` is defined.\n        Refs #14496.\n        \"\"\"\n        # First, with `ModelAdmin` -----------------------\n\n        class AdminBandForm(forms.ModelForm):\n\n            class Meta:\n                model = Band\n                exclude = ['bio']\n\n        class BandAdmin(ModelAdmin):\n            readonly_fields = ['name']\n            form = AdminBandForm\n\n        ma = BandAdmin(Band, self.site)\n        self.assertEqual(list(ma.get_form(request).base_fields),\n            ['sign_date'])\n\n        # Then, with `InlineModelAdmin`  -----------------\n\n        class AdminConcertForm(forms.ModelForm):\n\n            class Meta:\n                model = Concert\n                exclude = ['day']\n\n        class ConcertInline(TabularInline):\n            readonly_fields = ['transport']\n            form = AdminConcertForm\n            fk_name = 'main_band'\n            model = Concert\n\n        class BandAdmin(ModelAdmin):\n            inlines = [\n                ConcertInline\n            ]\n\n        ma = BandAdmin(Band, self.site)\n        self.assertEqual(\n            list(list(ma.get_formsets(request))[0]().forms[0].fields),\n            ['main_band', 'opening_band', 'id', 'DELETE'])\n\n    def test_custom_form_meta_exclude(self):\n        \"\"\"\n        Ensure that the custom ModelForm's `Meta.exclude` is overridden if\n        `ModelAdmin.exclude` or `InlineModelAdmin.exclude` are defined.\n        Refs #14496.\n        \"\"\"\n        # First, with `ModelAdmin` -----------------------\n\n        class AdminBandForm(forms.ModelForm):\n\n            class Meta:\n                model = Band\n                exclude = ['bio']\n\n        class BandAdmin(ModelAdmin):\n            exclude = ['name']\n            form = AdminBandForm\n\n        ma = BandAdmin(Band, self.site)\n        self.assertEqual(list(ma.get_form(request).base_fields),\n            ['bio', 'sign_date'])\n\n        # Then, with `InlineModelAdmin`  -----------------\n\n        class AdminConcertForm(forms.ModelForm):\n\n            class Meta:\n                model = Concert\n                exclude = ['day']\n\n        class ConcertInline(TabularInline):\n            exclude = ['transport']\n            form = AdminConcertForm\n            fk_name = 'main_band'\n            model = Concert\n\n        class BandAdmin(ModelAdmin):\n            inlines = [\n                ConcertInline\n            ]\n\n        ma = BandAdmin(Band, self.site)\n        self.assertEqual(\n            list(list(ma.get_formsets(request))[0]().forms[0].fields),\n            ['main_band', 'opening_band', 'day', 'id', 'DELETE'])\n\n    def test_custom_form_validation(self):\n        # If we specify a form, it should use it allowing custom validation to work\n        # properly. This won't, however, break any of the admin widgets or media.\n\n        class AdminBandForm(forms.ModelForm):\n            delete = forms.BooleanField()\n\n            class Meta:\n                model = Band\n\n        class BandAdmin(ModelAdmin):\n            form = AdminBandForm\n\n        ma = BandAdmin(Band, self.site)\n        self.assertEqual(list(ma.get_form(request).base_fields),\n            ['name', 'bio', 'sign_date', 'delete'])\n\n        self.assertEqual(\n            type(ma.get_form(request).base_fields['sign_date'].widget),\n            AdminDateWidget)\n\n    def test_form_exclude_kwarg_override(self):\n        \"\"\"\n        Ensure that the `exclude` kwarg passed to `ModelAdmin.get_form()`\n        overrides all other declarations. Refs #8999.\n        \"\"\"\n\n        class AdminBandForm(forms.ModelForm):\n\n            class Meta:\n                model = Band\n                exclude = ['name']\n\n        class BandAdmin(ModelAdmin):\n            exclude = ['sign_date']\n            form = AdminBandForm\n\n            def get_form(self, request, obj=None, **kwargs):\n                kwargs['exclude'] = ['bio']\n                return super(BandAdmin, self).get_form(request, obj, **kwargs)\n\n        ma = BandAdmin(Band, self.site)\n        self.assertEqual(list(ma.get_form(request).base_fields),\n            ['name', 'sign_date'])\n\n    def test_formset_exclude_kwarg_override(self):\n        \"\"\"\n        Ensure that the `exclude` kwarg passed to `InlineModelAdmin.get_formset()`\n        overrides all other declarations. Refs #8999.\n        \"\"\"\n\n        class AdminConcertForm(forms.ModelForm):\n\n            class Meta:\n                model = Concert\n                exclude = ['day']\n\n        class ConcertInline(TabularInline):\n            exclude = ['transport']\n            form = AdminConcertForm\n            fk_name = 'main_band'\n            model = Concert\n\n            def get_formset(self, request, obj=None, **kwargs):\n                kwargs['exclude'] = ['opening_band']\n                return super(ConcertInline, self).get_formset(request, obj, **kwargs)\n\n        class BandAdmin(ModelAdmin):\n            inlines = [\n                ConcertInline\n            ]\n\n        ma = BandAdmin(Band, self.site)\n        self.assertEqual(\n            list(list(ma.get_formsets(request))[0]().forms[0].fields),\n            ['main_band', 'day', 'transport', 'id', 'DELETE'])\n\n    def test_queryset_override(self):\n        # If we need to override the queryset of a ModelChoiceField in our custom form\n        # make sure that RelatedFieldWidgetWrapper doesn't mess that up.\n\n        band2 = Band(name='The Beatles', bio='', sign_date=date(1962, 1, 1))\n        band2.save()\n\n        class ConcertAdmin(ModelAdmin):\n            pass\n        ma = ConcertAdmin(Concert, self.site)\n        form = ma.get_form(request)()\n\n        self.assertHTMLEqual(str(form[\"main_band\"]),\n            '<select name=\"main_band\" id=\"id_main_band\">\\n'\n            '<option value=\"\" selected=\"selected\">---------</option>\\n'\n            '<option value=\"%d\">The Beatles</option>\\n'\n            '<option value=\"%d\">The Doors</option>\\n'\n            '</select>' % (band2.id, self.band.id))\n\n        class AdminConcertForm(forms.ModelForm):\n            class Meta:\n                model = Concert\n\n            def __init__(self, *args, **kwargs):\n                super(AdminConcertForm, self).__init__(*args, **kwargs)\n                self.fields[\"main_band\"].queryset = Band.objects.filter(name='The Doors')\n\n        class ConcertAdmin(ModelAdmin):\n            form = AdminConcertForm\n\n        ma = ConcertAdmin(Concert, self.site)\n        form = ma.get_form(request)()\n\n        self.assertHTMLEqual(str(form[\"main_band\"]),\n            '<select name=\"main_band\" id=\"id_main_band\">\\n'\n            '<option value=\"\" selected=\"selected\">---------</option>\\n'\n            '<option value=\"%d\">The Doors</option>\\n'\n            '</select>' % self.band.id)\n\n    def test_regression_for_ticket_15820(self):\n        \"\"\"\n        Ensure that `obj` is passed from `InlineModelAdmin.get_fieldsets()` to\n        `InlineModelAdmin.get_formset()`.\n        \"\"\"\n        class CustomConcertForm(forms.ModelForm):\n\n            class Meta:\n                model = Concert\n                fields = ['day']\n\n        class ConcertInline(TabularInline):\n            model = Concert\n            fk_name = 'main_band'\n\n            def get_formset(self, request, obj=None, **kwargs):\n                if obj:\n                    kwargs['form'] = CustomConcertForm\n                return super(ConcertInline, self).get_formset(request, obj, **kwargs)\n\n        class BandAdmin(ModelAdmin):\n            inlines = [\n                ConcertInline\n            ]\n\n        concert = Concert.objects.create(main_band=self.band, opening_band=self.band, day=1)\n        ma = BandAdmin(Band, self.site)\n        inline_instances = ma.get_inline_instances(request)\n        fieldsets = list(inline_instances[0].get_fieldsets(request))\n        self.assertEqual(fieldsets[0][1]['fields'], ['main_band', 'opening_band', 'day', 'transport'])\n        fieldsets = list(inline_instances[0].get_fieldsets(request, inline_instances[0].model))\n        self.assertEqual(fieldsets[0][1]['fields'], ['day'])\n\n    # radio_fields behavior ###########################################\n\n    def test_default_foreign_key_widget(self):\n        # First, without any radio_fields specified, the widgets for ForeignKey\n        # and fields with choices specified ought to be a basic Select widget.\n        # ForeignKey widgets in the admin are wrapped with RelatedFieldWidgetWrapper so\n        # they need to be handled properly when type checking. For Select fields, all of\n        # the choices lists have a first entry of dashes.\n\n        cma = ModelAdmin(Concert, self.site)\n        cmafa = cma.get_form(request)\n\n        self.assertEqual(type(cmafa.base_fields['main_band'].widget.widget),\n            Select)\n        self.assertEqual(\n            list(cmafa.base_fields['main_band'].widget.choices),\n            [('', '---------'), (self.band.id, 'The Doors')])\n\n        self.assertEqual(\n            type(cmafa.base_fields['opening_band'].widget.widget), Select)\n        self.assertEqual(\n            list(cmafa.base_fields['opening_band'].widget.choices),\n            [('', '---------'), (self.band.id, 'The Doors')])\n\n        self.assertEqual(type(cmafa.base_fields['day'].widget), Select)\n        self.assertEqual(list(cmafa.base_fields['day'].widget.choices),\n            [('', '---------'), (1, 'Fri'), (2, 'Sat')])\n\n        self.assertEqual(type(cmafa.base_fields['transport'].widget),\n            Select)\n        self.assertEqual(\n            list(cmafa.base_fields['transport'].widget.choices),\n            [('', '---------'), (1, 'Plane'), (2, 'Train'), (3, 'Bus')])\n\n    def test_foreign_key_as_radio_field(self):\n        # Now specify all the fields as radio_fields.  Widgets should now be\n        # RadioSelect, and the choices list should have a first entry of 'None' if\n        # blank=True for the model field.  Finally, the widget should have the\n        # 'radiolist' attr, and 'inline' as well if the field is specified HORIZONTAL.\n\n        class ConcertAdmin(ModelAdmin):\n            radio_fields = {\n                'main_band': HORIZONTAL,\n                'opening_band': VERTICAL,\n                'day': VERTICAL,\n                'transport': HORIZONTAL,\n            }\n\n        cma = ConcertAdmin(Concert, self.site)\n        cmafa = cma.get_form(request)\n\n        self.assertEqual(type(cmafa.base_fields['main_band'].widget.widget),\n            AdminRadioSelect)\n        self.assertEqual(cmafa.base_fields['main_band'].widget.attrs,\n            {'class': 'radiolist inline'})\n        self.assertEqual(list(cmafa.base_fields['main_band'].widget.choices),\n            [(self.band.id, 'The Doors')])\n\n        self.assertEqual(\n            type(cmafa.base_fields['opening_band'].widget.widget),\n            AdminRadioSelect)\n        self.assertEqual(cmafa.base_fields['opening_band'].widget.attrs,\n            {'class': 'radiolist'})\n        self.assertEqual(\n            list(cmafa.base_fields['opening_band'].widget.choices),\n            [('', 'None'), (self.band.id, 'The Doors')])\n\n        self.assertEqual(type(cmafa.base_fields['day'].widget),\n            AdminRadioSelect)\n        self.assertEqual(cmafa.base_fields['day'].widget.attrs,\n            {'class': 'radiolist'})\n        self.assertEqual(list(cmafa.base_fields['day'].widget.choices),\n            [(1, 'Fri'), (2, 'Sat')])\n\n        self.assertEqual(type(cmafa.base_fields['transport'].widget),\n            AdminRadioSelect)\n        self.assertEqual(cmafa.base_fields['transport'].widget.attrs,\n            {'class': 'radiolist inline'})\n        self.assertEqual(list(cmafa.base_fields['transport'].widget.choices),\n            [('', 'None'), (1, 'Plane'), (2, 'Train'), (3, 'Bus')])\n\n        class AdminConcertForm(forms.ModelForm):\n            class Meta:\n                model = Concert\n                exclude = ('transport',)\n\n        class ConcertAdmin(ModelAdmin):\n            form = AdminConcertForm\n\n        ma = ConcertAdmin(Concert, self.site)\n        self.assertEqual(list(ma.get_form(request).base_fields),\n            ['main_band', 'opening_band', 'day'])\n\n        class AdminConcertForm(forms.ModelForm):\n            extra = forms.CharField()\n\n            class Meta:\n                model = Concert\n                fields = ['extra', 'transport']\n\n        class ConcertAdmin(ModelAdmin):\n            form = AdminConcertForm\n\n        ma = ConcertAdmin(Concert, self.site)\n        self.assertEqual(list(ma.get_form(request).base_fields),\n            ['extra', 'transport'])\n\n        class ConcertInline(TabularInline):\n            form = AdminConcertForm\n            model = Concert\n            fk_name = 'main_band'\n            can_delete = True\n\n        class BandAdmin(ModelAdmin):\n            inlines = [\n                ConcertInline\n            ]\n\n        ma = BandAdmin(Band, self.site)\n        self.assertEqual(\n            list(list(ma.get_formsets(request))[0]().forms[0].fields),\n            ['extra', 'transport', 'id', 'DELETE', 'main_band'])\n\n\nclass ValidationTests(unittest.TestCase):\n    def test_validation_only_runs_in_debug(self):\n        # Ensure validation only runs when DEBUG = True\n        try:\n            settings.DEBUG = True\n\n            class ValidationTestModelAdmin(ModelAdmin):\n                raw_id_fields = 10\n\n            site = AdminSite()\n\n            six.assertRaisesRegex(self,\n                ImproperlyConfigured,\n                \"'ValidationTestModelAdmin.raw_id_fields' must be a list or tuple.\",\n                site.register,\n                ValidationTestModel,\n                ValidationTestModelAdmin,\n            )\n        finally:\n            settings.DEBUG = False\n\n        site = AdminSite()\n        site.register(ValidationTestModel, ValidationTestModelAdmin)\n\n    def test_raw_id_fields_validation(self):\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            raw_id_fields = 10\n\n        six.assertRaisesRegex(self,\n            ImproperlyConfigured,\n            \"'ValidationTestModelAdmin.raw_id_fields' must be a list or tuple.\",\n            validate,\n            ValidationTestModelAdmin,\n            ValidationTestModel,\n        )\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            raw_id_fields = ('non_existent_field',)\n\n        six.assertRaisesRegex(self,\n            ImproperlyConfigured,\n            \"'ValidationTestModelAdmin.raw_id_fields' refers to field 'non_existent_field' that is missing from model 'modeladmin.ValidationTestModel'.\",\n            validate,\n            ValidationTestModelAdmin,\n            ValidationTestModel,\n        )\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            raw_id_fields = ('name',)\n\n        six.assertRaisesRegex(self,\n            ImproperlyConfigured,\n            \"'ValidationTestModelAdmin.raw_id_fields\\[0\\]', 'name' must be either a ForeignKey or ManyToManyField.\",\n            validate,\n            ValidationTestModelAdmin,\n            ValidationTestModel,\n        )\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            raw_id_fields = ('users',)\n\n        validate(ValidationTestModelAdmin, ValidationTestModel)\n\n    def test_fieldsets_validation(self):\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            fieldsets = 10\n\n        six.assertRaisesRegex(self,\n            ImproperlyConfigured,\n            \"'ValidationTestModelAdmin.fieldsets' must be a list or tuple.\",\n            validate,\n            ValidationTestModelAdmin,\n            ValidationTestModel,\n        )\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            fieldsets = ({},)\n\n        six.assertRaisesRegex(self,\n            ImproperlyConfigured,\n            \"'ValidationTestModelAdmin.fieldsets\\[0\\]' must be a list or tuple.\",\n            validate,\n            ValidationTestModelAdmin,\n            ValidationTestModel,\n        )\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            fieldsets = ((),)\n\n        six.assertRaisesRegex(self,\n            ImproperlyConfigured,\n            \"'ValidationTestModelAdmin.fieldsets\\[0\\]' does not have exactly two elements.\",\n            validate,\n            ValidationTestModelAdmin,\n            ValidationTestModel,\n        )\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            fieldsets = ((\"General\", ()),)\n\n        six.assertRaisesRegex(self,\n            ImproperlyConfigured,\n            \"'ValidationTestModelAdmin.fieldsets\\[0\\]\\[1\\]' must be a dictionary.\",\n            validate,\n            ValidationTestModelAdmin,\n            ValidationTestModel,\n        )\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            fieldsets = ((\"General\", {}),)\n\n        six.assertRaisesRegex(self,\n            ImproperlyConfigured,\n            \"'fields' key is required in ValidationTestModelAdmin.fieldsets\\[0\\]\\[1\\] field options dict.\",\n            validate,\n            ValidationTestModelAdmin,\n            ValidationTestModel,\n        )\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            fieldsets = ((\"General\", {\"fields\": (\"non_existent_field\",)}),)\n\n        six.assertRaisesRegex(self,\n            ImproperlyConfigured,\n            \"'ValidationTestModelAdmin.fieldsets\\[0\\]\\[1\\]\\['fields'\\]' refers to field 'non_existent_field' that is missing from the form.\",\n            validate,\n            ValidationTestModelAdmin,\n            ValidationTestModel,\n        )\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            fieldsets = ((\"General\", {\"fields\": (\"name\",)}),)\n\n        validate(ValidationTestModelAdmin, ValidationTestModel)\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            fieldsets = ((\"General\", {\"fields\": (\"name\",)}),)\n            fields = [\"name\",]\n\n        six.assertRaisesRegex(self,\n            ImproperlyConfigured,\n            \"Both fieldsets and fields are specified in ValidationTestModelAdmin.\",\n            validate,\n            ValidationTestModelAdmin,\n            ValidationTestModel,\n        )\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            fieldsets = [(None, {'fields': ['name', 'name']})]\n\n        six.assertRaisesRegex(self,\n            ImproperlyConfigured,\n            \"There are duplicate field\\(s\\) in ValidationTestModelAdmin.fieldsets\",\n            validate,\n            ValidationTestModelAdmin,\n            ValidationTestModel,\n        )\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            fields = [\"name\", \"name\"]\n\n        six.assertRaisesRegex(self,\n            ImproperlyConfigured,\n            \"There are duplicate field\\(s\\) in ValidationTestModelAdmin.fields\",\n            validate,\n            ValidationTestModelAdmin,\n            ValidationTestModel,\n        )\n\n    def test_form_validation(self):\n\n        class FakeForm(object):\n            pass\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            form = FakeForm\n\n        six.assertRaisesRegex(self,\n            ImproperlyConfigured,\n            \"ValidationTestModelAdmin.form does not inherit from BaseModelForm.\",\n            validate,\n            ValidationTestModelAdmin,\n            ValidationTestModel,\n        )\n\n    def test_fieldsets_with_custom_form_validation(self):\n\n        class BandAdmin(ModelAdmin):\n\n            fieldsets = (\n                ('Band', {\n                    'fields': ('non_existent_field',)\n                }),\n            )\n\n        six.assertRaisesRegex(self,\n            ImproperlyConfigured,\n            \"'BandAdmin.fieldsets\\[0\\]\\[1\\]\\['fields'\\]' refers to field 'non_existent_field' that is missing from the form.\",\n            validate,\n            BandAdmin,\n            Band,\n        )\n\n        class BandAdmin(ModelAdmin):\n            fieldsets = (\n                ('Band', {\n                    'fields': ('name',)\n                }),\n            )\n\n        validate(BandAdmin, Band)\n\n        class AdminBandForm(forms.ModelForm):\n            class Meta:\n                model = Band\n\n        class BandAdmin(ModelAdmin):\n            form = AdminBandForm\n\n            fieldsets = (\n                ('Band', {\n                    'fields': ('non_existent_field',)\n                }),\n            )\n\n        six.assertRaisesRegex(self,\n            ImproperlyConfigured,\n            \"'BandAdmin.fieldsets\\[0]\\[1\\]\\['fields'\\]' refers to field 'non_existent_field' that is missing from the form.\",\n            validate,\n            BandAdmin,\n            Band,\n        )\n\n        class AdminBandForm(forms.ModelForm):\n            delete = forms.BooleanField()\n\n            class Meta:\n                model = Band\n\n        class BandAdmin(ModelAdmin):\n            form = AdminBandForm\n\n            fieldsets = (\n                ('Band', {\n                    'fields': ('name', 'bio', 'sign_date', 'delete')\n                }),\n            )\n\n        validate(BandAdmin, Band)\n\n    def test_filter_vertical_validation(self):\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            filter_vertical = 10\n\n        six.assertRaisesRegex(self,\n            ImproperlyConfigured,\n            \"'ValidationTestModelAdmin.filter_vertical' must be a list or tuple.\",\n            validate,\n            ValidationTestModelAdmin,\n            ValidationTestModel,\n        )\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            filter_vertical = (\"non_existent_field\",)\n\n        six.assertRaisesRegex(self,\n            ImproperlyConfigured,\n            \"'ValidationTestModelAdmin.filter_vertical' refers to field 'non_existent_field' that is missing from model 'modeladmin.ValidationTestModel'.\",\n            validate,\n            ValidationTestModelAdmin,\n            ValidationTestModel,\n        )\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            filter_vertical = (\"name\",)\n\n        six.assertRaisesRegex(self,\n            ImproperlyConfigured,\n            \"'ValidationTestModelAdmin.filter_vertical\\[0\\]' must be a ManyToManyField.\",\n            validate,\n            ValidationTestModelAdmin,\n            ValidationTestModel,\n        )\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            filter_vertical = (\"users\",)\n\n        validate(ValidationTestModelAdmin, ValidationTestModel)\n\n    def test_filter_horizontal_validation(self):\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            filter_horizontal = 10\n\n        six.assertRaisesRegex(self,\n            ImproperlyConfigured,\n            \"'ValidationTestModelAdmin.filter_horizontal' must be a list or tuple.\",\n            validate,\n            ValidationTestModelAdmin,\n            ValidationTestModel,\n        )\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            filter_horizontal = (\"non_existent_field\",)\n\n        six.assertRaisesRegex(self,\n            ImproperlyConfigured,\n            \"'ValidationTestModelAdmin.filter_horizontal' refers to field 'non_existent_field' that is missing from model 'modeladmin.ValidationTestModel'.\",\n            validate,\n            ValidationTestModelAdmin,\n            ValidationTestModel,\n        )\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            filter_horizontal = (\"name\",)\n\n        six.assertRaisesRegex(self,\n            ImproperlyConfigured,\n            \"'ValidationTestModelAdmin.filter_horizontal\\[0\\]' must be a ManyToManyField.\",\n            validate,\n            ValidationTestModelAdmin,\n            ValidationTestModel,\n        )\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            filter_horizontal = (\"users\",)\n\n        validate(ValidationTestModelAdmin, ValidationTestModel)\n\n    def test_radio_fields_validation(self):\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            radio_fields = ()\n\n        six.assertRaisesRegex(self,\n            ImproperlyConfigured,\n            \"'ValidationTestModelAdmin.radio_fields' must be a dictionary.\",\n            validate,\n            ValidationTestModelAdmin,\n            ValidationTestModel,\n        )\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            radio_fields = {\"non_existent_field\": None}\n\n        six.assertRaisesRegex(self,\n            ImproperlyConfigured,\n            \"'ValidationTestModelAdmin.radio_fields' refers to field 'non_existent_field' that is missing from model 'modeladmin.ValidationTestModel'.\",\n            validate,\n            ValidationTestModelAdmin,\n            ValidationTestModel,\n        )\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            radio_fields = {\"name\": None}\n\n        six.assertRaisesRegex(self,\n            ImproperlyConfigured,\n            \"'ValidationTestModelAdmin.radio_fields\\['name'\\]' is neither an instance of ForeignKey nor does have choices set.\",\n            validate,\n            ValidationTestModelAdmin,\n            ValidationTestModel,\n        )\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            radio_fields = {\"state\": None}\n\n        six.assertRaisesRegex(self,\n            ImproperlyConfigured,\n            \"'ValidationTestModelAdmin.radio_fields\\['state'\\]' is neither admin.HORIZONTAL nor admin.VERTICAL.\",\n            validate,\n            ValidationTestModelAdmin,\n            ValidationTestModel,\n        )\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            radio_fields = {\"state\": VERTICAL}\n\n        validate(ValidationTestModelAdmin, ValidationTestModel)\n\n    def test_prepopulated_fields_validation(self):\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            prepopulated_fields = ()\n\n        six.assertRaisesRegex(self,\n            ImproperlyConfigured,\n            \"'ValidationTestModelAdmin.prepopulated_fields' must be a dictionary.\",\n            validate,\n            ValidationTestModelAdmin,\n            ValidationTestModel,\n        )\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            prepopulated_fields = {\"non_existent_field\": None}\n\n        six.assertRaisesRegex(self,\n            ImproperlyConfigured,\n            \"'ValidationTestModelAdmin.prepopulated_fields' refers to field 'non_existent_field' that is missing from model 'modeladmin.ValidationTestModel'.\",\n            validate,\n            ValidationTestModelAdmin,\n            ValidationTestModel,\n        )\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            prepopulated_fields = {\"slug\": (\"non_existent_field\",)}\n\n        six.assertRaisesRegex(self,\n            ImproperlyConfigured,\n            \"'ValidationTestModelAdmin.prepopulated_fields\\['slug'\\]\\[0\\]' refers to field 'non_existent_field' that is missing from model 'modeladmin.ValidationTestModel'.\",\n            validate,\n            ValidationTestModelAdmin,\n            ValidationTestModel,\n        )\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            prepopulated_fields = {\"users\": (\"name\",)}\n\n        six.assertRaisesRegex(self,\n            ImproperlyConfigured,\n            \"'ValidationTestModelAdmin.prepopulated_fields\\['users'\\]' is either a DateTimeField, ForeignKey or ManyToManyField. This isn't allowed.\",\n            validate,\n            ValidationTestModelAdmin,\n            ValidationTestModel,\n        )\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            prepopulated_fields = {\"slug\": (\"name\",)}\n\n        validate(ValidationTestModelAdmin, ValidationTestModel)\n\n    def test_list_display_validation(self):\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            list_display = 10\n\n        six.assertRaisesRegex(self,\n            ImproperlyConfigured,\n            \"'ValidationTestModelAdmin.list_display' must be a list or tuple.\",\n            validate,\n            ValidationTestModelAdmin,\n            ValidationTestModel,\n        )\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            list_display = ('non_existent_field',)\n\n        six.assertRaisesRegex(self,\n            ImproperlyConfigured,\n            str_prefix(\"ValidationTestModelAdmin.list_display\\[0\\], %(_)s'non_existent_field' is not a callable or an attribute of 'ValidationTestModelAdmin' or found in the model 'ValidationTestModel'.\"),\n            validate,\n            ValidationTestModelAdmin,\n            ValidationTestModel,\n        )\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            list_display = ('users',)\n\n        six.assertRaisesRegex(self,\n            ImproperlyConfigured,\n            \"'ValidationTestModelAdmin.list_display\\[0\\]', 'users' is a ManyToManyField which is not supported.\",\n            validate,\n            ValidationTestModelAdmin,\n            ValidationTestModel,\n        )\n\n        def a_callable(obj):\n            pass\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            def a_method(self, obj):\n                pass\n            list_display = ('name', 'decade_published_in', 'a_method', a_callable)\n\n        validate(ValidationTestModelAdmin, ValidationTestModel)\n\n    def test_list_display_links_validation(self):\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            list_display_links = 10\n\n        six.assertRaisesRegex(self,\n            ImproperlyConfigured,\n            \"'ValidationTestModelAdmin.list_display_links' must be a list or tuple.\",\n            validate,\n            ValidationTestModelAdmin,\n            ValidationTestModel,\n        )\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            list_display_links = ('non_existent_field',)\n\n        six.assertRaisesRegex(self,\n            ImproperlyConfigured,\n            \"'ValidationTestModelAdmin.list_display_links\\[0\\]' refers to 'non_existent_field' which is not defined in 'list_display'.\",\n            validate,\n            ValidationTestModelAdmin,\n            ValidationTestModel,\n        )\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            list_display_links = ('name',)\n\n        six.assertRaisesRegex(self,\n            ImproperlyConfigured,\n            \"'ValidationTestModelAdmin.list_display_links\\[0\\]' refers to 'name' which is not defined in 'list_display'.\",\n            validate,\n            ValidationTestModelAdmin,\n            ValidationTestModel,\n        )\n\n        def a_callable(obj):\n            pass\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            def a_method(self, obj):\n                pass\n            list_display = ('name', 'decade_published_in', 'a_method', a_callable)\n            list_display_links = ('name', 'decade_published_in', 'a_method', a_callable)\n\n        validate(ValidationTestModelAdmin, ValidationTestModel)\n\n    def test_list_filter_validation(self):\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            list_filter = 10\n\n        six.assertRaisesRegex(self,\n            ImproperlyConfigured,\n            \"'ValidationTestModelAdmin.list_filter' must be a list or tuple.\",\n            validate,\n            ValidationTestModelAdmin,\n            ValidationTestModel,\n        )\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            list_filter = ('non_existent_field',)\n\n        six.assertRaisesRegex(self,\n            ImproperlyConfigured,\n            \"'ValidationTestModelAdmin.list_filter\\[0\\]' refers to 'non_existent_field' which does not refer to a Field.\",\n            validate,\n            ValidationTestModelAdmin,\n            ValidationTestModel,\n        )\n\n        class RandomClass(object):\n            pass\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            list_filter = (RandomClass,)\n\n        six.assertRaisesRegex(self,\n            ImproperlyConfigured,\n            \"'ValidationTestModelAdmin.list_filter\\[0\\]' is 'RandomClass' which is not a descendant of ListFilter.\",\n            validate,\n            ValidationTestModelAdmin,\n            ValidationTestModel,\n        )\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            list_filter = (('is_active', RandomClass),)\n\n        six.assertRaisesRegex(self,\n            ImproperlyConfigured,\n            \"'ValidationTestModelAdmin.list_filter\\[0\\]\\[1\\]' is 'RandomClass' which is not of type FieldListFilter.\",\n            validate,\n            ValidationTestModelAdmin,\n            ValidationTestModel,\n        )\n\n        class AwesomeFilter(SimpleListFilter):\n            def get_title(self):\n                return 'awesomeness'\n            def get_choices(self, request):\n                return (('bit', 'A bit awesome'), ('very', 'Very awesome'), )\n            def get_query_set(self, cl, qs):\n                return qs\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            list_filter = (('is_active', AwesomeFilter),)\n\n        six.assertRaisesRegex(self,\n            ImproperlyConfigured,\n            \"'ValidationTestModelAdmin.list_filter\\[0\\]\\[1\\]' is 'AwesomeFilter' which is not of type FieldListFilter.\",\n            validate,\n            ValidationTestModelAdmin,\n            ValidationTestModel,\n        )\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            list_filter = (BooleanFieldListFilter,)\n\n        six.assertRaisesRegex(self,\n            ImproperlyConfigured,\n            \"'ValidationTestModelAdmin.list_filter\\[0\\]' is 'BooleanFieldListFilter' which is of type FieldListFilter but is not associated with a field name.\",\n            validate,\n            ValidationTestModelAdmin,\n            ValidationTestModel,\n        )\n\n        # Valid declarations below -----------\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            list_filter = ('is_active', AwesomeFilter, ('is_active', BooleanFieldListFilter), 'no')\n\n        validate(ValidationTestModelAdmin, ValidationTestModel)\n\n    def test_list_per_page_validation(self):\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            list_per_page = 'hello'\n\n        six.assertRaisesRegex(self,\n            ImproperlyConfigured,\n            \"'ValidationTestModelAdmin.list_per_page' should be a integer.\",\n            validate,\n            ValidationTestModelAdmin,\n            ValidationTestModel,\n        )\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            list_per_page = 100\n\n        validate(ValidationTestModelAdmin, ValidationTestModel)\n\n    def test_max_show_all_allowed_validation(self):\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            list_max_show_all = 'hello'\n\n        six.assertRaisesRegex(self,\n            ImproperlyConfigured,\n            \"'ValidationTestModelAdmin.list_max_show_all' should be an integer.\",\n            validate,\n            ValidationTestModelAdmin,\n            ValidationTestModel,\n        )\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            list_max_show_all = 200\n\n        validate(ValidationTestModelAdmin, ValidationTestModel)\n\n    def test_search_fields_validation(self):\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            search_fields = 10\n\n        six.assertRaisesRegex(self,\n            ImproperlyConfigured,\n            \"'ValidationTestModelAdmin.search_fields' must be a list or tuple.\",\n            validate,\n            ValidationTestModelAdmin,\n            ValidationTestModel,\n        )\n\n    def test_date_hierarchy_validation(self):\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            date_hierarchy = 'non_existent_field'\n\n        six.assertRaisesRegex(self,\n            ImproperlyConfigured,\n            \"'ValidationTestModelAdmin.date_hierarchy' refers to field 'non_existent_field' that is missing from model 'modeladmin.ValidationTestModel'.\",\n            validate,\n            ValidationTestModelAdmin,\n            ValidationTestModel,\n        )\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            date_hierarchy = 'name'\n\n        six.assertRaisesRegex(self,\n            ImproperlyConfigured,\n            \"'ValidationTestModelAdmin.date_hierarchy is neither an instance of DateField nor DateTimeField.\",\n            validate,\n            ValidationTestModelAdmin,\n            ValidationTestModel,\n        )\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            date_hierarchy = 'pub_date'\n\n        validate(ValidationTestModelAdmin, ValidationTestModel)\n\n    def test_ordering_validation(self):\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            ordering = 10\n\n        six.assertRaisesRegex(self,\n            ImproperlyConfigured,\n            \"'ValidationTestModelAdmin.ordering' must be a list or tuple.\",\n            validate,\n            ValidationTestModelAdmin,\n            ValidationTestModel,\n        )\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            ordering = ('non_existent_field',)\n\n        six.assertRaisesRegex(self,\n            ImproperlyConfigured,\n            \"'ValidationTestModelAdmin.ordering\\[0\\]' refers to field 'non_existent_field' that is missing from model 'modeladmin.ValidationTestModel'.\",\n            validate,\n            ValidationTestModelAdmin,\n            ValidationTestModel,\n        )\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            ordering = ('?', 'name')\n\n        six.assertRaisesRegex(self,\n            ImproperlyConfigured,\n            \"'ValidationTestModelAdmin.ordering' has the random ordering marker '\\?', but contains other fields as well. Please either remove '\\?' or the other fields.\",\n            validate,\n            ValidationTestModelAdmin,\n            ValidationTestModel,\n        )\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            ordering = ('?',)\n\n        validate(ValidationTestModelAdmin, ValidationTestModel)\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            ordering = ('band__name',)\n\n        validate(ValidationTestModelAdmin, ValidationTestModel)\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            ordering = ('name',)\n\n        validate(ValidationTestModelAdmin, ValidationTestModel)\n\n    def test_list_select_related_validation(self):\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            list_select_related = 1\n\n        six.assertRaisesRegex(self,\n            ImproperlyConfigured,\n            \"'ValidationTestModelAdmin.list_select_related' should be a boolean.\",\n            validate,\n            ValidationTestModelAdmin,\n            ValidationTestModel,\n        )\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            list_select_related = False\n\n        validate(ValidationTestModelAdmin, ValidationTestModel)\n\n    def test_save_as_validation(self):\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            save_as = 1\n\n        six.assertRaisesRegex(self,\n            ImproperlyConfigured,\n            \"'ValidationTestModelAdmin.save_as' should be a boolean.\",\n            validate,\n            ValidationTestModelAdmin,\n            ValidationTestModel,\n        )\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            save_as = True\n\n        validate(ValidationTestModelAdmin, ValidationTestModel)\n\n    def test_save_on_top_validation(self):\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            save_on_top = 1\n\n        six.assertRaisesRegex(self,\n            ImproperlyConfigured,\n            \"'ValidationTestModelAdmin.save_on_top' should be a boolean.\",\n            validate,\n            ValidationTestModelAdmin,\n            ValidationTestModel,\n        )\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            save_on_top = True\n\n        validate(ValidationTestModelAdmin, ValidationTestModel)\n\n    def test_inlines_validation(self):\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            inlines = 10\n\n        six.assertRaisesRegex(self,\n            ImproperlyConfigured,\n            \"'ValidationTestModelAdmin.inlines' must be a list or tuple.\",\n            validate,\n            ValidationTestModelAdmin,\n            ValidationTestModel,\n        )\n\n        class ValidationTestInline(object):\n            pass\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            inlines = [ValidationTestInline]\n\n        six.assertRaisesRegex(self,\n            ImproperlyConfigured,\n            \"'ValidationTestModelAdmin.inlines\\[0\\]' does not inherit from BaseModelAdmin.\",\n            validate,\n            ValidationTestModelAdmin,\n            ValidationTestModel,\n        )\n\n        class ValidationTestInline(TabularInline):\n            pass\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            inlines = [ValidationTestInline]\n\n        six.assertRaisesRegex(self,\n            ImproperlyConfigured,\n            \"'model' is a required attribute of 'ValidationTestModelAdmin.inlines\\[0\\]'.\",\n            validate,\n            ValidationTestModelAdmin,\n            ValidationTestModel,\n        )\n\n        class SomethingBad(object):\n            pass\n\n        class ValidationTestInline(TabularInline):\n            model = SomethingBad\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            inlines = [ValidationTestInline]\n\n        six.assertRaisesRegex(self,\n            ImproperlyConfigured,\n            \"'ValidationTestModelAdmin.inlines\\[0\\].model' does not inherit from models.Model.\",\n            validate,\n            ValidationTestModelAdmin,\n            ValidationTestModel,\n        )\n\n        class ValidationTestInline(TabularInline):\n            model = ValidationTestInlineModel\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            inlines = [ValidationTestInline]\n\n        validate(ValidationTestModelAdmin, ValidationTestModel)\n\n    def test_fields_validation(self):\n\n        class ValidationTestInline(TabularInline):\n            model = ValidationTestInlineModel\n            fields = 10\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            inlines = [ValidationTestInline]\n\n        six.assertRaisesRegex(self,\n            ImproperlyConfigured,\n            \"'ValidationTestInline.fields' must be a list or tuple.\",\n            validate,\n            ValidationTestModelAdmin,\n            ValidationTestModel,\n        )\n\n        class ValidationTestInline(TabularInline):\n            model = ValidationTestInlineModel\n            fields = (\"non_existent_field\",)\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            inlines = [ValidationTestInline]\n\n        six.assertRaisesRegex(self,\n            ImproperlyConfigured,\n            \"'ValidationTestInline.fields' refers to field 'non_existent_field' that is missing from the form.\",\n            validate,\n            ValidationTestModelAdmin,\n            ValidationTestModel,\n        )\n\n    def test_fk_name_validation(self):\n\n        class ValidationTestInline(TabularInline):\n            model = ValidationTestInlineModel\n            fk_name = \"non_existent_field\"\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            inlines = [ValidationTestInline]\n\n        six.assertRaisesRegex(self,\n            ImproperlyConfigured,\n            \"'ValidationTestInline.fk_name' refers to field 'non_existent_field' that is missing from model 'modeladmin.ValidationTestInlineModel'.\",\n            validate,\n            ValidationTestModelAdmin,\n            ValidationTestModel,\n        )\n\n        class ValidationTestInline(TabularInline):\n            model = ValidationTestInlineModel\n            fk_name = \"parent\"\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            inlines = [ValidationTestInline]\n\n        validate(ValidationTestModelAdmin, ValidationTestModel)\n\n    def test_extra_validation(self):\n\n        class ValidationTestInline(TabularInline):\n            model = ValidationTestInlineModel\n            extra = \"hello\"\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            inlines = [ValidationTestInline]\n\n        six.assertRaisesRegex(self,\n            ImproperlyConfigured,\n            \"'ValidationTestInline.extra' should be a integer.\",\n            validate,\n            ValidationTestModelAdmin,\n            ValidationTestModel,\n        )\n\n        class ValidationTestInline(TabularInline):\n            model = ValidationTestInlineModel\n            extra = 2\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            inlines = [ValidationTestInline]\n\n        validate(ValidationTestModelAdmin, ValidationTestModel)\n\n    def test_max_num_validation(self):\n\n        class ValidationTestInline(TabularInline):\n            model = ValidationTestInlineModel\n            max_num = \"hello\"\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            inlines = [ValidationTestInline]\n\n        six.assertRaisesRegex(self,\n            ImproperlyConfigured,\n            \"'ValidationTestInline.max_num' should be an integer or None \\(default\\).\",\n            validate,\n            ValidationTestModelAdmin,\n            ValidationTestModel,\n        )\n\n        class ValidationTestInline(TabularInline):\n            model = ValidationTestInlineModel\n            max_num = 2\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            inlines = [ValidationTestInline]\n\n        validate(ValidationTestModelAdmin, ValidationTestModel)\n\n    def test_formset_validation(self):\n\n        class FakeFormSet(object):\n            pass\n\n        class ValidationTestInline(TabularInline):\n            model = ValidationTestInlineModel\n            formset = FakeFormSet\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            inlines = [ValidationTestInline]\n\n        six.assertRaisesRegex(self,\n            ImproperlyConfigured,\n            \"'ValidationTestInline.formset' does not inherit from BaseModelFormSet.\",\n            validate,\n            ValidationTestModelAdmin,\n            ValidationTestModel,\n        )\n\n        class RealModelFormSet(BaseModelFormSet):\n            pass\n\n        class ValidationTestInline(TabularInline):\n            model = ValidationTestInlineModel\n            formset = RealModelFormSet\n\n        class ValidationTestModelAdmin(ModelAdmin):\n            inlines = [ValidationTestInline]\n\n        validate(ValidationTestModelAdmin, ValidationTestModel)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/multiple_database/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/multiple_database/fixtures/multidb-common.json",
    "content": "[\n    {\n        \"pk\": 1,\n        \"model\": \"multiple_database.book\",\n        \"fields\": {\n            \"title\": \"The Definitive Guide to Django\",\n            \"published\": \"2009-7-8\"\n        }\n    }\n]"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/multiple_database/fixtures/multidb.default.json",
    "content": "[\n    {\n        \"pk\": 1,\n        \"model\": \"multiple_database.person\",\n        \"fields\": {\n            \"name\": \"Marty Alchin\"\n        }\n    },\n    {\n        \"pk\": 2,\n        \"model\": \"multiple_database.person\",\n        \"fields\": {\n            \"name\": \"George Vilches\"\n        }\n    },\n    {\n        \"pk\": 2,\n        \"model\": \"multiple_database.book\",\n        \"fields\": {\n            \"title\": \"Pro Django\",\n            \"published\": \"2008-12-16\",\n            \"authors\": [[\"Marty Alchin\"]],\n            \"editor\": [\"George Vilches\"]\n        }\n    }\n]\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/multiple_database/fixtures/multidb.other.json",
    "content": "[\n    {\n        \"pk\": 1,\n        \"model\": \"multiple_database.person\",\n        \"fields\": {\n            \"name\": \"Mark Pilgrim\"\n        }\n    },\n    {\n        \"pk\": 2,\n        \"model\": \"multiple_database.person\",\n        \"fields\": {\n            \"name\": \"Chris Mills\"\n        }\n    },\n    {\n        \"pk\": 2,\n        \"model\": \"multiple_database.book\",\n        \"fields\": {\n            \"title\": \"Dive into Python\",\n            \"published\": \"2009-5-4\",\n            \"authors\": [[\"Mark Pilgrim\"]],\n            \"editor\": [\"Chris Mills\"]\n        }\n    }\n]"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/multiple_database/fixtures/pets.json",
    "content": "[\n    {\n        \"pk\": 1,\n        \"model\": \"multiple_database.pet\",\n        \"fields\": {\n            \"name\": \"Mr Bigglesworth\",\n            \"owner\": 1\n        }\n    },\n    {\n        \"pk\": 2,\n        \"model\": \"multiple_database.pet\",\n        \"fields\": {\n            \"name\": \"Spot\",\n            \"owner\": 2\n        }\n    }\n]"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/multiple_database/models.py",
    "content": "from __future__ import absolute_import\n\nfrom django.contrib.auth.models import User\nfrom django.contrib.contenttypes.models import ContentType\nfrom django.contrib.contenttypes import generic\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n@python_2_unicode_compatible\nclass Review(models.Model):\n    source = models.CharField(max_length=100)\n    content_type = models.ForeignKey(ContentType)\n    object_id = models.PositiveIntegerField()\n    content_object = generic.GenericForeignKey()\n\n    def __str__(self):\n        return self.source\n\n    class Meta:\n        ordering = ('source',)\n\nclass PersonManager(models.Manager):\n    def get_by_natural_key(self, name):\n        return self.get(name=name)\n\n@python_2_unicode_compatible\nclass Person(models.Model):\n    objects = PersonManager()\n    name = models.CharField(max_length=100)\n\n    def __str__(self):\n        return self.name\n\n    class Meta:\n        ordering = ('name',)\n\n# This book manager doesn't do anything interesting; it just\n# exists to strip out the 'extra_arg' argument to certain\n# calls. This argument is used to establish that the BookManager\n# is actually getting used when it should be.\nclass BookManager(models.Manager):\n    def create(self, *args, **kwargs):\n        kwargs.pop('extra_arg', None)\n        return super(BookManager, self).create(*args, **kwargs)\n\n    def get_or_create(self, *args, **kwargs):\n        kwargs.pop('extra_arg', None)\n        return super(BookManager, self).get_or_create(*args, **kwargs)\n\n@python_2_unicode_compatible\nclass Book(models.Model):\n    objects = BookManager()\n    title = models.CharField(max_length=100)\n    published = models.DateField()\n    authors = models.ManyToManyField(Person)\n    editor = models.ForeignKey(Person, null=True, related_name='edited')\n    reviews = generic.GenericRelation(Review)\n    pages = models.IntegerField(default=100)\n\n    def __str__(self):\n        return self.title\n\n    class Meta:\n        ordering = ('title',)\n\n@python_2_unicode_compatible\nclass Pet(models.Model):\n    name = models.CharField(max_length=100)\n    owner = models.ForeignKey(Person)\n\n    def __str__(self):\n        return self.name\n\n    class Meta:\n        ordering = ('name',)\n\nclass UserProfile(models.Model):\n    user = models.OneToOneField(User, null=True)\n    flavor = models.CharField(max_length=100)\n\n    class Meta:\n        ordering = ('flavor',)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/multiple_database/tests.py",
    "content": "from __future__ import absolute_import, unicode_literals\n\nimport datetime\nimport pickle\nfrom operator import attrgetter\n\nfrom django.contrib.auth.models import User\nfrom django.contrib.contenttypes.models import ContentType\nfrom django.core import management\nfrom django.db import connections, router, DEFAULT_DB_ALIAS\nfrom django.db.models import signals\nfrom django.test import TestCase\nfrom django.test.utils import override_settings\nfrom django.utils.six import StringIO\n\nfrom .models import Book, Person, Pet, Review, UserProfile\n\n\nclass QueryTestCase(TestCase):\n    multi_db = True\n\n    def test_db_selection(self):\n        \"Check that querysets will use the default database by default\"\n        self.assertEqual(Book.objects.db, DEFAULT_DB_ALIAS)\n        self.assertEqual(Book.objects.all().db, DEFAULT_DB_ALIAS)\n\n        self.assertEqual(Book.objects.using('other').db, 'other')\n\n        self.assertEqual(Book.objects.db_manager('other').db, 'other')\n        self.assertEqual(Book.objects.db_manager('other').all().db, 'other')\n\n    def test_default_creation(self):\n        \"Objects created on the default database don't leak onto other databases\"\n        # Create a book on the default database using create()\n        Book.objects.create(title=\"Pro Django\",\n                            published=datetime.date(2008, 12, 16))\n\n        # Create a book on the default database using a save\n        dive = Book()\n        dive.title=\"Dive into Python\"\n        dive.published = datetime.date(2009, 5, 4)\n        dive.save()\n\n        # Check that book exists on the default database, but not on other database\n        try:\n            Book.objects.get(title=\"Pro Django\")\n            Book.objects.using('default').get(title=\"Pro Django\")\n        except Book.DoesNotExist:\n            self.fail('\"Dive Into Python\" should exist on default database')\n\n        self.assertRaises(Book.DoesNotExist,\n            Book.objects.using('other').get,\n            title=\"Pro Django\"\n        )\n\n        try:\n            Book.objects.get(title=\"Dive into Python\")\n            Book.objects.using('default').get(title=\"Dive into Python\")\n        except Book.DoesNotExist:\n            self.fail('\"Dive into Python\" should exist on default database')\n\n        self.assertRaises(Book.DoesNotExist,\n            Book.objects.using('other').get,\n            title=\"Dive into Python\"\n        )\n\n\n    def test_other_creation(self):\n        \"Objects created on another database don't leak onto the default database\"\n        # Create a book on the second database\n        Book.objects.using('other').create(title=\"Pro Django\",\n                                           published=datetime.date(2008, 12, 16))\n\n        # Create a book on the default database using a save\n        dive = Book()\n        dive.title=\"Dive into Python\"\n        dive.published = datetime.date(2009, 5, 4)\n        dive.save(using='other')\n\n        # Check that book exists on the default database, but not on other database\n        try:\n            Book.objects.using('other').get(title=\"Pro Django\")\n        except Book.DoesNotExist:\n            self.fail('\"Dive Into Python\" should exist on other database')\n\n        self.assertRaises(Book.DoesNotExist,\n            Book.objects.get,\n            title=\"Pro Django\"\n        )\n        self.assertRaises(Book.DoesNotExist,\n            Book.objects.using('default').get,\n            title=\"Pro Django\"\n        )\n\n        try:\n            Book.objects.using('other').get(title=\"Dive into Python\")\n        except Book.DoesNotExist:\n            self.fail('\"Dive into Python\" should exist on other database')\n\n        self.assertRaises(Book.DoesNotExist,\n            Book.objects.get,\n            title=\"Dive into Python\"\n        )\n        self.assertRaises(Book.DoesNotExist,\n            Book.objects.using('default').get,\n            title=\"Dive into Python\"\n        )\n\n    def test_basic_queries(self):\n        \"Queries are constrained to a single database\"\n        dive = Book.objects.using('other').create(title=\"Dive into Python\",\n                                                  published=datetime.date(2009, 5, 4))\n\n        dive =  Book.objects.using('other').get(published=datetime.date(2009, 5, 4))\n        self.assertEqual(dive.title, \"Dive into Python\")\n        self.assertRaises(Book.DoesNotExist, Book.objects.using('default').get, published=datetime.date(2009, 5, 4))\n\n        dive = Book.objects.using('other').get(title__icontains=\"dive\")\n        self.assertEqual(dive.title, \"Dive into Python\")\n        self.assertRaises(Book.DoesNotExist, Book.objects.using('default').get, title__icontains=\"dive\")\n\n        dive = Book.objects.using('other').get(title__iexact=\"dive INTO python\")\n        self.assertEqual(dive.title, \"Dive into Python\")\n        self.assertRaises(Book.DoesNotExist, Book.objects.using('default').get, title__iexact=\"dive INTO python\")\n\n        dive =  Book.objects.using('other').get(published__year=2009)\n        self.assertEqual(dive.title, \"Dive into Python\")\n        self.assertEqual(dive.published, datetime.date(2009, 5, 4))\n        self.assertRaises(Book.DoesNotExist, Book.objects.using('default').get, published__year=2009)\n\n        years = Book.objects.using('other').dates('published', 'year')\n        self.assertEqual([o.year for o in years], [2009])\n        years = Book.objects.using('default').dates('published', 'year')\n        self.assertEqual([o.year for o in years], [])\n\n        months = Book.objects.using('other').dates('published', 'month')\n        self.assertEqual([o.month for o in months], [5])\n        months = Book.objects.using('default').dates('published', 'month')\n        self.assertEqual([o.month for o in months], [])\n\n    def test_m2m_separation(self):\n        \"M2M fields are constrained to a single database\"\n        # Create a book and author on the default database\n        pro = Book.objects.create(title=\"Pro Django\",\n                                  published=datetime.date(2008, 12, 16))\n\n        marty = Person.objects.create(name=\"Marty Alchin\")\n\n        # Create a book and author on the other database\n        dive = Book.objects.using('other').create(title=\"Dive into Python\",\n                                                  published=datetime.date(2009, 5, 4))\n\n        mark = Person.objects.using('other').create(name=\"Mark Pilgrim\")\n\n        # Save the author relations\n        pro.authors = [marty]\n        dive.authors = [mark]\n\n        # Inspect the m2m tables directly.\n        # There should be 1 entry in each database\n        self.assertEqual(Book.authors.through.objects.using('default').count(), 1)\n        self.assertEqual(Book.authors.through.objects.using('other').count(), 1)\n\n        # Check that queries work across m2m joins\n        self.assertEqual(list(Book.objects.using('default').filter(authors__name='Marty Alchin').values_list('title', flat=True)),\n                          ['Pro Django'])\n        self.assertEqual(list(Book.objects.using('other').filter(authors__name='Marty Alchin').values_list('title', flat=True)),\n                          [])\n\n        self.assertEqual(list(Book.objects.using('default').filter(authors__name='Mark Pilgrim').values_list('title', flat=True)),\n                          [])\n        self.assertEqual(list(Book.objects.using('other').filter(authors__name='Mark Pilgrim').values_list('title', flat=True)),\n                          ['Dive into Python'])\n\n        # Reget the objects to clear caches\n        dive = Book.objects.using('other').get(title=\"Dive into Python\")\n        mark = Person.objects.using('other').get(name=\"Mark Pilgrim\")\n\n        # Retrive related object by descriptor. Related objects should be database-baound\n        self.assertEqual(list(dive.authors.all().values_list('name', flat=True)),\n                          ['Mark Pilgrim'])\n\n        self.assertEqual(list(mark.book_set.all().values_list('title', flat=True)),\n                          ['Dive into Python'])\n\n    def test_m2m_forward_operations(self):\n        \"M2M forward manipulations are all constrained to a single DB\"\n        # Create a book and author on the other database\n        dive = Book.objects.using('other').create(title=\"Dive into Python\",\n                                                  published=datetime.date(2009, 5, 4))\n\n        mark = Person.objects.using('other').create(name=\"Mark Pilgrim\")\n\n        # Save the author relations\n        dive.authors = [mark]\n\n        # Add a second author\n        john = Person.objects.using('other').create(name=\"John Smith\")\n        self.assertEqual(list(Book.objects.using('other').filter(authors__name='John Smith').values_list('title', flat=True)),\n                          [])\n\n\n        dive.authors.add(john)\n        self.assertEqual(list(Book.objects.using('other').filter(authors__name='Mark Pilgrim').values_list('title', flat=True)),\n                          ['Dive into Python'])\n        self.assertEqual(list(Book.objects.using('other').filter(authors__name='John Smith').values_list('title', flat=True)),\n                          ['Dive into Python'])\n\n        # Remove the second author\n        dive.authors.remove(john)\n        self.assertEqual(list(Book.objects.using('other').filter(authors__name='Mark Pilgrim').values_list('title', flat=True)),\n                          ['Dive into Python'])\n        self.assertEqual(list(Book.objects.using('other').filter(authors__name='John Smith').values_list('title', flat=True)),\n                          [])\n\n        # Clear all authors\n        dive.authors.clear()\n        self.assertEqual(list(Book.objects.using('other').filter(authors__name='Mark Pilgrim').values_list('title', flat=True)),\n                          [])\n        self.assertEqual(list(Book.objects.using('other').filter(authors__name='John Smith').values_list('title', flat=True)),\n                          [])\n\n        # Create an author through the m2m interface\n        dive.authors.create(name='Jane Brown')\n        self.assertEqual(list(Book.objects.using('other').filter(authors__name='Mark Pilgrim').values_list('title', flat=True)),\n                          [])\n        self.assertEqual(list(Book.objects.using('other').filter(authors__name='Jane Brown').values_list('title', flat=True)),\n                          ['Dive into Python'])\n\n    def test_m2m_reverse_operations(self):\n        \"M2M reverse manipulations are all constrained to a single DB\"\n        # Create a book and author on the other database\n        dive = Book.objects.using('other').create(title=\"Dive into Python\",\n                                                  published=datetime.date(2009, 5, 4))\n\n        mark = Person.objects.using('other').create(name=\"Mark Pilgrim\")\n\n        # Save the author relations\n        dive.authors = [mark]\n\n        # Create a second book on the other database\n        grease = Book.objects.using('other').create(title=\"Greasemonkey Hacks\",\n                                                    published=datetime.date(2005, 11, 1))\n\n        # Add a books to the m2m\n        mark.book_set.add(grease)\n        self.assertEqual(list(Person.objects.using('other').filter(book__title='Dive into Python').values_list('name', flat=True)),\n                          ['Mark Pilgrim'])\n        self.assertEqual(list(Person.objects.using('other').filter(book__title='Greasemonkey Hacks').values_list('name', flat=True)),\n                          ['Mark Pilgrim'])\n\n        # Remove a book from the m2m\n        mark.book_set.remove(grease)\n        self.assertEqual(list(Person.objects.using('other').filter(book__title='Dive into Python').values_list('name', flat=True)),\n                          ['Mark Pilgrim'])\n        self.assertEqual(list(Person.objects.using('other').filter(book__title='Greasemonkey Hacks').values_list('name', flat=True)),\n                          [])\n\n        # Clear the books associated with mark\n        mark.book_set.clear()\n        self.assertEqual(list(Person.objects.using('other').filter(book__title='Dive into Python').values_list('name', flat=True)),\n                          [])\n        self.assertEqual(list(Person.objects.using('other').filter(book__title='Greasemonkey Hacks').values_list('name', flat=True)),\n                          [])\n\n        # Create a book through the m2m interface\n        mark.book_set.create(title=\"Dive into HTML5\", published=datetime.date(2020, 1, 1))\n        self.assertEqual(list(Person.objects.using('other').filter(book__title='Dive into Python').values_list('name', flat=True)),\n                          [])\n        self.assertEqual(list(Person.objects.using('other').filter(book__title='Dive into HTML5').values_list('name', flat=True)),\n                          ['Mark Pilgrim'])\n\n    def test_m2m_cross_database_protection(self):\n        \"Operations that involve sharing M2M objects across databases raise an error\"\n        # Create a book and author on the default database\n        pro = Book.objects.create(title=\"Pro Django\",\n                                  published=datetime.date(2008, 12, 16))\n\n        marty = Person.objects.create(name=\"Marty Alchin\")\n\n        # Create a book and author on the other database\n        dive = Book.objects.using('other').create(title=\"Dive into Python\",\n                                                  published=datetime.date(2009, 5, 4))\n\n        mark = Person.objects.using('other').create(name=\"Mark Pilgrim\")\n        # Set a foreign key set with an object from a different database\n        try:\n            marty.book_set = [pro, dive]\n            self.fail(\"Shouldn't be able to assign across databases\")\n        except ValueError:\n            pass\n\n        # Add to an m2m with an object from a different database\n        try:\n            marty.book_set.add(dive)\n            self.fail(\"Shouldn't be able to assign across databases\")\n        except ValueError:\n            pass\n\n        # Set a m2m with an object from a different database\n        try:\n            marty.book_set = [pro, dive]\n            self.fail(\"Shouldn't be able to assign across databases\")\n        except ValueError:\n            pass\n\n        # Add to a reverse m2m with an object from a different database\n        try:\n            dive.authors.add(marty)\n            self.fail(\"Shouldn't be able to assign across databases\")\n        except ValueError:\n            pass\n\n        # Set a reverse m2m with an object from a different database\n        try:\n            dive.authors = [mark, marty]\n            self.fail(\"Shouldn't be able to assign across databases\")\n        except ValueError:\n            pass\n\n    def test_m2m_deletion(self):\n        \"Cascaded deletions of m2m relations issue queries on the right database\"\n        # Create a book and author on the other database\n        dive = Book.objects.using('other').create(title=\"Dive into Python\",\n                                                  published=datetime.date(2009, 5, 4))\n\n        mark = Person.objects.using('other').create(name=\"Mark Pilgrim\")\n        dive.authors = [mark]\n\n        # Check the initial state\n        self.assertEqual(Person.objects.using('default').count(), 0)\n        self.assertEqual(Book.objects.using('default').count(), 0)\n        self.assertEqual(Book.authors.through.objects.using('default').count(), 0)\n\n        self.assertEqual(Person.objects.using('other').count(), 1)\n        self.assertEqual(Book.objects.using('other').count(), 1)\n        self.assertEqual(Book.authors.through.objects.using('other').count(), 1)\n\n        # Delete the object on the other database\n        dive.delete(using='other')\n\n        self.assertEqual(Person.objects.using('default').count(), 0)\n        self.assertEqual(Book.objects.using('default').count(), 0)\n        self.assertEqual(Book.authors.through.objects.using('default').count(), 0)\n\n        # The person still exists ...\n        self.assertEqual(Person.objects.using('other').count(), 1)\n        # ... but the book has been deleted\n        self.assertEqual(Book.objects.using('other').count(), 0)\n        # ... and the relationship object has also been deleted.\n        self.assertEqual(Book.authors.through.objects.using('other').count(), 0)\n\n        # Now try deletion in the reverse direction. Set up the relation again\n        dive = Book.objects.using('other').create(title=\"Dive into Python\",\n                                                  published=datetime.date(2009, 5, 4))\n        dive.authors = [mark]\n\n        # Check the initial state\n        self.assertEqual(Person.objects.using('default').count(), 0)\n        self.assertEqual(Book.objects.using('default').count(), 0)\n        self.assertEqual(Book.authors.through.objects.using('default').count(), 0)\n\n        self.assertEqual(Person.objects.using('other').count(), 1)\n        self.assertEqual(Book.objects.using('other').count(), 1)\n        self.assertEqual(Book.authors.through.objects.using('other').count(), 1)\n\n        # Delete the object on the other database\n        mark.delete(using='other')\n\n        self.assertEqual(Person.objects.using('default').count(), 0)\n        self.assertEqual(Book.objects.using('default').count(), 0)\n        self.assertEqual(Book.authors.through.objects.using('default').count(), 0)\n\n        # The person has been deleted ...\n        self.assertEqual(Person.objects.using('other').count(), 0)\n        # ... but the book still exists\n        self.assertEqual(Book.objects.using('other').count(), 1)\n        # ... and the relationship object has been deleted.\n        self.assertEqual(Book.authors.through.objects.using('other').count(), 0)\n\n    def test_foreign_key_separation(self):\n        \"FK fields are constrained to a single database\"\n        # Create a book and author on the default database\n        pro = Book.objects.create(title=\"Pro Django\",\n                                  published=datetime.date(2008, 12, 16))\n\n        marty = Person.objects.create(name=\"Marty Alchin\")\n        george = Person.objects.create(name=\"George Vilches\")\n\n        # Create a book and author on the other database\n        dive = Book.objects.using('other').create(title=\"Dive into Python\",\n                                                  published=datetime.date(2009, 5, 4))\n\n        mark = Person.objects.using('other').create(name=\"Mark Pilgrim\")\n        chris = Person.objects.using('other').create(name=\"Chris Mills\")\n\n        # Save the author's favourite books\n        pro.editor = george\n        pro.save()\n\n        dive.editor = chris\n        dive.save()\n\n        pro = Book.objects.using('default').get(title=\"Pro Django\")\n        self.assertEqual(pro.editor.name, \"George Vilches\")\n\n        dive = Book.objects.using('other').get(title=\"Dive into Python\")\n        self.assertEqual(dive.editor.name, \"Chris Mills\")\n\n        # Check that queries work across foreign key joins\n        self.assertEqual(list(Person.objects.using('default').filter(edited__title='Pro Django').values_list('name', flat=True)),\n                          ['George Vilches'])\n        self.assertEqual(list(Person.objects.using('other').filter(edited__title='Pro Django').values_list('name', flat=True)),\n                          [])\n\n        self.assertEqual(list(Person.objects.using('default').filter(edited__title='Dive into Python').values_list('name', flat=True)),\n                          [])\n        self.assertEqual(list(Person.objects.using('other').filter(edited__title='Dive into Python').values_list('name', flat=True)),\n                          ['Chris Mills'])\n\n        # Reget the objects to clear caches\n        chris = Person.objects.using('other').get(name=\"Chris Mills\")\n        dive = Book.objects.using('other').get(title=\"Dive into Python\")\n\n        # Retrive related object by descriptor. Related objects should be database-baound\n        self.assertEqual(list(chris.edited.values_list('title', flat=True)),\n                          ['Dive into Python'])\n\n    def test_foreign_key_reverse_operations(self):\n        \"FK reverse manipulations are all constrained to a single DB\"\n        dive = Book.objects.using('other').create(title=\"Dive into Python\",\n                                                       published=datetime.date(2009, 5, 4))\n\n        mark = Person.objects.using('other').create(name=\"Mark Pilgrim\")\n        chris = Person.objects.using('other').create(name=\"Chris Mills\")\n\n        # Save the author relations\n        dive.editor = chris\n        dive.save()\n\n        # Add a second book edited by chris\n        html5 = Book.objects.using('other').create(title=\"Dive into HTML5\", published=datetime.date(2010, 3, 15))\n        self.assertEqual(list(Person.objects.using('other').filter(edited__title='Dive into HTML5').values_list('name', flat=True)),\n                          [])\n\n        chris.edited.add(html5)\n        self.assertEqual(list(Person.objects.using('other').filter(edited__title='Dive into HTML5').values_list('name', flat=True)),\n                          ['Chris Mills'])\n        self.assertEqual(list(Person.objects.using('other').filter(edited__title='Dive into Python').values_list('name', flat=True)),\n                          ['Chris Mills'])\n\n        # Remove the second editor\n        chris.edited.remove(html5)\n        self.assertEqual(list(Person.objects.using('other').filter(edited__title='Dive into HTML5').values_list('name', flat=True)),\n                          [])\n        self.assertEqual(list(Person.objects.using('other').filter(edited__title='Dive into Python').values_list('name', flat=True)),\n                          ['Chris Mills'])\n\n        # Clear all edited books\n        chris.edited.clear()\n        self.assertEqual(list(Person.objects.using('other').filter(edited__title='Dive into HTML5').values_list('name', flat=True)),\n                          [])\n        self.assertEqual(list(Person.objects.using('other').filter(edited__title='Dive into Python').values_list('name', flat=True)),\n                          [])\n\n        # Create an author through the m2m interface\n        chris.edited.create(title='Dive into Water', published=datetime.date(2010, 3, 15))\n        self.assertEqual(list(Person.objects.using('other').filter(edited__title='Dive into HTML5').values_list('name', flat=True)),\n                          [])\n        self.assertEqual(list(Person.objects.using('other').filter(edited__title='Dive into Water').values_list('name', flat=True)),\n                          ['Chris Mills'])\n        self.assertEqual(list(Person.objects.using('other').filter(edited__title='Dive into Python').values_list('name', flat=True)),\n                          [])\n\n    def test_foreign_key_cross_database_protection(self):\n        \"Operations that involve sharing FK objects across databases raise an error\"\n        # Create a book and author on the default database\n        pro = Book.objects.create(title=\"Pro Django\",\n                                  published=datetime.date(2008, 12, 16))\n\n        marty = Person.objects.create(name=\"Marty Alchin\")\n\n        # Create a book and author on the other database\n        dive = Book.objects.using('other').create(title=\"Dive into Python\",\n                                                  published=datetime.date(2009, 5, 4))\n\n        mark = Person.objects.using('other').create(name=\"Mark Pilgrim\")\n\n        # Set a foreign key with an object from a different database\n        try:\n            dive.editor = marty\n            self.fail(\"Shouldn't be able to assign across databases\")\n        except ValueError:\n            pass\n\n        # Set a foreign key set with an object from a different database\n        try:\n            marty.edited = [pro, dive]\n            self.fail(\"Shouldn't be able to assign across databases\")\n        except ValueError:\n            pass\n\n        # Add to a foreign key set with an object from a different database\n        try:\n            marty.edited.add(dive)\n            self.fail(\"Shouldn't be able to assign across databases\")\n        except ValueError:\n            pass\n\n        # BUT! if you assign a FK object when the base object hasn't\n        # been saved yet, you implicitly assign the database for the\n        # base object.\n        chris = Person(name=\"Chris Mills\")\n        html5 = Book(title=\"Dive into HTML5\", published=datetime.date(2010, 3, 15))\n        # initially, no db assigned\n        self.assertEqual(chris._state.db, None)\n        self.assertEqual(html5._state.db, None)\n\n        # old object comes from 'other', so the new object is set to use 'other'...\n        dive.editor = chris\n        html5.editor = mark\n        self.assertEqual(chris._state.db, 'other')\n        self.assertEqual(html5._state.db, 'other')\n        # ... but it isn't saved yet\n        self.assertEqual(list(Person.objects.using('other').values_list('name',flat=True)),\n                          ['Mark Pilgrim'])\n        self.assertEqual(list(Book.objects.using('other').values_list('title',flat=True)),\n                           ['Dive into Python'])\n\n        # When saved (no using required), new objects goes to 'other'\n        chris.save()\n        html5.save()\n        self.assertEqual(list(Person.objects.using('default').values_list('name',flat=True)),\n                          ['Marty Alchin'])\n        self.assertEqual(list(Person.objects.using('other').values_list('name',flat=True)),\n                          ['Chris Mills', 'Mark Pilgrim'])\n        self.assertEqual(list(Book.objects.using('default').values_list('title',flat=True)),\n                          ['Pro Django'])\n        self.assertEqual(list(Book.objects.using('other').values_list('title',flat=True)),\n                          ['Dive into HTML5', 'Dive into Python'])\n\n        # This also works if you assign the FK in the constructor\n        water = Book(title=\"Dive into Water\", published=datetime.date(2001, 1, 1), editor=mark)\n        self.assertEqual(water._state.db, 'other')\n        # ... but it isn't saved yet\n        self.assertEqual(list(Book.objects.using('default').values_list('title',flat=True)),\n                          ['Pro Django'])\n        self.assertEqual(list(Book.objects.using('other').values_list('title',flat=True)),\n                          ['Dive into HTML5', 'Dive into Python'])\n\n        # When saved, the new book goes to 'other'\n        water.save()\n        self.assertEqual(list(Book.objects.using('default').values_list('title',flat=True)),\n                          ['Pro Django'])\n        self.assertEqual(list(Book.objects.using('other').values_list('title',flat=True)),\n                          ['Dive into HTML5', 'Dive into Python', 'Dive into Water'])\n\n    def test_foreign_key_deletion(self):\n        \"Cascaded deletions of Foreign Key relations issue queries on the right database\"\n        mark = Person.objects.using('other').create(name=\"Mark Pilgrim\")\n        fido = Pet.objects.using('other').create(name=\"Fido\", owner=mark)\n\n        # Check the initial state\n        self.assertEqual(Person.objects.using('default').count(), 0)\n        self.assertEqual(Pet.objects.using('default').count(), 0)\n\n        self.assertEqual(Person.objects.using('other').count(), 1)\n        self.assertEqual(Pet.objects.using('other').count(), 1)\n\n        # Delete the person object, which will cascade onto the pet\n        mark.delete(using='other')\n\n        self.assertEqual(Person.objects.using('default').count(), 0)\n        self.assertEqual(Pet.objects.using('default').count(), 0)\n\n        # Both the pet and the person have been deleted from the right database\n        self.assertEqual(Person.objects.using('other').count(), 0)\n        self.assertEqual(Pet.objects.using('other').count(), 0)\n\n    def test_foreign_key_validation(self):\n        \"ForeignKey.validate() uses the correct database\"\n        mickey = Person.objects.using('other').create(name=\"Mickey\")\n        pluto = Pet.objects.using('other').create(name=\"Pluto\", owner=mickey)\n        self.assertEqual(None, pluto.full_clean())\n\n    def test_o2o_separation(self):\n        \"OneToOne fields are constrained to a single database\"\n        # Create a user and profile on the default database\n        alice = User.objects.db_manager('default').create_user('alice', 'alice@example.com')\n        alice_profile = UserProfile.objects.using('default').create(user=alice, flavor='chocolate')\n\n        # Create a user and profile on the other database\n        bob = User.objects.db_manager('other').create_user('bob', 'bob@example.com')\n        bob_profile = UserProfile.objects.using('other').create(user=bob, flavor='crunchy frog')\n\n        # Retrieve related objects; queries should be database constrained\n        alice = User.objects.using('default').get(username=\"alice\")\n        self.assertEqual(alice.userprofile.flavor, \"chocolate\")\n\n        bob = User.objects.using('other').get(username=\"bob\")\n        self.assertEqual(bob.userprofile.flavor, \"crunchy frog\")\n\n        # Check that queries work across joins\n        self.assertEqual(list(User.objects.using('default').filter(userprofile__flavor='chocolate').values_list('username', flat=True)),\n                          ['alice'])\n        self.assertEqual(list(User.objects.using('other').filter(userprofile__flavor='chocolate').values_list('username', flat=True)),\n                          [])\n\n        self.assertEqual(list(User.objects.using('default').filter(userprofile__flavor='crunchy frog').values_list('username', flat=True)),\n                          [])\n        self.assertEqual(list(User.objects.using('other').filter(userprofile__flavor='crunchy frog').values_list('username', flat=True)),\n                          ['bob'])\n\n        # Reget the objects to clear caches\n        alice_profile = UserProfile.objects.using('default').get(flavor='chocolate')\n        bob_profile = UserProfile.objects.using('other').get(flavor='crunchy frog')\n\n        # Retrive related object by descriptor. Related objects should be database-baound\n        self.assertEqual(alice_profile.user.username, 'alice')\n        self.assertEqual(bob_profile.user.username, 'bob')\n\n    def test_o2o_cross_database_protection(self):\n        \"Operations that involve sharing FK objects across databases raise an error\"\n        # Create a user and profile on the default database\n        alice = User.objects.db_manager('default').create_user('alice', 'alice@example.com')\n\n        # Create a user and profile on the other database\n        bob = User.objects.db_manager('other').create_user('bob', 'bob@example.com')\n\n        # Set a one-to-one relation with an object from a different database\n        alice_profile = UserProfile.objects.using('default').create(user=alice, flavor='chocolate')\n        try:\n            bob.userprofile = alice_profile\n            self.fail(\"Shouldn't be able to assign across databases\")\n        except ValueError:\n            pass\n\n        # BUT! if you assign a FK object when the base object hasn't\n        # been saved yet, you implicitly assign the database for the\n        # base object.\n        bob_profile = UserProfile.objects.using('other').create(user=bob, flavor='crunchy frog')\n\n        new_bob_profile = UserProfile(flavor=\"spring surprise\")\n\n        # assigning a profile requires a explicit pk as the object isn't saved\n        charlie = User(pk=51, username='charlie', email='charlie@example.com')\n        charlie.set_unusable_password()\n\n        # initially, no db assigned\n        self.assertEqual(new_bob_profile._state.db, None)\n        self.assertEqual(charlie._state.db, None)\n\n        # old object comes from 'other', so the new object is set to use 'other'...\n        new_bob_profile.user = bob\n        charlie.userprofile = bob_profile\n        self.assertEqual(new_bob_profile._state.db, 'other')\n        self.assertEqual(charlie._state.db, 'other')\n\n        # ... but it isn't saved yet\n        self.assertEqual(list(User.objects.using('other').values_list('username',flat=True)),\n                          ['bob'])\n        self.assertEqual(list(UserProfile.objects.using('other').values_list('flavor',flat=True)),\n                           ['crunchy frog'])\n\n        # When saved (no using required), new objects goes to 'other'\n        charlie.save()\n        bob_profile.save()\n        new_bob_profile.save()\n        self.assertEqual(list(User.objects.using('default').values_list('username',flat=True)),\n                          ['alice'])\n        self.assertEqual(list(User.objects.using('other').values_list('username',flat=True)),\n                          ['bob', 'charlie'])\n        self.assertEqual(list(UserProfile.objects.using('default').values_list('flavor',flat=True)),\n                           ['chocolate'])\n        self.assertEqual(list(UserProfile.objects.using('other').values_list('flavor',flat=True)),\n                           ['crunchy frog', 'spring surprise'])\n\n        # This also works if you assign the O2O relation in the constructor\n        denise = User.objects.db_manager('other').create_user('denise','denise@example.com')\n        denise_profile = UserProfile(flavor=\"tofu\", user=denise)\n\n        self.assertEqual(denise_profile._state.db, 'other')\n        # ... but it isn't saved yet\n        self.assertEqual(list(UserProfile.objects.using('default').values_list('flavor',flat=True)),\n                           ['chocolate'])\n        self.assertEqual(list(UserProfile.objects.using('other').values_list('flavor',flat=True)),\n                           ['crunchy frog', 'spring surprise'])\n\n        # When saved, the new profile goes to 'other'\n        denise_profile.save()\n        self.assertEqual(list(UserProfile.objects.using('default').values_list('flavor',flat=True)),\n                           ['chocolate'])\n        self.assertEqual(list(UserProfile.objects.using('other').values_list('flavor',flat=True)),\n                           ['crunchy frog', 'spring surprise', 'tofu'])\n\n    def test_generic_key_separation(self):\n        \"Generic fields are constrained to a single database\"\n        # Create a book and author on the default database\n        pro = Book.objects.create(title=\"Pro Django\",\n                                  published=datetime.date(2008, 12, 16))\n\n        review1 = Review.objects.create(source=\"Python Monthly\", content_object=pro)\n\n        # Create a book and author on the other database\n        dive = Book.objects.using('other').create(title=\"Dive into Python\",\n                                                  published=datetime.date(2009, 5, 4))\n\n        review2 = Review.objects.using('other').create(source=\"Python Weekly\", content_object=dive)\n\n        review1 = Review.objects.using('default').get(source=\"Python Monthly\")\n        self.assertEqual(review1.content_object.title, \"Pro Django\")\n\n        review2 = Review.objects.using('other').get(source=\"Python Weekly\")\n        self.assertEqual(review2.content_object.title, \"Dive into Python\")\n\n        # Reget the objects to clear caches\n        dive = Book.objects.using('other').get(title=\"Dive into Python\")\n\n        # Retrive related object by descriptor. Related objects should be database-bound\n        self.assertEqual(list(dive.reviews.all().values_list('source', flat=True)),\n                          ['Python Weekly'])\n\n    def test_generic_key_reverse_operations(self):\n        \"Generic reverse manipulations are all constrained to a single DB\"\n        dive = Book.objects.using('other').create(title=\"Dive into Python\",\n                                                  published=datetime.date(2009, 5, 4))\n\n        temp = Book.objects.using('other').create(title=\"Temp\",\n                                                  published=datetime.date(2009, 5, 4))\n\n        review1 = Review.objects.using('other').create(source=\"Python Weekly\", content_object=dive)\n        review2 = Review.objects.using('other').create(source=\"Python Monthly\", content_object=temp)\n\n        self.assertEqual(list(Review.objects.using('default').filter(object_id=dive.pk).values_list('source', flat=True)),\n                          [])\n        self.assertEqual(list(Review.objects.using('other').filter(object_id=dive.pk).values_list('source', flat=True)),\n                          ['Python Weekly'])\n\n        # Add a second review\n        dive.reviews.add(review2)\n        self.assertEqual(list(Review.objects.using('default').filter(object_id=dive.pk).values_list('source', flat=True)),\n                          [])\n        self.assertEqual(list(Review.objects.using('other').filter(object_id=dive.pk).values_list('source', flat=True)),\n                          ['Python Monthly', 'Python Weekly'])\n\n        # Remove the second author\n        dive.reviews.remove(review1)\n        self.assertEqual(list(Review.objects.using('default').filter(object_id=dive.pk).values_list('source', flat=True)),\n                          [])\n        self.assertEqual(list(Review.objects.using('other').filter(object_id=dive.pk).values_list('source', flat=True)),\n                          ['Python Monthly'])\n\n        # Clear all reviews\n        dive.reviews.clear()\n        self.assertEqual(list(Review.objects.using('default').filter(object_id=dive.pk).values_list('source', flat=True)),\n                          [])\n        self.assertEqual(list(Review.objects.using('other').filter(object_id=dive.pk).values_list('source', flat=True)),\n                          [])\n\n        # Create an author through the generic interface\n        dive.reviews.create(source='Python Daily')\n        self.assertEqual(list(Review.objects.using('default').filter(object_id=dive.pk).values_list('source', flat=True)),\n                          [])\n        self.assertEqual(list(Review.objects.using('other').filter(object_id=dive.pk).values_list('source', flat=True)),\n                          ['Python Daily'])\n\n    def test_generic_key_cross_database_protection(self):\n        \"Operations that involve sharing generic key objects across databases raise an error\"\n        # Create a book and author on the default database\n        pro = Book.objects.create(title=\"Pro Django\",\n                                  published=datetime.date(2008, 12, 16))\n\n        review1 = Review.objects.create(source=\"Python Monthly\", content_object=pro)\n\n        # Create a book and author on the other database\n        dive = Book.objects.using('other').create(title=\"Dive into Python\",\n                                                  published=datetime.date(2009, 5, 4))\n\n        review2 = Review.objects.using('other').create(source=\"Python Weekly\", content_object=dive)\n\n        # Set a foreign key with an object from a different database\n        try:\n            review1.content_object = dive\n            self.fail(\"Shouldn't be able to assign across databases\")\n        except ValueError:\n            pass\n\n        # Add to a foreign key set with an object from a different database\n        try:\n            dive.reviews.add(review1)\n            self.fail(\"Shouldn't be able to assign across databases\")\n        except ValueError:\n            pass\n\n        # BUT! if you assign a FK object when the base object hasn't\n        # been saved yet, you implicitly assign the database for the\n        # base object.\n        review3 = Review(source=\"Python Daily\")\n        # initially, no db assigned\n        self.assertEqual(review3._state.db, None)\n\n        # Dive comes from 'other', so review3 is set to use 'other'...\n        review3.content_object = dive\n        self.assertEqual(review3._state.db, 'other')\n        # ... but it isn't saved yet\n        self.assertEqual(list(Review.objects.using('default').filter(object_id=pro.pk).values_list('source', flat=True)),\n                          ['Python Monthly'])\n        self.assertEqual(list(Review.objects.using('other').filter(object_id=dive.pk).values_list('source',flat=True)),\n                          ['Python Weekly'])\n\n        # When saved, John goes to 'other'\n        review3.save()\n        self.assertEqual(list(Review.objects.using('default').filter(object_id=pro.pk).values_list('source', flat=True)),\n                          ['Python Monthly'])\n        self.assertEqual(list(Review.objects.using('other').filter(object_id=dive.pk).values_list('source',flat=True)),\n                          ['Python Daily', 'Python Weekly'])\n\n    def test_generic_key_deletion(self):\n        \"Cascaded deletions of Generic Key relations issue queries on the right database\"\n        dive = Book.objects.using('other').create(title=\"Dive into Python\",\n                                                  published=datetime.date(2009, 5, 4))\n        review = Review.objects.using('other').create(source=\"Python Weekly\", content_object=dive)\n\n        # Check the initial state\n        self.assertEqual(Book.objects.using('default').count(), 0)\n        self.assertEqual(Review.objects.using('default').count(), 0)\n\n        self.assertEqual(Book.objects.using('other').count(), 1)\n        self.assertEqual(Review.objects.using('other').count(), 1)\n\n        # Delete the Book object, which will cascade onto the pet\n        dive.delete(using='other')\n\n        self.assertEqual(Book.objects.using('default').count(), 0)\n        self.assertEqual(Review.objects.using('default').count(), 0)\n\n        # Both the pet and the person have been deleted from the right database\n        self.assertEqual(Book.objects.using('other').count(), 0)\n        self.assertEqual(Review.objects.using('other').count(), 0)\n\n    def test_ordering(self):\n        \"get_next_by_XXX commands stick to a single database\"\n        pro = Book.objects.create(title=\"Pro Django\",\n                                  published=datetime.date(2008, 12, 16))\n\n        dive = Book.objects.using('other').create(title=\"Dive into Python\",\n                                                  published=datetime.date(2009, 5, 4))\n\n        learn = Book.objects.using('other').create(title=\"Learning Python\",\n                                                   published=datetime.date(2008, 7, 16))\n\n        self.assertEqual(learn.get_next_by_published().title, \"Dive into Python\")\n        self.assertEqual(dive.get_previous_by_published().title, \"Learning Python\")\n\n    def test_raw(self):\n        \"test the raw() method across databases\"\n        dive = Book.objects.using('other').create(title=\"Dive into Python\",\n            published=datetime.date(2009, 5, 4))\n        val = Book.objects.db_manager(\"other\").raw('SELECT id FROM multiple_database_book')\n        self.assertQuerysetEqual(val, [dive.pk], attrgetter(\"pk\"))\n\n        val = Book.objects.raw('SELECT id FROM multiple_database_book').using('other')\n        self.assertQuerysetEqual(val, [dive.pk], attrgetter(\"pk\"))\n\n    def test_select_related(self):\n        \"Database assignment is retained if an object is retrieved with select_related()\"\n        # Create a book and author on the other database\n        mark = Person.objects.using('other').create(name=\"Mark Pilgrim\")\n        dive = Book.objects.using('other').create(title=\"Dive into Python\",\n                                                  published=datetime.date(2009, 5, 4),\n                                                  editor=mark)\n\n        # Retrieve the Person using select_related()\n        book = Book.objects.using('other').select_related('editor').get(title=\"Dive into Python\")\n\n        # The editor instance should have a db state\n        self.assertEqual(book.editor._state.db, 'other')\n\n    def test_subquery(self):\n        \"\"\"Make sure as_sql works with subqueries and master/slave.\"\"\"\n        sub = Person.objects.using('other').filter(name='fff')\n        qs = Book.objects.filter(editor__in=sub)\n\n        # When you call __str__ on the query object, it doesn't know about using\n        # so it falls back to the default. If the subquery explicitly uses a\n        # different database, an error should be raised.\n        self.assertRaises(ValueError, str, qs.query)\n\n        # Evaluating the query shouldn't work, either\n        try:\n            for obj in qs:\n                pass\n            self.fail('Iterating over query should raise ValueError')\n        except ValueError:\n            pass\n\n    def test_related_manager(self):\n        \"Related managers return managers, not querysets\"\n        mark = Person.objects.using('other').create(name=\"Mark Pilgrim\")\n\n        # extra_arg is removed by the BookManager's implementation of\n        # create(); but the BookManager's implementation won't get called\n        # unless edited returns a Manager, not a queryset\n        mark.book_set.create(title=\"Dive into Python\",\n                             published=datetime.date(2009, 5, 4),\n                             extra_arg=True)\n\n        mark.book_set.get_or_create(title=\"Dive into Python\",\n                                    published=datetime.date(2009, 5, 4),\n                                    extra_arg=True)\n\n        mark.edited.create(title=\"Dive into Water\",\n                           published=datetime.date(2009, 5, 4),\n                           extra_arg=True)\n\n        mark.edited.get_or_create(title=\"Dive into Water\",\n                                  published=datetime.date(2009, 5, 4),\n                                  extra_arg=True)\n\nclass TestRouter(object):\n    # A test router. The behavior is vaguely master/slave, but the\n    # databases aren't assumed to propagate changes.\n    def db_for_read(self, model, instance=None, **hints):\n        if instance:\n            return instance._state.db or 'other'\n        return 'other'\n\n    def db_for_write(self, model, **hints):\n        return DEFAULT_DB_ALIAS\n\n    def allow_relation(self, obj1, obj2, **hints):\n        return obj1._state.db in ('default', 'other') and obj2._state.db in ('default', 'other')\n\n    def allow_syncdb(self, db, model):\n        return True\n\nclass AuthRouter(object):\n    \"\"\"A router to control all database operations on models in\n    the contrib.auth application\"\"\"\n\n    def db_for_read(self, model, **hints):\n        \"Point all read operations on auth models to 'default'\"\n        if model._meta.app_label == 'auth':\n            # We use default here to ensure we can tell the difference\n            # between a read request and a write request for Auth objects\n            return 'default'\n        return None\n\n    def db_for_write(self, model, **hints):\n        \"Point all operations on auth models to 'other'\"\n        if model._meta.app_label == 'auth':\n            return 'other'\n        return None\n\n    def allow_relation(self, obj1, obj2, **hints):\n        \"Allow any relation if a model in Auth is involved\"\n        if obj1._meta.app_label == 'auth' or obj2._meta.app_label == 'auth':\n            return True\n        return None\n\n    def allow_syncdb(self, db, model):\n        \"Make sure the auth app only appears on the 'other' db\"\n        if db == 'other':\n            return model._meta.app_label == 'auth'\n        elif model._meta.app_label == 'auth':\n            return False\n        return None\n\nclass WriteRouter(object):\n    # A router that only expresses an opinion on writes\n    def db_for_write(self, model, **hints):\n        return 'writer'\n\nclass RouterTestCase(TestCase):\n    multi_db = True\n\n    def setUp(self):\n        # Make the 'other' database appear to be a slave of the 'default'\n        self.old_routers = router.routers\n        router.routers = [TestRouter()]\n\n    def tearDown(self):\n        # Restore the 'other' database as an independent database\n        router.routers = self.old_routers\n\n    def test_db_selection(self):\n        \"Check that querysets obey the router for db suggestions\"\n        self.assertEqual(Book.objects.db, 'other')\n        self.assertEqual(Book.objects.all().db, 'other')\n\n        self.assertEqual(Book.objects.using('default').db, 'default')\n\n        self.assertEqual(Book.objects.db_manager('default').db, 'default')\n        self.assertEqual(Book.objects.db_manager('default').all().db, 'default')\n\n    def test_syncdb_selection(self):\n        \"Synchronization behavior is predictable\"\n\n        self.assertTrue(router.allow_syncdb('default', User))\n        self.assertTrue(router.allow_syncdb('default', Book))\n\n        self.assertTrue(router.allow_syncdb('other', User))\n        self.assertTrue(router.allow_syncdb('other', Book))\n\n        # Add the auth router to the chain.\n        # TestRouter is a universal synchronizer, so it should have no effect.\n        router.routers = [TestRouter(), AuthRouter()]\n\n        self.assertTrue(router.allow_syncdb('default', User))\n        self.assertTrue(router.allow_syncdb('default', Book))\n\n        self.assertTrue(router.allow_syncdb('other', User))\n        self.assertTrue(router.allow_syncdb('other', Book))\n\n        # Now check what happens if the router order is the other way around\n        router.routers = [AuthRouter(), TestRouter()]\n\n        self.assertFalse(router.allow_syncdb('default', User))\n        self.assertTrue(router.allow_syncdb('default', Book))\n\n        self.assertTrue(router.allow_syncdb('other', User))\n        self.assertFalse(router.allow_syncdb('other', Book))\n\n    def test_partial_router(self):\n        \"A router can choose to implement a subset of methods\"\n        dive = Book.objects.using('other').create(title=\"Dive into Python\",\n                                                  published=datetime.date(2009, 5, 4))\n\n        # First check the baseline behavior.\n\n        self.assertEqual(router.db_for_read(User), 'other')\n        self.assertEqual(router.db_for_read(Book), 'other')\n\n        self.assertEqual(router.db_for_write(User), 'default')\n        self.assertEqual(router.db_for_write(Book), 'default')\n\n        self.assertTrue(router.allow_relation(dive, dive))\n\n        self.assertTrue(router.allow_syncdb('default', User))\n        self.assertTrue(router.allow_syncdb('default', Book))\n\n        router.routers = [WriteRouter(), AuthRouter(), TestRouter()]\n\n        self.assertEqual(router.db_for_read(User), 'default')\n        self.assertEqual(router.db_for_read(Book), 'other')\n\n        self.assertEqual(router.db_for_write(User), 'writer')\n        self.assertEqual(router.db_for_write(Book), 'writer')\n\n        self.assertTrue(router.allow_relation(dive, dive))\n\n        self.assertFalse(router.allow_syncdb('default', User))\n        self.assertTrue(router.allow_syncdb('default', Book))\n\n\n    def test_database_routing(self):\n        marty = Person.objects.using('default').create(name=\"Marty Alchin\")\n        pro = Book.objects.using('default').create(title=\"Pro Django\",\n                                                   published=datetime.date(2008, 12, 16),\n                                                   editor=marty)\n        pro.authors = [marty]\n\n        # Create a book and author on the other database\n        dive = Book.objects.using('other').create(title=\"Dive into Python\",\n                                                  published=datetime.date(2009, 5, 4))\n\n        # An update query will be routed to the default database\n        Book.objects.filter(title='Pro Django').update(pages=200)\n\n        try:\n            # By default, the get query will be directed to 'other'\n            Book.objects.get(title='Pro Django')\n            self.fail(\"Shouldn't be able to find the book\")\n        except Book.DoesNotExist:\n            pass\n\n        # But the same query issued explicitly at a database will work.\n        pro = Book.objects.using('default').get(title='Pro Django')\n\n        # Check that the update worked.\n        self.assertEqual(pro.pages, 200)\n\n        # An update query with an explicit using clause will be routed\n        # to the requested database.\n        Book.objects.using('other').filter(title='Dive into Python').update(pages=300)\n        self.assertEqual(Book.objects.get(title='Dive into Python').pages, 300)\n\n        # Related object queries stick to the same database\n        # as the original object, regardless of the router\n        self.assertEqual(list(pro.authors.values_list('name', flat=True)), ['Marty Alchin'])\n        self.assertEqual(pro.editor.name, 'Marty Alchin')\n\n        # get_or_create is a special case. The get needs to be targeted at\n        # the write database in order to avoid potential transaction\n        # consistency problems\n        book, created = Book.objects.get_or_create(title=\"Pro Django\")\n        self.assertFalse(created)\n\n        book, created = Book.objects.get_or_create(title=\"Dive Into Python\",\n                                                   defaults={'published':datetime.date(2009, 5, 4)})\n        self.assertTrue(created)\n\n        # Check the head count of objects\n        self.assertEqual(Book.objects.using('default').count(), 2)\n        self.assertEqual(Book.objects.using('other').count(), 1)\n        # If a database isn't specified, the read database is used\n        self.assertEqual(Book.objects.count(), 1)\n\n        # A delete query will also be routed to the default database\n        Book.objects.filter(pages__gt=150).delete()\n\n        # The default database has lost the book.\n        self.assertEqual(Book.objects.using('default').count(), 1)\n        self.assertEqual(Book.objects.using('other').count(), 1)\n\n    def test_foreign_key_cross_database_protection(self):\n        \"Foreign keys can cross databases if they two databases have a common source\"\n        # Create a book and author on the default database\n        pro = Book.objects.using('default').create(title=\"Pro Django\",\n                                                   published=datetime.date(2008, 12, 16))\n\n        marty = Person.objects.using('default').create(name=\"Marty Alchin\")\n\n        # Create a book and author on the other database\n        dive = Book.objects.using('other').create(title=\"Dive into Python\",\n                                                  published=datetime.date(2009, 5, 4))\n\n        mark = Person.objects.using('other').create(name=\"Mark Pilgrim\")\n\n        # Set a foreign key with an object from a different database\n        try:\n            dive.editor = marty\n        except ValueError:\n            self.fail(\"Assignment across master/slave databases with a common source should be ok\")\n\n        # Database assignments of original objects haven't changed...\n        self.assertEqual(marty._state.db, 'default')\n        self.assertEqual(pro._state.db, 'default')\n        self.assertEqual(dive._state.db, 'other')\n        self.assertEqual(mark._state.db, 'other')\n\n        # ... but they will when the affected object is saved.\n        dive.save()\n        self.assertEqual(dive._state.db, 'default')\n\n        # ...and the source database now has a copy of any object saved\n        try:\n            Book.objects.using('default').get(title='Dive into Python').delete()\n        except Book.DoesNotExist:\n            self.fail('Source database should have a copy of saved object')\n\n        # This isn't a real master-slave database, so restore the original from other\n        dive = Book.objects.using('other').get(title='Dive into Python')\n        self.assertEqual(dive._state.db, 'other')\n\n        # Set a foreign key set with an object from a different database\n        try:\n            marty.edited = [pro, dive]\n        except ValueError:\n            self.fail(\"Assignment across master/slave databases with a common source should be ok\")\n\n        # Assignment implies a save, so database assignments of original objects have changed...\n        self.assertEqual(marty._state.db, 'default')\n        self.assertEqual(pro._state.db, 'default')\n        self.assertEqual(dive._state.db, 'default')\n        self.assertEqual(mark._state.db, 'other')\n\n        # ...and the source database now has a copy of any object saved\n        try:\n            Book.objects.using('default').get(title='Dive into Python').delete()\n        except Book.DoesNotExist:\n            self.fail('Source database should have a copy of saved object')\n\n        # This isn't a real master-slave database, so restore the original from other\n        dive = Book.objects.using('other').get(title='Dive into Python')\n        self.assertEqual(dive._state.db, 'other')\n\n        # Add to a foreign key set with an object from a different database\n        try:\n            marty.edited.add(dive)\n        except ValueError:\n            self.fail(\"Assignment across master/slave databases with a common source should be ok\")\n\n        # Add implies a save, so database assignments of original objects have changed...\n        self.assertEqual(marty._state.db, 'default')\n        self.assertEqual(pro._state.db, 'default')\n        self.assertEqual(dive._state.db, 'default')\n        self.assertEqual(mark._state.db, 'other')\n\n        # ...and the source database now has a copy of any object saved\n        try:\n            Book.objects.using('default').get(title='Dive into Python').delete()\n        except Book.DoesNotExist:\n            self.fail('Source database should have a copy of saved object')\n\n        # This isn't a real master-slave database, so restore the original from other\n        dive = Book.objects.using('other').get(title='Dive into Python')\n\n        # If you assign a FK object when the base object hasn't\n        # been saved yet, you implicitly assign the database for the\n        # base object.\n        chris = Person(name=\"Chris Mills\")\n        html5 = Book(title=\"Dive into HTML5\", published=datetime.date(2010, 3, 15))\n        # initially, no db assigned\n        self.assertEqual(chris._state.db, None)\n        self.assertEqual(html5._state.db, None)\n\n        # old object comes from 'other', so the new object is set to use the\n        # source of 'other'...\n        self.assertEqual(dive._state.db, 'other')\n        dive.editor = chris\n        html5.editor = mark\n\n        self.assertEqual(dive._state.db, 'other')\n        self.assertEqual(mark._state.db, 'other')\n        self.assertEqual(chris._state.db, 'default')\n        self.assertEqual(html5._state.db, 'default')\n\n        # This also works if you assign the FK in the constructor\n        water = Book(title=\"Dive into Water\", published=datetime.date(2001, 1, 1), editor=mark)\n        self.assertEqual(water._state.db, 'default')\n\n        # For the remainder of this test, create a copy of 'mark' in the\n        # 'default' database to prevent integrity errors on backends that\n        # don't defer constraints checks until the end of the transaction\n        mark.save(using='default')\n\n        # This moved 'mark' in the 'default' database, move it back in 'other'\n        mark.save(using='other')\n        self.assertEqual(mark._state.db, 'other')\n\n        # If you create an object through a FK relation, it will be\n        # written to the write database, even if the original object\n        # was on the read database\n        cheesecake = mark.edited.create(title='Dive into Cheesecake', published=datetime.date(2010, 3, 15))\n        self.assertEqual(cheesecake._state.db, 'default')\n\n        # Same goes for get_or_create, regardless of whether getting or creating\n        cheesecake, created = mark.edited.get_or_create(title='Dive into Cheesecake', published=datetime.date(2010, 3, 15))\n        self.assertEqual(cheesecake._state.db, 'default')\n\n        puddles, created = mark.edited.get_or_create(title='Dive into Puddles', published=datetime.date(2010, 3, 15))\n        self.assertEqual(puddles._state.db, 'default')\n\n    def test_m2m_cross_database_protection(self):\n        \"M2M relations can cross databases if the database share a source\"\n        # Create books and authors on the inverse to the usual database\n        pro = Book.objects.using('other').create(pk=1, title=\"Pro Django\",\n                                                 published=datetime.date(2008, 12, 16))\n\n        marty = Person.objects.using('other').create(pk=1, name=\"Marty Alchin\")\n\n        dive = Book.objects.using('default').create(pk=2, title=\"Dive into Python\",\n                                                    published=datetime.date(2009, 5, 4))\n\n        mark = Person.objects.using('default').create(pk=2, name=\"Mark Pilgrim\")\n\n        # Now save back onto the usual database.\n        # This simulates master/slave - the objects exist on both database,\n        # but the _state.db is as it is for all other tests.\n        pro.save(using='default')\n        marty.save(using='default')\n        dive.save(using='other')\n        mark.save(using='other')\n\n        # Check that we have 2 of both types of object on both databases\n        self.assertEqual(Book.objects.using('default').count(), 2)\n        self.assertEqual(Book.objects.using('other').count(), 2)\n        self.assertEqual(Person.objects.using('default').count(), 2)\n        self.assertEqual(Person.objects.using('other').count(), 2)\n\n        # Set a m2m set with an object from a different database\n        try:\n            marty.book_set = [pro, dive]\n        except ValueError:\n            self.fail(\"Assignment across master/slave databases with a common source should be ok\")\n\n        # Database assignments don't change\n        self.assertEqual(marty._state.db, 'default')\n        self.assertEqual(pro._state.db, 'default')\n        self.assertEqual(dive._state.db, 'other')\n        self.assertEqual(mark._state.db, 'other')\n\n        # All m2m relations should be saved on the default database\n        self.assertEqual(Book.authors.through.objects.using('default').count(), 2)\n        self.assertEqual(Book.authors.through.objects.using('other').count(), 0)\n\n        # Reset relations\n        Book.authors.through.objects.using('default').delete()\n\n        # Add to an m2m with an object from a different database\n        try:\n            marty.book_set.add(dive)\n        except ValueError:\n            self.fail(\"Assignment across master/slave databases with a common source should be ok\")\n\n        # Database assignments don't change\n        self.assertEqual(marty._state.db, 'default')\n        self.assertEqual(pro._state.db, 'default')\n        self.assertEqual(dive._state.db, 'other')\n        self.assertEqual(mark._state.db, 'other')\n\n        # All m2m relations should be saved on the default database\n        self.assertEqual(Book.authors.through.objects.using('default').count(), 1)\n        self.assertEqual(Book.authors.through.objects.using('other').count(), 0)\n\n        # Reset relations\n        Book.authors.through.objects.using('default').delete()\n\n        # Set a reverse m2m with an object from a different database\n        try:\n            dive.authors = [mark, marty]\n        except ValueError:\n            self.fail(\"Assignment across master/slave databases with a common source should be ok\")\n\n        # Database assignments don't change\n        self.assertEqual(marty._state.db, 'default')\n        self.assertEqual(pro._state.db, 'default')\n        self.assertEqual(dive._state.db, 'other')\n        self.assertEqual(mark._state.db, 'other')\n\n        # All m2m relations should be saved on the default database\n        self.assertEqual(Book.authors.through.objects.using('default').count(), 2)\n        self.assertEqual(Book.authors.through.objects.using('other').count(), 0)\n\n        # Reset relations\n        Book.authors.through.objects.using('default').delete()\n\n        self.assertEqual(Book.authors.through.objects.using('default').count(), 0)\n        self.assertEqual(Book.authors.through.objects.using('other').count(), 0)\n\n        # Add to a reverse m2m with an object from a different database\n        try:\n            dive.authors.add(marty)\n        except ValueError:\n            self.fail(\"Assignment across master/slave databases with a common source should be ok\")\n\n        # Database assignments don't change\n        self.assertEqual(marty._state.db, 'default')\n        self.assertEqual(pro._state.db, 'default')\n        self.assertEqual(dive._state.db, 'other')\n        self.assertEqual(mark._state.db, 'other')\n\n        # All m2m relations should be saved on the default database\n        self.assertEqual(Book.authors.through.objects.using('default').count(), 1)\n        self.assertEqual(Book.authors.through.objects.using('other').count(), 0)\n\n        # If you create an object through a M2M relation, it will be\n        # written to the write database, even if the original object\n        # was on the read database\n        alice = dive.authors.create(name='Alice')\n        self.assertEqual(alice._state.db, 'default')\n\n        # Same goes for get_or_create, regardless of whether getting or creating\n        alice, created = dive.authors.get_or_create(name='Alice')\n        self.assertEqual(alice._state.db, 'default')\n\n        bob, created = dive.authors.get_or_create(name='Bob')\n        self.assertEqual(bob._state.db, 'default')\n\n    def test_o2o_cross_database_protection(self):\n        \"Operations that involve sharing FK objects across databases raise an error\"\n        # Create a user and profile on the default database\n        alice = User.objects.db_manager('default').create_user('alice', 'alice@example.com')\n\n        # Create a user and profile on the other database\n        bob = User.objects.db_manager('other').create_user('bob', 'bob@example.com')\n\n        # Set a one-to-one relation with an object from a different database\n        alice_profile = UserProfile.objects.create(user=alice, flavor='chocolate')\n        try:\n            bob.userprofile = alice_profile\n        except ValueError:\n            self.fail(\"Assignment across master/slave databases with a common source should be ok\")\n\n        # Database assignments of original objects haven't changed...\n        self.assertEqual(alice._state.db, 'default')\n        self.assertEqual(alice_profile._state.db, 'default')\n        self.assertEqual(bob._state.db, 'other')\n\n        # ... but they will when the affected object is saved.\n        bob.save()\n        self.assertEqual(bob._state.db, 'default')\n\n    def test_generic_key_cross_database_protection(self):\n        \"Generic Key operations can span databases if they share a source\"\n        # Create a book and author on the default database\n        pro = Book.objects.using('default'\n                ).create(title=\"Pro Django\", published=datetime.date(2008, 12, 16))\n\n        review1 = Review.objects.using('default'\n                    ).create(source=\"Python Monthly\", content_object=pro)\n\n        # Create a book and author on the other database\n        dive = Book.objects.using('other'\n                ).create(title=\"Dive into Python\", published=datetime.date(2009, 5, 4))\n\n        review2 = Review.objects.using('other'\n                    ).create(source=\"Python Weekly\", content_object=dive)\n\n        # Set a generic foreign key with an object from a different database\n        try:\n            review1.content_object = dive\n        except ValueError:\n            self.fail(\"Assignment across master/slave databases with a common source should be ok\")\n\n        # Database assignments of original objects haven't changed...\n        self.assertEqual(pro._state.db, 'default')\n        self.assertEqual(review1._state.db, 'default')\n        self.assertEqual(dive._state.db, 'other')\n        self.assertEqual(review2._state.db, 'other')\n\n        # ... but they will when the affected object is saved.\n        dive.save()\n        self.assertEqual(review1._state.db, 'default')\n        self.assertEqual(dive._state.db, 'default')\n\n        # ...and the source database now has a copy of any object saved\n        try:\n            Book.objects.using('default').get(title='Dive into Python').delete()\n        except Book.DoesNotExist:\n            self.fail('Source database should have a copy of saved object')\n\n        # This isn't a real master-slave database, so restore the original from other\n        dive = Book.objects.using('other').get(title='Dive into Python')\n        self.assertEqual(dive._state.db, 'other')\n\n        # Add to a generic foreign key set with an object from a different database\n        try:\n            dive.reviews.add(review1)\n        except ValueError:\n            self.fail(\"Assignment across master/slave databases with a common source should be ok\")\n\n        # Database assignments of original objects haven't changed...\n        self.assertEqual(pro._state.db, 'default')\n        self.assertEqual(review1._state.db, 'default')\n        self.assertEqual(dive._state.db, 'other')\n        self.assertEqual(review2._state.db, 'other')\n\n        # ... but they will when the affected object is saved.\n        dive.save()\n        self.assertEqual(dive._state.db, 'default')\n\n        # ...and the source database now has a copy of any object saved\n        try:\n            Book.objects.using('default').get(title='Dive into Python').delete()\n        except Book.DoesNotExist:\n            self.fail('Source database should have a copy of saved object')\n\n        # BUT! if you assign a FK object when the base object hasn't\n        # been saved yet, you implicitly assign the database for the\n        # base object.\n        review3 = Review(source=\"Python Daily\")\n        # initially, no db assigned\n        self.assertEqual(review3._state.db, None)\n\n        # Dive comes from 'other', so review3 is set to use the source of 'other'...\n        review3.content_object = dive\n        self.assertEqual(review3._state.db, 'default')\n\n        # If you create an object through a M2M relation, it will be\n        # written to the write database, even if the original object\n        # was on the read database\n        dive = Book.objects.using('other').get(title='Dive into Python')\n        nyt = dive.reviews.create(source=\"New York Times\", content_object=dive)\n        self.assertEqual(nyt._state.db, 'default')\n\n    def test_m2m_managers(self):\n        \"M2M relations are represented by managers, and can be controlled like managers\"\n        pro = Book.objects.using('other').create(pk=1, title=\"Pro Django\",\n                                                 published=datetime.date(2008, 12, 16))\n\n        marty = Person.objects.using('other').create(pk=1, name=\"Marty Alchin\")\n        pro_authors = pro.authors.using('other')\n        authors = [marty]\n\n        self.assertEqual(pro.authors.db, 'other')\n        self.assertEqual(pro.authors.db_manager('default').db, 'default')\n        self.assertEqual(pro.authors.db_manager('default').all().db, 'default')\n\n        self.assertEqual(marty.book_set.db, 'other')\n        self.assertEqual(marty.book_set.db_manager('default').db, 'default')\n        self.assertEqual(marty.book_set.db_manager('default').all().db, 'default')\n\n    def test_foreign_key_managers(self):\n        \"FK reverse relations are represented by managers, and can be controlled like managers\"\n        marty = Person.objects.using('other').create(pk=1, name=\"Marty Alchin\")\n        pro = Book.objects.using('other').create(pk=1, title=\"Pro Django\",\n                                                 published=datetime.date(2008, 12, 16),\n                                                 editor=marty)\n\n        self.assertEqual(marty.edited.db, 'other')\n        self.assertEqual(marty.edited.db_manager('default').db, 'default')\n        self.assertEqual(marty.edited.db_manager('default').all().db, 'default')\n\n    def test_generic_key_managers(self):\n        \"Generic key relations are represented by managers, and can be controlled like managers\"\n        pro = Book.objects.using('other').create(title=\"Pro Django\",\n                                                 published=datetime.date(2008, 12, 16))\n\n        review1 = Review.objects.using('other').create(source=\"Python Monthly\",\n                                                       content_object=pro)\n\n        self.assertEqual(pro.reviews.db, 'other')\n        self.assertEqual(pro.reviews.db_manager('default').db, 'default')\n        self.assertEqual(pro.reviews.db_manager('default').all().db, 'default')\n\n    def test_subquery(self):\n        \"\"\"Make sure as_sql works with subqueries and master/slave.\"\"\"\n        # Create a book and author on the other database\n\n        mark = Person.objects.using('other').create(name=\"Mark Pilgrim\")\n        dive = Book.objects.using('other').create(title=\"Dive into Python\",\n                                                  published=datetime.date(2009, 5, 4),\n                                                  editor=mark)\n\n        sub = Person.objects.filter(name='Mark Pilgrim')\n        qs = Book.objects.filter(editor__in=sub)\n\n        # When you call __str__ on the query object, it doesn't know about using\n        # so it falls back to the default. Don't let routing instructions\n        # force the subquery to an incompatible database.\n        str(qs.query)\n\n        # If you evaluate the query, it should work, running on 'other'\n        self.assertEqual(list(qs.values_list('title', flat=True)), ['Dive into Python'])\n\n    def test_deferred_models(self):\n        mark_def = Person.objects.using('default').create(name=\"Mark Pilgrim\")\n        mark_other = Person.objects.using('other').create(name=\"Mark Pilgrim\")\n        orig_b = Book.objects.using('other').create(title=\"Dive into Python\",\n                                                    published=datetime.date(2009, 5, 4),\n                                                    editor=mark_other)\n        b = Book.objects.using('other').only('title').get(pk=orig_b.pk)\n        self.assertEqual(b.published, datetime.date(2009, 5, 4))\n        b = Book.objects.using('other').only('title').get(pk=orig_b.pk)\n        b.editor = mark_def\n        b.save(using='default')\n        self.assertEqual(Book.objects.using('default').get(pk=b.pk).published,\n                         datetime.date(2009, 5, 4))\n\n\nclass AuthTestCase(TestCase):\n    multi_db = True\n\n    def setUp(self):\n        # Make the 'other' database appear to be a slave of the 'default'\n        self.old_routers = router.routers\n        router.routers = [AuthRouter()]\n\n    def tearDown(self):\n        # Restore the 'other' database as an independent database\n        router.routers = self.old_routers\n\n    def test_auth_manager(self):\n        \"The methods on the auth manager obey database hints\"\n        # Create one user using default allocation policy\n        User.objects.create_user('alice', 'alice@example.com')\n\n        # Create another user, explicitly specifying the database\n        User.objects.db_manager('default').create_user('bob', 'bob@example.com')\n\n        # The second user only exists on the other database\n        alice = User.objects.using('other').get(username='alice')\n\n        self.assertEqual(alice.username, 'alice')\n        self.assertEqual(alice._state.db, 'other')\n\n        self.assertRaises(User.DoesNotExist, User.objects.using('default').get, username='alice')\n\n        # The second user only exists on the default database\n        bob = User.objects.using('default').get(username='bob')\n\n        self.assertEqual(bob.username, 'bob')\n        self.assertEqual(bob._state.db, 'default')\n\n        self.assertRaises(User.DoesNotExist, User.objects.using('other').get, username='bob')\n\n        # That is... there is one user on each database\n        self.assertEqual(User.objects.using('default').count(), 1)\n        self.assertEqual(User.objects.using('other').count(), 1)\n\n    def test_dumpdata(self):\n        \"Check that dumpdata honors allow_syncdb restrictions on the router\"\n        User.objects.create_user('alice', 'alice@example.com')\n        User.objects.db_manager('default').create_user('bob', 'bob@example.com')\n\n        # Check that dumping the default database doesn't try to include auth\n        # because allow_syncdb prohibits auth on default\n        new_io = StringIO()\n        management.call_command('dumpdata', 'auth', format='json', database='default', stdout=new_io)\n        command_output = new_io.getvalue().strip()\n        self.assertEqual(command_output, '[]')\n\n        # Check that dumping the other database does include auth\n        new_io = StringIO()\n        management.call_command('dumpdata', 'auth', format='json', database='other', stdout=new_io)\n        command_output = new_io.getvalue().strip()\n        self.assertTrue('\"email\": \"alice@example.com\"' in command_output)\n\n\n@override_settings(AUTH_PROFILE_MODULE='multiple_database.UserProfile')\nclass UserProfileTestCase(TestCase):\n\n    def test_user_profiles(self):\n        alice = User.objects.create_user('alice', 'alice@example.com')\n        bob = User.objects.db_manager('other').create_user('bob', 'bob@example.com')\n\n        alice_profile = UserProfile(user=alice, flavor='chocolate')\n        alice_profile.save()\n\n        bob_profile = UserProfile(user=bob, flavor='crunchy frog')\n        bob_profile.save()\n\n        self.assertEqual(alice.get_profile().flavor, 'chocolate')\n        self.assertEqual(bob.get_profile().flavor, 'crunchy frog')\n\nclass AntiPetRouter(object):\n    # A router that only expresses an opinion on syncdb,\n    # passing pets to the 'other' database\n\n    def allow_syncdb(self, db, model):\n        \"Make sure the auth app only appears on the 'other' db\"\n        if db == 'other':\n            return model._meta.object_name == 'Pet'\n        else:\n            return model._meta.object_name != 'Pet'\n\nclass FixtureTestCase(TestCase):\n    multi_db = True\n    fixtures = ['multidb-common', 'multidb']\n\n    def setUp(self):\n        # Install the anti-pet router\n        self.old_routers = router.routers\n        router.routers = [AntiPetRouter()]\n\n    def tearDown(self):\n        # Restore the 'other' database as an independent database\n        router.routers = self.old_routers\n\n    def test_fixture_loading(self):\n        \"Multi-db fixtures are loaded correctly\"\n        # Check that \"Pro Django\" exists on the default database, but not on other database\n        try:\n            Book.objects.get(title=\"Pro Django\")\n            Book.objects.using('default').get(title=\"Pro Django\")\n        except Book.DoesNotExist:\n            self.fail('\"Pro Django\" should exist on default database')\n\n        self.assertRaises(Book.DoesNotExist,\n            Book.objects.using('other').get,\n            title=\"Pro Django\"\n        )\n\n        # Check that \"Dive into Python\" exists on the default database, but not on other database\n        try:\n            Book.objects.using('other').get(title=\"Dive into Python\")\n        except Book.DoesNotExist:\n            self.fail('\"Dive into Python\" should exist on other database')\n\n        self.assertRaises(Book.DoesNotExist,\n            Book.objects.get,\n            title=\"Dive into Python\"\n        )\n        self.assertRaises(Book.DoesNotExist,\n            Book.objects.using('default').get,\n            title=\"Dive into Python\"\n        )\n\n        # Check that \"Definitive Guide\" exists on the both databases\n        try:\n            Book.objects.get(title=\"The Definitive Guide to Django\")\n            Book.objects.using('default').get(title=\"The Definitive Guide to Django\")\n            Book.objects.using('other').get(title=\"The Definitive Guide to Django\")\n        except Book.DoesNotExist:\n            self.fail('\"The Definitive Guide to Django\" should exist on both databases')\n\n    def test_pseudo_empty_fixtures(self):\n        \"A fixture can contain entries, but lead to nothing in the database; this shouldn't raise an error (ref #14068)\"\n        new_io = StringIO()\n        management.call_command('loaddata', 'pets', stdout=new_io, stderr=new_io)\n        command_output = new_io.getvalue().strip()\n        # No objects will actually be loaded\n        self.assertEqual(command_output, \"Installed 0 object(s) (of 2) from 1 fixture(s)\")\n\nclass PickleQuerySetTestCase(TestCase):\n    multi_db = True\n\n    def test_pickling(self):\n        for db in connections:\n            Book.objects.using(db).create(title='Dive into Python', published=datetime.date(2009, 5, 4))\n            qs = Book.objects.all()\n            self.assertEqual(qs.db, pickle.loads(pickle.dumps(qs)).db)\n\n\nclass DatabaseReceiver(object):\n    \"\"\"\n    Used in the tests for the database argument in signals (#13552)\n    \"\"\"\n    def __call__(self, signal, sender, **kwargs):\n        self._database = kwargs['using']\n\nclass WriteToOtherRouter(object):\n    \"\"\"\n    A router that sends all writes to the other database.\n    \"\"\"\n    def db_for_write(self, model, **hints):\n        return \"other\"\n\nclass SignalTests(TestCase):\n    multi_db = True\n\n    def setUp(self):\n        self.old_routers = router.routers\n\n    def tearDown(self):\n        router.routers = self.old_routers\n\n    def _write_to_other(self):\n        \"Sends all writes to 'other'.\"\n        router.routers = [WriteToOtherRouter()]\n\n    def _write_to_default(self):\n        \"Sends all writes to the default DB\"\n        router.routers = self.old_routers\n\n    def test_database_arg_save_and_delete(self):\n        \"\"\"\n        Tests that the pre/post_save signal contains the correct database.\n        (#13552)\n        \"\"\"\n        # Make some signal receivers\n        pre_save_receiver = DatabaseReceiver()\n        post_save_receiver = DatabaseReceiver()\n        pre_delete_receiver = DatabaseReceiver()\n        post_delete_receiver = DatabaseReceiver()\n        # Make model and connect receivers\n        signals.pre_save.connect(sender=Person, receiver=pre_save_receiver)\n        signals.post_save.connect(sender=Person, receiver=post_save_receiver)\n        signals.pre_delete.connect(sender=Person, receiver=pre_delete_receiver)\n        signals.post_delete.connect(sender=Person, receiver=post_delete_receiver)\n        p = Person.objects.create(name='Darth Vader')\n        # Save and test receivers got calls\n        p.save()\n        self.assertEqual(pre_save_receiver._database, DEFAULT_DB_ALIAS)\n        self.assertEqual(post_save_receiver._database, DEFAULT_DB_ALIAS)\n        # Delete, and test\n        p.delete()\n        self.assertEqual(pre_delete_receiver._database, DEFAULT_DB_ALIAS)\n        self.assertEqual(post_delete_receiver._database, DEFAULT_DB_ALIAS)\n        # Save again to a different database\n        p.save(using=\"other\")\n        self.assertEqual(pre_save_receiver._database, \"other\")\n        self.assertEqual(post_save_receiver._database, \"other\")\n        # Delete, and test\n        p.delete(using=\"other\")\n        self.assertEqual(pre_delete_receiver._database, \"other\")\n        self.assertEqual(post_delete_receiver._database, \"other\")\n\n        signals.pre_save.disconnect(sender=Person, receiver=pre_save_receiver)\n        signals.post_save.disconnect(sender=Person, receiver=post_save_receiver)\n        signals.pre_delete.disconnect(sender=Person, receiver=pre_delete_receiver)\n        signals.post_delete.disconnect(sender=Person, receiver=post_delete_receiver)\n\n    def test_database_arg_m2m(self):\n        \"\"\"\n        Test that the m2m_changed signal has a correct database arg (#13552)\n        \"\"\"\n        # Make a receiver\n        receiver = DatabaseReceiver()\n        # Connect it\n        signals.m2m_changed.connect(receiver=receiver)\n\n        # Create the models that will be used for the tests\n        b = Book.objects.create(title=\"Pro Django\",\n                                published=datetime.date(2008, 12, 16))\n        p = Person.objects.create(name=\"Marty Alchin\")\n\n        # Create a copy of the models on the 'other' database to prevent\n        # integrity errors on backends that don't defer constraints checks\n        Book.objects.using('other').create(pk=b.pk, title=b.title,\n                                           published=b.published)\n        Person.objects.using('other').create(pk=p.pk, name=p.name)\n\n        # Test addition\n        b.authors.add(p)\n        self.assertEqual(receiver._database, DEFAULT_DB_ALIAS)\n        self._write_to_other()\n        b.authors.add(p)\n        self._write_to_default()\n        self.assertEqual(receiver._database, \"other\")\n\n        # Test removal\n        b.authors.remove(p)\n        self.assertEqual(receiver._database, DEFAULT_DB_ALIAS)\n        self._write_to_other()\n        b.authors.remove(p)\n        self._write_to_default()\n        self.assertEqual(receiver._database, \"other\")\n\n        # Test addition in reverse\n        p.book_set.add(b)\n        self.assertEqual(receiver._database, DEFAULT_DB_ALIAS)\n        self._write_to_other()\n        p.book_set.add(b)\n        self._write_to_default()\n        self.assertEqual(receiver._database, \"other\")\n\n        # Test clearing\n        b.authors.clear()\n        self.assertEqual(receiver._database, DEFAULT_DB_ALIAS)\n        self._write_to_other()\n        b.authors.clear()\n        self._write_to_default()\n        self.assertEqual(receiver._database, \"other\")\n\nclass AttributeErrorRouter(object):\n    \"A router to test the exception handling of ConnectionRouter\"\n    def db_for_read(self, model, **hints):\n        raise AttributeError\n\n    def db_for_write(self, model, **hints):\n        raise AttributeError\n\nclass RouterAttributeErrorTestCase(TestCase):\n    multi_db = True\n\n    def setUp(self):\n        self.old_routers = router.routers\n        router.routers = [AttributeErrorRouter()]\n\n    def tearDown(self):\n        router.routers = self.old_routers\n\n    def test_attribute_error_read(self):\n        \"Check that the AttributeError from AttributeErrorRouter bubbles up\"\n        router.routers = [] # Reset routers so we can save a Book instance\n        b = Book.objects.create(title=\"Pro Django\",\n                                published=datetime.date(2008, 12, 16))\n        router.routers = [AttributeErrorRouter()] # Install our router\n        self.assertRaises(AttributeError, Book.objects.get, pk=b.pk)\n\n    def test_attribute_error_save(self):\n        \"Check that the AttributeError from AttributeErrorRouter bubbles up\"\n        dive = Book()\n        dive.title=\"Dive into Python\"\n        dive.published = datetime.date(2009, 5, 4)\n        self.assertRaises(AttributeError, dive.save)\n\n    def test_attribute_error_delete(self):\n        \"Check that the AttributeError from AttributeErrorRouter bubbles up\"\n        router.routers = [] # Reset routers so we can save our Book, Person instances\n        b = Book.objects.create(title=\"Pro Django\",\n                                published=datetime.date(2008, 12, 16))\n        p = Person.objects.create(name=\"Marty Alchin\")\n        b.authors = [p]\n        b.editor = p\n        router.routers = [AttributeErrorRouter()] # Install our router\n        self.assertRaises(AttributeError, b.delete)\n\n    def test_attribute_error_m2m(self):\n        \"Check that the AttributeError from AttributeErrorRouter bubbles up\"\n        router.routers = [] # Reset routers so we can save our Book, Person instances\n        b = Book.objects.create(title=\"Pro Django\",\n                                published=datetime.date(2008, 12, 16))\n        p = Person.objects.create(name=\"Marty Alchin\")\n        router.routers = [AttributeErrorRouter()] # Install our router\n        self.assertRaises(AttributeError, setattr, b, 'authors', [p])\n\nclass ModelMetaRouter(object):\n    \"A router to ensure model arguments are real model classes\"\n    def db_for_write(self, model, **hints):\n        if not hasattr(model, '_meta'):\n            raise ValueError\n\nclass RouterModelArgumentTestCase(TestCase):\n    multi_db = True\n\n    def setUp(self):\n        self.old_routers = router.routers\n        router.routers = [ModelMetaRouter()]\n\n    def tearDown(self):\n        router.routers = self.old_routers\n\n    def test_m2m_collection(self):\n        b = Book.objects.create(title=\"Pro Django\",\n                                published=datetime.date(2008, 12, 16))\n\n        p = Person.objects.create(name=\"Marty Alchin\")\n        # test add\n        b.authors.add(p)\n        # test remove\n        b.authors.remove(p)\n        # test clear\n        b.authors.clear()\n        # test setattr\n        b.authors = [p]\n        # test M2M collection\n        b.delete()\n\n    def test_foreignkey_collection(self):\n        person = Person.objects.create(name='Bob')\n        pet = Pet.objects.create(owner=person, name='Wart')\n        # test related FK collection\n        person.delete()\n\n\nclass SyncOnlyDefaultDatabaseRouter(object):\n    def allow_syncdb(self, db, model):\n        return db == DEFAULT_DB_ALIAS\n\n\nclass SyncDBTestCase(TestCase):\n    multi_db = True\n\n    def test_syncdb_to_other_database(self):\n        \"\"\"Regression test for #16039: syncdb with --database option.\"\"\"\n        cts = ContentType.objects.using('other').filter(app_label='multiple_database')\n\n        count = cts.count()\n        self.assertGreater(count, 0)\n\n        cts.delete()\n        management.call_command('syncdb', verbosity=0, interactive=False,\n            load_initial_data=False, database='other')\n        self.assertEqual(cts.count(), count)\n\n    def test_syncdb_to_other_database_with_router(self):\n        \"\"\"Regression test for #16039: syncdb with --database option.\"\"\"\n        cts = ContentType.objects.using('other').filter(app_label='multiple_database')\n\n        cts.delete()\n        try:\n            old_routers = router.routers\n            router.routers = [SyncOnlyDefaultDatabaseRouter()]\n            management.call_command('syncdb', verbosity=0, interactive=False,\n                load_initial_data=False, database='other')\n        finally:\n            router.routers = old_routers\n\n        self.assertEqual(cts.count(), 0)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/nested_foreign_keys/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/nested_foreign_keys/models.py",
    "content": "from django.db import models\n\n\nclass Person(models.Model):\n    name = models.CharField(max_length=200)\n\n\nclass Movie(models.Model):\n    title = models.CharField(max_length=200)\n    director = models.ForeignKey(Person)\n\n\nclass Event(models.Model):\n    pass\n\n\nclass Screening(Event):\n    movie = models.ForeignKey(Movie)\n\nclass ScreeningNullFK(Event):\n    movie = models.ForeignKey(Movie, null=True)\n\n\nclass Package(models.Model):\n    screening = models.ForeignKey(Screening, null=True)\n\nclass PackageNullFK(models.Model):\n    screening = models.ForeignKey(ScreeningNullFK, null=True)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/nested_foreign_keys/tests.py",
    "content": "from __future__ import absolute_import\nfrom django.test import TestCase\n\nfrom .models import Person, Movie, Event, Screening, ScreeningNullFK, Package, PackageNullFK\n\n\n# These are tests for #16715. The basic scheme is always the same: 3 models with\n# 2 relations. The first relation may be null, while the second is non-nullable.\n# In some cases, Django would pick the wrong join type for the second relation,\n# resulting in missing objects in the queryset.\n#\n#   Model A\n#   | (Relation A/B : nullable)\n#   Model B\n#   | (Relation B/C : non-nullable)\n#   Model C\n#\n# Because of the possibility of NULL rows resulting from the LEFT OUTER JOIN\n# between Model A and Model B (i.e. instances of A without reference to B),\n# the second join must also be LEFT OUTER JOIN, so that we do not ignore\n# instances of A that do not reference B.\n#\n# Relation A/B can either be an explicit foreign key or an implicit reverse\n# relation such as introduced by one-to-one relations (through multi-table\n# inheritance).\nclass NestedForeignKeysTests(TestCase):\n    def setUp(self):\n        self.director = Person.objects.create(name='Terry Gilliam / Terry Jones')\n        self.movie = Movie.objects.create(title='Monty Python and the Holy Grail', director=self.director)\n\n\n    # This test failed in #16715 because in some cases INNER JOIN was selected\n    # for the second foreign key relation instead of LEFT OUTER JOIN.\n    def testInheritance(self):\n        some_event = Event.objects.create()\n        screening = Screening.objects.create(movie=self.movie)\n\n        self.assertEqual(len(Event.objects.all()), 2)\n        self.assertEqual(len(Event.objects.select_related('screening')), 2)\n        # This failed.\n        self.assertEqual(len(Event.objects.select_related('screening__movie')), 2)\n\n        self.assertEqual(len(Event.objects.values()), 2)\n        self.assertEqual(len(Event.objects.values('screening__pk')), 2)\n        self.assertEqual(len(Event.objects.values('screening__movie__pk')), 2)\n        self.assertEqual(len(Event.objects.values('screening__movie__title')), 2)\n        # This failed.\n        self.assertEqual(len(Event.objects.values('screening__movie__pk', 'screening__movie__title')), 2)\n\n        # Simple filter/exclude queries for good measure.\n        self.assertEqual(Event.objects.filter(screening__movie=self.movie).count(), 1)\n        self.assertEqual(Event.objects.exclude(screening__movie=self.movie).count(), 1)\n\n\n    # These all work because the second foreign key in the chain has null=True.\n    def testInheritanceNullFK(self):\n        some_event = Event.objects.create()\n        screening = ScreeningNullFK.objects.create(movie=None)\n        screening_with_movie = ScreeningNullFK.objects.create(movie=self.movie)\n\n        self.assertEqual(len(Event.objects.all()), 3)\n        self.assertEqual(len(Event.objects.select_related('screeningnullfk')), 3)\n        self.assertEqual(len(Event.objects.select_related('screeningnullfk__movie')), 3)\n\n        self.assertEqual(len(Event.objects.values()), 3)\n        self.assertEqual(len(Event.objects.values('screeningnullfk__pk')), 3)\n        self.assertEqual(len(Event.objects.values('screeningnullfk__movie__pk')), 3)\n        self.assertEqual(len(Event.objects.values('screeningnullfk__movie__title')), 3)\n        self.assertEqual(len(Event.objects.values('screeningnullfk__movie__pk', 'screeningnullfk__movie__title')), 3)\n\n        self.assertEqual(Event.objects.filter(screeningnullfk__movie=self.movie).count(), 1)\n        self.assertEqual(Event.objects.exclude(screeningnullfk__movie=self.movie).count(), 2)\n\n\n    # This test failed in #16715 because in some cases INNER JOIN was selected\n    # for the second foreign key relation instead of LEFT OUTER JOIN.\n    def testExplicitForeignKey(self):\n        package = Package.objects.create()\n        screening = Screening.objects.create(movie=self.movie)\n        package_with_screening = Package.objects.create(screening=screening)\n\n        self.assertEqual(len(Package.objects.all()), 2)\n        self.assertEqual(len(Package.objects.select_related('screening')), 2)\n        self.assertEqual(len(Package.objects.select_related('screening__movie')), 2)\n\n        self.assertEqual(len(Package.objects.values()), 2)\n        self.assertEqual(len(Package.objects.values('screening__pk')), 2)\n        self.assertEqual(len(Package.objects.values('screening__movie__pk')), 2)\n        self.assertEqual(len(Package.objects.values('screening__movie__title')), 2)\n        # This failed.\n        self.assertEqual(len(Package.objects.values('screening__movie__pk', 'screening__movie__title')), 2)\n\n        self.assertEqual(Package.objects.filter(screening__movie=self.movie).count(), 1)\n        self.assertEqual(Package.objects.exclude(screening__movie=self.movie).count(), 1)\n\n\n    # These all work because the second foreign key in the chain has null=True.\n    def testExplicitForeignKeyNullFK(self):\n        package = PackageNullFK.objects.create()\n        screening = ScreeningNullFK.objects.create(movie=None)\n        screening_with_movie = ScreeningNullFK.objects.create(movie=self.movie)\n        package_with_screening = PackageNullFK.objects.create(screening=screening)\n        package_with_screening_with_movie = PackageNullFK.objects.create(screening=screening_with_movie)\n\n        self.assertEqual(len(PackageNullFK.objects.all()), 3)\n        self.assertEqual(len(PackageNullFK.objects.select_related('screening')), 3)\n        self.assertEqual(len(PackageNullFK.objects.select_related('screening__movie')), 3)\n\n        self.assertEqual(len(PackageNullFK.objects.values()), 3)\n        self.assertEqual(len(PackageNullFK.objects.values('screening__pk')), 3)\n        self.assertEqual(len(PackageNullFK.objects.values('screening__movie__pk')), 3)\n        self.assertEqual(len(PackageNullFK.objects.values('screening__movie__title')), 3)\n        self.assertEqual(len(PackageNullFK.objects.values('screening__movie__pk', 'screening__movie__title')), 3)\n\n        self.assertEqual(PackageNullFK.objects.filter(screening__movie=self.movie).count(), 1)\n        self.assertEqual(PackageNullFK.objects.exclude(screening__movie=self.movie).count(), 2)\n\n\n# Some additional tests for #16715. The only difference is the depth of the\n# nesting as we now use 4 models instead of 3 (and thus 3 relations). This\n# checks if promotion of join types works for deeper nesting too.\nclass DeeplyNestedForeignKeysTests(TestCase):\n    def setUp(self):\n        self.director = Person.objects.create(name='Terry Gilliam / Terry Jones')\n        self.movie = Movie.objects.create(title='Monty Python and the Holy Grail', director=self.director)\n\n\n    def testInheritance(self):\n        some_event = Event.objects.create()\n        screening = Screening.objects.create(movie=self.movie)\n\n        self.assertEqual(len(Event.objects.all()), 2)\n        self.assertEqual(len(Event.objects.select_related('screening__movie__director')), 2)\n\n        self.assertEqual(len(Event.objects.values()), 2)\n        self.assertEqual(len(Event.objects.values('screening__movie__director__pk')), 2)\n        self.assertEqual(len(Event.objects.values('screening__movie__director__name')), 2)\n        self.assertEqual(len(Event.objects.values('screening__movie__director__pk', 'screening__movie__director__name')), 2)\n        self.assertEqual(len(Event.objects.values('screening__movie__pk', 'screening__movie__director__pk')), 2)\n        self.assertEqual(len(Event.objects.values('screening__movie__pk', 'screening__movie__director__name')), 2)\n        self.assertEqual(len(Event.objects.values('screening__movie__title', 'screening__movie__director__pk')), 2)\n        self.assertEqual(len(Event.objects.values('screening__movie__title', 'screening__movie__director__name')), 2)\n\n        self.assertEqual(Event.objects.filter(screening__movie__director=self.director).count(), 1)\n        self.assertEqual(Event.objects.exclude(screening__movie__director=self.director).count(), 1)\n\n\n    def testExplicitForeignKey(self):\n        package = Package.objects.create()\n        screening = Screening.objects.create(movie=self.movie)\n        package_with_screening = Package.objects.create(screening=screening)\n\n        self.assertEqual(len(Package.objects.all()), 2)\n        self.assertEqual(len(Package.objects.select_related('screening__movie__director')), 2)\n\n        self.assertEqual(len(Package.objects.values()), 2)\n        self.assertEqual(len(Package.objects.values('screening__movie__director__pk')), 2)\n        self.assertEqual(len(Package.objects.values('screening__movie__director__name')), 2)\n        self.assertEqual(len(Package.objects.values('screening__movie__director__pk', 'screening__movie__director__name')), 2)\n        self.assertEqual(len(Package.objects.values('screening__movie__pk', 'screening__movie__director__pk')), 2)\n        self.assertEqual(len(Package.objects.values('screening__movie__pk', 'screening__movie__director__name')), 2)\n        self.assertEqual(len(Package.objects.values('screening__movie__title', 'screening__movie__director__pk')), 2)\n        self.assertEqual(len(Package.objects.values('screening__movie__title', 'screening__movie__director__name')), 2)\n\n        self.assertEqual(Package.objects.filter(screening__movie__director=self.director).count(), 1)\n        self.assertEqual(Package.objects.exclude(screening__movie__director=self.director).count(), 1)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/null_fk/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/null_fk/models.py",
    "content": "\"\"\"\nRegression tests for proper working of ForeignKey(null=True).\n\"\"\"\n\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\nclass SystemDetails(models.Model):\n    details = models.TextField()\n\nclass SystemInfo(models.Model):\n    system_details = models.ForeignKey(SystemDetails)\n    system_name = models.CharField(max_length=32)\n\nclass Forum(models.Model):\n    system_info = models.ForeignKey(SystemInfo)\n    forum_name = models.CharField(max_length=32)\n\n@python_2_unicode_compatible\nclass Post(models.Model):\n    forum = models.ForeignKey(Forum, null=True)\n    title = models.CharField(max_length=32)\n\n    def __str__(self):\n        return self.title\n\n@python_2_unicode_compatible\nclass Comment(models.Model):\n    post = models.ForeignKey(Post, null=True)\n    comment_text = models.CharField(max_length=250)\n\n    class Meta:\n        ordering = ('comment_text',)\n\n    def __str__(self):\n        return self.comment_text\n\n# Ticket 15823\n\nclass Item(models.Model):\n    title = models.CharField(max_length=100)\n\nclass PropertyValue(models.Model):\n    label = models.CharField(max_length=100)\n\nclass Property(models.Model):\n    item = models.ForeignKey(Item, related_name='props')\n    key = models.CharField(max_length=100)\n    value = models.ForeignKey(PropertyValue, null=True)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/null_fk/tests.py",
    "content": "from __future__ import absolute_import,  unicode_literals\n\nfrom django.db.models import Q\nfrom django.test import TestCase\n\nfrom .models import (SystemDetails, Item, PropertyValue, SystemInfo, Forum,\n    Post, Comment)\n\n\nclass NullFkTests(TestCase):\n\n    def test_null_fk(self):\n        d = SystemDetails.objects.create(details='First details')\n        s = SystemInfo.objects.create(system_name='First forum', system_details=d)\n        f = Forum.objects.create(system_info=s, forum_name='First forum')\n        p = Post.objects.create(forum=f, title='First Post')\n        c1 = Comment.objects.create(post=p, comment_text='My first comment')\n        c2 = Comment.objects.create(comment_text='My second comment')\n\n        # Starting from comment, make sure that a .select_related(...) with a specified\n        # set of fields will properly LEFT JOIN multiple levels of NULLs (and the things\n        # that come after the NULLs, or else data that should exist won't). Regression\n        # test for #7369.\n        c = Comment.objects.select_related().get(id=c1.id)\n        self.assertEqual(c.post, p)\n        self.assertEqual(Comment.objects.select_related().get(id=c2.id).post, None)\n\n        self.assertQuerysetEqual(\n            Comment.objects.select_related('post__forum__system_info').all(),\n            [\n                (c1.id, 'My first comment', '<Post: First Post>'),\n                (c2.id, 'My second comment', 'None')\n            ],\n            transform = lambda c: (c.id, c.comment_text, repr(c.post))\n        )\n\n        # Regression test for #7530, #7716.\n        self.assertTrue(Comment.objects.select_related('post').filter(post__isnull=True)[0].post is None)\n\n        self.assertQuerysetEqual(\n            Comment.objects.select_related('post__forum__system_info__system_details'),\n            [\n                (c1.id, 'My first comment', '<Post: First Post>'),\n                (c2.id, 'My second comment', 'None')\n            ],\n            transform = lambda c: (c.id, c.comment_text, repr(c.post))\n        )\n\n    def test_combine_isnull(self):\n        item = Item.objects.create(title='Some Item')\n        pv = PropertyValue.objects.create(label='Some Value')\n        item.props.create(key='a', value=pv)\n        item.props.create(key='b') # value=NULL\n        q1 = Q(props__key='a', props__value=pv)\n        q2 = Q(props__key='b', props__value__isnull=True)\n\n        # Each of these individually should return the item.\n        self.assertEqual(Item.objects.get(q1), item)\n        self.assertEqual(Item.objects.get(q2), item)\n\n        # Logically, qs1 and qs2, and qs3 and qs4 should be the same.\n        qs1 = Item.objects.filter(q1) & Item.objects.filter(q2)\n        qs2 = Item.objects.filter(q2) & Item.objects.filter(q1)\n        qs3 = Item.objects.filter(q1) | Item.objects.filter(q2)\n        qs4 = Item.objects.filter(q2) | Item.objects.filter(q1)\n\n        # Regression test for #15823.\n        self.assertEqual(list(qs1), list(qs2))\n        self.assertEqual(list(qs3), list(qs4))\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/null_fk_ordering/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/null_fk_ordering/models.py",
    "content": "\"\"\"\nRegression tests for proper working of ForeignKey(null=True). Tests these bugs:\n\n    * #7512: including a nullable foreign key reference in Meta ordering has un\nxpected results\n\n\"\"\"\nfrom __future__ import unicode_literals\n\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n# The first two models represent a very simple null FK ordering case.\nclass Author(models.Model):\n    name = models.CharField(max_length=150)\n\n@python_2_unicode_compatible\nclass Article(models.Model):\n    title = models.CharField(max_length=150)\n    author = models.ForeignKey(Author, null=True)\n\n    def __str__(self):\n        return 'Article titled: %s' % (self.title, )\n\n    class Meta:\n        ordering = ['author__name', ]\n\n\n# These following 4 models represent a far more complex ordering case.\nclass SystemInfo(models.Model):\n    system_name = models.CharField(max_length=32)\n\nclass Forum(models.Model):\n    system_info = models.ForeignKey(SystemInfo)\n    forum_name = models.CharField(max_length=32)\n\n@python_2_unicode_compatible\nclass Post(models.Model):\n    forum = models.ForeignKey(Forum, null=True)\n    title = models.CharField(max_length=32)\n\n    def __str__(self):\n        return self.title\n\n@python_2_unicode_compatible\nclass Comment(models.Model):\n    post = models.ForeignKey(Post, null=True)\n    comment_text = models.CharField(max_length=250)\n\n    class Meta:\n        ordering = ['post__forum__system_info__system_name', 'comment_text']\n\n    def __str__(self):\n        return self.comment_text\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/null_fk_ordering/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom django.test import TestCase\n\nfrom .models import Author, Article, SystemInfo, Forum, Post, Comment\n\n\nclass NullFkOrderingTests(TestCase):\n\n    def test_ordering_across_null_fk(self):\n        \"\"\"\n        Regression test for #7512\n\n        ordering across nullable Foreign Keys shouldn't exclude results\n        \"\"\"\n        author_1 = Author.objects.create(name='Tom Jones')\n        author_2 = Author.objects.create(name='Bob Smith')\n        article_1 = Article.objects.create(title='No author on this article')\n        article_2 = Article.objects.create(author=author_1, title='This article written by Tom Jones')\n        article_3 = Article.objects.create(author=author_2, title='This article written by Bob Smith')\n\n        # We can't compare results directly (since different databases sort NULLs to\n        # different ends of the ordering), but we can check that all results are\n        # returned.\n        self.assertTrue(len(list(Article.objects.all())) == 3)\n\n        s = SystemInfo.objects.create(system_name='System Info')\n        f = Forum.objects.create(system_info=s, forum_name='First forum')\n        p = Post.objects.create(forum=f, title='First Post')\n        c1 = Comment.objects.create(post=p, comment_text='My first comment')\n        c2 = Comment.objects.create(comment_text='My second comment')\n        s2 = SystemInfo.objects.create(system_name='More System Info')\n        f2 = Forum.objects.create(system_info=s2, forum_name='Second forum')\n        p2 = Post.objects.create(forum=f2, title='Second Post')\n        c3 = Comment.objects.create(comment_text='Another first comment')\n        c4 = Comment.objects.create(post=p2, comment_text='Another second comment')\n\n        # We have to test this carefully. Some databases sort NULL values before\n        # everything else, some sort them afterwards. So we extract the ordered list\n        # and check the length. Before the fix, this list was too short (some values\n        # were omitted).\n        self.assertTrue(len(list(Comment.objects.all())) == 4)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/null_queries/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/null_queries/models.py",
    "content": "from __future__ import unicode_literals\n\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n@python_2_unicode_compatible\nclass Poll(models.Model):\n    question = models.CharField(max_length=200)\n\n    def __str__(self):\n        return \"Q: %s \" % self.question\n\n@python_2_unicode_compatible\nclass Choice(models.Model):\n    poll = models.ForeignKey(Poll)\n    choice = models.CharField(max_length=200)\n\n    def __str__(self):\n        return \"Choice: %s in poll %s\" % (self.choice, self.poll)\n\n# A set of models with an inner one pointing to two outer ones.\nclass OuterA(models.Model):\n    pass\n\nclass OuterB(models.Model):\n    data = models.CharField(max_length=10)\n\nclass Inner(models.Model):\n    first = models.ForeignKey(OuterA)\n    second = models.ForeignKey(OuterB, null=True)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/null_queries/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom django.test import TestCase\nfrom django.core.exceptions import FieldError\n\nfrom .models import Poll, Choice, OuterA, Inner, OuterB\n\n\nclass NullQueriesTests(TestCase):\n\n    def test_none_as_null(self):\n        \"\"\"\n        Regression test for the use of None as a query value.\n\n        None is interpreted as an SQL NULL, but only in __exact queries.\n        Set up some initial polls and choices\n        \"\"\"\n        p1 = Poll(question='Why?')\n        p1.save()\n        c1 = Choice(poll=p1, choice='Because.')\n        c1.save()\n        c2 = Choice(poll=p1, choice='Why Not?')\n        c2.save()\n\n        # Exact query with value None returns nothing (\"is NULL\" in sql,\n        # but every 'id' field has a value).\n        self.assertQuerysetEqual(Choice.objects.filter(choice__exact=None), [])\n\n        # Excluding the previous result returns everything.\n        self.assertQuerysetEqual(\n                Choice.objects.exclude(choice=None).order_by('id'),\n                [\n                    '<Choice: Choice: Because. in poll Q: Why? >',\n                    '<Choice: Choice: Why Not? in poll Q: Why? >'\n                ]\n        )\n\n        # Valid query, but fails because foo isn't a keyword\n        self.assertRaises(FieldError, Choice.objects.filter, foo__exact=None)\n\n        # Can't use None on anything other than __exact\n        self.assertRaises(ValueError, Choice.objects.filter, id__gt=None)\n\n        # Can't use None on anything other than __exact\n        self.assertRaises(ValueError, Choice.objects.filter, foo__gt=None)\n\n        # Related managers use __exact=None implicitly if the object hasn't been saved.\n        p2 = Poll(question=\"How?\")\n        self.assertEqual(repr(p2.choice_set.all()), '[]')\n\n    def test_reverse_relations(self):\n        \"\"\"\n        Querying across reverse relations and then another relation should\n        insert outer joins correctly so as not to exclude results.\n        \"\"\"\n        obj = OuterA.objects.create()\n        self.assertQuerysetEqual(\n            OuterA.objects.filter(inner__second=None),\n            ['<OuterA: OuterA object>']\n        )\n        self.assertQuerysetEqual(\n            OuterA.objects.filter(inner__second__data=None),\n            ['<OuterA: OuterA object>']\n        )\n\n        inner_obj = Inner.objects.create(first=obj)\n        self.assertQuerysetEqual(\n            Inner.objects.filter(first__inner__second=None),\n            ['<Inner: Inner object>']\n        )\n\n        # Ticket #13815: check if <reverse>_isnull=False does not produce\n        # faulty empty lists\n        objB = OuterB.objects.create(data=\"reverse\")\n        self.assertQuerysetEqual(\n            OuterB.objects.filter(inner__isnull=False),\n            []\n        )\n        Inner.objects.create(first=obj)\n        self.assertQuerysetEqual(\n            OuterB.objects.exclude(inner__isnull=False),\n            ['<OuterB: OuterB object>']\n        )\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/one_to_one_regress/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/one_to_one_regress/models.py",
    "content": "from __future__ import unicode_literals\n\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n@python_2_unicode_compatible\nclass Place(models.Model):\n    name = models.CharField(max_length=50)\n    address = models.CharField(max_length=80)\n\n    def __str__(self):\n        return \"%s the place\" % self.name\n\n@python_2_unicode_compatible\nclass Restaurant(models.Model):\n    place = models.OneToOneField(Place)\n    serves_hot_dogs = models.BooleanField()\n    serves_pizza = models.BooleanField()\n\n    def __str__(self):\n        return \"%s the restaurant\" % self.place.name\n\n@python_2_unicode_compatible\nclass Bar(models.Model):\n    place = models.OneToOneField(Place)\n    serves_cocktails = models.BooleanField()\n\n    def __str__(self):\n        return \"%s the bar\" % self.place.name\n\nclass UndergroundBar(models.Model):\n    place = models.OneToOneField(Place, null=True)\n    serves_cocktails = models.BooleanField()\n\n@python_2_unicode_compatible\nclass Favorites(models.Model):\n    name = models.CharField(max_length = 50)\n    restaurants = models.ManyToManyField(Restaurant)\n\n    def __str__(self):\n        return \"Favorites for %s\" % self.name\n\nclass Target(models.Model):\n    pass\n\nclass Pointer(models.Model):\n    other = models.OneToOneField(Target, primary_key=True)\n\nclass Pointer2(models.Model):\n    other = models.OneToOneField(Target)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/one_to_one_regress/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom django.test import TestCase\n\nfrom .models import Place, Restaurant, Bar, Favorites, Target, UndergroundBar\n\n\nclass OneToOneRegressionTests(TestCase):\n\n    def setUp(self):\n        self.p1 = Place(name='Demon Dogs', address='944 W. Fullerton')\n        self.p1.save()\n        self.r1 = Restaurant(place=self.p1, serves_hot_dogs=True, serves_pizza=False)\n        self.r1.save()\n        self.b1 = Bar(place=self.p1, serves_cocktails=False)\n        self.b1.save()\n\n    def test_reverse_relationship_cache_cascade(self):\n        \"\"\"\n        Regression test for #9023: accessing the reverse relationship shouldn't\n        result in a cascading delete().\n        \"\"\"\n        bar = UndergroundBar.objects.create(place=self.p1, serves_cocktails=False)\n\n        # The bug in #9023: if you access the one-to-one relation *before*\n        # setting to None and deleting, the cascade happens anyway.\n        self.p1.undergroundbar\n        bar.place.name='foo'\n        bar.place = None\n        bar.save()\n        self.p1.delete()\n\n        self.assertEqual(Place.objects.all().count(), 0)\n        self.assertEqual(UndergroundBar.objects.all().count(), 1)\n\n    def test_create_models_m2m(self):\n        \"\"\"\n        Regression test for #1064 and #1506\n\n        Check that we create models via the m2m relation if the remote model\n        has a OneToOneField.\n        \"\"\"\n        f = Favorites(name = 'Fred')\n        f.save()\n        f.restaurants = [self.r1]\n        self.assertQuerysetEqual(\n                f.restaurants.all(),\n                ['<Restaurant: Demon Dogs the restaurant>']\n        )\n\n    def test_reverse_object_cache(self):\n        \"\"\"\n        Regression test for #7173\n\n        Check that the name of the cache for the reverse object is correct.\n        \"\"\"\n        self.assertEqual(self.p1.restaurant, self.r1)\n        self.assertEqual(self.p1.bar, self.b1)\n\n    def test_related_object_cache(self):\n        \"\"\" Regression test for #6886 (the related-object cache) \"\"\"\n\n        # Look up the objects again so that we get \"fresh\" objects\n        p = Place.objects.get(name=\"Demon Dogs\")\n        r = p.restaurant\n\n        # Accessing the related object again returns the exactly same object\n        self.assertTrue(p.restaurant is r)\n\n        # But if we kill the cache, we get a new object\n        del p._restaurant_cache\n        self.assertFalse(p.restaurant is r)\n\n        # Reassigning the Restaurant object results in an immediate cache update\n        # We can't use a new Restaurant because that'll violate one-to-one, but\n        # with a new *instance* the is test below will fail if #6886 regresses.\n        r2 = Restaurant.objects.get(pk=r.pk)\n        p.restaurant = r2\n        self.assertTrue(p.restaurant is r2)\n\n        # Assigning None succeeds if field is null=True.\n        ug_bar = UndergroundBar.objects.create(place=p, serves_cocktails=False)\n        ug_bar.place = None\n        self.assertTrue(ug_bar.place is None)\n\n        # Assigning None fails: Place.restaurant is null=False\n        self.assertRaises(ValueError, setattr, p, 'restaurant', None)\n\n        # You also can't assign an object of the wrong type here\n        self.assertRaises(ValueError, setattr, p, 'restaurant', p)\n\n        # Creation using keyword argument should cache the related object.\n        p = Place.objects.get(name=\"Demon Dogs\")\n        r = Restaurant(place=p)\n        self.assertTrue(r.place is p)\n\n        # Creation using keyword argument and unsaved related instance (#8070).\n        p = Place()\n        r = Restaurant(place=p)\n        self.assertTrue(r.place is p)\n\n        # Creation using attname keyword argument and an id will cause the related\n        # object to be fetched.\n        p = Place.objects.get(name=\"Demon Dogs\")\n        r = Restaurant(place_id=p.id)\n        self.assertFalse(r.place is p)\n        self.assertEqual(r.place, p)\n\n    def test_filter_one_to_one_relations(self):\n        \"\"\"\n        Regression test for #9968\n\n        filtering reverse one-to-one relations with primary_key=True was\n        misbehaving. We test both (primary_key=True & False) cases here to\n        prevent any reappearance of the problem.\n        \"\"\"\n        t = Target.objects.create()\n\n        self.assertQuerysetEqual(\n                Target.objects.filter(pointer=None),\n                ['<Target: Target object>']\n        )\n        self.assertQuerysetEqual(\n                Target.objects.exclude(pointer=None),\n                []\n        )\n        self.assertQuerysetEqual(\n                Target.objects.filter(pointer2=None),\n                ['<Target: Target object>']\n        )\n        self.assertQuerysetEqual(\n                Target.objects.exclude(pointer2=None),\n                []\n        )\n\n    def test_reverse_object_does_not_exist_cache(self):\n        \"\"\"\n        Regression for #13839 and #17439.\n\n        DoesNotExist on a reverse one-to-one relation is cached.\n        \"\"\"\n        p = Place(name='Zombie Cats', address='Not sure')\n        p.save()\n        with self.assertNumQueries(1):\n            with self.assertRaises(Restaurant.DoesNotExist):\n                p.restaurant\n        with self.assertNumQueries(0):\n            with self.assertRaises(Restaurant.DoesNotExist):\n                p.restaurant\n\n    def test_reverse_object_cached_when_related_is_accessed(self):\n        \"\"\"\n        Regression for #13839 and #17439.\n\n        The target of a one-to-one relation is cached\n        when the origin is accessed through the reverse relation.\n        \"\"\"\n        # Use a fresh object without caches\n        r = Restaurant.objects.get(pk=self.r1.pk)\n        p = r.place\n        with self.assertNumQueries(0):\n            self.assertEqual(p.restaurant, r)\n\n    def test_related_object_cached_when_reverse_is_accessed(self):\n        \"\"\"\n        Regression for #13839 and #17439.\n\n        The origin of a one-to-one relation is cached\n        when the target is accessed through the reverse relation.\n        \"\"\"\n        # Use a fresh object without caches\n        p = Place.objects.get(pk=self.p1.pk)\n        r = p.restaurant\n        with self.assertNumQueries(0):\n            self.assertEqual(r.place, p)\n\n    def test_reverse_object_cached_when_related_is_set(self):\n        \"\"\"\n        Regression for #13839 and #17439.\n\n        The target of a one-to-one relation is always cached.\n        \"\"\"\n        p = Place(name='Zombie Cats', address='Not sure')\n        p.save()\n        self.r1.place = p\n        self.r1.save()\n        with self.assertNumQueries(0):\n            self.assertEqual(p.restaurant, self.r1)\n\n    def test_reverse_object_cached_when_related_is_unset(self):\n        \"\"\"\n        Regression for #13839 and #17439.\n\n        The target of a one-to-one relation is always cached.\n        \"\"\"\n        b = UndergroundBar(place=self.p1, serves_cocktails=True)\n        b.save()\n        with self.assertNumQueries(0):\n            self.assertEqual(self.p1.undergroundbar, b)\n        b.place = None\n        b.save()\n        with self.assertNumQueries(0):\n            with self.assertRaises(UndergroundBar.DoesNotExist):\n                self.p1.undergroundbar\n\n    def test_get_reverse_on_unsaved_object(self):\n        \"\"\"\n        Regression for #18153 and #19089.\n\n        Accessing the reverse relation on an unsaved object\n        always raises an exception.\n        \"\"\"\n        p = Place()\n\n        # When there's no instance of the origin of the one-to-one\n        with self.assertNumQueries(0):\n            with self.assertRaises(UndergroundBar.DoesNotExist):\n                p.undergroundbar\n\n        UndergroundBar.objects.create()\n\n        # When there's one instance of the origin\n        # (p.undergroundbar used to return that instance)\n        with self.assertNumQueries(0):\n            with self.assertRaises(UndergroundBar.DoesNotExist):\n                p.undergroundbar\n\n        UndergroundBar.objects.create()\n\n        # When there are several instances of the origin\n        with self.assertNumQueries(0):\n            with self.assertRaises(UndergroundBar.DoesNotExist):\n                p.undergroundbar\n\n    def test_set_reverse_on_unsaved_object(self):\n        \"\"\"\n        Writing to the reverse relation on an unsaved object\n        is impossible too.\n        \"\"\"\n        p = Place()\n        b = UndergroundBar.objects.create()\n        with self.assertNumQueries(0):\n            with self.assertRaises(ValueError):\n                p.undergroundbar = b\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/pagination/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/pagination/models.py",
    "content": "from django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n@python_2_unicode_compatible\nclass Article(models.Model):\n    headline = models.CharField(max_length=100, default='Default headline')\n    pub_date = models.DateTimeField()\n\n    def __str__(self):\n        return self.headline\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/pagination/tests.py",
    "content": "from __future__ import absolute_import, unicode_literals\n\nfrom datetime import datetime\n\nfrom django.core.paginator import (Paginator, EmptyPage, InvalidPage,\n    PageNotAnInteger)\nfrom django.test import TestCase\nfrom django.utils import six\nfrom django.utils import unittest\n\nfrom .models import Article\n\n\nclass PaginationTests(unittest.TestCase):\n    \"\"\"\n    Tests for the Paginator and Page classes.\n    \"\"\"\n\n    def check_paginator(self, params, output):\n        \"\"\"\n        Helper method that instantiates a Paginator object from the passed\n        params and then checks that its attributes match the passed output.\n        \"\"\"\n        count, num_pages, page_range = output\n        paginator = Paginator(*params)\n        self.check_attribute('count', paginator, count, params)\n        self.check_attribute('num_pages', paginator, num_pages, params)\n        self.check_attribute('page_range', paginator, page_range, params, coerce=list)\n\n    def check_attribute(self, name, paginator, expected, params, coerce=None):\n        \"\"\"\n        Helper method that checks a single attribute and gives a nice error\n        message upon test failure.\n        \"\"\"\n        got = getattr(paginator, name)\n        if coerce is not None:\n            got = coerce(got)\n        self.assertEqual(expected, got,\n            \"For '%s', expected %s but got %s.  Paginator parameters were: %s\"\n            % (name, expected, got, params))\n\n    def test_paginator(self):\n        \"\"\"\n        Tests the paginator attributes using varying inputs.\n        \"\"\"\n        nine = [1, 2, 3, 4, 5, 6, 7, 8, 9]\n        ten = nine + [10]\n        eleven = ten + [11]\n        tests = (\n            # Each item is two tuples:\n            #     First tuple is Paginator parameters - object_list, per_page,\n            #         orphans, and allow_empty_first_page.\n            #     Second tuple is resulting Paginator attributes - count,\n            #         num_pages, and page_range.\n            # Ten items, varying orphans, no empty first page.\n            ((ten, 4, 0, False), (10, 3, [1, 2, 3])),\n            ((ten, 4, 1, False), (10, 3, [1, 2, 3])),\n            ((ten, 4, 2, False), (10, 2, [1, 2])),\n            ((ten, 4, 5, False), (10, 2, [1, 2])),\n            ((ten, 4, 6, False), (10, 1, [1])),\n            # Ten items, varying orphans, allow empty first page.\n            ((ten, 4, 0, True), (10, 3, [1, 2, 3])),\n            ((ten, 4, 1, True), (10, 3, [1, 2, 3])),\n            ((ten, 4, 2, True), (10, 2, [1, 2])),\n            ((ten, 4, 5, True), (10, 2, [1, 2])),\n            ((ten, 4, 6, True), (10, 1, [1])),\n            # One item, varying orphans, no empty first page.\n            (([1], 4, 0, False), (1, 1, [1])),\n            (([1], 4, 1, False), (1, 1, [1])),\n            (([1], 4, 2, False), (1, 1, [1])),\n            # One item, varying orphans, allow empty first page.\n            (([1], 4, 0, True), (1, 1, [1])),\n            (([1], 4, 1, True), (1, 1, [1])),\n            (([1], 4, 2, True), (1, 1, [1])),\n            # Zero items, varying orphans, no empty first page.\n            (([], 4, 0, False), (0, 0, [])),\n            (([], 4, 1, False), (0, 0, [])),\n            (([], 4, 2, False), (0, 0, [])),\n            # Zero items, varying orphans, allow empty first page.\n            (([], 4, 0, True), (0, 1, [1])),\n            (([], 4, 1, True), (0, 1, [1])),\n            (([], 4, 2, True), (0, 1, [1])),\n            # Number if items one less than per_page.\n            (([], 1, 0, True), (0, 1, [1])),\n            (([], 1, 0, False), (0, 0, [])),\n            (([1], 2, 0, True), (1, 1, [1])),\n            ((nine, 10, 0, True), (9, 1, [1])),\n            # Number if items equal to per_page.\n            (([1], 1, 0, True), (1, 1, [1])),\n            (([1, 2], 2, 0, True), (2, 1, [1])),\n            ((ten, 10, 0, True), (10, 1, [1])),\n            # Number if items one more than per_page.\n            (([1, 2], 1, 0, True), (2, 2, [1, 2])),\n            (([1, 2, 3], 2, 0, True), (3, 2, [1, 2])),\n            ((eleven, 10, 0, True), (11, 2, [1, 2])),\n            # Number if items one more than per_page with one orphan.\n            (([1, 2], 1, 1, True), (2, 1, [1])),\n            (([1, 2, 3], 2, 1, True), (3, 1, [1])),\n            ((eleven, 10, 1, True), (11, 1, [1])),\n            # Non-integer inputs\n            ((ten, '4', 1, False), (10, 3, [1, 2, 3])),\n            ((ten, '4', 1, False), (10, 3, [1, 2, 3])),\n            ((ten, 4, '1', False), (10, 3, [1, 2, 3])),\n            ((ten, 4, '1', False), (10, 3, [1, 2, 3])),\n        )\n        for params, output in tests:\n            self.check_paginator(params, output)\n\n    def test_invalid_page_number(self):\n        \"\"\"\n        Tests that invalid page numbers result in the correct exception being\n        raised.\n        \"\"\"\n        paginator = Paginator([1, 2, 3], 2)\n        self.assertRaises(InvalidPage, paginator.page, 3)\n        self.assertRaises(PageNotAnInteger, paginator.validate_number, None)\n        self.assertRaises(PageNotAnInteger, paginator.validate_number, 'x')\n        # With no content and allow_empty_first_page=True, 1 is a valid page number\n        paginator = Paginator([], 2)\n        self.assertEqual(paginator.validate_number(1), 1)\n\n    def test_paginate_misc_classes(self):\n        class CountContainer(object):\n            def count(self):\n                return 42\n        # Paginator can be passed other objects with a count() method.\n        paginator = Paginator(CountContainer(), 10)\n        self.assertEqual(42, paginator.count)\n        self.assertEqual(5, paginator.num_pages)\n        self.assertEqual([1, 2, 3, 4, 5], list(paginator.page_range))\n\n        # Paginator can be passed other objects that implement __len__.\n        class LenContainer(object):\n            def __len__(self):\n                return 42\n        paginator = Paginator(LenContainer(), 10)\n        self.assertEqual(42, paginator.count)\n        self.assertEqual(5, paginator.num_pages)\n        self.assertEqual([1, 2, 3, 4, 5], list(paginator.page_range))\n\n    def check_indexes(self, params, page_num, indexes):\n        \"\"\"\n        Helper method that instantiates a Paginator object from the passed\n        params and then checks that the start and end indexes of the passed\n        page_num match those given as a 2-tuple in indexes.\n        \"\"\"\n        paginator = Paginator(*params)\n        if page_num == 'first':\n            page_num = 1\n        elif page_num == 'last':\n            page_num = paginator.num_pages\n        page = paginator.page(page_num)\n        start, end = indexes\n        msg = (\"For %s of page %s, expected %s but got %s.\"\n               \" Paginator parameters were: %s\")\n        self.assertEqual(start, page.start_index(),\n            msg % ('start index', page_num, start, page.start_index(), params))\n        self.assertEqual(end, page.end_index(),\n            msg % ('end index', page_num, end, page.end_index(), params))\n\n    def test_page_indexes(self):\n        \"\"\"\n        Tests that paginator pages have the correct start and end indexes.\n        \"\"\"\n        ten = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]\n        tests = (\n            # Each item is three tuples:\n            #     First tuple is Paginator parameters - object_list, per_page,\n            #         orphans, and allow_empty_first_page.\n            #     Second tuple is the start and end indexes of the first page.\n            #     Third tuple is the start and end indexes of the last page.\n            # Ten items, varying per_page, no orphans.\n            ((ten, 1, 0, True), (1, 1), (10, 10)),\n            ((ten, 2, 0, True), (1, 2), (9, 10)),\n            ((ten, 3, 0, True), (1, 3), (10, 10)),\n            ((ten, 5, 0, True), (1, 5), (6, 10)),\n            # Ten items, varying per_page, with orphans.\n            ((ten, 1, 1, True), (1, 1), (9, 10)),\n            ((ten, 1, 2, True), (1, 1), (8, 10)),\n            ((ten, 3, 1, True), (1, 3), (7, 10)),\n            ((ten, 3, 2, True), (1, 3), (7, 10)),\n            ((ten, 3, 4, True), (1, 3), (4, 10)),\n            ((ten, 5, 1, True), (1, 5), (6, 10)),\n            ((ten, 5, 2, True), (1, 5), (6, 10)),\n            ((ten, 5, 5, True), (1, 10), (1, 10)),\n            # One item, varying orphans, no empty first page.\n            (([1], 4, 0, False), (1, 1), (1, 1)),\n            (([1], 4, 1, False), (1, 1), (1, 1)),\n            (([1], 4, 2, False), (1, 1), (1, 1)),\n            # One item, varying orphans, allow empty first page.\n            (([1], 4, 0, True), (1, 1), (1, 1)),\n            (([1], 4, 1, True), (1, 1), (1, 1)),\n            (([1], 4, 2, True), (1, 1), (1, 1)),\n            # Zero items, varying orphans, allow empty first page.\n            (([], 4, 0, True), (0, 0), (0, 0)),\n            (([], 4, 1, True), (0, 0), (0, 0)),\n            (([], 4, 2, True), (0, 0), (0, 0)),\n        )\n        for params, first, last in tests:\n            self.check_indexes(params, 'first', first)\n            self.check_indexes(params, 'last', last)\n\n        # When no items and no empty first page, we should get EmptyPage error.\n        self.assertRaises(EmptyPage, self.check_indexes, ([], 4, 0, False), 1, None)\n        self.assertRaises(EmptyPage, self.check_indexes, ([], 4, 1, False), 1, None)\n        self.assertRaises(EmptyPage, self.check_indexes, ([], 4, 2, False), 1, None)\n\n    def test_page_sequence(self):\n        \"\"\"\n        Tests that a paginator page acts like a standard sequence.\n        \"\"\"\n        eleven = 'abcdefghijk'\n        page2 = Paginator(eleven, per_page=5, orphans=1).page(2)\n        self.assertEqual(len(page2), 6)\n        self.assertTrue('k' in page2)\n        self.assertFalse('a' in page2)\n        self.assertEqual(''.join(page2), 'fghijk')\n        self.assertEqual(''.join(reversed(page2)), 'kjihgf')\n\n\nclass ModelPaginationTests(TestCase):\n    \"\"\"\n    Test pagination with Django model instances\n    \"\"\"\n    def setUp(self):\n        # Prepare a list of objects for pagination.\n        for x in range(1, 10):\n            a = Article(headline='Article %s' % x, pub_date=datetime(2005, 7, 29))\n            a.save()\n\n    def test_first_page(self):\n        paginator = Paginator(Article.objects.all(), 5)\n        p = paginator.page(1)\n        self.assertEqual(\"<Page 1 of 2>\", six.text_type(p))\n        self.assertQuerysetEqual(p.object_list, [\n                \"<Article: Article 1>\",\n                \"<Article: Article 2>\",\n                \"<Article: Article 3>\",\n                \"<Article: Article 4>\",\n                \"<Article: Article 5>\"\n            ]\n        )\n        self.assertTrue(p.has_next())\n        self.assertFalse(p.has_previous())\n        self.assertTrue(p.has_other_pages())\n        self.assertEqual(2, p.next_page_number())\n        self.assertRaises(InvalidPage, p.previous_page_number)\n        self.assertEqual(1, p.start_index())\n        self.assertEqual(5, p.end_index())\n\n    def test_last_page(self):\n        paginator = Paginator(Article.objects.all(), 5)\n        p = paginator.page(2)\n        self.assertEqual(\"<Page 2 of 2>\", six.text_type(p))\n        self.assertQuerysetEqual(p.object_list, [\n                \"<Article: Article 6>\",\n                \"<Article: Article 7>\",\n                \"<Article: Article 8>\",\n                \"<Article: Article 9>\"\n            ]\n        )\n        self.assertFalse(p.has_next())\n        self.assertTrue(p.has_previous())\n        self.assertTrue(p.has_other_pages())\n        self.assertRaises(InvalidPage, p.next_page_number)\n        self.assertEqual(1, p.previous_page_number())\n        self.assertEqual(6, p.start_index())\n        self.assertEqual(9, p.end_index())\n\n    def test_page_getitem(self):\n        \"\"\"\n        Tests proper behaviour of a paginator page __getitem__ (queryset\n        evaluation, slicing, exception raised).\n        \"\"\"\n        paginator = Paginator(Article.objects.all(), 5)\n        p = paginator.page(1)\n\n        # Make sure object_list queryset is not evaluated by an invalid __getitem__ call.\n        # (this happens from the template engine when using eg: {% page_obj.has_previous %})\n        self.assertIsNone(p.object_list._result_cache)\n        self.assertRaises(TypeError, lambda: p['has_previous'])\n        self.assertIsNone(p.object_list._result_cache)\n\n        # Make sure slicing the Page object with numbers and slice objects work.\n        self.assertEqual(p[0], Article.objects.get(headline='Article 1'))\n        self.assertQuerysetEqual(p[slice(2)], [\n                \"<Article: Article 1>\",\n                \"<Article: Article 2>\",\n            ]\n        )\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/queries/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/queries/models.py",
    "content": "\"\"\"\nVarious complex queries that have been problematic in the past.\n\"\"\"\nfrom __future__ import unicode_literals\n\nimport threading\n\nfrom django.db import models\nfrom django.utils import six\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\nclass DumbCategory(models.Model):\n    pass\n\nclass ProxyCategory(DumbCategory):\n    class Meta:\n        proxy = True\n\nclass NamedCategory(DumbCategory):\n    name = models.CharField(max_length=10)\n\n@python_2_unicode_compatible\nclass Tag(models.Model):\n    name = models.CharField(max_length=10)\n    parent = models.ForeignKey('self', blank=True, null=True,\n            related_name='children')\n    category = models.ForeignKey(NamedCategory, null=True, default=None)\n\n    class Meta:\n        ordering = ['name']\n\n    def __str__(self):\n        return self.name\n\n@python_2_unicode_compatible\nclass Note(models.Model):\n    note = models.CharField(max_length=100)\n    misc = models.CharField(max_length=10)\n\n    class Meta:\n        ordering = ['note']\n\n    def __str__(self):\n        return self.note\n\n    def __init__(self, *args, **kwargs):\n        super(Note, self).__init__(*args, **kwargs)\n        # Regression for #13227 -- having an attribute that\n        # is unpickleable doesn't stop you from cloning queries\n        # that use objects of that type as an argument.\n        self.lock = threading.Lock()\n\n@python_2_unicode_compatible\nclass Annotation(models.Model):\n    name = models.CharField(max_length=10)\n    tag = models.ForeignKey(Tag)\n    notes = models.ManyToManyField(Note)\n\n    def __str__(self):\n        return self.name\n\n@python_2_unicode_compatible\nclass ExtraInfo(models.Model):\n    info = models.CharField(max_length=100)\n    note = models.ForeignKey(Note)\n    value = models.IntegerField(null=True)\n\n    class Meta:\n        ordering = ['info']\n\n    def __str__(self):\n        return self.info\n\n@python_2_unicode_compatible\nclass Author(models.Model):\n    name = models.CharField(max_length=10)\n    num = models.IntegerField(unique=True)\n    extra = models.ForeignKey(ExtraInfo)\n\n    class Meta:\n        ordering = ['name']\n\n    def __str__(self):\n        return self.name\n\n@python_2_unicode_compatible\nclass Item(models.Model):\n    name = models.CharField(max_length=10)\n    created = models.DateTimeField()\n    modified = models.DateTimeField(blank=True, null=True)\n    tags = models.ManyToManyField(Tag, blank=True, null=True)\n    creator = models.ForeignKey(Author)\n    note = models.ForeignKey(Note)\n\n    class Meta:\n        ordering = ['-note', 'name']\n\n    def __str__(self):\n        return self.name\n\n@python_2_unicode_compatible\nclass Report(models.Model):\n    name = models.CharField(max_length=10)\n    creator = models.ForeignKey(Author, to_field='num', null=True)\n\n    def __str__(self):\n        return self.name\n\n@python_2_unicode_compatible\nclass Ranking(models.Model):\n    rank = models.IntegerField()\n    author = models.ForeignKey(Author)\n\n    class Meta:\n        # A complex ordering specification. Should stress the system a bit.\n        ordering = ('author__extra__note', 'author__name', 'rank')\n\n    def __str__(self):\n        return '%d: %s' % (self.rank, self.author.name)\n\n@python_2_unicode_compatible\nclass Cover(models.Model):\n    title = models.CharField(max_length=50)\n    item = models.ForeignKey(Item)\n\n    class Meta:\n        ordering = ['item']\n\n    def __str__(self):\n        return self.title\n\n@python_2_unicode_compatible\nclass Number(models.Model):\n    num = models.IntegerField()\n\n    def __str__(self):\n        return six.text_type(self.num)\n\n# Symmetrical m2m field with a normal field using the reverse accesor name\n# (\"valid\").\nclass Valid(models.Model):\n    valid = models.CharField(max_length=10)\n    parent = models.ManyToManyField('self')\n\n    class Meta:\n        ordering = ['valid']\n\n# Some funky cross-linked models for testing a couple of infinite recursion\n# cases.\nclass X(models.Model):\n    y = models.ForeignKey('Y')\n\nclass Y(models.Model):\n    x1 = models.ForeignKey(X, related_name='y1')\n\n# Some models with a cycle in the default ordering. This would be bad if we\n# didn't catch the infinite loop.\nclass LoopX(models.Model):\n    y = models.ForeignKey('LoopY')\n\n    class Meta:\n        ordering = ['y']\n\nclass LoopY(models.Model):\n    x = models.ForeignKey(LoopX)\n\n    class Meta:\n        ordering = ['x']\n\nclass LoopZ(models.Model):\n    z = models.ForeignKey('self')\n\n    class Meta:\n        ordering = ['z']\n\n# A model and custom default manager combination.\nclass CustomManager(models.Manager):\n    def get_query_set(self):\n        qs = super(CustomManager, self).get_query_set()\n        return qs.filter(public=True, tag__name='t1')\n\n@python_2_unicode_compatible\nclass ManagedModel(models.Model):\n    data = models.CharField(max_length=10)\n    tag = models.ForeignKey(Tag)\n    public = models.BooleanField(default=True)\n\n    objects = CustomManager()\n    normal_manager = models.Manager()\n\n    def __str__(self):\n        return self.data\n\n# An inter-related setup with multiple paths from Child to Detail.\nclass Detail(models.Model):\n    data = models.CharField(max_length=10)\n\nclass MemberManager(models.Manager):\n    def get_query_set(self):\n        return super(MemberManager, self).get_query_set().select_related(\"details\")\n\nclass Member(models.Model):\n    name = models.CharField(max_length=10)\n    details = models.OneToOneField(Detail, primary_key=True)\n\n    objects = MemberManager()\n\nclass Child(models.Model):\n    person = models.OneToOneField(Member, primary_key=True)\n    parent = models.ForeignKey(Member, related_name=\"children\")\n\n# Custom primary keys interfered with ordering in the past.\nclass CustomPk(models.Model):\n    name = models.CharField(max_length=10, primary_key=True)\n    extra = models.CharField(max_length=10)\n\n    class Meta:\n        ordering = ['name', 'extra']\n\nclass Related(models.Model):\n    custom = models.ForeignKey(CustomPk)\n\n# An inter-related setup with a model subclass that has a nullable\n# path to another model, and a return path from that model.\n\n@python_2_unicode_compatible\nclass Celebrity(models.Model):\n    name = models.CharField(\"Name\", max_length=20)\n    greatest_fan = models.ForeignKey(\"Fan\", null=True, unique=True)\n\n    def __str__(self):\n        return self.name\n\nclass TvChef(Celebrity):\n    pass\n\nclass Fan(models.Model):\n    fan_of = models.ForeignKey(Celebrity)\n\n# Multiple foreign keys\n@python_2_unicode_compatible\nclass LeafA(models.Model):\n    data = models.CharField(max_length=10)\n\n    def __str__(self):\n        return self.data\n\nclass LeafB(models.Model):\n    data = models.CharField(max_length=10)\n\nclass Join(models.Model):\n    a = models.ForeignKey(LeafA)\n    b = models.ForeignKey(LeafB)\n\n@python_2_unicode_compatible\nclass ReservedName(models.Model):\n    name = models.CharField(max_length=20)\n    order = models.IntegerField()\n\n    def __str__(self):\n        return self.name\n\n# A simpler shared-foreign-key setup that can expose some problems.\nclass SharedConnection(models.Model):\n    data = models.CharField(max_length=10)\n\nclass PointerA(models.Model):\n    connection = models.ForeignKey(SharedConnection)\n\nclass PointerB(models.Model):\n    connection = models.ForeignKey(SharedConnection)\n\n# Multi-layer ordering\n@python_2_unicode_compatible\nclass SingleObject(models.Model):\n    name = models.CharField(max_length=10)\n\n    class Meta:\n        ordering = ['name']\n\n    def __str__(self):\n        return self.name\n\nclass RelatedObject(models.Model):\n    single = models.ForeignKey(SingleObject, null=True)\n\n    class Meta:\n        ordering = ['single']\n\n@python_2_unicode_compatible\nclass Plaything(models.Model):\n    name = models.CharField(max_length=10)\n    others = models.ForeignKey(RelatedObject, null=True)\n\n    class Meta:\n        ordering = ['others']\n\n    def __str__(self):\n        return self.name\n\nclass Article(models.Model):\n    name = models.CharField(max_length=20)\n    created = models.DateTimeField()\n\n@python_2_unicode_compatible\nclass Food(models.Model):\n    name = models.CharField(max_length=20, unique=True)\n\n    def __str__(self):\n        return self.name\n\n@python_2_unicode_compatible\nclass Eaten(models.Model):\n    food = models.ForeignKey(Food, to_field=\"name\")\n    meal = models.CharField(max_length=20)\n\n    def __str__(self):\n        return \"%s at %s\" % (self.food, self.meal)\n\n@python_2_unicode_compatible\nclass Node(models.Model):\n    num = models.IntegerField(unique=True)\n    parent = models.ForeignKey(\"self\", to_field=\"num\", null=True)\n\n    def __str__(self):\n        return \"%s\" % self.num\n\n# Bug #12252\n@python_2_unicode_compatible\nclass ObjectA(models.Model):\n    name = models.CharField(max_length=50)\n\n    def __str__(self):\n        return self.name\n\n@python_2_unicode_compatible\nclass ObjectB(models.Model):\n    name = models.CharField(max_length=50)\n    objecta = models.ForeignKey(ObjectA)\n    num = models.PositiveSmallIntegerField()\n\n    def __str__(self):\n        return self.name\n\n@python_2_unicode_compatible\nclass ObjectC(models.Model):\n    name = models.CharField(max_length=50)\n    objecta = models.ForeignKey(ObjectA)\n    objectb = models.ForeignKey(ObjectB)\n\n    def __str__(self):\n       return self.name\n\n@python_2_unicode_compatible\nclass SimpleCategory(models.Model):\n    name = models.CharField(max_length=15)\n\n    def __str__(self):\n        return self.name\n\n@python_2_unicode_compatible\nclass SpecialCategory(SimpleCategory):\n    special_name = models.CharField(max_length=15)\n\n    def __str__(self):\n        return self.name + \" \" + self.special_name\n\n@python_2_unicode_compatible\nclass CategoryItem(models.Model):\n    category = models.ForeignKey(SimpleCategory)\n\n    def __str__(self):\n        return \"category item: \" + str(self.category)\n\n@python_2_unicode_compatible\nclass OneToOneCategory(models.Model):\n    new_name = models.CharField(max_length=15)\n    category = models.OneToOneField(SimpleCategory)\n\n    def __str__(self):\n        return \"one2one \" + self.new_name\n\nclass NullableName(models.Model):\n    name = models.CharField(max_length=20, null=True)\n\n    class Meta:\n        ordering = ['id']\n\nclass ModelD(models.Model):\n    name = models.TextField()\n\nclass ModelC(models.Model):\n    name = models.TextField()\n\nclass ModelB(models.Model):\n    name = models.TextField()\n    c = models.ForeignKey(ModelC)\n\nclass ModelA(models.Model):\n    name = models.TextField()\n    b = models.ForeignKey(ModelB, null=True)\n    d = models.ForeignKey(ModelD)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/queries/tests.py",
    "content": "from __future__ import absolute_import,unicode_literals\n\nimport datetime\nfrom operator import attrgetter\nimport pickle\nimport sys\n\nfrom django.conf import settings\nfrom django.core.exceptions import FieldError\nfrom django.db import DatabaseError, connection, connections, DEFAULT_DB_ALIAS\nfrom django.db.models import Count\nfrom django.db.models.query import Q, ITER_CHUNK_SIZE, EmptyQuerySet\nfrom django.db.models.sql.where import WhereNode, EverythingNode, NothingNode\nfrom django.db.models.sql.datastructures import EmptyResultSet\nfrom django.test import TestCase, skipUnlessDBFeature\nfrom django.test.utils import str_prefix\nfrom django.utils import unittest\nfrom django.utils.datastructures import SortedDict\n\nfrom .models import (Annotation, Article, Author, Celebrity, Child, Cover,\n    Detail, DumbCategory, ExtraInfo, Fan, Item, LeafA, LoopX, LoopZ,\n    ManagedModel, Member, NamedCategory, Note, Number, Plaything, PointerA,\n    Ranking, Related, Report, ReservedName, Tag, TvChef, Valid, X, Food, Eaten,\n    Node, ObjectA, ObjectB, ObjectC, CategoryItem, SimpleCategory,\n    SpecialCategory, OneToOneCategory, NullableName, ProxyCategory,\n    SingleObject, RelatedObject, ModelA, ModelD)\n\n\nclass BaseQuerysetTest(TestCase):\n    def assertValueQuerysetEqual(self, qs, values):\n        return self.assertQuerysetEqual(qs, values, transform=lambda x: x)\n\n\nclass Queries1Tests(BaseQuerysetTest):\n    def setUp(self):\n        generic = NamedCategory.objects.create(name=\"Generic\")\n        self.t1 = Tag.objects.create(name='t1', category=generic)\n        self.t2 = Tag.objects.create(name='t2', parent=self.t1, category=generic)\n        self.t3 = Tag.objects.create(name='t3', parent=self.t1)\n        t4 = Tag.objects.create(name='t4', parent=self.t3)\n        self.t5 = Tag.objects.create(name='t5', parent=self.t3)\n\n        self.n1 = Note.objects.create(note='n1', misc='foo', id=1)\n        n2 = Note.objects.create(note='n2', misc='bar', id=2)\n        self.n3 = Note.objects.create(note='n3', misc='foo', id=3)\n\n        ann1 = Annotation.objects.create(name='a1', tag=self.t1)\n        ann1.notes.add(self.n1)\n        ann2 = Annotation.objects.create(name='a2', tag=t4)\n        ann2.notes.add(n2, self.n3)\n\n        # Create these out of order so that sorting by 'id' will be different to sorting\n        # by 'info'. Helps detect some problems later.\n        self.e2 = ExtraInfo.objects.create(info='e2', note=n2, value=41)\n        e1 = ExtraInfo.objects.create(info='e1', note=self.n1, value=42)\n\n        self.a1 = Author.objects.create(name='a1', num=1001, extra=e1)\n        self.a2 = Author.objects.create(name='a2', num=2002, extra=e1)\n        a3 = Author.objects.create(name='a3', num=3003, extra=self.e2)\n        self.a4 = Author.objects.create(name='a4', num=4004, extra=self.e2)\n\n        self.time1 = datetime.datetime(2007, 12, 19, 22, 25, 0)\n        self.time2 = datetime.datetime(2007, 12, 19, 21, 0, 0)\n        time3 = datetime.datetime(2007, 12, 20, 22, 25, 0)\n        time4 = datetime.datetime(2007, 12, 20, 21, 0, 0)\n        self.i1 = Item.objects.create(name='one', created=self.time1, modified=self.time1, creator=self.a1, note=self.n3)\n        self.i1.tags = [self.t1, self.t2]\n        self.i2 = Item.objects.create(name='two', created=self.time2, creator=self.a2, note=n2)\n        self.i2.tags = [self.t1, self.t3]\n        self.i3 = Item.objects.create(name='three', created=time3, creator=self.a2, note=self.n3)\n        i4 = Item.objects.create(name='four', created=time4, creator=self.a4, note=self.n3)\n        i4.tags = [t4]\n\n        self.r1 = Report.objects.create(name='r1', creator=self.a1)\n        Report.objects.create(name='r2', creator=a3)\n        Report.objects.create(name='r3')\n\n        # Ordering by 'rank' gives us rank2, rank1, rank3. Ordering by the Meta.ordering\n        # will be rank3, rank2, rank1.\n        self.rank1 = Ranking.objects.create(rank=2, author=self.a2)\n\n        Cover.objects.create(title=\"first\", item=i4)\n        Cover.objects.create(title=\"second\", item=self.i2)\n\n    def test_ticket1050(self):\n        self.assertQuerysetEqual(\n            Item.objects.filter(tags__isnull=True),\n            ['<Item: three>']\n        )\n        self.assertQuerysetEqual(\n            Item.objects.filter(tags__id__isnull=True),\n            ['<Item: three>']\n        )\n\n    def test_ticket1801(self):\n        self.assertQuerysetEqual(\n            Author.objects.filter(item=self.i2),\n            ['<Author: a2>']\n        )\n        self.assertQuerysetEqual(\n            Author.objects.filter(item=self.i3),\n            ['<Author: a2>']\n        )\n        self.assertQuerysetEqual(\n            Author.objects.filter(item=self.i2) & Author.objects.filter(item=self.i3),\n            ['<Author: a2>']\n        )\n\n    def test_ticket2306(self):\n        # Checking that no join types are \"left outer\" joins.\n        query = Item.objects.filter(tags=self.t2).query\n        self.assertTrue(query.LOUTER not in [x[2] for x in query.alias_map.values()])\n\n        self.assertQuerysetEqual(\n            Item.objects.filter(Q(tags=self.t1)).order_by('name'),\n            ['<Item: one>', '<Item: two>']\n        )\n        self.assertQuerysetEqual(\n            Item.objects.filter(Q(tags=self.t1)).filter(Q(tags=self.t2)),\n            ['<Item: one>']\n        )\n        self.assertQuerysetEqual(\n            Item.objects.filter(Q(tags=self.t1)).filter(Q(creator__name='fred')|Q(tags=self.t2)),\n            ['<Item: one>']\n        )\n\n        # Each filter call is processed \"at once\" against a single table, so this is\n        # different from the previous example as it tries to find tags that are two\n        # things at once (rather than two tags).\n        self.assertQuerysetEqual(\n            Item.objects.filter(Q(tags=self.t1) & Q(tags=self.t2)),\n            []\n        )\n        self.assertQuerysetEqual(\n            Item.objects.filter(Q(tags=self.t1), Q(creator__name='fred')|Q(tags=self.t2)),\n            []\n        )\n\n        qs = Author.objects.filter(ranking__rank=2, ranking__id=self.rank1.id)\n        self.assertQuerysetEqual(list(qs), ['<Author: a2>'])\n        self.assertEqual(2, qs.query.count_active_tables(), 2)\n        qs = Author.objects.filter(ranking__rank=2).filter(ranking__id=self.rank1.id)\n        self.assertEqual(qs.query.count_active_tables(), 3)\n\n    def test_ticket4464(self):\n        self.assertQuerysetEqual(\n            Item.objects.filter(tags=self.t1).filter(tags=self.t2),\n            ['<Item: one>']\n        )\n        self.assertQuerysetEqual(\n            Item.objects.filter(tags__in=[self.t1, self.t2]).distinct().order_by('name'),\n            ['<Item: one>', '<Item: two>']\n        )\n        self.assertQuerysetEqual(\n            Item.objects.filter(tags__in=[self.t1, self.t2]).filter(tags=self.t3),\n            ['<Item: two>']\n        )\n\n        # Make sure .distinct() works with slicing (this was broken in Oracle).\n        self.assertQuerysetEqual(\n            Item.objects.filter(tags__in=[self.t1, self.t2]).order_by('name')[:3],\n            ['<Item: one>', '<Item: one>', '<Item: two>']\n        )\n        self.assertQuerysetEqual(\n            Item.objects.filter(tags__in=[self.t1, self.t2]).distinct().order_by('name')[:3],\n            ['<Item: one>', '<Item: two>']\n        )\n\n    def test_tickets_2080_3592(self):\n        self.assertQuerysetEqual(\n            Author.objects.filter(item__name='one') | Author.objects.filter(name='a3'),\n            ['<Author: a1>', '<Author: a3>']\n        )\n        self.assertQuerysetEqual(\n            Author.objects.filter(Q(item__name='one') | Q(name='a3')),\n            ['<Author: a1>', '<Author: a3>']\n        )\n        self.assertQuerysetEqual(\n            Author.objects.filter(Q(name='a3') | Q(item__name='one')),\n            ['<Author: a1>', '<Author: a3>']\n        )\n        self.assertQuerysetEqual(\n            Author.objects.filter(Q(item__name='three') | Q(report__name='r3')),\n            ['<Author: a2>']\n        )\n\n    def test_ticket6074(self):\n        # Merging two empty result sets shouldn't leave a queryset with no constraints\n        # (which would match everything).\n        self.assertQuerysetEqual(Author.objects.filter(Q(id__in=[])), [])\n        self.assertQuerysetEqual(\n            Author.objects.filter(Q(id__in=[])|Q(id__in=[])),\n            []\n        )\n\n    def test_tickets_1878_2939(self):\n        self.assertEqual(Item.objects.values('creator').distinct().count(), 3)\n\n        # Create something with a duplicate 'name' so that we can test multi-column\n        # cases (which require some tricky SQL transformations under the covers).\n        xx = Item(name='four', created=self.time1, creator=self.a2, note=self.n1)\n        xx.save()\n        self.assertEqual(\n            Item.objects.exclude(name='two').values('creator', 'name').distinct().count(),\n            4\n        )\n        self.assertEqual(\n            Item.objects.exclude(name='two').extra(select={'foo': '%s'}, select_params=(1,)).values('creator', 'name', 'foo').distinct().count(),\n            4\n        )\n        self.assertEqual(\n            Item.objects.exclude(name='two').extra(select={'foo': '%s'}, select_params=(1,)).values('creator', 'name').distinct().count(),\n            4\n        )\n        xx.delete()\n\n    def test_ticket7323(self):\n        self.assertEqual(Item.objects.values('creator', 'name').count(), 4)\n\n    def test_ticket2253(self):\n        q1 = Item.objects.order_by('name')\n        q2 = Item.objects.filter(id=self.i1.id)\n        self.assertQuerysetEqual(\n            q1,\n            ['<Item: four>', '<Item: one>', '<Item: three>', '<Item: two>']\n        )\n        self.assertQuerysetEqual(q2, ['<Item: one>'])\n        self.assertQuerysetEqual(\n            (q1 | q2).order_by('name'),\n            ['<Item: four>', '<Item: one>', '<Item: three>', '<Item: two>']\n        )\n        self.assertQuerysetEqual((q1 & q2).order_by('name'), ['<Item: one>'])\n\n        q1 = Item.objects.filter(tags=self.t1)\n        q2 = Item.objects.filter(note=self.n3, tags=self.t2)\n        q3 = Item.objects.filter(creator=self.a4)\n        self.assertQuerysetEqual(\n            ((q1 & q2) | q3).order_by('name'),\n            ['<Item: four>', '<Item: one>']\n        )\n\n    def test_order_by_tables(self):\n        q1 = Item.objects.order_by('name')\n        q2 = Item.objects.filter(id=self.i1.id)\n        list(q2)\n        self.assertEqual(len((q1 & q2).order_by('name').query.tables), 1)\n\n    def test_order_by_join_unref(self):\n        \"\"\"\n        This test is related to the above one, testing that there aren't\n        old JOINs in the query.\n        \"\"\"\n        qs = Celebrity.objects.order_by('greatest_fan__fan_of')\n        self.assertIn('OUTER JOIN', str(qs.query))\n        qs = qs.order_by('id')\n        self.assertNotIn('OUTER JOIN', str(qs.query))\n\n    def test_tickets_4088_4306(self):\n        self.assertQuerysetEqual(\n            Report.objects.filter(creator=1001),\n            ['<Report: r1>']\n        )\n        self.assertQuerysetEqual(\n            Report.objects.filter(creator__num=1001),\n            ['<Report: r1>']\n        )\n        self.assertQuerysetEqual(Report.objects.filter(creator__id=1001), [])\n        self.assertQuerysetEqual(\n            Report.objects.filter(creator__id=self.a1.id),\n            ['<Report: r1>']\n        )\n        self.assertQuerysetEqual(\n            Report.objects.filter(creator__name='a1'),\n            ['<Report: r1>']\n        )\n\n    def test_ticket4510(self):\n        self.assertQuerysetEqual(\n            Author.objects.filter(report__name='r1'),\n            ['<Author: a1>']\n        )\n\n    def test_ticket7378(self):\n        self.assertQuerysetEqual(self.a1.report_set.all(), ['<Report: r1>'])\n\n    def test_tickets_5324_6704(self):\n        self.assertQuerysetEqual(\n            Item.objects.filter(tags__name='t4'),\n            ['<Item: four>']\n        )\n        self.assertQuerysetEqual(\n            Item.objects.exclude(tags__name='t4').order_by('name').distinct(),\n            ['<Item: one>', '<Item: three>', '<Item: two>']\n        )\n        self.assertQuerysetEqual(\n            Item.objects.exclude(tags__name='t4').order_by('name').distinct().reverse(),\n            ['<Item: two>', '<Item: three>', '<Item: one>']\n        )\n        self.assertQuerysetEqual(\n            Author.objects.exclude(item__name='one').distinct().order_by('name'),\n            ['<Author: a2>', '<Author: a3>', '<Author: a4>']\n        )\n\n        # Excluding across a m2m relation when there is more than one related\n        # object associated was problematic.\n        self.assertQuerysetEqual(\n            Item.objects.exclude(tags__name='t1').order_by('name'),\n            ['<Item: four>', '<Item: three>']\n        )\n        self.assertQuerysetEqual(\n            Item.objects.exclude(tags__name='t1').exclude(tags__name='t4'),\n            ['<Item: three>']\n        )\n\n        # Excluding from a relation that cannot be NULL should not use outer joins.\n        query = Item.objects.exclude(creator__in=[self.a1, self.a2]).query\n        self.assertTrue(query.LOUTER not in [x[2] for x in query.alias_map.values()])\n\n        # Similarly, when one of the joins cannot possibly, ever, involve NULL\n        # values (Author -> ExtraInfo, in the following), it should never be\n        # promoted to a left outer join. So the following query should only\n        # involve one \"left outer\" join (Author -> Item is 0-to-many).\n        qs = Author.objects.filter(id=self.a1.id).filter(Q(extra__note=self.n1)|Q(item__note=self.n3))\n        self.assertEqual(\n            len([x[2] for x in qs.query.alias_map.values() if x[2] == query.LOUTER and qs.query.alias_refcount[x[1]]]),\n            1\n        )\n\n        # The previous changes shouldn't affect nullable foreign key joins.\n        self.assertQuerysetEqual(\n            Tag.objects.filter(parent__isnull=True).order_by('name'),\n            ['<Tag: t1>']\n        )\n        self.assertQuerysetEqual(\n            Tag.objects.exclude(parent__isnull=True).order_by('name'),\n            ['<Tag: t2>', '<Tag: t3>', '<Tag: t4>', '<Tag: t5>']\n        )\n        self.assertQuerysetEqual(\n            Tag.objects.exclude(Q(parent__name='t1') | Q(parent__isnull=True)).order_by('name'),\n            ['<Tag: t4>', '<Tag: t5>']\n        )\n        self.assertQuerysetEqual(\n            Tag.objects.exclude(Q(parent__isnull=True) | Q(parent__name='t1')).order_by('name'),\n            ['<Tag: t4>', '<Tag: t5>']\n        )\n        self.assertQuerysetEqual(\n            Tag.objects.exclude(Q(parent__parent__isnull=True)).order_by('name'),\n            ['<Tag: t4>', '<Tag: t5>']\n        )\n        self.assertQuerysetEqual(\n            Tag.objects.filter(~Q(parent__parent__isnull=True)).order_by('name'),\n            ['<Tag: t4>', '<Tag: t5>']\n        )\n\n    def test_ticket2091(self):\n        t = Tag.objects.get(name='t4')\n        self.assertQuerysetEqual(\n            Item.objects.filter(tags__in=[t]),\n            ['<Item: four>']\n        )\n\n    def test_heterogeneous_qs_combination(self):\n        # Combining querysets built on different models should behave in a well-defined\n        # fashion. We raise an error.\n        self.assertRaisesMessage(\n            AssertionError,\n            'Cannot combine queries on two different base models.',\n            lambda: Author.objects.all() & Tag.objects.all()\n        )\n        self.assertRaisesMessage(\n            AssertionError,\n            'Cannot combine queries on two different base models.',\n            lambda: Author.objects.all() | Tag.objects.all()\n        )\n\n    def test_ticket3141(self):\n        self.assertEqual(Author.objects.extra(select={'foo': '1'}).count(), 4)\n        self.assertEqual(\n            Author.objects.extra(select={'foo': '%s'}, select_params=(1,)).count(),\n            4\n        )\n\n    def test_ticket2400(self):\n        self.assertQuerysetEqual(\n            Author.objects.filter(item__isnull=True),\n            ['<Author: a3>']\n        )\n        self.assertQuerysetEqual(\n            Tag.objects.filter(item__isnull=True),\n            ['<Tag: t5>']\n        )\n\n    def test_ticket2496(self):\n        self.assertQuerysetEqual(\n            Item.objects.extra(tables=['queries_author']).select_related().order_by('name')[:1],\n            ['<Item: four>']\n        )\n\n    def test_tickets_2076_7256(self):\n        # Ordering on related tables should be possible, even if the table is\n        # not otherwise involved.\n        self.assertQuerysetEqual(\n            Item.objects.order_by('note__note', 'name'),\n            ['<Item: two>', '<Item: four>', '<Item: one>', '<Item: three>']\n        )\n\n        # Ordering on a related field should use the remote model's default\n        # ordering as a final step.\n        self.assertQuerysetEqual(\n            Author.objects.order_by('extra', '-name'),\n            ['<Author: a2>', '<Author: a1>', '<Author: a4>', '<Author: a3>']\n        )\n\n        # Using remote model default ordering can span multiple models (in this\n        # case, Cover is ordered by Item's default, which uses Note's default).\n        self.assertQuerysetEqual(\n            Cover.objects.all(),\n            ['<Cover: first>', '<Cover: second>']\n        )\n\n        # If the remote model does not have a default ordering, we order by its 'id'\n        # field.\n        self.assertQuerysetEqual(\n            Item.objects.order_by('creator', 'name'),\n            ['<Item: one>', '<Item: three>', '<Item: two>', '<Item: four>']\n        )\n\n        # Ordering by a many-valued attribute (e.g. a many-to-many or reverse\n        # ForeignKey) is legal, but the results might not make sense. That\n        # isn't Django's problem. Garbage in, garbage out.\n        self.assertQuerysetEqual(\n            Item.objects.filter(tags__isnull=False).order_by('tags', 'id'),\n            ['<Item: one>', '<Item: two>', '<Item: one>', '<Item: two>', '<Item: four>']\n        )\n\n        # If we replace the default ordering, Django adjusts the required\n        # tables automatically. Item normally requires a join with Note to do\n        # the default ordering, but that isn't needed here.\n        qs = Item.objects.order_by('name')\n        self.assertQuerysetEqual(\n            qs,\n            ['<Item: four>', '<Item: one>', '<Item: three>', '<Item: two>']\n        )\n        self.assertEqual(len(qs.query.tables), 1)\n\n    def test_tickets_2874_3002(self):\n        qs = Item.objects.select_related().order_by('note__note', 'name')\n        self.assertQuerysetEqual(\n            qs,\n            ['<Item: two>', '<Item: four>', '<Item: one>', '<Item: three>']\n        )\n\n        # This is also a good select_related() test because there are multiple\n        # Note entries in the SQL. The two Note items should be different.\n        self.assertTrue(repr(qs[0].note), '<Note: n2>')\n        self.assertEqual(repr(qs[0].creator.extra.note), '<Note: n1>')\n\n    def test_ticket3037(self):\n        self.assertQuerysetEqual(\n            Item.objects.filter(Q(creator__name='a3', name='two')|Q(creator__name='a4', name='four')),\n            ['<Item: four>']\n        )\n\n    def test_tickets_5321_7070(self):\n        # Ordering columns must be included in the output columns. Note that\n        # this means results that might otherwise be distinct are not (if there\n        # are multiple values in the ordering cols), as in this example. This\n        # isn't a bug; it's a warning to be careful with the selection of\n        # ordering columns.\n        self.assertValueQuerysetEqual(\n            Note.objects.values('misc').distinct().order_by('note', '-misc'),\n            [{'misc': 'foo'}, {'misc': 'bar'}, {'misc': 'foo'}]\n        )\n\n    def test_ticket4358(self):\n        # If you don't pass any fields to values(), relation fields are\n        # returned as \"foo_id\" keys, not \"foo\". For consistency, you should be\n        # able to pass \"foo_id\" in the fields list and have it work, too. We\n        # actually allow both \"foo\" and \"foo_id\".\n\n        # The *_id version is returned by default.\n        self.assertTrue('note_id' in ExtraInfo.objects.values()[0])\n\n        # You can also pass it in explicitly.\n        self.assertValueQuerysetEqual(\n            ExtraInfo.objects.values('note_id'),\n            [{'note_id': 1}, {'note_id': 2}]\n        )\n\n        # ...or use the field name.\n        self.assertValueQuerysetEqual(\n            ExtraInfo.objects.values('note'),\n            [{'note': 1}, {'note': 2}]\n        )\n\n    def test_ticket2902(self):\n        # Parameters can be given to extra_select, *if* you use a SortedDict.\n\n        # (First we need to know which order the keys fall in \"naturally\" on\n        # your system, so we can put things in the wrong way around from\n        # normal. A normal dict would thus fail.)\n        s = [('a', '%s'), ('b', '%s')]\n        params = ['one', 'two']\n        if {'a': 1, 'b': 2}.keys() == ['a', 'b']:\n            s.reverse()\n            params.reverse()\n\n        # This slightly odd comparison works around the fact that PostgreSQL will\n        # return 'one' and 'two' as strings, not Unicode objects. It's a side-effect of\n        # using constants here and not a real concern.\n        d = Item.objects.extra(select=SortedDict(s), select_params=params).values('a', 'b')[0]\n        self.assertEqual(d, {'a': 'one', 'b': 'two'})\n\n        # Order by the number of tags attached to an item.\n        l = Item.objects.extra(select={'count': 'select count(*) from queries_item_tags where queries_item_tags.item_id = queries_item.id'}).order_by('-count')\n        self.assertEqual([o.count for o in l], [2, 2, 1, 0])\n\n    def test_ticket6154(self):\n        # Multiple filter statements are joined using \"AND\" all the time.\n\n        self.assertQuerysetEqual(\n            Author.objects.filter(id=self.a1.id).filter(Q(extra__note=self.n1)|Q(item__note=self.n3)),\n            ['<Author: a1>']\n        )\n        self.assertQuerysetEqual(\n                Author.objects.filter(Q(extra__note=self.n1)|Q(item__note=self.n3)).filter(id=self.a1.id),\n            ['<Author: a1>']\n        )\n\n    def test_ticket6981(self):\n        self.assertQuerysetEqual(\n            Tag.objects.select_related('parent').order_by('name'),\n            ['<Tag: t1>', '<Tag: t2>', '<Tag: t3>', '<Tag: t4>', '<Tag: t5>']\n        )\n\n    def test_ticket9926(self):\n        self.assertQuerysetEqual(\n            Tag.objects.select_related(\"parent\", \"category\").order_by('name'),\n            ['<Tag: t1>', '<Tag: t2>', '<Tag: t3>', '<Tag: t4>', '<Tag: t5>']\n        )\n        self.assertQuerysetEqual(\n            Tag.objects.select_related('parent', \"parent__category\").order_by('name'),\n            ['<Tag: t1>', '<Tag: t2>', '<Tag: t3>', '<Tag: t4>', '<Tag: t5>']\n        )\n\n    def test_tickets_6180_6203(self):\n        # Dates with limits and/or counts\n        self.assertEqual(Item.objects.count(), 4)\n        self.assertEqual(Item.objects.dates('created', 'month').count(), 1)\n        self.assertEqual(Item.objects.dates('created', 'day').count(), 2)\n        self.assertEqual(len(Item.objects.dates('created', 'day')), 2)\n        self.assertEqual(Item.objects.dates('created', 'day')[0], datetime.datetime(2007, 12, 19, 0, 0))\n\n    def test_tickets_7087_12242(self):\n        # Dates with extra select columns\n        self.assertQuerysetEqual(\n            Item.objects.dates('created', 'day').extra(select={'a': 1}),\n            ['datetime.datetime(2007, 12, 19, 0, 0)', 'datetime.datetime(2007, 12, 20, 0, 0)']\n        )\n        self.assertQuerysetEqual(\n            Item.objects.extra(select={'a': 1}).dates('created', 'day'),\n            ['datetime.datetime(2007, 12, 19, 0, 0)', 'datetime.datetime(2007, 12, 20, 0, 0)']\n        )\n\n        name=\"one\"\n        self.assertQuerysetEqual(\n            Item.objects.dates('created', 'day').extra(where=['name=%s'], params=[name]),\n            ['datetime.datetime(2007, 12, 19, 0, 0)']\n        )\n\n        self.assertQuerysetEqual(\n            Item.objects.extra(where=['name=%s'], params=[name]).dates('created', 'day'),\n            ['datetime.datetime(2007, 12, 19, 0, 0)']\n        )\n\n    def test_ticket7155(self):\n        # Nullable dates\n        self.assertQuerysetEqual(\n            Item.objects.dates('modified', 'day'),\n            ['datetime.datetime(2007, 12, 19, 0, 0)']\n        )\n\n    def test_ticket7098(self):\n        # Make sure semi-deprecated ordering by related models syntax still\n        # works.\n        self.assertValueQuerysetEqual(\n            Item.objects.values('note__note').order_by('queries_note.note', 'id'),\n            [{'note__note': 'n2'}, {'note__note': 'n3'}, {'note__note': 'n3'}, {'note__note': 'n3'}]\n        )\n\n    def test_ticket7096(self):\n        # Make sure exclude() with multiple conditions continues to work.\n        self.assertQuerysetEqual(\n            Tag.objects.filter(parent=self.t1, name='t3').order_by('name'),\n            ['<Tag: t3>']\n        )\n        self.assertQuerysetEqual(\n            Tag.objects.exclude(parent=self.t1, name='t3').order_by('name'),\n            ['<Tag: t1>', '<Tag: t2>', '<Tag: t4>', '<Tag: t5>']\n        )\n        self.assertQuerysetEqual(\n            Item.objects.exclude(tags__name='t1', name='one').order_by('name').distinct(),\n            ['<Item: four>', '<Item: three>', '<Item: two>']\n        )\n        self.assertQuerysetEqual(\n            Item.objects.filter(name__in=['three', 'four']).exclude(tags__name='t1').order_by('name'),\n            ['<Item: four>', '<Item: three>']\n        )\n\n        # More twisted cases, involving nested negations.\n        self.assertQuerysetEqual(\n            Item.objects.exclude(~Q(tags__name='t1', name='one')),\n            ['<Item: one>']\n        )\n        self.assertQuerysetEqual(\n            Item.objects.filter(~Q(tags__name='t1', name='one'), name='two'),\n            ['<Item: two>']\n        )\n        self.assertQuerysetEqual(\n            Item.objects.exclude(~Q(tags__name='t1', name='one'), name='two'),\n            ['<Item: four>', '<Item: one>', '<Item: three>']\n        )\n\n    def test_tickets_7204_7506(self):\n        # Make sure querysets with related fields can be pickled. If this\n        # doesn't crash, it's a Good Thing.\n        pickle.dumps(Item.objects.all())\n\n    def test_ticket7813(self):\n        # We should also be able to pickle things that use select_related().\n        # The only tricky thing here is to ensure that we do the related\n        # selections properly after unpickling.\n        qs = Item.objects.select_related()\n        query = qs.query.get_compiler(qs.db).as_sql()[0]\n        query2 = pickle.loads(pickle.dumps(qs.query))\n        self.assertEqual(\n            query2.get_compiler(qs.db).as_sql()[0],\n            query\n        )\n\n    def test_deferred_load_qs_pickling(self):\n        # Check pickling of deferred-loading querysets\n        qs = Item.objects.defer('name', 'creator')\n        q2 = pickle.loads(pickle.dumps(qs))\n        self.assertEqual(list(qs), list(q2))\n        q3 = pickle.loads(pickle.dumps(qs, pickle.HIGHEST_PROTOCOL))\n        self.assertEqual(list(qs), list(q3))\n\n    def test_ticket7277(self):\n        self.assertQuerysetEqual(\n            self.n1.annotation_set.filter(Q(tag=self.t5) | Q(tag__children=self.t5) | Q(tag__children__children=self.t5)),\n            ['<Annotation: a1>']\n        )\n\n    def test_tickets_7448_7707(self):\n        # Complex objects should be converted to strings before being used in\n        # lookups.\n        self.assertQuerysetEqual(\n            Item.objects.filter(created__in=[self.time1, self.time2]),\n            ['<Item: one>', '<Item: two>']\n        )\n\n    def test_ticket7235(self):\n        # An EmptyQuerySet should not raise exceptions if it is filtered.\n        q = EmptyQuerySet()\n        self.assertQuerysetEqual(q.all(), [])\n        self.assertQuerysetEqual(q.filter(x=10), [])\n        self.assertQuerysetEqual(q.exclude(y=3), [])\n        self.assertQuerysetEqual(q.complex_filter({'pk': 1}), [])\n        self.assertQuerysetEqual(q.select_related('spam', 'eggs'), [])\n        self.assertQuerysetEqual(q.annotate(Count('eggs')), [])\n        self.assertQuerysetEqual(q.order_by('-pub_date', 'headline'), [])\n        self.assertQuerysetEqual(q.distinct(), [])\n        self.assertQuerysetEqual(\n            q.extra(select={'is_recent': \"pub_date > '2006-01-01'\"}),\n            []\n        )\n        q.query.low_mark = 1\n        self.assertRaisesMessage(\n            AssertionError,\n            'Cannot change a query once a slice has been taken',\n            q.extra, select={'is_recent': \"pub_date > '2006-01-01'\"}\n        )\n        self.assertQuerysetEqual(q.reverse(), [])\n        self.assertQuerysetEqual(q.defer('spam', 'eggs'), [])\n        self.assertQuerysetEqual(q.only('spam', 'eggs'), [])\n\n    def test_ticket7791(self):\n        # There were \"issues\" when ordering and distinct-ing on fields related\n        # via ForeignKeys.\n        self.assertEqual(\n            len(Note.objects.order_by('extrainfo__info').distinct()),\n            3\n        )\n\n        # Pickling of DateQuerySets used to fail\n        qs = Item.objects.dates('created', 'month')\n        _ = pickle.loads(pickle.dumps(qs))\n\n    def test_ticket9997(self):\n        # If a ValuesList or Values queryset is passed as an inner query, we\n        # make sure it's only requesting a single value and use that as the\n        # thing to select.\n        self.assertQuerysetEqual(\n            Tag.objects.filter(name__in=Tag.objects.filter(parent=self.t1).values('name')),\n            ['<Tag: t2>', '<Tag: t3>']\n        )\n\n        # Multi-valued values() and values_list() querysets should raise errors.\n        self.assertRaisesMessage(\n            TypeError,\n            'Cannot use a multi-field ValuesQuerySet as a filter value.',\n            lambda: Tag.objects.filter(name__in=Tag.objects.filter(parent=self.t1).values('name', 'id'))\n        )\n        self.assertRaisesMessage(\n            TypeError,\n            'Cannot use a multi-field ValuesListQuerySet as a filter value.',\n            lambda: Tag.objects.filter(name__in=Tag.objects.filter(parent=self.t1).values_list('name', 'id'))\n        )\n\n    def test_ticket9985(self):\n        # qs.values_list(...).values(...) combinations should work.\n        self.assertValueQuerysetEqual(\n            Note.objects.values_list(\"note\", flat=True).values(\"id\").order_by(\"id\"),\n            [{'id': 1}, {'id': 2}, {'id': 3}]\n        )\n        self.assertQuerysetEqual(\n            Annotation.objects.filter(notes__in=Note.objects.filter(note=\"n1\").values_list('note').values('id')),\n            ['<Annotation: a1>']\n        )\n\n    def test_ticket10205(self):\n        # When bailing out early because of an empty \"__in\" filter, we need\n        # to set things up correctly internally so that subqueries can continue properly.\n        self.assertEqual(Tag.objects.filter(name__in=()).update(name=\"foo\"), 0)\n\n    def test_ticket10432(self):\n        # Testing an empty \"__in\" filter with a generator as the value.\n        def f():\n            return iter([])\n        n_obj = Note.objects.all()[0]\n        def g():\n            for i in [n_obj.pk]:\n                yield i\n        self.assertQuerysetEqual(Note.objects.filter(pk__in=f()), [])\n        self.assertEqual(list(Note.objects.filter(pk__in=g())), [n_obj])\n\n    def test_ticket10742(self):\n        # Queries used in an __in clause don't execute subqueries\n\n        subq = Author.objects.filter(num__lt=3000)\n        qs = Author.objects.filter(pk__in=subq)\n        self.assertQuerysetEqual(qs, ['<Author: a1>', '<Author: a2>'])\n\n        # The subquery result cache should not be populated\n        self.assertTrue(subq._result_cache is None)\n\n        subq = Author.objects.filter(num__lt=3000)\n        qs = Author.objects.exclude(pk__in=subq)\n        self.assertQuerysetEqual(qs, ['<Author: a3>', '<Author: a4>'])\n\n        # The subquery result cache should not be populated\n        self.assertTrue(subq._result_cache is None)\n\n        subq = Author.objects.filter(num__lt=3000)\n        self.assertQuerysetEqual(\n            Author.objects.filter(Q(pk__in=subq) & Q(name='a1')),\n            ['<Author: a1>']\n        )\n\n        # The subquery result cache should not be populated\n        self.assertTrue(subq._result_cache is None)\n\n    def test_ticket7076(self):\n        # Excluding shouldn't eliminate NULL entries.\n        self.assertQuerysetEqual(\n            Item.objects.exclude(modified=self.time1).order_by('name'),\n            ['<Item: four>', '<Item: three>', '<Item: two>']\n        )\n        self.assertQuerysetEqual(\n            Tag.objects.exclude(parent__name=self.t1.name),\n            ['<Tag: t1>', '<Tag: t4>', '<Tag: t5>']\n        )\n\n    def test_ticket7181(self):\n        # Ordering by related tables should accomodate nullable fields (this\n        # test is a little tricky, since NULL ordering is database dependent.\n        # Instead, we just count the number of results).\n        self.assertEqual(len(Tag.objects.order_by('parent__name')), 5)\n\n        # Empty querysets can be merged with others.\n        self.assertQuerysetEqual(\n            Note.objects.none() | Note.objects.all(),\n            ['<Note: n1>', '<Note: n2>', '<Note: n3>']\n        )\n        self.assertQuerysetEqual(\n            Note.objects.all() | Note.objects.none(),\n            ['<Note: n1>', '<Note: n2>', '<Note: n3>']\n        )\n        self.assertQuerysetEqual(Note.objects.none() & Note.objects.all(), [])\n        self.assertQuerysetEqual(Note.objects.all() & Note.objects.none(), [])\n\n    def test_ticket9411(self):\n        # Make sure bump_prefix() (an internal Query method) doesn't (re-)break. It's\n        # sufficient that this query runs without error.\n        qs = Tag.objects.values_list('id', flat=True).order_by('id')\n        qs.query.bump_prefix()\n        first = qs[0]\n        self.assertEqual(list(qs), list(range(first, first+5)))\n\n    def test_ticket8439(self):\n        # Complex combinations of conjunctions, disjunctions and nullable\n        # relations.\n        self.assertQuerysetEqual(\n            Author.objects.filter(Q(item__note__extrainfo=self.e2)|Q(report=self.r1, name='xyz')),\n            ['<Author: a2>']\n        )\n        self.assertQuerysetEqual(\n            Author.objects.filter(Q(report=self.r1, name='xyz')|Q(item__note__extrainfo=self.e2)),\n            ['<Author: a2>']\n        )\n        self.assertQuerysetEqual(\n            Annotation.objects.filter(Q(tag__parent=self.t1)|Q(notes__note='n1', name='a1')),\n            ['<Annotation: a1>']\n        )\n        xx = ExtraInfo.objects.create(info='xx', note=self.n3)\n        self.assertQuerysetEqual(\n            Note.objects.filter(Q(extrainfo__author=self.a1)|Q(extrainfo=xx)),\n            ['<Note: n1>', '<Note: n3>']\n        )\n        xx.delete()\n        q = Note.objects.filter(Q(extrainfo__author=self.a1)|Q(extrainfo=xx)).query\n        self.assertEqual(\n            len([x[2] for x in q.alias_map.values() if x[2] == q.LOUTER and q.alias_refcount[x[1]]]),\n            1\n        )\n\n    def test_ticket17429(self):\n        \"\"\"\n        Ensure that Meta.ordering=None works the same as Meta.ordering=[]\n        \"\"\"\n        original_ordering = Tag._meta.ordering\n        Tag._meta.ordering = None\n        self.assertQuerysetEqual(\n            Tag.objects.all(),\n            ['<Tag: t1>', '<Tag: t2>', '<Tag: t3>', '<Tag: t4>', '<Tag: t5>'],\n        )\n        Tag._meta.ordering = original_ordering\n\n    def test_exclude(self):\n        self.assertQuerysetEqual(\n            Item.objects.exclude(tags__name='t4'),\n            [repr(i) for i in Item.objects.filter(~Q(tags__name='t4'))])\n        self.assertQuerysetEqual(\n            Item.objects.exclude(Q(tags__name='t4')|Q(tags__name='t3')),\n            [repr(i) for i in Item.objects.filter(~(Q(tags__name='t4')|Q(tags__name='t3')))])\n        self.assertQuerysetEqual(\n            Item.objects.exclude(Q(tags__name='t4')|~Q(tags__name='t3')),\n            [repr(i) for i in Item.objects.filter(~(Q(tags__name='t4')|~Q(tags__name='t3')))])\n\n    def test_nested_exclude(self):\n        self.assertQuerysetEqual(\n            Item.objects.exclude(~Q(tags__name='t4')),\n            [repr(i) for i in Item.objects.filter(~~Q(tags__name='t4'))])\n\n    def test_double_exclude(self):\n        self.assertQuerysetEqual(\n            Item.objects.filter(Q(tags__name='t4')),\n            [repr(i) for i in Item.objects.filter(~~Q(tags__name='t4'))])\n        self.assertQuerysetEqual(\n            Item.objects.filter(Q(tags__name='t4')),\n            [repr(i) for i in Item.objects.filter(~Q(~Q(tags__name='t4')))])\n\n    @unittest.expectedFailure\n    def test_exclude_in(self):\n        self.assertQuerysetEqual(\n            Item.objects.exclude(Q(tags__name__in=['t4', 't3'])),\n            [repr(i) for i in Item.objects.filter(~Q(tags__name__in=['t4', 't3']))])\n        self.assertQuerysetEqual(\n            Item.objects.filter(Q(tags__name__in=['t4', 't3'])),\n            [repr(i) for i in Item.objects.filter(~~Q(tags__name__in=['t4', 't3']))])\n\n    def test_ticket19672(self):\n        self.assertQuerysetEqual(\n            Report.objects.filter(Q(creator__isnull=False) &\n                                  ~Q(creator__extra__value=41)),\n            ['<Report: r1>']\n        )\n\n\nclass Queries2Tests(TestCase):\n    def setUp(self):\n        Number.objects.create(num=4)\n        Number.objects.create(num=8)\n        Number.objects.create(num=12)\n\n    def test_ticket4289(self):\n        # A slight variation on the restricting the filtering choices by the\n        # lookup constraints.\n        self.assertQuerysetEqual(Number.objects.filter(num__lt=4), [])\n        self.assertQuerysetEqual(Number.objects.filter(num__gt=8, num__lt=12), [])\n        self.assertQuerysetEqual(\n            Number.objects.filter(num__gt=8, num__lt=13),\n            ['<Number: 12>']\n        )\n        self.assertQuerysetEqual(\n            Number.objects.filter(Q(num__lt=4) | Q(num__gt=8, num__lt=12)),\n            []\n        )\n        self.assertQuerysetEqual(\n            Number.objects.filter(Q(num__gt=8, num__lt=12) | Q(num__lt=4)),\n            []\n        )\n        self.assertQuerysetEqual(\n            Number.objects.filter(Q(num__gt=8) & Q(num__lt=12) | Q(num__lt=4)),\n            []\n        )\n        self.assertQuerysetEqual(\n            Number.objects.filter(Q(num__gt=7) & Q(num__lt=12) | Q(num__lt=4)),\n            ['<Number: 8>']\n        )\n\n    def test_ticket12239(self):\n        # Float was being rounded to integer on gte queries on integer field.  Tests\n        # show that gt, lt, gte, and lte work as desired.  Note that the fix changes\n        # get_prep_lookup for gte and lt queries only.\n        self.assertQuerysetEqual(\n            Number.objects.filter(num__gt=11.9),\n            ['<Number: 12>']\n        )\n        self.assertQuerysetEqual(Number.objects.filter(num__gt=12), [])\n        self.assertQuerysetEqual(Number.objects.filter(num__gt=12.0), [])\n        self.assertQuerysetEqual(Number.objects.filter(num__gt=12.1), [])\n        self.assertQuerysetEqual(\n            Number.objects.filter(num__lt=12),\n            ['<Number: 4>', '<Number: 8>']\n        )\n        self.assertQuerysetEqual(\n            Number.objects.filter(num__lt=12.0),\n            ['<Number: 4>', '<Number: 8>']\n        )\n        self.assertQuerysetEqual(\n            Number.objects.filter(num__lt=12.1),\n            ['<Number: 4>', '<Number: 8>', '<Number: 12>']\n        )\n        self.assertQuerysetEqual(\n            Number.objects.filter(num__gte=11.9),\n            ['<Number: 12>']\n        )\n        self.assertQuerysetEqual(\n            Number.objects.filter(num__gte=12),\n            ['<Number: 12>']\n        )\n        self.assertQuerysetEqual(\n            Number.objects.filter(num__gte=12.0),\n            ['<Number: 12>']\n        )\n        self.assertQuerysetEqual(Number.objects.filter(num__gte=12.1), [])\n        self.assertQuerysetEqual(Number.objects.filter(num__gte=12.9), [])\n        self.assertQuerysetEqual(\n            Number.objects.filter(num__lte=11.9),\n            ['<Number: 4>', '<Number: 8>']\n        )\n        self.assertQuerysetEqual(\n            Number.objects.filter(num__lte=12),\n            ['<Number: 4>', '<Number: 8>', '<Number: 12>']\n        )\n        self.assertQuerysetEqual(\n            Number.objects.filter(num__lte=12.0),\n            ['<Number: 4>', '<Number: 8>', '<Number: 12>']\n        )\n        self.assertQuerysetEqual(\n            Number.objects.filter(num__lte=12.1),\n            ['<Number: 4>', '<Number: 8>', '<Number: 12>']\n        )\n        self.assertQuerysetEqual(\n            Number.objects.filter(num__lte=12.9),\n            ['<Number: 4>', '<Number: 8>', '<Number: 12>']\n        )\n\n    def test_ticket7411(self):\n        # Saving to db must work even with partially read result set in another\n        # cursor.\n        for num in range(2 * ITER_CHUNK_SIZE + 1):\n            _ = Number.objects.create(num=num)\n\n        for i, obj in enumerate(Number.objects.all()):\n            obj.save()\n            if i > 10: break\n\n    def test_ticket7759(self):\n        # Count should work with a partially read result set.\n        count = Number.objects.count()\n        qs = Number.objects.all()\n        def run():\n            for obj in qs:\n                return qs.count() == count\n        self.assertTrue(run())\n\n\nclass Queries3Tests(BaseQuerysetTest):\n    def test_ticket7107(self):\n        # This shouldn't create an infinite loop.\n        self.assertQuerysetEqual(Valid.objects.all(), [])\n\n    def test_ticket8683(self):\n        # Raise proper error when a DateQuerySet gets passed a wrong type of\n        # field\n        self.assertRaisesMessage(\n            AssertionError,\n            \"'name' isn't a DateField.\",\n            Item.objects.dates, 'name', 'month'\n        )\n\nclass Queries4Tests(BaseQuerysetTest):\n    def setUp(self):\n        generic = NamedCategory.objects.create(name=\"Generic\")\n        self.t1 = Tag.objects.create(name='t1', category=generic)\n\n        n1 = Note.objects.create(note='n1', misc='foo', id=1)\n        n2 = Note.objects.create(note='n2', misc='bar', id=2)\n\n        e1 = ExtraInfo.objects.create(info='e1', note=n1)\n        e2 = ExtraInfo.objects.create(info='e2', note=n2)\n\n        self.a1 = Author.objects.create(name='a1', num=1001, extra=e1)\n        self.a3 = Author.objects.create(name='a3', num=3003, extra=e2)\n\n        self.r1 = Report.objects.create(name='r1', creator=self.a1)\n        self.r2 = Report.objects.create(name='r2', creator=self.a3)\n        self.r3 = Report.objects.create(name='r3')\n\n        Item.objects.create(name='i1', created=datetime.datetime.now(), note=n1, creator=self.a1)\n        Item.objects.create(name='i2', created=datetime.datetime.now(), note=n1, creator=self.a3)\n\n    def test_ticket14876(self):\n        q1 = Report.objects.filter(Q(creator__isnull=True) | Q(creator__extra__info='e1'))\n        q2 = Report.objects.filter(Q(creator__isnull=True)) | Report.objects.filter(Q(creator__extra__info='e1'))\n        self.assertQuerysetEqual(q1, [\"<Report: r1>\", \"<Report: r3>\"], ordered=False)\n        self.assertEqual(str(q1.query), str(q2.query))\n\n        q1 = Report.objects.filter(Q(creator__extra__info='e1') | Q(creator__isnull=True))\n        q2 = Report.objects.filter(Q(creator__extra__info='e1')) | Report.objects.filter(Q(creator__isnull=True))\n        self.assertQuerysetEqual(q1, [\"<Report: r1>\", \"<Report: r3>\"], ordered=False)\n        self.assertEqual(str(q1.query), str(q2.query))\n\n        q1 = Item.objects.filter(Q(creator=self.a1) | Q(creator__report__name='r1')).order_by()\n        q2 = Item.objects.filter(Q(creator=self.a1)).order_by() | Item.objects.filter(Q(creator__report__name='r1')).order_by()\n        self.assertQuerysetEqual(q1, [\"<Item: i1>\"])\n        self.assertEqual(str(q1.query), str(q2.query))\n\n        q1 = Item.objects.filter(Q(creator__report__name='e1') | Q(creator=self.a1)).order_by()\n        q2 = Item.objects.filter(Q(creator__report__name='e1')).order_by() | Item.objects.filter(Q(creator=self.a1)).order_by()\n        self.assertQuerysetEqual(q1, [\"<Item: i1>\"])\n        self.assertEqual(str(q1.query), str(q2.query))\n\n    def test_ticket7095(self):\n        # Updates that are filtered on the model being updated are somewhat\n        # tricky in MySQL. This exercises that case.\n        ManagedModel.objects.create(data='mm1', tag=self.t1, public=True)\n        self.assertEqual(ManagedModel.objects.update(data='mm'), 1)\n\n        # A values() or values_list() query across joined models must use outer\n        # joins appropriately.\n        # Note: In Oracle, we expect a null CharField to return '' instead of\n        # None.\n        if connection.features.interprets_empty_strings_as_nulls:\n            expected_null_charfield_repr = ''\n        else:\n            expected_null_charfield_repr = None\n        self.assertValueQuerysetEqual(\n            Report.objects.values_list(\"creator__extra__info\", flat=True).order_by(\"name\"),\n            ['e1', 'e2', expected_null_charfield_repr],\n        )\n\n        # Similarly for select_related(), joins beyond an initial nullable join\n        # must use outer joins so that all results are included.\n        self.assertQuerysetEqual(\n            Report.objects.select_related(\"creator\", \"creator__extra\").order_by(\"name\"),\n            ['<Report: r1>', '<Report: r2>', '<Report: r3>']\n        )\n\n        # When there are multiple paths to a table from another table, we have\n        # to be careful not to accidentally reuse an inappropriate join when\n        # using select_related(). We used to return the parent's Detail record\n        # here by mistake.\n\n        d1 = Detail.objects.create(data=\"d1\")\n        d2 = Detail.objects.create(data=\"d2\")\n        m1 = Member.objects.create(name=\"m1\", details=d1)\n        m2 = Member.objects.create(name=\"m2\", details=d2)\n        Child.objects.create(person=m2, parent=m1)\n        obj = m1.children.select_related(\"person__details\")[0]\n        self.assertEqual(obj.person.details.data, 'd2')\n\n    def test_order_by_resetting(self):\n        # Calling order_by() with no parameters removes any existing ordering on the\n        # model. But it should still be possible to add new ordering after that.\n        qs = Author.objects.order_by().order_by('name')\n        self.assertTrue('ORDER BY' in qs.query.get_compiler(qs.db).as_sql()[0])\n\n    def test_ticket10181(self):\n        # Avoid raising an EmptyResultSet if an inner query is probably\n        # empty (and hence, not executed).\n        self.assertQuerysetEqual(\n            Tag.objects.filter(id__in=Tag.objects.filter(id__in=[])),\n            []\n        )\n\n    def test_ticket15316_filter_false(self):\n        c1 = SimpleCategory.objects.create(name=\"category1\")\n        c2 = SpecialCategory.objects.create(name=\"named category1\",\n                special_name=\"special1\")\n        c3 = SpecialCategory.objects.create(name=\"named category2\",\n                special_name=\"special2\")\n\n        ci1 = CategoryItem.objects.create(category=c1)\n        ci2 = CategoryItem.objects.create(category=c2)\n        ci3 = CategoryItem.objects.create(category=c3)\n\n        qs = CategoryItem.objects.filter(category__specialcategory__isnull=False)\n        self.assertEqual(qs.count(), 2)\n        self.assertQuerysetEqual(qs, [ci2.pk, ci3.pk], lambda x: x.pk, False)\n\n    def test_ticket15316_exclude_false(self):\n        c1 = SimpleCategory.objects.create(name=\"category1\")\n        c2 = SpecialCategory.objects.create(name=\"named category1\",\n                special_name=\"special1\")\n        c3 = SpecialCategory.objects.create(name=\"named category2\",\n                special_name=\"special2\")\n\n        ci1 = CategoryItem.objects.create(category=c1)\n        ci2 = CategoryItem.objects.create(category=c2)\n        ci3 = CategoryItem.objects.create(category=c3)\n\n        qs = CategoryItem.objects.exclude(category__specialcategory__isnull=False)\n        self.assertEqual(qs.count(), 1)\n        self.assertQuerysetEqual(qs, [ci1.pk], lambda x: x.pk)\n\n    def test_ticket15316_filter_true(self):\n        c1 = SimpleCategory.objects.create(name=\"category1\")\n        c2 = SpecialCategory.objects.create(name=\"named category1\",\n                special_name=\"special1\")\n        c3 = SpecialCategory.objects.create(name=\"named category2\",\n                special_name=\"special2\")\n\n        ci1 = CategoryItem.objects.create(category=c1)\n        ci2 = CategoryItem.objects.create(category=c2)\n        ci3 = CategoryItem.objects.create(category=c3)\n\n        qs = CategoryItem.objects.filter(category__specialcategory__isnull=True)\n        self.assertEqual(qs.count(), 1)\n        self.assertQuerysetEqual(qs, [ci1.pk], lambda x: x.pk)\n\n    def test_ticket15316_exclude_true(self):\n        c1 = SimpleCategory.objects.create(name=\"category1\")\n        c2 = SpecialCategory.objects.create(name=\"named category1\",\n                special_name=\"special1\")\n        c3 = SpecialCategory.objects.create(name=\"named category2\",\n                special_name=\"special2\")\n\n        ci1 = CategoryItem.objects.create(category=c1)\n        ci2 = CategoryItem.objects.create(category=c2)\n        ci3 = CategoryItem.objects.create(category=c3)\n\n        qs = CategoryItem.objects.exclude(category__specialcategory__isnull=True)\n        self.assertEqual(qs.count(), 2)\n        self.assertQuerysetEqual(qs, [ci2.pk, ci3.pk], lambda x: x.pk, False)\n\n    def test_ticket15316_one2one_filter_false(self):\n        c  = SimpleCategory.objects.create(name=\"cat\")\n        c0 = SimpleCategory.objects.create(name=\"cat0\")\n        c1 = SimpleCategory.objects.create(name=\"category1\")\n\n        c2 = OneToOneCategory.objects.create(category = c1, new_name=\"new1\")\n        c3 = OneToOneCategory.objects.create(category = c0, new_name=\"new2\")\n\n        ci1 = CategoryItem.objects.create(category=c)\n        ci2 = CategoryItem.objects.create(category=c0)\n        ci3 = CategoryItem.objects.create(category=c1)\n\n        qs = CategoryItem.objects.filter(category__onetoonecategory__isnull=False)\n        self.assertEqual(qs.count(), 2)\n        self.assertQuerysetEqual(qs, [ci2.pk, ci3.pk], lambda x: x.pk, False)\n\n    def test_ticket15316_one2one_exclude_false(self):\n        c  = SimpleCategory.objects.create(name=\"cat\")\n        c0 = SimpleCategory.objects.create(name=\"cat0\")\n        c1 = SimpleCategory.objects.create(name=\"category1\")\n\n        c2 = OneToOneCategory.objects.create(category = c1, new_name=\"new1\")\n        c3 = OneToOneCategory.objects.create(category = c0, new_name=\"new2\")\n\n        ci1 = CategoryItem.objects.create(category=c)\n        ci2 = CategoryItem.objects.create(category=c0)\n        ci3 = CategoryItem.objects.create(category=c1)\n\n        qs = CategoryItem.objects.exclude(category__onetoonecategory__isnull=False)\n        self.assertEqual(qs.count(), 1)\n        self.assertQuerysetEqual(qs, [ci1.pk], lambda x: x.pk)\n\n    def test_ticket15316_one2one_filter_true(self):\n        c  = SimpleCategory.objects.create(name=\"cat\")\n        c0 = SimpleCategory.objects.create(name=\"cat0\")\n        c1 = SimpleCategory.objects.create(name=\"category1\")\n\n        c2 = OneToOneCategory.objects.create(category = c1, new_name=\"new1\")\n        c3 = OneToOneCategory.objects.create(category = c0, new_name=\"new2\")\n\n        ci1 = CategoryItem.objects.create(category=c)\n        ci2 = CategoryItem.objects.create(category=c0)\n        ci3 = CategoryItem.objects.create(category=c1)\n\n        qs = CategoryItem.objects.filter(category__onetoonecategory__isnull=True)\n        self.assertEqual(qs.count(), 1)\n        self.assertQuerysetEqual(qs, [ci1.pk], lambda x: x.pk)\n\n    def test_ticket15316_one2one_exclude_true(self):\n        c  = SimpleCategory.objects.create(name=\"cat\")\n        c0 = SimpleCategory.objects.create(name=\"cat0\")\n        c1 = SimpleCategory.objects.create(name=\"category1\")\n\n        c2 = OneToOneCategory.objects.create(category = c1, new_name=\"new1\")\n        c3 = OneToOneCategory.objects.create(category = c0, new_name=\"new2\")\n\n        ci1 = CategoryItem.objects.create(category=c)\n        ci2 = CategoryItem.objects.create(category=c0)\n        ci3 = CategoryItem.objects.create(category=c1)\n\n        qs = CategoryItem.objects.exclude(category__onetoonecategory__isnull=True)\n        self.assertEqual(qs.count(), 2)\n        self.assertQuerysetEqual(qs, [ci2.pk, ci3.pk], lambda x: x.pk, False)\n\n\nclass Queries5Tests(TestCase):\n    def setUp(self):\n        # Ordering by 'rank' gives us rank2, rank1, rank3. Ordering by the\n        # Meta.ordering will be rank3, rank2, rank1.\n        n1 = Note.objects.create(note='n1', misc='foo', id=1)\n        n2 = Note.objects.create(note='n2', misc='bar', id=2)\n        e1 = ExtraInfo.objects.create(info='e1', note=n1)\n        e2 = ExtraInfo.objects.create(info='e2', note=n2)\n        a1 = Author.objects.create(name='a1', num=1001, extra=e1)\n        a2 = Author.objects.create(name='a2', num=2002, extra=e1)\n        a3 = Author.objects.create(name='a3', num=3003, extra=e2)\n        self.rank1 = Ranking.objects.create(rank=2, author=a2)\n        Ranking.objects.create(rank=1, author=a3)\n        Ranking.objects.create(rank=3, author=a1)\n\n    def test_ordering(self):\n        # Cross model ordering is possible in Meta, too.\n        self.assertQuerysetEqual(\n            Ranking.objects.all(),\n            ['<Ranking: 3: a1>', '<Ranking: 2: a2>', '<Ranking: 1: a3>']\n        )\n        self.assertQuerysetEqual(\n            Ranking.objects.all().order_by('rank'),\n            ['<Ranking: 1: a3>', '<Ranking: 2: a2>', '<Ranking: 3: a1>']\n        )\n\n\n        # Ordering of extra() pieces is possible, too and you can mix extra\n        # fields and model fields in the ordering.\n        self.assertQuerysetEqual(\n            Ranking.objects.extra(tables=['django_site'], order_by=['-django_site.id', 'rank']),\n            ['<Ranking: 1: a3>', '<Ranking: 2: a2>', '<Ranking: 3: a1>']\n        )\n\n        qs = Ranking.objects.extra(select={'good': 'case when rank > 2 then 1 else 0 end'})\n        self.assertEqual(\n            [o.good for o in qs.extra(order_by=('-good',))],\n            [True, False, False]\n        )\n        self.assertQuerysetEqual(\n            qs.extra(order_by=('-good', 'id')),\n            ['<Ranking: 3: a1>', '<Ranking: 2: a2>', '<Ranking: 1: a3>']\n        )\n\n        # Despite having some extra aliases in the query, we can still omit\n        # them in a values() query.\n        dicts = qs.values('id', 'rank').order_by('id')\n        self.assertEqual(\n            [d['rank'] for d in dicts],\n            [2, 1, 3]\n        )\n\n    def test_ticket7256(self):\n        # An empty values() call includes all aliases, including those from an\n        # extra()\n        qs = Ranking.objects.extra(select={'good': 'case when rank > 2 then 1 else 0 end'})\n        dicts = qs.values().order_by('id')\n        for d in dicts: del d['id']; del d['author_id']\n        self.assertEqual(\n            [sorted(d.items()) for d in dicts],\n            [[('good', 0), ('rank', 2)], [('good', 0), ('rank', 1)], [('good', 1), ('rank', 3)]]\n        )\n\n    def test_ticket7045(self):\n        # Extra tables used to crash SQL construction on the second use.\n        qs = Ranking.objects.extra(tables=['django_site'])\n        qs.query.get_compiler(qs.db).as_sql()\n        # test passes if this doesn't raise an exception.\n        qs.query.get_compiler(qs.db).as_sql()\n\n    def test_ticket9848(self):\n        # Make sure that updates which only filter on sub-tables don't\n        # inadvertently update the wrong records (bug #9848).\n\n        # Make sure that the IDs from different tables don't happen to match.\n        self.assertQuerysetEqual(\n            Ranking.objects.filter(author__name='a1'),\n            ['<Ranking: 3: a1>']\n        )\n        self.assertEqual(\n            Ranking.objects.filter(author__name='a1').update(rank='4'),\n            1\n        )\n        r = Ranking.objects.filter(author__name='a1')[0]\n        self.assertNotEqual(r.id, r.author.id)\n        self.assertEqual(r.rank, 4)\n        r.rank = 3\n        r.save()\n        self.assertQuerysetEqual(\n            Ranking.objects.all(),\n            ['<Ranking: 3: a1>', '<Ranking: 2: a2>', '<Ranking: 1: a3>']\n        )\n\n    def test_ticket5261(self):\n        # Test different empty excludes.\n        self.assertQuerysetEqual(\n            Note.objects.exclude(Q()),\n            ['<Note: n1>', '<Note: n2>']\n        )\n        self.assertQuerysetEqual(\n            Note.objects.filter(~Q()),\n            ['<Note: n1>', '<Note: n2>']\n        )\n        self.assertQuerysetEqual(\n            Note.objects.filter(~Q()|~Q()),\n            ['<Note: n1>', '<Note: n2>']\n        )\n        self.assertQuerysetEqual(\n            Note.objects.exclude(~Q()&~Q()),\n            ['<Note: n1>', '<Note: n2>']\n        )\n\n\nclass SelectRelatedTests(TestCase):\n    def test_tickets_3045_3288(self):\n        # Once upon a time, select_related() with circular relations would loop\n        # infinitely if you forgot to specify \"depth\". Now we set an arbitrary\n        # default upper bound.\n        self.assertQuerysetEqual(X.objects.all(), [])\n        self.assertQuerysetEqual(X.objects.select_related(), [])\n\n\nclass SubclassFKTests(TestCase):\n    def test_ticket7778(self):\n        # Model subclasses could not be deleted if a nullable foreign key\n        # relates to a model that relates back.\n\n        num_celebs = Celebrity.objects.count()\n        tvc = TvChef.objects.create(name=\"Huey\")\n        self.assertEqual(Celebrity.objects.count(), num_celebs + 1)\n        Fan.objects.create(fan_of=tvc)\n        Fan.objects.create(fan_of=tvc)\n        tvc.delete()\n\n        # The parent object should have been deleted as well.\n        self.assertEqual(Celebrity.objects.count(), num_celebs)\n\n\nclass CustomPkTests(TestCase):\n    def test_ticket7371(self):\n        self.assertQuerysetEqual(Related.objects.order_by('custom'), [])\n\n\nclass NullableRelOrderingTests(TestCase):\n    def test_ticket10028(self):\n        # Ordering by model related to nullable relations(!) should use outer\n        # joins, so that all results are included.\n        Plaything.objects.create(name=\"p1\")\n        self.assertQuerysetEqual(\n            Plaything.objects.all(),\n            ['<Plaything: p1>']\n        )\n\n    def test_join_already_in_query(self):\n        # Ordering by model related to nullable relations should not change\n        # the join type of already existing joins.\n        Plaything.objects.create(name=\"p1\")\n        s = SingleObject.objects.create(name='s')\n        r = RelatedObject.objects.create(single=s)\n        Plaything.objects.create(name=\"p2\", others=r)\n        qs = Plaything.objects.all().filter(others__isnull=False).order_by('pk')\n        self.assertTrue('INNER' in str(qs.query))\n        qs = qs.order_by('others__single__name')\n        # The ordering by others__single__pk will add one new join (to single)\n        # and that join must be LEFT join. The already existing join to related\n        # objects must be kept INNER. So, we have both a INNER and a LEFT join\n        # in the query.\n        self.assertTrue('LEFT' in str(qs.query))\n        self.assertTrue('INNER' in str(qs.query))\n        self.assertQuerysetEqual(\n            qs,\n            ['<Plaything: p2>']\n        )\n\n\nclass DisjunctiveFilterTests(TestCase):\n    def setUp(self):\n        self.n1 = Note.objects.create(note='n1', misc='foo', id=1)\n        ExtraInfo.objects.create(info='e1', note=self.n1)\n\n    def test_ticket7872(self):\n        # Another variation on the disjunctive filtering theme.\n\n        # For the purposes of this regression test, it's important that there is no\n        # Join object releated to the LeafA we create.\n        LeafA.objects.create(data='first')\n        self.assertQuerysetEqual(LeafA.objects.all(), ['<LeafA: first>'])\n        self.assertQuerysetEqual(\n            LeafA.objects.filter(Q(data='first')|Q(join__b__data='second')),\n            ['<LeafA: first>']\n        )\n\n    def test_ticket8283(self):\n        # Checking that applying filters after a disjunction works correctly.\n        self.assertQuerysetEqual(\n            (ExtraInfo.objects.filter(note=self.n1)|ExtraInfo.objects.filter(info='e2')).filter(note=self.n1),\n            ['<ExtraInfo: e1>']\n        )\n        self.assertQuerysetEqual(\n            (ExtraInfo.objects.filter(info='e2')|ExtraInfo.objects.filter(note=self.n1)).filter(note=self.n1),\n            ['<ExtraInfo: e1>']\n        )\n\n\nclass Queries6Tests(TestCase):\n    def setUp(self):\n        generic = NamedCategory.objects.create(name=\"Generic\")\n        t1 = Tag.objects.create(name='t1', category=generic)\n        t2 = Tag.objects.create(name='t2', parent=t1, category=generic)\n        t3 = Tag.objects.create(name='t3', parent=t1)\n        t4 = Tag.objects.create(name='t4', parent=t3)\n        t5 = Tag.objects.create(name='t5', parent=t3)\n        n1 = Note.objects.create(note='n1', misc='foo', id=1)\n        ann1 = Annotation.objects.create(name='a1', tag=t1)\n        ann1.notes.add(n1)\n        ann2 = Annotation.objects.create(name='a2', tag=t4)\n\n    # This next test used to cause really weird PostgreSQL behavior, but it was\n    # only apparent much later when the full test suite ran.\n    #@unittest.expectedFailure\n    def test_slicing_and_cache_interaction(self):\n        # We can do slicing beyond what is currently in the result cache,\n        # too.\n\n        # We need to mess with the implementation internals a bit here to decrease the\n        # cache fill size so that we don't read all the results at once.\n        from django.db.models import query\n        query.ITER_CHUNK_SIZE = 2\n        qs = Tag.objects.all()\n\n        # Fill the cache with the first chunk.\n        self.assertTrue(bool(qs))\n        self.assertEqual(len(qs._result_cache), 2)\n\n        # Query beyond the end of the cache and check that it is filled out as required.\n        self.assertEqual(repr(qs[4]), '<Tag: t5>')\n        self.assertEqual(len(qs._result_cache), 5)\n\n        # But querying beyond the end of the result set will fail.\n        self.assertRaises(IndexError, lambda: qs[100])\n\n    def test_parallel_iterators(self):\n        # Test that parallel iterators work.\n        qs = Tag.objects.all()\n        i1, i2 = iter(qs), iter(qs)\n        self.assertEqual(repr(next(i1)), '<Tag: t1>')\n        self.assertEqual(repr(next(i1)), '<Tag: t2>')\n        self.assertEqual(repr(next(i2)), '<Tag: t1>')\n        self.assertEqual(repr(next(i2)), '<Tag: t2>')\n        self.assertEqual(repr(next(i2)), '<Tag: t3>')\n        self.assertEqual(repr(next(i1)), '<Tag: t3>')\n\n        qs = X.objects.all()\n        self.assertEqual(bool(qs), False)\n        self.assertEqual(bool(qs), False)\n\n    def test_nested_queries_sql(self):\n        # Nested queries should not evaluate the inner query as part of constructing the\n        # SQL (so we should see a nested query here, indicated by two \"SELECT\" calls).\n        qs = Annotation.objects.filter(notes__in=Note.objects.filter(note=\"xyzzy\"))\n        self.assertEqual(\n            qs.query.get_compiler(qs.db).as_sql()[0].count('SELECT'),\n            2\n        )\n\n    def test_tickets_8921_9188(self):\n        # Incorrect SQL was being generated for certain types of exclude()\n        # queries that crossed multi-valued relations (#8921, #9188 and some\n        # pre-emptively discovered cases).\n\n        self.assertQuerysetEqual(\n            PointerA.objects.filter(connection__pointerb__id=1),\n            []\n        )\n        self.assertQuerysetEqual(\n            PointerA.objects.exclude(connection__pointerb__id=1),\n            []\n        )\n\n        self.assertQuerysetEqual(\n            Tag.objects.exclude(children=None),\n            ['<Tag: t1>', '<Tag: t3>']\n        )\n\n        # This example is tricky because the parent could be NULL, so only checking\n        # parents with annotations omits some results (tag t1, in this case).\n        self.assertQuerysetEqual(\n            Tag.objects.exclude(parent__annotation__name=\"a1\"),\n            ['<Tag: t1>', '<Tag: t4>', '<Tag: t5>']\n        )\n\n        # The annotation->tag link is single values and tag->children links is\n        # multi-valued. So we have to split the exclude filter in the middle\n        # and then optimize the inner query without losing results.\n        self.assertQuerysetEqual(\n            Annotation.objects.exclude(tag__children__name=\"t2\"),\n            ['<Annotation: a2>']\n        )\n\n        # Nested queries are possible (although should be used with care, since\n        # they have performance problems on backends like MySQL.\n        self.assertQuerysetEqual(\n            Annotation.objects.filter(notes__in=Note.objects.filter(note=\"n1\")),\n            ['<Annotation: a1>']\n        )\n\n    def test_ticket3739(self):\n        # The all() method on querysets returns a copy of the queryset.\n        q1 = Tag.objects.order_by('name')\n        self.assertIsNot(q1, q1.all())\n\n\nclass RawQueriesTests(TestCase):\n    def setUp(self):\n        n1 = Note.objects.create(note='n1', misc='foo', id=1)\n\n    def test_ticket14729(self):\n        # Test representation of raw query with one or few parameters passed as list\n        query = \"SELECT * FROM queries_note WHERE note = %s\"\n        params = ['n1']\n        qs = Note.objects.raw(query, params=params)\n        self.assertEqual(repr(qs), str_prefix(\"<RawQuerySet: %(_)s'SELECT * FROM queries_note WHERE note = n1'>\"))\n\n        query = \"SELECT * FROM queries_note WHERE note = %s and misc = %s\"\n        params = ['n1', 'foo']\n        qs = Note.objects.raw(query, params=params)\n        self.assertEqual(repr(qs), str_prefix(\"<RawQuerySet: %(_)s'SELECT * FROM queries_note WHERE note = n1 and misc = foo'>\"))\n\n\nclass GeneratorExpressionTests(TestCase):\n    def test_ticket10432(self):\n        # Using an empty generator expression as the rvalue for an \"__in\"\n        # lookup is legal.\n        self.assertQuerysetEqual(\n            Note.objects.filter(pk__in=(x for x in ())),\n            []\n        )\n\n\nclass ComparisonTests(TestCase):\n    def setUp(self):\n        self.n1 = Note.objects.create(note='n1', misc='foo', id=1)\n        e1 = ExtraInfo.objects.create(info='e1', note=self.n1)\n        self.a2 = Author.objects.create(name='a2', num=2002, extra=e1)\n\n    def test_ticket8597(self):\n        # Regression tests for case-insensitive comparisons\n        _ = Item.objects.create(name=\"a_b\", created=datetime.datetime.now(), creator=self.a2, note=self.n1)\n        _ = Item.objects.create(name=\"x%y\", created=datetime.datetime.now(), creator=self.a2, note=self.n1)\n        self.assertQuerysetEqual(\n            Item.objects.filter(name__iexact=\"A_b\"),\n            ['<Item: a_b>']\n        )\n        self.assertQuerysetEqual(\n            Item.objects.filter(name__iexact=\"x%Y\"),\n            ['<Item: x%y>']\n        )\n        self.assertQuerysetEqual(\n            Item.objects.filter(name__istartswith=\"A_b\"),\n            ['<Item: a_b>']\n        )\n        self.assertQuerysetEqual(\n            Item.objects.filter(name__iendswith=\"A_b\"),\n            ['<Item: a_b>']\n        )\n\n\nclass ExistsSql(TestCase):\n    def setUp(self):\n        settings.DEBUG = True\n\n    def test_exists(self):\n        self.assertFalse(Tag.objects.exists())\n        # Ok - so the exist query worked - but did it include too many columns?\n        self.assertTrue(\"id\" not in connection.queries[-1]['sql'] and \"name\" not in connection.queries[-1]['sql'])\n\n    def tearDown(self):\n        settings.DEBUG = False\n\n\nclass QuerysetOrderedTests(unittest.TestCase):\n    \"\"\"\n    Tests for the Queryset.ordered attribute.\n    \"\"\"\n\n    def test_no_default_or_explicit_ordering(self):\n        self.assertEqual(Annotation.objects.all().ordered, False)\n\n    def test_cleared_default_ordering(self):\n        self.assertEqual(Tag.objects.all().ordered, True)\n        self.assertEqual(Tag.objects.all().order_by().ordered, False)\n\n    def test_explicit_ordering(self):\n        self.assertEqual(Annotation.objects.all().order_by('id').ordered, True)\n\n    def test_order_by_extra(self):\n        self.assertEqual(Annotation.objects.all().extra(order_by=['id']).ordered, True)\n\n    def test_annotated_ordering(self):\n        qs = Annotation.objects.annotate(num_notes=Count('notes'))\n        self.assertEqual(qs.ordered, False)\n        self.assertEqual(qs.order_by('num_notes').ordered, True)\n\n\nclass SubqueryTests(TestCase):\n    def setUp(self):\n        DumbCategory.objects.create(id=1)\n        DumbCategory.objects.create(id=2)\n        DumbCategory.objects.create(id=3)\n\n    def test_ordered_subselect(self):\n        \"Subselects honor any manual ordering\"\n        try:\n            query = DumbCategory.objects.filter(id__in=DumbCategory.objects.order_by('-id')[0:2])\n            self.assertEqual(set(query.values_list('id', flat=True)), set([2,3]))\n\n            query = DumbCategory.objects.filter(id__in=DumbCategory.objects.order_by('-id')[:2])\n            self.assertEqual(set(query.values_list('id', flat=True)), set([2,3]))\n\n            query = DumbCategory.objects.filter(id__in=DumbCategory.objects.order_by('-id')[2:])\n            self.assertEqual(set(query.values_list('id', flat=True)), set([1]))\n        except DatabaseError:\n            # Oracle and MySQL both have problems with sliced subselects.\n            # This prevents us from even evaluating this test case at all.\n            # Refs #10099\n            self.assertFalse(connections[DEFAULT_DB_ALIAS].features.allow_sliced_subqueries)\n\n    def test_sliced_delete(self):\n        \"Delete queries can safely contain sliced subqueries\"\n        try:\n            DumbCategory.objects.filter(id__in=DumbCategory.objects.order_by('-id')[0:1]).delete()\n            self.assertEqual(set(DumbCategory.objects.values_list('id', flat=True)), set([1,2]))\n        except DatabaseError:\n            # Oracle and MySQL both have problems with sliced subselects.\n            # This prevents us from even evaluating this test case at all.\n            # Refs #10099\n            self.assertFalse(connections[DEFAULT_DB_ALIAS].features.allow_sliced_subqueries)\n\n\nclass CloneTests(TestCase):\n    def test_evaluated_queryset_as_argument(self):\n        \"#13227 -- If a queryset is already evaluated, it can still be used as a query arg\"\n        n = Note(note='Test1', misc='misc')\n        n.save()\n        e = ExtraInfo(info='good', note=n)\n        e.save()\n\n        n_list = Note.objects.all()\n        # Evaluate the Note queryset, populating the query cache\n        list(n_list)\n        # Use the note queryset in a query, and evalute\n        # that query in a way that involves cloning.\n        self.assertEqual(ExtraInfo.objects.filter(note__in=n_list)[0].info, 'good')\n\n\nclass EmptyQuerySetTests(TestCase):\n    def test_emptyqueryset_values(self):\n        # #14366 -- Calling .values() on an EmptyQuerySet and then cloning that\n        # should not cause an error\"\n        self.assertQuerysetEqual(\n            Number.objects.none().values('num').order_by('num'), []\n        )\n\n    def test_values_subquery(self):\n        self.assertQuerysetEqual(\n            Number.objects.filter(pk__in=Number.objects.none().values(\"pk\")),\n            []\n        )\n        self.assertQuerysetEqual(\n            Number.objects.filter(pk__in=Number.objects.none().values_list(\"pk\")),\n            []\n        )\n\n    def test_ticket_19151(self):\n        # #19151 -- Calling .values() or .values_list() on an EmptyQuerySet\n        # should return EmptyQuerySet and not cause an error.\n        q = EmptyQuerySet()\n        self.assertQuerysetEqual(q.values(), [])\n        self.assertQuerysetEqual(q.values_list(), [])\n\n\nclass ValuesQuerysetTests(BaseQuerysetTest):\n    def test_flat_values_lits(self):\n        Number.objects.create(num=72)\n        qs = Number.objects.values_list(\"num\")\n        qs = qs.values_list(\"num\", flat=True)\n        self.assertValueQuerysetEqual(\n            qs, [72]\n        )\n\n\nclass WeirdQuerysetSlicingTests(BaseQuerysetTest):\n    def setUp(self):\n        Number.objects.create(num=1)\n        Number.objects.create(num=2)\n\n        Article.objects.create(name='one', created=datetime.datetime.now())\n        Article.objects.create(name='two', created=datetime.datetime.now())\n        Article.objects.create(name='three', created=datetime.datetime.now())\n        Article.objects.create(name='four', created=datetime.datetime.now())\n\n    def test_tickets_7698_10202(self):\n        # People like to slice with '0' as the high-water mark.\n        self.assertQuerysetEqual(Article.objects.all()[0:0], [])\n        self.assertQuerysetEqual(Article.objects.all()[0:0][:10], [])\n        self.assertEqual(Article.objects.all()[:0].count(), 0)\n        self.assertRaisesMessage(\n            AssertionError,\n            'Cannot change a query once a slice has been taken.',\n            Article.objects.all()[:0].latest, 'created'\n        )\n\n    def test_empty_resultset_sql(self):\n        # ticket #12192\n        self.assertNumQueries(0, lambda: list(Number.objects.all()[1:1]))\n\n\nclass EscapingTests(TestCase):\n    def test_ticket_7302(self):\n        # Reserved names are appropriately escaped\n        _ = ReservedName.objects.create(name='a', order=42)\n        ReservedName.objects.create(name='b', order=37)\n        self.assertQuerysetEqual(\n            ReservedName.objects.all().order_by('order'),\n            ['<ReservedName: b>', '<ReservedName: a>']\n        )\n        self.assertQuerysetEqual(\n            ReservedName.objects.extra(select={'stuff':'name'}, order_by=('order','stuff')),\n            ['<ReservedName: b>', '<ReservedName: a>']\n        )\n\n\nclass ToFieldTests(TestCase):\n    def test_in_query(self):\n        apple = Food.objects.create(name=\"apple\")\n        pear = Food.objects.create(name=\"pear\")\n        lunch = Eaten.objects.create(food=apple, meal=\"lunch\")\n        dinner = Eaten.objects.create(food=pear, meal=\"dinner\")\n\n        self.assertEqual(\n            set(Eaten.objects.filter(food__in=[apple, pear])),\n            set([lunch, dinner]),\n        )\n\n    def test_reverse_in(self):\n        apple = Food.objects.create(name=\"apple\")\n        pear = Food.objects.create(name=\"pear\")\n        lunch_apple = Eaten.objects.create(food=apple, meal=\"lunch\")\n        lunch_pear = Eaten.objects.create(food=pear, meal=\"dinner\")\n\n        self.assertEqual(\n            set(Food.objects.filter(eaten__in=[lunch_apple, lunch_pear])),\n            set([apple, pear])\n        )\n\n    def test_single_object(self):\n        apple = Food.objects.create(name=\"apple\")\n        lunch = Eaten.objects.create(food=apple, meal=\"lunch\")\n        dinner = Eaten.objects.create(food=apple, meal=\"dinner\")\n\n        self.assertEqual(\n            set(Eaten.objects.filter(food=apple)),\n            set([lunch, dinner])\n        )\n\n    def test_single_object_reverse(self):\n        apple = Food.objects.create(name=\"apple\")\n        lunch = Eaten.objects.create(food=apple, meal=\"lunch\")\n\n        self.assertEqual(\n            set(Food.objects.filter(eaten=lunch)),\n            set([apple])\n        )\n\n    def test_recursive_fk(self):\n        node1 = Node.objects.create(num=42)\n        node2 = Node.objects.create(num=1, parent=node1)\n\n        self.assertEqual(\n            list(Node.objects.filter(parent=node1)),\n            [node2]\n        )\n\n    def test_recursive_fk_reverse(self):\n        node1 = Node.objects.create(num=42)\n        node2 = Node.objects.create(num=1, parent=node1)\n\n        self.assertEqual(\n            list(Node.objects.filter(node=node2)),\n            [node1]\n        )\n\n\nclass ConditionalTests(BaseQuerysetTest):\n    \"\"\"Tests whose execution depend on different environment conditions like\n    Python version or DB backend features\"\"\"\n\n    def setUp(self):\n        generic = NamedCategory.objects.create(name=\"Generic\")\n        t1 = Tag.objects.create(name='t1', category=generic)\n        t2 = Tag.objects.create(name='t2', parent=t1, category=generic)\n        t3 = Tag.objects.create(name='t3', parent=t1)\n        t4 = Tag.objects.create(name='t4', parent=t3)\n        t5 = Tag.objects.create(name='t5', parent=t3)\n\n\n    # In Python 2.6 beta releases, exceptions raised in __len__ are swallowed\n    # (Python issue 1242657), so these cases return an empty list, rather than\n    # raising an exception. Not a lot we can do about that, unfortunately, due to\n    # the way Python handles list() calls internally. Thus, we skip the tests for\n    # Python 2.6.\n    @unittest.skipIf(sys.version_info[:2] == (2, 6), \"Python version is 2.6\")\n    def test_infinite_loop(self):\n        # If you're not careful, it's possible to introduce infinite loops via\n        # default ordering on foreign keys in a cycle. We detect that.\n        self.assertRaisesMessage(\n            FieldError,\n            'Infinite loop caused by ordering.',\n            lambda: list(LoopX.objects.all()) # Force queryset evaluation with list()\n        )\n        self.assertRaisesMessage(\n            FieldError,\n            'Infinite loop caused by ordering.',\n            lambda: list(LoopZ.objects.all()) # Force queryset evaluation with list()\n        )\n\n        # Note that this doesn't cause an infinite loop, since the default\n        # ordering on the Tag model is empty (and thus defaults to using \"id\"\n        # for the related field).\n        self.assertEqual(len(Tag.objects.order_by('parent')), 5)\n\n        # ... but you can still order in a non-recursive fashion amongst linked\n        # fields (the previous test failed because the default ordering was\n        # recursive).\n        self.assertQuerysetEqual(\n            LoopX.objects.all().order_by('y__x__y__x__id'),\n            []\n        )\n\n    # When grouping without specifying ordering, we add an explicit \"ORDER BY NULL\"\n    # portion in MySQL to prevent unnecessary sorting.\n    @skipUnlessDBFeature('requires_explicit_null_ordering_when_grouping')\n    def test_null_ordering_added(self):\n        query = Tag.objects.values_list('parent_id', flat=True).order_by().query\n        query.group_by = ['parent_id']\n        sql = query.get_compiler(DEFAULT_DB_ALIAS).as_sql()[0]\n        fragment = \"ORDER BY \"\n        pos = sql.find(fragment)\n        self.assertEqual(sql.find(fragment, pos + 1), -1)\n        self.assertEqual(sql.find(\"NULL\", pos + len(fragment)), pos + len(fragment))\n\n    # Sqlite 3 does not support passing in more than 1000 parameters except by\n    # changing a parameter at compilation time.\n    @skipUnlessDBFeature('supports_1000_query_parameters')\n    def test_ticket14244(self):\n        # Test that the \"in\" lookup works with lists of 1000 items or more.\n        # The numbers amount is picked to force three different IN batches\n        # for Oracle, yet to be less than 2100 parameter limit for MSSQL.\n        numbers = range(2050)\n        Number.objects.all().delete()\n        Number.objects.bulk_create(Number(num=num) for num in numbers)\n        self.assertEqual(\n            Number.objects.filter(num__in=numbers[:1000]).count(),\n            1000\n        )\n        self.assertEqual(\n            Number.objects.filter(num__in=numbers[:1001]).count(),\n            1001\n        )\n        self.assertEqual(\n            Number.objects.filter(num__in=numbers[:2000]).count(),\n            2000\n        )\n        self.assertEqual(\n            Number.objects.filter(num__in=numbers).count(),\n            len(numbers)\n        )\n\n\nclass UnionTests(unittest.TestCase):\n    \"\"\"\n    Tests for the union of two querysets. Bug #12252.\n    \"\"\"\n    def setUp(self):\n        objectas = []\n        objectbs = []\n        objectcs = []\n        a_info = ['one', 'two', 'three']\n        for name in a_info:\n            o = ObjectA(name=name)\n            o.save()\n            objectas.append(o)\n        b_info = [('un', 1, objectas[0]), ('deux', 2, objectas[0]), ('trois', 3, objectas[2])]\n        for name, number, objecta in b_info:\n            o = ObjectB(name=name, num=number, objecta=objecta)\n            o.save()\n            objectbs.append(o)\n        c_info = [('ein', objectas[2], objectbs[2]), ('zwei', objectas[1], objectbs[1])]\n        for name, objecta, objectb in c_info:\n            o = ObjectC(name=name, objecta=objecta, objectb=objectb)\n            o.save()\n            objectcs.append(o)\n\n    def check_union(self, model, Q1, Q2):\n        filter = model.objects.filter\n        self.assertEqual(set(filter(Q1) | filter(Q2)), set(filter(Q1 | Q2)))\n        self.assertEqual(set(filter(Q2) | filter(Q1)), set(filter(Q1 | Q2)))\n\n    def test_A_AB(self):\n        Q1 = Q(name='two')\n        Q2 = Q(objectb__name='deux')\n        self.check_union(ObjectA, Q1, Q2)\n\n    def test_A_AB2(self):\n        Q1 = Q(name='two')\n        Q2 = Q(objectb__name='deux', objectb__num=2)\n        self.check_union(ObjectA, Q1, Q2)\n\n    def test_AB_ACB(self):\n        Q1 = Q(objectb__name='deux')\n        Q2 = Q(objectc__objectb__name='deux')\n        self.check_union(ObjectA, Q1, Q2)\n\n    def test_BAB_BAC(self):\n        Q1 = Q(objecta__objectb__name='deux')\n        Q2 = Q(objecta__objectc__name='ein')\n        self.check_union(ObjectB, Q1, Q2)\n\n    def test_BAB_BACB(self):\n        Q1 = Q(objecta__objectb__name='deux')\n        Q2 = Q(objecta__objectc__objectb__name='trois')\n        self.check_union(ObjectB, Q1, Q2)\n\n    def test_BA_BCA__BAB_BAC_BCA(self):\n        Q1 = Q(objecta__name='one', objectc__objecta__name='two')\n        Q2 = Q(objecta__objectc__name='ein', objectc__objecta__name='three', objecta__objectb__name='trois')\n        self.check_union(ObjectB, Q1, Q2)\n\n\nclass DefaultValuesInsertTest(TestCase):\n    def test_no_extra_params(self):\n        # Ticket #17056 -- affects Oracle\n        try:\n            DumbCategory.objects.create()\n        except TypeError:\n            self.fail(\"Creation of an instance of a model with only the PK field shouldn't error out after bulk insert refactoring (#17056)\")\n\nclass NullInExcludeTest(TestCase):\n    def setUp(self):\n        NullableName.objects.create(name='i1')\n        NullableName.objects.create()\n\n    def test_null_in_exclude_qs(self):\n        none_val = '' if connection.features.interprets_empty_strings_as_nulls else None\n        self.assertQuerysetEqual(\n            NullableName.objects.exclude(name__in=[]),\n            ['i1', none_val], attrgetter('name'))\n        self.assertQuerysetEqual(\n            NullableName.objects.exclude(name__in=['i1']),\n            [none_val], attrgetter('name'))\n        self.assertQuerysetEqual(\n            NullableName.objects.exclude(name__in=['i3']),\n            ['i1', none_val], attrgetter('name'))\n        inner_qs = NullableName.objects.filter(name='i1').values_list('name')\n        self.assertQuerysetEqual(\n            NullableName.objects.exclude(name__in=inner_qs),\n            [none_val], attrgetter('name'))\n        # Check that the inner queryset wasn't executed - it should be turned\n        # into subquery above\n        self.assertIs(inner_qs._result_cache, None)\n\n    @unittest.expectedFailure\n    def test_col_not_in_list_containing_null(self):\n        \"\"\"\n        The following case is not handled properly because\n        SQL's COL NOT IN (list containing null) handling is too weird to\n        abstract away.\n        \"\"\"\n        self.assertQuerysetEqual(\n            NullableName.objects.exclude(name__in=[None]),\n            ['i1'], attrgetter('name'))\n\nclass EmptyStringsAsNullTest(TestCase):\n    \"\"\"\n    Test that filtering on non-null character fields works as expected.\n    The reason for these tests is that Oracle treats '' as NULL, and this\n    can cause problems in query construction. Refs #17957.\n    \"\"\"\n\n    def setUp(self):\n        self.nc = NamedCategory.objects.create(name='')\n\n    def test_direct_exclude(self):\n        self.assertQuerysetEqual(\n            NamedCategory.objects.exclude(name__in=['nonexisting']),\n            [self.nc.pk], attrgetter('pk')\n        )\n\n    def test_joined_exclude(self):\n        self.assertQuerysetEqual(\n            DumbCategory.objects.exclude(namedcategory__name__in=['nonexisting']),\n            [self.nc.pk], attrgetter('pk')\n        )\n\nclass ProxyQueryCleanupTest(TestCase):\n    def test_evaluated_proxy_count(self):\n        \"\"\"\n        Test that generating the query string doesn't alter the query's state\n        in irreversible ways. Refs #18248.\n        \"\"\"\n        ProxyCategory.objects.create()\n        qs = ProxyCategory.objects.all()\n        self.assertEqual(qs.count(), 1)\n        str(qs.query)\n        self.assertEqual(qs.count(), 1)\n\nclass WhereNodeTest(TestCase):\n    class DummyNode(object):\n        def as_sql(self, qn, connection):\n            return 'dummy', []\n\n    def test_empty_full_handling_conjunction(self):\n        qn = connection.ops.quote_name\n        w = WhereNode(children=[EverythingNode()])\n        self.assertEqual(w.as_sql(qn, connection), ('', []))\n        w.negate()\n        self.assertRaises(EmptyResultSet, w.as_sql, qn, connection)\n        w = WhereNode(children=[NothingNode()])\n        self.assertRaises(EmptyResultSet, w.as_sql, qn, connection)\n        w.negate()\n        self.assertEqual(w.as_sql(qn, connection), ('', []))\n        w = WhereNode(children=[EverythingNode(), EverythingNode()])\n        self.assertEqual(w.as_sql(qn, connection), ('', []))\n        w.negate()\n        self.assertRaises(EmptyResultSet, w.as_sql, qn, connection)\n        w = WhereNode(children=[EverythingNode(), self.DummyNode()])\n        self.assertEqual(w.as_sql(qn, connection), ('dummy', []))\n        w = WhereNode(children=[self.DummyNode(), self.DummyNode()])\n        self.assertEqual(w.as_sql(qn, connection), ('(dummy AND dummy)', []))\n        w.negate()\n        self.assertEqual(w.as_sql(qn, connection), ('NOT (dummy AND dummy)', []))\n        w = WhereNode(children=[NothingNode(), self.DummyNode()])\n        self.assertRaises(EmptyResultSet, w.as_sql, qn, connection)\n        w.negate()\n        self.assertEqual(w.as_sql(qn, connection), ('', []))\n\n    def test_empty_full_handling_disjunction(self):\n        qn = connection.ops.quote_name\n        w = WhereNode(children=[EverythingNode()], connector='OR')\n        self.assertEqual(w.as_sql(qn, connection), ('', []))\n        w.negate()\n        self.assertRaises(EmptyResultSet, w.as_sql, qn, connection)\n        w = WhereNode(children=[NothingNode()], connector='OR')\n        self.assertRaises(EmptyResultSet, w.as_sql, qn, connection)\n        w.negate()\n        self.assertEqual(w.as_sql(qn, connection), ('', []))\n        w = WhereNode(children=[EverythingNode(), EverythingNode()], connector='OR')\n        self.assertEqual(w.as_sql(qn, connection), ('', []))\n        w.negate()\n        self.assertRaises(EmptyResultSet, w.as_sql, qn, connection)\n        w = WhereNode(children=[EverythingNode(), self.DummyNode()], connector='OR')\n        self.assertEqual(w.as_sql(qn, connection), ('', []))\n        w.negate()\n        self.assertRaises(EmptyResultSet, w.as_sql, qn, connection)\n        w = WhereNode(children=[self.DummyNode(), self.DummyNode()], connector='OR')\n        self.assertEqual(w.as_sql(qn, connection), ('(dummy OR dummy)', []))\n        w.negate()\n        self.assertEqual(w.as_sql(qn, connection), ('NOT (dummy OR dummy)', []))\n        w = WhereNode(children=[NothingNode(), self.DummyNode()], connector='OR')\n        self.assertEqual(w.as_sql(qn, connection), ('dummy', []))\n        w.negate()\n        self.assertEqual(w.as_sql(qn, connection), ('NOT (dummy)', []))\n\n    def test_empty_nodes(self):\n        qn = connection.ops.quote_name\n        empty_w = WhereNode()\n        w = WhereNode(children=[empty_w, empty_w])\n        self.assertEqual(w.as_sql(qn, connection), (None, []))\n        w.negate()\n        self.assertEqual(w.as_sql(qn, connection), (None, []))\n        w.connector = 'OR'\n        self.assertEqual(w.as_sql(qn, connection), (None, []))\n        w.negate()\n        self.assertEqual(w.as_sql(qn, connection), (None, []))\n        w = WhereNode(children=[empty_w, NothingNode()], connector='OR')\n        self.assertRaises(EmptyResultSet, w.as_sql, qn, connection)\n\nclass NullJoinPromotionOrTest(TestCase):\n    def setUp(self):\n        d = ModelD.objects.create(name='foo')\n        ModelA.objects.create(name='bar', d=d)\n\n    def test_ticket_17886(self):\n        # The first Q-object is generating the match, the rest of the filters\n        # should not remove the match even if they do not match anything. The\n        # problem here was that b__name generates a LOUTER JOIN, then\n        # b__c__name generates join to c, which the ORM tried to promote but\n        # failed as that join isn't nullable.\n        q_obj =  (\n            Q(d__name='foo')|\n            Q(b__name='foo')|\n            Q(b__c__name='foo')\n        )\n        qset = ModelA.objects.filter(q_obj)\n        self.assertEqual(len(qset), 1)\n        # We generate one INNER JOIN to D. The join is direct and not nullable\n        # so we can use INNER JOIN for it. However, we can NOT use INNER JOIN\n        # for the b->c join, as a->b is nullable.\n        self.assertEqual(str(qset.query).count('INNER JOIN'), 1)\n\nclass EmptyStringPromotionTests(TestCase):\n    def test_empty_string_promotion(self):\n        qs = RelatedObject.objects.filter(single__name='')\n        if connection.features.interprets_empty_strings_as_nulls:\n            self.assertIn('LEFT OUTER JOIN', str(qs.query))\n        else:\n            self.assertNotIn('LEFT OUTER JOIN', str(qs.query))\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/queryset_pickle/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/queryset_pickle/models.py",
    "content": "from __future__ import absolute_import\n\nimport datetime\n\nfrom django.db import models\nfrom django.utils.translation import ugettext_lazy as _\n\n\ndef standalone_number(self):\n    return 1\n\nclass Numbers(object):\n    @staticmethod\n    def get_static_number(self):\n        return 2\n\n    @classmethod\n    def get_class_number(self):\n        return 3\n\n    def get_member_number(self):\n        return 4\n\nnn = Numbers()\n\nclass Group(models.Model):\n    name = models.CharField(_('name'), max_length=100)\n\nclass Event(models.Model):\n    group = models.ForeignKey(Group)\n\nclass Happening(models.Model):\n    when = models.DateTimeField(blank=True, default=datetime.datetime.now)\n    name = models.CharField(blank=True, max_length=100, default=lambda:\"test\")\n    number1 = models.IntegerField(blank=True, default=standalone_number)\n    number2 = models.IntegerField(blank=True, default=Numbers.get_static_number)\n    number3 = models.IntegerField(blank=True, default=Numbers.get_class_number)\n    number4 = models.IntegerField(blank=True, default=nn.get_member_number)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/queryset_pickle/tests.py",
    "content": "from __future__ import absolute_import\n\nimport pickle\nimport datetime\n\nfrom django.test import TestCase\n\nfrom .models import Group, Event, Happening\n\n\nclass PickleabilityTestCase(TestCase):\n    def assert_pickles(self, qs):\n        self.assertEqual(list(pickle.loads(pickle.dumps(qs))), list(qs))\n\n    def test_related_field(self):\n        g = Group.objects.create(name=\"Ponies Who Own Maybachs\")\n        self.assert_pickles(Event.objects.filter(group=g.id))\n\n    def test_datetime_callable_default_all(self):\n        self.assert_pickles(Happening.objects.all())\n\n    def test_datetime_callable_default_filter(self):\n        self.assert_pickles(Happening.objects.filter(when=datetime.datetime.now()))\n\n    def test_lambda_as_default(self):\n        self.assert_pickles(Happening.objects.filter(name=\"test\"))\n\n    def test_standalone_method_as_default(self):\n        self.assert_pickles(Happening.objects.filter(number1=1))\n\n    def test_staticmethod_as_default(self):\n        self.assert_pickles(Happening.objects.filter(number2=1))\n\n    def test_classmethod_as_default(self):\n        self.assert_pickles(Happening.objects.filter(number3=1))\n\n    def test_membermethod_as_default(self):\n        self.assert_pickles(Happening.objects.filter(number4=1))\n\n    def test_doesnotexist_exception(self):\n        # Ticket #17776\n        original = Event.DoesNotExist(\"Doesn't exist\")\n        unpickled = pickle.loads(pickle.dumps(original))\n\n        # Exceptions are not equal to equivalent instances of themselves, so\n        # can't just use assertEqual(original, unpickled)\n        self.assertEqual(original.__class__, unpickled.__class__)\n        self.assertEqual(original.args, unpickled.args)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/requests/__init__.py",
    "content": "\"\"\"\nTests for Django's various Request objects.\n\"\"\"\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/requests/models.py",
    "content": "# Need a models module for the test runner.\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/requests/tests.py",
    "content": "# -*- encoding: utf-8 -*-\nfrom __future__ import unicode_literals\n\nimport time\nimport warnings\nfrom datetime import datetime, timedelta\nfrom io import BytesIO\n\nfrom django.db import connection, connections, DEFAULT_DB_ALIAS\nfrom django.core import signals\nfrom django.core.exceptions import SuspiciousOperation\nfrom django.core.handlers.wsgi import WSGIRequest, LimitedStream\nfrom django.http import HttpRequest, HttpResponse, parse_cookie, build_request_repr, UnreadablePostError\nfrom django.test import TransactionTestCase\nfrom django.test.client import FakePayload\nfrom django.test.utils import override_settings, str_prefix\nfrom django.utils import six\nfrom django.utils import unittest\nfrom django.utils.http import cookie_date, urlencode\nfrom django.utils.timezone import utc\n\n\nclass RequestsTests(unittest.TestCase):\n    def test_httprequest(self):\n        request = HttpRequest()\n        self.assertEqual(list(request.GET.keys()), [])\n        self.assertEqual(list(request.POST.keys()), [])\n        self.assertEqual(list(request.COOKIES.keys()), [])\n        self.assertEqual(list(request.META.keys()), [])\n\n    def test_httprequest_repr(self):\n        request = HttpRequest()\n        request.path = '/somepath/'\n        request.GET = {'get-key': 'get-value'}\n        request.POST = {'post-key': 'post-value'}\n        request.COOKIES = {'post-key': 'post-value'}\n        request.META = {'post-key': 'post-value'}\n        self.assertEqual(repr(request), str_prefix(\"<HttpRequest\\npath:/somepath/,\\nGET:{%(_)s'get-key': %(_)s'get-value'},\\nPOST:{%(_)s'post-key': %(_)s'post-value'},\\nCOOKIES:{%(_)s'post-key': %(_)s'post-value'},\\nMETA:{%(_)s'post-key': %(_)s'post-value'}>\"))\n        self.assertEqual(build_request_repr(request), repr(request))\n        self.assertEqual(build_request_repr(request, path_override='/otherpath/', GET_override={'a': 'b'}, POST_override={'c': 'd'}, COOKIES_override={'e': 'f'}, META_override={'g': 'h'}),\n                         str_prefix(\"<HttpRequest\\npath:/otherpath/,\\nGET:{%(_)s'a': %(_)s'b'},\\nPOST:{%(_)s'c': %(_)s'd'},\\nCOOKIES:{%(_)s'e': %(_)s'f'},\\nMETA:{%(_)s'g': %(_)s'h'}>\"))\n\n    def test_wsgirequest(self):\n        request = WSGIRequest({'PATH_INFO': 'bogus', 'REQUEST_METHOD': 'bogus', 'wsgi.input': BytesIO(b'')})\n        self.assertEqual(list(request.GET.keys()), [])\n        self.assertEqual(list(request.POST.keys()), [])\n        self.assertEqual(list(request.COOKIES.keys()), [])\n        self.assertEqual(set(request.META.keys()), set(['PATH_INFO', 'REQUEST_METHOD', 'SCRIPT_NAME', 'wsgi.input']))\n        self.assertEqual(request.META['PATH_INFO'], 'bogus')\n        self.assertEqual(request.META['REQUEST_METHOD'], 'bogus')\n        self.assertEqual(request.META['SCRIPT_NAME'], '')\n\n    def test_wsgirequest_repr(self):\n        request = WSGIRequest({'PATH_INFO': '/somepath/', 'REQUEST_METHOD': 'get', 'wsgi.input': BytesIO(b'')})\n        request.GET = {'get-key': 'get-value'}\n        request.POST = {'post-key': 'post-value'}\n        request.COOKIES = {'post-key': 'post-value'}\n        request.META = {'post-key': 'post-value'}\n        self.assertEqual(repr(request), str_prefix(\"<WSGIRequest\\npath:/somepath/,\\nGET:{%(_)s'get-key': %(_)s'get-value'},\\nPOST:{%(_)s'post-key': %(_)s'post-value'},\\nCOOKIES:{%(_)s'post-key': %(_)s'post-value'},\\nMETA:{%(_)s'post-key': %(_)s'post-value'}>\"))\n        self.assertEqual(build_request_repr(request), repr(request))\n        self.assertEqual(build_request_repr(request, path_override='/otherpath/', GET_override={'a': 'b'}, POST_override={'c': 'd'}, COOKIES_override={'e': 'f'}, META_override={'g': 'h'}),\n                         str_prefix(\"<WSGIRequest\\npath:/otherpath/,\\nGET:{%(_)s'a': %(_)s'b'},\\nPOST:{%(_)s'c': %(_)s'd'},\\nCOOKIES:{%(_)s'e': %(_)s'f'},\\nMETA:{%(_)s'g': %(_)s'h'}>\"))\n\n    def test_wsgirequest_path_info(self):\n        def wsgi_str(path_info):\n            path_info = path_info.encode('utf-8')           # Actual URL sent by the browser (bytestring)\n            if six.PY3:\n                path_info = path_info.decode('iso-8859-1')  # Value in the WSGI environ dict (native string)\n            return path_info\n        # Regression for #19468\n        request = WSGIRequest({'PATH_INFO': wsgi_str(\"/سلام/\"), 'REQUEST_METHOD': 'get', 'wsgi.input': BytesIO(b'')})\n        self.assertEqual(request.path, \"/سلام/\")\n\n    def test_parse_cookie(self):\n        self.assertEqual(parse_cookie('invalid@key=true'), {})\n\n    def test_httprequest_location(self):\n        request = HttpRequest()\n        self.assertEqual(request.build_absolute_uri(location=\"https://www.example.com/asdf\"),\n            'https://www.example.com/asdf')\n\n        request.get_host = lambda: 'www.example.com'\n        request.path = ''\n        self.assertEqual(request.build_absolute_uri(location=\"/path/with:colons\"),\n            'http://www.example.com/path/with:colons')\n\n    @override_settings(\n        USE_X_FORWARDED_HOST=False,\n        ALLOWED_HOSTS=[\n            'forward.com', 'example.com', 'internal.com', '12.34.56.78',\n            '[2001:19f0:feee::dead:beef:cafe]', 'xn--4ca9at.com',\n            '.multitenant.com', 'INSENSITIVE.com',\n            ])\n    def test_http_get_host(self):\n        # Check if X_FORWARDED_HOST is provided.\n        request = HttpRequest()\n        request.META = {\n            'HTTP_X_FORWARDED_HOST': 'forward.com',\n            'HTTP_HOST': 'example.com',\n            'SERVER_NAME': 'internal.com',\n            'SERVER_PORT': 80,\n        }\n        # X_FORWARDED_HOST is ignored.\n        self.assertEqual(request.get_host(), 'example.com')\n\n        # Check if X_FORWARDED_HOST isn't provided.\n        request = HttpRequest()\n        request.META = {\n            'HTTP_HOST': 'example.com',\n            'SERVER_NAME': 'internal.com',\n            'SERVER_PORT': 80,\n        }\n        self.assertEqual(request.get_host(), 'example.com')\n\n        # Check if HTTP_HOST isn't provided.\n        request = HttpRequest()\n        request.META = {\n            'SERVER_NAME': 'internal.com',\n            'SERVER_PORT': 80,\n        }\n        self.assertEqual(request.get_host(), 'internal.com')\n\n        # Check if HTTP_HOST isn't provided, and we're on a nonstandard port\n        request = HttpRequest()\n        request.META = {\n            'SERVER_NAME': 'internal.com',\n            'SERVER_PORT': 8042,\n        }\n        self.assertEqual(request.get_host(), 'internal.com:8042')\n\n        # Poisoned host headers are rejected as suspicious\n        legit_hosts = [\n            'example.com',\n            'example.com:80',\n            '12.34.56.78',\n            '12.34.56.78:443',\n            '[2001:19f0:feee::dead:beef:cafe]',\n            '[2001:19f0:feee::dead:beef:cafe]:8080',\n            'xn--4ca9at.com', # Punnycode for öäü.com\n            'anything.multitenant.com',\n            'multitenant.com',\n            'insensitive.com',\n        ]\n\n        poisoned_hosts = [\n            'example.com@evil.tld',\n            'example.com:dr.frankenstein@evil.tld',\n            'example.com:dr.frankenstein@evil.tld:80',\n            'example.com:80/badpath',\n            'example.com: recovermypassword.com',\n            'other.com', # not in ALLOWED_HOSTS\n        ]\n\n        for host in legit_hosts:\n            request = HttpRequest()\n            request.META = {\n                'HTTP_HOST': host,\n            }\n            request.get_host()\n\n        for host in poisoned_hosts:\n            with self.assertRaises(SuspiciousOperation):\n                request = HttpRequest()\n                request.META = {\n                    'HTTP_HOST': host,\n                }\n                request.get_host()\n\n    @override_settings(USE_X_FORWARDED_HOST=True, ALLOWED_HOSTS=['*'])\n    def test_http_get_host_with_x_forwarded_host(self):\n        # Check if X_FORWARDED_HOST is provided.\n        request = HttpRequest()\n        request.META = {\n            'HTTP_X_FORWARDED_HOST': 'forward.com',\n            'HTTP_HOST': 'example.com',\n            'SERVER_NAME': 'internal.com',\n            'SERVER_PORT': 80,\n        }\n        # X_FORWARDED_HOST is obeyed.\n        self.assertEqual(request.get_host(), 'forward.com')\n\n        # Check if X_FORWARDED_HOST isn't provided.\n        request = HttpRequest()\n        request.META = {\n            'HTTP_HOST': 'example.com',\n            'SERVER_NAME': 'internal.com',\n            'SERVER_PORT': 80,\n        }\n        self.assertEqual(request.get_host(), 'example.com')\n\n        # Check if HTTP_HOST isn't provided.\n        request = HttpRequest()\n        request.META = {\n            'SERVER_NAME': 'internal.com',\n            'SERVER_PORT': 80,\n        }\n        self.assertEqual(request.get_host(), 'internal.com')\n\n        # Check if HTTP_HOST isn't provided, and we're on a nonstandard port\n        request = HttpRequest()\n        request.META = {\n            'SERVER_NAME': 'internal.com',\n            'SERVER_PORT': 8042,\n        }\n        self.assertEqual(request.get_host(), 'internal.com:8042')\n\n        # Poisoned host headers are rejected as suspicious\n        legit_hosts = [\n            'example.com',\n            'example.com:80',\n            '12.34.56.78',\n            '12.34.56.78:443',\n            '[2001:19f0:feee::dead:beef:cafe]',\n            '[2001:19f0:feee::dead:beef:cafe]:8080',\n            'xn--4ca9at.com', # Punnycode for öäü.com\n        ]\n\n        poisoned_hosts = [\n            'example.com@evil.tld',\n            'example.com:dr.frankenstein@evil.tld',\n            'example.com:dr.frankenstein@evil.tld:80',\n            'example.com:80/badpath',\n            'example.com: recovermypassword.com',\n        ]\n\n        for host in legit_hosts:\n            request = HttpRequest()\n            request.META = {\n                'HTTP_HOST': host,\n            }\n            request.get_host()\n\n        for host in poisoned_hosts:\n            with self.assertRaises(SuspiciousOperation):\n                request = HttpRequest()\n                request.META = {\n                    'HTTP_HOST': host,\n                }\n                request.get_host()\n\n\n    @override_settings(DEBUG=True, ALLOWED_HOSTS=[])\n    def test_host_validation_disabled_in_debug_mode(self):\n        \"\"\"If ALLOWED_HOSTS is empty and DEBUG is True, all hosts pass.\"\"\"\n        request = HttpRequest()\n        request.META = {\n            'HTTP_HOST': 'example.com',\n        }\n        self.assertEqual(request.get_host(), 'example.com')\n\n\n    def test_near_expiration(self):\n        \"Cookie will expire when an near expiration time is provided\"\n        response = HttpResponse()\n        # There is a timing weakness in this test; The\n        # expected result for max-age requires that there be\n        # a very slight difference between the evaluated expiration\n        # time, and the time evaluated in set_cookie(). If this\n        # difference doesn't exist, the cookie time will be\n        # 1 second larger. To avoid the problem, put in a quick sleep,\n        # which guarantees that there will be a time difference.\n        expires = datetime.utcnow() + timedelta(seconds=10)\n        time.sleep(0.001)\n        response.set_cookie('datetime', expires=expires)\n        datetime_cookie = response.cookies['datetime']\n        self.assertEqual(datetime_cookie['max-age'], 10)\n\n    def test_aware_expiration(self):\n        \"Cookie accepts an aware datetime as expiration time\"\n        response = HttpResponse()\n        expires = (datetime.utcnow() + timedelta(seconds=10)).replace(tzinfo=utc)\n        time.sleep(0.001)\n        response.set_cookie('datetime', expires=expires)\n        datetime_cookie = response.cookies['datetime']\n        self.assertEqual(datetime_cookie['max-age'], 10)\n\n    def test_far_expiration(self):\n        \"Cookie will expire when an distant expiration time is provided\"\n        response = HttpResponse()\n        response.set_cookie('datetime', expires=datetime(2028, 1, 1, 4, 5, 6))\n        datetime_cookie = response.cookies['datetime']\n        self.assertEqual(datetime_cookie['expires'], 'Sat, 01-Jan-2028 04:05:06 GMT')\n\n    def test_max_age_expiration(self):\n        \"Cookie will expire if max_age is provided\"\n        response = HttpResponse()\n        response.set_cookie('max_age', max_age=10)\n        max_age_cookie = response.cookies['max_age']\n        self.assertEqual(max_age_cookie['max-age'], 10)\n        self.assertEqual(max_age_cookie['expires'], cookie_date(time.time()+10))\n\n    def test_httponly_cookie(self):\n        response = HttpResponse()\n        response.set_cookie('example', httponly=True)\n        example_cookie = response.cookies['example']\n        # A compat cookie may be in use -- check that it has worked\n        # both as an output string, and using the cookie attributes\n        self.assertTrue('; httponly' in str(example_cookie))\n        self.assertTrue(example_cookie['httponly'])\n\n    def test_limited_stream(self):\n        # Read all of a limited stream\n        stream = LimitedStream(BytesIO(b'test'), 2)\n        self.assertEqual(stream.read(), b'te')\n        # Reading again returns nothing.\n        self.assertEqual(stream.read(), b'')\n\n        # Read a number of characters greater than the stream has to offer\n        stream = LimitedStream(BytesIO(b'test'), 2)\n        self.assertEqual(stream.read(5), b'te')\n        # Reading again returns nothing.\n        self.assertEqual(stream.readline(5), b'')\n\n        # Read sequentially from a stream\n        stream = LimitedStream(BytesIO(b'12345678'), 8)\n        self.assertEqual(stream.read(5), b'12345')\n        self.assertEqual(stream.read(5), b'678')\n        # Reading again returns nothing.\n        self.assertEqual(stream.readline(5), b'')\n\n        # Read lines from a stream\n        stream = LimitedStream(BytesIO(b'1234\\n5678\\nabcd\\nefgh\\nijkl'), 24)\n        # Read a full line, unconditionally\n        self.assertEqual(stream.readline(), b'1234\\n')\n        # Read a number of characters less than a line\n        self.assertEqual(stream.readline(2), b'56')\n        # Read the rest of the partial line\n        self.assertEqual(stream.readline(), b'78\\n')\n        # Read a full line, with a character limit greater than the line length\n        self.assertEqual(stream.readline(6), b'abcd\\n')\n        # Read the next line, deliberately terminated at the line end\n        self.assertEqual(stream.readline(4), b'efgh')\n        # Read the next line... just the line end\n        self.assertEqual(stream.readline(), b'\\n')\n        # Read everything else.\n        self.assertEqual(stream.readline(), b'ijkl')\n\n        # Regression for #15018\n        # If a stream contains a newline, but the provided length\n        # is less than the number of provided characters, the newline\n        # doesn't reset the available character count\n        stream = LimitedStream(BytesIO(b'1234\\nabcdef'), 9)\n        self.assertEqual(stream.readline(10), b'1234\\n')\n        self.assertEqual(stream.readline(3), b'abc')\n        # Now expire the available characters\n        self.assertEqual(stream.readline(3), b'd')\n        # Reading again returns nothing.\n        self.assertEqual(stream.readline(2), b'')\n\n        # Same test, but with read, not readline.\n        stream = LimitedStream(BytesIO(b'1234\\nabcdef'), 9)\n        self.assertEqual(stream.read(6), b'1234\\na')\n        self.assertEqual(stream.read(2), b'bc')\n        self.assertEqual(stream.read(2), b'd')\n        self.assertEqual(stream.read(2), b'')\n        self.assertEqual(stream.read(), b'')\n\n    def test_stream(self):\n        payload = FakePayload('name=value')\n        request = WSGIRequest({'REQUEST_METHOD': 'POST',\n                               'CONTENT_TYPE': 'application/x-www-form-urlencoded',\n                               'CONTENT_LENGTH': len(payload),\n                               'wsgi.input': payload})\n        self.assertEqual(request.read(), b'name=value')\n\n    def test_read_after_value(self):\n        \"\"\"\n        Reading from request is allowed after accessing request contents as\n        POST or body.\n        \"\"\"\n        payload = FakePayload('name=value')\n        request = WSGIRequest({'REQUEST_METHOD': 'POST',\n                               'CONTENT_TYPE': 'application/x-www-form-urlencoded',\n                               'CONTENT_LENGTH': len(payload),\n                               'wsgi.input': payload})\n        self.assertEqual(request.POST, {'name': ['value']})\n        self.assertEqual(request.body, b'name=value')\n        self.assertEqual(request.read(), b'name=value')\n\n    def test_value_after_read(self):\n        \"\"\"\n        Construction of POST or body is not allowed after reading\n        from request.\n        \"\"\"\n        payload = FakePayload('name=value')\n        request = WSGIRequest({'REQUEST_METHOD': 'POST',\n                               'CONTENT_TYPE': 'application/x-www-form-urlencoded',\n                               'CONTENT_LENGTH': len(payload),\n                               'wsgi.input': payload})\n        self.assertEqual(request.read(2), b'na')\n        self.assertRaises(Exception, lambda: request.body)\n        self.assertEqual(request.POST, {})\n\n    def test_non_ascii_POST(self):\n        payload = FakePayload(urlencode({'key': 'España'}))\n        request = WSGIRequest({\n            'REQUEST_METHOD': 'POST',\n            'CONTENT_LENGTH': len(payload),\n            'CONTENT_TYPE': 'application/x-www-form-urlencoded',\n            'wsgi.input': payload,\n        })\n        self.assertEqual(request.POST, {'key': ['España']})\n\n    def test_alternate_charset_POST(self):\n        \"\"\"\n        Test a POST with non-utf-8 payload encoding.\n        \"\"\"\n        from django.utils.http import urllib_parse\n        payload = FakePayload(urllib_parse.urlencode({'key': 'España'.encode('latin-1')}))\n        request = WSGIRequest({\n            'REQUEST_METHOD': 'POST',\n            'CONTENT_LENGTH': len(payload),\n            'CONTENT_TYPE': 'application/x-www-form-urlencoded; charset=iso-8859-1',\n            'wsgi.input': payload,\n        })\n        self.assertEqual(request.POST, {'key': ['España']})\n\n    def test_body_after_POST_multipart(self):\n        \"\"\"\n        Reading body after parsing multipart is not allowed\n        \"\"\"\n        # Because multipart is used for large amounts fo data i.e. file uploads,\n        # we don't want the data held in memory twice, and we don't want to\n        # silence the error by setting body = '' either.\n        payload = FakePayload(\"\\r\\n\".join([\n                '--boundary',\n                'Content-Disposition: form-data; name=\"name\"',\n                '',\n                'value',\n                '--boundary--'\n                '']))\n        request = WSGIRequest({'REQUEST_METHOD': 'POST',\n                               'CONTENT_TYPE': 'multipart/form-data; boundary=boundary',\n                               'CONTENT_LENGTH': len(payload),\n                               'wsgi.input': payload})\n        self.assertEqual(request.POST, {'name': ['value']})\n        self.assertRaises(Exception, lambda: request.body)\n\n    def test_POST_multipart_with_content_length_zero(self):\n        \"\"\"\n        Multipart POST requests with Content-Length >= 0 are valid and need to be handled.\n        \"\"\"\n        # According to:\n        # http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.13\n        # Every request.POST with Content-Length >= 0 is a valid request,\n        # this test ensures that we handle Content-Length == 0.\n        payload = FakePayload(\"\\r\\n\".join([\n                '--boundary',\n                'Content-Disposition: form-data; name=\"name\"',\n                '',\n                'value',\n                '--boundary--'\n                '']))\n        request = WSGIRequest({'REQUEST_METHOD': 'POST',\n                               'CONTENT_TYPE': 'multipart/form-data; boundary=boundary',\n                               'CONTENT_LENGTH': 0,\n                               'wsgi.input': payload})\n        self.assertEqual(request.POST, {})\n\n    def test_POST_binary_only(self):\n        payload = b'\\r\\n\\x01\\x00\\x00\\x00ab\\x00\\x00\\xcd\\xcc,@'\n        environ = {'REQUEST_METHOD': 'POST',\n                   'CONTENT_TYPE': 'application/octet-stream',\n                   'CONTENT_LENGTH': len(payload),\n                   'wsgi.input': BytesIO(payload)}\n        request = WSGIRequest(environ)\n        self.assertEqual(request.POST, {})\n        self.assertEqual(request.FILES, {})\n        self.assertEqual(request.body, payload)\n\n        # Same test without specifying content-type\n        environ.update({'CONTENT_TYPE': '', 'wsgi.input': BytesIO(payload)})\n        request = WSGIRequest(environ)\n        self.assertEqual(request.POST, {})\n        self.assertEqual(request.FILES, {})\n        self.assertEqual(request.body, payload)\n\n    def test_read_by_lines(self):\n        payload = FakePayload('name=value')\n        request = WSGIRequest({'REQUEST_METHOD': 'POST',\n                               'CONTENT_TYPE': 'application/x-www-form-urlencoded',\n                               'CONTENT_LENGTH': len(payload),\n                               'wsgi.input': payload})\n        self.assertEqual(list(request), [b'name=value'])\n\n    def test_POST_after_body_read(self):\n        \"\"\"\n        POST should be populated even if body is read first\n        \"\"\"\n        payload = FakePayload('name=value')\n        request = WSGIRequest({'REQUEST_METHOD': 'POST',\n                               'CONTENT_TYPE': 'application/x-www-form-urlencoded',\n                               'CONTENT_LENGTH': len(payload),\n                               'wsgi.input': payload})\n        raw_data = request.body\n        self.assertEqual(request.POST, {'name': ['value']})\n\n    def test_POST_after_body_read_and_stream_read(self):\n        \"\"\"\n        POST should be populated even if body is read first, and then\n        the stream is read second.\n        \"\"\"\n        payload = FakePayload('name=value')\n        request = WSGIRequest({'REQUEST_METHOD': 'POST',\n                               'CONTENT_TYPE': 'application/x-www-form-urlencoded',\n                               'CONTENT_LENGTH': len(payload),\n                               'wsgi.input': payload})\n        raw_data = request.body\n        self.assertEqual(request.read(1), b'n')\n        self.assertEqual(request.POST, {'name': ['value']})\n\n    def test_POST_after_body_read_and_stream_read_multipart(self):\n        \"\"\"\n        POST should be populated even if body is read first, and then\n        the stream is read second. Using multipart/form-data instead of urlencoded.\n        \"\"\"\n        payload = FakePayload(\"\\r\\n\".join([\n                '--boundary',\n                'Content-Disposition: form-data; name=\"name\"',\n                '',\n                'value',\n                '--boundary--'\n                '']))\n        request = WSGIRequest({'REQUEST_METHOD': 'POST',\n                               'CONTENT_TYPE': 'multipart/form-data; boundary=boundary',\n                               'CONTENT_LENGTH': len(payload),\n                               'wsgi.input': payload})\n        raw_data = request.body\n        # Consume enough data to mess up the parsing:\n        self.assertEqual(request.read(13), b'--boundary\\r\\nC')\n        self.assertEqual(request.POST, {'name': ['value']})\n\n    def test_raw_post_data_returns_body(self):\n        \"\"\"\n        HttpRequest.raw_post_body should be the same as HttpRequest.body\n        \"\"\"\n        payload = FakePayload('Hello There!')\n        request = WSGIRequest({\n            'REQUEST_METHOD': 'POST',\n            'CONTENT_LENGTH': len(payload),\n            'wsgi.input': payload,\n        })\n\n        with warnings.catch_warnings(record=True):\n            self.assertEqual(request.body, request.raw_post_data)\n\n    def test_POST_connection_error(self):\n        \"\"\"\n        If wsgi.input.read() raises an exception while trying to read() the\n        POST, the exception should be identifiable (not a generic IOError).\n        \"\"\"\n        class ExplodingBytesIO(BytesIO):\n            def read(self, len=0):\n                raise IOError(\"kaboom!\")\n\n        payload = b'name=value'\n        request = WSGIRequest({'REQUEST_METHOD': 'POST',\n                               'CONTENT_TYPE': 'application/x-www-form-urlencoded',\n                               'CONTENT_LENGTH': len(payload),\n                               'wsgi.input': ExplodingBytesIO(payload)})\n\n        with self.assertRaises(UnreadablePostError):\n            request.body\n\nclass TransactionRequestTests(TransactionTestCase):\n    def test_request_finished_db_state(self):\n        # The GET below will not succeed, but it will give a response with\n        # defined ._handler_class. That is needed for sending the\n        # request_finished signal.\n        response = self.client.get('/')\n        # Make sure there is an open connection\n        connection.cursor()\n        connection.enter_transaction_management()\n        connection.managed(True)\n        signals.request_finished.send(sender=response._handler_class)\n        # In-memory sqlite doesn't actually close connections.\n        if connection.vendor != 'sqlite':\n            self.assertIs(connection.connection, None)\n        self.assertEqual(len(connection.transaction_state), 0)\n\n    @unittest.skipIf(connection.vendor == 'sqlite',\n                     'This test will close the connection, in-memory '\n                     'sqlite connections must not be closed.')\n    def test_request_finished_failed_connection(self):\n        conn = connections[DEFAULT_DB_ALIAS]\n        conn.enter_transaction_management()\n        conn.managed(True)\n        conn.set_dirty()\n        # Test that the rollback doesn't succeed (for example network failure\n        # could cause this).\n        def fail_horribly():\n            raise Exception(\"Horrible failure!\")\n        conn._rollback = fail_horribly\n        try:\n            with self.assertRaises(Exception):\n                signals.request_finished.send(sender=self.__class__)\n            # The connection's state wasn't cleaned up\n            self.assertTrue(len(connection.transaction_state), 1)\n        finally:\n            del conn._rollback\n        # The connection will be cleaned on next request where the conn\n        # works again.\n        signals.request_finished.send(sender=self.__class__)\n        self.assertEqual(len(connection.transaction_state), 0)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/resolve_url/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/resolve_url/models.py",
    "content": "\"\"\"\nRegression tests for the resolve_url function.\n\"\"\"\n\nfrom django.db import models\n\n\nclass UnimportantThing(models.Model):\n    importance = models.IntegerField()\n\n    def get_absolute_url(self):\n        return '/importance/%d/' % (self.importance,)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/resolve_url/tests.py",
    "content": "from __future__ import unicode_literals\n\nfrom django.core.urlresolvers import NoReverseMatch\nfrom django.contrib.auth.views import logout\nfrom django.utils.unittest import TestCase\nfrom django.shortcuts import resolve_url\n\nfrom .models import UnimportantThing\n\n\nclass ResolveUrlTests(TestCase):\n    \"\"\"\n    Tests for the ``resolve_url`` function.\n    \"\"\"\n\n    def test_url_path(self):\n        \"\"\"\n        Tests that passing a URL path to ``resolve_url`` will result in the\n        same url.\n        \"\"\"\n        self.assertEqual('/something/', resolve_url('/something/'))\n\n    def test_full_url(self):\n        \"\"\"\n        Tests that passing a full URL to ``resolve_url`` will result in the\n        same url.\n        \"\"\"\n        url = 'http://example.com/'\n        self.assertEqual(url, resolve_url(url))\n\n    def test_model(self):\n        \"\"\"\n        Tests that passing a model to ``resolve_url`` will result in\n        ``get_absolute_url`` being called on that model instance.\n        \"\"\"\n        m = UnimportantThing(importance=1)\n        self.assertEqual(m.get_absolute_url(), resolve_url(m))\n\n    def test_view_function(self):\n        \"\"\"\n        Tests that passing a view name to ``resolve_url`` will result in the\n        URL path mapping to that view name.\n        \"\"\"\n        resolved_url = resolve_url(logout)\n        self.assertEqual('/accounts/logout/', resolved_url)\n\n    def test_valid_view_name(self):\n        \"\"\"\n        Tests that passing a view function to ``resolve_url`` will result in\n        the URL path mapping to that view.\n        \"\"\"\n        resolved_url = resolve_url('django.contrib.auth.views.logout')\n        self.assertEqual('/accounts/logout/', resolved_url)\n\n    def test_domain(self):\n        \"\"\"\n        Tests that passing a domain to ``resolve_url`` returns the same domain.\n        \"\"\"\n        self.assertEqual(resolve_url('example.com'), 'example.com')\n\n    def test_non_view_callable_raises_no_reverse_match(self):\n        \"\"\"\n        Tests that passing a non-view callable into ``resolve_url`` raises a\n        ``NoReverseMatch`` exception.\n        \"\"\"\n        with self.assertRaises(NoReverseMatch):\n            resolve_url(lambda: 'asdf')\n\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/reverse_single_related/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/reverse_single_related/models.py",
    "content": "from django.db import models\n\n\nclass SourceManager(models.Manager):\n    def get_query_set(self):\n        return super(SourceManager, self).get_query_set().filter(is_public=True)\n\nclass Source(models.Model):\n    is_public = models.BooleanField()\n    objects = SourceManager()\n\nclass Item(models.Model):\n    source = models.ForeignKey(Source)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/reverse_single_related/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom django.test import TestCase\n\nfrom .models import Source, Item\n\n\nclass ReverseSingleRelatedTests(TestCase):\n    \"\"\"\n    Regression tests for an object that cannot access a single related\n    object due to a restrictive default manager.\n    \"\"\"\n\n    def test_reverse_single_related(self):\n\n        public_source = Source.objects.create(is_public=True)\n        public_item = Item.objects.create(source=public_source)\n\n        private_source = Source.objects.create(is_public=False)\n        private_item = Item.objects.create(source=private_source)\n\n        # Only one source is available via all() due to the custom default manager.\n        self.assertQuerysetEqual(\n                Source.objects.all(),\n                [\"<Source: Source object>\"]\n        )\n\n        self.assertEqual(public_item.source, public_source)\n\n        # Make sure that an item can still access its related source even if the default\n        # manager doesn't normally allow it.\n        self.assertEqual(private_item.source, private_source)\n\n        # If the manager is marked \"use_for_related_fields\", it'll get used instead\n        # of the \"bare\" queryset. Usually you'd define this as a property on the class,\n        # but this approximates that in a way that's easier in tests.\n        Source.objects.use_for_related_fields = True\n        private_item = Item.objects.get(pk=private_item.pk)\n        self.assertRaises(Source.DoesNotExist, lambda: private_item.source)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/select_related_onetoone/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/select_related_onetoone/models.py",
    "content": "from django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n@python_2_unicode_compatible\nclass User(models.Model):\n    username = models.CharField(max_length=100)\n    email = models.EmailField()\n\n    def __str__(self):\n        return self.username\n\n\n@python_2_unicode_compatible\nclass UserProfile(models.Model):\n    user = models.OneToOneField(User)\n    city = models.CharField(max_length=100)\n    state = models.CharField(max_length=2)\n\n    def __str__(self):\n        return \"%s, %s\" % (self.city, self.state)\n\n\n@python_2_unicode_compatible\nclass UserStatResult(models.Model):\n    results = models.CharField(max_length=50)\n\n    def __str__(self):\n        return 'UserStatResults, results = %s' % (self.results,)\n\n\n@python_2_unicode_compatible\nclass UserStat(models.Model):\n    user = models.OneToOneField(User, primary_key=True)\n    posts = models.IntegerField()\n    results = models.ForeignKey(UserStatResult)\n\n    def __str__(self):\n        return 'UserStat, posts = %s' % (self.posts,)\n\n\n@python_2_unicode_compatible\nclass StatDetails(models.Model):\n    base_stats = models.OneToOneField(UserStat)\n    comments = models.IntegerField()\n\n    def __str__(self):\n        return 'StatDetails, comments = %s' % (self.comments,)\n\n\nclass AdvancedUserStat(UserStat):\n    karma = models.IntegerField()\n\nclass Image(models.Model):\n    name = models.CharField(max_length=100)\n\n\nclass Product(models.Model):\n    name = models.CharField(max_length=100)\n    image = models.OneToOneField(Image, null=True)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/select_related_onetoone/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom django.test import TestCase\n\nfrom .models import (User, UserProfile, UserStat, UserStatResult, StatDetails,\n    AdvancedUserStat, Image, Product)\n\n\nclass ReverseSelectRelatedTestCase(TestCase):\n    def setUp(self):\n        user = User.objects.create(username=\"test\")\n        userprofile = UserProfile.objects.create(user=user, state=\"KS\",\n                                                 city=\"Lawrence\")\n        results = UserStatResult.objects.create(results='first results')\n        userstat = UserStat.objects.create(user=user, posts=150,\n                                           results=results)\n        details = StatDetails.objects.create(base_stats=userstat, comments=259)\n\n        user2 = User.objects.create(username=\"bob\")\n        results2 = UserStatResult.objects.create(results='moar results')\n        advstat = AdvancedUserStat.objects.create(user=user2, posts=200, karma=5,\n                                                  results=results2)\n        StatDetails.objects.create(base_stats=advstat, comments=250)\n\n    def test_basic(self):\n        with self.assertNumQueries(1):\n            u = User.objects.select_related(\"userprofile\").get(username=\"test\")\n            self.assertEqual(u.userprofile.state, \"KS\")\n\n    def test_follow_next_level(self):\n        with self.assertNumQueries(1):\n            u = User.objects.select_related(\"userstat__results\").get(username=\"test\")\n            self.assertEqual(u.userstat.posts, 150)\n            self.assertEqual(u.userstat.results.results, 'first results')\n\n    def test_follow_two(self):\n        with self.assertNumQueries(1):\n            u = User.objects.select_related(\"userprofile\", \"userstat\").get(username=\"test\")\n            self.assertEqual(u.userprofile.state, \"KS\")\n            self.assertEqual(u.userstat.posts, 150)\n\n    def test_follow_two_next_level(self):\n        with self.assertNumQueries(1):\n            u = User.objects.select_related(\"userstat__results\", \"userstat__statdetails\").get(username=\"test\")\n            self.assertEqual(u.userstat.results.results, 'first results')\n            self.assertEqual(u.userstat.statdetails.comments, 259)\n\n    def test_forward_and_back(self):\n        with self.assertNumQueries(1):\n            stat = UserStat.objects.select_related(\"user__userprofile\").get(user__username=\"test\")\n            self.assertEqual(stat.user.userprofile.state, 'KS')\n            self.assertEqual(stat.user.userstat.posts, 150)\n\n    def test_back_and_forward(self):\n        with self.assertNumQueries(1):\n            u = User.objects.select_related(\"userstat\").get(username=\"test\")\n            self.assertEqual(u.userstat.user.username, 'test')\n\n    def test_not_followed_by_default(self):\n        with self.assertNumQueries(2):\n            u = User.objects.select_related().get(username=\"test\")\n            self.assertEqual(u.userstat.posts, 150)\n\n    def test_follow_from_child_class(self):\n        with self.assertNumQueries(1):\n            stat = AdvancedUserStat.objects.select_related('user', 'statdetails').get(posts=200)\n            self.assertEqual(stat.statdetails.comments, 250)\n            self.assertEqual(stat.user.username, 'bob')\n\n    def test_follow_inheritance(self):\n        with self.assertNumQueries(1):\n            stat = UserStat.objects.select_related('user', 'advanceduserstat').get(posts=200)\n            self.assertEqual(stat.advanceduserstat.posts, 200)\n            self.assertEqual(stat.user.username, 'bob')\n            self.assertEqual(stat.advanceduserstat.user.username, 'bob')\n\n    def test_nullable_relation(self):\n        im = Image.objects.create(name=\"imag1\")\n        p1 = Product.objects.create(name=\"Django Plushie\", image=im)\n        p2 = Product.objects.create(name=\"Talking Django Plushie\")\n\n        with self.assertNumQueries(1):\n            result = sorted(Product.objects.select_related(\"image\"), key=lambda x: x.name)\n            self.assertEqual([p.name for p in result], [\"Django Plushie\", \"Talking Django Plushie\"])\n\n            self.assertEqual(p1.image, im)\n            # Check for ticket #13839\n            self.assertIsNone(p2.image)\n\n    def test_missing_reverse(self):\n        \"\"\"\n        Ticket #13839: select_related() should NOT cache None\n        for missing objects on a reverse 1-1 relation.\n        \"\"\"\n        with self.assertNumQueries(1):\n            user = User.objects.select_related('userprofile').get(username='bob')\n            with self.assertRaises(UserProfile.DoesNotExist):\n                user.userprofile\n\n    def test_nullable_missing_reverse(self):\n        \"\"\"\n        Ticket #13839: select_related() should NOT cache None\n        for missing objects on a reverse 0-1 relation.\n        \"\"\"\n        Image.objects.create(name=\"imag1\")\n\n        with self.assertNumQueries(1):\n            image = Image.objects.select_related('product').get()\n            with self.assertRaises(Product.DoesNotExist):\n                image.product\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/select_related_regress/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/select_related_regress/models.py",
    "content": "from __future__ import unicode_literals\n\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n@python_2_unicode_compatible\nclass Building(models.Model):\n    name = models.CharField(max_length=10)\n\n    def __str__(self):\n        return \"Building: %s\" % self.name\n\n@python_2_unicode_compatible\nclass Device(models.Model):\n    building = models.ForeignKey('Building')\n    name = models.CharField(max_length=10)\n\n    def __str__(self):\n        return \"device '%s' in building %s\" % (self.name, self.building)\n\n@python_2_unicode_compatible\nclass Port(models.Model):\n    device = models.ForeignKey('Device')\n    port_number = models.CharField(max_length=10)\n\n    def __str__(self):\n        return \"%s/%s\" % (self.device.name, self.port_number)\n\n@python_2_unicode_compatible\nclass Connection(models.Model):\n    start = models.ForeignKey(Port, related_name='connection_start',\n            unique=True)\n    end = models.ForeignKey(Port, related_name='connection_end', unique=True)\n\n    def __str__(self):\n        return \"%s to %s\" % (self.start, self.end)\n\n# Another non-tree hierarchy that exercises code paths similar to the above\n# example, but in a slightly different configuration.\nclass TUser(models.Model):\n    name = models.CharField(max_length=200)\n\nclass Person(models.Model):\n    user = models.ForeignKey(TUser, unique=True)\n\nclass Organizer(models.Model):\n    person = models.ForeignKey(Person)\n\nclass Student(models.Model):\n    person = models.ForeignKey(Person)\n\nclass Class(models.Model):\n    org = models.ForeignKey(Organizer)\n\nclass Enrollment(models.Model):\n    std = models.ForeignKey(Student)\n    cls = models.ForeignKey(Class)\n\n# Models for testing bug #8036.\nclass Country(models.Model):\n    name = models.CharField(max_length=50)\n\nclass State(models.Model):\n    name = models.CharField(max_length=50)\n    country = models.ForeignKey(Country)\n\nclass ClientStatus(models.Model):\n    name = models.CharField(max_length=50)\n\nclass Client(models.Model):\n    name = models.CharField(max_length=50)\n    state = models.ForeignKey(State, null=True)\n    status = models.ForeignKey(ClientStatus)\n\nclass SpecialClient(Client):\n    value = models.IntegerField()\n\n# Some model inheritance exercises\n@python_2_unicode_compatible\nclass Parent(models.Model):\n    name = models.CharField(max_length=10)\n\n    def __str__(self):\n        return self.name\n\nclass Child(Parent):\n    value = models.IntegerField()\n\n@python_2_unicode_compatible\nclass Item(models.Model):\n    name = models.CharField(max_length=10)\n    child = models.ForeignKey(Child, null=True)\n\n    def __str__(self):\n        return self.name\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/select_related_regress/tests.py",
    "content": "from __future__ import absolute_import, unicode_literals\n\nfrom django.test import TestCase\nfrom django.utils import six\n\nfrom .models import (Building, Child, Device, Port, Item, Country, Connection,\n    ClientStatus, State, Client, SpecialClient, TUser, Person, Student,\n    Organizer, Class, Enrollment)\n\n\nclass SelectRelatedRegressTests(TestCase):\n\n    def test_regression_7110(self):\n        \"\"\"\n        Regression test for bug #7110.\n\n        When using select_related(), we must query the\n        Device and Building tables using two different aliases (each) in order to\n        differentiate the start and end Connection fields. The net result is that\n        both the \"connections = ...\" queries here should give the same results\n        without pulling in more than the absolute minimum number of tables\n        (history has shown that it's easy to make a mistake in the implementation\n        and include some unnecessary bonus joins).\n        \"\"\"\n\n        b=Building.objects.create(name='101')\n        dev1=Device.objects.create(name=\"router\", building=b)\n        dev2=Device.objects.create(name=\"switch\", building=b)\n        dev3=Device.objects.create(name=\"server\", building=b)\n        port1=Port.objects.create(port_number='4',device=dev1)\n        port2=Port.objects.create(port_number='7',device=dev2)\n        port3=Port.objects.create(port_number='1',device=dev3)\n        c1=Connection.objects.create(start=port1, end=port2)\n        c2=Connection.objects.create(start=port2, end=port3)\n\n        connections=Connection.objects.filter(start__device__building=b, end__device__building=b).order_by('id')\n        self.assertEqual([(c.id, six.text_type(c.start), six.text_type(c.end)) for c in connections],\n            [(c1.id, 'router/4', 'switch/7'), (c2.id, 'switch/7', 'server/1')])\n\n        connections=Connection.objects.filter(start__device__building=b, end__device__building=b).select_related().order_by('id')\n        self.assertEqual([(c.id, six.text_type(c.start), six.text_type(c.end)) for c in connections],\n            [(c1.id, 'router/4', 'switch/7'), (c2.id, 'switch/7', 'server/1')])\n\n        # This final query should only have seven tables (port, device and building\n        # twice each, plus connection once). Thus, 6 joins plus the FROM table.\n        self.assertEqual(str(connections.query).count(\" JOIN \"), 6)\n\n\n    def test_regression_8106(self):\n        \"\"\"\n        Regression test for bug #8106.\n\n        Same sort of problem as the previous test, but this time there are\n        more extra tables to pull in as part of the select_related() and some\n        of them could potentially clash (so need to be kept separate).\n        \"\"\"\n\n        us = TUser.objects.create(name=\"std\")\n        usp = Person.objects.create(user=us)\n        uo = TUser.objects.create(name=\"org\")\n        uop = Person.objects.create(user=uo)\n        s = Student.objects.create(person = usp)\n        o = Organizer.objects.create(person = uop)\n        c = Class.objects.create(org=o)\n        e = Enrollment.objects.create(std=s, cls=c)\n\n        e_related = Enrollment.objects.all().select_related()[0]\n        self.assertEqual(e_related.std.person.user.name, \"std\")\n        self.assertEqual(e_related.cls.org.person.user.name, \"org\")\n\n    def test_regression_8036(self):\n        \"\"\"\n        Regression test for bug #8036\n\n        the first related model in the tests below\n        (\"state\") is empty and we try to select the more remotely related\n        state__country. The regression here was not skipping the empty column results\n        for country before getting status.\n        \"\"\"\n\n        australia = Country.objects.create(name='Australia')\n        active = ClientStatus.objects.create(name='active')\n        client = Client.objects.create(name='client', status=active)\n\n        self.assertEqual(client.status, active)\n        self.assertEqual(Client.objects.select_related()[0].status, active)\n        self.assertEqual(Client.objects.select_related('state')[0].status, active)\n        self.assertEqual(Client.objects.select_related('state', 'status')[0].status, active)\n        self.assertEqual(Client.objects.select_related('state__country')[0].status, active)\n        self.assertEqual(Client.objects.select_related('state__country', 'status')[0].status, active)\n        self.assertEqual(Client.objects.select_related('status')[0].status, active)\n\n    def test_multi_table_inheritance(self):\n        \"\"\" Exercising select_related() with multi-table model inheritance. \"\"\"\n        c1 = Child.objects.create(name=\"child1\", value=42)\n        i1 = Item.objects.create(name=\"item1\", child=c1)\n        i2 = Item.objects.create(name=\"item2\")\n\n        self.assertQuerysetEqual(\n                Item.objects.select_related(\"child\").order_by(\"name\"),\n                [\"<Item: item1>\", \"<Item: item2>\"]\n        )\n\n    def test_regression_12851(self):\n        \"\"\"\n        Regression for #12851\n\n        Deferred fields are used correctly if you select_related a subset\n        of fields.\n        \"\"\"\n        australia = Country.objects.create(name='Australia')\n        active = ClientStatus.objects.create(name='active')\n\n        wa = State.objects.create(name=\"Western Australia\", country=australia)\n        c1 = Client.objects.create(name='Brian Burke', state=wa, status=active)\n        burke = Client.objects.select_related('state').defer('state__name').get(name='Brian Burke')\n\n        self.assertEqual(burke.name, 'Brian Burke')\n        self.assertEqual(burke.state.name, 'Western Australia')\n\n        # Still works if we're dealing with an inherited class\n        sc1 = SpecialClient.objects.create(name='Troy Buswell', state=wa, status=active, value=42)\n        troy = SpecialClient.objects.select_related('state').defer('state__name').get(name='Troy Buswell')\n\n        self.assertEqual(troy.name, 'Troy Buswell')\n        self.assertEqual(troy.value, 42)\n        self.assertEqual(troy.state.name, 'Western Australia')\n\n        # Still works if we defer an attribute on the inherited class\n        troy = SpecialClient.objects.select_related('state').defer('value', 'state__name').get(name='Troy Buswell')\n\n        self.assertEqual(troy.name, 'Troy Buswell')\n        self.assertEqual(troy.value, 42)\n        self.assertEqual(troy.state.name, 'Western Australia')\n\n        # Also works if you use only, rather than defer\n        troy = SpecialClient.objects.select_related('state').only('name', 'state').get(name='Troy Buswell')\n\n        self.assertEqual(troy.name, 'Troy Buswell')\n        self.assertEqual(troy.value, 42)\n        self.assertEqual(troy.state.name, 'Western Australia')\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/serializers_regress/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/serializers_regress/models.py",
    "content": "\"\"\"\nA test spanning all the capabilities of all the serializers.\n\nThis class sets up a model for each model field type\n(except for image types, because of the PIL dependency).\n\"\"\"\n\nfrom django.db import models\nfrom django.contrib.contenttypes import generic\nfrom django.contrib.contenttypes.models import ContentType\n\n# The following classes are for testing basic data\n# marshalling, including NULL values, where allowed.\n\nclass BooleanData(models.Model):\n    data = models.BooleanField()\n\nclass CharData(models.Model):\n    data = models.CharField(max_length=30, null=True)\n\nclass DateData(models.Model):\n    data = models.DateField(null=True)\n\nclass DateTimeData(models.Model):\n    data = models.DateTimeField(null=True)\n\nclass DecimalData(models.Model):\n    data = models.DecimalField(null=True, decimal_places=3, max_digits=5)\n\nclass EmailData(models.Model):\n    data = models.EmailField(null=True)\n\nclass FileData(models.Model):\n    data = models.FileField(null=True, upload_to='/foo/bar')\n\nclass FilePathData(models.Model):\n    data = models.FilePathField(null=True)\n\nclass FloatData(models.Model):\n    data = models.FloatField(null=True)\n\nclass IntegerData(models.Model):\n    data = models.IntegerField(null=True)\n\nclass BigIntegerData(models.Model):\n    data = models.BigIntegerField(null=True)\n\n# class ImageData(models.Model):\n#    data = models.ImageField(null=True)\n\nclass IPAddressData(models.Model):\n    data = models.IPAddressField(null=True)\n\nclass GenericIPAddressData(models.Model):\n    data = models.GenericIPAddressField(null=True)\n\nclass NullBooleanData(models.Model):\n    data = models.NullBooleanField(null=True)\n\nclass PositiveIntegerData(models.Model):\n    data = models.PositiveIntegerField(null=True)\n\nclass PositiveSmallIntegerData(models.Model):\n    data = models.PositiveSmallIntegerField(null=True)\n\nclass SlugData(models.Model):\n    data = models.SlugField(null=True)\n\nclass SmallData(models.Model):\n    data = models.SmallIntegerField(null=True)\n\nclass TextData(models.Model):\n    data = models.TextField(null=True)\n\nclass TimeData(models.Model):\n    data = models.TimeField(null=True)\n\nclass Tag(models.Model):\n    \"\"\"A tag on an item.\"\"\"\n    data = models.SlugField()\n    content_type = models.ForeignKey(ContentType)\n    object_id = models.PositiveIntegerField()\n\n    content_object = generic.GenericForeignKey()\n\n    class Meta:\n        ordering = [\"data\"]\n\nclass GenericData(models.Model):\n    data = models.CharField(max_length=30)\n\n    tags = generic.GenericRelation(Tag)\n\n# The following test classes are all for validation\n# of related objects; in particular, forward, backward,\n# and self references.\n\nclass Anchor(models.Model):\n    \"\"\"This is a model that can be used as\n    something for other models to point at\"\"\"\n\n    data = models.CharField(max_length=30)\n\n    class Meta:\n        ordering = ('id',)\n\nclass NaturalKeyAnchorManager(models.Manager):\n    def get_by_natural_key(self, data):\n        return self.get(data=data)\n\nclass NaturalKeyAnchor(models.Model):\n    objects = NaturalKeyAnchorManager()\n\n    data = models.CharField(max_length=100, unique=True)\n\n    def natural_key(self):\n        return (self.data,)\n\nclass UniqueAnchor(models.Model):\n    \"\"\"This is a model that can be used as\n    something for other models to point at\"\"\"\n\n    data = models.CharField(unique=True, max_length=30)\n\nclass FKData(models.Model):\n    data = models.ForeignKey(Anchor, null=True)\n\nclass FKDataNaturalKey(models.Model):\n    data = models.ForeignKey(NaturalKeyAnchor, null=True)\n\nclass M2MData(models.Model):\n    data = models.ManyToManyField(Anchor, null=True)\n\nclass O2OData(models.Model):\n    # One to one field can't be null here, since it is a PK.\n    data = models.OneToOneField(Anchor, primary_key=True)\n\nclass FKSelfData(models.Model):\n    data = models.ForeignKey('self', null=True)\n\nclass M2MSelfData(models.Model):\n    data = models.ManyToManyField('self', null=True, symmetrical=False)\n\nclass FKDataToField(models.Model):\n    data = models.ForeignKey(UniqueAnchor, null=True, to_field='data')\n\nclass FKDataToO2O(models.Model):\n    data = models.ForeignKey(O2OData, null=True)\n\nclass M2MIntermediateData(models.Model):\n    data = models.ManyToManyField(Anchor, null=True, through='Intermediate')\n\nclass Intermediate(models.Model):\n    left = models.ForeignKey(M2MIntermediateData)\n    right = models.ForeignKey(Anchor)\n    extra = models.CharField(max_length=30, blank=True, default=\"doesn't matter\")\n\n# The following test classes are for validating the\n# deserialization of objects that use a user-defined\n# field as the primary key.\n# Some of these data types have been commented out\n# because they can't be used as a primary key on one\n# or all database backends.\n\nclass BooleanPKData(models.Model):\n    data = models.BooleanField(primary_key=True)\n\nclass CharPKData(models.Model):\n    data = models.CharField(max_length=30, primary_key=True)\n\n# class DatePKData(models.Model):\n#    data = models.DateField(primary_key=True)\n\n# class DateTimePKData(models.Model):\n#    data = models.DateTimeField(primary_key=True)\n\nclass DecimalPKData(models.Model):\n    data = models.DecimalField(primary_key=True, decimal_places=3, max_digits=5)\n\nclass EmailPKData(models.Model):\n    data = models.EmailField(primary_key=True)\n\n# class FilePKData(models.Model):\n#    data = models.FileField(primary_key=True, upload_to='/foo/bar')\n\nclass FilePathPKData(models.Model):\n    data = models.FilePathField(primary_key=True)\n\nclass FloatPKData(models.Model):\n    data = models.FloatField(primary_key=True)\n\nclass IntegerPKData(models.Model):\n    data = models.IntegerField(primary_key=True)\n\n# class ImagePKData(models.Model):\n#    data = models.ImageField(primary_key=True)\n\nclass IPAddressPKData(models.Model):\n    data = models.IPAddressField(primary_key=True)\n\nclass GenericIPAddressPKData(models.Model):\n    data = models.GenericIPAddressField(primary_key=True)\n\n# This is just a Boolean field with null=True, and we can't test a PK value of NULL.\n# class NullBooleanPKData(models.Model):\n#     data = models.NullBooleanField(primary_key=True)\n\nclass PositiveIntegerPKData(models.Model):\n    data = models.PositiveIntegerField(primary_key=True)\n\nclass PositiveSmallIntegerPKData(models.Model):\n    data = models.PositiveSmallIntegerField(primary_key=True)\n\nclass SlugPKData(models.Model):\n    data = models.SlugField(primary_key=True)\n\nclass SmallPKData(models.Model):\n    data = models.SmallIntegerField(primary_key=True)\n\n# class TextPKData(models.Model):\n#     data = models.TextField(primary_key=True)\n\n# class TimePKData(models.Model):\n#    data = models.TimeField(primary_key=True)\n\nclass ComplexModel(models.Model):\n    field1 = models.CharField(max_length=10)\n    field2 = models.CharField(max_length=10)\n    field3 = models.CharField(max_length=10)\n\n# Tests for handling fields with pre_save functions, or\n# models with save functions that modify data\nclass AutoNowDateTimeData(models.Model):\n    data = models.DateTimeField(null=True, auto_now=True)\n\nclass ModifyingSaveData(models.Model):\n    data = models.IntegerField(null=True)\n\n    def save(self):\n        \"A save method that modifies the data in the object\"\n        self.data = 666\n        super(ModifyingSaveData, self).save(raw)\n\n# Tests for serialization of models using inheritance.\n# Regression for #7202, #7350\nclass AbstractBaseModel(models.Model):\n    parent_data = models.IntegerField()\n    class Meta:\n        abstract = True\n\nclass InheritAbstractModel(AbstractBaseModel):\n    child_data = models.IntegerField()\n\nclass BaseModel(models.Model):\n    parent_data = models.IntegerField()\n\nclass InheritBaseModel(BaseModel):\n    child_data = models.IntegerField()\n\nclass ExplicitInheritBaseModel(BaseModel):\n    parent = models.OneToOneField(BaseModel)\n    child_data = models.IntegerField()\n\nclass ProxyBaseModel(BaseModel):\n    class Meta:\n        proxy = True\n\nclass ProxyProxyBaseModel(ProxyBaseModel):\n    class Meta:\n        proxy = True\n\nclass LengthModel(models.Model):\n    data = models.IntegerField()\n\n    def __len__(self):\n        return self.data\n\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/serializers_regress/tests.py",
    "content": "\"\"\"\nA test spanning all the capabilities of all the serializers.\n\nThis class defines sample data and a dynamically generated\ntest case that is capable of testing the capabilities of\nthe serializers. This includes all valid data values, plus\nforward, backwards and self references.\n\"\"\"\nfrom __future__ import absolute_import, unicode_literals\n\nimport datetime\nimport decimal\nfrom django.core.serializers.xml_serializer import DTDForbidden\n\ntry:\n    import yaml\nexcept ImportError:\n    yaml = None\n\nfrom django.core import serializers\nfrom django.core.serializers import SerializerDoesNotExist\nfrom django.core.serializers.base import DeserializationError\nfrom django.db import connection, models\nfrom django.http import HttpResponse\nfrom django.test import TestCase\nfrom django.utils import six\nfrom django.utils.functional import curry\nfrom django.utils.unittest import skipUnless\n\nfrom .models import (BooleanData, CharData, DateData, DateTimeData, EmailData,\n    FileData, FilePathData, DecimalData, FloatData, IntegerData, IPAddressData,\n    GenericIPAddressData, NullBooleanData, PositiveIntegerData,\n    PositiveSmallIntegerData, SlugData, SmallData, TextData, TimeData,\n    GenericData, Anchor, UniqueAnchor, FKData, M2MData, O2OData,\n    FKSelfData, M2MSelfData, FKDataToField, FKDataToO2O, M2MIntermediateData,\n    Intermediate, BooleanPKData, CharPKData, EmailPKData, FilePathPKData,\n    DecimalPKData, FloatPKData, IntegerPKData, IPAddressPKData,\n    GenericIPAddressPKData, PositiveIntegerPKData,\n    PositiveSmallIntegerPKData, SlugPKData, SmallPKData,\n    AutoNowDateTimeData, ModifyingSaveData, InheritAbstractModel, BaseModel,\n    ExplicitInheritBaseModel, InheritBaseModel, ProxyBaseModel,\n    ProxyProxyBaseModel, BigIntegerData, LengthModel, Tag, ComplexModel,\n    NaturalKeyAnchor, FKDataNaturalKey)\n\n# A set of functions that can be used to recreate\n# test data objects of various kinds.\n# The save method is a raw base model save, to make\n# sure that the data in the database matches the\n# exact test case.\ndef data_create(pk, klass, data):\n    instance = klass(id=pk)\n    instance.data = data\n    models.Model.save_base(instance, raw=True)\n    return [instance]\n\ndef generic_create(pk, klass, data):\n    instance = klass(id=pk)\n    instance.data = data[0]\n    models.Model.save_base(instance, raw=True)\n    for tag in data[1:]:\n        instance.tags.create(data=tag)\n    return [instance]\n\ndef fk_create(pk, klass, data):\n    instance = klass(id=pk)\n    setattr(instance, 'data_id', data)\n    models.Model.save_base(instance, raw=True)\n    return [instance]\n\ndef m2m_create(pk, klass, data):\n    instance = klass(id=pk)\n    models.Model.save_base(instance, raw=True)\n    instance.data = data\n    return [instance]\n\ndef im2m_create(pk, klass, data):\n    instance = klass(id=pk)\n    models.Model.save_base(instance, raw=True)\n    return [instance]\n\ndef im_create(pk, klass, data):\n    instance = klass(id=pk)\n    instance.right_id = data['right']\n    instance.left_id = data['left']\n    if 'extra' in data:\n        instance.extra = data['extra']\n    models.Model.save_base(instance, raw=True)\n    return [instance]\n\ndef o2o_create(pk, klass, data):\n    instance = klass()\n    instance.data_id = data\n    models.Model.save_base(instance, raw=True)\n    return [instance]\n\ndef pk_create(pk, klass, data):\n    instance = klass()\n    instance.data = data\n    models.Model.save_base(instance, raw=True)\n    return [instance]\n\ndef inherited_create(pk, klass, data):\n    instance = klass(id=pk,**data)\n    # This isn't a raw save because:\n    #  1) we're testing inheritance, not field behavior, so none\n    #     of the field values need to be protected.\n    #  2) saving the child class and having the parent created\n    #     automatically is easier than manually creating both.\n    models.Model.save(instance)\n    created = [instance]\n    for klass,field in instance._meta.parents.items():\n        created.append(klass.objects.get(id=pk))\n    return created\n\n# A set of functions that can be used to compare\n# test data objects of various kinds\ndef data_compare(testcase, pk, klass, data):\n    instance = klass.objects.get(id=pk)\n    testcase.assertEqual(data, instance.data,\n         \"Objects with PK=%d not equal; expected '%s' (%s), got '%s' (%s)\" % (\n            pk, data, type(data), instance.data, type(instance.data))\n    )\n\ndef generic_compare(testcase, pk, klass, data):\n    instance = klass.objects.get(id=pk)\n    testcase.assertEqual(data[0], instance.data)\n    testcase.assertEqual(data[1:], [t.data for t in instance.tags.order_by('id')])\n\ndef fk_compare(testcase, pk, klass, data):\n    instance = klass.objects.get(id=pk)\n    testcase.assertEqual(data, instance.data_id)\n\ndef m2m_compare(testcase, pk, klass, data):\n    instance = klass.objects.get(id=pk)\n    testcase.assertEqual(data, [obj.id for obj in instance.data.order_by('id')])\n\ndef im2m_compare(testcase, pk, klass, data):\n    instance = klass.objects.get(id=pk)\n    #actually nothing else to check, the instance just should exist\n\ndef im_compare(testcase, pk, klass, data):\n    instance = klass.objects.get(id=pk)\n    testcase.assertEqual(data['left'], instance.left_id)\n    testcase.assertEqual(data['right'], instance.right_id)\n    if 'extra' in data:\n        testcase.assertEqual(data['extra'], instance.extra)\n    else:\n        testcase.assertEqual(\"doesn't matter\", instance.extra)\n\ndef o2o_compare(testcase, pk, klass, data):\n    instance = klass.objects.get(data=data)\n    testcase.assertEqual(data, instance.data_id)\n\ndef pk_compare(testcase, pk, klass, data):\n    instance = klass.objects.get(data=data)\n    testcase.assertEqual(data, instance.data)\n\ndef inherited_compare(testcase, pk, klass, data):\n    instance = klass.objects.get(id=pk)\n    for key,value in data.items():\n        testcase.assertEqual(value, getattr(instance,key))\n\n# Define some data types. Each data type is\n# actually a pair of functions; one to create\n# and one to compare objects of that type\ndata_obj = (data_create, data_compare)\ngeneric_obj = (generic_create, generic_compare)\nfk_obj = (fk_create, fk_compare)\nm2m_obj = (m2m_create, m2m_compare)\nim2m_obj = (im2m_create, im2m_compare)\nim_obj = (im_create, im_compare)\no2o_obj = (o2o_create, o2o_compare)\npk_obj = (pk_create, pk_compare)\ninherited_obj = (inherited_create, inherited_compare)\n\ntest_data = [\n    # Format: (data type, PK value, Model Class, data)\n    (data_obj, 1, BooleanData, True),\n    (data_obj, 2, BooleanData, False),\n    (data_obj, 10, CharData, \"Test Char Data\"),\n    (data_obj, 11, CharData, \"\"),\n    (data_obj, 12, CharData, \"None\"),\n    (data_obj, 13, CharData, \"null\"),\n    (data_obj, 14, CharData, \"NULL\"),\n    (data_obj, 15, CharData, None),\n    # (We use something that will fit into a latin1 database encoding here,\n    # because that is still the default used on many system setups.)\n    (data_obj, 16, CharData, '\\xa5'),\n    (data_obj, 20, DateData, datetime.date(2006,6,16)),\n    (data_obj, 21, DateData, None),\n    (data_obj, 30, DateTimeData, datetime.datetime(2006,6,16,10,42,37)),\n    (data_obj, 31, DateTimeData, None),\n    (data_obj, 40, EmailData, \"hovercraft@example.com\"),\n    (data_obj, 41, EmailData, None),\n    (data_obj, 42, EmailData, \"\"),\n    (data_obj, 50, FileData, 'file:///foo/bar/whiz.txt'),\n#     (data_obj, 51, FileData, None),\n    (data_obj, 52, FileData, \"\"),\n    (data_obj, 60, FilePathData, \"/foo/bar/whiz.txt\"),\n    (data_obj, 61, FilePathData, None),\n    (data_obj, 62, FilePathData, \"\"),\n    (data_obj, 70, DecimalData, decimal.Decimal('12.345')),\n    (data_obj, 71, DecimalData, decimal.Decimal('-12.345')),\n    (data_obj, 72, DecimalData, decimal.Decimal('0.0')),\n    (data_obj, 73, DecimalData, None),\n    (data_obj, 74, FloatData, 12.345),\n    (data_obj, 75, FloatData, -12.345),\n    (data_obj, 76, FloatData, 0.0),\n    (data_obj, 77, FloatData, None),\n    (data_obj, 80, IntegerData, 123456789),\n    (data_obj, 81, IntegerData, -123456789),\n    (data_obj, 82, IntegerData, 0),\n    (data_obj, 83, IntegerData, None),\n    #(XX, ImageData\n    (data_obj, 90, IPAddressData, \"127.0.0.1\"),\n    (data_obj, 91, IPAddressData, None),\n    (data_obj, 95, GenericIPAddressData, \"fe80:1424:2223:6cff:fe8a:2e8a:2151:abcd\"),\n    (data_obj, 96, GenericIPAddressData, None),\n    (data_obj, 100, NullBooleanData, True),\n    (data_obj, 101, NullBooleanData, False),\n    (data_obj, 102, NullBooleanData, None),\n    (data_obj, 120, PositiveIntegerData, 123456789),\n    (data_obj, 121, PositiveIntegerData, None),\n    (data_obj, 130, PositiveSmallIntegerData, 12),\n    (data_obj, 131, PositiveSmallIntegerData, None),\n    (data_obj, 140, SlugData, \"this-is-a-slug\"),\n    (data_obj, 141, SlugData, None),\n    (data_obj, 142, SlugData, \"\"),\n    (data_obj, 150, SmallData, 12),\n    (data_obj, 151, SmallData, -12),\n    (data_obj, 152, SmallData, 0),\n    (data_obj, 153, SmallData, None),\n    (data_obj, 160, TextData, \"\"\"This is a long piece of text.\nIt contains line breaks.\nSeveral of them.\nThe end.\"\"\"),\n    (data_obj, 161, TextData, \"\"),\n    (data_obj, 162, TextData, None),\n    (data_obj, 170, TimeData, datetime.time(10,42,37)),\n    (data_obj, 171, TimeData, None),\n\n    (generic_obj, 200, GenericData, ['Generic Object 1', 'tag1', 'tag2']),\n    (generic_obj, 201, GenericData, ['Generic Object 2', 'tag2', 'tag3']),\n\n    (data_obj, 300, Anchor, \"Anchor 1\"),\n    (data_obj, 301, Anchor, \"Anchor 2\"),\n    (data_obj, 302, UniqueAnchor, \"UAnchor 1\"),\n\n    (fk_obj, 400, FKData, 300), # Post reference\n    (fk_obj, 401, FKData, 500), # Pre reference\n    (fk_obj, 402, FKData, None), # Empty reference\n\n    (m2m_obj, 410, M2MData, []), # Empty set\n    (m2m_obj, 411, M2MData, [300,301]), # Post reference\n    (m2m_obj, 412, M2MData, [500,501]), # Pre reference\n    (m2m_obj, 413, M2MData, [300,301,500,501]), # Pre and Post reference\n\n    (o2o_obj, None, O2OData, 300), # Post reference\n    (o2o_obj, None, O2OData, 500), # Pre reference\n\n    (fk_obj, 430, FKSelfData, 431), # Pre reference\n    (fk_obj, 431, FKSelfData, 430), # Post reference\n    (fk_obj, 432, FKSelfData, None), # Empty reference\n\n    (m2m_obj, 440, M2MSelfData, []),\n    (m2m_obj, 441, M2MSelfData, []),\n    (m2m_obj, 442, M2MSelfData, [440, 441]),\n    (m2m_obj, 443, M2MSelfData, [445, 446]),\n    (m2m_obj, 444, M2MSelfData, [440, 441, 445, 446]),\n    (m2m_obj, 445, M2MSelfData, []),\n    (m2m_obj, 446, M2MSelfData, []),\n\n    (fk_obj, 450, FKDataToField, \"UAnchor 1\"),\n    (fk_obj, 451, FKDataToField, \"UAnchor 2\"),\n    (fk_obj, 452, FKDataToField, None),\n\n    (fk_obj, 460, FKDataToO2O, 300),\n\n    (im2m_obj, 470, M2MIntermediateData, None),\n\n    #testing post- and prereferences and extra fields\n    (im_obj, 480, Intermediate, {'right': 300, 'left': 470}),\n    (im_obj, 481, Intermediate, {'right': 300, 'left': 490}),\n    (im_obj, 482, Intermediate, {'right': 500, 'left': 470}),\n    (im_obj, 483, Intermediate, {'right': 500, 'left': 490}),\n    (im_obj, 484, Intermediate, {'right': 300, 'left': 470, 'extra': \"extra\"}),\n    (im_obj, 485, Intermediate, {'right': 300, 'left': 490, 'extra': \"extra\"}),\n    (im_obj, 486, Intermediate, {'right': 500, 'left': 470, 'extra': \"extra\"}),\n    (im_obj, 487, Intermediate, {'right': 500, 'left': 490, 'extra': \"extra\"}),\n\n    (im2m_obj, 490, M2MIntermediateData, []),\n\n    (data_obj, 500, Anchor, \"Anchor 3\"),\n    (data_obj, 501, Anchor, \"Anchor 4\"),\n    (data_obj, 502, UniqueAnchor, \"UAnchor 2\"),\n\n    (pk_obj, 601, BooleanPKData, True),\n    (pk_obj, 602, BooleanPKData, False),\n    (pk_obj, 610, CharPKData, \"Test Char PKData\"),\n#     (pk_obj, 620, DatePKData, datetime.date(2006,6,16)),\n#     (pk_obj, 630, DateTimePKData, datetime.datetime(2006,6,16,10,42,37)),\n    (pk_obj, 640, EmailPKData, \"hovercraft@example.com\"),\n#     (pk_obj, 650, FilePKData, 'file:///foo/bar/whiz.txt'),\n    (pk_obj, 660, FilePathPKData, \"/foo/bar/whiz.txt\"),\n    (pk_obj, 670, DecimalPKData, decimal.Decimal('12.345')),\n    (pk_obj, 671, DecimalPKData, decimal.Decimal('-12.345')),\n    (pk_obj, 672, DecimalPKData, decimal.Decimal('0.0')),\n    (pk_obj, 673, FloatPKData, 12.345),\n    (pk_obj, 674, FloatPKData, -12.345),\n    (pk_obj, 675, FloatPKData, 0.0),\n    (pk_obj, 680, IntegerPKData, 123456789),\n    (pk_obj, 681, IntegerPKData, -123456789),\n    (pk_obj, 682, IntegerPKData, 0),\n#     (XX, ImagePKData\n    (pk_obj, 690, IPAddressPKData, \"127.0.0.1\"),\n    (pk_obj, 695, GenericIPAddressPKData, \"fe80:1424:2223:6cff:fe8a:2e8a:2151:abcd\"),\n    # (pk_obj, 700, NullBooleanPKData, True),\n    # (pk_obj, 701, NullBooleanPKData, False),\n    (pk_obj, 720, PositiveIntegerPKData, 123456789),\n    (pk_obj, 730, PositiveSmallIntegerPKData, 12),\n    (pk_obj, 740, SlugPKData, \"this-is-a-slug\"),\n    (pk_obj, 750, SmallPKData, 12),\n    (pk_obj, 751, SmallPKData, -12),\n    (pk_obj, 752, SmallPKData, 0),\n#     (pk_obj, 760, TextPKData, \"\"\"This is a long piece of text.\n# It contains line breaks.\n# Several of them.\n# The end.\"\"\"),\n#    (pk_obj, 770, TimePKData, datetime.time(10,42,37)),\n#     (pk_obj, 790, XMLPKData, \"<foo></foo>\"),\n\n    (data_obj, 800, AutoNowDateTimeData, datetime.datetime(2006,6,16,10,42,37)),\n    (data_obj, 810, ModifyingSaveData, 42),\n\n    (inherited_obj, 900, InheritAbstractModel, {'child_data':37,'parent_data':42}),\n    (inherited_obj, 910, ExplicitInheritBaseModel, {'child_data':37,'parent_data':42}),\n    (inherited_obj, 920, InheritBaseModel, {'child_data':37,'parent_data':42}),\n\n    (data_obj, 1000, BigIntegerData, 9223372036854775807),\n    (data_obj, 1001, BigIntegerData, -9223372036854775808),\n    (data_obj, 1002, BigIntegerData, 0),\n    (data_obj, 1003, BigIntegerData, None),\n    (data_obj, 1004, LengthModel, 0),\n    (data_obj, 1005, LengthModel, 1),\n]\n\nnatural_key_test_data = [\n    (data_obj, 1100, NaturalKeyAnchor, \"Natural Key Anghor\"),\n    (fk_obj, 1101, FKDataNaturalKey, 1100),\n    (fk_obj, 1102, FKDataNaturalKey, None),\n]\n\n# Because Oracle treats the empty string as NULL, Oracle is expected to fail\n# when field.empty_strings_allowed is True and the value is None; skip these\n# tests.\nif connection.features.interprets_empty_strings_as_nulls:\n    test_data = [data for data in test_data\n                 if not (data[0] == data_obj and\n                         data[2]._meta.get_field('data').empty_strings_allowed and\n                         data[3] is None)]\n\n# Regression test for #8651 -- a FK to an object iwth PK of 0\n# This won't work on MySQL since it won't let you create an object\n# with a primary key of 0,\nif connection.features.allows_primary_key_0:\n    test_data.extend([\n        (data_obj, 0, Anchor, \"Anchor 0\"),\n        (fk_obj, 465, FKData, 0),\n    ])\n\n# Dynamically create serializer tests to ensure that all\n# registered serializers are automatically tested.\nclass SerializerTests(TestCase):\n    def test_get_unknown_serializer(self):\n        \"\"\"\n        #15889: get_serializer('nonsense') raises a SerializerDoesNotExist\n        \"\"\"\n        with self.assertRaises(SerializerDoesNotExist):\n            serializers.get_serializer(\"nonsense\")\n\n        with self.assertRaises(KeyError):\n            serializers.get_serializer(\"nonsense\")\n\n        # SerializerDoesNotExist is instantiated with the nonexistent format\n        with self.assertRaises(SerializerDoesNotExist) as cm:\n            serializers.get_serializer(\"nonsense\")\n        self.assertEqual(cm.exception.args, (\"nonsense\",))\n\n    def test_unregister_unkown_serializer(self):\n        with self.assertRaises(SerializerDoesNotExist):\n            serializers.unregister_serializer(\"nonsense\")\n\n    def test_get_unkown_deserializer(self):\n        with self.assertRaises(SerializerDoesNotExist):\n            serializers.get_deserializer(\"nonsense\")\n\n    def test_json_deserializer_exception(self):\n        with self.assertRaises(DeserializationError):\n            for obj in serializers.deserialize(\"json\", \"\"\"[{\"pk\":1}\"\"\"):\n                pass\n\n    @skipUnless(yaml, \"PyYAML not installed\")\n    def test_yaml_deserializer_exception(self):\n        with self.assertRaises(DeserializationError):\n            for obj in serializers.deserialize(\"yaml\", \"{\"):\n                pass\n\n    def test_serialize_proxy_model(self):\n        BaseModel.objects.create(parent_data=1)\n        base_objects = BaseModel.objects.all()\n        proxy_objects = ProxyBaseModel.objects.all()\n        proxy_proxy_objects = ProxyProxyBaseModel.objects.all()\n        base_data = serializers.serialize(\"json\", base_objects)\n        proxy_data = serializers.serialize(\"json\", proxy_objects)\n        proxy_proxy_data = serializers.serialize(\"json\", proxy_proxy_objects)\n        self.assertEqual(base_data, proxy_data.replace('proxy', ''))\n        self.assertEqual(base_data, proxy_proxy_data.replace('proxy', ''))\n\n\ndef serializerTest(format, self):\n\n    # Create all the objects defined in the test data\n    objects = []\n    instance_count = {}\n    for (func, pk, klass, datum) in test_data:\n        with connection.constraint_checks_disabled():\n            objects.extend(func[0](pk, klass, datum))\n\n    # Get a count of the number of objects created for each class\n    for klass in instance_count:\n        instance_count[klass] = klass.objects.count()\n\n    # Add the generic tagged objects to the object list\n    objects.extend(Tag.objects.all())\n\n    # Serialize the test database\n    serialized_data = serializers.serialize(format, objects, indent=2)\n\n    for obj in serializers.deserialize(format, serialized_data):\n        obj.save()\n\n    # Assert that the deserialized data is the same\n    # as the original source\n    for (func, pk, klass, datum) in test_data:\n        func[1](self, pk, klass, datum)\n\n    # Assert that the number of objects deserialized is the\n    # same as the number that was serialized.\n    for klass, count in instance_count.items():\n        self.assertEqual(count, klass.objects.count())\n\ndef naturalKeySerializerTest(format, self):\n    # Create all the objects defined in the test data\n    objects = []\n    instance_count = {}\n    for (func, pk, klass, datum) in natural_key_test_data:\n        with connection.constraint_checks_disabled():\n            objects.extend(func[0](pk, klass, datum))\n\n    # Get a count of the number of objects created for each class\n    for klass in instance_count:\n        instance_count[klass] = klass.objects.count()\n\n    # Serialize the test database\n    serialized_data = serializers.serialize(format, objects, indent=2,\n        use_natural_keys=True)\n\n    for obj in serializers.deserialize(format, serialized_data):\n        obj.save()\n\n    # Assert that the deserialized data is the same\n    # as the original source\n    for (func, pk, klass, datum) in natural_key_test_data:\n        func[1](self, pk, klass, datum)\n\n    # Assert that the number of objects deserialized is the\n    # same as the number that was serialized.\n    for klass, count in instance_count.items():\n        self.assertEqual(count, klass.objects.count())\n\ndef fieldsTest(format, self):\n    obj = ComplexModel(field1='first', field2='second', field3='third')\n    obj.save_base(raw=True)\n\n    # Serialize then deserialize the test database\n    serialized_data = serializers.serialize(format, [obj], indent=2, fields=('field1','field3'))\n    result = next(serializers.deserialize(format, serialized_data))\n\n    # Check that the deserialized object contains data in only the serialized fields.\n    self.assertEqual(result.object.field1, 'first')\n    self.assertEqual(result.object.field2, '')\n    self.assertEqual(result.object.field3, 'third')\n\ndef streamTest(format, self):\n    obj = ComplexModel(field1='first',field2='second',field3='third')\n    obj.save_base(raw=True)\n\n    # Serialize the test database to a stream\n    for stream in (six.StringIO(), HttpResponse()):\n        serializers.serialize(format, [obj], indent=2, stream=stream)\n\n        # Serialize normally for a comparison\n        string_data = serializers.serialize(format, [obj], indent=2)\n\n        # Check that the two are the same\n        if isinstance(stream, six.StringIO):\n            self.assertEqual(string_data, stream.getvalue())\n        else:\n            self.assertEqual(string_data, stream.content.decode('utf-8'))\n        stream.close()\n\nfor format in serializers.get_serializer_formats():\n    setattr(SerializerTests, 'test_' + format + '_serializer', curry(serializerTest, format))\n    setattr(SerializerTests, 'test_' + format + '_natural_key_serializer', curry(naturalKeySerializerTest, format))\n    setattr(SerializerTests, 'test_' + format + '_serializer_fields', curry(fieldsTest, format))\n    if format != 'python':\n        setattr(SerializerTests, 'test_' + format + '_serializer_stream', curry(streamTest, format))\n\n\nclass XmlDeserializerSecurityTests(TestCase):\n\n    def test_no_dtd(self):\n        \"\"\"\n        The XML deserializer shouldn't allow a DTD.\n\n        This is the most straightforward way to prevent all entity definitions\n        and avoid both external entities and entity-expansion attacks.\n\n        \"\"\"\n        xml = '<?xml version=\"1.0\" standalone=\"no\"?><!DOCTYPE example SYSTEM \"http://example.com/example.dtd\">'\n        with self.assertRaises(DTDForbidden):\n            next(serializers.deserialize('xml', xml))\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/servers/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/servers/fixtures/testdata.json",
    "content": "[\n  {\n    \"pk\": 1,\n    \"model\": \"servers.person\",\n    \"fields\": {\n      \"name\": \"jane\"\n    }\n  },\n  {\n    \"pk\": 2,\n    \"model\": \"servers.person\",\n    \"fields\": {\n      \"name\": \"robert\"\n    }\n  }\n]"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/servers/media/example_media_file.txt",
    "content": "example media file\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/servers/models.py",
    "content": "from django.db import models\n\n\nclass Person(models.Model):\n    name = models.CharField(max_length=256)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/servers/static/example_static_file.txt",
    "content": "example static file\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/servers/tests.py",
    "content": "# -*- encoding: utf-8 -*-\n\"\"\"\nTests for django.core.servers.\n\"\"\"\nfrom __future__ import unicode_literals\n\nimport os\ntry:\n    from urllib.request import urlopen, HTTPError\nexcept ImportError:     # Python 2\n    from urllib2 import urlopen, HTTPError\n\nfrom django.core.exceptions import ImproperlyConfigured\nfrom django.test import LiveServerTestCase\nfrom django.core.servers.basehttp import WSGIServerException\nfrom django.test.utils import override_settings\nfrom django.utils.http import urlencode\nfrom django.utils._os import upath\n\nfrom .models import Person\n\n\nTEST_ROOT = os.path.dirname(upath(__file__))\nTEST_SETTINGS = {\n    'MEDIA_URL': '/media/',\n    'MEDIA_ROOT': os.path.join(TEST_ROOT, 'media'),\n    'STATIC_URL': '/static/',\n    'STATIC_ROOT': os.path.join(TEST_ROOT, 'static'),\n}\n\n\nclass LiveServerBase(LiveServerTestCase):\n    urls = 'regressiontests.servers.urls'\n    fixtures = ['testdata.json']\n\n    @classmethod\n    def setUpClass(cls):\n        # Override settings\n        cls.settings_override = override_settings(**TEST_SETTINGS)\n        cls.settings_override.enable()\n        super(LiveServerBase, cls).setUpClass()\n\n    @classmethod\n    def tearDownClass(cls):\n        # Restore original settings\n        cls.settings_override.disable()\n        super(LiveServerBase, cls).tearDownClass()\n\n    def urlopen(self, url):\n        return urlopen(self.live_server_url + url)\n\n\nclass LiveServerAddress(LiveServerBase):\n    \"\"\"\n    Ensure that the address set in the environment variable is valid.\n    Refs #2879.\n    \"\"\"\n\n    @classmethod\n    def setUpClass(cls):\n        # Backup original environment variable\n        address_predefined = 'DJANGO_LIVE_TEST_SERVER_ADDRESS' in os.environ\n        old_address = os.environ.get('DJANGO_LIVE_TEST_SERVER_ADDRESS')\n\n        # Just the host is not accepted\n        cls.raises_exception('localhost', ImproperlyConfigured)\n\n        # The host must be valid\n        cls.raises_exception('blahblahblah:8081', WSGIServerException)\n\n        # The list of ports must be in a valid format\n        cls.raises_exception('localhost:8081,', ImproperlyConfigured)\n        cls.raises_exception('localhost:8081,blah', ImproperlyConfigured)\n        cls.raises_exception('localhost:8081-', ImproperlyConfigured)\n        cls.raises_exception('localhost:8081-blah', ImproperlyConfigured)\n        cls.raises_exception('localhost:8081-8082-8083', ImproperlyConfigured)\n\n        # If contrib.staticfiles isn't configured properly, the exception\n        # should bubble up to the main thread.\n        old_STATIC_URL = TEST_SETTINGS['STATIC_URL']\n        TEST_SETTINGS['STATIC_URL'] = None\n        cls.raises_exception('localhost:8081', ImproperlyConfigured)\n        TEST_SETTINGS['STATIC_URL'] = old_STATIC_URL\n\n        # Restore original environment variable\n        if address_predefined:\n            os.environ['DJANGO_LIVE_TEST_SERVER_ADDRESS'] = old_address\n        else:\n            del os.environ['DJANGO_LIVE_TEST_SERVER_ADDRESS']\n\n    @classmethod\n    def raises_exception(cls, address, exception):\n        os.environ['DJANGO_LIVE_TEST_SERVER_ADDRESS'] = address\n        try:\n            super(LiveServerAddress, cls).setUpClass()\n            raise Exception(\"The line above should have raised an exception\")\n        except exception:\n            pass\n        finally:\n            super(LiveServerAddress, cls).tearDownClass()\n\n    def test_test_test(self):\n        # Intentionally empty method so that the test is picked up by the\n        # test runner and the overriden setUpClass() method is executed.\n        pass\n\nclass LiveServerViews(LiveServerBase):\n    def test_404(self):\n        \"\"\"\n        Ensure that the LiveServerTestCase serves 404s.\n        Refs #2879.\n        \"\"\"\n        try:\n            self.urlopen('/')\n        except HTTPError as err:\n            self.assertEqual(err.code, 404, 'Expected 404 response')\n        else:\n            self.fail('Expected 404 response')\n\n    def test_view(self):\n        \"\"\"\n        Ensure that the LiveServerTestCase serves views.\n        Refs #2879.\n        \"\"\"\n        f = self.urlopen('/example_view/')\n        self.assertEqual(f.read(), b'example view')\n\n    def test_static_files(self):\n        \"\"\"\n        Ensure that the LiveServerTestCase serves static files.\n        Refs #2879.\n        \"\"\"\n        f = self.urlopen('/static/example_static_file.txt')\n        self.assertEqual(f.read().rstrip(b'\\r\\n'), b'example static file')\n\n    def test_media_files(self):\n        \"\"\"\n        Ensure that the LiveServerTestCase serves media files.\n        Refs #2879.\n        \"\"\"\n        f = self.urlopen('/media/example_media_file.txt')\n        self.assertEqual(f.read().rstrip(b'\\r\\n'), b'example media file')\n\n    def test_environ(self):\n        f = self.urlopen('/environ_view/?%s' % urlencode({'q': 'тест'}))\n        self.assertIn(b\"QUERY_STRING: 'q=%D1%82%D0%B5%D1%81%D1%82'\", f.read())\n\n\nclass LiveServerDatabase(LiveServerBase):\n\n    def test_fixtures_loaded(self):\n        \"\"\"\n        Ensure that fixtures are properly loaded and visible to the\n        live server thread.\n        Refs #2879.\n        \"\"\"\n        f = self.urlopen('/model_view/')\n        self.assertEqual(f.read().splitlines(), [b'jane', b'robert'])\n\n    def test_database_writes(self):\n        \"\"\"\n        Ensure that data written to the database by a view can be read.\n        Refs #2879.\n        \"\"\"\n        self.urlopen('/create_model_instance/')\n        self.assertQuerysetEqual(\n            Person.objects.all().order_by('pk'),\n            ['jane', 'robert', 'emily'],\n            lambda b: b.name\n        )\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/servers/urls.py",
    "content": "from __future__ import absolute_import\n\nfrom django.conf.urls import patterns, url\n\nfrom . import views\n\n\nurlpatterns = patterns('',\n    url(r'^example_view/$', views.example_view),\n    url(r'^model_view/$', views.model_view),\n    url(r'^create_model_instance/$', views.create_model_instance),\n    url(r'^environ_view/$', views.environ_view),\n)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/servers/views.py",
    "content": "from django.http import HttpResponse\nfrom .models import Person\n\n\ndef example_view(request):\n    return HttpResponse('example view')\n\n\ndef model_view(request):\n    people = Person.objects.all()\n    return HttpResponse('\\n'.join([person.name for person in people]))\n\n\ndef create_model_instance(request):\n    person = Person(name='emily')\n    person.save()\n    return HttpResponse('')\n\n\ndef environ_view(request):\n    return HttpResponse(\"\\n\".join([\"%s: %r\" % (k, v) for k, v in request.environ.items()]))\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/settings_tests/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/settings_tests/models.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/settings_tests/tests.py",
    "content": "import os\nimport warnings\n\nfrom django.conf import settings, global_settings\nfrom django.core.exceptions import ImproperlyConfigured\nfrom django.http import HttpRequest\nfrom django.test import SimpleTestCase, TransactionTestCase, TestCase, signals\nfrom django.test.utils import override_settings\nfrom django.utils import unittest, six\n\n\n@override_settings(TEST='override')\nclass FullyDecoratedTranTestCase(TransactionTestCase):\n\n    def test_override(self):\n        self.assertEqual(settings.TEST, 'override')\n\n    @override_settings(TEST='override2')\n    def test_method_override(self):\n        self.assertEqual(settings.TEST, 'override2')\n\n    def test_decorated_testcase_name(self):\n        self.assertEqual(FullyDecoratedTranTestCase.__name__, 'FullyDecoratedTranTestCase')\n\n    def test_decorated_testcase_module(self):\n        self.assertEqual(FullyDecoratedTranTestCase.__module__, __name__)\n\n\n@override_settings(TEST='override')\nclass FullyDecoratedTestCase(TestCase):\n\n    def test_override(self):\n        self.assertEqual(settings.TEST, 'override')\n\n    @override_settings(TEST='override2')\n    def test_method_override(self):\n        self.assertEqual(settings.TEST, 'override2')\n\n\nclass ClassDecoratedTestCaseSuper(TestCase):\n    \"\"\"\n    Dummy class for testing max recursion error in child class call to\n    super().  Refs #17011.\n\n    \"\"\"\n    def test_max_recursion_error(self):\n        pass\n\n\n@override_settings(TEST='override')\nclass ClassDecoratedTestCase(ClassDecoratedTestCaseSuper):\n    def test_override(self):\n        self.assertEqual(settings.TEST, 'override')\n\n    @override_settings(TEST='override2')\n    def test_method_override(self):\n        self.assertEqual(settings.TEST, 'override2')\n\n    def test_max_recursion_error(self):\n        \"\"\"\n        Overriding a method on a super class and then calling that method on\n        the super class should not trigger infinite recursion. See #17011.\n\n        \"\"\"\n        try:\n            super(ClassDecoratedTestCase, self).test_max_recursion_error()\n        except RuntimeError:\n            self.fail()\n\n\nclass SettingsTests(TestCase):\n    def setUp(self):\n        self.testvalue = None\n        signals.setting_changed.connect(self.signal_callback)\n\n    def tearDown(self):\n        signals.setting_changed.disconnect(self.signal_callback)\n\n    def signal_callback(self, sender, setting, value, **kwargs):\n        if setting == 'TEST':\n            self.testvalue = value\n\n    def test_override(self):\n        settings.TEST = 'test'\n        self.assertEqual('test', settings.TEST)\n        with self.settings(TEST='override'):\n            self.assertEqual('override', settings.TEST)\n        self.assertEqual('test', settings.TEST)\n        del settings.TEST\n\n    def test_override_change(self):\n        settings.TEST = 'test'\n        self.assertEqual('test', settings.TEST)\n        with self.settings(TEST='override'):\n            self.assertEqual('override', settings.TEST)\n            settings.TEST = 'test2'\n        self.assertEqual('test', settings.TEST)\n        del settings.TEST\n\n    def test_override_doesnt_leak(self):\n        self.assertRaises(AttributeError, getattr, settings, 'TEST')\n        with self.settings(TEST='override'):\n            self.assertEqual('override', settings.TEST)\n            settings.TEST = 'test'\n        self.assertRaises(AttributeError, getattr, settings, 'TEST')\n\n    @override_settings(TEST='override')\n    def test_decorator(self):\n        self.assertEqual('override', settings.TEST)\n\n    def test_context_manager(self):\n        self.assertRaises(AttributeError, getattr, settings, 'TEST')\n        override = override_settings(TEST='override')\n        self.assertRaises(AttributeError, getattr, settings, 'TEST')\n        override.enable()\n        self.assertEqual('override', settings.TEST)\n        override.disable()\n        self.assertRaises(AttributeError, getattr, settings, 'TEST')\n\n    def test_class_decorator(self):\n        # SimpleTestCase can be decorated by override_settings, but not ut.TestCase\n        class SimpleTestCaseSubclass(SimpleTestCase):\n            pass\n\n        class UnittestTestCaseSubclass(unittest.TestCase):\n            pass\n\n        decorated = override_settings(TEST='override')(SimpleTestCaseSubclass)\n        self.assertIsInstance(decorated, type)\n        self.assertTrue(issubclass(decorated, SimpleTestCase))\n\n        with six.assertRaisesRegex(self, Exception,\n                \"Only subclasses of Django SimpleTestCase*\"):\n            decorated = override_settings(TEST='override')(UnittestTestCaseSubclass)\n\n    def test_signal_callback_context_manager(self):\n        self.assertRaises(AttributeError, getattr, settings, 'TEST')\n        with self.settings(TEST='override'):\n            self.assertEqual(self.testvalue, 'override')\n        self.assertEqual(self.testvalue, None)\n\n    @override_settings(TEST='override')\n    def test_signal_callback_decorator(self):\n        self.assertEqual(self.testvalue, 'override')\n\n    #\n    # Regression tests for #10130: deleting settings.\n    #\n\n    def test_settings_delete(self):\n        settings.TEST = 'test'\n        self.assertEqual('test', settings.TEST)\n        del settings.TEST\n        self.assertRaises(AttributeError, getattr, settings, 'TEST')\n\n    def test_settings_delete_wrapped(self):\n        self.assertRaises(TypeError, delattr, settings, '_wrapped')\n\n    def test_override_settings_delete(self):\n        \"\"\"\n        Allow deletion of a setting in an overriden settings set (#18824)\n        \"\"\"\n        previous_i18n = settings.USE_I18N\n        with self.settings(USE_I18N=False):\n            del settings.USE_I18N\n            self.assertRaises(AttributeError, getattr, settings, 'USE_I18N')\n        self.assertEqual(settings.USE_I18N, previous_i18n)\n\n    def test_allowed_include_roots_string(self):\n        \"\"\"\n        ALLOWED_INCLUDE_ROOTS is not allowed to be incorrectly set to a string\n        rather than a tuple.\n        \"\"\"\n        self.assertRaises(ValueError, setattr, settings,\n            'ALLOWED_INCLUDE_ROOTS', '/var/www/ssi/')\n\n\nclass TrailingSlashURLTests(TestCase):\n    \"\"\"\n    Tests for the MEDIA_URL and STATIC_URL settings.\n\n    They must end with a slash to ensure there's a deterministic way to build\n    paths in templates.\n    \"\"\"\n    settings_module = settings\n\n    def setUp(self):\n        self._original_media_url = self.settings_module.MEDIA_URL\n        self._original_static_url = self.settings_module.STATIC_URL\n\n    def tearDown(self):\n        self.settings_module.MEDIA_URL = self._original_media_url\n        self.settings_module.STATIC_URL = self._original_static_url\n\n    def test_blank(self):\n        \"\"\"\n        The empty string is accepted, even though it doesn't end in a slash.\n        \"\"\"\n        self.settings_module.MEDIA_URL = ''\n        self.assertEqual('', self.settings_module.MEDIA_URL)\n\n        self.settings_module.STATIC_URL = ''\n        self.assertEqual('', self.settings_module.STATIC_URL)\n\n    def test_end_slash(self):\n        \"\"\"\n        It works if the value ends in a slash.\n        \"\"\"\n        self.settings_module.MEDIA_URL = '/foo/'\n        self.assertEqual('/foo/', self.settings_module.MEDIA_URL)\n\n        self.settings_module.MEDIA_URL = 'http://media.foo.com/'\n        self.assertEqual('http://media.foo.com/',\n                         self.settings_module.MEDIA_URL)\n\n        self.settings_module.STATIC_URL = '/foo/'\n        self.assertEqual('/foo/', self.settings_module.STATIC_URL)\n\n        self.settings_module.STATIC_URL = 'http://static.foo.com/'\n        self.assertEqual('http://static.foo.com/',\n                         self.settings_module.STATIC_URL)\n\n    def test_no_end_slash(self):\n        \"\"\"\n        An ImproperlyConfigured exception is raised if the value doesn't end\n        in a slash.\n        \"\"\"\n        with self.assertRaises(ImproperlyConfigured):\n            self.settings_module.MEDIA_URL = '/foo'\n\n        with self.assertRaises(ImproperlyConfigured):\n            self.settings_module.MEDIA_URL = 'http://media.foo.com'\n\n        with self.assertRaises(ImproperlyConfigured):\n            self.settings_module.STATIC_URL = '/foo'\n\n        with self.assertRaises(ImproperlyConfigured):\n            self.settings_module.STATIC_URL = 'http://static.foo.com'\n\n    def test_double_slash(self):\n        \"\"\"\n        If the value ends in more than one slash, presume they know what\n        they're doing.\n        \"\"\"\n        self.settings_module.MEDIA_URL = '/stupid//'\n        self.assertEqual('/stupid//', self.settings_module.MEDIA_URL)\n\n        self.settings_module.MEDIA_URL = 'http://media.foo.com/stupid//'\n        self.assertEqual('http://media.foo.com/stupid//',\n                         self.settings_module.MEDIA_URL)\n\n        self.settings_module.STATIC_URL = '/stupid//'\n        self.assertEqual('/stupid//', self.settings_module.STATIC_URL)\n\n        self.settings_module.STATIC_URL = 'http://static.foo.com/stupid//'\n        self.assertEqual('http://static.foo.com/stupid//',\n                         self.settings_module.STATIC_URL)\n\n\nclass SecureProxySslHeaderTest(TestCase):\n    settings_module = settings\n\n    def setUp(self):\n        self._original_setting = self.settings_module.SECURE_PROXY_SSL_HEADER\n\n    def tearDown(self):\n        self.settings_module.SECURE_PROXY_SSL_HEADER = self._original_setting\n\n    def test_none(self):\n        self.settings_module.SECURE_PROXY_SSL_HEADER = None\n        req = HttpRequest()\n        self.assertEqual(req.is_secure(), False)\n\n    def test_set_without_xheader(self):\n        self.settings_module.SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTOCOL', 'https')\n        req = HttpRequest()\n        self.assertEqual(req.is_secure(), False)\n\n    def test_set_with_xheader_wrong(self):\n        self.settings_module.SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTOCOL', 'https')\n        req = HttpRequest()\n        req.META['HTTP_X_FORWARDED_PROTOCOL'] = 'wrongvalue'\n        self.assertEqual(req.is_secure(), False)\n\n    def test_set_with_xheader_right(self):\n        self.settings_module.SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTOCOL', 'https')\n        req = HttpRequest()\n        req.META['HTTP_X_FORWARDED_PROTOCOL'] = 'https'\n        self.assertEqual(req.is_secure(), True)\n\nclass EnvironmentVariableTest(TestCase):\n    \"\"\"\n    Ensures proper settings file is used in setup_environ if\n    DJANGO_SETTINGS_MODULE is set in the environment.\n    \"\"\"\n    # Decide what to do with these tests when setup_environ() gets removed in Django 1.6\n    def setUp(self):\n        self.original_value = os.environ.get('DJANGO_SETTINGS_MODULE')\n        self.save_warnings_state()\n        warnings.filterwarnings('ignore', category=DeprecationWarning, module='django.core.management')\n\n    def tearDown(self):\n        self.restore_warnings_state()\n        if self.original_value:\n            os.environ['DJANGO_SETTINGS_MODULE'] = self.original_value\n        elif 'DJANGO_SETTINGS_MODULE' in os.environ:\n            del(os.environ['DJANGO_SETTINGS_MODULE'])\n\n    def test_env_var_used(self):\n        \"\"\"\n        If the environment variable is set, do not ignore it. However, the\n        kwarg original_settings_path takes precedence.\n\n        This tests both plus the default (neither set).\n        \"\"\"\n        from django.core.management import setup_environ\n\n        # whatever was already there\n        original_module =  os.environ.get(\n            'DJANGO_SETTINGS_MODULE',\n            'the default'\n        )\n\n        # environment variable set by user\n        user_override = 'custom.settings'\n\n        # optional argument to setup_environ\n        orig_path = 'original.path'\n\n        # expect default\n        setup_environ(global_settings)\n        self.assertEqual(\n            os.environ.get('DJANGO_SETTINGS_MODULE'),\n            original_module\n        )\n\n        # override with environment variable\n        os.environ['DJANGO_SETTINGS_MODULE'] = user_override\n        setup_environ(global_settings)\n\n        self.assertEqual(\n            os.environ.get('DJANGO_SETTINGS_MODULE'),\n            user_override\n        )\n\n        # pass in original_settings_path (should take precedence)\n        os.environ['DJANGO_SETTINGS_MODULE'] = user_override\n        setup_environ(global_settings, original_settings_path = orig_path)\n\n        self.assertEqual(\n            os.environ.get('DJANGO_SETTINGS_MODULE'),\n            orig_path\n        )\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/signals_regress/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/signals_regress/models.py",
    "content": "from django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n@python_2_unicode_compatible\nclass Author(models.Model):\n    name = models.CharField(max_length=20)\n\n    def __str__(self):\n        return self.name\n\n@python_2_unicode_compatible\nclass Book(models.Model):\n    name = models.CharField(max_length=20)\n    authors = models.ManyToManyField(Author)\n\n    def __str__(self):\n        return self.name\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/signals_regress/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom django.db import models\nfrom django.test import TestCase\n\nfrom .models import Author, Book\n\n\nclass SignalsRegressTests(TestCase):\n    \"\"\"\n    Testing signals before/after saving and deleting.\n    \"\"\"\n\n    def get_signal_output(self, fn, *args, **kwargs):\n        # Flush any existing signal output\n        self.signal_output = []\n        fn(*args, **kwargs)\n        return self.signal_output\n\n    def pre_save_test(self, signal, sender, instance, **kwargs):\n        self.signal_output.append('pre_save signal, %s' % instance)\n        if kwargs.get('raw'):\n            self.signal_output.append('Is raw')\n\n    def post_save_test(self, signal, sender, instance, **kwargs):\n        self.signal_output.append('post_save signal, %s' % instance)\n        if 'created' in kwargs:\n            if kwargs['created']:\n                self.signal_output.append('Is created')\n            else:\n                self.signal_output.append('Is updated')\n        if kwargs.get('raw'):\n            self.signal_output.append('Is raw')\n\n    def pre_delete_test(self, signal, sender, instance, **kwargs):\n        self.signal_output.append('pre_save signal, %s' % instance)\n        self.signal_output.append('instance.id is not None: %s' % (instance.id != None))\n\n    def post_delete_test(self, signal, sender, instance, **kwargs):\n        self.signal_output.append('post_delete signal, %s' % instance)\n        self.signal_output.append('instance.id is not None: %s' % (instance.id != None))\n\n    def setUp(self):\n        self.signal_output = []\n        # Save up the number of connected signals so that we can check at the end\n        # that all the signals we register get properly unregistered (#9989)\n        self.pre_signals = (len(models.signals.pre_save.receivers),\n                       len(models.signals.post_save.receivers),\n                       len(models.signals.pre_delete.receivers),\n                       len(models.signals.post_delete.receivers))\n\n        models.signals.pre_save.connect(self.pre_save_test)\n        models.signals.post_save.connect(self.post_save_test)\n        models.signals.pre_delete.connect(self.pre_delete_test)\n        models.signals.post_delete.connect(self.post_delete_test)\n\n    def tearDown(self):\n        models.signals.post_delete.disconnect(self.post_delete_test)\n        models.signals.pre_delete.disconnect(self.pre_delete_test)\n        models.signals.post_save.disconnect(self.post_save_test)\n        models.signals.pre_save.disconnect(self.pre_save_test)\n\n        # Check that all our signals got disconnected properly.\n        post_signals = (len(models.signals.pre_save.receivers),\n                        len(models.signals.post_save.receivers),\n                        len(models.signals.pre_delete.receivers),\n                        len(models.signals.post_delete.receivers))\n\n        self.assertEqual(self.pre_signals, post_signals)\n\n    def test_model_signals(self):\n        \"\"\" Model saves should throw some signals. \"\"\"\n        a1 = Author(name='Neal Stephenson')\n        self.assertEqual(self.get_signal_output(a1.save), [\n            \"pre_save signal, Neal Stephenson\",\n            \"post_save signal, Neal Stephenson\",\n            \"Is created\"\n        ])\n\n        b1 = Book(name='Snow Crash')\n        self.assertEqual(self.get_signal_output(b1.save), [\n            \"pre_save signal, Snow Crash\",\n            \"post_save signal, Snow Crash\",\n            \"Is created\"\n        ])\n\n    def test_m2m_signals(self):\n        \"\"\" Assigning and removing to/from m2m shouldn't generate an m2m signal \"\"\"\n\n        b1 = Book(name='Snow Crash')\n        self.get_signal_output(b1.save)\n        a1 = Author(name='Neal Stephenson')\n        self.get_signal_output(a1.save)\n        self.assertEqual(self.get_signal_output(setattr, b1, 'authors', [a1]), [])\n        self.assertEqual(self.get_signal_output(setattr, b1, 'authors', []), [])\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/signed_cookies_tests/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/signed_cookies_tests/models.py",
    "content": "# models.py file for tests to run.\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/signed_cookies_tests/tests.py",
    "content": "from __future__ import unicode_literals\n\nimport time\n\nfrom django.core import signing\nfrom django.http import HttpRequest, HttpResponse\nfrom django.test import TestCase\n\n\nclass SignedCookieTest(TestCase):\n\n    def test_can_set_and_read_signed_cookies(self):\n        response = HttpResponse()\n        response.set_signed_cookie('c', 'hello')\n        self.assertIn('c', response.cookies)\n        self.assertTrue(response.cookies['c'].value.startswith('hello:'))\n        request = HttpRequest()\n        request.COOKIES['c'] = response.cookies['c'].value\n        value = request.get_signed_cookie('c')\n        self.assertEqual(value, 'hello')\n\n    def test_can_use_salt(self):\n        response = HttpResponse()\n        response.set_signed_cookie('a', 'hello', salt='one')\n        request = HttpRequest()\n        request.COOKIES['a'] = response.cookies['a'].value\n        value = request.get_signed_cookie('a', salt='one')\n        self.assertEqual(value, 'hello')\n        self.assertRaises(signing.BadSignature,\n            request.get_signed_cookie, 'a', salt='two')\n\n    def test_detects_tampering(self):\n        response = HttpResponse()\n        response.set_signed_cookie('c', 'hello')\n        request = HttpRequest()\n        request.COOKIES['c'] = response.cookies['c'].value[:-2] + '$$'\n        self.assertRaises(signing.BadSignature,\n            request.get_signed_cookie, 'c')\n\n    def test_default_argument_supresses_exceptions(self):\n        response = HttpResponse()\n        response.set_signed_cookie('c', 'hello')\n        request = HttpRequest()\n        request.COOKIES['c'] = response.cookies['c'].value[:-2] + '$$'\n        self.assertEqual(request.get_signed_cookie('c', default=None), None)\n\n    def test_max_age_argument(self):\n        value = 'hello'\n        _time = time.time\n        time.time = lambda: 123456789\n        try:\n            response = HttpResponse()\n            response.set_signed_cookie('c', value)\n            request = HttpRequest()\n            request.COOKIES['c'] = response.cookies['c'].value\n            self.assertEqual(request.get_signed_cookie('c'), value)\n\n            time.time = lambda: 123456800\n            self.assertEqual(request.get_signed_cookie('c', max_age=12), value)\n            self.assertEqual(request.get_signed_cookie('c', max_age=11), value)\n            self.assertRaises(signing.SignatureExpired,\n                request.get_signed_cookie, 'c', max_age = 10)\n        finally:\n            time.time = _time\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/signing/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/signing/models.py",
    "content": "# models.py file for tests to run.\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/signing/tests.py",
    "content": "from __future__ import unicode_literals\n\nimport time\n\nfrom django.core import signing\nfrom django.test import TestCase\nfrom django.utils.encoding import force_str\nfrom django.utils import six\n\n\nclass TestSigner(TestCase):\n\n    def test_signature(self):\n        \"signature() method should generate a signature\"\n        signer = signing.Signer('predictable-secret')\n        signer2 = signing.Signer('predictable-secret2')\n        for s in (\n            b'hello',\n            b'3098247:529:087:',\n            '\\u2019'.encode('utf-8'),\n        ):\n            self.assertEqual(\n                signer.signature(s),\n                signing.base64_hmac(signer.salt + 'signer', s,\n                    'predictable-secret').decode()\n            )\n            self.assertNotEqual(signer.signature(s), signer2.signature(s))\n\n    def test_signature_with_salt(self):\n        \"signature(value, salt=...) should work\"\n        signer = signing.Signer('predictable-secret', salt='extra-salt')\n        self.assertEqual(\n            signer.signature('hello'),\n                signing.base64_hmac('extra-salt' + 'signer',\n                'hello', 'predictable-secret').decode()\n            )\n        self.assertNotEqual(\n            signing.Signer('predictable-secret', salt='one').signature('hello'),\n            signing.Signer('predictable-secret', salt='two').signature('hello'))\n\n    def test_sign_unsign(self):\n        \"sign/unsign should be reversible\"\n        signer = signing.Signer('predictable-secret')\n        examples = [\n            'q;wjmbk;wkmb',\n            '3098247529087',\n            '3098247:529:087:',\n            'jkw osanteuh ,rcuh nthu aou oauh ,ud du',\n            '\\u2019',\n        ]\n        if not six.PY3:\n            examples.append(b'a byte string')\n        for example in examples:\n            signed = signer.sign(example)\n            self.assertIsInstance(signed, str)\n            self.assertNotEqual(force_str(example), signed)\n            self.assertEqual(example, signer.unsign(signed))\n\n    def unsign_detects_tampering(self):\n        \"unsign should raise an exception if the value has been tampered with\"\n        signer = signing.Signer('predictable-secret')\n        value = 'Another string'\n        signed_value = signer.sign(value)\n        transforms = (\n            lambda s: s.upper(),\n            lambda s: s + 'a',\n            lambda s: 'a' + s[1:],\n            lambda s: s.replace(':', ''),\n        )\n        self.assertEqual(value, signer.unsign(signed_value))\n        for transform in transforms:\n            self.assertRaises(\n                signing.BadSignature, signer.unsign, transform(signed_value))\n\n    def test_dumps_loads(self):\n        \"dumps and loads be reversible for any JSON serializable object\"\n        objects = [\n            ['a', 'list'],\n            'a unicode string \\u2019',\n            {'a': 'dictionary'},\n        ]\n        if not six.PY3:\n            objects.append(b'a byte string')\n        for o in objects:\n            self.assertNotEqual(o, signing.dumps(o))\n            self.assertEqual(o, signing.loads(signing.dumps(o)))\n            self.assertNotEqual(o, signing.dumps(o, compress=True))\n            self.assertEqual(o, signing.loads(signing.dumps(o, compress=True)))\n\n    def test_decode_detects_tampering(self):\n        \"loads should raise exception for tampered objects\"\n        transforms = (\n            lambda s: s.upper(),\n            lambda s: s + 'a',\n            lambda s: 'a' + s[1:],\n            lambda s: s.replace(':', ''),\n        )\n        value = {\n            'foo': 'bar',\n            'baz': 1,\n        }\n        encoded = signing.dumps(value)\n        self.assertEqual(value, signing.loads(encoded))\n        for transform in transforms:\n            self.assertRaises(\n                signing.BadSignature, signing.loads, transform(encoded))\n\nclass TestTimestampSigner(TestCase):\n\n    def test_timestamp_signer(self):\n        value = 'hello'\n        _time = time.time\n        time.time = lambda: 123456789\n        try:\n            signer = signing.TimestampSigner('predictable-key')\n            ts = signer.sign(value)\n            self.assertNotEqual(ts,\n                signing.Signer('predictable-key').sign(value))\n\n            self.assertEqual(signer.unsign(ts), value)\n            time.time = lambda: 123456800\n            self.assertEqual(signer.unsign(ts, max_age=12), value)\n            self.assertEqual(signer.unsign(ts, max_age=11), value)\n            self.assertRaises(\n                signing.SignatureExpired, signer.unsign, ts, max_age=10)\n        finally:\n            time.time = _time\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/sites_framework/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/sites_framework/models.py",
    "content": "from django.contrib.sites.managers import CurrentSiteManager\nfrom django.contrib.sites.models import Site\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n@python_2_unicode_compatible\nclass AbstractArticle(models.Model):\n    title = models.CharField(max_length=50)\n\n    objects = models.Manager()\n    on_site = CurrentSiteManager()\n\n    class Meta:\n        abstract = True\n\n    def __str__(self):\n        return self.title\n\nclass SyndicatedArticle(AbstractArticle):\n    sites = models.ManyToManyField(Site)\n\nclass ExclusiveArticle(AbstractArticle):\n    site = models.ForeignKey(Site)\n\nclass CustomArticle(AbstractArticle):\n    places_this_article_should_appear = models.ForeignKey(Site)\n\n    objects = models.Manager()\n    on_site = CurrentSiteManager(\"places_this_article_should_appear\")\n\nclass InvalidArticle(AbstractArticle):\n    site = models.ForeignKey(Site)\n\n    objects = models.Manager()\n    on_site = CurrentSiteManager(\"places_this_article_should_appear\")\n\nclass ConfusedArticle(AbstractArticle):\n    site = models.IntegerField()\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/sites_framework/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom django.conf import settings\nfrom django.contrib.sites.models import Site\nfrom django.test import TestCase\n\nfrom .models import (SyndicatedArticle, ExclusiveArticle, CustomArticle,\n    InvalidArticle, ConfusedArticle)\n\n\nclass SitesFrameworkTestCase(TestCase):\n    def setUp(self):\n        Site.objects.get_or_create(id=settings.SITE_ID, domain=\"example.com\", name=\"example.com\")\n        Site.objects.create(id=settings.SITE_ID+1, domain=\"example2.com\", name=\"example2.com\")\n\n    def test_site_fk(self):\n        article = ExclusiveArticle.objects.create(title=\"Breaking News!\", site_id=settings.SITE_ID)\n        self.assertEqual(ExclusiveArticle.on_site.all().get(), article)\n\n    def test_sites_m2m(self):\n        article = SyndicatedArticle.objects.create(title=\"Fresh News!\")\n        article.sites.add(Site.objects.get(id=settings.SITE_ID))\n        article.sites.add(Site.objects.get(id=settings.SITE_ID+1))\n        article2 = SyndicatedArticle.objects.create(title=\"More News!\")\n        article2.sites.add(Site.objects.get(id=settings.SITE_ID+1))\n        self.assertEqual(SyndicatedArticle.on_site.all().get(), article)\n\n    def test_custom_named_field(self):\n        article = CustomArticle.objects.create(title=\"Tantalizing News!\", places_this_article_should_appear_id=settings.SITE_ID)\n        self.assertEqual(CustomArticle.on_site.all().get(), article)\n\n    def test_invalid_name(self):\n        article = InvalidArticle.objects.create(title=\"Bad News!\", site_id=settings.SITE_ID)\n        self.assertRaises(ValueError, InvalidArticle.on_site.all)\n\n    def test_invalid_field_type(self):\n        article = ConfusedArticle.objects.create(title=\"More Bad News!\", site=settings.SITE_ID)\n        self.assertRaises(TypeError, ConfusedArticle.on_site.all)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/special_headers/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/special_headers/fixtures/data.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<django-objects version=\"1.0\">\n    <object pk=\"100\" model=\"auth.user\">\n        <field type=\"CharField\" name=\"username\">super</field>\n        <field type=\"CharField\" name=\"first_name\">Super</field>\n        <field type=\"CharField\" name=\"last_name\">User</field>\n        <field type=\"CharField\" name=\"email\">super@example.com</field>\n        <field type=\"CharField\" name=\"password\">sha1$995a3$6011485ea3834267d719b4c801409b8b1ddd0158</field>\n        <field type=\"BooleanField\" name=\"is_staff\">True</field>\n        <field type=\"BooleanField\" name=\"is_active\">True</field>\n        <field type=\"BooleanField\" name=\"is_superuser\">True</field>\n        <field type=\"DateTimeField\" name=\"last_login\">2007-05-30 13:20:10</field>\n        <field type=\"DateTimeField\" name=\"date_joined\">2007-05-30 13:20:10</field>\n        <field to=\"auth.group\" name=\"groups\" rel=\"ManyToManyRel\"></field>\n        <field to=\"auth.permission\" name=\"user_permissions\" rel=\"ManyToManyRel\"></field>\n    </object>\n    <object pk=\"1\" model=\"special_headers.article\">\n        <field type=\"TextField\" name=\"text\">text</field>\n    </object>\n</django-objects>\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/special_headers/models.py",
    "content": "from django.db import models\n\n\nclass Article(models.Model):\n    text = models.TextField()\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/special_headers/templates/special_headers/article_detail.html",
    "content": "{{ object }}\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/special_headers/tests.py",
    "content": "from django.contrib.auth.models import User\nfrom django.test import TestCase\nfrom django.test.utils import override_settings\n\n\n@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))\nclass SpecialHeadersTest(TestCase):\n    fixtures = ['data.xml']\n    urls = 'regressiontests.special_headers.urls'\n\n    def test_xheaders(self):\n        user = User.objects.get(username='super')\n        response = self.client.get('/special_headers/article/1/')\n        self.assertFalse('X-Object-Type' in response)\n        self.client.login(username='super', password='secret')\n        response = self.client.get('/special_headers/article/1/')\n        self.assertTrue('X-Object-Type' in response)\n        user.is_staff = False\n        user.save()\n        response = self.client.get('/special_headers/article/1/')\n        self.assertFalse('X-Object-Type' in response)\n        user.is_staff = True\n        user.is_active = False\n        user.save()\n        response = self.client.get('/special_headers/article/1/')\n        self.assertFalse('X-Object-Type' in response)\n\n    def test_xview_func(self):\n        user = User.objects.get(username='super')\n        response = self.client.head('/special_headers/xview/func/')\n        self.assertFalse('X-View' in response)\n        self.client.login(username='super', password='secret')\n        response = self.client.head('/special_headers/xview/func/')\n        self.assertTrue('X-View' in response)\n        self.assertEqual(response['X-View'], 'regressiontests.special_headers.views.xview')\n        user.is_staff = False\n        user.save()\n        response = self.client.head('/special_headers/xview/func/')\n        self.assertFalse('X-View' in response)\n        user.is_staff = True\n        user.is_active = False\n        user.save()\n        response = self.client.head('/special_headers/xview/func/')\n        self.assertFalse('X-View' in response)\n\n    def test_xview_class(self):\n        user = User.objects.get(username='super')\n        response = self.client.head('/special_headers/xview/class/')\n        self.assertFalse('X-View' in response)\n        self.client.login(username='super', password='secret')\n        response = self.client.head('/special_headers/xview/class/')\n        self.assertTrue('X-View' in response)\n        self.assertEqual(response['X-View'], 'regressiontests.special_headers.views.XViewClass')\n        user.is_staff = False\n        user.save()\n        response = self.client.head('/special_headers/xview/class/')\n        self.assertFalse('X-View' in response)\n        user.is_staff = True\n        user.is_active = False\n        user.save()\n        response = self.client.head('/special_headers/xview/class/')\n        self.assertFalse('X-View' in response)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/special_headers/urls.py",
    "content": "# coding: utf-8\nfrom __future__ import absolute_import\n\nfrom django.conf.urls import patterns\n\nfrom . import views\nfrom .models import Article\n\nurlpatterns = patterns('',\n    (r'^special_headers/article/(?P<object_id>\\d+)/$', views.xview_xheaders),\n    (r'^special_headers/xview/func/$', views.xview_dec(views.xview)),\n    (r'^special_headers/xview/class/$', views.xview_dec(views.XViewClass.as_view())),\n)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/special_headers/views.py",
    "content": "from django.core.xheaders import populate_xheaders\nfrom django.http import HttpResponse\nfrom django.utils.decorators import decorator_from_middleware\nfrom django.views.generic import View\nfrom django.middleware.doc import XViewMiddleware\n\nfrom .models import Article\n\nxview_dec = decorator_from_middleware(XViewMiddleware)\n\ndef xview(request):\n    return HttpResponse()\n\ndef xview_xheaders(request, object_id):\n    response = HttpResponse()\n    populate_xheaders(request, response, Article, 1)\n    return response\n\nclass XViewClass(View):\n    def get(self, request):\n        return HttpResponse()\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/staticfiles_tests/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/staticfiles_tests/apps/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/staticfiles_tests/apps/no_label/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/staticfiles_tests/apps/no_label/models.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/staticfiles_tests/apps/no_label/static/file2.txt",
    "content": "file2 in no_label_app\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/staticfiles_tests/apps/test/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/staticfiles_tests/apps/test/models.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/staticfiles_tests/apps/test/otherdir/odfile.txt",
    "content": "File in otherdir.\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/staticfiles_tests/apps/test/static/test/CVS",
    "content": "This file should be ignored.\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/staticfiles_tests/apps/test/static/test/file.txt",
    "content": "In app media directory.\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/staticfiles_tests/apps/test/static/test/file1.txt",
    "content": "file1 in the app dir"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/staticfiles_tests/apps/test/static/test/nonascii.css",
    "content": "body {\n  background: url('window.png');\n}\n\n.snowman:before { content: \"☃\"; }\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/staticfiles_tests/apps/test/static/test/test.ignoreme",
    "content": "This file should be ignored."
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/staticfiles_tests/models.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/staticfiles_tests/project/documents/cached/absolute.css",
    "content": "@import url(\"/static/cached/styles.css\");\nbody {\n    background: #d3d6d8 url(/static/cached/img/relative.png);\n}"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/staticfiles_tests/project/documents/cached/css/fragments.css",
    "content": "@font-face {\n    src: url('fonts/font.eot?#iefix') format('embedded-opentype'),\n         url('fonts/font.svg#webfontIyfZbseF') format('svg');\n         url('data:font/woff;charset=utf-8;base64,d09GRgABAAAAADJoAA0AAAAAR2QAAQAAAAAAAAAAAAA');\n}\ndiv {\n    behavior: url(\"#default#VML\");\n}\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/staticfiles_tests/project/documents/cached/css/ignored.css",
    "content": "body {\n    background: url(\"#foobar\");\n    background: url(\"http:foobar\");\n    background: url(\"https:foobar\");\n    background: url(\"data:foobar\");\n    background: url(\"//foobar\");\n}\n\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/staticfiles_tests/project/documents/cached/css/window.css",
    "content": "body {\n    background: #d3d6d8 url(\"img/window.png\");\n}"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/staticfiles_tests/project/documents/cached/denorm.css",
    "content": "@import url(\"..//cached///styles.css\");\nbody {\n    background: #d3d6d8 url(img/relative.png );\n}\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/staticfiles_tests/project/documents/cached/import.css",
    "content": "@import 'styles.css';\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/staticfiles_tests/project/documents/cached/other.css",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/staticfiles_tests/project/documents/cached/relative.css",
    "content": "@import url(\"../cached/styles.css\");\n@import url(\"absolute.css\");\n@import url(\"absolute.css#eggs\");\nbody {\n    background: #d3d6d8 url(img/relative.png);\n}"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/staticfiles_tests/project/documents/cached/styles.css",
    "content": "@import url(\"other.css\");"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/staticfiles_tests/project/documents/cached/url.css",
    "content": "@import url(\"https://www.djangoproject.com/m/css/base.css\");"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/staticfiles_tests/project/documents/subdir/test.txt",
    "content": "Can we find this file?\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/staticfiles_tests/project/documents/test/camelCase.txt",
    "content": "This file is named with camelCase."
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/staticfiles_tests/project/documents/test/file.txt",
    "content": "In STATICFILES_DIRS directory.\n\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/staticfiles_tests/project/documents/test.txt",
    "content": "Can we find this file?\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/staticfiles_tests/project/prefixed/test.txt",
    "content": "Prefix!"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/staticfiles_tests/project/site_media/media/media-file.txt",
    "content": "Media file.\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/staticfiles_tests/project/site_media/static/testfile.txt",
    "content": "Test!"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/staticfiles_tests/storage.py",
    "content": "from datetime import datetime\nfrom django.core.files import storage\nfrom django.contrib.staticfiles.storage import CachedStaticFilesStorage\n\nclass DummyStorage(storage.Storage):\n    \"\"\"\n    A storage class that does implement modified_time() but raises\n    NotImplementedError when calling\n    \"\"\"\n    def _save(self, name, content):\n        return 'dummy'\n\n    def delete(self, name):\n        pass\n\n    def exists(self, name):\n        pass\n\n    def modified_time(self, name):\n        return datetime.date(1970, 1, 1)\n\n\nclass SimpleCachedStaticFilesStorage(CachedStaticFilesStorage):\n\n    def file_hash(self, name, content=None):\n        return 'deploy12345'\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/staticfiles_tests/tests.py",
    "content": "# -*- encoding: utf-8 -*-\nfrom __future__ import unicode_literals\n\nimport codecs\nimport os\nimport posixpath\nimport shutil\nimport sys\nimport tempfile\n\nfrom django.template import loader, Context\nfrom django.conf import settings\nfrom django.core.cache.backends.base import BaseCache\nfrom django.core.exceptions import ImproperlyConfigured\nfrom django.core.management import call_command\nfrom django.test import TestCase\nfrom django.test.utils import override_settings\nfrom django.utils.encoding import force_text\nfrom django.utils.functional import empty\nfrom django.utils._os import rmtree_errorhandler, upath\nfrom django.utils import six\n\nfrom django.contrib.staticfiles import finders, storage\n\nTEST_ROOT = os.path.dirname(upath(__file__))\nTEST_SETTINGS = {\n    'DEBUG': True,\n    'MEDIA_URL': '/media/',\n    'STATIC_URL': '/static/',\n    'MEDIA_ROOT': os.path.join(TEST_ROOT, 'project', 'site_media', 'media'),\n    'STATIC_ROOT': os.path.join(TEST_ROOT, 'project', 'site_media', 'static'),\n    'STATICFILES_DIRS': (\n        os.path.join(TEST_ROOT, 'project', 'documents'),\n        ('prefix', os.path.join(TEST_ROOT, 'project', 'prefixed')),\n    ),\n    'STATICFILES_FINDERS': (\n        'django.contrib.staticfiles.finders.FileSystemFinder',\n        'django.contrib.staticfiles.finders.AppDirectoriesFinder',\n        'django.contrib.staticfiles.finders.DefaultStorageFinder',\n    ),\n}\nfrom django.contrib.staticfiles.management.commands.collectstatic import Command as CollectstaticCommand\n\n\nclass BaseStaticFilesTestCase(object):\n    \"\"\"\n    Test case with a couple utility assertions.\n    \"\"\"\n    def setUp(self):\n        # Clear the cached staticfiles_storage out, this is because when it first\n        # gets accessed (by some other test), it evaluates settings.STATIC_ROOT,\n        # since we're planning on changing that we need to clear out the cache.\n        storage.staticfiles_storage._wrapped = empty\n        # Clear the cached staticfile finders, so they are reinitialized every\n        # run and pick up changes in settings.STATICFILES_DIRS.\n        finders._finders.clear()\n\n        testfiles_path = os.path.join(TEST_ROOT, 'apps', 'test', 'static', 'test')\n        # To make sure SVN doesn't hangs itself with the non-ASCII characters\n        # during checkout, we actually create one file dynamically.\n        self._nonascii_filepath = os.path.join(testfiles_path, '\\u2297.txt')\n        with codecs.open(self._nonascii_filepath, 'w', 'utf-8') as f:\n            f.write(\"\\u2297 in the app dir\")\n        # And also create the stupid hidden file to dwarf the setup.py's\n        # package data handling.\n        self._hidden_filepath = os.path.join(testfiles_path, '.hidden')\n        with codecs.open(self._hidden_filepath, 'w', 'utf-8') as f:\n            f.write(\"should be ignored\")\n        self._backup_filepath = os.path.join(\n            TEST_ROOT, 'project', 'documents', 'test', 'backup~')\n        with codecs.open(self._backup_filepath, 'w', 'utf-8') as f:\n            f.write(\"should be ignored\")\n\n    def tearDown(self):\n        os.unlink(self._nonascii_filepath)\n        os.unlink(self._hidden_filepath)\n        os.unlink(self._backup_filepath)\n\n    def assertFileContains(self, filepath, text):\n        self.assertIn(text, self._get_file(force_text(filepath)),\n                        \"'%s' not in '%s'\" % (text, filepath))\n\n    def assertFileNotFound(self, filepath):\n        self.assertRaises(IOError, self._get_file, filepath)\n\n    def render_template(self, template, **kwargs):\n        if isinstance(template, six.string_types):\n            template = loader.get_template_from_string(template)\n        return template.render(Context(kwargs)).strip()\n\n    def static_template_snippet(self, path, asvar=False):\n        if asvar:\n            return \"{%% load static from staticfiles %%}{%% static '%s' as var %%}{{ var }}\" % path\n        return \"{%% load static from staticfiles %%}{%% static '%s' %%}\" % path\n\n    def assertStaticRenders(self, path, result, asvar=False, **kwargs):\n        template = self.static_template_snippet(path, asvar)\n        self.assertEqual(self.render_template(template, **kwargs), result)\n\n    def assertStaticRaises(self, exc, path, result, asvar=False, **kwargs):\n        self.assertRaises(exc, self.assertStaticRenders, path, result, **kwargs)\n\n\n@override_settings(**TEST_SETTINGS)\nclass StaticFilesTestCase(BaseStaticFilesTestCase, TestCase):\n    pass\n\n\nclass BaseCollectionTestCase(BaseStaticFilesTestCase):\n    \"\"\"\n    Tests shared by all file finding features (collectstatic,\n    findstatic, and static serve view).\n\n    This relies on the asserts defined in BaseStaticFilesTestCase, but\n    is separated because some test cases need those asserts without\n    all these tests.\n    \"\"\"\n    def setUp(self):\n        super(BaseCollectionTestCase, self).setUp()\n        self.old_root = settings.STATIC_ROOT\n        settings.STATIC_ROOT = tempfile.mkdtemp(dir=os.environ['DJANGO_TEST_TEMP_DIR'])\n        self.run_collectstatic()\n        # Use our own error handler that can handle .svn dirs on Windows\n        self.addCleanup(shutil.rmtree, settings.STATIC_ROOT,\n                        ignore_errors=True, onerror=rmtree_errorhandler)\n\n    def tearDown(self):\n        settings.STATIC_ROOT = self.old_root\n        super(BaseCollectionTestCase, self).tearDown()\n\n    def run_collectstatic(self, **kwargs):\n        call_command('collectstatic', interactive=False, verbosity='0',\n                     ignore_patterns=['*.ignoreme'], **kwargs)\n\n    def _get_file(self, filepath):\n        assert filepath, 'filepath is empty.'\n        filepath = os.path.join(settings.STATIC_ROOT, filepath)\n        with codecs.open(filepath, \"r\", \"utf-8\") as f:\n            return f.read()\n\n\nclass CollectionTestCase(BaseCollectionTestCase, StaticFilesTestCase):\n    pass\n\n\nclass TestDefaults(object):\n    \"\"\"\n    A few standard test cases.\n    \"\"\"\n    def test_staticfiles_dirs(self):\n        \"\"\"\n        Can find a file in a STATICFILES_DIRS directory.\n        \"\"\"\n        self.assertFileContains('test.txt', 'Can we find')\n        self.assertFileContains(os.path.join('prefix', 'test.txt'), 'Prefix')\n\n    def test_staticfiles_dirs_subdir(self):\n        \"\"\"\n        Can find a file in a subdirectory of a STATICFILES_DIRS\n        directory.\n        \"\"\"\n        self.assertFileContains('subdir/test.txt', 'Can we find')\n\n    def test_staticfiles_dirs_priority(self):\n        \"\"\"\n        File in STATICFILES_DIRS has priority over file in app.\n        \"\"\"\n        self.assertFileContains('test/file.txt', 'STATICFILES_DIRS')\n\n    def test_app_files(self):\n        \"\"\"\n        Can find a file in an app static/ directory.\n        \"\"\"\n        self.assertFileContains('test/file1.txt', 'file1 in the app dir')\n\n    def test_nonascii_filenames(self):\n        \"\"\"\n        Can find a file with non-ASCII character in an app static/ directory.\n        \"\"\"\n        self.assertFileContains('test/⊗.txt', '⊗ in the app dir')\n\n    def test_camelcase_filenames(self):\n        \"\"\"\n        Can find a file with capital letters.\n        \"\"\"\n        self.assertFileContains('test/camelCase.txt', 'camelCase')\n\n\nclass TestFindStatic(CollectionTestCase, TestDefaults):\n    \"\"\"\n    Test ``findstatic`` management command.\n    \"\"\"\n    def _get_file(self, filepath):\n        out = six.StringIO()\n        call_command('findstatic', filepath, all=False, verbosity=0, stdout=out)\n        out.seek(0)\n        lines = [l.strip() for l in out.readlines()]\n        with codecs.open(force_text(lines[1].strip()), \"r\", \"utf-8\") as f:\n            return f.read()\n\n    def test_all_files(self):\n        \"\"\"\n        Test that findstatic returns all candidate files if run without --first.\n        \"\"\"\n        out = six.StringIO()\n        call_command('findstatic', 'test/file.txt', verbosity=0, stdout=out)\n        out.seek(0)\n        lines = [l.strip() for l in out.readlines()]\n        self.assertEqual(len(lines), 3)  # three because there is also the \"Found <file> here\" line\n        self.assertIn('project', force_text(lines[1]))\n        self.assertIn('apps', force_text(lines[2]))\n\n\nclass TestCollection(CollectionTestCase, TestDefaults):\n    \"\"\"\n    Test ``collectstatic`` management command.\n    \"\"\"\n    def test_ignore(self):\n        \"\"\"\n        Test that -i patterns are ignored.\n        \"\"\"\n        self.assertFileNotFound('test/test.ignoreme')\n\n    def test_common_ignore_patterns(self):\n        \"\"\"\n        Common ignore patterns (*~, .*, CVS) are ignored.\n        \"\"\"\n        self.assertFileNotFound('test/.hidden')\n        self.assertFileNotFound('test/backup~')\n        self.assertFileNotFound('test/CVS')\n\n\nclass TestCollectionClear(CollectionTestCase):\n    \"\"\"\n    Test the ``--clear`` option of the ``collectstatic`` managemenet command.\n    \"\"\"\n    def run_collectstatic(self, **kwargs):\n        clear_filepath = os.path.join(settings.STATIC_ROOT, 'cleared.txt')\n        with open(clear_filepath, 'w') as f:\n            f.write('should be cleared')\n        super(TestCollectionClear, self).run_collectstatic(clear=True)\n\n    def test_cleared_not_found(self):\n        self.assertFileNotFound('cleared.txt')\n\n\nclass TestCollectionExcludeNoDefaultIgnore(CollectionTestCase, TestDefaults):\n    \"\"\"\n    Test ``--exclude-dirs`` and ``--no-default-ignore`` options of the\n    ``collectstatic`` management command.\n    \"\"\"\n    def run_collectstatic(self):\n        super(TestCollectionExcludeNoDefaultIgnore, self).run_collectstatic(\n            use_default_ignore_patterns=False)\n\n    def test_no_common_ignore_patterns(self):\n        \"\"\"\n        With --no-default-ignore, common ignore patterns (*~, .*, CVS)\n        are not ignored.\n\n        \"\"\"\n        self.assertFileContains('test/.hidden', 'should be ignored')\n        self.assertFileContains('test/backup~', 'should be ignored')\n        self.assertFileContains('test/CVS', 'should be ignored')\n\n\nclass TestNoFilesCreated(object):\n\n    def test_no_files_created(self):\n        \"\"\"\n        Make sure no files were create in the destination directory.\n        \"\"\"\n        self.assertEqual(os.listdir(settings.STATIC_ROOT), [])\n\n\nclass TestCollectionDryRun(CollectionTestCase, TestNoFilesCreated):\n    \"\"\"\n    Test ``--dry-run`` option for ``collectstatic`` management command.\n    \"\"\"\n    def run_collectstatic(self):\n        super(TestCollectionDryRun, self).run_collectstatic(dry_run=True)\n\n\nclass TestCollectionFilesOverride(CollectionTestCase):\n    \"\"\"\n    Test overriding duplicated files by ``collectstatic`` management command.\n    Check for proper handling of apps order in INSTALLED_APPS even if file modification\n    dates are in different order:\n\n        'regressiontests.staticfiles_tests.apps.test',\n        'regressiontests.staticfiles_tests.apps.no_label',\n\n    \"\"\"\n    def setUp(self):\n        self.orig_path = os.path.join(TEST_ROOT, 'apps', 'no_label', 'static', 'file2.txt')\n        # get modification and access times for no_label/static/file2.txt\n        self.orig_mtime = os.path.getmtime(self.orig_path)\n        self.orig_atime = os.path.getatime(self.orig_path)\n\n        # prepare duplicate of file2.txt from no_label app\n        # this file will have modification time older than no_label/static/file2.txt\n        # anyway it should be taken to STATIC_ROOT because 'test' app is before\n        # 'no_label' app in INSTALLED_APPS\n        self.testfile_path = os.path.join(TEST_ROOT, 'apps', 'test', 'static', 'file2.txt')\n        with open(self.testfile_path, 'w+') as f:\n            f.write('duplicate of file2.txt')\n        os.utime(self.testfile_path, (self.orig_atime - 1, self.orig_mtime - 1))\n        super(TestCollectionFilesOverride, self).setUp()\n\n    def tearDown(self):\n        if os.path.exists(self.testfile_path):\n            os.unlink(self.testfile_path)\n        # set back original modification time\n        os.utime(self.orig_path, (self.orig_atime, self.orig_mtime))\n        super(TestCollectionFilesOverride, self).tearDown()\n\n    def test_ordering_override(self):\n        \"\"\"\n        Test if collectstatic takes files in proper order\n        \"\"\"\n        self.assertFileContains('file2.txt', 'duplicate of file2.txt')\n\n        # run collectstatic again\n        self.run_collectstatic()\n\n        self.assertFileContains('file2.txt', 'duplicate of file2.txt')\n\n        # and now change modification time of no_label/static/file2.txt\n        # test app is first in INSTALLED_APPS so file2.txt should remain unmodified\n        mtime = os.path.getmtime(self.testfile_path)\n        atime = os.path.getatime(self.testfile_path)\n        os.utime(self.orig_path, (mtime + 1, atime + 1))\n\n        # run collectstatic again\n        self.run_collectstatic()\n\n        self.assertFileContains('file2.txt', 'duplicate of file2.txt')\n\n\n@override_settings(\n    STATICFILES_STORAGE='regressiontests.staticfiles_tests.storage.DummyStorage',\n)\nclass TestCollectionNonLocalStorage(CollectionTestCase, TestNoFilesCreated):\n    \"\"\"\n    Tests for #15035\n    \"\"\"\n    pass\n\n\n# we set DEBUG to False here since the template tag wouldn't work otherwise\n@override_settings(**dict(TEST_SETTINGS,\n    STATICFILES_STORAGE='django.contrib.staticfiles.storage.CachedStaticFilesStorage',\n    DEBUG=False,\n))\nclass TestCollectionCachedStorage(BaseCollectionTestCase,\n        BaseStaticFilesTestCase, TestCase):\n    \"\"\"\n    Tests for the Cache busting storage\n    \"\"\"\n    def cached_file_path(self, path):\n        fullpath = self.render_template(self.static_template_snippet(path))\n        return fullpath.replace(settings.STATIC_URL, '')\n\n    def test_template_tag_return(self):\n        \"\"\"\n        Test the CachedStaticFilesStorage backend.\n        \"\"\"\n        self.assertStaticRaises(ValueError,\n                                \"does/not/exist.png\",\n                                \"/static/does/not/exist.png\")\n        self.assertStaticRenders(\"test/file.txt\",\n                                 \"/static/test/file.dad0999e4f8f.txt\")\n        self.assertStaticRenders(\"test/file.txt\",\n                                 \"/static/test/file.dad0999e4f8f.txt\", asvar=True)\n        self.assertStaticRenders(\"cached/styles.css\",\n                                 \"/static/cached/styles.93b1147e8552.css\")\n        self.assertStaticRenders(\"path/\",\n                                 \"/static/path/\")\n        self.assertStaticRenders(\"path/?query\",\n                                 \"/static/path/?query\")\n\n    def test_template_tag_simple_content(self):\n        relpath = self.cached_file_path(\"cached/styles.css\")\n        self.assertEqual(relpath, \"cached/styles.93b1147e8552.css\")\n        with storage.staticfiles_storage.open(relpath) as relfile:\n            content = relfile.read()\n            self.assertNotIn(b\"cached/other.css\", content)\n            self.assertIn(b\"other.d41d8cd98f00.css\", content)\n\n    def test_path_ignored_completely(self):\n        relpath = self.cached_file_path(\"cached/css/ignored.css\")\n        self.assertEqual(relpath, \"cached/css/ignored.6c77f2643390.css\")\n        with storage.staticfiles_storage.open(relpath) as relfile:\n            content = relfile.read()\n            self.assertIn(b'#foobar', content)\n            self.assertIn(b'http:foobar', content)\n            self.assertIn(b'https:foobar', content)\n            self.assertIn(b'data:foobar', content)\n            self.assertIn(b'//foobar', content)\n\n    def test_path_with_querystring(self):\n        relpath = self.cached_file_path(\"cached/styles.css?spam=eggs\")\n        self.assertEqual(relpath,\n                         \"cached/styles.93b1147e8552.css?spam=eggs\")\n        with storage.staticfiles_storage.open(\n                \"cached/styles.93b1147e8552.css\") as relfile:\n            content = relfile.read()\n            self.assertNotIn(b\"cached/other.css\", content)\n            self.assertIn(b\"other.d41d8cd98f00.css\", content)\n\n    def test_path_with_fragment(self):\n        relpath = self.cached_file_path(\"cached/styles.css#eggs\")\n        self.assertEqual(relpath, \"cached/styles.93b1147e8552.css#eggs\")\n        with storage.staticfiles_storage.open(\n                \"cached/styles.93b1147e8552.css\") as relfile:\n            content = relfile.read()\n            self.assertNotIn(b\"cached/other.css\", content)\n            self.assertIn(b\"other.d41d8cd98f00.css\", content)\n\n    def test_path_with_querystring_and_fragment(self):\n        relpath = self.cached_file_path(\"cached/css/fragments.css\")\n        self.assertEqual(relpath, \"cached/css/fragments.75433540b096.css\")\n        with storage.staticfiles_storage.open(relpath) as relfile:\n            content = relfile.read()\n            self.assertIn(b'fonts/font.a4b0478549d0.eot?#iefix', content)\n            self.assertIn(b'fonts/font.b8d603e42714.svg#webfontIyfZbseF', content)\n            self.assertIn(b'data:font/woff;charset=utf-8;base64,d09GRgABAAAAADJoAA0AAAAAR2QAAQAAAAAAAAAAAAA', content)\n            self.assertIn(b'#default#VML', content)\n\n    def test_template_tag_absolute(self):\n        relpath = self.cached_file_path(\"cached/absolute.css\")\n        self.assertEqual(relpath, \"cached/absolute.23f087ad823a.css\")\n        with storage.staticfiles_storage.open(relpath) as relfile:\n            content = relfile.read()\n            self.assertNotIn(b\"/static/cached/styles.css\", content)\n            self.assertIn(b\"/static/cached/styles.93b1147e8552.css\", content)\n            self.assertIn(b'/static/cached/img/relative.acae32e4532b.png', content)\n\n    def test_template_tag_denorm(self):\n        relpath = self.cached_file_path(\"cached/denorm.css\")\n        self.assertEqual(relpath, \"cached/denorm.c5bd139ad821.css\")\n        with storage.staticfiles_storage.open(relpath) as relfile:\n            content = relfile.read()\n            self.assertNotIn(b\"..//cached///styles.css\", content)\n            self.assertIn(b\"../cached/styles.93b1147e8552.css\", content)\n            self.assertNotIn(b\"url(img/relative.png )\", content)\n            self.assertIn(b'url(\"img/relative.acae32e4532b.png', content)\n\n    def test_template_tag_relative(self):\n        relpath = self.cached_file_path(\"cached/relative.css\")\n        self.assertEqual(relpath, \"cached/relative.2217ea7273c2.css\")\n        with storage.staticfiles_storage.open(relpath) as relfile:\n            content = relfile.read()\n            self.assertNotIn(b\"../cached/styles.css\", content)\n            self.assertNotIn(b'@import \"styles.css\"', content)\n            self.assertNotIn(b'url(img/relative.png)', content)\n            self.assertIn(b'url(\"img/relative.acae32e4532b.png\")', content)\n            self.assertIn(b\"../cached/styles.93b1147e8552.css\", content)\n\n    def test_import_replacement(self):\n        \"See #18050\"\n        relpath = self.cached_file_path(\"cached/import.css\")\n        self.assertEqual(relpath, \"cached/import.2b1d40b0bbd4.css\")\n        with storage.staticfiles_storage.open(relpath) as relfile:\n            self.assertIn(b\"\"\"import url(\"styles.93b1147e8552.css\")\"\"\", relfile.read())\n\n    def test_template_tag_deep_relative(self):\n        relpath = self.cached_file_path(\"cached/css/window.css\")\n        self.assertEqual(relpath, \"cached/css/window.9db38d5169f3.css\")\n        with storage.staticfiles_storage.open(relpath) as relfile:\n            content = relfile.read()\n            self.assertNotIn(b'url(img/window.png)', content)\n            self.assertIn(b'url(\"img/window.acae32e4532b.png\")', content)\n\n    def test_template_tag_url(self):\n        relpath = self.cached_file_path(\"cached/url.css\")\n        self.assertEqual(relpath, \"cached/url.615e21601e4b.css\")\n        with storage.staticfiles_storage.open(relpath) as relfile:\n            self.assertIn(b\"https://\", relfile.read())\n\n    def test_cache_invalidation(self):\n        name = \"cached/styles.css\"\n        hashed_name = \"cached/styles.93b1147e8552.css\"\n        # check if the cache is filled correctly as expected\n        cache_key = storage.staticfiles_storage.cache_key(name)\n        cached_name = storage.staticfiles_storage.cache.get(cache_key)\n        self.assertEqual(self.cached_file_path(name), cached_name)\n        # clearing the cache to make sure we re-set it correctly in the url method\n        storage.staticfiles_storage.cache.clear()\n        cached_name = storage.staticfiles_storage.cache.get(cache_key)\n        self.assertEqual(cached_name, None)\n        self.assertEqual(self.cached_file_path(name), hashed_name)\n        cached_name = storage.staticfiles_storage.cache.get(cache_key)\n        self.assertEqual(cached_name, hashed_name)\n\n    def test_post_processing(self):\n        \"\"\"Test that post_processing behaves correctly.\n\n        Files that are alterable should always be post-processed; files that\n        aren't should be skipped.\n\n        collectstatic has already been called once in setUp() for this testcase,\n        therefore we check by verifying behavior on a second run.\n        \"\"\"\n        collectstatic_args = {\n            'interactive': False,\n            'verbosity': '0',\n            'link': False,\n            'clear': False,\n            'dry_run': False,\n            'post_process': True,\n            'use_default_ignore_patterns': True,\n            'ignore_patterns': ['*.ignoreme'],\n        }\n\n        collectstatic_cmd = CollectstaticCommand()\n        collectstatic_cmd.set_options(**collectstatic_args)\n        stats = collectstatic_cmd.collect()\n        self.assertIn(os.path.join('cached', 'css', 'window.css'), stats['post_processed'])\n        self.assertIn(os.path.join('cached', 'css', 'img', 'window.png'), stats['unmodified'])\n        self.assertIn(os.path.join('test', 'nonascii.css'), stats['post_processed'])\n\n    def test_cache_key_memcache_validation(self):\n        \"\"\"\n        Handle cache key creation correctly, see #17861.\n        \"\"\"\n        name = \"/some crazy/long filename/ with spaces Here and ?#%#$/other/stuff/some crazy/long filename/ with spaces Here and ?#%#$/other/stuff/some crazy/long filename/ with spaces Here and ?#%#$/other/stuff/some crazy/long filename/ with spaces Here and ?#%#$/other/stuff/some crazy/long filename/ with spaces Here and ?#%#$/other/stuff/some crazy/\" + \"\\x16\" + \"\\xb4\"\n        cache_key = storage.staticfiles_storage.cache_key(name)\n        cache_validator = BaseCache({})\n        cache_validator.validate_key(cache_key)\n        self.assertEqual(cache_key, 'staticfiles:821ea71ef36f95b3922a77f7364670e7')\n\n\n# we set DEBUG to False here since the template tag wouldn't work otherwise\n@override_settings(**dict(TEST_SETTINGS,\n    STATICFILES_STORAGE='regressiontests.staticfiles_tests.storage.SimpleCachedStaticFilesStorage',\n    DEBUG=False,\n))\nclass TestCollectionSimpleCachedStorage(BaseCollectionTestCase,\n        BaseStaticFilesTestCase, TestCase):\n    \"\"\"\n    Tests for the Cache busting storage\n    \"\"\"\n    def cached_file_path(self, path):\n        fullpath = self.render_template(self.static_template_snippet(path))\n        return fullpath.replace(settings.STATIC_URL, '')\n\n    def test_template_tag_return(self):\n        \"\"\"\n        Test the CachedStaticFilesStorage backend.\n        \"\"\"\n        self.assertStaticRaises(ValueError,\n                                \"does/not/exist.png\",\n                                \"/static/does/not/exist.png\")\n        self.assertStaticRenders(\"test/file.txt\",\n                                 \"/static/test/file.deploy12345.txt\")\n        self.assertStaticRenders(\"cached/styles.css\",\n                                 \"/static/cached/styles.deploy12345.css\")\n        self.assertStaticRenders(\"path/\",\n                                 \"/static/path/\")\n        self.assertStaticRenders(\"path/?query\",\n                                 \"/static/path/?query\")\n\n    def test_template_tag_simple_content(self):\n        relpath = self.cached_file_path(\"cached/styles.css\")\n        self.assertEqual(relpath, \"cached/styles.deploy12345.css\")\n        with storage.staticfiles_storage.open(relpath) as relfile:\n            content = relfile.read()\n            self.assertNotIn(b\"cached/other.css\", content)\n            self.assertIn(b\"other.deploy12345.css\", content)\n\nif sys.platform != 'win32':\n\n    class TestCollectionLinks(CollectionTestCase, TestDefaults):\n        \"\"\"\n        Test ``--link`` option for ``collectstatic`` management command.\n\n        Note that by inheriting ``TestDefaults`` we repeat all\n        the standard file resolving tests here, to make sure using\n        ``--link`` does not change the file-selection semantics.\n        \"\"\"\n        def run_collectstatic(self):\n            super(TestCollectionLinks, self).run_collectstatic(link=True)\n\n        def test_links_created(self):\n            \"\"\"\n            With ``--link``, symbolic links are created.\n            \"\"\"\n            self.assertTrue(os.path.islink(os.path.join(settings.STATIC_ROOT, 'test.txt')))\n\n\nclass TestServeStatic(StaticFilesTestCase):\n    \"\"\"\n    Test static asset serving view.\n    \"\"\"\n    urls = 'regressiontests.staticfiles_tests.urls.default'\n\n    def _response(self, filepath):\n        return self.client.get(\n            posixpath.join(settings.STATIC_URL, filepath))\n\n    def assertFileContains(self, filepath, text):\n        self.assertContains(self._response(filepath), text)\n\n    def assertFileNotFound(self, filepath):\n        self.assertEqual(self._response(filepath).status_code, 404)\n\n\nclass TestServeDisabled(TestServeStatic):\n    \"\"\"\n    Test serving static files disabled when DEBUG is False.\n    \"\"\"\n    def setUp(self):\n        super(TestServeDisabled, self).setUp()\n        settings.DEBUG = False\n\n    def test_disabled_serving(self):\n        six.assertRaisesRegex(self, ImproperlyConfigured, 'The staticfiles view '\n            'can only be used in debug mode ', self._response, 'test.txt')\n\n\nclass TestServeStaticWithDefaultURL(TestServeStatic, TestDefaults):\n    \"\"\"\n    Test static asset serving view with manually configured URLconf.\n    \"\"\"\n    pass\n\n\nclass TestServeStaticWithURLHelper(TestServeStatic, TestDefaults):\n    \"\"\"\n    Test static asset serving view with staticfiles_urlpatterns helper.\n    \"\"\"\n    urls = 'regressiontests.staticfiles_tests.urls.helper'\n\n\nclass TestServeAdminMedia(TestServeStatic):\n    \"\"\"\n    Test serving media from django.contrib.admin.\n    \"\"\"\n    def _response(self, filepath):\n        return self.client.get(\n            posixpath.join(settings.STATIC_URL, 'admin/', filepath))\n\n    def test_serve_admin_media(self):\n        self.assertFileContains('css/base.css', 'body')\n\n\nclass FinderTestCase(object):\n    \"\"\"\n    Base finder test mixin.\n\n    On Windows, sometimes the case of the path we ask the finders for and the\n    path(s) they find can differ. Compare them using os.path.normcase() to\n    avoid false negatives.\n    \"\"\"\n    def test_find_first(self):\n        src, dst = self.find_first\n        found = self.finder.find(src)\n        self.assertEqual(os.path.normcase(found), os.path.normcase(dst))\n\n    def test_find_all(self):\n        src, dst = self.find_all\n        found = self.finder.find(src, all=True)\n        found = [os.path.normcase(f) for f in found]\n        dst = [os.path.normcase(d) for d in dst]\n        self.assertEqual(found, dst)\n\n\nclass TestFileSystemFinder(StaticFilesTestCase, FinderTestCase):\n    \"\"\"\n    Test FileSystemFinder.\n    \"\"\"\n    def setUp(self):\n        super(TestFileSystemFinder, self).setUp()\n        self.finder = finders.FileSystemFinder()\n        test_file_path = os.path.join(TEST_ROOT, 'project', 'documents', 'test', 'file.txt')\n        self.find_first = (os.path.join('test', 'file.txt'), test_file_path)\n        self.find_all = (os.path.join('test', 'file.txt'), [test_file_path])\n\n\nclass TestAppDirectoriesFinder(StaticFilesTestCase, FinderTestCase):\n    \"\"\"\n    Test AppDirectoriesFinder.\n    \"\"\"\n    def setUp(self):\n        super(TestAppDirectoriesFinder, self).setUp()\n        self.finder = finders.AppDirectoriesFinder()\n        test_file_path = os.path.join(TEST_ROOT, 'apps', 'test', 'static', 'test', 'file1.txt')\n        self.find_first = (os.path.join('test', 'file1.txt'), test_file_path)\n        self.find_all = (os.path.join('test', 'file1.txt'), [test_file_path])\n\n\nclass TestDefaultStorageFinder(StaticFilesTestCase, FinderTestCase):\n    \"\"\"\n    Test DefaultStorageFinder.\n    \"\"\"\n    def setUp(self):\n        super(TestDefaultStorageFinder, self).setUp()\n        self.finder = finders.DefaultStorageFinder(\n            storage=storage.StaticFilesStorage(location=settings.MEDIA_ROOT))\n        test_file_path = os.path.join(settings.MEDIA_ROOT, 'media-file.txt')\n        self.find_first = ('media-file.txt', test_file_path)\n        self.find_all = ('media-file.txt', [test_file_path])\n\n\nclass TestMiscFinder(TestCase):\n    \"\"\"\n    A few misc finder tests.\n    \"\"\"\n    def test_get_finder(self):\n        self.assertIsInstance(finders.get_finder(\n            'django.contrib.staticfiles.finders.FileSystemFinder'),\n            finders.FileSystemFinder)\n\n    def test_get_finder_bad_classname(self):\n        self.assertRaises(ImproperlyConfigured, finders.get_finder,\n                          'django.contrib.staticfiles.finders.FooBarFinder')\n\n    def test_get_finder_bad_module(self):\n        self.assertRaises(ImproperlyConfigured,\n            finders.get_finder, 'foo.bar.FooBarFinder')\n\n    @override_settings(STATICFILES_DIRS='a string')\n    def test_non_tuple_raises_exception(self):\n        \"\"\"\n        We can't determine if STATICFILES_DIRS is set correctly just by\n        looking at the type, but we can determine if it's definitely wrong.\n        \"\"\"\n        self.assertRaises(ImproperlyConfigured, finders.FileSystemFinder)\n\n    @override_settings(MEDIA_ROOT='')\n    def test_location_empty(self):\n        self.assertRaises(ImproperlyConfigured, finders.DefaultStorageFinder)\n\n\nclass TestTemplateTag(StaticFilesTestCase):\n\n    def test_template_tag(self):\n        self.assertStaticRenders(\"does/not/exist.png\",\n                                   \"/static/does/not/exist.png\")\n        self.assertStaticRenders(\"testfile.txt\", \"/static/testfile.txt\")\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/staticfiles_tests/urls/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/staticfiles_tests/urls/default.py",
    "content": "from django.conf.urls import patterns, url\n\nurlpatterns = patterns('',\n    url(r'^static/(?P<path>.*)$', 'django.contrib.staticfiles.views.serve'),\n)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/staticfiles_tests/urls/helper.py",
    "content": "from django.contrib.staticfiles.urls import staticfiles_urlpatterns\n\nurlpatterns = staticfiles_urlpatterns()\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/string_lookup/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/string_lookup/models.py",
    "content": "# -*- coding: utf-8 -*-\nfrom __future__ import unicode_literals\n\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n@python_2_unicode_compatible\nclass Foo(models.Model):\n    name = models.CharField(max_length=50)\n    friend = models.CharField(max_length=50, blank=True)\n\n    def __str__(self):\n        return \"Foo %s\" % self.name\n\n@python_2_unicode_compatible\nclass Bar(models.Model):\n    name = models.CharField(max_length=50)\n    normal = models.ForeignKey(Foo, related_name='normal_foo')\n    fwd = models.ForeignKey(\"Whiz\")\n    back = models.ForeignKey(\"Foo\")\n\n    def __str__(self):\n        return \"Bar %s\" % self.place.name\n\n@python_2_unicode_compatible\nclass Whiz(models.Model):\n    name = models.CharField(max_length=50)\n\n    def __str__(self):\n        return \"Whiz %s\" % self.name\n\n@python_2_unicode_compatible\nclass Child(models.Model):\n    parent = models.OneToOneField('Base')\n    name = models.CharField(max_length=50)\n\n    def __str__(self):\n        return \"Child %s\" % self.name\n\n@python_2_unicode_compatible\nclass Base(models.Model):\n    name = models.CharField(max_length=50)\n\n    def __str__(self):\n        return \"Base %s\" % self.name\n\n@python_2_unicode_compatible\nclass Article(models.Model):\n    name = models.CharField(max_length=50)\n    text = models.TextField()\n    submitted_from = models.IPAddressField(blank=True, null=True)\n\n    def __str__(self):\n        return \"Article %s\" % self.name\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/string_lookup/tests.py",
    "content": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import, unicode_literals\n\nfrom django.test import TestCase\nfrom .models import Foo, Whiz, Bar, Article, Base, Child\n\n\nclass StringLookupTests(TestCase):\n\n    def test_string_form_referencing(self):\n        \"\"\"\n        Regression test for #1661 and #1662\n\n        Check that string form referencing of\n        models works, both as pre and post reference, on all RelatedField types.\n        \"\"\"\n\n        f1 = Foo(name=\"Foo1\")\n        f1.save()\n        f2 = Foo(name=\"Foo2\")\n        f2.save()\n\n        w1 = Whiz(name=\"Whiz1\")\n        w1.save()\n\n        b1 = Bar(name=\"Bar1\", normal=f1, fwd=w1, back=f2)\n        b1.save()\n\n        self.assertEqual(b1.normal, f1)\n\n        self.assertEqual(b1.fwd, w1)\n\n        self.assertEqual(b1.back, f2)\n\n        base1 = Base(name=\"Base1\")\n        base1.save()\n\n        child1 = Child(name=\"Child1\", parent=base1)\n        child1.save()\n\n        self.assertEqual(child1.parent, base1)\n\n    def test_unicode_chars_in_queries(self):\n        \"\"\"\n        Regression tests for #3937\n\n        make sure we can use unicode characters in queries.\n        If these tests fail on MySQL, it's a problem with the test setup.\n        A properly configured UTF-8 database can handle this.\n        \"\"\"\n\n        fx = Foo(name='Bjorn', friend='François')\n        fx.save()\n        self.assertEqual(Foo.objects.get(friend__contains='\\xe7'), fx)\n\n        # We can also do the above query using UTF-8 strings.\n        self.assertEqual(Foo.objects.get(friend__contains=b'\\xc3\\xa7'), fx)\n\n    def test_queries_on_textfields(self):\n        \"\"\"\n        Regression tests for #5087\n\n        make sure we can perform queries on TextFields.\n        \"\"\"\n\n        a = Article(name='Test', text='The quick brown fox jumps over the lazy dog.')\n        a.save()\n        self.assertEqual(Article.objects.get(text__exact='The quick brown fox jumps over the lazy dog.'), a)\n\n        self.assertEqual(Article.objects.get(text__contains='quick brown fox'), a)\n\n    def test_ipaddress_on_postgresql(self):\n        \"\"\"\n        Regression test for #708\n\n        \"like\" queries on IP address fields require casting to text (on PostgreSQL).\n        \"\"\"\n        a = Article(name='IP test', text='The body', submitted_from='192.0.2.100')\n        a.save()\n        self.assertEqual(repr(Article.objects.filter(submitted_from__contains='192.0.2')),\n            repr([a]))\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/swappable_models/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/swappable_models/models.py",
    "content": "from django.db import models\n\n\nclass Article(models.Model):\n    title =  models.CharField(max_length=100)\n    publication_date = models.DateField()\n\n    class Meta:\n        swappable = 'TEST_ARTICLE_MODEL'\n\n\nclass AlternateArticle(models.Model):\n    title =  models.CharField(max_length=100)\n    publication_date = models.DateField()\n    byline = models.CharField(max_length=100)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/swappable_models/tests.py",
    "content": "from __future__ import absolute_import, unicode_literals\n\nfrom django.utils.six import StringIO\n\nfrom django.contrib.auth.models import Permission\nfrom django.contrib.contenttypes.models import ContentType\nfrom django.core import management\nfrom django.db.models.loading import cache\nfrom django.test import TestCase\nfrom django.test.utils import override_settings\n\nfrom regressiontests.swappable_models.models import Article\n\n\nclass SwappableModelTests(TestCase):\n    def setUp(self):\n        # This test modifies the installed apps, so we need to make sure\n        # we're not dealing with a cached app list.\n        cache._get_models_cache.clear()\n\n    def tearDown(self):\n        # By fiddling with swappable models, we alter the installed models\n        # cache, so flush it to make sure there are no side effects.\n        cache._get_models_cache.clear()\n\n    @override_settings(TEST_ARTICLE_MODEL='swappable_models.AlternateArticle')\n    def test_generated_data(self):\n        \"Permissions and content types are not created for a swapped model\"\n\n        # Delete all permissions and content_types\n        Permission.objects.filter(content_type__app_label='swappable_models').delete()\n        ContentType.objects.filter(app_label='swappable_models').delete()\n\n        # Re-run syncdb. This will re-build the permissions and content types.\n        new_io = StringIO()\n        management.call_command('syncdb', load_initial_data=False, interactive=False, stdout=new_io)\n\n        # Check that content types and permissions exist for the swapped model,\n        # but not for the swappable model.\n        apps_models = [(p.content_type.app_label, p.content_type.model)\n                       for p in Permission.objects.all()]\n        self.assertIn(('swappable_models', 'alternatearticle'), apps_models)\n        self.assertNotIn(('swappable_models', 'article'), apps_models)\n\n        apps_models = [(ct.app_label, ct.model)\n                       for ct in ContentType.objects.all()]\n        self.assertIn(('swappable_models', 'alternatearticle'), apps_models)\n        self.assertNotIn(('swappable_models', 'article'), apps_models)\n\n    @override_settings(TEST_ARTICLE_MODEL='swappable_models.article')\n    def test_case_insensitive(self):\n        \"Model names are case insensitive. Check that model swapping honors this.\"\n        try:\n            Article.objects.all()\n        except AttributeError:\n            self.fail('Swappable model names should be case insensitive.')\n\n        self.assertIsNone(Article._meta.swapped)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/syndication/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/syndication/feeds.py",
    "content": "from __future__ import absolute_import, unicode_literals\n\nfrom django.contrib.syndication import views\nfrom django.core.exceptions import ObjectDoesNotExist\nfrom django.utils import feedgenerator, tzinfo\n\nfrom .models import Article, Entry\n\n\nclass ComplexFeed(views.Feed):\n    def get_object(self, request, foo=None):\n        if foo is not None:\n            raise ObjectDoesNotExist\n        return None\n\n\nclass TestRss2Feed(views.Feed):\n    title = 'My blog'\n    description = 'A more thorough description of my blog.'\n    link = '/blog/'\n    feed_guid = '/foo/bar/1234'\n    author_name = 'Sally Smith'\n    author_email = 'test@example.com'\n    author_link = 'http://www.example.com/'\n    categories = ('python', 'django')\n    feed_copyright = 'Copyright (c) 2007, Sally Smith'\n    ttl = 600\n\n    def items(self):\n        return Entry.objects.all()\n\n    def item_description(self, item):\n        return \"Overridden description: %s\" % item\n\n    def item_pubdate(self, item):\n        return item.date\n\n    item_author_name = 'Sally Smith'\n    item_author_email = 'test@example.com'\n    item_author_link = 'http://www.example.com/'\n    item_categories = ('python', 'testing')\n    item_copyright = 'Copyright (c) 2007, Sally Smith'\n\n\nclass TestRss091Feed(TestRss2Feed):\n    feed_type = feedgenerator.RssUserland091Feed\n\n\nclass TestNoPubdateFeed(views.Feed):\n    title = 'Test feed'\n    link = '/feed/'\n\n    def items(self):\n        return Entry.objects.all()\n\n\nclass TestAtomFeed(TestRss2Feed):\n    feed_type = feedgenerator.Atom1Feed\n    subtitle = TestRss2Feed.description\n\n\nclass ArticlesFeed(TestRss2Feed):\n    \"\"\"\n    A feed to test no link being defined. Articles have no get_absolute_url()\n    method, and item_link() is not defined.\n    \"\"\"\n    def items(self):\n        return Article.objects.all()\n\n\nclass TestEnclosureFeed(TestRss2Feed):\n    pass\n\n\nclass TemplateFeed(TestRss2Feed):\n    \"\"\"\n    A feed to test defining item titles and descriptions with templates.\n    \"\"\"\n    title_template = 'syndication/title.html'\n    description_template = 'syndication/description.html'\n\n    # Defining a template overrides any item_title definition\n    def item_title(self):\n        return \"Not in a template\"\n\n\nclass NaiveDatesFeed(TestAtomFeed):\n    \"\"\"\n    A feed with naive (non-timezone-aware) dates.\n    \"\"\"\n    def item_pubdate(self, item):\n        return item.date\n\n\nclass TZAwareDatesFeed(TestAtomFeed):\n    \"\"\"\n    A feed with timezone-aware dates.\n    \"\"\"\n    def item_pubdate(self, item):\n        # Provide a weird offset so that the test can know it's getting this\n        # specific offset and not accidentally getting on from\n        # settings.TIME_ZONE.\n        return item.date.replace(tzinfo=tzinfo.FixedOffset(42))\n\n\nclass TestFeedUrlFeed(TestAtomFeed):\n    feed_url = 'http://example.com/customfeedurl/'\n\n\nclass MyCustomAtom1Feed(feedgenerator.Atom1Feed):\n    \"\"\"\n    Test of a custom feed generator class.\n    \"\"\"\n    def root_attributes(self):\n        attrs = super(MyCustomAtom1Feed, self).root_attributes()\n        attrs['django'] = 'rocks'\n        return attrs\n\n    def add_root_elements(self, handler):\n        super(MyCustomAtom1Feed, self).add_root_elements(handler)\n        handler.addQuickElement('spam', 'eggs')\n\n    def item_attributes(self, item):\n        attrs = super(MyCustomAtom1Feed, self).item_attributes(item)\n        attrs['bacon'] = 'yum'\n        return attrs\n\n    def add_item_elements(self, handler, item):\n        super(MyCustomAtom1Feed, self).add_item_elements(handler, item)\n        handler.addQuickElement('ministry', 'silly walks')\n\n\nclass TestCustomFeed(TestAtomFeed):\n    feed_type = MyCustomAtom1Feed\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/syndication/fixtures/feeddata.json",
    "content": "[\n  {\n    \"model\": \"syndication.entry\",\n    \"pk\": 1,\n    \"fields\": {\n      \"title\": \"My first entry\",\n      \"date\": \"1850-01-01 12:30:00\"\n    }\n  },\n  {\n    \"model\": \"syndication.entry\",\n    \"pk\": 2,\n    \"fields\": {\n      \"title\": \"My second entry\",\n      \"date\": \"2008-01-02 12:30:00\"\n    }\n  },\n  {\n    \"model\": \"syndication.entry\",\n    \"pk\": 3,\n    \"fields\": {\n      \"title\": \"My third entry\",\n      \"date\": \"2008-01-02 13:30:00\"\n    }\n  },\n  {\n    \"model\": \"syndication.entry\",\n    \"pk\": 4,\n    \"fields\": {\n      \"title\": \"A & B < C > D\",\n      \"date\": \"2008-01-03 13:30:00\"\n    }\n  },\n  {\n    \"model\": \"syndication.article\",\n    \"pk\": 1,\n    \"fields\": {\n      \"title\": \"My first article\",\n      \"entry\": \"1\"\n    }\n  }\n]\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/syndication/models.py",
    "content": "from django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n\n@python_2_unicode_compatible\nclass Entry(models.Model):\n    title = models.CharField(max_length=200)\n    date = models.DateTimeField()\n\n    class Meta:\n        ordering = ('date',)\n\n    def __str__(self):\n        return self.title\n\n    def get_absolute_url(self):\n        return \"/blog/%s/\" % self.pk\n\n\n@python_2_unicode_compatible\nclass Article(models.Model):\n    title = models.CharField(max_length=200)\n    entry = models.ForeignKey(Entry)\n\n    def __str__(self):\n        return self.title\n\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/syndication/templates/syndication/description.html",
    "content": "Description in your templates: {{ obj }}"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/syndication/templates/syndication/title.html",
    "content": "Title in your templates: {{ obj }}"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/syndication/tests.py",
    "content": "from __future__ import absolute_import, unicode_literals\n\nfrom xml.dom import minidom\n\nfrom django.contrib.syndication import views\nfrom django.core.exceptions import ImproperlyConfigured\nfrom django.test import TestCase\nfrom django.utils import tzinfo\nfrom django.utils.feedgenerator import rfc2822_date, rfc3339_date\n\nfrom .models import Entry\n\n\nclass FeedTestCase(TestCase):\n    fixtures = ['feeddata.json']\n\n    def assertChildNodes(self, elem, expected):\n        actual = set([n.nodeName for n in elem.childNodes])\n        expected = set(expected)\n        self.assertEqual(actual, expected)\n\n    def assertChildNodeContent(self, elem, expected):\n        for k, v in expected.items():\n            self.assertEqual(\n                elem.getElementsByTagName(k)[0].firstChild.wholeText, v)\n\n    def assertCategories(self, elem, expected):\n        self.assertEqual(set(i.firstChild.wholeText for i in elem.childNodes if i.nodeName == 'category'), set(expected))\n\n######################################\n# Feed view\n######################################\n\nclass SyndicationFeedTest(FeedTestCase):\n    \"\"\"\n    Tests for the high-level syndication feed framework.\n    \"\"\"\n    urls = 'regressiontests.syndication.urls'\n\n    def test_rss2_feed(self):\n        \"\"\"\n        Test the structure and content of feeds generated by Rss201rev2Feed.\n        \"\"\"\n        response = self.client.get('/syndication/rss2/')\n        doc = minidom.parseString(response.content)\n\n        # Making sure there's only 1 `rss` element and that the correct\n        # RSS version was specified.\n        feed_elem = doc.getElementsByTagName('rss')\n        self.assertEqual(len(feed_elem), 1)\n        feed = feed_elem[0]\n        self.assertEqual(feed.getAttribute('version'), '2.0')\n\n        # Making sure there's only one `channel` element w/in the\n        # `rss` element.\n        chan_elem = feed.getElementsByTagName('channel')\n        self.assertEqual(len(chan_elem), 1)\n        chan = chan_elem[0]\n\n        # Find the last build date\n        d = Entry.objects.latest('date').date\n        ltz = tzinfo.LocalTimezone(d)\n        last_build_date = rfc2822_date(d.replace(tzinfo=ltz))\n\n        self.assertChildNodes(chan, ['title', 'link', 'description', 'language', 'lastBuildDate', 'item', 'atom:link', 'ttl', 'copyright', 'category'])\n        self.assertChildNodeContent(chan, {\n            'title': 'My blog',\n            'description': 'A more thorough description of my blog.',\n            'link': 'http://example.com/blog/',\n            'language': 'en',\n            'lastBuildDate': last_build_date,\n            #'atom:link': '',\n            'ttl': '600',\n            'copyright': 'Copyright (c) 2007, Sally Smith',\n        })\n        self.assertCategories(chan, ['python', 'django'])\n\n        # Ensure the content of the channel is correct\n        self.assertChildNodeContent(chan, {\n            'title': 'My blog',\n            'link': 'http://example.com/blog/',\n        })\n\n        # Check feed_url is passed\n        self.assertEqual(\n            chan.getElementsByTagName('atom:link')[0].getAttribute('href'),\n            'http://example.com/syndication/rss2/'\n        )\n\n        # Find the pubdate of the first feed item\n        d = Entry.objects.get(pk=1).date\n        ltz = tzinfo.LocalTimezone(d)\n        pub_date = rfc2822_date(d.replace(tzinfo=ltz))\n\n        items = chan.getElementsByTagName('item')\n        self.assertEqual(len(items), Entry.objects.count())\n        self.assertChildNodeContent(items[0], {\n            'title': 'My first entry',\n            'description': 'Overridden description: My first entry',\n            'link': 'http://example.com/blog/1/',\n            'guid': 'http://example.com/blog/1/',\n            'pubDate': pub_date,\n            'author': 'test@example.com (Sally Smith)',\n        })\n        self.assertCategories(items[0], ['python', 'testing'])\n\n        for item in items:\n            self.assertChildNodes(item, ['title', 'link', 'description', 'guid', 'category', 'pubDate', 'author'])\n\n    def test_rss091_feed(self):\n        \"\"\"\n        Test the structure and content of feeds generated by RssUserland091Feed.\n        \"\"\"\n        response = self.client.get('/syndication/rss091/')\n        doc = minidom.parseString(response.content)\n\n        # Making sure there's only 1 `rss` element and that the correct\n        # RSS version was specified.\n        feed_elem = doc.getElementsByTagName('rss')\n        self.assertEqual(len(feed_elem), 1)\n        feed = feed_elem[0]\n        self.assertEqual(feed.getAttribute('version'), '0.91')\n\n        # Making sure there's only one `channel` element w/in the\n        # `rss` element.\n        chan_elem = feed.getElementsByTagName('channel')\n        self.assertEqual(len(chan_elem), 1)\n        chan = chan_elem[0]\n        self.assertChildNodes(chan, ['title', 'link', 'description', 'language', 'lastBuildDate', 'item', 'atom:link', 'ttl', 'copyright', 'category'])\n\n        # Ensure the content of the channel is correct\n        self.assertChildNodeContent(chan, {\n            'title': 'My blog',\n            'link': 'http://example.com/blog/',\n        })\n        self.assertCategories(chan, ['python', 'django'])\n\n        # Check feed_url is passed\n        self.assertEqual(\n            chan.getElementsByTagName('atom:link')[0].getAttribute('href'),\n            'http://example.com/syndication/rss091/'\n        )\n\n        items = chan.getElementsByTagName('item')\n        self.assertEqual(len(items), Entry.objects.count())\n        self.assertChildNodeContent(items[0], {\n            'title': 'My first entry',\n            'description': 'Overridden description: My first entry',\n            'link': 'http://example.com/blog/1/',\n        })\n        for item in items:\n            self.assertChildNodes(item, ['title', 'link', 'description'])\n            self.assertCategories(item, [])\n\n    def test_atom_feed(self):\n        \"\"\"\n        Test the structure and content of feeds generated by Atom1Feed.\n        \"\"\"\n        response = self.client.get('/syndication/atom/')\n        feed = minidom.parseString(response.content).firstChild\n\n        self.assertEqual(feed.nodeName, 'feed')\n        self.assertEqual(feed.getAttribute('xmlns'), 'http://www.w3.org/2005/Atom')\n        self.assertChildNodes(feed, ['title', 'subtitle', 'link', 'id', 'updated', 'entry', 'rights', 'category', 'author'])\n        for link in feed.getElementsByTagName('link'):\n            if link.getAttribute('rel') == 'self':\n                self.assertEqual(link.getAttribute('href'), 'http://example.com/syndication/atom/')\n\n        entries = feed.getElementsByTagName('entry')\n        self.assertEqual(len(entries), Entry.objects.count())\n        for entry in entries:\n            self.assertChildNodes(entry, ['title', 'link', 'id', 'summary', 'category', 'updated', 'rights', 'author'])\n            summary = entry.getElementsByTagName('summary')[0]\n            self.assertEqual(summary.getAttribute('type'), 'html')\n\n    def test_custom_feed_generator(self):\n        response = self.client.get('/syndication/custom/')\n        feed = minidom.parseString(response.content).firstChild\n\n        self.assertEqual(feed.nodeName, 'feed')\n        self.assertEqual(feed.getAttribute('django'), 'rocks')\n        self.assertChildNodes(feed, ['title', 'subtitle', 'link', 'id', 'updated', 'entry', 'spam', 'rights', 'category', 'author'])\n\n        entries = feed.getElementsByTagName('entry')\n        self.assertEqual(len(entries), Entry.objects.count())\n        for entry in entries:\n            self.assertEqual(entry.getAttribute('bacon'), 'yum')\n            self.assertChildNodes(entry, ['title', 'link', 'id', 'summary', 'ministry', 'rights', 'author', 'updated', 'category'])\n            summary = entry.getElementsByTagName('summary')[0]\n            self.assertEqual(summary.getAttribute('type'), 'html')\n\n    def test_title_escaping(self):\n        \"\"\"\n        Tests that titles are escaped correctly in RSS feeds.\n        \"\"\"\n        response = self.client.get('/syndication/rss2/')\n        doc = minidom.parseString(response.content)\n        for item in doc.getElementsByTagName('item'):\n            link = item.getElementsByTagName('link')[0]\n            if link.firstChild.wholeText == 'http://example.com/blog/4/':\n                title = item.getElementsByTagName('title')[0]\n                self.assertEqual(title.firstChild.wholeText, 'A &amp; B &lt; C &gt; D')\n\n    def test_naive_datetime_conversion(self):\n        \"\"\"\n        Test that datetimes are correctly converted to the local time zone.\n        \"\"\"\n        # Naive date times passed in get converted to the local time zone, so\n        # check the recived zone offset against the local offset.\n        response = self.client.get('/syndication/naive-dates/')\n        doc = minidom.parseString(response.content)\n        updated = doc.getElementsByTagName('updated')[0].firstChild.wholeText\n\n        d = Entry.objects.latest('date').date\n        ltz = tzinfo.LocalTimezone(d)\n        latest = rfc3339_date(d.replace(tzinfo=ltz))\n\n        self.assertEqual(updated, latest)\n\n    def test_aware_datetime_conversion(self):\n        \"\"\"\n        Test that datetimes with timezones don't get trodden on.\n        \"\"\"\n        response = self.client.get('/syndication/aware-dates/')\n        doc = minidom.parseString(response.content)\n        updated = doc.getElementsByTagName('updated')[0].firstChild.wholeText\n        self.assertEqual(updated[-6:], '+00:42')\n\n    def test_feed_last_modified_time(self):\n        response = self.client.get('/syndication/naive-dates/')\n        self.assertEqual(response['Last-Modified'], 'Thu, 03 Jan 2008 19:30:00 GMT')\n\n        # No last-modified when feed has no item_pubdate\n        response = self.client.get('/syndication/no_pubdate/')\n        self.assertFalse(response.has_header('Last-Modified'))\n\n    def test_feed_url(self):\n        \"\"\"\n        Test that the feed_url can be overridden.\n        \"\"\"\n        response = self.client.get('/syndication/feedurl/')\n        doc = minidom.parseString(response.content)\n        for link in doc.getElementsByTagName('link'):\n            if link.getAttribute('rel') == 'self':\n                self.assertEqual(link.getAttribute('href'), 'http://example.com/customfeedurl/')\n\n    def test_secure_urls(self):\n        \"\"\"\n        Test URLs are prefixed with https:// when feed is requested over HTTPS.\n        \"\"\"\n        response = self.client.get('/syndication/rss2/', **{\n            'wsgi.url_scheme': 'https',\n        })\n        doc = minidom.parseString(response.content)\n        chan = doc.getElementsByTagName('channel')[0]\n        self.assertEqual(\n            chan.getElementsByTagName('link')[0].firstChild.wholeText[0:5],\n            'https'\n        )\n        atom_link = chan.getElementsByTagName('atom:link')[0]\n        self.assertEqual(atom_link.getAttribute('href')[0:5], 'https')\n        for link in doc.getElementsByTagName('link'):\n            if link.getAttribute('rel') == 'self':\n                self.assertEqual(link.getAttribute('href')[0:5], 'https')\n\n    def test_item_link_error(self):\n        \"\"\"\n        Test that a ImproperlyConfigured is raised if no link could be found\n        for the item(s).\n        \"\"\"\n        self.assertRaises(ImproperlyConfigured,\n                          self.client.get,\n                          '/syndication/articles/')\n\n    def test_template_feed(self):\n        \"\"\"\n        Test that the item title and description can be overridden with\n        templates.\n        \"\"\"\n        response = self.client.get('/syndication/template/')\n        doc = minidom.parseString(response.content)\n        feed = doc.getElementsByTagName('rss')[0]\n        chan = feed.getElementsByTagName('channel')[0]\n        items = chan.getElementsByTagName('item')\n\n        self.assertChildNodeContent(items[0], {\n            'title': 'Title in your templates: My first entry',\n            'description': 'Description in your templates: My first entry',\n            'link': 'http://example.com/blog/1/',\n        })\n\n    def test_add_domain(self):\n        \"\"\"\n        Test add_domain() prefixes domains onto the correct URLs.\n        \"\"\"\n        self.assertEqual(\n            views.add_domain('example.com', '/foo/?arg=value'),\n            'http://example.com/foo/?arg=value'\n        )\n        self.assertEqual(\n            views.add_domain('example.com', '/foo/?arg=value', True),\n            'https://example.com/foo/?arg=value'\n        )\n        self.assertEqual(\n            views.add_domain('example.com', 'http://djangoproject.com/doc/'),\n            'http://djangoproject.com/doc/'\n        )\n        self.assertEqual(\n            views.add_domain('example.com', 'https://djangoproject.com/doc/'),\n            'https://djangoproject.com/doc/'\n        )\n        self.assertEqual(\n            views.add_domain('example.com', 'mailto:uhoh@djangoproject.com'),\n            'mailto:uhoh@djangoproject.com'\n        )\n        self.assertEqual(\n            views.add_domain('example.com', '//example.com/foo/?arg=value'),\n            'http://example.com/foo/?arg=value'\n        )\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/syndication/urls.py",
    "content": "from __future__ import absolute_import\n\nfrom django.conf.urls import patterns\n\nfrom . import feeds\n\n\nurlpatterns = patterns('django.contrib.syndication.views',\n    (r'^syndication/complex/(?P<foo>.*)/$', feeds.ComplexFeed()),\n    (r'^syndication/rss2/$', feeds.TestRss2Feed()),\n    (r'^syndication/rss091/$', feeds.TestRss091Feed()),\n    (r'^syndication/no_pubdate/$', feeds.TestNoPubdateFeed()),\n    (r'^syndication/atom/$', feeds.TestAtomFeed()),\n    (r'^syndication/custom/$', feeds.TestCustomFeed()),\n    (r'^syndication/naive-dates/$', feeds.NaiveDatesFeed()),\n    (r'^syndication/aware-dates/$', feeds.TZAwareDatesFeed()),\n    (r'^syndication/feedurl/$', feeds.TestFeedUrlFeed()),\n    (r'^syndication/articles/$', feeds.ArticlesFeed()),\n    (r'^syndication/template/$', feeds.TemplateFeed()),\n)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/templates/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/templates/alternate_urls.py",
    "content": "# coding: utf-8\n\nfrom __future__ import absolute_import\n\nfrom django.conf.urls import patterns, url\n\nfrom . import views\n\n\nurlpatterns = patterns('',\n    # View returning a template response\n    (r'^template_response_view/$', views.template_response_view),\n\n    # A view that can be hard to find...\n    url(r'^snark/', views.snark, name='snark'),\n)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/templates/callables.py",
    "content": "from __future__ import unicode_literals\n\nfrom django import template\nfrom django.utils.unittest import TestCase\n\nclass CallableVariablesTests(TestCase):\n\n    def test_callable(self):\n\n        class Doodad(object):\n            def __init__(self, value):\n                self.num_calls = 0\n                self.value = value\n            def __call__(self):\n                self.num_calls += 1\n                return {\"the_value\": self.value}\n\n        my_doodad = Doodad(42)\n        c = template.Context({\"my_doodad\": my_doodad})\n\n        # We can't access ``my_doodad.value`` in the template, because\n        # ``my_doodad.__call__`` will be invoked first, yielding a dictionary\n        # without a key ``value``.\n        t = template.Template('{{ my_doodad.value }}')\n        self.assertEqual(t.render(c), '')\n\n        # We can confirm that the doodad has been called\n        self.assertEqual(my_doodad.num_calls, 1)\n\n        # But we can access keys on the dict that's returned\n        # by ``__call__``, instead.\n        t = template.Template('{{ my_doodad.the_value }}')\n        self.assertEqual(t.render(c), '42')\n        self.assertEqual(my_doodad.num_calls, 2)\n\n    def test_alters_data(self):\n\n        class Doodad(object):\n            alters_data = True\n            def __init__(self, value):\n                self.num_calls = 0\n                self.value = value\n            def __call__(self):\n                self.num_calls += 1\n                return {\"the_value\": self.value}\n\n        my_doodad = Doodad(42)\n        c = template.Context({\"my_doodad\": my_doodad})\n\n        # Since ``my_doodad.alters_data`` is True, the template system will not\n        # try to call our doodad but will use TEMPLATE_STRING_IF_INVALID\n        t = template.Template('{{ my_doodad.value }}')\n        self.assertEqual(t.render(c), '')\n        t = template.Template('{{ my_doodad.the_value }}')\n        self.assertEqual(t.render(c), '')\n\n        # Double-check that the object was really never called during the\n        # template rendering.\n        self.assertEqual(my_doodad.num_calls, 0)\n\n    def test_do_not_call(self):\n\n        class Doodad(object):\n            do_not_call_in_templates = True\n            def __init__(self, value):\n                self.num_calls = 0\n                self.value = value\n            def __call__(self):\n                self.num_calls += 1\n                return {\"the_value\": self.value}\n\n        my_doodad = Doodad(42)\n        c = template.Context({\"my_doodad\": my_doodad})\n\n        # Since ``my_doodad.do_not_call_in_templates`` is True, the template\n        # system will not try to call our doodad.  We can access its attributes\n        # as normal, and we don't have access to the dict that it returns when\n        # called.\n        t = template.Template('{{ my_doodad.value }}')\n        self.assertEqual(t.render(c), '42')\n        t = template.Template('{{ my_doodad.the_value }}')\n        self.assertEqual(t.render(c), '')\n\n        # Double-check that the object was really never called during the\n        # template rendering.\n        self.assertEqual(my_doodad.num_calls, 0)\n\n    def test_do_not_call_and_alters_data(self):\n        # If we combine ``alters_data`` and ``do_not_call_in_templates``, the\n        # ``alters_data`` attribute will not make any difference in the\n        # template system's behavior.\n\n        class Doodad(object):\n            do_not_call_in_templates = True\n            alters_data = True\n            def __init__(self, value):\n                self.num_calls = 0\n                self.value = value\n            def __call__(self):\n                self.num_calls += 1\n                return {\"the_value\": self.value}\n\n        my_doodad = Doodad(42)\n        c = template.Context({\"my_doodad\": my_doodad})\n\n        t = template.Template('{{ my_doodad.value }}')\n        self.assertEqual(t.render(c), '42')\n        t = template.Template('{{ my_doodad.the_value }}')\n        self.assertEqual(t.render(c), '')\n\n        # Double-check that the object was really never called during the\n        # template rendering.\n        self.assertEqual(my_doodad.num_calls, 0)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/templates/context.py",
    "content": "# coding: utf-8\nfrom django.template import Context\nfrom django.utils.unittest import TestCase\n\n\nclass ContextTests(TestCase):\n    def test_context(self):\n        c = Context({\"a\": 1, \"b\": \"xyzzy\"})\n        self.assertEqual(c[\"a\"], 1)\n        self.assertEqual(c.push(), {})\n        c[\"a\"] = 2\n        self.assertEqual(c[\"a\"], 2)\n        self.assertEqual(c.get(\"a\"), 2)\n        self.assertEqual(c.pop(), {\"a\": 2})\n        self.assertEqual(c[\"a\"], 1)\n        self.assertEqual(c.get(\"foo\", 42), 42)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/templates/custom.py",
    "content": "from __future__ import absolute_import, unicode_literals\n\nfrom django import template\nfrom django.utils import six\nfrom django.utils.unittest import TestCase\n\nfrom .templatetags import custom\n\n\nclass CustomFilterTests(TestCase):\n    def test_filter(self):\n        t = template.Template(\"{% load custom %}{{ string|trim:5 }}\")\n        self.assertEqual(\n            t.render(template.Context({\"string\": \"abcdefghijklmnopqrstuvwxyz\"})),\n            \"abcde\"\n        )\n\n\nclass CustomTagTests(TestCase):\n    def verify_tag(self, tag, name):\n        self.assertEqual(tag.__name__, name)\n        self.assertEqual(tag.__doc__, 'Expected %s __doc__' % name)\n        self.assertEqual(tag.__dict__['anything'], 'Expected %s __dict__' % name)\n\n    def test_simple_tags(self):\n        c = template.Context({'value': 42})\n\n        t = template.Template('{% load custom %}{% no_params %}')\n        self.assertEqual(t.render(c), 'no_params - Expected result')\n\n        t = template.Template('{% load custom %}{% one_param 37 %}')\n        self.assertEqual(t.render(c), 'one_param - Expected result: 37')\n\n        t = template.Template('{% load custom %}{% explicit_no_context 37 %}')\n        self.assertEqual(t.render(c), 'explicit_no_context - Expected result: 37')\n\n        t = template.Template('{% load custom %}{% no_params_with_context %}')\n        self.assertEqual(t.render(c), 'no_params_with_context - Expected result (context value: 42)')\n\n        t = template.Template('{% load custom %}{% params_and_context 37 %}')\n        self.assertEqual(t.render(c), 'params_and_context - Expected result (context value: 42): 37')\n\n        t = template.Template('{% load custom %}{% simple_two_params 37 42 %}')\n        self.assertEqual(t.render(c), 'simple_two_params - Expected result: 37, 42')\n\n        t = template.Template('{% load custom %}{% simple_one_default 37 %}')\n        self.assertEqual(t.render(c), 'simple_one_default - Expected result: 37, hi')\n\n        t = template.Template('{% load custom %}{% simple_one_default 37 two=\"hello\" %}')\n        self.assertEqual(t.render(c), 'simple_one_default - Expected result: 37, hello')\n\n        t = template.Template('{% load custom %}{% simple_one_default one=99 two=\"hello\" %}')\n        self.assertEqual(t.render(c), 'simple_one_default - Expected result: 99, hello')\n\n        six.assertRaisesRegex(self, template.TemplateSyntaxError,\n            \"'simple_one_default' received unexpected keyword argument 'three'\",\n            template.Template, '{% load custom %}{% simple_one_default 99 two=\"hello\" three=\"foo\" %}')\n\n        t = template.Template('{% load custom %}{% simple_one_default 37 42 %}')\n        self.assertEqual(t.render(c), 'simple_one_default - Expected result: 37, 42')\n\n        t = template.Template('{% load custom %}{% simple_unlimited_args 37 %}')\n        self.assertEqual(t.render(c), 'simple_unlimited_args - Expected result: 37, hi')\n\n        t = template.Template('{% load custom %}{% simple_unlimited_args 37 42 56 89 %}')\n        self.assertEqual(t.render(c), 'simple_unlimited_args - Expected result: 37, 42, 56, 89')\n\n        t = template.Template('{% load custom %}{% simple_only_unlimited_args %}')\n        self.assertEqual(t.render(c), 'simple_only_unlimited_args - Expected result: ')\n\n        t = template.Template('{% load custom %}{% simple_only_unlimited_args 37 42 56 89 %}')\n        self.assertEqual(t.render(c), 'simple_only_unlimited_args - Expected result: 37, 42, 56, 89')\n\n        six.assertRaisesRegex(self, template.TemplateSyntaxError,\n            \"'simple_two_params' received too many positional arguments\",\n            template.Template, '{% load custom %}{% simple_two_params 37 42 56 %}')\n\n        six.assertRaisesRegex(self, template.TemplateSyntaxError,\n            \"'simple_one_default' received too many positional arguments\",\n            template.Template, '{% load custom %}{% simple_one_default 37 42 56 %}')\n\n        t = template.Template('{% load custom %}{% simple_unlimited_args_kwargs 37 40|add:2 56 eggs=\"scrambled\" four=1|add:3 %}')\n        self.assertEqual(t.render(c), 'simple_unlimited_args_kwargs - Expected result: 37, 42, 56 / eggs=scrambled, four=4')\n\n        six.assertRaisesRegex(self, template.TemplateSyntaxError,\n            \"'simple_unlimited_args_kwargs' received some positional argument\\(s\\) after some keyword argument\\(s\\)\",\n            template.Template, '{% load custom %}{% simple_unlimited_args_kwargs 37 40|add:2 eggs=\"scrambled\" 56 four=1|add:3 %}')\n\n        six.assertRaisesRegex(self, template.TemplateSyntaxError,\n            \"'simple_unlimited_args_kwargs' received multiple values for keyword argument 'eggs'\",\n            template.Template, '{% load custom %}{% simple_unlimited_args_kwargs 37 eggs=\"scrambled\" eggs=\"scrambled\" %}')\n\n    def test_simple_tag_registration(self):\n        # Test that the decorators preserve the decorated function's docstring, name and attributes.\n        self.verify_tag(custom.no_params, 'no_params')\n        self.verify_tag(custom.one_param, 'one_param')\n        self.verify_tag(custom.explicit_no_context, 'explicit_no_context')\n        self.verify_tag(custom.no_params_with_context, 'no_params_with_context')\n        self.verify_tag(custom.params_and_context, 'params_and_context')\n        self.verify_tag(custom.simple_unlimited_args_kwargs, 'simple_unlimited_args_kwargs')\n        self.verify_tag(custom.simple_tag_without_context_parameter, 'simple_tag_without_context_parameter')\n\n    def test_simple_tag_missing_context(self):\n        # The 'context' parameter must be present when takes_context is True\n        six.assertRaisesRegex(self, template.TemplateSyntaxError,\n            \"'simple_tag_without_context_parameter' is decorated with takes_context=True so it must have a first argument of 'context'\",\n            template.Template, '{% load custom %}{% simple_tag_without_context_parameter 123 %}')\n\n    def test_inclusion_tags(self):\n        c = template.Context({'value': 42})\n\n        t = template.Template('{% load custom %}{% inclusion_no_params %}')\n        self.assertEqual(t.render(c), 'inclusion_no_params - Expected result\\n')\n\n        t = template.Template('{% load custom %}{% inclusion_one_param 37 %}')\n        self.assertEqual(t.render(c), 'inclusion_one_param - Expected result: 37\\n')\n\n        t = template.Template('{% load custom %}{% inclusion_explicit_no_context 37 %}')\n        self.assertEqual(t.render(c), 'inclusion_explicit_no_context - Expected result: 37\\n')\n\n        t = template.Template('{% load custom %}{% inclusion_no_params_with_context %}')\n        self.assertEqual(t.render(c), 'inclusion_no_params_with_context - Expected result (context value: 42)\\n')\n\n        t = template.Template('{% load custom %}{% inclusion_params_and_context 37 %}')\n        self.assertEqual(t.render(c), 'inclusion_params_and_context - Expected result (context value: 42): 37\\n')\n\n        t = template.Template('{% load custom %}{% inclusion_two_params 37 42 %}')\n        self.assertEqual(t.render(c), 'inclusion_two_params - Expected result: 37, 42\\n')\n\n        t = template.Template('{% load custom %}{% inclusion_one_default 37 %}')\n        self.assertEqual(t.render(c), 'inclusion_one_default - Expected result: 37, hi\\n')\n\n        t = template.Template('{% load custom %}{% inclusion_one_default 37 two=\"hello\" %}')\n        self.assertEqual(t.render(c), 'inclusion_one_default - Expected result: 37, hello\\n')\n\n        t = template.Template('{% load custom %}{% inclusion_one_default one=99 two=\"hello\" %}')\n        self.assertEqual(t.render(c), 'inclusion_one_default - Expected result: 99, hello\\n')\n\n        six.assertRaisesRegex(self, template.TemplateSyntaxError,\n            \"'inclusion_one_default' received unexpected keyword argument 'three'\",\n            template.Template, '{% load custom %}{% inclusion_one_default 99 two=\"hello\" three=\"foo\" %}')\n\n        t = template.Template('{% load custom %}{% inclusion_one_default 37 42 %}')\n        self.assertEqual(t.render(c), 'inclusion_one_default - Expected result: 37, 42\\n')\n\n        t = template.Template('{% load custom %}{% inclusion_unlimited_args 37 %}')\n        self.assertEqual(t.render(c), 'inclusion_unlimited_args - Expected result: 37, hi\\n')\n\n        t = template.Template('{% load custom %}{% inclusion_unlimited_args 37 42 56 89 %}')\n        self.assertEqual(t.render(c), 'inclusion_unlimited_args - Expected result: 37, 42, 56, 89\\n')\n\n        t = template.Template('{% load custom %}{% inclusion_only_unlimited_args %}')\n        self.assertEqual(t.render(c), 'inclusion_only_unlimited_args - Expected result: \\n')\n\n        t = template.Template('{% load custom %}{% inclusion_only_unlimited_args 37 42 56 89 %}')\n        self.assertEqual(t.render(c), 'inclusion_only_unlimited_args - Expected result: 37, 42, 56, 89\\n')\n\n        six.assertRaisesRegex(self, template.TemplateSyntaxError,\n            \"'inclusion_two_params' received too many positional arguments\",\n            template.Template, '{% load custom %}{% inclusion_two_params 37 42 56 %}')\n\n        six.assertRaisesRegex(self, template.TemplateSyntaxError,\n            \"'inclusion_one_default' received too many positional arguments\",\n            template.Template, '{% load custom %}{% inclusion_one_default 37 42 56 %}')\n\n        six.assertRaisesRegex(self, template.TemplateSyntaxError,\n            \"'inclusion_one_default' did not receive value\\(s\\) for the argument\\(s\\): 'one'\",\n            template.Template, '{% load custom %}{% inclusion_one_default %}')\n\n        six.assertRaisesRegex(self, template.TemplateSyntaxError,\n            \"'inclusion_unlimited_args' did not receive value\\(s\\) for the argument\\(s\\): 'one'\",\n            template.Template, '{% load custom %}{% inclusion_unlimited_args %}')\n\n        t = template.Template('{% load custom %}{% inclusion_unlimited_args_kwargs 37 40|add:2 56 eggs=\"scrambled\" four=1|add:3 %}')\n        self.assertEqual(t.render(c), 'inclusion_unlimited_args_kwargs - Expected result: 37, 42, 56 / eggs=scrambled, four=4\\n')\n\n        six.assertRaisesRegex(self, template.TemplateSyntaxError,\n            \"'inclusion_unlimited_args_kwargs' received some positional argument\\(s\\) after some keyword argument\\(s\\)\",\n            template.Template, '{% load custom %}{% inclusion_unlimited_args_kwargs 37 40|add:2 eggs=\"scrambled\" 56 four=1|add:3 %}')\n\n        six.assertRaisesRegex(self, template.TemplateSyntaxError,\n            \"'inclusion_unlimited_args_kwargs' received multiple values for keyword argument 'eggs'\",\n            template.Template, '{% load custom %}{% inclusion_unlimited_args_kwargs 37 eggs=\"scrambled\" eggs=\"scrambled\" %}')\n\n    def test_include_tag_missing_context(self):\n        # The 'context' parameter must be present when takes_context is True\n        six.assertRaisesRegex(self, template.TemplateSyntaxError,\n            \"'inclusion_tag_without_context_parameter' is decorated with takes_context=True so it must have a first argument of 'context'\",\n            template.Template, '{% load custom %}{% inclusion_tag_without_context_parameter 123 %}')\n\n    def test_inclusion_tags_from_template(self):\n        c = template.Context({'value': 42})\n\n        t = template.Template('{% load custom %}{% inclusion_no_params_from_template %}')\n        self.assertEqual(t.render(c), 'inclusion_no_params_from_template - Expected result\\n')\n\n        t = template.Template('{% load custom %}{% inclusion_one_param_from_template 37 %}')\n        self.assertEqual(t.render(c), 'inclusion_one_param_from_template - Expected result: 37\\n')\n\n        t = template.Template('{% load custom %}{% inclusion_explicit_no_context_from_template 37 %}')\n        self.assertEqual(t.render(c), 'inclusion_explicit_no_context_from_template - Expected result: 37\\n')\n\n        t = template.Template('{% load custom %}{% inclusion_no_params_with_context_from_template %}')\n        self.assertEqual(t.render(c), 'inclusion_no_params_with_context_from_template - Expected result (context value: 42)\\n')\n\n        t = template.Template('{% load custom %}{% inclusion_params_and_context_from_template 37 %}')\n        self.assertEqual(t.render(c), 'inclusion_params_and_context_from_template - Expected result (context value: 42): 37\\n')\n\n        t = template.Template('{% load custom %}{% inclusion_two_params_from_template 37 42 %}')\n        self.assertEqual(t.render(c), 'inclusion_two_params_from_template - Expected result: 37, 42\\n')\n\n        t = template.Template('{% load custom %}{% inclusion_one_default_from_template 37 %}')\n        self.assertEqual(t.render(c), 'inclusion_one_default_from_template - Expected result: 37, hi\\n')\n\n        t = template.Template('{% load custom %}{% inclusion_one_default_from_template 37 42 %}')\n        self.assertEqual(t.render(c), 'inclusion_one_default_from_template - Expected result: 37, 42\\n')\n\n        t = template.Template('{% load custom %}{% inclusion_unlimited_args_from_template 37 %}')\n        self.assertEqual(t.render(c), 'inclusion_unlimited_args_from_template - Expected result: 37, hi\\n')\n\n        t = template.Template('{% load custom %}{% inclusion_unlimited_args_from_template 37 42 56 89 %}')\n        self.assertEqual(t.render(c), 'inclusion_unlimited_args_from_template - Expected result: 37, 42, 56, 89\\n')\n\n        t = template.Template('{% load custom %}{% inclusion_only_unlimited_args_from_template %}')\n        self.assertEqual(t.render(c), 'inclusion_only_unlimited_args_from_template - Expected result: \\n')\n\n        t = template.Template('{% load custom %}{% inclusion_only_unlimited_args_from_template 37 42 56 89 %}')\n        self.assertEqual(t.render(c), 'inclusion_only_unlimited_args_from_template - Expected result: 37, 42, 56, 89\\n')\n\n    def test_inclusion_tag_registration(self):\n        # Test that the decorators preserve the decorated function's docstring, name and attributes.\n        self.verify_tag(custom.inclusion_no_params, 'inclusion_no_params')\n        self.verify_tag(custom.inclusion_one_param, 'inclusion_one_param')\n        self.verify_tag(custom.inclusion_explicit_no_context, 'inclusion_explicit_no_context')\n        self.verify_tag(custom.inclusion_no_params_with_context, 'inclusion_no_params_with_context')\n        self.verify_tag(custom.inclusion_params_and_context, 'inclusion_params_and_context')\n        self.verify_tag(custom.inclusion_two_params, 'inclusion_two_params')\n        self.verify_tag(custom.inclusion_one_default, 'inclusion_one_default')\n        self.verify_tag(custom.inclusion_unlimited_args, 'inclusion_unlimited_args')\n        self.verify_tag(custom.inclusion_only_unlimited_args, 'inclusion_only_unlimited_args')\n        self.verify_tag(custom.inclusion_tag_without_context_parameter, 'inclusion_tag_without_context_parameter')\n        self.verify_tag(custom.inclusion_tag_use_l10n, 'inclusion_tag_use_l10n')\n        self.verify_tag(custom.inclusion_tag_current_app, 'inclusion_tag_current_app')\n        self.verify_tag(custom.inclusion_unlimited_args_kwargs, 'inclusion_unlimited_args_kwargs')\n\n    def test_15070_current_app(self):\n        \"\"\"\n        Test that inclusion tag passes down `current_app` of context to the\n        Context of the included/rendered template as well.\n        \"\"\"\n        c = template.Context({})\n        t = template.Template('{% load custom %}{% inclusion_tag_current_app %}')\n        self.assertEqual(t.render(c).strip(), 'None')\n\n        c.current_app = 'advanced'\n        self.assertEqual(t.render(c).strip(), 'advanced')\n\n    def test_15070_use_l10n(self):\n        \"\"\"\n        Test that inclusion tag passes down `use_l10n` of context to the\n        Context of the included/rendered template as well.\n        \"\"\"\n        c = template.Context({})\n        t = template.Template('{% load custom %}{% inclusion_tag_use_l10n %}')\n        self.assertEqual(t.render(c).strip(), 'None')\n\n        c.use_l10n = True\n        self.assertEqual(t.render(c).strip(), 'True')\n\n    def test_assignment_tags(self):\n        c = template.Context({'value': 42})\n\n        t = template.Template('{% load custom %}{% assignment_no_params as var %}The result is: {{ var }}')\n        self.assertEqual(t.render(c), 'The result is: assignment_no_params - Expected result')\n\n        t = template.Template('{% load custom %}{% assignment_one_param 37 as var %}The result is: {{ var }}')\n        self.assertEqual(t.render(c), 'The result is: assignment_one_param - Expected result: 37')\n\n        t = template.Template('{% load custom %}{% assignment_explicit_no_context 37 as var %}The result is: {{ var }}')\n        self.assertEqual(t.render(c), 'The result is: assignment_explicit_no_context - Expected result: 37')\n\n        t = template.Template('{% load custom %}{% assignment_no_params_with_context as var %}The result is: {{ var }}')\n        self.assertEqual(t.render(c), 'The result is: assignment_no_params_with_context - Expected result (context value: 42)')\n\n        t = template.Template('{% load custom %}{% assignment_params_and_context 37 as var %}The result is: {{ var }}')\n        self.assertEqual(t.render(c), 'The result is: assignment_params_and_context - Expected result (context value: 42): 37')\n\n        t = template.Template('{% load custom %}{% assignment_two_params 37 42 as var %}The result is: {{ var }}')\n        self.assertEqual(t.render(c), 'The result is: assignment_two_params - Expected result: 37, 42')\n\n        t = template.Template('{% load custom %}{% assignment_one_default 37 as var %}The result is: {{ var }}')\n        self.assertEqual(t.render(c), 'The result is: assignment_one_default - Expected result: 37, hi')\n\n        t = template.Template('{% load custom %}{% assignment_one_default 37 two=\"hello\" as var %}The result is: {{ var }}')\n        self.assertEqual(t.render(c), 'The result is: assignment_one_default - Expected result: 37, hello')\n\n        t = template.Template('{% load custom %}{% assignment_one_default one=99 two=\"hello\" as var %}The result is: {{ var }}')\n        self.assertEqual(t.render(c), 'The result is: assignment_one_default - Expected result: 99, hello')\n\n        six.assertRaisesRegex(self, template.TemplateSyntaxError,\n            \"'assignment_one_default' received unexpected keyword argument 'three'\",\n            template.Template, '{% load custom %}{% assignment_one_default 99 two=\"hello\" three=\"foo\" as var %}')\n\n        t = template.Template('{% load custom %}{% assignment_one_default 37 42 as var %}The result is: {{ var }}')\n        self.assertEqual(t.render(c), 'The result is: assignment_one_default - Expected result: 37, 42')\n\n        t = template.Template('{% load custom %}{% assignment_unlimited_args 37 as var %}The result is: {{ var }}')\n        self.assertEqual(t.render(c), 'The result is: assignment_unlimited_args - Expected result: 37, hi')\n\n        t = template.Template('{% load custom %}{% assignment_unlimited_args 37 42 56 89 as var %}The result is: {{ var }}')\n        self.assertEqual(t.render(c), 'The result is: assignment_unlimited_args - Expected result: 37, 42, 56, 89')\n\n        t = template.Template('{% load custom %}{% assignment_only_unlimited_args as var %}The result is: {{ var }}')\n        self.assertEqual(t.render(c), 'The result is: assignment_only_unlimited_args - Expected result: ')\n\n        t = template.Template('{% load custom %}{% assignment_only_unlimited_args 37 42 56 89 as var %}The result is: {{ var }}')\n        self.assertEqual(t.render(c), 'The result is: assignment_only_unlimited_args - Expected result: 37, 42, 56, 89')\n\n        six.assertRaisesRegex(self, template.TemplateSyntaxError,\n            \"'assignment_one_param' tag takes at least 2 arguments and the second last argument must be 'as'\",\n            template.Template, '{% load custom %}{% assignment_one_param 37 %}The result is: {{ var }}')\n\n        six.assertRaisesRegex(self, template.TemplateSyntaxError,\n            \"'assignment_one_param' tag takes at least 2 arguments and the second last argument must be 'as'\",\n            template.Template, '{% load custom %}{% assignment_one_param 37 as %}The result is: {{ var }}')\n\n        six.assertRaisesRegex(self, template.TemplateSyntaxError,\n            \"'assignment_one_param' tag takes at least 2 arguments and the second last argument must be 'as'\",\n            template.Template, '{% load custom %}{% assignment_one_param 37 ass var %}The result is: {{ var }}')\n\n        six.assertRaisesRegex(self, template.TemplateSyntaxError,\n            \"'assignment_two_params' received too many positional arguments\",\n            template.Template, '{% load custom %}{% assignment_two_params 37 42 56 as var %}The result is: {{ var }}')\n\n        six.assertRaisesRegex(self, template.TemplateSyntaxError,\n            \"'assignment_one_default' received too many positional arguments\",\n            template.Template, '{% load custom %}{% assignment_one_default 37 42 56 as var %}The result is: {{ var }}')\n\n        six.assertRaisesRegex(self, template.TemplateSyntaxError,\n            \"'assignment_one_default' did not receive value\\(s\\) for the argument\\(s\\): 'one'\",\n            template.Template, '{% load custom %}{% assignment_one_default as var %}The result is: {{ var }}')\n\n        six.assertRaisesRegex(self, template.TemplateSyntaxError,\n            \"'assignment_unlimited_args' did not receive value\\(s\\) for the argument\\(s\\): 'one'\",\n            template.Template, '{% load custom %}{% assignment_unlimited_args as var %}The result is: {{ var }}')\n\n        t = template.Template('{% load custom %}{% assignment_unlimited_args_kwargs 37 40|add:2 56 eggs=\"scrambled\" four=1|add:3 as var %}The result is: {{ var }}')\n        self.assertEqual(t.render(c), 'The result is: assignment_unlimited_args_kwargs - Expected result: 37, 42, 56 / eggs=scrambled, four=4')\n\n        six.assertRaisesRegex(self, template.TemplateSyntaxError,\n            \"'assignment_unlimited_args_kwargs' received some positional argument\\(s\\) after some keyword argument\\(s\\)\",\n            template.Template, '{% load custom %}{% assignment_unlimited_args_kwargs 37 40|add:2 eggs=\"scrambled\" 56 four=1|add:3 as var %}The result is: {{ var }}')\n\n        six.assertRaisesRegex(self, template.TemplateSyntaxError,\n            \"'assignment_unlimited_args_kwargs' received multiple values for keyword argument 'eggs'\",\n            template.Template, '{% load custom %}{% assignment_unlimited_args_kwargs 37 eggs=\"scrambled\" eggs=\"scrambled\" as var %}The result is: {{ var }}')\n\n    def test_assignment_tag_registration(self):\n        # Test that the decorators preserve the decorated function's docstring, name and attributes.\n        self.verify_tag(custom.assignment_no_params, 'assignment_no_params')\n        self.verify_tag(custom.assignment_one_param, 'assignment_one_param')\n        self.verify_tag(custom.assignment_explicit_no_context, 'assignment_explicit_no_context')\n        self.verify_tag(custom.assignment_no_params_with_context, 'assignment_no_params_with_context')\n        self.verify_tag(custom.assignment_params_and_context, 'assignment_params_and_context')\n        self.verify_tag(custom.assignment_one_default, 'assignment_one_default')\n        self.verify_tag(custom.assignment_two_params, 'assignment_two_params')\n        self.verify_tag(custom.assignment_unlimited_args, 'assignment_unlimited_args')\n        self.verify_tag(custom.assignment_only_unlimited_args, 'assignment_only_unlimited_args')\n        self.verify_tag(custom.assignment_unlimited_args, 'assignment_unlimited_args')\n        self.verify_tag(custom.assignment_unlimited_args_kwargs, 'assignment_unlimited_args_kwargs')\n        self.verify_tag(custom.assignment_tag_without_context_parameter, 'assignment_tag_without_context_parameter')\n\n    def test_assignment_tag_missing_context(self):\n        # The 'context' parameter must be present when takes_context is True\n        six.assertRaisesRegex(self, template.TemplateSyntaxError,\n            \"'assignment_tag_without_context_parameter' is decorated with takes_context=True so it must have a first argument of 'context'\",\n            template.Template, '{% load custom %}{% assignment_tag_without_context_parameter 123 as var %}')\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/templates/filters.py",
    "content": "# coding: utf-8\n\"\"\"\nTests for template filters (as opposed to template tags).\n\nThe tests are hidden inside a function so that things like timestamps and\ntimezones are only evaluated at the moment of execution and will therefore be\nconsistent.\n\"\"\"\nfrom __future__ import unicode_literals\n\nfrom datetime import date, datetime, time, timedelta\n\nfrom django.test.utils import str_prefix\nfrom django.utils.tzinfo import LocalTimezone, FixedOffset\nfrom django.utils.safestring import mark_safe\nfrom django.utils.encoding import python_2_unicode_compatible\n\n# These two classes are used to test auto-escaping of __unicode__ output.\n@python_2_unicode_compatible\nclass UnsafeClass:\n    def __str__(self):\n        return 'you & me'\n\n@python_2_unicode_compatible\nclass SafeClass:\n    def __str__(self):\n        return mark_safe('you &gt; me')\n\n# RESULT SYNTAX --\n# 'template_name': ('template contents', 'context dict',\n#                   'expected string output' or Exception class)\ndef get_filter_tests():\n    now = datetime.now()\n    now_tz = datetime.now(LocalTimezone(now))\n    now_tz_i = datetime.now(FixedOffset((3 * 60) + 15)) # imaginary time zone\n    today = date.today()\n\n    return {\n        # Default compare with datetime.now()\n        'filter-timesince01' : ('{{ a|timesince }}', {'a': datetime.now() + timedelta(minutes=-1, seconds = -10)}, '1 minute'),\n        'filter-timesince02' : ('{{ a|timesince }}', {'a': datetime.now() - timedelta(days=1, minutes = 1)}, '1 day'),\n        'filter-timesince03' : ('{{ a|timesince }}', {'a': datetime.now() - timedelta(hours=1, minutes=25, seconds = 10)}, '1 hour, 25 minutes'),\n\n        # Compare to a given parameter\n        'filter-timesince04' : ('{{ a|timesince:b }}', {'a':now - timedelta(days=2), 'b':now - timedelta(days=1)}, '1 day'),\n        'filter-timesince05' : ('{{ a|timesince:b }}', {'a':now - timedelta(days=2, minutes=1), 'b':now - timedelta(days=2)}, '1 minute'),\n\n        # Check that timezone is respected\n        'filter-timesince06' : ('{{ a|timesince:b }}', {'a':now_tz - timedelta(hours=8), 'b':now_tz}, '8 hours'),\n\n        # Regression for #7443\n        'filter-timesince07': ('{{ earlier|timesince }}', { 'earlier': now - timedelta(days=7) }, '1 week'),\n        'filter-timesince08': ('{{ earlier|timesince:now }}', { 'now': now, 'earlier': now - timedelta(days=7) }, '1 week'),\n        'filter-timesince09': ('{{ later|timesince }}', { 'later': now + timedelta(days=7) }, '0 minutes'),\n        'filter-timesince10': ('{{ later|timesince:now }}', { 'now': now, 'later': now + timedelta(days=7) }, '0 minutes'),\n\n        # Ensures that differing timezones are calculated correctly\n        'filter-timesince11' : ('{{ a|timesince }}', {'a': now}, '0 minutes'),\n        'filter-timesince12' : ('{{ a|timesince }}', {'a': now_tz}, '0 minutes'),\n        'filter-timesince13' : ('{{ a|timesince }}', {'a': now_tz_i}, '0 minutes'),\n        'filter-timesince14' : ('{{ a|timesince:b }}', {'a': now_tz, 'b': now_tz_i}, '0 minutes'),\n        'filter-timesince15' : ('{{ a|timesince:b }}', {'a': now, 'b': now_tz_i}, ''),\n        'filter-timesince16' : ('{{ a|timesince:b }}', {'a': now_tz_i, 'b': now}, ''),\n\n        # Regression for #9065 (two date objects).\n        'filter-timesince17' : ('{{ a|timesince:b }}', {'a': today, 'b': today}, '0 minutes'),\n        'filter-timesince18' : ('{{ a|timesince:b }}', {'a': today, 'b': today + timedelta(hours=24)}, '1 day'),\n\n        # Default compare with datetime.now()\n        'filter-timeuntil01' : ('{{ a|timeuntil }}', {'a':datetime.now() + timedelta(minutes=2, seconds = 10)}, '2 minutes'),\n        'filter-timeuntil02' : ('{{ a|timeuntil }}', {'a':(datetime.now() + timedelta(days=1, seconds = 10))}, '1 day'),\n        'filter-timeuntil03' : ('{{ a|timeuntil }}', {'a':(datetime.now() + timedelta(hours=8, minutes=10, seconds = 10))}, '8 hours, 10 minutes'),\n\n        # Compare to a given parameter\n        'filter-timeuntil04' : ('{{ a|timeuntil:b }}', {'a':now - timedelta(days=1), 'b':now - timedelta(days=2)}, '1 day'),\n        'filter-timeuntil05' : ('{{ a|timeuntil:b }}', {'a':now - timedelta(days=2), 'b':now - timedelta(days=2, minutes=1)}, '1 minute'),\n\n        # Regression for #7443\n        'filter-timeuntil06': ('{{ earlier|timeuntil }}', { 'earlier': now - timedelta(days=7) }, '0 minutes'),\n        'filter-timeuntil07': ('{{ earlier|timeuntil:now }}', { 'now': now, 'earlier': now - timedelta(days=7) }, '0 minutes'),\n        'filter-timeuntil08': ('{{ later|timeuntil }}', { 'later': now + timedelta(days=7, hours=1) }, '1 week'),\n        'filter-timeuntil09': ('{{ later|timeuntil:now }}', { 'now': now, 'later': now + timedelta(days=7) }, '1 week'),\n\n        # Ensures that differing timezones are calculated correctly\n        'filter-timeuntil10' : ('{{ a|timeuntil }}', {'a': now_tz_i}, '0 minutes'),\n        'filter-timeuntil11' : ('{{ a|timeuntil:b }}', {'a': now_tz_i, 'b': now_tz}, '0 minutes'),\n\n        # Regression for #9065 (two date objects).\n        'filter-timeuntil12' : ('{{ a|timeuntil:b }}', {'a': today, 'b': today}, '0 minutes'),\n        'filter-timeuntil13' : ('{{ a|timeuntil:b }}', {'a': today, 'b': today - timedelta(hours=24)}, '1 day'),\n\n        'filter-addslash01': (\"{% autoescape off %}{{ a|addslashes }} {{ b|addslashes }}{% endautoescape %}\", {\"a\": \"<a>'\", \"b\": mark_safe(\"<a>'\")}, r\"<a>\\' <a>\\'\"),\n        'filter-addslash02': (\"{{ a|addslashes }} {{ b|addslashes }}\", {\"a\": \"<a>'\", \"b\": mark_safe(\"<a>'\")}, r\"&lt;a&gt;\\&#39; <a>\\'\"),\n\n        'filter-capfirst01': (\"{% autoescape off %}{{ a|capfirst }} {{ b|capfirst }}{% endautoescape %}\", {\"a\": \"fred>\", \"b\": mark_safe(\"fred&gt;\")}, \"Fred> Fred&gt;\"),\n        'filter-capfirst02': (\"{{ a|capfirst }} {{ b|capfirst }}\", {\"a\": \"fred>\", \"b\": mark_safe(\"fred&gt;\")}, \"Fred&gt; Fred&gt;\"),\n\n        # Note that applying fix_ampsersands in autoescape mode leads to\n        # double escaping.\n        'filter-fix_ampersands01': (\"{% autoescape off %}{{ a|fix_ampersands }} {{ b|fix_ampersands }}{% endautoescape %}\", {\"a\": \"a&b\", \"b\": mark_safe(\"a&b\")}, \"a&amp;b a&amp;b\"),\n        'filter-fix_ampersands02': (\"{{ a|fix_ampersands }} {{ b|fix_ampersands }}\", {\"a\": \"a&b\", \"b\": mark_safe(\"a&b\")}, \"a&amp;amp;b a&amp;b\"),\n\n        'filter-floatformat01': (\"{% autoescape off %}{{ a|floatformat }} {{ b|floatformat }}{% endautoescape %}\", {\"a\": \"1.42\", \"b\": mark_safe(\"1.42\")}, \"1.4 1.4\"),\n        'filter-floatformat02': (\"{{ a|floatformat }} {{ b|floatformat }}\", {\"a\": \"1.42\", \"b\": mark_safe(\"1.42\")}, \"1.4 1.4\"),\n\n        # The contents of \"linenumbers\" is escaped according to the current\n        # autoescape setting.\n        'filter-linenumbers01': (\"{{ a|linenumbers }} {{ b|linenumbers }}\", {\"a\": \"one\\n<two>\\nthree\", \"b\": mark_safe(\"one\\n&lt;two&gt;\\nthree\")}, \"1. one\\n2. &lt;two&gt;\\n3. three 1. one\\n2. &lt;two&gt;\\n3. three\"),\n        'filter-linenumbers02': (\"{% autoescape off %}{{ a|linenumbers }} {{ b|linenumbers }}{% endautoescape %}\", {\"a\": \"one\\n<two>\\nthree\", \"b\": mark_safe(\"one\\n&lt;two&gt;\\nthree\")}, \"1. one\\n2. <two>\\n3. three 1. one\\n2. &lt;two&gt;\\n3. three\"),\n\n        'filter-lower01': (\"{% autoescape off %}{{ a|lower }} {{ b|lower }}{% endautoescape %}\", {\"a\": \"Apple & banana\", \"b\": mark_safe(\"Apple &amp; banana\")}, \"apple & banana apple &amp; banana\"),\n        'filter-lower02': (\"{{ a|lower }} {{ b|lower }}\", {\"a\": \"Apple & banana\", \"b\": mark_safe(\"Apple &amp; banana\")}, \"apple &amp; banana apple &amp; banana\"),\n\n        # The make_list filter can destroy existing escaping, so the results are\n        # escaped.\n        'filter-make_list01': (\"{% autoescape off %}{{ a|make_list }}{% endautoescape %}\", {\"a\": mark_safe(\"&\")}, str_prefix(\"[%(_)s'&']\")),\n        'filter-make_list02': (\"{{ a|make_list }}\", {\"a\": mark_safe(\"&\")}, str_prefix(\"[%(_)s&#39;&amp;&#39;]\")),\n        'filter-make_list03': ('{% autoescape off %}{{ a|make_list|stringformat:\"s\"|safe }}{% endautoescape %}', {\"a\": mark_safe(\"&\")}, str_prefix(\"[%(_)s'&']\")),\n        'filter-make_list04': ('{{ a|make_list|stringformat:\"s\"|safe }}', {\"a\": mark_safe(\"&\")}, str_prefix(\"[%(_)s'&']\")),\n\n        # Running slugify on a pre-escaped string leads to odd behavior,\n        # but the result is still safe.\n        'filter-slugify01': (\"{% autoescape off %}{{ a|slugify }} {{ b|slugify }}{% endautoescape %}\", {\"a\": \"a & b\", \"b\": mark_safe(\"a &amp; b\")}, \"a-b a-amp-b\"),\n        'filter-slugify02': (\"{{ a|slugify }} {{ b|slugify }}\", {\"a\": \"a & b\", \"b\": mark_safe(\"a &amp; b\")}, \"a-b a-amp-b\"),\n\n        # Notice that escaping is applied *after* any filters, so the string\n        # formatting here only needs to deal with pre-escaped characters.\n        'filter-stringformat01': ('{% autoescape off %}.{{ a|stringformat:\"5s\" }}. .{{ b|stringformat:\"5s\" }}.{% endautoescape %}',\n            {\"a\": \"a<b\", \"b\": mark_safe(\"a<b\")}, \".  a<b. .  a<b.\"),\n        'filter-stringformat02': ('.{{ a|stringformat:\"5s\" }}. .{{ b|stringformat:\"5s\" }}.', {\"a\": \"a<b\", \"b\": mark_safe(\"a<b\")},\n            \".  a&lt;b. .  a<b.\"),\n\n        # Test the title filter\n        'filter-title1' : ('{{ a|title }}', {'a' : 'JOE\\'S CRAB SHACK'}, 'Joe&#39;s Crab Shack'),\n        'filter-title2' : ('{{ a|title }}', {'a' : '555 WEST 53RD STREET'}, '555 West 53rd Street'),\n\n        'filter-truncatewords01': ('{% autoescape off %}{{ a|truncatewords:\"2\" }} {{ b|truncatewords:\"2\"}}{% endautoescape %}',\n            {\"a\": \"alpha & bravo\", \"b\": mark_safe(\"alpha &amp; bravo\")}, \"alpha & ... alpha &amp; ...\"),\n        'filter-truncatewords02': ('{{ a|truncatewords:\"2\" }} {{ b|truncatewords:\"2\"}}',\n            {\"a\": \"alpha & bravo\", \"b\": mark_safe(\"alpha &amp; bravo\")}, \"alpha &amp; ... alpha &amp; ...\"),\n\n        'filter-truncatechars01': ('{{ a|truncatechars:5 }}', {'a': \"Testing, testing\"}, \"Te...\"),\n        'filter-truncatechars02': ('{{ a|truncatechars:7 }}', {'a': \"Testing\"}, \"Testing\"),\n\n        # The \"upper\" filter messes up entities (which are case-sensitive),\n        # so it's not safe for non-escaping purposes.\n        'filter-upper01': ('{% autoescape off %}{{ a|upper }} {{ b|upper }}{% endautoescape %}', {\"a\": \"a & b\", \"b\": mark_safe(\"a &amp; b\")}, \"A & B A &AMP; B\"),\n        'filter-upper02': ('{{ a|upper }} {{ b|upper }}', {\"a\": \"a & b\", \"b\": mark_safe(\"a &amp; b\")}, \"A &amp; B A &amp;AMP; B\"),\n\n        'filter-urlize01': ('{% autoescape off %}{{ a|urlize }} {{ b|urlize }}{% endautoescape %}', {\"a\": \"http://example.com/?x=&y=\", \"b\": mark_safe(\"http://example.com?x=&amp;y=\")}, '<a href=\"http://example.com/?x=&y=\" rel=\"nofollow\">http://example.com/?x=&y=</a> <a href=\"http://example.com?x=&amp;y=\" rel=\"nofollow\">http://example.com?x=&amp;y=</a>'),\n        'filter-urlize02': ('{{ a|urlize }} {{ b|urlize }}', {\"a\": \"http://example.com/?x=&y=\", \"b\": mark_safe(\"http://example.com?x=&amp;y=\")}, '<a href=\"http://example.com/?x=&amp;y=\" rel=\"nofollow\">http://example.com/?x=&amp;y=</a> <a href=\"http://example.com?x=&amp;y=\" rel=\"nofollow\">http://example.com?x=&amp;y=</a>'),\n        'filter-urlize03': ('{% autoescape off %}{{ a|urlize }}{% endautoescape %}', {\"a\": mark_safe(\"a &amp; b\")}, 'a &amp; b'),\n        'filter-urlize04': ('{{ a|urlize }}', {\"a\": mark_safe(\"a &amp; b\")}, 'a &amp; b'),\n\n        # This will lead to a nonsense result, but at least it won't be\n        # exploitable for XSS purposes when auto-escaping is on.\n        'filter-urlize05': ('{% autoescape off %}{{ a|urlize }}{% endautoescape %}', {\"a\": \"<script>alert('foo')</script>\"}, \"<script>alert('foo')</script>\"),\n        'filter-urlize06': ('{{ a|urlize }}', {\"a\": \"<script>alert('foo')</script>\"}, '&lt;script&gt;alert(&#39;foo&#39;)&lt;/script&gt;'),\n\n        # mailto: testing for urlize\n        'filter-urlize07': ('{{ a|urlize }}', {\"a\": \"Email me at me@example.com\"}, 'Email me at <a href=\"mailto:me@example.com\">me@example.com</a>'),\n        'filter-urlize08': ('{{ a|urlize }}', {\"a\": \"Email me at <me@example.com>\"}, 'Email me at &lt;<a href=\"mailto:me@example.com\">me@example.com</a>&gt;'),\n\n        'filter-urlizetrunc01': ('{% autoescape off %}{{ a|urlizetrunc:\"8\" }} {{ b|urlizetrunc:\"8\" }}{% endautoescape %}', {\"a\": '\"Unsafe\" http://example.com/x=&y=', \"b\": mark_safe('&quot;Safe&quot; http://example.com?x=&amp;y=')}, '\"Unsafe\" <a href=\"http://example.com/x=&y=\" rel=\"nofollow\">http:...</a> &quot;Safe&quot; <a href=\"http://example.com?x=&amp;y=\" rel=\"nofollow\">http:...</a>'),\n        'filter-urlizetrunc02': ('{{ a|urlizetrunc:\"8\" }} {{ b|urlizetrunc:\"8\" }}', {\"a\": '\"Unsafe\" http://example.com/x=&y=', \"b\": mark_safe('&quot;Safe&quot; http://example.com?x=&amp;y=')}, '&quot;Unsafe&quot; <a href=\"http://example.com/x=&amp;y=\" rel=\"nofollow\">http:...</a> &quot;Safe&quot; <a href=\"http://example.com?x=&amp;y=\" rel=\"nofollow\">http:...</a>'),\n\n        'filter-wordcount01': ('{% autoescape off %}{{ a|wordcount }} {{ b|wordcount }}{% endautoescape %}', {\"a\": \"a & b\", \"b\": mark_safe(\"a &amp; b\")}, \"3 3\"),\n        'filter-wordcount02': ('{{ a|wordcount }} {{ b|wordcount }}', {\"a\": \"a & b\", \"b\": mark_safe(\"a &amp; b\")}, \"3 3\"),\n\n        'filter-wordwrap01': ('{% autoescape off %}{{ a|wordwrap:\"3\" }} {{ b|wordwrap:\"3\" }}{% endautoescape %}', {\"a\": \"a & b\", \"b\": mark_safe(\"a & b\")}, \"a &\\nb a &\\nb\"),\n        'filter-wordwrap02': ('{{ a|wordwrap:\"3\" }} {{ b|wordwrap:\"3\" }}', {\"a\": \"a & b\", \"b\": mark_safe(\"a & b\")}, \"a &amp;\\nb a &\\nb\"),\n\n        'filter-ljust01': ('{% autoescape off %}.{{ a|ljust:\"5\" }}. .{{ b|ljust:\"5\" }}.{% endautoescape %}', {\"a\": \"a&b\", \"b\": mark_safe(\"a&b\")}, \".a&b  . .a&b  .\"),\n        'filter-ljust02': ('.{{ a|ljust:\"5\" }}. .{{ b|ljust:\"5\" }}.', {\"a\": \"a&b\", \"b\": mark_safe(\"a&b\")}, \".a&amp;b  . .a&b  .\"),\n\n        'filter-rjust01': ('{% autoescape off %}.{{ a|rjust:\"5\" }}. .{{ b|rjust:\"5\" }}.{% endautoescape %}', {\"a\": \"a&b\", \"b\": mark_safe(\"a&b\")}, \".  a&b. .  a&b.\"),\n        'filter-rjust02': ('.{{ a|rjust:\"5\" }}. .{{ b|rjust:\"5\" }}.', {\"a\": \"a&b\", \"b\": mark_safe(\"a&b\")}, \".  a&amp;b. .  a&b.\"),\n\n        'filter-center01': ('{% autoescape off %}.{{ a|center:\"5\" }}. .{{ b|center:\"5\" }}.{% endautoescape %}', {\"a\": \"a&b\", \"b\": mark_safe(\"a&b\")}, \". a&b . . a&b .\"),\n        'filter-center02': ('.{{ a|center:\"5\" }}. .{{ b|center:\"5\" }}.', {\"a\": \"a&b\", \"b\": mark_safe(\"a&b\")}, \". a&amp;b . . a&b .\"),\n\n        'filter-cut01': ('{% autoescape off %}{{ a|cut:\"x\" }} {{ b|cut:\"x\" }}{% endautoescape %}', {\"a\": \"x&y\", \"b\": mark_safe(\"x&amp;y\")}, \"&y &amp;y\"),\n        'filter-cut02': ('{{ a|cut:\"x\" }} {{ b|cut:\"x\" }}', {\"a\": \"x&y\", \"b\": mark_safe(\"x&amp;y\")}, \"&amp;y &amp;y\"),\n        'filter-cut03': ('{% autoescape off %}{{ a|cut:\"&\" }} {{ b|cut:\"&\" }}{% endautoescape %}', {\"a\": \"x&y\", \"b\": mark_safe(\"x&amp;y\")}, \"xy xamp;y\"),\n        'filter-cut04': ('{{ a|cut:\"&\" }} {{ b|cut:\"&\" }}', {\"a\": \"x&y\", \"b\": mark_safe(\"x&amp;y\")}, \"xy xamp;y\"),\n        # Passing ';' to cut can break existing HTML entities, so those strings\n        # are auto-escaped.\n        'filter-cut05': ('{% autoescape off %}{{ a|cut:\";\" }} {{ b|cut:\";\" }}{% endautoescape %}', {\"a\": \"x&y\", \"b\": mark_safe(\"x&amp;y\")}, \"x&y x&ampy\"),\n        'filter-cut06': ('{{ a|cut:\";\" }} {{ b|cut:\";\" }}', {\"a\": \"x&y\", \"b\": mark_safe(\"x&amp;y\")}, \"x&amp;y x&amp;ampy\"),\n\n        # The \"escape\" filter works the same whether autoescape is on or off,\n        # but it has no effect on strings already marked as safe.\n        'filter-escape01': ('{{ a|escape }} {{ b|escape }}', {\"a\": \"x&y\", \"b\": mark_safe(\"x&y\")}, \"x&amp;y x&y\"),\n        'filter-escape02': ('{% autoescape off %}{{ a|escape }} {{ b|escape }}{% endautoescape %}', {\"a\": \"x&y\", \"b\": mark_safe(\"x&y\")}, \"x&amp;y x&y\"),\n\n        # It is only applied once, regardless of the number of times it\n        # appears in a chain.\n        'filter-escape03': ('{% autoescape off %}{{ a|escape|escape }}{% endautoescape %}', {\"a\": \"x&y\"}, \"x&amp;y\"),\n        'filter-escape04': ('{{ a|escape|escape }}', {\"a\": \"x&y\"}, \"x&amp;y\"),\n\n        # Force_escape is applied immediately. It can be used to provide\n        # double-escaping, for example.\n        'filter-force-escape01': ('{% autoescape off %}{{ a|force_escape }}{% endautoescape %}', {\"a\": \"x&y\"}, \"x&amp;y\"),\n        'filter-force-escape02': ('{{ a|force_escape }}', {\"a\": \"x&y\"}, \"x&amp;y\"),\n        'filter-force-escape03': ('{% autoescape off %}{{ a|force_escape|force_escape }}{% endautoescape %}', {\"a\": \"x&y\"}, \"x&amp;amp;y\"),\n        'filter-force-escape04': ('{{ a|force_escape|force_escape }}', {\"a\": \"x&y\"}, \"x&amp;amp;y\"),\n\n        # Because the result of force_escape is \"safe\", an additional\n        # escape filter has no effect.\n        'filter-force-escape05': ('{% autoescape off %}{{ a|force_escape|escape }}{% endautoescape %}', {\"a\": \"x&y\"}, \"x&amp;y\"),\n        'filter-force-escape06': ('{{ a|force_escape|escape }}', {\"a\": \"x&y\"}, \"x&amp;y\"),\n        'filter-force-escape07': ('{% autoescape off %}{{ a|escape|force_escape }}{% endautoescape %}', {\"a\": \"x&y\"}, \"x&amp;y\"),\n        'filter-force-escape08': ('{{ a|escape|force_escape }}', {\"a\": \"x&y\"}, \"x&amp;y\"),\n\n        # The contents in \"linebreaks\" and \"linebreaksbr\" are escaped\n        # according to the current autoescape setting.\n        'filter-linebreaks01': ('{{ a|linebreaks }} {{ b|linebreaks }}', {\"a\": \"x&\\ny\", \"b\": mark_safe(\"x&\\ny\")}, \"<p>x&amp;<br />y</p> <p>x&<br />y</p>\"),\n        'filter-linebreaks02': ('{% autoescape off %}{{ a|linebreaks }} {{ b|linebreaks }}{% endautoescape %}', {\"a\": \"x&\\ny\", \"b\": mark_safe(\"x&\\ny\")}, \"<p>x&<br />y</p> <p>x&<br />y</p>\"),\n\n        'filter-linebreaksbr01': ('{{ a|linebreaksbr }} {{ b|linebreaksbr }}', {\"a\": \"x&\\ny\", \"b\": mark_safe(\"x&\\ny\")}, \"x&amp;<br />y x&<br />y\"),\n        'filter-linebreaksbr02': ('{% autoescape off %}{{ a|linebreaksbr }} {{ b|linebreaksbr }}{% endautoescape %}', {\"a\": \"x&\\ny\", \"b\": mark_safe(\"x&\\ny\")}, \"x&<br />y x&<br />y\"),\n\n        'filter-safe01': (\"{{ a }} -- {{ a|safe }}\", {\"a\": \"<b>hello</b>\"}, \"&lt;b&gt;hello&lt;/b&gt; -- <b>hello</b>\"),\n        'filter-safe02': (\"{% autoescape off %}{{ a }} -- {{ a|safe }}{% endautoescape %}\", {\"a\": \"<b>hello</b>\"}, \"<b>hello</b> -- <b>hello</b>\"),\n\n        'filter-safeseq01': ('{{ a|join:\", \" }} -- {{ a|safeseq|join:\", \" }}', {\"a\": [\"&\", \"<\"]}, \"&amp;, &lt; -- &, <\"),\n        'filter-safeseq02': ('{% autoescape off %}{{ a|join:\", \" }} -- {{ a|safeseq|join:\", \" }}{% endautoescape %}', {\"a\": [\"&\", \"<\"]}, \"&, < -- &, <\"),\n\n        'filter-removetags01': ('{{ a|removetags:\"a b\" }} {{ b|removetags:\"a b\" }}', {\"a\": \"<a>x</a> <p><b>y</b></p>\", \"b\": mark_safe(\"<a>x</a> <p><b>y</b></p>\")}, \"x &lt;p&gt;y&lt;/p&gt; x <p>y</p>\"),\n        'filter-removetags02': ('{% autoescape off %}{{ a|removetags:\"a b\" }} {{ b|removetags:\"a b\" }}{% endautoescape %}', {\"a\": \"<a>x</a> <p><b>y</b></p>\", \"b\": mark_safe(\"<a>x</a> <p><b>y</b></p>\")}, \"x <p>y</p> x <p>y</p>\"),\n\n        'filter-striptags01': ('{{ a|striptags }} {{ b|striptags }}', {\"a\": \"<a>x</a> <p><b>y</b></p>\", \"b\": mark_safe(\"<a>x</a> <p><b>y</b></p>\")}, \"x y x y\"),\n        'filter-striptags02': ('{% autoescape off %}{{ a|striptags }} {{ b|striptags }}{% endautoescape %}', {\"a\": \"<a>x</a> <p><b>y</b></p>\", \"b\": mark_safe(\"<a>x</a> <p><b>y</b></p>\")}, \"x y x y\"),\n\n        'filter-first01': ('{{ a|first }} {{ b|first }}', {\"a\": [\"a&b\", \"x\"], \"b\": [mark_safe(\"a&b\"), \"x\"]}, \"a&amp;b a&b\"),\n        'filter-first02': ('{% autoescape off %}{{ a|first }} {{ b|first }}{% endautoescape %}', {\"a\": [\"a&b\", \"x\"], \"b\": [mark_safe(\"a&b\"), \"x\"]}, \"a&b a&b\"),\n\n        'filter-last01': ('{{ a|last }} {{ b|last }}', {\"a\": [\"x\", \"a&b\"], \"b\": [\"x\", mark_safe(\"a&b\")]}, \"a&amp;b a&b\"),\n        'filter-last02': ('{% autoescape off %}{{ a|last }} {{ b|last }}{% endautoescape %}', {\"a\": [\"x\", \"a&b\"], \"b\": [\"x\", mark_safe(\"a&b\")]}, \"a&b a&b\"),\n\n        'filter-random01': ('{{ a|random }} {{ b|random }}', {\"a\": [\"a&b\", \"a&b\"], \"b\": [mark_safe(\"a&b\"), mark_safe(\"a&b\")]}, \"a&amp;b a&b\"),\n        'filter-random02': ('{% autoescape off %}{{ a|random }} {{ b|random }}{% endautoescape %}', {\"a\": [\"a&b\", \"a&b\"], \"b\": [mark_safe(\"a&b\"), mark_safe(\"a&b\")]}, \"a&b a&b\"),\n\n        'filter-slice01': ('{{ a|slice:\"1:3\" }} {{ b|slice:\"1:3\" }}', {\"a\": \"a&b\", \"b\": mark_safe(\"a&b\")}, \"&amp;b &b\"),\n        'filter-slice02': ('{% autoescape off %}{{ a|slice:\"1:3\" }} {{ b|slice:\"1:3\" }}{% endautoescape %}', {\"a\": \"a&b\", \"b\": mark_safe(\"a&b\")}, \"&b &b\"),\n\n        'filter-unordered_list01': ('{{ a|unordered_list }}', {\"a\": [\"x>\", [[\"<y\", []]]]}, \"\\t<li>x&gt;\\n\\t<ul>\\n\\t\\t<li>&lt;y</li>\\n\\t</ul>\\n\\t</li>\"),\n        'filter-unordered_list02': ('{% autoescape off %}{{ a|unordered_list }}{% endautoescape %}', {\"a\": [\"x>\", [[\"<y\", []]]]}, \"\\t<li>x>\\n\\t<ul>\\n\\t\\t<li><y</li>\\n\\t</ul>\\n\\t</li>\"),\n        'filter-unordered_list03': ('{{ a|unordered_list }}', {\"a\": [\"x>\", [[mark_safe(\"<y\"), []]]]}, \"\\t<li>x&gt;\\n\\t<ul>\\n\\t\\t<li><y</li>\\n\\t</ul>\\n\\t</li>\"),\n        'filter-unordered_list04': ('{% autoescape off %}{{ a|unordered_list }}{% endautoescape %}', {\"a\": [\"x>\", [[mark_safe(\"<y\"), []]]]}, \"\\t<li>x>\\n\\t<ul>\\n\\t\\t<li><y</li>\\n\\t</ul>\\n\\t</li>\"),\n        'filter-unordered_list05': ('{% autoescape off %}{{ a|unordered_list }}{% endautoescape %}', {\"a\": [\"x>\", [[\"<y\", []]]]}, \"\\t<li>x>\\n\\t<ul>\\n\\t\\t<li><y</li>\\n\\t</ul>\\n\\t</li>\"),\n\n        # Literal string arguments to the default filter are always treated as\n        # safe strings, regardless of the auto-escaping state.\n        #\n        # Note: we have to use {\"a\": \"\"} here, otherwise the invalid template\n        # variable string interferes with the test result.\n        'filter-default01': ('{{ a|default:\"x<\" }}', {\"a\": \"\"}, \"x<\"),\n        'filter-default02': ('{% autoescape off %}{{ a|default:\"x<\" }}{% endautoescape %}', {\"a\": \"\"}, \"x<\"),\n        'filter-default03': ('{{ a|default:\"x<\" }}', {\"a\": mark_safe(\"x>\")}, \"x>\"),\n        'filter-default04': ('{% autoescape off %}{{ a|default:\"x<\" }}{% endautoescape %}', {\"a\": mark_safe(\"x>\")}, \"x>\"),\n\n        'filter-default_if_none01': ('{{ a|default:\"x<\" }}', {\"a\": None}, \"x<\"),\n        'filter-default_if_none02': ('{% autoescape off %}{{ a|default:\"x<\" }}{% endautoescape %}', {\"a\": None}, \"x<\"),\n\n        'filter-phone2numeric01': ('{{ a|phone2numeric }} {{ b|phone2numeric }}', {\"a\": \"<1-800-call-me>\", \"b\": mark_safe(\"<1-800-call-me>\") }, \"&lt;1-800-2255-63&gt; <1-800-2255-63>\"),\n        'filter-phone2numeric02': ('{% autoescape off %}{{ a|phone2numeric }} {{ b|phone2numeric }}{% endautoescape %}', {\"a\": \"<1-800-call-me>\", \"b\": mark_safe(\"<1-800-call-me>\") }, \"<1-800-2255-63> <1-800-2255-63>\"),\n        'filter-phone2numeric03': ('{{ a|phone2numeric }}', {\"a\": \"How razorback-jumping frogs can level six piqued gymnasts!\"}, \"469 729672225-5867464 37647 226 53835 749 747833 49662787!\"),\n\n        # Ensure iriencode keeps safe strings:\n        'filter-iriencode01': ('{{ url|iriencode }}', {'url': '?test=1&me=2'}, '?test=1&amp;me=2'),\n        'filter-iriencode02': ('{% autoescape off %}{{ url|iriencode }}{% endautoescape %}', {'url': '?test=1&me=2'}, '?test=1&me=2'),\n        'filter-iriencode03': ('{{ url|iriencode }}', {'url': mark_safe('?test=1&me=2')}, '?test=1&me=2'),\n        'filter-iriencode04': ('{% autoescape off %}{{ url|iriencode }}{% endautoescape %}', {'url': mark_safe('?test=1&me=2')}, '?test=1&me=2'),\n\n        # urlencode\n        'filter-urlencode01': ('{{ url|urlencode }}', {'url': '/test&\"/me?/'}, '/test%26%22/me%3F/'),\n        'filter-urlencode02': ('/test/{{ urlbit|urlencode:\"\" }}/', {'urlbit': 'escape/slash'}, '/test/escape%2Fslash/'),\n\n        # Chaining a bunch of safeness-preserving filters should not alter\n        # the safe status either way.\n        'chaining01': ('{{ a|capfirst|center:\"7\" }}.{{ b|capfirst|center:\"7\" }}', {\"a\": \"a < b\", \"b\": mark_safe(\"a < b\")}, \" A &lt; b . A < b \"),\n        'chaining02': ('{% autoescape off %}{{ a|capfirst|center:\"7\" }}.{{ b|capfirst|center:\"7\" }}{% endautoescape %}', {\"a\": \"a < b\", \"b\": mark_safe(\"a < b\")}, \" A < b . A < b \"),\n\n        # Using a filter that forces a string back to unsafe:\n        'chaining03': ('{{ a|cut:\"b\"|capfirst }}.{{ b|cut:\"b\"|capfirst }}', {\"a\": \"a < b\", \"b\": mark_safe(\"a < b\")}, \"A &lt; .A < \"),\n        'chaining04': ('{% autoescape off %}{{ a|cut:\"b\"|capfirst }}.{{ b|cut:\"b\"|capfirst }}{% endautoescape %}', {\"a\": \"a < b\", \"b\": mark_safe(\"a < b\")}, \"A < .A < \"),\n\n        # Using a filter that forces safeness does not lead to double-escaping\n        'chaining05': ('{{ a|escape|capfirst }}', {\"a\": \"a < b\"}, \"A &lt; b\"),\n        'chaining06': ('{% autoescape off %}{{ a|escape|capfirst }}{% endautoescape %}', {\"a\": \"a < b\"}, \"A &lt; b\"),\n\n        # Force to safe, then back (also showing why using force_escape too\n        # early in a chain can lead to unexpected results).\n        'chaining07': ('{{ a|force_escape|cut:\";\" }}', {\"a\": \"a < b\"}, \"a &amp;lt b\"),\n        'chaining08': ('{% autoescape off %}{{ a|force_escape|cut:\";\" }}{% endautoescape %}', {\"a\": \"a < b\"}, \"a &lt b\"),\n        'chaining09': ('{{ a|cut:\";\"|force_escape }}', {\"a\": \"a < b\"}, \"a &lt; b\"),\n        'chaining10': ('{% autoescape off %}{{ a|cut:\";\"|force_escape }}{% endautoescape %}', {\"a\": \"a < b\"}, \"a &lt; b\"),\n        'chaining11': ('{{ a|cut:\"b\"|safe }}', {\"a\": \"a < b\"}, \"a < \"),\n        'chaining12': ('{% autoescape off %}{{ a|cut:\"b\"|safe }}{% endautoescape %}', {\"a\": \"a < b\"}, \"a < \"),\n        'chaining13': ('{{ a|safe|force_escape }}', {\"a\": \"a < b\"}, \"a &lt; b\"),\n        'chaining14': ('{% autoescape off %}{{ a|safe|force_escape }}{% endautoescape %}', {\"a\": \"a < b\"}, \"a &lt; b\"),\n\n        # Filters decorated with stringfilter still respect is_safe.\n        'autoescape-stringfilter01': (r'{{ unsafe|capfirst }}', {'unsafe': UnsafeClass()}, 'You &amp; me'),\n        'autoescape-stringfilter02': (r'{% autoescape off %}{{ unsafe|capfirst }}{% endautoescape %}', {'unsafe': UnsafeClass()}, 'You & me'),\n        'autoescape-stringfilter03': (r'{{ safe|capfirst }}', {'safe': SafeClass()}, 'You &gt; me'),\n        'autoescape-stringfilter04': (r'{% autoescape off %}{{ safe|capfirst }}{% endautoescape %}', {'safe': SafeClass()}, 'You &gt; me'),\n\n        'escapejs01': (r'{{ a|escapejs }}', {'a': 'testing\\r\\njavascript \\'string\" <b>escaping</b>'}, 'testing\\\\u000D\\\\u000Ajavascript \\\\u0027string\\\\u0022 \\\\u003Cb\\\\u003Eescaping\\\\u003C/b\\\\u003E'),\n        'escapejs02': (r'{% autoescape off %}{{ a|escapejs }}{% endautoescape %}', {'a': 'testing\\r\\njavascript \\'string\" <b>escaping</b>'}, 'testing\\\\u000D\\\\u000Ajavascript \\\\u0027string\\\\u0022 \\\\u003Cb\\\\u003Eescaping\\\\u003C/b\\\\u003E'),\n\n\n        # length filter.\n        'length01': ('{{ list|length }}', {'list': ['4', None, True, {}]}, '4'),\n        'length02': ('{{ list|length }}', {'list': []}, '0'),\n        'length03': ('{{ string|length }}', {'string': ''}, '0'),\n        'length04': ('{{ string|length }}', {'string': 'django'}, '6'),\n        # Invalid uses that should fail silently.\n        'length05': ('{{ int|length }}', {'int': 7}, ''),\n        'length06': ('{{ None|length }}', {'None': None}, ''),\n\n        # length_is filter.\n        'length_is01': ('{% if some_list|length_is:\"4\" %}Four{% endif %}', {'some_list': ['4', None, True, {}]}, 'Four'),\n        'length_is02': ('{% if some_list|length_is:\"4\" %}Four{% else %}Not Four{% endif %}', {'some_list': ['4', None, True, {}, 17]}, 'Not Four'),\n        'length_is03': ('{% if mystring|length_is:\"4\" %}Four{% endif %}', {'mystring': 'word'}, 'Four'),\n        'length_is04': ('{% if mystring|length_is:\"4\" %}Four{% else %}Not Four{% endif %}', {'mystring': 'Python'}, 'Not Four'),\n        'length_is05': ('{% if mystring|length_is:\"4\" %}Four{% else %}Not Four{% endif %}', {'mystring': ''}, 'Not Four'),\n        'length_is06': ('{% with var|length as my_length %}{{ my_length }}{% endwith %}', {'var': 'django'}, '6'),\n        # Boolean return value from length_is should not be coerced to a string\n        'length_is07': (r'{% if \"X\"|length_is:0 %}Length is 0{% else %}Length not 0{% endif %}', {}, 'Length not 0'),\n        'length_is08': (r'{% if \"X\"|length_is:1 %}Length is 1{% else %}Length not 1{% endif %}', {}, 'Length is 1'),\n        # Invalid uses that should fail silently.\n        'length_is09': ('{{ var|length_is:\"fish\" }}', {'var': 'django'}, ''),\n        'length_is10': ('{{ int|length_is:\"1\" }}', {'int': 7}, ''),\n        'length_is11': ('{{ none|length_is:\"1\" }}', {'none': None}, ''),\n\n        'join01': (r'{{ a|join:\", \" }}', {'a': ['alpha', 'beta & me']}, 'alpha, beta &amp; me'),\n        'join02': (r'{% autoescape off %}{{ a|join:\", \" }}{% endautoescape %}', {'a': ['alpha', 'beta & me']}, 'alpha, beta & me'),\n        'join03': (r'{{ a|join:\" &amp; \" }}', {'a': ['alpha', 'beta & me']}, 'alpha &amp; beta &amp; me'),\n        'join04': (r'{% autoescape off %}{{ a|join:\" &amp; \" }}{% endautoescape %}', {'a': ['alpha', 'beta & me']}, 'alpha &amp; beta & me'),\n\n        # Test that joining with unsafe joiners don't result in unsafe strings (#11377)\n        'join05': (r'{{ a|join:var }}', {'a': ['alpha', 'beta & me'], 'var': ' & '}, 'alpha &amp; beta &amp; me'),\n        'join06': (r'{{ a|join:var }}', {'a': ['alpha', 'beta & me'], 'var': mark_safe(' & ')}, 'alpha & beta &amp; me'),\n        'join07': (r'{{ a|join:var|lower }}', {'a': ['Alpha', 'Beta & me'], 'var': ' & ' }, 'alpha &amp; beta &amp; me'),\n        'join08': (r'{{ a|join:var|lower }}', {'a': ['Alpha', 'Beta & me'], 'var': mark_safe(' & ')}, 'alpha & beta &amp; me'),\n\n        'date01': (r'{{ d|date:\"m\" }}', {'d': datetime(2008, 1, 1)}, '01'),\n        'date02': (r'{{ d|date }}', {'d': datetime(2008, 1, 1)}, 'Jan. 1, 2008'),\n        #Ticket 9520: Make sure |date doesn't blow up on non-dates\n        'date03': (r'{{ d|date:\"m\" }}', {'d': 'fail_string'}, ''),\n        # ISO date formats\n        'date04': (r'{{ d|date:\"o\" }}', {'d': datetime(2008, 12, 29)}, '2009'),\n        'date05': (r'{{ d|date:\"o\" }}', {'d': datetime(2010, 1, 3)}, '2009'),\n        # Timezone name\n        'date06': (r'{{ d|date:\"e\" }}', {'d': datetime(2009, 3, 12, tzinfo=FixedOffset(30))}, '+0030'),\n        'date07': (r'{{ d|date:\"e\" }}', {'d': datetime(2009, 3, 12)}, ''),\n        # Ticket 19370: Make sure |date doesn't blow up on a midnight time object\n        'date08': (r'{{ t|date:\"H:i\" }}', {'t': time(0, 1)}, '00:01'),\n        'date09': (r'{{ t|date:\"H:i\" }}', {'t': time(0, 0)}, '00:00'),\n\n         # Tests for #11687 and #16676\n         'add01': (r'{{ i|add:\"5\" }}', {'i': 2000}, '2005'),\n         'add02': (r'{{ i|add:\"napis\" }}', {'i': 2000}, ''),\n         'add03': (r'{{ i|add:16 }}', {'i': 'not_an_int'}, ''),\n         'add04': (r'{{ i|add:\"16\" }}', {'i': 'not_an_int'}, 'not_an_int16'),\n         'add05': (r'{{ l1|add:l2 }}', {'l1': [1, 2], 'l2': [3, 4]}, '[1, 2, 3, 4]'),\n         'add06': (r'{{ t1|add:t2 }}', {'t1': (3, 4), 't2': (1, 2)}, '(3, 4, 1, 2)'),\n         'add07': (r'{{ d|add:t }}', {'d': date(2000, 1, 1), 't': timedelta(10)}, 'Jan. 11, 2000'),\n    }\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/templates/loaders.py",
    "content": "\"\"\"\nTest cases for the template loaders\n\nNote: This test requires setuptools!\n\"\"\"\n\nfrom django.conf import settings\n\nif __name__ == '__main__':\n    settings.configure()\n\nimport sys\nimport pkg_resources\nimport imp\nimport os.path\n\nfrom django.template import TemplateDoesNotExist, Context\nfrom django.template.loaders.eggs import Loader as EggLoader\nfrom django.template import loader\nfrom django.utils import unittest, six\nfrom django.utils._os import upath\nfrom django.utils.six import StringIO\n\n\n# Mock classes and objects for pkg_resources functions.\nclass MockProvider(pkg_resources.NullProvider):\n    def __init__(self, module):\n        pkg_resources.NullProvider.__init__(self, module)\n        self.module = module\n\n    def _has(self, path):\n        return path in self.module._resources\n\n    def _isdir(self, path):\n        return False\n\n    def get_resource_stream(self, manager, resource_name):\n        return self.module._resources[resource_name]\n\n    def _get(self, path):\n        return self.module._resources[path].read()\n\nclass MockLoader(object):\n    pass\n\ndef create_egg(name, resources):\n    \"\"\"\n    Creates a mock egg with a list of resources.\n\n    name: The name of the module.\n    resources: A dictionary of resources. Keys are the names and values the data.\n    \"\"\"\n    egg = imp.new_module(name)\n    egg.__loader__ = MockLoader()\n    egg._resources = resources\n    sys.modules[name] = egg\n\n\nclass EggLoaderTest(unittest.TestCase):\n    def setUp(self):\n        pkg_resources._provider_factories[MockLoader] = MockProvider\n\n        self.empty_egg = create_egg(\"egg_empty\", {})\n        self.egg_1 = create_egg(\"egg_1\", {\n            os.path.normcase('templates/y.html'): StringIO(\"y\"),\n            os.path.normcase('templates/x.txt'): StringIO(\"x\"),\n        })\n        self._old_installed_apps = settings.INSTALLED_APPS\n        settings.INSTALLED_APPS = []\n\n    def tearDown(self):\n        settings.INSTALLED_APPS = self._old_installed_apps\n\n    def test_empty(self):\n        \"Loading any template on an empty egg should fail\"\n        settings.INSTALLED_APPS = ['egg_empty']\n        egg_loader = EggLoader()\n        self.assertRaises(TemplateDoesNotExist, egg_loader.load_template_source, \"not-existing.html\")\n\n    def test_non_existing(self):\n        \"Template loading fails if the template is not in the egg\"\n        settings.INSTALLED_APPS = ['egg_1']\n        egg_loader = EggLoader()\n        self.assertRaises(TemplateDoesNotExist, egg_loader.load_template_source, \"not-existing.html\")\n\n    def test_existing(self):\n        \"A template can be loaded from an egg\"\n        settings.INSTALLED_APPS = ['egg_1']\n        egg_loader = EggLoader()\n        contents, template_name = egg_loader.load_template_source(\"y.html\")\n        self.assertEqual(contents, \"y\")\n        self.assertEqual(template_name, \"egg:egg_1:templates/y.html\")\n\n    def test_not_installed(self):\n        \"Loading an existent template from an egg not included in INSTALLED_APPS should fail\"\n        settings.INSTALLED_APPS = []\n        egg_loader = EggLoader()\n        self.assertRaises(TemplateDoesNotExist, egg_loader.load_template_source, \"y.html\")\n\nclass CachedLoader(unittest.TestCase):\n    def setUp(self):\n        self.old_TEMPLATE_LOADERS = settings.TEMPLATE_LOADERS\n        settings.TEMPLATE_LOADERS = (\n            ('django.template.loaders.cached.Loader', (\n                    'django.template.loaders.filesystem.Loader',\n                )\n            ),\n        )\n    def tearDown(self):\n        settings.TEMPLATE_LOADERS = self.old_TEMPLATE_LOADERS\n\n    def test_templatedir_caching(self):\n        \"Check that the template directories form part of the template cache key. Refs #13573\"\n        # Retrive a template specifying a template directory to check\n        t1, name = loader.find_template('test.html', (os.path.join(os.path.dirname(upath(__file__)), 'templates', 'first'),))\n        # Now retrieve the same template name, but from a different directory\n        t2, name = loader.find_template('test.html', (os.path.join(os.path.dirname(upath(__file__)), 'templates', 'second'),))\n\n        # The two templates should not have the same content\n        self.assertNotEqual(t1.render(Context({})), t2.render(Context({})))\n\nclass RenderToStringTest(unittest.TestCase):\n\n    def setUp(self):\n        self._old_TEMPLATE_DIRS = settings.TEMPLATE_DIRS\n        settings.TEMPLATE_DIRS = (\n            os.path.join(os.path.dirname(upath(__file__)), 'templates'),\n        )\n\n    def tearDown(self):\n        settings.TEMPLATE_DIRS = self._old_TEMPLATE_DIRS\n\n    def test_basic(self):\n        self.assertEqual(loader.render_to_string('test_context.html'), 'obj:')\n\n    def test_basic_context(self):\n        self.assertEqual(loader.render_to_string('test_context.html',\n                                                 {'obj': 'test'}), 'obj:test')\n\n    def test_existing_context_kept_clean(self):\n        context = Context({'obj': 'before'})\n        output = loader.render_to_string('test_context.html', {'obj': 'after'},\n                                         context_instance=context)\n        self.assertEqual(output, 'obj:after')\n        self.assertEqual(context['obj'], 'before')\n\n    def test_empty_list(self):\n        six.assertRaisesRegex(self, TemplateDoesNotExist,\n                                'No template names provided$',\n                                loader.render_to_string, [])\n\n\n    def test_select_templates_from_empty_list(self):\n        six.assertRaisesRegex(self, TemplateDoesNotExist,\n                                'No template names provided$',\n                                loader.select_template, [])\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/templates/models.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/templates/nodelist.py",
    "content": "from django.template import VariableNode, Context\nfrom django.template.loader import get_template_from_string\nfrom django.utils.unittest import TestCase\nfrom django.test.utils import override_settings\n\nclass NodelistTest(TestCase):\n\n    def test_for(self):\n        source = '{% for i in 1 %}{{ a }}{% endfor %}'\n        template = get_template_from_string(source)\n        vars = template.nodelist.get_nodes_by_type(VariableNode)\n        self.assertEqual(len(vars), 1)\n\n    def test_if(self):\n        source = '{% if x %}{{ a }}{% endif %}'\n        template = get_template_from_string(source)\n        vars = template.nodelist.get_nodes_by_type(VariableNode)\n        self.assertEqual(len(vars), 1)\n\n    def test_ifequal(self):\n        source = '{% ifequal x y %}{{ a }}{% endifequal %}'\n        template = get_template_from_string(source)\n        vars = template.nodelist.get_nodes_by_type(VariableNode)\n        self.assertEqual(len(vars), 1)\n\n    def test_ifchanged(self):\n        source = '{% ifchanged x %}{{ a }}{% endifchanged %}'\n        template = get_template_from_string(source)\n        vars = template.nodelist.get_nodes_by_type(VariableNode)\n        self.assertEqual(len(vars), 1)\n\n\nclass ErrorIndexTest(TestCase):\n    \"\"\"\n    Checks whether index of error is calculated correctly in\n    template debugger in for loops. Refs ticket #5831\n    \"\"\"\n    @override_settings(DEBUG=True, TEMPLATE_DEBUG = True)\n    def test_correct_exception_index(self):\n        tests = [\n            ('{% load bad_tag %}{% for i in range %}{% badsimpletag %}{% endfor %}', (38, 56)),\n            ('{% load bad_tag %}{% for i in range %}{% for j in range %}{% badsimpletag %}{% endfor %}{% endfor %}', (58, 76)),\n            ('{% load bad_tag %}{% for i in range %}{% badsimpletag %}{% for j in range %}Hello{% endfor %}{% endfor %}', (38, 56)),\n            ('{% load bad_tag %}{% for i in range %}{% for j in five %}{% badsimpletag %}{% endfor %}{% endfor %}', (38, 57)),\n            ('{% load bad_tag %}{% for j in five %}{% badsimpletag %}{% endfor %}', (18, 37)),\n        ]\n        context = Context({\n            'range': range(5),\n            'five': 5,\n        })\n        for source, expected_error_source_index in tests:\n            template = get_template_from_string(source)\n            try:\n                template.render(context)\n            except (RuntimeError, TypeError) as e:\n                error_source_index = e.django_template_source[1]\n                self.assertEqual(error_source_index,\n                                 expected_error_source_index)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/templates/parser.py",
    "content": "\"\"\"\nTesting some internals of the template processing. These are *not* examples to be copied in user code.\n\"\"\"\nfrom __future__ import unicode_literals\n\nfrom django.template import (TokenParser, FilterExpression, Parser, Variable,\n    TemplateSyntaxError)\nfrom django.utils.unittest import TestCase\n\n\nclass ParserTests(TestCase):\n    def test_token_parsing(self):\n        # Tests for TokenParser behavior in the face of quoted strings with\n        # spaces.\n\n        p = TokenParser(\"tag thevar|filter sometag\")\n        self.assertEqual(p.tagname, \"tag\")\n        self.assertEqual(p.value(), \"thevar|filter\")\n        self.assertTrue(p.more())\n        self.assertEqual(p.tag(), \"sometag\")\n        self.assertFalse(p.more())\n\n        p = TokenParser('tag \"a value\"|filter sometag')\n        self.assertEqual(p.tagname, \"tag\")\n        self.assertEqual(p.value(), '\"a value\"|filter')\n        self.assertTrue(p.more())\n        self.assertEqual(p.tag(), \"sometag\")\n        self.assertFalse(p.more())\n\n        p = TokenParser(\"tag 'a value'|filter sometag\")\n        self.assertEqual(p.tagname, \"tag\")\n        self.assertEqual(p.value(), \"'a value'|filter\")\n        self.assertTrue(p.more())\n        self.assertEqual(p.tag(), \"sometag\")\n        self.assertFalse(p.more())\n\n    def test_filter_parsing(self):\n        c = {\"article\": {\"section\": \"News\"}}\n        p = Parser(\"\")\n\n        def fe_test(s, val):\n            self.assertEqual(FilterExpression(s, p).resolve(c), val)\n\n        fe_test(\"article.section\", \"News\")\n        fe_test(\"article.section|upper\", \"NEWS\")\n        fe_test('\"News\"', \"News\")\n        fe_test(\"'News'\", \"News\")\n        fe_test(r'\"Some \\\"Good\\\" News\"', 'Some \"Good\" News')\n        fe_test(r'\"Some \\\"Good\\\" News\"', 'Some \"Good\" News')\n        fe_test(r\"'Some \\'Bad\\' News'\", \"Some 'Bad' News\")\n\n        fe = FilterExpression(r'\"Some \\\"Good\\\" News\"', p)\n        self.assertEqual(fe.filters, [])\n        self.assertEqual(fe.var, 'Some \"Good\" News')\n\n        # Filtered variables should reject access of attributes beginning with\n        # underscores.\n        self.assertRaises(TemplateSyntaxError,\n            FilterExpression, \"article._hidden|upper\", p\n        )\n\n    def test_variable_parsing(self):\n        c = {\"article\": {\"section\": \"News\"}}\n        self.assertEqual(Variable(\"article.section\").resolve(c), \"News\")\n        self.assertEqual(Variable('\"News\"').resolve(c), \"News\")\n        self.assertEqual(Variable(\"'News'\").resolve(c), \"News\")\n\n        # Translated strings are handled correctly.\n        self.assertEqual(Variable(\"_(article.section)\").resolve(c), \"News\")\n        self.assertEqual(Variable('_(\"Good News\")').resolve(c), \"Good News\")\n        self.assertEqual(Variable(\"_('Better News')\").resolve(c), \"Better News\")\n\n        # Escaped quotes work correctly as well.\n        self.assertEqual(\n            Variable(r'\"Some \\\"Good\\\" News\"').resolve(c), 'Some \"Good\" News'\n        )\n        self.assertEqual(\n            Variable(r\"'Some \\'Better\\' News'\").resolve(c), \"Some 'Better' News\"\n        )\n\n        # Variables should reject access of attributes beginning with\n        # underscores.\n        self.assertRaises(TemplateSyntaxError,\n            Variable, \"article._hidden\"\n        )\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/templates/response.py",
    "content": "from __future__ import unicode_literals\n\nimport os\nimport pickle\nimport time\nfrom datetime import datetime\n\nfrom django.test import RequestFactory, TestCase\nfrom django.conf import settings\nfrom django.template import Template, Context\nfrom django.template.response import (TemplateResponse, SimpleTemplateResponse,\n                                      ContentNotRenderedError)\nfrom django.test.utils import override_settings\nfrom django.utils._os import upath\n\ndef test_processor(request):\n    return {'processors': 'yes'}\ntest_processor_name = 'regressiontests.templates.response.test_processor'\n\n\n# A test middleware that installs a temporary URLConf\nclass CustomURLConfMiddleware(object):\n    def process_request(self, request):\n        request.urlconf = 'regressiontests.templates.alternate_urls'\n\n\nclass SimpleTemplateResponseTest(TestCase):\n\n    def _response(self, template='foo', *args, **kwargs):\n        return SimpleTemplateResponse(Template(template), *args, **kwargs)\n\n    def test_template_resolving(self):\n        response = SimpleTemplateResponse('first/test.html')\n        response.render()\n        self.assertEqual(response.content, b'First template\\n')\n\n        templates = ['foo.html', 'second/test.html', 'first/test.html']\n        response = SimpleTemplateResponse(templates)\n        response.render()\n        self.assertEqual(response.content, b'Second template\\n')\n\n        response = self._response()\n        response.render()\n        self.assertEqual(response.content, b'foo')\n\n    def test_explicit_baking(self):\n        # explicit baking\n        response = self._response()\n        self.assertFalse(response.is_rendered)\n        response.render()\n        self.assertTrue(response.is_rendered)\n\n    def test_render(self):\n        # response is not re-rendered without the render call\n        response = self._response().render()\n        self.assertEqual(response.content, b'foo')\n\n        # rebaking doesn't change the rendered content\n        response.template_name = Template('bar{{ baz }}')\n        response.render()\n        self.assertEqual(response.content, b'foo')\n\n        # but rendered content can be overridden by manually\n        # setting content\n        response.content = 'bar'\n        self.assertEqual(response.content, b'bar')\n\n    def test_iteration_unrendered(self):\n        # unrendered response raises an exception on iteration\n        response = self._response()\n        self.assertFalse(response.is_rendered)\n\n        def iteration():\n            for x in response:\n                pass\n        self.assertRaises(ContentNotRenderedError, iteration)\n        self.assertFalse(response.is_rendered)\n\n    def test_iteration_rendered(self):\n        # iteration works for rendered responses\n        response = self._response().render()\n        res = [x for x in response]\n        self.assertEqual(res, [b'foo'])\n\n    def test_content_access_unrendered(self):\n        # unrendered response raises an exception when content is accessed\n        response = self._response()\n        self.assertFalse(response.is_rendered)\n        self.assertRaises(ContentNotRenderedError, lambda: response.content)\n        self.assertFalse(response.is_rendered)\n\n    def test_content_access_rendered(self):\n        # rendered response content can be accessed\n        response = self._response().render()\n        self.assertEqual(response.content, b'foo')\n\n    def test_set_content(self):\n        # content can be overriden\n        response = self._response()\n        self.assertFalse(response.is_rendered)\n        response.content = 'spam'\n        self.assertTrue(response.is_rendered)\n        self.assertEqual(response.content, b'spam')\n        response.content = 'baz'\n        self.assertEqual(response.content, b'baz')\n\n    def test_dict_context(self):\n        response = self._response('{{ foo }}{{ processors }}',\n                                  {'foo': 'bar'})\n        self.assertEqual(response.context_data, {'foo': 'bar'})\n        response.render()\n        self.assertEqual(response.content, b'bar')\n\n    def test_context_instance(self):\n        response = self._response('{{ foo }}{{ processors }}',\n                                  Context({'foo': 'bar'}))\n        self.assertEqual(response.context_data.__class__, Context)\n        response.render()\n        self.assertEqual(response.content, b'bar')\n\n    def test_kwargs(self):\n        response = self._response(content_type = 'application/json', status=504)\n        self.assertEqual(response['content-type'], 'application/json')\n        self.assertEqual(response.status_code, 504)\n\n    def test_args(self):\n        response = SimpleTemplateResponse('', {}, 'application/json', 504)\n        self.assertEqual(response['content-type'], 'application/json')\n        self.assertEqual(response.status_code, 504)\n\n    def test_post_callbacks(self):\n        \"Rendering a template response triggers the post-render callbacks\"\n        post = []\n\n        def post1(obj):\n            post.append('post1')\n        def post2(obj):\n            post.append('post2')\n\n        response = SimpleTemplateResponse('first/test.html', {})\n        response.add_post_render_callback(post1)\n        response.add_post_render_callback(post2)\n\n        # When the content is rendered, all the callbacks are invoked, too.\n        response.render()\n        self.assertEqual(response.content, b'First template\\n')\n        self.assertEqual(post, ['post1','post2'])\n\n\n    def test_pickling(self):\n        # Create a template response. The context is\n        # known to be unpickleable (e.g., a function).\n        response = SimpleTemplateResponse('first/test.html', {\n                'value': 123,\n                'fn': datetime.now,\n            })\n        self.assertRaises(ContentNotRenderedError,\n                          pickle.dumps, response)\n\n        # But if we render the response, we can pickle it.\n        response.render()\n        pickled_response = pickle.dumps(response)\n        unpickled_response = pickle.loads(pickled_response)\n\n        self.assertEqual(unpickled_response.content, response.content)\n        self.assertEqual(unpickled_response['content-type'], response['content-type'])\n        self.assertEqual(unpickled_response.status_code, response.status_code)\n\n        # ...and the unpickled reponse doesn't have the\n        # template-related attributes, so it can't be re-rendered\n        template_attrs = ('template_name', 'context_data', '_post_render_callbacks')\n        for attr in template_attrs:\n            self.assertFalse(hasattr(unpickled_response, attr))\n\n        # ...and requesting any of those attributes raises an exception\n        for attr in template_attrs:\n            with self.assertRaises(AttributeError):\n                getattr(unpickled_response, attr)\n\n    def test_repickling(self):\n        response = SimpleTemplateResponse('first/test.html', {\n                'value': 123,\n                'fn': datetime.now,\n            })\n        self.assertRaises(ContentNotRenderedError,\n                          pickle.dumps, response)\n\n        response.render()\n        pickled_response = pickle.dumps(response)\n        unpickled_response = pickle.loads(pickled_response)\n        repickled_response = pickle.dumps(unpickled_response)\n\n    def test_pickling_cookie(self):\n        response = SimpleTemplateResponse('first/test.html', {\n                'value': 123,\n                'fn': datetime.now,\n            })\n\n        response.cookies['key'] = 'value'\n\n        response.render()\n        pickled_response = pickle.dumps(response, pickle.HIGHEST_PROTOCOL)\n        unpickled_response = pickle.loads(pickled_response)\n\n        self.assertEqual(unpickled_response.cookies['key'].value, 'value')\n\n\n@override_settings(\n    TEMPLATE_CONTEXT_PROCESSORS=[test_processor_name],\n    TEMPLATE_DIRS=(os.path.join(os.path.dirname(upath(__file__)), 'templates')),\n)\nclass TemplateResponseTest(TestCase):\n\n    def setUp(self):\n        self.factory = RequestFactory()\n\n    def _response(self, template='foo', *args, **kwargs):\n        return TemplateResponse(self.factory.get('/'), Template(template),\n                                *args, **kwargs)\n\n    def test_render(self):\n        response = self._response('{{ foo }}{{ processors }}').render()\n        self.assertEqual(response.content, b'yes')\n\n    def test_render_with_requestcontext(self):\n        response = self._response('{{ foo }}{{ processors }}',\n                                  {'foo': 'bar'}).render()\n        self.assertEqual(response.content, b'baryes')\n\n    def test_render_with_context(self):\n        response = self._response('{{ foo }}{{ processors }}',\n                                  Context({'foo': 'bar'})).render()\n        self.assertEqual(response.content, b'bar')\n\n    def test_kwargs(self):\n        response = self._response(content_type = 'application/json',\n                                  status=504)\n        self.assertEqual(response['content-type'], 'application/json')\n        self.assertEqual(response.status_code, 504)\n\n    def test_args(self):\n        response = TemplateResponse(self.factory.get('/'), '', {},\n                                    'application/json', 504)\n        self.assertEqual(response['content-type'], 'application/json')\n        self.assertEqual(response.status_code, 504)\n\n    def test_custom_app(self):\n        response = self._response('{{ foo }}', current_app=\"foobar\")\n\n        rc = response.resolve_context(response.context_data)\n\n        self.assertEqual(rc.current_app, 'foobar')\n\n    def test_pickling(self):\n        # Create a template response. The context is\n        # known to be unpickleable (e.g., a function).\n        response = TemplateResponse(self.factory.get('/'),\n            'first/test.html', {\n                'value': 123,\n                'fn': datetime.now,\n            })\n        self.assertRaises(ContentNotRenderedError,\n                          pickle.dumps, response)\n\n        # But if we render the response, we can pickle it.\n        response.render()\n        pickled_response = pickle.dumps(response)\n        unpickled_response = pickle.loads(pickled_response)\n\n        self.assertEqual(unpickled_response.content, response.content)\n        self.assertEqual(unpickled_response['content-type'], response['content-type'])\n        self.assertEqual(unpickled_response.status_code, response.status_code)\n\n        # ...and the unpickled reponse doesn't have the\n        # template-related attributes, so it can't be re-rendered\n        template_attrs = ('template_name', 'context_data',\n            '_post_render_callbacks', '_request', '_current_app')\n        for attr in template_attrs:\n            self.assertFalse(hasattr(unpickled_response, attr))\n\n        # ...and requesting any of those attributes raises an exception\n        for attr in template_attrs:\n            with self.assertRaises(AttributeError):\n                getattr(unpickled_response, attr)\n\n    def test_repickling(self):\n        response = SimpleTemplateResponse('first/test.html', {\n                'value': 123,\n                'fn': datetime.now,\n            })\n        self.assertRaises(ContentNotRenderedError,\n                          pickle.dumps, response)\n\n        response.render()\n        pickled_response = pickle.dumps(response)\n        unpickled_response = pickle.loads(pickled_response)\n        repickled_response = pickle.dumps(unpickled_response)\n\n\nclass CustomURLConfTest(TestCase):\n    urls = 'regressiontests.templates.urls'\n\n    def setUp(self):\n        self.old_MIDDLEWARE_CLASSES = settings.MIDDLEWARE_CLASSES\n        settings.MIDDLEWARE_CLASSES = list(settings.MIDDLEWARE_CLASSES) + [\n            'regressiontests.templates.response.CustomURLConfMiddleware'\n        ]\n\n    def tearDown(self):\n        settings.MIDDLEWARE_CLASSES = self.old_MIDDLEWARE_CLASSES\n\n    def test_custom_urlconf(self):\n        response = self.client.get('/template_response_view/')\n        self.assertEqual(response.status_code, 200)\n        self.assertContains(response, 'This is where you can find the snark: /snark/')\n\n\nclass CacheMiddlewareTest(TestCase):\n    urls = 'regressiontests.templates.alternate_urls'\n\n    def setUp(self):\n        self.old_MIDDLEWARE_CLASSES = settings.MIDDLEWARE_CLASSES\n        self.CACHE_MIDDLEWARE_SECONDS = settings.CACHE_MIDDLEWARE_SECONDS\n\n        settings.CACHE_MIDDLEWARE_SECONDS = 2.0\n        settings.MIDDLEWARE_CLASSES = list(settings.MIDDLEWARE_CLASSES) + [\n            'django.middleware.cache.FetchFromCacheMiddleware',\n            'django.middleware.cache.UpdateCacheMiddleware',\n        ]\n\n    def tearDown(self):\n        settings.MIDDLEWARE_CLASSES = self.old_MIDDLEWARE_CLASSES\n        settings.CACHE_MIDDLEWARE_SECONDS = self.CACHE_MIDDLEWARE_SECONDS\n\n    def test_middleware_caching(self):\n        response = self.client.get('/template_response_view/')\n        self.assertEqual(response.status_code, 200)\n\n        time.sleep(1.0)\n\n        response2 = self.client.get('/template_response_view/')\n        self.assertEqual(response2.status_code, 200)\n\n        self.assertEqual(response.content, response2.content)\n\n        time.sleep(2.0)\n\n        # Let the cache expire and test again\n        response2 = self.client.get('/template_response_view/')\n        self.assertEqual(response2.status_code, 200)\n\n        self.assertNotEqual(response.content, response2.content)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/templates/smartif.py",
    "content": "from django.template.smartif import IfParser\nfrom django.utils import unittest\n\nclass SmartIfTests(unittest.TestCase):\n\n    def assertCalcEqual(self, expected, tokens):\n        self.assertEqual(expected, IfParser(tokens).parse().eval({}))\n\n    # We only test things here that are difficult to test elsewhere\n    # Many other tests are found in the main tests for builtin template tags\n    # Test parsing via the printed parse tree\n    def test_not(self):\n        var = IfParser([\"not\", False]).parse()\n        self.assertEqual(\"(not (literal False))\", repr(var))\n        self.assertTrue(var.eval({}))\n\n        self.assertFalse(IfParser([\"not\", True]).parse().eval({}))\n\n    def test_or(self):\n        var = IfParser([True, \"or\", False]).parse()\n        self.assertEqual(\"(or (literal True) (literal False))\", repr(var))\n        self.assertTrue(var.eval({}))\n\n    def test_in(self):\n        list_ = [1,2,3]\n        self.assertCalcEqual(True, [1, 'in', list_])\n        self.assertCalcEqual(False, [1, 'in', None])\n        self.assertCalcEqual(False, [None, 'in', list_])\n\n    def test_not_in(self):\n        list_ = [1,2,3]\n        self.assertCalcEqual(False, [1, 'not', 'in', list_])\n        self.assertCalcEqual(True, [4, 'not', 'in', list_])\n        self.assertCalcEqual(False, [1, 'not', 'in', None])\n        self.assertCalcEqual(True, [None, 'not', 'in', list_])\n\n    def test_precedence(self):\n        # (False and False) or True == True   <- we want this one, like Python\n        # False and (False or True) == False\n        self.assertCalcEqual(True, [False, 'and', False, 'or', True])\n\n        # True or (False and False) == True   <- we want this one, like Python\n        # (True or False) and False == False\n        self.assertCalcEqual(True, [True, 'or', False, 'and', False])\n\n        # (1 or 1) == 2  -> False\n        # 1 or (1 == 2)  -> True   <- we want this one\n        self.assertCalcEqual(True, [1, 'or', 1, '==', 2])\n\n        self.assertCalcEqual(True, [True, '==', True, 'or', True, '==', False])\n\n        self.assertEqual(\"(or (and (== (literal 1) (literal 2)) (literal 3)) (literal 4))\",\n                         repr(IfParser([1, '==', 2, 'and', 3, 'or', 4]).parse()))\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/templates/templates/broken_base.html",
    "content": "{% include \"missing.html\" %}\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/templates/templates/first/test.html",
    "content": "First template\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/templates/templates/inclusion.html",
    "content": "{{ result }}\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/templates/templates/response.html",
    "content": "This is where you can find the snark: {% url \"snark\" %}\n{% now \"U.u\" %}\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/templates/templates/second/test.html",
    "content": "Second template\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/templates/templates/ssi include with spaces.html",
    "content": "This is for testing an ssi include with spaces in its name. {{ test }}\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/templates/templates/ssi_include.html",
    "content": "This is for testing an ssi include. {{ test }}\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/templates/templates/test_context.html",
    "content": "obj:{{ obj }}"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/templates/templates/test_extends_error.html",
    "content": "{% extends \"broken_base.html\" %}\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/templates/templates/test_incl_tag_current_app.html",
    "content": "{% load custom %}{% current_app %}\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/templates/templates/test_incl_tag_use_l10n.html",
    "content": "{% load custom %}{% use_l10n %}\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/templates/templates/test_include_error.html",
    "content": "{% include \"missing.html\" %}"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/templates/templatetags/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/templates/templatetags/bad_tag.py",
    "content": "from django import template\n\n\nregister = template.Library()\n\n@register.tag\ndef badtag(parser, token):\n    raise RuntimeError(\"I am a bad tag\")\n\n@register.simple_tag\ndef badsimpletag():\n    raise RuntimeError(\"I am a bad simpletag\")\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/templates/templatetags/broken_tag.py",
    "content": "from django import Xtemplate"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/templates/templatetags/custom.py",
    "content": "import operator\n\nfrom django import template\nfrom django.template.defaultfilters import stringfilter\nfrom django.template.loader import get_template\nfrom django.utils import six\n\nregister = template.Library()\n\n@register.filter\n@stringfilter\ndef trim(value, num):\n    return value[:num]\n\n@register.simple_tag\ndef no_params():\n    \"\"\"Expected no_params __doc__\"\"\"\n    return \"no_params - Expected result\"\nno_params.anything = \"Expected no_params __dict__\"\n\n@register.simple_tag\ndef one_param(arg):\n    \"\"\"Expected one_param __doc__\"\"\"\n    return \"one_param - Expected result: %s\" % arg\none_param.anything = \"Expected one_param __dict__\"\n\n@register.simple_tag(takes_context=False)\ndef explicit_no_context(arg):\n    \"\"\"Expected explicit_no_context __doc__\"\"\"\n    return \"explicit_no_context - Expected result: %s\" % arg\nexplicit_no_context.anything = \"Expected explicit_no_context __dict__\"\n\n@register.simple_tag(takes_context=True)\ndef no_params_with_context(context):\n    \"\"\"Expected no_params_with_context __doc__\"\"\"\n    return \"no_params_with_context - Expected result (context value: %s)\" % context['value']\nno_params_with_context.anything = \"Expected no_params_with_context __dict__\"\n\n@register.simple_tag(takes_context=True)\ndef params_and_context(context, arg):\n    \"\"\"Expected params_and_context __doc__\"\"\"\n    return \"params_and_context - Expected result (context value: %s): %s\" % (context['value'], arg)\nparams_and_context.anything = \"Expected params_and_context __dict__\"\n\n@register.simple_tag\ndef simple_two_params(one, two):\n    \"\"\"Expected simple_two_params __doc__\"\"\"\n    return \"simple_two_params - Expected result: %s, %s\" % (one, two)\nsimple_two_params.anything = \"Expected simple_two_params __dict__\"\n\n@register.simple_tag\ndef simple_one_default(one, two='hi'):\n    \"\"\"Expected simple_one_default __doc__\"\"\"\n    return \"simple_one_default - Expected result: %s, %s\" % (one, two)\nsimple_one_default.anything = \"Expected simple_one_default __dict__\"\n\n@register.simple_tag\ndef simple_unlimited_args(one, two='hi', *args):\n    \"\"\"Expected simple_unlimited_args __doc__\"\"\"\n    return \"simple_unlimited_args - Expected result: %s\" % (', '.join([six.text_type(arg) for arg in [one, two] + list(args)]))\nsimple_unlimited_args.anything = \"Expected simple_unlimited_args __dict__\"\n\n@register.simple_tag\ndef simple_only_unlimited_args(*args):\n    \"\"\"Expected simple_only_unlimited_args __doc__\"\"\"\n    return \"simple_only_unlimited_args - Expected result: %s\" % ', '.join([six.text_type(arg) for arg in args])\nsimple_only_unlimited_args.anything = \"Expected simple_only_unlimited_args __dict__\"\n\n@register.simple_tag\ndef simple_unlimited_args_kwargs(one, two='hi', *args, **kwargs):\n    \"\"\"Expected simple_unlimited_args_kwargs __doc__\"\"\"\n    # Sort the dictionary by key to guarantee the order for testing.\n    sorted_kwarg = sorted(six.iteritems(kwargs), key=operator.itemgetter(0))\n    return \"simple_unlimited_args_kwargs - Expected result: %s / %s\" % (\n        ', '.join([six.text_type(arg) for arg in [one, two] + list(args)]),\n        ', '.join(['%s=%s' % (k, v) for (k, v) in sorted_kwarg])\n        )\nsimple_unlimited_args_kwargs.anything = \"Expected simple_unlimited_args_kwargs __dict__\"\n\n@register.simple_tag(takes_context=True)\ndef simple_tag_without_context_parameter(arg):\n    \"\"\"Expected simple_tag_without_context_parameter __doc__\"\"\"\n    return \"Expected result\"\nsimple_tag_without_context_parameter.anything = \"Expected simple_tag_without_context_parameter __dict__\"\n\n@register.simple_tag(takes_context=True)\ndef current_app(context):\n    return \"%s\" % context.current_app\n\n@register.simple_tag(takes_context=True)\ndef use_l10n(context):\n    return \"%s\" % context.use_l10n\n\n@register.simple_tag(name='minustwo')\ndef minustwo_overridden_name(value):\n    return value - 2\n\nregister.simple_tag(lambda x: x - 1, name='minusone')\n\n@register.inclusion_tag('inclusion.html')\ndef inclusion_no_params():\n    \"\"\"Expected inclusion_no_params __doc__\"\"\"\n    return {\"result\" : \"inclusion_no_params - Expected result\"}\ninclusion_no_params.anything = \"Expected inclusion_no_params __dict__\"\n\n@register.inclusion_tag(get_template('inclusion.html'))\ndef inclusion_no_params_from_template():\n    \"\"\"Expected inclusion_no_params_from_template __doc__\"\"\"\n    return {\"result\" : \"inclusion_no_params_from_template - Expected result\"}\ninclusion_no_params_from_template.anything = \"Expected inclusion_no_params_from_template __dict__\"\n\n@register.inclusion_tag('inclusion.html')\ndef inclusion_one_param(arg):\n    \"\"\"Expected inclusion_one_param __doc__\"\"\"\n    return {\"result\" : \"inclusion_one_param - Expected result: %s\" % arg}\ninclusion_one_param.anything = \"Expected inclusion_one_param __dict__\"\n\n@register.inclusion_tag(get_template('inclusion.html'))\ndef inclusion_one_param_from_template(arg):\n    \"\"\"Expected inclusion_one_param_from_template __doc__\"\"\"\n    return {\"result\" : \"inclusion_one_param_from_template - Expected result: %s\" % arg}\ninclusion_one_param_from_template.anything = \"Expected inclusion_one_param_from_template __dict__\"\n\n@register.inclusion_tag('inclusion.html', takes_context=False)\ndef inclusion_explicit_no_context(arg):\n    \"\"\"Expected inclusion_explicit_no_context __doc__\"\"\"\n    return {\"result\" : \"inclusion_explicit_no_context - Expected result: %s\" % arg}\ninclusion_explicit_no_context.anything = \"Expected inclusion_explicit_no_context __dict__\"\n\n@register.inclusion_tag(get_template('inclusion.html'), takes_context=False)\ndef inclusion_explicit_no_context_from_template(arg):\n    \"\"\"Expected inclusion_explicit_no_context_from_template __doc__\"\"\"\n    return {\"result\" : \"inclusion_explicit_no_context_from_template - Expected result: %s\" % arg}\ninclusion_explicit_no_context_from_template.anything = \"Expected inclusion_explicit_no_context_from_template __dict__\"\n\n@register.inclusion_tag('inclusion.html', takes_context=True)\ndef inclusion_no_params_with_context(context):\n    \"\"\"Expected inclusion_no_params_with_context __doc__\"\"\"\n    return {\"result\" : \"inclusion_no_params_with_context - Expected result (context value: %s)\" % context['value']}\ninclusion_no_params_with_context.anything = \"Expected inclusion_no_params_with_context __dict__\"\n\n@register.inclusion_tag(get_template('inclusion.html'), takes_context=True)\ndef inclusion_no_params_with_context_from_template(context):\n    \"\"\"Expected inclusion_no_params_with_context_from_template __doc__\"\"\"\n    return {\"result\" : \"inclusion_no_params_with_context_from_template - Expected result (context value: %s)\" % context['value']}\ninclusion_no_params_with_context_from_template.anything = \"Expected inclusion_no_params_with_context_from_template __dict__\"\n\n@register.inclusion_tag('inclusion.html', takes_context=True)\ndef inclusion_params_and_context(context, arg):\n    \"\"\"Expected inclusion_params_and_context __doc__\"\"\"\n    return {\"result\" : \"inclusion_params_and_context - Expected result (context value: %s): %s\" % (context['value'], arg)}\ninclusion_params_and_context.anything = \"Expected inclusion_params_and_context __dict__\"\n\n@register.inclusion_tag(get_template('inclusion.html'), takes_context=True)\ndef inclusion_params_and_context_from_template(context, arg):\n    \"\"\"Expected inclusion_params_and_context_from_template __doc__\"\"\"\n    return {\"result\" : \"inclusion_params_and_context_from_template - Expected result (context value: %s): %s\" % (context['value'], arg)}\ninclusion_params_and_context_from_template.anything = \"Expected inclusion_params_and_context_from_template __dict__\"\n\n@register.inclusion_tag('inclusion.html')\ndef inclusion_two_params(one, two):\n    \"\"\"Expected inclusion_two_params __doc__\"\"\"\n    return {\"result\": \"inclusion_two_params - Expected result: %s, %s\" % (one, two)}\ninclusion_two_params.anything = \"Expected inclusion_two_params __dict__\"\n\n@register.inclusion_tag(get_template('inclusion.html'))\ndef inclusion_two_params_from_template(one, two):\n    \"\"\"Expected inclusion_two_params_from_template __doc__\"\"\"\n    return {\"result\": \"inclusion_two_params_from_template - Expected result: %s, %s\" % (one, two)}\ninclusion_two_params_from_template.anything = \"Expected inclusion_two_params_from_template __dict__\"\n\n@register.inclusion_tag('inclusion.html')\ndef inclusion_one_default(one, two='hi'):\n    \"\"\"Expected inclusion_one_default __doc__\"\"\"\n    return {\"result\": \"inclusion_one_default - Expected result: %s, %s\" % (one, two)}\ninclusion_one_default.anything = \"Expected inclusion_one_default __dict__\"\n\n@register.inclusion_tag(get_template('inclusion.html'))\ndef inclusion_one_default_from_template(one, two='hi'):\n    \"\"\"Expected inclusion_one_default_from_template __doc__\"\"\"\n    return {\"result\": \"inclusion_one_default_from_template - Expected result: %s, %s\" % (one, two)}\ninclusion_one_default_from_template.anything = \"Expected inclusion_one_default_from_template __dict__\"\n\n@register.inclusion_tag('inclusion.html')\ndef inclusion_unlimited_args(one, two='hi', *args):\n    \"\"\"Expected inclusion_unlimited_args __doc__\"\"\"\n    return {\"result\": \"inclusion_unlimited_args - Expected result: %s\" % (', '.join([six.text_type(arg) for arg in [one, two] + list(args)]))}\ninclusion_unlimited_args.anything = \"Expected inclusion_unlimited_args __dict__\"\n\n@register.inclusion_tag(get_template('inclusion.html'))\ndef inclusion_unlimited_args_from_template(one, two='hi', *args):\n    \"\"\"Expected inclusion_unlimited_args_from_template __doc__\"\"\"\n    return {\"result\": \"inclusion_unlimited_args_from_template - Expected result: %s\" % (', '.join([six.text_type(arg) for arg in [one, two] + list(args)]))}\ninclusion_unlimited_args_from_template.anything = \"Expected inclusion_unlimited_args_from_template __dict__\"\n\n@register.inclusion_tag('inclusion.html')\ndef inclusion_only_unlimited_args(*args):\n    \"\"\"Expected inclusion_only_unlimited_args __doc__\"\"\"\n    return {\"result\": \"inclusion_only_unlimited_args - Expected result: %s\" % (', '.join([six.text_type(arg) for arg in args]))}\ninclusion_only_unlimited_args.anything = \"Expected inclusion_only_unlimited_args __dict__\"\n\n@register.inclusion_tag(get_template('inclusion.html'))\ndef inclusion_only_unlimited_args_from_template(*args):\n    \"\"\"Expected inclusion_only_unlimited_args_from_template __doc__\"\"\"\n    return {\"result\": \"inclusion_only_unlimited_args_from_template - Expected result: %s\" % (', '.join([six.text_type(arg) for arg in args]))}\ninclusion_only_unlimited_args_from_template.anything = \"Expected inclusion_only_unlimited_args_from_template __dict__\"\n\n@register.inclusion_tag('test_incl_tag_current_app.html', takes_context=True)\ndef inclusion_tag_current_app(context):\n    \"\"\"Expected inclusion_tag_current_app __doc__\"\"\"\n    return {}\ninclusion_tag_current_app.anything = \"Expected inclusion_tag_current_app __dict__\"\n\n@register.inclusion_tag('test_incl_tag_use_l10n.html', takes_context=True)\ndef inclusion_tag_use_l10n(context):\n    \"\"\"Expected inclusion_tag_use_l10n __doc__\"\"\"\n    return {}\ninclusion_tag_use_l10n.anything = \"Expected inclusion_tag_use_l10n __dict__\"\n\n@register.inclusion_tag('inclusion.html')\ndef inclusion_unlimited_args_kwargs(one, two='hi', *args, **kwargs):\n    \"\"\"Expected inclusion_unlimited_args_kwargs __doc__\"\"\"\n    # Sort the dictionary by key to guarantee the order for testing.\n    sorted_kwarg = sorted(six.iteritems(kwargs), key=operator.itemgetter(0))\n    return {\"result\": \"inclusion_unlimited_args_kwargs - Expected result: %s / %s\" % (\n        ', '.join([six.text_type(arg) for arg in [one, two] + list(args)]),\n        ', '.join(['%s=%s' % (k, v) for (k, v) in sorted_kwarg])\n        )}\ninclusion_unlimited_args_kwargs.anything = \"Expected inclusion_unlimited_args_kwargs __dict__\"\n\n@register.inclusion_tag('inclusion.html', takes_context=True)\ndef inclusion_tag_without_context_parameter(arg):\n    \"\"\"Expected inclusion_tag_without_context_parameter __doc__\"\"\"\n    return {}\ninclusion_tag_without_context_parameter.anything = \"Expected inclusion_tag_without_context_parameter __dict__\"\n\n@register.assignment_tag\ndef assignment_no_params():\n    \"\"\"Expected assignment_no_params __doc__\"\"\"\n    return \"assignment_no_params - Expected result\"\nassignment_no_params.anything = \"Expected assignment_no_params __dict__\"\n\n@register.assignment_tag\ndef assignment_one_param(arg):\n    \"\"\"Expected assignment_one_param __doc__\"\"\"\n    return \"assignment_one_param - Expected result: %s\" % arg\nassignment_one_param.anything = \"Expected assignment_one_param __dict__\"\n\n@register.assignment_tag(takes_context=False)\ndef assignment_explicit_no_context(arg):\n    \"\"\"Expected assignment_explicit_no_context __doc__\"\"\"\n    return \"assignment_explicit_no_context - Expected result: %s\" % arg\nassignment_explicit_no_context.anything = \"Expected assignment_explicit_no_context __dict__\"\n\n@register.assignment_tag(takes_context=True)\ndef assignment_no_params_with_context(context):\n    \"\"\"Expected assignment_no_params_with_context __doc__\"\"\"\n    return \"assignment_no_params_with_context - Expected result (context value: %s)\" % context['value']\nassignment_no_params_with_context.anything = \"Expected assignment_no_params_with_context __dict__\"\n\n@register.assignment_tag(takes_context=True)\ndef assignment_params_and_context(context, arg):\n    \"\"\"Expected assignment_params_and_context __doc__\"\"\"\n    return \"assignment_params_and_context - Expected result (context value: %s): %s\" % (context['value'], arg)\nassignment_params_and_context.anything = \"Expected assignment_params_and_context __dict__\"\n\n@register.assignment_tag\ndef assignment_two_params(one, two):\n    \"\"\"Expected assignment_two_params __doc__\"\"\"\n    return \"assignment_two_params - Expected result: %s, %s\" % (one, two)\nassignment_two_params.anything = \"Expected assignment_two_params __dict__\"\n\n@register.assignment_tag\ndef assignment_one_default(one, two='hi'):\n    \"\"\"Expected assignment_one_default __doc__\"\"\"\n    return \"assignment_one_default - Expected result: %s, %s\" % (one, two)\nassignment_one_default.anything = \"Expected assignment_one_default __dict__\"\n\n@register.assignment_tag\ndef assignment_unlimited_args(one, two='hi', *args):\n    \"\"\"Expected assignment_unlimited_args __doc__\"\"\"\n    return \"assignment_unlimited_args - Expected result: %s\" % (', '.join([six.text_type(arg) for arg in [one, two] + list(args)]))\nassignment_unlimited_args.anything = \"Expected assignment_unlimited_args __dict__\"\n\n@register.assignment_tag\ndef assignment_only_unlimited_args(*args):\n    \"\"\"Expected assignment_only_unlimited_args __doc__\"\"\"\n    return \"assignment_only_unlimited_args - Expected result: %s\" % ', '.join([six.text_type(arg) for arg in args])\nassignment_only_unlimited_args.anything = \"Expected assignment_only_unlimited_args __dict__\"\n\n@register.assignment_tag\ndef assignment_unlimited_args_kwargs(one, two='hi', *args, **kwargs):\n    \"\"\"Expected assignment_unlimited_args_kwargs __doc__\"\"\"\n    # Sort the dictionary by key to guarantee the order for testing.\n    sorted_kwarg = sorted(six.iteritems(kwargs), key=operator.itemgetter(0))\n    return \"assignment_unlimited_args_kwargs - Expected result: %s / %s\" % (\n        ', '.join([six.text_type(arg) for arg in [one, two] + list(args)]),\n        ', '.join(['%s=%s' % (k, v) for (k, v) in sorted_kwarg])\n        )\nassignment_unlimited_args_kwargs.anything = \"Expected assignment_unlimited_args_kwargs __dict__\"\n\n@register.assignment_tag(takes_context=True)\ndef assignment_tag_without_context_parameter(arg):\n    \"\"\"Expected assignment_tag_without_context_parameter __doc__\"\"\"\n    return \"Expected result\"\nassignment_tag_without_context_parameter.anything = \"Expected assignment_tag_without_context_parameter __dict__\"\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/templates/templatetags/subpackage/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/templates/templatetags/subpackage/echo.py",
    "content": "from django import template\n\nregister = template.Library()\n\n@register.simple_tag\ndef echo2(arg):\n    return arg\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/templates/templatetags/subpackage/echo_invalid.py",
    "content": "import nonexistent.module\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/templates/tests.py",
    "content": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import, unicode_literals\n\nfrom django.conf import settings\n\nif __name__ == '__main__':\n    # When running this file in isolation, we need to set up the configuration\n    # before importing 'template'.\n    settings.configure()\n\nfrom datetime import date, datetime, timedelta\nimport time\nimport os\nimport sys\nimport traceback\ntry:\n    from urllib.parse import urljoin\nexcept ImportError:     # Python 2\n    from urlparse import urljoin\n\nfrom django import template\nfrom django.template import (base as template_base, Context, RequestContext,\n    Template)\nfrom django.core import urlresolvers\nfrom django.template import loader\nfrom django.template.loaders import app_directories, filesystem, cached\nfrom django.test import RequestFactory, TestCase\nfrom django.test.utils import (setup_test_template_loader,\n    restore_template_loaders, override_settings)\nfrom django.utils import unittest\nfrom django.utils.encoding import python_2_unicode_compatible\nfrom django.utils.formats import date_format\nfrom django.utils._os import upath\nfrom django.utils.translation import activate, deactivate, ugettext as _\nfrom django.utils.safestring import mark_safe\nfrom django.utils import six\nfrom django.utils.tzinfo import LocalTimezone\n\nfrom .callables import CallableVariablesTests\nfrom .context import ContextTests\nfrom .custom import CustomTagTests, CustomFilterTests\nfrom .parser import ParserTests\nfrom .unicode import UnicodeTests\nfrom .nodelist import NodelistTest, ErrorIndexTest\nfrom .smartif import SmartIfTests\nfrom .response import (TemplateResponseTest, CacheMiddlewareTest,\n    SimpleTemplateResponseTest, CustomURLConfTest)\n\ntry:\n    from .loaders import RenderToStringTest, EggLoaderTest\nexcept ImportError as e:\n    if \"pkg_resources\" in e.args[0]:\n        pass # If setuptools isn't installed, that's fine. Just move on.\n    else:\n        raise\n\n# NumPy installed?\ntry:\n    import numpy\nexcept ImportError:\n    numpy = False\n\nfrom . import filters\n\n#################################\n# Custom template tag for tests #\n#################################\n\nregister = template.Library()\n\nclass EchoNode(template.Node):\n    def __init__(self, contents):\n        self.contents = contents\n\n    def render(self, context):\n        return \" \".join(self.contents)\n\ndef do_echo(parser, token):\n    return EchoNode(token.contents.split()[1:])\n\ndef do_upper(value):\n    return value.upper()\n\nregister.tag(\"echo\", do_echo)\nregister.tag(\"other_echo\", do_echo)\nregister.filter(\"upper\", do_upper)\n\ntemplate.libraries['testtags'] = register\n\n#####################################\n# Helper objects for template tests #\n#####################################\n\nclass SomeException(Exception):\n    silent_variable_failure = True\n\nclass SomeOtherException(Exception):\n    pass\n\nclass ContextStackException(Exception):\n    pass\n\nclass ShouldNotExecuteException(Exception):\n    pass\n\nclass SomeClass:\n    def __init__(self):\n        self.otherclass = OtherClass()\n\n    def method(self):\n        return \"SomeClass.method\"\n\n    def method2(self, o):\n        return o\n\n    def method3(self):\n        raise SomeException\n\n    def method4(self):\n        raise SomeOtherException\n\n    def __getitem__(self, key):\n        if key == 'silent_fail_key':\n            raise SomeException\n        elif key == 'noisy_fail_key':\n            raise SomeOtherException\n        raise KeyError\n\n    def silent_fail_attribute(self):\n        raise SomeException\n    silent_fail_attribute = property(silent_fail_attribute)\n\n    def noisy_fail_attribute(self):\n        raise SomeOtherException\n    noisy_fail_attribute = property(noisy_fail_attribute)\n\nclass OtherClass:\n    def method(self):\n        return \"OtherClass.method\"\n\nclass TestObj(object):\n    def is_true(self):\n        return True\n\n    def is_false(self):\n        return False\n\n    def is_bad(self):\n        raise ShouldNotExecuteException()\n\nclass SilentGetItemClass(object):\n    def __getitem__(self, key):\n        raise SomeException\n\nclass SilentAttrClass(object):\n    def b(self):\n        raise SomeException\n    b = property(b)\n\n@python_2_unicode_compatible\nclass UTF8Class:\n    \"Class whose __str__ returns non-ASCII data on Python 2\"\n    def __str__(self):\n        return 'ŠĐĆŽćžšđ'\n\n@override_settings(MEDIA_URL=\"/media/\", STATIC_URL=\"/static/\")\nclass Templates(TestCase):\n\n    def test_loaders_security(self):\n        ad_loader = app_directories.Loader()\n        fs_loader = filesystem.Loader()\n        def test_template_sources(path, template_dirs, expected_sources):\n            if isinstance(expected_sources, list):\n                # Fix expected sources so they are abspathed\n                expected_sources = [os.path.abspath(s) for s in expected_sources]\n            # Test the two loaders (app_directores and filesystem).\n            func1 = lambda p, t: list(ad_loader.get_template_sources(p, t))\n            func2 = lambda p, t: list(fs_loader.get_template_sources(p, t))\n            for func in (func1, func2):\n                if isinstance(expected_sources, list):\n                    self.assertEqual(func(path, template_dirs), expected_sources)\n                else:\n                    self.assertRaises(expected_sources, func, path, template_dirs)\n\n        template_dirs = ['/dir1', '/dir2']\n        test_template_sources('index.html', template_dirs,\n                              ['/dir1/index.html', '/dir2/index.html'])\n        test_template_sources('/etc/passwd', template_dirs, [])\n        test_template_sources('etc/passwd', template_dirs,\n                              ['/dir1/etc/passwd', '/dir2/etc/passwd'])\n        test_template_sources('../etc/passwd', template_dirs, [])\n        test_template_sources('../../../etc/passwd', template_dirs, [])\n        test_template_sources('/dir1/index.html', template_dirs,\n                              ['/dir1/index.html'])\n        test_template_sources('../dir2/index.html', template_dirs,\n                              ['/dir2/index.html'])\n        test_template_sources('/dir1blah', template_dirs, [])\n        test_template_sources('../dir1blah', template_dirs, [])\n\n        # UTF-8 bytestrings are permitted.\n        test_template_sources(b'\\xc3\\x85ngstr\\xc3\\xb6m', template_dirs,\n                              ['/dir1/Ångström', '/dir2/Ångström'])\n        # Unicode strings are permitted.\n        test_template_sources('Ångström', template_dirs,\n                              ['/dir1/Ångström', '/dir2/Ångström'])\n        test_template_sources('Ångström', [b'/Stra\\xc3\\x9fe'], ['/Straße/Ångström'])\n        test_template_sources(b'\\xc3\\x85ngstr\\xc3\\xb6m', [b'/Stra\\xc3\\x9fe'],\n                              ['/Straße/Ångström'])\n        # Invalid UTF-8 encoding in bytestrings is not. Should raise a\n        # semi-useful error message.\n        test_template_sources(b'\\xc3\\xc3', template_dirs, UnicodeDecodeError)\n\n        # Case insensitive tests (for win32). Not run unless we're on\n        # a case insensitive operating system.\n        if os.path.normcase('/TEST') == os.path.normpath('/test'):\n            template_dirs = ['/dir1', '/DIR2']\n            test_template_sources('index.html', template_dirs,\n                                  ['/dir1/index.html', '/DIR2/index.html'])\n            test_template_sources('/DIR1/index.HTML', template_dirs,\n                                  ['/DIR1/index.HTML'])\n\n    def test_loader_debug_origin(self):\n        # Turn TEMPLATE_DEBUG on, so that the origin file name will be kept with\n        # the compiled templates.\n        old_td, settings.TEMPLATE_DEBUG = settings.TEMPLATE_DEBUG, True\n        old_loaders = loader.template_source_loaders\n\n        try:\n            loader.template_source_loaders = (filesystem.Loader(),)\n\n            # We rely on the fact that runtests.py sets up TEMPLATE_DIRS to\n            # point to a directory containing a login.html file. Also that\n            # the file system and app directories loaders both inherit the\n            # load_template method from the BaseLoader class, so we only need\n            # to test one of them.\n            load_name = 'login.html'\n            template = loader.get_template(load_name)\n            template_name = template.nodelist[0].source[0].name\n            self.assertTrue(template_name.endswith(load_name),\n                'Template loaded by filesystem loader has incorrect name for debug page: %s' % template_name)\n\n            # Aso test the cached loader, since it overrides load_template\n            cache_loader = cached.Loader(('',))\n            cache_loader._cached_loaders = loader.template_source_loaders\n            loader.template_source_loaders = (cache_loader,)\n\n            template = loader.get_template(load_name)\n            template_name = template.nodelist[0].source[0].name\n            self.assertTrue(template_name.endswith(load_name),\n                'Template loaded through cached loader has incorrect name for debug page: %s' % template_name)\n\n            template = loader.get_template(load_name)\n            template_name = template.nodelist[0].source[0].name\n            self.assertTrue(template_name.endswith(load_name),\n                'Cached template loaded through cached loader has incorrect name for debug page: %s' % template_name)\n        finally:\n            loader.template_source_loaders = old_loaders\n            settings.TEMPLATE_DEBUG = old_td\n\n\n    def test_include_missing_template(self):\n        \"\"\"\n        Tests that the correct template is identified as not existing\n        when {% include %} specifies a template that does not exist.\n        \"\"\"\n\n        # TEMPLATE_DEBUG must be true, otherwise the exception raised\n        # during {% include %} processing will be suppressed.\n        old_td, settings.TEMPLATE_DEBUG = settings.TEMPLATE_DEBUG, True\n        old_loaders = loader.template_source_loaders\n\n        try:\n            # Test the base loader class via the app loader. load_template\n            # from base is used by all shipped loaders excepting cached,\n            # which has its own test.\n            loader.template_source_loaders = (app_directories.Loader(),)\n\n            load_name = 'test_include_error.html'\n            r = None\n            try:\n                tmpl = loader.select_template([load_name])\n                r = tmpl.render(template.Context({}))\n            except template.TemplateDoesNotExist as e:\n                settings.TEMPLATE_DEBUG = old_td\n                self.assertEqual(e.args[0], 'missing.html')\n            self.assertEqual(r, None, 'Template rendering unexpectedly succeeded, produced: ->%r<-' % r)\n        finally:\n            loader.template_source_loaders = old_loaders\n            settings.TEMPLATE_DEBUG = old_td\n\n\n    def test_extends_include_missing_baseloader(self):\n        \"\"\"\n        Tests that the correct template is identified as not existing\n        when {% extends %} specifies a template that does exist, but\n        that template has an {% include %} of something that does not\n        exist. See #12787.\n        \"\"\"\n\n        # TEMPLATE_DEBUG must be true, otherwise the exception raised\n        # during {% include %} processing will be suppressed.\n        old_td, settings.TEMPLATE_DEBUG = settings.TEMPLATE_DEBUG, True\n        old_loaders = loader.template_source_loaders\n\n        try:\n            # Test the base loader class via the app loader. load_template\n            # from base is used by all shipped loaders excepting cached,\n            # which has its own test.\n            loader.template_source_loaders = (app_directories.Loader(),)\n\n            load_name = 'test_extends_error.html'\n            tmpl = loader.get_template(load_name)\n            r = None\n            try:\n                r = tmpl.render(template.Context({}))\n            except template.TemplateDoesNotExist as e:\n                settings.TEMPLATE_DEBUG = old_td\n                self.assertEqual(e.args[0], 'missing.html')\n            self.assertEqual(r, None, 'Template rendering unexpectedly succeeded, produced: ->%r<-' % r)\n        finally:\n            loader.template_source_loaders = old_loaders\n            settings.TEMPLATE_DEBUG = old_td\n\n    def test_extends_include_missing_cachedloader(self):\n        \"\"\"\n        Same as test_extends_include_missing_baseloader, only tests\n        behavior of the cached loader instead of BaseLoader.\n        \"\"\"\n\n        old_td, settings.TEMPLATE_DEBUG = settings.TEMPLATE_DEBUG, True\n        old_loaders = loader.template_source_loaders\n\n        try:\n            cache_loader = cached.Loader(('',))\n            cache_loader._cached_loaders = (app_directories.Loader(),)\n            loader.template_source_loaders = (cache_loader,)\n\n            load_name = 'test_extends_error.html'\n            tmpl = loader.get_template(load_name)\n            r = None\n            try:\n                r = tmpl.render(template.Context({}))\n            except template.TemplateDoesNotExist as e:\n                self.assertEqual(e.args[0], 'missing.html')\n            self.assertEqual(r, None, 'Template rendering unexpectedly succeeded, produced: ->%r<-' % r)\n\n            # For the cached loader, repeat the test, to ensure the first attempt did not cache a\n            # result that behaves incorrectly on subsequent attempts.\n            tmpl = loader.get_template(load_name)\n            try:\n                tmpl.render(template.Context({}))\n            except template.TemplateDoesNotExist as e:\n                self.assertEqual(e.args[0], 'missing.html')\n            self.assertEqual(r, None, 'Template rendering unexpectedly succeeded, produced: ->%r<-' % r)\n        finally:\n            loader.template_source_loaders = old_loaders\n            settings.TEMPLATE_DEBUG = old_td\n\n    def test_token_smart_split(self):\n        # Regression test for #7027\n        token = template.Token(template.TOKEN_BLOCK, 'sometag _(\"Page not found\") value|yesno:_(\"yes,no\")')\n        split = token.split_contents()\n        self.assertEqual(split, [\"sometag\", '_(\"Page not found\")', 'value|yesno:_(\"yes,no\")'])\n\n    @override_settings(SETTINGS_MODULE=None, TEMPLATE_DEBUG=True)\n    def test_url_reverse_no_settings_module(self):\n        # Regression test for #9005\n        from django.template import Template, Context\n\n        t = Template('{% url will_not_match %}')\n        c = Context()\n        with self.assertRaises(urlresolvers.NoReverseMatch):\n            t.render(c)\n\n    def test_url_explicit_exception_for_old_syntax_at_run_time(self):\n        # Regression test for #19280\n        t = Template('{% url path.to.view %}')      # not quoted = old syntax\n        c = Context()\n        with six.assertRaisesRegex(self, urlresolvers.NoReverseMatch,\n                \"The syntax changed in Django 1.5, see the docs.\"):\n            t.render(c)\n\n    def test_url_explicit_exception_for_old_syntax_at_compile_time(self):\n        # Regression test for #19392\n        with six.assertRaisesRegex(self, template.TemplateSyntaxError,\n                \"The syntax of 'url' changed in Django 1.5, see the docs.\"):\n            t = Template('{% url my-view %}')      # not a variable = old syntax\n\n    @override_settings(DEBUG=True, TEMPLATE_DEBUG=True)\n    def test_no_wrapped_exception(self):\n        \"\"\"\n        The template system doesn't wrap exceptions, but annotates them.\n        Refs #16770\n        \"\"\"\n        c = Context({\"coconuts\": lambda: 42 / 0})\n        t = Template(\"{{ coconuts }}\")\n        with self.assertRaises(ZeroDivisionError) as cm:\n            t.render(c)\n\n        self.assertEqual(cm.exception.django_template_source[1], (0, 14))\n\n    def test_invalid_block_suggestion(self):\n        # See #7876\n        from django.template import Template, TemplateSyntaxError\n        try:\n            t = Template(\"{% if 1 %}lala{% endblock %}{% endif %}\")\n        except TemplateSyntaxError as e:\n            self.assertEqual(e.args[0], \"Invalid block tag: 'endblock', expected 'elif', 'else' or 'endif'\")\n\n    def test_templates(self):\n        template_tests = self.get_template_tests()\n        filter_tests = filters.get_filter_tests()\n\n        # Quickly check that we aren't accidentally using a name in both\n        # template and filter tests.\n        overlapping_names = [name for name in filter_tests if name in template_tests]\n        assert not overlapping_names, 'Duplicate test name(s): %s' % ', '.join(overlapping_names)\n\n        template_tests.update(filter_tests)\n\n        cache_loader = setup_test_template_loader(\n            dict([(name, t[0]) for name, t in six.iteritems(template_tests)]),\n            use_cached_loader=True,\n        )\n\n        failures = []\n        tests = sorted(template_tests.items())\n\n        # Turn TEMPLATE_DEBUG off, because tests assume that.\n        old_td, settings.TEMPLATE_DEBUG = settings.TEMPLATE_DEBUG, False\n\n        # Set TEMPLATE_STRING_IF_INVALID to a known string.\n        old_invalid = settings.TEMPLATE_STRING_IF_INVALID\n        expected_invalid_str = 'INVALID'\n\n        # Set ALLOWED_INCLUDE_ROOTS so that ssi works.\n        old_allowed_include_roots = settings.ALLOWED_INCLUDE_ROOTS\n        settings.ALLOWED_INCLUDE_ROOTS = (\n            os.path.dirname(os.path.abspath(upath(__file__))),\n        )\n\n        # Warm the URL reversing cache. This ensures we don't pay the cost\n        # warming the cache during one of the tests.\n        urlresolvers.reverse('regressiontests.templates.views.client_action',\n                             kwargs={'id':0,'action':\"update\"})\n\n        for name, vals in tests:\n            if isinstance(vals[2], tuple):\n                normal_string_result = vals[2][0]\n                invalid_string_result = vals[2][1]\n\n                if isinstance(invalid_string_result, tuple):\n                    expected_invalid_str = 'INVALID %s'\n                    invalid_string_result = invalid_string_result[0] % invalid_string_result[1]\n                    template_base.invalid_var_format_string = True\n\n                try:\n                    template_debug_result = vals[2][2]\n                except IndexError:\n                    template_debug_result = normal_string_result\n\n            else:\n                normal_string_result = vals[2]\n                invalid_string_result = vals[2]\n                template_debug_result = vals[2]\n\n            if 'LANGUAGE_CODE' in vals[1]:\n                activate(vals[1]['LANGUAGE_CODE'])\n            else:\n                activate('en-us')\n\n            for invalid_str, template_debug, result in [\n                    ('', False, normal_string_result),\n                    (expected_invalid_str, False, invalid_string_result),\n                    ('', True, template_debug_result)\n                ]:\n                settings.TEMPLATE_STRING_IF_INVALID = invalid_str\n                settings.TEMPLATE_DEBUG = template_debug\n                for is_cached in (False, True):\n                    try:\n                        try:\n                            test_template = loader.get_template(name)\n                        except ShouldNotExecuteException:\n                            failures.append(\"Template test (Cached='%s', TEMPLATE_STRING_IF_INVALID='%s', TEMPLATE_DEBUG=%s): %s -- FAILED. Template loading invoked method that shouldn't have been invoked.\" % (is_cached, invalid_str, template_debug, name))\n\n                        try:\n                            output = self.render(test_template, vals)\n                        except ShouldNotExecuteException:\n                            failures.append(\"Template test (Cached='%s', TEMPLATE_STRING_IF_INVALID='%s', TEMPLATE_DEBUG=%s): %s -- FAILED. Template rendering invoked method that shouldn't have been invoked.\" % (is_cached, invalid_str, template_debug, name))\n                    except ContextStackException:\n                        failures.append(\"Template test (Cached='%s', TEMPLATE_STRING_IF_INVALID='%s', TEMPLATE_DEBUG=%s): %s -- FAILED. Context stack was left imbalanced\" % (is_cached, invalid_str, template_debug, name))\n                        continue\n                    except Exception:\n                        exc_type, exc_value, exc_tb = sys.exc_info()\n                        if exc_type != result:\n                            tb = '\\n'.join(traceback.format_exception(exc_type, exc_value, exc_tb))\n                            failures.append(\"Template test (Cached='%s', TEMPLATE_STRING_IF_INVALID='%s', TEMPLATE_DEBUG=%s): %s -- FAILED. Got %s, exception: %s\\n%s\" % (is_cached, invalid_str, template_debug, name, exc_type, exc_value, tb))\n                        continue\n                    if output != result:\n                        failures.append(\"Template test (Cached='%s', TEMPLATE_STRING_IF_INVALID='%s', TEMPLATE_DEBUG=%s): %s -- FAILED. Expected %r, got %r\" % (is_cached, invalid_str, template_debug, name, result, output))\n                cache_loader.reset()\n\n            if 'LANGUAGE_CODE' in vals[1]:\n                deactivate()\n\n            if template_base.invalid_var_format_string:\n                expected_invalid_str = 'INVALID'\n                template_base.invalid_var_format_string = False\n\n        restore_template_loaders()\n        deactivate()\n        settings.TEMPLATE_DEBUG = old_td\n        settings.TEMPLATE_STRING_IF_INVALID = old_invalid\n        settings.ALLOWED_INCLUDE_ROOTS = old_allowed_include_roots\n\n        self.assertEqual(failures, [], \"Tests failed:\\n%s\\n%s\" %\n            ('-'*70, (\"\\n%s\\n\" % ('-'*70)).join(failures)))\n\n    def render(self, test_template, vals):\n        context = template.Context(vals[1])\n        before_stack_size = len(context.dicts)\n        output = test_template.render(context)\n        if len(context.dicts) != before_stack_size:\n            raise ContextStackException\n        return output\n\n    def get_template_tests(self):\n        # SYNTAX --\n        # 'template_name': ('template contents', 'context dict', 'expected string output' or Exception class)\n        basedir = os.path.dirname(os.path.abspath(upath(__file__)))\n        tests = {\n            ### BASIC SYNTAX ################################################\n\n            # Plain text should go through the template parser untouched\n            'basic-syntax01': (\"something cool\", {}, \"something cool\"),\n\n            # Variables should be replaced with their value in the current\n            # context\n            'basic-syntax02': (\"{{ headline }}\", {'headline':'Success'}, \"Success\"),\n\n            # More than one replacement variable is allowed in a template\n            'basic-syntax03': (\"{{ first }} --- {{ second }}\", {\"first\" : 1, \"second\" : 2}, \"1 --- 2\"),\n\n            # Fail silently when a variable is not found in the current context\n            'basic-syntax04': (\"as{{ missing }}df\", {}, (\"asdf\",\"asINVALIDdf\")),\n\n            # A variable may not contain more than one word\n            'basic-syntax06': (\"{{ multi word variable }}\", {}, template.TemplateSyntaxError),\n\n            # Raise TemplateSyntaxError for empty variable tags\n            'basic-syntax07': (\"{{ }}\",        {}, template.TemplateSyntaxError),\n            'basic-syntax08': (\"{{        }}\", {}, template.TemplateSyntaxError),\n\n            # Attribute syntax allows a template to call an object's attribute\n            'basic-syntax09': (\"{{ var.method }}\", {\"var\": SomeClass()}, \"SomeClass.method\"),\n\n            # Multiple levels of attribute access are allowed\n            'basic-syntax10': (\"{{ var.otherclass.method }}\", {\"var\": SomeClass()}, \"OtherClass.method\"),\n\n            # Fail silently when a variable's attribute isn't found\n            'basic-syntax11': (\"{{ var.blech }}\", {\"var\": SomeClass()}, (\"\",\"INVALID\")),\n\n            # Raise TemplateSyntaxError when trying to access a variable beginning with an underscore\n            'basic-syntax12': (\"{{ var.__dict__ }}\", {\"var\": SomeClass()}, template.TemplateSyntaxError),\n\n            # Raise TemplateSyntaxError when trying to access a variable containing an illegal character\n            'basic-syntax13': (\"{{ va>r }}\", {}, template.TemplateSyntaxError),\n            'basic-syntax14': (\"{{ (var.r) }}\", {}, template.TemplateSyntaxError),\n            'basic-syntax15': (\"{{ sp%am }}\", {}, template.TemplateSyntaxError),\n            'basic-syntax16': (\"{{ eggs! }}\", {}, template.TemplateSyntaxError),\n            'basic-syntax17': (\"{{ moo? }}\", {}, template.TemplateSyntaxError),\n\n            # Attribute syntax allows a template to call a dictionary key's value\n            'basic-syntax18': (\"{{ foo.bar }}\", {\"foo\" : {\"bar\" : \"baz\"}}, \"baz\"),\n\n            # Fail silently when a variable's dictionary key isn't found\n            'basic-syntax19': (\"{{ foo.spam }}\", {\"foo\" : {\"bar\" : \"baz\"}}, (\"\",\"INVALID\")),\n\n            # Fail silently when accessing a non-simple method\n            'basic-syntax20': (\"{{ var.method2 }}\", {\"var\": SomeClass()}, (\"\",\"INVALID\")),\n\n            # Don't get confused when parsing something that is almost, but not\n            # quite, a template tag.\n            'basic-syntax21': (\"a {{ moo %} b\", {}, \"a {{ moo %} b\"),\n            'basic-syntax22': (\"{{ moo #}\", {}, \"{{ moo #}\"),\n\n            # Will try to treat \"moo #} {{ cow\" as the variable. Not ideal, but\n            # costly to work around, so this triggers an error.\n            'basic-syntax23': (\"{{ moo #} {{ cow }}\", {\"cow\": \"cow\"}, template.TemplateSyntaxError),\n\n            # Embedded newlines make it not-a-tag.\n            'basic-syntax24': (\"{{ moo\\n }}\", {}, \"{{ moo\\n }}\"),\n\n            # Literal strings are permitted inside variables, mostly for i18n\n            # purposes.\n            'basic-syntax25': ('{{ \"fred\" }}', {}, \"fred\"),\n            'basic-syntax26': (r'{{ \"\\\"fred\\\"\" }}', {}, \"\\\"fred\\\"\"),\n            'basic-syntax27': (r'{{ _(\"\\\"fred\\\"\") }}', {}, \"\\\"fred\\\"\"),\n\n            # regression test for ticket #12554\n            # make sure a silent_variable_failure Exception is supressed\n            # on dictionary and attribute lookup\n            'basic-syntax28': (\"{{ a.b }}\", {'a': SilentGetItemClass()}, ('', 'INVALID')),\n            'basic-syntax29': (\"{{ a.b }}\", {'a': SilentAttrClass()}, ('', 'INVALID')),\n\n            # Something that starts like a number but has an extra lookup works as a lookup.\n            'basic-syntax30': (\"{{ 1.2.3 }}\", {\"1\": {\"2\": {\"3\": \"d\"}}}, \"d\"),\n            'basic-syntax31': (\"{{ 1.2.3 }}\", {\"1\": {\"2\": (\"a\", \"b\", \"c\", \"d\")}}, \"d\"),\n            'basic-syntax32': (\"{{ 1.2.3 }}\", {\"1\": ((\"x\", \"x\", \"x\", \"x\"), (\"y\", \"y\", \"y\", \"y\"), (\"a\", \"b\", \"c\", \"d\"))}, \"d\"),\n            'basic-syntax33': (\"{{ 1.2.3 }}\", {\"1\": (\"xxxx\", \"yyyy\", \"abcd\")}, \"d\"),\n            'basic-syntax34': (\"{{ 1.2.3 }}\", {\"1\": ({\"x\": \"x\"}, {\"y\": \"y\"}, {\"z\": \"z\", \"3\": \"d\"})}, \"d\"),\n\n            # Numbers are numbers even if their digits are in the context.\n            'basic-syntax35': (\"{{ 1 }}\", {\"1\": \"abc\"}, \"1\"),\n            'basic-syntax36': (\"{{ 1.2 }}\", {\"1\": \"abc\"}, \"1.2\"),\n\n            # Call methods in the top level of the context\n            'basic-syntax37': ('{{ callable }}', {\"callable\": lambda: \"foo bar\"}, \"foo bar\"),\n\n            # Call methods returned from dictionary lookups\n            'basic-syntax38': ('{{ var.callable }}', {\"var\": {\"callable\": lambda: \"foo bar\"}}, \"foo bar\"),\n\n            'builtins01': ('{{ True }}', {}, \"True\"),\n            'builtins02': ('{{ False }}', {}, \"False\"),\n            'builtins03': ('{{ None }}', {}, \"None\"),\n\n            # List-index syntax allows a template to access a certain item of a subscriptable object.\n            'list-index01': (\"{{ var.1 }}\", {\"var\": [\"first item\", \"second item\"]}, \"second item\"),\n\n            # Fail silently when the list index is out of range.\n            'list-index02': (\"{{ var.5 }}\", {\"var\": [\"first item\", \"second item\"]}, (\"\", \"INVALID\")),\n\n            # Fail silently when the variable is not a subscriptable object.\n            'list-index03': (\"{{ var.1 }}\", {\"var\": None}, (\"\", \"INVALID\")),\n\n            # Fail silently when variable is a dict without the specified key.\n            'list-index04': (\"{{ var.1 }}\", {\"var\": {}}, (\"\", \"INVALID\")),\n\n            # Dictionary lookup wins out when dict's key is a string.\n            'list-index05': (\"{{ var.1 }}\", {\"var\": {'1': \"hello\"}}, \"hello\"),\n\n            # But list-index lookup wins out when dict's key is an int, which\n            # behind the scenes is really a dictionary lookup (for a dict)\n            # after converting the key to an int.\n            'list-index06': (\"{{ var.1 }}\", {\"var\": {1: \"hello\"}}, \"hello\"),\n\n            # Dictionary lookup wins out when there is a string and int version of the key.\n            'list-index07': (\"{{ var.1 }}\", {\"var\": {'1': \"hello\", 1: \"world\"}}, \"hello\"),\n\n            # Basic filter usage\n            'filter-syntax01': (\"{{ var|upper }}\", {\"var\": \"Django is the greatest!\"}, \"DJANGO IS THE GREATEST!\"),\n\n            # Chained filters\n            'filter-syntax02': (\"{{ var|upper|lower }}\", {\"var\": \"Django is the greatest!\"}, \"django is the greatest!\"),\n\n            # Allow spaces before the filter pipe\n            'filter-syntax03': (\"{{ var |upper }}\", {\"var\": \"Django is the greatest!\"}, \"DJANGO IS THE GREATEST!\"),\n\n            # Allow spaces after the filter pipe\n            'filter-syntax04': (\"{{ var| upper }}\", {\"var\": \"Django is the greatest!\"}, \"DJANGO IS THE GREATEST!\"),\n\n            # Raise TemplateSyntaxError for a nonexistent filter\n            'filter-syntax05': (\"{{ var|does_not_exist }}\", {}, template.TemplateSyntaxError),\n\n            # Raise TemplateSyntaxError when trying to access a filter containing an illegal character\n            'filter-syntax06': (\"{{ var|fil(ter) }}\", {}, template.TemplateSyntaxError),\n\n            # Raise TemplateSyntaxError for invalid block tags\n            'filter-syntax07': (\"{% nothing_to_see_here %}\", {}, template.TemplateSyntaxError),\n\n            # Raise TemplateSyntaxError for empty block tags\n            'filter-syntax08': (\"{% %}\", {}, template.TemplateSyntaxError),\n\n            # Chained filters, with an argument to the first one\n            'filter-syntax09': ('{{ var|removetags:\"b i\"|upper|lower }}', {\"var\": \"<b><i>Yes</i></b>\"}, \"yes\"),\n\n            # Literal string as argument is always \"safe\" from auto-escaping..\n            'filter-syntax10': (r'{{ var|default_if_none:\" endquote\\\" hah\" }}',\n                    {\"var\": None}, ' endquote\" hah'),\n\n            # Variable as argument\n            'filter-syntax11': (r'{{ var|default_if_none:var2 }}', {\"var\": None, \"var2\": \"happy\"}, 'happy'),\n\n            # Default argument testing\n            'filter-syntax12': (r'{{ var|yesno:\"yup,nup,mup\" }} {{ var|yesno }}', {\"var\": True}, 'yup yes'),\n\n            # Fail silently for methods that raise an exception with a\n            # \"silent_variable_failure\" attribute\n            'filter-syntax13': (r'1{{ var.method3 }}2', {\"var\": SomeClass()}, (\"12\", \"1INVALID2\")),\n\n            # In methods that raise an exception without a\n            # \"silent_variable_attribute\" set to True, the exception propagates\n            'filter-syntax14': (r'1{{ var.method4 }}2', {\"var\": SomeClass()}, (SomeOtherException, SomeOtherException)),\n\n            # Escaped backslash in argument\n            'filter-syntax15': (r'{{ var|default_if_none:\"foo\\bar\" }}', {\"var\": None}, r'foo\\bar'),\n\n            # Escaped backslash using known escape char\n            'filter-syntax16': (r'{{ var|default_if_none:\"foo\\now\" }}', {\"var\": None}, r'foo\\now'),\n\n            # Empty strings can be passed as arguments to filters\n            'filter-syntax17': (r'{{ var|join:\"\" }}', {'var': ['a', 'b', 'c']}, 'abc'),\n\n            # Make sure that any unicode strings are converted to bytestrings\n            # in the final output.\n            'filter-syntax18': (r'{{ var }}', {'var': UTF8Class()}, '\\u0160\\u0110\\u0106\\u017d\\u0107\\u017e\\u0161\\u0111'),\n\n            # Numbers as filter arguments should work\n            'filter-syntax19': ('{{ var|truncatewords:1 }}', {\"var\": \"hello world\"}, \"hello ...\"),\n\n            #filters should accept empty string constants\n            'filter-syntax20': ('{{ \"\"|default_if_none:\"was none\" }}', {}, \"\"),\n\n            # Fail silently for non-callable attribute and dict lookups which\n            # raise an exception with a \"silent_variable_failure\" attribute\n            'filter-syntax21': (r'1{{ var.silent_fail_key }}2', {\"var\": SomeClass()}, (\"12\", \"1INVALID2\")),\n            'filter-syntax22': (r'1{{ var.silent_fail_attribute }}2', {\"var\": SomeClass()}, (\"12\", \"1INVALID2\")),\n\n            # In attribute and dict lookups that raise an unexpected exception\n            # without a \"silent_variable_attribute\" set to True, the exception\n            # propagates\n            'filter-syntax23': (r'1{{ var.noisy_fail_key }}2', {\"var\": SomeClass()}, (SomeOtherException, SomeOtherException)),\n            'filter-syntax24': (r'1{{ var.noisy_fail_attribute }}2', {\"var\": SomeClass()}, (SomeOtherException, SomeOtherException)),\n\n            ### COMMENT SYNTAX ########################################################\n            'comment-syntax01': (\"{# this is hidden #}hello\", {}, \"hello\"),\n            'comment-syntax02': (\"{# this is hidden #}hello{# foo #}\", {}, \"hello\"),\n\n            # Comments can contain invalid stuff.\n            'comment-syntax03': (\"foo{#  {% if %}  #}\", {}, \"foo\"),\n            'comment-syntax04': (\"foo{#  {% endblock %}  #}\", {}, \"foo\"),\n            'comment-syntax05': (\"foo{#  {% somerandomtag %}  #}\", {}, \"foo\"),\n            'comment-syntax06': (\"foo{# {% #}\", {}, \"foo\"),\n            'comment-syntax07': (\"foo{# %} #}\", {}, \"foo\"),\n            'comment-syntax08': (\"foo{# %} #}bar\", {}, \"foobar\"),\n            'comment-syntax09': (\"foo{# {{ #}\", {}, \"foo\"),\n            'comment-syntax10': (\"foo{# }} #}\", {}, \"foo\"),\n            'comment-syntax11': (\"foo{# { #}\", {}, \"foo\"),\n            'comment-syntax12': (\"foo{# } #}\", {}, \"foo\"),\n\n            ### COMMENT TAG ###########################################################\n            'comment-tag01': (\"{% comment %}this is hidden{% endcomment %}hello\", {}, \"hello\"),\n            'comment-tag02': (\"{% comment %}this is hidden{% endcomment %}hello{% comment %}foo{% endcomment %}\", {}, \"hello\"),\n\n            # Comment tag can contain invalid stuff.\n            'comment-tag03': (\"foo{% comment %} {% if %} {% endcomment %}\", {}, \"foo\"),\n            'comment-tag04': (\"foo{% comment %} {% endblock %} {% endcomment %}\", {}, \"foo\"),\n            'comment-tag05': (\"foo{% comment %} {% somerandomtag %} {% endcomment %}\", {}, \"foo\"),\n\n            ### CYCLE TAG #############################################################\n            'cycle01': ('{% cycle a %}', {}, template.TemplateSyntaxError),\n            'cycle02': ('{% cycle a,b,c as abc %}{% cycle abc %}', {}, 'ab'),\n            'cycle03': ('{% cycle a,b,c as abc %}{% cycle abc %}{% cycle abc %}', {}, 'abc'),\n            'cycle04': ('{% cycle a,b,c as abc %}{% cycle abc %}{% cycle abc %}{% cycle abc %}', {}, 'abca'),\n            'cycle05': ('{% cycle %}', {}, template.TemplateSyntaxError),\n            'cycle06': ('{% cycle a %}', {}, template.TemplateSyntaxError),\n            'cycle07': ('{% cycle a,b,c as foo %}{% cycle bar %}', {}, template.TemplateSyntaxError),\n            'cycle08': ('{% cycle a,b,c as foo %}{% cycle foo %}{{ foo }}{{ foo }}{% cycle foo %}{{ foo }}', {}, 'abbbcc'),\n            'cycle09': (\"{% for i in test %}{% cycle a,b %}{{ i }},{% endfor %}\", {'test': range(5)}, 'a0,b1,a2,b3,a4,'),\n            'cycle10': (\"{% cycle 'a' 'b' 'c' as abc %}{% cycle abc %}\", {}, 'ab'),\n            'cycle11': (\"{% cycle 'a' 'b' 'c' as abc %}{% cycle abc %}{% cycle abc %}\", {}, 'abc'),\n            'cycle12': (\"{% cycle 'a' 'b' 'c' as abc %}{% cycle abc %}{% cycle abc %}{% cycle abc %}\", {}, 'abca'),\n            'cycle13': (\"{% for i in test %}{% cycle 'a' 'b' %}{{ i }},{% endfor %}\", {'test': range(5)}, 'a0,b1,a2,b3,a4,'),\n            'cycle14': (\"{% cycle one two as foo %}{% cycle foo %}\", {'one': '1','two': '2'}, '12'),\n            'cycle15': (\"{% for i in test %}{% cycle aye bee %}{{ i }},{% endfor %}\", {'test': range(5), 'aye': 'a', 'bee': 'b'}, 'a0,b1,a2,b3,a4,'),\n            'cycle16': (\"{% cycle one|lower two as foo %}{% cycle foo %}\", {'one': 'A','two': '2'}, 'a2'),\n            'cycle17': (\"{% cycle 'a' 'b' 'c' as abc silent %}{% cycle abc %}{% cycle abc %}{% cycle abc %}{% cycle abc %}\", {}, \"\"),\n            'cycle18': (\"{% cycle 'a' 'b' 'c' as foo invalid_flag %}\", {}, template.TemplateSyntaxError),\n            'cycle19': (\"{% cycle 'a' 'b' as silent %}{% cycle silent %}\", {}, \"ab\"),\n            'cycle20': (\"{% cycle one two as foo %} &amp; {% cycle foo %}\", {'one' : 'A & B', 'two' : 'C & D'}, \"A & B &amp; C & D\"),\n            'cycle21': (\"{% filter force_escape %}{% cycle one two as foo %} & {% cycle foo %}{% endfilter %}\", {'one' : 'A & B', 'two' : 'C & D'}, \"A &amp; B &amp; C &amp; D\"),\n            'cycle22': (\"{% for x in values %}{% cycle 'a' 'b' 'c' as abc silent %}{{ x }}{% endfor %}\", {'values': [1,2,3,4]}, \"1234\"),\n            'cycle23': (\"{% for x in values %}{% cycle 'a' 'b' 'c' as abc silent %}{{ abc }}{{ x }}{% endfor %}\", {'values': [1,2,3,4]}, \"a1b2c3a4\"),\n            'included-cycle': ('{{ abc }}', {'abc': 'xxx'}, 'xxx'),\n            'cycle24': (\"{% for x in values %}{% cycle 'a' 'b' 'c' as abc silent %}{% include 'included-cycle' %}{% endfor %}\", {'values': [1,2,3,4]}, \"abca\"),\n\n            ### EXCEPTIONS ############################################################\n\n            # Raise exception for invalid template name\n            'exception01': (\"{% extends 'nonexistent' %}\", {}, (template.TemplateDoesNotExist, template.TemplateDoesNotExist)),\n\n            # Raise exception for invalid template name (in variable)\n            'exception02': (\"{% extends nonexistent %}\", {}, (template.TemplateSyntaxError, template.TemplateDoesNotExist)),\n\n            # Raise exception for extra {% extends %} tags\n            'exception03': (\"{% extends 'inheritance01' %}{% block first %}2{% endblock %}{% extends 'inheritance16' %}\", {}, template.TemplateSyntaxError),\n\n            # Raise exception for custom tags used in child with {% load %} tag in parent, not in child\n            'exception04': (\"{% extends 'inheritance17' %}{% block first %}{% echo 400 %}5678{% endblock %}\", {}, template.TemplateSyntaxError),\n\n            ### FILTER TAG ############################################################\n            'filter01': ('{% filter upper %}{% endfilter %}', {}, ''),\n            'filter02': ('{% filter upper %}django{% endfilter %}', {}, 'DJANGO'),\n            'filter03': ('{% filter upper|lower %}django{% endfilter %}', {}, 'django'),\n            'filter04': ('{% filter cut:remove %}djangospam{% endfilter %}', {'remove': 'spam'}, 'django'),\n\n            ### FIRSTOF TAG ###########################################################\n            'firstof01': ('{% firstof a b c %}', {'a':0,'b':0,'c':0}, ''),\n            'firstof02': ('{% firstof a b c %}', {'a':1,'b':0,'c':0}, '1'),\n            'firstof03': ('{% firstof a b c %}', {'a':0,'b':2,'c':0}, '2'),\n            'firstof04': ('{% firstof a b c %}', {'a':0,'b':0,'c':3}, '3'),\n            'firstof05': ('{% firstof a b c %}', {'a':1,'b':2,'c':3}, '1'),\n            'firstof06': ('{% firstof a b c %}', {'b':0,'c':3}, '3'),\n            'firstof07': ('{% firstof a b \"c\" %}', {'a':0}, 'c'),\n            'firstof08': ('{% firstof a b \"c and d\" %}', {'a':0,'b':0}, 'c and d'),\n            'firstof09': ('{% firstof %}', {}, template.TemplateSyntaxError),\n            'firstof10': ('{% firstof a %}', {'a': '<'}, '<'), # Variables are NOT auto-escaped.\n\n            ### FOR TAG ###############################################################\n            'for-tag01': (\"{% for val in values %}{{ val }}{% endfor %}\", {\"values\": [1, 2, 3]}, \"123\"),\n            'for-tag02': (\"{% for val in values reversed %}{{ val }}{% endfor %}\", {\"values\": [1, 2, 3]}, \"321\"),\n            'for-tag-vars01': (\"{% for val in values %}{{ forloop.counter }}{% endfor %}\", {\"values\": [6, 6, 6]}, \"123\"),\n            'for-tag-vars02': (\"{% for val in values %}{{ forloop.counter0 }}{% endfor %}\", {\"values\": [6, 6, 6]}, \"012\"),\n            'for-tag-vars03': (\"{% for val in values %}{{ forloop.revcounter }}{% endfor %}\", {\"values\": [6, 6, 6]}, \"321\"),\n            'for-tag-vars04': (\"{% for val in values %}{{ forloop.revcounter0 }}{% endfor %}\", {\"values\": [6, 6, 6]}, \"210\"),\n            'for-tag-vars05': (\"{% for val in values %}{% if forloop.first %}f{% else %}x{% endif %}{% endfor %}\", {\"values\": [6, 6, 6]}, \"fxx\"),\n            'for-tag-vars06': (\"{% for val in values %}{% if forloop.last %}l{% else %}x{% endif %}{% endfor %}\", {\"values\": [6, 6, 6]}, \"xxl\"),\n            'for-tag-unpack01': (\"{% for key,value in items %}{{ key }}:{{ value }}/{% endfor %}\", {\"items\": (('one', 1), ('two', 2))}, \"one:1/two:2/\"),\n            'for-tag-unpack03': (\"{% for key, value in items %}{{ key }}:{{ value }}/{% endfor %}\", {\"items\": (('one', 1), ('two', 2))}, \"one:1/two:2/\"),\n            'for-tag-unpack04': (\"{% for key , value in items %}{{ key }}:{{ value }}/{% endfor %}\", {\"items\": (('one', 1), ('two', 2))}, \"one:1/two:2/\"),\n            'for-tag-unpack05': (\"{% for key ,value in items %}{{ key }}:{{ value }}/{% endfor %}\", {\"items\": (('one', 1), ('two', 2))}, \"one:1/two:2/\"),\n            'for-tag-unpack06': (\"{% for key value in items %}{{ key }}:{{ value }}/{% endfor %}\", {\"items\": (('one', 1), ('two', 2))}, template.TemplateSyntaxError),\n            'for-tag-unpack07': (\"{% for key,,value in items %}{{ key }}:{{ value }}/{% endfor %}\", {\"items\": (('one', 1), ('two', 2))}, template.TemplateSyntaxError),\n            'for-tag-unpack08': (\"{% for key,value, in items %}{{ key }}:{{ value }}/{% endfor %}\", {\"items\": (('one', 1), ('two', 2))}, template.TemplateSyntaxError),\n            # Ensure that a single loopvar doesn't truncate the list in val.\n            'for-tag-unpack09': (\"{% for val in items %}{{ val.0 }}:{{ val.1 }}/{% endfor %}\", {\"items\": (('one', 1), ('two', 2))}, \"one:1/two:2/\"),\n            # Otherwise, silently truncate if the length of loopvars differs to the length of each set of items.\n            'for-tag-unpack10': (\"{% for x,y in items %}{{ x }}:{{ y }}/{% endfor %}\", {\"items\": (('one', 1, 'carrot'), ('two', 2, 'orange'))}, \"one:1/two:2/\"),\n            'for-tag-unpack11': (\"{% for x,y,z in items %}{{ x }}:{{ y }},{{ z }}/{% endfor %}\", {\"items\": (('one', 1), ('two', 2))}, (\"one:1,/two:2,/\", \"one:1,INVALID/two:2,INVALID/\")),\n            'for-tag-unpack12': (\"{% for x,y,z in items %}{{ x }}:{{ y }},{{ z }}/{% endfor %}\", {\"items\": (('one', 1, 'carrot'), ('two', 2))}, (\"one:1,carrot/two:2,/\", \"one:1,carrot/two:2,INVALID/\")),\n            'for-tag-unpack13': (\"{% for x,y,z in items %}{{ x }}:{{ y }},{{ z }}/{% endfor %}\", {\"items\": (('one', 1, 'carrot'), ('two', 2, 'cheese'))}, (\"one:1,carrot/two:2,cheese/\", \"one:1,carrot/two:2,cheese/\")),\n            'for-tag-unpack14': (\"{% for x,y in items %}{{ x }}:{{ y }}/{% endfor %}\", {\"items\": (1, 2)}, (\":/:/\", \"INVALID:INVALID/INVALID:INVALID/\")),\n            'for-tag-empty01': (\"{% for val in values %}{{ val }}{% empty %}empty text{% endfor %}\", {\"values\": [1, 2, 3]}, \"123\"),\n            'for-tag-empty02': (\"{% for val in values %}{{ val }}{% empty %}values array empty{% endfor %}\", {\"values\": []}, \"values array empty\"),\n            'for-tag-empty03': (\"{% for val in values %}{{ val }}{% empty %}values array not found{% endfor %}\", {}, \"values array not found\"),\n\n            ### IF TAG ################################################################\n            'if-tag01': (\"{% if foo %}yes{% else %}no{% endif %}\", {\"foo\": True}, \"yes\"),\n            'if-tag02': (\"{% if foo %}yes{% else %}no{% endif %}\", {\"foo\": False}, \"no\"),\n            'if-tag03': (\"{% if foo %}yes{% else %}no{% endif %}\", {}, \"no\"),\n\n            'if-tag04': (\"{% if foo %}foo{% elif bar %}bar{% endif %}\", {'foo': True}, \"foo\"),\n            'if-tag05': (\"{% if foo %}foo{% elif bar %}bar{% endif %}\", {'bar': True}, \"bar\"),\n            'if-tag06': (\"{% if foo %}foo{% elif bar %}bar{% endif %}\", {}, \"\"),\n            'if-tag07': (\"{% if foo %}foo{% elif bar %}bar{% else %}nothing{% endif %}\", {'foo': True}, \"foo\"),\n            'if-tag08': (\"{% if foo %}foo{% elif bar %}bar{% else %}nothing{% endif %}\", {'bar': True}, \"bar\"),\n            'if-tag09': (\"{% if foo %}foo{% elif bar %}bar{% else %}nothing{% endif %}\", {}, \"nothing\"),\n            'if-tag10': (\"{% if foo %}foo{% elif bar %}bar{% elif baz %}baz{% else %}nothing{% endif %}\", {'foo': True}, \"foo\"),\n            'if-tag11': (\"{% if foo %}foo{% elif bar %}bar{% elif baz %}baz{% else %}nothing{% endif %}\", {'bar': True}, \"bar\"),\n            'if-tag12': (\"{% if foo %}foo{% elif bar %}bar{% elif baz %}baz{% else %}nothing{% endif %}\", {'baz': True}, \"baz\"),\n            'if-tag13': (\"{% if foo %}foo{% elif bar %}bar{% elif baz %}baz{% else %}nothing{% endif %}\", {}, \"nothing\"),\n\n            # Filters\n            'if-tag-filter01': (\"{% if foo|length == 5 %}yes{% else %}no{% endif %}\", {'foo': 'abcde'}, \"yes\"),\n            'if-tag-filter02': (\"{% if foo|upper == 'ABC' %}yes{% else %}no{% endif %}\", {}, \"no\"),\n\n            # Equality\n            'if-tag-eq01': (\"{% if foo == bar %}yes{% else %}no{% endif %}\", {}, \"yes\"),\n            'if-tag-eq02': (\"{% if foo == bar %}yes{% else %}no{% endif %}\", {'foo': 1}, \"no\"),\n            'if-tag-eq03': (\"{% if foo == bar %}yes{% else %}no{% endif %}\", {'foo': 1, 'bar': 1}, \"yes\"),\n            'if-tag-eq04': (\"{% if foo == bar %}yes{% else %}no{% endif %}\", {'foo': 1, 'bar': 2}, \"no\"),\n            'if-tag-eq05': (\"{% if foo == '' %}yes{% else %}no{% endif %}\", {}, \"no\"),\n\n            # Comparison\n            'if-tag-gt-01': (\"{% if 2 > 1 %}yes{% else %}no{% endif %}\", {}, \"yes\"),\n            'if-tag-gt-02': (\"{% if 1 > 1 %}yes{% else %}no{% endif %}\", {}, \"no\"),\n            'if-tag-gte-01': (\"{% if 1 >= 1 %}yes{% else %}no{% endif %}\", {}, \"yes\"),\n            'if-tag-gte-02': (\"{% if 1 >= 2 %}yes{% else %}no{% endif %}\", {}, \"no\"),\n            'if-tag-lt-01': (\"{% if 1 < 2 %}yes{% else %}no{% endif %}\", {}, \"yes\"),\n            'if-tag-lt-02': (\"{% if 1 < 1 %}yes{% else %}no{% endif %}\", {}, \"no\"),\n            'if-tag-lte-01': (\"{% if 1 <= 1 %}yes{% else %}no{% endif %}\", {}, \"yes\"),\n            'if-tag-lte-02': (\"{% if 2 <= 1 %}yes{% else %}no{% endif %}\", {}, \"no\"),\n\n            # Contains\n            'if-tag-in-01': (\"{% if 1 in x %}yes{% else %}no{% endif %}\", {'x':[1]}, \"yes\"),\n            'if-tag-in-02': (\"{% if 2 in x %}yes{% else %}no{% endif %}\", {'x':[1]}, \"no\"),\n            'if-tag-not-in-01': (\"{% if 1 not in x %}yes{% else %}no{% endif %}\", {'x':[1]}, \"no\"),\n            'if-tag-not-in-02': (\"{% if 2 not in x %}yes{% else %}no{% endif %}\", {'x':[1]}, \"yes\"),\n\n            # AND\n            'if-tag-and01': (\"{% if foo and bar %}yes{% else %}no{% endif %}\", {'foo': True, 'bar': True}, 'yes'),\n            'if-tag-and02': (\"{% if foo and bar %}yes{% else %}no{% endif %}\", {'foo': True, 'bar': False}, 'no'),\n            'if-tag-and03': (\"{% if foo and bar %}yes{% else %}no{% endif %}\", {'foo': False, 'bar': True}, 'no'),\n            'if-tag-and04': (\"{% if foo and bar %}yes{% else %}no{% endif %}\", {'foo': False, 'bar': False}, 'no'),\n            'if-tag-and05': (\"{% if foo and bar %}yes{% else %}no{% endif %}\", {'foo': False}, 'no'),\n            'if-tag-and06': (\"{% if foo and bar %}yes{% else %}no{% endif %}\", {'bar': False}, 'no'),\n            'if-tag-and07': (\"{% if foo and bar %}yes{% else %}no{% endif %}\", {'foo': True}, 'no'),\n            'if-tag-and08': (\"{% if foo and bar %}yes{% else %}no{% endif %}\", {'bar': True}, 'no'),\n\n            # OR\n            'if-tag-or01': (\"{% if foo or bar %}yes{% else %}no{% endif %}\", {'foo': True, 'bar': True}, 'yes'),\n            'if-tag-or02': (\"{% if foo or bar %}yes{% else %}no{% endif %}\", {'foo': True, 'bar': False}, 'yes'),\n            'if-tag-or03': (\"{% if foo or bar %}yes{% else %}no{% endif %}\", {'foo': False, 'bar': True}, 'yes'),\n            'if-tag-or04': (\"{% if foo or bar %}yes{% else %}no{% endif %}\", {'foo': False, 'bar': False}, 'no'),\n            'if-tag-or05': (\"{% if foo or bar %}yes{% else %}no{% endif %}\", {'foo': False}, 'no'),\n            'if-tag-or06': (\"{% if foo or bar %}yes{% else %}no{% endif %}\", {'bar': False}, 'no'),\n            'if-tag-or07': (\"{% if foo or bar %}yes{% else %}no{% endif %}\", {'foo': True}, 'yes'),\n            'if-tag-or08': (\"{% if foo or bar %}yes{% else %}no{% endif %}\", {'bar': True}, 'yes'),\n\n            # multiple ORs\n            'if-tag-or09': (\"{% if foo or bar or baz %}yes{% else %}no{% endif %}\", {'baz': True}, 'yes'),\n\n            # NOT\n            'if-tag-not01': (\"{% if not foo %}no{% else %}yes{% endif %}\", {'foo': True}, 'yes'),\n            'if-tag-not02': (\"{% if not not foo %}no{% else %}yes{% endif %}\", {'foo': True}, 'no'),\n            # not03 to not05 removed, now TemplateSyntaxErrors\n\n            'if-tag-not06': (\"{% if foo and not bar %}yes{% else %}no{% endif %}\", {}, 'no'),\n            'if-tag-not07': (\"{% if foo and not bar %}yes{% else %}no{% endif %}\", {'foo': True, 'bar': True}, 'no'),\n            'if-tag-not08': (\"{% if foo and not bar %}yes{% else %}no{% endif %}\", {'foo': True, 'bar': False}, 'yes'),\n            'if-tag-not09': (\"{% if foo and not bar %}yes{% else %}no{% endif %}\", {'foo': False, 'bar': True}, 'no'),\n            'if-tag-not10': (\"{% if foo and not bar %}yes{% else %}no{% endif %}\", {'foo': False, 'bar': False}, 'no'),\n\n            'if-tag-not11': (\"{% if not foo and bar %}yes{% else %}no{% endif %}\", {}, 'no'),\n            'if-tag-not12': (\"{% if not foo and bar %}yes{% else %}no{% endif %}\", {'foo': True, 'bar': True}, 'no'),\n            'if-tag-not13': (\"{% if not foo and bar %}yes{% else %}no{% endif %}\", {'foo': True, 'bar': False}, 'no'),\n            'if-tag-not14': (\"{% if not foo and bar %}yes{% else %}no{% endif %}\", {'foo': False, 'bar': True}, 'yes'),\n            'if-tag-not15': (\"{% if not foo and bar %}yes{% else %}no{% endif %}\", {'foo': False, 'bar': False}, 'no'),\n\n            'if-tag-not16': (\"{% if foo or not bar %}yes{% else %}no{% endif %}\", {}, 'yes'),\n            'if-tag-not17': (\"{% if foo or not bar %}yes{% else %}no{% endif %}\", {'foo': True, 'bar': True}, 'yes'),\n            'if-tag-not18': (\"{% if foo or not bar %}yes{% else %}no{% endif %}\", {'foo': True, 'bar': False}, 'yes'),\n            'if-tag-not19': (\"{% if foo or not bar %}yes{% else %}no{% endif %}\", {'foo': False, 'bar': True}, 'no'),\n            'if-tag-not20': (\"{% if foo or not bar %}yes{% else %}no{% endif %}\", {'foo': False, 'bar': False}, 'yes'),\n\n            'if-tag-not21': (\"{% if not foo or bar %}yes{% else %}no{% endif %}\", {}, 'yes'),\n            'if-tag-not22': (\"{% if not foo or bar %}yes{% else %}no{% endif %}\", {'foo': True, 'bar': True}, 'yes'),\n            'if-tag-not23': (\"{% if not foo or bar %}yes{% else %}no{% endif %}\", {'foo': True, 'bar': False}, 'no'),\n            'if-tag-not24': (\"{% if not foo or bar %}yes{% else %}no{% endif %}\", {'foo': False, 'bar': True}, 'yes'),\n            'if-tag-not25': (\"{% if not foo or bar %}yes{% else %}no{% endif %}\", {'foo': False, 'bar': False}, 'yes'),\n\n            'if-tag-not26': (\"{% if not foo and not bar %}yes{% else %}no{% endif %}\", {}, 'yes'),\n            'if-tag-not27': (\"{% if not foo and not bar %}yes{% else %}no{% endif %}\", {'foo': True, 'bar': True}, 'no'),\n            'if-tag-not28': (\"{% if not foo and not bar %}yes{% else %}no{% endif %}\", {'foo': True, 'bar': False}, 'no'),\n            'if-tag-not29': (\"{% if not foo and not bar %}yes{% else %}no{% endif %}\", {'foo': False, 'bar': True}, 'no'),\n            'if-tag-not30': (\"{% if not foo and not bar %}yes{% else %}no{% endif %}\", {'foo': False, 'bar': False}, 'yes'),\n\n            'if-tag-not31': (\"{% if not foo or not bar %}yes{% else %}no{% endif %}\", {}, 'yes'),\n            'if-tag-not32': (\"{% if not foo or not bar %}yes{% else %}no{% endif %}\", {'foo': True, 'bar': True}, 'no'),\n            'if-tag-not33': (\"{% if not foo or not bar %}yes{% else %}no{% endif %}\", {'foo': True, 'bar': False}, 'yes'),\n            'if-tag-not34': (\"{% if not foo or not bar %}yes{% else %}no{% endif %}\", {'foo': False, 'bar': True}, 'yes'),\n            'if-tag-not35': (\"{% if not foo or not bar %}yes{% else %}no{% endif %}\", {'foo': False, 'bar': False}, 'yes'),\n\n            # Various syntax errors\n            'if-tag-error01': (\"{% if %}yes{% endif %}\", {}, template.TemplateSyntaxError),\n            'if-tag-error02': (\"{% if foo and %}yes{% else %}no{% endif %}\", {'foo': True}, template.TemplateSyntaxError),\n            'if-tag-error03': (\"{% if foo or %}yes{% else %}no{% endif %}\", {'foo': True}, template.TemplateSyntaxError),\n            'if-tag-error04': (\"{% if not foo and %}yes{% else %}no{% endif %}\", {'foo': True}, template.TemplateSyntaxError),\n            'if-tag-error05': (\"{% if not foo or %}yes{% else %}no{% endif %}\", {'foo': True}, template.TemplateSyntaxError),\n            'if-tag-error06': (\"{% if abc def %}yes{% endif %}\", {}, template.TemplateSyntaxError),\n            'if-tag-error07': (\"{% if not %}yes{% endif %}\", {}, template.TemplateSyntaxError),\n            'if-tag-error08': (\"{% if and %}yes{% endif %}\", {}, template.TemplateSyntaxError),\n            'if-tag-error09': (\"{% if or %}yes{% endif %}\", {}, template.TemplateSyntaxError),\n            'if-tag-error10': (\"{% if == %}yes{% endif %}\", {}, template.TemplateSyntaxError),\n            'if-tag-error11': (\"{% if 1 == %}yes{% endif %}\", {}, template.TemplateSyntaxError),\n            'if-tag-error12': (\"{% if a not b %}yes{% endif %}\", {}, template.TemplateSyntaxError),\n\n            # If evaluations are shortcircuited where possible\n            # If is_bad is invoked, it will raise a ShouldNotExecuteException\n            'if-tag-shortcircuit01': ('{% if x.is_true or x.is_bad %}yes{% else %}no{% endif %}', {'x': TestObj()}, \"yes\"),\n            'if-tag-shortcircuit02': ('{% if x.is_false and x.is_bad %}yes{% else %}no{% endif %}', {'x': TestObj()}, \"no\"),\n\n            # Non-existent args\n            'if-tag-badarg01':(\"{% if x|default_if_none:y %}yes{% endif %}\", {}, ''),\n            'if-tag-badarg02':(\"{% if x|default_if_none:y %}yes{% endif %}\", {'y': 0}, ''),\n            'if-tag-badarg03':(\"{% if x|default_if_none:y %}yes{% endif %}\", {'y': 1}, 'yes'),\n            'if-tag-badarg04':(\"{% if x|default_if_none:y %}yes{% else %}no{% endif %}\", {}, 'no'),\n\n            # Additional, more precise parsing tests are in SmartIfTests\n\n            ### IFCHANGED TAG #########################################################\n            'ifchanged01': ('{% for n in num %}{% ifchanged %}{{ n }}{% endifchanged %}{% endfor %}', {'num': (1,2,3)}, '123'),\n            'ifchanged02': ('{% for n in num %}{% ifchanged %}{{ n }}{% endifchanged %}{% endfor %}', {'num': (1,1,3)}, '13'),\n            'ifchanged03': ('{% for n in num %}{% ifchanged %}{{ n }}{% endifchanged %}{% endfor %}', {'num': (1,1,1)}, '1'),\n            'ifchanged04': ('{% for n in num %}{% ifchanged %}{{ n }}{% endifchanged %}{% for x in numx %}{% ifchanged %}{{ x }}{% endifchanged %}{% endfor %}{% endfor %}', {'num': (1, 2, 3), 'numx': (2, 2, 2)}, '122232'),\n            'ifchanged05': ('{% for n in num %}{% ifchanged %}{{ n }}{% endifchanged %}{% for x in numx %}{% ifchanged %}{{ x }}{% endifchanged %}{% endfor %}{% endfor %}', {'num': (1, 1, 1), 'numx': (1, 2, 3)}, '1123123123'),\n            'ifchanged06': ('{% for n in num %}{% ifchanged %}{{ n }}{% endifchanged %}{% for x in numx %}{% ifchanged %}{{ x }}{% endifchanged %}{% endfor %}{% endfor %}', {'num': (1, 1, 1), 'numx': (2, 2, 2)}, '1222'),\n            'ifchanged07': ('{% for n in num %}{% ifchanged %}{{ n }}{% endifchanged %}{% for x in numx %}{% ifchanged %}{{ x }}{% endifchanged %}{% for y in numy %}{% ifchanged %}{{ y }}{% endifchanged %}{% endfor %}{% endfor %}{% endfor %}', {'num': (1, 1, 1), 'numx': (2, 2, 2), 'numy': (3, 3, 3)}, '1233323332333'),\n            'ifchanged08': ('{% for data in datalist %}{% for c,d in data %}{% if c %}{% ifchanged %}{{ d }}{% endifchanged %}{% endif %}{% endfor %}{% endfor %}', {'datalist': [[(1, 'a'), (1, 'a'), (0, 'b'), (1, 'c')], [(0, 'a'), (1, 'c'), (1, 'd'), (1, 'd'), (0, 'e')]]}, 'accd'),\n\n            # Test one parameter given to ifchanged.\n            'ifchanged-param01': ('{% for n in num %}{% ifchanged n %}..{% endifchanged %}{{ n }}{% endfor %}', { 'num': (1,2,3) }, '..1..2..3'),\n            'ifchanged-param02': ('{% for n in num %}{% for x in numx %}{% ifchanged n %}..{% endifchanged %}{{ x }}{% endfor %}{% endfor %}', { 'num': (1,2,3), 'numx': (5,6,7) }, '..567..567..567'),\n\n            # Test multiple parameters to ifchanged.\n            'ifchanged-param03': ('{% for n in num %}{{ n }}{% for x in numx %}{% ifchanged x n %}{{ x }}{% endifchanged %}{% endfor %}{% endfor %}', { 'num': (1,1,2), 'numx': (5,6,6) }, '156156256'),\n\n            # Test a date+hour like construct, where the hour of the last day\n            # is the same but the date had changed, so print the hour anyway.\n            'ifchanged-param04': ('{% for d in days %}{% ifchanged %}{{ d.day }}{% endifchanged %}{% for h in d.hours %}{% ifchanged d h %}{{ h }}{% endifchanged %}{% endfor %}{% endfor %}', {'days':[{'day':1, 'hours':[1,2,3]},{'day':2, 'hours':[3]},] }, '112323'),\n\n            # Logically the same as above, just written with explicit\n            # ifchanged for the day.\n            'ifchanged-param05': ('{% for d in days %}{% ifchanged d.day %}{{ d.day }}{% endifchanged %}{% for h in d.hours %}{% ifchanged d.day h %}{{ h }}{% endifchanged %}{% endfor %}{% endfor %}', {'days':[{'day':1, 'hours':[1,2,3]},{'day':2, 'hours':[3]},] }, '112323'),\n\n            # Test the else clause of ifchanged.\n            'ifchanged-else01': ('{% for id in ids %}{{ id }}{% ifchanged id %}-first{% else %}-other{% endifchanged %},{% endfor %}', {'ids': [1,1,2,2,2,3]}, '1-first,1-other,2-first,2-other,2-other,3-first,'),\n\n            'ifchanged-else02': ('{% for id in ids %}{{ id }}-{% ifchanged id %}{% cycle red,blue %}{% else %}grey{% endifchanged %},{% endfor %}', {'ids': [1,1,2,2,2,3]}, '1-red,1-grey,2-blue,2-grey,2-grey,3-red,'),\n            'ifchanged-else03': ('{% for id in ids %}{{ id }}{% ifchanged id %}-{% cycle red,blue %}{% else %}{% endifchanged %},{% endfor %}', {'ids': [1,1,2,2,2,3]}, '1-red,1,2-blue,2,2,3-red,'),\n\n            'ifchanged-else04': ('{% for id in ids %}{% ifchanged %}***{{ id }}*{% else %}...{% endifchanged %}{{ forloop.counter }}{% endfor %}', {'ids': [1,1,2,2,2,3,4]}, '***1*1...2***2*3...4...5***3*6***4*7'),\n\n            ### IFEQUAL TAG ###########################################################\n            'ifequal01': (\"{% ifequal a b %}yes{% endifequal %}\", {\"a\": 1, \"b\": 2}, \"\"),\n            'ifequal02': (\"{% ifequal a b %}yes{% endifequal %}\", {\"a\": 1, \"b\": 1}, \"yes\"),\n            'ifequal03': (\"{% ifequal a b %}yes{% else %}no{% endifequal %}\", {\"a\": 1, \"b\": 2}, \"no\"),\n            'ifequal04': (\"{% ifequal a b %}yes{% else %}no{% endifequal %}\", {\"a\": 1, \"b\": 1}, \"yes\"),\n            'ifequal05': (\"{% ifequal a 'test' %}yes{% else %}no{% endifequal %}\", {\"a\": \"test\"}, \"yes\"),\n            'ifequal06': (\"{% ifequal a 'test' %}yes{% else %}no{% endifequal %}\", {\"a\": \"no\"}, \"no\"),\n            'ifequal07': ('{% ifequal a \"test\" %}yes{% else %}no{% endifequal %}', {\"a\": \"test\"}, \"yes\"),\n            'ifequal08': ('{% ifequal a \"test\" %}yes{% else %}no{% endifequal %}', {\"a\": \"no\"}, \"no\"),\n            'ifequal09': ('{% ifequal a \"test\" %}yes{% else %}no{% endifequal %}', {}, \"no\"),\n            'ifequal10': ('{% ifequal a b %}yes{% else %}no{% endifequal %}', {}, \"yes\"),\n\n            # SMART SPLITTING\n            'ifequal-split01': ('{% ifequal a \"test man\" %}yes{% else %}no{% endifequal %}', {}, \"no\"),\n            'ifequal-split02': ('{% ifequal a \"test man\" %}yes{% else %}no{% endifequal %}', {'a': 'foo'}, \"no\"),\n            'ifequal-split03': ('{% ifequal a \"test man\" %}yes{% else %}no{% endifequal %}', {'a': 'test man'}, \"yes\"),\n            'ifequal-split04': (\"{% ifequal a 'test man' %}yes{% else %}no{% endifequal %}\", {'a': 'test man'}, \"yes\"),\n            'ifequal-split05': (\"{% ifequal a 'i \\\"love\\\" you' %}yes{% else %}no{% endifequal %}\", {'a': ''}, \"no\"),\n            'ifequal-split06': (\"{% ifequal a 'i \\\"love\\\" you' %}yes{% else %}no{% endifequal %}\", {'a': 'i \"love\" you'}, \"yes\"),\n            'ifequal-split07': (\"{% ifequal a 'i \\\"love\\\" you' %}yes{% else %}no{% endifequal %}\", {'a': 'i love you'}, \"no\"),\n            'ifequal-split08': (r\"{% ifequal a 'I\\'m happy' %}yes{% else %}no{% endifequal %}\", {'a': \"I'm happy\"}, \"yes\"),\n            'ifequal-split09': (r\"{% ifequal a 'slash\\man' %}yes{% else %}no{% endifequal %}\", {'a': r\"slash\\man\"}, \"yes\"),\n            'ifequal-split10': (r\"{% ifequal a 'slash\\man' %}yes{% else %}no{% endifequal %}\", {'a': r\"slashman\"}, \"no\"),\n\n            # NUMERIC RESOLUTION\n            'ifequal-numeric01': ('{% ifequal x 5 %}yes{% endifequal %}', {'x': '5'}, ''),\n            'ifequal-numeric02': ('{% ifequal x 5 %}yes{% endifequal %}', {'x': 5}, 'yes'),\n            'ifequal-numeric03': ('{% ifequal x 5.2 %}yes{% endifequal %}', {'x': 5}, ''),\n            'ifequal-numeric04': ('{% ifequal x 5.2 %}yes{% endifequal %}', {'x': 5.2}, 'yes'),\n            'ifequal-numeric05': ('{% ifequal x 0.2 %}yes{% endifequal %}', {'x': .2}, 'yes'),\n            'ifequal-numeric06': ('{% ifequal x .2 %}yes{% endifequal %}', {'x': .2}, 'yes'),\n            'ifequal-numeric07': ('{% ifequal x 2. %}yes{% endifequal %}', {'x': 2}, ''),\n            'ifequal-numeric08': ('{% ifequal x \"5\" %}yes{% endifequal %}', {'x': 5}, ''),\n            'ifequal-numeric09': ('{% ifequal x \"5\" %}yes{% endifequal %}', {'x': '5'}, 'yes'),\n            'ifequal-numeric10': ('{% ifequal x -5 %}yes{% endifequal %}', {'x': -5}, 'yes'),\n            'ifequal-numeric11': ('{% ifequal x -5.2 %}yes{% endifequal %}', {'x': -5.2}, 'yes'),\n            'ifequal-numeric12': ('{% ifequal x +5 %}yes{% endifequal %}', {'x': 5}, 'yes'),\n\n            # FILTER EXPRESSIONS AS ARGUMENTS\n            'ifequal-filter01': ('{% ifequal a|upper \"A\" %}x{% endifequal %}', {'a': 'a'}, 'x'),\n            'ifequal-filter02': ('{% ifequal \"A\" a|upper %}x{% endifequal %}', {'a': 'a'}, 'x'),\n            'ifequal-filter03': ('{% ifequal a|upper b|upper %}x{% endifequal %}', {'a': 'x', 'b': 'X'}, 'x'),\n            'ifequal-filter04': ('{% ifequal x|slice:\"1\" \"a\" %}x{% endifequal %}', {'x': 'aaa'}, 'x'),\n            'ifequal-filter05': ('{% ifequal x|slice:\"1\"|upper \"A\" %}x{% endifequal %}', {'x': 'aaa'}, 'x'),\n\n            ### IFNOTEQUAL TAG ########################################################\n            'ifnotequal01': (\"{% ifnotequal a b %}yes{% endifnotequal %}\", {\"a\": 1, \"b\": 2}, \"yes\"),\n            'ifnotequal02': (\"{% ifnotequal a b %}yes{% endifnotequal %}\", {\"a\": 1, \"b\": 1}, \"\"),\n            'ifnotequal03': (\"{% ifnotequal a b %}yes{% else %}no{% endifnotequal %}\", {\"a\": 1, \"b\": 2}, \"yes\"),\n            'ifnotequal04': (\"{% ifnotequal a b %}yes{% else %}no{% endifnotequal %}\", {\"a\": 1, \"b\": 1}, \"no\"),\n\n            ## INCLUDE TAG ###########################################################\n            'include01': ('{% include \"basic-syntax01\" %}', {}, \"something cool\"),\n            'include02': ('{% include \"basic-syntax02\" %}', {'headline': 'Included'}, \"Included\"),\n            'include03': ('{% include template_name %}', {'template_name': 'basic-syntax02', 'headline': 'Included'}, \"Included\"),\n            'include04': ('a{% include \"nonexistent\" %}b', {}, (\"ab\", \"ab\", template.TemplateDoesNotExist)),\n            'include 05': ('template with a space', {}, 'template with a space'),\n            'include06': ('{% include \"include 05\"%}', {}, 'template with a space'),\n\n            # extra inline context\n            'include07': ('{% include \"basic-syntax02\" with headline=\"Inline\" %}', {'headline': 'Included'}, 'Inline'),\n            'include08': ('{% include headline with headline=\"Dynamic\" %}', {'headline': 'basic-syntax02'}, 'Dynamic'),\n            'include09': ('{{ first }}--{% include \"basic-syntax03\" with first=second|lower|upper second=first|upper %}--{{ second }}', {'first': 'Ul', 'second': 'lU'}, 'Ul--LU --- UL--lU'),\n\n            # isolated context\n            'include10': ('{% include \"basic-syntax03\" only %}', {'first': '1'}, (' --- ', 'INVALID --- INVALID')),\n            'include11': ('{% include \"basic-syntax03\" only with second=2 %}', {'first': '1'}, (' --- 2', 'INVALID --- 2')),\n            'include12': ('{% include \"basic-syntax03\" with first=1 only %}', {'second': '2'}, ('1 --- ', '1 --- INVALID')),\n\n            # autoescape context\n            'include13': ('{% autoescape off %}{% include \"basic-syntax03\" %}{% endautoescape %}', {'first': '&'}, ('& --- ', '& --- INVALID')),\n            'include14': ('{% autoescape off %}{% include \"basic-syntax03\" with first=var1 only %}{% endautoescape %}', {'var1': '&'}, ('& --- ', '& --- INVALID')),\n\n            'include-error01': ('{% include \"basic-syntax01\" with %}', {}, template.TemplateSyntaxError),\n            'include-error02': ('{% include \"basic-syntax01\" with \"no key\" %}', {}, template.TemplateSyntaxError),\n            'include-error03': ('{% include \"basic-syntax01\" with dotted.arg=\"error\" %}', {}, template.TemplateSyntaxError),\n            'include-error04': ('{% include \"basic-syntax01\" something_random %}', {}, template.TemplateSyntaxError),\n            'include-error05': ('{% include \"basic-syntax01\" foo=\"duplicate\" foo=\"key\" %}', {}, template.TemplateSyntaxError),\n            'include-error06': ('{% include \"basic-syntax01\" only only %}', {}, template.TemplateSyntaxError),\n\n            ### INCLUSION ERROR REPORTING #############################################\n            'include-fail1': ('{% load bad_tag %}{% badtag %}', {}, RuntimeError),\n            'include-fail2': ('{% load broken_tag %}', {}, template.TemplateSyntaxError),\n            'include-error07': ('{% include \"include-fail1\" %}', {}, ('', '', RuntimeError)),\n            'include-error08': ('{% include \"include-fail2\" %}', {}, ('', '', template.TemplateSyntaxError)),\n            'include-error09': ('{% include failed_include %}', {'failed_include': 'include-fail1'}, ('', '', RuntimeError)),\n            'include-error10': ('{% include failed_include %}', {'failed_include': 'include-fail2'}, ('', '', template.TemplateSyntaxError)),\n\n\n            ### NAMED ENDBLOCKS #######################################################\n\n            # Basic test\n            'namedendblocks01': (\"1{% block first %}_{% block second %}2{% endblock second %}_{% endblock first %}3\", {}, '1_2_3'),\n\n            # Unbalanced blocks\n            'namedendblocks02': (\"1{% block first %}_{% block second %}2{% endblock first %}_{% endblock second %}3\", {}, template.TemplateSyntaxError),\n            'namedendblocks03': (\"1{% block first %}_{% block second %}2{% endblock %}_{% endblock second %}3\", {}, template.TemplateSyntaxError),\n            'namedendblocks04': (\"1{% block first %}_{% block second %}2{% endblock second %}_{% endblock third %}3\", {}, template.TemplateSyntaxError),\n            'namedendblocks05': (\"1{% block first %}_{% block second %}2{% endblock first %}\", {}, template.TemplateSyntaxError),\n\n            # Mixed named and unnamed endblocks\n            'namedendblocks06': (\"1{% block first %}_{% block second %}2{% endblock %}_{% endblock first %}3\", {}, '1_2_3'),\n            'namedendblocks07': (\"1{% block first %}_{% block second %}2{% endblock second %}_{% endblock %}3\", {}, '1_2_3'),\n\n            ### INHERITANCE ###########################################################\n\n            # Standard template with no inheritance\n            'inheritance01': (\"1{% block first %}&{% endblock %}3{% block second %}_{% endblock %}\", {}, '1&3_'),\n\n            # Standard two-level inheritance\n            'inheritance02': (\"{% extends 'inheritance01' %}{% block first %}2{% endblock %}{% block second %}4{% endblock %}\", {}, '1234'),\n\n            # Three-level with no redefinitions on third level\n            'inheritance03': (\"{% extends 'inheritance02' %}\", {}, '1234'),\n\n            # Two-level with no redefinitions on second level\n            'inheritance04': (\"{% extends 'inheritance01' %}\", {}, '1&3_'),\n\n            # Two-level with double quotes instead of single quotes\n            'inheritance05': ('{% extends \"inheritance02\" %}', {}, '1234'),\n\n            # Three-level with variable parent-template name\n            'inheritance06': (\"{% extends foo %}\", {'foo': 'inheritance02'}, '1234'),\n\n            # Two-level with one block defined, one block not defined\n            'inheritance07': (\"{% extends 'inheritance01' %}{% block second %}5{% endblock %}\", {}, '1&35'),\n\n            # Three-level with one block defined on this level, two blocks defined next level\n            'inheritance08': (\"{% extends 'inheritance02' %}{% block second %}5{% endblock %}\", {}, '1235'),\n\n            # Three-level with second and third levels blank\n            'inheritance09': (\"{% extends 'inheritance04' %}\", {}, '1&3_'),\n\n            # Three-level with space NOT in a block -- should be ignored\n            'inheritance10': (\"{% extends 'inheritance04' %}      \", {}, '1&3_'),\n\n            # Three-level with both blocks defined on this level, but none on second level\n            'inheritance11': (\"{% extends 'inheritance04' %}{% block first %}2{% endblock %}{% block second %}4{% endblock %}\", {}, '1234'),\n\n            # Three-level with this level providing one and second level providing the other\n            'inheritance12': (\"{% extends 'inheritance07' %}{% block first %}2{% endblock %}\", {}, '1235'),\n\n            # Three-level with this level overriding second level\n            'inheritance13': (\"{% extends 'inheritance02' %}{% block first %}a{% endblock %}{% block second %}b{% endblock %}\", {}, '1a3b'),\n\n            # A block defined only in a child template shouldn't be displayed\n            'inheritance14': (\"{% extends 'inheritance01' %}{% block newblock %}NO DISPLAY{% endblock %}\", {}, '1&3_'),\n\n            # A block within another block\n            'inheritance15': (\"{% extends 'inheritance01' %}{% block first %}2{% block inner %}inner{% endblock %}{% endblock %}\", {}, '12inner3_'),\n\n            # A block within another block (level 2)\n            'inheritance16': (\"{% extends 'inheritance15' %}{% block inner %}out{% endblock %}\", {}, '12out3_'),\n\n            # {% load %} tag (parent -- setup for exception04)\n            'inheritance17': (\"{% load testtags %}{% block first %}1234{% endblock %}\", {}, '1234'),\n\n            # {% load %} tag (standard usage, without inheritance)\n            'inheritance18': (\"{% load testtags %}{% echo this that theother %}5678\", {}, 'this that theother5678'),\n\n            # {% load %} tag (within a child template)\n            'inheritance19': (\"{% extends 'inheritance01' %}{% block first %}{% load testtags %}{% echo 400 %}5678{% endblock %}\", {}, '140056783_'),\n\n            # Two-level inheritance with {{ block.super }}\n            'inheritance20': (\"{% extends 'inheritance01' %}{% block first %}{{ block.super }}a{% endblock %}\", {}, '1&a3_'),\n\n            # Three-level inheritance with {{ block.super }} from parent\n            'inheritance21': (\"{% extends 'inheritance02' %}{% block first %}{{ block.super }}a{% endblock %}\", {}, '12a34'),\n\n            # Three-level inheritance with {{ block.super }} from grandparent\n            'inheritance22': (\"{% extends 'inheritance04' %}{% block first %}{{ block.super }}a{% endblock %}\", {}, '1&a3_'),\n\n            # Three-level inheritance with {{ block.super }} from parent and grandparent\n            'inheritance23': (\"{% extends 'inheritance20' %}{% block first %}{{ block.super }}b{% endblock %}\", {}, '1&ab3_'),\n\n            # Inheritance from local context without use of template loader\n            'inheritance24': (\"{% extends context_template %}{% block first %}2{% endblock %}{% block second %}4{% endblock %}\", {'context_template': template.Template(\"1{% block first %}_{% endblock %}3{% block second %}_{% endblock %}\")}, '1234'),\n\n            # Inheritance from local context with variable parent template\n            'inheritance25': (\"{% extends context_template.1 %}{% block first %}2{% endblock %}{% block second %}4{% endblock %}\", {'context_template': [template.Template(\"Wrong\"), template.Template(\"1{% block first %}_{% endblock %}3{% block second %}_{% endblock %}\")]}, '1234'),\n\n            # Set up a base template to extend\n            'inheritance26': (\"no tags\", {}, 'no tags'),\n\n            # Inheritance from a template that doesn't have any blocks\n            'inheritance27': (\"{% extends 'inheritance26' %}\", {}, 'no tags'),\n\n            # Set up a base template with a space in it.\n            'inheritance 28': (\"{% block first %}!{% endblock %}\", {}, '!'),\n\n            # Inheritance from a template with a space in its name should work.\n            'inheritance29': (\"{% extends 'inheritance 28' %}\", {}, '!'),\n\n            # Base template, putting block in a conditional {% if %} tag\n            'inheritance30': (\"1{% if optional %}{% block opt %}2{% endblock %}{% endif %}3\", {'optional': True}, '123'),\n\n            # Inherit from a template with block wrapped in an {% if %} tag (in parent), still gets overridden\n            'inheritance31': (\"{% extends 'inheritance30' %}{% block opt %}two{% endblock %}\", {'optional': True}, '1two3'),\n            'inheritance32': (\"{% extends 'inheritance30' %}{% block opt %}two{% endblock %}\", {}, '13'),\n\n            # Base template, putting block in a conditional {% ifequal %} tag\n            'inheritance33': (\"1{% ifequal optional 1 %}{% block opt %}2{% endblock %}{% endifequal %}3\", {'optional': 1}, '123'),\n\n            # Inherit from a template with block wrapped in an {% ifequal %} tag (in parent), still gets overridden\n            'inheritance34': (\"{% extends 'inheritance33' %}{% block opt %}two{% endblock %}\", {'optional': 1}, '1two3'),\n            'inheritance35': (\"{% extends 'inheritance33' %}{% block opt %}two{% endblock %}\", {'optional': 2}, '13'),\n\n            # Base template, putting block in a {% for %} tag\n            'inheritance36': (\"{% for n in numbers %}_{% block opt %}{{ n }}{% endblock %}{% endfor %}_\", {'numbers': '123'}, '_1_2_3_'),\n\n            # Inherit from a template with block wrapped in an {% for %} tag (in parent), still gets overridden\n            'inheritance37': (\"{% extends 'inheritance36' %}{% block opt %}X{% endblock %}\", {'numbers': '123'}, '_X_X_X_'),\n            'inheritance38': (\"{% extends 'inheritance36' %}{% block opt %}X{% endblock %}\", {}, '_'),\n\n            # The super block will still be found.\n            'inheritance39': (\"{% extends 'inheritance30' %}{% block opt %}new{{ block.super }}{% endblock %}\", {'optional': True}, '1new23'),\n            'inheritance40': (\"{% extends 'inheritance33' %}{% block opt %}new{{ block.super }}{% endblock %}\", {'optional': 1}, '1new23'),\n            'inheritance41': (\"{% extends 'inheritance36' %}{% block opt %}new{{ block.super }}{% endblock %}\", {'numbers': '123'}, '_new1_new2_new3_'),\n\n            # Expression starting and ending with a quote\n            'inheritance42': (\"{% extends 'inheritance02'|cut:' ' %}\", {}, '1234'),\n\n            ### LOADING TAG LIBRARIES #################################################\n            'load01': (\"{% load testtags subpackage.echo %}{% echo test %} {% echo2 \\\"test\\\" %}\", {}, \"test test\"),\n            'load02': (\"{% load subpackage.echo %}{% echo2 \\\"test\\\" %}\", {}, \"test\"),\n\n            # {% load %} tag, importing individual tags\n            'load03': (\"{% load echo from testtags %}{% echo this that theother %}\", {}, 'this that theother'),\n            'load04': (\"{% load echo other_echo from testtags %}{% echo this that theother %} {% other_echo and another thing %}\", {}, 'this that theother and another thing'),\n            'load05': (\"{% load echo upper from testtags %}{% echo this that theother %} {{ statement|upper }}\", {'statement': 'not shouting'}, 'this that theother NOT SHOUTING'),\n            'load06': (\"{% load echo2 from subpackage.echo %}{% echo2 \\\"test\\\" %}\", {}, \"test\"),\n\n            # {% load %} tag errors\n            'load07': (\"{% load echo other_echo bad_tag from testtags %}\", {}, template.TemplateSyntaxError),\n            'load08': (\"{% load echo other_echo bad_tag from %}\", {}, template.TemplateSyntaxError),\n            'load09': (\"{% load from testtags %}\", {}, template.TemplateSyntaxError),\n            'load10': (\"{% load echo from bad_library %}\", {}, template.TemplateSyntaxError),\n            'load11': (\"{% load subpackage.echo_invalid %}\", {}, template.TemplateSyntaxError),\n            'load12': (\"{% load subpackage.missing %}\", {}, template.TemplateSyntaxError),\n\n            ### I18N ##################################################################\n\n            # {% spaceless %} tag\n            'spaceless01': (\"{% spaceless %} <b>    <i> text </i>    </b> {% endspaceless %}\", {}, \"<b><i> text </i></b>\"),\n            'spaceless02': (\"{% spaceless %} <b> \\n <i> text </i> \\n </b> {% endspaceless %}\", {}, \"<b><i> text </i></b>\"),\n            'spaceless03': (\"{% spaceless %}<b><i>text</i></b>{% endspaceless %}\", {}, \"<b><i>text</i></b>\"),\n            'spaceless04': (\"{% spaceless %}<b>   <i>{{ text }}</i>  </b>{% endspaceless %}\", {'text' : 'This & that'}, \"<b><i>This &amp; that</i></b>\"),\n            'spaceless05': (\"{% autoescape off %}{% spaceless %}<b>   <i>{{ text }}</i>  </b>{% endspaceless %}{% endautoescape %}\", {'text' : 'This & that'}, \"<b><i>This & that</i></b>\"),\n            'spaceless06': (\"{% spaceless %}<b>   <i>{{ text|safe }}</i>  </b>{% endspaceless %}\", {'text' : 'This & that'}, \"<b><i>This & that</i></b>\"),\n\n            # simple translation of a string delimited by '\n            'i18n01': (\"{% load i18n %}{% trans 'xxxyyyxxx' %}\", {}, \"xxxyyyxxx\"),\n\n            # simple translation of a string delimited by \"\n            'i18n02': ('{% load i18n %}{% trans \"xxxyyyxxx\" %}', {}, \"xxxyyyxxx\"),\n\n            # simple translation of a variable\n            'i18n03': ('{% load i18n %}{% blocktrans %}{{ anton }}{% endblocktrans %}', {'anton': b'\\xc3\\x85'}, \"Å\"),\n\n            # simple translation of a variable and filter\n            'i18n04': ('{% load i18n %}{% blocktrans with berta=anton|lower %}{{ berta }}{% endblocktrans %}', {'anton': b'\\xc3\\x85'}, 'å'),\n            'legacyi18n04': ('{% load i18n %}{% blocktrans with anton|lower as berta %}{{ berta }}{% endblocktrans %}', {'anton': b'\\xc3\\x85'}, 'å'),\n\n            # simple translation of a string with interpolation\n            'i18n05': ('{% load i18n %}{% blocktrans %}xxx{{ anton }}xxx{% endblocktrans %}', {'anton': 'yyy'}, \"xxxyyyxxx\"),\n\n            # simple translation of a string to german\n            'i18n06': ('{% load i18n %}{% trans \"Page not found\" %}', {'LANGUAGE_CODE': 'de'}, \"Seite nicht gefunden\"),\n\n            # translation of singular form\n            'i18n07': ('{% load i18n %}{% blocktrans count counter=number %}singular{% plural %}{{ counter }} plural{% endblocktrans %}', {'number': 1}, \"singular\"),\n            'legacyi18n07': ('{% load i18n %}{% blocktrans count number as counter %}singular{% plural %}{{ counter }} plural{% endblocktrans %}', {'number': 1}, \"singular\"),\n\n            # translation of plural form\n            'i18n08': ('{% load i18n %}{% blocktrans count number as counter %}singular{% plural %}{{ counter }} plural{% endblocktrans %}', {'number': 2}, \"2 plural\"),\n            'legacyi18n08': ('{% load i18n %}{% blocktrans count counter=number %}singular{% plural %}{{ counter }} plural{% endblocktrans %}', {'number': 2}, \"2 plural\"),\n\n            # simple non-translation (only marking) of a string to german\n            'i18n09': ('{% load i18n %}{% trans \"Page not found\" noop %}', {'LANGUAGE_CODE': 'de'}, \"Page not found\"),\n\n            # translation of a variable with a translated filter\n            'i18n10': ('{{ bool|yesno:_(\"yes,no,maybe\") }}', {'bool': True, 'LANGUAGE_CODE': 'de'}, 'Ja'),\n\n            # translation of a variable with a non-translated filter\n            'i18n11': ('{{ bool|yesno:\"ja,nein\" }}', {'bool': True}, 'ja'),\n\n            # usage of the get_available_languages tag\n            'i18n12': ('{% load i18n %}{% get_available_languages as langs %}{% for lang in langs %}{% ifequal lang.0 \"de\" %}{{ lang.0 }}{% endifequal %}{% endfor %}', {}, 'de'),\n\n            # translation of constant strings\n            'i18n13': ('{{ _(\"Password\") }}', {'LANGUAGE_CODE': 'de'}, 'Passwort'),\n            'i18n14': ('{% cycle \"foo\" _(\"Password\") _(\\'Password\\') as c %} {% cycle c %} {% cycle c %}', {'LANGUAGE_CODE': 'de'}, 'foo Passwort Passwort'),\n            'i18n15': ('{{ absent|default:_(\"Password\") }}', {'LANGUAGE_CODE': 'de', 'absent': \"\"}, 'Passwort'),\n            'i18n16': ('{{ _(\"<\") }}', {'LANGUAGE_CODE': 'de'}, '<'),\n\n            # Escaping inside blocktrans and trans works as if it was directly in the\n            # template.\n            'i18n17': ('{% load i18n %}{% blocktrans with berta=anton|escape %}{{ berta }}{% endblocktrans %}', {'anton': 'α & β'}, 'α &amp; β'),\n            'i18n18': ('{% load i18n %}{% blocktrans with berta=anton|force_escape %}{{ berta }}{% endblocktrans %}', {'anton': 'α & β'}, 'α &amp; β'),\n            'i18n19': ('{% load i18n %}{% blocktrans %}{{ andrew }}{% endblocktrans %}', {'andrew': 'a & b'}, 'a &amp; b'),\n            'i18n20': ('{% load i18n %}{% trans andrew %}', {'andrew': 'a & b'}, 'a &amp; b'),\n            'i18n21': ('{% load i18n %}{% blocktrans %}{{ andrew }}{% endblocktrans %}', {'andrew': mark_safe('a & b')}, 'a & b'),\n            'i18n22': ('{% load i18n %}{% trans andrew %}', {'andrew': mark_safe('a & b')}, 'a & b'),\n            'legacyi18n17': ('{% load i18n %}{% blocktrans with anton|escape as berta %}{{ berta }}{% endblocktrans %}', {'anton': 'α & β'}, 'α &amp; β'),\n            'legacyi18n18': ('{% load i18n %}{% blocktrans with anton|force_escape as berta %}{{ berta }}{% endblocktrans %}', {'anton': 'α & β'}, 'α &amp; β'),\n\n            # Use filters with the {% trans %} tag, #5972\n            'i18n23': ('{% load i18n %}{% trans \"Page not found\"|capfirst|slice:\"6:\" %}', {'LANGUAGE_CODE': 'de'}, 'nicht gefunden'),\n            'i18n24': (\"{% load i18n %}{% trans 'Page not found'|upper %}\", {'LANGUAGE_CODE': 'de'}, 'SEITE NICHT GEFUNDEN'),\n            'i18n25': ('{% load i18n %}{% trans somevar|upper %}', {'somevar': 'Page not found', 'LANGUAGE_CODE': 'de'}, 'SEITE NICHT GEFUNDEN'),\n\n            # translation of plural form with extra field in singular form (#13568)\n            'i18n26': ('{% load i18n %}{% blocktrans with extra_field=myextra_field count counter=number %}singular {{ extra_field }}{% plural %}plural{% endblocktrans %}', {'number': 1, 'myextra_field': 'test'}, \"singular test\"),\n            'legacyi18n26': ('{% load i18n %}{% blocktrans with myextra_field as extra_field count number as counter %}singular {{ extra_field }}{% plural %}plural{% endblocktrans %}', {'number': 1, 'myextra_field': 'test'}, \"singular test\"),\n\n            # translation of singular form in russian (#14126)\n            'i18n27': ('{% load i18n %}{% blocktrans count counter=number %}{{ counter }} result{% plural %}{{ counter }} results{% endblocktrans %}', {'number': 1, 'LANGUAGE_CODE': 'ru'}, '1 \\u0440\\u0435\\u0437\\u0443\\u043b\\u044c\\u0442\\u0430\\u0442'),\n            'legacyi18n27': ('{% load i18n %}{% blocktrans count number as counter %}{{ counter }} result{% plural %}{{ counter }} results{% endblocktrans %}', {'number': 1, 'LANGUAGE_CODE': 'ru'}, '1 \\u0440\\u0435\\u0437\\u0443\\u043b\\u044c\\u0442\\u0430\\u0442'),\n\n            # simple translation of multiple variables\n            'i18n28': ('{% load i18n %}{% blocktrans with a=anton b=berta %}{{ a }} + {{ b }}{% endblocktrans %}', {'anton': 'α', 'berta': 'β'}, 'α + β'),\n            'legacyi18n28': ('{% load i18n %}{% blocktrans with anton as a and berta as b %}{{ a }} + {{ b }}{% endblocktrans %}', {'anton': 'α', 'berta': 'β'}, 'α + β'),\n\n            # retrieving language information\n            'i18n28_2': ('{% load i18n %}{% get_language_info for \"de\" as l %}{{ l.code }}: {{ l.name }}/{{ l.name_local }} bidi={{ l.bidi }}', {}, 'de: German/Deutsch bidi=False'),\n            'i18n29': ('{% load i18n %}{% get_language_info for LANGUAGE_CODE as l %}{{ l.code }}: {{ l.name }}/{{ l.name_local }} bidi={{ l.bidi }}', {'LANGUAGE_CODE': 'fi'}, 'fi: Finnish/suomi bidi=False'),\n            'i18n30': ('{% load i18n %}{% get_language_info_list for langcodes as langs %}{% for l in langs %}{{ l.code }}: {{ l.name }}/{{ l.name_local }} bidi={{ l.bidi }}; {% endfor %}', {'langcodes': ['it', 'no']}, 'it: Italian/italiano bidi=False; no: Norwegian/norsk bidi=False; '),\n            'i18n31': ('{% load i18n %}{% get_language_info_list for langcodes as langs %}{% for l in langs %}{{ l.code }}: {{ l.name }}/{{ l.name_local }} bidi={{ l.bidi }}; {% endfor %}', {'langcodes': (('sl', 'Slovenian'), ('fa', 'Persian'))}, 'sl: Slovenian/Sloven\\u0161\\u010dina bidi=False; fa: Persian/\\u0641\\u0627\\u0631\\u0633\\u06cc bidi=True; '),\n            'i18n32': ('{% load i18n %}{{ \"hu\"|language_name }} {{ \"hu\"|language_name_local }} {{ \"hu\"|language_bidi }}', {}, 'Hungarian Magyar False'),\n            'i18n33': ('{% load i18n %}{{ langcode|language_name }} {{ langcode|language_name_local }} {{ langcode|language_bidi }}', {'langcode': 'nl'}, 'Dutch Nederlands False'),\n\n            # blocktrans handling of variables which are not in the context.\n            'i18n34': ('{% load i18n %}{% blocktrans %}{{ missing }}{% endblocktrans %}', {}, ''),\n\n            # trans tag with as var\n            'i18n35': ('{% load i18n %}{% trans \"Page not found\" as page_not_found %}{{ page_not_found }}', {'LANGUAGE_CODE': 'de'}, \"Seite nicht gefunden\"),\n            'i18n36': ('{% load i18n %}{% trans \"Page not found\" noop as page_not_found %}{{ page_not_found }}', {'LANGUAGE_CODE': 'de'}, \"Page not found\"),\n            'i18n36': ('{% load i18n %}{% trans \"Page not found\" as page_not_found noop %}{{ page_not_found }}', {'LANGUAGE_CODE': 'de'}, \"Page not found\"),\n            'i18n37': ('{% load i18n %}{% trans \"Page not found\" as page_not_found %}{% blocktrans %}Error: {{ page_not_found }}{% endblocktrans %}', {'LANGUAGE_CODE': 'de'}, \"Error: Seite nicht gefunden\"),\n\n            ### HANDLING OF TEMPLATE_STRING_IF_INVALID ###################################\n\n            'invalidstr01': ('{{ var|default:\"Foo\" }}', {}, ('Foo','INVALID')),\n            'invalidstr02': ('{{ var|default_if_none:\"Foo\" }}', {}, ('','INVALID')),\n            'invalidstr03': ('{% for v in var %}({{ v }}){% endfor %}', {}, ''),\n            'invalidstr04': ('{% if var %}Yes{% else %}No{% endif %}', {}, 'No'),\n            'invalidstr04_2': ('{% if var|default:\"Foo\" %}Yes{% else %}No{% endif %}', {}, 'Yes'),\n            'invalidstr05': ('{{ var }}', {}, ('', ('INVALID %s', 'var'))),\n            'invalidstr06': ('{{ var.prop }}', {'var': {}}, ('', ('INVALID %s', 'var.prop'))),\n\n            ### MULTILINE #############################################################\n\n            'multiline01': (\"\"\"\n                            Hello,\n                            boys.\n                            How\n                            are\n                            you\n                            gentlemen.\n                            \"\"\",\n                            {},\n                            \"\"\"\n                            Hello,\n                            boys.\n                            How\n                            are\n                            you\n                            gentlemen.\n                            \"\"\"),\n\n            ### REGROUP TAG ###########################################################\n            'regroup01': ('{% regroup data by bar as grouped %}'\n                          '{% for group in grouped %}'\n                          '{{ group.grouper }}:'\n                          '{% for item in group.list %}'\n                          '{{ item.foo }}'\n                          '{% endfor %},'\n                          '{% endfor %}',\n                          {'data': [ {'foo':'c', 'bar':1},\n                                     {'foo':'d', 'bar':1},\n                                     {'foo':'a', 'bar':2},\n                                     {'foo':'b', 'bar':2},\n                                     {'foo':'x', 'bar':3}  ]},\n                          '1:cd,2:ab,3:x,'),\n\n            # Test for silent failure when target variable isn't found\n            'regroup02': ('{% regroup data by bar as grouped %}'\n                          '{% for group in grouped %}'\n                          '{{ group.grouper }}:'\n                          '{% for item in group.list %}'\n                          '{{ item.foo }}'\n                          '{% endfor %},'\n                          '{% endfor %}',\n                          {}, ''),\n\n            # Regression tests for #17675\n            # The date template filter has expects_localtime = True\n            'regroup03': ('{% regroup data by at|date:\"m\" as grouped %}'\n                          '{% for group in grouped %}'\n                          '{{ group.grouper }}:'\n                          '{% for item in group.list %}'\n                          '{{ item.at|date:\"d\" }}'\n                          '{% endfor %},'\n                          '{% endfor %}',\n                          {'data': [{'at': date(2012, 2, 14)},\n                                    {'at': date(2012, 2, 28)},\n                                    {'at': date(2012, 7, 4)}]},\n                          '02:1428,07:04,'),\n            # The join template filter has needs_autoescape = True\n            'regroup04': ('{% regroup data by bar|join:\"\" as grouped %}'\n                          '{% for group in grouped %}'\n                          '{{ group.grouper }}:'\n                          '{% for item in group.list %}'\n                          '{{ item.foo|first }}'\n                          '{% endfor %},'\n                          '{% endfor %}',\n                          {'data': [{'foo': 'x', 'bar': ['ab', 'c']},\n                                    {'foo': 'y', 'bar': ['a', 'bc']},\n                                    {'foo': 'z', 'bar': ['a', 'd']}]},\n                          'abc:xy,ad:z,'),\n\n            ### SSI TAG ########################################################\n\n            # Test normal behavior\n            'ssi01': ('{%% ssi \"%s\" %%}' % os.path.join(basedir, 'templates', 'ssi_include.html'), {}, 'This is for testing an ssi include. {{ test }}\\n'),\n            'ssi02': ('{%% ssi \"%s\" %%}' % os.path.join(basedir, 'not_here'), {}, ''),\n            'ssi03': (\"{%% ssi '%s' %%}\" % os.path.join(basedir, 'not_here'), {}, ''),\n\n            # Test passing as a variable\n            'ssi04': ('{% load ssi from future %}{% ssi ssi_file %}', {'ssi_file': os.path.join(basedir, 'templates', 'ssi_include.html')}, 'This is for testing an ssi include. {{ test }}\\n'),\n            'ssi05': ('{% load ssi from future %}{% ssi ssi_file %}', {'ssi_file': 'no_file'}, ''),\n\n            # Test parsed output\n            'ssi06': ('{%% ssi \"%s\" parsed %%}' % os.path.join(basedir, 'templates', 'ssi_include.html'), {'test': 'Look ma! It parsed!'}, 'This is for testing an ssi include. Look ma! It parsed!\\n'),\n            'ssi07': ('{%% ssi \"%s\" parsed %%}' % os.path.join(basedir, 'not_here'), {'test': 'Look ma! It parsed!'}, ''),\n\n            # Test space in file name\n            'ssi08': ('{%% ssi \"%s\" %%}' % os.path.join(basedir, 'templates', 'ssi include with spaces.html'), {}, 'This is for testing an ssi include with spaces in its name. {{ test }}\\n'),\n            'ssi09': ('{%% ssi \"%s\" parsed %%}' % os.path.join(basedir, 'templates', 'ssi include with spaces.html'), {'test': 'Look ma! It parsed!'}, 'This is for testing an ssi include with spaces in its name. Look ma! It parsed!\\n'),\n\n            ### TEMPLATETAG TAG #######################################################\n            'templatetag01': ('{% templatetag openblock %}', {}, '{%'),\n            'templatetag02': ('{% templatetag closeblock %}', {}, '%}'),\n            'templatetag03': ('{% templatetag openvariable %}', {}, '{{'),\n            'templatetag04': ('{% templatetag closevariable %}', {}, '}}'),\n            'templatetag05': ('{% templatetag %}', {}, template.TemplateSyntaxError),\n            'templatetag06': ('{% templatetag foo %}', {}, template.TemplateSyntaxError),\n            'templatetag07': ('{% templatetag openbrace %}', {}, '{'),\n            'templatetag08': ('{% templatetag closebrace %}', {}, '}'),\n            'templatetag09': ('{% templatetag openbrace %}{% templatetag openbrace %}', {}, '{{'),\n            'templatetag10': ('{% templatetag closebrace %}{% templatetag closebrace %}', {}, '}}'),\n            'templatetag11': ('{% templatetag opencomment %}', {}, '{#'),\n            'templatetag12': ('{% templatetag closecomment %}', {}, '#}'),\n\n            # Simple tags with customized names\n            'simpletag-renamed01': ('{% load custom %}{% minusone 7 %}', {}, '6'),\n            'simpletag-renamed02': ('{% load custom %}{% minustwo 7 %}', {}, '5'),\n            'simpletag-renamed03': ('{% load custom %}{% minustwo_overridden_name 7 %}', {}, template.TemplateSyntaxError),\n\n            ### WIDTHRATIO TAG ########################################################\n            'widthratio01': ('{% widthratio a b 0 %}', {'a':50,'b':100}, '0'),\n            'widthratio02': ('{% widthratio a b 100 %}', {'a':0,'b':0}, '0'),\n            'widthratio03': ('{% widthratio a b 100 %}', {'a':0,'b':100}, '0'),\n            'widthratio04': ('{% widthratio a b 100 %}', {'a':50,'b':100}, '50'),\n            'widthratio05': ('{% widthratio a b 100 %}', {'a':100,'b':100}, '100'),\n\n            # 62.5 should round to 63 on Python 2 and 62 on Python 3\n            # See http://docs.python.org/py3k/whatsnew/3.0.html\n            'widthratio06': ('{% widthratio a b 100 %}', {'a':50,'b':80}, '62' if six.PY3 else '63'),\n\n            # 71.4 should round to 71\n            'widthratio07': ('{% widthratio a b 100 %}', {'a':50,'b':70}, '71'),\n\n            # Raise exception if we don't have 3 args, last one an integer\n            'widthratio08': ('{% widthratio %}', {}, template.TemplateSyntaxError),\n            'widthratio09': ('{% widthratio a b %}', {'a':50,'b':100}, template.TemplateSyntaxError),\n            'widthratio10': ('{% widthratio a b 100.0 %}', {'a':50,'b':100}, '50'),\n\n            # #10043: widthratio should allow max_width to be a variable\n            'widthratio11': ('{% widthratio a b c %}', {'a':50,'b':100, 'c': 100}, '50'),\n\n            # #18739: widthratio should handle None args consistently with non-numerics\n            'widthratio12a': ('{% widthratio a b c %}', {'a':'a','b':100,'c':100}, ''),\n            'widthratio12b': ('{% widthratio a b c %}', {'a':None,'b':100,'c':100}, ''),\n            'widthratio13a': ('{% widthratio a b c %}', {'a':0,'b':'b','c':100}, ''),\n            'widthratio13b': ('{% widthratio a b c %}', {'a':0,'b':None,'c':100}, ''),\n            'widthratio14a': ('{% widthratio a b c %}', {'a':0,'b':100,'c':'c'}, template.TemplateSyntaxError),\n            'widthratio14b': ('{% widthratio a b c %}', {'a':0,'b':100,'c':None}, template.TemplateSyntaxError),\n\n            ### WITH TAG ########################################################\n            'with01': ('{% with key=dict.key %}{{ key }}{% endwith %}', {'dict': {'key': 50}}, '50'),\n            'legacywith01': ('{% with dict.key as key %}{{ key }}{% endwith %}', {'dict': {'key': 50}}, '50'),\n\n            'with02': ('{{ key }}{% with key=dict.key %}{{ key }}-{{ dict.key }}-{{ key }}{% endwith %}{{ key }}', {'dict': {'key': 50}}, ('50-50-50', 'INVALID50-50-50INVALID')),\n            'legacywith02': ('{{ key }}{% with dict.key as key %}{{ key }}-{{ dict.key }}-{{ key }}{% endwith %}{{ key }}', {'dict': {'key': 50}}, ('50-50-50', 'INVALID50-50-50INVALID')),\n\n            'with03': ('{% with a=alpha b=beta %}{{ a }}{{ b }}{% endwith %}', {'alpha': 'A', 'beta': 'B'}, 'AB'),\n\n            'with-error01': ('{% with dict.key xx key %}{{ key }}{% endwith %}', {'dict': {'key': 50}}, template.TemplateSyntaxError),\n            'with-error02': ('{% with dict.key as %}{{ key }}{% endwith %}', {'dict': {'key': 50}}, template.TemplateSyntaxError),\n\n            ### NOW TAG ########################################################\n            # Simple case\n            'now01': ('{% now \"j n Y\" %}', {}, \"%d %d %d\" % (\n                datetime.now().day, datetime.now().month, datetime.now().year)),\n            # Check parsing of locale strings\n            'now02': ('{% now \"DATE_FORMAT\" %}', {},  date_format(datetime.now())),\n            # Also accept simple quotes - #15092\n            'now03': (\"{% now 'j n Y' %}\", {}, \"%d %d %d\" % (\n                datetime.now().day, datetime.now().month, datetime.now().year)),\n            'now04': (\"{% now 'DATE_FORMAT' %}\", {},  date_format(datetime.now())),\n            'now05': ('''{% now 'j \"n\" Y'%}''', {}, '''%d \"%d\" %d''' % (\n                datetime.now().day, datetime.now().month, datetime.now().year)),\n            'now06': ('''{% now \"j 'n' Y\"%}''', {}, '''%d '%d' %d''' % (\n                datetime.now().day, datetime.now().month, datetime.now().year)),\n\n            ### URL TAG ########################################################\n            # Successes\n            'url01': ('{% url \"regressiontests.templates.views.client\" client.id %}', {'client': {'id': 1}}, '/url_tag/client/1/'),\n            'url02': ('{% url \"regressiontests.templates.views.client_action\" id=client.id action=\"update\" %}', {'client': {'id': 1}}, '/url_tag/client/1/update/'),\n            'url02a': ('{% url \"regressiontests.templates.views.client_action\" client.id \"update\" %}', {'client': {'id': 1}}, '/url_tag/client/1/update/'),\n            'url02b': (\"{% url 'regressiontests.templates.views.client_action' id=client.id action='update' %}\", {'client': {'id': 1}}, '/url_tag/client/1/update/'),\n            'url02c': (\"{% url 'regressiontests.templates.views.client_action' client.id 'update' %}\", {'client': {'id': 1}}, '/url_tag/client/1/update/'),\n            'url03': ('{% url \"regressiontests.templates.views.index\" %}', {}, '/url_tag/'),\n            'url04': ('{% url \"named.client\" client.id %}', {'client': {'id': 1}}, '/url_tag/named-client/1/'),\n            'url05': ('{% url \"метка_оператора\" v %}', {'v': 'Ω'}, '/url_tag/%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4/%CE%A9/'),\n            'url06': ('{% url \"метка_оператора_2\" tag=v %}', {'v': 'Ω'}, '/url_tag/%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4/%CE%A9/'),\n            'url07': ('{% url \"regressiontests.templates.views.client2\" tag=v %}', {'v': 'Ω'}, '/url_tag/%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4/%CE%A9/'),\n            'url08': ('{% url \"метка_оператора\" v %}', {'v': 'Ω'}, '/url_tag/%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4/%CE%A9/'),\n            'url09': ('{% url \"метка_оператора_2\" tag=v %}', {'v': 'Ω'}, '/url_tag/%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4/%CE%A9/'),\n            'url10': ('{% url \"regressiontests.templates.views.client_action\" id=client.id action=\"two words\" %}', {'client': {'id': 1}}, '/url_tag/client/1/two%20words/'),\n            'url11': ('{% url \"regressiontests.templates.views.client_action\" id=client.id action=\"==\" %}', {'client': {'id': 1}}, '/url_tag/client/1/==/'),\n            'url12': ('{% url \"regressiontests.templates.views.client_action\" id=client.id action=\",\" %}', {'client': {'id': 1}}, '/url_tag/client/1/,/'),\n            'url13': ('{% url \"regressiontests.templates.views.client_action\" id=client.id action=arg|join:\"-\" %}', {'client': {'id': 1}, 'arg':['a','b']}, '/url_tag/client/1/a-b/'),\n            'url14': ('{% url \"regressiontests.templates.views.client_action\" client.id arg|join:\"-\" %}', {'client': {'id': 1}, 'arg':['a','b']}, '/url_tag/client/1/a-b/'),\n            'url15': ('{% url \"regressiontests.templates.views.client_action\" 12 \"test\" %}', {}, '/url_tag/client/12/test/'),\n            'url18': ('{% url \"regressiontests.templates.views.client\" \"1,2\" %}', {}, '/url_tag/client/1,2/'),\n\n            'url19': ('{% url named_url client.id %}', {'named_url': 'regressiontests.templates.views.client', 'client': {'id': 1}}, '/url_tag/client/1/'),\n            'url20': ('{% url url_name_in_var client.id %}', {'url_name_in_var': 'named.client', 'client': {'id': 1}}, '/url_tag/named-client/1/'),\n\n            # Failures\n            'url-fail01': ('{% url %}', {}, template.TemplateSyntaxError),\n            'url-fail02': ('{% url \"no_such_view\" %}', {}, (urlresolvers.NoReverseMatch, urlresolvers.NoReverseMatch)),\n            'url-fail03': ('{% url \"regressiontests.templates.views.client\" %}', {}, (urlresolvers.NoReverseMatch, urlresolvers.NoReverseMatch)),\n            'url-fail04': ('{% url \"view\" id, %}', {}, template.TemplateSyntaxError),\n            'url-fail05': ('{% url \"view\" id= %}', {}, template.TemplateSyntaxError),\n            'url-fail06': ('{% url \"view\" a.id=id %}', {}, template.TemplateSyntaxError),\n            'url-fail07': ('{% url \"view\" a.id!id %}', {}, template.TemplateSyntaxError),\n            'url-fail08': ('{% url \"view\" id=\"unterminatedstring %}', {}, template.TemplateSyntaxError),\n            'url-fail09': ('{% url \"view\" id=\", %}', {}, template.TemplateSyntaxError),\n\n            'url-fail11': ('{% url named_url %}', {}, (urlresolvers.NoReverseMatch, urlresolvers.NoReverseMatch)),\n            'url-fail12': ('{% url named_url %}', {'named_url': 'no_such_view'}, (urlresolvers.NoReverseMatch, urlresolvers.NoReverseMatch)),\n            'url-fail13': ('{% url named_url %}', {'named_url': 'regressiontests.templates.views.client'}, (urlresolvers.NoReverseMatch, urlresolvers.NoReverseMatch)),\n            'url-fail14': ('{% url named_url id, %}', {'named_url': 'view'}, template.TemplateSyntaxError),\n            'url-fail15': ('{% url named_url id= %}', {'named_url': 'view'}, template.TemplateSyntaxError),\n            'url-fail16': ('{% url named_url a.id=id %}', {'named_url': 'view'}, template.TemplateSyntaxError),\n            'url-fail17': ('{% url named_url a.id!id %}', {'named_url': 'view'}, template.TemplateSyntaxError),\n            'url-fail18': ('{% url named_url id=\"unterminatedstring %}', {'named_url': 'view'}, template.TemplateSyntaxError),\n            'url-fail19': ('{% url named_url id=\", %}', {'named_url': 'view'}, template.TemplateSyntaxError),\n\n            # {% url ... as var %}\n            'url-asvar01': ('{% url \"regressiontests.templates.views.index\" as url %}', {}, ''),\n            'url-asvar02': ('{% url \"regressiontests.templates.views.index\" as url %}{{ url }}', {}, '/url_tag/'),\n            'url-asvar03': ('{% url \"no_such_view\" as url %}{{ url }}', {}, ''),\n\n            ### CACHE TAG ######################################################\n            'cache03': ('{% load cache %}{% cache 2 test %}cache03{% endcache %}', {}, 'cache03'),\n            'cache04': ('{% load cache %}{% cache 2 test %}cache04{% endcache %}', {}, 'cache03'),\n            'cache05': ('{% load cache %}{% cache 2 test foo %}cache05{% endcache %}', {'foo': 1}, 'cache05'),\n            'cache06': ('{% load cache %}{% cache 2 test foo %}cache06{% endcache %}', {'foo': 2}, 'cache06'),\n            'cache07': ('{% load cache %}{% cache 2 test foo %}cache07{% endcache %}', {'foo': 1}, 'cache05'),\n\n            # Allow first argument to be a variable.\n            'cache08': ('{% load cache %}{% cache time test foo %}cache08{% endcache %}', {'foo': 2, 'time': 2}, 'cache06'),\n\n            # Raise exception if we don't have at least 2 args, first one integer.\n            'cache11': ('{% load cache %}{% cache %}{% endcache %}', {}, template.TemplateSyntaxError),\n            'cache12': ('{% load cache %}{% cache 1 %}{% endcache %}', {}, template.TemplateSyntaxError),\n            'cache13': ('{% load cache %}{% cache foo bar %}{% endcache %}', {}, template.TemplateSyntaxError),\n            'cache14': ('{% load cache %}{% cache foo bar %}{% endcache %}', {'foo': 'fail'}, template.TemplateSyntaxError),\n            'cache15': ('{% load cache %}{% cache foo bar %}{% endcache %}', {'foo': []}, template.TemplateSyntaxError),\n\n            # Regression test for #7460.\n            'cache16': ('{% load cache %}{% cache 1 foo bar %}{% endcache %}', {'foo': 'foo', 'bar': 'with spaces'}, ''),\n\n            # Regression test for #11270.\n            'cache17': ('{% load cache %}{% cache 10 long_cache_key poem %}Some Content{% endcache %}', {'poem': 'Oh freddled gruntbuggly/Thy micturations are to me/As plurdled gabbleblotchits/On a lurgid bee/That mordiously hath bitled out/Its earted jurtles/Into a rancid festering/Or else I shall rend thee in the gobberwarts with my blurglecruncheon/See if I dont.'}, 'Some Content'),\n\n\n            ### AUTOESCAPE TAG ##############################################\n            'autoescape-tag01': (\"{% autoescape off %}hello{% endautoescape %}\", {}, \"hello\"),\n            'autoescape-tag02': (\"{% autoescape off %}{{ first }}{% endautoescape %}\", {\"first\": \"<b>hello</b>\"}, \"<b>hello</b>\"),\n            'autoescape-tag03': (\"{% autoescape on %}{{ first }}{% endautoescape %}\", {\"first\": \"<b>hello</b>\"}, \"&lt;b&gt;hello&lt;/b&gt;\"),\n\n            # Autoescape disabling and enabling nest in a predictable way.\n            'autoescape-tag04': (\"{% autoescape off %}{{ first }} {% autoescape  on%}{{ first }}{% endautoescape %}{% endautoescape %}\", {\"first\": \"<a>\"}, \"<a> &lt;a&gt;\"),\n\n            'autoescape-tag05': (\"{% autoescape on %}{{ first }}{% endautoescape %}\", {\"first\": \"<b>first</b>\"}, \"&lt;b&gt;first&lt;/b&gt;\"),\n\n            # Strings (ASCII or unicode) already marked as \"safe\" are not\n            # auto-escaped\n            'autoescape-tag06': (\"{{ first }}\", {\"first\": mark_safe(\"<b>first</b>\")}, \"<b>first</b>\"),\n            'autoescape-tag07': (\"{% autoescape on %}{{ first }}{% endautoescape %}\", {\"first\": mark_safe(\"<b>Apple</b>\")}, \"<b>Apple</b>\"),\n\n            # Literal string arguments to filters, if used in the result, are\n            # safe.\n            'autoescape-tag08': (r'{% autoescape on %}{{ var|default_if_none:\" endquote\\\" hah\" }}{% endautoescape %}', {\"var\": None}, ' endquote\" hah'),\n\n            # Objects which return safe strings as their __unicode__ method\n            # won't get double-escaped.\n            'autoescape-tag09': (r'{{ unsafe }}', {'unsafe': filters.UnsafeClass()}, 'you &amp; me'),\n            'autoescape-tag10': (r'{{ safe }}', {'safe': filters.SafeClass()}, 'you &gt; me'),\n\n            # The \"safe\" and \"escape\" filters cannot work due to internal\n            # implementation details (fortunately, the (no)autoescape block\n            # tags can be used in those cases)\n            'autoescape-filtertag01': (\"{{ first }}{% filter safe %}{{ first }} x<y{% endfilter %}\", {\"first\": \"<a>\"}, template.TemplateSyntaxError),\n\n            # ifqeual compares unescaped vales.\n            'autoescape-ifequal01': ('{% ifequal var \"this & that\" %}yes{% endifequal %}', { \"var\": \"this & that\" }, \"yes\"),\n\n            # Arguments to filters are 'safe' and manipulate their input unescaped.\n            'autoescape-filters01': ('{{ var|cut:\"&\" }}', { \"var\": \"this & that\" }, \"this  that\" ),\n            'autoescape-filters02': ('{{ var|join:\" & \\\" }}', { \"var\": (\"Tom\", \"Dick\", \"Harry\") }, \"Tom & Dick & Harry\"),\n\n            # Literal strings are safe.\n            'autoescape-literals01': ('{{ \"this & that\" }}',{}, \"this & that\"),\n\n            # Iterating over strings outputs safe characters.\n            'autoescape-stringiterations01': ('{% for l in var %}{{ l }},{% endfor %}', {'var': 'K&R'}, \"K,&amp;,R,\"),\n\n            # Escape requirement survives lookup.\n            'autoescape-lookup01': ('{{ var.key }}', { \"var\": {\"key\": \"this & that\" }}, \"this &amp; that\"),\n\n            # Static template tags\n            'static-prefixtag01': ('{% load static %}{% get_static_prefix %}', {}, settings.STATIC_URL),\n            'static-prefixtag02': ('{% load static %}{% get_static_prefix as static_prefix %}{{ static_prefix }}', {}, settings.STATIC_URL),\n            'static-prefixtag03': ('{% load static %}{% get_media_prefix %}', {}, settings.MEDIA_URL),\n            'static-prefixtag04': ('{% load static %}{% get_media_prefix as media_prefix %}{{ media_prefix }}', {}, settings.MEDIA_URL),\n            'static-statictag01': ('{% load static %}{% static \"admin/base.css\" %}', {}, urljoin(settings.STATIC_URL, 'admin/base.css')),\n            'static-statictag02': ('{% load static %}{% static base_css %}', {'base_css': 'admin/base.css'}, urljoin(settings.STATIC_URL, 'admin/base.css')),\n            'static-statictag03': ('{% load static %}{% static \"admin/base.css\" as foo %}{{ foo }}', {}, urljoin(settings.STATIC_URL, 'admin/base.css')),\n            'static-statictag04': ('{% load static %}{% static base_css as foo %}{{ foo }}', {'base_css': 'admin/base.css'}, urljoin(settings.STATIC_URL, 'admin/base.css')),\n\n            # Verbatim template tag outputs contents without rendering.\n            'verbatim-tag01': ('{% verbatim %}{{bare   }}{% endverbatim %}', {}, '{{bare   }}'),\n            'verbatim-tag02': ('{% verbatim %}{% endif %}{% endverbatim %}', {}, '{% endif %}'),\n            'verbatim-tag03': (\"{% verbatim %}It's the {% verbatim %} tag{% endverbatim %}\", {}, \"It's the {% verbatim %} tag\"),\n            'verbatim-tag04': ('{% verbatim %}{% verbatim %}{% endverbatim %}{% endverbatim %}', {}, template.TemplateSyntaxError),\n            'verbatim-tag05': ('{% verbatim %}{% endverbatim %}{% verbatim %}{% endverbatim %}', {}, ''),\n            'verbatim-tag06': (\"{% verbatim special %}Don't {% endverbatim %} just yet{% endverbatim special %}\", {}, \"Don't {% endverbatim %} just yet\"),\n        }\n\n        if numpy:\n            tests.update({\n                # Numpy's array-index syntax allows a template to access a certain item of a subscriptable object.\n                'numpy-array-index01': (\"{{ var.1 }}\", {\"var\": numpy.array([\"first item\", \"second item\"])}, \"second item\"),\n\n                # Fail silently when the array index is out of range.\n                'numpy-array-index02': (\"{{ var.5 }}\", {\"var\": numpy.array([\"first item\", \"second item\"])}, (\"\", \"INVALID\")),\n            })\n\n\n        return tests\n\nclass TemplateTagLoading(unittest.TestCase):\n\n    def setUp(self):\n        self.old_path = sys.path[:]\n        self.old_apps = settings.INSTALLED_APPS\n        self.egg_dir = '%s/eggs' % os.path.dirname(upath(__file__))\n        self.old_tag_modules = template_base.templatetags_modules\n        template_base.templatetags_modules = []\n\n    def tearDown(self):\n        settings.INSTALLED_APPS = self.old_apps\n        sys.path = self.old_path\n        template_base.templatetags_modules = self.old_tag_modules\n\n    def test_load_error(self):\n        ttext = \"{% load broken_tag %}\"\n        self.assertRaises(template.TemplateSyntaxError, template.Template, ttext)\n        try:\n            template.Template(ttext)\n        except template.TemplateSyntaxError as e:\n            self.assertTrue('ImportError' in e.args[0])\n            self.assertTrue('Xtemplate' in e.args[0])\n\n    def test_load_error_egg(self):\n        ttext = \"{% load broken_egg %}\"\n        egg_name = '%s/tagsegg.egg' % self.egg_dir\n        sys.path.append(egg_name)\n        settings.INSTALLED_APPS = ('tagsegg',)\n        self.assertRaises(template.TemplateSyntaxError, template.Template, ttext)\n        try:\n            template.Template(ttext)\n        except template.TemplateSyntaxError as e:\n            self.assertTrue('ImportError' in e.args[0])\n            self.assertTrue('Xtemplate' in e.args[0])\n\n    def test_load_working_egg(self):\n        ttext = \"{% load working_egg %}\"\n        egg_name = '%s/tagsegg.egg' % self.egg_dir\n        sys.path.append(egg_name)\n        settings.INSTALLED_APPS = ('tagsegg',)\n        t = template.Template(ttext)\n\n\nclass RequestContextTests(unittest.TestCase):\n\n    def setUp(self):\n        templates = {\n            'child': Template('{{ var|default:\"none\" }}'),\n        }\n        setup_test_template_loader(templates)\n        self.fake_request = RequestFactory().get('/')\n\n    def tearDown(self):\n        restore_template_loaders()\n\n    def test_include_only(self):\n        \"\"\"\n        Regression test for #15721, ``{% include %}`` and ``RequestContext``\n        not playing together nicely.\n        \"\"\"\n        ctx = RequestContext(self.fake_request, {'var': 'parent'})\n        self.assertEqual(\n            template.Template('{% include \"child\" %}').render(ctx),\n            'parent'\n        )\n        self.assertEqual(\n            template.Template('{% include \"child\" only %}').render(ctx),\n            'none'\n        )\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/templates/unicode.py",
    "content": "# -*- coding: utf-8 -*-\nfrom __future__ import unicode_literals\n\nfrom django.template import Template, TemplateEncodingError, Context\nfrom django.utils.safestring import SafeData\nfrom django.utils import six\nfrom django.utils.unittest import TestCase\n\n\nclass UnicodeTests(TestCase):\n    def test_template(self):\n        # Templates can be created from unicode strings.\n        t1 = Template('ŠĐĆŽćžšđ {{ var }}')\n        # Templates can also be created from bytestrings. These are assumed to\n        # be encoded using UTF-8.\n        s = b'\\xc5\\xa0\\xc4\\x90\\xc4\\x86\\xc5\\xbd\\xc4\\x87\\xc5\\xbe\\xc5\\xa1\\xc4\\x91 {{ var }}'\n        t2 = Template(s)\n        s = b'\\x80\\xc5\\xc0'\n        self.assertRaises(TemplateEncodingError, Template, s)\n\n        # Contexts can be constructed from unicode or UTF-8 bytestrings.\n        c1 = Context({b\"var\": b\"foo\"})\n        c2 = Context({\"var\": b\"foo\"})\n        c3 = Context({b\"var\": \"Đđ\"})\n        c4 = Context({\"var\": b\"\\xc4\\x90\\xc4\\x91\"})\n\n        # Since both templates and all four contexts represent the same thing,\n        # they all render the same (and are returned as unicode objects and\n        # \"safe\" objects as well, for auto-escaping purposes).\n        self.assertEqual(t1.render(c3), t2.render(c3))\n        self.assertIsInstance(t1.render(c3), six.text_type)\n        self.assertIsInstance(t1.render(c3), SafeData)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/templates/urls.py",
    "content": "# coding: utf-8\nfrom __future__ import absolute_import, unicode_literals\n\nfrom django.conf.urls import patterns, url\nfrom . import views\n\n\nurlpatterns = patterns('',\n\n    # Test urls for testing reverse lookups\n    (r'^$', views.index),\n    (r'^client/([\\d,]+)/$', views.client),\n    (r'^client/(?P<id>\\d+)/(?P<action>[^/]+)/$', views.client_action),\n    (r'^client/(?P<client_id>\\d+)/(?P<action>[^/]+)/$', views.client_action),\n    url(r'^named-client/(\\d+)/$', views.client2, name=\"named.client\"),\n\n    # Unicode strings are permitted everywhere.\n    url(r'^Юникод/(\\w+)/$', views.client2, name=\"метка_оператора\"),\n    url(r'^Юникод/(?P<tag>\\S+)/$', 'regressiontests.templates.views.client2', name=\"метка_оператора_2\"),\n)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/templates/views.py",
    "content": "# Fake views for testing url reverse lookup\nfrom django.http import HttpResponse\nfrom django.template.response import TemplateResponse\n\n\ndef index(request):\n    pass\n\ndef client(request, id):\n    pass\n\ndef client_action(request, id, action):\n    pass\n\ndef client2(request, tag):\n    pass\n\ndef template_response_view(request):\n    return TemplateResponse(request, 'response.html', {})\n\ndef snark(request):\n    return HttpResponse('Found him!')\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/test_client_regress/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/test_client_regress/bad_templates/404.html",
    "content": "{% block foo %}\n\nThis template is deliberately bad - we want it to raise an exception when it is used.\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/test_client_regress/fixtures/testdata.json",
    "content": "[\n    {\n        \"pk\": \"1\", \n        \"model\": \"auth.user\", \n        \"fields\": {\n            \"username\": \"testclient\", \n            \"first_name\": \"Test\", \n            \"last_name\": \"Client\", \n            \"is_active\": true, \n            \"is_superuser\": false, \n            \"is_staff\": false, \n            \"last_login\": \"2006-12-17 07:03:31\", \n            \"groups\": [], \n            \"user_permissions\": [], \n            \"password\": \"sha1$6efc0$f93efe9fd7542f25a7be94871ea45aa95de57161\", \n            \"email\": \"testclient@example.com\", \n            \"date_joined\": \"2006-12-17 07:03:31\"\n        }\n    },\n    {\n        \"pk\": \"2\", \n        \"model\": \"auth.user\", \n        \"fields\": {\n            \"username\": \"inactive\", \n            \"first_name\": \"Inactive\", \n            \"last_name\": \"User\", \n            \"is_active\": false, \n            \"is_superuser\": false, \n            \"is_staff\": false, \n            \"last_login\": \"2006-12-17 07:03:31\", \n            \"groups\": [], \n            \"user_permissions\": [], \n            \"password\": \"sha1$6efc0$f93efe9fd7542f25a7be94871ea45aa95de57161\", \n            \"email\": \"testclient@example.com\", \n            \"date_joined\": \"2006-12-17 07:03:31\"\n        }\n    },\n    {\n        \"pk\": \"3\", \n        \"model\": \"auth.user\", \n        \"fields\": {\n            \"username\": \"staff\", \n            \"first_name\": \"Staff\", \n            \"last_name\": \"Member\", \n            \"is_active\": true, \n            \"is_superuser\": false, \n            \"is_staff\": true, \n            \"last_login\": \"2006-12-17 07:03:31\", \n            \"groups\": [], \n            \"user_permissions\": [], \n            \"password\": \"sha1$6efc0$f93efe9fd7542f25a7be94871ea45aa95de57161\", \n            \"email\": \"testclient@example.com\", \n            \"date_joined\": \"2006-12-17 07:03:31\"\n        }\n    }\n]"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/test_client_regress/models.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/test_client_regress/session.py",
    "content": "from django.contrib.sessions.backends.base import SessionBase\n\nclass SessionStore(SessionBase):\n    \"\"\"\n    A simple cookie-based session storage implementation.\n\n    The session key is actually the session data, pickled and encoded.\n    This means that saving the session will change the session key.\n    \"\"\"\n    def __init__(self, session_key=None):\n        super(SessionStore, self).__init__(session_key)\n\n    def exists(self, session_key):\n        return False\n\n    def create(self):\n        self._session_key = self.encode({})\n\n    def save(self, must_create=False):\n        self._session_key = self.encode(self._session)\n\n    def delete(self, session_key=None):\n        self._session_key = self.encode({})\n\n    def load(self):\n        try:\n            return self.decode(self.session_key)\n        except:\n            self.modified = True\n            return {}\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/test_client_regress/templates/request_context.html",
    "content": "Path: {{ path }}\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/test_client_regress/templates/unicode.html",
    "content": "* 峠 (とうげ tōge \"mountain pass\")\n* 榊 (さかき sakaki \"tree, genus Cleyera\")\n* 辻 (つじ tsuji \"crossroads, street\")\n* 働 (どう dō, はたら hatara(ku) \"work\")\n* 腺 (せん sen, \"gland\")\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/test_client_regress/tests.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nRegression tests for the Test Client, especially the customized assertions.\n\"\"\"\nfrom __future__ import unicode_literals\n\nimport os\n\nfrom django.conf import settings\nfrom django.core.exceptions import SuspiciousOperation\nfrom django.core.urlresolvers import reverse\nfrom django.template import (TemplateDoesNotExist, TemplateSyntaxError,\n    Context, Template, loader)\nimport django.template.context\nfrom django.test import Client, TestCase\nfrom django.test.client import encode_file, RequestFactory\nfrom django.test.utils import ContextList, override_settings, str_prefix\nfrom django.template.response import SimpleTemplateResponse\nfrom django.utils._os import upath\nfrom django.utils.translation import ugettext_lazy\nfrom django.http import HttpResponse\n\n\n@override_settings(\n    TEMPLATE_DIRS=(os.path.join(os.path.dirname(upath(__file__)), 'templates'),)\n)\nclass AssertContainsTests(TestCase):\n    def test_contains(self):\n        \"Responses can be inspected for content, including counting repeated substrings\"\n        response = self.client.get('/test_client_regress/no_template_view/')\n\n        self.assertNotContains(response, 'never')\n        self.assertContains(response, 'never', 0)\n        self.assertContains(response, 'once')\n        self.assertContains(response, 'once', 1)\n        self.assertContains(response, 'twice')\n        self.assertContains(response, 'twice', 2)\n\n        try:\n            self.assertContains(response, 'text', status_code=999)\n        except AssertionError as e:\n            self.assertIn(\"Couldn't retrieve content: Response code was 200 (expected 999)\", str(e))\n        try:\n            self.assertContains(response, 'text', status_code=999, msg_prefix='abc')\n        except AssertionError as e:\n            self.assertIn(\"abc: Couldn't retrieve content: Response code was 200 (expected 999)\", str(e))\n\n        try:\n            self.assertNotContains(response, 'text', status_code=999)\n        except AssertionError as e:\n            self.assertIn(\"Couldn't retrieve content: Response code was 200 (expected 999)\", str(e))\n        try:\n            self.assertNotContains(response, 'text', status_code=999, msg_prefix='abc')\n        except AssertionError as e:\n            self.assertIn(\"abc: Couldn't retrieve content: Response code was 200 (expected 999)\", str(e))\n\n        try:\n            self.assertNotContains(response, 'once')\n        except AssertionError as e:\n            self.assertIn(\"Response should not contain 'once'\", str(e))\n        try:\n            self.assertNotContains(response, 'once', msg_prefix='abc')\n        except AssertionError as e:\n            self.assertIn(\"abc: Response should not contain 'once'\", str(e))\n\n        try:\n            self.assertContains(response, 'never', 1)\n        except AssertionError as e:\n            self.assertIn(\"Found 0 instances of 'never' in response (expected 1)\", str(e))\n        try:\n            self.assertContains(response, 'never', 1, msg_prefix='abc')\n        except AssertionError as e:\n            self.assertIn(\"abc: Found 0 instances of 'never' in response (expected 1)\", str(e))\n\n        try:\n            self.assertContains(response, 'once', 0)\n        except AssertionError as e:\n            self.assertIn(\"Found 1 instances of 'once' in response (expected 0)\", str(e))\n        try:\n            self.assertContains(response, 'once', 0, msg_prefix='abc')\n        except AssertionError as e:\n            self.assertIn(\"abc: Found 1 instances of 'once' in response (expected 0)\", str(e))\n\n        try:\n            self.assertContains(response, 'once', 2)\n        except AssertionError as e:\n            self.assertIn(\"Found 1 instances of 'once' in response (expected 2)\", str(e))\n        try:\n            self.assertContains(response, 'once', 2, msg_prefix='abc')\n        except AssertionError as e:\n            self.assertIn(\"abc: Found 1 instances of 'once' in response (expected 2)\", str(e))\n\n        try:\n            self.assertContains(response, 'twice', 1)\n        except AssertionError as e:\n            self.assertIn(\"Found 2 instances of 'twice' in response (expected 1)\", str(e))\n        try:\n            self.assertContains(response, 'twice', 1, msg_prefix='abc')\n        except AssertionError as e:\n            self.assertIn(\"abc: Found 2 instances of 'twice' in response (expected 1)\", str(e))\n\n        try:\n            self.assertContains(response, 'thrice')\n        except AssertionError as e:\n            self.assertIn(\"Couldn't find 'thrice' in response\", str(e))\n        try:\n            self.assertContains(response, 'thrice', msg_prefix='abc')\n        except AssertionError as e:\n            self.assertIn(\"abc: Couldn't find 'thrice' in response\", str(e))\n\n        try:\n            self.assertContains(response, 'thrice', 3)\n        except AssertionError as e:\n            self.assertIn(\"Found 0 instances of 'thrice' in response (expected 3)\", str(e))\n        try:\n            self.assertContains(response, 'thrice', 3, msg_prefix='abc')\n        except AssertionError as e:\n            self.assertIn(\"abc: Found 0 instances of 'thrice' in response (expected 3)\", str(e))\n\n    def test_unicode_contains(self):\n        \"Unicode characters can be found in template context\"\n        #Regression test for #10183\n        r = self.client.get('/test_client_regress/check_unicode/')\n        self.assertContains(r, 'さかき')\n        self.assertContains(r, b'\\xe5\\xb3\\xa0'.decode('utf-8'))\n\n    def test_unicode_not_contains(self):\n        \"Unicode characters can be searched for, and not found in template context\"\n        #Regression test for #10183\n        r = self.client.get('/test_client_regress/check_unicode/')\n        self.assertNotContains(r, 'はたけ')\n        self.assertNotContains(r, b'\\xe3\\x81\\xaf\\xe3\\x81\\x9f\\xe3\\x81\\x91'.decode('utf-8'))\n\n    def test_nontext_contains(self):\n        r = self.client.get('/test_client_regress/no_template_view/')\n        self.assertContains(r, ugettext_lazy('once'))\n\n    def test_nontext_not_contains(self):\n        r = self.client.get('/test_client_regress/no_template_view/')\n        self.assertNotContains(r, ugettext_lazy('never'))\n\n    def test_assert_contains_renders_template_response(self):\n        \"\"\" Test that we can pass in an unrendered SimpleTemplateReponse\n            without throwing an error.\n            Refs #15826.\n        \"\"\"\n        response = SimpleTemplateResponse(Template('Hello'), status=200)\n        self.assertContains(response, 'Hello')\n\n    def test_assert_contains_using_non_template_response(self):\n        \"\"\" Test that auto-rendering does not affect responses that aren't\n            instances (or subclasses) of SimpleTemplateResponse.\n            Refs #15826.\n        \"\"\"\n        response = HttpResponse('Hello')\n        self.assertContains(response, 'Hello')\n\n    def test_assert_not_contains_renders_template_response(self):\n        \"\"\" Test that we can pass in an unrendered SimpleTemplateReponse\n            without throwing an error.\n            Refs #15826.\n        \"\"\"\n        response = SimpleTemplateResponse(Template('Hello'), status=200)\n        self.assertNotContains(response, 'Bye')\n\n    def test_assert_not_contains_using_non_template_response(self):\n        \"\"\" Test that auto-rendering does not affect responses that aren't\n            instances (or subclasses) of SimpleTemplateResponse.\n            Refs #15826.\n        \"\"\"\n        response = HttpResponse('Hello')\n        self.assertNotContains(response, 'Bye')\n\n@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))\nclass AssertTemplateUsedTests(TestCase):\n    fixtures = ['testdata.json']\n\n    def test_no_context(self):\n        \"Template usage assertions work then templates aren't in use\"\n        response = self.client.get('/test_client_regress/no_template_view/')\n\n        # Check that the no template case doesn't mess with the template assertions\n        self.assertTemplateNotUsed(response, 'GET Template')\n\n        try:\n            self.assertTemplateUsed(response, 'GET Template')\n        except AssertionError as e:\n            self.assertIn(\"No templates used to render the response\", str(e))\n\n        try:\n            self.assertTemplateUsed(response, 'GET Template', msg_prefix='abc')\n        except AssertionError as e:\n            self.assertIn(\"abc: No templates used to render the response\", str(e))\n\n    def test_single_context(self):\n        \"Template assertions work when there is a single context\"\n        response = self.client.get('/test_client/post_view/', {})\n\n        try:\n            self.assertTemplateNotUsed(response, 'Empty GET Template')\n        except AssertionError as e:\n            self.assertIn(\"Template 'Empty GET Template' was used unexpectedly in rendering the response\", str(e))\n\n        try:\n            self.assertTemplateNotUsed(response, 'Empty GET Template', msg_prefix='abc')\n        except AssertionError as e:\n            self.assertIn(\"abc: Template 'Empty GET Template' was used unexpectedly in rendering the response\", str(e))\n\n        try:\n            self.assertTemplateUsed(response, 'Empty POST Template')\n        except AssertionError as e:\n            self.assertIn(\"Template 'Empty POST Template' was not a template used to render the response. Actual template(s) used: Empty GET Template\", str(e))\n\n        try:\n            self.assertTemplateUsed(response, 'Empty POST Template', msg_prefix='abc')\n        except AssertionError as e:\n            self.assertIn(\"abc: Template 'Empty POST Template' was not a template used to render the response. Actual template(s) used: Empty GET Template\", str(e))\n\n    def test_multiple_context(self):\n        \"Template assertions work when there are multiple contexts\"\n        post_data = {\n            'text': 'Hello World',\n            'email': 'foo@example.com',\n            'value': 37,\n            'single': 'b',\n            'multi': ('b','c','e')\n        }\n        response = self.client.post('/test_client/form_view_with_template/', post_data)\n        self.assertContains(response, 'POST data OK')\n        try:\n            self.assertTemplateNotUsed(response, \"form_view.html\")\n        except AssertionError as e:\n            self.assertIn(\"Template 'form_view.html' was used unexpectedly in rendering the response\", str(e))\n\n        try:\n            self.assertTemplateNotUsed(response, 'base.html')\n        except AssertionError as e:\n            self.assertIn(\"Template 'base.html' was used unexpectedly in rendering the response\", str(e))\n\n        try:\n            self.assertTemplateUsed(response, \"Valid POST Template\")\n        except AssertionError as e:\n            self.assertIn(\"Template 'Valid POST Template' was not a template used to render the response. Actual template(s) used: form_view.html, base.html\", str(e))\n\nclass AssertRedirectsTests(TestCase):\n    def test_redirect_page(self):\n        \"An assertion is raised if the original page couldn't be retrieved as expected\"\n        # This page will redirect with code 301, not 302\n        response = self.client.get('/test_client/permanent_redirect_view/')\n        try:\n            self.assertRedirects(response, '/test_client/get_view/')\n        except AssertionError as e:\n            self.assertIn(\"Response didn't redirect as expected: Response code was 301 (expected 302)\", str(e))\n\n        try:\n            self.assertRedirects(response, '/test_client/get_view/', msg_prefix='abc')\n        except AssertionError as e:\n            self.assertIn(\"abc: Response didn't redirect as expected: Response code was 301 (expected 302)\", str(e))\n\n    def test_lost_query(self):\n        \"An assertion is raised if the redirect location doesn't preserve GET parameters\"\n        response = self.client.get('/test_client/redirect_view/', {'var': 'value'})\n        try:\n            self.assertRedirects(response, '/test_client/get_view/')\n        except AssertionError as e:\n            self.assertIn(\"Response redirected to 'http://testserver/test_client/get_view/?var=value', expected 'http://testserver/test_client/get_view/'\", str(e))\n\n        try:\n            self.assertRedirects(response, '/test_client/get_view/', msg_prefix='abc')\n        except AssertionError as e:\n            self.assertIn(\"abc: Response redirected to 'http://testserver/test_client/get_view/?var=value', expected 'http://testserver/test_client/get_view/'\", str(e))\n\n    def test_incorrect_target(self):\n        \"An assertion is raised if the response redirects to another target\"\n        response = self.client.get('/test_client/permanent_redirect_view/')\n        try:\n            # Should redirect to get_view\n            self.assertRedirects(response, '/test_client/some_view/')\n        except AssertionError as e:\n            self.assertIn(\"Response didn't redirect as expected: Response code was 301 (expected 302)\", str(e))\n\n    def test_target_page(self):\n        \"An assertion is raised if the response redirect target cannot be retrieved as expected\"\n        response = self.client.get('/test_client/double_redirect_view/')\n        try:\n            # The redirect target responds with a 301 code, not 200\n            self.assertRedirects(response, 'http://testserver/test_client/permanent_redirect_view/')\n        except AssertionError as e:\n            self.assertIn(\"Couldn't retrieve redirection page '/test_client/permanent_redirect_view/': response code was 301 (expected 200)\", str(e))\n\n        try:\n            # The redirect target responds with a 301 code, not 200\n            self.assertRedirects(response, 'http://testserver/test_client/permanent_redirect_view/', msg_prefix='abc')\n        except AssertionError as e:\n            self.assertIn(\"abc: Couldn't retrieve redirection page '/test_client/permanent_redirect_view/': response code was 301 (expected 200)\", str(e))\n\n    def test_redirect_chain(self):\n        \"You can follow a redirect chain of multiple redirects\"\n        response = self.client.get('/test_client_regress/redirects/further/more/', {}, follow=True)\n        self.assertRedirects(response, '/test_client_regress/no_template_view/',\n            status_code=301, target_status_code=200)\n\n        self.assertEqual(len(response.redirect_chain), 1)\n        self.assertEqual(response.redirect_chain[0], ('http://testserver/test_client_regress/no_template_view/', 301))\n\n    def test_multiple_redirect_chain(self):\n        \"You can follow a redirect chain of multiple redirects\"\n        response = self.client.get('/test_client_regress/redirects/', {}, follow=True)\n        self.assertRedirects(response, '/test_client_regress/no_template_view/',\n            status_code=301, target_status_code=200)\n\n        self.assertEqual(len(response.redirect_chain), 3)\n        self.assertEqual(response.redirect_chain[0], ('http://testserver/test_client_regress/redirects/further/', 301))\n        self.assertEqual(response.redirect_chain[1], ('http://testserver/test_client_regress/redirects/further/more/', 301))\n        self.assertEqual(response.redirect_chain[2], ('http://testserver/test_client_regress/no_template_view/', 301))\n\n    def test_redirect_chain_to_non_existent(self):\n        \"You can follow a chain to a non-existent view\"\n        response = self.client.get('/test_client_regress/redirect_to_non_existent_view2/', {}, follow=True)\n        self.assertRedirects(response, '/test_client_regress/non_existent_view/',\n            status_code=301, target_status_code=404)\n\n    def test_redirect_chain_to_self(self):\n        \"Redirections to self are caught and escaped\"\n        response = self.client.get('/test_client_regress/redirect_to_self/', {}, follow=True)\n        # The chain of redirects stops once the cycle is detected.\n        self.assertRedirects(response, '/test_client_regress/redirect_to_self/',\n            status_code=301, target_status_code=301)\n        self.assertEqual(len(response.redirect_chain), 2)\n\n    def test_circular_redirect(self):\n        \"Circular redirect chains are caught and escaped\"\n        response = self.client.get('/test_client_regress/circular_redirect_1/', {}, follow=True)\n        # The chain of redirects will get back to the starting point, but stop there.\n        self.assertRedirects(response, '/test_client_regress/circular_redirect_2/',\n            status_code=301, target_status_code=301)\n        self.assertEqual(len(response.redirect_chain), 4)\n\n    def test_redirect_chain_post(self):\n        \"A redirect chain will be followed from an initial POST post\"\n        response = self.client.post('/test_client_regress/redirects/',\n            {'nothing': 'to_send'}, follow=True)\n        self.assertRedirects(response,\n            '/test_client_regress/no_template_view/', 301, 200)\n        self.assertEqual(len(response.redirect_chain), 3)\n\n    def test_redirect_chain_head(self):\n        \"A redirect chain will be followed from an initial HEAD request\"\n        response = self.client.head('/test_client_regress/redirects/',\n            {'nothing': 'to_send'}, follow=True)\n        self.assertRedirects(response,\n            '/test_client_regress/no_template_view/', 301, 200)\n        self.assertEqual(len(response.redirect_chain), 3)\n\n    def test_redirect_chain_options(self):\n        \"A redirect chain will be followed from an initial OPTIONS request\"\n        response = self.client.options('/test_client_regress/redirects/',\n            follow=True)\n        self.assertRedirects(response,\n            '/test_client_regress/no_template_view/', 301, 200)\n        self.assertEqual(len(response.redirect_chain), 3)\n\n    def test_redirect_chain_put(self):\n        \"A redirect chain will be followed from an initial PUT request\"\n        response = self.client.put('/test_client_regress/redirects/',\n            follow=True)\n        self.assertRedirects(response,\n            '/test_client_regress/no_template_view/', 301, 200)\n        self.assertEqual(len(response.redirect_chain), 3)\n\n    def test_redirect_chain_delete(self):\n        \"A redirect chain will be followed from an initial DELETE request\"\n        response = self.client.delete('/test_client_regress/redirects/',\n            follow=True)\n        self.assertRedirects(response,\n            '/test_client_regress/no_template_view/', 301, 200)\n        self.assertEqual(len(response.redirect_chain), 3)\n\n    def test_redirect_to_different_host(self):\n        \"The test client will preserve scheme, host and port changes\"\n        response = self.client.get('/test_client_regress/redirect_other_host/', follow=True)\n        self.assertRedirects(response,\n            'https://otherserver:8443/test_client_regress/no_template_view/',\n            status_code=301, target_status_code=200)\n        # We can't use is_secure() or get_host()\n        # because response.request is a dictionary, not an HttpRequest\n        self.assertEqual(response.request.get('wsgi.url_scheme'), 'https')\n        self.assertEqual(response.request.get('SERVER_NAME'), 'otherserver')\n        self.assertEqual(response.request.get('SERVER_PORT'), '8443')\n\n    def test_redirect_chain_on_non_redirect_page(self):\n        \"An assertion is raised if the original page couldn't be retrieved as expected\"\n        # This page will redirect with code 301, not 302\n        response = self.client.get('/test_client/get_view/', follow=True)\n        try:\n            self.assertRedirects(response, '/test_client/get_view/')\n        except AssertionError as e:\n            self.assertIn(\"Response didn't redirect as expected: Response code was 200 (expected 302)\", str(e))\n\n        try:\n            self.assertRedirects(response, '/test_client/get_view/', msg_prefix='abc')\n        except AssertionError as e:\n            self.assertIn(\"abc: Response didn't redirect as expected: Response code was 200 (expected 302)\", str(e))\n\n    def test_redirect_on_non_redirect_page(self):\n        \"An assertion is raised if the original page couldn't be retrieved as expected\"\n        # This page will redirect with code 301, not 302\n        response = self.client.get('/test_client/get_view/')\n        try:\n            self.assertRedirects(response, '/test_client/get_view/')\n        except AssertionError as e:\n            self.assertIn(\"Response didn't redirect as expected: Response code was 200 (expected 302)\", str(e))\n\n        try:\n            self.assertRedirects(response, '/test_client/get_view/', msg_prefix='abc')\n        except AssertionError as e:\n            self.assertIn(\"abc: Response didn't redirect as expected: Response code was 200 (expected 302)\", str(e))\n\n\nclass AssertFormErrorTests(TestCase):\n    def test_unknown_form(self):\n        \"An assertion is raised if the form name is unknown\"\n        post_data = {\n            'text': 'Hello World',\n            'email': 'not an email address',\n            'value': 37,\n            'single': 'b',\n            'multi': ('b','c','e')\n        }\n        response = self.client.post('/test_client/form_view/', post_data)\n        self.assertEqual(response.status_code, 200)\n        self.assertTemplateUsed(response, \"Invalid POST Template\")\n\n        try:\n            self.assertFormError(response, 'wrong_form', 'some_field', 'Some error.')\n        except AssertionError as e:\n            self.assertIn(\"The form 'wrong_form' was not used to render the response\", str(e))\n        try:\n            self.assertFormError(response, 'wrong_form', 'some_field', 'Some error.', msg_prefix='abc')\n        except AssertionError as e:\n            self.assertIn(\"abc: The form 'wrong_form' was not used to render the response\", str(e))\n\n    def test_unknown_field(self):\n        \"An assertion is raised if the field name is unknown\"\n        post_data = {\n            'text': 'Hello World',\n            'email': 'not an email address',\n            'value': 37,\n            'single': 'b',\n            'multi': ('b','c','e')\n        }\n        response = self.client.post('/test_client/form_view/', post_data)\n        self.assertEqual(response.status_code, 200)\n        self.assertTemplateUsed(response, \"Invalid POST Template\")\n\n        try:\n            self.assertFormError(response, 'form', 'some_field', 'Some error.')\n        except AssertionError as e:\n            self.assertIn(\"The form 'form' in context 0 does not contain the field 'some_field'\", str(e))\n        try:\n            self.assertFormError(response, 'form', 'some_field', 'Some error.', msg_prefix='abc')\n        except AssertionError as e:\n            self.assertIn(\"abc: The form 'form' in context 0 does not contain the field 'some_field'\", str(e))\n\n    def test_noerror_field(self):\n        \"An assertion is raised if the field doesn't have any errors\"\n        post_data = {\n            'text': 'Hello World',\n            'email': 'not an email address',\n            'value': 37,\n            'single': 'b',\n            'multi': ('b','c','e')\n        }\n        response = self.client.post('/test_client/form_view/', post_data)\n        self.assertEqual(response.status_code, 200)\n        self.assertTemplateUsed(response, \"Invalid POST Template\")\n\n        try:\n            self.assertFormError(response, 'form', 'value', 'Some error.')\n        except AssertionError as e:\n            self.assertIn(\"The field 'value' on form 'form' in context 0 contains no errors\", str(e))\n        try:\n            self.assertFormError(response, 'form', 'value', 'Some error.', msg_prefix='abc')\n        except AssertionError as e:\n            self.assertIn(\"abc: The field 'value' on form 'form' in context 0 contains no errors\", str(e))\n\n    def test_unknown_error(self):\n        \"An assertion is raised if the field doesn't contain the provided error\"\n        post_data = {\n            'text': 'Hello World',\n            'email': 'not an email address',\n            'value': 37,\n            'single': 'b',\n            'multi': ('b','c','e')\n        }\n        response = self.client.post('/test_client/form_view/', post_data)\n        self.assertEqual(response.status_code, 200)\n        self.assertTemplateUsed(response, \"Invalid POST Template\")\n\n        try:\n            self.assertFormError(response, 'form', 'email', 'Some error.')\n        except AssertionError as e:\n            self.assertIn(str_prefix(\"The field 'email' on form 'form' in context 0 does not contain the error 'Some error.' (actual errors: [%(_)s'Enter a valid email address.'])\"), str(e))\n        try:\n            self.assertFormError(response, 'form', 'email', 'Some error.', msg_prefix='abc')\n        except AssertionError as e:\n            self.assertIn(str_prefix(\"abc: The field 'email' on form 'form' in context 0 does not contain the error 'Some error.' (actual errors: [%(_)s'Enter a valid email address.'])\"), str(e))\n\n    def test_unknown_nonfield_error(self):\n        \"\"\"\n        Checks that an assertion is raised if the form's non field errors\n        doesn't contain the provided error.\n        \"\"\"\n        post_data = {\n            'text': 'Hello World',\n            'email': 'not an email address',\n            'value': 37,\n            'single': 'b',\n            'multi': ('b','c','e')\n        }\n        response = self.client.post('/test_client/form_view/', post_data)\n        self.assertEqual(response.status_code, 200)\n        self.assertTemplateUsed(response, \"Invalid POST Template\")\n\n        try:\n            self.assertFormError(response, 'form', None, 'Some error.')\n        except AssertionError as e:\n            self.assertIn(\"The form 'form' in context 0 does not contain the non-field error 'Some error.' (actual errors: )\", str(e))\n        try:\n            self.assertFormError(response, 'form', None, 'Some error.', msg_prefix='abc')\n        except AssertionError as e:\n            self.assertIn(\"abc: The form 'form' in context 0 does not contain the non-field error 'Some error.' (actual errors: )\", str(e))\n\n@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))\nclass LoginTests(TestCase):\n    fixtures = ['testdata']\n\n    def test_login_different_client(self):\n        \"Check that using a different test client doesn't violate authentication\"\n\n        # Create a second client, and log in.\n        c = Client()\n        login = c.login(username='testclient', password='password')\n        self.assertTrue(login, 'Could not log in')\n\n        # Get a redirection page with the second client.\n        response = c.get(\"/test_client_regress/login_protected_redirect_view/\")\n\n        # At this points, the self.client isn't logged in.\n        # Check that assertRedirects uses the original client, not the\n        # default client.\n        self.assertRedirects(response, \"http://testserver/test_client_regress/get_view/\")\n\n\n@override_settings(\n    PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',),\n    SESSION_ENGINE='regressiontests.test_client_regress.session'\n)\nclass SessionEngineTests(TestCase):\n    fixtures = ['testdata']\n\n    def test_login(self):\n        \"A session engine that modifies the session key can be used to log in\"\n        login = self.client.login(username='testclient', password='password')\n        self.assertTrue(login, 'Could not log in')\n\n        # Try to access a login protected page.\n        response = self.client.get(\"/test_client/login_protected_view/\")\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.context['user'].username, 'testclient')\n\n\nclass URLEscapingTests(TestCase):\n    def test_simple_argument_get(self):\n        \"Get a view that has a simple string argument\"\n        response = self.client.get(reverse('arg_view', args=['Slartibartfast']))\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.content, b'Howdy, Slartibartfast')\n\n    def test_argument_with_space_get(self):\n        \"Get a view that has a string argument that requires escaping\"\n        response = self.client.get(reverse('arg_view', args=['Arthur Dent']))\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.content, b'Hi, Arthur')\n\n    def test_simple_argument_post(self):\n        \"Post for a view that has a simple string argument\"\n        response = self.client.post(reverse('arg_view', args=['Slartibartfast']))\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.content, b'Howdy, Slartibartfast')\n\n    def test_argument_with_space_post(self):\n        \"Post for a view that has a string argument that requires escaping\"\n        response = self.client.post(reverse('arg_view', args=['Arthur Dent']))\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.content, b'Hi, Arthur')\n\n@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))\nclass ExceptionTests(TestCase):\n    fixtures = ['testdata.json']\n\n    def test_exception_cleared(self):\n        \"#5836 - A stale user exception isn't re-raised by the test client.\"\n\n        login = self.client.login(username='testclient',password='password')\n        self.assertTrue(login, 'Could not log in')\n        try:\n            response = self.client.get(\"/test_client_regress/staff_only/\")\n            self.fail(\"General users should not be able to visit this page\")\n        except SuspiciousOperation:\n            pass\n\n        # At this point, an exception has been raised, and should be cleared.\n\n        # This next operation should be successful; if it isn't we have a problem.\n        login = self.client.login(username='staff', password='password')\n        self.assertTrue(login, 'Could not log in')\n        try:\n            self.client.get(\"/test_client_regress/staff_only/\")\n        except SuspiciousOperation:\n            self.fail(\"Staff should be able to visit this page\")\n\n\nclass TemplateExceptionTests(TestCase):\n    def setUp(self):\n        # Reset the loaders so they don't try to render cached templates.\n        if loader.template_source_loaders is not None:\n            for template_loader in loader.template_source_loaders:\n                if hasattr(template_loader, 'reset'):\n                    template_loader.reset()\n\n    @override_settings(\n        TEMPLATE_DIRS=(os.path.join(os.path.dirname(upath(__file__)), 'bad_templates'),)\n    )\n    def test_bad_404_template(self):\n        \"Errors found when rendering 404 error templates are re-raised\"\n        try:\n            response = self.client.get(\"/no_such_view/\")\n            self.fail(\"Should get error about syntax error in template\")\n        except TemplateSyntaxError:\n            pass\n\n# We need two different tests to check URLconf substitution -  one to check\n# it was changed, and another one (without self.urls) to check it was reverted on\n# teardown. This pair of tests relies upon the alphabetical ordering of test execution.\nclass UrlconfSubstitutionTests(TestCase):\n    urls = 'regressiontests.test_client_regress.urls'\n\n    def test_urlconf_was_changed(self):\n        \"TestCase can enforce a custom URLconf on a per-test basis\"\n        url = reverse('arg_view', args=['somename'])\n        self.assertEqual(url, '/arg_view/somename/')\n\n# This test needs to run *after* UrlconfSubstitutionTests; the zz prefix in the\n# name is to ensure alphabetical ordering.\nclass zzUrlconfSubstitutionTests(TestCase):\n    def test_urlconf_was_reverted(self):\n        \"URLconf is reverted to original value after modification in a TestCase\"\n        url = reverse('arg_view', args=['somename'])\n        self.assertEqual(url, '/test_client_regress/arg_view/somename/')\n\n@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))\nclass ContextTests(TestCase):\n    fixtures = ['testdata']\n\n    def test_single_context(self):\n        \"Context variables can be retrieved from a single context\"\n        response = self.client.get(\"/test_client_regress/request_data/\", data={'foo':'whiz'})\n        self.assertEqual(response.context.__class__, Context)\n        self.assertTrue('get-foo' in response.context)\n        self.assertEqual(response.context['get-foo'], 'whiz')\n        self.assertEqual(response.context['request-foo'], 'whiz')\n        self.assertEqual(response.context['data'], 'sausage')\n\n        try:\n            response.context['does-not-exist']\n            self.fail('Should not be able to retrieve non-existent key')\n        except KeyError as e:\n            self.assertEqual(e.args[0], 'does-not-exist')\n\n    def test_inherited_context(self):\n        \"Context variables can be retrieved from a list of contexts\"\n        response = self.client.get(\"/test_client_regress/request_data_extended/\", data={'foo':'whiz'})\n        self.assertEqual(response.context.__class__, ContextList)\n        self.assertEqual(len(response.context), 2)\n        self.assertTrue('get-foo' in response.context)\n        self.assertEqual(response.context['get-foo'], 'whiz')\n        self.assertEqual(response.context['request-foo'], 'whiz')\n        self.assertEqual(response.context['data'], 'bacon')\n\n        try:\n            response.context['does-not-exist']\n            self.fail('Should not be able to retrieve non-existent key')\n        except KeyError as e:\n            self.assertEqual(e.args[0], 'does-not-exist')\n\n    def test_15368(self):\n        # Need to insert a context processor that assumes certain things about\n        # the request instance. This triggers a bug caused by some ways of\n        # copying RequestContext.\n        try:\n            django.template.context._standard_context_processors = (lambda request: {'path': request.special_path},)\n            response = self.client.get(\"/test_client_regress/request_context_view/\")\n            self.assertContains(response, 'Path: /test_client_regress/request_context_view/')\n        finally:\n            django.template.context._standard_context_processors = None\n\n\n@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))\nclass SessionTests(TestCase):\n    fixtures = ['testdata.json']\n\n    def test_session(self):\n        \"The session isn't lost if a user logs in\"\n        # The session doesn't exist to start.\n        response = self.client.get('/test_client_regress/check_session/')\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.content, b'NO')\n\n        # This request sets a session variable.\n        response = self.client.get('/test_client_regress/set_session/')\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.content, b'set_session')\n\n        # Check that the session has been modified\n        response = self.client.get('/test_client_regress/check_session/')\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.content, b'YES')\n\n        # Log in\n        login = self.client.login(username='testclient',password='password')\n        self.assertTrue(login, 'Could not log in')\n\n        # Session should still contain the modified value\n        response = self.client.get('/test_client_regress/check_session/')\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.content, b'YES')\n\n    def test_logout(self):\n        \"\"\"Logout should work whether the user is logged in or not (#9978).\"\"\"\n        self.client.logout()\n        login = self.client.login(username='testclient',password='password')\n        self.assertTrue(login, 'Could not log in')\n        self.client.logout()\n        self.client.logout()\n\nclass RequestMethodTests(TestCase):\n    def test_get(self):\n        \"Request a view via request method GET\"\n        response = self.client.get('/test_client_regress/request_methods/')\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.content, b'request method: GET')\n\n    def test_post(self):\n        \"Request a view via request method POST\"\n        response = self.client.post('/test_client_regress/request_methods/')\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.content, b'request method: POST')\n\n    def test_head(self):\n        \"Request a view via request method HEAD\"\n        response = self.client.head('/test_client_regress/request_methods/')\n        self.assertEqual(response.status_code, 200)\n        # A HEAD request doesn't return any content.\n        self.assertNotEqual(response.content, b'request method: HEAD')\n        self.assertEqual(response.content, b'')\n\n    def test_options(self):\n        \"Request a view via request method OPTIONS\"\n        response = self.client.options('/test_client_regress/request_methods/')\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.content, b'request method: OPTIONS')\n\n    def test_put(self):\n        \"Request a view via request method PUT\"\n        response = self.client.put('/test_client_regress/request_methods/')\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.content, b'request method: PUT')\n\n    def test_delete(self):\n        \"Request a view via request method DELETE\"\n        response = self.client.delete('/test_client_regress/request_methods/')\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.content, b'request method: DELETE')\n\nclass RequestMethodStringDataTests(TestCase):\n    def test_post(self):\n        \"Request a view with string data via request method POST\"\n        # Regression test for #11371\n        data = '{\"test\": \"json\"}'\n        response = self.client.post('/test_client_regress/request_methods/', data=data, content_type='application/json')\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.content, b'request method: POST')\n\n    def test_put(self):\n        \"Request a view with string data via request method PUT\"\n        # Regression test for #11371\n        data = '{\"test\": \"json\"}'\n        response = self.client.put('/test_client_regress/request_methods/', data=data, content_type='application/json')\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.content, b'request method: PUT')\n\nclass QueryStringTests(TestCase):\n    def test_get_like_requests(self):\n        # See: https://code.djangoproject.com/ticket/10571.\n        for method_name in ('get', 'head'):\n            # A GET-like request can pass a query string as data\n            method = getattr(self.client, method_name)\n            response = method(\"/test_client_regress/request_data/\", data={'foo':'whiz'})\n            self.assertEqual(response.context['get-foo'], 'whiz')\n            self.assertEqual(response.context['request-foo'], 'whiz')\n\n            # A GET-like request can pass a query string as part of the URL\n            response = method(\"/test_client_regress/request_data/?foo=whiz\")\n            self.assertEqual(response.context['get-foo'], 'whiz')\n            self.assertEqual(response.context['request-foo'], 'whiz')\n\n            # Data provided in the URL to a GET-like request is overridden by actual form data\n            response = method(\"/test_client_regress/request_data/?foo=whiz\", data={'foo':'bang'})\n            self.assertEqual(response.context['get-foo'], 'bang')\n            self.assertEqual(response.context['request-foo'], 'bang')\n\n            response = method(\"/test_client_regress/request_data/?foo=whiz\", data={'bar':'bang'})\n            self.assertEqual(response.context['get-foo'], None)\n            self.assertEqual(response.context['get-bar'], 'bang')\n            self.assertEqual(response.context['request-foo'], None)\n            self.assertEqual(response.context['request-bar'], 'bang')\n\n    def test_post_like_requests(self):\n        # A POST-like request can pass a query string as data\n        response = self.client.post(\"/test_client_regress/request_data/\", data={'foo':'whiz'})\n        self.assertEqual(response.context['get-foo'], None)\n        self.assertEqual(response.context['post-foo'], 'whiz')\n\n        # A POST-like request can pass a query string as part of the URL\n        response = self.client.post(\"/test_client_regress/request_data/?foo=whiz\")\n        self.assertEqual(response.context['get-foo'], 'whiz')\n        self.assertEqual(response.context['post-foo'], None)\n        self.assertEqual(response.context['request-foo'], 'whiz')\n\n        # POST data provided in the URL augments actual form data\n        response = self.client.post(\"/test_client_regress/request_data/?foo=whiz\", data={'foo':'bang'})\n        self.assertEqual(response.context['get-foo'], 'whiz')\n        self.assertEqual(response.context['post-foo'], 'bang')\n        self.assertEqual(response.context['request-foo'], 'bang')\n\n        response = self.client.post(\"/test_client_regress/request_data/?foo=whiz\", data={'bar':'bang'})\n        self.assertEqual(response.context['get-foo'], 'whiz')\n        self.assertEqual(response.context['get-bar'], None)\n        self.assertEqual(response.context['post-foo'], None)\n        self.assertEqual(response.context['post-bar'], 'bang')\n        self.assertEqual(response.context['request-foo'], 'whiz')\n        self.assertEqual(response.context['request-bar'], 'bang')\n\nclass UnicodePayloadTests(TestCase):\n    def test_simple_unicode_payload(self):\n        \"A simple ASCII-only unicode JSON document can be POSTed\"\n        # Regression test for #10571\n        json = '{\"english\": \"mountain pass\"}'\n        response = self.client.post(\"/test_client_regress/parse_unicode_json/\", json,\n                                    content_type=\"application/json\")\n        self.assertEqual(response.content, json.encode())\n\n    def test_unicode_payload_utf8(self):\n        \"A non-ASCII unicode data encoded as UTF-8 can be POSTed\"\n        # Regression test for #10571\n        json = '{\"dog\": \"собака\"}'\n        response = self.client.post(\"/test_client_regress/parse_unicode_json/\", json,\n                                    content_type=\"application/json; charset=utf-8\")\n        self.assertEqual(response.content, json.encode('utf-8'))\n\n    def test_unicode_payload_utf16(self):\n        \"A non-ASCII unicode data encoded as UTF-16 can be POSTed\"\n        # Regression test for #10571\n        json = '{\"dog\": \"собака\"}'\n        response = self.client.post(\"/test_client_regress/parse_unicode_json/\", json,\n                                    content_type=\"application/json; charset=utf-16\")\n        self.assertEqual(response.content, json.encode('utf-16'))\n\n    def test_unicode_payload_non_utf(self):\n        \"A non-ASCII unicode data as a non-UTF based encoding can be POSTed\"\n        #Regression test for #10571\n        json = '{\"dog\": \"собака\"}'\n        response = self.client.post(\"/test_client_regress/parse_unicode_json/\", json,\n                                    content_type=\"application/json; charset=koi8-r\")\n        self.assertEqual(response.content, json.encode('koi8-r'))\n\nclass DummyFile(object):\n    def __init__(self, filename):\n        self.name = filename\n    def read(self):\n        return b'TEST_FILE_CONTENT'\n\nclass UploadedFileEncodingTest(TestCase):\n    def test_file_encoding(self):\n        encoded_file = encode_file('TEST_BOUNDARY', 'TEST_KEY', DummyFile('test_name.bin'))\n        self.assertEqual(b'--TEST_BOUNDARY', encoded_file[0])\n        self.assertEqual(b'Content-Disposition: form-data; name=\"TEST_KEY\"; filename=\"test_name.bin\"', encoded_file[1])\n        self.assertEqual(b'TEST_FILE_CONTENT', encoded_file[-1])\n\n    def test_guesses_content_type_on_file_encoding(self):\n        self.assertEqual(b'Content-Type: application/octet-stream',\n                         encode_file('IGNORE', 'IGNORE', DummyFile(\"file.bin\"))[2])\n        self.assertEqual(b'Content-Type: text/plain',\n                         encode_file('IGNORE', 'IGNORE', DummyFile(\"file.txt\"))[2])\n        self.assertIn(encode_file('IGNORE', 'IGNORE', DummyFile(\"file.zip\"))[2], (\n                        b'Content-Type: application/x-compress',\n                        b'Content-Type: application/x-zip',\n                        b'Content-Type: application/x-zip-compressed',\n                        b'Content-Type: application/zip',))\n        self.assertEqual(b'Content-Type: application/octet-stream',\n                         encode_file('IGNORE', 'IGNORE', DummyFile(\"file.unknown\"))[2])\n\nclass RequestHeadersTest(TestCase):\n    def test_client_headers(self):\n        \"A test client can receive custom headers\"\n        response = self.client.get(\"/test_client_regress/check_headers/\", HTTP_X_ARG_CHECK='Testing 123')\n        self.assertEqual(response.content, b\"HTTP_X_ARG_CHECK: Testing 123\")\n        self.assertEqual(response.status_code, 200)\n\n    def test_client_headers_redirect(self):\n        \"Test client headers are preserved through redirects\"\n        response = self.client.get(\"/test_client_regress/check_headers_redirect/\", follow=True, HTTP_X_ARG_CHECK='Testing 123')\n        self.assertEqual(response.content, b\"HTTP_X_ARG_CHECK: Testing 123\")\n        self.assertRedirects(response, '/test_client_regress/check_headers/',\n            status_code=301, target_status_code=200)\n\n\nclass ReadLimitedStreamTest(TestCase):\n    \"\"\"\n    Tests that ensure that HttpRequest.body, HttpRequest.read() and\n    HttpRequest.read(BUFFER) have proper LimitedStream behavior.\n\n    Refs #14753, #15785\n    \"\"\"\n\n    def test_body_from_empty_request(self):\n        \"\"\"HttpRequest.body on a test client GET request should return\n        the empty string.\"\"\"\n        self.assertEqual(self.client.get(\"/test_client_regress/body/\").content, b'')\n\n    def test_read_from_empty_request(self):\n        \"\"\"HttpRequest.read() on a test client GET request should return the\n        empty string.\"\"\"\n        self.assertEqual(self.client.get(\"/test_client_regress/read_all/\").content, b'')\n\n    def test_read_numbytes_from_empty_request(self):\n        \"\"\"HttpRequest.read(LARGE_BUFFER) on a test client GET request should\n        return the empty string.\"\"\"\n        self.assertEqual(self.client.get(\"/test_client_regress/read_buffer/\").content, b'')\n\n    def test_read_from_nonempty_request(self):\n        \"\"\"HttpRequest.read() on a test client PUT request with some payload\n        should return that payload.\"\"\"\n        payload = b'foobar'\n        self.assertEqual(self.client.put(\"/test_client_regress/read_all/\",\n                                          data=payload,\n                                          content_type='text/plain').content, payload)\n\n    def test_read_numbytes_from_nonempty_request(self):\n        \"\"\"HttpRequest.read(LARGE_BUFFER) on a test client PUT request with\n        some payload should return that payload.\"\"\"\n        payload = b'foobar'\n        self.assertEqual(self.client.put(\"/test_client_regress/read_buffer/\",\n                                          data=payload,\n                                          content_type='text/plain').content, payload)\n\n\nclass RequestFactoryStateTest(TestCase):\n    \"\"\"Regression tests for #15929.\"\"\"\n    # These tests are checking that certain middleware don't change certain\n    # global state. Alternatively, from the point of view of a test, they are\n    # ensuring test isolation behavior. So, unusually, it doesn't make sense to\n    # run the tests individually, and if any are failing it is confusing to run\n    # them with any other set of tests.\n\n    def common_test_that_should_always_pass(self):\n        request = RequestFactory().get('/')\n        request.session = {}\n        self.assertFalse(hasattr(request, 'user'))\n\n    def test_request(self):\n        self.common_test_that_should_always_pass()\n\n    def test_request_after_client(self):\n        # apart from the next line the three tests are identical\n        self.client.get('/')\n        self.common_test_that_should_always_pass()\n\n    def test_request_after_client_2(self):\n        # This test is executed after the previous one\n        self.common_test_that_should_always_pass()\n\n\nclass RequestFactoryEnvironmentTests(TestCase):\n    \"\"\"\n    Regression tests for #8551 and #17067: ensure that environment variables\n    are set correctly in RequestFactory.\n    \"\"\"\n\n    def test_should_set_correct_env_variables(self):\n        request = RequestFactory().get('/path/')\n\n        self.assertEqual(request.META.get('REMOTE_ADDR'), '127.0.0.1')\n        self.assertEqual(request.META.get('SERVER_NAME'), 'testserver')\n        self.assertEqual(request.META.get('SERVER_PORT'), '80')\n        self.assertEqual(request.META.get('SERVER_PROTOCOL'), 'HTTP/1.1')\n        self.assertEqual(request.META.get('SCRIPT_NAME') +\n                         request.META.get('PATH_INFO'), '/path/')\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/test_client_regress/urls.py",
    "content": "from __future__ import absolute_import\n\nfrom django.conf.urls import patterns, url\nfrom django.views.generic import RedirectView\n\nfrom . import views\n\n\nurlpatterns = patterns('',\n    (r'^no_template_view/$', views.no_template_view),\n    (r'^staff_only/$', views.staff_only_view),\n    (r'^get_view/$', views.get_view),\n    (r'^request_data/$', views.request_data),\n    (r'^request_data_extended/$', views.request_data, {'template':'extended.html', 'data':'bacon'}),\n    url(r'^arg_view/(?P<name>.+)/$', views.view_with_argument, name='arg_view'),\n    (r'^login_protected_redirect_view/$', views.login_protected_redirect_view),\n    (r'^redirects/$', RedirectView.as_view(url='/test_client_regress/redirects/further/')),\n    (r'^redirects/further/$', RedirectView.as_view(url='/test_client_regress/redirects/further/more/')),\n    (r'^redirects/further/more/$', RedirectView.as_view(url='/test_client_regress/no_template_view/')),\n    (r'^redirect_to_non_existent_view/$', RedirectView.as_view(url='/test_client_regress/non_existent_view/')),\n    (r'^redirect_to_non_existent_view2/$', RedirectView.as_view(url='/test_client_regress/redirect_to_non_existent_view/')),\n    (r'^redirect_to_self/$', RedirectView.as_view(url='/test_client_regress/redirect_to_self/')),\n    (r'^circular_redirect_1/$', RedirectView.as_view(url='/test_client_regress/circular_redirect_2/')),\n    (r'^circular_redirect_2/$', RedirectView.as_view(url='/test_client_regress/circular_redirect_3/')),\n    (r'^circular_redirect_3/$', RedirectView.as_view(url='/test_client_regress/circular_redirect_1/')),\n    (r'^redirect_other_host/$', RedirectView.as_view(url='https://otherserver:8443/test_client_regress/no_template_view/')),\n    (r'^set_session/$', views.set_session_view),\n    (r'^check_session/$', views.check_session_view),\n    (r'^request_methods/$', views.request_methods_view),\n    (r'^check_unicode/$', views.return_unicode),\n    (r'^parse_unicode_json/$', views.return_json_file),\n    (r'^check_headers/$', views.check_headers),\n    (r'^check_headers_redirect/$', RedirectView.as_view(url='/test_client_regress/check_headers/')),\n    (r'^body/$', views.body),\n    (r'^read_all/$', views.read_all),\n    (r'^read_buffer/$', views.read_buffer),\n    (r'^request_context_view/$', views.request_context_view),\n)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/test_client_regress/views.py",
    "content": "import json\n\nfrom django.conf import settings\nfrom django.contrib.auth.decorators import login_required\nfrom django.http import HttpResponse, HttpResponseRedirect\nfrom django.core.exceptions import SuspiciousOperation\nfrom django.shortcuts import render_to_response\nfrom django.core.serializers.json import DjangoJSONEncoder\nfrom django.test.client import CONTENT_TYPE_RE\nfrom django.template import RequestContext\n\ndef no_template_view(request):\n    \"A simple view that expects a GET request, and returns a rendered template\"\n    return HttpResponse(\"No template used. Sample content: twice once twice. Content ends.\")\n\ndef staff_only_view(request):\n    \"A view that can only be visited by staff. Non staff members get an exception\"\n    if request.user.is_staff:\n        return HttpResponse('')\n    else:\n        raise SuspiciousOperation()\n\ndef get_view(request):\n    \"A simple login protected view\"\n    return HttpResponse(\"Hello world\")\nget_view = login_required(get_view)\n\ndef request_data(request, template='base.html', data='sausage'):\n    \"A simple view that returns the request data in the context\"\n    return render_to_response(template, {\n        'get-foo':request.GET.get('foo',None),\n        'get-bar':request.GET.get('bar',None),\n        'post-foo':request.POST.get('foo',None),\n        'post-bar':request.POST.get('bar',None),\n        'request-foo':request.REQUEST.get('foo',None),\n        'request-bar':request.REQUEST.get('bar',None),\n        'data': data,\n    })\n\ndef view_with_argument(request, name):\n    \"\"\"A view that takes a string argument\n\n    The purpose of this view is to check that if a space is provided in\n    the argument, the test framework unescapes the %20 before passing\n    the value to the view.\n    \"\"\"\n    if name == 'Arthur Dent':\n        return HttpResponse('Hi, Arthur')\n    else:\n        return HttpResponse('Howdy, %s' % name)\n\ndef login_protected_redirect_view(request):\n    \"A view that redirects all requests to the GET view\"\n    return HttpResponseRedirect('/test_client_regress/get_view/')\nlogin_protected_redirect_view = login_required(login_protected_redirect_view)\n\ndef set_session_view(request):\n    \"A view that sets a session variable\"\n    request.session['session_var'] = 'YES'\n    return HttpResponse('set_session')\n\ndef check_session_view(request):\n    \"A view that reads a session variable\"\n    return HttpResponse(request.session.get('session_var', 'NO'))\n\ndef request_methods_view(request):\n    \"A view that responds with the request method\"\n    return HttpResponse('request method: %s' % request.method)\n\ndef return_unicode(request):\n    return render_to_response('unicode.html')\n\ndef return_json_file(request):\n    \"A view that parses and returns a JSON string as a file.\"\n    match = CONTENT_TYPE_RE.match(request.META['CONTENT_TYPE'])\n    if match:\n        charset = match.group(1)\n    else:\n        charset = settings.DEFAULT_CHARSET\n\n    # This just checks that the uploaded data is JSON\n    obj_dict = json.loads(request.body.decode(charset))\n    obj_json = json.dumps(obj_dict, cls=DjangoJSONEncoder, ensure_ascii=False)\n    response = HttpResponse(obj_json.encode(charset), status=200,\n                            content_type='application/json; charset=%s' % charset)\n    response['Content-Disposition'] = 'attachment; filename=testfile.json'\n    return response\n\ndef check_headers(request):\n    \"A view that responds with value of the X-ARG-CHECK header\"\n    return HttpResponse('HTTP_X_ARG_CHECK: %s' % request.META.get('HTTP_X_ARG_CHECK', 'Undefined'))\n\ndef body(request):\n    \"A view that is requested with GET and accesses request.body. Refs #14753.\"\n    return HttpResponse(request.body)\n\ndef read_all(request):\n    \"A view that is requested with accesses request.read().\"\n    return HttpResponse(request.read())\n\ndef read_buffer(request):\n    \"A view that is requested with accesses request.read(LARGE_BUFFER).\"\n    return HttpResponse(request.read(99999))\n\ndef request_context_view(request):\n    # Special attribute that won't be present on a plain HttpRequest\n    request.special_path = request.path\n    return render_to_response('request_context.html', context_instance=RequestContext(request, {}))\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/test_runner/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/test_runner/deprecation_app/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/test_runner/deprecation_app/models.py",
    "content": "from django.db import models\n\n# Create your models here.\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/test_runner/deprecation_app/tests.py",
    "content": "import warnings\n\nfrom django.test import TestCase\n\nwarnings.warn(\"module-level warning from deprecation_app\", DeprecationWarning)\n\nclass DummyTest(TestCase):\n    def test_warn(self):\n        warnings.warn(\"warning from test\", DeprecationWarning)\n\n\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/test_runner/invalid_app/__init__.py",
    "content": "# Example of app layout that causes issue #12658:\n# * Both `models` and `tests` are packages.\n# * The tests raise a ImportError exception.\n# `test_runner` tests performs test discovery on this app.\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/test_runner/invalid_app/models/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/test_runner/invalid_app/tests/__init__.py",
    "content": "# Tests that raise ImportError should not fail silently.\n# This is a support fixture for one test case in test_runner\n\nraise ImportError\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/test_runner/models.py",
    "content": "from django.db import models\n\nclass Person(models.Model):\n    first_name = models.CharField(max_length=20)\n    last_name = models.CharField(max_length=20)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/test_runner/tests.py",
    "content": "\"\"\"\nTests for django test runner\n\"\"\"\nfrom __future__ import absolute_import, unicode_literals\n\nimport sys\nfrom optparse import make_option\n\nfrom django.core.exceptions import ImproperlyConfigured\nfrom django.core.management import call_command\nfrom django import db\nfrom django.test import simple, TransactionTestCase, skipUnlessDBFeature\nfrom django.test.simple import DjangoTestSuiteRunner, get_tests\nfrom django.test.testcases import connections_support_transactions\nfrom django.utils import unittest\nfrom django.utils.importlib import import_module\n\nfrom ..admin_scripts.tests import AdminScriptTestCase\nfrom .models import Person\n\n\nTEST_APP_OK = 'regressiontests.test_runner.valid_app.models'\nTEST_APP_ERROR = 'regressiontests.test_runner.invalid_app.models'\n\n\nclass DependencyOrderingTests(unittest.TestCase):\n\n    def test_simple_dependencies(self):\n        raw = [\n            ('s1', ('s1_db', ['alpha'])),\n            ('s2', ('s2_db', ['bravo'])),\n            ('s3', ('s3_db', ['charlie'])),\n        ]\n        dependencies = {\n            'alpha': ['charlie'],\n            'bravo': ['charlie'],\n        }\n\n        ordered = simple.dependency_ordered(raw, dependencies=dependencies)\n        ordered_sigs = [sig for sig,value in ordered]\n\n        self.assertIn('s1', ordered_sigs)\n        self.assertIn('s2', ordered_sigs)\n        self.assertIn('s3', ordered_sigs)\n        self.assertLess(ordered_sigs.index('s3'), ordered_sigs.index('s1'))\n        self.assertLess(ordered_sigs.index('s3'), ordered_sigs.index('s2'))\n\n    def test_chained_dependencies(self):\n        raw = [\n            ('s1', ('s1_db', ['alpha'])),\n            ('s2', ('s2_db', ['bravo'])),\n            ('s3', ('s3_db', ['charlie'])),\n        ]\n        dependencies = {\n            'alpha': ['bravo'],\n            'bravo': ['charlie'],\n        }\n\n        ordered = simple.dependency_ordered(raw, dependencies=dependencies)\n        ordered_sigs = [sig for sig,value in ordered]\n\n        self.assertIn('s1', ordered_sigs)\n        self.assertIn('s2', ordered_sigs)\n        self.assertIn('s3', ordered_sigs)\n\n        # Explicit dependencies\n        self.assertLess(ordered_sigs.index('s2'), ordered_sigs.index('s1'))\n        self.assertLess(ordered_sigs.index('s3'), ordered_sigs.index('s2'))\n\n        # Implied dependencies\n        self.assertLess(ordered_sigs.index('s3'), ordered_sigs.index('s1'))\n\n    def test_multiple_dependencies(self):\n        raw = [\n            ('s1', ('s1_db', ['alpha'])),\n            ('s2', ('s2_db', ['bravo'])),\n            ('s3', ('s3_db', ['charlie'])),\n            ('s4', ('s4_db', ['delta'])),\n        ]\n        dependencies = {\n            'alpha': ['bravo','delta'],\n            'bravo': ['charlie'],\n            'delta': ['charlie'],\n        }\n\n        ordered = simple.dependency_ordered(raw, dependencies=dependencies)\n        ordered_sigs = [sig for sig,aliases in ordered]\n\n        self.assertIn('s1', ordered_sigs)\n        self.assertIn('s2', ordered_sigs)\n        self.assertIn('s3', ordered_sigs)\n        self.assertIn('s4', ordered_sigs)\n\n        # Explicit dependencies\n        self.assertLess(ordered_sigs.index('s2'), ordered_sigs.index('s1'))\n        self.assertLess(ordered_sigs.index('s4'), ordered_sigs.index('s1'))\n        self.assertLess(ordered_sigs.index('s3'), ordered_sigs.index('s2'))\n        self.assertLess(ordered_sigs.index('s3'), ordered_sigs.index('s4'))\n\n        # Implicit dependencies\n        self.assertLess(ordered_sigs.index('s3'), ordered_sigs.index('s1'))\n\n    def test_circular_dependencies(self):\n        raw = [\n            ('s1', ('s1_db', ['alpha'])),\n            ('s2', ('s2_db', ['bravo'])),\n        ]\n        dependencies = {\n            'bravo': ['alpha'],\n            'alpha': ['bravo'],\n        }\n\n        self.assertRaises(ImproperlyConfigured, simple.dependency_ordered, raw, dependencies=dependencies)\n\n    def test_own_alias_dependency(self):\n        raw = [\n            ('s1', ('s1_db', ['alpha', 'bravo']))\n        ]\n        dependencies = {\n            'alpha': ['bravo']\n        }\n\n        with self.assertRaises(ImproperlyConfigured):\n            simple.dependency_ordered(raw, dependencies=dependencies)\n\n        # reordering aliases shouldn't matter\n        raw = [\n            ('s1', ('s1_db', ['bravo', 'alpha']))\n        ]\n\n        with self.assertRaises(ImproperlyConfigured):\n            simple.dependency_ordered(raw, dependencies=dependencies)\n\n\nclass MockTestRunner(object):\n    invoked = False\n\n    def __init__(self, *args, **kwargs):\n        pass\n\n    def run_tests(self, test_labels, extra_tests=None, **kwargs):\n        MockTestRunner.invoked = True\n\n\nclass ManageCommandTests(unittest.TestCase):\n\n    def test_custom_test_runner(self):\n        call_command('test', 'sites',\n                     testrunner='regressiontests.test_runner.tests.MockTestRunner')\n        self.assertTrue(MockTestRunner.invoked,\n                        \"The custom test runner has not been invoked\")\n\n    def test_bad_test_runner(self):\n        with self.assertRaises(AttributeError):\n            call_command('test', 'sites',\n                testrunner='regressiontests.test_runner.NonExistentRunner')\n\n\nclass CustomOptionsTestRunner(simple.DjangoTestSuiteRunner):\n    option_list = (\n        make_option('--option_a','-a', action='store', dest='option_a', default='1'),\n        make_option('--option_b','-b', action='store', dest='option_b', default='2'),\n        make_option('--option_c','-c', action='store', dest='option_c', default='3'),\n    )\n\n    def __init__(self, verbosity=1, interactive=True, failfast=True, option_a=None, option_b=None, option_c=None, **kwargs):\n        super(CustomOptionsTestRunner, self).__init__(verbosity=verbosity, interactive=interactive,\n                                                      failfast=failfast)\n        self.option_a = option_a\n        self.option_b = option_b\n        self.option_c = option_c\n\n    def run_tests(self, test_labels, extra_tests=None, **kwargs):\n        print(\"%s:%s:%s\" % (self.option_a, self.option_b, self.option_c))\n\n\nclass CustomTestRunnerOptionsTests(AdminScriptTestCase):\n\n    def setUp(self):\n        settings = {\n            'TEST_RUNNER': '\\'regressiontests.test_runner.tests.CustomOptionsTestRunner\\'',\n        }\n        self.write_settings('settings.py', sdict=settings)\n\n    def tearDown(self):\n        self.remove_settings('settings.py')\n\n    def test_default_options(self):\n        args = ['test', '--settings=regressiontests.settings']\n        out, err = self.run_django_admin(args)\n        self.assertNoOutput(err)\n        self.assertOutput(out, '1:2:3')\n\n    def test_default_and_given_options(self):\n        args = ['test', '--settings=regressiontests.settings', '--option_b=foo']\n        out, err = self.run_django_admin(args)\n        self.assertNoOutput(err)\n        self.assertOutput(out, '1:foo:3')\n\n    def test_option_name_and_value_separated(self):\n        args = ['test', '--settings=regressiontests.settings', '--option_b', 'foo']\n        out, err = self.run_django_admin(args)\n        self.assertNoOutput(err)\n        self.assertOutput(out, '1:foo:3')\n\n    def test_all_options_given(self):\n        args = ['test', '--settings=regressiontests.settings', '--option_a=bar', '--option_b=foo', '--option_c=31337']\n        out, err = self.run_django_admin(args)\n        self.assertNoOutput(err)\n        self.assertOutput(out, 'bar:foo:31337')\n\n\nclass Ticket17477RegressionTests(AdminScriptTestCase):\n    def setUp(self):\n        self.write_settings('settings.py')\n\n    def tearDown(self):\n        self.remove_settings('settings.py')\n\n    def test_ticket_17477(self):\n        \"\"\"'manage.py help test' works after r16352.\"\"\"\n        args = ['help', 'test']\n        out, err = self.run_manage(args)\n        self.assertNoOutput(err)\n\n\nclass ModulesTestsPackages(unittest.TestCase):\n    def test_get_tests(self):\n        \"Check that the get_tests helper function can find tests in a directory\"\n        module = import_module(TEST_APP_OK)\n        tests = get_tests(module)\n        self.assertIsInstance(tests, type(module))\n\n    def test_import_error(self):\n        \"Test for #12658 - Tests with ImportError's shouldn't fail silently\"\n        module = import_module(TEST_APP_ERROR)\n        self.assertRaises(ImportError, get_tests, module)\n\n\nclass Sqlite3InMemoryTestDbs(unittest.TestCase):\n\n    @unittest.skipUnless(all(db.connections[conn].vendor == 'sqlite' for conn in db.connections),\n                         \"This is a sqlite-specific issue\")\n    def test_transaction_support(self):\n        \"\"\"Ticket #16329: sqlite3 in-memory test databases\"\"\"\n        old_db_connections = db.connections\n        for option in ('NAME', 'TEST_NAME'):\n            try:\n                db.connections = db.ConnectionHandler({\n                    'default': {\n                        'ENGINE': 'django.db.backends.sqlite3',\n                        option: ':memory:',\n                    },\n                    'other': {\n                        'ENGINE': 'django.db.backends.sqlite3',\n                        option: ':memory:',\n                    },\n                })\n                other = db.connections['other']\n                DjangoTestSuiteRunner(verbosity=0).setup_databases()\n                msg = \"DATABASES setting '%s' option set to sqlite3's ':memory:' value shouldn't interfere with transaction support detection.\" % option\n                # Transaction support should be properly initialised for the 'other' DB\n                self.assertTrue(other.features.supports_transactions, msg)\n                # And all the DBs should report that they support transactions\n                self.assertTrue(connections_support_transactions(), msg)\n            finally:\n                db.connections = old_db_connections\n\n\nclass DummyBackendTest(unittest.TestCase):\n    def test_setup_databases(self):\n        \"\"\"\n        Test that setup_databases() doesn't fail with dummy database backend.\n        \"\"\"\n        runner = DjangoTestSuiteRunner(verbosity=0)\n        old_db_connections = db.connections\n        try:\n            db.connections = db.ConnectionHandler({})\n            old_config = runner.setup_databases()\n            runner.teardown_databases(old_config)\n        except Exception as e:\n            self.fail(\"setup_databases/teardown_databases unexpectedly raised \"\n                      \"an error: %s\" % e)\n        finally:\n            db.connections = old_db_connections\n\n\nclass DeprecationDisplayTest(AdminScriptTestCase):\n    # tests for 19546\n    def setUp(self):\n        settings = {'INSTALLED_APPS': '(\"regressiontests.test_runner.deprecation_app\",)',\n                    'DATABASES': '{\"default\": {\"ENGINE\":\"django.db.backends.sqlite3\", \"NAME\":\":memory:\"}}' }\n        self.write_settings('settings.py', sdict=settings)\n\n    def tearDown(self):\n        self.remove_settings('settings.py')\n\n    def test_runner_deprecation_verbosity_default(self):\n        args = ['test', '--settings=regressiontests.settings']\n        out, err = self.run_django_admin(args)\n        self.assertIn(\"DeprecationWarning: warning from test\", err)\n        self.assertIn(\"DeprecationWarning: module-level warning from deprecation_app\", err)\n\n    @unittest.skipIf(sys.version_info[:2] == (2, 6),\n        \"On Python 2.6, DeprecationWarnings are visible anyway\")\n    def test_runner_deprecation_verbosity_zero(self):\n        args = ['test', '--settings=regressiontests.settings', '--verbosity=0']\n        out, err = self.run_django_admin(args)\n        self.assertFalse(\"DeprecationWarning: warning from test\" in err)\n\n\nclass AutoIncrementResetTest(TransactionTestCase):\n    \"\"\"\n    Here we test creating the same model two times in different test methods,\n    and check that both times they get \"1\" as their PK value. That is, we test\n    that AutoField values start from 1 for each transactional test case.\n    \"\"\"\n\n    reset_sequences = True\n\n    @skipUnlessDBFeature('supports_sequence_reset')\n    def test_autoincrement_reset1(self):\n        p = Person.objects.create(first_name='Jack', last_name='Smith')\n        self.assertEqual(p.pk, 1)\n\n    @skipUnlessDBFeature('supports_sequence_reset')\n    def test_autoincrement_reset2(self):\n        p = Person.objects.create(first_name='Jack', last_name='Smith')\n        self.assertEqual(p.pk, 1)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/test_runner/valid_app/__init__.py",
    "content": "# Example of app layout to verify that the fix for #12658 doesn't break test\n# discovery when both `models` and `tests` are packages.\n# `test_runner` tests perform test discovery on this app.\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/test_runner/valid_app/models/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/test_runner/valid_app/tests/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/test_utils/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/test_utils/fixtures/should_not_be_loaded.json",
    "content": "[\n    {\n        \"pk\": 1,\n        \"model\": \"test_utils.person\",\n        \"fields\": {\n            \"name\": \"Elvis Presley\"\n        }\n    }\n]\n\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/test_utils/models.py",
    "content": "from django.db import models\n\n\nclass Person(models.Model):\n    name = models.CharField(max_length=100)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/test_utils/templates/template_used/alternative.html",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/test_utils/templates/template_used/base.html",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/test_utils/templates/template_used/extends.html",
    "content": "{% extends \"template_used/base.html\" %}\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/test_utils/templates/template_used/include.html",
    "content": "{% include \"template_used/base.html\" %}\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/test_utils/tests.py",
    "content": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import, unicode_literals\n\nfrom django.forms import EmailField, IntegerField\nfrom django.http import HttpResponse\nfrom django.template.loader import render_to_string\nfrom django.test import SimpleTestCase, TestCase, skipUnlessDBFeature\nfrom django.utils import six\nfrom django.utils.unittest import skip\n\nfrom .models import Person\n\n\nclass SkippingTestCase(TestCase):\n    def test_skip_unless_db_feature(self):\n        \"A test that might be skipped is actually called.\"\n        # Total hack, but it works, just want an attribute that's always true.\n        @skipUnlessDBFeature(\"__class__\")\n        def test_func():\n            raise ValueError\n\n        self.assertRaises(ValueError, test_func)\n\n\nclass AssertNumQueriesTests(TestCase):\n    urls = 'regressiontests.test_utils.urls'\n\n    def test_assert_num_queries(self):\n        def test_func():\n            raise ValueError\n\n        self.assertRaises(ValueError,\n            self.assertNumQueries, 2, test_func\n        )\n\n    def test_assert_num_queries_with_client(self):\n        person = Person.objects.create(name='test')\n\n        self.assertNumQueries(\n            1,\n            self.client.get,\n            \"/test_utils/get_person/%s/\" % person.pk\n        )\n\n        self.assertNumQueries(\n            1,\n            self.client.get,\n            \"/test_utils/get_person/%s/\" % person.pk\n        )\n\n        def test_func():\n            self.client.get(\"/test_utils/get_person/%s/\" % person.pk)\n            self.client.get(\"/test_utils/get_person/%s/\" % person.pk)\n        self.assertNumQueries(2, test_func)\n\n\nclass AssertNumQueriesContextManagerTests(TestCase):\n    urls = 'regressiontests.test_utils.urls'\n\n    def test_simple(self):\n        with self.assertNumQueries(0):\n            pass\n\n        with self.assertNumQueries(1):\n            Person.objects.count()\n\n        with self.assertNumQueries(2):\n            Person.objects.count()\n            Person.objects.count()\n\n    def test_failure(self):\n        with self.assertRaises(AssertionError) as exc_info:\n            with self.assertNumQueries(2):\n                Person.objects.count()\n        self.assertIn(\"1 queries executed, 2 expected\", str(exc_info.exception))\n\n        with self.assertRaises(TypeError):\n            with self.assertNumQueries(4000):\n                raise TypeError\n\n    def test_with_client(self):\n        person = Person.objects.create(name=\"test\")\n\n        with self.assertNumQueries(1):\n            self.client.get(\"/test_utils/get_person/%s/\" % person.pk)\n\n        with self.assertNumQueries(1):\n            self.client.get(\"/test_utils/get_person/%s/\" % person.pk)\n\n        with self.assertNumQueries(2):\n            self.client.get(\"/test_utils/get_person/%s/\" % person.pk)\n            self.client.get(\"/test_utils/get_person/%s/\" % person.pk)\n\n\nclass AssertTemplateUsedContextManagerTests(TestCase):\n    def test_usage(self):\n        with self.assertTemplateUsed('template_used/base.html'):\n            render_to_string('template_used/base.html')\n\n        with self.assertTemplateUsed(template_name='template_used/base.html'):\n            render_to_string('template_used/base.html')\n\n        with self.assertTemplateUsed('template_used/base.html'):\n            render_to_string('template_used/include.html')\n\n        with self.assertTemplateUsed('template_used/base.html'):\n            render_to_string('template_used/extends.html')\n\n        with self.assertTemplateUsed('template_used/base.html'):\n            render_to_string('template_used/base.html')\n            render_to_string('template_used/base.html')\n\n    def test_nested_usage(self):\n        with self.assertTemplateUsed('template_used/base.html'):\n            with self.assertTemplateUsed('template_used/include.html'):\n                render_to_string('template_used/include.html')\n\n        with self.assertTemplateUsed('template_used/extends.html'):\n            with self.assertTemplateUsed('template_used/base.html'):\n                render_to_string('template_used/extends.html')\n\n        with self.assertTemplateUsed('template_used/base.html'):\n            with self.assertTemplateUsed('template_used/alternative.html'):\n                render_to_string('template_used/alternative.html')\n            render_to_string('template_used/base.html')\n\n        with self.assertTemplateUsed('template_used/base.html'):\n            render_to_string('template_used/extends.html')\n            with self.assertTemplateNotUsed('template_used/base.html'):\n                render_to_string('template_used/alternative.html')\n            render_to_string('template_used/base.html')\n\n    def test_not_used(self):\n        with self.assertTemplateNotUsed('template_used/base.html'):\n            pass\n        with self.assertTemplateNotUsed('template_used/alternative.html'):\n            pass\n\n    def test_error_message(self):\n        with six.assertRaisesRegex(self, AssertionError, r'^template_used/base\\.html'):\n            with self.assertTemplateUsed('template_used/base.html'):\n                pass\n\n        with six.assertRaisesRegex(self, AssertionError, r'^template_used/base\\.html'):\n            with self.assertTemplateUsed(template_name='template_used/base.html'):\n                pass\n\n        with six.assertRaisesRegex(self, AssertionError, r'^template_used/base\\.html.*template_used/alternative\\.html$'):\n            with self.assertTemplateUsed('template_used/base.html'):\n                render_to_string('template_used/alternative.html')\n\n    def test_failure(self):\n        with self.assertRaises(TypeError):\n            with self.assertTemplateUsed():\n                pass\n\n        with self.assertRaises(AssertionError):\n            with self.assertTemplateUsed(''):\n                pass\n\n        with self.assertRaises(AssertionError):\n            with self.assertTemplateUsed(''):\n                render_to_string('template_used/base.html')\n\n        with self.assertRaises(AssertionError):\n            with self.assertTemplateUsed(template_name=''):\n                pass\n\n        with self.assertRaises(AssertionError):\n            with self.assertTemplateUsed('template_used/base.html'):\n                render_to_string('template_used/alternative.html')\n\n\nclass SaveRestoreWarningState(TestCase):\n    def test_save_restore_warnings_state(self):\n        \"\"\"\n        Ensure save_warnings_state/restore_warnings_state work correctly.\n        \"\"\"\n        # In reality this test could be satisfied by many broken implementations\n        # of save_warnings_state/restore_warnings_state (e.g. just\n        # warnings.resetwarnings()) , but it is difficult to test more.\n        import warnings\n        self.save_warnings_state()\n\n        class MyWarning(Warning):\n            pass\n\n        # Add a filter that causes an exception to be thrown, so we can catch it\n        warnings.simplefilter(\"error\", MyWarning)\n        self.assertRaises(Warning, lambda: warnings.warn(\"warn\", MyWarning))\n\n        # Now restore.\n        self.restore_warnings_state()\n        # After restoring, we shouldn't get an exception. But we don't want a\n        # warning printed either, so we have to silence the warning.\n        warnings.simplefilter(\"ignore\", MyWarning)\n        warnings.warn(\"warn\", MyWarning)\n\n        # Remove the filter we just added.\n        self.restore_warnings_state()\n\n\nclass HTMLEqualTests(TestCase):\n    def test_html_parser(self):\n        from django.test.html import parse_html\n        element = parse_html('<div><p>Hello</p></div>')\n        self.assertEqual(len(element.children), 1)\n        self.assertEqual(element.children[0].name, 'p')\n        self.assertEqual(element.children[0].children[0], 'Hello')\n\n        parse_html('<p>')\n        parse_html('<p attr>')\n        dom = parse_html('<p>foo')\n        self.assertEqual(len(dom.children), 1)\n        self.assertEqual(dom.name, 'p')\n        self.assertEqual(dom[0], 'foo')\n\n    def test_parse_html_in_script(self):\n        from django.test.html import parse_html\n        parse_html('<script>var a = \"<p\" + \">\";</script>');\n        parse_html('''\n            <script>\n            var js_sha_link='<p>***</p>';\n            </script>\n        ''')\n\n        # script content will be parsed to text\n        dom = parse_html('''\n            <script><p>foo</p> '</scr'+'ipt>' <span>bar</span></script>\n        ''')\n        self.assertEqual(len(dom.children), 1)\n        self.assertEqual(dom.children[0], \"<p>foo</p> '</scr'+'ipt>' <span>bar</span>\")\n\n    def test_self_closing_tags(self):\n        from django.test.html import parse_html\n\n        self_closing_tags = ('br' , 'hr', 'input', 'img', 'meta', 'spacer',\n            'link', 'frame', 'base', 'col')\n        for tag in self_closing_tags:\n            dom = parse_html('<p>Hello <%s> world</p>' % tag)\n            self.assertEqual(len(dom.children), 3)\n            self.assertEqual(dom[0], 'Hello')\n            self.assertEqual(dom[1].name, tag)\n            self.assertEqual(dom[2], 'world')\n\n            dom = parse_html('<p>Hello <%s /> world</p>' % tag)\n            self.assertEqual(len(dom.children), 3)\n            self.assertEqual(dom[0], 'Hello')\n            self.assertEqual(dom[1].name, tag)\n            self.assertEqual(dom[2], 'world')\n\n    def test_simple_equal_html(self):\n        self.assertHTMLEqual('', '')\n        self.assertHTMLEqual('<p></p>', '<p></p>')\n        self.assertHTMLEqual('<p></p>', ' <p> </p> ')\n        self.assertHTMLEqual(\n            '<div><p>Hello</p></div>',\n            '<div><p>Hello</p></div>')\n        self.assertHTMLEqual(\n            '<div><p>Hello</p></div>',\n            '<div> <p>Hello</p> </div>')\n        self.assertHTMLEqual(\n            '<div>\\n<p>Hello</p></div>',\n            '<div><p>Hello</p></div>\\n')\n        self.assertHTMLEqual(\n            '<div><p>Hello\\nWorld !</p></div>',\n            '<div><p>Hello World\\n!</p></div>')\n        self.assertHTMLEqual(\n            '<div><p>Hello\\nWorld !</p></div>',\n            '<div><p>Hello World\\n!</p></div>')\n        self.assertHTMLEqual(\n            '<p>Hello  World   !</p>',\n            '<p>Hello World\\n\\n!</p>')\n        self.assertHTMLEqual('<p> </p>', '<p></p>')\n        self.assertHTMLEqual('<p/>', '<p></p>')\n        self.assertHTMLEqual('<p />', '<p></p>')\n        self.assertHTMLEqual('<input checked>', '<input checked=\"checked\">')\n        self.assertHTMLEqual('<p>Hello', '<p> Hello')\n        self.assertHTMLEqual('<p>Hello</p>World', '<p>Hello</p> World')\n\n    def test_ignore_comments(self):\n        self.assertHTMLEqual(\n            '<div>Hello<!-- this is a comment --> World!</div>',\n            '<div>Hello World!</div>')\n\n    def test_unequal_html(self):\n        self.assertHTMLNotEqual('<p>Hello</p>', '<p>Hello!</p>')\n        self.assertHTMLNotEqual('<p>foo&#20;bar</p>', '<p>foo&nbsp;bar</p>')\n        self.assertHTMLNotEqual('<p>foo bar</p>', '<p>foo &nbsp;bar</p>')\n        self.assertHTMLNotEqual('<p>foo nbsp</p>', '<p>foo &nbsp;</p>')\n        self.assertHTMLNotEqual('<p>foo #20</p>', '<p>foo &#20;</p>')\n        self.assertHTMLNotEqual(\n            '<p><span>Hello</span><span>World</span></p>',\n            '<p><span>Hello</span>World</p>')\n        self.assertHTMLNotEqual(\n            '<p><span>Hello</span>World</p>',\n            '<p><span>Hello</span><span>World</span></p>')\n\n    def test_attributes(self):\n        self.assertHTMLEqual(\n            '<input type=\"text\" id=\"id_name\" />',\n            '<input id=\"id_name\" type=\"text\" />')\n        self.assertHTMLEqual(\n            '''<input type='text' id=\"id_name\" />''',\n            '<input id=\"id_name\" type=\"text\" />')\n        self.assertHTMLNotEqual(\n            '<input type=\"text\" id=\"id_name\" />',\n            '<input type=\"password\" id=\"id_name\" />')\n\n    def test_complex_examples(self):\n        self.assertHTMLEqual(\n        \"\"\"<tr><th><label for=\"id_first_name\">First name:</label></th>\n<td><input type=\"text\" name=\"first_name\" value=\"John\" id=\"id_first_name\" /></td></tr>\n<tr><th><label for=\"id_last_name\">Last name:</label></th>\n<td><input type=\"text\" id=\"id_last_name\" name=\"last_name\" value=\"Lennon\" /></td></tr>\n<tr><th><label for=\"id_birthday\">Birthday:</label></th>\n<td><input type=\"text\" value=\"1940-10-9\" name=\"birthday\" id=\"id_birthday\" /></td></tr>\"\"\",\n        \"\"\"\n        <tr><th>\n            <label for=\"id_first_name\">First name:</label></th><td><input type=\"text\" name=\"first_name\" value=\"John\" id=\"id_first_name\" />\n        </td></tr>\n        <tr><th>\n            <label for=\"id_last_name\">Last name:</label></th><td><input type=\"text\" name=\"last_name\" value=\"Lennon\" id=\"id_last_name\" />\n        </td></tr>\n        <tr><th>\n            <label for=\"id_birthday\">Birthday:</label></th><td><input type=\"text\" name=\"birthday\" value=\"1940-10-9\" id=\"id_birthday\" />\n        </td></tr>\n        \"\"\")\n\n        self.assertHTMLEqual(\n        \"\"\"<!DOCTYPE html>\n        <html>\n        <head>\n            <link rel=\"stylesheet\">\n            <title>Document</title>\n            <meta attribute=\"value\">\n        </head>\n        <body>\n            <p>\n            This is a valid paragraph\n            <div> this is a div AFTER the p</div>\n        </body>\n        </html>\"\"\", \"\"\"\n        <html>\n        <head>\n            <link rel=\"stylesheet\">\n            <title>Document</title>\n            <meta attribute=\"value\">\n        </head>\n        <body>\n            <p> This is a valid paragraph\n            <!-- browsers would close the p tag here -->\n            <div> this is a div AFTER the p</div>\n            </p> <!-- this is invalid HTML parsing, but it should make no\n            difference in most cases -->\n        </body>\n        </html>\"\"\")\n\n    def test_html_contain(self):\n        from django.test.html import parse_html\n        # equal html contains each other\n        dom1 = parse_html('<p>foo')\n        dom2 = parse_html('<p>foo</p>')\n        self.assertTrue(dom1 in dom2)\n        self.assertTrue(dom2 in dom1)\n\n        dom2 = parse_html('<div><p>foo</p></div>')\n        self.assertTrue(dom1 in dom2)\n        self.assertTrue(dom2 not in dom1)\n\n        self.assertFalse('<p>foo</p>' in dom2)\n        self.assertTrue('foo' in dom2)\n\n        # when a root element is used ...\n        dom1 = parse_html('<p>foo</p><p>bar</p>')\n        dom2 = parse_html('<p>foo</p><p>bar</p>')\n        self.assertTrue(dom1 in dom2)\n        dom1 = parse_html('<p>foo</p>')\n        self.assertTrue(dom1 in dom2)\n        dom1 = parse_html('<p>bar</p>')\n        self.assertTrue(dom1 in dom2)\n\n    def test_count(self):\n        from django.test.html import parse_html\n        # equal html contains each other one time\n        dom1 = parse_html('<p>foo')\n        dom2 = parse_html('<p>foo</p>')\n        self.assertEqual(dom1.count(dom2), 1)\n        self.assertEqual(dom2.count(dom1), 1)\n\n        dom2 = parse_html('<p>foo</p><p>bar</p>')\n        self.assertEqual(dom2.count(dom1), 1)\n\n        dom2 = parse_html('<p>foo foo</p><p>foo</p>')\n        self.assertEqual(dom2.count('foo'), 3)\n\n        dom2 = parse_html('<p class=\"bar\">foo</p>')\n        self.assertEqual(dom2.count('bar'), 0)\n        self.assertEqual(dom2.count('class'), 0)\n        self.assertEqual(dom2.count('p'), 0)\n        self.assertEqual(dom2.count('o'), 2)\n\n        dom2 = parse_html('<p>foo</p><p>foo</p>')\n        self.assertEqual(dom2.count(dom1), 2)\n\n        dom2 = parse_html('<div><p>foo<input type=\"\"></p><p>foo</p></div>')\n        self.assertEqual(dom2.count(dom1), 1)\n\n        dom2 = parse_html('<div><div><p>foo</p></div></div>')\n        self.assertEqual(dom2.count(dom1), 1)\n\n        dom2 = parse_html('<p>foo<p>foo</p></p>')\n        self.assertEqual(dom2.count(dom1), 1)\n\n        dom2 = parse_html('<p>foo<p>bar</p></p>')\n        self.assertEqual(dom2.count(dom1), 0)\n\n    def test_parsing_errors(self):\n        from django.test.html import HTMLParseError, parse_html\n        with self.assertRaises(AssertionError):\n            self.assertHTMLEqual('<p>', '')\n        with self.assertRaises(AssertionError):\n            self.assertHTMLEqual('', '<p>')\n        with self.assertRaises(HTMLParseError):\n            parse_html('</p>')\n\n    def test_contains_html(self):\n        response = HttpResponse('''<body>\n        This is a form: <form action=\"\" method=\"get\">\n            <input type=\"text\" name=\"Hello\" />\n        </form></body>''')\n\n        self.assertNotContains(response, \"<input name='Hello' type='text'>\")\n        self.assertContains(response, '<form action=\"\" method=\"get\">')\n\n        self.assertContains(response, \"<input name='Hello' type='text'>\", html=True)\n        self.assertNotContains(response, '<form action=\"\" method=\"get\">', html=True)\n\n        invalid_response = HttpResponse('''<body <bad>>''')\n\n        with self.assertRaises(AssertionError):\n            self.assertContains(invalid_response, '<p></p>')\n\n        with self.assertRaises(AssertionError):\n            self.assertContains(response, '<p \"whats\" that>')\n\n    def test_unicode_handling(self):\n        from django.http import HttpResponse\n        response = HttpResponse('<p class=\"help\">Some help text for the title (with unicode ŠĐĆŽćžšđ)</p>')\n        self.assertContains(response, '<p class=\"help\">Some help text for the title (with unicode ŠĐĆŽćžšđ)</p>', html=True)\n\n\nclass XMLEqualTests(TestCase):\n    def test_simple_equal(self):\n        xml1 = \"<elem attr1='a' attr2='b' />\"\n        xml2 = \"<elem attr1='a' attr2='b' />\"\n        self.assertXMLEqual(xml1, xml2)\n\n    def test_simple_equal_unordered(self):\n        xml1 = \"<elem attr1='a' attr2='b' />\"\n        xml2 = \"<elem attr2='b' attr1='a' />\"\n        self.assertXMLEqual(xml1, xml2)\n\n    def test_simple_equal_raise(self):\n        xml1 = \"<elem attr1='a' />\"\n        xml2 = \"<elem attr2='b' attr1='a' />\"\n        with self.assertRaises(AssertionError):\n            self.assertXMLEqual(xml1, xml2)\n\n    def test_simple_not_equal(self):\n        xml1 = \"<elem attr1='a' attr2='c' />\"\n        xml2 = \"<elem attr1='a' attr2='b' />\"\n        self.assertXMLNotEqual(xml1, xml2)\n\n    def test_simple_not_equal_raise(self):\n        xml1 = \"<elem attr1='a' attr2='b' />\"\n        xml2 = \"<elem attr2='b' attr1='a' />\"\n        with self.assertRaises(AssertionError):\n            self.assertXMLNotEqual(xml1, xml2)\n\n    def test_parsing_errors(self):\n        xml_unvalid = \"<elem attr1='a attr2='b' />\"\n        xml2 = \"<elem attr2='b' attr1='a' />\"\n        with self.assertRaises(AssertionError):\n            self.assertXMLNotEqual(xml_unvalid, xml2)\n\n    def test_comment_root(self):\n        xml1 = \"<?xml version='1.0'?><!-- comment1 --><elem attr1='a' attr2='b' />\"\n        xml2 = \"<?xml version='1.0'?><!-- comment2 --><elem attr2='b' attr1='a' />\"\n        self.assertXMLEqual(xml1, xml2)\n\n\nclass SkippingExtraTests(TestCase):\n    fixtures = ['should_not_be_loaded.json']\n\n    # HACK: This depends on internals of our TestCase subclasses\n    def __call__(self, result=None):\n        # Detect fixture loading by counting SQL queries, should be zero\n        with self.assertNumQueries(0):\n            super(SkippingExtraTests, self).__call__(result)\n\n    @skip(\"Fixture loading should not be performed for skipped tests.\")\n    def test_fixtures_are_skipped(self):\n        pass\n\n\nclass AssertRaisesMsgTest(SimpleTestCase):\n\n    def test_special_re_chars(self):\n        \"\"\"assertRaisesMessage shouldn't interpret RE special chars.\"\"\"\n        def func1():\n            raise ValueError(\"[.*x+]y?\")\n        self.assertRaisesMessage(ValueError, \"[.*x+]y?\", func1)\n\n\nclass AssertFieldOutputTests(SimpleTestCase):\n\n    def test_assert_field_output(self):\n        error_invalid = ['Enter a valid email address.']\n        self.assertFieldOutput(EmailField, {'a@a.com': 'a@a.com'}, {'aaa': error_invalid})\n        self.assertRaises(AssertionError, self.assertFieldOutput, EmailField, {'a@a.com': 'a@a.com'}, {'aaa': error_invalid + ['Another error']})\n        self.assertRaises(AssertionError, self.assertFieldOutput, EmailField, {'a@a.com': 'Wrong output'}, {'aaa': error_invalid})\n        self.assertRaises(AssertionError, self.assertFieldOutput, EmailField, {'a@a.com': 'a@a.com'}, {'aaa': ['Come on, gimme some well formatted data, dude.']})\n\n    def test_custom_required_message(self):\n        class MyCustomField(IntegerField):\n            default_error_messages = {\n                'required': 'This is really required.',\n            }\n        self.assertFieldOutput(MyCustomField, {}, {}, empty_value=None)\n\n__test__ = {\"API_TEST\": r\"\"\"\n# Some checks of the doctest output normalizer.\n# Standard doctests do fairly\n>>> import json\n>>> from django.utils.xmlutils import SimplerXMLGenerator\n>>> from django.utils.six import StringIO\n\n>>> def produce_json():\n...     return json.dumps(['foo', {'bar': ('baz', None, 1.0, 2), 'whiz': 42}])\n\n>>> def produce_xml():\n...     stream = StringIO()\n...     xml = SimplerXMLGenerator(stream, encoding='utf-8')\n...     xml.startDocument()\n...     xml.startElement(\"foo\", {\"aaa\" : \"1.0\", \"bbb\": \"2.0\"})\n...     xml.startElement(\"bar\", {\"ccc\" : \"3.0\"})\n...     xml.characters(\"Hello\")\n...     xml.endElement(\"bar\")\n...     xml.startElement(\"whiz\", {})\n...     xml.characters(\"Goodbye\")\n...     xml.endElement(\"whiz\")\n...     xml.endElement(\"foo\")\n...     xml.endDocument()\n...     return stream.getvalue()\n\n>>> def produce_xml_fragment():\n...     stream = StringIO()\n...     xml = SimplerXMLGenerator(stream, encoding='utf-8')\n...     xml.startElement(\"foo\", {\"aaa\": \"1.0\", \"bbb\": \"2.0\"})\n...     xml.characters(\"Hello\")\n...     xml.endElement(\"foo\")\n...     xml.startElement(\"bar\", {\"ccc\": \"3.0\", \"ddd\": \"4.0\"})\n...     xml.endElement(\"bar\")\n...     return stream.getvalue()\n\n# JSON output is normalized for field order, so it doesn't matter\n# which order json dictionary attributes are listed in output\n>>> produce_json()\n'[\"foo\", {\"bar\": [\"baz\", null, 1.0, 2], \"whiz\": 42}]'\n\n>>> produce_json()\n'[\"foo\", {\"whiz\": 42, \"bar\": [\"baz\", null, 1.0, 2]}]'\n\n# XML output is normalized for attribute order, so it doesn't matter\n# which order XML element attributes are listed in output\n>>> produce_xml()\n'<?xml version=\"1.0\" encoding=\"UTF-8\"?>\\n<foo aaa=\"1.0\" bbb=\"2.0\"><bar ccc=\"3.0\">Hello</bar><whiz>Goodbye</whiz></foo>'\n\n>>> produce_xml()\n'<?xml version=\"1.0\" encoding=\"UTF-8\"?>\\n<foo bbb=\"2.0\" aaa=\"1.0\"><bar ccc=\"3.0\">Hello</bar><whiz>Goodbye</whiz></foo>'\n\n>>> produce_xml_fragment()\n'<foo aaa=\"1.0\" bbb=\"2.0\">Hello</foo><bar ccc=\"3.0\" ddd=\"4.0\"></bar>'\n\n>>> produce_xml_fragment()\n'<foo bbb=\"2.0\" aaa=\"1.0\">Hello</foo><bar ddd=\"4.0\" ccc=\"3.0\"></bar>'\n\n\"\"\"}\n\nif not six.PY3:\n    __test__[\"API_TEST\"] += \"\"\"\n>>> def produce_long():\n...     return 42L\n\n>>> def produce_int():\n...     return 42\n\n# Long values are normalized and are comparable to normal integers ...\n>>> produce_long()\n42\n\n# ... and vice versa\n>>> produce_int()\n42L\n\n\"\"\"\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/test_utils/urls.py",
    "content": "from __future__ import absolute_import\n\nfrom django.conf.urls import patterns\n\nfrom . import views\n\n\nurlpatterns = patterns('',\n    (r'^test_utils/get_person/(\\d+)/$', views.get_person),\n)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/test_utils/views.py",
    "content": "from __future__ import absolute_import\n\nfrom django.http import HttpResponse\nfrom django.shortcuts import get_object_or_404\n\nfrom .models import Person\n\n\ndef get_person(request, pk):\n    person = get_object_or_404(Person, pk=pk)\n    return HttpResponse(person.name)"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/text/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/text/models.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/text/tests.py",
    "content": "# coding: utf-8\nfrom __future__ import unicode_literals\n\nfrom django.test import TestCase\nfrom django.utils.encoding import iri_to_uri\nfrom django.utils.http import (cookie_date, http_date,\n    urlquote, urlquote_plus, urlunquote, urlunquote_plus)\nfrom django.utils.text import get_text_list, smart_split\nfrom django.utils.translation import override\n\n\nclass TextTests(TestCase):\n    \"\"\"\n    Tests for stuff in django.utils.text and other text munging util functions.\n    \"\"\"\n\n    def test_get_text_list(self):\n        self.assertEqual(get_text_list(['a', 'b', 'c', 'd']), 'a, b, c or d')\n        self.assertEqual(get_text_list(['a', 'b', 'c'], 'and'), 'a, b and c')\n        self.assertEqual(get_text_list(['a', 'b'], 'and'), 'a and b')\n        self.assertEqual(get_text_list(['a']), 'a')\n        self.assertEqual(get_text_list([]), '')\n        with override('ar'):\n            self.assertEqual(get_text_list(['a', 'b', 'c']), \"a، b أو c\")\n\n    def test_smart_split(self):\n\n        self.assertEqual(list(smart_split(r'''This is \"a person\" test.''')),\n            ['This', 'is', '\"a person\"', 'test.'])\n\n        self.assertEqual(list(smart_split(r'''This is \"a person's\" test.'''))[2],\n            '\"a person\\'s\"')\n\n        self.assertEqual(list(smart_split(r'''This is \"a person\\\"s\" test.'''))[2],\n            '\"a person\\\\\"s\"')\n\n        self.assertEqual(list(smart_split('''\"a 'one''')), ['\"a', \"'one\"])\n\n        self.assertEqual(list(smart_split(r'''all friends' tests'''))[1],\n            \"friends'\")\n\n        self.assertEqual(list(smart_split('url search_page words=\"something else\"')),\n            ['url', 'search_page', 'words=\"something else\"'])\n\n        self.assertEqual(list(smart_split(\"url search_page words='something else'\")),\n            ['url', 'search_page', \"words='something else'\"])\n\n        self.assertEqual(list(smart_split('url search_page words \"something else\"')),\n            ['url', 'search_page', 'words', '\"something else\"'])\n\n        self.assertEqual(list(smart_split('url search_page words-\"something else\"')),\n            ['url', 'search_page', 'words-\"something else\"'])\n\n        self.assertEqual(list(smart_split('url search_page words=hello')),\n            ['url', 'search_page', 'words=hello'])\n\n        self.assertEqual(list(smart_split('url search_page words=\"something else')),\n            ['url', 'search_page', 'words=\"something', 'else'])\n\n        self.assertEqual(list(smart_split(\"cut:','|cut:' '\")),\n            [\"cut:','|cut:' '\"])\n\n    def test_urlquote(self):\n        self.assertEqual(urlquote('Paris & Orl\\xe9ans'),\n            'Paris%20%26%20Orl%C3%A9ans')\n        self.assertEqual(urlquote('Paris & Orl\\xe9ans', safe=\"&\"),\n            'Paris%20&%20Orl%C3%A9ans')\n        self.assertEqual(\n            urlunquote('Paris%20%26%20Orl%C3%A9ans'),\n            'Paris & Orl\\xe9ans')\n        self.assertEqual(\n            urlunquote('Paris%20&%20Orl%C3%A9ans'),\n            'Paris & Orl\\xe9ans')\n        self.assertEqual(urlquote_plus('Paris & Orl\\xe9ans'),\n            'Paris+%26+Orl%C3%A9ans')\n        self.assertEqual(urlquote_plus('Paris & Orl\\xe9ans', safe=\"&\"),\n            'Paris+&+Orl%C3%A9ans')\n        self.assertEqual(\n            urlunquote_plus('Paris+%26+Orl%C3%A9ans'),\n            'Paris & Orl\\xe9ans')\n        self.assertEqual(\n            urlunquote_plus('Paris+&+Orl%C3%A9ans'),\n            'Paris & Orl\\xe9ans')\n\n    def test_cookie_date(self):\n        t = 1167616461.0\n        self.assertEqual(cookie_date(t), 'Mon, 01-Jan-2007 01:54:21 GMT')\n\n    def test_http_date(self):\n        t = 1167616461.0\n        self.assertEqual(http_date(t), 'Mon, 01 Jan 2007 01:54:21 GMT')\n\n    def test_iri_to_uri(self):\n        self.assertEqual(iri_to_uri('red%09ros\\xe9#red'),\n            'red%09ros%C3%A9#red')\n\n        self.assertEqual(iri_to_uri('/blog/for/J\\xfcrgen M\\xfcnster/'),\n            '/blog/for/J%C3%BCrgen%20M%C3%BCnster/')\n\n        self.assertEqual(iri_to_uri('locations/%s' % urlquote_plus('Paris & Orl\\xe9ans')),\n            'locations/Paris+%26+Orl%C3%A9ans')\n\n    def test_iri_to_uri_idempotent(self):\n        self.assertEqual(iri_to_uri(iri_to_uri('red%09ros\\xe9#red')),\n            'red%09ros%C3%A9#red')\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/transactions_regress/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/transactions_regress/models.py",
    "content": "from django.db import models\n\nclass Mod(models.Model):\n    fld = models.IntegerField()\n\nclass M2mA(models.Model):\n    others = models.ManyToManyField('M2mB')\n\nclass M2mB(models.Model):\n    fld = models.IntegerField()\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/transactions_regress/tests.py",
    "content": "from __future__ import absolute_import\n\nfrom django.db import connection, connections, transaction, DEFAULT_DB_ALIAS, DatabaseError\nfrom django.db.transaction import commit_on_success, commit_manually, TransactionManagementError\nfrom django.test import TransactionTestCase, skipUnlessDBFeature\nfrom django.test.utils import override_settings\nfrom django.utils.unittest import skipIf, skipUnless\n\nfrom .models import Mod, M2mA, M2mB\n\n\nclass TestTransactionClosing(TransactionTestCase):\n    \"\"\"\n    Tests to make sure that transactions are properly closed\n    when they should be, and aren't left pending after operations\n    have been performed in them. Refs #9964.\n    \"\"\"\n    def test_raw_committed_on_success(self):\n        \"\"\"\n        Make sure a transaction consisting of raw SQL execution gets\n        committed by the commit_on_success decorator.\n        \"\"\"\n        @commit_on_success\n        def raw_sql():\n            \"Write a record using raw sql under a commit_on_success decorator\"\n            cursor = connection.cursor()\n            cursor.execute(\"INSERT into transactions_regress_mod (fld) values (18)\")\n\n        raw_sql()\n        # Rollback so that if the decorator didn't commit, the record is unwritten\n        transaction.rollback()\n        self.assertEqual(Mod.objects.count(), 1)\n        # Check that the record is in the DB\n        obj = Mod.objects.all()[0]\n        self.assertEqual(obj.fld, 18)\n\n    def test_commit_manually_enforced(self):\n        \"\"\"\n        Make sure that under commit_manually, even \"read-only\" transaction require closure\n        (commit or rollback), and a transaction left pending is treated as an error.\n        \"\"\"\n        @commit_manually\n        def non_comitter():\n            \"Execute a managed transaction with read-only operations and fail to commit\"\n            _ = Mod.objects.count()\n\n        self.assertRaises(TransactionManagementError, non_comitter)\n\n    def test_commit_manually_commit_ok(self):\n        \"\"\"\n        Test that under commit_manually, a committed transaction is accepted by the transaction\n        management mechanisms\n        \"\"\"\n        @commit_manually\n        def committer():\n            \"\"\"\n            Perform a database query, then commit the transaction\n            \"\"\"\n            _ = Mod.objects.count()\n            transaction.commit()\n\n        try:\n            committer()\n        except TransactionManagementError:\n            self.fail(\"Commit did not clear the transaction state\")\n\n    def test_commit_manually_rollback_ok(self):\n        \"\"\"\n        Test that under commit_manually, a rolled-back transaction is accepted by the transaction\n        management mechanisms\n        \"\"\"\n        @commit_manually\n        def roller_back():\n            \"\"\"\n            Perform a database query, then rollback the transaction\n            \"\"\"\n            _ = Mod.objects.count()\n            transaction.rollback()\n\n        try:\n            roller_back()\n        except TransactionManagementError:\n            self.fail(\"Rollback did not clear the transaction state\")\n\n    def test_commit_manually_enforced_after_commit(self):\n        \"\"\"\n        Test that under commit_manually, if a transaction is committed and an operation is\n        performed later, we still require the new transaction to be closed\n        \"\"\"\n        @commit_manually\n        def fake_committer():\n            \"Query, commit, then query again, leaving with a pending transaction\"\n            _ = Mod.objects.count()\n            transaction.commit()\n            _ = Mod.objects.count()\n\n        self.assertRaises(TransactionManagementError, fake_committer)\n\n    @skipUnlessDBFeature('supports_transactions')\n    def test_reuse_cursor_reference(self):\n        \"\"\"\n        Make sure transaction closure is enforced even when the queries are performed\n        through a single cursor reference retrieved in the beginning\n        (this is to show why it is wrong to set the transaction dirty only when a cursor\n        is fetched from the connection).\n        \"\"\"\n        @commit_on_success\n        def reuse_cursor_ref():\n            \"\"\"\n            Fetch a cursor, perform an query, rollback to close the transaction,\n            then write a record (in a new transaction) using the same cursor object\n            (reference). All this under commit_on_success, so the second insert should\n            be committed.\n            \"\"\"\n            cursor = connection.cursor()\n            cursor.execute(\"INSERT into transactions_regress_mod (fld) values (2)\")\n            transaction.rollback()\n            cursor.execute(\"INSERT into transactions_regress_mod (fld) values (2)\")\n\n        reuse_cursor_ref()\n        # Rollback so that if the decorator didn't commit, the record is unwritten\n        transaction.rollback()\n        self.assertEqual(Mod.objects.count(), 1)\n        obj = Mod.objects.all()[0]\n        self.assertEqual(obj.fld, 2)\n\n    def test_failing_query_transaction_closed(self):\n        \"\"\"\n        Make sure that under commit_on_success, a transaction is rolled back even if\n        the first database-modifying operation fails.\n        This is prompted by http://code.djangoproject.com/ticket/6669 (and based on sample\n        code posted there to exemplify the problem): Before Django 1.3,\n        transactions were only marked \"dirty\" by the save() function after it successfully\n        wrote the object to the database.\n        \"\"\"\n        from django.contrib.auth.models import User\n\n        @transaction.commit_on_success\n        def create_system_user():\n            \"Create a user in a transaction\"\n            user = User.objects.create_user(username='system', password='iamr00t', email='root@SITENAME.com')\n            # Redundant, just makes sure the user id was read back from DB\n            Mod.objects.create(fld=user.pk)\n\n        # Create a user\n        create_system_user()\n\n        with self.assertRaises(DatabaseError):\n            # The second call to create_system_user should fail for violating\n            # a unique constraint (it's trying to re-create the same user)\n            create_system_user()\n\n        # Try to read the database. If the last transaction was indeed closed,\n        # this should cause no problems\n        User.objects.all()[0]\n\n    @override_settings(DEBUG=True)\n    def test_failing_query_transaction_closed_debug(self):\n        \"\"\"\n        Regression for #6669. Same test as above, with DEBUG=True.\n        \"\"\"\n        self.test_failing_query_transaction_closed()\n\n\n@skipUnless(connection.vendor == 'postgresql',\n            \"This test only valid for PostgreSQL\")\nclass TestPostgresAutocommit(TransactionTestCase):\n    \"\"\"\n    Tests to make sure psycopg2's autocommit mode is restored after entering\n    and leaving transaction management. Refs #16047.\n    \"\"\"\n    def setUp(self):\n        from psycopg2.extensions import (ISOLATION_LEVEL_AUTOCOMMIT,\n                                         ISOLATION_LEVEL_READ_COMMITTED)\n        self._autocommit = ISOLATION_LEVEL_AUTOCOMMIT\n        self._read_committed = ISOLATION_LEVEL_READ_COMMITTED\n\n        # We want a clean backend with autocommit = True, so\n        # first we need to do a bit of work to have that.\n        self._old_backend = connections[DEFAULT_DB_ALIAS]\n        settings = self._old_backend.settings_dict.copy()\n        opts = settings['OPTIONS'].copy()\n        opts['autocommit'] = True\n        settings['OPTIONS'] = opts\n        new_backend = self._old_backend.__class__(settings, DEFAULT_DB_ALIAS)\n        connections[DEFAULT_DB_ALIAS] = new_backend\n\n    def tearDown(self):\n        connections[DEFAULT_DB_ALIAS] = self._old_backend\n\n    def test_initial_autocommit_state(self):\n        self.assertTrue(connection.features.uses_autocommit)\n        self.assertEqual(connection.isolation_level, self._autocommit)\n\n    def test_transaction_management(self):\n        transaction.enter_transaction_management()\n        transaction.managed(True)\n        self.assertEqual(connection.isolation_level, self._read_committed)\n\n        transaction.leave_transaction_management()\n        self.assertEqual(connection.isolation_level, self._autocommit)\n\n    def test_transaction_stacking(self):\n        transaction.enter_transaction_management()\n        transaction.managed(True)\n        self.assertEqual(connection.isolation_level, self._read_committed)\n\n        transaction.enter_transaction_management()\n        self.assertEqual(connection.isolation_level, self._read_committed)\n\n        transaction.leave_transaction_management()\n        self.assertEqual(connection.isolation_level, self._read_committed)\n\n        transaction.leave_transaction_management()\n        self.assertEqual(connection.isolation_level, self._autocommit)\n\n\nclass TestManyToManyAddTransaction(TransactionTestCase):\n    def test_manyrelated_add_commit(self):\n        \"Test for https://code.djangoproject.com/ticket/16818\"\n        a = M2mA.objects.create()\n        b = M2mB.objects.create(fld=10)\n        a.others.add(b)\n\n        # We're in a TransactionTestCase and have not changed transaction\n        # behavior from default of \"autocommit\", so this rollback should not\n        # actually do anything. If it does in fact undo our add, that's a bug\n        # that the bulk insert was not auto-committed.\n        transaction.rollback()\n        self.assertEqual(a.others.count(), 1)\n\n\nclass SavepointTest(TransactionTestCase):\n\n    @skipUnlessDBFeature('uses_savepoints')\n    def test_savepoint_commit(self):\n        @commit_manually\n        def work():\n            mod = Mod.objects.create(fld=1)\n            pk = mod.pk\n            sid = transaction.savepoint()\n            mod1 = Mod.objects.filter(pk=pk).update(fld=10)\n            transaction.savepoint_commit(sid)\n            mod2 = Mod.objects.get(pk=pk)\n            transaction.commit()\n            self.assertEqual(mod2.fld, 10)\n\n        work()\n\n    @skipIf(connection.vendor == 'mysql' and \\\n            connection.features._mysql_storage_engine == 'MyISAM',\n            \"MyISAM MySQL storage engine doesn't support savepoints\")\n    @skipUnlessDBFeature('uses_savepoints')\n    def test_savepoint_rollback(self):\n        @commit_manually\n        def work():\n            mod = Mod.objects.create(fld=1)\n            pk = mod.pk\n            sid = transaction.savepoint()\n            mod1 = Mod.objects.filter(pk=pk).update(fld=20)\n            transaction.savepoint_rollback(sid)\n            mod2 = Mod.objects.get(pk=pk)\n            transaction.commit()\n            self.assertEqual(mod2.fld, 1)\n\n        work()\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/urlpatterns_reverse/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/urlpatterns_reverse/erroneous_urls.py",
    "content": "from django.conf.urls import patterns, url\n\nurlpatterns = patterns('',\n    # View has erroneous import\n    url(r'erroneous_inner/$', 'regressiontests.urlpatterns_reverse.views.erroneous_view'),\n    # Module has erroneous import\n    url(r'erroneous_outer/$', 'regressiontests.urlpatterns_reverse.erroneous_views_module.erroneous_view'),\n    # View does not exist\n    url(r'missing_inner/$', 'regressiontests.urlpatterns_reverse.views.missing_view'),\n    # View is not callable\n    url(r'uncallable/$', 'regressiontests.urlpatterns_reverse.views.uncallable'),\n    # Module does not exist\n    url(r'missing_outer/$', 'regressiontests.urlpatterns_reverse.missing_module.missing_view'),\n    # Regex contains an error (refs #6170)\n    url(r'(regex_error/$', 'regressiontestes.urlpatterns_reverse.views.empty_view'),\n)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/urlpatterns_reverse/erroneous_views_module.py",
    "content": "import non_existent\n\ndef erroneous_view(request):\n    pass\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/urlpatterns_reverse/extra_urls.py",
    "content": "\"\"\"\nSome extra URL patterns that are included at the top level.\n\"\"\"\n\nfrom __future__ import absolute_import\n\nfrom django.conf.urls import patterns, url, include\n\nfrom .views import empty_view\n\n\nurlpatterns = patterns('',\n    url(r'^e-places/(\\d+)/$', empty_view, name='extra-places'),\n    url(r'^e-people/(?P<name>\\w+)/$', empty_view, name=\"extra-people\"),\n    url('', include('regressiontests.urlpatterns_reverse.included_urls2')),\n    url(r'^prefix/(?P<prefix>\\w+)/', include('regressiontests.urlpatterns_reverse.included_urls2')),\n)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/urlpatterns_reverse/included_named_urls.py",
    "content": "from __future__ import absolute_import\n\nfrom django.conf.urls import patterns, url, include\n\nfrom .views import empty_view\n\n\nurlpatterns = patterns('',\n    url(r'^$', empty_view, name=\"named-url3\"),\n    url(r'^extra/(?P<extra>\\w+)/$', empty_view, name=\"named-url4\"),\n    url(r'^(?P<one>\\d+)|(?P<two>\\d+)/$', empty_view),\n    (r'^included/', include('regressiontests.urlpatterns_reverse.included_named_urls2')),\n)\n\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/urlpatterns_reverse/included_named_urls2.py",
    "content": "from __future__ import absolute_import\n\nfrom django.conf.urls import patterns, url\n\nfrom .views import empty_view\n\n\nurlpatterns = patterns('',\n    url(r'^$', empty_view, name=\"named-url5\"),\n    url(r'^extra/(?P<extra>\\w+)/$', empty_view, name=\"named-url6\"),\n    url(r'^(?P<one>\\d+)|(?P<two>\\d+)/$', empty_view),\n)\n\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/urlpatterns_reverse/included_namespace_urls.py",
    "content": "from __future__ import absolute_import\n\nfrom django.conf.urls import patterns, url, include\n\nfrom .namespace_urls import URLObject\nfrom .views import view_class_instance\n\n\ntestobj3 = URLObject('testapp', 'test-ns3')\n\nurlpatterns = patterns('regressiontests.urlpatterns_reverse.views',\n    url(r'^normal/$', 'empty_view', name='inc-normal-view'),\n    url(r'^normal/(?P<arg1>\\d+)/(?P<arg2>\\d+)/$', 'empty_view', name='inc-normal-view'),\n\n    url(r'^\\+\\\\\\$\\*/$', 'empty_view', name='inc-special-view'),\n\n    url(r'^mixed_args/(\\d+)/(?P<arg2>\\d+)/$', 'empty_view', name='inc-mixed-args'),\n    url(r'^no_kwargs/(\\d+)/(\\d+)/$', 'empty_view', name='inc-no-kwargs'),\n\n    url(r'^view_class/(?P<arg1>\\d+)/(?P<arg2>\\d+)/$', view_class_instance, name='inc-view-class'),\n\n    (r'^test3/', include(testobj3.urls)),\n    (r'^ns-included3/', include('regressiontests.urlpatterns_reverse.included_urls', namespace='inc-ns3')),\n    (r'^ns-included4/', include('regressiontests.urlpatterns_reverse.namespace_urls', namespace='inc-ns4')),\n)\n\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/urlpatterns_reverse/included_urls.py",
    "content": "from __future__ import absolute_import\n\nfrom django.conf.urls import patterns, url\n\nfrom .views import empty_view\n\n\nurlpatterns = patterns('',\n    url(r'^$', empty_view, name=\"inner-nothing\"),\n    url(r'^extra/(?P<extra>\\w+)/$', empty_view, name=\"inner-extra\"),\n    url(r'^(?P<one>\\d+)|(?P<two>\\d+)/$', empty_view, name=\"inner-disjunction\"),\n)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/urlpatterns_reverse/included_urls2.py",
    "content": "\"\"\"\nThese URL patterns are included in two different ways in the main urls.py, with\nan extra argument present in one case. Thus, there are two different ways for\neach name to resolve and Django must distinguish the possibilities based on the\nargument list.\n\"\"\"\n\nfrom __future__ import absolute_import\n\nfrom django.conf.urls import patterns, url\n\nfrom .views import empty_view\n\n\nurlpatterns = patterns('',\n    url(r'^part/(?P<value>\\w+)/$', empty_view, name=\"part\"),\n    url(r'^part2/(?:(?P<value>\\w+)/)?$', empty_view, name=\"part2\"),\n)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/urlpatterns_reverse/middleware.py",
    "content": "from __future__ import absolute_import\n\nfrom . import urlconf_inner\n\n\nclass ChangeURLconfMiddleware(object):\n    def process_request(self, request):\n        request.urlconf = urlconf_inner.__name__\n\nclass NullChangeURLconfMiddleware(object):\n    def process_request(self, request):\n        request.urlconf = None\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/urlpatterns_reverse/models.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/urlpatterns_reverse/named_urls.py",
    "content": "from __future__ import absolute_import\n\nfrom django.conf.urls import patterns, url, include\n\nfrom .views import empty_view\n\n\nurlpatterns = patterns('',\n    url(r'^$', empty_view, name=\"named-url1\"),\n    url(r'^extra/(?P<extra>\\w+)/$', empty_view, name=\"named-url2\"),\n    url(r'^(?P<one>\\d+)|(?P<two>\\d+)/$', empty_view),\n    (r'^included/', include('regressiontests.urlpatterns_reverse.included_named_urls')),\n)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/urlpatterns_reverse/namespace_urls.py",
    "content": "from __future__ import absolute_import\n\nfrom django.conf.urls import patterns, url, include\n\nfrom .views import view_class_instance\n\n\nclass URLObject(object):\n    def __init__(self, app_name, namespace):\n        self.app_name = app_name\n        self.namespace = namespace\n\n    def urls(self):\n        return patterns('',\n            url(r'^inner/$', 'empty_view', name='urlobject-view'),\n            url(r'^inner/(?P<arg1>\\d+)/(?P<arg2>\\d+)/$', 'empty_view', name='urlobject-view'),\n            url(r'^inner/\\+\\\\\\$\\*/$', 'empty_view', name='urlobject-special-view'),\n        ), self.app_name, self.namespace\n    urls = property(urls)\n\ntestobj1 = URLObject('testapp', 'test-ns1')\ntestobj2 = URLObject('testapp', 'test-ns2')\ndefault_testobj = URLObject('testapp', 'testapp')\n\notherobj1 = URLObject('nodefault', 'other-ns1')\notherobj2 = URLObject('nodefault', 'other-ns2')\n\nurlpatterns = patterns('regressiontests.urlpatterns_reverse.views',\n    url(r'^normal/$', 'empty_view', name='normal-view'),\n    url(r'^normal/(?P<arg1>\\d+)/(?P<arg2>\\d+)/$', 'empty_view', name='normal-view'),\n    url(r'^resolver_match/$', 'pass_resolver_match_view', name='test-resolver-match'),\n\n    url(r'^\\+\\\\\\$\\*/$', 'empty_view', name='special-view'),\n\n    url(r'^mixed_args/(\\d+)/(?P<arg2>\\d+)/$', 'empty_view', name='mixed-args'),\n    url(r'^no_kwargs/(\\d+)/(\\d+)/$', 'empty_view', name='no-kwargs'),\n\n    url(r'^view_class/(?P<arg1>\\d+)/(?P<arg2>\\d+)/$', view_class_instance, name='view-class'),\n\n    (r'^unnamed/normal/(?P<arg1>\\d+)/(?P<arg2>\\d+)/$', 'empty_view'),\n    (r'^unnamed/view_class/(?P<arg1>\\d+)/(?P<arg2>\\d+)/$', view_class_instance),\n\n    (r'^test1/', include(testobj1.urls)),\n    (r'^test2/', include(testobj2.urls)),\n    (r'^default/', include(default_testobj.urls)),\n\n    (r'^other1/', include(otherobj1.urls)),\n    (r'^other[246]/', include(otherobj2.urls)),\n\n    (r'^ns-included[135]/', include('regressiontests.urlpatterns_reverse.included_namespace_urls', namespace='inc-ns1')),\n    (r'^ns-included2/', include('regressiontests.urlpatterns_reverse.included_namespace_urls', namespace='inc-ns2')),\n\n    (r'^included/', include('regressiontests.urlpatterns_reverse.included_namespace_urls')),\n    (r'^inc(?P<outer>\\d+)/', include('regressiontests.urlpatterns_reverse.included_urls', namespace='inc-ns5')),\n\n    (r'^ns-outer/(?P<outer>\\d+)/', include('regressiontests.urlpatterns_reverse.included_namespace_urls', namespace='inc-outer')),\n\n    (r'^\\+\\\\\\$\\*/', include('regressiontests.urlpatterns_reverse.namespace_urls', namespace='special')),\n)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/urlpatterns_reverse/no_urls.py",
    "content": "#from django.conf.urls import patterns, url, include\n\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/urlpatterns_reverse/reverse_lazy_urls.py",
    "content": "from __future__ import absolute_import\n\nfrom django.conf.urls import patterns, url\n\nfrom .views import empty_view, LazyRedirectView, login_required_view\n\nurlpatterns = patterns('',\n    url(r'^redirected_to/$', empty_view, name='named-lazy-url-redirected-to'),\n    url(r'^login/$', empty_view, name='some-login-page'),\n    url(r'^login_required_view/$', login_required_view),\n    url(r'^redirect/$', LazyRedirectView.as_view()),\n)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/urlpatterns_reverse/tests.py",
    "content": "\"\"\"\nUnit tests for reverse URL lookups.\n\"\"\"\nfrom __future__ import absolute_import, unicode_literals\n\nfrom django.conf import settings\nfrom django.contrib.auth.models import User\nfrom django.core.exceptions import ImproperlyConfigured, ViewDoesNotExist\nfrom django.core.urlresolvers import (reverse, resolve, get_callable,\n    get_resolver, NoReverseMatch, Resolver404, ResolverMatch, RegexURLResolver,\n    RegexURLPattern)\nfrom django.http import HttpResponseRedirect, HttpResponsePermanentRedirect\nfrom django.shortcuts import redirect\nfrom django.test import TestCase\nfrom django.utils import unittest, six\n\nfrom . import urlconf_outer, middleware, views\n\n\nresolve_test_data = (\n    # These entries are in the format: (path, url_name, app_name, namespace, view_func, args, kwargs)\n    # Simple case\n    ('/normal/42/37/', 'normal-view', None, '', views.empty_view, tuple(), {'arg1': '42', 'arg2': '37'}),\n    ('/view_class/42/37/', 'view-class', None, '', views.view_class_instance, tuple(), {'arg1': '42', 'arg2': '37'}),\n    ('/included/normal/42/37/', 'inc-normal-view', None, '', views.empty_view, tuple(), {'arg1': '42', 'arg2': '37'}),\n    ('/included/view_class/42/37/', 'inc-view-class', None, '', views.view_class_instance, tuple(), {'arg1': '42', 'arg2': '37'}),\n\n    # Unnamed args are dropped if you have *any* kwargs in a pattern\n    ('/mixed_args/42/37/', 'mixed-args', None, '', views.empty_view, tuple(), {'arg2': '37'}),\n    ('/included/mixed_args/42/37/', 'inc-mixed-args', None, '', views.empty_view, tuple(), {'arg2': '37'}),\n\n    # Unnamed views will be resolved to the function/class name\n    ('/unnamed/normal/42/37/', 'regressiontests.urlpatterns_reverse.views.empty_view', None, '', views.empty_view, tuple(), {'arg1': '42', 'arg2': '37'}),\n    ('/unnamed/view_class/42/37/', 'regressiontests.urlpatterns_reverse.views.ViewClass', None, '', views.view_class_instance, tuple(), {'arg1': '42', 'arg2': '37'}),\n\n    # If you have no kwargs, you get an args list.\n    ('/no_kwargs/42/37/', 'no-kwargs', None, '', views.empty_view, ('42','37'), {}),\n    ('/included/no_kwargs/42/37/', 'inc-no-kwargs', None, '', views.empty_view, ('42','37'), {}),\n\n    # Namespaces\n    ('/test1/inner/42/37/', 'urlobject-view', 'testapp', 'test-ns1', 'empty_view', tuple(), {'arg1': '42', 'arg2': '37'}),\n    ('/included/test3/inner/42/37/', 'urlobject-view', 'testapp', 'test-ns3', 'empty_view', tuple(), {'arg1': '42', 'arg2': '37'}),\n    ('/ns-included1/normal/42/37/', 'inc-normal-view', None, 'inc-ns1', views.empty_view, tuple(), {'arg1': '42', 'arg2': '37'}),\n    ('/included/test3/inner/42/37/', 'urlobject-view', 'testapp', 'test-ns3', 'empty_view', tuple(), {'arg1': '42', 'arg2': '37'}),\n    ('/default/inner/42/37/', 'urlobject-view', 'testapp', 'testapp', 'empty_view', tuple(), {'arg1': '42', 'arg2': '37'}),\n    ('/other2/inner/42/37/', 'urlobject-view', 'nodefault', 'other-ns2', 'empty_view', tuple(), {'arg1': '42', 'arg2': '37'}),\n    ('/other1/inner/42/37/', 'urlobject-view', 'nodefault', 'other-ns1', 'empty_view', tuple(), {'arg1': '42', 'arg2': '37'}),\n\n    # Nested namespaces\n    ('/ns-included1/test3/inner/42/37/', 'urlobject-view', 'testapp', 'inc-ns1:test-ns3', 'empty_view', tuple(), {'arg1': '42', 'arg2': '37'}),\n    ('/ns-included1/ns-included4/ns-included2/test3/inner/42/37/', 'urlobject-view', 'testapp', 'inc-ns1:inc-ns4:inc-ns2:test-ns3', 'empty_view', tuple(), {'arg1': '42', 'arg2': '37'}),\n\n    # Namespaces capturing variables\n    ('/inc70/', 'inner-nothing', None, 'inc-ns5', views.empty_view, tuple(), {'outer': '70'}),\n    ('/inc78/extra/foobar/', 'inner-extra', None, 'inc-ns5', views.empty_view, tuple(), {'outer':'78', 'extra':'foobar'}),\n)\n\ntest_data = (\n    ('places', '/places/3/', [3], {}),\n    ('places', '/places/3/', ['3'], {}),\n    ('places', NoReverseMatch, ['a'], {}),\n    ('places', NoReverseMatch, [], {}),\n    ('places?', '/place/', [], {}),\n    ('places+', '/places/', [], {}),\n    ('places*', '/place/', [], {}),\n    ('places2?', '/', [], {}),\n    ('places2+', '/places/', [], {}),\n    ('places2*', '/', [], {}),\n    ('places3', '/places/4/', [4], {}),\n    ('places3', '/places/harlem/', ['harlem'], {}),\n    ('places3', NoReverseMatch, ['harlem64'], {}),\n    ('places4', '/places/3/', [], {'id': 3}),\n    ('people', NoReverseMatch, [], {}),\n    ('people', '/people/adrian/', ['adrian'], {}),\n    ('people', '/people/adrian/', [], {'name': 'adrian'}),\n    ('people', NoReverseMatch, ['name with spaces'], {}),\n    ('people', NoReverseMatch, [], {'name': 'name with spaces'}),\n    ('people2', '/people/name/', [], {}),\n    ('people2a', '/people/name/fred/', ['fred'], {}),\n    ('people_backref', '/people/nate-nate/', ['nate'], {}),\n    ('people_backref', '/people/nate-nate/', [], {'name': 'nate'}),\n    ('optional', '/optional/fred/', [], {'name': 'fred'}),\n    ('optional', '/optional/fred/', ['fred'], {}),\n    ('hardcoded', '/hardcoded/', [], {}),\n    ('hardcoded2', '/hardcoded/doc.pdf', [], {}),\n    ('people3', '/people/il/adrian/', [], {'state': 'il', 'name': 'adrian'}),\n    ('people3', NoReverseMatch, [], {'state': 'il'}),\n    ('people3', NoReverseMatch, [], {'name': 'adrian'}),\n    ('people4', NoReverseMatch, [], {'state': 'il', 'name': 'adrian'}),\n    ('people6', '/people/il/test/adrian/', ['il/test', 'adrian'], {}),\n    ('people6', '/people//adrian/', ['adrian'], {}),\n    ('range', '/character_set/a/', [], {}),\n    ('range2', '/character_set/x/', [], {}),\n    ('price', '/price/$10/', ['10'], {}),\n    ('price2', '/price/$10/', ['10'], {}),\n    ('price3', '/price/$10/', ['10'], {}),\n    ('product', '/product/chocolate+($2.00)/', [], {'price': '2.00', 'product': 'chocolate'}),\n    ('headlines', '/headlines/2007.5.21/', [], dict(year=2007, month=5, day=21)),\n    ('windows', r'/windows_path/C:%5CDocuments%20and%20Settings%5Cspam/', [], dict(drive_name='C', path=r'Documents and Settings\\spam')),\n    ('special', r'/special_chars/+%5C$*/', [r'+\\$*'], {}),\n    ('special', NoReverseMatch, [''], {}),\n    ('mixed', '/john/0/', [], {'name': 'john'}),\n    ('repeats', '/repeats/a/', [], {}),\n    ('repeats2', '/repeats/aa/', [], {}),\n    ('repeats3', '/repeats/aa/', [], {}),\n    ('insensitive', '/CaseInsensitive/fred', ['fred'], {}),\n    ('test', '/test/1', [], {}),\n    ('test2', '/test/2', [], {}),\n    ('inner-nothing', '/outer/42/', [], {'outer': '42'}),\n    ('inner-nothing', '/outer/42/', ['42'], {}),\n    ('inner-nothing', NoReverseMatch, ['foo'], {}),\n    ('inner-extra', '/outer/42/extra/inner/', [], {'extra': 'inner', 'outer': '42'}),\n    ('inner-extra', '/outer/42/extra/inner/', ['42', 'inner'], {}),\n    ('inner-extra', NoReverseMatch, ['fred', 'inner'], {}),\n    ('disjunction', NoReverseMatch, ['foo'], {}),\n    ('inner-disjunction', NoReverseMatch, ['10', '11'], {}),\n    ('extra-places', '/e-places/10/', ['10'], {}),\n    ('extra-people', '/e-people/fred/', ['fred'], {}),\n    ('extra-people', '/e-people/fred/', [], {'name': 'fred'}),\n    ('part', '/part/one/', [], {'value': 'one'}),\n    ('part', '/prefix/xx/part/one/', [], {'value': 'one', 'prefix': 'xx'}),\n    ('part2', '/part2/one/', [], {'value': 'one'}),\n    ('part2', '/part2/', [], {}),\n    ('part2', '/prefix/xx/part2/one/', [], {'value': 'one', 'prefix': 'xx'}),\n    ('part2', '/prefix/xx/part2/', [], {'prefix': 'xx'}),\n\n    # Regression for #9038\n    # These views are resolved by method name. Each method is deployed twice -\n    # once with an explicit argument, and once using the default value on\n    # the method. This is potentially ambiguous, as you have to pick the\n    # correct view for the arguments provided.\n    ('kwargs_view', '/arg_view/', [], {}),\n    ('kwargs_view', '/arg_view/10/', [], {'arg1':10}),\n    ('regressiontests.urlpatterns_reverse.views.absolute_kwargs_view', '/absolute_arg_view/', [], {}),\n    ('regressiontests.urlpatterns_reverse.views.absolute_kwargs_view', '/absolute_arg_view/10/', [], {'arg1':10}),\n    ('non_path_include', '/includes/non_path_include/', [], {}),\n\n    # Tests for #13154\n    ('defaults', '/defaults_view1/3/', [], {'arg1': 3, 'arg2': 1}),\n    ('defaults', '/defaults_view2/3/', [], {'arg1': 3, 'arg2': 2}),\n    ('defaults', NoReverseMatch, [], {'arg1': 3, 'arg2': 3}),\n    ('defaults', NoReverseMatch, [], {'arg2': 1}),\n)\n\nclass NoURLPatternsTests(TestCase):\n    urls = 'regressiontests.urlpatterns_reverse.no_urls'\n\n    def test_no_urls_exception(self):\n        \"\"\"\n        RegexURLResolver should raise an exception when no urlpatterns exist.\n        \"\"\"\n        resolver = RegexURLResolver(r'^$', self.urls)\n\n        self.assertRaisesMessage(ImproperlyConfigured,\n            \"The included urlconf regressiontests.urlpatterns_reverse.no_urls \"\\\n            \"doesn't have any patterns in it\", getattr, resolver, 'url_patterns')\n\nclass URLPatternReverse(TestCase):\n    urls = 'regressiontests.urlpatterns_reverse.urls'\n\n    def test_urlpattern_reverse(self):\n        for name, expected, args, kwargs in test_data:\n            try:\n                got = reverse(name, args=args, kwargs=kwargs)\n            except NoReverseMatch:\n                self.assertEqual(expected, NoReverseMatch)\n            else:\n                self.assertEqual(got, expected)\n\n    def test_reverse_none(self):\n        # Reversing None should raise an error, not return the last un-named view.\n        self.assertRaises(NoReverseMatch, reverse, None)\n\n    def test_prefix_braces(self):\n        self.assertEqual('/%7B%7Binvalid%7D%7D/includes/non_path_include/',\n               reverse('non_path_include', prefix='/{{invalid}}/'))\n\n    def test_prefix_parenthesis(self):\n        self.assertEqual('/bogus%29/includes/non_path_include/',\n               reverse('non_path_include', prefix='/bogus)/'))\n\n    def test_prefix_format_char(self):\n        self.assertEqual('/bump%2520map/includes/non_path_include/',\n               reverse('non_path_include', prefix='/bump%20map/'))\n\nclass ResolverTests(unittest.TestCase):\n    def test_resolver_repr(self):\n        \"\"\"\n        Test repr of RegexURLResolver, especially when urlconf_name is a list\n        (#17892).\n        \"\"\"\n        # Pick a resolver from a namespaced urlconf\n        resolver = get_resolver('regressiontests.urlpatterns_reverse.namespace_urls')\n        sub_resolver = resolver.namespace_dict['test-ns1'][1]\n        self.assertIn('<RegexURLPattern list>', repr(sub_resolver))\n\n    def test_non_regex(self):\n        \"\"\"\n        Verifies that we raise a Resolver404 if what we are resolving doesn't\n        meet the basic requirements of a path to match - i.e., at the very\n        least, it matches the root pattern '^/'. We must never return None\n        from resolve, or we will get a TypeError further down the line.\n\n        Regression for #10834.\n        \"\"\"\n        self.assertRaises(Resolver404, resolve, '')\n        self.assertRaises(Resolver404, resolve, 'a')\n        self.assertRaises(Resolver404, resolve, '\\\\')\n        self.assertRaises(Resolver404, resolve, '.')\n\n    def test_404_tried_urls_have_names(self):\n        \"\"\"\n        Verifies that the list of URLs that come back from a Resolver404\n        exception contains a list in the right format for printing out in\n        the DEBUG 404 page with both the patterns and URL names, if available.\n        \"\"\"\n        urls = 'regressiontests.urlpatterns_reverse.named_urls'\n        # this list matches the expected URL types and names returned when\n        # you try to resolve a non-existent URL in the first level of included\n        # URLs in named_urls.py (e.g., '/included/non-existent-url')\n        url_types_names = [\n            [{'type': RegexURLPattern, 'name': 'named-url1'}],\n            [{'type': RegexURLPattern, 'name': 'named-url2'}],\n            [{'type': RegexURLPattern, 'name': None}],\n            [{'type': RegexURLResolver}, {'type': RegexURLPattern, 'name': 'named-url3'}],\n            [{'type': RegexURLResolver}, {'type': RegexURLPattern, 'name': 'named-url4'}],\n            [{'type': RegexURLResolver}, {'type': RegexURLPattern, 'name': None}],\n            [{'type': RegexURLResolver}, {'type': RegexURLResolver}],\n        ]\n        try:\n            resolve('/included/non-existent-url', urlconf=urls)\n            self.fail('resolve did not raise a 404')\n        except Resolver404 as e:\n            # make sure we at least matched the root ('/') url resolver:\n            self.assertTrue('tried' in e.args[0])\n            tried = e.args[0]['tried']\n            self.assertEqual(len(e.args[0]['tried']), len(url_types_names), 'Wrong number of tried URLs returned.  Expected %s, got %s.' % (len(url_types_names), len(e.args[0]['tried'])))\n            for tried, expected in zip(e.args[0]['tried'], url_types_names):\n                for t, e in zip(tried, expected):\n                    self.assertTrue(isinstance(t, e['type']), str('%s is not an instance of %s') % (t, e['type']))\n                    if 'name' in e:\n                        if not e['name']:\n                            self.assertTrue(t.name is None, 'Expected no URL name but found %s.' % t.name)\n                        else:\n                            self.assertEqual(t.name, e['name'], 'Wrong URL name.  Expected \"%s\", got \"%s\".' % (e['name'], t.name))\n\nclass ReverseLazyTest(TestCase):\n    urls = 'regressiontests.urlpatterns_reverse.reverse_lazy_urls'\n\n    def test_redirect_with_lazy_reverse(self):\n        response = self.client.get('/redirect/')\n        self.assertRedirects(response, \"/redirected_to/\", status_code=301)\n\n    def test_user_permission_with_lazy_reverse(self):\n        user = User.objects.create_user('alfred', 'alfred@example.com', password='testpw')\n        response = self.client.get('/login_required_view/')\n        self.assertRedirects(response, \"/login/?next=/login_required_view/\", status_code=302)\n        self.client.login(username='alfred', password='testpw')\n        response = self.client.get('/login_required_view/')\n        self.assertEqual(response.status_code, 200)\n\nclass ReverseShortcutTests(TestCase):\n    urls = 'regressiontests.urlpatterns_reverse.urls'\n\n    def test_redirect_to_object(self):\n        # We don't really need a model; just something with a get_absolute_url\n        class FakeObj(object):\n            def get_absolute_url(self):\n                return \"/hi-there/\"\n\n        res = redirect(FakeObj())\n        self.assertTrue(isinstance(res, HttpResponseRedirect))\n        self.assertEqual(res['Location'], '/hi-there/')\n\n        res = redirect(FakeObj(), permanent=True)\n        self.assertTrue(isinstance(res, HttpResponsePermanentRedirect))\n        self.assertEqual(res['Location'], '/hi-there/')\n\n    def test_redirect_to_view_name(self):\n        res = redirect('hardcoded2')\n        self.assertEqual(res['Location'], '/hardcoded/doc.pdf')\n        res = redirect('places', 1)\n        self.assertEqual(res['Location'], '/places/1/')\n        res = redirect('headlines', year='2008', month='02', day='17')\n        self.assertEqual(res['Location'], '/headlines/2008.02.17/')\n        self.assertRaises(NoReverseMatch, redirect, 'not-a-view')\n\n    def test_redirect_to_url(self):\n        res = redirect('/foo/')\n        self.assertEqual(res['Location'], '/foo/')\n        res = redirect('http://example.com/')\n        self.assertEqual(res['Location'], 'http://example.com/')\n\n    def test_redirect_view_object(self):\n        from .views import absolute_kwargs_view\n        res = redirect(absolute_kwargs_view)\n        self.assertEqual(res['Location'], '/absolute_arg_view/')\n        self.assertRaises(NoReverseMatch, redirect, absolute_kwargs_view, wrong_argument=None)\n\n\nclass NamespaceTests(TestCase):\n    urls = 'regressiontests.urlpatterns_reverse.namespace_urls'\n\n    def test_ambiguous_object(self):\n        \"Names deployed via dynamic URL objects that require namespaces can't be resolved\"\n        self.assertRaises(NoReverseMatch, reverse, 'urlobject-view')\n        self.assertRaises(NoReverseMatch, reverse, 'urlobject-view', args=[37,42])\n        self.assertRaises(NoReverseMatch, reverse, 'urlobject-view', kwargs={'arg1':42, 'arg2':37})\n\n    def test_ambiguous_urlpattern(self):\n        \"Names deployed via dynamic URL objects that require namespaces can't be resolved\"\n        self.assertRaises(NoReverseMatch, reverse, 'inner-nothing')\n        self.assertRaises(NoReverseMatch, reverse, 'inner-nothing', args=[37,42])\n        self.assertRaises(NoReverseMatch, reverse, 'inner-nothing', kwargs={'arg1':42, 'arg2':37})\n\n    def test_non_existent_namespace(self):\n        \"Non-existent namespaces raise errors\"\n        self.assertRaises(NoReverseMatch, reverse, 'blahblah:urlobject-view')\n        self.assertRaises(NoReverseMatch, reverse, 'test-ns1:blahblah:urlobject-view')\n\n    def test_normal_name(self):\n        \"Normal lookups work as expected\"\n        self.assertEqual('/normal/', reverse('normal-view'))\n        self.assertEqual('/normal/37/42/', reverse('normal-view', args=[37,42]))\n        self.assertEqual('/normal/42/37/', reverse('normal-view', kwargs={'arg1':42, 'arg2':37}))\n        self.assertEqual('/+%5C$*/', reverse('special-view'))\n\n    def test_simple_included_name(self):\n        \"Normal lookups work on names included from other patterns\"\n        self.assertEqual('/included/normal/', reverse('inc-normal-view'))\n        self.assertEqual('/included/normal/37/42/', reverse('inc-normal-view', args=[37,42]))\n        self.assertEqual('/included/normal/42/37/', reverse('inc-normal-view', kwargs={'arg1':42, 'arg2':37}))\n        self.assertEqual('/included/+%5C$*/', reverse('inc-special-view'))\n\n    def test_namespace_object(self):\n        \"Dynamic URL objects can be found using a namespace\"\n        self.assertEqual('/test1/inner/', reverse('test-ns1:urlobject-view'))\n        self.assertEqual('/test1/inner/37/42/', reverse('test-ns1:urlobject-view', args=[37,42]))\n        self.assertEqual('/test1/inner/42/37/', reverse('test-ns1:urlobject-view', kwargs={'arg1':42, 'arg2':37}))\n        self.assertEqual('/test1/inner/+%5C$*/', reverse('test-ns1:urlobject-special-view'))\n\n    def test_embedded_namespace_object(self):\n        \"Namespaces can be installed anywhere in the URL pattern tree\"\n        self.assertEqual('/included/test3/inner/', reverse('test-ns3:urlobject-view'))\n        self.assertEqual('/included/test3/inner/37/42/', reverse('test-ns3:urlobject-view', args=[37,42]))\n        self.assertEqual('/included/test3/inner/42/37/', reverse('test-ns3:urlobject-view', kwargs={'arg1':42, 'arg2':37}))\n        self.assertEqual('/included/test3/inner/+%5C$*/', reverse('test-ns3:urlobject-special-view'))\n\n    def test_namespace_pattern(self):\n        \"Namespaces can be applied to include()'d urlpatterns\"\n        self.assertEqual('/ns-included1/normal/', reverse('inc-ns1:inc-normal-view'))\n        self.assertEqual('/ns-included1/normal/37/42/', reverse('inc-ns1:inc-normal-view', args=[37,42]))\n        self.assertEqual('/ns-included1/normal/42/37/', reverse('inc-ns1:inc-normal-view', kwargs={'arg1':42, 'arg2':37}))\n        self.assertEqual('/ns-included1/+%5C$*/', reverse('inc-ns1:inc-special-view'))\n\n    def test_namespace_pattern_with_variable_prefix(self):\n        \"When using a include with namespaces when there is a regex variable in front of it\"\n        self.assertEqual('/ns-outer/42/normal/', reverse('inc-outer:inc-normal-view', kwargs={'outer':42}))\n        self.assertEqual('/ns-outer/42/normal/', reverse('inc-outer:inc-normal-view', args=[42]))\n        self.assertEqual('/ns-outer/42/normal/37/4/', reverse('inc-outer:inc-normal-view', kwargs={'outer':42, 'arg1': 37, 'arg2': 4}))\n        self.assertEqual('/ns-outer/42/normal/37/4/', reverse('inc-outer:inc-normal-view', args=[42, 37, 4]))\n        self.assertEqual('/ns-outer/42/+%5C$*/', reverse('inc-outer:inc-special-view',  kwargs={'outer':42}))\n        self.assertEqual('/ns-outer/42/+%5C$*/', reverse('inc-outer:inc-special-view',  args=[42]))\n\n    def test_multiple_namespace_pattern(self):\n        \"Namespaces can be embedded\"\n        self.assertEqual('/ns-included1/test3/inner/', reverse('inc-ns1:test-ns3:urlobject-view'))\n        self.assertEqual('/ns-included1/test3/inner/37/42/', reverse('inc-ns1:test-ns3:urlobject-view', args=[37,42]))\n        self.assertEqual('/ns-included1/test3/inner/42/37/', reverse('inc-ns1:test-ns3:urlobject-view', kwargs={'arg1':42, 'arg2':37}))\n        self.assertEqual('/ns-included1/test3/inner/+%5C$*/', reverse('inc-ns1:test-ns3:urlobject-special-view'))\n\n    def test_nested_namespace_pattern(self):\n        \"Namespaces can be nested\"\n        self.assertEqual('/ns-included1/ns-included4/ns-included1/test3/inner/', reverse('inc-ns1:inc-ns4:inc-ns1:test-ns3:urlobject-view'))\n        self.assertEqual('/ns-included1/ns-included4/ns-included1/test3/inner/37/42/', reverse('inc-ns1:inc-ns4:inc-ns1:test-ns3:urlobject-view', args=[37,42]))\n        self.assertEqual('/ns-included1/ns-included4/ns-included1/test3/inner/42/37/', reverse('inc-ns1:inc-ns4:inc-ns1:test-ns3:urlobject-view', kwargs={'arg1':42, 'arg2':37}))\n        self.assertEqual('/ns-included1/ns-included4/ns-included1/test3/inner/+%5C$*/', reverse('inc-ns1:inc-ns4:inc-ns1:test-ns3:urlobject-special-view'))\n\n    def test_app_lookup_object(self):\n        \"A default application namespace can be used for lookup\"\n        self.assertEqual('/default/inner/', reverse('testapp:urlobject-view'))\n        self.assertEqual('/default/inner/37/42/', reverse('testapp:urlobject-view', args=[37,42]))\n        self.assertEqual('/default/inner/42/37/', reverse('testapp:urlobject-view', kwargs={'arg1':42, 'arg2':37}))\n        self.assertEqual('/default/inner/+%5C$*/', reverse('testapp:urlobject-special-view'))\n\n    def test_app_lookup_object_with_default(self):\n        \"A default application namespace is sensitive to the 'current' app can be used for lookup\"\n        self.assertEqual('/included/test3/inner/', reverse('testapp:urlobject-view', current_app='test-ns3'))\n        self.assertEqual('/included/test3/inner/37/42/', reverse('testapp:urlobject-view', args=[37,42], current_app='test-ns3'))\n        self.assertEqual('/included/test3/inner/42/37/', reverse('testapp:urlobject-view', kwargs={'arg1':42, 'arg2':37}, current_app='test-ns3'))\n        self.assertEqual('/included/test3/inner/+%5C$*/', reverse('testapp:urlobject-special-view', current_app='test-ns3'))\n\n    def test_app_lookup_object_without_default(self):\n        \"An application namespace without a default is sensitive to the 'current' app can be used for lookup\"\n        self.assertEqual('/other2/inner/', reverse('nodefault:urlobject-view'))\n        self.assertEqual('/other2/inner/37/42/', reverse('nodefault:urlobject-view', args=[37,42]))\n        self.assertEqual('/other2/inner/42/37/', reverse('nodefault:urlobject-view', kwargs={'arg1':42, 'arg2':37}))\n        self.assertEqual('/other2/inner/+%5C$*/', reverse('nodefault:urlobject-special-view'))\n\n        self.assertEqual('/other1/inner/', reverse('nodefault:urlobject-view', current_app='other-ns1'))\n        self.assertEqual('/other1/inner/37/42/', reverse('nodefault:urlobject-view', args=[37,42], current_app='other-ns1'))\n        self.assertEqual('/other1/inner/42/37/', reverse('nodefault:urlobject-view', kwargs={'arg1':42, 'arg2':37}, current_app='other-ns1'))\n        self.assertEqual('/other1/inner/+%5C$*/', reverse('nodefault:urlobject-special-view', current_app='other-ns1'))\n\n    def test_special_chars_namespace(self):\n        self.assertEqual('/+%5C$*/included/normal/', reverse('special:inc-normal-view'))\n        self.assertEqual('/+%5C$*/included/normal/37/42/', reverse('special:inc-normal-view', args=[37,42]))\n        self.assertEqual('/+%5C$*/included/normal/42/37/', reverse('special:inc-normal-view', kwargs={'arg1':42, 'arg2':37}))\n        self.assertEqual('/+%5C$*/included/+%5C$*/', reverse('special:inc-special-view'))\n\n    def test_namespaces_with_variables(self):\n        \"Namespace prefixes can capture variables: see #15900\"\n        self.assertEqual('/inc70/', reverse('inc-ns5:inner-nothing', kwargs={'outer': '70'}))\n        self.assertEqual('/inc78/extra/foobar/', reverse('inc-ns5:inner-extra', kwargs={'outer':'78', 'extra':'foobar'}))\n        self.assertEqual('/inc70/', reverse('inc-ns5:inner-nothing', args=['70']))\n        self.assertEqual('/inc78/extra/foobar/', reverse('inc-ns5:inner-extra', args=['78','foobar']))\n\nclass RequestURLconfTests(TestCase):\n    def setUp(self):\n        self.root_urlconf = settings.ROOT_URLCONF\n        self.middleware_classes = settings.MIDDLEWARE_CLASSES\n        settings.ROOT_URLCONF = urlconf_outer.__name__\n\n    def tearDown(self):\n        settings.ROOT_URLCONF = self.root_urlconf\n        settings.MIDDLEWARE_CLASSES = self.middleware_classes\n\n    def test_urlconf(self):\n        response = self.client.get('/test/me/')\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.content, b'outer:/test/me/,'\n                                           b'inner:/inner_urlconf/second_test/')\n        response = self.client.get('/inner_urlconf/second_test/')\n        self.assertEqual(response.status_code, 200)\n        response = self.client.get('/second_test/')\n        self.assertEqual(response.status_code, 404)\n\n    def test_urlconf_overridden(self):\n        settings.MIDDLEWARE_CLASSES += (\n            '%s.ChangeURLconfMiddleware' % middleware.__name__,\n        )\n        response = self.client.get('/test/me/')\n        self.assertEqual(response.status_code, 404)\n        response = self.client.get('/inner_urlconf/second_test/')\n        self.assertEqual(response.status_code, 404)\n        response = self.client.get('/second_test/')\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.content, b'outer:,inner:/second_test/')\n\n    def test_urlconf_overridden_with_null(self):\n        settings.MIDDLEWARE_CLASSES += (\n            '%s.NullChangeURLconfMiddleware' % middleware.__name__,\n        )\n        self.assertRaises(ImproperlyConfigured, self.client.get, '/test/me/')\n\nclass ErrorHandlerResolutionTests(TestCase):\n    \"\"\"Tests for handler404 and handler500\"\"\"\n\n    def setUp(self):\n        from django.core.urlresolvers import RegexURLResolver\n        urlconf = 'regressiontests.urlpatterns_reverse.urls_error_handlers'\n        urlconf_callables = 'regressiontests.urlpatterns_reverse.urls_error_handlers_callables'\n        self.resolver = RegexURLResolver(r'^$', urlconf)\n        self.callable_resolver = RegexURLResolver(r'^$', urlconf_callables)\n\n    def test_named_handlers(self):\n        from .views import empty_view\n        handler = (empty_view, {})\n        self.assertEqual(self.resolver.resolve404(), handler)\n        self.assertEqual(self.resolver.resolve500(), handler)\n\n    def test_callable_handers(self):\n        from .views import empty_view\n        handler = (empty_view, {})\n        self.assertEqual(self.callable_resolver.resolve404(), handler)\n        self.assertEqual(self.callable_resolver.resolve500(), handler)\n\nclass DefaultErrorHandlerTests(TestCase):\n    urls = 'regressiontests.urlpatterns_reverse.urls_without_full_import'\n\n    def test_default_handler(self):\n        \"If the urls.py doesn't specify handlers, the defaults are used\"\n        try:\n            response = self.client.get('/test/')\n            self.assertEqual(response.status_code, 404)\n        except AttributeError:\n            self.fail(\"Shouldn't get an AttributeError due to undefined 404 handler\")\n\n        try:\n            self.assertRaises(ValueError, self.client.get, '/bad_view/')\n        except AttributeError:\n            self.fail(\"Shouldn't get an AttributeError due to undefined 500 handler\")\n\nclass NoRootUrlConfTests(TestCase):\n    \"\"\"Tests for handler404 and handler500 if urlconf is None\"\"\"\n    urls = None\n\n    def test_no_handler_exception(self):\n        self.assertRaises(ImproperlyConfigured, self.client.get, '/test/me/')\n\nclass ResolverMatchTests(TestCase):\n    urls = 'regressiontests.urlpatterns_reverse.namespace_urls'\n\n    def test_urlpattern_resolve(self):\n        for path, name, app_name, namespace, func, args, kwargs in resolve_test_data:\n            # Test legacy support for extracting \"function, args, kwargs\"\n            match_func, match_args, match_kwargs = resolve(path)\n            self.assertEqual(match_func, func)\n            self.assertEqual(match_args, args)\n            self.assertEqual(match_kwargs, kwargs)\n\n            # Test ResolverMatch capabilities.\n            match = resolve(path)\n            self.assertEqual(match.__class__, ResolverMatch)\n            self.assertEqual(match.url_name, name)\n            self.assertEqual(match.args, args)\n            self.assertEqual(match.kwargs, kwargs)\n            self.assertEqual(match.app_name, app_name)\n            self.assertEqual(match.namespace, namespace)\n            self.assertEqual(match.func, func)\n\n            # ... and for legacy purposes:\n            self.assertEqual(match[0], func)\n            self.assertEqual(match[1], args)\n            self.assertEqual(match[2], kwargs)\n\n    def test_resolver_match_on_request(self):\n        response = self.client.get('/resolver_match/')\n        resolver_match = response.resolver_match\n        self.assertEqual(resolver_match.url_name, 'test-resolver-match')\n\nclass ErroneousViewTests(TestCase):\n    urls = 'regressiontests.urlpatterns_reverse.erroneous_urls'\n\n    def test_erroneous_resolve(self):\n        self.assertRaises(ImportError, self.client.get, '/erroneous_inner/')\n        self.assertRaises(ImportError, self.client.get, '/erroneous_outer/')\n        self.assertRaises(ViewDoesNotExist, self.client.get, '/missing_inner/')\n        self.assertRaises(ViewDoesNotExist, self.client.get, '/missing_outer/')\n        self.assertRaises(ViewDoesNotExist, self.client.get, '/uncallable/')\n\n    def test_erroneous_reverse(self):\n        \"\"\"\n        Ensure that a useful exception is raised when a regex is invalid in the\n        URLConf.\n        Refs #6170.\n        \"\"\"\n        # The regex error will be hit before NoReverseMatch can be raised\n        self.assertRaises(ImproperlyConfigured, reverse, 'whatever blah blah')\n\nclass ViewLoadingTests(TestCase):\n    def test_view_loading(self):\n        # A missing view (identified by an AttributeError) should raise\n        # ViewDoesNotExist, ...\n        six.assertRaisesRegex(self, ViewDoesNotExist, \".*View does not exist in.*\",\n            get_callable,\n            'regressiontests.urlpatterns_reverse.views.i_should_not_exist')\n        # ... but if the AttributeError is caused by something else don't\n        # swallow it.\n        self.assertRaises(AttributeError, get_callable,\n            'regressiontests.urlpatterns_reverse.views_broken.i_am_broken')\n\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/urlpatterns_reverse/urlconf_inner.py",
    "content": "from django.conf.urls import patterns, url\nfrom django.template import Template, Context\nfrom django.http import HttpResponse\n\ndef inner_view(request):\n    content = Template('{% url \"outer\" as outer_url %}outer:{{ outer_url }},'\n                       '{% url \"inner\" as inner_url %}inner:{{ inner_url }}').render(Context())\n    return HttpResponse(content)\n\nurlpatterns = patterns('',\n    url(r'^second_test/$', inner_view, name='inner'),\n)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/urlpatterns_reverse/urlconf_outer.py",
    "content": "from __future__ import absolute_import\n\nfrom django.conf.urls import patterns, url, include\n\nfrom . import urlconf_inner\n\n\nurlpatterns = patterns('',\n    url(r'^test/me/$', urlconf_inner.inner_view, name='outer'),\n    url(r'^inner_urlconf/', include(urlconf_inner.__name__))\n)"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/urlpatterns_reverse/urls.py",
    "content": "from __future__ import absolute_import\n\nfrom django.conf.urls import patterns, url, include\n\nfrom .views import empty_view, absolute_kwargs_view\n\n\nother_patterns = patterns('',\n    url(r'non_path_include/$', empty_view, name='non_path_include'),\n)\n\nurlpatterns = patterns('',\n    url(r'^places/(\\d+)/$', empty_view, name='places'),\n    url(r'^places?/$', empty_view, name=\"places?\"),\n    url(r'^places+/$', empty_view, name=\"places+\"),\n    url(r'^places*/$', empty_view, name=\"places*\"),\n    url(r'^(?:places/)?$', empty_view, name=\"places2?\"),\n    url(r'^(?:places/)+$', empty_view, name=\"places2+\"),\n    url(r'^(?:places/)*$', empty_view, name=\"places2*\"),\n    url(r'^places/(\\d+|[a-z_]+)/', empty_view, name=\"places3\"),\n    url(r'^places/(?P<id>\\d+)/$', empty_view, name=\"places4\"),\n    url(r'^people/(?P<name>\\w+)/$', empty_view, name=\"people\"),\n    url(r'^people/(?:name/)', empty_view, name=\"people2\"),\n    url(r'^people/(?:name/(\\w+)/)?', empty_view, name=\"people2a\"),\n    url(r'^people/(?P<name>\\w+)-(?P=name)/$', empty_view, name=\"people_backref\"),\n    url(r'^optional/(?P<name>.*)/(?:.+/)?', empty_view, name=\"optional\"),\n    url(r'^hardcoded/$', empty_view, name=\"hardcoded\"),\n    url(r'^hardcoded/doc\\.pdf$', empty_view, name=\"hardcoded2\"),\n    url(r'^people/(?P<state>\\w\\w)/(?P<name>\\w+)/$', empty_view, name=\"people3\"),\n    url(r'^people/(?P<state>\\w\\w)/(?P<name>\\d)/$', empty_view, name=\"people4\"),\n    url(r'^people/((?P<state>\\w\\w)/test)?/(\\w+)/$', empty_view, name=\"people6\"),\n    url(r'^character_set/[abcdef0-9]/$', empty_view, name=\"range\"),\n    url(r'^character_set/[\\w]/$', empty_view, name=\"range2\"),\n    url(r'^price/\\$(\\d+)/$', empty_view, name=\"price\"),\n    url(r'^price/[$](\\d+)/$', empty_view, name=\"price2\"),\n    url(r'^price/[\\$](\\d+)/$', empty_view, name=\"price3\"),\n    url(r'^product/(?P<product>\\w+)\\+\\(\\$(?P<price>\\d+(\\.\\d+)?)\\)/$',\n            empty_view, name=\"product\"),\n    url(r'^headlines/(?P<year>\\d+)\\.(?P<month>\\d+)\\.(?P<day>\\d+)/$', empty_view,\n            name=\"headlines\"),\n    url(r'^windows_path/(?P<drive_name>[A-Z]):\\\\(?P<path>.+)/$', empty_view,\n            name=\"windows\"),\n    url(r'^special_chars/(.+)/$', empty_view, name=\"special\"),\n    url(r'^(?P<name>.+)/\\d+/$', empty_view, name=\"mixed\"),\n    url(r'^repeats/a{1,2}/$', empty_view, name=\"repeats\"),\n    url(r'^repeats/a{2,4}/$', empty_view, name=\"repeats2\"),\n    url(r'^repeats/a{2}/$', empty_view, name=\"repeats3\"),\n    url(r'^(?i)CaseInsensitive/(\\w+)', empty_view, name=\"insensitive\"),\n    url(r'^test/1/?', empty_view, name=\"test\"),\n    url(r'^(?i)test/2/?$', empty_view, name=\"test2\"),\n    url(r'^outer/(?P<outer>\\d+)/',\n            include('regressiontests.urlpatterns_reverse.included_urls')),\n    url('', include('regressiontests.urlpatterns_reverse.extra_urls')),\n\n    # This is non-reversible, but we shouldn't blow up when parsing it.\n    url(r'^(?:foo|bar)(\\w+)/$', empty_view, name=\"disjunction\"),\n\n    # Regression views for #9038. See tests for more details\n    url(r'arg_view/$', 'kwargs_view'),\n    url(r'arg_view/(?P<arg1>\\d+)/$', 'kwargs_view'),\n    url(r'absolute_arg_view/(?P<arg1>\\d+)/$', absolute_kwargs_view),\n    url(r'absolute_arg_view/$', absolute_kwargs_view),\n\n    # Tests for #13154. Mixed syntax to test both ways of defining URLs.\n    url(r'defaults_view1/(?P<arg1>\\d+)/', 'defaults_view', {'arg2': 1}, name='defaults'),\n    (r'defaults_view2/(?P<arg1>\\d+)/', 'defaults_view', {'arg2': 2}, 'defaults'),\n\n    url('^includes/', include(other_patterns)),\n)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/urlpatterns_reverse/urls_error_handlers.py",
    "content": "# Used by the ErrorHandlerResolutionTests test case.\n\nfrom django.conf.urls import patterns\n\nurlpatterns = patterns('')\n\nhandler404 = 'regressiontests.urlpatterns_reverse.views.empty_view'\nhandler500 = 'regressiontests.urlpatterns_reverse.views.empty_view'\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/urlpatterns_reverse/urls_error_handlers_callables.py",
    "content": "# Used by the ErrorHandlerResolutionTests test case.\n\nfrom __future__ import absolute_import\n\nfrom django.conf.urls import patterns\n\nfrom .views import empty_view\n\n\nurlpatterns = patterns('')\n\nhandler404 = empty_view\nhandler500 = empty_view\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/urlpatterns_reverse/urls_without_full_import.py",
    "content": "# A URLs file that doesn't use the default\n# from django.conf.urls import *\n# import pattern.\nfrom __future__ import absolute_import\n\nfrom django.conf.urls import patterns, url\n\nfrom .views import empty_view, bad_view\n\n\nurlpatterns = patterns('',\n    url(r'^test_view/$', empty_view, name=\"test_view\"),\n    url(r'^bad_view/$', bad_view, name=\"bad_view\"),\n)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/urlpatterns_reverse/views.py",
    "content": "from django.http import HttpResponse\nfrom django.views.generic import RedirectView\nfrom django.core.urlresolvers import reverse_lazy\n\nfrom django.contrib.auth.decorators import user_passes_test\n\ndef empty_view(request, *args, **kwargs):\n    return HttpResponse('')\n\ndef kwargs_view(request, arg1=1, arg2=2):\n    return HttpResponse('')\n\ndef absolute_kwargs_view(request, arg1=1, arg2=2):\n    return HttpResponse('')\n\ndef defaults_view(request, arg1, arg2):\n    pass\n\ndef erroneous_view(request):\n    import non_existent\n\ndef pass_resolver_match_view(request, *args, **kwargs):\n    response = HttpResponse('')\n    response.resolver_match = request.resolver_match\n    return response\n\nuncallable = \"Can I be a view? Pleeeease?\"\n\nclass ViewClass(object):\n    def __call__(self, request, *args, **kwargs):\n        return HttpResponse('')\n\nview_class_instance = ViewClass()\n\nclass LazyRedirectView(RedirectView):\n    url = reverse_lazy('named-lazy-url-redirected-to')\n\n@user_passes_test(lambda u: u.is_authenticated(), login_url=reverse_lazy('some-login-page'))\ndef login_required_view(request):\n    return HttpResponse('Hello you')\n\ndef bad_view(request, *args, **kwargs):\n    raise ValueError(\"I don't think I'm getting good value for this view\")\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/urlpatterns_reverse/views_broken.py",
    "content": "# I just raise an AttributeError to confuse the view loading mechanism\nraise AttributeError('I am here to confuse django.core.urlresolvers.get_callable')\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/utils/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/utils/archive.py",
    "content": "import os\nimport shutil\nimport tempfile\nfrom django.utils import unittest\n\nfrom django.utils.archive import Archive, extract\nfrom django.utils._os import upath\n\n\nTEST_DIR = os.path.join(os.path.dirname(upath(__file__)), 'archives')\n\n\nclass ArchiveTester(object):\n    archive = None\n\n    def setUp(self):\n        \"\"\"\n        Create temporary directory for testing extraction.\n        \"\"\"\n        self.old_cwd = os.getcwd()\n        self.tmpdir = tempfile.mkdtemp()\n        self.addCleanup(shutil.rmtree, self.tmpdir)\n        self.archive_path = os.path.join(TEST_DIR, self.archive)\n        # Always start off in TEST_DIR.\n        os.chdir(TEST_DIR)\n\n    def tearDown(self):\n        os.chdir(self.old_cwd)\n\n    def test_extract_method(self):\n        with Archive(self.archive) as archive:\n            archive.extract(self.tmpdir)\n        self.check_files(self.tmpdir)\n\n    def test_extract_method_no_to_path(self):\n        os.chdir(self.tmpdir)\n        with Archive(self.archive_path) as archive:\n            archive.extract()\n        self.check_files(self.tmpdir)\n\n    def test_extract_function(self):\n        extract(self.archive_path, self.tmpdir)\n        self.check_files(self.tmpdir)\n\n    def test_extract_function_no_to_path(self):\n        os.chdir(self.tmpdir)\n        extract(self.archive_path)\n        self.check_files(self.tmpdir)\n\n    def check_files(self, tmpdir):\n        self.assertTrue(os.path.isfile(os.path.join(self.tmpdir, '1')))\n        self.assertTrue(os.path.isfile(os.path.join(self.tmpdir, '2')))\n        self.assertTrue(os.path.isfile(os.path.join(self.tmpdir, 'foo', '1')))\n        self.assertTrue(os.path.isfile(os.path.join(self.tmpdir, 'foo', '2')))\n        self.assertTrue(os.path.isfile(os.path.join(self.tmpdir, 'foo', 'bar', '1')))\n        self.assertTrue(os.path.isfile(os.path.join(self.tmpdir, 'foo', 'bar', '2')))\n\n\nclass TestZip(ArchiveTester, unittest.TestCase):\n    archive = 'foobar.zip'\n\n\nclass TestTar(ArchiveTester, unittest.TestCase):\n    archive = 'foobar.tar'\n\n\nclass TestGzipTar(ArchiveTester, unittest.TestCase):\n    archive = 'foobar.tar.gz'\n\n\nclass TestBzip2Tar(ArchiveTester, unittest.TestCase):\n    archive = 'foobar.tar.bz2'\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/utils/baseconv.py",
    "content": "from unittest import TestCase\nfrom django.utils.baseconv import base2, base16, base36, base56, base62, base64, BaseConverter\nfrom django.utils.six.moves import xrange\n\nclass TestBaseConv(TestCase):\n\n    def test_baseconv(self):\n        nums = [-10 ** 10, 10 ** 10] + list(xrange(-100, 100))\n        for converter in [base2, base16, base36, base56, base62, base64]:\n            for i in nums:\n                self.assertEqual(i, converter.decode(converter.encode(i)))\n\n    def test_base11(self):\n        base11 = BaseConverter('0123456789-', sign='$')\n        self.assertEqual(base11.encode(1234), '-22')\n        self.assertEqual(base11.decode('-22'), 1234)\n        self.assertEqual(base11.encode(-1234), '$-22')\n        self.assertEqual(base11.decode('$-22'), -1234)\n\n    def test_base20(self):\n        base20 = BaseConverter('0123456789abcdefghij')\n        self.assertEqual(base20.encode(1234), '31e')\n        self.assertEqual(base20.decode('31e'), 1234)\n        self.assertEqual(base20.encode(-1234), '-31e')\n        self.assertEqual(base20.decode('-31e'), -1234)\n\n    def test_base64(self):\n        self.assertEqual(base64.encode(1234), 'JI')\n        self.assertEqual(base64.decode('JI'), 1234)\n        self.assertEqual(base64.encode(-1234), '$JI')\n        self.assertEqual(base64.decode('$JI'), -1234)\n\n    def test_base7(self):\n        base7 = BaseConverter('cjdhel3', sign='g')\n        self.assertEqual(base7.encode(1234), 'hejd')\n        self.assertEqual(base7.decode('hejd'), 1234)\n        self.assertEqual(base7.encode(-1234), 'ghejd')\n        self.assertEqual(base7.decode('ghejd'), -1234)\n\n    def test_exception(self):\n        self.assertRaises(ValueError, BaseConverter, 'abc', sign='a')\n        self.assertTrue(isinstance(BaseConverter('abc', sign='d'), BaseConverter))\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/utils/checksums.py",
    "content": "import unittest\n\nfrom django.utils import checksums\n\nclass TestUtilsChecksums(unittest.TestCase):\n\n    def check_output(self, function, value, output=None):\n        \"\"\"\n        Check that function(value) equals output.  If output is None,\n        check that function(value) equals value.\n        \"\"\"\n        if output is None:\n            output = value\n        self.assertEqual(function(value), output)\n\n    def test_luhn(self):\n        f = checksums.luhn\n        items = (\n            (4111111111111111, True), ('4111111111111111', True),\n            (4222222222222, True), (378734493671000, True),\n            (5424000000000015, True), (5555555555554444, True),\n            (1008, True), ('0000001008', True), ('000000001008', True),\n            (4012888888881881, True), (1234567890123456789012345678909, True),\n            (4111111111211111, False), (42222222222224, False),\n            (100, False), ('100', False), ('0000100', False),\n            ('abc', False), (None, False), (object(), False),\n        )\n        for value, output in items:\n            self.check_output(f, value, output)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/utils/crypto.py",
    "content": "from __future__ import unicode_literals\n\nimport binascii\nimport math\nimport timeit\nimport hashlib\n\nfrom django.utils import unittest\nfrom django.utils.crypto import constant_time_compare, pbkdf2\n\n\nclass TestUtilsCryptoMisc(unittest.TestCase):\n\n    def test_constant_time_compare(self):\n        # It's hard to test for constant time, just test the result.\n        self.assertTrue(constant_time_compare(b'spam', b'spam'))\n        self.assertFalse(constant_time_compare(b'spam', b'eggs'))\n        self.assertTrue(constant_time_compare('spam', 'spam'))\n        self.assertFalse(constant_time_compare('spam', 'eggs'))\n\n\nclass TestUtilsCryptoPBKDF2(unittest.TestCase):\n\n    # http://tools.ietf.org/html/draft-josefsson-pbkdf2-test-vectors-06\n    rfc_vectors = [\n        {\n            \"args\": {\n                \"password\": \"password\",\n                \"salt\": \"salt\",\n                \"iterations\": 1,\n                \"dklen\": 20,\n                \"digest\": hashlib.sha1,\n            },\n            \"result\": \"0c60c80f961f0e71f3a9b524af6012062fe037a6\",\n        },\n        {\n            \"args\": {\n                \"password\": \"password\",\n                \"salt\": \"salt\",\n                \"iterations\": 2,\n                \"dklen\": 20,\n                \"digest\": hashlib.sha1,\n            },\n            \"result\": \"ea6c014dc72d6f8ccd1ed92ace1d41f0d8de8957\",\n        },\n        {\n            \"args\": {\n                \"password\": \"password\",\n                \"salt\": \"salt\",\n                \"iterations\": 4096,\n                \"dklen\": 20,\n                \"digest\": hashlib.sha1,\n            },\n            \"result\": \"4b007901b765489abead49d926f721d065a429c1\",\n        },\n        # # this takes way too long :(\n        # {\n        #     \"args\": {\n        #         \"password\": \"password\",\n        #         \"salt\": \"salt\",\n        #         \"iterations\": 16777216,\n        #         \"dklen\": 20,\n        #         \"digest\": hashlib.sha1,\n        #     },\n        #     \"result\": \"eefe3d61cd4da4e4e9945b3d6ba2158c2634e984\",\n        # },\n        {\n            \"args\": {\n                \"password\": \"passwordPASSWORDpassword\",\n                \"salt\": \"saltSALTsaltSALTsaltSALTsaltSALTsalt\",\n                \"iterations\": 4096,\n                \"dklen\": 25,\n                \"digest\": hashlib.sha1,\n            },\n            \"result\": \"3d2eec4fe41c849b80c8d83662c0e44a8b291a964cf2f07038\",\n        },\n        {\n            \"args\": {\n                \"password\": \"pass\\0word\",\n                \"salt\": \"sa\\0lt\",\n                \"iterations\": 4096,\n                \"dklen\": 16,\n                \"digest\": hashlib.sha1,\n            },\n            \"result\": \"56fa6aa75548099dcc37d7f03425e0c3\",\n        },\n    ]\n\n    regression_vectors = [\n        {\n            \"args\": {\n                \"password\": \"password\",\n                \"salt\": \"salt\",\n                \"iterations\": 1,\n                \"dklen\": 20,\n                \"digest\": hashlib.sha256,\n            },\n            \"result\": \"120fb6cffcf8b32c43e7225256c4f837a86548c9\",\n        },\n        {\n            \"args\": {\n                \"password\": \"password\",\n                \"salt\": \"salt\",\n                \"iterations\": 1,\n                \"dklen\": 20,\n                \"digest\": hashlib.sha512,\n            },\n            \"result\": \"867f70cf1ade02cff3752599a3a53dc4af34c7a6\",\n        },\n        {\n            \"args\": {\n                \"password\": \"password\",\n                \"salt\": \"salt\",\n                \"iterations\": 1000,\n                \"dklen\": 0,\n                \"digest\": hashlib.sha512,\n            },\n            \"result\": (\"afe6c5530785b6cc6b1c6453384731bd5ee432ee\"\n                       \"549fd42fb6695779ad8a1c5bf59de69c48f774ef\"\n                       \"c4007d5298f9033c0241d5ab69305e7b64eceeb8d\"\n                       \"834cfec\"),\n        },\n        # Check leading zeros are not stripped (#17481)\n        {\n            \"args\": {\n                \"password\": b'\\xba',\n                \"salt\": \"salt\",\n                \"iterations\": 1,\n                \"dklen\": 20,\n                \"digest\": hashlib.sha1,\n            },\n            \"result\": '0053d3b91a7f1e54effebd6d68771e8a6e0b2c5b',\n        },\n    ]\n\n    def test_public_vectors(self):\n        for vector in self.rfc_vectors:\n            result = pbkdf2(**vector['args'])\n            self.assertEqual(binascii.hexlify(result).decode('ascii'),\n                             vector['result'])\n\n    def test_regression_vectors(self):\n        for vector in self.regression_vectors:\n            result = pbkdf2(**vector['args'])\n            self.assertEqual(binascii.hexlify(result).decode('ascii'),\n                             vector['result'])\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/utils/datastructures.py",
    "content": "\"\"\"\nTests for stuff in django.utils.datastructures.\n\"\"\"\n\nimport copy\nimport pickle\nimport warnings\n\nfrom django.test import SimpleTestCase\nfrom django.utils.datastructures import (DictWrapper, ImmutableList,\n    MultiValueDict, MultiValueDictKeyError, MergeDict, SortedDict)\nfrom django.utils import six\n\n\nclass SortedDictTests(SimpleTestCase):\n    def setUp(self):\n        self.d1 = SortedDict()\n        self.d1[7] = 'seven'\n        self.d1[1] = 'one'\n        self.d1[9] = 'nine'\n\n        self.d2 = SortedDict()\n        self.d2[1] = 'one'\n        self.d2[9] = 'nine'\n        self.d2[0] = 'nil'\n        self.d2[7] = 'seven'\n\n    def test_basic_methods(self):\n        self.assertEqual(list(six.iterkeys(self.d1)), [7, 1, 9])\n        self.assertEqual(list(six.itervalues(self.d1)), ['seven', 'one', 'nine'])\n        self.assertEqual(list(six.iteritems(self.d1)), [(7, 'seven'), (1, 'one'), (9, 'nine')])\n\n    def test_overwrite_ordering(self):\n        \"\"\" Overwriting an item keeps its place. \"\"\"\n        self.d1[1] = 'ONE'\n        self.assertEqual(list(six.itervalues(self.d1)), ['seven', 'ONE', 'nine'])\n\n    def test_append_items(self):\n        \"\"\" New items go to the end. \"\"\"\n        self.d1[0] = 'nil'\n        self.assertEqual(list(six.iterkeys(self.d1)), [7, 1, 9, 0])\n\n    def test_delete_and_insert(self):\n        \"\"\"\n        Deleting an item, then inserting the same key again will place it\n        at the end.\n        \"\"\"\n        del self.d2[7]\n        self.assertEqual(list(six.iterkeys(self.d2)), [1, 9, 0])\n        self.d2[7] = 'lucky number 7'\n        self.assertEqual(list(six.iterkeys(self.d2)), [1, 9, 0, 7])\n\n    if not six.PY3:\n        def test_change_keys(self):\n            \"\"\"\n            Changing the keys won't do anything, it's only a copy of the\n            keys dict.\n\n            This test doesn't make sense under Python 3 because keys is\n            an iterator.\n            \"\"\"\n            k = self.d2.keys()\n            k.remove(9)\n            self.assertEqual(self.d2.keys(), [1, 9, 0, 7])\n\n    def test_init_keys(self):\n        \"\"\"\n        Initialising a SortedDict with two keys will just take the first one.\n\n        A real dict will actually take the second value so we will too, but\n        we'll keep the ordering from the first key found.\n        \"\"\"\n        tuples = ((2, 'two'), (1, 'one'), (2, 'second-two'))\n        d = SortedDict(tuples)\n\n        self.assertEqual(list(six.iterkeys(d)), [2, 1])\n\n        real_dict = dict(tuples)\n        self.assertEqual(sorted(six.itervalues(real_dict)), ['one', 'second-two'])\n\n        # Here the order of SortedDict values *is* what we are testing\n        self.assertEqual(list(six.itervalues(d)), ['second-two', 'one'])\n\n    def test_overwrite(self):\n        self.d1[1] = 'not one'\n        self.assertEqual(self.d1[1], 'not one')\n        self.assertEqual(list(six.iterkeys(self.d1)), list(six.iterkeys(self.d1.copy())))\n\n    def test_append(self):\n        self.d1[13] = 'thirteen'\n        self.assertEqual(\n            repr(self.d1),\n            \"{7: 'seven', 1: 'one', 9: 'nine', 13: 'thirteen'}\"\n        )\n\n    def test_pop(self):\n        self.assertEqual(self.d1.pop(1, 'missing'), 'one')\n        self.assertEqual(self.d1.pop(1, 'missing'), 'missing')\n\n        # We don't know which item will be popped in popitem(), so we'll\n        # just check that the number of keys has decreased.\n        l = len(self.d1)\n        self.d1.popitem()\n        self.assertEqual(l - len(self.d1), 1)\n\n    def test_dict_equality(self):\n        d = SortedDict((i, i) for i in range(3))\n        self.assertEqual(d, {0: 0, 1: 1, 2: 2})\n\n    def test_tuple_init(self):\n        d = SortedDict(((1, \"one\"), (0, \"zero\"), (2, \"two\")))\n        self.assertEqual(repr(d), \"{1: 'one', 0: 'zero', 2: 'two'}\")\n\n    def test_pickle(self):\n        self.assertEqual(\n            pickle.loads(pickle.dumps(self.d1, 2)),\n            {7: 'seven', 1: 'one', 9: 'nine'}\n        )\n\n    def test_copy(self):\n        orig = SortedDict(((1, \"one\"), (0, \"zero\"), (2, \"two\")))\n        copied = copy.copy(orig)\n        self.assertEqual(list(six.iterkeys(orig)), [1, 0, 2])\n        self.assertEqual(list(six.iterkeys(copied)), [1, 0, 2])\n\n    def test_clear(self):\n        self.d1.clear()\n        self.assertEqual(self.d1, {})\n        self.assertEqual(self.d1.keyOrder, [])\n\n    def test_reversed(self):\n        self.assertEqual(list(self.d1), [7, 1, 9])\n        self.assertEqual(list(self.d2), [1, 9, 0, 7])\n        self.assertEqual(list(reversed(self.d1)), [9, 1, 7])\n        self.assertEqual(list(reversed(self.d2)), [7, 0, 9, 1])\n\n    def test_insert(self):\n        d = SortedDict()\n        with warnings.catch_warnings(record=True) as w:\n            warnings.simplefilter(\"always\")\n            d.insert(0, \"hello\", \"world\")\n        assert w[0].category is PendingDeprecationWarning\n\n    def test_value_for_index(self):\n        d = SortedDict({\"a\": 3})\n        with warnings.catch_warnings(record=True) as w:\n            warnings.simplefilter(\"always\")\n            self.assertEqual(d.value_for_index(0), 3)\n        assert w[0].category is PendingDeprecationWarning\n\n\nclass MergeDictTests(SimpleTestCase):\n\n    def test_simple_mergedict(self):\n        d1 = {'chris':'cool', 'camri':'cute', 'cotton':'adorable',\n              'tulip':'snuggable', 'twoofme':'firstone'}\n\n        d2 = {'chris2':'cool2', 'camri2':'cute2', 'cotton2':'adorable2',\n              'tulip2':'snuggable2'}\n\n        d3 = {'chris3':'cool3', 'camri3':'cute3', 'cotton3':'adorable3',\n              'tulip3':'snuggable3'}\n\n        d4 = {'twoofme': 'secondone'}\n\n        md = MergeDict(d1, d2, d3)\n\n        self.assertEqual(md['chris'], 'cool')\n        self.assertEqual(md['camri'], 'cute')\n        self.assertEqual(md['twoofme'], 'firstone')\n\n        md2 = md.copy()\n        self.assertEqual(md2['chris'], 'cool')\n\n    def test_mergedict_merges_multivaluedict(self):\n        \"\"\" MergeDict can merge MultiValueDicts \"\"\"\n\n        multi1 = MultiValueDict({'key1': ['value1'],\n                                 'key2': ['value2', 'value3']})\n\n        multi2 = MultiValueDict({'key2': ['value4'],\n                                 'key4': ['value5', 'value6']})\n\n        mm = MergeDict(multi1, multi2)\n\n        # Although 'key2' appears in both dictionaries,\n        # only the first value is used.\n        self.assertEqual(mm.getlist('key2'), ['value2', 'value3'])\n        self.assertEqual(mm.getlist('key4'), ['value5', 'value6'])\n        self.assertEqual(mm.getlist('undefined'), [])\n\n        self.assertEqual(sorted(six.iterkeys(mm)), ['key1', 'key2', 'key4'])\n        self.assertEqual(len(list(six.itervalues(mm))), 3)\n\n        self.assertTrue('value1' in six.itervalues(mm))\n\n        self.assertEqual(sorted(six.iteritems(mm), key=lambda k: k[0]),\n                          [('key1', 'value1'), ('key2', 'value3'),\n                           ('key4', 'value6')])\n\n        self.assertEqual([(k,mm.getlist(k)) for k in sorted(mm)],\n                          [('key1', ['value1']),\n                           ('key2', ['value2', 'value3']),\n                           ('key4', ['value5', 'value6'])])\n\nclass MultiValueDictTests(SimpleTestCase):\n\n    def test_multivaluedict(self):\n        d = MultiValueDict({'name': ['Adrian', 'Simon'],\n                            'position': ['Developer']})\n\n        self.assertEqual(d['name'], 'Simon')\n        self.assertEqual(d.get('name'), 'Simon')\n        self.assertEqual(d.getlist('name'), ['Adrian', 'Simon'])\n        self.assertEqual(sorted(list(six.iteritems(d))),\n                          [('name', 'Simon'), ('position', 'Developer')])\n\n        self.assertEqual(sorted(list(six.iterlists(d))),\n                          [('name', ['Adrian', 'Simon']),\n                           ('position', ['Developer'])])\n\n        # MultiValueDictKeyError: \"Key 'lastname' not found in\n        # <MultiValueDict: {'position': ['Developer'],\n        #                   'name': ['Adrian', 'Simon']}>\"\n        six.assertRaisesRegex(self, MultiValueDictKeyError,\n            r'\"Key \\'lastname\\' not found in <MultiValueDict',\n            d.__getitem__, 'lastname')\n\n        self.assertEqual(d.get('lastname'), None)\n        self.assertEqual(d.get('lastname', 'nonexistent'), 'nonexistent')\n        self.assertEqual(d.getlist('lastname'), [])\n        self.assertEqual(d.getlist('doesnotexist', ['Adrian', 'Simon']),\n                         ['Adrian', 'Simon'])\n\n        d.setlist('lastname', ['Holovaty', 'Willison'])\n        self.assertEqual(d.getlist('lastname'), ['Holovaty', 'Willison'])\n        self.assertEqual(sorted(list(six.itervalues(d))),\n                         ['Developer', 'Simon', 'Willison'])\n\n    def test_appendlist(self):\n        d = MultiValueDict()\n        d.appendlist('name', 'Adrian')\n        d.appendlist('name', 'Simon')\n        self.assertEqual(d.getlist('name'), ['Adrian', 'Simon'])\n\n    def test_copy(self):\n        for copy_func in [copy.copy, lambda d: d.copy()]:\n            d1 = MultiValueDict({\n                \"developers\": [\"Carl\", \"Fred\"]\n            })\n            self.assertEqual(d1[\"developers\"], \"Fred\")\n            d2 = copy_func(d1)\n            d2.update({\"developers\": \"Groucho\"})\n            self.assertEqual(d2[\"developers\"], \"Groucho\")\n            self.assertEqual(d1[\"developers\"], \"Fred\")\n\n            d1 = MultiValueDict({\n                \"key\": [[]]\n            })\n            self.assertEqual(d1[\"key\"], [])\n            d2 = copy_func(d1)\n            d2[\"key\"].append(\"Penguin\")\n            self.assertEqual(d1[\"key\"], [\"Penguin\"])\n            self.assertEqual(d2[\"key\"], [\"Penguin\"])\n\n    def test_dict_translation(self):\n        mvd = MultiValueDict({\n            'devs': ['Bob', 'Joe'],\n            'pm': ['Rory'],\n        })\n        d = mvd.dict()\n        self.assertEqual(list(six.iterkeys(d)), list(six.iterkeys(mvd)))\n        for key in six.iterkeys(mvd):\n            self.assertEqual(d[key], mvd[key])\n\n        self.assertEqual({}, MultiValueDict().dict())\n\n\nclass ImmutableListTests(SimpleTestCase):\n\n    def test_sort(self):\n        d = ImmutableList(range(10))\n\n        # AttributeError: ImmutableList object is immutable.\n        self.assertRaisesMessage(AttributeError,\n            'ImmutableList object is immutable.', d.sort)\n\n        self.assertEqual(repr(d), '(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)')\n\n    def test_custom_warning(self):\n        d = ImmutableList(range(10), warning=\"Object is immutable!\")\n\n        self.assertEqual(d[1], 1)\n\n        # AttributeError: Object is immutable!\n        self.assertRaisesMessage(AttributeError,\n            'Object is immutable!', d.__setitem__, 1, 'test')\n\n\nclass DictWrapperTests(SimpleTestCase):\n\n    def test_dictwrapper(self):\n        f = lambda x: \"*%s\" % x\n        d = DictWrapper({'a': 'a'}, f, 'xx_')\n        self.assertEqual(\"Normal: %(a)s. Modified: %(xx_a)s\" % d,\n                          'Normal: a. Modified: *a')\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/utils/dateformat.py",
    "content": "from __future__ import unicode_literals\n\nfrom datetime import datetime, date\nimport os\nimport time\n\nfrom django.utils.dateformat import format\nfrom django.utils import dateformat, translation, unittest\nfrom django.utils.timezone import utc\nfrom django.utils.tzinfo import FixedOffset, LocalTimezone\n\n\nclass DateFormatTests(unittest.TestCase):\n    def setUp(self):\n        self.old_TZ = os.environ.get('TZ')\n        os.environ['TZ'] = 'Europe/Copenhagen'\n        translation.activate('en-us')\n\n        try:\n            # Check if a timezone has been set\n            time.tzset()\n            self.tz_tests = True\n        except AttributeError:\n            # No timezone available. Don't run the tests that require a TZ\n            self.tz_tests = False\n\n    def tearDown(self):\n        if self.old_TZ is None:\n            del os.environ['TZ']\n        else:\n            os.environ['TZ'] = self.old_TZ\n\n        # Cleanup - force re-evaluation of TZ environment variable.\n        if self.tz_tests:\n            time.tzset()\n\n    def test_date(self):\n        d = date(2009, 5, 16)\n        self.assertEqual(date.fromtimestamp(int(format(d, 'U'))), d)\n\n    def test_naive_datetime(self):\n        dt = datetime(2009, 5, 16, 5, 30, 30)\n        self.assertEqual(datetime.fromtimestamp(int(format(dt, 'U'))), dt)\n\n    def test_datetime_with_local_tzinfo(self):\n        ltz = LocalTimezone(datetime.now())\n        dt = datetime(2009, 5, 16, 5, 30, 30, tzinfo=ltz)\n        self.assertEqual(datetime.fromtimestamp(int(format(dt, 'U')), ltz), dt)\n        self.assertEqual(datetime.fromtimestamp(int(format(dt, 'U'))), dt.replace(tzinfo=None))\n\n    def test_datetime_with_tzinfo(self):\n        tz = FixedOffset(-510)\n        ltz = LocalTimezone(datetime.now())\n        dt = datetime(2009, 5, 16, 5, 30, 30, tzinfo=tz)\n        self.assertEqual(datetime.fromtimestamp(int(format(dt, 'U')), tz), dt)\n        self.assertEqual(datetime.fromtimestamp(int(format(dt, 'U')), ltz), dt)\n        self.assertEqual(datetime.fromtimestamp(int(format(dt, 'U'))), dt.astimezone(ltz).replace(tzinfo=None))\n        self.assertEqual(datetime.fromtimestamp(int(format(dt, 'U')), tz).utctimetuple(), dt.utctimetuple())\n        self.assertEqual(datetime.fromtimestamp(int(format(dt, 'U')), ltz).utctimetuple(), dt.utctimetuple())\n\n    def test_epoch(self):\n        udt = datetime(1970, 1, 1, tzinfo=utc)\n        self.assertEqual(format(udt, 'U'), '0')\n\n    def test_empty_format(self):\n        my_birthday = datetime(1979, 7, 8, 22, 00)\n\n        self.assertEqual(dateformat.format(my_birthday, ''), '')\n\n    def test_am_pm(self):\n        my_birthday = datetime(1979, 7, 8, 22, 00)\n\n        self.assertEqual(dateformat.format(my_birthday, 'a'), 'p.m.')\n\n    def test_microsecond(self):\n        # Regression test for #18951\n        dt = datetime(2009, 5, 16, microsecond=123)\n        self.assertEqual(dateformat.format(dt, 'u'), '000123')\n\n    def test_date_formats(self):\n        my_birthday = datetime(1979, 7, 8, 22, 00)\n        timestamp = datetime(2008, 5, 19, 11, 45, 23, 123456)\n\n        self.assertEqual(dateformat.format(my_birthday, 'A'), 'PM')\n        self.assertEqual(dateformat.format(timestamp, 'c'), '2008-05-19T11:45:23.123456')\n        self.assertEqual(dateformat.format(my_birthday, 'd'), '08')\n        self.assertEqual(dateformat.format(my_birthday, 'j'), '8')\n        self.assertEqual(dateformat.format(my_birthday, 'l'), 'Sunday')\n        self.assertEqual(dateformat.format(my_birthday, 'L'), 'False')\n        self.assertEqual(dateformat.format(my_birthday, 'm'), '07')\n        self.assertEqual(dateformat.format(my_birthday, 'M'), 'Jul')\n        self.assertEqual(dateformat.format(my_birthday, 'b'), 'jul')\n        self.assertEqual(dateformat.format(my_birthday, 'n'), '7')\n        self.assertEqual(dateformat.format(my_birthday, 'N'), 'July')\n\n    def test_time_formats(self):\n        my_birthday = datetime(1979, 7, 8, 22, 00)\n\n        self.assertEqual(dateformat.format(my_birthday, 'P'), '10 p.m.')\n        self.assertEqual(dateformat.format(my_birthday, 's'), '00')\n        self.assertEqual(dateformat.format(my_birthday, 'S'), 'th')\n        self.assertEqual(dateformat.format(my_birthday, 't'), '31')\n        self.assertEqual(dateformat.format(my_birthday, 'w'), '0')\n        self.assertEqual(dateformat.format(my_birthday, 'W'), '27')\n        self.assertEqual(dateformat.format(my_birthday, 'y'), '79')\n        self.assertEqual(dateformat.format(my_birthday, 'Y'), '1979')\n        self.assertEqual(dateformat.format(my_birthday, 'z'), '189')\n\n    def test_dateformat(self):\n        my_birthday = datetime(1979, 7, 8, 22, 00)\n\n        self.assertEqual(dateformat.format(my_birthday, r'Y z \\C\\E\\T'), '1979 189 CET')\n\n        self.assertEqual(dateformat.format(my_birthday, r'jS \\o\\f F'), '8th of July')\n\n    def test_futuredates(self):\n        the_future = datetime(2100, 10, 25, 0, 00)\n        self.assertEqual(dateformat.format(the_future, r'Y'), '2100')\n\n    def test_timezones(self):\n        my_birthday = datetime(1979, 7, 8, 22, 00)\n        summertime = datetime(2005, 10, 30, 1, 00)\n        wintertime = datetime(2005, 10, 30, 4, 00)\n        timestamp = datetime(2008, 5, 19, 11, 45, 23, 123456)\n\n        if self.tz_tests:\n            self.assertEqual(dateformat.format(my_birthday, 'O'), '+0100')\n            self.assertEqual(dateformat.format(my_birthday, 'r'), 'Sun, 8 Jul 1979 22:00:00 +0100')\n            self.assertEqual(dateformat.format(my_birthday, 'T'), 'CET')\n            self.assertEqual(dateformat.format(my_birthday, 'U'), '300315600')\n            self.assertEqual(dateformat.format(timestamp, 'u'), '123456')\n            self.assertEqual(dateformat.format(my_birthday, 'Z'), '3600')\n            self.assertEqual(dateformat.format(summertime, 'I'), '1')\n            self.assertEqual(dateformat.format(summertime, 'O'), '+0200')\n            self.assertEqual(dateformat.format(wintertime, 'I'), '0')\n            self.assertEqual(dateformat.format(wintertime, 'O'), '+0100')\n\n        # Ticket #16924 -- We don't need timezone support to test this\n        # 3h30m to the west of UTC\n        tz = FixedOffset(-3*60 - 30)\n        dt = datetime(2009, 5, 16, 5, 30, 30, tzinfo=tz)\n        self.assertEqual(dateformat.format(dt, 'O'), '-0330')\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/utils/dateparse.py",
    "content": "from __future__ import unicode_literals\n\nfrom datetime import date, time, datetime\n\nfrom django.utils.dateparse import parse_date, parse_time, parse_datetime\nfrom django.utils import unittest\nfrom django.utils.tzinfo import FixedOffset\n\n\nclass DateParseTests(unittest.TestCase):\n\n    def test_parse_date(self):\n        # Valid inputs\n        self.assertEqual(parse_date('2012-04-23'), date(2012, 4, 23))\n        self.assertEqual(parse_date('2012-4-9'), date(2012, 4, 9))\n        # Invalid inputs\n        self.assertEqual(parse_date('20120423'), None)\n        self.assertRaises(ValueError, parse_date, '2012-04-56')\n\n    def test_parse_time(self):\n        # Valid inputs\n        self.assertEqual(parse_time('09:15:00'), time(9, 15))\n        self.assertEqual(parse_time('10:10'), time(10, 10))\n        self.assertEqual(parse_time('10:20:30.400'), time(10, 20, 30, 400000))\n        self.assertEqual(parse_time('4:8:16'), time(4, 8, 16))\n        # Invalid inputs\n        self.assertEqual(parse_time('091500'), None)\n        self.assertRaises(ValueError, parse_time, '09:15:90')\n\n    def test_parse_datetime(self):\n        # Valid inputs\n        self.assertEqual(parse_datetime('2012-04-23T09:15:00'),\n            datetime(2012, 4, 23, 9, 15))\n        self.assertEqual(parse_datetime('2012-4-9 4:8:16'),\n            datetime(2012, 4, 9, 4, 8, 16))\n        self.assertEqual(parse_datetime('2012-04-23T09:15:00Z'),\n            datetime(2012, 4, 23, 9, 15, 0, 0, FixedOffset(0)))\n        self.assertEqual(parse_datetime('2012-4-9 4:8:16-0320'),\n            datetime(2012, 4, 9, 4, 8, 16, 0, FixedOffset(-200)))\n        self.assertEqual(parse_datetime('2012-04-23T10:20:30.400+02:30'),\n            datetime(2012, 4, 23, 10, 20, 30, 400000, FixedOffset(150)))\n        # Invalid inputs\n        self.assertEqual(parse_datetime('20120423091500'), None)\n        self.assertRaises(ValueError, parse_datetime, '2012-04-56T09:15:90')\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/utils/datetime_safe.py",
    "content": "import unittest\n\nfrom datetime import date as original_date, datetime as original_datetime\nfrom django.utils.datetime_safe import date, datetime\n\nclass DatetimeTests(unittest.TestCase):\n\n    def setUp(self):\n        self.just_safe = (1900, 1, 1)\n        self.just_unsafe = (1899, 12, 31, 23, 59, 59)\n        self.really_old = (20, 1, 1)\n        self.more_recent = (2006, 1, 1)\n\n    def test_compare_datetimes(self):\n        self.assertEqual(original_datetime(*self.more_recent), datetime(*self.more_recent))\n        self.assertEqual(original_datetime(*self.really_old), datetime(*self.really_old))\n        self.assertEqual(original_date(*self.more_recent), date(*self.more_recent))\n        self.assertEqual(original_date(*self.really_old), date(*self.really_old))\n\n        self.assertEqual(original_date(*self.just_safe).strftime('%Y-%m-%d'), date(*self.just_safe).strftime('%Y-%m-%d'))\n        self.assertEqual(original_datetime(*self.just_safe).strftime('%Y-%m-%d'), datetime(*self.just_safe).strftime('%Y-%m-%d'))\n\n    def test_safe_strftime(self):\n        self.assertEqual(date(*self.just_unsafe[:3]).strftime('%Y-%m-%d (weekday %w)'), '1899-12-31 (weekday 0)')\n        self.assertEqual(date(*self.just_safe).strftime('%Y-%m-%d (weekday %w)'), '1900-01-01 (weekday 1)')\n\n        self.assertEqual(datetime(*self.just_unsafe).strftime('%Y-%m-%d %H:%M:%S (weekday %w)'), '1899-12-31 23:59:59 (weekday 0)')\n        self.assertEqual(datetime(*self.just_safe).strftime('%Y-%m-%d %H:%M:%S (weekday %w)'), '1900-01-01 00:00:00 (weekday 1)')\n\n        # %y will error before this date\n        self.assertEqual(date(*self.just_safe).strftime('%y'), '00')\n        self.assertEqual(datetime(*self.just_safe).strftime('%y'), '00')\n\n        self.assertEqual(date(1850, 8, 2).strftime(\"%Y/%m/%d was a %A\"), '1850/08/02 was a Friday')\n\n    def test_zero_padding(self):\n        \"\"\"\n        Regression for #12524\n\n        Check that pre-1000AD dates are padded with zeros if necessary\n        \"\"\"\n        self.assertEqual(date(1, 1, 1).strftime(\"%Y/%m/%d was a %A\"), '0001/01/01 was a Monday')\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/utils/decorators.py",
    "content": "from django.http import HttpResponse\nfrom django.template import Template, Context\nfrom django.template.response import TemplateResponse\nfrom django.test import TestCase, RequestFactory\nfrom django.utils.decorators import decorator_from_middleware\n\n\nclass ProcessViewMiddleware(object):\n    def process_view(self, request, view_func, view_args, view_kwargs):\n        pass\n\nprocess_view_dec = decorator_from_middleware(ProcessViewMiddleware)\n\n@process_view_dec\ndef process_view(request):\n    return HttpResponse()\n\n\nclass ClassProcessView(object):\n    def __call__(self, request):\n        return HttpResponse()\n\nclass_process_view = process_view_dec(ClassProcessView())\n\n\nclass FullMiddleware(object):\n    def process_request(self, request):\n        request.process_request_reached = True\n\n    def process_view(sef, request, view_func, view_args, view_kwargs):\n        request.process_view_reached = True\n\n    def process_template_response(self, request, response):\n        request.process_template_response_reached = True\n        return response\n\n    def process_response(self, request, response):\n        # This should never receive unrendered content.\n        request.process_response_content = response.content\n        request.process_response_reached = True\n        return response\n\nfull_dec = decorator_from_middleware(FullMiddleware)\n\n\nclass DecoratorFromMiddlewareTests(TestCase):\n    \"\"\"\n    Tests for view decorators created using\n    ``django.utils.decorators.decorator_from_middleware``.\n    \"\"\"\n    rf = RequestFactory()\n\n    def test_process_view_middleware(self):\n        \"\"\"\n        Test a middleware that implements process_view.\n        \"\"\"\n        process_view(self.rf.get('/'))\n\n    def test_callable_process_view_middleware(self):\n        \"\"\"\n        Test a middleware that implements process_view, operating on a callable class.\n        \"\"\"\n        class_process_view(self.rf.get('/'))\n\n    def test_full_dec_normal(self):\n        \"\"\"\n        Test that all methods of middleware are called for normal HttpResponses\n        \"\"\"\n\n        @full_dec\n        def normal_view(request):\n            t = Template(\"Hello world\")\n            return HttpResponse(t.render(Context({})))\n\n        request = self.rf.get('/')\n        response = normal_view(request)\n        self.assertTrue(getattr(request, 'process_request_reached', False))\n        self.assertTrue(getattr(request, 'process_view_reached', False))\n        # process_template_response must not be called for HttpResponse\n        self.assertFalse(getattr(request, 'process_template_response_reached', False))\n        self.assertTrue(getattr(request, 'process_response_reached', False))\n\n    def test_full_dec_templateresponse(self):\n        \"\"\"\n        Test that all methods of middleware are called for TemplateResponses in\n        the right sequence.\n        \"\"\"\n\n        @full_dec\n        def template_response_view(request):\n            t = Template(\"Hello world\")\n            return TemplateResponse(request, t, {})\n\n        request = self.rf.get('/')\n        response = template_response_view(request)\n        self.assertTrue(getattr(request, 'process_request_reached', False))\n        self.assertTrue(getattr(request, 'process_view_reached', False))\n        self.assertTrue(getattr(request, 'process_template_response_reached', False))\n        # response must not be rendered yet.\n        self.assertFalse(response._is_rendered)\n        # process_response must not be called until after response is rendered,\n        # otherwise some decorators like csrf_protect and gzip_page will not\n        # work correctly. See #16004\n        self.assertFalse(getattr(request, 'process_response_reached', False))\n        response.render()\n        self.assertTrue(getattr(request, 'process_response_reached', False))\n        # Check that process_response saw the rendered content\n        self.assertEqual(request.process_response_content, b\"Hello world\")\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/utils/encoding.py",
    "content": "# -*- encoding: utf-8 -*-\nfrom __future__ import unicode_literals\n\nfrom django.utils import unittest\nfrom django.utils.encoding import force_bytes, filepath_to_uri\n\n\nclass TestEncodingUtils(unittest.TestCase):\n    def test_force_bytes_exception(self):\n        \"\"\"\n        Test that force_bytes knows how to convert to bytes an exception\n        containing non-ASCII characters in its args.\n        \"\"\"\n        error_msg = \"This is an exception, voilà\"\n        exc = ValueError(error_msg)\n        result = force_bytes(exc)\n        self.assertEqual(result, error_msg.encode('utf-8'))\n\n    def test_filepath_to_uri(self):\n        self.assertEqual(filepath_to_uri('upload\\\\чубака.mp4'),\n            'upload/%D1%87%D1%83%D0%B1%D0%B0%D0%BA%D0%B0.mp4')\n        self.assertEqual(filepath_to_uri('upload\\\\чубака.mp4'.encode('utf-8')),\n            'upload/%D1%87%D1%83%D0%B1%D0%B0%D0%BA%D0%B0.mp4')\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/utils/feedgenerator.py",
    "content": "from __future__ import unicode_literals\n\nimport datetime\n\nfrom django.utils import feedgenerator, tzinfo, unittest\n\nclass FeedgeneratorTest(unittest.TestCase):\n    \"\"\"\n    Tests for the low-level syndication feed framework.\n    \"\"\"\n\n    def test_get_tag_uri(self):\n        \"\"\"\n        Test get_tag_uri() correctly generates TagURIs.\n        \"\"\"\n        self.assertEqual(\n            feedgenerator.get_tag_uri('http://example.org/foo/bar#headline', datetime.date(2004, 10, 25)),\n            'tag:example.org,2004-10-25:/foo/bar/headline')\n\n    def test_get_tag_uri_with_port(self):\n        \"\"\"\n        Test that get_tag_uri() correctly generates TagURIs from URLs with port\n        numbers.\n        \"\"\"\n        self.assertEqual(\n            feedgenerator.get_tag_uri('http://www.example.org:8000/2008/11/14/django#headline', datetime.datetime(2008, 11, 14, 13, 37, 0)),\n            'tag:www.example.org,2008-11-14:/2008/11/14/django/headline')\n\n    def test_rfc2822_date(self):\n        \"\"\"\n        Test rfc2822_date() correctly formats datetime objects.\n        \"\"\"\n        self.assertEqual(\n            feedgenerator.rfc2822_date(datetime.datetime(2008, 11, 14, 13, 37, 0)),\n            \"Fri, 14 Nov 2008 13:37:00 -0000\"\n        )\n\n    def test_rfc2822_date_with_timezone(self):\n        \"\"\"\n        Test rfc2822_date() correctly formats datetime objects with tzinfo.\n        \"\"\"\n        self.assertEqual(\n            feedgenerator.rfc2822_date(datetime.datetime(2008, 11, 14, 13, 37, 0, tzinfo=tzinfo.FixedOffset(datetime.timedelta(minutes=60)))),\n            \"Fri, 14 Nov 2008 13:37:00 +0100\"\n        )\n\n    def test_rfc2822_date_without_time(self):\n        \"\"\"\n        Test rfc2822_date() correctly formats date objects.\n        \"\"\"\n        self.assertEqual(\n            feedgenerator.rfc2822_date(datetime.date(2008, 11, 14)),\n            \"Fri, 14 Nov 2008 00:00:00 -0000\"\n        )\n\n    def test_rfc3339_date(self):\n        \"\"\"\n        Test rfc3339_date() correctly formats datetime objects.\n        \"\"\"\n        self.assertEqual(\n            feedgenerator.rfc3339_date(datetime.datetime(2008, 11, 14, 13, 37, 0)),\n            \"2008-11-14T13:37:00Z\"\n        )\n\n    def test_rfc3339_date_with_timezone(self):\n        \"\"\"\n        Test rfc3339_date() correctly formats datetime objects with tzinfo.\n        \"\"\"\n        self.assertEqual(\n            feedgenerator.rfc3339_date(datetime.datetime(2008, 11, 14, 13, 37, 0, tzinfo=tzinfo.FixedOffset(datetime.timedelta(minutes=120)))),\n            \"2008-11-14T13:37:00+02:00\"\n        )\n\n    def test_rfc3339_date_without_time(self):\n        \"\"\"\n        Test rfc3339_date() correctly formats date objects.\n        \"\"\"\n        self.assertEqual(\n            feedgenerator.rfc3339_date(datetime.date(2008, 11, 14)),\n            \"2008-11-14T00:00:00Z\"\n        )\n\n    def test_atom1_mime_type(self):\n        \"\"\"\n        Test to make sure Atom MIME type has UTF8 Charset parameter set\n        \"\"\"\n        atom_feed = feedgenerator.Atom1Feed(\"title\", \"link\", \"description\")\n        self.assertEqual(\n            atom_feed.mime_type, \"application/atom+xml; charset=utf-8\"\n        )\n\n    def test_rss_mime_type(self):\n        \"\"\"\n        Test to make sure RSS MIME type has UTF8 Charset parameter set\n        \"\"\"\n        rss_feed = feedgenerator.Rss201rev2Feed(\"title\", \"link\", \"description\")\n        self.assertEqual(\n            rss_feed.mime_type, \"application/rss+xml; charset=utf-8\"\n        )\n\n    # Two regression tests for #14202\n\n    def test_feed_without_feed_url_gets_rendered_without_atom_link(self):\n        feed = feedgenerator.Rss201rev2Feed('title', '/link/', 'descr')\n        self.assertEqual(feed.feed['feed_url'], None)\n        feed_content = feed.writeString('utf-8')\n        self.assertNotIn('<atom:link', feed_content)\n        self.assertNotIn('href=\"/feed/\"', feed_content)\n        self.assertNotIn('rel=\"self\"', feed_content)\n\n    def test_feed_with_feed_url_gets_rendered_with_atom_link(self):\n        feed = feedgenerator.Rss201rev2Feed('title', '/link/', 'descr', feed_url='/feed/')\n        self.assertEqual(feed.feed['feed_url'], '/feed/')\n        feed_content = feed.writeString('utf-8')\n        self.assertIn('<atom:link', feed_content)\n        self.assertIn('href=\"/feed/\"', feed_content)\n        self.assertIn('rel=\"self\"', feed_content)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/utils/functional.py",
    "content": "from django.utils import unittest\nfrom django.utils.functional import lazy, lazy_property\n\n\nclass FunctionalTestCase(unittest.TestCase):\n    def test_lazy(self):\n        t = lazy(lambda: tuple(range(3)), list, tuple)\n        for a, b in zip(t(), range(3)):\n            self.assertEqual(a, b)\n\n    def test_lazy_base_class(self):\n        \"\"\"Test that lazy also finds base class methods in the proxy object\"\"\"\n\n        class Base(object):\n            def base_method(self):\n                pass\n\n        class Klazz(Base):\n            pass\n\n        t = lazy(lambda: Klazz(), Klazz)()\n        self.assertTrue('base_method' in dir(t))\n\n    def test_lazy_property(self):\n\n        class A(object):\n\n            def _get_do(self):\n                raise NotImplementedError\n            def _set_do(self, value):\n                raise NotImplementedError\n            do = lazy_property(_get_do, _set_do)\n\n        class B(A):\n            def _get_do(self):\n                return \"DO IT\"\n\n        self.assertRaises(NotImplementedError, lambda: A().do)\n        self.assertEqual(B().do, 'DO IT')\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/utils/html.py",
    "content": "from __future__ import unicode_literals\n\nimport unittest\n\nfrom django.utils import html\n\nclass TestUtilsHtml(unittest.TestCase):\n\n    def check_output(self, function, value, output=None):\n        \"\"\"\n        Check that function(value) equals output.  If output is None,\n        check that function(value) equals value.\n        \"\"\"\n        if output is None:\n            output = value\n        self.assertEqual(function(value), output)\n\n    def test_escape(self):\n        f = html.escape\n        items = (\n            ('&','&amp;'),\n            ('<', '&lt;'),\n            ('>', '&gt;'),\n            ('\"', '&quot;'),\n            (\"'\", '&#39;'),\n        )\n        # Substitution patterns for testing the above items.\n        patterns = (\"%s\", \"asdf%sfdsa\", \"%s1\", \"1%sb\")\n        for value, output in items:\n            for pattern in patterns:\n                self.check_output(f, pattern % value, pattern % output)\n            # Check repeated values.\n            self.check_output(f, value * 2, output * 2)\n        # Verify it doesn't double replace &.\n        self.check_output(f, '<&', '&lt;&amp;')\n\n    def test_format_html(self):\n        self.assertEqual(\n            html.format_html(\"{0} {1} {third} {fourth}\",\n                             \"< Dangerous >\",\n                             html.mark_safe(\"<b>safe</b>\"),\n                             third=\"< dangerous again\",\n                             fourth=html.mark_safe(\"<i>safe again</i>\")\n                             ),\n            \"&lt; Dangerous &gt; <b>safe</b> &lt; dangerous again <i>safe again</i>\"\n            )\n\n    def test_linebreaks(self):\n        f = html.linebreaks\n        items = (\n            (\"para1\\n\\npara2\\r\\rpara3\", \"<p>para1</p>\\n\\n<p>para2</p>\\n\\n<p>para3</p>\"),\n            (\"para1\\nsub1\\rsub2\\n\\npara2\", \"<p>para1<br />sub1<br />sub2</p>\\n\\n<p>para2</p>\"),\n            (\"para1\\r\\n\\r\\npara2\\rsub1\\r\\rpara4\", \"<p>para1</p>\\n\\n<p>para2<br />sub1</p>\\n\\n<p>para4</p>\"),\n            (\"para1\\tmore\\n\\npara2\", \"<p>para1\\tmore</p>\\n\\n<p>para2</p>\"),\n        )\n        for value, output in items:\n            self.check_output(f, value, output)\n\n    def test_strip_tags(self):\n        f = html.strip_tags\n        items = (\n            ('<adf>a', 'a'),\n            ('</adf>a', 'a'),\n            ('<asdf><asdf>e', 'e'),\n            ('<f', '<f'),\n            ('</fe', '</fe'),\n            ('<x>b<y>', 'b'),\n            ('a<p a >b</p>c', 'abc'),\n            ('d<a:b c:d>e</p>f', 'def'),\n        )\n        for value, output in items:\n            self.check_output(f, value, output)\n\n    def test_strip_spaces_between_tags(self):\n        f = html.strip_spaces_between_tags\n        # Strings that should come out untouched.\n        items = (' <adf>', '<adf> ', ' </adf> ', ' <f> x</f>')\n        for value in items:\n            self.check_output(f, value)\n        # Strings that have spaces to strip.\n        items = (\n            ('<d> </d>', '<d></d>'),\n            ('<p>hello </p>\\n<p> world</p>', '<p>hello </p><p> world</p>'),\n            ('\\n<p>\\t</p>\\n<p> </p>\\n', '\\n<p></p><p></p>\\n'),\n        )\n        for value, output in items:\n            self.check_output(f, value, output)\n\n    def test_strip_entities(self):\n        f = html.strip_entities\n        # Strings that should come out untouched.\n        values = (\"&\", \"&a\", \"&a\", \"a&#a\")\n        for value in values:\n            self.check_output(f, value)\n        # Valid entities that should be stripped from the patterns.\n        entities = (\"&#1;\", \"&#12;\", \"&a;\", \"&fdasdfasdfasdf;\")\n        patterns = (\n            (\"asdf %(entity)s \", \"asdf  \"),\n            (\"%(entity)s%(entity)s\", \"\"),\n            (\"&%(entity)s%(entity)s\", \"&\"),\n            (\"%(entity)s3\", \"3\"),\n        )\n        for entity in entities:\n            for in_pattern, output in patterns:\n                self.check_output(f, in_pattern % {'entity': entity}, output)\n\n    def test_fix_ampersands(self):\n        f = html.fix_ampersands\n        # Strings without ampersands or with ampersands already encoded.\n        values = (\"a&#1;\", \"b\", \"&a;\", \"&amp; &x; \", \"asdf\")\n        patterns = (\n            (\"%s\", \"%s\"),\n            (\"&%s\", \"&amp;%s\"),\n            (\"&%s&\", \"&amp;%s&amp;\"),\n        )\n        for value in values:\n            for in_pattern, out_pattern in patterns:\n                self.check_output(f, in_pattern % value, out_pattern % value)\n        # Strings with ampersands that need encoding.\n        items = (\n            (\"&#;\", \"&amp;#;\"),\n            (\"&#875 ;\", \"&amp;#875 ;\"),\n            (\"&#4abc;\", \"&amp;#4abc;\"),\n        )\n        for value, output in items:\n            self.check_output(f, value, output)\n\n    def test_escapejs(self):\n        f = html.escapejs\n        items = (\n            ('\"double quotes\" and \\'single quotes\\'', '\\\\u0022double quotes\\\\u0022 and \\\\u0027single quotes\\\\u0027'),\n            (r'\\ : backslashes, too', '\\\\u005C : backslashes, too'),\n            ('and lots of whitespace: \\r\\n\\t\\v\\f\\b', 'and lots of whitespace: \\\\u000D\\\\u000A\\\\u0009\\\\u000B\\\\u000C\\\\u0008'),\n            (r'<script>and this</script>', '\\\\u003Cscript\\\\u003Eand this\\\\u003C/script\\\\u003E'),\n            ('paragraph separator:\\u2029and line separator:\\u2028', 'paragraph separator:\\\\u2029and line separator:\\\\u2028'),\n        )\n        for value, output in items:\n            self.check_output(f, value, output)\n\n    def test_clean_html(self):\n        f = html.clean_html\n        items = (\n            ('<p>I <i>believe</i> in <b>semantic markup</b>!</p>', '<p>I <em>believe</em> in <strong>semantic markup</strong>!</p>'),\n            ('I escape & I don\\'t <a href=\"#\" target=\"_blank\">target</a>', 'I escape &amp; I don\\'t <a href=\"#\" >target</a>'),\n            ('<p>I kill whitespace</p><br clear=\"all\"><p>&nbsp;</p>', '<p>I kill whitespace</p>'),\n            # also a regression test for #7267: this used to raise an UnicodeDecodeError\n            ('<p>* foo</p><p>* bar</p>', '<ul>\\n<li> foo</li><li> bar</li>\\n</ul>'),\n        )\n        for value, output in items:\n            self.check_output(f, value, output)\n\n    def test_remove_tags(self):\n        f = html.remove_tags\n        items = (\n            (\"<b><i>Yes</i></b>\", \"b i\", \"Yes\"),\n            (\"<a>x</a> <p><b>y</b></p>\", \"a b\", \"x <p>y</p>\"),\n        )\n        for value, tags, output in items:\n            self.assertEqual(f(value, tags), output)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/utils/http.py",
    "content": "from datetime import datetime\nimport sys\n\nfrom django.http import HttpResponse, utils\nfrom django.test import RequestFactory\nfrom django.utils.datastructures import MultiValueDict\nfrom django.utils import http\nfrom django.utils import six\nfrom django.utils import unittest\n\n\nclass TestUtilsHttp(unittest.TestCase):\n\n    def test_same_origin_true(self):\n        # Identical\n        self.assertTrue(http.same_origin('http://foo.com/', 'http://foo.com/'))\n        # One with trailing slash - see #15617\n        self.assertTrue(http.same_origin('http://foo.com', 'http://foo.com/'))\n        self.assertTrue(http.same_origin('http://foo.com/', 'http://foo.com'))\n        # With port\n        self.assertTrue(http.same_origin('https://foo.com:8000', 'https://foo.com:8000/'))\n\n    def test_same_origin_false(self):\n        # Different scheme\n        self.assertFalse(http.same_origin('http://foo.com', 'https://foo.com'))\n        # Different host\n        self.assertFalse(http.same_origin('http://foo.com', 'http://goo.com'))\n        # Different host again\n        self.assertFalse(http.same_origin('http://foo.com', 'http://foo.com.evil.com'))\n        # Different port\n        self.assertFalse(http.same_origin('http://foo.com:8000', 'http://foo.com:8001'))\n\n    def test_urlencode(self):\n        # 2-tuples (the norm)\n        result = http.urlencode((('a', 1), ('b', 2), ('c', 3)))\n        self.assertEqual(result, 'a=1&b=2&c=3')\n\n        # A dictionary\n        result = http.urlencode({ 'a': 1, 'b': 2, 'c': 3})\n        acceptable_results = [\n            # Need to allow all of these as dictionaries have to be treated as\n            # unordered\n            'a=1&b=2&c=3',\n            'a=1&c=3&b=2',\n            'b=2&a=1&c=3',\n            'b=2&c=3&a=1',\n            'c=3&a=1&b=2',\n            'c=3&b=2&a=1'\n        ]\n        self.assertTrue(result in acceptable_results)\n        result = http.urlencode({'a': [1, 2]}, doseq=False)\n        self.assertEqual(result, 'a=%5B%271%27%2C+%272%27%5D')\n        result = http.urlencode({'a': [1, 2]}, doseq=True)\n        self.assertEqual(result, 'a=1&a=2')\n        result = http.urlencode({'a': []}, doseq=True)\n        self.assertEqual(result, '')\n\n        # A MultiValueDict\n        result = http.urlencode(MultiValueDict({\n            'name': ['Adrian', 'Simon'],\n            'position': ['Developer']\n        }), doseq=True)\n        acceptable_results = [\n            # MultiValueDicts are similarly unordered\n            'name=Adrian&name=Simon&position=Developer',\n            'position=Developer&name=Adrian&name=Simon'\n        ]\n        self.assertTrue(result in acceptable_results)\n\n    def test_fix_IE_for_vary(self):\n        \"\"\"\n        Regression for #16632.\n\n        `fix_IE_for_vary` shouldn't crash when there's no Content-Type header.\n        \"\"\"\n\n        # functions to generate responses\n        def response_with_unsafe_content_type():\n            r = HttpResponse(content_type=\"text/unsafe\")\n            r['Vary'] = 'Cookie'\n            return r\n\n        def no_content_response_with_unsafe_content_type():\n            # 'Content-Type' always defaulted, so delete it\n            r = response_with_unsafe_content_type()\n            del r['Content-Type']\n            return r\n\n        # request with & without IE user agent\n        rf = RequestFactory()\n        request = rf.get('/')\n        ie_request = rf.get('/', HTTP_USER_AGENT='MSIE')\n\n        # not IE, unsafe_content_type\n        response = response_with_unsafe_content_type()\n        utils.fix_IE_for_vary(request, response)\n        self.assertTrue('Vary' in response)\n\n        # IE, unsafe_content_type\n        response = response_with_unsafe_content_type()\n        utils.fix_IE_for_vary(ie_request, response)\n        self.assertFalse('Vary' in response)\n\n        # not IE, no_content\n        response = no_content_response_with_unsafe_content_type()\n        utils.fix_IE_for_vary(request, response)\n        self.assertTrue('Vary' in response)\n\n        # IE, no_content\n        response = no_content_response_with_unsafe_content_type()\n        utils.fix_IE_for_vary(ie_request, response)\n        self.assertFalse('Vary' in response)\n\n    def test_base36(self):\n        # reciprocity works\n        for n in [0, 1, 1000, 1000000]:\n            self.assertEqual(n, http.base36_to_int(http.int_to_base36(n)))\n        if not six.PY3:\n            self.assertEqual(sys.maxint, http.base36_to_int(http.int_to_base36(sys.maxint)))\n\n        # bad input\n        self.assertRaises(ValueError, http.int_to_base36, -1)\n        if not six.PY3:\n            self.assertRaises(ValueError, http.int_to_base36, sys.maxint + 1)\n        for n in ['1', 'foo', {1: 2}, (1, 2, 3), 3.141]:\n            self.assertRaises(TypeError, http.int_to_base36, n)\n\n        for n in ['#', ' ']:\n            self.assertRaises(ValueError, http.base36_to_int, n)\n        for n in [123, {1: 2}, (1, 2, 3), 3.141]:\n            self.assertRaises(TypeError, http.base36_to_int, n)\n\n        # more explicit output testing\n        for n, b36 in [(0, '0'), (1, '1'), (42, '16'), (818469960, 'django')]:\n            self.assertEqual(http.int_to_base36(n), b36)\n            self.assertEqual(http.base36_to_int(b36), n)\n\n\nclass ETagProcessingTests(unittest.TestCase):\n    def testParsing(self):\n        etags = http.parse_etags(r'\"\", \"etag\", \"e\\\"t\\\"ag\", \"e\\\\tag\", W/\"weak\"')\n        self.assertEqual(etags, ['', 'etag', 'e\"t\"ag', r'e\\tag', 'weak'])\n\n    def testQuoting(self):\n        quoted_etag = http.quote_etag(r'e\\t\"ag')\n        self.assertEqual(quoted_etag, r'\"e\\\\t\\\"ag\"')\n\n\nclass HttpDateProcessingTests(unittest.TestCase):\n    def testParsingRfc1123(self):\n        parsed = http.parse_http_date('Sun, 06 Nov 1994 08:49:37 GMT')\n        self.assertEqual(datetime.utcfromtimestamp(parsed),\n                         datetime(1994, 11, 6, 8, 49, 37))\n\n    def testParsingRfc850(self):\n        parsed = http.parse_http_date('Sunday, 06-Nov-94 08:49:37 GMT')\n        self.assertEqual(datetime.utcfromtimestamp(parsed),\n                         datetime(1994, 11, 6, 8, 49, 37))\n\n    def testParsingAsctime(self):\n        parsed = http.parse_http_date('Sun Nov  6 08:49:37 1994')\n        self.assertEqual(datetime.utcfromtimestamp(parsed),\n                         datetime(1994, 11, 6, 8, 49, 37))\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/utils/ipv6.py",
    "content": "from __future__ import unicode_literals\n\nfrom django.utils import unittest\nfrom django.utils.ipv6 import is_valid_ipv6_address, clean_ipv6_address\n\nclass TestUtilsIPv6(unittest.TestCase):\n\n    def test_validates_correct_plain_address(self):\n        self.assertTrue(is_valid_ipv6_address('fe80::223:6cff:fe8a:2e8a'))\n        self.assertTrue(is_valid_ipv6_address('2a02::223:6cff:fe8a:2e8a'))\n        self.assertTrue(is_valid_ipv6_address('1::2:3:4:5:6:7'))\n        self.assertTrue(is_valid_ipv6_address('::'))\n        self.assertTrue(is_valid_ipv6_address('::a'))\n        self.assertTrue(is_valid_ipv6_address('2::'))\n\n    def test_validates_correct_with_v4mapping(self):\n        self.assertTrue(is_valid_ipv6_address('::ffff:254.42.16.14'))\n        self.assertTrue(is_valid_ipv6_address('::ffff:0a0a:0a0a'))\n\n    def test_validates_incorrect_plain_address(self):\n        self.assertFalse(is_valid_ipv6_address('foo'))\n        self.assertFalse(is_valid_ipv6_address('127.0.0.1'))\n        self.assertFalse(is_valid_ipv6_address('12345::'))\n        self.assertFalse(is_valid_ipv6_address('1::2:3::4'))\n        self.assertFalse(is_valid_ipv6_address('1::zzz'))\n        self.assertFalse(is_valid_ipv6_address('1::2:3:4:5:6:7:8'))\n        self.assertFalse(is_valid_ipv6_address('1:2'))\n        self.assertFalse(is_valid_ipv6_address('1:::2'))\n\n    def test_validates_incorrect_with_v4mapping(self):\n        self.assertFalse(is_valid_ipv6_address('::ffff:999.42.16.14'))\n        self.assertFalse(is_valid_ipv6_address('::ffff:zzzz:0a0a'))\n        # The ::1.2.3.4 format used to be valid but was deprecated\n        # in rfc4291 section 2.5.5.1\n        self.assertTrue(is_valid_ipv6_address('::254.42.16.14'))\n        self.assertTrue(is_valid_ipv6_address('::0a0a:0a0a'))\n        self.assertFalse(is_valid_ipv6_address('::999.42.16.14'))\n        self.assertFalse(is_valid_ipv6_address('::zzzz:0a0a'))\n\n    def test_cleanes_plain_address(self):\n        self.assertEqual(clean_ipv6_address('DEAD::0:BEEF'), 'dead::beef')\n        self.assertEqual(clean_ipv6_address('2001:000:a:0000:0:fe:fe:beef'), '2001:0:a::fe:fe:beef')\n        self.assertEqual(clean_ipv6_address('2001::a:0000:0:fe:fe:beef'), '2001:0:a::fe:fe:beef')\n\n    def test_cleanes_with_v4_mapping(self):\n        self.assertEqual(clean_ipv6_address('::ffff:0a0a:0a0a'), '::ffff:10.10.10.10')\n        self.assertEqual(clean_ipv6_address('::ffff:1234:1234'), '::ffff:18.52.18.52')\n        self.assertEqual(clean_ipv6_address('::ffff:18.52.18.52'), '::ffff:18.52.18.52')\n\n    def test_unpacks_ipv4(self):\n        self.assertEqual(clean_ipv6_address('::ffff:0a0a:0a0a', unpack_ipv4=True), '10.10.10.10')\n        self.assertEqual(clean_ipv6_address('::ffff:1234:1234', unpack_ipv4=True), '18.52.18.52')\n        self.assertEqual(clean_ipv6_address('::ffff:18.52.18.52', unpack_ipv4=True), '18.52.18.52')\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/utils/itercompat.py",
    "content": "from django.test import TestCase\n\nfrom .models import Category, Thing\n\n\nclass TestIsIterator(TestCase):\n    def test_regression(self):\n        \"\"\"This failed on Django 1.5/Py2.6 because category has a next method.\"\"\"\n        category = Category.objects.create(name='category')\n        Thing.objects.create(category=category)\n        Thing.objects.filter(category=category)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/utils/jslex.py",
    "content": "\"\"\"Tests for jslex.\"\"\"\n# encoding: utf-8\n# originally from https://bitbucket.org/ned/jslex\n\nfrom django.test import TestCase\nfrom django.utils.jslex import JsLexer, prepare_js_for_gettext\n\nclass JsTokensTest(TestCase):\n    LEX_CASES = [\n        # ids\n        (\"a ABC $ _ a123\", [\"id a\", \"id ABC\", \"id $\", \"id _\", \"id a123\"]),\n        (r\"\\u1234 abc\\u0020 \\u0065_\\u0067\", [r\"id \\u1234\", r\"id abc\\u0020\", r\"id \\u0065_\\u0067\"]),\n        # numbers\n        (\"123 1.234 0.123e-3 0 1E+40 1e1 .123\", [\"dnum 123\", \"dnum 1.234\", \"dnum 0.123e-3\", \"dnum 0\", \"dnum 1E+40\", \"dnum 1e1\", \"dnum .123\"]),\n        (\"0x1 0xabCD 0XABcd\", [\"hnum 0x1\", \"hnum 0xabCD\", \"hnum 0XABcd\"]),\n        (\"010 0377 090\", [\"onum 010\", \"onum 0377\", \"dnum 0\", \"dnum 90\"]),\n        (\"0xa123ghi\", [\"hnum 0xa123\", \"id ghi\"]),\n        # keywords\n        (\"function Function FUNCTION\", [\"keyword function\", \"id Function\", \"id FUNCTION\"]),\n        (\"const constructor in inherits\", [\"keyword const\", \"id constructor\", \"keyword in\", \"id inherits\"]),\n        (\"true true_enough\", [\"reserved true\", \"id true_enough\"]),\n        # strings\n        (''' 'hello' \"hello\" ''', [\"string 'hello'\", 'string \"hello\"']),\n        (r\"\"\" 'don\\'t' \"don\\\"t\" '\"' \"'\" '\\'' \"\\\"\" \"\"\",\n         [r\"\"\"string 'don\\'t'\"\"\", r'''string \"don\\\"t\"''', r\"\"\"string '\"'\"\"\", r'''string \"'\"''', r\"\"\"string '\\''\"\"\", r'''string \"\\\"\"''']),\n        (r'\"ƃuıxǝ⅂ ʇdıɹɔsɐʌɐſ\\\"\"', [r'string \"ƃuıxǝ⅂ ʇdıɹɔsɐʌɐſ\\\"\"']),\n        # comments\n        (\"a//b\", [\"id a\", \"linecomment //b\"]),\n        (\"/****/a/=2//hello\", [\"comment /****/\", \"id a\", \"punct /=\", \"dnum 2\", \"linecomment //hello\"]),\n        (\"/*\\n * Header\\n */\\na=1;\", [\"comment /*\\n * Header\\n */\", \"id a\", \"punct =\", \"dnum 1\", \"punct ;\"]),\n        # punctuation\n        (\"a+++b\", [\"id a\", \"punct ++\", \"punct +\", \"id b\"]),\n        # regex\n        (r\"a=/a*/,1\", [\"id a\", \"punct =\", \"regex /a*/\", \"punct ,\", \"dnum 1\"]),\n        (r\"a=/a*[^/]+/,1\", [\"id a\", \"punct =\", \"regex /a*[^/]+/\", \"punct ,\", \"dnum 1\"]),\n        (r\"a=/a*\\[^/,1\", [\"id a\", \"punct =\", r\"regex /a*\\[^/\", \"punct ,\", \"dnum 1\"]),\n        (r\"a=/\\//,1\", [\"id a\", \"punct =\", r\"regex /\\//\", \"punct ,\", \"dnum 1\"]),\n\n        # next two are from http://www.mozilla.org/js/language/js20-2002-04/rationale/syntax.html#regular-expressions\n        (\"\"\"for (var x = a in foo && \"</x>\" || mot ? z:/x:3;x<5;y</g/i) {xyz(x++);}\"\"\",\n            [\"keyword for\", \"punct (\", \"keyword var\", \"id x\", \"punct =\", \"id a\", \"keyword in\",\n            \"id foo\", \"punct &&\", 'string \"</x>\"', \"punct ||\", \"id mot\", \"punct ?\", \"id z\",\n            \"punct :\", \"regex /x:3;x<5;y</g\", \"punct /\", \"id i\", \"punct )\", \"punct {\",\n            \"id xyz\", \"punct (\", \"id x\", \"punct ++\", \"punct )\", \"punct ;\", \"punct }\"]),\n        (\"\"\"for (var x = a in foo && \"</x>\" || mot ? z/x:3;x<5;y</g/i) {xyz(x++);}\"\"\",\n            [\"keyword for\", \"punct (\", \"keyword var\", \"id x\", \"punct =\", \"id a\", \"keyword in\",\n            \"id foo\", \"punct &&\", 'string \"</x>\"', \"punct ||\", \"id mot\", \"punct ?\", \"id z\",\n            \"punct /\", \"id x\", \"punct :\", \"dnum 3\", \"punct ;\", \"id x\", \"punct <\", \"dnum 5\",\n            \"punct ;\", \"id y\", \"punct <\", \"regex /g/i\", \"punct )\", \"punct {\",\n            \"id xyz\", \"punct (\", \"id x\", \"punct ++\", \"punct )\", \"punct ;\", \"punct }\"]),\n\n        # Various \"illegal\" regexes that are valid according to the std.\n        (r\"\"\"/????/, /++++/, /[----]/ \"\"\", [\"regex /????/\", \"punct ,\", \"regex /++++/\", \"punct ,\", \"regex /[----]/\"]),\n\n        # Stress cases from http://stackoverflow.com/questions/5533925/what-javascript-constructs-does-jslex-incorrectly-lex/5573409#5573409\n        (r\"\"\"/\\[/\"\"\", [r\"\"\"regex /\\[/\"\"\"]),\n        (r\"\"\"/[i]/\"\"\", [r\"\"\"regex /[i]/\"\"\"]),\n        (r\"\"\"/[\\]]/\"\"\", [r\"\"\"regex /[\\]]/\"\"\"]),\n        (r\"\"\"/a[\\]]/\"\"\", [r\"\"\"regex /a[\\]]/\"\"\"]),\n        (r\"\"\"/a[\\]]b/\"\"\", [r\"\"\"regex /a[\\]]b/\"\"\"]),\n        (r\"\"\"/[\\]/]/gi\"\"\", [r\"\"\"regex /[\\]/]/gi\"\"\"]),\n        (r\"\"\"/\\[[^\\]]+\\]/gi\"\"\", [r\"\"\"regex /\\[[^\\]]+\\]/gi\"\"\"]),\n        (\"\"\"\n            rexl.re = {\n            NAME: /^(?!\\d)(?:\\w)+|^\"(?:[^\"]|\"\")+\"/,\n            UNQUOTED_LITERAL: /^@(?:(?!\\d)(?:\\w|\\:)+|^\"(?:[^\"]|\"\")+\")\\[[^\\]]+\\]/,\n            QUOTED_LITERAL: /^'(?:[^']|'')*'/,\n            NUMERIC_LITERAL: /^[0-9]+(?:\\.[0-9]*(?:[eE][-+][0-9]+)?)?/,\n            SYMBOL: /^(?:==|=|<>|<=|<|>=|>|!~~|!~|~~|~|!==|!=|!~=|!~|!|&|\\||\\.|\\:|,|\\(|\\)|\\[|\\]|\\{|\\}|\\?|\\:|;|@|\\^|\\/\\+|\\/|\\*|\\+|-)/\n            };\n        \"\"\",\n        [\"id rexl\", \"punct .\", \"id re\", \"punct =\", \"punct {\",\n         \"id NAME\", \"punct :\", r\"\"\"regex /^(?!\\d)(?:\\w)+|^\"(?:[^\"]|\"\")+\"/\"\"\", \"punct ,\",\n         \"id UNQUOTED_LITERAL\", \"punct :\", r\"\"\"regex /^@(?:(?!\\d)(?:\\w|\\:)+|^\"(?:[^\"]|\"\")+\")\\[[^\\]]+\\]/\"\"\", \"punct ,\",\n         \"id QUOTED_LITERAL\", \"punct :\", r\"\"\"regex /^'(?:[^']|'')*'/\"\"\", \"punct ,\",\n         \"id NUMERIC_LITERAL\", \"punct :\", r\"\"\"regex /^[0-9]+(?:\\.[0-9]*(?:[eE][-+][0-9]+)?)?/\"\"\", \"punct ,\",\n         \"id SYMBOL\", \"punct :\", r\"\"\"regex /^(?:==|=|<>|<=|<|>=|>|!~~|!~|~~|~|!==|!=|!~=|!~|!|&|\\||\\.|\\:|,|\\(|\\)|\\[|\\]|\\{|\\}|\\?|\\:|;|@|\\^|\\/\\+|\\/|\\*|\\+|-)/\"\"\",\n         \"punct }\", \"punct ;\"\n         ]),\n\n        (\"\"\"\n            rexl.re = {\n            NAME: /^(?!\\d)(?:\\w)+|^\"(?:[^\"]|\"\")+\"/,\n            UNQUOTED_LITERAL: /^@(?:(?!\\d)(?:\\w|\\:)+|^\"(?:[^\"]|\"\")+\")\\[[^\\]]+\\]/,\n            QUOTED_LITERAL: /^'(?:[^']|'')*'/,\n            NUMERIC_LITERAL: /^[0-9]+(?:\\.[0-9]*(?:[eE][-+][0-9]+)?)?/,\n            SYMBOL: /^(?:==|=|<>|<=|<|>=|>|!~~|!~|~~|~|!==|!=|!~=|!~|!|&|\\||\\.|\\:|,|\\(|\\)|\\[|\\]|\\{|\\}|\\?|\\:|;|@|\\^|\\/\\+|\\/|\\*|\\+|-)/\n            };\n            str = '\"';\n        \"\"\",\n        [\"id rexl\", \"punct .\", \"id re\", \"punct =\", \"punct {\",\n         \"id NAME\", \"punct :\", r\"\"\"regex /^(?!\\d)(?:\\w)+|^\"(?:[^\"]|\"\")+\"/\"\"\", \"punct ,\",\n         \"id UNQUOTED_LITERAL\", \"punct :\", r\"\"\"regex /^@(?:(?!\\d)(?:\\w|\\:)+|^\"(?:[^\"]|\"\")+\")\\[[^\\]]+\\]/\"\"\", \"punct ,\",\n         \"id QUOTED_LITERAL\", \"punct :\", r\"\"\"regex /^'(?:[^']|'')*'/\"\"\", \"punct ,\",\n         \"id NUMERIC_LITERAL\", \"punct :\", r\"\"\"regex /^[0-9]+(?:\\.[0-9]*(?:[eE][-+][0-9]+)?)?/\"\"\", \"punct ,\",\n         \"id SYMBOL\", \"punct :\", r\"\"\"regex /^(?:==|=|<>|<=|<|>=|>|!~~|!~|~~|~|!==|!=|!~=|!~|!|&|\\||\\.|\\:|,|\\(|\\)|\\[|\\]|\\{|\\}|\\?|\\:|;|@|\\^|\\/\\+|\\/|\\*|\\+|-)/\"\"\",\n         \"punct }\", \"punct ;\",\n         \"id str\", \"punct =\", \"\"\"string '\"'\"\"\", \"punct ;\",\n         ]),\n\n        (r\"\"\" this._js = \"e.str(\\\"\" + this.value.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, \"\\\\\\\"\") + \"\\\")\"; \"\"\",\n         [\"keyword this\", \"punct .\", \"id _js\", \"punct =\", r'''string \"e.str(\\\"\"''', \"punct +\", \"keyword this\", \"punct .\",\n          \"id value\", \"punct .\", \"id replace\", \"punct (\", r\"regex /\\\\/g\", \"punct ,\", r'string \"\\\\\\\\\"', \"punct )\",\n          \"punct .\", \"id replace\", \"punct (\", r'regex /\"/g', \"punct ,\", r'string \"\\\\\\\"\"', \"punct )\", \"punct +\",\n          r'string \"\\\")\"', \"punct ;\"]),\n        ]\n\ndef make_function(input, toks):\n    def test_func(self):\n        lexer = JsLexer()\n        result = [\"%s %s\" % (name, tok) for name, tok in lexer.lex(input) if name != 'ws']\n        self.assertListEqual(result, toks)\n    return test_func\n\nfor i, (input, toks) in enumerate(JsTokensTest.LEX_CASES):\n    setattr(JsTokensTest, \"test_case_%d\" % i, make_function(input, toks))\n\n\nGETTEXT_CASES = (\n    (\n        r\"\"\"\n            a = 1; /* /[0-9]+/ */\n            b = 0x2a0b / 1; // /[0-9]+/\n            c = 3;\n        \"\"\",\n        r\"\"\"\n            a = 1; /* /[0-9]+/ */\n            b = 0x2a0b / 1; // /[0-9]+/\n            c = 3;\n        \"\"\"\n    ), (\n        r\"\"\"\n            a = 1.234e-5;\n            /*\n             * /[0-9+/\n             */\n            b = .0123;\n        \"\"\",\n        r\"\"\"\n            a = 1.234e-5;\n            /*\n             * /[0-9+/\n             */\n            b = .0123;\n        \"\"\"\n    ), (\n        r\"\"\"\n            x = y / z;\n            alert(gettext(\"hello\"));\n            x /= 3;\n        \"\"\",\n        r\"\"\"\n            x = y / z;\n            alert(gettext(\"hello\"));\n            x /= 3;\n        \"\"\"\n    ), (\n        r\"\"\"\n            s = \"Hello \\\"th/foo/ere\\\"\";\n            s = 'He\\x23llo \\'th/foo/ere\\'';\n            s = 'slash quote \\\", just quote \"';\n        \"\"\",\n        r\"\"\"\n            s = \"Hello \\\"th/foo/ere\\\"\";\n            s = \"He\\x23llo \\'th/foo/ere\\'\";\n            s = \"slash quote \\\", just quote \\\"\";\n        \"\"\"\n    ), (\n        r\"\"\"\n            s = \"Line continuation\\\n            continued /hello/ still the string\";/hello/;\n        \"\"\",\n        r\"\"\"\n            s = \"Line continuation\\\n            continued /hello/ still the string\";\"REGEX\";\n        \"\"\"\n    ), (\n        r\"\"\"\n            var regex = /pattern/;\n            var regex2 = /matter/gm;\n            var regex3 = /[*/]+/gm.foo(\"hey\");\n        \"\"\",\n        r\"\"\"\n            var regex = \"REGEX\";\n            var regex2 = \"REGEX\";\n            var regex3 = \"REGEX\".foo(\"hey\");\n        \"\"\"\n    ), (\n        r\"\"\"\n            for (var x = a in foo && \"</x>\" || mot ? z:/x:3;x<5;y</g/i) {xyz(x++);}\n            for (var x = a in foo && \"</x>\" || mot ? z/x:3;x<5;y</g/i) {xyz(x++);}\n        \"\"\",\n        r\"\"\"\n            for (var x = a in foo && \"</x>\" || mot ? z:\"REGEX\"/i) {xyz(x++);}\n            for (var x = a in foo && \"</x>\" || mot ? z/x:3;x<5;y<\"REGEX\") {xyz(x++);}\n        \"\"\"\n    ), (\n        r\"\"\"\n            \\u1234xyz = gettext('Hello there');\n        \"\"\", r\"\"\"\n            Uu1234xyz = gettext(\"Hello there\");\n        \"\"\"\n    )\n)\n\n\nclass JsToCForGettextTest(TestCase):\n    pass\n\ndef make_function(js, c):\n    def test_func(self):\n        self.assertMultiLineEqual(prepare_js_for_gettext(js), c)\n    return test_func\n\nfor i, pair in enumerate(GETTEXT_CASES):\n    setattr(JsToCForGettextTest, \"test_case_%d\" % i, make_function(*pair))\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/utils/models.py",
    "content": "from django.db import models\n\n\nclass Category(models.Model):\n    name = models.CharField(max_length=100)\n\n    def next(self):\n        return self\n\n\nclass Thing(models.Model):\n    name = models.CharField(max_length=100)\n    category = models.ForeignKey(Category)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/utils/module_loading.py",
    "content": "import os\nimport sys\nimport imp\nfrom zipimport import zipimporter\n\nfrom django.utils import unittest\nfrom django.utils.importlib import import_module\nfrom django.utils.module_loading import module_has_submodule\nfrom django.utils._os import upath\n\n\nclass DefaultLoader(unittest.TestCase):\n    def setUp(self):\n        sys.meta_path.insert(0, ProxyFinder())\n\n    def tearDown(self):\n        sys.meta_path.pop(0)\n\n    def test_loader(self):\n        \"Normal module existence can be tested\"\n        test_module = import_module('regressiontests.utils.test_module')\n        test_no_submodule = import_module(\n            'regressiontests.utils.test_no_submodule')\n\n        # An importable child\n        self.assertTrue(module_has_submodule(test_module, 'good_module'))\n        mod = import_module('regressiontests.utils.test_module.good_module')\n        self.assertEqual(mod.content, 'Good Module')\n\n        # A child that exists, but will generate an import error if loaded\n        self.assertTrue(module_has_submodule(test_module, 'bad_module'))\n        self.assertRaises(ImportError, import_module, 'regressiontests.utils.test_module.bad_module')\n\n        # A child that doesn't exist\n        self.assertFalse(module_has_submodule(test_module, 'no_such_module'))\n        self.assertRaises(ImportError, import_module, 'regressiontests.utils.test_module.no_such_module')\n\n        # A child that doesn't exist, but is the name of a package on the path\n        self.assertFalse(module_has_submodule(test_module, 'django'))\n        self.assertRaises(ImportError, import_module, 'regressiontests.utils.test_module.django')\n\n        # Don't be confused by caching of import misses\n        import types  # causes attempted import of regressiontests.utils.types\n        self.assertFalse(module_has_submodule(sys.modules['regressiontests.utils'], 'types'))\n\n        # A module which doesn't have a __path__ (so no submodules)\n        self.assertFalse(module_has_submodule(test_no_submodule, 'anything'))\n        self.assertRaises(ImportError, import_module,\n            'regressiontests.utils.test_no_submodule.anything')\n\nclass EggLoader(unittest.TestCase):\n    def setUp(self):\n        self.old_path = sys.path[:]\n        self.egg_dir = '%s/eggs' % os.path.dirname(upath(__file__))\n\n    def tearDown(self):\n        sys.path = self.old_path\n        sys.path_importer_cache.clear()\n\n        sys.modules.pop('egg_module.sub1.sub2.bad_module', None)\n        sys.modules.pop('egg_module.sub1.sub2.good_module', None)\n        sys.modules.pop('egg_module.sub1.sub2', None)\n        sys.modules.pop('egg_module.sub1', None)\n        sys.modules.pop('egg_module.bad_module', None)\n        sys.modules.pop('egg_module.good_module', None)\n        sys.modules.pop('egg_module', None)\n\n    def test_shallow_loader(self):\n        \"Module existence can be tested inside eggs\"\n        egg_name = '%s/test_egg.egg' % self.egg_dir\n        sys.path.append(egg_name)\n        egg_module = import_module('egg_module')\n\n        # An importable child\n        self.assertTrue(module_has_submodule(egg_module, 'good_module'))\n        mod = import_module('egg_module.good_module')\n        self.assertEqual(mod.content, 'Good Module')\n\n        # A child that exists, but will generate an import error if loaded\n        self.assertTrue(module_has_submodule(egg_module, 'bad_module'))\n        self.assertRaises(ImportError, import_module, 'egg_module.bad_module')\n\n        # A child that doesn't exist\n        self.assertFalse(module_has_submodule(egg_module, 'no_such_module'))\n        self.assertRaises(ImportError, import_module, 'egg_module.no_such_module')\n\n    def test_deep_loader(self):\n        \"Modules deep inside an egg can still be tested for existence\"\n        egg_name = '%s/test_egg.egg' % self.egg_dir\n        sys.path.append(egg_name)\n        egg_module = import_module('egg_module.sub1.sub2')\n\n        # An importable child\n        self.assertTrue(module_has_submodule(egg_module, 'good_module'))\n        mod = import_module('egg_module.sub1.sub2.good_module')\n        self.assertEqual(mod.content, 'Deep Good Module')\n\n        # A child that exists, but will generate an import error if loaded\n        self.assertTrue(module_has_submodule(egg_module, 'bad_module'))\n        self.assertRaises(ImportError, import_module, 'egg_module.sub1.sub2.bad_module')\n\n        # A child that doesn't exist\n        self.assertFalse(module_has_submodule(egg_module, 'no_such_module'))\n        self.assertRaises(ImportError, import_module, 'egg_module.sub1.sub2.no_such_module')\n\nclass ProxyFinder(object):\n    def __init__(self):\n        self._cache = {}\n\n    def find_module(self, fullname, path=None):\n        tail = fullname.rsplit('.', 1)[-1]\n        try:\n            fd, fn, info = imp.find_module(tail, path)\n            if fullname in self._cache:\n                old_fd = self._cache[fullname][0]\n                if old_fd:\n                    old_fd.close()\n            self._cache[fullname] = (fd, fn, info)\n        except ImportError:\n            return None\n        else:\n            return self  # this is a loader as well\n\n    def load_module(self, fullname):\n        if fullname in sys.modules:\n            return sys.modules[fullname]\n        fd, fn, info = self._cache[fullname]\n        try:\n            return imp.load_module(fullname, fd, fn, info)\n        finally:\n            if fd:\n                fd.close()\n\nclass TestFinder(object):\n    def __init__(self, *args, **kwargs):\n        self.importer = zipimporter(*args, **kwargs)\n\n    def find_module(self, path):\n        importer = self.importer.find_module(path)\n        if importer is None:\n            return\n        return TestLoader(importer)\n\nclass TestLoader(object):\n    def __init__(self, importer):\n        self.importer = importer\n\n    def load_module(self, name):\n        mod = self.importer.load_module(name)\n        mod.__loader__ = self\n        return mod\n\nclass CustomLoader(EggLoader):\n    \"\"\"The Custom Loader test is exactly the same as the EggLoader, but\n    it uses a custom defined Loader and Finder that is intentionally\n    split into two classes. Although the EggLoader combines both functions\n    into one class, this isn't required.\n    \"\"\"\n    def setUp(self):\n        super(CustomLoader, self).setUp()\n        sys.path_hooks.insert(0, TestFinder)\n        sys.path_importer_cache.clear()\n\n    def tearDown(self):\n        super(CustomLoader, self).tearDown()\n        sys.path_hooks.pop(0)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/utils/numberformat.py",
    "content": "from unittest import TestCase\nfrom django.utils.numberformat import format as nformat\nfrom sys import float_info\n\n\nclass TestNumberFormat(TestCase):\n\n    def test_format_number(self):\n        self.assertEqual(nformat(1234, '.'), '1234')\n        self.assertEqual(nformat(1234.2, '.'), '1234.2')\n        self.assertEqual(nformat(1234, '.', decimal_pos=2), '1234.00')\n        self.assertEqual(nformat(1234, '.', grouping=2, thousand_sep=','),\n                         '1234')\n        self.assertEqual(nformat(1234, '.', grouping=2, thousand_sep=',',\n                                 force_grouping=True), '12,34')\n        self.assertEqual(nformat(-1234.33, '.', decimal_pos=1), '-1234.3')\n\n    def test_format_string(self):\n        self.assertEqual(nformat('1234', '.'), '1234')\n        self.assertEqual(nformat('1234.2', '.'), '1234.2')\n        self.assertEqual(nformat('1234', '.', decimal_pos=2), '1234.00')\n        self.assertEqual(nformat('1234', '.', grouping=2, thousand_sep=','),\n                         '1234')\n        self.assertEqual(nformat('1234', '.', grouping=2, thousand_sep=',',\n                                 force_grouping=True), '12,34')\n        self.assertEqual(nformat('-1234.33', '.', decimal_pos=1), '-1234.3')\n\n    def test_large_number(self):\n        most_max = ('{0}179769313486231570814527423731704356798070567525844996'\n                    '598917476803157260780028538760589558632766878171540458953'\n                    '514382464234321326889464182768467546703537516986049910576'\n                    '551282076245490090389328944075868508455133942304583236903'\n                    '222948165808559332123348274797826204144723168738177180919'\n                    '29988125040402618412485836{1}')\n        most_max2 = ('{0}35953862697246314162905484746340871359614113505168999'\n                     '31978349536063145215600570775211791172655337563430809179'\n                     '07028764928468642653778928365536935093407075033972099821'\n                     '15310256415249098018077865788815173701691026788460916647'\n                     '38064458963316171186642466965495956524082894463374763543'\n                     '61838599762500808052368249716736')\n        int_max = int(float_info.max)\n        self.assertEqual(nformat(int_max, '.'), most_max.format('', '8'))\n        self.assertEqual(nformat(int_max + 1, '.'), most_max.format('', '9'))\n        self.assertEqual(nformat(int_max * 2, '.'), most_max2.format(''))\n        self.assertEqual(nformat(0 - int_max, '.'), most_max.format('-', '8'))\n        self.assertEqual(nformat(-1 - int_max, '.'), most_max.format('-', '9'))\n        self.assertEqual(nformat(-2 * int_max, '.'), most_max2.format('-'))\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/utils/os_utils.py",
    "content": "import os\n\nfrom django.utils import unittest\nfrom django.utils._os import safe_join\n\n\nclass SafeJoinTests(unittest.TestCase):\n    def test_base_path_ends_with_sep(self):\n        drive, path = os.path.splitdrive(safe_join(\"/abc/\", \"abc\"))\n        self.assertEqual(\n            path,\n            \"{0}abc{0}abc\".format(os.path.sep)\n        )\n\n    def test_root_path(self):\n        drive, path = os.path.splitdrive(safe_join(\"/\", \"path\"))\n        self.assertEqual(\n            path,\n            \"{0}path\".format(os.path.sep),\n        )\n\n        drive, path = os.path.splitdrive(safe_join(\"/\", \"\"))\n        self.assertEqual(\n            path,\n            os.path.sep,\n        )\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/utils/regex_helper.py",
    "content": "from __future__ import unicode_literals\n\nfrom django.utils import regex_helper\nfrom django.utils import unittest\n\n\nclass NormalizeTests(unittest.TestCase):\n    def test_empty(self):\n        pattern = r\"\"\n        expected = [('', [])]\n        result = regex_helper.normalize(pattern)\n        self.assertEqual(result, expected)\n\n    def test_escape(self):\n        pattern = r\"\\\\\\^\\$\\.\\|\\?\\*\\+\\(\\)\\[\"\n        expected = [('\\\\^$.|?*+()[', [])]\n        result = regex_helper.normalize(pattern)\n        self.assertEqual(result, expected)\n\n    def test_group_positional(self):\n        pattern = r\"(.*)-(.+)\"\n        expected = [('%(_0)s-%(_1)s', ['_0', '_1'])]\n        result = regex_helper.normalize(pattern)\n        self.assertEqual(result, expected)\n\n    def test_group_ignored(self):\n        pattern = r\"(?i)(?L)(?m)(?s)(?u)(?#)\"\n        expected = [('', [])]\n        result = regex_helper.normalize(pattern)\n        self.assertEqual(result, expected)\n\n    def test_group_noncapturing(self):\n        pattern = r\"(?:non-capturing)\"\n        expected = [('non-capturing', [])]\n        result = regex_helper.normalize(pattern)\n        self.assertEqual(result, expected)\n\n    def test_group_named(self):\n        pattern = r\"(?P<first_group_name>.*)-(?P<second_group_name>.*)\"\n        expected = [('%(first_group_name)s-%(second_group_name)s',\n                    ['first_group_name', 'second_group_name'])]\n        result = regex_helper.normalize(pattern)\n        self.assertEqual(result, expected)\n\n    def test_group_backreference(self):\n        pattern = r\"(?P<first_group_name>.*)-(?P=first_group_name)\"\n        expected = [('%(first_group_name)s-%(first_group_name)s',\n                    ['first_group_name'])]\n        result = regex_helper.normalize(pattern)\n        self.assertEqual(result, expected)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/utils/simplelazyobject.py",
    "content": "from __future__ import unicode_literals\n\nimport copy\nimport pickle\n\nfrom django.test.utils import str_prefix\nfrom django.utils import six\nfrom django.utils.unittest import TestCase\nfrom django.utils.functional import SimpleLazyObject, empty\n\n\nclass _ComplexObject(object):\n    def __init__(self, name):\n        self.name = name\n\n    def __eq__(self, other):\n        return self.name == other.name\n\n    def __hash__(self):\n        return hash(self.name)\n\n    if six.PY3:\n        def __bytes__(self):\n            return (\"I am _ComplexObject(%r)\" % self.name).encode(\"utf-8\")\n\n        def __str__(self):\n            return self.name\n\n    else:\n        def __str__(self):\n            return b\"I am _ComplexObject(%r)\" % str(self.name)\n\n        def __unicode__(self):\n            return self.name\n\n    def __repr__(self):\n        return \"_ComplexObject(%r)\" % self.name\n\n\ncomplex_object = lambda: _ComplexObject(\"joe\")\n\n\nclass TestUtilsSimpleLazyObject(TestCase):\n    \"\"\"\n    Tests for SimpleLazyObject\n    \"\"\"\n    # Note that concrete use cases for SimpleLazyObject are also found in the\n    # auth context processor tests (unless the implementation of that function\n    # is changed).\n\n    def test_equality(self):\n        self.assertEqual(complex_object(), SimpleLazyObject(complex_object))\n        self.assertEqual(SimpleLazyObject(complex_object), complex_object())\n\n    def test_hash(self):\n        # hash() equality would not be true for many objects, but it should be\n        # for _ComplexObject\n        self.assertEqual(hash(complex_object()),\n                         hash(SimpleLazyObject(complex_object)))\n\n    def test_repr(self):\n        # For debugging, it will really confuse things if there is no clue that\n        # SimpleLazyObject is actually a proxy object. So we don't\n        # proxy __repr__\n        self.assertTrue(\"SimpleLazyObject\" in repr(SimpleLazyObject(complex_object)))\n\n    def test_bytes(self):\n        self.assertEqual(b\"I am _ComplexObject('joe')\",\n                bytes(SimpleLazyObject(complex_object)))\n\n    def test_text(self):\n        self.assertEqual(\"joe\", six.text_type(SimpleLazyObject(complex_object)))\n\n    def test_class(self):\n        # This is important for classes that use __class__ in things like\n        # equality tests.\n        self.assertEqual(_ComplexObject, SimpleLazyObject(complex_object).__class__)\n\n    def test_deepcopy(self):\n        # Check that we *can* do deep copy, and that it returns the right\n        # objects.\n\n        # First, for an unevaluated SimpleLazyObject\n        s = SimpleLazyObject(complex_object)\n        self.assertIs(s._wrapped, empty)\n        s2 = copy.deepcopy(s)\n        # something has gone wrong is s is evaluated\n        self.assertIs(s._wrapped, empty)\n        self.assertEqual(s2, complex_object())\n\n        # Second, for an evaluated SimpleLazyObject\n        name = s.name # evaluate\n        self.assertIsNot(s._wrapped, empty)\n        s3 = copy.deepcopy(s)\n        self.assertEqual(s3, complex_object())\n\n\n    def test_none(self):\n        i = [0]\n        def f():\n            i[0] += 1\n            return None\n\n        x = SimpleLazyObject(f)\n        self.assertEqual(str(x), \"None\")\n        self.assertEqual(i, [1])\n        self.assertEqual(str(x), \"None\")\n        self.assertEqual(i, [1])\n\n    def test_bool(self):\n        x = SimpleLazyObject(lambda: 3)\n        self.assertTrue(x)\n        x = SimpleLazyObject(lambda: 0)\n        self.assertFalse(x)\n\n    def test_pickle_complex(self):\n        # See ticket #16563\n        x = SimpleLazyObject(complex_object)\n        pickled = pickle.dumps(x)\n        unpickled = pickle.loads(pickled)\n        self.assertEqual(unpickled, x)\n        self.assertEqual(six.text_type(unpickled), six.text_type(x))\n        self.assertEqual(unpickled.name, x.name)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/utils/termcolors.py",
    "content": "from django.utils import unittest\nfrom django.utils.termcolors import parse_color_setting, PALETTES, DEFAULT_PALETTE, LIGHT_PALETTE, DARK_PALETTE, NOCOLOR_PALETTE\n\nclass TermColorTests(unittest.TestCase):\n\n    def test_empty_string(self):\n        self.assertEqual(parse_color_setting(''), PALETTES[DEFAULT_PALETTE])\n\n    def test_simple_palette(self):\n        self.assertEqual(parse_color_setting('light'), PALETTES[LIGHT_PALETTE])\n        self.assertEqual(parse_color_setting('dark'), PALETTES[DARK_PALETTE])\n        self.assertEqual(parse_color_setting('nocolor'), None)\n\n    def test_fg(self):\n        self.assertEqual(parse_color_setting('error=green'),\n                          dict(PALETTES[NOCOLOR_PALETTE],\n                            ERROR={'fg':'green'}))\n\n    def test_fg_bg(self):\n        self.assertEqual(parse_color_setting('error=green/blue'),\n                          dict(PALETTES[NOCOLOR_PALETTE],\n                            ERROR={'fg':'green', 'bg':'blue'}))\n\n    def test_fg_opts(self):\n        self.assertEqual(parse_color_setting('error=green,blink'),\n                          dict(PALETTES[NOCOLOR_PALETTE],\n                            ERROR={'fg':'green', 'opts': ('blink',)}))\n        self.assertEqual(parse_color_setting('error=green,bold,blink'),\n                          dict(PALETTES[NOCOLOR_PALETTE],\n                            ERROR={'fg':'green', 'opts': ('blink','bold')}))\n\n    def test_fg_bg_opts(self):\n        self.assertEqual(parse_color_setting('error=green/blue,blink'),\n                          dict(PALETTES[NOCOLOR_PALETTE],\n                            ERROR={'fg':'green', 'bg':'blue', 'opts': ('blink',)}))\n        self.assertEqual(parse_color_setting('error=green/blue,bold,blink'),\n                          dict(PALETTES[NOCOLOR_PALETTE],\n                            ERROR={'fg':'green', 'bg':'blue', 'opts': ('blink','bold')}))\n\n    def test_override_palette(self):\n        self.assertEqual(parse_color_setting('light;error=green'),\n                          dict(PALETTES[LIGHT_PALETTE],\n                            ERROR={'fg':'green'}))\n\n    def test_override_nocolor(self):\n        self.assertEqual(parse_color_setting('nocolor;error=green'),\n                          dict(PALETTES[NOCOLOR_PALETTE],\n                            ERROR={'fg': 'green'}))\n\n    def test_reverse_override(self):\n        self.assertEqual(parse_color_setting('error=green;light'), PALETTES[LIGHT_PALETTE])\n\n    def test_multiple_roles(self):\n        self.assertEqual(parse_color_setting('error=green;sql_field=blue'),\n                          dict(PALETTES[NOCOLOR_PALETTE],\n                            ERROR={'fg':'green'},\n                            SQL_FIELD={'fg':'blue'}))\n\n    def test_override_with_multiple_roles(self):\n        self.assertEqual(parse_color_setting('light;error=green;sql_field=blue'),\n                          dict(PALETTES[LIGHT_PALETTE],\n                            ERROR={'fg':'green'},\n                            SQL_FIELD={'fg':'blue'}))\n\n    def test_empty_definition(self):\n        self.assertEqual(parse_color_setting(';'), None)\n        self.assertEqual(parse_color_setting('light;'), PALETTES[LIGHT_PALETTE])\n        self.assertEqual(parse_color_setting(';;;'), None)\n\n    def test_empty_options(self):\n        self.assertEqual(parse_color_setting('error=green,'),\n                          dict(PALETTES[NOCOLOR_PALETTE],\n                            ERROR={'fg':'green'}))\n        self.assertEqual(parse_color_setting('error=green,,,'),\n                          dict(PALETTES[NOCOLOR_PALETTE],\n                            ERROR={'fg':'green'}))\n        self.assertEqual(parse_color_setting('error=green,,blink,,'),\n                          dict(PALETTES[NOCOLOR_PALETTE],\n                            ERROR={'fg':'green', 'opts': ('blink',)}))\n\n    def test_bad_palette(self):\n        self.assertEqual(parse_color_setting('unknown'), None)\n\n    def test_bad_role(self):\n        self.assertEqual(parse_color_setting('unknown='), None)\n        self.assertEqual(parse_color_setting('unknown=green'), None)\n        self.assertEqual(parse_color_setting('unknown=green;sql_field=blue'),\n                          dict(PALETTES[NOCOLOR_PALETTE],\n                            SQL_FIELD={'fg':'blue'}))\n\n    def test_bad_color(self):\n        self.assertEqual(parse_color_setting('error='), None)\n        self.assertEqual(parse_color_setting('error=;sql_field=blue'),\n                          dict(PALETTES[NOCOLOR_PALETTE],\n                            SQL_FIELD={'fg':'blue'}))\n        self.assertEqual(parse_color_setting('error=unknown'), None)\n        self.assertEqual(parse_color_setting('error=unknown;sql_field=blue'),\n                          dict(PALETTES[NOCOLOR_PALETTE],\n                            SQL_FIELD={'fg':'blue'}))\n        self.assertEqual(parse_color_setting('error=green/unknown'),\n                          dict(PALETTES[NOCOLOR_PALETTE],\n                            ERROR={'fg':'green'}))\n        self.assertEqual(parse_color_setting('error=green/blue/something'),\n                          dict(PALETTES[NOCOLOR_PALETTE],\n                            ERROR={'fg':'green', 'bg': 'blue'}))\n        self.assertEqual(parse_color_setting('error=green/blue/something,blink'),\n                          dict(PALETTES[NOCOLOR_PALETTE],\n                            ERROR={'fg':'green', 'bg': 'blue', 'opts': ('blink',)}))\n\n    def test_bad_option(self):\n        self.assertEqual(parse_color_setting('error=green,unknown'),\n                          dict(PALETTES[NOCOLOR_PALETTE],\n                            ERROR={'fg':'green'}))\n        self.assertEqual(parse_color_setting('error=green,unknown,blink'),\n                          dict(PALETTES[NOCOLOR_PALETTE],\n                            ERROR={'fg':'green', 'opts': ('blink',)}))\n\n    def test_role_case(self):\n        self.assertEqual(parse_color_setting('ERROR=green'),\n                          dict(PALETTES[NOCOLOR_PALETTE],\n                            ERROR={'fg':'green'}))\n        self.assertEqual(parse_color_setting('eRrOr=green'),\n                          dict(PALETTES[NOCOLOR_PALETTE],\n                            ERROR={'fg':'green'}))\n\n    def test_color_case(self):\n        self.assertEqual(parse_color_setting('error=GREEN'),\n                          dict(PALETTES[NOCOLOR_PALETTE],\n                            ERROR={'fg':'green'}))\n        self.assertEqual(parse_color_setting('error=GREEN/BLUE'),\n                          dict(PALETTES[NOCOLOR_PALETTE],\n                            ERROR={'fg':'green', 'bg':'blue'}))\n\n        self.assertEqual(parse_color_setting('error=gReEn'),\n                          dict(PALETTES[NOCOLOR_PALETTE],\n                            ERROR={'fg':'green'}))\n        self.assertEqual(parse_color_setting('error=gReEn/bLuE'),\n                          dict(PALETTES[NOCOLOR_PALETTE],\n                            ERROR={'fg':'green', 'bg':'blue'}))\n\n    def test_opts_case(self):\n        self.assertEqual(parse_color_setting('error=green,BLINK'),\n                          dict(PALETTES[NOCOLOR_PALETTE],\n                            ERROR={'fg':'green', 'opts': ('blink',)}))\n\n        self.assertEqual(parse_color_setting('error=green,bLiNk'),\n                          dict(PALETTES[NOCOLOR_PALETTE],\n                            ERROR={'fg':'green', 'opts': ('blink',)}))\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/utils/test_module/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/utils/test_module/bad_module.py",
    "content": "import a_package_name_that_does_not_exist\n\ncontent = 'Bad Module'"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/utils/test_module/good_module.py",
    "content": "content = 'Good Module'"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/utils/test_no_submodule.py",
    "content": "# Used to test for modules which don't have submodules.\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/utils/tests.py",
    "content": "\"\"\"\nTests for django.utils.\n\"\"\"\nfrom __future__ import absolute_import\n\nfrom .archive import TestBzip2Tar, TestGzipTar, TestTar, TestZip\nfrom .baseconv import TestBaseConv\nfrom .checksums import TestUtilsChecksums\nfrom .crypto import TestUtilsCryptoMisc, TestUtilsCryptoPBKDF2\nfrom .datastructures import (DictWrapperTests, ImmutableListTests,\n    MergeDictTests, MultiValueDictTests, SortedDictTests)\nfrom .dateformat import DateFormatTests\nfrom .dateparse import DateParseTests\nfrom .datetime_safe import DatetimeTests\nfrom .decorators import DecoratorFromMiddlewareTests\nfrom .encoding import TestEncodingUtils\nfrom .feedgenerator import FeedgeneratorTest\nfrom .functional import FunctionalTestCase\nfrom .html import TestUtilsHtml\nfrom .http import TestUtilsHttp, ETagProcessingTests, HttpDateProcessingTests\nfrom .ipv6 import TestUtilsIPv6\nfrom .itercompat import TestIsIterator\nfrom .jslex import JsToCForGettextTest, JsTokensTest\nfrom .module_loading import CustomLoader, DefaultLoader, EggLoader\nfrom .numberformat import TestNumberFormat\nfrom .os_utils import SafeJoinTests\nfrom .regex_helper import NormalizeTests\nfrom .simplelazyobject import TestUtilsSimpleLazyObject\nfrom .termcolors import TermColorTests\nfrom .text import TestUtilsText\nfrom .timesince import TimesinceTests\nfrom .timezone import TimezoneTests\nfrom .tzinfo import TzinfoTests\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/utils/text.py",
    "content": "# -*- coding: utf-8 -*-\nfrom __future__ import unicode_literals\n\nimport warnings\n\nfrom django.test import SimpleTestCase\nfrom django.utils import text\n\nclass TestUtilsText(SimpleTestCase):\n\n    # In Django 1.6 truncate_words() and truncate_html_words() will be removed\n    # so these tests will need to be adapted accordingly\n    def test_truncate_chars(self):\n        truncator = text.Truncator(\n            'The quick brown fox jumped over the lazy dog.'\n        )\n        self.assertEqual('The quick brown fox jumped over the lazy dog.',\n            truncator.chars(100)),\n        self.assertEqual('The quick brown fox ...',\n            truncator.chars(23)),\n        self.assertEqual('The quick brown fo.....',\n            truncator.chars(23, '.....')),\n\n        # Ensure that we normalize our unicode data first\n        nfc = text.Truncator('o\\xfco\\xfco\\xfco\\xfc')\n        nfd = text.Truncator('ou\\u0308ou\\u0308ou\\u0308ou\\u0308')\n        self.assertEqual('oüoüoüoü', nfc.chars(8))\n        self.assertEqual('oüoüoüoü', nfd.chars(8))\n        self.assertEqual('oü...', nfc.chars(5))\n        self.assertEqual('oü...', nfd.chars(5))\n\n        # Ensure the final length is calculated correctly when there are\n        # combining characters with no precomposed form, and that combining\n        # characters are not split up.\n        truncator = text.Truncator('-B\\u030AB\\u030A----8')\n        self.assertEqual('-B\\u030A...', truncator.chars(5))\n        self.assertEqual('-B\\u030AB\\u030A-...', truncator.chars(7))\n        self.assertEqual('-B\\u030AB\\u030A----8', truncator.chars(8))\n\n        # Ensure the length of the end text is correctly calculated when it\n        # contains combining characters with no precomposed form.\n        truncator = text.Truncator('-----')\n        self.assertEqual('---B\\u030A', truncator.chars(4, 'B\\u030A'))\n        self.assertEqual('-----', truncator.chars(5, 'B\\u030A'))\n\n        # Make a best effort to shorten to the desired length, but requesting\n        # a length shorter than the ellipsis shouldn't break\n        self.assertEqual('...', text.Truncator('asdf').chars(1))\n\n    def test_truncate_words(self):\n        truncator = text.Truncator('The quick brown fox jumped over the lazy '\n            'dog.')\n        self.assertEqual('The quick brown fox jumped over the lazy dog.',\n            truncator.words(10))\n        self.assertEqual('The quick brown fox...', truncator.words(4))\n        self.assertEqual('The quick brown fox[snip]',\n            truncator.words(4, '[snip]'))\n\n    def test_truncate_html_words(self):\n        truncator = text.Truncator('<p><strong><em>The quick brown fox jumped '\n            'over the lazy dog.</em></strong></p>')\n        self.assertEqual('<p><strong><em>The quick brown fox jumped over the '\n            'lazy dog.</em></strong></p>', truncator.words(10, html=True))\n        self.assertEqual('<p><strong><em>The quick brown fox...</em>'\n            '</strong></p>', truncator.words(4, html=True))\n        self.assertEqual('<p><strong><em>The quick brown fox....</em>'\n            '</strong></p>', truncator.words(4, '....', html=True))\n        self.assertEqual('<p><strong><em>The quick brown fox</em></strong>'\n            '</p>', truncator.words(4, '', html=True))\n        # Test with new line inside tag\n        truncator = text.Truncator('<p>The quick <a href=\"xyz.html\"\\n'\n            'id=\"mylink\">brown fox</a> jumped over the lazy dog.</p>')\n        self.assertEqual('<p>The quick <a href=\"xyz.html\"\\n'\n            'id=\"mylink\">brown...</a></p>', truncator.words(3, '...', html=True))\n\n    def test_old_truncate_words(self):\n        with warnings.catch_warnings(record=True) as w:\n            warnings.simplefilter(\"always\")\n            self.assertEqual('The quick brown fox jumped over the lazy dog.',\n                text.truncate_words('The quick brown fox jumped over the lazy dog.', 10))\n            self.assertEqual('The quick brown fox ...',\n                text.truncate_words('The quick brown fox jumped over the lazy dog.', 4))\n            self.assertEqual('The quick brown fox ....',\n                text.truncate_words('The quick brown fox jumped over the lazy dog.', 4, '....'))\n            self.assertGreater(len(w), 0)\n\n    def test_old_truncate_html_words(self):\n        with warnings.catch_warnings(record=True) as w:\n            warnings.simplefilter(\"always\")\n            self.assertEqual('<p><strong><em>The quick brown fox jumped over the lazy dog.</em></strong></p>',\n                text.truncate_html_words('<p><strong><em>The quick brown fox jumped over the lazy dog.</em></strong></p>', 10))\n            self.assertEqual('<p><strong><em>The quick brown fox ...</em></strong></p>',\n                text.truncate_html_words('<p><strong><em>The quick brown fox jumped over the lazy dog.</em></strong></p>', 4))\n            self.assertEqual('<p><strong><em>The quick brown fox ....</em></strong></p>',\n                text.truncate_html_words('<p><strong><em>The quick brown fox jumped over the lazy dog.</em></strong></p>', 4, '....'))\n            self.assertEqual('<p><strong><em>The quick brown fox</em></strong></p>',\n                text.truncate_html_words('<p><strong><em>The quick brown fox jumped over the lazy dog.</em></strong></p>', 4, None))\n            self.assertGreater(len(w), 0)\n\n    def test_wrap(self):\n        digits = '1234 67 9'\n        self.assertEqual(text.wrap(digits, 100), '1234 67 9')\n        self.assertEqual(text.wrap(digits, 9), '1234 67 9')\n        self.assertEqual(text.wrap(digits, 8), '1234 67\\n9')\n\n        self.assertEqual(text.wrap('short\\na long line', 7),\n                         'short\\na long\\nline')\n\n        self.assertEqual(text.wrap('do-not-break-long-words please? ok', 8),\n                         'do-not-break-long-words\\nplease?\\nok')\n\n        long_word = 'l%sng' % ('o' * 20)\n        self.assertEqual(text.wrap(long_word, 20), long_word)\n        self.assertEqual(text.wrap('a %s word' % long_word, 10),\n                         'a\\n%s\\nword' % long_word)\n\n    def test_slugify(self):\n        items = (\n            ('Hello, World!', 'hello-world'),\n            ('spam & eggs', 'spam-eggs'),\n        )\n        for value, output in items:\n            self.assertEqual(text.slugify(value), output)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/utils/timesince.py",
    "content": "from __future__ import unicode_literals\n\nimport datetime\nimport unittest\n\nfrom django.utils.timesince import timesince, timeuntil\nfrom django.utils.tzinfo import LocalTimezone, FixedOffset\n\nclass TimesinceTests(unittest.TestCase):\n\n    def setUp(self):\n        self.t = datetime.datetime(2007, 8, 14, 13, 46, 0)\n        self.onemicrosecond = datetime.timedelta(microseconds=1)\n        self.onesecond = datetime.timedelta(seconds=1)\n        self.oneminute = datetime.timedelta(minutes=1)\n        self.onehour = datetime.timedelta(hours=1)\n        self.oneday = datetime.timedelta(days=1)\n        self.oneweek = datetime.timedelta(days=7)\n        self.onemonth = datetime.timedelta(days=30)\n        self.oneyear = datetime.timedelta(days=365)\n\n    def test_equal_datetimes(self):\n        \"\"\" equal datetimes. \"\"\"\n        self.assertEqual(timesince(self.t, self.t), '0 minutes')\n\n    def test_ignore_microseconds_and_seconds(self):\n        \"\"\" Microseconds and seconds are ignored. \"\"\"\n        self.assertEqual(timesince(self.t, self.t+self.onemicrosecond),\n            '0 minutes')\n        self.assertEqual(timesince(self.t, self.t+self.onesecond),\n            '0 minutes')\n\n    def test_other_units(self):\n        \"\"\" Test other units. \"\"\"\n        self.assertEqual(timesince(self.t, self.t+self.oneminute),\n            '1 minute')\n        self.assertEqual(timesince(self.t, self.t+self.onehour), '1 hour')\n        self.assertEqual(timesince(self.t, self.t+self.oneday), '1 day')\n        self.assertEqual(timesince(self.t, self.t+self.oneweek), '1 week')\n        self.assertEqual(timesince(self.t, self.t+self.onemonth),\n            '1 month')\n        self.assertEqual(timesince(self.t, self.t+self.oneyear), '1 year')\n\n    def test_multiple_units(self):\n        \"\"\" Test multiple units. \"\"\"\n        self.assertEqual(timesince(self.t,\n            self.t+2*self.oneday+6*self.onehour), '2 days, 6 hours')\n        self.assertEqual(timesince(self.t,\n            self.t+2*self.oneweek+2*self.oneday), '2 weeks, 2 days')\n\n    def test_display_first_unit(self):\n        \"\"\"\n        If the two differing units aren't adjacent, only the first unit is\n        displayed.\n        \"\"\"\n        self.assertEqual(timesince(self.t,\n            self.t+2*self.oneweek+3*self.onehour+4*self.oneminute),\n            '2 weeks')\n\n        self.assertEqual(timesince(self.t,\n            self.t+4*self.oneday+5*self.oneminute), '4 days')\n\n    def test_display_second_before_first(self):\n        \"\"\"\n        When the second date occurs before the first, we should always\n        get 0 minutes.\n        \"\"\"\n        self.assertEqual(timesince(self.t, self.t-self.onemicrosecond),\n            '0 minutes')\n        self.assertEqual(timesince(self.t, self.t-self.onesecond),\n            '0 minutes')\n        self.assertEqual(timesince(self.t, self.t-self.oneminute),\n            '0 minutes')\n        self.assertEqual(timesince(self.t, self.t-self.onehour),\n            '0 minutes')\n        self.assertEqual(timesince(self.t, self.t-self.oneday),\n            '0 minutes')\n        self.assertEqual(timesince(self.t, self.t-self.oneweek),\n            '0 minutes')\n        self.assertEqual(timesince(self.t, self.t-self.onemonth),\n            '0 minutes')\n        self.assertEqual(timesince(self.t, self.t-self.oneyear),\n            '0 minutes')\n        self.assertEqual(timesince(self.t,\n            self.t-2*self.oneday-6*self.onehour), '0 minutes')\n        self.assertEqual(timesince(self.t,\n            self.t-2*self.oneweek-2*self.oneday), '0 minutes')\n        self.assertEqual(timesince(self.t,\n            self.t-2*self.oneweek-3*self.onehour-4*self.oneminute),\n            '0 minutes')\n        self.assertEqual(timesince(self.t,\n            self.t-4*self.oneday-5*self.oneminute), '0 minutes')\n\n    def test_different_timezones(self):\n        \"\"\" When using two different timezones. \"\"\"\n        now = datetime.datetime.now()\n        now_tz = datetime.datetime.now(LocalTimezone(now))\n        now_tz_i = datetime.datetime.now(FixedOffset((3 * 60) + 15))\n\n        self.assertEqual(timesince(now), '0 minutes')\n        self.assertEqual(timesince(now_tz), '0 minutes')\n        self.assertEqual(timeuntil(now_tz, now_tz_i), '0 minutes')\n\n    def test_date_objects(self):\n        \"\"\" Both timesince and timeuntil should work on date objects (#17937). \"\"\"\n        today = datetime.date.today()\n        self.assertEqual(timesince(today + self.oneday), '0 minutes')\n        self.assertEqual(timeuntil(today - self.oneday), '0 minutes')\n\n    def test_both_date_objects(self):\n        \"\"\" Timesince should work with both date objects (#9672) \"\"\"\n        today = datetime.date.today()\n        self.assertEqual(timeuntil(today + self.oneday, today), '1 day')\n        self.assertEqual(timeuntil(today - self.oneday, today), '0 minutes')\n        self.assertEqual(timeuntil(today + self.oneweek, today), '1 week')\n\n    def test_naive_datetime_with_tzinfo_attribute(self):\n        class naive(datetime.tzinfo):\n            def utcoffset(self, dt):\n                return None\n        future = datetime.datetime(2080, 1, 1, tzinfo=naive())\n        self.assertEqual(timesince(future), '0 minutes')\n        past = datetime.datetime(1980, 1, 1, tzinfo=naive())\n        self.assertEqual(timeuntil(past), '0 minutes')\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/utils/timezone.py",
    "content": "import copy\nimport datetime\nimport pickle\nfrom django.test.utils import override_settings\nfrom django.utils import timezone\nfrom django.utils.tzinfo import FixedOffset\nfrom django.utils import unittest\n\n\nEAT = FixedOffset(180)      # Africa/Nairobi\nICT = FixedOffset(420)      # Asia/Bangkok\n\n\nclass TimezoneTests(unittest.TestCase):\n\n    def test_localtime(self):\n        now = datetime.datetime.utcnow().replace(tzinfo=timezone.utc)\n        local_tz = timezone.LocalTimezone()\n        local_now = timezone.localtime(now, local_tz)\n        self.assertEqual(local_now.tzinfo, local_tz)\n\n    def test_now(self):\n        with override_settings(USE_TZ=True):\n            self.assertTrue(timezone.is_aware(timezone.now()))\n        with override_settings(USE_TZ=False):\n            self.assertTrue(timezone.is_naive(timezone.now()))\n\n    def test_override(self):\n        default = timezone.get_default_timezone()\n        try:\n            timezone.activate(ICT)\n\n            with timezone.override(EAT):\n                self.assertIs(EAT, timezone.get_current_timezone())\n            self.assertIs(ICT, timezone.get_current_timezone())\n\n            with timezone.override(None):\n                self.assertIs(default, timezone.get_current_timezone())\n            self.assertIs(ICT, timezone.get_current_timezone())\n\n            timezone.deactivate()\n\n            with timezone.override(EAT):\n                self.assertIs(EAT, timezone.get_current_timezone())\n            self.assertIs(default, timezone.get_current_timezone())\n\n            with timezone.override(None):\n                self.assertIs(default, timezone.get_current_timezone())\n            self.assertIs(default, timezone.get_current_timezone())\n        finally:\n            timezone.deactivate()\n\n    def test_copy(self):\n        self.assertIsInstance(copy.copy(timezone.UTC()), timezone.UTC)\n        self.assertIsInstance(copy.copy(timezone.LocalTimezone()), timezone.LocalTimezone)\n\n    def test_deepcopy(self):\n        self.assertIsInstance(copy.deepcopy(timezone.UTC()), timezone.UTC)\n        self.assertIsInstance(copy.deepcopy(timezone.LocalTimezone()), timezone.LocalTimezone)\n\n    def test_pickling_unpickling(self):\n        self.assertIsInstance(pickle.loads(pickle.dumps(timezone.UTC())), timezone.UTC)\n        self.assertIsInstance(pickle.loads(pickle.dumps(timezone.LocalTimezone())), timezone.LocalTimezone)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/utils/tzinfo.py",
    "content": "import copy\nimport datetime\nimport os\nimport pickle\nimport time\nfrom django.utils.tzinfo import FixedOffset, LocalTimezone\nfrom django.utils import unittest\n\nclass TzinfoTests(unittest.TestCase):\n\n    @classmethod\n    def setUpClass(cls):\n        cls.old_TZ = os.environ.get('TZ')\n        os.environ['TZ'] = 'US/Eastern'\n\n        try:\n            # Check if a timezone has been set\n            time.tzset()\n            cls.tz_tests = True\n        except AttributeError:\n            # No timezone available. Don't run the tests that require a TZ\n            cls.tz_tests = False\n\n    @classmethod\n    def tearDownClass(cls):\n        if cls.old_TZ is None:\n            del os.environ['TZ']\n        else:\n            os.environ['TZ'] = cls.old_TZ\n\n        # Cleanup - force re-evaluation of TZ environment variable.\n        if cls.tz_tests:\n            time.tzset()\n\n    def test_fixedoffset(self):\n        self.assertEqual(repr(FixedOffset(0)), '+0000')\n        self.assertEqual(repr(FixedOffset(60)), '+0100')\n        self.assertEqual(repr(FixedOffset(-60)), '-0100')\n        self.assertEqual(repr(FixedOffset(280)), '+0440')\n        self.assertEqual(repr(FixedOffset(-280)), '-0440')\n        self.assertEqual(repr(FixedOffset(-78.4)), '-0118')\n        self.assertEqual(repr(FixedOffset(78.4)), '+0118')\n        self.assertEqual(repr(FixedOffset(-5.5*60)), '-0530')\n        self.assertEqual(repr(FixedOffset(5.5*60)), '+0530')\n        self.assertEqual(repr(FixedOffset(-.5*60)), '-0030')\n        self.assertEqual(repr(FixedOffset(.5*60)), '+0030')\n\n    def test_16899(self):\n        if not self.tz_tests:\n            return\n        ts = 1289106000\n        # Midnight at the end of DST in US/Eastern: 2010-11-07T05:00:00Z\n        dt = datetime.datetime.utcfromtimestamp(ts)\n        # US/Eastern -- we force its representation to \"EST\"\n        tz = LocalTimezone(dt + datetime.timedelta(days=1))\n        self.assertEqual(\n                repr(datetime.datetime.fromtimestamp(ts - 3600, tz)),\n                'datetime.datetime(2010, 11, 7, 0, 0, tzinfo=EST)')\n        self.assertEqual(\n                repr(datetime.datetime.fromtimestamp(ts, tz)),\n                'datetime.datetime(2010, 11, 7, 1, 0, tzinfo=EST)')\n        self.assertEqual(\n                repr(datetime.datetime.fromtimestamp(ts + 3600, tz)),\n                'datetime.datetime(2010, 11, 7, 1, 0, tzinfo=EST)')\n\n    def test_copy(self):\n        now = datetime.datetime.now()\n        self.assertIsInstance(copy.copy(FixedOffset(90)), FixedOffset)\n        self.assertIsInstance(copy.copy(LocalTimezone(now)), LocalTimezone)\n\n    def test_deepcopy(self):\n        now = datetime.datetime.now()\n        self.assertIsInstance(copy.deepcopy(FixedOffset(90)), FixedOffset)\n        self.assertIsInstance(copy.deepcopy(LocalTimezone(now)), LocalTimezone)\n\n    def test_pickling_unpickling(self):\n        now = datetime.datetime.now()\n        self.assertIsInstance(pickle.loads(pickle.dumps(FixedOffset(90))), FixedOffset)\n        self.assertIsInstance(pickle.loads(pickle.dumps(LocalTimezone(now))), LocalTimezone)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/version/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/version/models.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/version/tests.py",
    "content": "import re\n\nfrom django import get_version\nfrom django.utils.unittest import TestCase\n\nclass VersionTests(TestCase):\n\n    def test_development(self):\n        ver_tuple = (1, 4, 0, 'alpha', 0)\n        # This will return a different result when it's run within or outside\n        # of a git clone: 1.4.devYYYYMMDDHHMMSS or 1.4.\n        ver_string = get_version(ver_tuple)\n        self.assertRegexpMatches(ver_string, r'1\\.4(\\.dev\\d+)?')\n\n    def test_releases(self):\n        tuples_to_strings = (\n            ((1, 4, 0, 'alpha', 1), '1.4a1'),\n            ((1, 4, 0, 'beta', 1), '1.4b1'),\n            ((1, 4, 0, 'rc', 1), '1.4c1'),\n            ((1, 4, 0, 'final', 0), '1.4'),\n            ((1, 4, 1, 'rc', 2), '1.4.1c2'),\n            ((1, 4, 1, 'final', 0), '1.4.1'),\n        )\n        for ver_tuple, ver_string in tuples_to_strings:\n            self.assertEqual(get_version(ver_tuple), ver_string)\n\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/views/__init__.py",
    "content": "# -*- coding: utf-8 -*-\nfrom __future__ import unicode_literals\n\nclass BrokenException(Exception):\n    pass\n\nexcept_args = (b'Broken!',         # plain exception with ASCII text\n               '¡Broken!',         # non-ASCII unicode data\n               '¡Broken!'.encode('utf-8'), # non-ASCII, utf-8 encoded bytestring\n               b'\\xa1Broken!', )   # non-ASCII, latin1 bytestring\n\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/views/app0/__init__.py",
    "content": "#\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/views/app0/locale/en/LC_MESSAGES/djangojs.po",
    "content": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same license as the PACKAGE package.\n# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.\n#\n#, fuzzy\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: PACKAGE VERSION\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2007-09-15 19:15+0200\\n\"\n\"PO-Revision-Date: 2010-05-12 12:41-0300\\n\"\n\"Last-Translator: FULL NAME <EMAIL@ADDRESS>\\n\"\n\"Language-Team: LANGUAGE <LL@li.org>\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\nmsgid \"il faut traduire cette chaîne de caractères de app0\"\nmsgstr \"this app0 string is to be translated\"\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/views/app1/__init__.py",
    "content": "#\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/views/app1/locale/fr/LC_MESSAGES/djangojs.po",
    "content": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same license as the PACKAGE package.\n# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.\n#\n#, fuzzy\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: PACKAGE VERSION\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2007-09-15 19:15+0200\\n\"\n\"PO-Revision-Date: 2010-05-12 12:41-0300\\n\"\n\"Last-Translator: FULL NAME <EMAIL@ADDRESS>\\n\"\n\"Language-Team: LANGUAGE <LL@li.org>\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\nmsgid \"this app1 string is to be translated\"\nmsgstr \"il faut traduire cette chaîne de caractères de app1\"\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/views/app2/__init__.py",
    "content": "#\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/views/app2/locale/fr/LC_MESSAGES/djangojs.po",
    "content": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same license as the PACKAGE package.\n# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.\n#\n#, fuzzy\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: PACKAGE VERSION\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2007-09-15 19:15+0200\\n\"\n\"PO-Revision-Date: 2010-05-12 22:05-0300\\n\"\n\"Last-Translator: FULL NAME <EMAIL@ADDRESS>\\n\"\n\"Language-Team: LANGUAGE <LL@li.org>\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\nmsgid \"this app2 string is to be translated\"\nmsgstr \"il faut traduire cette chaîne de caractères de app2\"\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/views/app3/__init__.py",
    "content": "#\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/views/app3/locale/es_AR/LC_MESSAGES/djangojs.po",
    "content": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same license as the PACKAGE package.\n# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.\n#\n#, fuzzy\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: PACKAGE VERSION\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2007-09-15 19:15+0200\\n\"\n\"PO-Revision-Date: 2010-05-12 12:41-0300\\n\"\n\"Last-Translator: FULL NAME <EMAIL@ADDRESS>\\n\"\n\"Language-Team: LANGUAGE <LL@li.org>\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\nmsgid \"il faut traduire cette chaîne de caractères de app3\"\nmsgstr \"este texto de app3 debe ser traducido\"\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/views/app4/__init__.py",
    "content": "#\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/views/app4/locale/es_AR/LC_MESSAGES/djangojs.po",
    "content": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same license as the PACKAGE package.\n# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.\n#\n#, fuzzy\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: PACKAGE VERSION\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2007-09-15 19:15+0200\\n\"\n\"PO-Revision-Date: 2010-05-12 12:41-0300\\n\"\n\"Last-Translator: FULL NAME <EMAIL@ADDRESS>\\n\"\n\"Language-Team: LANGUAGE <LL@li.org>\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\nmsgid \"il faut traduire cette chaîne de caractères de app4\"\nmsgstr \"este texto de app4 debe ser traducido\"\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/views/fixtures/testdata.json",
    "content": "[\n    {\n        \"pk\": \"1\",\n        \"model\": \"auth.user\",\n        \"fields\": {\n            \"username\": \"testclient\",\n            \"first_name\": \"Test\",\n            \"last_name\": \"Client\",\n            \"is_active\": true,\n            \"is_superuser\": false,\n            \"is_staff\": false,\n            \"last_login\": \"2006-12-17 07:03:31\",\n            \"groups\": [],\n            \"user_permissions\": [],\n            \"password\": \"sha1$6efc0$f93efe9fd7542f25a7be94871ea45aa95de57161\",\n            \"email\": \"testclient@example.com\",\n            \"date_joined\": \"2006-12-17 07:03:31\"\n        }\n    },\n    {\n        \"pk\": 1,\n        \"model\": \"views.author\",\n        \"fields\": {\n            \"name\": \"Boris\"\n        }\n    },\n    {\n        \"pk\": 1,\n        \"model\": \"views.article\",\n        \"fields\": {\n            \"author\": 1,\n            \"title\": \"Old Article\",\n            \"slug\": \"old_article\",\n            \"date_created\": \"2001-01-01 21:22:23\"\n        }\n    }, \n    {\n        \"pk\": 2, \n        \"model\": \"views.article\", \n        \"fields\": {\n            \"author\": 1, \n            \"title\": \"Current Article\",\n            \"slug\": \"current_article\",\n            \"date_created\": \"2007-09-17 21:22:23\"\n        }\n    }, \n    {\n        \"pk\": 3, \n        \"model\": \"views.article\", \n        \"fields\": {\n            \"author\": 1, \n            \"title\": \"Future Article\",\n            \"slug\": \"future_article\",\n            \"date_created\": \"3000-01-01 21:22:23\"\n        }\n    }, \n\t{\n        \"pk\": 1,\n        \"model\": \"views.urlarticle\",\n        \"fields\": {\n            \"author\": 1,\n            \"title\": \"Old Article\",\n            \"slug\": \"old_article\",\n            \"date_created\": \"2001-01-01 21:22:23\"\n        }\n    },\n    {\n        \"pk\": 1,\n        \"model\": \"sites.site\",\n        \"fields\": {\n            \"domain\": \"testserver\",\n            \"name\": \"testserver\"\n        }\n    }\n]\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/views/generic_urls.py",
    "content": "# -*- coding:utf-8 -*-\nfrom __future__ import absolute_import, unicode_literals\n\nfrom django.conf.urls import patterns, url\nfrom django.views.generic import RedirectView\n\nfrom . import views\nfrom .models import Article, DateArticle, UrlArticle\n\n\ndate_based_info_dict = {\n    'queryset': Article.objects.all(),\n    'date_field': 'date_created',\n    'month_format': '%m',\n}\n\nobject_list_dict = {\n    'queryset': Article.objects.all(),\n    'paginate_by': 2,\n}\n\nobject_list_no_paginate_by = {\n    'queryset': Article.objects.all(),\n}\n\nnumeric_days_info_dict = dict(date_based_info_dict, day_format='%d')\n\ndate_based_datefield_info_dict = dict(date_based_info_dict, queryset=DateArticle.objects.all())\n\nurlpatterns = patterns('',\n    (r'^accounts/login/$', 'django.contrib.auth.views.login', {'template_name': 'login.html'}),\n    (r'^accounts/logout/$', 'django.contrib.auth.views.logout'),\n\n    # Special URLs for particular regression cases.\n    url('^中文/$', 'regressiontests.views.views.redirect'),\n    url('^中文/target/$', 'regressiontests.views.views.index_page'),\n)\n\n# rediriects, both temporary and permanent, with non-ASCII targets\nurlpatterns += patterns('',\n    ('^nonascii_redirect/$', RedirectView.as_view(\n        url='/中文/target/', permanent=False)),\n    ('^permanent_nonascii_redirect/$', RedirectView.as_view(\n        url='/中文/target/', permanent=True)),\n)\n\nurlpatterns += patterns('regressiontests.views.views',\n    (r'^shortcuts/render_to_response/$', 'render_to_response_view'),\n    (r'^shortcuts/render_to_response/request_context/$', 'render_to_response_view_with_request_context'),\n    (r'^shortcuts/render_to_response/content_type/$', 'render_to_response_view_with_content_type'),\n    (r'^shortcuts/render/$', 'render_view'),\n    (r'^shortcuts/render/base_context/$', 'render_view_with_base_context'),\n    (r'^shortcuts/render/content_type/$', 'render_view_with_content_type'),\n    (r'^shortcuts/render/status/$', 'render_view_with_status'),\n    (r'^shortcuts/render/current_app/$', 'render_view_with_current_app'),\n    (r'^shortcuts/render/current_app_conflict/$', 'render_view_with_current_app_conflict'),\n)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/views/locale/de/LC_MESSAGES/djangojs.po",
    "content": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same license as the PACKAGE package.\n# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: django tests\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2010-02-14 17:33+0100\\n\"\n\"PO-Revision-Date: 2011-01-21 21:37-0300\\n\"\n\"Last-Translator: Jannis Leidel <jannis@leidel.info>\\n\"\n\"Language-Team: de <de@li.org>\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1)\\n\"\n\n#: models.py:7\nmsgctxt \"month name\"\nmsgid \"May\"\nmsgstr \"Mai\"\n\n#: models.py:9\nmsgctxt \"verb\"\nmsgid \"May\"\nmsgstr \"Kann\"\n\n#: models.py:11\nmsgid \"%s item\"\nmsgid_plural \"%s items\"\nmsgstr[0] \"%s Element\"\nmsgstr[1] \"%s Elemente\"\n\n#: models.py:11\nmsgctxt \"search\"\nmsgid \"%s result\"\nmsgid_plural \"%s results\"\nmsgstr[0] \"%s Resultat\"\nmsgstr[1] \"%s Resultate\"\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/views/locale/es/LC_MESSAGES/djangojs.po",
    "content": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same license as the PACKAGE package.\n# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.\n#\n#, fuzzy\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: PACKAGE VERSION\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2007-09-15 16:45+0200\\n\"\n\"PO-Revision-Date: 2010-05-12 12:57-0300\\n\"\n\"Last-Translator: FULL NAME <EMAIL@ADDRESS>\\n\"\n\"Language-Team: LANGUAGE <LL@li.org>\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\n#: media/js/translate.js:1\nmsgid \"this is to be translated\"\nmsgstr \"esto tiene que ser traducido\"\n\n\nmsgid \"Choose a time\"\nmsgstr \"Elige una hora\"\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/views/locale/fr/LC_MESSAGES/djangojs.po",
    "content": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same license as the PACKAGE package.\n# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.\n#\n#, fuzzy\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: PACKAGE VERSION\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2007-09-15 19:15+0200\\n\"\n\"PO-Revision-Date: 2010-05-12 12:41-0300\\n\"\n\"Last-Translator: FULL NAME <EMAIL@ADDRESS>\\n\"\n\"Language-Team: LANGUAGE <LL@li.org>\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\nmsgid \"this is to be translated\"\nmsgstr \"il faut le traduire\"\n\n\nmsgid \"Choose a time\"\nmsgstr \"Choisir une heure\"\n\nmsgctxt \"month name\"\nmsgid \"May\"\nmsgstr \"mai\"\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/views/locale/ru/LC_MESSAGES/djangojs.po",
    "content": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same license as the PACKAGE package.\n# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.\n#\n#, fuzzy\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: PACKAGE VERSION\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2007-09-15 16:45+0200\\n\"\n\"PO-Revision-Date: 2010-05-12 12:57-0300\\n\"\n\"Last-Translator: FULL NAME <EMAIL@ADDRESS>\\n\"\n\"Language-Team: LANGUAGE <LL@li.org>\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\nmsgid \"this is to be translated\"\nmsgstr \"перевод\"\n\n\nmsgid \"Choose a time\"\nmsgstr \"Выберите время\"\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/views/media/file.txt",
    "content": "An example media file."
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/views/media/file.unknown",
    "content": "An unknown file extension.\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/views/models.py",
    "content": "\"\"\"\nRegression tests for Django built-in views.\n\"\"\"\n\nfrom django.db import models\nfrom django.utils.encoding import python_2_unicode_compatible\n\n@python_2_unicode_compatible\nclass Author(models.Model):\n    name = models.CharField(max_length=100)\n\n    def __str__(self):\n        return self.name\n\n    def get_absolute_url(self):\n        return '/views/authors/%s/' % self.id\n\n@python_2_unicode_compatible\nclass BaseArticle(models.Model):\n    \"\"\"\n    An abstract article Model so that we can create article models with and\n    without a get_absolute_url method (for create_update generic views tests).\n    \"\"\"\n    title = models.CharField(max_length=100)\n    slug = models.SlugField()\n    author = models.ForeignKey(Author)\n\n    class Meta:\n        abstract = True\n\n    def __str__(self):\n        return self.title\n\nclass Article(BaseArticle):\n    date_created = models.DateTimeField()\n\nclass UrlArticle(BaseArticle):\n    \"\"\"\n    An Article class with a get_absolute_url defined.\n    \"\"\"\n    date_created = models.DateTimeField()\n\n    def get_absolute_url(self):\n        return '/urlarticles/%s/' % self.slug\n    get_absolute_url.purge = True\n\nclass DateArticle(BaseArticle):\n    \"\"\"\n    An article Model with a DateField instead of DateTimeField,\n    for testing #7602\n    \"\"\"\n    date_created = models.DateField()\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/views/templates/debug/render_test.html",
    "content": "{{ foo }}.{{ bar }}.{{ baz }}.{{ STATIC_URL }}\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/views/templates/debug/template_exception.html",
    "content": "{% load debugtags %}\n{% go_boom arg %}\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/views/templates/jsi18n.html",
    "content": "<html>\n<head>\n  <script type=\"text/javascript\" src=\"/jsi18n_admin/\"></script>\n</head>\n\n<body>\n  <p id=\"gettext\">\n    <script type=\"text/javascript\">\n    document.write(gettext(\"Remove\"));\n    </script>\n  </p>\n\n  <p id=\"ngettext_sing\">\n    <script type=\"text/javascript\">\n    document.write(interpolate(ngettext(\"%s item\", \"%s items\", 1), [1]));\n    </script>\n  </p>\n\n  <p id=\"ngettext_plur\">\n    <script type=\"text/javascript\">\n    document.write(interpolate(ngettext(\"%s item\", \"%s items\", 455), [455]));\n    </script>\n  </p>\n\n  <p id=\"pgettext\">\n    <script type=\"text/javascript\">\n    document.write(pgettext(\"verb\", \"May\"));\n    </script>\n  </p>\n\n  <p id=\"npgettext_sing\">\n    <script type=\"text/javascript\">\n    document.write(interpolate(npgettext(\"search\", \"%s result\", \"%s results\", 1), [1]));\n    </script>\n  </p>\n\n  <p id=\"npgettext_plur\">\n    <script type=\"text/javascript\">\n    document.write(interpolate(npgettext(\"search\", \"%s result\", \"%s results\", 455), [455]));\n    </script>\n  </p>\n\n</body>\n</html>\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/views/templatetags/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/views/templatetags/debugtags.py",
    "content": "from __future__ import absolute_import\n\nfrom django import template\n\nfrom ..views import BrokenException\n\n\nregister = template.Library()\n\n@register.simple_tag\ndef go_boom(arg):\n    raise BrokenException(arg)\n\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/views/tests/__init__.py",
    "content": "from __future__ import absolute_import\n\nfrom .debug import (DebugViewTests, ExceptionReporterTests,\n    ExceptionReporterTests, PlainTextReportTests, ExceptionReporterFilterTests,\n    AjaxResponseExceptionReporterFilter)\nfrom .defaults import DefaultsTests\nfrom .i18n import JsI18NTests, I18NTests, JsI18NTestsMultiPackage, JavascriptI18nTests\nfrom .shortcuts import ShortcutTests\nfrom .specials import URLHandling\nfrom .static import StaticHelperTest, StaticUtilsTests, StaticTests\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/views/tests/debug.py",
    "content": "# -*- coding: utf-8 -*-\n# This coding header is significant for tests, as the debug view is parsing\n# files to search for such a header to decode the source file content\nfrom __future__ import absolute_import, unicode_literals\n\nimport inspect\nimport os\nimport sys\n\nfrom django.core import mail\nfrom django.core.files.uploadedfile import SimpleUploadedFile\nfrom django.core.urlresolvers import reverse\nfrom django.test import TestCase, RequestFactory\nfrom django.test.utils import (override_settings, setup_test_template_loader,\n    restore_template_loaders)\nfrom django.utils.encoding import force_text\nfrom django.views.debug import ExceptionReporter\n\nfrom .. import BrokenException, except_args\nfrom ..views import (sensitive_view, non_sensitive_view, paranoid_view,\n    custom_exception_reporter_filter_view, sensitive_method_view,\n    sensitive_args_function_caller, sensitive_kwargs_function_caller)\n\n\n@override_settings(DEBUG=True, TEMPLATE_DEBUG=True)\nclass DebugViewTests(TestCase):\n    urls = \"regressiontests.views.urls\"\n\n    def test_files(self):\n        response = self.client.get('/raises/')\n        self.assertEqual(response.status_code, 500)\n\n        data = {\n            'file_data.txt': SimpleUploadedFile('file_data.txt', b'haha'),\n        }\n        response = self.client.post('/raises/', data)\n        self.assertContains(response, 'file_data.txt', status_code=500)\n        self.assertNotContains(response, 'haha', status_code=500)\n\n    def test_403(self):\n        # Ensure no 403.html template exists to test the default case.\n        setup_test_template_loader({})\n        try:\n            response = self.client.get('/views/raises403/')\n            self.assertContains(response, '<h1>403 Forbidden</h1>', status_code=403)\n        finally:\n            restore_template_loaders()\n\n    def test_403_template(self):\n        # Set up a test 403.html template.\n        setup_test_template_loader(\n            {'403.html': 'This is a test template for a 403 Forbidden error.'}\n        )\n        try:\n            response = self.client.get('/views/raises403/')\n            self.assertContains(response, 'test template', status_code=403)\n        finally:\n            restore_template_loaders()\n\n    def test_404(self):\n        response = self.client.get('/views/raises404/')\n        self.assertEqual(response.status_code, 404)\n\n    def test_view_exceptions(self):\n        for n in range(len(except_args)):\n            self.assertRaises(BrokenException, self.client.get,\n                reverse('view_exception', args=(n,)))\n\n    def test_template_exceptions(self):\n        for n in range(len(except_args)):\n            try:\n                self.client.get(reverse('template_exception', args=(n,)))\n            except Exception:\n                raising_loc = inspect.trace()[-1][-2][0].strip()\n                self.assertFalse(raising_loc.find('raise BrokenException') == -1,\n                    \"Failed to find 'raise BrokenException' in last frame of traceback, instead found: %s\" %\n                        raising_loc)\n\n    def test_template_loader_postmortem(self):\n        response = self.client.get(reverse('raises_template_does_not_exist'))\n        template_path = os.path.join('templates', 'i_dont_exist.html')\n        self.assertContains(response, template_path, status_code=500)\n\n\nclass ExceptionReporterTests(TestCase):\n    rf = RequestFactory()\n\n    def test_request_and_exception(self):\n        \"A simple exception report can be generated\"\n        try:\n            request = self.rf.get('/test_view/')\n            raise ValueError(\"Can't find my keys\")\n        except ValueError:\n            exc_type, exc_value, tb = sys.exc_info()\n        reporter = ExceptionReporter(request, exc_type, exc_value, tb)\n        html = reporter.get_traceback_html()\n        self.assertIn('<h1>ValueError at /test_view/</h1>', html)\n        self.assertIn('<pre class=\"exception_value\">Can&#39;t find my keys</pre>', html)\n        self.assertIn('<th>Request Method:</th>', html)\n        self.assertIn('<th>Request URL:</th>', html)\n        self.assertIn('<th>Exception Type:</th>', html)\n        self.assertIn('<th>Exception Value:</th>', html)\n        self.assertIn('<h2>Traceback ', html)\n        self.assertIn('<h2>Request information</h2>', html)\n        self.assertNotIn('<p>Request data not supplied</p>', html)\n\n    def test_no_request(self):\n        \"An exception report can be generated without request\"\n        try:\n            raise ValueError(\"Can't find my keys\")\n        except ValueError:\n            exc_type, exc_value, tb = sys.exc_info()\n        reporter = ExceptionReporter(None, exc_type, exc_value, tb)\n        html = reporter.get_traceback_html()\n        self.assertIn('<h1>ValueError</h1>', html)\n        self.assertIn('<pre class=\"exception_value\">Can&#39;t find my keys</pre>', html)\n        self.assertNotIn('<th>Request Method:</th>', html)\n        self.assertNotIn('<th>Request URL:</th>', html)\n        self.assertIn('<th>Exception Type:</th>', html)\n        self.assertIn('<th>Exception Value:</th>', html)\n        self.assertIn('<h2>Traceback ', html)\n        self.assertIn('<h2>Request information</h2>', html)\n        self.assertIn('<p>Request data not supplied</p>', html)\n\n    def test_no_exception(self):\n        \"An exception report can be generated for just a request\"\n        request = self.rf.get('/test_view/')\n        reporter = ExceptionReporter(request, None, None, None)\n        html = reporter.get_traceback_html()\n        self.assertIn('<h1>Report at /test_view/</h1>', html)\n        self.assertIn('<pre class=\"exception_value\">No exception supplied</pre>', html)\n        self.assertIn('<th>Request Method:</th>', html)\n        self.assertIn('<th>Request URL:</th>', html)\n        self.assertNotIn('<th>Exception Type:</th>', html)\n        self.assertNotIn('<th>Exception Value:</th>', html)\n        self.assertNotIn('<h2>Traceback ', html)\n        self.assertIn('<h2>Request information</h2>', html)\n        self.assertNotIn('<p>Request data not supplied</p>', html)\n\n    def test_request_and_message(self):\n        \"A message can be provided in addition to a request\"\n        request = self.rf.get('/test_view/')\n        reporter = ExceptionReporter(request, None, \"I'm a little teapot\", None)\n        html = reporter.get_traceback_html()\n        self.assertIn('<h1>Report at /test_view/</h1>', html)\n        self.assertIn('<pre class=\"exception_value\">I&#39;m a little teapot</pre>', html)\n        self.assertIn('<th>Request Method:</th>', html)\n        self.assertIn('<th>Request URL:</th>', html)\n        self.assertNotIn('<th>Exception Type:</th>', html)\n        self.assertNotIn('<th>Exception Value:</th>', html)\n        self.assertNotIn('<h2>Traceback ', html)\n        self.assertIn('<h2>Request information</h2>', html)\n        self.assertNotIn('<p>Request data not supplied</p>', html)\n\n    def test_message_only(self):\n        reporter = ExceptionReporter(None, None, \"I'm a little teapot\", None)\n        html = reporter.get_traceback_html()\n        self.assertIn('<h1>Report</h1>', html)\n        self.assertIn('<pre class=\"exception_value\">I&#39;m a little teapot</pre>', html)\n        self.assertNotIn('<th>Request Method:</th>', html)\n        self.assertNotIn('<th>Request URL:</th>', html)\n        self.assertNotIn('<th>Exception Type:</th>', html)\n        self.assertNotIn('<th>Exception Value:</th>', html)\n        self.assertNotIn('<h2>Traceback ', html)\n        self.assertIn('<h2>Request information</h2>', html)\n        self.assertIn('<p>Request data not supplied</p>', html)\n\n\nclass PlainTextReportTests(TestCase):\n    rf = RequestFactory()\n\n    def test_request_and_exception(self):\n        \"A simple exception report can be generated\"\n        try:\n            request = self.rf.get('/test_view/')\n            raise ValueError(\"Can't find my keys\")\n        except ValueError:\n            exc_type, exc_value, tb = sys.exc_info()\n        reporter = ExceptionReporter(request, exc_type, exc_value, tb)\n        text = reporter.get_traceback_text()\n        self.assertIn('ValueError at /test_view/', text)\n        self.assertIn(\"Can't find my keys\", text)\n        self.assertIn('Request Method:', text)\n        self.assertIn('Request URL:', text)\n        self.assertIn('Exception Type:', text)\n        self.assertIn('Exception Value:', text)\n        self.assertIn('Traceback:', text)\n        self.assertIn('Request information:', text)\n        self.assertNotIn('Request data not supplied', text)\n\n    def test_no_request(self):\n        \"An exception report can be generated without request\"\n        try:\n            raise ValueError(\"Can't find my keys\")\n        except ValueError:\n            exc_type, exc_value, tb = sys.exc_info()\n        reporter = ExceptionReporter(None, exc_type, exc_value, tb)\n        text = reporter.get_traceback_text()\n        self.assertIn('ValueError', text)\n        self.assertIn(\"Can't find my keys\", text)\n        self.assertNotIn('Request Method:', text)\n        self.assertNotIn('Request URL:', text)\n        self.assertIn('Exception Type:', text)\n        self.assertIn('Exception Value:', text)\n        self.assertIn('Traceback:', text)\n        self.assertIn('Request data not supplied', text)\n\n    def test_no_exception(self):\n        \"An exception report can be generated for just a request\"\n        request = self.rf.get('/test_view/')\n        reporter = ExceptionReporter(request, None, None, None)\n        text = reporter.get_traceback_text()\n\n    def test_request_and_message(self):\n        \"A message can be provided in addition to a request\"\n        request = self.rf.get('/test_view/')\n        reporter = ExceptionReporter(request, None, \"I'm a little teapot\", None)\n        text = reporter.get_traceback_text()\n\n    def test_message_only(self):\n        reporter = ExceptionReporter(None, None, \"I'm a little teapot\", None)\n        text = reporter.get_traceback_text()\n\n\nclass ExceptionReportTestMixin(object):\n\n    # Mixin used in the ExceptionReporterFilterTests and\n    # AjaxResponseExceptionReporterFilter tests below\n\n    breakfast_data = {'sausage-key': 'sausage-value',\n                      'baked-beans-key': 'baked-beans-value',\n                      'hash-brown-key': 'hash-brown-value',\n                      'bacon-key': 'bacon-value',}\n\n    def verify_unsafe_response(self, view, check_for_vars=True,\n                               check_for_POST_params=True):\n        \"\"\"\n        Asserts that potentially sensitive info are displayed in the response.\n        \"\"\"\n        request = self.rf.post('/some_url/', self.breakfast_data)\n        response = view(request)\n        if check_for_vars:\n            # All variables are shown.\n            self.assertContains(response, 'cooked_eggs', status_code=500)\n            self.assertContains(response, 'scrambled', status_code=500)\n            self.assertContains(response, 'sauce', status_code=500)\n            self.assertContains(response, 'worcestershire', status_code=500)\n        if check_for_POST_params:\n            for k, v in self.breakfast_data.items():\n                # All POST parameters are shown.\n                self.assertContains(response, k, status_code=500)\n                self.assertContains(response, v, status_code=500)\n\n    def verify_safe_response(self, view, check_for_vars=True,\n                             check_for_POST_params=True):\n        \"\"\"\n        Asserts that certain sensitive info are not displayed in the response.\n        \"\"\"\n        request = self.rf.post('/some_url/', self.breakfast_data)\n        response = view(request)\n        if check_for_vars:\n            # Non-sensitive variable's name and value are shown.\n            self.assertContains(response, 'cooked_eggs', status_code=500)\n            self.assertContains(response, 'scrambled', status_code=500)\n            # Sensitive variable's name is shown but not its value.\n            self.assertContains(response, 'sauce', status_code=500)\n            self.assertNotContains(response, 'worcestershire', status_code=500)\n        if check_for_POST_params:\n            for k, v in self.breakfast_data.items():\n                # All POST parameters' names are shown.\n                self.assertContains(response, k, status_code=500)\n            # Non-sensitive POST parameters' values are shown.\n            self.assertContains(response, 'baked-beans-value', status_code=500)\n            self.assertContains(response, 'hash-brown-value', status_code=500)\n            # Sensitive POST parameters' values are not shown.\n            self.assertNotContains(response, 'sausage-value', status_code=500)\n            self.assertNotContains(response, 'bacon-value', status_code=500)\n\n    def verify_paranoid_response(self, view, check_for_vars=True,\n                                 check_for_POST_params=True):\n        \"\"\"\n        Asserts that no variables or POST parameters are displayed in the response.\n        \"\"\"\n        request = self.rf.post('/some_url/', self.breakfast_data)\n        response = view(request)\n        if check_for_vars:\n            # Show variable names but not their values.\n            self.assertContains(response, 'cooked_eggs', status_code=500)\n            self.assertNotContains(response, 'scrambled', status_code=500)\n            self.assertContains(response, 'sauce', status_code=500)\n            self.assertNotContains(response, 'worcestershire', status_code=500)\n        if check_for_POST_params:\n            for k, v in self.breakfast_data.items():\n                # All POST parameters' names are shown.\n                self.assertContains(response, k, status_code=500)\n                # No POST parameters' values are shown.\n                self.assertNotContains(response, v, status_code=500)\n\n    def verify_unsafe_email(self, view, check_for_POST_params=True):\n        \"\"\"\n        Asserts that potentially sensitive info are displayed in the email report.\n        \"\"\"\n        with self.settings(ADMINS=(('Admin', 'admin@fattie-breakie.com'),)):\n            mail.outbox = [] # Empty outbox\n            request = self.rf.post('/some_url/', self.breakfast_data)\n            response = view(request)\n            self.assertEqual(len(mail.outbox), 1)\n            email = mail.outbox[0]\n\n            # Frames vars are never shown in plain text email reports.\n            body_plain = force_text(email.body)\n            self.assertNotIn('cooked_eggs', body_plain)\n            self.assertNotIn('scrambled', body_plain)\n            self.assertNotIn('sauce', body_plain)\n            self.assertNotIn('worcestershire', body_plain)\n\n            # Frames vars are shown in html email reports.\n            body_html = force_text(email.alternatives[0][0])\n            self.assertIn('cooked_eggs', body_html)\n            self.assertIn('scrambled', body_html)\n            self.assertIn('sauce', body_html)\n            self.assertIn('worcestershire', body_html)\n\n            if check_for_POST_params:\n                for k, v in self.breakfast_data.items():\n                    # All POST parameters are shown.\n                    self.assertIn(k, body_plain)\n                    self.assertIn(v, body_plain)\n                    self.assertIn(k, body_html)\n                    self.assertIn(v, body_html)\n\n    def verify_safe_email(self, view, check_for_POST_params=True):\n        \"\"\"\n        Asserts that certain sensitive info are not displayed in the email report.\n        \"\"\"\n        with self.settings(ADMINS=(('Admin', 'admin@fattie-breakie.com'),)):\n            mail.outbox = [] # Empty outbox\n            request = self.rf.post('/some_url/', self.breakfast_data)\n            response = view(request)\n            self.assertEqual(len(mail.outbox), 1)\n            email = mail.outbox[0]\n\n            # Frames vars are never shown in plain text email reports.\n            body_plain = force_text(email.body)\n            self.assertNotIn('cooked_eggs', body_plain)\n            self.assertNotIn('scrambled', body_plain)\n            self.assertNotIn('sauce', body_plain)\n            self.assertNotIn('worcestershire', body_plain)\n\n            # Frames vars are shown in html email reports.\n            body_html = force_text(email.alternatives[0][0])\n            self.assertIn('cooked_eggs', body_html)\n            self.assertIn('scrambled', body_html)\n            self.assertIn('sauce', body_html)\n            self.assertNotIn('worcestershire', body_html)\n\n            if check_for_POST_params:\n                for k, v in self.breakfast_data.items():\n                    # All POST parameters' names are shown.\n                    self.assertIn(k, body_plain)\n                # Non-sensitive POST parameters' values are shown.\n                self.assertIn('baked-beans-value', body_plain)\n                self.assertIn('hash-brown-value', body_plain)\n                self.assertIn('baked-beans-value', body_html)\n                self.assertIn('hash-brown-value', body_html)\n                # Sensitive POST parameters' values are not shown.\n                self.assertNotIn('sausage-value', body_plain)\n                self.assertNotIn('bacon-value', body_plain)\n                self.assertNotIn('sausage-value', body_html)\n                self.assertNotIn('bacon-value', body_html)\n\n    def verify_paranoid_email(self, view):\n        \"\"\"\n        Asserts that no variables or POST parameters are displayed in the email report.\n        \"\"\"\n        with self.settings(ADMINS=(('Admin', 'admin@fattie-breakie.com'),)):\n            mail.outbox = [] # Empty outbox\n            request = self.rf.post('/some_url/', self.breakfast_data)\n            response = view(request)\n            self.assertEqual(len(mail.outbox), 1)\n            email = mail.outbox[0]\n            # Frames vars are never shown in plain text email reports.\n            body = force_text(email.body)\n            self.assertNotIn('cooked_eggs', body)\n            self.assertNotIn('scrambled', body)\n            self.assertNotIn('sauce', body)\n            self.assertNotIn('worcestershire', body)\n            for k, v in self.breakfast_data.items():\n                # All POST parameters' names are shown.\n                self.assertIn(k, body)\n                # No POST parameters' values are shown.\n                self.assertNotIn(v, body)\n\n\nclass ExceptionReporterFilterTests(TestCase, ExceptionReportTestMixin):\n    \"\"\"\n    Ensure that sensitive information can be filtered out of error reports.\n    Refs #14614.\n    \"\"\"\n    rf = RequestFactory()\n\n    def test_non_sensitive_request(self):\n        \"\"\"\n        Ensure that everything (request info and frame variables) can bee seen\n        in the default error reports for non-sensitive requests.\n        \"\"\"\n        with self.settings(DEBUG=True):\n            self.verify_unsafe_response(non_sensitive_view)\n            self.verify_unsafe_email(non_sensitive_view)\n\n        with self.settings(DEBUG=False):\n            self.verify_unsafe_response(non_sensitive_view)\n            self.verify_unsafe_email(non_sensitive_view)\n\n    def test_sensitive_request(self):\n        \"\"\"\n        Ensure that sensitive POST parameters and frame variables cannot be\n        seen in the default error reports for sensitive requests.\n        \"\"\"\n        with self.settings(DEBUG=True):\n            self.verify_unsafe_response(sensitive_view)\n            self.verify_unsafe_email(sensitive_view)\n\n        with self.settings(DEBUG=False):\n            self.verify_safe_response(sensitive_view)\n            self.verify_safe_email(sensitive_view)\n\n    def test_paranoid_request(self):\n        \"\"\"\n        Ensure that no POST parameters and frame variables can be seen in the\n        default error reports for \"paranoid\" requests.\n        \"\"\"\n        with self.settings(DEBUG=True):\n            self.verify_unsafe_response(paranoid_view)\n            self.verify_unsafe_email(paranoid_view)\n\n        with self.settings(DEBUG=False):\n            self.verify_paranoid_response(paranoid_view)\n            self.verify_paranoid_email(paranoid_view)\n\n    def test_custom_exception_reporter_filter(self):\n        \"\"\"\n        Ensure that it's possible to assign an exception reporter filter to\n        the request to bypass the one set in DEFAULT_EXCEPTION_REPORTER_FILTER.\n        \"\"\"\n        with self.settings(DEBUG=True):\n            self.verify_unsafe_response(custom_exception_reporter_filter_view)\n            self.verify_unsafe_email(custom_exception_reporter_filter_view)\n\n        with self.settings(DEBUG=False):\n            self.verify_unsafe_response(custom_exception_reporter_filter_view)\n            self.verify_unsafe_email(custom_exception_reporter_filter_view)\n\n    def test_sensitive_method(self):\n        \"\"\"\n        Ensure that the sensitive_variables decorator works with object\n        methods.\n        Refs #18379.\n        \"\"\"\n        with self.settings(DEBUG=True):\n            self.verify_unsafe_response(sensitive_method_view,\n                                        check_for_POST_params=False)\n            self.verify_unsafe_email(sensitive_method_view,\n                                     check_for_POST_params=False)\n\n        with self.settings(DEBUG=False):\n            self.verify_safe_response(sensitive_method_view,\n                                      check_for_POST_params=False)\n            self.verify_safe_email(sensitive_method_view,\n                                   check_for_POST_params=False)\n\n    def test_sensitive_function_arguments(self):\n        \"\"\"\n        Ensure that sensitive variables don't leak in the sensitive_variables\n        decorator's frame, when those variables are passed as arguments to the\n        decorated function.\n        Refs #19453.\n        \"\"\"\n        with self.settings(DEBUG=True):\n            self.verify_unsafe_response(sensitive_args_function_caller)\n            self.verify_unsafe_email(sensitive_args_function_caller)\n\n        with self.settings(DEBUG=False):\n            self.verify_safe_response(sensitive_args_function_caller, check_for_POST_params=False)\n            self.verify_safe_email(sensitive_args_function_caller, check_for_POST_params=False)\n\n    def test_sensitive_function_keyword_arguments(self):\n        \"\"\"\n        Ensure that sensitive variables don't leak in the sensitive_variables\n        decorator's frame, when those variables are passed as keyword arguments\n        to the decorated function.\n        Refs #19453.\n        \"\"\"\n        with self.settings(DEBUG=True):\n            self.verify_unsafe_response(sensitive_kwargs_function_caller)\n            self.verify_unsafe_email(sensitive_kwargs_function_caller)\n\n        with self.settings(DEBUG=False):\n            self.verify_safe_response(sensitive_kwargs_function_caller, check_for_POST_params=False)\n            self.verify_safe_email(sensitive_kwargs_function_caller, check_for_POST_params=False)\n\n\nclass AjaxResponseExceptionReporterFilter(TestCase, ExceptionReportTestMixin):\n    \"\"\"\n    Ensure that sensitive information can be filtered out of error reports.\n\n    Here we specifically test the plain text 500 debug-only error page served\n    when it has been detected the request was sent by JS code. We don't check\n    for (non)existence of frames vars in the traceback information section of\n    the response content because we don't include them in these error pages.\n    Refs #14614.\n    \"\"\"\n    rf = RequestFactory(HTTP_X_REQUESTED_WITH='XMLHttpRequest')\n\n    def test_non_sensitive_request(self):\n        \"\"\"\n        Ensure that request info can bee seen in the default error reports for\n        non-sensitive requests.\n        \"\"\"\n        with self.settings(DEBUG=True):\n            self.verify_unsafe_response(non_sensitive_view, check_for_vars=False)\n\n        with self.settings(DEBUG=False):\n            self.verify_unsafe_response(non_sensitive_view, check_for_vars=False)\n\n    def test_sensitive_request(self):\n        \"\"\"\n        Ensure that sensitive POST parameters cannot be seen in the default\n        error reports for sensitive requests.\n        \"\"\"\n        with self.settings(DEBUG=True):\n            self.verify_unsafe_response(sensitive_view, check_for_vars=False)\n\n        with self.settings(DEBUG=False):\n            self.verify_safe_response(sensitive_view, check_for_vars=False)\n\n    def test_paranoid_request(self):\n        \"\"\"\n        Ensure that no POST parameters can be seen in the default error reports\n        for \"paranoid\" requests.\n        \"\"\"\n        with self.settings(DEBUG=True):\n            self.verify_unsafe_response(paranoid_view, check_for_vars=False)\n\n        with self.settings(DEBUG=False):\n            self.verify_paranoid_response(paranoid_view, check_for_vars=False)\n\n    def test_custom_exception_reporter_filter(self):\n        \"\"\"\n        Ensure that it's possible to assign an exception reporter filter to\n        the request to bypass the one set in DEFAULT_EXCEPTION_REPORTER_FILTER.\n        \"\"\"\n        with self.settings(DEBUG=True):\n            self.verify_unsafe_response(custom_exception_reporter_filter_view,\n                check_for_vars=False)\n\n        with self.settings(DEBUG=False):\n            self.verify_unsafe_response(custom_exception_reporter_filter_view,\n                check_for_vars=False)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/views/tests/defaults.py",
    "content": "from __future__ import absolute_import, unicode_literals\n\nfrom django.contrib.contenttypes.models import ContentType\nfrom django.test import TestCase\nfrom django.test.utils import setup_test_template_loader, restore_template_loaders\n\nfrom ..models import Author, Article, UrlArticle\n\n\nclass DefaultsTests(TestCase):\n    \"\"\"Test django views in django/views/defaults.py\"\"\"\n    fixtures = ['testdata.json']\n    non_existing_urls = ['/views/non_existing_url/', # this is in urls.py\n                         '/views/other_non_existing_url/'] # this NOT in urls.py\n\n    def test_shortcut_with_absolute_url(self):\n        \"Can view a shortcut for an Author object that has a get_absolute_url method\"\n        for obj in Author.objects.all():\n            short_url = '/views/shortcut/%s/%s/' % (ContentType.objects.get_for_model(Author).id, obj.pk)\n            response = self.client.get(short_url)\n            self.assertRedirects(response, 'http://testserver%s' % obj.get_absolute_url(),\n                                 status_code=302, target_status_code=404)\n\n    def test_shortcut_no_absolute_url(self):\n        \"Shortcuts for an object that has no get_absolute_url method raises 404\"\n        for obj in Article.objects.all():\n            short_url = '/views/shortcut/%s/%s/' % (ContentType.objects.get_for_model(Article).id, obj.pk)\n            response = self.client.get(short_url)\n            self.assertEqual(response.status_code, 404)\n\n    def test_wrong_type_pk(self):\n        short_url = '/views/shortcut/%s/%s/' % (ContentType.objects.get_for_model(Author).id, 'nobody/expects')\n        response = self.client.get(short_url)\n        self.assertEqual(response.status_code, 404)\n\n    def test_shortcut_bad_pk(self):\n        short_url = '/views/shortcut/%s/%s/' % (ContentType.objects.get_for_model(Author).id, '42424242')\n        response = self.client.get(short_url)\n        self.assertEqual(response.status_code, 404)\n\n    def test_nonint_content_type(self):\n        an_author = Author.objects.all()[0]\n        short_url = '/views/shortcut/%s/%s/' % ('spam', an_author.pk)\n        response = self.client.get(short_url)\n        self.assertEqual(response.status_code, 404)\n\n    def test_bad_content_type(self):\n        an_author = Author.objects.all()[0]\n        short_url = '/views/shortcut/%s/%s/' % (42424242, an_author.pk)\n        response = self.client.get(short_url)\n        self.assertEqual(response.status_code, 404)\n\n    def test_page_not_found(self):\n        \"A 404 status is returned by the page_not_found view\"\n        for url in self.non_existing_urls:\n            response = self.client.get(url)\n            self.assertEqual(response.status_code, 404)\n\n    def test_csrf_token_in_404(self):\n        \"\"\"\n        The 404 page should have the csrf_token available in the context\n        \"\"\"\n        # See ticket #14565\n        for url in self.non_existing_urls:\n            response = self.client.get(url)\n            csrf_token = response.context['csrf_token']\n            self.assertNotEqual(str(csrf_token), 'NOTPROVIDED')\n            self.assertNotEqual(str(csrf_token), '')\n\n    def test_server_error(self):\n        \"The server_error view raises a 500 status\"\n        response = self.client.get('/views/server_error/')\n        self.assertEqual(response.status_code, 500)\n\n    def test_custom_templates(self):\n        \"\"\"\n        Test that 404.html and 500.html templates are picked by their respective\n        handler.\n        \"\"\"\n        setup_test_template_loader(\n            {'404.html': 'This is a test template for a 404 error.',\n             '500.html': 'This is a test template for a 500 error.'}\n        )\n        try:\n            for code, url in ((404, '/views/non_existing_url/'), (500, '/views/server_error/')):\n                response = self.client.get(url)\n                self.assertContains(response, \"test template for a %d error\" % code,\n                    status_code=code)\n        finally:\n            restore_template_loaders()\n\n    def test_get_absolute_url_attributes(self):\n        \"A model can set attributes on the get_absolute_url method\"\n        self.assertTrue(getattr(UrlArticle.get_absolute_url, 'purge', False),\n                        'The attributes of the original get_absolute_url must be added.')\n        article = UrlArticle.objects.get(pk=1)\n        self.assertTrue(getattr(article.get_absolute_url, 'purge', False),\n                        'The attributes of the original get_absolute_url must be added.')\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/views/tests/i18n.py",
    "content": "# -*- coding:utf-8 -*-\nfrom __future__ import absolute_import\n\nimport gettext\nfrom os import path\n\nfrom django.conf import settings\nfrom django.core.urlresolvers import reverse\nfrom django.test import LiveServerTestCase, TestCase\nfrom django.test.utils import override_settings\nfrom django.utils import six, unittest\nfrom django.utils._os import upath\nfrom django.utils.translation import override\nfrom django.utils.text import javascript_quote\n\ntry:\n    from selenium.webdriver.firefox import webdriver as firefox\nexcept ImportError:\n    firefox = None\n\nfrom ..urls import locale_dir\n\n\nclass I18NTests(TestCase):\n    \"\"\" Tests django views in django/views/i18n.py \"\"\"\n\n    def test_setlang(self):\n        \"\"\"\n        The set_language view can be used to change the session language.\n\n        The user is redirected to the 'next' argument if provided.\n        \"\"\"\n        for lang_code, lang_name in settings.LANGUAGES:\n            post_data = dict(language=lang_code, next='/views/')\n            response = self.client.post('/views/i18n/setlang/', data=post_data)\n            self.assertRedirects(response, 'http://testserver/views/')\n            self.assertEqual(self.client.session['django_language'], lang_code)\n\n    def test_setlang_unsafe_next(self):\n        \"\"\"\n        The set_language view only redirects to the 'next' argument if it is\n        \"safe\".\n        \"\"\"\n        lang_code, lang_name = settings.LANGUAGES[0]\n        post_data = dict(language=lang_code, next='//unsafe/redirection/')\n        response = self.client.post('/views/i18n/setlang/', data=post_data)\n        self.assertEqual(response['Location'], 'http://testserver/')\n        self.assertEqual(self.client.session['django_language'], lang_code)\n\n    def test_setlang_reversal(self):\n        self.assertEqual(reverse('set_language'), '/views/i18n/setlang/')\n\n    def test_jsi18n(self):\n        \"\"\"The javascript_catalog can be deployed with language settings\"\"\"\n        for lang_code in ['es', 'fr', 'ru']:\n            with override(lang_code):\n                catalog = gettext.translation('djangojs', locale_dir, [lang_code])\n                if six.PY3:\n                    trans_txt = catalog.gettext('this is to be translated')\n                else:\n                    trans_txt = catalog.ugettext('this is to be translated')\n                response = self.client.get('/views/jsi18n/')\n                # in response content must to be a line like that:\n                # catalog['this is to be translated'] = 'same_that_trans_txt'\n                # javascript_quote is used to be able to check unicode strings\n                self.assertContains(response, javascript_quote(trans_txt), 1)\n                if lang_code == 'fr':\n                    # Message with context (msgctxt)\n                    self.assertContains(response, \"['month name\\x04May'] = 'mai';\", 1)\n\n\nclass JsI18NTests(TestCase):\n    \"\"\"\n    Tests django views in django/views/i18n.py that need to change\n    settings.LANGUAGE_CODE.\n    \"\"\"\n\n    def test_jsi18n_with_missing_en_files(self):\n        \"\"\"\n        The javascript_catalog shouldn't load the fallback language in the\n        case that the current selected language is actually the one translated\n        from, and hence missing translation files completely.\n\n        This happens easily when you're translating from English to other\n        languages and you've set settings.LANGUAGE_CODE to some other language\n        than English.\n        \"\"\"\n        with self.settings(LANGUAGE_CODE='es'):\n            with override('en-us'):\n                response = self.client.get('/views/jsi18n/')\n                self.assertNotContains(response, 'esto tiene que ser traducido')\n\n    def test_jsi18n_fallback_language(self):\n        \"\"\"\n        Let's make sure that the fallback language is still working properly\n        in cases where the selected language cannot be found.\n        \"\"\"\n        with self.settings(LANGUAGE_CODE='fr'):\n            with override('fi'):\n                response = self.client.get('/views/jsi18n/')\n                self.assertContains(response, 'il faut le traduire')\n\n    def testI18NLanguageNonEnglishDefault(self):\n        \"\"\"\n        Check if the Javascript i18n view returns an empty language catalog\n        if the default language is non-English, the selected language\n        is English and there is not 'en' translation available. See #13388,\n        #3594 and #13726 for more details.\n        \"\"\"\n        with self.settings(LANGUAGE_CODE='fr'):\n            with override('en-us'):\n                response = self.client.get('/views/jsi18n/')\n                self.assertNotContains(response, 'Choisir une heure')\n\n    def test_nonenglish_default_english_userpref(self):\n        \"\"\"\n        Same as above with the difference that there IS an 'en' translation\n        available. The Javascript i18n view must return a NON empty language catalog\n        with the proper English translations. See #13726 for more details.\n        \"\"\"\n        extended_apps = list(settings.INSTALLED_APPS) + ['regressiontests.views.app0']\n        with self.settings(LANGUAGE_CODE='fr', INSTALLED_APPS=extended_apps):\n            with override('en-us'):\n                response = self.client.get('/views/jsi18n_english_translation/')\n                self.assertContains(response, javascript_quote('this app0 string is to be translated'))\n\n    def testI18NLanguageNonEnglishFallback(self):\n        \"\"\"\n        Makes sure that the fallback language is still working properly\n        in cases where the selected language cannot be found.\n        \"\"\"\n        with self.settings(LANGUAGE_CODE='fr'):\n            with override('none'):\n                response = self.client.get('/views/jsi18n/')\n                self.assertContains(response, 'Choisir une heure')\n\n\nclass JsI18NTestsMultiPackage(TestCase):\n    \"\"\"\n    Tests for django views in django/views/i18n.py that need to change\n    settings.LANGUAGE_CODE and merge JS translation from several packages.\n    \"\"\"\n    def testI18NLanguageEnglishDefault(self):\n        \"\"\"\n        Check if the JavaScript i18n view returns a complete language catalog\n        if the default language is en-us, the selected language has a\n        translation available and a catalog composed by djangojs domain\n        translations of multiple Python packages is requested. See #13388,\n        #3594 and #13514 for more details.\n        \"\"\"\n        extended_apps = list(settings.INSTALLED_APPS) + ['regressiontests.views.app1', 'regressiontests.views.app2']\n        with self.settings(LANGUAGE_CODE='en-us', INSTALLED_APPS=extended_apps):\n            with override('fr'):\n                response = self.client.get('/views/jsi18n_multi_packages1/')\n                self.assertContains(response, javascript_quote('il faut traduire cette chaîne de caractères de app1'))\n\n    def testI18NDifferentNonEnLangs(self):\n        \"\"\"\n        Similar to above but with neither default or requested language being\n        English.\n        \"\"\"\n        extended_apps = list(settings.INSTALLED_APPS) + ['regressiontests.views.app3', 'regressiontests.views.app4']\n        with self.settings(LANGUAGE_CODE='fr', INSTALLED_APPS=extended_apps):\n            with override('es-ar'):\n                response = self.client.get('/views/jsi18n_multi_packages2/')\n                self.assertContains(response, javascript_quote('este texto de app3 debe ser traducido'))\n\n    def testI18NWithLocalePaths(self):\n        extended_locale_paths = settings.LOCALE_PATHS + (\n            path.join(path.dirname(\n                path.dirname(path.abspath(upath(__file__)))), 'app3', 'locale'),)\n        with self.settings(LANGUAGE_CODE='es-ar', LOCALE_PATHS=extended_locale_paths):\n            with override('es-ar'):\n                response = self.client.get('/views/jsi18n/')\n                self.assertContains(response,\n                    javascript_quote('este texto de app3 debe ser traducido'))\n\n\n@unittest.skipUnless(firefox, 'Selenium not installed')\nclass JavascriptI18nTests(LiveServerTestCase):\n    urls = 'regressiontests.views.urls'\n\n    @classmethod\n    def setUpClass(cls):\n        cls.selenium = firefox.WebDriver()\n        super(JavascriptI18nTests, cls).setUpClass()\n\n    @classmethod\n    def tearDownClass(cls):\n        cls.selenium.quit()\n        super(JavascriptI18nTests, cls).tearDownClass()\n\n    @override_settings(LANGUAGE_CODE='de')\n    def test_javascript_gettext(self):\n        extended_apps = list(settings.INSTALLED_APPS) + ['regressiontests.views']\n        with self.settings(INSTALLED_APPS=extended_apps):\n            self.selenium.get('%s%s' % (self.live_server_url, '/jsi18n_template/'))\n\n            elem = self.selenium.find_element_by_id(\"gettext\")\n            self.assertEqual(elem.text, \"Entfernen\")\n            elem = self.selenium.find_element_by_id(\"ngettext_sing\")\n            self.assertEqual(elem.text, \"1 Element\")\n            elem = self.selenium.find_element_by_id(\"ngettext_plur\")\n            self.assertEqual(elem.text, \"455 Elemente\")\n            elem = self.selenium.find_element_by_id(\"pgettext\")\n            self.assertEqual(elem.text, \"Kann\")\n            elem = self.selenium.find_element_by_id(\"npgettext_sing\")\n            self.assertEqual(elem.text, \"1 Resultat\")\n            elem = self.selenium.find_element_by_id(\"npgettext_plur\")\n            self.assertEqual(elem.text, \"455 Resultate\")\n\n    def test_escaping(self):\n        extended_apps = list(settings.INSTALLED_APPS) + ['regressiontests.views']\n        with self.settings(INSTALLED_APPS=extended_apps):\n            response = self.client.get('%s%s' % (self.live_server_url, '/jsi18n_admin/'))\n            self.assertContains(response, '\\\\x04')\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/views/tests/shortcuts.py",
    "content": "from django.conf import settings\nfrom django.test import TestCase\nfrom django.test.utils import override_settings\n\n@override_settings(\n    TEMPLATE_CONTEXT_PROCESSORS=('django.core.context_processors.static',),\n    STATIC_URL='/path/to/static/media/',\n)\nclass ShortcutTests(TestCase):\n    urls = 'regressiontests.views.generic_urls'\n\n    def test_render_to_response(self):\n        response = self.client.get('/shortcuts/render_to_response/')\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.content, b'FOO.BAR..\\n')\n        self.assertEqual(response['Content-Type'], 'text/html; charset=utf-8')\n\n    def test_render_to_response_with_request_context(self):\n        response = self.client.get('/shortcuts/render_to_response/request_context/')\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.content, b'FOO.BAR../path/to/static/media/\\n')\n        self.assertEqual(response['Content-Type'], 'text/html; charset=utf-8')\n\n    def test_render_to_response_with_content_type(self):\n        response = self.client.get('/shortcuts/render_to_response/content_type/')\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.content, b'FOO.BAR..\\n')\n        self.assertEqual(response['Content-Type'], 'application/x-rendertest')\n\n    def test_render(self):\n        response = self.client.get('/shortcuts/render/')\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.content, b'FOO.BAR../path/to/static/media/\\n')\n        self.assertEqual(response['Content-Type'], 'text/html; charset=utf-8')\n        self.assertEqual(response.context.current_app, None)\n\n    def test_render_with_base_context(self):\n        response = self.client.get('/shortcuts/render/base_context/')\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.content, b'FOO.BAR..\\n')\n        self.assertEqual(response['Content-Type'], 'text/html; charset=utf-8')\n\n    def test_render_with_content_type(self):\n        response = self.client.get('/shortcuts/render/content_type/')\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.content, b'FOO.BAR../path/to/static/media/\\n')\n        self.assertEqual(response['Content-Type'], 'application/x-rendertest')\n\n    def test_render_with_status(self):\n        response = self.client.get('/shortcuts/render/status/')\n        self.assertEqual(response.status_code, 403)\n        self.assertEqual(response.content, b'FOO.BAR../path/to/static/media/\\n')\n\n    def test_render_with_current_app(self):\n        response = self.client.get('/shortcuts/render/current_app/')\n        self.assertEqual(response.context.current_app, \"foobar_app\")\n\n    def test_render_with_current_app_conflict(self):\n        self.assertRaises(ValueError, self.client.get, '/shortcuts/render/current_app_conflict/')\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/views/tests/specials.py",
    "content": "# coding: utf-8\nfrom __future__ import unicode_literals\n\nfrom django.test import TestCase\n\n\nclass URLHandling(TestCase):\n    \"\"\"\n    Tests for URL handling in views and responses.\n    \"\"\"\n    urls = 'regressiontests.views.generic_urls'\n    redirect_target = \"/%E4%B8%AD%E6%96%87/target/\"\n\n    def test_combining_redirect(self):\n        \"\"\"\n        Tests that redirecting to an IRI, requiring encoding before we use it\n        in an HTTP response, is handled correctly. In this case the arg to\n        HttpRedirect is ASCII but the current request path contains non-ASCII\n        characters so this test ensures the creation of the full path with a\n        base non-ASCII part is handled correctly.\n        \"\"\"\n        response = self.client.get('/中文/')\n        self.assertRedirects(response, self.redirect_target)\n\n    def test_nonascii_redirect(self):\n        \"\"\"\n        Tests that a non-ASCII argument to HttpRedirect is handled properly.\n        \"\"\"\n        response = self.client.get('/nonascii_redirect/')\n        self.assertRedirects(response, self.redirect_target)\n\n    def test_permanent_nonascii_redirect(self):\n        \"\"\"\n        Tests that a non-ASCII argument to HttpPermanentRedirect is handled\n        properly.\n        \"\"\"\n        response = self.client.get('/permanent_nonascii_redirect/')\n        self.assertRedirects(response, self.redirect_target, status_code=301)\n\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/views/tests/static.py",
    "content": "from __future__ import absolute_import\n\nimport mimetypes\nfrom os import path\nimport unittest\n\nfrom django.conf.urls.static import static\nfrom django.http import HttpResponseNotModified\nfrom django.test import TestCase\nfrom django.test.utils import override_settings\nfrom django.utils.http import http_date\nfrom django.views.static import was_modified_since\n\nfrom .. import urls\nfrom ..urls import media_dir\n\n\n@override_settings(DEBUG=True)\nclass StaticTests(TestCase):\n    \"\"\"Tests django views in django/views/static.py\"\"\"\n\n    prefix = 'site_media'\n\n    def test_serve(self):\n        \"The static view can serve static media\"\n        media_files = ['file.txt', 'file.txt.gz']\n        for filename in media_files:\n            response = self.client.get('/views/%s/%s' % (self.prefix, filename))\n            response_content = b''.join(response)\n            response.close()\n            file_path = path.join(media_dir, filename)\n            with open(file_path, 'rb') as fp:\n                self.assertEqual(fp.read(), response_content)\n            self.assertEqual(len(response_content), int(response['Content-Length']))\n            self.assertEqual(mimetypes.guess_type(file_path)[1], response.get('Content-Encoding', None))\n\n    def test_unknown_mime_type(self):\n        response = self.client.get('/views/%s/file.unknown' % self.prefix)\n        response.close()\n        self.assertEqual('application/octet-stream', response['Content-Type'])\n\n    def test_copes_with_empty_path_component(self):\n        file_name = 'file.txt'\n        response = self.client.get('/views/%s//%s' % (self.prefix, file_name))\n        response_content = b''.join(response)\n        response.close()\n        with open(path.join(media_dir, file_name), 'rb') as fp:\n            self.assertEqual(fp.read(), response_content)\n\n    def test_is_modified_since(self):\n        file_name = 'file.txt'\n        response = self.client.get('/views/%s/%s' % (self.prefix, file_name),\n            HTTP_IF_MODIFIED_SINCE='Thu, 1 Jan 1970 00:00:00 GMT')\n        response_content = b''.join(response)\n        response.close()\n        with open(path.join(media_dir, file_name), 'rb') as fp:\n            self.assertEqual(fp.read(), response_content)\n\n    def test_not_modified_since(self):\n        file_name = 'file.txt'\n        response = self.client.get(\n            '/views/%s/%s' % (self.prefix, file_name),\n            HTTP_IF_MODIFIED_SINCE='Mon, 18 Jan 2038 05:14:07 GMT'\n            # This is 24h before max Unix time. Remember to fix Django and\n            # update this test well before 2038 :)\n            )\n        self.assertTrue(isinstance(response, HttpResponseNotModified))\n\n    def test_invalid_if_modified_since(self):\n        \"\"\"Handle bogus If-Modified-Since values gracefully\n\n        Assume that a file is modified since an invalid timestamp as per RFC\n        2616, section 14.25.\n        \"\"\"\n        file_name = 'file.txt'\n        invalid_date = 'Mon, 28 May 999999999999 28:25:26 GMT'\n        response = self.client.get('/views/%s/%s' % (self.prefix, file_name),\n                                   HTTP_IF_MODIFIED_SINCE=invalid_date)\n        response_content = b''.join(response)\n        response.close()\n        with open(path.join(media_dir, file_name), 'rb') as fp:\n            self.assertEqual(fp.read(), response_content)\n        self.assertEqual(len(response_content),\n                          int(response['Content-Length']))\n\n    def test_invalid_if_modified_since2(self):\n        \"\"\"Handle even more bogus If-Modified-Since values gracefully\n\n        Assume that a file is modified since an invalid timestamp as per RFC\n        2616, section 14.25.\n        \"\"\"\n        file_name = 'file.txt'\n        invalid_date = ': 1291108438, Wed, 20 Oct 2010 14:05:00 GMT'\n        response = self.client.get('/views/%s/%s' % (self.prefix, file_name),\n                                   HTTP_IF_MODIFIED_SINCE=invalid_date)\n        response_content = b''.join(response)\n        response.close()\n        with open(path.join(media_dir, file_name), 'rb') as fp:\n            self.assertEqual(fp.read(), response_content)\n        self.assertEqual(len(response_content),\n                          int(response['Content-Length']))\n\n\nclass StaticHelperTest(StaticTests):\n    \"\"\"\n    Test case to make sure the static URL pattern helper works as expected\n    \"\"\"\n    def setUp(self):\n        super(StaticHelperTest, self).setUp()\n        self._old_views_urlpatterns = urls.urlpatterns[:]\n        urls.urlpatterns += static('/media/', document_root=media_dir)\n\n    def tearDown(self):\n        super(StaticHelperTest, self).tearDown()\n        urls.urlpatterns = self._old_views_urlpatterns\n\n\nclass StaticUtilsTests(unittest.TestCase):\n    def test_was_modified_since_fp(self):\n        \"\"\"\n        Test that a floating point mtime does not disturb was_modified_since.\n        (#18675)\n        \"\"\"\n        mtime = 1343416141.107817\n        header = http_date(mtime)\n        self.assertFalse(was_modified_since(header, mtime))\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/views/urls.py",
    "content": "# coding: utf-8\nfrom __future__ import absolute_import\n\nfrom os import path\n\nfrom django.conf.urls import patterns, url, include\nfrom django.utils._os import upath\n\nfrom . import views\n\n\nbase_dir = path.dirname(path.abspath(upath(__file__)))\nmedia_dir = path.join(base_dir, 'media')\nlocale_dir = path.join(base_dir, 'locale')\n\njs_info_dict = {\n    'domain': 'djangojs',\n    'packages': ('regressiontests.views',),\n}\n\njs_info_dict_english_translation = {\n    'domain': 'djangojs',\n    'packages': ('regressiontests.views.app0',),\n}\n\njs_info_dict_multi_packages1 = {\n    'domain': 'djangojs',\n    'packages': ('regressiontests.views.app1', 'regressiontests.views.app2'),\n}\n\njs_info_dict_multi_packages2 = {\n    'domain': 'djangojs',\n    'packages': ('regressiontests.views.app3', 'regressiontests.views.app4'),\n}\n\njs_info_dict_admin = {\n    'domain': 'djangojs',\n    'packages': ('django.contrib.admin', 'regressiontests.views'),\n}\n\nurlpatterns = patterns('',\n    (r'^$', views.index_page),\n\n    # Default views\n    (r'^shortcut/(\\d+)/(.*)/$', 'django.views.defaults.shortcut'),\n    (r'^non_existing_url/', 'django.views.defaults.page_not_found'),\n    (r'^server_error/', 'django.views.defaults.server_error'),\n\n    # a view that raises an exception for the debug view\n    (r'raises/$', views.raises),\n    (r'raises404/$', views.raises404),\n    (r'raises403/$', views.raises403),\n\n    # i18n views\n    (r'^i18n/', include('django.conf.urls.i18n')),\n    (r'^jsi18n/$', 'django.views.i18n.javascript_catalog', js_info_dict),\n    (r'^jsi18n_english_translation/$', 'django.views.i18n.javascript_catalog', js_info_dict_english_translation),\n    (r'^jsi18n_multi_packages1/$', 'django.views.i18n.javascript_catalog', js_info_dict_multi_packages1),\n    (r'^jsi18n_multi_packages2/$', 'django.views.i18n.javascript_catalog', js_info_dict_multi_packages2),\n    (r'^jsi18n_admin/$', 'django.views.i18n.javascript_catalog', js_info_dict_admin),\n    (r'^jsi18n_template/$', views.jsi18n),\n\n    # Static views\n    (r'^site_media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': media_dir}),\n)\n\nurlpatterns += patterns('regressiontests.views.views',\n    url(r'view_exception/(?P<n>\\d+)/$', 'view_exception', name='view_exception'),\n    url(r'template_exception/(?P<n>\\d+)/$', 'template_exception', name='template_exception'),\n    url(r'^raises_template_does_not_exist/$', 'raises_template_does_not_exist', name='raises_template_does_not_exist'),\n)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/views/views.py",
    "content": "from __future__ import absolute_import\n\nimport sys\n\nfrom django.core.exceptions import PermissionDenied\nfrom django.core.urlresolvers import get_resolver\nfrom django.http import HttpResponse, HttpResponseRedirect\nfrom django.shortcuts import render_to_response, render\nfrom django.template import Context, RequestContext, TemplateDoesNotExist\nfrom django.views.debug import technical_500_response, SafeExceptionReporterFilter\nfrom django.views.decorators.debug import (sensitive_post_parameters,\n                                           sensitive_variables)\nfrom django.utils.log import getLogger\n\nfrom . import BrokenException, except_args\n\n\n\ndef index_page(request):\n    \"\"\"Dummy index page\"\"\"\n    return HttpResponse('<html><body>Dummy page</body></html>')\n\ndef raises(request):\n    # Make sure that a callable that raises an exception in the stack frame's\n    # local vars won't hijack the technical 500 response. See:\n    # http://code.djangoproject.com/ticket/15025\n    def callable():\n        raise Exception\n    try:\n        raise Exception\n    except Exception:\n        return technical_500_response(request, *sys.exc_info())\n\ndef raises404(request):\n    resolver = get_resolver(None)\n    resolver.resolve('')\n\ndef raises403(request):\n    raise PermissionDenied\n\ndef redirect(request):\n    \"\"\"\n    Forces an HTTP redirect.\n    \"\"\"\n    return HttpResponseRedirect(\"target/\")\n\ndef view_exception(request, n):\n    raise BrokenException(except_args[int(n)])\n\ndef template_exception(request, n):\n    return render_to_response('debug/template_exception.html',\n        {'arg': except_args[int(n)]})\n\ndef jsi18n(request):\n    return render_to_response('jsi18n.html')\n\n# Some views to exercise the shortcuts\n\ndef render_to_response_view(request):\n    return render_to_response('debug/render_test.html', {\n        'foo': 'FOO',\n        'bar': 'BAR',\n    })\n\ndef render_to_response_view_with_request_context(request):\n    return render_to_response('debug/render_test.html', {\n        'foo': 'FOO',\n        'bar': 'BAR',\n    }, context_instance=RequestContext(request))\n\ndef render_to_response_view_with_content_type(request):\n    return render_to_response('debug/render_test.html', {\n        'foo': 'FOO',\n        'bar': 'BAR',\n    }, content_type='application/x-rendertest')\n\ndef render_view(request):\n    return render(request, 'debug/render_test.html', {\n        'foo': 'FOO',\n        'bar': 'BAR',\n    })\n\ndef render_view_with_base_context(request):\n    return render(request, 'debug/render_test.html', {\n        'foo': 'FOO',\n        'bar': 'BAR',\n    }, context_instance=Context())\n\ndef render_view_with_content_type(request):\n    return render(request, 'debug/render_test.html', {\n        'foo': 'FOO',\n        'bar': 'BAR',\n    }, content_type='application/x-rendertest')\n\ndef render_view_with_status(request):\n    return render(request, 'debug/render_test.html', {\n        'foo': 'FOO',\n        'bar': 'BAR',\n    }, status=403)\n\ndef render_view_with_current_app(request):\n    return render(request, 'debug/render_test.html', {\n        'foo': 'FOO',\n        'bar': 'BAR',\n    }, current_app=\"foobar_app\")\n\ndef render_view_with_current_app_conflict(request):\n    # This should fail because we don't passing both a current_app and\n    # context_instance:\n    return render(request, 'debug/render_test.html', {\n        'foo': 'FOO',\n        'bar': 'BAR',\n    }, current_app=\"foobar_app\", context_instance=RequestContext(request))\n\ndef raises_template_does_not_exist(request):\n    # We need to inspect the HTML generated by the fancy 500 debug view but\n    # the test client ignores it, so we send it explicitly.\n    try:\n        return render_to_response('i_dont_exist.html')\n    except TemplateDoesNotExist:\n        return technical_500_response(request, *sys.exc_info())\n\ndef send_log(request, exc_info):\n    logger = getLogger('django.request')\n    # The default logging config has a logging filter to ensure admin emails are\n    # only sent with DEBUG=False, but since someone might choose to remove that\n    # filter, we still want to be able to test the behavior of error emails\n    # with DEBUG=True. So we need to remove the filter temporarily.\n    admin_email_handler = [\n        h for h in logger.handlers\n        if h.__class__.__name__ == \"AdminEmailHandler\"\n        ][0]\n    orig_filters = admin_email_handler.filters\n    admin_email_handler.filters = []\n    admin_email_handler.include_html = True\n    logger.error('Internal Server Error: %s', request.path,\n        exc_info=exc_info,\n        extra={\n            'status_code': 500,\n            'request': request\n        }\n    )\n    admin_email_handler.filters = orig_filters\n\ndef non_sensitive_view(request):\n    # Do not just use plain strings for the variables' values in the code\n    # so that the tests don't return false positives when the function's source\n    # is displayed in the exception report.\n    cooked_eggs = ''.join(['s', 'c', 'r', 'a', 'm', 'b', 'l', 'e', 'd'])\n    sauce = ''.join(['w', 'o', 'r', 'c', 'e', 's', 't', 'e', 'r', 's', 'h', 'i', 'r', 'e'])\n    try:\n        raise Exception\n    except Exception:\n        exc_info = sys.exc_info()\n        send_log(request, exc_info)\n        return technical_500_response(request, *exc_info)\n\n@sensitive_variables('sauce')\n@sensitive_post_parameters('bacon-key', 'sausage-key')\ndef sensitive_view(request):\n    # Do not just use plain strings for the variables' values in the code\n    # so that the tests don't return false positives when the function's source\n    # is displayed in the exception report.\n    cooked_eggs = ''.join(['s', 'c', 'r', 'a', 'm', 'b', 'l', 'e', 'd'])\n    sauce = ''.join(['w', 'o', 'r', 'c', 'e', 's', 't', 'e', 'r', 's', 'h', 'i', 'r', 'e'])\n    try:\n        raise Exception\n    except Exception:\n        exc_info = sys.exc_info()\n        send_log(request, exc_info)\n        return technical_500_response(request, *exc_info)\n\n@sensitive_variables()\n@sensitive_post_parameters()\ndef paranoid_view(request):\n    # Do not just use plain strings for the variables' values in the code\n    # so that the tests don't return false positives when the function's source\n    # is displayed in the exception report.\n    cooked_eggs = ''.join(['s', 'c', 'r', 'a', 'm', 'b', 'l', 'e', 'd'])\n    sauce = ''.join(['w', 'o', 'r', 'c', 'e', 's', 't', 'e', 'r', 's', 'h', 'i', 'r', 'e'])\n    try:\n        raise Exception\n    except Exception:\n        exc_info = sys.exc_info()\n        send_log(request, exc_info)\n        return technical_500_response(request, *exc_info)\n\ndef sensitive_args_function_caller(request):\n    try:\n        sensitive_args_function(''.join(['w', 'o', 'r', 'c', 'e', 's', 't', 'e', 'r', 's', 'h', 'i', 'r', 'e']))\n    except Exception:\n        exc_info = sys.exc_info()\n        send_log(request, exc_info)\n        return technical_500_response(request, *exc_info)\n\n@sensitive_variables('sauce')\ndef sensitive_args_function(sauce):\n    # Do not just use plain strings for the variables' values in the code\n    # so that the tests don't return false positives when the function's source\n    # is displayed in the exception report.\n    cooked_eggs = ''.join(['s', 'c', 'r', 'a', 'm', 'b', 'l', 'e', 'd'])\n    raise Exception\n\ndef sensitive_kwargs_function_caller(request):\n    try:\n        sensitive_kwargs_function(''.join(['w', 'o', 'r', 'c', 'e', 's', 't', 'e', 'r', 's', 'h', 'i', 'r', 'e']))\n    except Exception:\n        exc_info = sys.exc_info()\n        send_log(request, exc_info)\n        return technical_500_response(request, *exc_info)\n\n@sensitive_variables('sauce')\ndef sensitive_kwargs_function(sauce=None):\n    # Do not just use plain strings for the variables' values in the code\n    # so that the tests don't return false positives when the function's source\n    # is displayed in the exception report.\n    cooked_eggs = ''.join(['s', 'c', 'r', 'a', 'm', 'b', 'l', 'e', 'd'])\n    raise Exception\n\nclass UnsafeExceptionReporterFilter(SafeExceptionReporterFilter):\n    \"\"\"\n    Ignores all the filtering done by its parent class.\n    \"\"\"\n\n    def get_post_parameters(self, request):\n        return request.POST\n\n    def get_traceback_frame_variables(self, request, tb_frame):\n        return tb_frame.f_locals.items()\n\n\n@sensitive_variables()\n@sensitive_post_parameters()\ndef custom_exception_reporter_filter_view(request):\n    # Do not just use plain strings for the variables' values in the code\n    # so that the tests don't return false positives when the function's source\n    # is displayed in the exception report.\n    cooked_eggs = ''.join(['s', 'c', 'r', 'a', 'm', 'b', 'l', 'e', 'd'])\n    sauce = ''.join(['w', 'o', 'r', 'c', 'e', 's', 't', 'e', 'r', 's', 'h', 'i', 'r', 'e'])\n    request.exception_reporter_filter = UnsafeExceptionReporterFilter()\n    try:\n        raise Exception\n    except Exception:\n        exc_info = sys.exc_info()\n        send_log(request, exc_info)\n        return technical_500_response(request, *exc_info)\n\n\nclass Klass(object):\n\n    @sensitive_variables('sauce')\n    def method(self, request):\n        # Do not just use plain strings for the variables' values in the code\n        # so that the tests don't return false positives when the function's\n        # source is displayed in the exception report.\n        cooked_eggs = ''.join(['s', 'c', 'r', 'a', 'm', 'b', 'l', 'e', 'd'])\n        sauce = ''.join(['w', 'o', 'r', 'c', 'e', 's', 't', 'e', 'r', 's', 'h', 'i', 'r', 'e'])\n        try:\n            raise Exception\n        except Exception:\n            exc_info = sys.exc_info()\n            send_log(request, exc_info)\n            return technical_500_response(request, *exc_info)\n\ndef sensitive_method_view(request):\n    return Klass().method(request)\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/wsgi/__init__.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/wsgi/models.py",
    "content": ""
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/wsgi/tests.py",
    "content": "from __future__ import unicode_literals\n\nfrom django.core.exceptions import ImproperlyConfigured\nfrom django.core.servers.basehttp import get_internal_wsgi_application\nfrom django.core.wsgi import get_wsgi_application\nfrom django.test import TestCase\nfrom django.test.client import RequestFactory\nfrom django.test.utils import override_settings\nfrom django.utils import six, unittest\n\n\nclass WSGITest(TestCase):\n    urls = \"regressiontests.wsgi.urls\"\n\n    def test_get_wsgi_application(self):\n        \"\"\"\n        Verify that ``get_wsgi_application`` returns a functioning WSGI\n        callable.\n\n        \"\"\"\n        application = get_wsgi_application()\n\n        environ = RequestFactory()._base_environ(\n            PATH_INFO=\"/\",\n            CONTENT_TYPE=\"text/html; charset=utf-8\",\n            REQUEST_METHOD=\"GET\"\n            )\n\n        response_data = {}\n\n        def start_response(status, headers):\n            response_data[\"status\"] = status\n            response_data[\"headers\"] = headers\n\n        response = application(environ, start_response)\n\n        self.assertEqual(response_data[\"status\"], \"200 OK\")\n        self.assertEqual(\n            response_data[\"headers\"],\n            [('Content-Type', 'text/html; charset=utf-8')])\n        self.assertEqual(\n            bytes(response),\n            b\"Content-Type: text/html; charset=utf-8\\r\\n\\r\\nHello World!\")\n\n\nclass GetInternalWSGIApplicationTest(unittest.TestCase):\n    @override_settings(WSGI_APPLICATION=\"regressiontests.wsgi.wsgi.application\")\n    def test_success(self):\n        \"\"\"\n        If ``WSGI_APPLICATION`` is a dotted path, the referenced object is\n        returned.\n\n        \"\"\"\n        app = get_internal_wsgi_application()\n\n        from .wsgi import application\n\n        self.assertTrue(app is application)\n\n\n    @override_settings(WSGI_APPLICATION=None)\n    def test_default(self):\n        \"\"\"\n        If ``WSGI_APPLICATION`` is ``None``, the return value of\n        ``get_wsgi_application`` is returned.\n\n        \"\"\"\n        # Mock out get_wsgi_application so we know its return value is used\n        fake_app = object()\n        def mock_get_wsgi_app():\n            return fake_app\n        from django.core.servers import basehttp\n        _orig_get_wsgi_app = basehttp.get_wsgi_application\n        basehttp.get_wsgi_application = mock_get_wsgi_app\n\n        try:\n            app = get_internal_wsgi_application()\n\n            self.assertTrue(app is fake_app)\n        finally:\n            basehttp.get_wsgi_application = _orig_get_wsgi_app\n\n\n    @override_settings(WSGI_APPLICATION=\"regressiontests.wsgi.noexist.app\")\n    def test_bad_module(self):\n        with six.assertRaisesRegex(self,\n            ImproperlyConfigured,\n            r\"^WSGI application 'regressiontests.wsgi.noexist.app' could not be loaded; could not import module 'regressiontests.wsgi.noexist':\"):\n\n            get_internal_wsgi_application()\n\n\n    @override_settings(WSGI_APPLICATION=\"regressiontests.wsgi.wsgi.noexist\")\n    def test_bad_name(self):\n        with six.assertRaisesRegex(self,\n            ImproperlyConfigured,\n            r\"^WSGI application 'regressiontests.wsgi.wsgi.noexist' could not be loaded; can't find 'noexist' in module 'regressiontests.wsgi.wsgi':\"):\n\n            get_internal_wsgi_application()\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/wsgi/urls.py",
    "content": "from django.conf.urls import url, patterns\nfrom django.http import HttpResponse\n\ndef helloworld(request):\n    return HttpResponse(\"Hello World!\")\n\nurlpatterns = patterns(\n    \"\",\n    url(\"^$\", helloworld)\n    )\n"
  },
  {
    "path": "Django-1.5.1/tests/regressiontests/wsgi/wsgi.py",
    "content": "# This is just to test finding, it doesn't have to be a real WSGI callable\napplication = object()\n"
  },
  {
    "path": "Django-1.5.1/tests/runtests.py",
    "content": "#!/usr/bin/env python\nimport logging\nimport os\nimport shutil\nimport subprocess\nimport sys\nimport tempfile\nimport warnings\n\nfrom django import contrib\nfrom django.utils._os import upath\nfrom django.utils import six\n\n# databrowse is deprecated, but we still want to run its tests\nwarnings.filterwarnings('ignore', \"The Databrowse contrib app is deprecated\",\n                        DeprecationWarning, 'django.contrib.databrowse')\n\nCONTRIB_DIR_NAME = 'django.contrib'\nMODEL_TESTS_DIR_NAME = 'modeltests'\nREGRESSION_TESTS_DIR_NAME = 'regressiontests'\n\nTEST_TEMPLATE_DIR = 'templates'\n\nRUNTESTS_DIR = os.path.dirname(upath(__file__))\nCONTRIB_DIR = os.path.dirname(upath(contrib.__file__))\nMODEL_TEST_DIR = os.path.join(RUNTESTS_DIR, MODEL_TESTS_DIR_NAME)\nREGRESSION_TEST_DIR = os.path.join(RUNTESTS_DIR, REGRESSION_TESTS_DIR_NAME)\nTEMP_DIR = tempfile.mkdtemp(prefix='django_')\nos.environ['DJANGO_TEST_TEMP_DIR'] = TEMP_DIR\n\nREGRESSION_SUBDIRS_TO_SKIP = []\n\nALWAYS_INSTALLED_APPS = [\n    'django.contrib.contenttypes',\n    'django.contrib.auth',\n    'django.contrib.sites',\n    'django.contrib.flatpages',\n    'django.contrib.redirects',\n    'django.contrib.sessions',\n    'django.contrib.messages',\n    'django.contrib.comments',\n    'django.contrib.admin',\n    'django.contrib.admindocs',\n    'django.contrib.databrowse',\n    'django.contrib.staticfiles',\n    'django.contrib.humanize',\n    'regressiontests.staticfiles_tests',\n    'regressiontests.staticfiles_tests.apps.test',\n    'regressiontests.staticfiles_tests.apps.no_label',\n]\n\ndef geodjango(settings):\n    # All databases must have spatial backends to run GeoDjango tests.\n    spatial_dbs = [name for name, db_dict in settings.DATABASES.items()\n                   if db_dict['ENGINE'].startswith('django.contrib.gis')]\n    return len(spatial_dbs) == len(settings.DATABASES)\n\ndef get_test_modules():\n    modules = []\n    for loc, dirpath in (\n        (MODEL_TESTS_DIR_NAME, MODEL_TEST_DIR),\n        (REGRESSION_TESTS_DIR_NAME, REGRESSION_TEST_DIR),\n        (CONTRIB_DIR_NAME, CONTRIB_DIR)):\n        for f in os.listdir(dirpath):\n            if (f.startswith('__init__') or\n                f.startswith('.') or\n                # Python 3 byte code dirs (PEP 3147)\n                f == '__pycache__' or\n                f.startswith('sql') or\n                os.path.basename(f) in REGRESSION_SUBDIRS_TO_SKIP):\n                continue\n            modules.append((loc, f))\n    return modules\n\ndef setup(verbosity, test_labels):\n    from django.conf import settings\n    state = {\n        'INSTALLED_APPS': settings.INSTALLED_APPS,\n        'ROOT_URLCONF': getattr(settings, \"ROOT_URLCONF\", \"\"),\n        'TEMPLATE_DIRS': settings.TEMPLATE_DIRS,\n        'USE_I18N': settings.USE_I18N,\n        'LOGIN_URL': settings.LOGIN_URL,\n        'LANGUAGE_CODE': settings.LANGUAGE_CODE,\n        'MIDDLEWARE_CLASSES': settings.MIDDLEWARE_CLASSES,\n        'STATIC_URL': settings.STATIC_URL,\n        'STATIC_ROOT': settings.STATIC_ROOT,\n    }\n\n    # Redirect some settings for the duration of these tests.\n    settings.INSTALLED_APPS = ALWAYS_INSTALLED_APPS\n    settings.ROOT_URLCONF = 'urls'\n    settings.STATIC_URL = '/static/'\n    settings.STATIC_ROOT = os.path.join(TEMP_DIR, 'static')\n    settings.TEMPLATE_DIRS = (os.path.join(RUNTESTS_DIR, TEST_TEMPLATE_DIR),)\n    settings.USE_I18N = True\n    settings.LANGUAGE_CODE = 'en'\n    settings.LOGIN_URL = 'django.contrib.auth.views.login'\n    settings.MIDDLEWARE_CLASSES = (\n        'django.contrib.sessions.middleware.SessionMiddleware',\n        'django.contrib.auth.middleware.AuthenticationMiddleware',\n        'django.contrib.messages.middleware.MessageMiddleware',\n        'django.middleware.common.CommonMiddleware',\n    )\n    settings.SITE_ID = 1\n    # For testing comment-utils, we require the MANAGERS attribute\n    # to be set, so that a test email is sent out which we catch\n    # in our tests.\n    settings.MANAGERS = (\"admin@djangoproject.com\",)\n\n    if verbosity > 0:\n        # Ensure any warnings captured to logging are piped through a verbose\n        # logging handler.  If any -W options were passed explicitly on command\n        # line, warnings are not captured, and this has no effect.\n        logger = logging.getLogger('py.warnings')\n        handler = logging.StreamHandler()\n        logger.addHandler(handler)\n\n    # Load all the ALWAYS_INSTALLED_APPS.\n    # (This import statement is intentionally delayed until after we\n    # access settings because of the USE_I18N dependency.)\n    from django.db.models.loading import get_apps, load_app\n    get_apps()\n\n    # Load all the test model apps.\n    test_labels_set = set([label.split('.')[0] for label in test_labels])\n    test_modules = get_test_modules()\n\n    # If GeoDjango, then we'll want to add in the test applications\n    # that are a part of its test suite.\n    if geodjango(settings):\n        from django.contrib.gis.tests import geo_apps\n        test_modules.extend(geo_apps(runtests=True))\n        settings.INSTALLED_APPS.extend(['django.contrib.gis', 'django.contrib.sitemaps'])\n\n    for module_dir, module_name in test_modules:\n        module_label = '.'.join([module_dir, module_name])\n        # if the module was named on the command line, or\n        # no modules were named (i.e., run all), import\n        # this module and add it to the list to test.\n        if not test_labels or module_name in test_labels_set:\n            if verbosity >= 2:\n                print(\"Importing application %s\" % module_name)\n            mod = load_app(module_label)\n            if mod:\n                if module_label not in settings.INSTALLED_APPS:\n                    settings.INSTALLED_APPS.append(module_label)\n\n    return state\n\ndef teardown(state):\n    from django.conf import settings\n    # Removing the temporary TEMP_DIR. Ensure we pass in unicode\n    # so that it will successfully remove temp trees containing\n    # non-ASCII filenames on Windows. (We're assuming the temp dir\n    # name itself does not contain non-ASCII characters.)\n    shutil.rmtree(six.text_type(TEMP_DIR))\n    # Restore the old settings.\n    for key, value in state.items():\n        setattr(settings, key, value)\n\ndef django_tests(verbosity, interactive, failfast, test_labels):\n    from django.conf import settings\n    state = setup(verbosity, test_labels)\n    extra_tests = []\n\n    # If GeoDjango is used, add it's tests that aren't a part of\n    # an application (e.g., GEOS, GDAL, Distance objects).\n    if geodjango(settings) and (not test_labels or 'gis' in test_labels):\n        from django.contrib.gis.tests import geodjango_suite\n        extra_tests.append(geodjango_suite(apps=False))\n\n    # Run the test suite, including the extra validation tests.\n    from django.test.utils import get_runner\n    if not hasattr(settings, 'TEST_RUNNER'):\n        settings.TEST_RUNNER = 'django.test.simple.DjangoTestSuiteRunner'\n    TestRunner = get_runner(settings)\n\n    test_runner = TestRunner(verbosity=verbosity, interactive=interactive,\n        failfast=failfast)\n    failures = test_runner.run_tests(test_labels, extra_tests=extra_tests)\n\n    teardown(state)\n    return failures\n\n\ndef bisect_tests(bisection_label, options, test_labels):\n    state = setup(int(options.verbosity), test_labels)\n\n    if not test_labels:\n        # Get the full list of test labels to use for bisection\n        from django.db.models.loading import get_apps\n        test_labels = [app.__name__.split('.')[-2] for app in get_apps()]\n\n    print('***** Bisecting test suite: %s' % ' '.join(test_labels))\n\n    # Make sure the bisection point isn't in the test list\n    # Also remove tests that need to be run in specific combinations\n    for label in [bisection_label, 'model_inheritance_same_model_name']:\n        try:\n            test_labels.remove(label)\n        except ValueError:\n            pass\n\n    subprocess_args = [\n        sys.executable, upath(__file__), '--settings=%s' % options.settings]\n    if options.failfast:\n        subprocess_args.append('--failfast')\n    if options.verbosity:\n        subprocess_args.append('--verbosity=%s' % options.verbosity)\n    if not options.interactive:\n        subprocess_args.append('--noinput')\n\n    iteration = 1\n    while len(test_labels) > 1:\n        midpoint = len(test_labels)/2\n        test_labels_a = test_labels[:midpoint] + [bisection_label]\n        test_labels_b = test_labels[midpoint:] + [bisection_label]\n        print('***** Pass %da: Running the first half of the test suite' % iteration)\n        print('***** Test labels: %s' % ' '.join(test_labels_a))\n        failures_a = subprocess.call(subprocess_args + test_labels_a)\n\n        print('***** Pass %db: Running the second half of the test suite' % iteration)\n        print('***** Test labels: %s' % ' '.join(test_labels_b))\n        print('')\n        failures_b = subprocess.call(subprocess_args + test_labels_b)\n\n        if failures_a and not failures_b:\n            print(\"***** Problem found in first half. Bisecting again...\")\n            iteration = iteration + 1\n            test_labels = test_labels_a[:-1]\n        elif failures_b and not failures_a:\n            print(\"***** Problem found in second half. Bisecting again...\")\n            iteration = iteration + 1\n            test_labels = test_labels_b[:-1]\n        elif failures_a and failures_b:\n            print(\"***** Multiple sources of failure found\")\n            break\n        else:\n            print(\"***** No source of failure found... try pair execution (--pair)\")\n            break\n\n    if len(test_labels) == 1:\n        print(\"***** Source of error: %s\" % test_labels[0])\n    teardown(state)\n\ndef paired_tests(paired_test, options, test_labels):\n    state = setup(int(options.verbosity), test_labels)\n\n    if not test_labels:\n        print(\"\")\n        # Get the full list of test labels to use for bisection\n        from django.db.models.loading import get_apps\n        test_labels = [app.__name__.split('.')[-2] for app in get_apps()]\n\n    print('***** Trying paired execution')\n\n    # Make sure the constant member of the pair isn't in the test list\n    # Also remove tests that need to be run in specific combinations\n    for label in [paired_test, 'model_inheritance_same_model_name']:\n        try:\n            test_labels.remove(label)\n        except ValueError:\n            pass\n\n    subprocess_args = [\n        sys.executable, upath(__file__), '--settings=%s' % options.settings]\n    if options.failfast:\n        subprocess_args.append('--failfast')\n    if options.verbosity:\n        subprocess_args.append('--verbosity=%s' % options.verbosity)\n    if not options.interactive:\n        subprocess_args.append('--noinput')\n\n    for i, label in enumerate(test_labels):\n        print('***** %d of %d: Check test pairing with %s' % (\n              i + 1, len(test_labels), label))\n        failures = subprocess.call(subprocess_args + [label, paired_test])\n        if failures:\n            print('***** Found problem pair with %s' % label)\n            return\n\n    print('***** No problem pair found')\n    teardown(state)\n\nif __name__ == \"__main__\":\n    from optparse import OptionParser\n    usage = \"%prog [options] [module module module ...]\"\n    parser = OptionParser(usage=usage)\n    parser.add_option(\n        '-v', '--verbosity', action='store', dest='verbosity', default='1',\n        type='choice', choices=['0', '1', '2', '3'],\n        help='Verbosity level; 0=minimal output, 1=normal output, 2=all '\n             'output')\n    parser.add_option(\n        '--noinput', action='store_false', dest='interactive', default=True,\n        help='Tells Django to NOT prompt the user for input of any kind.')\n    parser.add_option(\n        '--failfast', action='store_true', dest='failfast', default=False,\n        help='Tells Django to stop running the test suite after first failed '\n             'test.')\n    parser.add_option(\n        '--settings',\n        help='Python path to settings module, e.g. \"myproject.settings\". If '\n             'this isn\\'t provided, the DJANGO_SETTINGS_MODULE environment '\n             'variable will be used.')\n    parser.add_option(\n        '--bisect', action='store', dest='bisect', default=None,\n        help='Bisect the test suite to discover a test that causes a test '\n             'failure when combined with the named test.')\n    parser.add_option(\n        '--pair', action='store', dest='pair', default=None,\n        help='Run the test suite in pairs with the named test to find problem '\n             'pairs.')\n    parser.add_option(\n        '--liveserver', action='store', dest='liveserver', default=None,\n        help='Overrides the default address where the live server (used with '\n             'LiveServerTestCase) is expected to run from. The default value '\n             'is localhost:8081.'),\n    options, args = parser.parse_args()\n    if options.settings:\n        os.environ['DJANGO_SETTINGS_MODULE'] = options.settings\n    elif \"DJANGO_SETTINGS_MODULE\" not in os.environ:\n        parser.error(\"DJANGO_SETTINGS_MODULE is not set in the environment. \"\n                      \"Set it or use --settings.\")\n    else:\n        options.settings = os.environ['DJANGO_SETTINGS_MODULE']\n\n    if options.liveserver is not None:\n        os.environ['DJANGO_LIVE_TEST_SERVER_ADDRESS'] = options.liveserver\n\n    if options.bisect:\n        bisect_tests(options.bisect, options, args)\n    elif options.pair:\n        paired_tests(options.pair, options, args)\n    else:\n        failures = django_tests(int(options.verbosity), options.interactive,\n                                options.failfast, args)\n        if failures:\n            sys.exit(bool(failures))\n"
  },
  {
    "path": "Django-1.5.1/tests/templates/base.html",
    "content": "<html>\n<head></head>\n<body>\n<h1>Django Internal Tests: {% block title %}{% endblock %}</h1>\n{% block content %}\n{% endblock %}\n</body>\n</html>"
  },
  {
    "path": "Django-1.5.1/tests/templates/comments/comment_notification_email.txt",
    "content": "A comment has been posted on {{ content_object }}.\nThe comment reads as follows:\n{{ comment }}\n"
  },
  {
    "path": "Django-1.5.1/tests/templates/custom_admin/add_form.html",
    "content": "{% extends \"admin/change_form.html\" %}\n"
  },
  {
    "path": "Django-1.5.1/tests/templates/custom_admin/change_form.html",
    "content": "{% extends \"admin/change_form.html\" %}\n"
  },
  {
    "path": "Django-1.5.1/tests/templates/custom_admin/change_list.html",
    "content": "{% extends \"admin/change_list.html\" %}\n\n{% block extrahead %}\n<script type=\"text/javascript\">\nvar hello = '{{ extra_var }}';\n</script>\n{% endblock %}\n"
  },
  {
    "path": "Django-1.5.1/tests/templates/custom_admin/delete_confirmation.html",
    "content": "{% extends \"admin/delete_confirmation.html\" %}\n"
  },
  {
    "path": "Django-1.5.1/tests/templates/custom_admin/delete_selected_confirmation.html",
    "content": "{% extends \"admin/delete_selected_confirmation.html\" %}\n"
  },
  {
    "path": "Django-1.5.1/tests/templates/custom_admin/index.html",
    "content": "{% extends \"admin/index.html\" %}\n\n{% block content %}\nHello from a custom index template {{ foo }}\n{{ block.super }}\n{% endblock %}\n"
  },
  {
    "path": "Django-1.5.1/tests/templates/custom_admin/login.html",
    "content": "{% extends \"admin/login.html\" %}\n\n{% block content %}\nHello from a custom login template\n{{ block.super }}\n{% endblock %}\n"
  },
  {
    "path": "Django-1.5.1/tests/templates/custom_admin/logout.html",
    "content": "{% extends \"registration/logged_out.html\" %}\n\n{% block content %}\nHello from a custom logout template\n{{ block.super }}\n{% endblock %}\n"
  },
  {
    "path": "Django-1.5.1/tests/templates/custom_admin/object_history.html",
    "content": "{% extends \"admin/object_history.html\" %}\n"
  },
  {
    "path": "Django-1.5.1/tests/templates/custom_admin/password_change_done.html",
    "content": "{% extends \"registration/password_change_done.html\" %}\n\n{% block content %}\nHello from a custom password change done template\n{{ block.super }}\n{% endblock %}\n"
  },
  {
    "path": "Django-1.5.1/tests/templates/custom_admin/password_change_form.html",
    "content": "{% extends \"registration/password_change_form.html\" %}\n\n{% block content %}\nHello from a custom password change form template\n{{ block.super }}\n{% endblock %}\n"
  },
  {
    "path": "Django-1.5.1/tests/templates/extended.html",
    "content": "{% extends \"base.html\" %}\n{% block title %}Extended template{% endblock %}\n{% block content %}\nThis is just a template extending the base.\n{% endblock %}"
  },
  {
    "path": "Django-1.5.1/tests/templates/form_view.html",
    "content": "{% extends \"base.html\" %}\n{% block title %}Submit data{% endblock %}\n{% block content %}\n<h1>{{ message }}</h1>\n<form method='post' action='.'>\n{% if form.errors %}\n<p class='warning'>Please correct the errors below:</p>\n{% endif %}\n<ul class='form'>\n{{ form }}\n<li><input type='submit' value='Submit'></li>\n</ul>\n</form>\n\n{% endblock %}"
  },
  {
    "path": "Django-1.5.1/tests/templates/login.html",
    "content": "{% extends \"base.html\" %}\n{% block title %}Login{% endblock %}\n{% block content %}\n{% if form.has_errors %}\n<p>Your username and password didn't match. Please try again.</p>\n{% endif %}\n\n<form method=\"post\" action=\".\">\n<table>\n<tr><td><label for=\"id_username\">Username:</label></td><td>{{ form.username }}</td></tr>\n<tr><td><label for=\"id_password\">Password:</label></td><td>{{ form.password }}</td></tr>\n</table>\n\n<input type=\"submit\" value=\"login\" />\n<input type=\"hidden\" name=\"next\" value=\"{{ next }}\" />\n</form>\n{% endblock %}"
  },
  {
    "path": "Django-1.5.1/tests/templates/views/article_archive_day.html",
    "content": "This template intentionally left blank\n"
  },
  {
    "path": "Django-1.5.1/tests/templates/views/article_archive_month.html",
    "content": "This template intentionally left blank"
  },
  {
    "path": "Django-1.5.1/tests/templates/views/article_confirm_delete.html",
    "content": "This template intentionally left blank"
  },
  {
    "path": "Django-1.5.1/tests/templates/views/article_detail.html",
    "content": "Article detail template.\n"
  },
  {
    "path": "Django-1.5.1/tests/templates/views/article_form.html",
    "content": "Article form template.\n\n{{ form.errors }}\n"
  },
  {
    "path": "Django-1.5.1/tests/templates/views/article_list.html",
    "content": "{{ object_list }}"
  },
  {
    "path": "Django-1.5.1/tests/templates/views/datearticle_archive_month.html",
    "content": "This template intentionally left blank"
  },
  {
    "path": "Django-1.5.1/tests/templates/views/urlarticle_detail.html",
    "content": "UrlArticle detail template.\n"
  },
  {
    "path": "Django-1.5.1/tests/templates/views/urlarticle_form.html",
    "content": "UrlArticle form template.\n\n{{ form.errors }}\n"
  },
  {
    "path": "Django-1.5.1/tests/test_sqlite.py",
    "content": "# This is an example test settings file for use with the Django test suite.\n#\n# The 'sqlite3' backend requires only the ENGINE setting (an in-\n# memory database will be used). All other backends will require a\n# NAME and potentially authentication information. See the\n# following section in the docs for more information:\n#\n# https://docs.djangoproject.com/en/dev/internals/contributing/writing-code/unit-tests/\n#\n# The different databases that Django supports behave differently in certain\n# situations, so it is recommended to run the test suite against as many\n# database backends as possible.  You may want to create a separate settings\n# file for each of the backends you test against.\n\nDATABASES = {\n    'default': {\n        'ENGINE': 'django.db.backends.sqlite3'\n    },\n    'other': {\n        'ENGINE': 'django.db.backends.sqlite3',\n    }\n}\n\nSECRET_KEY = \"django_tests_secret_key\"\n# To speed up tests under SQLite we use the MD5 hasher as the default one. \n# This should not be needed under other databases, as the relative speedup\n# is only marginal there.\nPASSWORD_HASHERS = (\n    'django.contrib.auth.hashers.MD5PasswordHasher',\n)\n"
  },
  {
    "path": "Django-1.5.1/tests/urls.py",
    "content": "from django.conf.urls import patterns, include\n\nurlpatterns = patterns('',\n    # test_client modeltest urls\n    (r'^test_client/', include('modeltests.test_client.urls')),\n    (r'^test_client_regress/', include('regressiontests.test_client_regress.urls')),\n\n    # File upload test views\n    (r'^file_uploads/', include('regressiontests.file_uploads.urls')),\n\n    # Always provide the auth system login and logout views\n    (r'^accounts/login/$', 'django.contrib.auth.views.login', {'template_name': 'login.html'}),\n    (r'^accounts/logout/$', 'django.contrib.auth.views.logout'),\n\n    # test urlconf for {% url %} template tag\n    (r'^url_tag/', include('regressiontests.templates.urls')),\n\n    # django built-in views\n    (r'^views/', include('regressiontests.views.urls')),\n\n    # test urlconf for middleware tests\n    (r'^middleware/', include('regressiontests.middleware.urls')),\n\n    # admin widget tests\n    (r'widget_admin/', include('regressiontests.admin_widgets.urls')),\n\n    # admin custom URL tests\n    (r'^custom_urls/', include('regressiontests.admin_custom_urls.urls')),\n\n    # admin scripts tests\n    (r'^admin_scripts/', include('regressiontests.admin_scripts.urls')),\n\n)\n"
  },
  {
    "path": "LICENSE",
    "content": "GNU GENERAL PUBLIC LICENSE\n                       Version 2, June 1991\n\n Copyright (C) 1989, 1991 Free Software Foundation, Inc.,\n 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n                            Preamble\n\n  The licenses for most software are designed to take away your\nfreedom to share and change it.  By contrast, the GNU General Public\nLicense is intended to guarantee your freedom to share and change free\nsoftware--to make sure the software is free for all its users.  This\nGeneral Public License applies to most of the Free Software\nFoundation's software and to any other program whose authors commit to\nusing it.  (Some other Free Software Foundation software is covered by\nthe GNU Lesser General Public License instead.)  You can apply it to\nyour programs, too.\n\n  When we speak of free software, we are referring to freedom, not\nprice.  Our General Public Licenses are designed to make sure that you\nhave the freedom to distribute copies of free software (and charge for\nthis service if you wish), that you receive source code or can get it\nif you want it, that you can change the software or use pieces of it\nin new free programs; and that you know you can do these things.\n\n  To protect your rights, we need to make restrictions that forbid\nanyone to deny you these rights or to ask you to surrender the rights.\nThese restrictions translate to certain responsibilities for you if you\ndistribute copies of the software, or if you modify it.\n\n  For example, if you distribute copies of such a program, whether\ngratis or for a fee, you must give the recipients all the rights that\nyou have.  You must make sure that they, too, receive or can get the\nsource code.  And you must show them these terms so they know their\nrights.\n\n  We protect your rights with two steps: (1) copyright the software, and\n(2) offer you this license which gives you legal permission to copy,\ndistribute and/or modify the software.\n\n  Also, for each author's protection and ours, we want to make certain\nthat everyone understands that there is no warranty for this free\nsoftware.  If the software is modified by someone else and passed on, we\nwant its recipients to know that what they have is not the original, so\nthat any problems introduced by others will not reflect on the original\nauthors' reputations.\n\n  Finally, any free program is threatened constantly by software\npatents.  We wish to avoid the danger that redistributors of a free\nprogram will individually obtain patent licenses, in effect making the\nprogram proprietary.  To prevent this, we have made it clear that any\npatent must be licensed for everyone's free use or not licensed at all.\n\n  The precise terms and conditions for copying, distribution and\nmodification follow.\n\n                    GNU GENERAL PUBLIC LICENSE\n   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\n  0. This License applies to any program or other work which contains\na notice placed by the copyright holder saying it may be distributed\nunder the terms of this General Public License.  The \"Program\", below,\nrefers to any such program or work, and a \"work based on the Program\"\nmeans either the Program or any derivative work under copyright law:\nthat is to say, a work containing the Program or a portion of it,\neither verbatim or with modifications and/or translated into another\nlanguage.  (Hereinafter, translation is included without limitation in\nthe term \"modification\".)  Each licensee is addressed as \"you\".\n\nActivities other than copying, distribution and modification are not\ncovered by this License; they are outside its scope.  The act of\nrunning the Program is not restricted, and the output from the Program\nis covered only if its contents constitute a work based on the\nProgram (independent of having been made by running the Program).\nWhether that is true depends on what the Program does.\n\n  1. You may copy and distribute verbatim copies of the Program's\nsource code as you receive it, in any medium, provided that you\nconspicuously and appropriately publish on each copy an appropriate\ncopyright notice and disclaimer of warranty; keep intact all the\nnotices that refer to this License and to the absence of any warranty;\nand give any other recipients of the Program a copy of this License\nalong with the Program.\n\nYou may charge a fee for the physical act of transferring a copy, and\nyou may at your option offer warranty protection in exchange for a fee.\n\n  2. You may modify your copy or copies of the Program or any portion\nof it, thus forming a work based on the Program, and copy and\ndistribute such modifications or work under the terms of Section 1\nabove, provided that you also meet all of these conditions:\n\n    a) You must cause the modified files to carry prominent notices\n    stating that you changed the files and the date of any change.\n\n    b) You must cause any work that you distribute or publish, that in\n    whole or in part contains or is derived from the Program or any\n    part thereof, to be licensed as a whole at no charge to all third\n    parties under the terms of this License.\n\n    c) If the modified program normally reads commands interactively\n    when run, you must cause it, when started running for such\n    interactive use in the most ordinary way, to print or display an\n    announcement including an appropriate copyright notice and a\n    notice that there is no warranty (or else, saying that you provide\n    a warranty) and that users may redistribute the program under\n    these conditions, and telling the user how to view a copy of this\n    License.  (Exception: if the Program itself is interactive but\n    does not normally print such an announcement, your work based on\n    the Program is not required to print an announcement.)\n\nThese requirements apply to the modified work as a whole.  If\nidentifiable sections of that work are not derived from the Program,\nand can be reasonably considered independent and separate works in\nthemselves, then this License, and its terms, do not apply to those\nsections when you distribute them as separate works.  But when you\ndistribute the same sections as part of a whole which is a work based\non the Program, the distribution of the whole must be on the terms of\nthis License, whose permissions for other licensees extend to the\nentire whole, and thus to each and every part regardless of who wrote it.\n\nThus, it is not the intent of this section to claim rights or contest\nyour rights to work written entirely by you; rather, the intent is to\nexercise the right to control the distribution of derivative or\ncollective works based on the Program.\n\nIn addition, mere aggregation of another work not based on the Program\nwith the Program (or with a work based on the Program) on a volume of\na storage or distribution medium does not bring the other work under\nthe scope of this License.\n\n  3. You may copy and distribute the Program (or a work based on it,\nunder Section 2) in object code or executable form under the terms of\nSections 1 and 2 above provided that you also do one of the following:\n\n    a) Accompany it with the complete corresponding machine-readable\n    source code, which must be distributed under the terms of Sections\n    1 and 2 above on a medium customarily used for software interchange; or,\n\n    b) Accompany it with a written offer, valid for at least three\n    years, to give any third party, for a charge no more than your\n    cost of physically performing source distribution, a complete\n    machine-readable copy of the corresponding source code, to be\n    distributed under the terms of Sections 1 and 2 above on a medium\n    customarily used for software interchange; or,\n\n    c) Accompany it with the information you received as to the offer\n    to distribute corresponding source code.  (This alternative is\n    allowed only for noncommercial distribution and only if you\n    received the program in object code or executable form with such\n    an offer, in accord with Subsection b above.)\n\nThe source code for a work means the preferred form of the work for\nmaking modifications to it.  For an executable work, complete source\ncode means all the source code for all modules it contains, plus any\nassociated interface definition files, plus the scripts used to\ncontrol compilation and installation of the executable.  However, as a\nspecial exception, the source code distributed need not include\nanything that is normally distributed (in either source or binary\nform) with the major components (compiler, kernel, and so on) of the\noperating system on which the executable runs, unless that component\nitself accompanies the executable.\n\nIf distribution of executable or object code is made by offering\naccess to copy from a designated place, then offering equivalent\naccess to copy the source code from the same place counts as\ndistribution of the source code, even though third parties are not\ncompelled to copy the source along with the object code.\n\n  4. You may not copy, modify, sublicense, or distribute the Program\nexcept as expressly provided under this License.  Any attempt\notherwise to copy, modify, sublicense or distribute the Program is\nvoid, and will automatically terminate your rights under this License.\nHowever, parties who have received copies, or rights, from you under\nthis License will not have their licenses terminated so long as such\nparties remain in full compliance.\n\n  5. You are not required to accept this License, since you have not\nsigned it.  However, nothing else grants you permission to modify or\ndistribute the Program or its derivative works.  These actions are\nprohibited by law if you do not accept this License.  Therefore, by\nmodifying or distributing the Program (or any work based on the\nProgram), you indicate your acceptance of this License to do so, and\nall its terms and conditions for copying, distributing or modifying\nthe Program or works based on it.\n\n  6. Each time you redistribute the Program (or any work based on the\nProgram), the recipient automatically receives a license from the\noriginal licensor to copy, distribute or modify the Program subject to\nthese terms and conditions.  You may not impose any further\nrestrictions on the recipients' exercise of the rights granted herein.\nYou are not responsible for enforcing compliance by third parties to\nthis License.\n\n  7. If, as a consequence of a court judgment or allegation of patent\ninfringement or for any other reason (not limited to patent issues),\nconditions are imposed on you (whether by court order, agreement or\notherwise) that contradict the conditions of this License, they do not\nexcuse you from the conditions of this License.  If you cannot\ndistribute so as to satisfy simultaneously your obligations under this\nLicense and any other pertinent obligations, then as a consequence you\nmay not distribute the Program at all.  For example, if a patent\nlicense would not permit royalty-free redistribution of the Program by\nall those who receive copies directly or indirectly through you, then\nthe only way you could satisfy both it and this License would be to\nrefrain entirely from distribution of the Program.\n\nIf any portion of this section is held invalid or unenforceable under\nany particular circumstance, the balance of the section is intended to\napply and the section as a whole is intended to apply in other\ncircumstances.\n\nIt is not the purpose of this section to induce you to infringe any\npatents or other property right claims or to contest validity of any\nsuch claims; this section has the sole purpose of protecting the\nintegrity of the free software distribution system, which is\nimplemented by public license practices.  Many people have made\ngenerous contributions to the wide range of software distributed\nthrough that system in reliance on consistent application of that\nsystem; it is up to the author/donor to decide if he or she is willing\nto distribute software through any other system and a licensee cannot\nimpose that choice.\n\nThis section is intended to make thoroughly clear what is believed to\nbe a consequence of the rest of this License.\n\n  8. If the distribution and/or use of the Program is restricted in\ncertain countries either by patents or by copyrighted interfaces, the\noriginal copyright holder who places the Program under this License\nmay add an explicit geographical distribution limitation excluding\nthose countries, so that distribution is permitted only in or among\ncountries not thus excluded.  In such case, this License incorporates\nthe limitation as if written in the body of this License.\n\n  9. The Free Software Foundation may publish revised and/or new versions\nof the General Public License from time to time.  Such new versions will\nbe similar in spirit to the present version, but may differ in detail to\naddress new problems or concerns.\n\nEach version is given a distinguishing version number.  If the Program\nspecifies a version number of this License which applies to it and \"any\nlater version\", you have the option of following the terms and conditions\neither of that version or of any later version published by the Free\nSoftware Foundation.  If the Program does not specify a version number of\nthis License, you may choose any version ever published by the Free Software\nFoundation.\n\n  10. If you wish to incorporate parts of the Program into other free\nprograms whose distribution conditions are different, write to the author\nto ask for permission.  For software which is copyrighted by the Free\nSoftware Foundation, write to the Free Software Foundation; we sometimes\nmake exceptions for this.  Our decision will be guided by the two goals\nof preserving the free status of all derivatives of our free software and\nof promoting the sharing and reuse of software generally.\n\n                            NO WARRANTY\n\n  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY\nFOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN\nOTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES\nPROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED\nOR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\nMERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS\nTO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE\nPROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,\nREPAIR OR CORRECTION.\n\n  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\nWILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR\nREDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,\nINCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING\nOUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED\nTO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY\nYOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER\nPROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE\nPOSSIBILITY OF SUCH DAMAGES.\n\n                     END OF TERMS AND CONDITIONS\n\n            How to Apply These Terms to Your New Programs\n\n  If you develop a new program, and you want it to be of the greatest\npossible use to the public, the best way to achieve this is to make it\nfree software which everyone can redistribute and change under these terms.\n\n  To do so, attach the following notices to the program.  It is safest\nto attach them to the start of each source file to most effectively\nconvey the exclusion of warranty; and each file should have at least\nthe \"copyright\" line and a pointer to where the full notice is found.\n\n    Decode-Django is that Django's source analysis\n    Copyright (C) 2013  daoluan\n\n    This program is free software; you can redistribute it and/or modify\n    it under the terms of the GNU General Public License as published by\n    the Free Software Foundation; either version 2 of the License, or\n    (at your option) any later version.\n\n    This program is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n    GNU General Public License for more details.\n\n    You should have received a copy of the GNU General Public License along\n    with this program; if not, write to the Free Software Foundation, Inc.,\n    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n\nAlso add information on how to contact you by electronic and paper mail.\n\nIf the program is interactive, make it output a short notice like this\nwhen it starts in an interactive mode:\n\n    Gnomovision version 69, Copyright (C) year name of author\n    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.\n    This is free software, and you are welcome to redistribute it\n    under certain conditions; type `show c' for details.\n\nThe hypothetical commands `show w' and `show c' should show the appropriate\nparts of the General Public License.  Of course, the commands you use may\nbe called something other than `show w' and `show c'; they could even be\nmouse-clicks or menu items--whatever suits your program.\n\nYou should also get your employer (if you work as a programmer) or your\nschool, if any, to sign a \"copyright disclaimer\" for the program, if\nnecessary.  Here is a sample; alter the names:\n\n  Yoyodyne, Inc., hereby disclaims all copyright interest in the program\n  `Gnomovision' (which makes passes at compilers) written by James Hacker.\n\n  {signature of Ty Coon}, 1 April 1989\n  Ty Coon, President of Vice\n\nThis General Public License does not permit incorporating your program into\nproprietary programs.  If your program is a subroutine library, you may\nconsider it more useful to permit linking proprietary applications with the\nlibrary.  If this is what you want to do, use the GNU Lesser General\nPublic License instead of this License.\n"
  },
  {
    "path": "README.md",
    "content": "Decode-Django\n================\n\nDecode-Django is that Django's source analysis.\n\nDjango 源码剖析注释版本. 我在这个项目当中, 整理 django 代码的注释, 如果看官感兴趣可以一起阅读注释.\n\n进度\n================\n - bin\n - conf\n - contrib\n - core DECODING\n - db  DECODING\n - dispatch\n - forms\n - http\n - middleware 完成\n - shortcuts 完成\n - template\n - templatetags\n - test\n - utils\n - views 完成\n\n博客总结\n=================\n我的博客当中记录阅读笔记:\n - [Django 源码小剖: 初探 WSGI](http://daoluan.github.io/学习总结/2013/09/04/decode-django-wsgi.html)\n - [Django 源码小剖: Django 中的 WSGI](http://daoluan.github.io/学习总结/2013/09/06/decode-django-wsgi-in-django.html)\n - [Django 源码小剖: 应用程序入口 WSGIHandler](http://daoluan.github.io/学习总结/2013/09/11/decode-django-wsgihandler.html)\n - [Django 源码小剖: 初探中间件(middleware)](http://daoluan.github.io/学习总结/2013/09/11/decode-django-wsgihandler.html)\n - [Django 源码小剖: URL 调度器(URL dispatcher)](http://daoluan.github.io/学习总结/2013/09/15/decode-django-url-dispatcher.html)\n - [Django 源码小剖: 更高效的 URL 调度器(URL dispatcher)](http://daoluan.github.io/学习总结/2013/09/20/decode-django-more-efficient-url-dispatcher.html)\n - [Django 源码小剖: 响应数据 response 的返回](http://daoluan.github.io/学习总结/2013/09/23/decode-django-the-way-response-walk-on.html)\n - [Django 源码小剖: Django 对象关系映射(ORM)文件组织结构](http://daoluan.github.io/学习总结/2013/10/12/decode-django-orm-preview.html)\n - [Django 源码小剖: Django ORM 查询管理器](http://daoluan.github.io/学习总结/2013/11/12/decode-django-orm-manager.html)\n \n我的博客\n=================\n - [dylan](http://daoluan.github.io/)\n\n\n"
  }
]